for-any-project-min
code:script.js
var Em=Object.defineProperty;var ot=(A,e)=>{for(var t in e)Em(A,t,{get:et,enumerable:!0})};var yi=A=>am.includes(A.name),am="SocketIOError","DuplicateTitleError","NotFastForwardError";var So=async()=>{let e=(await lm())("https://scrapbox.io",{reconnectionDelay:5e3,transports:["websocket"]});return await new Promise((t,o)=>{let g=r=>o(r);e.once("connect",()=>{e.off("disconnect",g),t()}),e.once("disconnect",g)}),e},cm="4.2.0",Gi=https://cdnjs.cloudflare.com/ajax/libs/socket.io/${cm}/socket.io.min.js,nn,lm=async()=>{if(nn)throw nn;if(!document.querySelector(script[src="${Gi}"])){let A=document.createElement("script");A.src=Gi,await new Promise((e,t)=>{A.onload=()=>e(),A.onerror=o=>{nn=o,t(o)},document.head.append(A)})}return new Promise(A=>{let e=setInterval(()=>{io&&(clearInterval(e),A(io))},500)})};var Bn=(A,e=9e4)=>{let t=(g,r)=>{let n;return new Promise((Q,B)=>{let C=i=>{clearTimeout(n),B(new Error(i))};A.emit(g,r,i=>{switch(clearTimeout(n),A.off("disconnect",C),g){case"socket.io-request":"error"in i?typeof i.error=="object"&&i.error&&"name"in i.error&&typeof i.error.name=="string"&&yi({name:i.error.name})?Q({ok:!1,value:i.error}):Q({ok:!1,value:{name:"UnexpectedError",value:i.error}}):"data"in i&&Q({ok:!0,value:i.data});break;case"cursor":"error"in i?Q({ok:!1,value:{name:"UnexpectedError",value:i.error}}):"data"in i&&Q({ok:!0,value:i.data});break}B(new Error('Invalid response: missing "data" or "error" field'))}),n=setTimeout(()=>{A.off("disconnect",C),Q({ok:!1,value:{name:"TimeoutError",message:Timeout: exceeded ${e}ms}})},e),A.once("disconnect",C)})};async function*o(...g){let r,n=()=>new Promise(B=>r=B),Q=B=>{r?.(B)};for(let B of g)A.on(B,Q);try{for(;;)yield await n()}finally{for(let B of g)A.off(B,Q)}}return{request:t,response:o}};var WA=()=>So(),Cn=async A=>{if(A.connected)return;let e=new Promise(t=>A.once("connect",()=>t()));A.connect(),await e},LA=async A=>{if(A.disconnected)return;let e=new Promise(t=>{let o=g=>{g==="io client disconnect"&&(t(),A.off("disconnect",o))};A.on("disconnect",o)});A.disconnect(),await e};var In=(A,e)=>{let t=A.length>e.length,o=t?e:A,g=t?A:e,r=o.length+1,n=o.length+g.length+3,Q=new Array(n);Q.fill(-1);let B=[];function C(l,D,m){let N=Math.max(D,m),M=N-l;for(;M<o.length&&N<g.length&&oM===gN;)++M,++N;return Ql+r=B.length,B.push([{x:M,y:N},Ql+(D>m?-1:1)+r]),N}let i=new Array(n);i.fill(-1);let I=-1,s=g.length-o.length;do{++I;for(let l=-I;l<=s-1;++l)il+r=C(l,il-1+r+1,il+1+r);for(let l=s+I;l>=s+1;--l)il+r=C(l,il-1+r+1,il+1+r);is+r=C(s,is-1+r+1,is+1+r)}while(is+r!==g.length);let E=[],c=Qs+r;for(;c!==-1;)E.push(Bc0),c=Bc1;return{from:A,to:e,editDistance:s+I*2,buildSES:function*(){let l=0,D=0;for(let{x:m,y:N}of Dm(E))for(;l<m||D<N;)N-m>D-l?(yield{value:gD,type:t?"deleted":"added"},++D):N-m<D-l?(yield{value:ol,type:t?"added":"deleted"},++l):(yield{value:ol,type:"common"},++l,++D)}}};function*sn(A){let e=[],t=[];function*o(){if(e.length>t.length){for(let g=0;g<t.length;g++)yield ki(eg,tg);for(let g=t.length;g<e.length;g++)yield eg}else{for(let g=0;g<e.length;g++)yield ki(eg,tg);for(let g=e.length;g<t.length;g++)yield tg}e=[],t=[]}for(let g of A)switch(g.type){case"added":e.push(g);break;case"deleted":t.push(g);break;case"common":yield*o(),yield g;break}yield*o()}var ki=(A,e)=>({value:A.value,oldValue:e.value,type:"replaced"});function*Dm(A){for(let e=A.length-1;e>=0;e--)yield Ae}var q=A=>{let{fetch:e=globalThis.fetch,hostName:t="scrapbox.io",...o}=A;return{fetch:e,hostName:t,...o}};var se=A=>A==null,Ao=A=>typeof A=="string",JA=A=>typeof A=="number";var pm=A=>typeof A=="object"&&A!==null,wm=A=>pm(A)?(A.name===void 0||typeof A.name=="string")&&typeof A.message=="string":!1,Yi=A=>{try{let e=typeof A=="string"?JSON.parse(A):A;return wm(e)?e:!1}catch(e){if(e instanceof SyntaxError)return!1;throw e}};var Te=class A extends Error{constructor(t){super(${t.status} ${t.statusText} when fetching ${t.url});this.response=t;Error.captureStackTrace&&Error.captureStackTrace(this,A)}name="UnexpectedResponseError"},QA=async A=>{let e=A.clone(),t=await e.text(),o=Yi(t);if(!o)throw new Te(e);return{ok:!1,value:o}};var Lg=async A=>{let{sid:e,hostName:t,fetch:o}=q(A??{}),g=new Request(https://${t}/api/users/me,e?{headers:{Cookie:AA(e)}}:void 0),r=await o(g);if(!r.ok)throw new Te(r);return await r.json()};var AA=A=>connect.sid=${A},ye=async A=>globalThis._csrf?globalThis._csrf:(await Lg(A)).csrfToken;var bi=(A,e)=>{let{sid:t,hostName:o}=q(e??{});return new Request(https://${o}/api/projects/${A},t?{headers:{Cookie:AA(t)}}:void 0)},ji=async A=>A.ok?{ok:!0,value:await A.json()}:QA(A),me=async(A,e)=>{let{fetch:t}=q(e??{}),o=bi(A,e),g=await t(o);return ji(g)};me.toRequest=bi;me.fromResponse=ji;var Oi=(A,e)=>{let{sid:t,hostName:o}=q(e??{}),g=new URLSearchParams;for(let r of A)g.append("ids",r);return new Request(https://${o}/api/projects?${g.toString()},t?{headers:{Cookie:AA(t)}}:void 0)},Fi=async A=>A.ok?{ok:!0,value:await A.json()}:QA(A),eo=async(A,e)=>{let{fetch:t}=q(e??{}),o=await t(Oi(A,e));return Fi(o)};eo.toRequest=Oi;eo.fromResponse=Fi;var Tg,Ri=async()=>{if(Tg!==void 0)return Tg;let A=await Lg();if(A.isGuest)throw new Error("this script can only be executed by Logged in users");return Tg=A.id,Tg},Ji=new Map,En=async A=>{let e=Ji.get(A);if(e!==void 0)return e;let t=await me(A);if(!t.ok){let{name:g,message:r}=t.value;throw new Error(${g} ${r})}let{id:o}=t.value;return Ji.set(A,o),o},xi=A=>A.padStart(8,"0"),an=A=>{let e=Math.floor(new Date().getTime()/1e3).toString(16),t=Math.floor(16777214*Math.random()).toString(16);return${xi(e).slice(-8)}${A.slice(-6)}0000${xi(t)}};function*cn(A,e,{userId:t}){let{buildSES:o}=In(A.map(({text:n})=>n),e),g=0,r=A0.id;for(let n of sn(o())){switch(n.type){case"added":yield{_insert:r,lines:{id:an(t),text:n.value}};continue;case"deleted":yield{_delete:r,lines:-1};break;case"replaced":yield{_update:r,lines:{text:n.value}};break}g++,r=Ag?.id??"_end"}}var mm=A=>({type:"title",text:A.rows0.text}),hm=A=>{let{rows:e,...t}=A,{indent:o=0,text:g=""}=e??{},r=g.replace(/^\s*code:/,"");return{indent:o,type:"codeBlock",fileName:r,content:t.map(n=>n.text.substring(o+1)).join(` )}},xA=(A,{parseOnNested:e,parseOnQuoted:t,patterns:o})=>(g,r,n)=>{var Q,B,C,i,I,s;if(!e&&r.nested)return(Q=n?.())!==null&&Q!==void 0?Q:[];if(!t&&r.quoted)return(B=n?.())!==null&&B!==void 0?B:[];for(let E of o){let c=E.exec(g);if(c===null)continue;let l=g.substring(0,c.index),D=g.substring(c.index+((i=(C=c[0])===null||C===void 0?void 0:C.length)!==null&&i!==void 0?i:0)),m=A((I=c[0])!==null&&I!==void 0?I:"",r);return[...gt(l,r),...m,...gt(D,r)]}return(s=n?.())!==null&&s!==void 0?s:[]},TA=A=>[{type:"plain",raw:A,text:A}],dm=xA(TA,{parseOnNested:!0,parseOnQuoted:!0,patterns:[/^()(.*)()$/]}),um=/^>.*$/,Mm=(A,e)=>e.context==="table"?TA(A,e):[{type:"quote",raw:A,nodes:gt(A.substring(1),{...e,quoted:!0})}],fm=xA(Mm,{parseOnNested:!1,parseOnQuoted:!1,patterns:[um]}),Nm=/^\? .+$/,ym=(A,e)=>e.context==="table"?TA(A,e):[{type:"helpfeel",raw:A,text:A.substring(2)}],Gm=xA(ym,{parseOnNested:!1,parseOnQuoted:!1,patterns:[Nm]}),km=/\[\[https?:\/\/[^\s\]]+\.(?:png|jpe?g|gif|svg)\]\]/i,Ym=/\[\[https?:\/\/(?:[0-9a-z-]+\.)?gyazo\.com\/[0-9a-f]{32}\]\]/,bm=(A,e)=>{if(e.context==="table")return TA(A,e);let t=A.substring(2,A.length-2),o=/^https?:\/\/([0-9a-z-]\.)?gyazo\.com\/[0-9a-f]{32}$/.test(t);return[{type:"strongImage",raw:A,src:o?${t}/thumb/1000:t}]},jm=xA(bm,{parseOnNested:!1,parseOnQuoted:!0,patterns:[km,Ym]}),Om=/\[[^[\]]*\.icon(?:\*[1-9]\d*)?\]/;function Ui(A){return(e,t)=>{if(A==="strongIcon"&&t.context==="table")return TA(e,t);let o=A==="icon"?e.substring(1,e.length-1):e.substring(2,e.length-2),g=o.lastIndexOf(".icon"),r=o.substring(0,g),n=r.startsWith("/")?"root":"relative",Q=o.substring(g+5,o.length),B=Q.startsWith("*")?parseInt(Q.substring(1),10):1;return new Array(B).fill({}).map(()=>({path:r,pathType:n,type:A,raw:e}))}}var Fm=Ui("icon"),Jm=xA(Fm,{parseOnNested:!0,parseOnQuoted:!0,patterns:[Om]}),xm=/\[\[[^[\]]*\.icon(?:\*\d+)?\]\]/,Rm=Ui("strongIcon"),Zm=xA(Rm,{parseOnNested:!1,parseOnQuoted:!0,patterns:[xm]}),Um=/\[\[(?:[^[]|\[[^[]).*?\]*\]\]/,Lm=(A,e)=>e.context==="table"?TA(A,e):[{type:"strong",raw:A,nodes:gt(A.substring(2,A.length-2),{...e,nested:!0})}],Tm=xA(Lm,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Um]}),Sm=/\[\$ .+? \]/,vm=/\[\$ [^\]]+\]/,Hm=(A,e)=>e.context==="table"?TA(A,e):[{type:"formula",raw:A,formula:A.substring(3,A.length-(A.endsWith(" ]")?2:1))}],Wm=xA(Hm,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Sm,vm]}),Xm=/\[[!"#%&'()*+,\-./{|}<>_~]+ (?:\[[^[\]]+\]|[^\]])+\]/,zm=(A,e)=>{if(e.context==="table")return TA(A,e);let t=A.indexOf(" "),o=A.substring(1,t),g=A.substring(t+1,A.length-1),r=new Set(o);if(r.has("*")){let n=o.split("*").length-1;r.delete("*"),r.add(*-${Math.min(n,10)})}return[{type:"decoration",raw:A,rawDecos:o,decos:Array.from(r),nodes:gt(g,{...e,nested:!0})}]},Km=xA(zm,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Xm]}),Pm=/.*?/,Vm=(A,e)=>e.context==="table"?TA(A,e):[{type:"code",raw:A,text:A.substring(1,A.length-1)}],qm=xA(Vm,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Pm]}),_m=/^[$%] .+$/,$m=(A,e)=>{var t;if(e.context==="table")return TA(A,e);let o=(t=A[0])!==null&&t!==void 0?t:"",g=A.substring(2);return[{type:"commandLine",raw:A,symbol:o,text:g}]},Ah=xA($m,{parseOnNested:!1,parseOnQuoted:!1,patterns:[_m]}),eh=/\[\s+\]/,th=(A,e)=>e.context==="table"?TA(A,e):[{type:"blank",raw:A,text:A.substring(1,A.length-1)}],oh=xA(th,{parseOnNested:!1,parseOnQuoted:!0,patterns:[eh]}),gh=/\[https?:\/\/[^\s\]]+\.(?:png|jpe?g|gif|svg)(?:\?[^\]\s]+)?(?:\s+https?:\/\/[^\s\]]+)?\]/i,rh=/\[https?:\/\/[^\s\]]+\s+https?:\/\/[^\s\]]+\.(?:png|jpe?g|gif|svg)(?:\?[^\]\s]+)?\]/i,Qh=/\[https?:\/\/(?:[0-9a-z-]+\.)?gyazo\.com\/[0-9a-f]{32}(?:\/raw)?(?:\s+https?:\/\/[^\s\]]+)?\]/,nh=/\[https?:\/\/[^\s\]]+\s+https?:\/\/(?:[0-9a-z-]+\.)?gyazo\.com\/[0-9a-f]{32}(?:\/raw)?\]/,Bh=A=>/^https?:\/\/[^\s\]]+\.(png|jpe?g|gif|svg)(\?[^\]\s]+)?$/i.test(A)||Ch(A),Ch=A=>/^https?:\/\/([0-9a-z-]\.)?gyazo\.com\/[0-9a-f]{32}(\/raw)?$/.test(A),ih=(A,e)=>{if(e.context==="table")return TA(A,e);let t=A.search(/\s/),o=t!==-1?A.substring(1,t):A.substring(1,A.length-1),g=t!==-1?A.substring(t,A.length-1).trimLeft():"",[r,n]=Bh(g)?[g,o]:[o,g];return[{type:"image",raw:A,src:/^https?:\/\/([0-9a-z-]\.)?gyazo\.com\/[0-9a-f]{32}$/.test(r)?${r}/thumb/1000:r,link:n}]},Ih=xA(ih,{parseOnNested:!0,parseOnQuoted:!0,patterns:[gh,rh,Qh,nh]}),sh=/\[https?:\/\/[^\s\]]+\s+[^\]]*[^\s]\]/,Eh=/\[[^[\]]*[^\s]\s+https?:\/\/[^\s\]]+\]/,ah=/\[https?:\/\/[^\s\]]+\]/,ch=/https?:\/\/[^\s]+/,lh=(A,e)=>{if(e.context==="table")return TA(A,e);let t=A.startsWith("[")&&A.endsWith("]")?A.substring(1,A.length-1):A,o=/^https?:\/\/[^\s\]]/.test(t),g=(o?/^https?:\/\/[^\s\]]+/:/https?:\/\/[^\s\]]+$/).exec(t);if(g?.[0]===void 0)return[];let r=o?t.substring(g[0].length):t.substring(0,g.index-1);return[{type:"link",raw:A,pathType:"absolute",href:g[0],content:r.trim()}]},Dh=xA(lh,{parseOnNested:!0,parseOnQuoted:!0,patterns:[sh,Eh,ah,ch]}),Li=/\[([^\]]*[^\s])\s+([NS]\d+(?:\.\d+)?,[EW]\d+(?:\.\d+)?(?:,Z\d+)?)\]/,Ti=/\[([NS]\d+(?:\.\d+)?,[EW]\d+(?:\.\d+)?(?:,Z\d+)?)(?:\s+([^\]]*[^\s]))?\]/,ph=A=>{let[e="",t="",o=""]=A.split(","),g=parseFloat(e.replace(/^N/,"").replace(/^S/,"-")),r=parseFloat(t.replace(/^E/,"").replace(/^W/,"-")),n=/^Z\d+$/.test(o)?parseInt(o.replace(/^Z/,""),10):14;return{latitude:g,longitude:r,zoom:n}},wh=(A,e)=>{var t;if(e.context==="table")return TA(A,e);let o=(t=A.match(Li))!==null&&t!==void 0?t:A.match(Ti);if(o===null)return[];let g=A.startsWith("[N")||A.startsWith("[S"),[,r="",n=""]=g?o:[o[0],o[2],o[1]],{latitude:Q,longitude:B,zoom:C}=ph(r),i=n!==""?https://www.google.com/maps/place/${encodeURIComponent(n)}/@${Q},${B},${C}z:https://www.google.com/maps/@${Q},${B},${C}z;return[{type:"googleMap",raw:A,latitude:Q,longitude:B,zoom:C,place:n,url:i}]},mh=xA(wh,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Li,Ti]}),hh=/\[\/?[^[\]]+\]/,dh=A=>{let e=A.substring(1,A.length-1);return[{type:"link",raw:A,pathType:e.startsWith("/")?"root":"relative",href:e,content:""}]},uh=xA(dh,{parseOnNested:!0,parseOnQuoted:!0,patterns:[hh]}),Mh=/(?:^|\s)#\S+/,fh=(A,e)=>{if(e.context==="table")return TA(A,e);if(A.startsWith("#"))return[{type:"hashTag",raw:A,href:A.substring(1)}];let t=A.substring(0,1),o=A.substring(1);return[...TA(t,e),{type:"hashTag",raw:o,href:o.substring(1)}]},Nh=xA(fh,{parseOnNested:!0,parseOnQuoted:!0,patterns:[Mh]}),yh=/^[0-9]+\. .*$/,Gh=(A,e)=>{if(e.context==="table")return TA(A,e);let t=A.indexOf(" "),o=A.substring(0,t-1),g=parseInt(o,10),r=A.substring(t+1,A.length);return[{type:"numberList",raw:A,rawNumber:o,number:g,nodes:gt(r,{...e,nested:!0})}]},kh=xA(Gh,{parseOnNested:!1,parseOnQuoted:!1,patterns:[yh]}),Yh=(A,e,t)=>{var o;return A===""?[]:(o=t?.())!==null&&o!==void 0?o:[]},bh=(...A)=>(e,t)=>A.reduceRight((o,g)=>()=>g(e,t,o),()=>dm(e,t))(),gt=bh(Yh,fm,Gm,qm,Ah,Wm,oh,Km,jm,Zm,Tm,Ih,Dh,Jm,mh,uh,Nh,kh),jh=A=>{let{rows:[e,...t]}=A,{indent:o=0,text:g=""}=e??{},r=g.replace(/^\s*table:/,"");return{indent:o,type:"table",fileName:r,cells:t.map(n=>n.text.substring(o+1)).map(n=>n.split(" ").map(Q=>gt(Q,{nested:!1,quoted:!1,context:"table"})))}},Oh=A=>{let{indent:e,text:t}=A.rows[0];return{indent:e,type:"line",nodes:gt(t.substring(e),{nested:!1,quoted:!1,context:"line"})}},Fh=A=>{switch(A.type){case"title":return mm(A);case"codeBlock":return hm(A);case"table":return jh(A);case"line":return Oh(A)}},Jh=A=>A.split( ).map(e=>{var t,o,g;return{indent:(g=(o=(t=/^\s+/.exec(e))===null||t===void 0?void 0:t[0])===null||o===void 0?void 0:o.length)!==null&&g!==void 0?g:0,text:e}}),xh=(A,e)=>{var t,o;return(A.type==="codeBlock"||A.type==="table")&&e.indent>((o=(t=A.rows[0])===null||t===void 0?void 0:t.indent)!==null&&o!==void 0?o:0)},Zi=(A,e)=>{let t=A[A.length-1];return t!==void 0&&xh(t,e)?(t.rows.push(e),A):(A.push({type:/^\s*code:/.test(e.text)?"codeBlock":/^\s*table:/.test(e.text)?"table":"line",rows:[e]}),A)},Rh=(A,e)=>{var t;if(!((t=e.hasTitle)!==null&&t!==void 0)||t){let[o,...g]=A;return o===void 0?[]:[{type:"title",rows:[o]},...g.reduce(Zi,[])]}return A.reduce(Zi,[])},hA=(A,e)=>{var t;let o=Jh(A);return Rh(o,{hasTitle:(t=e?.hasTitle)!==null&&t!==void 0?t:!0}).map(Fh)},Zh=A=>{var e,t;return(t=(e=/^\s*\S.*$/m.exec(A)?.[0])===null||e===void 0?void 0:e.trim())!==null&&t!==void 0?t:"Untitled"};var P=A=>A.replaceAll(" ","_").toLowerCase(),Si=A=>A.replaceAll("_"," "),V=A=>[...A].map((e,t)=>e===" "?"_":!Uh.includes(e)||t===A.length-1&&Lh.includes(e)?encodeURIComponent(e):e).join(""),Uh='@$&+=:;",',Lh=':;",';var Th=/https?:\/\/(?:www\.|music\.|)youtube\.com\/watch/,Sh=/https?:\/\/youtu\.be\/([a-zA-Z\d_-]+)(?:\?([^\s]{0,100})|)/,vh=/https?:\/\/(?:www\.|)youtube\.com\/shorts\/([a-zA-Z\d_-]+)(?:\?([^\s]+)|)/,Hh=/https?:\/\/(?:www\.|music\.|)youtube\.com\/playlist\?((?:[^\s]+&|)list=([a-zA-Z\d_-]+)(?:&[^\s]+|))/,Sg=A=>{if(Th.test(A)){let e=new URL(A).searchParams,t=e.get("v");if(t)return{pathType:"com",videoId:t,params:e}}{let e=A.match(Sh);if(e){let[,t,o]=e;return{videoId:t,params:new URLSearchParams(o),pathType:"dotbe"}}}{let e=A.match(vh);if(e){let[,t,o]=e;return{videoId:t,params:new URLSearchParams(o),pathType:"short"}}}{let e=A.match(Hh);if(e){let[,t,o]=e;return{listId:o,params:new URLSearchParams(t),pathType:"list"}}}};var Hi=A=>{let e=hA(A,{hasTitle:!0}).flatMap(c=>{switch(c.type){case"codeBlock":case"title":return[];case"line":case"table":return c}}),t=new Map,o=[],g=new Set,r=[],n=new Set,Q=[],B=null,C=new Set,i=new Set,I=new RegExp(${location?.origin??"https://scrapbox.io"}/files/([a-z0-9]{24})(?:|\\.[a-zA-Z0-9]+)(?:|\\?[^\\s]*)$),s=c=>{switch(c.type){case"hashTag":if(t.has(P(c.href)))return;t.set(P(c.href),!1),o.push(c.href);return;case"link":switch(c.pathType){case"relative":{let l=vi(c.href);if(t.get(P(l)))return;t.set(P(l),!0),o.push(l);return}case"root":{let l=vi(c.href);if(/^\/[\w\d-]+\/?$/.test(l)||g.has(P(l)))return;g.add(P(l)),r.push(l);return}case"absolute":{if(c.content)return;let l=Sg(c.href);if(l&&l.pathType!=="list"){B??=https://i.ytimg.com/vi/${l.videoId}/mqdefault.jpg;return}let D=c.href.match(I)?.[1];D&&C.add(D);return}default:return}case"icon":case"strongIcon":{if(c.pathType==="root"||n.has(P(c.path)))return;n.add(P(c.path)),Q.push(c.path);return}case"image":case"strongImage":{B??=c.src.endsWith("/thumb/1000")?c.src.replace(/\/thumb\/1000$/,"/raw"):c.src;{let l=c.src.match(I)?.[1];l&&C.add(l)}if(c.type==="image"){let l=c.link.match(I)?.[1];l&&C.add(l)}return}case"helpfeel":i.add(c.text);return;case"numberList":case"strong":case"quote":case"decoration":{for(let l of c.nodes)s(l);return}default:return}},E=[];for(let c of e)switch(c.type){case"line":for(let l of c.nodes)s(l);continue;case"table":{for(let l of c.cells)for(let D of l)for(let m of D)s(m);if(!["infobox","cosense"].includes(c.fileName))continue;E.push(...c.cells.map(l=>l.map(D=>D.map(m=>m.raw).join("")).join(" ").trim()));continue}}return[o,r,Q,B,[...C],[...i],E]},vi=A=>A.replace(/#[a-f\d]{24,32}$/,""),Wi=A=>A.flatMap(({text:e})=>/^\s*\? .*$/.test(e)?[e.trimStart().slice(2)]:[]);var ut=(A,e)=>A.length===e.length&&A.every(t=>e.includes(t));function*Xi(A,e,t){let o=e.flatMap(E=>E.split( ));for(let E of cn(A.lines,o,{userId:t}))yield E;(A.lines[0].text!==o[0]||!A.persistent)&&(yield{title:o[0]});let g=A.lines.slice(1,6).map(E=>E.text),r=o.slice(1,6);g.join("")!==r.join("")&&(yield{descriptions:r});let[n,Q,B,C,i,I,s]=Hi(o.join(
));ut(A.links,n)||(yield{links:n}),ut(A.projectLinks,Q)||(yield{projectLinks:Q}),ut(A.icons,B)||(yield{icons:B}),A.image!==C&&(yield{image:C}),ut(A.files,i)||(yield{files:i}),ut(Wi(A.lines),I)||(yield{helpfeels:I}),ut(A.infoboxDefinition,s)||(yield{infoboxDefinition:s})}var zi=(A,e,t)=>{let{sid:o,hostName:g,followRename:r,projects:n}=q(t??{}),Q=new URLSearchParams;Q.append("followRename",${r??!0});for(let C of n??[])Q.append("projects",C);let B=https://${g}/api/pages/${A}/${V(e)}?${Q.toString()};return new Request(B,o?{headers:{Cookie:AA(o)}}:void 0)},Ki=async A=>A.ok?{ok:!0,value:await A.json()}:A.status===414?{ok:!1,value:{name:"TooLongURIError",message:"project ids may be too much."}}:QA(A),$A=async(A,e,t)=>{let{fetch:o}=q(t??{}),g=zi(A,e,t),r=await o(g);return await Ki(r)};$A.toRequest=zi;$A.fromResponse=Ki;var Pi=(A,e)=>{let{sid:t,hostName:o,sort:g,limit:r,skip:n}=q(e??{}),Q=new URLSearchParams;g!==void 0&&Q.append("sort",g),r!==void 0&&Q.append("limit",${r}),n!==void 0&&Q.append("skip",${n});let B=https://${o}/api/pages/${A}?${Q.toString()};return new Request(B,t?{headers:{Cookie:AA(t)}}:void 0)},Vi=async A=>A.ok?{ok:!0,value:await A.json()}:QA(A),qi=async(A,e)=>{let{fetch:t}=q(e??{}),o=await t(Pi(A,e));return await Vi(o)};qi.toRequest=Pi;qi.fromResponse=Vi;var vg=async(A,e)=>{let t=await $A(A,e);if(!t.ok)throw new Error(You have no privilege of editing "/${A}/${e}".);return t.value};var CA=A=>new Promise(e=>setTimeout(()=>e(),A));var Mt=async(A,e,t,o)=>{let g=o?.socket,r=g??await So();await Cn(r);try{let n=await Promise.all([vg(A,e),En(A),Ri()]).then(([I,s,E])=>({...I,projectId:s,userId:E})),{request:Q}=Bn(r),B=0,C=[],i;for(;o?.maxAttempts===void 0||B<o.maxAttempts;){let I=t(n,B,C,i);if(C=I instanceof Promise?await I:I,B++,C.length===0)return{ok:!0,value:n.commitId};let s={kind:"page",projectId:n.projectId,pageId:n.id,parentId:n.commitId,userId:n.userId,changes:C,cursor:null,freeze:!0};for(;;){let E=await Q("socket.io-request",{method:"commit",data:s});if(E.ok)return n.commitId=E.value.commitId,{ok:!0,value:n.commitId};let c=E.value.name;if(c==="UnexpectedError"){let l=new Error;throw l.name=E.value.name,l.message=JSON.stringify(E.value),l}if(c==="TimeoutError"||c==="SocketIOError"){await CA(3e3);continue}c==="NotFastForwardError"&&(await CA(1e3),n={...await vg(A,e),projectId:n.projectId,userId:n.userId}),i=c;break}}return{ok:!1,value:{name:"RetryError",attempts:B,message:Retrying exceeded the maxAttempts (${B}).}}}finally{g||await LA(r)}};var _i=A=>{let e=A.match(/(.+?)(?:_(\d+))?$/),t=e?.[1]??A,o=e?.[2]?parseInt(e[2])+1:2;return${t}_${o}};var rA=(A,e,t,o)=>Mt(A,e,async(g,r,n,Q)=>{if(Q==="DuplicateTitleError"){let i=_i(e);return n.map(I=>("title"in I&&(I.title=i),I))}let B=t(g.lines,{...g,attempts:r}),C=B instanceof Promise?await B:B;return C===void 0?[]:C.length===0?[{deleted:!0}]:[...Xi(g,C,g.userId)]},o);var $i=(A,e,t)=>Mt(A,e,o=>o.persistent?[{deleted:!0}]:[],t);var AI=(A,e,t,o)=>{let{sid:g,hostName:r}=q(o??{}),n=https://${r}/api/table/${A}/${V(e)}/${encodeURIComponent(t)}.csv;return new Request(n,g?{headers:{Cookie:AA(g)}}:void 0)},eI=async A=>A.ok?{ok:!0,value:await A.text()}:A.status===404?{ok:!1,value:{name:"NotFoundError",message:"Table not found."}}:QA(A),tI=async(A,e,t,o)=>{let{fetch:g}=q(o??{}),r=AI(A,e,t,o),n=await g(r);return await eI(n)};tI.toRequest=AI;tI.fromResponse=eI;var Hg=async(A,e,t,o)=>{let{sid:g,hostName:r,fetch:n,csrf:Q}=q(o??{}),B=new Request(https://${r}/api/pages/${A}/replace/links,{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":Q??await ye(o),...g?{Cookie:AA(g)}:{}},body:JSON.stringify({from:e,to:t})}),C=await n(B);if(!C.ok)return QA(C);let{message:i}=await C.json();return{ok:!0,value:parseInt(i.match(/\d+/)?.[0]??"0")}};var oI=async(A,e)=>{let{sid:t,hostName:o,fetch:g,followingId:r}=q(e??{}),n=new Request(https://${o}/api/pages/${A}/search/titles${r??followingId=${r}:""},t?{headers:{Cookie:AA(t)}}:void 0),Q=await g(n);return Q.ok?{ok:!0,value:{pages:await Q.json(),followingId:Q.headers.get("X-following-id")??""}}:Q.status===422?{ok:!1,value:{name:"InvalidFollowingIdError",message:await Q.text()}}:QA(Q)};var gI=async(A,e,t)=>{let{sid:o,hostName:g,fetch:r}=q(t??{}),n=new Request(https://${g}/api/pages/${e}/search/query?q=${encodeURIComponent(A)},o?{headers:{Cookie:AA(o)}}:void 0),Q=await r(n);return Q.ok?{ok:!0,value:await Q.json()}:Q.status===422?{ok:!1,value:{name:"NoQueryError",message:(await Q.json()).message}}:QA(Q)};var rI=async(A,e)=>{let{sid:t,hostName:o,fetch:g,csrf:r}=q(e??{}),n=new Request(https://${o}/api/embed-text/url?url=${encodeURIComponent(A.toString())},{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":r??await ye(e),...t?{Cookie:AA(t)}:{}},body:JSON.stringify({timeout:3e3})}),Q=await g(n);if(!Q.ok)return Q.status===422?{ok:!1,value:{name:"InvalidURLError",message:(await Q.json()).message}}:QA(Q);let{title:B}=await Q.json();return{ok:!0,value:B}};var QI=async(A,e)=>{let{sid:t,hostName:o,fetch:g,csrf:r}=q(e??{}),n=new Request(https://${o}/api/embed-text/twitter?url=${encodeURIComponent(A.toString())},{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":r??await ye(e),...t?{Cookie:AA(t)}:{}},body:JSON.stringify({timeout:3e3})}),Q=await g(n);return Q.ok?{ok:!0,value:await Q.json()}:Q.status===422?{ok:!1,value:{name:"InvalidURLError",message:(await Q.json()).message}}:QA(Q)};var nI=async A=>{let{sid:e,hostName:t,gyazoTeamsName:o}=q(A??{}),g=new Request(https://${t}/api/login/gyazo/oauth-upload/token${o??gyazoTeamsName=${o}:""},e?{headers:{Cookie:AA(e)}}:void 0),r=await fetch(g);if(!r.ok)return QA(r);let{token:n}=await r.json();return{ok:!0,value:n}};var BI=(A,e,t,o)=>{let{sid:g,hostName:r}=q(o??{}),n=https://${r}/api/code/${A}/${V(e)}/${V(t)};return new Request(n,g?{headers:{Cookie:AA(g)}}:void 0)},CI=async A=>A.ok?{ok:!0,value:await A.text()}:A.status===404&&A.headers.get("Content-Type")?.includes?.("text/plain")?{ok:!1,value:{name:"NotFoundError",message:"Code block is not found"}}:QA(A),to=async(A,e,t,o)=>{let{fetch:g}=q(o??{}),r=BI(A,e,t,o),n=await g(r);return await CI(n)};to.toRequest=BI;to.fromResponse=CI;var iI=new TextEncoder().encode("0123456789abcdef");function II(A){let e=new Uint8Array(A.length*2);for(let t=0;t<e.length;t++){let o=A[t];e[t*2]=iI[o>>4],e[t*2+1]=iI[o&15]}return e}var sI="md5: data is invalid type",ft=64,vo=class{#r;#t;#e;#A;#g;#n;#o;#C;constructor(){this.#r=1732584193,this.#t=4023233417,this.#e=2562383102,this.#A=271733878,this.#g=new Uint8Array(ft),this.#n=0,this.#o=0,this.#C=0}#i(e){let t=this.#o;t+=e,t>4294967295&&(this.#C+=1),this.#o=t>>>0}#s(e){let t=this.#r,o=this.#t,g=this.#e,r=this.#A,n=Y=>e[Y]|e[Y+1]<<8|e[Y+2]<<16|e[Y+3]<<24,Q=(Y,R)=>Y<<R|Y>>>32-R,B=n(0),C=n(4),i=n(8),I=n(12),s=n(16),E=n(20),c=n(24),l=n(28),D=n(32),m=n(36),N=n(40),M=n(44),p=n(48),h=n(52),d=n(56),b=n(60);t=o+Q(((g^r)&o^r)+t+B+3614090360,7),r=t+Q(((o^g)&t^g)+r+C+3905402710,12),g=r+Q(((t^o)&r^o)+g+i+606105819,17),o=g+Q(((r^t)&g^t)+o+I+3250441966,22),t=o+Q(((g^r)&o^r)+t+s+4118548399,7),r=t+Q(((o^g)&t^g)+r+E+1200080426,12),g=r+Q(((t^o)&r^o)+g+c+2821735955,17),o=g+Q(((r^t)&g^t)+o+l+4249261313,22),t=o+Q(((g^r)&o^r)+t+D+1770035416,7),r=t+Q(((o^g)&t^g)+r+m+2336552879,12),g=r+Q(((t^o)&r^o)+g+N+4294925233,17),o=g+Q(((r^t)&g^t)+o+M+2304563134,22),t=o+Q(((g^r)&o^r)+t+p+1804603682,7),r=t+Q(((o^g)&t^g)+r+h+4254626195,12),g=r+Q(((t^o)&r^o)+g+d+2792965006,17),o=g+Q(((r^t)&g^t)+o+b+1236535329,22),t=o+Q(((o^g)&r^g)+t+C+4129170786,5),r=t+Q(((t^o)&g^o)+r+c+3225465664,9),g=r+Q(((r^t)&o^t)+g+M+643717713,14),o=g+Q(((g^r)&t^r)+o+B+3921069994,20),t=o+Q(((o^g)&r^g)+t+E+3593408605,5),r=t+Q(((t^o)&g^o)+r+N+38016083,9),g=r+Q(((r^t)&o^t)+g+b+3634488961,14),o=g+Q(((g^r)&t^r)+o+s+3889429448,20),t=o+Q(((o^g)&r^g)+t+m+568446438,5),r=t+Q(((t^o)&g^o)+r+d+3275163606,9),g=r+Q(((r^t)&o^t)+g+I+4107603335,14),o=g+Q(((g^r)&t^r)+o+D+1163531501,20),t=o+Q(((o^g)&r^g)+t+h+2850285829,5),r=t+Q(((t^o)&g^o)+r+i+4243563512,9),g=r+Q(((r^t)&o^t)+g+l+1735328473,14),o=g+Q(((g^r)&t^r)+o+p+2368359562,20),t=o+Q((o^g^r)+t+E+4294588738,4),r=t+Q((t^o^g)+r+D+2272392833,11),g=r+Q((r^t^o)+g+M+1839030562,16),o=g+Q((g^r^t)+o+d+4259657740,23),t=o+Q((o^g^r)+t+C+2763975236,4),r=t+Q((t^o^g)+r+s+1272893353,11),g=r+Q((r^t^o)+g+l+4139469664,16),o=g+Q((g^r^t)+o+N+3200236656,23),t=o+Q((o^g^r)+t+h+681279174,4),r=t+Q((t^o^g)+r+B+3936430074,11),g=r+Q((r^t^o)+g+I+3572445317,16),o=g+Q((g^r^t)+o+c+76029189,23),t=o+Q((o^g^r)+t+m+3654602809,4),r=t+Q((t^o^g)+r+p+3873151461,11),g=r+Q((r^t^o)+g+b+530742520,16),o=g+Q((g^r^t)+o+i+3299628645,23),t=o+Q((g^(o|~r))+t+B+4096336452,6),r=t+Q((o^(t|~g))+r+l+1126891415,10),g=r+Q((t^(r|~o))+g+d+2878612391,15),o=g+Q((r^(g|~t))+o+E+4237533241,21),t=o+Q((g^(o|~r))+t+p+1700485571,6),r=t+Q((o^(t|~g))+r+I+2399980690,10),g=r+Q((t^(r|~o))+g+N+4293915773,15),o=g+Q((r^(g|~t))+o+C+2240044497,21),t=o+Q((g^(o|~r))+t+D+1873313359,6),r=t+Q((o^(t|~g))+r+b+4264355552,10),g=r+Q((t^(r|~o))+g+c+2734768916,15),o=g+Q((r^(g|~t))+o+h+1309151649,21),t=o+Q((g^(o|~r))+t+s+4149444226,6),r=t+Q((o^(t|~g))+r+M+3174756917,10),g=r+Q((t^(r|~o))+g+i+718787259,15),o=g+Q((r^(g|~t))+o+m+3951481745,21),this.#r=this.#r+t>>>0,this.#t=this.#t+o>>>0,this.#e=this.#e+g>>>0,this.#A=this.#A+r>>>0}update(e){let t;if(typeof e=="string")t=new TextEncoder().encode(e);else if(typeof e=="object")if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))t=new Uint8Array(e);else throw new TypeError(sI);else throw new TypeError(sI);let o=this.#n,g=ft-o;if(t.length<g)this.#g.set(t,o),o+=t.length;else{this.#g.set(t.slice(0,g),o),this.#s(this.#g);let r=g;for(;r+ft<=t.length;)this.#s(t.slice(r,r+ft)),r+=ft;this.#g.fill(0).set(t.slice(r),0),o=t.length-r}return this.#n=o,this.#i(t.length),this}digest(){let e=ft-this.#n;e<9&&(e+=ft);let t=new Uint8Array(e);t[0]=128;let o=this.#o<<3,g=this.#C<<3|this.#o>>>29;t[t.length-8]=o&255,t[t.length-7]=o>>>8&255,t[t.length-6]=o>>>16&255,t[t.length-5]=o>>>24&255,t[t.length-4]=g&255,t[t.length-3]=g>>>8&255,t[t.length-2]=g>>>16&255,t[t.length-1]=g>>>24&255,this.update(t.buffer);let r=new ArrayBuffer(16),n=new DataView(r);return n.setUint32(0,this.#r,!0),n.setUint32(4,this.#t,!0),n.setUint32(8,this.#e,!0),n.setUint32(12,this.#A,!0),r}toString(e="hex"){let t=this.digest();switch(e){case"hex":return new TextDecoder().decode(II(new Uint8Array(t)));case"base64":{let o=new Uint8Array(t),g="";for(let r=0;r<o.length;++r)g+=String.fromCharCode(o[r]);return btoa(g)}default:throw new Error("md5: invalid format")}}};var EI=async(A,e,t)=>{let o=new vo().update(await A.arrayBuffer()).toString(),g=await Kh(A,e,o,t);if(!g.ok)return g;if("embedUrl"in g.value)return{ok:!0,value:g.value};let r=await Ph(g.value.signedUrl,A,t);return r.ok?Vh(e,g.value.fileId,o,t):r},Kh=async(A,e,t,o)=>{let{sid:g,hostName:r,fetch:n,csrf:Q}=q(o??{}),B={md5:t,size:A.size,contentType:A.type,name:A.name},C=Q??await ye(),i=new Request(https://${r}/api/gcs/${e}/upload-request,{method:"POST",body:JSON.stringify(B),headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":C,...g?{Cookie:AA(g)}:{}}}),I=await n(i);return I.ok?{ok:!0,value:await I.json()}:QA(I)},Ph=async(A,e,t)=>{let{sid:o,fetch:g}=q(t??{}),r=await g(A,{method:"PUT",body:e,headers:{"Content-Type":e.type,...o?{Cookie:AA(o)}:{}}});if(!r.ok){if(r.headers.get("Content-Type")?.includes?.("/xml"))return{ok:!1,value:{name:"GCSError",message:await r.text()}};throw new Te(r)}return{ok:!0,value:void 0}},Vh=async(A,e,t,o)=>{let{sid:g,hostName:r,fetch:n,csrf:Q}=q(o??{}),B=Q??await ye(),C=new Request(https://${r}/api/gcs/${A}/verify,{method:"POST",body:JSON.stringify({md5:t,fileId:e}),headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":B,...g?{Cookie:AA(g)}:{}}}),i=await n(C);if(!i.ok){try{if(i.status===404)return{ok:!1,value:{name:"NotFoundError",message:(await i.json()).message}}}catch{throw new Te(i)}throw new Te(i)}return{ok:!0,value:await i.json()}};var aI=async A=>{let e=A.title??".watchlistrc",t="projectsLastAccessed.json",o=await to(A.project,e,t),g=o.ok?JSON.parse(o.value||"{}"):{},r=JSON.parse(localStorage.getItem("projectsLastAccessed")??"{}"),n=new Set([...Object.keys(g),...Object.keys(r)]),Q=Object.fromEntries([...n].map(C=>[C,Math.max(g[C]??0,r[C]??0)]).sort((C,i)=>i[1]-C[1])),B=JSON.stringify(Q);localStorage.setItem("projectsLastAccessed",B),await rA(A.project,e,()=>[e,"This page is automatically generated. DO NOT EDIT ANYTHING, WHITCH WILL BE OVERWRITTEN.","",code:${t}, ${B},""])};scrapbox.PageMenu.addMenu({title:"Gyazo",image:"https://i.gyazo.com/503a911fea542532aa5aba0a88eb7b60.png",onClick:()=>window.open("https://gyazo.com/captures")});var Pg,iA,pI,qh,Nt,cI,wI,ln,hn,Dn,pn,mI,Ho={},hI=[],_h=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,dn=Array.isArray;function rt(A,e){for(var t in e)A[t]=e[t];return A}function dI(A){var e=A.parentNode;e&&e.removeChild(A)}function a(A,e,t){var o,g,r,n={};for(r in e)r=="key"?o=e[r]:r=="ref"?g=e[r]:n[r]=e[r];if(arguments.length>2&&(n.children=arguments.length>3?Pg.call(arguments,2):t),typeof A=="function"&&A.defaultProps!=null)for(r in A.defaultProps)n[r]===void 0&&(n[r]=A.defaultProps[r]);return Xg(A,n,o,g,null)}function Xg(A,e,t,o,g){var r={type:A,props:e,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:g??++pI,__i:-1,__u:0};return g==null&&iA.vnode!=null&&iA.vnode(r),r}function W(A){return A.children}function zg(A,e){this.props=A,this.context=e}function yt(A,e){if(e==null)return A.__?yt(A.__,A.__i+1):null;for(var t;e<A.__k.length;e++)if((t=A.__k[e])!=null&&t.__e!=null)return t.__e;return typeof A.type=="function"?yt(A):null}function uI(A){var e,t;if((A=A.__)!=null&&A.__c!=null){for(A.__e=A.__c.base=null,e=0;e<A.__k.length;e++)if((t=A.__k[e])!=null&&t.__e!=null){A.__e=A.__c.base=t.__e;break}return uI(A)}}function wn(A){(!A.__d&&(A.__d=!0)&&Nt.push(A)&&!Kg.__r++||cI!==iA.debounceRendering)&&((cI=iA.debounceRendering)||wI)(Kg)}function Kg(){var A,e,t,o,g,r,n,Q;for(Nt.sort(ln);A=Nt.shift();)A.__d&&(e=Nt.length,o=void 0,r=(g=(t=A).__v).__e,n=[],Q=[],t.__P&&((o=rt({},g)).__v=g.__v+1,iA.vnode&&iA.vnode(o),un(t.__P,o,g,t.__n,t.__P.namespaceURI,32&g.__u?[r]:null,n,r??yt(g),!!(32&g.__u),Q),o.__v=g.__v,o.__.__k[o.__i]=o,NI(n,o,Q),o.__e!=r&&uI(o)),Nt.length>e&&Nt.sort(ln));Kg.__r=0}function MI(A,e,t,o,g,r,n,Q,B,C,i){var I,s,E,c,l,D=o&&o.__k||hI,m=e.length;for(t.__d=B,$h(t,e,D),B=t.__d,I=0;I<m;I++)(E=t.__k[I])!=null&&typeof E!="boolean"&&typeof E!="function"&&(s=E.__i===-1?Ho:D[E.__i]||Ho,E.__i=I,un(A,E,s,g,r,n,Q,B,C,i),c=E.__e,E.ref&&s.ref!=E.ref&&(s.ref&&Mn(s.ref,null,E),i.push(E.ref,E.__c||c,E)),l==null&&c!=null&&(l=c),65536&E.__u||s.__k===E.__k?B=fI(E,B,A):typeof E.type=="function"&&E.__d!==void 0?B=E.__d:c&&(B=c.nextSibling),E.__d=void 0,E.__u&=-196609);t.__d=B,t.__e=l}function $h(A,e,t){var o,g,r,n,Q,B=e.length,C=t.length,i=C,I=0;for(A.__k=[],o=0;o<B;o++)n=o+I,(g=A.__k[o]=(g=e[o])==null||typeof g=="boolean"||typeof g=="function"?null:typeof g=="string"||typeof g=="number"||typeof g=="bigint"||g.constructor==String?Xg(null,g,null,null,null):dn(g)?Xg(W,{children:g},null,null,null):g.constructor===void 0&&g.__b>0?Xg(g.type,g.props,g.key,g.ref?g.ref:null,g.__v):g)!=null?(g.__=A,g.__b=A.__b+1,Q=Ad(g,t,n,i),g.__i=Q,r=null,Q!==-1&&(i--,(r=t[Q])&&(r.__u|=131072)),r==null||r.__v===null?(Q==-1&&I--,typeof g.type!="function"&&(g.__u|=65536)):Q!==n&&(Q==n-1?I=Q-n:Q==n+1?I++:Q>n?i>B-n?I+=Q-n:I--:Q<n&&I++,Q!==o+I&&(g.__u|=65536))):(r=t[n])&&r.key==null&&r.__e&&!(131072&r.__u)&&(r.__e==A.__d&&(A.__d=yt(r)),mn(r,r,!1),t[n]=null,i--);if(i)for(o=0;o<C;o++)(r=t[o])!=null&&!(131072&r.__u)&&(r.__e==A.__d&&(A.__d=yt(r)),mn(r,r))}function fI(A,e,t){var o,g;if(typeof A.type=="function"){for(o=A.__k,g=0;o&&g<o.length;g++)o[g]&&(o[g].__=A,e=fI(o[g],e,t));return e}A.__e!=e&&(e&&A.type&&!t.contains(e)&&(e=yt(A)),t.insertBefore(A.__e,e||null),e=A.__e);do e=e&&e.nextSibling;while(e!=null&&e.nodeType===8);return e}function Ad(A,e,t,o){var g=A.key,r=A.type,n=t-1,Q=t+1,B=e[t];if(B===null||B&&g==B.key&&r===B.type&&!(131072&B.__u))return t;if(o>(B!=null&&!(131072&B.__u)?1:0))for(;n>=0||Q<e.length;){if(n>=0){if((B=e[n])&&!(131072&B.__u)&&g==B.key&&r===B.type)return n;n--}if(Q<e.length){if((B=e[Q])&&!(131072&B.__u)&&g==B.key&&r===B.type)return Q;Q++}}return-1}function lI(A,e,t){e[0]==="-"?A.setProperty(e,t??""):A[e]=t==null?"":typeof t!="number"||_h.test(e)?t:t+"px"}function Wg(A,e,t,o,g){var r;A:if(e==="style")if(typeof t=="string")A.style.cssText=t;else{if(typeof o=="string"&&(A.style.cssText=o=""),o)for(e in o)t&&e in t||lI(A.style,e,"");if(t)for(e in t)o&&t[e]===o[e]||lI(A.style,e,t[e])}else if(e[0]==="o"&&e[1]==="n")r=e!==(e=e.replace(/(PointerCapture)$|Capture$/i,"$1")),e=e.toLowerCase()in A||e==="onFocusOut"||e==="onFocusIn"?e.toLowerCase().slice(2):e.slice(2),A.l||(A.l={}),A.l[e+r]=t,t?o?t.u=o.u:(t.u=hn,A.addEventListener(e,r?pn:Dn,r)):A.removeEventListener(e,r?pn:Dn,r);else{if(g=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in A)try{A[e]=t??"";break A}catch{}typeof t=="function"||(t==null||t===!1&&e[4]!=="-"?A.removeAttribute(e):A.setAttribute(e,e=="popover"&&t==1?"":t))}}function DI(A){return function(e){if(this.l){var t=this.l[e.type+A];if(e.t==null)e.t=hn++;else if(e.t<t.u)return;return t(iA.event?iA.event(e):e)}}}function un(A,e,t,o,g,r,n,Q,B,C){var i,I,s,E,c,l,D,m,N,M,p,h,d,b,Y,R,y=e.type;if(e.constructor!==void 0)return null;128&t.__u&&(B=!!(32&t.__u),r=[Q=e.__e=t.__e]),(i=iA.__b)&&i(e);A:if(typeof y=="function")try{if(m=e.props,N="prototype"in y&&y.prototype.render,M=(i=y.contextType)&&o[i.__c],p=i?M?M.props.value:i.__:o,t.__c?D=(I=e.__c=t.__c).__=I.__E:(N?e.__c=I=new y(m,p):(e.__c=I=new zg(m,p),I.constructor=y,I.render=td),M&&M.sub(I),I.props=m,I.state||(I.state={}),I.context=p,I.__n=o,s=I.__d=!0,I.__h=[],I._sb=[]),N&&I.__s==null&&(I.__s=I.state),N&&y.getDerivedStateFromProps!=null&&(I.__s==I.state&&(I.__s=rt({},I.__s)),rt(I.__s,y.getDerivedStateFromProps(m,I.__s))),E=I.props,c=I.state,I.__v=e,s)N&&y.getDerivedStateFromProps==null&&I.componentWillMount!=null&&I.componentWillMount(),N&&I.componentDidMount!=null&&I.__h.push(I.componentDidMount);else{if(N&&y.getDerivedStateFromProps==null&&m!==E&&I.componentWillReceiveProps!=null&&I.componentWillReceiveProps(m,p),!I.__e&&(I.shouldComponentUpdate!=null&&I.shouldComponentUpdate(m,I.__s,p)===!1||e.__v===t.__v)){for(e.__v!==t.__v&&(I.props=m,I.state=I.__s,I.__d=!1),e.__e=t.__e,e.__k=t.__k,e.__k.forEach(function(u){u&&(u.__=e)}),h=0;h<I._sb.length;h++)I.__h.push(I._sb[h]);I._sb=[],I.__h.length&&n.push(I);break A}I.componentWillUpdate!=null&&I.componentWillUpdate(m,I.__s,p),N&&I.componentDidUpdate!=null&&I.__h.push(function(){I.componentDidUpdate(E,c,l)})}if(I.context=p,I.props=m,I.__P=A,I.__e=!1,d=iA.__r,b=0,N){for(I.state=I.__s,I.__d=!1,d&&d(e),i=I.render(I.props,I.state,I.context),Y=0;Y<I._sb.length;Y++)I.__h.push(I._sb[Y]);I._sb=[]}else do I.__d=!1,d&&d(e),i=I.render(I.props,I.state,I.context),I.state=I.__s;while(I.__d&&++b<25);I.state=I.__s,I.getChildContext!=null&&(o=rt(rt({},o),I.getChildContext())),N&&!s&&I.getSnapshotBeforeUpdate!=null&&(l=I.getSnapshotBeforeUpdate(E,c)),MI(A,dn(R=i!=null&&i.type===W&&i.key==null?i.props.children:i)?R:[R],e,t,o,g,r,n,Q,B,C),I.base=e.__e,e.__u&=-161,I.__h.length&&n.push(I),D&&(I.__E=I.__=null)}catch(u){if(e.__v=null,B||r!=null){for(e.__u|=B?160:32;Q&&Q.nodeType===8&&Q.nextSibling;)Q=Q.nextSibling;r[r.indexOf(Q)]=null,e.__e=Q}else e.__e=t.__e,e.__k=t.__k;iA.__e(u,e,t)}else r==null&&e.__v===t.__v?(e.__k=t.__k,e.__e=t.__e):e.__e=ed(t.__e,e,t,o,g,r,n,B,C);(i=iA.diffed)&&i(e)}function NI(A,e,t){e.__d=void 0;for(var o=0;o<t.length;o++)Mn(t[o],t[++o],t[++o]);iA.__c&&iA.__c(e,A),A.some(function(g){try{A=g.__h,g.__h=[],A.some(function(r){r.call(g)})}catch(r){iA.__e(r,g.__v)}})}function ed(A,e,t,o,g,r,n,Q,B){var C,i,I,s,E,c,l,D=t.props,m=e.props,N=e.type;if(N==="svg"?g="http://www.w3.org/2000/svg":N==="math"?g="http://www.w3.org/1998/Math/MathML":g||(g="http://www.w3.org/1999/xhtml"),r!=null){for(C=0;C<r.length;C++)if((E=r[C])&&"setAttribute"in E==!!N&&(N?E.localName===N:E.nodeType===3)){A=E,r[C]=null;break}}if(A==null){if(N===null)return document.createTextNode(m);A=document.createElementNS(g,N,m.is&&m),r=null,Q=!1}if(N===null)D===m||Q&&A.data===m||(A.data=m);else{if(r=r&&Pg.call(A.childNodes),D=t.props||Ho,!Q&&r!=null)for(D={},C=0;C<A.attributes.length;C++)D[(E=A.attributes[C]).name]=E.value;for(C in D)if(E=D[C],C!="children"){if(C=="dangerouslySetInnerHTML")I=E;else if(C!=="key"&&!(C in m)){if(C=="value"&&"defaultValue"in m||C=="checked"&&"defaultChecked"in m)continue;Wg(A,C,null,E,g)}}for(C in m)E=m[C],C=="children"?s=E:C=="dangerouslySetInnerHTML"?i=E:C=="value"?c=E:C=="checked"?l=E:C==="key"||Q&&typeof E!="function"||D[C]===E||Wg(A,C,E,D[C],g);if(i)Q||I&&(i.__html===I.__html||i.__html===A.innerHTML)||(A.innerHTML=i.__html),e.__k=[];else if(I&&(A.innerHTML=""),MI(A,dn(s)?s:[s],e,t,o,N==="foreignObject"?"http://www.w3.org/1999/xhtml":g,r,n,r?r[0]:t.__k&&yt(t,0),Q,B),r!=null)for(C=r.length;C--;)r[C]!=null&&dI(r[C]);Q||(C="value",c!==void 0&&(c!==A[C]||N==="progress"&&!c||N==="option"&&c!==D[C])&&Wg(A,C,c,D[C],g),C="checked",l!==void 0&&l!==A[C]&&Wg(A,C,l,D[C],g))}return A}function Mn(A,e,t){try{if(typeof A=="function"){var o=typeof A.__u=="function";o&&A.__u(),o&&e==null||(A.__u=A(e))}else A.current=e}catch(g){iA.__e(g,t)}}function mn(A,e,t){var o,g;if(iA.unmount&&iA.unmount(A),(o=A.ref)&&(o.current&&o.current!==A.__e||Mn(o,null,e)),(o=A.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(r){iA.__e(r,e)}o.base=o.__P=null}if(o=A.__k)for(g=0;g<o.length;g++)o[g]&&mn(o[g],e,t||typeof A.type!="function");t||A.__e==null||dI(A.__e),A.__c=A.__=A.__e=A.__d=void 0}function td(A,e,t){return this.constructor(A,t)}function NA(A,e,t){var o,g,r,n;iA.__&&iA.__(A,e),g=(o=typeof t=="function")?null:t&&t.__k||e.__k,r=[],n=[],un(e,A=(!o&&t||e).__k=a(W,null,[A]),g||Ho,Ho,e.namespaceURI,!o&&t?[t]:g?null:e.firstChild?Pg.call(e.childNodes):null,r,!o&&t?t:g?g.__e:e.firstChild,o,n),NI(r,A,n)}function fn(A,e){var t={__c:e="__cC"+mI++,__:A,Consumer:function(o,g){return o.children(g)},Provider:function(o){var g,r;return this.getChildContext||(g=[],(r={})[e]=this,this.getChildContext=function(){return r},this.componentWillUnmount=function(){g=null},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&g.some(function(Q){Q.__e=!0,wn(Q)})},this.sub=function(n){g.push(n);var Q=n.componentWillUnmount;n.componentWillUnmount=function(){g&&g.splice(g.indexOf(n),1),Q&&Q.call(n)}}),o.children}};return t.Provider.__=t.Consumer.contextType=t}Pg=hI.slice,iA={__e:function(A,e,t,o){for(var g,r,n;e=e.__;)if((g=e.__c)&&!g.__)try{if((r=g.constructor)&&r.getDerivedStateFromError!=null&&(g.setState(r.getDerivedStateFromError(A)),n=g.__d),g.componentDidCatch!=null&&(g.componentDidCatch(A,o||{}),n=g.__d),n)return g.__E=g}catch(Q){A=Q}throw A}},pI=0,qh=function(A){return A!=null&&A.constructor==null},zg.prototype.setState=function(A,e){var t;t=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=rt({},this.state),typeof A=="function"&&(A=A(rt({},t),this.props)),A&&rt(t,A),A!=null&&this.__v&&(e&&this._sb.push(e),wn(this))},zg.prototype.forceUpdate=function(A){this.__v&&(this.__e=!0,A&&this.__h.push(A),wn(this))},zg.prototype.render=W,Nt=[],wI=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,ln=function(A,e){return A.__v.__b-e.__v.__b},Kg.__r=0,hn=0,Dn=DI(!1),pn=DI(!0),mI=0;var Gt,IA,Nn,yI,Wo=0,JI=[],pA=iA,GI=pA.__b,kI=pA.__r,YI=pA.diffed,bI=pA.__c,jI=pA.unmount,OI=pA.__;function Xo(A,e){pA.__h&&pA.__h(IA,A,Wo||e),Wo=0;var t=IA.__H||(IA.__H={__:[],__h:[]});return A>=t.__.length&&t.__.push({}),t.__[A]}function L(A){return Wo=1,kt(RI,A)}function kt(A,e,t){var o=Xo(Gt++,2);if(o.t=A,!o.__c&&(o.__=[t?t(e):RI(void 0,e),function(Q){var B=o.__N?o.__N[0]:o.__[0],C=o.t(B,Q);B!==C&&(o.__N=[C,o.__[1]],o.__c.setState({}))}],o.__c=IA,!IA.u)){var g=function(Q,B,C){if(!o.__c.__H)return!0;var i=o.__c.__H.__.filter(function(s){return!!s.__c});if(i.every(function(s){return!s.__N}))return!r||r.call(this,Q,B,C);var I=!1;return i.forEach(function(s){if(s.__N){var E=s.__[0];s.__=s.__N,s.__N=void 0,E!==s.__[0]&&(I=!0)}}),!(!I&&o.__c.props===Q)&&(!r||r.call(this,Q,B,C))};IA.u=!0;var r=IA.shouldComponentUpdate,n=IA.componentWillUpdate;IA.componentWillUpdate=function(Q,B,C){if(this.__e){var i=r;r=void 0,g(Q,B,C),r=i}n&&n.call(this,Q,B,C)},IA.shouldComponentUpdate=g}return o.__N||o.__}function X(A,e){var t=Xo(Gt++,3);!pA.__s&&Gn(t.__H,e)&&(t.__=A,t.i=e,IA.__H.__h.push(t))}function xI(A,e){var t=Xo(Gt++,4);!pA.__s&&Gn(t.__H,e)&&(t.__=A,t.i=e,IA.__h.push(t))}function yA(A){return Wo=5,x(function(){return{current:A}},[])}function x(A,e){var t=Xo(Gt++,7);return Gn(t.__H,e)&&(t.__=A(),t.__H=e,t.__h=A),t.__}function k(A,e){return Wo=8,x(function(){return A},e)}function Qt(A){var e=IA.context[A.__c],t=Xo(Gt++,9);return t.c=A,e?(t.__==null&&(t.__=!0,e.sub(IA)),e.props.value):A.__}function od(){for(var A;A=JI.shift();)if(A.__P&&A.__H)try{A.__H.__h.forEach(Vg),A.__H.__h.forEach(yn),A.__H.__h=[]}catch(e){A.__H.__h=[],pA.__e(e,A.__v)}}pA.__b=function(A){IA=null,GI&&GI(A)},pA.__=function(A,e){A&&e.__k&&e.__k.__m&&(A.__m=e.__k.__m),OI&&OI(A,e)},pA.__r=function(A){kI&&kI(A),Gt=0;var e=(IA=A.__c).__H;e&&(Nn===IA?(e.__h=[],IA.__h=[],e.__.forEach(function(t){t.__N&&(t.__=t.__N),t.i=t.__N=void 0})):(e.__h.forEach(Vg),e.__h.forEach(yn),e.__h=[],Gt=0)),Nn=IA},pA.diffed=function(A){YI&&YI(A);var e=A.__c;e&&e.__H&&(e.__H.__h.length&&(JI.push(e)!==1&&yI===pA.requestAnimationFrame||((yI=pA.requestAnimationFrame)||gd)(od)),e.__H.__.forEach(function(t){t.i&&(t.__H=t.i),t.i=void 0})),Nn=IA=null},pA.__c=function(A,e){e.some(function(t){try{t.__h.forEach(Vg),t.__h=t.__h.filter(function(o){return!o.__||yn(o)})}catch(o){e.some(function(g){g.__h&&(g.__h=[])}),e=[],pA.__e(o,t.__v)}}),bI&&bI(A,e)},pA.unmount=function(A){jI&&jI(A);var e,t=A.__c;t&&t.__H&&(t.__H.__.forEach(function(o){try{Vg(o)}catch(g){e=g}}),t.__H=void 0,e&&pA.__e(e,t.__v))};var FI=typeof requestAnimationFrame=="function";function gd(A){var e,t=function(){clearTimeout(o),FI&&cancelAnimationFrame(e),setTimeout(A)},o=setTimeout(t,100);FI&&(e=requestAnimationFrame(t))}function Vg(A){var e=IA,t=A.__c;typeof t=="function"&&(A.__c=void 0,t()),IA=e}function yn(A){var e=IA;A.__c=A.__(),IA=e}function Gn(A,e){return!A||A.length!==e.length||e.some(function(t,o){return t!==A[o]})}function RI(A,e){return typeof e=="function"?e(A):e}var ZI=(A,e)=>{if(!Array.isArray(A))throw new TypeError("${e}" must be an array but actual is "${A}")};var qg=!1,UI=null;scrapbox.addListener("lines:changed",()=>qg=!1);scrapbox.addListener("layout:changed",()=>qg=!1);var LI=()=>(qg||(UI=scrapbox.Page.lines,qg=!0),UI);var TI=(A,e)=>{if(!(A instanceof HTMLDivElement))throw new TypeError("${e}" must be HTMLDivElememt but actual is "${A}")};var SI=(A,e)=>{if(!(A instanceof HTMLTextAreaElement))throw new TypeError("${e}" must be HTMLTextAreaElement but actual is "${A}")};var vI=()=>_g(document.getElementById("editor"),"div#editor"),zo=()=>_g(document.getElementsByClassName("lines").item(0),"div.lines");var GA=()=>{let A=document.getElementById("text-input");if(A)return SI(A,"textarea#text-input"),A};var HI=()=>_g(document.getElementsByClassName("popup-menu")?.[0],"div.popup-menu");var WI=()=>_g(document.getElementsByClassName("status-bar")?.[0],"div.status-bar"),_g=(A,e)=>{if(A)return TI(A,e),A};var XA=()=>{let A=zo();if(!A)throw Error("div.lines is not found.");let e=Object.keys(A).find(t=>t.startsWith("__reactFiber"));if(!e)throw Error('div.lines must has the property whose name starts with "__reactFiber"');return A[e].return.stateNode.props.lines};var zA=A=>A.match(/^(\s*)/)?.[1]?.length??0,Se=(A,e)=>{let t=zA(XI(A,e)),o=0;for(;A+o+1<e.length&&zA(XI(A+o+1,e))>t;)o++;return o},XI=(A,e)=>{let t=e[A];return Ao(t)?t:t.text};var Yn=A=>{if(se(A))return;if(JA(A))return $g(A)?.id;if(Ao(A))return A.startsWith("L")?A.slice(1):A;if(A.classList.contains("line"))return A.id.slice(1);let e=A.closest(".line");if(e)return e.id.slice(1)},zI=A=>{if(se(A))return;if(JA(A))return A;let e=Yn(A);return e?XA().findIndex(t=>t.id===e):-1};var $g=A=>{if(se(A))return;if(JA(A))return XA()[A];let e=Yn(A);return e?XA().find(t=>t.id===e):void 0},Yt=A=>{if(KI(A))return A;let e=Yn(A);if(se(e))return e;let t=document.getElementById(L${e});if(!se(t))return t},KI=A=>A instanceof HTMLDivElement&&A.classList.contains("line");var Ge=()=>{let A=LI();return ZI(A,"scrapbox.Page.lines"),A},kA=A=>{if(se(A))return;if(JA(A)||Ao(A))return $g(A)?.text;if(!(A instanceof HTMLElement))return;if(KI(A))return $g(A)?.text;if(A.classList.contains("char-index"))return A.textContent??void 0;if(A.classList.contains("line")||A.getElementsByClassName("lines")?.[0])return XA().map(({text:o})=>o).join( );let e=[],t=$g(A);if(!se(t)){for(let o of Qd(A))e.push(nd(o));return t.text.slice(Math.min(...e),Math.max(...e)+1)}};var PI=()=>{let A=zo()?.firstElementChild;if(!se(A))return A},VI=()=>{let A=zo()?.lastElementChild;if(!se(A))return A};var bn=A=>{let e=zI(A);if(!se(e))return Se(e,Ge())};function*Qd(A){let e=A.getElementsByClassName("char-index");for(let t=0;t<e.length;t++)yield e[0]}var jn=A=>A instanceof HTMLSpanElement&&A.classList.contains("char-index"),nd=A=>{if(!jn(A))throw Error("A char DOM is required.");let e=A.className.match(/c-(\d+)/)?.[1];if(se(e))throw Error('.char-index must have ".c-{\\d}"');return parseInt(e)},qI=A=>{let e=A?.getElementsByClassName?.("c-0")?.[0];return jn(e)?e:void 0};var Ko=(A,e)=>{let t=Yt(A)?.getElementsByClassName?.(c-${e})?.[0];return jn(t)?t:void 0};var dA=(A,e)=>{let{noModifiedKeys:t=!1,...o}=e??{},g={bubbles:!0,cancelable:!0,keyCode:Bd[A],...t?{}:{...o}},r=GA();if(!r)throw Error("#text-input must exist.");r.dispatchEvent(new KeyboardEvent("keydown",g)),r.dispatchEvent(new KeyboardEvent("keyup",g))},Bd={Backspace:8,Tab:9,Enter:13,Delete:46,Escape:27," ":32,PageUp:33,PageDown:34,End:35,Home:36,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,a:65,A:65,b:66,B:66,c:67,C:67,d:68,D:68,e:69,E:69,f:70,F:70,g:71,G:71,h:72,H:72,i:73,I:73,j:74,J:74,k:75,K:75,l:76,L:76,m:77,M:77,n:78,N:78,o:79,O:79,p:80,P:80,q:81,Q:81,r:82,R:82,s:83,S:83,t:84,T:84,u:85,U:85,v:86,V:86,w:87,W:87,x:88,X:88,y:89,Y:89,z:90,Z:90,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,F1:113,F2:114,F3:115,F4:116,F5:117,F6:118,F7:119,F8:120,F9:121,F10:122,F11:123,F12:124,":":186,"*":186,";":187,"+":187,"-":189,"=":189,".":190,">":190,"/":191,"?":191,"@":192,"":192,"":219,"{":219,"\\":220,"|":220,"":221,"}":221,"^":222,"~":222,_:226};var On=async(A,e)=>{let t={button:e.button??0,clientX:e.X,clientY:e.Y,bubbles:!0,cancelable:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,view:window};A.dispatchEvent(new MouseEvent("mousedown",t)),A.dispatchEvent(new MouseEvent("mouseup",t)),A.dispatchEvent(new MouseEvent("click",t)),await CA(10)};var wA=()=>{let A=GA();if(!A)throw Error("#text-input is not found.");let e=Object.keys(A).find(t=>t.startsWith("__reactFiber"));if(!e)throw Error('div.cursor must has the property whose name starts with "__reactFiber"');return Ae.return.return.stateNode.props};var Fn=A=>{let{top:e,bottom:t}=A.getBoundingClientRect();return e>=0&&t<=globalThis.innerHeight};function*oe(A,e){for(let t=A;t<e;t++)yield t}var Jn=()=>{dA("Home"),dA("Home")};var _I=async()=>{let A=PI();if(!A)throw Error(".line:first-of-type can't be found.");Fn(A)||A.scrollIntoView({block:"center"});let e=qI(A);if(!e)throw Error(".line:first-of-type .c-0 can't be found.");let{left:t,top:o}=e.getBoundingClientRect();await On(A,{X:t,Y:o})},$I=async()=>{await As(VI())},xn=async A=>{await As(Yt(A))},As=async A=>{if(!A)throw Error("The target line DOM is failed to find.");Fn(A)||A.scrollIntoView({block:"center"});let{right:e,top:t,height:o}=A.getElementsByClassName("text")0.getBoundingClientRect();await On(A,{X:e+1,Y:t+o/2})};var es=(A=1)=>{for(let e of oe(0,A))dA("z",{ctrlKey:!0})},ts=(A=1)=>{for(let e of oe(0,A))dA("z",{shiftKey:!0,ctrlKey:!0})};var Rn=async(A,e)=>{await xn(A),Jn(),dA("Enter"),dA("ArrowUp"),await YA(e)},KA=async(A,e,t)=>{await xn(A),Jn();for(let o of oe(A,e))dA("ArrowDown",{shiftKey:!0});dA("End",{shiftKey:!0}),await YA(t)};var Ar=(A=1)=>{for(let e of oe(0,A))dA("ArrowRight",{ctrlKey:!0})},er=(A=1)=>{for(let e of oe(0,A))dA("ArrowLeft",{ctrlKey:!0})};var tr=(A=1)=>{for(let e of oe(0,A))dA("ArrowUp",{ctrlKey:!0})},or=(A=1)=>{for(let e of oe(0,A))dA("ArrowDown",{ctrlKey:!0})},gr=(A=1)=>{for(let e of oe(0,A))dA("ArrowRight",{altKey:!0})},rr=(A=1)=>{for(let e of oe(0,A))dA("ArrowLeft",{altKey:!0})};var Qr=(A=1)=>{for(let e of oe(0,A))dA("ArrowUp",{altKey:!0})},nr=(A=1)=>{for(let e of oe(0,A))dA("ArrowDown",{altKey:!0})},YA=async A=>{let e=GA();if(!e)throw Error("#text-input is not ditected.");e.focus(),e.value=A;let t=new InputEvent("input",{bubbles:!0});e.dispatchEvent(t),await CA(1)};var sA=()=>{let A=WI();if(!A)throw new Error("div.status-bar can't be found");let e=document.createElement("div");return A.append(e),{render:(...t)=>{e.textContent="";let o=os(...t);o&&e.append(o)},dispose:()=>e.remove()}},os=(...A)=>{let e=A.flatMap(o=>{switch(o.type){case"spinner":returnid();case"check-circle":returnId();case"exclamation-triangle":returnsd();case"text":returnBr(o.text);case"group":{let g=os(...o.items);return g?g:[]}}});if(e.length===0)return;if(e.length===1)return e0;let t=document.createElement("span");return t.classList.add("item-group"),t.append(...e),t},Br=A=>{let e=document.createElement("span");return e.classList.add("item"),e.append(A),e},id=()=>{let A=document.createElement("i");return A.classList.add("fa","fa-spinner"),Br(A)},Id=()=>{let A=document.createElement("i");return A.classList.add("kamon","kamon-check-circle"),Br(A)},sd=()=>{let A=document.createElement("i");return A.classList.add("fas","fa-exclamation-triangle"),Br(A)};var oo=A=>{let e=JSON.parse(localStorage.getItem("pageTransitionContext")??""),t=A.type==="page"?A.from.project===A.to.project?A.from.title===A.to.title?{titleHint:A.to.title}:{linkFrom:A.from.title}:{linkFrom:/${A.from.project}/${A.from.title}}:{searchQuery:A.query};e[page_${P(A.to.title)}]=t,localStorage.setItem("pageTransitionContext",JSON.stringify(e))};var Ed=(A,e,t)=>{let o=new URL(/${A}/${V(e)},location.href);if(t?.body&&(o.search=?body=${encodeURIComponent(t.body)}),t?.id&&(o.hash=#${t.id}),t?.context&&oo({...t?.context,to:{project:A,title:e}}),t?.newTab!==!1&&(t?.newTab===!0||A!==scrapbox.Project.name)){globalThis.open(o);return}if(t?.reload!==!1&&(t?.reload===!0||A!==scrapbox.Project.name)){globalThis.open(o,"_self");return}let g=document.createElement("a");g.href=o.toString(),document.body.append(g),g.click(),g.remove()},go=(A,e,t)=>Ed(A,e,{newTab:!1,reload:!1,body:t});var ro=async(A,e)=>{let t=await globalThis.caches.keys();for(let o of t.sort().reverse()){let r=await(await caches.open(o)).match(A,e);if(r)return r}},Cr=async(A,e)=>{let t=e.clone();return await(await caches.open(ad(new Date))).put(A,t)},ad=A=>api-${A.getFullYear()}-${${A.getMonth()+1}.padStart(2,"0")}-${${A.getDate()}.padStart(2,"0")};var ge=()=>{let A=GA();if(!A)throw Error("#text-input is not found.");let e=Object.keys(A).find(r=>r.startsWith("__reactFiber"));if(!e)throw Error('#text-input must has the property whose name starts with "__reactFiber"');let t=Ae.return.return.stateNode._stores,o=t.find(r=>r.constructor.name==="Cursor");if(!o)throw Error('#text-input must has a "Cursor" store.');let g=t.find(r=>r.constructor.name==="Selection");if(!g)throw Error('#text-input must has a "Selection" store.');return{cursor:o,selection:g}};var nt=()=>ge().cursor;var ir=()=>ge().selection;var Po=A=>A===void 0?0:typeof A=="boolean"?Number(A):(A.capture?1:0)|(A.once?2:0)|(A.passive?4:0),gs=A=>{if(A===0)return;let e={};return A&1&&(e.capture=!0),A&2&&(e.once=!0),A&4&&(e.passive=!0),e};var Ir=new Map,Zn=new Map,rs=(A,e,t)=>{let o=Ir.get(A)??new Map,g=o.get(e)??new Set;if(g.has(Po(t)))return;if(g.add(Po(t)),o.set(e,g),Ir.set(A,o),typeof t=="object"&&t?.once){let n=Zn.get(e)??new Map,Q=Po(t),B=function(i){return Un(A,e,t),n.delete(Q),e.call(this,i)};n.set(Q,B),Zn.set(e,n);let C=GA();if(!C)return;C.addEventListener(A,B,t)}let r=GA();r&&r.addEventListener(A,e,t)};scrapbox.on("layout:changed",()=>{let A=GA();if(A)for(lete,tof Ir)for(leto,gof t)for(let r of g)A.addEventListener(e,o,gs(r))});var Un=(A,e,t)=>{let o=Ir.get(A);if(!o)return;let g=o.get(e);if(!g)return;let r=Po(t);if(g.delete(r),typeof t=="object"&&t?.once){let Q=Zn.get(e);if(!Q)return;let B=Q.get(r);if(!B)return;let C=GA();if(!C)return;C.removeEventListener(A,B,t),Q.delete(r);return}let n=GA();n&&n.removeEventListener(A,e,t)};var Qs=A=>A.replace(/[.*+?^=!:${}()|\\/\\]/g,"\\$&");var ns=({project:A,title:e,words:t,lines:o,query:g,close:r})=>{let n=k(B=>{oo({type:"search",query:g,to:{project:A,title:e}}),!(B.metaKey||B.ctrlKey||B.altKey||B.shiftKey)&&r()},A,e,g,r),Q=x(()=>{let B=new RegExp((${t.map(C=>Qs(C)).join("|")}),"i");return o.flatMap(C=>{let i=C.split(B);return a("span",null,i.map((I,s)=>s%2===0?I:a("strong",null,I)))})},o,t);return a("a",{href:/${A}/${V(e)},target:${A===scrapbox.Project.name?"":"_blank"},rel:${A===scrapbox.Project.name?"route":"noopener noreferrer"},onClick:n},e,a("div",{className:"description"},Q))};var Bs=A=>{lete,t=L(A),o=k(()=>t(!0),[]),g=k(()=>t(!1),[]),r=k(()=>t(n=>!n),[]);returne,{open:o,close:g,toggle:r}};var Cs=(A,e)=>{lett,o=L(),g,r=L(!1),n=yA(Promise.resolve());return X(()=>{if(e===""){o(void 0);return}let Q=!1;return n.current=(async()=>{if(await n.current,!Q){r(!0);try{let B=await gI(e,A);if(Q)return;o(B.ok?B.value:void 0)}finally{r(!1)}}})(),()=>Q=!0},e,A),{loading:g,result:t}};var is=()=>a("style",null,`.modal { position:fixed;
inset:0;
z-index:1050;
background-color:#000c;
display: flex;
flex-direction: column;
align-items: center;
row-gap: 10px;
padding: 10px;
}
.closed {
display: none;
}
.modal > * {
border-radius: 4px;
padding: 5px;
width: calc(var(--item-width, 100%) - 10px);
}
@media (min-width: 768px) {
.modal {
padding: 30px;
}
}
.controller {
display: flex;
gap: 0.2em;
flex-direction: column;
}
input {
border-radius: 5px;
padding: 0 10px;
height: 32px;
border: transparent;
box-shadow: none;
color: var(--search-form-text-color, rgba(255, 255, 255, 0.35));
background-color: var(--search-form-bg, rgba(255, 255, 255, 0.15))
}
.result {
flex-direction: column;
width: 100%;
padding: 5px 0;
margin: 2px 0 0;
list-style: none;
font-size: 14px;
font-weight: normal;
line-height: 28px;
text-align: left;
border: 1px solid rgba(0,0,0,0.15);
border-radius: 4px;
background-clip: padding-box;
white-space: nowrap;
overflow-x: hidden;
overflow-y: auto;
}
a {
display: block;
padding: 3px 20px;
clear: both;
align-items: center;
user-select: none;
text-decoration: none;
overflow: hidden;
text-overflow: ellipsis;
color: inherit;
}
.description {
margin-top: 0.5em;
color: var(--incremental-fulltext-search-description-text-color, #c4c4c4); font-size: 12px;
line-height: 14px;
max-height: 28px;
overflow: hidden;
text-overflow: ellipsis;
}
.description strong {
}
.spinner::before {
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
content: "\f110";
font-family: "Font Awesome 5 Free";
font-weight: 900;
margin: 0;
padding: 0;
box-sizing: border-box;
animation: fa-spin 2s linear infinite;
});var cd=()=>a("i",{className:"spinner"}),Is=({exportOps:A})=>{let[e,t]=L(""),o=scrapbox.Project.name,{loading:g,result:r}=Cs(o,e),n=k(E=>{t(E.currentTarget.value)},[]),[Q,{open:B,close:C,toggle:i}]=Bs(!1),I=yA({open:B,close:C,toggle:i});X(()=>{Object.assign(I.current,{open:B,close:C,toggle:i})},[]),X(()=>A(I.current),[A]);let s=k(E=>{E.target instanceof HTMLElement&&E.target.id==="background"&&C()},[]);return a(W,null,a(is,null),a("div",{id:"background",className:modal${Q?"":" closed"},onClick:s},a("div",{className:"controller"},a("input",{type:"text",value:e,onInput:n}),a("div",{className:"info"},g&&a(cd,null),${r?.pages?.length??0} pages)),r?.pages&&r.pages.length>0&&a("ul",{className:"result"},r.pages.map(E=>a("li",{key:E.title},a(ns,{...E,project:o,query:e,close:C}))))))};var ss=()=>{let A=document.createElement("div"),e=A.attachShadow({mode:"open"});return document.body.append(A),new Promise(t=>{NA(a(Is,{exportOps:t}),e)})};var sr=(A,e)=>Object.hasOwn(A,e),Es={left:"ArrowLeft",right:"ArrowRight",up:"ArrowUp",down:"ArrowDown",bs:"Backspace",menu:"ContextMenu",apps:"ContextMenu",del:"Delete",return:"Enter",cr:"Enter",esc:"Escape",pgup:"PageUp",pgdn:"PageDown",lt:"<",less:"<",lesser:"<",gt:">",greater:">"},Ds=A=>{let e=A.toLowerCase();return sr(Es,e)?Es[e]:A},as={Backquote:["","~"],Digit1:"1","!",Digit2:"2","@",Digit3:"3","#",Digit4:"4","$",Digit5:"5","%",Digit6:"6","^",Digit7:"7","&",Digit8:"8","*",Digit9:"9","(",Digit0:"0",")",Minus:"-","_",Equal:"=","+",Backslash:"\\","|",BracketLeft:["","{",BracketRight:"","}"],Semicolon:";",":",Quote:"'",'"',Comma:",","<",Period:".",">",Slash:"/","?"},ld=(A,e)=>{if(A.startsWith("Key")){let t=A.slice(3);return e||(t=t.toLowerCase()),t}return sr(as,A)?asAe?1:0:A},cs={"<":"lt",">":"gt"},Dd=/^($|Unidentified$|Process$|Dead$|Alt|Control|Hyper|Meta|Shift|Super|OS)/,Ln=A=>{let e=A.shiftKey,t=A.key||"Unidentified";if(t==="Unidentified"?t=ld(A.code||"",e):(t=Ds(t),t===" "&&(t="Space")),Dd.test(t))return"";t.length===1?e=!1:t=t.toLowerCase();let o="";return A.altKey&&(o+="a-"),A.ctrlKey&&(o+="c-"),A.metaKey&&(o+="m-"),e&&(o+="s-"),sr(cs,t)&&(t=cst),o||t.length>1?<${o}${t}>:t},ls={a:"altKey",c:"ctrlKey",m:"metaKey",s:"shiftKey"},pd=A=>{if(A.length===1)return/\s/.test(A)?{ok:!1,value:{name:"InvalidKeyError",key:A,message:Invalid key: ${A}}}:{ok:!0,value:{key:A}};let e=A.match(/^<((?:a-z-)*)(a-z\d+|^<>\s)>$/i);if(!e)return{ok:!1,value:{name:"InvalidKeyError",key:A,message:Invalid key: ${A}}};let,t,o=e,g={key:Ds(o)};for(let r of t.split("-").slice(0,-1)){let n=r.toLowerCase();if(!sr(ls,n))return{ok:!1,value:{name:"UnknownModifierError",modifier:r,context:A,message:${A}: Unknown modifier: ${r}}};let Q=lsn;if(gQ!==void 0)return{ok:!1,value:{name:"DuplicateModifierError",modifier:r,context:A,message:${A}: Duplicate modifier: ${r}}};if(gQ=!0,g.key.length===1&&g.shiftKey)return{ok:!1,value:{name:"DisallowedModifierError",modifier:r,context:A,message:${A}: Unusable modifier with single-character keys: ${r}}}}return{ok:!0,value:g}},ps=A=>{let e=pd(A);return e.ok?{ok:!0,value:Ln(e.value)}:e},ws=A=>A.match(/<^<>\s+>|\s\S|^$/g);var re=!1,Tn=A=>{re=typeof A=="boolean"?A:new Set(A)},ke=A=>Object.fromEntries(...Object.entries(console).map((e,t)=>{if(typeof t!="function")returne,t;switch(e){case"warn":case"error":return[e,(...o)=>t(%c${A},"color: gray",...o)];case"log":case"info":case"debug":return[e,(...o)=>{re!==!0&&(!re||!re.has(A))||t(%c${A},"color: gray",...o)}];case"assert":return[e,(o,...g)=>{re!==!0&&(!re||!re.has(A))||t(o,%c${A},"color: gray",...g)}];case"time":case"timeEnd":return[e,o=>{re!==!0&&(!re||!re.has(A))||t(${A} ${o})}];default:returne,(...o)=>{if(!(re!==!0&&(!re||!re.has(A))))return t(...o)}}}));var bt=ke("ScrapBindings:mod.ts"),Er=class{constructor(e,t){this.target=e;this.onSequenceUpdate=t?.onSequenceUpdate,this.flushInterval=t?.flushInterval??1e3}bind(e,t){let o=new Map,g=[];for(letr,nof e instanceof Map?e.entries():typeof e=="string"?e,t:Object.entries(e)){let Q=ms(r);if(!Q.ok){for(let C of Q.value)bt.error(${r}: ${C.message});o.set(r,Q.value);continue}let B=Q.value;this.bindings.set(B,n),B.startsWith(this.currentSequence)&&this.filtered.add(B),g.push(B)}return bt.debug("Binded the following commands:",g),this.emitChange(),o}unbind(...e){for(let t of e){let o=ms(t);if(!o.ok)continue;let g=o.value;this.bindings.delete(g),this.filtered.delete(g)}this.emitChange()}reset(){this.bindings.clear(),this.emitChange()}bindings=new Map;onSequenceUpdate;flushInterval;_sequence="";set currentSequence(e){let t=this._sequence!==e;this._sequence=e,t&&this.onSequenceUpdate?.(e)}get currentSequence(){return this._sequence}prevBestMatchCommand;filtered=new Set;timer;backToInitial=()=>{clearTimeout(this.timer),this.currentSequence="",this.prevBestMatchCommand=void 0,this.filtered=new Set(this.bindings.keys()),bt.debug("reset the sequence")};handleKeydown=e=>{if(!e.isTrusted)return;let t=Ln(e);if(!t)return;if(clearTimeout(this.timer),e.isComposing){this.backToInitial();return}this.currentSequence+=t,bt.debug("sequence",this.currentSequence);let o;for(let r of this.filtered){if(r.startsWith(this.currentSequence)||this.filtered.delete(r),this.currentSequence!==r)continue;let n=this.bindings.get(r);if(!n){this.filtered.delete(r);continue}o=()=>{bt.debug(run ${r});try{n(e)}catch(Q){bt.error(Q)}finally{this.backToInitial()}}}let g=this.filtered.size;if(bt.debug(${g} candidates: ${[...this.filtered.keys()].join(", ")}),g>0&&(this.prevBestMatchCommand=o),this.prevBestMatchCommand&&g<2){if(this.prevBestMatchCommand(),g===0){this.handleKeydown(e);return}return}if(g===0){this.backToInitial();return}e.preventDefault(),e.stopPropagation(),this.timer=setTimeout(this.prevBestMatchCommand??this.backToInitial,this.flushInterval)};emitChange=()=>{if(this.bindings.size===0){this.backToInitial(),this.target.removeEventListener("keydown",this.handleKeydown);return}this.target.addEventListener("keydown",this.handleKeydown)}},wd={name:"InvalidSequenceError",message:"cannot parse the sequence"},ms=A=>{let e=ws(A);if(!e)return{ok:!1,value:wd};let t="",o=[];for(let g of e){let r=ps(g);if(!r.ok){o.push(r.value);continue}t+=r.value}return o.length>0?{ok:!1,value:o}:{ok:!0,value:t}};var md=/https?:\/\/vimeo\.com\/(0-9+)/i,hs=A=>{let e=A.match(md);if(e)return e1};var hd=/https?:\/\/open\.spotify\.com\/(track|artist|playlist|album|episode|show)\/(a-zA-Z\d_-+)(?:\?^\s{0,100}|)/,ds=A=>{let e=A.match(hd);if(!e)return;let,t,o=e;return{videoId:o,pathType:t}};var dd=/https?:\/\/anchor\.fm\/a-zA-Z\d_-+\/episodes\/(a-zA-Z\d_-+(?:\/a-zA-Z\d_-+)?)(?:\?^\s{0,100}|)/,us=A=>{let e=A.match(dd);if(!e)return;let,t=e;return t};var Ms=A=>{let{type:e,pathType:t,content:o,href:g,...r}=A;if(o===""){let n=Sg(g);if(n)return{type:"youtube",href:g,...n,...r};let Q=hs(g);if(Q)return{type:"vimeo",videoId:Q,href:g,...r};let B=ds(g);if(B)return{type:"spotify",href:g,...B,...r};let C=us(g);if(C)return{type:"anchor-fm",videoId:C,href:g,...r};if(Md(g))return{type:"video",href:g,...r}}return ud(g)?{type:"audio",content:o,href:g,...r}:{type:"absoluteLink",content:o,href:g,...r}},ud=A=>/\.(?:mp3|ogg|wav|aac)$/.test(A),Md=A=>/\.(?:mp4|webm)$/.test(A);var fs=()=>{if(scrapbox.Layout!=="page")return{selectionRange:{start:{line:0,char:0},end:{line:0,char:0}},selectedText:""};let{selectionRange:A,selectedText:e,position:t}=wA();if(!e){let i=bn(t.line)??0,I={start:{line:t.line,char:0},end:{line:t.line+i,char:kA(t.line+i)?.length??0}};return{selectionRange:I,selectedText:scrapbox.Page.lines.slice(I.start.line,I.end.line+1).map(s=>s.text).join(` )}}let{start:o,end:g}=A,r=o.line>g.line,n=r?g.line:o.line,Q=r?g.char:o.char,B=r?o.line:g.line,C=r?o.char:g.char;return{selectedText:e,selectionRange:{start:{line:n,char:Q},end:{line:B,char:C}}}};var Sn=(A,{title:e,projectTo:t,mode:o})=>{let[g,...r]=A.split(
),n=g.replaceAll("[","").replaceAll("]","").trim(),Q=Math.min(...[g,...r].map(C=>zA(C))),B=[from ${e},g.slice(Q),...r.map(C=>C.slice(Q))];return{text:${n},pages:[{project:t,title:n,lines:B,mode:o}]}};Sn.hookName="default-hook";var ve=A=>{let{project:e=scrapbox.Project.name,mode:t="newtab"}=A??{},o=[...A?.hooks??[],Sn],{selectionRange:{start:g,end:r},selectedText:n}=fs();if(!n||scrapbox.Layout!=="page")return;let Q=(()=>{for(let I of o){let s=I(n,{title:scrapbox.Page.title,projectFrom:scrapbox.Project.name,projectTo:e,lines:XA().slice(g.line,r.line+1),mode:t});if(s)return[I.hookName,s]}})();if(!Q)return;let[B,C]=Q,i=async()=>{let I=C instanceof Promise?await C:C;if(I.pages.length===0&&I.text===n)return;let s,{render:E,dispose:c}=sA();try{if(I.pages.length>0){let D=I.pages.length;E({type:"spinner"},{type:"text",text:Create new ${D} pages...}),s=await WA();let m=0;await Promise.all(I.pages.map(async N=>{let M=Array.isArray(N.lines)?p=>[...p.map(h=>h.text),...N.lines]:N.lines;await rA(N.project,N.title,M,{socket:s}),E({type:"spinner"},{type:"text",text:Create ${D-++m} pages...})}))}E({type:"spinner"},{type:"text",text:${I.pages.length>0?"Created. ":""}Removing cut text...});let l=I.text;if(n===l)return;await rA(scrapbox.Project.name,scrapbox.Page.title,D=>{let m=D.map(N=>N.text);return[...m.slice(0,g.line),...${mg.line.slice(0,g.char)}${l}${m.slice(r.line).join(` ).slice(r.char)}.split(`
)]}),E({type:"check-circle"},{type:"text",text:"Removed."});for(let D of I.pages)switch(D.mode){case"self":D.project===scrapbox.Project.name?go(D.project,D.title):window.open(https://scrapbox.io/${D.project}/${V(D.title)},"_self");break;case"newtab":window.open(https://scrapbox.io/${D.project}/${V(D.title)});break}}catch(l){E({type:"exclamation-triangle"},{type:"text",text:"Failed to create new pages (see console)."}),console.error(l)}finally{let l=CA(1e3);s&&await LA(s),await l,c()}};return i.hookName=B,i};function fd(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}var Nd={};function yd(){return Nd}function ar(A,e){let t=yd(),o=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??t.weekStartsOn??t.locale?.options?.weekStartsOn??0,g=fd(A),r=g.getDay(),n=(r<o?7:0)+r-o;return g.setDate(g.getDate()-n),g.setHours(0,0,0,0),g}function Gd(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Ns(A){let e=Gd(A);return e.setHours(0,0,0,0),e}function vn(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function ys(A,e){let t=vn(A.start),o=vn(A.end),g=+t>+o,r=g?+t:+o,n=g?o:t;n.setHours(0,0,0,0);let Q=e?.step??1;if(!Q)return[];Q<0&&(Q=-Q,g=!g);let B=[];for(;+n<=r;)B.push(vn(n)),n.setDate(n.getDate()+Q),n.setHours(0,0,0,0);return g?B.reverse():B}function kd(A){return A instanceof Date||typeof A=="object"&&Object.prototype.toString.call(A)==="[object Date]"}function Gs(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Yd(A){if(!kd(A)&&typeof A!="number")return!1;let e=Gs(A);return!isNaN(Number(e))}function Bt(A,e){let t=A<0?"-":"",o=Math.abs(A).toString().padStart(e,"0");return t+o}var bd={y(A,e){let t=A.getFullYear(),o=t>0?t:1-t;return Bt(e==="yy"?o%100:o,e.length)},M(A,e){let t=A.getMonth();return e==="M"?String(t+1):Bt(t+1,2)},d(A,e){return Bt(A.getDate(),e.length)},a(A,e){let t=A.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return t.toUpperCase();case"aaa":return t;case"aaaaa":return t[0];case"aaaa":default:return t==="am"?"a.m.":"p.m."}},h(A,e){return Bt(A.getHours()%12||12,e.length)},H(A,e){return Bt(A.getHours(),e.length)},m(A,e){return Bt(A.getMinutes(),e.length)},s(A,e){return Bt(A.getSeconds(),e.length)},S(A,e){let t=e.length,o=A.getMilliseconds(),g=Math.trunc(o*Math.pow(10,t-3));return Bt(g,e.length)}},jd=/(\w)\1*|''|'(''|[^'])+('|$)|./g,Od=/^'([^]*?)'?$/,Fd=/''/g,Jd=/[a-zA-Z]/;function $(A,e){let t=Gs(A);if(!Yd(t))throw new RangeError("Invalid time value");let o=e.match(jd);return o?o.map(g=>{if(g==="''")return"'";let r=g[0];if(r==="'")return xd(g);let n=bd[r];if(n)return n(t,g);if(r.match(Jd))throw new RangeError("Format string contains an unescaped latin alphabet character "+r+"");return g}).join(""):""}function xd(A){let e=A.match(Od);return e?e[1].replace(Fd,"'"):A}function Rd(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Zd(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function PA(A,e){let t=Rd(A);return isNaN(e)?Zd(A,NaN):(e&&t.setDate(t.getDate()+e),t)}function Ud(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Ld(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function Td(A,e){let t=Ud(A);return isNaN(e)?Ld(A,NaN):(e&&t.setDate(t.getDate()+e),t)}function He(A,e){return Td(A,-e)}function Sd(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function vd(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function Hd(A,e){let t=+Sd(A);return vd(A,t+e)}function cr(A,e){return Hd(A,e*1e3)}function Wd(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Xd(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function zd(A,e){let t=Wd(A);return isNaN(e)?Xd(A,NaN):(e&&t.setDate(t.getDate()+e),t)}function ks(A,e){let t=e*7;return zd(A,t)}function Kd(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function lr(A){return Kd(A).getDate()}var Pd=Math.pow(10,8)*24*60*60*1e3,AL=-Pd,Vd=6048e5,qd=3600,Ys=qd*24,eL=Ys*7,_d=Ys*365.2425,$d=_d/12,tL=$d*3;function Wn(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}var Au={};function Xn(){return Au}function Dr(A,e){let t=Xn(),o=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??t.weekStartsOn??t.locale?.options?.weekStartsOn??0,g=Wn(A),r=g.getDay(),n=(r<o?7:0)+r-o;return g.setDate(g.getDate()-n),g.setHours(0,0,0,0),g}function Hn(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function eu(A,e){let t=Wn(A),o=t.getFullYear(),g=Xn(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??g.firstWeekContainsDate??g.locale?.options?.firstWeekContainsDate??1,n=Hn(A,0);n.setFullYear(o+1,0,r),n.setHours(0,0,0,0);let Q=Dr(n,e),B=Hn(A,0);B.setFullYear(o,0,r),B.setHours(0,0,0,0);let C=Dr(B,e);return t.getTime()>=Q.getTime()?o+1:t.getTime()>=C.getTime()?o:o-1}function tu(A,e){let t=Xn(),o=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??t.firstWeekContainsDate??t.locale?.options?.firstWeekContainsDate??1,g=eu(A,e),r=Hn(A,0);return r.setFullYear(g,0,o),r.setHours(0,0,0,0),Dr(r,e)}function Vo(A,e){let t=Wn(A),o=+Dr(t,e)-+tu(t,e);return Math.round(o/Vd)+1}function ou(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function bs(A){return ou(A).getMonth()}function gu(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function qo(A){return gu(A).getFullYear()}function ru(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function js(A){let e=ru(A);return e.setHours(0,0,0,0),e}function Qe(A,e){let t=js(A),o=js(e);return+t==+o}var Os=A=>{let e=new Map;for(let t of A){let o=${qo(t)}-${bs(t)}-${lr(t)},g=e.get(o);g&&g.getTime()>t.getTime()||e.set(o,t)}return[...e.values()]};function zn(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function pr(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function Qu(A,e){let t=zn(A);return isNaN(e)?pr(A,NaN):(e&&t.setDate(t.getDate()+e),t)}function nu(A,e){let t=zn(A);if(isNaN(e))return pr(A,NaN);if(!e)return t;let o=t.getDate(),g=pr(A,t.getTime());g.setMonth(t.getMonth()+e+1,0);let r=g.getDate();return o>=r?g:(t.setFullYear(g.getFullYear(),g.getMonth(),o),t)}function Fs(A,e){let{years:t=0,months:o=0,weeks:g=0,days:r=0,hours:n=0,minutes:Q=0,seconds:B=0}=e,C=zn(A),i=o||t?nu(C,o+t*12):C,I=r||g?Qu(i,r+g*7):i,s=Q+n*60,E=(B+s*60)*1e3;return pr(A,I.getTime()+E)}function Bu(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Cu(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function iu(A,e){let t=+Bu(A);return Cu(A,t+e)}var Iu=Math.pow(10,8)*24*60*60*1e3,AT=-Iu,su=36e5,Eu=3600,Js=Eu*24,eT=Js*7,au=Js*365.2425,cu=au/12,tT=cu*3;function xs(A,e){return iu(A,e*su)}function lu(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Du(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function pu(A,e){let t=+lu(A);return Du(A,t+e)}var wu=Math.pow(10,8)*24*60*60*1e3,BT=-wu,mu=6e4,hu=3600,Rs=hu*24,CT=Rs*7,du=Rs*365.2425,uu=du/12,iT=uu*3;function Ct(A,e){return pu(A,e*mu)}function Zs(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Us(A,e){let t=Zs(A),o=Zs(e),g=t.getTime()-o.getTime();return g<0?-1:g>0?1:g}var Mu=Math.pow(10,8)*24*60*60*1e3,xT=-Mu,fu=864e5,Nu=3600,Ss=Nu*24,RT=Ss*7,yu=Ss*365.2425,Gu=yu/12,ZT=Gu*3;function vs(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Ls(A){let e=vs(A);return e.setHours(0,0,0,0),e}function Ts(A){let e=vs(A),t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),+A-+t}function Hs(A,e){let t=Ls(A),o=Ls(e),g=+t-Ts(t),r=+o-Ts(o);return Math.round((g-r)/fu)}function Ws(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Xs(A,e){let t=Ws(A),o=Ws(e),g=t.getFullYear()-o.getFullYear(),r=t.getMonth()-o.getMonth();return g*12+r}function ku(A){return e=>{let t=(A?Math[A]:Math.trunc)(e);return t===0?0:t}}var Yu=Math.pow(10,8)*24*60*60*1e3,PT=-Yu,bu=6e4,ju=3600,Ks=ju*24,VT=Ks*7,Ou=Ks*365.2425,Fu=Ou/12,qT=Fu*3;function zs(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Ju(A,e){return+zs(A)-+zs(e)}function Kn(A,e,t){let o=Ju(A,e)/bu;return ku(t?.roundingMethod)(o)}function _o(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function xu(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function Ru(A,e){let t=_o(A);return isNaN(e)?xu(A,NaN):(e&&t.setDate(t.getDate()+e),t)}function Zu(A,e){let t=e*7;return Ru(A,t)}var Uu={};function Lu(){return Uu}function wr(A,e){let t=Lu(),o=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??t.weekStartsOn??t.locale?.options?.weekStartsOn??0,g=_o(A),r=g.getDay(),n=(r<o?7:0)+r-o;return g.setDate(g.getDate()-n),g.setHours(0,0,0,0),g}function Ps(A,e){let t=_o(A.start),o=_o(A.end),g=+t>+o,r=wr(g?o:t,e),n=wr(g?t:o,e);r.setHours(15),n.setHours(15);let Q=+n.getTime(),B=r,C=e?.step??1;if(!C)return[];C<0&&(C=-C,g=!g);let i=[];for(;+B<=Q;)B.setHours(0),i.push(_o(B)),B=Zu(B,C),B.setHours(15);return g?i.reverse():i}function Tu(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Vs(A){let e=Tu(A);return e.setHours(23,59,59,999),e}function Su(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function qs(A){return Su(A).getHours()}function vu(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function _s(A){return vu(A).getMinutes()}function $s(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function eE(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}var Hu={};function tE(){return Hu}function AE(A,e){let t=tE(),o=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??t.weekStartsOn??t.locale?.options?.weekStartsOn??0,g=eE(A),r=g.getDay(),n=(r<o?7:0)+r-o;return g.setDate(g.getDate()-n),g.setHours(0,0,0,0),g}function oE(A,e){let t=eE(A),o=t.getFullYear(),g=tE(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??g.firstWeekContainsDate??g.locale?.options?.firstWeekContainsDate??1,n=$s(A,0);n.setFullYear(o+1,0,r),n.setHours(0,0,0,0);let Q=AE(n,e),B=$s(A,0);B.setFullYear(o,0,r),B.setHours(0,0,0,0);let C=AE(B,e);return t.getTime()>=Q.getTime()?o+1:t.getTime()>=C.getTime()?o:o-1}var Wu=Math.pow(10,8)*24*60*60*1e3,ZS=-Wu;var Xu=3600,gE=Xu*24,US=gE*7,zu=gE*365.2425,Ku=zu/12,LS=Ku*3;function rE(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function jt(A,e){let t=rE(A),o=rE(e);return t.getTime()>o.getTime()}function Pu(A){return A instanceof Date||typeof A=="object"&&Object.prototype.toString.call(A)==="[object Date]"}function Vu(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Qo(A){if(!Pu(A)&&typeof A!="number")return!1;let e=Vu(A);return!isNaN(Number(e))}function Pn(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function Vn(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function qu(A){let e=Vn(A),t=e.getFullYear(),o=e.getMonth(),g=Pn(A,0);return g.setFullYear(t,o+1,0),g.setHours(0,0,0,0),g.getDate()}function _u(A,e){let t=Vn(A),o=t.getFullYear(),g=t.getDate(),r=Pn(A,0);r.setFullYear(o,e,15),r.setHours(0,0,0,0);let n=qu(r);return t.setMonth(e,Math.min(g,n)),t}function QE(A,e){let t=Vn(A);return isNaN(+t)?Pn(A,NaN):(e.year!=null&&t.setFullYear(e.year),e.month!=null&&(t=_u(t,e.month)),e.date!=null&&t.setDate(e.date),e.hours!=null&&t.setHours(e.hours),e.minutes!=null&&t.setMinutes(e.minutes),e.seconds!=null&&t.setSeconds(e.seconds),e.milliseconds!=null&&t.setMilliseconds(e.milliseconds),t)}var $u=Math.pow(10,8)*24*60*60*1e3,d6=-$u,AM=6048e5,eM=3600,nE=eM*24,u6=nE*7,tM=nE*365.2425,oM=tM/12,M6=oM*3;function hr(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}var gM={};function _n(){return gM}function mr(A,e){let t=_n(),o=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??t.weekStartsOn??t.locale?.options?.weekStartsOn??0,g=hr(A),r=g.getDay(),n=(r<o?7:0)+r-o;return g.setDate(g.getDate()-n),g.setHours(0,0,0,0),g}function qn(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function rM(A,e){let t=hr(A),o=t.getFullYear(),g=_n(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??g.firstWeekContainsDate??g.locale?.options?.firstWeekContainsDate??1,n=qn(A,0);n.setFullYear(o+1,0,r),n.setHours(0,0,0,0);let Q=mr(n,e),B=qn(A,0);B.setFullYear(o,0,r),B.setHours(0,0,0,0);let C=mr(B,e);return t.getTime()>=Q.getTime()?o+1:t.getTime()>=C.getTime()?o:o-1}function QM(A,e){let t=_n(),o=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??t.firstWeekContainsDate??t.locale?.options?.firstWeekContainsDate??1,g=rM(A,e),r=qn(A,0);return r.setFullYear(g,0,o),r.setHours(0,0,0,0),mr(r,e)}function nM(A,e){let t=hr(A),o=+mr(t,e)-+QM(t,e);return Math.round(o/AM)+1}function BE(A,e,t){let o=hr(A),g=nM(o,t)-e;return o.setDate(o.getDate()-g*7),o}var BM=Math.pow(10,8)*24*60*60*1e3,Y6=-BM;var CM=3600,CE=CM*24,b6=CE*7,iM=CE*365.2425,IM=iM/12,j6=IM*3;function sM(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function EM(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function aM(A,e){let t=sM(A);return isNaN(e)?EM(A,NaN):(e&&t.setDate(t.getDate()+e),t)}function cM(A,e){let t=e*7;return aM(A,t)}function iE(A,e){return cM(A,-e)}var IE=A=>A==null,it=A=>typeof A=="string";async function*sE(A){let e=[],t,o=n=>{if(!t){e.push(n);return}t(n),t=void 0},g=()=>e.length>0?Promise.resolve(e.pop()):new Promise(n=>t=n),r=0;for(let n of A)n.then(Q=>o({state:"fulfilled",value:Q})).catch(Q=>o({state:"rejected",reason:Q})),r++;for(let n=0;n<r;n++)yield await g()}var VA=A=>{let e=A.match(/^(\d{4})-(\d{2})-(\d{2}) (?: {5}|(\d{2}):(\d{2})) (?: {4}|(\d{4})) (?: {8}|(\d{2}):(\d{2}):(\d{2})) (?: {8}|(\d{2}):(\d{2}):(\d{2}))([^\n]*)$/);if(!e)return;let[,t,o,g,r,n,Q,B,C,i,I,s,E,c]=e,l={title:c,base:new Date(parseInt(t),parseInt(o)-1,parseInt(g)),plan:{},record:{}};if(r){let D=new Date(l.base);D.setHours(parseInt(r)),D.setMinutes(parseInt(n)),l.plan.start=D}if(Q&&(l.plan.duration=parseInt(Q)*60),B){let D=new Date(l.base);D.setHours(parseInt(B)),D.setMinutes(parseInt(C)),D.setSeconds(parseInt(i)),l.record.start=D}if(I){let D=new Date(l.base);D.setHours(parseInt(I)),D.setMinutes(parseInt(s)),D.setSeconds(parseInt(E)),l.record.start&&jt(l.record.start,D)&&D.setDate(D.getDate()+1),l.record.end=D}return l};var no=A=>A.record?.start??A.plan?.start??A.base,EE=A=>A.record?.end??(IE(A.plan?.duration)?A.base:cr(no(A),A.plan.duration));var EA=({title:A,base:e,plan:t,record:o})=>["",$(e,"yyyy-MM-dd")," ",t?.start?$(t.start,"HH:mm"):" ".repeat(5)," ",t?.duration?${t.duration/60}.padStart(4,"0"):" ".repeat(4)," ",o?.start?$(o?.start,"HH:mm:ss"):" ".repeat(8)," ",o?.end?$(o?.end,"HH:mm:ss"):" ".repeat(8),"",A].join("");function*aE(A){for(let e of Ot(A))it(e)||(yield e)}function*Ot(A){for(let e=0;e<A.length;e++){let t=A[e],o=it(t)?t:t.text,g=Se(e,A),r=VA(o);if(!r){yield o;continue}yield{...r,lines:A.slice(e+1,e+1+g).map(n=>it(n)?n:n.text)},e+=g}}var lM=5*60,$n=async()=>{let A=wA().position.line,e=VA(kA(A)??""),t=e?.base??new Date,o={start:e?.plan?.start?cr(e.plan.start,lM+(e.plan.duration??0)):void 0,duration:e?.plan?.duration};await Rn(A+1,EA({title:"",base:t,plan:o,record:{}}))};var dr=async()=>{let A=wA().position.line,e=VA(kA(A)??"");if(!e)return;let{record:{start:t,end:o},...g}=e;o||await KA(A,A,EA({record:{start:t?void 0:new Date},...g}))};var Bo=async()=>{let A=wA().position.line,e=VA(kA(A)??"");if(!e)return;let{record:{start:t,end:o},...g}=e;t&&await KA(A,A,EA({record:{start:t,end:o?void 0:new Date},...g}))};var AB=async()=>{let A=wA().position.line,e=VA(kA(A)??"");if(!e)return;let{record:{start:t,end:o},...g}=e;if(t){if(o)return;await Bo();return}if(o)return;let r;for(let{text:Q}of Ge().slice(0,(A??0)+1).reverse()){let{record:B}=VA(Q)??{};if(B?.end){r=B.end;break}}let n=new Date;await KA(A,A,EA({record:{start:r??n,end:n},...g}))};var Ft=()=>{let{selectionRange:{start:A,end:e},selectedText:t,position:o}=wA();return t===""?[o.line,o.line]:A.line>e.line?[e.line,A.line]:[A.line,e.line]};var eB=(A,e=7)=>new Date((A+2592e3*((e+1)**1.5-1)/5221.154823442138)*1e3);var tB=(A,e)=>{let t,o,g,r,n=null;if(n=A.match(/^(.*?)(s|e):([^\s]+)\s+d:(\d+)/))[,o,r,g,t]=n;else if(n=A.match(/^(.*?)d:(\d+)\s+(s|e):([^\s]+)/))[,o,t,r,g]=n;else if(n=A.match(/^(.*?)(s|e):([^\s]+)/))[,o,r,g]=n;else return(n=A.match(/^(.*?)d:(\d+)/))?([,o,t]=n,{name:o.trimEnd(),duration:parseInt(t)*60}):void 0;for(let{test:Q,parse:B}of DM){let C=g.match(Q);if(!C)continue;let i=B(C),I=i.isDuration?Fs(e,i):QE(e,i);return r==="s"?{name:o.trimEnd(),start:I,...t!==void 0?{duration:parseInt(t)*60}:{}}:{name:o.trimEnd(),start:eB(e.getTime()/1e3,(I.getTime()-e.getTime())/(24*60*60*1e3)),...t!==void 0?{duration:parseInt(t)*60}:{}}}},DM=[{test:/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})$/i,parse:A=>({isDuration:!1,year:parseInt(A[1]),month:parseInt(A[2])-1,date:parseInt(A[3]),hours:parseInt(A[4]),minutes:parseInt(A[5])})},{test:/(\d{4})-(\d{2})-(\d{2})T(\d{2})$/i,parse:A=>({isDuration:!1,year:parseInt(A[1]),month:parseInt(A[2])-1,date:parseInt(A[3]),hours:parseInt(A[4])})},{test:/(\d{4})-(\d{2})-(\d{2})T?$/i,parse:A=>({isDuration:!1,year:parseInt(A[1]),month:parseInt(A[2])-1,date:parseInt(A[3])})},{test:/(\d{2})-(\d{2})T(\d{2}):(\d{2})$/i,parse:A=>({isDuration:!1,month:parseInt(A[1])-1,date:parseInt(A[2]),hours:parseInt(A[3]),minutes:parseInt(A[4])})},{test:/(\d{2})-(\d{2})T(\d{2})$/i,parse:A=>({isDuration:!1,month:parseInt(A[1])-1,date:parseInt(A[2]),hours:parseInt(A[3])})},{test:/(\d{2})-(\d{2})T?$/i,parse:A=>({isDuration:!1,month:parseInt(A[1])-1,date:parseInt(A[2])})},{test:/(\d{2})T(\d{2}):(\d{2})$/i,parse:A=>({isDuration:!1,date:parseInt(A[1]),hours:parseInt(A[2]),minutes:parseInt(A[3])})},{test:/(\d{2})T(\d{2})$/i,parse:A=>({isDuration:!1,date:parseInt(A[1]),hours:parseInt(A[2])})},{test:/T?(\d{2}):(\d{2})$/i,parse:A=>({isDuration:!1,hours:parseInt(A[1]),minutes:parseInt(A[2])})},{test:/T?(\d{2})$/i,parse:A=>({isDuration:!1,hours:parseInt(A[1])})},{test:/P(\d+)Y(\d+)M(\d+)DT(\d+)H(\d+)M$/i,parse:A=>({isDuration:!0,year:parseInt(A[1]),month:parseInt(A[2])-1,days:parseInt(A[3]),hours:parseInt(A[4]),minutes:parseInt(A[5])})},{test:/P(\d+)Y(\d+)M(\d+)DT(\d+)H$/i,parse:A=>({isDuration:!0,year:parseInt(A[1]),month:parseInt(A[2])-1,days:parseInt(A[3]),hours:parseInt(A[4])})},{test:/P(\d+)Y(\d+)M(\d+)D$/i,parse:A=>({isDuration:!0,year:parseInt(A[1]),month:parseInt(A[2])-1,days:parseInt(A[3])})},{test:/P(\d+)M(\d+)DT(\d+)H(\d+)M$/i,parse:A=>({isDuration:!0,month:parseInt(A[1])-1,days:parseInt(A[2]),hours:parseInt(A[3]),minutes:parseInt(A[4])})},{test:/P(\d+)M(\d+)DT(\d+)H$/i,parse:A=>({isDuration:!0,month:parseInt(A[1])-1,days:parseInt(A[2]),hours:parseInt(A[3])})},{test:/P(\d+)M(\d+)D$/i,parse:A=>({isDuration:!0,month:parseInt(A[1])-1,days:parseInt(A[2])})},{test:/P(\d+)DT(\d+)H(\d+)M$/i,parse:A=>({isDuration:!0,days:parseInt(A[1]),hours:parseInt(A[2]),minutes:parseInt(A[3])})},{test:/P(\d+)DT(\d+)H$/i,parse:A=>({isDuration:!0,days:parseInt(A[1]),hours:parseInt(A[2])})},{test:/P(\d+)D$/i,parse:A=>({isDuration:!0,days:parseInt(A[1])})},{test:/PT?(\d+)H(\d+)M$/i,parse:A=>({isDuration:!0,hours:parseInt(A[1]),minutes:parseInt(A[2])})},{test:/PT?(\d+)H$/i,parse:A=>({isDuration:!0,hours:parseInt(A[1])})},{test:/PT?(\d+)M$/i,parse:A=>({isDuration:!0,minutes:parseInt(A[1])})},{test:/P(\d+)W$/i,parse:A=>({isDuration:!0,weeks:parseInt(A[1])})}];var $o=async()=>{let A=new Date,[e,t]=Ft(),o=Ge().slice(e,t+1).map(r=>r.text),g=o.flatMap(r=>{let n=r.trimEnd();if(n==="")return r;let{name:Q,start:B,duration:C}=tB(n,A)??{};return!Q||!B&&!C?r:[EA({title:Q.trim(),base:B??A,plan:{start:B,duration:C},record:{}})]}).join( );o.join(
)!==g&&await KA(e,t,g)};var ur=async(A,e,t)=>{let o=[];for(let g=A;g<=e;g++){let r=kA(g)??"",n=VA(r);if(!n){o.push(r);continue}o.push(EA(t(n,g)))}await KA(A,e,o.join(
))};var oB=async(A=1)=>{let[e,t]=Ft();await ur(e,t,o=>(o.base=PA(o.base,A),o))};var gB=async()=>{let[A,e]=Ft(),t=new Date;await ur(A,e,o=>(Qe(o.base,t)||(o.base=t),o))};var pM="日刊記録sheet",wM=/日刊記録sheet (\d{4})-(\d{2})-(\d{2})/,Ag=["[** 00:00 - 03:00] 未明","[** 03:00 - 06:00] 明け方","[** 06:00 - 09:00] 朝","[** 09:00 - 12:00] 昼前","[** 12:00 - 15:00] 昼過ぎ","[** 15:00 - 18:00] 夕方","[** 18:00 - 21:00] 夜のはじめ頃","[** 21:00 - 00:00] 夜遅く"];var rB=A=>{let e=A.match(wM);if(!e)return;let[,t,o,g]=e,r=new Date(parseInt(t),parseInt(o)-1,parseInt(g));return Qo(r)?r:void 0},eg=A=>$(A,'${pM}' yyyy-MM-dd),Mr=A=>{let e=rB(A[0]);if(!e)return A;let t=mM(e),o=[],g=[];for(let Q of Ot(A.slice(1))){if(typeof Q=="string"){if(Ag.includes(Q)||t!==""&&t===Q)continue;g.push(Q);continue}o.push(Q)}let r=o.sort((Q,B)=>Us(no(Q),no(B)));if(r.length===0)return[A[0],t,...Ag,...g];let n=[0,0,0,0,0,0,0,0];for(let Q=1;Q<Ag.length;Q++){let B=xs(new Date(e.getFullYear(),e.getMonth(),e.getDate()),3*Q),C=r.findIndex(E=>jt(no(E),B));if(C<0){n[Q]=-1;continue}if(C===0)continue;let i=r[C-1],I=no(i),s=EE(i);n[Q]=(s.getTime()-I.getTime())/2<B.getTime()-I.getTime()?C:C-1}return[A[0],t,...r.flatMap((Q,B)=>[...n.flatMap((C,i)=>C===B?[Ag[i]]:[]),EA(Q),...Q.lines]),...n.flatMap((Q,B)=>Q===-1?[Ag[B]]:[]),...g]},mM=A=>yesterday: ${eg(He(A,1))};var QB=async(A,e)=>{let t=()=>{},o=setTimeout(()=>{let{render:g,dispose:r}=sA();t=r,g({type:"spinner"},{type:"text",text:"formatting..."})},500);await rA(A,e,g=>Mr(g.map(r=>r.text))),clearTimeout(o),t()};async function*nB(A,e,t){let o=[...e],g=[];for(;o.length>0;){let r=o.shift();if(!r)break;let n=r.base,Q=[r];for(let B=0;B<o.length;B++)Qe(o[B].base,n)&&(Q.push(...o.splice(B,1)),B--);g.push((async()=>(await rA(A,eg(n),B=>Mr([...B.map(C=>C.text),...Q.flatMap(C=>[EA(C),...C.lines??[]])]),t),{date:n,size:Q.length}))())}yield*sE(g)}var tg=async({from:{project:A,title:e},to:t})=>{let o=await $A(A,e);if(!o.ok)throw o.value;let g=rB(e),{lines:r}=o.value,n=[];for(let i of aE(r))g&&Qe(i.base,g)||n.push(i);let{render:Q,dispose:B}=sA();Q({type:"spinner"},{type:"text",text:copying ${n.length} tasks...});let C=await WA();try{let i=0,I=!1;for await(let s of nB(t,n,{socket:C})){if(s.state!=="fulfilled"){console.error(s.reason),I=!0;continue}i+=s.value.size,Q({type:"spinner"},{type:"text",text:copying ${n.length-i} tasks...})}if(I){Q({type:"exclamation-triangle"},{type:"text",text:"Some tasks failed to be written"});return}Q({type:"spinner"},{type:"text",text:Copied. removing ${n.length} original tasks...}),await rA(A,e,s=>{let E=[];for(let c of Ot(s)){if(it(c)){E.push(c);continue}g&&Qe(c.base,g)&&E.push(EA(c),...c.lines)}return E},{socket:C}),Q({type:"check-circle"},{type:"text",text:"Moved"})}finally{await LA(C),await CA(1e3),B()}};var he=A=>${A}.padStart(2,"0");var Jt=A=>"hours"in A,Ee=(A,e)=>A.year!==e.year?A.year<e.year:A.month!==e.month?A.month<e.month:A.date!==e.date?A.date<e.date:"hours"in e?"hours"in A?A.hours*60+A.minutes<e.hours*60+e.minutes:0<e.hours*60+e.minutes:!1,Ye=A=>${${A.year}.padStart(4,"0")}-${he(A.month)}-${he(A.date)}${"hours"in A?T${he(A.hours)}:${he(A.minutes)}:""},eA=A=>{let e=Ye(A);return new Date(e.includes("T")?e:${e}T00:00)},qA=A=>({year:A.getFullYear(),month:A.getMonth()+1,date:A.getDate(),hours:A.getHours(),minutes:A.getMinutes()});var cE=A=>{switch(A.toLowerCase()){case"y":return"yearly";case"m":return"monthly";case"w":return"weekly";case"d":return"daily";default:return}};var lE=A=>{switch(A){case"+":return"todo";case"-":return"note";case"!":return"deadline";case".":return"done";case"~":return"up-down";default:return}},DE=A=>{switch(A){case"todo":return"+";case"note":return"-";case"deadline":return"!";case"done":return".";case"up-down":return"~"}};var It=A=>{let e=A.match(/(?:([\+\-!~.])(\d+)?)?@(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2}))?(?:\/(\d{2}):(\d{2})|\/(?:(?:(?:(\d{4})-)?(\d{2})-)?(\d{2})(?:T(\d{2}):(\d{2}))?)|D(\d+))?(?:R([YMWD])?(\d+))?(?:@(?:(\d{2}):(\d{2})|(?:(?:(\d{4})-)?(\d{2})-)?(\d{2})(?:T(\d{2}):(\d{2}))?)?(?:\/(\d{2}):(\d{2})|\/(?:(?:(?:(\d{4})-)?(\d{2})-)?(\d{2})(?:T(\d{2}):(\d{2}))?)|D(\d+))?)?/i);if(!e)return;let[t,o,g,r,n,Q,B,C,i,I,s,E,c,l,D,m,N,M,p,h,d,b,Y,R,y,u,f,G,j,F,Z,O,S]=e,U=${A.slice(0,e.index).trim()}${A.slice((e.index??0)+t.length).trim()},v=pE(r,n,Q,B,C);if(!Qo(eA(v)))return{ok:!1,value:{name:"InvalidDateError",message:The reference point of the task "${Ye(v)}" is an invalid date.}};let H=wE(v,s,E,c,i||l,I||D,m);if(H!==void 0){if(JA(H)&&isNaN(H)||!JA(H)&&!Qo(eA(H)))return{ok:!1,value:{name:"InvalidDateError",message:The estimated end of the task${JA(H)?"": "${Ye(H)}"} is an invalid date.}};if(JA(H)&&H<0||!JA(H)&&Ee(H,v))return{ok:!1,value:{name:"TaskRangeError",message:The reference point of an task cannot be after its estimated end. reference point:${Ye(v)}
estimated end:${Ye(JA(H)?qA(Ct(eA(v),H)):H)}}}}let _=/^[\uFE00-\uFE0F]*[✅❌]/.test(A)?"done":lE(o),K=_?{status:_,refDate:v}:void 0;K&&g&&(K.speed=parseInt(g));let FA=pE(d||r,b||n,Y||Q,p||R||B,h||y||C);if(!Qo(eA(FA)))return{ok:!1,value:{name:"InvalidDateError",message:The start of the task/event "${Ye(FA)}" is an invalid date.}};let BA=wE(FA,G||s,j||E,F||c,u||Z||i||l,f||O||I||D,S||m),J=Jt(FA)&&JA(BA)?{start:FA,duration:BA}:void 0;if(J){let vA={name:U,executed:J,generated:!1,raw:A};return K&&(vA.freshness=K),(N||M)&&(vA.recurrence={frequency:cE(N??"D")??"daily",count:M?parseInt(M):1}),{ok:!0,value:vA}}if(!K)return{ok:!1,value:{name:"InvalidDateError",message:"Task requires freshness to be spec"}};let gA={name:U,freshness:K,generated:!1,raw:A};return H&&(gA.estimated=H),{ok:!0,value:J?{...gA,executed:J}:gA}},be=A=>!("executed"in A),Co=A=>"recurrence"in A,mE=A=>!("executed"in A||"freshness"in A&&Jt(A.freshness.refDate)&&A.estimated&&(JA(A.estimated)||Jt(A.estimated))),og=A=>"executed"in A?A.executed.duration:JA(A.estimated)?A.estimated:void 0,je=A=>be(A)?A.freshness.refDate:A.executed.start,hE=A=>{if(!be(A)){let t=eA(A.executed.start);return qA(Ct(t,A.executed.duration))}if(JA(A.estimated)&&Jt(A.freshness.refDate)){let t=eA(A.freshness.refDate);return qA(Ct(t,A.estimated))}let e=eA(JA(A.estimated)?A.freshness.refDate:A.estimated??A.freshness.refDate);return e.setHours(0),e.setMinutes(0),qA(PA(e,1))},hM=A=>{let e=A.freshness?${DE(A.freshness.status)}${A.freshness.speed??""}:"",t=${Ye(je(A))},o=og(A);return${e}@${t}${o===void 0?"":D${o}}${A.name}},fr=(A,e)=>{let t=qA(e),{recurrence:o,executed:g}=A;switch(o.frequency){case"yearly":{if(Math.abs(t.year-g.start.year)%(o.count??1)!==0||g.start.month!==t.month||g.start.date!==t.date)return;break}case"monthly":{if(Xs(eA(t),eA(g.start))%(o.count??1)!==0)return;break}case"weekly":case"daily":{let Q=o.frequency==="weekly"?7:1;if(Hs(eA(t),eA(g.start))%((o.count??1)*Q)!==0)return;break}}let r={...g.start};r.year=t.year,r.month=t.month,r.date=t.date;let n={name:A.name,executed:{start:r,duration:g.duration},generated:!0,raw:A.raw};return A.freshness&&(n.freshness=A.freshness),n},Nr=A=>A.freshness?A.generated?hM(A):A.raw:A.generated?void 0:A.raw,pE=(A,e,t,o,g)=>{let r=parseInt(A),n=parseInt(e),Q=parseInt(t),B=o?parseInt(o):void 0,C=g?parseInt(g):void 0;return B!==void 0&&C!==void 0?{year:r,month:n,date:Q,hours:B,minutes:C}:{year:r,month:n,date:Q}},wE=(A,e,t,o,g,r,n)=>{if(!e&&!t&&!o&&!g&&!r&&!n)return;if(n)return parseInt(n);let Q=e?parseInt(e):A.year,B=t?parseInt(t):A.month,C=o?parseInt(o):A.date,i=g?parseInt(g):void 0,I=r?parseInt(r):void 0,s=i!==void 0&&I!==void 0?{year:Q,month:B,date:C,hours:i,minutes:I}:{year:Q,month:B,date:C};return!Jt(A)||!Jt(s)?s:Math.round((eA(s).getTime()-eA(A).getTime())/(60*1e3))};var BB=(A,e)=>{if(!A.generated&&Co(A)){let r=fr(A,e);return r?BB(r,e):void 0}let t=eA(be(A)?A.freshness.refDate:A.executed.start),o=og(A),g=Nr(A);return{title:g!==void 0?${g}:A.name,base:t,plan:{start:mE(A)?void 0:t,duration:o!==void 0?o*60:void 0},record:{}}};var CB={あさごはん:"#log-breakfast",ひるごはん:"#log-lunch",よるごはん:"#log-dinner"},xt=(A,{title:e,projectTo:t,mode:o})=>{let[g,...r]=A.split( ),n=VA(g);if(!n)return;if(r.length===0)return{text:A,pages:[]};let{title:Q,base:B,record:C,...i}=n,I=dM(Q,B,C),s=EA({title:${I},base:B,record:C,...i}),E=Math.min(...r.map(l=>zA(l))),c=[.../[\[\]]/.test(Q)&&Q!==${I}?[Q]:[],...e in CB?[...r.map(l=>l.slice(E)),"",CB[e],"#log-eatenfood"]:[...r.map(l=> ${l.slice(E)}),""]];return{text:s,pages:[{project:t,title:I,lines:dE(e,c,[C.start??B]),mode:o}]}};xt.hookName="task-hook";var dM=(A,e,t)=>{let o=$(t.start??e,"yyyy-MM-dd");if(A in CB)return${o} ${A};if(It(A.slice(1,-1)))return A.slice(1,-1);let g=A.replace(/[\[\]]/g,"").trim();return${g}${g.endsWith(o)?"": ${o}}},Rt=(A,{title:e,projectTo:t,mode:o,lines:g})=>{let[r,...n]=A.split( );if(n.length===0)return;let Q=r.replace(/[\[\]]/g,"").trim(),B=Math.min(...n.map(I=>zA(I))),C=t.startsWith("takker")?Os([new Date,...g.map(({updated:I})=>new Date(I*1e3))]).sort((I,s)=>s.getTime()-I.getTime()):[],i=["",.../[\[\]]/.test(r)?[r.trimStart()]:[],...n.map(I=>I.slice(B))];return{text:${" ".repeat(zA(r))}${Q},pages:[{project:t,title:Q,lines:dE(e,i,C),mode:o}]}};Rt.hookName="new-page-hook";var Zt=(A,{projectTo:e,mode:t})=>{if(A.includes( )||!/\[[^\]]+\]/.test(A))return;let[o,g]=A.match(/^(\s*)(.*)$/)?.slice?.(1)??["",A],r=[...g.matchAll(/\[([^\]])\]/g)].map(Q=>P(Q[1])),n=g.replaceAll("[","").replaceAll("]","");return{text:${o}${n},pages:[{project:e,title:n,lines:(Q,{links:B})=>{let C=B.map(i=>P(i));if(!r.every(i=>C.includes(i)))return[...Q.map(i=>i.text),g]},mode:t}]}};Zt.hookName="splitted-link-hook";var dE=(A,e,t)=>(o,{links:g})=>{let r=g.map(I=>P(I)),n=r.includes(P(A))?[]:[from ${A}],Q=t.flatMap(I=>{let s=$(I,"yyyy-MM-dd");if(r.includes(s))return[];let E=$(I,"HH:mm:ss");return[#${s} ${E}]}),B=o.map(I=>I.text),C=B.findIndex(I=>/^#\d{4}-\d{2}-\d{2}/.test(I)),i=C<0?B.length:C;return[...B.slice(0,i),...n,...e,"",...Q,...B.slice(i)]};var uE=A=>A.preventDefault(),ME=A=>A.stopPropagation(),fE={"<A-a><A-c>":async A=>{uE(A),ME(A);let[e,t]=uM(),o=Ge().slice(e,t+1).map(g=>{let r=g.text,n=g.text.match(/\[([^\]]+)\]/)?.[1];if(!n)return r;let Q=It(n);if(!Q||!Q.ok)return r;let B=Q.value;if(B.freshness?.status==="done")return r;let C=BB(B,new Date);return C?(C.title=${n},EA(C)):r}).join( );await KA(e,t,o),await $o()},"<A-a><A-m>":A=>{scrapbox.Layout==="page"&&(uE(A),ME(A),tg({from:{project:scrapbox.Project.name,title:scrapbox.Page.title},to:"takker-memex"}))}},uM=()=>{let{selectionRange:{start:A,end:e},selectedText:t,position:o}=wA();return t===""?[o.line,o.line]:A.line>e.line?[e.line,A.line]:[A.line,e.line]};var Ut=A=>A.preventDefault(),Lt=A=>A.stopPropagation(),iB={"<A-a><A-a>":A=>{Ut(A),Lt(A),$n()},"<A-a><A-s>":A=>{Ut(A),Lt(A),dr()},"<A-a><A-e>":A=>{Ut(A),Lt(A),Bo()},"<A-a><A-0>":A=>{Ut(A),Lt(A),AB()},"<A-a><A-1>":A=>{Ut(A),Lt(A),oB(1)},"<A-a><A-t>":A=>{Ut(A),Lt(A),gB()},"<A-a><A-S>":A=>{scrapbox.Layout==="page"&&(Ut(A),Lt(A),QB(scrapbox.Project.name,scrapbox.Page.title))}};var bA=A=>A.preventDefault(),jA=A=>A.stopPropagation(),Tt=(A,e)=>{let t=HI()?.getElementsByClassName?.("button");if(!t)return;let o=[...t].find(g=>e instanceof RegExp?e.test(g.textContent??""):g.textContent===e);o instanceof HTMLDivElement&&A.target===document.activeElement&&(bA(A),jA(A),o.click())},MM={"-":A=>Tt(A,""),"]":A=>Tt(A,""),c:A=>Tt(A,"Copy plain"),$:A=>Tt(A,""),"{":A=>Tt(A,/{{c\d+}}/),"}":A=>Tt(A,"reset cloze"),n:A=>Tt(A,"make note")},fM={"<C-]>":A=>{let{position:{line:e,char:t}}=wA(),o=Ko(e,t)?.closest("a.page-link")??Yt(e)?.querySelector?.("a.page-link");o instanceof HTMLAnchorElement&&(bA(A),jA(A),o.click())},"<C-o>":A=>{bA(A),jA(A),history.back()}},NM={"<C-home>":A=>{bA(A),jA(A),_I()},"<C-end>":A=>{bA(A),jA(A),$I()}},NE=[xt,Rt,Zt],yM={"<C-X>":A=>{let e=window.prompt("Create a new page at",scrapbox.Project.name);e&&(bA(A),jA(A),ve({project:e,mode:"self",hooks:NE})?.())},"<C-D>":A=>{let e=window.prompt("Create a new page at",scrapbox.Project.name);e&&(bA(A),jA(A),ve({project:e,mode:"noopen",hooks:NE})?.())},"<C-h>":A=>{bA(A),jA(A),er()},"<C-j>":A=>{bA(A),jA(A),or()},"<C-k>":A=>{bA(A),jA(A),tr()},"<C-l>":A=>{bA(A),jA(A),Ar()},"<A-h>":A=>{bA(A),jA(A),rr()},"<A-j>":A=>{bA(A),jA(A),nr()},"<A-k>":A=>{bA(A),jA(A),Qr()},"<A-l>":A=>{bA(A),jA(A),gr()}};scrapbox.TimeStamp.removeAllFormats();var GM={"<A-t><A-t>":A=>{bA(A),jA(A),YA($(new Date,"#yyyy-MM-dd HH:mm:ss "))},"<A-t><A-j>":A=>{bA(A),jA(A),YA($(new Date,"yyyy-MM-dd HH:mm:ss "))},"<A-t><A-k>":A=>{bA(A),jA(A),YA($(new Date,"HH:mm:ss "))},"<A-t><A-l>":A=>{bA(A),jA(A),YA($(new Date,"yyyy-MM-dd"))}},yE={...MM,...fM,...NM,...yM,...GM,...fE};var{render:kM}=sA(),IB,YM=A=>{IB!==void 0&&cancelAnimationFrame(IB),IB=requestAnimationFrame(()=>kM({type:"text",text:A}))},sB=new Er({addEventListener:rs,removeEventListener:Un},{onSequenceUpdate:YM}),GE=sB.bind({...yE,...scrapbox.Project.name==="takker-memex"?iB:{}});GE.size>0&&alert([...GE.entries()].map(([A,e])=>${A}:
${e.map(t=>- ${t}).join(`
)}).join(`
));var kE=async()=>{let A=localStorage.getItem("projectsLastAccessed");if(!A)return[];try{let e=JSON.parse(A),t=Object.entries(e).sort(([,r],[,n])=>n-r).map(([r])=>r),o=await eo([]);if(!o.ok)return t;let g=o.value.projects.map(r=>r.id);return t.filter(r=>!g.includes(r))}catch(e){if(!(e instanceof SyntaxError))throw e;return[]}};var bM;(A=>{})(bM||={});var jM="0.13.3",YE,bE=async(A=jM)=>{let e=https://cdnjs.cloudflare.com/ajax/libs/KaTeX/${A}/katex.min.js;if(document.querySelector(scriptsrc="${e}"))return window.katex!==void 0?Promise.resolve(window.katex):await new Promise(o=>{let g=setInterval(()=>{window.katex!==void 0&&(clearInterval(g),o(window.katex))},500)});let t=document.createElement("script");return t.src=e,YE??=new Promise((o,g)=>{t.onload=()=>o(window.katex),t.onerror=r=>g(r),document.head.append(t)}),YE};var gg=(A,e={})=>{let t=yA(null),[o,g]=L(A),[r,n]=L("");return X(()=>{(async()=>{let{render:Q}=await bE();if(t.current)try{Q(o,t.current,e),n("")}catch(B){if(B instanceof Error&&B.name==="ParseError")n(B.message.slice(19));else throw B}})()},[o]),{ref:t,error:r,setFormula:g}};var jE=A=>{let e=[],t=new Set,o=g=>{t.delete(g);let r=e.pop();if(!r)return;let n=r[0]().finally(()=>o(n)).then(Q=>r[1](Q)).catch(Q=>r[2](Q));t.add(n)};return g=>{if(t.size<A){let r=g().finally(()=>o(r));return t.add(r),r}return new Promise((r,n)=>{e.push([g,r,n])})}};var OM="0.6.5",JE=ScrapBubble-${OM},OE=await globalThis.caches.open(JE);(async()=>{for(let A of await globalThis.caches.keys())A.startsWith("ScrapBubble-")&&A!==JE&&(await globalThis.caches.delete(A),console.log(ScrapBubble deleted old cache :"${A}"))})();var FE=jE(3);async function*yr(A,e){let t=((e?.saveFailedResponse?OE.match(A):void 0)??ro(A,e)).then(n=>["cache",n]);{let n=CA(1e3).then(()=>"timeout"),Q=await Promise.race([t,n]);if(Q!=="timeout"){Q[1]&&(yield["cache",Q[1]]);let B=await FE(()=>fetch(A));!B.ok&&e?.saveFailedResponse&&await OE.put(A,B.clone()),yield["network",B]}}let o=FE(()=>fetch(A)).then(n=>["network",n]),[g,r]=await Promise.race([t,o]);if(g==="network"){yield[g,r];return}r&&(yield[g,r]),yield await o}var xE=(A,e)=>new Date(A.headers.get("Date")??0).getTime()/1e3+e<new Date().getTime()/1e3;var Gr=()=>{let A=new Map;return{dispatch:(e,t)=>{let o=A.get(e);if(o)for(let g of o)g(t)},on:(e,t)=>{let o=A.get(e)??new Set;o.add(t),A.set(e,o)},off:(e,t)=>{let o=A.get(e);o&&o.delete(t)}}};var ne=!1,RE=A=>{ne=typeof A=="boolean"?A:new Set(A)},st=A=>Object.fromEntries([...Object.entries(console)].map(([e,t])=>{if(typeof t!="function")return[e,t];switch(e){case"warn":case"error":return[e,(...o)=>t(%c${A},"color: gray",...o)];case"log":case"info":case"debug":return[e,(...o)=>{ne!==!0&&(!ne||!ne.has(A))||t(%c${A},"color: gray",...o)}];case"assert":return[e,(o,...g)=>{ne!==!0&&(!ne||!ne.has(A))||t(o,%c${A},"color: gray",...g)}];case"time":case"timeEnd":return[e,o=>{ne!==!0&&(!ne||!ne.has(A))||t(${A} ${o})}];default:return[e,(...o)=>{if(!(ne!==!0&&(!ne||!ne.has(A))))return t(...o)}]}}));var EB=Gr(),kr=new Map,FM=st("ScrapBubble:useProject.ts"),ZE=A=>{let[e,t]=L();return X(()=>{EB.on(A,t);let o=kr.get(A);return o?t(o.loading?void 0:o.value):(kr.set(A,{loading:!0}),t(void 0),(async()=>{try{let g=me.toRequest(A);for await(let[,r]of yr(g)){let n=await me.fromResponse(r);kr.set(A,{loading:!1,value:n}),EB.dispatch(A,n);break}}catch(g){FM.error(g),kr.delete(A)}})()),()=>EB.off(A,t)},[A]),e};var JM=["default-light","default-dark","default-minimal"],xM=["paper-light","paper-dark-dark","paper-dark"],UE=["blue","purple","green","orange","red"],RM=["hacker1","hacker2"],LE=["winter","spring","summer","automn"],TE=["tropical"],SE=["kyoto","newyork","paris"],vE=["mred","lgreen"],Mz=["default-light","default-minimal","paper-light",...UE,...LE,...TE,...SE,...vE];var ZM=[...JM,...xM,...UE,...RM,...LE,...TE,...SE,...vE];function HE(A){return ZM.includes(A)}var WE="default-light",St=A=>{let e=ZE(A);return x(()=>{if(!e||!e.ok)return WE;let t=e.value.theme;return HE(t)?t:WE},[e])};var Io=(A,e)=>new Promise(t=>{let o=!1,g=()=>{o=!0,t(!1)};A.addEventListener("click",g),A.addEventListener("pointerleave",g),setTimeout(()=>{o||t(!0),A.removeEventListener("click",g),A.removeEventListener("pointerleave",g),t(!1)},e)});var so=A=>{let{top:e,right:t,left:o,bottom:g}=A.getBoundingClientRect(),r=document.body.getBoundingClientRect(),n=(o-r.left)/r.width>.5;return{top:Math.round(g-r.top),bottom:Math.round(globalThis.innerHeight-globalThis.scrollY-e),...n?{right:Math.round(r.right-t)}:{left:Math.round(o-r.left)},maxWidth:n?t-10:document.documentElement.clientWidth-o-10}};var XE=({project:A,title:e,descriptions:t,thumbnail:o,linkTo:g,bubble:r,delay:n,prefetch:Q})=>{let B=x(()=>o?[]:hA(t.join( ),{hasTitle:!1}),[o,t]),C=St(A),i=k(async({currentTarget:s})=>{Q(A,e),await Io(s,n)&&r({project:A,title:e,linkTo:g,type:"link",position:so(s)})},[A,e,n,g?.project,g?.titleLc]),I=x(()=>g?()=>{oo({type:"page",from:{project:g.project??A,title:g.titleLc},to:{project:A,title:e}})}:()=>{},[A,e,g?.project,g?.titleLc]);return a("a",{className:"related-page-card page-link",type:"link","data-theme":C,href:/${A}/${V(e)},rel:A===scrapbox.Project.name?"route":"noopner noreferrer",target:A!==scrapbox.Project.name?"_blank":"",onPointerEnter:i,onClick:I},a("div",{class:"hover"}),a("div",{class:"content"},a("div",{class:"header"},a("div",{class:"title"},e)),o?a("div",{class:"thumbnail"},a("img",{src:o})):a("div",{class:"description"},B.flatMap((s,E)=>s.type==="line"?[a("p",{key:E},s.nodes.map(c=>a(zE,{node:c,project:A})))]:[]))))},zE=({node:A,project:e})=>{switch(A.type){case"code":return a("code",null,A.text);case"formula":return a(UM,{node:A});case"commandLine":return a("code",null,A.symbol," $",A.text);case"helpfeel":return a("code",null,"? ",A.text);case"quote":case"strong":case"decoration":return a(W,null,A.nodes.map(t=>a(zE,{node:t,project:e})));case"icon":case"strongIcon":return a(LM,{node:A,project:e});case"hashTag":return a(TM,{node:A});case"link":return a(SM,{node:A});case"plain":case"blank":return a(W,null,A.text);default:return a(W,null)}},UM=({node:{formula:A}})=>{let{ref:e,error:t,setFormula:o}=gg("");return o(A),a("span",{className:formula ${t?" error":""}},t?a("code",null,A):a("span",{className:"katex-display",ref:e}))},LM=({node:{pathType:A,path:e},project:t})=>{let[o,g]=A==="relative"?[t,e]:e.match(/\/([\w\-]+)\/(.+)$/)?.slice?.(1)??[t,e];return a("img",{class:"icon",src:/api/pages/${o}/${V(g)}/icon})},TM=({node:{href:A}})=>a("span",{class:"page-link"},"#",A),SM=({node:{pathType:A,href:e,content:t}})=>A!=="absolute"?a("span",{class:"page-link"},e):a("span",{class:"link"},t||e);var oA=(A,e)=>/${A}/${P(e)},Yr=A=>{let e=A.match("/([^/]+)/(.+)");if(!e)throw SyntaxError("${A}" cannnot match "/(^/+)/(.+)");return{project:e[1],titleLc:e[2]}};var $E=Symbol.for("immer-nothing"),KE=Symbol.for("immer-draftable"),tA=Symbol.for("immer-state");function ae(A,...e){throw new Error(Immer minified error nr: ${A}. Full error at: https://bit.ly/3cXEKWf)}var Eo=Object.getPrototypeOf;function ao(A){return!!A&&!!A[tA]}function Xe(A){return A?Aa(A)||Array.isArray(A)||!!A[KE]||!!A.constructor?.[KE]||Jr(A)||xr(A):!1}var vM=Object.prototype.constructor.toString();function Aa(A){if(!A||typeof A!="object")return!1;let e=Eo(A);if(e===null)return!0;let t=Object.hasOwnProperty.call(e,"constructor")&&e.constructor;return t===Object?!0:typeof t=="function"&&Function.toString.call(t)===vM}function rg(A,e){Fr(A)===0?Reflect.ownKeys(A).forEach(t=>{e(t,A[t],A)}):A.forEach((t,o)=>e(o,t,A))}function Fr(A){let e=A[tA];return e?e.type_:Array.isArray(A)?1:Jr(A)?2:xr(A)?3:0}function lB(A,e){return Fr(A)===2?A.has(e):Object.prototype.hasOwnProperty.call(A,e)}function ea(A,e,t){let o=Fr(A);o===2?A.set(e,t):o===3?A.add(t):A[e]=t}function HM(A,e){return A===e?A!==0||1/A===1/e:A!==A&&e!==e}function Jr(A){return A instanceof Map}function xr(A){return A instanceof Set}function RA(A){return A.copy_||A.base_}function DB(A,e){if(Jr(A))return new Map(A);if(xr(A))return new Set(A);if(Array.isArray(A))return Array.prototype.slice.call(A);let t=Aa(A);if(e===!0||e==="class_only"&&!t){let o=Object.getOwnPropertyDescriptors(A);delete o[tA];let g=Reflect.ownKeys(o);for(let r=0;r<g.length;r++){let n=g[r],Q=o[n];Q.writable===!1&&(Q.writable=!0,Q.configurable=!0),(Q.get||Q.set)&&(o[n]={configurable:!0,writable:!0,enumerable:Q.enumerable,value:A[n]})}return Object.create(Eo(A),o)}else{let o=Eo(A);if(o!==null&&t)return{...A};let g=Object.create(o);return Object.assign(g,A)}}function hB(A,e=!1){return Rr(A)||ao(A)||!Xe(A)||(Fr(A)>1&&(A.set=A.add=A.clear=A.delete=WM),Object.freeze(A),e&&Object.entries(A).forEach(([t,o])=>hB(o,!0))),A}function WM(){ae(2)}function Rr(A){return Object.isFrozen(A)}var pB={};function vt(A){let e=pB[A];return e||ae(0,A),e}function XM(A,e){pB[A]||(pB[A]=e)}var Qg;function br(){return Qg}function zM(A,e){return{drafts_:[],parent_:A,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function PE(A,e){e&&(vt("Patches"),A.patches_=[],A.inversePatches_=[],A.patchListener_=e)}function wB(A){mB(A),A.drafts_.forEach(KM),A.drafts_=null}function mB(A){A===Qg&&(Qg=A.parent_)}function VE(A){return Qg=zM(Qg,A)}function KM(A){let e=A[tA];e.type_===0||e.type_===1?e.revoke_():e.revoked_=!0}function qE(A,e){e.unfinalizedDrafts_=e.drafts_.length;let t=e.drafts_[0];return A!==void 0&&A!==t?(t[tA].modified_&&(wB(e),ae(4)),Xe(A)&&(A=jr(e,A),e.parent_||Or(e,A)),e.patches_&&vt("Patches").generateReplacementPatches_(t[tA].base_,A,e.patches_,e.inversePatches_)):A=jr(e,t,[]),wB(e),e.patches_&&e.patchListener_(e.patches_,e.inversePatches_),A!==$E?A:void 0}function jr(A,e,t){if(Rr(e))return e;let o=e[tA];if(!o)return rg(e,(g,r)=>_E(A,o,e,g,r,t)),e;if(o.scope_!==A)return e;if(!o.modified_)return Or(A,o.base_,!0),o.base_;if(!o.finalized_){o.finalized_=!0,o.scope_.unfinalizedDrafts_--;let g=o.copy_,r=g,n=!1;o.type_===3&&(r=new Set(g),g.clear(),n=!0),rg(r,(Q,B)=>_E(A,o,g,Q,B,t,n)),Or(A,g,!1),t&&A.patches_&&vt("Patches").generatePatches_(o,t,A.patches_,A.inversePatches_)}return o.copy_}function _E(A,e,t,o,g,r,n){if(ao(g)){let Q=r&&e&&e.type_!==3&&!lB(e.assigned_,o)?r.concat(o):void 0,B=jr(A,g,Q);if(ea(t,o,B),ao(B))A.canAutoFreeze_=!1;else return}else n&&t.add(g);if(Xe(g)&&!Rr(g)){if(!A.immer_.autoFreeze_&&A.unfinalizedDrafts_<1)return;jr(A,g),(!e||!e.scope_.parent_)&&typeof o!="symbol"&&Object.prototype.propertyIsEnumerable.call(t,o)&&Or(A,g)}}function Or(A,e,t=!1){!A.parent_&&A.immer_.autoFreeze_&&A.canAutoFreeze_&&hB(e,t)}function PM(A,e){let t=Array.isArray(A),o={type_:t?1:0,scope_:e?e.scope_:br(),modified_:!1,finalized_:!1,assigned_:{},parent_:e,base_:A,draft_:null,copy_:null,revoke_:null,isManual_:!1},g=o,r=dB;t&&(g=[o],r=ng);let{revoke:n,proxy:Q}=Proxy.revocable(g,r);return o.draft_=Q,o.revoke_=n,Q}var dB={get(A,e){if(e===tA)return A;let t=RA(A);if(!lB(t,e))return VM(A,t,e);let o=t[e];return A.finalized_||!Xe(o)?o:o===aB(A.base_,e)?(cB(A),A.copy_[e]=Bg(o,A)):o},has(A,e){return e in RA(A)},ownKeys(A){return Reflect.ownKeys(RA(A))},set(A,e,t){let o=ta(RA(A),e);if(o?.set)return o.set.call(A.draft_,t),!0;if(!A.modified_){let g=aB(RA(A),e),r=g?.[tA];if(r&&r.base_===t)return A.copy_[e]=t,A.assigned_[e]=!1,!0;if(HM(t,g)&&(t!==void 0||lB(A.base_,e)))return!0;cB(A),We(A)}return A.copy_[e]===t&&(t!==void 0||e in A.copy_)||Number.isNaN(t)&&Number.isNaN(A.copy_[e])||(A.copy_[e]=t,A.assigned_[e]=!0),!0},deleteProperty(A,e){return aB(A.base_,e)!==void 0||e in A.base_?(A.assigned_[e]=!1,cB(A),We(A)):delete A.assigned_[e],A.copy_&&delete A.copy_[e],!0},getOwnPropertyDescriptor(A,e){let t=RA(A),o=Reflect.getOwnPropertyDescriptor(t,e);return o&&{writable:!0,configurable:A.type_!==1||e!=="length",enumerable:o.enumerable,value:t[e]}},defineProperty(){ae(11)},getPrototypeOf(A){return Eo(A.base_)},setPrototypeOf(){ae(12)}},ng={};rg(dB,(A,e)=>{ng[A]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}});ng.deleteProperty=function(A,e){return ng.set.call(this,A,e,void 0)};ng.set=function(A,e,t){return dB.set.call(this,A[0],e,t,A[0])};function aB(A,e){let t=A[tA];return(t?RA(t):A)[e]}function VM(A,e,t){let o=ta(e,t);return o?"value"in o?o.value:o.get?.call(A.draft_):void 0}function ta(A,e){if(!(e in A))return;let t=Eo(A);for(;t;){let o=Object.getOwnPropertyDescriptor(t,e);if(o)return o;t=Eo(t)}}function We(A){A.modified_||(A.modified_=!0,A.parent_&&We(A.parent_))}function cB(A){A.copy_||(A.copy_=DB(A.base_,A.scope_.immer_.useStrictShallowCopy_))}var qM=class{constructor(A){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,t,o)=>{if(typeof e=="function"&&typeof t!="function"){let r=t;t=e;let n=this;return function(Q=r,...B){return n.produce(Q,C=>t.call(this,C,...B))}}typeof t!="function"&&ae(6),o!==void 0&&typeof o!="function"&&ae(7);let g;if(Xe(e)){let r=VE(this),n=Bg(e,void 0),Q=!0;try{g=t(n),Q=!1}finally{Q?wB(r):mB(r)}return PE(r,o),qE(g,r)}else if(!e||typeof e!="object"){if(g=t(e),g===void 0&&(g=e),g===$E&&(g=void 0),this.autoFreeze_&&hB(g,!0),o){let r=[],n=[];vt("Patches").generateReplacementPatches_(e,g,r,n),o(r,n)}return g}else ae(1,e)},this.produceWithPatches=(e,t)=>{if(typeof e=="function")return(r,...n)=>this.produceWithPatches(r,Q=>e(Q,...n));let o,g;return[this.produce(e,t,(r,n)=>{o=r,g=n}),o,g]},typeof A?.autoFreeze=="boolean"&&this.setAutoFreeze(A.autoFreeze),typeof A?.useStrictShallowCopy=="boolean"&&this.setUseStrictShallowCopy(A.useStrictShallowCopy)}createDraft(A){Xe(A)||ae(8),ao(A)&&(A=_M(A));let e=VE(this),t=Bg(A,void 0);return t[tA].isManual_=!0,mB(e),t}finishDraft(A,e){let t=A&&A[tA];(!t||!t.isManual_)&&ae(9);let{scope_:o}=t;return PE(o,e),qE(void 0,o)}setAutoFreeze(A){this.autoFreeze_=A}setUseStrictShallowCopy(A){this.useStrictShallowCopy_=A}applyPatches(A,e){let t;for(t=e.length-1;t>=0;t--){let g=e[t];if(g.path.length===0&&g.op==="replace"){A=g.value;break}}t>-1&&(e=e.slice(t+1));let o=vt("Patches").applyPatches_;return ao(A)?o(A,e):this.produce(A,g=>o(g,e))}};function Bg(A,e){let t=Jr(A)?vt("MapSet").proxyMap_(A,e):xr(A)?vt("MapSet").proxySet_(A,e):PM(A,e);return(e?e.scope_:br()).drafts_.push(t),t}function _M(A){return ao(A)||ae(10,A),oa(A)}function oa(A){if(!Xe(A)||Rr(A))return A;let e=A[tA],t;if(e){if(!e.modified_)return e.base_;e.finalized_=!0,t=DB(A,e.scope_.immer_.useStrictShallowCopy_)}else t=DB(A,!0);return rg(t,(o,g)=>{ea(t,o,oa(g))}),e&&(e.finalized_=!1),t}function ga(){class A extends Map{constructor(B,C){super(),this[tA]={type_:2,parent_:C,scope_:C?C.scope_:br(),modified_:!1,finalized_:!1,copy_:void 0,assigned_:void 0,base_:B,draft_:this,isManual_:!1,revoked_:!1}}get size(){return RA(this[tA]).size}has(B){return RA(this[tA]).has(B)}set(B,C){let i=this[tA];return n(i),(!RA(i).has(B)||RA(i).get(B)!==C)&&(t(i),We(i),i.assigned_.set(B,!0),i.copy_.set(B,C),i.assigned_.set(B,!0)),this}delete(B){if(!this.has(B))return!1;let C=this[tA];return n(C),t(C),We(C),C.base_.has(B)?C.assigned_.set(B,!1):C.assigned_.delete(B),C.copy_.delete(B),!0}clear(){let B=this[tA];n(B),RA(B).size&&(t(B),We(B),B.assigned_=new Map,rg(B.base_,C=>{B.assigned_.set(C,!1)}),B.copy_.clear())}forEach(B,C){let i=this[tA];RA(i).forEach((I,s,E)=>{B.call(C,this.get(s),s,this)})}get(B){let C=this[tA];n(C);let i=RA(C).get(B);if(C.finalized_||!Xe(i)||i!==C.base_.get(B))return i;let I=Bg(i,C);return t(C),C.copy_.set(B,I),I}keys(){return RA(this[tA]).keys()}values(){let B=this.keys();return{[Symbol.iterator]:()=>this.values(),next:()=>{let C=B.next();return C.done?C:{done:!1,value:this.get(C.value)}}}}entries(){let B=this.keys();return{[Symbol.iterator]:()=>this.entries(),next:()=>{let C=B.next();if(C.done)return C;let i=this.get(C.value);return{done:!1,value:[C.value,i]}}}}[Symbol.iterator](){return this.entries()}}function e(Q,B){return new A(Q,B)}function t(Q){Q.copy_||(Q.assigned_=new Map,Q.copy_=new Map(Q.base_))}class o extends Set{constructor(B,C){super(),this[tA]={type_:3,parent_:C,scope_:C?C.scope_:br(),modified_:!1,finalized_:!1,copy_:void 0,base_:B,draft_:this,drafts_:new Map,revoked_:!1,isManual_:!1}}get size(){return RA(this[tA]).size}has(B){let C=this[tA];return n(C),C.copy_?!!(C.copy_.has(B)||C.drafts_.has(B)&&C.copy_.has(C.drafts_.get(B))):C.base_.has(B)}add(B){let C=this[tA];return n(C),this.has(B)||(r(C),We(C),C.copy_.add(B)),this}delete(B){if(!this.has(B))return!1;let C=this[tA];return n(C),r(C),We(C),C.copy_.delete(B)||(C.drafts_.has(B)?C.copy_.delete(C.drafts_.get(B)):!1)}clear(){let B=this[tA];n(B),RA(B).size&&(r(B),We(B),B.copy_.clear())}values(){let B=this[tA];return n(B),r(B),B.copy_.values()}entries(){let B=this[tA];return n(B),r(B),B.copy_.entries()}keys(){return this.values()}[Symbol.iterator](){return this.values()}forEach(B,C){let i=this.values(),I=i.next();for(;!I.done;)B.call(C,I.value,I.value,this),I=i.next()}}function g(Q,B){return new o(Q,B)}function r(Q){Q.copy_||(Q.copy_=new Set,Q.base_.forEach(B=>{if(Xe(B)){let C=Bg(B,Q);Q.drafts_.set(B,C),Q.copy_.add(C)}else Q.copy_.add(B)}))}function n(Q){Q.revoked_&&ae(3,JSON.stringify(RA(Q)))}XM("MapSet",{proxyMap_:e,proxySet_:g})}var Be=new qM,Zr=Be.produce,Hz=Be.produceWithPatches.bind(Be),Wz=Be.setAutoFreeze.bind(Be),Xz=Be.setUseStrictShallowCopy.bind(Be),zz=Be.applyPatches.bind(Be),Kz=Be.createDraft.bind(Be),Pz=Be.finishDraft.bind(Be);ga();var ra=A=>{let e=0;for(let t of A)if(t&&(t.exists||(e+=(t.linked?.length??0)+(t.projectLinked?.length??0),e>1)))return!1;return e<2},Qa=(A,e)=>Zr(A,t=>{if(!t)return e;if(t.updated<e.updated){let{lines:o,linked:g,projectLinked:r,...n}=e;Object.assign(t,n),uB(e)||(t.lines=o),g&&(t.linked??=g),r&&(t.projectLinked??=r);return}uB(t)&&!uB(e)&&(t.lines=e.lines),e.linked&&(e.isLinkedCorrect||!t.isLinkedCorrect&&(t.linked?.length??0)<=e.linked.length)&&(t.linked=e.linked),e.projectLinked&&(t.projectLinked=e.projectLinked)}),uB=A=>A.lines[0].id==="dummy";var na=(A,e)=>{let t=new Map,o=P(e.title);for(let B of e.links){let C=$M(A,B);C.linked=[o],t.set(oA(A,B),C)}let g=oA(A,o),r=e.projectLinks.map(B=>{let C=Yr(B);return oA(C.project,C.titleLc)}),n={...Ur(A,e),linked:[],projectLinked:[]};t.set(g,n);let Q=e.links.map(B=>P(B));for(let B of e.relatedPages.links1hop){B.linksLc.includes(o)&&n.linked.push(B.titleLc);for(let s of B.linksLc.filter(E=>Q.includes(E))){let E=oA(A,s),c=t.get(E);if(!c)throw Error(storage already must have "${E}");if(!c.linked){c.linked=[B.titleLc];continue}c.linked.push(B.titleLc)}let C=oA(A,B.titleLc),i=Ur(A,B),I=t.get(C)?.linked;I&&(i.linked=I),t.set(C,i)}for(let B of e.relatedPages.projectLinks1hop){let C=oA(B.projectName,B.titleLc);r.includes(C)||n.projectLinked.push(C);let i=Ur(B.projectName,B),I=t.get(C)?.projectLinked;I&&(i.projectLinked=I),t.set(C,i)}n.isLinkedCorrect=!0;for(let B of e.relatedPages.links2hop){for(let s of B.linksLc){let E=oA(A,s),c=t.get(E);if(!c)throw Error(storage already must have "${E}");if(!c.linked){c.linked=[B.titleLc];continue}c.linked.push(B.titleLc)}let C=oA(A,B.titleLc),i=Ur(A,B),I=t.get(C)?.linked;I&&(i.linked=I),t.set(C,i)}return t},Ur=(A,e)=>({project:A,titleLc:"titleLc"in e?e.titleLc:P(e.title),exists:"persistent"in e?e.persistent:!0,descriptions:e.descriptions,image:e.image,lines:"lines"in e?e.lines:[e.title,...e.descriptions].map(t=>({text:t,id:"dummy",userId:"dummy",updated:e.updated,created:e.updated})),updated:e.updated,isLinkedCorrect:!1}),$M=(A,e)=>({project:A,titleLc:P(e),exists:!1,descriptions:[],image:null,lines:[{text:e,id:"dummy",userId:"dummy",updated:0,created:0}],updated:0,isLinkedCorrect:!1});var Lr=st("ScrapBubble:bubble.ts"),MB=new Map,Tr=new Set,fB=Gr();function*Ca(A){for(let e of A)yield MB.get(e)}var ia=(A,e)=>fB.on(A,e),Ia=(A,e)=>fB.off(A,e),sa=async(A,e,t,o)=>{let g=[];for(let r of[...e].reverse()){let n=oA(r,A);Tr.has(n)||g.push(Af(r,A,t,o))}await Promise.all(g)},Ba=0,Af=async(A,e,t,o)=>{let g=oA(A,e);if(Tr.has(g))return;Tr.add(g);let r=Ba++,n=${r} Check update ${g};Lr.time(n);try{let Q=$A.toRequest(A,e,{followRename:!0,projects:[...t]});for await(let[B,C]of yr(Q,{ignoreSearch:!0,saveFailedResponse:!0})){Lr.debug(${r}${B} ${g});let i=await $A.fromResponse(C);if(i.ok){let I=na(A,i.value);for(let[s,E]of I){let c=MB.get(s),l=Qa(c,E);l&&c!==l&&(MB.set(s,l),fB.dispatch(s,E))}}if(o?.ignoreFetch===!0||B==="cache"&&!xE(C,o?.maxAge??60))break}}catch(Q){Lr.error(Q)}finally{Tr.delete(g),Lr.timeEnd(n),Ba--}};var Ea=st("ScrapBubble:useBubbleData.ts"),co=A=>{let[e,t]=L(NB(A));return X(()=>{t(NB(A));let o,g=()=>{clearTimeout(o),o=setTimeout(()=>{Ea.debug(Update ${A.length} pages),t(NB(A))},10)};return A.forEach(r=>ia(r,g)),()=>A.forEach(r=>Ia(r,g))},A),e},NB=A=>{let e=[...Ca(A)].flatMap(t=>t?[t]:[]);return Ea.debug(Required: ${A.length} pages, ${e.length} found,e),e};var aa=({source:A,linked:e,externalLinked:t,projectsForSort:o,...g})=>{let r=x(()=>[...e.keys(),...t.keys()],[e,t]),n=co(r),Q=x(()=>[...o],[o]),B=x(()=>{let i=(I,s)=>{let E=Q.indexOf(I.project),c=Q.indexOf(s.project);return E===c?s.updated-I.updated:E<0?1:c<0?-1:E-c};return[...n].sort(i)},[n,Q]),C=x(()=>({bottom:${A.position.bottom}px,maxWidth:${A.position.maxWidth}px,..."left"in A.position?{left:${A.position.left}px}:{right:${A.position.right}px}}),[A.position]);return a("ul",{className:"card-bubble",style:C,onClick:g.onClick},B.map(({project:i,titleLc:I,lines:[{text:s}],descriptions:E,image:c})=>{let l=oA(i,I),D=e.get(l)??t.get(l);return a("li",{key:l},a(XE,{project:i,title:s,linkTo:D,descriptions:E,thumbnail:c??"",...g}))}))};var lo=A=>{if(A.pathType==="root"){let[,e="",t=""]=A.href.match(/\/([\w\-]+)(?:\/?|\/(.*))$/)??["","",""];if(e==="")throw SyntaxError(Failed to get a project name from "${A.href}");let[,o]=t?.match?.(/#([a-f\d]{24,32})$/)??["",""];return t===""?{project:e}:o===""?{project:e,title:t}:{project:e,title:t.slice(0,-1-o.length),hash:o}}else{let[,e]=A.href.match(/#([a-f\d]{24,32})$/)??["",""];return e===""?{title:A.href}:{title:A.href.slice(0,-1-e.length),hash:e}}};var yB=(A,e)=>e.some(t=>{let o=!A.project;switch(t.type){case"hashTag":return o&&P(t.href)===A.titleLc;case"link":{if(t.pathType=="absolute"||t.pathType==="relative"!==o)return!1;let{project:g,title:r=""}=lo({pathType:t.pathType,href:t.href});return o?!g&&P(r)===A.titleLc:g===A.project&&P(r)===A.titleLc}case"quote":case"strong":case"decoration":return yB(A,t.nodes)}});var Et=fn({title:"",project:"",whiteList:new Set,bubble:()=>{},hide:()=>{},delay:0,prefetch:()=>{}}),la=({lines:A,project:e,title:t,whiteList:o,noIndent:g,hash:r,linkTo:n,...Q})=>{let B=x(()=>A.flatMap(E=>typeof E=="string"?[]:[E.id]),[A]),C=x(()=>{let E=0;return hA(A.map(c=>typeof c=="string"?c:c.text).join( ),{hasTitle:!0}).map(c=>{switch(c.type){case"title":case"line":return{...c,id:B[E++]};case"codeBlock":{let l=E;return E+=c.content.split(
).length+1,{...c,ids:B.slice(l,E)}}case"table":{let l=E;return E+=c.cells.length+1,{...c,ids:B.slice(l,E)}}}})},[A,B]),i=x(()=>{if(r&&B.includes(r))return r;if(n)return C.find(E=>E.type!=="line"?!1:yB(n,E.nodes))?.id},[C,B,r,n?.project,n?.titleLc]),I=yA(null);X(()=>{if(!i)return;let E=I.current?.querySelector(data-id="${i}"),c=globalThis.scrollY;E?.scrollIntoView?.({block:"center"}),globalThis.scroll(0,c)},[i]);let s=St(e);return a("div",{className:"lines","data-theme":s,ref:I},a(Et.Provider,{value:{project:e,title:t,whiteList:o,...Q}},C.map(E=>{switch(E.type){case"title":return a(W,null,a(po,{key:E.id,index:E.id,indent:0,noIndent:g,permalink:E.id===i},a("a",{className:"page-link",type:"link",href:/${e}/${V(E.text)},rel:e===scrapbox.Project.name?"route":"noopener noreferrer",target:e===scrapbox.Project.name?"":"_blank"},E.text)),a("hr",null));case"codeBlock":return a(ef,{key:E.ids[0],block:E,noIndent:g,ids:E.ids,scrollId:i});case"table":return a(tf,{key:E.ids[0],block:E,noIndent:g,ids:E.ids,scrollId:i});case"line":return a(po,{key:E.id,index:E.id,indent:E.indent,noIndent:g,permalink:E.id===i},E.nodes.length>0?E.nodes.map(c=>a(Do,{node:c})):a("br",null))}})))},po=({index:A,indent:e,noIndent:t,children:o,permalink:g})=>a("div",{className:line${g?" permalink":""},"data-id":A,"data-indent":e,style:{"margin-left":t?"":${1*e}em}},o),ef=({block:{fileName:A,content:e,indent:t},ids:o,scrollId:g})=>{let{project:r,title:n}=Qt(Et),[Q,B]=L(""),C=k(async i=>{i.preventDefault(),i.stopPropagation();try{await navigator.clipboard.writeText(e),B("Copied"),await CA(1e3),B("")}catch(I){alert(Failed to copy the code block Error:${I.message})}},[e]);return a(W,null,a(po,{index:o[0],indent:t,permalink:o[0]===g},a("span",{className:"code-block"},a("span",{className:"code-block-start"},a("a",{href:/api/code/${r}/${V(n)}/${A},target:"_blank"},A)),a("span",{className:"copy",title:"Copy",onClick:C},Q))),a(W,null,e.split(
).map((i,I)=>a(po,{index:o[I+1],indent:t,permalink:o[I+1]===g},a("code",{className:"code-block"},i)))))},tf=({block:{fileName:A,cells:e,indent:t},ids:o,scrollId:g})=>{let{project:r,title:n}=Qt(Et);return a(W,null,a(po,{index:o[0],indent:t,permalink:o[0]===g},a("span",{className:"table-block"},a("span",{className:"table-block-start"},a("a",{href:/api/table/${r}/${V(n)}/${A}.csv,target:"_blank"},A)))),a(W,null,e.map((Q,B)=>a(po,{index:o[B+1],indent:t,permalink:o[B+1]===g},a("span",{className:"table-block table-block-row"},Q.map((C,i)=>a("span",{className:cell col-${i}},C.map(I=>a(Do,{node:I})))))))))},Do=({node:A})=>{switch(A.type){case"code":return a("code",{className:"code"},A.text);case"formula":return a(of,{node:A});case"commandLine":return a(rf,{node:A});case"helpfeel":return a("code",{className:"helpfeel"},a("span",{className:"prefix"},"?")," ",a("span",{className:"entry"},A.text));case"quote":return a("blockquote",{className:"quote"},A.nodes.map(e=>a(Do,{node:e})));case"strong":return a("strong",null,A.nodes.map(e=>a(Do,{node:e})));case"decoration":return a(gf,{node:A});case"plain":case"blank":return a(W,null,A.text);case"hashTag":return a(Bf,{node:A});case"link":return a(Cf,{node:A});case"googleMap":return a(Qf,{node:A});case"icon":return a(ca,{node:A});case"strongIcon":return a(ca,{node:A,strong:!0});case"image":return a(nf,{node:A});case"strongImage":return a("img",{className:"image strong-image",src:A.src});case"numberList":return a(W,null,${A.number}. ,A.nodes.map(e=>a(Do,{node:e})))}},of=({node:{formula:A}})=>{let{ref:e,error:t,setFormula:o}=gg("");return o(A),a("span",{className:formula ${t?" error":""}},t?a("code",null,A):a("span",{className:"katex-display",ref:e}))},gf=({node:{decos:A,nodes:e}})=>a("span",{className:A.map(t=>deco-${t}).join(" ")},e.map(t=>a(Do,{node:t}))),rf=({node:A})=>{let[e,t]=L(""),o=k(async g=>{g.preventDefault(),g.stopPropagation();try{await navigator.clipboard.writeText(A.text),t("Copied"),await CA(1e3),t("")}catch(r){alert(Failed to copy the code block
Error:${r.message})}},[A.text]);return a(W,null,a("code",{className:"cli"},a("span",{className:"prefix"},A.symbol)," ",a("span",{className:"command"},A.text)),a("span",{className:"tool-buttons"},a("span",{title:"Copy",className:"copy",onClick:o},e)))},Qf=({node:{place:A,latitude:e,longitude:t,zoom:o}})=>a("span",{className:"pointing-device-map"},a("a",{href:https://www.google.com/maps/search/${A}/@${e},${t},${o}z,rel:"noopner noreferrer",target:"_blank"},a("img",{className:"google-map",src:/api/google-map/static-map?center=${e}%2C${t}&markers=${A}&zoom=${o}&_csrf=${globalThis._csrf}}))),ca=({node:{pathType:A,path:e},strong:t})=>{let{project:o}=Qt(Et),[g,r]=A==="relative"?[o,e]:e.match(/\/([\w\-]+)\/(.+)$/)?.slice?.(1)??[o,e],n=V(r);return a("a",{href:/${g}/${n},rel:g===scrapbox.Project.name?"route":"noopener noreferrer",target:g===scrapbox.Project.name?"":"_blank"},a("img",{className:t?"icon strong-icon":"icon",alt:r,src:/api/pages/${g}/${n}/icon},r))},nf=({node:{link:A,src:e}})=>{let t=A||(/https:\/\/gyazo\.com\/[^\/]+\/thumb\/1000/.test(e)?e.slice(0,-11):e);return a("a",{className:A?"link":"",href:t,rel:"noopner noreferrer",target:"_blank"},a("img",{className:"image",src:e}))},Bf=({node:{href:A}})=>{let{project:e}=Qt(Et),t=Da(e,A),o=pa(e,A,"hashtag");return a("a",{href:/${e}/${V(A)},className:page-link${t?" empty-page-link":""},type:"hashTag",rel:e===scrapbox.Project.name?"route":"noopener noreferrer",target:e===scrapbox.Project.name?"":"_blank",onPointerEnter:o},"#",A)},Cf=({node:{pathType:A,...e}})=>{switch(A){case"relative":case"root":return a(If,{pathType:A,href:e.href});case"absolute":{let t=Ms({pathType:A,...e});switch(t.type){case"youtube":return a(sf,{...t});case"vimeo":return a(Ef,{...t});case"spotify":return a(af,{...t});case"anchor-fm":return a(cf,{...t});case"audio":return a(lf,{...t});case"video":return a(pf,{...t});case"absoluteLink":return a("a",{className:"link",href:t.href,rel:"noopener noreferrer",target:"_blank"},t.content||t.href)}}}},If=({pathType:A,href:e})=>{let{project:t}=Qt(Et),{project:o=t,title:g,hash:r=""}=lo({pathType:A,href:e}),n=pa(o,g,"link",r),Q=Da(o,g??"");return a("a",{className:page-link${g!==void 0&&Q?" empty-page-link":""},type:"link",href:/${o}${g===void 0?"":/${V(g)}${r===""?"":#${r}}},rel:o===scrapbox.Project.name?"route":"noopener noreferrer",target:o===scrapbox.Project.name?"":"_blank",onPointerEnter:n},e)},sf=A=>{A.params.append("autoplay","0");let e=A.pathType==="list"?https://www.youtube.com/embed/?${A.params.toString()}&list=${A.listId}:https://www.youtube.com/embed/${A.videoId}?${A.params.toString()};return a("div",{className:"iframe-video-player"},a("iframe",{src:e,allowFullScreen:!0,type:"text/html"}))},Ef=({videoId:A})=>a("div",{className:"iframe-video-player"},a("iframe",{src:https://player.vimeo.com/video/${A},allowFullScreen:!0,type:"text/html"})),af=A=>a("div",{className:"iframe-video-player"},a("iframe",{className:spotify type-${A.pathType},src:https://open.spotify.com/embed/${A.pathType}/${A.videoId},allowFullScreen:!0,type:"text/html",scrolling:"no"})),cf=A=>a("div",{className:"iframe-video-player"},a("iframe",{className:"anchor-fm",src:A.href.replace("/episodes/","/embed/episodes/"),allowFullScreen:!0,type:"text/html",scrolling:"no"})),lf=A=>A.content===""?a("audio",{className:"audio-player",preload:"none",controls:!0,src:A.href}):a(Df,{...A}),Df=({href:A,content:e})=>{let t=yA(null),o=k(()=>{t.current?.paused?(t.current.currentTime=0,t.current.play()):t.current?.pause?.()},[]);return a("span",{className:"audio-link"},a("a",{href:A,rel:"noopener noreferrer",target:"_blank"},e),a("span",{className:"play",onClick:o},"♬"),a("audio",{preload:"none",src:A,ref:t}))},pf=({href:A})=>a("div",{className:"video-player"},a("video",{class:"video",style:{display:"inline-block"},controls:!0,loop:!0,src:A})),Da=(A,e)=>{let{whiteList:t}=Qt(Et),o=x(()=>(t.has(A)?[...t]:[A,...t]).map(r=>oA(r,e)),[t,A]),g=co(o);return x(()=>ra(g),g)},pa=(A,e,t,o)=>{let{delay:g,bubble:r,prefetch:n}=Qt(Et);return k(async({currentTarget:Q})=>{e&&(n(A,e),await Io(Q,g)&&r({project:A,title:e,hash:o,type:t,position:so(Q)}))},[A,e,o,t,g,n,r])};var wa=({pages:A,onClick:e,source:t,whiteList:o,...g})=>{let[r,n]=L(oA(A[0].project,A[0].titleLc)),Q=x(()=>({top:${t.position.top}px,maxWidth:${t.position.maxWidth}px,..."left"in t.position?{left:${t.position.left}px}:{right:${t.position.right}px}}),[t.position]);return a("div",{className:"text-bubble",style:Q,onClick:e},A.length>1&&a("div",{role:"tablist"},A.map(B=>a(wf,{key:oA(B.project,B.titleLc),project:B.project,titleLc:B.titleLc,selected:r===oA(B.project,B.titleLc),tabSelector:n}))),A.map(B=>a(mf,{key:oA(B.project,B.titleLc),selected:r===oA(B.project,B.titleLc),...B,title:B.lines[0].text,hash:t.hash,linkTo:t.linkTo,whiteList:o,...g})))},wf=({project:A,titleLc:e,tabSelector:t,selected:o})=>{let g=k(()=>t(oA(A,e)),[A,e]),r=St(A);return a("button",{role:"tab","aria-selected":o,"data-theme":r,tabIndex:-1,onClick:g},A)},mf=({selected:A,...e})=>{let t=St(e.project);return a("div",{role:"tabpanel","data-theme":t,hidden:!A},a(la,{...e}))};var ma=st("ScrapBubble:Bubble.tsx"),ha=({source:A,parentTitles:e,whiteList:t,...o})=>{let g=x(()=>t.has(A.project)?new Set([A.project,...t]):new Set([A.project]),[t,A.project]),[r,n,Q]=df(A,g,t,e);return a(W,null,hf(Q)&&a(wa,{pages:Q,source:A,whiteList:t,onClick:o.hide,...o}),a(aa,{linked:r,externalLinked:n,onClick:o.hide,source:A,projectsForSort:g,...o}))},hf=A=>A.length>0,df=(A,e,t,o)=>{let[[g,r,n],Q]=L([new Map,new Map,[]]),B=x(()=>{let I=[...e].map(s=>oA(s,A.title));return ma.debug("projects",I),I},[e,A.title]),C=co(B),i=x(()=>o.map(I=>P(I)),[o]);return xI(()=>{let I=new Map,s=new Map,E=[];for(let c of C){let l={project:c.project,titleLc:c.titleLc};for(let m of c.projectLinked??[]){let{project:N,titleLc:M}=Yr(m);i.includes(M)&&t.has(N)||s.has(m)||s.set(m,l)}if(!t.has(c.project))continue;let D={titleLc:c.titleLc};for(let m of c.linked??[]){if(i.includes(m))continue;let N=oA(c.project,m);I.has(N)||I.set(N,D)}i.includes(c.titleLc)||c.exists&&E.push(c)}Q(Zr(c=>{ma.debug(depth: ${i.length}, bubbled from ${oA(A.project,A.title)}, bubbles,,C,"before",c[0],"internal cards,",I,"external cards",s);for(let l of c[0].keys())I.has(l)||c[0].delete(l);for(let[l,D]of I)c[0].set(l,D);for(let l of c[1].keys())s.has(l)||c[1].delete(l);for(let[l,D]of s)c[1].set(l,D);c[2]=E}))},[C,t,i]),[g,r,n]};var da=(A,e)=>{if(A instanceof URL)return A;try{return new URL(A)}catch(t){if(!(t instanceof TypeError))throw t;if(!e||!/^\.\/|^\.\.\/|^\//.test(A))return A;try{return new URL(A,e)}catch(o){if(!(o instanceof TypeError))throw o;return A}}};var ua=A=>{let e=x(()=>da(A.style,import.meta.url),[A.style]);return a(W,null,e!==""&&(e instanceof URL?a("link",{rel:"stylesheet",href:e.href}):a("style",null,e)))};var Ma=String.raw*{box-sizing:border-box}a{background-color:transparent;text-decoration:none;cursor:pointer}img{display:inline-block;max-width:100%;max-height:100px}code{font-family:var(--code-text-font, Menlo, Monaco, Consolas, "Courier New", monospace);font-size:90%;color:var(--code-color, #342d9c);background-color:var(--code-bg, rgba(0,0,0,.04));padding:0;white-space:pre-wrap;word-wrap:break-word}blockquote{background-color:var(--quote-bg-color, rgba(0,0,0,.05));display:block;border-left:solid 4px #a0a0a0;padding-left:4px;margin:0}strong{font-weight:700}iframe{display:inline-block;margin:3px 0;vertical-align:middle;max-width:100%;width:640px;height:360px;border:0}audio{display:inline-block;vertical-align:middle;white-space:initial;max-width:100%}.formula{margin:auto 6px}.formula.error code{color:#fd7373}.katex-display{display:inline-block!important;margin:0!important;text-align:inherit!important}.error .katex-display{display:none}.cli{border-radius:4px}.cli .prefix{color:#9c6248}.helpfeel{background-color:#fbebdd;border-radius:4px;padding:3px!important}.helpfeel .prefix{color:#f17c00}.helpfeel .entry{color:#cc5020}.code-block{display:block;line-height:1.7em;background-color:var(--code-bg, rgba(0,0,0,.04))}.code-block-start{font-family:Menlo,Monaco,Consolas,Courier New,monospace;color:#342d9c;background-color:#ffcfc6;font-size:.9em;padding:1px 2px}.code-block-start a{color:#342d9c;text-decoration:underline}code.code-block,.table-block.table-block-row{padding-left:1em}.copy{font-family:"Font Awesome 5 Free";cursor:pointer}.table-block{white-space:nowrap}.table-block-start{padding:1px 2px;font-size:.9em;background-color:#ffcfc6}.table-block-start a{color:#342d9c;text-decoration:underline}.cell{margin:0;padding:0 2px 0 8px;box-sizing:content-box;display:inline-block;white-space:pre}.cell:nth-child(odd){background-color:#0000000a}.cell:nth-child(2n){background-color:#0000000f}.strong-image{max-height:100%}.icon{height:11px;vertical-align:middle}.strong-icon{height:13.2px}.tool-button{margin-left:1em;cursor:pointer;font-size:.9em}.deco-\/{font-style:italic}.deco-\*-1{font-weight:700}.deco-\*-2{font-weight:700;font-size:1.2em}.deco-\*-3{font-weight:700;font-size:1.44em}.deco-\*-4{font-weight:700;font-size:1.73em}.deco-\*-5{font-weight:700;font-size:2.07em}.deco-\*-6{font-weight:700;font-size:2.49em}.deco-\*-7{font-weight:700;font-size:3em}.deco-\*-8{font-weight:700;font-size:3.58em}.deco-\*-9{font-weight:700;font-size:4.3em}.deco-\*-10{font-weight:700;font-size:5.16em}.deco--{text-decoration:line-through}.deco-_{text-decoration:underline}.page-link{color:var(--page-link-color, #5e8af7)}a.page-link:hover{color:var(--page-link-hover-color, #2d67f5)}.empty-page-link{color:var(--empty-page-link-color, #fd7373)}a.empty-page-link:hover{color:var(--empty-page-link-hover-color, #fd7373)}.link{color:var(--page-link-color, #5e8af7);text-decoration:underline}a.link:hover{color:var(--page-link-color-hover-color, #2d67f5)}.link img{padding-bottom:3px;border-style:none none solid;border-width:1.5px;border-color:#8fadf9}.permalink{background-color:var(--line-permalink-color, rgba(234,218,74,.75))}.status-bar{display:inline-block;position:absolute;background-color:var(--page-bg, #fefefe);cursor:default}.status-bar>*{border:1px solid var(--status-bar-border-color, #a9aaaf)}.status-bar.top-left{top:0;left:0}.status-bar.top-left>*{border-top:none;border-left:none}.status-bar.top-left :last-of-type{border-bottom-right-radius:3px}.status-bar.top-right{top:0;right:0}.status-bar.top-right>*{border-top:none;border-right:none}.status-bar.top-right :last-of-type{border-bottom-left-radius:3px}.status-bar.bottom-right{bottom:0;right:0}.status-bar.bottom-right>*{border-bottom:none;border-right:none}.status-bar.bottom-right :last-of-type{border-top-left-radius:3px}.status-bar.bottom-left{bottom:0;left:0}.status-bar.bottom-left>*{border-bottom:none;border-left:none}.status-bar.bottom-left :last-of-type{border-top-right-radius:3px}.text-bubble{font-size:11px;line-height:1.42857;user-select:text;position:absolute;color:var(--page-text-color, #4a4a4a);box-shadow:0 6px 12px #0000002d;display:flex;flex-direction:column;z-index:9000;&.no-scroll{overflow-y:hidden}data-theme=default-dark{--text-bubble-border-color: hsl(0, 0%, 39%)}data-theme=default-minimal{--text-bubble-border-color: hsl(0, 0%, 89%)}data-theme=paper-light{--text-bubble-border-color: hsl(53, 8%, 58%)}data-theme=paper-dark-dark{--text-bubble-border-color: hsl(203, 42%, 17%)}data-theme=blue{--text-bubble-border-color: hsl(227, 68%, 62%)}data-theme=purple{--text-bubble-border-color: hsl(267, 39%, 60%)}data-theme=green{--text-bubble-border-color: hsl(136, 29%, 50%)}data-theme=orange{--text-bubble-border-color: hsl(43, 71%, 51%)}data-theme=red{--text-bubble-border-color: hsl(4, 58%, 56%)}data-theme=spring{--text-bubble-border-color: hsl(72, 64%, 57%)}data-theme=kyoto{--text-bubble-border-color: hsl(331, 21%, 26%)}data-theme=newyork{--text-bubble-border-color: hsl(176, 29%, 67%)}role=tabpanel{padding:5px 0 5px 5px;border-radius:4px;background-color:var(--page-bg, #fefefe);max-height:80vh;overflow-y:auto}role=tabpanel,button{border:1px solid var(--text-bubble-border-color, hsl(221, 15%, 25%))}button{cursor:default;color:inherit;font-size:inherit;line-height:inherit;background-color:var(--page-bg, #fefefe);border-radius:4px 4px 0 0}buttonaria-selected=true{background-color:var(--text-bubble-border-color, hsl(221, 15%, 25%))}}.project-badge{text-decoration:none;color:var(--tool-text-color, #363c49)}.related-page-carddata-theme=default-dark{--card-title-bg: hsl(0, 0%, 39%)}.related-page-carddata-theme=default-minimal{--card-title-bg: hsl(0, 0%, 89%)}.related-page-carddata-theme=paper-light{--card-title-bg: hsl(53, 8%, 58%)}.related-page-carddata-theme=paper-dark-dark{--card-title-bg: hsl(203, 42%, 17%)}.related-page-carddata-theme=blue{--card-title-bg: hsl(227, 68%, 62%)}.related-page-carddata-theme=purple{--card-title-bg: hsl(267, 39%, 60%)}.text-bubbledata-theme=green{--card-title-bg: hsl(136, 29%, 50%)}.related-page-carddata-theme=orange{--card-title-bg: hsl(43, 71%, 51%)}.related-page-carddata-theme=red{--card-title-bg: hsl(4, 58%, 56%)}.related-page-carddata-theme=spring{--card-title-bg: hsl(72, 64%, 57%)}.related-page-carddata-theme=kyoto{--card-title-bg: hsl(331, 21%, 26%)}.related-page-carddata-theme=newyork{--card-title-bg: hsl(176, 29%, 67%)}.related-page-card{display:block;position:relative;height:inherit;width:inherit;overflow:hidden;text-overflow:ellipsis;font-family:Roboto,Helvetica,Arial,Hiragino Sans,sans-serif;background-color:var(--card-bg, #fff);color:var(--card-title-color, #555);word-break:break-word;text-decoration:none}.related-page-card:hover{box-shadow:var(--card-box-hover-shadow, 0 2px 0 rgba(0,0,0,.23))}.related-page-card:focus{outline:0;box-shadow:0 0 0 3px #66afe999;border-color:#66afe9;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.related-page-card.hover{opacity:0;position:absolute;width:100%;height:100%;top:0;left:0;background-color:var(--card-hover-bg, rgba(0,0,0,.05));mix-blend-mode:multiply;z-index:1;transition:background-color .1s}.related-page-card:hover .hover{opacity:1}.related-page-card:active .hover{opacity:1;background-color:var(--card-active-bg, rgba(0,0,0,.1))}.related-page-card .content{height:calc(100% - 5px);width:inherit;display:flex;flex-direction:column;overflow:hidden}.related-page-card .content .header{width:100%;color:#396bdd;text-overflow:ellipsis;border-top:var(--card-title-bg, #f2f2f3) solid 10px;padding:8px 10px}.related-page-card .content .header .title{font-size:11px;line-height:16px;font-weight:700;max-height:48px;color:var(--card-title-color, #363c49);margin:0;overflow:hidden;display:block;-webkit-line-clamp:3;-webkit-box-orient:vertical;text-overflow:ellipsis}.related-page-card .content .description{line-height:16px;padding:8px 10px 0;font-size:10px;white-space:pre-line;column-count:1;column-gap:2em;column-width:10em;height:inherit;color:var(--card-description-color, gray);flex-shrink:16;overflow:hidden}.related-page-card .content .thumbnail{display:block;width:100%;margin:0 auto;padding:0 5px}.related-page-card .content .description p{margin:0;display:block}.related-page-card .content .description code{font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-size:90%;color:var(--code-color, #342d9c);background-color:var(--code-bg, rgba(0,0,0,.04));padding:0;white-space:pre-wrap;word-wrap:break-word}.related-page-card .content .description .icon{height:9px;vertical-align:middle}.related-page-card .content .description .page-link{background-color:transparent;text-decoration:none;cursor:pointer;color:var(--page-link-color, #5e8af7)}.card-bubble{background-color:var(--page-bg, #FFF);box-shadow:0 2px 2px #00000024,0 3px 1px -2px #0003,0 1px 5px #0000001f;position:absolute;max-width:80vw;box-sizing:content-box;z-index:9000;font-size:11px;line-height:1.42857;display:flex;padding:0;margin:0;list-style:none;overflow-x:auto;overflow-y:visible}.card-bubble li{display:block;position:relative;float:none;margin:5px;box-sizing:border-box;box-shadow:var(--card-box-shadow, 0 2px 0 rgba(0,0,0,.12));border-radius:2px;width:120px;height:120px} ;var fa=()=>{let[A,e]=L([{bubble:o=>t(0,o),hide:()=>t(0)}]),t=k((o,g)=>{e(([r,...n])=>[r,...g?[...n.slice(0,o),g===n.at(o)?.source?n.at(o):{source:g,parentTitles:[scrapbox.Page.title??"",...n.slice(0,o).map(Q=>Q.source.title)],bubble:Q=>t(o+1,Q),hide:()=>t(o+1)}]:[...n.slice(0,o)]])},[]);return A};var GB=(A,e,t,o,g)=>{X(()=>(A.addEventListener(e,t,o),()=>A.removeEventListener(e,t,o)),[A,e,o,...g??[]])};var Na=A=>A instanceof HTMLSpanElement&&A.matches(".line-title .text"),Sr=A=>A instanceof HTMLAnchorElement&&A.classList.contains("page-link");var kB="scrap-bubble",ya=({delay:A,whiteList:e,watchList:t,style:o})=>{let[{bubble:g,hide:r},...n]=fa(),Q=k((B,C)=>sa(C,e.has(B)?e:new Set([B]),t),[e,t]);return GB(document,"pointerenter",async B=>{let C=B.target;if(!Sr(C)&&!Na(C))return;let{project:i=scrapbox.Project.name,title:I,hash:s=""}=Sr(C)?lo({pathType:"root",href:${new URL(C.href).pathname}${new URL(C.href).hash}}):{project:scrapbox.Project.name,title:scrapbox.Page.title};if(i==="")return;let E=decodeURIComponent(I??"");Q(i,E),await Io(C,A)&&g({project:i,title:E,hash:s,position:so(C),type:uf(C)})},{capture:!0},[A,e,t]),GB(document,"click",B=>{B.target.dataset.userscriptName!==kB&&r()},{capture:!0},[r]),X(()=>(scrapbox.addListener("page:changed",r),()=>scrapbox.removeListener("page:changed",r)),[r]),a(W,null,a("link",{rel:"stylesheet",href:"https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.12.0/katex.min.css"}),a("style",null,Ma),a(ua,{style:o}),n.map(B=>a(ha,{key:oA(B.source.project,B.source.title),...B,whiteList:e,delay:A,prefetch:Q})))},uf=A=>Sr(A)?A.type==="link"?"link":"hashtag":"title";var Ga=async A=>{let{delay:e=500,whiteList:t=[],watchList:o=(await kE()).slice(0,100),style:g="",debug:r=!1}=A??{};RE(r);let n=document.createElement("div");n.dataset.userscriptName=kB,document.body.append(n);let Q=n.attachShadow({mode:"open"});NA(a(ya,{delay:e,whiteList:new Set([scrapbox.Project.name,...t]),watchList:new Set(o),style:g}),Q)};var Mf=["takker-memex","takker-private","takker","takker-books","villagepump"],wo=[];switch(scrapbox.Project.name){case"hub":case"villagepump":case"verbalizing-community":wo.push("villagepump","hub","verbalizing-community");break;case"programming-notes":case"customize":case"scrapboxlab":wo.push("programming-notes","customize","scrapboxlab");break;case"sta":wo.push("sta-taskmanagement");break;case"sta-taskmanagement":case"taskmanagement":wo.push("sta-taskmanagement","taskmanagement");break;case"plurality-japanese":wo.push("nishio","tkgshn");break}Ga({delay:/mobile/i.test(navigator.userAgent)?300:500,whiteList:[...Mf,...wo],style:@import "/api/code/takker/kakeruの背景を白にするUserCSS/style.css";
@import "/api/code/takker/アイコン記法を画像記法っぽくするUserCSS/style2.css";});var ka=A=>{{let t=A.match(/^([^(]+)\(([^)]+)\)$/);if(t)return{fileName:t[1],lang:t[2]}}let e=A.split(".").pop();return e===void 0?{fileName:A,lang:A}:{fileName:A,lang:e}};var Ya=(A,e,t)=>{if(t.length===0)return[];let o=t.map(Q=>Q.text).join(
),g=hA(o,{hasTitle:!0}),r=new Map,n=0;for(let Q of g)switch(Q.type){case"title":case"line":{n++;break}case"table":n+=Q.cells.length+1;break;case"codeBlock":{let{fileName:B,lang:C}=ka(Q.fileName),i=r.get(B);r.set(B,{path:i?.path??https://scrapbox.io/api/code/${A}/${V(e)}/${V(B)},lang:i?.lang??C,startIds:[...i?.startIds??[],t[n].id]}),n+=Q.content.split( ).length+1;break}}return r.values()};function bB(A){let e=o=>{if(o===null)t.write8(0);else if(typeof o=="boolean")t.write8(1),t.write8(+o);else if(typeof o=="number")t.write8(2),t.write32(o|0);else if(typeof o=="string")t.write8(3),t.write(de(o));else if(o instanceof Uint8Array)t.write8(4),t.write(o);else if(o instanceof Array){t.write8(5),t.write32(o.length);for(let g of o)e(g)}else{let g=Object.keys(o);t.write8(6),t.write32(g.length);for(let r of g)t.write(de(r)),e(o[r])}},t=new vr;return t.write32(0),t.write32(A.id<<1|+!A.isRequest),e(A.value),YB(t.buf,t.len-4,0),t.buf.subarray(0,t.len)}function ba(A){let e=()=>{switch(t.read8()){case 0:return null;case 1:return!!t.read8();case 2:return t.read32();case 3:return mo(t.read());case 4:return t.read();case 5:{let n=t.read32(),Q=[];for(let B=0;B<n;B++)Q.push(e());return Q}case 6:{let n=t.read32(),Q={};for(let B=0;B<n;B++)Q[mo(t.read())]=e();return Q}default:throw new Error("Invalid packet")}},t=new vr(A),o=t.read32(),g=(o&1)===0;o>>>=1;let r=e();if(t.ptr!==A.length)throw new Error("Invalid packet");return{id:o,isRequest:g,value:r}}var vr=class{constructor(e=new Uint8Array(1024)){this.buf=e}len=0;ptr=0;_write(e){if(this.len+e>this.buf.length){let t=new Uint8Array((this.len+e)*2);t.set(this.buf),this.buf=t}return this.len+=e,this.len-e}write8(e){let t=this._write(1);this.buf[t]=e}write32(e){let t=this._write(4);YB(this.buf,e,t)}write(e){let t=this._write(4+e.length);YB(this.buf,e.length,t),this.buf.set(e,t+4)}_read(e){if(this.ptr+e>this.buf.length)throw new Error("Invalid packet");return this.ptr+=e,this.ptr-e}read8(){return this.buf[this._read(1)]}read32(){return jB(this.buf,this._read(4))}read(){let e=this.read32(),t=new Uint8Array(e),o=this._read(t.length);return t.set(this.buf.subarray(o,o+e)),t}},de,mo,ja;if(typeof TextEncoder<"u"&&typeof TextDecoder<"u"){let A=new TextEncoder,e=new TextDecoder;de=t=>A.encode(t),mo=t=>e.decode(t),ja='new TextEncoder().encode("")'}else throw new Error("No UTF-8 codec found");if(!(de("")instanceof Uint8Array))throw new Error(Invariant violation: "${ja} instanceof Uint8Array" is incorrectly false
This indicates that your JavaScript environment is broken. You cannot use
esbuild in this environment because esbuild relies on this invariant. This
is not a problem with esbuild. You need to fix your environment instead.
);function jB(A,e){return A[e++]|A[e++]<<8|A[e++]<<16|A[e++]<<24}function YB(A,e,t){A[t++]=e,A[t++]=e>>8,A[t++]=e>>16,A[t++]=e>>24}var Cg="0.21.5";var uA=JSON.stringify,Oa="warning",Fa="silent";function Ja(A){if(ZA(A,"target"),A.indexOf(",")>=0)throw new Error(Invalid target: ${A});return A}var Xr=()=>null,cA=A=>typeof A=="boolean"?null:"a boolean",T=A=>typeof A=="string"?null:"a string",zr=A=>A instanceof RegExp?null:"a RegExp object",Wt=A=>typeof A=="number"&&A===(A|0)?null:"an integer",Za=A=>typeof A=="function"?null:"a function",lA=A=>Array.isArray(A)?null:"an array",ce=A=>typeof A=="object"&&A!==null&&!Array.isArray(A)?null:"an object",Nf=A=>typeof A=="object"&&A!==null?null:"an array or an object",yf=A=>A instanceof WebAssembly.Module?null:"a WebAssembly.Module",xa=A=>typeof A=="object"&&!Array.isArray(A)?null:"an object or null",Ua=A=>typeof A=="string"||typeof A=="boolean"?null:"a string or a boolean",Gf=A=>typeof A=="string"||typeof A=="object"&&A!==null&&!Array.isArray(A)?null:"a string or an object",kf=A=>typeof A=="string"||Array.isArray(A)?null:"a string or an array",La=A=>typeof A=="string"||A instanceof Uint8Array?null:"a string or a Uint8Array",Yf=A=>typeof A=="string"||A instanceof URL?null:"a string or a URL";function w(A,e,t,o){let g=A[t];if(e[t+""]=!0,g===void 0)return;let r=o(g);if(r!==null)throw new Error(${uA(t)} must be ${r});return g}function MA(A,e,t){for(let o in A)if(!(o in e))throw new Error(Invalid option ${t}: ${uA(o)})}function Ta(A){let e=Object.create(null),t=w(A,e,"wasmModule",yf),o=w(A,e,"workerURL",Yf);return MA(A,e,"in initialize() call"),{wasmModule:t,workerURL:o}}function Sa(A){let e;if(A!==void 0){e=Object.create(null);for(let t in A){let o=A[t];if(typeof o=="string"||o===!1)e[t]=o;else throw new Error(Expected ${uA(t)} in mangle cache to map to either a string or false)}}return e}function Kr(A,e,t,o,g){let r=w(e,t,"color",cA),n=w(e,t,"logLevel",T),Q=w(e,t,"logLimit",Wt);r!==void 0?A.push(--color=${r}):o&&A.push("--color=true"),A.push(--log-level=${n||g}),A.push(--log-limit=${Q||0})}function ZA(A,e,t){if(typeof A!="string")throw new Error(Expected value for ${e}${t!==void 0?" "+uA(t):""} to be a string, got ${typeof A} instead);return A}function va(A,e,t){let o=w(e,t,"legalComments",T),g=w(e,t,"sourceRoot",T),r=w(e,t,"sourcesContent",cA),n=w(e,t,"target",kf),Q=w(e,t,"format",T),B=w(e,t,"globalName",T),C=w(e,t,"mangleProps",zr),i=w(e,t,"reserveProps",zr),I=w(e,t,"mangleQuoted",cA),s=w(e,t,"minify",cA),E=w(e,t,"minifySyntax",cA),c=w(e,t,"minifyWhitespace",cA),l=w(e,t,"minifyIdentifiers",cA),D=w(e,t,"lineLimit",Wt),m=w(e,t,"drop",lA),N=w(e,t,"dropLabels",lA),M=w(e,t,"charset",T),p=w(e,t,"treeShaking",cA),h=w(e,t,"ignoreAnnotations",cA),d=w(e,t,"jsx",T),b=w(e,t,"jsxFactory",T),Y=w(e,t,"jsxFragment",T),R=w(e,t,"jsxImportSource",T),y=w(e,t,"jsxDev",cA),u=w(e,t,"jsxSideEffects",cA),f=w(e,t,"define",ce),G=w(e,t,"logOverride",ce),j=w(e,t,"supported",ce),F=w(e,t,"pure",lA),Z=w(e,t,"keepNames",cA),O=w(e,t,"platform",T),S=w(e,t,"tsconfigRaw",Gf);if(o&&A.push(--legal-comments=${o}),g!==void 0&&A.push(--source-root=${g}),r!==void 0&&A.push(--sources-content=${r}),n&&(Array.isArray(n)?A.push(--target=${Array.from(n).map(Ja).join(",")}):A.push(--target=${Ja(n)})),Q&&A.push(--format=${Q}),B&&A.push(--global-name=${B}),O&&A.push(--platform=${O}),S&&A.push(--tsconfig-raw=${typeof S=="string"?S:JSON.stringify(S)}),s&&A.push("--minify"),E&&A.push("--minify-syntax"),c&&A.push("--minify-whitespace"),l&&A.push("--minify-identifiers"),D&&A.push(--line-limit=${D}),M&&A.push(--charset=${M}),p!==void 0&&A.push(--tree-shaking=${p}),h&&A.push("--ignore-annotations"),m)for(let U of m)A.push(--drop:${ZA(U,"drop")});if(N&&A.push(--drop-labels=${Array.from(N).map(U=>ZA(U,"dropLabels")).join(",")}),C&&A.push(--mangle-props=${C.source}),i&&A.push(--reserve-props=${i.source}),I!==void 0&&A.push(--mangle-quoted=${I}),d&&A.push(--jsx=${d}),b&&A.push(--jsx-factory=${b}),Y&&A.push(--jsx-fragment=${Y}),R&&A.push(--jsx-import-source=${R}),y&&A.push("--jsx-dev"),u&&A.push("--jsx-side-effects"),f)for(let U in f){if(U.indexOf("=")>=0)throw new Error(Invalid define: ${U});A.push(--define:${U}=${ZA(fU,"define",U)})}if(G)for(let U in G){if(U.indexOf("=")>=0)throw new Error(Invalid log override: ${U});A.push(--log-override:${U}=${ZA(GU,"log override",U)})}if(j)for(let U in j){if(U.indexOf("=")>=0)throw new Error(Invalid supported: ${U});let v=j[U];if(typeof v!="boolean")throw new Error(Expected value for supported ${uA(U)} to be a boolean, got ${typeof v} instead);A.push(--supported:${U}=${v})}if(F)for(let U of F)A.push(--pure:${ZA(U,"pure")});Z&&A.push("--keep-names")}function bf(A,e,t,o,g){let r=[],n=[],Q=Object.create(null),B=null,C=null;Kr(r,e,Q,t,o),va(r,e,Q);let i=w(e,Q,"sourcemap",Ua),I=w(e,Q,"bundle",cA),s=w(e,Q,"splitting",cA),E=w(e,Q,"preserveSymlinks",cA),c=w(e,Q,"metafile",cA),l=w(e,Q,"outfile",T),D=w(e,Q,"outdir",T),m=w(e,Q,"outbase",T),N=w(e,Q,"tsconfig",T),M=w(e,Q,"resolveExtensions",lA),p=w(e,Q,"nodePaths",lA),h=w(e,Q,"mainFields",lA),d=w(e,Q,"conditions",lA),b=w(e,Q,"external",lA),Y=w(e,Q,"packages",T),R=w(e,Q,"alias",ce),y=w(e,Q,"loader",ce),u=w(e,Q,"outExtension",ce),f=w(e,Q,"publicPath",T),G=w(e,Q,"entryNames",T),j=w(e,Q,"chunkNames",T),F=w(e,Q,"assetNames",T),Z=w(e,Q,"inject",lA),O=w(e,Q,"banner",ce),S=w(e,Q,"footer",ce),U=w(e,Q,"entryPoints",Nf),v=w(e,Q,"absWorkingDir",T),H=w(e,Q,"stdin",ce),_=w(e,Q,"write",cA)??g,K=w(e,Q,"allowOverwrite",cA),FA=w(e,Q,"mangleCache",ce);if(Q.plugins=!0,MA(e,Q,in ${A}() call),i&&r.push(--sourcemap${i===!0?"":=${i}}),I&&r.push("--bundle"),K&&r.push("--allow-overwrite"),s&&r.push("--splitting"),E&&r.push("--preserve-symlinks"),c&&r.push("--metafile"),l&&r.push(--outfile=${l}),D&&r.push(--outdir=${D}),m&&r.push(--outbase=${m}),N&&r.push(--tsconfig=${N}),Y&&r.push(--packages=${Y}),M){let J=[];for(let gA of M){if(ZA(gA,"resolve extension"),gA.indexOf(",")>=0)throw new Error(Invalid resolve extension: ${gA});J.push(gA)}r.push(--resolve-extensions=${J.join(",")})}if(f&&r.push(--public-path=${f}),G&&r.push(--entry-names=${G}),j&&r.push(--chunk-names=${j}),F&&r.push(--asset-names=${F}),h){let J=[];for(let gA of h){if(ZA(gA,"main field"),gA.indexOf(",")>=0)throw new Error(Invalid main field: ${gA});J.push(gA)}r.push(--main-fields=${J.join(",")})}if(d){let J=[];for(let gA of d){if(ZA(gA,"condition"),gA.indexOf(",")>=0)throw new Error(Invalid condition: ${gA});J.push(gA)}r.push(--conditions=${J.join(",")})}if(b)for(let J of b)r.push(--external:${ZA(J,"external")});if(R)for(let J in R){if(J.indexOf("=")>=0)throw new Error(Invalid package name in alias: ${J});r.push(--alias:${J}=${ZA(RJ,"alias",J)})}if(O)for(let J in O){if(J.indexOf("=")>=0)throw new Error(Invalid banner file type: ${J});r.push(--banner:${J}=${ZA(OJ,"banner",J)})}if(S)for(let J in S){if(J.indexOf("=")>=0)throw new Error(Invalid footer file type: ${J});r.push(--footer:${J}=${ZA(SJ,"footer",J)})}if(Z)for(let J of Z)r.push(--inject:${ZA(J,"inject")});if(y)for(let J in y){if(J.indexOf("=")>=0)throw new Error(Invalid loader extension: ${J});r.push(--loader:${J}=${ZA(yJ,"loader",J)})}if(u)for(let J in u){if(J.indexOf("=")>=0)throw new Error(Invalid out extension: ${J});r.push(--out-extension:${J}=${ZA(uJ,"out extension",J)})}if(U)if(Array.isArray(U))for(let J=0,gA=U.length;J<gA;J++){let vA=U[J];if(typeof vA=="object"&&vA!==null){let Ue=Object.create(null),Le=w(vA,Ue,"in",T),Ne=w(vA,Ue,"out",T);if(MA(vA,Ue,"in entry point at index "+J),Le===void 0)throw new Error('Missing property "in" for entry point at index '+J);if(Ne===void 0)throw new Error('Missing property "out" for entry point at index '+J);n.push([Ne,Le])}else n.push(["",ZA(vA,"entry point at index "+J)])}else for(let J in U)n.push([J,ZA(U[J],"entry point",J)]);if(H){let J=Object.create(null),gA=w(H,J,"contents",La),vA=w(H,J,"resolveDir",T),Ue=w(H,J,"sourcefile",T),Le=w(H,J,"loader",T);MA(H,J,'in "stdin" object'),Ue&&r.push(--sourcefile=${Ue}),Le&&r.push(--loader=${Le}),vA&&(C=vA),typeof gA=="string"?B=de(gA):gA instanceof Uint8Array&&(B=gA)}let BA=[];if(p)for(let J of p)J+="",BA.push(J);return{entries:n,flags:r,write:_,stdinContents:B,stdinResolveDir:C,absWorkingDir:v,nodePaths:BA,mangleCache:Sa(FA)}}function jf(A,e,t,o){let g=[],r=Object.create(null);Kr(g,e,r,t,o),va(g,e,r);let n=w(e,r,"sourcemap",Ua),Q=w(e,r,"sourcefile",T),B=w(e,r,"loader",T),C=w(e,r,"banner",T),i=w(e,r,"footer",T),I=w(e,r,"mangleCache",ce);return MA(e,r,in ${A}() call),n&&g.push(--sourcemap=${n===!0?"external":n}),Q&&g.push(--sourcefile=${Q}),B&&g.push(--loader=${B}),C&&g.push(--banner=${C}),i&&g.push(--footer=${i}),{flags:g,mangleCache:Sa(I)}}function Ha(A){let e={},t={didClose:!1,reason:""},o={},g=0,r=0,n=new Uint8Array(16*1024),Q=0,B=M=>{let p=Q+M.length;if(p>n.length){let d=new Uint8Array(p*2);d.set(n),n=d}n.set(M,Q),Q+=M.length;let h=0;for(;h+4<=Q;){let d=jB(n,h);if(h+4+d>Q)break;h+=4,c(n.subarray(h,h+d)),h+=d}h>0&&(n.copyWithin(0,h,Q),Q-=h)},C=M=>{t.didClose=!0,M&&(t.reason=": "+(M.message||M));let p="The service was stopped"+t.reason;for(let h in o)o[h](p,null);o={}},i=(M,p,h)=>{if(t.didClose)return h("The service is no longer running"+t.reason,null);let d=g++;o[d]=(b,Y)=>{try{h(b,Y)}finally{M&&M.unref()}},M&&M.ref(),A.writeToStdin(bB({id:d,isRequest:!0,value:p}))},I=(M,p)=>{if(t.didClose)throw new Error("The service is no longer running"+t.reason);A.writeToStdin(bB({id:M,isRequest:!1,value:p}))},s=async(M,p)=>{try{if(p.command==="ping"){I(M,{});return}if(typeof p.key=="number"){let h=e[p.key];if(!h)return;let d=h[p.command];if(d){await d(M,p);return}}throw new Error("Invalid command: "+p.command)}catch(h){let d=[Ht(h,A,null,void 0,"")];try{I(M,{errors:d})}catch{}}},E=!0,c=M=>{if(E){E=!1;let h=String.fromCharCode(...M);if(h!==Cg)throw new Error(Cannot start service: Host version "${Cg}" does not match binary version ${uA(h)});return}let p=ba(M);if(p.isRequest)s(p.id,p.value);else{let h=o[p.id];delete o[p.id],p.value.error?h(p.value.error,{}):h(null,p.value)}};return{readFromStdout:B,afterClose:C,service:{buildOrContext:({callName:M,refs:p,options:h,isTTY:d,defaultWD:b,callback:Y})=>{let R=0,y=r++,u={},f={ref(){++R===1&&p&&p.ref()},unref(){--R===0&&(delete e[y],p&&p.unref())}};e[y]=u,f.ref(),Of(M,y,i,I,f,A,u,h,d,b,(G,j)=>{try{Y(G,j)}finally{f.unref()}})},transform:({callName:M,refs:p,input:h,options:d,isTTY:b,fs:Y,callback:R})=>{let y=Wa(),u=f=>{try{if(typeof h!="string"&&!(h instanceof Uint8Array))throw new Error('The input to "transform" must be a string or a Uint8Array');let{flags:G,mangleCache:j}=jf(M,d,b,Fa),F={command:"transform",flags:G,inputFS:f!==null,input:f!==null?de(f):typeof h=="string"?de(h):h};j&&(F.mangleCache=j),i(p,F,(Z,O)=>{if(Z)return R(new Error(Z),null);let S=ho(O.errors,y),U=ho(O.warnings,y),v=1,H=()=>{if(--v===0){let _={warnings:U,code:O.code,map:O.map,mangleCache:void 0,legalComments:void 0};"legalComments"in O&&(_.legalComments=O?.legalComments),O.mangleCache&&(_.mangleCache=O?.mangleCache),R(null,_)}};if(S.length>0)return R(ig("Transform failed",S,U),null);O.codeFS&&(v++,Y.readFile(O.code,(_,K)=>{_!==null?R(_,null):(O.code=K,H())})),O.mapFS&&(v++,Y.readFile(O.map,(_,K)=>{_!==null?R(_,null):(O.map=K,H())})),H()})}catch(G){let j=[];try{Kr(j,d,{},b,Fa)}catch{}let F=Ht(G,A,y,void 0,"");i(p,{command:"error",flags:j,error:F},()=>{F.detail=y.load(F.detail),R(ig("Transform failed",[F],[]),null)})}};if((typeof h=="string"||h instanceof Uint8Array)&&h.length>1024*1024){let f=u;u=()=>Y.writeFile(h,f)}u(null)},formatMessages:({callName:M,refs:p,messages:h,options:d,callback:b})=>{if(!d)throw new Error(Missing second argument in ${M}() call);let Y={},R=w(d,Y,"kind",T),y=w(d,Y,"color",cA),u=w(d,Y,"terminalWidth",Wt);if(MA(d,Y,in ${M}() call),R===void 0)throw new Error(Missing "kind" in ${M}() call);if(R!=="error"&&R!=="warning")throw new Error(Expected "kind" to be "error" or "warning" in ${M}() call);let f={command:"format-msgs",messages:ze(h,"messages",null,"",u),isWarning:R==="warning"};y!==void 0&&(f.color=y),u!==void 0&&(f.terminalWidth=u),i(p,f,(G,j)=>{if(G)return b(new Error(G),null);b(null,j.messages)})},analyzeMetafile:({callName:M,refs:p,metafile:h,options:d,callback:b})=>{d===void 0&&(d={});let Y={},R=w(d,Y,"color",cA),y=w(d,Y,"verbose",cA);MA(d,Y,in ${M}() call);let u={command:"analyze-metafile",metafile:h};R!==void 0&&(u.color=R),y!==void 0&&(u.verbose=y),i(p,u,(f,G)=>{if(f)return b(new Error(f),null);b(null,G.result)})}}}}function Of(A,e,t,o,g,r,n,Q,B,C,i){let I=Wa(),s=A==="context",E=(D,m)=>{let N=[];try{Kr(N,Q,{},B,Oa)}catch{}let M=Ht(D,r,I,void 0,m);t(g,{command:"error",flags:N,error:M},()=>{M.detail=I.load(M.detail),i(ig(s?"Context failed":"Build failed",[M],[]),null)})},c;if(typeof Q=="object"){let D=Q.plugins;if(D!==void 0){if(!Array.isArray(D))return E(new Error('"plugins" must be an array'),"");c=D}}if(c&&c.length>0){if(r.isSync)return E(new Error("Cannot use plugins in synchronous API calls"),"");Ff(e,t,o,g,r,n,Q,c,I).then(D=>{if(!D.ok)return E(D.error,D.pluginName);try{l(D.requestPlugins,D.runOnEndCallbacks,D.scheduleOnDisposeCallbacks)}catch(m){E(m,"")}},D=>E(D,""));return}try{l(null,(D,m)=>m([],[]),()=>{})}catch(D){E(D,"")}function l(D,m,N){let M=r.hasFS,{entries:p,flags:h,write:d,stdinContents:b,stdinResolveDir:Y,absWorkingDir:R,nodePaths:y,mangleCache:u}=bf(A,Q,B,Oa,M);if(d&&!r.hasFS)throw new Error('The "write" option is unavailable in this environment');let f={command:"build",key:e,entries:p,flags:h,write:d,stdinContents:b,stdinResolveDir:Y,absWorkingDir:R||C,nodePaths:y,context:s};D&&(f.plugins=D),u&&(f.mangleCache=u);let G=(Z,O)=>{let S={errors:ho(Z.errors,I),warnings:ho(Z.warnings,I),outputFiles:void 0,metafile:void 0,mangleCache:void 0},U=S.errors.slice(),v=S.warnings.slice();Z.outputFiles&&(S.outputFiles=Z.outputFiles.map(xf)),Z.metafile&&(S.metafile=JSON.parse(Z.metafile)),Z.mangleCache&&(S.mangleCache=Z.mangleCache),Z.writeToStdout!==void 0&&console.log(mo(Z.writeToStdout).replace(/\n$/,"")),m(S,(H,_)=>{if(U.length>0||H.length>0){let K=ig("Build failed",U.concat(H),v.concat(_));return O(K,null,H,_)}O(null,S,H,_)})},j,F;s&&(n["on-end"]=(Z,O)=>new Promise(S=>{G(O,(U,v,H,_)=>{let K={errors:H,warnings:_};F&&F(U,v),j=void 0,F=void 0,o(Z,K),S()})})),t(g,f,(Z,O)=>{if(Z)return i(new Error(Z),null);if(!s)return G(O,(v,H)=>(N(),i(v,H)));if(O.errors.length>0)return i(ig("Context failed",O.errors,O.warnings),null);let S=!1,U={rebuild:()=>(j||(j=new Promise((v,H)=>{let _;F=(FA,BA)=>{_||(_=()=>FA?H(FA):v(BA))};let K=()=>{t(g,{command:"rebuild",key:e},(BA,J)=>{BA?H(new Error(BA)):_?_():K()})};K()})),j),watch:(v={})=>new Promise((H,_)=>{if(!r.hasFS)throw new Error('Cannot use the "watch" API in this environment');MA(v,{},"in watch() call"),t(g,{command:"watch",key:e},BA=>{BA?_(new Error(BA)):H(void 0)})}),serve:(v={})=>new Promise((H,_)=>{if(!r.hasFS)throw new Error('Cannot use the "serve" API in this environment');let K={},FA=w(v,K,"port",Wt),BA=w(v,K,"host",T),J=w(v,K,"servedir",T),gA=w(v,K,"keyfile",T),vA=w(v,K,"certfile",T),Ue=w(v,K,"fallback",T),Le=w(v,K,"onRequest",Za);MA(v,K,"in serve() call");let Ne={command:"serve",key:e,onRequest:!!Le};FA!==void 0&&(Ne.port=FA),BA!==void 0&&(Ne.host=BA),J!==void 0&&(Ne.servedir=J),gA!==void 0&&(Ne.keyfile=gA),vA!==void 0&&(Ne.certfile=vA),Ue!==void 0&&(Ne.fallback=Ue),t(g,Ne,(Ni,im)=>{if(Ni)return _(new Error(Ni));Le&&(n["serve-request"]=(Im,sm)=>{Le(sm.args),o(Im,{})}),H(im)})}),cancel:()=>new Promise(v=>{if(S)return v();t(g,{command:"cancel",key:e},()=>{v()})}),dispose:()=>new Promise(v=>{if(S)return v();S=!0,t(g,{command:"dispose",key:e},()=>{v(),N(),g.unref()})})};g.ref(),i(null,U)})}}var Ff=async(A,e,t,o,g,r,n,Q,B)=>{let C=[],i=[],I={},s={},E=[],c=0,l=0,D=[],m=!1;Q=[...Q];for(let p of Q){let h={};if(typeof p!="object")throw new Error(Plugin at index ${l} must be an object);let d=w(p,h,"name",T);if(typeof d!="string"||d==="")throw new Error(Plugin at index ${l} is missing a name);try{let b=w(p,h,"setup",Za);if(typeof b!="function")throw new Error("Plugin is missing a setup function");MA(p,h,on plugin ${uA(d)});let Y={name:d,onStart:!1,onEnd:!1,onResolve:[],onLoad:[]};l++;let y=b({initialOptions:n,resolve:(u,f={})=>{if(!m)throw new Error('Cannot call "resolve" before plugin setup has completed');if(typeof u!="string")throw new Error("The path to resolve must be a string");let G=Object.create(null),j=w(f,G,"pluginName",T),F=w(f,G,"importer",T),Z=w(f,G,"namespace",T),O=w(f,G,"resolveDir",T),S=w(f,G,"kind",T),U=w(f,G,"pluginData",Xr),v=w(f,G,"with",ce);return MA(f,G,"in resolve() call"),new Promise((H,_)=>{let K={command:"resolve",path:u,key:A,pluginName:d};if(j!=null&&(K.pluginName=j),F!=null&&(K.importer=F),Z!=null&&(K.namespace=Z),O!=null&&(K.resolveDir=O),S!=null)K.kind=S;else throw new Error('Must specify "kind" when calling "resolve"');U!=null&&(K.pluginData=B.store(U)),v!=null&&(K.with=Jf(v,"with")),e(o,K,(FA,BA)=>{FA!==null?_(new Error(FA)):H({errors:ho(BA.errors,B),warnings:ho(BA.warnings,B),path:BA.path,external:BA.external,sideEffects:BA.sideEffects,namespace:BA.namespace,suffix:BA.suffix,pluginData:B.load(BA.pluginData)})})})},onStart(u){let f='This error came from the "onStart" callback registered here:',G=Hr(new Error(f),g,"onStart");C.push({name:d,callback:u,note:G}),Y.onStart=!0},onEnd(u){let f='This error came from the "onEnd" callback registered here:',G=Hr(new Error(f),g,"onEnd");i.push({name:d,callback:u,note:G}),Y.onEnd=!0},onResolve(u,f){let G='This error came from the "onResolve" callback registered here:',j=Hr(new Error(G),g,"onResolve"),F={},Z=w(u,F,"filter",zr),O=w(u,F,"namespace",T);if(MA(u,F,in onResolve() call for plugin ${uA(d)}),Z==null)throw new Error("onResolve() call is missing a filter");let S=c++;I[S]={name:d,callback:f,note:j},Y.onResolve.push({id:S,filter:Z.source,namespace:O||""})},onLoad(u,f){let G='This error came from the "onLoad" callback registered here:',j=Hr(new Error(G),g,"onLoad"),F={},Z=w(u,F,"filter",zr),O=w(u,F,"namespace",T);if(MA(u,F,in onLoad() call for plugin ${uA(d)}),Z==null)throw new Error("onLoad() call is missing a filter");let S=c++;s[S]={name:d,callback:f,note:j},Y.onLoad.push({id:S,filter:Z.source,namespace:O||""})},onDispose(u){E.push(u)},esbuild:g.esbuild});y&&await y,D.push(Y)}catch(b){return{ok:!1,error:b,pluginName:d}}}r["on-start"]=async(p,h)=>{let d={errors:[],warnings:[]};await Promise.all(C.map(async({name:b,callback:Y,note:R})=>{try{let y=await Y();if(y!=null){if(typeof y!="object")throw new Error(Expected onStart() callback in plugin ${uA(b)} to return an object);let u={},f=w(y,u,"errors",lA),G=w(y,u,"warnings",lA);MA(y,u,from onStart() callback in plugin ${uA(b)}),f!=null&&d.errors.push(...ze(f,"errors",B,b,void 0)),G!=null&&d.warnings.push(...ze(G,"warnings",B,b,void 0))}}catch(y){d.errors.push(Ht(y,g,B,R&&R(),b))}})),t(p,d)},r["on-resolve"]=async(p,h)=>{let d={},b="",Y,R;for(let y of h.ids)try{({name:b,callback:Y,note:R}=I[y]);let u=await Y({path:h.path,importer:h.importer,namespace:h.namespace,resolveDir:h.resolveDir,kind:h.kind,pluginData:B.load(h.pluginData),with:h.with});if(u!=null){if(typeof u!="object")throw new Error(Expected onResolve() callback in plugin ${uA(b)} to return an object);let f={},G=w(u,f,"pluginName",T),j=w(u,f,"path",T),F=w(u,f,"namespace",T),Z=w(u,f,"suffix",T),O=w(u,f,"external",cA),S=w(u,f,"sideEffects",cA),U=w(u,f,"pluginData",Xr),v=w(u,f,"errors",lA),H=w(u,f,"warnings",lA),_=w(u,f,"watchFiles",lA),K=w(u,f,"watchDirs",lA);MA(u,f,from onResolve() callback in plugin ${uA(b)}),d.id=y,G!=null&&(d.pluginName=G),j!=null&&(d.path=j),F!=null&&(d.namespace=F),Z!=null&&(d.suffix=Z),O!=null&&(d.external=O),S!=null&&(d.sideEffects=S),U!=null&&(d.pluginData=B.store(U)),v!=null&&(d.errors=ze(v,"errors",B,b,void 0)),H!=null&&(d.warnings=ze(H,"warnings",B,b,void 0)),_!=null&&(d.watchFiles=Wr(_,"watchFiles")),K!=null&&(d.watchDirs=Wr(K,"watchDirs"));break}}catch(u){d={id:y,errors:[Ht(u,g,B,R&&R(),b)]};break}t(p,d)},r["on-load"]=async(p,h)=>{let d={},b="",Y,R;for(let y of h.ids)try{({name:b,callback:Y,note:R}=s[y]);let u=await Y({path:h.path,namespace:h.namespace,suffix:h.suffix,pluginData:B.load(h.pluginData),with:h.with});if(u!=null){if(typeof u!="object")throw new Error(Expected onLoad() callback in plugin ${uA(b)} to return an object);let f={},G=w(u,f,"pluginName",T),j=w(u,f,"contents",La),F=w(u,f,"resolveDir",T),Z=w(u,f,"pluginData",Xr),O=w(u,f,"loader",T),S=w(u,f,"errors",lA),U=w(u,f,"warnings",lA),v=w(u,f,"watchFiles",lA),H=w(u,f,"watchDirs",lA);MA(u,f,from onLoad() callback in plugin ${uA(b)}),d.id=y,G!=null&&(d.pluginName=G),j instanceof Uint8Array?d.contents=j:j!=null&&(d.contents=de(j)),F!=null&&(d.resolveDir=F),Z!=null&&(d.pluginData=B.store(Z)),O!=null&&(d.loader=O),S!=null&&(d.errors=ze(S,"errors",B,b,void 0)),U!=null&&(d.warnings=ze(U,"warnings",B,b,void 0)),v!=null&&(d.watchFiles=Wr(v,"watchFiles")),H!=null&&(d.watchDirs=Wr(H,"watchDirs"));break}}catch(u){d={id:y,errors:[Ht(u,g,B,R&&R(),b)]};break}t(p,d)};let N=(p,h)=>h([],[]);i.length>0&&(N=(p,h)=>{(async()=>{let d=[],b=[];for(let{name:Y,callback:R,note:y}of i){let u,f;try{let G=await R(p);if(G!=null){if(typeof G!="object")throw new Error(Expected onEnd() callback in plugin ${uA(Y)} to return an object);let j={},F=w(G,j,"errors",lA),Z=w(G,j,"warnings",lA);MA(G,j,from onEnd() callback in plugin ${uA(Y)}),F!=null&&(u=ze(F,"errors",B,Y,void 0)),Z!=null&&(f=ze(Z,"warnings",B,Y,void 0))}}catch(G){u=[Ht(G,g,B,y&&y(),Y)]}if(u){d.push(...u);try{p.errors.push(...u)}catch{}}if(f){b.push(...f);try{p.warnings.push(...f)}catch{}}}h(d,b)})()});let M=()=>{for(let p of E)setTimeout(()=>p(),0)};return m=!0,{ok:!0,requestPlugins:D,runOnEndCallbacks:N,scheduleOnDisposeCallbacks:M}};function Wa(){let A=new Map,e=0;return{load(t){return A.get(t)},store(t){if(t===void 0)return-1;let o=e++;return A.set(o,t),o}}}function Hr(A,e,t){let o,g=!1;return()=>{if(g)return o;g=!0;try{let r=(A.stack+"").split( );r.splice(1,1);let n=Xa(e,r,t);if(n)return o={text:A.message,location:n},o}catch{}}}function Ht(A,e,t,o,g){let r="Internal error",n=null;try{r=(A&&A.message||A)+""}catch{}try{n=Xa(e,(A.stack+"").split(
),"")}catch{}return{id:"",pluginName:g,text:r,location:n,notes:o?[o]:[],detail:t?t.store(A):-1}}function Xa(A,e,t){let o=" at ";if(A.readFileSync&&!e[0].startsWith(o)&&e[1].startsWith(o))for(let g=1;g<e.length;g++){let r=e[g];if(r.startsWith(o))for(r=r.slice(o.length);;){let n=/^(?:new |async )?\S+ \((.*)\)$/.exec(r);if(n){r=n[1];continue}if(n=/^eval at \S+ \((.*)\)(?:, \S+:\d+:\d+)?$/.exec(r),n){r=n[1];continue}if(n=/^(\S+):(\d+):(\d+)$/.exec(r),n){let Q;try{Q=A.readFileSync(n[1],"utf8")}catch{break}let B=Q.split(/\r\n|\r|\n|\u2028|\u2029/)[+n[2]-1]||"",C=+n[3]-1,i=B.slice(C,C+t.length)===t?t.length:0;return{file:n[1],namespace:"file",line:+n[2],column:de(B.slice(0,C)).length,length:de(B.slice(C,C+i)).length,lineText:B+
+e.slice(1).join(
),suggestion:""}}break}}return null}function ig(A,e,t){let o=5;A+=e.length<1?"": with ${e.length} error${e.length<2?"":"s"}:+e.slice(0,o+1).map((r,n)=>{if(n===o)return
...;if(!r.location)return
${Q}:${B}:${C}: ERROR: ${i}${r.text}}).join("");let g=new Error(A);for(let[r,n]of[["errors",e],["warnings",t]])Object.defineProperty(g,r,{configurable:!0,enumerable:!0,get:()=>n,set:Q=>Object.defineProperty(g,r,{configurable:!0,enumerable:!0,value:Q})});return g}function ho(A,e){for(let t of A)t.detail=e.load(t.detail);return A}function Ra(A,e,t){if(A==null)return null;let o={},g=w(A,o,"file",T),r=w(A,o,"namespace",T),n=w(A,o,"line",Wt),Q=w(A,o,"column",Wt),B=w(A,o,"length",Wt),C=w(A,o,"lineText",T),i=w(A,o,"suggestion",T);if(MA(A,o,e),C){let I=C.slice(0,(Q&&Q>0?Q:0)+(B&&B>0?B:0)+(t&&t>0?t:80));!/[\x7F-\uFFFF]/.test(I)&&!/\n/.test(C)&&(C=I)}return{file:g||"",namespace:r||"",line:n||0,column:Q||0,length:B||0,lineText:C||"",suggestion:i||""}}function ze(A,e,t,o,g){let r=[],n=0;for(let Q of A){let B={},C=w(Q,B,"id",T),i=w(Q,B,"pluginName",T),I=w(Q,B,"text",T),s=w(Q,B,"location",xa),E=w(Q,B,"notes",lA),c=w(Q,B,"detail",Xr),l=in element ${n} of "${e}";MA(Q,B,l);let D=[];if(E)for(let m of E){let N={},M=w(m,N,"text",T),p=w(m,N,"location",xa);MA(m,N,l),D.push({text:M||"",location:Ra(p,l,g)})}r.push({id:C||"",pluginName:i||o,text:I||"",location:Ra(s,l,g),notes:D,detail:t?t.store(c):-1}),n++}return r}function Wr(A,e){let t=[];for(let o of A){if(typeof o!="string")throw new Error(${uA(e)} must be an array of strings);t.push(o)}return t}function Jf(A,e){let t=Object.create(null);for(let o in A){let g=A[o];if(typeof g!="string")throw new Error(key ${uA(o)} in object ${uA(e)} must be a string);t[o]=g}return t}function xf({path:A,contents:e,hash:t}){let o=null;return{path:A,contents:e,hash:t,get text(){let g=this.contents;return(o===null||g!==e)&&(e=g,o=mo(g)),o}}}var Ka=Cg,Vr=A=>qr().build(A),Pa=(A,e)=>qr().transform(A,e),Va=(A,e)=>qr().formatMessages(A,e),qa=(A,e)=>qr().analyzeMetafile(A,e);var Xt,za,Pr,qr=()=>{if(Pr)return Pr;throw Xt?new Error('You need to wait for the promise returned from "initialize" to be resolved before calling this'):new Error('You need to call "initialize" before calling this')},_r=A=>{A=Ta(A||{});let e=A.wasmModule,t=A.workerURL;if(!e)throw new Error('Must provide the "wasmModule" option');if(Xt)throw new Error('Cannot call "initialize" more than once');return Xt=Zf(e,t),Xt.catch(()=>{Xt=void 0}),Xt},Zf=async(A,e)=>{let t=new Worker(e.toString(),{type:"module"}),o,g,r=new Promise((B,C)=>{o=B,g=C});t.onmessage=({data:B})=>{t.onmessage=({data:C})=>n(C),B?g(B):o()},t.postMessage(A);let{readFromStdout:n,service:Q}=Ha({writeToStdin(B){t.postMessage(B)},isSync:!1,hasFS:!1,esbuild:{build:Vr,transform:Pa,formatMessages:Va,analyzeMetafile:qa,version:Ka,initialize:_r}});await r,za=()=>{t.terminate(),Xt=void 0,za=void 0,Pr=void 0},Pr={build:B=>new Promise((C,i)=>Q.buildOrContext({callName:"build",refs:null,options:B,isTTY:!1,defaultWD:"/",callback:(I,s)=>I?i(I):C(s)})),transform:(B,C)=>new Promise((i,I)=>Q.transform({callName:"transform",refs:null,input:B,options:C||{},isTTY:!1,fs:{readFile(s,E){E(new Error("Internal error"),null)},writeFile(s,E){E(null)}},callback:(s,E)=>s?I(s):i(E)})),formatMessages:(B,C)=>new Promise((i,I)=>Q.formatMessages({callName:"formatMessages",refs:null,messages:B,options:C,callback:(s,E)=>s?I(s):i(E)})),analyzeMetafile:(B,C)=>new Promise((i,I)=>Q.analyzeMetafile({callName:"analyzeMetafile",refs:null,metafile:typeof B=="string"?B:JSON.stringify(B),options:C,callback:(s,E)=>s?I(s):i(E)}))}};self.Deno||(self.Deno={build:{os:"linux"},errors:{AlreadyExists:Error},env:{get:()=>{}},permissions:{query:()=>Promise.resolve("denied")},cwd:()=>location.href});function HA(A){if(typeof A!="string")throw new TypeError(Path must be a string. Received ${JSON.stringify(A)})}function Oe(A){return A===47||A===92}function Ke(A){return A>=97&&A<=122||A>=65&&A<=90}function eQ(A){if(A=A instanceof URL?A:new URL(A),A.protocol!=="file:")throw new TypeError("Must be a file URL.");return A}function _a(A){A=eQ(A);let e=decodeURIComponent(A.pathname.replace(/\//g,"\\").replace(/%(?![0-9A-Fa-f]{2})/g,"%25")).replace(/^\\*([A-Za-z]:)(\\|$)/,"$1\\");return A.hostname!==""&&(e=\\\\${A.hostname}${e}),e}function FB(A){HA(A);let e=A.length;if(e===0)return!1;let t=A.charCodeAt(0);return Oe(t)?!0:!!(Ke(t)&&e>2&&A.charCodeAt(1)===58&&Oe(A.charCodeAt(2)))}var tQ=class extends Error{constructor(e){super(e),this.name="AssertionError"}};function uo(A,e=""){if(!A)throw new tQ(e)}var qf={" ":"%09","\n":"%0A","\v":"%0B","\f":"%0C","\r":"%0D"," ":"%20"};function oQ(A){return A.replaceAll(/[\s]/g,e=>qf[e]??e)}function ec(A){if(!FB(A))throw new TypeError("Must be an absolute path.");let[,e,t]=A.match(/^(?:[/\\]{2}([^/\\]+)(?=[/\\](?:[^/\\]|$)))?(.*)/),o=new URL("file:///");if(o.pathname=oQ(t.replace(/%/g,"%25")),e!==void 0&&e!=="localhost"&&(o.hostname=e,!o.hostname))throw new TypeError("Invalid hostname.");return o}function Pe(A){return A===47}function gc(A){return A=eQ(A),decodeURIComponent(A.pathname.replace(/%(?![0-9A-Fa-f]{2})/g,"%25"))}function xB(A){return HA(A),A.length>0&&Pe(A.charCodeAt(0))}function Qc(A){if(!xB(A))throw new TypeError("Must be an absolute path.");let e=new URL("file:///");return e.pathname=oQ(A.replace(/%/g,"%25").replace(/\\/g,"%5C")),e}var BN=(()=>{let{Deno:A}=globalThis;if(typeof A?.build?.os=="string")return A.build.os;let{navigator:e}=globalThis;return e?.appVersion?.includes?.("Win")?"windows":"linux"})(),fA=BN==="windows";function Mo(A){return fA?_a(A):gc(A)}function fo(A){return fA?ec(A):Qc(A)}var b8=Deno.build.os==="windows";var r5=Deno.build.os==="windows";var l5=new Deno.errors.AlreadyExists("dest already exists.");var N5=Deno.build.os==="windows";var EN=
,aN=\r
,G5=Deno?.build.os==="windows"?aN:EN;var rQ={};ot(rQ,{parse:()=>cN});function cN(A,{allowTrailingComma:e=!0}={}){if(new.target)throw new TypeError("parse is not a constructor");return new LB(A,{allowTrailingComma:e}).parse()}var Cc=globalThis.JSON.parse,LB=class{#r=new Set( \r
);#t=new Set([..."[]{}:,/",...this.#r]);#e;#A;#g;#n;constructor(e,t){this.#e=${e},this.#A=this.#e.length,this.#g=this.#C(),this.#n=t}parse(){let e=this.#o(),t=this.#i(e),{done:o,value:g}=this.#g.next();if(!o)throw new SyntaxError(ct(g));return t}#o(){let{done:e,value:t}=this.#g.next();if(e)throw new SyntaxError("Unexpected end of JSONC input");return t}*#C(){for(let e=0;e<this.#A;e++)if(!this.#r.has(this.#e[e])){if(this.#e[e]==="/"&&this.#e[e+1]==="*"){e+=2;let t=!1;for(;e<this.#A;e++)if(this.#e[e]==="*"&&this.#e[e+1]==="/"){t=!0;break}if(!t)throw new SyntaxError("Unexpected end of JSONC input");e++;continue}if(this.#e[e]==="/"&&this.#e[e+1]==="/"){for(e+=2;e<this.#A&&!(this.#e[e]===
||this.#e[e]==="\r");e++);continue}switch(this.#e[e]){case"{":yield{type:"BeginObject",position:e};break;case"}":yield{type:"EndObject",position:e};break;case"[":yield{type:"BeginArray",position:e};break;case"]":yield{type:"EndArray",position:e};break;case":":yield{type:"NameSeparator",position:e};break;case",":yield{type:"ValueSeparator",position:e};break;case'"':{let t=e,o=!1;for(e++;e<this.#A&&!(this.#e[e]==='"'&&!o);e++)o=this.#e[e]==="\\"&&!o;yield{type:"String",sourceText:this.#e.substring(t,e+1),position:t};break}default:{let t=e;for(;e<this.#A&&!this.#t.has(this.#e[e]);e++);e--,yield{type:"NullOrTrueOrFalseOrNumber",sourceText:this.#e.substring(t,e+1),position:t}}}}}#i(e){switch(e.type){case"BeginObject":return this.#s();case"BeginArray":return this.#Q();case"NullOrTrueOrFalseOrNumber":return this.#l(e);case"String":return this.#c(e);default:throw new SyntaxError(ct(e))}}#s(){let e={};for(let t=!0;;t=!1){let o=this.#o();if((t||this.#n.allowTrailingComma)&&o.type==="EndObject")return e;if(o.type!=="String")throw new SyntaxError(ct(o));let g=this.#c(o),r=this.#o();if(r.type!=="NameSeparator")throw new SyntaxError(ct(r));let n=this.#o();Object.defineProperty(e,g,{value:this.#i(n),writable:!0,enumerable:!0,configurable:!0});let Q=this.#o();if(Q.type==="EndObject")return e;if(Q.type!=="ValueSeparator")throw new SyntaxError(ct(Q))}}#Q(){let e=[];for(let t=!0;;t=!1){let o=this.#o();if((t||this.#n.allowTrailingComma)&&o.type==="EndArray")return e;e.push(this.#i(o));let g=this.#o();if(g.type==="EndArray")return e;if(g.type!=="ValueSeparator")throw new SyntaxError(ct(g))}}#c(e){let t;try{t=Cc(e.sourceText)}catch{throw new SyntaxError(ct(e))}return uo(typeof t=="string"),t}#l(e){if(e.sourceText==="null")return null;if(e.sourceText==="true")return!0;if(e.sourceText==="false")return!1;let t;try{t=Cc(e.sourceText)}catch{throw new SyntaxError(ct(e))}return uo(typeof t=="number"),t}};function ct({type:A,sourceText:e,position:t}){let o="";switch(A){case"BeginObject":o="{";break;case"EndObject":o="}";break;case"BeginArray":o="[";break;case"EndArray":o="]";break;case"NameSeparator":o=":";break;case"ValueSeparator":o=",";break;case"NullOrTrueOrFalseOrNumber":case"String":o=30<e.length?${e.slice(0,30)}...:e;break;default:throw new Error("unreachable")}returnUnexpected token ${o} in JSONC at position ${t}}var W5=new TextEncoder;var lN=[],DN=[],TB="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";for(let A=0,e=TB.length;A<e;++A)lN[A]=TB[A],DN[TB.charCodeAt(A)]=A;function QQ(A){return typeof A=="object"&&A!==null&&A.constructor===Object}function nQ(A){let e={},t=Object.keys(A).sort((o,g)=>g.length-o.length);for(let o of t)e[o]=A[o];return e}function ic(A){return QQ(A)&&(A.imports!==void 0?SB(A.imports):!0)&&(A.scopes!==void 0?vB(A.scopes):!0)}function SB(A){return QQ(A)}function vB(A){return QQ(A)&&Object.values(A).every(e=>HB(e))}function HB(A){return QQ(A)}function BQ(A){try{return new URL(A),!0}catch{return!1}}function sc(A,e){let t={};for(let[o,g]of Object.entries(A)){let r=wN(o,e);if(r===null)continue;if(typeof g!="string"){console.warn("addresses need to be strings."),t[r]=null;continue}let n=WB(g,e);if(n===null){console.warn("the address was invalid."),t[r]=null;continue}if(o.endsWith("/")&&!Fe(n).endsWith("/")){console.warn("an invalid address was given for the specifier key specifierKey; since specifierKey ended in a slash, the address needs to as well."),t[r]=null;continue}t[r]=Fe(n)}return nQ(t)}function Fe(A){return A.href}function pN(A,e){let t={};for(let[g,r]of Object.entries(A)){if(!HB(r))throw new TypeError("the value of the scope with prefix scopePrefix needs to be an object.");let n;try{n=new URL(g,e)}catch{console.warn("the scope prefix URL was not parseable.");continue}let Q=Fe(n);t[Q]=sc(r,e)}let o={};for(let g of Object.keys(t))o[g]=nQ(t[g]);return nQ(o)}function wN(A,e){if(!A.length)return console.warn("specifier key cannot be an empty string."),null;let t=WB(A,e);return t!==null?Fe(t):A}function WB(A,e){if(e&&(A.startsWith("/")||A.startsWith("./")||A.startsWith("../")))try{return new URL(A,e)}catch{return null}try{return new URL(A)}catch{return null}}var mN=["ftp","file","http","https","ws","wss"];function hN(A){return mN.some(e=>Fe(A).startsWith(e))}function Ic(A,e,t){for(let[o,g]of Object.entries(t))if(o===A){if(g===null)throw new TypeError("resolution of specifierKey was blocked by a null entry.");if(!BQ(g))throw new TypeError("resolutionResult must be an URL.");return g}else if(o.endsWith("/")&&A.startsWith(o)&&(e===null||hN(e))){if(g===null)throw new TypeError("resolution of specifierKey was blocked by a null entry.");if(!BQ(g))throw new TypeError("resolutionResult must be an URL.");let r=A.slice(o.length);if(!g.endsWith("/"))throw new TypeError('resolutionResult does not end with "/"');try{let n=new URL(r,g);if(!BQ(n))throw new TypeError("url must be an URL.");if(!Fe(n).startsWith(g))throw new TypeError("resolution of normalizedSpecifier was blocked due to it backtracking above its prefix specifierKey.");return Fe(n)}catch{throw new TypeError("resolution of normalizedSpecifier was blocked since the afterPrefix portion could not be URL-parsed relative to the resolutionResult mapped to by the specifierKey prefix.")}}return null}function CQ(A,e){let t={};if(!ic(A))throw new TypeError("the top-level value needs to be a JSON object.");let{imports:o,scopes:g}=A;if(o!==void 0){if(!SB(o))throw new TypeError('"imports" top-level key needs to be an object.');t=sc(o,e)}let r={};if(g!==void 0){if(!vB(g))throw new TypeError('"scopes" top-level key needs to be an object.');r=pN(g,e)}return Object.keys(A).find(n=>n!=="imports"&&n!=="scopes")&&console.warn("an invalid top-level key was present in the import map."),{imports:t,scopes:r}}function XB(A,{imports:e={},scopes:t={}},o){let g=Fe(o),r=WB(A,o),n=r!==null?Fe(r):A;for(let[B,C]of Object.entries(t))if(B===g||B.endsWith("/")&&g.startsWith(B)){let i=Ic(n,r,C);if(i!==null)return i}let Q=Ic(n,r,e);if(Q!==null)return Q;if(r!==null)return Fe(r);throw new TypeError("specifier was a bare specifier, but was not remapped to anything by importMap.")}var Ec=(()=>{let{Deno:A}=globalThis;if(typeof A?.build?.os=="string")return A.build.os;let{navigator:e}=globalThis;return e?.appVersion?.includes?.("Win")?"windows":"linux"})(),ag=Ec==="windows";var cg={};ot(cg,{basename:()=>FN,delimiter:()=>kN,dirname:()=>ON,extname:()=>JN,format:()=>xN,fromFileUrl:()=>ZN,isAbsolute:()=>cc,join:()=>YN,normalize:()=>ac,parse:()=>RN,relative:()=>bN,resolve:()=>EQ,sep:()=>GN,toFileUrl:()=>UN,toNamespacedPath:()=>jN});function DA(A){if(typeof A!="string")throw new TypeError(Path must be a string. Received ${JSON.stringify(A)})}function iQ(A){return A===47}function z(A){return iQ(A)||A===92}function qe(A){return A>=97&&A<=122||A>=65&&A<=90}function No(A,e,t,o){let g="",r=0,n=-1,Q=0,B;for(let C=0,i=A.length;C<=i;++C){if(C<i)B=A.charCodeAt(C);else{if(o(B))break;B=47}if(o(B)){if(!(n===C-1||Q===1))if(n!==C-1&&Q===2){if(g.length<2||r!==2||g.charCodeAt(g.length-1)!==46||g.charCodeAt(g.length-2)!==46){if(g.length>2){let I=g.lastIndexOf(t);I===-1?(g="",r=0):(g=g.slice(0,I),r=g.length-1-g.lastIndexOf(t)),n=C,Q=0;continue}else if(g.length===2||g.length===1){g="",r=0,n=C,Q=0;continue}}e&&(g.length>0?g+=${t}..:g="..",r=2)}else g.length>0?g+=t+A.slice(n+1,C):g=A.slice(n+1,C),r=C-n-1;n=C,Q=0}else B===46&&Q!==-1?++Q:Q=-1}return g}function IQ(A,e){let t=e.dir||e.root,o=e.base||(e.name||"")+(e.ext||"");return t?t===e.root?t+o:t+A+o:o}var NN={" ":"%09","\n":"%0A","\v":"%0B","\f":"%0C","\r":"%0D"," ":"%20"};function sQ(A){return A.replaceAll(/[\s]/g,e=>NN[e]??e)}var zB=class extends Error{constructor(e){super(e),this.name="DenoStdInternalError"}};function KB(A,e=""){if(!A)throw new zB(e)}var GN="\\",kN=";";function EQ(...A){let e="",t="",o=!1;for(let g=A.length-1;g>=-1;g--){let r,{Deno:n}=globalThis;if(g>=0)r=A[g];else if(e){if(typeof n?.env?.get!="function"||typeof n?.cwd!="function")throw new TypeError("Resolved a relative path without a CWD.");r=n.cwd(),(r===void 0||r.slice(0,3).toLowerCase()!==${e.toLowerCase()}\\)&&(r=${e}\\)}else{if(typeof n?.cwd!="function")throw new TypeError("Resolved a drive-letter-less path without a CWD.");r=n.cwd()}DA(r);let Q=r.length;if(Q===0)continue;let B=0,C="",i=!1,I=r.charCodeAt(0);if(Q>1)if(z(I))if(i=!0,z(r.charCodeAt(1))){let s=2,E=s;for(;s<Q&&!z(r.charCodeAt(s));++s);if(s<Q&&s!==E){let c=r.slice(E,s);for(E=s;s<Q&&z(r.charCodeAt(s));++s);if(s<Q&&s!==E){for(E=s;s<Q&&!z(r.charCodeAt(s));++s);s===Q?(C=\\\\${c}\\${r.slice(E)},B=s):s!==E&&(C=\\\\${c}\\${r.slice(E,s)},B=s)}}}else B=1;else qe(I)&&r.charCodeAt(1)===58&&(C=r.slice(0,2),B=2,Q>2&&z(r.charCodeAt(2))&&(i=!0,B=3));else z(I)&&(B=1,i=!0);if(!(C.length>0&&e.length>0&&C.toLowerCase()!==e.toLowerCase())&&(e.length===0&&C.length>0&&(e=C),o||(t=${r.slice(B)}\\${t},o=i),o&&e.length>0))break}return t=No(t,!o,"\\",z),e+(o?"\\":"")+t||"."}function ac(A){DA(A);let e=A.length;if(e===0)return".";let t=0,o,g=!1,r=A.charCodeAt(0);if(e>1)if(z(r))if(g=!0,z(A.charCodeAt(1))){let Q=2,B=Q;for(;Q<e&&!z(A.charCodeAt(Q));++Q);if(Q<e&&Q!==B){let C=A.slice(B,Q);for(B=Q;Q<e&&z(A.charCodeAt(Q));++Q);if(Q<e&&Q!==B){for(B=Q;Q<e&&!z(A.charCodeAt(Q));++Q);if(Q===e)return\\\\${C}\\${A.slice(B)}\\;Q!==B&&(o=\\\\${C}\\${A.slice(B,Q)},t=Q)}}}else t=1;else qe(r)&&A.charCodeAt(1)===58&&(o=A.slice(0,2),t=2,e>2&&z(A.charCodeAt(2))&&(g=!0,t=3));else if(z(r))return"\\";let n;return t<e?n=No(A.slice(t),!g,"\\",z):n="",n.length===0&&!g&&(n="."),n.length>0&&z(A.charCodeAt(e-1))&&(n+="\\"),o===void 0?g?n.length>0?\\${n}:"\\":n.length>0?n:"":g?n.length>0?${o}\\${n}:${o}\\:n.length>0?o+n:o}function cc(A){DA(A);let e=A.length;if(e===0)return!1;let t=A.charCodeAt(0);return z(t)?!0:!!(qe(t)&&e>2&&A.charCodeAt(1)===58&&z(A.charCodeAt(2)))}function YN(...A){let e=A.length;if(e===0)return".";let t,o=null;for(let n=0;n<e;++n){let Q=A[n];DA(Q),Q.length>0&&(t===void 0?t=o=Q:t+=\\${Q})}if(t===void 0)return".";let g=!0,r=0;if(KB(o!=null),z(o.charCodeAt(0))){++r;let n=o.length;n>1&&z(o.charCodeAt(1))&&(++r,n>2&&(z(o.charCodeAt(2))?++r:g=!1))}if(g){for(;r<t.length&&z(t.charCodeAt(r));++r);r>=2&&(t=\\${t.slice(r)})}return ac(t)}function bN(A,e){if(DA(A),DA(e),A===e)return"";let t=EQ(A),o=EQ(e);if(t===o||(A=t.toLowerCase(),e=o.toLowerCase(),A===e))return"";let g=0,r=A.length;for(;g<r&&A.charCodeAt(g)===92;++g);for(;r-1>g&&A.charCodeAt(r-1)===92;--r);let n=r-g,Q=0,B=e.length;for(;Q<B&&e.charCodeAt(Q)===92;++Q);for(;B-1>Q&&e.charCodeAt(B-1)===92;--B);let C=B-Q,i=n<C?n:C,I=-1,s=0;for(;s<=i;++s){if(s===i){if(C>i){if(e.charCodeAt(Q+s)===92)return o.slice(Q+s+1);if(s===2)return o.slice(Q+s)}n>i&&(A.charCodeAt(g+s)===92?I=s:s===2&&(I=3));break}let c=A.charCodeAt(g+s),l=e.charCodeAt(Q+s);if(c!==l)break;c===92&&(I=s)}if(s!==i&&I===-1)return o;let E="";for(I===-1&&(I=0),s=g+I+1;s<=r;++s)(s===r||A.charCodeAt(s)===92)&&(E.length===0?E+="..":E+="\\..");return E.length>0?E+o.slice(Q+I,B):(Q+=I,o.charCodeAt(Q)===92&&++Q,o.slice(Q,B))}function jN(A){if(typeof A!="string")return A;if(A.length===0)return"";let e=EQ(A);if(e.length>=3){if(e.charCodeAt(0)===92){if(e.charCodeAt(1)===92){let t=e.charCodeAt(2);if(t!==63&&t!==46)return\\\\?\\UNC\\${e.slice(2)}}}else if(qe(e.charCodeAt(0))&&e.charCodeAt(1)===58&&e.charCodeAt(2)===92)return\\\\?\\${e}}return A}function ON(A){DA(A);let e=A.length;if(e===0)return".";let t=-1,o=-1,g=!0,r=0,n=A.charCodeAt(0);if(e>1)if(z(n)){if(t=r=1,z(A.charCodeAt(1))){let Q=2,B=Q;for(;Q<e&&!z(A.charCodeAt(Q));++Q);if(Q<e&&Q!==B){for(B=Q;Q<e&&z(A.charCodeAt(Q));++Q);if(Q<e&&Q!==B){for(B=Q;Q<e&&!z(A.charCodeAt(Q));++Q);if(Q===e)return A;Q!==B&&(t=r=Q+1)}}}}else qe(n)&&A.charCodeAt(1)===58&&(t=r=2,e>2&&z(A.charCodeAt(2))&&(t=r=3));else if(z(n))return A;for(let Q=e-1;Q>=r;--Q)if(z(A.charCodeAt(Q))){if(!g){o=Q;break}}else g=!1;if(o===-1){if(t===-1)return".";o=t}return A.slice(0,o)}function FN(A,e=""){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');DA(A);let t=0,o=-1,g=!0,r;if(A.length>=2){let n=A.charCodeAt(0);qe(n)&&A.charCodeAt(1)===58&&(t=2)}if(e!==void 0&&e.length>0&&e.length<=A.length){if(e.length===A.length&&e===A)return"";let n=e.length-1,Q=-1;for(r=A.length-1;r>=t;--r){let B=A.charCodeAt(r);if(z(B)){if(!g){t=r+1;break}}else Q===-1&&(g=!1,Q=r+1),n>=0&&(B===e.charCodeAt(n)?--n===-1&&(o=r):(n=-1,o=Q))}return t===o?o=Q:o===-1&&(o=A.length),A.slice(t,o)}else{for(r=A.length-1;r>=t;--r)if(z(A.charCodeAt(r))){if(!g){t=r+1;break}}else o===-1&&(g=!1,o=r+1);return o===-1?"":A.slice(t,o)}}function JN(A){DA(A);let e=0,t=-1,o=0,g=-1,r=!0,n=0;A.length>=2&&A.charCodeAt(1)===58&&qe(A.charCodeAt(0))&&(e=o=2);for(let Q=A.length-1;Q>=e;--Q){let B=A.charCodeAt(Q);if(z(B)){if(!r){o=Q+1;break}continue}g===-1&&(r=!1,g=Q+1),B===46?t===-1?t=Q:n!==1&&(n=1):t!==-1&&(n=-1)}return t===-1||g===-1||n===0||n===1&&t===g-1&&t===o+1?"":A.slice(t,g)}function xN(A){if(A===null||typeof A!="object")throw new TypeError(The "pathObject" argument must be of type Object. Received type ${typeof A});return IQ("\\",A)}function RN(A){DA(A);let e={root:"",dir:"",base:"",ext:"",name:""},t=A.length;if(t===0)return e;let o=0,g=A.charCodeAt(0);if(t>1){if(z(g)){if(o=1,z(A.charCodeAt(1))){let I=2,s=I;for(;I<t&&!z(A.charCodeAt(I));++I);if(I<t&&I!==s){for(s=I;I<t&&z(A.charCodeAt(I));++I);if(I<t&&I!==s){for(s=I;I<t&&!z(A.charCodeAt(I));++I);I===t?o=I:I!==s&&(o=I+1)}}}}else if(qe(g)&&A.charCodeAt(1)===58)if(o=2,t>2){if(z(A.charCodeAt(2))){if(t===3)return e.root=e.dir=A,e;o=3}}else return e.root=e.dir=A,e}else if(z(g))return e.root=e.dir=A,e;o>0&&(e.root=A.slice(0,o));let r=-1,n=o,Q=-1,B=!0,C=A.length-1,i=0;for(;C>=o;--C){if(g=A.charCodeAt(C),z(g)){if(!B){n=C+1;break}continue}Q===-1&&(B=!1,Q=C+1),g===46?r===-1?r=C:i!==1&&(i=1):r!==-1&&(i=-1)}return r===-1||Q===-1||i===0||i===1&&r===Q-1&&r===n+1?Q!==-1&&(e.base=e.name=A.slice(n,Q)):(e.name=A.slice(n,r),e.base=A.slice(n,Q),e.ext=A.slice(r,Q)),n>0&&n!==o?e.dir=A.slice(0,n-1):e.dir=e.root,e}function ZN(A){if(A=A instanceof URL?A:new URL(A),A.protocol!="file:")throw new TypeError("Must be a file URL.");let e=decodeURIComponent(A.pathname.replace(/\//g,"\\").replace(/%(?![0-9A-Fa-f]{2})/g,"%25")).replace(/^\\*([A-Za-z]:)(\\|$)/,"$1\\");return A.hostname!=""&&(e=\\\\${A.hostname}${e}),e}function UN(A){if(!cc(A))throw new TypeError("Must be an absolute path.");let[,e,t]=A.match(/^(?:[/\\]{2}([^/\\]+)(?=[/\\](?:[^/\\]|$)))?(.*)/),o=new URL("file:///");if(o.pathname=sQ(t.replace(/%/g,"%25")),e!=null&&e!="localhost"&&(o.hostname=e,!o.hostname))throw new TypeError("Invalid hostname.");return o}var lg={};ot(lg,{basename:()=>XN,delimiter:()=>TN,dirname:()=>WN,extname:()=>zN,format:()=>KN,fromFileUrl:()=>VN,isAbsolute:()=>Dc,join:()=>SN,normalize:()=>lc,parse:()=>PN,relative:()=>vN,resolve:()=>PB,sep:()=>LN,toFileUrl:()=>qN,toNamespacedPath:()=>HN});var LN="/",TN=":";function PB(...A){let e="",t=!1;for(let o=A.length-1;o>=-1&&!t;o--){let g;if(o>=0)g=A[o];else{let{Deno:r}=globalThis;if(typeof r?.cwd!="function")throw new TypeError("Resolved a relative path without a CWD.");g=r.cwd()}DA(g),g.length!==0&&(e=${g}/${e},t=g.charCodeAt(0)===47)}return e=No(e,!t,"/",iQ),t?e.length>0?/${e}:"/":e.length>0?e:"."}function lc(A){if(DA(A),A.length===0)return".";let e=A.charCodeAt(0)===47,t=A.charCodeAt(A.length-1)===47;return A=No(A,!e,"/",iQ),A.length===0&&!e&&(A="."),A.length>0&&t&&(A+="/"),e?/${A}:A}function Dc(A){return DA(A),A.length>0&&A.charCodeAt(0)===47}function SN(...A){if(A.length===0)return".";let e;for(let t=0,o=A.length;t<o;++t){let g=A[t];DA(g),g.length>0&&(e?e+=/${g}:e=g)}return e?lc(e):"."}function vN(A,e){if(DA(A),DA(e),A===e||(A=PB(A),e=PB(e),A===e))return"";let t=1,o=A.length;for(;t<o&&A.charCodeAt(t)===47;++t);let g=o-t,r=1,n=e.length;for(;r<n&&e.charCodeAt(r)===47;++r);let Q=n-r,B=g<Q?g:Q,C=-1,i=0;for(;i<=B;++i){if(i===B){if(Q>B){if(e.charCodeAt(r+i)===47)return e.slice(r+i+1);if(i===0)return e.slice(r+i)}else g>B&&(A.charCodeAt(t+i)===47?C=i:i===0&&(C=0));break}let s=A.charCodeAt(t+i),E=e.charCodeAt(r+i);if(s!==E)break;s===47&&(C=i)}let I="";for(i=t+C+1;i<=o;++i)(i===o||A.charCodeAt(i)===47)&&(I.length===0?I+="..":I+="/..");return I.length>0?I+e.slice(r+C):(r+=C,e.charCodeAt(r)===47&&++r,e.slice(r))}function HN(A){return A}function WN(A){if(DA(A),A.length===0)return".";let e=A.charCodeAt(0)===47,t=-1,o=!0;for(let g=A.length-1;g>=1;--g)if(A.charCodeAt(g)===47){if(!o){t=g;break}}else o=!1;return t===-1?e?"/":".":e&&t===1?"//":A.slice(0,t)}function XN(A,e=""){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');DA(A);let t=0,o=-1,g=!0,r;if(e!==void 0&&e.length>0&&e.length<=A.length){if(e.length===A.length&&e===A)return"";let n=e.length-1,Q=-1;for(r=A.length-1;r>=0;--r){let B=A.charCodeAt(r);if(B===47){if(!g){t=r+1;break}}else Q===-1&&(g=!1,Q=r+1),n>=0&&(B===e.charCodeAt(n)?--n===-1&&(o=r):(n=-1,o=Q))}return t===o?o=Q:o===-1&&(o=A.length),A.slice(t,o)}else{for(r=A.length-1;r>=0;--r)if(A.charCodeAt(r)===47){if(!g){t=r+1;break}}else o===-1&&(g=!1,o=r+1);return o===-1?"":A.slice(t,o)}}function zN(A){DA(A);let e=-1,t=0,o=-1,g=!0,r=0;for(let n=A.length-1;n>=0;--n){let Q=A.charCodeAt(n);if(Q===47){if(!g){t=n+1;break}continue}o===-1&&(g=!1,o=n+1),Q===46?e===-1?e=n:r!==1&&(r=1):e!==-1&&(r=-1)}return e===-1||o===-1||r===0||r===1&&e===o-1&&e===t+1?"":A.slice(e,o)}function KN(A){if(A===null||typeof A!="object")throw new TypeError(The "pathObject" argument must be of type Object. Received type ${typeof A});return IQ("/",A)}function PN(A){DA(A);let e={root:"",dir:"",base:"",ext:"",name:""};if(A.length===0)return e;let t=A.charCodeAt(0)===47,o;t?(e.root="/",o=1):o=0;let g=-1,r=0,n=-1,Q=!0,B=A.length-1,C=0;for(;B>=o;--B){let i=A.charCodeAt(B);if(i===47){if(!Q){r=B+1;break}continue}n===-1&&(Q=!1,n=B+1),i===46?g===-1?g=B:C!==1&&(C=1):g!==-1&&(C=-1)}return g===-1||n===-1||C===0||C===1&&g===n-1&&g===r+1?n!==-1&&(r===0&&t?e.base=e.name=A.slice(1,n):e.base=e.name=A.slice(r,n)):(r===0&&t?(e.name=A.slice(1,g),e.base=A.slice(1,n)):(e.name=A.slice(r,g),e.base=A.slice(r,n)),e.ext=A.slice(g,n)),r>0?e.dir=A.slice(0,r-1):t&&(e.dir="/"),e}function VN(A){if(A=A instanceof URL?A:new URL(A),A.protocol!="file:")throw new TypeError("Must be a file URL.");return decodeURIComponent(A.pathname.replace(/%(?![0-9A-Fa-f]{2})/g,"%25"))}function qN(A){if(!Dc(A))throw new TypeError("Must be an absolute path.");let e=new URL("file:///");return e.pathname=sQ(A.replace(/%/g,"%25").replace(/\\/g,"%5C")),e}var $N=ag?cg:lg,{join:w_,normalize:m_}=$N;var Ay=ag?cg:lg;var{basename:u_,delimiter:M_,dirname:wc,extname:ey,format:f_,fromFileUrl:mc,isAbsolute:aQ,join:cQ,normalize:hc,parse:N_,relative:y_,resolve:dc,sep:uc,toFileUrl:G_,toNamespacedPath:k_}=Ay;var{Deno:Mc}=globalThis,Z_=typeof Mc?.noColor=="boolean"?Mc.noColor:!0;var U_=new RegExp(["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|"),"g");var q_=32*1024,__=2**32-2;var t7=32*1024;var Nc,ny=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&ny.decode();var yc=new Array(128).fill(void 0);yc.push(void 0,null,!0,!1);var E7=yc.length;var a7=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}};var c7=new FinalizationRegistry(A=>Nc.__wbg_globalhttpcache_free(A>>>0));var l7=new FinalizationRegistry(A=>Nc.__wbg_localhttpcache_free(A>>>0));function lQ(A){if(A.protocol==="file:")return{path:Mo(A),namespace:"file"};let e=A.protocol.slice(0,-1);return{path:A.href.slice(e.length+1),namespace:e}}async function qB(A){let e=await Deno.readTextFile(A),t=rQ.parse(e);if(typeof t!="object"||t===null||Array.isArray(t))throw new Error(Deno config at ${A} must be an object);if("imports"in t&&(typeof t.imports!="object"||t.imports===null||Array.isArray(t.imports)))throw new Error(Deno config at ${A} has invalid "imports" key);if("scopes"in t&&(typeof t.scopes!="object"||t.scopes===null||Array.isArray(t.scopes)))throw new Error(Deno config at ${A} has invalid "scopes" key);if("lock"in t&&typeof t.lock!="boolean"&&typeof t.lock!="string")throw new Error(Deno config at ${A} has invalid "lock" key);if("importMap"in t&&typeof t.importMap!="string")throw new Error(Deno config at ${A} has invalid "importMap" key);return t}function kc(A){if(A.imports!==void 0){let e=[];for(let[t,o]of Object.entries(A.imports))if(e.push([t,o]),!t.endsWith("/")&&o&&(o.startsWith("jsr:")||o.startsWith("npm:"))&&!A.imports[t+"/"]){let g=t+"/",r=o.slice(0,4)+"/"+o.slice(o[4]==="/"?5:4)+"/";e.push([g,r])}A.imports=Object.fromEntries(e)}}var DQ=Symbol("IN_NODE_MODULES"),Yc=Symbol("IN_NODE_MODULES_RESOLVED");function _B(A={}){return{name:"deno-resolver",setup(e){let t=null,o,g=(e.initialOptions.external??[]).map(r=>new RegExp("^"+r.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*")+"$"));e.onStart(async function(){o=new Set;let n;if(A.importMapURL===void 0&&A.configPath!==void 0){let Q=await qB(A.configPath);if(Q.imports!==void 0||Q.scopes!==void 0){let B={imports:Q.imports,scopes:Q.scopes};kc(B),t=CQ(B,fo(A.configPath))}else Q.importMap!==void 0&&(n=new URL(Q.importMap,fo(A.configPath)).href)}else A.importMapURL!==void 0&&(n=A.importMapURL);if(n){let Q=await fetch(n),B=await Q.json();t=CQ(B,new URL(Q.url))}}),e.onResolve({filter:/.*/},async function(n){if(n.pluginData===Yc)return{};if(n.pluginData===DQ)return;if(o.has(n.importer)){let s=await e.resolve(n.path,{importer:n.importer,namespace:n.namespace,kind:n.kind,resolveDir:n.resolveDir,pluginData:DQ});return s.external||o.add(s.path),s}let Q;if(n.importer!==""){if(n.namespace==="")throw new Error("[assert] namespace is empty");Q=new URL(${n.namespace}:${n.importer})}else if(n.resolveDir!=="")Q=new URL(${fo(n.resolveDir).href}/);else return;let B;if(t!==null){let s=XB(n.path,t,new URL(Q));B=new URL(s)}else B=new URL(n.path,Q);for(let s of g)if(s.test(B.href))return{path:B.href,external:!0};let{path:C,namespace:i}=lQ(B),I=await e.resolve(C,{namespace:i,kind:n.kind});return I.pluginData===DQ&&o.add(I.path),I})}}}var b$=Deno.env.get("DENO_REGISTRY_URL")??"https://jsr.io";var py=await Deno.permissions.query({name:"run"}).then(A=>A.state!=="granted")?"portable":"native";var bc=_B;var jc=" must not return ",wy="transformer",my="recoverer",hy="defaultValue",q$=wy+jc,Oc="called with ",_$=hy+" must not be ",$$=my+jc,dy="Ok",Fc="Err",uy=Oc+Fc,My=Oc+dy,AAA="Carrying E in "+Fc+" instead of throwing it directly. See .cause",$B="an instance of Error of the current realm.",eAA="The thrown value is not "+$B,tAA="The contained E should be "+$B,oAA="This .cause is not "+$B;function Jc(A){return A.ok}function SA(A){return{ok:!0,val:A,err:null}}function Ce(A){return!A.ok}function aA(A){return{ok:!1,val:null,err:A}}function _A(A){return fy(A,uy)}function zt(A){return Ny(A,My)}function fy(A,e){if(!A.ok)throw new TypeError(e);return A.val}function Ny(A,e){if(A.ok)throw new TypeError(e);return A.err}async function yo(A,e){if(Ce(A))return A;let t=_A(A),o=await e(t);return SA(o)}var xc=" must not return ",yy="transformer",Gy="recoverer",ky="defaultValue",Yy=yy+xc,by="called with ",jy=ky+" must not be ",Oy=Gy+xc,pQ="null or undefined",nAA=Yy+pQ,BAA=by+pQ,CAA=jy+pQ,iAA=Oy+pQ;function Fy(A){return A!=null}function Jy(A){return{ok:!0,val:A,err:null}}function xy(A){return{ok:!1,val:null,err:A}}function Rc(A,e){if(Fy(A))return Jy(A);let t=e();return xy(t)}var Zc=A=>!!(Ry.includes(A.hostname)||A.hostname.endsWith(".openai.azure.com")),Ry=["i.gyazo.com","t.gyazo.com","scrapbox.io","api.openai.com","*.openai.azure.com","maps.googleapis.com","upload.gyazo.com","storage.googleapis.com","sentry.io"];function UA(A){if(typeof A!="string")throw new TypeError(Path must be a string. Received ${JSON.stringify(A)})}function AC(A,e){if(e.length>=A.length)return A;let t=A.length-e.length;for(let o=e.length-1;o>=0;--o)if(A.charCodeAt(t+o)!==e.charCodeAt(o))return A;return A.slice(0,-e.length)}function eC(A,e,t=0){let o=!1,g=A.length;for(let r=A.length-1;r>=t;--r)if(e(A.charCodeAt(r))){if(o){t=r+1;break}}else o||(o=!0,g=r+1);return A.slice(t,g)}function tC(A,e){if(UA(A),A.length===0)return A;if(typeof e!="string")throw new TypeError(Suffix must be a string. Received ${JSON.stringify(e)})}function Go(A,e){if(A.length<=1)return A;let t=A.length;for(let o=A.length-1;o>0&&e(A.charCodeAt(o));o--)t=o;return A.slice(0,t)}function xe(A){return A===47||A===92}function _e(A){return A>=97&&A<=122||A>=65&&A<=90}function mQ(A){if(A=A instanceof URL?A:new URL(A),A.protocol!=="file:")throw new TypeError("Must be a file URL.");return A}function Uc(A){A=mQ(A);let e=decodeURIComponent(A.pathname.replace(/\//g,"\\").replace(/%(?![0-9A-Fa-f]{2})/g,"%25")).replace(/^\\*([A-Za-z]:)(\\|$)/,"$1\\");return A.hostname!==""&&(e=\\\\${A.hostname}${e}),e}function gC(A){UA(A);let e=A.length;if(e===0)return!1;let t=A.charCodeAt(0);return xe(t)?!0:!!(_e(t)&&e>2&&A.charCodeAt(1)===58&&xe(A.charCodeAt(2)))}var Ky={" ":"%09","\n":"%0A","\v":"%0B","\f":"%0C","\r":"%0D"," ":"%20"};function hQ(A){return A.replaceAll(/[\s]/g,e=>Ky[e]??e)}function Sc(A){if(!gC(A))throw new TypeError("Must be an absolute path.");let[,e,t]=A.match(/^(?:[/\\]{2}([^/\\]+)(?=[/\\](?:[^/\\]|$)))?(.*)/),o=new URL("file:///");if(o.pathname=hQ(t.replace(/%/g,"%25")),e!==void 0&&e!=="localhost"&&(o.hostname=e,!o.hostname))throw new TypeError("Invalid hostname.");return o}function le(A){return A===47}function QC(A,e=""){tC(A,e);let t=eC(A,le),o=Go(t,le);return e?AC(o,e):o}function nC(A){UA(A);let e=-1,t=0,o=-1,g=!0,r=0;for(let n=A.length-1;n>=0;--n){let Q=A.charCodeAt(n);if(le(Q)){if(!g){t=n+1;break}continue}o===-1&&(g=!1,o=n+1),Q===46?e===-1?e=n:r!==1&&(r=1):e!==-1&&(r=-1)}return e===-1||o===-1||r===0||r===1&&e===o-1&&e===t+1?"":A.slice(e,o)}function Hc(A){return A=mQ(A),decodeURIComponent(A.pathname.replace(/%(?![0-9A-Fa-f]{2})/g,"%25"))}function BC(A){return UA(A),A.length>0&&le(A.charCodeAt(0))}function Wc(A){if(!BC(A))throw new TypeError("Must be an absolute path.");let e=new URL("file:///");return e.pathname=hQ(A.replace(/%/g,"%25").replace(/\\/g,"%5C")),e}var rG=(()=>{let{Deno:A}=globalThis;if(typeof A?.build?.os=="string")return A.build.os;let{navigator:e}=globalThis;return e?.appVersion?.includes?.("Win")?"windows":"linux"})(),OA=rG==="windows";function zc(A){return OA?Uc(A):Hc(A)}function Kc(A){return OA?Sc(A):Wc(A)}var Pc=A=>{if(A.protocol==="file:")return{path:zc(A),namespace:"file"};let e=A.protocol.slice(0,-1);return{path:A.href.slice(e.length+1),namespace:e}},iC=A=>A.namespace==="file"?Kc(A.path):new URL(${A.namespace}:${A.path});var Vc=(A,e)=>{let t=Rc(nG(A),()=>({name:"NotFoundError",message:"Source map URL is not found"}));if(Ce(t))return t;let{url:o,start:g,end:r}=_A(t);return URL.canParse(o,e)?SA({url:new URL(o,e),start:g,end:r}):aA({name:"InvalidURLError",message:Invalid URL: ${o}})},nG=A=>{for(let e of A.matchAll(/\/([*/])[#@] *sourceMappingURL=/g)){let t=e.index+e[0].length,o=A.length,g=t;for(;g<o&&A.charCodeAt(g)>32;)g++;if(g!==t&&(e[1]==="/"||A.indexOf("*/",g)>0))return{url:A.slice(t,g),start:t,end:g}}};function Dg(A){A.hash="",A.search=""}function qc(A,e){return A=new URL(A),Dg(A),QC(A.href,e)}function _c(A){return A=new URL(A),Dg(A),nC(A.pathname)}var BG=["base64","binary","copy","css","dataurl","default","empty","file","js","json","jsx","local-css","text","ts","tsx"],$c=A=>BG.includes(A),Al=A=>/^js|^ts|css$/.test(A),el=A=>{let e=A.url,t=qc(e);if($c(t))return t;if(t==="mjs")return"js";let o=_c(e).slice(1);if($c(o))return o;if(o==="mjs")return"js";let r=(A.headers.get("Content-Type")??"text/plain").split(";")[0]?.trim?.()??"text/plain";return CG(r)},CG=A=>{let e=A.split("/")[1]??"plain";if(/(?:^plain$|^xml|^svg|^x?html)/.test(e))return"text";if(e.startsWith("json"))return"json";switch(e){case"javascript":return"js";case"typescript":return"ts";case"css":return"css";default:return"text"}};function dQ(A,e){if(isNaN(A)||isNaN(e))throw new Error("Comparison against non-numbers");return A===e?0:A<e?-1:1}function gl(A=[],e=[]){return A.length&&!e.length?-1:!A.length&&e.length?1:0}function sC(A=[],e=[]){let t=Math.max(A.length,e.length);for(let o=0;o<t;o++){let g=A[o],r=e[o];if(g===void 0&&r===void 0)return 0;if(r===void 0)return 1;if(g===void 0)return-1;if(typeof g=="string"&&typeof r=="number")return 1;if(typeof g=="number"&&typeof r=="string"||g<r)return-1;if(g>r)return 1}return 0}var Yo="0|[1-9]\\d*",iG="\\d*[a-zA-Z-][a-zA-Z0-9-]*",IG=(?<major>${Yo})\\.(?<minor>${Yo})\\.(?<patch>${Yo}),tl=(?:${Yo}|${iG}),rl=(?:-(?<prerelease>${tl}(?:\\.${tl})*)),ol="[0-9A-Za-z-]+",Ql=(?:\\+(?<buildmetadata>${ol}(?:\\.${ol})*)),nl=v?${IG}${rl}?${Ql}?,Bl=new RegExp(^${nl}$),Cl="(?:<|>)?=?",sG="x|X|\\*",IC=${Yo}|${sG},uQ=v=\\s*(?<major>${IC})(?:\\.(?<minor>${IC})(?:\\.(?<patch>${IC})${rl}?${Ql}?)?)?,il=new RegExp(^(?<operator>~>?|\\^|${Cl})\\s*${uQ}$),Il=new RegExp(^(?<operator>${Cl})\\s*(${nl})$|^$);function EC(A){return typeof A=="number"&&!Number.isNaN(A)&&(!Number.isFinite(A)||0<=A&&A<=Number.MAX_SAFE_INTEGER)}var aC=256;var EG=new RegExp(^${Yo}$);function ee(A){return A.split(".").filter(Boolean).map(e=>{if(EG.test(e)){let t=Number(e);if(EC(t))return t}return e})}function Re(A){return A.split(".").filter(Boolean)}function pt(A,e){let t=Number(A);if(!EC(t))throw new TypeError(e);return t}function Ze(A){return Number.isNaN(A.major)&&Number.isNaN(A.minor)&&Number.isNaN(A.patch)&&(A.prerelease===void 0||A.prerelease.length===0)&&(A.build===void 0||A.build.length===0)}function De(A,e){return A===e?0:dQ(A.major,e.major)||dQ(A.minor,e.minor)||dQ(A.patch,e.patch)||gl(A.prerelease,e.prerelease)||sC(A.prerelease,e.prerelease)}var sl={major:Number.POSITIVE_INFINITY,minor:Number.POSITIVE_INFINITY,patch:Number.POSITIVE_INFINITY,prerelease:[],build:[]},El={major:0,minor:0,patch:0,prerelease:[],build:[]},cC={major:Number.NEGATIVE_INFINITY,minor:Number.POSITIVE_INFINITY,patch:Number.POSITIVE_INFINITY,prerelease:[],build:[]},MQ={major:Number.NaN,minor:Number.NaN,patch:Number.NaN,prerelease:[],build:[]},ue={operator:void 0,...MQ},lC={operator:"<",...El};function DC(A){return A===Number.POSITIVE_INFINITY?"∞":A===Number.NEGATIVE_INFINITY?"⧞":A.toFixed(0)}function Kt(A){if(Ze(A))return"*";let e=DC(A.major),t=DC(A.minor),o=DC(A.patch),g=A.prerelease?.join(".")??"",r=A.build?.join(".")??"";return[[${e}.${t}.${o},g].filter(B=>B).join("-"),r].filter(B=>B).join("+")}function aG(A,e){if(Ze(e))return!0;let t=De(A,e);switch(e.operator){case"=":case void 0:return t===0;case"!=":return t!==0;case">":return t>0;case"<":return t<0;case">=":return t>=0;case"<=":return t<=0}}function fQ(A,e){for(let t of e)if(!aG(A,t))return!1;if(A.prerelease&&A.prerelease.length>0){for(let t of e){if(Ze(t))continue;let{major:o,minor:g,patch:r,prerelease:n}=t;if(n&&n.length>0&&A.major===o&&A.minor===g&&A.patch===r)return!0}return!1}return!0}function Pt(A,e){return e.some(t=>fQ(A,t))}function NQ(A,e){return De(A,e)>0}function pg(A,e){let t;for(let o of A)Pt(o,e)&&(t=t&&NQ(t,o)?t:o);return t}function lG(A){let t=A.match(Il)?.groups;if(!t)return lC;let{operator:o,prerelease:g,buildmetadata:r}=t,n=t.major?{major:pt(t.major,"Invalid major version"),minor:pt(t.minor,"Invalid minor version"),patch:pt(t.patch,"Invalid patch version"),prerelease:g?ee(g):[],build:r?Re(r):[]}:MQ;return{operator:o||void 0,...n}}function nA(A){return!A||A.toLowerCase()==="x"||A==="*"}function DG(A){if(!nA(A.major))return nA(A.minor)?{operator:">=",major:+A.major,minor:0,patch:0,prerelease:[],build:[]}:nA(A.patch)?{operator:">=",major:+A.major,minor:+A.minor,patch:0,prerelease:[],build:[]}:{operator:">=",major:+A.major,minor:+A.minor,patch:+A.patch,prerelease:A.prerelease?ee(A.prerelease):[],build:[]}}function pG(A){if(!nA(A.major))return nA(A.minor)?{operator:"<",major:+A.major+1,minor:0,patch:0,prerelease:[],build:[]}:nA(A.patch)?{operator:"<",major:+A.major,minor:+A.minor+1,patch:0,prerelease:[],build:[]}:A.prerelease?{operator:"<=",major:+A.major,minor:+A.minor,patch:+A.patch,prerelease:ee(A.prerelease),build:[]}:{operator:"<=",major:+A.major,minor:+A.minor,patch:+A.patch,prerelease:A.prerelease?ee(A.prerelease):[],build:[]}}function wG(A){let e=A.match(new RegExp(^${uQ})),t=e?.groups;if(!t)return;let o=e[0].length,g=A.slice(o).match(/^\s+-\s+/);if(!g)return;let r=g[0].length,Q=A.slice(o+r).match(new RegExp(^${uQ}\\s*$))?.groups;if(!Q)return;let B=DG(t),C=pG(Q);return[B,C].filter(Boolean)}function mG(A){let e=nA(A.major),t=nA(A.minor),o=nA(A.patch),g=+A.major,r=+A.minor,n=+A.patch;if(e)return[ue];if(t)return[{operator:">=",major:g,minor:0,patch:0},{operator:"<",major:g+1,minor:0,patch:0}];if(o)return g===0?[{operator:">=",major:g,minor:r,patch:0},{operator:"<",major:g,minor:r+1,patch:0}]:[{operator:">=",major:g,minor:r,patch:0},{operator:"<",major:g+1,minor:0,patch:0}];let Q=ee(A.prerelease??"");return g===0?r===0?[{operator:">=",major:g,minor:r,patch:n,prerelease:Q},{operator:"<",major:g,minor:r,patch:n+1}]:[{operator:">=",major:g,minor:r,patch:n,prerelease:Q},{operator:"<",major:g,minor:r+1,patch:0}]:[{operator:">=",major:g,minor:r,patch:n,prerelease:Q},{operator:"<",major:g+1,minor:0,patch:0}]}function hG(A){let e=nA(A.major),t=nA(A.minor),o=nA(A.patch),g=+A.major,r=+A.minor,n=+A.patch;if(e)return[ue];if(t)return[{operator:">=",major:g,minor:0,patch:0},{operator:"<",major:g+1,minor:0,patch:0}];if(o)return[{operator:">=",major:g,minor:r,patch:0},{operator:"<",major:g,minor:r+1,patch:0}];let Q=ee(A.prerelease??"");return[{operator:">=",major:g,minor:r,patch:n,prerelease:Q},{operator:"<",major:g,minor:r+1,patch:0}]}function dG(A){let e=nA(A.major),t=nA(A.minor),o=nA(A.patch),g=+A.major,r=+A.minor,n=+A.patch;if(e)return[{operator:"<",major:0,minor:0,patch:0}];if(t)return o?[{operator:"<",major:g,minor:0,patch:0}]:[{operator:"<",major:g,minor:r,patch:0}];if(o)return[{operator:"<",major:g,minor:r,patch:0}];let Q=ee(A.prerelease??""),B=Re(A.build??"");return[{operator:"<",major:g,minor:r,patch:n,prerelease:Q,build:B}]}function uG(A){let e=nA(A.minor),t=nA(A.patch),o=+A.major,g=+A.minor,r=+A.patch;if(e)return t?[{operator:"<",major:o+1,minor:0,patch:0}]:[{operator:"<",major:o,minor:g+1,patch:0}];if(t)return[{operator:"<",major:o,minor:g+1,patch:0}];let n=ee(A.prerelease??""),Q=Re(A.build??"");return[{operator:"<=",major:o,minor:g,patch:r,prerelease:n,build:Q}]}function MG(A){let e=nA(A.major),t=nA(A.minor),o=nA(A.patch),g=+A.major,r=+A.minor,n=+A.patch;if(e)return[{operator:"<",major:0,minor:0,patch:0}];if(t)return[{operator:">=",major:g+1,minor:0,patch:0}];if(o)return[{operator:">=",major:g,minor:r+1,patch:0}];let Q=ee(A.prerelease??""),B=Re(A.build??"");return[{operator:">",major:g,minor:r,patch:n,prerelease:Q,build:B}]}function fG(A){let e=nA(A.major),t=nA(A.minor),o=nA(A.patch),g=+A.major,r=+A.minor,n=+A.patch;if(e)return[ue];if(t)return o?[{operator:">=",major:g,minor:0,patch:0}]:[{operator:">=",major:g,minor:r,patch:0}];if(o)return[{operator:">=",major:g,minor:r,patch:0}];let Q=ee(A.prerelease??""),B=Re(A.build??"");return[{operator:">=",major:g,minor:r,patch:n,prerelease:Q,build:B}]}function NG(A){let e=nA(A.major),t=nA(A.minor),o=nA(A.patch),g=+A.major,r=+A.minor,n=+A.patch;if(e)return[ue];if(t)return[{operator:">=",major:g,minor:0,patch:0},{operator:"<",major:g+1,minor:0,patch:0}];if(o)return[{operator:">=",major:g,minor:r,patch:0},{operator:"<",major:g,minor:r+1,patch:0}];let Q=ee(A.prerelease??""),B=Re(A.build??"");return[{operator:void 0,major:g,minor:r,patch:n,prerelease:Q,build:B}]}function yG(A){let e=A.match(il)?.groups;if(!e)return lG(A);switch(e.operator){case"^":return mG(e);case"~":case"~>":return hG(e);case"<":return dG(e);case"<=":return uG(e);case">":return MG(e);case">=":return fG(e);case"=":case"":return NG(e);default:throw new Error('${e.operator}' is not a valid operator.)}}function GG(A){return A.split(/\s+/).flatMap(yG)}function al(A){return A.replaceAll(/(?<=<|>|=) +/g,"").split(/\s*\|\|\s*/).map(e=>wG(e)||GG(e))}function pC(A){if(typeof A!="string")throw new TypeError("version must be a string");if(A.length>aC)throw new TypeError(version is longer than ${aC} characters);A=A.trim();let e=A.match(Bl)?.groups;if(!e)throw new TypeError(Invalid Version: ${A});let t=pt(e.major,"Invalid major version"),o=pt(e.minor,"Invalid minor version"),g=pt(e.patch,"Invalid patch version"),r=e.prerelease?ee(e.prerelease):[],n=e.buildmetadata?Re(e.buildmetadata):[];return{major:t,minor:o,patch:g,prerelease:r,build:n}}function wC(A){try{return al(A)}catch{return}}function mC(A){if(A!==void 0)try{return pC(A)}catch{return}}var wt=async A=>{try{let e=await fetch(A);return e.ok?SA([e,!1]):aA({name:"HTTPError",message:${e.status} ${e.statusText},response:e})}catch(e){if(e instanceof TypeError)return aA({name:"NetworkError",message:e.message,request:A});if(e instanceof DOMException)return aA({name:"AbortError",message:e.message,request:A});throw e}};var hC="https://jsr.io",cl=async(A,e)=>{let t=await(e?.fetch??wt)(new Request(${e?.endpoint??hC}/${A}/meta.json),e?.cacheFirst);return yo(t,([o])=>o.json())};var ll=async(A,e,t)=>{let o=await(t?.fetch??wt)(new Request(${t?.endpoint??hC}/${A}/${e}_meta.json),t?.cacheFirst);return yo(o,([g])=>g.json())};var Dl=async(A,e)=>{let t=await(e?.fetch??wt)(new Request(${e?.endpoint??"https://registry.npmjs.org"}/${A}),e?.cacheFirst);return yo(t,([o])=>o.json())};var ml=(A,e)=>({name:"InvalidPackageVersionError",message:No version of ${A.name} satisfies "${A.tag??"*"}" (available: ${e.slice(0,10).join(", ")}${e.length>10?, ... (${e.length-10} more versions):""}),packageName:A.name,range:A.range,tag:A.tag,entryPoint:A.entryPoint,availableVersions:e}),yQ=(A,e)=>({name:"InvalidEntryPointError",message:${A.entryPoint} is not a valid entry point for ${A.name}@${A.tag??"*"} (available: ${e.join(", ")}),packageName:A.name,range:A.range,tag:A.tag,entryPoint:A.entryPoint,availableEntryPoints:e}),hl=async(A,e)=>{if(e?.resolvedVersions){let B=new Map(e.resolvedVersions.get(A.name)??[]),C=pg([...B.keys()],A.range);if(C){let i=B.get(C)??wg,I=i[A.entryPoint];return typeof I!="string"&&console.log(I),I?SA(pl(A.name,Kt(C),I)):aA(yQ(A,Object.keys(i)))}}let t=await Dl(A.name,e);if(Ce(t))return t;let o=_A(t),g=new Map(Object.entries(o.versions).flatMap(([B,{exports:C}])=>{let i=mC(B);return i?[[i,C??wg]]:[]})),r=pg([...g.keys()],A.range);if(!r)return aA(ml(A,Object.keys(o.versions)));let n={...wg};for(let B of Object.keys(g.get(r)??wg))n[B]=B;let Q=n[A.entryPoint];return Q?(e?.resolvedVersions?.set(A.name,[...e.resolvedVersions.get(A.name)??[],[r,n]]),SA(pl(A.name,Kt(r),Q))):aA(yQ(A,Object.keys(n)))},pl=(A,e,t)=>new URL(t,https://esm.sh/${A}@${e}/),dl=async(A,e)=>{if(e?.resolvedVersions){let Q=new Map(e.resolvedVersions.get(A.name)??[]),B=pg([...Q.keys()],A.range);if(B){let C=Q.get(B)??wg,i=C[A.entryPoint];return i?SA(wl(A.name,Kt(B),i)):aA(yQ(A,Object.keys(C)))}}let t=await kG(A,e);if(Ce(t))return t;let o=_A(t),g=await ll(A.name,Kt(o),e);if(Ce(g))return g;let r=_A(g).exports,n=r[A.entryPoint];return n?(e?.resolvedVersions?.set(A.name,[...e.resolvedVersions.get(A.name)??[],[o,r]]),SA(wl(A.name,Kt(o),n))):aA(yQ(A,Object.keys(_A(g).exports)))},wl=(A,e,t)=>new URL(t,https://jsr.io/${A}/${e}/),kG=async(A,e)=>{let t=await cl(A.name,e);if(Ce(t))return t;let o=_A(t),g=Object.keys(o.versions).flatMap(n=>{let Q=mC(n);return Q?[Q]:[]}),r=pg(g,A.range);return r?SA(r):aA(ml(A,Object.keys(o.versions)))},wg={".":"./"};var YG=A=>({name:"OnlyScopeProvidedError",specifier:A}),ul=A=>({name:"PackageNotFoundError",specifier:A}),Ml=A=>{if(A.protocol!=="npm:")return aA({name:"NotNpmProtocolError",specifier:A});let e=A.pathname,t=e[0]==="/"?1:0,o,g;if(e[t]==="@"){let I=e.indexOf("/",t);if(I===-1)return aA(YG(A));o=e.indexOf("/",I+1),g=e.indexOf("@",I+1)}else o=e.indexOf("/",t),g=e.indexOf("@",t);if(o===-1&&(o=e.length),g===-1&&(g=e.length),g=Math.min(g,o),t===g)return aA(ul(A));let r=e.slice(t,g),n=e.slice(g+1,o),Q=n?wC(n)??[[ue]]:[[ue]],B=e.slice(o+1),C=B?./${B}:".",i={name:r,range:Q,entryPoint:C};return n&&(i.tag=n),SA(i)},fl=A=>{if(A.protocol!=="jsr:")return aA({name:"NotJsrProtocolError",specifier:A});let e=A.pathname,t=e[0]==="/"?1:0;if(e[t]!=="@")return aA({name:"ScopeNotFoundError",specifier:A});let o=e.indexOf("/",t);if(o===-1)return aA(ul(A));let g=e.indexOf("/",o+1),r=e.indexOf("@",o+1);g===-1&&(g=e.length),r===-1&&(r=e.length),r=Math.min(r,g);let n=e.slice(t,r),Q=e.slice(r+1,g),B=Q?wC(Q)??[[ue]]:[[ue]],C=e.slice(g+1),i=C?./${C}:".",I={name:n,range:B,entryPoint:i};return Q&&(I.tag=Q),SA(I)};var Nl=A=>new Promise((e,t)=>{let o=new FileReader;o.addEventListener("load",()=>{let g=o.result,r=g.indexOf(";");g.startsWith("; charset=utf-8",r)?e(${g.slice(0,r)}${g.slice(r+15)}):e(g)}),o.addEventListener("error",()=>t(o.error)),o.readAsDataURL(A)});var kl=A=>{let e=new Map,t=async o=>{let g=o.namespace==="npm",r=(g?Ml:fl)(iC(o));if(Ce(r)){let Q=zt(r);return{errors:[{text:Q.name,detail:Q}]}}let n=await(g?hl:dl)(_A(r),{resolvedVersions:e,...A});if(Ce(n)){let Q=zt(n);return{errors:[{text:${Q.name} ${Q.message},detail:Q}]}}return Pc(_A(n))};return{name:"remote-loader",setup({onLoad:o,onResolve:g,initialOptions:r}){for(let n of[...yl,...Gl])g({filter:/.*/,namespace:n.slice(0,-1)},bG);g({filter:/.*/,namespace:"npm"},t),g({filter:/.*/,namespace:"jsr"},t);for(let n of yl)o({filter:/.*/,namespace:n.slice(0,-1)},Q=>jG(iC(Q),{...A,sourcemap:r.sourcemap!==!1&&r.sourcemap!==void 0}));for(let n of Gl)o({filter:/.*/,namespace:n.slice(0,-1)},()=>{throw new Error(${n} import is not supported yet.)})}}},bG=A=>({path:A.path,namespace:A.namespace}),yl=["http:","https:","data:"],Gl=["node:"],jG=async(A,e)=>{let t=e.reload?e.reload===!0?!1:!e.reload.some(C=>C.test(A)):!0,o=e.fetch??wt,g=await o(new Request(A),t);if(Ce(g))return{errors:[{text:${zt(g).message} Failed to fetch ${A},detail:zt(g)}]};let[r,n]=_A(g),Q=el(r);e.onProgress?.({path:A,done:r.clone().blob().then(C=>({size:C.size,loader:Q,isCache:n}))});let B=await r.blob();if(e.sourcemap&&Al(Q)){let C=await B.text(),i=Vc(C,A);if(Jc(i)){let{url:I,start:s,end:E}=_A(i);if(I.protocol!=="data:"){let c=await o(new Request(I),t);if(Ce(c))return{contents:C,loader:Q,warnings:[{text:${zt(c).message} Failed to fetch the source map URL,notes:[{text:Source map URL: ${I}},{text:Original URL: ${A}}],detail:zt(c)}]};let l=await _A(c)[0].blob().then(Nl);return{contents:C.slice(0,s)+l+C.slice(E),loader:Q}}}}return{contents:new Uint8Array(await B.arrayBuffer()),loader:Q}};var dg=class{type=3;name="";prefix="";value="";suffix="";modifier=3;constructor(A,e,t,o,g,r){this.type=A,this.name=e,this.prefix=t,this.value=o,this.suffix=g,this.modifier=r}hasCustomName(){return this.name!==""&&typeof this.name!="number"}},OG=/[$_\p{ID_Start}]/u,FG=/[$_\u200C\u200D\p{ID_Continue}]/u,uC=".*";function JG(A,e){return(e?/^[\x00-\xFF]*$/:/^[\x00-\x7F]*$/).test(A)}function jl(A,e=!1){let t=[],o=0;for(;o<A.length;){let g=A[o],r=function(n){if(!e)throw new TypeError(n);t.push({type:"INVALID_CHAR",index:o,value:A[o++]})};if(g==="*"){t.push({type:"ASTERISK",index:o,value:A[o++]});continue}if(g==="+"||g==="?"){t.push({type:"OTHER_MODIFIER",index:o,value:A[o++]});continue}if(g==="\\"){t.push({type:"ESCAPED_CHAR",index:o++,value:A[o++]});continue}if(g==="{"){t.push({type:"OPEN",index:o,value:A[o++]});continue}if(g==="}"){t.push({type:"CLOSE",index:o,value:A[o++]});continue}if(g===":"){let n="",Q=o+1;for(;Q<A.length;){let B=A.substr(Q,1);if(Q===o+1&&OG.test(B)||Q!==o+1&&FG.test(B)){n+=A[Q++];continue}break}if(!n){r(Missing parameter name at ${o});continue}t.push({type:"NAME",index:o,value:n}),o=Q;continue}if(g==="("){let n=1,Q="",B=o+1,C=!1;if(A[B]==="?"){r(Pattern cannot start with "?" at ${B});continue}for(;B<A.length;){if(!JG(A[B],!1)){r(Invalid character '${AB}' at ${B}.),C=!0;break}if(A[B]==="\\"){Q+=A[B++]+A[B++];continue}if(A[B]===")"){if(n--,n===0){B++;break}}else if(A[B]==="("&&(n++,A[B+1]!=="?")){r(Capturing groups are not allowed at ${B}),C=!0;break}Q+=A[B++]}if(C)continue;if(n){r(Unbalanced pattern at ${o});continue}if(!Q){r(Missing pattern at ${o});continue}t.push({type:"REGEX",index:o,value:Q}),o=B;continue}t.push({type:"CHAR",index:o,value:A[o++]})}return t.push({type:"END",index:o,value:""}),t}function Ol(A,e={}){let t=jl(A);e.delimiter??="/#?",e.prefixes??="./";let o=^${pe(e.delimiter)}+?,g=[],r=0,n=0,Q="",B=new Set,C=M=>{if(n<t.length&&t[n].type===M)return t[n++].value},i=()=>C("OTHER_MODIFIER")??C("ASTERISK"),I=M=>{let p=C(M);if(p!==void 0)return p;let{type:h,index:d}=t[n];throw new TypeError(Unexpected ${h} at ${d}, expected ${M})},s=()=>{let M="",p;for(;p=C("CHAR")??C("ESCAPED_CHAR");)M+=p;return M},E=M=>M,c=e.encodePart||E,l="",D=M=>{l+=M},m=()=>{l.length&&(g.push(new dg(3,"","",c(l),"",3)),l="")},N=(M,p,h,d,b)=>{let Y=3;switch(b){case"?":Y=1;break;case"*":Y=0;break;case"+":Y=2;break}if(!p&&!h&&Y===3){D(M);return}if(m(),!p&&!h){if(!M)return;g.push(new dg(3,"","",c(M),"",Y));return}let R;h?h==="*"?R=uC:R=h:R=o;let y=2;R===o?(y=1,R=""):R===uC&&(y=0,R="");let u;if(p?u=p:h&&(u=r++),B.has(u))throw new TypeError(Duplicate name '${u}'.);B.add(u),g.push(new dg(y,u,c(M),R,c(d),Y))};for(;n<t.length;){let M=C("CHAR"),p=C("NAME"),h=C("REGEX");if(!p&&!h&&(h=C("ASTERISK")),p||h){let b=M??"";e.prefixes.indexOf(b)===-1&&(D(b),b=""),m();let Y=i();N(b,p,h,"",Y);continue}let d=M??C("ESCAPED_CHAR");if(d){D(d);continue}if(C("OPEN")){let b=s(),Y=C("NAME"),R=C("REGEX");!Y&&!R&&(R=C("ASTERISK"));let y=s();I("CLOSE");let u=i();N(b,Y,R,y,u);continue}m(),I("END")}return g}function pe(A){return A.replace(/([.+*?^${}()[\]|/\\])/g,"\\$1")}function Yl(A){return A&&A.ignoreCase?"ui":"u"}function xG(A,e,t){return Fl(Ol(A,t),e,t)}function bo(A){switch(A){case 0:return"*";case 1:return"?";case 2:return"+";case 3:return""}}function Fl(A,e,t={}){t.delimiter??="/#?",t.prefixes??="./",t.sensitive??=!1,t.strict??=!1,t.end??=!0,t.start??=!0,t.endsWith="";let o=t.start?"^":"";for(let Q of A){if(Q.type===3){Q.modifier===3?o+=pe(Q.value):o+=(?:${pe(Q.value)})${bo(Q.modifier)};continue}e&&e.push(Q.name);let B=^${pe(t.delimiter)}+?,C=Q.value;if(Q.type===1?C=B:Q.type===0&&(C=uC),!Q.prefix.length&&!Q.suffix.length){Q.modifier===3||Q.modifier===1?o+=(${C})${bo(Q.modifier)}:o+=((?:${C})${bo(Q.modifier)});continue}if(Q.modifier===3||Q.modifier===1){o+=(?:${pe(Q.prefix)}(${C})${pe(Q.suffix)}),o+=bo(Q.modifier);continue}o+=(?:${pe(Q.prefix)},o+=((?:${C})(?:,o+=pe(Q.suffix),o+=pe(Q.prefix),o+=(?:${C}))*)${pe(Q.suffix)}),Q.modifier===0&&(o+="?")}let g=${pe(t.endsWith)}|$,r=${pe(t.delimiter)};if(t.end)return t.strict||(o+=${r}?),t.endsWith.length?o+=(?=${g}):o+="$",new RegExp(o,Yl(t));t.strict||(o+=(?:${r}(?=${g}))?);let n=!1;if(A.length){let Q=A[A.length-1];Q.type===3&&Q.modifier===3&&(n=t.delimiter.indexOf(Q)>-1)}return n||(o+=(?=${r}|${g})),new RegExp(o,Yl(t))}var ht={delimiter:"",prefixes:"",sensitive:!0,strict:!0},RG={delimiter:".",prefixes:"",sensitive:!0,strict:!0},ZG={delimiter:"/",prefixes:"/",sensitive:!0,strict:!0};function UG(A,e){return A.length?A[0]==="/"?!0:!e||A.length<2?!1:(A[0]=="\\"||A[0]=="{")&&A[1]=="/":!1}function Jl(A,e){return A.startsWith(e)?A.substring(e.length,A.length):A}function LG(A,e){return A.endsWith(e)?A.substr(0,A.length-e.length):A}function xl(A){return!A||A.length<2?!1:A[0]==="["||(A[0]==="\\"||A[0]==="{")&&A[1]==="["}var Rl=["ftp","file","http","https","ws","wss"];function Zl(A){if(!A)return!0;for(let e of Rl)if(A.test(e))return!0;return!1}function TG(A,e){if(A=Jl(A,"#"),e||A==="")return A;let t=new URL("https://example.com");return t.hash=A,t.hash?t.hash.substring(1,t.hash.length):""}function SG(A,e){if(A=Jl(A,"?"),e||A==="")return A;let t=new URL("https://example.com");return t.search=A,t.search?t.search.substring(1,t.search.length):""}function vG(A,e){return e||A===""?A:xl(A)?Tl(A):Ll(A)}function HG(A,e){if(e||A==="")return A;let t=new URL("https://example.com");return t.password=A,t.password}function WG(A,e){if(e||A==="")return A;let t=new URL("https://example.com");return t.username=A,t.username}function XG(A,e,t){if(t||A==="")return A;if(e&&!Rl.includes(e))return new URL(${e}:${A}).pathname;let o=A[0]=="/";return A=new URL(o?A:"/-"+A,"https://example.com").pathname,o||(A=A.substring(2,A.length)),A}function zG(A,e,t){return Ul(e)===A&&(A=""),t||A===""?A:Sl(A)}function KG(A,e){return A=LG(A,":"),e||A===""?A:MC(A)}function Ul(A){switch(A){case"ws":case"http":return"80";case"wws":case"https":return"443";case"ftp":return"21";default:return""}}function MC(A){if(A==="")return A;if(/^[-+.A-Za-z0-9]*$/.test(A))return A.toLowerCase();throw new TypeError(Invalid protocol '${A}'.)}function PG(A){if(A==="")return A;let e=new URL("https://example.com");return e.username=A,e.username}function VG(A){if(A==="")return A;let e=new URL("https://example.com");return e.password=A,e.password}function Ll(A){if(A==="")return A;if(/[\t\n\r #%/:<>?@[\]^\\|]/g.test(A))throw new TypeError(Invalid hostname '${A}');let e=new URL("https://example.com");return e.hostname=A,e.hostname}function Tl(A){if(A==="")return A;if(/[^0-9a-fA-F[\]:]/g.test(A))throw new TypeError(Invalid IPv6 hostname '${A}');return A.toLowerCase()}function Sl(A){if(A===""||/^[0-9]*$/.test(A)&&parseInt(A)<=65535)return A;throw new TypeError(Invalid port '${A}'.)}function qG(A){if(A==="")return A;let e=new URL("https://example.com");return e.pathname=A[0]!=="/"?"/-"+A:A,A[0]!=="/"?e.pathname.substring(2,e.pathname.length):e.pathname}function _G(A){return A===""?A:new URL(data:${A}).pathname}function $G(A){if(A==="")return A;let e=new URL("https://example.com");return e.search=A,e.search.substring(1,e.search.length)}function Ak(A){if(A==="")return A;let e=new URL("https://example.com");return e.hash=A,e.hash.substring(1,e.hash.length)}var ek=class{#r;#t=[];#e={};#A=0;#g=1;#n=0;#o=0;#C=0;#i=0;#s=!1;constructor(A){this.#r=A}get result(){return this.#e}parse(){for(this.#t=jl(this.#r,!0);this.#A<this.#t.length;this.#A+=this.#g){if(this.#g=1,this.#t[this.#A].type==="END"){if(this.#o===0){this.#l(),this.#E()?this.#Q(9,1):this.#a()?this.#Q(8,1):this.#Q(7,0);continue}else if(this.#o===2){this.#D(5);continue}this.#Q(10,0);break}if(this.#C>0)if(this.#N())this.#C-=1;else continue;if(this.#f()){this.#C+=1;continue}switch(this.#o){case 0:this.#h()&&this.#D(1);break;case 1:if(this.#h()){this.#k();let A=7,e=1;this.#d()?(A=2,e=3):this.#s&&(A=2),this.#Q(A,e)}break;case 2:this.#w()?this.#D(3):(this.#m()||this.#a()||this.#E())&&this.#D(5);break;case 3:this.#u()?this.#Q(4,1):this.#w()&&this.#Q(5,1);break;case 4:this.#w()&&this.#Q(5,1);break;case 5:this.#y()?this.#i+=1:this.#G()&&(this.#i-=1),this.#M()&&!this.#i?this.#Q(6,1):this.#m()?this.#Q(7,0):this.#a()?this.#Q(8,1):this.#E()&&this.#Q(9,1);break;case 6:this.#m()?this.#Q(7,0):this.#a()?this.#Q(8,1):this.#E()&&this.#Q(9,1);break;case 7:this.#a()?this.#Q(8,1):this.#E()&&this.#Q(9,1);break;case 8:this.#E()&&this.#Q(9,1);break;case 9:break;case 10:break}}this.#e.hostname!==void 0&&this.#e.port===void 0&&(this.#e.port="")}#Q(A,e){switch(this.#o){case 0:break;case 1:this.#e.protocol=this.#I();break;case 2:break;case 3:this.#e.username=this.#I();break;case 4:this.#e.password=this.#I();break;case 5:this.#e.hostname=this.#I();break;case 6:this.#e.port=this.#I();break;case 7:this.#e.pathname=this.#I();break;case 8:this.#e.search=this.#I();break;case 9:this.#e.hash=this.#I();break;case 10:break}this.#o!==0&&A!==10&&([1,2,3,4].includes(this.#o)&&[6,7,8,9].includes(A)&&(this.#e.hostname??=""),[1,2,3,4,5,6].includes(this.#o)&&[8,9].includes(A)&&(this.#e.pathname??=this.#s?"/":""),[1,2,3,4,5,6,7].includes(this.#o)&&A===9&&(this.#e.search??="")),this.#c(A,e)}#c(A,e){this.#o=A,this.#n=this.#A+e,this.#A+=e,this.#g=0}#l(){this.#A=this.#n,this.#g=0}#D(A){this.#l(),this.#o=A}#p(A){return A<0&&(A=this.#t.length-A),A<this.#t.length?this.#t[A]:this.#t[this.#t.length-1]}#B(A,e){let t=this.#p(A);return t.value===e&&(t.type==="CHAR"||t.type==="ESCAPED_CHAR"||t.type==="INVALID_CHAR")}#h(){return this.#B(this.#A,":")}#d(){return this.#B(this.#A+1,"/")&&this.#B(this.#A+2,"/")}#w(){return this.#B(this.#A,"@")}#u(){return this.#B(this.#A,":")}#M(){return this.#B(this.#A,":")}#m(){return this.#B(this.#A,"/")}#a(){if(this.#B(this.#A,"?"))return!0;if(this.#t[this.#A].value!=="?")return!1;let A=this.#p(this.#A-1);return A.type!=="NAME"&&A.type!=="REGEX"&&A.type!=="CLOSE"&&A.type!=="ASTERISK"}#E(){return this.#B(this.#A,"#")}#f(){return this.#t[this.#A].type=="OPEN"}#N(){return this.#t[this.#A].type=="CLOSE"}#y(){return this.#B(this.#A,"[")}#G(){return this.#B(this.#A,"]")}#I(){let A=this.#t[this.#A],e=this.#p(this.#n).index;return this.#r.substring(e,A.index)}#k(){let A={};Object.assign(A,ht),A.encodePart=MC;let e=xG(this.#I(),void 0,A);this.#s=Zl(e)}},dC=["protocol","username","password","hostname","port","pathname","search","hash"],mt="*";function bl(A,e){if(typeof A!="string")throw new TypeError("parameter 1 is not of type 'string'.");let t=new URL(A,e);return{protocol:t.protocol.substring(0,t.protocol.length-1),username:t.username,password:t.password,hostname:t.hostname,port:t.port,pathname:t.pathname,search:t.search!==""?t.search.substring(1,t.search.length):void 0,hash:t.hash!==""?t.hash.substring(1,t.hash.length):void 0}}function $e(A,e){return e?hg(A):A}function mg(A,e,t){let o;if(typeof e.baseURL=="string")try{o=new URL(e.baseURL),e.protocol===void 0&&(A.protocol=$e(o.protocol.substring(0,o.protocol.length-1),t)),!t&&e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&e.username===void 0&&(A.username=$e(o.username,t)),!t&&e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&e.username===void 0&&e.password===void 0&&(A.password=$e(o.password,t)),e.protocol===void 0&&e.hostname===void 0&&(A.hostname=$e(o.hostname,t)),e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&(A.port=$e(o.port,t)),e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&e.pathname===void 0&&(A.pathname=$e(o.pathname,t)),e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&e.pathname===void 0&&e.search===void 0&&(A.search=$e(o.search.substring(1,o.search.length),t)),e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&e.pathname===void 0&&e.search===void 0&&e.hash===void 0&&(A.hash=$e(o.hash.substring(1,o.hash.length),t))}catch{throw new TypeError(invalid baseURL '${e.baseURL}'.)}if(typeof e.protocol=="string"&&(A.protocol=KG(e.protocol,t)),typeof e.username=="string"&&(A.username=WG(e.username,t)),typeof e.password=="string"&&(A.password=HG(e.password,t)),typeof e.hostname=="string"&&(A.hostname=vG(e.hostname,t)),typeof e.port=="string"&&(A.port=zG(e.port,A.protocol,t)),typeof e.pathname=="string"){if(A.pathname=e.pathname,o&&!UG(A.pathname,t)){let g=o.pathname.lastIndexOf("/");g>=0&&(A.pathname=$e(o.pathname.substring(0,g+1),t)+A.pathname)}A.pathname=XG(A.pathname,A.protocol,t)}return typeof e.search=="string"&&(A.search=SG(e.search,t)),typeof e.hash=="string"&&(A.hash=TG(e.hash,t)),A}function hg(A){return A.replace(/([+*?:{}()\\])/g,"\\$1")}function tk(A){return A.replace(/([.+*?^${}()[\]|/\\])/g,"\\$1")}function ok(A,e){e.delimiter??="/#?",e.prefixes??="./",e.sensitive??=!1,e.strict??=!1,e.end??=!0,e.start??=!0,e.endsWith="";let t=".*",o=^${tk(e.delimiter)}+?,g=/[$_\u200C\u200D\p{ID_Continue}]/u,r="";for(let n=0;n<A.length;++n){let Q=A[n];if(Q.type===3){if(Q.modifier===3){r+=hg(Q.value);continue}r+={${hg(Q.value)}}${bo(Q.modifier)};continue}let B=Q.hasCustomName(),C=!!Q.suffix.length||!!Q.prefix.length&&(Q.prefix.length!==1||!e.prefixes.includes(Q.prefix)),i=n>0?A[n-1]:null,I=n<A.length-1?A[n+1]:null;if(!C&&B&&Q.type===1&&Q.modifier===3&&I&&!I.prefix.length&&!I.suffix.length)if(I.type===3){let s=I.value.length>0?I.value[0]:"";C=g.test(s)}else C=!I.hasCustomName();if(!C&&!Q.prefix.length&&i&&i.type===3){let s=i.value[i.value.length-1];C=e.prefixes.includes(s)}C&&(r+="{"),r+=hg(Q.prefix),B&&(r+=:${Q.name}),Q.type===2?r+=(${Q.value}):Q.type===1?B||(r+=(${o})):Q.type===0&&(!B&&(!i||i.type===3||i.modifier!==3||C||Q.prefix!=="")?r+="*":r+=(${t})),Q.type===1&&B&&Q.suffix.length&&g.test(Q.suffix[0])&&(r+="\\"),r+=hg(Q.suffix),C&&(r+="}"),Q.modifier!==3&&(r+=bo(Q.modifier))}return r}var vl=class{#r;#t={};#e={};#A={};#g={};#n=!1;constructor(A={},e,t){try{let o;if(typeof e=="string"?o=e:t=e,typeof A=="string"){let Q=new ek(A);if(Q.parse(),A=Q.result,o===void 0&&typeof A.protocol!="string")throw new TypeError("A base URL must be provided for a relative constructor string.");A.baseURL=o}else{if(!A||typeof A!="object")throw new TypeError("parameter 1 is not of type 'string' and cannot convert to dictionary.");if(o)throw new TypeError("parameter 1 is not of type 'string'.")}typeof t>"u"&&(t={ignoreCase:!1});let g={ignoreCase:t.ignoreCase===!0},r={pathname:mt,protocol:mt,username:mt,password:mt,hostname:mt,port:mt,search:mt,hash:mt};this.#r=mg(r,A,!0),Ul(this.#r.protocol)===this.#r.port&&(this.#r.port="");let n;for(n of dC){if(!(n in this.#r))continue;let Q={},B=this.#r[n];switch(this.#e[n]=[],n){case"protocol":Object.assign(Q,ht),Q.encodePart=MC;break;case"username":Object.assign(Q,ht),Q.encodePart=PG;break;case"password":Object.assign(Q,ht),Q.encodePart=VG;break;case"hostname":Object.assign(Q,RG),xl(B)?Q.encodePart=Tl:Q.encodePart=Ll;break;case"port":Object.assign(Q,ht),Q.encodePart=Sl;break;case"pathname":Zl(this.#t.protocol)?(Object.assign(Q,ZG,g),Q.encodePart=qG):(Object.assign(Q,ht,g),Q.encodePart=_G);break;case"search":Object.assign(Q,ht,g),Q.encodePart=$G;break;case"hash":Object.assign(Q,ht,g),Q.encodePart=Ak;break}try{this.#g[n]=Ol(B,Q),this.#t[n]=Fl(this.#g[n],this.#e[n],Q),this.#A[n]=ok(this.#g[n],Q),this.#n=this.#n||this.#g[n].some(C=>C.type===2)}catch{throw new TypeError(invalid ${n} pattern '${this.#rn}'.)}}}catch(o){throw new TypeError(Failed to construct 'URLPattern': ${o.message})}}test(A={},e){let t={pathname:"",protocol:"",username:"",password:"",hostname:"",port:"",search:"",hash:""};if(typeof A!="string"&&e)throw new TypeError("parameter 1 is not of type 'string'.");if(typeof A>"u")return!1;try{typeof A=="object"?t=mg(t,A,!1):t=mg(t,bl(A,e),!1)}catch{return!1}let o;for(o of dC)if(!this.#t[o].exec(t[o]))return!1;return!0}exec(A={},e){let t={pathname:"",protocol:"",username:"",password:"",hostname:"",port:"",search:"",hash:""};if(typeof A!="string"&&e)throw new TypeError("parameter 1 is not of type 'string'.");if(typeof A>"u")return;try{typeof A=="object"?t=mg(t,A,!1):t=mg(t,bl(A,e),!1)}catch{return null}let o={};e?o.inputs=[A,e]:o.inputs=[A];let g;for(g of dC){let r=this.#t[g].exec(t[g]);if(!r)return null;let n={};for(let[Q,B]of this.#e[g].entries())if(typeof B=="string"||typeof B=="number"){let C=r[Q+1];n[B]=C}o[g]={input:t[g]??"",groups:n}}return o}static compareComponent(A,e,t){let o=(Q,B)=>{for(let C of["type","modifier","prefix","value","suffix"]){if(Q[C]<B[C])return-1;if(Q[C]!==B[C])return 1}return 0},g=new dg(3,"","","","",3),r=new dg(0,"","","","",3),n=(Q,B)=>{let C=0;for(;C<Math.min(Q.length,B.length);++C){let i=o(Q[C],B[C]);if(i)return i}return Q.length===B.length?0:o(Q[C]??g,B[C]??g)};return!e.#A[A]&&!t.#A[A]?0:e.#A[A]&&!t.#A[A]?n(e.#g[A],[r]):!e.#A[A]&&t.#A[A]?n([r],t.#g[A]):n(e.#g[A],t.#g[A])}get protocol(){return this.#A.protocol}get username(){return this.#A.username}get password(){return this.#A.password}get hostname(){return this.#A.hostname}get port(){return this.#A.port}get pathname(){return this.#A.pathname}get search(){return this.#A.search}get hash(){return this.#A.hash}get hasRegExpGroups(){return this.#n}};globalThis.URLPattern||(globalThis.URLPattern=vl);var Hl,Wl=async(A,e)=>(Hl??=_r({wasmModule:A,workerURL:e}),await Hl,async t=>{let{outputFiles:o}=await Vr({entryPoints:[t],format:"esm",bundle:!0,minify:!0,charset:"utf8",plugins:[bc(),kl({fetch:gk,reload:[new URLPattern({hostname:location.hostname}),new URLPattern({hostname:"scrapbox.io"})]})],write:!1});return{contents:o[0].text}}),gk=async(A,e)=>{let t=Zc(new URL(A.url))||!GM_fetch?globalThis.fetch:GM_fetch;if(e){let o=await fC(A);if(o)return o}try{let o=await t(A);return o.ok?(t===GM_fetch&&!A.url.startsWith("data:")&&await Cr(A,o),SA([o,!1])):await fC(A)??aA({name:"HTTPError",message:${o.status} ${o.statusText},response:o})}catch(o){let g=await fC(A);if(g)return g;if(o instanceof TypeError)return aA({name:"NetworkError",message:o.message,request:A});if(o instanceof DOMException)return aA({name:"AbortError",message:o.message,request:A});throw o}},fC=async A=>{if(A.url.startsWith("data:"))return;let e=await ro(A);if(e)return e.url||Object.defineProperty(e,"url",{value:A.url}),SA([e,!0])};var Xl=A=>["ts","js","tsx","jsx","mjs","javascript","typescript"].includes(A);var zl=()=>{let A=document.createElement("i");return A.classList.add("kamon","kamon-check-circle-fill"),A.style.color="hsl(133, 46.1%, 47.3%)",A},Kl=()=>{let A=document.createElement("i");return A.classList.add("kamon","kamon-cross-circle"),A.style.color="hsl(1.7, 64.5%, 58%)",A},Pl=()=>{let A=document.createElement("i");return A.classList.add("i","fa","fa-spinner"),A},Vl=()=>{let A=document.createElement("i");return A.classList.add("kamon","kamon-play"),A};var ql=()=>{let A;return{show:(o,{x:g,y:r})=>{A=rk(),A.append(Qk(o)),A.style.visibility="hidden",document.body.append(A);let{height:n}=A.getBoundingClientRect();A.style.top=${r-n}px,A.style.left=${g}px,A.style.removeProperty("visibility")},hide:async()=>{A?.classList?.remove?.("in"),await new Promise(o=>setTimeout(o,150)),A?.remove?.()}}},rk=()=>{let A=document.createElement("div");return A.setAttribute("role","tooltip"),A.classList.add("fade","in","tooltip","top"),A},Qk=A=>{let e=document.createElement("pre");return e.classList.add("tooltip-inner"),e.style.textAlign="unset",e.style.maxWidth="70vw",e.style.margin="unset",e.innerText=A,e};var _l=()=>{let A=document.createElement("a");A.classList.add("tool-btn"),A.type="button",A.setAttribute("aria-haspopup","true");let e=!1,{show:t,hide:o}=ql();return{component:A,setStatus:async(r,n)=>{switch(A.textContent="",await o(),r){case"loading":A.append(Pl());break;case"pass":A.append(zl());break;case"fail":A.append(Kl());break;case"none":break}n!==void 0&&r!=="none"?(A.style.removeProperty("pointer-events"),A.onclick=async()=>{if(e)await o();else{let{top:Q,left:B}=A.getBoundingClientRect();t(n,{y:Q+globalThis.scrollY,x:B})}e=!e}):A.style.pointerEvents="none"}}};var $l=A=>{let e=document.createElement("a");return e.classList.add("tool-btn"),e.type="button",e.setAttribute("aria-haspopup","true"),e.append(Vl()),e.addEventListener("click",A),e};var AD=A=>{let{component:e,setStatus:t}=_l(),o=document.createElement("div");return o.style.position="absolute",o.style.left="-2em",o.style.zIndex="1",o.style.display="flex",o.style.flexFlow="column",o.append($l(A),e),{menu:o,setStatus:t}};function eD(A){return new Promise(e=>setTimeout(e,A))}function tD(A,e){let{trailing:t=!1,interval:o=0}=e??{},g,r=!1,n=C=>{g?.resolve?.({executed:!1}),g=C},Q=()=>{let{...C}=g;return g=void 0,C},B=async()=>{if(r||!g)return;r=!0,o>0&&await eD(o);let{parameters:C,resolve:i,reject:I}=Q();try{let s=await A(...C);r=!1,i({result:s,executed:!0})}catch(s){r=!1,I(s)}finally{t?await B():(n(),await Promise.resolve())}};return(...C)=>new Promise((i,I)=>{n({parameters:C,resolve:i,reject:I}),B()})}var oD,gD=async(A,e)=>{let t=[],g=tD(async()=>{t.forEach(({menu:n,setStatus:Q})=>{Q("none"),n.remove()});let r=Ya(scrapbox.Project.name,scrapbox.Page.title??"",XA());for(let n of r){let Q=n.lang.toLowerCase();if(Xl(Q))for(let B of n.startIds){let C=document.getElementById(L${B}),{menu:i,setStatus:I}=AD(async()=>{await I("loading");try{oD??=await Wl(A,e);let{contents:s}=await oD(n.path);console.debug("execute:",s),await Function(return (async()=>{${s}})())(),await I("pass")}catch(s){console.error(s),await I("fail",${s})}});t.push({menu:i,setStatus:I}),C?.insertBefore?.(i,C?.firstElementChild)}}await Promise.resolve()},{interval:100,trailing:!0});return await g(),scrapbox.addListener("lines:changed",g),()=>{scrapbox.removeListener("lines:changed",g),t.forEach(({menu:r,setStatus:n})=>{n("none"),r.remove()})}};var rD=({title:A,projects:e,selected:t,confirm:o})=>a("div",{className:candidate${t?" selected":""}},a(nk,{title:A,confirm:o}),e.map(g=>a(Bk,{project:g.name,title:A,mark:g.mark,confirm:g.confirm}))),nk=({title:A,confirm:e})=>a("a",{className:"button",tabIndex:0,role:"menuitem",href:./${V(A)},onClick:QD(e)},A),Bk=({project:A,title:e,mark:t,confirm:o})=>t===""?a(W,null):a("a",{className:"mark",tabIndex:0,href:../${A}/${V(e)},onClick:QD(o),title:/${A}/${V(e)}},t instanceof URL?a("img",{src:t.href}):${t}),QD=A=>k(e=>{e.metaKey||e.ctrlKey||e.altKey||e.shiftKey||(e.preventDefault(),e.stopPropagation(),A())},[A]);var nD=(A,e)=>{let[t,o]=L(null),g=k(B=>o(C=>{if(A.length===0)return null;if(C===null)return e(A[0]);let i=A.findIndex(I=>e(I)===C);return e(B?.cyclic?A[(i+1)%A.length]:A.at(i+1)??A[0])}),[A,e]),r=k(B=>o(C=>{if(A.length===0)return null;if(C===null)return e(A[A.length-1]);let i=A.findIndex(I=>e(I)===C);return i<0?e(A[A.length-1]):e(B?.cyclic?A[(i-1+A.length)%A.length]:A.at(i-1)??A[A.length-1])}),[A,e]),n=k(()=>o(A.length===0?null:e(A[0])),[A,e]),Q=k(()=>o(A.length===0?null:e(A[A.length-1])),[A,e]);return{selectedId:t,next:g,prev:r,selectFirst:n,selectLast:Q}};var BD=A=>{let[e,t]=L(null),o=x(()=>{let g=e?.getBoundingClientRect?.(),n=Ko(A.line,A.char)?.getBoundingClientRect?.();return!n||!g?{}:{top:${n.bottom-g.top}px,left:${n?.left??0-g.left}px,right:${g.right-(n?.left??0)}px}},[e,A.line,A.char]);return{updateStandardElement:t,...o}};var yC="enableProjectsOnSuggestion",CD=(A,e)=>{let[t,o]=L(GQ([...A],e)),g=k((r,n)=>{Ck(r,n,A,e),o(GQ([...A],e))},[A,e.enableSelfProjectOnStart]);return X(()=>{let r=n=>{n.key===yC&&o(GQ([...A],e))};return addEventListener("storage",r),()=>removeEventListener("storage",r)},[A,e.enableSelfProjectOnStart]),{projects:t,set:g}},NC=!0,GQ=(A,e)=>{try{let t=localStorage.getItem(yC);if(t===null)return kQ(A),A;let o=JSON.parse(t);return Array.isArray(o)&&o.every(g=>typeof g=="string")?!e.enableSelfProjectOnStart||!A.includes(scrapbox.Project.name)?o:o.includes(scrapbox.Project.name)?NC?o:o.filter(g=>g!==scrapbox.Project.name):NC?[...o,scrapbox.Project.name]:o:(kQ(A),A)}catch(t){if(!(t instanceof TypeError))throw t;return kQ(A),A}},Ck=(A,e,t,o)=>{let g=GQ([...t],o);o.enableSelfProjectOnStart&&A===scrapbox.Project.name&&(NC=e),kQ(e?[...g,A]:g.filter(r=>r!==A))},kQ=A=>localStorage.setItem(yC,JSON.stringify(A));var iD=()=>x(()=>document.documentElement.dataset.os??"",[]);var ug=(A,e)=>{if(A instanceof URL)return A;try{return new URL(A)}catch(t){if(!(t instanceof TypeError))throw t;if(!e||!/^\.\/|^\.\.\/|^\//.test(A))return A;try{return new URL(A,e)}catch(o){if(!(o instanceof TypeError))throw o;return A}}};var ID=({progress:A})=>a("div",{className:"progress",style:background: linear-gradient(to right, var(--select-suggest-border-color, #eee) ${(A*100).toPrecision(3)}%, transparent ${(A*100).toPrecision(3)}%)});var ED=({position:A,start:e,enableSelfProjectOnStart:t,projects:o,...g})=>{let{projects:r,set:n}=CD(o,{enableSelfProjectOnStart:t}),{updateStandardElement:Q,top:B,left:C,right:i}=BD({line:A.line,char:e}),I=iD();return a(W,null,a(Ik,{itemCount:g.items.length,enableProjects:r,projects:o,top:B,right:i,set:n,os:I,...g}),a(ik,{updateStandardElement:Q,start:e,enableProjects:r,projects:o,top:B,left:C,os:I,...g}))},ik=({start:A,updateStandardElement:e,confirmAfter:t,cancel:o,query:g,enableProjects:r,projects:n,items:Q,top:B,left:C,progress:i,callback:I,limit:s,mark:E,os:c})=>{let l=k((y,u)=>{let f=u?/${u}/${y}:${y};t((G,{line:j})=>[${...G.slice(0,A).join("")}${f}${...G.slice(A+...g.length).join("")},{line:j,char:A+[...f].length}])},[A,g]),D=x(()=>n.size>1||!n.has(scrapbox.Project.name),[n]),m=x(()=>{let y=[];for(let u of Q){if(y.length===s)break;u.projects.some(f=>r.includes(f))&&y.push({title:u.title,projects:u.projects.flatMap(f=>r.includes(f)?[{name:f,mark:D?ug(E[f]??"",import.meta.url)||f[0]:"",confirm:()=>l(u.title,f)}]:[]),confirm:()=>l(u.title)})}return y},[r,D,Q,s,E,l]),{selectedId:N,next:M,prev:p,selectLast:h,selectFirst:d}=nD(m,sD),b=k(()=>N===null?!1:(m.find(y=>sD(y)===N)?.confirm?.(),!0),[N,m]);X(()=>I(m.length===0?void 0:{selectNext:y=>(M(y),!0),selectPrev:y=>(p(y),!0),selectFirst:()=>(d(),!0),selectLast:()=>(h(),!0),confirm:b,cancel:()=>(o(),!0)}),[I,m.length,M,p,d,h,b]);let Y=x(()=>m.length>0&&B!=null&&C!=null?{top:B,left:C}:{display:"none"},[m.length,B,C]),R=k(y=>{if(!y){e(y);return}let u=y.parentNode;if(!(u instanceof ShadowRoot))throw Error('The parent of "div.container" must be ShadowRoot');e(u.host.parentElement)},[e]);return a("div",{ref:R,className:"container candidates","data-os":c,style:Y},m.map(y=>a(rD,{key:y.title,...y,selected:N===y.title})),Q.length>s&&a("div",{className:"counter"},${Q.length-s} more links),a(ID,{progress:i}))},Ik=({enableProjects:A,projects:e,projectScore:t,mark:o,itemCount:g,top:r,right:n,set:Q,os:B,freezeUntil:C})=>{let i=x(()=>[...e].sort((s,E)=>(t.get(E)??0)-(t.get(s)??0)).flatMap(s=>t.has(s)?[{name:s,enable:A.includes(s),mark:ug(o[s]??"",import.meta.url)||s[0],score:t.get(s),onClick:()=>C(()=>{Q(s,!A.includes(s)),GA().focus()})}]:[]),[e,t,A,o]),I=x(()=>g>0&&r!=null&&n!=null&&e.size>1?{top:r,right:n}:{display:"none"},[r,n,g,e.size]);return a("div",{className:"container projects","data-os":B,style:I},i.map(s=>a(sk,{key:s.name,...s})))},sk=A=>a("div",{className:A.enable?"mark":"mark disabled","data-score":A.score.toPrecision(3),onClick:A.onClick,title:A.name},A.mark instanceof URL?a("img",{src:A.mark.href}):${A.mark}),sD=A=>A.title;var ie=!1,GC=A=>{ie=typeof A=="boolean"?A:new Set(A)},jo=A=>Object.fromEntries([...Object.entries(console)].map(([e,t])=>{if(typeof t!="function")return[e,t];switch(e){case"warn":case"error":return[e,(...o)=>t(%c${A},"color: gray",...o)];case"log":case"info":case"debug":return[e,(...o)=>{ie!==!0&&(!ie||!ie.has(A))||t(%c${A},"color: gray",...o)}];case"assert":return[e,(o,...g)=>{ie!==!0&&(!ie||!ie.has(A))||t(o,%c${A},"color: gray",...g)}];case"time":case"timeEnd":return[e,o=>{ie!==!0&&(!ie||!ie.has(A))||t(${A} ${o})}];default:return[e,(...o)=>{if(!(ie!==!0&&(!ie||!ie.has(A))))return t(...o)}]}}));var YQ=A=>{let[e,t,o,...g]=A;return{title:e,links:g,image:t,exists:o>=0,updated:Math.min(0,o)}},aD=A=>[A.title,A.image,A.exists?A.updated:-1,...A.links];var cD=A=>{let e=new Map;for(let t of A){let o=P(t.title);e.set(o,{title:t.title,image:t.image,updated:t.updated,links:t.links,exists:!0});for(let g of t.links){let r=P(g);e.has(r)||e.set(r,{title:g,updated:0,links:[],exists:!1})}}return[...e.values()].map(t=>aD(t))};var lD=jo("scrapbox-storage:remote.ts"),DD=async A=>{let e,t=[],o=download and create Links of "${A}";lD.time(o);do{let r=await oI(A,{followingId:e});if(!r.ok)return r;e=r.value.followingId,t.push(...r.value.pages)}while(e);let g=cD(t);return lD.timeEnd(o),{ok:!0,value:g}};async function*pD(A){let e=[],t=[],o=new Map;for(let r of A)r.id?e.push(r.id):t.push(r.project),o.set(r.project,r.checked);let g=await eo(e);if(!g.ok)t=A.map(r=>r.project);else for(let r of g.value.projects)o.has(r.name)&&(yield{ok:!0,value:{...r,checked:o.get(r.name)??0}});for(let r of t){let n=await me(r);yield n.ok?{ok:!0,value:{...n.value,checked:o.get(r)??0}}:{ok:!1,value:{...n.value,project:r}}}}var bC=(A,e)=>e.some(t=>A instanceof t),wD,mD;function Ek(){return wD||(wD=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function ak(){return mD||(mD=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}var jC=new WeakMap,kC=new WeakMap,bQ=new WeakMap;function ck(A){let e=new Promise((t,o)=>{let g=()=>{A.removeEventListener("success",r),A.removeEventListener("error",n)},r=()=>{t(dt(A.result)),g()},n=()=>{o(A.error),g()};A.addEventListener("success",r),A.addEventListener("error",n)});return bQ.set(e,A),e}function lk(A){if(jC.has(A))return;let e=new Promise((t,o)=>{let g=()=>{A.removeEventListener("complete",r),A.removeEventListener("error",n),A.removeEventListener("abort",n)},r=()=>{t(),g()},n=()=>{o(A.error||new DOMException("AbortError","AbortError")),g()};A.addEventListener("complete",r),A.addEventListener("error",n),A.addEventListener("abort",n)});jC.set(A,e)}var OC={get(A,e,t){if(A instanceof IDBTransaction){if(e==="done")return jC.get(A);if(e==="store")return t.objectStoreNames[1]?void 0:t.objectStore(t.objectStoreNames[0])}return dt(A[e])},set(A,e,t){return A[e]=t,!0},has(A,e){return A instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in A}};function MD(A){OC=A(OC)}function Dk(A){return ak().includes(A)?function(...e){return A.apply(FC(this),e),dt(this.request)}:function(...e){return dt(A.apply(FC(this),e))}}function pk(A){return typeof A=="function"?Dk(A):(A instanceof IDBTransaction&&lk(A),bC(A,Ek())?new Proxy(A,OC):A)}function dt(A){if(A instanceof IDBRequest)return ck(A);if(kC.has(A))return kC.get(A);let e=pk(A);return e!==A&&(kC.set(A,e),bQ.set(e,A)),e}var FC=A=>bQ.get(A);function fD(A,e,{blocked:t,upgrade:o,blocking:g,terminated:r}={}){let n=indexedDB.open(A,e),Q=dt(n);return o&&n.addEventListener("upgradeneeded",B=>{o(dt(n.result),B.oldVersion,B.newVersion,dt(n.transaction),B)}),t&&n.addEventListener("blocked",B=>t(B.oldVersion,B.newVersion,B)),Q.then(B=>{r&&B.addEventListener("close",()=>r()),g&&B.addEventListener("versionchange",C=>g(C.oldVersion,C.newVersion,C))}).catch(()=>{}),Q}function ND(A,{blocked:e}={}){let t=indexedDB.deleteDatabase(A);return e&&t.addEventListener("blocked",o=>e(o.oldVersion,o)),dt(t).then(()=>{})}var wk=["get","getKey","getAll","getAllKeys","count"],mk=["put","add","delete","clear"],YC=new Map;function hD(A,e){if(!(A instanceof IDBDatabase&&!(e in A)&&typeof e=="string"))return;if(YC.get(e))return YC.get(e);let t=e.replace(/FromIndex$/,""),o=e!==t,g=mk.includes(t);if(!(t in(o?IDBIndex:IDBObjectStore).prototype)||!(g||wk.includes(t)))return;let r=async function(n,...Q){let B=this.transaction(n,g?"readwrite":"readonly"),C=B.store;return o&&(C=C.index(Q.shift())),(await Promise.all([C[t](...Q),g&&B.done]))[0]};return YC.set(e,r),r}MD(A=>({...A,get:(e,t,o)=>hD(e,t)||A.get(e,t,o),has:(e,t)=>!!hD(e,t)||A.has(e,t)}));var hk=["continue","continuePrimaryKey","advance"],dD={},JC=new WeakMap,yD=new WeakMap,dk={get(A,e){if(!hk.includes(e))return A[e];let t=dD[e];return t||(t=dD[e]=function(...o){JC.set(this,yD.get(this)[e](...o))}),t}};async function*uk(...A){let e=this;if(e instanceof IDBCursor||(e=await e.openCursor(...A)),!e)return;e=e;let t=new Proxy(e,dk);for(yD.set(t,e),bQ.set(t,FC(e));e;)yield t,e=await(JC.get(t)||e.continue()),JC.delete(t)}function uD(A,e){return e===Symbol.asyncIterator&&bC(A,[IDBIndex,IDBObjectStore,IDBCursor])||e==="iterate"&&bC(A,[IDBIndex,IDBObjectStore])}MD(A=>({...A,get(e,t,o){return uD(e,t)?uk:A.get(e,t,o)},has(e,t){return uD(e,t)||A.has(e,t)}}));var GD=jo("scrapbox-storage:db.ts"),kD,jQ=async()=>(kD??=await fD("scrapbox-storage",1,{upgrade(A){GD.time("update DB");for(let e of A.objectStoreNames)A.deleteObjectStore(e);A.createObjectStore("links",{keyPath:"project"}),A.createObjectStore("status",{keyPath:"project"}),GD.timeEnd("update DB")}}),kD),YD=async A=>(await jQ()).put("links",A);var OQ=new Map,bD=A=>{let e={type:"update",projects:A};jD(e);let t=new BroadcastChannel(OD);t.postMessage(e),t.close()},jD=A=>{for(let e of new Set(A.projects.flatMap(t=>[...OQ.get(t)??[]])))e?.(A)},OD="scrapbox-storage-notify",Mk=new BroadcastChannel(OD);Mk.addEventListener("message",A=>jD(A.data));var Mg=(A,e)=>{for(let t of A){let o=OQ.get(t)??new Set;o.add(e),OQ.set(t,o)}return()=>{for(let t of A)OQ.get(t)?.delete?.(e)}};var At=jo("scrapbox-storage:mod.ts"),FQ=async(A,e)=>{let t=await jQ(),o=[],g=[];try{{At.debug("check updates of links...");let Q=t.transaction("status","readwrite");await Promise.all(A.map(async B=>{let C=await Q.store.get(B);if(C?.isValid===!1)return;let i=C?.checked??0,I=new Date().getTime()/1e3;if(i+e>I||C?.updating&&i+600>I)return;let s={project:B,id:C?.id,isValid:!0,checked:i,updated:C?.updated??0,updating:!0};o.push(s),Q.store.put(s)})),await Q.done,At.debug(checked. ${o.length} projects maybe need upgrade.)}if(o.length===0)return[];let r=[],n=[];for await(let Q of pD(o)){if(!Q.ok)switch(g.push({project:Q.value.project,isValid:!1}),Q.value.name){case"NotFoundError":At.warn("${Q.value.project}" is not found.);continue;case"NotMemberError":At.warn(You are not a member of "${Q.value.project}".);continue;case"NotLoggedInError":At.warn(You are not a member of "${Q.value.project}" or You are not logged in yet.);continue}if(Q.value.updated<Q.value.checked)At.debug(no updates in "${Q.value.name}");else{let B=await DD(Q.value.name);if(!B.ok)throw Error(${B.value.name} ${B.value.message});let C={project:Q.value.name,links:B.value};n.push(C),At.time(write data of "${Q.value.name}"),await YD(C),r.push(Q.value.name),At.timeEnd(write data of "${Q.value.name}")}g.push({project:Q.value.name,isValid:!0,id:Q.value.id,checked:new Date().getTime()/1e3,updated:Q.value.updated,updating:!1})}return r.length>0&&bD(r),n}finally{let r=t.transaction("status","readwrite"),n=r.store;await Promise.all(g.map(Q=>n.put(Q))),await r.done}},JQ=async A=>{let e=[],t=new Date;{let g=(await jQ()).transaction("links","readonly");await Promise.all(A.map(async r=>{let n=await g.store.get(r);e.push(n??{project:r,links:[]})})),await g.done}let o=new Date().getTime()-t.getTime();return At.debug(Read links of ${A.length} projects in ${o}ms),e};ND("userscript-links").catch(A=>console.error(A));var xC=ke("scrapbox-select-suggestion:useSource.ts"),FD=A=>{let[e,t]=L([]),o=k(g=>{let r=new Date,n=new Map;for(let{project:C,links:i}of g)for(let I of i){let{title:s,updated:E,image:c}=YQ(I),l=P(s),D=n.get(l);n.set(l,{title:D?.title??s,updated:Math.max(D?.updated??0,E),metadata:[...D?.metadata??[],{project:C,image:c}]})}let Q=[...n.entries()].map(([C,i])=>({titleLc:C,...i})),B=new Date().getTime()-r.getTime();xC.debug(Compiled ${Q.length} source in ${B}ms),xC.debug("Detect changes!"),t(Q)},[]);return X(()=>{let g=!1,r=async()=>{let C=await JQ([...A]);g||o(C)};r();let n=Mg([...A],({projects:C})=>{xC.debug(Detect ${C.length} projects' update:,C),r()}),Q=()=>FQ([...A],600);Q();let B=setInterval(Q,600*1e3);return()=>{g=!0,clearInterval(B),n()}},[A]),e};var JD=A=>{let e=x(()=>ug(A.style,import.meta.url),[A.style]);return a(W,null,e!==""&&(e instanceof URL?a("link",{rel:"stylesheet",href:e.href}):a("style",null,e)))};var xD=()=>a("style",null,.container { position: absolute;
margin-top: 14px;
max-height: 80vh;
z-index: 301;
background-color: var(--select-suggest-bg, #111); font-family: var(--select-suggest-font-family, "Open Sans", Helvetica, Arial, "Hiragino Sans", sans-serif);
font-size: 14px;
color: var(--select-suggest-text-color, #eee); border-radius: 4px;
}
.candidates {
max-width: 80vw;
}
font-size:11px;
}
.projects {
margin-right: 4px;
display: grid;
grid-template-rows: repeat(4, min-content);
grid-auto-flow: column;
direction: rtl;
}
padding: 6px;
}
.candidates > :not(:first-child) {
border-top: 1px solid var(--select-suggest-border-color, #eee); }
.candidates > *{
line-height: 1.2em;
padding: 0.5em 10px;
}
.candidate {
display: flex;
}
a {
display: block;
text-decoration: none;
color: inherit;
}
a:not(.mark) {
width: 100%;
}
.selected a {
background-color: var(--select-suggest-selected-bg, #222); text-decoration: underline
}
img {
height: 1.3em;
width: 1.3em;
position: relative;
object-fit: cover;
object-position: 0% 0%;
}
.disabled {
filter: grayscale(1.0) opacity(0.5);
}
.counter {
color: var(--select-suggest-information-text-color, #aaa); font-size: 80%;
font-style: italic;
}
padding: unset;
border: unset;
height: 0.5px;
transition: background 0.1s;
});function*RD(A){if(!("nodes"in A))return;let e=0;function*t(o){for(let g of Array.isArray(o)?o:[o]){if(typeof g=="string"){e+=[...g].length;continue}switch(g.type){case"link":yield{whole:g.unit.whole,start:e},e+=[...g.unit.whole].length;break;case"indent":case"quote":e+=[...g.unit.tag].length,yield*t(g.children);break;case"deco":e+=[...g.unit.deco].length+2,yield*t(g.children),e++;break;case"strong":e+=2,yield*t(g.children),e+=2;break;default:e+=[...g.unit.whole].length;break}}}yield*t(A.nodes)}var ZD=(A,e)=>{if(e.type==="unlock"){if(!A.lock)return A;let{lock:n,...Q}=A;return{...Q}}if(A.lock)return A;switch(e.type){case"lock":{let{lock:n,...Q}=A;return{lock:!0,...Q}}case"enable":return A.type==="disabled"&&A.isManuallyDisabled?{type:"ready"}:A;case"disable":return A.type==="disabled"&&A.isManuallyDisabled?A:{type:"disabled",isManuallyDisabled:!0}}if(A.type==="disabled")return A.isManuallyDisabled||!e.lines?A:{type:"ready"};if(e.type==="cancel")return A.type==="completion"?{type:"cancelled",context:A.context}:A;if(!e.lines)return{type:"disabled"};let t=Math.min(e.range.start.char,e.range.end.char),o=Math.max(e.range.start.char,e.range.end.char),g=e.lines?e.range.start.line!==e.range.end.line?
:[...e.lines[e.range.start.line].text].slice(t,o).join(""):"";if(Nk(e.lines[e.position.line],g)&&A.type!=="cancelled")return{type:"completion",context:"selection",query:g,start:t,position:e.position};if(g!=="")return A.type==="completion"?{type:"ready"}:A;let r=fk(e.lines[e.position.line],e.position.char);return r?A.type==="cancelled"&&A.context==="input"?A:A.type==="completion"||e.type==="lines:changed"?{type:"completion",context:"input",query:r.whole,start:r.start,position:e.position}:A.type==="ready"?A:{type:"ready"}:A.type==="ready"?A:{type:"ready"}},fk=(A,e)=>{for(let{whole:t,start:o}of RD(A))if(!(e<=o||o+[...t].length<=e))return{whole:t,start:o}},Nk=(A,e)=>!(e.trim()===""||e.includes(
)||"codeBlock"in A||"title"in A||"tableBlock"in A&&A.tableBlock.start);var UD=()=>{let A=yA(scrapbox.Page.lines),e=yA(!1);return X(()=>{let t=()=>{e.current=!0};return scrapbox.addListener("lines:changed",t),scrapbox.addListener("layout:changed",t),()=>{scrapbox.removeListener("lines:changed",t),scrapbox.removeListener("layout:changed",t)}},[]),k(()=>(e.current&&(A.current=scrapbox.Page.lines,e.current=!1),A.current??void 0),[])};var yk=ke("scrapbox-select-suggestion:useLifecycle.ts"),LD=()=>{let[A,e]=kt(ZD,{type:"ready"}),t=UD(),o=x(()=>{let n;return Q=>{n!==void 0&&clearTimeout(n),n=setTimeout(()=>{let{cursor:B,selection:C}=ge();e({type:Q,lines:t(),range:C.getRange({normalizeOrder:!0}),position:B.getPosition()})},Q==="cursor:changed"?100:void 0)}},[]);X(()=>{let n=()=>{o("lines:changed")};scrapbox.addListener("lines:changed",n),scrapbox.addListener("layout:changed",n);let Q=()=>{o("selection:changed")},B=ir();return B.addChangeListener(Q),()=>{scrapbox.removeListener("lines:changed",n),scrapbox.removeListener("layout:changed",n),B.removeChangeListener(Q)}},[]),X(()=>{if(A.context!=="input")return;let n=()=>{o("cursor:changed")},Q=nt();return Q.addChangeListener(n),()=>Q.removeChangeListener(n)},[A.context]);let[g,r]=L(A);return g!==A&&(r(A),yk.debug("Detect changes",A)),{state:A,setEnable:k(n=>e({type:n?"enable":"disable"}),[]),cancel:k(()=>e({type:"cancel"}),[]),freezeUntil:k(n=>{e({type:"lock"});let Q=n();if(Q instanceof Promise)return Q.then(()=>{e({type:"unlock"})});e({type:"unlock"})},[]),confirmAfter:k(async n=>{let Q=t();if(!Q)return;e({type:"lock"});let{cursor:B,selection:C}=ge(),i=B.getPosition().line,I=Q[i].text,[s,E]=n(I,B.getPosition());C.setRange({start:{line:i,char:0},end:{line:i,char:[...I].length}}),await YA(s),B.setPosition(E),B.focus(),e({type:"unlock"}),e({type:"cancel"})},[])}};var TD=(A,e)=>{let t=A.dist-e.dist;if(t!==0)return t;let o=A.matches.map(([n])=>n).sort(),g=e.matches.map(([n])=>n).sort();for(let n=0;n<o.length;n++){let Q=o[n]-(g[n]??g.length);if(Q!==0)return Q}let r=A.title.length-e.title.length;return r!==0?r:e.updated-A.updated};var SD=A=>{let e=new Map,t=[...A].reverse();{let n=1;for(let Q of t){e.set(Q,(e.get(Q)??0)|n);let B=Q.toLowerCase();e.set(B,(e.get(B)??0)|n);let C=Q.toUpperCase();e.set(C,(e.get(C)??0)|n),n<<=1}}let o=t.length,g=~(-1<<o),r=1<<o-1;return n=>{let Q=0,B=g,C=[...n].reverse(),i=[],I=C.length;i[I]=o;for(let s of C){let E=e.get(s)??0,c=E|Q,l=(E&B)+B^B|E,D=Q|~(l|B),m=B&l;i[I-1]=i[I]+(D&r?1:m&r?-1:0),B=m<<1|~(c|D<<1),Q=D<<1&c,I--}return i}};var Gk=[0,0,0,1,1,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],vD=A=>{let e=Si(A.trim()).split(/\s+/).sort((t,o)=>o.length-t.length);if(!(e.length===0||e.every(t=>t==="")))return t=>{let o=[...t];for(let g of e)o=kk(g,o);return o}},kk=(A,e)=>{let t=[...A].length,o=Gk[t],g=SD(A);return e.flatMap(({title:r,dist:n,matches:Q,...B})=>{Q??=[],n??=0;let C=g(r).flatMap((I,s)=>I<=o&&Q.every(([E,c])=>s+t<=E||c<s)?[[s,I]]:[]);if(C.length===0)return[];let i=C.reduce((I,[s,E])=>(I.dist<=E||(I.dist=E,I.start=s),I),{dist:t,start:0});return Q.push([i.start,i.start+t-1]),[{title:r,dist:i.dist+n,matches:Q,...B}]})};var Yk=ke("scrapbox-select-suggestion:cancelableSearch.ts");async function*HD(A,e,t){let o=vD(A);if(!o)return;let g=t?.chunk??1e3,r=Math.floor(e.length/g)+1,n=0,Q=new Date;try{for(;n<r;n++)await new Promise(B=>requestAnimationFrame(B)),yield[o(e.slice(n*g,(n+1)*g)),(n+1)/r]}finally{let C=new Date().getTime()-Q.getTime();Yk.debug(search ${(n/r*100).toPrecision(3)}% of the source for "${A}" in ${C}ms)}}function WD(A,e){let t=null,o=null,g=(...r)=>{g.clear(),o=()=>{g.clear(),A.call(g,...r)},t=setTimeout(o,e)};return g.clear=()=>{typeof t=="number"&&(clearTimeout(t),t=null,o=null)},g.flush=()=>{o?.()},Object.defineProperty(g,"pending",{get:()=>typeof t=="number"}),g}var bk=ke("scrapbox-select-suggestion:useSearch.ts"),XD=A=>{let e=k((g,r,n)=>{let Q=!1,B=HD(g,r,{chunk:5e3});return{run:async()=>{if(n){let s=[];for await(let[E]of B){if(Q)return;s.push(...E)}o({progress:1,candidates:s});return}let C=WD(o,500),i=!1,I=[];for await(let[s,E]of B){if(Q){C.clear();return}I=[...I,...s],o({progress:E}),s.length!==0&&(C({progress:E,candidates:I}),i||(C.flush(),i=!0))}C({progress:1,candidates:I}),C.flush()},abort:()=>Q=!0}},[]),[t,o]=kt(x(()=>jk(e),[e]),{source:A});return[x(()=>{if(!Oo(t))return;let[g,r]=Ok(t.candidates);return bk.debug("Detect changes",{progress:t.progress,items:r}),{progress:t.progress,projectScore:g,items:r}},[t]),{search:k(g=>o({query:g}),[]),update:k(g=>o({source:g}),[])}]},Oo=A=>"query"in A,jk=A=>(e,t)=>{if("query"in t){let n=Oo(e)?e.query:"";if(t.query===n)return e;let Q=Oo(e)?e.job:void 0;if(!t.query)return Q?.abort?.(),{source:e.source};let{run:B,abort:C}=A(t.query,e.source,!1),i=Q?.abort?.()?.then?.(B)??B();return{query:t.query,source:e.source,job:{done:i,abort:()=>(C(),i)},progress:0,candidates:!n||!Oo(e)?[]:e.candidates}}if("source"in t){if(!Oo(e))return t.source===e.source?e:t;let{source:n,job:Q,...B}=e;if(t.source===n)return e;let{run:C,abort:i}=A(e.query,n,!1),I=Q.done.then(C);return{source:t.source,job:{done:I,abort:()=>Q.abort().then(()=>(i(),I))},...B}}if(!Oo(e))return e;if(!t.candidates){let{progress:n,...Q}=e;return n===t.progress?e:{progress:t.progress,...Q}}let{candidates:o,progress:g,...r}=e;return o===t.candidates&&g===t.progress?e:{candidates:t.candidates??o,progress:t.progress,...r}},Ok=A=>{let e=new Map,t=[];for(let o of A.sort(TD)){let g=o.metadata.map(({project:r})=>r);for(let r of g)e.set(r,(e.get(r)??0)+.5**o.dist);t.push({title:o.title,dist:o.dist,projects:g})}return[e,t]};var zD=(A,e)=>{let t=yA({...e});X(()=>(Object.assign(t.current,e),()=>{for(let o of Object.keys(e))delete t.current[o]}),[...Object.keys(e)].sort().map(o=>e[o])),X(()=>{A(t.current)},[A])};var Fk={selectNext:()=>!1,selectPrev:()=>!1,selectFirst:()=>!1,selectLast:()=>!1,confirm:()=>!1,cancel:()=>!1},KD=A=>{let e=FD(A.projects),[t,{update:o,search:g}]=XD(e),{state:r,setEnable:n,...Q}=LD();o(e),g(r.type==="completion"?r.context==="input"?r.query.slice(1,-1):r.query:"");let[B,C]=L(),{callback:i,style:I,...s}=A;return zD(i,{enable:k(()=>n(!0),[]),disable:k(()=>n(!1),[]),...r.type!=="completion"||!B?Fk:B}),a(W,null,a(xD,null),a(JD,{style:I}),r.type==="completion"&&t&&a(ED,{callback:C,...t,...r,...Q,...s}))};var PD=A=>{let e=document.createElement("div");e.dataset.userscriptName="scrapbox-select-suggestion";let t=e.attachShadow({mode:"open"});document.body.append(e);let{limit:o=5,debug:g=!1,mark:r={},style:n="",enableSelfProjectOnStart:Q=!0}=A??{},B=new Set([...Q?[scrapbox.Project.name]:[],...A?.projects??[scrapbox.Project.name]]);return Tn(g),GC(g),new Promise(C=>NA(a(KD,{limit:o,projects:B,mark:r,style:n,callback:C,enableSelfProjectOnStart:Q}),t))};var Ie=A=>A.flatMap(e=>{let t=e.slice(1),o=Math.min(...t.map(g=>g.text.length-g.text.trimStart().length));return t.map(g=>g.text.slice(o))}).join(
).trim();function*VD(A,e){for(let[t,o]of e.entries()){let g=A.get(t);if(g&&Ie(g.blocks)===Ie(o)){yield{changed:!1,filename:t};continue}yield{changed:!0,filename:t}}for(let t of A.keys())e.has(t)||(yield{changed:!0,filename:t})}var qD=A=>{let e=new Map;if(A.length===0)return e;let t=hA(A.map(g=>g.text).join(
),{hasTitle:!0}),o=0;for(let g of t)switch(g.type){case"title":case"line":o++;break;case"table":o+=g.cells.length+1;break;case"codeBlock":{let r=e.get(g.fileName)??[],n=g.content.split(
).length+1;r.push(A.slice(o,o+n)),e.set(g.fileName,r),o+=n;break}}return e};var _D=A=>{let e,t,o=async()=>{for(;e;){let[g,r]=e;e=void 0;try{let n=await A(...g);r({type:"resolve",value:n})}catch(n){r({type:"reject",value:n})}}t=void 0};return(...g)=>{let{resolve:r,promise:n}=Promise.withResolvers();return e?.[1]?.({type:"cancel"}),e=[g,r],t??=o(),n}};var xQ=class{constructor(e,t){this._filename=e;this._preview=_D(async(o,g,r)=>(this._dispose=await t(r?{filename:this.filename,before:o,after:g,render:(...n)=>{r.textContent="",r.append(...n)}}:{filename:this.filename,before:o}),!1))}get filename(){return this._filename}get blocks(){return this._blocks??[]}async update(e){if(await this._dispose?.(),!e||Ie(e)===""){let Q=await this._preview(this.blocks);if(Q.type==="cancel")return Q;if(Q.type==="reject")throw Q.value;return this._area?.remove?.(),this._style?.remove?.(),this._area=void 0,this._style=void 0,this._blocks=void 0,{type:"resolve",value:!0}}let t=this.blocks;this._blocks=e,this.makeStyle();let o=this.makeArea(),g=e.at(0)?.at?.(-1)?.id,r=Yt(g);if(!r)throw new Error("div.lines#L${g}" could not be found.);r.insertAdjacentElement("afterend",o);let n=()=>{let Q=r.getElementsByClassName("indent")[0];Q instanceof HTMLElement&&(o.style.marginLeft=Q.style.marginLeft)};return this._observer?.disconnect?.(),n(),this._observer=new MutationObserver(n),this._observer.observe(r,{childList:!0,subtree:!0}),this._preview(t,e,o)}makeArea(){if(this._area)return this._area;let e=document.createElement("div");return e.classList.add("scrap-run"),e.dataset.filename=this.filename,this._area=e,e}makeStyle(){let e=this.blocks.flatMap(o=>o.slice(1).map(({id:g})=>#L${g})),t=this.blocks.flatMap(o=>o.map(({id:g})=>#L${g}));this._style||(this._style=document.createElement("style"),document.head.append(this._style)),this._style.textContent=.lines:not(:has(:is(${...t.join(",")}).cursor-line)) :is(${...e.join(",")}){display:none}}_blocks;_dispose;_preview;_area;_observer;_style};var $D=({previewers:A})=>{let e=new Map,t=()=>{let r=qD(XA());for(let{changed:n,filename:Q}of VD(e,r)){if(!n)continue;let B=r.get(Q),C=e.get(Q);if(!C){if(!B)continue;let i=A.find(({when:I})=>I.test(Q))?.preview;if(!i)continue;C=new xQ(Q,i),e.set(Q,C)}C.update(B).then(i=>{switch(i.type){case"resolve":i.value&&e.delete(Q);return;case"reject":throw i.value;case"cancel":return}})}},o=()=>{if(scrapbox.Layout!=="page"){scrapbox.off("lines:changed",t);return}t(),scrapbox.on("lines:changed",t)};o(),scrapbox.on("page:changed",o);let g=document.createElement("style");return g.textContent=".scrap-run{display:block;width:95%}",document.head.append(g),()=>{scrapbox.off("page:changed",o),g.remove()}};var fg=A=>{let e=new FileReader,t=new Promise(o=>e.onload=()=>o(e.result));return e.readAsDataURL(A),t};var Ap=async A=>{if(!("after"in A))return;let e=Ie(A.after),o=new DOMParser().parseFromString(e,"image/svg+xml").querySelector("parsererror");if(o){let n=document.createElement("pre"),Q=document.createElement("code");Q.innerText=o.innerHTML,n.append(Q),A.render(n);return}let g=await fg(new Blob([e],{type:"image/svg+xml"})),r=document.createElement("img");r.src=g,A.render(r)};var UC={};ot(UC,{default:()=>Qp});var ep=globalThis||(typeof window<"u"?window:self),iY=Object.create,ZC=Object.defineProperty,IY=Object.getOwnPropertyDescriptor,sY=Object.getOwnPropertyNames,EY=Object.getPrototypeOf,aY=Object.prototype.hasOwnProperty,cY=(A,e)=>()=>(e||A((e={exports:{}}).exports,e),e.exports),lY=(A,e)=>{for(var t in e)ZC(A,t,{get:e[t],enumerable:!0})},RC=(A,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let g of sY(e))!aY.call(A,g)&&g!==t&&ZC(A,g,{get:()=>e[g],enumerable:!(o=IY(e,g))||o.enumerable});return A},DY=(A,e,t)=>(RC(A,e,"default"),t&&RC(t,e,"default")),op=(A,e,t)=>(t=A!=null?iY(EY(A)):{},RC(e||!A||!A.__esModule?ZC(t,"default",{value:A,enumerable:!0}):t,A)),gp=cY((A,e)=>{var t;typeof window<"u"?t=window:typeof ep<"u"?t=ep:typeof self<"u"?t=self:t={},e.exports=t}),rp={};lY(rp,{default:()=>Qp});var pY=op(gp());DY(rp,op(gp()));var{default:tp,...wY}=pY,Qp=tp!==void 0?tp:wY;var SC={};ot(SC,{default:()=>Ip});var mY=Object.create,TC=Object.defineProperty,hY=Object.getOwnPropertyDescriptor,dY=Object.getOwnPropertyNames,uY=Object.getPrototypeOf,MY=Object.prototype.hasOwnProperty,fY=(A,e)=>()=>(e||A((e={exports:{}}).exports,e),e.exports),NY=(A,e)=>{for(var t in e)TC(A,t,{get:e[t],enumerable:!0})},LC=(A,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let g of dY(e))!MY.call(A,g)&&g!==t&&TC(A,g,{get:()=>e[g],enumerable:!(o=hY(e,g))||o.enumerable});return A},yY=(A,e,t)=>(LC(A,e,"default"),t&&LC(t,e,"default")),Bp=(A,e,t)=>(t=A!=null?mY(uY(A)):{},LC(e||!A||!A.__esModule?TC(t,"default",{value:A,enumerable:!0}):t,A)),Cp=fY((A,e)=>{e.exports=o;var t=Object.prototype.toString;function o(g){if(!g)return!1;var r=t.call(g);return r==="[object Function]"||typeof g=="function"&&r!=="[object RegExp]"||typeof window<"u"&&(g===window.setTimeout||g===window.alert||g===window.confirm||g===window.prompt)}}),ip={};NY(ip,{default:()=>Ip});var GY=Bp(Cp());yY(ip,Bp(Cp()));var{default:np,...kY}=GY,Ip=np!==void 0?np:kY;var WC={};ot(WC,{default:()=>lp});var YY=Object.create,HC=Object.defineProperty,bY=Object.getOwnPropertyDescriptor,jY=Object.getOwnPropertyNames,OY=Object.getPrototypeOf,FY=Object.prototype.hasOwnProperty,JY=(A,e)=>()=>(e||A((e={exports:{}}).exports,e),e.exports),xY=(A,e)=>{for(var t in e)HC(A,t,{get:e[t],enumerable:!0})},vC=(A,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let g of jY(e))!FY.call(A,g)&&g!==t&&HC(A,g,{get:()=>e[g],enumerable:!(o=bY(e,g))||o.enumerable});return A},RY=(A,e,t)=>(vC(A,e,"default"),t&&vC(t,e,"default")),Ep=(A,e,t)=>(t=A!=null?YY(OY(A)):{},vC(e||!A||!A.__esModule?HC(t,"default",{value:A,enumerable:!0}):t,A)),ap=JY((A,e)=>{var t=function(g){return g.replace(/^\s+|\s+$/g,"")},o=function(g){return Object.prototype.toString.call(g)==="[object Array]"};e.exports=function(g){if(!g)return{};for(var r={},n=t(g).split( ),Q=0;Q<n.length;Q++){var B=n[Q],C=B.indexOf(":"),i=t(B.slice(0,C)).toLowerCase(),I=t(B.slice(C+1));typeof r[i]>"u"?r[i]=I:o(r[i])?r[i].push(I):r[i]=[r[i],I]}return r}}),cp={};xY(cp,{default:()=>lp});var ZY=Ep(ap());RY(cp,Ep(ap()));var{default:sp,...UY}=ZY,lp=sp!==void 0?sp:UY;var KC={};ot(KC,{default:()=>hp});var LY=Object.create,zC=Object.defineProperty,TY=Object.getOwnPropertyDescriptor,SY=Object.getOwnPropertyNames,vY=Object.getPrototypeOf,HY=Object.prototype.hasOwnProperty,WY=(A,e)=>()=>(e||A((e={exports:{}}).exports,e),e.exports),XY=(A,e)=>{for(var t in e)zC(A,t,{get:e[t],enumerable:!0})},XC=(A,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let g of SY(e))!HY.call(A,g)&&g!==t&&zC(A,g,{get:()=>e[g],enumerable:!(o=TY(e,g))||o.enumerable});return A},zY=(A,e,t)=>(XC(A,e,"default"),t&&XC(t,e,"default")),pp=(A,e,t)=>(t=A!=null?LY(vY(A)):{},XC(e||!A||!A.__esModule?zC(t,"default",{value:A,enumerable:!0}):t,A)),wp=WY((A,e)=>{e.exports=o;var t=Object.prototype.hasOwnProperty;function o(){for(var g={},r=0;r<arguments.length;r++){var n=arguments[r];for(var Q in n)t.call(n,Q)&&(g[Q]=n[Q])}return g}}),mp={};XY(mp,{default:()=>hp});var KY=pp(wp());zY(mp,pp(wp()));var{default:Dp,...PY}=KY,hp=Dp!==void 0?Dp:PY;var Fo=A=>{let e=o=>typeof o.default<"u"?o.default:o,t=o=>Object.assign({},o);switch(A){case"global/window":return e(UC);case"is-function":return e(SC);case"parse-headers":return e(WC);case"xtend":return e(KC);default:throw new Error('module "'+A+'" not found')}},VY=Object.create,VC=Object.defineProperty,qY=Object.getOwnPropertyDescriptor,_Y=Object.getOwnPropertyNames,$Y=Object.getPrototypeOf,Ab=Object.prototype.hasOwnProperty,RQ=(A=>typeof Fo<"u"?Fo:typeof Proxy<"u"?new Proxy(A,{get:(e,t)=>(typeof Fo<"u"?Fo:e)[t]}):A)(function(A){if(typeof Fo<"u")return Fo.apply(this,arguments);throw Error('Dynamic require of "'+A+'" is not supported')}),eb=(A,e)=>()=>(e||A((e={exports:{}}).exports,e),e.exports),tb=(A,e)=>{for(var t in e)VC(A,t,{get:e[t],enumerable:!0})},PC=(A,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let g of _Y(e))!Ab.call(A,g)&&g!==t&&VC(A,g,{get:()=>e[g],enumerable:!(o=qY(e,g))||o.enumerable});return A},ob=(A,e,t)=>(PC(A,e,"default"),t&&PC(t,e,"default")),up=(A,e,t)=>(t=A!=null?VY($Y(A)):{},PC(e||!A||!A.__esModule?VC(t,"default",{value:A,enumerable:!0}):t,A)),Mp=eb((A,e)=>{"use strict";var t=RQ("global/window"),o=RQ("is-function"),g=RQ("parse-headers"),r=RQ("xtend");e.exports=C,e.exports.default=C,C.XMLHttpRequest=t.XMLHttpRequest||s,C.XDomainRequest="withCredentials"in new C.XMLHttpRequest?C.XMLHttpRequest:t.XDomainRequest,n(["get","put","post","patch","head","delete"],function(E){C[E==="delete"?"del":E]=function(c,l,D){return l=B(c,l,D),l.method=E.toUpperCase(),i(l)}});function n(E,c){for(var l=0;l<E.length;l++)c(E[l])}function Q(E){for(var c in E)if(E.hasOwnProperty(c))return!1;return!0}function B(E,c,l){var D=E;return o(c)?(l=c,typeof E=="string"&&(D={uri:E})):D=r(c,{uri:E}),D.callback=l,D}function C(E,c,l){return c=B(E,c,l),i(c)}function i(E){if(typeof E.callback>"u")throw new Error("callback argument missing");var c=!1,l=function(F,Z,O){c||(c=!0,E.callback(F,Z,O))};function D(){p.readyState===4&&setTimeout(M,0)}function m(){var F=void 0;if(p.response?F=p.response:F=p.responseText||I(p),f)try{F=JSON.parse(F)}catch{}return F}function N(F){return clearTimeout(G),F instanceof Error||(F=new Error(""+(F||"Unknown XMLHttpRequest Error"))),F.statusCode=0,l(F,j)}function M(){if(!d){var F;clearTimeout(G),E.useXDR&&p.status===void 0?F=200:F=p.status===1223?204:p.status;var Z=j,O=null;return F!==0?(Z={body:m(),statusCode:F,method:Y,headers:{},url:b,rawRequest:p},p.getAllResponseHeaders&&(Z.headers=g(p.getAllResponseHeaders()))):O=new Error("Internal XMLHttpRequest Error"),l(O,Z,Z.body)}}var p=E.xhr||null;p||(E.cors||E.useXDR?p=new C.XDomainRequest:p=new C.XMLHttpRequest);var h,d,b=p.url=E.uri||E.url,Y=p.method=E.method||"GET",R=E.body||E.data,y=p.headers=E.headers||{},u=!!E.sync,f=!1,G,j={body:void 0,headers:{},statusCode:0,method:Y,url:b,rawRequest:p};if("json"in E&&E.json!==!1&&(f=!0,y.accept||y.Accept||(y.Accept="application/json"),Y!=="GET"&&Y!=="HEAD"&&(y["content-type"]||y["Content-Type"]||(y["Content-Type"]="application/json"),R=JSON.stringify(E.json===!0?R:E.json))),p.onreadystatechange=D,p.onload=M,p.onerror=N,p.onprogress=function(){},p.onabort=function(){d=!0},p.ontimeout=N,p.open(Y,b,!u,E.username,E.password),u||(p.withCredentials=!!E.withCredentials),!u&&E.timeout>0&&(G=setTimeout(function(){if(!d){d=!0,p.abort("timeout");var F=new Error("XMLHttpRequest timeout");F.code="ETIMEDOUT",N(F)}},E.timeout)),p.setRequestHeader)for(h in y)y.hasOwnProperty(h)&&p.setRequestHeader(h,y[h]);else if(E.headers&&!Q(E.headers))throw new Error("Headers cannot be set on an XDomainRequest object");return"responseType"in E&&(p.responseType=E.responseType),"beforeSend"in E&&typeof E.beforeSend=="function"&&E.beforeSend(p),p.send(R||null),p}function I(E){try{if(E.responseType==="document")return E.responseXML;var c=E.responseXML&&E.responseXML.documentElement.nodeName==="parsererror";if(E.responseType===""&&!c)return E.responseXML}catch{}return null}function s(){}}),fp={};tb(fp,{default:()=>ZQ});var gb=up(Mp());ob(fp,up(Mp()));var{default:dp,...rb}=gb,ZQ=dp!==void 0?dp:rb;var UQ=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(A){return typeof A}:function(A){return A&&typeof Symbol=="function"&&A.constructor===Symbol&&A!==Symbol.prototype?"symbol":typeof A},olA=function(){function A(t){this.value=t}function e(t){var o,g;function r(B,C){return new Promise(function(i,I){var s={key:B,arg:C,resolve:i,reject:I,next:null};g?g=g.next=s:(o=g=s,n(B,C))})}function n(B,C){try{var i=t[B](C),I=i.value;I instanceof A?Promise.resolve(I.value).then(function(s){n("next",s)},function(s){n("throw",s)}):Q(i.done?"return":"normal",i.value)}catch(s){Q("throw",s)}}function Q(B,C){switch(B){case"return":o.resolve({value:C,done:!0});break;case"throw":o.reject(C);break;default:o.resolve({value:C,done:!1});break}o=o.next,o?n(o.key,o.arg):g=null}this._invoke=r,typeof t.return!="function"&&(this.return=void 0)}return typeof Symbol=="function"&&Symbol.asyncIterator&&(e.prototype[Symbol.asyncIterator]=function(){return this}),e.prototype.next=function(t){return this._invoke("next",t)},e.prototype.throw=function(t){return this._invoke("throw",t)},e.prototype.return=function(t){return this._invoke("return",t)},{wrap:function(t){return function(){return new e(t.apply(this,arguments))}},await:function(t){return new A(t)}}}(),Gp=function(A,e){if(!(A instanceof e))throw new TypeError("Cannot call a class as a function")},kp=function(){function A(e,t){for(var o=0;o<t.length;o++){var g=t[o];g.enumerable=g.enumerable||!1,g.configurable=!0,"value"in g&&(g.writable=!0),Object.defineProperty(e,g.key,g)}}return function(e,t,o){return t&&A(e.prototype,t),o&&A(e,o),e}}(),qC=function(A){if(Array.isArray(A)){for(var e=0,t=Array(A.length);e<A.length;e++)t[e]=A[e];return t}else return Array.from(A)},Ng="";function Qb(A){return
<table style="background-color: #8CE; width: 100%; height: 100%;"><tr> <td align="center">
<div style="display: table-cell; vertical-align: middle;">
<div style="">+A+</div>
</div>
</td></tr></table>
}var nb=
This page requires a browser that supports WebGL.<br/>
,Bb=
It does not appear your computer can support WebGL.<br/>
,Cb=1,ib=2;function Ib(A,e,t){function o(n){var Q=A.parentNode;Q&&(Q.innerHTML=Qb(n))}function g(n,Q){typeof t=="function"?t(n):o(Q)}if(!window.WebGLRenderingContext)return g(Cb,nb),null;var r=sb(A,e);return r?r.getExtension("OES_standard_derivatives"):g(ib,Bb),r}function sb(A,e){for(var t=["webgl","experimental-webgl"],o=null,g=0;g<t.length;++g)try{o=A.getContext(t[g],e)}catch{if(o)break}return o}function Jo(A,e,t,o){var g=A.gl,r=g.createShader(t);g.shaderSource(r,e),g.compileShader(r);var n=g.getShaderParameter(r,g.COMPILE_STATUS);return n?r:(Ng=g.getShaderInfoLog(r),console.error("*** Error compiling shader "+r+":"+Ng),A.trigger("error",{shader:r,source:e,type:t,error:Ng,offset:o||0}),g.deleteShader(r),null)}function Np(A,e,t,o){for(var g=A.gl,r=g.createProgram(),n=0;n<e.length;++n)g.attachShader(r,e[n]);if(t)for(var Q=0;Q<t.length;++Q)g.bindAttribLocation(r,o?o[Q]:Q,t[Q]);g.linkProgram(r);var B=g.getProgramParameter(r,g.LINK_STATUS);return B?r:(Ng=g.getProgramInfoLog(r),console.log("Error in program linking:"+Ng),g.deleteProgram(r),null)}function _C(A){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,t=[];for(var o in A){var g=A[o],r=void 0;if(e&&(o=e+"."+o),typeof g=="number")t.push({type:"float",method:"1f",name:o,value:g});else if(Array.isArray(g)){if(typeof g[0]=="number")g.length===1?t.push({type:"float",method:"1f",name:o,value:g}):g.length>=2&&g.length<=4?t.push({type:"vec"+g.length,method:g.length+"fv",name:o,value:g}):g.length>4&&t.push({type:"float[]",method:"1fv",name:o+"[0]",value:g});else if(typeof g[0]=="string")t.push({type:"sampler2D",method:"1i",name:o,value:g});else if(Array.isArray(g[0])&&typeof g[0][0]=="number"){if(g[0].length>=2&&g[0].length<=4)for(r=0;r<g.length;r++)t.push({type:"vec"+g[0].length,method:g[r].length+"fv",name:o+"["+r+"]",value:g[r]})}else if(UQ(g[0])==="object")for(r=0;r<g.length;r++)t.push.apply(t,qC(_C(g[r],o+"["+r+"]")))}else typeof g=="boolean"?t.push({type:"bool",method:"1i",name:o,value:g}):typeof g=="string"?t.push({type:"sampler2D",method:"1i",name:o,value:g}):(typeof g>"u"?"undefined":UQ(g))==="object"&&t.push.apply(t,qC(_C(g,o)))}return t}function Eb(A){var e=A.getBoundingClientRect();return e.top+e.height>0&&e.top<(window.innerHeight||document.documentElement.clientHeight)}function yp(A){return(A&A-1)===0}function ab(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function cb(A,e){return A&&e?A.toString()!==e.toString():!1}function lb(A){var e=new XMLHttpRequest;return e.open("GET",A,!1),e.send(),e.status==200?e.responseText:""}function Yp(A){var e=new Set;return Object.assign(A,{on:function(t,o){var g={};g[t]=o,e.add(g)},off:function(t,o){if(o){var g={};g[t]=o,e.delete(g)}else{var r=!0,n=!1,Q=void 0;try{for(var B=e[Symbol.iterator](),C;!(r=(C=B.next()).done);r=!0){var i=C.value,I=!0,s=!1,E=void 0;try{for(var c=Object.keys(i)[Symbol.iterator](),l;!(I=(l=c.next()).done);I=!0){var D=l.value;if(D===t){e.delete(i);return}}}catch(m){s=!0,E=m}finally{try{!I&&c.return&&c.return()}finally{if(s)throw E}}}}catch(m){n=!0,Q=m}finally{try{!r&&B.return&&B.return()}finally{if(n)throw Q}}}},listSubscriptions:function(){var t=!0,o=!1,g=void 0;try{for(var r=e[Symbol.iterator](),n;!(t=(n=r.next()).done);t=!0){var Q=n.value;console.log(Q)}}catch(B){o=!0,g=B}finally{try{!t&&r.return&&r.return()}finally{if(o)throw g}}},subscribe:function(t){e.add(t)},unsubscribe:function(t){e.delete(t)},unsubscribeAll:function(){e.clear()},trigger:function(t){for(var o=arguments.length,g=Array(o>1?o-1:0),r=1;r<o;r++)g[r-1]=arguments[r];var n=!0,Q=!1,B=void 0;try{for(var C=e[Symbol.iterator](),i;!(n=(i=C.next()).done);n=!0){var I=i.value;typeof I[t]=="function"&&I[t].apply(I,qC(g))}}catch(s){Q=!0,B=s}finally{try{!n&&C.return&&C.return()}finally{if(Q)throw B}}}})}var $C=function(){function A(e,t){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Gp(this,A),Yp(this),this.gl=e,this.texture=e.createTexture(),this.texture&&(this.valid=!0),this.bind(),this.name=t,this.source=null,this.sourceType=null,this.loading=null,this.setData(1,1,new Uint8Array([0,0,0,255]),{filtering:"linear"}),this.setFiltering(o.filtering),this.load(o)}return kp(A,[{key:"destroy",value:function(){this.valid&&(this.gl.deleteTexture(this.texture),this.texture=null,delete this.data,this.data=null,this.valid=!1)}},{key:"bind",value:function(e){this.valid&&(typeof e=="number"&&A.activeUnit!==e&&(this.gl.activeTexture(this.gl.TEXTURE0+e),A.activeUnit=e),A.activeTexture!==this.texture&&(this.gl.bindTexture(this.gl.TEXTURE_2D,this.texture),A.activeTexture=this.texture))}},{key:"load",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.loading=null,typeof e.url=="string"?(this.url===void 0||e.url!==this.url)&&this.setUrl(e.url,e):e.element?this.setElement(e.element,e):e.data&&e.width&&e.height&&this.setData(e.width,e.height,e.data,e)}},{key:"setUrl",value:function(e){var t=this,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.valid)return this.url=e,this.source=this.url,this.sourceType="url",this.loading=new Promise(function(g,r){var n=e.split(".").pop().toLowerCase(),Q=n==="ogv"||n==="webm"||n==="mp4",B=void 0;Q?(B=document.createElement("video"),B.autoplay=!0,B.muted=!0,setTimeout(function(){B.play()},1),o.filtering="nearest"):B=new Image,B.onload=function(){try{t.setElement(B,o)}catch(C){console.log("Texture '"+t.name+"': failed to load url: '"+t.source+"'",C,o)}g(t)},B.onerror=function(C){console.log("Texture '"+t.name+"': failed to load url: '"+t.source+"'",C,o),g(t)},ab()&&t.source.slice(0,5)==="data:"||(B.crossOrigin="anonymous"),B.src=t.source,Q&&t.setElement(B,o)}),this.loading}},{key:"setData",value:function(e,t,o){var g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.width=e,this.height=t,this.source=o,this.sourceType="data",this.update(g),this.setFiltering(g),this.loading=Promise.resolve(this),this.loading}},{key:"setElement",value:function(e,t){var o=this,g=e;if(typeof e=="string"&&(e=document.querySelector(e)),e instanceof HTMLCanvasElement||e instanceof HTMLImageElement||e instanceof HTMLVideoElement)this.source=e,this.sourceType="element",e instanceof HTMLVideoElement?(this.width=this.source.videoWidth,this.height=this.source.videoHeight,e.addEventListener("canplaythrough",function(){o.intervalID=setInterval(function(){o.update(t)},15)},!0),e.addEventListener("ended",function(){e.currentTime=0,e.play()},!0)):this.update(t),this.setFiltering(t);else{var r="the 'element' parameter (element: "+JSON.stringify(g)+") must be a CSS ";r+="selector string, or a <canvas>, <image> or <video> object",console.log("Texture '"+this.name+"': "+r,t)}return this.loading=Promise.resolve(this),this.loading}},{key:"update",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.valid&&(this.bind(),this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,e.UNPACK_FLIP_Y_WEBGL!==!1),this.gl.pixelStorei(this.gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.UNPACK_PREMULTIPLY_ALPHA_WEBGL||!1),this.sourceType==="element"&&(this.source instanceof HTMLCanvasElement||this.source instanceof HTMLVideoElement||this.source instanceof HTMLImageElement&&this.source.complete)?(this.source instanceof HTMLVideoElement?(this.width=this.source.videoWidth,this.height=this.source.videoHeight):(this.width=this.source.width,this.height=this.source.height),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.source)):this.sourceType==="data"&&this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.width,this.height,0,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.source),this.trigger("loaded",this))}},{key:"setFiltering",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(this.valid){this.powerOf2=yp(this.width)&&yp(this.height),this.filtering=e.filtering||"linear";var t=this.gl;this.bind(),this.powerOf2?(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,e.TEXTURE_WRAP_S||t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,e.TEXTURE_WRAP_T||t.REPEAT),this.filtering==="mipmap"?(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.generateMipmap(t.TEXTURE_2D)):this.filtering==="linear"?(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR)):this.filtering==="nearest"&&(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST))):(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.filtering==="mipmap"&&(this.filtering="linear"),this.filtering==="nearest"?(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST)):(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR)))}}}]),A}();$C.getMaxTextureSize=function(A){return A.getParameter(A.MAX_TEXTURE_SIZE)};$C.activeUnit=-1;var bp=function(){function A(e,t,o){var g=this;Gp(this,A),Yp(this),t=t||{},o=o||{},e.hasAttribute("data-fullscreen")&&(e.getAttribute("data-fullscreen")=="1"||e.getAttribute("data-fullscreen")=="true")?(this.width=window.innerWidth,this.height=window.innerHeight,e.width=window.innerWidth,e.height=window.innerHeight):(this.width=e.clientWidth,this.height=e.clientHeight),this.canvas=e,this.gl=void 0,this.deps={},this.program=void 0,this.textures={},this.buffers={},this.uniforms={},this.vbo={},this.isValid=!1,this.animationFrameRequest=void 0,this.BUFFER_COUNT=0,this.vertexString=t.vertexString||
precision mediump float;
attribute vec2 a_position;
attribute vec2 a_texcoord;
varying vec2 v_texcoord;
void main() {
gl_Position = vec4(a_position, 0.0, 1.0);
v_texcoord = a_texcoord;
}
,this.fragmentString=t.fragmentString||
precision mediump float;
varying vec2 v_texcoord;
void main(){
gl_FragColor = vec4(0.0);
}
;var r=Ib(e,t,o.onError);if(!r)return;if(this.gl=r,this.timeLoad=this.timePrev=performance.now(),this.timeDelta=0,this.forceRender=!0,this.paused=!1,this.realToCSSPixels=window.devicePixelRatio||1,e.style.backgroundColor=t.backgroundColor||"rgba(1,1,1,0)",e.hasAttribute("data-fragment"))this.fragmentString=e.getAttribute("data-fragment");else if(e.hasAttribute("data-fragment-url")){var n=e.getAttribute("data-fragment-url");ZQ.get(n,function(l,D,m){g.load(m,g.vertexString)})}if(e.hasAttribute("data-vertex"))this.vertexString=e.getAttribute("data-vertex");else if(e.hasAttribute("data-vertex-url")){var Q=e.getAttribute("data-vertex-url");ZQ.get(Q,function(l,D,m){g.load(g.fragmentString,m)})}if(this.load(),!this.program)return;var B=r.getAttribLocation(this.program,"a_texcoord");this.vbo.texCoords=r.createBuffer(),this.gl.bindBuffer(r.ARRAY_BUFFER,this.vbo.texCoords),this.gl.bufferData(r.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),r.STATIC_DRAW),this.gl.enableVertexAttribArray(B),this.gl.vertexAttribPointer(B,2,r.FLOAT,!1,0,0);var C=r.getAttribLocation(this.program,"a_position");if(this.vbo.vertices=r.createBuffer(),this.gl.bindBuffer(r.ARRAY_BUFFER,this.vbo.vertices),this.gl.bufferData(r.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),r.STATIC_DRAW),this.gl.enableVertexAttribArray(C),this.gl.vertexAttribPointer(C,2,r.FLOAT,!1,0,0),e.hasAttribute("data-textures")){var i=e.getAttribute("data-textures").split(",");for(var I in i)this.setUniform("u_tex"+I,i[I])}var s={x:0,y:0};document.addEventListener("mousemove",function(l){s.x=l.clientX||l.pageX,s.y=l.clientY||l.pageY},!1);var E=this;function c(){E.nMouse>1&&E.setMouse(s),E.resize()&&(E.forceRender=!0),E.render(),E.animationFrameRequest=window.requestAnimationFrame(c)}return this.setMouse({x:0,y:0}),c(),this}return kp(A,[{key:"destroy",value:function(){cancelAnimationFrame(this.animationFrameRequest),this.animated=!1,this.isValid=!1;for(var e in this.textures)e.destroy&&e.destroy();this.textures={};for(var t in this.attribs)this.gl.deleteBuffer(this.attribs[t]);this.gl.useProgram(null),this.gl.deleteProgram(this.program);for(var o in this.buffers){var g=this.buffers[o];this.gl.deleteProgram(g.program)}this.program=null,this.gl=null}},{key:"load",value:function(e,t){var o=this;t&&(this.vertexString=t),e&&(this.fragmentString=e);var g=this.fragmentString.split(/\r?\n/);this.fragmentString=#define PLATFORM_WEBGL ,g.forEach(function(l,D){var m=l.trim();if(m.startsWith('#include "lygia')){var N=m.substring(15).replace(/\'|\"|\;|\s/g,"");if(N.endsWith("glsl")){if(o.deps[N]===void 0){var M="https://lygia.xyz"+N;o.deps[N]=lb(M)}o.fragmentString+=o.deps[N]+
}}else o.fragmentString+=l+
}),this.animated=!1,this.nDelta=(this.fragmentString.match(/u_delta/g)||[]).length,this.nTime=(this.fragmentString.match(/u_time/g)||[]).length,this.nDate=(this.fragmentString.match(/u_date/g)||[]).length,this.nMouse=(this.fragmentString.match(/u_mouse/g)||[]).length,this.animated=this.nDate>1||this.nTime>1||this.nMouse>1;var r=this.fragmentString.search(/sampler2D/g);if(r)for(var n=this.fragmentString.split(
),Q=0;Q<n.length;Q++){var B=n[Q].match(/uniform\s*sampler2D\s*([\w]*);\s*\/\/\s*([\w|\:\/\/|\.|\-|\_]*)/i);if(B){var C=B[2].split(".").pop().toLowerCase();B[1]&&B[2]&&(C==="jpg"||C==="jpeg"||C==="png"||C==="ogv"||C==="webm"||C==="mp4")&&this.setUniform(B[1],B[2])}var i=n[Q].match(/\s*void\s*main\s*/g);if(i)break}var I=Jo(this,this.vertexString,this.gl.VERTEX_SHADER),s=Jo(this,this.fragmentString,this.gl.FRAGMENT_SHADER);s?this.isValid=!0:(s=Jo(this,void main(){
gl_FragColor = vec4(1.0);
},this.gl.FRAGMENT_SHADER),this.isValid=!1);var E=Np(this,[I,s]);this.gl.useProgram(E),this.gl.deleteShader(I),this.gl.deleteShader(s),this.program=E,this.change=!0,this.BUFFER_COUNT=0;var c=this.getBuffers(this.fragmentString);Object.keys(c).length&&this.loadPrograms(c),this.buffers=c,this.texureIndex=this.BUFFER_COUNT,this.trigger("load",{}),this.forceRender=!0,this.render()}},{key:"test",value:function(e,t,o){var g=this.vertexString,r=this.fragmentString,n=this.paused,Q=this.gl.getExtension("EXT_disjoint_timer_query"),B=Q.createQueryEXT(),C=this.isValid;(t||o)&&(this.load(t,o),C=this.isValid,this.forceRender=!0,this.render()),this.paused=!0,Q.beginQueryEXT(Q.TIME_ELAPSED_EXT,B),this.forceRender=!0,this.render(),Q.endQueryEXT(Q.TIME_ELAPSED_EXT);var i=this;function I(){i.paused=n,(t||o)&&i.load(r,g)}function s(){i.forceRender=!0,i.render();var E=Q.getQueryObjectEXT(B,Q.QUERY_RESULT_AVAILABLE_EXT),c=i.gl.getParameter(Q.GPU_DISJOINT_EXT);if(E&&!c){var l={wasValid:C,frag:t||i.fragmentString,vert:o||i.vertexString,timeElapsedMs:Q.getQueryObjectEXT(B,Q.QUERY_RESULT_EXT)/1e6};I(),e(l)}else window.requestAnimationFrame(s)}s()}},{key:"loadTexture",value:function(e,t,o){var g=this;o||(o={}),typeof t=="string"?o.url=t:(typeof t>"u"?"undefined":UQ(t))==="object"&&t.data&&t.width&&t.height?(o.data=t.data,o.width=t.width,o.height=t.height):(typeof t>"u"?"undefined":UQ(t))==="object"&&(o.element=t),this.textures[e]?this.textures[e]&&(this.textures[e].load(o),this.textures[e].on("loaded",function(r){g.forceRender=!0})):(this.textures[e]=new $C(this.gl,e,o),this.textures[e].on("loaded",function(r){g.forceRender=!0}))}},{key:"refreshUniforms",value:function(){this.uniforms={}}},{key:"setUniform",value:function(e){for(var t={},o=arguments.length,g=Array(o>1?o-1:0),r=1;r<o;r++)g[r-1]=arguments[r];t[e]=g,this.setUniforms(t)}},{key:"setUniforms",value:function(e){var t=_C(e);for(var o in t)t[o].type==="sampler2D"?this.loadTexture(t[o].name,t[o].value[0]):this.uniform(t[o].method,t[o].type,t[o].name,t[o].value);this.forceRender=!0}},{key:"setMouse",value:function(e){var t=this.canvas.getBoundingClientRect();if(e&&e.x&&e.x>=t.left&&e.x<=t.right&&e.y&&e.y>=t.top&&e.y<=t.bottom){var o=(e.x-t.left)*this.realToCSSPixels,g=this.canvas.height-(e.y-t.top)*this.realToCSSPixels;this.uniform("2f","vec2","u_mouse",o,g)}}},{key:"uniform",value:function(e,t,o){this.uniforms[o]=this.uniforms[o]||{};for(var g=this.uniforms[o],r=arguments.length,n=Array(r>3?r-3:0),Q=3;Q<r;Q++)n[Q-3]=arguments[Q];var B=cb(g.value,n);if(B||this.change||!g.location||!g.value){g.name=o,g.type=t,g.value=n,g.method="uniform"+e,this.gl.useProgram(this.program),g.location=this.gl.getUniformLocation(this.program,o),this.gl[g.method].apply(this.gl,[g.location].concat(g.value));for(var C in this.buffers){var i=this.buffers[C];this.gl.useProgram(i.program);var I=this.gl.getUniformLocation(i.program,o);this.gl[g.method].apply(this.gl,[I].concat(g.value))}}}},{key:"uniformTexture",value:function(e,t,o){if(this.textures[e]===void 0)this.loadTexture(e,t,o);else{this.uniform("1i","sampler2D",e,this.texureIndex);for(var g in this.buffers){var r=this.buffers[g];this.gl.useProgram(r.program),this.gl.activeTexture(this.gl.TEXTURE0+this.texureIndex),this.gl.bindTexture(this.gl.TEXTURE_2D,this.textures[e].texture)}this.gl.useProgram(this.program),this.gl.activeTexture(this.gl.TEXTURE0+this.texureIndex),this.gl.bindTexture(this.gl.TEXTURE_2D,this.textures[e].texture),this.uniform("2f","vec2",e+"Resolution",this.textures[e].width,this.textures[e].height)}}},{key:"resize",value:function(){if(this.width!==this.canvas.clientWidth||this.height!==this.canvas.clientHeight){this.realToCSSPixels=window.devicePixelRatio||1;var e=Math.floor(this.gl.canvas.clientWidth*this.realToCSSPixels),t=Math.floor(this.gl.canvas.clientHeight*this.realToCSSPixels);return(this.gl.canvas.width!==e||this.gl.canvas.height!==t)&&(this.gl.canvas.width=e,this.gl.canvas.height=t,this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height)),this.width=this.canvas.clientWidth,this.height=this.canvas.clientHeight,this.resizeSwappableBuffers(),!0}else return!1}},{key:"render",value:function(){if(this.visible=Eb(this.canvas),this.forceRender||this.change||this.animated&&this.visible&&!this.paused){var e=new Date,t=performance.now();this.timeDelta=(t-this.timePrev)/1e3,this.timePrev=t,this.nDelta>1&&this.uniform("1f","float","u_delta",this.timeDelta),this.nTime>1&&this.uniform("1f","float","u_time",(t-this.timeLoad)/1e3),this.nDate&&this.uniform("4f","float","u_date",e.getFullYear(),e.getMonth(),e.getDate(),e.getHours()*3600+e.getMinutes()*60+e.getSeconds()+e.getMilliseconds()*.001),this.uniform("2f","vec2","u_resolution",this.canvas.width,this.canvas.height);for(var o in this.buffers){var g=this.buffers[o];this.uniform("1i","sampler2D",g.name,g.bundle.input.index)}this.texureIndex=this.BUFFER_COUNT;for(var r in this.textures)this.uniformTexture(r),this.texureIndex++;this.renderPrograms(),this.trigger("render",{}),this.change=!1,this.forceRender=!1}}},{key:"pause",value:function(){this.paused=!0}},{key:"play",value:function(){this.paused=!1}},{key:"renderPrograms",value:function(){var e=this.gl,t=e.canvas.width,o=e.canvas.height;e.viewport(0,0,t,o);for(var g in this.buffers){var r=this.buffers[g];r.bundle.render(t,o,r.program,r.name),e.bindFramebuffer(e.FRAMEBUFFER,null)}e.useProgram(this.program),e.drawArrays(e.TRIANGLES,0,6)}},{key:"getBuffers",value:function(e){var t={};return e&&e.replace(/(?:^\s*)((?:#if|#elif)(?:\s*)(defined\s*\(\s*BUFFER_)(\d+)(?:\s*\))|(?:#ifdef)(?:\s*BUFFER_)(\d+)(?:\s*))/gm,function(){var o=arguments[3]||arguments[4];t["u_buffer"+o]={fragment:"#define BUFFER_"+o+
+e}}),t}},{key:"loadPrograms",value:function(e){var t=this,o=this.gl,g=Jo(t,t.vertexString,o.VERTEX_SHADER);for(var r in e){var n=e[r],Q=Jo(t,n.fragment,o.FRAGMENT_SHADER,1);Q?t.isValid=!0:(Q=Jo(t,void main(){
gl_FragColor = vec4(1.0);
},o.FRAGMENT_SHADER),t.isValid=!1);var B=Np(t,[g,Q]);n.name=r,n.program=B,n.bundle=t.createSwappableBuffer(t.canvas.width,t.canvas.height,B),o.deleteShader(Q)}o.deleteShader(g)}},{key:"createSwappableBuffer",value:function(e,t,o){var g=this.createBuffer(e,t,o),r=this.createBuffer(e,t,o),n=this.gl;return{input:g,output:r,swap:function(){var Q=g;g=r,r=Q,this.input=g,this.output=r},render:function(Q,B,C,i){n.useProgram(C),n.viewport(0,0,Q,B),n.bindFramebuffer(n.FRAMEBUFFER,this.input.buffer),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,this.output.texture,0),n.drawArrays(n.TRIANGLES,0,6),this.swap()},resize:function(Q,B,C,i){n.useProgram(C),n.viewport(0,0,Q,B),this.input.resize(Q,B),this.output.resize(Q,B)}}}},{key:"createBuffer",value:function(e,t,o){var g=this.gl,r=this.BUFFER_COUNT;this.BUFFER_COUNT+=2,g.getExtension("OES_texture_float");var n=g.createTexture();g.activeTexture(g.TEXTURE0+r),g.bindTexture(g.TEXTURE_2D,n),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,e,t,0,g.RGBA,g.FLOAT,null),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,g.NEAREST),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,g.NEAREST),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_S,g.CLAMP_TO_EDGE),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_T,g.CLAMP_TO_EDGE);var Q=g.createFramebuffer();return{index:r,texture:n,buffer:Q,W:e,H:t,resize:function(B,C){g.bindFramebuffer(g.FRAMEBUFFER,Q);var i=Math.min(B,this.W),I=Math.min(C,this.H),s=new Float32Array(i*I*4);g.readPixels(0,0,i,I,g.RGBA,g.FLOAT,s),g.bindFramebuffer(g.FRAMEBUFFER,null);var E=r+1,c=g.createTexture();g.activeTexture(g.TEXTURE0+E),g.bindTexture(g.TEXTURE_2D,c),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,B,C,0,g.RGBA,g.FLOAT,null),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,g.NEAREST),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,g.NEAREST),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_S,g.CLAMP_TO_EDGE),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_T,g.CLAMP_TO_EDGE),g.texSubImage2D(g.TEXTURE_2D,0,0,0,i,I,g.RGBA,g.FLOAT,s);var l=g.createFramebuffer();g.bindFramebuffer(g.FRAMEBUFFER,null),g.deleteTexture(n),g.activeTexture(g.TEXTURE0+r),g.bindTexture(g.TEXTURE_2D,c),r=this.index=r,n=this.texture=c,Q=this.buffer=l,this.W=B,this.H=C}}}},{key:"resizeSwappableBuffers",value:function(){var e=this.gl,t=e.canvas.width,o=e.canvas.height;e.viewport(0,0,t,o);for(var g in this.buffers){var r=this.buffers[g];r.bundle.resize(t,o,r.program,r.name)}e.useProgram(this.program)}},{key:"version",value:function(){return"0.1.7"}}]),A}();function Db(){var A=document.getElementsByClassName("glslCanvas");if(A.length>0){window.glslCanvases=[];for(var e=0;e<A.length;e++){var t=new bp(A[e]);t.isValid&&window.glslCanvases.push(t)}}}window.addEventListener("load",function(){Db()});var LQ=bp;var jp=A=>{if(!("after"in A))return Promise.resolve(void 0);let e=document.createElement("canvas");return new LQ(e).load(Ie(A.after)),A.render(e),Promise.resolve(void 0)};var Op=A=>{let e="";for(let t=0;t<A.length;t+=3)t+2===A.length?e+=Ai(A[t],A[t+1],0):t+1===A.length?e+=Ai(A[t],0,0):e+=Ai(A[t],A[t+1],A[t+2]);return e},TQ=A=>A<10?String.fromCharCode(48+A):(A-=10,A<26?String.fromCharCode(65+A):(A-=26,A<26?String.fromCharCode(97+A):(A-=26,A===0?"-":A===1?"_":"?"))),Ai=(A,e,t)=>{let o=A>>2,g=(A&3)<<4|e>>4,r=(e&15)<<2|t>>6,n=t&63;return TQ(o&63)+TQ(g&63)+TQ(r&63)+TQ(n&63)};var Fp=async(A,e="svg")=>{let t=new Blob([new TextEncoder().encode(A)]).stream().pipeThrough(new CompressionStream("deflate")),o=new Uint8Array(await new Response(t).arrayBuffer());returnhttps://www.plantuml.com/plantuml/${e}/~1${Op(o)}};var Jp=async A=>{if(!("after"in A))return;let e=document.createElement("img"),t=await Fp(Ie(A.after));e.src=t,A.render(e)};var ei=Promise.resolve({log:new Uint8Array(0)}),SQ,xp=(A,e,t,o)=>(ei=(async()=>{await ei,SQ??=await pb(e,t);let g=new Promise(n=>{let Q=B=>{if(B.data.type==="stdout"){o(B.data.message);return}B.data.type==="compile"&&(n(B.data),SQ.removeEventListener("message",Q))};SQ.addEventListener("message",Q)}),r={type:"compile",input:A};return SQ.postMessage(r),g})(),ei),pb=async(A,e)=>{let t=new Worker(A,{type:"module"}),o=new Promise(r=>{let n=Q=>{Q.data.type==="asset-url"&&(r(),t.removeEventListener("message",n))};t.addEventListener("message",n)}),g={type:"asset-url",url:${e}};return t.postMessage(g),await o,t};var Rp=(A,e)=>async t=>{if(!("after"in t))return;let o=wb(),g="Compile is not started yet. Please wait...",r=C=>{g=[...g.split( ),C].join(
),o.log(g)},n=document.createElement("img"),Q=setTimeout(()=>{t.render(o.div),o.log(g)},2e3),{svg:B}=await xp(Ie(t.after),A,e,r);if(clearTimeout(Q),!B){t.render(o.div),o.log(g);return}n.src=await fg(new Blob([B],{type:"image/svg+xml"})),t.render(n)},wb=()=>{let A=document.createElement("div"),e=A.attachShadow({mode:"open"}),t=document.createElement("style");t.textContent='*{box-sizing:border-box;}pre{display:block;padding:9.5px;margin:0 0 10px;border:1px solid #ccc;border-radius:4px;height:20em;overflow:auto;font-size:13px;line-height:1.428571429;}pre code{padding:0;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:inherit;word-break:break-all;word-wrap:break-word;white-space:pre-wrap;color:var(--code-color,#342d9c);background-color: rgba(0,0,0,0);border-radius:0;}',e.append(t);let o=document.createElement("pre"),g=document.createElement("code");return o.append(g),e.append(o),{div:A,log:r=>{g.textContent=r,o.scroll(0,o.scrollHeight)}}};var Zp=(A,e,t=0,o=[])=>{let[g,r]=L("uninitialized"),[n,Q]=L({ok:!0,value:e}),B=k(A,o);return X(()=>{(async()=>{let C=setTimeout(()=>r("pending"),t);try{let i=await B();if(i===void 0)return;Q({ok:!0,value:i})}catch(i){Q({ok:!1,value:i})}finally{clearTimeout(C),r("resolved")}})()},[B,t,...o]),n.ok?{result:n.value,state:g}:{result:n.value,state:"rejected"}};var Up=A=>{let e=A.flatMap(({changes:g,created:r,userId:n})=>g.flatMap(Q=>{let B=mb(Q,n,r);return B?[B]:[]})),t=[...new Set(e.map(({created:g})=>g))].sort();return{history:e.reduce((g,r)=>{if(r.type==="insert"){let Q=new Map;Q.set(r.created,{text:r.text,type:r.type,userId:r.userId});let B={id:r.id,snapshots:Q};if(r.parentId==="_end")return[...g,B];let C=g.findIndex(({id:i})=>i===r.parentId);return C<0?(console.warn("[scrapbox-snapshot@0.1.0] The parent line the snapshot would insert before is not found. change: ",r),[...g,B]):[...g.slice(0,C),B,...g.slice(C)]}let n=g.findIndex(({id:Q})=>Q===r.id);return n<0?(console.warn("[scrapbox-snapshot@0.1.0] The line data to be append the change is not found. change: ",r),g):(g[n].snapshots.set(r.created,{text:r.type==="update"?r.text:void 0,type:r.type,userId:r.userId}),g)},[]),range:t}},mb=(A,e,t)=>{if("_insert"in A)return{type:"insert",id:A.lines.id,parentId:A._insert,text:A.lines.text,userId:e,created:t};if("_update"in A)return{type:"update",id:A._update,text:A.lines.text,userId:e,created:t};if("_delete"in A)return{type:"delete",id:A._delete,userId:e,created:t}};var Lp=async(A,e)=>{let t=await fetch(/api/commits/${A}/${e}),{commits:o}=await t.json();return Up(o)},Tp=async(A,e)=>{let t=await fetch(/api/page-snapshots/${A}/${e}),{snapshots:o}=await t.json(),g=new Map(o.map(({lines:n,created:Q})=>[Q,n])),r=o.map(({created:n})=>n).sort();return{pages:g,range:r}};var Sp=A=>{let e=document.createElement("div");e.dataset.userscriptName="takker99/scrapbox-history-slider";let t=e.attachShadow({mode:"open"});return document.body.append(e),new Promise(o=>NA(a(hb,{getController:g=>o(g)}),t))},hb=({getController:A})=>{let[e,t]=L(!0),o=k(()=>t(!1),[]),g=k(()=>t(!0),[]),r=k(()=>t(c=>!c),[]);X(()=>A({open:o,close:g,toggle:r}),[A]);let n=k(c=>{c.target instanceof HTMLElement&&c.target.id==="background"&&g()},[]),{state:Q,result:B}=Zp(async()=>{if(e||scrapbox.Layout!=="page")return;let[c,l]=await Promise.all([Lp(scrapbox.Project.name,scrapbox.Page.id),Tp(scrapbox.Project.name,scrapbox.Page.id)]);return{range:[...l.range,...c.range],getSnapshot:D=>c.range.includes(D)?c.history.flatMap(({snapshots:m})=>{let N=m.get(D);if(N)return N.text===void 0?[]:[N.text];let M=Math.max(...[...m.keys()].filter(h=>h<D));if(M===D)return[];let p=m.get(M)?.text;return p===void 0?[]:[p]}):l.pages.get(D)?.map?.(m=>m.text)??[]}},{range:[],getSnapshot:()=>[]},1e3,[e]),[C,i]=L(0),[I,s]=L(0);X(()=>{if(Q!=="resolved")return;let c=Math.max(0,B.range.length-1);i(c),s(c)},[B]);let E=k(c=>s(parseInt(c.currentTarget.value)),[]);return a(W,null,a("style",null,'.modal{position:fixed;inset:0;z-index:1050;background-color:#000c;display:flex;flex-direction:column;align-items:center;row-gap:10px;padding:10px}.closed{display:none}.modal>*{color:var(--page-text-color, #4a4a4a);background-color:var(--page-bg, #fefefe);border:2px solid var(--body-bg, #dcdde0);border-radius:4px;padding:5px;width:calc(var(--item-width, 100%) - 10px)}@media (min-width: 768px){.modal{padding:30px}}.controller{display:flex;flex-direction:row-reverse;gap:.2em}input{width:100%}time{white-space:nowrap}.viewer{overflow-y:scroll}pre{width:100%;font-family:var(--history-slider-pre-font, Menlo,Monaco,Consolas,"Courier New",monospace);word-break:break-all;word-wrap:break-word;white-space:pre-wrap}'),a("div",{id:"background",className:modal${e?" closed":""},onClick:n},a("div",{className:"controller"},a("button",{className:"close-button",onClick:g},"x"),Q==="resolved"&&B.range.length===0&&a("span",{className:"not-found"},"no history found."),Q!=="rejected"&&B.range.length>0&&a(W,null,a("input",{type:"range",max:C,min:"0",step:"1",value:I,title:$(new Date(B.range[I]*1e3),"yyyy-MM-dd HH:mm:ss"),onInput:E}),a("time",{dateTime:$(new Date(B.range[I]*1e3),"yyyy-MM-dd HH:mm:ss")},$(new Date(B.range[I]*1e3),"yyyy-MM-dd HH:mm:ss")))),Q!=="rejected"?a("div",{className:"viewer"},a("pre",null,B.getSnapshot(B.range[I]).join(
))):a("div",{className:"error viewer"},Error: ${JSON.stringify(B)})))};var Vt=()=>/mobile/i.test(navigator.userAgent);function*ti(A,e,t){let o=0,g=[],r=async()=>(o++,o<=A?o-1:await new Promise(n=>g.push(n)));for(let n of e)yield(async()=>{let Q=await r();try{return{success:!0,value:await t(n,Q)}}catch(B){return{success:!1,reason:B}}finally{o--,g.shift()?.(Q)}})()}var vp=async(A,e,t)=>{if(A.length===0||A.every(({before:g,after:r})=>g===r))return;let o=await WA();try{let g=ti(5,A,async r=>{let n=0,Q=0;r.before===r.after&&t({link:r,projectCount:0,replaced:0,done:!0});let B=ti(2,[...new Set(e)],async C=>{let i=await db(r,C,o);if(!i.ok)throw ub(i.value);n++,Q+=i.value,t({link:r,projectCount:n,replaced:Q,done:!1})});await Promise.all([...B]),t({link:r,projectCount:n,replaced:Q,done:!0})});await Promise.all([...g])}finally{await LA(o)}},db=async(A,e,t)=>{let[o]=await Promise.all([Hg(e,A.before,A.after),rA(e,A.before,(g,{persistent:r})=>{if(r)return[A.after,...g.map(n=>n.text).slice(1)]},{socket:t})]);return o},et=A=>A.split(
).flatMap(e=>[...e.matchAll(/\[((?:[^\[!"#%&'()\*\+,\-\.\/\{\|\}<>_~] |.[^ ]*)[^\[\]]*)\]/g)]).map(([,e])=>e),ub=A=>{let e=new Error;return e.name=A.name,e.message=A.message,e};var vQ={};ot(vQ,{getTitle:()=>Zh,parse:()=>hA});var Hp=A=>hA(A,{hasTitle:!1}).flatMap(t=>{switch(t.type){case"title":return[];case"codeBlock":return Mb(t);case"table":return fb(t);case"line":return Nb(t)}}).map(t=>t).join(
),Mb=({fileName:A,content:e,indent:t})=>{let o=" ".repeat(t);return[${o}code:${A},...e.split(
).map(g=>${o} ${g})]},fb=({fileName:A,cells:e,indent:t})=>{let o=" ".repeat(t);return[${o}table:${A},...e.map(g=>${o} ${g.map(r=>r.map(n=>yg(n)).join("")).join(" ")})]},Nb=({nodes:A,indent:e})=>[${" ".repeat(e)}${A.map(t=>${yg(t)}).join("")}],yg=A=>{switch(A.type){case"quote":return> ${A.nodes.map(e=>yg(e)).join("")};case"strong":return${A.nodes.map(e=>yg(e)).join("")};case"decoration":{let e=A.decos.map(t=>{let o=parseInt(t.match(/\*-(\d)/)?.[1]??"0");return o>0?"*".repeat(o):t}).join("");return[${e?${e} :""}${A.nodes.map(t=>yg(t)).join("")}]}case"hashTag":return A.href;case"link":return A.pathType==="absolute"?A.raw:A.href;default:return A.raw}};scrapbox.PopupMenu.addButton({title:A=>et(A).length>0?"":"",onClick:A=>{let e=Hp(A);if(A!=e)return e}});var Wp=A=>!A.includes(
)&&/\[[^\]]+\]/.test(A);scrapbox.PopupMenu.addButton({title:A=>Wp(A)?"[][]":"",onClick:A=>{if(!Wp(A))return;let e=A.replaceAll("[","").replaceAll("]","");return(async()=>{let{render:t,dispose:o}=sA();try{let g=scrapbox.Project.name;t({type:"spinner"},{type:"text",text:create /${g}/${e}}),await rA(g,e,([{text:r}],{persistent:n})=>{if(!n)return[r,A]}),t({type:"check-circle"},{type:"text",text:create /${g}/${e}})}catch(g){if(console.error(g),!(g instanceof Error))throw g;t({type:"exclamation-triangle"},{type:"text",text:${g.name} ${g.message}})}finally{await CA(2e3),o()}})(),${e}}});var Xp=(A,e)=>{switch(A.type){case"title":return"";case"codeBlock":return[A.fileName, \\`\`${bb(A.fileName)},A.content,"\n"].join(
);case"table":return yb(A);case"line":return kb(A,e)}},yb=A=>{let e=[A.fileName],t=Math.max(...A.cells.map(o=>o.length));return A.cells.forEach((o,g)=>{e.push(| ${o.map(r=>r.map(n=>xo(n)).join("")).join(" | ")} |),g===0&&e.push(|${" -- |".repeat(t)})}),e.join(
)},Gb=" ",kb=(A,e)=>{let t=A.nodes.map(g=>xo(g,{section:A.indent===e})).join("").trim();if(t==="")return"";if(A.indent===e)return t;let o=Gb.repeat(A.indent-e-1);return/^\d+\. /.test(t)||(o+="- "),o+t},xo=(A,e)=>{let{section:t=!1}=e??{};switch(A.type){case"quote":return> ${A.nodes.map(o=>xo(o)).join("")};case"helpfeel":return\? ${A.text}\`;case"image":case"strongImage":return![image](${A.src});case"icon":case"strongIcon":return"/icons/hr","/scrapboxlab/hr".includes(A.path)?"---":"";case"strong":return**${A.nodes.map(o=>xo(o)).join("")}**;case"formula":return$${A.formula}$;case"decoration":{let o=A.nodes.map(g=>xo(g)).join("");return A.decos.includes("/")&&(o=*${o}*),t?(A.decos.includes("*-3")&&(o=`# ${o} ),A.decos.includes("*-2")&&(o=## ${o}
),A.decos.includes("*-1")&&(o=### ${o}
)):A.decos.some(g=>/\*-/.test(g[0]))&&(o=**${o}**),A.decos.includes("~")&&(o=~~${o}~~),o}case"code":return\${A.text}\`;case"commandLine":return\`${A.symbol} ${A.text}\`;case"link":switch(A.pathType){case"root":return[${A.href}](https://scrapbox.io${A.href});case"relative":return[${A.href}](https://scrapbox.io/${scrapbox.Project.name}/${A.href});default:return A.content===""? ${A.href} :[${A.content}](${A.href})}case"googleMap":return[${A.place}](${A.url});case"hashTag":return[#${A.href}](https://scrapbox.io/${scrapbox.Project.name}/${A.href});case"numberList":return${A.number}. ${A.nodes.map(o=>xo(o)).join("")};case"blank":case"plain":return A.text}},Yb=[{extensions:"javascript","js",fileType:"javascript"},{extensions:"typescript","ts",fileType:"typescript"},{extensions:"cpp","hpp",fileType:"cpp"},{extensions:"c","cc","h",fileType:"c"},{extensions:"cs","csharp",fileType:"cs"},{extensions:"markdown","md",fileType:"markdown"},{extensions:"htm","html",fileType:"html"},{extensions:"json",fileType:"json"},{extensions:"xml",fileType:"xml"},{extensions:"yaml","yml",fileType:"yaml"},{extensions:"toml",fileType:"toml"},{extensions:"ini",fileType:"ini"},{extensions:"tex","sty",fileType:"tex"},{extensions:"svg",fileType:"svg"}],bb=A=>{let e=A.replace(/^.*\.(\w+)$/,"$1");return Yb.find(t=>t.extensions.includes(e))?.fileType??""};scrapbox.PopupMenu.addButton({title:"",onClick:A=>{(async()=>{try{let e=vQ.parse(A,{hasTitle:!1}),t=Math.min(...e.map(o=>o.indent));await navigator.clipboard.writeText(e.map(o=>Xp(o,t)).join(` ))}catch(e){alert(Failed to copy:
${JSON.stringify(e)})}})()}});var tt=A=>typeof A=="string";var oi=(A,...e)=>{let t=A;for(let o of e){let g=t instanceof Promise?t.then(r=>tt(r)?r:o(r)):o(t);if(tt(g))return g;t=g instanceof URL?new URL(g):g.then(r=>tt(r)?r:new URL(r))}return t instanceof Promise?t.then(o=>${o}):${A}};var Ro=A=>A.ok?void 0:{name:"HTTPError",message:${A.status} ${A.statusText},response:A};var zp=A=>{if(!window.GM_fetch)return;let e=window.GM_fetch;return(async()=>{let t=await e(https://cdn.syndication.twimg.com/tweet-result?id=${A}&token=x),o=Ro(t);return o?{ok:!1,value:o}:{ok:!0,value:await t.json()}})()};var HQ=A=>{let{fetch:e=globalThis.fetch,...t}=A;return{fetch:e,...t}},Kp=A=>typeof A=="object"&&A!==null;var Gg=class A extends Error{name="UnexpectedResponseError";status;statusText;body;path;constructor(e){super(${e.status} ${e.statusText} when fetching ${e.path.toString()}),this.status=e.status,this.statusText=e.statusText,this.body=e.body,this.path=e.path,Error.captureStackTrace&&Error.captureStackTrace(this,A)}};var WQ=async A=>{let e=await A.text();if(A.ok)return{ok:!0,value:e};if(A.status===400)return{ok:!1,value:{name:"BadRequestError",message:e}};try{let t=JSON.parse(e);if(!Kp(t)||typeof t.message!="string")throw new Gg({status:A.status,statusText:A.statusText,body:e,path:new URL(A.url)});switch(A.status){case 401:return{ok:!1,value:{name:"UnauthorizedError",message:t.message}};case 403:return{ok:!1,value:{name:"NotPrivilegeError",message:t.message}};case 404:return{ok:!1,value:{name:"NotFoundError",message:t.message}};case 422:return{ok:!1,value:{name:"InvalidParameterError",message:t.message}};case 429:return{ok:!1,value:{name:"RateLimitError",message:t.message}};default:throw new Gg({status:A.status,statusText:A.statusText,body:e,path:new URL(A.url)})}}catch(t){throw t instanceof SyntaxError?new Gg({status:A.status,statusText:A.statusText,body:e,path:new URL(A.url)}):t}};var Pp=async(A,e)=>{let{title:t,description:o,metadataIsPublic:g,collectionId:r,refererURL:n,accessToken:Q,created:B,app:C,fetch:i}=HQ(e),I=new FormData;I.append("imagedata",A),I.append("access_token",Q),n&&I.append("referer_url",n.toString()),C!==void 0&&I.append("app",C),t!==void 0&&I.append("title",t),o!=null&&I.append("desc",o),r&&I.append("collection_id",r),g&&I.append("metadata_is_public","true"),B!==void 0&&I.append("created_at",${B});let s=await i("https://upload.gyazo.com/api/upload",{method:"POST",mode:"cors",credentials:"omit",body:I}),E=await WQ(s);return E.ok?{ok:!0,value:JSON.parse(E.value)}:E};var Vp=(A,e)=>{let t=new FormData;return t.append("data",A),t.append("metadata",JSON.stringify({app:"Gyazo",title:A.name})),GM_fetch(https://gif.gyazo.com/${e?.teams?"teams":"gif"}/upload,{method:"POST",body:t,credentials:"include",headers:{Origin:"https://gyazo.com","sec-fetch-site":"same-site"},referrer:"https://gyazo.com/"})};var XQ="",qp=!1,zQ=new Map,_p=async(A,e,t,o)=>{let g=zQ.get(A.href);if(g)return g;if(A.hostname==="video.twimg.com"||${A}.endsWith(".svg")){let B=await GM_fetch(A);if(!B.ok)return;let C=B.headers.get("content-type")?.split?.(";")?.[0]??${A}.endsWith(".mp4")?"video/mp4":"video/webm",i=new File([await B.blob()],o||${e},{type:C});if(C==="video/mp4"){let E=await Vp(i);if(E.ok){let c=new URL(await E.text());return zQ.set(A.href,c),c}}let I=await EI(i,t);if(!I.ok)throw Error(I.value.name);let s=new URL(I.value.embedUrl);return zQ.set(A.href,s),s}if(A.hostname!=="pbs.twimg.com"||!A.pathname.startsWith("/media"))return;if(qp){if(!XQ)return}else{let B=await nI();if(qp=!0,!B.ok){alert("You haven't logged in Gyazo yet, so you can only upload images to scrapbox.io.");return}if(XQ=B.value||"",!XQ){alert("You haven't connect Gyazo to scrapbox.io yet.");return}}let r=await GM_fetch(A);if(!r.ok)return;let n=await Pp(await r.blob(),{accessToken:XQ,refererURL:e,description:o});if(!n.ok)throw Error(n.value.name);let Q=new URL(n.value.permalink_url);return zQ.set(A.href,Q),Q};var jb={"<":"<",">":">","&":"&",""":'"',"'":"'","`":""},gi=A=>A.replace(/&(lt|gt|amp|quot|#x27|#x60);/g,e=>jbe);var KQ=A=>{let e={name:A.user.name,screenName:A.user.screen_name},t=new Date(A.created_at),o=[...A.entities.hashtags.map(n=>({type:"hashtag",...n})),...A.entities.symbols.map(n=>({type:"symbol",...n})),...A.entities.user_mentions.map(n=>({type:"mention",name:n.name,screenName:n.screen_name,indices:n.indices})),...A.entities.urls.map(n=>{let Q={type:"url",indices:n.indices,url:new URL(n.expanded_url)};if(A.card&&A.card?.url===n.url){let{description:B,title:C}=A.card.binding_values,i="STRING";B?.type===i&&(Q.description=B.string_value),C?.type===i&&(Q.title=C.string_value)}return Q}),...A.entities.media?.map?.(n=>({type:"media",indices:n.indices,media:A.mediaDetails?.flatMap?.(Q=>Q.url===n.url?[{type:Q.type,url:new URL(Q.video_info?.variants?.sort?.((B,C)=>(C.bitrate??0)-(B.bitrate??0))?.0.url??Q.media_url_https)}]:[])??[]}))??[]].sort((n,Q)=>n.indices0-Q.indices0),g=[];{let n=0,Q=A.text;for(let{indices:B,...C}of o){let i=...Q.slice(0,B0-n).join("");g.push({type:"plain",text:gi(i)}),g.push(C),Q=...Q.slice(B1-n).join(""),n=B1}Q&&g.push({type:"plain",text:gi(Q)})}let r={id:A.id_str,content:g,author:e,posted:t,replyCount:"reply_count"in A?A.reply_count:A.conversation_count};return A.self_thread&&(r.rootId=A.self_thread.id_str),A.in_reply_to_status_id_str&&(r.replyId=A.in_reply_to_status_id_str),A.parent&&(r.replyTo=KQ(A.parent)),A.quoted_tweet&&(r.quote=KQ(A.quoted_tweet)),r};var Ob="landing","product","enterprise","pricing","try-enterprise","contact","terms","privacy","jp-commercial-act","support","case","features","business","auth","login","logout","oauth2","_","api","app.html","assets","file","files","billing","billings","config","feed","index","io","new","opensearch","project","projects","search","setting","settings","setup-profile","slide","socket.io","stream","user","users",PQ=(A=scrapbox.Project.name,e=location.host)=>t=>{if(t.host!==e)return t;let,o,g=t.pathname.match(/^\/(\w\d\w\d-{0,22}\w\d)(?:\/?|\/(.+))$/)??[];return!o||Ob.includes(o)?t:g?o===A?[${decodeURIComponent(g)}]:[/${o}/${decodeURIComponent(g)}]:[/${o}]};var $p=(A=Fb)=>e=>{let,t=e.href.match(/^https:\/\/(?:(?:www\.|mobile\.|m\.)?twitter|x)\.com\/\w\d_+\/(?:status|statuses)\/(\d+)/)??[];return t?(async()=>{let o=await(zp(t)??QI(e.href));if(!o.ok)throw o.value;return A("images"in o.value?{...o.value,id:t}:o.value,e)})():e},Fb=async A=>{if("images"in A)return kg(A);let{quote:e,replyTo:t,...o}=KQ(A);return[...t?[...(await kg(t)).split(` ).map(g=> > ${g}),...t.quote?(await kg(t.quote)).split(
).map(g=> > ${g}):[]]:[],...(await kg(o)).split(
).map(g=>> ${g}),...e?(await kg(e)).split(
).map(g=>> > ${g}):[]].join(
)?.map?.(g=>> ${Qi(g)})??["> [/ no description provided]"],...A.images.length>0?[> ${A.images.map(g=>[${g}])}]:[]].join(
);let t=A.content,o=A.author.screenName;return[@${Qi(o)} ${e},...(await Promise.all(t.map(async g=>{switch(g.type){case"plain":return g.text;case"hashtag":return #${g.text} ;case"symbol":return #$${g.text} ;case"mention":return@${g.screenName};case"media":{let r=[],n=1;for(;n<g.media.length;n+=2)r.push([${await ri(g.median-1,e)}] [${await ri(g.median,e)}]);return n===g.media.length&&r.push([${await ri(g.median-1,e)}]), ${r.join(`
`)}
}case"url":return${PQ()(g.url)} }}))).join("").split(
)].join(
)},VQ="",Jb=async()=>{if(VQ)return VQ;let A=await me(scrapbox.Project.name);if(!A.ok)throw new Error(A.value.name);return VQ=A.value.id,VQ},ri=async(A,e)=>await _p(A.url,e,await Jb(),"")??A.url,Qi=A=>A.replace(/\b/gm,"").replace(/[\s\r\n\u2028\u2029]+/gm," ").replace(/\s*[[\]]\s*/g," ").trim();var Aw=A=>{if(!window.GM_fetch)return;let e=window.GM_fetch;return(async()=>{let t=await e(https://t.co/${A}),o=Ro(t);return o?{ok:!1,value:o}:{ok:!0,value:new DOMParser().parseFromString(await t.text(),"text/html").title}})()};var ew=A=>{if("bit.ly","amzn.to","amzn.asia","goo.gl","s.nikkei.com","apple.co","nico.ms","w.wiki".includes(A.hostname)&&window.GM_fetch)return window.GM_fetch(A).then(t=>t.ok?new URL(t.url):A);if(A.hostname!=="t.co")return A;let e=Aw(A.pathname.slice(1));return e?(async()=>{let t=await e;if(!t.ok)throw t.value;try{return new URL(t.value)}catch(o){if(o instanceof TypeError)return A;throw o}})():A};var tw=A=>{if(!A.pathname.startsWith("/wiki/"))return A;if(!/^\w+\.wikipedia\.org$/.test(A.hostname)){let,g=A.hostname.match(/^(\w+)\.m\.wikipedia\.org$/)??[];if(!g)return A;A.hostname=${g}.wikipedia.org}let e=decodeURIComponent(A.pathname.slice(6)),t=A.hash?decodeURIComponent(A.hash.slice(1)):"",o=${A.origin}/wiki/${e};return t?[${t} | ${e} - Wikipedia ${o}#${t}]:[${e} - Wikipedia ${o}]};var ow=A=>{if(A.hostname!=="www.wikiwand.com")return A;let,e,t=A.pathname.match(/^\/(^\/+)\/(^\/+)/)??[];return!e||!t||(A.hostname=${e}.wikipedia.org,A.pathname=/wiki/${t},A.hash=A.hash.startsWith("#/")?#${A.hash.slice(2)}:A.hash),A};var ni=A=>{if(!A.hostname.startsWith("www.google."))return A;let e=A.searchParams.get("url");return e?new URL(decodeURIComponent(e)):A};var gw=/charset=(^;+)/,rw=A=>{if(!window.GM_fetch)return;let e=window.GM_fetch;return(async()=>{let t=await e(${A}),o=Ro(t);if(o)return{ok:!1,value:o};let g=t.headers.get("content-type")?.match?.(gw)?.1??await xb(t.clone());return{ok:!0,value:new TextDecoder(g).decode(await t.arrayBuffer())}})()},xb=async A=>{let e=new DOMParser().parseFromString(await A.text(),"text/html");return e.querySelector("metacharset")?.getAttribute?.("charset")??e.querySelector('metahttp-equiv="content-type"')?.getAttribute?.("content")?.match?.(gw)?.1??"utf-8"};var Qw=(A=Rb)=>async e=>A(await Zb(e),e),Rb=(A,e)=>{let t=(tt(A)?A:A.title).replace(/\s/g," ").replaceAll("","[").replaceAll("","]");return t?[${e.hash?${decodeURIComponent(e.hash.slice(1))} | :""}${t} ${e}]:${e}},Zb=async A=>{let e=rw(A);if(!e){let o=await rI(A);if(!o.ok)throw o.value;return o.value}let t=await e;if(!t.ok)throw t.value;return new DOMParser().parseFromString(t.value,"text/html")};var nw=A=>{if(!/^(?:www\.)?amazon(?:\.co|com)?\.(?:au|br|ca|fr|de|in|it|jp|mx|nl|sg|es|tr|ae|uk|cn)$/.test(A.hostname))return A;let,e=A.pathname.match(/\/dp\/(\w\d+)/)??A.pathname.match(/\/gp\/product\/(\w\d+)/)??A.pathname.match(/\/exec\/obidos\/asin\/(\w\d+)/)??A.pathname.match(/\/o\/ASIN\/(\w\d+)/)??[];return e&&(A.hash="",A.search="",A.pathname=/dp/${e}),A};var Bw=A=>{if(!/(?:0-9a-z-\.)?gyazo\.com/.test(A.hostname))return A;let,e=A.pathname.match(/^\/(0-9a-f{32})(?:\/raw)?$/)??[];return e?[https://gyazo.com/${e}]:A};var Cw=(A,...e)=>{if(A instanceof URL)return oi(new URL(A),...e);let t=0,o=0,g=0,r=!1,n=A.split(/(https?:\/\/\S+)/g).map(i=>{if(!/^https?:\/\/\S+$/.test(i))return i;t++;try{let I=oi(new URL(i),...e);return tt(I)?(o++,I):(r=!0,I,i)}catch(I){return console.error(I),g++,i}});if(!r)return n.join("");let{render:Q,dispose:B}=sA(),C=()=>Q({type:"spinner"},{type:"text",text:URL: ${o}/${t} converted, ${g} failed});return C(),Promise.all(n.map(async i=>{if(tt(i))return i;try{let I=await i0;return o++,I}catch(I){return console.error(I),g++,i1}finally{C()}})).then(i=>(Q({type:"check-circle"},{type:"text",text:URL: ${o}/${t} converted, ${g} failed}),i.join(""))).finally(()=>{setTimeout(B,1e3)})};var iw=A=>{if(!/^(?:\w+\.nicovideo\.jp|nico\.ms)$/.test(A.hostname))return A;let e=A.pathname.match(/(?:sm|nm|so|ca|ax|yo|nl|ig|na|cw|za-e|om|sk|yk|lv)\d{1,14}$/)?.0;return e?[https://nicothumb2img.vercel.app/image/${e}#.png https://nico.ms/${e}]:A};var Iw=A=>hA(A,{hasTitle:!1}).flatMap(t=>{switch(t.type){case"title":return[];case"codeBlock":return Ub(t);case"table":return Lb(t);case"line":return Tb(t)}}).map(t=>t).join(` ),Ub=({fileName:A,content:e,indent:t})=>{let o=" ".repeat(t);return[${o}code:${A},...e.split(
).map(g=>${o} ${g})]},Lb=({fileName:A,cells:e,indent:t})=>{let o=" ".repeat(t);return[${o}table:${A},...e.map(g=>${o} ${g.map(r=>r.map(n=>n.raw).join("")).join(" ")})]},Tb=({nodes:A,indent:e})=>[${" ".repeat(e)}${A.map(t=>${Yg(t)}).join("")}],Yg=A=>{switch(A.type){case"quote":return> ${A.nodes.map(e=>Yg(e)).join("")};case"helpfeel":return-? ${A.text};case"commandLine":return-${A.symbol} ${A.text};case"icon":case"strongIcon":case"image":case"strongImage":case"formula":case"code":case"googleMap":return A.raw;case"strong":return${A.nodes.map(e=>Yg(e)).join("")};case"decoration":{A.decos.includes("-")||A.decos.push("-");let e=A.decos.map(t=>{let o=parseInt(t.match(/\*-(\d)/)?.[1]??"0");return o>0?"*".repeat(o):t}).join("");return[${e?${e} :""}${A.nodes.map(t=>Yg(t)).join("")}]}case"link":switch(A.pathType){case"root":case"relative":return${A.href};case"absolute":return[- ${A.content?${A.content} :""}${A.href}]]}case"hashTag":return#${A.href};case"numberList":return${A.number}. ${A.nodes.map(e=>Yg(e)).join("")};case"blank":case"plain":return${A.text}}};scrapbox.PopupMenu.addButton({title:"",onClick:A=>{let e=Iw(A);if(A!==e)return e}});var Bi=A=>{let e=A.indexOf( );if(e<0)return;let t=A.slice(0,e).split(
).map(r=>{let[n="",Q=""]=r.split(" => ",2);return[n,Q]});if(t.length===0)return;let o=A.slice(e+2).split(
);if(o.length===0)return;for(let[r,n]of t){let Q=r.match(/^\/(.*?)\/([gimy]*)$/);if(Q){let B=new RegExp(Q[1],Q[2]);o=o.map(C=>C.replace(B,n.replaceAll("\\n",
)))}else o=o.map(B=>B.replaceAll(r,n.replaceAll("\\n",
)))}let g=${A.slice(0,e+2)}${o.join(`
)};if(A!==g)return g};scrapbox.PopupMenu.addButton({title:A=>Bi(A)?"replace":"",onClick:A=>{let e=Bi(A);if(e!==void 0)return e}});var sw=A=>{let e=document.createElement("div"),t=e.attachShadow({mode:"open"}),o=document.createElement("style");o.textContent="dialog::backdrop{background-color:#000c}dialog{flex-direction:column;align-items:center;row-gap:10px;padding:10px;background:unset;margin-top:unset;margin-bottom:unset;border:unset;height:unset}dialogopen{display:flex}dialog>*{color:var(--page-text-color, #4a4a4a);background-color:var(--dropdown-menu-bg, #fff);border:1px solid rgba(0,0,0,.2);border-radius:6px}@media (min-width: 768px){dialog{padding:30px 0}}.container{display:flex;padding:5px;gap:0.2em;flex-direction:column;width:100%;}.button-container{flex-direction:unset;}.button-container>*{flex:1;}",t.append(o);let g=document.createElement("dialog");g.insertAdjacentHTML("beforeend",` <div class="container">
Replace Links:
<textarea class="editor"></textarea>
<div class="container button-container">
<button class="cancel">cancel</button>
<button class="replace">replace</button>
</div>
</div>
),t.append(g);let r=g.querySelector(".editor");r.rows=A.length,r.value=A.join(
);let n=()=>{g.style.minWidth=${Math.max(...r.value.split(`
).map(i=>[...i].length))+6}em};n(),r.addEventListener("input",n);let Q=g.querySelector(".cancel"),B=g.querySelector(".replace"),C=new Promise(i=>{let I=()=>{i({convert:!1}),e.remove()};g.addEventListener("close",I),g.addEventListener("click",I),Q.addEventListener("click",I),B.addEventListener("click",()=>{let s=r.value.split(`
);i({convert:!0,links:A.flatMap((E,c)=>E===s[c]||E===""||!s[c]?[]:[{before:E,after:s[c]??E}])}),e.remove()}),g.querySelector(".container").addEventListener("click",s=>{s.stopPropagation()})});return document.body.append(e),g.showModal(),C};var Ew=async(A,e)=>{let t=et(A),o=await sw([...new Set(t)]);if(!o.convert||o.links.length===0)return;let g=new Map(o.links.map(r=>[r.before,sA()]));await vp(o.links,e,r=>{let{link:n,projectCount:Q,replaced:B,done:C}=r,i=g.get(n.before);if(i){if(C){i.render({type:"check-circle"},{type:"text",text:"${n.after}", ${B}l. ${Q}p.}),setTimeout(()=>i.dispose(),1e3);return}i.render({type:"spinner"},{type:"text",text:"${n.after}", ${B}l. ${Q}p.})}})};async function aw(A,e){let t=et(A)[0];if(!t)return;let o=window.prompt(Replace "${t}" to this in ${e.map(Q=>"/${Q}").join(", ")},t)?.replace?.(/[\[\]\n]/g," ")??"";if(o==="")return;let{render:g,dispose:r}=sA(),n=await WA();try{g({type:"spinner"},{type:"text",text:Replacing links in ${e.length} projects...});let Q=0,C=(await Promise.all(e.map(async i=>{let[I]=await Promise.all([Hg(i,t,o),rA(i,t,(s,{persistent:E})=>{if(E)return[o,...s.map(c=>c.text).slice(1)]},{socket:n})]);if(!I.ok)throw g({type:"exclamation-triangle"},{type:"text",text:${I.value.name} ${I.value.message}}),Sb(I.value);return Q++,g({type:"spinner"},{type:"text",text:Replacing links in ${e.length-Q} projects...}),I.value}))).reduce((i,I)=>i+I,0);g({type:"check-circle"},{type:"text",text:Successfully replaced ${C} links.})}finally{await LA(n),setTimeout(r,1e3)}}function Sb(A){let e=new Error;return e.name=A.name,e.message=A.message,e}var cw=A=>{let e=[scrapbox.Project.name,...A];scrapbox.PopupMenu.addButton({title:t=>{let o=et(t).length;return o>1?"update links":o===1?"update a link":""},onClick:t=>{let o=et(t).length;o>1?Ew(t,e):o===1&&aw(t,e)}})};scrapbox.PopupMenu.addButton({title:A=>/[\n..。]/.test(A)?"\\n":"",onClick:A=>A.replace(/(\w)\n(\w)/g,"$1 $2").replaceAll(
,"").replaceAll(".",.
).replaceAll(".",.
).replaceAll("。",。
)});scrapbox.PopupMenu.addButton({title:A=>/https:\/\/(?:thumb\.|i\.)?gyazo\.com\/[a-z0-9]+/.test(A)?globalThis.GM_fetch?"copy Gyazo OCR":"open Gyazo":"",onClick:async A=>{let e=A.match(/https:\/\/(?:thumb\.|i\.)?gyazo\.com\/([a-z0-9]+)/)?.[1];if(!e)return;if(!globalThis.GM_fetch){window.open(https://gyazo.com/${e});return}let o=(await(await GM_fetch(https://gyazo.com/${e}.json)).json()).metadata?.ocr?.description;if(o)try{await navigator.clipboard.writeText(o)}catch(g){console.error(g),alert(${g.name} ${g.message})}}});scrapbox.PopupMenu.addButton({title:A=>/https:\/\/gyazo\.com\/[a-z0-9]+/.test(A)?"":"",onClick:A=>{let e=A.match(/https:\/\/gyazo\.com\/([a-z0-9]+)/)?.[1];e&&window.open(https://gyazo.com/${e}/transform)}});var lw=A=>{let e="",t=0;for(let o of A)if(o.type!=="title"){if(o.indent>t)for(let g=t;g<o.indent;g++)e+=bg(${g!==t?"\\item":""}\\begin{itemize},g*2)+ ;if(o.indent<t)for(let g=t;g>o.indent;g--)e+=bg("\\end{itemize}",(g-1)*2)+
;t=o.indent,e+=bg(${t>0?"\\item ":""}${vb(o)},t*2)+
}for(let o=t;o>0;o--)e+=bg("\\end{itemize}",(o-1)*2)+
${A.content}
\\end{lstlisting},Wb=A=>{let e=\\caption{${te(A.fileName)}}\\label{table:${te(A.fileName)}},t=Math.max(...A.cells.map(g=>g.length)),o=A.cells.map(g=> ${g.map(r=>r.map(n=>Zo(n)).join("")).join(" & ")}\\\\);return\\begin{table}htbp ${e}
\\centering
\\begin{tabular}{${"c".repeat(t)}}
${o.length===0?"":o.length===1?` \\toprule
${o.join(`
`)}
\\bottomrule: \\toprule
\\midrule
${o.slice(1).join(`
`)}
\\bottomrule`}
\\end{tabular}
\\end{table}},Xb=A=>A.nodes.map(e=>Zo(e)).join(""),Zo=A=>{switch(A.type){case"quote":return\\begin{quote}
${bg(A.nodes.map(e=>Zo(e)).join(""),2)}
\\end{quote};case"image":case"strongImage":return\\begin{figure}hbtp iamge:\\url{${A.src}}
\\end{figure};case"icon":case"strongIcon":return\\textit{${te(A.path)}};case"strong":return\\textbf{${A.nodes.map(e=>Zo(e)).join("")}};case"formula":return$${A.formula}$;case"decoration":{let e=A.nodes.map(t=>Zo(t)).join("");return A.decos.includes("/")&&(e=\\textit{${e}}),A.decos.some(t=>/\*-/.test(t[0]))&&(e=\\textbf{${e}}),A.decos.includes("_")&&(e=\\uline{${e}}),A.decos.includes("-")&&(e=\\sout{${e}}),e}case"numberList":return${A.number}. ${A.nodes.map(e=>Zo(e)).join("")};case"helpfeel":return\\lstinline!? ${te(A.text)}!;case"code":return\\lstinline!${te(A.text)}!;case"commandLine":return\\lstinline!${te(A.symbol)} ${te(A.text)}!;case"link":return A.pathType==="absolute"?A.content===""?\\url{${A.href}}:\\href{${A.href}}{${te(A.content)}}:te(A.href);case"googleMap":return\\href{${A.url}}{${te(A.place)}};case"hashTag":return te(#${A.href});case"blank":case"plain":return te(A.text)}},zb=[{extensions:["javascript","js"],fileType:"javascript"},{extensions:["typescript","ts"],fileType:"typescript"},{extensions:["cpp","hpp"],fileType:"C++"},{extensions:["c","cc","h"],fileType:"C"},{extensions:["cs","csharp"],fileType:"cs"},{extensions:["markdown","md"],fileType:"markdown"},{extensions:["htm","html"],fileType:"html"},{extensions:["json"],fileType:"json"},{extensions:["xml"],fileType:"xml"},{extensions:["yaml","yml"],fileType:"yaml"},{extensions:["toml"],fileType:"toml"},{extensions:["ini"],fileType:"ini"},{extensions:["tex","sty"],fileType:"tex"},{extensions:["svg"],fileType:"svg"}],Kb=A=>{let e=A.replace(/^.*\.(\w+)$/,"$1");return zb.find(t=>t.extensions.includes(e))?.fileType??""},te=A=>A.replaceAll("\\","\\textbackslash ").replaceAll("#","\\#").replaceAll("%","\\%").replaceAll("$","\\$").replaceAll("&","\\&").replaceAll("~","\\textasciitilde ").replaceAll("^","\\textasciicircum ").replaceAll("_","\\_").replaceAll("{","\\{").replaceAll("}","\\}").replaceAll("|","\\textbar ").replaceAll("<","\\textless ").replaceAll(">","\\textgreater "),bg=(A,e)=>A.split( ).map(t=>${" ".repeat(e)}${t}).join(
);scrapbox.PopupMenu.addButton({title:"TeX",onClick:A=>{navigator.clipboard.writeText(lw(hA(A))).catch(e=>{console.error(e),alert(${e.name} ${e.message}
${e.stack})})}});var qQ="https://keicho.herokuapp.com/api/";var Dw=async(A,e)=>{if(!window.GM_fetch)return{ok:!1,value:{name:"GMFetchNotAvailableError"}};let t=await window.GM_fetch(${qQ}web/,{mode:"cors",method:"POST",body:JSON.stringify({user:"nobody",talk:e,text:A}),headers:{"Content-Type":"application/json"}});if(!t.ok)return{ok:!1,value:{name:"ResponseError",res:t}};let o=await t.json();return{ok:!0,value:{text:o.text,buttons:o.buttons,canInput:o.can_input}}};var pw=()=>{let{popupMenu:A,render:e}=Pb();vI()?.append?.(A);let t=nt(),o=()=>{requestAnimationFrame(()=>{let g=document.getElementsByClassName("cursor")[0];A.style.top=${parseInt(g.style.top)+parseInt(g.style.height)+4}px})};return t.addChangeListener(o),{render:e,visible:()=>!A.hidden,open:()=>A.hidden=!1,close:()=>A.hidden=!0,toggle:()=>A.hidden=!A.hidden,dispose:()=>{A.remove(),t.removeChangeListener(o)}}},Pb=()=>{let A=document.createElement("div"),e=A.attachShadow({mode:"open"});e.innerHTML=
<style>
:host {
position: absolute;
left: 0px;
width:100%;
z-index:300;
user-select:none;
font-family:"Open Sans",Helvetica,Arial,"Hiragino Sans",sans-serif;
pointer-events:none
}
.button-container {
position: relative;
display:inline-block;
max-width:70vw;
min-width:80px;
text-align:center;
background-color:#111;
padding:0 1px;
border-radius:4px;
pointer-events:auto
}
max-width:90vw
}
max-width:90vw
}
.button {
font-size:11px;
color:#eee;
cursor:pointer;
display:inline-block;
padding:0 5px
}
.button:not(:first-of-type) {
border:0;
border-left:1px solid #eee }
.button.selected {
background-color:#222;
text-decoration:underline
}
font-size:13px;
padding:6px;
min-width:12vw
}
font-size:13px;
padding:6px;
min-width:12vw
}
.button div.icon {
height:2em;
max-width:10em;
display:inline-block;
overflow:hidden;
margin-left:1px;
vertical-align:top
}
.button div.icon img {
max-height:100%;
vertical-align:unset
}
</style>
<div class="button-container"></div>
;let t=e.lastElementChild;return{popupMenu:A,render:(...o)=>{t.textContent="",t.append(...o.map(({text:g,onClick:r})=>{let n=document.createElement("div");return n.classList.add("button"),n.textContent=g,r&&n.addEventListener("click",()=>r()),n}))}}};var ww=async(A="normal")=>{if(!window.GM_fetch)return{ok:!1,value:{name:"GMFetchNotAvailableError"}};let e=await window.GM_fetch(${qQ}web/create/?mode=${A},{mode:"cors"});return e.ok?{ok:!0,value:await e.text()}:{ok:!1,value:{name:"ResponseError",res:e}}};var mw=A=>https://keicho.netlify.app/#talk=${A};var hw=A=>{let e=A.split( ),t=e[1]??e[0],o=A===e[0]?"":e[0];return o?[o.trim(),t].join(
):t};var _Q=async(A,e,t)=>{let o=nt(),g=o.lines.findIndex(n=>n.id===e.id);g<0&&(g=o.lines.findIndex(n=>n.text===e.text)),g<0&&(g=Math.min(t,Math.max(0,o.lines.length-1)));let r=o.lines[g].text;return ir().clear(),o.setPosition({line:g,char:[...r].length}),await YA(
${A}),o.getPosition().line};var dw=A=>hA(A,{hasTitle:!1}).map(e=>{if(e.type==="title")return e.text.trimEnd();let t=" ".repeat(e.indent);switch(e.type){case"codeBlock":return[${t}${e.fileName},...e.content.split(
).map(o=>${t} ${o})].join(
).trimEnd();case"table":return[${t}${e.fileName},...e.cells.map(o=>${t} ${o.flatMap(g=>g.map(r=>$Q(r))).join(" ")})].join(
).trimEnd();case"line":return${t}${e.nodes.map(o=>$Q(o)).join("")}.trimEnd()}}).join(
),$Q=A=>{switch(A.type){case"quote":return> ${A.nodes.map(e=>$Q(e)).join("")};case"helpfeel":case"commandLine":return A.raw;case"strongImage":case"image":case"strongIcon":case"icon":case"googleMap":return"";case"strong":case"decoration":case"numberList":return A.nodes.map(e=>$Q(e)).join("");case"formula":return\\(${A.formula}\\);case"code":return ${A.text} ;case"blank":case"plain":return A.raw;case"hashTag":return A.href;case"link":switch(A.pathType){case"absolute":return A.content? ${A.content} :"";case"root":return A.href.split("/").pop()??"";case"relative":return A.href}}};var Uo=A=>/^[((]/.test(A);var Mw=async A=>{let e=scrapbox.Page.lines;if(!e)return;let{cursor:t,selection:o}=ge(),g=A?.entire||o.hasSelectionAll(),r=g?e.map(f=>f.text).join(
):o.getSelectedText(),n=A?.botIcon??"[/nishio/nisbot.icon]",{render:Q,visible:B,open:C,close:i,dispose:I}=pw();i();let s=new Set,E=()=>{I();for(let f of s)f()},c=f=>s.add(f),l={text:"Exit",onClick:E},D=A?.talkId||uw(r)||(g?"":uw(e.slice(0,1+t.getPosition().line).map(f=>f.text).join(
))),m=!D;if(!D){let f=ww(A?.mode),G=setTimeout(()=>{Q({text:"Start talking..."}),C();let F=0;G=setInterval(()=>{Q({text:Start talking${".".repeat(F%3)}}),F++},1e3)},1e3),j=await f;if(clearTimeout(G),!j.ok){if(j.value.name==="GMFetchNotAvailableError"){alert("GM_fetch is not available. Please use Tampermonkey and install GM_fethc.");return}if(j.value.name==="ResponseError"){Q({text:Error: ${j.value.res.status} ${j.value.res.statusText}},l),C(),console.error(Error: ${j.value.res.status} ${j.value.res.statusText},await j.value.res.text());return}return}D=j.value}let N=D,M=o.normalizeOrder(o.getRange()),p=g?e.length-1:M.end.line,h=e[p],d=g?"":" ".repeat(Math.min(...e.slice(M.start.line,M.end.line+1).map(f=>zA(f.text)))),b=async f=>{let G=await Dw(f,N);if(!G.ok)switch(G.value.name){case"ResponseError":return Q({text:Error: ${G.value.res.status} ${G.value.res.statusText}},l),C(),console.error(Error: ${G.value.res.status} ${G.value.res.statusText},await G.value.res.text()),G;case"GMFetchNotAvailableError":return alert("GM_fetch is not available. Please use Tampermonkey and install GM_fethc."),G}return G},Y="",R=async f=>{let G=dw(f).split(
).map(O=>O.trim()).join(
).trim();G.startsWith(Y)&&(G=G.slice(Y.length));let j=G.split(
);if(j.length===0)return;if(j.every(O=>Uo(O))&&(Y=G),j.filter(O=>!Uo(O)).length<2){let O,S;for(let U of j){if(S=await b(U),!S.ok)return S;Uo(U)||(O=S)}return O??S}let Z=0;{let O;for(;Z<j.length&&Uo(j[Z]);Z++)if(O=await b(j[Z]),!O.ok)return O}{let O=await b("まず聞いて");if(!O.ok)return O}for(;Z<j.length&&!Uo(j[Z]);Z++){let O=await b(j[Z]);if(!O.ok)return O}return await b("おしまい")},y=async f=>{if(scrapbox.Layout!=="page"||f==="")return;let G=R(f),j=setTimeout(()=>{Q({text:"Asking..."}),C();let U=0;j=setInterval(()=>{Q({text:Asking${".".repeat(U%3)}}),U++},1e3)},1e3),F=await G;if(clearTimeout(j),!F||!F.ok)return;let{text:Z,buttons:O}=F.value,S=hw(Z);if(S.trim()){let U=${d}${n}${S.includes(`
)?
${S.split(`
).map(v=> ${d}${v}).join(
)}:S}
${d};p=await _Q(U,h,p),h=e[p]}Q({text:"Send",onClick:u},{text:"🙂",onClick:()=>YA("🙂")},{text:"🙁",onClick:()=>YA("🙁")},...O.map(U=>({text:U,onClick:async()=>{p=await _Q(U,h,p),h=e[p],await y(U)}})),l),C()},u=async()=>{if(scrapbox.Layout!=="page")return;let f=scrapbox.Page.lines,G=t.getPosition().line,[j,F,Z]=Vb(f,G,n);j!==""&&(p=Z,h=f[p],d=" ".repeat(Math.min(...f.slice(F,Z+1).map(O=>zA(O.text)))),await y(j))};return m&&(p=await _Q(mw(N),h,p),h=e[p]),await y(r),{ask:u,open:C,close:i,visible:B,exit:E,onExit:c}},uw=A=>{for(let e of A.split(
).reverse()){let t=e.match(/https?:\/\/keicho\.netlify\.app\/#talk=(\w+)/)?.[1];if(t)return t}},Vb=(A,e,t)=>{let o=Math.max(A.findLastIndex((r,n)=>n<e&&r.text.trim().startsWith(t)),1),g=o+Se(o,A)+1;return[A.slice(g,e+1).map(r=>r.text.trim()).join(
).trim(),g,e]};scrapbox.PopupMenu.addButton({title:"",onClick:A=>${A}});scrapbox.PopupMenu.addButton({title:"",onClick:A=>$ ${A}});var fw=[xt,Rt,Zt];scrapbox.PopupMenu.addButton({title:A=>{let e=ve({project:scrapbox.Project.name,mode:"noopen",hooks:fw});return!e||e.hookName.includes("default")?"":e.hookName.includes("task")?"":e.hookName.includes("split")?"":""},onClick:()=>{let A=window.prompt("Create a new page at",scrapbox.Project.name);A&&ve({project:A,mode:"noopen",hooks:fw})?.()}});scrapbox.PopupMenu.addButton({title:A=>/(https?:\/\/[^\s]+)/g.test(A)?"":"",onClick:A=>{let e=A.replace(/(https?:\/\/[^\s]+)/g,"[$1#.jpg]");if(A!==e)return e}});scrapbox.PopupMenu.addButton({title:"S",onClick:A=>{window.open(https://scrapbox.io/${scrapbox.Project.name}/search/page?q=${A})}});scrapbox.PopupMenu.addButton({title:"",onClick:A=>{let e=A.split(/\n/).map(t=>t.replace(/\[(.*)\]/g,"$1")).join( );if(A!=e)return e}});var qb=[ni,ew,ni,ow,nw,PQ(),Bw,$p(),tw,A=>{if(A.hostname!=="ekitan.com"||!/^\/transit\/(?:route|first|last)\//.test(A.pathname))return A;let e=A.searchParams.get("dt"),t=A.searchParams.get("tm"),o=A.searchParams.get("sr");return A.search="",e&&A.searchParams.append("dt",e),A.pathname.startsWith("/transit/route/")&&(t&&A.searchParams.append("tm",t),o&&A.searchParams.append("sr",o)),A},A=>{if(A.host!==location.host||!A.pathname.startsWith("/api/code/"))return A;let e=encodeURIComponent(${A.origin}${A.pathname});return${A}.endsWith(".svg")?${A}:${A}.endsWith(".mlt")?${A}:A},A=>{if(A.hostname==="raw.githubusercontent.com")return${A};if(A.hostname!=="github.com")return A;let[e,t,o]=A.pathname.match(/^\/([^\\]+)\/([^\\]+)\/blob\/(.+)$/)?.slice?.(1)??[];if(!e||!t||!o)return A;let[,g,r]=A.hash.match(/L(\d+)-L(\d+)/)??A.hash.match(/L(\d+)/)??[];return[https://code2svg.vercel.app/svg/${g&&r?L${g}-${r}/:g?L${g}/:""}https://raw.githubusercontent.com/${e}/${t}/${o}#.svg ${A}]},A=>A.hostname==="github.com"?${A}:A,iw,Qw()];scrapbox.PopupMenu.addButton({title:A=>/https?:\/\/\S+/.test(A)?"URL":"",onClick:A=>{let e=Cw(A,...qb);if(typeof e=="string")return A===e?void 0:e;e.then(t=>{if(A!==t)return YA(t)})}});cw(["takker","takker-memex","takker-private","takker-books"]);if(!/mobile/i.test(navigator.userAgent)){let A=(e,t)=>{e.trim()!==""&&Mw({mode:t}).then(o=>{if(!o)return;let{ask:g,visible:r,onExit:n}=o,Q=B=>{!r()||B.key!=="Enter"||!B.ctrlKey||B.altKey||B.shiftKey||(B.preventDefault(),B.stopPropagation(),g())};GA().addEventListener("keydown",Q),n(()=>GA().removeEventListener("keydown",Q))})};scrapbox.PopupMenu.addButton({title:()=>"🤖",onClick:e=>A(e)})}var jg=(A,e)=>e.map(t=>t.replace(/@yyyy-MM-dd HH:mm:ss@/g,$(A,"yyyy-MM-dd HH:mm:ss")).replace(/@yyyy-MM-dd@/g,$(A,"yyyy-MM-dd")).replace(/@yyyy-MM-dd(?:([+-])(\d+)(w?))?(?:\((Sun|Mon|Tue|Wed|Thu|Fri|Sat)\))?@/g,(o,g,r,n,Q)=>{let B=g?g==="+"?PA(A,parseInt(r)*(n==="w"?7:1)):He(A,parseInt(r)*(n==="w"?7:1)):A;return $(Q?PA(ar(B),_b(Q)):B,"yyyy-MM-dd")}).replace(/@yyyy-ww@/g,${qo(A)}-w${${Vo(A)}.padStart(2,"0")}).replace(/@yyyy-ww([+-])(\d+)(w?)@/g,(o,g,r,n)=>{let Q=g==="+"?PA(A,parseInt(r)*(n==="w"?7:1)):He(A,parseInt(r)*(n==="w"?7:1));return${qo(Q)}-w${${Vo(Q)}.padStart(2,"0")}})),_b=A=>{switch(A){case"Sun":return 0;case"Mon":return 1;case"Tue":return 2;case"Wed":return 3;case"Thu":return 4;case"Fri":return 5;default:return 6}};var yw=async(A,e,t)=>{if(scrapbox.Project.name!==A)return()=>{};let o=scrapbox.Project.pages;await new Promise(C=>{let i=setInterval(()=>{if(o.length===0){o=scrapbox.Project.pages;return}clearInterval(i),C()},2e3)});let g=new Date(2023,1,3),r=async()=>{let C=new Date,i={start:g,end:PA(C,1)},{render:I,dispose:s}=sA(),E;try{let c=await Nw(e),l=await Nw(t),D=ys(i).filter(M=>{let p=jg(M,c)[0],h=o.find(d=>d.title===p);return!h||!h.exists}),m=Ps(i).filter(M=>{let p=jg(M,l)[0],h=o.find(d=>d.title===p);return!h||!h.exists});if(D.length===0&&m.length===0)return;let N=D.length+m.length;I({type:"spinner"},{type:"text",text:create ${N} review pages...}),E=await WA();for(let M of[...D.map(p=>jg(p,c)),...m.map(p=>jg(p,l))])await rA(A,M[0],(p,h)=>h.persistent?void 0:M,E?{socket:E}:{}),N--,I({type:"spinner"},{type:"text",text:create ${N} review pages...});I({type:"check-circle"},{type:"text",text:created ${D.length+m.length} review pages.}),g=C}catch(c){I({type:"exclamation-triangle"},{type:"text",text:c instanceof Error?${c.name} ${c.message}:"Unknown error! (see developper console)"}),console.error(c)}finally{E&&await LA(E),await CA(1e3),s()}},n=r(),Q=new Date,B=setInterval(()=>{let C=new Date;Qe(Q,C)||(Q=C,n.then(()=>n=r()))},1e4);return()=>(clearTimeout(B),n)},Nw=async A=>{let e=await to(A[0],A[1],A[2]);if(!e.ok){let o=new Error;throw o.name=e.value.name,o.message=${e.value.message} at fetching /${A0}/${A1}/${A2},o}let t=e.value.split( );if(t.length===0)throw new Error(template "/${A0}/${A1}/${A2}" is empty!);return t};var ii=(...A)=>{let e=A.flatMap(o=>{if(typeof o=="string")return[An(o)];if(Array.isArray(o.type))return[Gw(o.type)];switch(o.type){case"text":return[An(o.text)];case"group":{let g=ii(...o.items);return g?[g]:[]}default:return[Gw(o.type)]}});if(e.length===0)return;if(e.length===1)return e[0];let t=document.createElement("span");return t.classList.add("item-group"),t.append(...e),t},An=A=>{let e=document.createElement("span");return e.classList.add("item"),e.append(A),e},Gw=A=>{if(Array.isArray(A)){let e=document.createElement("span");e.classList.add("fa-stack");let t=Ci(A[0]);t.classList.add("fa-stack-1x");let o=Ci(A[1]);return o.classList.add("fa-stack-1x"),e.append(t,o),An(e)}return An(Ci(A))},Ci=A=>{let e=document.createElement("i");switch(A){case"spinner":e.classList.add("fa","fa-spinner");break;case"check-circle":case"gyazo":case"ocr":case"calendar":case"trim":e.classList.add("kamon",kamon-${A});break;case"markdown":case"google":e.classList.add("fab",fa-${A});break;case"copy":case"clipboard":e.classList.add("far",fa-${A});break;default:e.classList.add("fas",fa-${A});break}return e};var{cursor:Ii,selection:si}=ge(),Yw=A=>{let{className:e,display:t,onClick:o,context:g="page"}=A,r=document.createElement("div");e&&r.classList.add(e),kw(g)||(r.style.display="none");let n=(...C)=>{if(C.length===1&&C[0]===""){r.style.display="none";return}r.textContent="";let i=ii(...C);i&&r.append(i)},Q=typeof t=="function"?t({cursor:Ii,selection:si}):t;return n(...Array.isArray(Q)?Q:[Q]),r.addEventListener("click",C=>{C.preventDefault(),C.stopPropagation(),o({cursor:Ii,selection:si,setDisplay:n})}),{status:r,context:g,update:()=>{if(kw(g)?r.removeAttribute("style"):r.style.display="none",typeof t=="function"){let C=t({cursor:Ii,selection:si});n(...Array.isArray(C)?C:[C])}}}},kw=A=>A!=="stream"?scrapbox.Layout===A:scrapbox.Layout==="list"&&location.pathname.startsWith("/stream");var bw=()=>{let A=document.createElement("style");A.textContent=.status-bar.left { position: absolute;
top: 0;
left: 0;
max-width: 80vw;
overflow-x: auto;
overflow-y: hidden;
}
.status-bar.left:empty {
display: none;
}
.status-bar.left > div {
border-left: unset;
}
.status-bar.left > div {
border-right: 1px solid var(--tool-light-color, #a9aaaf); }
.status-bar.left > div:first-of-type {
border-top-left-radius: unset;
}
.status-bar.left > div:last-of-type {
border-top-right-radius: 3px;
},document.head.append(A);let e=document.createElement("div");return e.classList.add("status-bar","left"),document.getElementsByClassName("footer")[0].append(e),e};var Ei=new Set,{cursor:$b,selection:A0}=ge(),e0=bw();var we=A=>{let e=Yw(A);return Ei.add(e),e0.append(e.status),()=>{e.status.remove(),Ei.delete(e)}},ai=()=>{for(let{update:A}of Ei)A()};$b.addChangeListener(()=>ai());A0.addChangeListener(()=>ai());scrapbox.addListener("layout:changed",ai);var jw=async(A,e)=>{try{let t=e.getSelectedText()||kA(A.getPosition().line);if(!t)return;await navigator.clipboard.writeText(t)}catch(t){console.error(t),alert(Faild to copy:
${JSON.stringify(t)})}},Ow=async(A,e)=>{try{let t=e.hasSelection(),o=t?e.getRange().start.line:A.getPosition().line,g=t?e.getSelectedText():kA(o);if(!g)return;await navigator.clipboard.writeText(g),t||e.setRange({start:{line:o,char:0},end:{line:o,char:g.length}}),A.focus(),dA("Delete")}catch(t){console.error(t),alert(Faild to cut:
${JSON.stringify(t)})}},Fw=async A=>{try{let e=await navigator.clipboard.readText();if(!e)return;A.focus(),await YA(e)}catch(e){console.error(e),alert(Faild to paste:
${JSON.stringify(e)})}},Jw=A=>{A.getVisible()&&A.hasFocus&&A.visiblePopupMenu?A.hide():(A.focus(),A.showEditPopupMenu())};globalThis.addEventListener("keydown",A=>{if(A.key!=="i"||A.shiftKey||A.altKey||A.metaKey||!A.ctrlKey||A.isComposing)return;let e=nt();e.hasFocus||(A.preventDefault(),e.focus())});var ci=class{get editor(){return document.getElementById("editor")}get lines(){return document.getElementsByClassName("lines")?.[0]}get computeLine(){return document.getElementById("compute-line")}get grid(){return document.getElementsByClassName("related-page-list clearfix")?.[0]?.getElementsByClassName("grid")?.[0]}get cursorLine(){return document.getElementsByClassName("cursor-line")?.[0]}get textInput(){return document.getElementById("text-input")}get cursor(){return document.getElementsByClassName("cursor")?.[0]}get selections(){return document.getElementsByClassName("selections")?.[0]}get popupMenu(){return document.getElementsByClassName("popup-menu")?.[0]}get pageMenus(){return document.getElementsByClassName("page-menu")?.[0]}get pageInfoMenu(){return document.getElementById("page-info-menu")}get pageEditMenu(){return document.getElementById("page-edit-menu")}get pageEditButtons(){return this.pageEditMenu.nextElementSibling.getElementsByTagName("a")}get randomJumpButton(){return document.getElementsByClassName("random-jump-button")?.[0]}get pageCustomButtons(){return document.getElementsByClassName("page-menu-extension")}},xw=new ci;var Rw=A=>new Promise(e=>setTimeout(e,A));async function Me(A,{wait:e=1}={}){let t=xw.textInput;t.focus(),t.value=A;let o=document.createEvent("UIEvent");o.initEvent("input",!0,!1),t.dispatchEvent(o),await Rw(e)}if(Vt()){let A="Timestamp";scrapbox.PageMenu.addMenu({title:A,image:"https://img.icons8.com/ios/180/FFFFFF/add-time.png"}),scrapbox.PageMenu(A).addItem({title:"#YYYY-MM-DD HH:mm:ss ",onClick:()=>Me($(new Date,"#yyyy-MM-dd HH:mm:ss "))}),scrapbox.PageMenu(A).addItem({title:"YYYY-MM-DD HH:mm:ss ",onClick:()=>Me($(new Date,"yyyy-MM-dd HH:mm:ss "))}),scrapbox.PageMenu(A).addItem({title:"YYYY-MM-DD",onClick:()=>Me($(new Date,"yyyy-MM-dd"))}),scrapbox.PageMenu(A).addItem({title:"HH:mm:ss ",onClick:()=>Me($(new Date,"HH:mm:ss "))}),scrapbox.PageMenu(A).addItem({title:"⬜",onClick:()=>Me("⬜")}),scrapbox.PageMenu(A).addItem({title:"🚧",onClick:()=>Me("🚧")}),scrapbox.PageMenu(A).addItem({title:"⌛",onClick:()=>Me("⌛")}),scrapbox.PageMenu(A).addItem({title:"📝",onClick:()=>Me("📝")}),scrapbox.PageMenu(A).addItem({title:"✅",onClick:()=>Me("✅")}),scrapbox.PageMenu(A).addItem({title:"❌",onClick:()=>Me("❌")})}scrapbox.PageMenu.addItem({title:"Open kakeru",image:"https://i.kakeru.app/15c3b1a40b6b3c2ebd68f33f4c86b3f6-opaque.png",onClick:()=>window.open("https://kakeru.app")});async function Zw(A,{from:e,to:t,merge:o}){if(e===t)return{success:!0,dup:!1};let g=await $A(e,A);if(!g.ok)return{success:!1,at:"from",name:g.value.name,message:g.value.message};let r=g.value;if(!r.persistent)return{success:!1,at:"from",name:"EmptyPageError",message:"The request page is empty."};let n=await $A(t,A);if(!n.ok)return{success:!1,at:"to",name:n.value.name,message:n.value.message};let Q=g.value;return Q.persistent&&!o?{success:!1,at:"to",name:"NoEmptyPageError",message:The same page already exists in "/${t}"}:(await rA(t,A,B=>[...B,...r.lines.slice(1)].map(C=>C.text)),await $i(e,A),{success:!0,dup:Q.persistent})}var li=async()=>{let A=scrapbox.Page.title,e=scrapbox.Project.name,t=window.prompt(Take "/${e}/${A}" from "${e}" to:,"takker");if(!t)return;let{render:o,dispose:g}=sA();o({type:"spinner"},{type:"text",text:/${e}/${A} → /${t}/${A}});try{let r=await Zw(A,{from:e,to:t,merge:!0});if(!r.success){o({type:"exclamation-triangle"},{type:"text",text:${r.name} ${r.message}});return}return o({type:"check-circle"},{type:"text",text:Moved ${r.dup?"and merged ":""}to "/${t}/${A}".}),https://scrapbox.io/${t}/${V(A)}}catch(r){o({type:"exclamation-triangle"},{type:"text",text:r instanceof Error?${r.name} ${r.message}:"Unknown error! (see developper console)"}),console.error(r)}finally{setTimeout(()=>g(),1e3)}};scrapbox.PageMenu.addItem({title:"Transport",onClick:async()=>{await li()}});scrapbox.PageMenu.addItem({title:"Transport and Open",onClick:async()=>{let A=await li();A&&window.open(A)}});var Di=A=>A.replace(/[\[\]]/g,"").replace(/\s/g," "),qt=A=>${A}.padStart(2,"0"),Uw=A=>${A.getFullYear()}-${qt(A.getMonth()+1)}-${qt(A.getDate())} ${qt(A.getHours())}:${qt(A.getMinutes())}:${qt(A.getSeconds())},pi=A=>${A.getFullYear()}-${qt(A.getMonth()+1)}-${qt(A.getDate())};async function Lw(A,e,t,o){let{render:g,dispose:r}=sA(),n=[],Q=[];for(let C of t0(t)){if(C.type==="line"){n.push(${Di(C.text)}~@${pi(new Date)});continue}let i=${Di(C.lines0)}~@${pi(new Date)};Q.push([i,...C.lines.slice(1),"",#${Uw(new Date)}]),n.push(${i})}let B=o?.socket;try{B??=await WA(),g({type:"spinner"},{type:"text",text:Adding ${n.length} items...}),await rA(A,e,C=>{let i=C.map(s=>s.text),I=i.flatMap((s,E)=>s.trim()==="[/icons/hr.icon]"?[E]:[]).pop()??-1;return I<0?[...i,...n]:[...i.slice(0,I),...n,...i.slice(I)]},{socket:B}),g({type:"spinner"},{type:"text",text:Create ${Q.length} pages...}),await Promise.all(Q.map(C=>rA(A,C[0],i=>[i[0].text,...i.slice(1).map(I=>I.text),...C.slice(1)],{socket:B}))),g({type:"check-circle"},{type:"text",text:"Added to the inbox."})}catch(C){g({type:"exclamation-triangle"},{type:"text",text:"Failed to add (see console). Write directory instead."}),console.error(C),go(A,e,[...n,...Q].join( ))}finally{let C=CA(1e3);B&&await LA(B),await C,r()}}function*t0(A){let e=0;for(;e<A.length;){let t=Se(e,A);if(t===0){yield{type:"line",text:A[e].trim()},e++;continue}let o=zA(A[e]);yield{type:"block",lines:A.slice(e,e+t+1).map(g=>g.slice(o))},e+=t+1}}var Tw=async(A,e)=>{let t=window.prompt("Type all you think of","");if(!t||t.trim()==="")return;let o=t.trim().split(/\s+/);await Lw(A,e,o)};var o0="button.";document.getElementById("editor").addEventListener("click",async A=>{let e=A.target;if(e.tagName==="IMG"&&e.classList.contains("icon")&&e.title.endsWith("-button")){A.preventDefault(),A.stopImmediatePropagation();try{let t=../${encodeURIComponent(e.title)}/${o0},{execute:o}=await import(t);o()}catch(t){console.log(t)}}});scrapbox.PageMenu.addItem({title:"Copy link for Markdown",onClick:()=>{let A=scrapbox.Page.title.replaceAll(" ","_").replace(/[/?#\{}^|<>]/g,e=>encodeURIComponent(e));navigator.clipboard.writeText(${scrapbox.Page.title}(https://${location.hostname}/${scrapbox.Project.name}/${A}${location.hash})).catch(e=>alert(${e.name}: ${e.message}))}});var Og=A=>{let[e,t]=L([]),[o,g]=L([]),[r,n]=L(!1),Q=k(async()=>{let C=new Set;n(!0);let i=await JQ(A),I=[],s=i.flatMap(({links:E,project:c})=>E.flatMap(l=>{let{title:D}=YQ(l),m=It(D);if(!m)return[];if(!m.ok)return I.push({project:c,title:D,...m.value}),[];let N=P(D);return C.has(N)?[]:(C.add(N),[{project:c,title:D,...m.value}])}));t(s),g(I),n(!1)},[A]),B=k(async()=>{n(!0),await FQ(A,60),n(!1)},[A]);return X(()=>(Q(),Mg(A,Q)),[A,Q]),{tasks:e,errors:o,load:B,loading:r}};var Sw=()=>k(A=>A.stopPropagation(),[]);var en=()=>{let[A,e]=kt(g0,{isOpen:!1,prevOverflowY:""}),t=k(()=>e(!0),[]),o=k(()=>e(!1),[]),g=k(({children:r})=>{let n=Sw(),Q=x(()=>{let B;return C=>{if(!C){B?.(),e(C);return}let i=new AbortController;C.addEventListener("cancel",()=>e(!1),{signal:i.signal}),B=()=>{i.abort()},e(C)}},[]);return a("dialog",{ref:Q,onClick:o},r&&a("div",{className:"dialog-inner",onClick:n},r))},[]);return{isOpen:A.isOpen,open:t,close:o,Dialog:g}},g0=(A,e)=>{let t=A.dialog?.open??!1;if(e instanceof HTMLDialogElement||e===null)return t===A.isOpen&&e===A.dialog?A:{isOpen:t,dialog:e,prevOverflowY:A.prevOverflowY};if(e){A.dialog?.showModal?.();let o=A.isOpen?A.prevOverflowY:document.documentElement.style.overflowY;return document.documentElement.style.overflowY="hidden",A.isOpen&&t?A:{isOpen:!0,prevOverflowY:o,dialog:A.dialog}}return A.dialog?.close?.(),A.prevOverflowY===""?document.documentElement.style.removeProperty("overflow-y"):document.documentElement.style.overflowY=A.prevOverflowY,!A.isOpen&&!t?A:{isOpen:!1,prevOverflowY:"",dialog:A.dialog}};var Fg=String.raw.fa,.far{font-weight:900;font-family:"Font Awesome 5 Free";-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.far{font-weight:400}.fa-spinner{animation:spin 2s infinite linear}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}.fa-spinner:before{content:"\f110"}.fa-sync:before{content:"\f021"}.fa-bookmark:before{content:"\f02e"}.fa-fw{text-align:center;width:1.25em}.kamon:before{font-family:AppIcons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-variant:normal;font-weight:400;text-decoration:none;text-transform:none}.kamon-check-circle:before{content:"\e018"}.timeline-wrap{display:flex;flex-direction:column;height:100%;overflow-y:hidden;--timeline-bg: var(--dropdown-menu-bg, #fff);--timeline-text-color: var(--page-text-color, #4a4a4a);--timeline-link-color: var(--page-link-color, #5e8af7);--row-header-width: 40px;--timeline-border-color: #888;--timeline-border: solid 1px var(--timeline-border-color);--timeline-hour-height: 40px;background-color:var(--timeline-bg);color:var(--timeline-text-color);.column-header{flex:none;display:flex;flex-direction:row;.cell{flex:1 1 1px;h2{font-weight:400;margin:0;text-align:center;width:100%}}}.week-container{position:relative;height:100%;overflow-y:auto;scrollbar-width:none;.week{flex:auto;display:flex;width:100%;.borders{.border{height:var(--timeline-hour-height)}.border:after{content:attr(data-time);font-size:10px;text-align:right;border-top:var(--timeline-border);position:absolute;width:100%;margin-top:-1px;pointer-events:none}}.timeline{flex:auto;border-left:var(--timeline-border);position:relative;.indicator{position:absolute;top:calc(var(--start) * 40px - .5px);width:100%;height:1px;background-color:red}.copy{position:absolute;top:1.5em}.event{position:absolute;top:calc(var(--start) * 40px - 1px);height:calc(40px * var(--duration) / 60);outline:none;--event-bg2: var(--timeline-text-color);--event-bg: var(--timeline-bg);--event-bg-ratio: 50%;--event-color-ratio: 0%;--event-border-color-ratio: 0%;background-color:color-mix(in srgb,var(--event-bg) var(--event-bg-ratio),var(--event-bg2));color:color-mix(in srgb,var(--event-bg) var(--event-color-ratio),var(--timeline-text-color));border:var(--timeline-border);border-color:color-mix(in srgb,var(--event-bg) var(--event-border-color-ratio),var(--timeline-border-color));border-radius:4px;overflow:hidden;text-wrap:nowrap;max-width:100%;text-overflow:ellipsis}.eventdata-status=done{--event-bg-ratio: 90%;--event-color-ratio: 50%;--event-border-color-ratio: 50%}.eventdata-status=expired{font-weight:700}a.event{--event-bg2: var(--timeline-link-color);text-decoration:none}}.timeline:first-child{border-right:var(--timeline-border)}}}}.wedget{position:fixed;top:60px;left:10px;max-height:calc(90vh - 60px);max-width:100px;width:calc(100vw / 767 * 100 - 10px);min-width:60px;border:solid 1px #888;border-radius:4px;display:flex;flex-direction:column;background-color:var(--dropdown-menu-bg, #fff);color:var(--page-text-color, #4a4a4a);&:not(.open){display:none}}dialog{&::backdrop{background-color:#000c}padding:10px;background:unset;margin-top:unset;margin-bottom:unset;border:unset;height:unset;overflow-y:hidden;&open>.dialog-inner{display:flex}>.dialog-inner{flex-direction:column;align-items:center;row-gap:10px;height:100%;>*{color:var(--page-text-color, #4a4a4a);background-color:var(--dropdown-menu-bg, #fff);border:1px solid rgba(0,0,0,.2);border-radius:6px}}}@media (min-width: 768px){dialog{padding:30px 0;--item-width: 600px}}.result{padding:15px;width:calc(var(--item-width, 100%) - 30px);overflow-y:scroll}.controller{padding:5px;width:calc(var(--item-width, 100%) - 10px);display:flex;flex-wrap:wrap;flex:none;gap:.2em}.progress{flex-grow:1;>*{padding:0 2px}}a{text-decoration:none;color:var(--page-link-color, #5e8af7);&:hover{color:var(--page-link-hover-color, #2d67f5)}}button{cursor:pointer;background:unset;color:unset;border:unset}.copy,.close,.today{font-family:"Font Awesome 5 Free"}.navi{font-family:AppIcons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-variant:normal;font-weight:400;text-decoration:none;text-transform:none}.close,.today{font-weight:900}ul{list-style-type:none;word-break:break-all}.task-list li:not(data-freshness^="-"):not(data-freshness="0"){font-weight:700}.scheduler details li{&data-status=done{opacity:.4}&data-status=expired{font-weight:700}}.task-list li{&data-type=deadline .label.type{color:var(--takker-scheduler-label-deadline-color, rgb(255, 75, 0))}&data-type=todo .label.type{color:var(--takker-scheduler-label-todo-color, rgb(246, 170, 0))}&data-type=note .label.type{color:var(--takker-scheduler-label-note-color, rgb(200, 200, 203))}&data-type=up-down .label.type{color:var(--takker-scheduler-label-up-down-color, rgb(77, 196, 255))}}:is(data-page-no=expired,data-page-no=errors) li{opacity:1!important}.scheduler{--takker-scheduler-summary-meter-width: 10em;overflow-y:hidden}.label{display:inline-block;font-size:90%;padding:0 3px}.type{text-align:center;width:2.5em;border:1px solid;border-radius:3px}.freshness{text-align:right;width:2.5em}.start,.duration{text-align:right;width:3em} ;var Lo=({text:A,title:e})=>{let[t,o]=L(""),g=k(async r=>{r.preventDefault(),r.stopPropagation();try{await navigator.clipboard.writeText(A),o("Copied"),await CA(1e3),o("")}catch(n){alert(Failed to copy the code block
Error:${n.message})}},[A]);return a("button",{className:"copy",title:e??"Copy",onClick:g},t)};var r0=60*60*24*1e3,vw=(A,e)=>{let t=eA(A.refDate),o=(e.getTime()-t.getTime())/r0;switch(t.setHours(0),t.setMinutes(0),A.status){case"done":return-1/0;case"deadline":return o/(A.speed??1);case"todo":return Math.min(o/(A.speed??1),0);case"note":return e.getTime()<t.getTime()?-1/0:-o/(A.speed??1);case"up-down":{let g=A.speed??30;return g*(-1+Math.cos(Math.PI*2*o/g))}}};var Ww=(A,e)=>{if(e.score!==A.score)return e.score-A.score;let t=Hw(A.freshness),o=Hw(e.freshness);return t!==o?o-t:Ee(je(A),je(e))?-1:1},Hw=A=>{switch(A.status){case"todo":return 3;case"note":return 2;case"deadline":return 5;case"up-down":return 1;case"done":return 0}};var fe=A=>${A.getFullYear()}-${he(A.getMonth()+1)}-${he(A.getDate())},Jg=A=>{let[e,t,o]=A.split("-").map(g=>parseInt(g,10));return{year:e,month:t,date:o}},xg=A=>${oE(A)}-w${he(Vo(A))},tn=A=>{let[e,t]=A.split("-w").map(o=>parseInt(o,10));return ar(BE(new Date(e,0,1),t))};var Rg=({loading:A,onClick:e})=>A?a("div",null,a("i",{className:"fa fa-spinner"})):a("button",{className:"navi reload",onClick:e},"");var To=()=>{let[A,e]=L(new Date);return X(()=>{let t=setInterval(()=>e(new Date),6e4);return()=>{clearInterval(t)}},[]),A};var Xw=A=>{switch(A){case"todo":return"ToDo";case"note":return"覚書";case"deadline":return"締切";case"up-down":return"浮遊";case"done":return"完了"}};var zw=(A,e)=>new URL(/${A.project}/${V(A.title)},e??location.href);var on=({children:A,project:e,title:t,className:o,...g})=>a("a",{...g,className:[o??"","page-link"].join(" "),type:"link",href:zw({project:e,title:t}).pathname,...e===scrapbox.Project.name?{rel:"route"}:{rel:"noopener noreferrer",target:"_blank"}},A);var Kw=({action:A,pActions:e})=>{let t=x(()=>Xw(A.freshness.status),[A.freshness.status]),o=x(()=>Ye(je(A)).slice(11)||" ",[je(A)]),g=x(()=>og(A),[A]),r=Math.floor(Math.round(A.score)/7),n=To(),Q=x(()=>A.executed!==void 0&&jt(Ct(eA(A.executed.start),A.executed.duration),n),[A.executed?.start,A.executed?.duration,n]),B=x(()=>[...e,A].map(C=>${C.raw}).join( ),[e,A]);return a("li",{"data-type":A.freshness.status,"data-freshness":A.score.toFixed(0),"data-level":r,...r<0?{style:{opacity:Q0(A).toFixed(2)}}:{}},a(Lo,{text:B,title:"ここまでコピー"}),a("span",{className:"label type"},t),a("i",{className:label far fa-fw${Q?" fa-bookmark":""}}),a("span",{className:"label freshness"},A.score.toFixed(0)),a("time",{className:"label start"},o),a("span",{className:"label duration"},g,"m"),a(on,{project:A.project,title:A.raw},A.name))},Q0=A=>Math.max(.8*Math.exp(Math.log(8/7)/7*A.score),.05);var Pw=(A=fe(new Date))=>{let[e,t]=L(A),o=k(()=>{t(r=>{switch(r){case"errors":return"expired";case"expired":return fe(new Date);default:{let n=eA(Jg(r));return n.setDate(n.getDate()+1),fe(n)}}})},[]),g=k(()=>{t(r=>{let n=fe(new Date);switch(r){case"errors":return"errors";case"expired":return"errors";case n:return"expired";default:{let Q=eA(Jg(r));return Q.setDate(Q.getDate()-1),fe(Q)}}})},[]);return{pageNo:e,next:o,prev:g}};var gn=(A,e)=>X(()=>(scrapbox.on(A,e),()=>scrapbox.off(A,e)),[]);var Zg=(A,e)=>{let t=yA({...e});X(()=>(Object.assign(t.current,e),()=>{for(let o of Object.keys(e))delete t.current[o]}),[...Object.keys(e)].sort().map(o=>e[o])),X(()=>{A(t.current)},[A])};var Vw=A=>{let e=document.createElement("div");e.dataset.userscriptName="takker-workflow@0.0.1/next-action-viewer";let t=e.attachShadow({mode:"open"});return document.body.append(e),new Promise(o=>NA(a(n0,{getController:o,projects:A}),t))},n0=({getController:A,projects:e})=>{let{tasks:t,errors:o,load:g,loading:r}=Og(e),{pageNo:n,next:Q,prev:B}=Pw(),C=x(()=>{if(n==="errors")return o.map(l=>({name:${l.title}
name:${l.name}
message:${l.message},raw:l.title,freshness:{refDate:{year:9999,month:1,date:1},status:"todo"},project:l.project,generated:!0,score:0}));if(n==="expired"){let l=new Date;return t.flatMap(D=>!be(D)&&Ee(hE(D),qA(l))&&D.freshness===void 0&&D.recurrence===void 0?[{...D,score:0,freshness:{refDate:D.executed.start,status:"todo"}}]:[]).sort((D,m)=>Ee(je(D),je(m))?-1:0)}let c=eA(Jg(n));return t.flatMap(l=>{if(!l.freshness)return[];if(Co(l))return[];let D=vw(l.freshness,c);return D>-999?[{...l,score:D}]:[]}).sort(Ww)},[t,o,n]),{Dialog:i,open:I,close:s}=en();Zg(A,{open:I,close:s});let E=x(()=>[n,...C.map(c=> ${c.raw})].join( ),[C,n]);return gn("page:changed",s),a(W,null,a("style",null,Fg),a(i,null,a("div",{className:"controller"},a(Lo,{text:E,title:"Copy All Tasks"}),a("span",null,n),a("button",{className:"navi left",onClick:B},""),a("button",{className:"navi right",onClick:Q},""),a(Rg,{loading:r,onClick:g}),a("button",{className:"close",onClick:s},"")),a("ul",{className:"result task-list","data-page-no":n},C.map((c,l)=>a(Kw,{key:c.raw,action:c,pActions:C.slice(0,l)})))))};var Qn=(A,e)=>/${A}/${P(e)},Ug=new Map,wi=new Map,qw=(A,e)=>{Ug.set(A,e);for(let t of wi.get(A)??[])t(e)},rn=()=>{_t!==void 0&&(clearInterval(_t),_t=void 0);let A=scrapbox.Project.name,e=scrapbox.Page.title??"",t=Qn(A,e);if(!Ug.has(t))return;let o=XA().map(g=>g.text);_t=setInterval(()=>{P(e)===P(o[0])&&(qw(t,o),_t!==void 0&&(clearInterval(_t),_t=void 0))},1e3)},_t;scrapbox.on("page:changed",()=>{scrapbox.off("lines:changed",rn);let A=scrapbox.Project.name,e=scrapbox.Page.title??"",t=Qn(A,e);Ug.has(t)&&scrapbox.on("lines:changed",rn)});var B0=(A,e)=>{let t=Qn(A,e),o=Ug.get(t);return o||(Ug.set(t,[]),$A(A,e).then(g=>{if(!g.ok)return[];let r=g.value.lines.map(n=>n.text);qw(t,r),e===scrapbox.Page.title&&!scrapbox.listeners("lines:changed").includes(rn)&&scrapbox.on("lines:changed",rn)})),o??[]},_w=(A,e)=>{let[t,o]=L(B0(A,e));return X(()=>{let g=Qn(A,e),r=wi.get(g)??new Set;return r.add(o),wi.set(g,r),()=>{r.delete(o)}},[A,e]),t};var mi=A=>A.duration===void 0?void 0:qA(Ct(eA(A.start),A.duration)),hi=(A,e)=>{let t=eA(A.start),o=e.getTime(),g=Math.round((o-t.getTime())/(60*1e3));if(g<=0)return[void 0,A];if(A.duration<=g)return[A,void 0];let r={start:A.start,duration:g};return[r,{start:mi(r),duration:A.duration-g}]};var $t=A=>"title"in A,C0=A=>A.record?.duration!==void 0,$w=(A,e)=>$t(A)&&A.status==="done"?A.status:C0(A)?$t(A)&&A.executed?Ee(qA(e),A.executed.start)?"moved":"expired":"done":Ee(mi(A.plan),qA(e))?$t(A)?"expired":"done":"undone";var Am=(A,e)=>{let t=It(A.title.slice(1,-1));if(!A.plan.start)return;let o={name:t?.ok?t.value.name:A.title,plan:{start:qA(A.plan.start),duration:(A.plan.duration??0)/60}};if(A.record.start&&(o.record={start:qA(A.record.start)},A.record.end&&(o.record.duration=Kn(A.record.end,A.record.start))),!t?.ok)return o;let g={...o,title:t.value.raw,project:e};return t.value.freshness&&(g.status=t?.value.freshness.status),be(t.value)||(g.executed=t.value.executed),g},di=(A,e)=>{let t=Nr(A);return t!==void 0?{name:A.name,project:e,title:t,executed:A.executed,plan:A.executed,status:A.freshness?.status}:{name:A.name,plan:A.executed}};var em=(A,e,t)=>{let o=[ui(A,He(e,1),t),ui(A,e,t),ui(A,PA(e,1),t)],g=x(()=>o.flat(),o);return x(()=>{let r=Ns(e),n=Vs(e);return g.flatMap(Q=>{let[,B]=hi(Q.plan,r);if(!B)return[];let[C]=hi(B,n);if(!C)return[];let{plan:i,...I}=Q;return[{plan:C,...I}]}).sort((Q,B)=>Ee(Q.plan.start,B.plan.start)?-1:0)},[g,e])},ui=(A,e,t)=>{let o=_w(A,eg(e)),g=x(()=>I0(o,A),[o,A]);return x(()=>g.length!==0?g:i0(e,t),[g,e,t])},i0=(A,e)=>e.flatMap(t=>{if(t.freshness?.status==="done")return[];if(be(t))return[];if(Co(t)){let g=fr(t,A);return g?[di(g,t.project)]:[]}let o=eA(t.executed.start);return Qe(o,A)?[di(t,t.project)]:[]}),I0=(A,e)=>{let t=[];for(let o of Ot(A)){if(it(o))continue;let g=Am(o,e);g&&t.push(g)}return t};var tm=({event:A})=>{let e=x(()=>A.plan.start.hours+A.plan.start.minutes/60,[A.plan.start]),t=x(()=>--start: ${e}; --duration: ${A.plan.duration};,[e,A.plan.duration]),o=To(),g=x(()=>$w(A,o),[A,o]);return $t(A)?a(on,{className:"event","data-status":g,style:t,title:A.title,project:A.project},A.name):a("div",{className:"event","data-status":g,title:A.name,style:t},A.name)};var om=({project:A,date:e,tasks:t})=>{let o=em(A,e,t),g=x(()=>o.flatMap(Q=>$t(Q)?[${Q.title}]:[]).join( ),[o]),r=To(),n=x(()=>Qe(r,e)?a("div",{className:"indicator",style:--start: ${qs(r)+_s(r)/60}}):a(W,null),[r,e]);return a("div",{className:"timeline",role:"gridcell"},o.map(Q=>a(tm,{key:Q.name,event:Q})),n,a(Lo,{text:g}))};var Mi=({dateList:A,tasks:e,project:t,hasColumn:o})=>a("div",{className:"timeline-wrap",role:"grid"},(o??!0)&&a("div",{className:"column-header",role:"row"},A.map(g=>a("div",{key:fe(g),className:"cell",role:"columnheader"},a("h2",null,lr(g))))),a("div",{className:"week-container",role:"presentation"},a("div",{className:"week",role:"presentation"},a("div",{className:"borders"},[...Array(24).keys()].map(g=>a("div",{key:g,className:"border","data-time":${he(g)}:00}))),A.map(g=>a(om,{key:fe(g),project:t,date:g,tasks:e})))));var fi=(A,e,t)=>{let[o,g]=L(A),r=k(()=>g(e),[e]),n=k(()=>g(t),[e]),Q=k(B=>g(B),[]);return{pageNo:o,next:r,prev:n,jump:Q}};var gm=A=>{let e=yA(new Set),[t,o]=L(A),g=k(()=>{for(let C of e.current)C()},[]),r=k(()=>{o(!0),g()},[]),n=k(()=>o(!1),[]),Q=k(()=>o(C=>(C||g(),!C)),[]),B=k(C=>(e.current.add(C),()=>e.current.delete(C)),[]);return{isOpen:t,open:r,close:n,toggle:Q,onOpen:B}};var nm=A=>{let e=document.createElement("div");e.dataset.userscriptName="takker-scheduler/weekly-scheduler";let t=e.attachShadow({mode:"open"});return document.body.append(e),new Promise(o=>NA(a(s0,{getController:o,projects:A,mainProject:A[0]}),t))},Bm=(A,e)=>{let t=document.createElement("div");t.dataset.userscriptName="takker-scheduler/timeline-wedget";let o=t.attachShadow({mode:"open"});return document.body.append(t),new Promise(g=>NA(a(E0,{getController:g,projects:A,mainProject:A[0],open:e}),o))},rm=!1,s0=({getController:A,projects:e,mainProject:t})=>{let{tasks:o,load:g,loading:r}=Og(e),{pageNo:n,next:Q,prev:B,jump:C}=fi(xg(new Date),a0,c0),i=x(()=>{let D=tn(n);return[0,1,2,3,4,5,6].map(m=>PA(D,m))},[n]),{open:I,close:s,Dialog:E,isOpen:c}=en();rm||=c,Zg(A,{open:I,close:s,isOpen:c}),gn("page:changed",s);let l=k(()=>C(xg(new Date)),[C]);return a(W,null,a("style",null,Fg),a(E,null,a("div",{className:"controller"},a("span",null,n),a("button",{className:"navi left",onClick:B},""),a("button",{className:"navi right",onClick:Q},""),a("button",{className:"today",onClick:l},""),a(Rg,{loading:r,onClick:g}),a("button",{className:"close",onClick:s},"")),rm&&a("div",{ref:Cm,className:"result scheduler","data-page-no":n},a(Mi,{dateList:i,tasks:o,project:t}))))},Qm=!1,E0=({projects:A,mainProject:e,getController:t,open:o})=>{let{tasks:g,load:r,loading:n}=Og(A),{pageNo:Q,next:B,prev:C,jump:i}=fi(new Date,l0,D0),I=x(()=>[Q],[Q]),s=k(()=>i(new Date),[i]),{isOpen:E,open:c,close:l}=gm(o);return Qm||=E,Zg(t,{open:c,close:l,isOpen:E}),a(W,null,a("style",null,Fg),Qm&&a("div",{className:wedget${E?" open":""},ref:Cm},a("div",{className:"controller"},a("span",null,fe(Q)),a("button",{className:"navi left",onClick:C},""),a("button",{className:"navi right",onClick:B},""),a("button",{className:"today",onClick:s},""),a(Rg,{loading:n,onClick:r})),a(Mi,{dateList:I,tasks:g,project:e,hasColumn:!1})))},a0=A=>xg(ks(tn(A),1)),c0=A=>xg(iE(tn(A),1)),l0=A=>PA(A,1),D0=A=>He(A,1),Cm=A=>{let e=A?.getElementsByClassName?.("indicator")?.[0];if(!e)return;let t=globalThis.scrollY;e.scrollIntoView({block:"center"}),globalThis.scroll(0,t)};aI({project:"takker-dist"});ss().then(A=>{scrapbox.PageMenu.addItem({title:"Fulltext Search",onClick:()=>{A.toggle()}})});var p0="https://scrapbox.io/files/666ac977264f7d001ce9d125.wasm",w0="/api/code/takker-dist/for-any-project-min/esbuild-worker.js";(async()=>{let A=new Request(p0),e=await ro(A);e||(e=await fetch(A),await Cr(A,e)),await gD(await WebAssembly.compileStreaming(e),w0)})();(async()=>{let A=[scrapbox.Project.name,"takker","takker-memex","takker-books","takker-private","villagepump","hub","arpla","unnamedcamp","unnamed-project","nishio","enchi","rashitamemo","motoso","shokai","masui","rakusai","yuiseki","akiroom","c4j","miyamonz","mrsekut-p","masuilab","kidaaam-92022284","nwtgck","juneboku","marshmallow-rm","sushitecture","sno2wman","inteltank","issac-37765679","blu3mo","yosider","Mijinko","Mijinko-other","scrapbox-drinkup","nota-techconf","customize","scrapboxlab","scrasobox","programming-notes","tus-alpine","tus-alpine-private","guiland"],e=await PD({projects:A,mark:{...Object.fromEntries([["takker","takker"],["takker-memex","takker"],["takker-books","takker-books"],["takker-private","takker-private"],["nishio","nishio"],["rashitamemo","rashita"],["enchi","雑談_2022-04-12~"],["rakusai","rakusai"],["masui","概要"],["shokai","shokai"],["yuiseki","yuiseki"],["akiroom","はじめに"],["inteltank","sawachin"],["motoso","もとそのもと"],["villagepump","井戸端"],["hub","scrapbox.io%2Fhub_について"],["masuilab","増井研に入ったらまずやること"],["marshmallow-rm","読書猿マシュマロ全質問回答"],["miyamonz","miyamonz"],["mrsekut-p","mrsekut"],["kidaaam-92022284","kidooom"],["c4j","Code_for_Japan"],["suto3","suto3"],["blu3mo","blu3mo"],["nwtgck","nwtgck"],["juneboku","juneboku"],["jigsaw","jgs"],["sno2wman","SnO2WMaN"],["sushitecture","hashrock"],["unnamedcamp","知を営む"],["unnamed-project","unnamed-project"],["issac-37765679","cFQ2f7LRuLYP"],["blu3mo","blu3mo"],["yosider","yosider"],["Mijinko","Mijinko_SD"],["Mijinko-other","Mijinko_SD"],["customize","みんなのカスタマイズ"],["scrapboxlab","入会手続き"],["scrasobox","Scrapboxとあそぶ"],["programming-notes","参加する"],["guiland","概要と参加方法"]].map(([g,r])=>[g,https://scrapbox.io/api/pages/${g}/${r}/icon])),"NDLSH-SB":"📚","scrapbox-drinkup":"https://scrapbox.io/assets/img/page-icon/scrapbox_beaver.png","nota-techconf":"https://i.gyazo.com/727f42bbd9e2534d99d70e6ea90705b3.jpg","plurality-japanese":"⿻"},enableSelfProjectOnStart:!0}),t=g=>{g.preventDefault(),g.stopPropagation()},o=()=>document.querySelector(".line .popup-menu")!==null;sB.bind({"<Tab>":g=>{o()||e.selectNext?.({cyclic:!0})&&t(g)},"<S-Tab>":g=>{o()||e.selectPrev?.({cyclic:!0})&&t(g)},"<Enter>":g=>{o()||e.confirm?.()&&t(g)},"<Esc>":g=>{o()||e.cancel?.()&&t(g)}})})();$D({previewers:[{when:/(?:^|\.)svg$/,preview:Ap},{when:/(?:^|\.)glsl$/,preview:jp},{when:/(?:^|\.)(?:plantuml|puml|pu)$/,preview:Jp},{when:/(?:^|\.)tikz\(tex\)$/,preview:Rp("/api/code/takker-dist/for-any-project-min/tex-worker.js","https://scrapbox.io/files/65d1645c19cd8e002433c3df")}]});(async()=>{let{toggle:A}=await Sp([]);scrapbox.PageMenu.addItem({title:"履歴スライダー",image:"https://1.bp.blogspot.com/-UZtkSEX0wh4/U5l5_dNcEsI/AAAAAAAAhWs/UzJGVzyiX8Y/s800/kaichu_dokei.png",onClick:A})})();yw("takker",["takker","振り返り(takker-workflow@0.0.1)のtemplate","txt"],["takker","1週間の振り返り(takker-workflow@0.0.1)のtemplate","txt"]);Vt()&&(we({display:{type:"caret-left"},onClick:({cursor:A,selection:e})=>{A.focus(),e.getSelectedText()===""?rr():er()}}),we({display:{type:"caret-right"},onClick:({cursor:A,selection:e})=>{A.focus(),e.getSelectedText()===""?gr():Ar()}}),we({display:{type:"caret-up"},onClick:({cursor:A,selection:e})=>{A.focus(),e.getSelectedText()===""?Qr():tr()}}),we({display:{type:"caret-down"},onClick:({cursor:A,selection:e})=>{A.focus(),e.getSelectedText()===""?nr():or()}}),we({display:{type:"copy"},onClick:async({cursor:A,selection:e})=>await jw(A,e)}),we({display:{type:"cut"},onClick:async({cursor:A,selection:e})=>await Ow(A,e)}),we({display:{type:"clipboard"},onClick:async({cursor:A})=>await Fw(A)}),we({display:{type:"undo"},onClick:()=>es()}),we({display:{type:"redo"},onClick:()=>ts()}),we({display:({cursor:A})=>A.getVisible()&&A.hasFocus&&A.visiblePopupMenu?{type:["i-cursor","slash"]}:{type:"i-cursor"},onClick:({cursor:A})=>Jw(A)}));if(Vt()&&scrapbox.Project.name!=="takker-memex"){let A="task";scrapbox.PageMenu.addMenu({title:A,image:"https://img.icons8.com/ios/180/FFFFFF/todo-list--v2.png"}),scrapbox.PageMenu(A).addItem({title:"Book starting",image:"https://img.icons8.com/ios/180/FFFFFF/plus-1day.png",onClick:$o}),scrapbox.PageMenu(A).addItem({title:"Transport",onClick:()=>tg({from:{project:scrapbox.Project.name,title:scrapbox.Page.title},to:"takker-memex"})})}if(Vt()){let A="New Page",e=[xt,Rt,Zt];scrapbox.PageMenu.addMenu({title:A,image:"https://img.icons8.com/ios/180/FFFFFF/cut-paper.png"}),scrapbox.PageMenu(A).addItem({title:"New Page",onClick:()=>{let t=window.prompt("Create a new page at",scrapbox.Project.name);t&&ve({project:t,mode:"noopen",hooks:e})?.()}}),scrapbox.PageMenu(A).addItem({title:"New Page and Open",onClick:()=>{let t=window.prompt("Create a new page at",scrapbox.Project.name);t&&ve({project:t,mode:"self",hooks:e})?.()}})}scrapbox.PageMenu.addMenu({title:"Add to inbox",image:"https://img.icons8.com/ios/180/FFFFFF/inbox.png",onClick:()=>Tw("takker-memex","メモ帳")});(async()=>{let A="next-action",e=head styledata-userscript-name="${A}";document.querySelector(e)?.remove?.();let t=document.createElement("style");t.dataset.userscriptName=A,t.textContent= position: absolute;
font: 900 20px/46px "Font Awesome 5 Free";
}
button#${A}.tool-btn::before {
content: "\\f0ae";
}
button#scheduler.tool-btn::before {
content: "\\f073";
font-weight: 400;
}
opacity: 0;
}`,document.head.append(t);let o="takker-memex","takker",{open:g}=await Vw(o);scrapbox.PageMenu.addMenu({title:A,image:"/assets/img/favicon/apple-touch-icon.png",onClick:g});let r=await nm(o);scrapbox.PageMenu.addMenu({title:"scheduler",image:"/assets/img/favicon/apple-touch-icon.png",onClick:r.open});{let n="takker-scheduler/wedget",Q=JSON.parse(localStorage.getItem(n)??"{}"),B=scrapbox.Project.name;QB??=!1;let C=await Bm(o,QB),i=()=>{QB=!C.isOpen,C.isOpen?C.close():C.open(),localStorage.setItem(n,JSON.stringify(Q))};Vt()?we({display:{type:"calendar"},onClick:i}):scrapbox.PageMenu.addItem({title:"toggle wedget",onClick:i})}})();export{we as addButton,YA as insertText,sB as scrapBindings}; /** @license
* esbuild-wasm@v0.21.5
*
* MIT License
*
* Copyright (c) 2020 Evan Wallace
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtd2Vic29ja2V0LzAuMi40L3R5cGVzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXdlYnNvY2tldC8wLjIuNC9zb2NrZXQudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtd2Vic29ja2V0LzAuMi40L21vZC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvd2Vic29ja2V0L3NvY2tldC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvb25wLzAuMC4xL21vZC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3QvdXRpbC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2lzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvcmVzdC9lcnJvci50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3QvcHJvZmlsZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3QvYXV0aC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3QvcHJvamVjdC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvd2Vic29ja2V0L2lkLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvYnJvd3Nlci93ZWJzb2NrZXQvZGlmZlRvQ2hhbmdlcy50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9ibG9jay9UaXRsZS50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9ibG9jay9Db2RlQmxvY2sudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svbm9kZS9jcmVhdG9yLnRzIiwgIi4uL2VzbWQvbnBtL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vQHByb2dmYXkrc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXIvc3JjL2Jsb2NrL25vZGUvUGxhaW5Ob2RlLnRzIiwgIi4uL2VzbWQvbnBtL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vQHByb2dmYXkrc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXIvc3JjL2Jsb2NrL25vZGUvUXVvdGVOb2RlLnRzIiwgIi4uL2VzbWQvbnBtL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vQHByb2dmYXkrc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXIvc3JjL2Jsb2NrL25vZGUvSGVscGZlZWxOb2RlLnRzIiwgIi4uL2VzbWQvbnBtL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vQHByb2dmYXkrc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXIvc3JjL2Jsb2NrL25vZGUvU3Ryb25nSW1hZ2VOb2RlLnRzIiwgIi4uL2VzbWQvbnBtL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vQHByb2dmYXkrc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXIvc3JjL2Jsb2NrL25vZGUvSWNvbk5vZGUudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svbm9kZS9TdHJvbmdJY29uTm9kZS50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9ibG9jay9ub2RlL1N0cm9uZ05vZGUudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svbm9kZS9Gb3JtdWxhTm9kZS50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9ibG9jay9ub2RlL0RlY29yYXRpb25Ob2RlLnRzIiwgIi4uL2VzbWQvbnBtL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vQHByb2dmYXkrc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXIvc3JjL2Jsb2NrL25vZGUvQ29kZU5vZGUudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svbm9kZS9Db21tYW5kTGluZU5vZGUudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svbm9kZS9CbGFua05vZGUudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svbm9kZS9JbWFnZU5vZGUudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svbm9kZS9FeHRlcm5hbExpbmtOb2RlLnRzIiwgIi4uL2VzbWQvbnBtL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vQHByb2dmYXkrc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXIvc3JjL2Jsb2NrL25vZGUvR29vZ2xlTWFwTm9kZS50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9ibG9jay9ub2RlL0ludGVybmFsTGlua05vZGUudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svbm9kZS9IYXNoVGFnTm9kZS50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9ibG9jay9ub2RlL051bWJlckxpc3ROb2RlLnRzIiwgIi4uL2VzbWQvbnBtL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vQHByb2dmYXkrc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXIvc3JjL2Jsb2NrL25vZGUvaW5kZXgudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svVGFibGUudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svTGluZS50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9ibG9jay9pbmRleC50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9ibG9jay9Sb3cudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svUGFjay50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9wYXJzZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3RpdGxlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvcGFyc2VyL3lvdXR1YmUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL3dlYnNvY2tldC9maW5kTWV0YWRhdGEudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL3dlYnNvY2tldC9pc1NhbWVBcnJheS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvd2Vic29ja2V0L21ha2VDaGFuZ2VzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvcmVzdC9wYWdlcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvd2Vic29ja2V0L3B1bGwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9zbGVlcC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvd2Vic29ja2V0L3B1c2gudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL3dlYnNvY2tldC9zdWdnZXN0VW5EdXBUaXRsZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvd2Vic29ja2V0L3BhdGNoLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvYnJvd3Nlci93ZWJzb2NrZXQvZGVsZXRlUGFnZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3QvdGFibGUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9yZXN0L3JlcGxhY2VMaW5rcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3QvbGluay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3Qvc2VhcmNoLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvcmVzdC9nZXRXZWJQYWdlVGl0bGUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9yZXN0L2dldFR3ZWV0SW5mby50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3QvZ2V0R3lhem9Ub2tlbi50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3QvZ2V0Q29kZUJsb2NrLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE2MC4wL2VuY29kaW5nL2hleC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xNjAuMC9oYXNoL21kNS50cyM9IiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvcmVzdC91cGxvYWRUb0dDUy50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9zY3JhcGJveC13YXRjaGxpc3Qtc3luYy9zY3JpcHQudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvT3Blbl9HeWF6b19wYWdlX21lbnUvc2NyaXB0LmpzIiwgIi4uL2VzbWQvbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuMjMuMS9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jb25zdGFudHMuanMiLCAiLi4vZXNtZC9ucG0vcHJlYWN0QDEwLjIzLjEvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL3V0aWwuanMiLCAiLi4vZXNtZC9ucG0vcHJlYWN0QDEwLjIzLjEvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL29wdGlvbnMuanMiLCAiLi4vZXNtZC9ucG0vcHJlYWN0QDEwLjIzLjEvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2NyZWF0ZS1lbGVtZW50LmpzIiwgIi4uL2VzbWQvbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuMjMuMS9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jb21wb25lbnQuanMiLCAiLi4vZXNtZC9ucG0vcHJlYWN0QDEwLjIzLjEvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2RpZmYvcHJvcHMuanMiLCAiLi4vZXNtZC9ucG0vcHJlYWN0QDEwLjIzLjEvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2NyZWF0ZS1jb250ZXh0LmpzIiwgIi4uL2VzbWQvbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuMjMuMS9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9kaWZmL2NoaWxkcmVuLmpzIiwgIi4uL2VzbWQvbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuMjMuMS9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9kaWZmL2luZGV4LmpzIiwgIi4uL2VzbWQvbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuMjMuMS9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9yZW5kZXIuanMiLCAiLi4vZXNtZC9ucG0vcHJlYWN0QDEwLjIzLjEvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2Nsb25lLWVsZW1lbnQuanMiLCAiLi4vZXNtZC9ucG0vcHJlYWN0QDEwLjIzLjEvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2RpZmYvY2F0Y2gtZXJyb3IuanMiLCAiLi4vZXNtZC9ucG0vcHJlYWN0QDEwLjIzLjEvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy9wcmVhY3QvaG9va3Mvc3JjL2luZGV4LmpzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvZW5zdXJlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvYnJvd3Nlci9kb20vZ2V0Q2FjaGVkTGluZXMudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL2RvbS9lbnN1cmUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL2RvbS9kb20udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL2RvbS90YWtlSW50ZXJuYWxMaW5lcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3RleHQudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL2RvbS9ub2RlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvYnJvd3Nlci9kb20vcHJlc3MudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL2RvbS9jbGljay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL2NhcmV0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvYnJvd3Nlci9kb20vaXNIZWlnaHRWaWV3YWJsZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3JhbmdlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvYnJvd3Nlci9kb20vbW90aW9uLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvYnJvd3Nlci9kb20vZWRpdC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL3N0YXR1c0Jhci50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL3B1c2hQYWdlVHJhbnNpdGlvbi50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL29wZW4udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL2RvbS9jYWNoZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL3N0b3Jlcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL2N1cnNvci50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL3NlbGVjdGlvbi50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL19pbnRlcm5hbC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL3RleHRJbnB1dEV2ZW50TGlzdGVuZXIudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LWluY3JlbWVudGFsLWZ1bGx0ZXh0LXNlYXJjaC1mb3JtLzAuMS4wL2VzY2FwZVJlZ0V4cC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtaW5jcmVtZW50YWwtZnVsbHRleHQtc2VhcmNoLWZvcm0vMC4xLjAvQ2FyZC50c3giLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LWluY3JlbWVudGFsLWZ1bGx0ZXh0LXNlYXJjaC1mb3JtLzAuMS4wL3VzZU9wZW4udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LWluY3JlbWVudGFsLWZ1bGx0ZXh0LXNlYXJjaC1mb3JtLzAuMS4wL3VzZVNlYXJjaC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtaW5jcmVtZW50YWwtZnVsbHRleHQtc2VhcmNoLWZvcm0vMC4xLjAvQ1NTLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtaW5jcmVtZW50YWwtZnVsbHRleHQtc2VhcmNoLWZvcm0vMC4xLjAvQXBwLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtaW5jcmVtZW50YWwtZnVsbHRleHQtc2VhcmNoLWZvcm0vMC4xLjAvbW9kLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdmltLWxpa2Uta2V5LW5vdGF0aW9uLzAuMS4xL21vZC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvZGVidWctanMvMC4xLjAvbW9kLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJpbmRpbmdzLzAuMy4yL21vZC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3BhcnNlci92aW1lby50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3BhcnNlci9zcG90aWZ5LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvcGFyc2VyL2FuY2hvci1mbS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3BhcnNlQWJzb2x1dGVMaW5rLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9jdXN0b20tbmV3LXBhZ2UvMC41LjAvc2VsZWN0aW9uLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9jdXN0b20tbmV3LXBhZ2UvMC41LjAvaG9vay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvY3VzdG9tLW5ldy1wYWdlLzAuNS4wL21vZC50cyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL2RlZmF1bHRPcHRpb25zLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N0YXJ0T2ZXZWVrLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zdGFydE9mRGF5Lm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lYWNoRGF5T2ZJbnRlcnZhbC5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9pc0RhdGUubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2lzVmFsaWQubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvX2xpYi9hZGRMZWFkaW5nWmVyb3MubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvX2xpYi9mb3JtYXQvbGlnaHRGb3JtYXR0ZXJzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2xpZ2h0Rm9ybWF0Lm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb25zdHJ1Y3RGcm9tLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2FkZERheXMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkRGF5cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zdWJEYXlzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb25zdHJ1Y3RGcm9tLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2FkZE1pbGxpc2Vjb25kcy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGRTZWNvbmRzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb25zdHJ1Y3RGcm9tLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2FkZERheXMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkV2Vla3MubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldERhdGUubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvY29uc3RhbnRzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL2RlZmF1bHRPcHRpb25zLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N0YXJ0T2ZXZWVrLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZ2V0V2Vla1llYXIubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3RhcnRPZldlZWtZZWFyLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldFdlZWsubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldE1vbnRoLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9nZXRZZWFyLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zdGFydE9mRGF5Lm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2lzU2FtZURheS5tanMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvZ2V0RWFjaExhdGVzdERhdGUvbW9kLnRzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkRGF5cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGRNb250aHMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb25zdHJ1Y3RGcm9tLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2FkZE1pbGxpc2Vjb25kcy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb25zdGFudHMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkSG91cnMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkTWlsbGlzZWNvbmRzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0YW50cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGRNaW51dGVzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb21wYXJlQXNjLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0YW50cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy90b0RhdGUubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3RhcnRPZkRheS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9kaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL2dldFJvdW5kaW5nTWV0aG9kLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0YW50cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy90b0RhdGUubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2RpZmZlcmVuY2VJbk1pbnV0ZXMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkRGF5cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGRXZWVrcy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL2RlZmF1bHRPcHRpb25zLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N0YXJ0T2ZXZWVrLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VhY2hXZWVrT2ZJbnRlcnZhbC5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy90b0RhdGUubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZW5kT2ZEYXkubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldEhvdXJzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9nZXRNaW51dGVzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL19saWIvZGVmYXVsdE9wdGlvbnMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3RhcnRPZldlZWsubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZ2V0V2Vla1llYXIubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkRGF5cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGRNb250aHMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0YW50cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zdGFydE9mRGF5Lm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZGlmZmVyZW5jZUluRGF5cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL2dldFJvdW5kaW5nTWV0aG9kLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2RpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9kaWZmZXJlbmNlSW5Ib3Vycy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9kaWZmZXJlbmNlSW5NaW51dGVzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbXBhcmVBc2MubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZW5kT2ZEYXkubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZW5kT2ZNb250aC5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9pc0xhc3REYXlPZk1vbnRoLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2RpZmZlcmVuY2VJbk1vbnRocy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9kaWZmZXJlbmNlSW5TZWNvbmRzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2RpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZGlmZmVyZW5jZUluWWVhcnMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvaW50ZXJ2YWxUb0R1cmF0aW9uLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9pc0FmdGVyLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2lzRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy90b0RhdGUubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvaXNWYWxpZC5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb25zdHJ1Y3RGcm9tLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9nZXREYXlzSW5Nb250aC5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zZXRNb250aC5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zZXQubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvY29uc3RhbnRzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL2RlZmF1bHRPcHRpb25zLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N0YXJ0T2ZXZWVrLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZ2V0V2Vla1llYXIubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3RhcnRPZldlZWtZZWFyLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldFdlZWsubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc2V0V2Vlay5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy90b0RhdGUubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvY29uc3RydWN0RnJvbS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGRNaWxsaXNlY29uZHMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvY29uc3RhbnRzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2FkZE1pbnV0ZXMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3ViTWludXRlcy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy90b0RhdGUubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvY29uc3RydWN0RnJvbS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGREYXlzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2FkZFdlZWtzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N1YldlZWtzLm1qcyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvdXRpbHMudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3Rhc2sudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL2NvbW1hbmRzL2FkZFRhc2sudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL2NvbW1hbmRzL3N0YXJ0VGFzay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvY29tbWFuZHMvZW5kVGFzay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvY29tbWFuZHMvcG9zdGVyaW9yaUVuZFRhc2sudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL2NvbW1hbmRzL2dldExpbmVSYW5nZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvY2FsY1N0YXJ0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy9wYXJzZVNwZWNpZmllci50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvY29tbWFuZHMvY3JlYXRlVGFzay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvY29tbWFuZHMvbW9kaWZ5VGFza3MudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL2NvbW1hbmRzL3dhbGtEYXkudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL2NvbW1hbmRzL21vdmVUb2RheS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvZGlhcnkudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL2NvbW1hbmRzL2Zvcm1hdC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvcHVzaFRhc2tzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy9jb21tYW5kcy90cmFuc3BvcnQudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3plcm8udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL2hvd20vbG9jYWxEYXRlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy9ob3dtL3JlY3VycmVuY2UudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL2hvd20vc3RhdHVzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy9ob3dtL3BhcnNlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy9ob3dtL3RvVGFza0xpbmUudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvZm9yLWN1c3RvbS1uZXctcGFnZS9tb2QudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvdGFra2VyOTklMkZTY3JhcEJpbmRpbmdzLXNldHRpbmdzL3Rhc2stY29tbW9uLnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3Rha2tlcjk5JTJGU2NyYXBCaW5kaW5ncy1zZXR0aW5ncy90YXNrLnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3Rha2tlcjk5JTJGU2NyYXBCaW5kaW5ncy1zZXR0aW5ncy9jb25maWcudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvZm9yLWFueS1wcm9qZWN0L2JpbmRpbmdzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS93YXRjaExpc3QudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LWthdGV4LXByZXZpZXdlci8wLjMuMi9kZXBzL2thdGV4LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1rYXRleC1wcmV2aWV3ZXIvMC4zLjIvdXNlS2FUZVgudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlLzAuOS41L3Rocm90dGxlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9jYWNoZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvZXZlbnRFbWl0dGVyLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9kZWJ1Zy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvdXNlUHJvamVjdC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvZGVwcy9zY3JhcGJveC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvdXNlVGhlbWUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlLzAuOS41L3N0YXlIb3ZlcmluZy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvcG9zaXRpb24udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlLzAuOS41L0NhcmQudHN4IiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9pZC50cyIsICIuLi9lc21kL25wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDEwLjEuMS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL3V0aWxzL2Vudi50cyIsICIuLi9lc21kL25wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDEwLjEuMS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL3V0aWxzL2Vycm9ycy50cyIsICIuLi9lc21kL25wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDEwLjEuMS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL3V0aWxzL2NvbW1vbi50cyIsICIuLi9lc21kL25wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDEwLjEuMS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL3V0aWxzL3BsdWdpbnMudHMiLCAiLi4vZXNtZC9ucG0vaW1tZXJAMTAuMS4xL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy9jb3JlL3Njb3BlLnRzIiwgIi4uL2VzbWQvbnBtL2ltbWVyQDEwLjEuMS9ub2RlX21vZHVsZXMvLnBucG0vaW1tZXJAMTAuMS4xL25vZGVfbW9kdWxlcy9pbW1lci9zcmMvY29yZS9maW5hbGl6ZS50cyIsICIuLi9lc21kL25wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDEwLjEuMS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL2NvcmUvcHJveHkudHMiLCAiLi4vZXNtZC9ucG0vaW1tZXJAMTAuMS4xL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy9jb3JlL2ltbWVyQ2xhc3MudHMiLCAiLi4vZXNtZC9ucG0vaW1tZXJAMTAuMS4xL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy9jb3JlL2N1cnJlbnQudHMiLCAiLi4vZXNtZC9ucG0vaW1tZXJAMTAuMS4xL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy9wbHVnaW5zL3BhdGNoZXMudHMiLCAiLi4vZXNtZC9ucG0vaW1tZXJAMTAuMS4xL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy9wbHVnaW5zL21hcHNldC50cyIsICIuLi9lc21kL25wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDEwLjEuMS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL2ltbWVyLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9kZXBzL2ltbWVyLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9zdG9yYWdlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9jb252ZXJ0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9idWJibGUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlLzAuOS41L3VzZUJ1YmJsZURhdGEudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlLzAuOS41L0NhcmRMaXN0LnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvcGFyc2VMaW5rLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9oYXNMaW5rLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9QYWdlLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvVGV4dEJ1YmJsZS50c3giLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlLzAuOS41L0J1YmJsZS50c3giLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlLzAuOS41L2RldGVjdFVSTC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvVXNlckNTUy50c3giLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlLzAuOS41L2FwcC5taW4uY3NzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS91c2VCdWJibGVzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS91c2VFdmVudExpc3RlbmVyLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9pcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvQXBwLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvbW9kLnRzeCIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9mb3ItYW55LXByb2plY3Qvc2NyYXBCdWJibGUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwSnVweXRlci92MS43LjIvY29kZVRpdGxlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL2NvZGVGaWxlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9lc2J1aWxkLXdhc20tbm8tYmxvYi8wLjIxLjUvc3RkaW9fcHJvdG9jb2wudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L2VzYnVpbGQtd2FzbS1uby1ibG9iLzAuMjEuNS92ZXJzaW9uLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9lc2J1aWxkLXdhc20tbm8tYmxvYi8wLjIxLjUvY29tbW9uLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9lc2J1aWxkLXdhc20tbm8tYmxvYi8wLjIxLjUvbW9kLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL2RlcHMvZGVuby1tb2NrLmpzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIxMy4wL3BhdGgvX2NvbW1vbi9hc3NlcnRfcGF0aC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9wYXRoL3dpbmRvd3MvX3V0aWwudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvcGF0aC9fY29tbW9uL2Zyb21fZmlsZV91cmwudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvcGF0aC93aW5kb3dzL2Zyb21fZmlsZV91cmwudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvcGF0aC93aW5kb3dzL2lzX2Fic29sdXRlLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIxMy4wL2Fzc2VydC9hc3NlcnRpb25fZXJyb3IudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvYXNzZXJ0L2Fzc2VydC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9wYXRoL19jb21tb24vdG9fZmlsZV91cmwudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvcGF0aC93aW5kb3dzL3RvX2ZpbGVfdXJsLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIxMy4wL3BhdGgvcG9zaXgvX3V0aWwudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvcGF0aC9wb3NpeC9mcm9tX2ZpbGVfdXJsLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIxMy4wL3BhdGgvcG9zaXgvaXNfYWJzb2x1dGUudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvcGF0aC9wb3NpeC90b19maWxlX3VybC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9wYXRoL19vcy50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9wYXRoL2Zyb21fZmlsZV91cmwudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvcGF0aC90b19maWxlX3VybC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9mcy9lbnN1cmVfc3ltbGluay50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9mcy9leHBhbmRfZ2xvYi50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9mcy9tb3ZlLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIxMy4wL2ZzL2NvcHkudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvZnMvZW9sLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIxMy4wL2pzb25jL21vZC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9qc29uYy9wYXJzZS50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9lbmNvZGluZy9fdXRpbC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9lbmNvZGluZy9iYXNlMzIudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQveC9pbXBvcnRtYXBAMC4yLjEvX3V0aWwudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQveC9pbXBvcnRtYXBAMC4yLjEvbW9kLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE0MC4wL191dGlsL29zLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE0MC4wL3BhdGgvd2luMzIudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTQwLjAvcGF0aC9fdXRpbC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xNDAuMC9fdXRpbC9hc3NlcnQudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTQwLjAvcGF0aC9wb3NpeC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xNDAuMC9wYXRoL2dsb2IudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTQwLjAvcGF0aC9tb2QudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTQwLjAvZm10L2NvbG9ycy50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xNDAuMC9pby9idWZmZXIudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTQwLjAvc3RyZWFtcy9jb252ZXJzaW9uLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19jYWNoZUAwLjYuMi9saWIvZGVub19jYWNoZV9kaXIuZ2VuZXJhdGVkLmpzIiwgImh0dHBzOi8vZGVuby5sYW5kL3gvZXNidWlsZF9kZW5vX2xvYWRlckAwLjkuMC9zcmMvc2hhcmVkLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3gvZXNidWlsZF9kZW5vX2xvYWRlckAwLjkuMC9zcmMvcGx1Z2luX2Rlbm9fcmVzb2x2ZXIudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQveC9lc2J1aWxkX2Rlbm9fbG9hZGVyQDAuOS4wL3NyYy9sb2FkZXJfcG9ydGFibGUudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQveC9lc2J1aWxkX2Rlbm9fbG9hZGVyQDAuOS4wL3NyYy9wbHVnaW5fZGVub19sb2FkZXIudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwSnVweXRlci92MS43LjIvZGVwcy9lc2J1aWxkX2Rlbm9fbG9hZGVyLnRzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vaW50ZXJuYWwvZXJyb3JfbWVzc2FnZS5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9pbnRlcm5hbC9lcnJvcl9tZXNzYWdlLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L3Jlc3VsdC5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9hbmRfdGhlbi5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9hbmRfdGhlbl9hc3luYy5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9mbGF0dGVuLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L2Zyb21fcHJvbWlzZV9zZXR0bGVkX3Jlc3VsdC5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9pbnNwZWN0LmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L21hcC5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9tYXBfYXN5bmMuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9wbGFpbl9yZXN1bHQvbWFwX2Vyci5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9tYXBfZXJyX2FzeW5jLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L21hcF9vci5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9tYXBfb3JfYXN5bmMuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9wbGFpbl9yZXN1bHQvbWFwX29yX2Vsc2UuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9wbGFpbl9yZXN1bHQvbWFwX29yX2Vsc2VfYXN5bmMuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9wbGFpbl9yZXN1bHQvb3JfZWxzZS5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9vcl9lbHNlX2FzeW5jLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L2ludGVybmFsL3Vud3JhcF9lcnJfb3IuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9wbGFpbl9yZXN1bHQvdW53cmFwX29yLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L3RvX251bGxhYmxlLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L3RvX3VuZGVmaW5hYmxlLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vbnVsbGFibGUvbnVsbGFibGUuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS91bmRlZmluYWJsZS91bmRlZmluYWJsZS5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC90cmFuc3Bvc2UuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9pbnRlcm5hbC9hc3NlcnQuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9wbGFpbl9yZXN1bHQvaW50ZXJuYWwvdW5rbm93bl9jYXVzYWxfY2Fycmllci5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC90cnlfY2F0Y2guanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9wbGFpbl9yZXN1bHQvdHJ5X2NhdGNoX2FzeW5jLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L3Vud3JhcF9vcl9lbHNlLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L3Vud3JhcF9vcl9lbHNlX2FzeW5jLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L2ludGVybmFsL2NhdXNhbF9jYXJyaWVyLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L3Vud3JhcF9vcl90aHJvdy5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL2ludGVybmFsL2Vycm9yX21lc3NhZ2UuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9tYXliZS9pbnRlcm5hbC9lcnJvcl9tZXNzYWdlLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vbWF5YmUvbWF5YmUuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9tYXliZS9hbmRfdGhlbi5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL2FuZF90aGVuX2FzeW5jLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vbWF5YmUvaW5zcGVjdC5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL21hcC5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL21hcF9hc3luYy5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL21hcF9vci5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL21hcF9vcl9hc3luYy5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL21hcF9vcl9lbHNlLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vbWF5YmUvbWFwX29yX2Vsc2VfYXN5bmMuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9wbGFpbl9yZXN1bHQvcmVzdWx0LmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vbWF5YmUvb2tfb3IuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9tYXliZS9va19vcl9lbHNlLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vbWF5YmUvb2tfb3JfZWxzZV9hc3luYy5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL29yX2Vsc2UuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9tYXliZS9vcl9lbHNlX2FzeW5jLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vbWF5YmUvdG9fbnVsbGFibGUuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9tYXliZS90b19wbGFpbl9yZXN1bHQuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9tYXliZS90b191bmRlZmluYWJsZS5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL3Vud3JhcF9vci5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL3Vud3JhcF9vcl9lbHNlLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vbWF5YmUvdW53cmFwX29yX2Vsc2VfYXN5bmMuanMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwSnVweXRlci92MS43LjIvaXNBbGxvd2VkQ29ubmVjdFNyYy50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9wYXRoL19jb21tb24vYXNzZXJ0X3BhdGgudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvcGF0aC9fY29tbW9uL2Jhc2VuYW1lLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3BhdGgvX2NvbW1vbi9zdHJpcF90cmFpbGluZ19zZXBhcmF0b3JzLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3BhdGgvd2luZG93cy9fdXRpbC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9wYXRoL19jb21tb24vZnJvbV9maWxlX3VybC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9wYXRoL3dpbmRvd3MvZnJvbV9maWxlX3VybC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9wYXRoL3dpbmRvd3MvaXNfYWJzb2x1dGUudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvcGF0aC9fY29tbW9uL3RvX2ZpbGVfdXJsLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3BhdGgvd2luZG93cy90b19maWxlX3VybC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9wYXRoL3Bvc2l4L191dGlsLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3BhdGgvcG9zaXgvYmFzZW5hbWUudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvcGF0aC9wb3NpeC9leHRuYW1lLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3BhdGgvcG9zaXgvZnJvbV9maWxlX3VybC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9wYXRoL3Bvc2l4L2lzX2Fic29sdXRlLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3BhdGgvcG9zaXgvdG9fZmlsZV91cmwudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvcGF0aC9fb3MudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvcGF0aC9mcm9tX2ZpbGVfdXJsLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3BhdGgvdG9fZmlsZV91cmwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwSnVweXRlci92MS43LjIvZXNidWlsZFJlc29sdXRpb24udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwSnVweXRlci92MS43LjIvZXh0cmFjdFNvdXJjZU1hcFVSTC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC91cmwvX3N0cmlwLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3VybC9iYXNlbmFtZS50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC91cmwvZXh0bmFtZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBKdXB5dGVyL3YxLjcuMi9sb2FkZXIudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvc2VtdmVyL19zaGFyZWQudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvc2VtdmVyL2NvbXBhcmUudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvc2VtdmVyL2NvbnN0YW50cy50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9zZW12ZXIvZm9ybWF0LnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3NlbXZlci9fdGVzdF9jb21wYXJhdG9yX3NldC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9zZW12ZXIvc2F0aXNmaWVzLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3NlbXZlci9ncmVhdGVyX3RoYW4udHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvc2VtdmVyL21heF9zYXRpc2Z5aW5nLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3NlbXZlci9wYXJzZV9yYW5nZS50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9zZW12ZXIvcGFyc2UudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvc2VtdmVyL3RyeV9wYXJzZV9yYW5nZS50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9zZW12ZXIvdHJ5X3BhcnNlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL3JvYnVzdEZldGNoLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL2dldEpzclBhY2thZ2VNZXRhZGF0YS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBKdXB5dGVyL3YxLjcuMi9nZXRKc3JQYWNrYWdlVmVyc2lvbk1ldGFkYXRhLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL2dldE5wbVBhY2thZ2VNZXRhZGF0YS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBKdXB5dGVyL3YxLjcuMi9yZXNvbHZlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL3NwZWNpZmllcnMudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwSnVweXRlci92MS43LjIvdG9EYXRhVVJMLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL3JlbW90ZUxvYWRlci50cyIsICIuLi9lc21kL25wbS91cmxwYXR0ZXJuLXBvbHlmaWxsQDEwLjAuMC9ub2RlX21vZHVsZXMvLnBucG0vdXJscGF0dGVybi1wb2x5ZmlsbEAxMC4wLjAvbm9kZV9tb2R1bGVzL3VybHBhdHRlcm4tcG9seWZpbGwvZGlzdC91cmxwYXR0ZXJuLmpzIiwgIi4uL2VzbWQvbnBtL3VybHBhdHRlcm4tcG9seWZpbGxAMTAuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS91cmxwYXR0ZXJuLXBvbHlmaWxsQDEwLjAuMC9ub2RlX21vZHVsZXMvdXJscGF0dGVybi1wb2x5ZmlsbC9pbmRleC5qcyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBKdXB5dGVyL3YxLjcuMi9idW5kbGUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwSnVweXRlci92MS43LjIvZXh0ZW5zaW9uLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL2NvbXBvbmVudHMvaWNvbnMudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwSnVweXRlci92MS43LjIvY29tcG9uZW50cy90b29sdGlwLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL2NvbXBvbmVudHMvc3RhdHVzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL2NvbXBvbmVudHMvZXhlY0J1dHRvbi50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBKdXB5dGVyL3YxLjcuMi9jb21wb25lbnRzL2V4ZWNNZW51LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9kZW5vLWFzeW5jLXRocm90dGxlLzAuMi4wL3NsZWVwLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9kZW5vLWFzeW5jLXRocm90dGxlLzAuMi4wL21vZC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBKdXB5dGVyL3YxLjcuMi9hcHAudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC9DYW5kaWRhdGUudHN4IiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1zZWxlY3Qtc3VnZ2VzdGlvbi8wLjEwLjgvdXNlU2VsZWN0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1zZWxlY3Qtc3VnZ2VzdGlvbi8wLjEwLjgvdXNlUG9zaXRpb24udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC91c2VQcm9qZWN0RmlsdGVyLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1zZWxlY3Qtc3VnZ2VzdGlvbi8wLjEwLjgvdXNlT1MudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC9kZXRlY3RVUkwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC9Qcm9ncmVzcy50c3giLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC9Db21wbGV0aW9uLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc3RvcmFnZS8wLjEuNC9kZWJ1Zy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc3RvcmFnZS8wLjEuNC9saW5rLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1zdG9yYWdlLzAuMS40L2NvbnZlcnRMaW5rcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc3RvcmFnZS8wLjEuNC9yZW1vdGUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXN0b3JhZ2UvMC4xLjQvc3RhdHVzLnRzIiwgIi4uL2VzbWQvbnBtL2lkYkA4LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vaWRiQDguMC4wL25vZGVfbW9kdWxlcy9pZGIvYnVpbGQvaW5kZXguanMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXN0b3JhZ2UvMC4xLjQvZGIudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXN0b3JhZ2UvMC4xLjQvc3Vic2NyaWJlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1zdG9yYWdlLzAuMS40L21vZC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L2RlcHMvc3RvcmFnZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L3VzZVNvdXJjZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L1VzZXJDU1MudHN4IiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1zZWxlY3Qtc3VnZ2VzdGlvbi8wLjEwLjgvQ1NTLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L2NyYXdsTGluay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L3JlZHVjZXIudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC91c2VDYWNoZWRMaW5lcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L3VzZUxpZmVjeWNsZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L3NvcnQudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC9iaXREUC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L3NlYXJjaC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L2NhbmNlbGFibGVTZWFyY2gudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvYXN5bmMvZGVib3VuY2UudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC91c2VTZWFyY2gudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC91c2VFeHBvcnRzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1zZWxlY3Qtc3VnZ2VzdGlvbi8wLjEwLjgvQXBwLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L21vZC50c3giLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwUnVuLzAuNC4xL2NvZGVCbG9jay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBSdW4vMC40LjEvZGlmZi50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBSdW4vMC40LjEvcmVhZENvZGVCbG9ja3MudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwUnVuLzAuNC4xL2RlYm91bmNlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcFJ1bi8wLjQuMS92aWV3ZXIudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwUnVuLzAuNC4xL3NldHVwLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9kdmkyaHRtbC8wLjQuMi90b0RhdGFVUkwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwUnVuLzAuNC4xL3ByZXZpZXdlcnMvc3ZnLnRzIiwgIi4uL2VzbWQvbnBtL2dsb2JhbEA0LjQuMC9ub2RlX21vZHVsZXMvLnBucG0vZ2xvYmFsQDQuNC4wL25vZGVfbW9kdWxlcy9nbG9iYWwvd2luZG93LmpzIiwgIi4uL2VzbWQvbnBtL2dsb2JhbEA0LjQuMC9idWlsZC5qcyIsICIuLi9lc21kL25wbS9pcy1mdW5jdGlvbkAxLjAuMi9ub2RlX21vZHVsZXMvLnBucG0vaXMtZnVuY3Rpb25AMS4wLjIvbm9kZV9tb2R1bGVzL2lzLWZ1bmN0aW9uL2luZGV4LmpzIiwgIi4uL2VzbWQvbnBtL2lzLWZ1bmN0aW9uQDEuMC4yL2J1aWxkLmpzIiwgIi4uL2VzbWQvbnBtL3BhcnNlLWhlYWRlcnNAMi4wLjUvbm9kZV9tb2R1bGVzLy5wbnBtL3BhcnNlLWhlYWRlcnNAMi4wLjUvbm9kZV9tb2R1bGVzL3BhcnNlLWhlYWRlcnMvcGFyc2UtaGVhZGVycy5qcyIsICIuLi9lc21kL25wbS9wYXJzZS1oZWFkZXJzQDIuMC41L2J1aWxkLmpzIiwgIi4uL2VzbWQvbnBtL3h0ZW5kQDQuMC4yL25vZGVfbW9kdWxlcy8ucG5wbS94dGVuZEA0LjAuMi9ub2RlX21vZHVsZXMveHRlbmQvaW1tdXRhYmxlLmpzIiwgIi4uL2VzbWQvbnBtL3h0ZW5kQDQuMC4yL2J1aWxkLmpzIiwgIi4uL2VzbWQvbnBtL3hockAyLjYuMC9ub2RlX21vZHVsZXMvLnBucG0veGhyQDIuNi4wL25vZGVfbW9kdWxlcy94aHIvaW5kZXguanMiLCAiLi4vZXNtZC9ucG0veGhyQDIuNi4wL2J1aWxkLmpzIiwgIi4uL2VzbWQvbnBtL2dsc2xDYW52YXNAMC4yLjYvbm9kZV9tb2R1bGVzLy5wbnBtL2dsc2xDYW52YXNAMC4yLjZfbTNxN3ZzZHJmdHd6aGt3azNyanJ6bnF0amEvbm9kZV9tb2R1bGVzL2dsc2xDYW52YXMvZGlzdC9HbHNsQ2FudmFzLmVzLmpzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcFJ1bi8wLjQuMS9wcmV2aWV3ZXJzL2dsc2wudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwUnVuLzAuNC4xL3ByZXZpZXdlcnMvcGxhbnRVTUwvZW5jb2RlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcFJ1bi8wLjQuMS9wcmV2aWV3ZXJzL3BsYW50VU1ML3RvUGxhbnR1bWxVUkwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwUnVuLzAuNC4xL3ByZXZpZXdlcnMvcGxhbnRVTUwvbW9kLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcFJ1bi8wLjQuMS9wcmV2aWV3ZXJzL1Rpa1ovcmVuZGVyVG9TVkcudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwUnVuLzAuNC4xL3ByZXZpZXdlcnMvVGlrWi9tb2QudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LWhpc3Rvcnktc2xpZGVyLzAuMi4xL3VzZUFzeW5jLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1oaXN0b3J5LXNsaWRlci8wLjIuMS9jb252ZXJ0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1oaXN0b3J5LXNsaWRlci8wLjIuMS9mZXRjaC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtaGlzdG9yeS1zbGlkZXIvMC4yLjEvQXBwLnRzeCIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9tb2JpbGUlRTclODklODhzY3JhcGJveCVFMyU4MSVBRSVFNSU4OCVBNCVFNSVBRSU5QS9zY3JpcHQuanMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L2FzeW5jLWxpYi8wLjIuMC9wb29sLnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFOCVBNCU4NyVFNiU5NSVCMCVFMyU4MSVBRSVFMyU4MyVBQSVFMyU4MyVCMyVFMyU4MiVBRiVFMyU4MiU5MiVFMyU4MSVCRSVFMyU4MSVBOCVFMyU4MiU4MSVFMyU4MSVBNiVFNyVCRCVBRSVFNiU4RiU5QiVFMyU4MSU5OSVFMyU4MiU4QlVzZXJTY3JpcHQvbW9kLnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3NjcmFwYm94LXBhcnNlci9tb2QudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvdW5saW5rX1BvcHVwX21lbnUvbW9kLnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3VubGlua19Qb3B1cF9tZW51L3NjcmlwdC50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTklOTUlQjclRTMlODElODQlRTMlODIlQkYlRTMlODIlQTQlRTMlODMlODglRTMlODMlQUIlRTMlODIlOTIlRTUlODglQkIlRTMlODIlODAlRTMlODMlOUElRTMlODMlQkMlRTMlODIlQjglRTMlODIlOTIlRTclQjAlQTElRTUlOEQlOTglRTMlODElQUIlRTQlQkQlOUMlRTMlODIlOEMlRTMlODIlOEJVc2VyU2NyaXB0L21haW4udHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUU5JTgxJUI4JUU2JThBJTlFJUU3JUFGJTg0JUU1JTlCJUIyJUUzJTgyJTkyTWFya2Rvd24lRTglQTglOTglRTYlQjMlOTUlRTMlODElQUIlRTUlQTQlODklRTYlOEYlOUIlRTMlODElOTclRTMlODElQTZjbGlwX2JvYXJkJUUzJTgxJUFCY29weSVFMyU4MSU5OSVFMyU4MiU4QlBvcHVwTWVudS9jb252ZXJ0LmpzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFOSU4MSVCOCVFNiU4QSU5RSVFNyVBRiU4NCVFNSU5QiVCMiVFMyU4MiU5Mk1hcmtkb3duJUU4JUE4JTk4JUU2JUIzJTk1JUUzJTgxJUFCJUU1JUE0JTg5JUU2JThGJTlCJUUzJTgxJTk3JUUzJTgxJUE2Y2xpcF9ib2FyZCVFMyU4MSVBQmNvcHklRTMlODElOTklRTMlODIlOEJQb3B1cE1lbnUvc2NyaXB0LmpzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11cmwtY3VzdG9taXplci8wLjQuMy9pcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXJsLWN1c3RvbWl6ZXIvMC40LjMvY29udmVydC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXJsLWN1c3RvbWl6ZXIvMC40LjMvZXJyb3IudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVybC1jdXN0b21pemVyLzAuNC4zL2ludGVybmFsL2dldFR3ZWV0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9kZW5vLWd5YXpvLzAuMi4wL3V0aWwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L2Rlbm8tZ3lhem8vMC4yLjAvZXJyb3IudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L2Rlbm8tZ3lhem8vMC4yLjAvdXBsb2FkLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11cmwtY3VzdG9taXplci8wLjQuMy9pbnRlcm5hbC91cGxvYWRWaWRlby50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXJsLWN1c3RvbWl6ZXIvMC40LjMvaW50ZXJuYWwvdXBsb2FkVHdpbWcudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVybC1jdXN0b21pemVyLzAuNC4zL2ludGVybmFsL3VuZXNjYXBlSFRNTC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXJsLWN1c3RvbWl6ZXIvMC40LjMvaW50ZXJuYWwvcHJvY2Vzc1R3ZWV0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11cmwtY3VzdG9taXplci8wLjQuMy9taWRkbGV3YXJlcy9jb252ZXJ0U2NyYXBib3hVUkwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVybC1jdXN0b21pemVyLzAuNC4zL21pZGRsZXdhcmVzL2Zvcm1hdFR3ZWV0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11cmwtY3VzdG9taXplci8wLjQuMy9pbnRlcm5hbC9leHBhbmRUd2l0dGVyU2hvcnRVUkwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVybC1jdXN0b21pemVyLzAuNC4zL21pZGRsZXdhcmVzL2V4cGFuZFNob3J0VVJMLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11cmwtY3VzdG9taXplci8wLjQuMy9taWRkbGV3YXJlcy9mb3JtYXRXaWtpcGVkaWEudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVybC1jdXN0b21pemVyLzAuNC4zL21pZGRsZXdhcmVzL3JlZGlyZWN0V2lraXdhbmQudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVybC1jdXN0b21pemVyLzAuNC4zL21pZGRsZXdhcmVzL3JlZGlyZWN0R29vZ2xlU2VhcmNoLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11cmwtY3VzdG9taXplci8wLjQuMy9pbnRlcm5hbC9nZXRXZWJQYWdlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11cmwtY3VzdG9taXplci8wLjQuMy9taWRkbGV3YXJlcy9mb3JtYXRVUkwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVybC1jdXN0b21pemVyLzAuNC4zL21pZGRsZXdhcmVzL3Nob3J0ZW5BbWF6b25VUkwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVybC1jdXN0b21pemVyLzAuNC4zL21pZGRsZXdhcmVzL2NvbnZlcnRHeWF6b1VSTC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXJsLWN1c3RvbWl6ZXIvMC40LjMvbW9kLnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL25pY290aHVtYjJpbWcvbWlkZGxld2FyZS50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTglQTQlODclRTYlOTUlQjAlRTglQTElOEMlRTMlODElQUIlRTYlODklOTMlRTMlODElQTElRTYlQjYlODglRTMlODElOTclRTclQjclOUElRTMlODIlOTIlRTUlQkMlOTUlRTMlODElOEZVc2VyU2NyaXB0L21vZC50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTglQTQlODclRTYlOTUlQjAlRTglQTElOEMlRTMlODElQUIlRTYlODklOTMlRTMlODElQTElRTYlQjYlODglRTMlODElOTclRTclQjclOUElRTMlODIlOTIlRTUlQkMlOTUlRTMlODElOEZQb3B1cCUyME1lbnVAMC4zLjAvc2NyaXB0LmpzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3JlcGxhY2VfdGV4dF9Vc2VyU2NyaXB0JUU1JTg2JThEJUU1JUFFJTlGJUU4JUEzJTg1JUU3JTg5JTg4L21vZC5qcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9yZXBsYWNlX3RleHRfVXNlclNjcmlwdCVFNSU4NiU4RCVFNSVBRSU5RiVFOCVBMyU4NSVFNyU4OSU4OC9zY3JpcHQuanMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUU4JUE0JTg3JUU2JTk1JUIwJUUzJTgxJUFFJUUzJTgzJUFBJUUzJTgzJUIzJUUzJTgyJUFGJUUzJTgyJTkyJUUzJTgxJUJFJUUzJTgxJUE4JUUzJTgyJTgxJUUzJTgxJUE2JUU3JUJEJUFFJUU2JThGJTlCJUUzJTgxJTk5JUUzJTgyJThCVXNlclNjcmlwdC9jb252ZXJ0ZXIudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUU4JUE0JTg3JUU2JTk1JUIwJUUzJTgxJUFFJUUzJTgzJUFBJUUzJTgzJUIzJUUzJTgyJUFGJUUzJTgyJTkyJUUzJTgxJUJFJUUzJTgxJUE4JUUzJTgyJTgxJUUzJTgxJUE2JUU3JUJEJUFFJUU2JThGJTlCJUUzJTgxJTk5JUUzJTgyJThCVXNlclNjcmlwdC9tYWluLnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL1Byb2plY3QlRTMlODIlOTIlRTYlQTglQUElRTYlOTYlQUQlRTMlODElOTclRTMlODElQTYlRTMlODMlQUElRTMlODMlQjMlRTMlODIlQUYlRTMlODIlOTIlRTclQkQlQUUlRTYlOEYlOUIlRTMlODElOTklRTMlODIlOEJVc2VyU2NyaXB0L21vZC50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTglQTQlODclRTYlOTUlQjAlRTMlODElQUUlRTMlODMlQUElRTMlODMlQjMlRTMlODIlQUYlRTMlODIlOTIlRTMlODElQkUlRTMlODElQTglRTMlODIlODElRTMlODElQTYlRTclQkQlQUUlRTYlOEYlOUIlRTMlODElOTklRTMlODIlOEJVc2VyU2NyaXB0L2V4YW1wbGUudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUU0JUI4JTgwJUU2JTk3JUE2JUU2JTk0JUI5JUU4JUExJThDJUUzJTgyJTkyJUU2JUI2JTg4JUUzJTgxJTk3JUUzJTgxJUE2JUU1JThGJUE1JUU3JTgyJUI5JUUzJTgxJUE3JUU2JTk0JUI5JUU4JUExJThDJUUzJTgxJTk3JUU3JTlCJUI0JUUzJTgxJTk5UG9wdXBNZW51L3NjcmlwdC5qcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTklODElQjglRTYlOEElOUUlRTMlODElOTclRTMlODElOUZHeWF6byVFMyU4MSVBRU9DUiVFMyU4MyU4NiVFMyU4MiVBRCVFMyU4MiVCOSVFMyU4MyU4OCVFMyU4MiU5MiVFMyU4MiVCMyVFMyU4MyU5NCVFMyU4MyVCQyVFMyU4MSU5OSVFMyU4MiU4QlVzZXJTY3JpcHQvcG9wdXBNZW51LmpzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFOSU4MSVCOCVFNiU4QSU5RSVFMyU4MSU5NyVFMyU4MSU5Rkd5YXpvJUU3JTk0JUJCJUU1JTgzJThGJUUzJTgxJUFFdHJpbW1pbmclRTMlODMlOUElRTMlODMlQkMlRTMlODIlQjglRTMlODIlOTIlRTklOTYlOEIlRTMlODElOEZQb3B1cF9NZW51L3NjcmlwdC5qcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9TY3JhcGJveCVFOCVBOCU5OCVFNiVCMyU5NSVFMyU4MiU5MlRlWCVFOCVBOCU5OCVFNiVCMyU5NSVFMyU4MSVBQiVFNSVBNCU4OSVFNiU4RiU5QiVFMyU4MSU5OSVFMyU4MiU4QlNjcmlwdC9tb2QudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvU2NyYXBib3glRTglQTglOTglRTYlQjMlOTUlRTMlODIlOTJUZVglRTglQTglOTglRTYlQjMlOTUlRTMlODElQUIlRTUlQTQlODklRTYlOEYlOUIlRTMlODElOTklRTMlODIlOEJQb3B1cE1lbnUvc2NyaXB0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1rZWljaG9ib3QvMC4xLjAvQVBJUk9PVC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gta2VpY2hvYm90LzAuMS4wL2Fzay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gta2VpY2hvYm90LzAuMS4wL3BvcHVwQmFyLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1rZWljaG9ib3QvMC4xLjAvZ2V0TmV3VGFsa0lkLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1rZWljaG9ib3QvMC4xLjAvbWFrZVNoYXJlVVJMLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1rZWljaG9ib3QvMC4xLjAvcXVlc3Rpb25Ub1NjcmFwYm94LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1rZWljaG9ib3QvMC4xLjAvd3JpdGVBZnRlci50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gta2VpY2hvYm90LzAuMS4wL21ha2VQbGFpbi50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gta2VpY2hvYm90LzAuMS4wL2lzQ29tbWVudC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gta2VpY2hvYm90LzAuMS4wL21vZC50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9wb3B1cC9zY3JpcHQudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L3RlbXBsYXRlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy9hdXRvLXJldmlldy50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9Qb3J0ZXIlRTMlODElQTMlRTMlODElQkQlRTMlODElODQlRTclQjclQTglRTklOUIlODYlRTMlODMlOTAlRTMlODMlQkMlRTMlODIlOTIlRTclOTQlOUYlRTMlODIlODQlRTMlODElOTlVc2VyU2NyaXB0QDEuMC4wL2l0ZW0udHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvUG9ydGVyJUUzJTgxJUEzJUUzJTgxJUJEJUUzJTgxJTg0JUU3JUI3JUE4JUU5JTlCJTg2JUUzJTgzJTkwJUUzJTgzJUJDJUUzJTgyJTkyJUU3JTk0JTlGJUUzJTgyJTg0JUUzJTgxJTk5VXNlclNjcmlwdEAxLjAuMC9idXR0b24udHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvUG9ydGVyJUUzJTgxJUEzJUUzJTgxJUJEJUUzJTgxJTg0JUU3JUI3JUE4JUU5JTlCJTg2JUUzJTgzJTkwJUUzJTgzJUJDJUUzJTgyJTkyJUU3JTk0JTlGJUUzJTgyJTg0JUUzJTgxJTk5VXNlclNjcmlwdEAxLjAuMC9zdGF0dXNCYXIudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvUG9ydGVyJUUzJTgxJUEzJUUzJTgxJUJEJUUzJTgxJTg0JUU3JUI3JUE4JUU5JTlCJTg2JUUzJTgzJTkwJUUzJTgzJUJDJUUzJTgyJTkyJUU3JTk0JTlGJUUzJTgyJTg0JUUzJTgxJTk5VXNlclNjcmlwdEAxLjAuMC9tb2QudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvUG9ydGVyJUUzJTgxJUEzJUUzJTgxJUJEJUUzJTgxJTg0JUU3JUI3JUE4JUU5JTlCJTg2JUUzJTgzJTkwJUUzJTgzJUJDJUUzJTgyJTkyJUU3JTk0JTlGJUUzJTgyJTg0JUUzJTgxJTk5VXNlclNjcmlwdEAxLjAuMC9jb21tYW5kcy50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9zY3JhcGJveC1lZGl0b3ItYmVnaW4tZWRpdC9zY3JpcHQudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvc2NyYXBib3gtZG9tLWFjY2Vzc29yL3NjcmlwdC5qcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9zbGVlcC9zY3JpcHQuanMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvc2NyYXBib3gtaW5zZXJ0LXRleHQtMi9zY3JpcHQuanMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvbW9iaWxlJUUzJTgxJThCJUUzJTgyJTg5dGltZXN0YW1wJUUzJTgyJTkyJUU4JUExJThDJUU5JUEwJUFEJUUzJTgxJUFCJUU2JThDJUJGJUU1JTg1JUE1JUUzJTgxJTk5JUUzJTgyJThCVXNlclNjcmlwdC9zY3JpcHQuanMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvS2FrZXJ1JUUzJTgyJTkyJUU5JTk2JThCJUUzJTgxJThGUGFnZV9NZW51L3NjcmlwdC5qcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTMlODMlOUElRTMlODMlQkMlRTMlODIlQjglRTMlODIlOTIlRTglQkIlQTIlRTklODAlODElRTMlODElOTklRTMlODIlOEJVc2VyU2NyaXB0L21vZC50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTMlODMlOUElRTMlODMlQkMlRTMlODIlQjglRTMlODIlOTIlRTglQkIlQTIlRTklODAlODElRTMlODElOTklRTMlODIlOEJVc2VyU2NyaXB0L3RyYW5zcG9ydFBhZ2UudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUUzJTgzJTlBJUUzJTgzJUJDJUUzJTgyJUI4JUUzJTgyJTkyJUU4JUJCJUEyJUU5JTgwJTgxJUUzJTgxJTk5JUUzJTgyJThCVXNlclNjcmlwdC9wYWdlTWVudS50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9JbmJveCVFMyU4MSVBQiVFNyVCNCVBMCVFNiU5NyVBOSVFMyU4MSU4RiVFNSU4NSVBNSVFMyU4MiU4QyVFMyU4MiU4QlVzZXJTY3JpcHQvdXRpbC50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9JbmJveCVFMyU4MSVBQiVFNyVCNCVBMCVFNiU5NyVBOSVFMyU4MSU4RiVFNSU4NSVBNSVFMyU4MiU4QyVFMyU4MiU4QlVzZXJTY3JpcHQvYWRkVG9JbmJveC50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9JbmJveCVFMyU4MSVBQiVFNyVCNCVBMCVFNiU5NyVBOSVFMyU4MSU4RiVFNSU4NSVBNSVFMyU4MiU4QyVFMyU4MiU4QlVzZXJTY3JpcHQvbW9kLnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3NjcmFwYm94LWljb24tYnV0dG9uL3NjcmlwdC5qcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9NYXJrZG93biVFNSVCRCVBMiVFNSVCQyU4RiVFMyU4MSVBNyVFMyU4MyU5QSVFMyU4MyVCQyVFMyU4MiVCOCVFMyU4MSVBRVVSTCVFMyU4MiU5MiVFMyU4MiVCMyVFMyU4MyU5NCVFMyU4MyVCQyVFMyU4MSU5OSVFMyU4MiU4QlBhZ2VNZW51L3NjcmlwdC5qcyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvd29ya2Zsb3cvdXNlVGFza0NyYXdsZXIudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L3VzZVN0b3BQcm9wYWdhdGlvbi50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvd29ya2Zsb3cvdXNlRGlhbG9nLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvd29ya2Zsb3cvdmlld2VyLm1pbi5jc3MudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L0NvcHkudHN4IiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy9ob3dtL2ZyZXNobmVzcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvaG93bS9zb3J0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy9rZXkudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L0xvYWRCdXR0b24udHN4IiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy91c2VNaW51dGVzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy90YXNrLXZpZXdlci90b1N0YXR1c0xhYmVsLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy9wYXRoLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy9TY3JhcGJveExpbmsudHN4IiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy90YXNrLXZpZXdlci9UYXNrSXRlbS50c3giLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L3Rhc2stdmlld2VyL3VzZU5hdmlnYXRpb24udHN4IiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy91c2VVc2VyU2NyaXB0RXZlbnQudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L3VzZUV4cG9ydHMudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L3Rhc2stdmlld2VyL21vZC50c3giLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L3VzZUxpbmVzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy9ob3dtL1BlcmlvZC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvd29ya2Zsb3cvc2NoZWR1bGVyL2V2ZW50LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy9zY2hlZHVsZXIvdXNlRXZlbnRzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy93ZWVrbHktY2FsZW5kYXIvRXZlbnRJdGVtLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvd29ya2Zsb3cvd2Vla2x5LWNhbGVuZGFyL1RpbWVMaW5lLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvd29ya2Zsb3cvd2Vla2x5LWNhbGVuZGFyL1RpbWVHcmlkLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvd29ya2Zsb3cvc2NoZWR1bGVyL3VzZU5hdmlnYXRpb24udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L3VzZU9wZW4udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L3dlZWtseS1jYWxlbmRhci9tb2QudHN4IiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL2Zvci1hbnktcHJvamVjdC9zY3JpcHQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCB0eXBlIEpvaW5Sb29tUmVxdWVzdCA9XG4gIHwgSm9pblBhZ2VSb29tUmVxdWVzdFxuICB8IEpvaW5Qcm9qZWN0Um9vbVJlcXVlc3RcbiAgfCBKb2luU3RyZWFtUm9vbVJlcXVlc3Q7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSm9pblByb2plY3RSb29tUmVxdWVzdCB7XG4gIHBhZ2VJZDogbnVsbDtcbiAgcHJvamVjdElkOiBzdHJpbmc7XG4gIHByb2plY3RVcGRhdGVzU3RyZWFtOiBmYWxzZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKb2luUGFnZVJvb21SZXF1ZXN0IHtcbiAgcGFnZUlkOiBzdHJpbmc7XG4gIHByb2plY3RJZDogc3RyaW5nO1xuICBwcm9qZWN0VXBkYXRlc1N0cmVhbTogZmFsc2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSm9pblN0cmVhbVJvb21SZXF1ZXN0IHtcbiAgcGFnZUlkOiBudWxsO1xuICBwcm9qZWN0SWQ6IHN0cmluZztcbiAgcHJvamVjdFVwZGF0ZXNTdHJlYW06IHRydWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSm9pblJvb21SZXNwb25zZSB7XG4gIHN1Y2Nlc3M6IHRydWU7XG4gIHBhZ2VJZDogc3RyaW5nIHwgbnVsbDtcbiAgcHJvamVjdElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdFVwZGF0ZXNTdHJlYW1Db21taXQge1xuICBraW5kOiBcInBhZ2VcIjtcbiAgaWQ6IHN0cmluZztcbiAgcGFyZW50SWQ6IHN0cmluZztcbiAgcHJvamVjdElkOiBzdHJpbmc7XG4gIHBhZ2VJZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgY2hhbmdlczpcbiAgICB8IChcbiAgICAgIHwgSW5zZXJ0Q2hhbmdlXG4gICAgICB8IFVwZGF0ZUNoYW5nZVxuICAgICAgfCBEZWxldGVDaGFuZ2VcbiAgICAgIHwgVGl0bGVDaGFuZ2VcbiAgICAgIHwgTGlua3NDaGFuZ2VcbiAgICAgIHwgSWNvbnNDaGFuZ2VcbiAgICApW11cbiAgICB8IFtEZWxldGVQYWdlQ2hhbmdlXTtcbiAgY3Vyc29yOiBudWxsO1xuICBmcmVlemU6IHRydWU7XG59XG5cbmV4cG9ydCB0eXBlIFByb2plY3RVcGRhdGVzU3RyZWFtRXZlbnQgPVxuICB8IE1lbWJlckpvaW5FdmVudFxuICB8IEludml0YXRpb25SZXNldEV2ZW50XG4gIHwgUGFnZURlbGV0ZUV2ZW50XG4gIHwgQWRtaW5BZGRFdmVudFxuICB8IEFkbWluRGVsZXRlRXZlbnRcbiAgfCBPd25lclNldEV2ZW50O1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3RFdmVudCB7XG4gIGlkOiBzdHJpbmc7XG4gIHBhZ2VJZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgcHJvamVjdElkOiBzdHJpbmc7XG4gIGNyZWF0ZWQ6IG51bWJlcjtcbiAgdXBkYXRlZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VEZWxldGVFdmVudCBleHRlbmRzIFByb2plY3RFdmVudCB7XG4gIHR5cGU6IFwicGFnZS5kZWxldGVcIjtcbiAgZGF0YToge1xuICAgIHRpdGxlTGM6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZW1iZXJKb2luRXZlbnQgZXh0ZW5kcyBQcm9qZWN0RXZlbnQge1xuICB0eXBlOiBcIm1lbWJlci5qb2luXCI7XG59XG5leHBvcnQgaW50ZXJmYWNlIEludml0YXRpb25SZXNldEV2ZW50IGV4dGVuZHMgUHJvamVjdEV2ZW50IHtcbiAgdHlwZTogXCJpbnZpdGF0aW9uLnJlc2V0XCI7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFkbWluQWRkRXZlbnQgZXh0ZW5kcyBQcm9qZWN0RXZlbnQge1xuICB0eXBlOiBcImFkbWluLmFkZFwiO1xuICB0YXJnZXRVc2VySWQ6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQWRtaW5EZWxldGVFdmVudCBleHRlbmRzIFByb2plY3RFdmVudCB7XG4gIHR5cGU6IFwiYWRtaW4uZGVsZXRlXCI7XG4gIHRhcmdldFVzZXJJZDogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBPd25lclNldEV2ZW50IGV4dGVuZHMgUHJvamVjdEV2ZW50IHtcbiAgdHlwZTogXCJvd25lci5zZXRcIjtcbiAgdGFyZ2V0VXNlcklkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWl0Tm90aWZpY2F0aW9uIGV4dGVuZHMgUGFnZUNvbW1pdCB7XG4gIGlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZUNvbW1pdCB7XG4gIGtpbmQ6IFwicGFnZVwiO1xuICBwYXJlbnRJZDogc3RyaW5nO1xuICBwcm9qZWN0SWQ6IHN0cmluZztcbiAgcGFnZUlkOiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBjaGFuZ2VzOiBDaGFuZ2VbXSB8IFtQaW5DaGFuZ2VdIHwgW0RlbGV0ZVBhZ2VDaGFuZ2VdO1xuICBjdXJzb3I/OiBudWxsO1xuICBmcmVlemU6IHRydWU7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VDb21taXRSZXNwb25zZSB7XG4gIGNvbW1pdElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JMaWtlIHtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVuZXhwZWN0ZWRFcnJvciB7XG4gIG5hbWU6IFwiVW5leHBlY3RlZEVycm9yXCI7XG4gIHZhbHVlOiB1bmtub3duO1xufVxuZXhwb3J0IGludGVyZmFjZSBUaW1lb3V0RXJyb3Ige1xuICBuYW1lOiBcIlRpbWVvdXRFcnJvclwiO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFBhZ2VDb21taXRFcnJvciA9XG4gIHwgU29ja2V0SU9FcnJvclxuICB8IER1cGxpY2F0ZVRpdGxlRXJyb3JcbiAgfCBOb3RGYXN0Rm9yd2FyZEVycm9yO1xuXG4vKiB0aGUgZXJyb3IgdGhhdCBvY2N1cnMgd2hlbiB0aGUgc29ja2V0LmlvIGNhdXNlcyBhbiBlcnJvclxuKlxuKiB3aGVuIHRoaXMgZXJyb3Igb2NjdXJzLCB3YWl0IGZvciBhIHdoaWxlIGFuZCByZXRyeSB0aGUgcmVxdWVzdFxuKi9cbmV4cG9ydCBpbnRlcmZhY2UgU29ja2V0SU9FcnJvciB7XG4gIG5hbWU6IFwiU29ja2V0SU9FcnJvclwiO1xufVxuLyoqIHRoZSBlcnJvciB0aGF0IG9jY3VycyB3aGVuIHRoZSB0aXRsZSBpcyBhbHJlYWR5IGluIHVzZSAqL1xuZXhwb3J0IGludGVyZmFjZSBEdXBsaWNhdGVUaXRsZUVycm9yIHtcbiAgbmFtZTogXCJEdXBsaWNhdGVUaXRsZUVycm9yXCI7XG59XG4vKiogdGhlIGVycm9yIGNhdXNlZCB3aGVuIGNvbW1pdElkIGlzIG5vdCBsYXRlc3QgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90RmFzdEZvcndhcmRFcnJvciB7XG4gIG5hbWU6IFwiTm90RmFzdEZvcndhcmRFcnJvclwiO1xufVxuXG5leHBvcnQgY29uc3QgaXNQYWdlQ29tbWl0RXJyb3IgPSAoZXJyb3I6IEVycm9yTGlrZSk6IGVycm9yIGlzIFBhZ2VDb21taXRFcnJvciA9PlxuICBwYWdlQ29tbWl0RXJyb3JOYW1lcy5pbmNsdWRlcyhlcnJvci5uYW1lKTtcblxuY29uc3QgcGFnZUNvbW1pdEVycm9yTmFtZXMgPSBbXG4gIFwiU29ja2V0SU9FcnJvclwiLFxuICBcIkR1cGxpY2F0ZVRpdGxlRXJyb3JcIixcbiAgXCJOb3RGYXN0Rm9yd2FyZEVycm9yXCIsXG5dO1xuXG5leHBvcnQgdHlwZSBSZXN1bHQ8VCwgRSA9IHVua25vd24+ID1cbiAgfCB7IG9rOiB0cnVlOyB2YWx1ZTogVCB9XG4gIHwgeyBvazogZmFsc2U7IHZhbHVlOiBFIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRNYXAge1xuICBcInNvY2tldC5pby1yZXF1ZXN0XCI6IChcbiAgICByZXE6IHsgbWV0aG9kOiBcImNvbW1pdFwiOyBkYXRhOiBQYWdlQ29tbWl0IH0gfCB7XG4gICAgICBtZXRob2Q6IFwicm9vbTpqb2luXCI7XG4gICAgICBkYXRhOiBKb2luUm9vbVJlcXVlc3Q7XG4gICAgfSxcbiAgICBzdWNjZXNzOiBQYWdlQ29tbWl0UmVzcG9uc2UgfCBKb2luUm9vbVJlc3BvbnNlLFxuICAgIGZhaWxlZDogUGFnZUNvbW1pdEVycm9yLFxuICApID0+IHZvaWQ7XG4gIGN1cnNvcjogKFxuICAgIHJlcTogT21pdDxNb3ZlQ3Vyc29yRGF0YSwgXCJzb2NrZXRJZFwiPixcbiAgICBzdWNjZXNzOiB1bmRlZmluZWQsXG4gICAgZmFpbGVkOiB1bmtub3duLFxuICApID0+IHZvaWQ7XG59XG5leHBvcnQgaW50ZXJmYWNlIExpc3RlbkV2ZW50TWFwIHtcbiAgXCJwcm9qZWN0VXBkYXRlc1N0cmVhbTpjb21taXRcIjogUHJvamVjdFVwZGF0ZXNTdHJlYW1Db21taXQ7XG4gIFwicHJvamVjdFVwZGF0ZXNTdHJlYW06ZXZlbnRcIjogUHJvamVjdFVwZGF0ZXNTdHJlYW1FdmVudDtcbiAgY29tbWl0OiBDb21taXROb3RpZmljYXRpb247XG4gIGN1cnNvcjogTW92ZUN1cnNvckRhdGE7XG4gIFwicXVpY2stc2VhcmNoOmNvbW1pdFwiOiBRdWlja1NlYXJjaENvbW1pdDtcbiAgXCJxdWljay1zZWFyY2g6cmVwbGFjZS1saW5rXCI6IFF1aWNrU2VhcmNoUmVwbGFjZUxpbms7XG4gIFwiaW5mb2JveDp1cGRhdGluZ1wiOiBib29sZWFuO1xuICBcImluZm9ib3g6cmVsb2FkXCI6IHZvaWQ7XG4gIFwibGl0ZXJhbC1kYXRhYmFzZTpyZWxvYWRcIjogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWlja1NlYXJjaENvbW1pdCBleHRlbmRzIE9taXQ8Q29tbWl0Tm90aWZpY2F0aW9uLCBcImNoYW5nZXNcIj4ge1xuICBjaGFuZ2VzOlxuICAgIHwgKFRpdGxlQ2hhbmdlIHwgTGlua3NDaGFuZ2UgfCBEZXNjcmlwdGlvbnNDaGFuZ2UgfCBJbWFnZUNoYW5nZSlbXVxuICAgIHwgW0RlbGV0ZVBhZ2VDaGFuZ2VdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1aWNrU2VhcmNoUmVwbGFjZUxpbmsge1xuICBmcm9tOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIERhdGFPZjxFdmVudCBleHRlbmRzIGtleW9mIEV2ZW50TWFwPiA9IFBhcmFtZXRlcnM8XG4gIEV2ZW50TWFwW0V2ZW50XVxuPlswXTtcbmV4cG9ydCB0eXBlIFN1Y2Nlc3NSZXNPZjxFdmVudCBleHRlbmRzIGtleW9mIEV2ZW50TWFwPiA9IFBhcmFtZXRlcnM8XG4gIEV2ZW50TWFwW0V2ZW50XVxuPlsxXTtcbmV4cG9ydCB0eXBlIEZhaWxlZFJlc09mPEV2ZW50IGV4dGVuZHMga2V5b2YgRXZlbnRNYXA+ID0gUGFyYW1ldGVyczxcbiAgRXZlbnRNYXBbRXZlbnRdXG4+WzJdO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vdmVDdXJzb3JEYXRhIHtcbiAgdXNlcjoge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIH07XG4gIHBhZ2VJZDogc3RyaW5nO1xuICBwb3NpdGlvbjoge1xuICAgIGxpbmU6IG51bWJlcjtcbiAgICBjaGFyOiBudW1iZXI7XG4gIH07XG4gIHZpc2libGU6IGJvb2xlYW47XG4gIHNvY2tldElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIENoYW5nZSA9XG4gIHwgSW5zZXJ0Q2hhbmdlXG4gIHwgVXBkYXRlQ2hhbmdlXG4gIHwgRGVsZXRlQ2hhbmdlXG4gIHwgTGlua3NDaGFuZ2VcbiAgfCBQcm9qZWN0TGlua3NDaGFuZ2VcbiAgfCBJY29uc0NoYW5nZVxuICB8IERlc2NyaXB0aW9uc0NoYW5nZVxuICB8IEltYWdlQ2hhbmdlXG4gIHwgRmlsZXNDaGFuZ2VcbiAgfCBIZWxwRmVlbHNDaGFuZ2VcbiAgfCBpbmZvYm94RGVmaW5pdGlvbkNoYW5nZVxuICB8IFRpdGxlQ2hhbmdlO1xuZXhwb3J0IGludGVyZmFjZSBJbnNlcnRDaGFuZ2Uge1xuICBfaW5zZXJ0OiBzdHJpbmc7XG4gIGxpbmVzOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0ZXh0OiBzdHJpbmc7XG4gIH07XG59XG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUNoYW5nZSB7XG4gIF91cGRhdGU6IHN0cmluZztcbiAgbGluZXM6IHtcbiAgICB0ZXh0OiBzdHJpbmc7XG4gIH07XG4gIG5vVGltZXN0YW1wVXBkYXRlPzogdW5rbm93bjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlQ2hhbmdlIHtcbiAgX2RlbGV0ZTogc3RyaW5nO1xuICBsaW5lczogLTE7XG59XG5leHBvcnQgaW50ZXJmYWNlIExpbmtzQ2hhbmdlIHtcbiAgbGlua3M6IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0TGlua3NDaGFuZ2Uge1xuICBwcm9qZWN0TGlua3M6IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBJY29uc0NoYW5nZSB7XG4gIGljb25zOiBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRGVzY3JpcHRpb25zQ2hhbmdlIHtcbiAgZGVzY3JpcHRpb25zOiBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VDaGFuZ2Uge1xuICBpbWFnZTogc3RyaW5nIHwgbnVsbDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVGl0bGVDaGFuZ2Uge1xuICB0aXRsZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBGaWxlc0NoYW5nZSB7XG4gIC8qKiBmaWxlIGlkICovXG4gIGZpbGVzOiBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSGVscEZlZWxzQ2hhbmdlIHtcbiAgLyoqIEhlbHBmZWVs6KiY5rOV44Gu5YWI6aCt44GuYD8gYOOCkuOBqOOBo+OBn+OCguOBriAqL1xuICBoZWxwZmVlbHM6IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBpbmZvYm94RGVmaW5pdGlvbkNoYW5nZSB7XG4gIC8qKiBgdGFibGU6aW5mb2JveGDjgb7jgZ/jga9gdGFibGU6Y29zZW5zZWDjga7lkITooYzjgpJ0cmlt44GX44Gf44KC44GuICovXG4gIGluZm9ib3hEZWZpbml0aW9uOiBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGluQ2hhbmdlIHtcbiAgcGluOiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZVBhZ2VDaGFuZ2Uge1xuICBkZWxldGVkOiB0cnVlO1xuICBtZXJnZWQ/OiB0cnVlO1xufVxuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cblxuaW1wb3J0IHR5cGUge1xuICBNYW5hZ2VyLFxuICBNYW5hZ2VyT3B0aW9ucyxcbiAgU29ja2V0LFxuICBTb2NrZXRPcHRpb25zLFxufSBmcm9tIFwiLi90eXBlcy9zb2NrZXRJTy9pbmRleC50c1wiO1xuZXhwb3J0IHR5cGUgeyBNYW5hZ2VyLCBNYW5hZ2VyT3B0aW9ucywgU29ja2V0LCBTb2NrZXRPcHRpb25zIH07XG5cbmV4cG9ydCBjb25zdCBzb2NrZXRJTyA9IGFzeW5jICgpOiBQcm9taXNlPFNvY2tldD4gPT4ge1xuICBjb25zdCBpbyA9IGF3YWl0IGltcG9ydFNvY2tldElPKCk7XG4gIGNvbnN0IHNvY2tldCA9IGlvKFwiaHR0cHM6Ly9zY3JhcGJveC5pb1wiLCB7XG4gICAgcmVjb25uZWN0aW9uRGVsYXk6IDUwMDAsXG4gICAgdHJhbnNwb3J0czogW1wid2Vic29ja2V0XCJdLFxuICB9KTtcblxuICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgb25EaXNjb25uZWN0ID0gKHJlYXNvbjogU29ja2V0LkRpc2Nvbm5lY3RSZWFzb24pID0+IHJlamVjdChyZWFzb24pO1xuICAgIHNvY2tldC5vbmNlKFwiY29ubmVjdFwiLCAoKSA9PiB7XG4gICAgICBzb2NrZXQub2ZmKFwiZGlzY29ubmVjdFwiLCBvbkRpc2Nvbm5lY3QpO1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0pO1xuICAgIHNvY2tldC5vbmNlKFwiZGlzY29ubmVjdFwiLCBvbkRpc2Nvbm5lY3QpO1xuICB9KTtcbiAgcmV0dXJuIHNvY2tldDtcbn07XG5cbnR5cGUgSU8gPSAoXG4gIHVyaTogc3RyaW5nLFxuICBvcHRzPzogUGFydGlhbDxNYW5hZ2VyT3B0aW9ucyAmIFNvY2tldE9wdGlvbnM+LFxuKSA9PiBTb2NrZXQ7XG5kZWNsYXJlIGNvbnN0IGlvOiBJTyB8IHVuZGVmaW5lZDtcbmNvbnN0IHZlcnNpb24gPSBcIjQuMi4wXCI7XG5jb25zdCB1cmwgPVxuICBgaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvc29ja2V0LmlvLyR7dmVyc2lvbn0vc29ja2V0LmlvLm1pbi5qc2A7XG5sZXQgZXJyb3I6IHN0cmluZyB8IEV2ZW50IHwgdW5kZWZpbmVkO1xuXG5jb25zdCBpbXBvcnRTb2NrZXRJTyA9IGFzeW5jICgpOiBQcm9taXNlPElPPiA9PiB7XG4gIGlmIChlcnJvcikgdGhyb3cgZXJyb3I7XG4gIGlmICghZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihgc2NyaXB0W3NyYz1cIiR7dXJsfVwiXWApKSB7XG4gICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICBzY3JpcHQuc3JjID0gdXJsO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKCk7XG4gICAgICBzY3JpcHQub25lcnJvciA9IChlKSA9PiB7XG4gICAgICAgIGVycm9yID0gZTtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfTtcbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kKHNjcmlwdCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBpZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGlmICghaW8pIHJldHVybjtcbiAgICAgIGNsZWFySW50ZXJ2YWwoaWQpO1xuICAgICAgcmVzb2x2ZShpbyk7XG4gICAgfSwgNTAwKTtcbiAgfSk7XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cblxuaW1wb3J0IHR5cGUgeyBTb2NrZXQgfSBmcm9tIFwiLi9zb2NrZXQudHNcIjtcbmltcG9ydCB7XG4gIERhdGFPZixcbiAgRXZlbnRNYXAsXG4gIEZhaWxlZFJlc09mLFxuICBpc1BhZ2VDb21taXRFcnJvcixcbiAgTGlzdGVuRXZlbnRNYXAsXG4gIFJlc3VsdCxcbiAgU3VjY2Vzc1Jlc09mLFxuICBUaW1lb3V0RXJyb3IsXG4gIFVuZXhwZWN0ZWRFcnJvcixcbn0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zb2NrZXQudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTb2NrZXRPcGVyYXRvciB7XG4gIHJlcXVlc3Q6IDxFdmVudE5hbWUgZXh0ZW5kcyBrZXlvZiBFdmVudE1hcD4oXG4gICAgZXZlbnQ6IEV2ZW50TmFtZSxcbiAgICBkYXRhOiBEYXRhT2Y8RXZlbnROYW1lPixcbiAgKSA9PiBQcm9taXNlPFxuICAgIFJlc3VsdDxcbiAgICAgIFN1Y2Nlc3NSZXNPZjxFdmVudE5hbWU+LFxuICAgICAgRmFpbGVkUmVzT2Y8RXZlbnROYW1lPiB8IFVuZXhwZWN0ZWRFcnJvciB8IFRpbWVvdXRFcnJvclxuICAgID5cbiAgPjtcbiAgcmVzcG9uc2U6IDxFdmVudE5hbWUgZXh0ZW5kcyBrZXlvZiBMaXN0ZW5FdmVudE1hcD4oXG4gICAgLi4uZXZlbnRzOiBFdmVudE5hbWVbXVxuICApID0+IEFzeW5jR2VuZXJhdG9yPExpc3RlbkV2ZW50TWFwW0V2ZW50TmFtZV0sIHZvaWQsIHVua25vd24+O1xufVxuXG5leHBvcnQgY29uc3Qgd3JhcCA9IChcbiAgc29ja2V0OiBTb2NrZXQsXG4gIHRpbWVvdXQgPSA5MDAwMCxcbik6IFNvY2tldE9wZXJhdG9yID0+IHtcbiAgY29uc3QgcmVxdWVzdCA9IDxFdmVudE5hbWUgZXh0ZW5kcyBrZXlvZiBFdmVudE1hcD4oXG4gICAgZXZlbnQ6IEV2ZW50TmFtZSxcbiAgICBkYXRhOiBEYXRhT2Y8RXZlbnROYW1lPixcbiAgKTogUHJvbWlzZTxcbiAgICBSZXN1bHQ8XG4gICAgICBTdWNjZXNzUmVzT2Y8RXZlbnROYW1lPixcbiAgICAgIEZhaWxlZFJlc09mPEV2ZW50TmFtZT4gfCBVbmV4cGVjdGVkRXJyb3IgfCBUaW1lb3V0RXJyb3JcbiAgICA+XG4gID4gPT4ge1xuICAgIGxldCBpZDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBvbkRpc2Nvbm5lY3QgPSAobWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dChpZCk7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IobWVzc2FnZSkpO1xuICAgICAgfTtcbiAgICAgIHNvY2tldC5lbWl0KFxuICAgICAgICBldmVudCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgKHJlc3BvbnNlOiB7IGRhdGE6IFN1Y2Nlc3NSZXNPZjxFdmVudE5hbWU+IH0gfCB7IGVycm9yOiB1bmtub3duIH0pID0+IHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoaWQpO1xuICAgICAgICAgIHNvY2tldC5vZmYoXCJkaXNjb25uZWN0XCIsIG9uRGlzY29ubmVjdCk7XG4gICAgICAgICAgc3dpdGNoIChldmVudCkge1xuICAgICAgICAgICAgY2FzZSBcInNvY2tldC5pby1yZXF1ZXN0XCI6XG4gICAgICAgICAgICAgIGlmIChcImVycm9yXCIgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICB0eXBlb2YgcmVzcG9uc2UuZXJyb3IgPT09IFwib2JqZWN0XCIgJiYgcmVzcG9uc2UuZXJyb3IgJiZcbiAgICAgICAgICAgICAgICAgIFwibmFtZVwiIGluIHJlc3BvbnNlLmVycm9yICYmXG4gICAgICAgICAgICAgICAgICB0eXBlb2YgcmVzcG9uc2UuZXJyb3IubmFtZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgICAgaXNQYWdlQ29tbWl0RXJyb3IoeyBuYW1lOiByZXNwb25zZS5lcnJvci5uYW1lIH0pXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKHsgb2s6IGZhbHNlLCB2YWx1ZTogcmVzcG9uc2UuZXJyb3IgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgICBvazogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7IG5hbWU6IFwiVW5leHBlY3RlZEVycm9yXCIsIHZhbHVlOiByZXNwb25zZS5lcnJvciB9LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKFwiZGF0YVwiIGluIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IG9rOiB0cnVlLCB2YWx1ZTogcmVzcG9uc2UuZGF0YSB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJjdXJzb3JcIjpcbiAgICAgICAgICAgICAgaWYgKFwiZXJyb3JcIiBpbiByZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHsgbmFtZTogXCJVbmV4cGVjdGVkRXJyb3JcIiwgdmFsdWU6IHJlc3BvbnNlLmVycm9yIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoXCJkYXRhXCIgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgb2s6IHRydWUsIHZhbHVlOiByZXNwb25zZS5kYXRhIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICdJbnZhbGlkIHJlc3BvbnNlOiBtaXNzaW5nIFwiZGF0YVwiIG9yIFwiZXJyb3JcIiBmaWVsZCcsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgaWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc29ja2V0Lm9mZihcImRpc2Nvbm5lY3RcIiwgb25EaXNjb25uZWN0KTtcbiAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICBuYW1lOiBcIlRpbWVvdXRFcnJvclwiLFxuICAgICAgICAgICAgbWVzc2FnZTogYFRpbWVvdXQ6IGV4Y2VlZGVkICR7dGltZW91dH1tc2AsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9LCB0aW1lb3V0KTtcbiAgICAgIHNvY2tldC5vbmNlKFwiZGlzY29ubmVjdFwiLCBvbkRpc2Nvbm5lY3QpO1xuICAgIH0pO1xuICB9O1xuXG4gIGFzeW5jIGZ1bmN0aW9uKiByZXNwb25zZTxFdmVudE5hbWUgZXh0ZW5kcyBrZXlvZiBMaXN0ZW5FdmVudE1hcD4oXG4gICAgLi4uZXZlbnRzOiBFdmVudE5hbWVbXVxuICApIHtcbiAgICB0eXBlIERhdGEgPSBMaXN0ZW5FdmVudE1hcFtFdmVudE5hbWVdO1xuICAgIGxldCBfcmVzb2x2ZTogKChkYXRhOiBEYXRhKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCB3YWl0Rm9yRXZlbnQgPSAoKSA9PiBuZXcgUHJvbWlzZTxEYXRhPigocmVzKSA9PiBfcmVzb2x2ZSA9IHJlcyk7XG4gICAgY29uc3QgcmVzb2x2ZSA9IChkYXRhOiBEYXRhKSA9PiB7XG4gICAgICBfcmVzb2x2ZT8uKGRhdGEpO1xuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xuICAgICAgc29ja2V0Lm9uKFxuICAgICAgICBldmVudCxcbiAgICAgICAgLy8gQHRzLWlnbm9yZSDkvZXmlYXjgYvlnovmjqjoq5bjgavlpLHmlZfjgZnjgotcbiAgICAgICAgcmVzb2x2ZSxcbiAgICAgICk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB5aWVsZCBhd2FpdCB3YWl0Rm9yRXZlbnQoKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHMpIHtcbiAgICAgICAgc29ja2V0Lm9mZihldmVudCwgcmVzb2x2ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgcmVxdWVzdCwgcmVzcG9uc2UgfTtcbn07XG4iLCAiaW1wb3J0IHsgU29ja2V0LCBzb2NrZXRJTyB9IGZyb20gXCIuLi8uLi9kZXBzL3NvY2tldC50c1wiO1xuZXhwb3J0IHR5cGUgeyBTb2NrZXQgfSBmcm9tIFwiLi4vLi4vZGVwcy9zb2NrZXQudHNcIjtcblxuLyoqIOaWsOOBl+OBhHNvY2tldOOCkuS9nOOCiyAqL1xuZXhwb3J0IGNvbnN0IG1ha2VTb2NrZXQgPSAoKTogUHJvbWlzZTxTb2NrZXQ+ID0+IHNvY2tldElPKCk7XG5cbi8qKiB3ZWJzb2NrZXTjgaso5YaNKeaOpee2muOBmeOCi1xuICpcbiAqIEBwYXJhbSBzb2NrZXQg5o6l57aa44GX44Gf44GEc29ja2V0XG4gKi9cbmV4cG9ydCBjb25zdCBjb25uZWN0ID0gYXN5bmMgKHNvY2tldDogU29ja2V0KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGlmIChzb2NrZXQuY29ubmVjdGVkKSByZXR1cm47XG5cbiAgY29uc3Qgd2FpdGluZyA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PlxuICAgIHNvY2tldC5vbmNlKFwiY29ubmVjdFwiLCAoKSA9PiByZXNvbHZlKCkpXG4gICk7XG4gIHNvY2tldC5jb25uZWN0KCk7XG4gIGF3YWl0IHdhaXRpbmc7XG59O1xuXG4vKiogd2Vic29ja2V044KS5YiH5pat44GZ44KLXG4gKlxuICogQHBhcmFtIHNvY2tldCDliIfmlq3jgZfjgZ/jgYRzb2NrZXRcbiAqL1xuZXhwb3J0IGNvbnN0IGRpc2Nvbm5lY3QgPSBhc3luYyAoc29ja2V0OiBTb2NrZXQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgaWYgKHNvY2tldC5kaXNjb25uZWN0ZWQpIHJldHVybjtcblxuICBjb25zdCB3YWl0aW5nID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBvbkRpc2Nvbm5lY3QgPSAocmVhc29uOiBTb2NrZXQuRGlzY29ubmVjdFJlYXNvbikgPT4ge1xuICAgICAgaWYgKHJlYXNvbiAhPT0gXCJpbyBjbGllbnQgZGlzY29ubmVjdFwiKSByZXR1cm47XG4gICAgICByZXNvbHZlKCk7XG4gICAgICBzb2NrZXQub2ZmKFwiZGlzY29ubmVjdFwiLCBvbkRpc2Nvbm5lY3QpO1xuICAgIH07XG4gICAgc29ja2V0Lm9uKFwiZGlzY29ubmVjdFwiLCBvbkRpc2Nvbm5lY3QpO1xuICB9KTtcbiAgc29ja2V0LmRpc2Nvbm5lY3QoKTtcbiAgYXdhaXQgd2FpdGluZztcbn07XG4iLCAiLyoqXG4gKiBUaGUgYWxnb3JpdGhtIGltcGxlbWVudGVkIGhlcmUgaXMgYmFzZWQgb24gXCJBbiBPKE5QKSBTZXF1ZW5jZSBDb21wYXJpc29uIEFsZ29yaXRobVwiXG4gKiBieSBkZXNjcmliZWQgYnkgU3VuIFd1LCBVZGkgTWFuYmVyIGFuZCBHZW5lIE15ZXJzICovXG5cbi8qKiBMSUNFTlNFOiBodHRwczovL2dpdGh1Yi5jb20vY3ViaWNkYWl5YS9vbnAvYmxvYi9tYXN0ZXIvQ09QWUlORyAqL1xuXG50eXBlIFBvc2l0aW9uID0ge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkZWQ8VD4ge1xuICB2YWx1ZTogVDtcbiAgdHlwZTogXCJhZGRlZFwiO1xufVxuZXhwb3J0IGludGVyZmFjZSBEZWxldGVkPFQ+IHtcbiAgdmFsdWU6IFQ7XG4gIHR5cGU6IFwiZGVsZXRlZFwiO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb21tb248VD4ge1xuICB2YWx1ZTogVDtcbiAgdHlwZTogXCJjb21tb25cIjtcbn1cbmV4cG9ydCB0eXBlIENoYW5nZTxUPiA9IEFkZGVkPFQ+IHwgRGVsZXRlZDxUPiB8IENvbW1vbjxUPjtcbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZWQ8VD4ge1xuICB2YWx1ZTogVDtcbiAgb2xkVmFsdWU6IFQ7XG4gIHR5cGU6IFwicmVwbGFjZWRcIjtcbn1cbmV4cG9ydCB0eXBlIEV4dGVuZGVkQ2hhbmdlPFQ+ID0gQ2hhbmdlPFQ+IHwgUmVwbGFjZWQ8VD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlmZlJlc3VsdDxUPiB7XG4gIGZyb206IEFycmF5TGlrZTxUPjtcbiAgdG86IEFycmF5TGlrZTxUPjtcbiAgZWRpdERpc3RhbmNlOiBudW1iZXI7XG4gIGJ1aWxkU0VTKCk6IEdlbmVyYXRvcjxDaGFuZ2U8VD4sIHZvaWQsIHVua25vd24+O1xufVxuXG5leHBvcnQgY29uc3QgZGlmZiA9IDxUPihcbiAgbGVmdDogQXJyYXlMaWtlPFQ+LFxuICByaWdodDogQXJyYXlMaWtlPFQ+LFxuKTogRGlmZlJlc3VsdDxUPiA9PiB7XG4gIGNvbnN0IHJldmVyc2VkID0gbGVmdC5sZW5ndGggPiByaWdodC5sZW5ndGg7XG4gIGNvbnN0IGEgPSByZXZlcnNlZCA/IHJpZ2h0IDogbGVmdDtcbiAgY29uc3QgYiA9IHJldmVyc2VkID8gbGVmdCA6IHJpZ2h0O1xuXG4gIGNvbnN0IG9mZnNldCA9IGEubGVuZ3RoICsgMTtcbiAgY29uc3QgTUFYU0laRSA9IGEubGVuZ3RoICsgYi5sZW5ndGggKyAzO1xuICBjb25zdCBwYXRoID0gbmV3IEFycmF5PG51bWJlcj4oTUFYU0laRSk7XG4gIHBhdGguZmlsbCgtMSk7XG4gIGNvbnN0IHBhdGhwb3MgPSBbXSBhcyBbUG9zaXRpb24sIG51bWJlcl1bXTtcblxuICBmdW5jdGlvbiBzbmFrZShrOiBudW1iZXIsIHA6IG51bWJlciwgcHA6IG51bWJlcikge1xuICAgIGxldCB5ID0gTWF0aC5tYXgocCwgcHApO1xuICAgIGxldCB4ID0geSAtIGs7XG5cbiAgICB3aGlsZSAoeCA8IGEubGVuZ3RoICYmIHkgPCBiLmxlbmd0aCAmJiBhW3hdID09PSBiW3ldKSB7XG4gICAgICArK3g7XG4gICAgICArK3k7XG4gICAgfVxuXG4gICAgcGF0aFtrICsgb2Zmc2V0XSA9IHBhdGhwb3MubGVuZ3RoO1xuICAgIHBhdGhwb3MucHVzaChbeyB4LCB5IH0sIHBhdGhbayArIChwID4gcHAgPyAtMSA6ICsxKSArIG9mZnNldF1dKTtcbiAgICByZXR1cm4geTtcbiAgfVxuXG4gIGNvbnN0IGZwID0gbmV3IEFycmF5PG51bWJlcj4oTUFYU0laRSk7XG4gIGZwLmZpbGwoLTEpO1xuICBsZXQgcCA9IC0xO1xuICBjb25zdCBkZWx0YSA9IGIubGVuZ3RoIC0gYS5sZW5ndGg7XG4gIGRvIHtcbiAgICArK3A7XG4gICAgZm9yIChsZXQgayA9IC1wOyBrIDw9IGRlbHRhIC0gMTsgKytrKSB7XG4gICAgICBmcFtrICsgb2Zmc2V0XSA9IHNuYWtlKGssIGZwW2sgLSAxICsgb2Zmc2V0XSArIDEsIGZwW2sgKyAxICsgb2Zmc2V0XSk7XG4gICAgfVxuICAgIGZvciAobGV0IGsgPSBkZWx0YSArIHA7IGsgPj0gZGVsdGEgKyAxOyAtLWspIHtcbiAgICAgIGZwW2sgKyBvZmZzZXRdID0gc25ha2UoaywgZnBbayAtIDEgKyBvZmZzZXRdICsgMSwgZnBbayArIDEgKyBvZmZzZXRdKTtcbiAgICB9XG4gICAgZnBbZGVsdGEgKyBvZmZzZXRdID0gc25ha2UoXG4gICAgICBkZWx0YSxcbiAgICAgIGZwW2RlbHRhIC0gMSArIG9mZnNldF0gKyAxLFxuICAgICAgZnBbZGVsdGEgKyAxICsgb2Zmc2V0XSxcbiAgICApO1xuICB9IHdoaWxlIChmcFtkZWx0YSArIG9mZnNldF0gIT09IGIubGVuZ3RoKTtcblxuICBjb25zdCBlcGMgPSBbXSBhcyBQb3NpdGlvbltdO1xuICBsZXQgciA9IHBhdGhbZGVsdGEgKyBvZmZzZXRdO1xuICB3aGlsZSAociAhPT0gLTEpIHtcbiAgICBlcGMucHVzaChwYXRocG9zW3JdWzBdKTtcbiAgICByID0gcGF0aHBvc1tyXVsxXTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZnJvbTogbGVmdCxcbiAgICB0bzogcmlnaHQsXG4gICAgZWRpdERpc3RhbmNlOiBkZWx0YSArIHAgKiAyLFxuICAgIGJ1aWxkU0VTOiBmdW5jdGlvbiogKCkge1xuICAgICAgbGV0IHhJbmRleCA9IDA7XG4gICAgICBsZXQgeUluZGV4ID0gMDtcbiAgICAgIGZvciAoY29uc3QgeyB4LCB5IH0gb2YgcmV2ZXJzZShlcGMpKSB7XG4gICAgICAgIHdoaWxlICh4SW5kZXggPCB4IHx8IHlJbmRleCA8IHkpIHtcbiAgICAgICAgICBpZiAoeSAtIHggPiB5SW5kZXggLSB4SW5kZXgpIHtcbiAgICAgICAgICAgIHlpZWxkIHsgdmFsdWU6IGJbeUluZGV4XSwgdHlwZTogcmV2ZXJzZWQgPyBcImRlbGV0ZWRcIiA6IFwiYWRkZWRcIiB9O1xuICAgICAgICAgICAgKyt5SW5kZXg7XG4gICAgICAgICAgfSBlbHNlIGlmICh5IC0geCA8IHlJbmRleCAtIHhJbmRleCkge1xuICAgICAgICAgICAgeWllbGQgeyB2YWx1ZTogYVt4SW5kZXhdLCB0eXBlOiByZXZlcnNlZCA/IFwiYWRkZWRcIiA6IFwiZGVsZXRlZFwiIH07XG4gICAgICAgICAgICArK3hJbmRleDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgeWllbGQgeyB2YWx1ZTogYVt4SW5kZXhdLCB0eXBlOiBcImNvbW1vblwiIH07XG4gICAgICAgICAgICArK3hJbmRleDtcbiAgICAgICAgICAgICsreUluZGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24qIHRvRXh0ZW5kZWRDaGFuZ2VzPFQ+KFxuICBjaGFuZ2VzOiBJdGVyYWJsZTxDaGFuZ2U8VD4+LFxuKTogR2VuZXJhdG9yPEV4dGVuZGVkQ2hhbmdlPFQ+LCB2b2lkLCB1bmtub3duPiB7XG4gIGxldCBhZGRlZExpc3QgPSBbXSBhcyBBZGRlZDxUPltdO1xuICBsZXQgZGVsZXRlZExpc3QgPSBbXSBhcyBEZWxldGVkPFQ+W107XG5cbiAgZnVuY3Rpb24qIGZsdXNoKCkge1xuICAgIGlmIChhZGRlZExpc3QubGVuZ3RoID4gZGVsZXRlZExpc3QubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlbGV0ZWRMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHlpZWxkIG1ha2VSZXBsYWNlZChcbiAgICAgICAgICBhZGRlZExpc3RbaV0sXG4gICAgICAgICAgZGVsZXRlZExpc3RbaV0sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBpID0gZGVsZXRlZExpc3QubGVuZ3RoOyBpIDwgYWRkZWRMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHlpZWxkIGFkZGVkTGlzdFtpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhZGRlZExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgeWllbGQgbWFrZVJlcGxhY2VkKFxuICAgICAgICAgIGFkZGVkTGlzdFtpXSxcbiAgICAgICAgICBkZWxldGVkTGlzdFtpXSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGkgPSBhZGRlZExpc3QubGVuZ3RoOyBpIDwgZGVsZXRlZExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgeWllbGQgZGVsZXRlZExpc3RbaV07XG4gICAgICB9XG4gICAgfVxuICAgIGFkZGVkTGlzdCA9IFtdO1xuICAgIGRlbGV0ZWRMaXN0ID0gW107XG4gIH1cblxuICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBjaGFuZ2VzKSB7XG4gICAgc3dpdGNoIChjaGFuZ2UudHlwZSkge1xuICAgICAgY2FzZSBcImFkZGVkXCI6XG4gICAgICAgIGFkZGVkTGlzdC5wdXNoKGNoYW5nZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImRlbGV0ZWRcIjpcbiAgICAgICAgZGVsZXRlZExpc3QucHVzaChjaGFuZ2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJjb21tb25cIjpcbiAgICAgICAgeWllbGQqIGZsdXNoKCk7XG4gICAgICAgIHlpZWxkIGNoYW5nZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHlpZWxkKiBmbHVzaCgpO1xufVxuXG5jb25zdCBtYWtlUmVwbGFjZWQgPSA8VD4oXG4gIGxlZnQ6IEFkZGVkPFQ+LFxuICByaWdodDogRGVsZXRlZDxUPixcbik6IFJlcGxhY2VkPFQ+ID0+ICh7XG4gIHZhbHVlOiBsZWZ0LnZhbHVlLFxuICBvbGRWYWx1ZTogcmlnaHQudmFsdWUsXG4gIHR5cGU6IFwicmVwbGFjZWRcIixcbn0pO1xuXG5mdW5jdGlvbiogcmV2ZXJzZTxUPihsaXN0OiBBcnJheUxpa2U8VD4pIHtcbiAgZm9yIChsZXQgaSA9IGxpc3QubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB5aWVsZCBsaXN0W2ldO1xuICB9XG59XG4iLCAiLyoqIOato+W4uOWApOOBqOeVsOW4uOWApOOCkuagvOe0jeOBmeOCi+WeiyAqL1xuZXhwb3J0IHR5cGUgUmVzdWx0PFQsIEU+ID0geyBvazogdHJ1ZTsgdmFsdWU6IFQgfSB8IHsgb2s6IGZhbHNlOyB2YWx1ZTogRSB9O1xuXG4vKiogbmV0d29ya+OBi+OCiWRhdGHjgpLjgajjgaPjgabjgY/jgovlh6bnkIZcbiAqXG4gKiBpbnRlcmZhY2Xjga9gZmV0Y2goKWDjgajlkIzjgZhcbiAqL1xuZXhwb3J0IHR5cGUgRmV0Y2ggPSAoXG4gIGlucHV0OiBzdHJpbmcgfCBSZXF1ZXN0LFxuICBpbml0PzogUmVxdWVzdEluaXQsXG4pID0+IFByb21pc2U8UmVzcG9uc2U+O1xuXG4vKiog5YWo44Gm44GuUkVTVCBBUEnjgavlhbHpgJrjgZnjgotvcGl0b25zICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VPcHRpb25zIHtcbiAgLyoqIGNvbm5lY3Quc2lkXG4gICAqXG4gICAqIHByaXZhdGUgcHJvamVjdOOBruODh+ODvOOCv+OChHNjcmFwYm94IGFjY291bnTjgavntJDku5jjgYTjgZ/jg4fjg7zjgr/jgpLlj5blvpfjgZnjgovpmpvjgavlv4XopoHjgaroqo3oqLzmg4XloLFcbiAgICovXG4gIHNpZD86IHN0cmluZztcblxuICAvKiog44OH44O844K/44Gu5Y+W5b6X44Gr5L2/44GG5Yem55CGXG4gICAqXG4gICAqIEBkZWZhdWx0IGZldGNoXG4gICAqL1xuICBmZXRjaD86IEZldGNoO1xuXG4gIC8qKiBSRVNUIEFQSeOBrmRvbWFpblxuICAgKlxuICAgKiDjgqrjg7Pjg5fjg6zniYhzY3JhcGJveOOBquOBqeOBoOOBqOOAgXNjcmFwYm94Lmlv5Lul5aSW44GuaG9zdCBuYW1l44Gr44Gq44KL44Gu44Gn44CB5LqI44KB5aSJ44GI44KJ44KM44KL44KI44GG44Gr44GX44Gm44GK44GPXG4gICAqXG4gICAqIEBkZWZhdWx0IFwic2NyYXBib3guaW9cIlxuICAgKi9cbiAgaG9zdE5hbWU/OiBzdHJpbmc7XG59XG4vKiogQmFzZWVPcHRpb25z44GrQ1NSRuaDheWgseOCkuWFpeOCjOOBn+OCguOBriAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlbmRlZE9wdGlvbnMgZXh0ZW5kcyBCYXNlT3B0aW9ucyB7XG4gIC8qKiBDU1JGIHRva2VuXG4gICAqXG4gICAqIElmIGl0IGlzbid0IHNldCwgYXV0b21hdGljYWxseSBnZXQgQ1NSRiB0b2tlbiBmcm9tIHNjcmFwYm94LmlvIHNlcnZlci5cbiAgICovXG4gIGNzcmY/OiBzdHJpbmc7XG59XG5cbi8qKiBCYXNlT3B0aW9uc+OBruaXouWumuWApOOCkuWfi+OCgeOCiyAqL1xuZXhwb3J0IGNvbnN0IHNldERlZmF1bHRzID0gPFQgZXh0ZW5kcyBCYXNlT3B0aW9ucyA9IEJhc2VPcHRpb25zPihcbiAgb3B0aW9uczogVCxcbik6IE9taXQ8VCwgXCJmZXRjaFwiIHwgXCJob3N0TmFtZVwiPiAmIFJlcXVpcmVkPE9taXQ8QmFzZU9wdGlvbnMsIFwic2lkXCI+PiA9PiB7XG4gIGNvbnN0IHsgZmV0Y2ggPSBnbG9iYWxUaGlzLmZldGNoLCBob3N0TmFtZSA9IFwic2NyYXBib3guaW9cIiwgLi4ucmVzdCB9ID1cbiAgICBvcHRpb25zO1xuICByZXR1cm4geyBmZXRjaCwgaG9zdE5hbWUsIC4uLnJlc3QgfTtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBFcnJvckxpa2UgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbi8vIFRoZXNlIGNvZGUgYXJlIGJhc2VkIG9uIGh0dHBzOi8vZGVuby5sYW5kL3gvdW5rbm93bnV0aWxAdjEuMS4wL2lzLnRzXG5cbmV4cG9ydCBjb25zdCBpc05vbmUgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyB1bmRlZmluZWQgfCBudWxsID0+XG4gIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG5leHBvcnQgY29uc3QgaXNTdHJpbmcgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmcgPT5cbiAgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiO1xuZXhwb3J0IGNvbnN0IGlzTnVtYmVyID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgbnVtYmVyID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIjtcbmV4cG9ydCBjb25zdCBpc0FycmF5ID0gPFQ+KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgVFtdID0+XG4gIEFycmF5LmlzQXJyYXkodmFsdWUpO1xuZXhwb3J0IGNvbnN0IGlzT2JqZWN0ID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT5cbiAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsO1xuXG5leHBvcnQgY29uc3QgaXNFcnJvckxpa2UgPSAoZTogdW5rbm93bik6IGUgaXMgRXJyb3JMaWtlID0+IHtcbiAgaWYgKCFpc09iamVjdChlKSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gKGUubmFtZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBlLm5hbWUgPT09IFwic3RyaW5nXCIpICYmXG4gICAgdHlwZW9mIGUubWVzc2FnZSA9PT0gXCJzdHJpbmdcIjtcbn07XG5cbi8qKiDkuI7jgYjjgonjgozjgZ9vYmplY3TjgoLjgZfjgY/jga9KU09O44OG44Kt44K544OI44KSRXJyb3JMaWtl44Gr5aSJ5o+b44Gn44GN44KL44GL44Gp44GG44GL6Kmm44GZXG4gKlxuICogQHBhcmFtIGUg6Kmm44GX44Gf44GEb2JqZWN044KC44GX44GP44Gv44OG44Kt44K544OIXG4gKiBAcmV0dXJuIOWkieaPm+OBp+OBjeOBquOBi+OBo+OBn+OCiWBmYWxzZWDjgpLov5TjgZnjgILlpInmj5vjgafjgY3jgZ/jgonjgZ3jga5vYmplY3TjgpLov5TjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IHRyeVRvRXJyb3JMaWtlID0gKGU6IHVua25vd24pOiBmYWxzZSB8IEVycm9yTGlrZSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QganNvbiA9IHR5cGVvZiBlID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShlKSA6IGU7XG4gICAgaWYgKCFpc0Vycm9yTGlrZShqc29uKSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBqc29uO1xuICB9IGNhdGNoIChlMjogdW5rbm93bikge1xuICAgIGlmIChlMiBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gSlNPTuOBrnBhcnNlIGVycm9y5Lul5aSW44Gv44Gd44Gu44G+44G+5oqV44GS44KLXG4gICAgdGhyb3cgZTI7XG4gIH1cbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBFcnJvckxpa2UgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1yZXN0LnRzXCI7XG5pbXBvcnQgeyB0cnlUb0Vycm9yTGlrZSB9IGZyb20gXCIuLi9pcy50c1wiO1xuXG4vKiog5oOz5a6a44GV44KM44Gq44GE5b+c562U44GM5biw44Gj44Gm44GN44Gf44Go44GN44Gr5oqV44GS44KL5L6L5aSWICovXG5leHBvcnQgY2xhc3MgVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIG5hbWUgPSBcIlVuZXhwZWN0ZWRSZXNwb25zZUVycm9yXCI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlc3BvbnNlOiBSZXNwb25zZSxcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBgJHtyZXNwb25zZS5zdGF0dXN9ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH0gd2hlbiBmZXRjaGluZyAke3Jlc3BvbnNlLnVybH1gLFxuICAgICk7XG5cbiAgICAvLyBAdHMtaWdub3JlIG9ubHkgYXZhaWxhYmxlIG9uIFY4XG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgICAvLyBAdHMtaWdub3JlIG9ubHkgYXZhaWxhYmxlIG9uIFY4XG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBVbmV4cGVjdGVkUmVzcG9uc2VFcnJvcik7XG4gICAgfVxuICB9XG59XG5cbi8qKiDlpLHmlZfjgZfjgZ/opoHmsYLjgYvjgonjgqjjg6njg7zmg4XloLHjgpLlj5bjgorlh7rjgZkgKi9cbmV4cG9ydCBjb25zdCBtYWtlRXJyb3IgPSBhc3luYyA8VCBleHRlbmRzIEVycm9yTGlrZT4oXG4gIHJlczogUmVzcG9uc2UsXG4pOiBQcm9taXNlPHsgb2s6IGZhbHNlOyB2YWx1ZTogVCB9PiA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gcmVzLmNsb25lKCk7XG4gIGNvbnN0IHRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gIGNvbnN0IHZhbHVlID0gdHJ5VG9FcnJvckxpa2UodGV4dCk7XG4gIGlmICghdmFsdWUpIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IocmVzcG9uc2UpO1xuICB9XG4gIHJldHVybiB7XG4gICAgb2s6IGZhbHNlLFxuICAgIHZhbHVlOiB2YWx1ZSBhcyBULFxuICB9O1xufTtcbiIsICJpbXBvcnQgdHlwZSB7IEd1ZXN0VXNlciwgTWVtYmVyVXNlciB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IGNvb2tpZSB9IGZyb20gXCIuL2F1dGgudHNcIjtcbmltcG9ydCB7IEJhc2VPcHRpb25zLCBzZXREZWZhdWx0cyB9IGZyb20gXCIuL3V0aWwudHNcIjtcbmltcG9ydCB7IFVuZXhwZWN0ZWRSZXNwb25zZUVycm9yIH0gZnJvbSBcIi4vZXJyb3IudHNcIjtcblxuLyoqIGdldCB1c2VyIHByb2ZpbGVcbiAqXG4gKiBAcGFyYW0gaW5pdCBjb25uZWN0LnNpZCBldGMuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRQcm9maWxlID0gYXN5bmMgKFxuICBpbml0PzogQmFzZU9wdGlvbnMsXG4pOiBQcm9taXNlPE1lbWJlclVzZXIgfCBHdWVzdFVzZXI+ID0+IHtcbiAgY29uc3QgeyBzaWQsIGhvc3ROYW1lLCBmZXRjaCB9ID0gc2V0RGVmYXVsdHMoaW5pdCA/PyB7fSk7XG4gIGNvbnN0IHJlcXVlc3QgPSBuZXcgUmVxdWVzdChcbiAgICBgaHR0cHM6Ly8ke2hvc3ROYW1lfS9hcGkvdXNlcnMvbWVgLFxuICAgIHNpZCA/IHsgaGVhZGVyczogeyBDb29raWU6IGNvb2tpZShzaWQpIH0gfSA6IHVuZGVmaW5lZCxcbiAgKTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZXF1ZXN0KTtcbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkUmVzcG9uc2VFcnJvcihyZXNwb25zZSk7XG4gIH1cbiAgcmV0dXJuIChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIE1lbWJlclVzZXIgfCBHdWVzdFVzZXI7XG59O1xuIiwgImltcG9ydCB7IGdldFByb2ZpbGUgfSBmcm9tIFwiLi9wcm9maWxlLnRzXCI7XG5pbXBvcnQgeyBCYXNlT3B0aW9ucyB9IGZyb20gXCIuL3V0aWwudHNcIjtcblxuLy8gc2NyYXBib3guaW/lhoXjgarjgolgd2luZG93Ll9jc3JmYOOBq0NTUkYgdG9rZW7jgYzlhaXjgaPjgabjgYTjgotcbmRlY2xhcmUgZ2xvYmFsIHtcbiAgLy8gZ2xvYmFsVGhpc+OBq+WkieaVsOOCkuWuo+iogOOBmeOCi+OBq+OBr+OAgWB2YXJg44KS5L2/44GG44GX44GL44Gq44GEXG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tdmFyXG4gIHZhciBfY3NyZjogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG4vKiogSFRUUCBoZWFkZXLjga5Db29raWXjgavlhaXjgozjgovmloflrZfliJfjgpLkvZzjgotcbiAqXG4gKiBAcGFyYW0gc2lkIGNvbm5lY3Quc2lk44Gr5YWl44Gj44Gm44GE44KL5paH5a2X5YiXXG4gKi9cbmV4cG9ydCBjb25zdCBjb29raWUgPSAoc2lkOiBzdHJpbmcpOiBzdHJpbmcgPT4gYGNvbm5lY3Quc2lkPSR7c2lkfWA7XG5cbi8qKiBDU1JGIHRva2Vu44KS5Y+W5b6X44GZ44KLXG4gKlxuICogQHBhcmFtIGluaXQg6KqN6Ki85oOF5aCx44Gq44GpXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDU1JGVG9rZW4gPSBhc3luYyAoXG4gIGluaXQ/OiBCYXNlT3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGlmIChnbG9iYWxUaGlzLl9jc3JmKSByZXR1cm4gZ2xvYmFsVGhpcy5fY3NyZjtcblxuICBjb25zdCB1c2VyID0gYXdhaXQgZ2V0UHJvZmlsZShpbml0KTtcbiAgcmV0dXJuIHVzZXIuY3NyZlRva2VuO1xufTtcbiIsICJpbXBvcnQgdHlwZSB7XG4gIE1lbWJlclByb2plY3QsXG4gIE5vdEZvdW5kRXJyb3IsXG4gIE5vdExvZ2dlZEluRXJyb3IsXG4gIE5vdE1lbWJlckVycm9yLFxuICBOb3RNZW1iZXJQcm9qZWN0LFxuICBQcm9qZWN0SWQsXG4gIFByb2plY3RSZXNwb25zZSxcbn0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuaW1wb3J0IHsgY29va2llIH0gZnJvbSBcIi4vYXV0aC50c1wiO1xuaW1wb3J0IHsgbWFrZUVycm9yIH0gZnJvbSBcIi4vZXJyb3IudHNcIjtcbmltcG9ydCB7IEJhc2VPcHRpb25zLCBSZXN1bHQsIHNldERlZmF1bHRzIH0gZnJvbSBcIi4vdXRpbC50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdldFByb2plY3Qge1xuICAvKiogL2FwaS9wcm9qZWN0Lzpwcm9qZWN0IOOBruimgeaxguOCkue1hOOBv+eri+OBpuOCi1xuICAgKlxuICAgKiBAcGFyYW0gcHJvamVjdCBwcm9qZWN0IG5hbWUgdG8gZ2V0XG4gICAqIEBwYXJhbSBpbml0IGNvbm5lY3Quc2lkIGV0Yy5cbiAgICogQHJldHVybiByZXF1ZXN0XG4gICAqL1xuICB0b1JlcXVlc3Q6IChcbiAgICBwcm9qZWN0OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IEJhc2VPcHRpb25zLFxuICApID0+IFJlcXVlc3Q7XG5cbiAgLyoqIOW4sOOBo+OBpuOBjeOBn+W/nOetlOOBi+OCiXByb2plY3Tjga5KU09O44OH44O844K/44KS5Y+W5b6X44GZ44KLXG4gICAqXG4gICAqIEBwYXJhbSByZXMg5b+c562UXG4gICAqIEByZXR1cm4gcHJvamVjdOOBrkpTT07jg4fjg7zjgr9cbiAgICovXG4gIGZyb21SZXNwb25zZTogKHJlczogUmVzcG9uc2UpID0+IFByb21pc2U8XG4gICAgUmVzdWx0PFxuICAgICAgTWVtYmVyUHJvamVjdCB8IE5vdE1lbWJlclByb2plY3QsXG4gICAgICBOb3RGb3VuZEVycm9yIHwgTm90TWVtYmVyRXJyb3IgfCBOb3RMb2dnZWRJbkVycm9yXG4gICAgPlxuICA+O1xuXG4gIChwcm9qZWN0OiBzdHJpbmcsIG9wdGlvbnM/OiBCYXNlT3B0aW9ucyk6IFByb21pc2U8XG4gICAgUmVzdWx0PFxuICAgICAgTWVtYmVyUHJvamVjdCB8IE5vdE1lbWJlclByb2plY3QsXG4gICAgICBOb3RGb3VuZEVycm9yIHwgTm90TWVtYmVyRXJyb3IgfCBOb3RMb2dnZWRJbkVycm9yXG4gICAgPlxuICA+O1xufVxuXG5jb25zdCBnZXRQcm9qZWN0X3RvUmVxdWVzdDogR2V0UHJvamVjdFtcInRvUmVxdWVzdFwiXSA9IChwcm9qZWN0LCBpbml0KSA9PiB7XG4gIGNvbnN0IHsgc2lkLCBob3N0TmFtZSB9ID0gc2V0RGVmYXVsdHMoaW5pdCA/PyB7fSk7XG5cbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KFxuICAgIGBodHRwczovLyR7aG9zdE5hbWV9L2FwaS9wcm9qZWN0cy8ke3Byb2plY3R9YCxcbiAgICBzaWQgPyB7IGhlYWRlcnM6IHsgQ29va2llOiBjb29raWUoc2lkKSB9IH0gOiB1bmRlZmluZWQsXG4gICk7XG59O1xuXG5jb25zdCBnZXRQcm9qZWN0X2Zyb21SZXNwb25zZTogR2V0UHJvamVjdFtcImZyb21SZXNwb25zZVwiXSA9IGFzeW5jIChyZXMpID0+IHtcbiAgaWYgKCFyZXMub2spIHtcbiAgICByZXR1cm4gbWFrZUVycm9yPE5vdEZvdW5kRXJyb3IgfCBOb3RNZW1iZXJFcnJvciB8IE5vdExvZ2dlZEluRXJyb3I+KHJlcyk7XG4gIH1cblxuICBjb25zdCB2YWx1ZSA9IChhd2FpdCByZXMuanNvbigpKSBhcyBNZW1iZXJQcm9qZWN0IHwgTm90TWVtYmVyUHJvamVjdDtcbiAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlIH07XG59O1xuXG4vKiogZ2V0IHRoZSBwcm9qZWN0IGluZm9ybWF0aW9uXG4gKlxuICogQHBhcmFtIHByb2plY3QgcHJvamVjdCBuYW1lIHRvIGdldFxuICogQHBhcmFtIGluaXQgY29ubmVjdC5zaWQgZXRjLlxuICovXG5leHBvcnQgY29uc3QgZ2V0UHJvamVjdDogR2V0UHJvamVjdCA9IGFzeW5jIChcbiAgcHJvamVjdCxcbiAgaW5pdCxcbikgPT4ge1xuICBjb25zdCB7IGZldGNoIH0gPSBzZXREZWZhdWx0cyhpbml0ID8/IHt9KTtcblxuICBjb25zdCByZXEgPSBnZXRQcm9qZWN0X3RvUmVxdWVzdChwcm9qZWN0LCBpbml0KTtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gocmVxKTtcblxuICByZXR1cm4gZ2V0UHJvamVjdF9mcm9tUmVzcG9uc2UocmVzKTtcbn07XG5cbmdldFByb2plY3QudG9SZXF1ZXN0ID0gZ2V0UHJvamVjdF90b1JlcXVlc3Q7XG5nZXRQcm9qZWN0LmZyb21SZXNwb25zZSA9IGdldFByb2plY3RfZnJvbVJlc3BvbnNlO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RQcm9qZWN0cyB7XG4gIC8qKiAvYXBpL3Byb2plY3Qg44Gu6KaB5rGC44KS57WE44G/56uL44Gm44KLXG4gICAqXG4gICAqIEBwYXJhbSBwcm9qZWN0SWRzIHByb2plY3QgaWRzLiBUaGlzIG11c3QgaGF2ZSBtb3JlIHRoYW4gMSBpZFxuICAgKiBAcGFyYW0gaW5pdCBjb25uZWN0LnNpZCBldGMuXG4gICAqIEByZXR1cm4gcmVxdWVzdFxuICAgKi9cbiAgdG9SZXF1ZXN0OiAoXG4gICAgcHJvamVjdElkczogUHJvamVjdElkW10sXG4gICAgaW5pdD86IEJhc2VPcHRpb25zLFxuICApID0+IFJlcXVlc3Q7XG5cbiAgLyoqIOW4sOOBo+OBpuOBjeOBn+W/nOetlOOBi+OCiXByb2plY3Tjga5KU09O44OH44O844K/44KS5Y+W5b6X44GZ44KLXG4gICAqXG4gICAqIEBwYXJhbSByZXMg5b+c562UXG4gICAqIEByZXR1cm4gcHJvamVjdOOBrkpTT07jg4fjg7zjgr9cbiAgICovXG4gIGZyb21SZXNwb25zZTogKFxuICAgIHJlczogUmVzcG9uc2UsXG4gICkgPT4gUHJvbWlzZTxSZXN1bHQ8UHJvamVjdFJlc3BvbnNlLCBOb3RMb2dnZWRJbkVycm9yPj47XG5cbiAgKFxuICAgIHByb2plY3RJZHM6IFByb2plY3RJZFtdLFxuICAgIGluaXQ/OiBCYXNlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxSZXN1bHQ8UHJvamVjdFJlc3BvbnNlLCBOb3RMb2dnZWRJbkVycm9yPj47XG59XG5cbmNvbnN0IExpc3RQcm9qZWN0X3RvUmVxdWVzdDogTGlzdFByb2plY3RzW1widG9SZXF1ZXN0XCJdID0gKHByb2plY3RJZHMsIGluaXQpID0+IHtcbiAgY29uc3QgeyBzaWQsIGhvc3ROYW1lIH0gPSBzZXREZWZhdWx0cyhpbml0ID8/IHt9KTtcbiAgY29uc3QgcGFyYW0gPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gIGZvciAoY29uc3QgaWQgb2YgcHJvamVjdElkcykge1xuICAgIHBhcmFtLmFwcGVuZChcImlkc1wiLCBpZCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlcXVlc3QoXG4gICAgYGh0dHBzOi8vJHtob3N0TmFtZX0vYXBpL3Byb2plY3RzPyR7cGFyYW0udG9TdHJpbmcoKX1gLFxuICAgIHNpZCA/IHsgaGVhZGVyczogeyBDb29raWU6IGNvb2tpZShzaWQpIH0gfSA6IHVuZGVmaW5lZCxcbiAgKTtcbn07XG5cbmNvbnN0IExpc3RQcm9qZWN0X2Zyb21SZXNwb25zZTogTGlzdFByb2plY3RzW1wiZnJvbVJlc3BvbnNlXCJdID0gYXN5bmMgKHJlcykgPT4ge1xuICBpZiAoIXJlcy5vaykge1xuICAgIHJldHVybiBtYWtlRXJyb3I8Tm90TG9nZ2VkSW5FcnJvcj4ocmVzKTtcbiAgfVxuXG4gIGNvbnN0IHZhbHVlID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIFByb2plY3RSZXNwb25zZTtcbiAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlIH07XG59O1xuXG4vKiogbGlzdCB0aGUgcHJvamVjdHMnIGluZm9ybWF0aW9uXG4gKlxuICogQHBhcmFtIHByb2plY3RJZHMgcHJvamVjdCBpZHMuIFRoaXMgbXVzdCBoYXZlIG1vcmUgdGhhbiAxIGlkXG4gKiBAcGFyYW0gaW5pdCBjb25uZWN0LnNpZCBldGMuXG4gKi9cbmV4cG9ydCBjb25zdCBsaXN0UHJvamVjdHM6IExpc3RQcm9qZWN0cyA9IGFzeW5jIChcbiAgcHJvamVjdElkcyxcbiAgaW5pdCxcbikgPT4ge1xuICBjb25zdCB7IGZldGNoIH0gPSBzZXREZWZhdWx0cyhpbml0ID8/IHt9KTtcblxuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChMaXN0UHJvamVjdF90b1JlcXVlc3QocHJvamVjdElkcywgaW5pdCkpO1xuXG4gIHJldHVybiBMaXN0UHJvamVjdF9mcm9tUmVzcG9uc2UocmVzKTtcbn07XG5cbmxpc3RQcm9qZWN0cy50b1JlcXVlc3QgPSBMaXN0UHJvamVjdF90b1JlcXVlc3Q7XG5saXN0UHJvamVjdHMuZnJvbVJlc3BvbnNlID0gTGlzdFByb2plY3RfZnJvbVJlc3BvbnNlO1xuIiwgImltcG9ydCB7IGdldFByb2plY3QgfSBmcm9tIFwiLi4vLi4vcmVzdC9wcm9qZWN0LnRzXCI7XG5pbXBvcnQgeyBnZXRQcm9maWxlIH0gZnJvbSBcIi4uLy4uL3Jlc3QvcHJvZmlsZS50c1wiO1xuXG4vKiogY2FjaGVkIHVzZXIgSUQgKi9cbmxldCB1c2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbmV4cG9ydCBjb25zdCBnZXRVc2VySWQgPSBhc3luYyAoKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgaWYgKHVzZXJJZCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gdXNlcklkO1xuXG4gIGNvbnN0IHVzZXIgPSBhd2FpdCBnZXRQcm9maWxlKCk7XG4gIGlmICh1c2VyLmlzR3Vlc3QpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0aGlzIHNjcmlwdCBjYW4gb25seSBiZSBleGVjdXRlZCBieSBMb2dnZWQgaW4gdXNlcnNcIik7XG4gIH1cbiAgdXNlcklkID0gdXNlci5pZDtcbiAgcmV0dXJuIHVzZXJJZDtcbn07XG5cbi8qKiBjYWNoZWQgcGFpcnMgb2YgcHJvamVjdCBuYW1lIGFuZCBwcm9qZWN0IGlkICovXG5jb25zdCBwcm9qZWN0TWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbmV4cG9ydCBjb25zdCBnZXRQcm9qZWN0SWQgPSBhc3luYyAocHJvamVjdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgY29uc3QgY2FjaGVkSWQgPSBwcm9qZWN0TWFwLmdldChwcm9qZWN0KTtcbiAgaWYgKGNhY2hlZElkICE9PSB1bmRlZmluZWQpIHJldHVybiBjYWNoZWRJZDtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRQcm9qZWN0KHByb2plY3QpO1xuICBpZiAoIXJlc3VsdC5vaykge1xuICAgIGNvbnN0IHsgbmFtZSwgbWVzc2FnZSB9ID0gcmVzdWx0LnZhbHVlO1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtuYW1lfSAke21lc3NhZ2V9YCk7XG4gIH1cbiAgY29uc3QgeyBpZCB9ID0gcmVzdWx0LnZhbHVlO1xuICBwcm9qZWN0TWFwLnNldChwcm9qZWN0LCBpZCk7XG4gIHJldHVybiBpZDtcbn07XG5cbmNvbnN0IHplcm8gPSAobjogc3RyaW5nKSA9PiBuLnBhZFN0YXJ0KDgsIFwiMFwiKTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU5ld0xpbmVJZCA9ICh1c2VySWQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHRpbWUgPSBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCkudG9TdHJpbmcoMTYpO1xuICBjb25zdCByYW5kID0gTWF0aC5mbG9vcigweEZGRkZGRSAqIE1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDE2KTtcbiAgcmV0dXJuIGAke3plcm8odGltZSkuc2xpY2UoLTgpfSR7dXNlcklkLnNsaWNlKC02KX0wMDAwJHt6ZXJvKHJhbmQpfWA7XG59O1xuZXhwb3J0IGNvbnN0IGdldFVuaXhUaW1lRnJvbUlkID0gKGlkOiBzdHJpbmcpOiBudW1iZXIgPT4ge1xuICBpZiAoIWlzSWQoaWQpKSB0aHJvdyBTeW50YXhFcnJvcihgXCIke2lkfVwiIGlzIGFuIGludmFsaWQgaWQuYCk7XG5cbiAgcmV0dXJuIHBhcnNlSW50KGAweCR7aWQuc2xpY2UoMCwgOCl9YCwgMTYpO1xufTtcbmV4cG9ydCBjb25zdCBpc0lkID0gKGlkOiBzdHJpbmcpOiBib29sZWFuID0+IC9eW2EtZlxcZF17MjQsMzJ9JC8udGVzdChpZCk7XG4iLCAiaW1wb3J0IHsgZGlmZiwgdG9FeHRlbmRlZENoYW5nZXMgfSBmcm9tIFwiLi4vLi4vZGVwcy9vbnAudHNcIjtcbmltcG9ydCB0eXBlIHsgTGluZSB9IGZyb20gXCIuLi8uLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIERlbGV0ZUNoYW5nZSxcbiAgSW5zZXJ0Q2hhbmdlLFxuICBVcGRhdGVDaGFuZ2UsXG59IGZyb20gXCIuLi8uLi9kZXBzL3NvY2tldC50c1wiO1xuaW1wb3J0IHsgY3JlYXRlTmV3TGluZUlkIH0gZnJvbSBcIi4vaWQudHNcIjtcblxudHlwZSBPcHRpb25zID0ge1xuICB1c2VySWQ6IHN0cmluZztcbn07XG5leHBvcnQgZnVuY3Rpb24qIGRpZmZUb0NoYW5nZXMoXG4gIGxlZnQ6IFBpY2s8TGluZSwgXCJ0ZXh0XCIgfCBcImlkXCI+W10sXG4gIHJpZ2h0OiBzdHJpbmdbXSxcbiAgeyB1c2VySWQgfTogT3B0aW9ucyxcbik6IEdlbmVyYXRvcjxEZWxldGVDaGFuZ2UgfCBJbnNlcnRDaGFuZ2UgfCBVcGRhdGVDaGFuZ2UsIHZvaWQsIHVua25vd24+IHtcbiAgY29uc3QgeyBidWlsZFNFUyB9ID0gZGlmZihcbiAgICBsZWZ0Lm1hcCgoeyB0ZXh0IH0pID0+IHRleHQpLFxuICAgIHJpZ2h0LFxuICApO1xuICBsZXQgbGluZU5vID0gMDtcbiAgbGV0IGxpbmVJZCA9IGxlZnRbMF0uaWQ7XG4gIGZvciAoY29uc3QgY2hhbmdlIG9mIHRvRXh0ZW5kZWRDaGFuZ2VzKGJ1aWxkU0VTKCkpKSB7XG4gICAgc3dpdGNoIChjaGFuZ2UudHlwZSkge1xuICAgICAgY2FzZSBcImFkZGVkXCI6XG4gICAgICAgIHlpZWxkIHtcbiAgICAgICAgICBfaW5zZXJ0OiBsaW5lSWQsXG4gICAgICAgICAgbGluZXM6IHtcbiAgICAgICAgICAgIGlkOiBjcmVhdGVOZXdMaW5lSWQodXNlcklkKSxcbiAgICAgICAgICAgIHRleHQ6IGNoYW5nZS52YWx1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIGNhc2UgXCJkZWxldGVkXCI6XG4gICAgICAgIHlpZWxkIHtcbiAgICAgICAgICBfZGVsZXRlOiBsaW5lSWQsXG4gICAgICAgICAgbGluZXM6IC0xLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJyZXBsYWNlZFwiOlxuICAgICAgICB5aWVsZCB7XG4gICAgICAgICAgX3VwZGF0ZTogbGluZUlkLFxuICAgICAgICAgIGxpbmVzOiB7IHRleHQ6IGNoYW5nZS52YWx1ZSB9LFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgbGluZU5vKys7XG4gICAgbGluZUlkID0gbGVmdFtsaW5lTm9dPy5pZCA/PyBcIl9lbmRcIjtcbiAgfVxufVxuIiwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgIi8qKiDmloflrZfliJfjgpJ0aXRsZUxj5b2i5byP44Gr5aSJ5o+b44GZ44KLXG4gKlxuICogLSBgIGAgLT4gYF9gXG4gKlxuICogLSDlpKfmloflrZcgLT4g5bCP5paH5a2XXG4gKlxuICog44Oq44Oz44Kv44Gu562J5YCk5q+U6LyD44KS44GZ44KL6Zqb44Gr5Li744Gr5L2/44KP44KM44KLXG4gKlxuICogQHBhcmFtIHRleHQg5aSJ5o+b44GZ44KL5paH5a2X5YiXXG4gKiBAcmV0dXJuIOWkieaPm+W+jOOBruaWh+Wtl+WIl1xuICovXG5leHBvcnQgY29uc3QgdG9UaXRsZUxjID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICB0ZXh0LnJlcGxhY2VBbGwoXCIgXCIsIFwiX1wiKS50b0xvd2VyQ2FzZSgpO1xuXG4vKiogYF9g44KS5Y2K6KeS44K544Oa44O844K544Gr5aSJ5o+b44GZ44KLXG4gKlxuICogQHBhcmFtIHRleHQg5aSJ5o+b44GZ44KL5paH5a2X5YiXXG4gKiBAcmV0dXJuIOWkieaPm+W+jOOBruaWh+Wtl+WIl1xuICovXG5leHBvcnQgY29uc3QgcmV2ZXJ0VGl0bGVMYyA9ICh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgdGV4dC5yZXBsYWNlQWxsKFwiX1wiLCBcIiBcIik7XG5cbi8qKiB0aXRsZeOCklVSSeOBp+S9v+OBiOOCi+W9ouW8j+OBq0VuY29kZeOBmeOCi1xuICpcbiAqIEBwYXJhbSB0aXRsZSDlpInmj5vjgZnjgot0aXRsZVxuICogQHJldHVybiDlpInmj5vlvozjga7mloflrZfliJdcbiAqL1xuZXhwb3J0IGNvbnN0IGVuY29kZVRpdGxlVVJJID0gKHRpdGxlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gWy4uLnRpdGxlXS5tYXAoKGNoYXIsIGluZGV4KSA9PiB7XG4gICAgaWYgKGNoYXIgPT09IFwiIFwiKSByZXR1cm4gXCJfXCI7XG4gICAgaWYgKFxuICAgICAgIW5vRW5jb2RlQ2hhcnMuaW5jbHVkZXMoY2hhcikgfHxcbiAgICAgIChpbmRleCA9PT0gdGl0bGUubGVuZ3RoIC0gMSAmJiBub1RhaWxDaGFycy5pbmNsdWRlcyhjaGFyKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoY2hhcik7XG4gICAgfVxuICAgIHJldHVybiBjaGFyO1xuICB9KS5qb2luKFwiXCIpO1xufTtcblxuY29uc3Qgbm9FbmNvZGVDaGFycyA9ICdAJCYrPTo7XCIsJztcbmNvbnN0IG5vVGFpbENoYXJzID0gJzo7XCIsJztcblxuLyoqIHRpdGxl44KS44Gn44GN44KL44Gg44GRcGVyY2VudCBlbmNvZGluZ+OBm+OBmuOBq1VSSeOBp+S9v+OBiOOCi+W9ouW8j+OBq+OBmeOCi1xuICpcbiAqIEBwYXJhbSB0aXRsZSDlpInmj5vjgZnjgot0aXRsZVxuICogQHJldHVybiDlpInmj5vlvozjga7mloflrZfliJdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvUmVhZGFibGVUaXRsZVVSSSA9ICh0aXRsZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIHRpdGxlLnJlcGxhY2VBbGwoXCIgXCIsIFwiX1wiKVxuICAgIC5yZXBsYWNlKC9bLz8jXFx7fV58PD4lXS9nLCAoY2hhcikgPT4gZW5jb2RlVVJJQ29tcG9uZW50KGNoYXIpKTtcbn07XG4iLCAiLy8gcG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlL2Jsb2IvMC40LjAvUGFnZS50c3gjTDY2MlxuXG5jb25zdCB5b3V0dWJlUmVnRXhwID0gL2h0dHBzPzpcXC9cXC8oPzp3d3dcXC58bXVzaWNcXC58KXlvdXR1YmVcXC5jb21cXC93YXRjaC87XG5jb25zdCB5b3V0dWJlRG90QmVSZWdFeHAgPVxuICAvaHR0cHM/OlxcL1xcL3lvdXR1XFwuYmVcXC8oW2EtekEtWlxcZF8tXSspKD86XFw/KFteXFxzXXswLDEwMH0pfCkvO1xuY29uc3QgeW91dHViZVNob3J0UmVnRXhwID1cbiAgL2h0dHBzPzpcXC9cXC8oPzp3d3dcXC58KXlvdXR1YmVcXC5jb21cXC9zaG9ydHNcXC8oW2EtekEtWlxcZF8tXSspKD86XFw/KFteXFxzXSspfCkvO1xuY29uc3QgeW91dHViZUxpc3RSZWdFeHAgPVxuICAvaHR0cHM/OlxcL1xcLyg/Ond3d1xcLnxtdXNpY1xcLnwpeW91dHViZVxcLmNvbVxcL3BsYXlsaXN0XFw/KCg/OlteXFxzXSsmfClsaXN0PShbYS16QS1aXFxkXy1dKykoPzomW15cXHNdK3wpKS87XG5cbmV4cG9ydCB0eXBlIFlvdXR1YmVQcm9wcyA9IHtcbiAgcGFyYW1zOiBVUkxTZWFyY2hQYXJhbXM7XG4gIHZpZGVvSWQ6IHN0cmluZztcbiAgcGF0aFR5cGU6IFwiY29tXCIgfCBcImRvdGJlXCIgfCBcInNob3J0XCI7XG59IHwge1xuICBwYXJhbXM6IFVSTFNlYXJjaFBhcmFtcztcbiAgbGlzdElkOiBzdHJpbmc7XG4gIHBhdGhUeXBlOiBcImxpc3RcIjtcbn07XG5cbi8qKiBZb3V0dWJl44GuVVJM44KS6Kej5p6Q44GX44GmVmlkZW8gSUTjgarjganjgpLlj5bjgorlh7rjgZlcbiAqXG4gKiBAcGFyYW0gdXJsIFlvdXR1YmXjga5VUkxcbiAqIEByZXR1cm4g6Kej5p6Q57WQ5p6cIFlvdXR1YmXjga5VUkzjgafjgarjgYvjgaPjgZ/jgajjgY3jga9gdW5kZWZpbmVkYOOCkui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgcGFyc2VZb3V0dWJlID0gKHVybDogc3RyaW5nKTogWW91dHViZVByb3BzIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKHlvdXR1YmVSZWdFeHAudGVzdCh1cmwpKSB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTCh1cmwpLnNlYXJjaFBhcmFtcztcbiAgICBjb25zdCB2aWRlb0lkID0gcGFyYW1zLmdldChcInZcIik7XG4gICAgaWYgKHZpZGVvSWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhdGhUeXBlOiBcImNvbVwiLFxuICAgICAgICB2aWRlb0lkLFxuICAgICAgICBwYXJhbXMsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHtcbiAgICBjb25zdCBtYXRjaGVzID0gdXJsLm1hdGNoKHlvdXR1YmVEb3RCZVJlZ0V4cCk7XG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIGNvbnN0IFssIHZpZGVvSWQsIHBhcmFtc10gPSBtYXRjaGVzO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmlkZW9JZCxcbiAgICAgICAgcGFyYW1zOiBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIHBhdGhUeXBlOiBcImRvdGJlXCIsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHtcbiAgICBjb25zdCBtYXRjaGVzID0gdXJsLm1hdGNoKHlvdXR1YmVTaG9ydFJlZ0V4cCk7XG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIGNvbnN0IFssIHZpZGVvSWQsIHBhcmFtc10gPSBtYXRjaGVzO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmlkZW9JZCxcbiAgICAgICAgcGFyYW1zOiBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIHBhdGhUeXBlOiBcInNob3J0XCIsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHtcbiAgICBjb25zdCBtYXRjaGVzID0gdXJsLm1hdGNoKHlvdXR1YmVMaXN0UmVnRXhwKTtcbiAgICBpZiAobWF0Y2hlcykge1xuICAgICAgY29uc3QgWywgcGFyYW1zLCBsaXN0SWRdID0gbWF0Y2hlcztcblxuICAgICAgcmV0dXJuIHsgbGlzdElkLCBwYXJhbXM6IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zKSwgcGF0aFR5cGU6IFwibGlzdFwiIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG4iLCAiaW1wb3J0IHsgQmFzZUxpbmUsIE5vZGUsIHBhcnNlIH0gZnJvbSBcIi4uLy4uL2RlcHMvc2NyYXBib3gudHNcIjtcbmltcG9ydCB7IHRvVGl0bGVMYyB9IGZyb20gXCIuLi8uLi90aXRsZS50c1wiO1xuaW1wb3J0IHsgcGFyc2VZb3V0dWJlIH0gZnJvbSBcIi4uLy4uL3BhcnNlci95b3V0dWJlLnRzXCI7XG5cbi8qKiDjg4bjgq3jgrnjg4jjgavlkKvjgb7jgozjgabjgYTjgovjg6Hjgr/jg4fjg7zjgr/jgpLlj5bjgorlh7rjgZlcbiAqXG4gKiBAcGFyYW0gdGV4dCBTY3JhcGJveOOBruODhuOCreOCueODiFxuICogQHJldHVybiDpoIbjgavjgIFsaW5rcywgcHJvamVjdExpbmtzLCBpY29ucywgaW1hZ2UsIGZpbGVzLCBoZWxwZmVlbHMsIGluZm9ib3hEZWZpbml0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBmaW5kTWV0YWRhdGEgPSAoXG4gIHRleHQ6IHN0cmluZyxcbik6IFtcbiAgc3RyaW5nW10sXG4gIHN0cmluZ1tdLFxuICBzdHJpbmdbXSxcbiAgc3RyaW5nIHwgbnVsbCxcbiAgc3RyaW5nW10sXG4gIHN0cmluZ1tdLFxuICBzdHJpbmdbXSxcbl0gPT4ge1xuICBjb25zdCBibG9ja3MgPSBwYXJzZSh0ZXh0LCB7IGhhc1RpdGxlOiB0cnVlIH0pLmZsYXRNYXAoKGJsb2NrKSA9PiB7XG4gICAgc3dpdGNoIChibG9jay50eXBlKSB7XG4gICAgICBjYXNlIFwiY29kZUJsb2NrXCI6XG4gICAgICBjYXNlIFwidGl0bGVcIjpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgY2FzZSBcImxpbmVcIjpcbiAgICAgIGNhc2UgXCJ0YWJsZVwiOlxuICAgICAgICByZXR1cm4gYmxvY2s7XG4gICAgfVxuICB9KTtcblxuICAvKiog6YeN6KSH5Yik5a6a55SobWFwXG4gICAqXG4gICAqIGJyYWNrZXQgbGluayDjgahoYXNodGFn44KS5Yy65Yil44Gn44GN44KL44KI44GG44Gr44GX44Gm44GE44KLXG4gICAqIC0gYnJhY2tldCBsaW5r44Gq44KJdHJ1ZVxuICAgKlxuICAgKiBsaW5r44Gu5b2i54q244GvYnJhY2tldCBsaW5r44KS5YSq5YWI44GX44Gm44GE44KLXG4gICAqL1xuICBjb25zdCBsaW5rc0xjID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XG4gIGNvbnN0IGxpbmtzID0gW10gYXMgc3RyaW5nW107XG4gIGNvbnN0IHByb2plY3RMaW5rc0xjID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IHByb2plY3RMaW5rcyA9IFtdIGFzIHN0cmluZ1tdO1xuICBjb25zdCBpY29uc0xjID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IGljb25zID0gW10gYXMgc3RyaW5nW107XG4gIGxldCBpbWFnZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGNvbnN0IGZpbGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IGhlbHBmZWVscyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIGNvbnN0IGZpbGVVcmxQYXR0ZXJuID0gbmV3IFJlZ0V4cChcbiAgICBgJHtcbiAgICAgIGxvY2F0aW9uPy5vcmlnaW4gPz8gXCJodHRwczovL3NjcmFwYm94LmlvXCJcbiAgICB9L2ZpbGVzLyhbYS16MC05XXsyNH0pKD86fFxcXFwuW2EtekEtWjAtOV0rKSg/OnxcXFxcP1teXFxcXHNdKikkYCxcbiAgKTtcblxuICBjb25zdCBsb29rdXAgPSAobm9kZTogTm9kZSkgPT4ge1xuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICBjYXNlIFwiaGFzaFRhZ1wiOlxuICAgICAgICBpZiAobGlua3NMYy5oYXModG9UaXRsZUxjKG5vZGUuaHJlZikpKSByZXR1cm47XG4gICAgICAgIGxpbmtzTGMuc2V0KHRvVGl0bGVMYyhub2RlLmhyZWYpLCBmYWxzZSk7XG4gICAgICAgIGxpbmtzLnB1c2gobm9kZS5ocmVmKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBcImxpbmtcIjpcbiAgICAgICAgc3dpdGNoIChub2RlLnBhdGhUeXBlKSB7XG4gICAgICAgICAgY2FzZSBcInJlbGF0aXZlXCI6IHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBjdXRJZChub2RlLmhyZWYpO1xuICAgICAgICAgICAgaWYgKGxpbmtzTGMuZ2V0KHRvVGl0bGVMYyhsaW5rKSkpIHJldHVybjtcbiAgICAgICAgICAgIGxpbmtzTGMuc2V0KHRvVGl0bGVMYyhsaW5rKSwgdHJ1ZSk7XG4gICAgICAgICAgICBsaW5rcy5wdXNoKGxpbmspO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFwicm9vdFwiOiB7XG4gICAgICAgICAgICBjb25zdCBsaW5rID0gY3V0SWQobm9kZS5ocmVmKTtcbiAgICAgICAgICAgIC8vIGlnbm9yZSBgL3Byb2plY3RgIG9yIGAvcHJvamVjdC9gXG4gICAgICAgICAgICBpZiAoL15cXC9bXFx3XFxkLV0rXFwvPyQvLnRlc3QobGluaykpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChwcm9qZWN0TGlua3NMYy5oYXModG9UaXRsZUxjKGxpbmspKSkgcmV0dXJuO1xuICAgICAgICAgICAgcHJvamVjdExpbmtzTGMuYWRkKHRvVGl0bGVMYyhsaW5rKSk7XG4gICAgICAgICAgICBwcm9qZWN0TGlua3MucHVzaChsaW5rKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcImFic29sdXRlXCI6IHtcbiAgICAgICAgICAgIGlmIChub2RlLmNvbnRlbnQpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IHByb3BzID0gcGFyc2VZb3V0dWJlKG5vZGUuaHJlZik7XG4gICAgICAgICAgICBpZiAocHJvcHMgJiYgcHJvcHMucGF0aFR5cGUgIT09IFwibGlzdFwiKSB7XG4gICAgICAgICAgICAgIGltYWdlID8/PSBgaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS8ke3Byb3BzLnZpZGVvSWR9L21xZGVmYXVsdC5qcGdgO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBmaWxlSWQgPSBub2RlLmhyZWYubWF0Y2goZmlsZVVybFBhdHRlcm4pPy5bMV07XG4gICAgICAgICAgICBpZiAoZmlsZUlkKSBmaWxlcy5hZGQoZmlsZUlkKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgY2FzZSBcImljb25cIjpcbiAgICAgIGNhc2UgXCJzdHJvbmdJY29uXCI6IHtcbiAgICAgICAgaWYgKG5vZGUucGF0aFR5cGUgPT09IFwicm9vdFwiKSByZXR1cm47XG4gICAgICAgIGlmIChpY29uc0xjLmhhcyh0b1RpdGxlTGMobm9kZS5wYXRoKSkpIHJldHVybjtcbiAgICAgICAgaWNvbnNMYy5hZGQodG9UaXRsZUxjKG5vZGUucGF0aCkpO1xuICAgICAgICBpY29ucy5wdXNoKG5vZGUucGF0aCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJpbWFnZVwiOlxuICAgICAgY2FzZSBcInN0cm9uZ0ltYWdlXCI6IHtcbiAgICAgICAgaW1hZ2UgPz89IG5vZGUuc3JjLmVuZHNXaXRoKFwiL3RodW1iLzEwMDBcIilcbiAgICAgICAgICA/IG5vZGUuc3JjLnJlcGxhY2UoL1xcL3RodW1iXFwvMTAwMCQvLCBcIi9yYXdcIilcbiAgICAgICAgICA6IG5vZGUuc3JjO1xuICAgICAgICB7XG4gICAgICAgICAgY29uc3QgZmlsZUlkID0gbm9kZS5zcmMubWF0Y2goZmlsZVVybFBhdHRlcm4pPy5bMV07XG4gICAgICAgICAgaWYgKGZpbGVJZCkgZmlsZXMuYWRkKGZpbGVJZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJpbWFnZVwiKSB7XG4gICAgICAgICAgY29uc3QgZmlsZUlkID0gbm9kZS5saW5rLm1hdGNoKGZpbGVVcmxQYXR0ZXJuKT8uWzFdO1xuICAgICAgICAgIGlmIChmaWxlSWQpIGZpbGVzLmFkZChmaWxlSWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJoZWxwZmVlbFwiOlxuICAgICAgICBoZWxwZmVlbHMuYWRkKG5vZGUudGV4dCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgXCJudW1iZXJMaXN0XCI6XG4gICAgICBjYXNlIFwic3Ryb25nXCI6XG4gICAgICBjYXNlIFwicXVvdGVcIjpcbiAgICAgIGNhc2UgXCJkZWNvcmF0aW9uXCI6IHtcbiAgICAgICAgZm9yIChjb25zdCBuIG9mIG5vZGUubm9kZXMpIHtcbiAgICAgICAgICBsb29rdXAobik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBpbmZvYm94RGVmaW5pdGlvbiA9IFtdIGFzIHN0cmluZ1tdO1xuXG4gIGZvciAoY29uc3QgYmxvY2sgb2YgYmxvY2tzKSB7XG4gICAgc3dpdGNoIChibG9jay50eXBlKSB7XG4gICAgICBjYXNlIFwibGluZVwiOlxuICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgYmxvY2subm9kZXMpIHtcbiAgICAgICAgICBsb29rdXAobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICBjYXNlIFwidGFibGVcIjoge1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBibG9jay5jZWxscykge1xuICAgICAgICAgIGZvciAoY29uc3Qgbm9kZXMgb2Ygcm93KSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgICAgICAgbG9va3VwKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIVtcImluZm9ib3hcIiwgXCJjb3NlbnNlXCJdLmluY2x1ZGVzKGJsb2NrLmZpbGVOYW1lKSkgY29udGludWU7XG4gICAgICAgIGluZm9ib3hEZWZpbml0aW9uLnB1c2goXG4gICAgICAgICAgLi4uYmxvY2suY2VsbHMubWFwKChyb3cpID0+XG4gICAgICAgICAgICByb3cubWFwKChjZWxsKSA9PiBjZWxsLm1hcCgobm9kZSkgPT4gbm9kZS5yYXcpLmpvaW4oXCJcIikpLmpvaW4oXCJcXHRcIilcbiAgICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbXG4gICAgbGlua3MsXG4gICAgcHJvamVjdExpbmtzLFxuICAgIGljb25zLFxuICAgIGltYWdlLFxuICAgIFsuLi5maWxlc10sXG4gICAgWy4uLmhlbHBmZWVsc10sXG4gICAgaW5mb2JveERlZmluaXRpb24sXG4gIF07XG59O1xuXG5jb25zdCBjdXRJZCA9IChsaW5rOiBzdHJpbmcpOiBzdHJpbmcgPT4gbGluay5yZXBsYWNlKC8jW2EtZlxcZF17MjQsMzJ9JC8sIFwiXCIpO1xuXG4vKiog44OG44Kt44K544OI44GL44KJSGVscGZlZWzoqJjms5Xjga5lbnRyeeOBoOOBkeWPluOCiuWHuuOBmSAqL1xuZXhwb3J0IGNvbnN0IGdldEhlbHBmZWVscyA9IChsaW5lczogUGljazxCYXNlTGluZSwgXCJ0ZXh0XCI+W10pOiBzdHJpbmdbXSA9PlxuICBsaW5lcy5mbGF0TWFwKCh7IHRleHQgfSkgPT5cbiAgICAvXlxccypcXD8gLiokLy50ZXN0KHRleHQpID8gW3RleHQudHJpbVN0YXJ0KCkuc2xpY2UoMildIDogW11cbiAgKTtcbiIsICJleHBvcnQgY29uc3QgaXNTYW1lQXJyYXkgPSA8VD4oYTogVFtdLCBiOiBUW10pOiBib29sZWFuID0+XG4gIGEubGVuZ3RoID09PSBiLmxlbmd0aCAmJiBhLmV2ZXJ5KCh4KSA9PiBiLmluY2x1ZGVzKHgpKTtcbiIsICJpbXBvcnQgeyBkaWZmVG9DaGFuZ2VzIH0gZnJvbSBcIi4vZGlmZlRvQ2hhbmdlcy50c1wiO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gXCIuLi8uLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB0eXBlIHsgQ2hhbmdlIH0gZnJvbSBcIi4uLy4uL2RlcHMvc29ja2V0LnRzXCI7XG5pbXBvcnQgeyBmaW5kTWV0YWRhdGEsIGdldEhlbHBmZWVscyB9IGZyb20gXCIuL2ZpbmRNZXRhZGF0YS50c1wiO1xuaW1wb3J0IHsgaXNTYW1lQXJyYXkgfSBmcm9tIFwiLi9pc1NhbWVBcnJheS50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24qIG1ha2VDaGFuZ2VzKFxuICBiZWZvcmU6IFBhZ2UsXG4gIGFmdGVyOiBzdHJpbmdbXSxcbiAgdXNlcklkOiBzdHJpbmcsXG4pOiBHZW5lcmF0b3I8Q2hhbmdlLCB2b2lkLCB1bmtub3duPiB7XG4gIC8vIOaUueihjOaWh+Wtl+OBjOWFpeOCi+OBruOCkumYsuOBkFxuICBjb25zdCBhZnRlcl8gPSBhZnRlci5mbGF0TWFwKCh0ZXh0KSA9PiB0ZXh0LnNwbGl0KFwiXFxuXCIpKTtcbiAgLy8g5pys5paH44Gu5beu5YiG44KS5YWI44Gr6L+U44GZXG4gIGZvciAoY29uc3QgY2hhbmdlIG9mIGRpZmZUb0NoYW5nZXMoYmVmb3JlLmxpbmVzLCBhZnRlcl8sIHsgdXNlcklkIH0pKSB7XG4gICAgeWllbGQgY2hhbmdlO1xuICB9XG5cbiAgLy8gdGl0bGXjga7lt67liIbjgpLlhaXjgozjgotcbiAgLy8g56m644Oa44O844K444Gu5aC05ZCI44KC44K/44Kk44OI44Or5aSJ5pu0Y29tbWl044KS5YWl44KM44KLXG4gIGlmIChiZWZvcmUubGluZXNbMF0udGV4dCAhPT0gYWZ0ZXJfWzBdIHx8ICFiZWZvcmUucGVyc2lzdGVudCkge1xuICAgIHlpZWxkIHsgdGl0bGU6IGFmdGVyX1swXSB9O1xuICB9XG5cbiAgLy8gZGVzY3JpcHRpb25z44Gu5beu5YiG44KS5YWl44KM44KLXG4gIGNvbnN0IGxlZnREZXNjcmlwdGlvbnMgPSBiZWZvcmUubGluZXMuc2xpY2UoMSwgNikubWFwKChsaW5lKSA9PiBsaW5lLnRleHQpO1xuICBjb25zdCByaWdodERlc2NyaXB0aW9ucyA9IGFmdGVyXy5zbGljZSgxLCA2KTtcbiAgaWYgKGxlZnREZXNjcmlwdGlvbnMuam9pbihcIlwiKSAhPT0gcmlnaHREZXNjcmlwdGlvbnMuam9pbihcIlwiKSkge1xuICAgIHlpZWxkIHsgZGVzY3JpcHRpb25zOiByaWdodERlc2NyaXB0aW9ucyB9O1xuICB9XG5cbiAgLy8g5ZCE56iu44Oh44K/44OH44O844K/44Gu5beu5YiG44KS5YWl44KM44KLXG4gIGNvbnN0IFtcbiAgICBsaW5rcyxcbiAgICBwcm9qZWN0TGlua3MsXG4gICAgaWNvbnMsXG4gICAgaW1hZ2UsXG4gICAgZmlsZXMsXG4gICAgaGVscGZlZWxzLFxuICAgIGluZm9ib3hEZWZpbml0aW9uLFxuICBdID0gZmluZE1ldGFkYXRhKGFmdGVyXy5qb2luKFwiXFxuXCIpKTtcbiAgaWYgKCFpc1NhbWVBcnJheShiZWZvcmUubGlua3MsIGxpbmtzKSkgeWllbGQgeyBsaW5rcyB9O1xuICBpZiAoIWlzU2FtZUFycmF5KGJlZm9yZS5wcm9qZWN0TGlua3MsIHByb2plY3RMaW5rcykpIHlpZWxkIHsgcHJvamVjdExpbmtzIH07XG4gIGlmICghaXNTYW1lQXJyYXkoYmVmb3JlLmljb25zLCBpY29ucykpIHlpZWxkIHsgaWNvbnMgfTtcbiAgaWYgKGJlZm9yZS5pbWFnZSAhPT0gaW1hZ2UpIHlpZWxkIHsgaW1hZ2UgfTtcbiAgaWYgKCFpc1NhbWVBcnJheShiZWZvcmUuZmlsZXMsIGZpbGVzKSkgeWllbGQgeyBmaWxlcyB9O1xuICBpZiAoIWlzU2FtZUFycmF5KGdldEhlbHBmZWVscyhiZWZvcmUubGluZXMpLCBoZWxwZmVlbHMpKSB5aWVsZCB7IGhlbHBmZWVscyB9O1xuICBpZiAoIWlzU2FtZUFycmF5KGJlZm9yZS5pbmZvYm94RGVmaW5pdGlvbiwgaW5mb2JveERlZmluaXRpb24pKSB7XG4gICAgeWllbGQgeyBpbmZvYm94RGVmaW5pdGlvbiB9O1xuICB9XG59XG4iLCAiaW1wb3J0IHR5cGUge1xuICBFcnJvckxpa2UsXG4gIE5vdEZvdW5kRXJyb3IsXG4gIE5vdExvZ2dlZEluRXJyb3IsXG4gIE5vdE1lbWJlckVycm9yLFxuICBQYWdlLFxuICBQYWdlTGlzdCxcbn0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuaW1wb3J0IHsgY29va2llIH0gZnJvbSBcIi4vYXV0aC50c1wiO1xuaW1wb3J0IHsgbWFrZUVycm9yIH0gZnJvbSBcIi4vZXJyb3IudHNcIjtcbmltcG9ydCB7IGVuY29kZVRpdGxlVVJJIH0gZnJvbSBcIi4uL3RpdGxlLnRzXCI7XG5pbXBvcnQgeyBCYXNlT3B0aW9ucywgUmVzdWx0LCBzZXREZWZhdWx0cyB9IGZyb20gXCIuL3V0aWwudHNcIjtcblxuLyoqIE9wdGlvbnMgZm9yIGBnZXRQYWdlKClgICovXG5leHBvcnQgaW50ZXJmYWNlIEdldFBhZ2VPcHRpb24gZXh0ZW5kcyBCYXNlT3B0aW9ucyB7XG4gIC8qKiB1c2UgYGZvbGxvd1JlbmFtZWAgKi9cbiAgZm9sbG93UmVuYW1lPzogYm9vbGVhbjtcblxuICAvKiogcHJvamVjdCBpZHMgdG8gZ2V0IEV4dGVybmFsIGxpbmtzICovXG4gIHByb2plY3RzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vTG9uZ1VSSUVycm9yIGV4dGVuZHMgRXJyb3JMaWtlIHtcbiAgbmFtZTogXCJUb29Mb25nVVJJRXJyb3JcIjtcbn1cblxuY29uc3QgZ2V0UGFnZV90b1JlcXVlc3Q6IEdldFBhZ2VbXCJ0b1JlcXVlc3RcIl0gPSAoXG4gIHByb2plY3QsXG4gIHRpdGxlLFxuICBvcHRpb25zLFxuKSA9PiB7XG4gIGNvbnN0IHsgc2lkLCBob3N0TmFtZSwgZm9sbG93UmVuYW1lLCBwcm9qZWN0cyB9ID0gc2V0RGVmYXVsdHMob3B0aW9ucyA/PyB7fSk7XG4gIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgcGFyYW1zLmFwcGVuZChcImZvbGxvd1JlbmFtZVwiLCBgJHtmb2xsb3dSZW5hbWUgPz8gdHJ1ZX1gKTtcbiAgZm9yIChjb25zdCBpZCBvZiBwcm9qZWN0cyA/PyBbXSkge1xuICAgIHBhcmFtcy5hcHBlbmQoXCJwcm9qZWN0c1wiLCBpZCk7XG4gIH1cbiAgY29uc3QgcGF0aCA9IGBodHRwczovLyR7aG9zdE5hbWV9L2FwaS9wYWdlcy8ke3Byb2plY3R9LyR7XG4gICAgZW5jb2RlVGl0bGVVUkkodGl0bGUpXG4gIH0/JHtwYXJhbXMudG9TdHJpbmcoKX1gO1xuXG4gIHJldHVybiBuZXcgUmVxdWVzdChcbiAgICBwYXRoLFxuICAgIHNpZCA/IHsgaGVhZGVyczogeyBDb29raWU6IGNvb2tpZShzaWQpIH0gfSA6IHVuZGVmaW5lZCxcbiAgKTtcbn07XG5cbmNvbnN0IGdldFBhZ2VfZnJvbVJlc3BvbnNlOiBHZXRQYWdlW1wiZnJvbVJlc3BvbnNlXCJdID0gYXN5bmMgKHJlcykgPT4ge1xuICBpZiAoIXJlcy5vaykge1xuICAgIGlmIChyZXMuc3RhdHVzID09PSA0MTQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBuYW1lOiBcIlRvb0xvbmdVUklFcnJvclwiLFxuICAgICAgICAgIG1lc3NhZ2U6IFwicHJvamVjdCBpZHMgbWF5IGJlIHRvbyBtdWNoLlwiLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG1ha2VFcnJvcjxOb3RGb3VuZEVycm9yIHwgTm90TG9nZ2VkSW5FcnJvciB8IE5vdE1lbWJlckVycm9yPihyZXMpO1xuICB9XG4gIGNvbnN0IHZhbHVlID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIFBhZ2U7XG4gIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZSB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBHZXRQYWdlIHtcbiAgLyoqIC9hcGkvcGFnZXMvOnByb2plY3QvOnRpdGxlIOOBruimgeaxguOCkue1hOOBv+eri+OBpuOCi1xuICAgKlxuICAgKiBAcGFyYW0gcHJvamVjdCDlj5blvpfjgZfjgZ/jgYTjg5rjg7zjgrjjga5wcm9qZWN05ZCNXG4gICAqIEBwYXJhbSB0aXRsZSDlj5blvpfjgZfjgZ/jgYTjg5rjg7zjgrjjga50aXRsZSDlpKfmloflrZflsI/mloflrZfjga/llY/jgo/jgarjgYRcbiAgICogQHBhcmFtIG9wdGlvbnMg44Kq44OX44K344On44OzXG4gICAqIEByZXR1cm4gcmVxdWVzdFxuICAgKi9cbiAgdG9SZXF1ZXN0OiAoXG4gICAgcHJvamVjdDogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldFBhZ2VPcHRpb24sXG4gICkgPT4gUmVxdWVzdDtcblxuICAvKiog5biw44Gj44Gm44GN44Gf5b+c562U44GL44KJ44Oa44O844K444GuSlNPTuODh+ODvOOCv+OCkuWPluW+l+OBmeOCi1xuICAgKlxuICAgKiBAcGFyYW0gcmVzIOW/nOetlFxuICAgKiBAcmV0dXJuIOODmuODvOOCuOOBrkpTT07jg4fjg7zjgr9cbiAgICovXG4gIGZyb21SZXNwb25zZTogKHJlczogUmVzcG9uc2UpID0+IFByb21pc2U8XG4gICAgUmVzdWx0PFxuICAgICAgUGFnZSxcbiAgICAgIE5vdEZvdW5kRXJyb3IgfCBOb3RMb2dnZWRJbkVycm9yIHwgTm90TWVtYmVyRXJyb3IgfCBUb29Mb25nVVJJRXJyb3JcbiAgICA+XG4gID47XG5cbiAgKHByb2plY3Q6IHN0cmluZywgdGl0bGU6IHN0cmluZywgb3B0aW9ucz86IEdldFBhZ2VPcHRpb24pOiBQcm9taXNlPFxuICAgIFJlc3VsdDxcbiAgICAgIFBhZ2UsXG4gICAgICBOb3RGb3VuZEVycm9yIHwgTm90TG9nZ2VkSW5FcnJvciB8IE5vdE1lbWJlckVycm9yIHwgVG9vTG9uZ1VSSUVycm9yXG4gICAgPlxuICA+O1xufVxuXG4vKiog5oyH5a6a44GX44Gf44Oa44O844K444GuSlNPTuODh+ODvOOCv+OCkuWPluW+l+OBmeOCi1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0IOWPluW+l+OBl+OBn+OBhOODmuODvOOCuOOBrnByb2plY3TlkI1cbiAqIEBwYXJhbSB0aXRsZSDlj5blvpfjgZfjgZ/jgYTjg5rjg7zjgrjjga50aXRsZSDlpKfmloflrZflsI/mloflrZfjga/llY/jgo/jgarjgYRcbiAqIEBwYXJhbSBvcHRpb25zIOOCquODl+OCt+ODp+ODs1xuICovXG5leHBvcnQgY29uc3QgZ2V0UGFnZTogR2V0UGFnZSA9IGFzeW5jIChcbiAgcHJvamVjdCxcbiAgdGl0bGUsXG4gIG9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgeyBmZXRjaCB9ID0gc2V0RGVmYXVsdHMob3B0aW9ucyA/PyB7fSk7XG4gIGNvbnN0IHJlcSA9IGdldFBhZ2VfdG9SZXF1ZXN0KHByb2plY3QsIHRpdGxlLCBvcHRpb25zKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gocmVxKTtcbiAgcmV0dXJuIGF3YWl0IGdldFBhZ2VfZnJvbVJlc3BvbnNlKHJlcyk7XG59O1xuXG5nZXRQYWdlLnRvUmVxdWVzdCA9IGdldFBhZ2VfdG9SZXF1ZXN0O1xuZ2V0UGFnZS5mcm9tUmVzcG9uc2UgPSBnZXRQYWdlX2Zyb21SZXNwb25zZTtcblxuLyoqIE9wdGlvbnMgZm9yIGBsaXN0UGFnZXMoKWAgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFBhZ2VzT3B0aW9uIGV4dGVuZHMgQmFzZU9wdGlvbnMge1xuICAvKiogdGhlIHNvcnQgb2YgcGFnZSBsaXN0IHRvIHJldHVyblxuICAgKlxuICAgKiBAZGVmYXVsdCBcInVwZGF0ZWRcIlxuICAgKi9cbiAgc29ydD86XG4gICAgfCBcInVwZGF0ZWRXaXRoTWVcIlxuICAgIHwgXCJ1cGRhdGVkXCJcbiAgICB8IFwiY3JlYXRlZFwiXG4gICAgfCBcImFjY2Vzc2VkXCJcbiAgICB8IFwicGFnZVJhbmtcIlxuICAgIHwgXCJsaW5rZWRcIlxuICAgIHwgXCJ2aWV3c1wiXG4gICAgfCBcInRpdGxlXCI7XG4gIC8qKiB0aGUgaW5kZXggZ2V0dGluZyBwYWdlIGxpc3QgZnJvbVxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBza2lwPzogbnVtYmVyO1xuICAvKiogdGhyZXNob2xkIG9mIHRoZSBsZW5ndGggb2YgcGFnZSBsaXN0XG4gICAqXG4gICAqIEBkZWZhdWx0IDEwMFxuICAgKi9cbiAgbGltaXQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFBhZ2VzIHtcbiAgLyoqIC9hcGkvcGFnZXMvOnByb2plY3Qg44Gu6KaB5rGC44KS57WE44G/56uL44Gm44KLXG4gICAqXG4gICAqIEBwYXJhbSBwcm9qZWN0IOWPluW+l+OBl+OBn+OBhOODmuODvOOCuOOBrnByb2plY3TlkI1cbiAgICogQHBhcmFtIG9wdGlvbnMg44Kq44OX44K344On44OzXG4gICAqIEByZXR1cm4gcmVxdWVzdFxuICAgKi9cbiAgdG9SZXF1ZXN0OiAoXG4gICAgcHJvamVjdDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBMaXN0UGFnZXNPcHRpb24sXG4gICkgPT4gUmVxdWVzdDtcblxuICAvKiog5biw44Gj44Gm44GN44Gf5b+c562U44GL44KJ44Oa44O844K444GuSlNPTuODh+ODvOOCv+OCkuWPluW+l+OBmeOCi1xuICAgKlxuICAgKiBAcGFyYW0gcmVzIOW/nOetlFxuICAgKiBAcmV0dXJuIOODmuODvOOCuOOBrkpTT07jg4fjg7zjgr9cbiAgICovXG4gIGZyb21SZXNwb25zZTogKHJlczogUmVzcG9uc2UpID0+IFByb21pc2U8XG4gICAgUmVzdWx0PFxuICAgICAgUGFnZUxpc3QsXG4gICAgICBOb3RGb3VuZEVycm9yIHwgTm90TG9nZ2VkSW5FcnJvciB8IE5vdE1lbWJlckVycm9yXG4gICAgPlxuICA+O1xuXG4gIChwcm9qZWN0OiBzdHJpbmcsIG9wdGlvbnM/OiBMaXN0UGFnZXNPcHRpb24pOiBQcm9taXNlPFxuICAgIFJlc3VsdDxcbiAgICAgIFBhZ2VMaXN0LFxuICAgICAgTm90Rm91bmRFcnJvciB8IE5vdExvZ2dlZEluRXJyb3IgfCBOb3RNZW1iZXJFcnJvclxuICAgID5cbiAgPjtcbn1cblxuY29uc3QgbGlzdFBhZ2VzX3RvUmVxdWVzdDogTGlzdFBhZ2VzW1widG9SZXF1ZXN0XCJdID0gKHByb2plY3QsIG9wdGlvbnMpID0+IHtcbiAgY29uc3QgeyBzaWQsIGhvc3ROYW1lLCBzb3J0LCBsaW1pdCwgc2tpcCB9ID0gc2V0RGVmYXVsdHMoXG4gICAgb3B0aW9ucyA/PyB7fSxcbiAgKTtcbiAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICBpZiAoc29ydCAhPT0gdW5kZWZpbmVkKSBwYXJhbXMuYXBwZW5kKFwic29ydFwiLCBzb3J0KTtcbiAgaWYgKGxpbWl0ICE9PSB1bmRlZmluZWQpIHBhcmFtcy5hcHBlbmQoXCJsaW1pdFwiLCBgJHtsaW1pdH1gKTtcbiAgaWYgKHNraXAgIT09IHVuZGVmaW5lZCkgcGFyYW1zLmFwcGVuZChcInNraXBcIiwgYCR7c2tpcH1gKTtcbiAgY29uc3QgcGF0aCA9IGBodHRwczovLyR7aG9zdE5hbWV9L2FwaS9wYWdlcy8ke3Byb2plY3R9PyR7cGFyYW1zLnRvU3RyaW5nKCl9YDtcblxuICByZXR1cm4gbmV3IFJlcXVlc3QoXG4gICAgcGF0aCxcbiAgICBzaWQgPyB7IGhlYWRlcnM6IHsgQ29va2llOiBjb29raWUoc2lkKSB9IH0gOiB1bmRlZmluZWQsXG4gICk7XG59O1xuXG5jb25zdCBsaXN0UGFnZXNfZnJvbVJlc3BvbnNlOiBMaXN0UGFnZXNbXCJmcm9tUmVzcG9uc2VcIl0gPSBhc3luYyAocmVzKSA9PiB7XG4gIGlmICghcmVzLm9rKSB7XG4gICAgcmV0dXJuIG1ha2VFcnJvcjxOb3RGb3VuZEVycm9yIHwgTm90TG9nZ2VkSW5FcnJvciB8IE5vdE1lbWJlckVycm9yPihyZXMpO1xuICB9XG4gIGNvbnN0IHZhbHVlID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIFBhZ2VMaXN0O1xuICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWUgfTtcbn07XG5cbi8qKiDmjIflrprjgZfjgZ9wcm9qZWN044Gu44Oa44O844K444KS5LiA6Kan44GZ44KLXG4gKlxuICogQHBhcmFtIHByb2plY3Qg5LiA6Kan44GX44Gf44GEcHJvamVjdFxuICogQHBhcmFtIG9wdGlvbnMg44Kq44OX44K344On44OzIOWPluW+l+evhOWbsuOChOS4puOBs+mghuOCkuaxuuOCgeOCi1xuICovXG5leHBvcnQgY29uc3QgbGlzdFBhZ2VzOiBMaXN0UGFnZXMgPSBhc3luYyAoXG4gIHByb2plY3QsXG4gIG9wdGlvbnM/LFxuKSA9PiB7XG4gIGNvbnN0IHsgZmV0Y2ggfSA9IHNldERlZmF1bHRzKG9wdGlvbnMgPz8ge30pO1xuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChsaXN0UGFnZXNfdG9SZXF1ZXN0KHByb2plY3QsIG9wdGlvbnMpKTtcbiAgcmV0dXJuIGF3YWl0IGxpc3RQYWdlc19mcm9tUmVzcG9uc2UocmVzKTtcbn07XG5cbmxpc3RQYWdlcy50b1JlcXVlc3QgPSBsaXN0UGFnZXNfdG9SZXF1ZXN0O1xubGlzdFBhZ2VzLmZyb21SZXNwb25zZSA9IGxpc3RQYWdlc19mcm9tUmVzcG9uc2U7XG4iLCAiaW1wb3J0IHsgUGFnZSB9IGZyb20gXCIuLi8uLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IGdldFBhZ2UgfSBmcm9tIFwiLi4vLi4vcmVzdC9wYWdlcy50c1wiO1xuXG5leHBvcnQgY29uc3QgcHVsbCA9IGFzeW5jIChcbiAgcHJvamVjdDogc3RyaW5nLFxuICB0aXRsZTogc3RyaW5nLFxuKTogUHJvbWlzZTxQYWdlPiA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldFBhZ2UocHJvamVjdCwgdGl0bGUpO1xuXG4gIC8vIFRPRE86IOe3qOmbhuS4jeWPr+OBquODmuODvOOCuOOBr1N0cmVhbeizvOiqreOBoOOBkeaPkOS+m+OBmeOCi1xuICBpZiAoIXJlc3VsdC5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgWW91IGhhdmUgbm8gcHJpdmlsZWdlIG9mIGVkaXRpbmcgXCIvJHtwcm9qZWN0fS8ke3RpdGxlfVwiLmApO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbn07XG4iLCAiLyoqIOODn+ODquenkuWNmOS9jeOBp+W+heOBpFxuICpcbiAqIEBwYXJhbSBtaWxsaXNlY29uZHMg5b6F44Gh5pmC6ZaTICjjg5/jg6rnp5IpXG4gKi9cbmV4cG9ydCBjb25zdCBzbGVlcCA9IChtaWxsaXNlY29uZHM6IG51bWJlcik6IFByb21pc2U8dm9pZD4gPT5cbiAgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHNldFRpbWVvdXQoKCkgPT4gcmVzb2x2ZSgpLCBtaWxsaXNlY29uZHMpKTtcbiIsICJpbXBvcnQge1xuICBDaGFuZ2UsXG4gIERlbGV0ZVBhZ2VDaGFuZ2UsXG4gIFBhZ2VDb21taXQsXG4gIFBhZ2VDb21taXRFcnJvcixcbiAgUGFnZUNvbW1pdFJlc3BvbnNlLFxuICBQaW5DaGFuZ2UsXG4gIFNvY2tldCxcbiAgc29ja2V0SU8sXG4gIFRpbWVvdXRFcnJvcixcbiAgVW5leHBlY3RlZEVycm9yLFxuICB3cmFwLFxufSBmcm9tIFwiLi4vLi4vZGVwcy9zb2NrZXQudHNcIjtcbmltcG9ydCB7IGNvbm5lY3QsIGRpc2Nvbm5lY3QgfSBmcm9tIFwiLi9zb2NrZXQudHNcIjtcbmltcG9ydCB7IGdldFByb2plY3RJZCwgZ2V0VXNlcklkIH0gZnJvbSBcIi4vaWQudHNcIjtcbmltcG9ydCB7IHB1bGwgfSBmcm9tIFwiLi9wdWxsLnRzXCI7XG5pbXBvcnQgeyBQYWdlIH0gZnJvbSBcIi4uLy4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuaW1wb3J0IHsgc2xlZXAgfSBmcm9tIFwiLi4vLi4vc2xlZXAudHNcIjtcbmltcG9ydCB7IFJlc3VsdCB9IGZyb20gXCIuLi8uLi9yZXN0L3V0aWwudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQdXNoT3B0aW9ucyB7XG4gIC8qKiDlpJbpg6jjgYvjgolTb2NrZXTjgpLmjIflrprjgZfjgZ/jgYTjgajjgY3jgavkvb/jgYYgKi9cbiAgc29ja2V0PzogU29ja2V0O1xuXG4gIC8qKiBwdXNo44Gu5YaN6Kmm6KGM5Zue5pWwXG4gICAqXG4gICAqIOOBk+OCjOOCkuS4iuWbnuOBo+OBn+OCieOAgWBSZXRyeUVycm9yYOOCkui/lOOBmVxuICAgKi9cbiAgbWF4QXR0ZW1wdHM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlFcnJvciB7XG4gIG5hbWU6IFwiUmV0cnlFcnJvclwiO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGF0dGVtcHRzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVzaE1ldGFkYXRhIGV4dGVuZHMgUGFnZSB7XG4gIHByb2plY3RJZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbn1cblxuLyoqIOeJueWumuOBruODmuODvOOCuOOBrmNvbW1pdOOCknB1c2jjgZnjgotcbiAqXG4gKiBzZXJ2ZXLjgYvjgolwdXNoIGVycm9y44GM6L+U44Gj44Gm44GN44Gf5aC05ZCI44CB44Ko44Op44O844Gr5b+c44GY44GmcHVzaOOCkuWGjeippuihjOOBmeOCi1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0IHByb2plY3QgbmFtZVxuICogQHBhcmFtIHRpdGxlIHBhZ2UgdGl0bGVcbiAqIEBwYXJhbSBtYWtlQ29tbWl0IHB1c2jjgZfjgZ/jgYRjb21taXTjgpLkvZzjgovplqLmlbDjgILnqbrphY3liJfjgpLov5TjgZnjgahwdXNo44KS5Lit5pat44GZ44KLXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHJldHJ1biDmiJDlip8gb3Ig44Kt44Oj44Oz44K744Or44Gu44Go44GN44GvYGNvbW1pdElkYOOCkui/lOOBmeOAguWGjeippuihjOWbnuaVsOOBjOS4iumZkOOBq+mBlOOBl+OBn+OBqOOBjeOBr2BSZXRyeUVycm9yYOOCkui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgcHVzaCA9IGFzeW5jIChcbiAgcHJvamVjdDogc3RyaW5nLFxuICB0aXRsZTogc3RyaW5nLFxuICBtYWtlQ29tbWl0OiAoXG4gICAgcGFnZTogUHVzaE1ldGFkYXRhLFxuICAgIGF0dGVtcHRzOiBudW1iZXIsXG4gICAgcHJldjogQ2hhbmdlW10gfCBbRGVsZXRlUGFnZUNoYW5nZV0gfCBbUGluQ2hhbmdlXSxcbiAgICByZWFzb24/OiBcIk5vdEZhc3RGb3J3YXJkRXJyb3JcIiB8IFwiRHVwbGljYXRlVGl0bGVFcnJvclwiLFxuICApID0+XG4gICAgfCBQcm9taXNlPENoYW5nZVtdIHwgW0RlbGV0ZVBhZ2VDaGFuZ2VdIHwgW1BpbkNoYW5nZV0+XG4gICAgfCBDaGFuZ2VbXVxuICAgIHwgW0RlbGV0ZVBhZ2VDaGFuZ2VdXG4gICAgfCBbUGluQ2hhbmdlXSxcbiAgb3B0aW9ucz86IFB1c2hPcHRpb25zLFxuKTogUHJvbWlzZTxSZXN1bHQ8c3RyaW5nLCBSZXRyeUVycm9yPj4gPT4ge1xuICBjb25zdCBpbmplY3RlZFNvY2tldCA9IG9wdGlvbnM/LnNvY2tldDtcbiAgY29uc3Qgc29ja2V0ID0gaW5qZWN0ZWRTb2NrZXQgPz8gYXdhaXQgc29ja2V0SU8oKTtcbiAgYXdhaXQgY29ubmVjdChzb2NrZXQpO1xuXG4gIHRyeSB7XG4gICAgbGV0IHBhZ2U6IFB1c2hNZXRhZGF0YSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHB1bGwocHJvamVjdCwgdGl0bGUpLFxuICAgICAgZ2V0UHJvamVjdElkKHByb2plY3QpLFxuICAgICAgZ2V0VXNlcklkKCksXG4gICAgXSkudGhlbigoW3BhZ2VfLCBwcm9qZWN0SWQsIHVzZXJJZF0pID0+ICh7IC4uLnBhZ2VfLCBwcm9qZWN0SWQsIHVzZXJJZCB9KSk7XG5cbiAgICBjb25zdCB7IHJlcXVlc3QgfSA9IHdyYXAoc29ja2V0KTtcbiAgICBsZXQgYXR0ZW1wdHMgPSAwO1xuICAgIGxldCBjaGFuZ2VzOiBDaGFuZ2VbXSB8IFtEZWxldGVQYWdlQ2hhbmdlXSB8IFtQaW5DaGFuZ2VdID0gW107XG4gICAgbGV0IHJlYXNvbjogXCJOb3RGYXN0Rm9yd2FyZEVycm9yXCIgfCBcIkR1cGxpY2F0ZVRpdGxlRXJyb3JcIiB8IHVuZGVmaW5lZDtcblxuICAgIC8vIGxvb3AgZm9yIGNyZWF0ZSBEaWZmXG4gICAgd2hpbGUgKFxuICAgICAgb3B0aW9ucz8ubWF4QXR0ZW1wdHMgPT09IHVuZGVmaW5lZCB8fCBhdHRlbXB0cyA8IG9wdGlvbnMubWF4QXR0ZW1wdHNcbiAgICApIHtcbiAgICAgIGNvbnN0IHBlbmRpbmcgPSBtYWtlQ29tbWl0KHBhZ2UsIGF0dGVtcHRzLCBjaGFuZ2VzLCByZWFzb24pO1xuICAgICAgY2hhbmdlcyA9IHBlbmRpbmcgaW5zdGFuY2VvZiBQcm9taXNlID8gYXdhaXQgcGVuZGluZyA6IHBlbmRpbmc7XG4gICAgICBhdHRlbXB0cysrO1xuICAgICAgaWYgKGNoYW5nZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogcGFnZS5jb21taXRJZCB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhOiBQYWdlQ29tbWl0ID0ge1xuICAgICAgICBraW5kOiBcInBhZ2VcIixcbiAgICAgICAgcHJvamVjdElkOiBwYWdlLnByb2plY3RJZCxcbiAgICAgICAgcGFnZUlkOiBwYWdlLmlkLFxuICAgICAgICBwYXJlbnRJZDogcGFnZS5jb21taXRJZCxcbiAgICAgICAgdXNlcklkOiBwYWdlLnVzZXJJZCxcbiAgICAgICAgY2hhbmdlcyxcbiAgICAgICAgY3Vyc29yOiBudWxsLFxuICAgICAgICBmcmVlemU6IHRydWUsXG4gICAgICB9O1xuXG4gICAgICAvLyBsb29wIGZvciBwdXNoIGNoYW5nZXNcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IChhd2FpdCByZXF1ZXN0KFwic29ja2V0LmlvLXJlcXVlc3RcIiwge1xuICAgICAgICAgIG1ldGhvZDogXCJjb21taXRcIixcbiAgICAgICAgICBkYXRhLFxuICAgICAgICB9KSkgYXMgUmVzdWx0PFxuICAgICAgICAgIFBhZ2VDb21taXRSZXNwb25zZSxcbiAgICAgICAgICBVbmV4cGVjdGVkRXJyb3IgfCBUaW1lb3V0RXJyb3IgfCBQYWdlQ29tbWl0RXJyb3JcbiAgICAgICAgPjtcblxuICAgICAgICBpZiAocmVzdWx0Lm9rKSB7XG4gICAgICAgICAgcGFnZS5jb21taXRJZCA9IHJlc3VsdC52YWx1ZS5jb21taXRJZDtcbiAgICAgICAgICAvLyBzdWNjZXNzXG4gICAgICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBwYWdlLmNvbW1pdElkIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmFtZSA9IHJlc3VsdC52YWx1ZS5uYW1lO1xuICAgICAgICBpZiAobmFtZSA9PT0gXCJVbmV4cGVjdGVkRXJyb3JcIikge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCk7XG4gICAgICAgICAgZXJyb3IubmFtZSA9IHJlc3VsdC52YWx1ZS5uYW1lO1xuICAgICAgICAgIGVycm9yLm1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeShyZXN1bHQudmFsdWUpO1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYW1lID09PSBcIlRpbWVvdXRFcnJvclwiIHx8IG5hbWUgPT09IFwiU29ja2V0SU9FcnJvclwiKSB7XG4gICAgICAgICAgYXdhaXQgc2xlZXAoMzAwMCk7XG4gICAgICAgICAgLy8gZ28gYmFjayB0byB0aGUgcHVzaCBsb29wXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hbWUgPT09IFwiTm90RmFzdEZvcndhcmRFcnJvclwiKSB7XG4gICAgICAgICAgYXdhaXQgc2xlZXAoMTAwMCk7XG4gICAgICAgICAgcGFnZSA9IHtcbiAgICAgICAgICAgIC4uLmF3YWl0IHB1bGwocHJvamVjdCwgdGl0bGUpLFxuICAgICAgICAgICAgcHJvamVjdElkOiBwYWdlLnByb2plY3RJZCxcbiAgICAgICAgICAgIHVzZXJJZDogcGFnZS51c2VySWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZWFzb24gPSBuYW1lO1xuICAgICAgICAvLyBnbyBiYWNrIHRvIHRoZSBkaWZmIGxvb3BcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBvazogZmFsc2UsXG4gICAgICB2YWx1ZToge1xuICAgICAgICBuYW1lOiBcIlJldHJ5RXJyb3JcIixcbiAgICAgICAgYXR0ZW1wdHMsXG4gICAgICAgIC8vIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Rlbm9sYW5kL2Rlbm9fc3RkL2Jsb2IvMC4yMjMuMC9hc3luYy9yZXRyeS50cyNMMjNcbiAgICAgICAgbWVzc2FnZTogYFJldHJ5aW5nIGV4Y2VlZGVkIHRoZSBtYXhBdHRlbXB0cyAoJHthdHRlbXB0c30pLmAsXG4gICAgICB9LFxuICAgIH07XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKCFpbmplY3RlZFNvY2tldCkgYXdhaXQgZGlzY29ubmVjdChzb2NrZXQpO1xuICB9XG59O1xuIiwgImV4cG9ydCBjb25zdCBzdWdnZXN0VW5EdXBUaXRsZSA9ICh0aXRsZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbWF0Y2hlZCA9IHRpdGxlLm1hdGNoKC8oLis/KSg/Ol8oXFxkKykpPyQvKTtcbiAgY29uc3QgdGl0bGVfID0gbWF0Y2hlZD8uWzFdID8/IHRpdGxlO1xuICBjb25zdCBudW0gPSBtYXRjaGVkPy5bMl0gPyBwYXJzZUludChtYXRjaGVkWzJdKSArIDEgOiAyO1xuICByZXR1cm4gYCR7dGl0bGVffV8ke251bX1gO1xufTtcbiIsICJpbXBvcnQgeyBDaGFuZ2UsIERlbGV0ZVBhZ2VDaGFuZ2UsIFBpbkNoYW5nZSB9IGZyb20gXCIuLi8uLi9kZXBzL3NvY2tldC50c1wiO1xuaW1wb3J0IHsgbWFrZUNoYW5nZXMgfSBmcm9tIFwiLi9tYWtlQ2hhbmdlcy50c1wiO1xuaW1wb3J0IHsgTGluZSwgUGFnZSB9IGZyb20gXCIuLi8uLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IHB1c2gsIFB1c2hPcHRpb25zLCBSZXRyeUVycm9yIH0gZnJvbSBcIi4vcHVzaC50c1wiO1xuaW1wb3J0IHsgc3VnZ2VzdFVuRHVwVGl0bGUgfSBmcm9tIFwiLi9zdWdnZXN0VW5EdXBUaXRsZS50c1wiO1xuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSBcIi4uLy4uL3Jlc3QvdXRpbC50c1wiO1xuXG5leHBvcnQgdHlwZSBQYXRjaE9wdGlvbnMgPSBQdXNoT3B0aW9ucztcblxuZXhwb3J0IGludGVyZmFjZSBQYXRjaE1ldGFkYXRhIGV4dGVuZHMgUGFnZSB7XG4gIC8qKiDmm7jjgY3mj5vjgYjjgpLlho3oqabooYzjgZfjgZ/lm57mlbBcbiAgICpcbiAgICog5Yid5Zue44GvYDBg44Gn44CB5YaN6Kmm6KGM44GZ44KL44Gf44Gz44Gr5aKX44GI44KLXG4gICAqL1xuICBhdHRlbXB0czogbnVtYmVyO1xufVxuXG4vKiog44Oa44O844K45YWo5L2T44KS5pu444GN5o+b44GI44KLXG4gKlxuICogc2VydmVy44Gr44Gv5pu444GN5o+b44GI5YmN5b6M44Gu5beu5YiG44Gg44GR44KS6YCB5L+h44GZ44KLXG4gKlxuICogQHBhcmFtIHByb2plY3Qg5pu444GN5o+b44GI44Gf44GE44Oa44O844K444GucHJvamVjdFxuICogQHBhcmFtIHRpdGxlIOabuOOBjeaPm+OBiOOBn+OBhOODmuODvOOCuOOBruOCv+OCpOODiOODq1xuICogQHBhcmFtIHVwZGF0ZSDmm7jjgY3mj5vjgYjlvozjga7mnKzmlofjgpLkvZzmiJDjgZnjgovlh73mlbDjgILlvJXmlbDjgavjga/nj77lnKjjga7mnKzmlofjgYzmuKHjgZXjgozjgovjgILnqbrphY3liJfjgpLov5TjgZnjgajjg5rjg7zjgrjjgYzliYrpmaTjgZXjgozjgovjgIJ1bmRlZmluZWTjgpLov5TjgZnjgajmm7jjgY3mj5vjgYjjgpLkuK3mlq3jgZnjgotcbiAqIEBwYXJhbSBvcHRpb25zIOS9v+eUqOOBl+OBn+OBhFNvY2tldOOBjOOBguOCjOOBsOaMh+WumuOBmeOCi1xuICovXG5leHBvcnQgY29uc3QgcGF0Y2ggPSAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgdGl0bGU6IHN0cmluZyxcbiAgdXBkYXRlOiAoXG4gICAgbGluZXM6IExpbmVbXSxcbiAgICBtZXRhZGF0YTogUGF0Y2hNZXRhZGF0YSxcbiAgKSA9PiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB8IFByb21pc2U8c3RyaW5nW10gfCB1bmRlZmluZWQ+LFxuICBvcHRpb25zPzogUGF0Y2hPcHRpb25zLFxuKTogUHJvbWlzZTxSZXN1bHQ8c3RyaW5nLCBSZXRyeUVycm9yPj4gPT5cbiAgcHVzaChcbiAgICBwcm9qZWN0LFxuICAgIHRpdGxlLFxuICAgIGFzeW5jIChwYWdlLCBhdHRlbXB0cywgcHJldiwgcmVhc29uKSA9PiB7XG4gICAgICBpZiAocmVhc29uID09PSBcIkR1cGxpY2F0ZVRpdGxlRXJyb3JcIikge1xuICAgICAgICBjb25zdCBmYWxsYmFja1RpdGxlID0gc3VnZ2VzdFVuRHVwVGl0bGUodGl0bGUpO1xuICAgICAgICByZXR1cm4gcHJldi5tYXAoKGNoYW5nZSkgPT4ge1xuICAgICAgICAgIGlmIChcInRpdGxlXCIgaW4gY2hhbmdlKSBjaGFuZ2UudGl0bGUgPSBmYWxsYmFja1RpdGxlO1xuICAgICAgICAgIHJldHVybiBjaGFuZ2U7XG4gICAgICAgIH0pIGFzIENoYW5nZVtdIHwgW0RlbGV0ZVBhZ2VDaGFuZ2VdIHwgW1BpbkNoYW5nZV07XG4gICAgICB9XG4gICAgICBjb25zdCBwZW5kaW5nID0gdXBkYXRlKHBhZ2UubGluZXMsIHsgLi4ucGFnZSwgYXR0ZW1wdHMgfSk7XG4gICAgICBjb25zdCBuZXdMaW5lcyA9IHBlbmRpbmcgaW5zdGFuY2VvZiBQcm9taXNlID8gYXdhaXQgcGVuZGluZyA6IHBlbmRpbmc7XG4gICAgICBpZiAobmV3TGluZXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFtdO1xuICAgICAgaWYgKG5ld0xpbmVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFt7IGRlbGV0ZWQ6IHRydWUgfV07XG4gICAgICByZXR1cm4gWy4uLm1ha2VDaGFuZ2VzKHBhZ2UsIG5ld0xpbmVzLCBwYWdlLnVzZXJJZCldO1xuICAgIH0sXG4gICAgb3B0aW9ucyxcbiAgKTtcbiIsICJpbXBvcnQgeyBwdXNoLCBQdXNoT3B0aW9ucywgUmV0cnlFcnJvciB9IGZyb20gXCIuL3B1c2gudHNcIjtcbmltcG9ydCB7IFJlc3VsdCB9IGZyb20gXCIuLi8uLi9yZXN0L3V0aWwudHNcIjtcblxuZXhwb3J0IHR5cGUgRGVsZXRlUGFnZU9wdGlvbnMgPSBQdXNoT3B0aW9ucztcblxuLyoqIOaMh+WumuOBl+OBn+ODmuODvOOCuOOCkuWJiumZpOOBmeOCi1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0IOWJiumZpOOBl+OBn+OBhOODmuODvOOCuOOBrnByb2plY3RcbiAqIEBwYXJhbSB0aXRsZSDliYrpmaTjgZfjgZ/jgYTjg5rjg7zjgrjjga7jgr/jgqTjg4jjg6tcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBkZWxldGVQYWdlID0gKFxuICBwcm9qZWN0OiBzdHJpbmcsXG4gIHRpdGxlOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBEZWxldGVQYWdlT3B0aW9ucyxcbik6IFByb21pc2U8UmVzdWx0PHN0cmluZywgUmV0cnlFcnJvcj4+ID0+XG4gIHB1c2goXG4gICAgcHJvamVjdCxcbiAgICB0aXRsZSxcbiAgICAocGFnZSkgPT4gcGFnZS5wZXJzaXN0ZW50ID8gW3sgZGVsZXRlZDogdHJ1ZSB9XSA6IFtdLFxuICAgIG9wdGlvbnMsXG4gICk7XG4iLCAiaW1wb3J0IHR5cGUge1xuICBOb3RGb3VuZEVycm9yLFxuICBOb3RMb2dnZWRJbkVycm9yLFxuICBOb3RNZW1iZXJFcnJvcixcbn0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuaW1wb3J0IHsgY29va2llIH0gZnJvbSBcIi4vYXV0aC50c1wiO1xuaW1wb3J0IHsgbWFrZUVycm9yIH0gZnJvbSBcIi4vZXJyb3IudHNcIjtcbmltcG9ydCB7IGVuY29kZVRpdGxlVVJJIH0gZnJvbSBcIi4uL3RpdGxlLnRzXCI7XG5pbXBvcnQgeyBCYXNlT3B0aW9ucywgUmVzdWx0LCBzZXREZWZhdWx0cyB9IGZyb20gXCIuL3V0aWwudHNcIjtcblxuY29uc3QgZ2V0VGFibGVfdG9SZXF1ZXN0OiBHZXRUYWJsZVtcInRvUmVxdWVzdFwiXSA9IChcbiAgcHJvamVjdCxcbiAgdGl0bGUsXG4gIGZpbGVuYW1lLFxuICBvcHRpb25zLFxuKSA9PiB7XG4gIGNvbnN0IHsgc2lkLCBob3N0TmFtZSB9ID0gc2V0RGVmYXVsdHMob3B0aW9ucyA/PyB7fSk7XG4gIGNvbnN0IHBhdGggPSBgaHR0cHM6Ly8ke2hvc3ROYW1lfS9hcGkvdGFibGUvJHtwcm9qZWN0fS8ke1xuICAgIGVuY29kZVRpdGxlVVJJKHRpdGxlKVxuICB9LyR7ZW5jb2RlVVJJQ29tcG9uZW50KGZpbGVuYW1lKX0uY3N2YDtcblxuICByZXR1cm4gbmV3IFJlcXVlc3QoXG4gICAgcGF0aCxcbiAgICBzaWQgPyB7IGhlYWRlcnM6IHsgQ29va2llOiBjb29raWUoc2lkKSB9IH0gOiB1bmRlZmluZWQsXG4gICk7XG59O1xuXG5jb25zdCBnZXRUYWJsZV9mcm9tUmVzcG9uc2U6IEdldFRhYmxlW1wiZnJvbVJlc3BvbnNlXCJdID0gYXN5bmMgKHJlcykgPT4ge1xuICBpZiAoIXJlcy5vaykge1xuICAgIGlmIChyZXMuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgIC8vIHJlc3BvbnNl44GM56m65paH5a2X44Gu5pmC44GM44GC44KL44Gu44Gn44CB6Ieq5YmN44Gn57WE44G/56uL44Gm44KLXG4gICAgICByZXR1cm4ge1xuICAgICAgICBvazogZmFsc2UsXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgbmFtZTogXCJOb3RGb3VuZEVycm9yXCIsXG4gICAgICAgICAgbWVzc2FnZTogXCJUYWJsZSBub3QgZm91bmQuXCIsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbWFrZUVycm9yPE5vdExvZ2dlZEluRXJyb3IgfCBOb3RNZW1iZXJFcnJvcj4ocmVzKTtcbiAgfVxuICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IGF3YWl0IHJlcy50ZXh0KCkgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VGFibGUge1xuICAvKiogL2FwaS90YWJsZS86cHJvamVjdC86dGl0bGUvOmZpbGVuYW1lLmNzdiDjga7opoHmsYLjgpLntYTjgb/nq4vjgabjgotcbiAgICpcbiAgICogQHBhcmFtIHByb2plY3Qg5Y+W5b6X44GX44Gf44GE44Oa44O844K444GucHJvamVjdOWQjVxuICAgKiBAcGFyYW0gdGl0bGUg5Y+W5b6X44GX44Gf44GE44Oa44O844K444GudGl0bGUg5aSn5paH5a2X5bCP5paH5a2X44Gv5ZWP44KP44Gq44GEXG4gICAqIEBwYXJhbSBmaWxlbmFtZSDjg4bjg7zjg5bjg6vjga7lkI3liY1cbiAgICogQHBhcmFtIG9wdGlvbnMg44Kq44OX44K344On44OzXG4gICAqIEByZXR1cm4gcmVxdWVzdFxuICAgKi9cbiAgdG9SZXF1ZXN0OiAoXG4gICAgcHJvamVjdDogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogQmFzZU9wdGlvbnMsXG4gICkgPT4gUmVxdWVzdDtcblxuICAvKiog5biw44Gj44Gm44GN44Gf5b+c562U44GL44KJ44Oa44O844K444GuSlNPTuODh+ODvOOCv+OCkuWPluW+l+OBmeOCi1xuICAgKlxuICAgKiBAcGFyYW0gcmVzIOW/nOetlFxuICAgKiBAcmV0dXJuIOODmuODvOOCuOOBrkpTT07jg4fjg7zjgr9cbiAgICovXG4gIGZyb21SZXNwb25zZTogKHJlczogUmVzcG9uc2UpID0+IFByb21pc2U8XG4gICAgUmVzdWx0PFxuICAgICAgc3RyaW5nLFxuICAgICAgTm90Rm91bmRFcnJvciB8IE5vdExvZ2dlZEluRXJyb3IgfCBOb3RNZW1iZXJFcnJvclxuICAgID5cbiAgPjtcblxuICAoXG4gICAgcHJvamVjdDogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogQmFzZU9wdGlvbnMsXG4gICk6IFByb21pc2U8XG4gICAgUmVzdWx0PFxuICAgICAgc3RyaW5nLFxuICAgICAgTm90Rm91bmRFcnJvciB8IE5vdExvZ2dlZEluRXJyb3IgfCBOb3RNZW1iZXJFcnJvclxuICAgID5cbiAgPjtcbn1cblxuLyoqIOaMh+WumuOBl+OBn+ODhuODvOODluODq+OCkkNTVuW9ouW8j+OBp+W+l+OCi1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0IOWPluW+l+OBl+OBn+OBhOODmuODvOOCuOOBrnByb2plY3TlkI1cbiAqIEBwYXJhbSB0aXRsZSDlj5blvpfjgZfjgZ/jgYTjg5rjg7zjgrjjga50aXRsZSDlpKfmloflrZflsI/mloflrZfjga/llY/jgo/jgarjgYRcbiAqIEBwYXJhbSBmaWxlbmFtZSDjg4bjg7zjg5bjg6vjga7lkI3liY1cbiAqIEBwYXJhbSBvcHRpb25zIOOCquODl+OCt+ODp+ODs1xuICovXG5leHBvcnQgY29uc3QgZ2V0VGFibGU6IEdldFRhYmxlID0gYXN5bmMgKFxuICBwcm9qZWN0LFxuICB0aXRsZSxcbiAgZmlsZW5hbWUsXG4gIG9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgeyBmZXRjaCB9ID0gc2V0RGVmYXVsdHMob3B0aW9ucyA/PyB7fSk7XG4gIGNvbnN0IHJlcSA9IGdldFRhYmxlX3RvUmVxdWVzdChwcm9qZWN0LCB0aXRsZSwgZmlsZW5hbWUsIG9wdGlvbnMpO1xuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChyZXEpO1xuICByZXR1cm4gYXdhaXQgZ2V0VGFibGVfZnJvbVJlc3BvbnNlKHJlcyk7XG59O1xuXG5nZXRUYWJsZS50b1JlcXVlc3QgPSBnZXRUYWJsZV90b1JlcXVlc3Q7XG5nZXRUYWJsZS5mcm9tUmVzcG9uc2UgPSBnZXRUYWJsZV9mcm9tUmVzcG9uc2U7XG4iLCAiaW1wb3J0IHR5cGUge1xuICBOb3RGb3VuZEVycm9yLFxuICBOb3RMb2dnZWRJbkVycm9yLFxuICBOb3RNZW1iZXJFcnJvcixcbn0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuaW1wb3J0IHsgY29va2llLCBnZXRDU1JGVG9rZW4gfSBmcm9tIFwiLi9hdXRoLnRzXCI7XG5pbXBvcnQgeyBtYWtlRXJyb3IgfSBmcm9tIFwiLi9lcnJvci50c1wiO1xuaW1wb3J0IHsgRXh0ZW5kZWRPcHRpb25zLCBSZXN1bHQsIHNldERlZmF1bHRzIH0gZnJvbSBcIi4vdXRpbC50c1wiO1xuXG4vKiog5oyH5a6a44GX44GfcHJvamVjdOWGheOBruWFqOOBpuOBruODquODs+OCr+OCkuabuOOBjeaPm+OBiOOCi1xuICpcbiAqIOODquODs+OCr+OBqOWQjOS4gOOBruOCv+OCpOODiOODq+OBr+abuOOBjeaPm+OCj+OCieOBquOBhOOBruOBp+azqOaEj1xuICogLSDjgr/jgqTjg4jjg6vjgoLmm7jjgY3mj5vjgYjjgZ/jgYTjgajjgY3jga8vYnJvd3Nlci9tb2QudHPjga5gcGF0Y2goKWDjgarjganjgafmm7jjgY3mj5vjgYjjgovjgZPjgahcbiAqXG4gKiBAcGFyYW0gcHJvamVjdCDjgZPjgozjgafmjIflrprjgZfjgZ9wcm9qZWN05YaF44Gu5YWo44Gm44Gu44Oq44Oz44Kv44GM572u5o+b5a++6LGh44Go44Gq44KLXG4gKiBAcGFyYW0gZnJvbSDnva7mj5vliY3jga7jg6rjg7Pjgq9cbiAqIEBwYXJhbSB0byDnva7mj5vlvozjga7jg6rjg7Pjgq9cbiAqIEBwYXJhbSBpbml0IGNvbm5lY3Quc2lk44Gq44GpXG4gKiBAcmV0dXJuIOe9ruaPm+OBleOCjOOBn+ODquODs+OCr+OBjOOBguOBo+OBn+ODmuODvOOCuOOBruaVsFxuICovXG5leHBvcnQgY29uc3QgcmVwbGFjZUxpbmtzID0gYXN5bmMgKFxuICBwcm9qZWN0OiBzdHJpbmcsXG4gIGZyb206IHN0cmluZyxcbiAgdG86IHN0cmluZyxcbiAgaW5pdD86IEV4dGVuZGVkT3B0aW9ucyxcbik6IFByb21pc2U8XG4gIFJlc3VsdDxcbiAgICBudW1iZXIsXG4gICAgTm90Rm91bmRFcnJvciB8IE5vdExvZ2dlZEluRXJyb3IgfCBOb3RNZW1iZXJFcnJvclxuICA+XG4+ID0+IHtcbiAgY29uc3QgeyBzaWQsIGhvc3ROYW1lLCBmZXRjaCwgY3NyZiB9ID0gc2V0RGVmYXVsdHMoaW5pdCA/PyB7fSk7XG5cbiAgY29uc3QgcmVxID0gbmV3IFJlcXVlc3QoXG4gICAgYGh0dHBzOi8vJHtob3N0TmFtZX0vYXBpL3BhZ2VzLyR7cHJvamVjdH0vcmVwbGFjZS9saW5rc2AsXG4gICAge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLThcIixcbiAgICAgICAgXCJYLUNTUkYtVE9LRU5cIjogY3NyZiA/PyBhd2FpdCBnZXRDU1JGVG9rZW4oaW5pdCksXG4gICAgICAgIC4uLihzaWQgPyB7IENvb2tpZTogY29va2llKHNpZCkgfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGZyb20sIHRvIH0pLFxuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gocmVxKTtcblxuICBpZiAoIXJlcy5vaykge1xuICAgIHJldHVybiBtYWtlRXJyb3I8Tm90Rm91bmRFcnJvciB8IE5vdExvZ2dlZEluRXJyb3IgfCBOb3RNZW1iZXJFcnJvcj4ocmVzKTtcbiAgfVxuXG4gIC8vIG1lc3NhZ2Xjgavjga9cIjIgcGFnZXMgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSB1cGRhdGVkIVwi44Go44GE44GG44KI44GG44Gq5paH5a2X5YiX44GM5YWl44Gj44Gm44GE44KL44Gv44GaXG4gIGNvbnN0IHsgbWVzc2FnZSB9ID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIHsgbWVzc2FnZTogc3RyaW5nIH07XG4gIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogcGFyc2VJbnQobWVzc2FnZS5tYXRjaCgvXFxkKy8pPy5bMF0gPz8gXCIwXCIpIH07XG59O1xuIiwgImltcG9ydCB0eXBlIHtcbiAgRXJyb3JMaWtlLFxuICBOb3RGb3VuZEVycm9yLFxuICBOb3RMb2dnZWRJbkVycm9yLFxuICBTZWFyY2hlZFRpdGxlLFxufSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1yZXN0LnRzXCI7XG5pbXBvcnQgeyBjb29raWUgfSBmcm9tIFwiLi9hdXRoLnRzXCI7XG5pbXBvcnQgeyBtYWtlRXJyb3IgfSBmcm9tIFwiLi9lcnJvci50c1wiO1xuaW1wb3J0IHsgQmFzZU9wdGlvbnMsIFJlc3VsdCwgc2V0RGVmYXVsdHMgfSBmcm9tIFwiLi91dGlsLnRzXCI7XG5cbi8qKiDkuI3mraPjgapmb2xsb3dpbmdJZOOCkua4oeOBleOCjOOBn+OBqOOBjeOBq+eZuueUn+OBmeOCi+OCqOODqeODvCAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZhbGlkRm9sbG93aW5nSWRFcnJvciBleHRlbmRzIEVycm9yTGlrZSB7XG4gIG5hbWU6IFwiSW52YWxpZEZvbGxvd2luZ0lkRXJyb3JcIjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRMaW5rc09wdGlvbnMgZXh0ZW5kcyBCYXNlT3B0aW9ucyB7XG4gIC8qKiDmrKHjga7jg6rjg7Pjgq/jg6rjgrnjg4jjgpLnpLrjgZlJRCAqL1xuICBmb2xsb3dpbmdJZD86IHN0cmluZztcbn1cblxuLyoqIOaMh+WumuOBl+OBn3Byb2plY3Tjga7jg6rjg7Pjgq/jg4fjg7zjgr/jgpLlj5blvpfjgZnjgotcbiAqXG4gKiBAcGFyYW0gcHJvamVjdCDjg4fjg7zjgr/jgpLlj5blvpfjgZfjgZ/jgYRwcm9qZWN0XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRMaW5rcyA9IGFzeW5jIChcbiAgcHJvamVjdDogc3RyaW5nLFxuICBvcHRpb25zPzogR2V0TGlua3NPcHRpb25zLFxuKTogUHJvbWlzZTxcbiAgUmVzdWx0PHtcbiAgICBwYWdlczogU2VhcmNoZWRUaXRsZVtdO1xuICAgIGZvbGxvd2luZ0lkOiBzdHJpbmc7XG4gIH0sIE5vdEZvdW5kRXJyb3IgfCBOb3RMb2dnZWRJbkVycm9yIHwgSW52YWxpZEZvbGxvd2luZ0lkRXJyb3I+XG4+ID0+IHtcbiAgY29uc3QgeyBzaWQsIGhvc3ROYW1lLCBmZXRjaCwgZm9sbG93aW5nSWQgfSA9IHNldERlZmF1bHRzKG9wdGlvbnMgPz8ge30pO1xuXG4gIGNvbnN0IHJlcSA9IG5ldyBSZXF1ZXN0KFxuICAgIGBodHRwczovLyR7aG9zdE5hbWV9L2FwaS9wYWdlcy8ke3Byb2plY3R9L3NlYXJjaC90aXRsZXMke1xuICAgICAgZm9sbG93aW5nSWQgPyBgP2ZvbGxvd2luZ0lkPSR7Zm9sbG93aW5nSWR9YCA6IFwiXCJcbiAgICB9YCxcbiAgICBzaWQgPyB7IGhlYWRlcnM6IHsgQ29va2llOiBjb29raWUoc2lkKSB9IH0gOiB1bmRlZmluZWQsXG4gICk7XG5cbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gocmVxKTtcblxuICBpZiAoIXJlcy5vaykge1xuICAgIGlmIChyZXMuc3RhdHVzID09PSA0MjIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBuYW1lOiBcIkludmFsaWRGb2xsb3dpbmdJZEVycm9yXCIsXG4gICAgICAgICAgbWVzc2FnZTogYXdhaXQgcmVzLnRleHQoKSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ha2VFcnJvcjxOb3RGb3VuZEVycm9yIHwgTm90TG9nZ2VkSW5FcnJvcj4ocmVzKTtcbiAgfVxuXG4gIGNvbnN0IHBhZ2VzID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIFNlYXJjaGVkVGl0bGVbXTtcbiAgcmV0dXJuIHtcbiAgICBvazogdHJ1ZSxcbiAgICB2YWx1ZTogeyBwYWdlcywgZm9sbG93aW5nSWQ6IHJlcy5oZWFkZXJzLmdldChcIlgtZm9sbG93aW5nLWlkXCIpID8/IFwiXCIgfSxcbiAgfTtcbn07XG5cbi8qKiDmjIflrprjgZfjgZ9wcm9qZWN044Gu5YWo44Gm44Gu44Oq44Oz44Kv44OH44O844K/44KS5Y+W5b6X44GZ44KLXG4gKlxuICogcmVzcG9uc2Xjgafov5TjgaPjgabjgY3jgZ/jg6rjg7Pjgq/jg4fjg7zjgr/jga7loYrjgZTjgajjgavov5TjgZlcbiAqXG4gKiBAcGFyYW0gcHJvamVjdCDjg4fjg7zjgr/jgpLlj5blvpfjgZfjgZ/jgYRwcm9qZWN0XG4gKiBAcmV0dXJuIOiqjeiovOOBjOmAmuOCieOBquOBi+OBo+OBn+OCieOCqOODqeODvOOCkuOAgemAmuOBo+OBn+OCiWFzeW5jIGdlbmVyYXRvcuOCkui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgcmVhZExpbmtzQnVsayA9IGFzeW5jIChcbiAgcHJvamVjdDogc3RyaW5nLFxuICBvcHRpb25zPzogQmFzZU9wdGlvbnMsXG4pOiBQcm9taXNlPFxuICB8IE5vdEZvdW5kRXJyb3JcbiAgfCBOb3RMb2dnZWRJbkVycm9yXG4gIHwgSW52YWxpZEZvbGxvd2luZ0lkRXJyb3JcbiAgfCBBc3luY0dlbmVyYXRvcjxTZWFyY2hlZFRpdGxlW10sIHZvaWQsIHVua25vd24+XG4+ID0+IHtcbiAgY29uc3QgZmlyc3QgPSBhd2FpdCBnZXRMaW5rcyhwcm9qZWN0LCBvcHRpb25zKTtcbiAgaWYgKCFmaXJzdC5vaykgcmV0dXJuIGZpcnN0LnZhbHVlO1xuXG4gIHJldHVybiBhc3luYyBmdW5jdGlvbiogKCkge1xuICAgIHlpZWxkIGZpcnN0LnZhbHVlLnBhZ2VzO1xuICAgIGxldCBmb2xsb3dpbmdJZCA9IGZpcnN0LnZhbHVlLmZvbGxvd2luZ0lkO1xuXG4gICAgd2hpbGUgKGZvbGxvd2luZ0lkKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRMaW5rcyhwcm9qZWN0LCB7IGZvbGxvd2luZ0lkLCAuLi5vcHRpb25zIH0pO1xuXG4gICAgICAvLyDjgZnjgafjgavoqo3oqLzjga/pgJrjgaPjgabjgYTjgovjga7jgafjgIHjgZPjgZPjgafjgqjjg6njg7zjgavjgarjgovjga/jgZrjgYzjgarjgYRcbiAgICAgIGlmICghcmVzdWx0Lm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBhdXRob3JpemF0aW9uIGNhbm5vdCBiZSB1bmF2YWlsYWJsZVwiKTtcbiAgICAgIH1cbiAgICAgIHlpZWxkIHJlc3VsdC52YWx1ZS5wYWdlcztcbiAgICAgIGZvbGxvd2luZ0lkID0gcmVzdWx0LnZhbHVlLmZvbGxvd2luZ0lkO1xuICAgIH1cbiAgfSgpO1xufTtcblxuLyoqIOaMh+WumuOBl+OBn3Byb2plY3Tjga7lhajjgabjga7jg6rjg7Pjgq/jg4fjg7zjgr/jgpLlj5blvpfjgZfjgIHkuIDjgaTjgaXjgaTov5TjgZlcbiAqXG4gKiBAcGFyYW0gcHJvamVjdCDjg4fjg7zjgr/jgpLlj5blvpfjgZfjgZ/jgYRwcm9qZWN0XG4gKiBAcmV0dXJuIOiqjeiovOOBjOmAmuOCieOBquOBi+OBo+OBn+OCieOCqOODqeODvOOCkuOAgemAmuOBo+OBn+OCiWFzeW5jIGdlbmVyYXRvcuOCkui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgcmVhZExpbmtzID0gYXN5bmMgKFxuICBwcm9qZWN0OiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBCYXNlT3B0aW9ucyxcbik6IFByb21pc2U8XG4gIHwgTm90Rm91bmRFcnJvclxuICB8IE5vdExvZ2dlZEluRXJyb3JcbiAgfCBJbnZhbGlkRm9sbG93aW5nSWRFcnJvclxuICB8IEFzeW5jR2VuZXJhdG9yPFNlYXJjaGVkVGl0bGUsIHZvaWQsIHVua25vd24+XG4+ID0+IHtcbiAgY29uc3QgcmVhZGVyID0gYXdhaXQgcmVhZExpbmtzQnVsayhwcm9qZWN0LCBvcHRpb25zKTtcbiAgaWYgKFwibmFtZVwiIGluIHJlYWRlcikgcmV0dXJuIHJlYWRlcjtcblxuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24qICgpIHtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHRpdGxlcyBvZiByZWFkZXIpIHtcbiAgICAgIGZvciAoY29uc3QgdGl0bGUgb2YgdGl0bGVzKSB7XG4gICAgICAgIHlpZWxkIHRpdGxlO1xuICAgICAgfVxuICAgIH1cbiAgfSgpO1xufTtcbiIsICJpbXBvcnQgdHlwZSB7XG4gIE5vUXVlcnlFcnJvcixcbiAgTm90Rm91bmRFcnJvcixcbiAgTm90TG9nZ2VkSW5FcnJvcixcbiAgTm90TWVtYmVyRXJyb3IsXG4gIFByb2plY3RTZWFyY2hSZXN1bHQsXG4gIFNlYXJjaFJlc3VsdCxcbn0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuaW1wb3J0IHsgY29va2llIH0gZnJvbSBcIi4vYXV0aC50c1wiO1xuaW1wb3J0IHsgbWFrZUVycm9yIH0gZnJvbSBcIi4vZXJyb3IudHNcIjtcbmltcG9ydCB7IEJhc2VPcHRpb25zLCBSZXN1bHQsIHNldERlZmF1bHRzIH0gZnJvbSBcIi4vdXRpbC50c1wiO1xuXG4vKiogc2VhcmNoIGEgcHJvamVjdCBmb3IgcGFnZXNcbiAqXG4gKiBAcGFyYW0gcXVlcnkg5qSc57Si6Kqe5Y+lXG4gKiBAcGFyYW0gcHJvamVjdCDmpJzntKLnr4Tlm7LjgajjgZnjgotwcm9qZWN044Gu5ZCN5YmNXG4gKiBAcGFyYW0gaW5pdCBjb25uZWN0LnNpZCBldGMuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWFyY2hGb3JQYWdlcyA9IGFzeW5jIChcbiAgcXVlcnk6IHN0cmluZyxcbiAgcHJvamVjdDogc3RyaW5nLFxuICBpbml0PzogQmFzZU9wdGlvbnMsXG4pOiBQcm9taXNlPFxuICBSZXN1bHQ8XG4gICAgU2VhcmNoUmVzdWx0LFxuICAgIE5vdEZvdW5kRXJyb3IgfCBOb3RNZW1iZXJFcnJvciB8IE5vdExvZ2dlZEluRXJyb3IgfCBOb1F1ZXJ5RXJyb3JcbiAgPlxuPiA9PiB7XG4gIGNvbnN0IHsgc2lkLCBob3N0TmFtZSwgZmV0Y2ggfSA9IHNldERlZmF1bHRzKGluaXQgPz8ge30pO1xuXG4gIGNvbnN0IHJlcSA9IG5ldyBSZXF1ZXN0KFxuICAgIGBodHRwczovLyR7aG9zdE5hbWV9L2FwaS9wYWdlcy8ke3Byb2plY3R9L3NlYXJjaC9xdWVyeT9xPSR7XG4gICAgICBlbmNvZGVVUklDb21wb25lbnQocXVlcnkpXG4gICAgfWAsXG4gICAgc2lkID8geyBoZWFkZXJzOiB7IENvb2tpZTogY29va2llKHNpZCkgfSB9IDogdW5kZWZpbmVkLFxuICApO1xuXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHJlcSk7XG5cbiAgaWYgKCFyZXMub2spIHtcbiAgICBpZiAocmVzLnN0YXR1cyA9PT0gNDIyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvazogZmFsc2UsXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgbmFtZTogXCJOb1F1ZXJ5RXJyb3JcIixcbiAgICAgICAgICBtZXNzYWdlOiAoYXdhaXQgcmVzLmpzb24oKSkubWVzc2FnZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBtYWtlRXJyb3I8Tm90Rm91bmRFcnJvciB8IE5vdExvZ2dlZEluRXJyb3IgfCBOb3RNZW1iZXJFcnJvcj4ocmVzKTtcbiAgfVxuXG4gIGNvbnN0IHZhbHVlID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIFNlYXJjaFJlc3VsdDtcbiAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlIH07XG59O1xuXG4vKiogc2VhcmNoIGZvciBqb2luZWQgcHJvamVjdHNcbiAqXG4gKiBAcGFyYW0gcXVlcnkg5qSc57Si6Kqe5Y+lXG4gKiBAcGFyYW0gaW5pdCBjb25uZWN0LnNpZCBldGMuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWFyY2hGb3JKb2luZWRQcm9qZWN0cyA9IGFzeW5jIChcbiAgcXVlcnk6IHN0cmluZyxcbiAgaW5pdD86IEJhc2VPcHRpb25zLFxuKTogUHJvbWlzZTxcbiAgUmVzdWx0PFxuICAgIFByb2plY3RTZWFyY2hSZXN1bHQsXG4gICAgTm90TG9nZ2VkSW5FcnJvciB8IE5vUXVlcnlFcnJvclxuICA+XG4+ID0+IHtcbiAgY29uc3QgeyBzaWQsIGhvc3ROYW1lLCBmZXRjaCB9ID0gc2V0RGVmYXVsdHMoaW5pdCA/PyB7fSk7XG5cbiAgY29uc3QgcmVxID0gbmV3IFJlcXVlc3QoXG4gICAgYGh0dHBzOi8vJHtob3N0TmFtZX0vYXBpL3Byb2plY3RzL3NlYXJjaC9xdWVyeT9xPSR7XG4gICAgICBlbmNvZGVVUklDb21wb25lbnQocXVlcnkpXG4gICAgfWAsXG4gICAgc2lkID8geyBoZWFkZXJzOiB7IENvb2tpZTogY29va2llKHNpZCkgfSB9IDogdW5kZWZpbmVkLFxuICApO1xuXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHJlcSk7XG5cbiAgaWYgKCFyZXMub2spIHtcbiAgICBpZiAocmVzLnN0YXR1cyA9PT0gNDIyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvazogZmFsc2UsXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgbmFtZTogXCJOb1F1ZXJ5RXJyb3JcIixcbiAgICAgICAgICBtZXNzYWdlOiAoYXdhaXQgcmVzLmpzb24oKSkubWVzc2FnZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBtYWtlRXJyb3I8Tm90TG9nZ2VkSW5FcnJvcj4ocmVzKTtcbiAgfVxuXG4gIGNvbnN0IHZhbHVlID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIFByb2plY3RTZWFyY2hSZXN1bHQ7XG4gIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZSB9O1xufTtcblxuLyoqIHNlYXJjaCBmb3Igd2F0Y2ggbGlzdFxuICpcbiAqIHdhdGNoIGxpc3TjgajpipjmiZPjgaPjgabjgYTjgovjgYzjgIHlrp/pmpvjgavjga/lj4LliqDjgZfjgabjgYTjgarjgYRwdWJsaWMgcHJvamVjdOOBquOCieOBqeOCjOOBp+OCguaknOe0ouOBp+OBjeOCi1xuICpcbiAqIOWPguWKoOOBl+OBpuOBhOOCi3Byb2plY3Tjga5pZOOBr+aMh+WumuOBl+OBpuOCgueEoeimluOBleOCjOOCi+OBoOOBkVxuICpcbiAqIEBwYXJhbSBxdWVyeSDmpJzntKLoqp7lj6VcbiAqIEBwYXJhbSBwcm9qZWN0SWRzIOaknOe0ouWAmeijnOOBrnByb2plY3Tjga5pZOOBruODquOCueODiFxuICogQHBhcmFtIGluaXQgY29ubmVjdC5zaWQgZXRjLlxuICovXG5leHBvcnQgY29uc3Qgc2VhcmNoRm9yV2F0Y2hMaXN0ID0gYXN5bmMgKFxuICBxdWVyeTogc3RyaW5nLFxuICBwcm9qZWN0SWRzOiBzdHJpbmdbXSxcbiAgaW5pdD86IEJhc2VPcHRpb25zLFxuKTogUHJvbWlzZTxcbiAgUmVzdWx0PFxuICAgIFByb2plY3RTZWFyY2hSZXN1bHQsXG4gICAgTm90TG9nZ2VkSW5FcnJvciB8IE5vUXVlcnlFcnJvclxuICA+XG4+ID0+IHtcbiAgY29uc3QgeyBzaWQsIGhvc3ROYW1lLCBmZXRjaCB9ID0gc2V0RGVmYXVsdHMoaW5pdCA/PyB7fSk7XG5cbiAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICBwYXJhbXMuYXBwZW5kKFwicVwiLCBlbmNvZGVVUklDb21wb25lbnQocXVlcnkpKTtcbiAgZm9yIChjb25zdCBwcm9qZWN0SWQgb2YgcHJvamVjdElkcykge1xuICAgIHBhcmFtcy5hcHBlbmQoXCJpZHNcIiwgcHJvamVjdElkKTtcbiAgfVxuXG4gIGNvbnN0IHJlcSA9IG5ldyBSZXF1ZXN0KFxuICAgIGBodHRwczovLyR7aG9zdE5hbWV9L2FwaS9wcm9qZWN0cy9zZWFyY2gvd2F0Y2gtbGlzdD8ke3BhcmFtcy50b1N0cmluZygpfWAsXG4gICAgc2lkID8geyBoZWFkZXJzOiB7IENvb2tpZTogY29va2llKHNpZCkgfSB9IDogdW5kZWZpbmVkLFxuICApO1xuXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHJlcSk7XG5cbiAgaWYgKCFyZXMub2spIHtcbiAgICBpZiAocmVzLnN0YXR1cyA9PT0gNDIyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvazogZmFsc2UsXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgLy8g5pys5b2T44GvcHJvamVjdCBpZOOBjOS4jeato+OBquOBqOOBjeOCgjQyMiBlcnJvcuOBq+OBquOCi1xuICAgICAgICAgIG5hbWU6IFwiTm9RdWVyeUVycm9yXCIsXG4gICAgICAgICAgbWVzc2FnZTogKGF3YWl0IHJlcy5qc29uKCkpLm1lc3NhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbWFrZUVycm9yPE5vdExvZ2dlZEluRXJyb3I+KHJlcyk7XG4gIH1cblxuICBjb25zdCB2YWx1ZSA9IChhd2FpdCByZXMuanNvbigpKSBhcyBQcm9qZWN0U2VhcmNoUmVzdWx0O1xuICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWUgfTtcbn07XG4iLCAiaW1wb3J0IHR5cGUge1xuICBCYWRSZXF1ZXN0RXJyb3IsXG4gIEludmFsaWRVUkxFcnJvcixcbiAgU2Vzc2lvbkVycm9yLFxufSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1yZXN0LnRzXCI7XG5pbXBvcnQgeyBjb29raWUsIGdldENTUkZUb2tlbiB9IGZyb20gXCIuL2F1dGgudHNcIjtcbmltcG9ydCB7IG1ha2VFcnJvciB9IGZyb20gXCIuL2Vycm9yLnRzXCI7XG5pbXBvcnQgeyBFeHRlbmRlZE9wdGlvbnMsIFJlc3VsdCwgc2V0RGVmYXVsdHMgfSBmcm9tIFwiLi91dGlsLnRzXCI7XG5cbi8qKiDmjIflrprjgZfjgZ9VUkzjga53ZWIgcGFnZeOBrnRpdGxl44KSc2NyYXBib3jjga5zZXJ2ZXLntYznlLHjgaflj5blvpfjgZnjgotcbiAqXG4gKiBAcGFyYW0gdXJsIOWPluW+l+OBl+OBn+OBhFVSTFxuICogQHBhcmFtIGluaXQgY29ubmVjdC5zaWTjgarjgalcbiAqIEByZXR1cm4gd2ViIHBhZ2Xjga50aWx0ZVxuICovXG5leHBvcnQgY29uc3QgZ2V0V2ViUGFnZVRpdGxlID0gYXN5bmMgKFxuICB1cmw6IHN0cmluZyB8IFVSTCxcbiAgaW5pdD86IEV4dGVuZGVkT3B0aW9ucyxcbik6IFByb21pc2U8XG4gIFJlc3VsdDxcbiAgICBzdHJpbmcsXG4gICAgfCBTZXNzaW9uRXJyb3JcbiAgICB8IEludmFsaWRVUkxFcnJvclxuICAgIHwgQmFkUmVxdWVzdEVycm9yXG4gID5cbj4gPT4ge1xuICBjb25zdCB7IHNpZCwgaG9zdE5hbWUsIGZldGNoLCBjc3JmIH0gPSBzZXREZWZhdWx0cyhpbml0ID8/IHt9KTtcblxuICBjb25zdCByZXEgPSBuZXcgUmVxdWVzdChcbiAgICBgaHR0cHM6Ly8ke2hvc3ROYW1lfS9hcGkvZW1iZWQtdGV4dC91cmw/dXJsPSR7XG4gICAgICBlbmNvZGVVUklDb21wb25lbnQodXJsLnRvU3RyaW5nKCkpXG4gICAgfWAsXG4gICAge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLThcIixcbiAgICAgICAgXCJYLUNTUkYtVE9LRU5cIjogY3NyZiA/PyBhd2FpdCBnZXRDU1JGVG9rZW4oaW5pdCksXG4gICAgICAgIC4uLihzaWQgPyB7IENvb2tpZTogY29va2llKHNpZCkgfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHRpbWVvdXQ6IDMwMDAgfSksXG4gICAgfSxcbiAgKTtcblxuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChyZXEpO1xuXG4gIGlmICghcmVzLm9rKSB7XG4gICAgaWYgKHJlcy5zdGF0dXMgPT09IDQyMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIG5hbWU6IFwiSW52YWxpZFVSTEVycm9yXCIsXG4gICAgICAgICAgbWVzc2FnZTogKGF3YWl0IHJlcy5qc29uKCkpLm1lc3NhZ2UgYXMgc3RyaW5nLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG1ha2VFcnJvcjxTZXNzaW9uRXJyb3IgfCBCYWRSZXF1ZXN0RXJyb3I+KHJlcyk7XG4gIH1cblxuICBjb25zdCB7IHRpdGxlIH0gPSAoYXdhaXQgcmVzLmpzb24oKSkgYXMgeyB0aXRsZTogc3RyaW5nIH07XG4gIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogdGl0bGUgfTtcbn07XG4iLCAiaW1wb3J0IHR5cGUge1xuICBCYWRSZXF1ZXN0RXJyb3IsXG4gIEludmFsaWRVUkxFcnJvcixcbiAgU2Vzc2lvbkVycm9yLFxuICBUd2VldEluZm8sXG59IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IGNvb2tpZSwgZ2V0Q1NSRlRva2VuIH0gZnJvbSBcIi4vYXV0aC50c1wiO1xuaW1wb3J0IHsgbWFrZUVycm9yIH0gZnJvbSBcIi4vZXJyb3IudHNcIjtcbmltcG9ydCB7IEV4dGVuZGVkT3B0aW9ucywgUmVzdWx0LCBzZXREZWZhdWx0cyB9IGZyb20gXCIuL3V0aWwudHNcIjtcblxuLyoqIOaMh+WumuOBl+OBn1R3ZWV044Gu5oOF5aCx44KS5Y+W5b6X44GZ44KLXG4gKlxuICogQHBhcmFtIHVybCDlj5blvpfjgZfjgZ/jgYRUd2VldOOBrlVSTFxuICogQHBhcmFtIGluaXQgY29ubmVjdC5zaWTjgarjgalcbiAqIEByZXR1cm4gdHdlZXTjga7kuK3ouqvjgajjgYtcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFR3ZWV0SW5mbyA9IGFzeW5jIChcbiAgdXJsOiBzdHJpbmcgfCBVUkwsXG4gIGluaXQ/OiBFeHRlbmRlZE9wdGlvbnMsXG4pOiBQcm9taXNlPFxuICBSZXN1bHQ8XG4gICAgVHdlZXRJbmZvLFxuICAgIHwgU2Vzc2lvbkVycm9yXG4gICAgfCBJbnZhbGlkVVJMRXJyb3JcbiAgICB8IEJhZFJlcXVlc3RFcnJvclxuICA+XG4+ID0+IHtcbiAgY29uc3QgeyBzaWQsIGhvc3ROYW1lLCBmZXRjaCwgY3NyZiB9ID0gc2V0RGVmYXVsdHMoaW5pdCA/PyB7fSk7XG4gIGNvbnN0IHJlcSA9IG5ldyBSZXF1ZXN0KFxuICAgIGBodHRwczovLyR7aG9zdE5hbWV9L2FwaS9lbWJlZC10ZXh0L3R3aXR0ZXI/dXJsPSR7XG4gICAgICBlbmNvZGVVUklDb21wb25lbnQodXJsLnRvU3RyaW5nKCkpXG4gICAgfWAsXG4gICAge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLThcIixcbiAgICAgICAgXCJYLUNTUkYtVE9LRU5cIjogY3NyZiA/PyBhd2FpdCBnZXRDU1JGVG9rZW4oaW5pdCksXG4gICAgICAgIC4uLihzaWQgPyB7IENvb2tpZTogY29va2llKHNpZCkgfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHRpbWVvdXQ6IDMwMDAgfSksXG4gICAgfSxcbiAgKTtcblxuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChyZXEpO1xuXG4gIGlmICghcmVzLm9rKSB7XG4gICAgaWYgKHJlcy5zdGF0dXMgPT09IDQyMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIG5hbWU6IFwiSW52YWxpZFVSTEVycm9yXCIsXG4gICAgICAgICAgbWVzc2FnZTogKGF3YWl0IHJlcy5qc29uKCkpLm1lc3NhZ2UgYXMgc3RyaW5nLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG1ha2VFcnJvcjxTZXNzaW9uRXJyb3IgfCBCYWRSZXF1ZXN0RXJyb3I+KHJlcyk7XG4gIH1cblxuICBjb25zdCB0d2VldCA9IChhd2FpdCByZXMuanNvbigpKSBhcyBUd2VldEluZm87XG4gIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogdHdlZXQgfTtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBOb3RMb2dnZWRJbkVycm9yIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuaW1wb3J0IHsgY29va2llIH0gZnJvbSBcIi4vYXV0aC50c1wiO1xuaW1wb3J0IHsgbWFrZUVycm9yIH0gZnJvbSBcIi4vZXJyb3IudHNcIjtcbmltcG9ydCB7IEJhc2VPcHRpb25zLCBSZXN1bHQsIHNldERlZmF1bHRzIH0gZnJvbSBcIi4vdXRpbC50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdldEd5YXpvVG9rZW5PcHRpb25zIGV4dGVuZHMgQmFzZU9wdGlvbnMge1xuICAvKiogR3lhem8gVGVhbXPjga7jg4Hjg7zjg6DlkI1cbiAgICpcbiAgICogR3lhem8gVGVhbXPjgad1cGxvYWTjgZfjgZ/jgYTjgajjgY3jgavkvb/jgYZcbiAgICovXG4gIGd5YXpvVGVhbXNOYW1lPzogc3RyaW5nO1xufVxuXG4vKiogR3lhem8gT0F1dGggdXBsb2Fk44Gn5L2/44GGYWNjZXNzIHRva2Vu44KS5Y+W5b6X44GZ44KLXG4gKlxuICogQHBhcmFtIGluaXQgY29ubmVjdC5zaWTjgarjgalcbiAqIEByZXR1cm4gYWNjZXNzIHRva2VuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRHeWF6b1Rva2VuID0gYXN5bmMgKFxuICBpbml0PzogR2V0R3lhem9Ub2tlbk9wdGlvbnMsXG4pOiBQcm9taXNlPFxuICBSZXN1bHQ8XG4gICAgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIE5vdExvZ2dlZEluRXJyb3JcbiAgPlxuPiA9PiB7XG4gIGNvbnN0IHsgc2lkLCBob3N0TmFtZSwgZ3lhem9UZWFtc05hbWUgfSA9IHNldERlZmF1bHRzKGluaXQgPz8ge30pO1xuICBjb25zdCByZXEgPSBuZXcgUmVxdWVzdChcbiAgICBgaHR0cHM6Ly8ke2hvc3ROYW1lfS9hcGkvbG9naW4vZ3lhem8vb2F1dGgtdXBsb2FkL3Rva2VuJHtcbiAgICAgIGd5YXpvVGVhbXNOYW1lID8gYD9neWF6b1RlYW1zTmFtZT0ke2d5YXpvVGVhbXNOYW1lfWAgOiBcIlwiXG4gICAgfWAsXG4gICAgc2lkID8geyBoZWFkZXJzOiB7IENvb2tpZTogY29va2llKHNpZCkgfSB9IDogdW5kZWZpbmVkLFxuICApO1xuXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHJlcSk7XG4gIGlmICghcmVzLm9rKSB7XG4gICAgcmV0dXJuIG1ha2VFcnJvcjxOb3RMb2dnZWRJbkVycm9yPihyZXMpO1xuICB9XG5cbiAgY29uc3QgeyB0b2tlbiB9ID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIHsgdG9rZW4/OiBzdHJpbmcgfTtcbiAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiB0b2tlbiB9O1xufTtcbiIsICJpbXBvcnQgdHlwZSB7XG4gIE5vdEZvdW5kRXJyb3IsXG4gIE5vdExvZ2dlZEluRXJyb3IsXG4gIE5vdE1lbWJlckVycm9yLFxufSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1yZXN0LnRzXCI7XG5pbXBvcnQgeyBjb29raWUgfSBmcm9tIFwiLi9hdXRoLnRzXCI7XG5pbXBvcnQgeyBtYWtlRXJyb3IgfSBmcm9tIFwiLi9lcnJvci50c1wiO1xuaW1wb3J0IHsgZW5jb2RlVGl0bGVVUkkgfSBmcm9tIFwiLi4vdGl0bGUudHNcIjtcbmltcG9ydCB7IEJhc2VPcHRpb25zLCBSZXN1bHQsIHNldERlZmF1bHRzIH0gZnJvbSBcIi4vdXRpbC50c1wiO1xuXG5jb25zdCBnZXRDb2RlQmxvY2tfdG9SZXF1ZXN0OiBHZXRDb2RlQmxvY2tbXCJ0b1JlcXVlc3RcIl0gPSAoXG4gIHByb2plY3QsXG4gIHRpdGxlLFxuICBmaWxlbmFtZSxcbiAgb3B0aW9ucyxcbikgPT4ge1xuICBjb25zdCB7IHNpZCwgaG9zdE5hbWUgfSA9IHNldERlZmF1bHRzKG9wdGlvbnMgPz8ge30pO1xuICBjb25zdCBwYXRoID0gYGh0dHBzOi8vJHtob3N0TmFtZX0vYXBpL2NvZGUvJHtwcm9qZWN0fS8ke1xuICAgIGVuY29kZVRpdGxlVVJJKHRpdGxlKVxuICB9LyR7ZW5jb2RlVGl0bGVVUkkoZmlsZW5hbWUpfWA7XG5cbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KFxuICAgIHBhdGgsXG4gICAgc2lkID8geyBoZWFkZXJzOiB7IENvb2tpZTogY29va2llKHNpZCkgfSB9IDogdW5kZWZpbmVkLFxuICApO1xufTtcblxuY29uc3QgZ2V0Q29kZUJsb2NrX2Zyb21SZXNwb25zZTogR2V0Q29kZUJsb2NrW1wiZnJvbVJlc3BvbnNlXCJdID0gYXN5bmMgKHJlcykgPT4ge1xuICBpZiAoIXJlcy5vaykge1xuICAgIHJldHVybiByZXMuc3RhdHVzID09PSA0MDQgJiZcbiAgICAgICAgcmVzLmhlYWRlcnMuZ2V0KFwiQ29udGVudC1UeXBlXCIpPy5pbmNsdWRlcz8uKFwidGV4dC9wbGFpblwiKVxuICAgICAgPyB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHsgbmFtZTogXCJOb3RGb3VuZEVycm9yXCIsIG1lc3NhZ2U6IFwiQ29kZSBibG9jayBpcyBub3QgZm91bmRcIiB9LFxuICAgICAgfVxuICAgICAgOiBtYWtlRXJyb3I8Tm90Rm91bmRFcnJvciB8IE5vdExvZ2dlZEluRXJyb3IgfCBOb3RNZW1iZXJFcnJvcj4ocmVzKTtcbiAgfVxuICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IGF3YWl0IHJlcy50ZXh0KCkgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0Q29kZUJsb2NrIHtcbiAgLyoqIC9hcGkvY29kZS86cHJvamVjdC86dGl0bGUvOmZpbGVuYW1lIOOBruimgeaxguOCkue1hOOBv+eri+OBpuOCi1xuICAgKlxuICAgKiBAcGFyYW0gcHJvamVjdCDlj5blvpfjgZfjgZ/jgYTjg5rjg7zjgrjjga5wcm9qZWN05ZCNXG4gICAqIEBwYXJhbSB0aXRsZSDlj5blvpfjgZfjgZ/jgYTjg5rjg7zjgrjjga50aXRsZSDlpKfmloflrZflsI/mloflrZfjga/llY/jgo/jgarjgYRcbiAgICogQHBhcmFtIGZpbGVuYW1lIOWPluW+l+OBl+OBn+OBhOOCs+ODvOODieODluODreODg+OCr+OBruODleOCoeOCpOODq+WQjVxuICAgKiBAcGFyYW0gb3B0aW9ucyDjgqrjg5fjgrfjg6fjg7NcbiAgICogQHJldHVybiByZXF1ZXN0XG4gICAqL1xuICB0b1JlcXVlc3Q6IChcbiAgICBwcm9qZWN0OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBmaWxlbmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBCYXNlT3B0aW9ucyxcbiAgKSA9PiBSZXF1ZXN0O1xuXG4gIC8qKiDluLDjgaPjgabjgY3jgZ/lv5znrZTjgYvjgonjgrPjg7zjg4njgpLlj5blvpfjgZnjgotcbiAgICpcbiAgICogQHBhcmFtIHJlcyDlv5znrZRcbiAgICogQHJldHVybiDjgrPjg7zjg4lcbiAgICovXG4gIGZyb21SZXNwb25zZTogKHJlczogUmVzcG9uc2UpID0+IFByb21pc2U8XG4gICAgUmVzdWx0PFxuICAgICAgc3RyaW5nLFxuICAgICAgTm90Rm91bmRFcnJvciB8IE5vdExvZ2dlZEluRXJyb3IgfCBOb3RNZW1iZXJFcnJvclxuICAgID5cbiAgPjtcblxuICAoXG4gICAgcHJvamVjdDogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogQmFzZU9wdGlvbnMsXG4gICk6IFByb21pc2U8XG4gICAgUmVzdWx0PFxuICAgICAgc3RyaW5nLFxuICAgICAgTm90Rm91bmRFcnJvciB8IE5vdExvZ2dlZEluRXJyb3IgfCBOb3RNZW1iZXJFcnJvclxuICAgID5cbiAgPjtcbn1cblxuLyoqIOaMh+WumuOBl+OBn+OCs+ODvOODieODluODreODg+OCr+S4reOBruODhuOCreOCueODiOOCkuWPluW+l+OBmeOCi1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0IOWPluW+l+OBl+OBn+OBhOODmuODvOOCuOOBrnByb2plY3TlkI1cbiAqIEBwYXJhbSB0aXRsZSDlj5blvpfjgZfjgZ/jgYTjg5rjg7zjgrjjga50aXRsZSDlpKfmloflrZflsI/mloflrZfjga/llY/jgo/jgarjgYRcbiAqIEBwYXJhbSBmaWxlbmFtZSDlj5blvpfjgZfjgZ/jgYTjgrPjg7zjg4njg5bjg63jg4Pjgq/jga7jg5XjgqHjgqTjg6vlkI1cbiAqIEBwYXJhbSBvcHRpb25zIOOCquODl+OCt+ODp+ODs1xuICovXG5leHBvcnQgY29uc3QgZ2V0Q29kZUJsb2NrOiBHZXRDb2RlQmxvY2sgPSBhc3luYyAoXG4gIHByb2plY3QsXG4gIHRpdGxlLFxuICBmaWxlbmFtZSxcbiAgb3B0aW9ucyxcbikgPT4ge1xuICBjb25zdCB7IGZldGNoIH0gPSBzZXREZWZhdWx0cyhvcHRpb25zID8/IHt9KTtcbiAgY29uc3QgcmVxID0gZ2V0Q29kZUJsb2NrX3RvUmVxdWVzdChwcm9qZWN0LCB0aXRsZSwgZmlsZW5hbWUsIG9wdGlvbnMpO1xuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChyZXEpO1xuICByZXR1cm4gYXdhaXQgZ2V0Q29kZUJsb2NrX2Zyb21SZXNwb25zZShyZXMpO1xufTtcblxuZ2V0Q29kZUJsb2NrLnRvUmVxdWVzdCA9IGdldENvZGVCbG9ja190b1JlcXVlc3Q7XG5nZXRDb2RlQmxvY2suZnJvbVJlc3BvbnNlID0gZ2V0Q29kZUJsb2NrX2Zyb21SZXNwb25zZTtcbiIsICIvLyBDb3B5cmlnaHQgMjAwOSBUaGUgR28gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb2xhbmcvZ28vYmxvYi9tYXN0ZXIvTElDRU5TRVxuLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cblxuLyoqIFBvcnQgb2YgdGhlIEdvXG4gKiBbZW5jb2RpbmcvaGV4XShodHRwczovL2dpdGh1Yi5jb20vZ29sYW5nL2dvL2Jsb2IvZ28xLjEyLjUvc3JjL2VuY29kaW5nL2hleC9oZXguZ28pXG4gKiBsaWJyYXJ5LlxuICpcbiAqIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuY29uc3QgaGV4VGFibGUgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCIwMTIzNDU2Nzg5YWJjZGVmXCIpO1xuXG5mdW5jdGlvbiBlcnJJbnZhbGlkQnl0ZShieXRlOiBudW1iZXIpIHtcbiAgcmV0dXJuIG5ldyBUeXBlRXJyb3IoYEludmFsaWQgYnl0ZSAnJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGUpfSdgKTtcbn1cblxuZnVuY3Rpb24gZXJyTGVuZ3RoKCkge1xuICByZXR1cm4gbmV3IFJhbmdlRXJyb3IoXCJPZGQgbGVuZ3RoIGhleCBzdHJpbmdcIik7XG59XG5cbi8qKiBDb252ZXJ0cyBhIGhleCBjaGFyYWN0ZXIgaW50byBpdHMgdmFsdWUuICovXG5mdW5jdGlvbiBmcm9tSGV4Q2hhcihieXRlOiBudW1iZXIpOiBudW1iZXIge1xuICAvLyAnMCcgPD0gYnl0ZSAmJiBieXRlIDw9ICc5J1xuICBpZiAoNDggPD0gYnl0ZSAmJiBieXRlIDw9IDU3KSByZXR1cm4gYnl0ZSAtIDQ4O1xuICAvLyAnYScgPD0gYnl0ZSAmJiBieXRlIDw9ICdmJ1xuICBpZiAoOTcgPD0gYnl0ZSAmJiBieXRlIDw9IDEwMikgcmV0dXJuIGJ5dGUgLSA5NyArIDEwO1xuICAvLyAnQScgPD0gYnl0ZSAmJiBieXRlIDw9ICdGJ1xuICBpZiAoNjUgPD0gYnl0ZSAmJiBieXRlIDw9IDcwKSByZXR1cm4gYnl0ZSAtIDY1ICsgMTA7XG5cbiAgdGhyb3cgZXJySW52YWxpZEJ5dGUoYnl0ZSk7XG59XG5cbi8qKiBFbmNvZGVzIGBzcmNgIGludG8gYHNyYy5sZW5ndGggKiAyYCBieXRlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGUoc3JjOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XG4gIGNvbnN0IGRzdCA9IG5ldyBVaW50OEFycmF5KHNyYy5sZW5ndGggKiAyKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkc3QubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB2ID0gc3JjW2ldO1xuICAgIGRzdFtpICogMl0gPSBoZXhUYWJsZVt2ID4+IDRdO1xuICAgIGRzdFtpICogMiArIDFdID0gaGV4VGFibGVbdiAmIDB4MGZdO1xuICB9XG4gIHJldHVybiBkc3Q7XG59XG5cbi8qKlxuICogRGVjb2RlcyBgc3JjYCBpbnRvIGBzcmMubGVuZ3RoIC8gMmAgYnl0ZXMuXG4gKiBJZiB0aGUgaW5wdXQgaXMgbWFsZm9ybWVkLCBhbiBlcnJvciB3aWxsIGJlIHRocm93bi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZShzcmM6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcbiAgY29uc3QgZHN0ID0gbmV3IFVpbnQ4QXJyYXkoc3JjLmxlbmd0aCAvIDIpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRzdC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGEgPSBmcm9tSGV4Q2hhcihzcmNbaSAqIDJdKTtcbiAgICBjb25zdCBiID0gZnJvbUhleENoYXIoc3JjW2kgKiAyICsgMV0pO1xuICAgIGRzdFtpXSA9IChhIDw8IDQpIHwgYjtcbiAgfVxuXG4gIGlmIChzcmMubGVuZ3RoICUgMiA9PSAxKSB7XG4gICAgLy8gQ2hlY2sgZm9yIGludmFsaWQgY2hhciBiZWZvcmUgcmVwb3J0aW5nIGJhZCBsZW5ndGgsXG4gICAgLy8gc2luY2UgdGhlIGludmFsaWQgY2hhciAoaWYgcHJlc2VudCkgaXMgYW4gZWFybGllciBwcm9ibGVtLlxuICAgIGZyb21IZXhDaGFyKHNyY1tkc3QubGVuZ3RoICogMl0pO1xuICAgIHRocm93IGVyckxlbmd0aCgpO1xuICB9XG5cbiAgcmV0dXJuIGRzdDtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgKiBhcyBoZXggZnJvbSBcIi4uL2VuY29kaW5nL2hleC50c1wiO1xuXG5jb25zdCBUWVBFX0VSUk9SX01TRyA9IFwibWQ1OiBgZGF0YWAgaXMgaW52YWxpZCB0eXBlXCI7XG5jb25zdCBCTE9DS19TSVpFID0gNjQ7XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2UgPSBzdHJpbmcgfCBBcnJheUJ1ZmZlcjtcblxuLyoqIE1kNSBoYXNoICovXG5leHBvcnQgY2xhc3MgTWQ1IHtcbiAgI2E6IG51bWJlcjtcbiAgI2I6IG51bWJlcjtcbiAgI2M6IG51bWJlcjtcbiAgI2Q6IG51bWJlcjtcbiAgI2Jsb2NrOiBVaW50OEFycmF5O1xuICAjcG9zOiBudW1iZXI7XG4gICNuMDogbnVtYmVyO1xuICAjbjE6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLiNhID0gMHg2NzQ1MjMwMTtcbiAgICB0aGlzLiNiID0gMHhlZmNkYWI4OTtcbiAgICB0aGlzLiNjID0gMHg5OGJhZGNmZTtcbiAgICB0aGlzLiNkID0gMHgxMDMyNTQ3NjtcbiAgICB0aGlzLiNibG9jayA9IG5ldyBVaW50OEFycmF5KEJMT0NLX1NJWkUpO1xuICAgIHRoaXMuI3BvcyA9IDA7XG4gICAgdGhpcy4jbjAgPSAwO1xuICAgIHRoaXMuI24xID0gMDtcbiAgfVxuXG4gICNhZGRMZW5ndGgobGVuOiBudW1iZXIpIHtcbiAgICBsZXQgbjAgPSB0aGlzLiNuMDtcbiAgICBuMCArPSBsZW47XG4gICAgaWYgKG4wID4gMHhmZmZmZmZmZikgdGhpcy4jbjEgKz0gMTtcbiAgICB0aGlzLiNuMCA9IG4wID4+PiAwO1xuICB9XG5cbiAgI2hhc2goYmxvY2s6IFVpbnQ4QXJyYXkpIHtcbiAgICBsZXQgYSA9IHRoaXMuI2E7XG4gICAgbGV0IGIgPSB0aGlzLiNiO1xuICAgIGxldCBjID0gdGhpcy4jYztcbiAgICBsZXQgZCA9IHRoaXMuI2Q7XG5cbiAgICBjb25zdCBibGsgPSAoaTogbnVtYmVyKTogbnVtYmVyID0+XG4gICAgICBibG9ja1tpXSB8XG4gICAgICAoYmxvY2tbaSArIDFdIDw8IDgpIHxcbiAgICAgIChibG9ja1tpICsgMl0gPDwgMTYpIHxcbiAgICAgIChibG9ja1tpICsgM10gPDwgMjQpO1xuXG4gICAgY29uc3Qgcm9sMzIgPSAoeDogbnVtYmVyLCBuOiBudW1iZXIpOiBudW1iZXIgPT4gKHggPDwgbikgfCAoeCA+Pj4gKDMyIC0gbikpO1xuXG4gICAgY29uc3QgeDAgPSBibGsoMCk7XG4gICAgY29uc3QgeDEgPSBibGsoNCk7XG4gICAgY29uc3QgeDIgPSBibGsoOCk7XG4gICAgY29uc3QgeDMgPSBibGsoMTIpO1xuICAgIGNvbnN0IHg0ID0gYmxrKDE2KTtcbiAgICBjb25zdCB4NSA9IGJsaygyMCk7XG4gICAgY29uc3QgeDYgPSBibGsoMjQpO1xuICAgIGNvbnN0IHg3ID0gYmxrKDI4KTtcbiAgICBjb25zdCB4OCA9IGJsaygzMik7XG4gICAgY29uc3QgeDkgPSBibGsoMzYpO1xuICAgIGNvbnN0IHhhID0gYmxrKDQwKTtcbiAgICBjb25zdCB4YiA9IGJsayg0NCk7XG4gICAgY29uc3QgeGMgPSBibGsoNDgpO1xuICAgIGNvbnN0IHhkID0gYmxrKDUyKTtcbiAgICBjb25zdCB4ZSA9IGJsayg1Nik7XG4gICAgY29uc3QgeGYgPSBibGsoNjApO1xuXG4gICAgLy8gcm91bmQgMVxuICAgIGEgPSBiICsgcm9sMzIoKCgoYyBeIGQpICYgYikgXiBkKSArIGEgKyB4MCArIDB4ZDc2YWE0NzgsIDcpO1xuICAgIGQgPSBhICsgcm9sMzIoKCgoYiBeIGMpICYgYSkgXiBjKSArIGQgKyB4MSArIDB4ZThjN2I3NTYsIDEyKTtcbiAgICBjID0gZCArIHJvbDMyKCgoKGEgXiBiKSAmIGQpIF4gYikgKyBjICsgeDIgKyAweDI0MjA3MGRiLCAxNyk7XG4gICAgYiA9IGMgKyByb2wzMigoKChkIF4gYSkgJiBjKSBeIGEpICsgYiArIHgzICsgMHhjMWJkY2VlZSwgMjIpO1xuICAgIGEgPSBiICsgcm9sMzIoKCgoYyBeIGQpICYgYikgXiBkKSArIGEgKyB4NCArIDB4ZjU3YzBmYWYsIDcpO1xuICAgIGQgPSBhICsgcm9sMzIoKCgoYiBeIGMpICYgYSkgXiBjKSArIGQgKyB4NSArIDB4NDc4N2M2MmEsIDEyKTtcbiAgICBjID0gZCArIHJvbDMyKCgoKGEgXiBiKSAmIGQpIF4gYikgKyBjICsgeDYgKyAweGE4MzA0NjEzLCAxNyk7XG4gICAgYiA9IGMgKyByb2wzMigoKChkIF4gYSkgJiBjKSBeIGEpICsgYiArIHg3ICsgMHhmZDQ2OTUwMSwgMjIpO1xuICAgIGEgPSBiICsgcm9sMzIoKCgoYyBeIGQpICYgYikgXiBkKSArIGEgKyB4OCArIDB4Njk4MDk4ZDgsIDcpO1xuICAgIGQgPSBhICsgcm9sMzIoKCgoYiBeIGMpICYgYSkgXiBjKSArIGQgKyB4OSArIDB4OGI0NGY3YWYsIDEyKTtcbiAgICBjID0gZCArIHJvbDMyKCgoKGEgXiBiKSAmIGQpIF4gYikgKyBjICsgeGEgKyAweGZmZmY1YmIxLCAxNyk7XG4gICAgYiA9IGMgKyByb2wzMigoKChkIF4gYSkgJiBjKSBeIGEpICsgYiArIHhiICsgMHg4OTVjZDdiZSwgMjIpO1xuICAgIGEgPSBiICsgcm9sMzIoKCgoYyBeIGQpICYgYikgXiBkKSArIGEgKyB4YyArIDB4NmI5MDExMjIsIDcpO1xuICAgIGQgPSBhICsgcm9sMzIoKCgoYiBeIGMpICYgYSkgXiBjKSArIGQgKyB4ZCArIDB4ZmQ5ODcxOTMsIDEyKTtcbiAgICBjID0gZCArIHJvbDMyKCgoKGEgXiBiKSAmIGQpIF4gYikgKyBjICsgeGUgKyAweGE2Nzk0MzhlLCAxNyk7XG4gICAgYiA9IGMgKyByb2wzMigoKChkIF4gYSkgJiBjKSBeIGEpICsgYiArIHhmICsgMHg0OWI0MDgyMSwgMjIpO1xuXG4gICAgLy8gcm91bmQgMlxuICAgIGEgPSBiICsgcm9sMzIoKCgoYiBeIGMpICYgZCkgXiBjKSArIGEgKyB4MSArIDB4ZjYxZTI1NjIsIDUpO1xuICAgIGQgPSBhICsgcm9sMzIoKCgoYSBeIGIpICYgYykgXiBiKSArIGQgKyB4NiArIDB4YzA0MGIzNDAsIDkpO1xuICAgIGMgPSBkICsgcm9sMzIoKCgoZCBeIGEpICYgYikgXiBhKSArIGMgKyB4YiArIDB4MjY1ZTVhNTEsIDE0KTtcbiAgICBiID0gYyArIHJvbDMyKCgoKGMgXiBkKSAmIGEpIF4gZCkgKyBiICsgeDAgKyAweGU5YjZjN2FhLCAyMCk7XG4gICAgYSA9IGIgKyByb2wzMigoKChiIF4gYykgJiBkKSBeIGMpICsgYSArIHg1ICsgMHhkNjJmMTA1ZCwgNSk7XG4gICAgZCA9IGEgKyByb2wzMigoKChhIF4gYikgJiBjKSBeIGIpICsgZCArIHhhICsgMHgwMjQ0MTQ1MywgOSk7XG4gICAgYyA9IGQgKyByb2wzMigoKChkIF4gYSkgJiBiKSBeIGEpICsgYyArIHhmICsgMHhkOGExZTY4MSwgMTQpO1xuICAgIGIgPSBjICsgcm9sMzIoKCgoYyBeIGQpICYgYSkgXiBkKSArIGIgKyB4NCArIDB4ZTdkM2ZiYzgsIDIwKTtcbiAgICBhID0gYiArIHJvbDMyKCgoKGIgXiBjKSAmIGQpIF4gYykgKyBhICsgeDkgKyAweDIxZTFjZGU2LCA1KTtcbiAgICBkID0gYSArIHJvbDMyKCgoKGEgXiBiKSAmIGMpIF4gYikgKyBkICsgeGUgKyAweGMzMzcwN2Q2LCA5KTtcbiAgICBjID0gZCArIHJvbDMyKCgoKGQgXiBhKSAmIGIpIF4gYSkgKyBjICsgeDMgKyAweGY0ZDUwZDg3LCAxNCk7XG4gICAgYiA9IGMgKyByb2wzMigoKChjIF4gZCkgJiBhKSBeIGQpICsgYiArIHg4ICsgMHg0NTVhMTRlZCwgMjApO1xuICAgIGEgPSBiICsgcm9sMzIoKCgoYiBeIGMpICYgZCkgXiBjKSArIGEgKyB4ZCArIDB4YTllM2U5MDUsIDUpO1xuICAgIGQgPSBhICsgcm9sMzIoKCgoYSBeIGIpICYgYykgXiBiKSArIGQgKyB4MiArIDB4ZmNlZmEzZjgsIDkpO1xuICAgIGMgPSBkICsgcm9sMzIoKCgoZCBeIGEpICYgYikgXiBhKSArIGMgKyB4NyArIDB4Njc2ZjAyZDksIDE0KTtcbiAgICBiID0gYyArIHJvbDMyKCgoKGMgXiBkKSAmIGEpIF4gZCkgKyBiICsgeGMgKyAweDhkMmE0YzhhLCAyMCk7XG5cbiAgICAvLyByb3VuZCAzXG4gICAgYSA9IGIgKyByb2wzMigoYiBeIGMgXiBkKSArIGEgKyB4NSArIDB4ZmZmYTM5NDIsIDQpO1xuICAgIGQgPSBhICsgcm9sMzIoKGEgXiBiIF4gYykgKyBkICsgeDggKyAweDg3NzFmNjgxLCAxMSk7XG4gICAgYyA9IGQgKyByb2wzMigoZCBeIGEgXiBiKSArIGMgKyB4YiArIDB4NmQ5ZDYxMjIsIDE2KTtcbiAgICBiID0gYyArIHJvbDMyKChjIF4gZCBeIGEpICsgYiArIHhlICsgMHhmZGU1MzgwYywgMjMpO1xuICAgIGEgPSBiICsgcm9sMzIoKGIgXiBjIF4gZCkgKyBhICsgeDEgKyAweGE0YmVlYTQ0LCA0KTtcbiAgICBkID0gYSArIHJvbDMyKChhIF4gYiBeIGMpICsgZCArIHg0ICsgMHg0YmRlY2ZhOSwgMTEpO1xuICAgIGMgPSBkICsgcm9sMzIoKGQgXiBhIF4gYikgKyBjICsgeDcgKyAweGY2YmI0YjYwLCAxNik7XG4gICAgYiA9IGMgKyByb2wzMigoYyBeIGQgXiBhKSArIGIgKyB4YSArIDB4YmViZmJjNzAsIDIzKTtcbiAgICBhID0gYiArIHJvbDMyKChiIF4gYyBeIGQpICsgYSArIHhkICsgMHgyODliN2VjNiwgNCk7XG4gICAgZCA9IGEgKyByb2wzMigoYSBeIGIgXiBjKSArIGQgKyB4MCArIDB4ZWFhMTI3ZmEsIDExKTtcbiAgICBjID0gZCArIHJvbDMyKChkIF4gYSBeIGIpICsgYyArIHgzICsgMHhkNGVmMzA4NSwgMTYpO1xuICAgIGIgPSBjICsgcm9sMzIoKGMgXiBkIF4gYSkgKyBiICsgeDYgKyAweDA0ODgxZDA1LCAyMyk7XG4gICAgYSA9IGIgKyByb2wzMigoYiBeIGMgXiBkKSArIGEgKyB4OSArIDB4ZDlkNGQwMzksIDQpO1xuICAgIGQgPSBhICsgcm9sMzIoKGEgXiBiIF4gYykgKyBkICsgeGMgKyAweGU2ZGI5OWU1LCAxMSk7XG4gICAgYyA9IGQgKyByb2wzMigoZCBeIGEgXiBiKSArIGMgKyB4ZiArIDB4MWZhMjdjZjgsIDE2KTtcbiAgICBiID0gYyArIHJvbDMyKChjIF4gZCBeIGEpICsgYiArIHgyICsgMHhjNGFjNTY2NSwgMjMpO1xuXG4gICAgLy8gcm91bmQgNFxuICAgIGEgPSBiICsgcm9sMzIoKGMgXiAoYiB8IH5kKSkgKyBhICsgeDAgKyAweGY0MjkyMjQ0LCA2KTtcbiAgICBkID0gYSArIHJvbDMyKChiIF4gKGEgfCB+YykpICsgZCArIHg3ICsgMHg0MzJhZmY5NywgMTApO1xuICAgIGMgPSBkICsgcm9sMzIoKGEgXiAoZCB8IH5iKSkgKyBjICsgeGUgKyAweGFiOTQyM2E3LCAxNSk7XG4gICAgYiA9IGMgKyByb2wzMigoZCBeIChjIHwgfmEpKSArIGIgKyB4NSArIDB4ZmM5M2EwMzksIDIxKTtcbiAgICBhID0gYiArIHJvbDMyKChjIF4gKGIgfCB+ZCkpICsgYSArIHhjICsgMHg2NTViNTljMywgNik7XG4gICAgZCA9IGEgKyByb2wzMigoYiBeIChhIHwgfmMpKSArIGQgKyB4MyArIDB4OGYwY2NjOTIsIDEwKTtcbiAgICBjID0gZCArIHJvbDMyKChhIF4gKGQgfCB+YikpICsgYyArIHhhICsgMHhmZmVmZjQ3ZCwgMTUpO1xuICAgIGIgPSBjICsgcm9sMzIoKGQgXiAoYyB8IH5hKSkgKyBiICsgeDEgKyAweDg1ODQ1ZGQxLCAyMSk7XG4gICAgYSA9IGIgKyByb2wzMigoYyBeIChiIHwgfmQpKSArIGEgKyB4OCArIDB4NmZhODdlNGYsIDYpO1xuICAgIGQgPSBhICsgcm9sMzIoKGIgXiAoYSB8IH5jKSkgKyBkICsgeGYgKyAweGZlMmNlNmUwLCAxMCk7XG4gICAgYyA9IGQgKyByb2wzMigoYSBeIChkIHwgfmIpKSArIGMgKyB4NiArIDB4YTMwMTQzMTQsIDE1KTtcbiAgICBiID0gYyArIHJvbDMyKChkIF4gKGMgfCB+YSkpICsgYiArIHhkICsgMHg0ZTA4MTFhMSwgMjEpO1xuICAgIGEgPSBiICsgcm9sMzIoKGMgXiAoYiB8IH5kKSkgKyBhICsgeDQgKyAweGY3NTM3ZTgyLCA2KTtcbiAgICBkID0gYSArIHJvbDMyKChiIF4gKGEgfCB+YykpICsgZCArIHhiICsgMHhiZDNhZjIzNSwgMTApO1xuICAgIGMgPSBkICsgcm9sMzIoKGEgXiAoZCB8IH5iKSkgKyBjICsgeDIgKyAweDJhZDdkMmJiLCAxNSk7XG4gICAgYiA9IGMgKyByb2wzMigoZCBeIChjIHwgfmEpKSArIGIgKyB4OSArIDB4ZWI4NmQzOTEsIDIxKTtcblxuICAgIHRoaXMuI2EgPSAodGhpcy4jYSArIGEpID4+PiAwO1xuICAgIHRoaXMuI2IgPSAodGhpcy4jYiArIGIpID4+PiAwO1xuICAgIHRoaXMuI2MgPSAodGhpcy4jYyArIGMpID4+PiAwO1xuICAgIHRoaXMuI2QgPSAodGhpcy4jZCArIGQpID4+PiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBpbnRlcm5hbCBzdGF0ZVxuICAgKiBAcGFyYW0gZGF0YSBkYXRhIHRvIHVwZGF0ZSwgZGF0YSBjYW5ub3QgZXhjZWVkIDJeMzIgYnl0ZXNcbiAgICovXG4gIHVwZGF0ZShkYXRhOiBNZXNzYWdlKTogdGhpcyB7XG4gICAgbGV0IG1zZzogVWludDhBcnJheTtcblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbXNnID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGRhdGEgYXMgc3RyaW5nKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRhID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyIHx8IEFycmF5QnVmZmVyLmlzVmlldyhkYXRhKSkge1xuICAgICAgICBtc2cgPSBuZXcgVWludDhBcnJheShkYXRhKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoVFlQRV9FUlJPUl9NU0cpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFRZUEVfRVJST1JfTVNHKTtcbiAgICB9XG5cbiAgICBsZXQgcG9zID0gdGhpcy4jcG9zO1xuICAgIGNvbnN0IGZyZWUgPSBCTE9DS19TSVpFIC0gcG9zO1xuXG4gICAgaWYgKG1zZy5sZW5ndGggPCBmcmVlKSB7XG4gICAgICB0aGlzLiNibG9jay5zZXQobXNnLCBwb3MpO1xuICAgICAgcG9zICs9IG1zZy5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGhhc2ggZmlyc3QgYmxvY2tcbiAgICAgIHRoaXMuI2Jsb2NrLnNldChtc2cuc2xpY2UoMCwgZnJlZSksIHBvcyk7XG4gICAgICB0aGlzLiNoYXNoKHRoaXMuI2Jsb2NrKTtcblxuICAgICAgLy8gaGFzaCBhcyBtYW55IGJsb2NrcyBhcyBwb3NzaWJsZVxuICAgICAgbGV0IGkgPSBmcmVlO1xuICAgICAgd2hpbGUgKGkgKyBCTE9DS19TSVpFIDw9IG1zZy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy4jaGFzaChtc2cuc2xpY2UoaSwgaSArIEJMT0NLX1NJWkUpKTtcbiAgICAgICAgaSArPSBCTE9DS19TSVpFO1xuICAgICAgfVxuXG4gICAgICAvLyBzdG9yZSBsZWZ0b3ZlclxuICAgICAgdGhpcy4jYmxvY2suZmlsbCgwKS5zZXQobXNnLnNsaWNlKGkpLCAwKTtcbiAgICAgIHBvcyA9IG1zZy5sZW5ndGggLSBpO1xuICAgIH1cblxuICAgIHRoaXMuI3BvcyA9IHBvcztcbiAgICB0aGlzLiNhZGRMZW5ndGgobXNnLmxlbmd0aCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGZpbmFsIGhhc2ggKi9cbiAgZGlnZXN0KCk6IEFycmF5QnVmZmVyIHtcbiAgICBsZXQgcGFkTGVuID0gQkxPQ0tfU0laRSAtIHRoaXMuI3BvcztcbiAgICBpZiAocGFkTGVuIDwgOSkgcGFkTGVuICs9IEJMT0NLX1NJWkU7XG5cbiAgICBjb25zdCBwYWQgPSBuZXcgVWludDhBcnJheShwYWRMZW4pO1xuXG4gICAgcGFkWzBdID0gMHg4MDtcblxuICAgIGNvbnN0IG4wID0gdGhpcy4jbjAgPDwgMztcbiAgICBjb25zdCBuMSA9ICh0aGlzLiNuMSA8PCAzKSB8ICh0aGlzLiNuMCA+Pj4gMjkpO1xuICAgIHBhZFtwYWQubGVuZ3RoIC0gOF0gPSBuMCAmIDB4ZmY7XG4gICAgcGFkW3BhZC5sZW5ndGggLSA3XSA9IChuMCA+Pj4gOCkgJiAweGZmO1xuICAgIHBhZFtwYWQubGVuZ3RoIC0gNl0gPSAobjAgPj4+IDE2KSAmIDB4ZmY7XG4gICAgcGFkW3BhZC5sZW5ndGggLSA1XSA9IChuMCA+Pj4gMjQpICYgMHhmZjtcbiAgICBwYWRbcGFkLmxlbmd0aCAtIDRdID0gbjEgJiAweGZmO1xuICAgIHBhZFtwYWQubGVuZ3RoIC0gM10gPSAobjEgPj4+IDgpICYgMHhmZjtcbiAgICBwYWRbcGFkLmxlbmd0aCAtIDJdID0gKG4xID4+PiAxNikgJiAweGZmO1xuICAgIHBhZFtwYWQubGVuZ3RoIC0gMV0gPSAobjEgPj4+IDI0KSAmIDB4ZmY7XG5cbiAgICB0aGlzLnVwZGF0ZShwYWQuYnVmZmVyKTtcblxuICAgIGNvbnN0IGhhc2ggPSBuZXcgQXJyYXlCdWZmZXIoMTYpO1xuICAgIGNvbnN0IGhhc2hWaWV3ID0gbmV3IERhdGFWaWV3KGhhc2gpO1xuICAgIGhhc2hWaWV3LnNldFVpbnQzMigwLCB0aGlzLiNhLCB0cnVlKTtcbiAgICBoYXNoVmlldy5zZXRVaW50MzIoNCwgdGhpcy4jYiwgdHJ1ZSk7XG4gICAgaGFzaFZpZXcuc2V0VWludDMyKDgsIHRoaXMuI2MsIHRydWUpO1xuICAgIGhhc2hWaWV3LnNldFVpbnQzMigxMiwgdGhpcy4jZCwgdHJ1ZSk7XG5cbiAgICByZXR1cm4gaGFzaDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGhhc2ggYXMgYSBzdHJpbmcgb2YgZ2l2ZW4gZm9ybWF0XG4gICAqIEBwYXJhbSBmb3JtYXQgZm9ybWF0IG9mIG91dHB1dCBzdHJpbmcgKGhleCBvciBiYXNlNjQpLiBEZWZhdWx0IGlzIGhleFxuICAgKi9cbiAgdG9TdHJpbmcoZm9ybWF0OiBcImhleFwiIHwgXCJiYXNlNjRcIiA9IFwiaGV4XCIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGhhc2ggPSB0aGlzLmRpZ2VzdCgpO1xuXG4gICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgIGNhc2UgXCJoZXhcIjpcbiAgICAgICAgcmV0dXJuIG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShoZXguZW5jb2RlKG5ldyBVaW50OEFycmF5KGhhc2gpKSk7XG4gICAgICBjYXNlIFwiYmFzZTY0XCI6IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBVaW50OEFycmF5KGhhc2gpO1xuICAgICAgICBsZXQgZGF0YVN0cmluZyA9IFwiXCI7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIGRhdGFTdHJpbmcgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShkYXRhW2ldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnRvYShkYXRhU3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm1kNTogaW52YWxpZCBmb3JtYXRcIik7XG4gICAgfVxuICB9XG59XG4iLCAiaW1wb3J0IHsgY29va2llLCBnZXRDU1JGVG9rZW4gfSBmcm9tIFwiLi9hdXRoLnRzXCI7XG5pbXBvcnQgeyBCYXNlT3B0aW9ucywgRXh0ZW5kZWRPcHRpb25zLCBSZXN1bHQsIHNldERlZmF1bHRzIH0gZnJvbSBcIi4vdXRpbC50c1wiO1xuaW1wb3J0IHsgbWFrZUVycm9yLCBVbmV4cGVjdGVkUmVzcG9uc2VFcnJvciB9IGZyb20gXCIuL2Vycm9yLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEVycm9yTGlrZSwgTm90Rm91bmRFcnJvciB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IE1kNSB9IGZyb20gXCIuLi9kZXBzL2hhc2gudHNcIjtcblxuLyoqIHVwbG9hZOOBl+OBn+ODleOCoeOCpOODq+OBruODoeOCv+ODh+ODvOOCvyAqL1xuZXhwb3J0IGludGVyZmFjZSBHQ1NGaWxlIHtcbiAgLyoqIHVwbG9hZOOBl+OBn+ODleOCoeOCpOODq+OBrlVSTCAqL1xuICBlbWJlZFVybDogc3RyaW5nO1xuXG4gIC8qKiB1cGxvYWTjgZfjgZ/jg5XjgqHjgqTjg6vjga7lkI3liY0gKi9cbiAgb3JpZ2luYWxOYW1lOiBzdHJpbmc7XG59XG5cbi8qKiDku7vmhI/jga7jg5XjgqHjgqTjg6vjgpJzY3JhcGJveC5pb+OBq3VwbG9hZOOBmeOCi1xuICpcbiAqIEBwYXJhbSBmaWxlIHVwbG9hZOOBl+OBn+OBhOODleOCoeOCpOODq1xuICogQHBhcmFtIHByb2plY3RJZCB1cGxvYWTlhYhwcm9qZWN044GuaWRcbiAqIEByZXR1cm4g5oiQ5Yqf44GX44Gf44KJ44CB44OV44Kh44Kk44Or44Gu44Kv44Op44Km44OJ5LiK44GuVVJM44Gq44Gp44GM6L+U44Gj44Gm44GP44KLXG4gKi9cbmV4cG9ydCBjb25zdCB1cGxvYWRUb0dDUyA9IGFzeW5jIChcbiAgZmlsZTogRmlsZSxcbiAgcHJvamVjdElkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBFeHRlbmRlZE9wdGlvbnMsXG4pOiBQcm9taXNlPFxuICBSZXN1bHQ8R0NTRmlsZSwgR0NTRXJyb3IgfCBOb3RGb3VuZEVycm9yIHwgRmlsZUNhcGFjaXR5RXJyb3IgfCBFcnJvckxpa2U+XG4+ID0+IHtcbiAgY29uc3QgbWQ1ID0gbmV3IE1kNSgpLnVwZGF0ZShhd2FpdCBmaWxlLmFycmF5QnVmZmVyKCkpLnRvU3RyaW5nKCk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IHVwbG9hZFJlcXVlc3QoZmlsZSwgcHJvamVjdElkLCBtZDUsIG9wdGlvbnMpO1xuICBpZiAoIXJlcy5vaykgcmV0dXJuIHJlcztcbiAgaWYgKFwiZW1iZWRVcmxcIiBpbiByZXMudmFsdWUpIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogcmVzLnZhbHVlIH07XG4gIGNvbnN0IHJlczIgPSBhd2FpdCB1cGxvYWQocmVzLnZhbHVlLnNpZ25lZFVybCwgZmlsZSwgb3B0aW9ucyk7XG4gIGlmICghcmVzMi5vaykgcmV0dXJuIHJlczI7XG4gIHJldHVybiB2ZXJpZnkocHJvamVjdElkLCByZXMudmFsdWUuZmlsZUlkLCBtZDUsIG9wdGlvbnMpO1xufTtcblxuLyoqIOWuuemHj+OCkuS9v+OBhOWIh+OBo+OBn+OBqOOBjeOBq+eZuueUn+OBmeOCi2Vycm9yICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVDYXBhY2l0eUVycm9yIGV4dGVuZHMgRXJyb3JMaWtlIHtcbiAgbmFtZTogXCJGaWxlQ2FwYWNpdHlFcnJvclwiO1xufVxuXG5pbnRlcmZhY2UgVXBsb2FkUmVxdWVzdCB7XG4gIC8qKiB1cGxvYWTlhYhVUkwgKi9cbiAgc2lnbmVkVXJsOiBzdHJpbmc7XG5cbiAgLyoqIHVwbG9hZOOBl+OBn+ODleOCoeOCpOODq+OBq+e0kOS7mOOBkeOCieOCjOOCi+S6iOWumuOBrmZpbGUgaWQgKi9cbiAgZmlsZUlkOiBzdHJpbmc7XG59XG5cbi8qKiDjg5XjgqHjgqTjg6vjga51cGxvYWTjgpLopoHmsYLjgZnjgotcbiAqXG4gKiBAcGFyYW0gZmlsZSB1cGxvYWTjgZfjgZ/jgYTjg5XjgqHjgqTjg6tcbiAqIEBwYXJhbSBwcm9qZWN0SWQgdXBsb2Fk5YWIcHJvamVjdOOBrmlkXG4gKiBAcGFyYW0gbWQ1IHVwbG9hZOOBl+OBn+OBhOODleOCoeOCpOODq+OBrk1ENSBoYXNoICgxNumAsuaVsClcbiAqIEByZXR1cm4g44GZ44Gn44GrdXBsb2Fk44GV44KM44Gm44GE44KM44Gw44OV44Kh44Kk44Or44GuVVJM44KS44CB44G+44Gg44Gu5aC05ZCI44GvdXBsb2Fk5YWIVVJM44KS6L+U44GZXG4gKi9cbmNvbnN0IHVwbG9hZFJlcXVlc3QgPSBhc3luYyAoXG4gIGZpbGU6IEZpbGUsXG4gIHByb2plY3RJZDogc3RyaW5nLFxuICBtZDU6IHN0cmluZyxcbiAgaW5pdD86IEV4dGVuZGVkT3B0aW9ucyxcbik6IFByb21pc2U8UmVzdWx0PEdDU0ZpbGUgfCBVcGxvYWRSZXF1ZXN0LCBGaWxlQ2FwYWNpdHlFcnJvciB8IEVycm9yTGlrZT4+ID0+IHtcbiAgY29uc3QgeyBzaWQsIGhvc3ROYW1lLCBmZXRjaCwgY3NyZiB9ID0gc2V0RGVmYXVsdHMoaW5pdCA/PyB7fSk7XG4gIGNvbnN0IGJvZHkgPSB7XG4gICAgbWQ1LFxuICAgIHNpemU6IGZpbGUuc2l6ZSxcbiAgICBjb250ZW50VHlwZTogZmlsZS50eXBlLFxuICAgIG5hbWU6IGZpbGUubmFtZSxcbiAgfTtcbiAgY29uc3QgdG9rZW4gPSBjc3JmID8/IGF3YWl0IGdldENTUkZUb2tlbigpO1xuICBjb25zdCByZXEgPSBuZXcgUmVxdWVzdChcbiAgICBgaHR0cHM6Ly8ke2hvc3ROYW1lfS9hcGkvZ2NzLyR7cHJvamVjdElkfS91cGxvYWQtcmVxdWVzdGAsXG4gICAge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtOFwiLFxuICAgICAgICBcIlgtQ1NSRi1UT0tFTlwiOiB0b2tlbixcbiAgICAgICAgLi4uKHNpZCA/IHsgQ29va2llOiBjb29raWUoc2lkKSB9IDoge30pLFxuICAgICAgfSxcbiAgICB9LFxuICApO1xuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChyZXEpO1xuICBpZiAoIXJlcy5vaykge1xuICAgIHJldHVybiBtYWtlRXJyb3IocmVzKTtcbiAgfVxuICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IGF3YWl0IHJlcy5qc29uKCkgfTtcbn07XG5cbi8qKiBHb29nbGUgQ2xvdWQgU3RvcmFnZSBYTUwgQVBJ44GuZXJyb3JcbiAqXG4gKiBgbWVzc2FnZWDjgavjga9b44GT44Gu5b2i5byPXShodHRwczovL2Nsb3VkLmdvb2dsZS5jb20vc3RvcmFnZS9kb2NzL3htbC1hcGkvcmVmZXJlbmNlLXN0YXR1cyNodHRwLXN0YXR1cy1hbmQtZXJyb3ItY29kZXMp44GuWE1M44GM5YWl44KLXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR0NTRXJyb3IgZXh0ZW5kcyBFcnJvckxpa2Uge1xuICBuYW1lOiBcIkdDU0Vycm9yXCI7XG59XG5cbi8qKiDjg5XjgqHjgqTjg6vjgpJ1cGxvYWTjgZnjgosgKi9cbmNvbnN0IHVwbG9hZCA9IGFzeW5jIChcbiAgc2lnbmVkVXJsOiBzdHJpbmcsXG4gIGZpbGU6IEZpbGUsXG4gIGluaXQ/OiBCYXNlT3B0aW9ucyxcbik6IFByb21pc2U8UmVzdWx0PHVuZGVmaW5lZCwgR0NTRXJyb3I+PiA9PiB7XG4gIGNvbnN0IHsgc2lkLCBmZXRjaCB9ID0gc2V0RGVmYXVsdHMoaW5pdCA/PyB7fSk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKFxuICAgIHNpZ25lZFVybCxcbiAgICB7XG4gICAgICBtZXRob2Q6IFwiUFVUXCIsXG4gICAgICBib2R5OiBmaWxlLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBmaWxlLnR5cGUsXG4gICAgICAgIC4uLihzaWQgPyB7IENvb2tpZTogY29va2llKHNpZCkgfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgfSxcbiAgKTtcbiAgaWYgKCFyZXMub2spIHtcbiAgICBpZiAocmVzLmhlYWRlcnMuZ2V0KFwiQ29udGVudC1UeXBlXCIpPy5pbmNsdWRlcz8uKFwiL3htbFwiKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIG5hbWU6IFwiR0NTRXJyb3JcIixcbiAgICAgICAgICBtZXNzYWdlOiBhd2FpdCByZXMudGV4dCgpLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRSZXNwb25zZUVycm9yKHJlcyk7XG4gIH1cbiAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiB1bmRlZmluZWQgfTtcbn07XG5cbi8qKiB1cGxvYWTjgZfjgZ/jg5XjgqHjgqTjg6vjga7mlbTlkIjmgKfjgpLnorroqo3jgZnjgosgKi9cbmNvbnN0IHZlcmlmeSA9IGFzeW5jIChcbiAgcHJvamVjdElkOiBzdHJpbmcsXG4gIGZpbGVJZDogc3RyaW5nLFxuICBtZDU6IHN0cmluZyxcbiAgaW5pdD86IEV4dGVuZGVkT3B0aW9ucyxcbik6IFByb21pc2U8UmVzdWx0PEdDU0ZpbGUsIE5vdEZvdW5kRXJyb3I+PiA9PiB7XG4gIGNvbnN0IHsgc2lkLCBob3N0TmFtZSwgZmV0Y2gsIGNzcmYgfSA9IHNldERlZmF1bHRzKGluaXQgPz8ge30pO1xuICBjb25zdCB0b2tlbiA9IGNzcmYgPz8gYXdhaXQgZ2V0Q1NSRlRva2VuKCk7XG4gIGNvbnN0IHJlcSA9IG5ldyBSZXF1ZXN0KFxuICAgIGBodHRwczovLyR7aG9zdE5hbWV9L2FwaS9nY3MvJHtwcm9qZWN0SWR9L3ZlcmlmeWAsXG4gICAge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgbWQ1LCBmaWxlSWQgfSksXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04XCIsXG4gICAgICAgIFwiWC1DU1JGLVRPS0VOXCI6IHRva2VuLFxuICAgICAgICAuLi4oc2lkID8geyBDb29raWU6IGNvb2tpZShzaWQpIH0gOiB7fSksXG4gICAgICB9LFxuICAgIH0sXG4gICk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHJlcSk7XG4gIGlmICghcmVzLm9rKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChyZXMuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvazogZmFsc2UsXG4gICAgICAgICAgdmFsdWU6IHsgbmFtZTogXCJOb3RGb3VuZEVycm9yXCIsIG1lc3NhZ2U6IChhd2FpdCByZXMuanNvbigpKS5tZXNzYWdlIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRSZXNwb25zZUVycm9yKHJlcyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkUmVzcG9uc2VFcnJvcihyZXMpO1xuICB9XG4gIGNvbnN0IGdjcyA9IGF3YWl0IHJlcy5qc29uKCk7XG4gIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogZ2NzIH07XG59O1xuIiwgImltcG9ydCB7IHBhdGNoIH0gZnJvbSBcIi4uL3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkL3dlYnNvY2tldC50c1wiO1xuaW1wb3J0IHsgZ2V0Q29kZUJsb2NrIH0gZnJvbSBcIi4uL3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkL3Jlc3QudHNcIjtcblxuLyoqIOWQjOacn+ioreWumiAqL1xuZXhwb3J0IGludGVyZmFjZSBTeW5jSW5pdCB7XG4gIC8qKiBwcm9qZWN0TGFzdEFjY2Vzc2Vk44KS5pu444GN5Ye644GZ44Oa44O844K444GucHJvamVjdCBuYW1lICovXG4gIHByb2plY3Q6IHN0cmluZztcbiAgLyoqIHByb2plY3RMYXN0QWNjZXNzZWTjgpLmm7jjgY3lh7rjgZnjg5rjg7zjgrjjga5wYWdlIHRpdGxlXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiLndhdGNobGlzdHJjXCJcbiAgICovXG4gIHRpdGxlPzogc3RyaW5nO1xufVxuXG4vKiogd2F0Y2hMaXN044KS5YWo44Gm44Gu44OH44OQ44Kk44K544Gn5ZCM5pyf44GZ44KLXG4gKlxuICogQHBhcmFtIGluaXQgd2F0Y2hMaXN044Gu5L+d5a2Y5YWI44Oa44O844K444KS5rG644KB44KLXG4gKi9cbmV4cG9ydCBjb25zdCBzeW5jID0gYXN5bmMgKGluaXQ6IFN5bmNJbml0KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHRpdGxlID0gaW5pdC50aXRsZSA/PyBcIi53YXRjaGxpc3RyY1wiO1xuICBjb25zdCBmaWxlbmFtZSA9IFwicHJvamVjdHNMYXN0QWNjZXNzZWQuanNvblwiO1xuICBcbiAgLy8gc2NyYXBib3guaW/jgavkv53lrZjjgZfjgZ93YXRjaExpc3TjgpLlj5blvpfjgZnjgotcbiAgY29uc3QgcmVzID0gYXdhaXQgZ2V0Q29kZUJsb2NrKGluaXQucHJvamVjdCwgdGl0bGUsIGZpbGVuYW1lKTtcbiAgY29uc3QganNvbiA9ICFyZXMub2sgPyB7fSA6IEpTT04ucGFyc2UocmVzLnZhbHVlIHx8IFwie31cIik7XG4gIFxuICAvKiog56uv5pyr44Gr5L+d5a2Y44GV44KM44Gfd2F0Y2hMaXN0ICovXG4gIGNvbnN0IHByZXYgPSBKU09OLnBhcnNlKFxuICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicHJvamVjdHNMYXN0QWNjZXNzZWRcIikgPz8gXCJ7fVwiXG4gICk7XG4gIFxuICAvLyBwcm9qZWN044GK44KI44Gz44Gd44Gu44Ki44Kv44K744K55pel5pmC44KS5pu05paw44GZ44KLXG4gIGNvbnN0IGtleXMgPSBuZXcgU2V0KFsuLi5PYmplY3Qua2V5cyhqc29uKSwgLi4uT2JqZWN0LmtleXMocHJldildKTtcbiAgLy8g5LiA55Wq5paw44GX44GE44Ki44Kv44K744K55pel5pmC44KS5o6h55So44GZ44KLXG4gIGNvbnN0IG5ld0RhdGEgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgWy4uLmtleXNdXG4gICAgICAubWFwKChrZXkpID0+IFtrZXksIE1hdGgubWF4KGpzb25ba2V5XSA/PyAwLCBwcmV2W2tleV0gPz8gMCldIGFzIGNvbnN0KVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGJbMV0gLSBhWzFdKVxuICApO1xuICBcbiAgLy8g56uv5pyr44Goc2NyYXBib3guaW/jgavmlrDjgZfjgYR3YXRjaExpc3Tjg4fjg7zjgr/jgpLkv53lrZjjgZnjgotcbiAgY29uc3QgbmV3VGV4dCA9IEpTT04uc3RyaW5naWZ5KG5ld0RhdGEpO1xuICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInByb2plY3RzTGFzdEFjY2Vzc2VkXCIsIG5ld1RleHQpO1xuICBhd2FpdCBwYXRjaChpbml0LnByb2plY3QsIHRpdGxlLCAoKSA9PiBbXG4gICAgdGl0bGUsXG4gICAgXCJUaGlzIHBhZ2UgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuIERPIE5PVCBFRElUIEFOWVRISU5HLCBXSElUQ0ggV0lMTCBCRSBPVkVSV1JJVFRFTi5cIixcbiAgICBcIlwiLFxuICAgIGBjb2RlOiR7ZmlsZW5hbWV9YCxcbiAgICBgICR7bmV3VGV4dH1gLFxuICAgIFwiXCIsXG4gIF0pO1xufTtcbiIsICJzY3JhcGJveC5QYWdlTWVudS5hZGRNZW51KHtcbiAgdGl0bGU6ICdHeWF6bycsIFxuICBpbWFnZTogJ2h0dHBzOi8vaS5neWF6by5jb20vNTAzYTkxMWZlYTU0MjUzMmFhNWFiYTBhODhlYjdiNjAucG5nJyxcbiAgb25DbGljazogKCk9PiB3aW5kb3cub3BlbignaHR0cHM6Ly9neWF6by5jb20vY2FwdHVyZXMnKSxcbn0pOyIsICIvKiogTm9ybWFsIGh5ZHJhdGlvbiB0aGF0IGF0dGFjaGVzIHRvIGEgRE9NIHRyZWUgYnV0IGRvZXMgbm90IGRpZmYgaXQuICovXG5leHBvcnQgY29uc3QgTU9ERV9IWURSQVRFID0gMSBcdTAwM2NcdTAwM2MgNTtcbi8qKiBTaWduaWZpZXMgdGhpcyBWTm9kZSBzdXNwZW5kZWQgb24gdGhlIHByZXZpb3VzIHJlbmRlciAqL1xuZXhwb3J0IGNvbnN0IE1PREVfU1VTUEVOREVEID0gMSBcdTAwM2NcdTAwM2MgNztcbi8qKiBJbmRpY2F0ZXMgdGhhdCB0aGlzIG5vZGUgbmVlZHMgdG8gYmUgaW5zZXJ0ZWQgd2hpbGUgcGF0Y2hpbmcgY2hpbGRyZW4gKi9cbmV4cG9ydCBjb25zdCBJTlNFUlRfVk5PREUgPSAxIFx1MDAzY1x1MDAzYyAxNjtcbi8qKiBJbmRpY2F0ZXMgYSBWTm9kZSBoYXMgYmVlbiBtYXRjaGVkIHdpdGggYW5vdGhlciBWTm9kZSBpbiB0aGUgZGlmZiAqL1xuZXhwb3J0IGNvbnN0IE1BVENIRUQgPSAxIFx1MDAzY1x1MDAzYyAxNztcblxuLyoqIFJlc2V0IGFsbCBtb2RlIGZsYWdzICovXG5leHBvcnQgY29uc3QgUkVTRVRfTU9ERSA9IH4oTU9ERV9IWURSQVRFIHwgTU9ERV9TVVNQRU5ERUQpO1xuXG5leHBvcnQgY29uc3QgRU1QVFlfT0JKID0gLyoqIEB0eXBlIHthbnl9ICovICh7fSk7XG5leHBvcnQgY29uc3QgRU1QVFlfQVJSID0gW107XG5leHBvcnQgY29uc3QgSVNfTk9OX0RJTUVOU0lPTkFMID1cblx0L2FjaXR8ZXgoPzpzfGd8bnxwfCQpfHJwaHxncmlkfG93c3xtbmN8bnR3fGluZVtjaF18em9vfF5vcmR8aXRlcmEvaTtcbiIsICJpbXBvcnQgeyBFTVBUWV9BUlIgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuLyoqXG4gKiBBc3NpZ24gcHJvcGVydGllcyBmcm9tIGBwcm9wc2AgdG8gYG9iamBcbiAqIEB0ZW1wbGF0ZSBPLCBQIFRoZSBvYmogYW5kIHByb3BzIHR5cGVzXG4gKiBAcGFyYW0ge099IG9iaiBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0b1xuICogQHBhcmFtIHtQfSBwcm9wcyBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gKiBAcmV0dXJucyB7TyBcdTAwMjYgUH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbihvYmosIHByb3BzKSB7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgV2UgY2hhbmdlIHRoZSB0eXBlIG9mIGBvYmpgIHRvIGJlIGBPIFx1MDAyNiBQYFxuXHRmb3IgKGxldCBpIGluIHByb3BzKSBvYmpbaV0gPSBwcm9wc1tpXTtcblx0cmV0dXJuIC8qKiBAdHlwZSB7TyBcdTAwMjYgUH0gKi8gKG9iaik7XG59XG5cbi8qKlxuICogUmVtb3ZlIGEgY2hpbGQgbm9kZSBmcm9tIGl0cyBwYXJlbnQgaWYgYXR0YWNoZWQuIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvclxuICogSUUxMSB3aGljaCBkb2Vzbid0IHN1cHBvcnQgYEVsZW1lbnQucHJvdG90eXBlLnJlbW92ZSgpYC4gVXNpbmcgdGhpcyBmdW5jdGlvblxuICogaXMgc21hbGxlciB0aGFuIGluY2x1ZGluZyBhIGRlZGljYXRlZCBwb2x5ZmlsbC5cbiAqIEBwYXJhbSB7cHJlYWN0LkNvbnRhaW5lck5vZGV9IG5vZGUgVGhlIG5vZGUgdG8gcmVtb3ZlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVOb2RlKG5vZGUpIHtcblx0bGV0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG5cdGlmIChwYXJlbnROb2RlKSBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKG5vZGUpO1xufVxuXG5leHBvcnQgY29uc3Qgc2xpY2UgPSBFTVBUWV9BUlIuc2xpY2U7XG4iLCAiaW1wb3J0IHsgX2NhdGNoRXJyb3IgfSBmcm9tICcuL2RpZmYvY2F0Y2gtZXJyb3InO1xuXG4vKipcbiAqIFRoZSBgb3B0aW9uYCBvYmplY3QgY2FuIHBvdGVudGlhbGx5IGNvbnRhaW4gY2FsbGJhY2sgZnVuY3Rpb25zXG4gKiB0aGF0IGFyZSBjYWxsZWQgZHVyaW5nIHZhcmlvdXMgc3RhZ2VzIG9mIG91ciByZW5kZXJlci4gVGhpcyBpcyB0aGVcbiAqIGZvdW5kYXRpb24gb24gd2hpY2ggYWxsIG91ciBhZGRvbnMgbGlrZSBgcHJlYWN0L2RlYnVnYCwgYHByZWFjdC9jb21wYXRgLFxuICogYW5kIGBwcmVhY3QvaG9va3NgIGFyZSBiYXNlZCBvbi4gU2VlIHRoZSBgT3B0aW9uc2AgdHlwZSBpbiBgaW50ZXJuYWwuZC50c2BcbiAqIGZvciBhIGZ1bGwgbGlzdCBvZiBhdmFpbGFibGUgb3B0aW9uIGhvb2tzIChtb3N0IGVkaXRvcnMvSURFcyBhbGxvdyB5b3UgdG9cbiAqIGN0cmwrY2xpY2sgb3IgY21kK2NsaWNrIG9uIG1hYyB0aGUgdHlwZSBkZWZpbml0aW9uIGJlbG93KS5cbiAqIEB0eXBlIHtPcHRpb25zfVxuICovXG5jb25zdCBvcHRpb25zID0ge1xuXHRfY2F0Y2hFcnJvclxufTtcblxuZXhwb3J0IGRlZmF1bHQgb3B0aW9ucztcbiIsICJpbXBvcnQgeyBzbGljZSB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgb3B0aW9ucyBmcm9tICcuL29wdGlvbnMnO1xuXG5sZXQgdm5vZGVJZCA9IDA7XG5cbi8qKlxuICogQ3JlYXRlIGFuIHZpcnR1YWwgbm9kZSAodXNlZCBmb3IgSlNYKVxuICogQHBhcmFtIHtWTm9kZVtcInR5cGVcIl19IHR5cGUgVGhlIG5vZGUgbmFtZSBvciBDb21wb25lbnQgY29uc3RydWN0b3IgZm9yIHRoaXNcbiAqIHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtvYmplY3QgfCBudWxsIHwgdW5kZWZpbmVkfSBbcHJvcHNdIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7QXJyYXlcdTAwM2NpbXBvcnQoJy4nKS5Db21wb25lbnRDaGlsZHJlblx1MDAzZX0gW2NoaWxkcmVuXSBUaGUgY2hpbGRyZW4gb2YgdGhlXG4gKiB2aXJ0dWFsIG5vZGVcbiAqIEByZXR1cm5zIHtWTm9kZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodHlwZSwgcHJvcHMsIGNoaWxkcmVuKSB7XG5cdGxldCBub3JtYWxpemVkUHJvcHMgPSB7fSxcblx0XHRrZXksXG5cdFx0cmVmLFxuXHRcdGk7XG5cdGZvciAoaSBpbiBwcm9wcykge1xuXHRcdGlmIChpID09ICdrZXknKSBrZXkgPSBwcm9wc1tpXTtcblx0XHRlbHNlIGlmIChpID09ICdyZWYnKSByZWYgPSBwcm9wc1tpXTtcblx0XHRlbHNlIG5vcm1hbGl6ZWRQcm9wc1tpXSA9IHByb3BzW2ldO1xuXHR9XG5cblx0aWYgKGFyZ3VtZW50cy5sZW5ndGggXHUwMDNlIDIpIHtcblx0XHRub3JtYWxpemVkUHJvcHMuY2hpbGRyZW4gPVxuXHRcdFx0YXJndW1lbnRzLmxlbmd0aCBcdTAwM2UgMyA/IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKSA6IGNoaWxkcmVuO1xuXHR9XG5cblx0Ly8gSWYgYSBDb21wb25lbnQgVk5vZGUsIGNoZWNrIGZvciBhbmQgYXBwbHkgZGVmYXVsdFByb3BzXG5cdC8vIE5vdGU6IHR5cGUgbWF5IGJlIHVuZGVmaW5lZCBpbiBkZXZlbG9wbWVudCwgbXVzdCBuZXZlciBlcnJvciBoZXJlLlxuXHRpZiAodHlwZW9mIHR5cGUgPT0gJ2Z1bmN0aW9uJyBcdTAwMjZcdTAwMjYgdHlwZS5kZWZhdWx0UHJvcHMgIT0gbnVsbCkge1xuXHRcdGZvciAoaSBpbiB0eXBlLmRlZmF1bHRQcm9wcykge1xuXHRcdFx0aWYgKG5vcm1hbGl6ZWRQcm9wc1tpXSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdG5vcm1hbGl6ZWRQcm9wc1tpXSA9IHR5cGUuZGVmYXVsdFByb3BzW2ldO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjcmVhdGVWTm9kZSh0eXBlLCBub3JtYWxpemVkUHJvcHMsIGtleSwgcmVmLCBudWxsKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBWTm9kZSAodXNlZCBpbnRlcm5hbGx5IGJ5IFByZWFjdClcbiAqIEBwYXJhbSB7Vk5vZGVbXCJ0eXBlXCJdfSB0eXBlIFRoZSBub2RlIG5hbWUgb3IgQ29tcG9uZW50XG4gKiBDb25zdHJ1Y3RvciBmb3IgdGhpcyB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7b2JqZWN0IHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbH0gcHJvcHMgVGhlIHByb3BlcnRpZXMgb2YgdGhpcyB2aXJ0dWFsIG5vZGUuXG4gKiBJZiB0aGlzIHZpcnR1YWwgbm9kZSByZXByZXNlbnRzIGEgdGV4dCBub2RlLCB0aGlzIGlzIHRoZSB0ZXh0IG9mIHRoZSBub2RlIChzdHJpbmcgb3IgbnVtYmVyKS5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyIHwgbnVsbH0ga2V5IFRoZSBrZXkgZm9yIHRoaXMgdmlydHVhbCBub2RlLCB1c2VkIHdoZW5cbiAqIGRpZmZpbmcgaXQgYWdhaW5zdCBpdHMgY2hpbGRyZW5cbiAqIEBwYXJhbSB7Vk5vZGVbXCJyZWZcIl19IHJlZiBUaGUgcmVmIHByb3BlcnR5IHRoYXQgd2lsbFxuICogcmVjZWl2ZSBhIHJlZmVyZW5jZSB0byBpdHMgY3JlYXRlZCBjaGlsZFxuICogQHJldHVybnMge1ZOb2RlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVk5vZGUodHlwZSwgcHJvcHMsIGtleSwgcmVmLCBvcmlnaW5hbCkge1xuXHQvLyBWOCBzZWVtcyB0byBiZSBiZXR0ZXIgYXQgZGV0ZWN0aW5nIHR5cGUgc2hhcGVzIGlmIHRoZSBvYmplY3QgaXMgYWxsb2NhdGVkIGZyb20gdGhlIHNhbWUgY2FsbCBzaXRlXG5cdC8vIERvIG5vdCBpbmxpbmUgaW50byBjcmVhdGVFbGVtZW50IGFuZCBjb2VyY2VUb1ZOb2RlIVxuXHQvKiogQHR5cGUge1ZOb2RlfSAqL1xuXHRjb25zdCB2bm9kZSA9IHtcblx0XHR0eXBlLFxuXHRcdHByb3BzLFxuXHRcdGtleSxcblx0XHRyZWYsXG5cdFx0X2NoaWxkcmVuOiBudWxsLFxuXHRcdF9wYXJlbnQ6IG51bGwsXG5cdFx0X2RlcHRoOiAwLFxuXHRcdF9kb206IG51bGwsXG5cdFx0Ly8gX25leHREb20gbXVzdCBiZSBpbml0aWFsaXplZCB0byB1bmRlZmluZWQgYi9jIGl0IHdpbGwgZXZlbnR1YWxseVxuXHRcdC8vIGJlIHNldCB0byBkb20ubmV4dFNpYmxpbmcgd2hpY2ggY2FuIHJldHVybiBgbnVsbGAgYW5kIGl0IGlzIGltcG9ydGFudFxuXHRcdC8vIHRvIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhbiB1bmluaXRpYWxpemVkIF9uZXh0RG9tIGFuZFxuXHRcdC8vIGEgX25leHREb20gdGhhdCBoYXMgYmVlbiBzZXQgdG8gYG51bGxgXG5cdFx0X25leHREb206IHVuZGVmaW5lZCxcblx0XHRfY29tcG9uZW50OiBudWxsLFxuXHRcdGNvbnN0cnVjdG9yOiB1bmRlZmluZWQsXG5cdFx0X29yaWdpbmFsOiBvcmlnaW5hbCA9PSBudWxsID8gKyt2bm9kZUlkIDogb3JpZ2luYWwsXG5cdFx0X2luZGV4OiAtMSxcblx0XHRfZmxhZ3M6IDBcblx0fTtcblxuXHQvLyBPbmx5IGludm9rZSB0aGUgdm5vZGUgaG9vayBpZiB0aGlzIHdhcyAqbm90KiBhIGRpcmVjdCBjb3B5OlxuXHRpZiAob3JpZ2luYWwgPT0gbnVsbCBcdTAwMjZcdTAwMjYgb3B0aW9ucy52bm9kZSAhPSBudWxsKSBvcHRpb25zLnZub2RlKHZub2RlKTtcblxuXHRyZXR1cm4gdm5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWYoKSB7XG5cdHJldHVybiB7IGN1cnJlbnQ6IG51bGwgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEZyYWdtZW50KHByb3BzKSB7XG5cdHJldHVybiBwcm9wcy5jaGlsZHJlbjtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIHRoZSBhcmd1bWVudCBpcyBhIHZhbGlkIFByZWFjdCBWTm9kZS5cbiAqIEBwYXJhbSB7Kn0gdm5vZGVcbiAqIEByZXR1cm5zIHt2bm9kZSBpcyBWTm9kZX1cbiAqL1xuZXhwb3J0IGNvbnN0IGlzVmFsaWRFbGVtZW50ID0gdm5vZGUgPVx1MDAzZVxuXHR2bm9kZSAhPSBudWxsIFx1MDAyNlx1MDAyNiB2bm9kZS5jb25zdHJ1Y3RvciA9PSB1bmRlZmluZWQ7XG4iLCAiaW1wb3J0IHsgYXNzaWduIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IGRpZmYsIGNvbW1pdFJvb3QgfSBmcm9tICcuL2RpZmYvaW5kZXgnO1xuaW1wb3J0IG9wdGlvbnMgZnJvbSAnLi9vcHRpb25zJztcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSAnLi9jcmVhdGUtZWxlbWVudCc7XG5pbXBvcnQgeyBNT0RFX0hZRFJBVEUgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbi8qKlxuICogQmFzZSBDb21wb25lbnQgY2xhc3MuIFByb3ZpZGVzIGBzZXRTdGF0ZSgpYCBhbmQgYGZvcmNlVXBkYXRlKClgLCB3aGljaFxuICogdHJpZ2dlciByZW5kZXJpbmdcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wcyBUaGUgaW5pdGlhbCBjb21wb25lbnQgcHJvcHNcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0IFRoZSBpbml0aWFsIGNvbnRleHQgZnJvbSBwYXJlbnQgY29tcG9uZW50cydcbiAqIGdldENoaWxkQ29udGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gQmFzZUNvbXBvbmVudChwcm9wcywgY29udGV4dCkge1xuXHR0aGlzLnByb3BzID0gcHJvcHM7XG5cdHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbi8qKlxuICogVXBkYXRlIGNvbXBvbmVudCBzdGF0ZSBhbmQgc2NoZWR1bGUgYSByZS1yZW5kZXIuXG4gKiBAdGhpcyB7Q29tcG9uZW50fVxuICogQHBhcmFtIHtvYmplY3QgfCAoKHM6IG9iamVjdCwgcDogb2JqZWN0KSA9XHUwMDNlIG9iamVjdCl9IHVwZGF0ZSBBIGhhc2ggb2Ygc3RhdGVcbiAqIHByb3BlcnRpZXMgdG8gdXBkYXRlIHdpdGggbmV3IHZhbHVlcyBvciBhIGZ1bmN0aW9uIHRoYXQgZ2l2ZW4gdGhlIGN1cnJlbnRcbiAqIHN0YXRlIGFuZCBwcm9wcyByZXR1cm5zIGEgbmV3IHBhcnRpYWwgc3RhdGVcbiAqIEBwYXJhbSB7KCkgPVx1MDAzZSB2b2lkfSBbY2FsbGJhY2tdIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG9uY2UgY29tcG9uZW50IHN0YXRlIGlzXG4gKiB1cGRhdGVkXG4gKi9cbkJhc2VDb21wb25lbnQucHJvdG90eXBlLnNldFN0YXRlID0gZnVuY3Rpb24gKHVwZGF0ZSwgY2FsbGJhY2spIHtcblx0Ly8gb25seSBjbG9uZSBzdGF0ZSB3aGVuIGNvcHlpbmcgdG8gbmV4dFN0YXRlIHRoZSBmaXJzdCB0aW1lLlxuXHRsZXQgcztcblx0aWYgKHRoaXMuX25leHRTdGF0ZSAhPSBudWxsIFx1MDAyNlx1MDAyNiB0aGlzLl9uZXh0U3RhdGUgIT09IHRoaXMuc3RhdGUpIHtcblx0XHRzID0gdGhpcy5fbmV4dFN0YXRlO1xuXHR9IGVsc2Uge1xuXHRcdHMgPSB0aGlzLl9uZXh0U3RhdGUgPSBhc3NpZ24oe30sIHRoaXMuc3RhdGUpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiB1cGRhdGUgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdC8vIFNvbWUgbGlicmFyaWVzIGxpa2UgYGltbWVyYCBtYXJrIHRoZSBjdXJyZW50IHN0YXRlIGFzIHJlYWRvbmx5LFxuXHRcdC8vIHByZXZlbnRpbmcgdXMgZnJvbSBtdXRhdGluZyBpdCwgc28gd2UgbmVlZCB0byBjbG9uZSBpdC4gU2VlICMyNzE2XG5cdFx0dXBkYXRlID0gdXBkYXRlKGFzc2lnbih7fSwgcyksIHRoaXMucHJvcHMpO1xuXHR9XG5cblx0aWYgKHVwZGF0ZSkge1xuXHRcdGFzc2lnbihzLCB1cGRhdGUpO1xuXHR9XG5cblx0Ly8gU2tpcCB1cGRhdGUgaWYgdXBkYXRlciBmdW5jdGlvbiByZXR1cm5lZCBudWxsXG5cdGlmICh1cGRhdGUgPT0gbnVsbCkgcmV0dXJuO1xuXG5cdGlmICh0aGlzLl92bm9kZSkge1xuXHRcdGlmIChjYWxsYmFjaykge1xuXHRcdFx0dGhpcy5fc3RhdGVDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG5cdFx0fVxuXHRcdGVucXVldWVSZW5kZXIodGhpcyk7XG5cdH1cbn07XG5cbi8qKlxuICogSW1tZWRpYXRlbHkgcGVyZm9ybSBhIHN5bmNocm9ub3VzIHJlLXJlbmRlciBvZiB0aGUgY29tcG9uZW50XG4gKiBAdGhpcyB7Q29tcG9uZW50fVxuICogQHBhcmFtIHsoKSA9XHUwMDNlIHZvaWR9IFtjYWxsYmFja10gQSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgYWZ0ZXIgY29tcG9uZW50IGlzXG4gKiByZS1yZW5kZXJlZFxuICovXG5CYXNlQ29tcG9uZW50LnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuXHRpZiAodGhpcy5fdm5vZGUpIHtcblx0XHQvLyBTZXQgcmVuZGVyIG1vZGUgc28gdGhhdCB3ZSBjYW4gZGlmZmVyZW50aWF0ZSB3aGVyZSB0aGUgcmVuZGVyIHJlcXVlc3Rcblx0XHQvLyBpcyBjb21pbmcgZnJvbS4gV2UgbmVlZCB0aGlzIGJlY2F1c2UgZm9yY2VVcGRhdGUgc2hvdWxkIG5ldmVyIGNhbGxcblx0XHQvLyBzaG91bGRDb21wb25lbnRVcGRhdGVcblx0XHR0aGlzLl9mb3JjZSA9IHRydWU7XG5cdFx0aWYgKGNhbGxiYWNrKSB0aGlzLl9yZW5kZXJDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG5cdFx0ZW5xdWV1ZVJlbmRlcih0aGlzKTtcblx0fVxufTtcblxuLyoqXG4gKiBBY2NlcHRzIGBwcm9wc2AgYW5kIGBzdGF0ZWAsIGFuZCByZXR1cm5zIGEgbmV3IFZpcnR1YWwgRE9NIHRyZWUgdG8gYnVpbGQuXG4gKiBWaXJ0dWFsIERPTSBpcyBnZW5lcmFsbHkgY29uc3RydWN0ZWQgdmlhIFtKU1hdKGh0dHA6Ly9qYXNvbmZvcm1hdC5jb20vd3RmLWlzLWpzeCkuXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgUHJvcHMgKGVnOiBKU1ggYXR0cmlidXRlcykgcmVjZWl2ZWQgZnJvbSBwYXJlbnRcbiAqIGVsZW1lbnQvY29tcG9uZW50XG4gKiBAcGFyYW0ge29iamVjdH0gc3RhdGUgVGhlIGNvbXBvbmVudCdzIGN1cnJlbnQgc3RhdGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0IENvbnRleHQgb2JqZWN0LCBhcyByZXR1cm5lZCBieSB0aGUgbmVhcmVzdFxuICogYW5jZXN0b3IncyBgZ2V0Q2hpbGRDb250ZXh0KClgXG4gKiBAcmV0dXJucyB7Q29tcG9uZW50Q2hpbGRyZW4gfCB2b2lkfVxuICovXG5CYXNlQ29tcG9uZW50LnByb3RvdHlwZS5yZW5kZXIgPSBGcmFnbWVudDtcblxuLyoqXG4gKiBAcGFyYW0ge1ZOb2RlfSB2bm9kZVxuICogQHBhcmFtIHtudW1iZXIgfCBudWxsfSBbY2hpbGRJbmRleF1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERvbVNpYmxpbmcodm5vZGUsIGNoaWxkSW5kZXgpIHtcblx0aWYgKGNoaWxkSW5kZXggPT0gbnVsbCkge1xuXHRcdC8vIFVzZSBjaGlsZEluZGV4PT1udWxsIGFzIGEgc2lnbmFsIHRvIHJlc3VtZSB0aGUgc2VhcmNoIGZyb20gdGhlIHZub2RlJ3Mgc2libGluZ1xuXHRcdHJldHVybiB2bm9kZS5fcGFyZW50XG5cdFx0XHQ/IGdldERvbVNpYmxpbmcodm5vZGUuX3BhcmVudCwgdm5vZGUuX2luZGV4ICsgMSlcblx0XHRcdDogbnVsbDtcblx0fVxuXG5cdGxldCBzaWJsaW5nO1xuXHRmb3IgKDsgY2hpbGRJbmRleCBcdTAwM2Mgdm5vZGUuX2NoaWxkcmVuLmxlbmd0aDsgY2hpbGRJbmRleCsrKSB7XG5cdFx0c2libGluZyA9IHZub2RlLl9jaGlsZHJlbltjaGlsZEluZGV4XTtcblxuXHRcdGlmIChzaWJsaW5nICE9IG51bGwgXHUwMDI2XHUwMDI2IHNpYmxpbmcuX2RvbSAhPSBudWxsKSB7XG5cdFx0XHQvLyBTaW5jZSB1cGRhdGVQYXJlbnREb21Qb2ludGVycyBrZWVwcyBfZG9tIHBvaW50ZXIgY29ycmVjdCxcblx0XHRcdC8vIHdlIGNhbiByZWx5IG9uIF9kb20gdG8gdGVsbCB1cyBpZiB0aGlzIHN1YnRyZWUgY29udGFpbnMgYVxuXHRcdFx0Ly8gcmVuZGVyZWQgRE9NIG5vZGUsIGFuZCB3aGF0IHRoZSBmaXJzdCByZW5kZXJlZCBET00gbm9kZSBpc1xuXHRcdFx0cmV0dXJuIHNpYmxpbmcuX2RvbTtcblx0XHR9XG5cdH1cblxuXHQvLyBJZiB3ZSBnZXQgaGVyZSwgd2UgaGF2ZSBub3QgZm91bmQgYSBET00gbm9kZSBpbiB0aGlzIHZub2RlJ3MgY2hpbGRyZW4uXG5cdC8vIFdlIG11c3QgcmVzdW1lIGZyb20gdGhpcyB2bm9kZSdzIHNpYmxpbmcgKGluIGl0J3MgcGFyZW50IF9jaGlsZHJlbiBhcnJheSlcblx0Ly8gT25seSBjbGltYiB1cCBhbmQgc2VhcmNoIHRoZSBwYXJlbnQgaWYgd2UgYXJlbid0IHNlYXJjaGluZyB0aHJvdWdoIGEgRE9NXG5cdC8vIFZOb2RlIChtZWFuaW5nIHdlIHJlYWNoZWQgdGhlIERPTSBwYXJlbnQgb2YgdGhlIG9yaWdpbmFsIHZub2RlIHRoYXQgYmVnYW5cblx0Ly8gdGhlIHNlYXJjaClcblx0cmV0dXJuIHR5cGVvZiB2bm9kZS50eXBlID09ICdmdW5jdGlvbicgPyBnZXREb21TaWJsaW5nKHZub2RlKSA6IG51bGw7XG59XG5cbi8qKlxuICogVHJpZ2dlciBpbi1wbGFjZSByZS1yZW5kZXJpbmcgb2YgYSBjb21wb25lbnQuXG4gKiBAcGFyYW0ge0NvbXBvbmVudH0gY29tcG9uZW50IFRoZSBjb21wb25lbnQgdG8gcmVyZW5kZXJcbiAqL1xuZnVuY3Rpb24gcmVuZGVyQ29tcG9uZW50KGNvbXBvbmVudCkge1xuXHRsZXQgb2xkVk5vZGUgPSBjb21wb25lbnQuX3Zub2RlLFxuXHRcdG9sZERvbSA9IG9sZFZOb2RlLl9kb20sXG5cdFx0Y29tbWl0UXVldWUgPSBbXSxcblx0XHRyZWZRdWV1ZSA9IFtdO1xuXG5cdGlmIChjb21wb25lbnQuX3BhcmVudERvbSkge1xuXHRcdGNvbnN0IG5ld1ZOb2RlID0gYXNzaWduKHt9LCBvbGRWTm9kZSk7XG5cdFx0bmV3Vk5vZGUuX29yaWdpbmFsID0gb2xkVk5vZGUuX29yaWdpbmFsICsgMTtcblx0XHRpZiAob3B0aW9ucy52bm9kZSkgb3B0aW9ucy52bm9kZShuZXdWTm9kZSk7XG5cblx0XHRkaWZmKFxuXHRcdFx0Y29tcG9uZW50Ll9wYXJlbnREb20sXG5cdFx0XHRuZXdWTm9kZSxcblx0XHRcdG9sZFZOb2RlLFxuXHRcdFx0Y29tcG9uZW50Ll9nbG9iYWxDb250ZXh0LFxuXHRcdFx0Y29tcG9uZW50Ll9wYXJlbnREb20ubmFtZXNwYWNlVVJJLFxuXHRcdFx0b2xkVk5vZGUuX2ZsYWdzIFx1MDAyNiBNT0RFX0hZRFJBVEUgPyBbb2xkRG9tXSA6IG51bGwsXG5cdFx0XHRjb21taXRRdWV1ZSxcblx0XHRcdG9sZERvbSA9PSBudWxsID8gZ2V0RG9tU2libGluZyhvbGRWTm9kZSkgOiBvbGREb20sXG5cdFx0XHQhIShvbGRWTm9kZS5fZmxhZ3MgXHUwMDI2IE1PREVfSFlEUkFURSksXG5cdFx0XHRyZWZRdWV1ZVxuXHRcdCk7XG5cblx0XHRuZXdWTm9kZS5fb3JpZ2luYWwgPSBvbGRWTm9kZS5fb3JpZ2luYWw7XG5cdFx0bmV3Vk5vZGUuX3BhcmVudC5fY2hpbGRyZW5bbmV3Vk5vZGUuX2luZGV4XSA9IG5ld1ZOb2RlO1xuXHRcdGNvbW1pdFJvb3QoY29tbWl0UXVldWUsIG5ld1ZOb2RlLCByZWZRdWV1ZSk7XG5cblx0XHRpZiAobmV3Vk5vZGUuX2RvbSAhPSBvbGREb20pIHtcblx0XHRcdHVwZGF0ZVBhcmVudERvbVBvaW50ZXJzKG5ld1ZOb2RlKTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge1ZOb2RlfSB2bm9kZVxuICovXG5mdW5jdGlvbiB1cGRhdGVQYXJlbnREb21Qb2ludGVycyh2bm9kZSkge1xuXHRpZiAoKHZub2RlID0gdm5vZGUuX3BhcmVudCkgIT0gbnVsbCBcdTAwMjZcdTAwMjYgdm5vZGUuX2NvbXBvbmVudCAhPSBudWxsKSB7XG5cdFx0dm5vZGUuX2RvbSA9IHZub2RlLl9jb21wb25lbnQuYmFzZSA9IG51bGw7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgXHUwMDNjIHZub2RlLl9jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IGNoaWxkID0gdm5vZGUuX2NoaWxkcmVuW2ldO1xuXHRcdFx0aWYgKGNoaWxkICE9IG51bGwgXHUwMDI2XHUwMDI2IGNoaWxkLl9kb20gIT0gbnVsbCkge1xuXHRcdFx0XHR2bm9kZS5fZG9tID0gdm5vZGUuX2NvbXBvbmVudC5iYXNlID0gY2hpbGQuX2RvbTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHVwZGF0ZVBhcmVudERvbVBvaW50ZXJzKHZub2RlKTtcblx0fVxufVxuXG4vKipcbiAqIFRoZSByZW5kZXIgcXVldWVcbiAqIEB0eXBlIHtBcnJheVx1MDAzY0NvbXBvbmVudFx1MDAzZX1cbiAqL1xubGV0IHJlcmVuZGVyUXVldWUgPSBbXTtcblxuLypcbiAqIFRoZSB2YWx1ZSBvZiBgQ29tcG9uZW50LmRlYm91bmNlYCBtdXN0IGFzeW5jaHJvbm91c2x5IGludm9rZSB0aGUgcGFzc2VkIGluIGNhbGxiYWNrLiBJdCBpc1xuICogaW1wb3J0YW50IHRoYXQgY29udHJpYnV0b3JzIHRvIFByZWFjdCBjYW4gY29uc2lzdGVudGx5IHJlYXNvbiBhYm91dCB3aGF0IGNhbGxzIHRvIGBzZXRTdGF0ZWAsIGV0Yy5cbiAqIGRvLCBhbmQgd2hlbiB0aGVpciBlZmZlY3RzIHdpbGwgYmUgYXBwbGllZC4gU2VlIHRoZSBsaW5rcyBiZWxvdyBmb3Igc29tZSBmdXJ0aGVyIHJlYWRpbmcgb24gZGVzaWduaW5nXG4gKiBhc3luY2hyb25vdXMgQVBJcy5cbiAqICogW0Rlc2lnbmluZyBBUElzIGZvciBBc3luY2hyb255XShodHRwczovL2Jsb2cuaXpzLm1lLzIwMTMvMDgvZGVzaWduaW5nLWFwaXMtZm9yLWFzeW5jaHJvbnkpXG4gKiAqIFtDYWxsYmFja3Mgc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91c10oaHR0cHM6Ly9ibG9nLm9tZXRlci5jb20vMjAxMS8wNy8yNC9jYWxsYmFja3Mtc3luY2hyb25vdXMtYW5kLWFzeW5jaHJvbm91cy8pXG4gKi9cblxubGV0IHByZXZEZWJvdW5jZTtcblxuY29uc3QgZGVmZXIgPVxuXHR0eXBlb2YgUHJvbWlzZSA9PSAnZnVuY3Rpb24nXG5cdFx0PyBQcm9taXNlLnByb3RvdHlwZS50aGVuLmJpbmQoUHJvbWlzZS5yZXNvbHZlKCkpXG5cdFx0OiBzZXRUaW1lb3V0O1xuXG4vKipcbiAqIEVucXVldWUgYSByZXJlbmRlciBvZiBhIGNvbXBvbmVudFxuICogQHBhcmFtIHtDb21wb25lbnR9IGMgVGhlIGNvbXBvbmVudCB0byByZXJlbmRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5xdWV1ZVJlbmRlcihjKSB7XG5cdGlmIChcblx0XHQoIWMuX2RpcnR5IFx1MDAyNlx1MDAyNlxuXHRcdFx0KGMuX2RpcnR5ID0gdHJ1ZSkgXHUwMDI2XHUwMDI2XG5cdFx0XHRyZXJlbmRlclF1ZXVlLnB1c2goYykgXHUwMDI2XHUwMDI2XG5cdFx0XHQhcHJvY2Vzcy5fcmVyZW5kZXJDb3VudCsrKSB8fFxuXHRcdHByZXZEZWJvdW5jZSAhPT0gb3B0aW9ucy5kZWJvdW5jZVJlbmRlcmluZ1xuXHQpIHtcblx0XHRwcmV2RGVib3VuY2UgPSBvcHRpb25zLmRlYm91bmNlUmVuZGVyaW5nO1xuXHRcdChwcmV2RGVib3VuY2UgfHwgZGVmZXIpKHByb2Nlc3MpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtDb21wb25lbnR9IGFcbiAqIEBwYXJhbSB7Q29tcG9uZW50fSBiXG4gKi9cbmNvbnN0IGRlcHRoU29ydCA9IChhLCBiKSA9XHUwMDNlIGEuX3Zub2RlLl9kZXB0aCAtIGIuX3Zub2RlLl9kZXB0aDtcblxuLyoqIEZsdXNoIHRoZSByZW5kZXIgcXVldWUgYnkgcmVyZW5kZXJpbmcgYWxsIHF1ZXVlZCBjb21wb25lbnRzICovXG5mdW5jdGlvbiBwcm9jZXNzKCkge1xuXHRsZXQgYztcblx0cmVyZW5kZXJRdWV1ZS5zb3J0KGRlcHRoU29ydCk7XG5cdC8vIERvbid0IHVwZGF0ZSBgcmVuZGVyQ291bnRgIHlldC4gS2VlcCBpdHMgdmFsdWUgbm9uLXplcm8gdG8gcHJldmVudCB1bm5lY2Vzc2FyeVxuXHQvLyBwcm9jZXNzKCkgY2FsbHMgZnJvbSBnZXR0aW5nIHNjaGVkdWxlZCB3aGlsZSBgcXVldWVgIGlzIHN0aWxsIGJlaW5nIGNvbnN1bWVkLlxuXHR3aGlsZSAoKGMgPSByZXJlbmRlclF1ZXVlLnNoaWZ0KCkpKSB7XG5cdFx0aWYgKGMuX2RpcnR5KSB7XG5cdFx0XHRsZXQgcmVuZGVyUXVldWVMZW5ndGggPSByZXJlbmRlclF1ZXVlLmxlbmd0aDtcblx0XHRcdHJlbmRlckNvbXBvbmVudChjKTtcblx0XHRcdGlmIChyZXJlbmRlclF1ZXVlLmxlbmd0aCBcdTAwM2UgcmVuZGVyUXVldWVMZW5ndGgpIHtcblx0XHRcdFx0Ly8gV2hlbiBpLmUuIHJlcmVuZGVyaW5nIGEgcHJvdmlkZXIgYWRkaXRpb25hbCBuZXcgaXRlbXMgY2FuIGJlIGluamVjdGVkLCB3ZSB3YW50IHRvXG5cdFx0XHRcdC8vIGtlZXAgdGhlIG9yZGVyIGZyb20gdG9wIHRvIGJvdHRvbSB3aXRoIHRob3NlIG5ldyBpdGVtcyBzbyB3ZSBjYW4gaGFuZGxlIHRoZW0gaW4gYVxuXHRcdFx0XHQvLyBzaW5nbGUgcGFzc1xuXHRcdFx0XHRyZXJlbmRlclF1ZXVlLnNvcnQoZGVwdGhTb3J0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cHJvY2Vzcy5fcmVyZW5kZXJDb3VudCA9IDA7XG59XG5cbnByb2Nlc3MuX3JlcmVuZGVyQ291bnQgPSAwO1xuIiwgImltcG9ydCB7IElTX05PTl9ESU1FTlNJT05BTCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgb3B0aW9ucyBmcm9tICcuLi9vcHRpb25zJztcblxuZnVuY3Rpb24gc2V0U3R5bGUoc3R5bGUsIGtleSwgdmFsdWUpIHtcblx0aWYgKGtleVswXSA9PT0gJy0nKSB7XG5cdFx0c3R5bGUuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZSk7XG5cdH0gZWxzZSBpZiAodmFsdWUgPT0gbnVsbCkge1xuXHRcdHN0eWxlW2tleV0gPSAnJztcblx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgIT0gJ251bWJlcicgfHwgSVNfTk9OX0RJTUVOU0lPTkFMLnRlc3Qoa2V5KSkge1xuXHRcdHN0eWxlW2tleV0gPSB2YWx1ZTtcblx0fSBlbHNlIHtcblx0XHRzdHlsZVtrZXldID0gdmFsdWUgKyAncHgnO1xuXHR9XG59XG5cbi8vIEEgbG9naWNhbCBjbG9jayB0byBzb2x2ZSBpc3N1ZXMgbGlrZSBodHRwczovL2dpdGh1Yi5jb20vcHJlYWN0anMvcHJlYWN0L2lzc3Vlcy8zOTI3LlxuLy8gV2hlbiB0aGUgRE9NIHBlcmZvcm1zIGFuIGV2ZW50IGl0IGxlYXZlcyBtaWNyby10aWNrcyBpbiBiZXR3ZWVuIGJ1YmJsaW5nIHVwIHdoaWNoIG1lYW5zIHRoYXRcbi8vIGFuIGV2ZW50IGNhbiB0cmlnZ2VyIG9uIGEgbmV3bHkgcmVhdGVkIERPTS1ub2RlIHdoaWxlIHRoZSBldmVudCBidWJibGVzIHVwLlxuLy9cbi8vIE9yaWdpbmFsbHkgaW5zcGlyZWQgYnkgVnVlXG4vLyAoaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL2NvcmUvYmxvYi9jYWViOGE2ODgxMWExYjBmNzkvcGFja2FnZXMvcnVudGltZS1kb20vc3JjL21vZHVsZXMvZXZlbnRzLnRzI0w5MC1MMTAxKSxcbi8vIGJ1dCBtb2RpZmllZCB0byB1c2UgYSBsb2dpY2FsIGNsb2NrIGluc3RlYWQgb2YgRGF0ZS5ub3coKSBpbiBjYXNlIGV2ZW50IGhhbmRsZXJzIGdldCBhdHRhY2hlZFxuLy8gYW5kIGV2ZW50cyBnZXQgZGlzcGF0Y2hlZCBkdXJpbmcgdGhlIHNhbWUgbWlsbGlzZWNvbmQuXG4vL1xuLy8gVGhlIGNsb2NrIGlzIGluY3JlbWVudGVkIGFmdGVyIGVhY2ggbmV3IGV2ZW50IGRpc3BhdGNoLiBUaGlzIGFsbG93cyAxIDAwMCAwMDAgbmV3IGV2ZW50c1xuLy8gcGVyIHNlY29uZCBmb3Igb3ZlciAyODAgeWVhcnMgYmVmb3JlIHRoZSB2YWx1ZSByZWFjaGVzIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSICgyKio1MyAtIDEpLlxubGV0IGV2ZW50Q2xvY2sgPSAwO1xuXG4vKipcbiAqIFNldCBhIHByb3BlcnR5IHZhbHVlIG9uIGEgRE9NIG5vZGVcbiAqIEBwYXJhbSB7UHJlYWN0RWxlbWVudH0gZG9tIFRoZSBET00gbm9kZSB0byBtb2RpZnlcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXRcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldCB0aGUgcHJvcGVydHkgdG9cbiAqIEBwYXJhbSB7Kn0gb2xkVmFsdWUgVGhlIG9sZCB2YWx1ZSB0aGUgcHJvcGVydHkgaGFkXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZXNwYWNlIFdoZXRoZXIgb3Igbm90IHRoaXMgRE9NIG5vZGUgaXMgYW4gU1ZHIG5vZGUgb3Igbm90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRQcm9wZXJ0eShkb20sIG5hbWUsIHZhbHVlLCBvbGRWYWx1ZSwgbmFtZXNwYWNlKSB7XG5cdGxldCB1c2VDYXB0dXJlO1xuXG5cdG86IGlmIChuYW1lID09PSAnc3R5bGUnKSB7XG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuXHRcdFx0ZG9tLnN0eWxlLmNzc1RleHQgPSB2YWx1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHR5cGVvZiBvbGRWYWx1ZSA9PSAnc3RyaW5nJykge1xuXHRcdFx0XHRkb20uc3R5bGUuY3NzVGV4dCA9IG9sZFZhbHVlID0gJyc7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChvbGRWYWx1ZSkge1xuXHRcdFx0XHRmb3IgKG5hbWUgaW4gb2xkVmFsdWUpIHtcblx0XHRcdFx0XHRpZiAoISh2YWx1ZSBcdTAwMjZcdTAwMjYgbmFtZSBpbiB2YWx1ZSkpIHtcblx0XHRcdFx0XHRcdHNldFN0eWxlKGRvbS5zdHlsZSwgbmFtZSwgJycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0Zm9yIChuYW1lIGluIHZhbHVlKSB7XG5cdFx0XHRcdFx0aWYgKCFvbGRWYWx1ZSB8fCB2YWx1ZVtuYW1lXSAhPT0gb2xkVmFsdWVbbmFtZV0pIHtcblx0XHRcdFx0XHRcdHNldFN0eWxlKGRvbS5zdHlsZSwgbmFtZSwgdmFsdWVbbmFtZV0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQvLyBCZW5jaG1hcmsgZm9yIGNvbXBhcmlzb246IGh0dHBzOi8vZXNiZW5jaC5jb20vYmVuY2gvNTc0Yzk1NGJkYjk2NWI5YTAwOTY1YWM2XG5cdGVsc2UgaWYgKG5hbWVbMF0gPT09ICdvJyBcdTAwMjZcdTAwMjYgbmFtZVsxXSA9PT0gJ24nKSB7XG5cdFx0dXNlQ2FwdHVyZSA9XG5cdFx0XHRuYW1lICE9PSAobmFtZSA9IG5hbWUucmVwbGFjZSgvKFBvaW50ZXJDYXB0dXJlKSR8Q2FwdHVyZSQvaSwgJyQxJykpO1xuXG5cdFx0Ly8gSW5mZXIgY29ycmVjdCBjYXNpbmcgZm9yIERPTSBidWlsdC1pbiBldmVudHM6XG5cdFx0aWYgKFxuXHRcdFx0bmFtZS50b0xvd2VyQ2FzZSgpIGluIGRvbSB8fFxuXHRcdFx0bmFtZSA9PT0gJ29uRm9jdXNPdXQnIHx8XG5cdFx0XHRuYW1lID09PSAnb25Gb2N1c0luJ1xuXHRcdClcblx0XHRcdG5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCkuc2xpY2UoMik7XG5cdFx0ZWxzZSBuYW1lID0gbmFtZS5zbGljZSgyKTtcblxuXHRcdGlmICghZG9tLl9saXN0ZW5lcnMpIGRvbS5fbGlzdGVuZXJzID0ge307XG5cdFx0ZG9tLl9saXN0ZW5lcnNbbmFtZSArIHVzZUNhcHR1cmVdID0gdmFsdWU7XG5cblx0XHRpZiAodmFsdWUpIHtcblx0XHRcdGlmICghb2xkVmFsdWUpIHtcblx0XHRcdFx0dmFsdWUuX2F0dGFjaGVkID0gZXZlbnRDbG9jaztcblx0XHRcdFx0ZG9tLmFkZEV2ZW50TGlzdGVuZXIoXG5cdFx0XHRcdFx0bmFtZSxcblx0XHRcdFx0XHR1c2VDYXB0dXJlID8gZXZlbnRQcm94eUNhcHR1cmUgOiBldmVudFByb3h5LFxuXHRcdFx0XHRcdHVzZUNhcHR1cmVcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhbHVlLl9hdHRhY2hlZCA9IG9sZFZhbHVlLl9hdHRhY2hlZDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0ZG9tLnJlbW92ZUV2ZW50TGlzdGVuZXIoXG5cdFx0XHRcdG5hbWUsXG5cdFx0XHRcdHVzZUNhcHR1cmUgPyBldmVudFByb3h5Q2FwdHVyZSA6IGV2ZW50UHJveHksXG5cdFx0XHRcdHVzZUNhcHR1cmVcblx0XHRcdCk7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGlmIChuYW1lc3BhY2UgPT0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJykge1xuXHRcdFx0Ly8gTm9ybWFsaXplIGluY29ycmVjdCBwcm9wIHVzYWdlIGZvciBTVkc6XG5cdFx0XHQvLyAtIHhsaW5rOmhyZWYgLyB4bGlua0hyZWYgLS1cdTAwM2UgaHJlZiAoeGxpbms6aHJlZiB3YXMgcmVtb3ZlZCBmcm9tIFNWRyBhbmQgaXNuJ3QgbmVlZGVkKVxuXHRcdFx0Ly8gLSBjbGFzc05hbWUgLS1cdTAwM2UgY2xhc3Ncblx0XHRcdG5hbWUgPSBuYW1lLnJlcGxhY2UoL3hsaW5rKEh8OmgpLywgJ2gnKS5yZXBsYWNlKC9zTmFtZSQvLCAncycpO1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRuYW1lICE9ICd3aWR0aCcgXHUwMDI2XHUwMDI2XG5cdFx0XHRuYW1lICE9ICdoZWlnaHQnIFx1MDAyNlx1MDAyNlxuXHRcdFx0bmFtZSAhPSAnaHJlZicgXHUwMDI2XHUwMDI2XG5cdFx0XHRuYW1lICE9ICdsaXN0JyBcdTAwMjZcdTAwMjZcblx0XHRcdG5hbWUgIT0gJ2Zvcm0nIFx1MDAyNlx1MDAyNlxuXHRcdFx0Ly8gRGVmYXVsdCB2YWx1ZSBpbiBicm93c2VycyBpcyBgLTFgIGFuZCBhbiBlbXB0eSBzdHJpbmcgaXNcblx0XHRcdC8vIGNhc3QgdG8gYDBgIGluc3RlYWRcblx0XHRcdG5hbWUgIT0gJ3RhYkluZGV4JyBcdTAwMjZcdTAwMjZcblx0XHRcdG5hbWUgIT0gJ2Rvd25sb2FkJyBcdTAwMjZcdTAwMjZcblx0XHRcdG5hbWUgIT0gJ3Jvd1NwYW4nIFx1MDAyNlx1MDAyNlxuXHRcdFx0bmFtZSAhPSAnY29sU3BhbicgXHUwMDI2XHUwMDI2XG5cdFx0XHRuYW1lICE9ICdyb2xlJyBcdTAwMjZcdTAwMjZcblx0XHRcdG5hbWUgIT0gJ3BvcG92ZXInIFx1MDAyNlx1MDAyNlxuXHRcdFx0bmFtZSBpbiBkb21cblx0XHQpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGRvbVtuYW1lXSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xuXHRcdFx0XHQvLyBsYWJlbGxlZCBicmVhayBpcyAxYiBzbWFsbGVyIGhlcmUgdGhhbiBhIHJldHVybiBzdGF0ZW1lbnQgKHNvcnJ5KVxuXHRcdFx0XHRicmVhayBvO1xuXHRcdFx0fSBjYXRjaCAoZSkge31cblx0XHR9XG5cblx0XHQvLyBhcmlhLSBhbmQgZGF0YS0gYXR0cmlidXRlcyBoYXZlIG5vIGJvb2xlYW4gcmVwcmVzZW50YXRpb24uXG5cdFx0Ly8gQSBgZmFsc2VgIHZhbHVlIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBhdHRyaWJ1dGUgbm90IGJlaW5nXG5cdFx0Ly8gcHJlc2VudCwgc28gd2UgY2FuJ3QgcmVtb3ZlIGl0LiBGb3Igbm9uLWJvb2xlYW4gYXJpYVxuXHRcdC8vIGF0dHJpYnV0ZXMgd2UgY291bGQgdHJlYXQgZmFsc2UgYXMgYSByZW1vdmFsLCBidXQgdGhlXG5cdFx0Ly8gYW1vdW50IG9mIGV4Y2VwdGlvbnMgd291bGQgY29zdCB0b28gbWFueSBieXRlcy4gT24gdG9wIG9mXG5cdFx0Ly8gdGhhdCBvdGhlciBmcmFtZXdvcmtzIGdlbmVyYWxseSBzdHJpbmdpZnkgYGZhbHNlYC5cblxuXHRcdGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0Ly8gbmV2ZXIgc2VyaWFsaXplIGZ1bmN0aW9ucyBhcyBhdHRyaWJ1dGUgdmFsdWVzXG5cdFx0fSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsIFx1MDAyNlx1MDAyNiAodmFsdWUgIT09IGZhbHNlIHx8IG5hbWVbNF0gPT09ICctJykpIHtcblx0XHRcdGRvbS5zZXRBdHRyaWJ1dGUobmFtZSwgbmFtZSA9PSAncG9wb3ZlcicgXHUwMDI2XHUwMDI2IHZhbHVlID09IHRydWUgPyAnJyA6IHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZG9tLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gZXZlbnQgcHJveHkgZnVuY3Rpb24uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHVzZUNhcHR1cmUgSXMgdGhlIGV2ZW50IGhhbmRsZXIgZm9yIHRoZSBjYXB0dXJlIHBoYXNlLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRXZlbnRQcm94eSh1c2VDYXB0dXJlKSB7XG5cdC8qKlxuXHQgKiBQcm94eSBhbiBldmVudCB0byBob29rZWQgZXZlbnQgaGFuZGxlcnNcblx0ICogQHBhcmFtIHtQcmVhY3RFdmVudH0gZSBUaGUgZXZlbnQgb2JqZWN0IGZyb20gdGhlIGJyb3dzZXJcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHJldHVybiBmdW5jdGlvbiAoZSkge1xuXHRcdGlmICh0aGlzLl9saXN0ZW5lcnMpIHtcblx0XHRcdGNvbnN0IGV2ZW50SGFuZGxlciA9IHRoaXMuX2xpc3RlbmVyc1tlLnR5cGUgKyB1c2VDYXB0dXJlXTtcblx0XHRcdGlmIChlLl9kaXNwYXRjaGVkID09IG51bGwpIHtcblx0XHRcdFx0ZS5fZGlzcGF0Y2hlZCA9IGV2ZW50Q2xvY2srKztcblxuXHRcdFx0XHQvLyBXaGVuIGBlLl9kaXNwYXRjaGVkYCBpcyBzbWFsbGVyIHRoYW4gdGhlIHRpbWUgd2hlbiB0aGUgdGFyZ2V0ZWQgZXZlbnRcblx0XHRcdFx0Ly8gaGFuZGxlciB3YXMgYXR0YWNoZWQgd2Uga25vdyB3ZSBoYXZlIGJ1YmJsZWQgdXAgdG8gYW4gZWxlbWVudCB0aGF0IHdhcyBhZGRlZFxuXHRcdFx0XHQvLyBkdXJpbmcgcGF0Y2hpbmcgdGhlIERPTS5cblx0XHRcdH0gZWxzZSBpZiAoZS5fZGlzcGF0Y2hlZCBcdTAwM2MgZXZlbnRIYW5kbGVyLl9hdHRhY2hlZCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZXZlbnRIYW5kbGVyKG9wdGlvbnMuZXZlbnQgPyBvcHRpb25zLmV2ZW50KGUpIDogZSk7XG5cdFx0fVxuXHR9O1xufVxuXG5jb25zdCBldmVudFByb3h5ID0gY3JlYXRlRXZlbnRQcm94eShmYWxzZSk7XG5jb25zdCBldmVudFByb3h5Q2FwdHVyZSA9IGNyZWF0ZUV2ZW50UHJveHkodHJ1ZSk7XG4iLCAiaW1wb3J0IHsgZW5xdWV1ZVJlbmRlciB9IGZyb20gJy4vY29tcG9uZW50JztcblxuZXhwb3J0IGxldCBpID0gMDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQoZGVmYXVsdFZhbHVlLCBjb250ZXh0SWQpIHtcblx0Y29udGV4dElkID0gJ19fY0MnICsgaSsrO1xuXG5cdGNvbnN0IGNvbnRleHQgPSB7XG5cdFx0X2lkOiBjb250ZXh0SWQsXG5cdFx0X2RlZmF1bHRWYWx1ZTogZGVmYXVsdFZhbHVlLFxuXHRcdC8qKiBAdHlwZSB7RnVuY3Rpb25Db21wb25lbnR9ICovXG5cdFx0Q29uc3VtZXIocHJvcHMsIGNvbnRleHRWYWx1ZSkge1xuXHRcdFx0Ly8gcmV0dXJuIHByb3BzLmNoaWxkcmVuKFxuXHRcdFx0Ly8gXHRjb250ZXh0W2NvbnRleHRJZF0gPyBjb250ZXh0W2NvbnRleHRJZF0ucHJvcHMudmFsdWUgOiBkZWZhdWx0VmFsdWVcblx0XHRcdC8vICk7XG5cdFx0XHRyZXR1cm4gcHJvcHMuY2hpbGRyZW4oY29udGV4dFZhbHVlKTtcblx0XHR9LFxuXHRcdC8qKiBAdHlwZSB7RnVuY3Rpb25Db21wb25lbnR9ICovXG5cdFx0UHJvdmlkZXIocHJvcHMpIHtcblx0XHRcdGlmICghdGhpcy5nZXRDaGlsZENvbnRleHQpIHtcblx0XHRcdFx0LyoqIEB0eXBlIHtDb21wb25lbnRbXSB8IG51bGx9ICovXG5cdFx0XHRcdGxldCBzdWJzID0gW107XG5cdFx0XHRcdGxldCBjdHggPSB7fTtcblx0XHRcdFx0Y3R4W2NvbnRleHRJZF0gPSB0aGlzO1xuXG5cdFx0XHRcdHRoaXMuZ2V0Q2hpbGRDb250ZXh0ID0gKCkgPVx1MDAzZSBjdHg7XG5cblx0XHRcdFx0dGhpcy5jb21wb25lbnRXaWxsVW5tb3VudCA9ICgpID1cdTAwM2Uge1xuXHRcdFx0XHRcdHN1YnMgPSBudWxsO1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdHRoaXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gZnVuY3Rpb24gKF9wcm9wcykge1xuXHRcdFx0XHRcdGlmICh0aGlzLnByb3BzLnZhbHVlICE9PSBfcHJvcHMudmFsdWUpIHtcblx0XHRcdFx0XHRcdHN1YnMuc29tZShjID1cdTAwM2Uge1xuXHRcdFx0XHRcdFx0XHRjLl9mb3JjZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdGVucXVldWVSZW5kZXIoYyk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0dGhpcy5zdWIgPSBjID1cdTAwM2Uge1xuXHRcdFx0XHRcdHN1YnMucHVzaChjKTtcblx0XHRcdFx0XHRsZXQgb2xkID0gYy5jb21wb25lbnRXaWxsVW5tb3VudDtcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gKCkgPVx1MDAzZSB7XG5cdFx0XHRcdFx0XHRpZiAoc3Vicykge1xuXHRcdFx0XHRcdFx0XHRzdWJzLnNwbGljZShzdWJzLmluZGV4T2YoYyksIDEpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKG9sZCkgb2xkLmNhbGwoYyk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHByb3BzLmNoaWxkcmVuO1xuXHRcdH1cblx0fTtcblxuXHQvLyBEZXZ0b29scyBuZWVkcyBhY2Nlc3MgdG8gdGhlIGNvbnRleHQgb2JqZWN0IHdoZW4gaXRcblx0Ly8gZW5jb3VudGVycyBhIFByb3ZpZGVyLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBzdXBwb3J0XG5cdC8vIHNldHRpbmcgYGRpc3BsYXlOYW1lYCBvbiB0aGUgY29udGV4dCBvYmplY3QgaW5zdGVhZFxuXHQvLyBvZiBvbiB0aGUgY29tcG9uZW50IGl0c2VsZi4gU2VlOlxuXHQvLyBodHRwczovL3JlYWN0anMub3JnL2RvY3MvY29udGV4dC5odG1sI2NvbnRleHRkaXNwbGF5bmFtZVxuXG5cdHJldHVybiAoY29udGV4dC5Qcm92aWRlci5fY29udGV4dFJlZiA9IGNvbnRleHQuQ29uc3VtZXIuY29udGV4dFR5cGUgPVxuXHRcdGNvbnRleHQpO1xufVxuIiwgImltcG9ydCB7IGRpZmYsIHVubW91bnQsIGFwcGx5UmVmIH0gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBjcmVhdGVWTm9kZSwgRnJhZ21lbnQgfSBmcm9tICcuLi9jcmVhdGUtZWxlbWVudCc7XG5pbXBvcnQgeyBFTVBUWV9PQkosIEVNUFRZX0FSUiwgSU5TRVJUX1ZOT0RFLCBNQVRDSEVEIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7IGdldERvbVNpYmxpbmcgfSBmcm9tICcuLi9jb21wb25lbnQnO1xuXG4vKipcbiAqIERpZmYgdGhlIGNoaWxkcmVuIG9mIGEgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IHBhcmVudERvbSBUaGUgRE9NIGVsZW1lbnQgd2hvc2UgY2hpbGRyZW4gYXJlIGJlaW5nXG4gKiBkaWZmZWRcbiAqIEBwYXJhbSB7Q29tcG9uZW50Q2hpbGRyZW5bXX0gcmVuZGVyUmVzdWx0XG4gKiBAcGFyYW0ge1ZOb2RlfSBuZXdQYXJlbnRWTm9kZSBUaGUgbmV3IHZpcnR1YWwgbm9kZSB3aG9zZSBjaGlsZHJlbiBzaG91bGQgYmVcbiAqIGRpZmYnZWQgYWdhaW5zdCBvbGRQYXJlbnRWTm9kZVxuICogQHBhcmFtIHtWTm9kZX0gb2xkUGFyZW50Vk5vZGUgVGhlIG9sZCB2aXJ0dWFsIG5vZGUgd2hvc2UgY2hpbGRyZW4gc2hvdWxkIGJlXG4gKiBkaWZmJ2VkIGFnYWluc3QgbmV3UGFyZW50Vk5vZGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBnbG9iYWxDb250ZXh0IFRoZSBjdXJyZW50IGNvbnRleHQgb2JqZWN0IC0gbW9kaWZpZWQgYnlcbiAqIGdldENoaWxkQ29udGV4dFxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVzcGFjZSBDdXJyZW50IG5hbWVzcGFjZSBvZiB0aGUgRE9NIG5vZGUgKEhUTUwsIFNWRywgb3IgTWF0aE1MKVxuICogQHBhcmFtIHtBcnJheVx1MDAzY1ByZWFjdEVsZW1lbnRcdTAwM2V9IGV4Y2Vzc0RvbUNoaWxkcmVuXG4gKiBAcGFyYW0ge0FycmF5XHUwMDNjQ29tcG9uZW50XHUwMDNlfSBjb21taXRRdWV1ZSBMaXN0IG9mIGNvbXBvbmVudHMgd2hpY2ggaGF2ZSBjYWxsYmFja3NcbiAqIHRvIGludm9rZSBpbiBjb21taXRSb290XG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IG9sZERvbSBUaGUgY3VycmVudCBhdHRhY2hlZCBET00gZWxlbWVudCBhbnkgbmV3IGRvbVxuICogZWxlbWVudHMgc2hvdWxkIGJlIHBsYWNlZCBhcm91bmQuIExpa2VseSBgbnVsbGAgb24gZmlyc3QgcmVuZGVyIChleGNlcHQgd2hlblxuICogaHlkcmF0aW5nKS4gQ2FuIGJlIGEgc2libGluZyBET00gZWxlbWVudCB3aGVuIGRpZmZpbmcgRnJhZ21lbnRzIHRoYXQgaGF2ZVxuICogc2libGluZ3MuIEluIG1vc3QgY2FzZXMsIGl0IHN0YXJ0cyBvdXQgYXMgYG9sZENoaWxkcmVuWzBdLl9kb21gLlxuICogQHBhcmFtIHtib29sZWFufSBpc0h5ZHJhdGluZyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgaW4gaHlkcmF0aW9uXG4gKiBAcGFyYW0ge2FueVtdfSByZWZRdWV1ZSBhbiBhcnJheSBvZiBlbGVtZW50cyBuZWVkZWQgdG8gaW52b2tlIHJlZnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDaGlsZHJlbihcblx0cGFyZW50RG9tLFxuXHRyZW5kZXJSZXN1bHQsXG5cdG5ld1BhcmVudFZOb2RlLFxuXHRvbGRQYXJlbnRWTm9kZSxcblx0Z2xvYmFsQ29udGV4dCxcblx0bmFtZXNwYWNlLFxuXHRleGNlc3NEb21DaGlsZHJlbixcblx0Y29tbWl0UXVldWUsXG5cdG9sZERvbSxcblx0aXNIeWRyYXRpbmcsXG5cdHJlZlF1ZXVlXG4pIHtcblx0bGV0IGksXG5cdFx0LyoqIEB0eXBlIHtWTm9kZX0gKi9cblx0XHRvbGRWTm9kZSxcblx0XHQvKiogQHR5cGUge1ZOb2RlfSAqL1xuXHRcdGNoaWxkVk5vZGUsXG5cdFx0LyoqIEB0eXBlIHtQcmVhY3RFbGVtZW50fSAqL1xuXHRcdG5ld0RvbSxcblx0XHQvKiogQHR5cGUge1ByZWFjdEVsZW1lbnR9ICovXG5cdFx0Zmlyc3RDaGlsZERvbTtcblxuXHQvLyBUaGlzIGlzIGEgY29tcHJlc3Npb24gb2Ygb2xkUGFyZW50Vk5vZGUhPW51bGwgXHUwMDI2XHUwMDI2IG9sZFBhcmVudFZOb2RlICE9IEVNUFRZX09CSiBcdTAwMjZcdTAwMjYgb2xkUGFyZW50Vk5vZGUuX2NoaWxkcmVuIHx8IEVNUFRZX0FSUlxuXHQvLyBhcyBFTVBUWV9PQkouX2NoaWxkcmVuIHNob3VsZCBiZSBgdW5kZWZpbmVkYC5cblx0LyoqIEB0eXBlIHtWTm9kZVtdfSAqL1xuXHRsZXQgb2xkQ2hpbGRyZW4gPSAob2xkUGFyZW50Vk5vZGUgXHUwMDI2XHUwMDI2IG9sZFBhcmVudFZOb2RlLl9jaGlsZHJlbikgfHwgRU1QVFlfQVJSO1xuXG5cdGxldCBuZXdDaGlsZHJlbkxlbmd0aCA9IHJlbmRlclJlc3VsdC5sZW5ndGg7XG5cblx0bmV3UGFyZW50Vk5vZGUuX25leHREb20gPSBvbGREb207XG5cdGNvbnN0cnVjdE5ld0NoaWxkcmVuQXJyYXkobmV3UGFyZW50Vk5vZGUsIHJlbmRlclJlc3VsdCwgb2xkQ2hpbGRyZW4pO1xuXHRvbGREb20gPSBuZXdQYXJlbnRWTm9kZS5fbmV4dERvbTtcblxuXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuZXdDaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG5cdFx0Y2hpbGRWTm9kZSA9IG5ld1BhcmVudFZOb2RlLl9jaGlsZHJlbltpXTtcblx0XHRpZiAoXG5cdFx0XHRjaGlsZFZOb2RlID09IG51bGwgfHxcblx0XHRcdHR5cGVvZiBjaGlsZFZOb2RlID09ICdib29sZWFuJyB8fFxuXHRcdFx0dHlwZW9mIGNoaWxkVk5vZGUgPT0gJ2Z1bmN0aW9uJ1xuXHRcdCkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Ly8gQXQgdGhpcyBwb2ludCwgY29uc3RydWN0TmV3Q2hpbGRyZW5BcnJheSBoYXMgYXNzaWduZWQgX2luZGV4IHRvIGJlIHRoZVxuXHRcdC8vIG1hdGNoaW5nSW5kZXggZm9yIHRoaXMgVk5vZGUncyBvbGRWTm9kZSAob3IgLTEgaWYgdGhlcmUgaXMgbm8gb2xkVk5vZGUpLlxuXHRcdGlmIChjaGlsZFZOb2RlLl9pbmRleCA9PT0gLTEpIHtcblx0XHRcdG9sZFZOb2RlID0gRU1QVFlfT0JKO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvbGRWTm9kZSA9IG9sZENoaWxkcmVuW2NoaWxkVk5vZGUuX2luZGV4XSB8fCBFTVBUWV9PQko7XG5cdFx0fVxuXG5cdFx0Ly8gVXBkYXRlIGNoaWxkVk5vZGUuX2luZGV4IHRvIGl0cyBmaW5hbCBpbmRleFxuXHRcdGNoaWxkVk5vZGUuX2luZGV4ID0gaTtcblxuXHRcdC8vIE1vcnBoIHRoZSBvbGQgZWxlbWVudCBpbnRvIHRoZSBuZXcgb25lLCBidXQgZG9uJ3QgYXBwZW5kIGl0IHRvIHRoZSBkb20geWV0XG5cdFx0ZGlmZihcblx0XHRcdHBhcmVudERvbSxcblx0XHRcdGNoaWxkVk5vZGUsXG5cdFx0XHRvbGRWTm9kZSxcblx0XHRcdGdsb2JhbENvbnRleHQsXG5cdFx0XHRuYW1lc3BhY2UsXG5cdFx0XHRleGNlc3NEb21DaGlsZHJlbixcblx0XHRcdGNvbW1pdFF1ZXVlLFxuXHRcdFx0b2xkRG9tLFxuXHRcdFx0aXNIeWRyYXRpbmcsXG5cdFx0XHRyZWZRdWV1ZVxuXHRcdCk7XG5cblx0XHQvLyBBZGp1c3QgRE9NIG5vZGVzXG5cdFx0bmV3RG9tID0gY2hpbGRWTm9kZS5fZG9tO1xuXHRcdGlmIChjaGlsZFZOb2RlLnJlZiBcdTAwMjZcdTAwMjYgb2xkVk5vZGUucmVmICE9IGNoaWxkVk5vZGUucmVmKSB7XG5cdFx0XHRpZiAob2xkVk5vZGUucmVmKSB7XG5cdFx0XHRcdGFwcGx5UmVmKG9sZFZOb2RlLnJlZiwgbnVsbCwgY2hpbGRWTm9kZSk7XG5cdFx0XHR9XG5cdFx0XHRyZWZRdWV1ZS5wdXNoKFxuXHRcdFx0XHRjaGlsZFZOb2RlLnJlZixcblx0XHRcdFx0Y2hpbGRWTm9kZS5fY29tcG9uZW50IHx8IG5ld0RvbSxcblx0XHRcdFx0Y2hpbGRWTm9kZVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRpZiAoZmlyc3RDaGlsZERvbSA9PSBudWxsIFx1MDAyNlx1MDAyNiBuZXdEb20gIT0gbnVsbCkge1xuXHRcdFx0Zmlyc3RDaGlsZERvbSA9IG5ld0RvbTtcblx0XHR9XG5cblx0XHRpZiAoXG5cdFx0XHRjaGlsZFZOb2RlLl9mbGFncyBcdTAwMjYgSU5TRVJUX1ZOT0RFIHx8XG5cdFx0XHRvbGRWTm9kZS5fY2hpbGRyZW4gPT09IGNoaWxkVk5vZGUuX2NoaWxkcmVuXG5cdFx0KSB7XG5cdFx0XHRvbGREb20gPSBpbnNlcnQoY2hpbGRWTm9kZSwgb2xkRG9tLCBwYXJlbnREb20pO1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHR0eXBlb2YgY2hpbGRWTm9kZS50eXBlID09ICdmdW5jdGlvbicgXHUwMDI2XHUwMDI2XG5cdFx0XHRjaGlsZFZOb2RlLl9uZXh0RG9tICE9PSB1bmRlZmluZWRcblx0XHQpIHtcblx0XHRcdC8vIFNpbmNlIEZyYWdtZW50cyBvciBjb21wb25lbnRzIHRoYXQgcmV0dXJuIEZyYWdtZW50IGxpa2UgVk5vZGVzIGNhblxuXHRcdFx0Ly8gY29udGFpbiBtdWx0aXBsZSBET00gbm9kZXMgYXMgdGhlIHNhbWUgbGV2ZWwsIGNvbnRpbnVlIHRoZSBkaWZmIGZyb21cblx0XHRcdC8vIHRoZSBzaWJsaW5nIG9mIGxhc3QgRE9NIGNoaWxkIG9mIHRoaXMgY2hpbGQgVk5vZGVcblx0XHRcdG9sZERvbSA9IGNoaWxkVk5vZGUuX25leHREb207XG5cdFx0fSBlbHNlIGlmIChuZXdEb20pIHtcblx0XHRcdG9sZERvbSA9IG5ld0RvbS5uZXh0U2libGluZztcblx0XHR9XG5cblx0XHQvLyBFYWdlcmx5IGNsZWFudXAgX25leHREb20uIFdlIGRvbid0IG5lZWQgdG8gcGVyc2lzdCB0aGUgdmFsdWUgYmVjYXVzZSBpdFxuXHRcdC8vIGlzIG9ubHkgdXNlZCBieSBgZGlmZkNoaWxkcmVuYCB0byBkZXRlcm1pbmUgd2hlcmUgdG8gcmVzdW1lIHRoZSBkaWZmXG5cdFx0Ly8gYWZ0ZXIgZGlmZmluZyBDb21wb25lbnRzIGFuZCBGcmFnbWVudHMuIE9uY2Ugd2Ugc3RvcmUgaXQgdGhlIG5leHRET01cblx0XHQvLyBsb2NhbCB2YXIsIHdlIGNhbiBjbGVhbiB1cCB0aGUgcHJvcGVydHkuIEFsc28gcHJldmVudHMgdXMgaGFuZ2luZyBvbiB0b1xuXHRcdC8vIERPTSBub2RlcyB0aGF0IG1heSBoYXZlIGJlZW4gdW5tb3VudGVkLlxuXHRcdGNoaWxkVk5vZGUuX25leHREb20gPSB1bmRlZmluZWQ7XG5cblx0XHQvLyBVbnNldCBkaWZmaW5nIGZsYWdzXG5cdFx0Y2hpbGRWTm9kZS5fZmxhZ3MgXHUwMDI2PSB+KElOU0VSVF9WTk9ERSB8IE1BVENIRUQpO1xuXHR9XG5cblx0Ly8gVE9ETzogV2l0aCBuZXcgY2hpbGQgZGlmZmluZyBhbGdvLCBjb25zaWRlciBhbHQgd2F5cyB0byBkaWZmIEZyYWdtZW50cy5cblx0Ly8gU3VjaCBhcyBkcm9wcGluZyBvbGREb20gYW5kIG1vdmluZyBmcmFnbWVudHMgaW4gcGxhY2Vcblx0Ly9cblx0Ly8gQmVjYXVzZSB0aGUgbmV3UGFyZW50Vk5vZGUgaXMgRnJhZ21lbnQtbGlrZSwgd2UgbmVlZCB0byBzZXQgaXQnc1xuXHQvLyBfbmV4dERvbSBwcm9wZXJ0eSB0byB0aGUgbmV4dFNpYmxpbmcgb2YgaXRzIGxhc3QgY2hpbGQgRE9NIG5vZGUuXG5cdC8vXG5cdC8vIGBvbGREb21gIGNvbnRhaW5zIHRoZSBjb3JyZWN0IHZhbHVlIGhlcmUgYmVjYXVzZSBpZiB0aGUgbGFzdCBjaGlsZFxuXHQvLyBpcyBhIEZyYWdtZW50LWxpa2UsIHRoZW4gb2xkRG9tIGhhcyBhbHJlYWR5IGJlZW4gc2V0IHRvIHRoYXQgY2hpbGQncyBfbmV4dERvbS5cblx0Ly8gSWYgdGhlIGxhc3QgY2hpbGQgaXMgYSBET00gVk5vZGUsIHRoZW4gb2xkRG9tIHdpbGwgYmUgc2V0IHRvIHRoYXQgRE9NXG5cdC8vIG5vZGUncyBuZXh0U2libGluZy5cblx0bmV3UGFyZW50Vk5vZGUuX25leHREb20gPSBvbGREb207XG5cdG5ld1BhcmVudFZOb2RlLl9kb20gPSBmaXJzdENoaWxkRG9tO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Vk5vZGV9IG5ld1BhcmVudFZOb2RlXG4gKiBAcGFyYW0ge0NvbXBvbmVudENoaWxkcmVuW119IHJlbmRlclJlc3VsdFxuICogQHBhcmFtIHtWTm9kZVtdfSBvbGRDaGlsZHJlblxuICovXG5mdW5jdGlvbiBjb25zdHJ1Y3ROZXdDaGlsZHJlbkFycmF5KG5ld1BhcmVudFZOb2RlLCByZW5kZXJSZXN1bHQsIG9sZENoaWxkcmVuKSB7XG5cdC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuXHRsZXQgaTtcblx0LyoqIEB0eXBlIHtWTm9kZX0gKi9cblx0bGV0IGNoaWxkVk5vZGU7XG5cdC8qKiBAdHlwZSB7Vk5vZGV9ICovXG5cdGxldCBvbGRWTm9kZTtcblxuXHRjb25zdCBuZXdDaGlsZHJlbkxlbmd0aCA9IHJlbmRlclJlc3VsdC5sZW5ndGg7XG5cdGxldCBvbGRDaGlsZHJlbkxlbmd0aCA9IG9sZENoaWxkcmVuLmxlbmd0aCxcblx0XHRyZW1haW5pbmdPbGRDaGlsZHJlbiA9IG9sZENoaWxkcmVuTGVuZ3RoO1xuXG5cdGxldCBza2V3ID0gMDtcblxuXHRuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW4gPSBbXTtcblx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbmV3Q2hpbGRyZW5MZW5ndGg7IGkrKykge1xuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgV2UgYXJlIHJldXNpbmcgdGhlIGNoaWxkVk5vZGUgdmFyaWFibGUgdG8gaG9sZCBib3RoIHRoZVxuXHRcdC8vIHByZSBhbmQgcG9zdCBub3JtYWxpemVkIGNoaWxkVk5vZGVcblx0XHRjaGlsZFZOb2RlID0gcmVuZGVyUmVzdWx0W2ldO1xuXG5cdFx0aWYgKFxuXHRcdFx0Y2hpbGRWTm9kZSA9PSBudWxsIHx8XG5cdFx0XHR0eXBlb2YgY2hpbGRWTm9kZSA9PSAnYm9vbGVhbicgfHxcblx0XHRcdHR5cGVvZiBjaGlsZFZOb2RlID09ICdmdW5jdGlvbidcblx0XHQpIHtcblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBudWxsO1xuXHRcdH1cblx0XHQvLyBJZiB0aGlzIG5ld1ZOb2RlIGlzIGJlaW5nIHJldXNlZCAoZS5nLiBcdTAwM2NkaXZcdTAwM2V7cmV1c2V9e3JldXNlfVx1MDAzYy9kaXZcdTAwM2UpIGluIHRoZSBzYW1lIGRpZmYsXG5cdFx0Ly8gb3Igd2UgYXJlIHJlbmRlcmluZyBhIGNvbXBvbmVudCAoZS5nLiBzZXRTdGF0ZSkgY29weSB0aGUgb2xkVk5vZGVzIHNvIGl0IGNhbiBoYXZlXG5cdFx0Ly8gaXQncyBvd24gRE9NIFx1MDAyNiBldGMuIHBvaW50ZXJzXG5cdFx0ZWxzZSBpZiAoXG5cdFx0XHR0eXBlb2YgY2hpbGRWTm9kZSA9PSAnc3RyaW5nJyB8fFxuXHRcdFx0dHlwZW9mIGNoaWxkVk5vZGUgPT0gJ251bWJlcicgfHxcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2YWxpZC10eXBlb2Zcblx0XHRcdHR5cGVvZiBjaGlsZFZOb2RlID09ICdiaWdpbnQnIHx8XG5cdFx0XHRjaGlsZFZOb2RlLmNvbnN0cnVjdG9yID09IFN0cmluZ1xuXHRcdCkge1xuXHRcdFx0Y2hpbGRWTm9kZSA9IG5ld1BhcmVudFZOb2RlLl9jaGlsZHJlbltpXSA9IGNyZWF0ZVZOb2RlKFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRjaGlsZFZOb2RlLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRudWxsXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSBpZiAoaXNBcnJheShjaGlsZFZOb2RlKSkge1xuXHRcdFx0Y2hpbGRWTm9kZSA9IG5ld1BhcmVudFZOb2RlLl9jaGlsZHJlbltpXSA9IGNyZWF0ZVZOb2RlKFxuXHRcdFx0XHRGcmFnbWVudCxcblx0XHRcdFx0eyBjaGlsZHJlbjogY2hpbGRWTm9kZSB9LFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRudWxsXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSBpZiAoY2hpbGRWTm9kZS5jb25zdHJ1Y3RvciA9PT0gdW5kZWZpbmVkIFx1MDAyNlx1MDAyNiBjaGlsZFZOb2RlLl9kZXB0aCBcdTAwM2UgMCkge1xuXHRcdFx0Ly8gVk5vZGUgaXMgYWxyZWFkeSBpbiB1c2UsIGNsb25lIGl0LiBUaGlzIGNhbiBoYXBwZW4gaW4gdGhlIGZvbGxvd2luZ1xuXHRcdFx0Ly8gc2NlbmFyaW86XG5cdFx0XHQvLyAgIGNvbnN0IHJldXNlID0gXHUwMDNjZGl2IC9cdTAwM2Vcblx0XHRcdC8vICAgXHUwMDNjZGl2XHUwMDNle3JldXNlfVx1MDAzY3NwYW4gL1x1MDAzZXtyZXVzZX1cdTAwM2MvZGl2XHUwMDNlXG5cdFx0XHRjaGlsZFZOb2RlID0gbmV3UGFyZW50Vk5vZGUuX2NoaWxkcmVuW2ldID0gY3JlYXRlVk5vZGUoXG5cdFx0XHRcdGNoaWxkVk5vZGUudHlwZSxcblx0XHRcdFx0Y2hpbGRWTm9kZS5wcm9wcyxcblx0XHRcdFx0Y2hpbGRWTm9kZS5rZXksXG5cdFx0XHRcdGNoaWxkVk5vZGUucmVmID8gY2hpbGRWTm9kZS5yZWYgOiBudWxsLFxuXHRcdFx0XHRjaGlsZFZOb2RlLl9vcmlnaW5hbFxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y2hpbGRWTm9kZSA9IG5ld1BhcmVudFZOb2RlLl9jaGlsZHJlbltpXSA9IGNoaWxkVk5vZGU7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc2tld2VkSW5kZXggPSBpICsgc2tldztcblxuXHRcdC8vIEhhbmRsZSB1bm1vdW50aW5nIG51bGwgcGxhY2Vob2xkZXJzLCBpLmUuIFZOb2RlID1cdTAwM2UgbnVsbCBpbiB1bmtleWVkIGNoaWxkcmVuXG5cdFx0aWYgKGNoaWxkVk5vZGUgPT0gbnVsbCkge1xuXHRcdFx0b2xkVk5vZGUgPSBvbGRDaGlsZHJlbltza2V3ZWRJbmRleF07XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9sZFZOb2RlIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHRvbGRWTm9kZS5rZXkgPT0gbnVsbCBcdTAwMjZcdTAwMjZcblx0XHRcdFx0b2xkVk5vZGUuX2RvbSBcdTAwMjZcdTAwMjZcblx0XHRcdFx0KG9sZFZOb2RlLl9mbGFncyBcdTAwMjYgTUFUQ0hFRCkgPT09IDBcblx0XHRcdCkge1xuXHRcdFx0XHRpZiAob2xkVk5vZGUuX2RvbSA9PSBuZXdQYXJlbnRWTm9kZS5fbmV4dERvbSkge1xuXHRcdFx0XHRcdG5ld1BhcmVudFZOb2RlLl9uZXh0RG9tID0gZ2V0RG9tU2libGluZyhvbGRWTm9kZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR1bm1vdW50KG9sZFZOb2RlLCBvbGRWTm9kZSwgZmFsc2UpO1xuXG5cdFx0XHRcdC8vIEV4cGxpY2l0bHkgbnVsbGlmeSB0aGlzIHBvc2l0aW9uIGluIG9sZENoaWxkcmVuIGluc3RlYWQgb2YganVzdFxuXHRcdFx0XHQvLyBzZXR0aW5nIGBfbWF0Y2g9dHJ1ZWAgdG8gcHJldmVudCBvdGhlciByb3V0aW5lcyAoZS5nLlxuXHRcdFx0XHQvLyBgZmluZE1hdGNoaW5nSW5kZXhgIG9yIGBnZXREb21TaWJsaW5nYCkgZnJvbSB0aGlua2luZyBWTm9kZXMgb3IgRE9NXG5cdFx0XHRcdC8vIG5vZGVzIGluIHRoaXMgcG9zaXRpb24gYXJlIHN0aWxsIGF2YWlsYWJsZSB0byBiZSB1c2VkIGluIGRpZmZpbmcgd2hlblxuXHRcdFx0XHQvLyB0aGV5IGhhdmUgYWN0dWFsbHkgYWxyZWFkeSBiZWVuIHVubW91bnRlZC4gRm9yIGV4YW1wbGUsIGJ5IG9ubHlcblx0XHRcdFx0Ly8gc2V0dGluZyBgX21hdGNoPXRydWVgIGhlcmUsIHRoZSB1bm1vdW50aW5nIGxvb3AgbGF0ZXIgd291bGQgYXR0ZW1wdFxuXHRcdFx0XHQvLyB0byB1bm1vdW50IHRoaXMgVk5vZGUgYWdhaW4gc2VlaW5nIGBfbWF0Y2g9PXRydWVgLiAgRnVydGhlcixcblx0XHRcdFx0Ly8gZ2V0RG9tU2libGluZyBkb2Vzbid0IGtub3cgYWJvdXQgX21hdGNoIGFuZCBzbyB3b3VsZCBpbmNvcnJlY3RseVxuXHRcdFx0XHQvLyBhc3N1bWUgRE9NIG5vZGVzIGluIHRoaXMgc3VidHJlZSBhcmUgbW91bnRlZCBhbmQgdXNhYmxlLlxuXHRcdFx0XHRvbGRDaGlsZHJlbltza2V3ZWRJbmRleF0gPSBudWxsO1xuXHRcdFx0XHRyZW1haW5pbmdPbGRDaGlsZHJlbi0tO1xuXHRcdFx0fVxuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Y2hpbGRWTm9kZS5fcGFyZW50ID0gbmV3UGFyZW50Vk5vZGU7XG5cdFx0Y2hpbGRWTm9kZS5fZGVwdGggPSBuZXdQYXJlbnRWTm9kZS5fZGVwdGggKyAxO1xuXG5cdFx0Y29uc3QgbWF0Y2hpbmdJbmRleCA9IGZpbmRNYXRjaGluZ0luZGV4KFxuXHRcdFx0Y2hpbGRWTm9kZSxcblx0XHRcdG9sZENoaWxkcmVuLFxuXHRcdFx0c2tld2VkSW5kZXgsXG5cdFx0XHRyZW1haW5pbmdPbGRDaGlsZHJlblxuXHRcdCk7XG5cblx0XHQvLyBUZW1wb3JhcmlseSBzdG9yZSB0aGUgbWF0Y2hpbmdJbmRleCBvbiB0aGUgX2luZGV4IHByb3BlcnR5IHNvIHdlIGNhbiBwdWxsXG5cdFx0Ly8gb3V0IHRoZSBvbGRWTm9kZSBpbiBkaWZmQ2hpbGRyZW4uIFdlJ2xsIG92ZXJyaWRlIHRoaXMgdG8gdGhlIFZOb2RlJ3Ncblx0XHQvLyBmaW5hbCBpbmRleCBhZnRlciB1c2luZyB0aGlzIHByb3BlcnR5IHRvIGdldCB0aGUgb2xkVk5vZGVcblx0XHRjaGlsZFZOb2RlLl9pbmRleCA9IG1hdGNoaW5nSW5kZXg7XG5cblx0XHRvbGRWTm9kZSA9IG51bGw7XG5cdFx0aWYgKG1hdGNoaW5nSW5kZXggIT09IC0xKSB7XG5cdFx0XHRvbGRWTm9kZSA9IG9sZENoaWxkcmVuW21hdGNoaW5nSW5kZXhdO1xuXHRcdFx0cmVtYWluaW5nT2xkQ2hpbGRyZW4tLTtcblx0XHRcdGlmIChvbGRWTm9kZSkge1xuXHRcdFx0XHRvbGRWTm9kZS5fZmxhZ3MgfD0gTUFUQ0hFRDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBIZXJlLCB3ZSBkZWZpbmUgaXNNb3VudGluZyBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoZSBza2V3IGRpZmZpbmdcblx0XHQvLyBhbGdvcml0aG0uIE5vZGVzIHRoYXQgYXJlIHVuc3VzcGVuZGluZyBhcmUgY29uc2lkZXJlZCBtb3VudGluZyBhbmQgd2UgZGV0ZWN0XG5cdFx0Ly8gdGhpcyBieSBjaGVja2luZyBpZiBvbGRWTm9kZS5fb3JpZ2luYWwgPT09IG51bGxcblx0XHRjb25zdCBpc01vdW50aW5nID0gb2xkVk5vZGUgPT0gbnVsbCB8fCBvbGRWTm9kZS5fb3JpZ2luYWwgPT09IG51bGw7XG5cblx0XHRpZiAoaXNNb3VudGluZykge1xuXHRcdFx0aWYgKG1hdGNoaW5nSW5kZXggPT0gLTEpIHtcblx0XHRcdFx0c2tldy0tO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiB3ZSBhcmUgbW91bnRpbmcgYSBET00gVk5vZGUsIG1hcmsgaXQgZm9yIGluc2VydGlvblxuXHRcdFx0aWYgKHR5cGVvZiBjaGlsZFZOb2RlLnR5cGUgIT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRjaGlsZFZOb2RlLl9mbGFncyB8PSBJTlNFUlRfVk5PREU7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChtYXRjaGluZ0luZGV4ICE9PSBza2V3ZWRJbmRleCkge1xuXHRcdFx0aWYgKG1hdGNoaW5nSW5kZXggPT0gc2tld2VkSW5kZXggLSAxKSB7XG5cdFx0XHRcdHNrZXcgPSBtYXRjaGluZ0luZGV4IC0gc2tld2VkSW5kZXg7XG5cdFx0XHR9IGVsc2UgaWYgKG1hdGNoaW5nSW5kZXggPT0gc2tld2VkSW5kZXggKyAxKSB7XG5cdFx0XHRcdHNrZXcrKztcblx0XHRcdH0gZWxzZSBpZiAobWF0Y2hpbmdJbmRleCBcdTAwM2Ugc2tld2VkSW5kZXgpIHtcblx0XHRcdFx0Ly8gT3VyIG1hdGNoZWQgRE9NLW5vZGUgaXMgZnVydGhlciBpbiB0aGUgbGlzdCBvZiBjaGlsZHJlbiB0aGFuXG5cdFx0XHRcdC8vIHdoZXJlIGl0J3MgYXQgbm93LlxuXG5cdFx0XHRcdC8vIFdoZW4gdGhlIHJlbWFpbmluZyBvbGQgY2hpbGRyZW4gaXMgYmlnZ2VyIHRoYW4gdGhlIG5ldy1jaGlsZHJlblxuXHRcdFx0XHQvLyBtaW51cyBvdXIgc2tld2VkIGluZGV4IHdlIGtub3cgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIHNocmlua2luZyBsaXN0XG5cdFx0XHRcdC8vIHdlIGhhdmUgdG8gaW5jcmVhc2Ugb3VyIHNrZXcgd2l0aCB0aGUgbWF0Y2hlZEluZGV4IC0gdGhlIHNrZXdlZCBpbmRleFxuXHRcdFx0XHRpZiAocmVtYWluaW5nT2xkQ2hpbGRyZW4gXHUwMDNlIG5ld0NoaWxkcmVuTGVuZ3RoIC0gc2tld2VkSW5kZXgpIHtcblx0XHRcdFx0XHRza2V3ICs9IG1hdGNoaW5nSW5kZXggLSBza2V3ZWRJbmRleDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBJZiB3ZSBoYXZlIG1hdGNoZWQgYWxsIHRoZSBjaGlsZHJlbiBqdXN0IGRlY3JlYXNlIHRoZSBza2V3XG5cdFx0XHRcdFx0c2tldy0tO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKG1hdGNoaW5nSW5kZXggXHUwMDNjIHNrZXdlZEluZGV4KSB7XG5cdFx0XHRcdC8vIFdoZW4gb3VyIG5ldyBwb3NpdGlvbiBpcyBpbiBmcm9udCBvZiBvdXIgb2xkIHBvc2l0aW9uIHRoYW4gd2UgaW5jcmVhc2UgdGhlIHNrZXdcblx0XHRcdFx0c2tldysrO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNb3ZlIHRoaXMgVk5vZGUncyBET00gaWYgdGhlIG9yaWdpbmFsIGluZGV4IChtYXRjaGluZ0luZGV4KSBkb2Vzbid0XG5cdFx0XHQvLyBtYXRjaCB0aGUgbmV3IHNrZXcgaW5kZXggKGkgKyBuZXcgc2tldylcblx0XHRcdGlmIChtYXRjaGluZ0luZGV4ICE9PSBpICsgc2tldykge1xuXHRcdFx0XHRjaGlsZFZOb2RlLl9mbGFncyB8PSBJTlNFUlRfVk5PREU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmVtb3ZlIHJlbWFpbmluZyBvbGRDaGlsZHJlbiBpZiB0aGVyZSBhcmUgYW55LiBMb29wIGZvcndhcmRzIHNvIHRoYXQgYXMgd2Vcblx0Ly8gdW5tb3VudCBET00gZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBvbGRDaGlsZHJlbiwgd2UgY2FuIGFkanVzdCBvbGREb20gdG9cblx0Ly8gcG9pbnQgdG8gdGhlIG5leHQgY2hpbGQsIHdoaWNoIG5lZWRzIHRvIGJlIHRoZSBmaXJzdCBET00gbm9kZSB0aGF0IHdvbid0IGJlXG5cdC8vIHVubW91bnRlZC5cblx0aWYgKHJlbWFpbmluZ09sZENoaWxkcmVuKSB7XG5cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgb2xkQ2hpbGRyZW5MZW5ndGg7IGkrKykge1xuXHRcdFx0b2xkVk5vZGUgPSBvbGRDaGlsZHJlbltpXTtcblx0XHRcdGlmIChvbGRWTm9kZSAhPSBudWxsIFx1MDAyNlx1MDAyNiAob2xkVk5vZGUuX2ZsYWdzIFx1MDAyNiBNQVRDSEVEKSA9PT0gMCkge1xuXHRcdFx0XHRpZiAob2xkVk5vZGUuX2RvbSA9PSBuZXdQYXJlbnRWTm9kZS5fbmV4dERvbSkge1xuXHRcdFx0XHRcdG5ld1BhcmVudFZOb2RlLl9uZXh0RG9tID0gZ2V0RG9tU2libGluZyhvbGRWTm9kZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR1bm1vdW50KG9sZFZOb2RlLCBvbGRWTm9kZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtWTm9kZX0gcGFyZW50Vk5vZGVcbiAqIEBwYXJhbSB7UHJlYWN0RWxlbWVudH0gb2xkRG9tXG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IHBhcmVudERvbVxuICogQHJldHVybnMge1ByZWFjdEVsZW1lbnR9XG4gKi9cbmZ1bmN0aW9uIGluc2VydChwYXJlbnRWTm9kZSwgb2xkRG9tLCBwYXJlbnREb20pIHtcblx0Ly8gTm90ZTogVk5vZGVzIGluIG5lc3RlZCBzdXNwZW5kZWQgdHJlZXMgbWF5IGJlIG1pc3NpbmcgX2NoaWxkcmVuLlxuXG5cdGlmICh0eXBlb2YgcGFyZW50Vk5vZGUudHlwZSA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0bGV0IGNoaWxkcmVuID0gcGFyZW50Vk5vZGUuX2NoaWxkcmVuO1xuXHRcdGZvciAobGV0IGkgPSAwOyBjaGlsZHJlbiBcdTAwMjZcdTAwMjYgaSBcdTAwM2MgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGlmIChjaGlsZHJlbltpXSkge1xuXHRcdFx0XHQvLyBJZiB3ZSBlbnRlciB0aGlzIGNvZGUgcGF0aCBvbiBzQ1UgYmFpbG91dCwgd2hlcmUgd2UgY29weVxuXHRcdFx0XHQvLyBvbGRWTm9kZS5fY2hpbGRyZW4gdG8gbmV3Vk5vZGUuX2NoaWxkcmVuLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgb2xkXG5cdFx0XHRcdC8vIGNoaWxkcmVuJ3MgX3BhcmVudCBwb2ludGVyIHRvIHBvaW50IHRvIHRoZSBuZXdWTm9kZSAocGFyZW50Vk5vZGVcblx0XHRcdFx0Ly8gaGVyZSkuXG5cdFx0XHRcdGNoaWxkcmVuW2ldLl9wYXJlbnQgPSBwYXJlbnRWTm9kZTtcblx0XHRcdFx0b2xkRG9tID0gaW5zZXJ0KGNoaWxkcmVuW2ldLCBvbGREb20sIHBhcmVudERvbSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG9sZERvbTtcblx0fSBlbHNlIGlmIChwYXJlbnRWTm9kZS5fZG9tICE9IG9sZERvbSkge1xuXHRcdGlmIChcblx0XHRcdG9sZERvbSBcdTAwMjZcdTAwMjZcblx0XHRcdHBhcmVudFZOb2RlLnR5cGUgXHUwMDI2XHUwMDI2XG5cdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIG9sRG9tIHNob3VsZCBiZSBwcmVzZW50IG9uIGEgRE9NIG5vZGVcblx0XHRcdCFwYXJlbnREb20uY29udGFpbnMob2xkRG9tKVxuXHRcdCkge1xuXHRcdFx0b2xkRG9tID0gZ2V0RG9tU2libGluZyhwYXJlbnRWTm9kZSk7XG5cdFx0fVxuXHRcdHBhcmVudERvbS5pbnNlcnRCZWZvcmUocGFyZW50Vk5vZGUuX2RvbSwgb2xkRG9tIHx8IG51bGwpO1xuXHRcdG9sZERvbSA9IHBhcmVudFZOb2RlLl9kb207XG5cdH1cblxuXHRkbyB7XG5cdFx0b2xkRG9tID0gb2xkRG9tIFx1MDAyNlx1MDAyNiBvbGREb20ubmV4dFNpYmxpbmc7XG5cdH0gd2hpbGUgKG9sZERvbSAhPSBudWxsIFx1MDAyNlx1MDAyNiBvbGREb20ubm9kZVR5cGUgPT09IDgpO1xuXG5cdHJldHVybiBvbGREb207XG59XG5cbi8qKlxuICogRmxhdHRlbiBhbmQgbG9vcCB0aHJvdWdoIHRoZSBjaGlsZHJlbiBvZiBhIHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtDb21wb25lbnRDaGlsZHJlbn0gY2hpbGRyZW4gVGhlIHVuZmxhdHRlbmVkIGNoaWxkcmVuIG9mIGEgdmlydHVhbFxuICogbm9kZVxuICogQHJldHVybnMge1ZOb2RlW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0NoaWxkQXJyYXkoY2hpbGRyZW4sIG91dCkge1xuXHRvdXQgPSBvdXQgfHwgW107XG5cdGlmIChjaGlsZHJlbiA9PSBudWxsIHx8IHR5cGVvZiBjaGlsZHJlbiA9PSAnYm9vbGVhbicpIHtcblx0fSBlbHNlIGlmIChpc0FycmF5KGNoaWxkcmVuKSkge1xuXHRcdGNoaWxkcmVuLnNvbWUoY2hpbGQgPVx1MDAzZSB7XG5cdFx0XHR0b0NoaWxkQXJyYXkoY2hpbGQsIG91dCk7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0b3V0LnB1c2goY2hpbGRyZW4pO1xuXHR9XG5cdHJldHVybiBvdXQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtWTm9kZX0gY2hpbGRWTm9kZVxuICogQHBhcmFtIHtWTm9kZVtdfSBvbGRDaGlsZHJlblxuICogQHBhcmFtIHtudW1iZXJ9IHNrZXdlZEluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gcmVtYWluaW5nT2xkQ2hpbGRyZW5cbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIGZpbmRNYXRjaGluZ0luZGV4KFxuXHRjaGlsZFZOb2RlLFxuXHRvbGRDaGlsZHJlbixcblx0c2tld2VkSW5kZXgsXG5cdHJlbWFpbmluZ09sZENoaWxkcmVuXG4pIHtcblx0Y29uc3Qga2V5ID0gY2hpbGRWTm9kZS5rZXk7XG5cdGNvbnN0IHR5cGUgPSBjaGlsZFZOb2RlLnR5cGU7XG5cdGxldCB4ID0gc2tld2VkSW5kZXggLSAxO1xuXHRsZXQgeSA9IHNrZXdlZEluZGV4ICsgMTtcblx0bGV0IG9sZFZOb2RlID0gb2xkQ2hpbGRyZW5bc2tld2VkSW5kZXhdO1xuXG5cdC8vIFdlIG9ubHkgbmVlZCB0byBwZXJmb3JtIGEgc2VhcmNoIGlmIHRoZXJlIGFyZSBtb3JlIGNoaWxkcmVuXG5cdC8vIChyZW1haW5pbmdPbGRDaGlsZHJlbikgdG8gc2VhcmNoLiBIb3dldmVyLCBpZiB0aGUgb2xkVk5vZGUgd2UganVzdCBsb29rZWRcblx0Ly8gYXQgc2tld2VkSW5kZXggd2FzIG5vdCBhbHJlYWR5IHVzZWQgaW4gdGhpcyBkaWZmLCB0aGVuIHRoZXJlIG11c3QgYmUgYXRcblx0Ly8gbGVhc3QgMSBvdGhlciAoc28gZ3JlYXRlciB0aGFuIDEpIHJlbWFpbmluZ09sZENoaWxkcmVuIHRvIGF0dGVtcHQgdG8gbWF0Y2hcblx0Ly8gYWdhaW5zdC4gU28gdGhlIGZvbGxvd2luZyBjb25kaXRpb24gY2hlY2tzIHRoYXQgZW5zdXJpbmdcblx0Ly8gcmVtYWluaW5nT2xkQ2hpbGRyZW4gXHUwMDNlIDEgaWYgdGhlIG9sZFZOb2RlIGlzIG5vdCBhbHJlYWR5IHVzZWQvbWF0Y2hlZC4gRWxzZVxuXHQvLyBpZiB0aGUgb2xkVk5vZGUgd2FzIG51bGwgb3IgbWF0Y2hlZCwgdGhlbiB0aGVyZSBjb3VsZCBuZWVkcyB0byBiZSBhdCBsZWFzdFxuXHQvLyAxIChha2EgYHJlbWFpbmluZ09sZENoaWxkcmVuIFx1MDAzZSAwYCkgY2hpbGRyZW4gdG8gZmluZCBhbmQgY29tcGFyZSBhZ2FpbnN0LlxuXHRsZXQgc2hvdWxkU2VhcmNoID1cblx0XHRyZW1haW5pbmdPbGRDaGlsZHJlbiBcdTAwM2Vcblx0XHQob2xkVk5vZGUgIT0gbnVsbCBcdTAwMjZcdTAwMjYgKG9sZFZOb2RlLl9mbGFncyBcdTAwMjYgTUFUQ0hFRCkgPT09IDAgPyAxIDogMCk7XG5cblx0aWYgKFxuXHRcdG9sZFZOb2RlID09PSBudWxsIHx8XG5cdFx0KG9sZFZOb2RlIFx1MDAyNlx1MDAyNlxuXHRcdFx0a2V5ID09IG9sZFZOb2RlLmtleSBcdTAwMjZcdTAwMjZcblx0XHRcdHR5cGUgPT09IG9sZFZOb2RlLnR5cGUgXHUwMDI2XHUwMDI2XG5cdFx0XHQob2xkVk5vZGUuX2ZsYWdzIFx1MDAyNiBNQVRDSEVEKSA9PT0gMClcblx0KSB7XG5cdFx0cmV0dXJuIHNrZXdlZEluZGV4O1xuXHR9IGVsc2UgaWYgKHNob3VsZFNlYXJjaCkge1xuXHRcdHdoaWxlICh4IFx1MDAzZT0gMCB8fCB5IFx1MDAzYyBvbGRDaGlsZHJlbi5sZW5ndGgpIHtcblx0XHRcdGlmICh4IFx1MDAzZT0gMCkge1xuXHRcdFx0XHRvbGRWTm9kZSA9IG9sZENoaWxkcmVuW3hdO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0b2xkVk5vZGUgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdFx0KG9sZFZOb2RlLl9mbGFncyBcdTAwMjYgTUFUQ0hFRCkgPT09IDAgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdFx0a2V5ID09IG9sZFZOb2RlLmtleSBcdTAwMjZcdTAwMjZcblx0XHRcdFx0XHR0eXBlID09PSBvbGRWTm9kZS50eXBlXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybiB4O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHgtLTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHkgXHUwMDNjIG9sZENoaWxkcmVuLmxlbmd0aCkge1xuXHRcdFx0XHRvbGRWTm9kZSA9IG9sZENoaWxkcmVuW3ldO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0b2xkVk5vZGUgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdFx0KG9sZFZOb2RlLl9mbGFncyBcdTAwMjYgTUFUQ0hFRCkgPT09IDAgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdFx0a2V5ID09IG9sZFZOb2RlLmtleSBcdTAwMjZcdTAwMjZcblx0XHRcdFx0XHR0eXBlID09PSBvbGRWTm9kZS50eXBlXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybiB5O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHkrKztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gLTE7XG59XG4iLCAiaW1wb3J0IHtcblx0RU1QVFlfT0JKLFxuXHRNT0RFX0hZRFJBVEUsXG5cdE1PREVfU1VTUEVOREVELFxuXHRSRVNFVF9NT0RFXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBnZXREb21TaWJsaW5nIH0gZnJvbSAnLi4vY29tcG9uZW50JztcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSAnLi4vY3JlYXRlLWVsZW1lbnQnO1xuaW1wb3J0IHsgZGlmZkNoaWxkcmVuIH0gZnJvbSAnLi9jaGlsZHJlbic7XG5pbXBvcnQgeyBzZXRQcm9wZXJ0eSB9IGZyb20gJy4vcHJvcHMnO1xuaW1wb3J0IHsgYXNzaWduLCBpc0FycmF5LCByZW1vdmVOb2RlLCBzbGljZSB9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IG9wdGlvbnMgZnJvbSAnLi4vb3B0aW9ucyc7XG5cbi8qKlxuICogRGlmZiB0d28gdmlydHVhbCBub2RlcyBhbmQgYXBwbHkgcHJvcGVyIGNoYW5nZXMgdG8gdGhlIERPTVxuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50fSBwYXJlbnREb20gVGhlIHBhcmVudCBvZiB0aGUgRE9NIGVsZW1lbnRcbiAqIEBwYXJhbSB7Vk5vZGV9IG5ld1ZOb2RlIFRoZSBuZXcgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge1ZOb2RlfSBvbGRWTm9kZSBUaGUgb2xkIHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtvYmplY3R9IGdsb2JhbENvbnRleHQgVGhlIGN1cnJlbnQgY29udGV4dCBvYmplY3QuIE1vZGlmaWVkIGJ5XG4gKiBnZXRDaGlsZENvbnRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lc3BhY2UgQ3VycmVudCBuYW1lc3BhY2Ugb2YgdGhlIERPTSBub2RlIChIVE1MLCBTVkcsIG9yIE1hdGhNTClcbiAqIEBwYXJhbSB7QXJyYXlcdTAwM2NQcmVhY3RFbGVtZW50XHUwMDNlfSBleGNlc3NEb21DaGlsZHJlblxuICogQHBhcmFtIHtBcnJheVx1MDAzY0NvbXBvbmVudFx1MDAzZX0gY29tbWl0UXVldWUgTGlzdCBvZiBjb21wb25lbnRzIHdoaWNoIGhhdmUgY2FsbGJhY2tzXG4gKiB0byBpbnZva2UgaW4gY29tbWl0Um9vdFxuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50fSBvbGREb20gVGhlIGN1cnJlbnQgYXR0YWNoZWQgRE9NIGVsZW1lbnQgYW55IG5ldyBkb21cbiAqIGVsZW1lbnRzIHNob3VsZCBiZSBwbGFjZWQgYXJvdW5kLiBMaWtlbHkgYG51bGxgIG9uIGZpcnN0IHJlbmRlciAoZXhjZXB0IHdoZW5cbiAqIGh5ZHJhdGluZykuIENhbiBiZSBhIHNpYmxpbmcgRE9NIGVsZW1lbnQgd2hlbiBkaWZmaW5nIEZyYWdtZW50cyB0aGF0IGhhdmVcbiAqIHNpYmxpbmdzLiBJbiBtb3N0IGNhc2VzLCBpdCBzdGFydHMgb3V0IGFzIGBvbGRDaGlsZHJlblswXS5fZG9tYC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNIeWRyYXRpbmcgV2hldGhlciBvciBub3Qgd2UgYXJlIGluIGh5ZHJhdGlvblxuICogQHBhcmFtIHthbnlbXX0gcmVmUXVldWUgYW4gYXJyYXkgb2YgZWxlbWVudHMgbmVlZGVkIHRvIGludm9rZSByZWZzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmKFxuXHRwYXJlbnREb20sXG5cdG5ld1ZOb2RlLFxuXHRvbGRWTm9kZSxcblx0Z2xvYmFsQ29udGV4dCxcblx0bmFtZXNwYWNlLFxuXHRleGNlc3NEb21DaGlsZHJlbixcblx0Y29tbWl0UXVldWUsXG5cdG9sZERvbSxcblx0aXNIeWRyYXRpbmcsXG5cdHJlZlF1ZXVlXG4pIHtcblx0LyoqIEB0eXBlIHthbnl9ICovXG5cdGxldCB0bXAsXG5cdFx0bmV3VHlwZSA9IG5ld1ZOb2RlLnR5cGU7XG5cblx0Ly8gV2hlbiBwYXNzaW5nIHRocm91Z2ggY3JlYXRlRWxlbWVudCBpdCBhc3NpZ25zIHRoZSBvYmplY3Rcblx0Ly8gY29uc3RydWN0b3IgYXMgdW5kZWZpbmVkLiBUaGlzIHRvIHByZXZlbnQgSlNPTi1pbmplY3Rpb24uXG5cdGlmIChuZXdWTm9kZS5jb25zdHJ1Y3RvciAhPT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbDtcblxuXHQvLyBJZiB0aGUgcHJldmlvdXMgZGlmZiBiYWlsZWQgb3V0LCByZXN1bWUgY3JlYXRpbmcvaHlkcmF0aW5nLlxuXHRpZiAob2xkVk5vZGUuX2ZsYWdzIFx1MDAyNiBNT0RFX1NVU1BFTkRFRCkge1xuXHRcdGlzSHlkcmF0aW5nID0gISEob2xkVk5vZGUuX2ZsYWdzIFx1MDAyNiBNT0RFX0hZRFJBVEUpO1xuXHRcdG9sZERvbSA9IG5ld1ZOb2RlLl9kb20gPSBvbGRWTm9kZS5fZG9tO1xuXHRcdGV4Y2Vzc0RvbUNoaWxkcmVuID0gW29sZERvbV07XG5cdH1cblxuXHRpZiAoKHRtcCA9IG9wdGlvbnMuX2RpZmYpKSB0bXAobmV3Vk5vZGUpO1xuXG5cdG91dGVyOiBpZiAodHlwZW9mIG5ld1R5cGUgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdHRyeSB7XG5cdFx0XHRsZXQgYywgaXNOZXcsIG9sZFByb3BzLCBvbGRTdGF0ZSwgc25hcHNob3QsIGNsZWFyUHJvY2Vzc2luZ0V4Y2VwdGlvbjtcblx0XHRcdGxldCBuZXdQcm9wcyA9IG5ld1ZOb2RlLnByb3BzO1xuXHRcdFx0Y29uc3QgaXNDbGFzc0NvbXBvbmVudCA9XG5cdFx0XHRcdCdwcm90b3R5cGUnIGluIG5ld1R5cGUgXHUwMDI2XHUwMDI2IG5ld1R5cGUucHJvdG90eXBlLnJlbmRlcjtcblxuXHRcdFx0Ly8gTmVjZXNzYXJ5IGZvciBjcmVhdGVDb250ZXh0IGFwaS4gU2V0dGluZyB0aGlzIHByb3BlcnR5IHdpbGwgcGFzc1xuXHRcdFx0Ly8gdGhlIGNvbnRleHQgdmFsdWUgYXMgYHRoaXMuY29udGV4dGAganVzdCBmb3IgdGhpcyBjb21wb25lbnQuXG5cdFx0XHR0bXAgPSBuZXdUeXBlLmNvbnRleHRUeXBlO1xuXHRcdFx0bGV0IHByb3ZpZGVyID0gdG1wIFx1MDAyNlx1MDAyNiBnbG9iYWxDb250ZXh0W3RtcC5faWRdO1xuXHRcdFx0bGV0IGNvbXBvbmVudENvbnRleHQgPSB0bXBcblx0XHRcdFx0PyBwcm92aWRlclxuXHRcdFx0XHRcdD8gcHJvdmlkZXIucHJvcHMudmFsdWVcblx0XHRcdFx0XHQ6IHRtcC5fZGVmYXVsdFZhbHVlXG5cdFx0XHRcdDogZ2xvYmFsQ29udGV4dDtcblxuXHRcdFx0Ly8gR2V0IGNvbXBvbmVudCBhbmQgc2V0IGl0IHRvIGBjYFxuXHRcdFx0aWYgKG9sZFZOb2RlLl9jb21wb25lbnQpIHtcblx0XHRcdFx0YyA9IG5ld1ZOb2RlLl9jb21wb25lbnQgPSBvbGRWTm9kZS5fY29tcG9uZW50O1xuXHRcdFx0XHRjbGVhclByb2Nlc3NpbmdFeGNlcHRpb24gPSBjLl9wcm9jZXNzaW5nRXhjZXB0aW9uID0gYy5fcGVuZGluZ0Vycm9yO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gSW5zdGFudGlhdGUgdGhlIG5ldyBjb21wb25lbnRcblx0XHRcdFx0aWYgKGlzQ2xhc3NDb21wb25lbnQpIHtcblx0XHRcdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIFRoZSBjaGVjayBhYm92ZSB2ZXJpZmllcyB0aGF0IG5ld1R5cGUgaXMgc3VwcG9zZSB0byBiZSBjb25zdHJ1Y3RlZFxuXHRcdFx0XHRcdG5ld1ZOb2RlLl9jb21wb25lbnQgPSBjID0gbmV3IG5ld1R5cGUobmV3UHJvcHMsIGNvbXBvbmVudENvbnRleHQpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXBcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIFRydXN0IG1lLCBDb21wb25lbnQgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlIHdlIHdhbnRcblx0XHRcdFx0XHRuZXdWTm9kZS5fY29tcG9uZW50ID0gYyA9IG5ldyBCYXNlQ29tcG9uZW50KFxuXHRcdFx0XHRcdFx0bmV3UHJvcHMsXG5cdFx0XHRcdFx0XHRjb21wb25lbnRDb250ZXh0XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRjLmNvbnN0cnVjdG9yID0gbmV3VHlwZTtcblx0XHRcdFx0XHRjLnJlbmRlciA9IGRvUmVuZGVyO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChwcm92aWRlcikgcHJvdmlkZXIuc3ViKGMpO1xuXG5cdFx0XHRcdGMucHJvcHMgPSBuZXdQcm9wcztcblx0XHRcdFx0aWYgKCFjLnN0YXRlKSBjLnN0YXRlID0ge307XG5cdFx0XHRcdGMuY29udGV4dCA9IGNvbXBvbmVudENvbnRleHQ7XG5cdFx0XHRcdGMuX2dsb2JhbENvbnRleHQgPSBnbG9iYWxDb250ZXh0O1xuXHRcdFx0XHRpc05ldyA9IGMuX2RpcnR5ID0gdHJ1ZTtcblx0XHRcdFx0Yy5fcmVuZGVyQ2FsbGJhY2tzID0gW107XG5cdFx0XHRcdGMuX3N0YXRlQ2FsbGJhY2tzID0gW107XG5cdFx0XHR9XG5cblx0XHRcdC8vIEludm9rZSBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcblx0XHRcdGlmIChpc0NsYXNzQ29tcG9uZW50IFx1MDAyNlx1MDAyNiBjLl9uZXh0U3RhdGUgPT0gbnVsbCkge1xuXHRcdFx0XHRjLl9uZXh0U3RhdGUgPSBjLnN0YXRlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaXNDbGFzc0NvbXBvbmVudCBcdTAwMjZcdTAwMjYgbmV3VHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgIT0gbnVsbCkge1xuXHRcdFx0XHRpZiAoYy5fbmV4dFN0YXRlID09IGMuc3RhdGUpIHtcblx0XHRcdFx0XHRjLl9uZXh0U3RhdGUgPSBhc3NpZ24oe30sIGMuX25leHRTdGF0ZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRhc3NpZ24oXG5cdFx0XHRcdFx0Yy5fbmV4dFN0YXRlLFxuXHRcdFx0XHRcdG5ld1R5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5ld1Byb3BzLCBjLl9uZXh0U3RhdGUpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdG9sZFByb3BzID0gYy5wcm9wcztcblx0XHRcdG9sZFN0YXRlID0gYy5zdGF0ZTtcblx0XHRcdGMuX3Zub2RlID0gbmV3Vk5vZGU7XG5cblx0XHRcdC8vIEludm9rZSBwcmUtcmVuZGVyIGxpZmVjeWNsZSBtZXRob2RzXG5cdFx0XHRpZiAoaXNOZXcpIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGlzQ2xhc3NDb21wb25lbnQgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdFx0bmV3VHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPT0gbnVsbCBcdTAwMjZcdTAwMjZcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxNb3VudCAhPSBudWxsXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGMuY29tcG9uZW50V2lsbE1vdW50KCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoaXNDbGFzc0NvbXBvbmVudCBcdTAwMjZcdTAwMjYgYy5jb21wb25lbnREaWRNb3VudCAhPSBudWxsKSB7XG5cdFx0XHRcdFx0Yy5fcmVuZGVyQ2FsbGJhY2tzLnB1c2goYy5jb21wb25lbnREaWRNb3VudCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRpc0NsYXNzQ29tcG9uZW50IFx1MDAyNlx1MDAyNlxuXHRcdFx0XHRcdG5ld1R5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID09IG51bGwgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdFx0bmV3UHJvcHMgIT09IG9sZFByb3BzIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHRcdGMuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyAhPSBudWxsXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGMuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXdQcm9wcywgY29tcG9uZW50Q29udGV4dCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0IWMuX2ZvcmNlIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHRcdCgoYy5zaG91bGRDb21wb25lbnRVcGRhdGUgIT0gbnVsbCBcdTAwMjZcdTAwMjZcblx0XHRcdFx0XHRcdGMuc2hvdWxkQ29tcG9uZW50VXBkYXRlKFxuXHRcdFx0XHRcdFx0XHRuZXdQcm9wcyxcblx0XHRcdFx0XHRcdFx0Yy5fbmV4dFN0YXRlLFxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRDb250ZXh0XG5cdFx0XHRcdFx0XHQpID09PSBmYWxzZSkgfHxcblx0XHRcdFx0XHRcdG5ld1ZOb2RlLl9vcmlnaW5hbCA9PT0gb2xkVk5vZGUuX29yaWdpbmFsKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHQvLyBNb3JlIGluZm8gYWJvdXQgdGhpcyBoZXJlOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9Kb3ZpRGVDcm9vY2svYmVjNWYyY2U5MzU0NGQyZTYwNzBlZjhlMDAzNmU0ZThcblx0XHRcdFx0XHRpZiAobmV3Vk5vZGUuX29yaWdpbmFsICE9PSBvbGRWTm9kZS5fb3JpZ2luYWwpIHtcblx0XHRcdFx0XHRcdC8vIFdoZW4gd2UgYXJlIGRlYWxpbmcgd2l0aCBhIGJhaWwgYmVjYXVzZSBvZiBzQ1Ugd2UgaGF2ZSB0byB1cGRhdGVcblx0XHRcdFx0XHRcdC8vIHRoZSBwcm9wcywgc3RhdGUgYW5kIGRpcnR5LXN0YXRlLlxuXHRcdFx0XHRcdFx0Ly8gd2hlbiB3ZSBhcmUgZGVhbGluZyB3aXRoIHN0cmljdC1lcXVhbGl0eSB3ZSBkb24ndCBhcyB0aGUgY2hpbGQgY291bGQgc3RpbGxcblx0XHRcdFx0XHRcdC8vIGJlIGRpcnRpZWQgc2VlICMzODgzXG5cdFx0XHRcdFx0XHRjLnByb3BzID0gbmV3UHJvcHM7XG5cdFx0XHRcdFx0XHRjLnN0YXRlID0gYy5fbmV4dFN0YXRlO1xuXHRcdFx0XHRcdFx0Yy5fZGlydHkgPSBmYWxzZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRuZXdWTm9kZS5fZG9tID0gb2xkVk5vZGUuX2RvbTtcblx0XHRcdFx0XHRuZXdWTm9kZS5fY2hpbGRyZW4gPSBvbGRWTm9kZS5fY2hpbGRyZW47XG5cdFx0XHRcdFx0bmV3Vk5vZGUuX2NoaWxkcmVuLmZvckVhY2godm5vZGUgPVx1MDAzZSB7XG5cdFx0XHRcdFx0XHRpZiAodm5vZGUpIHZub2RlLl9wYXJlbnQgPSBuZXdWTm9kZTtcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIFx1MDAzYyBjLl9zdGF0ZUNhbGxiYWNrcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0Yy5fcmVuZGVyQ2FsbGJhY2tzLnB1c2goYy5fc3RhdGVDYWxsYmFja3NbaV0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjLl9zdGF0ZUNhbGxiYWNrcyA9IFtdO1xuXG5cdFx0XHRcdFx0aWYgKGMuX3JlbmRlckNhbGxiYWNrcy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGNvbW1pdFF1ZXVlLnB1c2goYyk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0YnJlYWsgb3V0ZXI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoYy5jb21wb25lbnRXaWxsVXBkYXRlICE9IG51bGwpIHtcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxVcGRhdGUobmV3UHJvcHMsIGMuX25leHRTdGF0ZSwgY29tcG9uZW50Q29udGV4dCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoaXNDbGFzc0NvbXBvbmVudCBcdTAwMjZcdTAwMjYgYy5jb21wb25lbnREaWRVcGRhdGUgIT0gbnVsbCkge1xuXHRcdFx0XHRcdGMuX3JlbmRlckNhbGxiYWNrcy5wdXNoKCgpID1cdTAwM2Uge1xuXHRcdFx0XHRcdFx0Yy5jb21wb25lbnREaWRVcGRhdGUob2xkUHJvcHMsIG9sZFN0YXRlLCBzbmFwc2hvdCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Yy5jb250ZXh0ID0gY29tcG9uZW50Q29udGV4dDtcblx0XHRcdGMucHJvcHMgPSBuZXdQcm9wcztcblx0XHRcdGMuX3BhcmVudERvbSA9IHBhcmVudERvbTtcblx0XHRcdGMuX2ZvcmNlID0gZmFsc2U7XG5cblx0XHRcdGxldCByZW5kZXJIb29rID0gb3B0aW9ucy5fcmVuZGVyLFxuXHRcdFx0XHRjb3VudCA9IDA7XG5cdFx0XHRpZiAoaXNDbGFzc0NvbXBvbmVudCkge1xuXHRcdFx0XHRjLnN0YXRlID0gYy5fbmV4dFN0YXRlO1xuXHRcdFx0XHRjLl9kaXJ0eSA9IGZhbHNlO1xuXG5cdFx0XHRcdGlmIChyZW5kZXJIb29rKSByZW5kZXJIb29rKG5ld1ZOb2RlKTtcblxuXHRcdFx0XHR0bXAgPSBjLnJlbmRlcihjLnByb3BzLCBjLnN0YXRlLCBjLmNvbnRleHQpO1xuXG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIFx1MDAzYyBjLl9zdGF0ZUNhbGxiYWNrcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGMuX3JlbmRlckNhbGxiYWNrcy5wdXNoKGMuX3N0YXRlQ2FsbGJhY2tzW2ldKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjLl9zdGF0ZUNhbGxiYWNrcyA9IFtdO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZG8ge1xuXHRcdFx0XHRcdGMuX2RpcnR5ID0gZmFsc2U7XG5cdFx0XHRcdFx0aWYgKHJlbmRlckhvb2spIHJlbmRlckhvb2sobmV3Vk5vZGUpO1xuXG5cdFx0XHRcdFx0dG1wID0gYy5yZW5kZXIoYy5wcm9wcywgYy5zdGF0ZSwgYy5jb250ZXh0KTtcblxuXHRcdFx0XHRcdC8vIEhhbmRsZSBzZXRTdGF0ZSBjYWxsZWQgaW4gcmVuZGVyLCBzZWUgIzI1NTNcblx0XHRcdFx0XHRjLnN0YXRlID0gYy5fbmV4dFN0YXRlO1xuXHRcdFx0XHR9IHdoaWxlIChjLl9kaXJ0eSBcdTAwMjZcdTAwMjYgKytjb3VudCBcdTAwM2MgMjUpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBIYW5kbGUgc2V0U3RhdGUgY2FsbGVkIGluIHJlbmRlciwgc2VlICMyNTUzXG5cdFx0XHRjLnN0YXRlID0gYy5fbmV4dFN0YXRlO1xuXG5cdFx0XHRpZiAoYy5nZXRDaGlsZENvbnRleHQgIT0gbnVsbCkge1xuXHRcdFx0XHRnbG9iYWxDb250ZXh0ID0gYXNzaWduKGFzc2lnbih7fSwgZ2xvYmFsQ29udGV4dCksIGMuZ2V0Q2hpbGRDb250ZXh0KCkpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaXNDbGFzc0NvbXBvbmVudCBcdTAwMjZcdTAwMjYgIWlzTmV3IFx1MDAyNlx1MDAyNiBjLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlICE9IG51bGwpIHtcblx0XHRcdFx0c25hcHNob3QgPSBjLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKG9sZFByb3BzLCBvbGRTdGF0ZSk7XG5cdFx0XHR9XG5cblx0XHRcdGxldCBpc1RvcExldmVsRnJhZ21lbnQgPVxuXHRcdFx0XHR0bXAgIT0gbnVsbCBcdTAwMjZcdTAwMjYgdG1wLnR5cGUgPT09IEZyYWdtZW50IFx1MDAyNlx1MDAyNiB0bXAua2V5ID09IG51bGw7XG5cdFx0XHRsZXQgcmVuZGVyUmVzdWx0ID0gaXNUb3BMZXZlbEZyYWdtZW50ID8gdG1wLnByb3BzLmNoaWxkcmVuIDogdG1wO1xuXG5cdFx0XHRkaWZmQ2hpbGRyZW4oXG5cdFx0XHRcdHBhcmVudERvbSxcblx0XHRcdFx0aXNBcnJheShyZW5kZXJSZXN1bHQpID8gcmVuZGVyUmVzdWx0IDogW3JlbmRlclJlc3VsdF0sXG5cdFx0XHRcdG5ld1ZOb2RlLFxuXHRcdFx0XHRvbGRWTm9kZSxcblx0XHRcdFx0Z2xvYmFsQ29udGV4dCxcblx0XHRcdFx0bmFtZXNwYWNlLFxuXHRcdFx0XHRleGNlc3NEb21DaGlsZHJlbixcblx0XHRcdFx0Y29tbWl0UXVldWUsXG5cdFx0XHRcdG9sZERvbSxcblx0XHRcdFx0aXNIeWRyYXRpbmcsXG5cdFx0XHRcdHJlZlF1ZXVlXG5cdFx0XHQpO1xuXG5cdFx0XHRjLmJhc2UgPSBuZXdWTm9kZS5fZG9tO1xuXG5cdFx0XHQvLyBXZSBzdWNjZXNzZnVsbHkgcmVuZGVyZWQgdGhpcyBWTm9kZSwgdW5zZXQgYW55IHN0b3JlZCBoeWRyYXRpb24vYmFpbG91dCBzdGF0ZTpcblx0XHRcdG5ld1ZOb2RlLl9mbGFncyBcdTAwMjY9IFJFU0VUX01PREU7XG5cblx0XHRcdGlmIChjLl9yZW5kZXJDYWxsYmFja3MubGVuZ3RoKSB7XG5cdFx0XHRcdGNvbW1pdFF1ZXVlLnB1c2goYyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChjbGVhclByb2Nlc3NpbmdFeGNlcHRpb24pIHtcblx0XHRcdFx0Yy5fcGVuZGluZ0Vycm9yID0gYy5fcHJvY2Vzc2luZ0V4Y2VwdGlvbiA9IG51bGw7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0bmV3Vk5vZGUuX29yaWdpbmFsID0gbnVsbDtcblx0XHRcdC8vIGlmIGh5ZHJhdGluZyBvciBjcmVhdGluZyBpbml0aWFsIHRyZWUsIGJhaWxvdXQgcHJlc2VydmVzIERPTTpcblx0XHRcdGlmIChpc0h5ZHJhdGluZyB8fCBleGNlc3NEb21DaGlsZHJlbiAhPSBudWxsKSB7XG5cdFx0XHRcdG5ld1ZOb2RlLl9mbGFncyB8PSBpc0h5ZHJhdGluZ1xuXHRcdFx0XHRcdD8gTU9ERV9IWURSQVRFIHwgTU9ERV9TVVNQRU5ERURcblx0XHRcdFx0XHQ6IE1PREVfSFlEUkFURTtcblxuXHRcdFx0XHR3aGlsZSAob2xkRG9tIFx1MDAyNlx1MDAyNiBvbGREb20ubm9kZVR5cGUgPT09IDggXHUwMDI2XHUwMDI2IG9sZERvbS5uZXh0U2libGluZykge1xuXHRcdFx0XHRcdG9sZERvbSA9IG9sZERvbS5uZXh0U2libGluZztcblx0XHRcdFx0fVxuXHRcdFx0XHRleGNlc3NEb21DaGlsZHJlbltleGNlc3NEb21DaGlsZHJlbi5pbmRleE9mKG9sZERvbSldID0gbnVsbDtcblx0XHRcdFx0bmV3Vk5vZGUuX2RvbSA9IG9sZERvbTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG5ld1ZOb2RlLl9kb20gPSBvbGRWTm9kZS5fZG9tO1xuXHRcdFx0XHRuZXdWTm9kZS5fY2hpbGRyZW4gPSBvbGRWTm9kZS5fY2hpbGRyZW47XG5cdFx0XHR9XG5cdFx0XHRvcHRpb25zLl9jYXRjaEVycm9yKGUsIG5ld1ZOb2RlLCBvbGRWTm9kZSk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKFxuXHRcdGV4Y2Vzc0RvbUNoaWxkcmVuID09IG51bGwgXHUwMDI2XHUwMDI2XG5cdFx0bmV3Vk5vZGUuX29yaWdpbmFsID09PSBvbGRWTm9kZS5fb3JpZ2luYWxcblx0KSB7XG5cdFx0bmV3Vk5vZGUuX2NoaWxkcmVuID0gb2xkVk5vZGUuX2NoaWxkcmVuO1xuXHRcdG5ld1ZOb2RlLl9kb20gPSBvbGRWTm9kZS5fZG9tO1xuXHR9IGVsc2Uge1xuXHRcdG5ld1ZOb2RlLl9kb20gPSBkaWZmRWxlbWVudE5vZGVzKFxuXHRcdFx0b2xkVk5vZGUuX2RvbSxcblx0XHRcdG5ld1ZOb2RlLFxuXHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRnbG9iYWxDb250ZXh0LFxuXHRcdFx0bmFtZXNwYWNlLFxuXHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdFx0XHRjb21taXRRdWV1ZSxcblx0XHRcdGlzSHlkcmF0aW5nLFxuXHRcdFx0cmVmUXVldWVcblx0XHQpO1xuXHR9XG5cblx0aWYgKCh0bXAgPSBvcHRpb25zLmRpZmZlZCkpIHRtcChuZXdWTm9kZSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtBcnJheVx1MDAzY0NvbXBvbmVudFx1MDAzZX0gY29tbWl0UXVldWUgTGlzdCBvZiBjb21wb25lbnRzXG4gKiB3aGljaCBoYXZlIGNhbGxiYWNrcyB0byBpbnZva2UgaW4gY29tbWl0Um9vdFxuICogQHBhcmFtIHtWTm9kZX0gcm9vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWl0Um9vdChjb21taXRRdWV1ZSwgcm9vdCwgcmVmUXVldWUpIHtcblx0cm9vdC5fbmV4dERvbSA9IHVuZGVmaW5lZDtcblxuXHRmb3IgKGxldCBpID0gMDsgaSBcdTAwM2MgcmVmUXVldWUubGVuZ3RoOyBpKyspIHtcblx0XHRhcHBseVJlZihyZWZRdWV1ZVtpXSwgcmVmUXVldWVbKytpXSwgcmVmUXVldWVbKytpXSk7XG5cdH1cblxuXHRpZiAob3B0aW9ucy5fY29tbWl0KSBvcHRpb25zLl9jb21taXQocm9vdCwgY29tbWl0UXVldWUpO1xuXG5cdGNvbW1pdFF1ZXVlLnNvbWUoYyA9XHUwMDNlIHtcblx0XHR0cnkge1xuXHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciBSZXVzZSB0aGUgY29tbWl0UXVldWUgdmFyaWFibGUgaGVyZSBzbyB0aGUgdHlwZSBjaGFuZ2VzXG5cdFx0XHRjb21taXRRdWV1ZSA9IGMuX3JlbmRlckNhbGxiYWNrcztcblx0XHRcdGMuX3JlbmRlckNhbGxiYWNrcyA9IFtdO1xuXHRcdFx0Y29tbWl0UXVldWUuc29tZShjYiA9XHUwMDNlIHtcblx0XHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciBTZWUgYWJvdmUgY29tbWVudCBvbiBjb21taXRRdWV1ZVxuXHRcdFx0XHRjYi5jYWxsKGMpO1xuXHRcdFx0fSk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCBjLl92bm9kZSk7XG5cdFx0fVxuXHR9KTtcbn1cblxuLyoqXG4gKiBEaWZmIHR3byB2aXJ0dWFsIG5vZGVzIHJlcHJlc2VudGluZyBET00gZWxlbWVudFxuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50fSBkb20gVGhlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgdmlydHVhbCBub2Rlc1xuICogYmVpbmcgZGlmZmVkXG4gKiBAcGFyYW0ge1ZOb2RlfSBuZXdWTm9kZSBUaGUgbmV3IHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtWTm9kZX0gb2xkVk5vZGUgVGhlIG9sZCB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBnbG9iYWxDb250ZXh0IFRoZSBjdXJyZW50IGNvbnRleHQgb2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZXNwYWNlIEN1cnJlbnQgbmFtZXNwYWNlIG9mIHRoZSBET00gbm9kZSAoSFRNTCwgU1ZHLCBvciBNYXRoTUwpXG4gKiBAcGFyYW0ge0FycmF5XHUwMDNjUHJlYWN0RWxlbWVudFx1MDAzZX0gZXhjZXNzRG9tQ2hpbGRyZW5cbiAqIEBwYXJhbSB7QXJyYXlcdTAwM2NDb21wb25lbnRcdTAwM2V9IGNvbW1pdFF1ZXVlIExpc3Qgb2YgY29tcG9uZW50cyB3aGljaCBoYXZlIGNhbGxiYWNrc1xuICogdG8gaW52b2tlIGluIGNvbW1pdFJvb3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNIeWRyYXRpbmcgV2hldGhlciBvciBub3Qgd2UgYXJlIGluIGh5ZHJhdGlvblxuICogQHBhcmFtIHthbnlbXX0gcmVmUXVldWUgYW4gYXJyYXkgb2YgZWxlbWVudHMgbmVlZGVkIHRvIGludm9rZSByZWZzXG4gKiBAcmV0dXJucyB7UHJlYWN0RWxlbWVudH1cbiAqL1xuZnVuY3Rpb24gZGlmZkVsZW1lbnROb2Rlcyhcblx0ZG9tLFxuXHRuZXdWTm9kZSxcblx0b2xkVk5vZGUsXG5cdGdsb2JhbENvbnRleHQsXG5cdG5hbWVzcGFjZSxcblx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdGNvbW1pdFF1ZXVlLFxuXHRpc0h5ZHJhdGluZyxcblx0cmVmUXVldWVcbikge1xuXHRsZXQgb2xkUHJvcHMgPSBvbGRWTm9kZS5wcm9wcztcblx0bGV0IG5ld1Byb3BzID0gbmV3Vk5vZGUucHJvcHM7XG5cdGxldCBub2RlVHlwZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAobmV3Vk5vZGUudHlwZSk7XG5cdC8qKiBAdHlwZSB7YW55fSAqL1xuXHRsZXQgaTtcblx0LyoqIEB0eXBlIHt7IF9faHRtbD86IHN0cmluZyB9fSAqL1xuXHRsZXQgbmV3SHRtbDtcblx0LyoqIEB0eXBlIHt7IF9faHRtbD86IHN0cmluZyB9fSAqL1xuXHRsZXQgb2xkSHRtbDtcblx0LyoqIEB0eXBlIHtDb21wb25lbnRDaGlsZHJlbn0gKi9cblx0bGV0IG5ld0NoaWxkcmVuO1xuXHRsZXQgdmFsdWU7XG5cdGxldCBpbnB1dFZhbHVlO1xuXHRsZXQgY2hlY2tlZDtcblxuXHQvLyBUcmFja3MgZW50ZXJpbmcgYW5kIGV4aXRpbmcgbmFtZXNwYWNlcyB3aGVuIGRlc2NlbmRpbmcgdGhyb3VnaCB0aGUgdHJlZS5cblx0aWYgKG5vZGVUeXBlID09PSAnc3ZnJykgbmFtZXNwYWNlID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcblx0ZWxzZSBpZiAobm9kZVR5cGUgPT09ICdtYXRoJylcblx0XHRuYW1lc3BhY2UgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc7XG5cdGVsc2UgaWYgKCFuYW1lc3BhY2UpIG5hbWVzcGFjZSA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJztcblxuXHRpZiAoZXhjZXNzRG9tQ2hpbGRyZW4gIT0gbnVsbCkge1xuXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGV4Y2Vzc0RvbUNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YWx1ZSA9IGV4Y2Vzc0RvbUNoaWxkcmVuW2ldO1xuXG5cdFx0XHQvLyBpZiBuZXdWTm9kZSBtYXRjaGVzIGFuIGVsZW1lbnQgaW4gZXhjZXNzRG9tQ2hpbGRyZW4gb3IgdGhlIGBkb21gXG5cdFx0XHQvLyBhcmd1bWVudCBtYXRjaGVzIGFuIGVsZW1lbnQgaW4gZXhjZXNzRG9tQ2hpbGRyZW4sIHJlbW92ZSBpdCBmcm9tXG5cdFx0XHQvLyBleGNlc3NEb21DaGlsZHJlbiBzbyBpdCBpc24ndCBsYXRlciByZW1vdmVkIGluIGRpZmZDaGlsZHJlblxuXHRcdFx0aWYgKFxuXHRcdFx0XHR2YWx1ZSBcdTAwMjZcdTAwMjZcblx0XHRcdFx0J3NldEF0dHJpYnV0ZScgaW4gdmFsdWUgPT09ICEhbm9kZVR5cGUgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdChub2RlVHlwZSA/IHZhbHVlLmxvY2FsTmFtZSA9PT0gbm9kZVR5cGUgOiB2YWx1ZS5ub2RlVHlwZSA9PT0gMylcblx0XHRcdCkge1xuXHRcdFx0XHRkb20gPSB2YWx1ZTtcblx0XHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW5baV0gPSBudWxsO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoZG9tID09IG51bGwpIHtcblx0XHRpZiAobm9kZVR5cGUgPT09IG51bGwpIHtcblx0XHRcdHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuZXdQcm9wcyk7XG5cdFx0fVxuXG5cdFx0ZG9tID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFxuXHRcdFx0bmFtZXNwYWNlLFxuXHRcdFx0bm9kZVR5cGUsXG5cdFx0XHRuZXdQcm9wcy5pcyBcdTAwMjZcdTAwMjYgbmV3UHJvcHNcblx0XHQpO1xuXG5cdFx0Ly8gd2UgY3JlYXRlZCBhIG5ldyBwYXJlbnQsIHNvIG5vbmUgb2YgdGhlIHByZXZpb3VzbHkgYXR0YWNoZWQgY2hpbGRyZW4gY2FuIGJlIHJldXNlZDpcblx0XHRleGNlc3NEb21DaGlsZHJlbiA9IG51bGw7XG5cdFx0Ly8gd2UgYXJlIGNyZWF0aW5nIGEgbmV3IG5vZGUsIHNvIHdlIGNhbiBhc3N1bWUgdGhpcyBpcyBhIG5ldyBzdWJ0cmVlIChpblxuXHRcdC8vIGNhc2Ugd2UgYXJlIGh5ZHJhdGluZyksIHRoaXMgZGVvcHRzIHRoZSBoeWRyYXRlXG5cdFx0aXNIeWRyYXRpbmcgPSBmYWxzZTtcblx0fVxuXG5cdGlmIChub2RlVHlwZSA9PT0gbnVsbCkge1xuXHRcdC8vIER1cmluZyBoeWRyYXRpb24sIHdlIHN0aWxsIGhhdmUgdG8gc3BsaXQgbWVyZ2VkIHRleHQgZnJvbSBTU1InZCBIVE1MLlxuXHRcdGlmIChvbGRQcm9wcyAhPT0gbmV3UHJvcHMgXHUwMDI2XHUwMDI2ICghaXNIeWRyYXRpbmcgfHwgZG9tLmRhdGEgIT09IG5ld1Byb3BzKSkge1xuXHRcdFx0ZG9tLmRhdGEgPSBuZXdQcm9wcztcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Ly8gSWYgZXhjZXNzRG9tQ2hpbGRyZW4gd2FzIG5vdCBudWxsLCByZXBvcHVsYXRlIGl0IHdpdGggdGhlIGN1cnJlbnQgZWxlbWVudCdzIGNoaWxkcmVuOlxuXHRcdGV4Y2Vzc0RvbUNoaWxkcmVuID0gZXhjZXNzRG9tQ2hpbGRyZW4gXHUwMDI2XHUwMDI2IHNsaWNlLmNhbGwoZG9tLmNoaWxkTm9kZXMpO1xuXG5cdFx0b2xkUHJvcHMgPSBvbGRWTm9kZS5wcm9wcyB8fCBFTVBUWV9PQko7XG5cblx0XHQvLyBJZiB3ZSBhcmUgaW4gYSBzaXR1YXRpb24gd2hlcmUgd2UgYXJlIG5vdCBoeWRyYXRpbmcgYnV0IGFyZSB1c2luZ1xuXHRcdC8vIGV4aXN0aW5nIERPTSAoZS5nLiByZXBsYWNlTm9kZSkgd2Ugc2hvdWxkIHJlYWQgdGhlIGV4aXN0aW5nIERPTVxuXHRcdC8vIGF0dHJpYnV0ZXMgdG8gZGlmZiB0aGVtXG5cdFx0aWYgKCFpc0h5ZHJhdGluZyBcdTAwMjZcdTAwMjYgZXhjZXNzRG9tQ2hpbGRyZW4gIT0gbnVsbCkge1xuXHRcdFx0b2xkUHJvcHMgPSB7fTtcblx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRvbS5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdHZhbHVlID0gZG9tLmF0dHJpYnV0ZXNbaV07XG5cdFx0XHRcdG9sZFByb3BzW3ZhbHVlLm5hbWVdID0gdmFsdWUudmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Zm9yIChpIGluIG9sZFByb3BzKSB7XG5cdFx0XHR2YWx1ZSA9IG9sZFByb3BzW2ldO1xuXHRcdFx0aWYgKGkgPT0gJ2NoaWxkcmVuJykge1xuXHRcdFx0fSBlbHNlIGlmIChpID09ICdkYW5nZXJvdXNseVNldElubmVySFRNTCcpIHtcblx0XHRcdFx0b2xkSHRtbCA9IHZhbHVlO1xuXHRcdFx0fSBlbHNlIGlmIChpICE9PSAna2V5JyBcdTAwMjZcdTAwMjYgIShpIGluIG5ld1Byb3BzKSkge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0KGkgPT0gJ3ZhbHVlJyBcdTAwMjZcdTAwMjYgJ2RlZmF1bHRWYWx1ZScgaW4gbmV3UHJvcHMpIHx8XG5cdFx0XHRcdFx0KGkgPT0gJ2NoZWNrZWQnIFx1MDAyNlx1MDAyNiAnZGVmYXVsdENoZWNrZWQnIGluIG5ld1Byb3BzKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzZXRQcm9wZXJ0eShkb20sIGksIG51bGwsIHZhbHVlLCBuYW1lc3BhY2UpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIER1cmluZyBoeWRyYXRpb24sIHByb3BzIGFyZSBub3QgZGlmZmVkIGF0IGFsbCAoaW5jbHVkaW5nIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKVxuXHRcdC8vIEBUT0RPIHdlIHNob3VsZCB3YXJuIGluIGRlYnVnIG1vZGUgd2hlbiBwcm9wcyBkb24ndCBtYXRjaCBoZXJlLlxuXHRcdGZvciAoaSBpbiBuZXdQcm9wcykge1xuXHRcdFx0dmFsdWUgPSBuZXdQcm9wc1tpXTtcblx0XHRcdGlmIChpID09ICdjaGlsZHJlbicpIHtcblx0XHRcdFx0bmV3Q2hpbGRyZW4gPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSBpZiAoaSA9PSAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnKSB7XG5cdFx0XHRcdG5ld0h0bWwgPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSBpZiAoaSA9PSAndmFsdWUnKSB7XG5cdFx0XHRcdGlucHV0VmFsdWUgPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSBpZiAoaSA9PSAnY2hlY2tlZCcpIHtcblx0XHRcdFx0Y2hlY2tlZCA9IHZhbHVlO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0aSAhPT0gJ2tleScgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdCghaXNIeWRyYXRpbmcgfHwgdHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicpIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHRvbGRQcm9wc1tpXSAhPT0gdmFsdWVcblx0XHRcdCkge1xuXHRcdFx0XHRzZXRQcm9wZXJ0eShkb20sIGksIHZhbHVlLCBvbGRQcm9wc1tpXSwgbmFtZXNwYWNlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBJZiB0aGUgbmV3IHZub2RlIGRpZG4ndCBoYXZlIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLCBkaWZmIGl0cyBjaGlsZHJlblxuXHRcdGlmIChuZXdIdG1sKSB7XG5cdFx0XHQvLyBBdm9pZCByZS1hcHBseWluZyB0aGUgc2FtZSAnX19odG1sJyBpZiBpdCBkaWQgbm90IGNoYW5nZWQgYmV0d2VlbiByZS1yZW5kZXJcblx0XHRcdGlmIChcblx0XHRcdFx0IWlzSHlkcmF0aW5nIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHQoIW9sZEh0bWwgfHxcblx0XHRcdFx0XHQobmV3SHRtbC5fX2h0bWwgIT09IG9sZEh0bWwuX19odG1sIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHRcdFx0bmV3SHRtbC5fX2h0bWwgIT09IGRvbS5pbm5lckhUTUwpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdGRvbS5pbm5lckhUTUwgPSBuZXdIdG1sLl9faHRtbDtcblx0XHRcdH1cblxuXHRcdFx0bmV3Vk5vZGUuX2NoaWxkcmVuID0gW107XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmIChvbGRIdG1sKSBkb20uaW5uZXJIVE1MID0gJyc7XG5cblx0XHRcdGRpZmZDaGlsZHJlbihcblx0XHRcdFx0ZG9tLFxuXHRcdFx0XHRpc0FycmF5KG5ld0NoaWxkcmVuKSA/IG5ld0NoaWxkcmVuIDogW25ld0NoaWxkcmVuXSxcblx0XHRcdFx0bmV3Vk5vZGUsXG5cdFx0XHRcdG9sZFZOb2RlLFxuXHRcdFx0XHRnbG9iYWxDb250ZXh0LFxuXHRcdFx0XHRub2RlVHlwZSA9PT0gJ2ZvcmVpZ25PYmplY3QnXG5cdFx0XHRcdFx0PyAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCdcblx0XHRcdFx0XHQ6IG5hbWVzcGFjZSxcblx0XHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdFx0XHRcdGNvbW1pdFF1ZXVlLFxuXHRcdFx0XHRleGNlc3NEb21DaGlsZHJlblxuXHRcdFx0XHRcdD8gZXhjZXNzRG9tQ2hpbGRyZW5bMF1cblx0XHRcdFx0XHQ6IG9sZFZOb2RlLl9jaGlsZHJlbiBcdTAwMjZcdTAwMjYgZ2V0RG9tU2libGluZyhvbGRWTm9kZSwgMCksXG5cdFx0XHRcdGlzSHlkcmF0aW5nLFxuXHRcdFx0XHRyZWZRdWV1ZVxuXHRcdFx0KTtcblxuXHRcdFx0Ly8gUmVtb3ZlIGNoaWxkcmVuIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIGFueSB2bm9kZS5cblx0XHRcdGlmIChleGNlc3NEb21DaGlsZHJlbiAhPSBudWxsKSB7XG5cdFx0XHRcdGZvciAoaSA9IGV4Y2Vzc0RvbUNoaWxkcmVuLmxlbmd0aDsgaS0tOyApIHtcblx0XHRcdFx0XHRpZiAoZXhjZXNzRG9tQ2hpbGRyZW5baV0gIT0gbnVsbCkgcmVtb3ZlTm9kZShleGNlc3NEb21DaGlsZHJlbltpXSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBcyBhYm92ZSwgZG9uJ3QgZGlmZiBwcm9wcyBkdXJpbmcgaHlkcmF0aW9uXG5cdFx0aWYgKCFpc0h5ZHJhdGluZykge1xuXHRcdFx0aSA9ICd2YWx1ZSc7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGlucHV0VmFsdWUgIT09IHVuZGVmaW5lZCBcdTAwMjZcdTAwMjZcblx0XHRcdFx0Ly8gIzI3NTYgRm9yIHRoZSBcdTAwM2Nwcm9ncmVzc1x1MDAzZS1lbGVtZW50IHRoZSBpbml0aWFsIHZhbHVlIGlzIDAsXG5cdFx0XHRcdC8vIGRlc3BpdGUgdGhlIGF0dHJpYnV0ZSBub3QgYmVpbmcgcHJlc2VudC4gV2hlbiB0aGUgYXR0cmlidXRlXG5cdFx0XHRcdC8vIGlzIG1pc3NpbmcgdGhlIHByb2dyZXNzIGJhciBpcyB0cmVhdGVkIGFzIGluZGV0ZXJtaW5hdGUuXG5cdFx0XHRcdC8vIFRvIGZpeCB0aGF0IHdlJ2xsIGFsd2F5cyB1cGRhdGUgaXQgd2hlbiBpdCBpcyAwIGZvciBwcm9ncmVzcyBlbGVtZW50c1xuXHRcdFx0XHQoaW5wdXRWYWx1ZSAhPT0gZG9tW2ldIHx8XG5cdFx0XHRcdFx0KG5vZGVUeXBlID09PSAncHJvZ3Jlc3MnIFx1MDAyNlx1MDAyNiAhaW5wdXRWYWx1ZSkgfHxcblx0XHRcdFx0XHQvLyBUaGlzIGlzIG9ubHkgZm9yIElFIDExIHRvIGZpeCBcdTAwM2NzZWxlY3RcdTAwM2UgdmFsdWUgbm90IGJlaW5nIHVwZGF0ZWQuXG5cdFx0XHRcdFx0Ly8gVG8gYXZvaWQgYSBzdGFsZSBzZWxlY3QgdmFsdWUgd2UgbmVlZCB0byBzZXQgdGhlIG9wdGlvbi52YWx1ZVxuXHRcdFx0XHRcdC8vIGFnYWluLCB3aGljaCB0cmlnZ2VycyBJRTExIHRvIHJlLWV2YWx1YXRlIHRoZSBzZWxlY3QgdmFsdWVcblx0XHRcdFx0XHQobm9kZVR5cGUgPT09ICdvcHRpb24nIFx1MDAyNlx1MDAyNiBpbnB1dFZhbHVlICE9PSBvbGRQcm9wc1tpXSkpXG5cdFx0XHQpIHtcblx0XHRcdFx0c2V0UHJvcGVydHkoZG9tLCBpLCBpbnB1dFZhbHVlLCBvbGRQcm9wc1tpXSwgbmFtZXNwYWNlKTtcblx0XHRcdH1cblxuXHRcdFx0aSA9ICdjaGVja2VkJztcblx0XHRcdGlmIChjaGVja2VkICE9PSB1bmRlZmluZWQgXHUwMDI2XHUwMDI2IGNoZWNrZWQgIT09IGRvbVtpXSkge1xuXHRcdFx0XHRzZXRQcm9wZXJ0eShkb20sIGksIGNoZWNrZWQsIG9sZFByb3BzW2ldLCBuYW1lc3BhY2UpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBkb207XG59XG5cbi8qKlxuICogSW52b2tlIG9yIHVwZGF0ZSBhIHJlZiwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXQgaXMgYSBmdW5jdGlvbiBvciBvYmplY3QgcmVmLlxuICogQHBhcmFtIHtSZWZcdTAwM2NhbnlcdTAwM2UgXHUwMDI2IHsgX3VubW91bnQ/OiB1bmtub3duIH19IHJlZlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcGFyYW0ge1ZOb2RlfSB2bm9kZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlSZWYocmVmLCB2YWx1ZSwgdm5vZGUpIHtcblx0dHJ5IHtcblx0XHRpZiAodHlwZW9mIHJlZiA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRsZXQgaGFzUmVmVW5tb3VudCA9IHR5cGVvZiByZWYuX3VubW91bnQgPT0gJ2Z1bmN0aW9uJztcblx0XHRcdGlmIChoYXNSZWZVbm1vdW50KSB7XG5cdFx0XHRcdC8vIEB0cy1pZ25vcmUgVFMgZG9lc24ndCBsaWtlIG1vdmluZyBuYXJyb3dpbmcgY2hlY2tzIGludG8gdmFyaWFibGVzXG5cdFx0XHRcdHJlZi5fdW5tb3VudCgpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIWhhc1JlZlVubW91bnQgfHwgdmFsdWUgIT0gbnVsbCkge1xuXHRcdFx0XHQvLyBTdG9yZSB0aGUgY2xlYW51cCBmdW5jdGlvbiBvbiB0aGUgZnVuY3Rpb25cblx0XHRcdFx0Ly8gaW5zdGFuY2Ugb2JqZWN0IGl0c2VsZiB0byBhdm9pZCBzaGFwZVxuXHRcdFx0XHQvLyB0cmFuc2l0aW9uaW5nIHZub2RlXG5cdFx0XHRcdHJlZi5fdW5tb3VudCA9IHJlZih2YWx1ZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHJlZi5jdXJyZW50ID0gdmFsdWU7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRvcHRpb25zLl9jYXRjaEVycm9yKGUsIHZub2RlKTtcblx0fVxufVxuXG4vKipcbiAqIFVubW91bnQgYSB2aXJ0dWFsIG5vZGUgZnJvbSB0aGUgdHJlZSBhbmQgYXBwbHkgRE9NIGNoYW5nZXNcbiAqIEBwYXJhbSB7Vk5vZGV9IHZub2RlIFRoZSB2aXJ0dWFsIG5vZGUgdG8gdW5tb3VudFxuICogQHBhcmFtIHtWTm9kZX0gcGFyZW50Vk5vZGUgVGhlIHBhcmVudCBvZiB0aGUgVk5vZGUgdGhhdCBpbml0aWF0ZWQgdGhlIHVubW91bnRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3NraXBSZW1vdmVdIEZsYWcgdGhhdCBpbmRpY2F0ZXMgdGhhdCBhIHBhcmVudCBub2RlIG9mIHRoZVxuICogY3VycmVudCBlbGVtZW50IGlzIGFscmVhZHkgZGV0YWNoZWQgZnJvbSB0aGUgRE9NLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5tb3VudCh2bm9kZSwgcGFyZW50Vk5vZGUsIHNraXBSZW1vdmUpIHtcblx0bGV0IHI7XG5cdGlmIChvcHRpb25zLnVubW91bnQpIG9wdGlvbnMudW5tb3VudCh2bm9kZSk7XG5cblx0aWYgKChyID0gdm5vZGUucmVmKSkge1xuXHRcdGlmICghci5jdXJyZW50IHx8IHIuY3VycmVudCA9PT0gdm5vZGUuX2RvbSkge1xuXHRcdFx0YXBwbHlSZWYociwgbnVsbCwgcGFyZW50Vk5vZGUpO1xuXHRcdH1cblx0fVxuXG5cdGlmICgociA9IHZub2RlLl9jb21wb25lbnQpICE9IG51bGwpIHtcblx0XHRpZiAoci5jb21wb25lbnRXaWxsVW5tb3VudCkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ci5jb21wb25lbnRXaWxsVW5tb3VudCgpO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRvcHRpb25zLl9jYXRjaEVycm9yKGUsIHBhcmVudFZOb2RlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyLmJhc2UgPSByLl9wYXJlbnREb20gPSBudWxsO1xuXHR9XG5cblx0aWYgKChyID0gdm5vZGUuX2NoaWxkcmVuKSkge1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIFx1MDAzYyByLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAocltpXSkge1xuXHRcdFx0XHR1bm1vdW50KFxuXHRcdFx0XHRcdHJbaV0sXG5cdFx0XHRcdFx0cGFyZW50Vk5vZGUsXG5cdFx0XHRcdFx0c2tpcFJlbW92ZSB8fCB0eXBlb2Ygdm5vZGUudHlwZSAhPSAnZnVuY3Rpb24nXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKCFza2lwUmVtb3ZlIFx1MDAyNlx1MDAyNiB2bm9kZS5fZG9tICE9IG51bGwpIHtcblx0XHRyZW1vdmVOb2RlKHZub2RlLl9kb20pO1xuXHR9XG5cblx0Ly8gTXVzdCBiZSBzZXQgdG8gYHVuZGVmaW5lZGAgdG8gcHJvcGVybHkgY2xlYW4gdXAgYF9uZXh0RG9tYFxuXHQvLyBmb3Igd2hpY2ggYG51bGxgIGlzIGEgdmFsaWQgdmFsdWUuIFNlZSBjb21tZW50IGluIGBjcmVhdGUtZWxlbWVudC5qc2Bcblx0dm5vZGUuX2NvbXBvbmVudCA9IHZub2RlLl9wYXJlbnQgPSB2bm9kZS5fZG9tID0gdm5vZGUuX25leHREb20gPSB1bmRlZmluZWQ7XG59XG5cbi8qKiBUaGUgYC5yZW5kZXIoKWAgbWV0aG9kIGZvciBhIFBGQyBiYWNraW5nIGluc3RhbmNlLiAqL1xuZnVuY3Rpb24gZG9SZW5kZXIocHJvcHMsIHN0YXRlLCBjb250ZXh0KSB7XG5cdHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKHByb3BzLCBjb250ZXh0KTtcbn1cbiIsICJpbXBvcnQgeyBFTVBUWV9PQkogfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjb21taXRSb290LCBkaWZmIH0gZnJvbSAnLi9kaWZmL2luZGV4JztcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIEZyYWdtZW50IH0gZnJvbSAnLi9jcmVhdGUtZWxlbWVudCc7XG5pbXBvcnQgb3B0aW9ucyBmcm9tICcuL29wdGlvbnMnO1xuaW1wb3J0IHsgc2xpY2UgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIFJlbmRlciBhIFByZWFjdCB2aXJ0dWFsIG5vZGUgaW50byBhIERPTSBlbGVtZW50XG4gKiBAcGFyYW0ge0NvbXBvbmVudENoaWxkfSB2bm9kZSBUaGUgdmlydHVhbCBub2RlIHRvIHJlbmRlclxuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50fSBwYXJlbnREb20gVGhlIERPTSBlbGVtZW50IHRvIHJlbmRlciBpbnRvXG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnQgfCBvYmplY3R9IFtyZXBsYWNlTm9kZV0gT3B0aW9uYWw6IEF0dGVtcHQgdG8gcmUtdXNlIGFuXG4gKiBleGlzdGluZyBET00gdHJlZSByb290ZWQgYXQgYHJlcGxhY2VOb2RlYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyKHZub2RlLCBwYXJlbnREb20sIHJlcGxhY2VOb2RlKSB7XG5cdGlmIChvcHRpb25zLl9yb290KSBvcHRpb25zLl9yb290KHZub2RlLCBwYXJlbnREb20pO1xuXG5cdC8vIFdlIGFidXNlIHRoZSBgcmVwbGFjZU5vZGVgIHBhcmFtZXRlciBpbiBgaHlkcmF0ZSgpYCB0byBzaWduYWwgaWYgd2UgYXJlIGluXG5cdC8vIGh5ZHJhdGlvbiBtb2RlIG9yIG5vdCBieSBwYXNzaW5nIHRoZSBgaHlkcmF0ZWAgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIERPTVxuXHQvLyBlbGVtZW50Li5cblx0bGV0IGlzSHlkcmF0aW5nID0gdHlwZW9mIHJlcGxhY2VOb2RlID09ICdmdW5jdGlvbic7XG5cblx0Ly8gVG8gYmUgYWJsZSB0byBzdXBwb3J0IGNhbGxpbmcgYHJlbmRlcigpYCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZVxuXHQvLyBET00gbm9kZSwgd2UgbmVlZCB0byBvYnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIHByZXZpb3VzIHRyZWUuIFdlIGRvXG5cdC8vIHRoaXMgYnkgYXNzaWduaW5nIGEgbmV3IGBfY2hpbGRyZW5gIHByb3BlcnR5IHRvIERPTSBub2RlcyB3aGljaCBwb2ludHNcblx0Ly8gdG8gdGhlIGxhc3QgcmVuZGVyZWQgdHJlZS4gQnkgZGVmYXVsdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBwcmVzZW50LCB3aGljaFxuXHQvLyBtZWFucyB0aGF0IHdlIGFyZSBtb3VudGluZyBhIG5ldyB0cmVlIGZvciB0aGUgZmlyc3QgdGltZS5cblx0bGV0IG9sZFZOb2RlID0gaXNIeWRyYXRpbmdcblx0XHQ/IG51bGxcblx0XHQ6IChyZXBsYWNlTm9kZSBcdTAwMjZcdTAwMjYgcmVwbGFjZU5vZGUuX2NoaWxkcmVuKSB8fCBwYXJlbnREb20uX2NoaWxkcmVuO1xuXG5cdHZub2RlID0gKCghaXNIeWRyYXRpbmcgXHUwMDI2XHUwMDI2IHJlcGxhY2VOb2RlKSB8fCBwYXJlbnREb20pLl9jaGlsZHJlbiA9XG5cdFx0Y3JlYXRlRWxlbWVudChGcmFnbWVudCwgbnVsbCwgW3Zub2RlXSk7XG5cblx0Ly8gTGlzdCBvZiBlZmZlY3RzIHRoYXQgbmVlZCB0byBiZSBjYWxsZWQgYWZ0ZXIgZGlmZmluZy5cblx0bGV0IGNvbW1pdFF1ZXVlID0gW10sXG5cdFx0cmVmUXVldWUgPSBbXTtcblx0ZGlmZihcblx0XHRwYXJlbnREb20sXG5cdFx0Ly8gRGV0ZXJtaW5lIHRoZSBuZXcgdm5vZGUgdHJlZSBhbmQgc3RvcmUgaXQgb24gdGhlIERPTSBlbGVtZW50IG9uXG5cdFx0Ly8gb3VyIGN1c3RvbSBgX2NoaWxkcmVuYCBwcm9wZXJ0eS5cblx0XHR2bm9kZSxcblx0XHRvbGRWTm9kZSB8fCBFTVBUWV9PQkosXG5cdFx0RU1QVFlfT0JKLFxuXHRcdHBhcmVudERvbS5uYW1lc3BhY2VVUkksXG5cdFx0IWlzSHlkcmF0aW5nIFx1MDAyNlx1MDAyNiByZXBsYWNlTm9kZVxuXHRcdFx0PyBbcmVwbGFjZU5vZGVdXG5cdFx0XHQ6IG9sZFZOb2RlXG5cdFx0XHRcdD8gbnVsbFxuXHRcdFx0XHQ6IHBhcmVudERvbS5maXJzdENoaWxkXG5cdFx0XHRcdFx0PyBzbGljZS5jYWxsKHBhcmVudERvbS5jaGlsZE5vZGVzKVxuXHRcdFx0XHRcdDogbnVsbCxcblx0XHRjb21taXRRdWV1ZSxcblx0XHQhaXNIeWRyYXRpbmcgXHUwMDI2XHUwMDI2IHJlcGxhY2VOb2RlXG5cdFx0XHQ/IHJlcGxhY2VOb2RlXG5cdFx0XHQ6IG9sZFZOb2RlXG5cdFx0XHRcdD8gb2xkVk5vZGUuX2RvbVxuXHRcdFx0XHQ6IHBhcmVudERvbS5maXJzdENoaWxkLFxuXHRcdGlzSHlkcmF0aW5nLFxuXHRcdHJlZlF1ZXVlXG5cdCk7XG5cblx0Ly8gRmx1c2ggYWxsIHF1ZXVlZCBlZmZlY3RzXG5cdGNvbW1pdFJvb3QoY29tbWl0UXVldWUsIHZub2RlLCByZWZRdWV1ZSk7XG59XG5cbi8qKlxuICogVXBkYXRlIGFuIGV4aXN0aW5nIERPTSBlbGVtZW50IHdpdGggZGF0YSBmcm9tIGEgUHJlYWN0IHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtDb21wb25lbnRDaGlsZH0gdm5vZGUgVGhlIHZpcnR1YWwgbm9kZSB0byByZW5kZXJcbiAqIEBwYXJhbSB7UHJlYWN0RWxlbWVudH0gcGFyZW50RG9tIFRoZSBET00gZWxlbWVudCB0byB1cGRhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGh5ZHJhdGUodm5vZGUsIHBhcmVudERvbSkge1xuXHRyZW5kZXIodm5vZGUsIHBhcmVudERvbSwgaHlkcmF0ZSk7XG59XG4iLCAiaW1wb3J0IHsgYXNzaWduLCBzbGljZSB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBjcmVhdGVWTm9kZSB9IGZyb20gJy4vY3JlYXRlLWVsZW1lbnQnO1xuXG4vKipcbiAqIENsb25lcyB0aGUgZ2l2ZW4gVk5vZGUsIG9wdGlvbmFsbHkgYWRkaW5nIGF0dHJpYnV0ZXMvcHJvcHMgYW5kIHJlcGxhY2luZyBpdHNcbiAqIGNoaWxkcmVuLlxuICogQHBhcmFtIHtWTm9kZX0gdm5vZGUgVGhlIHZpcnR1YWwgRE9NIGVsZW1lbnQgdG8gY2xvbmVcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wcyBBdHRyaWJ1dGVzL3Byb3BzIHRvIGFkZCB3aGVuIGNsb25pbmdcbiAqIEBwYXJhbSB7QXJyYXlcdTAwM2NDb21wb25lbnRDaGlsZHJlblx1MDAzZX0gcmVzdCBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgd2lsbCBiZSB1c2VkXG4gKiBhcyByZXBsYWNlbWVudCBjaGlsZHJlbi5cbiAqIEByZXR1cm5zIHtWTm9kZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb25lRWxlbWVudCh2bm9kZSwgcHJvcHMsIGNoaWxkcmVuKSB7XG5cdGxldCBub3JtYWxpemVkUHJvcHMgPSBhc3NpZ24oe30sIHZub2RlLnByb3BzKSxcblx0XHRrZXksXG5cdFx0cmVmLFxuXHRcdGk7XG5cblx0bGV0IGRlZmF1bHRQcm9wcztcblxuXHRpZiAodm5vZGUudHlwZSBcdTAwMjZcdTAwMjYgdm5vZGUudHlwZS5kZWZhdWx0UHJvcHMpIHtcblx0XHRkZWZhdWx0UHJvcHMgPSB2bm9kZS50eXBlLmRlZmF1bHRQcm9wcztcblx0fVxuXG5cdGZvciAoaSBpbiBwcm9wcykge1xuXHRcdGlmIChpID09ICdrZXknKSBrZXkgPSBwcm9wc1tpXTtcblx0XHRlbHNlIGlmIChpID09ICdyZWYnKSByZWYgPSBwcm9wc1tpXTtcblx0XHRlbHNlIGlmIChwcm9wc1tpXSA9PT0gdW5kZWZpbmVkIFx1MDAyNlx1MDAyNiBkZWZhdWx0UHJvcHMgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0bm9ybWFsaXplZFByb3BzW2ldID0gZGVmYXVsdFByb3BzW2ldO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRub3JtYWxpemVkUHJvcHNbaV0gPSBwcm9wc1tpXTtcblx0XHR9XG5cdH1cblxuXHRpZiAoYXJndW1lbnRzLmxlbmd0aCBcdTAwM2UgMikge1xuXHRcdG5vcm1hbGl6ZWRQcm9wcy5jaGlsZHJlbiA9XG5cdFx0XHRhcmd1bWVudHMubGVuZ3RoIFx1MDAzZSAzID8gc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpIDogY2hpbGRyZW47XG5cdH1cblxuXHRyZXR1cm4gY3JlYXRlVk5vZGUoXG5cdFx0dm5vZGUudHlwZSxcblx0XHRub3JtYWxpemVkUHJvcHMsXG5cdFx0a2V5IHx8IHZub2RlLmtleSxcblx0XHRyZWYgfHwgdm5vZGUucmVmLFxuXHRcdG51bGxcblx0KTtcbn1cbiIsICIvKipcbiAqIEZpbmQgdGhlIGNsb3Nlc3QgZXJyb3IgYm91bmRhcnkgdG8gYSB0aHJvd24gZXJyb3IgYW5kIGNhbGwgaXRcbiAqIEBwYXJhbSB7b2JqZWN0fSBlcnJvciBUaGUgdGhyb3duIHZhbHVlXG4gKiBAcGFyYW0ge1ZOb2RlfSB2bm9kZSBUaGUgdm5vZGUgdGhhdCB0aHJldyB0aGUgZXJyb3IgdGhhdCB3YXMgY2F1Z2h0IChleGNlcHRcbiAqIGZvciB1bm1vdW50aW5nIHdoZW4gdGhpcyBwYXJhbWV0ZXIgaXMgdGhlIGhpZ2hlc3QgcGFyZW50IHRoYXQgd2FzIGJlaW5nXG4gKiB1bm1vdW50ZWQpXG4gKiBAcGFyYW0ge1ZOb2RlfSBbb2xkVk5vZGVdXG4gKiBAcGFyYW0ge0Vycm9ySW5mb30gW2Vycm9ySW5mb11cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9jYXRjaEVycm9yKGVycm9yLCB2bm9kZSwgb2xkVk5vZGUsIGVycm9ySW5mbykge1xuXHQvKiogQHR5cGUge0NvbXBvbmVudH0gKi9cblx0bGV0IGNvbXBvbmVudCxcblx0XHQvKiogQHR5cGUge0NvbXBvbmVudFR5cGV9ICovXG5cdFx0Y3Rvcixcblx0XHQvKiogQHR5cGUge2Jvb2xlYW59ICovXG5cdFx0aGFuZGxlZDtcblxuXHRmb3IgKDsgKHZub2RlID0gdm5vZGUuX3BhcmVudCk7ICkge1xuXHRcdGlmICgoY29tcG9uZW50ID0gdm5vZGUuX2NvbXBvbmVudCkgXHUwMDI2XHUwMDI2ICFjb21wb25lbnQuX3Byb2Nlc3NpbmdFeGNlcHRpb24pIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGN0b3IgPSBjb21wb25lbnQuY29uc3RydWN0b3I7XG5cblx0XHRcdFx0aWYgKGN0b3IgXHUwMDI2XHUwMDI2IGN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yICE9IG51bGwpIHtcblx0XHRcdFx0XHRjb21wb25lbnQuc2V0U3RhdGUoY3Rvci5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoZXJyb3IpKTtcblx0XHRcdFx0XHRoYW5kbGVkID0gY29tcG9uZW50Ll9kaXJ0eTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChjb21wb25lbnQuY29tcG9uZW50RGlkQ2F0Y2ggIT0gbnVsbCkge1xuXHRcdFx0XHRcdGNvbXBvbmVudC5jb21wb25lbnREaWRDYXRjaChlcnJvciwgZXJyb3JJbmZvIHx8IHt9KTtcblx0XHRcdFx0XHRoYW5kbGVkID0gY29tcG9uZW50Ll9kaXJ0eTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFRoaXMgaXMgYW4gZXJyb3IgYm91bmRhcnkuIE1hcmsgaXQgYXMgaGF2aW5nIGJhaWxlZCBvdXQsIGFuZCB3aGV0aGVyIGl0IHdhcyBtaWQtaHlkcmF0aW9uLlxuXHRcdFx0XHRpZiAoaGFuZGxlZCkge1xuXHRcdFx0XHRcdHJldHVybiAoY29tcG9uZW50Ll9wZW5kaW5nRXJyb3IgPSBjb21wb25lbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdGVycm9yID0gZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHR0aHJvdyBlcnJvcjtcbn1cbiIsICJpbXBvcnQgeyBvcHRpb25zIGFzIF9vcHRpb25zIH0gZnJvbSAncHJlYWN0JztcblxuLyoqIEB0eXBlIHtudW1iZXJ9ICovXG5sZXQgY3VycmVudEluZGV4O1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH0gKi9cbmxldCBjdXJyZW50Q29tcG9uZW50O1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH0gKi9cbmxldCBwcmV2aW91c0NvbXBvbmVudDtcblxuLyoqIEB0eXBlIHtudW1iZXJ9ICovXG5sZXQgY3VycmVudEhvb2sgPSAwO1xuXG4vKiogQHR5cGUge0FycmF5XHUwMDNjaW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50XHUwMDNlfSAqL1xubGV0IGFmdGVyUGFpbnRFZmZlY3RzID0gW107XG5cbi8vIENhc3QgdG8gdXNlIGludGVybmFsIE9wdGlvbnMgdHlwZVxuY29uc3Qgb3B0aW9ucyA9IC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuT3B0aW9uc30gKi8gKF9vcHRpb25zKTtcblxubGV0IG9sZEJlZm9yZURpZmYgPSBvcHRpb25zLl9kaWZmO1xubGV0IG9sZEJlZm9yZVJlbmRlciA9IG9wdGlvbnMuX3JlbmRlcjtcbmxldCBvbGRBZnRlckRpZmYgPSBvcHRpb25zLmRpZmZlZDtcbmxldCBvbGRDb21taXQgPSBvcHRpb25zLl9jb21taXQ7XG5sZXQgb2xkQmVmb3JlVW5tb3VudCA9IG9wdGlvbnMudW5tb3VudDtcbmxldCBvbGRSb290ID0gb3B0aW9ucy5fcm9vdDtcblxuY29uc3QgUkFGX1RJTUVPVVQgPSAxMDA7XG5sZXQgcHJldlJhZjtcblxuLyoqIEB0eXBlIHsodm5vZGU6IGltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlKSA9XHUwMDNlIHZvaWR9ICovXG5vcHRpb25zLl9kaWZmID0gdm5vZGUgPVx1MDAzZSB7XG5cdGN1cnJlbnRDb21wb25lbnQgPSBudWxsO1xuXHRpZiAob2xkQmVmb3JlRGlmZikgb2xkQmVmb3JlRGlmZih2bm9kZSk7XG59O1xuXG5vcHRpb25zLl9yb290ID0gKHZub2RlLCBwYXJlbnREb20pID1cdTAwM2Uge1xuXHRpZiAodm5vZGUgXHUwMDI2XHUwMDI2IHBhcmVudERvbS5fY2hpbGRyZW4gXHUwMDI2XHUwMDI2IHBhcmVudERvbS5fY2hpbGRyZW4uX21hc2spIHtcblx0XHR2bm9kZS5fbWFzayA9IHBhcmVudERvbS5fY2hpbGRyZW4uX21hc2s7XG5cdH1cblxuXHRpZiAob2xkUm9vdCkgb2xkUm9vdCh2bm9kZSwgcGFyZW50RG9tKTtcbn07XG5cbi8qKiBAdHlwZSB7KHZub2RlOiBpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZSkgPVx1MDAzZSB2b2lkfSAqL1xub3B0aW9ucy5fcmVuZGVyID0gdm5vZGUgPVx1MDAzZSB7XG5cdGlmIChvbGRCZWZvcmVSZW5kZXIpIG9sZEJlZm9yZVJlbmRlcih2bm9kZSk7XG5cblx0Y3VycmVudENvbXBvbmVudCA9IHZub2RlLl9jb21wb25lbnQ7XG5cdGN1cnJlbnRJbmRleCA9IDA7XG5cblx0Y29uc3QgaG9va3MgPSBjdXJyZW50Q29tcG9uZW50Ll9faG9va3M7XG5cdGlmIChob29rcykge1xuXHRcdGlmIChwcmV2aW91c0NvbXBvbmVudCA9PT0gY3VycmVudENvbXBvbmVudCkge1xuXHRcdFx0aG9va3MuX3BlbmRpbmdFZmZlY3RzID0gW107XG5cdFx0XHRjdXJyZW50Q29tcG9uZW50Ll9yZW5kZXJDYWxsYmFja3MgPSBbXTtcblx0XHRcdGhvb2tzLl9saXN0LmZvckVhY2goaG9va0l0ZW0gPVx1MDAzZSB7XG5cdFx0XHRcdGlmIChob29rSXRlbS5fbmV4dFZhbHVlKSB7XG5cdFx0XHRcdFx0aG9va0l0ZW0uX3ZhbHVlID0gaG9va0l0ZW0uX25leHRWYWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRob29rSXRlbS5fcGVuZGluZ0FyZ3MgPSBob29rSXRlbS5fbmV4dFZhbHVlID0gdW5kZWZpbmVkO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGhvb2tzLl9wZW5kaW5nRWZmZWN0cy5mb3JFYWNoKGludm9rZUNsZWFudXApO1xuXHRcdFx0aG9va3MuX3BlbmRpbmdFZmZlY3RzLmZvckVhY2goaW52b2tlRWZmZWN0KTtcblx0XHRcdGhvb2tzLl9wZW5kaW5nRWZmZWN0cyA9IFtdO1xuXHRcdFx0Y3VycmVudEluZGV4ID0gMDtcblx0XHR9XG5cdH1cblx0cHJldmlvdXNDb21wb25lbnQgPSBjdXJyZW50Q29tcG9uZW50O1xufTtcblxuLyoqIEB0eXBlIHsodm5vZGU6IGltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlKSA9XHUwMDNlIHZvaWR9ICovXG5vcHRpb25zLmRpZmZlZCA9IHZub2RlID1cdTAwM2Uge1xuXHRpZiAob2xkQWZ0ZXJEaWZmKSBvbGRBZnRlckRpZmYodm5vZGUpO1xuXG5cdGNvbnN0IGMgPSB2bm9kZS5fY29tcG9uZW50O1xuXHRpZiAoYyBcdTAwMjZcdTAwMjYgYy5fX2hvb2tzKSB7XG5cdFx0aWYgKGMuX19ob29rcy5fcGVuZGluZ0VmZmVjdHMubGVuZ3RoKSBhZnRlclBhaW50KGFmdGVyUGFpbnRFZmZlY3RzLnB1c2goYykpO1xuXHRcdGMuX19ob29rcy5fbGlzdC5mb3JFYWNoKGhvb2tJdGVtID1cdTAwM2Uge1xuXHRcdFx0aWYgKGhvb2tJdGVtLl9wZW5kaW5nQXJncykge1xuXHRcdFx0XHRob29rSXRlbS5fYXJncyA9IGhvb2tJdGVtLl9wZW5kaW5nQXJncztcblx0XHRcdH1cblx0XHRcdGhvb2tJdGVtLl9wZW5kaW5nQXJncyA9IHVuZGVmaW5lZDtcblx0XHR9KTtcblx0fVxuXHRwcmV2aW91c0NvbXBvbmVudCA9IGN1cnJlbnRDb21wb25lbnQgPSBudWxsO1xufTtcblxuLy8gVE9ETzogSW1wcm92ZSB0eXBpbmcgb2YgY29tbWl0UXVldWUgcGFyYW1ldGVyXG4vKiogQHR5cGUgeyh2bm9kZTogaW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGUsIGNvbW1pdFF1ZXVlOiBhbnkpID1cdTAwM2Ugdm9pZH0gKi9cbm9wdGlvbnMuX2NvbW1pdCA9ICh2bm9kZSwgY29tbWl0UXVldWUpID1cdTAwM2Uge1xuXHRjb21taXRRdWV1ZS5zb21lKGNvbXBvbmVudCA9XHUwMDNlIHtcblx0XHR0cnkge1xuXHRcdFx0Y29tcG9uZW50Ll9yZW5kZXJDYWxsYmFja3MuZm9yRWFjaChpbnZva2VDbGVhbnVwKTtcblx0XHRcdGNvbXBvbmVudC5fcmVuZGVyQ2FsbGJhY2tzID0gY29tcG9uZW50Ll9yZW5kZXJDYWxsYmFja3MuZmlsdGVyKGNiID1cdTAwM2Vcblx0XHRcdFx0Y2IuX3ZhbHVlID8gaW52b2tlRWZmZWN0KGNiKSA6IHRydWVcblx0XHRcdCk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0Y29tbWl0UXVldWUuc29tZShjID1cdTAwM2Uge1xuXHRcdFx0XHRpZiAoYy5fcmVuZGVyQ2FsbGJhY2tzKSBjLl9yZW5kZXJDYWxsYmFja3MgPSBbXTtcblx0XHRcdH0pO1xuXHRcdFx0Y29tbWl0UXVldWUgPSBbXTtcblx0XHRcdG9wdGlvbnMuX2NhdGNoRXJyb3IoZSwgY29tcG9uZW50Ll92bm9kZSk7XG5cdFx0fVxuXHR9KTtcblxuXHRpZiAob2xkQ29tbWl0KSBvbGRDb21taXQodm5vZGUsIGNvbW1pdFF1ZXVlKTtcbn07XG5cbi8qKiBAdHlwZSB7KHZub2RlOiBpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZSkgPVx1MDAzZSB2b2lkfSAqL1xub3B0aW9ucy51bm1vdW50ID0gdm5vZGUgPVx1MDAzZSB7XG5cdGlmIChvbGRCZWZvcmVVbm1vdW50KSBvbGRCZWZvcmVVbm1vdW50KHZub2RlKTtcblxuXHRjb25zdCBjID0gdm5vZGUuX2NvbXBvbmVudDtcblx0aWYgKGMgXHUwMDI2XHUwMDI2IGMuX19ob29rcykge1xuXHRcdGxldCBoYXNFcnJvcmVkO1xuXHRcdGMuX19ob29rcy5fbGlzdC5mb3JFYWNoKHMgPVx1MDAzZSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRpbnZva2VDbGVhbnVwKHMpO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRoYXNFcnJvcmVkID0gZTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRjLl9faG9va3MgPSB1bmRlZmluZWQ7XG5cdFx0aWYgKGhhc0Vycm9yZWQpIG9wdGlvbnMuX2NhdGNoRXJyb3IoaGFzRXJyb3JlZCwgYy5fdm5vZGUpO1xuXHR9XG59O1xuXG4vKipcbiAqIEdldCBhIGhvb2sncyBzdGF0ZSBmcm9tIHRoZSBjdXJyZW50Q29tcG9uZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBob29rIHRvIGdldFxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGUgVGhlIGluZGV4IG9mIHRoZSBob29rIHRvIGdldFxuICogQHJldHVybnMge2FueX1cbiAqL1xuZnVuY3Rpb24gZ2V0SG9va1N0YXRlKGluZGV4LCB0eXBlKSB7XG5cdGlmIChvcHRpb25zLl9ob29rKSB7XG5cdFx0b3B0aW9ucy5faG9vayhjdXJyZW50Q29tcG9uZW50LCBpbmRleCwgY3VycmVudEhvb2sgfHwgdHlwZSk7XG5cdH1cblx0Y3VycmVudEhvb2sgPSAwO1xuXG5cdC8vIExhcmdlbHkgaW5zcGlyZWQgYnk6XG5cdC8vICogaHR0cHM6Ly9naXRodWIuY29tL21pY2hhZWwta2xlaW4vZnVuY3kuanMvYmxvYi9mNmJlNzM0NjhlNmVjNDZiMGZmNWFhM2NjNGM5YmFmNzJhMjkwMjVhL3NyYy9ob29rcy9jb3JlX2hvb2tzLm1qc1xuXHQvLyAqIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNoYWVsLWtsZWluL2Z1bmN5LmpzL2Jsb2IvNjUwYmVhYTU4YzQzYzMzYTc0ODIwYTNjOThiM2M3MDc5Y2YyZTMzMy9zcmMvcmVuZGVyZXIubWpzXG5cdC8vIE90aGVyIGltcGxlbWVudGF0aW9ucyB0byBsb29rIGF0OlxuXHQvLyAqIGh0dHBzOi8vY29kZXNhbmRib3guaW8vcy9tbm94MDVxcDhcblx0Y29uc3QgaG9va3MgPVxuXHRcdGN1cnJlbnRDb21wb25lbnQuX19ob29rcyB8fFxuXHRcdChjdXJyZW50Q29tcG9uZW50Ll9faG9va3MgPSB7XG5cdFx0XHRfbGlzdDogW10sXG5cdFx0XHRfcGVuZGluZ0VmZmVjdHM6IFtdXG5cdFx0fSk7XG5cblx0aWYgKGluZGV4IFx1MDAzZT0gaG9va3MuX2xpc3QubGVuZ3RoKSB7XG5cdFx0aG9va3MuX2xpc3QucHVzaCh7fSk7XG5cdH1cblxuXHRyZXR1cm4gaG9va3MuX2xpc3RbaW5kZXhdO1xufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7dW5rbm93bn0gU1xuICogQHBhcmFtIHtpbXBvcnQoJy4vaW5kZXgnKS5EaXNwYXRjaFx1MDAzY2ltcG9ydCgnLi9pbmRleCcpLlN0YXRlVXBkYXRlclx1MDAzY1NcdTAwM2VcdTAwM2V9IFtpbml0aWFsU3RhdGVdXG4gKiBAcmV0dXJucyB7W1MsIChzdGF0ZTogUykgPVx1MDAzZSB2b2lkXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVN0YXRlKGluaXRpYWxTdGF0ZSkge1xuXHRjdXJyZW50SG9vayA9IDE7XG5cdHJldHVybiB1c2VSZWR1Y2VyKGludm9rZU9yUmV0dXJuLCBpbml0aWFsU3RhdGUpO1xufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7dW5rbm93bn0gU1xuICogQHRlbXBsYXRlIHt1bmtub3dufSBBXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbmRleCcpLlJlZHVjZXJcdTAwM2NTLCBBXHUwMDNlfSByZWR1Y2VyXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbmRleCcpLkRpc3BhdGNoXHUwMDNjaW1wb3J0KCcuL2luZGV4JykuU3RhdGVVcGRhdGVyXHUwMDNjU1x1MDAzZVx1MDAzZX0gaW5pdGlhbFN0YXRlXG4gKiBAcGFyYW0geyhpbml0aWFsU3RhdGU6IGFueSkgPVx1MDAzZSB2b2lkfSBbaW5pdF1cbiAqIEByZXR1cm5zIHtbIFMsIChzdGF0ZTogUykgPVx1MDAzZSB2b2lkIF19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VSZWR1Y2VyKHJlZHVjZXIsIGluaXRpYWxTdGF0ZSwgaW5pdCkge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlJlZHVjZXJIb29rU3RhdGV9ICovXG5cdGNvbnN0IGhvb2tTdGF0ZSA9IGdldEhvb2tTdGF0ZShjdXJyZW50SW5kZXgrKywgMik7XG5cdGhvb2tTdGF0ZS5fcmVkdWNlciA9IHJlZHVjZXI7XG5cdGlmICghaG9va1N0YXRlLl9jb21wb25lbnQpIHtcblx0XHRob29rU3RhdGUuX3ZhbHVlID0gW1xuXHRcdFx0IWluaXQgPyBpbnZva2VPclJldHVybih1bmRlZmluZWQsIGluaXRpYWxTdGF0ZSkgOiBpbml0KGluaXRpYWxTdGF0ZSksXG5cblx0XHRcdGFjdGlvbiA9XHUwMDNlIHtcblx0XHRcdFx0Y29uc3QgY3VycmVudFZhbHVlID0gaG9va1N0YXRlLl9uZXh0VmFsdWVcblx0XHRcdFx0XHQ/IGhvb2tTdGF0ZS5fbmV4dFZhbHVlWzBdXG5cdFx0XHRcdFx0OiBob29rU3RhdGUuX3ZhbHVlWzBdO1xuXHRcdFx0XHRjb25zdCBuZXh0VmFsdWUgPSBob29rU3RhdGUuX3JlZHVjZXIoY3VycmVudFZhbHVlLCBhY3Rpb24pO1xuXG5cdFx0XHRcdGlmIChjdXJyZW50VmFsdWUgIT09IG5leHRWYWx1ZSkge1xuXHRcdFx0XHRcdGhvb2tTdGF0ZS5fbmV4dFZhbHVlID0gW25leHRWYWx1ZSwgaG9va1N0YXRlLl92YWx1ZVsxXV07XG5cdFx0XHRcdFx0aG9va1N0YXRlLl9jb21wb25lbnQuc2V0U3RhdGUoe30pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XTtcblxuXHRcdGhvb2tTdGF0ZS5fY29tcG9uZW50ID0gY3VycmVudENvbXBvbmVudDtcblxuXHRcdGlmICghY3VycmVudENvbXBvbmVudC5faGFzU2N1RnJvbUhvb2tzKSB7XG5cdFx0XHRjdXJyZW50Q29tcG9uZW50Ll9oYXNTY3VGcm9tSG9va3MgPSB0cnVlO1xuXHRcdFx0bGV0IHByZXZTY3UgPSBjdXJyZW50Q29tcG9uZW50LnNob3VsZENvbXBvbmVudFVwZGF0ZTtcblx0XHRcdGNvbnN0IHByZXZDV1UgPSBjdXJyZW50Q29tcG9uZW50LmNvbXBvbmVudFdpbGxVcGRhdGU7XG5cblx0XHRcdC8vIElmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGZvcmNlZCB1cGRhdGUgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAgd2lsbFxuXHRcdFx0Ly8gbm90IGJlIGNhbGxlZC4gQnV0IHdlIHVzZSB0aGF0IHRvIHVwZGF0ZSB0aGUgaG9vayB2YWx1ZXMsIHNvIHdlXG5cdFx0XHQvLyBuZWVkIHRvIGNhbGwgaXQuXG5cdFx0XHRjdXJyZW50Q29tcG9uZW50LmNvbXBvbmVudFdpbGxVcGRhdGUgPSBmdW5jdGlvbiAocCwgcywgYykge1xuXHRcdFx0XHRpZiAodGhpcy5fZm9yY2UpIHtcblx0XHRcdFx0XHRsZXQgdG1wID0gcHJldlNjdTtcblx0XHRcdFx0XHQvLyBDbGVhciB0byBhdm9pZCBvdGhlciBzQ1UgaG9va3MgZnJvbSBiZWluZyBjYWxsZWRcblx0XHRcdFx0XHRwcmV2U2N1ID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdHVwZGF0ZUhvb2tTdGF0ZShwLCBzLCBjKTtcblx0XHRcdFx0XHRwcmV2U2N1ID0gdG1wO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHByZXZDV1UpIHByZXZDV1UuY2FsbCh0aGlzLCBwLCBzLCBjKTtcblx0XHRcdH07XG5cblx0XHRcdC8vIFRoaXMgU0NVIGhhcyB0aGUgcHVycG9zZSBvZiBiYWlsaW5nIG91dCBhZnRlciByZXBlYXRlZCB1cGRhdGVzXG5cdFx0XHQvLyB0byBzdGF0ZWZ1bCBob29rcy5cblx0XHRcdC8vIHdlIHN0b3JlIHRoZSBuZXh0IHZhbHVlIGluIF9uZXh0VmFsdWVbMF0gYW5kIGtlZXAgZG9pbmcgdGhhdCBmb3IgYWxsXG5cdFx0XHQvLyBzdGF0ZSBzZXR0ZXJzLCBpZiB3ZSBoYXZlIG5leHQgc3RhdGVzIGFuZFxuXHRcdFx0Ly8gYWxsIG5leHQgc3RhdGVzIHdpdGhpbiBhIGNvbXBvbmVudCBlbmQgdXAgYmVpbmcgZXF1YWwgdG8gdGhlaXIgb3JpZ2luYWwgc3RhdGVcblx0XHRcdC8vIHdlIGFyZSBzYWZlIHRvIGJhaWwgb3V0IGZvciB0aGlzIHNwZWNpZmljIGNvbXBvbmVudC5cblx0XHRcdC8qKlxuXHRcdFx0ICpcblx0XHRcdCAqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnRbXCJzaG91bGRDb21wb25lbnRVcGRhdGVcIl19XG5cdFx0XHQgKi9cblx0XHRcdC8vIEB0cy1pZ25vcmUgLSBXZSBkb24ndCB1c2UgVFMgdG8gZG93bnRyYW5zcGlsZVxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWlubmVyLWRlY2xhcmF0aW9uc1xuXHRcdFx0ZnVuY3Rpb24gdXBkYXRlSG9va1N0YXRlKHAsIHMsIGMpIHtcblx0XHRcdFx0aWYgKCFob29rU3RhdGUuX2NvbXBvbmVudC5fX2hvb2tzKSByZXR1cm4gdHJ1ZTtcblxuXHRcdFx0XHQvKiogQHR5cGUgeyh4OiBpbXBvcnQoJy4vaW50ZXJuYWwnKS5Ib29rU3RhdGUpID1cdTAwM2UgeCBpcyBpbXBvcnQoJy4vaW50ZXJuYWwnKS5SZWR1Y2VySG9va1N0YXRlfSAqL1xuXHRcdFx0XHRjb25zdCBpc1N0YXRlSG9vayA9IHggPVx1MDAzZSAhIXguX2NvbXBvbmVudDtcblx0XHRcdFx0Y29uc3Qgc3RhdGVIb29rcyA9XG5cdFx0XHRcdFx0aG9va1N0YXRlLl9jb21wb25lbnQuX19ob29rcy5fbGlzdC5maWx0ZXIoaXNTdGF0ZUhvb2spO1xuXG5cdFx0XHRcdGNvbnN0IGFsbEhvb2tzRW1wdHkgPSBzdGF0ZUhvb2tzLmV2ZXJ5KHggPVx1MDAzZSAheC5fbmV4dFZhbHVlKTtcblx0XHRcdFx0Ly8gV2hlbiB3ZSBoYXZlIG5vIHVwZGF0ZWQgaG9va3MgaW4gdGhlIGNvbXBvbmVudCB3ZSBpbnZva2UgdGhlIHByZXZpb3VzIFNDVSBvclxuXHRcdFx0XHQvLyB0cmF2ZXJzZSB0aGUgVkRPTSB0cmVlIGZ1cnRoZXIuXG5cdFx0XHRcdGlmIChhbGxIb29rc0VtcHR5KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHByZXZTY3UgPyBwcmV2U2N1LmNhbGwodGhpcywgcCwgcywgYykgOiB0cnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gV2UgY2hlY2sgd2hldGhlciB3ZSBoYXZlIGNvbXBvbmVudHMgd2l0aCBhIG5leHRWYWx1ZSBzZXQgdGhhdFxuXHRcdFx0XHQvLyBoYXZlIHZhbHVlcyB0aGF0IGFyZW4ndCBlcXVhbCB0byBvbmUgYW5vdGhlciB0aGlzIHB1c2hlc1xuXHRcdFx0XHQvLyB1cyB0byB1cGRhdGUgZnVydGhlciBkb3duIHRoZSB0cmVlXG5cdFx0XHRcdGxldCBzaG91bGRVcGRhdGUgPSBmYWxzZTtcblx0XHRcdFx0c3RhdGVIb29rcy5mb3JFYWNoKGhvb2tJdGVtID1cdTAwM2Uge1xuXHRcdFx0XHRcdGlmIChob29rSXRlbS5fbmV4dFZhbHVlKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjdXJyZW50VmFsdWUgPSBob29rSXRlbS5fdmFsdWVbMF07XG5cdFx0XHRcdFx0XHRob29rSXRlbS5fdmFsdWUgPSBob29rSXRlbS5fbmV4dFZhbHVlO1xuXHRcdFx0XHRcdFx0aG9va0l0ZW0uX25leHRWYWx1ZSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdGlmIChjdXJyZW50VmFsdWUgIT09IGhvb2tJdGVtLl92YWx1ZVswXSkgc2hvdWxkVXBkYXRlID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHJldHVybiBzaG91bGRVcGRhdGUgfHwgaG9va1N0YXRlLl9jb21wb25lbnQucHJvcHMgIT09IHBcblx0XHRcdFx0XHQ/IHByZXZTY3Vcblx0XHRcdFx0XHRcdD8gcHJldlNjdS5jYWxsKHRoaXMsIHAsIHMsIGMpXG5cdFx0XHRcdFx0XHQ6IHRydWVcblx0XHRcdFx0XHQ6IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRjdXJyZW50Q29tcG9uZW50LnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IHVwZGF0ZUhvb2tTdGF0ZTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gaG9va1N0YXRlLl9uZXh0VmFsdWUgfHwgaG9va1N0YXRlLl92YWx1ZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkVmZmVjdH0gY2FsbGJhY2tcbiAqIEBwYXJhbSB7dW5rbm93bltdfSBhcmdzXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUVmZmVjdChjYWxsYmFjaywgYXJncykge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkVmZmVjdEhvb2tTdGF0ZX0gKi9cblx0Y29uc3Qgc3RhdGUgPSBnZXRIb29rU3RhdGUoY3VycmVudEluZGV4KyssIDMpO1xuXHRpZiAoIW9wdGlvbnMuX3NraXBFZmZlY3RzIFx1MDAyNlx1MDAyNiBhcmdzQ2hhbmdlZChzdGF0ZS5fYXJncywgYXJncykpIHtcblx0XHRzdGF0ZS5fdmFsdWUgPSBjYWxsYmFjaztcblx0XHRzdGF0ZS5fcGVuZGluZ0FyZ3MgPSBhcmdzO1xuXG5cdFx0Y3VycmVudENvbXBvbmVudC5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cy5wdXNoKHN0YXRlKTtcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuRWZmZWN0fSBjYWxsYmFja1xuICogQHBhcmFtIHt1bmtub3duW119IGFyZ3NcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTGF5b3V0RWZmZWN0KGNhbGxiYWNrLCBhcmdzKSB7XG5cdC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuRWZmZWN0SG9va1N0YXRlfSAqL1xuXHRjb25zdCBzdGF0ZSA9IGdldEhvb2tTdGF0ZShjdXJyZW50SW5kZXgrKywgNCk7XG5cdGlmICghb3B0aW9ucy5fc2tpcEVmZmVjdHMgXHUwMDI2XHUwMDI2IGFyZ3NDaGFuZ2VkKHN0YXRlLl9hcmdzLCBhcmdzKSkge1xuXHRcdHN0YXRlLl92YWx1ZSA9IGNhbGxiYWNrO1xuXHRcdHN0YXRlLl9wZW5kaW5nQXJncyA9IGFyZ3M7XG5cblx0XHRjdXJyZW50Q29tcG9uZW50Ll9yZW5kZXJDYWxsYmFja3MucHVzaChzdGF0ZSk7XG5cdH1cbn1cblxuLyoqIEB0eXBlIHsoaW5pdGlhbFZhbHVlOiB1bmtub3duKSA9XHUwMDNlIHVua25vd259ICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVmKGluaXRpYWxWYWx1ZSkge1xuXHRjdXJyZW50SG9vayA9IDU7XG5cdHJldHVybiB1c2VNZW1vKCgpID1cdTAwM2UgKHsgY3VycmVudDogaW5pdGlhbFZhbHVlIH0pLCBbXSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IHJlZlxuICogQHBhcmFtIHsoKSA9XHUwMDNlIG9iamVjdH0gY3JlYXRlSGFuZGxlXG4gKiBAcGFyYW0ge3Vua25vd25bXX0gYXJnc1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgY3JlYXRlSGFuZGxlLCBhcmdzKSB7XG5cdGN1cnJlbnRIb29rID0gNjtcblx0dXNlTGF5b3V0RWZmZWN0KFxuXHRcdCgpID1cdTAwM2Uge1xuXHRcdFx0aWYgKHR5cGVvZiByZWYgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRyZWYoY3JlYXRlSGFuZGxlKCkpO1xuXHRcdFx0XHRyZXR1cm4gKCkgPVx1MDAzZSByZWYobnVsbCk7XG5cdFx0XHR9IGVsc2UgaWYgKHJlZikge1xuXHRcdFx0XHRyZWYuY3VycmVudCA9IGNyZWF0ZUhhbmRsZSgpO1xuXHRcdFx0XHRyZXR1cm4gKCkgPVx1MDAzZSAocmVmLmN1cnJlbnQgPSBudWxsKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGFyZ3MgPT0gbnVsbCA/IGFyZ3MgOiBhcmdzLmNvbmNhdChyZWYpXG5cdCk7XG59XG5cbi8qKlxuICogQHRlbXBsYXRlIHt1bmtub3dufSBUXG4gKiBAcGFyYW0geygpID1cdTAwM2UgVH0gZmFjdG9yeVxuICogQHBhcmFtIHt1bmtub3duW119IGFyZ3NcbiAqIEByZXR1cm5zIHtUfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTWVtbyhmYWN0b3J5LCBhcmdzKSB7XG5cdC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuTWVtb0hvb2tTdGF0ZVx1MDAzY1RcdTAwM2V9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCA3KTtcblx0aWYgKGFyZ3NDaGFuZ2VkKHN0YXRlLl9hcmdzLCBhcmdzKSkge1xuXHRcdHN0YXRlLl92YWx1ZSA9IGZhY3RvcnkoKTtcblx0XHRzdGF0ZS5fYXJncyA9IGFyZ3M7XG5cdFx0c3RhdGUuX2ZhY3RvcnkgPSBmYWN0b3J5O1xuXHR9XG5cblx0cmV0dXJuIHN0YXRlLl92YWx1ZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0geygpID1cdTAwM2Ugdm9pZH0gY2FsbGJhY2tcbiAqIEBwYXJhbSB7dW5rbm93bltdfSBhcmdzXG4gKiBAcmV0dXJucyB7KCkgPVx1MDAzZSB2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ2FsbGJhY2soY2FsbGJhY2ssIGFyZ3MpIHtcblx0Y3VycmVudEhvb2sgPSA4O1xuXHRyZXR1cm4gdXNlTWVtbygoKSA9XHUwMDNlIGNhbGxiYWNrLCBhcmdzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlByZWFjdENvbnRleHR9IGNvbnRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNvbnRleHQoY29udGV4dCkge1xuXHRjb25zdCBwcm92aWRlciA9IGN1cnJlbnRDb21wb25lbnQuY29udGV4dFtjb250ZXh0Ll9pZF07XG5cdC8vIFdlIGNvdWxkIHNraXAgdGhpcyBjYWxsIGhlcmUsIGJ1dCB0aGFuIHdlJ2Qgbm90IGNhbGxcblx0Ly8gYG9wdGlvbnMuX2hvb2tgLiBXZSBuZWVkIHRvIGRvIHRoYXQgaW4gb3JkZXIgdG8gbWFrZVxuXHQvLyB0aGUgZGV2dG9vbHMgYXdhcmUgb2YgdGhpcyBob29rLlxuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbnRleHRIb29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCA5KTtcblx0Ly8gVGhlIGRldnRvb2xzIG5lZWRzIGFjY2VzcyB0byB0aGUgY29udGV4dCBvYmplY3QgdG9cblx0Ly8gYmUgYWJsZSB0byBwdWxsIG9mIHRoZSBkZWZhdWx0IHZhbHVlIHdoZW4gbm8gcHJvdmlkZXJcblx0Ly8gaXMgcHJlc2VudCBpbiB0aGUgdHJlZS5cblx0c3RhdGUuX2NvbnRleHQgPSBjb250ZXh0O1xuXHRpZiAoIXByb3ZpZGVyKSByZXR1cm4gY29udGV4dC5fZGVmYXVsdFZhbHVlO1xuXHQvLyBUaGlzIGlzIHByb2JhYmx5IG5vdCBzYWZlIHRvIGNvbnZlcnQgdG8gXCIhXCJcblx0aWYgKHN0YXRlLl92YWx1ZSA9PSBudWxsKSB7XG5cdFx0c3RhdGUuX3ZhbHVlID0gdHJ1ZTtcblx0XHRwcm92aWRlci5zdWIoY3VycmVudENvbXBvbmVudCk7XG5cdH1cblx0cmV0dXJuIHByb3ZpZGVyLnByb3BzLnZhbHVlO1xufVxuXG4vKipcbiAqIERpc3BsYXkgYSBjdXN0b20gbGFiZWwgZm9yIGEgY3VzdG9tIGhvb2sgZm9yIHRoZSBkZXZ0b29scyBwYW5lbFxuICogQHR5cGUge1x1MDAzY1RcdTAwM2UodmFsdWU6IFQsIGNiPzogKHZhbHVlOiBUKSA9XHUwMDNlIHN0cmluZyB8IG51bWJlcikgPVx1MDAzZSB2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRGVidWdWYWx1ZSh2YWx1ZSwgZm9ybWF0dGVyKSB7XG5cdGlmIChvcHRpb25zLnVzZURlYnVnVmFsdWUpIHtcblx0XHRvcHRpb25zLnVzZURlYnVnVmFsdWUoXG5cdFx0XHRmb3JtYXR0ZXIgPyBmb3JtYXR0ZXIodmFsdWUpIDogLyoqIEB0eXBlIHthbnl9Ki8gKHZhbHVlKVxuXHRcdCk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0geyhlcnJvcjogdW5rbm93biwgZXJyb3JJbmZvOiBpbXBvcnQoJ3ByZWFjdCcpLkVycm9ySW5mbykgPVx1MDAzZSB2b2lkfSBjYlxuICogQHJldHVybnMge1t1bmtub3duLCAoKSA9XHUwMDNlIHZvaWRdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRXJyb3JCb3VuZGFyeShjYikge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkVycm9yQm91bmRhcnlIb29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCAxMCk7XG5cdGNvbnN0IGVyclN0YXRlID0gdXNlU3RhdGUoKTtcblx0c3RhdGUuX3ZhbHVlID0gY2I7XG5cdGlmICghY3VycmVudENvbXBvbmVudC5jb21wb25lbnREaWRDYXRjaCkge1xuXHRcdGN1cnJlbnRDb21wb25lbnQuY29tcG9uZW50RGlkQ2F0Y2ggPSAoZXJyLCBlcnJvckluZm8pID1cdTAwM2Uge1xuXHRcdFx0aWYgKHN0YXRlLl92YWx1ZSkgc3RhdGUuX3ZhbHVlKGVyciwgZXJyb3JJbmZvKTtcblx0XHRcdGVyclN0YXRlWzFdKGVycik7XG5cdFx0fTtcblx0fVxuXHRyZXR1cm4gW1xuXHRcdGVyclN0YXRlWzBdLFxuXHRcdCgpID1cdTAwM2Uge1xuXHRcdFx0ZXJyU3RhdGVbMV0odW5kZWZpbmVkKTtcblx0XHR9XG5cdF07XG59XG5cbi8qKiBAdHlwZSB7KCkgPVx1MDAzZSBzdHJpbmd9ICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSWQoKSB7XG5cdC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuSWRIb29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCAxMSk7XG5cdGlmICghc3RhdGUuX3ZhbHVlKSB7XG5cdFx0Ly8gR3JhYiBlaXRoZXIgdGhlIHJvb3Qgbm9kZSBvciB0aGUgbmVhcmVzdCBhc3luYyBib3VuZGFyeSBub2RlLlxuXHRcdC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsLmQnKS5WTm9kZX0gKi9cblx0XHRsZXQgcm9vdCA9IGN1cnJlbnRDb21wb25lbnQuX3Zub2RlO1xuXHRcdHdoaWxlIChyb290ICE9PSBudWxsIFx1MDAyNlx1MDAyNiAhcm9vdC5fbWFzayBcdTAwMjZcdTAwMjYgcm9vdC5fcGFyZW50ICE9PSBudWxsKSB7XG5cdFx0XHRyb290ID0gcm9vdC5fcGFyZW50O1xuXHRcdH1cblxuXHRcdGxldCBtYXNrID0gcm9vdC5fbWFzayB8fCAocm9vdC5fbWFzayA9IFswLCAwXSk7XG5cdFx0c3RhdGUuX3ZhbHVlID0gJ1AnICsgbWFza1swXSArICctJyArIG1hc2tbMV0rKztcblx0fVxuXG5cdHJldHVybiBzdGF0ZS5fdmFsdWU7XG59XG5cbi8qKlxuICogQWZ0ZXIgcGFpbnQgZWZmZWN0cyBjb25zdW1lci5cbiAqL1xuZnVuY3Rpb24gZmx1c2hBZnRlclBhaW50RWZmZWN0cygpIHtcblx0bGV0IGNvbXBvbmVudDtcblx0d2hpbGUgKChjb21wb25lbnQgPSBhZnRlclBhaW50RWZmZWN0cy5zaGlmdCgpKSkge1xuXHRcdGlmICghY29tcG9uZW50Ll9wYXJlbnREb20gfHwgIWNvbXBvbmVudC5fX2hvb2tzKSBjb250aW51ZTtcblx0XHR0cnkge1xuXHRcdFx0Y29tcG9uZW50Ll9faG9va3MuX3BlbmRpbmdFZmZlY3RzLmZvckVhY2goaW52b2tlQ2xlYW51cCk7XG5cdFx0XHRjb21wb25lbnQuX19ob29rcy5fcGVuZGluZ0VmZmVjdHMuZm9yRWFjaChpbnZva2VFZmZlY3QpO1xuXHRcdFx0Y29tcG9uZW50Ll9faG9va3MuX3BlbmRpbmdFZmZlY3RzID0gW107XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0Y29tcG9uZW50Ll9faG9va3MuX3BlbmRpbmdFZmZlY3RzID0gW107XG5cdFx0XHRvcHRpb25zLl9jYXRjaEVycm9yKGUsIGNvbXBvbmVudC5fdm5vZGUpO1xuXHRcdH1cblx0fVxufVxuXG5sZXQgSEFTX1JBRiA9IHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT0gJ2Z1bmN0aW9uJztcblxuLyoqXG4gKiBTY2hlZHVsZSBhIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgYWZ0ZXIgdGhlIGJyb3dzZXIgaGFzIGEgY2hhbmNlIHRvIHBhaW50IGEgbmV3IGZyYW1lLlxuICogRG8gdGhpcyBieSBjb21iaW5pbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIChyQUYpICsgc2V0VGltZW91dCB0byBpbnZva2UgYSBjYWxsYmFjayBhZnRlclxuICogdGhlIG5leHQgYnJvd3NlciBmcmFtZS5cbiAqXG4gKiBBbHNvLCBzY2hlZHVsZSBhIHRpbWVvdXQgaW4gcGFyYWxsZWwgdG8gdGhlIHRoZSByQUYgdG8gZW5zdXJlIHRoZSBjYWxsYmFjayBpcyBpbnZva2VkXG4gKiBldmVuIGlmIFJBRiBkb2Vzbid0IGZpcmUgKGZvciBleGFtcGxlIGlmIHRoZSBicm93c2VyIHRhYiBpcyBub3QgdmlzaWJsZSlcbiAqXG4gKiBAcGFyYW0geygpID1cdTAwM2Ugdm9pZH0gY2FsbGJhY2tcbiAqL1xuZnVuY3Rpb24gYWZ0ZXJOZXh0RnJhbWUoY2FsbGJhY2spIHtcblx0Y29uc3QgZG9uZSA9ICgpID1cdTAwM2Uge1xuXHRcdGNsZWFyVGltZW91dCh0aW1lb3V0KTtcblx0XHRpZiAoSEFTX1JBRikgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmKTtcblx0XHRzZXRUaW1lb3V0KGNhbGxiYWNrKTtcblx0fTtcblx0Y29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoZG9uZSwgUkFGX1RJTUVPVVQpO1xuXG5cdGxldCByYWY7XG5cdGlmIChIQVNfUkFGKSB7XG5cdFx0cmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGRvbmUpO1xuXHR9XG59XG5cbi8vIE5vdGU6IGlmIHNvbWVvbmUgdXNlZCBvcHRpb25zLmRlYm91bmNlUmVuZGVyaW5nID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lLFxuLy8gdGhlbiBlZmZlY3RzIHdpbGwgQUxXQVlTIHJ1biBvbiB0aGUgTkVYVCBmcmFtZSBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IG9uZSwgaW5jdXJyaW5nIGEgfjE2bXMgZGVsYXkuXG4vLyBQZXJoYXBzIHRoaXMgaXMgbm90IHN1Y2ggYSBiaWcgZGVhbC5cbi8qKlxuICogU2NoZWR1bGUgYWZ0ZXJQYWludEVmZmVjdHMgZmx1c2ggYWZ0ZXIgdGhlIGJyb3dzZXIgcGFpbnRzXG4gKiBAcGFyYW0ge251bWJlcn0gbmV3UXVldWVMZW5ndGhcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBhZnRlclBhaW50KG5ld1F1ZXVlTGVuZ3RoKSB7XG5cdGlmIChuZXdRdWV1ZUxlbmd0aCA9PT0gMSB8fCBwcmV2UmFmICE9PSBvcHRpb25zLnJlcXVlc3RBbmltYXRpb25GcmFtZSkge1xuXHRcdHByZXZSYWYgPSBvcHRpb25zLnJlcXVlc3RBbmltYXRpb25GcmFtZTtcblx0XHQocHJldlJhZiB8fCBhZnRlck5leHRGcmFtZSkoZmx1c2hBZnRlclBhaW50RWZmZWN0cyk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkhvb2tTdGF0ZX0gaG9va1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGludm9rZUNsZWFudXAoaG9vaykge1xuXHQvLyBBIGhvb2sgY2xlYW51cCBjYW4gaW50cm9kdWNlIGEgY2FsbCB0byByZW5kZXIgd2hpY2ggY3JlYXRlcyBhIG5ldyByb290LCB0aGlzIHdpbGwgY2FsbCBvcHRpb25zLnZub2RlXG5cdC8vIGFuZCBtb3ZlIHRoZSBjdXJyZW50Q29tcG9uZW50IGF3YXkuXG5cdGNvbnN0IGNvbXAgPSBjdXJyZW50Q29tcG9uZW50O1xuXHRsZXQgY2xlYW51cCA9IGhvb2suX2NsZWFudXA7XG5cdGlmICh0eXBlb2YgY2xlYW51cCA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0aG9vay5fY2xlYW51cCA9IHVuZGVmaW5lZDtcblx0XHRjbGVhbnVwKCk7XG5cdH1cblxuXHRjdXJyZW50Q29tcG9uZW50ID0gY29tcDtcbn1cblxuLyoqXG4gKiBJbnZva2UgYSBIb29rJ3MgZWZmZWN0XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkVmZmVjdEhvb2tTdGF0ZX0gaG9va1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGludm9rZUVmZmVjdChob29rKSB7XG5cdC8vIEEgaG9vayBjYWxsIGNhbiBpbnRyb2R1Y2UgYSBjYWxsIHRvIHJlbmRlciB3aGljaCBjcmVhdGVzIGEgbmV3IHJvb3QsIHRoaXMgd2lsbCBjYWxsIG9wdGlvbnMudm5vZGVcblx0Ly8gYW5kIG1vdmUgdGhlIGN1cnJlbnRDb21wb25lbnQgYXdheS5cblx0Y29uc3QgY29tcCA9IGN1cnJlbnRDb21wb25lbnQ7XG5cdGhvb2suX2NsZWFudXAgPSBob29rLl92YWx1ZSgpO1xuXHRjdXJyZW50Q29tcG9uZW50ID0gY29tcDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3Vua25vd25bXX0gb2xkQXJnc1xuICogQHBhcmFtIHt1bmtub3duW119IG5ld0FyZ3NcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBhcmdzQ2hhbmdlZChvbGRBcmdzLCBuZXdBcmdzKSB7XG5cdHJldHVybiAoXG5cdFx0IW9sZEFyZ3MgfHxcblx0XHRvbGRBcmdzLmxlbmd0aCAhPT0gbmV3QXJncy5sZW5ndGggfHxcblx0XHRuZXdBcmdzLnNvbWUoKGFyZywgaW5kZXgpID1cdTAwM2UgYXJnICE9PSBvbGRBcmdzW2luZGV4XSlcblx0KTtcbn1cblxuLyoqXG4gKiBAdGVtcGxhdGUgQXJnXG4gKiBAcGFyYW0ge0FyZ30gYXJnXG4gKiBAcGFyYW0geyhhcmc6IEFyZykgPVx1MDAzZSBhbnl9IGZcbiAqIEByZXR1cm5zIHthbnl9XG4gKi9cbmZ1bmN0aW9uIGludm9rZU9yUmV0dXJuKGFyZywgZikge1xuXHRyZXR1cm4gdHlwZW9mIGYgPT0gJ2Z1bmN0aW9uJyA/IGYoYXJnKSA6IGY7XG59XG4iLCAiZXhwb3J0IGNvbnN0IGVuc3VyZUFycmF5OiA8VD4oXG4gIHZhbHVlOiB1bmtub3duLFxuICBuYW1lOiBzdHJpbmcsXG4pID0+IGFzc2VydHMgdmFsdWUgaXMgVFtdID0gKHZhbHVlLCBuYW1lKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuO1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKGBcIiR7bmFtZX1cIiBtdXN0IGJlIGFuIGFycmF5IGJ1dCBhY3R1YWwgaXMgXCIke3ZhbHVlfVwiYCk7XG59O1xuIiwgImltcG9ydCB7IExpbmUsIFNjcmFwYm94IH0gZnJvbSBcIi4uLy4uL2RlcHMvc2NyYXBib3gudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5sZXQgaXNMYXRlc3REYXRhID0gZmFsc2U7XG5sZXQgbGluZXM6IHR5cGVvZiBzY3JhcGJveC5QYWdlLmxpbmVzID0gbnVsbDtcblxuc2NyYXBib3guYWRkTGlzdGVuZXIoXCJsaW5lczpjaGFuZ2VkXCIsICgpID0+IGlzTGF0ZXN0RGF0YSA9IGZhbHNlKTtcbnNjcmFwYm94LmFkZExpc3RlbmVyKFwibGF5b3V0OmNoYW5nZWRcIiwgKCkgPT4gaXNMYXRlc3REYXRhID0gZmFsc2UpO1xuXG4vKiogc2NyYXBib3guUGFnZS5saW5lc+OCkmNhY2hl44GX44Gm5Y+W5b6X44GZ44KLXG4gKlxuICogc2NyYXBib3guUGFnZS5saW5lc+OBrueUn+aIkOOBq+OBr+aZgumWk+OBjOOBi+OBi+OCi+OBruOBp+OAgeWun+mam+OBq+W/heimgeOBq+OBquOCi+OBvuOBp+WRvOOBs+WHuuOBleOBquOBhOOCiOOBhuOBq+OBmeOCi1xuICpcbiAqIEByZXR1cm4gYHNjcmFwYm94LlBhZ2UubGluZXNg44Go5ZCM44GY44CC5bi444Gr5pyA5paw44Gu44KC44Gu44GM6L+U44GV44KM44KLXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDYWNoZWRMaW5lcyA9ICgpOiByZWFkb25seSBMaW5lW10gfCBudWxsID0+IHtcbiAgaWYgKCFpc0xhdGVzdERhdGEpIHtcbiAgICBsaW5lcyA9IHNjcmFwYm94LlBhZ2UubGluZXM7XG4gICAgaXNMYXRlc3REYXRhID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gbGluZXM7XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG4vLyBUaGVzZSBjb2RlIGFyZSBiYXNlZCBvbiBodHRwczovL2Rlbm8ubGFuZC94L3Vua25vd251dGlsQHYxLjEuMC9lbnN1cmUudHNcblxuZXhwb3J0IGNvbnN0IGVuc3VyZUhUTUxEaXZFbGVtZW50OiAoXG4gIHZhbHVlOiB1bmtub3duLFxuICBuYW1lOiBzdHJpbmcsXG4pID0+IGFzc2VydHMgdmFsdWUgaXMgSFRNTERpdkVsZW1lbnQgPSAoXG4gIHZhbHVlLFxuICBuYW1lLFxuKSA9PiB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEhUTUxEaXZFbGVtZW50KSByZXR1cm47XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgYFwiJHtuYW1lfVwiIG11c3QgYmUgSFRNTERpdkVsZW1lbXQgYnV0IGFjdHVhbCBpcyBcIiR7dmFsdWV9XCJgLFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGVuc3VyZUhUTUxBbmNob3JFbGVtZW50OiAoXG4gIHZhbHVlOiB1bmtub3duLFxuICBuYW1lOiBzdHJpbmcsXG4pID0+IGFzc2VydHMgdmFsdWUgaXMgSFRNTEFuY2hvckVsZW1lbnQgPSAoXG4gIHZhbHVlLFxuICBuYW1lLFxuKSA9PiB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEhUTUxBbmNob3JFbGVtZW50KSByZXR1cm47XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgYFwiJHtuYW1lfVwiIG11c3QgYmUgSFRNTEFuY2hvckVsZW1lbXQgYnV0IGFjdHVhbCBpcyBcIiR7dmFsdWV9XCJgLFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGVuc3VyZUhUTUxUZXh0QXJlYUVsZW1lbnQ6IChcbiAgdmFsdWU6IHVua25vd24sXG4gIG5hbWU6IHN0cmluZyxcbikgPT4gYXNzZXJ0cyB2YWx1ZSBpcyBIVE1MVGV4dEFyZWFFbGVtZW50ID0gKFxuICB2YWx1ZSxcbiAgbmFtZSxcbikgPT4ge1xuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KSByZXR1cm47XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgYFwiJHtuYW1lfVwiIG11c3QgYmUgSFRNTFRleHRBcmVhRWxlbWVudCBidXQgYWN0dWFsIGlzIFwiJHt2YWx1ZX1cImAsXG4gICk7XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5pbXBvcnQge1xuICBlbnN1cmVIVE1MQW5jaG9yRWxlbWVudCxcbiAgZW5zdXJlSFRNTERpdkVsZW1lbnQsXG4gIGVuc3VyZUhUTUxUZXh0QXJlYUVsZW1lbnQsXG59IGZyb20gXCIuL2Vuc3VyZS50c1wiO1xuXG5leHBvcnQgY29uc3QgZWRpdG9yID0gKCk6IEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkID0+XG4gIGNoZWNrRGl2KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZWRpdG9yXCIpLCBcImRpdiNlZGl0b3JcIik7XG5leHBvcnQgY29uc3QgbGluZXMgPSAoKTogSFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQgPT5cbiAgY2hlY2tEaXYoXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxpbmVzXCIpLml0ZW0oMCksXG4gICAgXCJkaXYubGluZXNcIixcbiAgKTtcbmV4cG9ydCBjb25zdCBjb21wdXRlTGluZSA9ICgpOiBIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZCA9PlxuICBjaGVja0Rpdihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbXB1dGUtbGluZVwiKSwgXCJkaXYjY29tcHV0ZS1saW5lXCIpO1xuZXhwb3J0IGNvbnN0IGN1cnNvckxpbmUgPSAoKTogSFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQgPT5cbiAgY2hlY2tEaXYoXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImN1cnNvci1saW5lXCIpLml0ZW0oMCksXG4gICAgXCJkaXYuY3Vyc29yLWxpbmVcIixcbiAgKTtcbmV4cG9ydCBjb25zdCB0ZXh0SW5wdXQgPSAoKTogSFRNTFRleHRBcmVhRWxlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHRleHRhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0ZXh0LWlucHV0XCIpO1xuICBpZiAoIXRleHRhcmVhKSByZXR1cm47XG4gIGVuc3VyZUhUTUxUZXh0QXJlYUVsZW1lbnQodGV4dGFyZWEsIFwidGV4dGFyZWEjdGV4dC1pbnB1dFwiKTtcbiAgcmV0dXJuIHRleHRhcmVhO1xufTtcbmV4cG9ydCBjb25zdCBjdXJzb3IgPSAoKTogSFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQgPT5cbiAgY2hlY2tEaXYoXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImN1cnNvclwiKS5pdGVtKDApLFxuICAgIFwiZGl2LmN1cnNvclwiLFxuICApO1xuZXhwb3J0IGNvbnN0IHNlbGVjdGlvbnMgPSAoKTogSFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQgPT5cbiAgY2hlY2tEaXYoXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInNlbGVjdGlvbnNcIik/LlswXSxcbiAgICBcImRpdi5zZWxlY3Rpb25zXCIsXG4gICk7XG5leHBvcnQgY29uc3QgZ3JpZCA9ICgpOiBIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZCA9PlxuICBjaGVja0RpdihcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicmVsYXRlZC1wYWdlLWxpc3QgY2xlYXJmaXhcIilbMF1cbiAgICAgID8uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT8uKFwiZ3JpZFwiKT8uaXRlbSgwKSxcbiAgICBcIi5yZWxhdGVkLXBhZ2UtbGlzdC5jbGVhcmZpeCBkaXYuZ3JpZFwiLFxuICApO1xuZXhwb3J0IGNvbnN0IHBvcHVwTWVudSA9ICgpOiBIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZCA9PlxuICBjaGVja0RpdihcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicG9wdXAtbWVudVwiKT8uWzBdLFxuICAgIFwiZGl2LnBvcHVwLW1lbnVcIixcbiAgKTtcbmV4cG9ydCBjb25zdCBwYWdlTWVudSA9ICgpOiBIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZCA9PlxuICBjaGVja0RpdihcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicGFnZS1tZW51XCIpPy5bMF0sXG4gICAgXCJkaXYucGFnZS1tZW51XCIsXG4gICk7XG5leHBvcnQgY29uc3QgcGFnZUluZm9NZW51ID0gKCk6IEhUTUxBbmNob3JFbGVtZW50IHwgdW5kZWZpbmVkID0+XG4gIGNoZWNrQW5jaG9yKFxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicGFnZS1pbmZvLW1lbnVcIiksXG4gICAgXCJhI3BhZ2UtaW5mby1tZW51XCIsXG4gICk7XG5leHBvcnQgY29uc3QgcGFnZUVkaXRNZW51ID0gKCk6IEhUTUxBbmNob3JFbGVtZW50IHwgdW5kZWZpbmVkID0+XG4gIGNoZWNrQW5jaG9yKFxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicGFnZS1lZGl0LW1lbnVcIiksXG4gICAgXCJhI3BhZ2UtZWRpdC1tZW51XCIsXG4gICk7XG5leHBvcnQgY29uc3QgcGFnZUVkaXRCdXR0b25zID0gKCk6IEhUTUxBbmNob3JFbGVtZW50W10gPT5cbiAgQXJyYXkuZnJvbShcbiAgICBwYWdlRWRpdE1lbnUoKT8ubmV4dEVsZW1lbnRTaWJsaW5nPy5nZXRFbGVtZW50c0J5VGFnTmFtZT8uKFwiYVwiKSA/PyBbXSxcbiAgKTtcbmV4cG9ydCBjb25zdCByYW5kb21KdW1wQnV0dG9uID0gKCk6IEhUTUxBbmNob3JFbGVtZW50IHwgdW5kZWZpbmVkID0+XG4gIGNoZWNrQW5jaG9yKFxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJyYW5kb20tanVtcC1idXR0b25cIikuaXRlbSgwKSxcbiAgICBcImEjcmFuZG9tLWp1bXAtYnV0dG9uXCIsXG4gICk7XG5leHBvcnQgY29uc3QgcGFnZUN1c3RvbUJ1dHRvbnMgPSAoKTogSFRNTEFuY2hvckVsZW1lbnRbXSA9PlxuICBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJwYWdlLW1lbnUtZXh0ZW5zaW9uXCIpKS5mbGF0TWFwKFxuICAgIChkaXYpID0+IHtcbiAgICAgIGNvbnN0IGEgPSBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJhXCIpLml0ZW0oMCk7XG4gICAgICByZXR1cm4gYSA/IFthXSA6IFtdO1xuICAgIH0sXG4gICk7XG5leHBvcnQgY29uc3Qgc3RhdHVzQmFyID0gKCk6IEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkID0+XG4gIGNoZWNrRGl2KFxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJzdGF0dXMtYmFyXCIpPy5bMF0sXG4gICAgXCJkaXYuc3RhdHVzLWJhclwiLFxuICApO1xuXG5jb25zdCBjaGVja0RpdiA9IChkaXY6IEVsZW1lbnQgfCBudWxsLCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgaWYgKCFkaXYpIHJldHVybjtcbiAgZW5zdXJlSFRNTERpdkVsZW1lbnQoZGl2LCBuYW1lKTtcbiAgcmV0dXJuIGRpdjtcbn07XG5cbmNvbnN0IGNoZWNrQW5jaG9yID0gKGE6IEVsZW1lbnQgfCBudWxsLCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgaWYgKCFhKSByZXR1cm47XG4gIGVuc3VyZUhUTUxBbmNob3JFbGVtZW50KGEsIG5hbWUpO1xuICByZXR1cm4gYTtcbn07XG4iLCAiaW1wb3J0IHsgbGluZXMgfSBmcm9tIFwiLi9kb20udHNcIjtcbmltcG9ydCB7IEJhc2VMaW5lIH0gZnJvbSBcIi4uLy4uL2RlcHMvc2NyYXBib3gudHNcIjtcblxuLyoqIFNjcmFwYm945YaF6YOo44Gu5pys5paH44OH44O844K/44Gu5Y+C54Wn44KS5Y+W5b6X44GZ44KLXG4gKlxuICogYHNjcmFwYm94LlBhZ2UubGluZXNg44GvZGVlcCBjbG9uZeOBleOCjOOBpuOBl+OBvuOBhuOBruOBp+OAgXBlcmZvcm1hbmNl44Gu5ZWP6aGM44GM55m655Sf44GZ44KL5aC05ZCI44GM44GC44KLXG4gKlxuICog44Gq44KL44G544GP44OH44O844K/44GuY2xvbmXjgpLnmbrnlJ/jgZXjgZvjgZ/jgY/jgarjgYTloLTlkIjjgavjgZPjgaHjgonjgpLkvb/jgYZcbiAqXG4gKiDms6jmhI9cbiAqIC0g5Y+C54Wn44KS44Gd44Gu44G+44G+6L+U44GX44Gm44GE44KL44Gg44GR44Gq44Gu44Gn44CB5Lit6Lqr44KS5pu444GN5o+b44GI44KJ44KM44Gm44GX44G+44GG44CC5Z6L5a6a576p44Gn5aSJ5pu05LiN6IO944Gr44Gv44GX44Gm44GC44KL44GM44CBSlPntYznlLHjgarjgonjgYTjgY/jgonjgafjgoLmk43kvZzjgafjgY3jgotcbiAqIC0gYHNjcmFwYm94LlBhZ2UubGluZXNg44Go44Gv6YGV44Gj44Gm5qeL5paH6Kej5p6Q5oOF5aCx44GM5LuY5LiO44GV44KM44Gq44GEXG4gKi9cbmV4cG9ydCBjb25zdCB0YWtlSW50ZXJuYWxMaW5lcyA9ICgpOiByZWFkb25seSBCYXNlTGluZVtdID0+IHtcbiAgY29uc3QgbGluZXNFbCA9IGxpbmVzKCk7XG4gIGlmICghbGluZXNFbCkge1xuICAgIHRocm93IEVycm9yKGBkaXYubGluZXMgaXMgbm90IGZvdW5kLmApO1xuICB9XG5cbiAgY29uc3QgcmVhY3RLZXkgPSBPYmplY3Qua2V5cyhsaW5lc0VsKVxuICAgIC5maW5kKChrZXkpID0+IGtleS5zdGFydHNXaXRoKFwiX19yZWFjdEZpYmVyXCIpKTtcbiAgaWYgKCFyZWFjdEtleSkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgJ2Rpdi5saW5lcyBtdXN0IGhhcyB0aGUgcHJvcGVydHkgd2hvc2UgbmFtZSBzdGFydHMgd2l0aCBcIl9fcmVhY3RGaWJlclwiJyxcbiAgICApO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZSBET03jgpLnhKHnkIbnn6LnkIZvYmplY3TjgajjgZfjgabmibHjgaPjgabjgYTjgotcbiAgcmV0dXJuIChsaW5lc0VsW3JlYWN0S2V5XSBhcyBSZWFjdEZpYmVyKS5yZXR1cm4uc3RhdGVOb2RlLnByb3BzXG4gICAgLmxpbmVzIGFzIGNvbnN0O1xufTtcblxuaW50ZXJmYWNlIFJlYWN0RmliZXIge1xuICByZXR1cm46IHtcbiAgICBzdGF0ZU5vZGU6IHtcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIGxpbmVzOiBCYXNlTGluZVtdO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuIiwgImltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSBcIi4vaXMudHNcIjtcblxuLyoqIOOCpOODs+ODh+ODs+ODiOaVsOOCkuaVsOOBiOOCiyAqL1xuZXhwb3J0IGNvbnN0IGdldEluZGVudENvdW50ID0gKHRleHQ6IHN0cmluZyk6IG51bWJlciA9PlxuICB0ZXh0Lm1hdGNoKC9eKFxccyopLyk/LlsxXT8ubGVuZ3RoID8/IDA7XG5cbi8qKiDmjIflrprjgZfjgZ/ooYzjga7phY3kuIvjgavjgYLjgovooYzjga7mlbDjgpLov5TjgZlcbiAqXG4gKiBAcGFyYW0gaW5kZXgg5oyH5a6a44GX44Gf44GE6KGM44Gu6KGM55Wq5Y+3XG4gKiBAcGFyYW0gbGluZXMg6KGM44Gu44Oq44K544OIXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRJbmRlbnRMaW5lQ291bnQgPSAoXG4gIGluZGV4OiBudW1iZXIsXG4gIGxpbmVzOiByZWFkb25seSBzdHJpbmdbXSB8IHJlYWRvbmx5IHsgdGV4dDogc3RyaW5nIH1bXSxcbik6IG51bWJlciA9PiB7XG4gIGNvbnN0IGJhc2UgPSBnZXRJbmRlbnRDb3VudChnZXRUZXh0KGluZGV4LCBsaW5lcykpO1xuICBsZXQgY291bnQgPSAwO1xuICB3aGlsZSAoXG4gICAgaW5kZXggKyBjb3VudCArIDEgPCBsaW5lcy5sZW5ndGggJiZcbiAgICAoZ2V0SW5kZW50Q291bnQoZ2V0VGV4dChpbmRleCArIGNvdW50ICsgMSwgbGluZXMpKSkgPiBiYXNlXG4gICkge1xuICAgIGNvdW50Kys7XG4gIH1cbiAgcmV0dXJuIGNvdW50O1xufTtcblxuY29uc3QgZ2V0VGV4dCA9IChcbiAgaW5kZXg6IG51bWJlcixcbiAgbGluZXM6IHJlYWRvbmx5IHN0cmluZ1tdIHwgcmVhZG9ubHkgeyB0ZXh0OiBzdHJpbmcgfVtdLFxuKSA9PiB7XG4gIGNvbnN0IGxpbmUgPSBsaW5lc1tpbmRleF07XG4gIHJldHVybiBpc1N0cmluZyhsaW5lKSA/IGxpbmUgOiBsaW5lLnRleHQ7XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5pbXBvcnQgeyBpc05vbmUsIGlzTnVtYmVyLCBpc1N0cmluZyB9IGZyb20gXCIuLi8uLi9pcy50c1wiO1xuaW1wb3J0IHsgZW5zdXJlQXJyYXkgfSBmcm9tIFwiLi4vLi4vZW5zdXJlLnRzXCI7XG5pbXBvcnQgeyBnZXRDYWNoZWRMaW5lcyB9IGZyb20gXCIuL2dldENhY2hlZExpbmVzLnRzXCI7XG5pbXBvcnQgeyB0YWtlSW50ZXJuYWxMaW5lcyB9IGZyb20gXCIuL3Rha2VJbnRlcm5hbExpbmVzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEJhc2VMaW5lLCBMaW5lIH0gZnJvbSBcIi4uLy4uL2RlcHMvc2NyYXBib3gudHNcIjtcbmltcG9ydCB7IGxpbmVzIH0gZnJvbSBcIi4vZG9tLnRzXCI7XG5pbXBvcnQgKiBhcyBUZXh0IGZyb20gXCIuLi8uLi90ZXh0LnRzXCI7XG5cbi8qKiBHZXQgdGhlIGxpbmUgaWQgZnJvbSB2YWx1ZVxuICpcbiAqIElmIHRoZSBsaW5lIGlkIGNhbid0IGJlIGZvdW5kLCByZXR1cm4gYHVuZGVmaW5lZGBcbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSB2YWx1ZSB0aGUgbGluZSBpZCBvZiB3aGljaCB5b3Ugd2FudCB0byBnZXRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldExpbmVJZCA9IDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KFxuICB2YWx1ZT86IG51bWJlciB8IHN0cmluZyB8IFQsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoaXNOb25lKHZhbHVlKSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAvLyDooYznlarlj7fjga7jgajjgY1cbiAgaWYgKGlzTnVtYmVyKHZhbHVlKSkgcmV0dXJuIGdldEJhc2VMaW5lKHZhbHVlKT8uaWQ7XG4gIC8vIOihjElE44Gu44Go44GNXG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHJldHVybiB2YWx1ZS5zdGFydHNXaXRoKFwiTFwiKSA/IHZhbHVlLnNsaWNlKDEpIDogdmFsdWU7XG5cbiAgLy8g6KGM44GuRE9N44Gg44Gj44Gf44Go44GNXG4gIGlmICh2YWx1ZS5jbGFzc0xpc3QuY29udGFpbnMoXCJsaW5lXCIpKSByZXR1cm4gdmFsdWUuaWQuc2xpY2UoMSk7XG4gIC8vIOihjOOBruWtkOimgee0oOOBoOOBo+OBn+OBqOOBjVxuICBjb25zdCBsaW5lID0gdmFsdWUuY2xvc2VzdChcIi5saW5lXCIpO1xuICBpZiAobGluZSkgcmV0dXJuIGxpbmUuaWQuc2xpY2UoMSk7XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8qKiBHZXQgdGhlIGxpbmUgbnVtYmVyIGZyb20gdmFsdWVcbiAqXG4gKiBJZiB0aGUgbGluZSBudW1iZXIgY2FuJ3QgYmUgZm91bmQsIHJldHVybiBgdW5kZWZpbmVkYFxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIHZhbHVlIHRoZSBsaW5lIG51bWJlciBvZiB3aGljaCB5b3Ugd2FudCB0byBnZXRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldExpbmVObyA9IDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KFxuICB2YWx1ZT86IG51bWJlciB8IHN0cmluZyB8IFQsXG4pOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoaXNOb25lKHZhbHVlKSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAvLyDooYznlarlj7fjga7jgajjgY1cbiAgaWYgKGlzTnVtYmVyKHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICAvLyDooYxJRCBvciBET03jga7jgajjgY1cbiAgY29uc3QgaWQgPSBnZXRMaW5lSWQodmFsdWUpO1xuICByZXR1cm4gaWQgPyB0YWtlSW50ZXJuYWxMaW5lcygpLmZpbmRJbmRleCgobGluZSkgPT4gbGluZS5pZCA9PT0gaWQpIDogLTE7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGluZSA9IDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KFxuICB2YWx1ZT86IG51bWJlciB8IHN0cmluZyB8IFQsXG4pOiBMaW5lIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGlzTm9uZSh2YWx1ZSkpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgLy8g6KGM55Wq5Y+344Gu44Go44GNXG4gIGlmIChpc051bWJlcih2YWx1ZSkpIHJldHVybiBnZXRMaW5lcygpW3ZhbHVlXTtcbiAgLy8g6KGMSUQgb3IgRE9N44Gu44Go44GNXG4gIGNvbnN0IGlkID0gZ2V0TGluZUlkKHZhbHVlKTtcbiAgcmV0dXJuIGlkID8gZ2V0TGluZXMoKS5maW5kKChsaW5lKSA9PiBsaW5lLmlkID09PSBpZCkgOiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QmFzZUxpbmUgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PihcbiAgdmFsdWU/OiBudW1iZXIgfCBzdHJpbmcgfCBULFxuKTogQmFzZUxpbmUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoaXNOb25lKHZhbHVlKSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAvLyDooYznlarlj7fjga7jgajjgY1cbiAgaWYgKGlzTnVtYmVyKHZhbHVlKSkgcmV0dXJuIHRha2VJbnRlcm5hbExpbmVzKClbdmFsdWVdO1xuICAvLyDooYxJRCBvciBET03jga7jgajjgY1cbiAgY29uc3QgaWQgPSBnZXRMaW5lSWQodmFsdWUpO1xuICByZXR1cm4gaWQgPyB0YWtlSW50ZXJuYWxMaW5lcygpLmZpbmQoKGxpbmUpID0+IGxpbmUuaWQgPT09IGlkKSA6IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5lRE9NID0gPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oXG4gIHZhbHVlPzogbnVtYmVyIHwgc3RyaW5nIHwgVCxcbik6IEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGlzTGluZURPTSh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcblxuICBjb25zdCBpZCA9IGdldExpbmVJZCh2YWx1ZSk7XG4gIGlmIChpc05vbmUoaWQpKSByZXR1cm4gaWQ7XG4gIGNvbnN0IGxpbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgTCR7aWR9YCk7XG4gIGlmIChpc05vbmUobGluZSkpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiBsaW5lIGFzIEhUTUxEaXZFbGVtZW50O1xufTtcbmV4cG9ydCBjb25zdCBpc0xpbmVET00gPSAoZG9tOiB1bmtub3duKTogZG9tIGlzIEhUTUxEaXZFbGVtZW50ID0+XG4gIGRvbSBpbnN0YW5jZW9mIEhUTUxEaXZFbGVtZW50ICYmIGRvbS5jbGFzc0xpc3QuY29udGFpbnMoXCJsaW5lXCIpO1xuXG5leHBvcnQgY29uc3QgZ2V0TGluZUNvdW50ID0gKCk6IG51bWJlciA9PiB0YWtlSW50ZXJuYWxMaW5lcygpLmxlbmd0aDtcblxuZXhwb3J0IGNvbnN0IGdldExpbmVzID0gKCk6IHJlYWRvbmx5IExpbmVbXSA9PiB7XG4gIGNvbnN0IGxpbmVzID0gZ2V0Q2FjaGVkTGluZXMoKTtcbiAgZW5zdXJlQXJyYXk8TGluZT4obGluZXMsIFwic2NyYXBib3guUGFnZS5saW5lc1wiKTtcbiAgcmV0dXJuIGxpbmVzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRleHQgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PihcbiAgdmFsdWU/OiBudW1iZXIgfCBzdHJpbmcgfCBULFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGlzTm9uZSh2YWx1ZSkpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgLy8g5pWw5a2X44Go5paH5a2X5YiX44Gv6KGM44Go44GX44Gm5omx44GGXG4gIGlmIChpc051bWJlcih2YWx1ZSkgfHwgaXNTdHJpbmcodmFsdWUpKSByZXR1cm4gZ2V0QmFzZUxpbmUodmFsdWUpPy50ZXh0O1xuICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkgcmV0dXJuO1xuICBpZiAoaXNMaW5lRE9NKHZhbHVlKSkgcmV0dXJuIGdldEJhc2VMaW5lKHZhbHVlKT8udGV4dDtcbiAgLy8g5paH5a2X44GuRE9N44Gg44Gj44Gf44Go44GNXG4gIGlmICh2YWx1ZS5jbGFzc0xpc3QuY29udGFpbnMoXCJjaGFyLWluZGV4XCIpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRleHRDb250ZW50ID8/IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBkaXYubGluZXPjgpLlkKvjgoAo6KSH5pWw44GuZGl2LmxpbmXjgpLlkKvjgoAp5aC05ZCI44Gv5YWo44Gm44Gu5paH5a2X5YiX44KS6L+U44GZXG4gIGlmIChcbiAgICB2YWx1ZS5jbGFzc0xpc3QuY29udGFpbnMoXCJsaW5lXCIpIHx8XG4gICAgdmFsdWUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxpbmVzXCIpPy5bMF1cbiAgKSB7XG4gICAgcmV0dXJuIHRha2VJbnRlcm5hbExpbmVzKCkubWFwKCh7IHRleHQgfSkgPT4gdGV4dCkuam9pbihcIlxcblwiKTtcbiAgfVxuICAvL+S4reOBq+WQq+OBvuOCjOOBpuOBhOOCi+aWh+Wtl+OBruWIl+eVquWPt+OCkuWFqOOBpuWPluW+l+OBl+OAgeOBneOCjOOBq+WvvuW/nOOBmeOCi+aWh+Wtl+WIl+OCkui/lOOBmVxuICBjb25zdCBjaGFycyA9IFtdIGFzIG51bWJlcltdO1xuICBjb25zdCBsaW5lID0gZ2V0QmFzZUxpbmUodmFsdWUpO1xuICBpZiAoaXNOb25lKGxpbmUpKSByZXR1cm47XG4gIGZvciAoY29uc3QgZG9tIG9mIGdldENoYXJzKHZhbHVlKSkge1xuICAgIGNoYXJzLnB1c2goZ2V0SW5kZXgoZG9tKSk7XG4gIH1cbiAgcmV0dXJuIGxpbmUudGV4dC5zbGljZShNYXRoLm1pbiguLi5jaGFycyksIE1hdGgubWF4KC4uLmNoYXJzKSArIDEpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEV4dGVybmFsTGluayA9IChkb206IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBsaW5rID0gZG9tLmNsb3Nlc3QoXCIubGlua1wiKTtcbiAgaWYgKGlzTm9uZShsaW5rKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIGxpbmsgYXMgSFRNTEVsZW1lbnQ7XG59O1xuZXhwb3J0IGNvbnN0IGdldEludGVybmFsTGluayA9IChkb206IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBsaW5rID0gZG9tLmNsb3Nlc3QoXCIucGFnZS1saW5rXCIpO1xuICBpZiAoaXNOb25lKGxpbmspKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gbGluayBhcyBIVE1MRWxlbWVudDtcbn07XG5leHBvcnQgY29uc3QgZ2V0TGluayA9IChkb206IEhUTUxFbGVtZW50KSA9PiB7XG4gIGNvbnN0IGxpbmsgPSBkb20uY2xvc2VzdChcIi5saW5rLCAucGFnZS1saW5rXCIpO1xuICBpZiAoaXNOb25lKGxpbmspKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gbGluayBhcyBIVE1MRWxlbWVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtdWxhID0gKGRvbTogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGZvcm11bGEgPSBkb20uY2xvc2VzdChcIi5mb3JtdWxhXCIpO1xuICBpZiAoaXNOb25lKGZvcm11bGEpKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gZm9ybXVsYSBhcyBIVE1MRWxlbWVudDtcbn07XG5leHBvcnQgY29uc3QgZ2V0TmV4dExpbmUgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PihcbiAgdmFsdWU/OiBudW1iZXIgfCBzdHJpbmcgfCBULFxuKTogTGluZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGluZGV4ID0gZ2V0TGluZU5vKHZhbHVlKTtcbiAgaWYgKGlzTm9uZShpbmRleCkpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIGdldExpbmUoaW5kZXggKyAxKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQcmV2TGluZSA9IDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KFxuICB2YWx1ZT86IG51bWJlciB8IHN0cmluZyB8IFQsXG4pOiBMaW5lIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgaW5kZXggPSBnZXRMaW5lTm8odmFsdWUpO1xuICBpZiAoaXNOb25lKGluZGV4KSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICByZXR1cm4gZ2V0TGluZShpbmRleCAtIDEpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhlYWRMaW5lRE9NID0gKCk6IEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgbGluZSA9IGxpbmVzKCk/LmZpcnN0RWxlbWVudENoaWxkO1xuICBpZiAoaXNOb25lKGxpbmUpKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gbGluZSBhcyBIVE1MRGl2RWxlbWVudDtcbn07XG5leHBvcnQgY29uc3QgZ2V0VGFpbExpbmVET00gPSAoKTogSFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBsaW5lID0gbGluZXMoKT8ubGFzdEVsZW1lbnRDaGlsZDtcbiAgaWYgKGlzTm9uZShsaW5lKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIGxpbmUgYXMgSFRNTERpdkVsZW1lbnQ7XG59O1xuZXhwb3J0IGNvbnN0IGdldEluZGVudENvdW50ID0gPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oXG4gIHZhbHVlPzogbnVtYmVyIHwgc3RyaW5nIHwgVCxcbik6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHRleHQgPSBnZXRUZXh0KHZhbHVlKTtcbiAgaWYgKGlzTm9uZSh0ZXh0KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIFRleHQuZ2V0SW5kZW50Q291bnQodGV4dCk7XG59O1xuLyoqIOaMh+WumuOBl+OBn+ihjOOBrumFjeS4i+OBq+OBguOCi+ihjOOBruaVsOOCkui/lOOBmVxuICpcbiAqIEBwYXJhbSB2YWx1ZSDmjIflrprjgZfjgZ/jgYTooYzjga7ooYznlarlj7fjgYvooYxJROOBi0RPTVxuICovXG5leHBvcnQgY29uc3QgZ2V0SW5kZW50TGluZUNvdW50ID0gPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oXG4gIHZhbHVlPzogbnVtYmVyIHwgc3RyaW5nIHwgVCxcbik6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGluZGV4ID0gZ2V0TGluZU5vKHZhbHVlKTtcbiAgaWYgKGlzTm9uZShpbmRleCkpIHJldHVybjtcbiAgcmV0dXJuIFRleHQuZ2V0SW5kZW50TGluZUNvdW50KGluZGV4LCBnZXRMaW5lcygpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiogZ2V0Q2hhcnM8VCBleHRlbmRzIEhUTUxFbGVtZW50PihcbiAgdmFsdWU6IFQsXG4pOiBHZW5lcmF0b3I8SFRNTFNwYW5FbGVtZW50LCB2b2lkLCB1bmtub3duPiB7XG4gIGNvbnN0IGNoYXJzID0gdmFsdWUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImNoYXItaW5kZXhcIik7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICB5aWVsZCBjaGFyc1swXSBhcyBIVE1MU3BhbkVsZW1lbnQ7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGlzQ2hhckRPTSA9IChkb206IHVua25vd24pOiBkb20gaXMgSFRNTFNwYW5FbGVtZW50ID0+IHtcbiAgcmV0dXJuIGRvbSBpbnN0YW5jZW9mIEhUTUxTcGFuRWxlbWVudCAmJiBkb20uY2xhc3NMaXN0LmNvbnRhaW5zKFwiY2hhci1pbmRleFwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJbmRleCA9IChkb206IEhUTUxTcGFuRWxlbWVudCk6IG51bWJlciA9PiB7XG4gIGlmICghaXNDaGFyRE9NKGRvbSkpIHRocm93IEVycm9yKFwiQSBjaGFyIERPTSBpcyByZXF1aXJlZC5cIik7XG5cbiAgY29uc3QgaW5kZXggPSBkb20uY2xhc3NOYW1lLm1hdGNoKC9jLShcXGQrKS8pPy5bMV07XG4gIGlmIChpc05vbmUoaW5kZXgpKSB0aHJvdyBFcnJvcignLmNoYXItaW5kZXggbXVzdCBoYXZlIFwiLmMte1xcXFxkfVwiJyk7XG4gIHJldHVybiBwYXJzZUludChpbmRleCk7XG59O1xuZXhwb3J0IGNvbnN0IGdldEhlYWRDaGFyRE9NID0gKFxuICBkb20/OiBIVE1MRWxlbWVudCxcbik6IEhUTUxTcGFuRWxlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGNoYXIgPSBkb20/LmdldEVsZW1lbnRzQnlDbGFzc05hbWU/LihcImMtMFwiKT8uWzBdO1xuICByZXR1cm4gaXNDaGFyRE9NKGNoYXIpID8gY2hhciA6IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUYWlsQ2hhckRPTSA9IChcbiAgZG9tPzogSFRNTEVsZW1lbnQsXG4pOiBIVE1MU3BhbkVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBjaGFyID0gZG9tPy5xdWVyeVNlbGVjdG9yKFwiLmNoYXItaW5kZXg6bGFzdC1vZi10eXBlXCIpO1xuICByZXR1cm4gaXNDaGFyRE9NKGNoYXIpID8gY2hhciA6IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDaGFyRE9NID0gPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oXG4gIGxpbmU6IHN0cmluZyB8IG51bWJlciB8IFQsXG4gIHBvczogbnVtYmVyLFxuKTogSFRNTFNwYW5FbGVtZW50IHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgY2hhciA9IGdldExpbmVET00obGluZSk/LmdldEVsZW1lbnRzQnlDbGFzc05hbWU/LihgYy0ke3Bvc31gKT8uWzBdO1xuICByZXR1cm4gaXNDaGFyRE9NKGNoYXIpID8gY2hhciA6IHVuZGVmaW5lZDtcbn07XG5leHBvcnQgY29uc3QgZ2V0RE9NRnJvbVBvaW50ID0gKFxuICB4OiBudW1iZXIsXG4gIHk6IG51bWJlcixcbik6IHsgY2hhcj86IEhUTUxTcGFuRWxlbWVudDsgbGluZT86IEhUTUxEaXZFbGVtZW50IH0gPT4ge1xuICBjb25zdCB0YXJnZXRzID0gZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoeCwgeSk7XG4gIGNvbnN0IGNoYXIgPSB0YXJnZXRzLmZpbmQoKHRhcmdldCkgPT4gaXNDaGFyRE9NKHRhcmdldCkpO1xuICBjb25zdCBsaW5lID0gdGFyZ2V0cy5maW5kKCh0YXJnZXQpID0+IGlzTGluZURPTSh0YXJnZXQpKTtcbiAgcmV0dXJuIHtcbiAgICBjaGFyOiBpc05vbmUoY2hhcikgPyB1bmRlZmluZWQgOiBjaGFyIGFzIEhUTUxTcGFuRWxlbWVudCxcbiAgICBsaW5lOiBpc05vbmUobGluZSkgPyB1bmRlZmluZWQgOiBsaW5lIGFzIEhUTUxEaXZFbGVtZW50LFxuICB9O1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuXG5pbXBvcnQgeyB0ZXh0SW5wdXQgfSBmcm9tIFwiLi9kb20udHNcIjtcblxuLyoqIHRoZSBvcHRpb25zIGZvciBgcHJlc3MoKWAgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc3NPcHRpb25zIHtcbiAgc2hpZnRLZXk/OiBib29sZWFuO1xuICBjdHJsS2V5PzogYm9vbGVhbjtcbiAgYWx0S2V5PzogYm9vbGVhbjtcbiAgbWV0YUtleT86IGJvb2xlYW47XG4gIG5vTW9kaWZpZWRLZXlzPzogYm9vbGVhbjtcbn1cblxuLyoqIEphdmFTY3JpcHTjgYvjgonku7vmhI/jga7jgq3jg7zmirzkuItldmVudOOCkueZuuihjOOBmeOCi1xuICpcbiAqIFNjcmFwYm9444Gr44Kt44O85YWl5Yqb5ZG95Luk44KS6YCB44KL6Zqb44Gr5L2/44GG44CCXG4gKiDjgZPjga7plqLmlbDjga/jgq3jg7zlhaXliptldmVudOOBp+WRvOOBs+WHuuOBleOCjOOBn3NjcmFwYm9444GuZXZlbnQgbGlzdGVuZXLjga7lh6bnkIbjgYzntYLjgo/jgovjgb7jgaflkIzmnJ/nmoTjgavjg5bjg63jg4Pjgq/jgZXjgozjgovjgojjgYbjgaBcbiAqXG4gKiBAcGFyYW0ga2V5IOaKvOOBl+OBn+OBhOOCreODvOOBruWQjeWJjVxuICogQHBhcmFtIHByZXNzT3B0aW9ucyBvcHRpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBwcmVzcyA9IChcbiAga2V5OiBLZXlOYW1lLFxuICBwcmVzc09wdGlvbnM/OiBQcmVzc09wdGlvbnMsXG4pOiB2b2lkID0+IHtcbiAgY29uc3QgeyBub01vZGlmaWVkS2V5cyA9IGZhbHNlLCAuLi5yZXN0IH0gPSBwcmVzc09wdGlvbnMgPz8ge307XG4gIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgYnViYmxlczogdHJ1ZSxcbiAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgIGtleUNvZGU6IEtFWUNPREVfTUFQW2tleV0sXG4gICAgLi4uKG5vTW9kaWZpZWRLZXlzID8ge30gOiB7IC4uLnJlc3QgfSksXG4gIH07XG4gIGNvbnN0IHRleHRhcmVhID0gdGV4dElucHV0KCk7XG4gIGlmICghdGV4dGFyZWEpIHRocm93IEVycm9yKFwiI3RleHQtaW5wdXQgbXVzdCBleGlzdC5cIik7XG4gIHRleHRhcmVhLmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoXCJrZXlkb3duXCIsIG9wdGlvbnMpKTtcbiAgdGV4dGFyZWEuZGlzcGF0Y2hFdmVudChuZXcgS2V5Ym9hcmRFdmVudChcImtleXVwXCIsIG9wdGlvbnMpKTtcbn07XG5cbmV4cG9ydCB0eXBlIEtleU5hbWUgPSBrZXlvZiB0eXBlb2YgS0VZQ09ERV9NQVA7XG5jb25zdCBLRVlDT0RFX01BUCA9IHtcbiAgQmFja3NwYWNlOiA4LFxuICBUYWI6IDksXG4gIEVudGVyOiAxMyxcbiAgRGVsZXRlOiA0NixcbiAgRXNjYXBlOiAyNyxcbiAgXCIgXCI6IDMyLFxuICBQYWdlVXA6IDMzLFxuICBQYWdlRG93bjogMzQsXG4gIEVuZDogMzUsXG4gIEhvbWU6IDM2LFxuICBBcnJvd0xlZnQ6IDM3LFxuICBBcnJvd1VwOiAzOCxcbiAgQXJyb3dSaWdodDogMzksXG4gIEFycm93RG93bjogNDAsXG4gIC8vIGFscGhhYmV0c1xuICBhOiA2NSxcbiAgQTogNjUsXG4gIGI6IDY2LFxuICBCOiA2NixcbiAgYzogNjcsXG4gIEM6IDY3LFxuICBkOiA2OCxcbiAgRDogNjgsXG4gIGU6IDY5LFxuICBFOiA2OSxcbiAgZjogNzAsXG4gIEY6IDcwLFxuICBnOiA3MSxcbiAgRzogNzEsXG4gIGg6IDcyLFxuICBIOiA3MixcbiAgaTogNzMsXG4gIEk6IDczLFxuICBqOiA3NCxcbiAgSjogNzQsXG4gIGs6IDc1LFxuICBLOiA3NSxcbiAgbDogNzYsXG4gIEw6IDc2LFxuICBtOiA3NyxcbiAgTTogNzcsXG4gIG46IDc4LFxuICBOOiA3OCxcbiAgbzogNzksXG4gIE86IDc5LFxuICBwOiA4MCxcbiAgUDogODAsXG4gIHE6IDgxLFxuICBROiA4MSxcbiAgcjogODIsXG4gIFI6IDgyLFxuICBzOiA4MyxcbiAgUzogODMsXG4gIHQ6IDg0LFxuICBUOiA4NCxcbiAgdTogODUsXG4gIFU6IDg1LFxuICB2OiA4NixcbiAgVjogODYsXG4gIHc6IDg3LFxuICBXOiA4NyxcbiAgeDogODgsXG4gIFg6IDg4LFxuICB5OiA4OSxcbiAgWTogODksXG4gIHo6IDkwLFxuICBaOiA5MCxcbiAgLy8gbnVtYmVyXG4gIDA6IDQ4LFxuICAxOiA0OSxcbiAgMjogNTAsXG4gIDM6IDUxLFxuICA0OiA1MixcbiAgNTogNTMsXG4gIDY6IDU0LFxuICA3OiA1NSxcbiAgODogNTYsXG4gIDk6IDU3LFxuICAvLyBmdW5jdGlvbiBrZXlzXG4gIEYxOiAxMTMsXG4gIEYyOiAxMTQsXG4gIEYzOiAxMTUsXG4gIEY0OiAxMTYsXG4gIEY1OiAxMTcsXG4gIEY2OiAxMTgsXG4gIEY3OiAxMTksXG4gIEY4OiAxMjAsXG4gIEY5OiAxMjEsXG4gIEYxMDogMTIyLFxuICBGMTE6IDEyMyxcbiAgRjEyOiAxMjQsXG4gIC8vIOiomOWPt1xuICBcIjpcIjogMTg2LFxuICBcIipcIjogMTg2LFxuICBcIjtcIjogMTg3LFxuICBcIitcIjogMTg3LFxuICBcIi1cIjogMTg5LFxuICBcIj1cIjogMTg5LFxuICBcIi5cIjogMTkwLFxuICBcIj5cIjogMTkwLFxuICBcIi9cIjogMTkxLFxuICBcIj9cIjogMTkxLFxuICBcIkBcIjogMTkyLFxuICBcImBcIjogMTkyLFxuICBcIltcIjogMjE5LFxuICBcIntcIjogMjE5LFxuICBcIlxcXFxcIjogMjIwLFxuICBcInxcIjogMjIwLFxuICBcIl1cIjogMjIxLFxuICBcIn1cIjogMjIxLFxuICBcIl5cIjogMjIyLFxuICBcIn5cIjogMjIyLFxuICBcIl9cIjogMjI2LCAvLyBTaGlmdOOBquOBl+OBrjIyNuOBr1xc44Gn44CBXFzjgajljLrliKXjgYzjgaTjgYvjgarjgYRcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cblxuaW1wb3J0IHsgc2xlZXAgfSBmcm9tIFwiLi4vLi4vc2xlZXAudHNcIjtcblxuLyoqIHRoZSBvcHRpb25zIGZvciBgY2xpY2soKWAgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpY2tPcHRpb25zIHtcbiAgYnV0dG9uPzogbnVtYmVyO1xuICBYOiBudW1iZXI7XG4gIFk6IG51bWJlcjtcbiAgc2hpZnRLZXk/OiBib29sZWFuO1xuICBjdHJsS2V5PzogYm9vbGVhbjtcbiAgYWx0S2V5PzogYm9vbGVhbjtcbn1cblxuLyoqIEVtdWxhdGUgY2xpY2sgZXZlbnQgc2VxdWVuY2VzICovXG5leHBvcnQgY29uc3QgY2xpY2sgPSBhc3luYyAoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBvcHRpb25zOiBDbGlja09wdGlvbnMsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgbW91c2VPcHRpb25zOiBNb3VzZUV2ZW50SW5pdCA9IHtcbiAgICBidXR0b246IG9wdGlvbnMuYnV0dG9uID8/IDAsXG4gICAgY2xpZW50WDogb3B0aW9ucy5YLFxuICAgIGNsaWVudFk6IG9wdGlvbnMuWSxcbiAgICBidWJibGVzOiB0cnVlLFxuICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgc2hpZnRLZXk6IG9wdGlvbnMuc2hpZnRLZXksXG4gICAgY3RybEtleTogb3B0aW9ucy5jdHJsS2V5LFxuICAgIGFsdEtleTogb3B0aW9ucy5hbHRLZXksXG4gICAgdmlldzogd2luZG93LFxuICB9O1xuICBlbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJtb3VzZWRvd25cIiwgbW91c2VPcHRpb25zKSk7XG4gIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudChcIm1vdXNldXBcIiwgbW91c2VPcHRpb25zKSk7XG4gIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudChcImNsaWNrXCIsIG1vdXNlT3B0aW9ucykpO1xuXG4gIC8vIFNjcmFwYm9444GuUmVhY3Tjga7lh6bnkIbjgYzntYLjgo/jgovjgb7jgaflsJHjgZflvoXjgaRcbiAgLy8g5b6F44Gh5pmC6ZaT44Gv5oSf6Kaa44Gn5rG644KB44GfXG4gIGF3YWl0IHNsZWVwKDEwKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG9sZERvd25PcHRpb25zIGV4dGVuZHMgQ2xpY2tPcHRpb25zIHtcbiAgaG9sZGluZz86IG51bWJlcjtcbn1cblxuLyoqIEVtdWxhdGUgbG9uZyB0YXAgZXZlbnQgc2VxdWVuY2UgKi9cbmV4cG9ydCBjb25zdCBob2xkRG93biA9IGFzeW5jIChcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIG9wdGlvbnM6IEhvbGREb3duT3B0aW9ucyxcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCB0b3VjaCA9IG5ldyBUb3VjaCh7XG4gICAgaWRlbnRpZmllcjogMCxcbiAgICB0YXJnZXQ6IGVsZW1lbnQsXG4gICAgY2xpZW50WDogb3B0aW9ucy5YLFxuICAgIGNsaWVudFk6IG9wdGlvbnMuWSxcbiAgICBwYWdlWDogb3B0aW9ucy5YICsgZ2xvYmFsVGhpcy5zY3JvbGxYLFxuICAgIHBhZ2VZOiBvcHRpb25zLlkgKyBnbG9iYWxUaGlzLnNjcm9sbFksXG4gIH0pO1xuICBjb25zdCBtb3VzZU9wdGlvbnMgPSB7XG4gICAgYnV0dG9uOiBvcHRpb25zLmJ1dHRvbiA/PyAwLFxuICAgIGNsaWVudFg6IG9wdGlvbnMuWCxcbiAgICBjbGllbnRZOiBvcHRpb25zLlksXG4gICAgY2hhbmdlZFRvdWNoZXM6IFt0b3VjaF0sXG4gICAgdG91Y2hlczogW3RvdWNoXSxcbiAgICBidWJibGVzOiB0cnVlLFxuICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgc2hpZnRLZXk6IG9wdGlvbnMuc2hpZnRLZXksXG4gICAgY3RybEtleTogb3B0aW9ucy5jdHJsS2V5LFxuICAgIGFsdEtleTogb3B0aW9ucy5hbHRLZXksXG4gICAgdmlldzogd2luZG93LFxuICB9O1xuICBlbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IFRvdWNoRXZlbnQoXCJ0b3VjaHN0YXJ0XCIsIG1vdXNlT3B0aW9ucykpO1xuICBlbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJtb3VzZWRvd25cIiwgbW91c2VPcHRpb25zKSk7XG4gIGF3YWl0IHNsZWVwKG9wdGlvbnMuaG9sZGluZyA/PyAxMDAwKTtcbiAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwibW91c2V1cFwiLCBtb3VzZU9wdGlvbnMpKTtcbiAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBUb3VjaEV2ZW50KFwidG91Y2hlbmRcIiwgbW91c2VPcHRpb25zKSk7XG4gIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudChcImNsaWNrXCIsIG1vdXNlT3B0aW9ucykpO1xuXG4gIC8vIFNjcmFwYm9444GuUmVhY3Tjga7lh6bnkIbjgYzntYLjgo/jgovjgb7jgaflsJHjgZflvoXjgaRcbiAgLy8g5b6F44Gh5pmC6ZaT44Gv5oSf6Kaa44Gn5rG644KB44GfXG4gIGF3YWl0IHNsZWVwKDEwKTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cblxuaW1wb3J0IHsgdGV4dElucHV0IH0gZnJvbSBcIi4vZG9tLnRzXCI7XG5cbi8qKiBlZGl0b3LkuIrjga7kvY3nva7mg4XloLEgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9zaXRpb24ge1xuICAvKiog6KGM5pWwICovIGxpbmU6IG51bWJlcjtcbiAgLyoqIOS9leaWh+Wtl+ebruOBruW+jOOCjeOBq+OBhOOCi+OBiyAqLyBjaGFyOiBudW1iZXI7XG59XG5cbi8qKiDpgbjmip7nr4Tlm7LjgpLooajjgZnjg4fjg7zjgr9cbiAqXG4gKiDpgbjmip7nr4Tlm7LjgYzjgarjgYTjgajjgY3jga/jgIHplovlp4vjgajntYLkuobjgYzlkIzjgZjkvY3nva7jgavjgarjgotcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSYW5nZSB7XG4gIC8qKiDpgbjmip7nr4Tlm7Ljga7plovlp4vkvY3nva4gKi8gc3RhcnQ6IFBvc2l0aW9uO1xuICAvKiog6YG45oqe56+E5Zuy44Gu57WC5LqG5L2N572uICovIGVuZDogUG9zaXRpb247XG59XG5cbi8qKiAjdGV4dC1pbnB1dOOCkuani+evieOBl+OBpuOBhOOCi1JlYWN0IENvbXBvbmVudOOBq+WQq+OBvuOCjOOCi+OCq+ODvOOCveODq+OBruaDheWgsSAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXJldEluZm8ge1xuICAvKiog44Kr44O844K944Or44Gu5L2N572uICovIHBvc2l0aW9uOiBQb3NpdGlvbjtcbiAgLyoqIOmBuOaKnuevhOWbsuS4reOBruaWh+Wtl+WIlyAqLyBzZWxlY3RlZFRleHQ6IHN0cmluZztcbiAgLyoqIOmBuOaKnuevhOWbsuOBruS9jee9riAqLyBzZWxlY3Rpb25SYW5nZTogUmFuZ2U7XG59XG5cbmludGVyZmFjZSBSZWFjdEZpYmVyIHtcbiAgcmV0dXJuOiB7XG4gICAgcmV0dXJuOiB7XG4gICAgICBzdGF0ZU5vZGU6IHtcbiAgICAgICAgcHJvcHM6IENhcmV0SW5mbztcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn1cblxuLyoqIOePvuWcqOOBruOCq+ODvOOCveODq+OBqOmBuOaKnuevhOWbsuOBruS9jee9ruaDheWgseOCkuWPluW+l+OBmeOCi1xuICpcbiAqIEByZXR1cm4g44Kr44O844K944Or44Go6YG45oqe56+E5Zuy44Gu5oOF5aCxXG4gKiBAdGhyb3dzIHtFcnJvcn0gI3RleHQtaW5wdXTjgahSZWFjdCBDb21wb25lbnTjga7pmqDjgZdwcm9wZXJ0eeOBjOimi+OBpOOBi+OCieOBquOBi+OBo+OBn1xuICovXG5leHBvcnQgY29uc3QgY2FyZXQgPSAoKTogQ2FyZXRJbmZvID0+IHtcbiAgY29uc3QgdGV4dGFyZWEgPSB0ZXh0SW5wdXQoKTtcbiAgaWYgKCF0ZXh0YXJlYSkge1xuICAgIHRocm93IEVycm9yKGAjdGV4dC1pbnB1dCBpcyBub3QgZm91bmQuYCk7XG4gIH1cblxuICBjb25zdCByZWFjdEtleSA9IE9iamVjdC5rZXlzKHRleHRhcmVhKVxuICAgIC5maW5kKChrZXkpID0+IGtleS5zdGFydHNXaXRoKFwiX19yZWFjdEZpYmVyXCIpKTtcbiAgaWYgKCFyZWFjdEtleSkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgJ2Rpdi5jdXJzb3IgbXVzdCBoYXMgdGhlIHByb3BlcnR5IHdob3NlIG5hbWUgc3RhcnRzIHdpdGggXCJfX3JlYWN0RmliZXJcIicsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmUgRE9N44KS54Sh55CG55+i55CGb2JqZWN044Go44GX44Gm5omx44Gj44Gm44GE44KLXG4gIHJldHVybiAodGV4dGFyZWFbXG4gICAgcmVhY3RLZXlcbiAgXSBhcyBSZWFjdEZpYmVyKS5yZXR1cm4ucmV0dXJuLnN0YXRlTm9kZS5wcm9wcztcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cblxuZXhwb3J0IGNvbnN0IGlzSGVpZ2h0Vmlld2FibGUgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuID0+IHtcbiAgY29uc3QgeyB0b3AsIGJvdHRvbSB9ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgcmV0dXJuIHRvcCA+PSAwICYmIGJvdHRvbSA8PSBnbG9iYWxUaGlzLmlubmVySGVpZ2h0O1xufTtcbiIsICJleHBvcnQgZnVuY3Rpb24qIHJhbmdlKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XG4gIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7XG4gICAgeWllbGQgaTtcbiAgfVxufVxuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbmltcG9ydCB7IHByZXNzIH0gZnJvbSBcIi4vcHJlc3MudHNcIjtcbmltcG9ydCB7IGNsaWNrLCBob2xkRG93biB9IGZyb20gXCIuL2NsaWNrLnRzXCI7XG5pbXBvcnQge1xuICBnZXRDaGFyRE9NLFxuICBnZXRIZWFkQ2hhckRPTSxcbiAgZ2V0SGVhZExpbmVET00sXG4gIGdldExpbmVDb3VudCxcbiAgZ2V0TGluZURPTSxcbiAgZ2V0TGluZU5vLFxuICBnZXRUYWlsTGluZURPTSxcbiAgZ2V0VGV4dCxcbn0gZnJvbSBcIi4vbm9kZS50c1wiO1xuaW1wb3J0IHsgY2FyZXQgfSBmcm9tIFwiLi9jYXJldC50c1wiO1xuaW1wb3J0IHsgaXNIZWlnaHRWaWV3YWJsZSB9IGZyb20gXCIuL2lzSGVpZ2h0Vmlld2FibGUudHNcIjtcbmltcG9ydCB7IHJhbmdlIH0gZnJvbSBcIi4uLy4uL3JhbmdlLnRzXCI7XG5cbi8qKiBAZGVwcmVjYXRlZFxuICog44Kr44O844K944Or6KGM44Gu6KGM5pyr44KS6ZW35oq844GX44GX44GmZm9jdXPjgpLlvpfjgotcbiAqXG4gKiBtb2JpbGXniYhzY3JhcGJveOeUqFxuICpcbiAqIEBwYXJhbSBbaG9sZGluZz0xMDAwXSDplbfmirzjgZfjgZnjgovmmYLplpMo44Of44Oq56eS5Y2Y5L2NKVxuICovXG5leHBvcnQgY29uc3QgZm9jdXNFbmQgPSBhc3luYyAoaG9sZGluZyA9IDEwMDApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgdGFyZ2V0ID0gZ2V0TGluZURPTShjYXJldCgpLnBvc2l0aW9uLmxpbmUpXG4gICAgPy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxuICAgICAgXCJ0ZXh0XCIsXG4gICAgKT8uWzBdIGFzIChIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZCk7XG4gIGlmICghdGFyZ2V0KSB0aHJvdyBFcnJvcihcIi5saW5lIC50YXJnZXQgY2FuJ3QgYmUgZm91bmQuXCIpO1xuICBpZiAoIWlzSGVpZ2h0Vmlld2FibGUodGFyZ2V0KSkgdGFyZ2V0LnNjcm9sbEludG9WaWV3KHsgYmxvY2s6IFwiY2VudGVyXCIgfSk7XG5cbiAgY29uc3QgeyByaWdodCwgdG9wLCBoZWlnaHQgfSA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgYXdhaXQgaG9sZERvd24odGFyZ2V0LCB7IFg6IHJpZ2h0ICsgMSwgWTogdG9wICsgaGVpZ2h0IC8gMiwgaG9sZGluZyB9KTtcbn07XG5cbi8qKiDjgqvjg7zjgr3jg6vjgpLlt6bjgavli5XjgYvjgZlcbiAqXG4gKiBAcGFyYW0gW2NvdW50PTFdIOWLleOBi+OBmeWbnuaVsFxuICovXG5leHBvcnQgY29uc3QgbW92ZUxlZnQgPSAoY291bnQgPSAxKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgXyBvZiByYW5nZSgwLCBjb3VudCkpIHtcbiAgICBwcmVzcyhcIkFycm93TGVmdFwiKTtcbiAgfVxufTtcbi8qKiDjgqvjg7zjgr3jg6vjgpLkuIrjgavli5XjgYvjgZlcbiAqXG4gKiBAcGFyYW0gW2NvdW50PTFdIOWLleOBi+OBmeWbnuaVsFxuICovXG5leHBvcnQgY29uc3QgbW92ZVVwID0gKGNvdW50ID0gMSk6IHZvaWQgPT4ge1xuICBmb3IgKGNvbnN0IF8gb2YgcmFuZ2UoMCwgY291bnQpKSB7XG4gICAgcHJlc3MoXCJBcnJvd1VwXCIpO1xuICB9XG59O1xuLyoqIOOCq+ODvOOCveODq+OCkuS4i+OBq+WLleOBi+OBmVxuICpcbiAqIEBwYXJhbSBbY291bnQ9MV0g5YuV44GL44GZ5Zue5pWwXG4gKi9cbmV4cG9ydCBjb25zdCBtb3ZlRG93biA9IChjb3VudCA9IDEpOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCBfIG9mIHJhbmdlKDAsIGNvdW50KSkge1xuICAgIHByZXNzKFwiQXJyb3dEb3duXCIpO1xuICB9XG59O1xuLyoqIOOCq+ODvOOCveODq+OCkuWPs+OBq+WLleOBi+OBmVxuICpcbiAqIEBwYXJhbSBbY291bnQ9MV0g5YuV44GL44GZ5Zue5pWwXG4gKi9cbmV4cG9ydCBjb25zdCBtb3ZlUmlnaHQgPSAoY291bnQgPSAxKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgXyBvZiByYW5nZSgwLCBjb3VudCkpIHtcbiAgICBwcmVzcyhcIkFycm93UmlnaHRcIik7XG4gIH1cbn07XG5cbi8qKiDjgqTjg7Pjg4fjg7Pjg4jjgpLpmaTjgYTjgZ/ooYzpoK3jgavnp7vli5XjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBnb0hlYWRXaXRob3V0QmxhbmsgPSAoKTogdm9pZCA9PiB7XG4gIHByZXNzKFwiRW5kXCIpO1xuICBwcmVzcyhcIkhvbWVcIik7XG59O1xuLyoqIOacgOW+jOOBrumdnuepuueZveaWh+Wtl+OBq+enu+WLleOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGdvRW5kV2l0aG91dEJsYW5rID0gKCk6IHZvaWQgPT4ge1xuICBwcmVzcyhcIkVuZFwiKTtcbiAgbW92ZUxlZnQoXG4gICAgZ2V0VGV4dChjYXJldCgpLnBvc2l0aW9uLmxpbmUpPy5tYXRjaD8uKC8oXFxzKikkLyk/LlsxXT8ubGVuZ3RoID8/IDAsXG4gICk7XG59O1xuLyoqIOihjOmgreOBq+enu+WLleOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGdvSGVhZCA9ICgpOiB2b2lkID0+IHtcbiAgcHJlc3MoXCJIb21lXCIpO1xuICBwcmVzcyhcIkhvbWVcIik7XG59O1xuLyoqIOihjOacq+OBq+enu+WLleOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGdvRW5kID0gKCk6IHZvaWQgPT4ge1xuICBwcmVzcyhcIkVuZFwiKTtcbn07XG5cbi8qKiDmnIDliJ3jga7ooYzjga7ooYzpoK3jgavnp7vli5XjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBnb0hlYWRMaW5lID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCB0YXJnZXQgPSBnZXRIZWFkTGluZURPTSgpO1xuICBpZiAoIXRhcmdldCkgdGhyb3cgRXJyb3IoXCIubGluZTpmaXJzdC1vZi10eXBlIGNhbid0IGJlIGZvdW5kLlwiKTtcbiAgaWYgKCFpc0hlaWdodFZpZXdhYmxlKHRhcmdldCkpIHRhcmdldC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiBcImNlbnRlclwiIH0pO1xuXG4gIGNvbnN0IGNoYXJET00gPSBnZXRIZWFkQ2hhckRPTSh0YXJnZXQpO1xuICBpZiAoIWNoYXJET00pIHRocm93IEVycm9yKFwiLmxpbmU6Zmlyc3Qtb2YtdHlwZSAuYy0wIGNhbid0IGJlIGZvdW5kLlwiKTtcbiAgY29uc3QgeyBsZWZ0LCB0b3AgfSA9IGNoYXJET00uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGF3YWl0IGNsaWNrKHRhcmdldCwgeyBYOiBsZWZ0LCBZOiB0b3AgfSk7XG59O1xuLyoqIOacgOW+jOOBruihjOOBruihjOacq+OBq+enu+WLleOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGdvTGFzdExpbmUgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGF3YWl0IF9nb0xpbmUoZ2V0VGFpbExpbmVET00oKSk7XG59O1xuLyoqIOS7u+aEj+OBruihjOOBruihjOacq+OBq+enu+WLleOBmeOCi1xuICpcbiAqIEBwYXJhbSB2YWx1ZSDnp7vli5XjgZfjgZ/jgYTooYzjga7ooYznlarlj7cgb3Ig6KGMSUQgb3Ig6KGM44GuRE9NXG4gKi9cbmV4cG9ydCBjb25zdCBnb0xpbmUgPSBhc3luYyAoXG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCxcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBhd2FpdCBfZ29MaW5lKGdldExpbmVET00odmFsdWUpKTtcbn07XG5jb25zdCBfZ29MaW5lID0gYXN5bmMgKHRhcmdldDogSFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQpID0+IHtcbiAgaWYgKCF0YXJnZXQpIHRocm93IEVycm9yKFwiVGhlIHRhcmdldCBsaW5lIERPTSBpcyBmYWlsZWQgdG8gZmluZC5cIik7XG4gIGlmICghaXNIZWlnaHRWaWV3YWJsZSh0YXJnZXQpKSB0YXJnZXQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogXCJjZW50ZXJcIiB9KTtcblxuICBjb25zdCB7IHJpZ2h0LCB0b3AsIGhlaWdodCB9ID0gdGFyZ2V0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ0ZXh0XCIpWzBdXG4gICAgLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBhd2FpdCBjbGljayh0YXJnZXQsIHsgWDogcmlnaHQgKyAxLCBZOiB0b3AgKyBoZWlnaHQgLyAyIH0pO1xufTtcblxuLyoqIOS7u+aEj+OBruaWh+Wtl+OBq+enu+WLleOBmeOCi1xuICpcbiAqIOOCr+ODquODg+OCr+OBp+enu+WLleOBp+OBjeOBquOBhOaWh+Wtl+OBq+enu+WLleOBl+OCiOOBhuOBqOOBmeOCi+OBqOWkseaVl+OBmeOCi+OBruOBp+azqOaEj1xuICpcbiAqIEBwYXJhbSBsaW5lIOenu+WLleOBl+OBn+OBhOaWh+Wtl+OBjOOBguOCi+ihjFxuICogQHBhcmFtIHBvcyDnp7vli5XjgZfjgZ/jgYTmloflrZfjga7liJdcbiAqL1xuZXhwb3J0IGNvbnN0IGdvQ2hhciA9IGFzeW5jIChcbiAgbGluZTogc3RyaW5nIHwgbnVtYmVyIHwgSFRNTEVsZW1lbnQsXG4gIHBvczogbnVtYmVyLFxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGNoYXJET00gPSBnZXRDaGFyRE9NKGxpbmUsIHBvcyk7XG4gIGlmICghY2hhckRPTSkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgYENvdWxkIG5vdCBmaW5kIHRoZSBjaGFyIERPTSBhdCBsaW5lOiAke2dldExpbmVObyhsaW5lKX0sIGNvbHVtbjogJHtwb3N9YCxcbiAgICApO1xuICB9XG4gIGlmICghaXNIZWlnaHRWaWV3YWJsZShjaGFyRE9NKSkgY2hhckRPTS5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiBcImNlbnRlclwiIH0pO1xuXG4gIGNvbnN0IHsgbGVmdCwgdG9wIH0gPSBjaGFyRE9NLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBhd2FpdCBjbGljayhjaGFyRE9NLCB7IFg6IGxlZnQsIFk6IHRvcCB9KTtcbn07XG5cbi8qKiDnlLvpnaLjgavlj47jgb7jgovmnIDlpKfooYzmlbDjgpLoqIjnrpfjgZnjgotcbiAqXG4gKiDooYzjga7pq5jjgZXjga/mnIDlvozjga7ooYzjgpLln7rmupbjgajjgZnjgotcbiAqL1xuY29uc3QgZ2V0VmlzaWJsZUxpbmVDb3VudCA9ICgpOiBudW1iZXIgPT4ge1xuICBjb25zdCBjbGllbnRIZWlnaHQgPSBnZXRUYWlsTGluZURPTSgpPy5jbGllbnRIZWlnaHQ7XG4gIGlmIChjbGllbnRIZWlnaHQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IEVycm9yKFwiQ291bGQgbm90IGZpbmQgLmxpbmU6bGFzdC1vZi10eXBlXCIpO1xuICB9XG4gIHJldHVybiBNYXRoLnJvdW5kKGdsb2JhbFRoaXMuaW5uZXJIZWlnaHQgLyBjbGllbnRIZWlnaHQpO1xufTtcblxuLyoqIOWNiuODmuODvOOCuOS4iuOBq+OCueOCr+ODreODvOODq+OBmeOCi1xuICpcbiAqIEBwYXJhbSBbY291bnQ9MV0g44K544Kv44Ot44O844Or5Zue5pWwXG4gKi9cbmV4cG9ydCBjb25zdCBzY3JvbGxIYWxmVXAgPSBhc3luYyAoY291bnQgPSAxKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGxpbmVObyA9IGdldExpbmVObyhjYXJldCgpLnBvc2l0aW9uLmxpbmUpO1xuICBpZiAobGluZU5vID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBFcnJvcihcIkNvdWxkIG5vdCBkZXRlY3QgdGhlIHByZXNlbnQgY3Vyc29yIGxpbmUgTm8uXCIpO1xuICB9XG4gIGNvbnN0IGluZGV4ID0gTWF0aC5yb3VuZChcbiAgICAobGluZU5vIC0gZ2V0VmlzaWJsZUxpbmVDb3VudCgpIC8gMikgKiBjb3VudCxcbiAgKTtcbiAgYXdhaXQgZ29MaW5lKE1hdGgubWF4KGluZGV4LCAwKSk7XG59O1xuLyoqIOWNiuODmuODvOOCuOS4i+OBq+OCueOCr+ODreODvOODq+OBmeOCi1xuICpcbiAqIEBwYXJhbSBbY291bnQ9MV0g44K544Kv44Ot44O844Or5Zue5pWwXG4gKi9cbmV4cG9ydCBjb25zdCBzY3JvbGxIYWxmRG93biA9IGFzeW5jIChjb3VudCA9IDEpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgbGluZU5vID0gZ2V0TGluZU5vKGNhcmV0KCkucG9zaXRpb24ubGluZSk7XG4gIGlmIChsaW5lTm8gPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IEVycm9yKFwiQ291bGQgbm90IGRldGVjdCB0aGUgcHJlc2VudCBjdXJzb3IgbGluZSBOby5cIik7XG4gIH1cbiAgY29uc3QgaW5kZXggPSBNYXRoLnJvdW5kKFxuICAgIChsaW5lTm8gKyBnZXRWaXNpYmxlTGluZUNvdW50KCkgLyAyKSAqIGNvdW50LFxuICApO1xuICBhd2FpdCBnb0xpbmUoTWF0aC5taW4oaW5kZXgsIGdldExpbmVDb3VudCgpIC0gMSkpO1xufTtcbi8qKiAx44Oa44O844K45LiK44Gr44K544Kv44Ot44O844Or44GZ44KLXG4gKlxuICogQHBhcmFtIFtjb3VudD0xXSDjgrnjgq/jg63jg7zjg6vlm57mlbBcbiAqL1xuZXhwb3J0IGNvbnN0IHNjcm9sbFVwID0gKGNvdW50ID0gMSk6IHZvaWQgPT4ge1xuICBmb3IgKGNvbnN0IF8gb2YgcmFuZ2UoMCwgY291bnQpKSB7XG4gICAgcHJlc3MoXCJQYWdlVXBcIik7XG4gIH1cbn07XG4vKiogMeODmuODvOOCuOS4i+OBq+OCueOCr+ODreODvOODq+OBmeOCi1xuICpcbiAqIEBwYXJhbSBbY291bnQ9MV0g44K544Kv44Ot44O844Or5Zue5pWwXG4gKi9cbmV4cG9ydCBjb25zdCBzY3JvbGxEb3duID0gKGNvdW50ID0gMSk6IHZvaWQgPT4ge1xuICBmb3IgKGNvbnN0IF8gb2YgcmFuZ2UoMCwgY291bnQpKSB7XG4gICAgcHJlc3MoXCJQYWdlRG93blwiKTtcbiAgfVxufTtcbiIsICJpbXBvcnQgeyBnb0hlYWQsIGdvTGluZSB9IGZyb20gXCIuL21vdGlvbi50c1wiO1xuaW1wb3J0IHsgcHJlc3MgfSBmcm9tIFwiLi9wcmVzcy50c1wiO1xuaW1wb3J0IHsgZ2V0TGluZUNvdW50IH0gZnJvbSBcIi4vbm9kZS50c1wiO1xuaW1wb3J0IHsgcmFuZ2UgfSBmcm9tIFwiLi4vLi4vcmFuZ2UudHNcIjtcbmltcG9ydCB7IHRleHRJbnB1dCB9IGZyb20gXCIuL2RvbS50c1wiO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNOdW1iZXIsIGlzU3RyaW5nIH0gZnJvbSBcIi4uLy4uL2lzLnRzXCI7XG5pbXBvcnQgeyBzbGVlcCB9IGZyb20gXCIuLi8uLi9zbGVlcC50c1wiO1xuXG5leHBvcnQgY29uc3QgdW5kbyA9IChjb3VudCA9IDEpOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCBfIG9mIHJhbmdlKDAsIGNvdW50KSkge1xuICAgIHByZXNzKFwielwiLCB7IGN0cmxLZXk6IHRydWUgfSk7XG4gIH1cbn07XG5leHBvcnQgY29uc3QgcmVkbyA9IChjb3VudCA9IDEpOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCBfIG9mIHJhbmdlKDAsIGNvdW50KSkge1xuICAgIHByZXNzKFwielwiLCB7IHNoaWZ0S2V5OiB0cnVlLCBjdHJsS2V5OiB0cnVlIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0SWNvbiA9IChjb3VudCA9IDEpOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCBfIG9mIHJhbmdlKDAsIGNvdW50KSkge1xuICAgIHByZXNzKFwiaVwiLCB7IGN0cmxLZXk6IHRydWUgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRUaW1lc3RhbXAgPSAoaW5kZXggPSAxKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgXyBvZiByYW5nZSgwLCBpbmRleCkpIHtcbiAgICBwcmVzcyhcInRcIiwgeyBhbHRLZXk6IHRydWUgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRMaW5lID0gYXN5bmMgKFxuICBsaW5lTm86IG51bWJlcixcbiAgdGV4dDogc3RyaW5nLFxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGF3YWl0IGdvTGluZShsaW5lTm8pO1xuICBnb0hlYWQoKTtcbiAgcHJlc3MoXCJFbnRlclwiKTtcbiAgcHJlc3MoXCJBcnJvd1VwXCIpO1xuICBhd2FpdCBpbnNlcnRUZXh0KHRleHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlcGxhY2VMaW5lcyA9IGFzeW5jIChcbiAgc3RhcnQ6IG51bWJlcixcbiAgZW5kOiBudW1iZXIsXG4gIHRleHQ6IHN0cmluZyxcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBhd2FpdCBnb0xpbmUoc3RhcnQpO1xuICBnb0hlYWQoKTtcbiAgZm9yIChjb25zdCBfIG9mIHJhbmdlKHN0YXJ0LCBlbmQpKSB7XG4gICAgcHJlc3MoXCJBcnJvd0Rvd25cIiwgeyBzaGlmdEtleTogdHJ1ZSB9KTtcbiAgfVxuICBwcmVzcyhcIkVuZFwiLCB7IHNoaWZ0S2V5OiB0cnVlIH0pO1xuICBhd2FpdCBpbnNlcnRUZXh0KHRleHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUxpbmVzID0gYXN5bmMgKFxuICBmcm9tOiBudW1iZXIgfCBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgY291bnQgPSAxLFxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGlmIChpc051bWJlcihmcm9tKSkge1xuICAgIGlmIChnZXRMaW5lQ291bnQoKSA9PT0gZnJvbSArIGNvdW50KSB7XG4gICAgICBhd2FpdCBnb0xpbmUoZnJvbSAtIDEpO1xuICAgICAgcHJlc3MoXCJBcnJvd1JpZ2h0XCIsIHsgc2hpZnRLZXk6IHRydWUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGdvTGluZShmcm9tKTtcbiAgICAgIGdvSGVhZCgpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgIHByZXNzKFwiQXJyb3dSaWdodFwiLCB7IHNoaWZ0S2V5OiB0cnVlIH0pO1xuICAgICAgcHJlc3MoXCJFbmRcIiwgeyBzaGlmdEtleTogdHJ1ZSB9KTtcbiAgICB9XG4gICAgcHJlc3MoXCJBcnJvd1JpZ2h0XCIsIHsgc2hpZnRLZXk6IHRydWUgfSk7XG4gICAgcHJlc3MoXCJEZWxldGVcIik7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChpc1N0cmluZyhmcm9tKSB8fCBpc0FycmF5KGZyb20pKSB7XG4gICAgY29uc3QgaWRzID0gQXJyYXkuaXNBcnJheShmcm9tKSA/IGZyb20gOiBbZnJvbV07XG4gICAgZm9yIChjb25zdCBpZCBvZiBpZHMpIHtcbiAgICAgIGF3YWl0IGdvTGluZShpZCk7XG4gICAgICBwcmVzcyhcIkhvbWVcIiwgeyBzaGlmdEtleTogdHJ1ZSB9KTtcbiAgICAgIHByZXNzKFwiSG9tZVwiLCB7IHNoaWZ0S2V5OiB0cnVlIH0pO1xuICAgICAgcHJlc3MoXCJCYWNrc3BhY2VcIik7XG4gICAgICBwcmVzcyhcIkJhY2tzcGFjZVwiKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgYFRoZSB0eXBlIG9mIHZhbHVlIG11c3QgYmUgbnVtYmVyIHwgc3RyaW5nIHwgc3RyaW5nW10gYnV0IGFjdHVhbCBpcyBcIiR7dHlwZW9mIGZyb219XCJgLFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGluZGVudExpbmVzID0gKGNvdW50ID0gMSk6IHZvaWQgPT4ge1xuICBmb3IgKGNvbnN0IF8gb2YgcmFuZ2UoMCwgY291bnQpKSB7XG4gICAgcHJlc3MoXCJBcnJvd1JpZ2h0XCIsIHsgY3RybEtleTogdHJ1ZSB9KTtcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBvdXRkZW50TGluZXMgPSAoY291bnQgPSAxKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgXyBvZiByYW5nZSgwLCBjb3VudCkpIHtcbiAgICBwcmVzcyhcIkFycm93TGVmdFwiLCB7IGN0cmxLZXk6IHRydWUgfSk7XG4gIH1cbn07XG5leHBvcnQgY29uc3QgbW92ZUxpbmVzID0gKGNvdW50OiBudW1iZXIpOiB2b2lkID0+IHtcbiAgaWYgKGNvdW50ID4gMCkge1xuICAgIGRvd25MaW5lcyhjb3VudCk7XG4gIH0gZWxzZSB7XG4gICAgdXBMaW5lcygtY291bnQpO1xuICB9XG59O1xuLy8gdG/ooYznm67jga7lvozjgo3jgavnp7vli5XjgZXjgZvjgotcbmV4cG9ydCBjb25zdCBtb3ZlTGluZXNCZWZvcmUgPSAoZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKTogdm9pZCA9PiB7XG4gIGNvbnN0IGNvdW50ID0gdG8gLSBmcm9tO1xuICBpZiAoY291bnQgPj0gMCkge1xuICAgIGRvd25MaW5lcyhjb3VudCk7XG4gIH0gZWxzZSB7XG4gICAgdXBMaW5lcygtY291bnQgLSAxKTtcbiAgfVxufTtcbmV4cG9ydCBjb25zdCB1cExpbmVzID0gKGNvdW50ID0gMSk6IHZvaWQgPT4ge1xuICBmb3IgKGNvbnN0IF8gb2YgcmFuZ2UoMCwgY291bnQpKSB7XG4gICAgcHJlc3MoXCJBcnJvd1VwXCIsIHsgY3RybEtleTogdHJ1ZSB9KTtcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBkb3duTGluZXMgPSAoY291bnQgPSAxKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgXyBvZiByYW5nZSgwLCBjb3VudCkpIHtcbiAgICBwcmVzcyhcIkFycm93RG93blwiLCB7IGN0cmxLZXk6IHRydWUgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpbmRlbnRCbG9ja3MgPSAoY291bnQgPSAxKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgXyBvZiByYW5nZSgwLCBjb3VudCkpIHtcbiAgICBwcmVzcyhcIkFycm93UmlnaHRcIiwgeyBhbHRLZXk6IHRydWUgfSk7XG4gIH1cbn07XG5leHBvcnQgY29uc3Qgb3V0ZGVudEJsb2NrcyA9IChjb3VudCA9IDEpOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCBfIG9mIHJhbmdlKDAsIGNvdW50KSkge1xuICAgIHByZXNzKFwiQXJyb3dMZWZ0XCIsIHsgYWx0S2V5OiB0cnVlIH0pO1xuICB9XG59O1xuZXhwb3J0IGNvbnN0IG1vdmVCbG9ja3MgPSAoY291bnQ6IG51bWJlcik6IHZvaWQgPT4ge1xuICBpZiAoY291bnQgPiAwKSB7XG4gICAgZG93bkJsb2Nrcyhjb3VudCk7XG4gIH0gZWxzZSB7XG4gICAgdXBCbG9ja3MoLWNvdW50KTtcbiAgfVxufTtcbmV4cG9ydCBjb25zdCB1cEJsb2NrcyA9IChjb3VudCA9IDEpOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCBfIG9mIHJhbmdlKDAsIGNvdW50KSkge1xuICAgIHByZXNzKFwiQXJyb3dVcFwiLCB7IGFsdEtleTogdHJ1ZSB9KTtcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBkb3duQmxvY2tzID0gKGNvdW50ID0gMSk6IHZvaWQgPT4ge1xuICBmb3IgKGNvbnN0IF8gb2YgcmFuZ2UoMCwgY291bnQpKSB7XG4gICAgcHJlc3MoXCJBcnJvd0Rvd25cIiwgeyBhbHRLZXk6IHRydWUgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRUZXh0ID0gYXN5bmMgKHRleHQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBjdXJzb3IgPSB0ZXh0SW5wdXQoKTtcbiAgaWYgKCFjdXJzb3IpIHtcbiAgICB0aHJvdyBFcnJvcihcIiN0ZXh0LWlucHV0IGlzIG5vdCBkaXRlY3RlZC5cIik7XG4gIH1cbiAgY3Vyc29yLmZvY3VzKCk7XG4gIGN1cnNvci52YWx1ZSA9IHRleHQ7XG5cbiAgY29uc3QgZXZlbnQgPSBuZXcgSW5wdXRFdmVudChcImlucHV0XCIsIHsgYnViYmxlczogdHJ1ZSB9KTtcbiAgY3Vyc29yLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICBhd2FpdCBzbGVlcCgxKTsgLy8g5b6F44Gh5pmC6ZaT44Gv5oSf6Kaa44Gn5rG644KB44GfXG59O1xuIiwgImltcG9ydCB7IHN0YXR1c0JhciB9IGZyb20gXCIuL2RvbS50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZVN0YXR1c0JhclJlc3VsdCB7XG4gIC8qKiDlj5blvpfjgZfjgZ8uc3RhdHVzLWJhcuOBrumgmOWfn+OBq+aDheWgseOCkuihqOekuuOBmeOCiyAqL1xuICByZW5kZXI6ICguLi5pdGVtczogSXRlbVtdKSA9PiB2b2lkO1xuICAvKiog5Y+W5b6X44GX44GfLnN0YXR1c2ItYmFy44Gu6aCY5Z+f44KS5YmK6Zmk44GZ44KLICovXG4gIGRpc3Bvc2U6ICgpID0+IHZvaWQ7XG59XG5cbi8qKiAuc3RhdHVzLWJhcuOBruS4gOWMuueUu+OCkuWPluW+l+OBl+OAgeWQhOeoruaTjeS9nOWHveaVsOOCkui/lOOBmSAqL1xuZXhwb3J0IGNvbnN0IHVzZVN0YXR1c0JhciA9ICgpOiBVc2VTdGF0dXNCYXJSZXN1bHQgPT4ge1xuICBjb25zdCBiYXIgPSBzdGF0dXNCYXIoKTtcbiAgaWYgKCFiYXIpIHRocm93IG5ldyBFcnJvcihgZGl2LnN0YXR1cy1iYXIgY2FuJ3QgYmUgZm91bmRgKTtcblxuICBjb25zdCBzdGF0dXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICBiYXIuYXBwZW5kKHN0YXR1cyk7XG5cbiAgcmV0dXJuIHtcbiAgICByZW5kZXI6ICguLi5pdGVtczogSXRlbVtdKSA9PiB7XG4gICAgICBzdGF0dXMudGV4dENvbnRlbnQgPSBcIlwiO1xuICAgICAgY29uc3QgY2hpbGQgPSBtYWtlR3JvdXAoLi4uaXRlbXMpO1xuICAgICAgaWYgKGNoaWxkKSBzdGF0dXMuYXBwZW5kKGNoaWxkKTtcbiAgICB9LFxuICAgIGRpc3Bvc2U6ICgpID0+IHN0YXR1cy5yZW1vdmUoKSxcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlbUdyb3VwIHtcbiAgdHlwZTogXCJncm91cFwiO1xuICBpdGVtczogSXRlbVtdO1xufVxuZXhwb3J0IHR5cGUgSXRlbSA9XG4gIHwge1xuICAgIHR5cGU6IFwic3Bpbm5lclwiIHwgXCJjaGVjay1jaXJjbGVcIiB8IFwiZXhjbGFtYXRpb24tdHJpYW5nbGVcIjtcbiAgfVxuICB8IHsgdHlwZTogXCJ0ZXh0XCI7IHRleHQ6IHN0cmluZyB9XG4gIHwgSXRlbUdyb3VwO1xuXG5jb25zdCBtYWtlR3JvdXAgPSAoLi4uaXRlbXM6IEl0ZW1bXSk6IEhUTUxTcGFuRWxlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IG5vZGVzID0gaXRlbXMuZmxhdE1hcCgoaXRlbSkgPT4ge1xuICAgIHN3aXRjaCAoaXRlbS50eXBlKSB7XG4gICAgICBjYXNlIFwic3Bpbm5lclwiOlxuICAgICAgICByZXR1cm4gW21ha2VTcGlubmVyKCldO1xuICAgICAgY2FzZSBcImNoZWNrLWNpcmNsZVwiOlxuICAgICAgICByZXR1cm4gW21ha2VDaGVja0NpcmNsZSgpXTtcbiAgICAgIGNhc2UgXCJleGNsYW1hdGlvbi10cmlhbmdsZVwiOlxuICAgICAgICByZXR1cm4gW21ha2VFeGNsYW1hdGlvblRyaWFuZ2xlKCldO1xuICAgICAgY2FzZSBcInRleHRcIjpcbiAgICAgICAgcmV0dXJuIFttYWtlSXRlbShpdGVtLnRleHQpXTtcbiAgICAgIGNhc2UgXCJncm91cFwiOiB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gbWFrZUdyb3VwKC4uLml0ZW0uaXRlbXMpO1xuICAgICAgICByZXR1cm4gZ3JvdXAgPyBbZ3JvdXBdIDogW107XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICBpZiAobm9kZXMubGVuZ3RoID09PSAxKSByZXR1cm4gbm9kZXNbMF07XG4gIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcbiAgc3Bhbi5jbGFzc0xpc3QuYWRkKFwiaXRlbS1ncm91cFwiKTtcbiAgc3Bhbi5hcHBlbmQoLi4ubm9kZXMpO1xuICByZXR1cm4gc3Bhbjtcbn07XG5jb25zdCBtYWtlSXRlbSA9IChjaGlsZDogc3RyaW5nIHwgTm9kZSkgPT4ge1xuICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gIHNwYW4uY2xhc3NMaXN0LmFkZChcIml0ZW1cIik7XG4gIHNwYW4uYXBwZW5kKGNoaWxkKTtcbiAgcmV0dXJuIHNwYW47XG59O1xuXG4vKiog44K544OU44OK44O844KS5L2c44KLICovXG5jb25zdCBtYWtlU3Bpbm5lciA9ICgpID0+IHtcbiAgY29uc3QgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpXCIpO1xuICBpLmNsYXNzTGlzdC5hZGQoXCJmYVwiLCBcImZhLXNwaW5uZXJcIik7XG4gIHJldHVybiBtYWtlSXRlbShpKTtcbn07XG5cbi8qKiDjg4Hjgqfjg4Pjgq/jg57jg7zjgq/jgpLkvZzjgosgKi9cbmNvbnN0IG1ha2VDaGVja0NpcmNsZSA9ICgpID0+IHtcbiAgY29uc3QgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpXCIpO1xuICBpLmNsYXNzTGlzdC5hZGQoXCJrYW1vblwiLCBcImthbW9uLWNoZWNrLWNpcmNsZVwiKTtcbiAgcmV0dXJuIG1ha2VJdGVtKGkpO1xufTtcblxuLyoqIOitpuWRiuOCouOCpOOCs+ODs+OCkuS9nOOCiyAqL1xuY29uc3QgbWFrZUV4Y2xhbWF0aW9uVHJpYW5nbGUgPSAoKSA9PiB7XG4gIGNvbnN0IGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaVwiKTtcbiAgaS5jbGFzc0xpc3QuYWRkKFwiZmFzXCIsIFwiZmEtZXhjbGFtYXRpb24tdHJpYW5nbGVcIik7XG4gIHJldHVybiBtYWtlSXRlbShpKTtcbn07XG4iLCAiaW1wb3J0IHsgdG9UaXRsZUxjIH0gZnJvbSBcIi4uLy4uL3RpdGxlLnRzXCI7XG5cbi8qKiDjg5rjg7zjgrjjg6rjg7Pjgq8gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGluayB7XG4gIC8qKiDjg6rjg7Pjgq/lhYjjga5wcm9qZWN0IG5hbWUgKi9cbiAgcHJvamVjdDogc3RyaW5nO1xuXG4gIC8qKiDjg6rjg7Pjgq/lhYjjga5wYWdlIHRpdGxlICovXG4gIHRpdGxlOiBzdHJpbmc7XG59XG5cbi8qKiDjg5rjg7zjgrjjgYvjgonliKXjga7jg5rjg7zjgrjjgavpgbfnp7vjgZnjgovjgajjgY3jga7nirbmhYvjgpLooajjgZkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZVRyYW5zaXRpb25Db250ZXh0TGluayB7XG4gIHR5cGU6IFwicGFnZVwiO1xuXG4gIC8qKiDpgbfnp7vlhYPjg5rjg7zjgrjjga7jg6rjg7Pjgq8gKi9cbiAgZnJvbTogTGluaztcblxuICAvKiog6YG356e75YWI44Oa44O844K444Gu44Oq44Oz44KvICovXG4gIHRvOiBMaW5rO1xufVxuXG4vKiog5YWo5paH5qSc57Si57WQ5p6c44GL44KJ5Yil44Gu44Oa44O844K444Gr6YG356e744GZ44KL44Go44GN44Gu54q25oWL44KS6KGo44GZICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VUcmFuc2l0aW9uQ29udGV4dFF1ZXJ5IHtcbiAgdHlwZTogXCJzZWFyY2hcIjtcblxuICAvKiog5YWo5paH5qSc57Si44Gn44Gu5qSc57Si6Kqe5Y+lICovXG4gIHF1ZXJ5OiBzdHJpbmc7XG5cbiAgLyoqIOmBt+enu+WFiOODmuODvOOCuOOBruODquODs+OCryAqL1xuICB0bzogTGluaztcbn1cblxuZXhwb3J0IHR5cGUgUGFnZVRyYW5zaXRpb25Db250ZXh0ID1cbiAgfCBQYWdlVHJhbnNpdGlvbkNvbnRleHRMaW5rXG4gIHwgUGFnZVRyYW5zaXRpb25Db250ZXh0UXVlcnk7XG5cbi8qKiDjg5rjg7zjgrjpgbfnp7vnirbmhYvjgpLnmbvpjLLjgZfjgIHmrKHlm57jga7jg5rjg7zjgrjpgbfnp7vmmYLjgavjg6rjg7Pjgq/lhYjjgbjjgrnjgq/jg63jg7zjg6vjgZnjgotcbiAqXG4gKiBAcGFyYW0gY29udGV4dCDpgbfnp7vnirbmhYtcbiAqL1xuZXhwb3J0IGNvbnN0IHB1c2hQYWdlVHJhbnNpdGlvbiA9IChjb250ZXh0OiBQYWdlVHJhbnNpdGlvbkNvbnRleHQpOiB2b2lkID0+IHtcbiAgY29uc3QgcGFnZVRyYW5zaXRpb25Db250ZXh0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IEpTT04ucGFyc2UoXG4gICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJwYWdlVHJhbnNpdGlvbkNvbnRleHRcIikgPz8gXCJcIixcbiAgKTtcbiAgY29uc3QgdmFsdWUgPSBjb250ZXh0LnR5cGUgPT09IFwicGFnZVwiXG4gICAgPyBjb250ZXh0LmZyb20ucHJvamVjdCA9PT0gY29udGV4dC50by5wcm9qZWN0XG4gICAgICA/IGNvbnRleHQuZnJvbS50aXRsZSA9PT0gY29udGV4dC50by50aXRsZVxuICAgICAgICA/IHtcbiAgICAgICAgICB0aXRsZUhpbnQ6IGNvbnRleHQudG8udGl0bGUsXG4gICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgbGlua0Zyb206IGNvbnRleHQuZnJvbS50aXRsZSxcbiAgICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgIGxpbmtGcm9tOiBgLyR7Y29udGV4dC5mcm9tLnByb2plY3R9LyR7Y29udGV4dC5mcm9tLnRpdGxlfWAsXG4gICAgICB9XG4gICAgOiB7XG4gICAgICBzZWFyY2hRdWVyeTogY29udGV4dC5xdWVyeSxcbiAgICB9O1xuICBwYWdlVHJhbnNpdGlvbkNvbnRleHRbYHBhZ2VfJHt0b1RpdGxlTGMoY29udGV4dC50by50aXRsZSl9YF0gPSB2YWx1ZTtcbiAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgXCJwYWdlVHJhbnNpdGlvbkNvbnRleHRcIixcbiAgICBKU09OLnN0cmluZ2lmeShwYWdlVHJhbnNpdGlvbkNvbnRleHQpLFxuICApO1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuXG5pbXBvcnQgeyBlbmNvZGVUaXRsZVVSSSB9IGZyb20gXCIuLi8uLi90aXRsZS50c1wiO1xuaW1wb3J0IHtcbiAgUGFnZVRyYW5zaXRpb25Db250ZXh0LFxuICBwdXNoUGFnZVRyYW5zaXRpb24sXG59IGZyb20gXCIuL3B1c2hQYWdlVHJhbnNpdGlvbi50c1wiO1xuaW1wb3J0IHR5cGUgeyBTY3JhcGJveCB9IGZyb20gXCIuLi8uLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuZXhwb3J0IGludGVyZmFjZSBPcGVuT3B0aW9ucyB7XG4gIC8qKiBsaW5lIGlkICovXG4gIGlkPzogc3RyaW5nO1xuXG4gIC8qKiDjg5rjg7zjgrjjgavov73oqJjjgZnjgovjg4bjgq3jgrnjg4ggKi9cbiAgYm9keT86IHN0cmluZztcblxuICAvKiog5paw44GX44GE44K/44OW44Gn6ZaL44GP44GL44Gp44GG44GLXG4gICAqXG4gICAqIEBkZWZhdWx0IOWQjOOBmOOCv+ODluOBp+mWi+OBj1xuICAgKi9cbiAgbmV3VGFiPzogYm9vbGVhbjtcblxuICAvKiog5ZCM44GY44K/44OW44Gn44Oa44O844K444KS6ZaL44GP5aC05ZCI44CB44Oa44O844K444KS5YaN6Kqt6L6844GZ44KL44GL44Gp44GG44GLXG4gICAqXG4gICAqIEBkZWZhdWx0IOWQjOOBmHByb2plY3Tjga7loLTlkIjjga/lho3oqq3jgb/ovrzjgb/jgZvjgZrjgIHpgZXjgYZwcm9qZWN044Gu5aC05ZCI44Gv5YaN6Kqt6L6844GZ44KLXG4gICAqL1xuICByZWxvYWQ/OiBib29sZWFuO1xuXG4gIC8qKiDjg6rjg7Pjgq/lhYjjgbjjgrnjgq/jg63jg7zjg6vjgZnjgovmqZ/og73jgpLkvb/jgYbjgZ/jgoHjgavlv4XopoHjgarmg4XloLEgKi9cbiAgY29udGV4dD86IE9taXQ8UGFnZVRyYW5zaXRpb25Db250ZXh0LCBcInRvXCI+O1xufVxuXG4vKiog44Oa44O844K444KS6ZaL44GPXG4gKlxuICogQHBhcmFtIHByb2plY3Qg6ZaL44GP44Oa44O844K444GucHJvamVjdOWQjVxuICogQHBhcmFtIHRpdGxlIOmWi+OBj+ODmuODvOOCuOOBruOCv+OCpOODiOODq1xuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IG9wZW4gPSAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgdGl0bGU6IHN0cmluZyxcbiAgb3B0aW9ucz86IE9wZW5PcHRpb25zLFxuKSA9PiB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoYC8ke3Byb2plY3R9LyR7ZW5jb2RlVGl0bGVVUkkodGl0bGUpfWAsIGxvY2F0aW9uLmhyZWYpO1xuICBpZiAob3B0aW9ucz8uYm9keSkgdXJsLnNlYXJjaCA9IGA/Ym9keT0ke2VuY29kZVVSSUNvbXBvbmVudChvcHRpb25zLmJvZHkpfWA7XG4gIGlmIChvcHRpb25zPy5pZCkgdXJsLmhhc2ggPSBgIyR7b3B0aW9ucy5pZH1gO1xuXG4gIGlmIChvcHRpb25zPy5jb250ZXh0KSB7XG4gICAgcHVzaFBhZ2VUcmFuc2l0aW9uKFxuICAgICAgeyAuLi5vcHRpb25zPy5jb250ZXh0LCB0bzogeyBwcm9qZWN0LCB0aXRsZSB9IH0gYXMgUGFnZVRyYW5zaXRpb25Db250ZXh0LFxuICAgICk7XG4gIH1cblxuICBpZiAoXG4gICAgb3B0aW9ucz8ubmV3VGFiICE9PSBmYWxzZSAmJlxuICAgIChvcHRpb25zPy5uZXdUYWIgPT09IHRydWUgfHwgcHJvamVjdCAhPT0gc2NyYXBib3guUHJvamVjdC5uYW1lKVxuICApIHtcbiAgICBnbG9iYWxUaGlzLm9wZW4odXJsKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKFxuICAgIG9wdGlvbnM/LnJlbG9hZCAhPT0gZmFsc2UgJiZcbiAgICAob3B0aW9ucz8ucmVsb2FkID09PSB0cnVlIHx8IHByb2plY3QgIT09IHNjcmFwYm94LlByb2plY3QubmFtZSlcbiAgKSB7XG4gICAgZ2xvYmFsVGhpcy5vcGVuKHVybCwgXCJfc2VsZlwiKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gIGEuaHJlZiA9IHVybC50b1N0cmluZygpO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZChhKTtcbiAgYS5jbGljaygpO1xuICBhLnJlbW92ZSgpO1xufTtcblxuLyoqIOWQjOOBmOOCv+ODluOBp+ODmuODvOOCuOOCkumWi+OBj1xuICpcbiAqIOOBk+OBruOBqOOBjeOAgeODmuODvOOCuOOBr+WGjeiqreOBv+i+vOOBv+OBleOCjOOBquOBhFxuICpcbiAqIEBwYXJhbSBwcm9qZWN0IOmWi+OBj+ODmuODvOOCuOOBrnByb2plY3TlkI1cbiAqIEBwYXJhbSB0aXRsZSDplovjgY/jg5rjg7zjgrjjga7jgr/jgqTjg4jjg6tcbiAqIEBwYXJhbSBbYm9keV0g44Oa44O844K444Gr6L+96KiY44GZ44KL44OG44Kt44K544OIXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuSW5UaGVTYW1lVGFiID0gKFxuICBwcm9qZWN0OiBzdHJpbmcsXG4gIHRpdGxlOiBzdHJpbmcsXG4gIGJvZHk/OiBzdHJpbmcsXG4pID0+IG9wZW4ocHJvamVjdCwgdGl0bGUsIHsgbmV3VGFiOiBmYWxzZSwgcmVsb2FkOiBmYWxzZSwgYm9keSB9KTtcbiIsICIvKiogc2NyYXBib3guaW/jgYznrqHnkIbjgZfjgabjgYTjgotjYWNoZSBzdG9yYWdl44GL44KJ44CB5pyA5paw44GucmVzcG9uc2XjgpLlj5blvpfjgZnjgotcbiAqXG4gKiDjgbvjgbwgaHR0cHM6Ly9zY3JhcGJveC5pby9kYWlpei9TY3JhcGJveOOBp+OBrlNlcnZpY2VXb3JrZXLjgahDYWNoZeOBrua0u+eUqCM1ZDJlZmFmZmFkZjRlNzAwMDA2NTExNzMg44Gu44OR44Kv44OqXG4gKlxuICogQHBhcmFtIHJlcXVlc3Qg44GT44GucmVxdWVzdOOBq+WvvuW/nOOBmeOCi3Jlc3BvbnNl44GM5qyy44GX44GEXG4gKiBAcGFyYW0gb3B0aW9ucyBzZWFyY2ggcGFyYW1z44KS54Sh6KaW44GX44Gf44GE44Go44GN44Go44GL44Gr5L2/44GGXG4gKiBAcmV0dXJuIGNhY2hl44GM44GC44KM44Gw44Gd44GucmVzcG9uc2XjgpLjgIHjgarjgZHjgozjgbBgdW5kZWZpbmVkYOOCkui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgZmluZExhdGVzdENhY2hlID0gYXN5bmMgKFxuICByZXF1ZXN0OiBSZXF1ZXN0LFxuICBvcHRpb25zPzogQ2FjaGVRdWVyeU9wdGlvbnMsXG4pOiBQcm9taXNlPFJlc3BvbnNlIHwgdW5kZWZpbmVkPiA9PiB7XG4gIGNvbnN0IGNhY2hlTmFtZXMgPSBhd2FpdCBnbG9iYWxUaGlzLmNhY2hlcy5rZXlzKCk7XG5cbiAgZm9yIChjb25zdCBkYXRlIG9mIGNhY2hlTmFtZXMuc29ydCgpLnJldmVyc2UoKSkge1xuICAgIGNvbnN0IGNhY2hlID0gYXdhaXQgY2FjaGVzLm9wZW4oZGF0ZSk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgY2FjaGUubWF0Y2gocmVxdWVzdCwgb3B0aW9ucyk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgfVxufTtcblxuLyoqIHNjcmFwYm94Lmlv44GM566h55CG44GX44Gm44GE44KLUkVTVCBBUEnns7vjga5jYWNoZSBzdG9yYWdl44GrcmVzcG9uc2XjgpLkv53lrZjjgZnjgotcbiAqXG4gKiBAcGFyYW0gcmVxdWVzdCDjgZPjga5yZXF1ZXN044Gr5a++5b+c44GZ44KLcmVzcG9uc2XjgpLkv53lrZjjgZnjgotcbiAqIEBwYXJhbSByZXNwb25zZSDkv53lrZjjgZnjgotyZXNwb25zZVxuICovXG5leHBvcnQgY29uc3Qgc2F2ZUFwaUNhY2hlID0gYXN5bmMgKFxuICByZXF1ZXN0OiBSZXF1ZXN0LFxuICByZXNwb25zZTogUmVzcG9uc2UsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgcmVzID0gcmVzcG9uc2UuY2xvbmUoKTtcbiAgY29uc3QgY2FjaGUgPSBhd2FpdCBjYWNoZXMub3BlbihnZW5lcmF0ZUNhY2hlTmFtZShuZXcgRGF0ZSgpKSk7XG4gIHJldHVybiBhd2FpdCBjYWNoZS5wdXQocmVxdWVzdCwgcmVzKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUNhY2hlTmFtZSA9IChkYXRlOiBEYXRlKTogc3RyaW5nID0+XG4gIGBhcGktJHtkYXRlLmdldEZ1bGxZZWFyKCl9LSR7YCR7ZGF0ZS5nZXRNb250aCgpICsgMX1gLnBhZFN0YXJ0KDIsIFwiMFwiKX0tJHtcbiAgICBgJHtkYXRlLmdldERhdGUoKX1gLnBhZFN0YXJ0KDIsIFwiMFwiKVxuICB9YDtcblxuLyoqIHByZWZldGNo44KS5a6f6KGM44GZ44KLXG4gKlxuICogcHJlZmV0Y2jjgZfjgZ/jg4fjg7zjgr/jga9gXCJwcmVmZXRjaFwiYOOBqGBcImFwaS15eXl5LU1NLWRkXCJg44Gr5qC857SN44GV44KM44KLXG4gKlxuICogYFwicHJlZmV0Y2hcImDjgavmoLzntI3jgZXjgozjgZ/jg4fjg7zjgr/jga/jgIHmrKHlm57jga7jg6rjgq/jgqjjgrnjg4jjgafov5TljbTjgZXjgozjgZ/jgajjgY3jgavliYrpmaTjgZXjgozjgotcbiAqXG4gKiDlm57nt5rjgYzpgYXjgYTjgajjgY3jga/kvovlpJbjgpLmipXjgZLjgotcbiAqXG4gKiBAcGFyYW0gdXJscyBwcmVmZXRjaOOBl+OBn+OBhEFQSeOBrlVSTOOBruODquOCueODiFxuICovXG5leHBvcnQgY29uc3QgcHJlZmV0Y2ggPSAodXJsczogKHN0cmluZyB8IFVSTClbXSk6IFByb21pc2U8dm9pZD4gPT5cbiAgcG9zdE1lc3NhZ2Uoe1xuICAgIHRpdGxlOiBcInByZWZldGNoXCIsXG4gICAgYm9keTogeyB1cmxzOiB1cmxzLm1hcCgodXJsKSA9PiB1cmwudG9TdHJpbmcoKSkgfSxcbiAgfSk7XG5cbi8qKiDmjIflrprjgZfjgZ9BUEnjga5jYWNoZeOBruabtOaWsOOCkuS+nemgvOOBmeOCi1xuICpcbiAqIOabtOaWsOOBrzEw56eS44GU44Go44GrMeOBpOOBmuOBpOWun+ihjOOBleOCjOOCi1xuICpcbiAqIEBwYXJhbSBjYWNoZeOBl+OBn+OBhEFQSeOBrlVSTFxuICovXG5leHBvcnQgY29uc3QgZmV0Y2hBcGlDYWNoZSA9ICh1cmw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT5cbiAgcG9zdE1lc3NhZ2UoeyB0aXRsZTogXCJmZXRjaEFwaUNhY2hlXCIsIGJvZHk6IHsgdXJsIH0gfSk7XG5cbmNvbnN0IHBvc3RNZXNzYWdlID0gPFQsIFUgPSB1bmtub3duPihcbiAgZGF0YTogeyB0aXRsZTogc3RyaW5nOyBib2R5OiBUIH0sXG4pOiBQcm9taXNlPFU+ID0+IHtcbiAgY29uc3QgeyBjb250cm9sbGVyIH0gPSBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlcjtcbiAgaWYgKCFjb250cm9sbGVyKSB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoKTtcbiAgICBlcnJvci5uYW1lID0gXCJTZXJ2aWNlV29ya2VyTm90QWN0aXZlWWV0RXJyb3JcIjtcbiAgICBlcnJvci5tZXNzYWdlID0gXCJTZXJ2aWNlIHdvcmtlciBpcyBub3QgYWN0aXZlIHlldFwiO1xuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlPFU+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgY2hhbm5lbC5wb3J0MS5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgXCJtZXNzYWdlXCIsXG4gICAgICAoZXZlbnQpID0+XG4gICAgICAgIGV2ZW50LmRhdGE/LmVycm9yID8gcmVqZWN0KGV2ZW50LmRhdGEuZXJyb3IpIDogcmVzb2x2ZShldmVudC5kYXRhKSxcbiAgICApO1xuICAgIGNvbnRyb2xsZXIucG9zdE1lc3NhZ2UoZGF0YSwgW2NoYW5uZWwucG9ydDJdKTtcbiAgfSk7XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbmltcG9ydCB7IHRleHRJbnB1dCB9IGZyb20gXCIuL2RvbS50c1wiO1xuaW1wb3J0IHsgQ3Vyc29yIH0gZnJvbSBcIi4vY3Vyc29yLmQudHNcIjtcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gXCIuL3NlbGVjdGlvbi5kLnRzXCI7XG5leHBvcnQgdHlwZSB7IEN1cnNvciwgU2VsZWN0aW9uIH07XG5cbmV4cG9ydCBjb25zdCB0YWtlU3RvcmVzID0gKCk6IHsgY3Vyc29yOiBDdXJzb3I7IHNlbGVjdGlvbjogU2VsZWN0aW9uIH0gPT4ge1xuICBjb25zdCB0ZXh0YXJlYSA9IHRleHRJbnB1dCgpO1xuICBpZiAoIXRleHRhcmVhKSB7XG4gICAgdGhyb3cgRXJyb3IoYCN0ZXh0LWlucHV0IGlzIG5vdCBmb3VuZC5gKTtcbiAgfVxuXG4gIGNvbnN0IHJlYWN0S2V5ID0gT2JqZWN0LmtleXModGV4dGFyZWEpXG4gICAgLmZpbmQoKGtleSkgPT4ga2V5LnN0YXJ0c1dpdGgoXCJfX3JlYWN0RmliZXJcIikpO1xuICBpZiAoIXJlYWN0S2V5KSB7XG4gICAgdGhyb3cgRXJyb3IoXG4gICAgICAnI3RleHQtaW5wdXQgbXVzdCBoYXMgdGhlIHByb3BlcnR5IHdob3NlIG5hbWUgc3RhcnRzIHdpdGggXCJfX3JlYWN0RmliZXJcIicsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmUgRE9N44KS54Sh55CG55+i55CGb2JqZWN044Go44GX44Gm5omx44Gj44Gm44GE44KLXG4gIGNvbnN0IHN0b3JlcyA9ICh0ZXh0YXJlYVtcbiAgICByZWFjdEtleVxuICBdIGFzIFJlYWN0RmliZXIpLnJldHVybi5yZXR1cm4uc3RhdGVOb2RlLl9zdG9yZXMgYXMgKEN1cnNvciB8IFNlbGVjdGlvbilbXTtcblxuICBjb25zdCBjdXJzb3IgPSBzdG9yZXMuZmluZCgoc3RvcmUpID0+XG4gICAgc3RvcmUuY29uc3RydWN0b3IubmFtZSA9PT0gXCJDdXJzb3JcIlxuICApIGFzIChDdXJzb3IgfCB1bmRlZmluZWQpO1xuICBpZiAoIWN1cnNvcikge1xuICAgIHRocm93IEVycm9yKCcjdGV4dC1pbnB1dCBtdXN0IGhhcyBhIFwiQ3Vyc29yXCIgc3RvcmUuJyk7XG4gIH1cbiAgY29uc3Qgc2VsZWN0aW9uID0gc3RvcmVzLmZpbmQoKHN0b3JlKSA9PlxuICAgIHN0b3JlLmNvbnN0cnVjdG9yLm5hbWUgPT09IFwiU2VsZWN0aW9uXCJcbiAgKSBhcyAoU2VsZWN0aW9uIHwgdW5kZWZpbmVkKTtcbiAgaWYgKCFzZWxlY3Rpb24pIHtcbiAgICB0aHJvdyBFcnJvcignI3RleHQtaW5wdXQgbXVzdCBoYXMgYSBcIlNlbGVjdGlvblwiIHN0b3JlLicpO1xuICB9XG5cbiAgcmV0dXJuIHsgY3Vyc29yLCBzZWxlY3Rpb24gfTtcbn07XG5cbmludGVyZmFjZSBSZWFjdEZpYmVyIHtcbiAgcmV0dXJuOiB7XG4gICAgcmV0dXJuOiB7XG4gICAgICBzdGF0ZU5vZGU6IHtcbiAgICAgICAgX3N0b3JlczogKEN1cnNvciB8IFNlbGVjdGlvbilbXTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn1cbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuXG5pbXBvcnQgeyB0YWtlU3RvcmVzIH0gZnJvbSBcIi4vc3RvcmVzLnRzXCI7XG5pbXBvcnQgeyBDdXJzb3IgfSBmcm9tIFwiLi9jdXJzb3IuZC50c1wiO1xuZXhwb3J0IHR5cGUgeyBDdXJzb3IgfTtcblxuZXhwb3J0IGNvbnN0IHRha2VDdXJzb3IgPSAoKTogQ3Vyc29yID0+IHRha2VTdG9yZXMoKS5jdXJzb3I7XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cblxuaW1wb3J0IHsgdGFrZVN0b3JlcyB9IGZyb20gXCIuL3N0b3Jlcy50c1wiO1xuaW1wb3J0IHsgU2VsZWN0aW9uIH0gZnJvbSBcIi4vc2VsZWN0aW9uLmQudHNcIjtcbmV4cG9ydCB0eXBlIHsgU2VsZWN0aW9uIH07XG5cbmV4cG9ydCBjb25zdCB0YWtlU2VsZWN0aW9uID0gKCk6IFNlbGVjdGlvbiA9PiB0YWtlU3RvcmVzKCkuc2VsZWN0aW9uO1xuIiwgIi8qKiDnrYnlgKTmr5TovIPnlKjjgatgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnNg44KSZW5jb2Rl44GZ44KLICovXG5leHBvcnQgY29uc3QgZW5jb2RlID0gKFxuICBvcHRpb25zOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyB8IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4pOiBudW1iZXIgPT4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMDtcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSBcImJvb2xlYW5cIikgcmV0dXJuIE51bWJlcihvcHRpb25zKTtcbiAgLy8g5ZCE44OV44Op44Kw44KS44OT44OD44OI44Gr44Ko44Oz44Kz44O844OJ44GZ44KLXG4gIHJldHVybiAoXG4gICAgKG9wdGlvbnMuY2FwdHVyZSA/IDEgOiAwKSB8XG4gICAgKG9wdGlvbnMub25jZSA/IDIgOiAwKSB8XG4gICAgKG9wdGlvbnMucGFzc2l2ZSA/IDQgOiAwKVxuICApO1xufTtcbi8qKiDnrYnlgKTmr5TovIPnlKjjgatlbmNvZGXjgZfjgZ9gQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnNg44KSZGVjb2Rl44GZ44KLXG4gKlxuICogLSBgY2FwdHVyZWA6IGAwYjAwMWBcbiAqIC0gYG9uY2VgOiBgMGIwMTBgXG4gKiAtIGBwYXNzaXZlYDogYDBiMTAwYFxuICogLSBgMGA6IGB1bmRlZmluZWRgXG4gKlxuICogQHBhcmFtIGVuY29kZWQgYEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zYOOCkmVuY29kZeOBl+OBn+WApFxuICogQHJldHVybnMgYEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zYOOBvuOBn+OBr2B1bmRlZmluZWRgXG4gKi9cbmV4cG9ydCBjb25zdCBkZWNvZGUgPSAoXG4gIGVuY29kZWQ6IG51bWJlcixcbik6IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGVuY29kZWQgPT09IDApIHJldHVybjtcbiAgY29uc3Qgb3B0aW9uczogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7fTtcbiAgaWYgKGVuY29kZWQgJiAxKSBvcHRpb25zLmNhcHR1cmUgPSB0cnVlO1xuICBpZiAoZW5jb2RlZCAmIDIpIG9wdGlvbnMub25jZSA9IHRydWU7XG4gIGlmIChlbmNvZGVkICYgNCkgb3B0aW9ucy5wYXNzaXZlID0gdHJ1ZTtcblxuICByZXR1cm4gb3B0aW9ucztcbn07XG4iLCAiaW1wb3J0IHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vLi4vZGVwcy9zY3JhcGJveC50c1wiO1xuaW1wb3J0IHsgdGV4dElucHV0IH0gZnJvbSBcIi4vZG9tLnRzXCI7XG5pbXBvcnQgeyBkZWNvZGUsIGVuY29kZSB9IGZyb20gXCIuL19pbnRlcm5hbC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbi8qKiAtIGZpcnN0IGtleTogZXZlbnQgbmFtZVxuICogLSBzZWNvbmQga2V5OiBsaXN0ZW5lclxuICogLSB2YWx1ZTogZW5jb2RlZCBvcHRpb25zXG4gKi9cbmNvbnN0IGxpc3RlbmVyTWFwID0gbmV3IE1hcDxcbiAga2V5b2YgSFRNTEVsZW1lbnRFdmVudE1hcCxcbiAgTWFwPEV2ZW50TGlzdGVuZXIsIFNldDxudW1iZXI+PlxuPigpO1xuY29uc3Qgb25jZUxpc3RlbmVyTWFwID0gbmV3IE1hcDxFdmVudExpc3RlbmVyLCBNYXA8bnVtYmVyLCBFdmVudExpc3RlbmVyPj4oKTtcblxuLyoqIGAjdGV4dC1pbnB1dGDjgavlr77jgZfjgabjgqTjg5njg7Pjg4jjg6rjgrnjg4rjg7zjgpLov73liqDjgZnjgotcbiAqXG4gKiBgI3RleHQtaW5wdXRg44Gv44Oa44O844K444Os44Kk44Ki44Km44OI44GM5aSJ44KP44KL44Go5YmK6Zmk44GV44KM44KL44Gf44KB44CB55m76Yyy44GX44Gf44Kk44OZ44Oz44OI44Oq44K544OK44O844Gu6KiY5oa244Go5YaN55m76Yyy44KS44GT44Gu6Zai5pWw44Gn6KGM44Gj44Gm44GE44KLXG4gKlxuICogQHBhcmFtIG5hbWUgZXZlbnQgbmFtZVxuICogQHBhcmFtIGxpc3RlbmVyIGV2ZW50IGxpc3RlbmVyXG4gKiBAcGFyYW0gb3B0aW9ucyBldmVudCBsaXN0ZW5lciBvcHRpb25zXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgYWRkVGV4dElucHV0RXZlbnRMaXN0ZW5lciA9IDxLIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRFdmVudE1hcD4oXG4gIG5hbWU6IEssXG4gIGxpc3RlbmVyOiAoXG4gICAgdGhpczogSFRNTFRleHRBcmVhRWxlbWVudCxcbiAgICBldmVudDogSFRNTEVsZW1lbnRFdmVudE1hcFtLXSxcbiAgKSA9PiB1bmtub3duLFxuICBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zLFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IGFyZ01hcCA9IGxpc3RlbmVyTWFwLmdldChuYW1lKSA/PyBuZXcgTWFwPEV2ZW50TGlzdGVuZXIsIFNldDxudW1iZXI+PigpO1xuICBjb25zdCBlbmNvZGVkT3B0aW9ucyA9IGFyZ01hcC5nZXQobGlzdGVuZXIgYXMgRXZlbnRMaXN0ZW5lcikgPz8gbmV3IFNldCgpO1xuICBpZiAoZW5jb2RlZE9wdGlvbnMuaGFzKGVuY29kZShvcHRpb25zKSkpIHJldHVybjtcbiAgZW5jb2RlZE9wdGlvbnMuYWRkKGVuY29kZShvcHRpb25zKSk7XG4gIGFyZ01hcC5zZXQobGlzdGVuZXIgYXMgRXZlbnRMaXN0ZW5lciwgZW5jb2RlZE9wdGlvbnMpO1xuICBsaXN0ZW5lck1hcC5zZXQobmFtZSwgYXJnTWFwKTtcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSBcIm9iamVjdFwiICYmIG9wdGlvbnM/Lm9uY2UpIHtcbiAgICBjb25zdCBvbmNlTWFwID0gb25jZUxpc3RlbmVyTWFwLmdldChsaXN0ZW5lciBhcyBFdmVudExpc3RlbmVyKSA/P1xuICAgICAgbmV3IE1hcDxudW1iZXIsIEV2ZW50TGlzdGVuZXI+KCk7XG4gICAgY29uc3QgZW5jb2RlZCA9IGVuY29kZShvcHRpb25zKTtcblxuICAgIC8qKiDlkbzjgbPlh7rjgZfmmYLjgavjgIFgbGlzdGVuZXJNYXBg44GL44KJ44Gu55m76Yyy44KC6Kej6Zmk44GZ44KLd3JhcHBlciBsaXN0ZW5lciAqL1xuICAgIGNvbnN0IG9uY2VMaXN0ZW5lciA9IGZ1bmN0aW9uIChcbiAgICAgIHRoaXM6IEhUTUxUZXh0QXJlYUVsZW1lbnQsXG4gICAgICBldmVudDogSFRNTEVsZW1lbnRFdmVudE1hcFtLXSxcbiAgICApIHtcbiAgICAgIHJlbW92ZVRleHRJbnB1dEV2ZW50TGlzdGVuZXIobmFtZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICAgICAgb25jZU1hcC5kZWxldGUoZW5jb2RlZCk7XG4gICAgICByZXR1cm4gbGlzdGVuZXIuY2FsbCh0aGlzLCBldmVudCk7XG4gICAgfTtcbiAgICBvbmNlTWFwLnNldChlbmNvZGVkLCBvbmNlTGlzdGVuZXIgYXMgRXZlbnRMaXN0ZW5lcik7XG4gICAgb25jZUxpc3RlbmVyTWFwLnNldChsaXN0ZW5lciBhcyBFdmVudExpc3RlbmVyLCBvbmNlTWFwKTtcblxuICAgIGNvbnN0IHRleHRpbnB1dCA9IHRleHRJbnB1dCgpO1xuICAgIGlmICghdGV4dGlucHV0KSByZXR1cm47XG4gICAgdGV4dGlucHV0LmFkZEV2ZW50TGlzdGVuZXI8Sz4obmFtZSwgb25jZUxpc3RlbmVyLCBvcHRpb25zKTtcbiAgfVxuICBjb25zdCB0ZXh0aW5wdXQgPSB0ZXh0SW5wdXQoKTtcbiAgaWYgKCF0ZXh0aW5wdXQpIHJldHVybjtcbiAgdGV4dGlucHV0LmFkZEV2ZW50TGlzdGVuZXI8Sz4obmFtZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xufTtcblxuLy8gcmUtcmVnaXN0ZXIgZXZlbnQgbGlzdGVuZXJzIHdoZW4gdGhlIGxheW91dCBjaGFuZ2VzXG5zY3JhcGJveC5vbihcImxheW91dDpjaGFuZ2VkXCIsICgpID0+IHtcbiAgY29uc3QgdGV4dGlucHV0ID0gdGV4dElucHV0KCk7XG4gIGlmICghdGV4dGlucHV0KSByZXR1cm47XG4gIGZvciAoY29uc3QgW25hbWUsIGFyZ01hcF0gb2YgbGlzdGVuZXJNYXApIHtcbiAgICBmb3IgKGNvbnN0IFtsaXN0ZW5lciwgZW5jb2RlZE9wdGlvbnNdIG9mIGFyZ01hcCkge1xuICAgICAgZm9yIChjb25zdCBlbmNvZGVkIG9mIGVuY29kZWRPcHRpb25zKSB7XG4gICAgICAgIHRleHRpbnB1dC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgbGlzdGVuZXIgYXMgRXZlbnRMaXN0ZW5lcixcbiAgICAgICAgICBkZWNvZGUoZW5jb2RlZCksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVRleHRJbnB1dEV2ZW50TGlzdGVuZXIgPSA8XG4gIEsgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudEV2ZW50TWFwLFxuPihcbiAgbmFtZTogSyxcbiAgbGlzdGVuZXI6IChldmVudDogSFRNTEVsZW1lbnRFdmVudE1hcFtLXSkgPT4gdW5rbm93bixcbiAgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyxcbik6IHZvaWQgPT4ge1xuICBjb25zdCBhcmdNYXAgPSBsaXN0ZW5lck1hcC5nZXQobmFtZSk7XG4gIGlmICghYXJnTWFwKSByZXR1cm47XG4gIGNvbnN0IGVuY29kZWRPcHRpb25zID0gYXJnTWFwLmdldChsaXN0ZW5lciBhcyBFdmVudExpc3RlbmVyKTtcbiAgaWYgKCFlbmNvZGVkT3B0aW9ucykgcmV0dXJuO1xuICBjb25zdCBlbmNvZGVkID0gZW5jb2RlKG9wdGlvbnMpO1xuICBlbmNvZGVkT3B0aW9ucy5kZWxldGUoZW5jb2RlZCk7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJvYmplY3RcIiAmJiBvcHRpb25zPy5vbmNlKSB7XG4gICAgY29uc3Qgb25jZU1hcCA9IG9uY2VMaXN0ZW5lck1hcC5nZXQobGlzdGVuZXIgYXMgRXZlbnRMaXN0ZW5lcik7XG4gICAgaWYgKCFvbmNlTWFwKSByZXR1cm47XG4gICAgY29uc3Qgb25jZUxpc3RlbmVyID0gb25jZU1hcC5nZXQoZW5jb2RlZCk7XG4gICAgaWYgKCFvbmNlTGlzdGVuZXIpIHJldHVybjtcblxuICAgIGNvbnN0IHRleHRpbnB1dCA9IHRleHRJbnB1dCgpO1xuICAgIGlmICghdGV4dGlucHV0KSByZXR1cm47XG4gICAgdGV4dGlucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgb25jZUxpc3RlbmVyLCBvcHRpb25zKTtcbiAgICBvbmNlTWFwLmRlbGV0ZShlbmNvZGVkKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgdGV4dGlucHV0ID0gdGV4dElucHV0KCk7XG4gIGlmICghdGV4dGlucHV0KSByZXR1cm47XG4gIHRleHRpbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbn07XG4iLCAiLyoqIOato+imj+ihqOePvuOCkmVzY2FwZeOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGVzY2FwZVJlZ0V4cCA9ICh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgdGV4dC5yZXBsYWNlKC9bLiorP149IToke30oKXxbXFxdXFwvXFxcXF0vZywgXCJcXFxcJCZcIik7XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJsaWJcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG4vKiogQGpzeCBoICovXG5pbXBvcnQgeyBoLCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHtcbiAgZW5jb2RlVGl0bGVVUkksXG4gIHB1c2hQYWdlVHJhbnNpdGlvbixcbiAgU2NyYXBib3gsXG59IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmltcG9ydCB7IFNlYXJjaFJlc3VsdCB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuaW1wb3J0IHsgZXNjYXBlUmVnRXhwIH0gZnJvbSBcIi4vZXNjYXBlUmVnRXhwLnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuZXhwb3J0IHR5cGUgUGFnZSA9IFNlYXJjaFJlc3VsdFtcInBhZ2VzXCJdWzBdO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhcmRQcm9wcyBleHRlbmRzIFBhZ2Uge1xuICBwcm9qZWN0OiBzdHJpbmc7XG4gIHF1ZXJ5OiBzdHJpbmc7XG4gIGNsb3NlOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgQ2FyZCA9IChcbiAgeyBwcm9qZWN0LCB0aXRsZSwgd29yZHMsIGxpbmVzLCBxdWVyeSwgY2xvc2UgfTogQ2FyZFByb3BzLFxuKSA9PiB7XG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IGguSlNYLlRhcmdldGVkTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHtcbiAgICAgIHB1c2hQYWdlVHJhbnNpdGlvbih7IHR5cGU6IFwic2VhcmNoXCIsIHF1ZXJ5LCB0bzogeyBwcm9qZWN0LCB0aXRsZSB9IH0pO1xuICAgICAgaWYgKGUubWV0YUtleSB8fCBlLmN0cmxLZXkgfHwgZS5hbHRLZXkgfHwgZS5zaGlmdEtleSkgcmV0dXJuO1xuICAgICAgY2xvc2UoKTtcbiAgICB9LFxuICAgIFtwcm9qZWN0LCB0aXRsZSwgcXVlcnksIGNsb3NlXSxcbiAgKTtcblxuICBjb25zdCBoaWdobGlnaHRlZExpbmVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChcbiAgICAgIGAoJHt3b3Jkcy5tYXAoKHdvcmQpID0+IGVzY2FwZVJlZ0V4cCh3b3JkKSkuam9pbihcInxcIil9KWAsXG4gICAgICBcImlcIixcbiAgICApO1xuICAgIHJldHVybiBsaW5lcy5mbGF0TWFwKChsaW5lKSA9PiB7XG4gICAgICBjb25zdCB3b3JkcyA9IGxpbmUuc3BsaXQocmVnRXhwKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgIHt3b3Jkcy5tYXAoKHdvcmQsIGkpID0+IGkgJSAyID09PSAwID8gd29yZCA6IDxzdHJvbmc+e3dvcmR9PC9zdHJvbmc+KX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgKTtcbiAgICB9KTtcbiAgfSwgW2xpbmVzLCB3b3Jkc10pO1xuXG4gIHJldHVybiAoXG4gICAgPGFcbiAgICAgIGhyZWY9e2AvJHtwcm9qZWN0fS8ke2VuY29kZVRpdGxlVVJJKHRpdGxlKX1gfVxuICAgICAgdGFyZ2V0PXtgJHtwcm9qZWN0ID09PSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUgPyBcIlwiIDogXCJfYmxhbmtcIn1gfVxuICAgICAgcmVsPXtgJHtcbiAgICAgICAgcHJvamVjdCA9PT0gc2NyYXBib3guUHJvamVjdC5uYW1lID8gXCJyb3V0ZVwiIDogXCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIH1gfVxuICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgPlxuICAgICAge3RpdGxlfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICB7aGlnaGxpZ2h0ZWRMaW5lc31cbiAgICAgIDwvZGl2PlxuICAgIDwvYT5cbiAgKTtcbn07XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlT3Blbk9wZXJhdG9ycyB7XG4gIG9wZW46ICgpID0+IHZvaWQ7XG4gIGNsb3NlOiAoKSA9PiB2b2lkO1xuICB0b2dnbGU6ICgpID0+IHZvaWQ7XG59XG5leHBvcnQgY29uc3QgdXNlT3BlbiA9IChcbiAgZmxhZzogYm9vbGVhbixcbik6IHJlYWRvbmx5IFtib29sZWFuLCBVc2VPcGVuT3BlcmF0b3JzXSA9PiB7XG4gIGNvbnN0IFtpc09wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoZmxhZyk7XG5cbiAgY29uc3Qgb3BlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHNldE9wZW4odHJ1ZSksIFtdKTtcbiAgY29uc3QgY2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiBzZXRPcGVuKGZhbHNlKSwgW10pO1xuICBjb25zdCB0b2dnbGUgPSB1c2VDYWxsYmFjaygoKSA9PiBzZXRPcGVuKChwcmV2KSA9PiAhcHJldiksIFtdKTtcblxuICByZXR1cm4gW2lzT3BlbiwgeyBvcGVuLCBjbG9zZSwgdG9nZ2xlIH1dIGFzIGNvbnN0O1xufTtcbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IHNlYXJjaEZvclBhZ2VzLCBTZWFyY2hSZXN1bHQgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBGb3VuZFBhZ2Uge1xuICB0aXRsZTogc3RyaW5nO1xuICB3b3Jkczogc3RyaW5nW107XG4gIGxpbmVzOiBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclNlYXJjaFJlc3VsdCB7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIHJlc3VsdD86IFNlYXJjaFJlc3VsdDtcbn1cblxuZXhwb3J0IGNvbnN0IHVzZVNlYXJjaCA9IChwcm9qZWN0OiBzdHJpbmcsIHF1ZXJ5OiBzdHJpbmcpOiBVc2VyU2VhcmNoUmVzdWx0ID0+IHtcbiAgY29uc3QgW3Jlc3VsdCwgc2V0SXRlbXNdID0gdXNlU3RhdGU8U2VhcmNoUmVzdWx0IHwgdW5kZWZpbmVkPigpO1xuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgZG9uZSA9IHVzZVJlZjxQcm9taXNlPHZvaWQ+PihQcm9taXNlLnJlc29sdmUoKSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHF1ZXJ5ID09PSBcIlwiKSB7XG4gICAgICBzZXRJdGVtcyh1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCB0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICBkb25lLmN1cnJlbnQgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgZG9uZS5jdXJyZW50O1xuICAgICAgaWYgKHRlcm1pbmF0ZSkgcmV0dXJuO1xuXG4gICAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2VhcmNoRm9yUGFnZXMocXVlcnksIHByb2plY3QpO1xuICAgICAgICBpZiAodGVybWluYXRlKSByZXR1cm47XG4gICAgICAgIHNldEl0ZW1zKHJlc3VsdC5vayA/IHJlc3VsdC52YWx1ZSA6IHVuZGVmaW5lZCk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KSgpO1xuXG4gICAgcmV0dXJuICgpID0+IHRlcm1pbmF0ZSA9IHRydWU7XG4gIH0sIFtxdWVyeSwgcHJvamVjdF0pO1xuXG4gIHJldHVybiB7IGxvYWRpbmcsIHJlc3VsdCB9O1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG4vKiogQGpzeCBoICovXG5cbmltcG9ydCB7IGggfSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcblxuZXhwb3J0IGNvbnN0IENTUyA9ICgpID0+IChcbiAgPHN0eWxlPlxuICAgIHtgLm1vZGFsIHtcbiAgcG9zaXRpb246Zml4ZWQ7XG4gIGluc2V0OjA7XG4gIHotaW5kZXg6MTA1MDtcbiAgXG4gIGJhY2tncm91bmQtY29sb3I6IzAwMGM7XG4gIFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICByb3ctZ2FwOiAxMHB4O1xuICBwYWRkaW5nOiAxMHB4O1xufVxuLmNsb3NlZCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubW9kYWwgPiAqIHtcbiAgY29sb3I6IHZhcigtLXBhZ2UtdGV4dC1jb2xvciwgIzRhNGE0YSk7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhZ2UtYmcsICNmZWZlZmUpO1xuICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1ib2R5LWJnLCAjZGNkZGUwKTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuXG4gIHBhZGRpbmc6IDVweDtcbiAgd2lkdGg6IGNhbGModmFyKC0taXRlbS13aWR0aCwgMTAwJSkgLSAxMHB4KTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAubW9kYWwge1xuICAgIHBhZGRpbmc6IDMwcHg7XG4gIH1cbn1cblxuLmNvbnRyb2xsZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDAuMmVtO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuaW5wdXQge1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIHBhZGRpbmc6IDAgMTBweDtcbiAgaGVpZ2h0OiAzMnB4O1xuICBib3JkZXI6IHRyYW5zcGFyZW50O1xuICBib3gtc2hhZG93OiBub25lO1xuICBjb2xvcjogdmFyKC0tc2VhcmNoLWZvcm0tdGV4dC1jb2xvciwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM1KSk7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlYXJjaC1mb3JtLWJnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKVxufVxuXG4ucmVzdWx0IHtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDVweCAwO1xuICBtYXJnaW46IDJweCAwIDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xNSk7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG5hIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDNweCAyMHB4O1xuICBjbGVhcjogYm90aDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuLmRlc2NyaXB0aW9uIHtcbiAgbWFyZ2luLXRvcDogMC41ZW07XG4gIGNvbG9yOiB2YXIoLS1pbmNyZW1lbnRhbC1mdWxsdGV4dC1zZWFyY2gtZGVzY3JpcHRpb24tdGV4dC1jb2xvciwgI2M0YzRjNCk7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gIG1heC1oZWlnaHQ6IDI4cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuLmRlc2NyaXB0aW9uIHN0cm9uZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjA7XG4gIGNvbG9yOiAjNjY2O1xufVxuXG4uc3Bpbm5lcjo6YmVmb3JlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICB0ZXh0LXJlbmRlcmluZzogYXV0bztcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbnRlbnQ6IFwiXFxmMTEwXCI7XG4gIGZvbnQtZmFtaWx5OiBcIkZvbnQgQXdlc29tZSA1IEZyZWVcIjtcbiAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBhbmltYXRpb246IGZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlO1xufWB9XG4gIDwvc3R5bGU+XG4pO1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwibGliXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuLyoqIEBqc3hGcmFnIEZyYWdtZW50ICovXG5pbXBvcnQge1xuICBGcmFnbWVudCxcbiAgaCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBDYXJkIH0gZnJvbSBcIi4vQ2FyZC50c3hcIjtcbmltcG9ydCB7IHVzZU9wZW4sIFVzZU9wZW5PcGVyYXRvcnMgfSBmcm9tIFwiLi91c2VPcGVuLnRzXCI7XG5pbXBvcnQgeyB1c2VTZWFyY2ggfSBmcm9tIFwiLi91c2VTZWFyY2gudHNcIjtcbmltcG9ydCB7IENTUyB9IGZyb20gXCIuL0NTUy50c3hcIjtcbmltcG9ydCB0eXBlIHsgU2NyYXBib3ggfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuY29uc3QgU3Bpbm5lciA9ICgpID0+IDxpIGNsYXNzTmFtZT1cInNwaW5uZXJcIiAvPjtcblxuZXhwb3J0IGludGVyZmFjZSBBcHBQcm9wcyB7XG4gIGV4cG9ydE9wczogKGluaXQ6IFVzZU9wZW5PcGVyYXRvcnMpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBBcHAgPSAoeyBleHBvcnRPcHMgfTogQXBwUHJvcHMpID0+IHtcbiAgY29uc3QgW3F1ZXJ5LCBzZXRRdWVyeV0gPSB1c2VTdGF0ZShcIlwiKTtcblxuICBjb25zdCBwcm9qZWN0ID0gc2NyYXBib3guUHJvamVjdC5uYW1lO1xuICAvLyDlhajmlofmpJzntKLjgZnjgotcbiAgY29uc3QgeyBsb2FkaW5nLCByZXN1bHQgfSA9IHVzZVNlYXJjaChwcm9qZWN0LCBxdWVyeSk7XG5cbiAgY29uc3QgaGFuZGxlSW5wdXQgPSB1c2VDYWxsYmFjayhcbiAgICAoZTogaC5KU1guVGFyZ2V0ZWRFdmVudDxIVE1MSW5wdXRFbGVtZW50LCBFdmVudD4pID0+IHtcbiAgICAgIHNldFF1ZXJ5KGUuY3VycmVudFRhcmdldC52YWx1ZSk7XG4gICAgfSxcbiAgICBbXSxcbiAgKTtcbiAgY29uc3QgW2lzT3BlbiwgeyBvcGVuLCBjbG9zZSwgdG9nZ2xlIH1dID0gdXNlT3BlbihmYWxzZSk7XG4gIGNvbnN0IGV4cG9ydFJlZiA9IHVzZVJlZjxVc2VPcGVuT3BlcmF0b3JzPih7IG9wZW4sIGNsb3NlLCB0b2dnbGUgfSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgT2JqZWN0LmFzc2lnbihleHBvcnRSZWYuY3VycmVudCwgeyBvcGVuLCBjbG9zZSwgdG9nZ2xlIH0pO1xuICB9LCBbXSk7XG4gIHVzZUVmZmVjdCgoKSA9PiBleHBvcnRPcHMoZXhwb3J0UmVmLmN1cnJlbnQpLCBbZXhwb3J0T3BzXSk7XG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IGguSlNYLlRhcmdldGVkTW91c2VFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmICghKGUudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSByZXR1cm47XG4gICAgICBpZiAoZS50YXJnZXQuaWQgIT09IFwiYmFja2dyb3VuZFwiKSByZXR1cm47XG4gICAgICBjbG9zZSgpO1xuICAgIH0sXG4gICAgW10sXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPENTUyAvPlxuICAgICAgPGRpdlxuICAgICAgICBpZD1cImJhY2tncm91bmRcIlxuICAgICAgICBjbGFzc05hbWU9e2Btb2RhbCR7IWlzT3BlbiA/IFwiIGNsb3NlZFwiIDogXCJcIn1gfVxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbG9zZX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250cm9sbGVyXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgdmFsdWU9e3F1ZXJ5fSBvbklucHV0PXtoYW5kbGVJbnB1dH0gLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImluZm9cIj5cbiAgICAgICAgICAgIHtsb2FkaW5nICYmIDxTcGlubmVyIC8+fVxuICAgICAgICAgICAge2Ake3Jlc3VsdD8ucGFnZXM/Lmxlbmd0aCA/PyAwfSBwYWdlc2B9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7cmVzdWx0Py5wYWdlcyAmJiByZXN1bHQucGFnZXMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIChcbiAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJyZXN1bHRcIj5cbiAgICAgICAgICAgICAge3Jlc3VsdC5wYWdlcy5tYXAoKGl0ZW0pID0+IChcbiAgICAgICAgICAgICAgICA8bGkga2V5PXtpdGVtLnRpdGxlfT5cbiAgICAgICAgICAgICAgICAgIDxDYXJkXG4gICAgICAgICAgICAgICAgICAgIHsuLi5pdGVtfVxuICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICBxdWVyeT17cXVlcnl9XG4gICAgICAgICAgICAgICAgICAgIGNsb3NlPXtjbG9zZX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJsaWJcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG4vKiogQGpzeCBoICovXG5pbXBvcnQgeyBoLCByZW5kZXIgfSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuL0FwcC50c3hcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPcGVyYXRvcnMge1xuICAvKiogZm9ybeOCkumWi+OBjyAqL1xuICBvcGVuOiAoKSA9PiB2b2lkO1xuXG4gIC8qKiBmb3Jt44KS6ZaJ44GY44KLICovXG4gIGNsb3NlOiAoKSA9PiB2b2lkO1xuXG4gIC8qKiDplovplonliIfjgormm7/jgYggKi9cbiAgdG9nZ2xlOiAoKSA9PiB2b2lkO1xufVxuXG4vKiogc2VhcmNoIGZvcm3jgpLotbfli5XjgZnjgotcbiAqXG4gKiBAcmV0dXJuIGZvcm3jga7plovplonmk43kvZzplqLmlbBcbiAqL1xuZXhwb3J0IGNvbnN0IHNldHVwID0gKCk6IFByb21pc2U8T3BlcmF0b3JzPiA9PiB7XG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGNvbnN0IHNoYWRvd1Jvb3QgPSBhcHAuYXR0YWNoU2hhZG93KHsgbW9kZTogXCJvcGVuXCIgfSk7XG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kKGFwcCk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlPE9wZXJhdG9ycz4oKHJlc29sdmUpID0+IHtcbiAgICByZW5kZXIoPEFwcCBleHBvcnRPcHM9e3Jlc29sdmV9IC8+LCBzaGFkb3dSb290KTtcbiAgfSk7XG59O1xuIiwgImNvbnN0IGhhcyA9IDxUIGV4dGVuZHMgb2JqZWN0LCBLIGV4dGVuZHMga2V5b2YgVD4oXG4gIG9iajogVCxcbiAga2V5OiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsXG4pOiBrZXkgaXMgSyA9PiBPYmplY3QuaGFzT3duKG9iaiwga2V5KTtcblxuY29uc3QgYWxpYXNlcyA9IHtcbiAgXCJsZWZ0XCI6IFwiQXJyb3dMZWZ0XCIsXG4gIFwicmlnaHRcIjogXCJBcnJvd1JpZ2h0XCIsXG4gIFwidXBcIjogXCJBcnJvd1VwXCIsXG4gIFwiZG93blwiOiBcIkFycm93RG93blwiLFxuICBcImJzXCI6IFwiQmFja3NwYWNlXCIsXG4gIFwibWVudVwiOiBcIkNvbnRleHRNZW51XCIsXG4gIFwiYXBwc1wiOiBcIkNvbnRleHRNZW51XCIsXG4gIFwiZGVsXCI6IFwiRGVsZXRlXCIsXG4gIFwicmV0dXJuXCI6IFwiRW50ZXJcIixcbiAgXCJjclwiOiBcIkVudGVyXCIsXG4gIFwiZXNjXCI6IFwiRXNjYXBlXCIsXG4gIFwicGd1cFwiOiBcIlBhZ2VVcFwiLFxuICBcInBnZG5cIjogXCJQYWdlRG93blwiLFxuICBcImx0XCI6IFwiPFwiLFxuICBcImxlc3NcIjogXCI8XCIsXG4gIFwibGVzc2VyXCI6IFwiPFwiLFxuICBcImd0XCI6IFwiPlwiLFxuICBcImdyZWF0ZXJcIjogXCI+XCIsXG59O1xuXG5jb25zdCBhbGlhcyA9IChrZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBrZXlMb3dlciA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gaGFzKGFsaWFzZXMsIGtleUxvd2VyKSA/IGFsaWFzZXNba2V5TG93ZXJdIDoga2V5O1xufTtcblxuY29uc3QgZW5Vc1RyYW5zbGF0aW9ucyA9IHtcbiAgXCJCYWNrcXVvdGVcIjogW1wiYFwiLCBcIn5cIl0sXG4gIFwiRGlnaXQxXCI6IFtcIjFcIiwgXCIhXCJdLFxuICBcIkRpZ2l0MlwiOiBbXCIyXCIsIFwiQFwiXSxcbiAgXCJEaWdpdDNcIjogW1wiM1wiLCBcIiNcIl0sXG4gIFwiRGlnaXQ0XCI6IFtcIjRcIiwgXCIkXCJdLFxuICBcIkRpZ2l0NVwiOiBbXCI1XCIsIFwiJVwiXSxcbiAgXCJEaWdpdDZcIjogW1wiNlwiLCBcIl5cIl0sXG4gIFwiRGlnaXQ3XCI6IFtcIjdcIiwgXCImXCJdLFxuICBcIkRpZ2l0OFwiOiBbXCI4XCIsIFwiKlwiXSxcbiAgXCJEaWdpdDlcIjogW1wiOVwiLCBcIihcIl0sXG4gIFwiRGlnaXQwXCI6IFtcIjBcIiwgXCIpXCJdLFxuICBcIk1pbnVzXCI6IFtcIi1cIiwgXCJfXCJdLFxuICBcIkVxdWFsXCI6IFtcIj1cIiwgXCIrXCJdLFxuICBcIkJhY2tzbGFzaFwiOiBbXCJcXFxcXCIsIFwifFwiXSxcbiAgXCJCcmFja2V0TGVmdFwiOiBbXCJbXCIsIFwie1wiXSxcbiAgXCJCcmFja2V0UmlnaHRcIjogW1wiXVwiLCBcIn1cIl0sXG4gIFwiU2VtaWNvbG9uXCI6IFtcIjtcIiwgXCI6XCJdLFxuICBcIlF1b3RlXCI6IFtcIidcIiwgJ1wiJ10sXG4gIFwiQ29tbWFcIjogW1wiLFwiLCBcIjxcIl0sXG4gIFwiUGVyaW9kXCI6IFtcIi5cIiwgXCI+XCJdLFxuICBcIlNsYXNoXCI6IFtcIi9cIiwgXCI/XCJdLFxufTtcblxuY29uc3QgY29kZVRvRW5Vc1F3ZXJ0eSA9IChjb2RlOiBzdHJpbmcsIHNoaWZ0PzogYm9vbGVhbikgPT4ge1xuICBpZiAoY29kZS5zdGFydHNXaXRoKFwiS2V5XCIpKSB7XG4gICAgbGV0IGtleSA9IGNvZGUuc2xpY2UoMyk7XG4gICAgaWYgKCFzaGlmdCkga2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuXG4gIHJldHVybiBoYXMoZW5Vc1RyYW5zbGF0aW9ucywgY29kZSlcbiAgICA/IGVuVXNUcmFuc2xhdGlvbnNbY29kZV1bc2hpZnQgPyAxIDogMF1cbiAgICA6IGNvZGU7XG59O1xuXG4vKiogUmVwcmVzZW50cyBhbiBlcnJvciB0aGF0IG9jY3VycyB3aGVuIGFuIGludmFsaWQga2V5IGlzIGVuY291bnRlcmVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZhbGlkS2V5RXJyb3Ige1xuICBuYW1lOiBcIkludmFsaWRLZXlFcnJvclwiO1xuICBrZXk6IHN0cmluZztcbiAgbWVzc2FnZTogYEludmFsaWQga2V5OiAke3N0cmluZ31gO1xufVxuLyoqIFJlcHJlc2VudHMgYW4gZXJyb3IgdGhhdCBvY2N1cnMgd2hlbiBhbiB1bmtub3duIG1vZGlmaWVyIGlzIGVuY291bnRlcmVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmtub3duTW9kaWZpZXJFcnJvciB7XG4gIG5hbWU6IFwiVW5rbm93bk1vZGlmaWVyRXJyb3JcIjtcbiAgbW9kaWZpZXI6IHN0cmluZztcbiAgY29udGV4dDogc3RyaW5nO1xuICBtZXNzYWdlOiBgJHtzdHJpbmd9OiBVbmtub3duIG1vZGlmaWVyOiAke3N0cmluZ31gO1xufVxuLyoqIFJlcHJlc2VudHMgYW4gZXJyb3IgdGhhdCBvY2N1cnMgd2hlbiBhIGR1cGxpY2F0ZSBtb2RpZmllciBpcyBlbmNvdW50ZXJlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRHVwbGljYXRlTW9kaWZpZXJFcnJvciB7XG4gIG5hbWU6IFwiRHVwbGljYXRlTW9kaWZpZXJFcnJvclwiO1xuICBtb2RpZmllcjogc3RyaW5nO1xuICBjb250ZXh0OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IGAke3N0cmluZ306IER1cGxpY2F0ZSBtb2RpZmllcjogJHtzdHJpbmd9YDtcbn1cbi8qKiBSZXByZXNlbnRzIGFuIGVycm9yIHRoYXQgb2NjdXJzIHdoZW4gYSBkaXNhbGxvd2VkIG1vZGlmaWVyIGlzIHVzZWQgd2l0aCBzaW5nbGUtY2hhcmFjdGVyIGtleXMuICovXG5leHBvcnQgaW50ZXJmYWNlIERpc2FsbG93ZWRNb2RpZmllckVycm9yIHtcbiAgbmFtZTogXCJEaXNhbGxvd2VkTW9kaWZpZXJFcnJvclwiO1xuICBtb2RpZmllcjogc3RyaW5nO1xuICBjb250ZXh0OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IGAke3N0cmluZ306IFVudXNhYmxlIG1vZGlmaWVyIHdpdGggc2luZ2xlLWNoYXJhY3RlciBrZXlzOiAke3N0cmluZ31gO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBrZXkgd2l0aCBvcHRpb25hbCBtb2RpZmllcnMuXG4gKlxuICogVGhpcyBpcyBhIHN1cGVyc2V0IG9mIHRoZSBXZWIgQVBJJ3MgW2BLZXlib2FyZEV2ZW50YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQVBJL0tleWJvYXJkRXZlbnQpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleSB7XG4gIC8qKiB0aGUgc2FtZSBhcyBbYEtleWJvYXJkRXZlbnQua2V5YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQVBJL0tleWJvYXJkRXZlbnQva2V5KSAqL1xuICBrZXk6IHN0cmluZztcblxuICAvKiogIHRoZSBzYW1lIGFzIFtgS2V5Ym9hcmRFdmVudC5jb2RlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQVBJL0tleWJvYXJkRXZlbnQvY29kZSkgKi9cbiAgY29kZT86IHN0cmluZztcblxuICAvKiogIHRoZSBzYW1lIGFzIFtgS2V5Ym9hcmRFdmVudC5zaGlmdEtleWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L3NoaWZ0S2V5KSAqL1xuICBzaGlmdEtleT86IGJvb2xlYW47XG5cbiAgLyoqICB0aGUgc2FtZSBhcyBbYEtleWJvYXJkRXZlbnQuY3RybEtleWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L2N0cmxLZXkpICovXG4gIGN0cmxLZXk/OiBib29sZWFuO1xuXG4gIC8qKiAgdGhlIHNhbWUgYXMgW2BLZXlib2FyZEV2ZW50LmFsdEtleWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L2FsdEtleSkgKi9cbiAgYWx0S2V5PzogYm9vbGVhbjtcblxuICAvKiogIHRoZSBzYW1lIGFzIFtgS2V5Ym9hcmRFdmVudC5tZXRhS2V5YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQVBJL0tleWJvYXJkRXZlbnQvbWV0YUtleSkgKi9cbiAgbWV0YUtleT86IGJvb2xlYW47XG59XG5cbmNvbnN0IHNwZWNpYWxDYXNlcyA9IHtcbiAgXCI8XCI6IFwibHRcIixcbiAgXCI+XCI6IFwiZ3RcIixcbn07XG5cbmNvbnN0IGlnbm9yZWQgPVxuICAvXigkfFVuaWRlbnRpZmllZCR8UHJvY2VzcyR8RGVhZCR8QWx0fENvbnRyb2x8SHlwZXJ8TWV0YXxTaGlmdHxTdXBlcnxPUykvO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgS2V5IGV2ZW50IGludG8gYSBzdHJpbmcgcmVwcmVzZW50YXRpb24uXG4gKlxuICogQHBhcmFtIGV2ZW50IC0gVGhlIEtleSBldmVudCB0byBzdHJpbmdpZnkuXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBLZXkgZXZlbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBzdHJpbmdpZnkgPSAoXG4gIGV2ZW50OiBLZXksXG4pOiBzdHJpbmcgPT4ge1xuICBsZXQgc2hpZnQgPSBldmVudC5zaGlmdEtleTtcbiAgbGV0IGtleSA9IGV2ZW50LmtleSB8fCBcIlVuaWRlbnRpZmllZFwiO1xuICBpZiAoa2V5ID09PSBcIlVuaWRlbnRpZmllZFwiKSB7XG4gICAga2V5ID0gY29kZVRvRW5Vc1F3ZXJ0eShldmVudC5jb2RlIHx8IFwiXCIsIHNoaWZ0KTtcbiAgfSBlbHNlIHtcbiAgICBrZXkgPSBhbGlhcyhrZXkpO1xuICAgIGlmIChrZXkgPT09IFwiIFwiKSBrZXkgPSBcIlNwYWNlXCI7XG4gIH1cblxuICBpZiAoaWdub3JlZC50ZXN0KGtleSkpIHJldHVybiBcIlwiO1xuXG4gIGlmIChrZXkubGVuZ3RoID09PSAxKSB7XG4gICAgc2hpZnQgPSBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBrZXkgPSBrZXkudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIGxldCBtb2RpZmllcnMgPSBcIlwiO1xuICBpZiAoZXZlbnQuYWx0S2V5KSBtb2RpZmllcnMgKz0gXCJhLVwiO1xuICBpZiAoZXZlbnQuY3RybEtleSkgbW9kaWZpZXJzICs9IFwiYy1cIjtcbiAgaWYgKGV2ZW50Lm1ldGFLZXkpIG1vZGlmaWVycyArPSBcIm0tXCI7XG4gIGlmIChzaGlmdCkgbW9kaWZpZXJzICs9IFwicy1cIjtcblxuICBpZiAoaGFzKHNwZWNpYWxDYXNlcywga2V5KSkga2V5ID0gc3BlY2lhbENhc2VzW2tleV07XG5cbiAgcmV0dXJuIG1vZGlmaWVycyB8fCBrZXkubGVuZ3RoID4gMSA/IGA8JHttb2RpZmllcnN9JHtrZXl9PmAgOiBrZXk7XG59O1xuXG4vKiogUmVwcmVzZW50cyBhIHJlc3VsdCB0aGF0IGNhbiBlaXRoZXIgYmUgc3VjY2Vzc2Z1bCAoYG9rYCBpcyBgdHJ1ZWApIHdpdGggYSB2YWx1ZSBvZiB0eXBlIGBUYCxcbiAqIG9yIGEgZmFpbHVyZSAoYG9rYCBpcyBgZmFsc2VgKSB3aXRoIGEgdmFsdWUgb2YgdHlwZSBgRWAuXG4gKi9cbmV4cG9ydCB0eXBlIFJlc3VsdDxULCBFPiA9IHsgb2s6IHRydWU7IHZhbHVlOiBUIH0gfCB7IG9rOiBmYWxzZTsgdmFsdWU6IEUgfTtcblxuY29uc3QgbW9kaWZpZXJNYXAgPSB7XG4gIFwiYVwiOiBcImFsdEtleVwiLFxuICBcImNcIjogXCJjdHJsS2V5XCIsXG4gIFwibVwiOiBcIm1ldGFLZXlcIixcbiAgXCJzXCI6IFwic2hpZnRLZXlcIixcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogUGFyc2VzIGEga2V5IHN0cmluZyBhbmQgcmV0dXJucyBhIFJlc3VsdCBvYmplY3QgY29udGFpbmluZyB0aGUgcGFyc2VkIGtleSBvciBhbiBlcnJvci5cbiAqXG4gKiBAcGFyYW0ga2V5U3RyaW5nIC0gVGhlIGtleSBzdHJpbmcgdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBBIFJlc3VsdCBvYmplY3QgY29udGFpbmluZyB0aGUgcGFyc2VkIGtleSBvciBhbiBlcnJvci5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlID0gKFxuICBrZXlTdHJpbmc6IHN0cmluZyxcbik6IFJlc3VsdDxcbiAgS2V5LFxuICB8IEludmFsaWRLZXlFcnJvclxuICB8IFVua25vd25Nb2RpZmllckVycm9yXG4gIHwgRHVwbGljYXRlTW9kaWZpZXJFcnJvclxuICB8IERpc2FsbG93ZWRNb2RpZmllckVycm9yXG4+ID0+IHtcbiAgaWYgKGtleVN0cmluZy5sZW5ndGggPT09IDEpIHtcbiAgICBpZiAoL1xccy8udGVzdChrZXlTdHJpbmcpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvazogZmFsc2UsXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgbmFtZTogXCJJbnZhbGlkS2V5RXJyb3JcIixcbiAgICAgICAgICBrZXk6IGtleVN0cmluZyxcbiAgICAgICAgICBtZXNzYWdlOiBgSW52YWxpZCBrZXk6ICR7a2V5U3RyaW5nfWAsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHsga2V5OiBrZXlTdHJpbmcgfSB9O1xuICB9XG5cbiAgY29uc3QgbWF0Y2ggPSBrZXlTdHJpbmcubWF0Y2goL148KCg/OlthLXpdLSkqKShbYS16XFxkXSt8W148Plxcc10pPiQvaSk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb2s6IGZhbHNlLFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgbmFtZTogXCJJbnZhbGlkS2V5RXJyb3JcIixcbiAgICAgICAga2V5OiBrZXlTdHJpbmcsXG4gICAgICAgIG1lc3NhZ2U6IGBJbnZhbGlkIGtleTogJHtrZXlTdHJpbmd9YCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICBjb25zdCBbLCBtb2RpZmllcnMsIGtleV0gPSBtYXRjaDtcblxuICBjb25zdCBvYmo6IEtleSA9IHtcbiAgICBrZXk6IGFsaWFzKGtleSksXG4gIH07XG5cbiAgZm9yIChjb25zdCBtb2RpZmllciBvZiBtb2RpZmllcnMuc3BsaXQoXCItXCIpLnNsaWNlKDAsIC0xKSkge1xuICAgIGNvbnN0IG1vZGlmaWVyTG93ZXIgPSBtb2RpZmllci50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICghaGFzKG1vZGlmaWVyTWFwLCBtb2RpZmllckxvd2VyKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIG5hbWU6IFwiVW5rbm93bk1vZGlmaWVyRXJyb3JcIixcbiAgICAgICAgICBtb2RpZmllcixcbiAgICAgICAgICBjb250ZXh0OiBrZXlTdHJpbmcsXG4gICAgICAgICAgbWVzc2FnZTogYCR7a2V5U3RyaW5nfTogVW5rbm93biBtb2RpZmllcjogJHttb2RpZmllcn1gLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgbW9kaWZpZXJOYW1lID0gbW9kaWZpZXJNYXBbbW9kaWZpZXJMb3dlcl07XG5cbiAgICBpZiAob2JqW21vZGlmaWVyTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIG5hbWU6IFwiRHVwbGljYXRlTW9kaWZpZXJFcnJvclwiLFxuICAgICAgICAgIG1vZGlmaWVyLFxuICAgICAgICAgIGNvbnRleHQ6IGtleVN0cmluZyxcbiAgICAgICAgICBtZXNzYWdlOiBgJHtrZXlTdHJpbmd9OiBEdXBsaWNhdGUgbW9kaWZpZXI6ICR7bW9kaWZpZXJ9YCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgb2JqW21vZGlmaWVyTmFtZV0gPSB0cnVlO1xuXG4gICAgaWYgKG9iai5rZXkubGVuZ3RoID09PSAxICYmIG9iai5zaGlmdEtleSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIG5hbWU6IFwiRGlzYWxsb3dlZE1vZGlmaWVyRXJyb3JcIixcbiAgICAgICAgICBtb2RpZmllcixcbiAgICAgICAgICBjb250ZXh0OiBrZXlTdHJpbmcsXG4gICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgIGAke2tleVN0cmluZ306IFVudXNhYmxlIG1vZGlmaWVyIHdpdGggc2luZ2xlLWNoYXJhY3RlciBrZXlzOiAke21vZGlmaWVyfWAsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogb2JqIH07XG59O1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBrZXkgc3RyaW5nIGJ5IHBhcnNpbmcgYW5kIHN0cmluZ2lmeWluZyBpdC5cbiAqXG4gKiBAcGFyYW0ga2V5U3RyaW5nIC0gVGhlIGtleSBzdHJpbmcgdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgQSBSZXN1bHQgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG5vcm1hbGl6ZWQga2V5IHN0cmluZyBvciBhbiBlcnJvci5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZSA9IChrZXlTdHJpbmc6IHN0cmluZyk6IFJlc3VsdDxcbiAgc3RyaW5nLFxuICB8IEludmFsaWRLZXlFcnJvclxuICB8IFVua25vd25Nb2RpZmllckVycm9yXG4gIHwgRHVwbGljYXRlTW9kaWZpZXJFcnJvclxuICB8IERpc2FsbG93ZWRNb2RpZmllckVycm9yXG4+ID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gcGFyc2Uoa2V5U3RyaW5nKTtcbiAgcmV0dXJuIHJlc3VsdC5vayA/IHsgb2s6IHRydWUsIHZhbHVlOiBzdHJpbmdpZnkocmVzdWx0LnZhbHVlKSB9IDogcmVzdWx0O1xufTtcblxuLyoqXG4gKiBQYXJzZXMgYSBrZXkgc2VxdWVuY2UgYW5kIHJldHVybnMgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqXG4gKiBAcGFyYW0gc2VxdWVuY2UgVGhlIGtleSBzZXF1ZW5jZSB0byBwYXJzZS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSBwYXJzZWQga2V5IHNlcXVlbmNlLlxuICovXG5leHBvcnQgY29uc3QgcGFyc2VTZXF1ZW5jZSA9IChrZXlTZXF1ZW5jZTogc3RyaW5nKTogc3RyaW5nW10gfCBudWxsID0+XG4gIGtleVNlcXVlbmNlLm1hdGNoKC88W148Plxcc10rPnxbXFxzXFxTXXxeJC9nKTtcbiIsICJsZXQgZGVidWdNb2RlOiBib29sZWFuIHwgU2V0PHN0cmluZz4gPSBmYWxzZTtcblxuLyoqIGNhY2hl5ZGo44KK44GuZGVidWflh7rlipvjga7mnInlirnjg7vnhKHlirnjga7liIfjgormm7/jgYjjgpLooYzjgYZcbiAqXG4gKiBAcGFyYW0gbW9kZSBgdHJ1ZWDvvJrlhajjgabjga5kZWJ1Z+WHuuWKm+OCkuacieWKueOBq+OBmeOCiywgYGZhbHNlYO+8muWFqOOBpuOBrmRlYnVn5Ye65Yqb44KS54Sh5Yq544Gr44GZ44KLLCDjgZ3jgozku6XlpJbvvJrmjIflrprjgZfjgZ/jg5XjgqHjgqTjg6vkuK3jga5kZWJ1Z+WHuuWKm+OBruOBv+acieWKueOBq+OBmeOCi1xuICovXG5leHBvcnQgY29uc3Qgc2V0RGVidWdNb2RlID0gKG1vZGU6IGJvb2xlYW4gfCBJdGVyYWJsZTxzdHJpbmc+KTogdm9pZCA9PiB7XG4gIGRlYnVnTW9kZSA9IHR5cGVvZiBtb2RlID09PSBcImJvb2xlYW5cIiA/IG1vZGUgOiBuZXcgU2V0KG1vZGUpO1xufTtcblxuLyoqIGRlYnVnIG1vZGXjga7jgajjgY3jgaDjgZHmnInlirnjgapjb25zb2xl44KS44OV44Kh44Kk44Or44GU44Go44Gr5L2c44KLXG4gKlxuICogQHBhcmFtIGZpbGVuYW1lIOOCs+ODs+OCveODvOODq+WHuuWKm+OCkuWRvOOBs+WHuuOBl+OBn+ODleOCoeOCpOODq+WQjVxuICogQHJldHVybiBjb25zb2xlXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVEZWJ1ZyA9IChmaWxlbmFtZTogc3RyaW5nKTogQ29uc29sZSA9PlxuICBPYmplY3QuZnJvbUVudHJpZXMoWy4uLk9iamVjdC5lbnRyaWVzKGNvbnNvbGUpXS5tYXAoXG4gICAgKFtrZXksIHZhbHVlXTogW3N0cmluZywgdW5rbm93bl0pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFtrZXksIHZhbHVlXTtcbiAgICAgIHN3aXRjaCAoa2V5IGFzIGtleW9mIENvbnNvbGUpIHtcbiAgICAgICAgY2FzZSBcIndhcm5cIjpcbiAgICAgICAgY2FzZSBcImVycm9yXCI6XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICguLi5hcmdzOiB1bmtub3duW10pID0+XG4gICAgICAgICAgICAgIHZhbHVlKGAlYyR7ZmlsZW5hbWV9YCwgXCJjb2xvcjogZ3JheVwiLCAuLi5hcmdzKSxcbiAgICAgICAgICBdO1xuICAgICAgICBjYXNlIFwibG9nXCI6XG4gICAgICAgIGNhc2UgXCJpbmZvXCI6XG4gICAgICAgIGNhc2UgXCJkZWJ1Z1wiOlxuICAgICAgICAgIHJldHVybiBba2V5LCAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGRlYnVnTW9kZSAhPT0gdHJ1ZSAmJiAoIWRlYnVnTW9kZSB8fCAhZGVidWdNb2RlLmhhcyhmaWxlbmFtZSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWUoYCVjJHtmaWxlbmFtZX1gLCBcImNvbG9yOiBncmF5XCIsIC4uLmFyZ3MpO1xuICAgICAgICAgIH1dO1xuICAgICAgICBjYXNlIFwiYXNzZXJ0XCI6XG4gICAgICAgICAgcmV0dXJuIFtrZXksIChhc3NlcnRpb246IGJvb2xlYW4sIC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBkZWJ1Z01vZGUgIT09IHRydWUgJiYgKCFkZWJ1Z01vZGUgfHwgIWRlYnVnTW9kZS5oYXMoZmlsZW5hbWUpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbHVlKGFzc2VydGlvbiwgYCVjJHtmaWxlbmFtZX1gLCBcImNvbG9yOiBncmF5XCIsIC4uLmFyZ3MpO1xuICAgICAgICAgIH1dO1xuICAgICAgICBjYXNlIFwidGltZVwiOlxuICAgICAgICBjYXNlIFwidGltZUVuZFwiOlxuICAgICAgICAgIHJldHVybiBba2V5LCAobGFiZWw6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBkZWJ1Z01vZGUgIT09IHRydWUgJiYgKCFkZWJ1Z01vZGUgfHwgIWRlYnVnTW9kZS5oYXMoZmlsZW5hbWUpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbHVlKGAke2ZpbGVuYW1lfSAke2xhYmVsfWApO1xuICAgICAgICAgIH1dO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBba2V5LCAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGRlYnVnTW9kZSAhPT0gdHJ1ZSAmJiAoIWRlYnVnTW9kZSB8fCAhZGVidWdNb2RlLmhhcyhmaWxlbmFtZSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlKC4uLmFyZ3MpO1xuICAgICAgICAgIH1dO1xuICAgICAgfVxuICAgIH0sXG4gICkpIGFzIHVua25vd24gYXMgQ29uc29sZTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbmltcG9ydCB7XG4gIERpc2FsbG93ZWRNb2RpZmllckVycm9yLFxuICBEdXBsaWNhdGVNb2RpZmllckVycm9yLFxuICBJbnZhbGlkS2V5RXJyb3IsXG4gIG5vcm1hbGl6ZSxcbiAgcGFyc2VTZXF1ZW5jZSxcbiAgUmVzdWx0LFxuICBzdHJpbmdpZnksXG4gIFVua25vd25Nb2RpZmllckVycm9yLFxufSBmcm9tIFwiLi9kZXBzL3ZpbS1saWtlLWtleS1ub3RhdGlvbi50c1wiO1xuaW1wb3J0IHsgY3JlYXRlRGVidWcgfSBmcm9tIFwiLi9kZXBzL2RlYnVnLWpzLnRzXCI7XG5leHBvcnQgeyBzZXREZWJ1Z01vZGUgfSBmcm9tIFwiLi9kZXBzL2RlYnVnLWpzLnRzXCI7XG5leHBvcnQgdHlwZSB7IFJlc3VsdCB9O1xuZXhwb3J0IHR5cGUge1xuICBEaXNhbGxvd2VkTW9kaWZpZXJFcnJvcixcbiAgRHVwbGljYXRlTW9kaWZpZXJFcnJvcixcbiAgSW52YWxpZEtleUVycm9yLFxuICBVbmtub3duTW9kaWZpZXJFcnJvcixcbn07XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZURlYnVnKFwiU2NyYXBCaW5kaW5nczptb2QudHNcIik7XG5cbmV4cG9ydCB0eXBlIENvbW1hbmQgPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIEtleUJpbmRpbmdzID0gUmVjb3JkPHN0cmluZywgQ29tbWFuZD4gfCBNYXA8c3RyaW5nLCBDb21tYW5kPjtcbmV4cG9ydCBpbnRlcmZhY2UgSW52YWxpZFNlcXVlbmNlRXJyb3Ige1xuICBuYW1lOiBcIkludmFsaWRTZXF1ZW5jZUVycm9yXCI7XG4gIG1lc3NhZ2U6IFwiY2Fubm90IHBhcnNlIHRoZSBzZXF1ZW5jZVwiO1xufVxuZXhwb3J0IHR5cGUgQmluZGluZ0Vycm9yID1cbiAgfCBJbnZhbGlkU2VxdWVuY2VFcnJvclxuICB8IEludmFsaWRLZXlFcnJvclxuICB8IERpc2FsbG93ZWRNb2RpZmllckVycm9yXG4gIHwgRHVwbGljYXRlTW9kaWZpZXJFcnJvclxuICB8IFVua25vd25Nb2RpZmllckVycm9yO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3Ige0BsaW5rIE1vdXNldHJhcH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW91c2V0cmFwT3B0aW9ucyB7XG4gIC8qKiBBIGNhbGxiYWNrIGNhbGxlZCB3aGVuZXZlciB0aGUgc2VxdWVuY2UgaXMgdXBkYXRlZC4gKi9cbiAgb25TZXF1ZW5jZVVwZGF0ZT86IChzZXF1ZW5jZTogc3RyaW5nKSA9PiB2b2lkO1xuICAvKiogVGhlIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyB0byBmbHVzaCB0aGUgc2VxdWVuY2UuICovXG4gIGZsdXNoSW50ZXJ2YWw/OiBudW1iZXI7XG59XG5cbi8qKiBBIGtleSBiaW5kaW5nIG1hbmFnZXIgdGhhdCBiaW5kcyBrZXkgc2VxdWVuY2VzIHRvIGNvbW1hbmRzLlxuICpcbiAqIFRoZSBrZXkgc2VxdWVuY2VzIGFyZSBpbiB0aGUgVmltLWxpa2Uga2V5IG5vdGF0aW9uIGZvcm1hdC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IGJpbmRpbmdzID0gbmV3IE1vdXNldHJhcCh3aW5kb3csIHtcbiAqICBvblNlcXVlbmNlVXBkYXRlOiAoc2VxdWVuY2UpID0+IGNvbnNvbGUubG9nKHNlcXVlbmNlKSxcbiAqIGZsdXNoSW50ZXJ2YWw6IDEwMDAsXG4gKiB9KTtcbiAqIGJpbmRpbmdzLmJpbmQoXCJnZ1wiLCAoKSA9PiBjb25zb2xlLmxvZyhcImdvIHRvIHRoZSB0b3BcIikpO1xuICogYmluZGluZ3MuYmluZChcIkdcIiwgKCkgPT4gY29uc29sZS5sb2coXCJnbyB0byB0aGUgYm90dG9tXCIpKTtcbiAqIGJpbmRpbmdzLmJpbmQoXCJkXCIsIChlKSA9PiB7XG4gKiAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICogY29uc29sZS5sb2coXCJkZWxldGVcIik7XG4gKiB9KTtcbiAqIGJpbmRpbmdzLmJpbmQoXCJkZFwiLCAoKSA9PiBjb25zb2xlLmxvZyhcImRlbGV0ZSB0aGUgbGluZVwiKSk7XG4gKiBiaW5kaW5ncy5iaW5kKFwieXlcIiwgKCkgPT4gY29uc29sZS5sb2coXCJjb3B5IHRoZSBsaW5lXCIpKTtcbiAqIGJpbmRpbmdzLmJpbmQoXCJwXCIsICgpID0+IGNvbnNvbGUubG9nKFwicGFzdGVcIikpO1xuICogYmluZGluZ3MuYmluZChcInVcIiwgKCkgPT4gY29uc29sZS5sb2coXCJ1bmRvXCIpKTtcbiAqIGJpbmRpbmdzLmJpbmQoXCI8Qy1yPlwiLCAoKSA9PiBjb25zb2xlLmxvZyhcInJlZG9cIikpO1xuICogIGBgYFxuICovXG4vKipcbiAqIFJlcHJlc2VudHMgYSBNb3VzZXRyYXAgb2JqZWN0IHRoYXQgYmluZHMga2V5IHNlcXVlbmNlcyB0byBjb21tYW5kcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1vdXNldHJhcCB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IE1vdXNldHJhcCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IGVsZW1lbnQgdG8gYmluZCB0aGUga2V5IHNlcXVlbmNlcyB0by5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSBNb3VzZXRyYXAgaW5zdGFuY2UuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRhcmdldDogT21pdDxFdmVudFRhcmdldCwgXCJkaXNwYXRjaEV2ZW50XCI+LFxuICAgIG9wdGlvbnM/OiBNb3VzZXRyYXBPcHRpb25zLFxuICApIHtcbiAgICB0aGlzLm9uU2VxdWVuY2VVcGRhdGUgPSBvcHRpb25zPy5vblNlcXVlbmNlVXBkYXRlO1xuICAgIHRoaXMuZmx1c2hJbnRlcnZhbCA9IG9wdGlvbnM/LmZsdXNoSW50ZXJ2YWwgPz8gMTAwMDtcbiAgfVxuXG4gIC8qKiBCaW5kcyBhIHNldCBvZiBrZXkgYmluZGluZ3MgdG8gY29tbWFuZHMuXG4gICAqXG4gICAqIFRoZSBrZXkgc2VxdWVuY2VzIGFyZSBpbiB0aGUgVmltLWxpa2Uga2V5IG5vdGF0aW9uIGZvcm1hdC5cbiAgICpcbiAgICogQHBhcmFtIGtleUJpbmRpbmdzIEEgbWFwIG9mIGtleSBiaW5kaW5ncyB0byBjb21tYW5kcy5cbiAgICogQHJldHVybnMgQSBtYXAgb2YgZXJyb3IgbWVzc2FnZXMgZm9yIGVhY2gga2V5IGJpbmRpbmcuXG4gICAqL1xuICBiaW5kKGtleUJpbmRpbmdzOiBLZXlCaW5kaW5ncyk6IE1hcDxzdHJpbmcsIEJpbmRpbmdFcnJvcltdPjtcblxuICAvKiogQmluZHMgYSBrZXkgc2VxdWVuY2UgdG8gYSBjb21tYW5kLlxuICAgKlxuICAgKiBAcGFyYW0gc2VxdWVuY2UgQSBrZXkgc2VxdWVuY2UuXG4gICAqIEBwYXJhbSBjb21tYW5kIEEgY29tbWFuZCB0byBiaW5kLlxuICAgKiBAcmV0dXJucyBBIG1hcCBvZiBlcnJvciBtZXNzYWdlcyBmb3IgdGhlIGtleSBiaW5kaW5nLlxuICAgKi9cbiAgYmluZChzZXF1ZW5jZTogc3RyaW5nLCBjb21tYW5kOiBDb21tYW5kKTogTWFwPHN0cmluZywgQmluZGluZ0Vycm9yW10+O1xuXG4gIGJpbmQoXG4gICAgc2VxdWVuY2U6IHN0cmluZyB8IEtleUJpbmRpbmdzLFxuICAgIGNvbW1hbmQ/OiBDb21tYW5kLFxuICApOiBNYXA8c3RyaW5nLCBCaW5kaW5nRXJyb3JbXT4ge1xuICAgIGNvbnN0IGVycm9yTWFwID0gbmV3IE1hcDxzdHJpbmcsIEJpbmRpbmdFcnJvcltdPigpO1xuICAgIGNvbnN0IHNlcXVlbmNlczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoXG4gICAgICBjb25zdCBbc2VxLCBjbWRdIG9mIHNlcXVlbmNlIGluc3RhbmNlb2YgTWFwXG4gICAgICAgID8gc2VxdWVuY2UuZW50cmllcygpXG4gICAgICAgIDogdHlwZW9mIHNlcXVlbmNlID09PSBcInN0cmluZ1wiXG4gICAgICAgID8gW1tzZXF1ZW5jZSwgY29tbWFuZCFdIGFzIGNvbnN0XVxuICAgICAgICA6IE9iamVjdC5lbnRyaWVzKHNlcXVlbmNlKVxuICAgICkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gbm9ybWFsaXplU2VxdWVuY2Uoc2VxKTtcbiAgICAgIGlmICghcmVzdWx0Lm9rKSB7XG4gICAgICAgIGZvciAoY29uc3QgZXJyb3Igb2YgcmVzdWx0LnZhbHVlKSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKGAke3NlcX06ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBlcnJvck1hcC5zZXQoc2VxLCByZXN1bHQudmFsdWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IHJlc3VsdC52YWx1ZTtcbiAgICAgIHRoaXMuYmluZGluZ3Muc2V0KG5vcm1hbGl6ZWQsIGNtZCk7XG4gICAgICBpZiAobm9ybWFsaXplZC5zdGFydHNXaXRoKHRoaXMuY3VycmVudFNlcXVlbmNlKSkge1xuICAgICAgICB0aGlzLmZpbHRlcmVkLmFkZChub3JtYWxpemVkKTtcbiAgICAgIH1cbiAgICAgIHNlcXVlbmNlcy5wdXNoKG5vcm1hbGl6ZWQpO1xuICAgIH1cblxuICAgIGxvZ2dlci5kZWJ1ZyhcIkJpbmRlZCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOlwiLCBzZXF1ZW5jZXMpO1xuICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICAgIHJldHVybiBlcnJvck1hcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmJpbmRzIHRoZSBzcGVjaWZpZWQga2V5IHNlcXVlbmNlcy5cbiAgICogQHBhcmFtIHNlcXVlbmNlcyBUaGUga2V5IHNlcXVlbmNlcyB0byB1bmJpbmQuXG4gICAqL1xuICB1bmJpbmQoLi4uc2VxdWVuY2VzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qgc2VxdWVuY2Ugb2Ygc2VxdWVuY2VzKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBub3JtYWxpemVTZXF1ZW5jZShzZXF1ZW5jZSk7XG4gICAgICBpZiAoIXJlc3VsdC5vaykgY29udGludWU7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gcmVzdWx0LnZhbHVlO1xuICAgICAgdGhpcy5iaW5kaW5ncy5kZWxldGUobm9ybWFsaXplZCk7XG4gICAgICB0aGlzLmZpbHRlcmVkLmRlbGV0ZShub3JtYWxpemVkKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBNb3VzZXRyYXAgaW5zdGFuY2UgYnkgY2xlYXJpbmcgYWxsIGtleSBiaW5kaW5ncy5cbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuYmluZGluZ3MuY2xlYXIoKTtcbiAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgYmluZGluZ3MgPSBuZXcgTWFwPHN0cmluZywgQ29tbWFuZD4oKTtcblxuICAvKiogQSBjYWxsYmFjayBjYWxsZWQgd2hlbmV2ZXIgdGhlIHNlcXVlbmNlIGlzIHVwZGF0ZWQuICovXG4gIHByaXZhdGUgb25TZXF1ZW5jZVVwZGF0ZT86IChzZXF1ZW5jZTogc3RyaW5nKSA9PiB2b2lkO1xuXG4gIC8qKiBUaGUgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIHRvIGZsdXNoIHRoZSBzZXF1ZW5jZS4gKi9cbiAgcHJpdmF0ZSBmbHVzaEludGVydmFsOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBfc2VxdWVuY2UgPSBcIlwiO1xuICBwcml2YXRlIHNldCBjdXJyZW50U2VxdWVuY2Uoc2VxdWVuY2U6IHN0cmluZykge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLl9zZXF1ZW5jZSAhPT0gc2VxdWVuY2U7XG4gICAgdGhpcy5fc2VxdWVuY2UgPSBzZXF1ZW5jZTtcbiAgICBpZiAoY2hhbmdlZCkgdGhpcy5vblNlcXVlbmNlVXBkYXRlPy4oc2VxdWVuY2UpO1xuICB9XG4gIGdldCBjdXJyZW50U2VxdWVuY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2VxdWVuY2U7XG4gIH1cblxuICBwcml2YXRlIHByZXZCZXN0TWF0Y2hDb21tYW5kOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgZmlsdGVyZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSB0aW1lcjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgYmFja1RvSW5pdGlhbCA9ICgpID0+IHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XG4gICAgdGhpcy5jdXJyZW50U2VxdWVuY2UgPSBcIlwiO1xuICAgIHRoaXMucHJldkJlc3RNYXRjaENvbW1hbmQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5maWx0ZXJlZCA9IG5ldyBTZXQodGhpcy5iaW5kaW5ncy5rZXlzKCkpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcInJlc2V0IHRoZSBzZXF1ZW5jZVwiKTtcbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZUtleWRvd24gPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmICghZS5pc1RydXN0ZWQpIHJldHVybjtcbiAgICBjb25zdCB2aW1LZXkgPSBzdHJpbmdpZnkoZSk7XG4gICAgaWYgKCF2aW1LZXkpIHJldHVybjtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XG4gICAgaWYgKGUuaXNDb21wb3NpbmcpIHtcbiAgICAgIHRoaXMuYmFja1RvSW5pdGlhbCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRTZXF1ZW5jZSArPSB2aW1LZXk7XG4gICAgbG9nZ2VyLmRlYnVnKFwic2VxdWVuY2VcIiwgdGhpcy5jdXJyZW50U2VxdWVuY2UpO1xuICAgIGxldCBiZXN0TWF0Y2hDb21tYW5kOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5maWx0ZXJlZCkge1xuICAgICAgaWYgKCFrZXkuc3RhcnRzV2l0aCh0aGlzLmN1cnJlbnRTZXF1ZW5jZSkpIHRoaXMuZmlsdGVyZWQuZGVsZXRlKGtleSk7XG4gICAgICBpZiAodGhpcy5jdXJyZW50U2VxdWVuY2UgIT09IGtleSkgY29udGludWU7XG4gICAgICBjb25zdCBjb21tYW5kID0gdGhpcy5iaW5kaW5ncy5nZXQoa2V5KTtcbiAgICAgIGlmICghY29tbWFuZCkge1xuICAgICAgICB0aGlzLmZpbHRlcmVkLmRlbGV0ZShrZXkpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGJlc3RNYXRjaENvbW1hbmQgPSAoKSA9PiB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgcnVuICR7a2V5fWApO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbW1hbmQoZSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0aGlzLmJhY2tUb0luaXRpYWwoKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMuZmlsdGVyZWQuc2l6ZTtcbiAgICBsb2dnZXIuZGVidWcoYCR7c2l6ZX0gY2FuZGlkYXRlczogJHtbLi4udGhpcy5maWx0ZXJlZC5rZXlzKCldLmpvaW4oXCIsIFwiKX1gKTtcbiAgICBpZiAoc2l6ZSA+IDApIHRoaXMucHJldkJlc3RNYXRjaENvbW1hbmQgPSBiZXN0TWF0Y2hDb21tYW5kO1xuICAgIGlmICh0aGlzLnByZXZCZXN0TWF0Y2hDb21tYW5kICYmIHNpemUgPCAyKSB7XG4gICAgICAvLyBFeGVjdXRlIHRoZSBiZXN0IG1hdGNoIGNvbW1hbmQgaWYgdGhlcmUgaXMgb25seSBvbmUgY29tbWFuZCB0aGF0IG1hdGNoZXMgY29tcGxldGVseS5cbiAgICAgIC8vIElmIHRoZXJlIHdhcyBhIGNvbW1hbmQgdGhhdCBtYXRjaGVkIGNvbXBsZXRlbHkgaW4gdGhlIHByZXZpb3VzIHR1cm4gYW5kIGEgY29tbWFuZCB0aGF0IG1hdGNoZWQgcGFydGlhbGx5IGluIHRoZSBwcmV2aW91cyB0dXJuLCBhbmQgaW4gdGhpcyB0dXJuIGFsbCB0aGUgY29tbWFuZHMgdGhhdCBtYXRjaGVkIHBhcnRpYWxseSBpbiB0aGUgcHJldmlvdXMgdHVybiBhcmUgbm8gbG9uZ2VyIG1hdGNoZWQsIGV4ZWN1dGUgdGhlIGNvbW1hbmQgdGhhdCBtYXRjaGVkIGNvbXBsZXRlbHkgaW4gdGhlIHByZXZpb3VzIHR1cm4gKGB0aGlzLnByZXZCZXN0TWF0Y2hDb21tYW5kYCkuXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSBgS2V5Ym9hcmRFdmVudGAgb2YgdGhpcyB0dXJuIHdpbGwgYmUgcmV1c2VkIGluIHRoZSBuZXh0IHR1cm4uXG4gICAgICAvLyBFeGFtcGxlOlxuICAgICAgLy8gMS4gUHJldmlvdXMgdHVybjpcbiAgICAgIC8vICAgLSBzZXF1ZW5jZTogXCJkXCJcbiAgICAgIC8vICAgLSBmaWx0ZXJlZDogW1wiZFwiLFwiZGRcIl1cbiAgICAgIC8vIDIuIEN1cnJlbnQgdHVybjpcbiAgICAgIC8vICAgLSBzZXF1ZW5jZTogXCJkYVwiXG4gICAgICAvLyAgIC0gZmlsdGVyZWQ6IFtdXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIGV4ZWN1dGUgXCJkXCIsIHJlc2V0IHRoZSBzdGF0ZSwgYW5kIHByZXRlbmQgdGhhdCBcImFcIiB3YXMgZW50ZXJlZCBpbiB0aGUgbmV4dCB0dXJuLlxuICAgICAgdGhpcy5wcmV2QmVzdE1hdGNoQ29tbWFuZCgpO1xuICAgICAgaWYgKHNpemUgPT09IDApIHtcbiAgICAgICAgdGhpcy5oYW5kbGVLZXlkb3duKGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChzaXplID09PSAwKSB7XG4gICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gY2FuZGlkYXRlcywgZ28gYmFjayB0byB0aGUgaW5pdGlhbCBzdGF0ZS5cbiAgICAgIHRoaXMuYmFja1RvSW5pdGlhbCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBBbHdheXMgcHJldmVudCB0aGUgZGVmYXVsdCBiZWhhdmlvciBpZiB0aGUgY29tbWFuZCBjYW5ub3QgYmUgbmFycm93ZWQgZG93biwgYW5kIHN0b3AgdGhlIGV2ZW50IHByb3BhZ2F0aW9uLlxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KFxuICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gaW5wdXQgZm9yIGEgY2VydGFpbiBwZXJpb2Qgb2YgdGltZSwgZ28gYmFjayB0byB0aGUgaW5pdGlhbCBzdGF0ZS5cbiAgICAgIC8vIElmIHRoZXJlIGlzIGEgY29tbWFuZCB0aGF0IG1hdGNoZXMgY29tcGxldGVseSwgZXhlY3V0ZSB0aGF0IGNvbW1hbmQuXG4gICAgICB0aGlzLnByZXZCZXN0TWF0Y2hDb21tYW5kID8/IHRoaXMuYmFja1RvSW5pdGlhbCxcbiAgICAgIHRoaXMuZmx1c2hJbnRlcnZhbCxcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgZW1pdENoYW5nZSA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5iaW5kaW5ncy5zaXplID09PSAwKSB7XG4gICAgICB0aGlzLmJhY2tUb0luaXRpYWwoKTtcbiAgICAgIHRoaXMudGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgIFwia2V5ZG93blwiLFxuICAgICAgICB0aGlzLmhhbmRsZUtleWRvd24gYXMgRXZlbnRMaXN0ZW5lcixcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgIFwia2V5ZG93blwiLFxuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duIGFzIEV2ZW50TGlzdGVuZXIsXG4gICAgKTtcbiAgfTtcbn1cblxuY29uc3QgaW52YWxpZFNlcXVlbmNlRXJyb3I6IEludmFsaWRTZXF1ZW5jZUVycm9yID0ge1xuICBuYW1lOiBcIkludmFsaWRTZXF1ZW5jZUVycm9yXCIsXG4gIG1lc3NhZ2U6IFwiY2Fubm90IHBhcnNlIHRoZSBzZXF1ZW5jZVwiLFxufTtcblxuY29uc3Qgbm9ybWFsaXplU2VxdWVuY2UgPSAoXG4gIHNlcXVlbmNlOiBzdHJpbmcsXG4pOiBSZXN1bHQ8c3RyaW5nLCBCaW5kaW5nRXJyb3JbXT4gPT4ge1xuICBjb25zdCBrZXlzID0gcGFyc2VTZXF1ZW5jZShzZXF1ZW5jZSk7XG4gIGlmICgha2V5cykgcmV0dXJuIHsgb2s6IGZhbHNlLCB2YWx1ZTogW2ludmFsaWRTZXF1ZW5jZUVycm9yXSB9O1xuICBsZXQgbm9ybWFsaXplZFNlcXVlbmNlID0gXCJcIjtcbiAgY29uc3QgZXJyb3JzOiBCaW5kaW5nRXJyb3JbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbm9ybWFsaXplKGtleSk7XG4gICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgIGVycm9ycy5wdXNoKHJlc3VsdC52YWx1ZSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgbm9ybWFsaXplZFNlcXVlbmNlICs9IHJlc3VsdC52YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBlcnJvcnMubGVuZ3RoID4gMFxuICAgID8geyBvazogZmFsc2UsIHZhbHVlOiBlcnJvcnMgfVxuICAgIDogeyBvazogdHJ1ZSwgdmFsdWU6IG5vcm1hbGl6ZWRTZXF1ZW5jZSB9O1xufTtcbiIsICJjb25zdCB2aW1lb1JlZ0V4cCA9IC9odHRwcz86XFwvXFwvdmltZW9cXC5jb21cXC8oWzAtOV0rKS9pO1xuXG4vKiogdmltZW/jga5VUkzjgYvjgol2aWRlbyBJROOCkuWPluW+l+OBmeOCi1xuICpcbiAqIEBwYXJhbSB1cmxcbiAqIEByZXR1cm4gdmlkZW8gSUQgdmltZW/jga5VUkzjgafjgarjgZHjgozjgbBgdW5kZWZpbmVkYOOCkui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgcGFyc2VWaW1lbyA9ICh1cmw6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IG1hdGNoZXMgPSB1cmwubWF0Y2godmltZW9SZWdFeHApO1xuICBpZiAoIW1hdGNoZXMpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiBtYXRjaGVzWzFdO1xufTtcbiIsICJjb25zdCBzcG90aWZ5UmVnRXhwID1cbiAgL2h0dHBzPzpcXC9cXC9vcGVuXFwuc3BvdGlmeVxcLmNvbVxcLyh0cmFja3xhcnRpc3R8cGxheWxpc3R8YWxidW18ZXBpc29kZXxzaG93KVxcLyhbYS16QS1aXFxkXy1dKykoPzpcXD9bXlxcc117MCwxMDB9fCkvO1xuZXhwb3J0IGludGVyZmFjZSBTcG90aWZ5UHJvcHMge1xuICB2aWRlb0lkOiBzdHJpbmc7XG4gIHBhdGhUeXBlOiBcInRyYWNrXCIgfCBcImFydGlzdFwiIHwgXCJwbGF5bGlzdFwiIHwgXCJhbGJ1bVwiIHwgXCJlcGlzb2RlXCIgfCBcInNob3dcIjtcbn1cblxuLyoqIFNwb3RpZnnjga5VUkzjgpLop6PmnpDjgZfjgaZhdWRpbyBJROOBquOBqeOCkuWPluOCiuWHuuOBmVxuICpcbiAqIEBwYXJhbSB1cmwgU3BvdGlmeeOBrlVSTFxuICogQHJldHVybiDop6PmnpDntZDmnpwgU3BvdGlmeeOBrlVSTOOBp+OBquOBi+OBo+OBn+OBqOOBjeOBr2B1bmRlZmluZWRg44KS6L+U44GZXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZVNwb3RpZnkgPSAodXJsOiBzdHJpbmcpOiBTcG90aWZ5UHJvcHMgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBtYXRjaGVzID0gdXJsLm1hdGNoKHNwb3RpZnlSZWdFeHApO1xuICBpZiAoIW1hdGNoZXMpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgWywgcGF0aFR5cGUsIHZpZGVvSWRdID0gbWF0Y2hlcztcbiAgcmV0dXJuIHtcbiAgICB2aWRlb0lkLFxuICAgIHBhdGhUeXBlLFxuICB9IGFzIFNwb3RpZnlQcm9wcztcbn07XG4iLCAiY29uc3QgQW5jaG9yRk1SZWdFeHAgPVxuICAvaHR0cHM/OlxcL1xcL2FuY2hvclxcLmZtXFwvW2EtekEtWlxcZF8tXStcXC9lcGlzb2Rlc1xcLyhbYS16QS1aXFxkXy1dKyg/OlxcL1thLXpBLVpcXGRfLV0rKT8pKD86XFw/W15cXHNdezAsMTAwfXwpLztcblxuLyoqIGFuY2hvckZN44GuVVJM44GL44KJSUTjgpLlj5blvpfjgZnjgotcbiAqXG4gKiBAcGFyYW0gdXJsXG4gKiBAcmV0dXJuIElEIGFuY2hvckZN44GuVVJM44Gn44Gq44GR44KM44GwYHVuZGVmaW5lZGDjgpLov5TjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlQW5jaG9yRk0gPSAodXJsOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBtYXRjaGVzID0gdXJsLm1hdGNoKEFuY2hvckZNUmVnRXhwKTtcbiAgaWYgKCFtYXRjaGVzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IFssIHZpZGVvSWRdID0gbWF0Y2hlcztcbiAgcmV0dXJuIHZpZGVvSWQ7XG59O1xuIiwgImltcG9ydCB0eXBlIHsgTGlua05vZGUgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyBwYXJzZVlvdXR1YmUgfSBmcm9tIFwiLi9wYXJzZXIveW91dHViZS50c1wiO1xuaW1wb3J0IHsgcGFyc2VWaW1lbyB9IGZyb20gXCIuL3BhcnNlci92aW1lby50c1wiO1xuaW1wb3J0IHsgcGFyc2VTcG90aWZ5IH0gZnJvbSBcIi4vcGFyc2VyL3Nwb3RpZnkudHNcIjtcbmltcG9ydCB7IHBhcnNlQW5jaG9yRk0gfSBmcm9tIFwiLi9wYXJzZXIvYW5jaG9yLWZtLnRzXCI7XG5cbmV4cG9ydCB0eXBlIHsgTGlua05vZGUgfTtcblxuZXhwb3J0IGludGVyZmFjZSBBYnNvbHV0ZUxpbmtOb2RlIHtcbiAgdHlwZTogXCJhYnNvbHV0ZUxpbmtcIjtcbiAgY29udGVudDogc3RyaW5nO1xuICBocmVmOiBzdHJpbmc7XG4gIHJhdzogc3RyaW5nO1xufVxuXG4vKiogWW91dHViZeWfi+OCgei+vOOBvyAqL1xuZXhwb3J0IGludGVyZmFjZSBZb3V0dWJlTm9kZSB7XG4gIHR5cGU6IFwieW91dHViZVwiO1xuICB2aWRlb0lkOiBzdHJpbmc7XG4gIHBhdGhUeXBlOiBcImNvbVwiIHwgXCJkb3RiZVwiIHwgXCJzaG9ydFwiO1xuICBwYXJhbXM6IFVSTFNlYXJjaFBhcmFtcztcbiAgaHJlZjogc3RyaW5nO1xuICByYXc6IHN0cmluZztcbn1cblxuLyoqIFlvdXR1YmUgTGlzdOWfi+OCgei+vOOBvyAqL1xuZXhwb3J0IGludGVyZmFjZSBZb3V0dWJlTGlzdE5vZGUge1xuICB0eXBlOiBcInlvdXR1YmVcIjtcbiAgbGlzdElkOiBzdHJpbmc7XG4gIHBhdGhUeXBlOiBcImxpc3RcIjtcbiAgcGFyYW1zOiBVUkxTZWFyY2hQYXJhbXM7XG4gIGhyZWY6IHN0cmluZztcbiAgcmF3OiBzdHJpbmc7XG59XG5cbi8qKiBWaW1lb+Wfi+OCgei+vOOBvyAqL1xuZXhwb3J0IGludGVyZmFjZSBWaW1lb05vZGUge1xuICB0eXBlOiBcInZpbWVvXCI7XG4gIHZpZGVvSWQ6IHN0cmluZztcbiAgaHJlZjogc3RyaW5nO1xuICByYXc6IHN0cmluZztcbn1cblxuLyoqIFNwb3RpZnnln4vjgoHovrzjgb8gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BvdGlmeU5vZGUge1xuICB0eXBlOiBcInNwb3RpZnlcIjtcbiAgdmlkZW9JZDogc3RyaW5nO1xuICBwYXRoVHlwZTogXCJ0cmFja1wiIHwgXCJhcnRpc3RcIiB8IFwicGxheWxpc3RcIiB8IFwiYWxidW1cIiB8IFwiZXBpc29kZVwiIHwgXCJzaG93XCI7XG4gIGhyZWY6IHN0cmluZztcbiAgcmF3OiBzdHJpbmc7XG59XG5cbi8qKiBBbmNob3IgRk3ln4vjgoHovrzjgb8gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW5jaG9yRk1Ob2RlIHtcbiAgdHlwZTogXCJhbmNob3ItZm1cIjtcbiAgdmlkZW9JZDogc3RyaW5nO1xuICBocmVmOiBzdHJpbmc7XG4gIHJhdzogc3RyaW5nO1xufVxuXG4vKiog5YuV55S75Z+L44KB6L6844G/ICovXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvTm9kZSB7XG4gIHR5cGU6IFwidmlkZW9cIjtcbiAgaHJlZjogVmlkZW9VUkw7XG4gIHJhdzogc3RyaW5nO1xufVxuXG4vKiog6Z+z5aOw5Z+L44KB6L6844G/ICovXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGlvTm9kZSB7XG4gIHR5cGU6IFwiYXVkaW9cIjtcbiAgY29udGVudDogc3RyaW5nO1xuICBocmVmOiBBdWRpb1VSTDtcbiAgcmF3OiBzdHJpbmc7XG59XG5cbi8qKiBzY3JhcGJveC1wYXJzZXLjgafop6PmnpDjgZfjgZ/lpJbpg6jjg6rjg7Pjgq/oqJjms5XjgpLjgIHln4vjgoHovrzjgb/lvaLlvI/jgZTjgajjgavntLDjgYvjgY/op6PmnpDjgZnjgotcbiAqXG4gKiBAcGFyYW0gbGluayBzY3JhcGJveC1wYXJzZXLjgafop6PmnpDjgZfjgZ/lpJbpg6jjg6rjg7Pjgq/oqJjms5Xjga5vYmplY3RcbiAqIEByZXR1cm4g6Kej5p6Q44GX44Gf6KiY5rOV44Gub2JqZWN0XG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZUFic29sdXRlTGluayA9IChcbiAgbGluazogTGlua05vZGUgJiB7IHBhdGhUeXBlOiBcImFic29sdXRlXCIgfSxcbik6XG4gIHwgQWJzb2x1dGVMaW5rTm9kZVxuICB8IFZpZGVvTm9kZVxuICB8IEF1ZGlvTm9kZVxuICB8IFlvdXR1YmVOb2RlXG4gIHwgWW91dHViZUxpc3ROb2RlXG4gIHwgVmltZW9Ob2RlXG4gIHwgU3BvdGlmeU5vZGVcbiAgfCBBbmNob3JGTU5vZGUgPT4ge1xuICBjb25zdCB7IHR5cGU6IF8sIHBhdGhUeXBlOiBfXywgY29udGVudCwgaHJlZiwgLi4uYmFzZUxpbmsgfSA9IGxpbms7XG4gIGlmIChjb250ZW50ID09PSBcIlwiKSB7XG4gICAgY29uc3QgeW91dHViZSA9IHBhcnNlWW91dHViZShocmVmKTtcbiAgICBpZiAoeW91dHViZSkgcmV0dXJuIHsgdHlwZTogXCJ5b3V0dWJlXCIsIGhyZWYsIC4uLnlvdXR1YmUsIC4uLmJhc2VMaW5rIH07XG5cbiAgICBjb25zdCB2aW1lb0lkID0gcGFyc2VWaW1lbyhocmVmKTtcbiAgICBpZiAodmltZW9JZCkgcmV0dXJuIHsgdHlwZTogXCJ2aW1lb1wiLCB2aWRlb0lkOiB2aW1lb0lkLCBocmVmLCAuLi5iYXNlTGluayB9O1xuXG4gICAgY29uc3Qgc3BvdGlmeSA9IHBhcnNlU3BvdGlmeShocmVmKTtcbiAgICBpZiAoc3BvdGlmeSkgcmV0dXJuIHsgdHlwZTogXCJzcG90aWZ5XCIsIGhyZWYsIC4uLnNwb3RpZnksIC4uLmJhc2VMaW5rIH07XG5cbiAgICBjb25zdCBhbmNob3JGTUlkID0gcGFyc2VBbmNob3JGTShocmVmKTtcbiAgICBpZiAoYW5jaG9yRk1JZCkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJhbmNob3ItZm1cIiwgdmlkZW9JZDogYW5jaG9yRk1JZCwgaHJlZiwgLi4uYmFzZUxpbmsgfTtcbiAgICB9XG5cbiAgICBpZiAoaXNWaWRlb1VSTChocmVmKSkgcmV0dXJuIHsgdHlwZTogXCJ2aWRlb1wiLCBocmVmLCAuLi5iYXNlTGluayB9O1xuICB9XG4gIGlmIChpc0F1ZGlvVVJMKGhyZWYpKSByZXR1cm4geyB0eXBlOiBcImF1ZGlvXCIsIGNvbnRlbnQsIGhyZWYsIC4uLmJhc2VMaW5rIH07XG5cbiAgcmV0dXJuIHsgdHlwZTogXCJhYnNvbHV0ZUxpbmtcIiwgY29udGVudCwgaHJlZiwgLi4uYmFzZUxpbmsgfTtcbn07XG5cbnR5cGUgQXVkaW9VUkwgPSBgJHtzdHJpbmd9LiR7XCJtcDNcIiB8IFwib2dnXCIgfCBcIndhdlwiIHwgXCJhY2NcIn1gO1xuY29uc3QgaXNBdWRpb1VSTCA9ICh1cmw6IHN0cmluZyk6IHVybCBpcyBBdWRpb1VSTCA9PlxuICAvXFwuKD86bXAzfG9nZ3x3YXZ8YWFjKSQvLnRlc3QodXJsKTtcblxudHlwZSBWaWRlb1VSTCA9IGAke3N0cmluZ30uJHtcIm1wNFwiIHwgXCJ3ZWJtXCJ9YDtcbmNvbnN0IGlzVmlkZW9VUkwgPSAodXJsOiBzdHJpbmcpOiB1cmwgaXMgVmlkZW9VUkwgPT5cbiAgL1xcLig/Om1wNHx3ZWJtKSQvLnRlc3QodXJsKTtcbiIsICIvLyBwb3J0ZWQgZnJvbSBodHRwczovL3NjcmFwYm94LmlvL3Rha2tlci9jdXN0b20tbmV3LXBhZ2UtM1xuaW1wb3J0IHtcbiAgY2FyZXQsXG4gIENhcmV0SW5mbyxcbiAgZ2V0SW5kZW50TGluZUNvdW50LFxuICBnZXRUZXh0LFxuICBTY3JhcGJveCxcbn0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbi8qKiDpgbjmip7nr4Tlm7LjgYzjgYLjgozjgbDjgZ3jgozjgpLov5TjgZfjgIHjgarjgZHjgozjgbDjgZ3jga7ooYzjgavjgbbjgonkuIvjgYzjgovjgqTjg7Pjg4fjg7Pjg4jjga7loYrjgpLov5TjgZlcbiAqXG4gKiDpgbjmip7nr4Tlm7Ljga7ooYznlarlj7fjga/jgIHkuojjgoHoi6XjgYTjgbvjgYbjgYxgc3RhcnRg44Gr44Gq44KL44KI44GG6Kq/5pW044GX44Gm44GK44GPXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3Rpb24gPSAoKTogT21pdDxDYXJldEluZm8sIFwicG9zaXRpb25cIj4gPT4ge1xuICBpZiAoc2NyYXBib3guTGF5b3V0ICE9PSBcInBhZ2VcIikge1xuICAgIHJldHVybiB7XG4gICAgICBzZWxlY3Rpb25SYW5nZToge1xuICAgICAgICBzdGFydDogeyBsaW5lOiAwLCBjaGFyOiAwIH0sXG4gICAgICAgIGVuZDogeyBsaW5lOiAwLCBjaGFyOiAwIH0sXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWRUZXh0OiBcIlwiLFxuICAgIH07XG4gIH1cbiAgY29uc3QgeyBzZWxlY3Rpb25SYW5nZSwgc2VsZWN0ZWRUZXh0LCBwb3NpdGlvbiB9ID0gY2FyZXQoKTtcbiAgaWYgKCFzZWxlY3RlZFRleHQpIHtcbiAgICBjb25zdCBjb3VudCA9IGdldEluZGVudExpbmVDb3VudChwb3NpdGlvbi5saW5lKSA/PyAwO1xuICAgIGNvbnN0IHNlbGVjdGlvblJhbmdlID0ge1xuICAgICAgc3RhcnQ6IHtcbiAgICAgICAgbGluZTogcG9zaXRpb24ubGluZSxcbiAgICAgICAgY2hhcjogMCxcbiAgICAgIH0sXG4gICAgICBlbmQ6IHtcbiAgICAgICAgbGluZTogcG9zaXRpb24ubGluZSArIGNvdW50LFxuICAgICAgICBjaGFyOiBnZXRUZXh0KHBvc2l0aW9uLmxpbmUgKyBjb3VudCk/Lmxlbmd0aCA/PyAwLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdGlvblJhbmdlLFxuICAgICAgc2VsZWN0ZWRUZXh0OiBzY3JhcGJveC5QYWdlLmxpbmVzLnNsaWNlKFxuICAgICAgICBzZWxlY3Rpb25SYW5nZS5zdGFydC5saW5lLFxuICAgICAgICBzZWxlY3Rpb25SYW5nZS5lbmQubGluZSArIDEsXG4gICAgICApLm1hcCgobGluZSkgPT4gbGluZS50ZXh0KS5qb2luKFwiXFxuXCIpLFxuICAgIH07XG4gIH1cbiAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBzZWxlY3Rpb25SYW5nZTtcbiAgY29uc3QgbGFyZ2VyID0gc3RhcnQubGluZSA+IGVuZC5saW5lO1xuICBjb25zdCBzdGFydExpbmUgPSBsYXJnZXIgPyBlbmQubGluZSA6IHN0YXJ0LmxpbmU7XG4gIGNvbnN0IHN0YXJ0Q2hhciA9IGxhcmdlciA/IGVuZC5jaGFyIDogc3RhcnQuY2hhcjsgLy8g44GT44Gu55Wq5Y+344Gu5paH5a2X44GL44KJ5ZCr44KAXG4gIGNvbnN0IGVuZExpbmUgPSBsYXJnZXIgPyBzdGFydC5saW5lIDogZW5kLmxpbmU7XG4gIGNvbnN0IGVuZENoYXIgPSBsYXJnZXIgPyBzdGFydC5jaGFyIDogZW5kLmNoYXI7IC8vIOOBk+OBrueVquWPt+S7pemZjeOBruaWh+Wtl+OBr+WQq+OBvuOBquOBhFxuXG4gIHJldHVybiB7XG4gICAgc2VsZWN0ZWRUZXh0LFxuICAgIHNlbGVjdGlvblJhbmdlOiB7XG4gICAgICBzdGFydDoge1xuICAgICAgICBsaW5lOiBzdGFydExpbmUsXG4gICAgICAgIGNoYXI6IHN0YXJ0Q2hhcixcbiAgICAgIH0sXG4gICAgICBlbmQ6IHtcbiAgICAgICAgbGluZTogZW5kTGluZSxcbiAgICAgICAgY2hhcjogZW5kQ2hhcixcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn07XG4iLCAiLy8gcG9ydGVkIGZyb20gaHR0cHM6Ly9zY3JhcGJveC5pby90YWtrZXIvY3VzdG9tLW5ldy1wYWdlLTNcbmltcG9ydCB0eXBlIHsgQmFzZUxpbmUsIHBhdGNoIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuaW1wb3J0IHsgZ2V0SW5kZW50Q291bnQgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZXIgPSBQYXJhbWV0ZXJzPHR5cGVvZiBwYXRjaD5bMl07XG5cbi8qKiDliIfjgorlh7rjgZfjgZ/jg5rjg7zjgrjjgpLplovjgY/mlrnms5VcbiAqXG4gKiAtIFwic2VsZlwiOiDlkIzjgZjjg5rjg7zjgrjjgafplovjgY9cbiAqIC0gXCJuZXd0YWJcIjog5paw44GX44GE44Oa44O844K444Gn6ZaL44GPXG4gKiAtIFwibm9vcGVuXCI6IOmWi+OBi+OBquOBhFxuICovXG5leHBvcnQgdHlwZSBPcGVuTW9kZSA9IFwic2VsZlwiIHwgXCJuZXd0YWJcIiB8IFwibm9vcGVuXCI7XG5cbi8qKiDkuIDjgaTjga7jg5rjg7zjgrjjgpLooajjgZnjg4fjg7zjgr8gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZSB7XG4gIC8qKiDjg5rjg7zjgrjjga5wcm9qZWN0ICovXG4gIHByb2plY3Q6IHN0cmluZztcblxuICAvKiog44Oa44O844K444K/44Kk44OI44OrICovXG4gIHRpdGxlOiBzdHJpbmc7XG5cbiAgLyoqIOmFjeWIl+OBruOBqOOBje+8muOCv+OCpOODiOODq+OCkiAqKuWQq+OBvuOBquOBhCoqIOODmuODvOOCuOacrOaWh1xuICAgKlxuICAgKiAgLSDjgZnjgafjgavmnKzmlofjgYzjgYLjgovjgajjgY3jga/jgIHmnKvlsL7jgavov73oqJjjgZXjgozjgotcbiAgICpcbiAgICogIOmWouaVsOOBruOBqOOBje+8muOCv+OCpOODiOODq+OCkiAqKuWQq+OCgCoqIOacrOaWh+OCkui/lOOBmemWouaVsFxuICAgKi9cbiAgbGluZXM6IHN0cmluZ1tdIHwgVXBkYXRlcjtcblxuICAvKiog5YiH44KK5Ye644GX44Gf44Oa44O844K444KS6ZaL44GP5pa55rOVXG4gICAqXG4gICAqIGBuZXdQYWdlKClg44Gr5rih44GV44KM44Gf6Kit5a6a44KS44GT44KM44Gn5LiK5pu444GN44Gn44GN44KLXG4gICAqL1xuICBtb2RlOiBPcGVuTW9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXdQYWdlSG9vayB7XG4gIC8qKiBob29rJ3MgbmFtZVxuICAgKlxuICAgKiBtdXN0IGJlIHVuaXF1ZVxuICAgKi9cbiAgaG9va05hbWU6IHN0cmluZztcblxuICAvKiog5YiH44KK5Ye644GX5pmC44Gu5pu45byP6Kit5a6a44KS6KGM44GG6Zai5pWwXG4gICAqXG4gICAqIEBwYXJhbSB0ZXh0IOWIh+OCiuWHuuOBmeaWh+Wtl+WIl1xuICAgKiBAcGFyYW0gb3B0aW9ucyBgbmV3UGFnZSgpYOOBp+a4oeOBleOCjOOBn2hvb2tz5Lul5aSW44Gu5oOF5aCxXG4gICAqIEByZXR1cm4g5paw6KaP5L2c5oiQ44GZ44KL44Oa44O844K45oOF5aCx44Go44GL44KS6L+U44GZ44CC44KC44GX5p2h5Lu244Gr5LiA6Ie044GX44Gq44GE44Gq44Gp44Gn5YiH44KK5Ye644GV44Gq44GE5aC05ZCI44GvYHVuZGVmaW5lZGDjgpLov5TjgZlcbiAgICovXG4gIChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgb3B0aW9uczogTmV3UGFnZUhvb2tPcHRpb25zLFxuICApOiBQcm9taXNlPE5ld1BhZ2VIb29rUmVzdWx0PiB8IE5ld1BhZ2VIb29rUmVzdWx0IHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ld1BhZ2VIb29rT3B0aW9ucyB7XG4gIC8qKiDliIfjgorlh7rjgZflhYPjg5rjg7zjgrjjga50aXRsZSAqL1xuICB0aXRsZTogc3RyaW5nO1xuXG4gIC8qKiDliIfjgorlh7rjgZflhYNwcm9qZWN0ICovXG4gIHByb2plY3RGcm9tOiBzdHJpbmc7XG5cbiAgLyoqIOWIh+OCiuWHuuOBl+WFiHByb2plY3QgKi9cbiAgcHJvamVjdFRvOiBzdHJpbmc7XG5cbiAgLyoqIOWIh+OCiuWHuuOBl+evhOWbsuOCkuWQq+OCgOihjCAqL1xuICBsaW5lczogQmFzZUxpbmVbXTtcblxuICAvKiog5YiH44KK5Ye644GX44Gf44Oa44O844K444KS6ZaL44GP5pa55rOVICovXG4gIG1vZGU6IE9wZW5Nb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ld1BhZ2VIb29rUmVzdWx0IHtcbiAgLyoqIOWFg+OBruODmuODvOOCuOOBq+aui+OBmeODhuOCreOCueODiCAqL1xuICB0ZXh0OiBzdHJpbmc7XG5cbiAgLyoqIOWIh+OCiuWHuuOBmeODmuODvOOCuCAqL1xuICBwYWdlczogUGFnZVtdO1xufVxuXG4vKiog5L2V44KC6Kit5a6a44GV44KM44Gm44GE44Gq44GE44Go44GN44Gr5L2/44KP44KM44KLaG9va1xuICpcbiAqIOS7leanmOOBr1NjcmFwYm9444Gu44Go44G744G85ZCM44GYXG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0SG9vazogTmV3UGFnZUhvb2sgPSAoXG4gIHRleHQsXG4gIHsgdGl0bGUsIHByb2plY3RUbywgbW9kZSB9LFxuKSA9PiB7XG4gIGNvbnN0IFtyYXdUaXRsZSwgLi4ubGluZXNdID0gdGV4dC5zcGxpdChcIlxcblwiKTtcbiAgY29uc3QgbmV3VGl0bGUgPSByYXdUaXRsZS5yZXBsYWNlQWxsKFwiW1wiLCBcIlwiKS5yZXBsYWNlQWxsKFwiXVwiLCBcIlwiKS50cmltKCk7XG5cbiAgLy8g5L2Z6KiI44Gq44Kk44Oz44OH44Oz44OI44KS5YmK44KLXG4gIGNvbnN0IG1pbkluZGVudE51bSA9IE1hdGgubWluKFxuICAgIC4uLltyYXdUaXRsZSwgLi4ubGluZXNdLm1hcCgobGluZSkgPT4gZ2V0SW5kZW50Q291bnQobGluZSkpLFxuICApO1xuICBjb25zdCBuZXdMaW5lcyA9IFtcbiAgICBgZnJvbSBbJHt0aXRsZX1dYCxcbiAgICByYXdUaXRsZS5zbGljZShtaW5JbmRlbnROdW0pLFxuICAgIC4uLmxpbmVzLm1hcChcbiAgICAgIChsaW5lKSA9PiBsaW5lLnNsaWNlKG1pbkluZGVudE51bSksXG4gICAgKSxcbiAgXTtcblxuICByZXR1cm4ge1xuICAgIHRleHQ6IGBbJHtuZXdUaXRsZX1dYCxcbiAgICBwYWdlczogW3sgcHJvamVjdDogcHJvamVjdFRvLCB0aXRsZTogbmV3VGl0bGUsIGxpbmVzOiBuZXdMaW5lcywgbW9kZSB9XSxcbiAgfTtcbn07XG5cbmRlZmF1bHRIb29rLmhvb2tOYW1lID0gXCJkZWZhdWx0LWhvb2tcIjtcbiIsICIvLyBwb3J0ZWQgZnJvbSBodHRwczovL3NjcmFwYm94LmlvL3Rha2tlci9jdXN0b20tbmV3LXBhZ2UtM1xuaW1wb3J0IHtcbiAgZGlzY29ubmVjdCxcbiAgZW5jb2RlVGl0bGVVUkksXG4gIG1ha2VTb2NrZXQsXG4gIG9wZW5JblRoZVNhbWVUYWIsXG4gIHBhdGNoLFxuICBTY3JhcGJveCxcbiAgc2xlZXAsXG4gIFNvY2tldCxcbiAgdGFrZUludGVybmFsTGluZXMsXG4gIHVzZVN0YXR1c0Jhcixcbn0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuaW1wb3J0IHsgZ2V0U2VsZWN0aW9uIH0gZnJvbSBcIi4vc2VsZWN0aW9uLnRzXCI7XG5pbXBvcnQgeyBkZWZhdWx0SG9vaywgVXBkYXRlciB9IGZyb20gXCIuL2hvb2sudHNcIjtcbmltcG9ydCB0eXBlIHsgTmV3UGFnZUhvb2ssIE9wZW5Nb2RlIH0gZnJvbSBcIi4vaG9vay50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5leHBvcnQgdHlwZSB7XG4gIE5ld1BhZ2VIb29rLFxuICBOZXdQYWdlSG9va09wdGlvbnMsXG4gIE5ld1BhZ2VIb29rUmVzdWx0LFxuICBPcGVuTW9kZSxcbiAgUGFnZSxcbiAgVXBkYXRlcixcbn0gZnJvbSBcIi4vaG9vay50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1ha2VOZXdQYWdlSW5pdCB7XG4gIC8qKiDliIfjgorlh7rjgZflhYhwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IOePvuWcqOOBrnByb2plY3TjgajlkIzjgZhcbiAgICovXG4gIHByb2plY3Q/OiBzdHJpbmc7XG4gIC8qKiDliIfjgorlh7rjgZfjgZ/jg5rjg7zjgrjjgpLplovjgY/mlrnms5VcbiAgICpcbiAgICogQGRlZmF1bHQ6IFwibmV3dGFiXCJcbiAgICovXG4gIG1vZGU/OiBPcGVuTW9kZTtcbiAgLyoqIOWIh+OCiuWHuuOBl+OBn+ODmuODvOOCuOOBquOBqeOCkuS9nOaIkOOBmeOCi+mWouaVsFxuICAgKlxuICAgKiDmnIDliJ3jgatgdW5kZWZpbmVkYOS7peWkluOCkui/lOOBl+OBn2hvb2vjgaDjgZHjgpLmjqHnlKjjgZnjgotcbiAgICovXG4gIGhvb2tzPzogTmV3UGFnZUhvb2tbXTtcbn1cblxuLyoqIOWIh+OCiuWHuuOBl+OCkuWun+ihjOOBmeOCi+mWouaVsCAqL1xuZXhwb3J0IGludGVyZmFjZSBNYWtlTmV3UGFnZVJlc3VsdCB7XG4gIC8qKiDkvb/nlKjjgZnjgotob29r44Gu5ZCN5YmNICovXG4gIGhvb2tOYW1lOiBzdHJpbmc7XG5cbiAgKCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBjb25zdCBtYWtlTmV3UGFnZSA9IChcbiAgaW5pdD86IE1ha2VOZXdQYWdlSW5pdCxcbik6IE1ha2VOZXdQYWdlUmVzdWx0IHwgdW5kZWZpbmVkID0+IHtcbiAgLy8g6Kit5a6a44Go44GLXG4gIGNvbnN0IHtcbiAgICBwcm9qZWN0ID0gc2NyYXBib3guUHJvamVjdC5uYW1lLFxuICAgIG1vZGUgPSBcIm5ld3RhYlwiLFxuICB9ID0gaW5pdCA/PyB7fTtcbiAgY29uc3QgaG9va3MgPSBbLi4uKGluaXQ/Lmhvb2tzID8/IFtdKSwgZGVmYXVsdEhvb2tdO1xuXG4gIC8vIOWIh+OCiuWHuuOBmeevhOWbsuOBqOODhuOCreOCueODiOOCkuWPluW+l+OBmeOCi1xuICBjb25zdCB7IHNlbGVjdGlvblJhbmdlOiB7IHN0YXJ0LCBlbmQgfSwgc2VsZWN0ZWRUZXh0IH0gPSBnZXRTZWxlY3Rpb24oKTtcbiAgaWYgKCFzZWxlY3RlZFRleHQpIHJldHVybjtcbiAgaWYgKHNjcmFwYm94LkxheW91dCAhPT0gXCJwYWdlXCIpIHJldHVybjtcblxuICAvLyDliIfjgorlh7rjgZnjg5rjg7zjgrjjgpLkvZzjgotcbiAgY29uc3QgcmVzdWx0ID0gKCgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGhvb2sgb2YgaG9va3MpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGhvb2soc2VsZWN0ZWRUZXh0LCB7XG4gICAgICAgIHRpdGxlOiBzY3JhcGJveC5QYWdlLnRpdGxlLFxuICAgICAgICBwcm9qZWN0RnJvbTogc2NyYXBib3guUHJvamVjdC5uYW1lLFxuICAgICAgICBwcm9qZWN0VG86IHByb2plY3QsXG4gICAgICAgIGxpbmVzOiB0YWtlSW50ZXJuYWxMaW5lcygpLnNsaWNlKHN0YXJ0LmxpbmUsIGVuZC5saW5lICsgMSksXG4gICAgICAgIG1vZGUsXG4gICAgICB9KTtcbiAgICAgIGlmIChyZXN1bHQpIHJldHVybiBbaG9vay5ob29rTmFtZSwgcmVzdWx0XSBhcyBjb25zdDtcbiAgICB9XG4gIH0pKCk7XG5cbiAgLy8g5YiH44KK5Ye644Gb44KL54q25oWL44Gn44Gq44GR44KM44Gw5L2V44KC44GX44Gq44GEXG4gIGlmICghcmVzdWx0KSByZXR1cm47XG4gIGNvbnN0IFtob29rTmFtZSwgcHJvbWlzZV0gPSByZXN1bHQ7XG5cbiAgY29uc3QgY3V0ID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlID8gYXdhaXQgcHJvbWlzZSA6IHByb21pc2U7XG5cbiAgICAvLyDliIfjgorlh7rjgZnmlofnq6DjgoLlhYPjga7jg5rjg7zjgrjjgpLmm7jjgY3mj5vjgYjjgovjgZPjgajjgoLjgarjgZHjgozjgbDjgarjgavjgoLjgZfjgarjgYRcbiAgICBpZiAocmVzdWx0LnBhZ2VzLmxlbmd0aCA9PT0gMCAmJiByZXN1bHQudGV4dCA9PT0gc2VsZWN0ZWRUZXh0KSByZXR1cm47XG5cbiAgICAvLyDlgIvliKXjga5wYWdl44Gr5YiH44KK5Ye644GZXG4gICAgbGV0IHNvY2tldDogU29ja2V0IHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHsgcmVuZGVyLCBkaXNwb3NlIH0gPSB1c2VTdGF0dXNCYXIoKTtcbiAgICB0cnkge1xuICAgICAgaWYgKHJlc3VsdC5wYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHJlc3VsdC5wYWdlcy5sZW5ndGg7XG4gICAgICAgIHJlbmRlcihcbiAgICAgICAgICB7IHR5cGU6IFwic3Bpbm5lclwiIH0sXG4gICAgICAgICAgeyB0eXBlOiBcInRleHRcIiwgdGV4dDogYENyZWF0ZSBuZXcgJHtsZW5ndGh9IHBhZ2VzLi4uYCB9LFxuICAgICAgICApO1xuICAgICAgICBzb2NrZXQgPSBhd2FpdCBtYWtlU29ja2V0KCk7XG4gICAgICAgIGxldCBjb3VudGVyID0gMDtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocmVzdWx0LnBhZ2VzLm1hcChcbiAgICAgICAgICBhc3luYyAocGFnZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlcjogVXBkYXRlciA9IEFycmF5LmlzQXJyYXkocGFnZS5saW5lcylcbiAgICAgICAgICAgICAgPyAoXG4gICAgICAgICAgICAgICAgbGluZXMsXG4gICAgICAgICAgICAgICkgPT4gW1xuICAgICAgICAgICAgICAgIC4uLmxpbmVzLm1hcCgobGluZSkgPT4gbGluZS50ZXh0KSxcbiAgICAgICAgICAgICAgICAuLi4ocGFnZS5saW5lcyBhcyBzdHJpbmdbXSksXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgOiBwYWdlLmxpbmVzO1xuICAgICAgICAgICAgYXdhaXQgcGF0Y2gocGFnZS5wcm9qZWN0LCBwYWdlLnRpdGxlLCB1cGRhdGVyLCB7IHNvY2tldCB9KTtcblxuICAgICAgICAgICAgcmVuZGVyKFxuICAgICAgICAgICAgICB7IHR5cGU6IFwic3Bpbm5lclwiIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICB0ZXh0OiBgQ3JlYXRlICR7bGVuZ3RoIC0gKCsrY291bnRlcil9IHBhZ2VzLi4uYCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSxcbiAgICAgICAgKSk7XG4gICAgICB9XG4gICAgICByZW5kZXIoXG4gICAgICAgIHsgdHlwZTogXCJzcGlubmVyXCIgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IGAke1xuICAgICAgICAgICAgcmVzdWx0LnBhZ2VzLmxlbmd0aCA+IDAgPyBcIkNyZWF0ZWQuIFwiIDogXCJcIlxuICAgICAgICAgIH1SZW1vdmluZyBjdXQgdGV4dC4uLmAsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICAvLyDmm7jjgY3ovrzjgb/jgavmiJDlip/jgZfjgZ/jgonjgoLjgajjga7jg4bjgq3jgrnjg4jjgpLmtojjgZlcbiAgICAgIGNvbnN0IHRleHQgPSByZXN1bHQudGV4dDtcbiAgICAgIGlmIChzZWxlY3RlZFRleHQgPT09IHRleHQpIHJldHVybjtcbiAgICAgIGF3YWl0IHBhdGNoKHNjcmFwYm94LlByb2plY3QubmFtZSwgc2NyYXBib3guUGFnZS50aXRsZSwgKGxpbmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmVzXyA9IGxpbmVzLm1hcCgobGluZSkgPT4gbGluZS50ZXh0KTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi5saW5lc18uc2xpY2UoMCwgc3RhcnQubGluZSksXG4gICAgICAgICAgLi4uYCR7bGluZXNfW3N0YXJ0LmxpbmVdLnNsaWNlKDAsIHN0YXJ0LmNoYXIpfSR7dGV4dH0ke1xuICAgICAgICAgICAgLy8gZW5kLmNoYXLjgYzooYzmnKsrMeOBvuOBp+OBguOBo+OBn+WgtOWQiOOBr+OAgWVuZC5saW5l44Gu55u05b6M44Gu5pS56KGM44G+44Gn5Y+W44KK6Zmk44GL44KM44KLXG4gICAgICAgICAgICBsaW5lc18uc2xpY2UoZW5kLmxpbmUpLmpvaW4oXCJcXG5cIikuc2xpY2UoZW5kLmNoYXIpfWAuc3BsaXQoXCJcXG5cIiksXG4gICAgICAgIF07XG4gICAgICB9KTtcblxuICAgICAgcmVuZGVyKFxuICAgICAgICB7IHR5cGU6IFwiY2hlY2stY2lyY2xlXCIgfSxcbiAgICAgICAgeyB0eXBlOiBcInRleHRcIiwgdGV4dDogXCJSZW1vdmVkLlwiIH0sXG4gICAgICApO1xuXG4gICAgICAvLyDjg5rjg7zjgrjjgpLplovjgY9cbiAgICAgIGZvciAoY29uc3QgcGFnZSBvZiByZXN1bHQucGFnZXMpIHtcbiAgICAgICAgc3dpdGNoIChwYWdlLm1vZGUpIHtcbiAgICAgICAgICBjYXNlIFwic2VsZlwiOlxuICAgICAgICAgICAgaWYgKHBhZ2UucHJvamVjdCA9PT0gc2NyYXBib3guUHJvamVjdC5uYW1lKSB7XG4gICAgICAgICAgICAgIG9wZW5JblRoZVNhbWVUYWIocGFnZS5wcm9qZWN0LCBwYWdlLnRpdGxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFVzZXJTY3JpcHTjgpLlho3oqq3ovrzjgZXjgZvjgotcbiAgICAgICAgICAgICAgd2luZG93Lm9wZW4oXG4gICAgICAgICAgICAgICAgYGh0dHBzOi8vc2NyYXBib3guaW8vJHtwYWdlLnByb2plY3R9LyR7XG4gICAgICAgICAgICAgICAgICBlbmNvZGVUaXRsZVVSSShwYWdlLnRpdGxlKVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIFwiX3NlbGZcIixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJuZXd0YWJcIjpcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKFxuICAgICAgICAgICAgICBgaHR0cHM6Ly9zY3JhcGJveC5pby8ke3BhZ2UucHJvamVjdH0vJHtcbiAgICAgICAgICAgICAgICBlbmNvZGVUaXRsZVVSSShwYWdlLnRpdGxlKVxuICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgeyB0eXBlOiBcImV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCIgfSxcbiAgICAgICAgeyB0eXBlOiBcInRleHRcIiwgdGV4dDogXCJGYWlsZWQgdG8gY3JlYXRlIG5ldyBwYWdlcyAoc2VlIGNvbnNvbGUpLlwiIH0sXG4gICAgICApO1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgY29uc3Qgd2FpdGluZyA9IHNsZWVwKDEwMDApO1xuICAgICAgaWYgKHNvY2tldCkgYXdhaXQgZGlzY29ubmVjdChzb2NrZXQpO1xuICAgICAgYXdhaXQgd2FpdGluZztcbiAgICAgIGRpc3Bvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgY3V0Lmhvb2tOYW1lID0gaG9va05hbWU7XG5cbiAgcmV0dXJuIGN1dDtcbn07XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgImxldCBkZWZhdWx0T3B0aW9ucyA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdE9wdGlvbnMoKSB7XG4gIHJldHVybiBkZWZhdWx0T3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldERlZmF1bHRPcHRpb25zKG5ld09wdGlvbnMpIHtcbiAgZGVmYXVsdE9wdGlvbnMgPSBuZXdPcHRpb25zO1xufVxuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4vX2xpYi9kZWZhdWx0T3B0aW9ucy5tanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIHN0YXJ0T2ZXZWVrfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgc3RhcnRPZldlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIHN0YXJ0IG9mIGEgd2Vla1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPVx1MDAzZSBTdW4gQXVnIDMxIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdGhlIHdlZWsgc3RhcnRzIG9uIE1vbmRheSwgdGhlIHN0YXJ0IG9mIHRoZSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSwgeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIC8vPVx1MDAzZSBNb24gU2VwIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0T2ZXZWVrKGRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICBjb25zdCB3ZWVrU3RhcnRzT24gPVxuICAgIG9wdGlvbnM/LndlZWtTdGFydHNPbiA/P1xuICAgIG9wdGlvbnM/LmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uID8/XG4gICAgZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uID8/XG4gICAgZGVmYXVsdE9wdGlvbnMubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24gPz9cbiAgICAwO1xuXG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCBkYXkgPSBfZGF0ZS5nZXREYXkoKTtcbiAgY29uc3QgZGlmZiA9IChkYXkgXHUwMDNjIHdlZWtTdGFydHNPbiA/IDcgOiAwKSArIGRheSAtIHdlZWtTdGFydHNPbjtcblxuICBfZGF0ZS5zZXREYXRlKF9kYXRlLmdldERhdGUoKSAtIGRpZmYpO1xuICBfZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHN0YXJ0T2ZXZWVrO1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgc3RhcnRPZkRheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgZGF5IGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSBkYXkgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBvcmlnaW5hbCBkYXRlXG4gKlxuICogQHJldHVybnMgVGhlIHN0YXJ0IG9mIGEgZGF5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIGRheSBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZEYXkobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPVx1MDAzZSBUdWUgU2VwIDAyIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0T2ZEYXkoZGF0ZSkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgX2RhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBzdGFydE9mRGF5O1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBlYWNoRGF5T2ZJbnRlcnZhbH0gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIGVhY2hEYXlPZkludGVydmFsXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBhcnJheSBvZiBkYXRlcyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBhcnJheSBvZiBkYXRlcyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBpbnRlcnZhbCAtIFRoZSBpbnRlcnZhbC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgYXJyYXkgd2l0aCBzdGFydHMgb2YgZGF5cyBmcm9tIHRoZSBkYXkgb2YgdGhlIGludGVydmFsIHN0YXJ0IHRvIHRoZSBkYXkgb2YgdGhlIGludGVydmFsIGVuZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFYWNoIGRheSBiZXR3ZWVuIDYgT2N0b2JlciAyMDE0IGFuZCAxMCBPY3RvYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBlYWNoRGF5T2ZJbnRlcnZhbCh7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCA5LCA2KSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE0LCA5LCAxMClcbiAqIH0pXG4gKiAvLz1cdTAwM2UgW1xuICogLy8gICBNb24gT2N0IDA2IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFR1ZSBPY3QgMDcgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgV2VkIE9jdCAwOCAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBUaHUgT2N0IDA5IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIEZyaSBPY3QgMTAgMjAxNCAwMDowMDowMFxuICogLy8gXVxuICovXG5leHBvcnQgZnVuY3Rpb24gZWFjaERheU9mSW50ZXJ2YWwoaW50ZXJ2YWwsIG9wdGlvbnMpIHtcbiAgY29uc3Qgc3RhcnREYXRlID0gdG9EYXRlKGludGVydmFsLnN0YXJ0KTtcbiAgY29uc3QgZW5kRGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5lbmQpO1xuXG4gIGxldCByZXZlcnNlZCA9ICtzdGFydERhdGUgXHUwMDNlICtlbmREYXRlO1xuICBjb25zdCBlbmRUaW1lID0gcmV2ZXJzZWQgPyArc3RhcnREYXRlIDogK2VuZERhdGU7XG4gIGNvbnN0IGN1cnJlbnREYXRlID0gcmV2ZXJzZWQgPyBlbmREYXRlIDogc3RhcnREYXRlO1xuICBjdXJyZW50RGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcblxuICBsZXQgc3RlcCA9IG9wdGlvbnM/LnN0ZXAgPz8gMTtcbiAgaWYgKCFzdGVwKSByZXR1cm4gW107XG4gIGlmIChzdGVwIFx1MDAzYyAwKSB7XG4gICAgc3RlcCA9IC1zdGVwO1xuICAgIHJldmVyc2VkID0gIXJldmVyc2VkO1xuICB9XG5cbiAgY29uc3QgZGF0ZXMgPSBbXTtcblxuICB3aGlsZSAoK2N1cnJlbnREYXRlIFx1MDAzYz0gZW5kVGltZSkge1xuICAgIGRhdGVzLnB1c2godG9EYXRlKGN1cnJlbnREYXRlKSk7XG4gICAgY3VycmVudERhdGUuc2V0RGF0ZShjdXJyZW50RGF0ZS5nZXREYXRlKCkgKyBzdGVwKTtcbiAgICBjdXJyZW50RGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgfVxuXG4gIHJldHVybiByZXZlcnNlZCA/IGRhdGVzLnJldmVyc2UoKSA6IGRhdGVzO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGVhY2hEYXlPZkludGVydmFsO1xuIiwgIi8qKlxuICogQG5hbWUgaXNEYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiB2YWx1ZSBhIGRhdGU/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGFuIGluc3RhbmNlIG9mIERhdGUuIFRoZSBmdW5jdGlvbiB3b3JrcyBmb3IgZGF0ZXMgdHJhbnNmZXJyZWQgYWNyb3NzIGlmcmFtZXMuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrXG4gKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBkYXRlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBhIHZhbGlkIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc0RhdGUobmV3IERhdGUoKSlcbiAqIC8vPVx1MDAzZSB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBhbiBpbnZhbGlkIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc0RhdGUobmV3IERhdGUoTmFOKSlcbiAqIC8vPVx1MDAzZSB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBzb21lIHZhbHVlOlxuICogY29uc3QgcmVzdWx0ID0gaXNEYXRlKCcyMDE0LTAyLTMxJylcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgYW4gb2JqZWN0OlxuICogY29uc3QgcmVzdWx0ID0gaXNEYXRlKHt9KVxuICogLy89XHUwMDNlIGZhbHNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGUodmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNlxuICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgaXNEYXRlO1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICJpbXBvcnQgeyBpc0RhdGUgfSBmcm9tIFwiLi9pc0RhdGUubWpzXCI7XG5pbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgaXNWYWxpZFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSB2YWxpZD9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybnMgZmFsc2UgaWYgYXJndW1lbnQgaXMgSW52YWxpZCBEYXRlIGFuZCB0cnVlIG90aGVyd2lzZS5cbiAqIEFyZ3VtZW50IGlzIGNvbnZlcnRlZCB0byBEYXRlIHVzaW5nIGB0b0RhdGVgLiBTZWUgW3RvRGF0ZV0oaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy90b0RhdGUpXG4gKiBJbnZhbGlkIERhdGUgaXMgYSBEYXRlLCB3aG9zZSB0aW1lIHZhbHVlIGlzIE5hTi5cbiAqXG4gKiBUaW1lIHZhbHVlIG9mIERhdGU6IGh0dHA6Ly9lczUuZ2l0aHViLmlvLyN4MTUuOS4xLjFcbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGNoZWNrXG4gKlxuICogQHJldHVybnMgVGhlIGRhdGUgaXMgdmFsaWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHRoZSB2YWxpZCBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNWYWxpZChuZXcgRGF0ZSgyMDE0LCAxLCAzMSkpXG4gKiAvLz1cdTAwM2UgdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIHZhbHVlLCBjb252ZXJ0YWJsZSBpbnRvIGEgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzVmFsaWQoMTM5MzgwNDgwMDAwMClcbiAqIC8vPVx1MDAzZSB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciB0aGUgaW52YWxpZCBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNWYWxpZChuZXcgRGF0ZSgnJykpXG4gKiAvLz1cdTAwM2UgZmFsc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWQoZGF0ZSkge1xuICBpZiAoIWlzRGF0ZShkYXRlKSBcdTAwMjZcdTAwMjYgdHlwZW9mIGRhdGUgIT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIHJldHVybiAhaXNOYU4oTnVtYmVyKF9kYXRlKSk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgaXNWYWxpZDtcbiIsICJleHBvcnQgZnVuY3Rpb24gYWRkTGVhZGluZ1plcm9zKG51bWJlciwgdGFyZ2V0TGVuZ3RoKSB7XG4gIGNvbnN0IHNpZ24gPSBudW1iZXIgXHUwMDNjIDAgPyBcIi1cIiA6IFwiXCI7XG4gIGNvbnN0IG91dHB1dCA9IE1hdGguYWJzKG51bWJlcikudG9TdHJpbmcoKS5wYWRTdGFydCh0YXJnZXRMZW5ndGgsIFwiMFwiKTtcbiAgcmV0dXJuIHNpZ24gKyBvdXRwdXQ7XG59XG4iLCAiaW1wb3J0IHsgYWRkTGVhZGluZ1plcm9zIH0gZnJvbSBcIi4uL2FkZExlYWRpbmdaZXJvcy5tanNcIjtcblxuLypcbiAqIHwgICAgIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgIGEgIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgIHwgIEEqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGQgIHwgRGF5IG9mIG1vbnRoICAgICAgICAgICAgICAgICAgIHwgIEQgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGggIHwgSG91ciBbMS0xMl0gICAgICAgICAgICAgICAgICAgIHwgIEggIHwgSG91ciBbMC0yM10gICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIG0gIHwgTWludXRlICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE0gIHwgTW9udGggICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIHMgIHwgU2Vjb25kICAgICAgICAgICAgICAgICAgICAgICAgIHwgIFMgIHwgRnJhY3Rpb24gb2Ygc2Vjb25kICAgICAgICAgICAgIHxcbiAqIHwgIHkgIHwgWWVhciAoYWJzKSAgICAgICAgICAgICAgICAgICAgIHwgIFkgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqXG4gKiBMZXR0ZXJzIG1hcmtlZCBieSAqIGFyZSBub3QgaW1wbGVtZW50ZWQgYnV0IHJlc2VydmVkIGJ5IFVuaWNvZGUgc3RhbmRhcmQuXG4gKi9cblxuZXhwb3J0IGNvbnN0IGxpZ2h0Rm9ybWF0dGVycyA9IHtcbiAgLy8gWWVhclxuICB5KGRhdGUsIHRva2VuKSB7XG4gICAgLy8gRnJvbSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LTMxL3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0Zvcm1hdF90b2tlbnNcbiAgICAvLyB8IFllYXIgICAgIHwgICAgIHkgfCB5eSB8ICAgeXl5IHwgIHl5eXkgfCB5eXl5eSB8XG4gICAgLy8gfC0tLS0tLS0tLS18LS0tLS0tLXwtLS0tfC0tLS0tLS18LS0tLS0tLXwtLS0tLS0tfFxuICAgIC8vIHwgQUQgMSAgICAgfCAgICAgMSB8IDAxIHwgICAwMDEgfCAgMDAwMSB8IDAwMDAxIHxcbiAgICAvLyB8IEFEIDEyICAgIHwgICAgMTIgfCAxMiB8ICAgMDEyIHwgIDAwMTIgfCAwMDAxMiB8XG4gICAgLy8gfCBBRCAxMjMgICB8ICAgMTIzIHwgMjMgfCAgIDEyMyB8ICAwMTIzIHwgMDAxMjMgfFxuICAgIC8vIHwgQUQgMTIzNCAgfCAgMTIzNCB8IDM0IHwgIDEyMzQgfCAgMTIzNCB8IDAxMjM0IHxcbiAgICAvLyB8IEFEIDEyMzQ1IHwgMTIzNDUgfCA0NSB8IDEyMzQ1IHwgMTIzNDUgfCAxMjM0NSB8XG5cbiAgICBjb25zdCBzaWduZWRZZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIC8vIFJldHVybnMgMSBmb3IgMSBCQyAod2hpY2ggaXMgeWVhciAwIGluIEphdmFTY3JpcHQpXG4gICAgY29uc3QgeWVhciA9IHNpZ25lZFllYXIgXHUwMDNlIDAgPyBzaWduZWRZZWFyIDogMSAtIHNpZ25lZFllYXI7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh0b2tlbiA9PT0gXCJ5eVwiID8geWVhciAlIDEwMCA6IHllYXIsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG5cbiAgLy8gTW9udGhcbiAgTShkYXRlLCB0b2tlbikge1xuICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICAgIHJldHVybiB0b2tlbiA9PT0gXCJNXCIgPyBTdHJpbmcobW9udGggKyAxKSA6IGFkZExlYWRpbmdaZXJvcyhtb250aCArIDEsIDIpO1xuICB9LFxuXG4gIC8vIERheSBvZiB0aGUgbW9udGhcbiAgZChkYXRlLCB0b2tlbikge1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZGF0ZS5nZXREYXRlKCksIHRva2VuLmxlbmd0aCk7XG4gIH0sXG5cbiAgLy8gQU0gb3IgUE1cbiAgYShkYXRlLCB0b2tlbikge1xuICAgIGNvbnN0IGRheVBlcmlvZEVudW1WYWx1ZSA9IGRhdGUuZ2V0SG91cnMoKSAvIDEyIFx1MDAzZT0gMSA/IFwicG1cIiA6IFwiYW1cIjtcblxuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgXCJhXCI6XG4gICAgICBjYXNlIFwiYWFcIjpcbiAgICAgICAgcmV0dXJuIGRheVBlcmlvZEVudW1WYWx1ZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgY2FzZSBcImFhYVwiOlxuICAgICAgICByZXR1cm4gZGF5UGVyaW9kRW51bVZhbHVlO1xuICAgICAgY2FzZSBcImFhYWFhXCI6XG4gICAgICAgIHJldHVybiBkYXlQZXJpb2RFbnVtVmFsdWVbMF07XG4gICAgICBjYXNlIFwiYWFhYVwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGRheVBlcmlvZEVudW1WYWx1ZSA9PT0gXCJhbVwiID8gXCJhLm0uXCIgOiBcInAubS5cIjtcbiAgICB9XG4gIH0sXG5cbiAgLy8gSG91ciBbMS0xMl1cbiAgaChkYXRlLCB0b2tlbikge1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZGF0ZS5nZXRIb3VycygpICUgMTIgfHwgMTIsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG5cbiAgLy8gSG91ciBbMC0yM11cbiAgSChkYXRlLCB0b2tlbikge1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZGF0ZS5nZXRIb3VycygpLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuXG4gIC8vIE1pbnV0ZVxuICBtKGRhdGUsIHRva2VuKSB7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhkYXRlLmdldE1pbnV0ZXMoKSwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcblxuICAvLyBTZWNvbmRcbiAgcyhkYXRlLCB0b2tlbikge1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZGF0ZS5nZXRTZWNvbmRzKCksIHRva2VuLmxlbmd0aCk7XG4gIH0sXG5cbiAgLy8gRnJhY3Rpb24gb2Ygc2Vjb25kXG4gIFMoZGF0ZSwgdG9rZW4pIHtcbiAgICBjb25zdCBudW1iZXJPZkRpZ2l0cyA9IHRva2VuLmxlbmd0aDtcbiAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBkYXRlLmdldE1pbGxpc2Vjb25kcygpO1xuICAgIGNvbnN0IGZyYWN0aW9uYWxTZWNvbmRzID0gTWF0aC50cnVuYyhcbiAgICAgIG1pbGxpc2Vjb25kcyAqIE1hdGgucG93KDEwLCBudW1iZXJPZkRpZ2l0cyAtIDMpLFxuICAgICk7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhmcmFjdGlvbmFsU2Vjb25kcywgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbn07XG4iLCAiaW1wb3J0IHsgaXNWYWxpZCB9IGZyb20gXCIuL2lzVmFsaWQubWpzXCI7XG5pbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5pbXBvcnQgeyBsaWdodEZvcm1hdHRlcnMgfSBmcm9tIFwiLi9fbGliL2Zvcm1hdC9saWdodEZvcm1hdHRlcnMubWpzXCI7XG5cbi8vIFJleHBvcnRzIG9mIGludGVybmFsIGZvciBsaWJyYXJpZXMgdG8gdXNlLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvaXNzdWVzLzM2MzgjaXNzdWVjb21tZW50LTE4NzcwODI4NzRcbmV4cG9ydCB7IGxpZ2h0Rm9ybWF0dGVycyB9O1xuXG4vLyBUaGlzIFJlZ0V4cCBjb25zaXN0cyBvZiB0aHJlZSBwYXJ0cyBzZXBhcmF0ZWQgYnkgYHxgOlxuLy8gLSAoXFx3KVxcMSogbWF0Y2hlcyBhbnkgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIGxldHRlclxuLy8gLSAnJyBtYXRjaGVzIHR3byBxdW90ZSBjaGFyYWN0ZXJzIGluIGEgcm93XG4vLyAtICcoJyd8W14nXSkrKCd8JCkgbWF0Y2hlcyBhbnl0aGluZyBzdXJyb3VuZGVkIGJ5IHR3byBxdW90ZSBjaGFyYWN0ZXJzICgnKSxcbi8vICAgZXhjZXB0IGEgc2luZ2xlIHF1b3RlIHN5bWJvbCwgd2hpY2ggZW5kcyB0aGUgc2VxdWVuY2UuXG4vLyAgIFR3byBxdW90ZSBjaGFyYWN0ZXJzIGRvIG5vdCBlbmQgdGhlIHNlcXVlbmNlLlxuLy8gICBJZiB0aGVyZSBpcyBubyBtYXRjaGluZyBzaW5nbGUgcXVvdGVcbi8vICAgdGhlbiB0aGUgc2VxdWVuY2Ugd2lsbCBjb250aW51ZSB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuXG4vLyAtIC4gbWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciB1bm1hdGNoZWQgYnkgcHJldmlvdXMgcGFydHMgb2YgdGhlIFJlZ0V4cHNcbmNvbnN0IGZvcm1hdHRpbmdUb2tlbnNSZWdFeHAgPSAvKFxcdylcXDEqfCcnfCcoJyd8W14nXSkrKCd8JCl8Li9nO1xuXG5jb25zdCBlc2NhcGVkU3RyaW5nUmVnRXhwID0gL14nKFteXSo/KSc/JC87XG5jb25zdCBkb3VibGVRdW90ZVJlZ0V4cCA9IC8nJy9nO1xuY29uc3QgdW5lc2NhcGVkTGF0aW5DaGFyYWN0ZXJSZWdFeHAgPSAvW2EtekEtWl0vO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBsaWdodEZvcm1hdFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBGb3JtYXQgdGhlIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZyBpbiB0aGUgZ2l2ZW4gZm9ybWF0LiBVbmxpa2UgYGZvcm1hdGAsXG4gKiBgbGlnaHRGb3JtYXRgIGRvZXNuJ3QgdXNlIGxvY2FsZXMgYW5kIG91dHB1dHMgZGF0ZSB1c2luZyB0aGUgbW9zdCBwb3B1bGFyIHRva2Vucy5cbiAqXG4gKiBcdTAwM2Ug4pqg77iPIFBsZWFzZSBub3RlIHRoYXQgdGhlIGBsaWdodEZvcm1hdGAgdG9rZW5zIGRpZmZlciBmcm9tIE1vbWVudC5qcyBhbmQgb3RoZXIgbGlicmFyaWVzLlxuICogXHUwMDNlIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIFRoZSBjaGFyYWN0ZXJzIHdyYXBwZWQgYmV0d2VlbiB0d28gc2luZ2xlIHF1b3RlcyBjaGFyYWN0ZXJzICgnKSBhcmUgZXNjYXBlZC5cbiAqIFR3byBzaW5nbGUgcXVvdGVzIGluIGEgcm93LCB3aGV0aGVyIGluc2lkZSBvciBvdXRzaWRlIGEgcXVvdGVkIHNlcXVlbmNlLCByZXByZXNlbnQgYSAncmVhbCcgc2luZ2xlIHF1b3RlLlxuICpcbiAqIEZvcm1hdCBvZiB0aGUgc3RyaW5nIGlzIGJhc2VkIG9uIFVuaWNvZGUgVGVjaG5pY2FsIFN0YW5kYXJkICMzNTpcbiAqIGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9GaWVsZF9TeW1ib2xfVGFibGVcbiAqXG4gKiBBY2NlcHRlZCBwYXR0ZXJuczpcbiAqIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBhdHRlcm4gfCBSZXN1bHQgZXhhbXBsZXMgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhLi5hYWEgIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWEgICAgfCBhLm0uLCBwLm0uICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWEgICB8IGEsIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IENhbGVuZGFyIHllYXIgICAgICAgICAgICAgICAgICAgfCB5ICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHl5ICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeXl5ICAgICB8IDA0NCwgMDAxLCAwMDAsIDAxNyAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5eXl5ICAgIHwgMDA0NCwgMDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgIHxcbiAqIHwgTW9udGggKGZvcm1hdHRpbmcpICAgICAgICAgICAgICB8IE0gICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTU0gICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8XG4gKiB8IERheSBvZiBtb250aCAgICAgICAgICAgICAgICAgICAgfCBkICAgICAgIHwgMSwgMiwgLi4uLCAzMSAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRkICAgICAgfCAwMSwgMDIsIC4uLiwgMzEgICAgICAgICAgICAgICAgICAgfFxuICogfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgIHwgaCAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDEyICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBoaCAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgIHxcbiAqIHwgSG91ciBbMC0yM10gICAgICAgICAgICAgICAgICAgICB8IEggICAgICAgfCAwLCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSEggICAgICB8IDAwLCAwMSwgMDIsIC4uLiwgMjMgICAgICAgICAgICAgICB8XG4gKiB8IE1pbnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtICAgICAgIHwgMCwgMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1tICAgICAgfCAwMCwgMDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgfFxuICogfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcyAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzcyAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgRnJhY3Rpb24gb2Ygc2Vjb25kICAgICAgICAgICAgICB8IFMgICAgICAgfCAwLCAxLCAuLi4sIDkgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU1MgICAgICB8IDAwLCAwMSwgLi4uLCA5OSAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTU1MgICAgIHwgMDAwLCAwMDEsIC4uLiwgOTk5ICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNTU1MgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSBmb3JtYXQgLSBUaGUgc3RyaW5nIG9mIHRva2Vuc1xuICpcbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmdcbiAqXG4gKiBAdGhyb3dzIGBJbnZhbGlkIHRpbWUgdmFsdWVgIGlmIHRoZSBkYXRlIGlzIGludmFsaWRcbiAqIEB0aHJvd3MgZm9ybWF0IHN0cmluZyBjb250YWlucyBhbiB1bmVzY2FwZWQgbGF0aW4gYWxwaGFiZXQgY2hhcmFjdGVyXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlc3VsdCA9IGxpZ2h0Rm9ybWF0KG5ldyBEYXRlKDIwMTQsIDEsIDExKSwgJ3l5eXktTU0tZGQnKVxuICogLy89XHUwMDNlICcyMDE0LTAyLTExJ1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGlnaHRGb3JtYXQoZGF0ZSwgZm9ybWF0U3RyKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuXG4gIGlmICghaXNWYWxpZChfZGF0ZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkludmFsaWQgdGltZSB2YWx1ZVwiKTtcbiAgfVxuXG4gIGNvbnN0IHRva2VucyA9IGZvcm1hdFN0ci5tYXRjaChmb3JtYXR0aW5nVG9rZW5zUmVnRXhwKTtcblxuICAvLyBUaGUgb25seSBjYXNlIHdoZW4gZm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCBkb2Vzbid0IG1hdGNoIHRoZSBzdHJpbmcgaXMgd2hlbiBpdCdzIGVtcHR5XG4gIGlmICghdG9rZW5zKSByZXR1cm4gXCJcIjtcblxuICBjb25zdCByZXN1bHQgPSB0b2tlbnNcbiAgICAubWFwKChzdWJzdHJpbmcpID1cdTAwM2Uge1xuICAgICAgLy8gUmVwbGFjZSB0d28gc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMgd2l0aCBvbmUgc2luZ2xlIHF1b3RlIGNoYXJhY3RlclxuICAgICAgaWYgKHN1YnN0cmluZyA9PT0gXCInJ1wiKSB7XG4gICAgICAgIHJldHVybiBcIidcIjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlyc3RDaGFyYWN0ZXIgPSBzdWJzdHJpbmdbMF07XG4gICAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09IFwiJ1wiKSB7XG4gICAgICAgIHJldHVybiBjbGVhbkVzY2FwZWRTdHJpbmcoc3Vic3RyaW5nKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybWF0dGVyID0gbGlnaHRGb3JtYXR0ZXJzW2ZpcnN0Q2hhcmFjdGVyXTtcbiAgICAgIGlmIChmb3JtYXR0ZXIpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlcihfZGF0ZSwgc3Vic3RyaW5nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZpcnN0Q2hhcmFjdGVyLm1hdGNoKHVuZXNjYXBlZExhdGluQ2hhcmFjdGVyUmVnRXhwKSkge1xuICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcbiAgICAgICAgICBcIkZvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gdW5lc2NhcGVkIGxhdGluIGFscGhhYmV0IGNoYXJhY3RlciBgXCIgK1xuICAgICAgICAgICAgZmlyc3RDaGFyYWN0ZXIgK1xuICAgICAgICAgICAgXCJgXCIsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdWJzdHJpbmc7XG4gICAgfSlcbiAgICAuam9pbihcIlwiKTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBjbGVhbkVzY2FwZWRTdHJpbmcoaW5wdXQpIHtcbiAgY29uc3QgbWF0Y2hlcyA9IGlucHV0Lm1hdGNoKGVzY2FwZWRTdHJpbmdSZWdFeHApO1xuXG4gIGlmICghbWF0Y2hlcykge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuXG4gIHJldHVybiBtYXRjaGVzWzFdLnJlcGxhY2UoZG91YmxlUXVvdGVSZWdFeHAsIFwiJ1wiKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBsaWdodEZvcm1hdDtcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiLyoqXG4gKiBAbmFtZSBjb25zdHJ1Y3RGcm9tXG4gKiBAY2F0ZWdvcnkgR2VuZXJpYyBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb25zdHJ1Y3RzIGEgZGF0ZSB1c2luZyB0aGUgcmVmZXJlbmNlIGRhdGUgYW5kIHRoZSB2YWx1ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGZ1bmN0aW9uIGNvbnN0cnVjdHMgYSBuZXcgZGF0ZSB1c2luZyB0aGUgY29uc3RydWN0b3IgZnJvbSB0aGUgcmVmZXJlbmNlXG4gKiBkYXRlIGFuZCB0aGUgZ2l2ZW4gdmFsdWUuIEl0IGhlbHBzIHRvIGJ1aWxkIGdlbmVyaWMgZnVuY3Rpb25zIHRoYXQgYWNjZXB0XG4gKiBkYXRlIGV4dGVuc2lvbnMuXG4gKlxuICogSXQgZGVmYXVsdHMgdG8gYERhdGVgIGlmIHRoZSBwYXNzZWQgcmVmZXJlbmNlIGRhdGUgaXMgYSBudW1iZXIgb3IgYSBzdHJpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgcmVmZXJlbmNlIGRhdGUgdG8gdGFrZSBjb25zdHJ1Y3RvciBmcm9tXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY3JlYXRlIHRoZSBkYXRlXG4gKlxuICogQHJldHVybnMgRGF0ZSBpbml0aWFsaXplZCB1c2luZyB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdmFsdWVcbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gJ2RhdGUtZm5zJ1xuICpcbiAqIC8vIEEgZnVuY3Rpb24gdGhhdCBjbG9uZXMgYSBkYXRlIHByZXNlcnZpbmcgdGhlIG9yaWdpbmFsIHR5cGVcbiAqIGZ1bmN0aW9uIGNsb25lRGF0ZVx1MDAzY0RhdGVUeXBlIGV4dGVuZHMgRGF0ZShkYXRlOiBEYXRlVHlwZSk6IERhdGVUeXBlIHtcbiAqICAgcmV0dXJuIGNvbnN0cnVjdEZyb20oXG4gKiAgICAgZGF0ZSwgLy8gVXNlIGNvbnRydXN0b3IgZnJvbSB0aGUgZ2l2ZW4gZGF0ZVxuICogICAgIGRhdGUuZ2V0VGltZSgpIC8vIFVzZSB0aGUgZGF0ZSB2YWx1ZSB0byBjcmVhdGUgYSBuZXcgZGF0ZVxuICogICApXG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHZhbHVlKSB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgZGF0ZS5jb25zdHJ1Y3Rvcih2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGNvbnN0cnVjdEZyb207XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgYWRkRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgZGF5cyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5cyBhZGRlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMTAgZGF5cyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz1cdTAwM2UgVGh1IFNlcCAxMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGREYXlzKGRhdGUsIGFtb3VudCkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgaWYgKGlzTmFOKGFtb3VudCkpIHJldHVybiBjb25zdHJ1Y3RGcm9tKGRhdGUsIE5hTik7XG4gIGlmICghYW1vdW50KSB7XG4gICAgLy8gSWYgMCBkYXlzLCBuby1vcCB0byBhdm9pZCBjaGFuZ2luZyB0aW1lcyBpbiB0aGUgaG91ciBiZWZvcmUgZW5kIG9mIERTVFxuICAgIHJldHVybiBfZGF0ZTtcbiAgfVxuICBfZGF0ZS5zZXREYXRlKF9kYXRlLmdldERhdGUoKSArIGFtb3VudCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGREYXlzO1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICIvKipcbiAqIEBuYW1lIGNvbnN0cnVjdEZyb21cbiAqIEBjYXRlZ29yeSBHZW5lcmljIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnN0cnVjdHMgYSBkYXRlIHVzaW5nIHRoZSByZWZlcmVuY2UgZGF0ZSBhbmQgdGhlIHZhbHVlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGUgZnVuY3Rpb24gY29uc3RydWN0cyBhIG5ldyBkYXRlIHVzaW5nIHRoZSBjb25zdHJ1Y3RvciBmcm9tIHRoZSByZWZlcmVuY2VcbiAqIGRhdGUgYW5kIHRoZSBnaXZlbiB2YWx1ZS4gSXQgaGVscHMgdG8gYnVpbGQgZ2VuZXJpYyBmdW5jdGlvbnMgdGhhdCBhY2NlcHRcbiAqIGRhdGUgZXh0ZW5zaW9ucy5cbiAqXG4gKiBJdCBkZWZhdWx0cyB0byBgRGF0ZWAgaWYgdGhlIHBhc3NlZCByZWZlcmVuY2UgZGF0ZSBpcyBhIG51bWJlciBvciBhIHN0cmluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSByZWZlcmVuY2UgZGF0ZSB0byB0YWtlIGNvbnN0cnVjdG9yIGZyb21cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjcmVhdGUgdGhlIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBEYXRlIGluaXRpYWxpemVkIHVzaW5nIHRoZSBnaXZlbiBkYXRlIGFuZCB2YWx1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSAnZGF0ZS1mbnMnXG4gKlxuICogLy8gQSBmdW5jdGlvbiB0aGF0IGNsb25lcyBhIGRhdGUgcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgdHlwZVxuICogZnVuY3Rpb24gY2xvbmVEYXRlXHUwMDNjRGF0ZVR5cGUgZXh0ZW5kcyBEYXRlKGRhdGU6IERhdGVUeXBlKTogRGF0ZVR5cGUge1xuICogICByZXR1cm4gY29uc3RydWN0RnJvbShcbiAqICAgICBkYXRlLCAvLyBVc2UgY29udHJ1c3RvciBmcm9tIHRoZSBnaXZlbiBkYXRlXG4gKiAgICAgZGF0ZS5nZXRUaW1lKCkgLy8gVXNlIHRoZSBkYXRlIHZhbHVlIHRvIGNyZWF0ZSBhIG5ldyBkYXRlXG4gKiAgIClcbiAqIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdEZyb20oZGF0ZSwgdmFsdWUpIHtcbiAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBkYXRlLmNvbnN0cnVjdG9yKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgY29uc3RydWN0RnJvbTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5pbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBhZGREYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiBkYXlzIHRvIGJlIGFkZGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBkYXlzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAxMCBkYXlzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGREYXlzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAxMClcbiAqIC8vPVx1MDAzZSBUaHUgU2VwIDExIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZERheXMoZGF0ZSwgYW1vdW50KSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBpZiAoaXNOYU4oYW1vdW50KSkgcmV0dXJuIGNvbnN0cnVjdEZyb20oZGF0ZSwgTmFOKTtcbiAgaWYgKCFhbW91bnQpIHtcbiAgICAvLyBJZiAwIGRheXMsIG5vLW9wIHRvIGF2b2lkIGNoYW5naW5nIHRpbWVzIGluIHRoZSBob3VyIGJlZm9yZSBlbmQgb2YgRFNUXG4gICAgcmV0dXJuIF9kYXRlO1xuICB9XG4gIF9kYXRlLnNldERhdGUoX2RhdGUuZ2V0RGF0ZSgpICsgYW1vdW50KTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGFkZERheXM7XG4iLCAiaW1wb3J0IHsgYWRkRGF5cyB9IGZyb20gXCIuL2FkZERheXMubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgc3ViRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiBkYXlzIHRvIGJlIHN1YnRyYWN0ZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheXMgc3VidHJhY3RlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCAxMCBkYXlzIGZyb20gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YkRheXMobmV3IERhdGUoMjAxNCwgOCwgMSksIDEwKVxuICogLy89XHUwMDNlIEZyaSBBdWcgMjIgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3ViRGF5cyhkYXRlLCBhbW91bnQpIHtcbiAgcmV0dXJuIGFkZERheXMoZGF0ZSwgLWFtb3VudCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3ViRGF5cztcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiLyoqXG4gKiBAbmFtZSBjb25zdHJ1Y3RGcm9tXG4gKiBAY2F0ZWdvcnkgR2VuZXJpYyBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb25zdHJ1Y3RzIGEgZGF0ZSB1c2luZyB0aGUgcmVmZXJlbmNlIGRhdGUgYW5kIHRoZSB2YWx1ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGZ1bmN0aW9uIGNvbnN0cnVjdHMgYSBuZXcgZGF0ZSB1c2luZyB0aGUgY29uc3RydWN0b3IgZnJvbSB0aGUgcmVmZXJlbmNlXG4gKiBkYXRlIGFuZCB0aGUgZ2l2ZW4gdmFsdWUuIEl0IGhlbHBzIHRvIGJ1aWxkIGdlbmVyaWMgZnVuY3Rpb25zIHRoYXQgYWNjZXB0XG4gKiBkYXRlIGV4dGVuc2lvbnMuXG4gKlxuICogSXQgZGVmYXVsdHMgdG8gYERhdGVgIGlmIHRoZSBwYXNzZWQgcmVmZXJlbmNlIGRhdGUgaXMgYSBudW1iZXIgb3IgYSBzdHJpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgcmVmZXJlbmNlIGRhdGUgdG8gdGFrZSBjb25zdHJ1Y3RvciBmcm9tXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY3JlYXRlIHRoZSBkYXRlXG4gKlxuICogQHJldHVybnMgRGF0ZSBpbml0aWFsaXplZCB1c2luZyB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdmFsdWVcbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gJ2RhdGUtZm5zJ1xuICpcbiAqIC8vIEEgZnVuY3Rpb24gdGhhdCBjbG9uZXMgYSBkYXRlIHByZXNlcnZpbmcgdGhlIG9yaWdpbmFsIHR5cGVcbiAqIGZ1bmN0aW9uIGNsb25lRGF0ZVx1MDAzY0RhdGVUeXBlIGV4dGVuZHMgRGF0ZShkYXRlOiBEYXRlVHlwZSk6IERhdGVUeXBlIHtcbiAqICAgcmV0dXJuIGNvbnN0cnVjdEZyb20oXG4gKiAgICAgZGF0ZSwgLy8gVXNlIGNvbnRydXN0b3IgZnJvbSB0aGUgZ2l2ZW4gZGF0ZVxuICogICAgIGRhdGUuZ2V0VGltZSgpIC8vIFVzZSB0aGUgZGF0ZSB2YWx1ZSB0byBjcmVhdGUgYSBuZXcgZGF0ZVxuICogICApXG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHZhbHVlKSB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgZGF0ZS5jb25zdHJ1Y3Rvcih2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGNvbnN0cnVjdEZyb207XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgYWRkTWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgTWlsbGlzZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiBtaWxsaXNlY29uZHMgdG8gYmUgYWRkZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIG1pbGxpc2Vjb25kcyBhZGRlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgNzUwIG1pbGxpc2Vjb25kcyB0byAxMCBKdWx5IDIwMTQgMTI6NDU6MzAuMDAwOlxuICogY29uc3QgcmVzdWx0ID0gYWRkTWlsbGlzZWNvbmRzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgNDUsIDMwLCAwKSwgNzUwKVxuICogLy89XHUwMDNlIFRodSBKdWwgMTAgMjAxNCAxMjo0NTozMC43NTBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZE1pbGxpc2Vjb25kcyhkYXRlLCBhbW91bnQpIHtcbiAgY29uc3QgdGltZXN0YW1wID0gK3RvRGF0ZShkYXRlKTtcbiAgcmV0dXJuIGNvbnN0cnVjdEZyb20oZGF0ZSwgdGltZXN0YW1wICsgYW1vdW50KTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGRNaWxsaXNlY29uZHM7XG4iLCAiaW1wb3J0IHsgYWRkTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vYWRkTWlsbGlzZWNvbmRzLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZFNlY29uZHNcbiAqIEBjYXRlZ29yeSBTZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIHNlY29uZHMgdG8gYmUgYWRkZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIHNlY29uZHMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDMwIHNlY29uZHMgdG8gMTAgSnVseSAyMDE0IDEyOjQ1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gYWRkU2Vjb25kcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDQ1LCAwKSwgMzApXG4gKiAvLz1cdTAwM2UgVGh1IEp1bCAxMCAyMDE0IDEyOjQ1OjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRTZWNvbmRzKGRhdGUsIGFtb3VudCkge1xuICByZXR1cm4gYWRkTWlsbGlzZWNvbmRzKGRhdGUsIGFtb3VudCAqIDEwMDApO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGFkZFNlY29uZHM7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgIi8qKlxuICogQG5hbWUgY29uc3RydWN0RnJvbVxuICogQGNhdGVnb3J5IEdlbmVyaWMgSGVscGVyc1xuICogQHN1bW1hcnkgQ29uc3RydWN0cyBhIGRhdGUgdXNpbmcgdGhlIHJlZmVyZW5jZSBkYXRlIGFuZCB0aGUgdmFsdWVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBmdW5jdGlvbiBjb25zdHJ1Y3RzIGEgbmV3IGRhdGUgdXNpbmcgdGhlIGNvbnN0cnVjdG9yIGZyb20gdGhlIHJlZmVyZW5jZVxuICogZGF0ZSBhbmQgdGhlIGdpdmVuIHZhbHVlLiBJdCBoZWxwcyB0byBidWlsZCBnZW5lcmljIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdFxuICogZGF0ZSBleHRlbnNpb25zLlxuICpcbiAqIEl0IGRlZmF1bHRzIHRvIGBEYXRlYCBpZiB0aGUgcGFzc2VkIHJlZmVyZW5jZSBkYXRlIGlzIGEgbnVtYmVyIG9yIGEgc3RyaW5nLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIHJlZmVyZW5jZSBkYXRlIHRvIHRha2UgY29uc3RydWN0b3IgZnJvbVxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNyZWF0ZSB0aGUgZGF0ZVxuICpcbiAqIEByZXR1cm5zIERhdGUgaW5pdGlhbGl6ZWQgdXNpbmcgdGhlIGdpdmVuIGRhdGUgYW5kIHZhbHVlXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tICdkYXRlLWZucydcbiAqXG4gKiAvLyBBIGZ1bmN0aW9uIHRoYXQgY2xvbmVzIGEgZGF0ZSBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCB0eXBlXG4gKiBmdW5jdGlvbiBjbG9uZURhdGVcdTAwM2NEYXRlVHlwZSBleHRlbmRzIERhdGUoZGF0ZTogRGF0ZVR5cGUpOiBEYXRlVHlwZSB7XG4gKiAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKFxuICogICAgIGRhdGUsIC8vIFVzZSBjb250cnVzdG9yIGZyb20gdGhlIGdpdmVuIGRhdGVcbiAqICAgICBkYXRlLmdldFRpbWUoKSAvLyBVc2UgdGhlIGRhdGUgdmFsdWUgdG8gY3JlYXRlIGEgbmV3IGRhdGVcbiAqICAgKVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RnJvbShkYXRlLCB2YWx1ZSkge1xuICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gbmV3IGRhdGUuY29uc3RydWN0b3IodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBjb25zdHJ1Y3RGcm9tO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZERheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIGRheXMgdG8gYmUgYWRkZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheXMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDEwIGRheXMgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZERheXMobmV3IERhdGUoMjAxNCwgOCwgMSksIDEwKVxuICogLy89XHUwMDNlIFRodSBTZXAgMTEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkRGF5cyhkYXRlLCBhbW91bnQpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGlmIChpc05hTihhbW91bnQpKSByZXR1cm4gY29uc3RydWN0RnJvbShkYXRlLCBOYU4pO1xuICBpZiAoIWFtb3VudCkge1xuICAgIC8vIElmIDAgZGF5cywgbm8tb3AgdG8gYXZvaWQgY2hhbmdpbmcgdGltZXMgaW4gdGhlIGhvdXIgYmVmb3JlIGVuZCBvZiBEU1RcbiAgICByZXR1cm4gX2RhdGU7XG4gIH1cbiAgX2RhdGUuc2V0RGF0ZShfZGF0ZS5nZXREYXRlKCkgKyBhbW91bnQpO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkRGF5cztcbiIsICJpbXBvcnQgeyBhZGREYXlzIH0gZnJvbSBcIi4vYWRkRGF5cy5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBhZGRXZWVrc1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHdlZWtzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHdlZWsgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiB3ZWVrcyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgd2Vla3MgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDQgd2Vla3MgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZFdlZWtzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCA0KVxuICogLy89XHUwMDNlIE1vbiBTZXAgMjkgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkV2Vla3MoZGF0ZSwgYW1vdW50KSB7XG4gIGNvbnN0IGRheXMgPSBhbW91bnQgKiA3O1xuICByZXR1cm4gYWRkRGF5cyhkYXRlLCBkYXlzKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGRXZWVrcztcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGdldERhdGVcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGdpdmVuIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgZGF5IG9mIG1vbnRoXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIGRheSBvZiB0aGUgbW9udGggaXMgMjkgRmVicnVhcnkgMjAxMj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldERhdGUobmV3IERhdGUoMjAxMiwgMSwgMjkpKVxuICogLy89XHUwMDNlIDI5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRlKGRhdGUpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGNvbnN0IGRheU9mTW9udGggPSBfZGF0ZS5nZXREYXRlKCk7XG4gIHJldHVybiBkYXlPZk1vbnRoO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGdldERhdGU7XG4iLCAiLyoqXG4gKiBAbW9kdWxlIGNvbnN0YW50c1xuICogQHN1bW1hcnkgVXNlZnVsIGNvbnN0YW50c1xuICogQGRlc2NyaXB0aW9uXG4gKiBDb2xsZWN0aW9uIG9mIHVzZWZ1bCBkYXRlIGNvbnN0YW50cy5cbiAqXG4gKiBUaGUgY29uc3RhbnRzIGNvdWxkIGJlIGltcG9ydGVkIGZyb20gYGRhdGUtZm5zL2NvbnN0YW50c2A6XG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IG1heFRpbWUsIG1pblRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogZnVuY3Rpb24gaXNBbGxvd2VkVGltZSh0aW1lKSB7XG4gKiAgIHJldHVybiB0aW1lIFx1MDAzYz0gbWF4VGltZSBcdTAwMjZcdTAwMjYgdGltZSBcdTAwM2U9IG1pblRpbWU7XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgZGF5c0luV2Vla1xuICogQHN1bW1hcnkgRGF5cyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5XZWVrID0gNztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIGRheXNJblllYXJcbiAqIEBzdW1tYXJ5IERheXMgaW4gMSB5ZWFyLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSG93IG1hbnkgZGF5cyBpbiBhIHllYXIuXG4gKlxuICogT25lIHllYXJzIGVxdWFscyAzNjUuMjQyNSBkYXlzIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpcbiAqXG4gKiBcdTAwM2UgTGVhcCB5ZWFyIG9jY3VyZXMgZXZlcnkgNCB5ZWFycywgZXhjZXB0IGZvciB5ZWFycyB0aGF0IGFyZSBkaXZpc2FibGUgYnkgMTAwIGFuZCBub3QgZGl2aXNhYmxlIGJ5IDQwMC5cbiAqIFx1MDAzZSAxIG1lYW4geWVhciA9ICgzNjUrMS80LTEvMTAwKzEvNDAwKSBkYXlzID0gMzY1LjI0MjUgZGF5c1xuICovXG5leHBvcnQgY29uc3QgZGF5c0luWWVhciA9IDM2NS4yNDI1O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWF4VGltZVxuICogQHN1bW1hcnkgTWF4aW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IG1heFRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogY29uc3QgaXNWYWxpZCA9IDg2NDAwMDAwMDAwMDAwMDEgXHUwMDNjPSBtYXhUaW1lO1xuICogLy89XHUwMDNlIGZhbHNlXG4gKlxuICogbmV3IERhdGUoODY0MDAwMDAwMDAwMDAwMSk7XG4gKiAvLz1cdTAwM2UgSW52YWxpZCBEYXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtYXhUaW1lID0gTWF0aC5wb3coMTAsIDgpICogMjQgKiA2MCAqIDYwICogMTAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pblRpbWVcbiAqIEBzdW1tYXJ5IE1pbmltdW0gYWxsb3dlZCB0aW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBtaW5UaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGNvbnN0IGlzVmFsaWQgPSAtODY0MDAwMDAwMDAwMDAwMSBcdTAwM2U9IG1pblRpbWU7XG4gKiAvLz1cdTAwM2UgZmFsc2VcbiAqXG4gKiBuZXcgRGF0ZSgtODY0MDAwMDAwMDAwMDAwMSlcbiAqIC8vPVx1MDAzZSBJbnZhbGlkIERhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1pblRpbWUgPSAtbWF4VGltZTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luV2Vla1xuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luV2VlayA9IDYwNDgwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luRGF5XG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbkRheSA9IDg2NDAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5NaW51dGVcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIG1pbnV0ZVxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5NaW51dGUgPSA2MDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luSG91clxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgaG91clxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5Ib3VyID0gMzYwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luU2Vjb25kXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBzZWNvbmRcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luU2Vjb25kID0gMTAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJblllYXJcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luWWVhciA9IDUyNTYwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbk1vbnRoXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgbW9udGguXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5Nb250aCA9IDQzMjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luRGF5XG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luRGF5ID0gMTQ0MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbkhvdXJcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBob3VyLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luSG91ciA9IDYwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbW9udGhzSW5RdWFydGVyXG4gKiBAc3VtbWFyeSBNb250aHMgaW4gMSBxdWFydGVyLlxuICovXG5leHBvcnQgY29uc3QgbW9udGhzSW5RdWFydGVyID0gMztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1vbnRoc0luWWVhclxuICogQHN1bW1hcnkgTW9udGhzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1vbnRoc0luWWVhciA9IDEyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgcXVhcnRlcnNJblllYXJcbiAqIEBzdW1tYXJ5IFF1YXJ0ZXJzIGluIDEgeWVhclxuICovXG5leHBvcnQgY29uc3QgcXVhcnRlcnNJblllYXIgPSA0O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luSG91clxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIGhvdXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5Ib3VyID0gMzYwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbk1pbnV0ZVxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIG1pbnV0ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbk1pbnV0ZSA9IDYwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luRGF5XG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luRGF5ID0gc2Vjb25kc0luSG91ciAqIDI0O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luV2Vla1xuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5XZWVrID0gc2Vjb25kc0luRGF5ICogNztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJblllYXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luWWVhciA9IHNlY29uZHNJbkRheSAqIGRheXNJblllYXI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5Nb250aFxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIG1vbnRoXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5Nb250aCA9IHNlY29uZHNJblllYXIgLyAxMjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJblF1YXJ0ZXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBxdWFydGVyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luUXVhcnRlciA9IHNlY29uZHNJbk1vbnRoICogMztcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAibGV0IGRlZmF1bHRPcHRpb25zID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0T3B0aW9ucygpIHtcbiAgcmV0dXJuIGRlZmF1bHRPcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RGVmYXVsdE9wdGlvbnMobmV3T3B0aW9ucykge1xuICBkZWZhdWx0T3B0aW9ucyA9IG5ld09wdGlvbnM7XG59XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi9fbGliL2RlZmF1bHRPcHRpb25zLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgc3RhcnRPZldlZWt9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBzdGFydE9mV2Vla1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgc3RhcnQgb2YgYSB3ZWVrXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89XHUwMDNlIFN1biBBdWcgMzEgMjAxNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0aGUgd2VlayBzdGFydHMgb24gTW9uZGF5LCB0aGUgc3RhcnQgb2YgdGhlIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApLCB7IHdlZWtTdGFydHNPbjogMSB9KVxuICogLy89XHUwMDNlIE1vbiBTZXAgMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRPZldlZWsoZGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIGNvbnN0IHdlZWtTdGFydHNPbiA9XG4gICAgb3B0aW9ucz8ud2Vla1N0YXJ0c09uID8/XG4gICAgb3B0aW9ucz8ubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24gPz9cbiAgICBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24gPz9cbiAgICBkZWZhdWx0T3B0aW9ucy5sb2NhbGU/Lm9wdGlvbnM/LndlZWtTdGFydHNPbiA/P1xuICAgIDA7XG5cbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGNvbnN0IGRheSA9IF9kYXRlLmdldERheSgpO1xuICBjb25zdCBkaWZmID0gKGRheSBcdTAwM2Mgd2Vla1N0YXJ0c09uID8gNyA6IDApICsgZGF5IC0gd2Vla1N0YXJ0c09uO1xuXG4gIF9kYXRlLnNldERhdGUoX2RhdGUuZ2V0RGF0ZSgpIC0gZGlmZik7XG4gIF9kYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3RhcnRPZldlZWs7XG4iLCAiLyoqXG4gKiBAbmFtZSBjb25zdHJ1Y3RGcm9tXG4gKiBAY2F0ZWdvcnkgR2VuZXJpYyBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb25zdHJ1Y3RzIGEgZGF0ZSB1c2luZyB0aGUgcmVmZXJlbmNlIGRhdGUgYW5kIHRoZSB2YWx1ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGZ1bmN0aW9uIGNvbnN0cnVjdHMgYSBuZXcgZGF0ZSB1c2luZyB0aGUgY29uc3RydWN0b3IgZnJvbSB0aGUgcmVmZXJlbmNlXG4gKiBkYXRlIGFuZCB0aGUgZ2l2ZW4gdmFsdWUuIEl0IGhlbHBzIHRvIGJ1aWxkIGdlbmVyaWMgZnVuY3Rpb25zIHRoYXQgYWNjZXB0XG4gKiBkYXRlIGV4dGVuc2lvbnMuXG4gKlxuICogSXQgZGVmYXVsdHMgdG8gYERhdGVgIGlmIHRoZSBwYXNzZWQgcmVmZXJlbmNlIGRhdGUgaXMgYSBudW1iZXIgb3IgYSBzdHJpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgcmVmZXJlbmNlIGRhdGUgdG8gdGFrZSBjb25zdHJ1Y3RvciBmcm9tXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY3JlYXRlIHRoZSBkYXRlXG4gKlxuICogQHJldHVybnMgRGF0ZSBpbml0aWFsaXplZCB1c2luZyB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdmFsdWVcbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gJ2RhdGUtZm5zJ1xuICpcbiAqIC8vIEEgZnVuY3Rpb24gdGhhdCBjbG9uZXMgYSBkYXRlIHByZXNlcnZpbmcgdGhlIG9yaWdpbmFsIHR5cGVcbiAqIGZ1bmN0aW9uIGNsb25lRGF0ZVx1MDAzY0RhdGVUeXBlIGV4dGVuZHMgRGF0ZShkYXRlOiBEYXRlVHlwZSk6IERhdGVUeXBlIHtcbiAqICAgcmV0dXJuIGNvbnN0cnVjdEZyb20oXG4gKiAgICAgZGF0ZSwgLy8gVXNlIGNvbnRydXN0b3IgZnJvbSB0aGUgZ2l2ZW4gZGF0ZVxuICogICAgIGRhdGUuZ2V0VGltZSgpIC8vIFVzZSB0aGUgZGF0ZSB2YWx1ZSB0byBjcmVhdGUgYSBuZXcgZGF0ZVxuICogICApXG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHZhbHVlKSB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgZGF0ZS5jb25zdHJ1Y3Rvcih2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGNvbnN0cnVjdEZyb207XG4iLCAiaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5pbXBvcnQgeyBzdGFydE9mV2VlayB9IGZyb20gXCIuL3N0YXJ0T2ZXZWVrLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi9fbGliL2RlZmF1bHRPcHRpb25zLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgZ2V0V2Vla1llYXJ9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBnZXRXZWVrWWVhclxuICogQGNhdGVnb3J5IFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIGV4YWN0IGNhbGN1bGF0aW9uIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZlxuICogYG9wdGlvbnMud2Vla1N0YXJ0c09uYCAod2hpY2ggaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWspXG4gKiBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAod2hpY2ggaXMgdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW5cbiAqIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB3ZWVrLW51bWJlcmluZyB5ZWFyKVxuICpcbiAqIFdlZWsgbnVtYmVyaW5nOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZWVrI1RoZV9JU09fd2Vla19kYXRlX3N5c3RlbVxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGdpdmVuIGRhdGVcbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhclxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDI2IERlY2VtYmVyIDIwMDQgd2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5ncz9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWtZZWFyKG5ldyBEYXRlKDIwMDQsIDExLCAyNikpXG4gKiAvLz1cdTAwM2UgMjAwNVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDI2IERlY2VtYmVyIDIwMDQgaWYgd2VlayBzdGFydHMgb24gU2F0dXJkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrWWVhcihuZXcgRGF0ZSgyMDA0LCAxMSwgMjYpLCB7IHdlZWtTdGFydHNPbjogNiB9KVxuICogLy89XHUwMDNlIDIwMDRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggd2VlayBudW1iZXJpbmcgeWVhciBpcyAyNiBEZWNlbWJlciAyMDA0IGlmIHRoZSBmaXJzdCB3ZWVrIGNvbnRhaW5zIDQgSmFudWFyeT9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWtZZWFyKG5ldyBEYXRlKDIwMDQsIDExLCAyNiksIHsgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiA0IH0pXG4gKiAvLz1cdTAwM2UgMjAwNFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2Vla1llYXIoZGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgY29uc3QgeWVhciA9IF9kYXRlLmdldEZ1bGxZZWFyKCk7XG5cbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICBjb25zdCBmaXJzdFdlZWtDb250YWluc0RhdGUgPVxuICAgIG9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIG9wdGlvbnM/LmxvY2FsZT8ub3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgZGVmYXVsdE9wdGlvbnMubG9jYWxlPy5vcHRpb25zPy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICAxO1xuXG4gIGNvbnN0IGZpcnN0V2Vla09mTmV4dFllYXIgPSBjb25zdHJ1Y3RGcm9tKGRhdGUsIDApO1xuICBmaXJzdFdlZWtPZk5leHRZZWFyLnNldEZ1bGxZZWFyKHllYXIgKyAxLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWtPZk5leHRZZWFyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBjb25zdCBzdGFydE9mTmV4dFllYXIgPSBzdGFydE9mV2VlayhmaXJzdFdlZWtPZk5leHRZZWFyLCBvcHRpb25zKTtcblxuICBjb25zdCBmaXJzdFdlZWtPZlRoaXNZZWFyID0gY29uc3RydWN0RnJvbShkYXRlLCAwKTtcbiAgZmlyc3RXZWVrT2ZUaGlzWWVhci5zZXRGdWxsWWVhcih5ZWFyLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWtPZlRoaXNZZWFyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBjb25zdCBzdGFydE9mVGhpc1llYXIgPSBzdGFydE9mV2VlayhmaXJzdFdlZWtPZlRoaXNZZWFyLCBvcHRpb25zKTtcblxuICBpZiAoX2RhdGUuZ2V0VGltZSgpIFx1MDAzZT0gc3RhcnRPZk5leHRZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyICsgMTtcbiAgfSBlbHNlIGlmIChfZGF0ZS5nZXRUaW1lKCkgXHUwMDNlPSBzdGFydE9mVGhpc1llYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHllYXIgLSAxO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZ2V0V2Vla1llYXI7XG4iLCAiaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5pbXBvcnQgeyBnZXRXZWVrWWVhciB9IGZyb20gXCIuL2dldFdlZWtZZWFyLm1qc1wiO1xuaW1wb3J0IHsgc3RhcnRPZldlZWsgfSBmcm9tIFwiLi9zdGFydE9mV2Vlay5tanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4vX2xpYi9kZWZhdWx0T3B0aW9ucy5tanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIHN0YXJ0T2ZXZWVrWWVhcn0gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZXZWVrWWVhclxuICogQGNhdGVnb3J5IFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIuXG4gKiBUaGUgZXhhY3QgY2FsY3VsYXRpb24gZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mXG4gKiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gICh3aGljaCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlaylcbiAqIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgICh3aGljaCBpcyB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpblxuICogdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIpXG4gKlxuICogV2VlayBudW1iZXJpbmc6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlZWsjVGhlX0lTT193ZWVrX2RhdGVfc3lzdGVtXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIHN0YXJ0IG9mIGEgd2Vlay1udW1iZXJpbmcgeWVhclxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYW4gYSB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciAyIEp1bHkgMjAwNSB3aXRoIGRlZmF1bHQgc2V0dGluZ3M6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2Vla1llYXIobmV3IERhdGUoMjAwNSwgNiwgMikpXG4gKiAvLz1cdTAwM2UgU3VuIERlYyAyNiAyMDA0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIDIgSnVseSAyMDA1XG4gKiAvLyBpZiBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB3ZWVrXG4gKiAvLyBhbmQgNCBKYW51YXJ5IGlzIGFsd2F5cyBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhcjpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrWWVhcihuZXcgRGF0ZSgyMDA1LCA2LCAyKSwge1xuICogICB3ZWVrU3RhcnRzT246IDEsXG4gKiAgIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNFxuICogfSlcbiAqIC8vPVx1MDAzZSBNb24gSmFuIDAzIDIwMDUgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0T2ZXZWVrWWVhcihkYXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgY29uc3QgZmlyc3RXZWVrQ29udGFpbnNEYXRlID1cbiAgICBvcHRpb25zPy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICBvcHRpb25zPy5sb2NhbGU/Lm9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIGRlZmF1bHRPcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIGRlZmF1bHRPcHRpb25zLmxvY2FsZT8ub3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgMTtcblxuICBjb25zdCB5ZWFyID0gZ2V0V2Vla1llYXIoZGF0ZSwgb3B0aW9ucyk7XG4gIGNvbnN0IGZpcnN0V2VlayA9IGNvbnN0cnVjdEZyb20oZGF0ZSwgMCk7XG4gIGZpcnN0V2Vlay5zZXRGdWxsWWVhcih5ZWFyLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWsuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIGNvbnN0IF9kYXRlID0gc3RhcnRPZldlZWsoZmlyc3RXZWVrLCBvcHRpb25zKTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHN0YXJ0T2ZXZWVrWWVhcjtcbiIsICJpbXBvcnQgeyBtaWxsaXNlY29uZHNJbldlZWsgfSBmcm9tIFwiLi9jb25zdGFudHMubWpzXCI7XG5pbXBvcnQgeyBzdGFydE9mV2VlayB9IGZyb20gXCIuL3N0YXJ0T2ZXZWVrLm1qc1wiO1xuaW1wb3J0IHsgc3RhcnRPZldlZWtZZWFyIH0gZnJvbSBcIi4vc3RhcnRPZldlZWtZZWFyLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgZ2V0V2Vla30gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIGdldFdlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbG9jYWwgd2VlayBpbmRleCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbG9jYWwgd2VlayBpbmRleCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSBleGFjdCBjYWxjdWxhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2ZcbiAqIGBvcHRpb25zLndlZWtTdGFydHNPbmAgKHdoaWNoIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrKVxuICogYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKHdoaWNoIGlzIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluXG4gKiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhcilcbiAqXG4gKiBXZWVrIG51bWJlcmluZzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VlayNUaGVfSVNPX3dlZWtfZGF0ZV9zeXN0ZW1cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBnaXZlbiBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgd2Vla1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG9mIHRoZSBsb2NhbCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDIgSmFudWFyeSAyMDA1IHdpdGggZGVmYXVsdCBvcHRpb25zP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2VlayhuZXcgRGF0ZSgyMDA1LCAwLCAyKSlcbiAqIC8vPVx1MDAzZSAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgb2YgdGhlIGxvY2FsIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMiBKYW51YXJ5IDIwMDUsXG4gKiAvLyBpZiBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayxcbiAqIC8vIGFuZCB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhciBhbHdheXMgY29udGFpbnMgNCBKYW51YXJ5P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2VlayhuZXcgRGF0ZSgyMDA1LCAwLCAyKSwge1xuICogICB3ZWVrU3RhcnRzT246IDEsXG4gKiAgIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNFxuICogfSlcbiAqIC8vPVx1MDAzZSA1M1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXZWVrKGRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGNvbnN0IGRpZmYgPSArc3RhcnRPZldlZWsoX2RhdGUsIG9wdGlvbnMpIC0gK3N0YXJ0T2ZXZWVrWWVhcihfZGF0ZSwgb3B0aW9ucyk7XG5cbiAgLy8gUm91bmQgdGhlIG51bWJlciBvZiB3ZWVrcyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIGJlY2F1c2UgdGhlIG51bWJlciBvZlxuICAvLyBtaWxsaXNlY29uZHMgaW4gYSB3ZWVrIGlzIG5vdCBjb25zdGFudCAoZS5nLiBpdCdzIGRpZmZlcmVudCBpbiB0aGUgd2VlayBvZlxuICAvLyB0aGUgZGF5bGlnaHQgc2F2aW5nIHRpbWUgY2xvY2sgc2hpZnQpLlxuICByZXR1cm4gTWF0aC5yb3VuZChkaWZmIC8gbWlsbGlzZWNvbmRzSW5XZWVrKSArIDE7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZ2V0V2VlaztcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGdldE1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZ2l2ZW4gZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSBtb250aCBpbmRleCAoMC0xMSlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggbW9udGggaXMgMjkgRmVicnVhcnkgMjAxMj9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldE1vbnRoKG5ldyBEYXRlKDIwMTIsIDEsIDI5KSlcbiAqIC8vPVx1MDAzZSAxXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb250aChkYXRlKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCBtb250aCA9IF9kYXRlLmdldE1vbnRoKCk7XG4gIHJldHVybiBtb250aDtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBnZXRNb250aDtcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGdldFllYXJcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBnaXZlbiBkYXRlXG4gKlxuICogQHJldHVybnMgVGhlIHllYXJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggeWVhciBpcyAyIEp1bHkgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFllYXIobmV3IERhdGUoMjAxNCwgNiwgMikpXG4gKiAvLz1cdTAwM2UgMjAxNFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0WWVhcihkYXRlKSB7XG4gIHJldHVybiB0b0RhdGUoZGF0ZSkuZ2V0RnVsbFllYXIoKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBnZXRZZWFyO1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgc3RhcnRPZkRheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgZGF5IGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSBkYXkgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBvcmlnaW5hbCBkYXRlXG4gKlxuICogQHJldHVybnMgVGhlIHN0YXJ0IG9mIGEgZGF5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIGRheSBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZEYXkobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPVx1MDAzZSBUdWUgU2VwIDAyIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0T2ZEYXkoZGF0ZSkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgX2RhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBzdGFydE9mRGF5O1xuIiwgImltcG9ydCB7IHN0YXJ0T2ZEYXkgfSBmcm9tIFwiLi9zdGFydE9mRGF5Lm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGlzU2FtZURheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIGRheSAoYW5kIHllYXIgYW5kIG1vbnRoKT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFyZSB0aGUgZ2l2ZW4gZGF0ZXMgaW4gdGhlIHNhbWUgZGF5IChhbmQgeWVhciBhbmQgbW9udGgpP1xuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlTGVmdCAtIFRoZSBmaXJzdCBkYXRlIHRvIGNoZWNrXG4gKiBAcGFyYW0gZGF0ZVJpZ2h0IC0gVGhlIHNlY29uZCBkYXRlIHRvIGNoZWNrXG5cbiAqIEByZXR1cm5zIFRoZSBkYXRlcyBhcmUgaW4gdGhlIHNhbWUgZGF5IChhbmQgeWVhciBhbmQgbW9udGgpXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSA0IFNlcHRlbWJlciAwNjowMDowMCBhbmQgNCBTZXB0ZW1iZXIgMTg6MDA6MDAgaW4gdGhlIHNhbWUgZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDQsIDYsIDApLCBuZXcgRGF0ZSgyMDE0LCA4LCA0LCAxOCwgMCkpXG4gKiAvLz1cdTAwM2UgdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIgYW5kIDQgT2N0b2JlciBpbiB0aGUgc2FtZSBkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBpc1NhbWVEYXkobmV3IERhdGUoMjAxNCwgOCwgNCksIG5ldyBEYXRlKDIwMTQsIDksIDQpKVxuICogLy89XHUwMDNlIGZhbHNlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFyZSA0IFNlcHRlbWJlciwgMjAxNCBhbmQgNCBTZXB0ZW1iZXIsIDIwMTUgaW4gdGhlIHNhbWUgZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDQpLCBuZXcgRGF0ZSgyMDE1LCA4LCA0KSlcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTYW1lRGF5KGRhdGVMZWZ0LCBkYXRlUmlnaHQpIHtcbiAgY29uc3QgZGF0ZUxlZnRTdGFydE9mRGF5ID0gc3RhcnRPZkRheShkYXRlTGVmdCk7XG4gIGNvbnN0IGRhdGVSaWdodFN0YXJ0T2ZEYXkgPSBzdGFydE9mRGF5KGRhdGVSaWdodCk7XG5cbiAgcmV0dXJuICtkYXRlTGVmdFN0YXJ0T2ZEYXkgPT09ICtkYXRlUmlnaHRTdGFydE9mRGF5O1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGlzU2FtZURheTtcbiIsICJpbXBvcnQgeyBpc1NhbWVEYXksIGdldFllYXIsIGdldE1vbnRoLCBnZXREYXRlIH0gZnJvbSBcIi4uL2RhdGUtZm5zL21vZC50c1wiO1xuXG5leHBvcnQgY29uc3QgZ2V0RWFjaExhdGVzdERhdGUgPSAoZGF0ZXM6IERhdGVbXSk6IERhdGVbXSA9PiB7XG4gIGNvbnN0IG1hcCA9IG5ldyBNYXA8YCR7bnVtYmVyfS0ke251bWJlcn0tJHtudW1iZXJ9YCwgRGF0ZT4oKTtcbiAgXG4gIGZvciAoY29uc3QgZGF0ZSBvZiBkYXRlcykge1xuICAgIGNvbnN0IGtleSA9IGAke2dldFllYXIoZGF0ZSl9LSR7Z2V0TW9udGgoZGF0ZSl9LSR7Z2V0RGF0ZShkYXRlKX1gIGFzIGNvbnN0O1xuICAgIGNvbnN0IHNhbWVEYXRlID0gbWFwLmdldChrZXkpO1xuICAgIGlmIChzYW1lRGF0ZSAmJiBzYW1lRGF0ZS5nZXRUaW1lKCkgPiBkYXRlLmdldFRpbWUoKSkgY29udGludWU7XG4gICAgbWFwLnNldChrZXksIGRhdGUpO1xuICB9XG4gIFxuICByZXR1cm4gWy4uLm1hcC52YWx1ZXMoKV07XG59O1xuICIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiLyoqXG4gKiBAbmFtZSBjb25zdHJ1Y3RGcm9tXG4gKiBAY2F0ZWdvcnkgR2VuZXJpYyBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb25zdHJ1Y3RzIGEgZGF0ZSB1c2luZyB0aGUgcmVmZXJlbmNlIGRhdGUgYW5kIHRoZSB2YWx1ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGZ1bmN0aW9uIGNvbnN0cnVjdHMgYSBuZXcgZGF0ZSB1c2luZyB0aGUgY29uc3RydWN0b3IgZnJvbSB0aGUgcmVmZXJlbmNlXG4gKiBkYXRlIGFuZCB0aGUgZ2l2ZW4gdmFsdWUuIEl0IGhlbHBzIHRvIGJ1aWxkIGdlbmVyaWMgZnVuY3Rpb25zIHRoYXQgYWNjZXB0XG4gKiBkYXRlIGV4dGVuc2lvbnMuXG4gKlxuICogSXQgZGVmYXVsdHMgdG8gYERhdGVgIGlmIHRoZSBwYXNzZWQgcmVmZXJlbmNlIGRhdGUgaXMgYSBudW1iZXIgb3IgYSBzdHJpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgcmVmZXJlbmNlIGRhdGUgdG8gdGFrZSBjb25zdHJ1Y3RvciBmcm9tXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY3JlYXRlIHRoZSBkYXRlXG4gKlxuICogQHJldHVybnMgRGF0ZSBpbml0aWFsaXplZCB1c2luZyB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdmFsdWVcbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gJ2RhdGUtZm5zJ1xuICpcbiAqIC8vIEEgZnVuY3Rpb24gdGhhdCBjbG9uZXMgYSBkYXRlIHByZXNlcnZpbmcgdGhlIG9yaWdpbmFsIHR5cGVcbiAqIGZ1bmN0aW9uIGNsb25lRGF0ZVx1MDAzY0RhdGVUeXBlIGV4dGVuZHMgRGF0ZShkYXRlOiBEYXRlVHlwZSk6IERhdGVUeXBlIHtcbiAqICAgcmV0dXJuIGNvbnN0cnVjdEZyb20oXG4gKiAgICAgZGF0ZSwgLy8gVXNlIGNvbnRydXN0b3IgZnJvbSB0aGUgZ2l2ZW4gZGF0ZVxuICogICAgIGRhdGUuZ2V0VGltZSgpIC8vIFVzZSB0aGUgZGF0ZSB2YWx1ZSB0byBjcmVhdGUgYSBuZXcgZGF0ZVxuICogICApXG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHZhbHVlKSB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgZGF0ZS5jb25zdHJ1Y3Rvcih2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGNvbnN0cnVjdEZyb207XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgYWRkRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgZGF5cyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5cyBhZGRlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMTAgZGF5cyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz1cdTAwM2UgVGh1IFNlcCAxMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGREYXlzKGRhdGUsIGFtb3VudCkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgaWYgKGlzTmFOKGFtb3VudCkpIHJldHVybiBjb25zdHJ1Y3RGcm9tKGRhdGUsIE5hTik7XG4gIGlmICghYW1vdW50KSB7XG4gICAgLy8gSWYgMCBkYXlzLCBuby1vcCB0byBhdm9pZCBjaGFuZ2luZyB0aW1lcyBpbiB0aGUgaG91ciBiZWZvcmUgZW5kIG9mIERTVFxuICAgIHJldHVybiBfZGF0ZTtcbiAgfVxuICBfZGF0ZS5zZXREYXRlKF9kYXRlLmdldERhdGUoKSArIGFtb3VudCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGREYXlzO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZE1vbnRoc1xuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtb250aHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbW9udGhzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgbW9udGhzIHRvIGJlIGFkZGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtb250aHMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDUgbW9udGhzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRNb250aHMobmV3IERhdGUoMjAxNCwgOCwgMSksIDUpXG4gKiAvLz1cdTAwM2UgU3VuIEZlYiAwMSAyMDE1IDAwOjAwOjAwXG4gKlxuICogLy8gQWRkIG9uZSBtb250aCB0byAzMCBKYW51YXJ5IDIwMjM6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRNb250aHMobmV3IERhdGUoMjAyMywgMCwgMzApLCAxKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMjggMjAyMyAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkTW9udGhzKGRhdGUsIGFtb3VudCkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgaWYgKGlzTmFOKGFtb3VudCkpIHJldHVybiBjb25zdHJ1Y3RGcm9tKGRhdGUsIE5hTik7XG4gIGlmICghYW1vdW50KSB7XG4gICAgLy8gSWYgMCBtb250aHMsIG5vLW9wIHRvIGF2b2lkIGNoYW5naW5nIHRpbWVzIGluIHRoZSBob3VyIGJlZm9yZSBlbmQgb2YgRFNUXG4gICAgcmV0dXJuIF9kYXRlO1xuICB9XG4gIGNvbnN0IGRheU9mTW9udGggPSBfZGF0ZS5nZXREYXRlKCk7XG5cbiAgLy8gVGhlIEpTIERhdGUgb2JqZWN0IHN1cHBvcnRzIGRhdGUgbWF0aCBieSBhY2NlcHRpbmcgb3V0LW9mLWJvdW5kcyB2YWx1ZXMgZm9yXG4gIC8vIG1vbnRoLCBkYXksIGV0Yy4gRm9yIGV4YW1wbGUsIG5ldyBEYXRlKDIwMjAsIDAsIDApIHJldHVybnMgMzEgRGVjIDIwMTkgYW5kXG4gIC8vIG5ldyBEYXRlKDIwMjAsIDEzLCAxKSByZXR1cm5zIDEgRmViIDIwMjEuICBUaGlzIGlzICphbG1vc3QqIHRoZSBiZWhhdmlvciB3ZVxuICAvLyB3YW50IGV4Y2VwdCB0aGF0IGRhdGVzIHdpbGwgd3JhcCBhcm91bmQgdGhlIGVuZCBvZiBhIG1vbnRoLCBtZWFuaW5nIHRoYXRcbiAgLy8gbmV3IERhdGUoMjAyMCwgMTMsIDMxKSB3aWxsIHJldHVybiAzIE1hciAyMDIxIG5vdCAyOCBGZWIgMjAyMSBhcyBkZXNpcmVkLiBTb1xuICAvLyB3ZSdsbCBkZWZhdWx0IHRvIHRoZSBlbmQgb2YgdGhlIGRlc2lyZWQgbW9udGggYnkgYWRkaW5nIDEgdG8gdGhlIGRlc2lyZWRcbiAgLy8gbW9udGggYW5kIHVzaW5nIGEgZGF0ZSBvZiAwIHRvIGJhY2sgdXAgb25lIGRheSB0byB0aGUgZW5kIG9mIHRoZSBkZXNpcmVkXG4gIC8vIG1vbnRoLlxuICBjb25zdCBlbmRPZkRlc2lyZWRNb250aCA9IGNvbnN0cnVjdEZyb20oZGF0ZSwgX2RhdGUuZ2V0VGltZSgpKTtcbiAgZW5kT2ZEZXNpcmVkTW9udGguc2V0TW9udGgoX2RhdGUuZ2V0TW9udGgoKSArIGFtb3VudCArIDEsIDApO1xuICBjb25zdCBkYXlzSW5Nb250aCA9IGVuZE9mRGVzaXJlZE1vbnRoLmdldERhdGUoKTtcbiAgaWYgKGRheU9mTW9udGggXHUwMDNlPSBkYXlzSW5Nb250aCkge1xuICAgIC8vIElmIHdlJ3JlIGFscmVhZHkgYXQgdGhlIGVuZCBvZiB0aGUgbW9udGgsIHRoZW4gdGhpcyBpcyB0aGUgY29ycmVjdCBkYXRlXG4gICAgLy8gYW5kIHdlJ3JlIGRvbmUuXG4gICAgcmV0dXJuIGVuZE9mRGVzaXJlZE1vbnRoO1xuICB9IGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSwgd2Ugbm93IGtub3cgdGhhdCBzZXR0aW5nIHRoZSBvcmlnaW5hbCBkYXktb2YtbW9udGggdmFsdWUgd29uJ3RcbiAgICAvLyBjYXVzZSBhbiBvdmVyZmxvdywgc28gc2V0IHRoZSBkZXNpcmVkIGRheS1vZi1tb250aC4gTm90ZSB0aGF0IHdlIGNhbid0XG4gICAgLy8ganVzdCBzZXQgdGhlIGRhdGUgb2YgYGVuZE9mRGVzaXJlZE1vbnRoYCBiZWNhdXNlIHRoYXQgb2JqZWN0IG1heSBoYXZlIGhhZFxuICAgIC8vIGl0cyB0aW1lIGNoYW5nZWQgaW4gdGhlIHVudXN1YWwgY2FzZSB3aGVyZSB3aGVyZSBhIERTVCB0cmFuc2l0aW9uIHdhcyBvblxuICAgIC8vIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGggYW5kIGl0cyBsb2NhbCB0aW1lIHdhcyBpbiB0aGUgaG91ciBza2lwcGVkIG9yXG4gICAgLy8gcmVwZWF0ZWQgbmV4dCB0byBhIERTVCB0cmFuc2l0aW9uLiAgU28gd2UgdXNlIGBkYXRlYCBpbnN0ZWFkIHdoaWNoIGlzXG4gICAgLy8gZ3VhcmFudGVlZCB0byBzdGlsbCBoYXZlIHRoZSBvcmlnaW5hbCB0aW1lLlxuICAgIF9kYXRlLnNldEZ1bGxZZWFyKFxuICAgICAgZW5kT2ZEZXNpcmVkTW9udGguZ2V0RnVsbFllYXIoKSxcbiAgICAgIGVuZE9mRGVzaXJlZE1vbnRoLmdldE1vbnRoKCksXG4gICAgICBkYXlPZk1vbnRoLFxuICAgICk7XG4gICAgcmV0dXJuIF9kYXRlO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkTW9udGhzO1xuIiwgImltcG9ydCB7IGFkZERheXMgfSBmcm9tIFwiLi9hZGREYXlzLm1qc1wiO1xuaW1wb3J0IHsgYWRkTW9udGhzIH0gZnJvbSBcIi4vYWRkTW9udGhzLm1qc1wiO1xuaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5pbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgYWRkXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBkdXJhdGlvbiAtIFRoZSBvYmplY3Qgd2l0aCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMgdG8gYmUgYWRkZWQuXG4gKlxuICogfCBLZXkgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCB5ZWFycyAgICAgICAgICB8IEFtb3VudCBvZiB5ZWFycyB0byBiZSBhZGRlZCAgICAgICAgfFxuICogfCBtb250aHMgICAgICAgICB8IEFtb3VudCBvZiBtb250aHMgdG8gYmUgYWRkZWQgICAgICAgfFxuICogfCB3ZWVrcyAgICAgICAgICB8IEFtb3VudCBvZiB3ZWVrcyB0byBiZSBhZGRlZCAgICAgICAgfFxuICogfCBkYXlzICAgICAgICAgICB8IEFtb3VudCBvZiBkYXlzIHRvIGJlIGFkZGVkICAgICAgICAgfFxuICogfCBob3VycyAgICAgICAgICB8IEFtb3VudCBvZiBob3VycyB0byBiZSBhZGRlZCAgICAgICAgfFxuICogfCBtaW51dGVzICAgICAgICB8IEFtb3VudCBvZiBtaW51dGVzIHRvIGJlIGFkZGVkICAgICAgfFxuICogfCBzZWNvbmRzICAgICAgICB8IEFtb3VudCBvZiBzZWNvbmRzIHRvIGJlIGFkZGVkICAgICAgfFxuICpcbiAqIEFsbCB2YWx1ZXMgZGVmYXVsdCB0byAwXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIHNlY29uZHMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIHRoZSBmb2xsb3dpbmcgZHVyYXRpb24gdG8gMSBTZXB0ZW1iZXIgMjAxNCwgMTA6MTk6NTBcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZChuZXcgRGF0ZSgyMDE0LCA4LCAxLCAxMCwgMTksIDUwKSwge1xuICogICB5ZWFyczogMixcbiAqICAgbW9udGhzOiA5LFxuICogICB3ZWVrczogMSxcbiAqICAgZGF5czogNyxcbiAqICAgaG91cnM6IDUsXFxcXC03XG4gKiAgIG1pbnV0ZXM6IDksXG4gKiAgIHNlY29uZHM6IDMwLFxuICogfSlcbiAqIC8vPVx1MDAzZSBUaHUgSnVuIDE1IDIwMTcgMTU6Mjk6MjBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZChkYXRlLCBkdXJhdGlvbikge1xuICBjb25zdCB7XG4gICAgeWVhcnMgPSAwLFxuICAgIG1vbnRocyA9IDAsXG4gICAgd2Vla3MgPSAwLFxuICAgIGRheXMgPSAwLFxuICAgIGhvdXJzID0gMCxcbiAgICBtaW51dGVzID0gMCxcbiAgICBzZWNvbmRzID0gMCxcbiAgfSA9IGR1cmF0aW9uO1xuXG4gIC8vIEFkZCB5ZWFycyBhbmQgbW9udGhzXG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCBkYXRlV2l0aE1vbnRocyA9XG4gICAgbW9udGhzIHx8IHllYXJzID8gYWRkTW9udGhzKF9kYXRlLCBtb250aHMgKyB5ZWFycyAqIDEyKSA6IF9kYXRlO1xuXG4gIC8vIEFkZCB3ZWVrcyBhbmQgZGF5c1xuICBjb25zdCBkYXRlV2l0aERheXMgPVxuICAgIGRheXMgfHwgd2Vla3MgPyBhZGREYXlzKGRhdGVXaXRoTW9udGhzLCBkYXlzICsgd2Vla3MgKiA3KSA6IGRhdGVXaXRoTW9udGhzO1xuXG4gIC8vIEFkZCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kc1xuICBjb25zdCBtaW51dGVzVG9BZGQgPSBtaW51dGVzICsgaG91cnMgKiA2MDtcbiAgY29uc3Qgc2Vjb25kc1RvQWRkID0gc2Vjb25kcyArIG1pbnV0ZXNUb0FkZCAqIDYwO1xuICBjb25zdCBtc1RvQWRkID0gc2Vjb25kc1RvQWRkICogMTAwMDtcbiAgY29uc3QgZmluYWxEYXRlID0gY29uc3RydWN0RnJvbShkYXRlLCBkYXRlV2l0aERheXMuZ2V0VGltZSgpICsgbXNUb0FkZCk7XG5cbiAgcmV0dXJuIGZpbmFsRGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGQ7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgIi8qKlxuICogQG5hbWUgY29uc3RydWN0RnJvbVxuICogQGNhdGVnb3J5IEdlbmVyaWMgSGVscGVyc1xuICogQHN1bW1hcnkgQ29uc3RydWN0cyBhIGRhdGUgdXNpbmcgdGhlIHJlZmVyZW5jZSBkYXRlIGFuZCB0aGUgdmFsdWVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBmdW5jdGlvbiBjb25zdHJ1Y3RzIGEgbmV3IGRhdGUgdXNpbmcgdGhlIGNvbnN0cnVjdG9yIGZyb20gdGhlIHJlZmVyZW5jZVxuICogZGF0ZSBhbmQgdGhlIGdpdmVuIHZhbHVlLiBJdCBoZWxwcyB0byBidWlsZCBnZW5lcmljIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdFxuICogZGF0ZSBleHRlbnNpb25zLlxuICpcbiAqIEl0IGRlZmF1bHRzIHRvIGBEYXRlYCBpZiB0aGUgcGFzc2VkIHJlZmVyZW5jZSBkYXRlIGlzIGEgbnVtYmVyIG9yIGEgc3RyaW5nLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIHJlZmVyZW5jZSBkYXRlIHRvIHRha2UgY29uc3RydWN0b3IgZnJvbVxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNyZWF0ZSB0aGUgZGF0ZVxuICpcbiAqIEByZXR1cm5zIERhdGUgaW5pdGlhbGl6ZWQgdXNpbmcgdGhlIGdpdmVuIGRhdGUgYW5kIHZhbHVlXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tICdkYXRlLWZucydcbiAqXG4gKiAvLyBBIGZ1bmN0aW9uIHRoYXQgY2xvbmVzIGEgZGF0ZSBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCB0eXBlXG4gKiBmdW5jdGlvbiBjbG9uZURhdGVcdTAwM2NEYXRlVHlwZSBleHRlbmRzIERhdGUoZGF0ZTogRGF0ZVR5cGUpOiBEYXRlVHlwZSB7XG4gKiAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKFxuICogICAgIGRhdGUsIC8vIFVzZSBjb250cnVzdG9yIGZyb20gdGhlIGdpdmVuIGRhdGVcbiAqICAgICBkYXRlLmdldFRpbWUoKSAvLyBVc2UgdGhlIGRhdGUgdmFsdWUgdG8gY3JlYXRlIGEgbmV3IGRhdGVcbiAqICAgKVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RnJvbShkYXRlLCB2YWx1ZSkge1xuICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gbmV3IGRhdGUuY29uc3RydWN0b3IodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBjb25zdHJ1Y3RGcm9tO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZE1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRvIGJlIGFkZGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaWxsaXNlY29uZHMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDc1MCBtaWxsaXNlY29uZHMgdG8gMTAgSnVseSAyMDE0IDEyOjQ1OjMwLjAwMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZE1pbGxpc2Vjb25kcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDQ1LCAzMCwgMCksIDc1MClcbiAqIC8vPVx1MDAzZSBUaHUgSnVsIDEwIDIwMTQgMTI6NDU6MzAuNzUwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRNaWxsaXNlY29uZHMoZGF0ZSwgYW1vdW50KSB7XG4gIGNvbnN0IHRpbWVzdGFtcCA9ICt0b0RhdGUoZGF0ZSk7XG4gIHJldHVybiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHRpbWVzdGFtcCArIGFtb3VudCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkTWlsbGlzZWNvbmRzO1xuIiwgIi8qKlxuICogQG1vZHVsZSBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IFVzZWZ1bCBjb25zdGFudHNcbiAqIEBkZXNjcmlwdGlvblxuICogQ29sbGVjdGlvbiBvZiB1c2VmdWwgZGF0ZSBjb25zdGFudHMuXG4gKlxuICogVGhlIGNvbnN0YW50cyBjb3VsZCBiZSBpbXBvcnRlZCBmcm9tIGBkYXRlLWZucy9jb25zdGFudHNgOlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBtYXhUaW1lLCBtaW5UaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGZ1bmN0aW9uIGlzQWxsb3dlZFRpbWUodGltZSkge1xuICogICByZXR1cm4gdGltZSBcdTAwM2M9IG1heFRpbWUgXHUwMDI2XHUwMDI2IHRpbWUgXHUwMDNlPSBtaW5UaW1lO1xuICogfVxuICogYGBgXG4gKi9cblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIGRheXNJbldlZWtcbiAqIEBzdW1tYXJ5IERheXMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3QgZGF5c0luV2VlayA9IDc7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBkYXlzSW5ZZWFyXG4gKiBAc3VtbWFyeSBEYXlzIGluIDEgeWVhci5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEhvdyBtYW55IGRheXMgaW4gYSB5ZWFyLlxuICpcbiAqIE9uZSB5ZWFycyBlcXVhbHMgMzY1LjI0MjUgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6XG4gKlxuICogXHUwMDNlIExlYXAgeWVhciBvY2N1cmVzIGV2ZXJ5IDQgeWVhcnMsIGV4Y2VwdCBmb3IgeWVhcnMgdGhhdCBhcmUgZGl2aXNhYmxlIGJ5IDEwMCBhbmQgbm90IGRpdmlzYWJsZSBieSA0MDAuXG4gKiBcdTAwM2UgMSBtZWFuIHllYXIgPSAoMzY1KzEvNC0xLzEwMCsxLzQwMCkgZGF5cyA9IDM2NS4yNDI1IGRheXNcbiAqL1xuZXhwb3J0IGNvbnN0IGRheXNJblllYXIgPSAzNjUuMjQyNTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1heFRpbWVcbiAqIEBzdW1tYXJ5IE1heGltdW0gYWxsb3dlZCB0aW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBtYXhUaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGNvbnN0IGlzVmFsaWQgPSA4NjQwMDAwMDAwMDAwMDAxIFx1MDAzYz0gbWF4VGltZTtcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICpcbiAqIG5ldyBEYXRlKDg2NDAwMDAwMDAwMDAwMDEpO1xuICogLy89XHUwMDNlIEludmFsaWQgRGF0ZVxuICovXG5leHBvcnQgY29uc3QgbWF4VGltZSA9IE1hdGgucG93KDEwLCA4KSAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW5UaW1lXG4gKiBAc3VtbWFyeSBNaW5pbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBjb25zdCBpc1ZhbGlkID0gLTg2NDAwMDAwMDAwMDAwMDEgXHUwMDNlPSBtaW5UaW1lO1xuICogLy89XHUwMDNlIGZhbHNlXG4gKlxuICogbmV3IERhdGUoLTg2NDAwMDAwMDAwMDAwMDEpXG4gKiAvLz1cdTAwM2UgSW52YWxpZCBEYXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtaW5UaW1lID0gLW1heFRpbWU7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbldlZWtcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbldlZWsgPSA2MDQ4MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkRheVxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5EYXkgPSA4NjQwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luTWludXRlXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBtaW51dGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luTWludXRlID0gNjAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkhvdXJcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIGhvdXJcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luSG91ciA9IDM2MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJblNlY29uZFxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgc2Vjb25kXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJblNlY29uZCA9IDEwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5ZZWFyXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJblllYXIgPSA1MjU2MDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5Nb250aFxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIG1vbnRoLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luTW9udGggPSA0MzIwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbkRheVxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbkRheSA9IDE0NDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5Ib3VyXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgaG91ci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbkhvdXIgPSA2MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1vbnRoc0luUXVhcnRlclxuICogQHN1bW1hcnkgTW9udGhzIGluIDEgcXVhcnRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1vbnRoc0luUXVhcnRlciA9IDM7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtb250aHNJblllYXJcbiAqIEBzdW1tYXJ5IE1vbnRocyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aHNJblllYXIgPSAxMjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHF1YXJ0ZXJzSW5ZZWFyXG4gKiBAc3VtbWFyeSBRdWFydGVycyBpbiAxIHllYXJcbiAqL1xuZXhwb3J0IGNvbnN0IHF1YXJ0ZXJzSW5ZZWFyID0gNDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbkhvdXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBob3VyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luSG91ciA9IDM2MDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5NaW51dGVcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBtaW51dGUuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5NaW51dGUgPSA2MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbkRheVxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbkRheSA9IHNlY29uZHNJbkhvdXIgKiAyNDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbldlZWtcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luV2VlayA9IHNlY29uZHNJbkRheSAqIDc7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5ZZWFyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJblllYXIgPSBzZWNvbmRzSW5EYXkgKiBkYXlzSW5ZZWFyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luTW9udGhcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBtb250aFxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luTW9udGggPSBzZWNvbmRzSW5ZZWFyIC8gMTI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5RdWFydGVyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgcXVhcnRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJblF1YXJ0ZXIgPSBzZWNvbmRzSW5Nb250aCAqIDM7XG4iLCAiaW1wb3J0IHsgYWRkTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vYWRkTWlsbGlzZWNvbmRzLm1qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5Ib3VyIH0gZnJvbSBcIi4vY29uc3RhbnRzLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZEhvdXJzXG4gKiBAY2F0ZWdvcnkgSG91ciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgaG91cnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgaG91cnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiBob3VycyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgaG91cnMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDIgaG91cnMgdG8gMTAgSnVseSAyMDE0IDIzOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gYWRkSG91cnMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDIzLCAwKSwgMilcbiAqIC8vPVx1MDAzZSBGcmkgSnVsIDExIDIwMTQgMDE6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZEhvdXJzKGRhdGUsIGFtb3VudCkge1xuICByZXR1cm4gYWRkTWlsbGlzZWNvbmRzKGRhdGUsIGFtb3VudCAqIG1pbGxpc2Vjb25kc0luSG91cik7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkSG91cnM7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgIi8qKlxuICogQG5hbWUgY29uc3RydWN0RnJvbVxuICogQGNhdGVnb3J5IEdlbmVyaWMgSGVscGVyc1xuICogQHN1bW1hcnkgQ29uc3RydWN0cyBhIGRhdGUgdXNpbmcgdGhlIHJlZmVyZW5jZSBkYXRlIGFuZCB0aGUgdmFsdWVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBmdW5jdGlvbiBjb25zdHJ1Y3RzIGEgbmV3IGRhdGUgdXNpbmcgdGhlIGNvbnN0cnVjdG9yIGZyb20gdGhlIHJlZmVyZW5jZVxuICogZGF0ZSBhbmQgdGhlIGdpdmVuIHZhbHVlLiBJdCBoZWxwcyB0byBidWlsZCBnZW5lcmljIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdFxuICogZGF0ZSBleHRlbnNpb25zLlxuICpcbiAqIEl0IGRlZmF1bHRzIHRvIGBEYXRlYCBpZiB0aGUgcGFzc2VkIHJlZmVyZW5jZSBkYXRlIGlzIGEgbnVtYmVyIG9yIGEgc3RyaW5nLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIHJlZmVyZW5jZSBkYXRlIHRvIHRha2UgY29uc3RydWN0b3IgZnJvbVxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNyZWF0ZSB0aGUgZGF0ZVxuICpcbiAqIEByZXR1cm5zIERhdGUgaW5pdGlhbGl6ZWQgdXNpbmcgdGhlIGdpdmVuIGRhdGUgYW5kIHZhbHVlXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tICdkYXRlLWZucydcbiAqXG4gKiAvLyBBIGZ1bmN0aW9uIHRoYXQgY2xvbmVzIGEgZGF0ZSBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCB0eXBlXG4gKiBmdW5jdGlvbiBjbG9uZURhdGVcdTAwM2NEYXRlVHlwZSBleHRlbmRzIERhdGUoZGF0ZTogRGF0ZVR5cGUpOiBEYXRlVHlwZSB7XG4gKiAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKFxuICogICAgIGRhdGUsIC8vIFVzZSBjb250cnVzdG9yIGZyb20gdGhlIGdpdmVuIGRhdGVcbiAqICAgICBkYXRlLmdldFRpbWUoKSAvLyBVc2UgdGhlIGRhdGUgdmFsdWUgdG8gY3JlYXRlIGEgbmV3IGRhdGVcbiAqICAgKVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RnJvbShkYXRlLCB2YWx1ZSkge1xuICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gbmV3IGRhdGUuY29uc3RydWN0b3IodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBjb25zdHJ1Y3RGcm9tO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZE1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRvIGJlIGFkZGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaWxsaXNlY29uZHMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDc1MCBtaWxsaXNlY29uZHMgdG8gMTAgSnVseSAyMDE0IDEyOjQ1OjMwLjAwMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZE1pbGxpc2Vjb25kcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDQ1LCAzMCwgMCksIDc1MClcbiAqIC8vPVx1MDAzZSBUaHUgSnVsIDEwIDIwMTQgMTI6NDU6MzAuNzUwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRNaWxsaXNlY29uZHMoZGF0ZSwgYW1vdW50KSB7XG4gIGNvbnN0IHRpbWVzdGFtcCA9ICt0b0RhdGUoZGF0ZSk7XG4gIHJldHVybiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHRpbWVzdGFtcCArIGFtb3VudCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkTWlsbGlzZWNvbmRzO1xuIiwgIi8qKlxuICogQG1vZHVsZSBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IFVzZWZ1bCBjb25zdGFudHNcbiAqIEBkZXNjcmlwdGlvblxuICogQ29sbGVjdGlvbiBvZiB1c2VmdWwgZGF0ZSBjb25zdGFudHMuXG4gKlxuICogVGhlIGNvbnN0YW50cyBjb3VsZCBiZSBpbXBvcnRlZCBmcm9tIGBkYXRlLWZucy9jb25zdGFudHNgOlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBtYXhUaW1lLCBtaW5UaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGZ1bmN0aW9uIGlzQWxsb3dlZFRpbWUodGltZSkge1xuICogICByZXR1cm4gdGltZSBcdTAwM2M9IG1heFRpbWUgXHUwMDI2XHUwMDI2IHRpbWUgXHUwMDNlPSBtaW5UaW1lO1xuICogfVxuICogYGBgXG4gKi9cblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIGRheXNJbldlZWtcbiAqIEBzdW1tYXJ5IERheXMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3QgZGF5c0luV2VlayA9IDc7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBkYXlzSW5ZZWFyXG4gKiBAc3VtbWFyeSBEYXlzIGluIDEgeWVhci5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEhvdyBtYW55IGRheXMgaW4gYSB5ZWFyLlxuICpcbiAqIE9uZSB5ZWFycyBlcXVhbHMgMzY1LjI0MjUgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6XG4gKlxuICogXHUwMDNlIExlYXAgeWVhciBvY2N1cmVzIGV2ZXJ5IDQgeWVhcnMsIGV4Y2VwdCBmb3IgeWVhcnMgdGhhdCBhcmUgZGl2aXNhYmxlIGJ5IDEwMCBhbmQgbm90IGRpdmlzYWJsZSBieSA0MDAuXG4gKiBcdTAwM2UgMSBtZWFuIHllYXIgPSAoMzY1KzEvNC0xLzEwMCsxLzQwMCkgZGF5cyA9IDM2NS4yNDI1IGRheXNcbiAqL1xuZXhwb3J0IGNvbnN0IGRheXNJblllYXIgPSAzNjUuMjQyNTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1heFRpbWVcbiAqIEBzdW1tYXJ5IE1heGltdW0gYWxsb3dlZCB0aW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBtYXhUaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGNvbnN0IGlzVmFsaWQgPSA4NjQwMDAwMDAwMDAwMDAxIFx1MDAzYz0gbWF4VGltZTtcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICpcbiAqIG5ldyBEYXRlKDg2NDAwMDAwMDAwMDAwMDEpO1xuICogLy89XHUwMDNlIEludmFsaWQgRGF0ZVxuICovXG5leHBvcnQgY29uc3QgbWF4VGltZSA9IE1hdGgucG93KDEwLCA4KSAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW5UaW1lXG4gKiBAc3VtbWFyeSBNaW5pbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBjb25zdCBpc1ZhbGlkID0gLTg2NDAwMDAwMDAwMDAwMDEgXHUwMDNlPSBtaW5UaW1lO1xuICogLy89XHUwMDNlIGZhbHNlXG4gKlxuICogbmV3IERhdGUoLTg2NDAwMDAwMDAwMDAwMDEpXG4gKiAvLz1cdTAwM2UgSW52YWxpZCBEYXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtaW5UaW1lID0gLW1heFRpbWU7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbldlZWtcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbldlZWsgPSA2MDQ4MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkRheVxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5EYXkgPSA4NjQwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luTWludXRlXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBtaW51dGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luTWludXRlID0gNjAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkhvdXJcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIGhvdXJcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luSG91ciA9IDM2MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJblNlY29uZFxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgc2Vjb25kXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJblNlY29uZCA9IDEwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5ZZWFyXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJblllYXIgPSA1MjU2MDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5Nb250aFxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIG1vbnRoLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luTW9udGggPSA0MzIwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbkRheVxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbkRheSA9IDE0NDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5Ib3VyXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgaG91ci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbkhvdXIgPSA2MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1vbnRoc0luUXVhcnRlclxuICogQHN1bW1hcnkgTW9udGhzIGluIDEgcXVhcnRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1vbnRoc0luUXVhcnRlciA9IDM7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtb250aHNJblllYXJcbiAqIEBzdW1tYXJ5IE1vbnRocyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aHNJblllYXIgPSAxMjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHF1YXJ0ZXJzSW5ZZWFyXG4gKiBAc3VtbWFyeSBRdWFydGVycyBpbiAxIHllYXJcbiAqL1xuZXhwb3J0IGNvbnN0IHF1YXJ0ZXJzSW5ZZWFyID0gNDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbkhvdXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBob3VyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luSG91ciA9IDM2MDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5NaW51dGVcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBtaW51dGUuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5NaW51dGUgPSA2MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbkRheVxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbkRheSA9IHNlY29uZHNJbkhvdXIgKiAyNDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbldlZWtcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luV2VlayA9IHNlY29uZHNJbkRheSAqIDc7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5ZZWFyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJblllYXIgPSBzZWNvbmRzSW5EYXkgKiBkYXlzSW5ZZWFyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luTW9udGhcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBtb250aFxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luTW9udGggPSBzZWNvbmRzSW5ZZWFyIC8gMTI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5RdWFydGVyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgcXVhcnRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJblF1YXJ0ZXIgPSBzZWNvbmRzSW5Nb250aCAqIDM7XG4iLCAiaW1wb3J0IHsgYWRkTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vYWRkTWlsbGlzZWNvbmRzLm1qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5NaW51dGUgfSBmcm9tIFwiLi9jb25zdGFudHMubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgYWRkTWludXRlc1xuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWludXRlcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaW51dGVzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgbWludXRlcyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgbWludXRlcyBhZGRlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMzAgbWludXRlcyB0byAxMCBKdWx5IDIwMTQgMTI6MDA6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRNaW51dGVzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgMCksIDMwKVxuICogLy89XHUwMDNlIFRodSBKdWwgMTAgMjAxNCAxMjozMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkTWludXRlcyhkYXRlLCBhbW91bnQpIHtcbiAgcmV0dXJuIGFkZE1pbGxpc2Vjb25kcyhkYXRlLCBhbW91bnQgKiBtaWxsaXNlY29uZHNJbk1pbnV0ZSk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkTWludXRlcztcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGNvbXBhcmVBc2NcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29tcGFyZSB0aGUgdHdvIGRhdGVzIGFuZCByZXR1cm4gLTEsIDAgb3IgMS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbXBhcmUgdGhlIHR3byBkYXRlcyBhbmQgcmV0dXJuIDEgaWYgdGhlIGZpcnN0IGRhdGUgaXMgYWZ0ZXIgdGhlIHNlY29uZCxcbiAqIC0xIGlmIHRoZSBmaXJzdCBkYXRlIGlzIGJlZm9yZSB0aGUgc2Vjb25kIG9yIDAgaWYgZGF0ZXMgYXJlIGVxdWFsLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlTGVmdCAtIFRoZSBmaXJzdCBkYXRlIHRvIGNvbXBhcmVcbiAqIEBwYXJhbSBkYXRlUmlnaHQgLSBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZVxuICpcbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb25cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29tcGFyZSAxMSBGZWJydWFyeSAxOTg3IGFuZCAxMCBKdWx5IDE5ODk6XG4gKiBjb25zdCByZXN1bHQgPSBjb21wYXJlQXNjKG5ldyBEYXRlKDE5ODcsIDEsIDExKSwgbmV3IERhdGUoMTk4OSwgNiwgMTApKVxuICogLy89XHUwMDNlIC0xXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNvcnQgdGhlIGFycmF5IG9mIGRhdGVzOlxuICogY29uc3QgcmVzdWx0ID0gW1xuICogICBuZXcgRGF0ZSgxOTk1LCA2LCAyKSxcbiAqICAgbmV3IERhdGUoMTk4NywgMSwgMTEpLFxuICogICBuZXcgRGF0ZSgxOTg5LCA2LCAxMClcbiAqIF0uc29ydChjb21wYXJlQXNjKVxuICogLy89XHUwMDNlIFtcbiAqIC8vICAgV2VkIEZlYiAxMSAxOTg3IDAwOjAwOjAwLFxuICogLy8gICBNb24gSnVsIDEwIDE5ODkgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBKdWwgMDIgMTk5NSAwMDowMDowMFxuICogLy8gXVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZUFzYyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSB7XG4gIGNvbnN0IF9kYXRlTGVmdCA9IHRvRGF0ZShkYXRlTGVmdCk7XG4gIGNvbnN0IF9kYXRlUmlnaHQgPSB0b0RhdGUoZGF0ZVJpZ2h0KTtcblxuICBjb25zdCBkaWZmID0gX2RhdGVMZWZ0LmdldFRpbWUoKSAtIF9kYXRlUmlnaHQuZ2V0VGltZSgpO1xuXG4gIGlmIChkaWZmIFx1MDAzYyAwKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9IGVsc2UgaWYgKGRpZmYgXHUwMDNlIDApIHtcbiAgICByZXR1cm4gMTtcbiAgICAvLyBSZXR1cm4gMCBpZiBkaWZmIGlzIDA7IHJldHVybiBOYU4gaWYgZGlmZiBpcyBOYU5cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGlmZjtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGNvbXBhcmVBc2M7XG4iLCAiLyoqXG4gKiBAbW9kdWxlIGNvbnN0YW50c1xuICogQHN1bW1hcnkgVXNlZnVsIGNvbnN0YW50c1xuICogQGRlc2NyaXB0aW9uXG4gKiBDb2xsZWN0aW9uIG9mIHVzZWZ1bCBkYXRlIGNvbnN0YW50cy5cbiAqXG4gKiBUaGUgY29uc3RhbnRzIGNvdWxkIGJlIGltcG9ydGVkIGZyb20gYGRhdGUtZm5zL2NvbnN0YW50c2A6XG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IG1heFRpbWUsIG1pblRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogZnVuY3Rpb24gaXNBbGxvd2VkVGltZSh0aW1lKSB7XG4gKiAgIHJldHVybiB0aW1lIFx1MDAzYz0gbWF4VGltZSBcdTAwMjZcdTAwMjYgdGltZSBcdTAwM2U9IG1pblRpbWU7XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgZGF5c0luV2Vla1xuICogQHN1bW1hcnkgRGF5cyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5XZWVrID0gNztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIGRheXNJblllYXJcbiAqIEBzdW1tYXJ5IERheXMgaW4gMSB5ZWFyLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSG93IG1hbnkgZGF5cyBpbiBhIHllYXIuXG4gKlxuICogT25lIHllYXJzIGVxdWFscyAzNjUuMjQyNSBkYXlzIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpcbiAqXG4gKiBcdTAwM2UgTGVhcCB5ZWFyIG9jY3VyZXMgZXZlcnkgNCB5ZWFycywgZXhjZXB0IGZvciB5ZWFycyB0aGF0IGFyZSBkaXZpc2FibGUgYnkgMTAwIGFuZCBub3QgZGl2aXNhYmxlIGJ5IDQwMC5cbiAqIFx1MDAzZSAxIG1lYW4geWVhciA9ICgzNjUrMS80LTEvMTAwKzEvNDAwKSBkYXlzID0gMzY1LjI0MjUgZGF5c1xuICovXG5leHBvcnQgY29uc3QgZGF5c0luWWVhciA9IDM2NS4yNDI1O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWF4VGltZVxuICogQHN1bW1hcnkgTWF4aW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IG1heFRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogY29uc3QgaXNWYWxpZCA9IDg2NDAwMDAwMDAwMDAwMDEgXHUwMDNjPSBtYXhUaW1lO1xuICogLy89XHUwMDNlIGZhbHNlXG4gKlxuICogbmV3IERhdGUoODY0MDAwMDAwMDAwMDAwMSk7XG4gKiAvLz1cdTAwM2UgSW52YWxpZCBEYXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtYXhUaW1lID0gTWF0aC5wb3coMTAsIDgpICogMjQgKiA2MCAqIDYwICogMTAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pblRpbWVcbiAqIEBzdW1tYXJ5IE1pbmltdW0gYWxsb3dlZCB0aW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBtaW5UaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGNvbnN0IGlzVmFsaWQgPSAtODY0MDAwMDAwMDAwMDAwMSBcdTAwM2U9IG1pblRpbWU7XG4gKiAvLz1cdTAwM2UgZmFsc2VcbiAqXG4gKiBuZXcgRGF0ZSgtODY0MDAwMDAwMDAwMDAwMSlcbiAqIC8vPVx1MDAzZSBJbnZhbGlkIERhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1pblRpbWUgPSAtbWF4VGltZTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luV2Vla1xuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luV2VlayA9IDYwNDgwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luRGF5XG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbkRheSA9IDg2NDAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5NaW51dGVcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIG1pbnV0ZVxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5NaW51dGUgPSA2MDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luSG91clxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgaG91clxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5Ib3VyID0gMzYwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luU2Vjb25kXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBzZWNvbmRcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luU2Vjb25kID0gMTAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJblllYXJcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luWWVhciA9IDUyNTYwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbk1vbnRoXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgbW9udGguXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5Nb250aCA9IDQzMjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luRGF5XG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luRGF5ID0gMTQ0MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbkhvdXJcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBob3VyLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luSG91ciA9IDYwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbW9udGhzSW5RdWFydGVyXG4gKiBAc3VtbWFyeSBNb250aHMgaW4gMSBxdWFydGVyLlxuICovXG5leHBvcnQgY29uc3QgbW9udGhzSW5RdWFydGVyID0gMztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1vbnRoc0luWWVhclxuICogQHN1bW1hcnkgTW9udGhzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1vbnRoc0luWWVhciA9IDEyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgcXVhcnRlcnNJblllYXJcbiAqIEBzdW1tYXJ5IFF1YXJ0ZXJzIGluIDEgeWVhclxuICovXG5leHBvcnQgY29uc3QgcXVhcnRlcnNJblllYXIgPSA0O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luSG91clxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIGhvdXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5Ib3VyID0gMzYwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbk1pbnV0ZVxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIG1pbnV0ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbk1pbnV0ZSA9IDYwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luRGF5XG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luRGF5ID0gc2Vjb25kc0luSG91ciAqIDI0O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luV2Vla1xuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5XZWVrID0gc2Vjb25kc0luRGF5ICogNztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJblllYXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luWWVhciA9IHNlY29uZHNJbkRheSAqIGRheXNJblllYXI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5Nb250aFxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIG1vbnRoXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5Nb250aCA9IHNlY29uZHNJblllYXIgLyAxMjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJblF1YXJ0ZXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBxdWFydGVyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luUXVhcnRlciA9IHNlY29uZHNJbk1vbnRoICogMztcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZEYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIGRheSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgZGF5IGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgb3JpZ2luYWwgZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSBzdGFydCBvZiBhIGRheVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSBkYXkgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz1cdTAwM2UgVHVlIFNlcCAwMiAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydE9mRGF5KGRhdGUpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIF9kYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3RhcnRPZkRheTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEdvb2dsZSBDaHJvbWUgYXMgb2YgNjcuMC4zMzk2Ljg3IGludHJvZHVjZWQgdGltZXpvbmVzIHdpdGggb2Zmc2V0IHRoYXQgaW5jbHVkZXMgc2Vjb25kcy5cbiAqIFRoZXkgdXN1YWxseSBhcHBlYXIgZm9yIGRhdGVzIHRoYXQgZGVub3RlIHRpbWUgYmVmb3JlIHRoZSB0aW1lem9uZXMgd2VyZSBpbnRyb2R1Y2VkXG4gKiAoZS5nLiBmb3IgJ0V1cm9wZS9QcmFndWUnIHRpbWV6b25lIHRoZSBvZmZzZXQgaXMgR01UKzAwOjU3OjQ0IGJlZm9yZSAxIE9jdG9iZXIgMTg5MVxuICogYW5kIEdNVCswMTowMDowMCBhZnRlciB0aGF0IGRhdGUpXG4gKlxuICogRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIHRoZSBvZmZzZXQgaW4gbWludXRlcyBhbmQgd291bGQgcmV0dXJuIDU3IGZvciB0aGUgZXhhbXBsZSBhYm92ZSxcbiAqIHdoaWNoIHdvdWxkIGxlYWQgdG8gaW5jb3JyZWN0IGNhbGN1bGF0aW9ucy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRpbWV6b25lIG9mZnNldCBpbiBtaWxsaXNlY29uZHMgdGhhdCB0YWtlcyBzZWNvbmRzIGluIGFjY291bnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKGRhdGUpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGNvbnN0IHV0Y0RhdGUgPSBuZXcgRGF0ZShcbiAgICBEYXRlLlVUQyhcbiAgICAgIF9kYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBfZGF0ZS5nZXRNb250aCgpLFxuICAgICAgX2RhdGUuZ2V0RGF0ZSgpLFxuICAgICAgX2RhdGUuZ2V0SG91cnMoKSxcbiAgICAgIF9kYXRlLmdldE1pbnV0ZXMoKSxcbiAgICAgIF9kYXRlLmdldFNlY29uZHMoKSxcbiAgICAgIF9kYXRlLmdldE1pbGxpc2Vjb25kcygpLFxuICAgICksXG4gICk7XG4gIHV0Y0RhdGUuc2V0VVRDRnVsbFllYXIoX2RhdGUuZ2V0RnVsbFllYXIoKSk7XG4gIHJldHVybiArZGF0ZSAtICt1dGNEYXRlO1xufVxuIiwgImltcG9ydCB7IG1pbGxpc2Vjb25kc0luRGF5IH0gZnJvbSBcIi4vY29uc3RhbnRzLm1qc1wiO1xuaW1wb3J0IHsgc3RhcnRPZkRheSB9IGZyb20gXCIuL3N0YXJ0T2ZEYXkubWpzXCI7XG5pbXBvcnQgeyBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciBkYXlzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgZGF5cyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy4gVGhpcyBtZWFucyB0aGF0IHRoZSB0aW1lcyBhcmUgcmVtb3ZlZFxuICogZnJvbSB0aGUgZGF0ZXMgYW5kIHRoZW4gdGhlIGRpZmZlcmVuY2UgaW4gZGF5cyBpcyBjYWxjdWxhdGVkLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlTGVmdCAtIFRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0gZGF0ZVJpZ2h0IC0gVGhlIGVhcmxpZXIgZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgY2FsZW5kYXIgZGF5c1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxMSAyMzowMDowMCBhbmQgMiBKdWx5IDIwMTIgMDA6MDA6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoXG4gKiAgIG5ldyBEYXRlKDIwMTIsIDYsIDIsIDAsIDApLFxuICogICBuZXcgRGF0ZSgyMDExLCA2LCAyLCAyMywgMClcbiAqIClcbiAqIC8vPVx1MDAzZSAzNjZcbiAqIC8vIEhvdyBtYW55IGNhbGVuZGFyIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDIgSnVseSAyMDExIDIzOjU5OjAwIGFuZCAzIEp1bHkgMjAxMSAwMDowMTowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMywgMCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDIsIDIzLCA1OSlcbiAqIClcbiAqIC8vPVx1MDAzZSAxXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoZGF0ZUxlZnQsIGRhdGVSaWdodCkge1xuICBjb25zdCBzdGFydE9mRGF5TGVmdCA9IHN0YXJ0T2ZEYXkoZGF0ZUxlZnQpO1xuICBjb25zdCBzdGFydE9mRGF5UmlnaHQgPSBzdGFydE9mRGF5KGRhdGVSaWdodCk7XG5cbiAgY29uc3QgdGltZXN0YW1wTGVmdCA9XG4gICAgK3N0YXJ0T2ZEYXlMZWZ0IC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhzdGFydE9mRGF5TGVmdCk7XG4gIGNvbnN0IHRpbWVzdGFtcFJpZ2h0ID1cbiAgICArc3RhcnRPZkRheVJpZ2h0IC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhzdGFydE9mRGF5UmlnaHQpO1xuXG4gIC8vIFJvdW5kIHRoZSBudW1iZXIgb2YgZGF5cyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIGJlY2F1c2UgdGhlIG51bWJlciBvZlxuICAvLyBtaWxsaXNlY29uZHMgaW4gYSBkYXkgaXMgbm90IGNvbnN0YW50IChlLmcuIGl0J3MgZGlmZmVyZW50IGluIHRoZSB3ZWVrIG9mXG4gIC8vIHRoZSBkYXlsaWdodCBzYXZpbmcgdGltZSBjbG9jayBzaGlmdCkuXG4gIHJldHVybiBNYXRoLnJvdW5kKCh0aW1lc3RhbXBMZWZ0IC0gdGltZXN0YW1wUmlnaHQpIC8gbWlsbGlzZWNvbmRzSW5EYXkpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cztcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgbW9udGhzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgbW9udGhzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlTGVmdCAtIFRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0gZGF0ZVJpZ2h0IC0gVGhlIGVhcmxpZXIgZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgY2FsZW5kYXIgbW9udGhzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGNhbGVuZGFyIG1vbnRocyBhcmUgYmV0d2VlbiAzMSBKYW51YXJ5IDIwMTQgYW5kIDEgU2VwdGVtYmVyIDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyhcbiAqICAgbmV3IERhdGUoMjAxNCwgOCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDAsIDMxKVxuICogKVxuICogLy89XHUwMDNlIDhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIHtcbiAgY29uc3QgX2RhdGVMZWZ0ID0gdG9EYXRlKGRhdGVMZWZ0KTtcbiAgY29uc3QgX2RhdGVSaWdodCA9IHRvRGF0ZShkYXRlUmlnaHQpO1xuXG4gIGNvbnN0IHllYXJEaWZmID0gX2RhdGVMZWZ0LmdldEZ1bGxZZWFyKCkgLSBfZGF0ZVJpZ2h0LmdldEZ1bGxZZWFyKCk7XG4gIGNvbnN0IG1vbnRoRGlmZiA9IF9kYXRlTGVmdC5nZXRNb250aCgpIC0gX2RhdGVSaWdodC5nZXRNb250aCgpO1xuXG4gIHJldHVybiB5ZWFyRGlmZiAqIDEyICsgbW9udGhEaWZmO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzO1xuIiwgImV4cG9ydCBmdW5jdGlvbiBnZXRSb3VuZGluZ01ldGhvZChtZXRob2QpIHtcbiAgcmV0dXJuIChudW1iZXIpID1cdTAwM2Uge1xuICAgIGNvbnN0IHJvdW5kID0gbWV0aG9kID8gTWF0aFttZXRob2RdIDogTWF0aC50cnVuYztcbiAgICBjb25zdCByZXN1bHQgPSByb3VuZChudW1iZXIpO1xuICAgIC8vIFByZXZlbnQgbmVnYXRpdmUgemVyb1xuICAgIHJldHVybiByZXN1bHQgPT09IDAgPyAwIDogcmVzdWx0O1xuICB9O1xufVxuIiwgIi8qKlxuICogQG1vZHVsZSBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IFVzZWZ1bCBjb25zdGFudHNcbiAqIEBkZXNjcmlwdGlvblxuICogQ29sbGVjdGlvbiBvZiB1c2VmdWwgZGF0ZSBjb25zdGFudHMuXG4gKlxuICogVGhlIGNvbnN0YW50cyBjb3VsZCBiZSBpbXBvcnRlZCBmcm9tIGBkYXRlLWZucy9jb25zdGFudHNgOlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBtYXhUaW1lLCBtaW5UaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGZ1bmN0aW9uIGlzQWxsb3dlZFRpbWUodGltZSkge1xuICogICByZXR1cm4gdGltZSBcdTAwM2M9IG1heFRpbWUgXHUwMDI2XHUwMDI2IHRpbWUgXHUwMDNlPSBtaW5UaW1lO1xuICogfVxuICogYGBgXG4gKi9cblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIGRheXNJbldlZWtcbiAqIEBzdW1tYXJ5IERheXMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3QgZGF5c0luV2VlayA9IDc7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBkYXlzSW5ZZWFyXG4gKiBAc3VtbWFyeSBEYXlzIGluIDEgeWVhci5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEhvdyBtYW55IGRheXMgaW4gYSB5ZWFyLlxuICpcbiAqIE9uZSB5ZWFycyBlcXVhbHMgMzY1LjI0MjUgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6XG4gKlxuICogXHUwMDNlIExlYXAgeWVhciBvY2N1cmVzIGV2ZXJ5IDQgeWVhcnMsIGV4Y2VwdCBmb3IgeWVhcnMgdGhhdCBhcmUgZGl2aXNhYmxlIGJ5IDEwMCBhbmQgbm90IGRpdmlzYWJsZSBieSA0MDAuXG4gKiBcdTAwM2UgMSBtZWFuIHllYXIgPSAoMzY1KzEvNC0xLzEwMCsxLzQwMCkgZGF5cyA9IDM2NS4yNDI1IGRheXNcbiAqL1xuZXhwb3J0IGNvbnN0IGRheXNJblllYXIgPSAzNjUuMjQyNTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1heFRpbWVcbiAqIEBzdW1tYXJ5IE1heGltdW0gYWxsb3dlZCB0aW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBtYXhUaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGNvbnN0IGlzVmFsaWQgPSA4NjQwMDAwMDAwMDAwMDAxIFx1MDAzYz0gbWF4VGltZTtcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICpcbiAqIG5ldyBEYXRlKDg2NDAwMDAwMDAwMDAwMDEpO1xuICogLy89XHUwMDNlIEludmFsaWQgRGF0ZVxuICovXG5leHBvcnQgY29uc3QgbWF4VGltZSA9IE1hdGgucG93KDEwLCA4KSAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW5UaW1lXG4gKiBAc3VtbWFyeSBNaW5pbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBjb25zdCBpc1ZhbGlkID0gLTg2NDAwMDAwMDAwMDAwMDEgXHUwMDNlPSBtaW5UaW1lO1xuICogLy89XHUwMDNlIGZhbHNlXG4gKlxuICogbmV3IERhdGUoLTg2NDAwMDAwMDAwMDAwMDEpXG4gKiAvLz1cdTAwM2UgSW52YWxpZCBEYXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtaW5UaW1lID0gLW1heFRpbWU7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbldlZWtcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbldlZWsgPSA2MDQ4MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkRheVxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5EYXkgPSA4NjQwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luTWludXRlXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBtaW51dGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luTWludXRlID0gNjAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkhvdXJcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIGhvdXJcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luSG91ciA9IDM2MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJblNlY29uZFxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgc2Vjb25kXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJblNlY29uZCA9IDEwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5ZZWFyXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJblllYXIgPSA1MjU2MDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5Nb250aFxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIG1vbnRoLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luTW9udGggPSA0MzIwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbkRheVxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbkRheSA9IDE0NDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5Ib3VyXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgaG91ci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbkhvdXIgPSA2MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1vbnRoc0luUXVhcnRlclxuICogQHN1bW1hcnkgTW9udGhzIGluIDEgcXVhcnRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1vbnRoc0luUXVhcnRlciA9IDM7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtb250aHNJblllYXJcbiAqIEBzdW1tYXJ5IE1vbnRocyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aHNJblllYXIgPSAxMjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHF1YXJ0ZXJzSW5ZZWFyXG4gKiBAc3VtbWFyeSBRdWFydGVycyBpbiAxIHllYXJcbiAqL1xuZXhwb3J0IGNvbnN0IHF1YXJ0ZXJzSW5ZZWFyID0gNDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbkhvdXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBob3VyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luSG91ciA9IDM2MDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5NaW51dGVcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBtaW51dGUuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5NaW51dGUgPSA2MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbkRheVxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbkRheSA9IHNlY29uZHNJbkhvdXIgKiAyNDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbldlZWtcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luV2VlayA9IHNlY29uZHNJbkRheSAqIDc7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5ZZWFyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJblllYXIgPSBzZWNvbmRzSW5EYXkgKiBkYXlzSW5ZZWFyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luTW9udGhcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBtb250aFxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luTW9udGggPSBzZWNvbmRzSW5ZZWFyIC8gMTI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5RdWFydGVyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgcXVhcnRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJblF1YXJ0ZXIgPSBzZWNvbmRzSW5Nb250aCAqIDM7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHNcbiAqIEBjYXRlZ29yeSBNaWxsaXNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGVMZWZ0IC0gVGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSBkYXRlUmlnaHQgLSBUaGUgZWFybGllciBkYXRlXG4gKlxuICogQHJldHVybnMgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgbWlsbGlzZWNvbmRzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxNCAxMjozMDoyMC42MDAgYW5kIDIgSnVseSAyMDE0IDEyOjMwOjIxLjcwMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTIsIDMwLCAyMSwgNzAwKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTIsIDMwLCAyMCwgNjAwKVxuICogKVxuICogLy89XHUwMDNlIDExMDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSB7XG4gIHJldHVybiArdG9EYXRlKGRhdGVMZWZ0KSAtICt0b0RhdGUoZGF0ZVJpZ2h0KTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHM7XG4iLCAiaW1wb3J0IHsgZ2V0Um91bmRpbmdNZXRob2QgfSBmcm9tIFwiLi9fbGliL2dldFJvdW5kaW5nTWV0aG9kLm1qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5NaW51dGUgfSBmcm9tIFwiLi9jb25zdGFudHMubWpzXCI7XG5pbXBvcnQgeyBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMubWpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBkaWZmZXJlbmNlSW5NaW51dGVzfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluTWludXRlc1xuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBtaW51dGVzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBzaWduZWQgbnVtYmVyIG9mIGZ1bGwgKHJvdW5kZWQgdG93YXJkcyAwKSBtaW51dGVzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlTGVmdCAtIFRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0gZGF0ZVJpZ2h0IC0gVGhlIGVhcmxpZXIgZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICpcbiAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgbWludXRlc1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBtaW51dGVzIGFyZSBiZXR3ZWVuIDIgSnVseSAyMDE0IDEyOjA3OjU5IGFuZCAyIEp1bHkgMjAxNCAxMjoyMDowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbk1pbnV0ZXMoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCAyMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCA3LCA1OSlcbiAqIClcbiAqIC8vPVx1MDAzZSAxMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBtaW51dGVzIGFyZSBiZXR3ZWVuIDEwOjAxOjU5IGFuZCAxMDowMDowMFxuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluTWludXRlcyhcbiAqICAgbmV3IERhdGUoMjAwMCwgMCwgMSwgMTAsIDAsIDApLFxuICogICBuZXcgRGF0ZSgyMDAwLCAwLCAxLCAxMCwgMSwgNTkpXG4gKiApXG4gKiAvLz1cdTAwM2UgLTFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbk1pbnV0ZXMoZGF0ZUxlZnQsIGRhdGVSaWdodCwgb3B0aW9ucykge1xuICBjb25zdCBkaWZmID1cbiAgICBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkgLyBtaWxsaXNlY29uZHNJbk1pbnV0ZTtcbiAgcmV0dXJuIGdldFJvdW5kaW5nTWV0aG9kKG9wdGlvbnM/LnJvdW5kaW5nTWV0aG9kKShkaWZmKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBkaWZmZXJlbmNlSW5NaW51dGVzO1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICIvKipcbiAqIEBuYW1lIGNvbnN0cnVjdEZyb21cbiAqIEBjYXRlZ29yeSBHZW5lcmljIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnN0cnVjdHMgYSBkYXRlIHVzaW5nIHRoZSByZWZlcmVuY2UgZGF0ZSBhbmQgdGhlIHZhbHVlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGUgZnVuY3Rpb24gY29uc3RydWN0cyBhIG5ldyBkYXRlIHVzaW5nIHRoZSBjb25zdHJ1Y3RvciBmcm9tIHRoZSByZWZlcmVuY2VcbiAqIGRhdGUgYW5kIHRoZSBnaXZlbiB2YWx1ZS4gSXQgaGVscHMgdG8gYnVpbGQgZ2VuZXJpYyBmdW5jdGlvbnMgdGhhdCBhY2NlcHRcbiAqIGRhdGUgZXh0ZW5zaW9ucy5cbiAqXG4gKiBJdCBkZWZhdWx0cyB0byBgRGF0ZWAgaWYgdGhlIHBhc3NlZCByZWZlcmVuY2UgZGF0ZSBpcyBhIG51bWJlciBvciBhIHN0cmluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSByZWZlcmVuY2UgZGF0ZSB0byB0YWtlIGNvbnN0cnVjdG9yIGZyb21cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjcmVhdGUgdGhlIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBEYXRlIGluaXRpYWxpemVkIHVzaW5nIHRoZSBnaXZlbiBkYXRlIGFuZCB2YWx1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSAnZGF0ZS1mbnMnXG4gKlxuICogLy8gQSBmdW5jdGlvbiB0aGF0IGNsb25lcyBhIGRhdGUgcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgdHlwZVxuICogZnVuY3Rpb24gY2xvbmVEYXRlXHUwMDNjRGF0ZVR5cGUgZXh0ZW5kcyBEYXRlKGRhdGU6IERhdGVUeXBlKTogRGF0ZVR5cGUge1xuICogICByZXR1cm4gY29uc3RydWN0RnJvbShcbiAqICAgICBkYXRlLCAvLyBVc2UgY29udHJ1c3RvciBmcm9tIHRoZSBnaXZlbiBkYXRlXG4gKiAgICAgZGF0ZS5nZXRUaW1lKCkgLy8gVXNlIHRoZSBkYXRlIHZhbHVlIHRvIGNyZWF0ZSBhIG5ldyBkYXRlXG4gKiAgIClcbiAqIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdEZyb20oZGF0ZSwgdmFsdWUpIHtcbiAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBkYXRlLmNvbnN0cnVjdG9yKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgY29uc3RydWN0RnJvbTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5pbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBhZGREYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiBkYXlzIHRvIGJlIGFkZGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBkYXlzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAxMCBkYXlzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGREYXlzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAxMClcbiAqIC8vPVx1MDAzZSBUaHUgU2VwIDExIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZERheXMoZGF0ZSwgYW1vdW50KSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBpZiAoaXNOYU4oYW1vdW50KSkgcmV0dXJuIGNvbnN0cnVjdEZyb20oZGF0ZSwgTmFOKTtcbiAgaWYgKCFhbW91bnQpIHtcbiAgICAvLyBJZiAwIGRheXMsIG5vLW9wIHRvIGF2b2lkIGNoYW5naW5nIHRpbWVzIGluIHRoZSBob3VyIGJlZm9yZSBlbmQgb2YgRFNUXG4gICAgcmV0dXJuIF9kYXRlO1xuICB9XG4gIF9kYXRlLnNldERhdGUoX2RhdGUuZ2V0RGF0ZSgpICsgYW1vdW50KTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGFkZERheXM7XG4iLCAiaW1wb3J0IHsgYWRkRGF5cyB9IGZyb20gXCIuL2FkZERheXMubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgYWRkV2Vla3NcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB3ZWVrcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB3ZWVrIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2Ygd2Vla3MgdG8gYmUgYWRkZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIHdlZWtzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCA0IHdlZWtzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRXZWVrcyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgNClcbiAqIC8vPVx1MDAzZSBNb24gU2VwIDI5IDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFdlZWtzKGRhdGUsIGFtb3VudCkge1xuICBjb25zdCBkYXlzID0gYW1vdW50ICogNztcbiAgcmV0dXJuIGFkZERheXMoZGF0ZSwgZGF5cyk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkV2Vla3M7XG4iLCAibGV0IGRlZmF1bHRPcHRpb25zID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0T3B0aW9ucygpIHtcbiAgcmV0dXJuIGRlZmF1bHRPcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RGVmYXVsdE9wdGlvbnMobmV3T3B0aW9ucykge1xuICBkZWZhdWx0T3B0aW9ucyA9IG5ld09wdGlvbnM7XG59XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi9fbGliL2RlZmF1bHRPcHRpb25zLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgc3RhcnRPZldlZWt9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBzdGFydE9mV2Vla1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgc3RhcnQgb2YgYSB3ZWVrXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89XHUwMDNlIFN1biBBdWcgMzEgMjAxNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0aGUgd2VlayBzdGFydHMgb24gTW9uZGF5LCB0aGUgc3RhcnQgb2YgdGhlIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApLCB7IHdlZWtTdGFydHNPbjogMSB9KVxuICogLy89XHUwMDNlIE1vbiBTZXAgMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRPZldlZWsoZGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIGNvbnN0IHdlZWtTdGFydHNPbiA9XG4gICAgb3B0aW9ucz8ud2Vla1N0YXJ0c09uID8/XG4gICAgb3B0aW9ucz8ubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24gPz9cbiAgICBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24gPz9cbiAgICBkZWZhdWx0T3B0aW9ucy5sb2NhbGU/Lm9wdGlvbnM/LndlZWtTdGFydHNPbiA/P1xuICAgIDA7XG5cbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGNvbnN0IGRheSA9IF9kYXRlLmdldERheSgpO1xuICBjb25zdCBkaWZmID0gKGRheSBcdTAwM2Mgd2Vla1N0YXJ0c09uID8gNyA6IDApICsgZGF5IC0gd2Vla1N0YXJ0c09uO1xuXG4gIF9kYXRlLnNldERhdGUoX2RhdGUuZ2V0RGF0ZSgpIC0gZGlmZik7XG4gIF9kYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3RhcnRPZldlZWs7XG4iLCAiaW1wb3J0IHsgYWRkV2Vla3MgfSBmcm9tIFwiLi9hZGRXZWVrcy5tanNcIjtcbmltcG9ydCB7IHN0YXJ0T2ZXZWVrIH0gZnJvbSBcIi4vc3RhcnRPZldlZWsubWpzXCI7XG5pbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBlYWNoV2Vla09mSW50ZXJ2YWx9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBlYWNoV2Vla09mSW50ZXJ2YWxcbiAqIEBjYXRlZ29yeSBJbnRlcnZhbCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGFycmF5IG9mIHdlZWtzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGFycmF5IG9mIHdlZWtzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUgaW50ZXJ2YWwuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGludGVydmFsIC0gVGhlIGludGVydmFsLlxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICpcbiAqIEByZXR1cm5zIFRoZSBhcnJheSB3aXRoIHN0YXJ0cyBvZiB3ZWVrcyBmcm9tIHRoZSB3ZWVrIG9mIHRoZSBpbnRlcnZhbCBzdGFydCB0byB0aGUgd2VlayBvZiB0aGUgaW50ZXJ2YWwgZW5kXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEVhY2ggd2VlayB3aXRoaW4gaW50ZXJ2YWwgNiBPY3RvYmVyIDIwMTQgLSAyMyBOb3ZlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gZWFjaFdlZWtPZkludGVydmFsKHtcbiAqICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTQsIDksIDYpLFxuICogICBlbmQ6IG5ldyBEYXRlKDIwMTQsIDEwLCAyMylcbiAqIH0pXG4gKiAvLz1cdTAwM2UgW1xuICogLy8gICBTdW4gT2N0IDA1IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBPY3QgMTIgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgU3VuIE9jdCAxOSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTdW4gT2N0IDI2IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBOb3YgMDIgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgU3VuIE5vdiAwOSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTdW4gTm92IDE2IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBOb3YgMjMgMjAxNCAwMDowMDowMFxuICogLy8gXVxuICovXG5leHBvcnQgZnVuY3Rpb24gZWFjaFdlZWtPZkludGVydmFsKGludGVydmFsLCBvcHRpb25zKSB7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5zdGFydCk7XG4gIGNvbnN0IGVuZERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuZW5kKTtcblxuICBsZXQgcmV2ZXJzZWQgPSArc3RhcnREYXRlIFx1MDAzZSArZW5kRGF0ZTtcbiAgY29uc3Qgc3RhcnREYXRlV2VlayA9IHJldmVyc2VkXG4gICAgPyBzdGFydE9mV2VlayhlbmREYXRlLCBvcHRpb25zKVxuICAgIDogc3RhcnRPZldlZWsoc3RhcnREYXRlLCBvcHRpb25zKTtcbiAgY29uc3QgZW5kRGF0ZVdlZWsgPSByZXZlcnNlZFxuICAgID8gc3RhcnRPZldlZWsoc3RhcnREYXRlLCBvcHRpb25zKVxuICAgIDogc3RhcnRPZldlZWsoZW5kRGF0ZSwgb3B0aW9ucyk7XG5cbiAgLy8gU29tZSB0aW1lem9uZXMgc3dpdGNoIERTVCBhdCBtaWRuaWdodCwgbWFraW5nIHN0YXJ0IG9mIGRheSB1bnJlbGlhYmxlIGluIHRoZXNlIHRpbWV6b25lcywgM3BtIGlzIGEgc2FmZSBiZXRcbiAgc3RhcnREYXRlV2Vlay5zZXRIb3VycygxNSk7XG4gIGVuZERhdGVXZWVrLnNldEhvdXJzKDE1KTtcblxuICBjb25zdCBlbmRUaW1lID0gK2VuZERhdGVXZWVrLmdldFRpbWUoKTtcbiAgbGV0IGN1cnJlbnREYXRlID0gc3RhcnREYXRlV2VlaztcblxuICBsZXQgc3RlcCA9IG9wdGlvbnM/LnN0ZXAgPz8gMTtcbiAgaWYgKCFzdGVwKSByZXR1cm4gW107XG4gIGlmIChzdGVwIFx1MDAzYyAwKSB7XG4gICAgc3RlcCA9IC1zdGVwO1xuICAgIHJldmVyc2VkID0gIXJldmVyc2VkO1xuICB9XG5cbiAgY29uc3QgZGF0ZXMgPSBbXTtcblxuICB3aGlsZSAoK2N1cnJlbnREYXRlIFx1MDAzYz0gZW5kVGltZSkge1xuICAgIGN1cnJlbnREYXRlLnNldEhvdXJzKDApO1xuICAgIGRhdGVzLnB1c2godG9EYXRlKGN1cnJlbnREYXRlKSk7XG4gICAgY3VycmVudERhdGUgPSBhZGRXZWVrcyhjdXJyZW50RGF0ZSwgc3RlcCk7XG4gICAgY3VycmVudERhdGUuc2V0SG91cnMoMTUpO1xuICB9XG5cbiAgcmV0dXJuIHJldmVyc2VkID8gZGF0ZXMucmV2ZXJzZSgpIDogZGF0ZXM7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZWFjaFdlZWtPZkludGVydmFsO1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgZW5kT2ZEYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgYSBkYXkgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYSBkYXkgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBvcmlnaW5hbCBkYXRlXG4gKlxuICogQHJldHVybnMgVGhlIGVuZCBvZiBhIGRheVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGEgZGF5IGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZEYXkobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPVx1MDAzZSBUdWUgU2VwIDAyIDIwMTQgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmRPZkRheShkYXRlKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBfZGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZW5kT2ZEYXk7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBnZXRIb3Vyc1xuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBob3VycyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgaG91cnMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZ2l2ZW4gZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSBob3Vyc1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBHZXQgdGhlIGhvdXJzIG9mIDI5IEZlYnJ1YXJ5IDIwMTIgMTE6NDU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBnZXRIb3VycyhuZXcgRGF0ZSgyMDEyLCAxLCAyOSwgMTEsIDQ1KSlcbiAqIC8vPVx1MDAzZSAxMVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SG91cnMoZGF0ZSkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgY29uc3QgaG91cnMgPSBfZGF0ZS5nZXRIb3VycygpO1xuICByZXR1cm4gaG91cnM7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZ2V0SG91cnM7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBnZXRNaW51dGVzXG4gKiBAY2F0ZWdvcnkgTWludXRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbWludXRlcyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbWludXRlcyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBnaXZlbiBkYXRlXG4gKlxuICogQHJldHVybnMgVGhlIG1pbnV0ZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gR2V0IHRoZSBtaW51dGVzIG9mIDI5IEZlYnJ1YXJ5IDIwMTIgMTE6NDU6MDU6XG4gKiBjb25zdCByZXN1bHQgPSBnZXRNaW51dGVzKG5ldyBEYXRlKDIwMTIsIDEsIDI5LCAxMSwgNDUsIDUpKVxuICogLy89XHUwMDNlIDQ1XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNaW51dGVzKGRhdGUpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGNvbnN0IG1pbnV0ZXMgPSBfZGF0ZS5nZXRNaW51dGVzKCk7XG4gIHJldHVybiBtaW51dGVzO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGdldE1pbnV0ZXM7XG4iLCAiLyoqXG4gKiBAbmFtZSBjb25zdHJ1Y3RGcm9tXG4gKiBAY2F0ZWdvcnkgR2VuZXJpYyBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb25zdHJ1Y3RzIGEgZGF0ZSB1c2luZyB0aGUgcmVmZXJlbmNlIGRhdGUgYW5kIHRoZSB2YWx1ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGZ1bmN0aW9uIGNvbnN0cnVjdHMgYSBuZXcgZGF0ZSB1c2luZyB0aGUgY29uc3RydWN0b3IgZnJvbSB0aGUgcmVmZXJlbmNlXG4gKiBkYXRlIGFuZCB0aGUgZ2l2ZW4gdmFsdWUuIEl0IGhlbHBzIHRvIGJ1aWxkIGdlbmVyaWMgZnVuY3Rpb25zIHRoYXQgYWNjZXB0XG4gKiBkYXRlIGV4dGVuc2lvbnMuXG4gKlxuICogSXQgZGVmYXVsdHMgdG8gYERhdGVgIGlmIHRoZSBwYXNzZWQgcmVmZXJlbmNlIGRhdGUgaXMgYSBudW1iZXIgb3IgYSBzdHJpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgcmVmZXJlbmNlIGRhdGUgdG8gdGFrZSBjb25zdHJ1Y3RvciBmcm9tXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY3JlYXRlIHRoZSBkYXRlXG4gKlxuICogQHJldHVybnMgRGF0ZSBpbml0aWFsaXplZCB1c2luZyB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdmFsdWVcbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gJ2RhdGUtZm5zJ1xuICpcbiAqIC8vIEEgZnVuY3Rpb24gdGhhdCBjbG9uZXMgYSBkYXRlIHByZXNlcnZpbmcgdGhlIG9yaWdpbmFsIHR5cGVcbiAqIGZ1bmN0aW9uIGNsb25lRGF0ZVx1MDAzY0RhdGVUeXBlIGV4dGVuZHMgRGF0ZShkYXRlOiBEYXRlVHlwZSk6IERhdGVUeXBlIHtcbiAqICAgcmV0dXJuIGNvbnN0cnVjdEZyb20oXG4gKiAgICAgZGF0ZSwgLy8gVXNlIGNvbnRydXN0b3IgZnJvbSB0aGUgZ2l2ZW4gZGF0ZVxuICogICAgIGRhdGUuZ2V0VGltZSgpIC8vIFVzZSB0aGUgZGF0ZSB2YWx1ZSB0byBjcmVhdGUgYSBuZXcgZGF0ZVxuICogICApXG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHZhbHVlKSB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgZGF0ZS5jb25zdHJ1Y3Rvcih2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGNvbnN0cnVjdEZyb207XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgImxldCBkZWZhdWx0T3B0aW9ucyA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdE9wdGlvbnMoKSB7XG4gIHJldHVybiBkZWZhdWx0T3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldERlZmF1bHRPcHRpb25zKG5ld09wdGlvbnMpIHtcbiAgZGVmYXVsdE9wdGlvbnMgPSBuZXdPcHRpb25zO1xufVxuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4vX2xpYi9kZWZhdWx0T3B0aW9ucy5tanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIHN0YXJ0T2ZXZWVrfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgc3RhcnRPZldlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIHN0YXJ0IG9mIGEgd2Vla1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPVx1MDAzZSBTdW4gQXVnIDMxIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdGhlIHdlZWsgc3RhcnRzIG9uIE1vbmRheSwgdGhlIHN0YXJ0IG9mIHRoZSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSwgeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIC8vPVx1MDAzZSBNb24gU2VwIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0T2ZXZWVrKGRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICBjb25zdCB3ZWVrU3RhcnRzT24gPVxuICAgIG9wdGlvbnM/LndlZWtTdGFydHNPbiA/P1xuICAgIG9wdGlvbnM/LmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uID8/XG4gICAgZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uID8/XG4gICAgZGVmYXVsdE9wdGlvbnMubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24gPz9cbiAgICAwO1xuXG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCBkYXkgPSBfZGF0ZS5nZXREYXkoKTtcbiAgY29uc3QgZGlmZiA9IChkYXkgXHUwMDNjIHdlZWtTdGFydHNPbiA/IDcgOiAwKSArIGRheSAtIHdlZWtTdGFydHNPbjtcblxuICBfZGF0ZS5zZXREYXRlKF9kYXRlLmdldERhdGUoKSAtIGRpZmYpO1xuICBfZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHN0YXJ0T2ZXZWVrO1xuIiwgImltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuaW1wb3J0IHsgc3RhcnRPZldlZWsgfSBmcm9tIFwiLi9zdGFydE9mV2Vlay5tanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4vX2xpYi9kZWZhdWx0T3B0aW9ucy5tanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIGdldFdlZWtZZWFyfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgZ2V0V2Vla1llYXJcbiAqIEBjYXRlZ29yeSBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSBleGFjdCBjYWxjdWxhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2ZcbiAqIGBvcHRpb25zLndlZWtTdGFydHNPbmAgKHdoaWNoIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrKVxuICogYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKHdoaWNoIGlzIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluXG4gKiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhcilcbiAqXG4gKiBXZWVrIG51bWJlcmluZzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VlayNUaGVfSVNPX3dlZWtfZGF0ZV9zeXN0ZW1cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBnaXZlbiBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKlxuICogQHJldHVybnMgVGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggd2VlayBudW1iZXJpbmcgeWVhciBpcyAyNiBEZWNlbWJlciAyMDA0IHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3M/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrWWVhcihuZXcgRGF0ZSgyMDA0LCAxMSwgMjYpKVxuICogLy89XHUwMDNlIDIwMDVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggd2VlayBudW1iZXJpbmcgeWVhciBpcyAyNiBEZWNlbWJlciAyMDA0IGlmIHdlZWsgc3RhcnRzIG9uIFNhdHVyZGF5P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2Vla1llYXIobmV3IERhdGUoMjAwNCwgMTEsIDI2KSwgeyB3ZWVrU3RhcnRzT246IDYgfSlcbiAqIC8vPVx1MDAzZSAyMDA0XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMjYgRGVjZW1iZXIgMjAwNCBpZiB0aGUgZmlyc3Qgd2VlayBjb250YWlucyA0IEphbnVhcnk/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrWWVhcihuZXcgRGF0ZSgyMDA0LCAxMSwgMjYpLCB7IGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNCB9KVxuICogLy89XHUwMDNlIDIwMDRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdlZWtZZWFyKGRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGNvbnN0IHllYXIgPSBfZGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgY29uc3QgZmlyc3RXZWVrQ29udGFpbnNEYXRlID1cbiAgICBvcHRpb25zPy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICBvcHRpb25zPy5sb2NhbGU/Lm9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIGRlZmF1bHRPcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIGRlZmF1bHRPcHRpb25zLmxvY2FsZT8ub3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgMTtcblxuICBjb25zdCBmaXJzdFdlZWtPZk5leHRZZWFyID0gY29uc3RydWN0RnJvbShkYXRlLCAwKTtcbiAgZmlyc3RXZWVrT2ZOZXh0WWVhci5zZXRGdWxsWWVhcih5ZWFyICsgMSwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrT2ZOZXh0WWVhci5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgY29uc3Qgc3RhcnRPZk5leHRZZWFyID0gc3RhcnRPZldlZWsoZmlyc3RXZWVrT2ZOZXh0WWVhciwgb3B0aW9ucyk7XG5cbiAgY29uc3QgZmlyc3RXZWVrT2ZUaGlzWWVhciA9IGNvbnN0cnVjdEZyb20oZGF0ZSwgMCk7XG4gIGZpcnN0V2Vla09mVGhpc1llYXIuc2V0RnVsbFllYXIoeWVhciwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrT2ZUaGlzWWVhci5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgY29uc3Qgc3RhcnRPZlRoaXNZZWFyID0gc3RhcnRPZldlZWsoZmlyc3RXZWVrT2ZUaGlzWWVhciwgb3B0aW9ucyk7XG5cbiAgaWYgKF9kYXRlLmdldFRpbWUoKSBcdTAwM2U9IHN0YXJ0T2ZOZXh0WWVhci5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4geWVhciArIDE7XG4gIH0gZWxzZSBpZiAoX2RhdGUuZ2V0VGltZSgpIFx1MDAzZT0gc3RhcnRPZlRoaXNZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB5ZWFyIC0gMTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGdldFdlZWtZZWFyO1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICIvKipcbiAqIEBuYW1lIGNvbnN0cnVjdEZyb21cbiAqIEBjYXRlZ29yeSBHZW5lcmljIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnN0cnVjdHMgYSBkYXRlIHVzaW5nIHRoZSByZWZlcmVuY2UgZGF0ZSBhbmQgdGhlIHZhbHVlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGUgZnVuY3Rpb24gY29uc3RydWN0cyBhIG5ldyBkYXRlIHVzaW5nIHRoZSBjb25zdHJ1Y3RvciBmcm9tIHRoZSByZWZlcmVuY2VcbiAqIGRhdGUgYW5kIHRoZSBnaXZlbiB2YWx1ZS4gSXQgaGVscHMgdG8gYnVpbGQgZ2VuZXJpYyBmdW5jdGlvbnMgdGhhdCBhY2NlcHRcbiAqIGRhdGUgZXh0ZW5zaW9ucy5cbiAqXG4gKiBJdCBkZWZhdWx0cyB0byBgRGF0ZWAgaWYgdGhlIHBhc3NlZCByZWZlcmVuY2UgZGF0ZSBpcyBhIG51bWJlciBvciBhIHN0cmluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSByZWZlcmVuY2UgZGF0ZSB0byB0YWtlIGNvbnN0cnVjdG9yIGZyb21cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjcmVhdGUgdGhlIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBEYXRlIGluaXRpYWxpemVkIHVzaW5nIHRoZSBnaXZlbiBkYXRlIGFuZCB2YWx1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSAnZGF0ZS1mbnMnXG4gKlxuICogLy8gQSBmdW5jdGlvbiB0aGF0IGNsb25lcyBhIGRhdGUgcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgdHlwZVxuICogZnVuY3Rpb24gY2xvbmVEYXRlXHUwMDNjRGF0ZVR5cGUgZXh0ZW5kcyBEYXRlKGRhdGU6IERhdGVUeXBlKTogRGF0ZVR5cGUge1xuICogICByZXR1cm4gY29uc3RydWN0RnJvbShcbiAqICAgICBkYXRlLCAvLyBVc2UgY29udHJ1c3RvciBmcm9tIHRoZSBnaXZlbiBkYXRlXG4gKiAgICAgZGF0ZS5nZXRUaW1lKCkgLy8gVXNlIHRoZSBkYXRlIHZhbHVlIHRvIGNyZWF0ZSBhIG5ldyBkYXRlXG4gKiAgIClcbiAqIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdEZyb20oZGF0ZSwgdmFsdWUpIHtcbiAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBkYXRlLmNvbnN0cnVjdG9yKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgY29uc3RydWN0RnJvbTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5pbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBhZGREYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiBkYXlzIHRvIGJlIGFkZGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBkYXlzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAxMCBkYXlzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGREYXlzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAxMClcbiAqIC8vPVx1MDAzZSBUaHUgU2VwIDExIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZERheXMoZGF0ZSwgYW1vdW50KSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBpZiAoaXNOYU4oYW1vdW50KSkgcmV0dXJuIGNvbnN0cnVjdEZyb20oZGF0ZSwgTmFOKTtcbiAgaWYgKCFhbW91bnQpIHtcbiAgICAvLyBJZiAwIGRheXMsIG5vLW9wIHRvIGF2b2lkIGNoYW5naW5nIHRpbWVzIGluIHRoZSBob3VyIGJlZm9yZSBlbmQgb2YgRFNUXG4gICAgcmV0dXJuIF9kYXRlO1xuICB9XG4gIF9kYXRlLnNldERhdGUoX2RhdGUuZ2V0RGF0ZSgpICsgYW1vdW50KTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGFkZERheXM7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgYWRkTW9udGhzXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1vbnRocyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtb250aHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiBtb250aHMgdG8gYmUgYWRkZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIG1vbnRocyBhZGRlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgNSBtb250aHMgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZE1vbnRocyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgNSlcbiAqIC8vPVx1MDAzZSBTdW4gRmViIDAxIDIwMTUgMDA6MDA6MDBcbiAqXG4gKiAvLyBBZGQgb25lIG1vbnRoIHRvIDMwIEphbnVhcnkgMjAyMzpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZE1vbnRocyhuZXcgRGF0ZSgyMDIzLCAwLCAzMCksIDEpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAyOCAyMDIzIDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRNb250aHMoZGF0ZSwgYW1vdW50KSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBpZiAoaXNOYU4oYW1vdW50KSkgcmV0dXJuIGNvbnN0cnVjdEZyb20oZGF0ZSwgTmFOKTtcbiAgaWYgKCFhbW91bnQpIHtcbiAgICAvLyBJZiAwIG1vbnRocywgbm8tb3AgdG8gYXZvaWQgY2hhbmdpbmcgdGltZXMgaW4gdGhlIGhvdXIgYmVmb3JlIGVuZCBvZiBEU1RcbiAgICByZXR1cm4gX2RhdGU7XG4gIH1cbiAgY29uc3QgZGF5T2ZNb250aCA9IF9kYXRlLmdldERhdGUoKTtcblxuICAvLyBUaGUgSlMgRGF0ZSBvYmplY3Qgc3VwcG9ydHMgZGF0ZSBtYXRoIGJ5IGFjY2VwdGluZyBvdXQtb2YtYm91bmRzIHZhbHVlcyBmb3JcbiAgLy8gbW9udGgsIGRheSwgZXRjLiBGb3IgZXhhbXBsZSwgbmV3IERhdGUoMjAyMCwgMCwgMCkgcmV0dXJucyAzMSBEZWMgMjAxOSBhbmRcbiAgLy8gbmV3IERhdGUoMjAyMCwgMTMsIDEpIHJldHVybnMgMSBGZWIgMjAyMS4gIFRoaXMgaXMgKmFsbW9zdCogdGhlIGJlaGF2aW9yIHdlXG4gIC8vIHdhbnQgZXhjZXB0IHRoYXQgZGF0ZXMgd2lsbCB3cmFwIGFyb3VuZCB0aGUgZW5kIG9mIGEgbW9udGgsIG1lYW5pbmcgdGhhdFxuICAvLyBuZXcgRGF0ZSgyMDIwLCAxMywgMzEpIHdpbGwgcmV0dXJuIDMgTWFyIDIwMjEgbm90IDI4IEZlYiAyMDIxIGFzIGRlc2lyZWQuIFNvXG4gIC8vIHdlJ2xsIGRlZmF1bHQgdG8gdGhlIGVuZCBvZiB0aGUgZGVzaXJlZCBtb250aCBieSBhZGRpbmcgMSB0byB0aGUgZGVzaXJlZFxuICAvLyBtb250aCBhbmQgdXNpbmcgYSBkYXRlIG9mIDAgdG8gYmFjayB1cCBvbmUgZGF5IHRvIHRoZSBlbmQgb2YgdGhlIGRlc2lyZWRcbiAgLy8gbW9udGguXG4gIGNvbnN0IGVuZE9mRGVzaXJlZE1vbnRoID0gY29uc3RydWN0RnJvbShkYXRlLCBfZGF0ZS5nZXRUaW1lKCkpO1xuICBlbmRPZkRlc2lyZWRNb250aC5zZXRNb250aChfZGF0ZS5nZXRNb250aCgpICsgYW1vdW50ICsgMSwgMCk7XG4gIGNvbnN0IGRheXNJbk1vbnRoID0gZW5kT2ZEZXNpcmVkTW9udGguZ2V0RGF0ZSgpO1xuICBpZiAoZGF5T2ZNb250aCBcdTAwM2U9IGRheXNJbk1vbnRoKSB7XG4gICAgLy8gSWYgd2UncmUgYWxyZWFkeSBhdCB0aGUgZW5kIG9mIHRoZSBtb250aCwgdGhlbiB0aGlzIGlzIHRoZSBjb3JyZWN0IGRhdGVcbiAgICAvLyBhbmQgd2UncmUgZG9uZS5cbiAgICByZXR1cm4gZW5kT2ZEZXNpcmVkTW9udGg7XG4gIH0gZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlLCB3ZSBub3cga25vdyB0aGF0IHNldHRpbmcgdGhlIG9yaWdpbmFsIGRheS1vZi1tb250aCB2YWx1ZSB3b24ndFxuICAgIC8vIGNhdXNlIGFuIG92ZXJmbG93LCBzbyBzZXQgdGhlIGRlc2lyZWQgZGF5LW9mLW1vbnRoLiBOb3RlIHRoYXQgd2UgY2FuJ3RcbiAgICAvLyBqdXN0IHNldCB0aGUgZGF0ZSBvZiBgZW5kT2ZEZXNpcmVkTW9udGhgIGJlY2F1c2UgdGhhdCBvYmplY3QgbWF5IGhhdmUgaGFkXG4gICAgLy8gaXRzIHRpbWUgY2hhbmdlZCBpbiB0aGUgdW51c3VhbCBjYXNlIHdoZXJlIHdoZXJlIGEgRFNUIHRyYW5zaXRpb24gd2FzIG9uXG4gICAgLy8gdGhlIGxhc3QgZGF5IG9mIHRoZSBtb250aCBhbmQgaXRzIGxvY2FsIHRpbWUgd2FzIGluIHRoZSBob3VyIHNraXBwZWQgb3JcbiAgICAvLyByZXBlYXRlZCBuZXh0IHRvIGEgRFNUIHRyYW5zaXRpb24uICBTbyB3ZSB1c2UgYGRhdGVgIGluc3RlYWQgd2hpY2ggaXNcbiAgICAvLyBndWFyYW50ZWVkIHRvIHN0aWxsIGhhdmUgdGhlIG9yaWdpbmFsIHRpbWUuXG4gICAgX2RhdGUuc2V0RnVsbFllYXIoXG4gICAgICBlbmRPZkRlc2lyZWRNb250aC5nZXRGdWxsWWVhcigpLFxuICAgICAgZW5kT2ZEZXNpcmVkTW9udGguZ2V0TW9udGgoKSxcbiAgICAgIGRheU9mTW9udGgsXG4gICAgKTtcbiAgICByZXR1cm4gX2RhdGU7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGRNb250aHM7XG4iLCAiaW1wb3J0IHsgYWRkRGF5cyB9IGZyb20gXCIuL2FkZERheXMubWpzXCI7XG5pbXBvcnQgeyBhZGRNb250aHMgfSBmcm9tIFwiLi9hZGRNb250aHMubWpzXCI7XG5pbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5tanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBhZGRcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGR1cmF0aW9uIC0gVGhlIG9iamVjdCB3aXRoIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcyB0byBiZSBhZGRlZC5cbiAqXG4gKiB8IEtleSAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8IHllYXJzICAgICAgICAgIHwgQW1vdW50IG9mIHllYXJzIHRvIGJlIGFkZGVkICAgICAgICB8XG4gKiB8IG1vbnRocyAgICAgICAgIHwgQW1vdW50IG9mIG1vbnRocyB0byBiZSBhZGRlZCAgICAgICB8XG4gKiB8IHdlZWtzICAgICAgICAgIHwgQW1vdW50IG9mIHdlZWtzIHRvIGJlIGFkZGVkICAgICAgICB8XG4gKiB8IGRheXMgICAgICAgICAgIHwgQW1vdW50IG9mIGRheXMgdG8gYmUgYWRkZWQgICAgICAgICB8XG4gKiB8IGhvdXJzICAgICAgICAgIHwgQW1vdW50IG9mIGhvdXJzIHRvIGJlIGFkZGVkICAgICAgICB8XG4gKiB8IG1pbnV0ZXMgICAgICAgIHwgQW1vdW50IG9mIG1pbnV0ZXMgdG8gYmUgYWRkZWQgICAgICB8XG4gKiB8IHNlY29uZHMgICAgICAgIHwgQW1vdW50IG9mIHNlY29uZHMgdG8gYmUgYWRkZWQgICAgICB8XG4gKlxuICogQWxsIHZhbHVlcyBkZWZhdWx0IHRvIDBcbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgc2Vjb25kcyBhZGRlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgdGhlIGZvbGxvd2luZyBkdXJhdGlvbiB0byAxIFNlcHRlbWJlciAyMDE0LCAxMDoxOTo1MFxuICogY29uc3QgcmVzdWx0ID0gYWRkKG5ldyBEYXRlKDIwMTQsIDgsIDEsIDEwLCAxOSwgNTApLCB7XG4gKiAgIHllYXJzOiAyLFxuICogICBtb250aHM6IDksXG4gKiAgIHdlZWtzOiAxLFxuICogICBkYXlzOiA3LFxuICogICBob3VyczogNSxcXFxcLTdcbiAqICAgbWludXRlczogOSxcbiAqICAgc2Vjb25kczogMzAsXG4gKiB9KVxuICogLy89XHUwMDNlIFRodSBKdW4gMTUgMjAxNyAxNToyOToyMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkKGRhdGUsIGR1cmF0aW9uKSB7XG4gIGNvbnN0IHtcbiAgICB5ZWFycyA9IDAsXG4gICAgbW9udGhzID0gMCxcbiAgICB3ZWVrcyA9IDAsXG4gICAgZGF5cyA9IDAsXG4gICAgaG91cnMgPSAwLFxuICAgIG1pbnV0ZXMgPSAwLFxuICAgIHNlY29uZHMgPSAwLFxuICB9ID0gZHVyYXRpb247XG5cbiAgLy8gQWRkIHllYXJzIGFuZCBtb250aHNcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGNvbnN0IGRhdGVXaXRoTW9udGhzID1cbiAgICBtb250aHMgfHwgeWVhcnMgPyBhZGRNb250aHMoX2RhdGUsIG1vbnRocyArIHllYXJzICogMTIpIDogX2RhdGU7XG5cbiAgLy8gQWRkIHdlZWtzIGFuZCBkYXlzXG4gIGNvbnN0IGRhdGVXaXRoRGF5cyA9XG4gICAgZGF5cyB8fCB3ZWVrcyA/IGFkZERheXMoZGF0ZVdpdGhNb250aHMsIGRheXMgKyB3ZWVrcyAqIDcpIDogZGF0ZVdpdGhNb250aHM7XG5cbiAgLy8gQWRkIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzXG4gIGNvbnN0IG1pbnV0ZXNUb0FkZCA9IG1pbnV0ZXMgKyBob3VycyAqIDYwO1xuICBjb25zdCBzZWNvbmRzVG9BZGQgPSBzZWNvbmRzICsgbWludXRlc1RvQWRkICogNjA7XG4gIGNvbnN0IG1zVG9BZGQgPSBzZWNvbmRzVG9BZGQgKiAxMDAwO1xuICBjb25zdCBmaW5hbERhdGUgPSBjb25zdHJ1Y3RGcm9tKGRhdGUsIGRhdGVXaXRoRGF5cy5nZXRUaW1lKCkgKyBtc1RvQWRkKTtcblxuICByZXR1cm4gZmluYWxEYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGFkZDtcbiIsICIvKipcbiAqIEBtb2R1bGUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBVc2VmdWwgY29uc3RhbnRzXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbGxlY3Rpb24gb2YgdXNlZnVsIGRhdGUgY29uc3RhbnRzLlxuICpcbiAqIFRoZSBjb25zdGFudHMgY291bGQgYmUgaW1wb3J0ZWQgZnJvbSBgZGF0ZS1mbnMvY29uc3RhbnRzYDpcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbWF4VGltZSwgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBmdW5jdGlvbiBpc0FsbG93ZWRUaW1lKHRpbWUpIHtcbiAqICAgcmV0dXJuIHRpbWUgXHUwMDNjPSBtYXhUaW1lIFx1MDAyNlx1MDAyNiB0aW1lIFx1MDAzZT0gbWluVGltZTtcbiAqIH1cbiAqIGBgYFxuICovXG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBkYXlzSW5XZWVrXG4gKiBAc3VtbWFyeSBEYXlzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IGRheXNJbldlZWsgPSA3O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgZGF5c0luWWVhclxuICogQHN1bW1hcnkgRGF5cyBpbiAxIHllYXIuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBIb3cgbWFueSBkYXlzIGluIGEgeWVhci5cbiAqXG4gKiBPbmUgeWVhcnMgZXF1YWxzIDM2NS4yNDI1IGRheXMgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlxuICpcbiAqIFx1MDAzZSBMZWFwIHllYXIgb2NjdXJlcyBldmVyeSA0IHllYXJzLCBleGNlcHQgZm9yIHllYXJzIHRoYXQgYXJlIGRpdmlzYWJsZSBieSAxMDAgYW5kIG5vdCBkaXZpc2FibGUgYnkgNDAwLlxuICogXHUwMDNlIDEgbWVhbiB5ZWFyID0gKDM2NSsxLzQtMS8xMDArMS80MDApIGRheXMgPSAzNjUuMjQyNSBkYXlzXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5ZZWFyID0gMzY1LjI0MjU7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtYXhUaW1lXG4gKiBAc3VtbWFyeSBNYXhpbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgbWF4VGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBjb25zdCBpc1ZhbGlkID0gODY0MDAwMDAwMDAwMDAwMSBcdTAwM2M9IG1heFRpbWU7XG4gKiAvLz1cdTAwM2UgZmFsc2VcbiAqXG4gKiBuZXcgRGF0ZSg4NjQwMDAwMDAwMDAwMDAxKTtcbiAqIC8vPVx1MDAzZSBJbnZhbGlkIERhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1heFRpbWUgPSBNYXRoLnBvdygxMCwgOCkgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWluVGltZVxuICogQHN1bW1hcnkgTWluaW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IG1pblRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogY29uc3QgaXNWYWxpZCA9IC04NjQwMDAwMDAwMDAwMDAxIFx1MDAzZT0gbWluVGltZTtcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICpcbiAqIG5ldyBEYXRlKC04NjQwMDAwMDAwMDAwMDAxKVxuICogLy89XHUwMDNlIEludmFsaWQgRGF0ZVxuICovXG5leHBvcnQgY29uc3QgbWluVGltZSA9IC1tYXhUaW1lO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5XZWVrID0gNjA0ODAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luRGF5ID0gODY0MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbk1pbnV0ZVxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgbWludXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbk1pbnV0ZSA9IDYwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBob3VyXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbkhvdXIgPSAzNjAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5TZWNvbmRcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIHNlY29uZFxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5TZWNvbmQgPSAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luWWVhclxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5ZZWFyID0gNTI1NjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luTW9udGhcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBtb250aC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbk1vbnRoID0gNDMyMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5EYXkgPSAxNDQwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luSG91clxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIGhvdXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5Ib3VyID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtb250aHNJblF1YXJ0ZXJcbiAqIEBzdW1tYXJ5IE1vbnRocyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aHNJblF1YXJ0ZXIgPSAzO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbW9udGhzSW5ZZWFyXG4gKiBAc3VtbWFyeSBNb250aHMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3QgbW9udGhzSW5ZZWFyID0gMTI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBxdWFydGVyc0luWWVhclxuICogQHN1bW1hcnkgUXVhcnRlcnMgaW4gMSB5ZWFyXG4gKi9cbmV4cG9ydCBjb25zdCBxdWFydGVyc0luWWVhciA9IDQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgaG91ci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbkhvdXIgPSAzNjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luTWludXRlXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbWludXRlLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luTWludXRlID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5EYXkgPSBzZWNvbmRzSW5Ib3VyICogMjQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbldlZWsgPSBzZWNvbmRzSW5EYXkgKiA3O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luWWVhclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5ZZWFyID0gc2Vjb25kc0luRGF5ICogZGF5c0luWWVhcjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbk1vbnRoXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbW9udGhcbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbk1vbnRoID0gc2Vjb25kc0luWWVhciAvIDEyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luUXVhcnRlclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5RdWFydGVyID0gc2Vjb25kc0luTW9udGggKiAzO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBzdGFydE9mRGF5XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSBkYXkgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIGRheSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIG9yaWdpbmFsIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgc3RhcnQgb2YgYSBkYXlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgZGF5IGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZkRheShuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89XHUwMDNlIFR1ZSBTZXAgMDIgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRPZkRheShkYXRlKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBfZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHN0YXJ0T2ZEYXk7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4uL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBHb29nbGUgQ2hyb21lIGFzIG9mIDY3LjAuMzM5Ni44NyBpbnRyb2R1Y2VkIHRpbWV6b25lcyB3aXRoIG9mZnNldCB0aGF0IGluY2x1ZGVzIHNlY29uZHMuXG4gKiBUaGV5IHVzdWFsbHkgYXBwZWFyIGZvciBkYXRlcyB0aGF0IGRlbm90ZSB0aW1lIGJlZm9yZSB0aGUgdGltZXpvbmVzIHdlcmUgaW50cm9kdWNlZFxuICogKGUuZy4gZm9yICdFdXJvcGUvUHJhZ3VlJyB0aW1lem9uZSB0aGUgb2Zmc2V0IGlzIEdNVCswMDo1Nzo0NCBiZWZvcmUgMSBPY3RvYmVyIDE4OTFcbiAqIGFuZCBHTVQrMDE6MDA6MDAgYWZ0ZXIgdGhhdCBkYXRlKVxuICpcbiAqIERhdGUjZ2V0VGltZXpvbmVPZmZzZXQgcmV0dXJucyB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgYW5kIHdvdWxkIHJldHVybiA1NyBmb3IgdGhlIGV4YW1wbGUgYWJvdmUsXG4gKiB3aGljaCB3b3VsZCBsZWFkIHRvIGluY29ycmVjdCBjYWxjdWxhdGlvbnMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB0aW1lem9uZSBvZmZzZXQgaW4gbWlsbGlzZWNvbmRzIHRoYXQgdGFrZXMgc2Vjb25kcyBpbiBhY2NvdW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCB1dGNEYXRlID0gbmV3IERhdGUoXG4gICAgRGF0ZS5VVEMoXG4gICAgICBfZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgX2RhdGUuZ2V0TW9udGgoKSxcbiAgICAgIF9kYXRlLmdldERhdGUoKSxcbiAgICAgIF9kYXRlLmdldEhvdXJzKCksXG4gICAgICBfZGF0ZS5nZXRNaW51dGVzKCksXG4gICAgICBfZGF0ZS5nZXRTZWNvbmRzKCksXG4gICAgICBfZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSxcbiAgICApLFxuICApO1xuICB1dGNEYXRlLnNldFVUQ0Z1bGxZZWFyKF9kYXRlLmdldEZ1bGxZZWFyKCkpO1xuICByZXR1cm4gK2RhdGUgLSArdXRjRGF0ZTtcbn1cbiIsICJpbXBvcnQgeyBtaWxsaXNlY29uZHNJbkRheSB9IGZyb20gXCIuL2NvbnN0YW50cy5tanNcIjtcbmltcG9ydCB7IHN0YXJ0T2ZEYXkgfSBmcm9tIFwiLi9zdGFydE9mRGF5Lm1qc1wiO1xuaW1wb3J0IHsgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgZGF5cyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIGRheXMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgdGltZXMgYXJlIHJlbW92ZWRcbiAqIGZyb20gdGhlIGRhdGVzIGFuZCB0aGVuIHRoZSBkaWZmZXJlbmNlIGluIGRheXMgaXMgY2FsY3VsYXRlZC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIGRhdGVSaWdodCAtIFRoZSBlYXJsaWVyIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGNhbGVuZGFyIGRheXNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6MDA6MDAgYW5kIDIgSnVseSAyMDEyIDAwOjAwOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKFxuICogICBuZXcgRGF0ZSgyMDEyLCA2LCAyLCAwLCAwKSxcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMiwgMjMsIDApXG4gKiApXG4gKiAvLz1cdTAwM2UgMzY2XG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxMSAyMzo1OTowMCBhbmQgMyBKdWx5IDIwMTEgMDA6MDE6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDMsIDAsIDEpLFxuICogICBuZXcgRGF0ZSgyMDExLCA2LCAyLCAyMywgNTkpXG4gKiApXG4gKiAvLz1cdTAwM2UgMVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIHtcbiAgY29uc3Qgc3RhcnRPZkRheUxlZnQgPSBzdGFydE9mRGF5KGRhdGVMZWZ0KTtcbiAgY29uc3Qgc3RhcnRPZkRheVJpZ2h0ID0gc3RhcnRPZkRheShkYXRlUmlnaHQpO1xuXG4gIGNvbnN0IHRpbWVzdGFtcExlZnQgPVxuICAgICtzdGFydE9mRGF5TGVmdCAtIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoc3RhcnRPZkRheUxlZnQpO1xuICBjb25zdCB0aW1lc3RhbXBSaWdodCA9XG4gICAgK3N0YXJ0T2ZEYXlSaWdodCAtIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoc3RhcnRPZkRheVJpZ2h0KTtcblxuICAvLyBSb3VuZCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciBiZWNhdXNlIHRoZSBudW1iZXIgb2ZcbiAgLy8gbWlsbGlzZWNvbmRzIGluIGEgZGF5IGlzIG5vdCBjb25zdGFudCAoZS5nLiBpdCdzIGRpZmZlcmVudCBpbiB0aGUgd2VlayBvZlxuICAvLyB0aGUgZGF5bGlnaHQgc2F2aW5nIHRpbWUgY2xvY2sgc2hpZnQpLlxuICByZXR1cm4gTWF0aC5yb3VuZCgodGltZXN0YW1wTGVmdCAtIHRpbWVzdGFtcFJpZ2h0KSAvIG1pbGxpc2Vjb25kc0luRGF5KTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXM7XG4iLCAiaW1wb3J0IHsgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkRheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgZnVsbCBkYXlzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgZnVsbCBkYXkgcGVyaW9kcyBiZXR3ZWVuIHR3byBkYXRlcy4gRnJhY3Rpb25hbCBkYXlzIGFyZVxuICogdHJ1bmNhdGVkIHRvd2FyZHMgemVyby5cbiAqXG4gKiBPbmUgXCJmdWxsIGRheVwiIGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIGEgbG9jYWwgdGltZSBpbiBvbmUgZGF5IHRvIHRoZSBzYW1lXG4gKiBsb2NhbCB0aW1lIG9uIHRoZSBuZXh0IG9yIHByZXZpb3VzIGRheS4gQSBmdWxsIGRheSBjYW4gc29tZXRpbWVzIGJlIGxlc3MgdGhhblxuICogb3IgbW9yZSB0aGFuIDI0IGhvdXJzIGlmIGEgZGF5bGlnaHQgc2F2aW5ncyBjaGFuZ2UgaGFwcGVucyBiZXR3ZWVuIHR3byBkYXRlcy5cbiAqXG4gKiBUbyBpZ25vcmUgRFNUIGFuZCBvbmx5IG1lYXN1cmUgZXhhY3QgMjQtaG91ciBwZXJpb2RzLCB1c2UgdGhpcyBpbnN0ZWFkOlxuICogYE1hdGgudHJ1bmMoZGlmZmVyZW5jZUluSG91cnMoZGF0ZUxlZnQsIGRhdGVSaWdodCkvMjQpfDBgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlTGVmdCAtIFRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0gZGF0ZVJpZ2h0IC0gVGhlIGVhcmxpZXIgZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgZnVsbCBkYXlzIGFjY29yZGluZyB0byB0aGUgbG9jYWwgdGltZXpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZnVsbCBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxMSAyMzowMDowMCBhbmQgMiBKdWx5IDIwMTIgMDA6MDA6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5EYXlzKFxuICogICBuZXcgRGF0ZSgyMDEyLCA2LCAyLCAwLCAwKSxcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMiwgMjMsIDApXG4gKiApXG4gKiAvLz1cdTAwM2UgMzY1XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6NTk6MDAgYW5kIDMgSnVseSAyMDExIDAwOjAxOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMywgMCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDIsIDIzLCA1OSlcbiAqIClcbiAqIC8vPVx1MDAzZSAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMSBNYXJjaCAyMDIwIDA6MDAgYW5kIDEgSnVuZSAyMDIwIDA6MDAgP1xuICogLy8gTm90ZTogYmVjYXVzZSBsb2NhbCB0aW1lIGlzIHVzZWQsIHRoZVxuICogLy8gcmVzdWx0IHdpbGwgYWx3YXlzIGJlIDkyIGRheXMsIGV2ZW4gaW5cbiAqIC8vIHRpbWUgem9uZXMgd2hlcmUgRFNUIHN0YXJ0cyBhbmQgdGhlXG4gKiAvLyBwZXJpb2QgaGFzIG9ubHkgOTIqMjQtMSBob3Vycy5cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkRheXMoXG4gKiAgIG5ldyBEYXRlKDIwMjAsIDUsIDEpLFxuICogICBuZXcgRGF0ZSgyMDIwLCAyLCAxKVxuICogKVxuICogLy89XHUwMDNlIDkyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5EYXlzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIHtcbiAgY29uc3QgX2RhdGVMZWZ0ID0gdG9EYXRlKGRhdGVMZWZ0KTtcbiAgY29uc3QgX2RhdGVSaWdodCA9IHRvRGF0ZShkYXRlUmlnaHQpO1xuXG4gIGNvbnN0IHNpZ24gPSBjb21wYXJlTG9jYWxBc2MoX2RhdGVMZWZ0LCBfZGF0ZVJpZ2h0KTtcbiAgY29uc3QgZGlmZmVyZW5jZSA9IE1hdGguYWJzKGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhfZGF0ZUxlZnQsIF9kYXRlUmlnaHQpKTtcblxuICBfZGF0ZUxlZnQuc2V0RGF0ZShfZGF0ZUxlZnQuZ2V0RGF0ZSgpIC0gc2lnbiAqIGRpZmZlcmVuY2UpO1xuXG4gIC8vIE1hdGguYWJzKGRpZmYgaW4gZnVsbCBkYXlzIC0gZGlmZiBpbiBjYWxlbmRhciBkYXlzKSA9PT0gMSBpZiBsYXN0IGNhbGVuZGFyIGRheSBpcyBub3QgZnVsbFxuICAvLyBJZiBzbywgcmVzdWx0IG11c3QgYmUgZGVjcmVhc2VkIGJ5IDEgaW4gYWJzb2x1dGUgdmFsdWVcbiAgY29uc3QgaXNMYXN0RGF5Tm90RnVsbCA9IE51bWJlcihcbiAgICBjb21wYXJlTG9jYWxBc2MoX2RhdGVMZWZ0LCBfZGF0ZVJpZ2h0KSA9PT0gLXNpZ24sXG4gICk7XG4gIGNvbnN0IHJlc3VsdCA9IHNpZ24gKiAoZGlmZmVyZW5jZSAtIGlzTGFzdERheU5vdEZ1bGwpO1xuICAvLyBQcmV2ZW50IG5lZ2F0aXZlIHplcm9cbiAgcmV0dXJuIHJlc3VsdCA9PT0gMCA/IDAgOiByZXN1bHQ7XG59XG5cbi8vIExpa2UgYGNvbXBhcmVBc2NgIGJ1dCB1c2VzIGxvY2FsIHRpbWUgbm90IFVUQywgd2hpY2ggaXMgbmVlZGVkXG4vLyBmb3IgYWNjdXJhdGUgZXF1YWxpdHkgY29tcGFyaXNvbnMgb2YgVVRDIHRpbWVzdGFtcHMgdGhhdCBlbmQgdXBcbi8vIGhhdmluZyB0aGUgc2FtZSByZXByZXNlbnRhdGlvbiBpbiBsb2NhbCB0aW1lLCBlLmcuIG9uZSBob3VyIGJlZm9yZVxuLy8gRFNUIGVuZHMgdnMuIHRoZSBpbnN0YW50IHRoYXQgRFNUIGVuZHMuXG5mdW5jdGlvbiBjb21wYXJlTG9jYWxBc2MoZGF0ZUxlZnQsIGRhdGVSaWdodCkge1xuICBjb25zdCBkaWZmID1cbiAgICBkYXRlTGVmdC5nZXRGdWxsWWVhcigpIC0gZGF0ZVJpZ2h0LmdldEZ1bGxZZWFyKCkgfHxcbiAgICBkYXRlTGVmdC5nZXRNb250aCgpIC0gZGF0ZVJpZ2h0LmdldE1vbnRoKCkgfHxcbiAgICBkYXRlTGVmdC5nZXREYXRlKCkgLSBkYXRlUmlnaHQuZ2V0RGF0ZSgpIHx8XG4gICAgZGF0ZUxlZnQuZ2V0SG91cnMoKSAtIGRhdGVSaWdodC5nZXRIb3VycygpIHx8XG4gICAgZGF0ZUxlZnQuZ2V0TWludXRlcygpIC0gZGF0ZVJpZ2h0LmdldE1pbnV0ZXMoKSB8fFxuICAgIGRhdGVMZWZ0LmdldFNlY29uZHMoKSAtIGRhdGVSaWdodC5nZXRTZWNvbmRzKCkgfHxcbiAgICBkYXRlTGVmdC5nZXRNaWxsaXNlY29uZHMoKSAtIGRhdGVSaWdodC5nZXRNaWxsaXNlY29uZHMoKTtcblxuICBpZiAoZGlmZiBcdTAwM2MgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfSBlbHNlIGlmIChkaWZmIFx1MDAzZSAwKSB7XG4gICAgcmV0dXJuIDE7XG4gICAgLy8gUmV0dXJuIDAgaWYgZGlmZiBpcyAwOyByZXR1cm4gTmFOIGlmIGRpZmYgaXMgTmFOXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGRpZmY7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBkaWZmZXJlbmNlSW5EYXlzO1xuIiwgImV4cG9ydCBmdW5jdGlvbiBnZXRSb3VuZGluZ01ldGhvZChtZXRob2QpIHtcbiAgcmV0dXJuIChudW1iZXIpID1cdTAwM2Uge1xuICAgIGNvbnN0IHJvdW5kID0gbWV0aG9kID8gTWF0aFttZXRob2RdIDogTWF0aC50cnVuYztcbiAgICBjb25zdCByZXN1bHQgPSByb3VuZChudW1iZXIpO1xuICAgIC8vIFByZXZlbnQgbmVnYXRpdmUgemVyb1xuICAgIHJldHVybiByZXN1bHQgPT09IDAgPyAwIDogcmVzdWx0O1xuICB9O1xufVxuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHNcbiAqIEBjYXRlZ29yeSBNaWxsaXNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGVMZWZ0IC0gVGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSBkYXRlUmlnaHQgLSBUaGUgZWFybGllciBkYXRlXG4gKlxuICogQHJldHVybnMgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgbWlsbGlzZWNvbmRzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxNCAxMjozMDoyMC42MDAgYW5kIDIgSnVseSAyMDE0IDEyOjMwOjIxLjcwMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTIsIDMwLCAyMSwgNzAwKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTIsIDMwLCAyMCwgNjAwKVxuICogKVxuICogLy89XHUwMDNlIDExMDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSB7XG4gIHJldHVybiArdG9EYXRlKGRhdGVMZWZ0KSAtICt0b0RhdGUoZGF0ZVJpZ2h0KTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHM7XG4iLCAiaW1wb3J0IHsgZ2V0Um91bmRpbmdNZXRob2QgfSBmcm9tIFwiLi9fbGliL2dldFJvdW5kaW5nTWV0aG9kLm1qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5Ib3VyIH0gZnJvbSBcIi4vY29uc3RhbnRzLm1qc1wiO1xuaW1wb3J0IHsgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgZGlmZmVyZW5jZUluSG91cnN9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5Ib3Vyc1xuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgaG91cnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBob3VycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIGRhdGVSaWdodCAtIFRoZSBlYXJsaWVyIGRhdGVcbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGhvdXJzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGhvdXJzIGFyZSBiZXR3ZWVuIDIgSnVseSAyMDE0IDA2OjUwOjAwIGFuZCAyIEp1bHkgMjAxNCAxOTowMDowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkhvdXJzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCAxOSwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDYsIDUwKVxuICogKVxuICogLy89XHUwMDNlIDEyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5Ib3VycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0LCBvcHRpb25zKSB7XG4gIGNvbnN0IGRpZmYgPVxuICAgIGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSAvIG1pbGxpc2Vjb25kc0luSG91cjtcbiAgcmV0dXJuIGdldFJvdW5kaW5nTWV0aG9kKG9wdGlvbnM/LnJvdW5kaW5nTWV0aG9kKShkaWZmKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBkaWZmZXJlbmNlSW5Ib3VycztcbiIsICJpbXBvcnQgeyBnZXRSb3VuZGluZ01ldGhvZCB9IGZyb20gXCIuL19saWIvZ2V0Um91bmRpbmdNZXRob2QubWpzXCI7XG5pbXBvcnQgeyBtaWxsaXNlY29uZHNJbk1pbnV0ZSB9IGZyb20gXCIuL2NvbnN0YW50cy5tanNcIjtcbmltcG9ydCB7IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcy5tanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIGRpZmZlcmVuY2VJbk1pbnV0ZXN9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5NaW51dGVzXG4gKiBAY2F0ZWdvcnkgTWludXRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIHNpZ25lZCBudW1iZXIgb2YgZnVsbCAocm91bmRlZCB0b3dhcmRzIDApIG1pbnV0ZXMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGVMZWZ0IC0gVGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSBkYXRlUmlnaHQgLSBUaGUgZWFybGllciBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKlxuICogQHJldHVybnMgVGhlIG51bWJlciBvZiBtaW51dGVzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IG1pbnV0ZXMgYXJlIGJldHdlZW4gMiBKdWx5IDIwMTQgMTI6MDc6NTkgYW5kIDIgSnVseSAyMDE0IDEyOjIwOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluTWludXRlcyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTIsIDIwLCAwKSxcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTIsIDcsIDU5KVxuICogKVxuICogLy89XHUwMDNlIDEyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IG1pbnV0ZXMgYXJlIGJldHdlZW4gMTA6MDE6NTkgYW5kIDEwOjAwOjAwXG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5NaW51dGVzKFxuICogICBuZXcgRGF0ZSgyMDAwLCAwLCAxLCAxMCwgMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMDAsIDAsIDEsIDEwLCAxLCA1OSlcbiAqIClcbiAqIC8vPVx1MDAzZSAtMVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZUluTWludXRlcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0LCBvcHRpb25zKSB7XG4gIGNvbnN0IGRpZmYgPVxuICAgIGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSAvIG1pbGxpc2Vjb25kc0luTWludXRlO1xuICByZXR1cm4gZ2V0Um91bmRpbmdNZXRob2Qob3B0aW9ucz8ucm91bmRpbmdNZXRob2QpKGRpZmYpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGRpZmZlcmVuY2VJbk1pbnV0ZXM7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGNvbXBhcmVBc2NcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29tcGFyZSB0aGUgdHdvIGRhdGVzIGFuZCByZXR1cm4gLTEsIDAgb3IgMS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbXBhcmUgdGhlIHR3byBkYXRlcyBhbmQgcmV0dXJuIDEgaWYgdGhlIGZpcnN0IGRhdGUgaXMgYWZ0ZXIgdGhlIHNlY29uZCxcbiAqIC0xIGlmIHRoZSBmaXJzdCBkYXRlIGlzIGJlZm9yZSB0aGUgc2Vjb25kIG9yIDAgaWYgZGF0ZXMgYXJlIGVxdWFsLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlTGVmdCAtIFRoZSBmaXJzdCBkYXRlIHRvIGNvbXBhcmVcbiAqIEBwYXJhbSBkYXRlUmlnaHQgLSBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZVxuICpcbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb25cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29tcGFyZSAxMSBGZWJydWFyeSAxOTg3IGFuZCAxMCBKdWx5IDE5ODk6XG4gKiBjb25zdCByZXN1bHQgPSBjb21wYXJlQXNjKG5ldyBEYXRlKDE5ODcsIDEsIDExKSwgbmV3IERhdGUoMTk4OSwgNiwgMTApKVxuICogLy89XHUwMDNlIC0xXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNvcnQgdGhlIGFycmF5IG9mIGRhdGVzOlxuICogY29uc3QgcmVzdWx0ID0gW1xuICogICBuZXcgRGF0ZSgxOTk1LCA2LCAyKSxcbiAqICAgbmV3IERhdGUoMTk4NywgMSwgMTEpLFxuICogICBuZXcgRGF0ZSgxOTg5LCA2LCAxMClcbiAqIF0uc29ydChjb21wYXJlQXNjKVxuICogLy89XHUwMDNlIFtcbiAqIC8vICAgV2VkIEZlYiAxMSAxOTg3IDAwOjAwOjAwLFxuICogLy8gICBNb24gSnVsIDEwIDE5ODkgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBKdWwgMDIgMTk5NSAwMDowMDowMFxuICogLy8gXVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZUFzYyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSB7XG4gIGNvbnN0IF9kYXRlTGVmdCA9IHRvRGF0ZShkYXRlTGVmdCk7XG4gIGNvbnN0IF9kYXRlUmlnaHQgPSB0b0RhdGUoZGF0ZVJpZ2h0KTtcblxuICBjb25zdCBkaWZmID0gX2RhdGVMZWZ0LmdldFRpbWUoKSAtIF9kYXRlUmlnaHQuZ2V0VGltZSgpO1xuXG4gIGlmIChkaWZmIFx1MDAzYyAwKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9IGVsc2UgaWYgKGRpZmYgXHUwMDNlIDApIHtcbiAgICByZXR1cm4gMTtcbiAgICAvLyBSZXR1cm4gMCBpZiBkaWZmIGlzIDA7IHJldHVybiBOYU4gaWYgZGlmZiBpcyBOYU5cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGlmZjtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGNvbXBhcmVBc2M7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgbW9udGhzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgbW9udGhzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlTGVmdCAtIFRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0gZGF0ZVJpZ2h0IC0gVGhlIGVhcmxpZXIgZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgY2FsZW5kYXIgbW9udGhzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGNhbGVuZGFyIG1vbnRocyBhcmUgYmV0d2VlbiAzMSBKYW51YXJ5IDIwMTQgYW5kIDEgU2VwdGVtYmVyIDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyhcbiAqICAgbmV3IERhdGUoMjAxNCwgOCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDAsIDMxKVxuICogKVxuICogLy89XHUwMDNlIDhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIHtcbiAgY29uc3QgX2RhdGVMZWZ0ID0gdG9EYXRlKGRhdGVMZWZ0KTtcbiAgY29uc3QgX2RhdGVSaWdodCA9IHRvRGF0ZShkYXRlUmlnaHQpO1xuXG4gIGNvbnN0IHllYXJEaWZmID0gX2RhdGVMZWZ0LmdldEZ1bGxZZWFyKCkgLSBfZGF0ZVJpZ2h0LmdldEZ1bGxZZWFyKCk7XG4gIGNvbnN0IG1vbnRoRGlmZiA9IF9kYXRlTGVmdC5nZXRNb250aCgpIC0gX2RhdGVSaWdodC5nZXRNb250aCgpO1xuXG4gIHJldHVybiB5ZWFyRGlmZiAqIDEyICsgbW9udGhEaWZmO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGRpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBlbmRPZkRheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiBhIGRheSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGVuZCBvZiBhIGRheSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIG9yaWdpbmFsIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgZW5kIG9mIGEgZGF5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBlbmQgb2YgYSBkYXkgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBlbmRPZkRheShuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89XHUwMDNlIFR1ZSBTZXAgMDIgMjAxNCAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuZE9mRGF5KGRhdGUpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIF9kYXRlLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBlbmRPZkRheTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgZW5kT2ZNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGEgbW9udGggZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYSBtb250aCBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIG9yaWdpbmFsIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgZW5kIG9mIGEgbW9udGhcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhIG1vbnRoIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZNb250aChuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89XHUwMDNlIFR1ZSBTZXAgMzAgMjAxNCAyMzo1OTo1OS45OTlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuZE9mTW9udGgoZGF0ZSkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgY29uc3QgbW9udGggPSBfZGF0ZS5nZXRNb250aCgpO1xuICBfZGF0ZS5zZXRGdWxsWWVhcihfZGF0ZS5nZXRGdWxsWWVhcigpLCBtb250aCArIDEsIDApO1xuICBfZGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZW5kT2ZNb250aDtcbiIsICJpbXBvcnQgeyBlbmRPZkRheSB9IGZyb20gXCIuL2VuZE9mRGF5Lm1qc1wiO1xuaW1wb3J0IHsgZW5kT2ZNb250aCB9IGZyb20gXCIuL2VuZE9mTW9udGgubWpzXCI7XG5pbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgaXNMYXN0RGF5T2ZNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIHRoZSBsYXN0IGRheSBvZiBhIG1vbnRoP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGdpdmVuIGRhdGUgdGhlIGxhc3QgZGF5IG9mIGEgbW9udGg/XG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBjaGVja1xuXG4gKiBAcmV0dXJucyBUaGUgZGF0ZSBpcyB0aGUgbGFzdCBkYXkgb2YgYSBtb250aFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAyOCBGZWJydWFyeSAyMDE0IHRoZSBsYXN0IGRheSBvZiBhIG1vbnRoP1xuICogY29uc3QgcmVzdWx0ID0gaXNMYXN0RGF5T2ZNb250aChuZXcgRGF0ZSgyMDE0LCAxLCAyOCkpXG4gKiAvLz1cdTAwM2UgdHJ1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMYXN0RGF5T2ZNb250aChkYXRlKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICByZXR1cm4gK2VuZE9mRGF5KF9kYXRlKSA9PT0gK2VuZE9mTW9udGgoX2RhdGUpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGlzTGFzdERheU9mTW9udGg7XG4iLCAiaW1wb3J0IHsgY29tcGFyZUFzYyB9IGZyb20gXCIuL2NvbXBhcmVBc2MubWpzXCI7XG5pbXBvcnQgeyBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkNhbGVuZGFyTW9udGhzLm1qc1wiO1xuaW1wb3J0IHsgaXNMYXN0RGF5T2ZNb250aCB9IGZyb20gXCIuL2lzTGFzdERheU9mTW9udGgubWpzXCI7XG5pbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluTW9udGhzXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgZnVsbCBtb250aHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBmdWxsIG1vbnRocyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcyB1c2luZyB0cnVuYyBhcyBhIGRlZmF1bHQgcm91bmRpbmcgbWV0aG9kLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlTGVmdCAtIFRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0gZGF0ZVJpZ2h0IC0gVGhlIGVhcmxpZXIgZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgZnVsbCBtb250aHNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZnVsbCBtb250aHMgYXJlIGJldHdlZW4gMzEgSmFudWFyeSAyMDE0IGFuZCAxIFNlcHRlbWJlciAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluTW9udGhzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCBuZXcgRGF0ZSgyMDE0LCAwLCAzMSkpXG4gKiAvLz1cdTAwM2UgN1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZUluTW9udGhzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIHtcbiAgY29uc3QgX2RhdGVMZWZ0ID0gdG9EYXRlKGRhdGVMZWZ0KTtcbiAgY29uc3QgX2RhdGVSaWdodCA9IHRvRGF0ZShkYXRlUmlnaHQpO1xuXG4gIGNvbnN0IHNpZ24gPSBjb21wYXJlQXNjKF9kYXRlTGVmdCwgX2RhdGVSaWdodCk7XG4gIGNvbnN0IGRpZmZlcmVuY2UgPSBNYXRoLmFicyhcbiAgICBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyhfZGF0ZUxlZnQsIF9kYXRlUmlnaHQpLFxuICApO1xuICBsZXQgcmVzdWx0O1xuXG4gIC8vIENoZWNrIGZvciB0aGUgZGlmZmVyZW5jZSBvZiBsZXNzIHRoYW4gbW9udGhcbiAgaWYgKGRpZmZlcmVuY2UgXHUwMDNjIDEpIHtcbiAgICByZXN1bHQgPSAwO1xuICB9IGVsc2Uge1xuICAgIGlmIChfZGF0ZUxlZnQuZ2V0TW9udGgoKSA9PT0gMSBcdTAwMjZcdTAwMjYgX2RhdGVMZWZ0LmdldERhdGUoKSBcdTAwM2UgMjcpIHtcbiAgICAgIC8vIFRoaXMgd2lsbCBjaGVjayBpZiB0aGUgZGF0ZSBpcyBlbmQgb2YgRmViIGFuZCBhc3NpZ24gYSBoaWdoZXIgZW5kIG9mIG1vbnRoIGRhdGVcbiAgICAgIC8vIHRvIGNvbXBhcmUgaXQgd2l0aCBKYW5cbiAgICAgIF9kYXRlTGVmdC5zZXREYXRlKDMwKTtcbiAgICB9XG5cbiAgICBfZGF0ZUxlZnQuc2V0TW9udGgoX2RhdGVMZWZ0LmdldE1vbnRoKCkgLSBzaWduICogZGlmZmVyZW5jZSk7XG5cbiAgICAvLyBNYXRoLmFicyhkaWZmIGluIGZ1bGwgbW9udGhzIC0gZGlmZiBpbiBjYWxlbmRhciBtb250aHMpID09PSAxIGlmIGxhc3QgY2FsZW5kYXIgbW9udGggaXMgbm90IGZ1bGxcbiAgICAvLyBJZiBzbywgcmVzdWx0IG11c3QgYmUgZGVjcmVhc2VkIGJ5IDEgaW4gYWJzb2x1dGUgdmFsdWVcbiAgICBsZXQgaXNMYXN0TW9udGhOb3RGdWxsID0gY29tcGFyZUFzYyhfZGF0ZUxlZnQsIF9kYXRlUmlnaHQpID09PSAtc2lnbjtcblxuICAgIC8vIENoZWNrIGZvciBjYXNlcyBvZiBvbmUgZnVsbCBjYWxlbmRhciBtb250aFxuICAgIGlmIChcbiAgICAgIGlzTGFzdERheU9mTW9udGgodG9EYXRlKGRhdGVMZWZ0KSkgXHUwMDI2XHUwMDI2XG4gICAgICBkaWZmZXJlbmNlID09PSAxIFx1MDAyNlx1MDAyNlxuICAgICAgY29tcGFyZUFzYyhkYXRlTGVmdCwgX2RhdGVSaWdodCkgPT09IDFcbiAgICApIHtcbiAgICAgIGlzTGFzdE1vbnRoTm90RnVsbCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJlc3VsdCA9IHNpZ24gKiAoZGlmZmVyZW5jZSAtIE51bWJlcihpc0xhc3RNb250aE5vdEZ1bGwpKTtcbiAgfVxuXG4gIC8vIFByZXZlbnQgbmVnYXRpdmUgemVyb1xuICByZXR1cm4gcmVzdWx0ID09PSAwID8gMCA6IHJlc3VsdDtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBkaWZmZXJlbmNlSW5Nb250aHM7XG4iLCAiaW1wb3J0IHsgZ2V0Um91bmRpbmdNZXRob2QgfSBmcm9tIFwiLi9fbGliL2dldFJvdW5kaW5nTWV0aG9kLm1qc1wiO1xuaW1wb3J0IHsgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgZGlmZmVyZW5jZUluU2Vjb25kc30gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJblNlY29uZHNcbiAqIEBjYXRlZ29yeSBTZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGVMZWZ0IC0gVGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSBkYXRlUmlnaHQgLSBUaGUgZWFybGllciBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKlxuICogQHJldHVybnMgVGhlIG51bWJlciBvZiBzZWNvbmRzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IHNlY29uZHMgYXJlIGJldHdlZW5cbiAqIC8vIDIgSnVseSAyMDE0IDEyOjMwOjA3Ljk5OSBhbmQgMiBKdWx5IDIwMTQgMTI6MzA6MjAuMDAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluU2Vjb25kcyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTIsIDMwLCAyMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCAzMCwgNywgOTk5KVxuICogKVxuICogLy89XHUwMDNlIDEyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5TZWNvbmRzKGRhdGVMZWZ0LCBkYXRlUmlnaHQsIG9wdGlvbnMpIHtcbiAgY29uc3QgZGlmZiA9IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSAvIDEwMDA7XG4gIHJldHVybiBnZXRSb3VuZGluZ01ldGhvZChvcHRpb25zPy5yb3VuZGluZ01ldGhvZCkoZGlmZik7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZGlmZmVyZW5jZUluU2Vjb25kcztcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFyc1xuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgeWVhcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciB5ZWFycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIGRhdGVSaWdodCAtIFRoZSBlYXJsaWVyIGRhdGVcblxuICogQHJldHVybnMgVGhlIG51bWJlciBvZiBjYWxlbmRhciB5ZWFyc1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciB5ZWFycyBhcmUgYmV0d2VlbiAzMSBEZWNlbWJlciAyMDEzIGFuZCAxMSBGZWJydWFyeSAyMDE1P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycyhcbiAqICAgbmV3IERhdGUoMjAxNSwgMSwgMTEpLFxuICogICBuZXcgRGF0ZSgyMDEzLCAxMSwgMzEpXG4gKiApXG4gKiAvLz1cdTAwM2UgMlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSB7XG4gIGNvbnN0IF9kYXRlTGVmdCA9IHRvRGF0ZShkYXRlTGVmdCk7XG4gIGNvbnN0IF9kYXRlUmlnaHQgPSB0b0RhdGUoZGF0ZVJpZ2h0KTtcblxuICByZXR1cm4gX2RhdGVMZWZ0LmdldEZ1bGxZZWFyKCkgLSBfZGF0ZVJpZ2h0LmdldEZ1bGxZZWFyKCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycztcbiIsICJpbXBvcnQgeyBjb21wYXJlQXNjIH0gZnJvbSBcIi4vY29tcGFyZUFzYy5tanNcIjtcbmltcG9ydCB7IGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJblllYXJzXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBmdWxsIHllYXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgZnVsbCB5ZWFycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIGRhdGVSaWdodCAtIFRoZSBlYXJsaWVyIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGZ1bGwgeWVhcnNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZnVsbCB5ZWFycyBhcmUgYmV0d2VlbiAzMSBEZWNlbWJlciAyMDEzIGFuZCAxMSBGZWJydWFyeSAyMDE1P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluWWVhcnMobmV3IERhdGUoMjAxNSwgMSwgMTEpLCBuZXcgRGF0ZSgyMDEzLCAxMSwgMzEpKVxuICogLy89XHUwMDNlIDFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJblllYXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIHtcbiAgY29uc3QgX2RhdGVMZWZ0ID0gdG9EYXRlKGRhdGVMZWZ0KTtcbiAgY29uc3QgX2RhdGVSaWdodCA9IHRvRGF0ZShkYXRlUmlnaHQpO1xuXG4gIGNvbnN0IHNpZ24gPSBjb21wYXJlQXNjKF9kYXRlTGVmdCwgX2RhdGVSaWdodCk7XG4gIGNvbnN0IGRpZmZlcmVuY2UgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzKF9kYXRlTGVmdCwgX2RhdGVSaWdodCkpO1xuXG4gIC8vIFNldCBib3RoIGRhdGVzIHRvIGEgdmFsaWQgbGVhcCB5ZWFyIGZvciBhY2N1cmF0ZSBjb21wYXJpc29uIHdoZW4gZGVhbGluZ1xuICAvLyB3aXRoIGxlYXAgZGF5c1xuICBfZGF0ZUxlZnQuc2V0RnVsbFllYXIoMTU4NCk7XG4gIF9kYXRlUmlnaHQuc2V0RnVsbFllYXIoMTU4NCk7XG5cbiAgLy8gTWF0aC5hYnMoZGlmZiBpbiBmdWxsIHllYXJzIC0gZGlmZiBpbiBjYWxlbmRhciB5ZWFycykgPT09IDEgaWYgbGFzdCBjYWxlbmRhciB5ZWFyIGlzIG5vdCBmdWxsXG4gIC8vIElmIHNvLCByZXN1bHQgbXVzdCBiZSBkZWNyZWFzZWQgYnkgMSBpbiBhYnNvbHV0ZSB2YWx1ZVxuICBjb25zdCBpc0xhc3RZZWFyTm90RnVsbCA9IGNvbXBhcmVBc2MoX2RhdGVMZWZ0LCBfZGF0ZVJpZ2h0KSA9PT0gLXNpZ247XG4gIGNvbnN0IHJlc3VsdCA9IHNpZ24gKiAoZGlmZmVyZW5jZSAtICtpc0xhc3RZZWFyTm90RnVsbCk7XG5cbiAgLy8gUHJldmVudCBuZWdhdGl2ZSB6ZXJvXG4gIHJldHVybiByZXN1bHQgPT09IDAgPyAwIDogcmVzdWx0O1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGRpZmZlcmVuY2VJblllYXJzO1xuIiwgImltcG9ydCB7IGFkZCB9IGZyb20gXCIuL2FkZC5tanNcIjtcbmltcG9ydCB7IGRpZmZlcmVuY2VJbkRheXMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5EYXlzLm1qc1wiO1xuaW1wb3J0IHsgZGlmZmVyZW5jZUluSG91cnMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5Ib3Vycy5tanNcIjtcbmltcG9ydCB7IGRpZmZlcmVuY2VJbk1pbnV0ZXMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5NaW51dGVzLm1qc1wiO1xuaW1wb3J0IHsgZGlmZmVyZW5jZUluTW9udGhzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluTW9udGhzLm1qc1wiO1xuaW1wb3J0IHsgZGlmZmVyZW5jZUluU2Vjb25kcyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJblNlY29uZHMubWpzXCI7XG5pbXBvcnQgeyBkaWZmZXJlbmNlSW5ZZWFycyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJblllYXJzLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGludGVydmFsVG9EdXJhdGlvblxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IGludGVydmFsIHRvIGR1cmF0aW9uXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IGEgaW50ZXJ2YWwgb2JqZWN0IHRvIGEgZHVyYXRpb24gb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBpbnRlcnZhbCAtIFRoZSBpbnRlcnZhbCB0byBjb252ZXJ0IHRvIGR1cmF0aW9uXG4gKlxuICogQHJldHVybnMgVGhlIGR1cmF0aW9uIG9iamVjdFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBHZXQgdGhlIGR1cmF0aW9uIGJldHdlZW4gSmFudWFyeSAxNSwgMTkyOSBhbmQgQXByaWwgNCwgMTk2OC5cbiAqIGludGVydmFsVG9EdXJhdGlvbih7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgxOTI5LCAwLCAxNSwgMTIsIDAsIDApLFxuICogICBlbmQ6IG5ldyBEYXRlKDE5NjgsIDMsIDQsIDE5LCA1LCAwKVxuICogfSlcbiAqIC8vID1cdTAwM2UgeyB5ZWFyczogMzksIG1vbnRoczogMiwgZGF5czogMjAsIGhvdXJzOiA3LCBtaW51dGVzOiA1LCBzZWNvbmRzOiAwIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludGVydmFsVG9EdXJhdGlvbihpbnRlcnZhbCkge1xuICBjb25zdCBzdGFydCA9IHRvRGF0ZShpbnRlcnZhbC5zdGFydCk7XG4gIGNvbnN0IGVuZCA9IHRvRGF0ZShpbnRlcnZhbC5lbmQpO1xuXG4gIGNvbnN0IGR1cmF0aW9uID0ge307XG5cbiAgY29uc3QgeWVhcnMgPSBkaWZmZXJlbmNlSW5ZZWFycyhlbmQsIHN0YXJ0KTtcbiAgaWYgKHllYXJzKSBkdXJhdGlvbi55ZWFycyA9IHllYXJzO1xuXG4gIGNvbnN0IHJlbWFpbmluZ01vbnRocyA9IGFkZChzdGFydCwgeyB5ZWFyczogZHVyYXRpb24ueWVhcnMgfSk7XG5cbiAgY29uc3QgbW9udGhzID0gZGlmZmVyZW5jZUluTW9udGhzKGVuZCwgcmVtYWluaW5nTW9udGhzKTtcbiAgaWYgKG1vbnRocykgZHVyYXRpb24ubW9udGhzID0gbW9udGhzO1xuXG4gIGNvbnN0IHJlbWFpbmluZ0RheXMgPSBhZGQocmVtYWluaW5nTW9udGhzLCB7IG1vbnRoczogZHVyYXRpb24ubW9udGhzIH0pO1xuXG4gIGNvbnN0IGRheXMgPSBkaWZmZXJlbmNlSW5EYXlzKGVuZCwgcmVtYWluaW5nRGF5cyk7XG4gIGlmIChkYXlzKSBkdXJhdGlvbi5kYXlzID0gZGF5cztcblxuICBjb25zdCByZW1haW5pbmdIb3VycyA9IGFkZChyZW1haW5pbmdEYXlzLCB7IGRheXM6IGR1cmF0aW9uLmRheXMgfSk7XG5cbiAgY29uc3QgaG91cnMgPSBkaWZmZXJlbmNlSW5Ib3VycyhlbmQsIHJlbWFpbmluZ0hvdXJzKTtcbiAgaWYgKGhvdXJzKSBkdXJhdGlvbi5ob3VycyA9IGhvdXJzO1xuXG4gIGNvbnN0IHJlbWFpbmluZ01pbnV0ZXMgPSBhZGQocmVtYWluaW5nSG91cnMsIHsgaG91cnM6IGR1cmF0aW9uLmhvdXJzIH0pO1xuXG4gIGNvbnN0IG1pbnV0ZXMgPSBkaWZmZXJlbmNlSW5NaW51dGVzKGVuZCwgcmVtYWluaW5nTWludXRlcyk7XG4gIGlmIChtaW51dGVzKSBkdXJhdGlvbi5taW51dGVzID0gbWludXRlcztcblxuICBjb25zdCByZW1haW5pbmdTZWNvbmRzID0gYWRkKHJlbWFpbmluZ01pbnV0ZXMsIHsgbWludXRlczogZHVyYXRpb24ubWludXRlcyB9KTtcblxuICBjb25zdCBzZWNvbmRzID0gZGlmZmVyZW5jZUluU2Vjb25kcyhlbmQsIHJlbWFpbmluZ1NlY29uZHMpO1xuICBpZiAoc2Vjb25kcykgZHVyYXRpb24uc2Vjb25kcyA9IHNlY29uZHM7XG5cbiAgcmV0dXJuIGR1cmF0aW9uO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGludGVydmFsVG9EdXJhdGlvbjtcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGlzQWZ0ZXJcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGZpcnN0IGRhdGUgYWZ0ZXIgdGhlIHNlY29uZCBvbmU/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJcyB0aGUgZmlyc3QgZGF0ZSBhZnRlciB0aGUgc2Vjb25kIG9uZT9cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRoYXQgc2hvdWxkIGJlIGFmdGVyIHRoZSBvdGhlciBvbmUgdG8gcmV0dXJuIHRydWVcbiAqIEBwYXJhbSBkYXRlVG9Db21wYXJlIC0gVGhlIGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gKlxuICogQHJldHVybnMgVGhlIGZpcnN0IGRhdGUgaXMgYWZ0ZXIgdGhlIHNlY29uZCBkYXRlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElzIDEwIEp1bHkgMTk4OSBhZnRlciAxMSBGZWJydWFyeSAxOTg3P1xuICogY29uc3QgcmVzdWx0ID0gaXNBZnRlcihuZXcgRGF0ZSgxOTg5LCA2LCAxMCksIG5ldyBEYXRlKDE5ODcsIDEsIDExKSlcbiAqIC8vPVx1MDAzZSB0cnVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FmdGVyKGRhdGUsIGRhdGVUb0NvbXBhcmUpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGNvbnN0IF9kYXRlVG9Db21wYXJlID0gdG9EYXRlKGRhdGVUb0NvbXBhcmUpO1xuICByZXR1cm4gX2RhdGUuZ2V0VGltZSgpIFx1MDAzZSBfZGF0ZVRvQ29tcGFyZS5nZXRUaW1lKCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgaXNBZnRlcjtcbiIsICIvKipcbiAqIEBuYW1lIGlzRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gdmFsdWUgYSBkYXRlP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLiBUaGUgZnVuY3Rpb24gd29ya3MgZm9yIGRhdGVzIHRyYW5zZmVycmVkIGFjcm9zcyBpZnJhbWVzLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVja1xuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgZGF0ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgYSB2YWxpZCBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNEYXRlKG5ldyBEYXRlKCkpXG4gKiAvLz1cdTAwM2UgdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgYW4gaW52YWxpZCBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNEYXRlKG5ldyBEYXRlKE5hTikpXG4gKiAvLz1cdTAwM2UgdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3Igc29tZSB2YWx1ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzRGF0ZSgnMjAxNC0wMi0zMScpXG4gKiAvLz1cdTAwM2UgZmFsc2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIGFuIG9iamVjdDpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzRGF0ZSh7fSlcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlKHZhbHVlKSB7XG4gIHJldHVybiAoXG4gICAgdmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjZcbiAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGlzRGF0ZTtcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiaW1wb3J0IHsgaXNEYXRlIH0gZnJvbSBcIi4vaXNEYXRlLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGlzVmFsaWRcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgdmFsaWQ/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm5zIGZhbHNlIGlmIGFyZ3VtZW50IGlzIEludmFsaWQgRGF0ZSBhbmQgdHJ1ZSBvdGhlcndpc2UuXG4gKiBBcmd1bWVudCBpcyBjb252ZXJ0ZWQgdG8gRGF0ZSB1c2luZyBgdG9EYXRlYC4gU2VlIFt0b0RhdGVdKGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvdG9EYXRlKVxuICogSW52YWxpZCBEYXRlIGlzIGEgRGF0ZSwgd2hvc2UgdGltZSB2YWx1ZSBpcyBOYU4uXG4gKlxuICogVGltZSB2YWx1ZSBvZiBEYXRlOiBodHRwOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjkuMS4xXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBjaGVja1xuICpcbiAqIEByZXR1cm5zIFRoZSBkYXRlIGlzIHZhbGlkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciB0aGUgdmFsaWQgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzVmFsaWQobmV3IERhdGUoMjAxNCwgMSwgMzEpKVxuICogLy89XHUwMDNlIHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHRoZSB2YWx1ZSwgY29udmVydGFibGUgaW50byBhIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc1ZhbGlkKDEzOTM4MDQ4MDAwMDApXG4gKiAvLz1cdTAwM2UgdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIGludmFsaWQgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzVmFsaWQobmV3IERhdGUoJycpKVxuICogLy89XHUwMDNlIGZhbHNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkKGRhdGUpIHtcbiAgaWYgKCFpc0RhdGUoZGF0ZSkgXHUwMDI2XHUwMDI2IHR5cGVvZiBkYXRlICE9PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICByZXR1cm4gIWlzTmFOKE51bWJlcihfZGF0ZSkpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGlzVmFsaWQ7XG4iLCAiLyoqXG4gKiBAbmFtZSBjb25zdHJ1Y3RGcm9tXG4gKiBAY2F0ZWdvcnkgR2VuZXJpYyBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb25zdHJ1Y3RzIGEgZGF0ZSB1c2luZyB0aGUgcmVmZXJlbmNlIGRhdGUgYW5kIHRoZSB2YWx1ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGZ1bmN0aW9uIGNvbnN0cnVjdHMgYSBuZXcgZGF0ZSB1c2luZyB0aGUgY29uc3RydWN0b3IgZnJvbSB0aGUgcmVmZXJlbmNlXG4gKiBkYXRlIGFuZCB0aGUgZ2l2ZW4gdmFsdWUuIEl0IGhlbHBzIHRvIGJ1aWxkIGdlbmVyaWMgZnVuY3Rpb25zIHRoYXQgYWNjZXB0XG4gKiBkYXRlIGV4dGVuc2lvbnMuXG4gKlxuICogSXQgZGVmYXVsdHMgdG8gYERhdGVgIGlmIHRoZSBwYXNzZWQgcmVmZXJlbmNlIGRhdGUgaXMgYSBudW1iZXIgb3IgYSBzdHJpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgcmVmZXJlbmNlIGRhdGUgdG8gdGFrZSBjb25zdHJ1Y3RvciBmcm9tXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY3JlYXRlIHRoZSBkYXRlXG4gKlxuICogQHJldHVybnMgRGF0ZSBpbml0aWFsaXplZCB1c2luZyB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdmFsdWVcbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gJ2RhdGUtZm5zJ1xuICpcbiAqIC8vIEEgZnVuY3Rpb24gdGhhdCBjbG9uZXMgYSBkYXRlIHByZXNlcnZpbmcgdGhlIG9yaWdpbmFsIHR5cGVcbiAqIGZ1bmN0aW9uIGNsb25lRGF0ZVx1MDAzY0RhdGVUeXBlIGV4dGVuZHMgRGF0ZShkYXRlOiBEYXRlVHlwZSk6IERhdGVUeXBlIHtcbiAqICAgcmV0dXJuIGNvbnN0cnVjdEZyb20oXG4gKiAgICAgZGF0ZSwgLy8gVXNlIGNvbnRydXN0b3IgZnJvbSB0aGUgZ2l2ZW4gZGF0ZVxuICogICAgIGRhdGUuZ2V0VGltZSgpIC8vIFVzZSB0aGUgZGF0ZSB2YWx1ZSB0byBjcmVhdGUgYSBuZXcgZGF0ZVxuICogICApXG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHZhbHVlKSB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgZGF0ZS5jb25zdHJ1Y3Rvcih2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGNvbnN0cnVjdEZyb207XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGdldERheXNJbk1vbnRoXG4gKiBAY2F0ZWdvcnkgTW9udGggSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGdpdmVuIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGRheXMgaW4gYSBtb250aFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBkYXlzIGFyZSBpbiBGZWJydWFyeSAyMDAwP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0RGF5c0luTW9udGgobmV3IERhdGUoMjAwMCwgMSkpXG4gKiAvLz1cdTAwM2UgMjlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERheXNJbk1vbnRoKGRhdGUpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGNvbnN0IHllYXIgPSBfZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aEluZGV4ID0gX2RhdGUuZ2V0TW9udGgoKTtcbiAgY29uc3QgbGFzdERheU9mTW9udGggPSBjb25zdHJ1Y3RGcm9tKGRhdGUsIDApO1xuICBsYXN0RGF5T2ZNb250aC5zZXRGdWxsWWVhcih5ZWFyLCBtb250aEluZGV4ICsgMSwgMCk7XG4gIGxhc3REYXlPZk1vbnRoLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gbGFzdERheU9mTW9udGguZ2V0RGF0ZSgpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGdldERheXNJbk1vbnRoO1xuIiwgImltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuaW1wb3J0IHsgZ2V0RGF5c0luTW9udGggfSBmcm9tIFwiLi9nZXREYXlzSW5Nb250aC5tanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBzZXRNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgbW9udGggdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIG1vbnRoIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIG1vbnRoIC0gVGhlIG1vbnRoIGluZGV4IHRvIHNldCAoMC0xMSlcbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgbW9udGggc2V0XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCBGZWJydWFyeSB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc2V0TW9udGgobmV3IERhdGUoMjAxNCwgOCwgMSksIDEpXG4gKiAvLz1cdTAwM2UgU2F0IEZlYiAwMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRNb250aChkYXRlLCBtb250aCkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgY29uc3QgeWVhciA9IF9kYXRlLmdldEZ1bGxZZWFyKCk7XG4gIGNvbnN0IGRheSA9IF9kYXRlLmdldERhdGUoKTtcblxuICBjb25zdCBkYXRlV2l0aERlc2lyZWRNb250aCA9IGNvbnN0cnVjdEZyb20oZGF0ZSwgMCk7XG4gIGRhdGVXaXRoRGVzaXJlZE1vbnRoLnNldEZ1bGxZZWFyKHllYXIsIG1vbnRoLCAxNSk7XG4gIGRhdGVXaXRoRGVzaXJlZE1vbnRoLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBjb25zdCBkYXlzSW5Nb250aCA9IGdldERheXNJbk1vbnRoKGRhdGVXaXRoRGVzaXJlZE1vbnRoKTtcbiAgLy8gU2V0IHRoZSBsYXN0IGRheSBvZiB0aGUgbmV3IG1vbnRoXG4gIC8vIGlmIHRoZSBvcmlnaW5hbCBkYXRlIHdhcyB0aGUgbGFzdCBkYXkgb2YgdGhlIGxvbmdlciBtb250aFxuICBfZGF0ZS5zZXRNb250aChtb250aCwgTWF0aC5taW4oZGF5LCBkYXlzSW5Nb250aCkpO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc2V0TW9udGg7XG4iLCAiaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5pbXBvcnQgeyBzZXRNb250aCB9IGZyb20gXCIuL3NldE1vbnRoLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIHNldFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgZGF0ZSB2YWx1ZXMgdG8gYSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IGRhdGUgdmFsdWVzIHRvIGEgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBTZXRzIHRpbWUgdmFsdWVzIHRvIGRhdGUgZnJvbSBvYmplY3QgYHZhbHVlc2AuXG4gKiBBIHZhbHVlIGlzIG5vdCBzZXQgaWYgaXQgaXMgdW5kZWZpbmVkIG9yIG51bGwgb3IgZG9lc24ndCBleGlzdCBpbiBgdmFsdWVzYC5cbiAqXG4gKiBOb3RlIGFib3V0IGJ1bmRsZSBzaXplOiBgc2V0YCBkb2VzIG5vdCBpbnRlcm5hbGx5IHVzZSBgc2V0WGAgZnVuY3Rpb25zIGZyb20gZGF0ZS1mbnMgYnV0IGluc3RlYWQgb3B0c1xuICogdG8gdXNlIG5hdGl2ZSBgRGF0ZSNzZXRYYCBtZXRob2RzLiBJZiB5b3UgdXNlIHRoaXMgZnVuY3Rpb24sIHlvdSBtYXkgbm90IHdhbnQgdG8gaW5jbHVkZSB0aGVcbiAqIG90aGVyIGBzZXRYYCBmdW5jdGlvbnMgdGhhdCBkYXRlLWZucyBwcm92aWRlcyBpZiB5b3UgYXJlIGNvbmNlcm5lZCBhYm91dCB0aGUgYnVuZGxlIHNpemUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gdmFsdWVzIC0gVGhlIGRhdGUgdmFsdWVzIHRvIGJlIHNldFxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIG9wdGlvbnMgc2V0XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRyYW5zZm9ybSAxIFNlcHRlbWJlciAyMDE0IGludG8gMjAgT2N0b2JlciAyMDE1IGluIGEgc2luZ2xlIGxpbmU6XG4gKiBjb25zdCByZXN1bHQgPSBzZXQobmV3IERhdGUoMjAxNCwgOCwgMjApLCB7IHllYXI6IDIwMTUsIG1vbnRoOiA5LCBkYXRlOiAyMCB9KVxuICogLy89XHUwMDNlIFR1ZSBPY3QgMjAgMjAxNSAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgMTIgUE0gdG8gMSBTZXB0ZW1iZXIgMjAxNCAwMToyMzo0NSB0byAxIFNlcHRlbWJlciAyMDE0IDEyOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gc2V0KG5ldyBEYXRlKDIwMTQsIDgsIDEsIDEsIDIzLCA0NSksIHsgaG91cnM6IDEyIH0pXG4gKiAvLz1cdTAwM2UgTW9uIFNlcCAwMSAyMDE0IDEyOjIzOjQ1XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNldChkYXRlLCB2YWx1ZXMpIHtcbiAgbGV0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuXG4gIC8vIENoZWNrIGlmIGRhdGUgaXMgSW52YWxpZCBEYXRlIGJlY2F1c2UgRGF0ZS5wcm90b3R5cGUuc2V0RnVsbFllYXIgaWdub3JlcyB0aGUgdmFsdWUgb2YgSW52YWxpZCBEYXRlXG4gIGlmIChpc05hTigrX2RhdGUpKSB7XG4gICAgcmV0dXJuIGNvbnN0cnVjdEZyb20oZGF0ZSwgTmFOKTtcbiAgfVxuXG4gIGlmICh2YWx1ZXMueWVhciAhPSBudWxsKSB7XG4gICAgX2RhdGUuc2V0RnVsbFllYXIodmFsdWVzLnllYXIpO1xuICB9XG5cbiAgaWYgKHZhbHVlcy5tb250aCAhPSBudWxsKSB7XG4gICAgX2RhdGUgPSBzZXRNb250aChfZGF0ZSwgdmFsdWVzLm1vbnRoKTtcbiAgfVxuXG4gIGlmICh2YWx1ZXMuZGF0ZSAhPSBudWxsKSB7XG4gICAgX2RhdGUuc2V0RGF0ZSh2YWx1ZXMuZGF0ZSk7XG4gIH1cblxuICBpZiAodmFsdWVzLmhvdXJzICE9IG51bGwpIHtcbiAgICBfZGF0ZS5zZXRIb3Vycyh2YWx1ZXMuaG91cnMpO1xuICB9XG5cbiAgaWYgKHZhbHVlcy5taW51dGVzICE9IG51bGwpIHtcbiAgICBfZGF0ZS5zZXRNaW51dGVzKHZhbHVlcy5taW51dGVzKTtcbiAgfVxuXG4gIGlmICh2YWx1ZXMuc2Vjb25kcyAhPSBudWxsKSB7XG4gICAgX2RhdGUuc2V0U2Vjb25kcyh2YWx1ZXMuc2Vjb25kcyk7XG4gIH1cblxuICBpZiAodmFsdWVzLm1pbGxpc2Vjb25kcyAhPSBudWxsKSB7XG4gICAgX2RhdGUuc2V0TWlsbGlzZWNvbmRzKHZhbHVlcy5taWxsaXNlY29uZHMpO1xuICB9XG5cbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHNldDtcbiIsICIvKipcbiAqIEBtb2R1bGUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBVc2VmdWwgY29uc3RhbnRzXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbGxlY3Rpb24gb2YgdXNlZnVsIGRhdGUgY29uc3RhbnRzLlxuICpcbiAqIFRoZSBjb25zdGFudHMgY291bGQgYmUgaW1wb3J0ZWQgZnJvbSBgZGF0ZS1mbnMvY29uc3RhbnRzYDpcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbWF4VGltZSwgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBmdW5jdGlvbiBpc0FsbG93ZWRUaW1lKHRpbWUpIHtcbiAqICAgcmV0dXJuIHRpbWUgXHUwMDNjPSBtYXhUaW1lIFx1MDAyNlx1MDAyNiB0aW1lIFx1MDAzZT0gbWluVGltZTtcbiAqIH1cbiAqIGBgYFxuICovXG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBkYXlzSW5XZWVrXG4gKiBAc3VtbWFyeSBEYXlzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IGRheXNJbldlZWsgPSA3O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgZGF5c0luWWVhclxuICogQHN1bW1hcnkgRGF5cyBpbiAxIHllYXIuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBIb3cgbWFueSBkYXlzIGluIGEgeWVhci5cbiAqXG4gKiBPbmUgeWVhcnMgZXF1YWxzIDM2NS4yNDI1IGRheXMgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlxuICpcbiAqIFx1MDAzZSBMZWFwIHllYXIgb2NjdXJlcyBldmVyeSA0IHllYXJzLCBleGNlcHQgZm9yIHllYXJzIHRoYXQgYXJlIGRpdmlzYWJsZSBieSAxMDAgYW5kIG5vdCBkaXZpc2FibGUgYnkgNDAwLlxuICogXHUwMDNlIDEgbWVhbiB5ZWFyID0gKDM2NSsxLzQtMS8xMDArMS80MDApIGRheXMgPSAzNjUuMjQyNSBkYXlzXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5ZZWFyID0gMzY1LjI0MjU7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtYXhUaW1lXG4gKiBAc3VtbWFyeSBNYXhpbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgbWF4VGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBjb25zdCBpc1ZhbGlkID0gODY0MDAwMDAwMDAwMDAwMSBcdTAwM2M9IG1heFRpbWU7XG4gKiAvLz1cdTAwM2UgZmFsc2VcbiAqXG4gKiBuZXcgRGF0ZSg4NjQwMDAwMDAwMDAwMDAxKTtcbiAqIC8vPVx1MDAzZSBJbnZhbGlkIERhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1heFRpbWUgPSBNYXRoLnBvdygxMCwgOCkgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWluVGltZVxuICogQHN1bW1hcnkgTWluaW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IG1pblRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogY29uc3QgaXNWYWxpZCA9IC04NjQwMDAwMDAwMDAwMDAxIFx1MDAzZT0gbWluVGltZTtcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICpcbiAqIG5ldyBEYXRlKC04NjQwMDAwMDAwMDAwMDAxKVxuICogLy89XHUwMDNlIEludmFsaWQgRGF0ZVxuICovXG5leHBvcnQgY29uc3QgbWluVGltZSA9IC1tYXhUaW1lO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5XZWVrID0gNjA0ODAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luRGF5ID0gODY0MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbk1pbnV0ZVxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgbWludXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbk1pbnV0ZSA9IDYwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBob3VyXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbkhvdXIgPSAzNjAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5TZWNvbmRcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIHNlY29uZFxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5TZWNvbmQgPSAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luWWVhclxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5ZZWFyID0gNTI1NjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luTW9udGhcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBtb250aC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbk1vbnRoID0gNDMyMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5EYXkgPSAxNDQwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luSG91clxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIGhvdXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5Ib3VyID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtb250aHNJblF1YXJ0ZXJcbiAqIEBzdW1tYXJ5IE1vbnRocyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aHNJblF1YXJ0ZXIgPSAzO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbW9udGhzSW5ZZWFyXG4gKiBAc3VtbWFyeSBNb250aHMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3QgbW9udGhzSW5ZZWFyID0gMTI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBxdWFydGVyc0luWWVhclxuICogQHN1bW1hcnkgUXVhcnRlcnMgaW4gMSB5ZWFyXG4gKi9cbmV4cG9ydCBjb25zdCBxdWFydGVyc0luWWVhciA9IDQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgaG91ci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbkhvdXIgPSAzNjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luTWludXRlXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbWludXRlLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luTWludXRlID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5EYXkgPSBzZWNvbmRzSW5Ib3VyICogMjQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbldlZWsgPSBzZWNvbmRzSW5EYXkgKiA3O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luWWVhclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5ZZWFyID0gc2Vjb25kc0luRGF5ICogZGF5c0luWWVhcjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbk1vbnRoXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbW9udGhcbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbk1vbnRoID0gc2Vjb25kc0luWWVhciAvIDEyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luUXVhcnRlclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5RdWFydGVyID0gc2Vjb25kc0luTW9udGggKiAzO1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICJsZXQgZGVmYXVsdE9wdGlvbnMgPSB7fTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRPcHRpb25zKCkge1xuICByZXR1cm4gZGVmYXVsdE9wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXREZWZhdWx0T3B0aW9ucyhuZXdPcHRpb25zKSB7XG4gIGRlZmF1bHRPcHRpb25zID0gbmV3T3B0aW9ucztcbn1cbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuL19saWIvZGVmYXVsdE9wdGlvbnMubWpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBzdGFydE9mV2Vla30gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZXZWVrXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIFRoZSBzdGFydCBvZiBhIHdlZWtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz1cdTAwM2UgU3VuIEF1ZyAzMSAyMDE0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRoZSB3ZWVrIHN0YXJ0cyBvbiBNb25kYXksIHRoZSBzdGFydCBvZiB0aGUgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCksIHsgd2Vla1N0YXJ0c09uOiAxIH0pXG4gKiAvLz1cdTAwM2UgTW9uIFNlcCAwMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydE9mV2VlayhkYXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgY29uc3Qgd2Vla1N0YXJ0c09uID1cbiAgICBvcHRpb25zPy53ZWVrU3RhcnRzT24gPz9cbiAgICBvcHRpb25zPy5sb2NhbGU/Lm9wdGlvbnM/LndlZWtTdGFydHNPbiA/P1xuICAgIGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbiA/P1xuICAgIGRlZmF1bHRPcHRpb25zLmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uID8/XG4gICAgMDtcblxuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgY29uc3QgZGF5ID0gX2RhdGUuZ2V0RGF5KCk7XG4gIGNvbnN0IGRpZmYgPSAoZGF5IFx1MDAzYyB3ZWVrU3RhcnRzT24gPyA3IDogMCkgKyBkYXkgLSB3ZWVrU3RhcnRzT247XG5cbiAgX2RhdGUuc2V0RGF0ZShfZGF0ZS5nZXREYXRlKCkgLSBkaWZmKTtcbiAgX2RhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBzdGFydE9mV2VlaztcbiIsICIvKipcbiAqIEBuYW1lIGNvbnN0cnVjdEZyb21cbiAqIEBjYXRlZ29yeSBHZW5lcmljIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnN0cnVjdHMgYSBkYXRlIHVzaW5nIHRoZSByZWZlcmVuY2UgZGF0ZSBhbmQgdGhlIHZhbHVlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGUgZnVuY3Rpb24gY29uc3RydWN0cyBhIG5ldyBkYXRlIHVzaW5nIHRoZSBjb25zdHJ1Y3RvciBmcm9tIHRoZSByZWZlcmVuY2VcbiAqIGRhdGUgYW5kIHRoZSBnaXZlbiB2YWx1ZS4gSXQgaGVscHMgdG8gYnVpbGQgZ2VuZXJpYyBmdW5jdGlvbnMgdGhhdCBhY2NlcHRcbiAqIGRhdGUgZXh0ZW5zaW9ucy5cbiAqXG4gKiBJdCBkZWZhdWx0cyB0byBgRGF0ZWAgaWYgdGhlIHBhc3NlZCByZWZlcmVuY2UgZGF0ZSBpcyBhIG51bWJlciBvciBhIHN0cmluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSByZWZlcmVuY2UgZGF0ZSB0byB0YWtlIGNvbnN0cnVjdG9yIGZyb21cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjcmVhdGUgdGhlIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBEYXRlIGluaXRpYWxpemVkIHVzaW5nIHRoZSBnaXZlbiBkYXRlIGFuZCB2YWx1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSAnZGF0ZS1mbnMnXG4gKlxuICogLy8gQSBmdW5jdGlvbiB0aGF0IGNsb25lcyBhIGRhdGUgcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgdHlwZVxuICogZnVuY3Rpb24gY2xvbmVEYXRlXHUwMDNjRGF0ZVR5cGUgZXh0ZW5kcyBEYXRlKGRhdGU6IERhdGVUeXBlKTogRGF0ZVR5cGUge1xuICogICByZXR1cm4gY29uc3RydWN0RnJvbShcbiAqICAgICBkYXRlLCAvLyBVc2UgY29udHJ1c3RvciBmcm9tIHRoZSBnaXZlbiBkYXRlXG4gKiAgICAgZGF0ZS5nZXRUaW1lKCkgLy8gVXNlIHRoZSBkYXRlIHZhbHVlIHRvIGNyZWF0ZSBhIG5ldyBkYXRlXG4gKiAgIClcbiAqIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdEZyb20oZGF0ZSwgdmFsdWUpIHtcbiAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBkYXRlLmNvbnN0cnVjdG9yKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgY29uc3RydWN0RnJvbTtcbiIsICJpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5tanNcIjtcbmltcG9ydCB7IHN0YXJ0T2ZXZWVrIH0gZnJvbSBcIi4vc3RhcnRPZldlZWsubWpzXCI7XG5pbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuL19saWIvZGVmYXVsdE9wdGlvbnMubWpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBnZXRXZWVrWWVhcn0gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIGdldFdlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgZXhhY3QgY2FsY3VsYXRpb24gZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mXG4gKiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gICh3aGljaCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlaylcbiAqIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgICh3aGljaCBpcyB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpblxuICogdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIpXG4gKlxuICogV2VlayBudW1iZXJpbmc6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlZWsjVGhlX0lTT193ZWVrX2RhdGVfc3lzdGVtXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZ2l2ZW4gZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICpcbiAqIEByZXR1cm5zIFRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMjYgRGVjZW1iZXIgMjAwNCB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmdzP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2Vla1llYXIobmV3IERhdGUoMjAwNCwgMTEsIDI2KSlcbiAqIC8vPVx1MDAzZSAyMDA1XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMjYgRGVjZW1iZXIgMjAwNCBpZiB3ZWVrIHN0YXJ0cyBvbiBTYXR1cmRheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWtZZWFyKG5ldyBEYXRlKDIwMDQsIDExLCAyNiksIHsgd2Vla1N0YXJ0c09uOiA2IH0pXG4gKiAvLz1cdTAwM2UgMjAwNFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDI2IERlY2VtYmVyIDIwMDQgaWYgdGhlIGZpcnN0IHdlZWsgY29udGFpbnMgNCBKYW51YXJ5P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2Vla1llYXIobmV3IERhdGUoMjAwNCwgMTEsIDI2KSwgeyBmaXJzdFdlZWtDb250YWluc0RhdGU6IDQgfSlcbiAqIC8vPVx1MDAzZSAyMDA0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXZWVrWWVhcihkYXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCB5ZWFyID0gX2RhdGUuZ2V0RnVsbFllYXIoKTtcblxuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIGNvbnN0IGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9XG4gICAgb3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgb3B0aW9ucz8ubG9jYWxlPy5vcHRpb25zPy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICBkZWZhdWx0T3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICBkZWZhdWx0T3B0aW9ucy5sb2NhbGU/Lm9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIDE7XG5cbiAgY29uc3QgZmlyc3RXZWVrT2ZOZXh0WWVhciA9IGNvbnN0cnVjdEZyb20oZGF0ZSwgMCk7XG4gIGZpcnN0V2Vla09mTmV4dFllYXIuc2V0RnVsbFllYXIoeWVhciArIDEsIDAsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIGZpcnN0V2Vla09mTmV4dFllYXIuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIGNvbnN0IHN0YXJ0T2ZOZXh0WWVhciA9IHN0YXJ0T2ZXZWVrKGZpcnN0V2Vla09mTmV4dFllYXIsIG9wdGlvbnMpO1xuXG4gIGNvbnN0IGZpcnN0V2Vla09mVGhpc1llYXIgPSBjb25zdHJ1Y3RGcm9tKGRhdGUsIDApO1xuICBmaXJzdFdlZWtPZlRoaXNZZWFyLnNldEZ1bGxZZWFyKHllYXIsIDAsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIGZpcnN0V2Vla09mVGhpc1llYXIuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIGNvbnN0IHN0YXJ0T2ZUaGlzWWVhciA9IHN0YXJ0T2ZXZWVrKGZpcnN0V2Vla09mVGhpc1llYXIsIG9wdGlvbnMpO1xuXG4gIGlmIChfZGF0ZS5nZXRUaW1lKCkgXHUwMDNlPSBzdGFydE9mTmV4dFllYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXIgKyAxO1xuICB9IGVsc2UgaWYgKF9kYXRlLmdldFRpbWUoKSBcdTAwM2U9IHN0YXJ0T2ZUaGlzWWVhci5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4geWVhcjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geWVhciAtIDE7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBnZXRXZWVrWWVhcjtcbiIsICJpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5tanNcIjtcbmltcG9ydCB7IGdldFdlZWtZZWFyIH0gZnJvbSBcIi4vZ2V0V2Vla1llYXIubWpzXCI7XG5pbXBvcnQgeyBzdGFydE9mV2VlayB9IGZyb20gXCIuL3N0YXJ0T2ZXZWVrLm1qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi9fbGliL2RlZmF1bHRPcHRpb25zLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgc3RhcnRPZldlZWtZZWFyfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgc3RhcnRPZldlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhci5cbiAqIFRoZSBleGFjdCBjYWxjdWxhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2ZcbiAqIGBvcHRpb25zLndlZWtTdGFydHNPbmAgKHdoaWNoIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrKVxuICogYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKHdoaWNoIGlzIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluXG4gKiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhcilcbiAqXG4gKiBXZWVrIG51bWJlcmluZzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VlayNUaGVfSVNPX3dlZWtfZGF0ZV9zeXN0ZW1cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgc3RhcnQgb2YgYSB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhbiBhIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIDIgSnVseSAyMDA1IHdpdGggZGVmYXVsdCBzZXR0aW5nczpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrWWVhcihuZXcgRGF0ZSgyMDA1LCA2LCAyKSlcbiAqIC8vPVx1MDAzZSBTdW4gRGVjIDI2IDIwMDQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgMiBKdWx5IDIwMDVcbiAqIC8vIGlmIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHdlZWtcbiAqIC8vIGFuZCA0IEphbnVhcnkgaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWtZZWFyKG5ldyBEYXRlKDIwMDUsIDYsIDIpLCB7XG4gKiAgIHdlZWtTdGFydHNPbjogMSxcbiAqICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiA0XG4gKiB9KVxuICogLy89XHUwMDNlIE1vbiBKYW4gMDMgMjAwNSAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRPZldlZWtZZWFyKGRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICBjb25zdCBmaXJzdFdlZWtDb250YWluc0RhdGUgPVxuICAgIG9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIG9wdGlvbnM/LmxvY2FsZT8ub3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgZGVmYXVsdE9wdGlvbnMubG9jYWxlPy5vcHRpb25zPy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICAxO1xuXG4gIGNvbnN0IHllYXIgPSBnZXRXZWVrWWVhcihkYXRlLCBvcHRpb25zKTtcbiAgY29uc3QgZmlyc3RXZWVrID0gY29uc3RydWN0RnJvbShkYXRlLCAwKTtcbiAgZmlyc3RXZWVrLnNldEZ1bGxZZWFyKHllYXIsIDAsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIGZpcnN0V2Vlay5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgY29uc3QgX2RhdGUgPSBzdGFydE9mV2VlayhmaXJzdFdlZWssIG9wdGlvbnMpO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3RhcnRPZldlZWtZZWFyO1xuIiwgImltcG9ydCB7IG1pbGxpc2Vjb25kc0luV2VlayB9IGZyb20gXCIuL2NvbnN0YW50cy5tanNcIjtcbmltcG9ydCB7IHN0YXJ0T2ZXZWVrIH0gZnJvbSBcIi4vc3RhcnRPZldlZWsubWpzXCI7XG5pbXBvcnQgeyBzdGFydE9mV2Vla1llYXIgfSBmcm9tIFwiLi9zdGFydE9mV2Vla1llYXIubWpzXCI7XG5pbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBnZXRXZWVrfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgZ2V0V2Vla1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBsb2NhbCB3ZWVrIGluZGV4IG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBsb2NhbCB3ZWVrIGluZGV4IG9mIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIGV4YWN0IGNhbGN1bGF0aW9uIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZlxuICogYG9wdGlvbnMud2Vla1N0YXJ0c09uYCAod2hpY2ggaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWspXG4gKiBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAod2hpY2ggaXMgdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW5cbiAqIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB3ZWVrLW51bWJlcmluZyB5ZWFyKVxuICpcbiAqIFdlZWsgbnVtYmVyaW5nOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZWVrI1RoZV9JU09fd2Vla19kYXRlX3N5c3RlbVxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGdpdmVuIGRhdGVcbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIFRoZSB3ZWVrXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgb2YgdGhlIGxvY2FsIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMiBKYW51YXJ5IDIwMDUgd2l0aCBkZWZhdWx0IG9wdGlvbnM/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrKG5ldyBEYXRlKDIwMDUsIDAsIDIpKVxuICogLy89XHUwMDNlIDJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggd2VlayBvZiB0aGUgbG9jYWwgd2VlayBudW1iZXJpbmcgeWVhciBpcyAyIEphbnVhcnkgMjAwNSxcbiAqIC8vIGlmIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLFxuICogLy8gYW5kIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyIGFsd2F5cyBjb250YWlucyA0IEphbnVhcnk/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrKG5ldyBEYXRlKDIwMDUsIDAsIDIpLCB7XG4gKiAgIHdlZWtTdGFydHNPbjogMSxcbiAqICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiA0XG4gKiB9KVxuICogLy89XHUwMDNlIDUzXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFdlZWsoZGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgY29uc3QgZGlmZiA9ICtzdGFydE9mV2VlayhfZGF0ZSwgb3B0aW9ucykgLSArc3RhcnRPZldlZWtZZWFyKF9kYXRlLCBvcHRpb25zKTtcblxuICAvLyBSb3VuZCB0aGUgbnVtYmVyIG9mIHdlZWtzIHRvIHRoZSBuZWFyZXN0IGludGVnZXIgYmVjYXVzZSB0aGUgbnVtYmVyIG9mXG4gIC8vIG1pbGxpc2Vjb25kcyBpbiBhIHdlZWsgaXMgbm90IGNvbnN0YW50IChlLmcuIGl0J3MgZGlmZmVyZW50IGluIHRoZSB3ZWVrIG9mXG4gIC8vIHRoZSBkYXlsaWdodCBzYXZpbmcgdGltZSBjbG9jayBzaGlmdCkuXG4gIHJldHVybiBNYXRoLnJvdW5kKGRpZmYgLyBtaWxsaXNlY29uZHNJbldlZWspICsgMTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBnZXRXZWVrO1xuIiwgImltcG9ydCB7IGdldFdlZWsgfSBmcm9tIFwiLi9nZXRXZWVrLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgc2V0V2Vla30gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIHNldFdlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgbG9jYWwgd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgbG9jYWwgd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZSwgc2F2aW5nIHRoZSB3ZWVrZGF5IG51bWJlci5cbiAqIFRoZSBleGFjdCBjYWxjdWxhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2ZcbiAqIGBvcHRpb25zLndlZWtTdGFydHNPbmAgKHdoaWNoIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrKVxuICogYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKHdoaWNoIGlzIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluXG4gKiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhcilcbiAqXG4gKiBXZWVrIG51bWJlcmluZzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VlayNUaGVfSVNPX3dlZWtfZGF0ZV9zeXN0ZW1cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB3ZWVrIC0gVGhlIHdlZWsgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgbG9jYWwgd2VlayBzZXRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHRoZSAxc3Qgd2VlayB0byAyIEphbnVhcnkgMjAwNSB3aXRoIGRlZmF1bHQgb3B0aW9uczpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldFdlZWsobmV3IERhdGUoMjAwNSwgMCwgMiksIDEpXG4gKiAvLz1cdTAwM2UgU3VuIERlYyAyNiAyMDA0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB0aGUgMXN0IHdlZWsgdG8gMiBKYW51YXJ5IDIwMDUsXG4gKiAvLyBpZiBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayxcbiAqIC8vIGFuZCB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhciBhbHdheXMgY29udGFpbnMgNCBKYW51YXJ5OlxuICogY29uc3QgcmVzdWx0ID0gc2V0V2VlayhuZXcgRGF0ZSgyMDA1LCAwLCAyKSwgMSwge1xuICogICB3ZWVrU3RhcnRzT246IDEsXG4gKiAgIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNFxuICogfSlcbiAqIC8vPVx1MDAzZSBTdW4gSmFuIDQgMjAwNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0V2VlayhkYXRlLCB3ZWVrLCBvcHRpb25zKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCBkaWZmID0gZ2V0V2VlayhfZGF0ZSwgb3B0aW9ucykgLSB3ZWVrO1xuICBfZGF0ZS5zZXREYXRlKF9kYXRlLmdldERhdGUoKSAtIGRpZmYgKiA3KTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHNldFdlZWs7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgIi8qKlxuICogQG5hbWUgY29uc3RydWN0RnJvbVxuICogQGNhdGVnb3J5IEdlbmVyaWMgSGVscGVyc1xuICogQHN1bW1hcnkgQ29uc3RydWN0cyBhIGRhdGUgdXNpbmcgdGhlIHJlZmVyZW5jZSBkYXRlIGFuZCB0aGUgdmFsdWVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBmdW5jdGlvbiBjb25zdHJ1Y3RzIGEgbmV3IGRhdGUgdXNpbmcgdGhlIGNvbnN0cnVjdG9yIGZyb20gdGhlIHJlZmVyZW5jZVxuICogZGF0ZSBhbmQgdGhlIGdpdmVuIHZhbHVlLiBJdCBoZWxwcyB0byBidWlsZCBnZW5lcmljIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdFxuICogZGF0ZSBleHRlbnNpb25zLlxuICpcbiAqIEl0IGRlZmF1bHRzIHRvIGBEYXRlYCBpZiB0aGUgcGFzc2VkIHJlZmVyZW5jZSBkYXRlIGlzIGEgbnVtYmVyIG9yIGEgc3RyaW5nLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIHJlZmVyZW5jZSBkYXRlIHRvIHRha2UgY29uc3RydWN0b3IgZnJvbVxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNyZWF0ZSB0aGUgZGF0ZVxuICpcbiAqIEByZXR1cm5zIERhdGUgaW5pdGlhbGl6ZWQgdXNpbmcgdGhlIGdpdmVuIGRhdGUgYW5kIHZhbHVlXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tICdkYXRlLWZucydcbiAqXG4gKiAvLyBBIGZ1bmN0aW9uIHRoYXQgY2xvbmVzIGEgZGF0ZSBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCB0eXBlXG4gKiBmdW5jdGlvbiBjbG9uZURhdGVcdTAwM2NEYXRlVHlwZSBleHRlbmRzIERhdGUoZGF0ZTogRGF0ZVR5cGUpOiBEYXRlVHlwZSB7XG4gKiAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKFxuICogICAgIGRhdGUsIC8vIFVzZSBjb250cnVzdG9yIGZyb20gdGhlIGdpdmVuIGRhdGVcbiAqICAgICBkYXRlLmdldFRpbWUoKSAvLyBVc2UgdGhlIGRhdGUgdmFsdWUgdG8gY3JlYXRlIGEgbmV3IGRhdGVcbiAqICAgKVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RnJvbShkYXRlLCB2YWx1ZSkge1xuICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gbmV3IGRhdGUuY29uc3RydWN0b3IodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBjb25zdHJ1Y3RGcm9tO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZE1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRvIGJlIGFkZGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaWxsaXNlY29uZHMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDc1MCBtaWxsaXNlY29uZHMgdG8gMTAgSnVseSAyMDE0IDEyOjQ1OjMwLjAwMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZE1pbGxpc2Vjb25kcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDQ1LCAzMCwgMCksIDc1MClcbiAqIC8vPVx1MDAzZSBUaHUgSnVsIDEwIDIwMTQgMTI6NDU6MzAuNzUwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRNaWxsaXNlY29uZHMoZGF0ZSwgYW1vdW50KSB7XG4gIGNvbnN0IHRpbWVzdGFtcCA9ICt0b0RhdGUoZGF0ZSk7XG4gIHJldHVybiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHRpbWVzdGFtcCArIGFtb3VudCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkTWlsbGlzZWNvbmRzO1xuIiwgIi8qKlxuICogQG1vZHVsZSBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IFVzZWZ1bCBjb25zdGFudHNcbiAqIEBkZXNjcmlwdGlvblxuICogQ29sbGVjdGlvbiBvZiB1c2VmdWwgZGF0ZSBjb25zdGFudHMuXG4gKlxuICogVGhlIGNvbnN0YW50cyBjb3VsZCBiZSBpbXBvcnRlZCBmcm9tIGBkYXRlLWZucy9jb25zdGFudHNgOlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBtYXhUaW1lLCBtaW5UaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGZ1bmN0aW9uIGlzQWxsb3dlZFRpbWUodGltZSkge1xuICogICByZXR1cm4gdGltZSBcdTAwM2M9IG1heFRpbWUgXHUwMDI2XHUwMDI2IHRpbWUgXHUwMDNlPSBtaW5UaW1lO1xuICogfVxuICogYGBgXG4gKi9cblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIGRheXNJbldlZWtcbiAqIEBzdW1tYXJ5IERheXMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3QgZGF5c0luV2VlayA9IDc7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBkYXlzSW5ZZWFyXG4gKiBAc3VtbWFyeSBEYXlzIGluIDEgeWVhci5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEhvdyBtYW55IGRheXMgaW4gYSB5ZWFyLlxuICpcbiAqIE9uZSB5ZWFycyBlcXVhbHMgMzY1LjI0MjUgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6XG4gKlxuICogXHUwMDNlIExlYXAgeWVhciBvY2N1cmVzIGV2ZXJ5IDQgeWVhcnMsIGV4Y2VwdCBmb3IgeWVhcnMgdGhhdCBhcmUgZGl2aXNhYmxlIGJ5IDEwMCBhbmQgbm90IGRpdmlzYWJsZSBieSA0MDAuXG4gKiBcdTAwM2UgMSBtZWFuIHllYXIgPSAoMzY1KzEvNC0xLzEwMCsxLzQwMCkgZGF5cyA9IDM2NS4yNDI1IGRheXNcbiAqL1xuZXhwb3J0IGNvbnN0IGRheXNJblllYXIgPSAzNjUuMjQyNTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1heFRpbWVcbiAqIEBzdW1tYXJ5IE1heGltdW0gYWxsb3dlZCB0aW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBtYXhUaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGNvbnN0IGlzVmFsaWQgPSA4NjQwMDAwMDAwMDAwMDAxIFx1MDAzYz0gbWF4VGltZTtcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICpcbiAqIG5ldyBEYXRlKDg2NDAwMDAwMDAwMDAwMDEpO1xuICogLy89XHUwMDNlIEludmFsaWQgRGF0ZVxuICovXG5leHBvcnQgY29uc3QgbWF4VGltZSA9IE1hdGgucG93KDEwLCA4KSAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW5UaW1lXG4gKiBAc3VtbWFyeSBNaW5pbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBjb25zdCBpc1ZhbGlkID0gLTg2NDAwMDAwMDAwMDAwMDEgXHUwMDNlPSBtaW5UaW1lO1xuICogLy89XHUwMDNlIGZhbHNlXG4gKlxuICogbmV3IERhdGUoLTg2NDAwMDAwMDAwMDAwMDEpXG4gKiAvLz1cdTAwM2UgSW52YWxpZCBEYXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtaW5UaW1lID0gLW1heFRpbWU7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbldlZWtcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbldlZWsgPSA2MDQ4MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkRheVxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5EYXkgPSA4NjQwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luTWludXRlXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBtaW51dGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luTWludXRlID0gNjAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkhvdXJcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIGhvdXJcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luSG91ciA9IDM2MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJblNlY29uZFxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgc2Vjb25kXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJblNlY29uZCA9IDEwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5ZZWFyXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJblllYXIgPSA1MjU2MDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5Nb250aFxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIG1vbnRoLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luTW9udGggPSA0MzIwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbkRheVxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbkRheSA9IDE0NDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5Ib3VyXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgaG91ci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbkhvdXIgPSA2MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1vbnRoc0luUXVhcnRlclxuICogQHN1bW1hcnkgTW9udGhzIGluIDEgcXVhcnRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1vbnRoc0luUXVhcnRlciA9IDM7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtb250aHNJblllYXJcbiAqIEBzdW1tYXJ5IE1vbnRocyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aHNJblllYXIgPSAxMjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHF1YXJ0ZXJzSW5ZZWFyXG4gKiBAc3VtbWFyeSBRdWFydGVycyBpbiAxIHllYXJcbiAqL1xuZXhwb3J0IGNvbnN0IHF1YXJ0ZXJzSW5ZZWFyID0gNDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbkhvdXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBob3VyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luSG91ciA9IDM2MDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5NaW51dGVcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBtaW51dGUuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5NaW51dGUgPSA2MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbkRheVxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbkRheSA9IHNlY29uZHNJbkhvdXIgKiAyNDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbldlZWtcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luV2VlayA9IHNlY29uZHNJbkRheSAqIDc7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5ZZWFyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJblllYXIgPSBzZWNvbmRzSW5EYXkgKiBkYXlzSW5ZZWFyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luTW9udGhcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBtb250aFxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luTW9udGggPSBzZWNvbmRzSW5ZZWFyIC8gMTI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5RdWFydGVyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgcXVhcnRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJblF1YXJ0ZXIgPSBzZWNvbmRzSW5Nb250aCAqIDM7XG4iLCAiaW1wb3J0IHsgYWRkTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vYWRkTWlsbGlzZWNvbmRzLm1qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5NaW51dGUgfSBmcm9tIFwiLi9jb25zdGFudHMubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgYWRkTWludXRlc1xuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWludXRlcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaW51dGVzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgbWludXRlcyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgbWludXRlcyBhZGRlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMzAgbWludXRlcyB0byAxMCBKdWx5IDIwMTQgMTI6MDA6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRNaW51dGVzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgMCksIDMwKVxuICogLy89XHUwMDNlIFRodSBKdWwgMTAgMjAxNCAxMjozMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkTWludXRlcyhkYXRlLCBhbW91bnQpIHtcbiAgcmV0dXJuIGFkZE1pbGxpc2Vjb25kcyhkYXRlLCBhbW91bnQgKiBtaWxsaXNlY29uZHNJbk1pbnV0ZSk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkTWludXRlcztcbiIsICJpbXBvcnQgeyBhZGRNaW51dGVzIH0gZnJvbSBcIi4vYWRkTWludXRlcy5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBzdWJNaW51dGVzXG4gKiBAY2F0ZWdvcnkgTWludXRlIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbnV0ZXMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbnV0ZXMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIG1pbnV0ZXMgdG8gYmUgc3VidHJhY3RlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgbWludXRlcyBzdWJ0cmFjdGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDMwIG1pbnV0ZXMgZnJvbSAxMCBKdWx5IDIwMTQgMTI6MDA6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJNaW51dGVzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgMCksIDMwKVxuICogLy89XHUwMDNlIFRodSBKdWwgMTAgMjAxNCAxMTozMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3ViTWludXRlcyhkYXRlLCBhbW91bnQpIHtcbiAgcmV0dXJuIGFkZE1pbnV0ZXMoZGF0ZSwgLWFtb3VudCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3ViTWludXRlcztcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiLyoqXG4gKiBAbmFtZSBjb25zdHJ1Y3RGcm9tXG4gKiBAY2F0ZWdvcnkgR2VuZXJpYyBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb25zdHJ1Y3RzIGEgZGF0ZSB1c2luZyB0aGUgcmVmZXJlbmNlIGRhdGUgYW5kIHRoZSB2YWx1ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGZ1bmN0aW9uIGNvbnN0cnVjdHMgYSBuZXcgZGF0ZSB1c2luZyB0aGUgY29uc3RydWN0b3IgZnJvbSB0aGUgcmVmZXJlbmNlXG4gKiBkYXRlIGFuZCB0aGUgZ2l2ZW4gdmFsdWUuIEl0IGhlbHBzIHRvIGJ1aWxkIGdlbmVyaWMgZnVuY3Rpb25zIHRoYXQgYWNjZXB0XG4gKiBkYXRlIGV4dGVuc2lvbnMuXG4gKlxuICogSXQgZGVmYXVsdHMgdG8gYERhdGVgIGlmIHRoZSBwYXNzZWQgcmVmZXJlbmNlIGRhdGUgaXMgYSBudW1iZXIgb3IgYSBzdHJpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgcmVmZXJlbmNlIGRhdGUgdG8gdGFrZSBjb25zdHJ1Y3RvciBmcm9tXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY3JlYXRlIHRoZSBkYXRlXG4gKlxuICogQHJldHVybnMgRGF0ZSBpbml0aWFsaXplZCB1c2luZyB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdmFsdWVcbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gJ2RhdGUtZm5zJ1xuICpcbiAqIC8vIEEgZnVuY3Rpb24gdGhhdCBjbG9uZXMgYSBkYXRlIHByZXNlcnZpbmcgdGhlIG9yaWdpbmFsIHR5cGVcbiAqIGZ1bmN0aW9uIGNsb25lRGF0ZVx1MDAzY0RhdGVUeXBlIGV4dGVuZHMgRGF0ZShkYXRlOiBEYXRlVHlwZSk6IERhdGVUeXBlIHtcbiAqICAgcmV0dXJuIGNvbnN0cnVjdEZyb20oXG4gKiAgICAgZGF0ZSwgLy8gVXNlIGNvbnRydXN0b3IgZnJvbSB0aGUgZ2l2ZW4gZGF0ZVxuICogICAgIGRhdGUuZ2V0VGltZSgpIC8vIFVzZSB0aGUgZGF0ZSB2YWx1ZSB0byBjcmVhdGUgYSBuZXcgZGF0ZVxuICogICApXG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHZhbHVlKSB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgZGF0ZS5jb25zdHJ1Y3Rvcih2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGNvbnN0cnVjdEZyb207XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgYWRkRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgZGF5cyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5cyBhZGRlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMTAgZGF5cyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz1cdTAwM2UgVGh1IFNlcCAxMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGREYXlzKGRhdGUsIGFtb3VudCkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgaWYgKGlzTmFOKGFtb3VudCkpIHJldHVybiBjb25zdHJ1Y3RGcm9tKGRhdGUsIE5hTik7XG4gIGlmICghYW1vdW50KSB7XG4gICAgLy8gSWYgMCBkYXlzLCBuby1vcCB0byBhdm9pZCBjaGFuZ2luZyB0aW1lcyBpbiB0aGUgaG91ciBiZWZvcmUgZW5kIG9mIERTVFxuICAgIHJldHVybiBfZGF0ZTtcbiAgfVxuICBfZGF0ZS5zZXREYXRlKF9kYXRlLmdldERhdGUoKSArIGFtb3VudCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGREYXlzO1xuIiwgImltcG9ydCB7IGFkZERheXMgfSBmcm9tIFwiLi9hZGREYXlzLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZFdlZWtzXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygd2Vla3MgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIHdlZWtzIHRvIGJlIGFkZGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSB3ZWVrcyBhZGRlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgNCB3ZWVrcyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkV2Vla3MobmV3IERhdGUoMjAxNCwgOCwgMSksIDQpXG4gKiAvLz1cdTAwM2UgTW9uIFNlcCAyOSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRXZWVrcyhkYXRlLCBhbW91bnQpIHtcbiAgY29uc3QgZGF5cyA9IGFtb3VudCAqIDc7XG4gIHJldHVybiBhZGREYXlzKGRhdGUsIGRheXMpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGFkZFdlZWtzO1xuIiwgImltcG9ydCB7IGFkZFdlZWtzIH0gZnJvbSBcIi4vYWRkV2Vla3MubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgc3ViV2Vla3NcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHdlZWtzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB3ZWVrcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2Ygd2Vla3MgdG8gYmUgc3VidHJhY3RlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgd2Vla3Mgc3VidHJhY3RlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCA0IHdlZWtzIGZyb20gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN1YldlZWtzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCA0KVxuICogLy89XHUwMDNlIE1vbiBBdWcgMDQgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3ViV2Vla3MoZGF0ZSwgYW1vdW50KSB7XG4gIHJldHVybiBhZGRXZWVrcyhkYXRlLCAtYW1vdW50KTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBzdWJXZWVrcztcbiIsICIvLyBUaGUgbW9zdCBvZiB0aGlzIGNvZGUgaXMgcG9ydGVkIGZyb20gaHR0cHM6Ly9kZW5vLmxhbmQveC91bmtub3dudXRpbEB2MS4xLjAvbW9kLnRzXG5cbi8vIGV4cG9ydCB0eXBlIFByZWRpY2F0ZTxUPiA9ICh2YWx1ZTogdW5rbm93bikgPT4gdmFsdWUgaXMgVDtcbmV4cG9ydCBjb25zdCBpc05vbmUgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyB1bmRlZmluZWQgfCBudWxsID0+XG4gIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG5cbmV4cG9ydCBjb25zdCBpc1N0cmluZyA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHN0cmluZyA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBpc051bWJlcih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIG51bWJlciB7XG4vLyAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCI7XG4vLyB9XG4vLyBleHBvcnQgZnVuY3Rpb24gaXNBcnJheTxUIGV4dGVuZHMgdW5rbm93bj4oXG4vLyAgIHZhbHVlOiB1bmtub3duLFxuLy8gICBwcmVkaWNhdGU/OiBQcmVkaWNhdGU8VD4sXG4vLyApOiB2YWx1ZSBpcyBUW10ge1xuLy8gICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgKCFwcmVkaWNhdGUgfHwgdmFsdWUuZXZlcnkocHJlZGljYXRlKSk7XG4vLyB9XG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheTxUPihcbi8vICAgdmFsdWU6IHVua25vd24sXG4vLyAgIHByZWRpY2F0ZT86IFByZWRpY2F0ZTxUPixcbi8vICk6IGFzc2VydHMgdmFsdWUgaXMgQXJyYXk8VD4ge1xuLy8gICBpZiAoaXNBcnJheSh2YWx1ZSwgcHJlZGljYXRlKSkgcmV0dXJuO1xuLy8gICB0aHJvdyBUeXBlRXJyb3IoXCJ2YWx1ZSBtdXN0IGJlIGFuIEFycmF5XCIpO1xuLy8gfVxuXG5leHBvcnQgdHlwZSBPbmVCeU9uZVJlc3VsdDxUPiA9IHtcbiAgc3RhdGU6IFwiZnVsZmlsbGVkXCI7XG4gIHZhbHVlOiBUO1xufSB8IHtcbiAgc3RhdGU6IFwicmVqZWN0ZWRcIjtcbiAgcmVhc29uOiB1bmtub3duO1xufTtcblxuLyoqIFByb21pc2XjgpLop6PmsbrjgZfjgZ/poIbjgavov5TjgZnlh73mlbAgKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogb25lQnlPbmU8VD4oXG4gIHByb21pc2VzOiBJdGVyYWJsZTxQcm9taXNlPFQ+Pixcbik6IEFzeW5jR2VuZXJhdG9yPE9uZUJ5T25lUmVzdWx0PFQ+LCB2b2lkLCB1bmtub3duPiB7XG4gIGNvbnN0IHF1ZXVlID0gW10gYXMgT25lQnlPbmVSZXN1bHQ8VD5bXTtcbiAgbGV0IHJlc29sdmU6ICgoaXRlbTogT25lQnlPbmVSZXN1bHQ8VD4pID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBjb25zdCBwdXNoID0gKGl0ZW06IE9uZUJ5T25lUmVzdWx0PFQ+KSA9PiB7XG4gICAgaWYgKCFyZXNvbHZlKSB7XG4gICAgICBxdWV1ZS5wdXNoKGl0ZW0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXNvbHZlKGl0ZW0pO1xuICAgIHJlc29sdmUgPSB1bmRlZmluZWQ7XG4gIH07XG4gIGNvbnN0IHBvcCA9ICgpID0+IHtcbiAgICBpZiAocXVldWUubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShxdWV1ZS5wb3AoKSEpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb21pc2U8T25lQnlPbmVSZXN1bHQ8VD4+KChyZXMpID0+IHJlc29sdmUgPSByZXMpO1xuICB9O1xuXG4gIGxldCBjb3VudCA9IDA7XG4gIGZvciAoY29uc3QgcHJvbWlzZSBvZiBwcm9taXNlcykge1xuICAgIHByb21pc2VcbiAgICAgIC50aGVuKCh2YWx1ZSkgPT5cbiAgICAgICAgcHVzaCh7XG4gICAgICAgICAgc3RhdGU6IFwiZnVsZmlsbGVkXCIsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuY2F0Y2goKHJlYXNvbikgPT5cbiAgICAgICAgcHVzaCh7XG4gICAgICAgICAgc3RhdGU6IFwicmVqZWN0ZWRcIixcbiAgICAgICAgICByZWFzb24sXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIGNvdW50Kys7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICB5aWVsZCBhd2FpdCBwb3AoKTtcbiAgfVxufVxuIiwgImltcG9ydCB7IGFkZFNlY29uZHMsIGlzQWZ0ZXIsIGxpZ2h0Rm9ybWF0IH0gZnJvbSBcIi4vZGVwcy9kYXRlLWZucy50c1wiO1xuaW1wb3J0IHsgaXNOb25lLCBpc1N0cmluZyB9IGZyb20gXCIuL3V0aWxzLnRzXCI7XG5pbXBvcnQgeyBnZXRJbmRlbnRMaW5lQ291bnQgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LXN0ZC50c1wiO1xuXG5leHBvcnQgdHlwZSBJbnRlcnZhbCA9IHtcbiAgc3RhcnQ/OiBEYXRlO1xuICBlbmQ/OiBEYXRlO1xufTtcbi8qKiDjg5/jg6rnp5LljZjkvY3jga7ntYzpgY7mmYLplpMgKi9cbmV4cG9ydCB0eXBlIER1cmF0aW9uID0gbnVtYmVyO1xuLyoqIHRhc2sgZGF0YSAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXNrIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgYmFzZTogRGF0ZTtcbiAgcGxhbjoge1xuICAgIHN0YXJ0PzogRGF0ZTtcbiAgICAvKiog6KaL56mN44KC44KK5pmC6ZaTIOWNmOS9jeOBr+enkiAqLyBkdXJhdGlvbj86IG51bWJlcjtcbiAgfTtcbiAgcmVjb3JkOiBJbnRlcnZhbDtcbn1cblxuY29uc3QgcGFyc2VUYXNrID0gKHRleHQ6IHN0cmluZyk6IFRhc2sgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBtYXRjaGVkID0gdGV4dC5tYXRjaChcbiAgICAvXmAoXFxkezR9KS0oXFxkezJ9KS0oXFxkezJ9KSAoPzogezV9fChcXGR7Mn0pOihcXGR7Mn0pKSAoPzogezR9fChcXGR7NH0pKSAoPzogezh9fChcXGR7Mn0pOihcXGR7Mn0pOihcXGR7Mn0pKSAoPzogezh9fChcXGR7Mn0pOihcXGR7Mn0pOihcXGR7Mn0pKWAoW15cXG5dKikkLyxcbiAgKTtcbiAgaWYgKCFtYXRjaGVkKSByZXR1cm47XG5cbiAgLy8g44K/44K544Kv44GM5pu444GN6L6844G+44KM44Gf6KGM44KS6Kej5p6Q44GZ44KLXG4gIGNvbnN0IFtcbiAgICAsXG4gICAgeWVhcixcbiAgICBtb250aCxcbiAgICBkYXRlLFxuICAgIHBob3VycyxcbiAgICBwbWludXRlcyxcbiAgICBkdXJhdGlvbixcbiAgICBzaG91cnMsXG4gICAgc21pbnV0ZXMsXG4gICAgc3NlY29uZHMsXG4gICAgZWhvdXJzLFxuICAgIGVtaW51dGVzLFxuICAgIGVzZWNvbmRzLFxuICAgIHRpdGxlLFxuICBdID0gbWF0Y2hlZDtcbiAgY29uc3QgdGFzazogVGFzayA9IHtcbiAgICB0aXRsZSxcbiAgICBiYXNlOiBuZXcgRGF0ZShwYXJzZUludCh5ZWFyKSwgcGFyc2VJbnQobW9udGgpIC0gMSwgcGFyc2VJbnQoZGF0ZSkpLFxuICAgIHBsYW46IHt9LFxuICAgIHJlY29yZDoge30sXG4gIH07XG5cbiAgaWYgKHBob3Vycykge1xuICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUodGFzay5iYXNlKTtcbiAgICBzdGFydC5zZXRIb3VycyhwYXJzZUludChwaG91cnMpKTtcbiAgICBzdGFydC5zZXRNaW51dGVzKHBhcnNlSW50KHBtaW51dGVzKSk7XG4gICAgdGFzay5wbGFuLnN0YXJ0ID0gc3RhcnQ7XG4gIH1cbiAgaWYgKGR1cmF0aW9uKSB0YXNrLnBsYW4uZHVyYXRpb24gPSBwYXJzZUludChkdXJhdGlvbikgKiA2MDtcbiAgLy8g5a6f57i+5pmC5Yi744KS6Kej5p6Q44GZ44KLXG4gIC8vIOmWi+Wni+aZguWIu+OCiOOCiue1guS6huaZguWIu+OBruaWueOBjOWJjeOBoOOBo+OBn+OCieOAgeaXpeS7mOOCkui2iuOBiOOBpuOBhOOCi+OBqOOBv+OBquOBmVxuICBpZiAoc2hvdXJzKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZSh0YXNrLmJhc2UpO1xuICAgIHN0YXJ0LnNldEhvdXJzKHBhcnNlSW50KHNob3VycykpO1xuICAgIHN0YXJ0LnNldE1pbnV0ZXMocGFyc2VJbnQoc21pbnV0ZXMpKTtcbiAgICBzdGFydC5zZXRTZWNvbmRzKHBhcnNlSW50KHNzZWNvbmRzKSk7XG4gICAgdGFzay5yZWNvcmQuc3RhcnQgPSBzdGFydDtcbiAgfVxuICBpZiAoZWhvdXJzKSB7XG4gICAgY29uc3QgZW5kID0gbmV3IERhdGUodGFzay5iYXNlKTtcbiAgICBlbmQuc2V0SG91cnMocGFyc2VJbnQoZWhvdXJzKSk7XG4gICAgZW5kLnNldE1pbnV0ZXMocGFyc2VJbnQoZW1pbnV0ZXMpKTtcbiAgICBlbmQuc2V0U2Vjb25kcyhwYXJzZUludChlc2Vjb25kcykpO1xuICAgIGlmICh0YXNrLnJlY29yZC5zdGFydCAmJiBpc0FmdGVyKHRhc2sucmVjb3JkLnN0YXJ0LCBlbmQpKSB7XG4gICAgICBlbmQuc2V0RGF0ZShlbmQuZ2V0RGF0ZSgpICsgMSk7XG4gICAgfVxuICAgIHRhc2sucmVjb3JkLmVuZCA9IGVuZDtcbiAgfVxuXG4gIHJldHVybiB0YXNrO1xufTtcbmV4cG9ydCB7IHBhcnNlVGFzayBhcyBwYXJzZSB9O1xuZXhwb3J0IGNvbnN0IGlzVGFzayA9ICh0ZXh0OiBzdHJpbmcpOiBib29sZWFuID0+IHBhcnNlVGFzayh0ZXh0KSAhPT0gdW5kZWZpbmVkO1xuXG4vKiog5q+U6LyD55So44Gu6ZaL5aeL5pel5pmC44KS5Y+W5b6X44GZ44KLICovXG5leHBvcnQgY29uc3Qgc3RhcnREYXRlID0gKHRhc2s6IFRhc2spOiBEYXRlID0+XG4gIHRhc2sucmVjb3JkPy5zdGFydCA/PyB0YXNrLnBsYW4/LnN0YXJ0ID8/IHRhc2suYmFzZTtcblxuLyoqIOavlOi8g+eUqOOBrue1guS6huOCkuWPluW+l+OBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGVuZERhdGUgPSAodGFzazogVGFzayk6IERhdGUgPT5cbiAgdGFzay5yZWNvcmQ/LmVuZCA/P1xuICAgICghaXNOb25lKHRhc2sucGxhbj8uZHVyYXRpb24pXG4gICAgICA/IGFkZFNlY29uZHMoc3RhcnREYXRlKHRhc2spLCB0YXNrLnBsYW4uZHVyYXRpb24pXG4gICAgICA6IHRhc2suYmFzZSk7XG5cbi8qKiDlrp/ooYzkuK3jgYvliKTlrprjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBpc1J1bm5pbmcgPSAodGFzazogVGFzayk6IGJvb2xlYW4gPT5cbiAgdGFzay5yZWNvcmQuc3RhcnQgIT09IHVuZGVmaW5lZCAmJiB0YXNrLnJlY29yZC5lbmQgPT09IHVuZGVmaW5lZDtcblxuLyoqIOWujOS6huOBl+OBn+OBi+WIpOWumuOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGlzRG9uZSA9ICh0YXNrOiBUYXNrKTogYm9vbGVhbiA9PlxuICB0YXNrLnJlY29yZC5zdGFydCAhPT0gdW5kZWZpbmVkICYmIHRhc2sucmVjb3JkLmVuZCAhPT0gdW5kZWZpbmVkO1xuXG4vKiogVGFza+OCkuaWh+Wtl+WIl+OBq+ebtOOBmSAqL1xuZXhwb3J0IGNvbnN0IHRvU3RyaW5nID0gKHsgdGl0bGUsIGJhc2UsIHBsYW4sIHJlY29yZCB9OiBUYXNrKTogc3RyaW5nID0+XG4gIFtcbiAgICBcImBcIixcbiAgICBsaWdodEZvcm1hdChiYXNlLCBcInl5eXktTU0tZGRcIiksXG4gICAgXCIgXCIsXG4gICAgcGxhbj8uc3RhcnQgPyBsaWdodEZvcm1hdChwbGFuLnN0YXJ0LCBcIkhIOm1tXCIpIDogXCIgXCIucmVwZWF0KDUpLFxuICAgIFwiIFwiLFxuICAgIHBsYW4/LmR1cmF0aW9uXG4gICAgICA/IGAke3BsYW4uZHVyYXRpb24gLyA2MH1gXG4gICAgICAgIC5wYWRTdGFydCg0LCBcIjBcIilcbiAgICAgIDogXCIgXCIucmVwZWF0KDQpLFxuICAgIFwiIFwiLFxuICAgIHJlY29yZD8uc3RhcnQgPyBsaWdodEZvcm1hdChyZWNvcmQ/LnN0YXJ0LCBcIkhIOm1tOnNzXCIpIDogXCIgXCIucmVwZWF0KDgpLFxuICAgIFwiIFwiLFxuICAgIHJlY29yZD8uZW5kID8gbGlnaHRGb3JtYXQocmVjb3JkPy5lbmQsIFwiSEg6bW06c3NcIikgOiBcIiBcIi5yZXBlYXQoOCksXG4gICAgXCJgXCIsXG4gICAgdGl0bGUsXG4gIF0uam9pbihcIlwiKTtcblxuLyoqIFRhc2vjgavjgIHjgqTjg7Pjg4fjg7Pjg4jjgafjgbbjgonkuIvjgYzjgaPjgabjgYTjgovooYzjga7jg4bjgq3jgrnjg4jjg4fjg7zjgr/jgpLliqDjgYjjgZ/jgoLjga4qL1xuZXhwb3J0IGludGVyZmFjZSBUYXNrQmxvY2sgZXh0ZW5kcyBUYXNrIHtcbiAgLyoq44G244KJ5LiL44GM44Gj44Gm44GE44KL44OG44Kt44K544OI44OH44O844K/ICovIGxpbmVzOiBzdHJpbmdbXTtcbn1cbi8qKiDmnKzmlofjg4fjg7zjgr/jgYvjgonjgIHjgr/jgrnjgq/jgajjgZ3jgZPjgavjgbbjgonkuIvjgYzjgaPjgZ/ooYzjgpLjgb7jgajjgoHjgabov5TjgZkgKi9cbmV4cG9ydCBmdW5jdGlvbiogcGFyc2VCbG9jayhcbiAgbGluZXM6IHsgdGV4dDogc3RyaW5nIH1bXSB8IHN0cmluZ1tdLFxuKTogR2VuZXJhdG9yPFRhc2tCbG9jaywgdm9pZCwgdm9pZD4ge1xuICBmb3IgKGNvbnN0IGRhdGEgb2YgcGFyc2VMaW5lcyhsaW5lcykpIHtcbiAgICBpZiAoaXNTdHJpbmcoZGF0YSkpIGNvbnRpbnVlO1xuICAgIHlpZWxkIGRhdGE7XG4gIH1cbn1cbi8qKiDmnKzmlofjg4fjg7zjgr/jgpLop6PmnpDjgZfjgabntZDmnpzjgpLov5TjgZkgKi9cbmV4cG9ydCBmdW5jdGlvbiogcGFyc2VMaW5lcyhcbiAgbGluZXM6IHsgdGV4dDogc3RyaW5nIH1bXSB8IHN0cmluZ1tdLFxuKTogR2VuZXJhdG9yPFRhc2tCbG9jayB8IHN0cmluZywgdm9pZCwgdm9pZD4ge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbGluZV8gPSBsaW5lc1tpXTtcbiAgICBjb25zdCBsaW5lID0gaXNTdHJpbmcobGluZV8pID8gbGluZV8gOiBsaW5lXy50ZXh0O1xuICAgIGNvbnN0IGNvdW50ID0gZ2V0SW5kZW50TGluZUNvdW50KGksIGxpbmVzKTtcbiAgICBjb25zdCB0YXNrID0gcGFyc2VUYXNrKGxpbmUpO1xuICAgIGlmICghdGFzaykge1xuICAgICAgeWllbGQgbGluZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB5aWVsZCB7XG4gICAgICAuLi50YXNrLFxuICAgICAgbGluZXM6IGxpbmVzLnNsaWNlKGkgKyAxLCBpICsgMSArIGNvdW50KS5tYXAoKGxpbmVfKSA9PlxuICAgICAgICBpc1N0cmluZyhsaW5lXykgPyBsaW5lXyA6IGxpbmVfLnRleHRcbiAgICAgICksXG4gICAgfTtcbiAgICBpICs9IGNvdW50O1xuICB9XG59XG4iLCAiaW1wb3J0IHsgcGFyc2UsIHRvU3RyaW5nIH0gZnJvbSBcIi4uL3Rhc2sudHNcIjtcbmltcG9ydCB7IGFkZFNlY29uZHMgfSBmcm9tIFwiLi4vZGVwcy9kYXRlLWZucy50c1wiO1xuaW1wb3J0IHsgY2FyZXQsIGdldFRleHQsIGluc2VydExpbmUgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1zdGQtZG9tLnRzXCI7XG5cbmNvbnN0IGludGVydmFsID0gNSAqIDYwOyAvLyA1IG1pbnV0ZXNcbi8qKiDjgqvjg7zjgr3jg6vooYzjga7kuIvjgavjgr/jgrnjgq/jgpLov73liqDjgZnjgotcbiAqXG4gKiDjgqvjg7zjgr3jg6vooYzjgYzjgr/jgrnjgq/jgaDjgaPjgZ/loLTlkIjjga/jgIHjgZ3jga7jgr/jgrnjgq/jga7ml6Xku5jjgajkuojlrprplovlp4vmmYLliLvjgIHopovnqY3jgoLjgormmYLplpPjgpLlvJXjgY3ntpnjgZBcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZFRhc2sgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGxpbmVQb3MgPSBjYXJldCgpLnBvc2l0aW9uLmxpbmU7XG4gIGNvbnN0IHRhc2tMaW5lID0gcGFyc2UoZ2V0VGV4dChsaW5lUG9zKSA/PyBcIlwiKTtcblxuICAvLyDnj77lnKjooYzjgYzjgr/jgrnjgq/jgarjgonjgIHjgZ3jgozjgajlkIzjgZjml6Xku5jjgavjgZnjgotcbiAgLy8g6YGV44Gj44Gf44KJ5LuK5pel44Gr44GZ44KLXG4gIGNvbnN0IGJhc2UgPSB0YXNrTGluZT8uYmFzZSA/PyBuZXcgRGF0ZSgpO1xuXG4gIC8vIOS6iOWumumWi+Wni+aZguWIu+OBqOimi+epjeOCguOCiuaZgumWk+OCkuioiOeul+OBmeOCi1xuICBjb25zdCBwbGFuID0ge1xuICAgIHN0YXJ0OiB0YXNrTGluZT8ucGxhbj8uc3RhcnRcbiAgICAgIC8vIOS6iOWumumWi+Wni+aZguWIu+OBr+OAgeOBneOBruWJjeOBruOCv+OCueOCr+OBruimi+epjeOCguOCiuaZgumWk+OBq2ludGVydmFs44KS6Laz44GX44Gf44KC44Gu44Gg44GR44Ga44KJ44GX44Gm44GK44GPXG4gICAgICA/IGFkZFNlY29uZHMoXG4gICAgICAgIHRhc2tMaW5lLnBsYW4uc3RhcnQsXG4gICAgICAgIGludGVydmFsICsgKHRhc2tMaW5lLnBsYW4uZHVyYXRpb24gPz8gMCksXG4gICAgICApXG4gICAgICA6IHVuZGVmaW5lZCxcbiAgICBkdXJhdGlvbjogdGFza0xpbmU/LnBsYW4/LmR1cmF0aW9uLFxuICB9O1xuXG4gIC8vIOOCq+ODvOOCveODq+ihjOOBruS4i+OBq+abuOOBjei+vOOCgFxuICBhd2FpdCBpbnNlcnRMaW5lKFxuICAgIGxpbmVQb3MgKyAxLFxuICAgIHRvU3RyaW5nKHsgdGl0bGU6IFwiXCIsIGJhc2UsIHBsYW4sIHJlY29yZDoge30gfSksXG4gICk7XG59O1xuIiwgImltcG9ydCB7IGNhcmV0LCBnZXRUZXh0LCByZXBsYWNlTGluZXMgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1zdGQtZG9tLnRzXCI7XG5pbXBvcnQgeyBwYXJzZSwgdG9TdHJpbmcgfSBmcm9tIFwiLi4vdGFzay50c1wiO1xuXG4vKiog44Kr44O844K944Or6KGM44Gu44K/44K544Kv44KS6ZaL5aeL44GZ44KLXG4gKlxuICog5pei44Gr6ZaL5aeL44GV44KM44Gm44GE44Gf44KJ44CB6ZaL5aeL44KS44Kt44Oj44Oz44K744Or44GZ44KLXG4gKi9cbmV4cG9ydCBjb25zdCBzdGFydFRhc2sgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGxpbmVQb3MgPSBjYXJldCgpLnBvc2l0aW9uLmxpbmU7XG4gIGNvbnN0IHRhc2tMaW5lID0gcGFyc2UoZ2V0VGV4dChsaW5lUG9zKSA/PyBcIlwiKTtcbiAgaWYgKCF0YXNrTGluZSkgcmV0dXJuOyAvLyDjgr/jgrnjgq/jgafjgarjgZHjgozjgbDkvZXjgoLjgZfjgarjgYRcbiAgY29uc3QgeyByZWNvcmQ6IHsgc3RhcnQsIGVuZCB9LCAuLi5yZXN0IH0gPSB0YXNrTGluZTtcbiAgaWYgKGVuZCkgcmV0dXJuOyAvLyDjgZnjgafjgavntYLkuobjgZfjgabjgYTjgZ/jgonkvZXjgoLjgZfjgarjgYRcblxuICAvLyDplovlp4vmmYLliLvjgpJ0b2dnbGXjgZnjgotcbiAgYXdhaXQgcmVwbGFjZUxpbmVzKFxuICAgIGxpbmVQb3MsXG4gICAgbGluZVBvcyxcbiAgICB0b1N0cmluZyh7XG4gICAgICByZWNvcmQ6IHsgc3RhcnQ6ICFzdGFydCA/IG5ldyBEYXRlKCkgOiB1bmRlZmluZWQgfSxcbiAgICAgIC4uLnJlc3QsXG4gICAgfSksXG4gICk7XG59O1xuIiwgImltcG9ydCB7IHBhcnNlLCB0b1N0cmluZyB9IGZyb20gXCIuLi90YXNrLnRzXCI7XG5pbXBvcnQgeyBjYXJldCwgZ2V0VGV4dCwgcmVwbGFjZUxpbmVzIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtc3RkLWRvbS50c1wiO1xuXG4vKiog44Kr44O844K944Or6KGM44Gu44K/44K544Kv44KS57WC5LqG44GZ44KLXG4gKlxuICog5pei44Gr57WC5LqG44GX44Gm44GE44Gf44KJ44CB57WC5LqG44KS44Kt44Oj44Oz44K744Or44GZ44KLXG4gKiDplovlp4vjgZXjgozjgabjgYTjgarjgYTjgr/jgrnjgq/jgavjga/lirnmnpzjgYzjgarjgYRcbiAqL1xuZXhwb3J0IGNvbnN0IGVuZFRhc2sgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGxpbmVQb3MgPSBjYXJldCgpLnBvc2l0aW9uLmxpbmU7XG4gIGNvbnN0IHRhc2tMaW5lID0gcGFyc2UoZ2V0VGV4dChsaW5lUG9zKSA/PyBcIlwiKTtcbiAgaWYgKCF0YXNrTGluZSkgcmV0dXJuOyAvLyDjgr/jgrnjgq/jgafjgarjgZHjgozjgbDkvZXjgoLjgZfjgarjgYRcbiAgY29uc3QgeyByZWNvcmQ6IHsgc3RhcnQsIGVuZCB9LCAuLi5yZXN0IH0gPSB0YXNrTGluZTtcbiAgaWYgKCFzdGFydCkgcmV0dXJuOyAvLyDjgb7jgaDplovlp4vjgZfjgabjgYTjgarjgYvjgaPjgZ/jgonkvZXjgoLjgZfjgarjgYRcblxuICAvLyDntYLkuobmmYLliLvjgpJ0b2dnbGXjgZnjgotcbiAgYXdhaXQgcmVwbGFjZUxpbmVzKFxuICAgIGxpbmVQb3MsXG4gICAgbGluZVBvcyxcbiAgICB0b1N0cmluZyh7XG4gICAgICByZWNvcmQ6IHsgc3RhcnQsIGVuZDogKCFlbmQgPyBuZXcgRGF0ZSgpIDogdW5kZWZpbmVkKSB9LFxuICAgICAgLi4ucmVzdCxcbiAgICB9KSxcbiAgKTtcbn07XG4iLCAiaW1wb3J0IHsgcGFyc2UsIHRvU3RyaW5nIH0gZnJvbSBcIi4uL3Rhc2sudHNcIjtcbmltcG9ydCB7IGVuZFRhc2sgfSBmcm9tIFwiLi9lbmRUYXNrLnRzXCI7XG5pbXBvcnQge1xuICBjYXJldCxcbiAgZ2V0TGluZXMsXG4gIGdldFRleHQsXG4gIHJlcGxhY2VMaW5lcyxcbn0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtc3RkLWRvbS50c1wiO1xuXG4vKiog44Kr44O844K944Or6KGM44Gu44K/44K544Kv44KS5LqL5b6M5aCx5ZGK55qE44Gr57WC5LqG44GZ44KLXG4gKlxuICog44Kr44O844K944Or6KGM44KI44KK5YmN44Gr44GC44KL44K/44K544Kv44Gu57WC5LqG5pmC5Yi744KS6ZaL5aeL5pmC5Yi744Go44GX44Gm6KiY5YWl44GZ44KLXG4gKiDjgqvjg7zjgr3jg6vooYzjgojjgorliY3jgavntYLkuobjgZfjgabjgYTjgovjgr/jgrnjgq/jgYzkuIDjgaTjgoLjgarjgYTjgajjgY3jga/jgIHnj77lnKjmmYLliLvjgpLplovlp4vmmYLliLvjgajjgZnjgotcbiAqXG4gKiDml6Ljgavplovlp4vjgZfjgabjgYTjgovjgr/jgrnjgq/jgaDjgaPjgZ/loLTlkIjjga/jgIFgZW5kVGFzaygpYOOBqOWQjOOBmOWHpueQhuOCkuihjOOBhlxuICovXG5leHBvcnQgY29uc3QgcG9zdGVyaW9yaUVuZFRhc2sgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGxpbmVQb3MgPSBjYXJldCgpLnBvc2l0aW9uLmxpbmU7XG4gIGNvbnN0IHRhc2tMaW5lID0gcGFyc2UoZ2V0VGV4dChsaW5lUG9zKSA/PyBcIlwiKTtcbiAgaWYgKCF0YXNrTGluZSkgcmV0dXJuOyAvLyDjgr/jgrnjgq/jgafjgarjgZHjgozjgbDkvZXjgoLjgZfjgarjgYRcbiAgY29uc3QgeyByZWNvcmQ6IHsgc3RhcnQsIGVuZCB9LCAuLi5yZXN0IH0gPSB0YXNrTGluZTtcbiAgaWYgKHN0YXJ0KSB7XG4gICAgaWYgKGVuZCkgcmV0dXJuO1xuICAgIGF3YWl0IGVuZFRhc2soKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGVuZCkgcmV0dXJuO1xuXG4gIC8vIOebtOi/keOBruOCv+OCueOCr+OBrue1guS6huaXpeaZguOCkuWPluW+l+OBmeOCi1xuICBsZXQgcHJldkVuZDogRGF0ZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgZm9yIChjb25zdCB7IHRleHQgfSBvZiBnZXRMaW5lcygpLnNsaWNlKDAsIChsaW5lUG9zID8/IDApICsgMSkucmV2ZXJzZSgpKSB7XG4gICAgY29uc3QgeyByZWNvcmQgfSA9IHBhcnNlKHRleHQpID8/IHt9O1xuICAgIGlmIChyZWNvcmQ/LmVuZCkge1xuICAgICAgcHJldkVuZCA9IHJlY29yZC5lbmQ7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyDkuIrmm7jjgY3jgZnjgotcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgYXdhaXQgcmVwbGFjZUxpbmVzKFxuICAgIGxpbmVQb3MsXG4gICAgbGluZVBvcyxcbiAgICB0b1N0cmluZyh7XG4gICAgICByZWNvcmQ6IHsgc3RhcnQ6IHByZXZFbmQgPz8gbm93LCBlbmQ6IG5vdyB9LFxuICAgICAgLi4ucmVzdCxcbiAgICB9KSxcbiAgKTtcbn07XG4iLCAiaW1wb3J0IHsgY2FyZXQgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1zdGQtZG9tLnRzXCI7XG5cbi8qKiDpgbjmip7nr4Tlm7LjgavlkKvjgb7jgozjgovooYzjgYvjgqvjg7zjgr3jg6vjgYzjgYTjgovooYzjgpLov5TjgZkgKi9cbmV4cG9ydCBjb25zdCBnZXRMaW5lUmFuZ2UgPSAoKTogcmVhZG9ubHkgW251bWJlciwgbnVtYmVyXSA9PiB7XG4gIGNvbnN0IHsgc2VsZWN0aW9uUmFuZ2U6IHsgc3RhcnQsIGVuZCB9LCBzZWxlY3RlZFRleHQsIHBvc2l0aW9uIH0gPSBjYXJldCgpO1xuICByZXR1cm4gc2VsZWN0ZWRUZXh0ID09PSBcIlwiXG4gICAgPyBbcG9zaXRpb24ubGluZSwgcG9zaXRpb24ubGluZV1cbiAgICA6IHN0YXJ0LmxpbmUgPiBlbmQubGluZVxuICAgID8gW2VuZC5saW5lLCBzdGFydC5saW5lXVxuICAgIDogW3N0YXJ0LmxpbmUsIGVuZC5saW5lXSBhcyBjb25zdDtcbn07XG4iLCAiLyoqIOmWi+Wni+aXpeaZguOCkuioiOeul+OBmeOCi1xuICpcbiAqIEBwYXJhbSBoYXBwZW4g44K/44K544Kv44GM55m655Sf44GX44Gf5pel5pmC44GuVU5JWOaZguWIu1xuICogQHBhcmFtIGR1cmF0aW9uIOeZuueUn+OBi+OCieS9leaXpeebruOBvuOBp+OCkue3oOOCgeWIh+OCiuOBqOOBmeOCi+OBi1xuICogQHJldHVybiDplovlp4vml6XmmYJcbiAqL1xuZXhwb3J0IGNvbnN0IGNhbGNTdGFydCA9IChoYXBwZW46IG51bWJlciwgZHVyYXRpb24gPSA3KTogRGF0ZSA9PlxuICBuZXcgRGF0ZShcbiAgICAoXG4gICAgICBoYXBwZW4gK1xuICAgICAgKDI0ICogNjAgKiA2MCAqIDMwICogKChkdXJhdGlvbiArIDEpICoqIDEuNSAtIDEpKSAvICgoMzAwICsgMSkgKiogMS41IC0gMSlcbiAgICApICogMTAwMCxcbiAgKTtcbiIsICJpbXBvcnQgdHlwZSB7IERhdGVWYWx1ZXMsIER1cmF0aW9uIH0gZnJvbSBcIi4vZGVwcy9kYXRlLWZucy50c1wiO1xuaW1wb3J0IHsgYWRkLCBzZXQgfSBmcm9tIFwiLi9kZXBzL2RhdGUtZm5zLnRzXCI7XG5pbXBvcnQgeyBjYWxjU3RhcnQgfSBmcm9tIFwiLi9jYWxjU3RhcnQudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTcGVjaWZpZXJSZXN1bHQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHN0YXJ0PzogRGF0ZTtcbiAgLyoqIOWNmOS9jeOBr+enkiAqLyBkdXJhdGlvbj86IG51bWJlcjtcbn1cbmV4cG9ydCBjb25zdCBwYXJzZVNwZWNpZmllciA9IChcbiAgdGV4dDogc3RyaW5nLFxuICBiYXNlOiBEYXRlLFxuKTogU3BlY2lmaWVyUmVzdWx0IHwgdW5kZWZpbmVkID0+IHtcbiAgbGV0IGR1cmF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxldCBuYW1lOiBzdHJpbmc7XG4gIGxldCBwYXJhbTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBsZXQgdHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBsZXQgcGFydHM6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsID0gbnVsbDtcbiAgaWYgKChwYXJ0cyA9IHRleHQubWF0Y2goL14oLio/KShzfGUpOihbXlxcc10rKVxccytkOihcXGQrKS8pKSkge1xuICAgIFssIG5hbWUsIHR5cGUsIHBhcmFtLCBkdXJhdGlvbl0gPSBwYXJ0cztcbiAgfSBlbHNlIGlmICgocGFydHMgPSB0ZXh0Lm1hdGNoKC9eKC4qPylkOihcXGQrKVxccysoc3xlKTooW15cXHNdKykvKSkpIHtcbiAgICBbLCBuYW1lLCBkdXJhdGlvbiwgdHlwZSwgcGFyYW1dID0gcGFydHM7XG4gIH0gZWxzZSBpZiAoKHBhcnRzID0gdGV4dC5tYXRjaCgvXiguKj8pKHN8ZSk6KFteXFxzXSspLykpKSB7XG4gICAgWywgbmFtZSwgdHlwZSwgcGFyYW1dID0gcGFydHM7XG4gIH0gZWxzZSBpZiAoKHBhcnRzID0gdGV4dC5tYXRjaCgvXiguKj8pZDooXFxkKykvKSkpIHtcbiAgICBbLCBuYW1lLCBkdXJhdGlvbl0gPSBwYXJ0cztcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogbmFtZS50cmltRW5kKCksXG4gICAgICBkdXJhdGlvbjogcGFyc2VJbnQoZHVyYXRpb24pICogNjAsXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKGNvbnN0IHsgdGVzdCwgcGFyc2UgfSBvZiBwYXJzZXJzKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHBhcmFtLm1hdGNoKHRlc3QpO1xuICAgIGlmICghbWF0Y2hlcykgY29udGludWU7XG5cbiAgICBjb25zdCBkYXRhID0gcGFyc2UobWF0Y2hlcyk7XG4gICAgY29uc3QgZGF0ZSA9IGRhdGEuaXNEdXJhdGlvbiA/IGFkZChiYXNlLCBkYXRhKSA6IHNldChiYXNlLCBkYXRhKTtcbiAgICBpZiAodHlwZSA9PT0gXCJzXCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IG5hbWUudHJpbUVuZCgpLFxuICAgICAgICBzdGFydDogZGF0ZSxcbiAgICAgICAgLi4uKGR1cmF0aW9uICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHsgZHVyYXRpb246IHBhcnNlSW50KGR1cmF0aW9uKSAqIDYwIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBuYW1lLnRyaW1FbmQoKSxcbiAgICAgIHN0YXJ0OiBjYWxjU3RhcnQoXG4gICAgICAgIGJhc2UuZ2V0VGltZSgpIC8gMTAwMCxcbiAgICAgICAgKGRhdGUuZ2V0VGltZSgpIC0gYmFzZS5nZXRUaW1lKCkpIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApLFxuICAgICAgKSxcbiAgICAgIC4uLihkdXJhdGlvbiAhPT0gdW5kZWZpbmVkID8geyBkdXJhdGlvbjogcGFyc2VJbnQoZHVyYXRpb24pICogNjAgfSA6IHt9KSxcbiAgICB9O1xuICB9XG59O1xuXG5pbnRlcmZhY2UgUGFyc2VyIHtcbiAgdGVzdDogUmVnRXhwO1xuICBwYXJzZTogKFxuICAgIG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5LFxuICApID0+XG4gICAgfCAoeyBpc0R1cmF0aW9uOiBmYWxzZSB9ICYgRGF0ZVZhbHVlcylcbiAgICB8ICh7IGlzRHVyYXRpb246IHRydWUgfSAmIER1cmF0aW9uKTtcbn1cbmNvbnN0IHBhcnNlcnM6IFBhcnNlcltdID0gW1xuICB7XG4gICAgdGVzdDogLyhcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pVChcXGR7Mn0pOihcXGR7Mn0pJC9pLFxuICAgIHBhcnNlOiAobWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzRHVyYXRpb246IGZhbHNlLFxuICAgICAgICB5ZWFyOiBwYXJzZUludChtYXRjaFsxXSksXG4gICAgICAgIG1vbnRoOiBwYXJzZUludChtYXRjaFsyXSkgLSAxLFxuICAgICAgICBkYXRlOiBwYXJzZUludChtYXRjaFszXSksXG4gICAgICAgIGhvdXJzOiBwYXJzZUludChtYXRjaFs0XSksXG4gICAgICAgIG1pbnV0ZXM6IHBhcnNlSW50KG1hdGNoWzVdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC8oXFxkezR9KS0oXFxkezJ9KS0oXFxkezJ9KVQoXFxkezJ9KSQvaSxcbiAgICBwYXJzZTogKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0R1cmF0aW9uOiBmYWxzZSxcbiAgICAgICAgeWVhcjogcGFyc2VJbnQobWF0Y2hbMV0pLFxuICAgICAgICBtb250aDogcGFyc2VJbnQobWF0Y2hbMl0pIC0gMSxcbiAgICAgICAgZGF0ZTogcGFyc2VJbnQobWF0Y2hbM10pLFxuICAgICAgICBob3VyczogcGFyc2VJbnQobWF0Y2hbNF0pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdGVzdDogLyhcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pVD8kL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogZmFsc2UsXG4gICAgICAgIHllYXI6IHBhcnNlSW50KG1hdGNoWzFdKSxcbiAgICAgICAgbW9udGg6IHBhcnNlSW50KG1hdGNoWzJdKSAtIDEsXG4gICAgICAgIGRhdGU6IHBhcnNlSW50KG1hdGNoWzNdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC8oXFxkezJ9KS0oXFxkezJ9KVQoXFxkezJ9KTooXFxkezJ9KSQvaSxcbiAgICBwYXJzZTogKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0R1cmF0aW9uOiBmYWxzZSxcbiAgICAgICAgbW9udGg6IHBhcnNlSW50KG1hdGNoWzFdKSAtIDEsXG4gICAgICAgIGRhdGU6IHBhcnNlSW50KG1hdGNoWzJdKSxcbiAgICAgICAgaG91cnM6IHBhcnNlSW50KG1hdGNoWzNdKSxcbiAgICAgICAgbWludXRlczogcGFyc2VJbnQobWF0Y2hbNF0pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdGVzdDogLyhcXGR7Mn0pLShcXGR7Mn0pVChcXGR7Mn0pJC9pLFxuICAgIHBhcnNlOiAobWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzRHVyYXRpb246IGZhbHNlLFxuICAgICAgICBtb250aDogcGFyc2VJbnQobWF0Y2hbMV0pIC0gMSxcbiAgICAgICAgZGF0ZTogcGFyc2VJbnQobWF0Y2hbMl0pLFxuICAgICAgICBob3VyczogcGFyc2VJbnQobWF0Y2hbM10pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdGVzdDogLyhcXGR7Mn0pLShcXGR7Mn0pVD8kL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogZmFsc2UsXG4gICAgICAgIG1vbnRoOiBwYXJzZUludChtYXRjaFsxXSkgLSAxLFxuICAgICAgICBkYXRlOiBwYXJzZUludChtYXRjaFsyXSksXG4gICAgICB9O1xuICAgIH0sXG4gIH0sXG4gIHtcbiAgICB0ZXN0OiAvKFxcZHsyfSlUKFxcZHsyfSk6KFxcZHsyfSkkL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogZmFsc2UsXG4gICAgICAgIGRhdGU6IHBhcnNlSW50KG1hdGNoWzFdKSxcbiAgICAgICAgaG91cnM6IHBhcnNlSW50KG1hdGNoWzJdKSxcbiAgICAgICAgbWludXRlczogcGFyc2VJbnQobWF0Y2hbM10pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdGVzdDogLyhcXGR7Mn0pVChcXGR7Mn0pJC9pLFxuICAgIHBhcnNlOiAobWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzRHVyYXRpb246IGZhbHNlLFxuICAgICAgICBkYXRlOiBwYXJzZUludChtYXRjaFsxXSksXG4gICAgICAgIGhvdXJzOiBwYXJzZUludChtYXRjaFsyXSksXG4gICAgICB9O1xuICAgIH0sXG4gIH0sXG4gIHtcbiAgICB0ZXN0OiAvVD8oXFxkezJ9KTooXFxkezJ9KSQvaSxcbiAgICBwYXJzZTogKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0R1cmF0aW9uOiBmYWxzZSxcbiAgICAgICAgaG91cnM6IHBhcnNlSW50KG1hdGNoWzFdKSxcbiAgICAgICAgbWludXRlczogcGFyc2VJbnQobWF0Y2hbMl0pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdGVzdDogL1Q/KFxcZHsyfSkkL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogZmFsc2UsXG4gICAgICAgIGhvdXJzOiBwYXJzZUludChtYXRjaFsxXSksXG4gICAgICB9O1xuICAgIH0sXG4gIH0sXG4gIHtcbiAgICB0ZXN0OiAvUChcXGQrKVkoXFxkKylNKFxcZCspRFQoXFxkKylIKFxcZCspTSQvaSxcbiAgICBwYXJzZTogKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0R1cmF0aW9uOiB0cnVlLFxuICAgICAgICB5ZWFyOiBwYXJzZUludChtYXRjaFsxXSksXG4gICAgICAgIG1vbnRoOiBwYXJzZUludChtYXRjaFsyXSkgLSAxLFxuICAgICAgICBkYXlzOiBwYXJzZUludChtYXRjaFszXSksXG4gICAgICAgIGhvdXJzOiBwYXJzZUludChtYXRjaFs0XSksXG4gICAgICAgIG1pbnV0ZXM6IHBhcnNlSW50KG1hdGNoWzVdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC9QKFxcZCspWShcXGQrKU0oXFxkKylEVChcXGQrKUgkL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgeWVhcjogcGFyc2VJbnQobWF0Y2hbMV0pLFxuICAgICAgICBtb250aDogcGFyc2VJbnQobWF0Y2hbMl0pIC0gMSxcbiAgICAgICAgZGF5czogcGFyc2VJbnQobWF0Y2hbM10pLFxuICAgICAgICBob3VyczogcGFyc2VJbnQobWF0Y2hbNF0pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdGVzdDogL1AoXFxkKylZKFxcZCspTShcXGQrKUQkL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgeWVhcjogcGFyc2VJbnQobWF0Y2hbMV0pLFxuICAgICAgICBtb250aDogcGFyc2VJbnQobWF0Y2hbMl0pIC0gMSxcbiAgICAgICAgZGF5czogcGFyc2VJbnQobWF0Y2hbM10pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdGVzdDogL1AoXFxkKylNKFxcZCspRFQoXFxkKylIKFxcZCspTSQvaSxcbiAgICBwYXJzZTogKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0R1cmF0aW9uOiB0cnVlLFxuICAgICAgICBtb250aDogcGFyc2VJbnQobWF0Y2hbMV0pIC0gMSxcbiAgICAgICAgZGF5czogcGFyc2VJbnQobWF0Y2hbMl0pLFxuICAgICAgICBob3VyczogcGFyc2VJbnQobWF0Y2hbM10pLFxuICAgICAgICBtaW51dGVzOiBwYXJzZUludChtYXRjaFs0XSksXG4gICAgICB9O1xuICAgIH0sXG4gIH0sXG4gIHtcbiAgICB0ZXN0OiAvUChcXGQrKU0oXFxkKylEVChcXGQrKUgkL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgbW9udGg6IHBhcnNlSW50KG1hdGNoWzFdKSAtIDEsXG4gICAgICAgIGRheXM6IHBhcnNlSW50KG1hdGNoWzJdKSxcbiAgICAgICAgaG91cnM6IHBhcnNlSW50KG1hdGNoWzNdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC9QKFxcZCspTShcXGQrKUQkL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgbW9udGg6IHBhcnNlSW50KG1hdGNoWzFdKSAtIDEsXG4gICAgICAgIGRheXM6IHBhcnNlSW50KG1hdGNoWzJdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC9QKFxcZCspRFQoXFxkKylIKFxcZCspTSQvaSxcbiAgICBwYXJzZTogKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0R1cmF0aW9uOiB0cnVlLFxuICAgICAgICBkYXlzOiBwYXJzZUludChtYXRjaFsxXSksXG4gICAgICAgIGhvdXJzOiBwYXJzZUludChtYXRjaFsyXSksXG4gICAgICAgIG1pbnV0ZXM6IHBhcnNlSW50KG1hdGNoWzNdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC9QKFxcZCspRFQoXFxkKylIJC9pLFxuICAgIHBhcnNlOiAobWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzRHVyYXRpb246IHRydWUsXG4gICAgICAgIGRheXM6IHBhcnNlSW50KG1hdGNoWzFdKSxcbiAgICAgICAgaG91cnM6IHBhcnNlSW50KG1hdGNoWzJdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC9QKFxcZCspRCQvaSxcbiAgICBwYXJzZTogKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0R1cmF0aW9uOiB0cnVlLFxuICAgICAgICBkYXlzOiBwYXJzZUludChtYXRjaFsxXSksXG4gICAgICB9O1xuICAgIH0sXG4gIH0sXG4gIHtcbiAgICB0ZXN0OiAvUFQ/KFxcZCspSChcXGQrKU0kL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgaG91cnM6IHBhcnNlSW50KG1hdGNoWzFdKSxcbiAgICAgICAgbWludXRlczogcGFyc2VJbnQobWF0Y2hbMl0pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdGVzdDogL1BUPyhcXGQrKUgkL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgaG91cnM6IHBhcnNlSW50KG1hdGNoWzFdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC9QVD8oXFxkKylNJC9pLFxuICAgIHBhcnNlOiAobWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzRHVyYXRpb246IHRydWUsXG4gICAgICAgIG1pbnV0ZXM6IHBhcnNlSW50KG1hdGNoWzFdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC9QKFxcZCspVyQvaSxcbiAgICBwYXJzZTogKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0R1cmF0aW9uOiB0cnVlLFxuICAgICAgICB3ZWVrczogcGFyc2VJbnQobWF0Y2hbMV0pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuXTtcbiIsICJpbXBvcnQgeyB0b1N0cmluZyB9IGZyb20gXCIuLi90YXNrLnRzXCI7XG5pbXBvcnQgeyBnZXRMaW5lUmFuZ2UgfSBmcm9tIFwiLi9nZXRMaW5lUmFuZ2UudHNcIjtcbmltcG9ydCB7IHBhcnNlU3BlY2lmaWVyIH0gZnJvbSBcIi4uL3BhcnNlU3BlY2lmaWVyLnRzXCI7XG5pbXBvcnQgeyBnZXRMaW5lcywgcmVwbGFjZUxpbmVzIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtc3RkLWRvbS50c1wiO1xuXG4vKiog6YG45oqe56+E5Zuy5Lit44Gu6KGM44GL44KJ44CB5LiA6KGM44GU44Go44Gr5paw44GX44GE44K/44K544Kv44KS5L2c44KLICovXG5leHBvcnQgY29uc3QgY3JlYXRlVGFzayA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgYmFzZSA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IFtzdGFydCwgZW5kXSA9IGdldExpbmVSYW5nZSgpO1xuXG4gIGNvbnN0IGxpbmVzID0gZ2V0TGluZXMoKS5zbGljZShzdGFydCwgZW5kICsgMSkubWFwKChsaW5lKSA9PiBsaW5lLnRleHQpO1xuICBjb25zdCB0ZXh0ID0gbGluZXNcbiAgICAuZmxhdE1hcCgobGluZSkgPT4ge1xuICAgICAgLy8g6YG45oqe56+E5Zuy44GL44KJ5Yik5pat44GZ44KL6aCF55uu44Go6ZaL5aeL5pel5pmC44KS5Y+W5b6X44GZ44KLXG4gICAgICBjb25zdCB0ZXh0ID0gbGluZS50cmltRW5kKCk7IC8vIOOCpOODs+ODh+ODs+ODiOOBr+e2reaMgeOBmeOCi1xuICAgICAgaWYgKHRleHQgPT09IFwiXCIpIHJldHVybiBsaW5lO1xuICAgICAgY29uc3QgeyBuYW1lLCBzdGFydCwgZHVyYXRpb24gfSA9IHBhcnNlU3BlY2lmaWVyKHRleHQsIGJhc2UpID8/IHt9O1xuICAgICAgaWYgKCFuYW1lIHx8ICghc3RhcnQgJiYgIWR1cmF0aW9uKSkgcmV0dXJuIGxpbmU7XG5cbiAgICAgIC8vIOOCv+OCueOCr+OBruaWh+Wtl+WIl+OCkuS9nOOCi1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgdG9TdHJpbmcoe1xuICAgICAgICAgIHRpdGxlOiBuYW1lLnRyaW0oKSxcbiAgICAgICAgICBiYXNlOiBzdGFydCA/PyBiYXNlLFxuICAgICAgICAgIHBsYW46IHsgc3RhcnQsIGR1cmF0aW9uIH0sXG4gICAgICAgICAgcmVjb3JkOiB7fSxcbiAgICAgICAgfSksXG4gICAgICBdO1xuICAgIH0pLmpvaW4oXCJcXG5cIik7XG5cbiAgLy8g5L2V44KC5aSJ5YyW44GX44Gq44GR44KM44Gw5pu444GN6L6844G+44Gq44GEXG4gIGlmIChsaW5lcy5qb2luKFwiXFxuXCIpID09PSB0ZXh0KSByZXR1cm47XG5cbiAgLy8g5pu444GN6L6844KAXG4gIGF3YWl0IHJlcGxhY2VMaW5lcyhzdGFydCwgZW5kLCB0ZXh0KTtcbn07XG4iLCAiaW1wb3J0IHsgZ2V0VGV4dCwgcmVwbGFjZUxpbmVzIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtc3RkLWRvbS50c1wiO1xuaW1wb3J0IHsgcGFyc2UsIFRhc2ssIHRvU3RyaW5nIH0gZnJvbSBcIi4uL3Rhc2sudHNcIjtcblxuLyoqIOaMh+WumuevhOWbsuWGheOBruWFqOOBpuOBruOCv+OCueOCr+OCkuS4gOaLrOaTjeS9nOOBmeOCi1xuICpcbiAqIEBwYXJhbSBzdGFydCDpgbjmip7nr4Tlm7Ljga7lhYjpoK3jga7ooYxcbiAqIEBwYXJhbSBlbmQg6YG45oqe56+E5Zuy44Gu5pyr5bC+44Gu6KGMXG4gKiBAcGFyYW0gY2hhbmdlIOWQhOOCv+OCueOCr+OBq+mBqeeUqOOBmeOCi+aTjeS9nFxuICovXG5leHBvcnQgY29uc3QgbW9kaWZ5VGFza3MgPSBhc3luYyAoXG4gIHN0YXJ0OiBudW1iZXIsXG4gIGVuZDogbnVtYmVyLFxuICBjaGFuZ2U6IChcbiAgICAvKiog5aSJ5pu044GZ44KL44K/44K544KvICovIHRhc2s6IFRhc2ssXG4gICAgLyoqIOOCv+OCueOCr+OCkuWPluW+l+OBl+OBn+ihjOOBruihjOeVquWPtyAqLyBpbmRleDogbnVtYmVyLFxuICApID0+IFRhc2ssXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgbGluZXMgPSBbXSBhcyBzdHJpbmdbXTtcbiAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKSB7XG4gICAgY29uc3QgdGV4dCA9IGdldFRleHQoaSkgPz8gXCJcIjtcbiAgICBjb25zdCB0YXNrID0gcGFyc2UodGV4dCk7XG4gICAgLy8g44K/44K544Kv44Go44G/44Gq44GV44KM44Gf6KGM44Gg44GR5aSJ5pu044GZ44KLXG4gICAgaWYgKCF0YXNrKSB7XG4gICAgICBsaW5lcy5wdXNoKHRleHQpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGxpbmVzLnB1c2godG9TdHJpbmcoY2hhbmdlKHRhc2ssIGkpKSk7XG4gIH1cbiAgYXdhaXQgcmVwbGFjZUxpbmVzKHN0YXJ0LCBlbmQsIGxpbmVzLmpvaW4oXCJcXG5cIikpO1xufTtcbiIsICJpbXBvcnQgeyBhZGREYXlzIH0gZnJvbSBcIi4uL2RlcHMvZGF0ZS1mbnMudHNcIjtcbmltcG9ydCB7IGdldExpbmVSYW5nZSB9IGZyb20gXCIuL2dldExpbmVSYW5nZS50c1wiO1xuaW1wb3J0IHsgbW9kaWZ5VGFza3MgfSBmcm9tIFwiLi9tb2RpZnlUYXNrcy50c1wiO1xuXG4vKiog44Kr44O844K944Or6KGM44KC44GX44GP44Gv6YG45oqe56+E5Zuy5YaF44Gu5YWo44Gm44Gu44K/44K544Kv44Gu5pel5LuY44KS6YCy44KB44KLXG4gKlxuICogQHBhcmFtIFtjb3VudD0xXSDpgLLjgoHjgovml6XmlbBcbiAqL1xuZXhwb3J0IGNvbnN0IHdhbGtEYXkgPSBhc3luYyAoY291bnQgPSAxKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IFtzdGFydCwgZW5kXSA9IGdldExpbmVSYW5nZSgpO1xuICBhd2FpdCBtb2RpZnlUYXNrcyhzdGFydCwgZW5kLCAodGFzaykgPT4ge1xuICAgIHRhc2suYmFzZSA9IGFkZERheXModGFzay5iYXNlLCBjb3VudCk7XG4gICAgcmV0dXJuIHRhc2s7XG4gIH0pO1xufTtcbiIsICJpbXBvcnQgeyBpc1NhbWVEYXkgfSBmcm9tIFwiLi4vZGVwcy9kYXRlLWZucy50c1wiO1xuaW1wb3J0IHsgZ2V0TGluZVJhbmdlIH0gZnJvbSBcIi4vZ2V0TGluZVJhbmdlLnRzXCI7XG5pbXBvcnQgeyBtb2RpZnlUYXNrcyB9IGZyb20gXCIuL21vZGlmeVRhc2tzLnRzXCI7XG5cbi8qKiDjgqvjg7zjgr3jg6vooYzjgoLjgZfjgY/jga/pgbjmip7nr4Tlm7LlhoXjga7lhajjgabjga7jgr/jgrnjgq/jga7ml6Xku5jjgpLku4rml6XjgavjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBtb3ZlVG9kYXkgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IFtzdGFydCwgZW5kXSA9IGdldExpbmVSYW5nZSgpO1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBhd2FpdCBtb2RpZnlUYXNrcyhzdGFydCwgZW5kLCAodGFzaykgPT4ge1xuICAgIC8vIOaXpeS7mOOBq+WkieabtOOBjOOBquOBkeOCjOOBsOS9leOCguOBl+OBquOBhFxuICAgIGlmIChpc1NhbWVEYXkodGFzay5iYXNlLCBub3cpKSByZXR1cm4gdGFzaztcbiAgICB0YXNrLmJhc2UgPSBub3c7XG4gICAgcmV0dXJuIHRhc2s7XG4gIH0pO1xufTtcbiIsICJpbXBvcnQge1xuICBhZGRIb3VycyxcbiAgY29tcGFyZUFzYyxcbiAgaXNBZnRlcixcbiAgaXNWYWxpZCxcbiAgbGlnaHRGb3JtYXQsXG4gIHN1YkRheXMsXG59IGZyb20gXCIuL2RlcHMvZGF0ZS1mbnMudHNcIjtcbmltcG9ydCB7IGVuZERhdGUsIHBhcnNlTGluZXMsIHN0YXJ0RGF0ZSwgVGFza0Jsb2NrLCB0b1N0cmluZyB9IGZyb20gXCIuL3Rhc2sudHNcIjtcblxuY29uc3QgYmFzZVRpdGxlID0gXCLml6XliIroqJjpjLJzaGVldFwiO1xuY29uc3QgZGlhcnlSZWdFeHAgPSAv5pel5YiK6KiY6Yyyc2hlZXQgKFxcZHs0fSktKFxcZHsyfSktKFxcZHsyfSkvO1xuY29uc3Qgc2VjdGlvbnMgPSBbXG4gIFwiWyoqIDAwOjAwIC0gMDM6MDBdIOacquaYjlwiLFxuICBcIlsqKiAwMzowMCAtIDA2OjAwXSDmmI7jgZHmlrlcIixcbiAgXCJbKiogMDY6MDAgLSAwOTowMF0g5pydXCIsXG4gIFwiWyoqIDA5OjAwIC0gMTI6MDBdIOaYvOWJjVwiLFxuICBcIlsqKiAxMjowMCAtIDE1OjAwXSDmmLzpgY7jgY5cIixcbiAgXCJbKiogMTU6MDAgLSAxODowMF0g5aSV5pa5XCIsXG4gIFwiWyoqIDE4OjAwIC0gMjE6MDBdIOWknOOBruOBr+OBmOOCgemgg1wiLFxuICBcIlsqKiAyMTowMCAtIDAwOjAwXSDlpJzpgYXjgY9cIixcbl07XG5cbi8qKiDml6Xku5jjg5rjg7zjgrjjgYvjganjgYbjgYvliKTlrprjgZnjgotcbiAqXG4gKiBAcGFyYW0gdGl0bGUg5Yik5a6a44GX44Gf44GE44K/44Kk44OI44OrXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RpYXJ5UGFnZSA9ICh0aXRsZTogc3RyaW5nKTogYm9vbGVhbiA9PiBkaWFyeVJlZ0V4cC50ZXN0KHRpdGxlKTtcblxuLyoqIOaXpeS7mOODmuODvOOCuOOBruOCv+OCpOODiOODq+OCkuaXpeS7mOOBq+WkieaPm+OBmeOCi1xuICpcbiAqIOaXpeS7mOODmuODvOOCuOOBp+OBquOBhOOBqOOBjeOBr2B1bmRlZmluZWRg44KS6L+U44GZXG4gKlxuICogQHBhcmFtIHRpdGxlIOWkieaPm+OBl+OBn+OBhOOCv+OCpOODiOODq1xuICovXG5leHBvcnQgY29uc3QgdG9EYXRlID0gKHRpdGxlOiBzdHJpbmcpOiBEYXRlIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgbWF0Y2hlZCA9IHRpdGxlLm1hdGNoKGRpYXJ5UmVnRXhwKTtcbiAgaWYgKCFtYXRjaGVkKSByZXR1cm47XG4gIGNvbnN0IFssIHllYXIsIG1vbnRoLCBkYXRlXSA9IG1hdGNoZWQ7XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZShwYXJzZUludCh5ZWFyKSwgcGFyc2VJbnQobW9udGgpIC0gMSwgcGFyc2VJbnQoZGF0ZSkpO1xuICByZXR1cm4gaXNWYWxpZChkKSA/IGQgOiB1bmRlZmluZWQ7XG59O1xuXG4vKiog5pel5LuY44GL44KJ5pel5LuY44Oa44O844K444Gu44K/44Kk44OI44Or44KS5L2c44KLXG4gKlxuICogQHBhcmFtIGRhdGUg5pel5LuY44Oa44O844K444Gr44GX44Gf44GE5pel5LuYXG4gKi9cbmV4cG9ydCBjb25zdCB0b1RpdGxlID0gKGRhdGU6IERhdGUpOiBzdHJpbmcgPT5cbiAgbGlnaHRGb3JtYXQoZGF0ZSwgYCcke2Jhc2VUaXRsZX0nIHl5eXktTU0tZGRgKTtcblxuLyoqIOOCv+OCueOCr+ODmuODvOOCuOOCkmZvcm1hdOOBmeOCi1xuICpcbiAqIOW9ouW8j1xuICogLSAx6KGM55uu44GrYHllc3RlcmRheTogW+WJjeaXpeOBruOCv+OCueOCr+ODmuODvOOCuF1g44KS572u44GPXG4gKiAtIDLooYznm67ku6XpmY3jgat0YXNrIGxpbmVz44KS5Lim44G544KLXG4gKiAgIC0g5Lim44Gz6aCG44Gu5rG644KB5pa5XG4gKiAgICAgLSDlrp/nuL7plovlp4vml6XmmYLjga7ml6njgYTpoIbjgavkuKbjgbnjgotcbiAqICAgICAtIOOBvuOBoOmWi+Wni+OBleOCjOOBpuOBhOOBquOBhOOCv+OCueOCr+OBr+OAgeS7o+OCj+OCiuOBq+S6iOWumumWi+Wni+aZguWIu+OCkuS9v+OBhlxuICogICAtIGluZGVudOOBp3Rhc2sgbGluZeOBq+OBtuOCieS4i+OBkuOBn+ihjOOBr+OBneOBruOBvuOBvuOBruS4puOBs+mghuOCkue2reaMgeOBl+OBn+OBvuOBvuOBq+OBmeOCi1xuICogICAtIOmWk+OBqzHml6Xjga7mmYLplpPntLDliIblm7Pjga7jg6njg5njg6vjgpLmjL/lhaXjgZnjgotcbiAqIC0g44Oa44O844K45pyr5bC+44GrdGFzayBsaW5l5Lul5aSW44Gu6KGM44KS572u44GPXG4gKiAgIC0g5Lim44G55pu/44GI44Gv44GX44Gq44GEXG4gKlxuICog44K/44K544Kv44Oa44O844K444Gn44Gq44GR44KM44Gw5L2V44KC44GX44Gq44GE44Gn6L+U44GZXG4gKlxuICogQHBhcmFtIGxpbmVzIGZvcm1hdOOBl+OBn+OBhOOCv+OCueOCr+ODmuODvOOCuOOBruWFqOaWhyjjgr/jgqTjg4jjg6vooYzjgoLlkKvjgoApXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtYXQgPSAobGluZXM6IHN0cmluZ1tdKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCB0b2RheSA9IHRvRGF0ZShsaW5lc1swXSk7XG4gIGlmICghdG9kYXkpIHJldHVybiBsaW5lcztcbiAgY29uc3QgbGFiZWwgPSBtYWtlQmFja0xhYmVsKHRvZGF5KTtcblxuICAvLyDjgr/jgrnjgq/jgajjgqTjg7Pjg4fjg7Pjg4jjga7jgrvjg4Pjg4jjgpLlj5blvpfjgZnjgotcbiAgY29uc3QgdGFza0Jsb2NrczogVGFza0Jsb2NrW10gPSBbXTtcbiAgY29uc3Qgb3RoZXJMaW5lczogc3RyaW5nW10gPSBbXTsgLy8g44K/44K544Kv44OW44Ot44OD44Kv5Lul5aSW44Gu6KGM44Gu55Wq5Y+3XG4gIGZvciAoY29uc3QgaXRlbSBvZiBwYXJzZUxpbmVzKGxpbmVzLnNsaWNlKDEpKSkge1xuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgLy8g6Ieq5YuV44Gn5oy/5YWl44GX44Gf6KGM44Gv5aSW44GZXG4gICAgICBpZiAoc2VjdGlvbnMuaW5jbHVkZXMoaXRlbSkpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxhYmVsICE9PSBcIlwiICYmIGxhYmVsID09PSBpdGVtKSBjb250aW51ZTtcbiAgICAgIG90aGVyTGluZXMucHVzaChpdGVtKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB0YXNrQmxvY2tzLnB1c2goaXRlbSk7XG4gIH1cblxuICAvLyB0YXNrIGJsb2Nrc+OCkuS4puOBs+abv+OBiOOCi1xuICBjb25zdCBzb3J0ZWRUYXNrQmxvY2tzID0gdGFza0Jsb2Nrcy5zb3J0KChhLCBiKSA9PlxuICAgIGNvbXBhcmVBc2Moc3RhcnREYXRlKGEpLCBzdGFydERhdGUoYikpXG4gICk7XG5cbiAgLy8g6KaL5Ye644GX44KS5oy/5YWl44GZ44KLXG4gIGlmIChzb3J0ZWRUYXNrQmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIOOCv+OCueOCr+OBjOOBquOBhOOBqOOBjeOBr+OBneOBruOBvuOBvuWFpeOCjOOCi1xuICAgIHJldHVybiBbXG4gICAgICBsaW5lc1swXSwgLy8g44K/44Kk44OI44OrXG4gICAgICBsYWJlbCwgLy8g5YmN5pel44Gu44Oa44O844K444G444Gu44Oq44Oz44KvXG4gICAgICAuLi5zZWN0aW9ucywgLy8g6KaL5Ye644GXXG4gICAgICAuLi5vdGhlckxpbmVzLCAvLyDjgr/jgrnjgq/ku6XlpJbjga7ooYxcbiAgICBdO1xuICB9XG5cbiAgLy8g6KaL5Ye644GX44Gu5oy/5YWl5L2N572u44KS5rG644KB44KLXG4gIGNvbnN0IGluc2VydFBvaW50ID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdOyAvLyDmjIflrprjgZfjgZ/nlarlj7fjga50YXNrIGJsb2Nr44Gu5YmN44Gr5oy/5YWl44GZ44KLXG4gIGZvciAobGV0IGkgPSAxOyBpIDwgc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAvLyDmnIDliJ3jga/norrlrprjgZfjgabjgYTjgovjga7jgafpo5vjgbDjgZlcblxuICAgIC8vIOimi+WHuuOBl+OBruaZgumWk+W4r+OBruWni+OBvuOCiuOBruaZguWIu1xuICAgIGNvbnN0IHN0YXJ0ID0gYWRkSG91cnMoXG4gICAgICBuZXcgRGF0ZSh0b2RheS5nZXRGdWxsWWVhcigpLCB0b2RheS5nZXRNb250aCgpLCB0b2RheS5nZXREYXRlKCkpLFxuICAgICAgMyAqIGksXG4gICAgKTtcblxuICAgIC8vIOimi+WHuuOBl+OBruaZgumWk+W4r+WGheOBq+mWi+Wni+OBmeOCi+acgOWIneOBruOCv+OCueOCr1xuICAgIGNvbnN0IGxvd2VyVGFza0luZGV4ID0gc29ydGVkVGFza0Jsb2Nrcy5maW5kSW5kZXgoKHRhc2spID0+XG4gICAgICBpc0FmdGVyKHN0YXJ0RGF0ZSh0YXNrKSwgc3RhcnQpXG4gICAgKTtcblxuICAgIC8vIOimi+WHuuOBl+S7pemZjeOBq+OCv+OCueOCr+OBjOS4gOOBpOOCguOBquOBhOOBqOOBjVxuICAgIGlmIChsb3dlclRhc2tJbmRleCA8IDApIHtcbiAgICAgIGluc2VydFBvaW50W2ldID0gLTE7IC8vIOacq+WwvuOBq+aMv+WFpeOBmeOCi1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIC8vIOS4gOeVquacgOWIneOBruOCv+OCueOCr+OBi+OCieimi+WHuuOBl+OBq+WQq+OBvuOCjOOCi+OBqOOBjVxuICAgIGlmIChsb3dlclRhc2tJbmRleCA9PT0gMCkgY29udGludWU7IC8vIOWIneacn+WApOOBruOBvuOBvlxuXG4gICAgLy8g5LiA44Gk5YmN44Gu44K/44K544Kv44Gu6ZW344GV44Gn5rG644KB44KLXG4gICAgY29uc3QgdGFzayA9IHNvcnRlZFRhc2tCbG9ja3NbbG93ZXJUYXNrSW5kZXggLSAxXTtcbiAgICBjb25zdCBzID0gc3RhcnREYXRlKHRhc2spO1xuICAgIGNvbnN0IGUgPSBlbmREYXRlKHRhc2spO1xuICAgIGluc2VydFBvaW50W2ldID1cbiAgICAgIChlLmdldFRpbWUoKSAtIHMuZ2V0VGltZSgpKSAvIDIgPCBzdGFydC5nZXRUaW1lKCkgLSBzLmdldFRpbWUoKVxuICAgICAgICA/IGxvd2VyVGFza0luZGV4XG4gICAgICAgIDogbG93ZXJUYXNrSW5kZXggLSAxO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICBsaW5lc1swXSwgLy8g44K/44Kk44OI44OrXG4gICAgbGFiZWwsIC8vIOWJjeaXpeOBruODmuODvOOCuOOBuOOBruODquODs+OCr1xuICAgIC4uLnNvcnRlZFRhc2tCbG9ja3MuZmxhdE1hcCgoYmxvY2ssIGkpID0+IFtcbiAgICAgIC4uLmluc2VydFBvaW50LmZsYXRNYXAoKGosIGspID0+IGogPT09IGkgPyBbc2VjdGlvbnNba11dIDogW10pLCAvLyDopovlh7rjgZdcbiAgICAgIHRvU3RyaW5nKGJsb2NrKSwgLy8g44K/44K544KvXG4gICAgICAuLi5ibG9jay5saW5lcywgLy8g44K/44K544Kv44Gr44G244KJ5LiL44GM44Gj44Gf6KGMXG4gICAgXSksXG4gICAgLi4uaW5zZXJ0UG9pbnQuZmxhdE1hcCgoaSwgaykgPT4gaSA9PT0gLTEgPyBbc2VjdGlvbnNba11dIDogW10pLFxuICAgIC4uLm90aGVyTGluZXMsIC8vIOOCv+OCueOCr+S7peWkluOBruihjFxuICBdO1xufTtcblxuLyoqIOWJjeaXpeOBruaXpeS7mOODmuODvOOCuOOBuOOBrm5hdmlnYXRpb27jgpLkvZzjgosgKi9cbmNvbnN0IG1ha2VCYWNrTGFiZWwgPSAodG9kYXk6IERhdGUpID0+XG4gIGB5ZXN0ZXJkYXk6IFske3RvVGl0bGUoc3ViRGF5cyh0b2RheSwgMSkpfV1gO1xuIiwgImltcG9ydCB7IGZvcm1hdCBhcyBmb3JtYXRQYWdlIH0gZnJvbSBcIi4uL2RpYXJ5LnRzXCI7XG5pbXBvcnQgeyB1c2VTdGF0dXNCYXIgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1zdGQtZG9tLnRzXCI7XG5pbXBvcnQgeyBwYXRjaCB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXdlYnNvY2tldC50c1wiO1xuXG4vKiog44K/44K544Kv44Oa44O844K444KSZm9ybWF044GZ44KLXG4gKlxuICogQHBhcmFtIHByb2plY3QgZm9ybWF044GX44Gf44GE44Oa44O844K444GucHJvamVjdCBuYW1lXG4gKiBAcGFyYW0gdGl0bGUgZm9ybWF044GX44Gf44GE44Oa44O844K444Gu44K/44Kk44OI44OrXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtYXQgPSBhc3luYyAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgdGl0bGU6IHN0cmluZyxcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAvLyA1MDBtc+S7peWGheOBq+WHpueQhuOBjOe1guOCj+OCieOBquOBkeOCjOOBsOOAgeWHpueQhuS4reODoeODg+OCu+ODvOOCuOOCkuWHuuOBmVxuICBsZXQgcmVtb3ZlOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgY29uc3QgeyByZW5kZXIsIGRpc3Bvc2UgfSA9IHVzZVN0YXR1c0JhcigpO1xuICAgIHJlbW92ZSA9IGRpc3Bvc2U7XG4gICAgcmVuZGVyKHsgdHlwZTogXCJzcGlubmVyXCIgfSwgeyB0eXBlOiBcInRleHRcIiwgdGV4dDogXCJmb3JtYXR0aW5nLi4uXCIgfSk7XG4gIH0sIDUwMCk7XG4gIGF3YWl0IHBhdGNoKFxuICAgIHByb2plY3QsXG4gICAgdGl0bGUsXG4gICAgKGxpbmVzKSA9PiBmb3JtYXRQYWdlKGxpbmVzLm1hcCgobGluZSkgPT4gbGluZS50ZXh0KSksXG4gICk7XG4gIGNsZWFyVGltZW91dCh0aW1lcik7XG4gIHJlbW92ZSgpO1xufTtcbiIsICJpbXBvcnQgeyBUYXNrQmxvY2ssIHRvU3RyaW5nIH0gZnJvbSBcIi4vdGFzay50c1wiO1xuaW1wb3J0IHsgZm9ybWF0LCB0b1RpdGxlIH0gZnJvbSBcIi4vZGlhcnkudHNcIjtcbmltcG9ydCB7IG9uZUJ5T25lLCBPbmVCeU9uZVJlc3VsdCB9IGZyb20gXCIuL3V0aWxzLnRzXCI7XG5pbXBvcnQgeyBpc1NhbWVEYXkgfSBmcm9tIFwiLi9kZXBzL2RhdGUtZm5zLnRzXCI7XG5pbXBvcnQgeyBwYXRjaCwgU29ja2V0IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC13ZWJzb2NrZXQudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQdXNoVGFza3NPcHRpb25zIHtcbiAgLyoqIOabuOOBjei+vOOBv+OBq+S9v+OBhlNvY2tldCAqL1xuICBzb2NrZXQ6IFNvY2tldDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVzaFRhc2tzUmVzdWx0IHtcbiAgLyoqIOabuOOBjei+vOOBv+WFiOOBruaXpeS7mOODmuODvOOCuOOBruaXpeS7mCAqLyBkYXRlOiBEYXRlO1xuICAvKiog5pu444GN6L6844KT44Gg44K/44K544Kv44Gu5pWwICovIHNpemU6IG51bWJlcjtcbn1cbi8qKiDku7vmhI/lgIvjga7jgr/jgrnjgq/jgpLnibnlrprjg5fjg63jgrjjgqfjgq/jg4jjga7ml6Xku5jjg5rjg7zjgrjjgavmm7jjgY3ovrzjgoBcbiAqXG4gKiBAcGFyYW0gcHJvamVjdCDmm7jjgY3ovrzjgb/lhYjjg5fjg63jgrjjgqfjgq/jg4hcbiAqIEBwYXJhbSB0YXNrcyDmm7jjgY3ovrzjgoDjgr/jgrnjgq8gKOOCpOODs+ODh+ODs+ODiOOBp+OBtuOCieS4i+OBkuOBn+ihjOOCkmxpbmVz44Gr5YWl44KM44KJ44KM44KLKVxuICogQHBhcmFtIGluaXRcbiAqIEByZXR1cm4g5pu444GN6L6844G/44Gu5oiQ5ZCm44GM5YWl44Gj44GfYXN5bmMgaXRlcmF0b3JcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBwdXNoVGFza3MoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgdGFza3M6IHJlYWRvbmx5IFRhc2tCbG9ja1tdLFxuICBpbml0OiBQdXNoVGFza3NPcHRpb25zLFxuKTogQXN5bmNHZW5lcmF0b3I8T25lQnlPbmVSZXN1bHQ8UHVzaFRhc2tzUmVzdWx0Piwgdm9pZCwgdm9pZD4ge1xuICBjb25zdCBzdGFja3MgPSBbLi4udGFza3NdO1xuICBjb25zdCBwcm9taXNlcyA9IFtdIGFzIFByb21pc2U8UHVzaFRhc2tzUmVzdWx0PltdO1xuICB3aGlsZSAoc3RhY2tzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCB0YXNrID0gc3RhY2tzLnNoaWZ0KCk7XG4gICAgaWYgKCF0YXNrKSBicmVhaztcblxuICAgIC8vIHRhc2vjgajlkIzjgZjml6Xku5jjga50YXNr44KS6ZuG44KB44KLXG4gICAgY29uc3QgZGF0ZSA9IHRhc2suYmFzZTtcbiAgICBjb25zdCB0YXNrc18gPSBbdGFza107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGFja3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghaXNTYW1lRGF5KHN0YWNrc1tpXS5iYXNlLCBkYXRlKSkgY29udGludWU7XG4gICAgICAvLyBzdGFja3PjgYvjgol0YXNrc1/jgavnp7vli5XjgZnjgotcbiAgICAgIHRhc2tzXy5wdXNoKC4uLnN0YWNrcy5zcGxpY2UoaSwgMSkpO1xuICAgICAgaS0tO1xuICAgIH1cblxuICAgIC8vIOmdnuWQjOacn+OBq+abuOOBjei+vOOCgFxuXG4gICAgcHJvbWlzZXMucHVzaCgoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgcGF0Y2gocHJvamVjdCwgdG9UaXRsZShkYXRlKSwgKGxpbmVzKSA9PlxuICAgICAgICBmb3JtYXQoW1xuICAgICAgICAgIC4uLmxpbmVzLm1hcCgobGluZSkgPT4gbGluZS50ZXh0KSxcbiAgICAgICAgICAuLi50YXNrc18uZmxhdE1hcCgodGFzaykgPT4gW3RvU3RyaW5nKHRhc2spLCAuLi50YXNrLmxpbmVzID8/IFtdXSksXG4gICAgICAgIF0pLCBpbml0KTtcbiAgICAgIHJldHVybiB7IGRhdGUsIHNpemU6IHRhc2tzXy5sZW5ndGggfTtcbiAgICB9KSgpKTtcbiAgfVxuXG4gIC8vIOabuOOBjei+vOOBv+OBruaIkOWQpuOBqOabuOOBjei+vOOBv+WFiOOBruaXpeS7mOOCkui/lOOBmVxuICB5aWVsZCogb25lQnlPbmUocHJvbWlzZXMpO1xufVxuIiwgImltcG9ydCB7IHB1c2hUYXNrcyB9IGZyb20gXCIuLi9wdXNoVGFza3MudHNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuLi9kaWFyeS50c1wiO1xuaW1wb3J0IHsgcGFyc2VCbG9jaywgcGFyc2VMaW5lcywgVGFza0Jsb2NrLCB0b1N0cmluZyB9IGZyb20gXCIuLi90YXNrLnRzXCI7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gXCIuLi91dGlscy50c1wiO1xuaW1wb3J0IHsgaXNTYW1lRGF5IH0gZnJvbSBcIi4uL2RlcHMvZGF0ZS1mbnMudHNcIjtcbmltcG9ydCB7IGdldFBhZ2UsIHNsZWVwIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5pbXBvcnQgeyB1c2VTdGF0dXNCYXIgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1zdGQtZG9tLnRzXCI7XG5pbXBvcnQgeyBkaXNjb25uZWN0LCBtYWtlU29ja2V0LCBwYXRjaCB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXdlYnNvY2tldC50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zcG9ydFByb3BzIHtcbiAgLyoqIOOBk+OBk+OBp+aMh+WumuOBl+OBn+ODmuODvOOCuOOBi+OCieOCv+OCueOCr+OCkui7oumAgeOBmeOCiyAqL1xuICBmcm9tOiB7XG4gICAgcHJvamVjdDogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gIH07XG4gIC8qKiDou6LpgIHlhYjjg5fjg63jgrjjgqfjgq/jg4ggKi9cbiAgdG86IHN0cmluZztcbn1cbi8qKiDmjIflrprjgZfjgZ/jg5rjg7zjgrjjgYvjgonjgr/jgrnjgq/jgpLml6Xku5jjg5rjg7zjgrjjgavou6LpgIHjgZnjgosgKi9cbmV4cG9ydCBjb25zdCB0cmFuc3BvcnQgPSBhc3luYyAoXG4gIHsgZnJvbTogeyBwcm9qZWN0LCB0aXRsZSB9LCB0byB9OiBUcmFuc3BvcnRQcm9wcyxcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRQYWdlKHByb2plY3QsIHRpdGxlKTtcbiAgaWYgKCFyZXN1bHQub2spIHtcbiAgICB0aHJvdyByZXN1bHQudmFsdWU7XG4gIH1cbiAgY29uc3QgZGF0ZSA9IHRvRGF0ZSh0aXRsZSk7XG4gIGNvbnN0IHsgbGluZXMgfSA9IHJlc3VsdC52YWx1ZTtcblxuICAvLyDml6Xku5jjg5rjg7zjgrjjga7loLTlkIjjga/jgIHjgZ3jga7ml6Xku5jjgajkuIDoh7TjgZfjgarjgYTjgr/jgrnjgq/jgpLou6LpgIHjgZnjgotcbiAgLy8g5pel5LuY44OZ44O844K444Gn44Gq44GR44KM44Gw44CB5YWo44Gm44Gu44K/44K544Kv44KS6Lui6YCB44GZ44KLXG4gIGNvbnN0IHRhc2tzID0gW10gYXMgVGFza0Jsb2NrW107XG4gIGZvciAoY29uc3QgdGFzayBvZiBwYXJzZUJsb2NrKGxpbmVzKSkge1xuICAgIGlmIChkYXRlICYmIGlzU2FtZURheSh0YXNrLmJhc2UsIGRhdGUpKSBjb250aW51ZTtcbiAgICB0YXNrcy5wdXNoKHRhc2spO1xuICB9XG5cbiAgLy8g44K/44K544Kv44KS5pu444GN6L6844KAXG4gIGNvbnN0IHsgcmVuZGVyLCBkaXNwb3NlIH0gPSB1c2VTdGF0dXNCYXIoKTtcbiAgcmVuZGVyKHsgdHlwZTogXCJzcGlubmVyXCIgfSwge1xuICAgIHR5cGU6IFwidGV4dFwiLFxuICAgIHRleHQ6IGBjb3B5aW5nICR7dGFza3MubGVuZ3RofSB0YXNrcy4uLmAsXG4gIH0pO1xuXG4gIGNvbnN0IHNvY2tldCA9IGF3YWl0IG1ha2VTb2NrZXQoKTtcbiAgdHJ5IHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGxldCBmYWlsZWQgPSBmYWxzZTtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHJlc3VsdCBvZiBwdXNoVGFza3ModG8sIHRhc2tzLCB7IHNvY2tldCB9KSkge1xuICAgICAgaWYgKHJlc3VsdC5zdGF0ZSAhPT0gXCJmdWxmaWxsZWRcIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKHJlc3VsdC5yZWFzb24pO1xuICAgICAgICBmYWlsZWQgPSB0cnVlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvdW50ICs9IHJlc3VsdC52YWx1ZS5zaXplO1xuICAgICAgLy8g5pu444GN6L6844G/54q25rOB44KSLnN0YXR1cy1iYXLjgavooajnpLrjgZnjgotcbiAgICAgIHJlbmRlcih7IHR5cGU6IFwic3Bpbm5lclwiIH0sIHtcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IGBjb3B5aW5nICR7dGFza3MubGVuZ3RoIC0gY291bnR9IHRhc2tzLi4uYCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChmYWlsZWQpIHtcbiAgICAgIHJlbmRlcih7IHR5cGU6IFwiZXhjbGFtYXRpb24tdHJpYW5nbGVcIiB9LCB7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBcIlNvbWUgdGFza3MgZmFpbGVkIHRvIGJlIHdyaXR0ZW5cIixcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIOabuOOBjei+vOOBv+OBq+aIkOWKn+OBl+OBn+OBqOOBjeOBruOBv+OAgeWFg+ODmuODvOOCuOOBi+OCieOCv+OCueOCr+OCkua2iOOBmVxuICAgIHJlbmRlcih7IHR5cGU6IFwic3Bpbm5lclwiIH0sIHtcbiAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgdGV4dDogYENvcGllZC4gcmVtb3ZpbmcgJHt0YXNrcy5sZW5ndGh9IG9yaWdpbmFsIHRhc2tzLi4uYCxcbiAgICB9KTtcbiAgICBhd2FpdCBwYXRjaChwcm9qZWN0LCB0aXRsZSwgKGxpbmVzKSA9PiB7XG4gICAgICBjb25zdCBuZXdMaW5lcyA9IFtdIGFzIHN0cmluZ1tdO1xuICAgICAgZm9yIChjb25zdCBsaW5lIG9mIHBhcnNlTGluZXMobGluZXMpKSB7XG4gICAgICAgIGlmIChpc1N0cmluZyhsaW5lKSkge1xuICAgICAgICAgIG5ld0xpbmVzLnB1c2gobGluZSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChkYXRlICYmIGlzU2FtZURheShsaW5lLmJhc2UsIGRhdGUpKSkge1xuICAgICAgICAgIG5ld0xpbmVzLnB1c2godG9TdHJpbmcobGluZSksIC4uLmxpbmUubGluZXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3TGluZXM7XG4gICAgfSwgeyBzb2NrZXQgfSk7XG5cbiAgICByZW5kZXIoeyB0eXBlOiBcImNoZWNrLWNpcmNsZVwiIH0sIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IFwiTW92ZWRcIiB9KTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBkaXNjb25uZWN0KHNvY2tldCk7XG4gICAgYXdhaXQgc2xlZXAoMTAwMCk7XG4gICAgZGlzcG9zZSgpO1xuICB9XG59O1xuIiwgImV4cG9ydCBjb25zdCB6ZXJvID0gKG46IG51bWJlcikgPT4gYCR7bn1gLnBhZFN0YXJ0KDIsIFwiMFwiKTtcbiIsICJpbXBvcnQgeyB6ZXJvIH0gZnJvbSBcIi4uL3plcm8udHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMb2NhbERhdGUge1xuICB5ZWFyOiBudW1iZXI7XG4gIG1vbnRoOiBudW1iZXI7XG4gIGRhdGU6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYWxEYXRlVGltZSBleHRlbmRzIExvY2FsRGF0ZSB7XG4gIGhvdXJzOiBudW1iZXI7XG4gIG1pbnV0ZXM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGlzTG9jYWxEYXRlVGltZSA9IChcbiAgZGF0ZTogTG9jYWxEYXRlIHwgTG9jYWxEYXRlVGltZSxcbik6IGRhdGUgaXMgTG9jYWxEYXRlVGltZSA9PiBcImhvdXJzXCIgaW4gZGF0ZTtcblxuZXhwb3J0IGNvbnN0IGlzQmVmb3JlID0gKFxuICBmaXJzdDogTG9jYWxEYXRlIHwgTG9jYWxEYXRlVGltZSxcbiAgc2Vjb25kOiBMb2NhbERhdGUgfCBMb2NhbERhdGVUaW1lLFxuKTogYm9vbGVhbiA9PlxuICBmaXJzdC55ZWFyICE9PSBzZWNvbmQueWVhclxuICAgID8gZmlyc3QueWVhciA8IHNlY29uZC55ZWFyXG4gICAgOiBmaXJzdC5tb250aCAhPT0gc2Vjb25kLm1vbnRoXG4gICAgPyBmaXJzdC5tb250aCA8IHNlY29uZC5tb250aFxuICAgIDogZmlyc3QuZGF0ZSAhPT0gc2Vjb25kLmRhdGVcbiAgICA/IGZpcnN0LmRhdGUgPCBzZWNvbmQuZGF0ZVxuICAgIDogXCJob3Vyc1wiIGluIHNlY29uZFxuICAgID8gXCJob3Vyc1wiIGluIGZpcnN0XG4gICAgICA/IGZpcnN0LmhvdXJzICogNjAgKyBmaXJzdC5taW51dGVzIDwgc2Vjb25kLmhvdXJzICogNjAgKyBzZWNvbmQubWludXRlc1xuICAgICAgOiAwIDwgc2Vjb25kLmhvdXJzICogNjAgKyBzZWNvbmQubWludXRlc1xuICAgIDogZmFsc2U7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXQgPSAoZGF0ZTogTG9jYWxEYXRlIHwgTG9jYWxEYXRlVGltZSk6IHN0cmluZyA9PlxuICBgJHtgJHtkYXRlLnllYXJ9YC5wYWRTdGFydCg0LCBcIjBcIil9LSR7emVybyhkYXRlLm1vbnRoKX0tJHt6ZXJvKGRhdGUuZGF0ZSl9JHtcbiAgICBcImhvdXJzXCIgaW4gZGF0ZSA/IGBUJHt6ZXJvKGRhdGUuaG91cnMpfToke3plcm8oZGF0ZS5taW51dGVzKX1gIDogXCJcIlxuICB9YDtcblxuZXhwb3J0IGNvbnN0IHRvRGF0ZSA9IChkYXRlOiBMb2NhbERhdGUgfCBMb2NhbERhdGVUaW1lKTogRGF0ZSA9PiB7XG4gIGNvbnN0IHN0ciA9IGZvcm1hdChkYXRlKTtcbiAgcmV0dXJuIG5ldyBEYXRlKHN0ci5pbmNsdWRlcyhcIlRcIikgPyBzdHIgOiBgJHtzdHJ9VDAwOjAwYCk7XG59O1xuXG5leHBvcnQgY29uc3QgZnJvbURhdGUgPSAoZGF0ZTogRGF0ZSk6IExvY2FsRGF0ZVRpbWUgPT4gKHtcbiAgeWVhcjogZGF0ZS5nZXRGdWxsWWVhcigpLFxuICBtb250aDogZGF0ZS5nZXRNb250aCgpICsgMSxcbiAgZGF0ZTogZGF0ZS5nZXREYXRlKCksXG4gIGhvdXJzOiBkYXRlLmdldEhvdXJzKCksXG4gIG1pbnV0ZXM6IGRhdGUuZ2V0TWludXRlcygpLFxufSk7XG4iLCAiZXhwb3J0IGludGVyZmFjZSBSZWN1cnJlbmNlIHtcbiAgZnJlcXVlbmN5OiBGcmVxdWVuY3k7XG4gIGNvdW50OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIEZyZXF1ZW5jeSA9IFwieWVhcmx5XCIgfCBcIm1vbnRobHlcIiB8IFwid2Vla2x5XCIgfCBcImRhaWx5XCI7XG5cbmV4cG9ydCBjb25zdCB0b0ZyZXF1ZW5jeSA9IChcbiAgc3ltYm9sOiBzdHJpbmcsXG4pOiBGcmVxdWVuY3kgfCB1bmRlZmluZWQgPT4ge1xuICBzd2l0Y2ggKHN5bWJvbC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSBcInlcIjpcbiAgICAgIHJldHVybiBcInllYXJseVwiO1xuICAgIGNhc2UgXCJtXCI6XG4gICAgICByZXR1cm4gXCJtb250aGx5XCI7XG4gICAgY2FzZSBcIndcIjpcbiAgICAgIHJldHVybiBcIndlZWtseVwiO1xuICAgIGNhc2UgXCJkXCI6XG4gICAgICByZXR1cm4gXCJkYWlseVwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm47XG4gIH1cbn07XG4iLCAiZXhwb3J0IHR5cGUgU3RhdHVzID1cbiAgfCBcInRvZG9cIlxuICB8IFwiZGVhZGxpbmVcIlxuICB8IFwiZG9uZVwiXG4gIHwgXCJub3RlXCJcbiAgfCBcInVwLWRvd25cIjtcblxuZXhwb3J0IGNvbnN0IHRvU3RhdHVzID0gKHN5bWJvbDogc3RyaW5nKTogU3RhdHVzIHwgdW5kZWZpbmVkID0+IHtcbiAgc3dpdGNoIChzeW1ib2wpIHtcbiAgICBjYXNlIFwiK1wiOlxuICAgICAgcmV0dXJuIFwidG9kb1wiO1xuICAgIGNhc2UgXCItXCI6XG4gICAgICByZXR1cm4gXCJub3RlXCI7XG4gICAgY2FzZSBcIiFcIjpcbiAgICAgIHJldHVybiBcImRlYWRsaW5lXCI7XG4gICAgY2FzZSBcIi5cIjpcbiAgICAgIHJldHVybiBcImRvbmVcIjtcbiAgICBjYXNlIFwiflwiOlxuICAgICAgcmV0dXJuIFwidXAtZG93blwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm47XG4gIH1cbn07XG5leHBvcnQgY29uc3QgZnJvbVN0YXR1cyA9IChcbiAgc3RhdHVzOiBTdGF0dXMsXG4pOiBcIitcIiB8IFwiLVwiIHwgXCIhXCIgfCBcIi5cIiB8IFwiflwiID0+IHtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFwidG9kb1wiOlxuICAgICAgcmV0dXJuIFwiK1wiO1xuICAgIGNhc2UgXCJub3RlXCI6XG4gICAgICByZXR1cm4gXCItXCI7XG4gICAgY2FzZSBcImRlYWRsaW5lXCI6XG4gICAgICByZXR1cm4gXCIhXCI7XG4gICAgY2FzZSBcImRvbmVcIjpcbiAgICAgIHJldHVybiBcIi5cIjtcbiAgICBjYXNlIFwidXAtZG93blwiOlxuICAgICAgcmV0dXJuIFwiflwiO1xuICB9XG59O1xuIiwgImltcG9ydCB7IGFkZERheXMgfSBmcm9tIFwiLi4vZGVwcy9kYXRlLWZucy50c1wiO1xuaW1wb3J0IHtcbiAgYWRkTWludXRlcyxcbiAgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzLFxuICBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyxcbiAgaXNWYWxpZCxcbn0gZnJvbSBcIi4uL2RlcHMvZGF0ZS1mbnMudHNcIjtcbmltcG9ydCB7IGlzTnVtYmVyLCBSZXN1bHQgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1zdGQudHNcIjtcbmltcG9ydCB7IFBlcmlvZCB9IGZyb20gXCIuL1BlcmlvZC50c1wiO1xuaW1wb3J0IHsgRnJlc2huZXNzIH0gZnJvbSBcIi4vZnJlc2huZXNzLnRzXCI7XG5pbXBvcnQge1xuICBmb3JtYXQsXG4gIGZyb21EYXRlLFxuICBpc0JlZm9yZSxcbiAgaXNMb2NhbERhdGVUaW1lLFxuICBMb2NhbERhdGUsXG4gIExvY2FsRGF0ZVRpbWUsXG4gIHRvRGF0ZSxcbn0gZnJvbSBcIi4vbG9jYWxEYXRlLnRzXCI7XG5pbXBvcnQgeyBSZWN1cnJlbmNlLCB0b0ZyZXF1ZW5jeSB9IGZyb20gXCIuL3JlY3VycmVuY2UudHNcIjtcbmltcG9ydCB7IGZyb21TdGF0dXMsIHRvU3RhdHVzIH0gZnJvbSBcIi4vc3RhdHVzLnRzXCI7XG5cbi8qKiBSZW1pbmRlciAo6ZaL5aeL5pel5pmC44GM5oyH5a6a44GV44KM44Gm44GE44Gq44GE44K/44K544Kv44Gu44KI44GG44Gq44KC44GuKVxuICpcbiAqIEhvd23jga5yZW1pbmRlcuOBq+ebuOW9k+OBmeOCi1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbWluZGVyIHtcbiAgLyoqIHRhc2sgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIOaXrOW6piAqL1xuICBmcmVzaG5lc3M6IEZyZXNobmVzcztcblxuICAvKiog6KaL56mN44KC44KK55So5pel5pmCXG4gICAqXG4gICAqIOaJgOimgeaZgumWkyAobWluKeOBi+e1guS6huaXpeaZguOBruOBqeOBoeOCieOBi1xuICAgKlxuICAgKiDmiYDopoHmmYLplpPjga7jgajjgY3jga/jgIFgZnJlc2huZXNzLnJlZkRhdGVg44GL44KJ44Gu57WM6YGO5pmC6ZaTIChtaW4pIOOBqOOBl+OBpuaJseOBhlxuICAgKi9cbiAgZXN0aW1hdGVkPzogbnVtYmVyIHwgTG9jYWxEYXRlIHwgTG9jYWxEYXRlVGltZTtcblxuICAvKiog57mw44KK6L+U44GX44Kk44OZ44Oz44OI44GL44KJ55Sf5oiQ44GV44KM44Gf5LqI5a6a44Gq44KJYHRydWVgICovXG4gIGdlbmVyYXRlZDogYm9vbGVhbjtcblxuICAvKiog6Kej5p6Q5YmN44Gu5paH5a2X5YiXICovXG4gIHJhdzogc3RyaW5nO1xufVxuXG4vKiog5LqI5a6aICjplovlp4vml6XmmYLjgajntYLkuobml6XmmYLjgYznorrlrprjgZfjgZ/jgqLjgqTjg4bjg6Ap44KS6KGo44GZICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50IHtcbiAgLyoqIGV2ZW50IG5hbWUgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKiDml6zluqYgKi9cbiAgZnJlc2huZXNzPzogRnJlc2huZXNzO1xuXG4gIC8qKiDlrp/ooYzml6XmmYIgKi9cbiAgZXhlY3V0ZWQ6IFBlcmlvZDtcblxuICAvKiog57mw44KK6L+U44GX5oOF5aCxICovXG4gIHJlY3VycmVuY2U/OiBSZWN1cnJlbmNlO1xuXG4gIC8qKiDnubDjgorov5TjgZfjgqTjg5njg7Pjg4jjgYvjgonnlJ/miJDjgZXjgozjgZ/kuojlrprjgarjgolgdHJ1ZWAgKi9cbiAgZ2VuZXJhdGVkOiBib29sZWFuO1xuXG4gIC8qKiDop6PmnpDliY3jga7mloflrZfliJcgKi9cbiAgcmF3OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFJlY3VycmVudEV2ZW50ID0gT21pdDxFdmVudCwgXCJyZWN1cnJlbmNlXCI+ICYge1xuICByZWN1cnJlbmNlOiBSZWN1cnJlbmNlO1xufTtcblxuZXhwb3J0IHR5cGUgVGFzayA9IFJlbWluZGVyIHwgRXZlbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFza1JhbmdlRXJyb3Ige1xuICBuYW1lOiBcIlRhc2tSYW5nZUVycm9yXCI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnZhbGlkRGF0ZUVycm9yIHtcbiAgbmFtZTogXCJJbnZhbGlkRGF0ZUVycm9yXCI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqIFRhc2vjgpLop6PmnpDjgZnjgotcbiAqXG4gKiBAcGFyYW0gdGV4dCBUYXNr44Gu5paH5a2X5YiXXG4gKiBAcmV0dXJuIOino+aekOe1kOaenOOAglRhc2vjgafjgarjgZHjgozjgbBgdW5kZWZpbmVkYOOCkui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgcGFyc2UgPSAoXG4gIHRleHQ6IHN0cmluZyxcbik6IFJlc3VsdDxUYXNrLCBUYXNrUmFuZ2VFcnJvciB8IEludmFsaWREYXRlRXJyb3I+IHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgbWF0Y2hlZCA9IHRleHQubWF0Y2goXG4gICAgLyg/OihbXFwrXFwtIX4uXSkoXFxkKyk/KT9AKFxcZHs0fSktKFxcZHsyfSktKFxcZHsyfSkoPzpUKFxcZHsyfSk6KFxcZHsyfSkpPyg/OlxcLyhcXGR7Mn0pOihcXGR7Mn0pfFxcLyg/Oig/Oig/OihcXGR7NH0pLSk/KFxcZHsyfSktKT8oXFxkezJ9KSg/OlQoXFxkezJ9KTooXFxkezJ9KSk/KXxEKFxcZCspKT8oPzpSKFtZTVdEXSk/KFxcZCspKT8oPzpAKD86KFxcZHsyfSk6KFxcZHsyfSl8KD86KD86KFxcZHs0fSktKT8oXFxkezJ9KS0pPyhcXGR7Mn0pKD86VChcXGR7Mn0pOihcXGR7Mn0pKT8pPyg/OlxcLyhcXGR7Mn0pOihcXGR7Mn0pfFxcLyg/Oig/Oig/OihcXGR7NH0pLSk/KFxcZHsyfSktKT8oXFxkezJ9KSg/OlQoXFxkezJ9KTooXFxkezJ9KSk/KXxEKFxcZCspKT8pPy9pLFxuICApO1xuICBpZiAoIW1hdGNoZWQpIHJldHVybjtcblxuICBjb25zdCBbXG4gICAgbWF0Y2hlZFRleHQsXG4gICAgc3RhdHVzU3ltLFxuICAgIHNwZWVkU3RyLFxuICAgIHN5ZWFyLFxuICAgIHNtb250aCxcbiAgICBzZGF0ZSxcbiAgICBzaG91cnMsXG4gICAgc21pbnV0ZXMsXG4gICAgZWhvdXJzMixcbiAgICBlbWludXRlczIsXG4gICAgZXllYXIsXG4gICAgZW1vbnRoLFxuICAgIGVkYXRlLFxuICAgIGVob3VycyxcbiAgICBlbWludXRlcyxcbiAgICBkdXJhdGlvblN0cixcbiAgICBzeW1ib2wsXG4gICAgY291bnRTdHIsXG4gICAgc3Nob3VyczIsXG4gICAgc3NtaW51dGVzMixcbiAgICBzc3llYXIsXG4gICAgc3Ntb250aCxcbiAgICBzc2RhdGUsXG4gICAgc3Nob3VycyxcbiAgICBzc21pbnV0ZXMsXG4gICAgZWVob3VyczIsXG4gICAgZWVtaW51dGVzMixcbiAgICBlZXllYXIsXG4gICAgZWVtb250aCxcbiAgICBlZWRhdGUsXG4gICAgZWVob3VycyxcbiAgICBlZW1pbnV0ZXMsXG4gICAgZHVyYXRpb25TdHIyLFxuICBdID0gbWF0Y2hlZDtcblxuICAvKiogdGFzayBuYW1lICovXG4gIGNvbnN0IG5hbWUgPSBgJHt0ZXh0LnNsaWNlKDAsIG1hdGNoZWQuaW5kZXgpLnRyaW0oKX0ke1xuICAgIHRleHQuc2xpY2UoKG1hdGNoZWQuaW5kZXggPz8gMCkgKyBtYXRjaGVkVGV4dC5sZW5ndGgpLnRyaW0oKVxuICB9YDtcblxuICAvKiog5pes5bqm6KiI566X44Gu6LW354K5ICovXG4gIGNvbnN0IHJlZkRhdGUgPSBmaXhTdGFydChzeWVhciwgc21vbnRoLCBzZGF0ZSwgc2hvdXJzLCBzbWludXRlcyk7XG4gIGlmICghaXNWYWxpZCh0b0RhdGUocmVmRGF0ZSkpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9rOiBmYWxzZSxcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIG5hbWU6IFwiSW52YWxpZERhdGVFcnJvclwiLFxuICAgICAgICBtZXNzYWdlOiBgVGhlIHJlZmVyZW5jZSBwb2ludCBvZiB0aGUgdGFzayBcIiR7XG4gICAgICAgICAgZm9ybWF0KHJlZkRhdGUpXG4gICAgICAgIH1cIiBpcyBhbiBpbnZhbGlkIGRhdGUuYCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKiDopovnqY3jgoLjgormmYLplpMgKi9cbiAgY29uc3QgZXN0aW1hdGVkID0gZml4RW5kKFxuICAgIHJlZkRhdGUsXG4gICAgZXllYXIsXG4gICAgZW1vbnRoLFxuICAgIGVkYXRlLFxuICAgIGVob3VyczIgfHwgZWhvdXJzLFxuICAgIGVtaW51dGVzMiB8fCBlbWludXRlcyxcbiAgICBkdXJhdGlvblN0cixcbiAgKTtcbiAgaWYgKGVzdGltYXRlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKFxuICAgICAgKGlzTnVtYmVyKGVzdGltYXRlZCkgJiYgaXNOYU4oZXN0aW1hdGVkKSkgfHxcbiAgICAgICghaXNOdW1iZXIoZXN0aW1hdGVkKSAmJiAhaXNWYWxpZCh0b0RhdGUoZXN0aW1hdGVkKSkpXG4gICAgKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvazogZmFsc2UsXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgbmFtZTogXCJJbnZhbGlkRGF0ZUVycm9yXCIsXG4gICAgICAgICAgbWVzc2FnZTogYFRoZSBlc3RpbWF0ZWQgZW5kIG9mIHRoZSB0YXNrJHtcbiAgICAgICAgICAgIGlzTnVtYmVyKGVzdGltYXRlZCkgPyBcIlwiIDogYCBcIiR7Zm9ybWF0KGVzdGltYXRlZCl9XCJgXG4gICAgICAgICAgfSBpcyBhbiBpbnZhbGlkIGRhdGUuYCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChcbiAgICAgIChpc051bWJlcihlc3RpbWF0ZWQpICYmIGVzdGltYXRlZCA8IDApIHx8XG4gICAgICAoIWlzTnVtYmVyKGVzdGltYXRlZCkgJiYgaXNCZWZvcmUoZXN0aW1hdGVkLCByZWZEYXRlKSlcbiAgICApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBuYW1lOiBcIlRhc2tSYW5nZUVycm9yXCIsXG4gICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgIGBUaGUgcmVmZXJlbmNlIHBvaW50IG9mIGFuIHRhc2sgY2Fubm90IGJlIGFmdGVyIGl0cyBlc3RpbWF0ZWQgZW5kLlxcblxcbnJlZmVyZW5jZSBwb2ludDoke1xuICAgICAgICAgICAgICBmb3JtYXQocmVmRGF0ZSlcbiAgICAgICAgICAgIH1cXG5lc3RpbWF0ZWQgZW5kOiR7XG4gICAgICAgICAgICAgIGZvcm1hdChcbiAgICAgICAgICAgICAgICBpc051bWJlcihlc3RpbWF0ZWQpXG4gICAgICAgICAgICAgICAgICA/IGZyb21EYXRlKGFkZE1pbnV0ZXModG9EYXRlKHJlZkRhdGUpLCBlc3RpbWF0ZWQpKVxuICAgICAgICAgICAgICAgICAgOiBlc3RpbWF0ZWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1gLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvLyDlvozmlrnkupLmj5vmgKfnlKjjgrPjg7zjg4lcbiAgLy8g5YWI6aCt44GM4pyF44GL4p2M44Gu44Go44GN44Gv44CBYGRvbmVg44Go44G/44Gq44GZXG4gIC8qKiB0YXNrIHN0YXR1cyAqL1xuICBjb25zdCBzdGF0dXMgPSAvXltcXHVGRTAwLVxcdUZFMEZdKlvinIXinYxdLy50ZXN0KHRleHQpXG4gICAgPyBcImRvbmVcIlxuICAgIDogdG9TdGF0dXMoc3RhdHVzU3ltKTtcbiAgY29uc3QgZnJlc2huZXNzOiBGcmVzaG5lc3MgfCB1bmRlZmluZWQgPSBzdGF0dXNcbiAgICA/IHsgc3RhdHVzLCByZWZEYXRlIH1cbiAgICA6IHVuZGVmaW5lZDtcbiAgaWYgKGZyZXNobmVzcyAmJiBzcGVlZFN0cikgZnJlc2huZXNzLnNwZWVkID0gcGFyc2VJbnQoc3BlZWRTdHIpO1xuXG4gIC8vIOWun+ihjOaXpeaZguOBruWPluW+l+OCkuippuOBv+OCi1xuICAvKiog6ZaL5aeL5pel5pmCICovXG4gIGNvbnN0IHN0YXJ0ID0gZml4U3RhcnQoXG4gICAgc3N5ZWFyIHx8IHN5ZWFyLFxuICAgIHNzbW9udGggfHwgc21vbnRoLFxuICAgIHNzZGF0ZSB8fCBzZGF0ZSxcbiAgICBzc2hvdXJzMiB8fCBzc2hvdXJzIHx8IHNob3VycyxcbiAgICBzc21pbnV0ZXMyIHx8IHNzbWludXRlcyB8fCBzbWludXRlcyxcbiAgKTtcbiAgaWYgKCFpc1ZhbGlkKHRvRGF0ZShzdGFydCkpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9rOiBmYWxzZSxcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIG5hbWU6IFwiSW52YWxpZERhdGVFcnJvclwiLFxuICAgICAgICBtZXNzYWdlOiBgVGhlIHN0YXJ0IG9mIHRoZSB0YXNrL2V2ZW50IFwiJHtcbiAgICAgICAgICBmb3JtYXQoc3RhcnQpXG4gICAgICAgIH1cIiBpcyBhbiBpbnZhbGlkIGRhdGUuYCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKiDmiYDopoHmmYLplpMgKi9cbiAgY29uc3QgZHVyYXRpb24gPSBmaXhFbmQoXG4gICAgc3RhcnQsXG4gICAgZWV5ZWFyIHx8IGV5ZWFyLFxuICAgIGVlbW9udGggfHwgZW1vbnRoLFxuICAgIGVlZGF0ZSB8fCBlZGF0ZSxcbiAgICBlZWhvdXJzMiB8fCBlZWhvdXJzIHx8IGVob3VyczIgfHwgZWhvdXJzLFxuICAgIGVlbWludXRlczIgfHwgZWVtaW51dGVzIHx8IGVtaW51dGVzMiB8fCBlbWludXRlcyxcbiAgICBkdXJhdGlvblN0cjIgfHwgZHVyYXRpb25TdHIsXG4gICk7XG5cbiAgY29uc3QgZXhlY3V0ZWQ6IFBlcmlvZCB8IHVuZGVmaW5lZCA9XG4gICAgaXNMb2NhbERhdGVUaW1lKHN0YXJ0KSAmJiBpc051bWJlcihkdXJhdGlvbilcbiAgICAgID8geyBzdGFydCwgZHVyYXRpb24gfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgLy8gRXZlbnTjgajjgb/jgarjgZvjgovloLTlkIhcbiAgaWYgKGV4ZWN1dGVkKSB7XG4gICAgY29uc3QgZXZlbnQ6IEV2ZW50ID0ge1xuICAgICAgbmFtZSxcbiAgICAgIGV4ZWN1dGVkLFxuICAgICAgZ2VuZXJhdGVkOiBmYWxzZSxcbiAgICAgIHJhdzogdGV4dCxcbiAgICB9O1xuICAgIGlmIChmcmVzaG5lc3MpIGV2ZW50LmZyZXNobmVzcyA9IGZyZXNobmVzcztcbiAgICBpZiAoc3ltYm9sIHx8IGNvdW50U3RyKSB7XG4gICAgICBldmVudC5yZWN1cnJlbmNlID0ge1xuICAgICAgICBmcmVxdWVuY3k6IHRvRnJlcXVlbmN5KHN5bWJvbCA/PyBcIkRcIikgPz8gXCJkYWlseVwiLFxuICAgICAgICBjb3VudDogY291bnRTdHIgPyBwYXJzZUludChjb3VudFN0cikgOiAxLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBldmVudCB9O1xuICB9XG5cbiAgaWYgKCFmcmVzaG5lc3MpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb2s6IGZhbHNlLFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgbmFtZTogXCJJbnZhbGlkRGF0ZUVycm9yXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiVGFzayByZXF1aXJlcyBmcmVzaG5lc3MgdG8gYmUgc3BlY1wiLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLy8g44GT44Gu5p2h5Lu244Gn44GvUmVtaW5kZXLku6XlpJbjgYLjgorjgYjjgarjgYRcbiAgY29uc3QgdGFzazogUmVtaW5kZXIgPSB7XG4gICAgbmFtZSxcbiAgICBmcmVzaG5lc3MsXG4gICAgZ2VuZXJhdGVkOiBmYWxzZSxcbiAgICByYXc6IHRleHQsXG4gIH07XG4gIGlmIChlc3RpbWF0ZWQpIHRhc2suZXN0aW1hdGVkID0gZXN0aW1hdGVkO1xuICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IGV4ZWN1dGVkID8geyAuLi50YXNrLCBleGVjdXRlZCB9IDogdGFzayB9O1xufTtcblxuLyoqIFJlbWluZGVy44GL44Gp44GG44GL6Kq/44G544KLICovXG5leHBvcnQgY29uc3QgaXNSZW1pbmRlciA9IDxSIGV4dGVuZHMgUmVtaW5kZXI+KHRhc2s6IFRhc2spOiB0YXNrIGlzIFIgPT5cbiAgIShcImV4ZWN1dGVkXCIgaW4gdGFzayk7XG5cbi8qKiDnubDjgorov5TjgZfjgr/jgrnjgq/jgYvjganjgYbjgYvoqr/jgbnjgosgKi9cbmV4cG9ydCBjb25zdCBpc1JlY3VycmVuY2UgPSA8XG4gIFIgZXh0ZW5kcyBSZWN1cnJlbnRFdmVudCxcbj4oXG4gIHRhc2s6IFRhc2ssXG4pOiB0YXNrIGlzIFIgPT4gXCJyZWN1cnJlbmNlXCIgaW4gdGFzaztcblxuLyoqIOe1guaXpeOCv+OCueOCr+OBi+OBqeOBhuOBi+WIpOWumuOBmeOCi1xuICpcbiAqIGBzdGFydGDjgavmmYLliLvjgYzlkKvjgb7jgozjgabjgYTjgarjgYTjgr/jgrnjgq/jga/lhajjgabntYLml6Xjgr/jgrnjgq/jgaDjgajjgb/jgarjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IGlzQWxsRGF5ID0gKFxuICB0YXNrOlxuICAgIHwgUGljazxSZW1pbmRlciwgXCJmcmVzaG5lc3NcIiB8IFwiZXN0aW1hdGVkXCI+XG4gICAgfCBQaWNrPEV2ZW50LCBcImV4ZWN1dGVkXCI+LFxuKTogYm9vbGVhbiA9PlxuICAhKFwiZXhlY3V0ZWRcIiBpbiB0YXNrIHx8XG4gICAgKFwiZnJlc2huZXNzXCIgaW4gdGFzayAmJiBpc0xvY2FsRGF0ZVRpbWUodGFzay5mcmVzaG5lc3MucmVmRGF0ZSkgJiZcbiAgICAgIHRhc2suZXN0aW1hdGVkICYmXG4gICAgICAoaXNOdW1iZXIodGFzay5lc3RpbWF0ZWQpIHx8IGlzTG9jYWxEYXRlVGltZSh0YXNrLmVzdGltYXRlZCkpKSk7XG5cbi8qKiDjgr/jgrnjgq/jga7miYDopoHmmYLplpPjgpLliIbljZjkvY3jgaflvpfjgotcbiAqXG4gKiDmiYDopoHmmYLplpPjgYzoqK3lrprjgZXjgozjgabjgYTjgarjgYTloLTlkIjjga9gdW5kZWZpbmVkYOOCkui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgZ2V0RHVyYXRpb24gPSAoXG4gIHRhc2s6IFBpY2s8UmVtaW5kZXIsIFwiZXN0aW1hdGVkXCI+IHwgUGljazxFdmVudCwgXCJleGVjdXRlZFwiPixcbik6IG51bWJlciB8IHVuZGVmaW5lZCA9PlxuICBcImV4ZWN1dGVkXCIgaW4gdGFza1xuICAgID8gdGFzay5leGVjdXRlZC5kdXJhdGlvblxuICAgIDogaXNOdW1iZXIodGFzay5lc3RpbWF0ZWQpXG4gICAgPyB0YXNrLmVzdGltYXRlZFxuICAgIDogdW5kZWZpbmVkO1xuXG4vKiog44K/44K544Kv44Gu6ZaL5aeL5pel5pmC44KS5b6X44KLICovXG5leHBvcnQgY29uc3QgZ2V0U3RhcnQgPSAodGFzazogVGFzayk6IExvY2FsRGF0ZSB8IExvY2FsRGF0ZVRpbWUgPT5cbiAgIWlzUmVtaW5kZXIodGFzaykgPyB0YXNrLmV4ZWN1dGVkLnN0YXJ0IDogdGFzay5mcmVzaG5lc3MucmVmRGF0ZTtcblxuLyoqIOOCv+OCueOCr+OBrue1guS6huaXpeaZguOCkuW+l+OCi1xuICpcbiAqIOe1guaXpeOBruWgtOWQiOOBr+OAgeacgOe1guaXpeOBrue/jOaXpTDmmYLjgpLntYLkuobml6XmmYLjgajjgZnjgotcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVuZCA9ICh0YXNrOiBUYXNrKTogTG9jYWxEYXRlVGltZSA9PiB7XG4gIGlmICghaXNSZW1pbmRlcih0YXNrKSkge1xuICAgIGNvbnN0IGVuZCA9IHRvRGF0ZSh0YXNrLmV4ZWN1dGVkLnN0YXJ0KTtcbiAgICByZXR1cm4gZnJvbURhdGUoYWRkTWludXRlcyhlbmQsIHRhc2suZXhlY3V0ZWQuZHVyYXRpb24pKTtcbiAgfVxuICBpZiAoXG4gICAgaXNOdW1iZXIodGFzay5lc3RpbWF0ZWQpICYmIGlzTG9jYWxEYXRlVGltZSh0YXNrLmZyZXNobmVzcy5yZWZEYXRlKVxuICApIHtcbiAgICBjb25zdCBlbmQgPSB0b0RhdGUodGFzay5mcmVzaG5lc3MucmVmRGF0ZSk7XG4gICAgcmV0dXJuIGZyb21EYXRlKGFkZE1pbnV0ZXMoZW5kLCB0YXNrLmVzdGltYXRlZCkpO1xuICB9XG4gIGNvbnN0IGVuZCA9IHRvRGF0ZShcbiAgICBpc051bWJlcih0YXNrLmVzdGltYXRlZClcbiAgICAgID8gdGFzay5mcmVzaG5lc3MucmVmRGF0ZVxuICAgICAgOiB0YXNrLmVzdGltYXRlZCA/PyB0YXNrLmZyZXNobmVzcy5yZWZEYXRlLFxuICApO1xuICBlbmQuc2V0SG91cnMoMCk7XG4gIGVuZC5zZXRNaW51dGVzKDApO1xuICByZXR1cm4gZnJvbURhdGUoYWRkRGF5cyhlbmQsIDEpKTtcbn07XG5cbi8qKiBUYXNrIG9iamVjdOOBi+OCieOCv+OCueOCr+ODquODs+OCr+OBruaWh+Wtl+WIl+OCkuS9nOOCiyAqL1xuZXhwb3J0IGNvbnN0IHRvU3RyaW5nID0gKHRhc2s6IFRhc2spOiBzdHJpbmcgPT4ge1xuICBjb25zdCBzdGF0dXMgPSB0YXNrLmZyZXNobmVzc1xuICAgID8gYCR7ZnJvbVN0YXR1cyh0YXNrLmZyZXNobmVzcy5zdGF0dXMpfSR7dGFzay5mcmVzaG5lc3Muc3BlZWQgPz8gXCJcIn1gXG4gICAgOiBcIlwiO1xuICBjb25zdCBiYXNlID0gYCR7Zm9ybWF0KGdldFN0YXJ0KHRhc2spKX1gO1xuICBjb25zdCBkdXJhdGlvbiA9IGdldER1cmF0aW9uKHRhc2spO1xuXG4gIHJldHVybiBgJHtzdGF0dXN9QCR7YmFzZX0ke1xuICAgIGR1cmF0aW9uID09PSB1bmRlZmluZWQgPyBcIlwiIDogYEQke2R1cmF0aW9ufWBcbiAgfSR7dGFzay5uYW1lfWA7XG59O1xuXG4vKiog5oyH5a6a5pel44Gr57mw44KK6L+U44GZ57mw44KK6L+U44GX44K/44K544Kv44GL6Kq/44G544KL44CCXG4gKlxuICog57mw44KK6L+U44GZ5aC05ZCI44Gv44Gd44Gu44K/44K544Kv44KS5oyH5a6a5pel44Gu5pel5LuY44Gn55Sf5oiQ44GZ44KL44CCXG4gKiDnubDjgorov5TjgZXjgarjgYTloLTlkIjjga9gdW5kZWZpbmVkYOOCkui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgbWFrZVJlcGVhdCA9IChcbiAgZXZlbnQ6IFJlY3VycmVudEV2ZW50LFxuICBkYXRlOiBEYXRlLFxuKTogRXZlbnQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBsb2NhbERhdGUgPSBmcm9tRGF0ZShkYXRlKTtcblxuICBjb25zdCB7IHJlY3VycmVuY2UsIGV4ZWN1dGVkIH0gPSBldmVudDtcbiAgLy8g57mw44KK6L+U44GZ5aC05ZCI44Gu44G/6YCa6YGO44GV44Gb44KLXG4gIHN3aXRjaCAocmVjdXJyZW5jZS5mcmVxdWVuY3kpIHtcbiAgICBjYXNlIFwieWVhcmx5XCI6IHtcbiAgICAgIC8vIOmWk+malOOBjOOBguOBo+OBpuOBhOOCi+OBi+ODgeOCp+ODg+OCr1xuICAgICAgaWYgKFxuICAgICAgICBNYXRoLmFicyhsb2NhbERhdGUueWVhciAtIGV4ZWN1dGVkLnN0YXJ0LnllYXIpICVcbiAgICAgICAgICAgIChyZWN1cnJlbmNlLmNvdW50ID8/IDEpICE9PSAwXG4gICAgICApIHJldHVybjtcblxuICAgICAgLy8g5pel44Go5pyI44GM5LiA6Ie044GX44Gm44GE44KL44GL44OB44Kn44OD44KvXG4gICAgICBpZiAoXG4gICAgICAgIGV4ZWN1dGVkLnN0YXJ0Lm1vbnRoICE9PSBsb2NhbERhdGUubW9udGggfHxcbiAgICAgICAgZXhlY3V0ZWQuc3RhcnQuZGF0ZSAhPT0gbG9jYWxEYXRlLmRhdGVcbiAgICAgICkgcmV0dXJuO1xuXG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBcIm1vbnRobHlcIjoge1xuICAgICAgLyoqIOS4juOBiOOCieOCjOOBn+aXpeS7mOOBqGV2ZW5044Gu57mw44KK6L+U44GX6LW354K544Go44Gu5pyI5beuICovXG4gICAgICBjb25zdCBkaWZmID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMoXG4gICAgICAgIHRvRGF0ZShsb2NhbERhdGUpLFxuICAgICAgICB0b0RhdGUoZXhlY3V0ZWQuc3RhcnQpLFxuICAgICAgKTtcbiAgICAgIGlmIChkaWZmICUgKHJlY3VycmVuY2UuY291bnQgPz8gMSkgIT09IDApIHJldHVybjtcblxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgXCJ3ZWVrbHlcIjpcbiAgICBjYXNlIFwiZGFpbHlcIjoge1xuICAgICAgY29uc3QgaW50ZXJ2YWwgPSByZWN1cnJlbmNlLmZyZXF1ZW5jeSA9PT0gXCJ3ZWVrbHlcIiA/IDcgOiAxO1xuICAgICAgY29uc3QgZGlmZiA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhcbiAgICAgICAgdG9EYXRlKGxvY2FsRGF0ZSksXG4gICAgICAgIHRvRGF0ZShleGVjdXRlZC5zdGFydCksXG4gICAgICApO1xuICAgICAgaWYgKGRpZmYgJSAoKHJlY3VycmVuY2UuY291bnQgPz8gMSkgKiBpbnRlcnZhbCkgIT09IDApIHJldHVybjtcblxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RhcnQ6IExvY2FsRGF0ZVRpbWUgPSB7IC4uLmV4ZWN1dGVkLnN0YXJ0IH07XG4gIHN0YXJ0LnllYXIgPSBsb2NhbERhdGUueWVhcjtcbiAgc3RhcnQubW9udGggPSBsb2NhbERhdGUubW9udGg7XG4gIHN0YXJ0LmRhdGUgPSBsb2NhbERhdGUuZGF0ZTtcblxuICBjb25zdCBnZW5lcmF0ZWQ6IEV2ZW50ID0ge1xuICAgIG5hbWU6IGV2ZW50Lm5hbWUsXG4gICAgZXhlY3V0ZWQ6IHsgc3RhcnQsIGR1cmF0aW9uOiBleGVjdXRlZC5kdXJhdGlvbiB9LFxuICAgIGdlbmVyYXRlZDogdHJ1ZSxcbiAgICByYXc6IGV2ZW50LnJhdyxcbiAgfTtcbiAgaWYgKGV2ZW50LmZyZXNobmVzcykgZ2VuZXJhdGVkLmZyZXNobmVzcyA9IGV2ZW50LmZyZXNobmVzcztcbiAgcmV0dXJuIGdlbmVyYXRlZDtcbn07XG5cbi8qKiBgVGFza2DjgYvjgonjgr/jgrnjgq/jg6rjg7Pjgq/jgpLlvqnlhYPjgZnjgotcbiAqXG4gKiDjg6rjg7Pjgq/jgavjgZnjgovmnaHku7ZcbiAqIC0g57mw44KK6L+U44GX44K/44K544Kv44Gu5aC05ZCI44GvYFJlbWluZGVyYOOBruOBv+ODquODs+OCr+OBq+OBmeOCi1xuICogLSDnubDjgorov5TjgZfjgr/jgrnjgq/jgafjgarjgYTloLTlkIjjga/jgZnjgbnjgabjg6rjg7Pjgq/jgavjgZnjgotcbiAqXG4gKiDjg6rjg7Pjgq/jgavjgZfjgarjgYTjgoLjga7jga9gdW5kZWZpbmVkYOOCkui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgZ2V0TGlua1RpdGxlID0gKHRhc2s6IFRhc2spOiBzdHJpbmcgfCB1bmRlZmluZWQgPT5cbiAgdGFzay5mcmVzaG5lc3NcbiAgICA/IHRhc2suZ2VuZXJhdGVkID8gdG9TdHJpbmcodGFzaykgOiB0YXNrLnJhd1xuICAgIDogIXRhc2suZ2VuZXJhdGVkXG4gICAgPyB0YXNrLnJhd1xuICAgIDogdW5kZWZpbmVkO1xuXG4vKiog6ZaL5aeL5pel5pmC6KOc5q2j44OH44O844K/44GL44KJ5pyA57WC55qE44Gq6ZaL5aeL5pel5pmC44KS5rG65a6a44GZ44KLXG4gKlxuICog5LiO44GI44KJ44KM44Gf5paH5a2X5YiX44Gv5q2j44GX44GE5pWw5YCk44Gn44GC44KL44GT44Go44KS5YmN5o+Q44Go44GX44CB44GT44Gu5Ye95pWw44Gn44Gv5LiA5YiH44Ko44Op44O85Yem55CG44GX44Gq44GEXG4gKi9cbmNvbnN0IGZpeFN0YXJ0ID0gKFxuICBzeWVhcjogc3RyaW5nLFxuICBzbW9udGg6IHN0cmluZyxcbiAgc2RhdGU6IHN0cmluZyxcbiAgc2hvdXJzOiBzdHJpbmcsXG4gIHNtaW51dGVzOiBzdHJpbmcsXG4pOiBMb2NhbERhdGUgfCBMb2NhbERhdGVUaW1lID0+IHtcbiAgY29uc3QgeWVhciA9IHBhcnNlSW50KHN5ZWFyKTtcbiAgY29uc3QgbW9udGggPSBwYXJzZUludChzbW9udGgpO1xuICBjb25zdCBkYXRlID0gcGFyc2VJbnQoc2RhdGUpO1xuICBjb25zdCBob3VycyA9IHNob3VycyA/IHBhcnNlSW50KHNob3VycykgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IG1pbnV0ZXMgPSBzbWludXRlcyA/IHBhcnNlSW50KHNtaW51dGVzKSA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4gaG91cnMgIT09IHVuZGVmaW5lZCAmJiBtaW51dGVzICE9PSB1bmRlZmluZWRcbiAgICA/IHsgeWVhciwgbW9udGgsIGRhdGUsIGhvdXJzLCBtaW51dGVzIH1cbiAgICA6IHsgeWVhciwgbW9udGgsIGRhdGUgfTtcbn07XG5cbi8qKiDntYLkuobml6XmmYLoo5zmraPjg4fjg7zjgr/jgYvjgonmnIDntYLnmoTjgarntYLkuobml6XmmYLjgpLmsbrlrprjgZnjgotcbiAqXG4gKiDkuI7jgYjjgonjgozjgZ/mloflrZfliJfjga/mraPjgZfjgYTmlbDlgKTjgafjgYLjgovjgZPjgajjgpLliY3mj5DjgajjgZfjgIHjgZPjga7lh73mlbDjgafjga/kuIDliIfjgqjjg6njg7zlh6bnkIbjgZfjgarjgYRcbiAqXG4gKiBAcmV0dXJuIOaJgOimgeaZgumWk+OCkua4oeOBleOCjOOBn+OBi+OAgemWi+Wni+aZguWIu+OBqOe1guS6huaZguWIu+OBqOOCguOBq+aYjuiomOOBleOCjOOBpuOBhOOCi+WgtOWQiOOBr+OAgeaJgOimgeaZgumWkyAobWluKSDjgpJgbnVtYmVyYOOBp+i/lOOBmeOAgue1guS6huaXpeaZguaMh+WumuOBjOOBquOBhOWgtOWQiOOBr2B1bmRlaWZuZWRg44KS6L+U44GZ44CC44Gd44KM5Lul5aSW44GvYExvY2FsRGF0ZSB8IExvY2FsRGF0ZVRpbWVg44KS6L+U44GZXG4gKi9cbmNvbnN0IGZpeEVuZCA9IChcbiAgYmFzZVN0YXJ0OiBMb2NhbERhdGUgfCBMb2NhbERhdGVUaW1lLFxuICBleWVhcjogc3RyaW5nLFxuICBlbW9udGg6IHN0cmluZyxcbiAgZWRhdGU6IHN0cmluZyxcbiAgZWhvdXJzOiBzdHJpbmcsXG4gIGVtaW51dGVzOiBzdHJpbmcsXG4gIGR1cmF0aW9uU3RyOiBzdHJpbmcsXG4pOiBudW1iZXIgfCBMb2NhbERhdGUgfCBMb2NhbERhdGVUaW1lIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKCFleWVhciAmJiAhZW1vbnRoICYmICFlZGF0ZSAmJiAhZWhvdXJzICYmICFlbWludXRlcyAmJiAhZHVyYXRpb25TdHIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8g5omA6KaB5pmC6ZaT44GM55u05o6l5oyH5a6a44GV44KM44Gm44GE44KM44Gw44CB44Gd44KM44KS5YSq5YWI44GZ44KLXG4gIGlmIChkdXJhdGlvblN0cikgcmV0dXJuIHBhcnNlSW50KGR1cmF0aW9uU3RyKTtcblxuICBjb25zdCB5ZWFyID0gZXllYXIgPyBwYXJzZUludChleWVhcikgOiBiYXNlU3RhcnQueWVhcjtcbiAgY29uc3QgbW9udGggPSBlbW9udGggPyBwYXJzZUludChlbW9udGgpIDogYmFzZVN0YXJ0Lm1vbnRoO1xuICBjb25zdCBkYXRlID0gZWRhdGUgPyBwYXJzZUludChlZGF0ZSkgOiBiYXNlU3RhcnQuZGF0ZTtcbiAgY29uc3QgaG91cnMgPSBlaG91cnMgPyBwYXJzZUludChlaG91cnMpIDogdW5kZWZpbmVkO1xuICBjb25zdCBtaW51dGVzID0gZW1pbnV0ZXMgPyBwYXJzZUludChlbWludXRlcykgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgZW5kOiBMb2NhbERhdGUgfCBMb2NhbERhdGVUaW1lID1cbiAgICBob3VycyAhPT0gdW5kZWZpbmVkICYmIG1pbnV0ZXMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IHllYXIsIG1vbnRoLCBkYXRlLCBob3VycywgbWludXRlcyB9XG4gICAgICA6IHsgeWVhciwgbW9udGgsIGRhdGUgfTtcblxuICAvLyDmiYDopoHmmYLplpPjgpLoqIjnrpfjgafjgY3jgarjgYTloLTlkIhcbiAgaWYgKCFpc0xvY2FsRGF0ZVRpbWUoYmFzZVN0YXJ0KSB8fCAhaXNMb2NhbERhdGVUaW1lKGVuZCkpIHJldHVybiBlbmQ7XG5cbiAgcmV0dXJuIE1hdGgucm91bmQoXG4gICAgKHRvRGF0ZShlbmQpLmdldFRpbWUoKSAtIHRvRGF0ZShiYXNlU3RhcnQpLmdldFRpbWUoKSkgLyAoNjAgKiAxMDAwKSxcbiAgKTtcbn07XG4iLCAiaW1wb3J0IHtcbiAgZ2V0RHVyYXRpb24sXG4gIGdldExpbmtUaXRsZSxcbiAgaXNBbGxEYXksXG4gIGlzUmVjdXJyZW5jZSxcbiAgaXNSZW1pbmRlcixcbiAgbWFrZVJlcGVhdCxcbiAgVGFzayxcbn0gZnJvbSBcIi4vcGFyc2UudHNcIjtcbmltcG9ydCB7IFRhc2sgYXMgVGFza0xpbmUgfSBmcm9tIFwiLi4vdGFzay50c1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vbG9jYWxEYXRlLnRzXCI7XG5cbi8qKiDjgr/jgrnjgq/jg6rjg7Pjgq/jga7jgr/jgrnjgq/jg4fjg7zjgr/jgpLjgIHml6XliIroqJjpjLJzaGVldOOBq+abuOOBjei+vOOCgOOCv+OCueOCr+ODqeOCpOODs+eUqOODh+ODvOOCv+OBq+WkieaPm+OBmeOCi1xuICpcbiAqIEBwYXJhbSB0YXNrIOOCv+OCueOCr+ODquODs+OCr+OBruOCv+OCueOCr+ODh+ODvOOCv1xuICogQHBhcmFtIGRhdGUg57mw44KK6L+U44GX44K/44K544Kv44KS55Sf5oiQ44GX44Gf44GE5pel5LuY44CC57mw44KK6L+U44GX44K/44K544Kv44Gn44Gq44GR44KM44Gw54Sh6KaW44GV44KM44KLXG4gKiBAcmV0dXJuIOOCv+OCueOCr+ODqeOCpOODs+eUqOODh+ODvOOCv1xuICovXG5leHBvcnQgY29uc3QgdG9UYXNrTGluZSA9ICh0YXNrOiBUYXNrLCBkYXRlOiBEYXRlKTogVGFza0xpbmUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoIXRhc2suZ2VuZXJhdGVkICYmIGlzUmVjdXJyZW5jZSh0YXNrKSkge1xuICAgIGNvbnN0IGdlbmVyYXRlZCA9IG1ha2VSZXBlYXQodGFzaywgZGF0ZSk7XG4gICAgaWYgKCFnZW5lcmF0ZWQpIHJldHVybjtcbiAgICByZXR1cm4gdG9UYXNrTGluZShnZW5lcmF0ZWQsIGRhdGUpO1xuICB9XG4gIGNvbnN0IHN0YXJ0ID0gdG9EYXRlKFxuICAgICFpc1JlbWluZGVyKHRhc2spID8gdGFzay5leGVjdXRlZC5zdGFydCA6IHRhc2suZnJlc2huZXNzLnJlZkRhdGUsXG4gICk7XG4gIGNvbnN0IGR1cmF0aW9uTWluID0gZ2V0RHVyYXRpb24odGFzayk7XG5cbiAgY29uc3QgdGl0bGUgPSBnZXRMaW5rVGl0bGUodGFzayk7XG5cbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogdGl0bGUgIT09IHVuZGVmaW5lZCA/IGBbJHt0aXRsZX1dYCA6IHRhc2submFtZSxcbiAgICBiYXNlOiBzdGFydCxcbiAgICBwbGFuOiB7XG4gICAgICBzdGFydDogaXNBbGxEYXkodGFzaykgPyB1bmRlZmluZWQgOiBzdGFydCxcbiAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbk1pbiAhPT0gdW5kZWZpbmVkID8gZHVyYXRpb25NaW4gKiA2MCA6IHVuZGVmaW5lZCxcbiAgICB9LFxuICAgIHJlY29yZDoge30sXG4gIH07XG59O1xuIiwgImltcG9ydCB7IGdldEVhY2hMYXRlc3REYXRlIH0gZnJvbSBcIi4uL2dldEVhY2hMYXRlc3REYXRlL21vZC50c1wiO1xuaW1wb3J0IHR5cGUge1xuICBOZXdQYWdlSG9vayxcbiAgVXBkYXRlclxufSBmcm9tIFwiLi4vY3VzdG9tLW5ldy1wYWdlL21vZC50c1wiO1xuaW1wb3J0IHsgcGFyc2UsIHRvU3RyaW5nLCBpc1Rhc2sgfSBmcm9tIFwiLi4vdGFra2VyOTklMkZ0YWtrZXItc2NoZWR1bGVyL2RlcHMudHNcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJ2YWwgfSBmcm9tIFwiLi4vdGFra2VyOTklMkZ0YWtrZXItc2NoZWR1bGVyL2RlcHMudHNcIjtcbmltcG9ydCB7IGdldEluZGVudENvdW50LCB0b1RpdGxlTGMgfSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvdGV4dC50c1wiO1xuaW1wb3J0IHsgbGlnaHRGb3JtYXQgfSBmcm9tIFwiLi4vZGF0ZS1mbnMvbW9kLnRzXCI7XG5pbXBvcnQgeyBwYXJzZSBhcyBwYXJzZVRhc2tMaW5rIH0gZnJvbSBcIi4uL3Rha2tlcjk5JTJGdGFra2VyLXNjaGVkdWxlci93b3JrZmxvdy50c1wiO1xuXG5jb25zdCBmb29kVHlwZSA9IHtcbiAgXCLjgYLjgZXjgZTjga/jgpNcIjogXCIjbG9nLWJyZWFrZmFzdFwiLFxuICBcIuOBsuOCi+OBlOOBr+OCk1wiOiBcIiNsb2ctbHVuY2hcIixcbiAgXCLjgojjgovjgZTjga/jgpNcIjogXCIjbG9nLWRpbm5lclwiLFxufSBhcyBSZWNvcmQ8c3RyaW5nLCBgIyR7c3RyaW5nfWA+O1xuXG4vKiogdGFzayBsaW5l44Gu6YWN5LiL44Gr5pu444GE44Gf44KC44Gu44KS5paw44GX44GE44Oa44O844K444Gr5YiH44KK5Ye644GZXG4gKlxuICog6aOf44G544Gf44KC44Gu6KiY6Yyy44Gu44Go44GN44Gv6Iul5bmyVGVtcGxhdGXjgpLlpInjgYjjgotcbiAqL1xuZXhwb3J0IGNvbnN0IHRhc2tMaW5lSG9vazogTmV3UGFnZUhvb2sgPSAoXG4gIHRleHQsIHsgdGl0bGUsIHByb2plY3RUbywgbW9kZSB9LFxuKSA9PiB7XG4gIGNvbnN0IFt0YXNrTGluZSwgLi4ubGluZXNdID0gdGV4dC5zcGxpdChcIlxcblwiKTtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2UodGFza0xpbmUpO1xuICAvLyB0YXNrIGxpbmXjgafjgarjgYTloLTlkIjjga/lr77osaHlpJZcbiAgaWYgKCFwYXJzZWQpIHJldHVybjtcbiAgLy8g566H5p2h5pu444GN44GM54Sh44GE5pmC44Gv5L2V44KC5YiH44KK5Ye644GV44Gq44GEXG4gIGlmIChsaW5lcy5sZW5ndGggPT09IDApIHJldHVybiB7IHRleHQsIHBhZ2VzOiBbXSB9O1xuICBcbiAgY29uc3QgeyB0aXRsZTogdGFza05hbWUsIGJhc2UsIHJlY29yZCwgLi4ucmVzdCB9ID0gcGFyc2VkO1xuICBjb25zdCBuZXdUaXRsZSA9IG1ha2VUYXNrVGl0bGUodGFza05hbWUsIGJhc2UsIHJlY29yZCk7XG4gIGNvbnN0IG5ld1Rhc2tMaW5lID0gdG9TdHJpbmcoe1xuICAgIHRpdGxlOiBgWyR7bmV3VGl0bGV9XWAsXG4gICAgYmFzZSxcbiAgICByZWNvcmQsXG4gICAgLi4ucmVzdCxcbiAgfSk7XG4gIC8vIOS9meioiOOBquOCpOODs+ODh+ODs+ODiOOCkuWJiuOCi1xuICBjb25zdCBtaW5JbmRlbnROdW0gPSBNYXRoLm1pbiguLi5saW5lcy5tYXAoKGxpbmUpID0+IGdldEluZGVudENvdW50KGxpbmUpKSk7XG4gIGNvbnN0IG5ld0xpbmVzID0gW1xuICAgIC8vIOOCv+OCueOCr+WQjeOBq+ODquODs+OCr+OBjOWFpeOBo+OBpuOBhOOBn+OBqOOBjeOBr+OBneOCjOOCkuS9v+OBhlxuICAgIC8vIOOBn+OBoOOBl+OAgeODmuODvOOCuOOCv+OCpOODiOODq+OBqOWQjOWQjeOBruOBqOOBjeOBr+aMv+WFpeOBl+OBquOBhFxuICAgIC4uLigvW1xcW1xcXV0vLnRlc3QodGFza05hbWUpICYmIHRhc2tOYW1lICE9PSBgWyR7bmV3VGl0bGV9XWAgPyBbdGFza05hbWVdIDogW10pLCBcbiAgICAuLi4oKHRpdGxlIGluIGZvb2RUeXBlKSA/IFtcbiAgICAgICAgLi4ubGluZXMubWFwKFxuICAgICAgICAgIChsaW5lKSA9PiBsaW5lLnNsaWNlKG1pbkluZGVudE51bSlcbiAgICAgICAgKSxcbiAgICAgICAgXCJcIixcbiAgICAgICAgZm9vZFR5cGVbdGl0bGVdLFxuICAgICAgICAnI2xvZy1lYXRlbmZvb2QnXG4gICAgICBdIDogW1xuICAgICAgICAuLi5saW5lcy5tYXAoXG4gICAgICAgICAgKGxpbmUpID0+IGAgJHtsaW5lLnNsaWNlKG1pbkluZGVudE51bSl9YFxuICAgICAgICApLFxuICAgICAgICBcIlwiLFxuICAgICAgXVxuICAgICksXG4gIF07XG4gIFxuICByZXR1cm4ge1xuICAgIHRleHQ6IG5ld1Rhc2tMaW5lLFxuICAgIHBhZ2VzOiBbe1xuICAgICAgcHJvamVjdDogcHJvamVjdFRvLFxuICAgICAgdGl0bGU6IG5ld1RpdGxlLFxuICAgICAgbGluZXM6IG1ha2VVcGRhdGVyKHRpdGxlLCBuZXdMaW5lcywgW3JlY29yZC5zdGFydCA/PyBiYXNlXSksXG4gICAgICBtb2RlLFxuICAgIH1dLFxuICB9O1xufTtcblxudGFza0xpbmVIb29rLmhvb2tOYW1lID0gXCJ0YXNrLWhvb2tcIjtcblxuY29uc3QgbWFrZVRhc2tUaXRsZSA9ICh0aXRsZTogc3RyaW5nLCBiYXNlOiBEYXRlLCByZWNvcmQ6IEludGVydmFsKSA9PiB7XG4gIGNvbnN0IGRhdGUgPSBsaWdodEZvcm1hdChyZWNvcmQuc3RhcnQgPz8gYmFzZSwgJ3l5eXktTU0tZGQnKTtcbiAgaWYgKHRpdGxlIGluIGZvb2RUeXBlKSB7XG4gICAgcmV0dXJuIGAke2RhdGV9ICR7dGl0bGV9YDtcbiAgfVxuICAvLyDjgr/jgrnjgq/jg6rjg7Pjgq/jga7loLTlkIjjga/jgIHjgZ3jgozjgpLjgZ3jga7jgb7jgb7kvb/jgYZcbiAgaWYgKHBhcnNlVGFza0xpbmsodGl0bGUuc2xpY2UoMSwgLTEpKSkge1xuICAgIHJldHVybiB0aXRsZS5zbGljZSgxLCAtMSk7XG4gIH1cbiAgY29uc3QgZmlyc3QgPSB0aXRsZS5yZXBsYWNlKC9bXFxbXFxdXS9nLCAnJykudHJpbSgpO1xuICByZXR1cm4gYCR7Zmlyc3R9JHtmaXJzdC5lbmRzV2l0aChkYXRlKSA/IFwiXCIgOiBgICR7ZGF0ZX1gfWA7XG59O1xuXG5leHBvcnQgY29uc3QgbmV3UGFnZUhvb2s6IE5ld1BhZ2VIb29rID0gKFxuICB0ZXh0LCB7IHRpdGxlOiB0aXRsZUZyb20sIHByb2plY3RUbywgbW9kZSwgbGluZXM6IG1ldGFMaW5lcyB9LFxuKSA9PiB7XG4gIGNvbnN0IFtyYXdUaXRsZSwgLi4ubGluZXNdID0gdGV4dC5zcGxpdChcIlxcblwiKTtcbiAgLy8g6KSH5pWw6KGM44Gu5YiH44KK5Ye644GX44Gu44G/5a++6LGhXG4gIGlmIChsaW5lcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgY29uc3QgdGl0bGUgPSByYXdUaXRsZS5yZXBsYWNlKC9bXFxbXFxdXS9nLCBcIlwiKS50cmltKCk7XG4gIC8vIOS9meioiOOBquOCpOODs+ODh+ODs+ODiOOCkuWJiuOCi1xuICBjb25zdCBtaW5JbmRlbnROdW0gPSBNYXRoLm1pbiguLi5saW5lcy5tYXAoKGxpbmUpID0+IGdldEluZGVudENvdW50KGxpbmUpKSk7XG4gIFxuICAvLyDooYzjga7mm7TmlrDml6XmmYLjgajnj77lnKjml6XmmYLjgYvjgonml6Xku5jjgr/jgrDjgpLkvZzjgotcbiAgLy8gXCJ0YWtrZXJcIuOBp+Wni+OBvuOCi3Byb2plY3Tku6XlpJbjgafjga9vZmbjgavjgZnjgotcbiAgY29uc3QgZGF0ZXMgPSBwcm9qZWN0VG8uc3RhcnRzV2l0aChcInRha2tlclwiKSA/IGdldEVhY2hMYXRlc3REYXRlKFtcbiAgICBuZXcgRGF0ZSgpLFxuICAgIC4uLm1ldGFMaW5lcy5tYXAoKHsgdXBkYXRlZCB9KSA9PiBuZXcgRGF0ZSh1cGRhdGVkICogMTAwMCkpLFxuICBdKVxuICAuc29ydCgoYSwgYikgPT4gYi5nZXRUaW1lKCkgLSBhLmdldFRpbWUoKSlcbiAgOiBbXTtcbiAgXG4gIGNvbnN0IG5ld0xpbmVzID0gW1xuICAgIFwiXCIsXG4gICAgLy8g44K/44Kk44OI44Or44Gr44Oq44Oz44Kv44GM5YWl44Gj44Gm44GE44Gf44Go44GN44Gv44Gd44KM44KS5L2/44GGXG4gICAgLi4uKC9bXFxbXFxdXS8udGVzdChyYXdUaXRsZSkgPyBbcmF3VGl0bGUudHJpbVN0YXJ0KCldIDogW10pLCBcbiAgICAuLi5saW5lcy5tYXAoKGxpbmUpID0+IGxpbmUuc2xpY2UobWluSW5kZW50TnVtKSksXG4gIF07XG4gIFxuICByZXR1cm4ge1xuICAgIHRleHQ6IGAke1wiIFwiLnJlcGVhdChnZXRJbmRlbnRDb3VudChyYXdUaXRsZSkpfVske3RpdGxlfV1gLFxuICAgIHBhZ2VzOiBbe1xuICAgICAgcHJvamVjdDogcHJvamVjdFRvLFxuICAgICAgdGl0bGUsXG4gICAgICBsaW5lczogbWFrZVVwZGF0ZXIodGl0bGVGcm9tLCBuZXdMaW5lcywgZGF0ZXMpLFxuICAgICAgbW9kZSxcbiAgICB9XSxcbiAgfTtcbn07XG5cbm5ld1BhZ2VIb29rLmhvb2tOYW1lID0gXCJuZXctcGFnZS1ob29rXCI7XG5cbmV4cG9ydCBjb25zdCBzcGxpdHRlZExpbmtIb29rOiBOZXdQYWdlSG9vayA9IChcbiAgdGV4dCwgeyBwcm9qZWN0VG8sIG1vZGUgfSxcbikgPT4ge1xuICAvLyDjg6rjg7Pjgq/jgpLlkKvjgoDljZjkuIDooYzjga7jgb/lr77osaFcbiAgaWYgKHRleHQuaW5jbHVkZXMoXCJcXG5cIikgfHwgIS9cXFtbXlxcXV0rXFxdLy50ZXN0KHRleHQpKSByZXR1cm47XG4gIGNvbnN0IFtpbmRlbnQsIHN0cl0gPSB0ZXh0Lm1hdGNoKC9eKFxccyopKC4qKSQvKT8uc2xpY2U/LigxKSA/P1xuICAgIFtcIlwiLCB0ZXh0XTtcbiAgY29uc3QgbGlua3NMY0luVGV4dCA9IFsuLi5zdHIubWF0Y2hBbGwoL1xcWyhbXlxcXV0pXFxdL2cpXVxuICAgIC5tYXAoKG1hdGNoKSA9PiB0b1RpdGxlTGMobWF0Y2hbMV0pKTtcbiAgY29uc3QgdGl0bGUgPSBzdHIucmVwbGFjZUFsbChcIltcIiwgXCJcIikucmVwbGFjZUFsbChcIl1cIiwgXCJcIik7XG4gIFxuICByZXR1cm4ge1xuICAgIHRleHQ6IGAke2luZGVudH1bJHt0aXRsZX1dYCxcbiAgICBwYWdlczogW3tcbiAgICAgIHByb2plY3Q6IHByb2plY3RUbyxcbiAgICAgIHRpdGxlLFxuICAgICAgbGluZXM6IChwcmV2LCB7IGxpbmtzIH0pID0+e1xuICAgICAgICAvLyDjgZnjgafjgavlkIzjgZjjg6rjg7Pjgq/jgYzmm7jjgY3ovrzjgb7jgozjgabjgYTjgovjgajjgY3jga/kvZXjgoLjgZfjgarjgYRcbiAgICAgICAgY29uc3QgbGlua3NMYyA9IGxpbmtzLm1hcCgobGluaykgPT4gdG9UaXRsZUxjKGxpbmspKTtcbiAgICAgICAgaWYgKGxpbmtzTGNJblRleHQuZXZlcnkoXG4gICAgICAgICAgKGxpbmtMYykgPT4gbGlua3NMYy5pbmNsdWRlcyhsaW5rTGMpXG4gICAgICAgICkpIHJldHVybjtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi5wcmV2Lm1hcCgobGluZSkgPT4gbGluZS50ZXh0KSxcbiAgICAgICAgICBzdHIsXG4gICAgICAgIF07XG4gICAgICB9LFxuICAgICAgbW9kZSxcbiAgICB9XSxcbiAgfTtcbn07XG5cbnNwbGl0dGVkTGlua0hvb2suaG9va05hbWUgPSBcInNwbGl0dGVkLWxpbmstaG9va1wiO1xuXG5jb25zdCBtYWtlVXBkYXRlciA9ICh0aXRsZUZyb206IHN0cmluZywgbGluZXM6IEl0ZXJhYmxlPHN0cmluZz4sIGRhdGVzOiBEYXRlW10pOiBVcGRhdGVyID0+XG4gIChwcmV2LCB7IGxpbmtzIH0pID0+IHtcbiAgICBjb25zdCBsaW5rc0xjID0gbGlua3MubWFwKChsaW5rKSA9PiB0b1RpdGxlTGMobGluaykpO1xuICAgIGNvbnN0IGZyb21MaW5lID0gbGlua3NMYy5pbmNsdWRlcyh0b1RpdGxlTGModGl0bGVGcm9tKSkgP1xuICAgICAgW10gOlxuICAgICAgW2Bmcm9tIFske3RpdGxlRnJvbX1dYF07XG4gICAgY29uc3QgZGF0ZVRhZ3MgPSBkYXRlcy5mbGF0TWFwKFxuICAgICAgKGRhdGUpID0+IHtcbiAgICAgICAgY29uc3QgeXl5eU1NZGQgPSBsaWdodEZvcm1hdChkYXRlLCBcInl5eXktTU0tZGRcIik7XG4gICAgICAgIGlmIChsaW5rc0xjLmluY2x1ZGVzKHl5eXlNTWRkKSkgcmV0dXJuIFtdO1xuICAgICAgICBjb25zdCBISG1tc3MgPSBsaWdodEZvcm1hdChkYXRlLCBcIkhIOm1tOnNzXCIpO1xuICAgICAgICByZXR1cm4gW2AjJHt5eXl5TU1kZH0gJHtISG1tc3N9YF07XG4gICAgICB9XG4gICAgKTtcbiAgICAgICAgXG4gICAgY29uc3QgcHJldkxpbmVzID0gcHJldi5tYXAoKGxpbmUpID0+IGxpbmUudGV4dCk7XG4gICAgLyoqIHRoZSBpbmRleCB3aGVyZSB0aGUgZmlyc3QgZGF0ZVRhZyBzdGFydHMgKi9cbiAgICBjb25zdCBpbmRleCA9IHByZXZMaW5lcy5maW5kSW5kZXgoXG4gICAgICAobGluZSkgPT4gL14jXFxkezR9LVxcZHsyfS1cXGR7Mn0vLnRlc3QobGluZSlcbiAgICApO1xuICAgIFxuICAgIGNvbnN0IGluc2VydEJlZm9yZSA9IGluZGV4IDwgMCA/IHByZXZMaW5lcy5sZW5ndGggOiBpbmRleDsgICAgICAgICAgIFxuICAgIHJldHVybiBbXG4gICAgICAuLi5wcmV2TGluZXMuc2xpY2UoMCwgaW5zZXJ0QmVmb3JlKSxcbiAgICAgIC4uLmZyb21MaW5lLFxuICAgICAgLi4ubGluZXMsXG4gICAgICBcIlwiLFxuICAgICAgLi4uZGF0ZVRhZ3MsXG4gICAgICAuLi5wcmV2TGluZXMuc2xpY2UoaW5zZXJ0QmVmb3JlKSxcbiAgICBdO1xuICB9OyIsICJpbXBvcnQge1xuICB0cmFuc3BvcnQsIGNyZWF0ZVRhc2ssIHRvU3RyaW5nXG59IGZyb20gXCIuLi90YWtrZXI5OSUyRnRha2tlci1zY2hlZHVsZXIvZGVwcy50c1wiO1xuaW1wb3J0IHtcbiAgcGFyc2UsIHRvVGFza0xpbmVcbn0gZnJvbSBcIi4uL3Rha2tlcjk5JTJGdGFra2VyLXNjaGVkdWxlci93b3JrZmxvdy50c1wiO1xuaW1wb3J0IHtcbiAgY2FyZXQsIGdldExpbmVzLCByZXBsYWNlTGluZXNcbn0gZnJvbSBcIi4uL3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkL2RvbS50c1wiO1xuaW1wb3J0IHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vc2NyYXBib3gtanAlMkZ0eXBlcy91c2Vyc2NyaXB0LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuY29uc3QgcGQgPSAoZTogRXZlbnQpID0+IGUucHJldmVudERlZmF1bHQoKTtcbmNvbnN0IHNwID0gKGU6IEV2ZW50KSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG5leHBvcnQgY29uc3QgdGFza0NvbW1vbiA9IHtcbiAgXCI8QS1hPjxBLWM+XCI6IGFzeW5jIChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgcGQoZSk7c3AoZSk7XG4gICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gZ2V0TGluZVJhbmdlKCk7XG4gICAgY29uc3QgdGV4dCA9IGdldExpbmVzKCkuc2xpY2Uoc3RhcnQsIGVuZCArIDEpLm1hcCgobGluZSkgPT4ge1xuICAgICAgY29uc3QgdGV4dCA9IGxpbmUudGV4dDtcbiAgICAgIGNvbnN0IGxpbmsgPSBsaW5lLnRleHQubWF0Y2goL1xcWyhbXlxcXV0rKVxcXS8pPy5bMV07XG4gICAgICBpZiAoIWxpbmspIHJldHVybiB0ZXh0O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcGFyc2UobGluayk7XG4gICAgICBpZiAoIXJlc3VsdCB8fCAhcmVzdWx0Lm9rKSByZXR1cm4gdGV4dDtcbiAgICAgIGNvbnN0IHRhc2sgPSByZXN1bHQudmFsdWU7XG4gICAgICBpZiAodGFzay5mcmVzaG5lc3M/LnN0YXR1cyA9PT0gXCJkb25lXCIpIHJldHVybiB0ZXh0O1xuICAgICAgY29uc3QgdGFza0xpbmUgPSB0b1Rhc2tMaW5lKHRhc2ssIG5ldyBEYXRlKCkpO1xuICAgICAgaWYgKCF0YXNrTGluZSkgcmV0dXJuIHRleHQ7XG4gICAgICB0YXNrTGluZS50aXRsZSA9IGBbJHtsaW5rfV1gO1xuICAgICAgcmV0dXJuIHRvU3RyaW5nKHRhc2tMaW5lKTtcbiAgICB9KS5qb2luKFwiXFxuXCIpO1xuICAgIGF3YWl0IHJlcGxhY2VMaW5lcyhzdGFydCwgZW5kLCB0ZXh0KTtcbiAgICBhd2FpdCBjcmVhdGVUYXNrKCk7XG4gIH0sXG4gIFwiPEEtYT48QS1tPlwiOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmIChzY3JhcGJveC5MYXlvdXQgIT09IFwicGFnZVwiKSByZXR1cm47XG4gICAgcGQoZSk7c3AoZSk7XG4gICAgdHJhbnNwb3J0KHtcbiAgICAgIGZyb206IHtcbiAgICAgICAgcHJvamVjdDogc2NyYXBib3guUHJvamVjdC5uYW1lLFxuICAgICAgICB0aXRsZTogc2NyYXBib3guUGFnZS50aXRsZSxcbiAgICAgIH0sXG4gICAgICB0bzogXCJ0YWtrZXItbWVtZXhcIixcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8qKiDpgbjmip7nr4Tlm7LjgavlkKvjgb7jgozjgovooYzjgYvjgqvjg7zjgr3jg6vjgYzjgYTjgovooYzjgpLov5TjgZlcbiAqXG4gKiBwb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci9ibG9iLzAuNy42L2NvbW1hbmRzL2dldExpbmVSYW5nZS50c1xuICovXG5jb25zdCBnZXRMaW5lUmFuZ2UgPSAoKTogcmVhZG9ubHkgW251bWJlciwgbnVtYmVyXSA9PiB7XG4gIGNvbnN0IHsgc2VsZWN0aW9uUmFuZ2U6IHsgc3RhcnQsIGVuZCB9LCBzZWxlY3RlZFRleHQsIHBvc2l0aW9uIH0gPSBjYXJldCgpO1xuICByZXR1cm4gc2VsZWN0ZWRUZXh0ID09PSBcIlwiXG4gICAgPyBbcG9zaXRpb24ubGluZSwgcG9zaXRpb24ubGluZV1cbiAgICA6IHN0YXJ0LmxpbmUgPiBlbmQubGluZVxuICAgID8gW2VuZC5saW5lLCBzdGFydC5saW5lXVxuICAgIDogW3N0YXJ0LmxpbmUsIGVuZC5saW5lXSBhcyBjb25zdDtcbn07XG4iLCAiaW1wb3J0IHtcbiAgYWRkVGFzaywgc3RhcnRUYXNrLCBlbmRUYXNrLCBwb3N0ZXJpb3JpRW5kVGFzayxcbiAgd2Fsa0RheSwgbW92ZVRvZGF5LCBmb3JtYXRcbn0gZnJvbSBcIi4uL3Rha2tlcjk5JTJGdGFra2VyLXNjaGVkdWxlci9kZXBzLnRzXCI7XG5pbXBvcnQgeyBTY3JhcGJveCB9IGZyb20gXCIuLi9zY3JhcGJveC1qcCUyRnR5cGVzL3VzZXJzY3JpcHQudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5jb25zdCBwZCA9IChlOiBFdmVudCkgPT4gZS5wcmV2ZW50RGVmYXVsdCgpO1xuY29uc3Qgc3AgPSAoZTogRXZlbnQpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbmV4cG9ydCBjb25zdCB0YXNrID0ge1xuICBcIjxBLWE+PEEtYT5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7YWRkVGFzaygpOyB9LFxuICBcIjxBLWE+PEEtcz5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7c3RhcnRUYXNrKCk7IH0sXG4gIFwiPEEtYT48QS1lPlwiOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4geyBwZChlKTtzcChlKTtlbmRUYXNrKCk7IH0sXG4gIFwiPEEtYT48QS0wPlwiOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4geyBwZChlKTtzcChlKTtwb3N0ZXJpb3JpRW5kVGFzaygpOyB9LFxuICBcIjxBLWE+PEEtMT5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7d2Fsa0RheSgxKTsgfSxcbiAgXCI8QS1hPjxBLXQ+XCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7IHBkKGUpO3NwKGUpO21vdmVUb2RheSgpOyB9LFxuICBcIjxBLWE+PEEtUz5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoc2NyYXBib3guTGF5b3V0ICE9PSBcInBhZ2VcIikgcmV0dXJuO1xuICAgIHBkKGUpO3NwKGUpO1xuICAgIGZvcm1hdChzY3JhcGJveC5Qcm9qZWN0Lm5hbWUsIHNjcmFwYm94LlBhZ2UudGl0bGUpO1xuICB9LFxufTsiLCAiLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tLml0ZXJhYmxlXCIgLz5cblxuaW1wb3J0IHtcbiAgY2FyZXQsIGdldENoYXJET00sIGdldExpbmVET00sIHByZXNzLCBpbnNlcnRUZXh0LFxuICBnb0hlYWRMaW5lLCBnb0xhc3RMaW5lLFxuICBzY3JvbGxVcCwgc2Nyb2xsRG93bixcbiAgdXNlU3RhdHVzQmFyLFxufSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvZG9tLnRzXCI7XG5pbXBvcnQgeyBzZXREZWJ1Z01vZGUgfSBmcm9tIFwiLi4vdGFra2VyOTklMkZTY3JhcEJpbmRpbmdzL21vZC50c1wiO1xuXG5jb25zdCBwZCA9IChlOiBFdmVudCkgPT4gZS5wcmV2ZW50RGVmYXVsdCgpO1xuY29uc3Qgc3AgPSAoZTogRXZlbnQpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbmltcG9ydCB7IHBvcHVwTWVudSB9IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcblxuY29uc3QgY2xpY2tQb3B1cCA9IChlOiBLZXlib2FyZEV2ZW50LCBidXR0b25OYW1lOiBzdHJpbmcgfCBSZWdFeHApOiB2b2lkID0+IHtcbiAgY29uc3QgYnV0dG9ucyA9IHBvcHVwTWVudSgpPy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPy4oXCJidXR0b25cIik7XG4gIGlmICghYnV0dG9ucykgcmV0dXJuO1xuICBjb25zdCBidXR0b24gPSBbLi4uYnV0dG9uc10uZmluZChcbiAgICAoYnV0dG9uKSA9PiBidXR0b25OYW1lIGluc3RhbmNlb2YgUmVnRXhwID9cbiAgICAgIGJ1dHRvbk5hbWUudGVzdChidXR0b24udGV4dENvbnRlbnQgPz8gXCJcIikgOlxuICAgICAgYnV0dG9uLnRleHRDb250ZW50ID09PSBidXR0b25OYW1lXG4gICk7XG4gIGlmICghKGJ1dHRvbiBpbnN0YW5jZW9mIEhUTUxEaXZFbGVtZW50KSkgcmV0dXJuO1xuICBpZiAoZS50YXJnZXQgIT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHJldHVybjtcbiAgcGQoZSk7c3AoZSk7XG4gIGJ1dHRvbi5jbGljaygpO1xufTtcblxuY29uc3QgcG9wdXAgPSB7XG4gIC8vIOikh+aVsOihjOaJk+OBoea2iOOBl+e3mlxuICBcIi1cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IGNsaWNrUG9wdXAoZSwgXCJcXHVmMGNjXCIpLFxuICAvLyDjg6rjg7Pjgq/jgpLlpJbjgZlcbiAgXCJdXCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiBjbGlja1BvcHVwKGUsIFwiXFx1ZjEyN1wiKSxcbiAgXCJjXCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiBjbGlja1BvcHVwKGUsIFwiQ29weSBwbGFpblwiKSxcbiAgLy8g5pWw5byP6KiY5rOV44Gr44GZ44KLXG4gIFwiJFwiOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4gY2xpY2tQb3B1cChlLCBcIlxcdWY2OThcIiksXG4gIC8vIHRha2tlci1ib29rc+eUqFxuICBcIntcIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IGNsaWNrUG9wdXAoZSwgL3t7Y1xcZCt9fS8pLFxuICBcIn1cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IGNsaWNrUG9wdXAoZSwgXCJyZXNldCBjbG96ZVwiKSxcbiAgXCJuXCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiBjbGlja1BvcHVwKGUsIFwibWFrZSBub3RlXCIpLFxufTtcblxuY29uc3QgbmF2aWdhdGlvbiA9IHtcbiAgLy8g44Oq44Oz44Kv44KS6LiP44KAXG4gIFwiPEMtXT5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBjb25zdCB7IHBvc2l0aW9uOiB7IGxpbmUsIGNoYXIgfSB9ID0gY2FyZXQoKTtcbiAgICBjb25zdCBhID0gZ2V0Q2hhckRPTShsaW5lLCBjaGFyKT8uY2xvc2VzdChcImEucGFnZS1saW5rXCIpXG4gICAgICAvLyDjgarjgYvjgaPjgZ/jgonjgZ3jga7ooYzjga7kuK3jgafkuIDnlarlhYjpoK3jga7jg6rjg7Pjgq/jgpLouI/jgoBcbiAgICAgID8/IGdldExpbmVET00obGluZSk/LnF1ZXJ5U2VsZWN0b3I/LihcImEucGFnZS1saW5rXCIpO1xuICAgIGlmICghKGEgaW5zdGFuY2VvZiBIVE1MQW5jaG9yRWxlbWVudCkpIHJldHVybjtcbiAgICBwZChlKTtzcChlKTtcbiAgICBhLmNsaWNrKCk7XG4gIH0sXG4gIFwiPEMtbz5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7aGlzdG9yeS5iYWNrKCk7IH0sXG59O1xuXG5jb25zdCBtb3Rpb24gPSB7XG4gIFwiPEMtaG9tZT5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7Z29IZWFkTGluZSgpOyB9LFxuICBcIjxDLWVuZD5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7Z29MYXN0TGluZSgpOyB9LFxufTtcblxuaW1wb3J0IHsgbWFrZU5ld1BhZ2UgfSBmcm9tIFwiLi4vY3VzdG9tLW5ldy1wYWdlL21vZC50c1wiO1xuaW1wb3J0IHtcbiAgbmV3UGFnZUhvb2ssXG4gIHNwbGl0dGVkTGlua0hvb2ssXG4gIHRhc2tMaW5lSG9vayxcbn0gZnJvbSBcIi4uL2Zvci1jdXN0b20tbmV3LXBhZ2UvbW9kLnRzXCI7XG5pbXBvcnQge1xuICBvdXRkZW50TGluZXMsIGRvd25MaW5lcywgdXBMaW5lcywgaW5kZW50TGluZXMsXG4gIG91dGRlbnRCbG9ja3MsIGRvd25CbG9ja3MsIHVwQmxvY2tzLCBpbmRlbnRCbG9ja3MsXG59IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcbmltcG9ydCB7IFNjcmFwYm94IH0gZnJvbSBcIi4uL3NjcmFwYm94LWpwJTJGdHlwZXMvdXNlcnNjcmlwdC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmNvbnN0IGhvb2tzID0gW3Rhc2tMaW5lSG9vaywgbmV3UGFnZUhvb2ssIHNwbGl0dGVkTGlua0hvb2tdO1xuY29uc3QgZWRpdCA9IHtcbiAgXCI8Qy1YPlwiOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGNvbnN0IHByb2plY3QgPSB3aW5kb3cucHJvbXB0KFwiQ3JlYXRlIGEgbmV3IHBhZ2UgYXRcIiwgc2NyYXBib3guUHJvamVjdC5uYW1lKTtcbiAgICBpZiAoIXByb2plY3QpIHJldHVybjtcbiAgICBwZChlKTtzcChlKTtcbiAgICBtYWtlTmV3UGFnZSh7IHByb2plY3QsIG1vZGU6IFwic2VsZlwiLCBob29rcyB9KT8uKCk7XG4gIH0sXG4gIFwiPEMtRD5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBjb25zdCBwcm9qZWN0ID0gd2luZG93LnByb21wdChcIkNyZWF0ZSBhIG5ldyBwYWdlIGF0XCIsIHNjcmFwYm94LlByb2plY3QubmFtZSk7XG4gICAgaWYgKCFwcm9qZWN0KSByZXR1cm47XG4gICAgcGQoZSk7c3AoZSk7XG4gICAgbWFrZU5ld1BhZ2UoeyBwcm9qZWN0LCBtb2RlOiBcIm5vb3BlblwiLCBob29rcyB9KT8uKCk7XG4gIH0sXG4gIFwiPEMtaD5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7b3V0ZGVudExpbmVzKCk7IH0sXG4gIFwiPEMtaj5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7ZG93bkxpbmVzKCk7IH0sXG4gIFwiPEMtaz5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7dXBMaW5lcygpOyB9LFxuICBcIjxDLWw+XCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7IHBkKGUpO3NwKGUpO2luZGVudExpbmVzKCk7IH0sXG4gIFwiPEEtaD5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7b3V0ZGVudEJsb2NrcygpOyB9LFxuICBcIjxBLWo+XCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7IHBkKGUpO3NwKGUpO2Rvd25CbG9ja3MoKTsgfSxcbiAgXCI8QS1rPlwiOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4geyBwZChlKTtzcChlKTt1cEJsb2NrcygpOyB9LFxuICBcIjxBLWw+XCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7IHBkKGUpO3NwKGUpO2luZGVudEJsb2NrcygpOyB9LFxufTtcblxuaW1wb3J0IHsgbGlnaHRGb3JtYXQsIGFkZERheXMgfSBmcm9tIFwiLi4vZGF0ZS1mbnMvbW9kLnRzXCI7XG5cbi8vIHRpbWVzdGFtcOOCkueEoeWKueWMluOBmeOCi1xuLy8gYWx0K3Tjga7oqqTli5XkvZzjgpLpmLLmraLjgZnjgotcbi8vIEB0cy1pZ25vcmUgc2NyYXBib3gtanAvdHlwZXPjga7jg5DjgrBcbnNjcmFwYm94LlRpbWVTdGFtcC5yZW1vdmVBbGxGb3JtYXRzKCk7XG5cbmNvbnN0IHRpbWVzdGFtcCA9IHtcbiAgXCI8QS10PjxBLXQ+XCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgcGQoZSk7c3AoZSk7XG4gICAgaW5zZXJ0VGV4dChsaWdodEZvcm1hdChuZXcgRGF0ZSgpLCAnI3l5eXktTU0tZGQgSEg6bW06c3MgJykpO1xuICB9LFxuICBcIjxBLXQ+PEEtaj5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBwZChlKTtzcChlKTtcbiAgICBpbnNlcnRUZXh0KGxpZ2h0Rm9ybWF0KG5ldyBEYXRlKCksICd5eXl5LU1NLWRkIEhIOm1tOnNzICcpKTtcbiAgfSxcbiAgXCI8QS10PjxBLWs+XCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgcGQoZSk7c3AoZSk7XG4gICAgaW5zZXJ0VGV4dChsaWdodEZvcm1hdChuZXcgRGF0ZSgpLCAnSEg6bW06c3MgJykpO1xuICB9LFxuICBcIjxBLXQ+PEEtbD5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBwZChlKTtzcChlKTtcbiAgICBpbnNlcnRUZXh0KGxpZ2h0Rm9ybWF0KG5ldyBEYXRlKCksICd5eXl5LU1NLWRkJykpO1xuICB9LFxufTtcblxuaW1wb3J0IHsgdGFza0NvbW1vbiB9IGZyb20gXCIuL3Rhc2stY29tbW9uLnRzXCI7XG5cbmV4cG9ydCB7IHRhc2sgfSBmcm9tIFwiLi90YXNrLnRzXCI7XG5leHBvcnQgY29uc3QgY29uZmlnID0ge1xuICAuLi5wb3B1cCxcbiAgLi4ubmF2aWdhdGlvbixcbiAgLi4ubW90aW9uLFxuICAuLi5lZGl0LFxuICAuLi50aW1lc3RhbXAsXG4gIC4uLnRhc2tDb21tb24sXG59O1xuIiwgImltcG9ydCB7IE1vdXNldHJhcCB9IGZyb20gXCIuLi90YWtrZXI5OSUyRlNjcmFwQmluZGluZ3MvbW9kLnRzXCI7XG5pbXBvcnQge1xuICB1c2VTdGF0dXNCYXIsXG4gIGFkZFRleHRJbnB1dEV2ZW50TGlzdGVuZXIsXG4gIHJlbW92ZVRleHRJbnB1dEV2ZW50TGlzdGVuZXIsXG59IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcbmltcG9ydCB7IGNvbmZpZywgdGFzayB9IGZyb20gXCIuLi90YWtrZXI5OSUyRlNjcmFwQmluZGluZ3Mtc2V0dGluZ3MvY29uZmlnLnRzXCI7XG5pbXBvcnQgeyBTY3JhcGJveCB9IGZyb20gXCIuLi9zY3JhcGJveC1qcCUyRnR5cGVzL3VzZXJzY3JpcHQudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5jb25zdCB7IHJlbmRlciB9ID0gdXNlU3RhdHVzQmFyKCk7XG5sZXQgYW5pbWF0aW9uSWQ6IG51bWJlcnwgdW5kZWZpbmVkO1xuY29uc3Qgb25TZXF1ZW5jZVVwZGF0ZSA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgaWYoYW5pbWF0aW9uSWQgIT09IHVuZGVmaW5lZCkgY2FuY2VsQW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uSWQpO1xuICBhbmltYXRpb25JZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiByZW5kZXIoXG4gICAgeyB0eXBlOiBcInRleHRcIiwgdGV4dCwgfVxuICApKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzY3JhcEJpbmRpbmdzID0gbmV3IE1vdXNldHJhcChcbiAge1xuICAgIGFkZEV2ZW50TGlzdGVuZXI6IGFkZFRleHRJbnB1dEV2ZW50TGlzdGVuZXIsXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogcmVtb3ZlVGV4dElucHV0RXZlbnRMaXN0ZW5lcixcbiAgfSxcbiAge1xuICAgIG9uU2VxdWVuY2VVcGRhdGUsXG4gIH0sXG4pO1xuXG5jb25zdCBlcnJvcnMgPSBzY3JhcEJpbmRpbmdzLmJpbmQoe1xuICAuLi5jb25maWcsXG4gIC4uLihzY3JhcGJveC5Qcm9qZWN0Lm5hbWUgPT09IFwidGFra2VyLW1lbWV4XCIgPyB0YXNrIDoge30pLFxufSk7XG5cbmlmKGVycm9ycy5zaXplID4gMCkge1xuICBhbGVydChbLi4uZXJyb3JzLmVudHJpZXMoKV0ubWFwKFxuICAgIChbc2VxLCBtZXNzYWdlc10pID0+IGAke3NlcX06XFxuJHtcbiAgICAgIG1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4gYC0gJHttZXNzYWdlfWApLmpvaW4oXCJcXG5cIilcbiAgICB9YFxuICApLmpvaW4oXCJcXG5cIikpO1xufSIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIi8+XG5cbmltcG9ydCB0eXBlIHsgUHJvamVjdElkLCBVbml4VGltZSB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmltcG9ydCB7IGxpc3RQcm9qZWN0cyB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRXYXRjaExpc3QgPSBhc3luYyAoKTogUHJvbWlzZTxQcm9qZWN0SWRbXT4gPT4ge1xuICBjb25zdCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicHJvamVjdHNMYXN0QWNjZXNzZWRcIik7XG4gIGlmICghdmFsdWUpIHJldHVybiBbXTtcblxuICB0cnkge1xuICAgIGNvbnN0IGxpc3QgPSBKU09OLnBhcnNlKHZhbHVlKSBhcyBSZWNvcmQ8UHJvamVjdElkLCBVbml4VGltZT47XG4gICAgY29uc3QgaWRzID0gT2JqZWN0LmVudHJpZXMobGlzdCkuc29ydCgoWywgYV0sIFssIGJdKSA9PiBiIC0gYSkubWFwKChcbiAgICAgIFtwcm9qZWN0SWRdLFxuICAgICkgPT4gcHJvamVjdElkKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBsaXN0UHJvamVjdHMoW10pO1xuICAgIGlmICghcmVzdWx0Lm9rKSByZXR1cm4gaWRzO1xuICAgIGNvbnN0IGpvaW5lZElkcyA9IHJlc3VsdC52YWx1ZS5wcm9qZWN0cy5tYXAoKHByb2plY3QpID0+IHByb2plY3QuaWQpO1xuICAgIHJldHVybiBpZHMuZmlsdGVyKChpZCkgPT4gIWpvaW5lZElkcy5pbmNsdWRlcyhpZCkpO1xuICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgaWYgKCEoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSkgdGhyb3cgZTtcbiAgICByZXR1cm4gW107XG4gIH1cbn07XG4iLCAiLy8gYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvYmxvYi8yN2IwOGQzMDc4MDY0ZjJjYTNiMWUxOTJlZTIzMTM5NjEwN2ZhZmViL3R5cGVzL2thdGV4L2luZGV4LmQudHNcbi8vIE1vZGlmaWNhdGlvbnM6XG4vLyAtICRkZW5vIGZtdFxuLy8gLSBtYWNyb3M/OiBhbnkgLT4gbWFjcm9zPzogdW5rbm93blxuLy8gLSBhZGQgZGVuby1saW50LWlnbm9yZVxuLy9cbi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiLz5cblxuZXhwb3J0IGludGVyZmFjZSBUcnVzdENvbnRleHQge1xuICBjb21tYW5kOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBwcm90b2NvbDogc3RyaW5nO1xufVxuXG4vKiogRG9jdW1lbnRhdGlvbjogaHR0cHM6Ly9rYXRleC5vcmcvZG9jcy9vcHRpb25zLmh0bWwgKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2F0ZXhPcHRpb25zIHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgbWF0aCB3aWxsIGJlIHJlbmRlcmVkIGluIGRpc3BsYXkgbW9kZVxuICAgKiAobWF0aCBpbiBkaXNwbGF5IHN0eWxlIGFuZCBjZW50ZXIgbWF0aCBvbiBwYWdlKVxuICAgKlxuICAgKiBJZiBgZmFsc2VgLCBtYXRoIHdpbGwgYmUgcmVuZGVyZWQgaW4gaW5saW5lIG1vZGVcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc3BsYXlNb2RlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIERldGVybWluZXMgdGhlIG1hcmt1cCBsYW5ndWFnZSBvZiB0aGUgb3V0cHV0LiBUaGUgdmFsaWQgY2hvaWNlcyBhcmU6XG4gICAqIC0gYGh0bWxgOiBPdXRwdXRzIEthVGVYIGluIEhUTUwgb25seS5cbiAgICogLSBgbWF0aG1sYDogT3V0cHV0cyBLYVRlWCBpbiBNYXRoTUwgb25seS5cbiAgICogLSBgaHRtbEFuZE1hdGhtbGA6IE91dHB1dHMgSFRNTCBmb3IgdmlzdWFsIHJlbmRlcmluZ1xuICAgKiAgIGFuZCBpbmNsdWRlcyBNYXRoTUwgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdodG1sQW5kTWF0aG1sJ1xuICAgKi9cbiAgb3V0cHV0PzogXCJodG1sXCIgfCBcIm1hdGhtbFwiIHwgXCJodG1sQW5kTWF0aG1sXCIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGRpc3BsYXkgbWF0aCBoYXMgXFx0YWdzIHJlbmRlcmVkIG9uIHRoZSBsZWZ0XG4gICAqIGluc3RlYWQgb2YgdGhlIHJpZ2h0LCBsaWtlIFxcdXNlcGFja2FnZVtsZXFub117YW1zbWF0aH0gaW4gTGFUZVguXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBsZXFubz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGRpc3BsYXkgbWF0aCByZW5kZXJzIGZsdXNoIGxlZnQgd2l0aCBhIDJlbSBsZWZ0IG1hcmdpbixcbiAgICogbGlrZSBcXGRvY3VtZW50Y2xhc3NbZmxlcW5dIGluIExhVGVYIHdpdGggdGhlIGFtc21hdGggcGFja2FnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZsZXFuPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgS2FUZVggd2lsbCB0aHJvdyBhIGBQYXJzZUVycm9yYCB3aGVuXG4gICAqIGl0IGVuY291bnRlcnMgYW4gdW5zdXBwb3J0ZWQgY29tbWFuZCBvciBpbnZhbGlkIExhVGV4XG4gICAqXG4gICAqIElmIGBmYWxzZWAsIEthVGVYIHdpbGwgcmVuZGVyIHVuc3VwcG9ydGVkIGNvbW1hbmRzIGFzXG4gICAqIHRleHQsIGFuZCByZW5kZXIgaW52YWxpZCBMYVRlWCBhcyBpdHMgc291cmNlIGNvZGUgd2l0aFxuICAgKiBob3ZlciB0ZXh0IGdpdmluZyB0aGUgZXJyb3IsIGluIGNvbG9yIGdpdmVuIGJ5IGVycm9yQ29sb3JcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgdGhyb3dPbkVycm9yPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEEgQ29sb3Igc3RyaW5nIGdpdmVuIGluIGZvcm1hdCBgI1hYWGAgb3IgYCNYWFhYWFhgXG4gICAqL1xuICBlcnJvckNvbG9yPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQSBjb2xsZWN0aW9uIG9mIGN1c3RvbSBtYWNyb3MuXG4gICAqXG4gICAqIFNlZSBgc3JjL21hY3Jvcy5qc2AgZm9yIGl0cyB1c2FnZVxuICAgKi9cbiAgbWFjcm9zPzogdW5rbm93bjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIG1pbmltdW0gdGhpY2tuZXNzLCBpbiBlbXMsIGZvciBmcmFjdGlvbiBsaW5lcyxcbiAgICogXFxzcXJ0IHRvcCBsaW5lcywge2FycmF5fSB2ZXJ0aWNhbCBsaW5lcywgXFxobGluZSwgXFxoZGFzaGxpbmUsXG4gICAqIFxcdW5kZXJsaW5lLCBcXG92ZXJsaW5lLCBhbmQgdGhlIGJvcmRlcnMgb2YgXFxmYm94LCBcXGJveGVkLCBhbmRcbiAgICogXFxmY29sb3Jib3guXG4gICAqL1xuICBtaW5SdWxlVGhpY2tuZXNzPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogSWYgYHRydWVgLCBgXFxjb2xvcmAgd2lsbCB3b3JrIGxpa2UgTGFUZVgncyBgXFx0ZXh0Y29sb3JgXG4gICAqIGFuZCB0YWtlcyAyIGFyZ3VtZW50c1xuICAgKlxuICAgKiBJZiBgZmFsc2VgLCBgXFxjb2xvcmAgd2lsbCB3b3JrIGxpa2UgTGFUZVgncyBgXFxjb2xvcmBcbiAgICogYW5kIHRha2VzIDEgYXJndW1lbnRcbiAgICpcbiAgICogSW4gYm90aCBjYXNlcywgYFxcdGV4dGNvbG9yYCB3b3JrcyBhcyBpbiBMYVRlWFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY29sb3JJc1RleHRDb2xvcj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBBbGwgdXNlci1zcGVjaWZpZWQgc2l6ZXMgd2lsbCBiZSBjYXBlZCB0byBgbWF4U2l6ZWAgZW1zXG4gICAqXG4gICAqIElmIHNldCB0byBJbmZpbml0eSwgdXNlcnMgY2FuIG1ha2UgZWxlbWVudHMgYW5kIHNwYWNlXG4gICAqIGFyYml0cmFyaWx5IGxhcmdlXG4gICAqXG4gICAqIEBkZWZhdWx0IEluZmluaXR5XG4gICAqL1xuICBtYXhTaXplPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogTGltaXQgdGhlIG51bWJlciBvZiBtYWNybyBleHBhbnNpb25zIHRvIHNwZWNpZmllZCBudW1iZXJcbiAgICpcbiAgICogSWYgc2V0IHRvIGBJbmZpbml0eWAsIG1hcmNvIGV4cGFuZGVyIHdpbGwgdHJ5IHRvIGZ1bGx5IGV4cGFuZFxuICAgKiBhcyBpbiBMYVRleFxuICAgKlxuICAgKiBAZGVmYXVsdCAxMDAwXG4gICAqL1xuICBtYXhFeHBhbmQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBJZiBgZmFsc2VgIG9yIGBcImlnbm9yZVwiYCwgYWxsb3cgZmVhdHVyZXMgdGhhdCBtYWtlXG4gICAqIHdyaXRpbmcgaW4gTGFUZXggY29udmVuaWVudCBidXQgbm90IHN1cHBvcnRlZCBieSBMYVRleFxuICAgKlxuICAgKiBJZiBgdHJ1ZWAgb3IgYFwiZXJyb3JcImAsIHRocm93IGFuIGVycm9yIGZvciBzdWNoIHRyYW5zZ3Jlc3Npb25zXG4gICAqXG4gICAqIElmIGBcIndhcm5cImAsIHdhcm4gYWJvdXQgYmVoYXZpb3IgdmlhIGBjb25zb2xlLndhcm5gXG4gICAqXG4gICAqIEBkZWZhdWx0IFwid2FyblwiXG4gICAqL1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIGJhbi10eXBlc1xuICBzdHJpY3Q/OiBib29sZWFuIHwgc3RyaW5nIHwgRnVuY3Rpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBJZiBgZmFsc2VgIChkbyBub3QgdHJ1c3QgaW5wdXQpLCBwcmV2ZW50IGFueSBjb21tYW5kcyB0aGF0IGNvdWxkIGVuYWJsZSBhZHZlcnNlIGJlaGF2aW9yLCByZW5kZXJpbmcgdGhlbSBpbnN0ZWFkIGluIGVycm9yQ29sb3IuXG4gICAqXG4gICAqIElmIGB0cnVlYCAodHJ1c3QgaW5wdXQpLCBhbGxvdyBhbGwgc3VjaCBjb21tYW5kcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHRydXN0PzogYm9vbGVhbiB8ICgoY29udGV4dDogVHJ1c3RDb250ZXh0KSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFBsYWNlIEthVGVYIGNvZGUgaW4gdGhlIGdsb2JhbCBncm91cC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGdsb2JhbEdyb3VwPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLYXRleCB7XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgVGVYIGV4cHJlc3Npb24gaW50byB0aGUgc3BlY2lmaWVkIERPTSBlbGVtZW50XG4gICAqIEBwYXJhbSB0ZXggQSBUZVggZXhwcmVzc2lvblxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGludG9cbiAgICogQHBhcmFtIG9wdGlvbnMgS2FUZVggb3B0aW9uc1xuICAgKi9cbiAgcmVuZGVyKFxuICAgIHRleDogc3RyaW5nLFxuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIG9wdGlvbnM/OiBLYXRleE9wdGlvbnMsXG4gICk6IHZvaWQ7XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgVGVYIGV4cHJlc3Npb24gaW50byBhbiBIVE1MIHN0cmluZ1xuICAgKiBAcGFyYW0gdGV4IEEgVGVYIGV4cHJlc3Npb25cbiAgICogQHBhcmFtIG9wdGlvbnMgS2FUZVggb3B0aW9uc1xuICAgKi9cbiAgcmVuZGVyVG9TdHJpbmcoXG4gICAgdGV4OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IEthdGV4T3B0aW9ucyxcbiAgKTogc3RyaW5nO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIGthdGV4OiBLYXRleDtcbiAgfVxufVxuXG4vLyBkZW5vLWxpbnQtaWdub3JlIG5vLW5hbWVzcGFjZVxuZXhwb3J0IG5hbWVzcGFjZSBrYXRleCB7XG4gIGV4cG9ydCBkZWNsYXJlIGNsYXNzIFBhcnNlRXJyb3IgaW1wbGVtZW50cyBFcnJvciB7XG4gICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIGxleGVyOiBhbnksIHBvc2l0aW9uOiBudW1iZXIpO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgcG9zaXRpb246IG51bWJlcjtcbiAgfVxufVxuXG4vLyBUaGlzIGlzIGFuIG9yaWdpbmFsIGNvZGUgYmVsb3dcbmNvbnN0IGRlZmF1bHRWZXJzaW9uID0gXCIwLjEzLjNcIjtcbmxldCBpbml0aWFsaXplZDogUHJvbWlzZTxLYXRleD4gfCB1bmRlZmluZWQ7XG5leHBvcnQgY29uc3QgaW1wb3J0S2FUZVggPSBhc3luYyAoXG4gIHZlcnNpb24gPSBkZWZhdWx0VmVyc2lvbixcbik6IFByb21pc2U8S2F0ZXg+ID0+IHtcbiAgY29uc3QgdXJsID1cbiAgICBgaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvS2FUZVgvJHt2ZXJzaW9ufS9rYXRleC5taW4uanNgO1xuXG4gIC8vIOOBmeOBp+OBqzxzY3JpcHQ+44GM5L2c44KJ44KM44Gm44GE44Gf5aC05ZCI44Gv44CBYHdpbmRvdy5rYXRleGDjgYznlJ/jgYjjgovjgb7jgaflvoXjgaRcbiAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtzcmM9XCIke3VybH1cIl1gKSkge1xuICAgIGlmICh3aW5kb3cua2F0ZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh3aW5kb3cua2F0ZXgpO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8S2F0ZXg+KChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgaWYgKHdpbmRvdy5rYXRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuICAgICAgICByZXNvbHZlKHdpbmRvdy5rYXRleCk7XG4gICAgICB9LCA1MDApO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgc2NyaXB0LnNyYyA9IHVybDtcbiAgaW5pdGlhbGl6ZWQgPz89IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBzY3JpcHQub25sb2FkID0gKCkgPT4gcmVzb2x2ZSh3aW5kb3cua2F0ZXgpO1xuICAgIHNjcmlwdC5vbmVycm9yID0gKGUpID0+IHJlamVjdChlKTtcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZChzY3JpcHQpO1xuICB9KTtcblxuICByZXR1cm4gaW5pdGlhbGl6ZWQ7XG59O1xuXG5leHBvcnQgeyBkZWZhdWx0VmVyc2lvbiBhcyB2ZXJzaW9uIH07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuaW1wb3J0IHtcbiAgUmVmLFxuICBTdGF0ZVVwZGF0ZXIsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBpbXBvcnRLYVRlWCwgS2F0ZXhPcHRpb25zIH0gZnJvbSBcIi4vZGVwcy9rYXRleC50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlRXJyb3Ige1xuICBuYW1lOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgcG9zaXRpb246IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VLYVRlWFJlc3VsdCB7XG4gIHJlZjogUmVmPEhUTUxFbGVtZW50PjtcbiAgZXJyb3I6IHN0cmluZztcbiAgc2V0Rm9ybXVsYTogU3RhdGVVcGRhdGVyPHN0cmluZz47XG59XG5cbmV4cG9ydCBjb25zdCB1c2VLYVRlWCA9IChcbiAgX2Zvcm11bGE6IHN0cmluZyxcbiAgb3B0aW9uczogS2F0ZXhPcHRpb25zID0ge30sXG4pOiBVc2VLYVRlWFJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFtmb3JtdWxhLCBzZXRGb3JtdWxhXSA9IHVzZVN0YXRlKF9mb3JtdWxhKTtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxzdHJpbmc+KFwiXCIpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVuZGVyIH0gPSBhd2FpdCBpbXBvcnRLYVRlWCgpO1xuICAgICAgaWYgKCFyZWYuY3VycmVudCkgcmV0dXJuO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVuZGVyKGZvcm11bGEsIHJlZi5jdXJyZW50LCBvcHRpb25zKTtcbiAgICAgICAgc2V0RXJyb3IoXCJcIik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5uYW1lID09PSBcIlBhcnNlRXJyb3JcIikge1xuICAgICAgICAgIC8vIHJlbW92ZSBhbiB1bm5lY2Vzc2FyeSB0b2tlblxuICAgICAgICAgIHNldEVycm9yKGUubWVzc2FnZS5zbGljZShcIkthVGVYIHBhcnNlIGVycm9yOiBcIi5sZW5ndGgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoKTtcbiAgfSwgW2Zvcm11bGFdKTtcblxuICByZXR1cm4geyByZWYsIGVycm9yLCBzZXRGb3JtdWxhIH07XG59O1xuIiwgImV4cG9ydCB0eXBlIEZuPFQ+ID0gKCkgPT4gUHJvbWlzZTxUPjtcblxuLyoqIOWQjOaZguOBq+S4gOWumuaVsOOBoOOBkVByb21pc2XjgpLotbDjgonjgZvjgovlh73mlbBcbiAqXG4gKiDmnIDlvozjgavov73liqDjgZfjgZ9qb2LjgYvjgonlrp/ooYzjgZnjgotcbiAqXG4gKiBAcGFyYW0gbWF4IOWQjOaZguOBq+WLleOBi+OBmVByb21pc2Xjga7mnIDlpKfmlbBcbiAqIEByZXR1cm4gam9i44KS5YuV44GL44GX44Gm57WQ5p6c44KS6L+U44GZ5Ye95pWwXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlVGhyb3R0bGUgPSA8VD4obWF4OiBudW1iZXIpOiAoam9iOiBGbjxUPikgPT4gUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHF1ZXVlOiBbXG4gICAgRm48VD4sXG4gICAgKHZhbHVlOiBUKSA9PiB2b2lkLFxuICAgIChlcnJvcjogdW5rbm93bikgPT4gdm9pZCxcbiAgXVtdID0gW107XG4gIGNvbnN0IHBlbmRpbmdzID0gbmV3IFNldDxQcm9taXNlPHVua25vd24+PigpO1xuXG4gIGNvbnN0IHJ1bk5leHQgPSAocHJldjogUHJvbWlzZTx1bmtub3duPikgPT4ge1xuICAgIHBlbmRpbmdzLmRlbGV0ZShwcmV2KTtcbiAgICBjb25zdCB0YXNrID0gcXVldWUucG9wKCk7XG4gICAgaWYgKCF0YXNrKSByZXR1cm47XG4gICAgY29uc3QgcHJvbWlzZTogUHJvbWlzZTx2b2lkPiA9IHRhc2tbMF0oKVxuICAgICAgLmZpbmFsbHkoKCkgPT4gcnVuTmV4dChwcm9taXNlKSlcbiAgICAgIC50aGVuKChyZXN1bHQpID0+IHRhc2tbMV0ocmVzdWx0KSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHRhc2tbMl0oZXJyb3IpKTtcbiAgICBwZW5kaW5ncy5hZGQocHJvbWlzZSk7XG4gIH07XG5cbiAgcmV0dXJuIChqb2IpID0+IHtcbiAgICBpZiAocGVuZGluZ3Muc2l6ZSA8IG1heCkge1xuICAgICAgY29uc3QgcHJvbWlzZSA9IGpvYigpLmZpbmFsbHkoKCkgPT4gcnVuTmV4dChwcm9taXNlKSk7XG4gICAgICBwZW5kaW5ncy5hZGQocHJvbWlzZSk7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHF1ZXVlLnB1c2goW2pvYiwgcmVzb2x2ZSwgcmVqZWN0XSk7XG4gICAgfSk7XG4gIH07XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiLz5cblxuaW1wb3J0IHR5cGUgeyBVbml4VGltZSB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmltcG9ydCB7IHNsZWVwIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1zdGQudHNcIjtcbmltcG9ydCB7IGZpbmRMYXRlc3RDYWNoZSB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtc3RkLWJyb3dzZXIudHNcIjtcbmltcG9ydCB7IG1ha2VUaHJvdHRsZSB9IGZyb20gXCIuL3Rocm90dGxlLnRzXCI7XG5cbmNvbnN0IGNhY2hlVmVyc2lvbiA9IFwiMC42LjVcIjsgLy8gcmVsZWFzZeWJjeOBq+abtOaWsOOBmeOCi1xuY29uc3QgY2FjaGVOYW1lID0gYFNjcmFwQnViYmxlLSR7Y2FjaGVWZXJzaW9ufWA7XG5jb25zdCBjYWNoZSA9IGF3YWl0IGdsb2JhbFRoaXMuY2FjaGVzLm9wZW4oY2FjaGVOYW1lKTtcblxuLy8g5Y+k44GEY2FjaGXjgYzjgYLjgaPjgZ/jgonliYrpmaTjgZfjgabjgYrjgY9cbi8vIOS7luOBruaTjeS9nOOCkuODluODreODg+OCr+OBmeOCi+W/heimgeOBr+OBquOBhFxuKGFzeW5jICgpID0+IHtcbiAgZm9yIChjb25zdCBuYW1lIG9mIGF3YWl0IGdsb2JhbFRoaXMuY2FjaGVzLmtleXMoKSkge1xuICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoXCJTY3JhcEJ1YmJsZS1cIikgJiYgbmFtZSAhPT0gY2FjaGVOYW1lKSB7XG4gICAgICBhd2FpdCBnbG9iYWxUaGlzLmNhY2hlcy5kZWxldGUobmFtZSk7XG4gICAgICBjb25zb2xlLmxvZyhgW1NjcmFwQnViYmxlXSBkZWxldGVkIG9sZCBjYWNoZSA6XCIke25hbWV9XCJgKTtcbiAgICB9XG4gIH1cbn0pKCk7XG5cbi8qKiDlkIzmmYLjgasz44Gk44G+44GnZmV0Y2jjgafjgY3jgovjgojjgYbjgavjgZnjgovlh73mlbAgKi9cbmNvbnN0IHRocm90dGxlID0gbWFrZVRocm90dGxlPFJlc3BvbnNlPigzKTtcblxuZXhwb3J0IGludGVyZmFjZSBDYWNoZUZpcnN0RmV0Y2hPcHRpb25zIGV4dGVuZHMgQ2FjaGVRdWVyeU9wdGlvbnMge1xuICAvKiog5aSx5pWX44GX44GfcmVzcG9uc2XjgpJjYWNoZeOBq+S/neWtmOOBmeOCi+OBi+OBqeOBhuOBi1xuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgICjkv53lrZjjgZfjgarjgYQpXG4gICAqL1xuICBzYXZlRmFpbGVkUmVzcG9uc2U/OiBib29sZWFuO1xufVxuXG4vKiogY2FjaGXjgahuZXR3b3Jr44GL44KJ6aCG55Wq44GrcmVzcG9uc2XjgpLjgajjgaPjgabjgY/jgotcbiAqXG4gKiBuZXR3b3Jr44GL44KJ44Go44Gj44Gm44GT44Gq44GP44Gm44GE44GE44Go44GN44Gv44CB6YCU5Lit44GnaXRlcmF0b3LjgpJicmVha+OBmeOCjOOBsGZldGNo44GX44Gq44GEXG4gKlxuICogZmV0Y2jjga/lkIzmmYLjgasz5Zue44G+44Gn44GX44GL44Gn44GN44Gq44GE44KI44GG5Yi26ZmQ44GZ44KLXG4gKlxuICogQHBhcmFtIHJlcSDopoHmsYJcbiAqIEBwYXJhbSBvcHRpb25zIGNhY2hl44KS5o6i44GZ44Go44GN44Gu6Kit5a6aXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogY2FjaGVGaXJzdEZldGNoKFxuICByZXE6IFJlcXVlc3QsXG4gIG9wdGlvbnM/OiBDYWNoZUZpcnN0RmV0Y2hPcHRpb25zLFxuKTogQXN5bmNHZW5lcmF0b3I8cmVhZG9ubHkgW1wiY2FjaGVcIiB8IFwibmV0d29ya1wiLCBSZXNwb25zZV0sIHZvaWQsIHVua25vd24+IHtcbiAgLy8gY2FjaGXjgYvjgonov5TjgZlcbiAgLy8g44G+44Ga6Ieq5YmN44GuY2FjaGUgc3RvcmFnZeOBi+OCieWkseaVl+OBl+OBn3Jlc3BvbnNl44KS5Y+W5b6X44GX44CB44Gq44GR44KM44Gwc2NyYXBib3guaW/jga5jYWNoZeOBi+OCieato+W4uOOBqnJlc3BvbnNl44KS5o6i44GZXG4gIGNvbnN0IGNhY2hlUHJvbWlzZSA9XG4gICAgKChvcHRpb25zPy5zYXZlRmFpbGVkUmVzcG9uc2UgPyBjYWNoZS5tYXRjaChyZXEpIDogdW5kZWZpbmVkKSA/P1xuICAgICAgZmluZExhdGVzdENhY2hlKHJlcSwgb3B0aW9ucykpLnRoZW4oKHJlcykgPT4gW1wiY2FjaGVcIiwgcmVzXSBhcyBjb25zdCk7XG4gIHtcbiAgICBjb25zdCB0aW1lciA9IHNsZWVwKDEwMDApLnRoZW4oKCkgPT4gXCJ0aW1lb3V0XCIgYXMgY29uc3QpO1xuICAgIGNvbnN0IGZpcnN0ID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtjYWNoZVByb21pc2UsIHRpbWVyXSk7XG4gICAgaWYgKGZpcnN0ICE9PSBcInRpbWVvdXRcIikge1xuICAgICAgLy8gMeenkuS7peWGheOBq2NhY2hl44KS6Kqt44G/6L6844KB44Gf44KJ44CBY2FjaGXihpJuZXR3b3Jr44Gu6aCG44Gr6L+U44GZXG4gICAgICBpZiAoZmlyc3RbMV0pIHtcbiAgICAgICAgeWllbGQgW1wiY2FjaGVcIiwgZmlyc3RbMV1dO1xuICAgICAgfVxuICAgICAgLy8gbmV0d29ya+OBi+OCiei/lOOBmVxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhyb3R0bGUoKCkgPT4gZmV0Y2gocmVxKSk7XG4gICAgICBpZiAoIXJlcy5vayAmJiBvcHRpb25zPy5zYXZlRmFpbGVkUmVzcG9uc2UpIHtcbiAgICAgICAgLy8gc2NyYXBib3guaW/jga/lpLHmlZfjgZfjgZ9yZXNwb25zZeOCkmNhY2hl44GX44Gq44GE44Gu44Gn44CB6Ieq5YmN44GuY2FjaGXjgavmoLzntI3jgZfjgabjgYrjgY9cbiAgICAgICAgYXdhaXQgY2FjaGUucHV0KHJlcSwgcmVzLmNsb25lKCkpO1xuICAgICAgfVxuICAgICAgeWllbGQgW1wibmV0d29ya1wiLCByZXNdO1xuICAgIH1cbiAgfVxuXG4gIC8vIDHnp5LntYzjgaPjgabjgoJjYWNoZeOBruiqreOBv+i+vOOBv+OBjOe1guOCj+OCieOBquOBhOOBqOOBjeOBr+OAgWZldGNo44KS6LWw44KJ44Gb5aeL44KB44KLXG4gIGNvbnN0IG5ldHdvcmtQcm9taXNlID0gdGhyb3R0bGUoKCkgPT4gZmV0Y2gocmVxKSlcbiAgICAudGhlbigocmVzKSA9PiBbXCJuZXR3b3JrXCIsIHJlc10gYXMgY29uc3QpO1xuICBjb25zdCBbdHlwZSwgcmVzXSA9IGF3YWl0IFByb21pc2UucmFjZShbY2FjaGVQcm9taXNlLCBuZXR3b3JrUHJvbWlzZV0pO1xuXG4gIGlmICh0eXBlID09PSBcIm5ldHdvcmtcIikge1xuICAgIHlpZWxkIFt0eXBlLCByZXNdO1xuICAgIC8vIG5ldHdvcmtQcm9taXNl44GM5YWI44GrcmVzb2x2ZeOBl+OBn+OCieOAgWNhY2hlUHJvbWlzZeOBr3lpZWxk44Gb44Ga44Gr5o2o44Gm44KLXG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChyZXMpIHlpZWxkIFt0eXBlLCByZXNdO1xuICB5aWVsZCBhd2FpdCBuZXR3b3JrUHJvbWlzZTtcbn1cblxuLyoqIOacieWKueacn+mZkOWIh+OCjOOBrnJlc3BvbnNl44GL44Gp44GG44GL6Kq/44G544KLXG4gKlxuICogQHBhcmFtIHJlc3BvbnNlIOiqv+OBueOCi3Jlc3BvbnNlXG4gKiBAcGFyYW0gbWF4QWdlIOWvv+WRvSjljZjkvY3jga9zKVxuICovXG5leHBvcnQgY29uc3QgaXNFeHBpcmVkID0gKFxuICByZXNwb25zZTogUmVzcG9uc2UsXG4gIG1heEFnZTogVW5peFRpbWUsXG4pOiBib29sZWFuID0+IHtcbiAgY29uc3QgdXBkYXRlZCA9IG5ldyBEYXRlKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiRGF0ZVwiKSA/PyAwKS5nZXRUaW1lKCkgL1xuICAgIDEwMDA7XG4gIHJldHVybiB1cGRhdGVkICsgbWF4QWdlIDwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwO1xufTtcbiIsICJleHBvcnQgdHlwZSBMaXN0ZW5lcjxUPiA9IChldmVudDogVCkgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBFdmVudEVtaXR0ZXI8VCwgVT4ge1xuICAvKiogZXZlbnTjgpLnmbrooYzjgZnjgosgKi9cbiAgZGlzcGF0Y2g6IChldmVudE5hbWU6IFQsIHZhbHVlOiBVKSA9PiB2b2lkO1xuXG4gIC8qKiDnibnlrprjga5ldmVudOOBjOeZuueBq+OBl+OBn+OBqOOBjeOBq+Wun+ihjOOBmeOCi2xpc3RlbmVy44KS55m76Yyy44GZ44KLICovXG4gIG9uOiAoZXZlbnROYW1lOiBULCBsaXN0ZW5lcjogTGlzdGVuZXI8VT4pID0+IHZvaWQ7XG5cbiAgLyoqIGxpc3RlbmVy44Gu55m76Yyy44KS6Kej6Zmk44GZ44KLICovXG4gIG9mZjogKGV2ZW50TmFtZTogVCwgbGlzdGVuZXI6IExpc3RlbmVyPFU+KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgbWFrZUVtaXR0ZXIgPSA8VCwgVT4oKTogRXZlbnRFbWl0dGVyPFQsIFU+ID0+IHtcbiAgY29uc3QgbGlzdGVuZXJzTWFwID0gbmV3IE1hcDxULCBTZXQ8TGlzdGVuZXI8VT4+PigpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzcGF0Y2g6IChldmVudE5hbWUsIHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnNNYXAuZ2V0KGV2ZW50TmFtZSk7XG4gICAgICBpZiAoIWxpc3RlbmVycykgcmV0dXJuO1xuICAgICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMpIHtcbiAgICAgICAgbGlzdGVuZXIodmFsdWUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgb246IChldmVudE5hbWUsIGxpc3RlbmVyKSA9PiB7XG4gICAgICBjb25zdCBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnNNYXAuZ2V0KGV2ZW50TmFtZSkgPz8gbmV3IFNldDxMaXN0ZW5lcjxVPj4oKTtcbiAgICAgIGxpc3RlbmVycy5hZGQobGlzdGVuZXIpO1xuICAgICAgbGlzdGVuZXJzTWFwLnNldChldmVudE5hbWUsIGxpc3RlbmVycyk7XG4gICAgfSxcbiAgICBvZmY6IChldmVudE5hbWUsIGxpc3RlbmVyKSA9PiB7XG4gICAgICBjb25zdCBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnNNYXAuZ2V0KGV2ZW50TmFtZSk7XG4gICAgICBpZiAoIWxpc3RlbmVycykgcmV0dXJuO1xuICAgICAgbGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcik7XG4gICAgfSxcbiAgfTtcbn07XG4iLCAibGV0IGRlYnVnTW9kZTogYm9vbGVhbiB8IFNldDxzdHJpbmc+ID0gZmFsc2U7XG5cbi8qKiBjYWNoZeWRqOOCiuOBrmRlYnVn5Ye65Yqb44Gu5pyJ5Yq544O754Sh5Yq544Gu5YiH44KK5pu/44GI44KS6KGM44GGXG4gKlxuICogQHBhcmFtIG1vZGUgYHRydWVg77ya5YWo44Gm44GuZGVidWflh7rlipvjgpLmnInlirnjgavjgZnjgossIGBmYWxzZWDvvJrlhajjgabjga5kZWJ1Z+WHuuWKm+OCkueEoeWKueOBq+OBmeOCiywg44Gd44KM5Lul5aSW77ya5oyH5a6a44GX44Gf44OV44Kh44Kk44Or5Lit44GuZGVidWflh7rlipvjga7jgb/mnInlirnjgavjgZnjgotcbiAqL1xuZXhwb3J0IGNvbnN0IHNldERlYnVnTW9kZSA9IChtb2RlOiBib29sZWFuIHwgSXRlcmFibGU8c3RyaW5nPik6IHZvaWQgPT4ge1xuICBkZWJ1Z01vZGUgPSB0eXBlb2YgbW9kZSA9PT0gXCJib29sZWFuXCIgPyBtb2RlIDogbmV3IFNldChtb2RlKTtcbn07XG5cbi8qKiBkZWJ1ZyBtb2Rl44Gu44Go44GN44Gg44GR5pyJ5Yq544GqY29uc29sZeOCkuODleOCoeOCpOODq+OBlOOBqOOBq+S9nOOCi1xuICpcbiAqIEBwYXJhbSBmaWxlbmFtZSDjgrPjg7Pjgr3jg7zjg6vlh7rlipvjgpLlkbzjgbPlh7rjgZfjgZ/jg5XjgqHjgqTjg6vlkI1cbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZURlYnVnID0gKGZpbGVuYW1lOiBzdHJpbmcpOiBDb25zb2xlID0+XG4gIE9iamVjdC5mcm9tRW50cmllcyhbLi4uT2JqZWN0LmVudHJpZXMoY29uc29sZSldLm1hcChcbiAgICAoW2tleSwgdmFsdWVdOiBbc3RyaW5nLCB1bmtub3duXSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gW2tleSwgdmFsdWVdO1xuICAgICAgc3dpdGNoIChrZXkgYXMga2V5b2YgQ29uc29sZSkge1xuICAgICAgICBjYXNlIFwid2FyblwiOlxuICAgICAgICBjYXNlIFwiZXJyb3JcIjpcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgKC4uLmFyZ3M6IHVua25vd25bXSkgPT5cbiAgICAgICAgICAgICAgdmFsdWUoYCVjJHtmaWxlbmFtZX1gLCBcImNvbG9yOiBncmF5XCIsIC4uLmFyZ3MpLFxuICAgICAgICAgIF07XG4gICAgICAgIGNhc2UgXCJsb2dcIjpcbiAgICAgICAgY2FzZSBcImluZm9cIjpcbiAgICAgICAgY2FzZSBcImRlYnVnXCI6XG4gICAgICAgICAgcmV0dXJuIFtrZXksICguLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZGVidWdNb2RlICE9PSB0cnVlICYmICghZGVidWdNb2RlIHx8ICFkZWJ1Z01vZGUuaGFzKGZpbGVuYW1lKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWx1ZShgJWMke2ZpbGVuYW1lfWAsIFwiY29sb3I6IGdyYXlcIiwgLi4uYXJncyk7XG4gICAgICAgICAgfV07XG4gICAgICAgIGNhc2UgXCJhc3NlcnRcIjpcbiAgICAgICAgICByZXR1cm4gW2tleSwgKGFzc2VydGlvbjogYm9vbGVhbiwgLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGRlYnVnTW9kZSAhPT0gdHJ1ZSAmJiAoIWRlYnVnTW9kZSB8fCAhZGVidWdNb2RlLmhhcyhmaWxlbmFtZSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWUoYXNzZXJ0aW9uLCBgJWMke2ZpbGVuYW1lfWAsIFwiY29sb3I6IGdyYXlcIiwgLi4uYXJncyk7XG4gICAgICAgICAgfV07XG4gICAgICAgIGNhc2UgXCJ0aW1lXCI6XG4gICAgICAgIGNhc2UgXCJ0aW1lRW5kXCI6XG4gICAgICAgICAgcmV0dXJuIFtrZXksIChsYWJlbDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGRlYnVnTW9kZSAhPT0gdHJ1ZSAmJiAoIWRlYnVnTW9kZSB8fCAhZGVidWdNb2RlLmhhcyhmaWxlbmFtZSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWUoYCR7ZmlsZW5hbWV9ICR7bGFiZWx9YCk7XG4gICAgICAgICAgfV07XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIFtrZXksICguLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZGVidWdNb2RlICE9PSB0cnVlICYmICghZGVidWdNb2RlIHx8ICFkZWJ1Z01vZGUuaGFzKGZpbGVuYW1lKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUoLi4uYXJncyk7XG4gICAgICAgICAgfV07XG4gICAgICB9XG4gICAgfSxcbiAgKSkgYXMgdW5rbm93biBhcyBDb25zb2xlO1xuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IGdldFByb2plY3QsIFJlc3VsdCB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5pbXBvcnQgeyBjYWNoZUZpcnN0RmV0Y2ggfSBmcm9tIFwiLi9jYWNoZS50c1wiO1xuaW1wb3J0IHsgbWFrZUVtaXR0ZXIgfSBmcm9tIFwiLi9ldmVudEVtaXR0ZXIudHNcIjtcbmltcG9ydCB7XG4gIE1lbWJlclByb2plY3QsXG4gIE5vdEZvdW5kRXJyb3IsXG4gIE5vdExvZ2dlZEluRXJyb3IsXG4gIE5vdE1lbWJlckVycm9yLFxuICBOb3RNZW1iZXJQcm9qZWN0LFxufSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVEZWJ1ZyB9IGZyb20gXCIuL2RlYnVnLnRzXCI7XG5cbnR5cGUgUHJvamVjdFJlc3VsdCA9IFJlc3VsdDxcbiAgfCBOb3RNZW1iZXJQcm9qZWN0XG4gIHwgTWVtYmVyUHJvamVjdCxcbiAgfCBOb3RGb3VuZEVycm9yXG4gIHwgTm90TG9nZ2VkSW5FcnJvclxuICB8IE5vdE1lbWJlckVycm9yXG4+O1xudHlwZSBTdGF0ZTxUPiA9IHsgbG9hZGluZzogdHJ1ZSB9IHwgeyBsb2FkaW5nOiBmYWxzZTsgdmFsdWU6IFQgfTtcbmNvbnN0IGVtaXR0ZXIgPSBtYWtlRW1pdHRlcjxzdHJpbmcsIFByb2plY3RSZXN1bHQ+KCk7XG5cbmNvbnN0IHByb2plY3RNYXAgPSBuZXcgTWFwPHN0cmluZywgU3RhdGU8UHJvamVjdFJlc3VsdD4+KCk7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZURlYnVnKFwiU2NyYXBCdWJibGU6dXNlUHJvamVjdC50c1wiKTtcblxuLyoqIC9hcGkvcHJvamVjdHMvOnByb2plY3Tjga7ntZDmnpzjgpLov5TjgZlob29rXG4gKlxuICogQHBhcmFtIHByb2plY3Qg5oOF5aCx44KS5Y+W5b6X44GX44Gf44GEcHJvamVjdOOBruWQjeWJjVxuICogQHJldHVybiBwcm9qZWN044Gu5oOF5aCx44CC5pyq5Yid5pyf5YyW44KC44GX44GP44Gv6Kqt44G/6L6844G/5Lit44Gu44Go44GN44GvYHVuZGVmaW5lZGDjgpLov5TjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVByb2plY3QgPSAocHJvamVjdDogc3RyaW5nKTogUHJvamVjdFJlc3VsdCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IFtwcm9qZWN0UmVzdWx0LCBzZXRQcm9qZWN0UmVzdWx0XSA9IHVzZVN0YXRlPFByb2plY3RSZXN1bHQ+KCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBlbWl0dGVyLm9uKHByb2plY3QsIHNldFByb2plY3RSZXN1bHQpO1xuXG4gICAgY29uc3Qgc3RhdGUgPSBwcm9qZWN0TWFwLmdldChwcm9qZWN0KTtcbiAgICBpZiAoc3RhdGUpIHtcbiAgICAgIHNldFByb2plY3RSZXN1bHQoc3RhdGUubG9hZGluZyA/IHVuZGVmaW5lZCA6IHN0YXRlLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvamVjdE1hcC5zZXQocHJvamVjdCwgeyBsb2FkaW5nOiB0cnVlIH0pO1xuICAgICAgc2V0UHJvamVjdFJlc3VsdCh1bmRlZmluZWQpO1xuXG4gICAgICAvLyBwcm9qZWN044Gu5oOF5aCx44KS5Y+W5b6X44GZ44KLXG4gICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlcSA9IGdldFByb2plY3QudG9SZXF1ZXN0KHByb2plY3QpO1xuICAgICAgICAgIGZvciBhd2FpdCAoY29uc3QgWywgcmVzXSBvZiBjYWNoZUZpcnN0RmV0Y2gocmVxKSkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0UHJvamVjdC5mcm9tUmVzcG9uc2UocmVzKTtcbiAgICAgICAgICAgIHByb2plY3RNYXAuc2V0KHByb2plY3QsIHsgbG9hZGluZzogZmFsc2UsIHZhbHVlOiByZXN1bHQgfSk7XG4gICAgICAgICAgICBlbWl0dGVyLmRpc3BhdGNoKHByb2plY3QsIHJlc3VsdCk7XG4gICAgICAgICAgICAvLyBuZXR3b3Jr44GL44KJY2FjaGXjgpLmm7TmlrDjgZnjgovlv4XopoHjga/jgarjgYTjga7jgafjgIExIGxvb3Djgaflh6bnkIbjgpLntYLjgYjjgotcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgIC8vIOaDs+WumuWkluOBruOCqOODqeODvOOBr+ODreOCsOOBq+WHuuOBmVxuICAgICAgICAgIGxvZ2dlci5lcnJvcihlKTtcbiAgICAgICAgICAvLyDmnKrliJ3mnJ/ljJbnirbmhYvjgavmiLvjgZlcbiAgICAgICAgICBwcm9qZWN0TWFwLmRlbGV0ZShwcm9qZWN0KTtcbiAgICAgICAgfVxuICAgICAgfSkoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4gZW1pdHRlci5vZmYocHJvamVjdCwgc2V0UHJvamVjdFJlc3VsdCk7XG4gIH0sIFtwcm9qZWN0XSk7XG5cbiAgcmV0dXJuIHByb2plY3RSZXN1bHQ7XG59O1xuIiwgImV4cG9ydCB0eXBlIHtcbiAgQmFzZUxpbmUgYXMgTGluZSxcbiAgTWVtYmVyUHJvamVjdCxcbiAgTm90Rm91bmRFcnJvcixcbiAgTm90TG9nZ2VkSW5FcnJvcixcbiAgTm90TWVtYmVyRXJyb3IsXG4gIE5vdE1lbWJlclByb2plY3QsXG4gIFBhZ2UsXG4gIFByb2plY3RJZCxcbiAgUHJvamVjdFJlbGF0ZWRQYWdlLFxuICBSZWxhdGVkUGFnZSxcbiAgU3RyaW5nTGMsXG4gIFVuaXhUaW1lLFxufSBmcm9tIFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NjcmFwYm94LWpwL3R5cGVzLzAuOS4wL3Jlc3QudHNcIjtcbmV4cG9ydCB0eXBlIHsgU2NyYXBib3ggfSBmcm9tIFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NjcmFwYm94LWpwL3R5cGVzLzAuOS4wL3VzZXJzY3JpcHQudHNcIjtcblxuaW1wb3J0IHR5cGUge1xuICBFcnJvckxpa2UsXG59IGZyb20gXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc2NyYXBib3gtanAvdHlwZXMvMC45LjAvcmVzdC50c1wiO1xuXG4vLyBjZi4gaHR0cHM6Ly9ibG9nLnVoeS5vb28vZW50cnkvMjAyMS0wNC0wOS90eXBlc2NyaXB0LWlzLWFueS1hcy8jJUUzJTgzJUE2JUUzJTgzJUJDJUUzJTgyJUI2JUUzJTgzJUJDJUU1JUFFJTlBJUU3JUJFJUE5JUU1JTlFJThCJUUzJTgyJUFDJUUzJTgzJUJDJUUzJTgzJTg5JUUzJTgxJUFFJUU1JUJDJTk1JUU2JTk1JUIwJUUzJTgxJUFFJUU1JTlFJThCJUUzJTgyJTkyJUUzJTgxJUE5JUUzJTgxJTg2JUUzJTgxJTk5JUUzJTgyJThCJUUzJTgxJThCXG5mdW5jdGlvbiBpc05vdE51bGxpc2goZGF0YTogdW5rbm93bik6IGRhdGEgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gZGF0YSAhPSBudWxsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU2NyYXBib3hFcnJvcihlOiB1bmtub3duKTogZSBpcyBFcnJvckxpa2Uge1xuICB0cnkge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlb2YgZSA9PT0gXCJzdHJpbmdcIiA/IEpTT04ucGFyc2UoZSkgOiBlO1xuICAgIGlmICghaXNOb3ROdWxsaXNoKGpzb24pKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHR5cGVvZiBqc29uLm5hbWUgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGpzb24ubWVzc2FnZSA9PT0gXCJzdHJpbmdcIjtcbiAgfSBjYXRjaCAoZTI6IHVua25vd24pIHtcbiAgICBpZiAoZTIgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikgcmV0dXJuIGZhbHNlO1xuICAgIHRocm93IGUyO1xuICB9XG59XG5cbmltcG9ydCB7IE1ha2VUdXBsZSB9IGZyb20gXCIuLi90eXBlLXRyYWl0cy50c1wiO1xuY29uc3QgZGVmYXVsdHMgPSBbXG4gIFwiZGVmYXVsdC1saWdodFwiLFxuICBcImRlZmF1bHQtZGFya1wiLFxuICBcImRlZmF1bHQtbWluaW1hbFwiLFxuXSBhcyBjb25zdDtcbmNvbnN0IHBhcGVycyA9IFtcbiAgXCJwYXBlci1saWdodFwiLFxuICBcInBhcGVyLWRhcmstZGFya1wiLFxuICBcInBhcGVyLWRhcmtcIixcbl0gYXMgY29uc3Q7XG5jb25zdCBzdGF0aW9uYXJpZXMgPSBbXG4gIFwiYmx1ZVwiLFxuICBcInB1cnBsZVwiLFxuICBcImdyZWVuXCIsXG4gIFwib3JhbmdlXCIsXG4gIFwicmVkXCIsXG5dIGFzIGNvbnN0O1xuY29uc3QgaGFja2VycyA9IFtcbiAgXCJoYWNrZXIxXCIsXG4gIFwiaGFja2VyMlwiLFxuXSBhcyBjb25zdDtcbmNvbnN0IHNlYXNvbnMgPSBbXG4gIFwid2ludGVyXCIsXG4gIFwic3ByaW5nXCIsXG4gIFwic3VtbWVyXCIsXG4gIFwiYXV0b21uXCIsXG5dIGFzIGNvbnN0O1xuY29uc3QgdHJvcGljYWxzID0gW1xuICBcInRyb3BpY2FsXCIsXG5dIGFzIGNvbnN0O1xuY29uc3QgY2l0aWVzID0gW1xuICBcImt5b3RvXCIsXG4gIFwibmV3eW9ya1wiLFxuICBcInBhcmlzXCIsXG5dIGFzIGNvbnN0O1xuY29uc3QgZ2FtZXMgPSBbXG4gIFwibXJlZFwiLFxuICBcImxncmVlblwiLFxuXSBhcyBjb25zdDtcbmNvbnN0IGxpZ2h0VGhlbWVzID0gW1xuICBcImRlZmF1bHQtbGlnaHRcIixcbiAgXCJkZWZhdWx0LW1pbmltYWxcIixcbiAgXCJwYXBlci1saWdodFwiLFxuICAuLi5zdGF0aW9uYXJpZXMsXG4gIC4uLnNlYXNvbnMsXG4gIC4uLnRyb3BpY2FscyxcbiAgLi4uY2l0aWVzLFxuICAuLi5nYW1lcyxcbl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBMaWdodFRoZW1lID0gdHlwZW9mIGxpZ2h0VGhlbWVzW251bWJlcl07XG5leHBvcnQgZnVuY3Rpb24gaXNMaWdodFRoZW1lKHRoZW1lOiBzdHJpbmcpOiB0aGVtZSBpcyBMaWdodFRoZW1lIHtcbiAgcmV0dXJuIChsaWdodFRoZW1lcyBhcyBNYWtlVHVwbGU8c3RyaW5nLCAxOD4pLmluY2x1ZGVzKHRoZW1lKTtcbn1cbmNvbnN0IGRhcmtUaGVtZXMgPSBbXG4gIFwiZGVmYXVsdC1kYXJrXCIsXG4gIFwicGFwZXItZGFyay1kYXJrXCIsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRGFya1RoZW1lID0gdHlwZW9mIGRhcmtUaGVtZXNbbnVtYmVyXTtcbmV4cG9ydCBmdW5jdGlvbiBpc0RhcmtUaGVtZSh0aGVtZTogc3RyaW5nKTogdGhlbWUgaXMgRGFya1RoZW1lIHtcbiAgcmV0dXJuIChkYXJrVGhlbWVzIGFzIE1ha2VUdXBsZTxzdHJpbmcsIDI+KS5pbmNsdWRlcyh0aGVtZSk7XG59XG5jb25zdCB0aGVtZXMgPSBbXG4gIC4uLmRlZmF1bHRzLFxuICAuLi5wYXBlcnMsXG4gIC4uLnN0YXRpb25hcmllcyxcbiAgLi4uaGFja2VycyxcbiAgLi4uc2Vhc29ucyxcbiAgLi4udHJvcGljYWxzLFxuICAuLi5jaXRpZXMsXG4gIC4uLmdhbWVzLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFRoZW1lID0gdHlwZW9mIHRoZW1lc1tudW1iZXJdO1xuZXhwb3J0IGZ1bmN0aW9uIGlzVGhlbWUodGhlbWU6IHN0cmluZyk6IHRoZW1lIGlzIFRoZW1lIHtcbiAgcmV0dXJuICh0aGVtZXMgYXMgTWFrZVR1cGxlPHN0cmluZywgMjM+KS5pbmNsdWRlcyh0aGVtZSk7XG59XG4iLCAiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgdXNlUHJvamVjdCB9IGZyb20gXCIuL3VzZVByb2plY3QudHNcIjtcbmltcG9ydCB7IGlzVGhlbWUsIFRoZW1lIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuXG5jb25zdCBkZWZhdWx0VGhlbWUgPSBcImRlZmF1bHQtbGlnaHRcIjtcblxuLyoqIHByb2plY3Tjga50aGVtZeOCkuWPluW+l+OBmeOCi2hvb2sgKi9cbmV4cG9ydCBjb25zdCB1c2VUaGVtZSA9IChwcm9qZWN0OiBzdHJpbmcpOiBUaGVtZSA9PiB7XG4gIGNvbnN0IHJlcyA9IHVzZVByb2plY3QocHJvamVjdCk7XG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghcmVzIHx8ICFyZXMub2spIHJldHVybiBkZWZhdWx0VGhlbWU7XG4gICAgY29uc3QgdGhlbWUgPSByZXMudmFsdWUudGhlbWU7XG4gICAgcmV0dXJuIGlzVGhlbWUodGhlbWUpID8gdGhlbWUgOiBkZWZhdWx0VGhlbWU7XG4gIH0sIFtyZXNdKTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIvPlxuXG4vKiog44Ob44OQ44O85pON5L2c44KS5b6F5qmf44GZ44KLXG4gKiBAcmV0dXJuIOODm+ODkOODvOOBjOOCreODo+ODs+OCu+ODq+OBleOCjOOBn+OCiWBmYWxzZWBcbiAqL1xuZXhwb3J0IGNvbnN0IHN0YXlIb3ZlcmluZyA9IDxFIGV4dGVuZHMgRWxlbWVudCA9IEhUTUxFbGVtZW50PihcbiAgZWxlbWVudDogRSxcbiAgaW50ZXJ2YWw6IG51bWJlcixcbik6IFByb21pc2U8Ym9vbGVhbj4gPT5cbiAgbmV3IFByb21pc2U8Ym9vbGVhbj4oKHJlc29sdmUpID0+IHtcbiAgICBsZXQgY2FuY2VsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgICBjYW5jZWxlZCA9IHRydWU7XG4gICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICB9O1xuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNhbmNlbCk7XG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcmxlYXZlXCIsIGhhbmRsZUNhbmNlbCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIWNhbmNlbGVkKSByZXNvbHZlKHRydWUpO1xuICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlQ2FuY2VsKTtcbiAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJsZWF2ZVwiLCBoYW5kbGVDYW5jZWwpO1xuICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgfSwgaW50ZXJ2YWwpO1xuICB9KTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIi8+XG5cbmV4cG9ydCB0eXBlIFBvc2l0aW9uID1cbiAgJiB7XG4gICAgdG9wOiBudW1iZXI7XG4gICAgYm90dG9tOiBudW1iZXI7XG4gICAgbWF4V2lkdGg6IG51bWJlcjtcbiAgfVxuICAmICh7XG4gICAgbGVmdDogbnVtYmVyO1xuICB9IHwge1xuICAgIHJpZ2h0OiBudW1iZXI7XG4gIH0pO1xuXG4vKiogQnViYmxl44Gu6KGo56S65L2N572u44KS6KiI566X44GZ44KLXG4gKlxuICogQHBhcmFtIHRhcmdldCDjgZPjga5Ob2Rl44Gr5a++44GX44GmYnViYmxl44KS6KGo56S644GZ44KLXG4gKiBAcmV0dXJuIOihqOekuuS9jee9rlxuICovXG5leHBvcnQgY29uc3QgY2FsY0J1YmJsZVBvc2l0aW9uID0gKHRhcmdldDogRWxlbWVudCk6IFBvc2l0aW9uID0+IHtcbiAgLy8g6KGo56S65L2N572u44KS6KiI566X44GZ44KLXG4gIGNvbnN0IHsgdG9wLCByaWdodCwgbGVmdCwgYm90dG9tIH0gPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAvLyBsaW5r44GM55S76Z2i44Gu5Y+z5a+E44KK44Gr44GC44Gj44Gf44KJ44CBYnViYmxl44KS5bem5YG044Gr5Ye644GZXG4gIGNvbnN0IGFkanVzdFJpZ2h0ID0gKGxlZnQgLSByb290LmxlZnQpIC8gcm9vdC53aWR0aCA+IDAuNTtcblxuICByZXR1cm4ge1xuICAgIHRvcDogTWF0aC5yb3VuZChib3R0b20gLSByb290LnRvcCksXG4gICAgYm90dG9tOiBNYXRoLnJvdW5kKGdsb2JhbFRoaXMuaW5uZXJIZWlnaHQgLSBnbG9iYWxUaGlzLnNjcm9sbFkgLSB0b3ApLFxuICAgIC4uLihhZGp1c3RSaWdodFxuICAgICAgPyB7IHJpZ2h0OiBNYXRoLnJvdW5kKHJvb3QucmlnaHQgLSByaWdodCkgfVxuICAgICAgOiB7IGxlZnQ6IE1hdGgucm91bmQobGVmdCAtIHJvb3QubGVmdCkgfSksXG4gICAgbWF4V2lkdGg6IGFkanVzdFJpZ2h0XG4gICAgICA/IHJpZ2h0IC0gMTBcbiAgICAgIDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIC0gbGVmdCAtIDEwLFxuICB9O1xufTtcbiIsICIvKiogQGpzeCBoICovXG4vKiogQGpzeEZyYWcgRnJhZ21lbnQgKi9cbi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiLz5cbmltcG9ydCB7IEZyYWdtZW50LCBoLCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgdXNlS2FUZVggfSBmcm9tIFwiLi9kZXBzL3VzZUthVGVYLnRzXCI7XG5pbXBvcnQgeyBlbmNvZGVUaXRsZVVSSSB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5pbXBvcnQgeyBwdXNoUGFnZVRyYW5zaXRpb24gfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LXN0ZC1icm93c2VyLnRzXCI7XG5pbXBvcnQge1xuICBGb3JtdWxhTm9kZSxcbiAgSGFzaFRhZ05vZGUsXG4gIEljb25Ob2RlLFxuICBMaW5rTm9kZSxcbiAgTm9kZSBhcyBOb2RlVHlwZSxcbiAgU3Ryb25nSWNvbk5vZGUsXG59IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtcGFyc2VyLnRzXCI7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtcGFyc2VyLnRzXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCIuL3VzZVRoZW1lLnRzXCI7XG5pbXBvcnQgeyBzdGF5SG92ZXJpbmcgfSBmcm9tIFwiLi9zdGF5SG92ZXJpbmcudHNcIjtcbmltcG9ydCB7IEJ1YmJsZU9wZXJhdG9ycyB9IGZyb20gXCIuL3VzZUJ1YmJsZXMudHNcIjtcbmltcG9ydCB7IGNhbGNCdWJibGVQb3NpdGlvbiB9IGZyb20gXCIuL3Bvc2l0aW9uLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFNjcmFwYm94IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZFByb3BzIHtcbiAgcHJvamVjdDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbnM6IHN0cmluZ1tdO1xuICB0aHVtYm5haWw6IHN0cmluZztcbiAgbGlua1RvPzoge1xuICAgIHByb2plY3Q/OiBzdHJpbmc7XG4gICAgdGl0bGVMYzogc3RyaW5nO1xuICB9O1xuICBkZWxheTogbnVtYmVyO1xuICBwcmVmZXRjaDogKHByb2plY3Q6IHN0cmluZywgdGl0bGU6IHN0cmluZykgPT4gdm9pZDtcbiAgYnViYmxlOiBCdWJibGVPcGVyYXRvcnNbXCJidWJibGVcIl07XG59XG5cbmV4cG9ydCBjb25zdCBDYXJkID0gKHtcbiAgcHJvamVjdCxcbiAgdGl0bGUsXG4gIGRlc2NyaXB0aW9ucyxcbiAgdGh1bWJuYWlsLFxuICBsaW5rVG8sXG4gIGJ1YmJsZSxcbiAgZGVsYXksXG4gIHByZWZldGNoLFxufTogQ2FyZFByb3BzKSA9PiB7XG4gIGNvbnN0IGJsb2NrcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gdGh1bWJuYWlsID8gW10gOiBwYXJzZShkZXNjcmlwdGlvbnMuam9pbihcIlxcblwiKSwgeyBoYXNUaXRsZTogZmFsc2UgfSksXG4gICAgW1xuICAgICAgdGh1bWJuYWlsLFxuICAgICAgZGVzY3JpcHRpb25zLFxuICAgIF0sXG4gICk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUocHJvamVjdCk7XG5cbiAgY29uc3QgaGFuZGxlRW50ZXIgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoXG4gICAgICB7IGN1cnJlbnRUYXJnZXQ6IGEgfTogaC5KU1guVGFyZ2V0ZWRNb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PixcbiAgICApID0+IHtcbiAgICAgIHByZWZldGNoKHByb2plY3QsIHRpdGxlKTtcblxuICAgICAgaWYgKCFhd2FpdCBzdGF5SG92ZXJpbmcoYSwgZGVsYXkpKSByZXR1cm47XG5cbiAgICAgIGJ1YmJsZSh7XG4gICAgICAgIHByb2plY3QsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBsaW5rVG8sXG4gICAgICAgIHR5cGU6IFwibGlua1wiLFxuICAgICAgICBwb3NpdGlvbjogY2FsY0J1YmJsZVBvc2l0aW9uKGEpLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbcHJvamVjdCwgdGl0bGUsIGRlbGF5LCBsaW5rVG8/LnByb2plY3QsIGxpbmtUbz8udGl0bGVMY10sXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VNZW1vKCgpID0+XG4gICAgbGlua1RvXG4gICAgICA/ICgpID0+IHtcbiAgICAgICAgcHVzaFBhZ2VUcmFuc2l0aW9uKHtcbiAgICAgICAgICB0eXBlOiBcInBhZ2VcIixcbiAgICAgICAgICBmcm9tOiB7IHByb2plY3Q6IGxpbmtUby5wcm9qZWN0ID8/IHByb2plY3QsIHRpdGxlOiBsaW5rVG8udGl0bGVMYyB9LFxuICAgICAgICAgIHRvOiB7IHByb2plY3QsIHRpdGxlIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgOiAoKSA9PiB7fSwgW3Byb2plY3QsIHRpdGxlLCBsaW5rVG8/LnByb2plY3QsIGxpbmtUbz8udGl0bGVMY10pO1xuXG4gIHJldHVybiAoXG4gICAgPGFcbiAgICAgIGNsYXNzTmFtZT1cInJlbGF0ZWQtcGFnZS1jYXJkIHBhZ2UtbGlua1wiXG4gICAgICB0eXBlPVwibGlua1wiXG4gICAgICBkYXRhLXRoZW1lPXt0aGVtZX1cbiAgICAgIGhyZWY9e2AvJHtwcm9qZWN0fS8ke2VuY29kZVRpdGxlVVJJKHRpdGxlKX1gfVxuICAgICAgcmVsPXtwcm9qZWN0ID09PSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUgPyBcInJvdXRlXCIgOiBcIm5vb3BuZXIgbm9yZWZlcnJlclwifVxuICAgICAgdGFyZ2V0PXtwcm9qZWN0ICE9PSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUgPyBcIl9ibGFua1wiIDogXCJcIn1cbiAgICAgIG9uUG9pbnRlckVudGVyPXtoYW5kbGVFbnRlcn1cbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJob3ZlclwiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3RpdGxlfTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3RodW1ibmFpbFxuICAgICAgICAgID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbFwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz17dGh1bWJuYWlsfSAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKVxuICAgICAgICAgIDogKFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgIHtibG9ja3MuZmxhdE1hcCgoYmxvY2ssIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgIGJsb2NrLnR5cGUgPT09IFwibGluZVwiXG4gICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgPHAga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICAgICAge2Jsb2NrLm5vZGVzLm1hcCgobm9kZSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN1bW1hcnlOb2RlIG5vZGU9e25vZGV9IHByb2plY3Q9e3Byb2plY3R9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvcD4sXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICA6IFtdXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9hPlxuICApO1xufTtcblxudHlwZSBOb2RlUHJvcHMgPSB7XG4gIG5vZGU6IE5vZGVUeXBlO1xuICBwcm9qZWN0OiBzdHJpbmc7XG59O1xuY29uc3QgU3VtbWFyeU5vZGUgPSAoeyBub2RlLCBwcm9qZWN0IH06IE5vZGVQcm9wcykgPT4ge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIGNhc2UgXCJjb2RlXCI6XG4gICAgICByZXR1cm4gPGNvZGU+e25vZGUudGV4dH08L2NvZGU+O1xuICAgIGNhc2UgXCJmb3JtdWxhXCI6XG4gICAgICByZXR1cm4gPEZvcm11bGEgbm9kZT17bm9kZX0gLz47XG4gICAgY2FzZSBcImNvbW1hbmRMaW5lXCI6XG4gICAgICByZXR1cm4gPGNvZGU+e25vZGUuc3ltYm9sfSAke25vZGUudGV4dH08L2NvZGU+O1xuICAgIGNhc2UgXCJoZWxwZmVlbFwiOlxuICAgICAgcmV0dXJuIDxjb2RlPj8ge25vZGUudGV4dH08L2NvZGU+O1xuICAgIGNhc2UgXCJxdW90ZVwiOlxuICAgIGNhc2UgXCJzdHJvbmdcIjpcbiAgICBjYXNlIFwiZGVjb3JhdGlvblwiOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7bm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IChcbiAgICAgICAgICAgIDxTdW1tYXJ5Tm9kZSBub2RlPXtub2RlfSBwcm9qZWN0PXtwcm9qZWN0fSAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgY2FzZSBcImljb25cIjpcbiAgICBjYXNlIFwic3Ryb25nSWNvblwiOlxuICAgICAgcmV0dXJuIDxJY29uIG5vZGU9e25vZGV9IHByb2plY3Q9e3Byb2plY3R9IC8+O1xuICAgIGNhc2UgXCJoYXNoVGFnXCI6XG4gICAgICByZXR1cm4gPEhhc2hUYWcgbm9kZT17bm9kZX0gLz47XG4gICAgY2FzZSBcImxpbmtcIjpcbiAgICAgIHJldHVybiA8TGluayBub2RlPXtub2RlfSAvPjtcbiAgICBjYXNlIFwicGxhaW5cIjpcbiAgICBjYXNlIFwiYmxhbmtcIjpcbiAgICAgIHJldHVybiA8Pntub2RlLnRleHR9PC8+O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gPD48Lz47XG4gIH1cbn07XG5cbnR5cGUgRm9ybXVsYVByb3BzID0ge1xuICBub2RlOiBGb3JtdWxhTm9kZTtcbn07XG5jb25zdCBGb3JtdWxhID0gKHsgbm9kZTogeyBmb3JtdWxhIH0gfTogRm9ybXVsYVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgcmVmLCBlcnJvciwgc2V0Rm9ybXVsYSB9ID0gdXNlS2FUZVgoXCJcIik7XG4gIHNldEZvcm11bGEoZm9ybXVsYSk7XG5cbiAgcmV0dXJuIChcbiAgICA8c3BhbiBjbGFzc05hbWU9e2Bmb3JtdWxhICR7ZXJyb3IgPyBcIiBlcnJvclwiIDogXCJcIn1gfT5cbiAgICAgIHtlcnJvclxuICAgICAgICA/IDxjb2RlPntmb3JtdWxhfTwvY29kZT5cbiAgICAgICAgOiA8c3BhbiBjbGFzc05hbWU9XCJrYXRleC1kaXNwbGF5XCIgcmVmPXtyZWZ9IC8+fVxuICAgIDwvc3Bhbj5cbiAgKTtcbn07XG50eXBlIEljb25Qcm9wcyA9IHtcbiAgcHJvamVjdDogc3RyaW5nO1xuICBub2RlOiBJY29uTm9kZSB8IFN0cm9uZ0ljb25Ob2RlO1xufTtcbmNvbnN0IEljb24gPSAoeyBub2RlOiB7IHBhdGhUeXBlLCBwYXRoIH0sIHByb2plY3Q6IF9wcm9qZWN0IH06IEljb25Qcm9wcykgPT4ge1xuICBjb25zdCBbcHJvamVjdCwgdGl0bGVdID0gcGF0aFR5cGUgPT09IFwicmVsYXRpdmVcIlxuICAgID8gW1xuICAgICAgX3Byb2plY3QsXG4gICAgICBwYXRoLFxuICAgIF1cbiAgICA6IHBhdGgubWF0Y2goL1xcLyhbXFx3XFwtXSspXFwvKC4rKSQvKT8uc2xpY2U/LigxKSA/PyBbX3Byb2plY3QsIHBhdGhdO1xuXG4gIHJldHVybiAoXG4gICAgPGltZ1xuICAgICAgY2xhc3M9XCJpY29uXCJcbiAgICAgIHNyYz17YC9hcGkvcGFnZXMvJHtwcm9qZWN0fS8ke2VuY29kZVRpdGxlVVJJKHRpdGxlKX0vaWNvbmB9XG4gICAgLz5cbiAgKTtcbn07XG50eXBlIEhhc2hUYWdQcm9wcyA9IHtcbiAgbm9kZTogSGFzaFRhZ05vZGU7XG59O1xuY29uc3QgSGFzaFRhZyA9ICh7IG5vZGU6IHsgaHJlZiB9IH06IEhhc2hUYWdQcm9wcykgPT4gKFxuICA8c3BhbiBjbGFzcz1cInBhZ2UtbGlua1wiPiN7aHJlZn08L3NwYW4+XG4pO1xudHlwZSBMaW5rUHJvcHMgPSB7XG4gIG5vZGU6IExpbmtOb2RlO1xufTtcbmNvbnN0IExpbmsgPSAoeyBub2RlOiB7IHBhdGhUeXBlLCBocmVmLCBjb250ZW50IH0gfTogTGlua1Byb3BzKSA9PlxuICBwYXRoVHlwZSAhPT0gXCJhYnNvbHV0ZVwiXG4gICAgPyA8c3BhbiBjbGFzcz1cInBhZ2UtbGlua1wiPntocmVmfTwvc3Bhbj4gLy8gY29udGVudOOBjOepuuOBruOBqOOBjeOBr3VuZGVmaW5lZOOBp+OBr+OBquOBjycn44Gr44Gq44KL44Gu44Gn44CBXG4gICAgLy8gPz/jgafjga/jgarjgY98fOOBp2ZhbGxiYWNr5Yem55CG44KS44GZ44KL5b+F6KaB44GM44GC44KLXG4gICAgOiA8c3BhbiBjbGFzcz1cImxpbmtcIj57Y29udGVudCB8fCBocmVmfTwvc3Bhbj47XG4iLCAiaW1wb3J0IHsgdG9UaXRsZUxjIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1zdGQudHNcIjtcblxuZXhwb3J0IHR5cGUgSUQgPSBgLyR7c3RyaW5nfS8ke3N0cmluZ31gO1xuLyoqIOWQjOS4gOODmuODvOOCuOOBi+WIpOWumuOBmeOCi+OBn+OCgeOBrklE44KS5L2c44KLICovXG5leHBvcnQgY29uc3QgdG9JZCA9IChwcm9qZWN0OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBJRCA9PlxuICBgLyR7cHJvamVjdH0vJHt0b1RpdGxlTGModGl0bGUpfWA7XG5cbi8qKiBJROOBi+OCieODquODs+OCr+aDheWgseOCkuW+qeWFg+OBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGZyb21JZCA9IChpZDogSUQpOiB7IHByb2plY3Q6IHN0cmluZzsgdGl0bGVMYzogc3RyaW5nIH0gPT4ge1xuICBjb25zdCBtYXRjaGVzID0gaWQubWF0Y2goYC8oW15cXC9dKykvKC4rKWApO1xuICBpZiAoIW1hdGNoZXMpIHRocm93IFN5bnRheEVycm9yKGBcIiR7aWR9XCIgY2Fubm5vdCBtYXRjaCBcIi8oW15cXC9dKykvKC4rKVwiYCk7XG4gIHJldHVybiB7XG4gICAgcHJvamVjdDogbWF0Y2hlc1sxXSxcbiAgICB0aXRsZUxjOiBtYXRjaGVzWzJdLFxuICB9O1xufTtcbiIsICIvLyBTaG91bGQgYmUgbm8gaW1wb3J0cyBoZXJlIVxuXG4vKipcbiAqIFRoZSBzZW50aW5lbCB2YWx1ZSByZXR1cm5lZCBieSBwcm9kdWNlcnMgdG8gcmVwbGFjZSB0aGUgZHJhZnQgd2l0aCB1bmRlZmluZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBOT1RISU5HOiB1bmlxdWUgc3ltYm9sID0gU3ltYm9sLmZvcihcImltbWVyLW5vdGhpbmdcIilcblxuLyoqXG4gKiBUbyBsZXQgSW1tZXIgdHJlYXQgeW91ciBjbGFzcyBpbnN0YW5jZXMgYXMgcGxhaW4gaW1tdXRhYmxlIG9iamVjdHNcbiAqIChhbGJlaXQgd2l0aCBhIGN1c3RvbSBwcm90b3R5cGUpLCB5b3UgbXVzdCBkZWZpbmUgZWl0aGVyIGFuIGluc3RhbmNlIHByb3BlcnR5XG4gKiBvciBhIHN0YXRpYyBwcm9wZXJ0eSBvbiBlYWNoIG9mIHlvdXIgY3VzdG9tIGNsYXNzZXMuXG4gKlxuICogT3RoZXJ3aXNlLCB5b3VyIGNsYXNzIGluc3RhbmNlIHdpbGwgbmV2ZXIgYmUgZHJhZnRlZCwgd2hpY2ggbWVhbnMgaXQgd29uJ3QgYmVcbiAqIHNhZmUgdG8gbXV0YXRlIGluIGEgcHJvZHVjZSBjYWxsYmFjay5cbiAqL1xuZXhwb3J0IGNvbnN0IERSQUZUQUJMRTogdW5pcXVlIHN5bWJvbCA9IFN5bWJvbC5mb3IoXCJpbW1lci1kcmFmdGFibGVcIilcblxuZXhwb3J0IGNvbnN0IERSQUZUX1NUQVRFOiB1bmlxdWUgc3ltYm9sID0gU3ltYm9sLmZvcihcImltbWVyLXN0YXRlXCIpXG4iLCAiZXhwb3J0IGNvbnN0IGVycm9ycyA9XG5cdHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIlxuXHRcdD8gW1xuXHRcdFx0XHQvLyBBbGwgZXJyb3IgY29kZXMsIHN0YXJ0aW5nIGJ5IDA6XG5cdFx0XHRcdGZ1bmN0aW9uKHBsdWdpbjogc3RyaW5nKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGBUaGUgcGx1Z2luIGZvciAnJHtwbHVnaW59JyBoYXMgbm90IGJlZW4gbG9hZGVkIGludG8gSW1tZXIuIFRvIGVuYWJsZSB0aGUgcGx1Z2luLCBpbXBvcnQgYW5kIGNhbGwgXFxgZW5hYmxlJHtwbHVnaW59KClcXGAgd2hlbiBpbml0aWFsaXppbmcgeW91ciBhcHBsaWNhdGlvbi5gXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGZ1bmN0aW9uKHRoaW5nOiBzdHJpbmcpIHtcblx0XHRcdFx0XHRyZXR1cm4gYHByb2R1Y2UgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIHRoaW5ncyB0aGF0IGFyZSBkcmFmdGFibGU6IHBsYWluIG9iamVjdHMsIGFycmF5cywgTWFwLCBTZXQgb3IgY2xhc3NlcyB0aGF0IGFyZSBtYXJrZWQgd2l0aCAnW2ltbWVyYWJsZV06IHRydWUnLiBHb3QgJyR7dGhpbmd9J2Bcblx0XHRcdFx0fSxcblx0XHRcdFx0XCJUaGlzIG9iamVjdCBoYXMgYmVlbiBmcm96ZW4gYW5kIHNob3VsZCBub3QgYmUgbXV0YXRlZFwiLFxuXHRcdFx0XHRmdW5jdGlvbihkYXRhOiBhbnkpIHtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XCJDYW5ub3QgdXNlIGEgcHJveHkgdGhhdCBoYXMgYmVlbiByZXZva2VkLiBEaWQgeW91IHBhc3MgYW4gb2JqZWN0IGZyb20gaW5zaWRlIGFuIGltbWVyIGZ1bmN0aW9uIHRvIGFuIGFzeW5jIHByb2Nlc3M/IFwiICtcblx0XHRcdFx0XHRcdGRhdGFcblx0XHRcdFx0XHQpXG5cdFx0XHRcdH0sXG5cdFx0XHRcdFwiQW4gaW1tZXIgcHJvZHVjZXIgcmV0dXJuZWQgYSBuZXcgdmFsdWUgKmFuZCogbW9kaWZpZWQgaXRzIGRyYWZ0LiBFaXRoZXIgcmV0dXJuIGEgbmV3IHZhbHVlICpvciogbW9kaWZ5IHRoZSBkcmFmdC5cIixcblx0XHRcdFx0XCJJbW1lciBmb3JiaWRzIGNpcmN1bGFyIHJlZmVyZW5jZXNcIixcblx0XHRcdFx0XCJUaGUgZmlyc3Qgb3Igc2Vjb25kIGFyZ3VtZW50IHRvIGBwcm9kdWNlYCBtdXN0IGJlIGEgZnVuY3Rpb25cIixcblx0XHRcdFx0XCJUaGUgdGhpcmQgYXJndW1lbnQgdG8gYHByb2R1Y2VgIG11c3QgYmUgYSBmdW5jdGlvbiBvciB1bmRlZmluZWRcIixcblx0XHRcdFx0XCJGaXJzdCBhcmd1bWVudCB0byBgY3JlYXRlRHJhZnRgIG11c3QgYmUgYSBwbGFpbiBvYmplY3QsIGFuIGFycmF5LCBvciBhbiBpbW1lcmFibGUgb2JqZWN0XCIsXG5cdFx0XHRcdFwiRmlyc3QgYXJndW1lbnQgdG8gYGZpbmlzaERyYWZ0YCBtdXN0IGJlIGEgZHJhZnQgcmV0dXJuZWQgYnkgYGNyZWF0ZURyYWZ0YFwiLFxuXHRcdFx0XHRmdW5jdGlvbih0aGluZzogc3RyaW5nKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGAnY3VycmVudCcgZXhwZWN0cyBhIGRyYWZ0LCBnb3Q6ICR7dGhpbmd9YFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRcIk9iamVjdC5kZWZpbmVQcm9wZXJ0eSgpIGNhbm5vdCBiZSB1c2VkIG9uIGFuIEltbWVyIGRyYWZ0XCIsXG5cdFx0XHRcdFwiT2JqZWN0LnNldFByb3RvdHlwZU9mKCkgY2Fubm90IGJlIHVzZWQgb24gYW4gSW1tZXIgZHJhZnRcIixcblx0XHRcdFx0XCJJbW1lciBvbmx5IHN1cHBvcnRzIGRlbGV0aW5nIGFycmF5IGluZGljZXNcIixcblx0XHRcdFx0XCJJbW1lciBvbmx5IHN1cHBvcnRzIHNldHRpbmcgYXJyYXkgaW5kaWNlcyBhbmQgdGhlICdsZW5ndGgnIHByb3BlcnR5XCIsXG5cdFx0XHRcdGZ1bmN0aW9uKHRoaW5nOiBzdHJpbmcpIHtcblx0XHRcdFx0XHRyZXR1cm4gYCdvcmlnaW5hbCcgZXhwZWN0cyBhIGRyYWZ0LCBnb3Q6ICR7dGhpbmd9YFxuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIE5vdGU6IGlmIG1vcmUgZXJyb3JzIGFyZSBhZGRlZCwgdGhlIGVycm9yT2Zmc2V0IGluIFBhdGNoZXMudHMgc2hvdWxkIGJlIGluY3JlYXNlZFxuXHRcdFx0XHQvLyBTZWUgUGF0Y2hlcy50cyBmb3IgYWRkaXRpb25hbCBlcnJvcnNcblx0XHQgIF1cblx0XHQ6IFtdXG5cbmV4cG9ydCBmdW5jdGlvbiBkaWUoZXJyb3I6IG51bWJlciwgLi4uYXJnczogYW55W10pOiBuZXZlciB7XG5cdGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcblx0XHRjb25zdCBlID0gZXJyb3JzW2Vycm9yXVxuXHRcdGNvbnN0IG1zZyA9IHR5cGVvZiBlID09PSBcImZ1bmN0aW9uXCIgPyBlLmFwcGx5KG51bGwsIGFyZ3MgYXMgYW55KSA6IGVcblx0XHR0aHJvdyBuZXcgRXJyb3IoYFtJbW1lcl0gJHttc2d9YClcblx0fVxuXHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0YFtJbW1lcl0gbWluaWZpZWQgZXJyb3IgbnI6ICR7ZXJyb3J9LiBGdWxsIGVycm9yIGF0OiBodHRwczovL2JpdC5seS8zY1hFS1dmYFxuXHQpXG59XG4iLCAiaW1wb3J0IHtcblx0RFJBRlRfU1RBVEUsXG5cdERSQUZUQUJMRSxcblx0T2JqZWN0aXNoLFxuXHREcmFmdGVkLFxuXHRBbnlPYmplY3QsXG5cdEFueU1hcCxcblx0QW55U2V0LFxuXHRJbW1lclN0YXRlLFxuXHRBcmNoVHlwZSxcblx0ZGllLFxuXHRTdHJpY3RNb2RlXG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbmV4cG9ydCBjb25zdCBnZXRQcm90b3R5cGVPZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZlxuXG4vKiogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBJbW1lciBkcmFmdCAqL1xuLyojX19QVVJFX18qL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRHJhZnQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gISF2YWx1ZSBcdTAwMjZcdTAwMjYgISF2YWx1ZVtEUkFGVF9TVEFURV1cbn1cblxuLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgY2FuIGJlIGRyYWZ0ZWQgYnkgSW1tZXIgKi9cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RyYWZ0YWJsZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG5cdGlmICghdmFsdWUpIHJldHVybiBmYWxzZVxuXHRyZXR1cm4gKFxuXHRcdGlzUGxhaW5PYmplY3QodmFsdWUpIHx8XG5cdFx0QXJyYXkuaXNBcnJheSh2YWx1ZSkgfHxcblx0XHQhIXZhbHVlW0RSQUZUQUJMRV0gfHxcblx0XHQhIXZhbHVlLmNvbnN0cnVjdG9yPy5bRFJBRlRBQkxFXSB8fFxuXHRcdGlzTWFwKHZhbHVlKSB8fFxuXHRcdGlzU2V0KHZhbHVlKVxuXHQpXG59XG5cbmNvbnN0IG9iamVjdEN0b3JTdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yLnRvU3RyaW5nKClcbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcblx0aWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHJldHVybiBmYWxzZVxuXHRjb25zdCBwcm90byA9IGdldFByb3RvdHlwZU9mKHZhbHVlKVxuXHRpZiAocHJvdG8gPT09IG51bGwpIHtcblx0XHRyZXR1cm4gdHJ1ZVxuXHR9XG5cdGNvbnN0IEN0b3IgPVxuXHRcdE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCBcImNvbnN0cnVjdG9yXCIpIFx1MDAyNlx1MDAyNiBwcm90by5jb25zdHJ1Y3RvclxuXG5cdGlmIChDdG9yID09PSBPYmplY3QpIHJldHVybiB0cnVlXG5cblx0cmV0dXJuIChcblx0XHR0eXBlb2YgQ3RvciA9PSBcImZ1bmN0aW9uXCIgXHUwMDI2XHUwMDI2XG5cdFx0RnVuY3Rpb24udG9TdHJpbmcuY2FsbChDdG9yKSA9PT0gb2JqZWN0Q3RvclN0cmluZ1xuXHQpXG59XG5cbi8qKiBHZXQgdGhlIHVuZGVybHlpbmcgb2JqZWN0IHRoYXQgaXMgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIGRyYWZ0ICovXG4vKiNfX1BVUkVfXyovXG5leHBvcnQgZnVuY3Rpb24gb3JpZ2luYWxcdTAwM2NUXHUwMDNlKHZhbHVlOiBUKTogVCB8IHVuZGVmaW5lZFxuZXhwb3J0IGZ1bmN0aW9uIG9yaWdpbmFsKHZhbHVlOiBEcmFmdGVkXHUwMDNjYW55XHUwMDNlKTogYW55IHtcblx0aWYgKCFpc0RyYWZ0KHZhbHVlKSkgZGllKDE1LCB2YWx1ZSlcblx0cmV0dXJuIHZhbHVlW0RSQUZUX1NUQVRFXS5iYXNlX1xufVxuXG4vKipcbiAqIEVhY2ggaXRlcmF0ZXMgYSBtYXAsIHNldCBvciBhcnJheS5cbiAqIE9yLCBpZiBhbnkgb3RoZXIga2luZCBvZiBvYmplY3QsIGFsbCBvZiBpdHMgb3duIHByb3BlcnRpZXMuXG4gKiBSZWdhcmRsZXNzIHdoZXRoZXIgdGhleSBhcmUgZW51bWVyYWJsZSBvciBzeW1ib2xzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlYWNoXHUwMDNjVCBleHRlbmRzIE9iamVjdGlzaFx1MDAzZShcblx0b2JqOiBULFxuXHRpdGVyOiAoa2V5OiBzdHJpbmcgfCBudW1iZXIsIHZhbHVlOiBhbnksIHNvdXJjZTogVCkgPVx1MDAzZSB2b2lkXG4pOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZWFjaChvYmo6IGFueSwgaXRlcjogYW55KSB7XG5cdGlmIChnZXRBcmNodHlwZShvYmopID09PSBBcmNoVHlwZS5PYmplY3QpIHtcblx0XHRSZWZsZWN0Lm93bktleXMob2JqKS5mb3JFYWNoKGtleSA9XHUwMDNlIHtcblx0XHRcdGl0ZXIoa2V5LCBvYmpba2V5XSwgb2JqKVxuXHRcdH0pXG5cdH0gZWxzZSB7XG5cdFx0b2JqLmZvckVhY2goKGVudHJ5OiBhbnksIGluZGV4OiBhbnkpID1cdTAwM2UgaXRlcihpbmRleCwgZW50cnksIG9iaikpXG5cdH1cbn1cblxuLyojX19QVVJFX18qL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFyY2h0eXBlKHRoaW5nOiBhbnkpOiBBcmNoVHlwZSB7XG5cdGNvbnN0IHN0YXRlOiB1bmRlZmluZWQgfCBJbW1lclN0YXRlID0gdGhpbmdbRFJBRlRfU1RBVEVdXG5cdHJldHVybiBzdGF0ZVxuXHRcdD8gc3RhdGUudHlwZV9cblx0XHQ6IEFycmF5LmlzQXJyYXkodGhpbmcpXG5cdFx0PyBBcmNoVHlwZS5BcnJheVxuXHRcdDogaXNNYXAodGhpbmcpXG5cdFx0PyBBcmNoVHlwZS5NYXBcblx0XHQ6IGlzU2V0KHRoaW5nKVxuXHRcdD8gQXJjaFR5cGUuU2V0XG5cdFx0OiBBcmNoVHlwZS5PYmplY3Rcbn1cblxuLyojX19QVVJFX18qL1xuZXhwb3J0IGZ1bmN0aW9uIGhhcyh0aGluZzogYW55LCBwcm9wOiBQcm9wZXJ0eUtleSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gZ2V0QXJjaHR5cGUodGhpbmcpID09PSBBcmNoVHlwZS5NYXBcblx0XHQ/IHRoaW5nLmhhcyhwcm9wKVxuXHRcdDogT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaW5nLCBwcm9wKVxufVxuXG4vKiNfX1BVUkVfXyovXG5leHBvcnQgZnVuY3Rpb24gZ2V0KHRoaW5nOiBBbnlNYXAgfCBBbnlPYmplY3QsIHByb3A6IFByb3BlcnR5S2V5KTogYW55IHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRyZXR1cm4gZ2V0QXJjaHR5cGUodGhpbmcpID09PSBBcmNoVHlwZS5NYXAgPyB0aGluZy5nZXQocHJvcCkgOiB0aGluZ1twcm9wXVxufVxuXG4vKiNfX1BVUkVfXyovXG5leHBvcnQgZnVuY3Rpb24gc2V0KHRoaW5nOiBhbnksIHByb3BPck9sZFZhbHVlOiBQcm9wZXJ0eUtleSwgdmFsdWU6IGFueSkge1xuXHRjb25zdCB0ID0gZ2V0QXJjaHR5cGUodGhpbmcpXG5cdGlmICh0ID09PSBBcmNoVHlwZS5NYXApIHRoaW5nLnNldChwcm9wT3JPbGRWYWx1ZSwgdmFsdWUpXG5cdGVsc2UgaWYgKHQgPT09IEFyY2hUeXBlLlNldCkge1xuXHRcdHRoaW5nLmFkZCh2YWx1ZSlcblx0fSBlbHNlIHRoaW5nW3Byb3BPck9sZFZhbHVlXSA9IHZhbHVlXG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpcyh4OiBhbnksIHk6IGFueSk6IGJvb2xlYW4ge1xuXHQvLyBGcm9tOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmJqcy9ibG9iL2M2OTkwNGE1MTFiOTAwMjY2OTM1MTY4MjIzMDYzZGQ4NzcyZGZjNDAvcGFja2FnZXMvZmJqcy9zcmMvY29yZS9zaGFsbG93RXF1YWwuanNcblx0aWYgKHggPT09IHkpIHtcblx0XHRyZXR1cm4geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHlcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4geCAhPT0geCBcdTAwMjZcdTAwMjYgeSAhPT0geVxuXHR9XG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01hcCh0YXJnZXQ6IGFueSk6IHRhcmdldCBpcyBBbnlNYXAge1xuXHRyZXR1cm4gdGFyZ2V0IGluc3RhbmNlb2YgTWFwXG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NldCh0YXJnZXQ6IGFueSk6IHRhcmdldCBpcyBBbnlTZXQge1xuXHRyZXR1cm4gdGFyZ2V0IGluc3RhbmNlb2YgU2V0XG59XG4vKiNfX1BVUkVfXyovXG5leHBvcnQgZnVuY3Rpb24gbGF0ZXN0KHN0YXRlOiBJbW1lclN0YXRlKTogYW55IHtcblx0cmV0dXJuIHN0YXRlLmNvcHlfIHx8IHN0YXRlLmJhc2VfXG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBzaGFsbG93Q29weShiYXNlOiBhbnksIHN0cmljdDogU3RyaWN0TW9kZSkge1xuXHRpZiAoaXNNYXAoYmFzZSkpIHtcblx0XHRyZXR1cm4gbmV3IE1hcChiYXNlKVxuXHR9XG5cdGlmIChpc1NldChiYXNlKSkge1xuXHRcdHJldHVybiBuZXcgU2V0KGJhc2UpXG5cdH1cblx0aWYgKEFycmF5LmlzQXJyYXkoYmFzZSkpIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChiYXNlKVxuXG5cdGNvbnN0IGlzUGxhaW4gPSBpc1BsYWluT2JqZWN0KGJhc2UpXG5cblx0aWYgKHN0cmljdCA9PT0gdHJ1ZSB8fCAoc3RyaWN0ID09PSBcImNsYXNzX29ubHlcIiBcdTAwMjZcdTAwMjYgIWlzUGxhaW4pKSB7XG5cdFx0Ly8gUGVyZm9ybSBhIHN0cmljdCBjb3B5XG5cdFx0Y29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhiYXNlKVxuXHRcdGRlbGV0ZSBkZXNjcmlwdG9yc1tEUkFGVF9TVEFURSBhcyBhbnldXG5cdFx0bGV0IGtleXMgPSBSZWZsZWN0Lm93bktleXMoZGVzY3JpcHRvcnMpXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgXHUwMDNjIGtleXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGtleTogYW55ID0ga2V5c1tpXVxuXHRcdFx0Y29uc3QgZGVzYyA9IGRlc2NyaXB0b3JzW2tleV1cblx0XHRcdGlmIChkZXNjLndyaXRhYmxlID09PSBmYWxzZSkge1xuXHRcdFx0XHRkZXNjLndyaXRhYmxlID0gdHJ1ZVxuXHRcdFx0XHRkZXNjLmNvbmZpZ3VyYWJsZSA9IHRydWVcblx0XHRcdH1cblx0XHRcdC8vIGxpa2Ugb2JqZWN0LmFzc2lnbiwgd2Ugd2lsbCByZWFkIGFueSBfb3duXywgZ2V0L3NldCBhY2Nlc3NvcnMuIFRoaXMgaGVscHMgaW4gZGVhbGluZ1xuXHRcdFx0Ly8gd2l0aCBsaWJyYXJpZXMgdGhhdCB0cmFwIHZhbHVlcywgbGlrZSBtb2J4IG9yIHZ1ZVxuXHRcdFx0Ly8gdW5saWtlIG9iamVjdC5hc3NpZ24sIG5vbi1lbnVtZXJhYmxlcyB3aWxsIGJlIGNvcGllZCBhcyB3ZWxsXG5cdFx0XHRpZiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpXG5cdFx0XHRcdGRlc2NyaXB0b3JzW2tleV0gPSB7XG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHdyaXRhYmxlOiB0cnVlLCAvLyBjb3VsZCBsaXZlIHdpdGggISFkZXNjLnNldCBhcyB3ZWxsIGhlcmUuLi5cblx0XHRcdFx0XHRlbnVtZXJhYmxlOiBkZXNjLmVudW1lcmFibGUsXG5cdFx0XHRcdFx0dmFsdWU6IGJhc2Vba2V5XVxuXHRcdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBPYmplY3QuY3JlYXRlKGdldFByb3RvdHlwZU9mKGJhc2UpLCBkZXNjcmlwdG9ycylcblx0fSBlbHNlIHtcblx0XHQvLyBwZXJmb3JtIGEgc2xvcHB5IGNvcHlcblx0XHRjb25zdCBwcm90byA9IGdldFByb3RvdHlwZU9mKGJhc2UpXG5cdFx0aWYgKHByb3RvICE9PSBudWxsIFx1MDAyNlx1MDAyNiBpc1BsYWluKSB7XG5cdFx0XHRyZXR1cm4gey4uLmJhc2V9IC8vIGFzc3VtcHRpb246IGJldHRlciBpbm5lciBjbGFzcyBvcHRpbWl6YXRpb24gdGhhbiB0aGUgYXNzaWduIGJlbG93XG5cdFx0fVxuXHRcdGNvbnN0IG9iaiA9IE9iamVjdC5jcmVhdGUocHJvdG8pXG5cdFx0cmV0dXJuIE9iamVjdC5hc3NpZ24ob2JqLCBiYXNlKVxuXHR9XG59XG5cbi8qKlxuICogRnJlZXplcyBkcmFmdGFibGUgb2JqZWN0cy4gUmV0dXJucyB0aGUgb3JpZ2luYWwgb2JqZWN0LlxuICogQnkgZGVmYXVsdCBmcmVlemVzIHNoYWxsb3dseSwgYnV0IGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgYHRydWVgIGl0IHdpbGwgZnJlZXplIHJlY3Vyc2l2ZWx5LlxuICpcbiAqIEBwYXJhbSBvYmpcbiAqIEBwYXJhbSBkZWVwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcmVlemVcdTAwM2NUXHUwMDNlKG9iajogVCwgZGVlcD86IGJvb2xlYW4pOiBUXG5leHBvcnQgZnVuY3Rpb24gZnJlZXplXHUwMDNjVFx1MDAzZShvYmo6IGFueSwgZGVlcDogYm9vbGVhbiA9IGZhbHNlKTogVCB7XG5cdGlmIChpc0Zyb3plbihvYmopIHx8IGlzRHJhZnQob2JqKSB8fCAhaXNEcmFmdGFibGUob2JqKSkgcmV0dXJuIG9ialxuXHRpZiAoZ2V0QXJjaHR5cGUob2JqKSBcdTAwM2UgMSAvKiBNYXAgb3IgU2V0ICovKSB7XG5cdFx0b2JqLnNldCA9IG9iai5hZGQgPSBvYmouY2xlYXIgPSBvYmouZGVsZXRlID0gZG9udE11dGF0ZUZyb3plbkNvbGxlY3Rpb25zIGFzIGFueVxuXHR9XG5cdE9iamVjdC5mcmVlemUob2JqKVxuXHRpZiAoZGVlcClcblx0XHQvLyBTZWUgIzU5MCwgZG9uJ3QgcmVjdXJzZSBpbnRvIG5vbi1lbnVtZXJhYmxlIC8gU3ltYm9sIHByb3BlcnRpZXMgd2hlbiBmcmVlemluZ1xuXHRcdC8vIFNvIHVzZSBPYmplY3QuZW50cmllcyAob25seSBzdHJpbmctbGlrZSwgZW51bWVyYWJsZXMpIGluc3RlYWQgb2YgZWFjaCgpXG5cdFx0T2JqZWN0LmVudHJpZXMob2JqKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID1cdTAwM2UgZnJlZXplKHZhbHVlLCB0cnVlKSlcblx0cmV0dXJuIG9ialxufVxuXG5mdW5jdGlvbiBkb250TXV0YXRlRnJvemVuQ29sbGVjdGlvbnMoKSB7XG5cdGRpZSgyKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGcm96ZW4ob2JqOiBhbnkpOiBib29sZWFuIHtcblx0cmV0dXJuIE9iamVjdC5pc0Zyb3plbihvYmopXG59XG4iLCAiaW1wb3J0IHtcblx0SW1tZXJTdGF0ZSxcblx0UGF0Y2gsXG5cdERyYWZ0ZWQsXG5cdEltbWVyQmFzZVN0YXRlLFxuXHRBbnlNYXAsXG5cdEFueVNldCxcblx0QXJjaFR5cGUsXG5cdGRpZVxufSBmcm9tIFwiLi4vaW50ZXJuYWxcIlxuXG4vKiogUGx1Z2luIHV0aWxpdGllcyAqL1xuY29uc3QgcGx1Z2luczoge1xuXHRQYXRjaGVzPzoge1xuXHRcdGdlbmVyYXRlUGF0Y2hlc18oXG5cdFx0XHRzdGF0ZTogSW1tZXJTdGF0ZSxcblx0XHRcdGJhc2VQYXRoOiBQYXRjaFBhdGgsXG5cdFx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdFx0aW52ZXJzZVBhdGNoZXM6IFBhdGNoW11cblx0XHQpOiB2b2lkXG5cdFx0Z2VuZXJhdGVSZXBsYWNlbWVudFBhdGNoZXNfKFxuXHRcdFx0YmFzZTogYW55LFxuXHRcdFx0cmVwbGFjZW1lbnQ6IGFueSxcblx0XHRcdHBhdGNoZXM6IFBhdGNoW10sXG5cdFx0XHRpbnZlcnNlUGF0Y2hlczogUGF0Y2hbXVxuXHRcdCk6IHZvaWRcblx0XHRhcHBseVBhdGNoZXNfXHUwMDNjVFx1MDAzZShkcmFmdDogVCwgcGF0Y2hlczogcmVhZG9ubHkgUGF0Y2hbXSk6IFRcblx0fVxuXHRNYXBTZXQ/OiB7XG5cdFx0cHJveHlNYXBfXHUwMDNjVCBleHRlbmRzIEFueU1hcFx1MDAzZSh0YXJnZXQ6IFQsIHBhcmVudD86IEltbWVyU3RhdGUpOiBUXG5cdFx0cHJveHlTZXRfXHUwMDNjVCBleHRlbmRzIEFueVNldFx1MDAzZSh0YXJnZXQ6IFQsIHBhcmVudD86IEltbWVyU3RhdGUpOiBUXG5cdH1cbn0gPSB7fVxuXG50eXBlIFBsdWdpbnMgPSB0eXBlb2YgcGx1Z2luc1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1Z2luXHUwMDNjSyBleHRlbmRzIGtleW9mIFBsdWdpbnNcdTAwM2UoXG5cdHBsdWdpbktleTogS1xuKTogRXhjbHVkZVx1MDAzY1BsdWdpbnNbS10sIHVuZGVmaW5lZFx1MDAzZSB7XG5cdGNvbnN0IHBsdWdpbiA9IHBsdWdpbnNbcGx1Z2luS2V5XVxuXHRpZiAoIXBsdWdpbikge1xuXHRcdGRpZSgwLCBwbHVnaW5LZXkpXG5cdH1cblx0Ly8gQHRzLWlnbm9yZVxuXHRyZXR1cm4gcGx1Z2luXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkUGx1Z2luXHUwMDNjSyBleHRlbmRzIGtleW9mIFBsdWdpbnNcdTAwM2UoXG5cdHBsdWdpbktleTogSyxcblx0aW1wbGVtZW50YXRpb246IFBsdWdpbnNbS11cbik6IHZvaWQge1xuXHRpZiAoIXBsdWdpbnNbcGx1Z2luS2V5XSkgcGx1Z2luc1twbHVnaW5LZXldID0gaW1wbGVtZW50YXRpb25cbn1cbi8qKiBNYXAgLyBTZXQgcGx1Z2luICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwU3RhdGUgZXh0ZW5kcyBJbW1lckJhc2VTdGF0ZSB7XG5cdHR5cGVfOiBBcmNoVHlwZS5NYXBcblx0Y29weV86IEFueU1hcCB8IHVuZGVmaW5lZFxuXHRhc3NpZ25lZF86IE1hcFx1MDAzY2FueSwgYm9vbGVhblx1MDAzZSB8IHVuZGVmaW5lZFxuXHRiYXNlXzogQW55TWFwXG5cdHJldm9rZWRfOiBib29sZWFuXG5cdGRyYWZ0XzogRHJhZnRlZFx1MDAzY0FueU1hcCwgTWFwU3RhdGVcdTAwM2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXRTdGF0ZSBleHRlbmRzIEltbWVyQmFzZVN0YXRlIHtcblx0dHlwZV86IEFyY2hUeXBlLlNldFxuXHRjb3B5XzogQW55U2V0IHwgdW5kZWZpbmVkXG5cdGJhc2VfOiBBbnlTZXRcblx0ZHJhZnRzXzogTWFwXHUwMDNjYW55LCBEcmFmdGVkXHUwMDNlIC8vIG1hcHMgdGhlIG9yaWdpbmFsIHZhbHVlIHRvIHRoZSBkcmFmdCB2YWx1ZSBpbiB0aGUgbmV3IHNldFxuXHRyZXZva2VkXzogYm9vbGVhblxuXHRkcmFmdF86IERyYWZ0ZWRcdTAwM2NBbnlTZXQsIFNldFN0YXRlXHUwMDNlXG59XG5cbi8qKiBQYXRjaGVzIHBsdWdpbiAqL1xuXG5leHBvcnQgdHlwZSBQYXRjaFBhdGggPSAoc3RyaW5nIHwgbnVtYmVyKVtdXG4iLCAiaW1wb3J0IHtcblx0UGF0Y2gsXG5cdFBhdGNoTGlzdGVuZXIsXG5cdERyYWZ0ZWQsXG5cdEltbWVyLFxuXHREUkFGVF9TVEFURSxcblx0SW1tZXJTdGF0ZSxcblx0QXJjaFR5cGUsXG5cdGdldFBsdWdpblxufSBmcm9tIFwiLi4vaW50ZXJuYWxcIlxuXG4vKiogRWFjaCBzY29wZSByZXByZXNlbnRzIGEgYHByb2R1Y2VgIGNhbGwuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1tZXJTY29wZSB7XG5cdHBhdGNoZXNfPzogUGF0Y2hbXVxuXHRpbnZlcnNlUGF0Y2hlc18/OiBQYXRjaFtdXG5cdGNhbkF1dG9GcmVlemVfOiBib29sZWFuXG5cdGRyYWZ0c186IGFueVtdXG5cdHBhcmVudF8/OiBJbW1lclNjb3BlXG5cdHBhdGNoTGlzdGVuZXJfPzogUGF0Y2hMaXN0ZW5lclxuXHRpbW1lcl86IEltbWVyXG5cdHVuZmluYWxpemVkRHJhZnRzXzogbnVtYmVyXG59XG5cbmxldCBjdXJyZW50U2NvcGU6IEltbWVyU2NvcGUgfCB1bmRlZmluZWRcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnJlbnRTY29wZSgpIHtcblx0cmV0dXJuIGN1cnJlbnRTY29wZSFcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2NvcGUoXG5cdHBhcmVudF86IEltbWVyU2NvcGUgfCB1bmRlZmluZWQsXG5cdGltbWVyXzogSW1tZXJcbik6IEltbWVyU2NvcGUge1xuXHRyZXR1cm4ge1xuXHRcdGRyYWZ0c186IFtdLFxuXHRcdHBhcmVudF8sXG5cdFx0aW1tZXJfLFxuXHRcdC8vIFdoZW5ldmVyIHRoZSBtb2RpZmllZCBkcmFmdCBjb250YWlucyBhIGRyYWZ0IGZyb20gYW5vdGhlciBzY29wZSwgd2Vcblx0XHQvLyBuZWVkIHRvIHByZXZlbnQgYXV0by1mcmVlemluZyBzbyB0aGUgdW5vd25lZCBkcmFmdCBjYW4gYmUgZmluYWxpemVkLlxuXHRcdGNhbkF1dG9GcmVlemVfOiB0cnVlLFxuXHRcdHVuZmluYWxpemVkRHJhZnRzXzogMFxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQYXRjaGVzSW5TY29wZShcblx0c2NvcGU6IEltbWVyU2NvcGUsXG5cdHBhdGNoTGlzdGVuZXI/OiBQYXRjaExpc3RlbmVyXG4pIHtcblx0aWYgKHBhdGNoTGlzdGVuZXIpIHtcblx0XHRnZXRQbHVnaW4oXCJQYXRjaGVzXCIpIC8vIGFzc2VydCB3ZSBoYXZlIHRoZSBwbHVnaW5cblx0XHRzY29wZS5wYXRjaGVzXyA9IFtdXG5cdFx0c2NvcGUuaW52ZXJzZVBhdGNoZXNfID0gW11cblx0XHRzY29wZS5wYXRjaExpc3RlbmVyXyA9IHBhdGNoTGlzdGVuZXJcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV2b2tlU2NvcGUoc2NvcGU6IEltbWVyU2NvcGUpIHtcblx0bGVhdmVTY29wZShzY29wZSlcblx0c2NvcGUuZHJhZnRzXy5mb3JFYWNoKHJldm9rZURyYWZ0KVxuXHQvLyBAdHMtaWdub3JlXG5cdHNjb3BlLmRyYWZ0c18gPSBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZWF2ZVNjb3BlKHNjb3BlOiBJbW1lclNjb3BlKSB7XG5cdGlmIChzY29wZSA9PT0gY3VycmVudFNjb3BlKSB7XG5cdFx0Y3VycmVudFNjb3BlID0gc2NvcGUucGFyZW50X1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnRlclNjb3BlKGltbWVyOiBJbW1lcikge1xuXHRyZXR1cm4gKGN1cnJlbnRTY29wZSA9IGNyZWF0ZVNjb3BlKGN1cnJlbnRTY29wZSwgaW1tZXIpKVxufVxuXG5mdW5jdGlvbiByZXZva2VEcmFmdChkcmFmdDogRHJhZnRlZCkge1xuXHRjb25zdCBzdGF0ZTogSW1tZXJTdGF0ZSA9IGRyYWZ0W0RSQUZUX1NUQVRFXVxuXHRpZiAoc3RhdGUudHlwZV8gPT09IEFyY2hUeXBlLk9iamVjdCB8fCBzdGF0ZS50eXBlXyA9PT0gQXJjaFR5cGUuQXJyYXkpXG5cdFx0c3RhdGUucmV2b2tlXygpXG5cdGVsc2Ugc3RhdGUucmV2b2tlZF8gPSB0cnVlXG59XG4iLCAiaW1wb3J0IHtcblx0SW1tZXJTY29wZSxcblx0RFJBRlRfU1RBVEUsXG5cdGlzRHJhZnRhYmxlLFxuXHROT1RISU5HLFxuXHRQYXRjaFBhdGgsXG5cdGVhY2gsXG5cdGhhcyxcblx0ZnJlZXplLFxuXHRJbW1lclN0YXRlLFxuXHRpc0RyYWZ0LFxuXHRTZXRTdGF0ZSxcblx0c2V0LFxuXHRBcmNoVHlwZSxcblx0Z2V0UGx1Z2luLFxuXHRkaWUsXG5cdHJldm9rZVNjb3BlLFxuXHRpc0Zyb3plblxufSBmcm9tIFwiLi4vaW50ZXJuYWxcIlxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc1Jlc3VsdChyZXN1bHQ6IGFueSwgc2NvcGU6IEltbWVyU2NvcGUpIHtcblx0c2NvcGUudW5maW5hbGl6ZWREcmFmdHNfID0gc2NvcGUuZHJhZnRzXy5sZW5ndGhcblx0Y29uc3QgYmFzZURyYWZ0ID0gc2NvcGUuZHJhZnRzXyFbMF1cblx0Y29uc3QgaXNSZXBsYWNlZCA9IHJlc3VsdCAhPT0gdW5kZWZpbmVkIFx1MDAyNlx1MDAyNiByZXN1bHQgIT09IGJhc2VEcmFmdFxuXHRpZiAoaXNSZXBsYWNlZCkge1xuXHRcdGlmIChiYXNlRHJhZnRbRFJBRlRfU1RBVEVdLm1vZGlmaWVkXykge1xuXHRcdFx0cmV2b2tlU2NvcGUoc2NvcGUpXG5cdFx0XHRkaWUoNClcblx0XHR9XG5cdFx0aWYgKGlzRHJhZnRhYmxlKHJlc3VsdCkpIHtcblx0XHRcdC8vIEZpbmFsaXplIHRoZSByZXN1bHQgaW4gY2FzZSBpdCBjb250YWlucyAob3IgaXMpIGEgc3Vic2V0IG9mIHRoZSBkcmFmdC5cblx0XHRcdHJlc3VsdCA9IGZpbmFsaXplKHNjb3BlLCByZXN1bHQpXG5cdFx0XHRpZiAoIXNjb3BlLnBhcmVudF8pIG1heWJlRnJlZXplKHNjb3BlLCByZXN1bHQpXG5cdFx0fVxuXHRcdGlmIChzY29wZS5wYXRjaGVzXykge1xuXHRcdFx0Z2V0UGx1Z2luKFwiUGF0Y2hlc1wiKS5nZW5lcmF0ZVJlcGxhY2VtZW50UGF0Y2hlc18oXG5cdFx0XHRcdGJhc2VEcmFmdFtEUkFGVF9TVEFURV0uYmFzZV8sXG5cdFx0XHRcdHJlc3VsdCxcblx0XHRcdFx0c2NvcGUucGF0Y2hlc18sXG5cdFx0XHRcdHNjb3BlLmludmVyc2VQYXRjaGVzXyFcblx0XHRcdClcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Ly8gRmluYWxpemUgdGhlIGJhc2UgZHJhZnQuXG5cdFx0cmVzdWx0ID0gZmluYWxpemUoc2NvcGUsIGJhc2VEcmFmdCwgW10pXG5cdH1cblx0cmV2b2tlU2NvcGUoc2NvcGUpXG5cdGlmIChzY29wZS5wYXRjaGVzXykge1xuXHRcdHNjb3BlLnBhdGNoTGlzdGVuZXJfIShzY29wZS5wYXRjaGVzXywgc2NvcGUuaW52ZXJzZVBhdGNoZXNfISlcblx0fVxuXHRyZXR1cm4gcmVzdWx0ICE9PSBOT1RISU5HID8gcmVzdWx0IDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGZpbmFsaXplKHJvb3RTY29wZTogSW1tZXJTY29wZSwgdmFsdWU6IGFueSwgcGF0aD86IFBhdGNoUGF0aCkge1xuXHQvLyBEb24ndCByZWN1cnNlIGluIHRobyByZWN1cnNpdmUgZGF0YSBzdHJ1Y3R1cmVzXG5cdGlmIChpc0Zyb3plbih2YWx1ZSkpIHJldHVybiB2YWx1ZVxuXG5cdGNvbnN0IHN0YXRlOiBJbW1lclN0YXRlID0gdmFsdWVbRFJBRlRfU1RBVEVdXG5cdC8vIEEgcGxhaW4gb2JqZWN0LCBtaWdodCBuZWVkIGZyZWV6aW5nLCBtaWdodCBjb250YWluIGRyYWZ0c1xuXHRpZiAoIXN0YXRlKSB7XG5cdFx0ZWFjaCh2YWx1ZSwgKGtleSwgY2hpbGRWYWx1ZSkgPVx1MDAzZVxuXHRcdFx0ZmluYWxpemVQcm9wZXJ0eShyb290U2NvcGUsIHN0YXRlLCB2YWx1ZSwga2V5LCBjaGlsZFZhbHVlLCBwYXRoKVxuXHRcdClcblx0XHRyZXR1cm4gdmFsdWVcblx0fVxuXHQvLyBOZXZlciBmaW5hbGl6ZSBkcmFmdHMgb3duZWQgYnkgYW5vdGhlciBzY29wZS5cblx0aWYgKHN0YXRlLnNjb3BlXyAhPT0gcm9vdFNjb3BlKSByZXR1cm4gdmFsdWVcblx0Ly8gVW5tb2RpZmllZCBkcmFmdCwgcmV0dXJuIHRoZSAoZnJvemVuKSBvcmlnaW5hbFxuXHRpZiAoIXN0YXRlLm1vZGlmaWVkXykge1xuXHRcdG1heWJlRnJlZXplKHJvb3RTY29wZSwgc3RhdGUuYmFzZV8sIHRydWUpXG5cdFx0cmV0dXJuIHN0YXRlLmJhc2VfXG5cdH1cblx0Ly8gTm90IGZpbmFsaXplZCB5ZXQsIGxldCdzIGRvIHRoYXQgbm93XG5cdGlmICghc3RhdGUuZmluYWxpemVkXykge1xuXHRcdHN0YXRlLmZpbmFsaXplZF8gPSB0cnVlXG5cdFx0c3RhdGUuc2NvcGVfLnVuZmluYWxpemVkRHJhZnRzXy0tXG5cdFx0Y29uc3QgcmVzdWx0ID0gc3RhdGUuY29weV9cblx0XHQvLyBGaW5hbGl6ZSBhbGwgY2hpbGRyZW4gb2YgdGhlIGNvcHlcblx0XHQvLyBGb3Igc2V0cyB3ZSBjbG9uZSBiZWZvcmUgaXRlcmF0aW5nLCBvdGhlcndpc2Ugd2UgY2FuIGdldCBpbiBlbmRsZXNzIGxvb3AgZHVlIHRvIG1vZGlmeWluZyBkdXJpbmcgaXRlcmF0aW9uLCBzZWUgIzYyOFxuXHRcdC8vIFRvIHByZXNlcnZlIGluc2VydGlvbiBvcmRlciBpbiBhbGwgY2FzZXMgd2UgdGhlbiBjbGVhciB0aGUgc2V0XG5cdFx0Ly8gQW5kIHdlIGxldCBmaW5hbGl6ZVByb3BlcnR5IGtub3cgaXQgbmVlZHMgdG8gcmUtYWRkIG5vbi1kcmFmdCBjaGlsZHJlbiBiYWNrIHRvIHRoZSB0YXJnZXRcblx0XHRsZXQgcmVzdWx0RWFjaCA9IHJlc3VsdFxuXHRcdGxldCBpc1NldCA9IGZhbHNlXG5cdFx0aWYgKHN0YXRlLnR5cGVfID09PSBBcmNoVHlwZS5TZXQpIHtcblx0XHRcdHJlc3VsdEVhY2ggPSBuZXcgU2V0KHJlc3VsdClcblx0XHRcdHJlc3VsdC5jbGVhcigpXG5cdFx0XHRpc1NldCA9IHRydWVcblx0XHR9XG5cdFx0ZWFjaChyZXN1bHRFYWNoLCAoa2V5LCBjaGlsZFZhbHVlKSA9XHUwMDNlXG5cdFx0XHRmaW5hbGl6ZVByb3BlcnR5KHJvb3RTY29wZSwgc3RhdGUsIHJlc3VsdCwga2V5LCBjaGlsZFZhbHVlLCBwYXRoLCBpc1NldClcblx0XHQpXG5cdFx0Ly8gZXZlcnl0aGluZyBpbnNpZGUgaXMgZnJvemVuLCB3ZSBjYW4gZnJlZXplIGhlcmVcblx0XHRtYXliZUZyZWV6ZShyb290U2NvcGUsIHJlc3VsdCwgZmFsc2UpXG5cdFx0Ly8gZmlyc3QgdGltZSBmaW5hbGl6aW5nLCBsZXQncyBjcmVhdGUgdGhvc2UgcGF0Y2hlc1xuXHRcdGlmIChwYXRoIFx1MDAyNlx1MDAyNiByb290U2NvcGUucGF0Y2hlc18pIHtcblx0XHRcdGdldFBsdWdpbihcIlBhdGNoZXNcIikuZ2VuZXJhdGVQYXRjaGVzXyhcblx0XHRcdFx0c3RhdGUsXG5cdFx0XHRcdHBhdGgsXG5cdFx0XHRcdHJvb3RTY29wZS5wYXRjaGVzXyxcblx0XHRcdFx0cm9vdFNjb3BlLmludmVyc2VQYXRjaGVzXyFcblx0XHRcdClcblx0XHR9XG5cdH1cblx0cmV0dXJuIHN0YXRlLmNvcHlfXG59XG5cbmZ1bmN0aW9uIGZpbmFsaXplUHJvcGVydHkoXG5cdHJvb3RTY29wZTogSW1tZXJTY29wZSxcblx0cGFyZW50U3RhdGU6IHVuZGVmaW5lZCB8IEltbWVyU3RhdGUsXG5cdHRhcmdldE9iamVjdDogYW55LFxuXHRwcm9wOiBzdHJpbmcgfCBudW1iZXIsXG5cdGNoaWxkVmFsdWU6IGFueSxcblx0cm9vdFBhdGg/OiBQYXRjaFBhdGgsXG5cdHRhcmdldElzU2V0PzogYm9vbGVhblxuKSB7XG5cdGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgXHUwMDI2XHUwMDI2IGNoaWxkVmFsdWUgPT09IHRhcmdldE9iamVjdClcblx0XHRkaWUoNSlcblx0aWYgKGlzRHJhZnQoY2hpbGRWYWx1ZSkpIHtcblx0XHRjb25zdCBwYXRoID1cblx0XHRcdHJvb3RQYXRoIFx1MDAyNlx1MDAyNlxuXHRcdFx0cGFyZW50U3RhdGUgXHUwMDI2XHUwMDI2XG5cdFx0XHRwYXJlbnRTdGF0ZSEudHlwZV8gIT09IEFyY2hUeXBlLlNldCBcdTAwMjZcdTAwMjYgLy8gU2V0IG9iamVjdHMgYXJlIGF0b21pYyBzaW5jZSB0aGV5IGhhdmUgbm8ga2V5cy5cblx0XHRcdCFoYXMoKHBhcmVudFN0YXRlIGFzIEV4Y2x1ZGVcdTAwM2NJbW1lclN0YXRlLCBTZXRTdGF0ZVx1MDAzZSkuYXNzaWduZWRfISwgcHJvcCkgLy8gU2tpcCBkZWVwIHBhdGNoZXMgZm9yIGFzc2lnbmVkIGtleXMuXG5cdFx0XHRcdD8gcm9vdFBhdGghLmNvbmNhdChwcm9wKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZFxuXHRcdC8vIERyYWZ0cyBvd25lZCBieSBgc2NvcGVgIGFyZSBmaW5hbGl6ZWQgaGVyZS5cblx0XHRjb25zdCByZXMgPSBmaW5hbGl6ZShyb290U2NvcGUsIGNoaWxkVmFsdWUsIHBhdGgpXG5cdFx0c2V0KHRhcmdldE9iamVjdCwgcHJvcCwgcmVzKVxuXHRcdC8vIERyYWZ0cyBmcm9tIGFub3RoZXIgc2NvcGUgbXVzdCBwcmV2ZW50ZWQgdG8gYmUgZnJvemVuXG5cdFx0Ly8gaWYgd2UgZ290IGEgZHJhZnQgYmFjayBmcm9tIGZpbmFsaXplLCB3ZSdyZSBpbiBhIG5lc3RlZCBwcm9kdWNlIGFuZCBzaG91bGRuJ3QgZnJlZXplXG5cdFx0aWYgKGlzRHJhZnQocmVzKSkge1xuXHRcdFx0cm9vdFNjb3BlLmNhbkF1dG9GcmVlemVfID0gZmFsc2Vcblx0XHR9IGVsc2UgcmV0dXJuXG5cdH0gZWxzZSBpZiAodGFyZ2V0SXNTZXQpIHtcblx0XHR0YXJnZXRPYmplY3QuYWRkKGNoaWxkVmFsdWUpXG5cdH1cblx0Ly8gU2VhcmNoIG5ldyBvYmplY3RzIGZvciB1bmZpbmFsaXplZCBkcmFmdHMuIEZyb3plbiBvYmplY3RzIHNob3VsZCBuZXZlciBjb250YWluIGRyYWZ0cy5cblx0aWYgKGlzRHJhZnRhYmxlKGNoaWxkVmFsdWUpIFx1MDAyNlx1MDAyNiAhaXNGcm96ZW4oY2hpbGRWYWx1ZSkpIHtcblx0XHRpZiAoIXJvb3RTY29wZS5pbW1lcl8uYXV0b0ZyZWV6ZV8gXHUwMDI2XHUwMDI2IHJvb3RTY29wZS51bmZpbmFsaXplZERyYWZ0c18gXHUwMDNjIDEpIHtcblx0XHRcdC8vIG9wdGltaXphdGlvbjogaWYgYW4gb2JqZWN0IGlzIG5vdCBhIGRyYWZ0LCBhbmQgd2UgZG9uJ3QgaGF2ZSB0b1xuXHRcdFx0Ly8gZGVlcGZyZWV6ZSBldmVyeXRoaW5nLCBhbmQgd2UgYXJlIHN1cmUgdGhhdCBubyBkcmFmdHMgYXJlIGxlZnQgaW4gdGhlIHJlbWFpbmluZyBvYmplY3Rcblx0XHRcdC8vIGNhdXNlIHdlIHNhdyBhbmQgZmluYWxpemVkIGFsbCBkcmFmdHMgYWxyZWFkeTsgd2UgY2FuIHN0b3AgdmlzaXRpbmcgdGhlIHJlc3Qgb2YgdGhlIHRyZWUuXG5cdFx0XHQvLyBUaGlzIGJlbmVmaXRzIGVzcGVjaWFsbHkgYWRkaW5nIGxhcmdlIGRhdGEgdHJlZSdzIHdpdGhvdXQgZnVydGhlciBwcm9jZXNzaW5nLlxuXHRcdFx0Ly8gU2VlIGFkZC1kYXRhLmpzIHBlcmYgdGVzdFxuXHRcdFx0cmV0dXJuXG5cdFx0fVxuXHRcdGZpbmFsaXplKHJvb3RTY29wZSwgY2hpbGRWYWx1ZSlcblx0XHQvLyBJbW1lciBkZWVwIGZyZWV6ZXMgcGxhaW4gb2JqZWN0cywgc28gaWYgdGhlcmUgaXMgbm8gcGFyZW50IHN0YXRlLCB3ZSBmcmVlemUgYXMgd2VsbFxuXHRcdC8vIFBlciAjNTkwLCB3ZSBuZXZlciBmcmVlemUgc3ltYm9saWMgcHJvcGVydGllcy4gSnVzdCB0byBtYWtlIHN1cmUgZG9uJ3QgYWNjaWRlbnRhbGx5IGludGVyZmVyZVxuXHRcdC8vIHdpdGggb3RoZXIgZnJhbWV3b3Jrcy5cblx0XHRpZiAoXG5cdFx0XHQoIXBhcmVudFN0YXRlIHx8ICFwYXJlbnRTdGF0ZS5zY29wZV8ucGFyZW50XykgXHUwMDI2XHUwMDI2XG5cdFx0XHR0eXBlb2YgcHJvcCAhPT0gXCJzeW1ib2xcIiBcdTAwMjZcdTAwMjZcblx0XHRcdE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0YXJnZXRPYmplY3QsIHByb3ApXG5cdFx0KVxuXHRcdFx0bWF5YmVGcmVlemUocm9vdFNjb3BlLCBjaGlsZFZhbHVlKVxuXHR9XG59XG5cbmZ1bmN0aW9uIG1heWJlRnJlZXplKHNjb3BlOiBJbW1lclNjb3BlLCB2YWx1ZTogYW55LCBkZWVwID0gZmFsc2UpIHtcblx0Ly8gd2UgbmV2ZXIgZnJlZXplIGZvciBhIG5vbi1yb290IHNjb3BlOyBhcyBpdCB3b3VsZCBwcmV2ZW50IHBydW5pbmcgZm9yIGRyYWZ0cyBpbnNpZGUgd3JhcHBpbmcgb2JqZWN0c1xuXHRpZiAoIXNjb3BlLnBhcmVudF8gXHUwMDI2XHUwMDI2IHNjb3BlLmltbWVyXy5hdXRvRnJlZXplXyBcdTAwMjZcdTAwMjYgc2NvcGUuY2FuQXV0b0ZyZWV6ZV8pIHtcblx0XHRmcmVlemUodmFsdWUsIGRlZXApXG5cdH1cbn1cbiIsICJpbXBvcnQge1xuXHRlYWNoLFxuXHRoYXMsXG5cdGlzLFxuXHRpc0RyYWZ0YWJsZSxcblx0c2hhbGxvd0NvcHksXG5cdGxhdGVzdCxcblx0SW1tZXJCYXNlU3RhdGUsXG5cdEltbWVyU3RhdGUsXG5cdERyYWZ0ZWQsXG5cdEFueU9iamVjdCxcblx0QW55QXJyYXksXG5cdE9iamVjdGlzaCxcblx0Z2V0Q3VycmVudFNjb3BlLFxuXHRnZXRQcm90b3R5cGVPZixcblx0RFJBRlRfU1RBVEUsXG5cdGRpZSxcblx0Y3JlYXRlUHJveHksXG5cdEFyY2hUeXBlLFxuXHRJbW1lclNjb3BlXG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbmludGVyZmFjZSBQcm94eUJhc2VTdGF0ZSBleHRlbmRzIEltbWVyQmFzZVN0YXRlIHtcblx0YXNzaWduZWRfOiB7XG5cdFx0W3Byb3BlcnR5OiBzdHJpbmddOiBib29sZWFuXG5cdH1cblx0cGFyZW50Xz86IEltbWVyU3RhdGVcblx0cmV2b2tlXygpOiB2b2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJveHlPYmplY3RTdGF0ZSBleHRlbmRzIFByb3h5QmFzZVN0YXRlIHtcblx0dHlwZV86IEFyY2hUeXBlLk9iamVjdFxuXHRiYXNlXzogYW55XG5cdGNvcHlfOiBhbnlcblx0ZHJhZnRfOiBEcmFmdGVkXHUwMDNjQW55T2JqZWN0LCBQcm94eU9iamVjdFN0YXRlXHUwMDNlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJveHlBcnJheVN0YXRlIGV4dGVuZHMgUHJveHlCYXNlU3RhdGUge1xuXHR0eXBlXzogQXJjaFR5cGUuQXJyYXlcblx0YmFzZV86IEFueUFycmF5XG5cdGNvcHlfOiBBbnlBcnJheSB8IG51bGxcblx0ZHJhZnRfOiBEcmFmdGVkXHUwMDNjQW55QXJyYXksIFByb3h5QXJyYXlTdGF0ZVx1MDAzZVxufVxuXG50eXBlIFByb3h5U3RhdGUgPSBQcm94eU9iamVjdFN0YXRlIHwgUHJveHlBcnJheVN0YXRlXG5cbi8qKlxuICogUmV0dXJucyBhIG5ldyBkcmFmdCBvZiB0aGUgYGJhc2VgIG9iamVjdC5cbiAqXG4gKiBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBwYXJlbnQgZHJhZnQtc3RhdGUgKHVzZWQgaW50ZXJuYWxseSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm94eVByb3h5XHUwMDNjVCBleHRlbmRzIE9iamVjdGlzaFx1MDAzZShcblx0YmFzZTogVCxcblx0cGFyZW50PzogSW1tZXJTdGF0ZVxuKTogRHJhZnRlZFx1MDAzY1QsIFByb3h5U3RhdGVcdTAwM2Uge1xuXHRjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShiYXNlKVxuXHRjb25zdCBzdGF0ZTogUHJveHlTdGF0ZSA9IHtcblx0XHR0eXBlXzogaXNBcnJheSA/IEFyY2hUeXBlLkFycmF5IDogKEFyY2hUeXBlLk9iamVjdCBhcyBhbnkpLFxuXHRcdC8vIFRyYWNrIHdoaWNoIHByb2R1Y2UgY2FsbCB0aGlzIGlzIGFzc29jaWF0ZWQgd2l0aC5cblx0XHRzY29wZV86IHBhcmVudCA/IHBhcmVudC5zY29wZV8gOiBnZXRDdXJyZW50U2NvcGUoKSEsXG5cdFx0Ly8gVHJ1ZSBmb3IgYm90aCBzaGFsbG93IGFuZCBkZWVwIGNoYW5nZXMuXG5cdFx0bW9kaWZpZWRfOiBmYWxzZSxcblx0XHQvLyBVc2VkIGR1cmluZyBmaW5hbGl6YXRpb24uXG5cdFx0ZmluYWxpemVkXzogZmFsc2UsXG5cdFx0Ly8gVHJhY2sgd2hpY2ggcHJvcGVydGllcyBoYXZlIGJlZW4gYXNzaWduZWQgKHRydWUpIG9yIGRlbGV0ZWQgKGZhbHNlKS5cblx0XHRhc3NpZ25lZF86IHt9LFxuXHRcdC8vIFRoZSBwYXJlbnQgZHJhZnQgc3RhdGUuXG5cdFx0cGFyZW50XzogcGFyZW50LFxuXHRcdC8vIFRoZSBiYXNlIHN0YXRlLlxuXHRcdGJhc2VfOiBiYXNlLFxuXHRcdC8vIFRoZSBiYXNlIHByb3h5LlxuXHRcdGRyYWZ0XzogbnVsbCBhcyBhbnksIC8vIHNldCBiZWxvd1xuXHRcdC8vIFRoZSBiYXNlIGNvcHkgd2l0aCBhbnkgdXBkYXRlZCB2YWx1ZXMuXG5cdFx0Y29weV86IG51bGwsXG5cdFx0Ly8gQ2FsbGVkIGJ5IHRoZSBgcHJvZHVjZWAgZnVuY3Rpb24uXG5cdFx0cmV2b2tlXzogbnVsbCBhcyBhbnksXG5cdFx0aXNNYW51YWxfOiBmYWxzZVxuXHR9XG5cblx0Ly8gdGhlIHRyYXBzIG11c3QgdGFyZ2V0IHNvbWV0aGluZywgYSBiaXQgbGlrZSB0aGUgJ3JlYWwnIGJhc2UuXG5cdC8vIGJ1dCBhbHNvLCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gZGV0ZXJtaW5lIGZyb20gdGhlIHRhcmdldCB3aGF0IHRoZSByZWxldmFudCBzdGF0ZSBpc1xuXHQvLyAodG8gYXZvaWQgY3JlYXRpbmcgdHJhcHMgcGVyIGluc3RhbmNlIHRvIGNhcHR1cmUgdGhlIHN0YXRlIGluIGNsb3N1cmUsXG5cdC8vIGFuZCB0byBhdm9pZCBjcmVhdGluZyB3ZWlyZCBoaWRkZW4gcHJvcGVydGllcyBhcyB3ZWxsKVxuXHQvLyBTbyB0aGUgdHJpY2sgaXMgdG8gdXNlICdzdGF0ZScgYXMgdGhlIGFjdHVhbCAndGFyZ2V0JyEgKGFuZCBtYWtlIHN1cmUgd2UgaW50ZXJjZXB0IGV2ZXJ5dGhpbmcpXG5cdC8vIE5vdGUgdGhhdCBpbiB0aGUgY2FzZSBvZiBhbiBhcnJheSwgd2UgcHV0IHRoZSBzdGF0ZSBpbiBhbiBhcnJheSB0byBoYXZlIGJldHRlciBSZWZsZWN0IGRlZmF1bHRzIG9vdGJcblx0bGV0IHRhcmdldDogVCA9IHN0YXRlIGFzIGFueVxuXHRsZXQgdHJhcHM6IFByb3h5SGFuZGxlclx1MDAzY29iamVjdCB8IEFycmF5XHUwMDNjYW55XHUwMDNlXHUwMDNlID0gb2JqZWN0VHJhcHNcblx0aWYgKGlzQXJyYXkpIHtcblx0XHR0YXJnZXQgPSBbc3RhdGVdIGFzIGFueVxuXHRcdHRyYXBzID0gYXJyYXlUcmFwc1xuXHR9XG5cblx0Y29uc3Qge3Jldm9rZSwgcHJveHl9ID0gUHJveHkucmV2b2NhYmxlKHRhcmdldCwgdHJhcHMpXG5cdHN0YXRlLmRyYWZ0XyA9IHByb3h5IGFzIGFueVxuXHRzdGF0ZS5yZXZva2VfID0gcmV2b2tlXG5cdHJldHVybiBwcm94eSBhcyBhbnlcbn1cblxuLyoqXG4gKiBPYmplY3QgZHJhZnRzXG4gKi9cbmV4cG9ydCBjb25zdCBvYmplY3RUcmFwczogUHJveHlIYW5kbGVyXHUwMDNjUHJveHlTdGF0ZVx1MDAzZSA9IHtcblx0Z2V0KHN0YXRlLCBwcm9wKSB7XG5cdFx0aWYgKHByb3AgPT09IERSQUZUX1NUQVRFKSByZXR1cm4gc3RhdGVcblxuXHRcdGNvbnN0IHNvdXJjZSA9IGxhdGVzdChzdGF0ZSlcblx0XHRpZiAoIWhhcyhzb3VyY2UsIHByb3ApKSB7XG5cdFx0XHQvLyBub24tZXhpc3Rpbmcgb3Igbm9uLW93biBwcm9wZXJ0eS4uLlxuXHRcdFx0cmV0dXJuIHJlYWRQcm9wRnJvbVByb3RvKHN0YXRlLCBzb3VyY2UsIHByb3ApXG5cdFx0fVxuXHRcdGNvbnN0IHZhbHVlID0gc291cmNlW3Byb3BdXG5cdFx0aWYgKHN0YXRlLmZpbmFsaXplZF8gfHwgIWlzRHJhZnRhYmxlKHZhbHVlKSkge1xuXHRcdFx0cmV0dXJuIHZhbHVlXG5cdFx0fVxuXHRcdC8vIENoZWNrIGZvciBleGlzdGluZyBkcmFmdCBpbiBtb2RpZmllZCBzdGF0ZS5cblx0XHQvLyBBc3NpZ25lZCB2YWx1ZXMgYXJlIG5ldmVyIGRyYWZ0ZWQuIFRoaXMgY2F0Y2hlcyBhbnkgZHJhZnRzIHdlIGNyZWF0ZWQsIHRvby5cblx0XHRpZiAodmFsdWUgPT09IHBlZWsoc3RhdGUuYmFzZV8sIHByb3ApKSB7XG5cdFx0XHRwcmVwYXJlQ29weShzdGF0ZSlcblx0XHRcdHJldHVybiAoc3RhdGUuY29weV8hW3Byb3AgYXMgYW55XSA9IGNyZWF0ZVByb3h5KHZhbHVlLCBzdGF0ZSkpXG5cdFx0fVxuXHRcdHJldHVybiB2YWx1ZVxuXHR9LFxuXHRoYXMoc3RhdGUsIHByb3ApIHtcblx0XHRyZXR1cm4gcHJvcCBpbiBsYXRlc3Qoc3RhdGUpXG5cdH0sXG5cdG93bktleXMoc3RhdGUpIHtcblx0XHRyZXR1cm4gUmVmbGVjdC5vd25LZXlzKGxhdGVzdChzdGF0ZSkpXG5cdH0sXG5cdHNldChcblx0XHRzdGF0ZTogUHJveHlPYmplY3RTdGF0ZSxcblx0XHRwcm9wOiBzdHJpbmcgLyogc3RyaWN0bHkgbm90LCBidXQgaGVscHMgVFMgKi8sXG5cdFx0dmFsdWVcblx0KSB7XG5cdFx0Y29uc3QgZGVzYyA9IGdldERlc2NyaXB0b3JGcm9tUHJvdG8obGF0ZXN0KHN0YXRlKSwgcHJvcClcblx0XHRpZiAoZGVzYz8uc2V0KSB7XG5cdFx0XHQvLyBzcGVjaWFsIGNhc2U6IGlmIHRoaXMgd3JpdGUgaXMgY2FwdHVyZWQgYnkgYSBzZXR0ZXIsIHdlIGhhdmVcblx0XHRcdC8vIHRvIHRyaWdnZXIgaXQgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG5cdFx0XHRkZXNjLnNldC5jYWxsKHN0YXRlLmRyYWZ0XywgdmFsdWUpXG5cdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdH1cblx0XHRpZiAoIXN0YXRlLm1vZGlmaWVkXykge1xuXHRcdFx0Ly8gdGhlIGxhc3QgY2hlY2sgaXMgYmVjYXVzZSB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggc2V0dGluZyBhIG5vbi1leGlzdGluZyB0byB1bmRlZmluZWQgKHdoaWNoIGlzIGEgY2hhbmdlKVxuXHRcdFx0Ly8gZnJvbSBzZXR0aW5nIGFuIGV4aXN0aW5nIHByb3BlcnR5IHdpdGggdmFsdWUgdW5kZWZpbmVkIHRvIHVuZGVmaW5lZCAod2hpY2ggaXMgbm90IGEgY2hhbmdlKVxuXHRcdFx0Y29uc3QgY3VycmVudCA9IHBlZWsobGF0ZXN0KHN0YXRlKSwgcHJvcClcblx0XHRcdC8vIHNwZWNpYWwgY2FzZSwgaWYgd2UgYXNzaWduaW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSB0byBhIGRyYWZ0LCB3ZSBjYW4gaWdub3JlIHRoZSBhc3NpZ25tZW50XG5cdFx0XHRjb25zdCBjdXJyZW50U3RhdGU6IFByb3h5T2JqZWN0U3RhdGUgPSBjdXJyZW50Py5bRFJBRlRfU1RBVEVdXG5cdFx0XHRpZiAoY3VycmVudFN0YXRlIFx1MDAyNlx1MDAyNiBjdXJyZW50U3RhdGUuYmFzZV8gPT09IHZhbHVlKSB7XG5cdFx0XHRcdHN0YXRlLmNvcHlfIVtwcm9wXSA9IHZhbHVlXG5cdFx0XHRcdHN0YXRlLmFzc2lnbmVkX1twcm9wXSA9IGZhbHNlXG5cdFx0XHRcdHJldHVybiB0cnVlXG5cdFx0XHR9XG5cdFx0XHRpZiAoaXModmFsdWUsIGN1cnJlbnQpIFx1MDAyNlx1MDAyNiAodmFsdWUgIT09IHVuZGVmaW5lZCB8fCBoYXMoc3RhdGUuYmFzZV8sIHByb3ApKSlcblx0XHRcdFx0cmV0dXJuIHRydWVcblx0XHRcdHByZXBhcmVDb3B5KHN0YXRlKVxuXHRcdFx0bWFya0NoYW5nZWQoc3RhdGUpXG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0KHN0YXRlLmNvcHlfIVtwcm9wXSA9PT0gdmFsdWUgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdC8vIHNwZWNpYWwgY2FzZTogaGFuZGxlIG5ldyBwcm9wcyB3aXRoIHZhbHVlICd1bmRlZmluZWQnXG5cdFx0XHRcdCh2YWx1ZSAhPT0gdW5kZWZpbmVkIHx8IHByb3AgaW4gc3RhdGUuY29weV8pKSB8fFxuXHRcdFx0Ly8gc3BlY2lhbCBjYXNlOiBOYU5cblx0XHRcdChOdW1iZXIuaXNOYU4odmFsdWUpIFx1MDAyNlx1MDAyNiBOdW1iZXIuaXNOYU4oc3RhdGUuY29weV8hW3Byb3BdKSlcblx0XHQpXG5cdFx0XHRyZXR1cm4gdHJ1ZVxuXG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHN0YXRlLmNvcHlfIVtwcm9wXSA9IHZhbHVlXG5cdFx0c3RhdGUuYXNzaWduZWRfW3Byb3BdID0gdHJ1ZVxuXHRcdHJldHVybiB0cnVlXG5cdH0sXG5cdGRlbGV0ZVByb3BlcnR5KHN0YXRlLCBwcm9wOiBzdHJpbmcpIHtcblx0XHQvLyBUaGUgYHVuZGVmaW5lZGAgY2hlY2sgaXMgYSBmYXN0IHBhdGggZm9yIHByZS1leGlzdGluZyBrZXlzLlxuXHRcdGlmIChwZWVrKHN0YXRlLmJhc2VfLCBwcm9wKSAhPT0gdW5kZWZpbmVkIHx8IHByb3AgaW4gc3RhdGUuYmFzZV8pIHtcblx0XHRcdHN0YXRlLmFzc2lnbmVkX1twcm9wXSA9IGZhbHNlXG5cdFx0XHRwcmVwYXJlQ29weShzdGF0ZSlcblx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBpZiBhbiBvcmlnaW5hbGx5IG5vdCBhc3NpZ25lZCBwcm9wZXJ0eSB3YXMgZGVsZXRlZFxuXHRcdFx0ZGVsZXRlIHN0YXRlLmFzc2lnbmVkX1twcm9wXVxuXHRcdH1cblx0XHRpZiAoc3RhdGUuY29weV8pIHtcblx0XHRcdGRlbGV0ZSBzdGF0ZS5jb3B5X1twcm9wXVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZVxuXHR9LFxuXHQvLyBOb3RlOiBXZSBuZXZlciBjb2VyY2UgYGRlc2MudmFsdWVgIGludG8gYW4gSW1tZXIgZHJhZnQsIGJlY2F1c2Ugd2UgY2FuJ3QgbWFrZVxuXHQvLyB0aGUgc2FtZSBndWFyYW50ZWUgaW4gRVM1IG1vZGUuXG5cdGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdGF0ZSwgcHJvcCkge1xuXHRcdGNvbnN0IG93bmVyID0gbGF0ZXN0KHN0YXRlKVxuXHRcdGNvbnN0IGRlc2MgPSBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvd25lciwgcHJvcClcblx0XHRpZiAoIWRlc2MpIHJldHVybiBkZXNjXG5cdFx0cmV0dXJuIHtcblx0XHRcdHdyaXRhYmxlOiB0cnVlLFxuXHRcdFx0Y29uZmlndXJhYmxlOiBzdGF0ZS50eXBlXyAhPT0gQXJjaFR5cGUuQXJyYXkgfHwgcHJvcCAhPT0gXCJsZW5ndGhcIixcblx0XHRcdGVudW1lcmFibGU6IGRlc2MuZW51bWVyYWJsZSxcblx0XHRcdHZhbHVlOiBvd25lcltwcm9wXVxuXHRcdH1cblx0fSxcblx0ZGVmaW5lUHJvcGVydHkoKSB7XG5cdFx0ZGllKDExKVxuXHR9LFxuXHRnZXRQcm90b3R5cGVPZihzdGF0ZSkge1xuXHRcdHJldHVybiBnZXRQcm90b3R5cGVPZihzdGF0ZS5iYXNlXylcblx0fSxcblx0c2V0UHJvdG90eXBlT2YoKSB7XG5cdFx0ZGllKDEyKVxuXHR9XG59XG5cbi8qKlxuICogQXJyYXkgZHJhZnRzXG4gKi9cblxuY29uc3QgYXJyYXlUcmFwczogUHJveHlIYW5kbGVyXHUwMDNjW1Byb3h5QXJyYXlTdGF0ZV1cdTAwM2UgPSB7fVxuZWFjaChvYmplY3RUcmFwcywgKGtleSwgZm4pID1cdTAwM2Uge1xuXHQvLyBAdHMtaWdub3JlXG5cdGFycmF5VHJhcHNba2V5XSA9IGZ1bmN0aW9uKCkge1xuXHRcdGFyZ3VtZW50c1swXSA9IGFyZ3VtZW50c1swXVswXVxuXHRcdHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG5cdH1cbn0pXG5hcnJheVRyYXBzLmRlbGV0ZVByb3BlcnR5ID0gZnVuY3Rpb24oc3RhdGUsIHByb3ApIHtcblx0aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiBcdTAwMjZcdTAwMjYgaXNOYU4ocGFyc2VJbnQocHJvcCBhcyBhbnkpKSlcblx0XHRkaWUoMTMpXG5cdC8vIEB0cy1pZ25vcmVcblx0cmV0dXJuIGFycmF5VHJhcHMuc2V0IS5jYWxsKHRoaXMsIHN0YXRlLCBwcm9wLCB1bmRlZmluZWQpXG59XG5hcnJheVRyYXBzLnNldCA9IGZ1bmN0aW9uKHN0YXRlLCBwcm9wLCB2YWx1ZSkge1xuXHRpZiAoXG5cdFx0cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiIFx1MDAyNlx1MDAyNlxuXHRcdHByb3AgIT09IFwibGVuZ3RoXCIgXHUwMDI2XHUwMDI2XG5cdFx0aXNOYU4ocGFyc2VJbnQocHJvcCBhcyBhbnkpKVxuXHQpXG5cdFx0ZGllKDE0KVxuXHRyZXR1cm4gb2JqZWN0VHJhcHMuc2V0IS5jYWxsKHRoaXMsIHN0YXRlWzBdLCBwcm9wLCB2YWx1ZSwgc3RhdGVbMF0pXG59XG5cbi8vIEFjY2VzcyBhIHByb3BlcnR5IHdpdGhvdXQgY3JlYXRpbmcgYW4gSW1tZXIgZHJhZnQuXG5mdW5jdGlvbiBwZWVrKGRyYWZ0OiBEcmFmdGVkLCBwcm9wOiBQcm9wZXJ0eUtleSkge1xuXHRjb25zdCBzdGF0ZSA9IGRyYWZ0W0RSQUZUX1NUQVRFXVxuXHRjb25zdCBzb3VyY2UgPSBzdGF0ZSA/IGxhdGVzdChzdGF0ZSkgOiBkcmFmdFxuXHRyZXR1cm4gc291cmNlW3Byb3BdXG59XG5cbmZ1bmN0aW9uIHJlYWRQcm9wRnJvbVByb3RvKHN0YXRlOiBJbW1lclN0YXRlLCBzb3VyY2U6IGFueSwgcHJvcDogUHJvcGVydHlLZXkpIHtcblx0Y29uc3QgZGVzYyA9IGdldERlc2NyaXB0b3JGcm9tUHJvdG8oc291cmNlLCBwcm9wKVxuXHRyZXR1cm4gZGVzY1xuXHRcdD8gYHZhbHVlYCBpbiBkZXNjXG5cdFx0XHQ/IGRlc2MudmFsdWVcblx0XHRcdDogLy8gVGhpcyBpcyBhIHZlcnkgc3BlY2lhbCBjYXNlLCBpZiB0aGUgcHJvcCBpcyBhIGdldHRlciBkZWZpbmVkIGJ5IHRoZVxuXHRcdFx0ICAvLyBwcm90b3R5cGUsIHdlIHNob3VsZCBpbnZva2UgaXQgd2l0aCB0aGUgZHJhZnQgYXMgY29udGV4dCFcblx0XHRcdCAgZGVzYy5nZXQ/LmNhbGwoc3RhdGUuZHJhZnRfKVxuXHRcdDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGdldERlc2NyaXB0b3JGcm9tUHJvdG8oXG5cdHNvdXJjZTogYW55LFxuXHRwcm9wOiBQcm9wZXJ0eUtleVxuKTogUHJvcGVydHlEZXNjcmlwdG9yIHwgdW5kZWZpbmVkIHtcblx0Ly8gJ2luJyBjaGVja3MgcHJvdG8hXG5cdGlmICghKHByb3AgaW4gc291cmNlKSkgcmV0dXJuIHVuZGVmaW5lZFxuXHRsZXQgcHJvdG8gPSBnZXRQcm90b3R5cGVPZihzb3VyY2UpXG5cdHdoaWxlIChwcm90bykge1xuXHRcdGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBwcm9wKVxuXHRcdGlmIChkZXNjKSByZXR1cm4gZGVzY1xuXHRcdHByb3RvID0gZ2V0UHJvdG90eXBlT2YocHJvdG8pXG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFya0NoYW5nZWQoc3RhdGU6IEltbWVyU3RhdGUpIHtcblx0aWYgKCFzdGF0ZS5tb2RpZmllZF8pIHtcblx0XHRzdGF0ZS5tb2RpZmllZF8gPSB0cnVlXG5cdFx0aWYgKHN0YXRlLnBhcmVudF8pIHtcblx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlLnBhcmVudF8pXG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlQ29weShzdGF0ZToge1xuXHRiYXNlXzogYW55XG5cdGNvcHlfOiBhbnlcblx0c2NvcGVfOiBJbW1lclNjb3BlXG59KSB7XG5cdGlmICghc3RhdGUuY29weV8pIHtcblx0XHRzdGF0ZS5jb3B5XyA9IHNoYWxsb3dDb3B5KFxuXHRcdFx0c3RhdGUuYmFzZV8sXG5cdFx0XHRzdGF0ZS5zY29wZV8uaW1tZXJfLnVzZVN0cmljdFNoYWxsb3dDb3B5X1xuXHRcdClcblx0fVxufVxuIiwgImltcG9ydCB7XG5cdElQcm9kdWNlV2l0aFBhdGNoZXMsXG5cdElQcm9kdWNlLFxuXHRJbW1lclN0YXRlLFxuXHREcmFmdGVkLFxuXHRpc0RyYWZ0YWJsZSxcblx0cHJvY2Vzc1Jlc3VsdCxcblx0UGF0Y2gsXG5cdE9iamVjdGlzaCxcblx0RFJBRlRfU1RBVEUsXG5cdERyYWZ0LFxuXHRQYXRjaExpc3RlbmVyLFxuXHRpc0RyYWZ0LFxuXHRpc01hcCxcblx0aXNTZXQsXG5cdGNyZWF0ZVByb3h5UHJveHksXG5cdGdldFBsdWdpbixcblx0ZGllLFxuXHRlbnRlclNjb3BlLFxuXHRyZXZva2VTY29wZSxcblx0bGVhdmVTY29wZSxcblx0dXNlUGF0Y2hlc0luU2NvcGUsXG5cdGdldEN1cnJlbnRTY29wZSxcblx0Tk9USElORyxcblx0ZnJlZXplLFxuXHRjdXJyZW50XG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbmludGVyZmFjZSBQcm9kdWNlcnNGbnMge1xuXHRwcm9kdWNlOiBJUHJvZHVjZVxuXHRwcm9kdWNlV2l0aFBhdGNoZXM6IElQcm9kdWNlV2l0aFBhdGNoZXNcbn1cblxuZXhwb3J0IHR5cGUgU3RyaWN0TW9kZSA9IGJvb2xlYW4gfCBcImNsYXNzX29ubHlcIjtcblxuZXhwb3J0IGNsYXNzIEltbWVyIGltcGxlbWVudHMgUHJvZHVjZXJzRm5zIHtcblx0YXV0b0ZyZWV6ZV86IGJvb2xlYW4gPSB0cnVlXG5cdHVzZVN0cmljdFNoYWxsb3dDb3B5XzogU3RyaWN0TW9kZSA9IGZhbHNlXG5cblx0Y29uc3RydWN0b3IoY29uZmlnPzoge1xuXHRcdGF1dG9GcmVlemU/OiBib29sZWFuXG5cdFx0dXNlU3RyaWN0U2hhbGxvd0NvcHk/OiBTdHJpY3RNb2RlXG5cdH0pIHtcblx0XHRpZiAodHlwZW9mIGNvbmZpZz8uYXV0b0ZyZWV6ZSA9PT0gXCJib29sZWFuXCIpXG5cdFx0XHR0aGlzLnNldEF1dG9GcmVlemUoY29uZmlnIS5hdXRvRnJlZXplKVxuXHRcdGlmICh0eXBlb2YgY29uZmlnPy51c2VTdHJpY3RTaGFsbG93Q29weSA9PT0gXCJib29sZWFuXCIpXG5cdFx0XHR0aGlzLnNldFVzZVN0cmljdFNoYWxsb3dDb3B5KGNvbmZpZyEudXNlU3RyaWN0U2hhbGxvd0NvcHkpXG5cdH1cblxuXHQvKipcblx0ICogVGhlIGBwcm9kdWNlYCBmdW5jdGlvbiB0YWtlcyBhIHZhbHVlIGFuZCBhIFwicmVjaXBlIGZ1bmN0aW9uXCIgKHdob3NlXG5cdCAqIHJldHVybiB2YWx1ZSBvZnRlbiBkZXBlbmRzIG9uIHRoZSBiYXNlIHN0YXRlKS4gVGhlIHJlY2lwZSBmdW5jdGlvbiBpc1xuXHQgKiBmcmVlIHRvIG11dGF0ZSBpdHMgZmlyc3QgYXJndW1lbnQgaG93ZXZlciBpdCB3YW50cy4gQWxsIG11dGF0aW9ucyBhcmVcblx0ICogb25seSBldmVyIGFwcGxpZWQgdG8gYSBfX2NvcHlfXyBvZiB0aGUgYmFzZSBzdGF0ZS5cblx0ICpcblx0ICogUGFzcyBvbmx5IGEgZnVuY3Rpb24gdG8gY3JlYXRlIGEgXCJjdXJyaWVkIHByb2R1Y2VyXCIgd2hpY2ggcmVsaWV2ZXMgeW91XG5cdCAqIGZyb20gcGFzc2luZyB0aGUgcmVjaXBlIGZ1bmN0aW9uIGV2ZXJ5IHRpbWUuXG5cdCAqXG5cdCAqIE9ubHkgcGxhaW4gb2JqZWN0cyBhbmQgYXJyYXlzIGFyZSBtYWRlIG11dGFibGUuIEFsbCBvdGhlciBvYmplY3RzIGFyZVxuXHQgKiBjb25zaWRlcmVkIHVuY29weWFibGUuXG5cdCAqXG5cdCAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gaXMgX19ib3VuZF9fIHRvIGl0cyBgSW1tZXJgIGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2FueX0gYmFzZSAtIHRoZSBpbml0aWFsIHN0YXRlXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IHJlY2lwZSAtIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgYSBwcm94eSBvZiB0aGUgYmFzZSBzdGF0ZSBhcyBmaXJzdCBhcmd1bWVudCBhbmQgd2hpY2ggY2FuIGJlIGZyZWVseSBtb2RpZmllZFxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXRjaExpc3RlbmVyIC0gb3B0aW9uYWwgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCB3aXRoIGFsbCB0aGUgcGF0Y2hlcyBwcm9kdWNlZCBoZXJlXG5cdCAqIEByZXR1cm5zIHthbnl9IGEgbmV3IHN0YXRlLCBvciB0aGUgaW5pdGlhbCBzdGF0ZSBpZiBub3RoaW5nIHdhcyBtb2RpZmllZFxuXHQgKi9cblx0cHJvZHVjZTogSVByb2R1Y2UgPSAoYmFzZTogYW55LCByZWNpcGU/OiBhbnksIHBhdGNoTGlzdGVuZXI/OiBhbnkpID1cdTAwM2Uge1xuXHRcdC8vIGN1cnJpZWQgaW52b2NhdGlvblxuXHRcdGlmICh0eXBlb2YgYmFzZSA9PT0gXCJmdW5jdGlvblwiIFx1MDAyNlx1MDAyNiB0eXBlb2YgcmVjaXBlICE9PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdGNvbnN0IGRlZmF1bHRCYXNlID0gcmVjaXBlXG5cdFx0XHRyZWNpcGUgPSBiYXNlXG5cblx0XHRcdGNvbnN0IHNlbGYgPSB0aGlzXG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24gY3VycmllZFByb2R1Y2UoXG5cdFx0XHRcdHRoaXM6IGFueSxcblx0XHRcdFx0YmFzZSA9IGRlZmF1bHRCYXNlLFxuXHRcdFx0XHQuLi5hcmdzOiBhbnlbXVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiBzZWxmLnByb2R1Y2UoYmFzZSwgKGRyYWZ0OiBEcmFmdGVkKSA9XHUwMDNlIHJlY2lwZS5jYWxsKHRoaXMsIGRyYWZ0LCAuLi5hcmdzKSkgLy8gcHJldHRpZXItaWdub3JlXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiByZWNpcGUgIT09IFwiZnVuY3Rpb25cIikgZGllKDYpXG5cdFx0aWYgKHBhdGNoTGlzdGVuZXIgIT09IHVuZGVmaW5lZCBcdTAwMjZcdTAwMjYgdHlwZW9mIHBhdGNoTGlzdGVuZXIgIT09IFwiZnVuY3Rpb25cIilcblx0XHRcdGRpZSg3KVxuXG5cdFx0bGV0IHJlc3VsdFxuXG5cdFx0Ly8gT25seSBwbGFpbiBvYmplY3RzLCBhcnJheXMsIGFuZCBcImltbWVyYWJsZSBjbGFzc2VzXCIgYXJlIGRyYWZ0ZWQuXG5cdFx0aWYgKGlzRHJhZnRhYmxlKGJhc2UpKSB7XG5cdFx0XHRjb25zdCBzY29wZSA9IGVudGVyU2NvcGUodGhpcylcblx0XHRcdGNvbnN0IHByb3h5ID0gY3JlYXRlUHJveHkoYmFzZSwgdW5kZWZpbmVkKVxuXHRcdFx0bGV0IGhhc0Vycm9yID0gdHJ1ZVxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cmVzdWx0ID0gcmVjaXBlKHByb3h5KVxuXHRcdFx0XHRoYXNFcnJvciA9IGZhbHNlXG5cdFx0XHR9IGZpbmFsbHkge1xuXHRcdFx0XHQvLyBmaW5hbGx5IGluc3RlYWQgb2YgY2F0Y2ggKyByZXRocm93IGJldHRlciBwcmVzZXJ2ZXMgb3JpZ2luYWwgc3RhY2tcblx0XHRcdFx0aWYgKGhhc0Vycm9yKSByZXZva2VTY29wZShzY29wZSlcblx0XHRcdFx0ZWxzZSBsZWF2ZVNjb3BlKHNjb3BlKVxuXHRcdFx0fVxuXHRcdFx0dXNlUGF0Y2hlc0luU2NvcGUoc2NvcGUsIHBhdGNoTGlzdGVuZXIpXG5cdFx0XHRyZXR1cm4gcHJvY2Vzc1Jlc3VsdChyZXN1bHQsIHNjb3BlKVxuXHRcdH0gZWxzZSBpZiAoIWJhc2UgfHwgdHlwZW9mIGJhc2UgIT09IFwib2JqZWN0XCIpIHtcblx0XHRcdHJlc3VsdCA9IHJlY2lwZShiYXNlKVxuXHRcdFx0aWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSByZXN1bHQgPSBiYXNlXG5cdFx0XHRpZiAocmVzdWx0ID09PSBOT1RISU5HKSByZXN1bHQgPSB1bmRlZmluZWRcblx0XHRcdGlmICh0aGlzLmF1dG9GcmVlemVfKSBmcmVlemUocmVzdWx0LCB0cnVlKVxuXHRcdFx0aWYgKHBhdGNoTGlzdGVuZXIpIHtcblx0XHRcdFx0Y29uc3QgcDogUGF0Y2hbXSA9IFtdXG5cdFx0XHRcdGNvbnN0IGlwOiBQYXRjaFtdID0gW11cblx0XHRcdFx0Z2V0UGx1Z2luKFwiUGF0Y2hlc1wiKS5nZW5lcmF0ZVJlcGxhY2VtZW50UGF0Y2hlc18oYmFzZSwgcmVzdWx0LCBwLCBpcClcblx0XHRcdFx0cGF0Y2hMaXN0ZW5lcihwLCBpcClcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHRcblx0XHR9IGVsc2UgZGllKDEsIGJhc2UpXG5cdH1cblxuXHRwcm9kdWNlV2l0aFBhdGNoZXM6IElQcm9kdWNlV2l0aFBhdGNoZXMgPSAoYmFzZTogYW55LCByZWNpcGU/OiBhbnkpOiBhbnkgPVx1MDAzZSB7XG5cdFx0Ly8gY3VycmllZCBpbnZvY2F0aW9uXG5cdFx0aWYgKHR5cGVvZiBiYXNlID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdHJldHVybiAoc3RhdGU6IGFueSwgLi4uYXJnczogYW55W10pID1cdTAwM2Vcblx0XHRcdFx0dGhpcy5wcm9kdWNlV2l0aFBhdGNoZXMoc3RhdGUsIChkcmFmdDogYW55KSA9XHUwMDNlIGJhc2UoZHJhZnQsIC4uLmFyZ3MpKVxuXHRcdH1cblxuXHRcdGxldCBwYXRjaGVzOiBQYXRjaFtdLCBpbnZlcnNlUGF0Y2hlczogUGF0Y2hbXVxuXHRcdGNvbnN0IHJlc3VsdCA9IHRoaXMucHJvZHVjZShiYXNlLCByZWNpcGUsIChwOiBQYXRjaFtdLCBpcDogUGF0Y2hbXSkgPVx1MDAzZSB7XG5cdFx0XHRwYXRjaGVzID0gcFxuXHRcdFx0aW52ZXJzZVBhdGNoZXMgPSBpcFxuXHRcdH0pXG5cdFx0cmV0dXJuIFtyZXN1bHQsIHBhdGNoZXMhLCBpbnZlcnNlUGF0Y2hlcyFdXG5cdH1cblxuXHRjcmVhdGVEcmFmdFx1MDAzY1QgZXh0ZW5kcyBPYmplY3Rpc2hcdTAwM2UoYmFzZTogVCk6IERyYWZ0XHUwMDNjVFx1MDAzZSB7XG5cdFx0aWYgKCFpc0RyYWZ0YWJsZShiYXNlKSkgZGllKDgpXG5cdFx0aWYgKGlzRHJhZnQoYmFzZSkpIGJhc2UgPSBjdXJyZW50KGJhc2UpXG5cdFx0Y29uc3Qgc2NvcGUgPSBlbnRlclNjb3BlKHRoaXMpXG5cdFx0Y29uc3QgcHJveHkgPSBjcmVhdGVQcm94eShiYXNlLCB1bmRlZmluZWQpXG5cdFx0cHJveHlbRFJBRlRfU1RBVEVdLmlzTWFudWFsXyA9IHRydWVcblx0XHRsZWF2ZVNjb3BlKHNjb3BlKVxuXHRcdHJldHVybiBwcm94eSBhcyBhbnlcblx0fVxuXG5cdGZpbmlzaERyYWZ0XHUwMDNjRCBleHRlbmRzIERyYWZ0XHUwMDNjYW55XHUwMDNlXHUwMDNlKFxuXHRcdGRyYWZ0OiBELFxuXHRcdHBhdGNoTGlzdGVuZXI/OiBQYXRjaExpc3RlbmVyXG5cdCk6IEQgZXh0ZW5kcyBEcmFmdFx1MDAzY2luZmVyIFRcdTAwM2UgPyBUIDogbmV2ZXIge1xuXHRcdGNvbnN0IHN0YXRlOiBJbW1lclN0YXRlID0gZHJhZnQgXHUwMDI2XHUwMDI2IChkcmFmdCBhcyBhbnkpW0RSQUZUX1NUQVRFXVxuXHRcdGlmICghc3RhdGUgfHwgIXN0YXRlLmlzTWFudWFsXykgZGllKDkpXG5cdFx0Y29uc3Qge3Njb3BlXzogc2NvcGV9ID0gc3RhdGVcblx0XHR1c2VQYXRjaGVzSW5TY29wZShzY29wZSwgcGF0Y2hMaXN0ZW5lcilcblx0XHRyZXR1cm4gcHJvY2Vzc1Jlc3VsdCh1bmRlZmluZWQsIHNjb3BlKVxuXHR9XG5cblx0LyoqXG5cdCAqIFBhc3MgdHJ1ZSB0byBhdXRvbWF0aWNhbGx5IGZyZWV6ZSBhbGwgY29waWVzIGNyZWF0ZWQgYnkgSW1tZXIuXG5cdCAqXG5cdCAqIEJ5IGRlZmF1bHQsIGF1dG8tZnJlZXppbmcgaXMgZW5hYmxlZC5cblx0ICovXG5cdHNldEF1dG9GcmVlemUodmFsdWU6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmF1dG9GcmVlemVfID0gdmFsdWVcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXNzIHRydWUgdG8gZW5hYmxlIHN0cmljdCBzaGFsbG93IGNvcHkuXG5cdCAqXG5cdCAqIEJ5IGRlZmF1bHQsIGltbWVyIGRvZXMgbm90IGNvcHkgdGhlIG9iamVjdCBkZXNjcmlwdG9ycyBzdWNoIGFzIGdldHRlciwgc2V0dGVyIGFuZCBub24tZW51bXJhYmxlIHByb3BlcnRpZXMuXG5cdCAqL1xuXHRzZXRVc2VTdHJpY3RTaGFsbG93Q29weSh2YWx1ZTogU3RyaWN0TW9kZSkge1xuXHRcdHRoaXMudXNlU3RyaWN0U2hhbGxvd0NvcHlfID0gdmFsdWVcblx0fVxuXG5cdGFwcGx5UGF0Y2hlc1x1MDAzY1QgZXh0ZW5kcyBPYmplY3Rpc2hcdTAwM2UoYmFzZTogVCwgcGF0Y2hlczogcmVhZG9ubHkgUGF0Y2hbXSk6IFQge1xuXHRcdC8vIElmIGEgcGF0Y2ggcmVwbGFjZXMgdGhlIGVudGlyZSBzdGF0ZSwgdGFrZSB0aGF0IHJlcGxhY2VtZW50IGFzIGJhc2Vcblx0XHQvLyBiZWZvcmUgYXBwbHlpbmcgcGF0Y2hlc1xuXHRcdGxldCBpOiBudW1iZXJcblx0XHRmb3IgKGkgPSBwYXRjaGVzLmxlbmd0aCAtIDE7IGkgXHUwMDNlPSAwOyBpLS0pIHtcblx0XHRcdGNvbnN0IHBhdGNoID0gcGF0Y2hlc1tpXVxuXHRcdFx0aWYgKHBhdGNoLnBhdGgubGVuZ3RoID09PSAwIFx1MDAyNlx1MDAyNiBwYXRjaC5vcCA9PT0gXCJyZXBsYWNlXCIpIHtcblx0XHRcdFx0YmFzZSA9IHBhdGNoLnZhbHVlXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIElmIHRoZXJlIHdhcyBhIHBhdGNoIHRoYXQgcmVwbGFjZWQgdGhlIGVudGlyZSBzdGF0ZSwgc3RhcnQgZnJvbSB0aGVcblx0XHQvLyBwYXRjaCBhZnRlciB0aGF0LlxuXHRcdGlmIChpIFx1MDAzZSAtMSkge1xuXHRcdFx0cGF0Y2hlcyA9IHBhdGNoZXMuc2xpY2UoaSArIDEpXG5cdFx0fVxuXG5cdFx0Y29uc3QgYXBwbHlQYXRjaGVzSW1wbCA9IGdldFBsdWdpbihcIlBhdGNoZXNcIikuYXBwbHlQYXRjaGVzX1xuXHRcdGlmIChpc0RyYWZ0KGJhc2UpKSB7XG5cdFx0XHQvLyBOLkI6IG5ldmVyIGhpdHMgaWYgc29tZSBwYXRjaCBhIHJlcGxhY2VtZW50LCBwYXRjaGVzIGFyZSBuZXZlciBkcmFmdHNcblx0XHRcdHJldHVybiBhcHBseVBhdGNoZXNJbXBsKGJhc2UsIHBhdGNoZXMpXG5cdFx0fVxuXHRcdC8vIE90aGVyd2lzZSwgcHJvZHVjZSBhIGNvcHkgb2YgdGhlIGJhc2Ugc3RhdGUuXG5cdFx0cmV0dXJuIHRoaXMucHJvZHVjZShiYXNlLCAoZHJhZnQ6IERyYWZ0ZWQpID1cdTAwM2Vcblx0XHRcdGFwcGx5UGF0Y2hlc0ltcGwoZHJhZnQsIHBhdGNoZXMpXG5cdFx0KVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm94eVx1MDAzY1QgZXh0ZW5kcyBPYmplY3Rpc2hcdTAwM2UoXG5cdHZhbHVlOiBULFxuXHRwYXJlbnQ/OiBJbW1lclN0YXRlXG4pOiBEcmFmdGVkXHUwMDNjVCwgSW1tZXJTdGF0ZVx1MDAzZSB7XG5cdC8vIHByZWNvbmRpdGlvbjogY3JlYXRlUHJveHkgc2hvdWxkIGJlIGd1YXJkZWQgYnkgaXNEcmFmdGFibGUsIHNvIHdlIGtub3cgd2UgY2FuIHNhZmVseSBkcmFmdFxuXHRjb25zdCBkcmFmdDogRHJhZnRlZCA9IGlzTWFwKHZhbHVlKVxuXHRcdD8gZ2V0UGx1Z2luKFwiTWFwU2V0XCIpLnByb3h5TWFwXyh2YWx1ZSwgcGFyZW50KVxuXHRcdDogaXNTZXQodmFsdWUpXG5cdFx0PyBnZXRQbHVnaW4oXCJNYXBTZXRcIikucHJveHlTZXRfKHZhbHVlLCBwYXJlbnQpXG5cdFx0OiBjcmVhdGVQcm94eVByb3h5KHZhbHVlLCBwYXJlbnQpXG5cblx0Y29uc3Qgc2NvcGUgPSBwYXJlbnQgPyBwYXJlbnQuc2NvcGVfIDogZ2V0Q3VycmVudFNjb3BlKClcblx0c2NvcGUuZHJhZnRzXy5wdXNoKGRyYWZ0KVxuXHRyZXR1cm4gZHJhZnRcbn1cbiIsICJpbXBvcnQge1xuXHRkaWUsXG5cdGlzRHJhZnQsXG5cdHNoYWxsb3dDb3B5LFxuXHRlYWNoLFxuXHREUkFGVF9TVEFURSxcblx0c2V0LFxuXHRJbW1lclN0YXRlLFxuXHRpc0RyYWZ0YWJsZSxcblx0aXNGcm96ZW5cbn0gZnJvbSBcIi4uL2ludGVybmFsXCJcblxuLyoqIFRha2VzIGEgc25hcHNob3Qgb2YgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYSBkcmFmdCBhbmQgZmluYWxpemVzIGl0IChidXQgd2l0aG91dCBmcmVlemluZykuIFRoaXMgaXMgYSBncmVhdCB1dGlsaXR5IHRvIHByaW50IHRoZSBjdXJyZW50IHN0YXRlIGR1cmluZyBkZWJ1Z2dpbmcgKG5vIFByb3hpZXMgaW4gdGhlIHdheSkuIFRoZSBvdXRwdXQgb2YgY3VycmVudCBjYW4gYWxzbyBiZSBzYWZlbHkgbGVha2VkIG91dHNpZGUgdGhlIHByb2R1Y2VyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN1cnJlbnRcdTAwM2NUXHUwMDNlKHZhbHVlOiBUKTogVFxuZXhwb3J0IGZ1bmN0aW9uIGN1cnJlbnQodmFsdWU6IGFueSk6IGFueSB7XG5cdGlmICghaXNEcmFmdCh2YWx1ZSkpIGRpZSgxMCwgdmFsdWUpXG5cdHJldHVybiBjdXJyZW50SW1wbCh2YWx1ZSlcbn1cblxuZnVuY3Rpb24gY3VycmVudEltcGwodmFsdWU6IGFueSk6IGFueSB7XG5cdGlmICghaXNEcmFmdGFibGUodmFsdWUpIHx8IGlzRnJvemVuKHZhbHVlKSkgcmV0dXJuIHZhbHVlXG5cdGNvbnN0IHN0YXRlOiBJbW1lclN0YXRlIHwgdW5kZWZpbmVkID0gdmFsdWVbRFJBRlRfU1RBVEVdXG5cdGxldCBjb3B5OiBhbnlcblx0aWYgKHN0YXRlKSB7XG5cdFx0aWYgKCFzdGF0ZS5tb2RpZmllZF8pIHJldHVybiBzdGF0ZS5iYXNlX1xuXHRcdC8vIE9wdGltaXphdGlvbjogYXZvaWQgZ2VuZXJhdGluZyBuZXcgZHJhZnRzIGR1cmluZyBjb3B5aW5nXG5cdFx0c3RhdGUuZmluYWxpemVkXyA9IHRydWVcblx0XHRjb3B5ID0gc2hhbGxvd0NvcHkodmFsdWUsIHN0YXRlLnNjb3BlXy5pbW1lcl8udXNlU3RyaWN0U2hhbGxvd0NvcHlfKVxuXHR9IGVsc2Uge1xuXHRcdGNvcHkgPSBzaGFsbG93Q29weSh2YWx1ZSwgdHJ1ZSlcblx0fVxuXHQvLyByZWN1cnNlXG5cdGVhY2goY29weSwgKGtleSwgY2hpbGRWYWx1ZSkgPVx1MDAzZSB7XG5cdFx0c2V0KGNvcHksIGtleSwgY3VycmVudEltcGwoY2hpbGRWYWx1ZSkpXG5cdH0pXG5cdGlmIChzdGF0ZSkge1xuXHRcdHN0YXRlLmZpbmFsaXplZF8gPSBmYWxzZVxuXHR9XG5cdHJldHVybiBjb3B5XG59XG4iLCAiaW1wb3J0IHtpbW1lcmFibGV9IGZyb20gXCIuLi9pbW1lclwiXG5pbXBvcnQge1xuXHRJbW1lclN0YXRlLFxuXHRQYXRjaCxcblx0U2V0U3RhdGUsXG5cdFByb3h5QXJyYXlTdGF0ZSxcblx0TWFwU3RhdGUsXG5cdFByb3h5T2JqZWN0U3RhdGUsXG5cdFBhdGNoUGF0aCxcblx0Z2V0LFxuXHRlYWNoLFxuXHRoYXMsXG5cdGdldEFyY2h0eXBlLFxuXHRnZXRQcm90b3R5cGVPZixcblx0aXNTZXQsXG5cdGlzTWFwLFxuXHRsb2FkUGx1Z2luLFxuXHRBcmNoVHlwZSxcblx0ZGllLFxuXHRpc0RyYWZ0LFxuXHRpc0RyYWZ0YWJsZSxcblx0Tk9USElORyxcblx0ZXJyb3JzXG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVQYXRjaGVzKCkge1xuXHRjb25zdCBlcnJvck9mZnNldCA9IDE2XG5cdGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcblx0XHRlcnJvcnMucHVzaChcblx0XHRcdCdTZXRzIGNhbm5vdCBoYXZlIFwicmVwbGFjZVwiIHBhdGNoZXMuJyxcblx0XHRcdGZ1bmN0aW9uKG9wOiBzdHJpbmcpIHtcblx0XHRcdFx0cmV0dXJuIFwiVW5zdXBwb3J0ZWQgcGF0Y2ggb3BlcmF0aW9uOiBcIiArIG9wXG5cdFx0XHR9LFxuXHRcdFx0ZnVuY3Rpb24ocGF0aDogc3RyaW5nKSB7XG5cdFx0XHRcdHJldHVybiBcIkNhbm5vdCBhcHBseSBwYXRjaCwgcGF0aCBkb2Vzbid0IHJlc29sdmU6IFwiICsgcGF0aFxuXHRcdFx0fSxcblx0XHRcdFwiUGF0Y2hpbmcgcmVzZXJ2ZWQgYXR0cmlidXRlcyBsaWtlIF9fcHJvdG9fXywgcHJvdG90eXBlIGFuZCBjb25zdHJ1Y3RvciBpcyBub3QgYWxsb3dlZFwiXG5cdFx0KVxuXHR9XG5cblx0Y29uc3QgUkVQTEFDRSA9IFwicmVwbGFjZVwiXG5cdGNvbnN0IEFERCA9IFwiYWRkXCJcblx0Y29uc3QgUkVNT1ZFID0gXCJyZW1vdmVcIlxuXG5cdGZ1bmN0aW9uIGdlbmVyYXRlUGF0Y2hlc18oXG5cdFx0c3RhdGU6IEltbWVyU3RhdGUsXG5cdFx0YmFzZVBhdGg6IFBhdGNoUGF0aCxcblx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdCk6IHZvaWQge1xuXHRcdHN3aXRjaCAoc3RhdGUudHlwZV8pIHtcblx0XHRcdGNhc2UgQXJjaFR5cGUuT2JqZWN0OlxuXHRcdFx0Y2FzZSBBcmNoVHlwZS5NYXA6XG5cdFx0XHRcdHJldHVybiBnZW5lcmF0ZVBhdGNoZXNGcm9tQXNzaWduZWQoXG5cdFx0XHRcdFx0c3RhdGUsXG5cdFx0XHRcdFx0YmFzZVBhdGgsXG5cdFx0XHRcdFx0cGF0Y2hlcyxcblx0XHRcdFx0XHRpbnZlcnNlUGF0Y2hlc1xuXHRcdFx0XHQpXG5cdFx0XHRjYXNlIEFyY2hUeXBlLkFycmF5OlxuXHRcdFx0XHRyZXR1cm4gZ2VuZXJhdGVBcnJheVBhdGNoZXMoc3RhdGUsIGJhc2VQYXRoLCBwYXRjaGVzLCBpbnZlcnNlUGF0Y2hlcylcblx0XHRcdGNhc2UgQXJjaFR5cGUuU2V0OlxuXHRcdFx0XHRyZXR1cm4gZ2VuZXJhdGVTZXRQYXRjaGVzKFxuXHRcdFx0XHRcdChzdGF0ZSBhcyBhbnkpIGFzIFNldFN0YXRlLFxuXHRcdFx0XHRcdGJhc2VQYXRoLFxuXHRcdFx0XHRcdHBhdGNoZXMsXG5cdFx0XHRcdFx0aW52ZXJzZVBhdGNoZXNcblx0XHRcdFx0KVxuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIGdlbmVyYXRlQXJyYXlQYXRjaGVzKFxuXHRcdHN0YXRlOiBQcm94eUFycmF5U3RhdGUsXG5cdFx0YmFzZVBhdGg6IFBhdGNoUGF0aCxcblx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdCkge1xuXHRcdGxldCB7YmFzZV8sIGFzc2lnbmVkX30gPSBzdGF0ZVxuXHRcdGxldCBjb3B5XyA9IHN0YXRlLmNvcHlfIVxuXG5cdFx0Ly8gUmVkdWNlIGNvbXBsZXhpdHkgYnkgZW5zdXJpbmcgYGJhc2VgIGlzIG5ldmVyIGxvbmdlci5cblx0XHRpZiAoY29weV8ubGVuZ3RoIFx1MDAzYyBiYXNlXy5sZW5ndGgpIHtcblx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdDtbYmFzZV8sIGNvcHlfXSA9IFtjb3B5XywgYmFzZV9dXG5cdFx0XHQ7W3BhdGNoZXMsIGludmVyc2VQYXRjaGVzXSA9IFtpbnZlcnNlUGF0Y2hlcywgcGF0Y2hlc11cblx0XHR9XG5cblx0XHQvLyBQcm9jZXNzIHJlcGxhY2VkIGluZGljZXMuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgXHUwMDNjIGJhc2VfLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAoYXNzaWduZWRfW2ldIFx1MDAyNlx1MDAyNiBjb3B5X1tpXSAhPT0gYmFzZV9baV0pIHtcblx0XHRcdFx0Y29uc3QgcGF0aCA9IGJhc2VQYXRoLmNvbmNhdChbaV0pXG5cdFx0XHRcdHBhdGNoZXMucHVzaCh7XG5cdFx0XHRcdFx0b3A6IFJFUExBQ0UsXG5cdFx0XHRcdFx0cGF0aCxcblx0XHRcdFx0XHQvLyBOZWVkIHRvIG1heWJlIGNsb25lIGl0LCBhcyBpdCBjYW4gaW4gZmFjdCBiZSB0aGUgb3JpZ2luYWwgdmFsdWVcblx0XHRcdFx0XHQvLyBkdWUgdG8gdGhlIGJhc2UvY29weSBpbnZlcnNpb24gYXQgdGhlIHN0YXJ0IG9mIHRoaXMgZnVuY3Rpb25cblx0XHRcdFx0XHR2YWx1ZTogY2xvbmVQYXRjaFZhbHVlSWZOZWVkZWQoY29weV9baV0pXG5cdFx0XHRcdH0pXG5cdFx0XHRcdGludmVyc2VQYXRjaGVzLnB1c2goe1xuXHRcdFx0XHRcdG9wOiBSRVBMQUNFLFxuXHRcdFx0XHRcdHBhdGgsXG5cdFx0XHRcdFx0dmFsdWU6IGNsb25lUGF0Y2hWYWx1ZUlmTmVlZGVkKGJhc2VfW2ldKVxuXHRcdFx0XHR9KVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFByb2Nlc3MgYWRkZWQgaW5kaWNlcy5cblx0XHRmb3IgKGxldCBpID0gYmFzZV8ubGVuZ3RoOyBpIFx1MDAzYyBjb3B5Xy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgcGF0aCA9IGJhc2VQYXRoLmNvbmNhdChbaV0pXG5cdFx0XHRwYXRjaGVzLnB1c2goe1xuXHRcdFx0XHRvcDogQURELFxuXHRcdFx0XHRwYXRoLFxuXHRcdFx0XHQvLyBOZWVkIHRvIG1heWJlIGNsb25lIGl0LCBhcyBpdCBjYW4gaW4gZmFjdCBiZSB0aGUgb3JpZ2luYWwgdmFsdWVcblx0XHRcdFx0Ly8gZHVlIHRvIHRoZSBiYXNlL2NvcHkgaW52ZXJzaW9uIGF0IHRoZSBzdGFydCBvZiB0aGlzIGZ1bmN0aW9uXG5cdFx0XHRcdHZhbHVlOiBjbG9uZVBhdGNoVmFsdWVJZk5lZWRlZChjb3B5X1tpXSlcblx0XHRcdH0pXG5cdFx0fVxuXHRcdGZvciAobGV0IGkgPSBjb3B5Xy5sZW5ndGggLSAxOyBiYXNlXy5sZW5ndGggXHUwMDNjPSBpOyAtLWkpIHtcblx0XHRcdGNvbnN0IHBhdGggPSBiYXNlUGF0aC5jb25jYXQoW2ldKVxuXHRcdFx0aW52ZXJzZVBhdGNoZXMucHVzaCh7XG5cdFx0XHRcdG9wOiBSRU1PVkUsXG5cdFx0XHRcdHBhdGhcblx0XHRcdH0pXG5cdFx0fVxuXHR9XG5cblx0Ly8gVGhpcyBpcyB1c2VkIGZvciBib3RoIE1hcCBvYmplY3RzIGFuZCBub3JtYWwgb2JqZWN0cy5cblx0ZnVuY3Rpb24gZ2VuZXJhdGVQYXRjaGVzRnJvbUFzc2lnbmVkKFxuXHRcdHN0YXRlOiBNYXBTdGF0ZSB8IFByb3h5T2JqZWN0U3RhdGUsXG5cdFx0YmFzZVBhdGg6IFBhdGNoUGF0aCxcblx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdCkge1xuXHRcdGNvbnN0IHtiYXNlXywgY29weV99ID0gc3RhdGVcblx0XHRlYWNoKHN0YXRlLmFzc2lnbmVkXyEsIChrZXksIGFzc2lnbmVkVmFsdWUpID1cdTAwM2Uge1xuXHRcdFx0Y29uc3Qgb3JpZ1ZhbHVlID0gZ2V0KGJhc2VfLCBrZXkpXG5cdFx0XHRjb25zdCB2YWx1ZSA9IGdldChjb3B5XyEsIGtleSlcblx0XHRcdGNvbnN0IG9wID0gIWFzc2lnbmVkVmFsdWUgPyBSRU1PVkUgOiBoYXMoYmFzZV8sIGtleSkgPyBSRVBMQUNFIDogQUREXG5cdFx0XHRpZiAob3JpZ1ZhbHVlID09PSB2YWx1ZSBcdTAwMjZcdTAwMjYgb3AgPT09IFJFUExBQ0UpIHJldHVyblxuXHRcdFx0Y29uc3QgcGF0aCA9IGJhc2VQYXRoLmNvbmNhdChrZXkgYXMgYW55KVxuXHRcdFx0cGF0Y2hlcy5wdXNoKG9wID09PSBSRU1PVkUgPyB7b3AsIHBhdGh9IDoge29wLCBwYXRoLCB2YWx1ZX0pXG5cdFx0XHRpbnZlcnNlUGF0Y2hlcy5wdXNoKFxuXHRcdFx0XHRvcCA9PT0gQUREXG5cdFx0XHRcdFx0PyB7b3A6IFJFTU9WRSwgcGF0aH1cblx0XHRcdFx0XHQ6IG9wID09PSBSRU1PVkVcblx0XHRcdFx0XHQ/IHtvcDogQURELCBwYXRoLCB2YWx1ZTogY2xvbmVQYXRjaFZhbHVlSWZOZWVkZWQob3JpZ1ZhbHVlKX1cblx0XHRcdFx0XHQ6IHtvcDogUkVQTEFDRSwgcGF0aCwgdmFsdWU6IGNsb25lUGF0Y2hWYWx1ZUlmTmVlZGVkKG9yaWdWYWx1ZSl9XG5cdFx0XHQpXG5cdFx0fSlcblx0fVxuXG5cdGZ1bmN0aW9uIGdlbmVyYXRlU2V0UGF0Y2hlcyhcblx0XHRzdGF0ZTogU2V0U3RhdGUsXG5cdFx0YmFzZVBhdGg6IFBhdGNoUGF0aCxcblx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdCkge1xuXHRcdGxldCB7YmFzZV8sIGNvcHlffSA9IHN0YXRlXG5cblx0XHRsZXQgaSA9IDBcblx0XHRiYXNlXy5mb3JFYWNoKCh2YWx1ZTogYW55KSA9XHUwMDNlIHtcblx0XHRcdGlmICghY29weV8hLmhhcyh2YWx1ZSkpIHtcblx0XHRcdFx0Y29uc3QgcGF0aCA9IGJhc2VQYXRoLmNvbmNhdChbaV0pXG5cdFx0XHRcdHBhdGNoZXMucHVzaCh7XG5cdFx0XHRcdFx0b3A6IFJFTU9WRSxcblx0XHRcdFx0XHRwYXRoLFxuXHRcdFx0XHRcdHZhbHVlXG5cdFx0XHRcdH0pXG5cdFx0XHRcdGludmVyc2VQYXRjaGVzLnVuc2hpZnQoe1xuXHRcdFx0XHRcdG9wOiBBREQsXG5cdFx0XHRcdFx0cGF0aCxcblx0XHRcdFx0XHR2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0fVxuXHRcdFx0aSsrXG5cdFx0fSlcblx0XHRpID0gMFxuXHRcdGNvcHlfIS5mb3JFYWNoKCh2YWx1ZTogYW55KSA9XHUwMDNlIHtcblx0XHRcdGlmICghYmFzZV8uaGFzKHZhbHVlKSkge1xuXHRcdFx0XHRjb25zdCBwYXRoID0gYmFzZVBhdGguY29uY2F0KFtpXSlcblx0XHRcdFx0cGF0Y2hlcy5wdXNoKHtcblx0XHRcdFx0XHRvcDogQURELFxuXHRcdFx0XHRcdHBhdGgsXG5cdFx0XHRcdFx0dmFsdWVcblx0XHRcdFx0fSlcblx0XHRcdFx0aW52ZXJzZVBhdGNoZXMudW5zaGlmdCh7XG5cdFx0XHRcdFx0b3A6IFJFTU9WRSxcblx0XHRcdFx0XHRwYXRoLFxuXHRcdFx0XHRcdHZhbHVlXG5cdFx0XHRcdH0pXG5cdFx0XHR9XG5cdFx0XHRpKytcblx0XHR9KVxuXHR9XG5cblx0ZnVuY3Rpb24gZ2VuZXJhdGVSZXBsYWNlbWVudFBhdGNoZXNfKFxuXHRcdGJhc2VWYWx1ZTogYW55LFxuXHRcdHJlcGxhY2VtZW50OiBhbnksXG5cdFx0cGF0Y2hlczogUGF0Y2hbXSxcblx0XHRpbnZlcnNlUGF0Y2hlczogUGF0Y2hbXVxuXHQpOiB2b2lkIHtcblx0XHRwYXRjaGVzLnB1c2goe1xuXHRcdFx0b3A6IFJFUExBQ0UsXG5cdFx0XHRwYXRoOiBbXSxcblx0XHRcdHZhbHVlOiByZXBsYWNlbWVudCA9PT0gTk9USElORyA/IHVuZGVmaW5lZCA6IHJlcGxhY2VtZW50XG5cdFx0fSlcblx0XHRpbnZlcnNlUGF0Y2hlcy5wdXNoKHtcblx0XHRcdG9wOiBSRVBMQUNFLFxuXHRcdFx0cGF0aDogW10sXG5cdFx0XHR2YWx1ZTogYmFzZVZhbHVlXG5cdFx0fSlcblx0fVxuXG5cdGZ1bmN0aW9uIGFwcGx5UGF0Y2hlc19cdTAwM2NUXHUwMDNlKGRyYWZ0OiBULCBwYXRjaGVzOiByZWFkb25seSBQYXRjaFtdKTogVCB7XG5cdFx0cGF0Y2hlcy5mb3JFYWNoKHBhdGNoID1cdTAwM2Uge1xuXHRcdFx0Y29uc3Qge3BhdGgsIG9wfSA9IHBhdGNoXG5cblx0XHRcdGxldCBiYXNlOiBhbnkgPSBkcmFmdFxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgXHUwMDNjIHBhdGgubGVuZ3RoIC0gMTsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHBhcmVudFR5cGUgPSBnZXRBcmNodHlwZShiYXNlKVxuXHRcdFx0XHRsZXQgcCA9IHBhdGhbaV1cblx0XHRcdFx0aWYgKHR5cGVvZiBwICE9PSBcInN0cmluZ1wiIFx1MDAyNlx1MDAyNiB0eXBlb2YgcCAhPT0gXCJudW1iZXJcIikge1xuXHRcdFx0XHRcdHAgPSBcIlwiICsgcFxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gU2VlICM3MzgsIGF2b2lkIHByb3RvdHlwZSBwb2xsdXRpb25cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdChwYXJlbnRUeXBlID09PSBBcmNoVHlwZS5PYmplY3QgfHwgcGFyZW50VHlwZSA9PT0gQXJjaFR5cGUuQXJyYXkpIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHRcdChwID09PSBcIl9fcHJvdG9fX1wiIHx8IHAgPT09IFwiY29uc3RydWN0b3JcIilcblx0XHRcdFx0KVxuXHRcdFx0XHRcdGRpZShlcnJvck9mZnNldCArIDMpXG5cdFx0XHRcdGlmICh0eXBlb2YgYmFzZSA9PT0gXCJmdW5jdGlvblwiIFx1MDAyNlx1MDAyNiBwID09PSBcInByb3RvdHlwZVwiKVxuXHRcdFx0XHRcdGRpZShlcnJvck9mZnNldCArIDMpXG5cdFx0XHRcdGJhc2UgPSBnZXQoYmFzZSwgcClcblx0XHRcdFx0aWYgKHR5cGVvZiBiYXNlICE9PSBcIm9iamVjdFwiKSBkaWUoZXJyb3JPZmZzZXQgKyAyLCBwYXRoLmpvaW4oXCIvXCIpKVxuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCB0eXBlID0gZ2V0QXJjaHR5cGUoYmFzZSlcblx0XHRcdGNvbnN0IHZhbHVlID0gZGVlcENsb25lUGF0Y2hWYWx1ZShwYXRjaC52YWx1ZSkgLy8gdXNlZCB0byBjbG9uZSBwYXRjaCB0byBlbnN1cmUgb3JpZ2luYWwgcGF0Y2ggaXMgbm90IG1vZGlmaWVkLCBzZWUgIzQxMVxuXHRcdFx0Y29uc3Qga2V5ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdXG5cdFx0XHRzd2l0Y2ggKG9wKSB7XG5cdFx0XHRcdGNhc2UgUkVQTEFDRTpcblx0XHRcdFx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdFx0XHRcdGNhc2UgQXJjaFR5cGUuTWFwOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYmFzZS5zZXQoa2V5LCB2YWx1ZSlcblx0XHRcdFx0XHRcdC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cdFx0XHRcdFx0XHRjYXNlIEFyY2hUeXBlLlNldDpcblx0XHRcdFx0XHRcdFx0ZGllKGVycm9yT2Zmc2V0KVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0Ly8gaWYgdmFsdWUgaXMgYW4gb2JqZWN0LCB0aGVuIGl0J3MgYXNzaWduZWQgYnkgcmVmZXJlbmNlXG5cdFx0XHRcdFx0XHRcdC8vIGluIHRoZSBmb2xsb3dpbmcgYWRkIG9yIHJlbW92ZSBvcHMsIHRoZSB2YWx1ZSBmaWVsZCBpbnNpZGUgdGhlIHBhdGNoIHdpbGwgYWxzbyBiZSBtb2RpZnllZFxuXHRcdFx0XHRcdFx0XHQvLyBzbyB3ZSB1c2UgdmFsdWUgZnJvbSB0aGUgY2xvbmVkIHBhdGNoXG5cdFx0XHRcdFx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChiYXNlW2tleV0gPSB2YWx1ZSlcblx0XHRcdFx0XHR9XG5cdFx0XHRcdGNhc2UgQUREOlxuXHRcdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdFx0Y2FzZSBBcmNoVHlwZS5BcnJheTpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGtleSA9PT0gXCItXCJcblx0XHRcdFx0XHRcdFx0XHQ/IGJhc2UucHVzaCh2YWx1ZSlcblx0XHRcdFx0XHRcdFx0XHQ6IGJhc2Uuc3BsaWNlKGtleSBhcyBhbnksIDAsIHZhbHVlKVxuXHRcdFx0XHRcdFx0Y2FzZSBBcmNoVHlwZS5NYXA6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBiYXNlLnNldChrZXksIHZhbHVlKVxuXHRcdFx0XHRcdFx0Y2FzZSBBcmNoVHlwZS5TZXQ6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBiYXNlLmFkZCh2YWx1ZSlcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoYmFzZVtrZXldID0gdmFsdWUpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRjYXNlIFJFTU9WRTpcblx0XHRcdFx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdFx0XHRcdGNhc2UgQXJjaFR5cGUuQXJyYXk6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBiYXNlLnNwbGljZShrZXkgYXMgYW55LCAxKVxuXHRcdFx0XHRcdFx0Y2FzZSBBcmNoVHlwZS5NYXA6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBiYXNlLmRlbGV0ZShrZXkpXG5cdFx0XHRcdFx0XHRjYXNlIEFyY2hUeXBlLlNldDpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGJhc2UuZGVsZXRlKHBhdGNoLnZhbHVlKVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGRlbGV0ZSBiYXNlW2tleV1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0ZGllKGVycm9yT2Zmc2V0ICsgMSwgb3ApXG5cdFx0XHR9XG5cdFx0fSlcblxuXHRcdHJldHVybiBkcmFmdFxuXHR9XG5cblx0Ly8gb3B0aW1pemU6IHRoaXMgaXMgcXVpdGUgYSBwZXJmb3JtYW5jZSBoaXQsIGNhbiB3ZSBkZXRlY3QgaW50ZWxsaWdlbnRseSB3aGVuIGl0IGlzIG5lZWRlZD9cblx0Ly8gRS5nLiBhdXRvLWRyYWZ0IHdoZW4gbmV3IG9iamVjdHMgZnJvbSBvdXRzaWRlIGFyZSBhc3NpZ25lZCBhbmQgbW9kaWZpZWQ/XG5cdC8vIChTZWUgZmFpbGluZyB0ZXN0IHdoZW4gZGVlcENsb25lIGp1c3QgcmV0dXJucyBvYmopXG5cdGZ1bmN0aW9uIGRlZXBDbG9uZVBhdGNoVmFsdWVcdTAwM2NUXHUwMDNlKG9iajogVCk6IFRcblx0ZnVuY3Rpb24gZGVlcENsb25lUGF0Y2hWYWx1ZShvYmo6IGFueSkge1xuXHRcdGlmICghaXNEcmFmdGFibGUob2JqKSkgcmV0dXJuIG9ialxuXHRcdGlmIChBcnJheS5pc0FycmF5KG9iaikpIHJldHVybiBvYmoubWFwKGRlZXBDbG9uZVBhdGNoVmFsdWUpXG5cdFx0aWYgKGlzTWFwKG9iaikpXG5cdFx0XHRyZXR1cm4gbmV3IE1hcChcblx0XHRcdFx0QXJyYXkuZnJvbShvYmouZW50cmllcygpKS5tYXAoKFtrLCB2XSkgPVx1MDAzZSBbaywgZGVlcENsb25lUGF0Y2hWYWx1ZSh2KV0pXG5cdFx0XHQpXG5cdFx0aWYgKGlzU2V0KG9iaikpIHJldHVybiBuZXcgU2V0KEFycmF5LmZyb20ob2JqKS5tYXAoZGVlcENsb25lUGF0Y2hWYWx1ZSkpXG5cdFx0Y29uc3QgY2xvbmVkID0gT2JqZWN0LmNyZWF0ZShnZXRQcm90b3R5cGVPZihvYmopKVxuXHRcdGZvciAoY29uc3Qga2V5IGluIG9iaikgY2xvbmVkW2tleV0gPSBkZWVwQ2xvbmVQYXRjaFZhbHVlKG9ialtrZXldKVxuXHRcdGlmIChoYXMob2JqLCBpbW1lcmFibGUpKSBjbG9uZWRbaW1tZXJhYmxlXSA9IG9ialtpbW1lcmFibGVdXG5cdFx0cmV0dXJuIGNsb25lZFxuXHR9XG5cblx0ZnVuY3Rpb24gY2xvbmVQYXRjaFZhbHVlSWZOZWVkZWRcdTAwM2NUXHUwMDNlKG9iajogVCk6IFQge1xuXHRcdGlmIChpc0RyYWZ0KG9iaikpIHtcblx0XHRcdHJldHVybiBkZWVwQ2xvbmVQYXRjaFZhbHVlKG9iailcblx0XHR9IGVsc2UgcmV0dXJuIG9ialxuXHR9XG5cblx0bG9hZFBsdWdpbihcIlBhdGNoZXNcIiwge1xuXHRcdGFwcGx5UGF0Y2hlc18sXG5cdFx0Z2VuZXJhdGVQYXRjaGVzXyxcblx0XHRnZW5lcmF0ZVJlcGxhY2VtZW50UGF0Y2hlc19cblx0fSlcbn1cbiIsICIvLyB0eXBlcyBvbmx5IVxuaW1wb3J0IHtcblx0SW1tZXJTdGF0ZSxcblx0QW55TWFwLFxuXHRBbnlTZXQsXG5cdE1hcFN0YXRlLFxuXHRTZXRTdGF0ZSxcblx0RFJBRlRfU1RBVEUsXG5cdGdldEN1cnJlbnRTY29wZSxcblx0bGF0ZXN0LFxuXHRpc0RyYWZ0YWJsZSxcblx0Y3JlYXRlUHJveHksXG5cdGxvYWRQbHVnaW4sXG5cdG1hcmtDaGFuZ2VkLFxuXHRkaWUsXG5cdEFyY2hUeXBlLFxuXHRlYWNoXG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVNYXBTZXQoKSB7XG5cdGNsYXNzIERyYWZ0TWFwIGV4dGVuZHMgTWFwIHtcblx0XHRbRFJBRlRfU1RBVEVdOiBNYXBTdGF0ZVxuXG5cdFx0Y29uc3RydWN0b3IodGFyZ2V0OiBBbnlNYXAsIHBhcmVudD86IEltbWVyU3RhdGUpIHtcblx0XHRcdHN1cGVyKClcblx0XHRcdHRoaXNbRFJBRlRfU1RBVEVdID0ge1xuXHRcdFx0XHR0eXBlXzogQXJjaFR5cGUuTWFwLFxuXHRcdFx0XHRwYXJlbnRfOiBwYXJlbnQsXG5cdFx0XHRcdHNjb3BlXzogcGFyZW50ID8gcGFyZW50LnNjb3BlXyA6IGdldEN1cnJlbnRTY29wZSgpISxcblx0XHRcdFx0bW9kaWZpZWRfOiBmYWxzZSxcblx0XHRcdFx0ZmluYWxpemVkXzogZmFsc2UsXG5cdFx0XHRcdGNvcHlfOiB1bmRlZmluZWQsXG5cdFx0XHRcdGFzc2lnbmVkXzogdW5kZWZpbmVkLFxuXHRcdFx0XHRiYXNlXzogdGFyZ2V0LFxuXHRcdFx0XHRkcmFmdF86IHRoaXMgYXMgYW55LFxuXHRcdFx0XHRpc01hbnVhbF86IGZhbHNlLFxuXHRcdFx0XHRyZXZva2VkXzogZmFsc2Vcblx0XHRcdH1cblx0XHR9XG5cblx0XHRnZXQgc2l6ZSgpOiBudW1iZXIge1xuXHRcdFx0cmV0dXJuIGxhdGVzdCh0aGlzW0RSQUZUX1NUQVRFXSkuc2l6ZVxuXHRcdH1cblxuXHRcdGhhcyhrZXk6IGFueSk6IGJvb2xlYW4ge1xuXHRcdFx0cmV0dXJuIGxhdGVzdCh0aGlzW0RSQUZUX1NUQVRFXSkuaGFzKGtleSlcblx0XHR9XG5cblx0XHRzZXQoa2V5OiBhbnksIHZhbHVlOiBhbnkpIHtcblx0XHRcdGNvbnN0IHN0YXRlOiBNYXBTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRpZiAoIWxhdGVzdChzdGF0ZSkuaGFzKGtleSkgfHwgbGF0ZXN0KHN0YXRlKS5nZXQoa2V5KSAhPT0gdmFsdWUpIHtcblx0XHRcdFx0cHJlcGFyZU1hcENvcHkoc3RhdGUpXG5cdFx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdFx0XHRzdGF0ZS5hc3NpZ25lZF8hLnNldChrZXksIHRydWUpXG5cdFx0XHRcdHN0YXRlLmNvcHlfIS5zZXQoa2V5LCB2YWx1ZSlcblx0XHRcdFx0c3RhdGUuYXNzaWduZWRfIS5zZXQoa2V5LCB0cnVlKVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXNcblx0XHR9XG5cblx0XHRkZWxldGUoa2V5OiBhbnkpOiBib29sZWFuIHtcblx0XHRcdGlmICghdGhpcy5oYXMoa2V5KSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHRcdH1cblxuXHRcdFx0Y29uc3Qgc3RhdGU6IE1hcFN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV1cblx0XHRcdGFzc2VydFVucmV2b2tlZChzdGF0ZSlcblx0XHRcdHByZXBhcmVNYXBDb3B5KHN0YXRlKVxuXHRcdFx0bWFya0NoYW5nZWQoc3RhdGUpXG5cdFx0XHRpZiAoc3RhdGUuYmFzZV8uaGFzKGtleSkpIHtcblx0XHRcdFx0c3RhdGUuYXNzaWduZWRfIS5zZXQoa2V5LCBmYWxzZSlcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHN0YXRlLmFzc2lnbmVkXyEuZGVsZXRlKGtleSlcblx0XHRcdH1cblx0XHRcdHN0YXRlLmNvcHlfIS5kZWxldGUoa2V5KVxuXHRcdFx0cmV0dXJuIHRydWVcblx0XHR9XG5cblx0XHRjbGVhcigpIHtcblx0XHRcdGNvbnN0IHN0YXRlOiBNYXBTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRpZiAobGF0ZXN0KHN0YXRlKS5zaXplKSB7XG5cdFx0XHRcdHByZXBhcmVNYXBDb3B5KHN0YXRlKVxuXHRcdFx0XHRtYXJrQ2hhbmdlZChzdGF0ZSlcblx0XHRcdFx0c3RhdGUuYXNzaWduZWRfID0gbmV3IE1hcCgpXG5cdFx0XHRcdGVhY2goc3RhdGUuYmFzZV8sIGtleSA9XHUwMDNlIHtcblx0XHRcdFx0XHRzdGF0ZS5hc3NpZ25lZF8hLnNldChrZXksIGZhbHNlKVxuXHRcdFx0XHR9KVxuXHRcdFx0XHRzdGF0ZS5jb3B5XyEuY2xlYXIoKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZvckVhY2goY2I6ICh2YWx1ZTogYW55LCBrZXk6IGFueSwgc2VsZjogYW55KSA9XHUwMDNlIHZvaWQsIHRoaXNBcmc/OiBhbnkpIHtcblx0XHRcdGNvbnN0IHN0YXRlOiBNYXBTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRsYXRlc3Qoc3RhdGUpLmZvckVhY2goKF92YWx1ZTogYW55LCBrZXk6IGFueSwgX21hcDogYW55KSA9XHUwMDNlIHtcblx0XHRcdFx0Y2IuY2FsbCh0aGlzQXJnLCB0aGlzLmdldChrZXkpLCBrZXksIHRoaXMpXG5cdFx0XHR9KVxuXHRcdH1cblxuXHRcdGdldChrZXk6IGFueSk6IGFueSB7XG5cdFx0XHRjb25zdCBzdGF0ZTogTWFwU3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXVxuXHRcdFx0YXNzZXJ0VW5yZXZva2VkKHN0YXRlKVxuXHRcdFx0Y29uc3QgdmFsdWUgPSBsYXRlc3Qoc3RhdGUpLmdldChrZXkpXG5cdFx0XHRpZiAoc3RhdGUuZmluYWxpemVkXyB8fCAhaXNEcmFmdGFibGUodmFsdWUpKSB7XG5cdFx0XHRcdHJldHVybiB2YWx1ZVxuXHRcdFx0fVxuXHRcdFx0aWYgKHZhbHVlICE9PSBzdGF0ZS5iYXNlXy5nZXQoa2V5KSkge1xuXHRcdFx0XHRyZXR1cm4gdmFsdWUgLy8gZWl0aGVyIGFscmVhZHkgZHJhZnRlZCBvciByZWFzc2lnbmVkXG5cdFx0XHR9XG5cdFx0XHQvLyBkZXNwaXRlIHdoYXQgaXQgbG9va3MsIHRoaXMgY3JlYXRlcyBhIGRyYWZ0IG9ubHkgb25jZSwgc2VlIGFib3ZlIGNvbmRpdGlvblxuXHRcdFx0Y29uc3QgZHJhZnQgPSBjcmVhdGVQcm94eSh2YWx1ZSwgc3RhdGUpXG5cdFx0XHRwcmVwYXJlTWFwQ29weShzdGF0ZSlcblx0XHRcdHN0YXRlLmNvcHlfIS5zZXQoa2V5LCBkcmFmdClcblx0XHRcdHJldHVybiBkcmFmdFxuXHRcdH1cblxuXHRcdGtleXMoKTogSXRlcmFibGVJdGVyYXRvclx1MDAzY2FueVx1MDAzZSB7XG5cdFx0XHRyZXR1cm4gbGF0ZXN0KHRoaXNbRFJBRlRfU1RBVEVdKS5rZXlzKClcblx0XHR9XG5cblx0XHR2YWx1ZXMoKTogSXRlcmFibGVJdGVyYXRvclx1MDAzY2FueVx1MDAzZSB7XG5cdFx0XHRjb25zdCBpdGVyYXRvciA9IHRoaXMua2V5cygpXG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRbU3ltYm9sLml0ZXJhdG9yXTogKCkgPVx1MDAzZSB0aGlzLnZhbHVlcygpLFxuXHRcdFx0XHRuZXh0OiAoKSA9XHUwMDNlIHtcblx0XHRcdFx0XHRjb25zdCByID0gaXRlcmF0b3IubmV4dCgpXG5cdFx0XHRcdFx0LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblx0XHRcdFx0XHRpZiAoci5kb25lKSByZXR1cm4gclxuXHRcdFx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy5nZXQoci52YWx1ZSlcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0ZG9uZTogZmFsc2UsXG5cdFx0XHRcdFx0XHR2YWx1ZVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBhcyBhbnlcblx0XHR9XG5cblx0XHRlbnRyaWVzKCk6IEl0ZXJhYmxlSXRlcmF0b3JcdTAwM2NbYW55LCBhbnldXHUwMDNlIHtcblx0XHRcdGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5rZXlzKClcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFtTeW1ib2wuaXRlcmF0b3JdOiAoKSA9XHUwMDNlIHRoaXMuZW50cmllcygpLFxuXHRcdFx0XHRuZXh0OiAoKSA9XHUwMDNlIHtcblx0XHRcdFx0XHRjb25zdCByID0gaXRlcmF0b3IubmV4dCgpXG5cdFx0XHRcdFx0LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblx0XHRcdFx0XHRpZiAoci5kb25lKSByZXR1cm4gclxuXHRcdFx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy5nZXQoci52YWx1ZSlcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0ZG9uZTogZmFsc2UsXG5cdFx0XHRcdFx0XHR2YWx1ZTogW3IudmFsdWUsIHZhbHVlXVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBhcyBhbnlcblx0XHR9XG5cblx0XHRbU3ltYm9sLml0ZXJhdG9yXSgpIHtcblx0XHRcdHJldHVybiB0aGlzLmVudHJpZXMoKVxuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIHByb3h5TWFwX1x1MDAzY1QgZXh0ZW5kcyBBbnlNYXBcdTAwM2UodGFyZ2V0OiBULCBwYXJlbnQ/OiBJbW1lclN0YXRlKTogVCB7XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHJldHVybiBuZXcgRHJhZnRNYXAodGFyZ2V0LCBwYXJlbnQpXG5cdH1cblxuXHRmdW5jdGlvbiBwcmVwYXJlTWFwQ29weShzdGF0ZTogTWFwU3RhdGUpIHtcblx0XHRpZiAoIXN0YXRlLmNvcHlfKSB7XG5cdFx0XHRzdGF0ZS5hc3NpZ25lZF8gPSBuZXcgTWFwKClcblx0XHRcdHN0YXRlLmNvcHlfID0gbmV3IE1hcChzdGF0ZS5iYXNlXylcblx0XHR9XG5cdH1cblxuXHRjbGFzcyBEcmFmdFNldCBleHRlbmRzIFNldCB7XG5cdFx0W0RSQUZUX1NUQVRFXTogU2V0U3RhdGVcblx0XHRjb25zdHJ1Y3Rvcih0YXJnZXQ6IEFueVNldCwgcGFyZW50PzogSW1tZXJTdGF0ZSkge1xuXHRcdFx0c3VwZXIoKVxuXHRcdFx0dGhpc1tEUkFGVF9TVEFURV0gPSB7XG5cdFx0XHRcdHR5cGVfOiBBcmNoVHlwZS5TZXQsXG5cdFx0XHRcdHBhcmVudF86IHBhcmVudCxcblx0XHRcdFx0c2NvcGVfOiBwYXJlbnQgPyBwYXJlbnQuc2NvcGVfIDogZ2V0Q3VycmVudFNjb3BlKCkhLFxuXHRcdFx0XHRtb2RpZmllZF86IGZhbHNlLFxuXHRcdFx0XHRmaW5hbGl6ZWRfOiBmYWxzZSxcblx0XHRcdFx0Y29weV86IHVuZGVmaW5lZCxcblx0XHRcdFx0YmFzZV86IHRhcmdldCxcblx0XHRcdFx0ZHJhZnRfOiB0aGlzLFxuXHRcdFx0XHRkcmFmdHNfOiBuZXcgTWFwKCksXG5cdFx0XHRcdHJldm9rZWRfOiBmYWxzZSxcblx0XHRcdFx0aXNNYW51YWxfOiBmYWxzZVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGdldCBzaXplKCk6IG51bWJlciB7XG5cdFx0XHRyZXR1cm4gbGF0ZXN0KHRoaXNbRFJBRlRfU1RBVEVdKS5zaXplXG5cdFx0fVxuXG5cdFx0aGFzKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcblx0XHRcdGNvbnN0IHN0YXRlOiBTZXRTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHQvLyBiaXQgb2YgdHJpY2tlcnkgaGVyZSwgdG8gYmUgYWJsZSB0byByZWNvZ25pemUgYm90aCB0aGUgdmFsdWUsIGFuZCB0aGUgZHJhZnQgb2YgaXRzIHZhbHVlXG5cdFx0XHRpZiAoIXN0YXRlLmNvcHlfKSB7XG5cdFx0XHRcdHJldHVybiBzdGF0ZS5iYXNlXy5oYXModmFsdWUpXG5cdFx0XHR9XG5cdFx0XHRpZiAoc3RhdGUuY29weV8uaGFzKHZhbHVlKSkgcmV0dXJuIHRydWVcblx0XHRcdGlmIChzdGF0ZS5kcmFmdHNfLmhhcyh2YWx1ZSkgXHUwMDI2XHUwMDI2IHN0YXRlLmNvcHlfLmhhcyhzdGF0ZS5kcmFmdHNfLmdldCh2YWx1ZSkpKVxuXHRcdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0fVxuXG5cdFx0YWRkKHZhbHVlOiBhbnkpOiBhbnkge1xuXHRcdFx0Y29uc3Qgc3RhdGU6IFNldFN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV1cblx0XHRcdGFzc2VydFVucmV2b2tlZChzdGF0ZSlcblx0XHRcdGlmICghdGhpcy5oYXModmFsdWUpKSB7XG5cdFx0XHRcdHByZXBhcmVTZXRDb3B5KHN0YXRlKVxuXHRcdFx0XHRtYXJrQ2hhbmdlZChzdGF0ZSlcblx0XHRcdFx0c3RhdGUuY29weV8hLmFkZCh2YWx1ZSlcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzXG5cdFx0fVxuXG5cdFx0ZGVsZXRlKHZhbHVlOiBhbnkpOiBhbnkge1xuXHRcdFx0aWYgKCF0aGlzLmhhcyh2YWx1ZSkpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHN0YXRlOiBTZXRTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRwcmVwYXJlU2V0Q29weShzdGF0ZSlcblx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0c3RhdGUuY29weV8hLmRlbGV0ZSh2YWx1ZSkgfHxcblx0XHRcdFx0KHN0YXRlLmRyYWZ0c18uaGFzKHZhbHVlKVxuXHRcdFx0XHRcdD8gc3RhdGUuY29weV8hLmRlbGV0ZShzdGF0ZS5kcmFmdHNfLmdldCh2YWx1ZSkpXG5cdFx0XHRcdFx0OiAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBmYWxzZSlcblx0XHRcdClcblx0XHR9XG5cblx0XHRjbGVhcigpIHtcblx0XHRcdGNvbnN0IHN0YXRlOiBTZXRTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRpZiAobGF0ZXN0KHN0YXRlKS5zaXplKSB7XG5cdFx0XHRcdHByZXBhcmVTZXRDb3B5KHN0YXRlKVxuXHRcdFx0XHRtYXJrQ2hhbmdlZChzdGF0ZSlcblx0XHRcdFx0c3RhdGUuY29weV8hLmNsZWFyKClcblx0XHRcdH1cblx0XHR9XG5cblx0XHR2YWx1ZXMoKTogSXRlcmFibGVJdGVyYXRvclx1MDAzY2FueVx1MDAzZSB7XG5cdFx0XHRjb25zdCBzdGF0ZTogU2V0U3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXVxuXHRcdFx0YXNzZXJ0VW5yZXZva2VkKHN0YXRlKVxuXHRcdFx0cHJlcGFyZVNldENvcHkoc3RhdGUpXG5cdFx0XHRyZXR1cm4gc3RhdGUuY29weV8hLnZhbHVlcygpXG5cdFx0fVxuXG5cdFx0ZW50cmllcygpOiBJdGVyYWJsZUl0ZXJhdG9yXHUwMDNjW2FueSwgYW55XVx1MDAzZSB7XG5cdFx0XHRjb25zdCBzdGF0ZTogU2V0U3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXVxuXHRcdFx0YXNzZXJ0VW5yZXZva2VkKHN0YXRlKVxuXHRcdFx0cHJlcGFyZVNldENvcHkoc3RhdGUpXG5cdFx0XHRyZXR1cm4gc3RhdGUuY29weV8hLmVudHJpZXMoKVxuXHRcdH1cblxuXHRcdGtleXMoKTogSXRlcmFibGVJdGVyYXRvclx1MDAzY2FueVx1MDAzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy52YWx1ZXMoKVxuXHRcdH1cblxuXHRcdFtTeW1ib2wuaXRlcmF0b3JdKCkge1xuXHRcdFx0cmV0dXJuIHRoaXMudmFsdWVzKClcblx0XHR9XG5cblx0XHRmb3JFYWNoKGNiOiBhbnksIHRoaXNBcmc/OiBhbnkpIHtcblx0XHRcdGNvbnN0IGl0ZXJhdG9yID0gdGhpcy52YWx1ZXMoKVxuXHRcdFx0bGV0IHJlc3VsdCA9IGl0ZXJhdG9yLm5leHQoKVxuXHRcdFx0d2hpbGUgKCFyZXN1bHQuZG9uZSkge1xuXHRcdFx0XHRjYi5jYWxsKHRoaXNBcmcsIHJlc3VsdC52YWx1ZSwgcmVzdWx0LnZhbHVlLCB0aGlzKVxuXHRcdFx0XHRyZXN1bHQgPSBpdGVyYXRvci5uZXh0KClcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0ZnVuY3Rpb24gcHJveHlTZXRfXHUwMDNjVCBleHRlbmRzIEFueVNldFx1MDAzZSh0YXJnZXQ6IFQsIHBhcmVudD86IEltbWVyU3RhdGUpOiBUIHtcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0cmV0dXJuIG5ldyBEcmFmdFNldCh0YXJnZXQsIHBhcmVudClcblx0fVxuXG5cdGZ1bmN0aW9uIHByZXBhcmVTZXRDb3B5KHN0YXRlOiBTZXRTdGF0ZSkge1xuXHRcdGlmICghc3RhdGUuY29weV8pIHtcblx0XHRcdC8vIGNyZWF0ZSBkcmFmdHMgZm9yIGFsbCBlbnRyaWVzIHRvIHByZXNlcnZlIGluc2VydGlvbiBvcmRlclxuXHRcdFx0c3RhdGUuY29weV8gPSBuZXcgU2V0KClcblx0XHRcdHN0YXRlLmJhc2VfLmZvckVhY2godmFsdWUgPVx1MDAzZSB7XG5cdFx0XHRcdGlmIChpc0RyYWZ0YWJsZSh2YWx1ZSkpIHtcblx0XHRcdFx0XHRjb25zdCBkcmFmdCA9IGNyZWF0ZVByb3h5KHZhbHVlLCBzdGF0ZSlcblx0XHRcdFx0XHRzdGF0ZS5kcmFmdHNfLnNldCh2YWx1ZSwgZHJhZnQpXG5cdFx0XHRcdFx0c3RhdGUuY29weV8hLmFkZChkcmFmdClcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdGF0ZS5jb3B5XyEuYWRkKHZhbHVlKVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIGFzc2VydFVucmV2b2tlZChzdGF0ZTogYW55IC8qRVM1U3RhdGUgfCBNYXBTdGF0ZSB8IFNldFN0YXRlKi8pIHtcblx0XHRpZiAoc3RhdGUucmV2b2tlZF8pIGRpZSgzLCBKU09OLnN0cmluZ2lmeShsYXRlc3Qoc3RhdGUpKSlcblx0fVxuXG5cdGxvYWRQbHVnaW4oXCJNYXBTZXRcIiwge3Byb3h5TWFwXywgcHJveHlTZXRffSlcbn1cbiIsICJpbXBvcnQge1xuXHRJUHJvZHVjZSxcblx0SVByb2R1Y2VXaXRoUGF0Y2hlcyxcblx0SW1tZXIsXG5cdERyYWZ0LFxuXHRJbW11dGFibGVcbn0gZnJvbSBcIi4vaW50ZXJuYWxcIlxuXG5leHBvcnQge1xuXHREcmFmdCxcblx0V3JpdGFibGVEcmFmdCxcblx0SW1tdXRhYmxlLFxuXHRQYXRjaCxcblx0UGF0Y2hMaXN0ZW5lcixcblx0UHJvZHVjZXIsXG5cdG9yaWdpbmFsLFxuXHRjdXJyZW50LFxuXHRpc0RyYWZ0LFxuXHRpc0RyYWZ0YWJsZSxcblx0Tk9USElORyBhcyBub3RoaW5nLFxuXHREUkFGVEFCTEUgYXMgaW1tZXJhYmxlLFxuXHRmcmVlemUsXG5cdE9iamVjdGlzaCxcblx0U3RyaWN0TW9kZVxufSBmcm9tIFwiLi9pbnRlcm5hbFwiXG5cbmNvbnN0IGltbWVyID0gbmV3IEltbWVyKClcblxuLyoqXG4gKiBUaGUgYHByb2R1Y2VgIGZ1bmN0aW9uIHRha2VzIGEgdmFsdWUgYW5kIGEgXCJyZWNpcGUgZnVuY3Rpb25cIiAod2hvc2VcbiAqIHJldHVybiB2YWx1ZSBvZnRlbiBkZXBlbmRzIG9uIHRoZSBiYXNlIHN0YXRlKS4gVGhlIHJlY2lwZSBmdW5jdGlvbiBpc1xuICogZnJlZSB0byBtdXRhdGUgaXRzIGZpcnN0IGFyZ3VtZW50IGhvd2V2ZXIgaXQgd2FudHMuIEFsbCBtdXRhdGlvbnMgYXJlXG4gKiBvbmx5IGV2ZXIgYXBwbGllZCB0byBhIF9fY29weV9fIG9mIHRoZSBiYXNlIHN0YXRlLlxuICpcbiAqIFBhc3Mgb25seSBhIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIFwiY3VycmllZCBwcm9kdWNlclwiIHdoaWNoIHJlbGlldmVzIHlvdVxuICogZnJvbSBwYXNzaW5nIHRoZSByZWNpcGUgZnVuY3Rpb24gZXZlcnkgdGltZS5cbiAqXG4gKiBPbmx5IHBsYWluIG9iamVjdHMgYW5kIGFycmF5cyBhcmUgbWFkZSBtdXRhYmxlLiBBbGwgb3RoZXIgb2JqZWN0cyBhcmVcbiAqIGNvbnNpZGVyZWQgdW5jb3B5YWJsZS5cbiAqXG4gKiBOb3RlOiBUaGlzIGZ1bmN0aW9uIGlzIF9fYm91bmRfXyB0byBpdHMgYEltbWVyYCBpbnN0YW5jZS5cbiAqXG4gKiBAcGFyYW0ge2FueX0gYmFzZSAtIHRoZSBpbml0aWFsIHN0YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcm9kdWNlciAtIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgYSBwcm94eSBvZiB0aGUgYmFzZSBzdGF0ZSBhcyBmaXJzdCBhcmd1bWVudCBhbmQgd2hpY2ggY2FuIGJlIGZyZWVseSBtb2RpZmllZFxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGF0Y2hMaXN0ZW5lciAtIG9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBhbGwgdGhlIHBhdGNoZXMgcHJvZHVjZWQgaGVyZVxuICogQHJldHVybnMge2FueX0gYSBuZXcgc3RhdGUsIG9yIHRoZSBpbml0aWFsIHN0YXRlIGlmIG5vdGhpbmcgd2FzIG1vZGlmaWVkXG4gKi9cbmV4cG9ydCBjb25zdCBwcm9kdWNlOiBJUHJvZHVjZSA9IGltbWVyLnByb2R1Y2VcblxuLyoqXG4gKiBMaWtlIGBwcm9kdWNlYCwgYnV0IGBwcm9kdWNlV2l0aFBhdGNoZXNgIGFsd2F5cyByZXR1cm5zIGEgdHVwbGVcbiAqIFtuZXh0U3RhdGUsIHBhdGNoZXMsIGludmVyc2VQYXRjaGVzXSAoaW5zdGVhZCBvZiBqdXN0IHRoZSBuZXh0IHN0YXRlKVxuICovXG5leHBvcnQgY29uc3QgcHJvZHVjZVdpdGhQYXRjaGVzOiBJUHJvZHVjZVdpdGhQYXRjaGVzID0gaW1tZXIucHJvZHVjZVdpdGhQYXRjaGVzLmJpbmQoXG5cdGltbWVyXG4pXG5cbi8qKlxuICogUGFzcyB0cnVlIHRvIGF1dG9tYXRpY2FsbHkgZnJlZXplIGFsbCBjb3BpZXMgY3JlYXRlZCBieSBJbW1lci5cbiAqXG4gKiBBbHdheXMgZnJlZXplIGJ5IGRlZmF1bHQsIGV2ZW4gaW4gcHJvZHVjdGlvbiBtb2RlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRBdXRvRnJlZXplID0gaW1tZXIuc2V0QXV0b0ZyZWV6ZS5iaW5kKGltbWVyKVxuXG4vKipcbiAqIFBhc3MgdHJ1ZSB0byBlbmFibGUgc3RyaWN0IHNoYWxsb3cgY29weS5cbiAqXG4gKiBCeSBkZWZhdWx0LCBpbW1lciBkb2VzIG5vdCBjb3B5IHRoZSBvYmplY3QgZGVzY3JpcHRvcnMgc3VjaCBhcyBnZXR0ZXIsIHNldHRlciBhbmQgbm9uLWVudW1yYWJsZSBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgY29uc3Qgc2V0VXNlU3RyaWN0U2hhbGxvd0NvcHkgPSBpbW1lci5zZXRVc2VTdHJpY3RTaGFsbG93Q29weS5iaW5kKGltbWVyKVxuXG4vKipcbiAqIEFwcGx5IGFuIGFycmF5IG9mIEltbWVyIHBhdGNoZXMgdG8gdGhlIGZpcnN0IGFyZ3VtZW50LlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gaXMgYSBwcm9kdWNlciwgd2hpY2ggbWVhbnMgY29weS1vbi13cml0ZSBpcyBpbiBlZmZlY3QuXG4gKi9cbmV4cG9ydCBjb25zdCBhcHBseVBhdGNoZXMgPSBpbW1lci5hcHBseVBhdGNoZXMuYmluZChpbW1lcilcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW1tZXIgZHJhZnQgZnJvbSB0aGUgZ2l2ZW4gYmFzZSBzdGF0ZSwgd2hpY2ggbWF5IGJlIGEgZHJhZnQgaXRzZWxmLlxuICogVGhlIGRyYWZ0IGNhbiBiZSBtb2RpZmllZCB1bnRpbCB5b3UgZmluYWxpemUgaXQgd2l0aCB0aGUgYGZpbmlzaERyYWZ0YCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZURyYWZ0ID0gaW1tZXIuY3JlYXRlRHJhZnQuYmluZChpbW1lcilcblxuLyoqXG4gKiBGaW5hbGl6ZSBhbiBJbW1lciBkcmFmdCBmcm9tIGEgYGNyZWF0ZURyYWZ0YCBjYWxsLCByZXR1cm5pbmcgdGhlIGJhc2Ugc3RhdGVcbiAqIChpZiBubyBjaGFuZ2VzIHdlcmUgbWFkZSkgb3IgYSBtb2RpZmllZCBjb3B5LiBUaGUgZHJhZnQgbXVzdCAqbm90KiBiZVxuICogbXV0YXRlZCBhZnRlcndhcmRzLlxuICpcbiAqIFBhc3MgYSBmdW5jdGlvbiBhcyB0aGUgMm5kIGFyZ3VtZW50IHRvIGdlbmVyYXRlIEltbWVyIHBhdGNoZXMgYmFzZWQgb24gdGhlXG4gKiBjaGFuZ2VzIHRoYXQgd2VyZSBtYWRlLlxuICovXG5leHBvcnQgY29uc3QgZmluaXNoRHJhZnQgPSBpbW1lci5maW5pc2hEcmFmdC5iaW5kKGltbWVyKVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYSBuby1vcCwgYnV0IGNhbiBiZSB1c2VkIHRvIGNhc3QgYW4gaW1tdXRhYmxlIHR5cGVcbiAqIHRvIGFuIGRyYWZ0IHR5cGUgYW5kIG1ha2UgVHlwZVNjcmlwdCBoYXBweVxuICpcbiAqIEBwYXJhbSB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FzdERyYWZ0XHUwMDNjVFx1MDAzZSh2YWx1ZTogVCk6IERyYWZ0XHUwMDNjVFx1MDAzZSB7XG5cdHJldHVybiB2YWx1ZSBhcyBhbnlcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGEgbm8tb3AsIGJ1dCBjYW4gYmUgdXNlZCB0byBjYXN0IGEgbXV0YWJsZSB0eXBlXG4gKiB0byBhbiBpbW11dGFibGUgdHlwZSBhbmQgbWFrZSBUeXBlU2NyaXB0IGhhcHB5XG4gKiBAcGFyYW0gdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhc3RJbW11dGFibGVcdTAwM2NUXHUwMDNlKHZhbHVlOiBUKTogSW1tdXRhYmxlXHUwMDNjVFx1MDAzZSB7XG5cdHJldHVybiB2YWx1ZSBhcyBhbnlcbn1cblxuZXhwb3J0IHtJbW1lcn1cblxuZXhwb3J0IHtlbmFibGVQYXRjaGVzfSBmcm9tIFwiLi9wbHVnaW5zL3BhdGNoZXNcIlxuZXhwb3J0IHtlbmFibGVNYXBTZXR9IGZyb20gXCIuL3BsdWdpbnMvbWFwc2V0XCJcbiIsICJpbXBvcnQgeyBlbmFibGVNYXBTZXQgfSBmcm9tIFwiaHR0cHM6Ly9lc20uc2gvaW1tZXJAMTAuMS4xL1wiO1xuZW5hYmxlTWFwU2V0KCk7XG5cbmV4cG9ydCAqIGZyb20gXCJodHRwczovL2VzbS5zaC9pbW1lckAxMC4xLjEvXCI7XG4iLCAiaW1wb3J0IHsgTGluZSwgU3RyaW5nTGMgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyBJRCB9IGZyb20gXCIuL2lkLnRzXCI7XG5pbXBvcnQgeyBwcm9kdWNlIH0gZnJvbSBcIi4vZGVwcy9pbW1lci50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1YmJsZSB7XG4gIC8qKiBwcm9qZWN0IG5hbWUgKi9cbiAgcHJvamVjdDogc3RyaW5nO1xuXG4gIC8qKiBwYWdlIHRpdGxlTGMgKi9cbiAgdGl0bGVMYzogU3RyaW5nTGM7XG5cbiAgLyoqIOOCteODoOODjeOCpOODqyAqL1xuICBpbWFnZTogc3RyaW5nIHwgbnVsbDtcblxuICAvKiog44K144Og44ON44Kk44Or5pys5paHICovXG4gIGRlc2NyaXB0aW9uczogc3RyaW5nW107XG5cbiAgLyoqIOODmuODvOOCuOacrOaWh1xuICAgKlxuICAgKiAx6KGM55uu44Gr44K/44Kk44OI44Or44KS5YWl44KM44KLXG4gICAqL1xuICBsaW5lczogTGluZVtdO1xuXG4gIC8qKiDjg5rjg7zjgrjjgYzlrZjlnKjjgZnjgozjgbBgdHJ1ZWAqL1xuICBleGlzdHM6IGJvb2xlYW47XG5cbiAgLyoqIOODmuODvOOCuOOBruabtOaWsOaXpeaZgiAqL1xuICB1cGRhdGVkOiBudW1iZXI7XG5cbiAgLyoqIOWGhemDqOODquODs+OCr+iomOazleOBq+OCiOOCi+mAhuODquODs+OCr+OBruODquOCueODiFxuICAgKlxuICAgKiDmnKroqIjnrpfjga7jgajjgY3jga9gdW5kZWZpbmVkYOOBq+OBquOCi1xuICAgKi9cbiAgbGlua2VkPzogU3RyaW5nTGNbXTtcblxuICAvKiogYGxpbmtlZGDjgYzkuI3mraPnorrjgarlj6/og73mgKfjgYzjgYLjgovloLTlkIjjga9gdHJ1ZWAgKi9cbiAgaXNMaW5rZWRDb3JyZWN0OiBib29sZWFuO1xuXG4gIC8qKiDlpJbpg6jjg6rjg7Pjgq/oqJjms5XjgavjgojjgovpgIbjg6rjg7Pjgq/jga7jg6rjgrnjg4hcbiAgICpcbiAgICog5pyq6KiI566X44Gu44Go44GN44GvYHVuZGVmaW5lZGDjgavjgarjgotcbiAgICovXG4gIHByb2plY3RMaW5rZWQ/OiBJRFtdO1xufVxuXG5leHBvcnQgdHlwZSBCdWJibGVTdG9yYWdlID0gTWFwPElELCBCdWJibGU+O1xuXG4vKiog5oyH5a6a44GX44Gf44Oq44Oz44Kv44GM56m644Oq44Oz44Kv44GL44Gp44GG44GL5Yik5a6a44GZ44KLICovXG5leHBvcnQgY29uc3QgaXNFbXB0eUxpbmsgPSAoXG4gIGJ1YmJsZXM6IEl0ZXJhYmxlPEJ1YmJsZSB8IHVuZGVmaW5lZD4sXG4pOiBib29sZWFuID0+IHtcbiAgbGV0IGxpbmtlZCA9IDA7XG4gIGZvciAoY29uc3QgYnViYmxlIG9mIGJ1YmJsZXMpIHtcbiAgICBpZiAoIWJ1YmJsZSkgY29udGludWU7XG5cbiAgICAvLyDkuK3ouqvjgYzjgYLjgovjgarjgonnqbrjg6rjg7Pjgq/jgafjgarjgYRcbiAgICBpZiAoYnViYmxlLmV4aXN0cykgcmV0dXJuIGZhbHNlO1xuXG4gICAgbGlua2VkICs9IChidWJibGUubGlua2VkPy5sZW5ndGggPz8gMCkgK1xuICAgICAgKGJ1YmJsZS5wcm9qZWN0TGlua2VkPy5sZW5ndGggPz8gMCk7XG4gICAgLy8gMuOBpOS7peS4iuOBruODmuODvOOCuOOBi+OCieWPgueFp+OBleOCjOOBpuOBhOOCi+OBquOCieepuuODquODs+OCr+OBp+OBquOBhFxuICAgIGlmIChsaW5rZWQgPiAxKSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGxpbmtlZCA8IDI7XG59O1xuXG4vKiogYnViYmxl44KS5pu05paw44GZ44KLXG4gKlxuICogdXBkYXRlIHJ1bGVcbiAqXG4gKiAtIOWfuuacrOeahOOBq+OAgXVwZGF0ZWTjgYzlpKfjgY3jgYTmlrnjgpLmjqHnlKjjgZnjgotcbiAqIC0gbGluZXPjga/jgIHmm7TmlrDml6XmmYLjgavjgYvjgYvjgo/jgonjgZpkdW1teeOBp+OBquOBhOOBu+OBhuOCkuaOoeeUqOOBmeOCi1xuICogLSBsaW5rZWTjgahwcm9qZWN0TGlua2Vk44Gv44CBdW5kZWZpbmVk44Gn44Gq44GE44G744GG44KS5o6h55So44GZ44KLXG4gKlxuICog5pu05paw44GM44Gq44GR44KM44Gw5Lul5YmN44Gub2JqZWN044KS44Gd44Gu44G+44G+6L+U44GX44CB5pu05paw44GM44GC44KM44Gw5paw44GX44GEb2JqZWN044Gn6L+U44GZXG4gKi9cbmV4cG9ydCBjb25zdCB1cGRhdGUgPSAoXG4gIHByZXY6IEJ1YmJsZSB8IHVuZGVmaW5lZCxcbiAgY3VycmVudDogUmVhZG9ubHk8QnViYmxlPixcbik6IEJ1YmJsZSB8IHVuZGVmaW5lZCA9PlxuICBwcm9kdWNlPEJ1YmJsZSB8IHVuZGVmaW5lZD4ocHJldiwgKGRyYWZ0KSA9PiB7XG4gICAgaWYgKCFkcmFmdCkgcmV0dXJuIGN1cnJlbnQ7XG5cbiAgICBpZiAoZHJhZnQudXBkYXRlZCA8IGN1cnJlbnQudXBkYXRlZCkge1xuICAgICAgLy8g5pu05paw5pel5pmC44GM5paw44GX44GR44KM44Gw44CB44Gd44Gh44KJ44KS5o6h55So44GZ44KLXG4gICAgICAvLyBsaW5rZWQsIHByb2plY3RMaW5rZWQsIGxpbmVz44Gu44G/5Yil6YCU5Yik5a6a44GZ44KLXG4gICAgICBjb25zdCB7IGxpbmVzLCBsaW5rZWQsIHByb2plY3RMaW5rZWQsIC4uLnJlc3QgfSA9IGN1cnJlbnQ7XG5cbiAgICAgIE9iamVjdC5hc3NpZ24oZHJhZnQsIHJlc3QpO1xuICAgICAgaWYgKCFpc0R1bW15KGN1cnJlbnQpKSBkcmFmdC5saW5lcyA9IGxpbmVzO1xuICAgICAgaWYgKGxpbmtlZCkgZHJhZnQubGlua2VkID8/PSBsaW5rZWQ7XG4gICAgICBpZiAocHJvamVjdExpbmtlZCkgZHJhZnQucHJvamVjdExpbmtlZCA/Pz0gcHJvamVjdExpbmtlZDtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGB1cGRhdGVkYOOBjOWkieWMluOBl+OBpuOBhOOBquOBhOWgtOWQiOOAgeWkieabtOOBleOCjOOBpuOBhOOCi+WPr+iDveaAp+OBruOBguOCi3Byb3BlcnRpZXPjga9cbiAgICAvLyAtIGBsaW5lc2BcbiAgICAvLyAtIGBsaW5rZWRgXG4gICAgLy8gLSBgcHJvamVjdExpbmtlZGBcbiAgICAvLyDjgavpmZDjgonjgozjgotcblxuICAgIC8vIOacrOeJqeOBruacrOaWh+OBjOOChOOBo+OBpuOBjeOBn+OCieOAgeOBneOBoeOCieOCkuaOoeeUqOOBmeOCi1xuICAgIGlmIChpc0R1bW15KGRyYWZ0KSAmJiAhaXNEdW1teShjdXJyZW50KSkge1xuICAgICAgZHJhZnQubGluZXMgPSBjdXJyZW50LmxpbmVzO1xuICAgIH1cbiAgICAvLyBsaW5rZWTjga/mraPnorrjgavlj5blvpfjgZfjgZ/jg4fjg7zjgr/jgpLlhKrlhYjjgZnjgotcbiAgICBpZiAoY3VycmVudC5saW5rZWQpIHtcbiAgICAgIGlmIChjdXJyZW50LmlzTGlua2VkQ29ycmVjdCkge1xuICAgICAgICBkcmFmdC5saW5rZWQgPSBjdXJyZW50LmxpbmtlZDtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICFkcmFmdC5pc0xpbmtlZENvcnJlY3QgJiZcbiAgICAgICAgKGRyYWZ0LmxpbmtlZD8ubGVuZ3RoID8/IDApIDw9IGN1cnJlbnQubGlua2VkLmxlbmd0aFxuICAgICAgKSB7XG4gICAgICAgIGRyYWZ0LmxpbmtlZCA9IGN1cnJlbnQubGlua2VkO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY3VycmVudC5wcm9qZWN0TGlua2VkKSBkcmFmdC5wcm9qZWN0TGlua2VkID0gY3VycmVudC5wcm9qZWN0TGlua2VkO1xuICB9KTtcblxuLyoqIGxpbmVz44GMZGVzY3JpcHRpb27jgYvjgonjgafjgaPjgaHkuIrjgZLjgonjgozjgZ/jg4fjg7zjgr/jgYvjganjgYbjgYvliKTlrprjgZnjgosgKi9cbmNvbnN0IGlzRHVtbXkgPSAoYnViYmxlOiBCdWJibGUpOiBib29sZWFuID0+IGJ1YmJsZS5saW5lc1swXS5pZCA9PT0gXCJkdW1teVwiO1xuIiwgImltcG9ydCB7IHRvVGl0bGVMYyB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5pbXBvcnQgeyBCdWJibGUsIEJ1YmJsZVN0b3JhZ2UgfSBmcm9tIFwiLi9zdG9yYWdlLnRzXCI7XG5pbXBvcnQgeyBmcm9tSWQsIElELCB0b0lkIH0gZnJvbSBcIi4vaWQudHNcIjtcbmltcG9ydCB7IFBhZ2UsIFJlbGF0ZWRQYWdlIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuXG4vKiogQVBJ44GL44KJ5Y+W5b6X44GX44Gf44Oa44O844K444OH44O844K/44KS44CBQnViYmxl55So44Gr5aSJ5o+b44GZ44KLXG4gKlxuICogQHBhcmFtIHRpdGxlTGMg44Oa44O844K444Gu44K/44Kk44OI44OrIOOCv+OCpOODiOODq+WkieabtOOBjOOBguOCi+OBqOOAgXBhZ2UudGl0bGXjgYvjgonlvqnlhYPjgafjgY3jgarjgYTjgZ/jgoHjgIHliKXpgJTmjIflrprjgZfjgabjgYTjgotcbiAqIEBwYXJhbSBwcm9qZWN0IOODmuODvOOCuOOBrnByb2plY3RcbiAqIEBwYXJhbSBwYWdlIOWkieaPm+OBl+OBn+OBhOODmuODvOOCuOODh+ODvOOCv1xuICogQHJldHVybiDlpInmj5vjgZfjgZ/jg4fjg7zjgr9cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbnZlcnQgPSAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgcGFnZTogUGFnZSxcbik6IEJ1YmJsZVN0b3JhZ2UgPT4ge1xuICBjb25zdCBzdG9yYWdlOiBCdWJibGVTdG9yYWdlID0gbmV3IE1hcCgpO1xuXG4gIC8vIHBhZ2XjgYzlj4LnhafjgZfjgabjgYTjgovjg6rjg7Pjgq/jga7pgIbjg6rjg7Pjgq/jgatwYWdl44KS5YWl44KM44KLXG4gIC8vIOOBk+OCjOOBq+OCiOOCiuOAgTIgaG9wIGxpbmtz44Gu44OP44OW44Go44Gq44KLY2FyZOOBr+OAgeWFqOOBpuOBrumAhuODquODs+OCr+OBjOagvOe0jeOBleOCjOOBpuOBhOOCi+OBqOS/neiovOOBleOCjOOAgWxpbmtlZOOBqHByb2plY3RMaW5rZWTjga91bmRlZmluZWTjgafjgarjgY/jgarjgotcbiAgY29uc3QgdGl0bGVMYyA9IHRvVGl0bGVMYyhwYWdlLnRpdGxlKTtcbiAgZm9yIChjb25zdCBsaW5rIG9mIHBhZ2UubGlua3MpIHtcbiAgICBjb25zdCBidWJibGU6IEJ1YmJsZSA9IG1ha2VEdW1teShwcm9qZWN0LCBsaW5rKTtcbiAgICBidWJibGUubGlua2VkID0gW3RpdGxlTGNdO1xuICAgIHN0b3JhZ2Uuc2V0KHRvSWQocHJvamVjdCwgbGluayksIGJ1YmJsZSk7XG4gIH1cbiAgY29uc3QgcGFnZUlkID0gdG9JZChwcm9qZWN0LCB0aXRsZUxjKTtcbiAgY29uc3QgcHJvamVjdExpbmtzTGMgPSBwYWdlLnByb2plY3RMaW5rcy5tYXAoKGlkKSA9PiB7XG4gICAgY29uc3QgbGluayA9IGZyb21JZChpZCBhcyBJRCk7XG4gICAgcmV0dXJuIHRvSWQobGluay5wcm9qZWN0LCBsaW5rLnRpdGxlTGMpO1xuICB9KTtcbiAgLy8gcHJvamVjdExpbmtz44GK44KI44GzcHJvamVjdExpbmtzMWhvcOOBq+OBguOCi+ODmuODvOOCuOOCq+ODvOODieOBruWklumDqOODquODs+OCr+iomOazlee1jOeUseOBrumAhuODquODs+OCr+OBr+ato+eiuuOBq+WPluW+l+OBp+OBjeOBquOBhOOBruOBp+eEoeimluOBmeOCi1xuICAvLyDlpJbpg6jjg6rjg7Pjgq/oqJjms5XntYznlLHjga7pgIbjg6rjg7Pjgq/jga9wYWdlLnRpdGxl44Gu44G/6ICD5oWu44GZ44KLXG5cbiAgLy8g44Oa44O844K45pys5paH44KS5YWl44KM44KLXG4gIGNvbnN0IHBhZ2VCdWJibGU6IFJlcXVpcmVkPEJ1YmJsZT4gPSB7XG4gICAgLi4udG9CdWJibGUocHJvamVjdCwgcGFnZSksXG4gICAgbGlua2VkOiBbXSxcbiAgICBwcm9qZWN0TGlua2VkOiBbXSxcbiAgfTtcbiAgc3RvcmFnZS5zZXQocGFnZUlkLCBwYWdlQnViYmxlKTtcblxuICAvLyAxIGhvcCBsaW5rc+OBi+OCieOCq+ODvOODieOCkuWPluOCiuWHuuOBmVxuICAvLyDlkIzmmYLjgatgZW1wdHlQYWdlSWRzYOOCkuS9nOOCi1xuICBjb25zdCBsaW5rc0xjID0gcGFnZS5saW5rcy5tYXAoKGxpbmspID0+IHRvVGl0bGVMYyhsaW5rKSk7XG4gIGZvciAoY29uc3QgY2FyZCBvZiBwYWdlLnJlbGF0ZWRQYWdlcy5saW5rczFob3ApIHtcbiAgICBpZiAoY2FyZC5saW5rc0xjLmluY2x1ZGVzKHRpdGxlTGMpKSB7XG4gICAgICAvLyDlj4zmlrnlkJHjg6rjg7Pjgq8gb3Ig6YCG44Oq44Oz44KvXG5cbiAgICAgIC8vIOmAhuODquODs+OCr+OCkuS9nOOCi1xuICAgICAgLy8g6YeN6KSH44Gv44GC44KK44GI44Gq44GE44Gu44Gn6YWN5YiX44Gn44GE44GEXG4gICAgICBwYWdlQnViYmxlLmxpbmtlZC5wdXNoKGNhcmQudGl0bGVMYyk7XG4gICAgfVxuICAgIC8vIGBwYWdlYOKGkmBjYXJkYOKGkmBsaW5rTGNg4oaQYHBhZ2Vg44Go44GE44GG44Oq44Oz44Kv6Zai5L+C44Gr44GC44KL44Go44GN44Gv44CBYGNhcmRg44KSYGxpbmtMY2Djga7pgIbjg6rjg7Pjgq/jgajjgZfjgabnmbvpjLLjgZnjgotcbiAgICBmb3IgKFxuICAgICAgY29uc3QgbGlua0xjIG9mIGNhcmQubGlua3NMYy5maWx0ZXIoKGxpbmtMYykgPT4gbGlua3NMYy5pbmNsdWRlcyhsaW5rTGMpKVxuICAgICkge1xuICAgICAgY29uc3QgY2FyZElkID0gdG9JZChwcm9qZWN0LCBsaW5rTGMpO1xuICAgICAgY29uc3QgYnViYmxlID0gc3RvcmFnZS5nZXQoY2FyZElkKTtcbiAgICAgIGlmICghYnViYmxlKSB0aHJvdyBFcnJvcihgc3RvcmFnZSBhbHJlYWR5IG11c3QgaGF2ZSBcIiR7Y2FyZElkfVwiYCk7XG4gICAgICBpZiAoIWJ1YmJsZS5saW5rZWQpIHtcbiAgICAgICAgYnViYmxlLmxpbmtlZCA9IFtjYXJkLnRpdGxlTGNdO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGJ1YmJsZS5saW5rZWQucHVzaChjYXJkLnRpdGxlTGMpO1xuICAgIH1cbiAgICAvLyBjYXJk44KS5YWl44KM44KLXG4gICAgY29uc3QgY2FyZElkID0gdG9JZChwcm9qZWN0LCBjYXJkLnRpdGxlTGMpO1xuICAgIGNvbnN0IGJ1YmJsZSA9IHRvQnViYmxlKHByb2plY3QsIGNhcmQpO1xuICAgIC8vIGV4dGVybmFsIGxpbmtz44Gn44Gq44GR44KM44GwYHByb2plY3RMaW5rZWRg44Gv5a2Y5Zyo44GX44Gq44GEXG4gICAgY29uc3QgbGlua2VkID0gc3RvcmFnZS5nZXQoY2FyZElkKT8ubGlua2VkO1xuICAgIGlmIChsaW5rZWQpIGJ1YmJsZS5saW5rZWQgPSBsaW5rZWQ7XG4gICAgc3RvcmFnZS5zZXQoY2FyZElkLCBidWJibGUpO1xuICB9XG5cbiAgLy8gZXh0ZXJuYWwgbGlua3PjgYvjgonjgqvjg7zjg4njgpLlj5bjgorlh7rjgZlcbiAgZm9yIChcbiAgICBjb25zdCBjYXJkIG9mIHBhZ2UucmVsYXRlZFBhZ2VzLnByb2plY3RMaW5rczFob3BcbiAgKSB7XG4gICAgY29uc3QgY2FyZElkID0gdG9JZChjYXJkLnByb2plY3ROYW1lLCBjYXJkLnRpdGxlTGMpO1xuICAgIGlmICghcHJvamVjdExpbmtzTGMuaW5jbHVkZXMoY2FyZElkKSkge1xuICAgICAgLy8g6YCG44Oq44Oz44KvXG4gICAgICAvLyDlj4zmlrnlkJHjg6rjg7Pjgq/jga/poIbjg6rjg7Pjgq/jgajliKTliKXjgYzjgaTjgYvjgarjgYTjga7jgafjgoTjgoHjgotcblxuICAgICAgLy8g6YCG44Oq44Oz44Kv44KS5L2c44KLXG4gICAgICBwYWdlQnViYmxlLnByb2plY3RMaW5rZWQucHVzaChjYXJkSWQpO1xuICAgIH1cbiAgICAvLyBjYXJk44KS5YWl44KM44KLXG4gICAgY29uc3QgYnViYmxlID0gdG9CdWJibGUoY2FyZC5wcm9qZWN0TmFtZSwgY2FyZCk7XG4gICAgY29uc3QgcHJvamVjdExpbmtlZCA9IHN0b3JhZ2UuZ2V0KGNhcmRJZCk/LnByb2plY3RMaW5rZWQ7XG4gICAgaWYgKHByb2plY3RMaW5rZWQpIGJ1YmJsZS5wcm9qZWN0TGlua2VkID0gcHJvamVjdExpbmtlZDtcbiAgICBzdG9yYWdlLnNldChjYXJkSWQsIGJ1YmJsZSk7XG4gIH1cbiAgcGFnZUJ1YmJsZS5pc0xpbmtlZENvcnJlY3QgPSB0cnVlO1xuXG4gIC8vIDIgaG9wIGxpbmtz44GL44KJ44Kr44O844OJ44KS5Y+W44KK5Ye644GZXG4gIGZvciAoY29uc3QgY2FyZCBvZiBwYWdlLnJlbGF0ZWRQYWdlcy5saW5rczJob3ApIHtcbiAgICBmb3IgKGNvbnN0IGxpbmtMYyBvZiBjYXJkLmxpbmtzTGMpIHtcbiAgICAgIC8vIOmAhuODquODs+OCr+OCkuS9nOOCi1xuICAgICAgLy8g6YeN6KSH44Gv44GC44KK44GI44Gq44GE44Gu44Gn6YWN5YiX44Gn44GE44GEXG4gICAgICBjb25zdCBjYXJkSWQgPSB0b0lkKHByb2plY3QsIGxpbmtMYyk7XG4gICAgICBjb25zdCBidWJibGUgPSBzdG9yYWdlLmdldChjYXJkSWQpO1xuICAgICAgaWYgKCFidWJibGUpIHRocm93IEVycm9yKGBzdG9yYWdlIGFscmVhZHkgbXVzdCBoYXZlIFwiJHtjYXJkSWR9XCJgKTtcbiAgICAgIGlmICghYnViYmxlLmxpbmtlZCkge1xuICAgICAgICBidWJibGUubGlua2VkID0gW2NhcmQudGl0bGVMY107XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYnViYmxlLmxpbmtlZC5wdXNoKGNhcmQudGl0bGVMYyk7XG4gICAgfVxuICAgIC8vIGNhcmTjgpLlhaXjgozjgotcbiAgICBjb25zdCBjYXJkSWQgPSB0b0lkKHByb2plY3QsIGNhcmQudGl0bGVMYyk7XG4gICAgY29uc3QgYnViYmxlID0gdG9CdWJibGUocHJvamVjdCwgY2FyZCk7XG4gICAgLy8gZXh0ZXJuYWwgbGlua3PjgafjgarjgZHjgozjgbBgcHJvamVjdExpbmtlZGDjga/lrZjlnKjjgZfjgarjgYRcbiAgICBjb25zdCBsaW5rZWQgPSBzdG9yYWdlLmdldChjYXJkSWQpPy5saW5rZWQ7XG4gICAgaWYgKGxpbmtlZCkgYnViYmxlLmxpbmtlZCA9IGxpbmtlZDtcbiAgICBzdG9yYWdlLnNldChjYXJkSWQsIGJ1YmJsZSk7XG4gIH1cblxuICByZXR1cm4gc3RvcmFnZTtcbn07XG5cbi8qKiDplqLpgKPjg5rjg7zjgrjjgoTjg5rjg7zjgrjmnKzmlofjga7mg4XloLHjgpJCdWJibGXjgavlpInmj5vjgZnjgotcbiAqXG4gKiBAcGFyYW0gcHJvamVjdCDkuI7jgYjjgZ/jg4fjg7zjgr/jga5wcm9qZWN0IG5hbWVcbiAqIEBwYXJhbSBwYWdlIGJ1YmJsZeOBq+WkieaPm+OBl+OBn+OBhOODh+ODvOOCv1xuICogQHBhcmFtIGNoZWNrZWQg44OH44O844K/44KS56K66KqN44GX44Gf5pel5pmCXG4gKiBAcmV0dXJuIOWkieaPm+W+jOOBruODh+ODvOOCv1xuICovXG5jb25zdCB0b0J1YmJsZSA9IChcbiAgcHJvamVjdDogc3RyaW5nLFxuICBwYWdlOlxuICAgIHwgUGFnZVxuICAgIHwgT21pdDxcbiAgICAgIFJlbGF0ZWRQYWdlLFxuICAgICAgfCBcImxpbmtzTGNcIlxuICAgICAgfCBcInBhZ2VSYW5rXCJcbiAgICAgIHwgXCJjcmVhdGVkXCJcbiAgICAgIHwgXCJpbmZvYm94UmVzdWx0XCJcbiAgICAgIHwgXCJpbmZvYm94RGlzYWJsZUxpbmtzXCJcbiAgICA+LFxuKTogQnViYmxlID0+ICh7XG4gIHByb2plY3QsXG4gIHRpdGxlTGM6IFwidGl0bGVMY1wiIGluIHBhZ2UgPyBwYWdlLnRpdGxlTGMgOiB0b1RpdGxlTGMocGFnZS50aXRsZSksXG4gIC8vIOmWoumAo+ODmuODvOOCuOOBruWgtOWQiOOBr+OAgemWoumAo+ODmuODvOOCuOOBjOWtmOWcqOOBmeOCi+aZgueCueOBp+S4rei6q+OBjOOBguOCi+OBruOBp+OAgeW4uOOBq2B0cnVlYOOBqOOBmeOCi1xuICBleGlzdHM6IFwicGVyc2lzdGVudFwiIGluIHBhZ2UgPyBwYWdlLnBlcnNpc3RlbnQgOiB0cnVlLFxuICBkZXNjcmlwdGlvbnM6IHBhZ2UuZGVzY3JpcHRpb25zLFxuICBpbWFnZTogcGFnZS5pbWFnZSxcbiAgbGluZXM6IFwibGluZXNcIiBpbiBwYWdlXG4gICAgPyBwYWdlLmxpbmVzXG4gICAgLy8gZGVzY3JpcHRpb25z44GL44KJ44Gn44Gj44Gh5LiK44GS44KLXG4gICAgOiBbcGFnZS50aXRsZSwgLi4ucGFnZS5kZXNjcmlwdGlvbnNdLm1hcCgodGV4dCkgPT4gKHtcbiAgICAgIHRleHQsXG4gICAgICBpZDogXCJkdW1teVwiLFxuICAgICAgdXNlcklkOiBcImR1bW15XCIsXG4gICAgICB1cGRhdGVkOiBwYWdlLnVwZGF0ZWQsXG4gICAgICBjcmVhdGVkOiBwYWdlLnVwZGF0ZWQsXG4gICAgfSkpLFxuICB1cGRhdGVkOiBwYWdlLnVwZGF0ZWQsXG4gIGlzTGlua2VkQ29ycmVjdDogZmFsc2UsXG59KTtcblxuLyoqIOODmuODvOOCuOOCv+OCpOODiOODq+OBoOOBkeOBi+OCiUJ1YmJsZeOCkuS9nOOCi1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0IOS4juOBiOOBn+ODh+ODvOOCv+OBrnByb2plY3QgbmFtZVxuICogQHBhcmFtIHRpdGxlIOODmuODvOOCuOOCv+OCpOODiOODq1xuICogQHBhcmFtIGNoZWNrZWQg44OH44O844K/44KS56K66KqN44GX44Gf5pel5pmCXG4gKiBAcmV0dXJuIOWkieaPm+W+jOOBruODh+ODvOOCv1xuICovXG5jb25zdCBtYWtlRHVtbXkgPSAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgdGl0bGU6IHN0cmluZyxcbik6IEJ1YmJsZSA9PiAoe1xuICBwcm9qZWN0LFxuICB0aXRsZUxjOiB0b1RpdGxlTGModGl0bGUpLFxuICBleGlzdHM6IGZhbHNlLFxuICBkZXNjcmlwdGlvbnM6IFtdLFxuICBpbWFnZTogbnVsbCxcbiAgbGluZXM6IFt7XG4gICAgdGV4dDogdGl0bGUsXG4gICAgaWQ6IFwiZHVtbXlcIixcbiAgICB1c2VySWQ6IFwiZHVtbXlcIixcbiAgICB1cGRhdGVkOiAwLFxuICAgIGNyZWF0ZWQ6IDAsXG4gIH1dLFxuICB1cGRhdGVkOiAwLFxuICBpc0xpbmtlZENvcnJlY3Q6IGZhbHNlLFxufSk7XG4iLCAiaW1wb3J0IHsgY2FjaGVGaXJzdEZldGNoLCBpc0V4cGlyZWQgfSBmcm9tIFwiLi9jYWNoZS50c1wiO1xuaW1wb3J0IHsgSUQsIHRvSWQgfSBmcm9tIFwiLi9pZC50c1wiO1xuaW1wb3J0IHsgTGlzdGVuZXIsIG1ha2VFbWl0dGVyIH0gZnJvbSBcIi4vZXZlbnRFbWl0dGVyLnRzXCI7XG5pbXBvcnQgeyBCdWJibGUsIEJ1YmJsZVN0b3JhZ2UsIHVwZGF0ZSB9IGZyb20gXCIuL3N0b3JhZ2UudHNcIjtcbmltcG9ydCB7IGNvbnZlcnQgfSBmcm9tIFwiLi9jb252ZXJ0LnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVEZWJ1ZyB9IGZyb20gXCIuL2RlYnVnLnRzXCI7XG5pbXBvcnQgeyBnZXRQYWdlIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1zdGQudHNcIjtcbmltcG9ydCB7IFByb2plY3RJZCwgVW5peFRpbWUgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZURlYnVnKFwiU2NyYXBCdWJibGU6YnViYmxlLnRzXCIpO1xuXG5jb25zdCBzdG9yYWdlOiBCdWJibGVTdG9yYWdlID0gbmV3IE1hcCgpO1xuLyoqIOODh+ODvOOCv+OCkuabtOaWsOS4reOBruODmuODvOOCuOOBruODquOCueODiCAqL1xuY29uc3QgbG9hZGluZ0lkcyA9IG5ldyBTZXQ8SUQ+KCk7XG5jb25zdCBlbWl0dGVyID0gbWFrZUVtaXR0ZXI8SUQsIEJ1YmJsZT4oKTtcblxuLyoqIGJ1YmJsZSBkYXRh44KS6Kqt44G/6L6844KAXG4gKlxuICog44OH44O844K/44Gu5pu05paw44Gv6KGM44KP44Gq44GEXG4gKlxuICogQHBhcmFtIHBhZ2VJZHMg5Y+W5b6X44GX44Gf44GE44Oa44O844K444Gu44Oq44K544OIXG4gKiBAcmV0dXJuIHBhZ2Xjga7mg4XloLHjgILmnKrliJ3mnJ/ljJbjga7jgajjgY3jga9gdW5kZWZpbmVkYOOCkui/lOOBmVxuICovXG5leHBvcnQgZnVuY3Rpb24qIGxvYWQoXG4gIHBhZ2VJZHM6IEl0ZXJhYmxlPElEPixcbik6IEdlbmVyYXRvcjxCdWJibGUgfCB1bmRlZmluZWQsIHZvaWQsIHVua25vd24+IHtcbiAgZm9yIChjb25zdCBwYWdlSWQgb2YgcGFnZUlkcykge1xuICAgIHlpZWxkIHN0b3JhZ2UuZ2V0KHBhZ2VJZCk7XG4gIH1cbn1cblxuLyoqIOeJueWumuOBruODmuODvOOCuOOBruabtOaWsOOCkuizvOiqreOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IHN1YnNjcmliZSA9IChwYWdlSWQ6IElELCBsaXN0ZW5lcjogTGlzdGVuZXI8QnViYmxlPik6IHZvaWQgPT5cbiAgZW1pdHRlci5vbihwYWdlSWQsIGxpc3RlbmVyKTtcblxuLyoqIOeJueWumuOBruODmuODvOOCuOOBruabtOaWsOizvOiqreOCkuino+mZpOOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IHVuc3Vic2NyaWJlID0gKHBhZ2VJZDogSUQsIGxpc3RlbmVyOiBMaXN0ZW5lcjxCdWJibGU+KTogdm9pZCA9PlxuICBlbWl0dGVyLm9mZihwYWdlSWQsIGxpc3RlbmVyKTtcblxuZXhwb3J0IGludGVyZmFjZSBQcmVmZXRjaE9wdGlvbnMge1xuICAvKiogbmV0d29ya+OBi+OCieODh+ODvOOCv+OCkuWPluW+l+OBl+OBquOBhOOBqOOBjeOBr2B0cnVlYOOCkua4oeOBmSovXG4gIGlnbm9yZUZldGNoPzogYm9vbGVhbjtcbiAgLyoqIGNhY2hl44Gu5pyJ5Yq55pyf6ZmQICjljZjkvY3jga/np5IpICovXG4gIG1heEFnZT86IFVuaXhUaW1lO1xufVxuXG4vKiog44Oa44O844K444OH44O844K/44KS5Y+W5b6X44GX44CBY2FjaGXjgavmoLzntI3jgZnjgotcbiAqXG4gKiBjYWNoZeOBr+S4gOWumumWk+malOOBlOOBqOOBq+abtOaWsOOBleOCjOOCi1xuICovXG5leHBvcnQgY29uc3QgcHJlZmV0Y2ggPSBhc3luYyAoXG4gIHRpdGxlOiBzdHJpbmcsXG4gIHByb2plY3RzOiBJdGVyYWJsZTxzdHJpbmc+LFxuICB3YXRjaExpc3Q6IFNldDxQcm9qZWN0SWQ+LFxuICBvcHRpb25zPzogUHJlZmV0Y2hPcHRpb25zLFxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcbiAgLy8g5pyA5b6M44Gr55m76Yyy44GX44Gf44KC44Gu44GL44KJZmV0Y2jjgZXjgozjgovjga7jgafjgIHlj43ou6LjgZXjgZvjgabjgYrjgY9cbiAgLy8gbWFrZVRocm90dGxl44Gu5LuV5qeY44KS5Y+C54WnXG4gIGZvciAoY29uc3QgcHJvamVjdCBvZiBbLi4ucHJvamVjdHNdLnJldmVyc2UoKSkge1xuICAgIGNvbnN0IGlkID0gdG9JZChwcm9qZWN0LCB0aXRsZSk7XG4gICAgaWYgKGxvYWRpbmdJZHMuaGFzKGlkKSkgY29udGludWU7XG4gICAgcHJvbWlzZXMucHVzaChcbiAgICAgIHVwZGF0ZUFwaUNhY2hlKHByb2plY3QsIHRpdGxlLCB3YXRjaExpc3QsIG9wdGlvbnMpLFxuICAgICk7XG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59O1xuXG4vKiogZGVidWfnlKjjgqvjgqbjg7Pjgr8gKi9cbmxldCBjb3VudGVyID0gMDtcblxuLyoqIGNhY2hl44GK44KI44GzbmV0d29ya+OBi+OCieaWsOOBl+OBhOODmuODvOOCuOODh+ODvOOCv+OCkuWPluW+l+OBmeOCi1xuICpcbiAqIOOCguOBl+abtOaWsOOBjOOBguOCjOOBsOOAgeabtOaWsOmAmuefpeOCgueZuuihjOOBmeOCi1xuICovXG5jb25zdCB1cGRhdGVBcGlDYWNoZSA9IGFzeW5jIChcbiAgcHJvamVjdDogc3RyaW5nLFxuICB0aXRsZTogc3RyaW5nLFxuICB3YXRjaExpc3Q6IFNldDxQcm9qZWN0SWQ+LFxuICBvcHRpb25zPzogUHJlZmV0Y2hPcHRpb25zLFxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGlkID0gdG9JZChwcm9qZWN0LCB0aXRsZSk7XG4gIGlmIChsb2FkaW5nSWRzLmhhcyhpZCkpIHJldHVybjtcblxuICAvLyDmjpLku5bjg63jg4Pjgq/jgpLjgYvjgZHjgotcbiAgLy8g44GT44KM44Gn5ZCM5pmC44Gr5ZCM44GY44Oa44O844K444Gu5pu05paw44GM6LWw44KJ44Gq44GE44KI44GG44Gr44GZ44KLXG4gIGxvYWRpbmdJZHMuYWRkKGlkKTtcbiAgY29uc3QgaSA9IGNvdW50ZXIrKztcblxuICBjb25zdCB0aW1lVGFnID0gYFske2l9XSBDaGVjayB1cGRhdGUgJHtpZH1gO1xuICBsb2dnZXIudGltZSh0aW1lVGFnKTtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXEgPSBnZXRQYWdlLnRvUmVxdWVzdChwcm9qZWN0LCB0aXRsZSwge1xuICAgICAgZm9sbG93UmVuYW1lOiB0cnVlLFxuICAgICAgcHJvamVjdHM6IFsuLi53YXRjaExpc3RdLFxuICAgIH0pO1xuXG4gICAgZm9yIGF3YWl0IChcbiAgICAgIGNvbnN0IFt0eXBlLCByZXNdIG9mIGNhY2hlRmlyc3RGZXRjaChyZXEsIHtcbiAgICAgICAgaWdub3JlU2VhcmNoOiB0cnVlLFxuICAgICAgICBzYXZlRmFpbGVkUmVzcG9uc2U6IHRydWUsXG4gICAgICB9KVxuICAgICkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBbJHtpfV0ke3R5cGV9ICR7aWR9YCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRQYWdlLmZyb21SZXNwb25zZShyZXMpO1xuICAgICAgLy8g5pu05paw44GM44GC44KM44GwZXZlbnTjgpLnmbrooYzjgZnjgotcbiAgICAgIGlmIChyZXN1bHQub2spIHtcbiAgICAgICAgY29uc3QgY29udmVydGVkID0gY29udmVydChwcm9qZWN0LCByZXN1bHQudmFsdWUpO1xuICAgICAgICBmb3IgKGNvbnN0IFtidWJibGVJZCwgYnViYmxlXSBvZiBjb252ZXJ0ZWQpIHtcbiAgICAgICAgICBjb25zdCBwcmV2ID0gc3RvcmFnZS5nZXQoYnViYmxlSWQpO1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWRCdWJibGUgPSB1cGRhdGUocHJldiwgYnViYmxlKTtcbiAgICAgICAgICBpZiAoIXVwZGF0ZWRCdWJibGUpIGNvbnRpbnVlO1xuICAgICAgICAgIGlmIChwcmV2ID09PSB1cGRhdGVkQnViYmxlKSBjb250aW51ZTtcbiAgICAgICAgICBzdG9yYWdlLnNldChidWJibGVJZCwgdXBkYXRlZEJ1YmJsZSk7XG4gICAgICAgICAgZW1pdHRlci5kaXNwYXRjaChidWJibGVJZCwgYnViYmxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucz8uaWdub3JlRmV0Y2ggPT09IHRydWUpIGJyZWFrO1xuICAgICAgLy8g5pyJ5Yq55pyf6ZmQ44GM5YiH44KM44Gm44GE44KL44Gq44KJ44CB5paw44GX44GP44OH44O844K/44KSbmV0d29ya+OBi+OCieWPluOBo+OBpuOBj+OCi1xuICAgICAgaWYgKHR5cGUgPT09IFwiY2FjaGVcIiAmJiAhaXNFeHBpcmVkKHJlcywgb3B0aW9ucz8ubWF4QWdlID8/IDYwKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAvLyDmg7PlrprlpJbjga7jgqjjg6njg7zjga/jg63jgrDjgavlh7rjgZlcbiAgICBsb2dnZXIuZXJyb3IoZSk7XG4gIH0gZmluYWxseSB7XG4gICAgLy8g44Ot44OD44Kv6Kej6ZmkXG4gICAgbG9hZGluZ0lkcy5kZWxldGUoaWQpO1xuICAgIGxvZ2dlci50aW1lRW5kKHRpbWVUYWcpO1xuICAgIGNvdW50ZXItLTtcbiAgfVxufTtcbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBsb2FkLCBzdWJzY3JpYmUsIHVuc3Vic2NyaWJlIH0gZnJvbSBcIi4vYnViYmxlLnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVEZWJ1ZyB9IGZyb20gXCIuL2RlYnVnLnRzXCI7XG5pbXBvcnQgeyBJRCB9IGZyb20gXCIuL2lkLnRzXCI7XG5pbXBvcnQgeyBCdWJibGUgfSBmcm9tIFwiLi9zdG9yYWdlLnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZURlYnVnKFwiU2NyYXBCdWJibGU6dXNlQnViYmxlRGF0YS50c1wiKTtcblxuLyoqIGJ1YmJsZeODh+ODvOOCv+OCkuWPluW+l+OBmeOCi2hvb2tzXG4gKlxuICogQHBhcmFtIHBhZ2VJZHMg5Y+W5b6X44GZ44KL44Oa44O844K444GuSURcbiAqIEByZXR1cm5zIGJ1YmJsZSBkYXRhXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VCdWJibGVEYXRhID0gKFxuICBwYWdlSWRzOiByZWFkb25seSBJRFtdLFxuKTogcmVhZG9ubHkgQnViYmxlW10gPT4ge1xuICBjb25zdCBbYnViYmxlcywgc2V0QnViYmxlc10gPSB1c2VTdGF0ZTxyZWFkb25seSBCdWJibGVbXT4oXG4gICAgbWFrZUJ1YmJsZXMocGFnZUlkcyksXG4gICk7XG5cbiAgLy8g44OH44O844K/5pu05paw55SobGlzdGVuZXLjga7nmbvpjLJcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRCdWJibGVzKG1ha2VCdWJibGVzKHBhZ2VJZHMpKTtcblxuICAgIGxldCB0aW1lcjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKiDjg5rjg7zjgrjjg4fjg7zjgr/jgpLmm7TmlrDjgZnjgosgKi9cbiAgICBjb25zdCB1cGRhdGVEYXRhID0gKCkgPT4ge1xuICAgICAgLy8g5bCR44GX5b6F44Gj44Gm44GL44KJ44G+44Go44KB44Gm5pu05paw44GZ44KLXG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBVcGRhdGUgJHtwYWdlSWRzLmxlbmd0aH0gcGFnZXNgKTtcbiAgICAgICAgc2V0QnViYmxlcyhtYWtlQnViYmxlcyhwYWdlSWRzKSk7XG4gICAgICB9LCAxMCk7XG4gICAgfTtcblxuICAgIC8vIOabtOaWsOOCkuizvOiqreOBmeOCi1xuICAgIHBhZ2VJZHMuZm9yRWFjaCgoaWQpID0+IHN1YnNjcmliZShpZCwgdXBkYXRlRGF0YSkpO1xuICAgIHJldHVybiAoKSA9PiBwYWdlSWRzLmZvckVhY2goKGlkKSA9PiB1bnN1YnNjcmliZShpZCwgdXBkYXRlRGF0YSkpO1xuICB9LCBwYWdlSWRzKTtcblxuICAvLyBkZWJ1Z+eUqFxuXG4gIHJldHVybiBidWJibGVzO1xufTtcblxuY29uc3QgbWFrZUJ1YmJsZXMgPSAocGFnZUlkczogcmVhZG9ubHkgSURbXSk6IHJlYWRvbmx5IEJ1YmJsZVtdID0+IHtcbiAgY29uc3QgYnViYmxlcyA9IFsuLi5sb2FkKHBhZ2VJZHMpXS5mbGF0TWFwKChidWJibGUpID0+XG4gICAgYnViYmxlID8gW2J1YmJsZV0gOiBbXVxuICApO1xuXG4gIC8vIGRlYnVn55SoXG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgUmVxdWlyZWQ6ICR7cGFnZUlkcy5sZW5ndGh9IHBhZ2VzLCAke2J1YmJsZXMubGVuZ3RofSBmb3VuZGAsXG4gICAgYnViYmxlcyxcbiAgKTtcbiAgcmV0dXJuIGJ1YmJsZXM7XG59O1xuIiwgIi8qKiBAanN4IGggKi9cbi8qKiBAanN4RnJhZyBGcmFnbWVudCAqL1xuLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIvPlxuaW1wb3J0IHsgQ2FyZCB9IGZyb20gXCIuL0NhcmQudHN4XCI7XG5pbXBvcnQgeyBoLCB1c2VNZW1vIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyB1c2VCdWJibGVEYXRhIH0gZnJvbSBcIi4vdXNlQnViYmxlRGF0YS50c1wiO1xuaW1wb3J0IHsgQnViYmxlIH0gZnJvbSBcIi4vc3RvcmFnZS50c1wiO1xuaW1wb3J0IHsgTGlua1RvIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IElELCB0b0lkIH0gZnJvbSBcIi4vaWQudHNcIjtcbmltcG9ydCB7IEJ1YmJsZU9wZXJhdG9ycywgU291cmNlIH0gZnJvbSBcIi4vdXNlQnViYmxlcy50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhcmRMaXN0UHJvcHMge1xuICBkZWxheTogbnVtYmVyO1xuICBwcmVmZXRjaDogKHByb2plY3Q6IHN0cmluZywgdGl0bGU6IHN0cmluZykgPT4gdm9pZDtcbiAgLyoqIGtleSDjg5rjg7zjgrjjgqvjg7zjg4njga5JRCwgdmFsdWU6IOmAhuODquODs+OCr+WFiCAqL1xuICBsaW5rZWQ6IE1hcDxJRCwgTGlua1RvPjtcbiAgLyoqIGtleSDjg5rjg7zjgrjjgqvjg7zjg4njga5JRCwgdmFsdWU6IOmAhuODquODs+OCr+WFiCAqL1xuICBleHRlcm5hbExpbmtlZDogTWFwPElELCBMaW5rVG8+O1xuICBidWJibGU6IEJ1YmJsZU9wZXJhdG9yc1tcImJ1YmJsZVwiXTtcbiAgc291cmNlOiBQaWNrPFNvdXJjZSwgXCJwcm9qZWN0XCIgfCBcInRpdGxlXCIgfCBcInBvc2l0aW9uXCI+O1xuICBwcm9qZWN0c0ZvclNvcnQ6IFNldDxzdHJpbmc+O1xuICBvbkNsaWNrPzogaC5KU1guTW91c2VFdmVudEhhbmRsZXI8SFRNTFVMaXN0RWxlbWVudD47XG59XG5cbmV4cG9ydCBjb25zdCBDYXJkTGlzdCA9ICh7XG4gIHNvdXJjZSxcbiAgbGlua2VkLFxuICBleHRlcm5hbExpbmtlZCxcbiAgcHJvamVjdHNGb3JTb3J0OiBwcm9qZWN0c0ZvclNvcnRfLFxuICAuLi5wcm9wc1xufTogQ2FyZExpc3RQcm9wcykgPT4ge1xuICBjb25zdCBpZHMgPSB1c2VNZW1vKCgpID0+IFsuLi5saW5rZWQua2V5cygpLCAuLi5leHRlcm5hbExpbmtlZC5rZXlzKCldLCBbXG4gICAgbGlua2VkLFxuICAgIGV4dGVybmFsTGlua2VkLFxuICBdKTtcbiAgY29uc3QgY2FyZHMgPSB1c2VCdWJibGVEYXRhKGlkcyk7XG5cbiAgY29uc3QgcHJvamVjdHNGb3JTb3J0ID0gdXNlTWVtbygoKSA9PiBbLi4ucHJvamVjdHNGb3JTb3J0X10sIFtcbiAgICBwcm9qZWN0c0ZvclNvcnRfLFxuICBdKTtcbiAgLyoqIOabtOaWsOaXpeaZgumZjemghuOBqHByb2plY3TmmIfpoIbjgavkuKbjgbPmm7/jgYjjgZ/plqLpgKPjg5rjg7zjgrjjg4fjg7zjgr9cbiAgICpcbiAgICogZXh0ZXJuYWxDYXJkc+OBr+WIhuOBkeOBquOBhFxuICAgKi9cbiAgY29uc3Qgc29ydGVkQ2FyZHMgPSB1c2VNZW1vKFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBhcmUgPSAoYTogQnViYmxlLCBiOiBCdWJibGUpID0+IHtcbiAgICAgICAgY29uc3QgYUluZGV4ID0gcHJvamVjdHNGb3JTb3J0LmluZGV4T2YoYS5wcm9qZWN0KTtcbiAgICAgICAgY29uc3QgYkluZGV4ID0gcHJvamVjdHNGb3JTb3J0LmluZGV4T2YoYi5wcm9qZWN0KTtcblxuICAgICAgICBpZiAoYUluZGV4ID09PSBiSW5kZXgpIHJldHVybiBiLnVwZGF0ZWQgLSBhLnVwZGF0ZWQ7XG4gICAgICAgIGlmIChhSW5kZXggPCAwKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGJJbmRleCA8IDApIHJldHVybiAtMTtcbiAgICAgICAgcmV0dXJuIGFJbmRleCAtIGJJbmRleDtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBbLi4uY2FyZHNdLnNvcnQoY29tcGFyZSk7XG4gICAgfSxcbiAgICBbY2FyZHMsIHByb2plY3RzRm9yU29ydF0sXG4gICk7XG5cbiAgY29uc3QgY2FyZFN0eWxlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIGJvdHRvbTogYCR7c291cmNlLnBvc2l0aW9uLmJvdHRvbX1weGAsXG4gICAgbWF4V2lkdGg6IGAke3NvdXJjZS5wb3NpdGlvbi5tYXhXaWR0aH1weGAsXG4gICAgLi4uKFwibGVmdFwiIGluIHNvdXJjZS5wb3NpdGlvblxuICAgICAgPyB7XG4gICAgICAgIGxlZnQ6IGAke3NvdXJjZS5wb3NpdGlvbi5sZWZ0fXB4YCxcbiAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICByaWdodDogYCR7c291cmNlLnBvc2l0aW9uLnJpZ2h0fXB4YCxcbiAgICAgIH0pLFxuICB9KSwgW1xuICAgIHNvdXJjZS5wb3NpdGlvbixcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8dWxcbiAgICAgIGNsYXNzTmFtZT1cImNhcmQtYnViYmxlXCJcbiAgICAgIHN0eWxlPXtjYXJkU3R5bGV9XG4gICAgICBvbkNsaWNrPXtwcm9wcy5vbkNsaWNrfVxuICAgID5cbiAgICAgIHtzb3J0ZWRDYXJkcy5tYXAoKFxuICAgICAgICB7XG4gICAgICAgICAgcHJvamVjdCxcbiAgICAgICAgICB0aXRsZUxjLFxuICAgICAgICAgIGxpbmVzOiBbeyB0ZXh0OiB0aXRsZSB9XSxcbiAgICAgICAgICBkZXNjcmlwdGlvbnMsXG4gICAgICAgICAgaW1hZ2UsXG4gICAgICAgIH0sXG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gdG9JZChwcm9qZWN0LCB0aXRsZUxjKTtcbiAgICAgICAgLy8gaG9va+OBruioiOeul+OBq+ODqeOCsOOBjOOBguOCiuOAgWxpbmtUb+OBjOimi+OBpOOBi+OCieOBquOBhOWgtOWQiOOBjOOBguOCi1xuICAgICAgICBjb25zdCBsaW5rVG8gPSBsaW5rZWQuZ2V0KGtleSkgPz8gZXh0ZXJuYWxMaW5rZWQuZ2V0KGtleSk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8bGkga2V5PXtrZXl9PlxuICAgICAgICAgICAgPENhcmRcbiAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgICAgICBsaW5rVG89e2xpbmtUb31cbiAgICAgICAgICAgICAgZGVzY3JpcHRpb25zPXtkZXNjcmlwdGlvbnN9XG4gICAgICAgICAgICAgIHRodW1ibmFpbD17aW1hZ2UgPz8gXCJcIn1cbiAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfSl9XG4gICAgPC91bD5cbiAgKTtcbn07XG4iLCAiZXhwb3J0IGludGVyZmFjZSBTY3JhcGJveExpbmsge1xuICBocmVmOiBzdHJpbmc7XG4gIHBhdGhUeXBlOiBcInJvb3RcIiB8IFwicmVsYXRpdmVcIjtcbn1cblxuLyoqIFNjcmFwYm946KiY5rOV44Gu44Oq44Oz44Kv44GL44KJ44CBcHJvamVjdCwgdGl0bGUsIGhhc2jjgpLlj5bjgorlh7rjgZlcbiAqXG4gKiBAcGFyYW0gbGluayDmp4vmlofop6PmnpDjgZfjgZ9TY3JhcGJveOiomOazleOBruODquODs+OCr1xuICogQHJldHVybiDmir3lh7rjgZfjgZ9wcm9qZWN0LCB0aXRsZSwgaGFzaFxuICovXG5leHBvcnQgY29uc3QgcGFyc2VMaW5rID0gKFxuICBsaW5rOiBTY3JhcGJveExpbmssXG4pOiB7IHByb2plY3Q6IHN0cmluZzsgdGl0bGU/OiBzdHJpbmc7IGhhc2g/OiBzdHJpbmcgfSB8IHtcbiAgcHJvamVjdD86IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgaGFzaD86IHN0cmluZztcbn0gPT4ge1xuICBpZiAobGluay5wYXRoVHlwZSA9PT0gXCJyb290XCIpIHtcbiAgICBjb25zdCBbLCBwcm9qZWN0ID0gXCJcIiwgdGl0bGUgPSBcIlwiXSA9IGxpbmsuaHJlZi5tYXRjaChcbiAgICAgIC9cXC8oW1xcd1xcLV0rKSg/OlxcLz98XFwvKC4qKSkkLyxcbiAgICApID8/IFtcIlwiLCBcIlwiLCBcIlwiXTtcbiAgICBpZiAocHJvamVjdCA9PT0gXCJcIikge1xuICAgICAgdGhyb3cgU3ludGF4RXJyb3IoYEZhaWxlZCB0byBnZXQgYSBwcm9qZWN0IG5hbWUgZnJvbSBcIiR7bGluay5ocmVmfVwiYCk7XG4gICAgfVxuICAgIGNvbnN0IFssIGhhc2hdID0gdGl0bGU/Lm1hdGNoPy4oLyMoW2EtZlxcZF17MjQsMzJ9KSQvKSA/PyBbXCJcIiwgXCJcIl07XG4gICAgcmV0dXJuIHRpdGxlID09PSBcIlwiXG4gICAgICA/IHsgcHJvamVjdCB9XG4gICAgICA6IGhhc2ggPT09IFwiXCJcbiAgICAgID8geyBwcm9qZWN0LCB0aXRsZSB9XG4gICAgICA6IHsgcHJvamVjdCwgdGl0bGU6IHRpdGxlLnNsaWNlKDAsIC0xIC0gaGFzaC5sZW5ndGgpLCBoYXNoIH07XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgWywgaGFzaF0gPSBsaW5rLmhyZWYubWF0Y2goLyMoW2EtZlxcZF17MjQsMzJ9KSQvKSA/PyBbXCJcIiwgXCJcIl07XG4gICAgcmV0dXJuIGhhc2ggPT09IFwiXCJcbiAgICAgID8geyB0aXRsZTogbGluay5ocmVmIH1cbiAgICAgIDogeyB0aXRsZTogbGluay5ocmVmLnNsaWNlKDAsIC0xIC0gaGFzaC5sZW5ndGgpLCBoYXNoIH07XG4gIH1cbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIvPlxuXG5pbXBvcnQgeyBOb2RlIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1wYXJzZXIudHNcIjtcbmltcG9ydCB7IHBhcnNlTGluayB9IGZyb20gXCIuL3BhcnNlTGluay50c1wiO1xuaW1wb3J0IHsgTGlua1RvIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IHRvVGl0bGVMYyB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5cbi8qKiDmjIflrprjgZfjgZ/jg6rjg7Pjgq/jgYxTY3JhcGJveOOBruODmuODvOOCuOS4reOBq+WtmOWcqOOBmeOCi+OBi+iqv+OBueOCi1xuICpcbiAqIEBwYXJhbSBsaW5rIOiqv+OBueOBn+OBhOODquODs+OCr+OBruOCv+OCpOODiOODq1xuICogQHBhcmFtIG5vZGVzIOODmuODvOOCuOOBruani+aWh+ino+aekOe1kOaenFxuICogQHJldHVybiDopovjgaTjgYvjgaPjgZ/jgolgdHJ1ZWBcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0xpbmsgPSAoXG4gIGxpbms6IExpbmtUbyxcbiAgbm9kZXM6IE5vZGVbXSxcbik6IGJvb2xlYW4gPT5cbiAgbm9kZXMuc29tZSgobm9kZSkgPT4ge1xuICAgIGNvbnN0IGlzUmVsYXRpdmUgPSAhbGluay5wcm9qZWN0O1xuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICBjYXNlIFwiaGFzaFRhZ1wiOlxuICAgICAgICByZXR1cm4gaXNSZWxhdGl2ZSAmJlxuICAgICAgICAgIHRvVGl0bGVMYyhub2RlLmhyZWYpID09PSBsaW5rLnRpdGxlTGM7XG4gICAgICBjYXNlIFwibGlua1wiOiB7XG4gICAgICAgIGlmIChub2RlLnBhdGhUeXBlID09IFwiYWJzb2x1dGVcIikgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoKG5vZGUucGF0aFR5cGUgPT09IFwicmVsYXRpdmVcIikgIT09IGlzUmVsYXRpdmUpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBjb25zdCB7IHByb2plY3QsIHRpdGxlID0gXCJcIiB9ID0gcGFyc2VMaW5rKHtcbiAgICAgICAgICBwYXRoVHlwZTogbm9kZS5wYXRoVHlwZSxcbiAgICAgICAgICBocmVmOiBub2RlLmhyZWYsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaXNSZWxhdGl2ZVxuICAgICAgICAgID8gIXByb2plY3QgJiYgdG9UaXRsZUxjKHRpdGxlKSA9PT0gbGluay50aXRsZUxjXG4gICAgICAgICAgOiBwcm9qZWN0ID09PSBsaW5rLnByb2plY3QgJiZcbiAgICAgICAgICAgIHRvVGl0bGVMYyh0aXRsZSkgPT09IGxpbmsudGl0bGVMYztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJxdW90ZVwiOlxuICAgICAgY2FzZSBcInN0cm9uZ1wiOlxuICAgICAgY2FzZSBcImRlY29yYXRpb25cIjpcbiAgICAgICAgcmV0dXJuIGhhc0xpbmsobGluaywgbm9kZS5ub2Rlcyk7XG4gICAgfVxuICB9KTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIi8+XG5cbi8qKiBAanN4IGggKi9cbi8qKiBAanN4RnJhZyBGcmFnbWVudCAqL1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50Q2hpbGRyZW4sXG4gIGNyZWF0ZUNvbnRleHQsXG4gIEZyYWdtZW50LFxuICBoLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IHVzZUthVGVYIH0gZnJvbSBcIi4vZGVwcy91c2VLYVRlWC50c1wiO1xuaW1wb3J0IHtcbiAgQ29kZUJsb2NrIGFzIENvZGVCbG9ja1R5cGUsXG4gIENvbW1hbmRMaW5lTm9kZSxcbiAgRGVjb3JhdGlvbk5vZGUsXG4gIEZvcm11bGFOb2RlLFxuICBHb29nbGVNYXBOb2RlLFxuICBIYXNoVGFnTm9kZSxcbiAgSWNvbk5vZGUsXG4gIEltYWdlTm9kZSxcbiAgTGluZSBhcyBMaW5lVHlwZSxcbiAgTGlua05vZGUsXG4gIE5vZGUgYXMgTm9kZVR5cGUsXG4gIFN0cm9uZ0ljb25Ob2RlLFxuICBUYWJsZSBhcyBUYWJsZVR5cGUsXG59IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtcGFyc2VyLnRzXCI7XG5pbXBvcnQgeyBwYXJzZUxpbmsgfSBmcm9tIFwiLi9wYXJzZUxpbmsudHNcIjtcbmltcG9ydCB7IGhhc0xpbmsgfSBmcm9tIFwiLi9oYXNMaW5rLnRzXCI7XG5pbXBvcnQgeyB0b0lkIH0gZnJvbSBcIi4vaWQudHNcIjtcbmltcG9ydCB7IHN0YXlIb3ZlcmluZyB9IGZyb20gXCIuL3N0YXlIb3ZlcmluZy50c1wiO1xuaW1wb3J0IHsgQnViYmxlT3BlcmF0b3JzIH0gZnJvbSBcIi4vdXNlQnViYmxlcy50c1wiO1xuaW1wb3J0IHsgTGlua1RvIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IHVzZUJ1YmJsZURhdGEgfSBmcm9tIFwiLi91c2VCdWJibGVEYXRhLnRzXCI7XG5pbXBvcnQgeyBpc0VtcHR5TGluayB9IGZyb20gXCIuL3N0b3JhZ2UudHNcIjtcbmltcG9ydCB7IGNhbGNCdWJibGVQb3NpdGlvbiB9IGZyb20gXCIuL3Bvc2l0aW9uLnRzXCI7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtcGFyc2VyLnRzXCI7XG5pbXBvcnQge1xuICBBbmNob3JGTU5vZGUsXG4gIEF1ZGlvTm9kZSxcbiAgZW5jb2RlVGl0bGVVUkksXG4gIHBhcnNlQWJzb2x1dGVMaW5rLFxuICBzbGVlcCxcbiAgU3BvdGlmeU5vZGUsXG4gIFZpZGVvTm9kZSxcbiAgVmltZW9Ob2RlLFxuICBZb3V0dWJlTGlzdE5vZGUsXG4gIFlvdXR1YmVOb2RlLFxufSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LXN0ZC50c1wiO1xuaW1wb3J0IHR5cGUgeyBTY3JhcGJveCB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcIi4vdXNlVGhlbWUudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIC8qKiBDU1JGIHRva2VuICovXG4gICAgX2NzcmY/OiBzdHJpbmc7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlUHJvcHMgZXh0ZW5kcyBCdWJibGVPcGVyYXRvcnMge1xuICB0aXRsZTogc3RyaW5nO1xuICBwcm9qZWN0OiBzdHJpbmc7XG4gIHdoaXRlTGlzdDogU2V0PHN0cmluZz47XG4gIGRlbGF5OiBudW1iZXI7XG4gIGxpbmVzOiB7IHRleHQ6IHN0cmluZzsgaWQ6IHN0cmluZyB9W10gfCBzdHJpbmdbXTtcbiAgbm9JbmRlbnQ/OiBib29sZWFuO1xuICBoYXNoPzogc3RyaW5nO1xuICBsaW5rVG8/OiBMaW5rVG87XG5cbiAgcHJlZmV0Y2g6IChwcm9qZWN0OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbi8vIDxQYWdlIC8+6ZmQ5a6a44GuY29udGV4dFxuY29uc3QgY29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8XG4gICYge1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgcHJvamVjdDogc3RyaW5nO1xuICAgIHdoaXRlTGlzdDogU2V0PHN0cmluZz47XG4gICAgZGVsYXk6IG51bWJlcjtcbiAgICBwcmVmZXRjaDogKHByb2plY3Q6IHN0cmluZywgdGl0bGU6IHN0cmluZykgPT4gdm9pZDtcbiAgfVxuICAmIEJ1YmJsZU9wZXJhdG9yc1xuPih7XG4gIHRpdGxlOiBcIlwiLFxuICBwcm9qZWN0OiBcIlwiLFxuICB3aGl0ZUxpc3Q6IG5ldyBTZXQoKSxcbiAgYnViYmxlOiAoKSA9PiB7fSxcbiAgaGlkZTogKCkgPT4ge30sXG4gIGRlbGF5OiAwLFxuICBwcmVmZXRjaDogKCkgPT4ge30sXG59KTtcblxuZXhwb3J0IGNvbnN0IFBhZ2UgPSAoXG4gIHsgbGluZXMsIHByb2plY3QsIHRpdGxlLCB3aGl0ZUxpc3QsIG5vSW5kZW50LCBoYXNoLCBsaW5rVG8sIC4uLnByb3BzIH06XG4gICAgUGFnZVByb3BzLFxuKTogaC5KU1guRWxlbWVudCA9PiB7XG4gIGNvbnN0IGxpbmVJZHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGxpbmVzLmZsYXRNYXAoKGxpbmUpID0+IHR5cGVvZiBsaW5lID09PSBcInN0cmluZ1wiID8gW10gOiBbbGluZS5pZF0pLFxuICAgIFtsaW5lc10sXG4gICk7XG4gIGNvbnN0IGJsb2NrcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGxldCBjb3VudGVyID0gMDtcbiAgICByZXR1cm4gcGFyc2UoXG4gICAgICBsaW5lcy5tYXAoKGxpbmUpID0+IHR5cGVvZiBsaW5lID09PSBcInN0cmluZ1wiID8gbGluZSA6IGxpbmUudGV4dCkuam9pbihcbiAgICAgICAgXCJcXG5cIixcbiAgICAgICksXG4gICAgICB7IGhhc1RpdGxlOiB0cnVlIH0sXG4gICAgKS5tYXAoKGJsb2NrKSA9PiB7XG4gICAgICBzd2l0Y2ggKGJsb2NrLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcInRpdGxlXCI6XG4gICAgICAgIGNhc2UgXCJsaW5lXCI6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJsb2NrLFxuICAgICAgICAgICAgaWQ6IGxpbmVJZHNbY291bnRlcisrXSxcbiAgICAgICAgICB9O1xuICAgICAgICBjYXNlIFwiY29kZUJsb2NrXCI6IHtcbiAgICAgICAgICBjb25zdCBzdGFydCA9IGNvdW50ZXI7XG4gICAgICAgICAgY291bnRlciArPSBibG9jay5jb250ZW50LnNwbGl0KFwiXFxuXCIpLmxlbmd0aCArIDE7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJsb2NrLFxuICAgICAgICAgICAgaWRzOiBsaW5lSWRzLnNsaWNlKHN0YXJ0LCBjb3VudGVyKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJ0YWJsZVwiOiB7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSBjb3VudGVyO1xuICAgICAgICAgIGNvdW50ZXIgKz0gYmxvY2suY2VsbHMubGVuZ3RoICsgMTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmxvY2ssXG4gICAgICAgICAgICBpZHM6IGxpbmVJZHMuc2xpY2Uoc3RhcnQsIGNvdW50ZXIpLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW2xpbmVzLCBsaW5lSWRzXSk7XG5cbiAgY29uc3Qgc2Nyb2xsSWQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaGFzaCAmJiBsaW5lSWRzLmluY2x1ZGVzKGhhc2gpKSByZXR1cm4gaGFzaDtcbiAgICBpZiAoIWxpbmtUbykgcmV0dXJuO1xuXG4gICAgcmV0dXJuIChibG9ja3MuZmluZCgoYmxvY2spID0+IHtcbiAgICAgIGlmIChibG9jay50eXBlICE9PSBcImxpbmVcIikgcmV0dXJuIGZhbHNlO1xuXG4gICAgICByZXR1cm4gaGFzTGluayhsaW5rVG8sIGJsb2NrLm5vZGVzKTtcbiAgICB9KSBhcyBMaW5lVHlwZSAmIHsgaWQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkKT8uaWQ7XG4gIH0sIFtibG9ja3MsIGxpbmVJZHMsIGhhc2gsIGxpbmtUbz8ucHJvamVjdCwgbGlua1RvPy50aXRsZUxjXSk7XG5cbiAgLy8g44Oq44Oz44Kv5YWI44Gr44K544Kv44Ot44O844Or44GZ44KLXG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzY3JvbGxJZCkgcmV0dXJuO1xuXG4gICAgY29uc3QgdGFyZ2V0TGluZSA9IHJlZi5jdXJyZW50Py5xdWVyeVNlbGVjdG9yKGBbZGF0YS1pZD1cIiR7c2Nyb2xsSWR9XCJdYCk7XG4gICAgY29uc3Qgc2Nyb2xsWSA9IGdsb2JhbFRoaXMuc2Nyb2xsWTtcbiAgICB0YXJnZXRMaW5lPy5zY3JvbGxJbnRvVmlldz8uKHsgYmxvY2s6IFwiY2VudGVyXCIgfSk7XG4gICAgZ2xvYmFsVGhpcy5zY3JvbGwoMCwgc2Nyb2xsWSk7XG4gIH0sIFtzY3JvbGxJZF0pO1xuXG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUocHJvamVjdCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImxpbmVzXCIgZGF0YS10aGVtZT17dGhlbWV9IHJlZj17cmVmfT5cbiAgICAgIDxjb250ZXh0LlByb3ZpZGVyXG4gICAgICAgIHZhbHVlPXt7IHByb2plY3QsIHRpdGxlLCB3aGl0ZUxpc3QsIC4uLnByb3BzIH19XG4gICAgICA+XG4gICAgICAgIHtibG9ja3MubWFwKChibG9jaykgPT4ge1xuICAgICAgICAgIHN3aXRjaCAoYmxvY2sudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcInRpdGxlXCI6XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxMaW5lXG4gICAgICAgICAgICAgICAgICAgIGtleT17YmxvY2suaWR9XG4gICAgICAgICAgICAgICAgICAgIGluZGV4PXtibG9jay5pZH1cbiAgICAgICAgICAgICAgICAgICAgaW5kZW50PXswfVxuICAgICAgICAgICAgICAgICAgICBub0luZGVudD17bm9JbmRlbnR9XG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluaz17YmxvY2suaWQgPT09IHNjcm9sbElkfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBhZ2UtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2AvJHtwcm9qZWN0fS8ke2VuY29kZVRpdGxlVVJJKGJsb2NrLnRleHQpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgcmVsPXtwcm9qZWN0ID09PSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJyb3V0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwibm9vcGVuZXIgbm9yZWZlcnJlclwifVxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD17cHJvamVjdCA9PT0gc2NyYXBib3guUHJvamVjdC5uYW1lID8gXCJcIiA6IFwiX2JsYW5rXCJ9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7YmxvY2sudGV4dH1cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgPC9MaW5lPlxuICAgICAgICAgICAgICAgICAgPGhyIC8+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlIFwiY29kZUJsb2NrXCI6IHtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8Q29kZUJsb2NrXG4gICAgICAgICAgICAgICAgICBrZXk9e2Jsb2NrLmlkc1swXX1cbiAgICAgICAgICAgICAgICAgIGJsb2NrPXtibG9ja31cbiAgICAgICAgICAgICAgICAgIG5vSW5kZW50PXtub0luZGVudH1cbiAgICAgICAgICAgICAgICAgIGlkcz17YmxvY2suaWRzfVxuICAgICAgICAgICAgICAgICAgc2Nyb2xsSWQ9e3Njcm9sbElkfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidGFibGVcIjoge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxUYWJsZVxuICAgICAgICAgICAgICAgICAga2V5PXtibG9jay5pZHNbMF19XG4gICAgICAgICAgICAgICAgICBibG9jaz17YmxvY2t9XG4gICAgICAgICAgICAgICAgICBub0luZGVudD17bm9JbmRlbnR9XG4gICAgICAgICAgICAgICAgICBpZHM9e2Jsb2NrLmlkc31cbiAgICAgICAgICAgICAgICAgIHNjcm9sbElkPXtzY3JvbGxJZH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImxpbmVcIjpcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8TGluZVxuICAgICAgICAgICAgICAgICAga2V5PXtibG9jay5pZH1cbiAgICAgICAgICAgICAgICAgIGluZGV4PXtibG9jay5pZH1cbiAgICAgICAgICAgICAgICAgIGluZGVudD17YmxvY2suaW5kZW50fVxuICAgICAgICAgICAgICAgICAgbm9JbmRlbnQ9e25vSW5kZW50fVxuICAgICAgICAgICAgICAgICAgcGVybWFsaW5rPXtibG9jay5pZCA9PT0gc2Nyb2xsSWR9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2Jsb2NrLm5vZGVzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgPyBibG9jay5ub2Rlcy5tYXAoKG5vZGUpID0+IDxOb2RlIG5vZGU9e25vZGV9IC8+KVxuICAgICAgICAgICAgICAgICAgICA6IDxiciAvPn1cbiAgICAgICAgICAgICAgICA8L0xpbmU+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KX1cbiAgICAgIDwvY29udGV4dC5Qcm92aWRlcj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbnR5cGUgTGluZVByb3BzID0ge1xuICBpbmRleDogc3RyaW5nO1xuICBpbmRlbnQ6IG51bWJlcjtcbiAgcGVybWFsaW5rPzogYm9vbGVhbjtcbiAgbm9JbmRlbnQ/OiBib29sZWFuO1xuICBjaGlsZHJlbjogQ29tcG9uZW50Q2hpbGRyZW47XG59O1xuXG5jb25zdCBMaW5lID0gKHsgaW5kZXgsIGluZGVudCwgbm9JbmRlbnQsIGNoaWxkcmVuLCBwZXJtYWxpbmsgfTogTGluZVByb3BzKSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2BsaW5lJHtwZXJtYWxpbmsgPyBcIiBwZXJtYWxpbmtcIiA6IFwiXCJ9YH1cbiAgICBkYXRhLWlkPXtpbmRleH1cbiAgICBkYXRhLWluZGVudD17aW5kZW50fVxuICAgIHN0eWxlPXt7IFwibWFyZ2luLWxlZnRcIjogbm9JbmRlbnQgPyBcIlwiIDogYCR7MS4wICogaW5kZW50fWVtYCB9fVxuICA+XG4gICAge2NoaWxkcmVufVxuICA8L2Rpdj5cbik7XG5cbnR5cGUgQ29kZUJsb2NrUHJvcHMgPSB7XG4gIGJsb2NrOiBDb2RlQmxvY2tUeXBlO1xuICBub0luZGVudD86IGJvb2xlYW47XG4gIGlkczogc3RyaW5nW107XG4gIHNjcm9sbElkPzogc3RyaW5nO1xufTtcbmNvbnN0IENvZGVCbG9jayA9IChcbiAgeyBibG9jazogeyBmaWxlTmFtZSwgY29udGVudCwgaW5kZW50IH0sIGlkcywgc2Nyb2xsSWQgfTogQ29kZUJsb2NrUHJvcHMsXG4pID0+IHtcbiAgY29uc3QgeyBwcm9qZWN0LCB0aXRsZSB9ID0gdXNlQ29udGV4dChjb250ZXh0KTtcbiAgY29uc3QgW2J1dHRvbkxhYmVsLCBzZXRCdXR0b25MYWJlbF0gPSB1c2VTdGF0ZShcIlxcdWYwYzVcIik7XG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGU6IGguSlNYLlRhcmdldGVkTW91c2VFdmVudDxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29udGVudCk7XG4gICAgICAgIHNldEJ1dHRvbkxhYmVsKFwiQ29waWVkXCIpO1xuICAgICAgICBhd2FpdCBzbGVlcCgxMDAwKTtcbiAgICAgICAgc2V0QnV0dG9uTGFiZWwoXCJcXHVmMGM1XCIpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBhbGVydChgRmFpbGVkIHRvIGNvcHkgdGhlIGNvZGUgYmxvY2tcXG5FcnJvcjoke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtjb250ZW50XSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8TGluZSBpbmRleD17aWRzWzBdfSBpbmRlbnQ9e2luZGVudH0gcGVybWFsaW5rPXtpZHNbMF0gPT09IHNjcm9sbElkfT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiY29kZS1ibG9ja1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImNvZGUtYmxvY2stc3RhcnRcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGhyZWY9e2AvYXBpL2NvZGUvJHtwcm9qZWN0fS8ke2VuY29kZVRpdGxlVVJJKHRpdGxlKX0vJHtmaWxlTmFtZX1gfVxuICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7ZmlsZU5hbWV9XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImNvcHlcIiB0aXRsZT1cIkNvcHlcIiBvbkNsaWNrPXtoYW5kbGVDbGlja30+XG4gICAgICAgICAgICB7YnV0dG9uTGFiZWx9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L0xpbmU+XG4gICAgICA8PlxuICAgICAgICB7Y29udGVudC5zcGxpdChcIlxcblwiKS5tYXAoKGxpbmUsIGluZGV4KSA9PiAoXG4gICAgICAgICAgPExpbmVcbiAgICAgICAgICAgIGluZGV4PXtpZHNbaW5kZXggKyAxXX1cbiAgICAgICAgICAgIGluZGVudD17aW5kZW50fVxuICAgICAgICAgICAgcGVybWFsaW5rPXtpZHNbaW5kZXggKyAxXSA9PT0gc2Nyb2xsSWR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGNvZGUgY2xhc3NOYW1lPVwiY29kZS1ibG9ja1wiPlxuICAgICAgICAgICAgICB7bGluZX1cbiAgICAgICAgICAgIDwvY29kZT5cbiAgICAgICAgICA8L0xpbmU+XG4gICAgICAgICkpfVxuICAgICAgPC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG50eXBlIFRhYmxlUHJvcHMgPSB7XG4gIGJsb2NrOiBUYWJsZVR5cGU7XG4gIG5vSW5kZW50PzogYm9vbGVhbjtcbiAgc2Nyb2xsSWQ/OiBzdHJpbmc7XG4gIGlkczogc3RyaW5nW107XG59O1xuY29uc3QgVGFibGUgPSAoXG4gIHtcbiAgICBibG9jazogeyBmaWxlTmFtZSwgY2VsbHMsIGluZGVudCB9LFxuICAgIGlkcyxcbiAgICBzY3JvbGxJZCxcbiAgfTogVGFibGVQcm9wcyxcbikgPT4ge1xuICBjb25zdCB7IHByb2plY3QsIHRpdGxlIH0gPSB1c2VDb250ZXh0KGNvbnRleHQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxMaW5lIGluZGV4PXtpZHNbMF19IGluZGVudD17aW5kZW50fSBwZXJtYWxpbms9e2lkc1swXSA9PT0gc2Nyb2xsSWR9PlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0YWJsZS1ibG9ja1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRhYmxlLWJsb2NrLXN0YXJ0XCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPXtgL2FwaS90YWJsZS8ke3Byb2plY3R9LyR7XG4gICAgICAgICAgICAgICAgZW5jb2RlVGl0bGVVUkkodGl0bGUpXG4gICAgICAgICAgICAgIH0vJHtmaWxlTmFtZX0uY3N2YH1cbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2ZpbGVOYW1lfVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9MaW5lPlxuICAgICAgPD5cbiAgICAgICAge2NlbGxzLm1hcCgoY2VsbCwgaSkgPT4gKFxuICAgICAgICAgIDxMaW5lXG4gICAgICAgICAgICBpbmRleD17aWRzW2kgKyAxXX1cbiAgICAgICAgICAgIGluZGVudD17aW5kZW50fVxuICAgICAgICAgICAgcGVybWFsaW5rPXtpZHNbaSArIDFdID09PSBzY3JvbGxJZH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0YWJsZS1ibG9jayB0YWJsZS1ibG9jay1yb3dcIj5cbiAgICAgICAgICAgICAge2NlbGwubWFwKChyb3csIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgY2VsbCBjb2wtJHtpbmRleH1gfT5cbiAgICAgICAgICAgICAgICAgIHtyb3cubWFwKChub2RlKSA9PiA8Tm9kZSBub2RlPXtub2RlfSAvPil9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L0xpbmU+XG4gICAgICAgICkpfVxuICAgICAgPC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG50eXBlIE5vZGVQcm9wcyA9IHtcbiAgbm9kZTogTm9kZVR5cGU7XG59O1xuY29uc3QgTm9kZSA9ICh7IG5vZGUgfTogTm9kZVByb3BzKSA9PiB7XG4gIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgY2FzZSBcImNvZGVcIjpcbiAgICAgIHJldHVybiA8Y29kZSBjbGFzc05hbWU9XCJjb2RlXCI+e25vZGUudGV4dH08L2NvZGU+O1xuICAgIGNhc2UgXCJmb3JtdWxhXCI6XG4gICAgICByZXR1cm4gPEZvcm11bGEgbm9kZT17bm9kZX0gLz47XG4gICAgY2FzZSBcImNvbW1hbmRMaW5lXCI6XG4gICAgICByZXR1cm4gPENvbW1hbmRMaW5lIG5vZGU9e25vZGV9IC8+O1xuICAgIGNhc2UgXCJoZWxwZmVlbFwiOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGNvZGUgY2xhc3NOYW1lPVwiaGVscGZlZWxcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcmVmaXhcIj4/PC9zcGFuPntcIiBcIn1cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJlbnRyeVwiPntub2RlLnRleHR9PC9zcGFuPlxuICAgICAgICA8L2NvZGU+XG4gICAgICApO1xuICAgIGNhc2UgXCJxdW90ZVwiOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGJsb2NrcXVvdGUgY2xhc3NOYW1lPVwicXVvdGVcIj5cbiAgICAgICAgICB7bm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IDxOb2RlIG5vZGU9e25vZGV9IC8+KX1cbiAgICAgICAgPC9ibG9ja3F1b3RlPlxuICAgICAgKTtcbiAgICBjYXNlIFwic3Ryb25nXCI6XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgIHtub2RlLm5vZGVzLm1hcCgobm9kZSkgPT4gPE5vZGUgbm9kZT17bm9kZX0gLz4pfVxuICAgICAgICA8L3N0cm9uZz5cbiAgICAgICk7XG4gICAgY2FzZSBcImRlY29yYXRpb25cIjpcbiAgICAgIHJldHVybiA8RGVjb3JhdGlvbiBub2RlPXtub2RlfSAvPjtcbiAgICBjYXNlIFwicGxhaW5cIjpcbiAgICBjYXNlIFwiYmxhbmtcIjpcbiAgICAgIHJldHVybiA8Pntub2RlLnRleHR9PC8+O1xuICAgIGNhc2UgXCJoYXNoVGFnXCI6XG4gICAgICByZXR1cm4gPEhhc2hUYWcgbm9kZT17bm9kZX0gLz47XG4gICAgY2FzZSBcImxpbmtcIjpcbiAgICAgIHJldHVybiA8TGluayBub2RlPXtub2RlfSAvPjtcbiAgICBjYXNlIFwiZ29vZ2xlTWFwXCI6XG4gICAgICByZXR1cm4gPEdvb2dsZU1hcCBub2RlPXtub2RlfSAvPjtcbiAgICBjYXNlIFwiaWNvblwiOlxuICAgICAgcmV0dXJuIDxJY29uIG5vZGU9e25vZGV9IC8+O1xuICAgIGNhc2UgXCJzdHJvbmdJY29uXCI6XG4gICAgICByZXR1cm4gPEljb24gbm9kZT17bm9kZX0gc3Ryb25nIC8+O1xuICAgIGNhc2UgXCJpbWFnZVwiOlxuICAgICAgcmV0dXJuIDxJbWFnZSBub2RlPXtub2RlfSAvPjtcbiAgICBjYXNlIFwic3Ryb25nSW1hZ2VcIjpcbiAgICAgIHJldHVybiA8aW1nIGNsYXNzTmFtZT1cImltYWdlIHN0cm9uZy1pbWFnZVwiIHNyYz17bm9kZS5zcmN9IC8+O1xuICAgIGNhc2UgXCJudW1iZXJMaXN0XCI6XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIHtgJHtub2RlLm51bWJlcn0uIGB9XG4gICAgICAgICAge25vZGUubm9kZXMubWFwKChub2RlKSA9PiA8Tm9kZSBub2RlPXtub2RlfSAvPil9XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgfVxufTtcblxudHlwZSBGb3JtdWxhUHJvcHMgPSB7IG5vZGU6IEZvcm11bGFOb2RlIH07XG5jb25zdCBGb3JtdWxhID0gKHsgbm9kZTogeyBmb3JtdWxhIH0gfTogRm9ybXVsYVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgcmVmLCBlcnJvciwgc2V0Rm9ybXVsYSB9ID0gdXNlS2FUZVgoXCJcIik7XG4gIHNldEZvcm11bGEoZm9ybXVsYSk7XG5cbiAgcmV0dXJuIChcbiAgICA8c3BhbiBjbGFzc05hbWU9e2Bmb3JtdWxhICR7ZXJyb3IgPyBcIiBlcnJvclwiIDogXCJcIn1gfT5cbiAgICAgIHtlcnJvclxuICAgICAgICA/IDxjb2RlPntmb3JtdWxhfTwvY29kZT5cbiAgICAgICAgOiA8c3BhbiBjbGFzc05hbWU9XCJrYXRleC1kaXNwbGF5XCIgcmVmPXtyZWZ9IC8+fVxuICAgIDwvc3Bhbj5cbiAgKTtcbn07XG50eXBlIERlY29yYXRpb25Qcm9wcyA9IHsgbm9kZTogRGVjb3JhdGlvbk5vZGUgfTtcbmNvbnN0IERlY29yYXRpb24gPSAoXG4gIHsgbm9kZTogeyBkZWNvcywgbm9kZXMgfSB9OiBEZWNvcmF0aW9uUHJvcHMsXG4pID0+IChcbiAgPHNwYW4gY2xhc3NOYW1lPXtkZWNvcy5tYXAoKGRlY28pID0+IGBkZWNvLSR7ZGVjb31gKS5qb2luKFwiIFwiKX0+XG4gICAge25vZGVzLm1hcCgobm9kZSkgPT4gPE5vZGUgbm9kZT17bm9kZX0gLz4pfVxuICA8L3NwYW4+XG4pO1xuXG50eXBlIENvbW1hbmRMaW5lUHJvcHMgPSB7IG5vZGU6IENvbW1hbmRMaW5lTm9kZSB9O1xuY29uc3QgQ29tbWFuZExpbmUgPSAoXG4gIHsgbm9kZSB9OiBDb21tYW5kTGluZVByb3BzLFxuKSA9PiB7XG4gIGNvbnN0IFtidXR0b25MYWJlbCwgc2V0QnV0dG9uTGFiZWxdID0gdXNlU3RhdGUoXCJcXHVmMGM1XCIpO1xuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChlOiBoLkpTWC5UYXJnZXRlZE1vdXNlRXZlbnQ8SFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KG5vZGUudGV4dCk7XG4gICAgICAgIHNldEJ1dHRvbkxhYmVsKFwiQ29waWVkXCIpO1xuICAgICAgICBhd2FpdCBzbGVlcCgxMDAwKTtcbiAgICAgICAgc2V0QnV0dG9uTGFiZWwoXCJcXHVmMGM1XCIpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBhbGVydChgRmFpbGVkIHRvIGNvcHkgdGhlIGNvZGUgYmxvY2tcXG5FcnJvcjoke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtub2RlLnRleHRdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxjb2RlIGNsYXNzTmFtZT1cImNsaVwiPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcmVmaXhcIj57bm9kZS5zeW1ib2x9PC9zcGFuPntcIiAgXCJ9XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImNvbW1hbmRcIj57bm9kZS50ZXh0fTwvc3Bhbj5cbiAgICAgIDwvY29kZT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRvb2wtYnV0dG9uc1wiPlxuICAgICAgICA8c3BhbiB0aXRsZT1cIkNvcHlcIiBjbGFzc05hbWU9XCJjb3B5XCIgb25DbGljaz17aGFuZGxlQ2xpY2t9PlxuICAgICAgICAgIHtidXR0b25MYWJlbH1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvPlxuICApO1xufTtcbnR5cGUgR29vZ2xlTWFwUHJvcHMgPSB7IG5vZGU6IEdvb2dsZU1hcE5vZGUgfTtcbmNvbnN0IEdvb2dsZU1hcCA9IChcbiAgeyBub2RlOiB7IHBsYWNlLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCB6b29tIH0gfTogR29vZ2xlTWFwUHJvcHMsXG4pID0+IChcbiAgPHNwYW4gY2xhc3NOYW1lPVwicG9pbnRpbmctZGV2aWNlLW1hcFwiPlxuICAgIDxhXG4gICAgICBocmVmPXtgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL3NlYXJjaC8ke3BsYWNlfS9AJHtsYXRpdHVkZX0sJHtsb25naXR1ZGV9LCR7em9vbX16YH1cbiAgICAgIHJlbD1cIm5vb3BuZXIgbm9yZWZlcnJlclwiXG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgID5cbiAgICAgIDxpbWdcbiAgICAgICAgY2xhc3NOYW1lPVwiZ29vZ2xlLW1hcFwiXG4gICAgICAgIHNyYz17YC9hcGkvZ29vZ2xlLW1hcC9zdGF0aWMtbWFwP2NlbnRlcj0ke2xhdGl0dWRlfSUyQyR7bG9uZ2l0dWRlfSZtYXJrZXJzPSR7cGxhY2V9Jnpvb209JHt6b29tfSZfY3NyZj0ke2dsb2JhbFRoaXMuX2NzcmZ9YH1cbiAgICAgIC8+XG4gICAgPC9hPlxuICA8L3NwYW4+XG4pO1xudHlwZSBJY29uUHJvcHMgPSB7XG4gIG5vZGU6IEljb25Ob2RlO1xuICBzdHJvbmc/OiBmYWxzZTtcbn0gfCB7XG4gIG5vZGU6IFN0cm9uZ0ljb25Ob2RlO1xuICBzdHJvbmc6IHRydWU7XG59O1xuY29uc3QgSWNvbiA9IChcbiAgeyBub2RlOiB7IHBhdGhUeXBlLCBwYXRoIH0sIHN0cm9uZyB9OiBJY29uUHJvcHMsXG4pID0+IHtcbiAgY29uc3QgeyBwcm9qZWN0OiBfcHJvamVjdCB9ID0gdXNlQ29udGV4dChjb250ZXh0KTtcbiAgY29uc3QgW3Byb2plY3QsIHRpdGxlXSA9IHBhdGhUeXBlID09PSBcInJlbGF0aXZlXCJcbiAgICA/IFtcbiAgICAgIF9wcm9qZWN0LFxuICAgICAgcGF0aCxcbiAgICBdXG4gICAgOiBwYXRoLm1hdGNoKC9cXC8oW1xcd1xcLV0rKVxcLyguKykkLyk/LnNsaWNlPy4oMSkgPz8gW19wcm9qZWN0LCBwYXRoXTtcbiAgY29uc3QgdGl0bGVMYyA9IGVuY29kZVRpdGxlVVJJKHRpdGxlKTtcblxuICByZXR1cm4gKFxuICAgIDxhXG4gICAgICBocmVmPXtgLyR7cHJvamVjdH0vJHt0aXRsZUxjfWB9XG4gICAgICByZWw9e3Byb2plY3QgPT09IHNjcmFwYm94LlByb2plY3QubmFtZSA/IFwicm91dGVcIiA6IFwibm9vcGVuZXIgbm9yZWZlcnJlclwifVxuICAgICAgdGFyZ2V0PXtwcm9qZWN0ID09PSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUgPyBcIlwiIDogXCJfYmxhbmtcIn1cbiAgICA+XG4gICAgICA8aW1nXG4gICAgICAgIGNsYXNzTmFtZT17c3Ryb25nID8gXCJpY29uIHN0cm9uZy1pY29uXCIgOiBcImljb25cIn1cbiAgICAgICAgYWx0PXt0aXRsZX1cbiAgICAgICAgc3JjPXtgL2FwaS9wYWdlcy8ke3Byb2plY3R9LyR7dGl0bGVMY30vaWNvbmB9XG4gICAgICA+XG4gICAgICAgIHt0aXRsZX1cbiAgICAgIDwvaW1nPlxuICAgIDwvYT5cbiAgKTtcbn07XG50eXBlIEltYWdlUHJvcHMgPSB7IG5vZGU6IEltYWdlTm9kZSB9O1xuY29uc3QgSW1hZ2UgPSAoeyBub2RlOiB7IGxpbmssIHNyYyB9IH06IEltYWdlUHJvcHMpID0+IHtcbiAgY29uc3QgaHJlZiA9IGxpbmsgfHxcbiAgICAvLyBsaW5r44GM56m65paH5a2X44Gu44Go44GNXG4gICAgKC9odHRwczpcXC9cXC9neWF6b1xcLmNvbVxcL1teXFwvXStcXC90aHVtYlxcLzEwMDAvLnRlc3Qoc3JjKVxuICAgICAgPyBzcmMuc2xpY2UoMCwgLVwiL3RodW1iLzEwMDBcIi5sZW5ndGgpXG4gICAgICA6IHNyYyk7XG5cbiAgcmV0dXJuIChcbiAgICA8YVxuICAgICAgY2xhc3NOYW1lPXtsaW5rID8gXCJsaW5rXCIgOiBcIlwifVxuICAgICAgaHJlZj17aHJlZn1cbiAgICAgIHJlbD1cIm5vb3BuZXIgbm9yZWZlcnJlclwiXG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgID5cbiAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1hZ2VcIiBzcmM9e3NyY30gLz5cbiAgICA8L2E+XG4gICk7XG59O1xuXG50eXBlIEhhc2hUYWdQcm9wcyA9IHsgbm9kZTogSGFzaFRhZ05vZGUgfTtcbmNvbnN0IEhhc2hUYWcgPSAoeyBub2RlOiB7IGhyZWYgfSB9OiBIYXNoVGFnUHJvcHMpID0+IHtcbiAgY29uc3QgeyBwcm9qZWN0IH0gPSB1c2VDb250ZXh0KGNvbnRleHQpO1xuICBjb25zdCBlbXB0eUxpbmsgPSB1c2VFbXB0eUxpbmsocHJvamVjdCwgaHJlZik7XG4gIGNvbnN0IGhhbmRsZUhvdmVyID0gdXNlSG92ZXIocHJvamVjdCwgaHJlZiwgXCJoYXNodGFnXCIpO1xuXG4gIHJldHVybiAoXG4gICAgPGFcbiAgICAgIGhyZWY9e2AvJHtwcm9qZWN0fS8ke2VuY29kZVRpdGxlVVJJKGhyZWYpfWB9XG4gICAgICBjbGFzc05hbWU9e2BwYWdlLWxpbmske2VtcHR5TGluayA/IFwiIGVtcHR5LXBhZ2UtbGlua1wiIDogXCJcIn1gfVxuICAgICAgdHlwZT1cImhhc2hUYWdcIlxuICAgICAgcmVsPXtwcm9qZWN0ID09PSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUgPyBcInJvdXRlXCIgOiBcIm5vb3BlbmVyIG5vcmVmZXJyZXJcIn1cbiAgICAgIHRhcmdldD17cHJvamVjdCA9PT0gc2NyYXBib3guUHJvamVjdC5uYW1lID8gXCJcIiA6IFwiX2JsYW5rXCJ9XG4gICAgICBvblBvaW50ZXJFbnRlcj17aGFuZGxlSG92ZXJ9XG4gICAgPlxuICAgICAgI3tocmVmfVxuICAgIDwvYT5cbiAgKTtcbn07XG50eXBlIExpbmtQcm9wcyA9IHsgbm9kZTogTGlua05vZGUgfTtcbmNvbnN0IExpbmsgPSAoXG4gIHsgbm9kZTogeyBwYXRoVHlwZSwgLi4ubm9kZSB9IH06IExpbmtQcm9wcyxcbikgPT4ge1xuICBzd2l0Y2ggKHBhdGhUeXBlKSB7XG4gICAgY2FzZSBcInJlbGF0aXZlXCI6XG4gICAgY2FzZSBcInJvb3RcIjpcbiAgICAgIHJldHVybiA8U2NyYXBib3hMaW5rIHBhdGhUeXBlPXtwYXRoVHlwZX0gaHJlZj17bm9kZS5ocmVmfSAvPjtcbiAgICBjYXNlIFwiYWJzb2x1dGVcIjoge1xuICAgICAgY29uc3QgbGlua05vZGUgPSBwYXJzZUFic29sdXRlTGluayh7IHBhdGhUeXBlLCAuLi5ub2RlIH0pO1xuICAgICAgc3dpdGNoIChsaW5rTm9kZS50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJ5b3V0dWJlXCI6XG4gICAgICAgICAgcmV0dXJuIDxZb3V0dWJlIHsuLi5saW5rTm9kZX0gLz47XG4gICAgICAgIGNhc2UgXCJ2aW1lb1wiOlxuICAgICAgICAgIHJldHVybiA8VmltZW8gey4uLmxpbmtOb2RlfSAvPjtcbiAgICAgICAgY2FzZSBcInNwb3RpZnlcIjpcbiAgICAgICAgICByZXR1cm4gPFNwb3RpZnkgey4uLmxpbmtOb2RlfSAvPjtcbiAgICAgICAgY2FzZSBcImFuY2hvci1mbVwiOlxuICAgICAgICAgIHJldHVybiA8QW5jaG9yRk0gey4uLmxpbmtOb2RlfSAvPjtcbiAgICAgICAgY2FzZSBcImF1ZGlvXCI6XG4gICAgICAgICAgcmV0dXJuIDxBdWRpbyB7Li4ubGlua05vZGV9IC8+O1xuICAgICAgICBjYXNlIFwidmlkZW9cIjpcbiAgICAgICAgICByZXR1cm4gPFZpZGVvIHsuLi5saW5rTm9kZX0gLz47XG4gICAgICAgIGNhc2UgXCJhYnNvbHV0ZUxpbmtcIjpcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGlua1wiXG4gICAgICAgICAgICAgIGhyZWY9e2xpbmtOb2RlLmhyZWZ9XG4gICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gY29udGVudOOBjOepuuOBruOBqOOBjeOBr3VuZGVmaW5lZOOBp+OBr+OBquOBjycn44Gr44Gq44KL44Gu44Gn44CBXG4gICAgICAgICAgICAgICAgLy8gPz/jgafjga/jgarjgY98fOOBp2ZhbGxiYWNr5Yem55CG44KS44GZ44KL5b+F6KaB44GM44GC44KLXG4gICAgICAgICAgICAgICAgbGlua05vZGUuY29udGVudCB8fCBsaW5rTm9kZS5ocmVmXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxudHlwZSBTY3JhcGJveExpbmtQcm9wcyA9IHtcbiAgcGF0aFR5cGU6IFwicmVsYXRpdmVcIiB8IFwicm9vdFwiO1xuICBocmVmOiBzdHJpbmc7XG59O1xuY29uc3QgU2NyYXBib3hMaW5rID0gKFxuICB7IHBhdGhUeXBlLCBocmVmIH06IFNjcmFwYm94TGlua1Byb3BzLFxuKSA9PiB7XG4gIGNvbnN0IHsgcHJvamVjdDogcHJvamVjdF8gfSA9IHVzZUNvbnRleHQoY29udGV4dCk7XG4gIGNvbnN0IHsgcHJvamVjdCA9IHByb2plY3RfLCB0aXRsZSwgaGFzaCA9IFwiXCIgfSA9IHBhcnNlTGluayhcbiAgICB7XG4gICAgICBwYXRoVHlwZSxcbiAgICAgIGhyZWYsXG4gICAgfSxcbiAgKTtcbiAgY29uc3QgaGFuZGxlSG92ZXIgPSB1c2VIb3Zlcihwcm9qZWN0LCB0aXRsZSwgXCJsaW5rXCIsIGhhc2gpO1xuICBjb25zdCBlbXB0eUxpbmsgPSB1c2VFbXB0eUxpbmsocHJvamVjdCwgdGl0bGUgPz8gXCJcIik7XG5cbiAgcmV0dXJuIChcbiAgICA8YVxuICAgICAgY2xhc3NOYW1lPXtgcGFnZS1saW5rJHtcbiAgICAgICAgdGl0bGUgIT09IHVuZGVmaW5lZCAmJiBlbXB0eUxpbmsgPyBcIiBlbXB0eS1wYWdlLWxpbmtcIiA6IFwiXCJcbiAgICAgIH1gfVxuICAgICAgdHlwZT1cImxpbmtcIlxuICAgICAgaHJlZj17YC8ke3Byb2plY3R9JHtcbiAgICAgICAgdGl0bGUgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gXCJcIlxuICAgICAgICAgIDogYC8ke2VuY29kZVRpdGxlVVJJKHRpdGxlKX0ke2hhc2ggPT09IFwiXCIgPyBcIlwiIDogYCMke2hhc2h9YH1gXG4gICAgICB9YH1cbiAgICAgIHJlbD17cHJvamVjdCA9PT0gc2NyYXBib3guUHJvamVjdC5uYW1lID8gXCJyb3V0ZVwiIDogXCJub29wZW5lciBub3JlZmVycmVyXCJ9XG4gICAgICB0YXJnZXQ9e3Byb2plY3QgPT09IHNjcmFwYm94LlByb2plY3QubmFtZSA/IFwiXCIgOiBcIl9ibGFua1wifVxuICAgICAgb25Qb2ludGVyRW50ZXI9e2hhbmRsZUhvdmVyfVxuICAgID5cbiAgICAgIHtocmVmfVxuICAgIDwvYT5cbiAgKTtcbn07XG5cbmNvbnN0IFlvdXR1YmUgPSAocHJvcHM6IFlvdXR1YmVOb2RlIHwgWW91dHViZUxpc3ROb2RlKSA9PiB7XG4gIHByb3BzLnBhcmFtcy5hcHBlbmQoXCJhdXRvcGxheVwiLCBcIjBcIik7XG4gIGNvbnN0IHNyYyA9IHByb3BzLnBhdGhUeXBlID09PSBcImxpc3RcIlxuICAgID8gYGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLz8ke3Byb3BzLnBhcmFtcy50b1N0cmluZygpfSZsaXN0PSR7cHJvcHMubGlzdElkfWBcbiAgICA6IGBodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8ke3Byb3BzLnZpZGVvSWR9PyR7cHJvcHMucGFyYW1zLnRvU3RyaW5nKCl9YDtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaWZyYW1lLXZpZGVvLXBsYXllclwiPlxuICAgICAgPGlmcmFtZVxuICAgICAgICBzcmM9e3NyY31cbiAgICAgICAgYWxsb3dGdWxsU2NyZWVuXG4gICAgICAgIHR5cGU9XCJ0ZXh0L2h0bWxcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IFZpbWVvID0gKHsgdmlkZW9JZCB9OiBWaW1lb05vZGUpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJpZnJhbWUtdmlkZW8tcGxheWVyXCI+XG4gICAgPGlmcmFtZVxuICAgICAgc3JjPXtgaHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL3ZpZGVvLyR7dmlkZW9JZH1gfVxuICAgICAgYWxsb3dGdWxsU2NyZWVuXG4gICAgICB0eXBlPVwidGV4dC9odG1sXCJcbiAgICAvPlxuICA8L2Rpdj5cbik7XG5cbmNvbnN0IFNwb3RpZnkgPSAocHJvcHM6IFNwb3RpZnlOb2RlKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaWZyYW1lLXZpZGVvLXBsYXllclwiPlxuICAgIDxpZnJhbWVcbiAgICAgIGNsYXNzTmFtZT17YHNwb3RpZnkgdHlwZS0ke3Byb3BzLnBhdGhUeXBlfWB9XG4gICAgICBzcmM9e2BodHRwczovL29wZW4uc3BvdGlmeS5jb20vZW1iZWQvJHtwcm9wcy5wYXRoVHlwZX0vJHtwcm9wcy52aWRlb0lkfWB9XG4gICAgICBhbGxvd0Z1bGxTY3JlZW5cbiAgICAgIHR5cGU9XCJ0ZXh0L2h0bWxcIlxuICAgICAgc2Nyb2xsaW5nPVwibm9cIlxuICAgIC8+XG4gIDwvZGl2PlxuKTtcblxuY29uc3QgQW5jaG9yRk0gPSAocHJvcHM6IEFuY2hvckZNTm9kZSkgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImlmcmFtZS12aWRlby1wbGF5ZXJcIj5cbiAgICA8aWZyYW1lXG4gICAgICBjbGFzc05hbWU9XCJhbmNob3ItZm1cIlxuICAgICAgc3JjPXtwcm9wcy5ocmVmLnJlcGxhY2UoXCIvZXBpc29kZXMvXCIsIFwiL2VtYmVkL2VwaXNvZGVzL1wiKX1cbiAgICAgIGFsbG93RnVsbFNjcmVlblxuICAgICAgdHlwZT1cInRleHQvaHRtbFwiXG4gICAgICBzY3JvbGxpbmc9XCJub1wiXG4gICAgLz5cbiAgPC9kaXY+XG4pO1xuXG5jb25zdCBBdWRpbyA9IChwcm9wczogQXVkaW9Ob2RlKSA9PlxuICBwcm9wcy5jb250ZW50ID09PSBcIlwiXG4gICAgPyAoXG4gICAgICA8YXVkaW9cbiAgICAgICAgY2xhc3NOYW1lPVwiYXVkaW8tcGxheWVyXCJcbiAgICAgICAgcHJlbG9hZD1cIm5vbmVcIlxuICAgICAgICBjb250cm9sc1xuICAgICAgICBzcmM9e3Byb3BzLmhyZWZ9XG4gICAgICAvPlxuICAgIClcbiAgICA6IDxBdWRpb0xpbmsgey4uLnByb3BzfSAvPjtcbmNvbnN0IEF1ZGlvTGluayA9ICh7IGhyZWYsIGNvbnRlbnQgfTogQXVkaW9Ob2RlKSA9PiB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MQXVkaW9FbGVtZW50PihudWxsKTtcbiAgY29uc3QgdG9nZ2xlUGxheSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAocmVmLmN1cnJlbnQ/LnBhdXNlZCkge1xuICAgICAgcmVmLmN1cnJlbnQuY3VycmVudFRpbWUgPSAwO1xuICAgICAgcmVmLmN1cnJlbnQucGxheSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZWYuY3VycmVudD8ucGF1c2U/LigpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPVwiYXVkaW8tbGlua1wiPlxuICAgICAgPGEgaHJlZj17aHJlZn0gcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICB7Y29udGVudH1cbiAgICAgIDwvYT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBsYXlcIiBvbkNsaWNrPXt0b2dnbGVQbGF5fT7imaw8L3NwYW4+XG4gICAgICA8YXVkaW8gcHJlbG9hZD1cIm5vbmVcIiBzcmM9e2hyZWZ9IHJlZj17cmVmfSAvPlxuICAgIDwvc3Bhbj5cbiAgKTtcbn07XG5cbmNvbnN0IFZpZGVvID0gKHsgaHJlZiB9OiBWaWRlb05vZGUpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJ2aWRlby1wbGF5ZXJcIj5cbiAgICA8dmlkZW9cbiAgICAgIGNsYXNzPVwidmlkZW9cIlxuICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJpbmxpbmUtYmxvY2tcIiB9fVxuICAgICAgY29udHJvbHNcbiAgICAgIGxvb3BcbiAgICAgIHNyYz17aHJlZn1cbiAgICAvPlxuICA8L2Rpdj5cbik7XG5cbmNvbnN0IHVzZUVtcHR5TGluayA9IChwcm9qZWN0OiBzdHJpbmcsIGxpbms6IHN0cmluZykgPT4ge1xuICBjb25zdCB7IHdoaXRlTGlzdCB9ID0gdXNlQ29udGV4dChcbiAgICBjb250ZXh0LFxuICApO1xuICBjb25zdCBwYWdlSWRzID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgKHdoaXRlTGlzdC5oYXMocHJvamVjdCkgPyBbLi4ud2hpdGVMaXN0XSA6IFtwcm9qZWN0LCAuLi53aGl0ZUxpc3RdKS5tYXAoXG4gICAgICAgIChwcm9qZWN0KSA9PiB0b0lkKHByb2plY3QsIGxpbmspLFxuICAgICAgKSxcbiAgICBbd2hpdGVMaXN0LCBwcm9qZWN0XSxcbiAgKTtcbiAgY29uc3QgYnViYmxlcyA9IHVzZUJ1YmJsZURhdGEocGFnZUlkcyk7XG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4gaXNFbXB0eUxpbmsoYnViYmxlcyksIGJ1YmJsZXMpO1xufTtcblxuLyoqIDxhPuOBq2hvdmVy5qmf6IO944KS5LuY5LiO44GZ44KLICovXG5jb25zdCB1c2VIb3ZlciA9IChcbiAgcHJvamVjdDogc3RyaW5nLFxuICB0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICB0eXBlOiBcImxpbmtcIiB8IFwiaGFzaHRhZ1wiLFxuICBoYXNoPzogc3RyaW5nLFxuKSA9PiB7XG4gIGNvbnN0IHsgZGVsYXksIGJ1YmJsZSwgcHJlZmV0Y2ggfSA9IHVzZUNvbnRleHQoY29udGV4dCk7XG5cbiAgcmV0dXJuIHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIHsgY3VycmVudFRhcmdldDogYSB9OiBoLkpTWC5UYXJnZXRlZE1vdXNlRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LFxuICAgICkgPT4ge1xuICAgICAgaWYgKCF0aXRsZSkgcmV0dXJuO1xuXG4gICAgICBwcmVmZXRjaChwcm9qZWN0LCB0aXRsZSk7XG5cbiAgICAgIGlmICghYXdhaXQgc3RheUhvdmVyaW5nKGEsIGRlbGF5KSkgcmV0dXJuO1xuXG4gICAgICBidWJibGUoe1xuICAgICAgICBwcm9qZWN0LFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgaGFzaCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgcG9zaXRpb246IGNhbGNCdWJibGVQb3NpdGlvbihhKSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgW3Byb2plY3QsIHRpdGxlLCBoYXNoLCB0eXBlLCBkZWxheSwgcHJlZmV0Y2gsIGJ1YmJsZV0sXG4gICk7XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiLz5cblxuLyoqIEBqc3ggaCAqL1xuaW1wb3J0IHtcbiAgRnVuY3Rpb25Db21wb25lbnQsXG4gIGgsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBJRCwgdG9JZCB9IGZyb20gXCIuL2lkLnRzXCI7XG5pbXBvcnQgeyBQYWdlLCBQYWdlUHJvcHMgfSBmcm9tIFwiLi9QYWdlLnRzeFwiO1xuaW1wb3J0IHsgQnViYmxlIH0gZnJvbSBcIi4vc3RvcmFnZS50c1wiO1xuaW1wb3J0IHsgQnViYmxlT3BlcmF0b3JzLCBTb3VyY2UgfSBmcm9tIFwiLi91c2VCdWJibGVzLnRzXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCIuL3VzZVRoZW1lLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dEJ1YmJsZSBleHRlbmRzIEJ1YmJsZU9wZXJhdG9ycyB7XG4gIHBhZ2VzOiBbQnViYmxlLCAuLi5CdWJibGVbXV07XG4gIHdoaXRlTGlzdDogU2V0PHN0cmluZz47XG4gIGRlbGF5OiBudW1iZXI7XG4gIG5vSW5kZW50PzogYm9vbGVhbjtcbiAgc291cmNlOiBTb3VyY2U7XG4gIHByZWZldGNoOiAocHJvamVjdDogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSA9PiB2b2lkO1xuICBvbkNsaWNrPzogaC5KU1guTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xufVxuZXhwb3J0IGNvbnN0IFRleHRCdWJibGU6IEZ1bmN0aW9uQ29tcG9uZW50PFRleHRCdWJibGU+ID0gKFxuICB7IHBhZ2VzLCBvbkNsaWNrLCBzb3VyY2UsIHdoaXRlTGlzdCwgLi4ucmVzdCB9LFxuKSA9PiB7XG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZShcbiAgICB0b0lkKHBhZ2VzWzBdLnByb2plY3QsIHBhZ2VzWzBdLnRpdGxlTGMpLFxuICApO1xuXG4gIGNvbnN0IHBhZ2VTdHlsZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICB0b3A6IGAke3NvdXJjZS5wb3NpdGlvbi50b3B9cHhgLFxuICAgIG1heFdpZHRoOiBgJHtzb3VyY2UucG9zaXRpb24ubWF4V2lkdGh9cHhgLFxuICAgIC4uLihcImxlZnRcIiBpbiBzb3VyY2UucG9zaXRpb25cbiAgICAgID8ge1xuICAgICAgICBsZWZ0OiBgJHtzb3VyY2UucG9zaXRpb24ubGVmdH1weGAsXG4gICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgcmlnaHQ6IGAke3NvdXJjZS5wb3NpdGlvbi5yaWdodH1weGAsXG4gICAgICB9KSxcbiAgfSksIFtzb3VyY2UucG9zaXRpb25dKTtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJ0ZXh0LWJ1YmJsZVwiXG4gICAgICBzdHlsZT17cGFnZVN0eWxlfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICA+XG4gICAgICB7cGFnZXMubGVuZ3RoID4gMSAmJlxuICAgICAgICAoXG4gICAgICAgICAgPGRpdiByb2xlPVwidGFibGlzdFwiPlxuICAgICAgICAgICAge3BhZ2VzLm1hcCgocGFnZSkgPT4gKFxuICAgICAgICAgICAgICA8VGFiXG4gICAgICAgICAgICAgICAga2V5PXt0b0lkKHBhZ2UucHJvamVjdCwgcGFnZS50aXRsZUxjKX1cbiAgICAgICAgICAgICAgICBwcm9qZWN0PXtwYWdlLnByb2plY3R9XG4gICAgICAgICAgICAgICAgdGl0bGVMYz17cGFnZS50aXRsZUxjfVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkPXthY3RpdmVUYWIgPT09XG4gICAgICAgICAgICAgICAgICB0b0lkKHBhZ2UucHJvamVjdCwgcGFnZS50aXRsZUxjKX1cbiAgICAgICAgICAgICAgICB0YWJTZWxlY3Rvcj17c2V0QWN0aXZlVGFifVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICB7cGFnZXMubWFwKChwYWdlKSA9PiAoXG4gICAgICAgIDxUYWJQYW5lbFxuICAgICAgICAgIGtleT17dG9JZChwYWdlLnByb2plY3QsIHBhZ2UudGl0bGVMYyl9XG4gICAgICAgICAgc2VsZWN0ZWQ9e2FjdGl2ZVRhYiA9PT1cbiAgICAgICAgICAgIHRvSWQocGFnZS5wcm9qZWN0LCBwYWdlLnRpdGxlTGMpfVxuICAgICAgICAgIHsuLi5wYWdlfVxuICAgICAgICAgIHRpdGxlPXtwYWdlLmxpbmVzWzBdLnRleHR9XG4gICAgICAgICAgaGFzaD17c291cmNlLmhhc2h9XG4gICAgICAgICAgbGlua1RvPXtzb3VyY2UubGlua1RvfVxuICAgICAgICAgIHdoaXRlTGlzdD17d2hpdGVMaXN0fVxuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBUYWI6IEZ1bmN0aW9uQ29tcG9uZW50PFxuICB7XG4gICAgcHJvamVjdDogc3RyaW5nO1xuICAgIHRpdGxlTGM6IHN0cmluZztcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICB0YWJTZWxlY3RvcjogKGlkOiBJRCkgPT4gdm9pZDtcbiAgfVxuPiA9ICh7IHByb2plY3QsIHRpdGxlTGMsIHRhYlNlbGVjdG9yLCBzZWxlY3RlZCB9KSA9PiB7XG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlQ2FsbGJhY2soKCkgPT4gdGFiU2VsZWN0b3IodG9JZChwcm9qZWN0LCB0aXRsZUxjKSksIFtcbiAgICBwcm9qZWN0LFxuICAgIHRpdGxlTGMsXG4gIF0pO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKHByb2plY3QpO1xuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWR9XG4gICAgICBkYXRhLXRoZW1lPXt0aGVtZX1cbiAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgID5cbiAgICAgIHtwcm9qZWN0fVxuICAgIDwvYnV0dG9uPlxuICApO1xufTtcblxuY29uc3QgVGFiUGFuZWw6IEZ1bmN0aW9uQ29tcG9uZW50PHsgc2VsZWN0ZWQ6IGJvb2xlYW4gfSAmIFBhZ2VQcm9wcz4gPSAoXG4gIHsgc2VsZWN0ZWQsIC4uLnJlc3QgfSxcbikgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKHJlc3QucHJvamVjdCk7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgIGRhdGEtdGhlbWU9e3RoZW1lfVxuICAgICAgaGlkZGVuPXshc2VsZWN0ZWR9XG4gICAgPlxuICAgICAgPFBhZ2Ugey4uLnJlc3R9IC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIiwgIi8qKiBAanN4IGggKi9cbi8qKiBAanN4RnJhZyBGcmFnbWVudCAqL1xuLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIvPlxuaW1wb3J0IHsgQ2FyZExpc3QgfSBmcm9tIFwiLi9DYXJkTGlzdC50c3hcIjtcbmltcG9ydCB7XG4gIEZyYWdtZW50LFxuICBoLFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IHRvVGl0bGVMYyB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5pbXBvcnQgeyB1c2VCdWJibGVEYXRhIH0gZnJvbSBcIi4vdXNlQnViYmxlRGF0YS50c1wiO1xuaW1wb3J0IHsgTGlua1RvIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IGZyb21JZCwgSUQsIHRvSWQgfSBmcm9tIFwiLi9pZC50c1wiO1xuaW1wb3J0IHsgQnViYmxlIGFzIEJ1YmJsZURhdGEgfSBmcm9tIFwiLi9zdG9yYWdlLnRzXCI7XG5pbXBvcnQgeyBwcm9kdWNlIH0gZnJvbSBcIi4vZGVwcy9pbW1lci50c1wiO1xuaW1wb3J0IHR5cGUgeyBCdWJibGVTb3VyY2UgfSBmcm9tIFwiLi91c2VCdWJibGVzLnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVEZWJ1ZyB9IGZyb20gXCIuL2RlYnVnLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFNjcmFwYm94IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuaW1wb3J0IHsgVGV4dEJ1YmJsZSB9IGZyb20gXCIuL1RleHRCdWJibGUudHN4XCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlRGVidWcoXCJTY3JhcEJ1YmJsZTpCdWJibGUudHN4XCIpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1YmJsZVByb3BzIGV4dGVuZHMgQnViYmxlU291cmNlIHtcbiAgd2hpdGVMaXN0OiBTZXQ8c3RyaW5nPjtcbiAgZGVsYXk6IG51bWJlcjtcbiAgcHJlZmV0Y2g6IChwcm9qZWN0OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBCdWJibGUgPSAoe1xuICBzb3VyY2UsXG4gIHBhcmVudFRpdGxlcyxcbiAgd2hpdGVMaXN0LFxuICAuLi5wcm9wc1xufTogQnViYmxlUHJvcHMpID0+IHtcbiAgLyoqIOaknOe0ouWvvuixoeOBrnByb2plY3QgbGlzdCAqL1xuICBjb25zdCBwcm9qZWN0cyA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIHdoaXRlTGlzdC5oYXMoc291cmNlLnByb2plY3QpXG4gICAgICAgIC8vIHNvdXJjZS5wcm9qZWN044KS5LiA55Wq5YWI6aCt44Gr44GZ44KLXG4gICAgICAgID8gbmV3IFNldChbc291cmNlLnByb2plY3QsIC4uLndoaXRlTGlzdF0pXG4gICAgICAgIDogbmV3IFNldChbc291cmNlLnByb2plY3RdKSxcbiAgICBbd2hpdGVMaXN0LCBzb3VyY2UucHJvamVjdF0sXG4gICk7XG5cbiAgY29uc3QgW2xpbmtlZCwgZXh0ZXJuYWxMaW5rZWQsIHBhZ2VzXSA9IHVzZUJ1YmJsZUZpbHRlcihcbiAgICBzb3VyY2UsXG4gICAgcHJvamVjdHMsXG4gICAgd2hpdGVMaXN0LFxuICAgIHBhcmVudFRpdGxlcyxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aGFzT25lQnViYmxlKHBhZ2VzKSAmJiAoXG4gICAgICAgIDxUZXh0QnViYmxlXG4gICAgICAgICAgcGFnZXM9e3BhZ2VzfVxuICAgICAgICAgIHNvdXJjZT17c291cmNlfVxuICAgICAgICAgIHdoaXRlTGlzdD17d2hpdGVMaXN0fVxuICAgICAgICAgIG9uQ2xpY2s9e3Byb3BzLmhpZGV9XG4gICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxDYXJkTGlzdFxuICAgICAgICBsaW5rZWQ9e2xpbmtlZH1cbiAgICAgICAgZXh0ZXJuYWxMaW5rZWQ9e2V4dGVybmFsTGlua2VkfVxuICAgICAgICBvbkNsaWNrPXtwcm9wcy5oaWRlfVxuICAgICAgICBzb3VyY2U9e3NvdXJjZX1cbiAgICAgICAgcHJvamVjdHNGb3JTb3J0PXtwcm9qZWN0c31cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmNvbnN0IGhhc09uZUJ1YmJsZSA9IChcbiAgcGFnZXM6IEJ1YmJsZURhdGFbXSxcbik6IHBhZ2VzIGlzIFtCdWJibGVEYXRhLCAuLi5CdWJibGVEYXRhW11dID0+IHBhZ2VzLmxlbmd0aCA+IDA7XG5cbi8qKiDmjIflrprjgZfjgZ9zb3VyY2XjgYvjgolidWJibGVz44GZ44KL44Oa44O844K45pys5paH44Go44Oa44O844K444Kr44O844OJ44KS44CB6KaqYnViYmxlc+OChHdoaXRlTGlzdOOCkuS9v+OBo+OBpue1nuOCiui+vOOCgFxuICpcbiAqIDxCdWJibGUgLz7jgafjgoTjgaPjgabjgYTjgovlh6bnkIbjga7kuIDpg6jjgpLliIfjgorlh7rjgZfjgabopovpgJrjgZfjgpLjgojjgY/jgZfjgZ/jgaDjgZFcbiAqL1xuY29uc3QgdXNlQnViYmxlRmlsdGVyID0gKFxuICBzb3VyY2U6IHsgcHJvamVjdDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0sXG4gIHByb2plY3RzOiBTZXQ8c3RyaW5nPixcbiAgd2hpdGVMaXN0OiBTZXQ8c3RyaW5nPixcbiAgcGFyZW50VGl0bGVzOiBzdHJpbmdbXSxcbikgPT4ge1xuICB0eXBlIExpbmtNYXAgPSBNYXA8SUQsIExpbmtUbz47XG5cbiAgY29uc3QgW1tsaW5rZWQsIGV4dGVybmFsTGlua2VkLCBwYWdlc10sIHNldEJ1YmJsZURhdGFdID0gdXNlU3RhdGU8XG4gICAgW0xpbmtNYXAsIExpbmtNYXAsIEJ1YmJsZURhdGFbXV1cbiAgPihbbmV3IE1hcCgpLCBuZXcgTWFwKCksIFtdXSk7XG5cbiAgY29uc3QgcGFnZUlkcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgcGFnZUlkcyA9IFsuLi5wcm9qZWN0c10ubWFwKChwcm9qZWN0KSA9PlxuICAgICAgICB0b0lkKHByb2plY3QsIHNvdXJjZS50aXRsZSlcbiAgICAgICk7XG5cbiAgICAgIGxvZ2dlci5kZWJ1ZyhcInByb2plY3RzXCIsIHBhZ2VJZHMpO1xuICAgICAgcmV0dXJuIHBhZ2VJZHM7XG4gICAgfSxcbiAgICBbcHJvamVjdHMsIHNvdXJjZS50aXRsZV0sXG4gICk7XG5cbiAgY29uc3QgYnViYmxlcyA9IHVzZUJ1YmJsZURhdGEocGFnZUlkcyk7XG4gIGNvbnN0IHBhcmVudHNMYyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gcGFyZW50VGl0bGVzLm1hcCgodGl0bGUpID0+IHRvVGl0bGVMYyh0aXRsZSkpLFxuICAgIFtwYXJlbnRUaXRsZXNdLFxuICApO1xuXG4gIHVzZUxheW91dEVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICAvKiogYHNvdXJjZS50aXRsZWDjgpLlhoXpg6jjg6rjg7Pjgq/oqJjms5Xjgaflj4LnhafjgZfjgabjgYTjgovjg6rjg7Pjgq/jga7jg6rjgrnjg4ggKi9cbiAgICAgIGNvbnN0IGxpbmtlZCA9IG5ldyBNYXA8SUQsIExpbmtUbz4oKTtcbiAgICAgIC8qKiBgc291cmNlLnRpdGxlYOOCkuWklumDqOODquODs+OCr+iomOazleOBp+WPgueFp+OBl+OBpuOBhOOCi+ODquODs+OCr+OBruODquOCueODiCAqL1xuICAgICAgY29uc3QgZXh0ZXJuYWxMaW5rZWQgPSBuZXcgTWFwPElELCBMaW5rVG8+KCk7XG4gICAgICAvKiog44Oa44O844K45pys5paHXG4gICAgICAgKlxuICAgICAgICogYnViYmxl44KS44Gd44Gu44G+44G+5L+d44Gk44GT44Go44Gn44CB5Y+C54Wn44Gu6YGV44GE44Gu44G/44Gn5pu05paw44Gu5pyJ54Sh44KS5Yik5pat44Gn44GN44KLXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IHBhZ2VzOiBCdWJibGVEYXRhW10gPSBbXTtcblxuICAgICAgLy8g6YCG44Oq44Oz44Kv44GK44KI44GzcGFnZXPjgYvjgoksIHBhcmVudHPjgah3aGl0ZWxpc3TjgavjgarjgYTjgoLjga7jgpLpmaTjgYTjgabjgYrjgY9cbiAgICAgIGZvciAoY29uc3QgYnViYmxlIG9mIGJ1YmJsZXMpIHtcbiAgICAgICAgY29uc3QgZUxpbmtUbyA9IHsgcHJvamVjdDogYnViYmxlLnByb2plY3QsIHRpdGxlTGM6IGJ1YmJsZS50aXRsZUxjIH07XG4gICAgICAgIGZvciAoY29uc3QgaWQgb2YgYnViYmxlLnByb2plY3RMaW5rZWQgPz8gW10pIHtcbiAgICAgICAgICBjb25zdCB7IHByb2plY3QsIHRpdGxlTGMgfSA9IGZyb21JZChpZCk7XG4gICAgICAgICAgLy8gRXh0ZXJuYWwgTGlua3Pjga7lhoXjgIFwcm9qZWN044GMd2hpdGVMaXN044Gr5bGe44GZ44KLbGlua3PjgoLph43opIfpmaTljrvlh6bnkIbjgpLmlr3jgZlcbiAgICAgICAgICBpZiAocGFyZW50c0xjLmluY2x1ZGVzKHRpdGxlTGMpICYmIHdoaXRlTGlzdC5oYXMocHJvamVjdCkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZXh0ZXJuYWxMaW5rZWQuaGFzKGlkKSkgY29udGludWU7XG4gICAgICAgICAgZXh0ZXJuYWxMaW5rZWQuc2V0KGlkLCBlTGlua1RvKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB3aGl0ZUxpdOOBq+OBquOBhHByb2plY3Tjga7jg5rjg7zjgrjjga/jgIFFeHRlcm5hbCBMaW5rc+S7peWkluihqOekuuOBl+OBquOBhFxuICAgICAgICBpZiAoIXdoaXRlTGlzdC5oYXMoYnViYmxlLnByb2plY3QpKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgbGlua1RvID0geyB0aXRsZUxjOiBidWJibGUudGl0bGVMYyB9O1xuICAgICAgICAvLyDopqrjgajph43opIfjgZfjgarjgYTpgIbjg6rjg7Pjgq/jga7jgb/moLzntI3jgZnjgotcbiAgICAgICAgZm9yIChjb25zdCBsaW5rTGMgb2YgYnViYmxlLmxpbmtlZCA/PyBbXSkge1xuICAgICAgICAgIGlmIChwYXJlbnRzTGMuaW5jbHVkZXMobGlua0xjKSkgY29udGludWU7XG4gICAgICAgICAgY29uc3QgaWQgPSB0b0lkKGJ1YmJsZS5wcm9qZWN0LCBsaW5rTGMpO1xuICAgICAgICAgIGlmIChsaW5rZWQuaGFzKGlkKSkgY29udGludWU7XG4gICAgICAgICAgbGlua2VkLnNldChpZCwgbGlua1RvKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDopqrjgajph43opIfjgZfjgarjgYTjg5rjg7zjgrjmnKzmlofjga7jgb/moLzntI3jgZnjgotcbiAgICAgICAgaWYgKHBhcmVudHNMYy5pbmNsdWRlcyhidWJibGUudGl0bGVMYykpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIWJ1YmJsZS5leGlzdHMpIGNvbnRpbnVlO1xuICAgICAgICBwYWdlcy5wdXNoKGJ1YmJsZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIOWGjeODrOODs+ODgOODquODs+OCsOOCkuaKkeWItuOBmeOCi+OBn+OCgeOBq+OAgeW/heimgeOBquOCguOBruOBoOOBkeabtOaWsOOBmeOCi1xuICAgICAgc2V0QnViYmxlRGF0YShwcm9kdWNlKChkcmFmdCkgPT4ge1xuICAgICAgICBsb2dnZXIuZGVidWcoXG4gICAgICAgICAgYGRlcHRoOiAke3BhcmVudHNMYy5sZW5ndGh9LCBidWJibGVkIGZyb20gJHtcbiAgICAgICAgICAgIHRvSWQoc291cmNlLnByb2plY3QsIHNvdXJjZS50aXRsZSlcbiAgICAgICAgICB9LCBidWJibGVzLGAsXG4gICAgICAgICAgYnViYmxlcyxcbiAgICAgICAgICBcImJlZm9yZVwiLFxuICAgICAgICAgIGRyYWZ0WzBdLFxuICAgICAgICAgIGBpbnRlcm5hbCBjYXJkcyxgLFxuICAgICAgICAgIGxpbmtlZCxcbiAgICAgICAgICBcImV4dGVybmFsIGNhcmRzXCIsXG4gICAgICAgICAgZXh0ZXJuYWxMaW5rZWQsXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGRyYWZ0WzBdLmtleXMoKSkge1xuICAgICAgICAgIGlmICghbGlua2VkLmhhcyhrZXkpKSBkcmFmdFswXS5kZWxldGUoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBsaW5rZWQpIHtcbiAgICAgICAgICBkcmFmdFswXS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBkcmFmdFsxXS5rZXlzKCkpIHtcbiAgICAgICAgICBpZiAoIWV4dGVybmFsTGlua2VkLmhhcyhrZXkpKSBkcmFmdFsxXS5kZWxldGUoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBleHRlcm5hbExpbmtlZCkge1xuICAgICAgICAgIGRyYWZ0WzFdLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBkcmFmdFsyXSA9IHBhZ2VzO1xuICAgICAgfSkpO1xuICAgIH0sXG4gICAgW2J1YmJsZXMsIHdoaXRlTGlzdCwgcGFyZW50c0xjXSxcbiAgKTtcblxuICByZXR1cm4gW2xpbmtlZCwgZXh0ZXJuYWxMaW5rZWQsIHBhZ2VzXSBhcyBjb25zdDtcbn07XG4iLCAiLyoqIFVSTOaWh+Wtl+WIl+OCklVSTOOBq+WkieaPm+OBmeOCiyovXG5leHBvcnQgY29uc3QgZGV0ZWN0VVJMID0gKFxuICB0ZXh0OiBVUkwgfCBzdHJpbmcsXG4gIGJhc2U/OiBVUkwgfCBzdHJpbmcsXG4pOiBVUkwgfCBzdHJpbmcgPT4ge1xuICBpZiAodGV4dCBpbnN0YW5jZW9mIFVSTCkgcmV0dXJuIHRleHQ7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBVUkwodGV4dCk7XG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICBpZiAoIShlIGluc3RhbmNlb2YgVHlwZUVycm9yKSkgdGhyb3cgZTtcbiAgICBpZiAoIWJhc2UpIHJldHVybiB0ZXh0O1xuICAgIC8vIOebuOWvvuODkeOCueOBuOOBruWkieaPm+OCkuippuOBv+OCi1xuICAgIC8vIC4v44KELi4v44KEL+OBp+Wni+OBvuOCieOBquOBhOaWh+Wtl+WIl+OBr+OAgeebuOWvvuODkeOCueaJseOBhOOBl+OBquOBhFxuICAgIGlmICghL15cXC5cXC98XlxcLlxcLlxcL3xeXFwvLy50ZXN0KHRleHQpKSByZXR1cm4gdGV4dDtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBVUkwodGV4dCwgYmFzZSk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikpIHRocm93IGU7XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG4gIH1cbn07XG4iLCAiLyoqIEBqc3ggaCAqL1xuLyoqIEBqc3hGcmFnIEZyYWdtZW50ICovXG5pbXBvcnQgeyBGcmFnbWVudCwgaCwgdXNlTWVtbyB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgZGV0ZWN0VVJMIH0gZnJvbSBcIi4vZGV0ZWN0VVJMLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckNTU1Byb3BzIHtcbiAgLyoqIENTU+OCguOBl+OBj+OBr0NTU+OBuOOBrlVSTCAqL1xuICBzdHlsZTogc3RyaW5nIHwgVVJMO1xufVxuXG4vKiogVXNlckNTU+OCkuaMv+WFpeOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IFVzZXJDU1MgPSAocHJvcHM6IFVzZXJDU1NQcm9wcykgPT4ge1xuICBjb25zdCB1cmwgPSB1c2VNZW1vKCgpID0+IGRldGVjdFVSTChwcm9wcy5zdHlsZSwgaW1wb3J0Lm1ldGEudXJsKSwgW1xuICAgIHByb3BzLnN0eWxlLFxuICBdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7dXJsICE9PSBcIlwiICYmICh1cmwgaW5zdGFuY2VvZiBVUkxcbiAgICAgICAgPyA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj17dXJsLmhyZWZ9IC8+XG4gICAgICAgIDogPHN0eWxlPnt1cmx9PC9zdHlsZT4pfVxuICAgIDwvPlxuICApO1xufTtcbiIsICIvLyBkZW5vLWZtdC1pZ25vcmUtZmlsZVxuZXhwb3J0IGNvbnN0IENTUyA9IFN0cmluZy5yYXdgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9YXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyfWltZ3tkaXNwbGF5OmlubGluZS1ibG9jazttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMHB4fWNvZGV7Zm9udC1mYW1pbHk6dmFyKC0tY29kZS10ZXh0LWZvbnQsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZSk7Zm9udC1zaXplOjkwJTtjb2xvcjp2YXIoLS1jb2RlLWNvbG9yLCAjMzQyZDljKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvZGUtYmcsIHJnYmEoMCwwLDAsLjA0KSk7cGFkZGluZzowO3doaXRlLXNwYWNlOnByZS13cmFwO3dvcmQtd3JhcDpicmVhay13b3JkfWJsb2NrcXVvdGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1xdW90ZS1iZy1jb2xvciwgcmdiYSgwLDAsMCwuMDUpKTtkaXNwbGF5OmJsb2NrO2JvcmRlci1sZWZ0OnNvbGlkIDRweCAjYTBhMGEwO3BhZGRpbmctbGVmdDo0cHg7bWFyZ2luOjB9c3Ryb25ne2ZvbnQtd2VpZ2h0OjcwMH1pZnJhbWV7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOjNweCAwO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXgtd2lkdGg6MTAwJTt3aWR0aDo2NDBweDtoZWlnaHQ6MzYwcHg7Ym9yZGVyOjB9YXVkaW97ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO3doaXRlLXNwYWNlOmluaXRpYWw7bWF4LXdpZHRoOjEwMCV9LmZvcm11bGF7bWFyZ2luOmF1dG8gNnB4fS5mb3JtdWxhLmVycm9yIGNvZGV7Y29sb3I6I2ZkNzM3M30ua2F0ZXgtZGlzcGxheXtkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3RleHQtYWxpZ246aW5oZXJpdCFpbXBvcnRhbnR9LmVycm9yIC5rYXRleC1kaXNwbGF5e2Rpc3BsYXk6bm9uZX0uY2xpe2JvcmRlci1yYWRpdXM6NHB4fS5jbGkgLnByZWZpeHtjb2xvcjojOWM2MjQ4fS5oZWxwZmVlbHtiYWNrZ3JvdW5kLWNvbG9yOiNmYmViZGQ7Ym9yZGVyLXJhZGl1czo0cHg7cGFkZGluZzozcHghaW1wb3J0YW50fS5oZWxwZmVlbCAucHJlZml4e2NvbG9yOiNmMTdjMDB9LmhlbHBmZWVsIC5lbnRyeXtjb2xvcjojY2M1MDIwfS5jb2RlLWJsb2Nre2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MS43ZW07YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2RlLWJnLCByZ2JhKDAsMCwwLC4wNCkpfS5jb2RlLWJsb2NrLXN0YXJ0e2ZvbnQtZmFtaWx5Ok1lbmxvLE1vbmFjbyxDb25zb2xhcyxDb3VyaWVyIE5ldyxtb25vc3BhY2U7Y29sb3I6IzM0MmQ5YztiYWNrZ3JvdW5kLWNvbG9yOiNmZmNmYzY7Zm9udC1zaXplOi45ZW07cGFkZGluZzoxcHggMnB4fS5jb2RlLWJsb2NrLXN0YXJ0IGF7Y29sb3I6IzM0MmQ5Yzt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfWNvZGUuY29kZS1ibG9jaywudGFibGUtYmxvY2sudGFibGUtYmxvY2stcm93e3BhZGRpbmctbGVmdDoxZW19LmNvcHl7Zm9udC1mYW1pbHk6XCJGb250IEF3ZXNvbWUgNSBGcmVlXCI7Y3Vyc29yOnBvaW50ZXJ9LnRhYmxlLWJsb2Nre3doaXRlLXNwYWNlOm5vd3JhcH0udGFibGUtYmxvY2stc3RhcnR7cGFkZGluZzoxcHggMnB4O2ZvbnQtc2l6ZTouOWVtO2JhY2tncm91bmQtY29sb3I6I2ZmY2ZjNn0udGFibGUtYmxvY2stc3RhcnQgYXtjb2xvcjojMzQyZDljO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmNlbGx7bWFyZ2luOjA7cGFkZGluZzowIDJweCAwIDhweDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOnByZX0uY2VsbDpudGgtY2hpbGQob2RkKXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDAwYX0uY2VsbDpudGgtY2hpbGQoMm4pe2JhY2tncm91bmQtY29sb3I6IzAwMDAwMDBmfS5zdHJvbmctaW1hZ2V7bWF4LWhlaWdodDoxMDAlfS5pY29ue2hlaWdodDoxMXB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uc3Ryb25nLWljb257aGVpZ2h0OjEzLjJweH0udG9vbC1idXR0b257bWFyZ2luLWxlZnQ6MWVtO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTouOWVtfS5kZWNvLVxcL3tmb250LXN0eWxlOml0YWxpY30uZGVjby1cXCotMXtmb250LXdlaWdodDo3MDB9LmRlY28tXFwqLTJ7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxLjJlbX0uZGVjby1cXCotM3tmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEuNDRlbX0uZGVjby1cXCotNHtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEuNzNlbX0uZGVjby1cXCotNXtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjIuMDdlbX0uZGVjby1cXCotNntmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjIuNDllbX0uZGVjby1cXCotN3tmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjNlbX0uZGVjby1cXCotOHtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjMuNThlbX0uZGVjby1cXCotOXtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjQuM2VtfS5kZWNvLVxcKi0xMHtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjUuMTZlbX0uZGVjby0te3RleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2h9LmRlY28tX3t0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5wYWdlLWxpbmt7Y29sb3I6dmFyKC0tcGFnZS1saW5rLWNvbG9yLCAjNWU4YWY3KX1hLnBhZ2UtbGluazpob3Zlcntjb2xvcjp2YXIoLS1wYWdlLWxpbmstaG92ZXItY29sb3IsICMyZDY3ZjUpfS5lbXB0eS1wYWdlLWxpbmt7Y29sb3I6dmFyKC0tZW1wdHktcGFnZS1saW5rLWNvbG9yLCAjZmQ3MzczKX1hLmVtcHR5LXBhZ2UtbGluazpob3Zlcntjb2xvcjp2YXIoLS1lbXB0eS1wYWdlLWxpbmstaG92ZXItY29sb3IsICNmZDczNzMpfS5saW5re2NvbG9yOnZhcigtLXBhZ2UtbGluay1jb2xvciwgIzVlOGFmNyk7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1hLmxpbms6aG92ZXJ7Y29sb3I6dmFyKC0tcGFnZS1saW5rLWNvbG9yLWhvdmVyLWNvbG9yLCAjMmQ2N2Y1KX0ubGluayBpbWd7cGFkZGluZy1ib3R0b206M3B4O2JvcmRlci1zdHlsZTpub25lIG5vbmUgc29saWQ7Ym9yZGVyLXdpZHRoOjEuNXB4O2JvcmRlci1jb2xvcjojOGZhZGY5fS5wZXJtYWxpbmt7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saW5lLXBlcm1hbGluay1jb2xvciwgcmdiYSgyMzQsMjE4LDc0LC43NSkpfS5zdGF0dXMtYmFye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQtY29sb3I6dmFyKC0tcGFnZS1iZywgI2ZlZmVmZSk7Y3Vyc29yOmRlZmF1bHR9LnN0YXR1cy1iYXI+Kntib3JkZXI6MXB4IHNvbGlkIHZhcigtLXN0YXR1cy1iYXItYm9yZGVyLWNvbG9yLCAjYTlhYWFmKX0uc3RhdHVzLWJhci50b3AtbGVmdHt0b3A6MDtsZWZ0OjB9LnN0YXR1cy1iYXIudG9wLWxlZnQ+Kntib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZX0uc3RhdHVzLWJhci50b3AtbGVmdCA6bGFzdC1vZi10eXBle2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjNweH0uc3RhdHVzLWJhci50b3AtcmlnaHR7dG9wOjA7cmlnaHQ6MH0uc3RhdHVzLWJhci50b3AtcmlnaHQ+Kntib3JkZXItdG9wOm5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmV9LnN0YXR1cy1iYXIudG9wLXJpZ2h0IDpsYXN0LW9mLXR5cGV7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czozcHh9LnN0YXR1cy1iYXIuYm90dG9tLXJpZ2h0e2JvdHRvbTowO3JpZ2h0OjB9LnN0YXR1cy1iYXIuYm90dG9tLXJpZ2h0Pip7Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci1yaWdodDpub25lfS5zdGF0dXMtYmFyLmJvdHRvbS1yaWdodCA6bGFzdC1vZi10eXBle2JvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4fS5zdGF0dXMtYmFyLmJvdHRvbS1sZWZ0e2JvdHRvbTowO2xlZnQ6MH0uc3RhdHVzLWJhci5ib3R0b20tbGVmdD4qe2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItbGVmdDpub25lfS5zdGF0dXMtYmFyLmJvdHRvbS1sZWZ0IDpsYXN0LW9mLXR5cGV7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4fS50ZXh0LWJ1YmJsZXtmb250LXNpemU6MTFweDtsaW5lLWhlaWdodDoxLjQyODU3O3VzZXItc2VsZWN0OnRleHQ7cG9zaXRpb246YWJzb2x1dGU7Y29sb3I6dmFyKC0tcGFnZS10ZXh0LWNvbG9yLCAjNGE0YTRhKTtib3gtc2hhZG93OjAgNnB4IDEycHggIzAwMDAwMDJkO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ei1pbmRleDo5MDAwOyYubm8tc2Nyb2xse292ZXJmbG93LXk6aGlkZGVufVtkYXRhLXRoZW1lPWRlZmF1bHQtZGFya117LS10ZXh0LWJ1YmJsZS1ib3JkZXItY29sb3I6IGhzbCgwLCAwJSwgMzklKX1bZGF0YS10aGVtZT1kZWZhdWx0LW1pbmltYWxdey0tdGV4dC1idWJibGUtYm9yZGVyLWNvbG9yOiBoc2woMCwgMCUsIDg5JSl9W2RhdGEtdGhlbWU9cGFwZXItbGlnaHRdey0tdGV4dC1idWJibGUtYm9yZGVyLWNvbG9yOiBoc2woNTMsIDglLCA1OCUpfVtkYXRhLXRoZW1lPXBhcGVyLWRhcmstZGFya117LS10ZXh0LWJ1YmJsZS1ib3JkZXItY29sb3I6IGhzbCgyMDMsIDQyJSwgMTclKX1bZGF0YS10aGVtZT1ibHVlXXstLXRleHQtYnViYmxlLWJvcmRlci1jb2xvcjogaHNsKDIyNywgNjglLCA2MiUpfVtkYXRhLXRoZW1lPXB1cnBsZV17LS10ZXh0LWJ1YmJsZS1ib3JkZXItY29sb3I6IGhzbCgyNjcsIDM5JSwgNjAlKX1bZGF0YS10aGVtZT1ncmVlbl17LS10ZXh0LWJ1YmJsZS1ib3JkZXItY29sb3I6IGhzbCgxMzYsIDI5JSwgNTAlKX1bZGF0YS10aGVtZT1vcmFuZ2Vdey0tdGV4dC1idWJibGUtYm9yZGVyLWNvbG9yOiBoc2woNDMsIDcxJSwgNTElKX1bZGF0YS10aGVtZT1yZWRdey0tdGV4dC1idWJibGUtYm9yZGVyLWNvbG9yOiBoc2woNCwgNTglLCA1NiUpfVtkYXRhLXRoZW1lPXNwcmluZ117LS10ZXh0LWJ1YmJsZS1ib3JkZXItY29sb3I6IGhzbCg3MiwgNjQlLCA1NyUpfVtkYXRhLXRoZW1lPWt5b3RvXXstLXRleHQtYnViYmxlLWJvcmRlci1jb2xvcjogaHNsKDMzMSwgMjElLCAyNiUpfVtkYXRhLXRoZW1lPW5ld3lvcmtdey0tdGV4dC1idWJibGUtYm9yZGVyLWNvbG9yOiBoc2woMTc2LCAyOSUsIDY3JSl9W3JvbGU9dGFicGFuZWxde3BhZGRpbmc6NXB4IDAgNXB4IDVweDtib3JkZXItcmFkaXVzOjRweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXBhZ2UtYmcsICNmZWZlZmUpO21heC1oZWlnaHQ6ODB2aDtvdmVyZmxvdy15OmF1dG99W3JvbGU9dGFicGFuZWxdLGJ1dHRvbntib3JkZXI6MXB4IHNvbGlkIHZhcigtLXRleHQtYnViYmxlLWJvcmRlci1jb2xvciwgaHNsKDIyMSwgMTUlLCAyNSUpKX1idXR0b257Y3Vyc29yOmRlZmF1bHQ7Y29sb3I6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0O2JhY2tncm91bmQtY29sb3I6dmFyKC0tcGFnZS1iZywgI2ZlZmVmZSk7Ym9yZGVyLXJhZGl1czo0cHggNHB4IDAgMH1idXR0b25bYXJpYS1zZWxlY3RlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRleHQtYnViYmxlLWJvcmRlci1jb2xvciwgaHNsKDIyMSwgMTUlLCAyNSUpKX19LnByb2plY3QtYmFkZ2V7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6dmFyKC0tdG9vbC10ZXh0LWNvbG9yLCAjMzYzYzQ5KX0ucmVsYXRlZC1wYWdlLWNhcmRbZGF0YS10aGVtZT1kZWZhdWx0LWRhcmtdey0tY2FyZC10aXRsZS1iZzogaHNsKDAsIDAlLCAzOSUpfS5yZWxhdGVkLXBhZ2UtY2FyZFtkYXRhLXRoZW1lPWRlZmF1bHQtbWluaW1hbF17LS1jYXJkLXRpdGxlLWJnOiBoc2woMCwgMCUsIDg5JSl9LnJlbGF0ZWQtcGFnZS1jYXJkW2RhdGEtdGhlbWU9cGFwZXItbGlnaHRdey0tY2FyZC10aXRsZS1iZzogaHNsKDUzLCA4JSwgNTglKX0ucmVsYXRlZC1wYWdlLWNhcmRbZGF0YS10aGVtZT1wYXBlci1kYXJrLWRhcmtdey0tY2FyZC10aXRsZS1iZzogaHNsKDIwMywgNDIlLCAxNyUpfS5yZWxhdGVkLXBhZ2UtY2FyZFtkYXRhLXRoZW1lPWJsdWVdey0tY2FyZC10aXRsZS1iZzogaHNsKDIyNywgNjglLCA2MiUpfS5yZWxhdGVkLXBhZ2UtY2FyZFtkYXRhLXRoZW1lPXB1cnBsZV17LS1jYXJkLXRpdGxlLWJnOiBoc2woMjY3LCAzOSUsIDYwJSl9LnRleHQtYnViYmxlW2RhdGEtdGhlbWU9Z3JlZW5dey0tY2FyZC10aXRsZS1iZzogaHNsKDEzNiwgMjklLCA1MCUpfS5yZWxhdGVkLXBhZ2UtY2FyZFtkYXRhLXRoZW1lPW9yYW5nZV17LS1jYXJkLXRpdGxlLWJnOiBoc2woNDMsIDcxJSwgNTElKX0ucmVsYXRlZC1wYWdlLWNhcmRbZGF0YS10aGVtZT1yZWRdey0tY2FyZC10aXRsZS1iZzogaHNsKDQsIDU4JSwgNTYlKX0ucmVsYXRlZC1wYWdlLWNhcmRbZGF0YS10aGVtZT1zcHJpbmddey0tY2FyZC10aXRsZS1iZzogaHNsKDcyLCA2NCUsIDU3JSl9LnJlbGF0ZWQtcGFnZS1jYXJkW2RhdGEtdGhlbWU9a3lvdG9dey0tY2FyZC10aXRsZS1iZzogaHNsKDMzMSwgMjElLCAyNiUpfS5yZWxhdGVkLXBhZ2UtY2FyZFtkYXRhLXRoZW1lPW5ld3lvcmtdey0tY2FyZC10aXRsZS1iZzogaHNsKDE3NiwgMjklLCA2NyUpfS5yZWxhdGVkLXBhZ2UtY2FyZHtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDppbmhlcml0O3dpZHRoOmluaGVyaXQ7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7Zm9udC1mYW1pbHk6Um9ib3RvLEhlbHZldGljYSxBcmlhbCxIaXJhZ2lubyBTYW5zLHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jYXJkLWJnLCAjZmZmKTtjb2xvcjp2YXIoLS1jYXJkLXRpdGxlLWNvbG9yLCAjNTU1KTt3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnJlbGF0ZWQtcGFnZS1jYXJkOmhvdmVye2JveC1zaGFkb3c6dmFyKC0tY2FyZC1ib3gtaG92ZXItc2hhZG93LCAwIDJweCAwIHJnYmEoMCwwLDAsLjIzKSl9LnJlbGF0ZWQtcGFnZS1jYXJkOmZvY3Vze291dGxpbmU6MDtib3gtc2hhZG93OjAgMCAwIDNweCAjNjZhZmU5OTk7Ym9yZGVyLWNvbG9yOiM2NmFmZTk7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cyxib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXN9LnJlbGF0ZWQtcGFnZS1jYXJkLmhvdmVye29wYWNpdHk6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RvcDowO2xlZnQ6MDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNhcmQtaG92ZXItYmcsIHJnYmEoMCwwLDAsLjA1KSk7bWl4LWJsZW5kLW1vZGU6bXVsdGlwbHk7ei1pbmRleDoxO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMXN9LnJlbGF0ZWQtcGFnZS1jYXJkOmhvdmVyIC5ob3ZlcntvcGFjaXR5OjF9LnJlbGF0ZWQtcGFnZS1jYXJkOmFjdGl2ZSAuaG92ZXJ7b3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2FyZC1hY3RpdmUtYmcsIHJnYmEoMCwwLDAsLjEpKX0ucmVsYXRlZC1wYWdlLWNhcmQgLmNvbnRlbnR7aGVpZ2h0OmNhbGMoMTAwJSAtIDVweCk7d2lkdGg6aW5oZXJpdDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO292ZXJmbG93OmhpZGRlbn0ucmVsYXRlZC1wYWdlLWNhcmQgLmNvbnRlbnQgLmhlYWRlcnt3aWR0aDoxMDAlO2NvbG9yOiMzOTZiZGQ7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztib3JkZXItdG9wOnZhcigtLWNhcmQtdGl0bGUtYmcsICNmMmYyZjMpIHNvbGlkIDEwcHg7cGFkZGluZzo4cHggMTBweH0ucmVsYXRlZC1wYWdlLWNhcmQgLmNvbnRlbnQgLmhlYWRlciAudGl0bGV7Zm9udC1zaXplOjExcHg7bGluZS1oZWlnaHQ6MTZweDtmb250LXdlaWdodDo3MDA7bWF4LWhlaWdodDo0OHB4O2NvbG9yOnZhcigtLWNhcmQtdGl0bGUtY29sb3IsICMzNjNjNDkpO21hcmdpbjowO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrOy13ZWJraXQtbGluZS1jbGFtcDozOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5yZWxhdGVkLXBhZ2UtY2FyZCAuY29udGVudCAuZGVzY3JpcHRpb257bGluZS1oZWlnaHQ6MTZweDtwYWRkaW5nOjhweCAxMHB4IDA7Zm9udC1zaXplOjEwcHg7d2hpdGUtc3BhY2U6cHJlLWxpbmU7Y29sdW1uLWNvdW50OjE7Y29sdW1uLWdhcDoyZW07Y29sdW1uLXdpZHRoOjEwZW07aGVpZ2h0OmluaGVyaXQ7Y29sb3I6dmFyKC0tY2FyZC1kZXNjcmlwdGlvbi1jb2xvciwgZ3JheSk7ZmxleC1zaHJpbms6MTY7b3ZlcmZsb3c6aGlkZGVufS5yZWxhdGVkLXBhZ2UtY2FyZCAuY29udGVudCAudGh1bWJuYWlse2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTttYXJnaW46MCBhdXRvO3BhZGRpbmc6MCA1cHh9LnJlbGF0ZWQtcGFnZS1jYXJkIC5jb250ZW50IC5kZXNjcmlwdGlvbiBwe21hcmdpbjowO2Rpc3BsYXk6YmxvY2t9LnJlbGF0ZWQtcGFnZS1jYXJkIC5jb250ZW50IC5kZXNjcmlwdGlvbiBjb2Rle2ZvbnQtZmFtaWx5Ok1lbmxvLE1vbmFjbyxDb25zb2xhcyxDb3VyaWVyIE5ldyxtb25vc3BhY2U7Zm9udC1zaXplOjkwJTtjb2xvcjp2YXIoLS1jb2RlLWNvbG9yLCAjMzQyZDljKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvZGUtYmcsIHJnYmEoMCwwLDAsLjA0KSk7cGFkZGluZzowO3doaXRlLXNwYWNlOnByZS13cmFwO3dvcmQtd3JhcDpicmVhay13b3JkfS5yZWxhdGVkLXBhZ2UtY2FyZCAuY29udGVudCAuZGVzY3JpcHRpb24gLmljb257aGVpZ2h0OjlweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LnJlbGF0ZWQtcGFnZS1jYXJkIC5jb250ZW50IC5kZXNjcmlwdGlvbiAucGFnZS1saW5re2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6dmFyKC0tcGFnZS1saW5rLWNvbG9yLCAjNWU4YWY3KX0uY2FyZC1idWJibGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wYWdlLWJnLCAjRkZGKTtib3gtc2hhZG93OjAgMnB4IDJweCAjMDAwMDAwMjQsMCAzcHggMXB4IC0ycHggIzAwMDMsMCAxcHggNXB4ICMwMDAwMDAxZjtwb3NpdGlvbjphYnNvbHV0ZTttYXgtd2lkdGg6ODB2dztib3gtc2l6aW5nOmNvbnRlbnQtYm94O3otaW5kZXg6OTAwMDtmb250LXNpemU6MTFweDtsaW5lLWhlaWdodDoxLjQyODU3O2Rpc3BsYXk6ZmxleDtwYWRkaW5nOjA7bWFyZ2luOjA7bGlzdC1zdHlsZTpub25lO292ZXJmbG93LXg6YXV0bztvdmVyZmxvdy15OnZpc2libGV9LmNhcmQtYnViYmxlIGxpe2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7ZmxvYXQ6bm9uZTttYXJnaW46NXB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2hhZG93OnZhcigtLWNhcmQtYm94LXNoYWRvdywgMCAycHggMCByZ2JhKDAsMCwwLC4xMikpO2JvcmRlci1yYWRpdXM6MnB4O3dpZHRoOjEyMHB4O2hlaWdodDoxMjBweH1cbmA7IiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tIFwiLi9wb3NpdGlvbi50c1wiO1xuaW1wb3J0IHsgTGlua1R5cGUgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuaW1wb3J0IHsgU2NyYXBib3ggfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuLyoqIGJ1YmJsZSBkYXRhICovXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZSB7XG4gIC8qKiBidWJibGXlhYMo44Oq44Oz44Kv44Gq44GpKeOBrnByb2plY3QgbmFtZSAqL1xuICBwcm9qZWN0OiBzdHJpbmc7XG5cbiAgLyoqIGJ1YmJsZeWFgyjjg6rjg7Pjgq/jgarjgakp44GudGlsdGUgKi9cbiAgdGl0bGU6IHN0cmluZztcblxuICAvKiogYnViYmxl5YWDKOODquODs+OCr+OBquOBqSnjga5saW5lIElEICovXG4gIGhhc2g/OiBzdHJpbmc7XG5cbiAgLyoqIOOCueOCr+ODreODvOODq+WFiOODquODs+OCr1xuICAgKlxuICAgKiDlhoXpg6jjg6rjg7Pjgq/oqJjms5Xjgbjjgrnjgq/jg63jg7zjg6vjgZnjgovjgajjgY3jga/jgIFgcHJvamVjdGDjgpLliYrjgotcbiAgICovXG4gIGxpbmtUbz86IHtcbiAgICBwcm9qZWN0Pzogc3RyaW5nO1xuICAgIHRpdGxlTGM6IHN0cmluZztcbiAgfTtcblxuICAvKiog55m655Sf5rqQ44Gu56iu6aGeICovXG4gIHR5cGU6IExpbmtUeXBlO1xuXG4gIC8qKiBidWJibGXjga7ooajnpLrkvY3nva4gKi9cbiAgcG9zaXRpb246IFBvc2l0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1YmJsZU9wZXJhdG9ycyB7XG4gIC8qKiDnj77lnKjjga7pmo7lsaTjga7kuIvjgavmlrDjgZfjgYRidWJibGXjgpLlh7rjgZlcbiAgICpcbiAgICog44GZ44Gn44GrYnViYmxl44GV44KM44Gm44GE44Gf5aC05ZCI44CB44Gd44KM5Lul6ZmN44GuYnViYmxl44KS5ZCr44KB44Gm5raI44GX44Gm44GL44KJ5paw44GX44GE44Gu44KS5Ye644GZXG4gICAqL1xuICBidWJibGU6IChzb3VyY2U6IFNvdXJjZSkgPT4gdm9pZDtcblxuICAvKiog54++5Zyo44Gu6ZqO5bGk44KI44KK5LiL44GuYnViYmxlc+OCkuOBmeOBueOBpua2iOOBmSAqL1xuICBoaWRlOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1YmJsZVNvdXJjZSBleHRlbmRzIEJ1YmJsZU9wZXJhdG9ycyB7XG4gIC8qKiBidWJibGUgZGF0YSAqL1xuICBzb3VyY2U6IFNvdXJjZTtcblxuICAvKiog6Kaq6ZqO5bGk44GuYnViYmxlc+OBruODmuODvOOCuOOCv+OCpOODiOODqyAqL1xuICBwYXJlbnRUaXRsZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY29uc3QgdXNlQnViYmxlcyA9ICgpOiBbXG4gIEJ1YmJsZU9wZXJhdG9ycyxcbiAgLi4uQnViYmxlU291cmNlW10sXG5dID0+IHtcbiAgY29uc3QgW2J1YmJsZXMsIHNldEJ1YmJsZXNdID0gdXNlU3RhdGU8W1xuICAgIEJ1YmJsZU9wZXJhdG9ycyxcbiAgICAuLi5CdWJibGVTb3VyY2VbXSxcbiAgXT4oW3tcbiAgICBidWJibGU6IChzb3VyY2U6IFNvdXJjZSkgPT4gY2hhbmdlKDAsIHNvdXJjZSksXG4gICAgaGlkZTogKCkgPT4gY2hhbmdlKDApLFxuICB9XSk7XG5cbiAgY29uc3QgY2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgZGVwdGg6IG51bWJlcixcbiAgICAgIHNvdXJjZT86IFNvdXJjZSxcbiAgICApID0+IHtcbiAgICAgIC8vIOaTjeS9nOWHveaVsOOChOS7luOBrmJ1YmJsZeODh+ODvOOCv+OBi+OCieioiOeul+OBleOCjOOCi+WApOOCkui/veWKoOOBmeOCi1xuICAgICAgLy8g5pu05paw44GV44KM44GfYnViYmxl5Lul5aSW44Gv44CBb2JqZWN044Gu5Y+C54Wn44KS5aOK44GV44Ga44Gr44Gd44Gu44G+44G+6L+U44GZXG4gICAgICBzZXRCdWJibGVzKChcbiAgICAgICAgW2ZpcnN0LCAuLi5wcmV2XSxcbiAgICAgICkgPT4gW1xuICAgICAgICBmaXJzdCxcbiAgICAgICAgLi4uKFxuICAgICAgICAgIHNvdXJjZVxuICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIC4uLnByZXYuc2xpY2UoMCwgZGVwdGgpLFxuICAgICAgICAgICAgICBzb3VyY2UgPT09IHByZXYuYXQoZGVwdGgpPy5zb3VyY2UgPyBwcmV2LmF0KGRlcHRoKSEgOiAoe1xuICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICBwYXJlbnRUaXRsZXM6IFtcbiAgICAgICAgICAgICAgICAgIHNjcmFwYm94LlBhZ2UudGl0bGUgPz8gXCJcIixcbiAgICAgICAgICAgICAgICAgIC4uLnByZXYuc2xpY2UoMCwgZGVwdGgpLm1hcCgoYnViYmxlKSA9PiBidWJibGUuc291cmNlLnRpdGxlKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGJ1YmJsZTogKHNvdXJjZTogU291cmNlKSA9PiBjaGFuZ2UoZGVwdGggKyAxLCBzb3VyY2UpLFxuICAgICAgICAgICAgICAgIGhpZGU6ICgpID0+IGNoYW5nZShkZXB0aCArIDEpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIDogWy4uLnByZXYuc2xpY2UoMCwgZGVwdGgpXVxuICAgICAgICApLFxuICAgICAgXSk7XG4gICAgfSxcbiAgICBbXSxcbiAgKTtcblxuICByZXR1cm4gYnViYmxlcztcbn07XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5cbnR5cGUgRXZlbnRNYXA8RSBleHRlbmRzIEV2ZW50VGFyZ2V0PiA9IEUgZXh0ZW5kcyBXaW5kb3cgPyBXaW5kb3dFdmVudE1hcFxuICA6IEUgZXh0ZW5kcyBEb2N1bWVudCA/IERvY3VtZW50RXZlbnRNYXBcbiAgOiBFIGV4dGVuZHMgSFRNTEVsZW1lbnQgPyBIVE1MRWxlbWVudEV2ZW50TWFwXG4gIDogR2xvYmFsRXZlbnRIYW5kbGVyc0V2ZW50TWFwO1xudHlwZSBMaXN0ZW5lcjxFIGV4dGVuZHMgRXZlbnRUYXJnZXQsIEsgZXh0ZW5kcyBrZXlvZiBFdmVudE1hcDxFPj4gPSBFIGV4dGVuZHNcbiAgV2luZG93ID8gKHRoaXM6IFdpbmRvdywgZXY6IEV2ZW50TWFwPEU+W0tdKSA9PiB2b2lkXG4gIDogRSBleHRlbmRzIERvY3VtZW50ID8gKHRoaXM6IERvY3VtZW50LCBldjogRXZlbnRNYXA8RT5bS10pID0+IHZvaWRcbiAgOiBFIGV4dGVuZHMgSFRNTEVsZW1lbnQgPyAodGhpczogSFRNTEVsZW1lbnQsIGV2OiBFdmVudE1hcDxFPltLXSkgPT4gdm9pZFxuICA6IEV2ZW50TGlzdGVuZXJPckV2ZW50TGlzdGVuZXJPYmplY3Q7XG5cbmV4cG9ydCBjb25zdCB1c2VFdmVudExpc3RlbmVyID0gPFxuICBFIGV4dGVuZHMgRXZlbnRUYXJnZXQsXG4gIEsgZXh0ZW5kcyAoa2V5b2YgRXZlbnRNYXA8RT4pICYgc3RyaW5nLFxuPihcbiAgZWxlbWVudDogRSxcbiAgdHlwZTogSyxcbiAgbGlzdGVuZXI6IExpc3RlbmVyPEUsIEs+LFxuICBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zLFxuICBkZXBzPzogdW5rbm93bltdLFxuKTogdm9pZCA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgdHlwZSxcbiAgICAgIGxpc3RlbmVyIGFzIEV2ZW50TGlzdGVuZXJPckV2ZW50TGlzdGVuZXJPYmplY3QsXG4gICAgICBvcHRpb25zLFxuICAgICk7XG4gICAgcmV0dXJuICgpID0+XG4gICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGxpc3RlbmVyIGFzIEV2ZW50TGlzdGVuZXJPckV2ZW50TGlzdGVuZXJPYmplY3QsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApO1xuICB9LCBbZWxlbWVudCwgdHlwZSwgb3B0aW9ucywgLi4uKGRlcHMgPz8gW10pXSk7XG59O1xuIiwgIi8qKiDnt6jpm4bnlLvpnaLjga7jgr/jgqTjg4jjg6vooYzjga5ET03jgYvjganjgYbjgYvliKTlrprjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBpc1RpdGxlID0gKFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbik6IGVsZW1lbnQgaXMgSFRNTFNwYW5FbGVtZW50ID0+XG4gIGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MU3BhbkVsZW1lbnQgJiZcbiAgZWxlbWVudC5tYXRjaGVzKFwiLmxpbmUtdGl0bGUgLnRleHRcIik7XG5cbi8qKiBzY3JhcGJveOWGheOBruODquODs+OCr+OBi+OBqeOBhuOBi+WIpOWumuOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGlzUGFnZUxpbmsgPSAoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuKTogZWxlbWVudCBpcyBIVE1MQW5jaG9yRWxlbWVudCA9PlxuICBlbGVtZW50IGluc3RhbmNlb2YgSFRNTEFuY2hvckVsZW1lbnQgJiZcbiAgZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoXCJwYWdlLWxpbmtcIik7XG5cbi8qKiDmjIflrprjgZfjgZ90ZW1wbGF0ZSBsaXRlcmFsIHN0cmluZ+OBi+OBqeOBhuOBi+WIpOWumuOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGlzTGl0ZXJhbFN0cmluZ3MgPSA8UyBleHRlbmRzIHJlYWRvbmx5IHN0cmluZ1tdPihcbiAgdmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgLi4ubGl0ZXJhbHM6IFNcbik6IHZhbHVlIGlzIFNbbnVtYmVyXSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIGxpdGVyYWxzLmluY2x1ZGVzKHZhbHVlKTtcbiIsICIvKiogQGpzeCBoICovXG4vKiogQGpzeEZyYWcgRnJhZ21lbnQgKi9cbi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiLz5cbmltcG9ydCB7IEJ1YmJsZSB9IGZyb20gXCIuL0J1YmJsZS50c3hcIjtcbmltcG9ydCB7IFVzZXJDU1MgfSBmcm9tIFwiLi9Vc2VyQ1NTLnRzeFwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIi4vYXBwLm1pbi5jc3MudHNcIjtcbmltcG9ydCB7IEZyYWdtZW50LCBoLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0IH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyB1c2VCdWJibGVzIH0gZnJvbSBcIi4vdXNlQnViYmxlcy50c1wiO1xuaW1wb3J0IHsgc3RheUhvdmVyaW5nIH0gZnJvbSBcIi4vc3RheUhvdmVyaW5nLnRzXCI7XG5pbXBvcnQgeyB1c2VFdmVudExpc3RlbmVyIH0gZnJvbSBcIi4vdXNlRXZlbnRMaXN0ZW5lci50c1wiO1xuaW1wb3J0IHsgaXNQYWdlTGluaywgaXNUaXRsZSB9IGZyb20gXCIuL2lzLnRzXCI7XG5pbXBvcnQgeyBwYXJzZUxpbmsgfSBmcm9tIFwiLi9wYXJzZUxpbmsudHNcIjtcbmltcG9ydCB7IHRvSWQgfSBmcm9tIFwiLi9pZC50c1wiO1xuaW1wb3J0IHsgY2FsY0J1YmJsZVBvc2l0aW9uIH0gZnJvbSBcIi4vcG9zaXRpb24udHNcIjtcbmltcG9ydCB7IHByZWZldGNoIGFzIHByZWZldGNoXyB9IGZyb20gXCIuL2J1YmJsZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBMaW5rVHlwZSB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3RJZCwgU2NyYXBib3ggfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuZXhwb3J0IGNvbnN0IHVzZXJzY3JpcHROYW1lID0gXCJzY3JhcC1idWJibGVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBcHBQcm9wcyB7XG4gIC8qKiBob3ZlcuOBl+OBpuOBi+OCiWJ1YmJsZeOCkuihqOekuuOBmeOCi+OBvuOBp+OBruOCv+OCpOODoOODqeOCsCAqL1xuICBkZWxheTogbnVtYmVyO1xuXG4gIC8qKiDpgI/pgY7nmoTjgavmibHjgYZwcm9qZWN044Gu44Oq44K544OIICovXG4gIHdoaXRlTGlzdDogU2V0PHN0cmluZz47XG5cbiAgLyoqIHdhdGNoIGxpc3QgKi9cbiAgd2F0Y2hMaXN0OiBTZXQ8UHJvamVjdElkPjtcblxuICAvKiog44Kr44K544K/44OgQ1NTXG4gICAqXG4gICAqIFVSTCBvciBVUkzmloflrZfliJfjga7loLTlkIjjga/jgIFDU1Pjg5XjgqHjgqTjg6vjgbjjga5VUkzjgaDjgajjgb/jgarjgZfjgaY8bGluayAvPuOBp+iqreOBv+i+vOOCgFxuICAgKiDjgZ3jgozku6XlpJbjga7loLTlkIjjga/jgIHjgqTjg7Pjg6njgqTjg7NDU1PjgajjgZfjgaY8c3R5bGUgLz7jgafoqq3jgb/ovrzjgoBcbiAgICovXG4gIHN0eWxlOiBVUkwgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBBcHAgPSAoXG4gIHsgZGVsYXksIHdoaXRlTGlzdCwgd2F0Y2hMaXN0LCBzdHlsZSB9OiBBcHBQcm9wcyxcbikgPT4ge1xuICBjb25zdCBbeyBidWJibGUsIGhpZGUgfSwgLi4uYnViYmxlc10gPSB1c2VCdWJibGVzKCk7XG5cbiAgLyoqIOODmuODvOOCuOODh+ODvOOCv+OCkuWFiOiqreOBv+OBmeOCi1xuICAgKlxuICAgKiB3aGl0ZSBsaXN044Gr44Gq44GE5aSW6YOo44OX44Ot44K444Kn44Kv44OI44Oq44Oz44Kv44Gv44CB44Gd44Gu44Oa44O844K444Gg44GR44KS6Kqt44G/6L6844KAXG4gICAqL1xuICBjb25zdCBwcmVmZXRjaCA9IHVzZUNhbGxiYWNrKChwcm9qZWN0OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpID0+XG4gICAgcHJlZmV0Y2hfKFxuICAgICAgdGl0bGUsXG4gICAgICB3aGl0ZUxpc3QuaGFzKHByb2plY3QpID8gd2hpdGVMaXN0IDogbmV3IFNldChbcHJvamVjdF0pLFxuICAgICAgd2F0Y2hMaXN0LFxuICAgICksIFt3aGl0ZUxpc3QsIHdhdGNoTGlzdF0pO1xuXG4gIC8vIGhvdmVy5Yem55CGXG4gIHVzZUV2ZW50TGlzdGVuZXIoXG4gICAgZG9jdW1lbnQsXG4gICAgXCJwb2ludGVyZW50ZXJcIixcbiAgICBhc3luYyAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgY29uc3QgbGluayA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgLy8g5Yem55CG44KSPGE+44GLLmxpbmUtdGl0bGXjga7jgajjgY3jgavpmZDlrprjgZnjgotcbiAgICAgIGlmICghaXNQYWdlTGluayhsaW5rKSAmJiAhaXNUaXRsZShsaW5rKSkgcmV0dXJuO1xuXG4gICAgICBjb25zdCB7XG4gICAgICAgIHByb2plY3QgPSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUsXG4gICAgICAgIHRpdGxlOiBlbmNvZGVkVGl0bGUsXG4gICAgICAgIGhhc2ggPSBcIlwiLFxuICAgICAgfSA9IGlzUGFnZUxpbmsobGluaylcbiAgICAgICAgPyBwYXJzZUxpbmsoe1xuICAgICAgICAgIHBhdGhUeXBlOiBcInJvb3RcIixcbiAgICAgICAgICBocmVmOiBgJHtuZXcgVVJMKGxpbmsuaHJlZikucGF0aG5hbWV9JHtuZXcgVVJMKGxpbmsuaHJlZikuaGFzaH1gLFxuICAgICAgICB9KVxuICAgICAgICA6IHsgcHJvamVjdDogc2NyYXBib3guUHJvamVjdC5uYW1lLCB0aXRsZTogc2NyYXBib3guUGFnZS50aXRsZSB9O1xuICAgICAgLy8gWy9wcm9qZWN0XeOBruW9ouOBruODquODs+OCr+OBr+S9leOCguOBl+OBquOBhFxuICAgICAgaWYgKHByb2plY3QgPT09IFwiXCIpIHJldHVybjtcbiAgICAgIGNvbnN0IHRpdGxlID0gZGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZWRUaXRsZSA/PyBcIlwiKTtcblxuICAgICAgcHJlZmV0Y2gocHJvamVjdCwgdGl0bGUpO1xuXG4gICAgICAvLyBkZWxheeS7peWGheOBq+OCq+ODvOOCveODq+OBjOmbouOCjOOCi+OBi+OCr+ODquODg+OCr+OBl+OBn+OCieS9leOCguOBl+OBquOBhFxuICAgICAgaWYgKCFhd2FpdCBzdGF5SG92ZXJpbmcobGluaywgZGVsYXkpKSByZXR1cm47XG5cbiAgICAgIGJ1YmJsZSh7XG4gICAgICAgIHByb2plY3QsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBoYXNoLFxuICAgICAgICBwb3NpdGlvbjogY2FsY0J1YmJsZVBvc2l0aW9uKGxpbmspLFxuICAgICAgICB0eXBlOiBnZXRMaW5rVHlwZShsaW5rKSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgeyBjYXB0dXJlOiB0cnVlIH0sXG4gICAgW1xuICAgICAgZGVsYXksXG4gICAgICB3aGl0ZUxpc3QsXG4gICAgICB3YXRjaExpc3QsXG4gICAgXSxcbiAgKTtcblxuICAvLyDjgqvjg7zjg4nlpJbjgq/jg6rjg4Pjgq/jgaflhajjgabjga5idWJibGXjgpLpmqDjgZlcbiAgdXNlRXZlbnRMaXN0ZW5lcihcbiAgICBkb2N1bWVudCxcbiAgICBcImNsaWNrXCIsXG4gICAgKGUpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKHRhcmdldC5kYXRhc2V0LnVzZXJzY3JpcHROYW1lID09PSB1c2Vyc2NyaXB0TmFtZSkgcmV0dXJuO1xuICAgICAgaGlkZSgpO1xuICAgIH0sXG4gICAgeyBjYXB0dXJlOiB0cnVlIH0sXG4gICAgW2hpZGVdLFxuICApO1xuXG4gIC8vIOODmuODvOOCuOmBt+enu+OBp+OCq+ODvOODieOCkua2iOOBmVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNjcmFwYm94LmFkZExpc3RlbmVyKFwicGFnZTpjaGFuZ2VkXCIsIGhpZGUpO1xuICAgIHJldHVybiAoKSA9PiBzY3JhcGJveC5yZW1vdmVMaXN0ZW5lcihcInBhZ2U6Y2hhbmdlZFwiLCBoaWRlKTtcbiAgfSwgW2hpZGVdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8bGlua1xuICAgICAgICByZWw9XCJzdHlsZXNoZWV0XCJcbiAgICAgICAgaHJlZj1cImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0thVGVYLzAuMTIuMC9rYXRleC5taW4uY3NzXCJcbiAgICAgIC8+XG4gICAgICA8c3R5bGU+e0NTU308L3N0eWxlPlxuICAgICAgPFVzZXJDU1Mgc3R5bGU9e3N0eWxlfSAvPlxuICAgICAge2J1YmJsZXMubWFwKChidWJibGUpID0+IChcbiAgICAgICAgPEJ1YmJsZVxuICAgICAgICAgIGtleT17dG9JZChidWJibGUuc291cmNlLnByb2plY3QsIGJ1YmJsZS5zb3VyY2UudGl0bGUpfVxuICAgICAgICAgIHsuLi5idWJibGV9XG4gICAgICAgICAgd2hpdGVMaXN0PXt3aGl0ZUxpc3R9XG4gICAgICAgICAgZGVsYXk9e2RlbGF5fVxuICAgICAgICAgIHByZWZldGNoPXtwcmVmZXRjaH1cbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgZ2V0TGlua1R5cGUgPSAoZWxlbWVudDogSFRNTFNwYW5FbGVtZW50IHwgSFRNTEFuY2hvckVsZW1lbnQpOiBMaW5rVHlwZSA9PlxuICBpc1BhZ2VMaW5rKGVsZW1lbnQpXG4gICAgPyAoZWxlbWVudC50eXBlID09PSBcImxpbmtcIiA/IFwibGlua1wiIDogXCJoYXNodGFnXCIpXG4gICAgOiBcInRpdGxlXCI7XG4iLCAiLyoqIEBqc3ggaCAqL1xuLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIvPlxuaW1wb3J0IHsgaCwgcmVuZGVyIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBnZXRXYXRjaExpc3QgfSBmcm9tIFwiLi93YXRjaExpc3QudHNcIjtcbmltcG9ydCB7IEFwcCwgQXBwUHJvcHMsIHVzZXJzY3JpcHROYW1lIH0gZnJvbSBcIi4vQXBwLnRzeFwiO1xuaW1wb3J0IHsgc2V0RGVidWdNb2RlIH0gZnJvbSBcIi4vZGVidWcudHNcIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdElkLCBTY3JhcGJveCB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5leHBvcnQgdHlwZSB7IEFwcFByb3BzIH07XG5leHBvcnQgaW50ZXJmYWNlIE1vdW50SW5pdFxuICBleHRlbmRzIFBhcnRpYWw8T21pdDxBcHBQcm9wcywgXCJ3aGl0ZUxpc3RcIiB8IFwid2F0Y2hMaXN0XCI+PiB7XG4gIC8qKiBkZWJ1Z+eUqOacieWKueWMluODleODqeOCsCAqL1xuICBkZWJ1Zz86IGJvb2xlYW4gfCBJdGVyYWJsZTxzdHJpbmc+O1xuXG4gIC8qKiDpgI/pgY7nmoTjgavmibHjgYZwcm9qZWN044Gu44Oq44K544OIICovXG4gIHdoaXRlTGlzdD86IEl0ZXJhYmxlPHN0cmluZz47XG5cbiAgLyoqIHdhdGNoIGxpc3QgKi9cbiAgd2F0Y2hMaXN0PzogSXRlcmFibGU8UHJvamVjdElkPjtcbn1cblxuZXhwb3J0IGNvbnN0IG1vdW50ID0gYXN5bmMgKGluaXQ/OiBNb3VudEluaXQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3Qge1xuICAgIGRlbGF5ID0gNTAwLFxuICAgIHdoaXRlTGlzdCA9IFtdLFxuICAgIHdhdGNoTGlzdCA9IChhd2FpdCBnZXRXYXRjaExpc3QoKSkuc2xpY2UoMCwgMTAwKSxcbiAgICBzdHlsZSA9IFwiXCIsXG4gICAgZGVidWcgPSBmYWxzZSxcbiAgfSA9IGluaXQgPz8ge307XG5cbiAgc2V0RGVidWdNb2RlKGRlYnVnKTtcbiAgY29uc3QgYXBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgYXBwLmRhdGFzZXQudXNlcnNjcmlwdE5hbWUgPSB1c2Vyc2NyaXB0TmFtZTtcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmQoYXBwKTtcbiAgY29uc3Qgc2hhZG93Um9vdCA9IGFwcC5hdHRhY2hTaGFkb3coeyBtb2RlOiBcIm9wZW5cIiB9KTtcbiAgcmVuZGVyKFxuICAgIDxBcHBcbiAgICAgIGRlbGF5PXtkZWxheX1cbiAgICAgIHdoaXRlTGlzdD17bmV3IFNldChbc2NyYXBib3guUHJvamVjdC5uYW1lLCAuLi53aGl0ZUxpc3RdKX1cbiAgICAgIHdhdGNoTGlzdD17bmV3IFNldCh3YXRjaExpc3QpfVxuICAgICAgc3R5bGU9e3N0eWxlfVxuICAgIC8+LFxuICAgIHNoYWRvd1Jvb3QsXG4gICk7XG59O1xuIiwgImltcG9ydCB7IG1vdW50IH0gZnJvbSBcIi4uL3Rha2tlcjk5JTJGU2NyYXBCdWJibGUvbW9kLnRzeFwiO1xuaW1wb3J0IHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vc2NyYXBib3gtanAlMkZ0eXBlcy91c2Vyc2NyaXB0LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuY29uc3QgdGFra2VyX2xpc3QgPSBbXCJ0YWtrZXItbWVtZXhcIiwgXCJ0YWtrZXItcHJpdmF0ZVwiLCBcInRha2tlclwiLCBcInRha2tlci1ib29rc1wiLCBcInZpbGxhZ2VwdW1wXCJdO1xuY29uc3QgYWRkaXRpb25hbF9saXN0PSBbXTtcbnN3aXRjaCAoc2NyYXBib3guUHJvamVjdC5uYW1lKSB7XG4gICBjYXNlIFwiaHViXCI6XG4gICBjYXNlIFwidmlsbGFnZXB1bXBcIjpcbiAgIGNhc2UgXCJ2ZXJiYWxpemluZy1jb21tdW5pdHlcIjpcbiAgICAgYWRkaXRpb25hbF9saXN0LnB1c2goXCJ2aWxsYWdlcHVtcFwiLCBcImh1YlwiLCBcInZlcmJhbGl6aW5nLWNvbW11bml0eVwiKTtcbiAgICAgYnJlYWs7XG4gICBjYXNlIFwicHJvZ3JhbW1pbmctbm90ZXNcIjpcbiAgIGNhc2UgXCJjdXN0b21pemVcIjpcbiAgIGNhc2UgXCJzY3JhcGJveGxhYlwiOlxuICAgICBhZGRpdGlvbmFsX2xpc3QucHVzaChcInByb2dyYW1taW5nLW5vdGVzXCIsIFwiY3VzdG9taXplXCIsIFwic2NyYXBib3hsYWJcIik7XG4gICAgIGJyZWFrO1xuICAgY2FzZSBcInN0YVwiOlxuICAgICBhZGRpdGlvbmFsX2xpc3QucHVzaChcInN0YS10YXNrbWFuYWdlbWVudFwiKTtcbiAgICAgYnJlYWs7XG4gICBjYXNlIFwic3RhLXRhc2ttYW5hZ2VtZW50XCI6XG4gICBjYXNlIFwidGFza21hbmFnZW1lbnRcIjpcbiAgICAgYWRkaXRpb25hbF9saXN0LnB1c2goXCJzdGEtdGFza21hbmFnZW1lbnRcIiwgXCJ0YXNrbWFuYWdlbWVudFwiKTtcbiAgICAgYnJlYWs7XG4gIGNhc2UgXCJwbHVyYWxpdHktamFwYW5lc2VcIjpcbiAgICAgYWRkaXRpb25hbF9saXN0LnB1c2goXCJuaXNoaW9cIiwgXCJ0a2dzaG5cIik7XG4gICAgIGJyZWFrO1xufVxuXG5tb3VudCh7XG4gIC8vZXhwaXJlZDogMTAgLyo2MOenkuOBr+mVt+OBhOOBruOBpzEw56eS44Gr44GX44GfKi8sXG4gIGRlbGF5OiAvbW9iaWxlL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSA/IDMwMCA6IDUwMCxcbiAgd2hpdGVMaXN0OiBbLi4udGFra2VyX2xpc3QsIC4uLmFkZGl0aW9uYWxfbGlzdF0sXG4gIHN0eWxlOiAnQGltcG9ydCBcIi9hcGkvY29kZS90YWtrZXIva2FrZXJ144Gu6IOM5pmv44KS55m944Gr44GZ44KLVXNlckNTUy9zdHlsZS5jc3NcIjtcXG5AaW1wb3J0IFwiL2FwaS9jb2RlL3Rha2tlci/jgqLjgqTjgrPjg7PoqJjms5XjgpLnlLvlg4/oqJjms5XjgaPjgb3jgY/jgZnjgotVc2VyQ1NTL3N0eWxlMi5jc3NcIjsnLFxufSk7XG4iLCAiZXhwb3J0IGludGVyZmFjZSBQYXJzZUNvZGVUaXRsZVJlc3VsdCB7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGxhbmc6IHN0cmluZztcbn1cbmV4cG9ydCBjb25zdCBwYXJzZUNvZGVUaXRsZSA9ICh0aXRsZTogc3RyaW5nKTogUGFyc2VDb2RlVGl0bGVSZXN1bHQgPT4ge1xuICB7XG4gICAgY29uc3QgbWF0Y2ggPSB0aXRsZS5tYXRjaCgvXihbXihdKylcXCgoW14pXSspXFwpJC8pO1xuICAgIGlmIChtYXRjaCkgcmV0dXJuIHsgZmlsZU5hbWU6IG1hdGNoWzFdLCBsYW5nOiBtYXRjaFsyXSB9O1xuICB9XG4gIGNvbnN0IGxhbmcgPSB0aXRsZS5zcGxpdChcIi5cIikucG9wKCk7XG4gIHJldHVybiBsYW5nID09PSB1bmRlZmluZWRcbiAgICA/IHsgZmlsZU5hbWU6IHRpdGxlLCBsYW5nOiB0aXRsZSB9XG4gICAgOiB7IGZpbGVOYW1lOiB0aXRsZSwgbGFuZyB9O1xufTtcbiIsICJpbXBvcnQgeyBwYXJzZUNvZGVUaXRsZSB9IGZyb20gXCIuL2NvZGVUaXRsZS50c1wiO1xuaW1wb3J0IHsgQmFzZUxpbmUsIGVuY29kZVRpdGxlVVJJLCBwYXJzZSB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuXG5pbnRlcmZhY2UgRmlsZSB7XG4gIHBhdGg6IHN0cmluZztcbiAgbGFuZzogc3RyaW5nO1xuICAvKiog44Kz44O844OJ44OW44Ot44OD44Kv44Gu6ZaL5aeL6KGM44GuaWQgKi9cbiAgc3RhcnRJZHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Q29kZUZpbGVzID0gKFxuICBwcm9qZWN0OiBzdHJpbmcsXG4gIHRpdGxlOiBzdHJpbmcsXG4gIGxpbmVzOiByZWFkb25seSBCYXNlTGluZVtdLFxuKTogSXRlcmFibGU8RmlsZT4gPT4ge1xuICBpZiAobGluZXMubGVuZ3RoID09PSAwKSByZXR1cm4gW107XG4gIGNvbnN0IGlucHV0ID0gbGluZXMubWFwKChsaW5lKSA9PiBsaW5lLnRleHQpLmpvaW4oXCJcXG5cIik7XG4gIGNvbnN0IGJsb2NrcyA9IHBhcnNlKGlucHV0LCB7IGhhc1RpdGxlOiB0cnVlIH0pO1xuXG4gIC8qKiDliIblibLjgZXjgozjgZ/jgrPjg7zjg4njg5bjg63jg4Pjgq/jgpLntZDlkIjjgZnjgovjga7jgavkvb/jgYYgKi9cbiAgY29uc3QgY29kZXMgPSBuZXcgTWFwPHN0cmluZywgRmlsZT4oKTtcbiAgLyoqIOePvuWcqOiqreOCk+OBp+OBhOOCi2BwYWNrLnJvd3NbMF1g44Gu6KGM55Wq5Y+3ICovXG4gIGxldCBjb3VudGVyID0gMDtcbiAgZm9yIChjb25zdCBibG9jayBvZiBibG9ja3MpIHtcbiAgICBzd2l0Y2ggKGJsb2NrLnR5cGUpIHtcbiAgICAgIGNhc2UgXCJ0aXRsZVwiOlxuICAgICAgY2FzZSBcImxpbmVcIjoge1xuICAgICAgICBjb3VudGVyKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBcInRhYmxlXCI6XG4gICAgICAgIGNvdW50ZXIgKz0gYmxvY2suY2VsbHMubGVuZ3RoICsgMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiY29kZUJsb2NrXCI6IHtcbiAgICAgICAgY29uc3QgeyBmaWxlTmFtZSwgbGFuZyB9ID0gcGFyc2VDb2RlVGl0bGUoYmxvY2suZmlsZU5hbWUpO1xuICAgICAgICBjb25zdCBwcmV2ID0gY29kZXMuZ2V0KGZpbGVOYW1lKTtcbiAgICAgICAgY29kZXMuc2V0KFxuICAgICAgICAgIGZpbGVOYW1lLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBhdGg6IHByZXY/LnBhdGggPz9cbiAgICAgICAgICAgICAgYGh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvJHtwcm9qZWN0fS8ke1xuICAgICAgICAgICAgICAgIGVuY29kZVRpdGxlVVJJKHRpdGxlKVxuICAgICAgICAgICAgICB9LyR7ZW5jb2RlVGl0bGVVUkkoZmlsZU5hbWUpfWAsXG4gICAgICAgICAgICBsYW5nOiBwcmV2Py5sYW5nID8/IGxhbmcsXG4gICAgICAgICAgICBzdGFydElkczogWy4uLihwcmV2Py5zdGFydElkcyA/PyBbXSksIGxpbmVzW2NvdW50ZXJdLmlkXSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgICBjb3VudGVyICs9IGJsb2NrLmNvbnRlbnQuc3BsaXQoXCJcXG5cIikubGVuZ3RoICsgMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvZGVzLnZhbHVlcygpO1xufTtcbiIsICIvLyBkZW5vLWxpbnQtaWdub3JlLWZpbGVcbi8qKiBlc2J1aWxkLXdhc21AMC4yMS41XG4gKlxuICogTUlUIExpY2Vuc2VcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXZhbiBXYWxsYWNlXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiAqL1xuLy8gVGhpcyBjb2RlIGlzIHBvcnRlZCBmcm9tIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9ldmFudy9lc2J1aWxkL3YwLjIxLjUvbGliL3NoYXJlZC9zdGRpb19wcm90b2NvbC50c1xuXG4vLyBUaGUgSmF2YVNjcmlwdCBBUEkgY29tbXVuaWNhdGVzIHdpdGggdGhlIEdvIGNoaWxkIHByb2Nlc3Mgb3ZlciBzdGRpbi9zdGRvdXRcbi8vIHVzaW5nIHRoaXMgcHJvdG9jb2wuIEl0J3MgYSB2ZXJ5IHNpbXBsZSBiaW5hcnkgcHJvdG9jb2wgdGhhdCB1c2VzIHByaW1pdGl2ZXNcbi8vIGFuZCBuZXN0ZWQgYXJyYXlzIGFuZCBtYXBzLiBJdCdzIGJhc2ljYWxseSBKU09OIHdpdGggVVRGLTggZW5jb2RpbmcgYW5kIGFuXG4vLyBhZGRpdGlvbmFsIGJ5dGUgYXJyYXkgcHJpbWl0aXZlLiBZb3UgbXVzdCBzZW5kIGEgcmVzcG9uc2UgYWZ0ZXIgcmVjZWl2aW5nIGFcbi8vIHJlcXVlc3QgYmVjYXVzZSB0aGUgb3RoZXIgZW5kIGlzIGJsb2NraW5nIG9uIHRoZSByZXNwb25zZSBjb21pbmcgYmFjay5cblxuaW1wb3J0IHR5cGUgKiBhcyB0eXBlcyBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkUmVxdWVzdCB7XG4gIGNvbW1hbmQ6IFwiYnVpbGRcIjtcbiAga2V5OiBudW1iZXI7XG4gIGVudHJpZXM6IFtzdHJpbmcsIHN0cmluZ11bXTsgLy8gVXNlIGFuIGFycmF5IGluc3RlYWQgb2YgYSBtYXAgdG8gcHJlc2VydmUgb3JkZXJcbiAgZmxhZ3M6IHN0cmluZ1tdO1xuICB3cml0ZTogYm9vbGVhbjtcbiAgc3RkaW5Db250ZW50czogVWludDhBcnJheSB8IG51bGw7XG4gIHN0ZGluUmVzb2x2ZURpcjogc3RyaW5nIHwgbnVsbDtcbiAgYWJzV29ya2luZ0Rpcjogc3RyaW5nO1xuICBub2RlUGF0aHM6IHN0cmluZ1tdO1xuICBjb250ZXh0OiBib29sZWFuO1xuICBwbHVnaW5zPzogQnVpbGRQbHVnaW5bXTtcbiAgbWFuZ2xlQ2FjaGU/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBmYWxzZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVSZXF1ZXN0IHtcbiAgY29tbWFuZDogXCJzZXJ2ZVwiO1xuICBrZXk6IG51bWJlcjtcbiAgb25SZXF1ZXN0OiBib29sZWFuO1xuICBwb3J0PzogbnVtYmVyO1xuICBob3N0Pzogc3RyaW5nO1xuICBzZXJ2ZWRpcj86IHN0cmluZztcbiAga2V5ZmlsZT86IHN0cmluZztcbiAgY2VydGZpbGU/OiBzdHJpbmc7XG4gIGZhbGxiYWNrPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlUmVzcG9uc2Uge1xuICBwb3J0OiBudW1iZXI7XG4gIGhvc3Q6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFBsdWdpbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgb25TdGFydDogYm9vbGVhbjtcbiAgb25FbmQ6IGJvb2xlYW47XG4gIG9uUmVzb2x2ZTogeyBpZDogbnVtYmVyOyBmaWx0ZXI6IHN0cmluZzsgbmFtZXNwYWNlOiBzdHJpbmcgfVtdO1xuICBvbkxvYWQ6IHsgaWQ6IG51bWJlcjsgZmlsdGVyOiBzdHJpbmc7IG5hbWVzcGFjZTogc3RyaW5nIH1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFJlc3BvbnNlIHtcbiAgZXJyb3JzOiB0eXBlcy5NZXNzYWdlW107XG4gIHdhcm5pbmdzOiB0eXBlcy5NZXNzYWdlW107XG4gIG91dHB1dEZpbGVzPzogQnVpbGRPdXRwdXRGaWxlW107XG4gIG1ldGFmaWxlPzogc3RyaW5nO1xuICBtYW5nbGVDYWNoZT86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IGZhbHNlPjtcbiAgd3JpdGVUb1N0ZG91dD86IFVpbnQ4QXJyYXk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25FbmRSZXF1ZXN0IGV4dGVuZHMgQnVpbGRSZXNwb25zZSB7XG4gIGNvbW1hbmQ6IFwib24tZW5kXCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25FbmRSZXNwb25zZSB7XG4gIGVycm9yczogdHlwZXMuTWVzc2FnZVtdO1xuICB3YXJuaW5nczogdHlwZXMuTWVzc2FnZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkT3V0cHV0RmlsZSB7XG4gIHBhdGg6IHN0cmluZztcbiAgY29udGVudHM6IFVpbnQ4QXJyYXk7XG4gIGhhc2g6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaW5nUmVxdWVzdCB7XG4gIGNvbW1hbmQ6IFwicGluZ1wiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYnVpbGRSZXF1ZXN0IHtcbiAgY29tbWFuZDogXCJyZWJ1aWxkXCI7XG4gIGtleTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYnVpbGRSZXNwb25zZSB7XG4gIGVycm9yczogdHlwZXMuTWVzc2FnZVtdO1xuICB3YXJuaW5nczogdHlwZXMuTWVzc2FnZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpc3Bvc2VSZXF1ZXN0IHtcbiAgY29tbWFuZDogXCJkaXNwb3NlXCI7XG4gIGtleTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbmNlbFJlcXVlc3Qge1xuICBjb21tYW5kOiBcImNhbmNlbFwiO1xuICBrZXk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXYXRjaFJlcXVlc3Qge1xuICBjb21tYW5kOiBcIndhdGNoXCI7XG4gIGtleTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9uU2VydmVSZXF1ZXN0IHtcbiAgY29tbWFuZDogXCJzZXJ2ZS1yZXF1ZXN0XCI7XG4gIGtleTogbnVtYmVyO1xuICBhcmdzOiB0eXBlcy5TZXJ2ZU9uUmVxdWVzdEFyZ3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNmb3JtUmVxdWVzdCB7XG4gIGNvbW1hbmQ6IFwidHJhbnNmb3JtXCI7XG4gIGZsYWdzOiBzdHJpbmdbXTtcbiAgaW5wdXQ6IFVpbnQ4QXJyYXk7XG4gIGlucHV0RlM6IGJvb2xlYW47XG4gIG1hbmdsZUNhY2hlPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgZmFsc2U+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZm9ybVJlc3BvbnNlIHtcbiAgZXJyb3JzOiB0eXBlcy5NZXNzYWdlW107XG4gIHdhcm5pbmdzOiB0eXBlcy5NZXNzYWdlW107XG5cbiAgY29kZTogc3RyaW5nO1xuICBjb2RlRlM6IGJvb2xlYW47XG5cbiAgbWFwOiBzdHJpbmc7XG4gIG1hcEZTOiBib29sZWFuO1xuXG4gIGxlZ2FsQ29tbWVudHM/OiBzdHJpbmc7XG4gIG1hbmdsZUNhY2hlPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgZmFsc2U+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdE1zZ3NSZXF1ZXN0IHtcbiAgY29tbWFuZDogXCJmb3JtYXQtbXNnc1wiO1xuICBtZXNzYWdlczogdHlwZXMuTWVzc2FnZVtdO1xuICBpc1dhcm5pbmc6IGJvb2xlYW47XG4gIGNvbG9yPzogYm9vbGVhbjtcbiAgdGVybWluYWxXaWR0aD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtYXRNc2dzUmVzcG9uc2Uge1xuICBtZXNzYWdlczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5hbHl6ZU1ldGFmaWxlUmVxdWVzdCB7XG4gIGNvbW1hbmQ6IFwiYW5hbHl6ZS1tZXRhZmlsZVwiO1xuICBtZXRhZmlsZTogc3RyaW5nO1xuICBjb2xvcj86IGJvb2xlYW47XG4gIHZlcmJvc2U/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFuYWx5emVNZXRhZmlsZVJlc3BvbnNlIHtcbiAgcmVzdWx0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25TdGFydFJlcXVlc3Qge1xuICBjb21tYW5kOiBcIm9uLXN0YXJ0XCI7XG4gIGtleTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9uU3RhcnRSZXNwb25zZSB7XG4gIGVycm9ycz86IHR5cGVzLlBhcnRpYWxNZXNzYWdlW107XG4gIHdhcm5pbmdzPzogdHlwZXMuUGFydGlhbE1lc3NhZ2VbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlUmVxdWVzdCB7XG4gIGNvbW1hbmQ6IFwicmVzb2x2ZVwiO1xuICBrZXk6IG51bWJlcjtcbiAgcGF0aDogc3RyaW5nO1xuICBwbHVnaW5OYW1lOiBzdHJpbmc7XG4gIGltcG9ydGVyPzogc3RyaW5nO1xuICBuYW1lc3BhY2U/OiBzdHJpbmc7XG4gIHJlc29sdmVEaXI/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG4gIHBsdWdpbkRhdGE/OiBudW1iZXI7XG4gIHdpdGg/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVSZXNwb25zZSB7XG4gIGVycm9yczogdHlwZXMuTWVzc2FnZVtdO1xuICB3YXJuaW5nczogdHlwZXMuTWVzc2FnZVtdO1xuXG4gIHBhdGg6IHN0cmluZztcbiAgZXh0ZXJuYWw6IGJvb2xlYW47XG4gIHNpZGVFZmZlY3RzOiBib29sZWFuO1xuICBuYW1lc3BhY2U6IHN0cmluZztcbiAgc3VmZml4OiBzdHJpbmc7XG4gIHBsdWdpbkRhdGE6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPblJlc29sdmVSZXF1ZXN0IHtcbiAgY29tbWFuZDogXCJvbi1yZXNvbHZlXCI7XG4gIGtleTogbnVtYmVyO1xuICBpZHM6IG51bWJlcltdO1xuICBwYXRoOiBzdHJpbmc7XG4gIGltcG9ydGVyOiBzdHJpbmc7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICByZXNvbHZlRGlyOiBzdHJpbmc7XG4gIGtpbmQ6IHR5cGVzLkltcG9ydEtpbmQ7XG4gIHBsdWdpbkRhdGE6IG51bWJlcjtcbiAgd2l0aDogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPblJlc29sdmVSZXNwb25zZSB7XG4gIGlkPzogbnVtYmVyO1xuICBwbHVnaW5OYW1lPzogc3RyaW5nO1xuXG4gIGVycm9ycz86IHR5cGVzLlBhcnRpYWxNZXNzYWdlW107XG4gIHdhcm5pbmdzPzogdHlwZXMuUGFydGlhbE1lc3NhZ2VbXTtcblxuICBwYXRoPzogc3RyaW5nO1xuICBleHRlcm5hbD86IGJvb2xlYW47XG4gIHNpZGVFZmZlY3RzPzogYm9vbGVhbjtcbiAgbmFtZXNwYWNlPzogc3RyaW5nO1xuICBzdWZmaXg/OiBzdHJpbmc7XG4gIHBsdWdpbkRhdGE/OiBudW1iZXI7XG5cbiAgd2F0Y2hGaWxlcz86IHN0cmluZ1tdO1xuICB3YXRjaERpcnM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbkxvYWRSZXF1ZXN0IHtcbiAgY29tbWFuZDogXCJvbi1sb2FkXCI7XG4gIGtleTogbnVtYmVyO1xuICBpZHM6IG51bWJlcltdO1xuICBwYXRoOiBzdHJpbmc7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICBzdWZmaXg6IHN0cmluZztcbiAgcGx1Z2luRGF0YTogbnVtYmVyO1xuICB3aXRoOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9uTG9hZFJlc3BvbnNlIHtcbiAgaWQ/OiBudW1iZXI7XG4gIHBsdWdpbk5hbWU/OiBzdHJpbmc7XG5cbiAgZXJyb3JzPzogdHlwZXMuUGFydGlhbE1lc3NhZ2VbXTtcbiAgd2FybmluZ3M/OiB0eXBlcy5QYXJ0aWFsTWVzc2FnZVtdO1xuXG4gIGNvbnRlbnRzPzogVWludDhBcnJheTtcbiAgcmVzb2x2ZURpcj86IHN0cmluZztcbiAgbG9hZGVyPzogc3RyaW5nO1xuICBwbHVnaW5EYXRhPzogbnVtYmVyO1xuXG4gIHdhdGNoRmlsZXM/OiBzdHJpbmdbXTtcbiAgd2F0Y2hEaXJzPzogc3RyaW5nW107XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2V0IHtcbiAgaWQ6IG51bWJlcjtcbiAgaXNSZXF1ZXN0OiBib29sZWFuO1xuICB2YWx1ZTogVmFsdWU7XG59XG5cbmV4cG9ydCB0eXBlIFZhbHVlID1cbiAgfCBudWxsXG4gIHwgYm9vbGVhblxuICB8IG51bWJlclxuICB8IHN0cmluZ1xuICB8IFVpbnQ4QXJyYXlcbiAgfCBWYWx1ZVtdXG4gIHwgeyBba2V5OiBzdHJpbmddOiBWYWx1ZSB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlUGFja2V0KHBhY2tldDogUGFja2V0KTogVWludDhBcnJheSB7XG4gIGxldCB2aXNpdCA9ICh2YWx1ZTogVmFsdWUpID0+IHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgIGJiLndyaXRlOCgwKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIGJiLndyaXRlOCgxKTtcbiAgICAgIGJiLndyaXRlOCgrdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICBiYi53cml0ZTgoMik7XG4gICAgICBiYi53cml0ZTMyKHZhbHVlIHwgMCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGJiLndyaXRlOCgzKTtcbiAgICAgIGJiLndyaXRlKGVuY29kZVVURjgodmFsdWUpKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuICAgICAgYmIud3JpdGU4KDQpO1xuICAgICAgYmIud3JpdGUodmFsdWUpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgYmIud3JpdGU4KDUpO1xuICAgICAgYmIud3JpdGUzMih2YWx1ZS5sZW5ndGgpO1xuICAgICAgZm9yIChsZXQgaXRlbSBvZiB2YWx1ZSkge1xuICAgICAgICB2aXNpdChpdGVtKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gICAgICBiYi53cml0ZTgoNik7XG4gICAgICBiYi53cml0ZTMyKGtleXMubGVuZ3RoKTtcbiAgICAgIGZvciAobGV0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGJiLndyaXRlKGVuY29kZVVURjgoa2V5KSk7XG4gICAgICAgIHZpc2l0KHZhbHVlW2tleV0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBsZXQgYmIgPSBuZXcgQnl0ZUJ1ZmZlcigpO1xuICBiYi53cml0ZTMyKDApOyAvLyBSZXNlcnZlIHNwYWNlIGZvciB0aGUgbGVuZ3RoXG4gIGJiLndyaXRlMzIoKHBhY2tldC5pZCA8PCAxKSB8ICshcGFja2V0LmlzUmVxdWVzdCk7XG4gIHZpc2l0KHBhY2tldC52YWx1ZSk7XG4gIHdyaXRlVUludDMyTEUoYmIuYnVmLCBiYi5sZW4gLSA0LCAwKTsgLy8gUGF0Y2ggdGhlIGxlbmd0aCBpblxuICByZXR1cm4gYmIuYnVmLnN1YmFycmF5KDAsIGJiLmxlbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVQYWNrZXQoYnl0ZXM6IFVpbnQ4QXJyYXkpOiBQYWNrZXQge1xuICBsZXQgdmlzaXQgPSAoKTogVmFsdWUgPT4ge1xuICAgIHN3aXRjaCAoYmIucmVhZDgoKSkge1xuICAgICAgY2FzZSAwOiAvLyBudWxsXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgY2FzZSAxOiAvLyBib29sZWFuXG4gICAgICAgIHJldHVybiAhIWJiLnJlYWQ4KCk7XG4gICAgICBjYXNlIDI6IC8vIG51bWJlclxuICAgICAgICByZXR1cm4gYmIucmVhZDMyKCk7XG4gICAgICBjYXNlIDM6IC8vIHN0cmluZ1xuICAgICAgICByZXR1cm4gZGVjb2RlVVRGOChiYi5yZWFkKCkpO1xuICAgICAgY2FzZSA0OiAvLyBVaW50OEFycmF5XG4gICAgICAgIHJldHVybiBiYi5yZWFkKCk7XG4gICAgICBjYXNlIDU6IHsgLy8gVmFsdWVbXVxuICAgICAgICBsZXQgY291bnQgPSBiYi5yZWFkMzIoKTtcbiAgICAgICAgbGV0IHZhbHVlOiBWYWx1ZVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgIHZhbHVlLnB1c2godmlzaXQoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgY2FzZSA2OiB7IC8vIHsgW2tleTogc3RyaW5nXTogVmFsdWUgfVxuICAgICAgICBsZXQgY291bnQgPSBiYi5yZWFkMzIoKTtcbiAgICAgICAgbGV0IHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IFZhbHVlIH0gPSB7fTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgdmFsdWVbZGVjb2RlVVRGOChiYi5yZWFkKCkpXSA9IHZpc2l0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBwYWNrZXRcIik7XG4gICAgfVxuICB9O1xuXG4gIGxldCBiYiA9IG5ldyBCeXRlQnVmZmVyKGJ5dGVzKTtcbiAgbGV0IGlkID0gYmIucmVhZDMyKCk7XG4gIGxldCBpc1JlcXVlc3QgPSAoaWQgJiAxKSA9PT0gMDtcbiAgaWQgPj4+PSAxO1xuICBsZXQgdmFsdWUgPSB2aXNpdCgpO1xuICBpZiAoYmIucHRyICE9PSBieXRlcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHBhY2tldFwiKTtcbiAgfVxuICByZXR1cm4geyBpZCwgaXNSZXF1ZXN0LCB2YWx1ZSB9O1xufVxuXG5jbGFzcyBCeXRlQnVmZmVyIHtcbiAgbGVuID0gMDtcbiAgcHRyID0gMDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgYnVmID0gbmV3IFVpbnQ4QXJyYXkoMTAyNCkpIHtcbiAgfVxuXG4gIHByaXZhdGUgX3dyaXRlKGRlbHRhOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLmxlbiArIGRlbHRhID4gdGhpcy5idWYubGVuZ3RoKSB7XG4gICAgICBsZXQgY2xvbmUgPSBuZXcgVWludDhBcnJheSgodGhpcy5sZW4gKyBkZWx0YSkgKiAyKTtcbiAgICAgIGNsb25lLnNldCh0aGlzLmJ1Zik7XG4gICAgICB0aGlzLmJ1ZiA9IGNsb25lO1xuICAgIH1cbiAgICB0aGlzLmxlbiArPSBkZWx0YTtcbiAgICByZXR1cm4gdGhpcy5sZW4gLSBkZWx0YTtcbiAgfVxuXG4gIHdyaXRlOCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IG9mZnNldCA9IHRoaXMuX3dyaXRlKDEpO1xuICAgIHRoaXMuYnVmW29mZnNldF0gPSB2YWx1ZTtcbiAgfVxuXG4gIHdyaXRlMzIodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIGxldCBvZmZzZXQgPSB0aGlzLl93cml0ZSg0KTtcbiAgICB3cml0ZVVJbnQzMkxFKHRoaXMuYnVmLCB2YWx1ZSwgb2Zmc2V0KTtcbiAgfVxuXG4gIHdyaXRlKGJ5dGVzOiBVaW50OEFycmF5KTogdm9pZCB7XG4gICAgbGV0IG9mZnNldCA9IHRoaXMuX3dyaXRlKDQgKyBieXRlcy5sZW5ndGgpO1xuICAgIHdyaXRlVUludDMyTEUodGhpcy5idWYsIGJ5dGVzLmxlbmd0aCwgb2Zmc2V0KTtcbiAgICB0aGlzLmJ1Zi5zZXQoYnl0ZXMsIG9mZnNldCArIDQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVhZChkZWx0YTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5wdHIgKyBkZWx0YSA+IHRoaXMuYnVmLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBwYWNrZXRcIik7XG4gICAgfVxuICAgIHRoaXMucHRyICs9IGRlbHRhO1xuICAgIHJldHVybiB0aGlzLnB0ciAtIGRlbHRhO1xuICB9XG5cbiAgcmVhZDgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5idWZbdGhpcy5fcmVhZCgxKV07XG4gIH1cblxuICByZWFkMzIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcmVhZFVJbnQzMkxFKHRoaXMuYnVmLCB0aGlzLl9yZWFkKDQpKTtcbiAgfVxuXG4gIHJlYWQoKTogVWludDhBcnJheSB7XG4gICAgbGV0IGxlbmd0aCA9IHRoaXMucmVhZDMyKCk7XG4gICAgbGV0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKTtcbiAgICBsZXQgcHRyID0gdGhpcy5fcmVhZChieXRlcy5sZW5ndGgpO1xuICAgIGJ5dGVzLnNldCh0aGlzLmJ1Zi5zdWJhcnJheShwdHIsIHB0ciArIGxlbmd0aCkpO1xuICAgIHJldHVybiBieXRlcztcbiAgfVxufVxuXG5leHBvcnQgbGV0IGVuY29kZVVURjg6ICh0ZXh0OiBzdHJpbmcpID0+IFVpbnQ4QXJyYXk7XG5leHBvcnQgbGV0IGRlY29kZVVURjg6IChieXRlczogVWludDhBcnJheSkgPT4gc3RyaW5nO1xubGV0IGVuY29kZUludmFyaWFudDogc3RyaW5nO1xuXG4vLyBGb3IgdGhlIGJyb3dzZXIgYW5kIG5vZGUgMTIueFxuaWYgKHR5cGVvZiBUZXh0RW5jb2RlciAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgVGV4dERlY29kZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgbGV0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgbGV0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcbiAgZW5jb2RlVVRGOCA9ICh0ZXh0KSA9PiBlbmNvZGVyLmVuY29kZSh0ZXh0KTtcbiAgZGVjb2RlVVRGOCA9IChieXRlcykgPT4gZGVjb2Rlci5kZWNvZGUoYnl0ZXMpO1xuICBlbmNvZGVJbnZhcmlhbnQgPSAnbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKFwiXCIpJztcbn0gZWxzZSB7XG4gIHRocm93IG5ldyBFcnJvcihcIk5vIFVURi04IGNvZGVjIGZvdW5kXCIpO1xufVxuXG4vLyBUaHJvdyBhbiBlcnJvciBlYXJseSBpZiB0aGlzIGlzbid0IHRydWUuIFRoZSB0ZXN0IGZyYW1ld29yayBjYWxsZWQgXCJKZXN0XCJcbi8vIGhhcyBzb21lIGJ1Z3MgcmVnYXJkaW5nIHRoaXMgZWRnZSBjYXNlLCBhbmQgbGV0dGluZyBlc2J1aWxkIHByb2NlZWQgZnVydGhlclxuLy8gbGVhZHMgdG8gY29uZnVzaW5nIGVycm9ycyB0aGF0IG1ha2UgaXQgc2VlbSBsaWtlIGVzYnVpbGQgaXRzZWxmIGhhcyBhIGJ1Zy5cbmlmICghKGVuY29kZVVURjgoXCJcIikgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYEludmFyaWFudCB2aW9sYXRpb246IFwiJHtlbmNvZGVJbnZhcmlhbnR9IGluc3RhbmNlb2YgVWludDhBcnJheVwiIGlzIGluY29ycmVjdGx5IGZhbHNlXG5cblRoaXMgaW5kaWNhdGVzIHRoYXQgeW91ciBKYXZhU2NyaXB0IGVudmlyb25tZW50IGlzIGJyb2tlbi4gWW91IGNhbm5vdCB1c2VcbmVzYnVpbGQgaW4gdGhpcyBlbnZpcm9ubWVudCBiZWNhdXNlIGVzYnVpbGQgcmVsaWVzIG9uIHRoaXMgaW52YXJpYW50LiBUaGlzXG5pcyBub3QgYSBwcm9ibGVtIHdpdGggZXNidWlsZC4gWW91IG5lZWQgdG8gZml4IHlvdXIgZW52aXJvbm1lbnQgaW5zdGVhZC5cbmAsXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVUludDMyTEUoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBidWZmZXJbb2Zmc2V0KytdIHxcbiAgICAoYnVmZmVyW29mZnNldCsrXSA8PCA4KSB8XG4gICAgKGJ1ZmZlcltvZmZzZXQrK10gPDwgMTYpIHxcbiAgICAoYnVmZmVyW29mZnNldCsrXSA8PCAyNCk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlVUludDMyTEUoXG4gIGJ1ZmZlcjogVWludDhBcnJheSxcbiAgdmFsdWU6IG51bWJlcixcbiAgb2Zmc2V0OiBudW1iZXIsXG4pOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldCsrXSA9IHZhbHVlO1xuICBidWZmZXJbb2Zmc2V0KytdID0gdmFsdWUgPj4gODtcbiAgYnVmZmVyW29mZnNldCsrXSA9IHZhbHVlID4+IDE2O1xuICBidWZmZXJbb2Zmc2V0KytdID0gdmFsdWUgPj4gMjQ7XG59XG4iLCAiZXhwb3J0IGNvbnN0IEVTQlVJTERfVkVSU0lPTiA9IFwiMC4yMS41XCI7XG4iLCAiLy8gZGVuby1saW50LWlnbm9yZS1maWxlIHByZWZlci1jb25zdCBiYW4tdHlwZXMgbm8tZXhwbGljaXQtYW55IG5vLWVtcHR5IG5vLXVudXNlZC12YXJzXG4vKiogZXNidWlsZC13YXNtQDAuMjEuNVxuICpcbiAqIE1JVCBMaWNlbnNlXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIEV2YW4gV2FsbGFjZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4gKi9cbi8vIFRoaXMgY29kZSBpcyBwb3J0ZWQgZnJvbSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZXZhbncvZXNidWlsZC92MC4yMS41L2xpYi9zaGFyZWQvY29tbW9uLnRzIGFuZCBtb2RpZmllZCBiZWxvd1xuLy8gLSAkIGRlbm8gZm10XG4vLyAtIGxvYWQgdGhlIHdvcmtlciBjb2RlIGZyb20gVVJMIGluc3RlYWQgb2YgYW4gZW1iZWRkZWQgY29kZVxuLy8gLSByZW1vdmUgZnVuY3Rpb25zIG5vdCB3b3JrZWQgaW4gYnJvd3NlclxuLy8gLSBhZGQgdW5kZXJzY29yZSB0byB1bnVzZWQgdmFyaWFibGVzXG4vLyAtIHJlbW92ZSB1bnVzZWQgZnVuY3Rpb25zXG5cbmltcG9ydCB0eXBlICogYXMgdHlwZXMgZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCAqIGFzIHByb3RvY29sIGZyb20gXCIuL3N0ZGlvX3Byb3RvY29sLnRzXCI7XG5pbXBvcnQgeyBFU0JVSUxEX1ZFUlNJT04gfSBmcm9tIFwiLi92ZXJzaW9uLnRzXCI7XG5cbmNvbnN0IHF1b3RlOiAoeDogc3RyaW5nKSA9PiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeTtcblxuY29uc3QgYnVpbGRMb2dMZXZlbERlZmF1bHQgPSBcIndhcm5pbmdcIjtcbmNvbnN0IHRyYW5zZm9ybUxvZ0xldmVsRGVmYXVsdCA9IFwic2lsZW50XCI7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVGFyZ2V0KHRhcmdldDogc3RyaW5nKTogc3RyaW5nIHtcbiAgdmFsaWRhdGVTdHJpbmdWYWx1ZSh0YXJnZXQsIFwidGFyZ2V0XCIpO1xuICBpZiAodGFyZ2V0LmluZGV4T2YoXCIsXCIpID49IDApIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0YXJnZXQ6ICR7dGFyZ2V0fWApO1xuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5sZXQgY2FuQmVBbnl0aGluZyA9ICgpID0+IG51bGw7XG5cbmxldCBtdXN0QmVCb29sZWFuID0gKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiID8gbnVsbCA6IFwiYSBib29sZWFuXCI7XG5cbmxldCBtdXN0QmVTdHJpbmcgPSAodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGwgPT5cbiAgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gbnVsbCA6IFwiYSBzdHJpbmdcIjtcblxubGV0IG11c3RCZVJlZ0V4cCA9ICh2YWx1ZTogUmVnRXhwIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCA9PlxuICB2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCA/IG51bGwgOiBcImEgUmVnRXhwIG9iamVjdFwiO1xuXG5sZXQgbXVzdEJlSW50ZWdlciA9ICh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiYgdmFsdWUgPT09ICh2YWx1ZSB8IDApID8gbnVsbCA6IFwiYW4gaW50ZWdlclwiO1xuXG5sZXQgbXVzdEJlRnVuY3Rpb24gPSAodmFsdWU6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIiA/IG51bGwgOiBcImEgZnVuY3Rpb25cIjtcblxubGV0IG11c3RCZUFycmF5ID0gPFQ+KHZhbHVlOiBUW10gfCB1bmRlZmluZWQpOiBzdHJpbmcgfCBudWxsID0+XG4gIEFycmF5LmlzQXJyYXkodmFsdWUpID8gbnVsbCA6IFwiYW4gYXJyYXlcIjtcblxubGV0IG11c3RCZU9iamVjdCA9ICh2YWx1ZTogT2JqZWN0IHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgPyBudWxsXG4gICAgOiBcImFuIG9iamVjdFwiO1xuXG5sZXQgbXVzdEJlRW50cnlQb2ludHMgPSAoXG4gIHZhbHVlOiB0eXBlcy5CdWlsZE9wdGlvbnNbXCJlbnRyeVBvaW50c1wiXSxcbik6IHN0cmluZyB8IG51bGwgPT5cbiAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsID8gbnVsbCA6IFwiYW4gYXJyYXkgb3IgYW4gb2JqZWN0XCI7XG5cbmxldCBtdXN0QmVXZWJBc3NlbWJseU1vZHVsZSA9IChcbiAgdmFsdWU6IFdlYkFzc2VtYmx5Lk1vZHVsZSB8IHVuZGVmaW5lZCxcbik6IHN0cmluZyB8IG51bGwgPT5cbiAgdmFsdWUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5Nb2R1bGUgPyBudWxsIDogXCJhIFdlYkFzc2VtYmx5Lk1vZHVsZVwiO1xuXG5sZXQgbXVzdEJlT2JqZWN0T3JOdWxsID0gKHZhbHVlOiBPYmplY3QgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgPyBudWxsXG4gICAgOiBcImFuIG9iamVjdCBvciBudWxsXCI7XG5cbmxldCBtdXN0QmVTdHJpbmdPckJvb2xlYW4gPSAoXG4gIHZhbHVlOiBzdHJpbmcgfCBib29sZWFuIHwgdW5kZWZpbmVkLFxuKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIlxuICAgID8gbnVsbFxuICAgIDogXCJhIHN0cmluZyBvciBhIGJvb2xlYW5cIjtcblxubGV0IG11c3RCZVN0cmluZ09yT2JqZWN0ID0gKFxuICB2YWx1ZTogc3RyaW5nIHwgT2JqZWN0IHwgdW5kZWZpbmVkLFxuKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHxcbiAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgPyBudWxsXG4gICAgOiBcImEgc3RyaW5nIG9yIGFuIG9iamVjdFwiO1xuXG5sZXQgbXVzdEJlU3RyaW5nT3JBcnJheSA9IChcbiAgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkLFxuKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICA/IG51bGxcbiAgICA6IFwiYSBzdHJpbmcgb3IgYW4gYXJyYXlcIjtcblxubGV0IG11c3RCZVN0cmluZ09yVWludDhBcnJheSA9IChcbiAgdmFsdWU6IHN0cmluZyB8IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQsXG4pOiBzdHJpbmcgfCBudWxsID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCB2YWx1ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXlcbiAgICA/IG51bGxcbiAgICA6IFwiYSBzdHJpbmcgb3IgYSBVaW50OEFycmF5XCI7XG5cbmxldCBtdXN0QmVTdHJpbmdPclVSTCA9ICh2YWx1ZTogc3RyaW5nIHwgVVJMIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBVUkxcbiAgICA/IG51bGxcbiAgICA6IFwiYSBzdHJpbmcgb3IgYSBVUkxcIjtcblxudHlwZSBPcHRpb25LZXlzID0geyBba2V5OiBzdHJpbmddOiBib29sZWFuIH07XG5cbmZ1bmN0aW9uIGdldEZsYWc8VCwgSyBleHRlbmRzIChrZXlvZiBUICYgc3RyaW5nKT4oXG4gIG9iamVjdDogVCxcbiAga2V5czogT3B0aW9uS2V5cyxcbiAga2V5OiBLLFxuICBtdXN0QmVGbjogKHZhbHVlOiBUW0tdKSA9PiBzdHJpbmcgfCBudWxsLFxuKTogVFtLXSB8IHVuZGVmaW5lZCB7XG4gIGxldCB2YWx1ZSA9IG9iamVjdFtrZXldO1xuICBrZXlzW2tleSArIFwiXCJdID0gdHJ1ZTtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gIGxldCBtdXN0QmUgPSBtdXN0QmVGbih2YWx1ZSk7XG4gIGlmIChtdXN0QmUgIT09IG51bGwpIHRocm93IG5ldyBFcnJvcihgJHtxdW90ZShrZXkpfSBtdXN0IGJlICR7bXVzdEJlfWApO1xuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRm9ySW52YWxpZEZsYWdzKFxuICBvYmplY3Q6IE9iamVjdCxcbiAga2V5czogT3B0aW9uS2V5cyxcbiAgd2hlcmU6IHN0cmluZyxcbik6IHZvaWQge1xuICBmb3IgKGxldCBrZXkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKCEoa2V5IGluIGtleXMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgb3B0aW9uICR7d2hlcmV9OiAke3F1b3RlKGtleSl9YCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUluaXRpYWxpemVPcHRpb25zKFxuICBvcHRpb25zOiB0eXBlcy5Jbml0aWFsaXplT3B0aW9ucyxcbik6IHR5cGVzLkluaXRpYWxpemVPcHRpb25zIHtcbiAgbGV0IGtleXM6IE9wdGlvbktleXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBsZXQgd2FzbU1vZHVsZSA9IGdldEZsYWcoXG4gICAgb3B0aW9ucyxcbiAgICBrZXlzLFxuICAgIFwid2FzbU1vZHVsZVwiLFxuICAgIG11c3RCZVdlYkFzc2VtYmx5TW9kdWxlLFxuICApO1xuICBsZXQgd29ya2VyVVJMID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIndvcmtlclVSTFwiLCBtdXN0QmVTdHJpbmdPclVSTCkhO1xuICBjaGVja0ZvckludmFsaWRGbGFncyhvcHRpb25zLCBrZXlzLCBcImluIGluaXRpYWxpemUoKSBjYWxsXCIpO1xuICByZXR1cm4ge1xuICAgIHdhc21Nb2R1bGUsXG4gICAgd29ya2VyVVJMLFxuICB9O1xufVxuXG50eXBlIE1hbmdsZUNhY2hlID0gUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgZmFsc2U+O1xuXG5mdW5jdGlvbiB2YWxpZGF0ZU1hbmdsZUNhY2hlKFxuICBtYW5nbGVDYWNoZTogTWFuZ2xlQ2FjaGUgfCB1bmRlZmluZWQsXG4pOiBNYW5nbGVDYWNoZSB8IHVuZGVmaW5lZCB7XG4gIGxldCB2YWxpZGF0ZWQ6IE1hbmdsZUNhY2hlIHwgdW5kZWZpbmVkO1xuICBpZiAobWFuZ2xlQ2FjaGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhbGlkYXRlZCA9IE9iamVjdC5jcmVhdGUobnVsbCkgYXMgTWFuZ2xlQ2FjaGU7XG4gICAgZm9yIChsZXQga2V5IGluIG1hbmdsZUNhY2hlKSB7XG4gICAgICBsZXQgdmFsdWUgPSBtYW5nbGVDYWNoZVtrZXldO1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCB2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgdmFsaWRhdGVkW2tleV0gPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRXhwZWN0ZWQgJHtcbiAgICAgICAgICAgIHF1b3RlKGtleSlcbiAgICAgICAgICB9IGluIG1hbmdsZSBjYWNoZSB0byBtYXAgdG8gZWl0aGVyIGEgc3RyaW5nIG9yIGZhbHNlYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhbGlkYXRlZDtcbn1cblxudHlwZSBDb21tb25PcHRpb25zID0gdHlwZXMuQnVpbGRPcHRpb25zIHwgdHlwZXMuVHJhbnNmb3JtT3B0aW9ucztcblxuZnVuY3Rpb24gcHVzaExvZ0ZsYWdzKFxuICBmbGFnczogc3RyaW5nW10sXG4gIG9wdGlvbnM6IENvbW1vbk9wdGlvbnMsXG4gIGtleXM6IE9wdGlvbktleXMsXG4gIGlzVFRZOiBib29sZWFuLFxuICBsb2dMZXZlbERlZmF1bHQ6IHR5cGVzLkxvZ0xldmVsLFxuKTogdm9pZCB7XG4gIGxldCBjb2xvciA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJjb2xvclwiLCBtdXN0QmVCb29sZWFuKTtcbiAgbGV0IGxvZ0xldmVsID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImxvZ0xldmVsXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBsb2dMaW1pdCA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJsb2dMaW1pdFwiLCBtdXN0QmVJbnRlZ2VyKTtcblxuICBpZiAoY29sb3IgIT09IHZvaWQgMCkgZmxhZ3MucHVzaChgLS1jb2xvcj0ke2NvbG9yfWApO1xuICBlbHNlIGlmIChpc1RUWSkgZmxhZ3MucHVzaChgLS1jb2xvcj10cnVlYCk7IC8vIFRoaXMgaXMgbmVlZGVkIHRvIGZpeCBcImV4ZWNGaWxlU3luY1wiIHdoaWNoIGJ1ZmZlcnMgc3RkZXJyXG4gIGZsYWdzLnB1c2goYC0tbG9nLWxldmVsPSR7bG9nTGV2ZWwgfHwgbG9nTGV2ZWxEZWZhdWx0fWApO1xuICBmbGFncy5wdXNoKGAtLWxvZy1saW1pdD0ke2xvZ0xpbWl0IHx8IDB9YCk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RyaW5nVmFsdWUoXG4gIHZhbHVlOiB1bmtub3duLFxuICB3aGF0OiBzdHJpbmcsXG4gIGtleT86IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgRXhwZWN0ZWQgdmFsdWUgZm9yICR7d2hhdH0ke1xuICAgICAgICBrZXkgIT09IHZvaWQgMCA/IFwiIFwiICsgcXVvdGUoa2V5KSA6IFwiXCJcbiAgICAgIH0gdG8gYmUgYSBzdHJpbmcsIGdvdCAke3R5cGVvZiB2YWx1ZX0gaW5zdGVhZGAsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIHB1c2hDb21tb25GbGFncyhcbiAgZmxhZ3M6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBDb21tb25PcHRpb25zLFxuICBrZXlzOiBPcHRpb25LZXlzLFxuKTogdm9pZCB7XG4gIGxldCBsZWdhbENvbW1lbnRzID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImxlZ2FsQ29tbWVudHNcIiwgbXVzdEJlU3RyaW5nKTtcbiAgbGV0IHNvdXJjZVJvb3QgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwic291cmNlUm9vdFwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgc291cmNlc0NvbnRlbnQgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwic291cmNlc0NvbnRlbnRcIiwgbXVzdEJlQm9vbGVhbik7XG4gIGxldCB0YXJnZXQgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwidGFyZ2V0XCIsIG11c3RCZVN0cmluZ09yQXJyYXkpO1xuICBsZXQgZm9ybWF0ID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImZvcm1hdFwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgZ2xvYmFsTmFtZSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJnbG9iYWxOYW1lXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBtYW5nbGVQcm9wcyA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJtYW5nbGVQcm9wc1wiLCBtdXN0QmVSZWdFeHApO1xuICBsZXQgcmVzZXJ2ZVByb3BzID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInJlc2VydmVQcm9wc1wiLCBtdXN0QmVSZWdFeHApO1xuICBsZXQgbWFuZ2xlUXVvdGVkID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIm1hbmdsZVF1b3RlZFwiLCBtdXN0QmVCb29sZWFuKTtcbiAgbGV0IG1pbmlmeSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJtaW5pZnlcIiwgbXVzdEJlQm9vbGVhbik7XG4gIGxldCBtaW5pZnlTeW50YXggPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwibWluaWZ5U3ludGF4XCIsIG11c3RCZUJvb2xlYW4pO1xuICBsZXQgbWluaWZ5V2hpdGVzcGFjZSA9IGdldEZsYWcoXG4gICAgb3B0aW9ucyxcbiAgICBrZXlzLFxuICAgIFwibWluaWZ5V2hpdGVzcGFjZVwiLFxuICAgIG11c3RCZUJvb2xlYW4sXG4gICk7XG4gIGxldCBtaW5pZnlJZGVudGlmaWVycyA9IGdldEZsYWcoXG4gICAgb3B0aW9ucyxcbiAgICBrZXlzLFxuICAgIFwibWluaWZ5SWRlbnRpZmllcnNcIixcbiAgICBtdXN0QmVCb29sZWFuLFxuICApO1xuICBsZXQgbGluZUxpbWl0ID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImxpbmVMaW1pdFwiLCBtdXN0QmVJbnRlZ2VyKTtcbiAgbGV0IGRyb3AgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwiZHJvcFwiLCBtdXN0QmVBcnJheSk7XG4gIGxldCBkcm9wTGFiZWxzID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImRyb3BMYWJlbHNcIiwgbXVzdEJlQXJyYXkpO1xuICBsZXQgY2hhcnNldCA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJjaGFyc2V0XCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCB0cmVlU2hha2luZyA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJ0cmVlU2hha2luZ1wiLCBtdXN0QmVCb29sZWFuKTtcbiAgbGV0IGlnbm9yZUFubm90YXRpb25zID0gZ2V0RmxhZyhcbiAgICBvcHRpb25zLFxuICAgIGtleXMsXG4gICAgXCJpZ25vcmVBbm5vdGF0aW9uc1wiLFxuICAgIG11c3RCZUJvb2xlYW4sXG4gICk7XG4gIGxldCBqc3ggPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwianN4XCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBqc3hGYWN0b3J5ID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImpzeEZhY3RvcnlcIiwgbXVzdEJlU3RyaW5nKTtcbiAgbGV0IGpzeEZyYWdtZW50ID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImpzeEZyYWdtZW50XCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBqc3hJbXBvcnRTb3VyY2UgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwianN4SW1wb3J0U291cmNlXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBqc3hEZXYgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwianN4RGV2XCIsIG11c3RCZUJvb2xlYW4pO1xuICBsZXQganN4U2lkZUVmZmVjdHMgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwianN4U2lkZUVmZmVjdHNcIiwgbXVzdEJlQm9vbGVhbik7XG4gIGxldCBkZWZpbmUgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwiZGVmaW5lXCIsIG11c3RCZU9iamVjdCk7XG4gIGxldCBsb2dPdmVycmlkZSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJsb2dPdmVycmlkZVwiLCBtdXN0QmVPYmplY3QpO1xuICBsZXQgc3VwcG9ydGVkID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInN1cHBvcnRlZFwiLCBtdXN0QmVPYmplY3QpO1xuICBsZXQgcHVyZSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJwdXJlXCIsIG11c3RCZUFycmF5KTtcbiAgbGV0IGtlZXBOYW1lcyA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJrZWVwTmFtZXNcIiwgbXVzdEJlQm9vbGVhbik7XG4gIGxldCBwbGF0Zm9ybSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJwbGF0Zm9ybVwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgdHNjb25maWdSYXcgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwidHNjb25maWdSYXdcIiwgbXVzdEJlU3RyaW5nT3JPYmplY3QpO1xuXG4gIGlmIChsZWdhbENvbW1lbnRzKSBmbGFncy5wdXNoKGAtLWxlZ2FsLWNvbW1lbnRzPSR7bGVnYWxDb21tZW50c31gKTtcbiAgaWYgKHNvdXJjZVJvb3QgIT09IHZvaWQgMCkgZmxhZ3MucHVzaChgLS1zb3VyY2Utcm9vdD0ke3NvdXJjZVJvb3R9YCk7XG4gIGlmIChzb3VyY2VzQ29udGVudCAhPT0gdm9pZCAwKSB7XG4gICAgZmxhZ3MucHVzaChgLS1zb3VyY2VzLWNvbnRlbnQ9JHtzb3VyY2VzQ29udGVudH1gKTtcbiAgfVxuICBpZiAodGFyZ2V0KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgICAgZmxhZ3MucHVzaChcbiAgICAgICAgYC0tdGFyZ2V0PSR7QXJyYXkuZnJvbSh0YXJnZXQpLm1hcCh2YWxpZGF0ZVRhcmdldCkuam9pbihcIixcIil9YCxcbiAgICAgICk7XG4gICAgfSBlbHNlIGZsYWdzLnB1c2goYC0tdGFyZ2V0PSR7dmFsaWRhdGVUYXJnZXQodGFyZ2V0KX1gKTtcbiAgfVxuICBpZiAoZm9ybWF0KSBmbGFncy5wdXNoKGAtLWZvcm1hdD0ke2Zvcm1hdH1gKTtcbiAgaWYgKGdsb2JhbE5hbWUpIGZsYWdzLnB1c2goYC0tZ2xvYmFsLW5hbWU9JHtnbG9iYWxOYW1lfWApO1xuICBpZiAocGxhdGZvcm0pIGZsYWdzLnB1c2goYC0tcGxhdGZvcm09JHtwbGF0Zm9ybX1gKTtcbiAgaWYgKHRzY29uZmlnUmF3KSB7XG4gICAgZmxhZ3MucHVzaChcbiAgICAgIGAtLXRzY29uZmlnLXJhdz0ke1xuICAgICAgICB0eXBlb2YgdHNjb25maWdSYXcgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICA/IHRzY29uZmlnUmF3XG4gICAgICAgICAgOiBKU09OLnN0cmluZ2lmeSh0c2NvbmZpZ1JhdylcbiAgICAgIH1gLFxuICAgICk7XG4gIH1cblxuICBpZiAobWluaWZ5KSBmbGFncy5wdXNoKFwiLS1taW5pZnlcIik7XG4gIGlmIChtaW5pZnlTeW50YXgpIGZsYWdzLnB1c2goXCItLW1pbmlmeS1zeW50YXhcIik7XG4gIGlmIChtaW5pZnlXaGl0ZXNwYWNlKSBmbGFncy5wdXNoKFwiLS1taW5pZnktd2hpdGVzcGFjZVwiKTtcbiAgaWYgKG1pbmlmeUlkZW50aWZpZXJzKSBmbGFncy5wdXNoKFwiLS1taW5pZnktaWRlbnRpZmllcnNcIik7XG4gIGlmIChsaW5lTGltaXQpIGZsYWdzLnB1c2goYC0tbGluZS1saW1pdD0ke2xpbmVMaW1pdH1gKTtcbiAgaWYgKGNoYXJzZXQpIGZsYWdzLnB1c2goYC0tY2hhcnNldD0ke2NoYXJzZXR9YCk7XG4gIGlmICh0cmVlU2hha2luZyAhPT0gdm9pZCAwKSBmbGFncy5wdXNoKGAtLXRyZWUtc2hha2luZz0ke3RyZWVTaGFraW5nfWApO1xuICBpZiAoaWdub3JlQW5ub3RhdGlvbnMpIGZsYWdzLnB1c2goYC0taWdub3JlLWFubm90YXRpb25zYCk7XG4gIGlmIChkcm9wKSB7XG4gICAgZm9yIChsZXQgd2hhdCBvZiBkcm9wKSB7XG4gICAgICBmbGFncy5wdXNoKGAtLWRyb3A6JHt2YWxpZGF0ZVN0cmluZ1ZhbHVlKHdoYXQsIFwiZHJvcFwiKX1gKTtcbiAgICB9XG4gIH1cbiAgaWYgKGRyb3BMYWJlbHMpIHtcbiAgICBmbGFncy5wdXNoKFxuICAgICAgYC0tZHJvcC1sYWJlbHM9JHtcbiAgICAgICAgQXJyYXkuZnJvbShkcm9wTGFiZWxzKS5tYXAoKHdoYXQpID0+XG4gICAgICAgICAgdmFsaWRhdGVTdHJpbmdWYWx1ZSh3aGF0LCBcImRyb3BMYWJlbHNcIilcbiAgICAgICAgKS5qb2luKFwiLFwiKVxuICAgICAgfWAsXG4gICAgKTtcbiAgfVxuICBpZiAobWFuZ2xlUHJvcHMpIGZsYWdzLnB1c2goYC0tbWFuZ2xlLXByb3BzPSR7bWFuZ2xlUHJvcHMuc291cmNlfWApO1xuICBpZiAocmVzZXJ2ZVByb3BzKSBmbGFncy5wdXNoKGAtLXJlc2VydmUtcHJvcHM9JHtyZXNlcnZlUHJvcHMuc291cmNlfWApO1xuICBpZiAobWFuZ2xlUXVvdGVkICE9PSB2b2lkIDApIGZsYWdzLnB1c2goYC0tbWFuZ2xlLXF1b3RlZD0ke21hbmdsZVF1b3RlZH1gKTtcblxuICBpZiAoanN4KSBmbGFncy5wdXNoKGAtLWpzeD0ke2pzeH1gKTtcbiAgaWYgKGpzeEZhY3RvcnkpIGZsYWdzLnB1c2goYC0tanN4LWZhY3Rvcnk9JHtqc3hGYWN0b3J5fWApO1xuICBpZiAoanN4RnJhZ21lbnQpIGZsYWdzLnB1c2goYC0tanN4LWZyYWdtZW50PSR7anN4RnJhZ21lbnR9YCk7XG4gIGlmIChqc3hJbXBvcnRTb3VyY2UpIGZsYWdzLnB1c2goYC0tanN4LWltcG9ydC1zb3VyY2U9JHtqc3hJbXBvcnRTb3VyY2V9YCk7XG4gIGlmIChqc3hEZXYpIGZsYWdzLnB1c2goYC0tanN4LWRldmApO1xuICBpZiAoanN4U2lkZUVmZmVjdHMpIGZsYWdzLnB1c2goYC0tanN4LXNpZGUtZWZmZWN0c2ApO1xuXG4gIGlmIChkZWZpbmUpIHtcbiAgICBmb3IgKGxldCBrZXkgaW4gZGVmaW5lKSB7XG4gICAgICBpZiAoa2V5LmluZGV4T2YoXCI9XCIpID49IDApIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkZWZpbmU6ICR7a2V5fWApO1xuICAgICAgZmxhZ3MucHVzaChcbiAgICAgICAgYC0tZGVmaW5lOiR7a2V5fT0ke3ZhbGlkYXRlU3RyaW5nVmFsdWUoZGVmaW5lW2tleV0sIFwiZGVmaW5lXCIsIGtleSl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChsb2dPdmVycmlkZSkge1xuICAgIGZvciAobGV0IGtleSBpbiBsb2dPdmVycmlkZSkge1xuICAgICAgaWYgKGtleS5pbmRleE9mKFwiPVwiKSA+PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBsb2cgb3ZlcnJpZGU6ICR7a2V5fWApO1xuICAgICAgfVxuICAgICAgZmxhZ3MucHVzaChcbiAgICAgICAgYC0tbG9nLW92ZXJyaWRlOiR7a2V5fT0ke1xuICAgICAgICAgIHZhbGlkYXRlU3RyaW5nVmFsdWUobG9nT3ZlcnJpZGVba2V5XSwgXCJsb2cgb3ZlcnJpZGVcIiwga2V5KVxuICAgICAgICB9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChzdXBwb3J0ZWQpIHtcbiAgICBmb3IgKGxldCBrZXkgaW4gc3VwcG9ydGVkKSB7XG4gICAgICBpZiAoa2V5LmluZGV4T2YoXCI9XCIpID49IDApIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzdXBwb3J0ZWQ6ICR7a2V5fWApO1xuICAgICAgY29uc3QgdmFsdWUgPSBzdXBwb3J0ZWRba2V5XTtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRXhwZWN0ZWQgdmFsdWUgZm9yIHN1cHBvcnRlZCAke1xuICAgICAgICAgICAgcXVvdGUoa2V5KVxuICAgICAgICAgIH0gdG8gYmUgYSBib29sZWFuLCBnb3QgJHt0eXBlb2YgdmFsdWV9IGluc3RlYWRgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgZmxhZ3MucHVzaChgLS1zdXBwb3J0ZWQ6JHtrZXl9PSR7dmFsdWV9YCk7XG4gICAgfVxuICB9XG4gIGlmIChwdXJlKSB7XG4gICAgZm9yIChsZXQgZm4gb2YgcHVyZSkge1xuICAgICAgZmxhZ3MucHVzaChgLS1wdXJlOiR7dmFsaWRhdGVTdHJpbmdWYWx1ZShmbiwgXCJwdXJlXCIpfWApO1xuICAgIH1cbiAgfVxuICBpZiAoa2VlcE5hbWVzKSBmbGFncy5wdXNoKGAtLWtlZXAtbmFtZXNgKTtcbn1cblxuZnVuY3Rpb24gZmxhZ3NGb3JCdWlsZE9wdGlvbnMoXG4gIGNhbGxOYW1lOiBzdHJpbmcsXG4gIG9wdGlvbnM6IHR5cGVzLkJ1aWxkT3B0aW9ucyxcbiAgaXNUVFk6IGJvb2xlYW4sXG4gIGxvZ0xldmVsRGVmYXVsdDogdHlwZXMuTG9nTGV2ZWwsXG4gIHdyaXRlRGVmYXVsdDogYm9vbGVhbixcbik6IHtcbiAgZW50cmllczogW3N0cmluZywgc3RyaW5nXVtdO1xuICBmbGFnczogc3RyaW5nW107XG4gIHdyaXRlOiBib29sZWFuO1xuICBzdGRpbkNvbnRlbnRzOiBVaW50OEFycmF5IHwgbnVsbDtcbiAgc3RkaW5SZXNvbHZlRGlyOiBzdHJpbmcgfCBudWxsO1xuICBhYnNXb3JraW5nRGlyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIG5vZGVQYXRoczogc3RyaW5nW107XG4gIG1hbmdsZUNhY2hlOiBNYW5nbGVDYWNoZSB8IHVuZGVmaW5lZDtcbn0ge1xuICBsZXQgZmxhZ3M6IHN0cmluZ1tdID0gW107XG4gIGxldCBlbnRyaWVzOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXTtcbiAgbGV0IGtleXM6IE9wdGlvbktleXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBsZXQgc3RkaW5Db250ZW50czogVWludDhBcnJheSB8IG51bGwgPSBudWxsO1xuICBsZXQgc3RkaW5SZXNvbHZlRGlyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHVzaExvZ0ZsYWdzKGZsYWdzLCBvcHRpb25zLCBrZXlzLCBpc1RUWSwgbG9nTGV2ZWxEZWZhdWx0KTtcbiAgcHVzaENvbW1vbkZsYWdzKGZsYWdzLCBvcHRpb25zLCBrZXlzKTtcblxuICBsZXQgc291cmNlbWFwID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInNvdXJjZW1hcFwiLCBtdXN0QmVTdHJpbmdPckJvb2xlYW4pO1xuICBsZXQgYnVuZGxlID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImJ1bmRsZVwiLCBtdXN0QmVCb29sZWFuKTtcbiAgbGV0IHNwbGl0dGluZyA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJzcGxpdHRpbmdcIiwgbXVzdEJlQm9vbGVhbik7XG4gIGxldCBwcmVzZXJ2ZVN5bWxpbmtzID0gZ2V0RmxhZyhcbiAgICBvcHRpb25zLFxuICAgIGtleXMsXG4gICAgXCJwcmVzZXJ2ZVN5bWxpbmtzXCIsXG4gICAgbXVzdEJlQm9vbGVhbixcbiAgKTtcbiAgbGV0IG1ldGFmaWxlID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIm1ldGFmaWxlXCIsIG11c3RCZUJvb2xlYW4pO1xuICBsZXQgb3V0ZmlsZSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJvdXRmaWxlXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBvdXRkaXIgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwib3V0ZGlyXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBvdXRiYXNlID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIm91dGJhc2VcIiwgbXVzdEJlU3RyaW5nKTtcbiAgbGV0IHRzY29uZmlnID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInRzY29uZmlnXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCByZXNvbHZlRXh0ZW5zaW9ucyA9IGdldEZsYWcoXG4gICAgb3B0aW9ucyxcbiAgICBrZXlzLFxuICAgIFwicmVzb2x2ZUV4dGVuc2lvbnNcIixcbiAgICBtdXN0QmVBcnJheSxcbiAgKTtcbiAgbGV0IG5vZGVQYXRoc0lucHV0ID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIm5vZGVQYXRoc1wiLCBtdXN0QmVBcnJheSk7XG4gIGxldCBtYWluRmllbGRzID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIm1haW5GaWVsZHNcIiwgbXVzdEJlQXJyYXkpO1xuICBsZXQgY29uZGl0aW9ucyA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJjb25kaXRpb25zXCIsIG11c3RCZUFycmF5KTtcbiAgbGV0IGV4dGVybmFsID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImV4dGVybmFsXCIsIG11c3RCZUFycmF5KTtcbiAgbGV0IHBhY2thZ2VzID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInBhY2thZ2VzXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBhbGlhcyA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJhbGlhc1wiLCBtdXN0QmVPYmplY3QpO1xuICBsZXQgbG9hZGVyID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImxvYWRlclwiLCBtdXN0QmVPYmplY3QpO1xuICBsZXQgb3V0RXh0ZW5zaW9uID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIm91dEV4dGVuc2lvblwiLCBtdXN0QmVPYmplY3QpO1xuICBsZXQgcHVibGljUGF0aCA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJwdWJsaWNQYXRoXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBlbnRyeU5hbWVzID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImVudHJ5TmFtZXNcIiwgbXVzdEJlU3RyaW5nKTtcbiAgbGV0IGNodW5rTmFtZXMgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwiY2h1bmtOYW1lc1wiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgYXNzZXROYW1lcyA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJhc3NldE5hbWVzXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBpbmplY3QgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwiaW5qZWN0XCIsIG11c3RCZUFycmF5KTtcbiAgbGV0IGJhbm5lciA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJiYW5uZXJcIiwgbXVzdEJlT2JqZWN0KTtcbiAgbGV0IGZvb3RlciA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJmb290ZXJcIiwgbXVzdEJlT2JqZWN0KTtcbiAgbGV0IGVudHJ5UG9pbnRzID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImVudHJ5UG9pbnRzXCIsIG11c3RCZUVudHJ5UG9pbnRzKTtcbiAgbGV0IGFic1dvcmtpbmdEaXIgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwiYWJzV29ya2luZ0RpclwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgc3RkaW4gPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwic3RkaW5cIiwgbXVzdEJlT2JqZWN0KTtcbiAgbGV0IHdyaXRlID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIndyaXRlXCIsIG11c3RCZUJvb2xlYW4pID8/IHdyaXRlRGVmYXVsdDsgLy8gRGVmYXVsdCB0byB0cnVlIGlmIG5vdCBzcGVjaWZpZWRcbiAgbGV0IGFsbG93T3ZlcndyaXRlID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImFsbG93T3ZlcndyaXRlXCIsIG11c3RCZUJvb2xlYW4pO1xuICBsZXQgbWFuZ2xlQ2FjaGUgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwibWFuZ2xlQ2FjaGVcIiwgbXVzdEJlT2JqZWN0KTtcbiAga2V5cy5wbHVnaW5zID0gdHJ1ZTsgLy8gXCJwbHVnaW5zXCIgaGFzIGFscmVhZHkgYmVlbiByZWFkIGVhcmxpZXJcbiAgY2hlY2tGb3JJbnZhbGlkRmxhZ3Mob3B0aW9ucywga2V5cywgYGluICR7Y2FsbE5hbWV9KCkgY2FsbGApO1xuXG4gIGlmIChzb3VyY2VtYXApIHtcbiAgICBmbGFncy5wdXNoKGAtLXNvdXJjZW1hcCR7c291cmNlbWFwID09PSB0cnVlID8gXCJcIiA6IGA9JHtzb3VyY2VtYXB9YH1gKTtcbiAgfVxuICBpZiAoYnVuZGxlKSBmbGFncy5wdXNoKFwiLS1idW5kbGVcIik7XG4gIGlmIChhbGxvd092ZXJ3cml0ZSkgZmxhZ3MucHVzaChcIi0tYWxsb3ctb3ZlcndyaXRlXCIpO1xuICBpZiAoc3BsaXR0aW5nKSBmbGFncy5wdXNoKFwiLS1zcGxpdHRpbmdcIik7XG4gIGlmIChwcmVzZXJ2ZVN5bWxpbmtzKSBmbGFncy5wdXNoKFwiLS1wcmVzZXJ2ZS1zeW1saW5rc1wiKTtcbiAgaWYgKG1ldGFmaWxlKSBmbGFncy5wdXNoKGAtLW1ldGFmaWxlYCk7XG4gIGlmIChvdXRmaWxlKSBmbGFncy5wdXNoKGAtLW91dGZpbGU9JHtvdXRmaWxlfWApO1xuICBpZiAob3V0ZGlyKSBmbGFncy5wdXNoKGAtLW91dGRpcj0ke291dGRpcn1gKTtcbiAgaWYgKG91dGJhc2UpIGZsYWdzLnB1c2goYC0tb3V0YmFzZT0ke291dGJhc2V9YCk7XG4gIGlmICh0c2NvbmZpZykgZmxhZ3MucHVzaChgLS10c2NvbmZpZz0ke3RzY29uZmlnfWApO1xuICBpZiAocGFja2FnZXMpIGZsYWdzLnB1c2goYC0tcGFja2FnZXM9JHtwYWNrYWdlc31gKTtcbiAgaWYgKHJlc29sdmVFeHRlbnNpb25zKSB7XG4gICAgbGV0IHZhbHVlczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGxldCB2YWx1ZSBvZiByZXNvbHZlRXh0ZW5zaW9ucykge1xuICAgICAgdmFsaWRhdGVTdHJpbmdWYWx1ZSh2YWx1ZSwgXCJyZXNvbHZlIGV4dGVuc2lvblwiKTtcbiAgICAgIGlmICh2YWx1ZS5pbmRleE9mKFwiLFwiKSA+PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByZXNvbHZlIGV4dGVuc2lvbjogJHt2YWx1ZX1gKTtcbiAgICAgIH1cbiAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgZmxhZ3MucHVzaChgLS1yZXNvbHZlLWV4dGVuc2lvbnM9JHt2YWx1ZXMuam9pbihcIixcIil9YCk7XG4gIH1cbiAgaWYgKHB1YmxpY1BhdGgpIGZsYWdzLnB1c2goYC0tcHVibGljLXBhdGg9JHtwdWJsaWNQYXRofWApO1xuICBpZiAoZW50cnlOYW1lcykgZmxhZ3MucHVzaChgLS1lbnRyeS1uYW1lcz0ke2VudHJ5TmFtZXN9YCk7XG4gIGlmIChjaHVua05hbWVzKSBmbGFncy5wdXNoKGAtLWNodW5rLW5hbWVzPSR7Y2h1bmtOYW1lc31gKTtcbiAgaWYgKGFzc2V0TmFtZXMpIGZsYWdzLnB1c2goYC0tYXNzZXQtbmFtZXM9JHthc3NldE5hbWVzfWApO1xuICBpZiAobWFpbkZpZWxkcykge1xuICAgIGxldCB2YWx1ZXM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgbWFpbkZpZWxkcykge1xuICAgICAgdmFsaWRhdGVTdHJpbmdWYWx1ZSh2YWx1ZSwgXCJtYWluIGZpZWxkXCIpO1xuICAgICAgaWYgKHZhbHVlLmluZGV4T2YoXCIsXCIpID49IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG1haW4gZmllbGQ6ICR7dmFsdWV9YCk7XG4gICAgICB9XG4gICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIGZsYWdzLnB1c2goYC0tbWFpbi1maWVsZHM9JHt2YWx1ZXMuam9pbihcIixcIil9YCk7XG4gIH1cbiAgaWYgKGNvbmRpdGlvbnMpIHtcbiAgICBsZXQgdmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAobGV0IHZhbHVlIG9mIGNvbmRpdGlvbnMpIHtcbiAgICAgIHZhbGlkYXRlU3RyaW5nVmFsdWUodmFsdWUsIFwiY29uZGl0aW9uXCIpO1xuICAgICAgaWYgKHZhbHVlLmluZGV4T2YoXCIsXCIpID49IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvbmRpdGlvbjogJHt2YWx1ZX1gKTtcbiAgICAgIH1cbiAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgZmxhZ3MucHVzaChgLS1jb25kaXRpb25zPSR7dmFsdWVzLmpvaW4oXCIsXCIpfWApO1xuICB9XG4gIGlmIChleHRlcm5hbCkge1xuICAgIGZvciAobGV0IG5hbWUgb2YgZXh0ZXJuYWwpIHtcbiAgICAgIGZsYWdzLnB1c2goYC0tZXh0ZXJuYWw6JHt2YWxpZGF0ZVN0cmluZ1ZhbHVlKG5hbWUsIFwiZXh0ZXJuYWxcIil9YCk7XG4gICAgfVxuICB9XG4gIGlmIChhbGlhcykge1xuICAgIGZvciAobGV0IG9sZCBpbiBhbGlhcykge1xuICAgICAgaWYgKG9sZC5pbmRleE9mKFwiPVwiKSA+PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwYWNrYWdlIG5hbWUgaW4gYWxpYXM6ICR7b2xkfWApO1xuICAgICAgfVxuICAgICAgZmxhZ3MucHVzaChcbiAgICAgICAgYC0tYWxpYXM6JHtvbGR9PSR7dmFsaWRhdGVTdHJpbmdWYWx1ZShhbGlhc1tvbGRdLCBcImFsaWFzXCIsIG9sZCl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChiYW5uZXIpIHtcbiAgICBmb3IgKGxldCB0eXBlIGluIGJhbm5lcikge1xuICAgICAgaWYgKHR5cGUuaW5kZXhPZihcIj1cIikgPj0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYmFubmVyIGZpbGUgdHlwZTogJHt0eXBlfWApO1xuICAgICAgfVxuICAgICAgZmxhZ3MucHVzaChcbiAgICAgICAgYC0tYmFubmVyOiR7dHlwZX09JHt2YWxpZGF0ZVN0cmluZ1ZhbHVlKGJhbm5lclt0eXBlXSwgXCJiYW5uZXJcIiwgdHlwZSl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChmb290ZXIpIHtcbiAgICBmb3IgKGxldCB0eXBlIGluIGZvb3Rlcikge1xuICAgICAgaWYgKHR5cGUuaW5kZXhPZihcIj1cIikgPj0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZm9vdGVyIGZpbGUgdHlwZTogJHt0eXBlfWApO1xuICAgICAgfVxuICAgICAgZmxhZ3MucHVzaChcbiAgICAgICAgYC0tZm9vdGVyOiR7dHlwZX09JHt2YWxpZGF0ZVN0cmluZ1ZhbHVlKGZvb3Rlclt0eXBlXSwgXCJmb290ZXJcIiwgdHlwZSl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChpbmplY3QpIHtcbiAgICBmb3IgKGxldCBwYXRoIG9mIGluamVjdCkge1xuICAgICAgZmxhZ3MucHVzaChgLS1pbmplY3Q6JHt2YWxpZGF0ZVN0cmluZ1ZhbHVlKHBhdGgsIFwiaW5qZWN0XCIpfWApO1xuICAgIH1cbiAgfVxuICBpZiAobG9hZGVyKSB7XG4gICAgZm9yIChsZXQgZXh0IGluIGxvYWRlcikge1xuICAgICAgaWYgKGV4dC5pbmRleE9mKFwiPVwiKSA+PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBsb2FkZXIgZXh0ZW5zaW9uOiAke2V4dH1gKTtcbiAgICAgIH1cbiAgICAgIGZsYWdzLnB1c2goXG4gICAgICAgIGAtLWxvYWRlcjoke2V4dH09JHt2YWxpZGF0ZVN0cmluZ1ZhbHVlKGxvYWRlcltleHRdLCBcImxvYWRlclwiLCBleHQpfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBpZiAob3V0RXh0ZW5zaW9uKSB7XG4gICAgZm9yIChsZXQgZXh0IGluIG91dEV4dGVuc2lvbikge1xuICAgICAgaWYgKGV4dC5pbmRleE9mKFwiPVwiKSA+PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBvdXQgZXh0ZW5zaW9uOiAke2V4dH1gKTtcbiAgICAgIH1cbiAgICAgIGZsYWdzLnB1c2goXG4gICAgICAgIGAtLW91dC1leHRlbnNpb246JHtleHR9PSR7XG4gICAgICAgICAgdmFsaWRhdGVTdHJpbmdWYWx1ZShvdXRFeHRlbnNpb25bZXh0XSwgXCJvdXQgZXh0ZW5zaW9uXCIsIGV4dClcbiAgICAgICAgfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChlbnRyeVBvaW50cykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGVudHJ5UG9pbnRzKSkge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSBlbnRyeVBvaW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgbGV0IGVudHJ5UG9pbnQgPSBlbnRyeVBvaW50c1tpXTtcbiAgICAgICAgaWYgKHR5cGVvZiBlbnRyeVBvaW50ID09PSBcIm9iamVjdFwiICYmIGVudHJ5UG9pbnQgIT09IG51bGwpIHtcbiAgICAgICAgICBsZXQgZW50cnlQb2ludEtleXM6IE9wdGlvbktleXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIGxldCBpbnB1dCA9IGdldEZsYWcoZW50cnlQb2ludCwgZW50cnlQb2ludEtleXMsIFwiaW5cIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgICBsZXQgb3V0cHV0ID0gZ2V0RmxhZyhlbnRyeVBvaW50LCBlbnRyeVBvaW50S2V5cywgXCJvdXRcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgICBjaGVja0ZvckludmFsaWRGbGFncyhcbiAgICAgICAgICAgIGVudHJ5UG9pbnQsXG4gICAgICAgICAgICBlbnRyeVBvaW50S2V5cyxcbiAgICAgICAgICAgIFwiaW4gZW50cnkgcG9pbnQgYXQgaW5kZXggXCIgKyBpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGlucHV0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgJ01pc3NpbmcgcHJvcGVydHkgXCJpblwiIGZvciBlbnRyeSBwb2ludCBhdCBpbmRleCAnICsgaSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvdXRwdXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAnTWlzc2luZyBwcm9wZXJ0eSBcIm91dFwiIGZvciBlbnRyeSBwb2ludCBhdCBpbmRleCAnICsgaSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVudHJpZXMucHVzaChbb3V0cHV0LCBpbnB1dF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVudHJpZXMucHVzaChbXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgdmFsaWRhdGVTdHJpbmdWYWx1ZShlbnRyeVBvaW50LCBcImVudHJ5IHBvaW50IGF0IGluZGV4IFwiICsgaSksXG4gICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQga2V5IGluIGVudHJ5UG9pbnRzKSB7XG4gICAgICAgIGVudHJpZXMucHVzaChbXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHZhbGlkYXRlU3RyaW5nVmFsdWUoZW50cnlQb2ludHNba2V5XSwgXCJlbnRyeSBwb2ludFwiLCBrZXkpLFxuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc3RkaW4pIHtcbiAgICBsZXQgc3RkaW5LZXlzOiBPcHRpb25LZXlzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBsZXQgY29udGVudHMgPSBnZXRGbGFnKFxuICAgICAgc3RkaW4sXG4gICAgICBzdGRpbktleXMsXG4gICAgICBcImNvbnRlbnRzXCIsXG4gICAgICBtdXN0QmVTdHJpbmdPclVpbnQ4QXJyYXksXG4gICAgKTtcbiAgICBsZXQgcmVzb2x2ZURpciA9IGdldEZsYWcoc3RkaW4sIHN0ZGluS2V5cywgXCJyZXNvbHZlRGlyXCIsIG11c3RCZVN0cmluZyk7XG4gICAgbGV0IHNvdXJjZWZpbGUgPSBnZXRGbGFnKHN0ZGluLCBzdGRpbktleXMsIFwic291cmNlZmlsZVwiLCBtdXN0QmVTdHJpbmcpO1xuICAgIGxldCBsb2FkZXIgPSBnZXRGbGFnKHN0ZGluLCBzdGRpbktleXMsIFwibG9hZGVyXCIsIG11c3RCZVN0cmluZyk7XG4gICAgY2hlY2tGb3JJbnZhbGlkRmxhZ3Moc3RkaW4sIHN0ZGluS2V5cywgJ2luIFwic3RkaW5cIiBvYmplY3QnKTtcblxuICAgIGlmIChzb3VyY2VmaWxlKSBmbGFncy5wdXNoKGAtLXNvdXJjZWZpbGU9JHtzb3VyY2VmaWxlfWApO1xuICAgIGlmIChsb2FkZXIpIGZsYWdzLnB1c2goYC0tbG9hZGVyPSR7bG9hZGVyfWApO1xuICAgIGlmIChyZXNvbHZlRGlyKSBzdGRpblJlc29sdmVEaXIgPSByZXNvbHZlRGlyO1xuICAgIGlmICh0eXBlb2YgY29udGVudHMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHN0ZGluQ29udGVudHMgPSBwcm90b2NvbC5lbmNvZGVVVEY4KGNvbnRlbnRzKTtcbiAgICB9IGVsc2UgaWYgKGNvbnRlbnRzIGluc3RhbmNlb2YgVWludDhBcnJheSkgc3RkaW5Db250ZW50cyA9IGNvbnRlbnRzO1xuICB9XG5cbiAgbGV0IG5vZGVQYXRoczogc3RyaW5nW10gPSBbXTtcbiAgaWYgKG5vZGVQYXRoc0lucHV0KSB7XG4gICAgZm9yIChsZXQgdmFsdWUgb2Ygbm9kZVBhdGhzSW5wdXQpIHtcbiAgICAgIHZhbHVlICs9IFwiXCI7XG4gICAgICBub2RlUGF0aHMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbnRyaWVzLFxuICAgIGZsYWdzLFxuICAgIHdyaXRlLFxuICAgIHN0ZGluQ29udGVudHMsXG4gICAgc3RkaW5SZXNvbHZlRGlyLFxuICAgIGFic1dvcmtpbmdEaXIsXG4gICAgbm9kZVBhdGhzLFxuICAgIG1hbmdsZUNhY2hlOiB2YWxpZGF0ZU1hbmdsZUNhY2hlKG1hbmdsZUNhY2hlKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZmxhZ3NGb3JUcmFuc2Zvcm1PcHRpb25zKFxuICBjYWxsTmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiB0eXBlcy5UcmFuc2Zvcm1PcHRpb25zLFxuICBpc1RUWTogYm9vbGVhbixcbiAgbG9nTGV2ZWxEZWZhdWx0OiB0eXBlcy5Mb2dMZXZlbCxcbik6IHtcbiAgZmxhZ3M6IHN0cmluZ1tdO1xuICBtYW5nbGVDYWNoZTogTWFuZ2xlQ2FjaGUgfCB1bmRlZmluZWQ7XG59IHtcbiAgbGV0IGZsYWdzOiBzdHJpbmdbXSA9IFtdO1xuICBsZXQga2V5czogT3B0aW9uS2V5cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHB1c2hMb2dGbGFncyhmbGFncywgb3B0aW9ucywga2V5cywgaXNUVFksIGxvZ0xldmVsRGVmYXVsdCk7XG4gIHB1c2hDb21tb25GbGFncyhmbGFncywgb3B0aW9ucywga2V5cyk7XG5cbiAgbGV0IHNvdXJjZW1hcCA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJzb3VyY2VtYXBcIiwgbXVzdEJlU3RyaW5nT3JCb29sZWFuKTtcbiAgbGV0IHNvdXJjZWZpbGUgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwic291cmNlZmlsZVwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgbG9hZGVyID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImxvYWRlclwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgYmFubmVyID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImJhbm5lclwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgZm9vdGVyID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImZvb3RlclwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgbWFuZ2xlQ2FjaGUgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwibWFuZ2xlQ2FjaGVcIiwgbXVzdEJlT2JqZWN0KTtcbiAgY2hlY2tGb3JJbnZhbGlkRmxhZ3Mob3B0aW9ucywga2V5cywgYGluICR7Y2FsbE5hbWV9KCkgY2FsbGApO1xuXG4gIGlmIChzb3VyY2VtYXApIHtcbiAgICBmbGFncy5wdXNoKGAtLXNvdXJjZW1hcD0ke3NvdXJjZW1hcCA9PT0gdHJ1ZSA/IFwiZXh0ZXJuYWxcIiA6IHNvdXJjZW1hcH1gKTtcbiAgfVxuICBpZiAoc291cmNlZmlsZSkgZmxhZ3MucHVzaChgLS1zb3VyY2VmaWxlPSR7c291cmNlZmlsZX1gKTtcbiAgaWYgKGxvYWRlcikgZmxhZ3MucHVzaChgLS1sb2FkZXI9JHtsb2FkZXJ9YCk7XG4gIGlmIChiYW5uZXIpIGZsYWdzLnB1c2goYC0tYmFubmVyPSR7YmFubmVyfWApO1xuICBpZiAoZm9vdGVyKSBmbGFncy5wdXNoKGAtLWZvb3Rlcj0ke2Zvb3Rlcn1gKTtcblxuICByZXR1cm4ge1xuICAgIGZsYWdzLFxuICAgIG1hbmdsZUNhY2hlOiB2YWxpZGF0ZU1hbmdsZUNhY2hlKG1hbmdsZUNhY2hlKSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdHJlYW1JbiB7XG4gIHdyaXRlVG9TdGRpbjogKGRhdGE6IFVpbnQ4QXJyYXkpID0+IHZvaWQ7XG4gIHJlYWRGaWxlU3luYz86IChwYXRoOiBzdHJpbmcsIGVuY29kaW5nOiBcInV0ZjhcIikgPT4gc3RyaW5nO1xuICBpc1N5bmM6IGJvb2xlYW47XG4gIGhhc0ZTOiBib29sZWFuO1xuICBlc2J1aWxkOiB0eXBlcy5QbHVnaW5CdWlsZFtcImVzYnVpbGRcIl07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyZWFtT3V0IHtcbiAgcmVhZEZyb21TdGRvdXQ6IChkYXRhOiBVaW50OEFycmF5KSA9PiB2b2lkO1xuICBhZnRlckNsb3NlOiAoZXJyb3I6IEVycm9yIHwgbnVsbCkgPT4gdm9pZDtcbiAgc2VydmljZTogU3RyZWFtU2VydmljZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdHJlYW1GUyB7XG4gIHdyaXRlRmlsZShcbiAgICBjb250ZW50czogc3RyaW5nIHwgVWludDhBcnJheSxcbiAgICBjYWxsYmFjazogKHBhdGg6IHN0cmluZyB8IG51bGwpID0+IHZvaWQsXG4gICk6IHZvaWQ7XG4gIHJlYWRGaWxlKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBjYWxsYmFjazogKGVycjogRXJyb3IgfCBudWxsLCBjb250ZW50czogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCxcbiAgKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWZzIHtcbiAgcmVmKCk6IHZvaWQ7XG4gIHVucmVmKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyZWFtU2VydmljZSB7XG4gIGJ1aWxkT3JDb250ZXh0KGFyZ3M6IHtcbiAgICBjYWxsTmFtZTogc3RyaW5nO1xuICAgIHJlZnM6IFJlZnMgfCBudWxsO1xuICAgIG9wdGlvbnM6IHR5cGVzLkJ1aWxkT3B0aW9ucztcbiAgICBpc1RUWTogYm9vbGVhbjtcbiAgICBkZWZhdWx0V0Q6IHN0cmluZztcbiAgICBjYWxsYmFjazogKFxuICAgICAgZXJyOiBFcnJvciB8IG51bGwsXG4gICAgICByZXM6IHR5cGVzLkJ1aWxkUmVzdWx0IHwgdHlwZXMuQnVpbGRDb250ZXh0IHwgbnVsbCxcbiAgICApID0+IHZvaWQ7XG4gIH0pOiB2b2lkO1xuXG4gIHRyYW5zZm9ybShhcmdzOiB7XG4gICAgY2FsbE5hbWU6IHN0cmluZztcbiAgICByZWZzOiBSZWZzIHwgbnVsbDtcbiAgICBpbnB1dDogc3RyaW5nIHwgVWludDhBcnJheTtcbiAgICBvcHRpb25zOiB0eXBlcy5UcmFuc2Zvcm1PcHRpb25zO1xuICAgIGlzVFRZOiBib29sZWFuO1xuICAgIGZzOiBTdHJlYW1GUztcbiAgICBjYWxsYmFjazogKGVycjogRXJyb3IgfCBudWxsLCByZXM6IHR5cGVzLlRyYW5zZm9ybVJlc3VsdCB8IG51bGwpID0+IHZvaWQ7XG4gIH0pOiB2b2lkO1xuXG4gIGZvcm1hdE1lc3NhZ2VzKGFyZ3M6IHtcbiAgICBjYWxsTmFtZTogc3RyaW5nO1xuICAgIHJlZnM6IFJlZnMgfCBudWxsO1xuICAgIG1lc3NhZ2VzOiB0eXBlcy5QYXJ0aWFsTWVzc2FnZVtdO1xuICAgIG9wdGlvbnM6IHR5cGVzLkZvcm1hdE1lc3NhZ2VzT3B0aW9ucztcbiAgICBjYWxsYmFjazogKGVycjogRXJyb3IgfCBudWxsLCByZXM6IHN0cmluZ1tdIHwgbnVsbCkgPT4gdm9pZDtcbiAgfSk6IHZvaWQ7XG5cbiAgYW5hbHl6ZU1ldGFmaWxlKGFyZ3M6IHtcbiAgICBjYWxsTmFtZTogc3RyaW5nO1xuICAgIHJlZnM6IFJlZnMgfCBudWxsO1xuICAgIG1ldGFmaWxlOiBzdHJpbmc7XG4gICAgb3B0aW9uczogdHlwZXMuQW5hbHl6ZU1ldGFmaWxlT3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgICBjYWxsYmFjazogKGVycjogRXJyb3IgfCBudWxsLCByZXM6IHN0cmluZyB8IG51bGwpID0+IHZvaWQ7XG4gIH0pOiB2b2lkO1xufVxuXG50eXBlIENsb3NlRGF0YSA9IHsgZGlkQ2xvc2U6IGJvb2xlYW47IHJlYXNvbjogc3RyaW5nIH07XG50eXBlIFJlcXVlc3RDYWxsYmFjayA9IChpZDogbnVtYmVyLCByZXF1ZXN0OiBhbnkpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXG4vLyBUaGlzIGNhbid0IHVzZSBhbnkgcHJvbWlzZXMgaW4gdGhlIG1haW4gZXhlY3V0aW9uIGZsb3cgYmVjYXVzZSBpdCBtdXN0IHdvcmtcbi8vIGZvciBib3RoIHN5bmMgYW5kIGFzeW5jIGNvZGUuIFRoZXJlIGlzIGFuIGV4Y2VwdGlvbiBmb3IgcGx1Z2luIGNvZGUgYmVjYXVzZVxuLy8gdGhhdCBjYW4ndCB3b3JrIGluIHN5bmMgY29kZSBhbnl3YXkuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2hhbm5lbChzdHJlYW1JbjogU3RyZWFtSW4pOiBTdHJlYW1PdXQge1xuICBjb25zdCByZXF1ZXN0Q2FsbGJhY2tzQnlLZXk6IHtcbiAgICBba2V5OiBudW1iZXJdOiB7IFtjb21tYW5kOiBzdHJpbmddOiBSZXF1ZXN0Q2FsbGJhY2sgfTtcbiAgfSA9IHt9O1xuICBjb25zdCBjbG9zZURhdGE6IENsb3NlRGF0YSA9IHsgZGlkQ2xvc2U6IGZhbHNlLCByZWFzb246IFwiXCIgfTtcbiAgbGV0IHJlc3BvbnNlQ2FsbGJhY2tzOiB7XG4gICAgW2lkOiBudW1iZXJdOiAoZXJyb3I6IHN0cmluZyB8IG51bGwsIHJlc3BvbnNlOiBwcm90b2NvbC5WYWx1ZSkgPT4gdm9pZDtcbiAgfSA9IHt9O1xuICBsZXQgbmV4dFJlcXVlc3RJRCA9IDA7XG4gIGxldCBuZXh0QnVpbGRLZXkgPSAwO1xuXG4gIC8vIFVzZSBhIGxvbmctbGl2ZWQgYnVmZmVyIHRvIHN0b3JlIHN0ZG91dCBkYXRhXG4gIGxldCBzdGRvdXQgPSBuZXcgVWludDhBcnJheSgxNiAqIDEwMjQpO1xuICBsZXQgc3Rkb3V0VXNlZCA9IDA7XG4gIGxldCByZWFkRnJvbVN0ZG91dCA9IChjaHVuazogVWludDhBcnJheSkgPT4ge1xuICAgIC8vIEFwcGVuZCB0aGUgY2h1bmsgdG8gdGhlIHN0ZG91dCBidWZmZXIsIGdyb3dpbmcgaXQgYXMgbmVjZXNzYXJ5XG4gICAgbGV0IGxpbWl0ID0gc3Rkb3V0VXNlZCArIGNodW5rLmxlbmd0aDtcbiAgICBpZiAobGltaXQgPiBzdGRvdXQubGVuZ3RoKSB7XG4gICAgICBsZXQgc3dhcCA9IG5ldyBVaW50OEFycmF5KGxpbWl0ICogMik7XG4gICAgICBzd2FwLnNldChzdGRvdXQpO1xuICAgICAgc3Rkb3V0ID0gc3dhcDtcbiAgICB9XG4gICAgc3Rkb3V0LnNldChjaHVuaywgc3Rkb3V0VXNlZCk7XG4gICAgc3Rkb3V0VXNlZCArPSBjaHVuay5sZW5ndGg7XG5cbiAgICAvLyBQcm9jZXNzIGFsbCBjb21wbGV0ZSAoaS5lLiBub3QgcGFydGlhbCkgcGFja2V0c1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIHdoaWxlIChvZmZzZXQgKyA0IDw9IHN0ZG91dFVzZWQpIHtcbiAgICAgIGxldCBsZW5ndGggPSBwcm90b2NvbC5yZWFkVUludDMyTEUoc3Rkb3V0LCBvZmZzZXQpO1xuICAgICAgaWYgKG9mZnNldCArIDQgKyBsZW5ndGggPiBzdGRvdXRVc2VkKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICBoYW5kbGVJbmNvbWluZ1BhY2tldChzdGRvdXQuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgpKTtcbiAgICAgIG9mZnNldCArPSBsZW5ndGg7XG4gICAgfVxuICAgIGlmIChvZmZzZXQgPiAwKSB7XG4gICAgICBzdGRvdXQuY29weVdpdGhpbigwLCBvZmZzZXQsIHN0ZG91dFVzZWQpO1xuICAgICAgc3Rkb3V0VXNlZCAtPSBvZmZzZXQ7XG4gICAgfVxuICB9O1xuXG4gIGxldCBhZnRlckNsb3NlID0gKGVycm9yOiBFcnJvciB8IG51bGwpID0+IHtcbiAgICAvLyBXaGVuIHRoZSBwcm9jZXNzIGlzIGNsb3NlZCwgZmFpbCBhbGwgcGVuZGluZyByZXF1ZXN0c1xuICAgIGNsb3NlRGF0YS5kaWRDbG9zZSA9IHRydWU7XG4gICAgaWYgKGVycm9yKSBjbG9zZURhdGEucmVhc29uID0gXCI6IFwiICsgKGVycm9yLm1lc3NhZ2UgfHwgZXJyb3IpO1xuICAgIGNvbnN0IHRleHQgPSBcIlRoZSBzZXJ2aWNlIHdhcyBzdG9wcGVkXCIgKyBjbG9zZURhdGEucmVhc29uO1xuICAgIGZvciAobGV0IGlkIGluIHJlc3BvbnNlQ2FsbGJhY2tzKSB7XG4gICAgICByZXNwb25zZUNhbGxiYWNrc1tpZF0odGV4dCwgbnVsbCk7XG4gICAgfVxuICAgIHJlc3BvbnNlQ2FsbGJhY2tzID0ge307XG4gIH07XG5cbiAgbGV0IHNlbmRSZXF1ZXN0ID0gPFJlcSwgUmVzPihcbiAgICByZWZzOiBSZWZzIHwgbnVsbCxcbiAgICB2YWx1ZTogUmVxLFxuICAgIGNhbGxiYWNrOiAoZXJyb3I6IHN0cmluZyB8IG51bGwsIHJlc3BvbnNlOiBSZXMgfCBudWxsKSA9PiB2b2lkLFxuICApOiB2b2lkID0+IHtcbiAgICBpZiAoY2xvc2VEYXRhLmRpZENsb3NlKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICAgIFwiVGhlIHNlcnZpY2UgaXMgbm8gbG9uZ2VyIHJ1bm5pbmdcIiArIGNsb3NlRGF0YS5yZWFzb24sXG4gICAgICAgIG51bGwsXG4gICAgICApO1xuICAgIH1cbiAgICBsZXQgaWQgPSBuZXh0UmVxdWVzdElEKys7XG4gICAgcmVzcG9uc2VDYWxsYmFja3NbaWRdID0gKGVycm9yLCByZXNwb25zZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlIGFzIGFueSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAocmVmcykgcmVmcy51bnJlZigpOyAvLyBEbyB0aGlzIGFmdGVyIHRoZSBjYWxsYmFjayBzbyB0aGUgY2FsbGJhY2sgY2FuIGV4dGVuZCB0aGUgbGlmZXRpbWUgaWYgbmVlZGVkXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAocmVmcykgcmVmcy5yZWYoKTtcbiAgICBzdHJlYW1Jbi53cml0ZVRvU3RkaW4oXG4gICAgICBwcm90b2NvbC5lbmNvZGVQYWNrZXQoeyBpZCwgaXNSZXF1ZXN0OiB0cnVlLCB2YWx1ZTogdmFsdWUgYXMgYW55IH0pLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHNlbmRSZXNwb25zZSA9IChpZDogbnVtYmVyLCB2YWx1ZTogcHJvdG9jb2wuVmFsdWUpOiB2b2lkID0+IHtcbiAgICBpZiAoY2xvc2VEYXRhLmRpZENsb3NlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgc2VydmljZSBpcyBubyBsb25nZXIgcnVubmluZ1wiICsgY2xvc2VEYXRhLnJlYXNvbik7XG4gICAgfVxuICAgIHN0cmVhbUluLndyaXRlVG9TdGRpbihcbiAgICAgIHByb3RvY29sLmVuY29kZVBhY2tldCh7IGlkLCBpc1JlcXVlc3Q6IGZhbHNlLCB2YWx1ZSB9KSxcbiAgICApO1xuICB9O1xuXG4gIGxldCBoYW5kbGVSZXF1ZXN0ID0gYXN5bmMgKGlkOiBudW1iZXIsIHJlcXVlc3Q6IGFueSkgPT4ge1xuICAgIC8vIENhdGNoIGV4Y2VwdGlvbnMgaW4gdGhlIGNvZGUgYmVsb3cgc28gdGhleSBnZXQgcGFzc2VkIHRvIHRoZSBjYWxsZXJcbiAgICB0cnkge1xuICAgICAgaWYgKHJlcXVlc3QuY29tbWFuZCA9PT0gXCJwaW5nXCIpIHtcbiAgICAgICAgc2VuZFJlc3BvbnNlKGlkLCB7fSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiByZXF1ZXN0LmtleSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICBjb25zdCByZXF1ZXN0Q2FsbGJhY2tzID0gcmVxdWVzdENhbGxiYWNrc0J5S2V5W3JlcXVlc3Qua2V5XTtcbiAgICAgICAgaWYgKCFyZXF1ZXN0Q2FsbGJhY2tzKSB7XG4gICAgICAgICAgLy8gSWdub3JlIGludmFsaWQgY29tbWFuZHMgZm9yIG9sZCBidWlsZHMgdGhhdCBubyBsb25nZXIgZXhpc3QuXG4gICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gXCJjb250ZXh0LmNhbmNlbFwiIGFuZCBcImNvbnRleHQuZGlzcG9zZVwiXG4gICAgICAgICAgLy8gaXMgY2FsbGVkIHdoaWxlIGVzYnVpbGQgaXMgcHJvY2Vzc2luZyBtYW55IGZpbGVzIGluIHBhcmFsbGVsLlxuICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXZhbncvZXNidWlsZC9pc3N1ZXMvMzMxOCBmb3IgZGV0YWlscy5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSByZXF1ZXN0Q2FsbGJhY2tzW3JlcXVlc3QuY29tbWFuZF07XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGF3YWl0IGNhbGxiYWNrKGlkLCByZXF1ZXN0KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvbW1hbmQ6IGAgKyByZXF1ZXN0LmNvbW1hbmQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnN0IGVycm9ycyA9IFtleHRyYWN0RXJyb3JNZXNzYWdlVjgoZSwgc3RyZWFtSW4sIG51bGwsIHZvaWQgMCwgXCJcIildO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2VuZFJlc3BvbnNlKGlkLCB7IGVycm9ycyB9IGFzIGFueSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gVGhpcyBtYXkgZmFpbCBpZiB0aGUgZXNidWlsZCBwcm9jZXNzIGlzIG5vIGxvbmdlciBydW5uaW5nLCBidXRcbiAgICAgICAgLy8gdGhhdCdzIG9rLiBDYXRjaCBhbmQgc3dhbGxvdyB0aGlzIGV4Y2VwdGlvbiBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgIC8vIGNhdXNlIGFuIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbi4gT3VyIGNhbGxlciBpc24ndCBleHBlY3RpbmdcbiAgICAgICAgLy8gdGhpcyBjYWxsIHRvIGZhaWwgYW5kIGRvZXNuJ3QgaGFuZGxlIHRoZSBwcm9taXNlIHJlamVjdGlvbi5cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgbGV0IGlzRmlyc3RQYWNrZXQgPSB0cnVlO1xuXG4gIGxldCBoYW5kbGVJbmNvbWluZ1BhY2tldCA9IChieXRlczogVWludDhBcnJheSk6IHZvaWQgPT4ge1xuICAgIC8vIFRoZSBmaXJzdCBwYWNrZXQgaXMgYSB2ZXJzaW9uIGNoZWNrXG4gICAgaWYgKGlzRmlyc3RQYWNrZXQpIHtcbiAgICAgIGlzRmlyc3RQYWNrZXQgPSBmYWxzZTtcblxuICAgICAgLy8gVmFsaWRhdGUgdGhlIGJpbmFyeSdzIHZlcnNpb24gbnVtYmVyIHRvIG1ha2Ugc3VyZSBlc2J1aWxkIHdhcyBpbnN0YWxsZWRcbiAgICAgIC8vIGNvcnJlY3RseS4gVGhpcyBjaGVjayB3YXMgYWRkZWQgYmVjYXVzZSBzb21lIHBlb3BsZSBoYXZlIHJlcG9ydGVkXG4gICAgICAvLyBlcnJvcnMgdGhhdCBhcHBlYXIgdG8gaW5kaWNhdGUgYW4gaW5jb3JyZWN0IGluc3RhbGxhdGlvbi5cbiAgICAgIGxldCBiaW5hcnlWZXJzaW9uID0gU3RyaW5nLmZyb21DaGFyQ29kZSguLi5ieXRlcyk7XG4gICAgICBpZiAoYmluYXJ5VmVyc2lvbiAhPT0gRVNCVUlMRF9WRVJTSU9OKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2Fubm90IHN0YXJ0IHNlcnZpY2U6IEhvc3QgdmVyc2lvbiBcIiR7RVNCVUlMRF9WRVJTSU9OfVwiIGRvZXMgbm90IG1hdGNoIGJpbmFyeSB2ZXJzaW9uICR7XG4gICAgICAgICAgICBxdW90ZShiaW5hcnlWZXJzaW9uKVxuICAgICAgICAgIH1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBwYWNrZXQgPSBwcm90b2NvbC5kZWNvZGVQYWNrZXQoYnl0ZXMpIGFzIGFueTtcblxuICAgIGlmIChwYWNrZXQuaXNSZXF1ZXN0KSB7XG4gICAgICBoYW5kbGVSZXF1ZXN0KHBhY2tldC5pZCwgcGFja2V0LnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNhbGxiYWNrID0gcmVzcG9uc2VDYWxsYmFja3NbcGFja2V0LmlkXSE7XG4gICAgICBkZWxldGUgcmVzcG9uc2VDYWxsYmFja3NbcGFja2V0LmlkXTtcbiAgICAgIGlmIChwYWNrZXQudmFsdWUuZXJyb3IpIGNhbGxiYWNrKHBhY2tldC52YWx1ZS5lcnJvciwge30pO1xuICAgICAgZWxzZSBjYWxsYmFjayhudWxsLCBwYWNrZXQudmFsdWUpO1xuICAgIH1cbiAgfTtcblxuICBsZXQgYnVpbGRPckNvbnRleHQ6IFN0cmVhbVNlcnZpY2VbXCJidWlsZE9yQ29udGV4dFwiXSA9IChcbiAgICB7IGNhbGxOYW1lLCByZWZzLCBvcHRpb25zLCBpc1RUWSwgZGVmYXVsdFdELCBjYWxsYmFjayB9LFxuICApID0+IHtcbiAgICBsZXQgcmVmQ291bnQgPSAwO1xuICAgIGNvbnN0IGJ1aWxkS2V5ID0gbmV4dEJ1aWxkS2V5Kys7XG4gICAgY29uc3QgcmVxdWVzdENhbGxiYWNrczogeyBbY29tbWFuZDogc3RyaW5nXTogUmVxdWVzdENhbGxiYWNrIH0gPSB7fTtcbiAgICBjb25zdCBidWlsZFJlZnM6IFJlZnMgPSB7XG4gICAgICByZWYoKSB7XG4gICAgICAgIGlmICgrK3JlZkNvdW50ID09PSAxKSB7XG4gICAgICAgICAgaWYgKHJlZnMpIHJlZnMucmVmKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1bnJlZigpIHtcbiAgICAgICAgaWYgKC0tcmVmQ291bnQgPT09IDApIHtcbiAgICAgICAgICBkZWxldGUgcmVxdWVzdENhbGxiYWNrc0J5S2V5W2J1aWxkS2V5XTtcbiAgICAgICAgICBpZiAocmVmcykgcmVmcy51bnJlZigpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gICAgcmVxdWVzdENhbGxiYWNrc0J5S2V5W2J1aWxkS2V5XSA9IHJlcXVlc3RDYWxsYmFja3M7XG5cbiAgICAvLyBHdWFyZCB0aGUgd2hvbGUgXCJidWlsZFwiIHJlcXVlc3Qgd2l0aCBhIHRlbXBvcmFyeSByZWYgY291bnQgYnVtcC4gV2VcbiAgICAvLyBkb24ndCB3YW50IHRoZSByZWYgY291bnQgdG8gYmUgYnVtcGVkIGFib3ZlIHplcm8gYW5kIHRoZW4gYmFjayBkb3duXG4gICAgLy8gdG8gemVybyBiZWZvcmUgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAgICBidWlsZFJlZnMucmVmKCk7XG4gICAgYnVpbGRPckNvbnRleHRJbXBsKFxuICAgICAgY2FsbE5hbWUsXG4gICAgICBidWlsZEtleSxcbiAgICAgIHNlbmRSZXF1ZXN0LFxuICAgICAgc2VuZFJlc3BvbnNlLFxuICAgICAgYnVpbGRSZWZzLFxuICAgICAgc3RyZWFtSW4sXG4gICAgICByZXF1ZXN0Q2FsbGJhY2tzLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIGlzVFRZLFxuICAgICAgZGVmYXVsdFdELFxuICAgICAgKGVyciwgcmVzKSA9PiB7XG4gICAgICAgIC8vIE5vdyB0aGF0IHRoZSBpbml0aWFsIFwiYnVpbGRcIiByZXF1ZXN0IGlzIGRvbmUsIHdlIGNhbiByZWxlYXNlIG91clxuICAgICAgICAvLyB0ZW1wb3JhcnkgcmVmIGNvdW50IGJ1bXAuIEFueSBjb2RlIHRoYXQgd2FudHMgdG8gZXh0ZW5kIHRoZSBsaWZlXG4gICAgICAgIC8vIG9mIHRoZSBidWlsZCB3aWxsIGhhdmUgdG8gZG8gc28gYnkgZXhwbGljaXRseSByZXRhaW5pbmcgYSBjb3VudC5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjYWxsYmFjayhlcnIsIHJlcyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgYnVpbGRSZWZzLnVucmVmKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKTtcbiAgfTtcblxuICBsZXQgdHJhbnNmb3JtOiBTdHJlYW1TZXJ2aWNlW1widHJhbnNmb3JtXCJdID0gKFxuICAgIHsgY2FsbE5hbWUsIHJlZnMsIGlucHV0LCBvcHRpb25zLCBpc1RUWSwgZnMsIGNhbGxiYWNrIH0sXG4gICkgPT4ge1xuICAgIGNvbnN0IGRldGFpbHMgPSBjcmVhdGVPYmplY3RTdGFzaCgpO1xuXG4gICAgLy8gSWRlYWxseSB0aGUgXCJ0cmFuc2Zvcm0oKVwiIEFQSSB3b3VsZCBiZSBmYXN0ZXIgdGhhbiBjYWxsaW5nIFwiYnVpbGQoKVwiXG4gICAgLy8gc2luY2UgaXQgZG9lc24ndCBuZWVkIHRvIHRvdWNoIHRoZSBmaWxlIHN5c3RlbS4gSG93ZXZlciwgcGVyZm9ybWFuY2VcbiAgICAvLyBtZWFzdXJlbWVudHMgd2l0aCBsYXJnZSBmaWxlcyBvbiBtYWNPUyBpbmRpY2F0ZSB0aGF0IHNlbmRpbmcgdGhlIGRhdGFcbiAgICAvLyBvdmVyIHRoZSBzdGRpbyBwaXBlIGNhbiBiZSAyeCBzbG93ZXIgdGhhbiBqdXN0IHVzaW5nIGEgdGVtcG9yYXJ5IGZpbGUuXG4gICAgLy9cbiAgICAvLyBUaGlzIGFwcGVhcnMgdG8gYmUgYW4gT1MgbGltaXRhdGlvbi4gQm90aCB0aGUgSmF2YVNjcmlwdCBhbmQgR28gY29kZVxuICAgIC8vIGFyZSB1c2luZyBsYXJnZSBidWZmZXJzIGJ1dCB0aGUgcGlwZSBvbmx5IHdyaXRlcyBkYXRhIGluIDhrYiBjaHVua3MuXG4gICAgLy8gQW4gaW52ZXN0aWdhdGlvbiBzZWVtcyB0byBpbmRpY2F0ZSB0aGF0IHRoaXMgbnVtYmVyIGlzIGhhcmQtY29kZWQgaW50b1xuICAgIC8vIHRoZSBPUyBzb3VyY2UgY29kZS4gUHJlc3VtYWJseSBmaWxlcyBhcmUgZmFzdGVyIGJlY2F1c2UgdGhlIE9TIHVzZXNcbiAgICAvLyBhIGxhcmdlciBjaHVuayBzaXplLCBvciBtYXliZSBldmVuIHJlYWRzIGV2ZXJ5dGhpbmcgaW4gb25lIHN5c2NhbGwuXG4gICAgLy9cbiAgICAvLyBUaGUgY3Jvc3Mtb3ZlciBzaXplIHdoZXJlIHRoaXMgc3RhcnRzIHRvIGJlIGZhc3RlciBpcyBhcm91bmQgMW1iIG9uXG4gICAgLy8gbXkgbWFjaGluZS4gSW4gdGhhdCBjYXNlLCB0aGlzIGNvZGUgdHJpZXMgdG8gdXNlIGEgdGVtcG9yYXJ5IGZpbGUgaWZcbiAgICAvLyBwb3NzaWJsZSBidXQgZmFsbHMgYmFjayB0byBzZW5kaW5nIHRoZSBkYXRhIG92ZXIgdGhlIHN0ZGlvIHBpcGUgaWZcbiAgICAvLyB0aGF0IGRvZXNuJ3Qgd29yay5cbiAgICBsZXQgc3RhcnQgPSAoaW5wdXRQYXRoOiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ICE9PSBcInN0cmluZ1wiICYmICEoaW5wdXQgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdUaGUgaW5wdXQgdG8gXCJ0cmFuc2Zvcm1cIiBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgVWludDhBcnJheScsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQge1xuICAgICAgICAgIGZsYWdzLFxuICAgICAgICAgIG1hbmdsZUNhY2hlLFxuICAgICAgICB9ID0gZmxhZ3NGb3JUcmFuc2Zvcm1PcHRpb25zKFxuICAgICAgICAgIGNhbGxOYW1lLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgaXNUVFksXG4gICAgICAgICAgdHJhbnNmb3JtTG9nTGV2ZWxEZWZhdWx0LFxuICAgICAgICApO1xuICAgICAgICBsZXQgcmVxdWVzdDogcHJvdG9jb2wuVHJhbnNmb3JtUmVxdWVzdCA9IHtcbiAgICAgICAgICBjb21tYW5kOiBcInRyYW5zZm9ybVwiLFxuICAgICAgICAgIGZsYWdzLFxuICAgICAgICAgIGlucHV0RlM6IGlucHV0UGF0aCAhPT0gbnVsbCxcbiAgICAgICAgICBpbnB1dDogaW5wdXRQYXRoICE9PSBudWxsXG4gICAgICAgICAgICA/IHByb3RvY29sLmVuY29kZVVURjgoaW5wdXRQYXRoKVxuICAgICAgICAgICAgOiB0eXBlb2YgaW5wdXQgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gcHJvdG9jb2wuZW5jb2RlVVRGOChpbnB1dClcbiAgICAgICAgICAgIDogaW5wdXQsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChtYW5nbGVDYWNoZSkgcmVxdWVzdC5tYW5nbGVDYWNoZSA9IG1hbmdsZUNhY2hlO1xuICAgICAgICBzZW5kUmVxdWVzdDxwcm90b2NvbC5UcmFuc2Zvcm1SZXF1ZXN0LCBwcm90b2NvbC5UcmFuc2Zvcm1SZXNwb25zZT4oXG4gICAgICAgICAgcmVmcyxcbiAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgIChlcnJvciwgcmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcikgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcihlcnJvciksIG51bGwpO1xuICAgICAgICAgICAgbGV0IGVycm9ycyA9IHJlcGxhY2VEZXRhaWxzSW5NZXNzYWdlcyhyZXNwb25zZSEuZXJyb3JzLCBkZXRhaWxzKTtcbiAgICAgICAgICAgIGxldCB3YXJuaW5ncyA9IHJlcGxhY2VEZXRhaWxzSW5NZXNzYWdlcyhcbiAgICAgICAgICAgICAgcmVzcG9uc2UhLndhcm5pbmdzLFxuICAgICAgICAgICAgICBkZXRhaWxzLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGxldCBvdXRzdGFuZGluZyA9IDE7XG4gICAgICAgICAgICBsZXQgbmV4dCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKC0tb3V0c3RhbmRpbmcgPT09IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0OiB0eXBlcy5UcmFuc2Zvcm1SZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgICB3YXJuaW5ncyxcbiAgICAgICAgICAgICAgICAgIGNvZGU6IHJlc3BvbnNlIS5jb2RlLFxuICAgICAgICAgICAgICAgICAgbWFwOiByZXNwb25zZSEubWFwLFxuICAgICAgICAgICAgICAgICAgbWFuZ2xlQ2FjaGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIGxlZ2FsQ29tbWVudHM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChcImxlZ2FsQ29tbWVudHNcIiBpbiByZXNwb25zZSEpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdC5sZWdhbENvbW1lbnRzID0gcmVzcG9uc2U/LmxlZ2FsQ29tbWVudHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSEubWFuZ2xlQ2FjaGUpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdC5tYW5nbGVDYWNoZSA9IHJlc3BvbnNlPy5tYW5nbGVDYWNoZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICAgICAgICAgICAgZmFpbHVyZUVycm9yV2l0aExvZyhcIlRyYW5zZm9ybSBmYWlsZWRcIiwgZXJyb3JzLCB3YXJuaW5ncyksXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVhZCB0aGUgSmF2YVNjcmlwdCBmaWxlIGZyb20gdGhlIGZpbGUgc3lzdGVtXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UhLmNvZGVGUykge1xuICAgICAgICAgICAgICBvdXRzdGFuZGluZysrO1xuICAgICAgICAgICAgICBmcy5yZWFkRmlsZShyZXNwb25zZSEuY29kZSwgKGVyciwgY29udGVudHMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIsIG51bGwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXNwb25zZSEuY29kZSA9IGNvbnRlbnRzITtcbiAgICAgICAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZWFkIHRoZSBzb3VyY2UgbWFwIGZpbGUgZnJvbSB0aGUgZmlsZSBzeXN0ZW1cbiAgICAgICAgICAgIGlmIChyZXNwb25zZSEubWFwRlMpIHtcbiAgICAgICAgICAgICAgb3V0c3RhbmRpbmcrKztcbiAgICAgICAgICAgICAgZnMucmVhZEZpbGUocmVzcG9uc2UhLm1hcCwgKGVyciwgY29udGVudHMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIsIG51bGwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXNwb25zZSEubWFwID0gY29udGVudHMhO1xuICAgICAgICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsZXQgZmxhZ3M6IHN0cmluZ1tdID0gW107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcHVzaExvZ0ZsYWdzKGZsYWdzLCBvcHRpb25zLCB7fSwgaXNUVFksIHRyYW5zZm9ybUxvZ0xldmVsRGVmYXVsdCk7XG4gICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgY29uc3QgZXJyb3IgPSBleHRyYWN0RXJyb3JNZXNzYWdlVjgoZSwgc3RyZWFtSW4sIGRldGFpbHMsIHZvaWQgMCwgXCJcIik7XG4gICAgICAgIHNlbmRSZXF1ZXN0KHJlZnMsIHsgY29tbWFuZDogXCJlcnJvclwiLCBmbGFncywgZXJyb3IgfSwgKCkgPT4ge1xuICAgICAgICAgIGVycm9yLmRldGFpbCA9IGRldGFpbHMubG9hZChlcnJvci5kZXRhaWwpO1xuICAgICAgICAgIGNhbGxiYWNrKGZhaWx1cmVFcnJvcldpdGhMb2coXCJUcmFuc2Zvcm0gZmFpbGVkXCIsIFtlcnJvcl0sIFtdKSwgbnVsbCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKFxuICAgICAgKHR5cGVvZiBpbnB1dCA9PT0gXCJzdHJpbmdcIiB8fCBpbnB1dCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpICYmXG4gICAgICBpbnB1dC5sZW5ndGggPiAxMDI0ICogMTAyNFxuICAgICkge1xuICAgICAgbGV0IG5leHQgPSBzdGFydDtcbiAgICAgIHN0YXJ0ID0gKCkgPT4gZnMud3JpdGVGaWxlKGlucHV0LCBuZXh0KTtcbiAgICB9XG4gICAgc3RhcnQobnVsbCk7XG4gIH07XG5cbiAgbGV0IGZvcm1hdE1lc3NhZ2VzOiBTdHJlYW1TZXJ2aWNlW1wiZm9ybWF0TWVzc2FnZXNcIl0gPSAoXG4gICAgeyBjYWxsTmFtZSwgcmVmcywgbWVzc2FnZXMsIG9wdGlvbnMsIGNhbGxiYWNrIH0sXG4gICkgPT4ge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHNlY29uZCBhcmd1bWVudCBpbiAke2NhbGxOYW1lfSgpIGNhbGxgKTtcbiAgICB9XG4gICAgbGV0IGtleXM6IE9wdGlvbktleXMgPSB7fTtcbiAgICBsZXQga2luZCA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJraW5kXCIsIG11c3RCZVN0cmluZyk7XG4gICAgbGV0IGNvbG9yID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImNvbG9yXCIsIG11c3RCZUJvb2xlYW4pO1xuICAgIGxldCB0ZXJtaW5hbFdpZHRoID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInRlcm1pbmFsV2lkdGhcIiwgbXVzdEJlSW50ZWdlcik7XG4gICAgY2hlY2tGb3JJbnZhbGlkRmxhZ3Mob3B0aW9ucywga2V5cywgYGluICR7Y2FsbE5hbWV9KCkgY2FsbGApO1xuICAgIGlmIChraW5kID09PSB2b2lkIDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBcImtpbmRcIiBpbiAke2NhbGxOYW1lfSgpIGNhbGxgKTtcbiAgICB9XG4gICAgaWYgKGtpbmQgIT09IFwiZXJyb3JcIiAmJiBraW5kICE9PSBcIndhcm5pbmdcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRXhwZWN0ZWQgXCJraW5kXCIgdG8gYmUgXCJlcnJvclwiIG9yIFwid2FybmluZ1wiIGluICR7Y2FsbE5hbWV9KCkgY2FsbGAsXG4gICAgICApO1xuICAgIH1cbiAgICBsZXQgcmVxdWVzdDogcHJvdG9jb2wuRm9ybWF0TXNnc1JlcXVlc3QgPSB7XG4gICAgICBjb21tYW5kOiBcImZvcm1hdC1tc2dzXCIsXG4gICAgICBtZXNzYWdlczogc2FuaXRpemVNZXNzYWdlcyhtZXNzYWdlcywgXCJtZXNzYWdlc1wiLCBudWxsLCBcIlwiLCB0ZXJtaW5hbFdpZHRoKSxcbiAgICAgIGlzV2FybmluZzoga2luZCA9PT0gXCJ3YXJuaW5nXCIsXG4gICAgfTtcbiAgICBpZiAoY29sb3IgIT09IHZvaWQgMCkgcmVxdWVzdC5jb2xvciA9IGNvbG9yO1xuICAgIGlmICh0ZXJtaW5hbFdpZHRoICE9PSB2b2lkIDApIHJlcXVlc3QudGVybWluYWxXaWR0aCA9IHRlcm1pbmFsV2lkdGg7XG4gICAgc2VuZFJlcXVlc3Q8cHJvdG9jb2wuRm9ybWF0TXNnc1JlcXVlc3QsIHByb3RvY29sLkZvcm1hdE1zZ3NSZXNwb25zZT4oXG4gICAgICByZWZzLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIChlcnJvciwgcmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKGVycm9yKSwgbnVsbCk7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3BvbnNlIS5tZXNzYWdlcyk7XG4gICAgICB9LFxuICAgICk7XG4gIH07XG5cbiAgbGV0IGFuYWx5emVNZXRhZmlsZTogU3RyZWFtU2VydmljZVtcImFuYWx5emVNZXRhZmlsZVwiXSA9IChcbiAgICB7IGNhbGxOYW1lLCByZWZzLCBtZXRhZmlsZSwgb3B0aW9ucywgY2FsbGJhY2sgfSxcbiAgKSA9PiB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgb3B0aW9ucyA9IHt9O1xuICAgIGxldCBrZXlzOiBPcHRpb25LZXlzID0ge307XG4gICAgbGV0IGNvbG9yID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImNvbG9yXCIsIG11c3RCZUJvb2xlYW4pO1xuICAgIGxldCB2ZXJib3NlID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInZlcmJvc2VcIiwgbXVzdEJlQm9vbGVhbik7XG4gICAgY2hlY2tGb3JJbnZhbGlkRmxhZ3Mob3B0aW9ucywga2V5cywgYGluICR7Y2FsbE5hbWV9KCkgY2FsbGApO1xuICAgIGxldCByZXF1ZXN0OiBwcm90b2NvbC5BbmFseXplTWV0YWZpbGVSZXF1ZXN0ID0ge1xuICAgICAgY29tbWFuZDogXCJhbmFseXplLW1ldGFmaWxlXCIsXG4gICAgICBtZXRhZmlsZSxcbiAgICB9O1xuICAgIGlmIChjb2xvciAhPT0gdm9pZCAwKSByZXF1ZXN0LmNvbG9yID0gY29sb3I7XG4gICAgaWYgKHZlcmJvc2UgIT09IHZvaWQgMCkgcmVxdWVzdC52ZXJib3NlID0gdmVyYm9zZTtcbiAgICBzZW5kUmVxdWVzdDxcbiAgICAgIHByb3RvY29sLkFuYWx5emVNZXRhZmlsZVJlcXVlc3QsXG4gICAgICBwcm90b2NvbC5BbmFseXplTWV0YWZpbGVSZXNwb25zZVxuICAgID4ocmVmcywgcmVxdWVzdCwgKGVycm9yLCByZXNwb25zZSkgPT4ge1xuICAgICAgaWYgKGVycm9yKSByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKGVycm9yKSwgbnVsbCk7XG4gICAgICBjYWxsYmFjayhudWxsLCByZXNwb25zZSEucmVzdWx0KTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHJlYWRGcm9tU3Rkb3V0LFxuICAgIGFmdGVyQ2xvc2UsXG4gICAgc2VydmljZToge1xuICAgICAgYnVpbGRPckNvbnRleHQsXG4gICAgICB0cmFuc2Zvcm0sXG4gICAgICBmb3JtYXRNZXNzYWdlcyxcbiAgICAgIGFuYWx5emVNZXRhZmlsZSxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZE9yQ29udGV4dEltcGwoXG4gIGNhbGxOYW1lOiBzdHJpbmcsXG4gIGJ1aWxkS2V5OiBudW1iZXIsXG4gIHNlbmRSZXF1ZXN0OiA8UmVxLCBSZXM+KFxuICAgIHJlZnM6IFJlZnMgfCBudWxsLFxuICAgIHZhbHVlOiBSZXEsXG4gICAgY2FsbGJhY2s6IChlcnJvcjogc3RyaW5nIHwgbnVsbCwgcmVzcG9uc2U6IFJlcyB8IG51bGwpID0+IHZvaWQsXG4gICkgPT4gdm9pZCxcbiAgc2VuZFJlc3BvbnNlOiAoaWQ6IG51bWJlciwgdmFsdWU6IHByb3RvY29sLlZhbHVlKSA9PiB2b2lkLFxuICByZWZzOiBSZWZzLFxuICBzdHJlYW1JbjogU3RyZWFtSW4sXG4gIHJlcXVlc3RDYWxsYmFja3M6IHsgW2NvbW1hbmQ6IHN0cmluZ106IFJlcXVlc3RDYWxsYmFjayB9LFxuICBvcHRpb25zOiB0eXBlcy5CdWlsZE9wdGlvbnMsXG4gIGlzVFRZOiBib29sZWFuLFxuICBkZWZhdWx0V0Q6IHN0cmluZyxcbiAgY2FsbGJhY2s6IChcbiAgICBlcnI6IEVycm9yIHwgbnVsbCxcbiAgICByZXM6IHR5cGVzLkJ1aWxkUmVzdWx0IHwgdHlwZXMuQnVpbGRDb250ZXh0IHwgbnVsbCxcbiAgKSA9PiB2b2lkLFxuKTogdm9pZCB7XG4gIGNvbnN0IGRldGFpbHMgPSBjcmVhdGVPYmplY3RTdGFzaCgpO1xuICBjb25zdCBpc0NvbnRleHQgPSBjYWxsTmFtZSA9PT0gXCJjb250ZXh0XCI7XG5cbiAgY29uc3QgaGFuZGxlRXJyb3IgPSAoZTogYW55LCBwbHVnaW5OYW1lOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICBjb25zdCBmbGFnczogc3RyaW5nW10gPSBbXTtcbiAgICB0cnkge1xuICAgICAgcHVzaExvZ0ZsYWdzKGZsYWdzLCBvcHRpb25zLCB7fSwgaXNUVFksIGJ1aWxkTG9nTGV2ZWxEZWZhdWx0KTtcbiAgICB9IGNhdGNoIHt9XG4gICAgY29uc3QgbWVzc2FnZSA9IGV4dHJhY3RFcnJvck1lc3NhZ2VWOChcbiAgICAgIGUsXG4gICAgICBzdHJlYW1JbixcbiAgICAgIGRldGFpbHMsXG4gICAgICB2b2lkIDAsXG4gICAgICBwbHVnaW5OYW1lLFxuICAgICk7XG4gICAgc2VuZFJlcXVlc3QocmVmcywgeyBjb21tYW5kOiBcImVycm9yXCIsIGZsYWdzLCBlcnJvcjogbWVzc2FnZSB9LCAoKSA9PiB7XG4gICAgICBtZXNzYWdlLmRldGFpbCA9IGRldGFpbHMubG9hZChtZXNzYWdlLmRldGFpbCk7XG4gICAgICBjYWxsYmFjayhcbiAgICAgICAgZmFpbHVyZUVycm9yV2l0aExvZyhpc0NvbnRleHQgPyBcIkNvbnRleHQgZmFpbGVkXCIgOiBcIkJ1aWxkIGZhaWxlZFwiLCBbXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgXSwgW10pLFxuICAgICAgICBudWxsLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfTtcblxuICBsZXQgcGx1Z2luczogdHlwZXMuUGx1Z2luW10gfCB1bmRlZmluZWQ7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJvYmplY3RcIikge1xuICAgIGNvbnN0IHZhbHVlID0gb3B0aW9ucy5wbHVnaW5zO1xuICAgIGlmICh2YWx1ZSAhPT0gdm9pZCAwKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVFcnJvcihuZXcgRXJyb3IoYFwicGx1Z2luc1wiIG11c3QgYmUgYW4gYXJyYXlgKSwgXCJcIik7XG4gICAgICB9XG4gICAgICBwbHVnaW5zID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBsdWdpbnMgJiYgcGx1Z2lucy5sZW5ndGggPiAwKSB7XG4gICAgaWYgKHN0cmVhbUluLmlzU3luYykge1xuICAgICAgcmV0dXJuIGhhbmRsZUVycm9yKFxuICAgICAgICBuZXcgRXJyb3IoXCJDYW5ub3QgdXNlIHBsdWdpbnMgaW4gc3luY2hyb25vdXMgQVBJIGNhbGxzXCIpLFxuICAgICAgICBcIlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBQbHVnaW5zIGNhbiB1c2UgYXN5bmMvYXdhaXQgYmVjYXVzZSB0aGV5IGNhbid0IGJlIHJ1biB3aXRoIFwiYnVpbGRTeW5jXCJcbiAgICBoYW5kbGVQbHVnaW5zKFxuICAgICAgYnVpbGRLZXksXG4gICAgICBzZW5kUmVxdWVzdCxcbiAgICAgIHNlbmRSZXNwb25zZSxcbiAgICAgIHJlZnMsXG4gICAgICBzdHJlYW1JbixcbiAgICAgIHJlcXVlc3RDYWxsYmFja3MsXG4gICAgICBvcHRpb25zLFxuICAgICAgcGx1Z2lucyxcbiAgICAgIGRldGFpbHMsXG4gICAgKS50aGVuKFxuICAgICAgKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAoIXJlc3VsdC5vaykgcmV0dXJuIGhhbmRsZUVycm9yKHJlc3VsdC5lcnJvciwgcmVzdWx0LnBsdWdpbk5hbWUpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGJ1aWxkT3JDb250ZXh0Q29udGludWUoXG4gICAgICAgICAgICByZXN1bHQucmVxdWVzdFBsdWdpbnMsXG4gICAgICAgICAgICByZXN1bHQucnVuT25FbmRDYWxsYmFja3MsXG4gICAgICAgICAgICByZXN1bHQuc2NoZWR1bGVPbkRpc3Bvc2VDYWxsYmFja3MsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGhhbmRsZUVycm9yKGUsIFwiXCIpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGUpID0+IGhhbmRsZUVycm9yKGUsIFwiXCIpLFxuICAgICk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBidWlsZE9yQ29udGV4dENvbnRpbnVlKG51bGwsIChyZXN1bHQsIGRvbmUpID0+IGRvbmUoW10sIFtdKSwgKCkgPT4ge30pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaGFuZGxlRXJyb3IoZSwgXCJcIik7XG4gIH1cblxuICAvLyBcImJ1aWxkT3JDb250ZXh0XCIgY2Fubm90IGJlIHdyaXR0ZW4gdXNpbmcgYXN5bmMvYXdhaXQgZHVlIHRvIFwiYnVpbGRTeW5jXCJcbiAgLy8gYW5kIG11c3QgYmUgd3JpdHRlbiBpbiBjb250aW51YXRpb24tcGFzc2luZyBzdHlsZSBpbnN0ZWFkXG4gIGZ1bmN0aW9uIGJ1aWxkT3JDb250ZXh0Q29udGludWUoXG4gICAgcmVxdWVzdFBsdWdpbnM6IHByb3RvY29sLkJ1aWxkUGx1Z2luW10gfCBudWxsLFxuICAgIHJ1bk9uRW5kQ2FsbGJhY2tzOiBSdW5PbkVuZENhbGxiYWNrcyxcbiAgICBzY2hlZHVsZU9uRGlzcG9zZUNhbGxiYWNrczogKCkgPT4gdm9pZCxcbiAgKSB7XG4gICAgY29uc3Qgd3JpdGVEZWZhdWx0ID0gc3RyZWFtSW4uaGFzRlM7XG4gICAgY29uc3Qge1xuICAgICAgZW50cmllcyxcbiAgICAgIGZsYWdzLFxuICAgICAgd3JpdGUsXG4gICAgICBzdGRpbkNvbnRlbnRzLFxuICAgICAgc3RkaW5SZXNvbHZlRGlyLFxuICAgICAgYWJzV29ya2luZ0RpcixcbiAgICAgIG5vZGVQYXRocyxcbiAgICAgIG1hbmdsZUNhY2hlLFxuICAgIH0gPSBmbGFnc0ZvckJ1aWxkT3B0aW9ucyhcbiAgICAgIGNhbGxOYW1lLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIGlzVFRZLFxuICAgICAgYnVpbGRMb2dMZXZlbERlZmF1bHQsXG4gICAgICB3cml0ZURlZmF1bHQsXG4gICAgKTtcbiAgICBpZiAod3JpdGUgJiYgIXN0cmVhbUluLmhhc0ZTKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBcIndyaXRlXCIgb3B0aW9uIGlzIHVuYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnRgKTtcbiAgICB9XG5cbiAgICAvLyBDb25zdHJ1Y3QgdGhlIHJlcXVlc3RcbiAgICBjb25zdCByZXF1ZXN0OiBwcm90b2NvbC5CdWlsZFJlcXVlc3QgPSB7XG4gICAgICBjb21tYW5kOiBcImJ1aWxkXCIsXG4gICAgICBrZXk6IGJ1aWxkS2V5LFxuICAgICAgZW50cmllcyxcbiAgICAgIGZsYWdzLFxuICAgICAgd3JpdGUsXG4gICAgICBzdGRpbkNvbnRlbnRzLFxuICAgICAgc3RkaW5SZXNvbHZlRGlyLFxuICAgICAgYWJzV29ya2luZ0RpcjogYWJzV29ya2luZ0RpciB8fCBkZWZhdWx0V0QsXG4gICAgICBub2RlUGF0aHMsXG4gICAgICBjb250ZXh0OiBpc0NvbnRleHQsXG4gICAgfTtcbiAgICBpZiAocmVxdWVzdFBsdWdpbnMpIHJlcXVlc3QucGx1Z2lucyA9IHJlcXVlc3RQbHVnaW5zO1xuICAgIGlmIChtYW5nbGVDYWNoZSkgcmVxdWVzdC5tYW5nbGVDYWNoZSA9IG1hbmdsZUNhY2hlO1xuXG4gICAgLy8gRmFjdG9yIG91dCByZXNwb25zZSBoYW5kbGluZyBzbyBpdCBjYW4gYmUgcmV1c2VkIGZvciByZWJ1aWxkc1xuICAgIGNvbnN0IGJ1aWxkUmVzcG9uc2VUb1Jlc3VsdCA9IChcbiAgICAgIHJlc3BvbnNlOiBwcm90b2NvbC5CdWlsZFJlc3BvbnNlIHwgbnVsbCxcbiAgICAgIGNhbGxiYWNrOiAoXG4gICAgICAgIGVycm9yOiB0eXBlcy5CdWlsZEZhaWx1cmUgfCBudWxsLFxuICAgICAgICByZXN1bHQ6IHR5cGVzLkJ1aWxkUmVzdWx0IHwgbnVsbCxcbiAgICAgICAgb25FbmRFcnJvcnM6IHR5cGVzLk1lc3NhZ2VbXSxcbiAgICAgICAgb25FbmRXYXJuaW5nczogdHlwZXMuTWVzc2FnZVtdLFxuICAgICAgKSA9PiB2b2lkLFxuICAgICk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0OiB0eXBlcy5CdWlsZFJlc3VsdCA9IHtcbiAgICAgICAgZXJyb3JzOiByZXBsYWNlRGV0YWlsc0luTWVzc2FnZXMocmVzcG9uc2UhLmVycm9ycywgZGV0YWlscyksXG4gICAgICAgIHdhcm5pbmdzOiByZXBsYWNlRGV0YWlsc0luTWVzc2FnZXMocmVzcG9uc2UhLndhcm5pbmdzLCBkZXRhaWxzKSxcbiAgICAgICAgb3V0cHV0RmlsZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgbWV0YWZpbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgbWFuZ2xlQ2FjaGU6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgICBjb25zdCBvcmlnaW5hbEVycm9ycyA9IHJlc3VsdC5lcnJvcnMuc2xpY2UoKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsV2FybmluZ3MgPSByZXN1bHQud2FybmluZ3Muc2xpY2UoKTtcbiAgICAgIGlmIChyZXNwb25zZSEub3V0cHV0RmlsZXMpIHtcbiAgICAgICAgcmVzdWx0Lm91dHB1dEZpbGVzID0gcmVzcG9uc2UhLm91dHB1dEZpbGVzLm1hcChjb252ZXJ0T3V0cHV0RmlsZXMpO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3BvbnNlIS5tZXRhZmlsZSkgcmVzdWx0Lm1ldGFmaWxlID0gSlNPTi5wYXJzZShyZXNwb25zZSEubWV0YWZpbGUpO1xuICAgICAgaWYgKHJlc3BvbnNlIS5tYW5nbGVDYWNoZSkgcmVzdWx0Lm1hbmdsZUNhY2hlID0gcmVzcG9uc2UhLm1hbmdsZUNhY2hlO1xuICAgICAgaWYgKHJlc3BvbnNlIS53cml0ZVRvU3Rkb3V0ICE9PSB2b2lkIDApIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgcHJvdG9jb2wuZGVjb2RlVVRGOChyZXNwb25zZSEud3JpdGVUb1N0ZG91dCkucmVwbGFjZSgvXFxuJC8sIFwiXCIpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcnVuT25FbmRDYWxsYmFja3MocmVzdWx0LCAob25FbmRFcnJvcnMsIG9uRW5kV2FybmluZ3MpID0+IHtcbiAgICAgICAgaWYgKG9yaWdpbmFsRXJyb3JzLmxlbmd0aCA+IDAgfHwgb25FbmRFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gZmFpbHVyZUVycm9yV2l0aExvZyhcbiAgICAgICAgICAgIFwiQnVpbGQgZmFpbGVkXCIsXG4gICAgICAgICAgICBvcmlnaW5hbEVycm9ycy5jb25jYXQob25FbmRFcnJvcnMpLFxuICAgICAgICAgICAgb3JpZ2luYWxXYXJuaW5ncy5jb25jYXQob25FbmRXYXJuaW5ncyksXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3IsIG51bGwsIG9uRW5kRXJyb3JzLCBvbkVuZFdhcm5pbmdzKTtcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjayhudWxsLCByZXN1bHQsIG9uRW5kRXJyb3JzLCBvbkVuZFdhcm5pbmdzKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvLyBJbiBjb250ZXh0IG1vZGUsIEdvIHJ1bnMgdGhlIFwib25FbmRcIiBjYWxsYmFja3MgaW5zdGVhZCBvZiBKYXZhU2NyaXB0XG4gICAgbGV0IGxhdGVzdFJlc3VsdFByb21pc2U6IFByb21pc2U8dHlwZXMuQnVpbGRSZXN1bHQ+IHwgdW5kZWZpbmVkO1xuICAgIGxldCBwcm92aWRlTGF0ZXN0UmVzdWx0OlxuICAgICAgfCAoKFxuICAgICAgICBlcnJvcjogdHlwZXMuQnVpbGRGYWlsdXJlIHwgbnVsbCxcbiAgICAgICAgcmVzdWx0OiB0eXBlcy5CdWlsZFJlc3VsdCB8IG51bGwsXG4gICAgICApID0+IHZvaWQpXG4gICAgICB8IHVuZGVmaW5lZDtcbiAgICBpZiAoaXNDb250ZXh0KSB7XG4gICAgICByZXF1ZXN0Q2FsbGJhY2tzW1wib24tZW5kXCJdID0gKGlkLCByZXF1ZXN0OiBwcm90b2NvbC5PbkVuZFJlcXVlc3QpID0+XG4gICAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgYnVpbGRSZXNwb25zZVRvUmVzdWx0KFxuICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgIChlcnIsIHJlc3VsdCwgb25FbmRFcnJvcnMsIG9uRW5kV2FybmluZ3MpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2U6IHByb3RvY29sLk9uRW5kUmVzcG9uc2UgPSB7XG4gICAgICAgICAgICAgICAgZXJyb3JzOiBvbkVuZEVycm9ycyxcbiAgICAgICAgICAgICAgICB3YXJuaW5nczogb25FbmRXYXJuaW5ncyxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgaWYgKHByb3ZpZGVMYXRlc3RSZXN1bHQpIHByb3ZpZGVMYXRlc3RSZXN1bHQoZXJyLCByZXN1bHQpO1xuICAgICAgICAgICAgICBsYXRlc3RSZXN1bHRQcm9taXNlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBwcm92aWRlTGF0ZXN0UmVzdWx0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBzZW5kUmVzcG9uc2UoaWQsIHJlc3BvbnNlIGFzIGFueSk7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2VuZFJlcXVlc3Q8cHJvdG9jb2wuQnVpbGRSZXF1ZXN0LCBwcm90b2NvbC5CdWlsZFJlc3BvbnNlPihcbiAgICAgIHJlZnMsXG4gICAgICByZXF1ZXN0LFxuICAgICAgKGVycm9yLCByZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoZXJyb3IpLCBudWxsKTtcbiAgICAgICAgaWYgKCFpc0NvbnRleHQpIHtcbiAgICAgICAgICByZXR1cm4gYnVpbGRSZXNwb25zZVRvUmVzdWx0KHJlc3BvbnNlISwgKGVyciwgcmVzKSA9PiB7XG4gICAgICAgICAgICBzY2hlZHVsZU9uRGlzcG9zZUNhbGxiYWNrcygpO1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVyciwgcmVzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbnN0cnVjdCBhIGNvbnRleHQgb2JqZWN0XG4gICAgICAgIGlmIChyZXNwb25zZSEuZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICAgICAgICBmYWlsdXJlRXJyb3JXaXRoTG9nKFxuICAgICAgICAgICAgICBcIkNvbnRleHQgZmFpbGVkXCIsXG4gICAgICAgICAgICAgIHJlc3BvbnNlIS5lcnJvcnMsXG4gICAgICAgICAgICAgIHJlc3BvbnNlIS53YXJuaW5ncyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRpZERpc3Bvc2UgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiB0eXBlcy5CdWlsZENvbnRleHQgPSB7XG4gICAgICAgICAgcmVidWlsZDogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFsYXRlc3RSZXN1bHRQcm9taXNlKSB7XG4gICAgICAgICAgICAgIGxhdGVzdFJlc3VsdFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHNldHRsZVByb21pc2U6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBwcm92aWRlTGF0ZXN0UmVzdWx0ID0gKGVyciwgcmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoIXNldHRsZVByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0dGxlUHJvbWlzZSA9ICgpID0+IGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZShyZXN1bHQhKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJBbm90aGVyQnVpbGQgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0OiBwcm90b2NvbC5SZWJ1aWxkUmVxdWVzdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogXCJyZWJ1aWxkXCIsXG4gICAgICAgICAgICAgICAgICAgIGtleTogYnVpbGRLZXksXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgc2VuZFJlcXVlc3Q8XG4gICAgICAgICAgICAgICAgICAgIHByb3RvY29sLlJlYnVpbGRSZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgICBwcm90b2NvbC5SZWJ1aWxkUmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgID4ocmVmcywgcmVxdWVzdCwgKGVycm9yLCByZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2V0dGxlUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdG8gc2V0dGxlIHRoZSBwcm9taXNlIHRoYXQgd2UgcmV0dXJuZWQgZnJvbVxuICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgXCJyZWJ1aWxkKClcIiBmdW5jdGlvbiBlYXJsaWVyIHRoYW4gdGhpcyBwb2ludC4gSG93ZXZlcixcbiAgICAgICAgICAgICAgICAgICAgICAvLyBhdCB0aGF0IHBvaW50IHRoZSB1c2VyIGNvdWxkIGNhbGwgXCJyZWJ1aWxkKClcIiBhZ2FpbiB3aGljaFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHdvdWxkIHVuZXhwZWN0ZWRseSBtZXJnZSB3aXRoIHRoZSBzYW1lIGJ1aWxkIHRoYXQncyBzdGlsbFxuICAgICAgICAgICAgICAgICAgICAgIC8vIG9uZ29pbmcuIFRvIHByZXZlbnQgdGhhdCwgd2UgZGVmZXIgc2V0dGxpbmcgdGhlIHByb21pc2VcbiAgICAgICAgICAgICAgICAgICAgICAvLyB1bnRpbCBub3cgd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGJ1aWxkIGhhcyBmaW5pc2hlZC5cbiAgICAgICAgICAgICAgICAgICAgICBzZXR0bGVQcm9taXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiB3ZSBjYWxsIFwicmVidWlsZCgpXCIsIHdlIGNhbGwgb3V0IHRvIHRoZSBHbyBcIlJlYnVpbGQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgLy8gQVBJIG92ZXIgSVBDLiBUaGF0IG1heSB0cmlnZ2VyIGEgYnVpbGQsIGJ1dCBtYXkgYWxzbyBcImpvaW5cIlxuICAgICAgICAgICAgICAgICAgICAgIC8vIGFuIGV4aXN0aW5nIGJ1aWxkLiBBdCBzb21lIHBvaW50IHRoZSBHbyBjb2RlIHNlbmRzIHVzIGFuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gXCJvbi1lbmRcIiBtZXNzYWdlIHdpdGggdGhlIGJ1aWxkIHJlc3VsdCB0byB0ZWxsIHVzIHRvIHJ1blxuICAgICAgICAgICAgICAgICAgICAgIC8vIG91ciBcIm9uRW5kXCIgcGx1Z2lucy4gV2UgY2FwdHVyZSB0aGF0IGJ1aWxkIHJlc3VsdCBhbmQgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gaXQgaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAgIC8vIEhvd2V2ZXIsIHRoZXJlJ3MgYSBwb3RlbnRpYWwgcHJvYmxlbTogRm9yIHBlcmZvcm1hbmNlLCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAvLyBHbyBjb2RlIHdpbGwgb25seSBzZW5kIHVzIHRoZSByZXN1bHQgaWYgaXQncyBuZWVkZWQsIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBoYXBwZW5zIGlmIHRoZXJlIGFyZSBcIm9uRW5kXCIgY2FsbGJhY2tzIG9yIGlmIFwicmVidWlsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgLy8gd2FzIGNhbGxlZC4gU28gdGhlcmUncyBhIHJhY2Ugd2hlcmUgdGhlIGZvbGxvd2luZyB0aGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAvLyBoYXBwZW46XG4gICAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgICAvLyAxLiBHbyBzdGFydHMgYSByZWJ1aWxkIChlLmcuIGR1ZSB0byB3YXRjaCBtb2RlKVxuICAgICAgICAgICAgICAgICAgICAgIC8vIDIuIEpTIGNhbGxzIFwicmVidWlsZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAzLiBHbyBlbmRzIHRoZSBidWlsZCBhbmQgc3RhcnRzIEdvJ3MgXCJPbkVuZFwiIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgICAgLy8gNC4gR28ncyBcIk9uRW5kXCIgY2FsbGJhY2sgc2VlcyBubyBuZWVkIHRvIHNlbmQgdGhlIHJlc3VsdFxuICAgICAgICAgICAgICAgICAgICAgIC8vIDUuIEpTIGFza3MgR28gdG8gcmVidWlsZCwgd2hpY2ggbWVyZ2VzIHdpdGggdGhlIGV4aXN0aW5nIGJ1aWxkXG4gICAgICAgICAgICAgICAgICAgICAgLy8gNi4gR28ncyBleGlzdGluZyBidWlsZCBlbmRzXG4gICAgICAgICAgICAgICAgICAgICAgLy8gNy4gVGhlIG1lcmdlZCBidWlsZCBlbmRzLCB3aGljaCB3YWtlcyB1cCBKUyBhbmQgZW5kcyB1cCBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGF0IHNpdHVhdGlvbiB3ZSBkaWRuJ3QgZ2V0IGFuIFwib24tZW5kXCIgbWVzc2FnZSBzaW5jZVxuICAgICAgICAgICAgICAgICAgICAgIC8vIEdvIHRob3VnaHQgaXQgd2Fzbid0IG5lY2Vzc2FyeS4gSW4gdGhhdCBzaXR1YXRpb24sIHdlXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlciBhbm90aGVyIHJlYnVpbGQgYmVsb3cgc28gdGhhdCBHbyB3aWxsIChhbG1vc3RcbiAgICAgICAgICAgICAgICAgICAgICAvLyBzdXJlbHkpIHNlbmQgdXMgYW4gXCJvbi1lbmRcIiBtZXNzYWdlIG5leHQgdGltZS4gSSBzdXNwZWN0XG4gICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCB0aGlzIGlzIGEgdmVyeSByYXJlIGNhc2UsIHNvIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3RcbiAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBidWlsZGluZyB0d2ljZSBzaG91bGRuJ3QgcmVhbGx5IG1hdHRlci4gSXQgYWxzbyBvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgLy8gaGFwcGVucyB3aGVuIFwicmVidWlsZCgpXCIgaXMgdXNlZCB3aXRoIFwid2F0Y2goKVwiIGFuZC9vclxuICAgICAgICAgICAgICAgICAgICAgIC8vIFwic2VydmUoKVwiLlxuICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJBbm90aGVyQnVpbGQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyQW5vdGhlckJ1aWxkKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGxhdGVzdFJlc3VsdFByb21pc2U7XG4gICAgICAgICAgfSxcblxuICAgICAgICAgIHdhdGNoOiAob3B0aW9ucyA9IHt9KSA9PlxuICAgICAgICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXN0cmVhbUluLmhhc0ZTKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgYENhbm5vdCB1c2UgdGhlIFwid2F0Y2hcIiBBUEkgaW4gdGhpcyBlbnZpcm9ubWVudGAsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBrZXlzOiBPcHRpb25LZXlzID0ge307XG4gICAgICAgICAgICAgIGNoZWNrRm9ySW52YWxpZEZsYWdzKG9wdGlvbnMsIGtleXMsIGBpbiB3YXRjaCgpIGNhbGxgKTtcbiAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdDogcHJvdG9jb2wuV2F0Y2hSZXF1ZXN0ID0ge1xuICAgICAgICAgICAgICAgIGNvbW1hbmQ6IFwid2F0Y2hcIixcbiAgICAgICAgICAgICAgICBrZXk6IGJ1aWxkS2V5LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBzZW5kUmVxdWVzdDxwcm90b2NvbC5XYXRjaFJlcXVlc3QsIG51bGw+KFxuICAgICAgICAgICAgICAgIHJlZnMsXG4gICAgICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikgcmVqZWN0KG5ldyBFcnJvcihlcnJvcikpO1xuICAgICAgICAgICAgICAgICAgZWxzZSByZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgc2VydmU6IChvcHRpb25zID0ge30pID0+XG4gICAgICAgICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghc3RyZWFtSW4uaGFzRlMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICBgQ2Fubm90IHVzZSB0aGUgXCJzZXJ2ZVwiIEFQSSBpbiB0aGlzIGVudmlyb25tZW50YCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGtleXM6IE9wdGlvbktleXMgPSB7fTtcbiAgICAgICAgICAgICAgY29uc3QgcG9ydCA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJwb3J0XCIsIG11c3RCZUludGVnZXIpO1xuICAgICAgICAgICAgICBjb25zdCBob3N0ID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImhvc3RcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgICAgICAgY29uc3Qgc2VydmVkaXIgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwic2VydmVkaXJcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgICAgICAgY29uc3Qga2V5ZmlsZSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJrZXlmaWxlXCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgICAgICAgIGNvbnN0IGNlcnRmaWxlID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImNlcnRmaWxlXCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgICAgICAgIGNvbnN0IGZhbGxiYWNrID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImZhbGxiYWNrXCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgICAgICAgIGNvbnN0IG9uUmVxdWVzdCA9IGdldEZsYWcoXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICAgICBrZXlzLFxuICAgICAgICAgICAgICAgIFwib25SZXF1ZXN0XCIsXG4gICAgICAgICAgICAgICAgbXVzdEJlRnVuY3Rpb24sXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNoZWNrRm9ySW52YWxpZEZsYWdzKG9wdGlvbnMsIGtleXMsIGBpbiBzZXJ2ZSgpIGNhbGxgKTtcblxuICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0OiBwcm90b2NvbC5TZXJ2ZVJlcXVlc3QgPSB7XG4gICAgICAgICAgICAgICAgY29tbWFuZDogXCJzZXJ2ZVwiLFxuICAgICAgICAgICAgICAgIGtleTogYnVpbGRLZXksXG4gICAgICAgICAgICAgICAgb25SZXF1ZXN0OiAhIW9uUmVxdWVzdCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgaWYgKHBvcnQgIT09IHZvaWQgMCkgcmVxdWVzdC5wb3J0ID0gcG9ydDtcbiAgICAgICAgICAgICAgaWYgKGhvc3QgIT09IHZvaWQgMCkgcmVxdWVzdC5ob3N0ID0gaG9zdDtcbiAgICAgICAgICAgICAgaWYgKHNlcnZlZGlyICE9PSB2b2lkIDApIHJlcXVlc3Quc2VydmVkaXIgPSBzZXJ2ZWRpcjtcbiAgICAgICAgICAgICAgaWYgKGtleWZpbGUgIT09IHZvaWQgMCkgcmVxdWVzdC5rZXlmaWxlID0ga2V5ZmlsZTtcbiAgICAgICAgICAgICAgaWYgKGNlcnRmaWxlICE9PSB2b2lkIDApIHJlcXVlc3QuY2VydGZpbGUgPSBjZXJ0ZmlsZTtcbiAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrICE9PSB2b2lkIDApIHJlcXVlc3QuZmFsbGJhY2sgPSBmYWxsYmFjaztcblxuICAgICAgICAgICAgICBzZW5kUmVxdWVzdDxwcm90b2NvbC5TZXJ2ZVJlcXVlc3QsIHByb3RvY29sLlNlcnZlUmVzcG9uc2U+KFxuICAgICAgICAgICAgICAgIHJlZnMsXG4gICAgICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgICAgICAoZXJyb3IsIHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHJldHVybiByZWplY3QobmV3IEVycm9yKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgICBpZiAob25SZXF1ZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RDYWxsYmFja3NbXCJzZXJ2ZS1yZXF1ZXN0XCJdID0gKFxuICAgICAgICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6IHByb3RvY29sLk9uU2VydmVSZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBvblJlcXVlc3QocmVxdWVzdC5hcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgICBzZW5kUmVzcG9uc2UoaWQsIHt9KTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UhKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICBjYW5jZWw6ICgpID0+XG4gICAgICAgICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZGlkRGlzcG9zZSkgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdDogcHJvdG9jb2wuQ2FuY2VsUmVxdWVzdCA9IHtcbiAgICAgICAgICAgICAgICBjb21tYW5kOiBcImNhbmNlbFwiLFxuICAgICAgICAgICAgICAgIGtleTogYnVpbGRLZXksXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHNlbmRSZXF1ZXN0PHByb3RvY29sLkNhbmNlbFJlcXVlc3QsIG51bGw+KHJlZnMsIHJlcXVlc3QsICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7IC8vIFdlIGRvbid0IGNhcmUgYWJvdXQgZXJyb3JzIGhlcmVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgIGRpc3Bvc2U6ICgpID0+XG4gICAgICAgICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZGlkRGlzcG9zZSkgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgZGlkRGlzcG9zZSA9IHRydWU7IC8vIERvbid0IGRpc3Bvc2UgbW9yZSB0aGFuIG9uY2VcbiAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdDogcHJvdG9jb2wuRGlzcG9zZVJlcXVlc3QgPSB7XG4gICAgICAgICAgICAgICAgY29tbWFuZDogXCJkaXNwb3NlXCIsXG4gICAgICAgICAgICAgICAga2V5OiBidWlsZEtleSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgc2VuZFJlcXVlc3Q8cHJvdG9jb2wuRGlzcG9zZVJlcXVlc3QsIG51bGw+KHJlZnMsIHJlcXVlc3QsICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7IC8vIFdlIGRvbid0IGNhcmUgYWJvdXQgZXJyb3JzIGhlcmVcbiAgICAgICAgICAgICAgICBzY2hlZHVsZU9uRGlzcG9zZUNhbGxiYWNrcygpO1xuXG4gICAgICAgICAgICAgICAgLy8gT25seSByZW1vdmUgdGhlIHJlZmVyZW5jZSBoZXJlIHdoZW4gd2Uga25vdyB0aGUgR28gY29kZSBoYXMgc2VlblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgXCJkaXNwb3NlXCIgY2FsbC4gV2UgZG9uJ3Qgd2FudCB0byByZW1vdmUgYW55IHJlZ2lzdGVyZWRcbiAgICAgICAgICAgICAgICAvLyBjYWxsYmFja3MgYmVmb3JlIHRoYXQgcG9pbnQgYmVjYXVzZSB0aGUgR28gY29kZSBtaWdodCBzdGlsbCBiZVxuICAgICAgICAgICAgICAgIC8vIHNlbmRpbmcgdXMgZXZlbnRzLiBJZiB3ZSByZW1vdmUgdGhlIHJlZmVyZW5jZSBlYXJsaWVyIHRoZW4gd2VcbiAgICAgICAgICAgICAgICAvLyB3aWxsIHJldHVybiBlcnJvcnMgZm9yIHRob3NlIGV2ZW50cywgd2hpY2ggbWF5IGVuZCB1cCBiZWluZ1xuICAgICAgICAgICAgICAgIC8vIHByaW50ZWQgdG8gdGhlIHRlcm1pbmFsIHdoZXJlIHRoZSB1c2VyIGNhbiBzZWUgdGhlbSwgd2hpY2ggd291bGRcbiAgICAgICAgICAgICAgICAvLyBiZSB2ZXJ5IGNvbmZ1c2luZy5cbiAgICAgICAgICAgICAgICByZWZzLnVucmVmKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICAgIHJlZnMucmVmKCk7IC8vIEtlZXAgYSByZWZlcmVuY2UgdW50aWwgXCJkaXNwb3NlXCIgaXMgY2FsbGVkXG4gICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XG4gICAgICB9LFxuICAgICk7XG4gIH1cbn1cblxudHlwZSBSdW5PbkVuZENhbGxiYWNrcyA9IChcbiAgcmVzdWx0OiB0eXBlcy5CdWlsZFJlc3VsdCxcbiAgZG9uZTogKGVycm9yczogdHlwZXMuTWVzc2FnZVtdLCB3YXJuaW5nczogdHlwZXMuTWVzc2FnZVtdKSA9PiB2b2lkLFxuKSA9PiB2b2lkO1xuXG5sZXQgaGFuZGxlUGx1Z2lucyA9IGFzeW5jIChcbiAgYnVpbGRLZXk6IG51bWJlcixcbiAgc2VuZFJlcXVlc3Q6IDxSZXEsIFJlcz4oXG4gICAgcmVmczogUmVmcyB8IG51bGwsXG4gICAgdmFsdWU6IFJlcSxcbiAgICBjYWxsYmFjazogKGVycm9yOiBzdHJpbmcgfCBudWxsLCByZXNwb25zZTogUmVzIHwgbnVsbCkgPT4gdm9pZCxcbiAgKSA9PiB2b2lkLFxuICBzZW5kUmVzcG9uc2U6IChpZDogbnVtYmVyLCB2YWx1ZTogcHJvdG9jb2wuVmFsdWUpID0+IHZvaWQsXG4gIHJlZnM6IFJlZnMsXG4gIHN0cmVhbUluOiBTdHJlYW1JbixcbiAgcmVxdWVzdENhbGxiYWNrczogeyBbY29tbWFuZDogc3RyaW5nXTogUmVxdWVzdENhbGxiYWNrIH0sXG4gIGluaXRpYWxPcHRpb25zOiB0eXBlcy5CdWlsZE9wdGlvbnMsXG4gIHBsdWdpbnM6IHR5cGVzLlBsdWdpbltdLFxuICBkZXRhaWxzOiBPYmplY3RTdGFzaCxcbik6IFByb21pc2U8XG4gIHwge1xuICAgIG9rOiB0cnVlO1xuICAgIHJlcXVlc3RQbHVnaW5zOiBwcm90b2NvbC5CdWlsZFBsdWdpbltdO1xuICAgIHJ1bk9uRW5kQ2FsbGJhY2tzOiBSdW5PbkVuZENhbGxiYWNrcztcbiAgICBzY2hlZHVsZU9uRGlzcG9zZUNhbGxiYWNrczogKCkgPT4gdm9pZDtcbiAgfVxuICB8IHsgb2s6IGZhbHNlOyBlcnJvcjogYW55OyBwbHVnaW5OYW1lOiBzdHJpbmcgfVxuPiA9PiB7XG4gIGxldCBvblN0YXJ0Q2FsbGJhY2tzOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIG5vdGU6ICgpID0+IHR5cGVzLk5vdGUgfCB1bmRlZmluZWQ7XG4gICAgY2FsbGJhY2s6ICgpID0+XG4gICAgICB8IHR5cGVzLk9uU3RhcnRSZXN1bHRcbiAgICAgIHwgbnVsbFxuICAgICAgfCB2b2lkXG4gICAgICB8IFByb21pc2U8dHlwZXMuT25TdGFydFJlc3VsdCB8IG51bGwgfCB2b2lkPjtcbiAgfVtdID0gW107XG5cbiAgbGV0IG9uRW5kQ2FsbGJhY2tzOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIG5vdGU6ICgpID0+IHR5cGVzLk5vdGUgfCB1bmRlZmluZWQ7XG4gICAgY2FsbGJhY2s6IChcbiAgICAgIHJlc3VsdDogdHlwZXMuQnVpbGRSZXN1bHQsXG4gICAgKSA9PlxuICAgICAgfCB0eXBlcy5PbkVuZFJlc3VsdFxuICAgICAgfCBudWxsXG4gICAgICB8IHZvaWRcbiAgICAgIHwgUHJvbWlzZTx0eXBlcy5PbkVuZFJlc3VsdCB8IG51bGwgfCB2b2lkPjtcbiAgfVtdID0gW107XG5cbiAgbGV0IG9uUmVzb2x2ZUNhbGxiYWNrczoge1xuICAgIFtpZDogbnVtYmVyXToge1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgbm90ZTogKCkgPT4gdHlwZXMuTm90ZSB8IHVuZGVmaW5lZDtcbiAgICAgIGNhbGxiYWNrOiAoXG4gICAgICAgIGFyZ3M6IHR5cGVzLk9uUmVzb2x2ZUFyZ3MsXG4gICAgICApID0+XG4gICAgICAgIHwgdHlwZXMuT25SZXNvbHZlUmVzdWx0XG4gICAgICAgIHwgbnVsbFxuICAgICAgICB8IHVuZGVmaW5lZFxuICAgICAgICB8IFByb21pc2U8dHlwZXMuT25SZXNvbHZlUmVzdWx0IHwgbnVsbCB8IHVuZGVmaW5lZD47XG4gICAgfTtcbiAgfSA9IHt9O1xuXG4gIGxldCBvbkxvYWRDYWxsYmFja3M6IHtcbiAgICBbaWQ6IG51bWJlcl06IHtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIG5vdGU6ICgpID0+IHR5cGVzLk5vdGUgfCB1bmRlZmluZWQ7XG4gICAgICBjYWxsYmFjazogKFxuICAgICAgICBhcmdzOiB0eXBlcy5PbkxvYWRBcmdzLFxuICAgICAgKSA9PlxuICAgICAgICB8IHR5cGVzLk9uTG9hZFJlc3VsdFxuICAgICAgICB8IG51bGxcbiAgICAgICAgfCB1bmRlZmluZWRcbiAgICAgICAgfCBQcm9taXNlPHR5cGVzLk9uTG9hZFJlc3VsdCB8IG51bGwgfCB1bmRlZmluZWQ+O1xuICAgIH07XG4gIH0gPSB7fTtcblxuICBsZXQgb25EaXNwb3NlQ2FsbGJhY2tzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuICBsZXQgbmV4dENhbGxiYWNrSUQgPSAwO1xuICBsZXQgaSA9IDA7XG4gIGxldCByZXF1ZXN0UGx1Z2luczogcHJvdG9jb2wuQnVpbGRQbHVnaW5bXSA9IFtdO1xuICBsZXQgaXNTZXR1cERvbmUgPSBmYWxzZTtcblxuICAvLyBDbG9uZSB0aGUgcGx1Z2luIGFycmF5IHRvIGd1YXJkIGFnYWluc3QgbXV0YXRpb24gZHVyaW5nIGl0ZXJhdGlvblxuICBwbHVnaW5zID0gWy4uLnBsdWdpbnNdO1xuXG4gIGZvciAobGV0IGl0ZW0gb2YgcGx1Z2lucykge1xuICAgIGxldCBrZXlzOiBPcHRpb25LZXlzID0ge307XG4gICAgaWYgKHR5cGVvZiBpdGVtICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFBsdWdpbiBhdCBpbmRleCAke2l9IG11c3QgYmUgYW4gb2JqZWN0YCk7XG4gICAgfVxuICAgIGNvbnN0IG5hbWUgPSBnZXRGbGFnKGl0ZW0sIGtleXMsIFwibmFtZVwiLCBtdXN0QmVTdHJpbmcpO1xuICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gXCJzdHJpbmdcIiB8fCBuYW1lID09PSBcIlwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFBsdWdpbiBhdCBpbmRleCAke2l9IGlzIG1pc3NpbmcgYSBuYW1lYCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBsZXQgc2V0dXAgPSBnZXRGbGFnKGl0ZW0sIGtleXMsIFwic2V0dXBcIiwgbXVzdEJlRnVuY3Rpb24pO1xuICAgICAgaWYgKHR5cGVvZiBzZXR1cCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUGx1Z2luIGlzIG1pc3NpbmcgYSBzZXR1cCBmdW5jdGlvbmApO1xuICAgICAgfVxuICAgICAgY2hlY2tGb3JJbnZhbGlkRmxhZ3MoaXRlbSwga2V5cywgYG9uIHBsdWdpbiAke3F1b3RlKG5hbWUpfWApO1xuXG4gICAgICBsZXQgcGx1Z2luOiBwcm90b2NvbC5CdWlsZFBsdWdpbiA9IHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgb25TdGFydDogZmFsc2UsXG4gICAgICAgIG9uRW5kOiBmYWxzZSxcbiAgICAgICAgb25SZXNvbHZlOiBbXSxcbiAgICAgICAgb25Mb2FkOiBbXSxcbiAgICAgIH07XG4gICAgICBpKys7XG5cbiAgICAgIGxldCByZXNvbHZlID0gKFxuICAgICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICAgIG9wdGlvbnM6IHR5cGVzLlJlc29sdmVPcHRpb25zID0ge30sXG4gICAgICApOiBQcm9taXNlPHR5cGVzLlJlc29sdmVSZXN1bHQ+ID0+IHtcbiAgICAgICAgaWYgKCFpc1NldHVwRG9uZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdDYW5ub3QgY2FsbCBcInJlc29sdmVcIiBiZWZvcmUgcGx1Z2luIHNldHVwIGhhcyBjb21wbGV0ZWQnLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgcGF0aCB0byByZXNvbHZlIG11c3QgYmUgYSBzdHJpbmdgKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQga2V5czogT3B0aW9uS2V5cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGxldCBwbHVnaW5OYW1lID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInBsdWdpbk5hbWVcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgbGV0IGltcG9ydGVyID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImltcG9ydGVyXCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgIGxldCBuYW1lc3BhY2UgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwibmFtZXNwYWNlXCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgIGxldCByZXNvbHZlRGlyID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInJlc29sdmVEaXJcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgbGV0IGtpbmQgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwia2luZFwiLCBtdXN0QmVTdHJpbmcpO1xuICAgICAgICBsZXQgcGx1Z2luRGF0YSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJwbHVnaW5EYXRhXCIsIGNhbkJlQW55dGhpbmcpO1xuICAgICAgICBsZXQgaW1wb3J0QXR0cmlidXRlcyA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJ3aXRoXCIsIG11c3RCZU9iamVjdCk7XG4gICAgICAgIGNoZWNrRm9ySW52YWxpZEZsYWdzKG9wdGlvbnMsIGtleXMsIFwiaW4gcmVzb2x2ZSgpIGNhbGxcIik7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCByZXF1ZXN0OiBwcm90b2NvbC5SZXNvbHZlUmVxdWVzdCA9IHtcbiAgICAgICAgICAgIGNvbW1hbmQ6IFwicmVzb2x2ZVwiLFxuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgIGtleTogYnVpbGRLZXksXG4gICAgICAgICAgICBwbHVnaW5OYW1lOiBuYW1lLFxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKHBsdWdpbk5hbWUgIT0gbnVsbCkgcmVxdWVzdC5wbHVnaW5OYW1lID0gcGx1Z2luTmFtZTtcbiAgICAgICAgICBpZiAoaW1wb3J0ZXIgIT0gbnVsbCkgcmVxdWVzdC5pbXBvcnRlciA9IGltcG9ydGVyO1xuICAgICAgICAgIGlmIChuYW1lc3BhY2UgIT0gbnVsbCkgcmVxdWVzdC5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gICAgICAgICAgaWYgKHJlc29sdmVEaXIgIT0gbnVsbCkgcmVxdWVzdC5yZXNvbHZlRGlyID0gcmVzb2x2ZURpcjtcbiAgICAgICAgICBpZiAoa2luZCAhPSBudWxsKSByZXF1ZXN0LmtpbmQgPSBraW5kO1xuICAgICAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKGBNdXN0IHNwZWNpZnkgXCJraW5kXCIgd2hlbiBjYWxsaW5nIFwicmVzb2x2ZVwiYCk7XG4gICAgICAgICAgaWYgKHBsdWdpbkRhdGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmVxdWVzdC5wbHVnaW5EYXRhID0gZGV0YWlscy5zdG9yZShwbHVnaW5EYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGltcG9ydEF0dHJpYnV0ZXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmVxdWVzdC53aXRoID0gc2FuaXRpemVTdHJpbmdNYXAoaW1wb3J0QXR0cmlidXRlcywgXCJ3aXRoXCIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNlbmRSZXF1ZXN0PHByb3RvY29sLlJlc29sdmVSZXF1ZXN0LCBwcm90b2NvbC5SZXNvbHZlUmVzcG9uc2U+KFxuICAgICAgICAgICAgcmVmcyxcbiAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAoZXJyb3IsIHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkgcmVqZWN0KG5ldyBFcnJvcihlcnJvcikpO1xuICAgICAgICAgICAgICBlbHNlIHtyZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgIGVycm9yczogcmVwbGFjZURldGFpbHNJbk1lc3NhZ2VzKHJlc3BvbnNlIS5lcnJvcnMsIGRldGFpbHMpLFxuICAgICAgICAgICAgICAgICAgd2FybmluZ3M6IHJlcGxhY2VEZXRhaWxzSW5NZXNzYWdlcyhcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UhLndhcm5pbmdzLFxuICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIHBhdGg6IHJlc3BvbnNlIS5wYXRoLFxuICAgICAgICAgICAgICAgICAgZXh0ZXJuYWw6IHJlc3BvbnNlIS5leHRlcm5hbCxcbiAgICAgICAgICAgICAgICAgIHNpZGVFZmZlY3RzOiByZXNwb25zZSEuc2lkZUVmZmVjdHMsXG4gICAgICAgICAgICAgICAgICBuYW1lc3BhY2U6IHJlc3BvbnNlIS5uYW1lc3BhY2UsXG4gICAgICAgICAgICAgICAgICBzdWZmaXg6IHJlc3BvbnNlIS5zdWZmaXgsXG4gICAgICAgICAgICAgICAgICBwbHVnaW5EYXRhOiBkZXRhaWxzLmxvYWQocmVzcG9uc2UhLnBsdWdpbkRhdGEpLFxuICAgICAgICAgICAgICAgIH0pO31cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBsZXQgcHJvbWlzZSA9IHNldHVwKHtcbiAgICAgICAgaW5pdGlhbE9wdGlvbnMsXG5cbiAgICAgICAgcmVzb2x2ZSxcblxuICAgICAgICBvblN0YXJ0KGNhbGxiYWNrKSB7XG4gICAgICAgICAgbGV0IHJlZ2lzdGVyZWRUZXh0ID1cbiAgICAgICAgICAgIGBUaGlzIGVycm9yIGNhbWUgZnJvbSB0aGUgXCJvblN0YXJ0XCIgY2FsbGJhY2sgcmVnaXN0ZXJlZCBoZXJlOmA7XG4gICAgICAgICAgbGV0IHJlZ2lzdGVyZWROb3RlID0gZXh0cmFjdENhbGxlclY4KFxuICAgICAgICAgICAgbmV3IEVycm9yKHJlZ2lzdGVyZWRUZXh0KSxcbiAgICAgICAgICAgIHN0cmVhbUluLFxuICAgICAgICAgICAgXCJvblN0YXJ0XCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBvblN0YXJ0Q2FsbGJhY2tzLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogbmFtZSEsXG4gICAgICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgICAgIG5vdGU6IHJlZ2lzdGVyZWROb3RlLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHBsdWdpbi5vblN0YXJ0ID0gdHJ1ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBvbkVuZChjYWxsYmFjaykge1xuICAgICAgICAgIGxldCByZWdpc3RlcmVkVGV4dCA9XG4gICAgICAgICAgICBgVGhpcyBlcnJvciBjYW1lIGZyb20gdGhlIFwib25FbmRcIiBjYWxsYmFjayByZWdpc3RlcmVkIGhlcmU6YDtcbiAgICAgICAgICBsZXQgcmVnaXN0ZXJlZE5vdGUgPSBleHRyYWN0Q2FsbGVyVjgoXG4gICAgICAgICAgICBuZXcgRXJyb3IocmVnaXN0ZXJlZFRleHQpLFxuICAgICAgICAgICAgc3RyZWFtSW4sXG4gICAgICAgICAgICBcIm9uRW5kXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBvbkVuZENhbGxiYWNrcy5wdXNoKHsgbmFtZTogbmFtZSEsIGNhbGxiYWNrLCBub3RlOiByZWdpc3RlcmVkTm90ZSB9KTtcbiAgICAgICAgICBwbHVnaW4ub25FbmQgPSB0cnVlO1xuICAgICAgICB9LFxuXG4gICAgICAgIG9uUmVzb2x2ZShvcHRpb25zLCBjYWxsYmFjaykge1xuICAgICAgICAgIGxldCByZWdpc3RlcmVkVGV4dCA9XG4gICAgICAgICAgICBgVGhpcyBlcnJvciBjYW1lIGZyb20gdGhlIFwib25SZXNvbHZlXCIgY2FsbGJhY2sgcmVnaXN0ZXJlZCBoZXJlOmA7XG4gICAgICAgICAgbGV0IHJlZ2lzdGVyZWROb3RlID0gZXh0cmFjdENhbGxlclY4KFxuICAgICAgICAgICAgbmV3IEVycm9yKHJlZ2lzdGVyZWRUZXh0KSxcbiAgICAgICAgICAgIHN0cmVhbUluLFxuICAgICAgICAgICAgXCJvblJlc29sdmVcIixcbiAgICAgICAgICApO1xuICAgICAgICAgIGxldCBrZXlzOiBPcHRpb25LZXlzID0ge307XG4gICAgICAgICAgbGV0IGZpbHRlciA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJmaWx0ZXJcIiwgbXVzdEJlUmVnRXhwKTtcbiAgICAgICAgICBsZXQgbmFtZXNwYWNlID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIm5hbWVzcGFjZVwiLCBtdXN0QmVTdHJpbmcpO1xuICAgICAgICAgIGNoZWNrRm9ySW52YWxpZEZsYWdzKFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIGtleXMsXG4gICAgICAgICAgICBgaW4gb25SZXNvbHZlKCkgY2FsbCBmb3IgcGx1Z2luICR7cXVvdGUobmFtZSl9YCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChmaWx0ZXIgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBvblJlc29sdmUoKSBjYWxsIGlzIG1pc3NpbmcgYSBmaWx0ZXJgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IGlkID0gbmV4dENhbGxiYWNrSUQrKztcbiAgICAgICAgICBvblJlc29sdmVDYWxsYmFja3NbaWRdID0ge1xuICAgICAgICAgICAgbmFtZTogbmFtZSEsXG4gICAgICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgICAgIG5vdGU6IHJlZ2lzdGVyZWROb3RlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgcGx1Z2luLm9uUmVzb2x2ZS5wdXNoKHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXIuc291cmNlLFxuICAgICAgICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2UgfHwgXCJcIixcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBvbkxvYWQob3B0aW9ucywgY2FsbGJhY2spIHtcbiAgICAgICAgICBsZXQgcmVnaXN0ZXJlZFRleHQgPVxuICAgICAgICAgICAgYFRoaXMgZXJyb3IgY2FtZSBmcm9tIHRoZSBcIm9uTG9hZFwiIGNhbGxiYWNrIHJlZ2lzdGVyZWQgaGVyZTpgO1xuICAgICAgICAgIGxldCByZWdpc3RlcmVkTm90ZSA9IGV4dHJhY3RDYWxsZXJWOChcbiAgICAgICAgICAgIG5ldyBFcnJvcihyZWdpc3RlcmVkVGV4dCksXG4gICAgICAgICAgICBzdHJlYW1JbixcbiAgICAgICAgICAgIFwib25Mb2FkXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsZXQga2V5czogT3B0aW9uS2V5cyA9IHt9O1xuICAgICAgICAgIGxldCBmaWx0ZXIgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwiZmlsdGVyXCIsIG11c3RCZVJlZ0V4cCk7XG4gICAgICAgICAgbGV0IG5hbWVzcGFjZSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJuYW1lc3BhY2VcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgICBjaGVja0ZvckludmFsaWRGbGFncyhcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBrZXlzLFxuICAgICAgICAgICAgYGluIG9uTG9hZCgpIGNhbGwgZm9yIHBsdWdpbiAke3F1b3RlKG5hbWUpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoZmlsdGVyID09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgb25Mb2FkKCkgY2FsbCBpcyBtaXNzaW5nIGEgZmlsdGVyYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBpZCA9IG5leHRDYWxsYmFja0lEKys7XG4gICAgICAgICAgb25Mb2FkQ2FsbGJhY2tzW2lkXSA9IHsgbmFtZTogbmFtZSEsIGNhbGxiYWNrLCBub3RlOiByZWdpc3RlcmVkTm90ZSB9O1xuICAgICAgICAgIHBsdWdpbi5vbkxvYWQucHVzaCh7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGZpbHRlcjogZmlsdGVyLnNvdXJjZSxcbiAgICAgICAgICAgIG5hbWVzcGFjZTogbmFtZXNwYWNlIHx8IFwiXCIsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgb25EaXNwb3NlKGNhbGxiYWNrKSB7XG4gICAgICAgICAgb25EaXNwb3NlQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgICAgICB9LFxuXG4gICAgICAgIGVzYnVpbGQ6IHN0cmVhbUluLmVzYnVpbGQsXG4gICAgICB9KTtcblxuICAgICAgLy8gQXdhaXQgYSByZXR1cm5lZCBwcm9taXNlIGlmIHRoZXJlIHdhcyBvbmUuIFRoaXMgYWxsb3dzIHBsdWdpbnMgdG8gZG9cbiAgICAgIC8vIHNvbWUgYXN5bmNocm9ub3VzIHNldHVwIHdoaWxlIHN0aWxsIHJldGFpbmluZyB0aGUgYWJpbGl0eSB0byBtb2RpZnlcbiAgICAgIC8vIHRoZSBidWlsZCBvcHRpb25zLiBUaGlzIGRlbGliZXJhdGVseSBzZXJpYWxpemVzIGFzeW5jaHJvbm91cyBwbHVnaW5cbiAgICAgIC8vIHNldHVwIGluc3RlYWQgb2YgcnVubmluZyB0aGVtIGNvbmN1cnJlbnRseSBzbyB0aGF0IGJ1aWxkIG9wdGlvblxuICAgICAgLy8gbW9kaWZpY2F0aW9ucyBhcmUgZWFzaWVyIHRvIHJlYXNvbiBhYm91dC5cbiAgICAgIGlmIChwcm9taXNlKSBhd2FpdCBwcm9taXNlO1xuXG4gICAgICByZXF1ZXN0UGx1Z2lucy5wdXNoKHBsdWdpbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCBlcnJvcjogZSwgcGx1Z2luTmFtZTogbmFtZSB9O1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RDYWxsYmFja3NbXCJvbi1zdGFydFwiXSA9IGFzeW5jIChcbiAgICBpZCxcbiAgICByZXF1ZXN0OiBwcm90b2NvbC5PblN0YXJ0UmVxdWVzdCxcbiAgKSA9PiB7XG4gICAgbGV0IHJlc3BvbnNlOiBwcm90b2NvbC5PblN0YXJ0UmVzcG9uc2UgPSB7IGVycm9yczogW10sIHdhcm5pbmdzOiBbXSB9O1xuICAgIGF3YWl0IFByb21pc2UuYWxsKG9uU3RhcnRDYWxsYmFja3MubWFwKGFzeW5jICh7IG5hbWUsIGNhbGxiYWNrLCBub3RlIH0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsYmFjaygpO1xuXG4gICAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBFeHBlY3RlZCBvblN0YXJ0KCkgY2FsbGJhY2sgaW4gcGx1Z2luICR7XG4gICAgICAgICAgICAgICAgcXVvdGUobmFtZSlcbiAgICAgICAgICAgICAgfSB0byByZXR1cm4gYW4gb2JqZWN0YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBrZXlzOiBPcHRpb25LZXlzID0ge307XG4gICAgICAgICAgbGV0IGVycm9ycyA9IGdldEZsYWcocmVzdWx0LCBrZXlzLCBcImVycm9yc1wiLCBtdXN0QmVBcnJheSk7XG4gICAgICAgICAgbGV0IHdhcm5pbmdzID0gZ2V0RmxhZyhyZXN1bHQsIGtleXMsIFwid2FybmluZ3NcIiwgbXVzdEJlQXJyYXkpO1xuICAgICAgICAgIGNoZWNrRm9ySW52YWxpZEZsYWdzKFxuICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAga2V5cyxcbiAgICAgICAgICAgIGBmcm9tIG9uU3RhcnQoKSBjYWxsYmFjayBpbiBwbHVnaW4gJHtxdW90ZShuYW1lKX1gLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoZXJyb3JzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyEucHVzaChcbiAgICAgICAgICAgICAgLi4uc2FuaXRpemVNZXNzYWdlcyhlcnJvcnMsIFwiZXJyb3JzXCIsIGRldGFpbHMsIG5hbWUsIHVuZGVmaW5lZCksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAod2FybmluZ3MgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmVzcG9uc2Uud2FybmluZ3MhLnB1c2goXG4gICAgICAgICAgICAgIC4uLnNhbml0aXplTWVzc2FnZXMoXG4gICAgICAgICAgICAgICAgd2FybmluZ3MsXG4gICAgICAgICAgICAgICAgXCJ3YXJuaW5nc1wiLFxuICAgICAgICAgICAgICAgIGRldGFpbHMsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXNwb25zZS5lcnJvcnMhLnB1c2goXG4gICAgICAgICAgZXh0cmFjdEVycm9yTWVzc2FnZVY4KGUsIHN0cmVhbUluLCBkZXRhaWxzLCBub3RlICYmIG5vdGUoKSwgbmFtZSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSkpO1xuICAgIHNlbmRSZXNwb25zZShpZCwgcmVzcG9uc2UgYXMgYW55KTtcbiAgfTtcblxuICByZXF1ZXN0Q2FsbGJhY2tzW1wib24tcmVzb2x2ZVwiXSA9IGFzeW5jIChcbiAgICBpZCxcbiAgICByZXF1ZXN0OiBwcm90b2NvbC5PblJlc29sdmVSZXF1ZXN0LFxuICApID0+IHtcbiAgICBsZXQgcmVzcG9uc2U6IHByb3RvY29sLk9uUmVzb2x2ZVJlc3BvbnNlID0ge30sIG5hbWUgPSBcIlwiLCBjYWxsYmFjaywgbm90ZTtcbiAgICBmb3IgKGxldCBpZCBvZiByZXF1ZXN0Lmlkcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgKHsgbmFtZSwgY2FsbGJhY2ssIG5vdGUgfSA9IG9uUmVzb2x2ZUNhbGxiYWNrc1tpZF0pO1xuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbGJhY2soe1xuICAgICAgICAgIHBhdGg6IHJlcXVlc3QucGF0aCxcbiAgICAgICAgICBpbXBvcnRlcjogcmVxdWVzdC5pbXBvcnRlcixcbiAgICAgICAgICBuYW1lc3BhY2U6IHJlcXVlc3QubmFtZXNwYWNlLFxuICAgICAgICAgIHJlc29sdmVEaXI6IHJlcXVlc3QucmVzb2x2ZURpcixcbiAgICAgICAgICBraW5kOiByZXF1ZXN0LmtpbmQsXG4gICAgICAgICAgcGx1Z2luRGF0YTogZGV0YWlscy5sb2FkKHJlcXVlc3QucGx1Z2luRGF0YSksXG4gICAgICAgICAgd2l0aDogcmVxdWVzdC53aXRoLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgRXhwZWN0ZWQgb25SZXNvbHZlKCkgY2FsbGJhY2sgaW4gcGx1Z2luICR7XG4gICAgICAgICAgICAgICAgcXVvdGUobmFtZSlcbiAgICAgICAgICAgICAgfSB0byByZXR1cm4gYW4gb2JqZWN0YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBrZXlzOiBPcHRpb25LZXlzID0ge307XG4gICAgICAgICAgbGV0IHBsdWdpbk5hbWUgPSBnZXRGbGFnKHJlc3VsdCwga2V5cywgXCJwbHVnaW5OYW1lXCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgICAgbGV0IHBhdGggPSBnZXRGbGFnKHJlc3VsdCwga2V5cywgXCJwYXRoXCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgICAgbGV0IG5hbWVzcGFjZSA9IGdldEZsYWcocmVzdWx0LCBrZXlzLCBcIm5hbWVzcGFjZVwiLCBtdXN0QmVTdHJpbmcpO1xuICAgICAgICAgIGxldCBzdWZmaXggPSBnZXRGbGFnKHJlc3VsdCwga2V5cywgXCJzdWZmaXhcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgICBsZXQgZXh0ZXJuYWwgPSBnZXRGbGFnKHJlc3VsdCwga2V5cywgXCJleHRlcm5hbFwiLCBtdXN0QmVCb29sZWFuKTtcbiAgICAgICAgICBsZXQgc2lkZUVmZmVjdHMgPSBnZXRGbGFnKHJlc3VsdCwga2V5cywgXCJzaWRlRWZmZWN0c1wiLCBtdXN0QmVCb29sZWFuKTtcbiAgICAgICAgICBsZXQgcGx1Z2luRGF0YSA9IGdldEZsYWcocmVzdWx0LCBrZXlzLCBcInBsdWdpbkRhdGFcIiwgY2FuQmVBbnl0aGluZyk7XG4gICAgICAgICAgbGV0IGVycm9ycyA9IGdldEZsYWcocmVzdWx0LCBrZXlzLCBcImVycm9yc1wiLCBtdXN0QmVBcnJheSk7XG4gICAgICAgICAgbGV0IHdhcm5pbmdzID0gZ2V0RmxhZyhyZXN1bHQsIGtleXMsIFwid2FybmluZ3NcIiwgbXVzdEJlQXJyYXkpO1xuICAgICAgICAgIGxldCB3YXRjaEZpbGVzID0gZ2V0RmxhZyhyZXN1bHQsIGtleXMsIFwid2F0Y2hGaWxlc1wiLCBtdXN0QmVBcnJheSk7XG4gICAgICAgICAgbGV0IHdhdGNoRGlycyA9IGdldEZsYWcocmVzdWx0LCBrZXlzLCBcIndhdGNoRGlyc1wiLCBtdXN0QmVBcnJheSk7XG4gICAgICAgICAgY2hlY2tGb3JJbnZhbGlkRmxhZ3MoXG4gICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgICBrZXlzLFxuICAgICAgICAgICAgYGZyb20gb25SZXNvbHZlKCkgY2FsbGJhY2sgaW4gcGx1Z2luICR7cXVvdGUobmFtZSl9YCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmVzcG9uc2UuaWQgPSBpZDtcbiAgICAgICAgICBpZiAocGx1Z2luTmFtZSAhPSBudWxsKSByZXNwb25zZS5wbHVnaW5OYW1lID0gcGx1Z2luTmFtZTtcbiAgICAgICAgICBpZiAocGF0aCAhPSBudWxsKSByZXNwb25zZS5wYXRoID0gcGF0aDtcbiAgICAgICAgICBpZiAobmFtZXNwYWNlICE9IG51bGwpIHJlc3BvbnNlLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICAgICAgICBpZiAoc3VmZml4ICE9IG51bGwpIHJlc3BvbnNlLnN1ZmZpeCA9IHN1ZmZpeDtcbiAgICAgICAgICBpZiAoZXh0ZXJuYWwgIT0gbnVsbCkgcmVzcG9uc2UuZXh0ZXJuYWwgPSBleHRlcm5hbDtcbiAgICAgICAgICBpZiAoc2lkZUVmZmVjdHMgIT0gbnVsbCkgcmVzcG9uc2Uuc2lkZUVmZmVjdHMgPSBzaWRlRWZmZWN0cztcbiAgICAgICAgICBpZiAocGx1Z2luRGF0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXNwb25zZS5wbHVnaW5EYXRhID0gZGV0YWlscy5zdG9yZShwbHVnaW5EYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVycm9ycyAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSBzYW5pdGl6ZU1lc3NhZ2VzKFxuICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgIFwiZXJyb3JzXCIsXG4gICAgICAgICAgICAgIGRldGFpbHMsXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh3YXJuaW5ncyAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXNwb25zZS53YXJuaW5ncyA9IHNhbml0aXplTWVzc2FnZXMoXG4gICAgICAgICAgICAgIHdhcm5pbmdzLFxuICAgICAgICAgICAgICBcIndhcm5pbmdzXCIsXG4gICAgICAgICAgICAgIGRldGFpbHMsXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh3YXRjaEZpbGVzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLndhdGNoRmlsZXMgPSBzYW5pdGl6ZVN0cmluZ0FycmF5KHdhdGNoRmlsZXMsIFwid2F0Y2hGaWxlc1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHdhdGNoRGlycyAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXNwb25zZS53YXRjaERpcnMgPSBzYW5pdGl6ZVN0cmluZ0FycmF5KHdhdGNoRGlycywgXCJ3YXRjaERpcnNcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlc3BvbnNlID0ge1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIGVycm9yczogW1xuICAgICAgICAgICAgZXh0cmFjdEVycm9yTWVzc2FnZVY4KGUsIHN0cmVhbUluLCBkZXRhaWxzLCBub3RlICYmIG5vdGUoKSwgbmFtZSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHNlbmRSZXNwb25zZShpZCwgcmVzcG9uc2UgYXMgYW55KTtcbiAgfTtcblxuICByZXF1ZXN0Q2FsbGJhY2tzW1wib24tbG9hZFwiXSA9IGFzeW5jIChpZCwgcmVxdWVzdDogcHJvdG9jb2wuT25Mb2FkUmVxdWVzdCkgPT4ge1xuICAgIGxldCByZXNwb25zZTogcHJvdG9jb2wuT25Mb2FkUmVzcG9uc2UgPSB7fSwgbmFtZSA9IFwiXCIsIGNhbGxiYWNrLCBub3RlO1xuICAgIGZvciAobGV0IGlkIG9mIHJlcXVlc3QuaWRzKSB7XG4gICAgICB0cnkge1xuICAgICAgICAoeyBuYW1lLCBjYWxsYmFjaywgbm90ZSB9ID0gb25Mb2FkQ2FsbGJhY2tzW2lkXSk7XG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsYmFjayh7XG4gICAgICAgICAgcGF0aDogcmVxdWVzdC5wYXRoLFxuICAgICAgICAgIG5hbWVzcGFjZTogcmVxdWVzdC5uYW1lc3BhY2UsXG4gICAgICAgICAgc3VmZml4OiByZXF1ZXN0LnN1ZmZpeCxcbiAgICAgICAgICBwbHVnaW5EYXRhOiBkZXRhaWxzLmxvYWQocmVxdWVzdC5wbHVnaW5EYXRhKSxcbiAgICAgICAgICB3aXRoOiByZXF1ZXN0LndpdGgsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBFeHBlY3RlZCBvbkxvYWQoKSBjYWxsYmFjayBpbiBwbHVnaW4gJHtcbiAgICAgICAgICAgICAgICBxdW90ZShuYW1lKVxuICAgICAgICAgICAgICB9IHRvIHJldHVybiBhbiBvYmplY3RgLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IGtleXM6IE9wdGlvbktleXMgPSB7fTtcbiAgICAgICAgICBsZXQgcGx1Z2luTmFtZSA9IGdldEZsYWcocmVzdWx0LCBrZXlzLCBcInBsdWdpbk5hbWVcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgICBsZXQgY29udGVudHMgPSBnZXRGbGFnKFxuICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAga2V5cyxcbiAgICAgICAgICAgIFwiY29udGVudHNcIixcbiAgICAgICAgICAgIG11c3RCZVN0cmluZ09yVWludDhBcnJheSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGxldCByZXNvbHZlRGlyID0gZ2V0RmxhZyhyZXN1bHQsIGtleXMsIFwicmVzb2x2ZURpclwiLCBtdXN0QmVTdHJpbmcpO1xuICAgICAgICAgIGxldCBwbHVnaW5EYXRhID0gZ2V0RmxhZyhyZXN1bHQsIGtleXMsIFwicGx1Z2luRGF0YVwiLCBjYW5CZUFueXRoaW5nKTtcbiAgICAgICAgICBsZXQgbG9hZGVyID0gZ2V0RmxhZyhyZXN1bHQsIGtleXMsIFwibG9hZGVyXCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgICAgbGV0IGVycm9ycyA9IGdldEZsYWcocmVzdWx0LCBrZXlzLCBcImVycm9yc1wiLCBtdXN0QmVBcnJheSk7XG4gICAgICAgICAgbGV0IHdhcm5pbmdzID0gZ2V0RmxhZyhyZXN1bHQsIGtleXMsIFwid2FybmluZ3NcIiwgbXVzdEJlQXJyYXkpO1xuICAgICAgICAgIGxldCB3YXRjaEZpbGVzID0gZ2V0RmxhZyhyZXN1bHQsIGtleXMsIFwid2F0Y2hGaWxlc1wiLCBtdXN0QmVBcnJheSk7XG4gICAgICAgICAgbGV0IHdhdGNoRGlycyA9IGdldEZsYWcocmVzdWx0LCBrZXlzLCBcIndhdGNoRGlyc1wiLCBtdXN0QmVBcnJheSk7XG4gICAgICAgICAgY2hlY2tGb3JJbnZhbGlkRmxhZ3MoXG4gICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgICBrZXlzLFxuICAgICAgICAgICAgYGZyb20gb25Mb2FkKCkgY2FsbGJhY2sgaW4gcGx1Z2luICR7cXVvdGUobmFtZSl9YCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmVzcG9uc2UuaWQgPSBpZDtcbiAgICAgICAgICBpZiAocGx1Z2luTmFtZSAhPSBudWxsKSByZXNwb25zZS5wbHVnaW5OYW1lID0gcGx1Z2luTmFtZTtcbiAgICAgICAgICBpZiAoY29udGVudHMgaW5zdGFuY2VvZiBVaW50OEFycmF5KSByZXNwb25zZS5jb250ZW50cyA9IGNvbnRlbnRzO1xuICAgICAgICAgIGVsc2UgaWYgKGNvbnRlbnRzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLmNvbnRlbnRzID0gcHJvdG9jb2wuZW5jb2RlVVRGOChjb250ZW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXNvbHZlRGlyICE9IG51bGwpIHJlc3BvbnNlLnJlc29sdmVEaXIgPSByZXNvbHZlRGlyO1xuICAgICAgICAgIGlmIChwbHVnaW5EYXRhICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLnBsdWdpbkRhdGEgPSBkZXRhaWxzLnN0b3JlKHBsdWdpbkRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobG9hZGVyICE9IG51bGwpIHJlc3BvbnNlLmxvYWRlciA9IGxvYWRlcjtcbiAgICAgICAgICBpZiAoZXJyb3JzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHNhbml0aXplTWVzc2FnZXMoXG4gICAgICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICAgICAgXCJlcnJvcnNcIixcbiAgICAgICAgICAgICAgZGV0YWlscyxcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHdhcm5pbmdzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLndhcm5pbmdzID0gc2FuaXRpemVNZXNzYWdlcyhcbiAgICAgICAgICAgICAgd2FybmluZ3MsXG4gICAgICAgICAgICAgIFwid2FybmluZ3NcIixcbiAgICAgICAgICAgICAgZGV0YWlscyxcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHdhdGNoRmlsZXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmVzcG9uc2Uud2F0Y2hGaWxlcyA9IHNhbml0aXplU3RyaW5nQXJyYXkod2F0Y2hGaWxlcywgXCJ3YXRjaEZpbGVzXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAod2F0Y2hEaXJzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLndhdGNoRGlycyA9IHNhbml0aXplU3RyaW5nQXJyYXkod2F0Y2hEaXJzLCBcIndhdGNoRGlyc1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgZXJyb3JzOiBbXG4gICAgICAgICAgICBleHRyYWN0RXJyb3JNZXNzYWdlVjgoZSwgc3RyZWFtSW4sIGRldGFpbHMsIG5vdGUgJiYgbm90ZSgpLCBuYW1lKSxcbiAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgc2VuZFJlc3BvbnNlKGlkLCByZXNwb25zZSBhcyBhbnkpO1xuICB9O1xuXG4gIGxldCBydW5PbkVuZENhbGxiYWNrczogUnVuT25FbmRDYWxsYmFja3MgPSAocmVzdWx0LCBkb25lKSA9PiBkb25lKFtdLCBbXSk7XG5cbiAgaWYgKG9uRW5kQ2FsbGJhY2tzLmxlbmd0aCA+IDApIHtcbiAgICBydW5PbkVuZENhbGxiYWNrcyA9IChyZXN1bHQsIGRvbmUpID0+IHtcbiAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9uRW5kRXJyb3JzOiB0eXBlcy5NZXNzYWdlW10gPSBbXTtcbiAgICAgICAgY29uc3Qgb25FbmRXYXJuaW5nczogdHlwZXMuTWVzc2FnZVtdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCB7IG5hbWUsIGNhbGxiYWNrLCBub3RlIH0gb2Ygb25FbmRDYWxsYmFja3MpIHtcbiAgICAgICAgICBsZXQgbmV3RXJyb3JzOiB0eXBlcy5NZXNzYWdlW10gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IG5ld1dhcm5pbmdzOiB0eXBlcy5NZXNzYWdlW10gfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCBjYWxsYmFjayhyZXN1bHQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgYEV4cGVjdGVkIG9uRW5kKCkgY2FsbGJhY2sgaW4gcGx1Z2luICR7XG4gICAgICAgICAgICAgICAgICAgIHF1b3RlKG5hbWUpXG4gICAgICAgICAgICAgICAgICB9IHRvIHJldHVybiBhbiBvYmplY3RgLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGV0IGtleXM6IE9wdGlvbktleXMgPSB7fTtcbiAgICAgICAgICAgICAgbGV0IGVycm9ycyA9IGdldEZsYWcodmFsdWUsIGtleXMsIFwiZXJyb3JzXCIsIG11c3RCZUFycmF5KTtcbiAgICAgICAgICAgICAgbGV0IHdhcm5pbmdzID0gZ2V0RmxhZyh2YWx1ZSwga2V5cywgXCJ3YXJuaW5nc1wiLCBtdXN0QmVBcnJheSk7XG4gICAgICAgICAgICAgIGNoZWNrRm9ySW52YWxpZEZsYWdzKFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIGtleXMsXG4gICAgICAgICAgICAgICAgYGZyb20gb25FbmQoKSBjYWxsYmFjayBpbiBwbHVnaW4gJHtxdW90ZShuYW1lKX1gLFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIGlmIChlcnJvcnMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG5ld0Vycm9ycyA9IHNhbml0aXplTWVzc2FnZXMoXG4gICAgICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgICAgICBcImVycm9yc1wiLFxuICAgICAgICAgICAgICAgICAgZGV0YWlscyxcbiAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAod2FybmluZ3MgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG5ld1dhcm5pbmdzID0gc2FuaXRpemVNZXNzYWdlcyhcbiAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLFxuICAgICAgICAgICAgICAgICAgXCJ3YXJuaW5nc1wiLFxuICAgICAgICAgICAgICAgICAgZGV0YWlscyxcbiAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIG5ld0Vycm9ycyA9IFtcbiAgICAgICAgICAgICAgZXh0cmFjdEVycm9yTWVzc2FnZVY4KGUsIHN0cmVhbUluLCBkZXRhaWxzLCBub3RlICYmIG5vdGUoKSwgbmFtZSksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFRyeSBhZGRpbmcgdGhlIGVycm9ycyBhbmQgd2FybmluZ3MgdG8gdGhlIHJlc3VsdCBvYmplY3QsIGJ1dFxuICAgICAgICAgIC8vIGNvbnRpbnVlIGlmIHNvbWV0aGluZyBnb2VzIHdyb25nLiBJZiBlcnJvci1yZXBvcnRpbmcgaGFzIGVycm9yc1xuICAgICAgICAgIC8vIHRoZW4gbm90aGluZyBjYW4gaGVscCB1cy4uLlxuICAgICAgICAgIGlmIChuZXdFcnJvcnMpIHtcbiAgICAgICAgICAgIG9uRW5kRXJyb3JzLnB1c2goLi4ubmV3RXJyb3JzKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJlc3VsdC5lcnJvcnMucHVzaCguLi5uZXdFcnJvcnMpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXdXYXJuaW5ncykge1xuICAgICAgICAgICAgb25FbmRXYXJuaW5ncy5wdXNoKC4uLm5ld1dhcm5pbmdzKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJlc3VsdC53YXJuaW5ncy5wdXNoKC4uLm5ld1dhcm5pbmdzKTtcbiAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRvbmUob25FbmRFcnJvcnMsIG9uRW5kV2FybmluZ3MpO1xuICAgICAgfSkoKTtcbiAgICB9O1xuICB9XG5cbiAgbGV0IHNjaGVkdWxlT25EaXNwb3NlQ2FsbGJhY2tzID0gKCk6IHZvaWQgPT4ge1xuICAgIC8vIFJ1biBlYWNoIFwib25EaXNwb3NlXCIgY2FsbGJhY2sgd2l0aCBpdHMgb3duIGNhbGwgc3RhY2tcbiAgICBmb3IgKGNvbnN0IGNiIG9mIG9uRGlzcG9zZUNhbGxiYWNrcykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiBjYigpLCAwKTtcbiAgICB9XG4gIH07XG5cbiAgaXNTZXR1cERvbmUgPSB0cnVlO1xuICByZXR1cm4ge1xuICAgIG9rOiB0cnVlLFxuICAgIHJlcXVlc3RQbHVnaW5zLFxuICAgIHJ1bk9uRW5kQ2FsbGJhY2tzLFxuICAgIHNjaGVkdWxlT25EaXNwb3NlQ2FsbGJhY2tzLFxuICB9O1xufTtcblxuLy8gVGhpcyBzdG9yZXMgSmF2YVNjcmlwdCBvYmplY3RzIG9uIHRoZSBKYXZhU2NyaXB0IHNpZGUgYW5kIHRlbXBvcmFyaWx5XG4vLyBzdWJzdGl0dXRlcyB0aGVtIHdpdGggYW4gaW50ZWdlciB0aGF0IGNhbiBiZSBwYXNzZWQgdGhyb3VnaCB0aGUgR28gc2lkZVxuLy8gYW5kIGJhY2suIFRoYXQgd2F5IHdlIGNhbiBhc3NvY2lhdGUgSmF2YVNjcmlwdCBvYmplY3RzIHdpdGggR28gb2JqZWN0c1xuLy8gZXZlbiBpZiB0aGUgSmF2YVNjcmlwdCBvYmplY3RzIGFyZW4ndCBzZXJpYWxpemFibGUuIEFuZCB3ZSBhbHNvIGF2b2lkXG4vLyB0aGUgb3ZlcmhlYWQgb2Ygc2VyaWFsaXppbmcgbGFyZ2UgSmF2YVNjcmlwdCBvYmplY3RzLlxuaW50ZXJmYWNlIE9iamVjdFN0YXNoIHtcbiAgbG9hZChpZDogbnVtYmVyKTogYW55O1xuICBzdG9yZSh2YWx1ZTogYW55KTogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVPYmplY3RTdGFzaCgpOiBPYmplY3RTdGFzaCB7XG4gIGNvbnN0IG1hcCA9IG5ldyBNYXA8bnVtYmVyLCBhbnk+KCk7XG4gIGxldCBuZXh0SUQgPSAwO1xuICByZXR1cm4ge1xuICAgIGxvYWQoaWQpIHtcbiAgICAgIHJldHVybiBtYXAuZ2V0KGlkKTtcbiAgICB9LFxuICAgIHN0b3JlKHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPT09IHZvaWQgMCkgcmV0dXJuIC0xO1xuICAgICAgY29uc3QgaWQgPSBuZXh0SUQrKztcbiAgICAgIG1hcC5zZXQoaWQsIHZhbHVlKTtcbiAgICAgIHJldHVybiBpZDtcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBleHRyYWN0Q2FsbGVyVjgoXG4gIGU6IEVycm9yLFxuICBzdHJlYW1JbjogU3RyZWFtSW4sXG4gIGlkZW50OiBzdHJpbmcsXG4pOiAoKSA9PiB0eXBlcy5Ob3RlIHwgdW5kZWZpbmVkIHtcbiAgbGV0IG5vdGU6IHR5cGVzLk5vdGUgfCB1bmRlZmluZWQ7XG4gIGxldCB0cmllZCA9IGZhbHNlO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGlmICh0cmllZCkgcmV0dXJuIG5vdGU7XG4gICAgdHJpZWQgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBsZXQgbGluZXMgPSAoZS5zdGFjayArIFwiXCIpLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgbGluZXMuc3BsaWNlKDEsIDEpO1xuICAgICAgbGV0IGxvY2F0aW9uID0gcGFyc2VTdGFja0xpbmVzVjgoc3RyZWFtSW4sIGxpbmVzLCBpZGVudCk7XG4gICAgICBpZiAobG9jYXRpb24pIHtcbiAgICAgICAgbm90ZSA9IHsgdGV4dDogZS5tZXNzYWdlLCBsb2NhdGlvbiB9O1xuICAgICAgICByZXR1cm4gbm90ZTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RFcnJvck1lc3NhZ2VWOChcbiAgZTogYW55LFxuICBzdHJlYW1JbjogU3RyZWFtSW4sXG4gIHN0YXNoOiBPYmplY3RTdGFzaCB8IG51bGwsXG4gIG5vdGU6IHR5cGVzLk5vdGUgfCB1bmRlZmluZWQsXG4gIHBsdWdpbk5hbWU6IHN0cmluZyxcbik6IHR5cGVzLk1lc3NhZ2Uge1xuICBsZXQgdGV4dCA9IFwiSW50ZXJuYWwgZXJyb3JcIjtcbiAgbGV0IGxvY2F0aW9uOiB0eXBlcy5Mb2NhdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIHRyeSB7XG4gICAgdGV4dCA9ICgoZSAmJiBlLm1lc3NhZ2UpIHx8IGUpICsgXCJcIjtcbiAgfSBjYXRjaCB7XG4gIH1cblxuICAvLyBPcHRpb25hbGx5IGF0dGVtcHQgdG8gZXh0cmFjdCB0aGUgZmlsZSBmcm9tIHRoZSBzdGFjayB0cmFjZSwgd29ya3MgaW4gVjgvbm9kZVxuICB0cnkge1xuICAgIGxvY2F0aW9uID0gcGFyc2VTdGFja0xpbmVzVjgoc3RyZWFtSW4sIChlLnN0YWNrICsgXCJcIikuc3BsaXQoXCJcXG5cIiksIFwiXCIpO1xuICB9IGNhdGNoIHtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaWQ6IFwiXCIsXG4gICAgcGx1Z2luTmFtZSxcbiAgICB0ZXh0LFxuICAgIGxvY2F0aW9uLFxuICAgIG5vdGVzOiBub3RlID8gW25vdGVdIDogW10sXG4gICAgZGV0YWlsOiBzdGFzaCA/IHN0YXNoLnN0b3JlKGUpIDogLTEsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlU3RhY2tMaW5lc1Y4KFxuICBzdHJlYW1JbjogU3RyZWFtSW4sXG4gIGxpbmVzOiBzdHJpbmdbXSxcbiAgaWRlbnQ6IHN0cmluZyxcbik6IHR5cGVzLkxvY2F0aW9uIHwgbnVsbCB7XG4gIGxldCBhdCA9IFwiICAgIGF0IFwiO1xuXG4gIC8vIENoZWNrIHRvIHNlZSBpZiB0aGlzIGxvb2tzIGxpa2UgYSBWOCBzdGFjayB0cmFjZVxuICBpZiAoXG4gICAgc3RyZWFtSW4ucmVhZEZpbGVTeW5jICYmICFsaW5lc1swXS5zdGFydHNXaXRoKGF0KSAmJiBsaW5lc1sxXS5zdGFydHNXaXRoKGF0KVxuICApIHtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbGluZSA9IGxpbmVzW2ldO1xuICAgICAgaWYgKCFsaW5lLnN0YXJ0c1dpdGgoYXQpKSBjb250aW51ZTtcbiAgICAgIGxpbmUgPSBsaW5lLnNsaWNlKGF0Lmxlbmd0aCk7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAvLyBVbndyYXAgYSBmdW5jdGlvbiBuYW1lXG4gICAgICAgIGxldCBtYXRjaCA9IC9eKD86bmV3IHxhc3luYyApP1xcUysgXFwoKC4qKVxcKSQvLmV4ZWMobGluZSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGxpbmUgPSBtYXRjaFsxXTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVud3JhcCBhbiBldmFsIHdyYXBwZXJcbiAgICAgICAgbWF0Y2ggPSAvXmV2YWwgYXQgXFxTKyBcXCgoLiopXFwpKD86LCBcXFMrOlxcZCs6XFxkKyk/JC8uZXhlYyhsaW5lKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgbGluZSA9IG1hdGNoWzFdO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWF0Y2ggb24gdGhlIGZpbGUgbG9jYXRpb25cbiAgICAgICAgbWF0Y2ggPSAvXihcXFMrKTooXFxkKyk6KFxcZCspJC8uZXhlYyhsaW5lKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgbGV0IGNvbnRlbnRzO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb250ZW50cyA9IHN0cmVhbUluLnJlYWRGaWxlU3luYyhtYXRjaFsxXSwgXCJ1dGY4XCIpO1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBsaW5lVGV4dCA9XG4gICAgICAgICAgICBjb250ZW50cy5zcGxpdCgvXFxyXFxufFxccnxcXG58XFx1MjAyOHxcXHUyMDI5LylbK21hdGNoWzJdIC0gMV0gfHwgXCJcIjtcbiAgICAgICAgICBsZXQgY29sdW1uID0gK21hdGNoWzNdIC0gMTtcbiAgICAgICAgICBsZXQgbGVuZ3RoID0gbGluZVRleHQuc2xpY2UoY29sdW1uLCBjb2x1bW4gKyBpZGVudC5sZW5ndGgpID09PSBpZGVudFxuICAgICAgICAgICAgPyBpZGVudC5sZW5ndGhcbiAgICAgICAgICAgIDogMDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsZTogbWF0Y2hbMV0sXG4gICAgICAgICAgICBuYW1lc3BhY2U6IFwiZmlsZVwiLFxuICAgICAgICAgICAgbGluZTogK21hdGNoWzJdLFxuICAgICAgICAgICAgY29sdW1uOiBwcm90b2NvbC5lbmNvZGVVVEY4KGxpbmVUZXh0LnNsaWNlKDAsIGNvbHVtbikpLmxlbmd0aCxcbiAgICAgICAgICAgIGxlbmd0aDogcHJvdG9jb2wuZW5jb2RlVVRGOChsaW5lVGV4dC5zbGljZShjb2x1bW4sIGNvbHVtbiArIGxlbmd0aCkpXG4gICAgICAgICAgICAgIC5sZW5ndGgsXG4gICAgICAgICAgICBsaW5lVGV4dDogbGluZVRleHQgKyBcIlxcblwiICsgbGluZXMuc2xpY2UoMSkuam9pbihcIlxcblwiKSxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb246IFwiXCIsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZmFpbHVyZUVycm9yV2l0aExvZyhcbiAgdGV4dDogc3RyaW5nLFxuICBlcnJvcnM6IHR5cGVzLk1lc3NhZ2VbXSxcbiAgd2FybmluZ3M6IHR5cGVzLk1lc3NhZ2VbXSxcbik6IHR5cGVzLkJ1aWxkRmFpbHVyZSB7XG4gIGxldCBsaW1pdCA9IDU7XG4gIHRleHQgKz0gZXJyb3JzLmxlbmd0aCA8IDFcbiAgICA/IFwiXCJcbiAgICA6IGAgd2l0aCAke2Vycm9ycy5sZW5ndGh9IGVycm9yJHtlcnJvcnMubGVuZ3RoIDwgMiA/IFwiXCIgOiBcInNcIn06YCArXG4gICAgICBlcnJvcnMuc2xpY2UoMCwgbGltaXQgKyAxKS5tYXAoKGUsIGkpID0+IHtcbiAgICAgICAgaWYgKGkgPT09IGxpbWl0KSByZXR1cm4gXCJcXG4uLi5cIjtcbiAgICAgICAgaWYgKCFlLmxvY2F0aW9uKSByZXR1cm4gYFxcbmVycm9yOiAke2UudGV4dH1gO1xuICAgICAgICBsZXQgeyBmaWxlLCBsaW5lLCBjb2x1bW4gfSA9IGUubG9jYXRpb247XG4gICAgICAgIGxldCBwbHVnaW5UZXh0ID0gZS5wbHVnaW5OYW1lID8gYFtwbHVnaW46ICR7ZS5wbHVnaW5OYW1lfV0gYCA6IFwiXCI7XG4gICAgICAgIHJldHVybiBgXFxuJHtmaWxlfToke2xpbmV9OiR7Y29sdW1ufTogRVJST1I6ICR7cGx1Z2luVGV4dH0ke2UudGV4dH1gO1xuICAgICAgfSkuam9pbihcIlwiKTtcbiAgbGV0IGVycm9yOiBhbnkgPSBuZXcgRXJyb3IodGV4dCk7XG5cbiAgLy8gVXNlIGEgZ2V0dGVyIGluc3RlYWQgb2YgYSBwbGFpbiBwcm9wZXJ0eSBzbyB0aGF0IHdoZW4gdGhlIGVycm9yIGlzIHRocm93blxuICAvLyB3aXRob3V0IGJlaW5nIGNhdWdodCBhbmQgdGhlIG5vZGUgcHJvY2VzcyBleGl0cywgdGhlIGVycm9yIG9iamVjdHMgYXJlbid0XG4gIC8vIHByaW50ZWQuIFRoZSBlcnJvciBvYmplY3RzIGFyZSBwcmV0dHkgYmlnIGFuZCBub3QgaGVscGZ1bCBiZWNhdXNlIGEpIGVzYnVpbGRcbiAgLy8gYWxyZWFkeSBwcmludHMgZXJyb3JzIHRvIHN0ZGVyciBieSBkZWZhdWx0IGFuZCBiKSB0aGUgZXJyb3Igc3VtbWFyeSBhbHJlYWR5XG4gIC8vIGhhcyBhIG1vcmUgaGVscGZ1bCBhYmJyZXZpYXRlZCBmb3JtIG9mIHRoZSBlcnJvciBtZXNzYWdlcy5cbiAgZm9yIChcbiAgICBjb25zdCBba2V5LCB2YWx1ZV0gb2YgW1tcImVycm9yc1wiLCBlcnJvcnNdLCBbXCJ3YXJuaW5nc1wiLCB3YXJuaW5nc11dIGFzIGNvbnN0XG4gICkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnJvciwga2V5LCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB2YWx1ZSxcbiAgICAgIHNldDogKHZhbHVlKSA9PlxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyb3IsIGtleSwge1xuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBlcnJvcjtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZURldGFpbHNJbk1lc3NhZ2VzKFxuICBtZXNzYWdlczogdHlwZXMuTWVzc2FnZVtdLFxuICBzdGFzaDogT2JqZWN0U3Rhc2gsXG4pOiB0eXBlcy5NZXNzYWdlW10ge1xuICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgbWVzc2FnZXMpIHtcbiAgICBtZXNzYWdlLmRldGFpbCA9IHN0YXNoLmxvYWQobWVzc2FnZS5kZXRhaWwpO1xuICB9XG4gIHJldHVybiBtZXNzYWdlcztcbn1cblxuZnVuY3Rpb24gc2FuaXRpemVMb2NhdGlvbihcbiAgbG9jYXRpb246IHR5cGVzLlBhcnRpYWxNZXNzYWdlW1wibG9jYXRpb25cIl0sXG4gIHdoZXJlOiBzdHJpbmcsXG4gIHRlcm1pbmFsV2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZCxcbik6IHR5cGVzLk1lc3NhZ2VbXCJsb2NhdGlvblwiXSB7XG4gIGlmIChsb2NhdGlvbiA9PSBudWxsKSByZXR1cm4gbnVsbDtcblxuICBsZXQga2V5czogT3B0aW9uS2V5cyA9IHt9O1xuICBsZXQgZmlsZSA9IGdldEZsYWcobG9jYXRpb24sIGtleXMsIFwiZmlsZVwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgbmFtZXNwYWNlID0gZ2V0RmxhZyhsb2NhdGlvbiwga2V5cywgXCJuYW1lc3BhY2VcIiwgbXVzdEJlU3RyaW5nKTtcbiAgbGV0IGxpbmUgPSBnZXRGbGFnKGxvY2F0aW9uLCBrZXlzLCBcImxpbmVcIiwgbXVzdEJlSW50ZWdlcik7XG4gIGxldCBjb2x1bW4gPSBnZXRGbGFnKGxvY2F0aW9uLCBrZXlzLCBcImNvbHVtblwiLCBtdXN0QmVJbnRlZ2VyKTtcbiAgbGV0IGxlbmd0aCA9IGdldEZsYWcobG9jYXRpb24sIGtleXMsIFwibGVuZ3RoXCIsIG11c3RCZUludGVnZXIpO1xuICBsZXQgbGluZVRleHQgPSBnZXRGbGFnKGxvY2F0aW9uLCBrZXlzLCBcImxpbmVUZXh0XCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBzdWdnZXN0aW9uID0gZ2V0RmxhZyhsb2NhdGlvbiwga2V5cywgXCJzdWdnZXN0aW9uXCIsIG11c3RCZVN0cmluZyk7XG4gIGNoZWNrRm9ySW52YWxpZEZsYWdzKGxvY2F0aW9uLCBrZXlzLCB3aGVyZSk7XG5cbiAgLy8gUGVyZm9ybWFuY2UgaGFjazogU29tZSBwZW9wbGUgcGFzcyBlbm9ybW91cyBtaW5pZmllZCBmaWxlcyBhcyB0aGUgbGluZVxuICAvLyB0ZXh0IHdpdGggYSBjb2x1bW4gbmVhciB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIGFuZCB0aGVuIGNvbXBsYWluXG4gIC8vIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBzbG93LiBUaGUgc2xvd25lc3MgY29tZXMgZnJvbSBzZXJpYWxpemluZyBhIGh1Z2VcbiAgLy8gc3RyaW5nLiBCdXQgdGhlIHZhc3QgbWFqb3JpdHkgb2YgdGhhdCBzdHJpbmcgaXMgdW5uZWNlc3NhcnkuIFRyeSB0b1xuICAvLyBkZXRlY3Qgd2hlbiB0aGlzIGlzIHRoZSBjYXNlIGFuZCB0cmltIHRoZSBzdHJpbmcgYmVmb3JlIHNlcmlhbGl6YXRpb25cbiAgLy8gdG8gYXZvaWQgdGhlIHBlcmZvcm1hbmNlIGhpdC4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZXZhbncvZXNidWlsZC9pc3N1ZXMvMzQ2N1xuICBpZiAobGluZVRleHQpIHtcbiAgICAvLyBUcnkgdG8gY29uc2VydmF0aXZlbHkgZ3Vlc3MgdGhlIG1heGltdW0gYW1vdW50IG9mIHJlbGV2YW50IHRleHRcbiAgICBjb25zdCByZWxldmFudEFTQ0lJID0gbGluZVRleHQuc2xpY2UoXG4gICAgICAwLFxuICAgICAgKGNvbHVtbiAmJiBjb2x1bW4gPiAwID8gY29sdW1uIDogMCkgK1xuICAgICAgICAobGVuZ3RoICYmIGxlbmd0aCA+IDAgPyBsZW5ndGggOiAwKSArXG4gICAgICAgICh0ZXJtaW5hbFdpZHRoICYmIHRlcm1pbmFsV2lkdGggPiAwID8gdGVybWluYWxXaWR0aCA6IDgwKSxcbiAgICApO1xuXG4gICAgLy8gTWFrZSBzdXJlIGl0J3MgQVNDSUkgKHNvIHRoZSBieXRlLW9yaWVudGVkIGNvbHVtbiBhbmQgbGVuZ3RoIHZhbHVlc1xuICAgIC8vIGFyZSBjb3JyZWN0KSBhbmQgdGhhdCB0aGVyZSBhcmUgbm8gbmV3bGluZXMgKHNvIHRoYXQgb3VyIGxvZ2dpbmcgY29kZVxuICAgIC8vIGRvZXNuJ3QgbG9vayBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcpXG4gICAgaWYgKCEvW1xceDdGLVxcdUZGRkZdLy50ZXN0KHJlbGV2YW50QVNDSUkpICYmICEvXFxuLy50ZXN0KGxpbmVUZXh0KSkge1xuICAgICAgbGluZVRleHQgPSByZWxldmFudEFTQ0lJO1xuICAgIH1cbiAgfVxuXG4gIC8vIE5vdGU6IFdlIGNvdWxkIHRlY2huaWNhbGx5IG1ha2UgdGhpcyBldmVuIGZhc3RlciBieSBtYWludGFpbmluZyB0d28gY29waWVzXG4gIC8vIG9mIHRoaXMgY29kZSwgb25lIGluIEdvIGFuZCBvbmUgaW4gVHlwZVNjcmlwdC4gQnV0IEknbSBub3QgZ29pbmcgdG8gZG8gdGhhdC5cbiAgLy8gVGhlIHBvaW50IG9mIHRoaXMgZnVuY3Rpb24gaXMgdG8gY2FsbCBpbnRvIHRoZSByZWFsIEdvIGNvZGUgdG8gZ2V0IHdoYXQgaXRcbiAgLy8gZG9lcy4gSWYgc29tZW9uZSB3YW50cyBhIEpTIHZlcnNpb24sIHRoZXkgY2FuIHBvcnQgaXQgdGhlbXNlbHZlcy5cblxuICByZXR1cm4ge1xuICAgIGZpbGU6IGZpbGUgfHwgXCJcIixcbiAgICBuYW1lc3BhY2U6IG5hbWVzcGFjZSB8fCBcIlwiLFxuICAgIGxpbmU6IGxpbmUgfHwgMCxcbiAgICBjb2x1bW46IGNvbHVtbiB8fCAwLFxuICAgIGxlbmd0aDogbGVuZ3RoIHx8IDAsXG4gICAgbGluZVRleHQ6IGxpbmVUZXh0IHx8IFwiXCIsXG4gICAgc3VnZ2VzdGlvbjogc3VnZ2VzdGlvbiB8fCBcIlwiLFxuICB9O1xufVxuXG5mdW5jdGlvbiBzYW5pdGl6ZU1lc3NhZ2VzKFxuICBtZXNzYWdlczogdHlwZXMuUGFydGlhbE1lc3NhZ2VbXSxcbiAgcHJvcGVydHk6IHN0cmluZyxcbiAgc3Rhc2g6IE9iamVjdFN0YXNoIHwgbnVsbCxcbiAgZmFsbGJhY2tQbHVnaW5OYW1lOiBzdHJpbmcsXG4gIHRlcm1pbmFsV2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZCxcbik6IHR5cGVzLk1lc3NhZ2VbXSB7XG4gIGxldCBtZXNzYWdlc0Nsb25lOiB0eXBlcy5NZXNzYWdlW10gPSBbXTtcbiAgbGV0IGluZGV4ID0gMDtcblxuICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgbWVzc2FnZXMpIHtcbiAgICBsZXQga2V5czogT3B0aW9uS2V5cyA9IHt9O1xuICAgIGxldCBpZCA9IGdldEZsYWcobWVzc2FnZSwga2V5cywgXCJpZFwiLCBtdXN0QmVTdHJpbmcpO1xuICAgIGxldCBwbHVnaW5OYW1lID0gZ2V0RmxhZyhtZXNzYWdlLCBrZXlzLCBcInBsdWdpbk5hbWVcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICBsZXQgdGV4dCA9IGdldEZsYWcobWVzc2FnZSwga2V5cywgXCJ0ZXh0XCIsIG11c3RCZVN0cmluZyk7XG4gICAgbGV0IGxvY2F0aW9uID0gZ2V0RmxhZyhtZXNzYWdlLCBrZXlzLCBcImxvY2F0aW9uXCIsIG11c3RCZU9iamVjdE9yTnVsbCk7XG4gICAgbGV0IG5vdGVzID0gZ2V0RmxhZyhtZXNzYWdlLCBrZXlzLCBcIm5vdGVzXCIsIG11c3RCZUFycmF5KTtcbiAgICBsZXQgZGV0YWlsID0gZ2V0RmxhZyhtZXNzYWdlLCBrZXlzLCBcImRldGFpbFwiLCBjYW5CZUFueXRoaW5nKTtcbiAgICBsZXQgd2hlcmUgPSBgaW4gZWxlbWVudCAke2luZGV4fSBvZiBcIiR7cHJvcGVydHl9XCJgO1xuICAgIGNoZWNrRm9ySW52YWxpZEZsYWdzKG1lc3NhZ2UsIGtleXMsIHdoZXJlKTtcblxuICAgIGxldCBub3Rlc0Nsb25lOiB0eXBlcy5Ob3RlW10gPSBbXTtcbiAgICBpZiAobm90ZXMpIHtcbiAgICAgIGZvciAoY29uc3Qgbm90ZSBvZiBub3Rlcykge1xuICAgICAgICBsZXQgbm90ZUtleXM6IE9wdGlvbktleXMgPSB7fTtcbiAgICAgICAgbGV0IG5vdGVUZXh0ID0gZ2V0RmxhZyhub3RlLCBub3RlS2V5cywgXCJ0ZXh0XCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgIGxldCBub3RlTG9jYXRpb24gPSBnZXRGbGFnKFxuICAgICAgICAgIG5vdGUsXG4gICAgICAgICAgbm90ZUtleXMsXG4gICAgICAgICAgXCJsb2NhdGlvblwiLFxuICAgICAgICAgIG11c3RCZU9iamVjdE9yTnVsbCxcbiAgICAgICAgKTtcbiAgICAgICAgY2hlY2tGb3JJbnZhbGlkRmxhZ3Mobm90ZSwgbm90ZUtleXMsIHdoZXJlKTtcbiAgICAgICAgbm90ZXNDbG9uZS5wdXNoKHtcbiAgICAgICAgICB0ZXh0OiBub3RlVGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGxvY2F0aW9uOiBzYW5pdGl6ZUxvY2F0aW9uKG5vdGVMb2NhdGlvbiwgd2hlcmUsIHRlcm1pbmFsV2lkdGgpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtZXNzYWdlc0Nsb25lLnB1c2goe1xuICAgICAgaWQ6IGlkIHx8IFwiXCIsXG4gICAgICBwbHVnaW5OYW1lOiBwbHVnaW5OYW1lIHx8IGZhbGxiYWNrUGx1Z2luTmFtZSxcbiAgICAgIHRleHQ6IHRleHQgfHwgXCJcIixcbiAgICAgIGxvY2F0aW9uOiBzYW5pdGl6ZUxvY2F0aW9uKGxvY2F0aW9uLCB3aGVyZSwgdGVybWluYWxXaWR0aCksXG4gICAgICBub3Rlczogbm90ZXNDbG9uZSxcbiAgICAgIGRldGFpbDogc3Rhc2ggPyBzdGFzaC5zdG9yZShkZXRhaWwpIDogLTEsXG4gICAgfSk7XG4gICAgaW5kZXgrKztcbiAgfVxuXG4gIHJldHVybiBtZXNzYWdlc0Nsb25lO1xufVxuXG5mdW5jdGlvbiBzYW5pdGl6ZVN0cmluZ0FycmF5KHZhbHVlczogYW55W10sIHByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cXVvdGUocHJvcGVydHkpfSBtdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3NgKTtcbiAgICB9XG4gICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHNhbml0aXplU3RyaW5nTWFwKFxuICBtYXA6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIHByb3BlcnR5OiBzdHJpbmcsXG4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgZm9yIChjb25zdCBrZXkgaW4gbWFwKSB7XG4gICAgY29uc3QgdmFsdWUgPSBtYXBba2V5XTtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBrZXkgJHtxdW90ZShrZXkpfSBpbiBvYmplY3QgJHtxdW90ZShwcm9wZXJ0eSl9IG11c3QgYmUgYSBzdHJpbmdgLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T3V0cHV0RmlsZXMoXG4gIHsgcGF0aCwgY29udGVudHMsIGhhc2ggfTogcHJvdG9jb2wuQnVpbGRPdXRwdXRGaWxlLFxuKTogdHlwZXMuT3V0cHV0RmlsZSB7XG4gIC8vIFRoZSB0ZXh0IGlzIGxhemlseS1nZW5lcmF0ZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIElmIG5vIG9uZSBhc2tzIGZvclxuICAvLyBpdCwgdGhlbiBpdCBuZXZlciBuZWVkcyB0byBiZSBnZW5lcmF0ZWQuXG4gIGxldCB0ZXh0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcmV0dXJuIHtcbiAgICBwYXRoLFxuICAgIGNvbnRlbnRzLFxuICAgIGhhc2gsXG4gICAgZ2V0IHRleHQoKSB7XG4gICAgICAvLyBQZW9wbGUgd2FudCB0byBiZSBhYmxlIHRvIHNldCBcImNvbnRlbnRzXCIgYW5kIGhhdmUgZXNidWlsZCBhdXRvbWF0aWNhbGx5XG4gICAgICAvLyBkZXJpdmUgXCJ0ZXh0XCIgZm9yIHRoZW0sIHNvIGdyYWIgdGhlIGNvbnRlbnRzIG9mZiBvZiB0aGlzIG9iamVjdCBpbnN0ZWFkXG4gICAgICAvLyBvZiB1c2luZyBvdXIgb3JpZ2luYWwgdmFsdWUuXG4gICAgICBjb25zdCBiaW5hcnkgPSB0aGlzLmNvbnRlbnRzO1xuXG4gICAgICAvLyBUaGlzIGRlbGliZXJhdGVseSBkb2Vzbid0IGRvIGJpZGlyZWN0aW9uYWwgZGVyaXZhdGlvbiBiZWNhdXNlIHRoYXQgY291bGRcbiAgICAgIC8vIHJlc3VsdCBpbiB0aGUgaW5lZmZpY2llbmN5LiBGb3IgZXhhbXBsZSwgaWYgd2UgZGlkIGRvIHRoaXMgYW5kIHRoZW4geW91XG4gICAgICAvLyBzZXQgXCJjb250ZW50c1wiIGFuZCBcInRleHRcIiBhbmQgdGhlbiBhc2tlZCBmb3IgXCJjb250ZW50c1wiLCB0aGUgc2Vjb25kXG4gICAgICAvLyBzZXR0ZXIgZm9yIFwidGV4dFwiIHdpbGwgaGF2ZSBlcmFzZWQgb3VyIGNhY2hlZCBcImNvbnRlbnRzXCIgdmFsdWUgc28gd2UnZFxuICAgICAgLy8gbmVlZCB0byByZWdlbmVyYXRlIGl0IGFnYWluLiBJbnN0ZWFkLCBcImNvbnRlbnRzXCIgaXMgdW5hbWJpZ3VvdXNseSB0aGVcbiAgICAgIC8vIHByaW1hcnkgdmFsdWUgYW5kIFwidGV4dFwiIGlzIHVuYW1iaWd1b3VzbHkgdGhlIGRlcml2ZWQgdmFsdWUuXG4gICAgICBpZiAodGV4dCA9PT0gbnVsbCB8fCBiaW5hcnkgIT09IGNvbnRlbnRzKSB7XG4gICAgICAgIGNvbnRlbnRzID0gYmluYXJ5O1xuICAgICAgICB0ZXh0ID0gcHJvdG9jb2wuZGVjb2RlVVRGOChiaW5hcnkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfSxcbiAgfTtcbn1cbiIsICIvKiogQGxpY2Vuc2VcbiAqIGVzYnVpbGQtd2FzbUB2MC4yMS41XG4gKlxuICogTUlUIExpY2Vuc2VcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXZhbiBXYWxsYWNlXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiAqL1xuLy8gVGhpcyBjb2RlIGlzIHBvcnRlZCBmcm9tIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9ldmFudy9lc2J1aWxkL3YwLjIxLjUvbGliL3NoYXJlZC9jb21tb24udHMgYW5kIG1vZGlmaWVkIGJlbG93XG4vLyAtICQgZGVubyBmbXRcbi8vIC0gbG9hZCB0aGUgd29ya2VyIGNvZGUgZnJvbSBVUkwgaW5zdGVhZCBvZiBhbiBlbWJlZGRlZCBjb2RlXG5cbmltcG9ydCAqIGFzIHR5cGVzIGZyb20gXCIuL3R5cGVzLnRzXCI7XG5pbXBvcnQgKiBhcyBjb21tb24gZnJvbSBcIi4vY29tbW9uLnRzXCI7XG5pbXBvcnQgeyBFU0JVSUxEX1ZFUlNJT04gfSBmcm9tIFwiLi92ZXJzaW9uLnRzXCI7XG5cbmludGVyZmFjZSBHbyB7XG4gIF9zY2hlZHVsZWRUaW1lb3V0czogTWFwPG51bWJlciwgUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4+O1xufVxuZXhwb3J0IGNvbnN0IHZlcnNpb24gPSBFU0JVSUxEX1ZFUlNJT047XG5cbmV4cG9ydCBjb25zdCBidWlsZDogdHlwZW9mIHR5cGVzLmJ1aWxkID0gKG9wdGlvbnM6IHR5cGVzLkJ1aWxkT3B0aW9ucykgPT5cbiAgZW5zdXJlU2VydmljZUlzUnVubmluZygpLmJ1aWxkKG9wdGlvbnMpO1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtOiB0eXBlb2YgdHlwZXMudHJhbnNmb3JtID0gKFxuICBpbnB1dDogc3RyaW5nIHwgVWludDhBcnJheSxcbiAgb3B0aW9ucz86IHR5cGVzLlRyYW5zZm9ybU9wdGlvbnMsXG4pID0+IGVuc3VyZVNlcnZpY2VJc1J1bm5pbmcoKS50cmFuc2Zvcm0oaW5wdXQsIG9wdGlvbnMpO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0TWVzc2FnZXM6IHR5cGVvZiB0eXBlcy5mb3JtYXRNZXNzYWdlcyA9IChcbiAgbWVzc2FnZXMsXG4gIG9wdGlvbnMsXG4pID0+IGVuc3VyZVNlcnZpY2VJc1J1bm5pbmcoKS5mb3JtYXRNZXNzYWdlcyhtZXNzYWdlcywgb3B0aW9ucyk7XG5cbmV4cG9ydCBjb25zdCBhbmFseXplTWV0YWZpbGU6IHR5cGVvZiB0eXBlcy5hbmFseXplTWV0YWZpbGUgPSAoXG4gIG1ldGFmaWxlLFxuICBvcHRpb25zLFxuKSA9PiBlbnN1cmVTZXJ2aWNlSXNSdW5uaW5nKCkuYW5hbHl6ZU1ldGFmaWxlKG1ldGFmaWxlLCBvcHRpb25zKTtcblxuZXhwb3J0IGNvbnN0IHN0b3AgPSAoKSA9PiB7XG4gIGlmIChzdG9wU2VydmljZSkgc3RvcFNlcnZpY2UoKTtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xufTtcblxuaW50ZXJmYWNlIFNlcnZpY2Uge1xuICBidWlsZDogdHlwZW9mIHR5cGVzLmJ1aWxkO1xuICB0cmFuc2Zvcm06IHR5cGVvZiB0eXBlcy50cmFuc2Zvcm07XG4gIGZvcm1hdE1lc3NhZ2VzOiB0eXBlb2YgdHlwZXMuZm9ybWF0TWVzc2FnZXM7XG4gIGFuYWx5emVNZXRhZmlsZTogdHlwZW9mIHR5cGVzLmFuYWx5emVNZXRhZmlsZTtcbn1cblxubGV0IGluaXRpYWxpemVQcm9taXNlOiBQcm9taXNlPHZvaWQ+IHwgdW5kZWZpbmVkO1xubGV0IHN0b3BTZXJ2aWNlOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG5sZXQgbG9uZ0xpdmVkU2VydmljZTogU2VydmljZSB8IHVuZGVmaW5lZDtcblxuY29uc3QgZW5zdXJlU2VydmljZUlzUnVubmluZyA9ICgpOiBTZXJ2aWNlID0+IHtcbiAgaWYgKGxvbmdMaXZlZFNlcnZpY2UpIHJldHVybiBsb25nTGl2ZWRTZXJ2aWNlO1xuICBpZiAoaW5pdGlhbGl6ZVByb21pc2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnWW91IG5lZWQgdG8gd2FpdCBmb3IgdGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSBcImluaXRpYWxpemVcIiB0byBiZSByZXNvbHZlZCBiZWZvcmUgY2FsbGluZyB0aGlzJyxcbiAgICApO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignWW91IG5lZWQgdG8gY2FsbCBcImluaXRpYWxpemVcIiBiZWZvcmUgY2FsbGluZyB0aGlzJyk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbGl6ZTogdHlwZW9mIHR5cGVzLmluaXRpYWxpemUgPSAob3B0aW9ucykgPT4ge1xuICBvcHRpb25zID0gY29tbW9uLnZhbGlkYXRlSW5pdGlhbGl6ZU9wdGlvbnMob3B0aW9ucyB8fCB7fSk7XG4gIGNvbnN0IHdhc21Nb2R1bGUgPSBvcHRpb25zLndhc21Nb2R1bGU7XG4gIGNvbnN0IHdvcmtlclVSTCA9IG9wdGlvbnMud29ya2VyVVJMO1xuICBpZiAoIXdhc21Nb2R1bGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnTXVzdCBwcm92aWRlIHRoZSBcIndhc21Nb2R1bGVcIiBvcHRpb24nLFxuICAgICk7XG4gIH1cbiAgaWYgKGluaXRpYWxpemVQcm9taXNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY2FsbCBcImluaXRpYWxpemVcIiBtb3JlIHRoYW4gb25jZScpO1xuICB9XG4gIGluaXRpYWxpemVQcm9taXNlID0gc3RhcnRSdW5uaW5nU2VydmljZSh3YXNtTW9kdWxlLCB3b3JrZXJVUkwpO1xuICBpbml0aWFsaXplUHJvbWlzZS5jYXRjaCgoKSA9PiB7XG4gICAgLy8gTGV0IHRoZSBjYWxsZXIgdHJ5IGFnYWluIGlmIHRoaXMgZmFpbHNcbiAgICBpbml0aWFsaXplUHJvbWlzZSA9IHZvaWQgMDtcbiAgfSk7XG4gIHJldHVybiBpbml0aWFsaXplUHJvbWlzZTtcbn07XG5cbmNvbnN0IHN0YXJ0UnVubmluZ1NlcnZpY2UgPSBhc3luYyAoXG4gIHdhc21Nb2R1bGU6IFdlYkFzc2VtYmx5Lk1vZHVsZSB8IHVuZGVmaW5lZCxcbiAgd29ya2VyVVJMOiBzdHJpbmcgfCBVUkwsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgLy8gUnVuIGVzYnVpbGQgb2ZmIHRoZSBtYWluIHRocmVhZFxuICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKHdvcmtlclVSTC50b1N0cmluZygpLCB7IHR5cGU6IFwibW9kdWxlXCIgfSk7XG5cbiAgbGV0IGZpcnN0TWVzc2FnZVJlc29sdmU6ICh2YWx1ZTogdm9pZCkgPT4gdm9pZDtcbiAgbGV0IGZpcnN0TWVzc2FnZVJlamVjdDogKGVycm9yOiB1bmtub3duKSA9PiB2b2lkO1xuXG4gIGNvbnN0IGZpcnN0TWVzc2FnZVByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgZmlyc3RNZXNzYWdlUmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgZmlyc3RNZXNzYWdlUmVqZWN0ID0gcmVqZWN0O1xuICB9KTtcblxuICB3b3JrZXIub25tZXNzYWdlID0gKHsgZGF0YTogZXJyb3IgfSkgPT4ge1xuICAgIHdvcmtlci5vbm1lc3NhZ2UgPSAoeyBkYXRhIH0pID0+IHJlYWRGcm9tU3Rkb3V0KGRhdGEpO1xuICAgIGlmIChlcnJvcikgZmlyc3RNZXNzYWdlUmVqZWN0KGVycm9yKTtcbiAgICBlbHNlIGZpcnN0TWVzc2FnZVJlc29sdmUoKTtcbiAgfTtcblxuICB3b3JrZXIucG9zdE1lc3NhZ2Uod2FzbU1vZHVsZSk7XG5cbiAgY29uc3QgeyByZWFkRnJvbVN0ZG91dCwgc2VydmljZSB9ID0gY29tbW9uLmNyZWF0ZUNoYW5uZWwoe1xuICAgIHdyaXRlVG9TdGRpbihieXRlcykge1xuICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKGJ5dGVzKTtcbiAgICB9LFxuICAgIGlzU3luYzogZmFsc2UsXG4gICAgaGFzRlM6IGZhbHNlLFxuICAgIGVzYnVpbGQ6IHtcbiAgICAgIGJ1aWxkLFxuICAgICAgdHJhbnNmb3JtLFxuICAgICAgZm9ybWF0TWVzc2FnZXMsXG4gICAgICBhbmFseXplTWV0YWZpbGUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgaW5pdGlhbGl6ZSxcbiAgICB9LFxuICB9KTtcblxuICAvLyBUaGlzIHdpbGwgdGhyb3cgaWYgV2ViQXNzZW1ibHkgbW9kdWxlIGluc3RhbnRpYXRpb24gZmFpbHNcbiAgYXdhaXQgZmlyc3RNZXNzYWdlUHJvbWlzZTtcbiAgc3RvcFNlcnZpY2UgPSAoKSA9PiB7XG4gICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgIGluaXRpYWxpemVQcm9taXNlID0gdW5kZWZpbmVkO1xuICAgIHN0b3BTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgIGxvbmdMaXZlZFNlcnZpY2UgPSB1bmRlZmluZWQ7XG4gIH07XG5cbiAgbG9uZ0xpdmVkU2VydmljZSA9IHtcbiAgICBidWlsZDogKG9wdGlvbnM6IHR5cGVzLkJ1aWxkT3B0aW9ucykgPT5cbiAgICAgIG5ldyBQcm9taXNlPHR5cGVzLkJ1aWxkUmVzdWx0PigocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgICAgICBzZXJ2aWNlLmJ1aWxkT3JDb250ZXh0KHtcbiAgICAgICAgICBjYWxsTmFtZTogXCJidWlsZFwiLFxuICAgICAgICAgIHJlZnM6IG51bGwsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBpc1RUWTogZmFsc2UsXG4gICAgICAgICAgZGVmYXVsdFdEOiBcIi9cIixcbiAgICAgICAgICBjYWxsYmFjazogKGVyciwgcmVzKSA9PlxuICAgICAgICAgICAgZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKHJlcyBhcyB0eXBlcy5CdWlsZFJlc3VsdCksXG4gICAgICAgIH0pXG4gICAgICApLFxuXG4gICAgdHJhbnNmb3JtOiAoaW5wdXQ6IHN0cmluZyB8IFVpbnQ4QXJyYXksIG9wdGlvbnM/OiB0eXBlcy5UcmFuc2Zvcm1PcHRpb25zKSA9PlxuICAgICAgbmV3IFByb21pc2U8dHlwZXMuVHJhbnNmb3JtUmVzdWx0PigocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgICAgICBzZXJ2aWNlLnRyYW5zZm9ybSh7XG4gICAgICAgICAgY2FsbE5hbWU6IFwidHJhbnNmb3JtXCIsXG4gICAgICAgICAgcmVmczogbnVsbCxcbiAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICBvcHRpb25zOiBvcHRpb25zIHx8IHt9LFxuICAgICAgICAgIGlzVFRZOiBmYWxzZSxcbiAgICAgICAgICBmczoge1xuICAgICAgICAgICAgcmVhZEZpbGUoXywgY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiSW50ZXJuYWwgZXJyb3JcIiksIG51bGwpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdyaXRlRmlsZShfLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjYWxsYmFjazogKGVyciwgcmVzKSA9PiBlcnIgPyByZWplY3QoZXJyKSA6IHJlc29sdmUocmVzISksXG4gICAgICAgIH0pXG4gICAgICApLFxuXG4gICAgZm9ybWF0TWVzc2FnZXM6IChtZXNzYWdlcywgb3B0aW9ucykgPT5cbiAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAgICAgIHNlcnZpY2UuZm9ybWF0TWVzc2FnZXMoe1xuICAgICAgICAgIGNhbGxOYW1lOiBcImZvcm1hdE1lc3NhZ2VzXCIsXG4gICAgICAgICAgcmVmczogbnVsbCxcbiAgICAgICAgICBtZXNzYWdlcyxcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIGNhbGxiYWNrOiAoZXJyLCByZXMpID0+IGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZShyZXMhKSxcbiAgICAgICAgfSlcbiAgICAgICksXG5cbiAgICBhbmFseXplTWV0YWZpbGU6IChtZXRhZmlsZSwgb3B0aW9ucykgPT5cbiAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAgICAgIHNlcnZpY2UuYW5hbHl6ZU1ldGFmaWxlKHtcbiAgICAgICAgICBjYWxsTmFtZTogXCJhbmFseXplTWV0YWZpbGVcIixcbiAgICAgICAgICByZWZzOiBudWxsLFxuICAgICAgICAgIG1ldGFmaWxlOiB0eXBlb2YgbWV0YWZpbGUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gbWV0YWZpbGVcbiAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkobWV0YWZpbGUpLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgY2FsbGJhY2s6IChlcnIsIHJlcykgPT4gZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKHJlcyEpLFxuICAgICAgICB9KVxuICAgICAgKSxcbiAgfTtcbn07XG4iLCAiLy8gQHRzLW5vY2hlY2sgLSBEZW5vIHR5cGVzIGFyZSBub3QgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyXG5cbmlmICghc2VsZi5EZW5vKSB7XG4gIHNlbGYuRGVubyA9IHtcbiAgICBidWlsZDogeyBvczogXCJsaW51eFwiIH0sXG4gICAgZXJyb3JzOiB7IEFscmVhZHlFeGlzdHM6IEVycm9yIH0sXG4gICAgZW52OiB7IGdldDogKCkgPT4gdW5kZWZpbmVkIH0sXG4gICAgcGVybWlzc2lvbnM6IHsgcXVlcnk6ICgpID0+IFByb21pc2UucmVzb2x2ZShcImRlbmllZFwiKSB9LFxuICAgIGN3ZDogKCkgPT4gbG9jYXRpb24uaHJlZixcbiAgfTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IHRoZSBCcm93c2VyaWZ5IGF1dGhvcnMuIE1JVCBMaWNlbnNlLlxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0UGF0aChwYXRoOiBzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIGBQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkocGF0aCl9YCxcbiAgICApO1xuICB9XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeS9cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHtcbiAgQ0hBUl9CQUNLV0FSRF9TTEFTSCxcbiAgQ0hBUl9GT1JXQVJEX1NMQVNILFxuICBDSEFSX0xPV0VSQ0FTRV9BLFxuICBDSEFSX0xPV0VSQ0FTRV9aLFxuICBDSEFSX1VQUEVSQ0FTRV9BLFxuICBDSEFSX1VQUEVSQ0FTRV9aLFxufSBmcm9tIFwiLi4vX2NvbW1vbi9jb25zdGFudHMudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUG9zaXhQYXRoU2VwYXJhdG9yKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQYXRoU2VwYXJhdG9yKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIIHx8IGNvZGUgPT09IENIQVJfQkFDS1dBUkRfU0xBU0g7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1dpbmRvd3NEZXZpY2VSb290KGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIChjb2RlID49IENIQVJfTE9XRVJDQVNFX0EgJiYgY29kZSA8PSBDSEFSX0xPV0VSQ0FTRV9aKSB8fFxuICAgIChjb2RlID49IENIQVJfVVBQRVJDQVNFX0EgJiYgY29kZSA8PSBDSEFSX1VQUEVSQ0FTRV9aKVxuICApO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRBcmcodXJsOiBVUkwgfCBzdHJpbmcpIHtcbiAgdXJsID0gdXJsIGluc3RhbmNlb2YgVVJMID8gdXJsIDogbmV3IFVSTCh1cmwpO1xuICBpZiAodXJsLnByb3RvY29sICE9PSBcImZpbGU6XCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBhIGZpbGUgVVJMLlwiKTtcbiAgfVxuICByZXR1cm4gdXJsO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGFzc2VydEFyZyB9IGZyb20gXCIuLi9fY29tbW9uL2Zyb21fZmlsZV91cmwudHNcIjtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZpbGUgVVJMIHRvIGEgcGF0aCBzdHJpbmcuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vcGF0aC93aW5kb3dzL2Zyb21fZmlsZV91cmwudHNcIjtcbiAqXG4gKiBmcm9tRmlsZVVybChcImZpbGU6Ly8vaG9tZS9mb29cIik7IC8vIFwiXFxcXGhvbWVcXFxcZm9vXCJcbiAqIGZyb21GaWxlVXJsKFwiZmlsZTovLy9DOi9Vc2Vycy9mb29cIik7IC8vIFwiQzpcXFxcVXNlcnNcXFxcZm9vXCJcbiAqIGZyb21GaWxlVXJsKFwiZmlsZTovL2xvY2FsaG9zdC9ob21lL2Zvb1wiKTsgLy8gXCJcXFxcXFxcXGxvY2FsaG9zdFxcXFxob21lXFxcXGZvb1wiXG4gKiBgYGBcbiAqIEBwYXJhbSB1cmwgb2YgYSBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUZpbGVVcmwodXJsOiBVUkwgfCBzdHJpbmcpOiBzdHJpbmcge1xuICB1cmwgPSBhc3NlcnRBcmcodXJsKTtcbiAgbGV0IHBhdGggPSBkZWNvZGVVUklDb21wb25lbnQoXG4gICAgdXJsLnBhdGhuYW1lLnJlcGxhY2UoL1xcLy9nLCBcIlxcXFxcIikucmVwbGFjZSgvJSg/IVswLTlBLUZhLWZdezJ9KS9nLCBcIiUyNVwiKSxcbiAgKS5yZXBsYWNlKC9eXFxcXCooW0EtWmEtel06KShcXFxcfCQpLywgXCIkMVxcXFxcIik7XG4gIGlmICh1cmwuaG9zdG5hbWUgIT09IFwiXCIpIHtcbiAgICAvLyBOb3RlOiBUaGUgYFVSTGAgaW1wbGVtZW50YXRpb24gZ3VhcmFudGVlcyB0aGF0IHRoZSBkcml2ZSBsZXR0ZXIgYW5kXG4gICAgLy8gaG9zdG5hbWUgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gT3RoZXJ3aXNlIGl0IHdvdWxkIG5vdCBoYXZlIGJlZW4gdmFsaWRcbiAgICAvLyB0byBhcHBlbmQgdGhlIGhvc3RuYW1lIGFuZCBwYXRoIGxpa2UgdGhpcy5cbiAgICBwYXRoID0gYFxcXFxcXFxcJHt1cmwuaG9zdG5hbWV9JHtwYXRofWA7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgQ0hBUl9DT0xPTiB9IGZyb20gXCIuLi9fY29tbW9uL2NvbnN0YW50cy50c1wiO1xuaW1wb3J0IHsgYXNzZXJ0UGF0aCB9IGZyb20gXCIuLi9fY29tbW9uL2Fzc2VydF9wYXRoLnRzXCI7XG5pbXBvcnQgeyBpc1BhdGhTZXBhcmF0b3IsIGlzV2luZG93c0RldmljZVJvb3QgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG4vKipcbiAqIFZlcmlmaWVzIHdoZXRoZXIgcHJvdmlkZWQgcGF0aCBpcyBhYnNvbHV0ZVxuICogQHBhcmFtIHBhdGggdG8gYmUgdmVyaWZpZWQgYXMgYWJzb2x1dGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQWJzb2x1dGUocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgY29uc3QgbGVuID0gcGF0aC5sZW5ndGg7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNXaW5kb3dzRGV2aWNlUm9vdChjb2RlKSkge1xuICAgIC8vIFBvc3NpYmxlIGRldmljZSByb290XG5cbiAgICBpZiAobGVuID4gMiAmJiBwYXRoLmNoYXJDb2RlQXQoMSkgPT09IENIQVJfQ09MT04pIHtcbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIGFuIGFzc2VydGlvbiBmYWlscy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IEFzc2VydGlvbkVycm9yIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vYXNzZXJ0L2Fzc2VydGlvbl9lcnJvci50c1wiO1xuICpcbiAqIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcihcIkFzc2VydGlvbiBmYWlsZWRcIik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEFzc2VydGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKiogQ29uc3RydWN0cyBhIG5ldyBpbnN0YW5jZS4gKi9cbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gXCJBc3NlcnRpb25FcnJvclwiO1xuICB9XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbmltcG9ydCB7IEFzc2VydGlvbkVycm9yIH0gZnJvbSBcIi4vYXNzZXJ0aW9uX2Vycm9yLnRzXCI7XG5cbi8qKlxuICogTWFrZSBhbiBhc3NlcnRpb24sIGVycm9yIHdpbGwgYmUgdGhyb3duIGlmIGBleHByYCBkb2VzIG5vdCBoYXZlIHRydXRoeSB2YWx1ZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGFzc2VydCB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL2Fzc2VydC9hc3NlcnQudHNcIjtcbiAqXG4gKiBhc3NlcnQoXCJoZWxsb1wiLmluY2x1ZGVzKFwiZWxsb1wiKSk7IC8vIERvZXNuJ3QgdGhyb3dcbiAqIGFzc2VydChcImhlbGxvXCIuaW5jbHVkZXMoXCJ3b3JsZFwiKSk7IC8vIFRocm93c1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoZXhwcjogdW5rbm93biwgbXNnID0gXCJcIik6IGFzc2VydHMgZXhwciB7XG4gIGlmICghZXhwcikge1xuICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcihtc2cpO1xuICB9XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuY29uc3QgV0hJVEVTUEFDRV9FTkNPRElOR1M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIFwiXFx1MDAwOVwiOiBcIiUwOVwiLFxuICBcIlxcdTAwMEFcIjogXCIlMEFcIixcbiAgXCJcXHUwMDBCXCI6IFwiJTBCXCIsXG4gIFwiXFx1MDAwQ1wiOiBcIiUwQ1wiLFxuICBcIlxcdTAwMERcIjogXCIlMERcIixcbiAgXCJcXHUwMDIwXCI6IFwiJTIwXCIsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlV2hpdGVzcGFjZShzdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZUFsbCgvW1xcc10vZywgKGMpID0+IHtcbiAgICByZXR1cm4gV0hJVEVTUEFDRV9FTkNPRElOR1NbY10gPz8gYztcbiAgfSk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgZW5jb2RlV2hpdGVzcGFjZSB9IGZyb20gXCIuLi9fY29tbW9uL3RvX2ZpbGVfdXJsLnRzXCI7XG5pbXBvcnQgeyBpc0Fic29sdXRlIH0gZnJvbSBcIi4vaXNfYWJzb2x1dGUudHNcIjtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIHBhdGggc3RyaW5nIHRvIGEgZmlsZSBVUkwuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRvRmlsZVVybCB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL3BhdGgvd2luZG93cy90b19maWxlX3VybC50c1wiO1xuICpcbiAqIHRvRmlsZVVybChcIlxcXFxob21lXFxcXGZvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8vaG9tZS9mb29cIilcbiAqIHRvRmlsZVVybChcIkM6XFxcXFVzZXJzXFxcXGZvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8vQzovVXNlcnMvZm9vXCIpXG4gKiB0b0ZpbGVVcmwoXCJcXFxcXFxcXDEyNy4wLjAuMVxcXFxob21lXFxcXGZvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8xMjcuMC4wLjEvaG9tZS9mb29cIilcbiAqIGBgYFxuICogQHBhcmFtIHBhdGggdG8gY29udmVydCB0byBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9GaWxlVXJsKHBhdGg6IHN0cmluZyk6IFVSTCB7XG4gIGlmICghaXNBYnNvbHV0ZShwYXRoKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJNdXN0IGJlIGFuIGFic29sdXRlIHBhdGguXCIpO1xuICB9XG5cbiAgY29uc3QgWywgaG9zdG5hbWUsIHBhdGhuYW1lXSA9IHBhdGgubWF0Y2goXG4gICAgL14oPzpbL1xcXFxdezJ9KFteL1xcXFxdKykoPz1bL1xcXFxdKD86W14vXFxcXF18JCkpKT8oLiopLyxcbiAgKSE7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoXCJmaWxlOi8vL1wiKTtcbiAgdXJsLnBhdGhuYW1lID0gZW5jb2RlV2hpdGVzcGFjZShwYXRobmFtZS5yZXBsYWNlKC8lL2csIFwiJTI1XCIpKTtcbiAgaWYgKGhvc3RuYW1lICE9PSB1bmRlZmluZWQgJiYgaG9zdG5hbWUgIT09IFwibG9jYWxob3N0XCIpIHtcbiAgICB1cmwuaG9zdG5hbWUgPSBob3N0bmFtZTtcbiAgICBpZiAoIXVybC5ob3N0bmFtZSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgaG9zdG5hbWUuXCIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdXJsO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgdGhlIEJyb3dzZXJpZnkgYXV0aG9ycy4gTUlUIExpY2Vuc2UuXG4vLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYnJvd3NlcmlmeS9wYXRoLWJyb3dzZXJpZnkvXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IENIQVJfRk9SV0FSRF9TTEFTSCB9IGZyb20gXCIuLi9fY29tbW9uL2NvbnN0YW50cy50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNQb3NpeFBhdGhTZXBhcmF0b3IoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBjb2RlID09PSBDSEFSX0ZPUldBUkRfU0xBU0g7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgYXNzZXJ0QXJnIH0gZnJvbSBcIi4uL19jb21tb24vZnJvbV9maWxlX3VybC50c1wiO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZmlsZSBVUkwgdG8gYSBwYXRoIHN0cmluZy5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZnJvbUZpbGVVcmwgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9wYXRoL3Bvc2l4L2Zyb21fZmlsZV91cmwudHNcIjtcbiAqXG4gKiBmcm9tRmlsZVVybChcImZpbGU6Ly8vaG9tZS9mb29cIik7IC8vIFwiL2hvbWUvZm9vXCJcbiAqIGBgYFxuICogQHBhcmFtIHVybCBvZiBhIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tRmlsZVVybCh1cmw6IFVSTCB8IHN0cmluZyk6IHN0cmluZyB7XG4gIHVybCA9IGFzc2VydEFyZyh1cmwpO1xuICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KFxuICAgIHVybC5wYXRobmFtZS5yZXBsYWNlKC8lKD8hWzAtOUEtRmEtZl17Mn0pL2csIFwiJTI1XCIpLFxuICApO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi4vX2NvbW1vbi9hc3NlcnRfcGF0aC50c1wiO1xuaW1wb3J0IHsgaXNQb3NpeFBhdGhTZXBhcmF0b3IgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG4vKipcbiAqIFZlcmlmaWVzIHdoZXRoZXIgcHJvdmlkZWQgcGF0aCBpcyBhYnNvbHV0ZVxuICogQHBhcmFtIHBhdGggdG8gYmUgdmVyaWZpZWQgYXMgYWJzb2x1dGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQWJzb2x1dGUocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG4gIHJldHVybiBwYXRoLmxlbmd0aCA+IDAgJiYgaXNQb3NpeFBhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDApKTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBlbmNvZGVXaGl0ZXNwYWNlIH0gZnJvbSBcIi4uL19jb21tb24vdG9fZmlsZV91cmwudHNcIjtcbmltcG9ydCB7IGlzQWJzb2x1dGUgfSBmcm9tIFwiLi9pc19hYnNvbHV0ZS50c1wiO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgcGF0aCBzdHJpbmcgdG8gYSBmaWxlIFVSTC5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdG9GaWxlVXJsIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vcGF0aC9wb3NpeC90b19maWxlX3VybC50c1wiO1xuICpcbiAqIHRvRmlsZVVybChcIi9ob21lL2Zvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8vaG9tZS9mb29cIilcbiAqIGBgYFxuICogQHBhcmFtIHBhdGggdG8gY29udmVydCB0byBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9GaWxlVXJsKHBhdGg6IHN0cmluZyk6IFVSTCB7XG4gIGlmICghaXNBYnNvbHV0ZShwYXRoKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJNdXN0IGJlIGFuIGFic29sdXRlIHBhdGguXCIpO1xuICB9XG5cbiAgY29uc3QgdXJsID0gbmV3IFVSTChcImZpbGU6Ly8vXCIpO1xuICB1cmwucGF0aG5hbWUgPSBlbmNvZGVXaGl0ZXNwYWNlKFxuICAgIHBhdGgucmVwbGFjZSgvJS9nLCBcIiUyNVwiKS5yZXBsYWNlKC9cXFxcL2csIFwiJTVDXCIpLFxuICApO1xuICByZXR1cm4gdXJsO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8vIEtlZXAgdGhpcyB1cC10by1kYXRlIHdpdGggRGVuby5idWlsZC5vc1xuZXhwb3J0IHR5cGUgT1NUeXBlID1cbiAgfCBcImRhcndpblwiXG4gIHwgXCJsaW51eFwiXG4gIHwgXCJ3aW5kb3dzXCJcbiAgfCBcImZyZWVic2RcIlxuICB8IFwibmV0YnNkXCJcbiAgfCBcImFpeFwiXG4gIHwgXCJzb2xhcmlzXCJcbiAgfCBcImlsbHVtb3NcIjtcblxuZXhwb3J0IGNvbnN0IG9zVHlwZTogT1NUeXBlID0gKCgpID0+IHtcbiAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgY29uc3QgeyBEZW5vIH0gPSBnbG9iYWxUaGlzIGFzIGFueTtcbiAgaWYgKHR5cGVvZiBEZW5vPy5idWlsZD8ub3MgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gRGVuby5idWlsZC5vcztcbiAgfVxuXG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gIGNvbnN0IHsgbmF2aWdhdG9yIH0gPSBnbG9iYWxUaGlzIGFzIGFueTtcbiAgaWYgKG5hdmlnYXRvcj8uYXBwVmVyc2lvbj8uaW5jbHVkZXM/LihcIldpblwiKSkge1xuICAgIHJldHVybiBcIndpbmRvd3NcIjtcbiAgfVxuXG4gIHJldHVybiBcImxpbnV4XCI7XG59KSgpO1xuXG5leHBvcnQgY29uc3QgaXNXaW5kb3dzID0gb3NUeXBlID09PSBcIndpbmRvd3NcIjtcbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc1dpbmRvd3MgfSBmcm9tIFwiLi9fb3MudHNcIjtcbmltcG9ydCB7IGZyb21GaWxlVXJsIGFzIHBvc2l4RnJvbUZpbGVVcmwgfSBmcm9tIFwiLi9wb3NpeC9mcm9tX2ZpbGVfdXJsLnRzXCI7XG5pbXBvcnQgeyBmcm9tRmlsZVVybCBhcyB3aW5kb3dzRnJvbUZpbGVVcmwgfSBmcm9tIFwiLi93aW5kb3dzL2Zyb21fZmlsZV91cmwudHNcIjtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZpbGUgVVJMIHRvIGEgcGF0aCBzdHJpbmcuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vcGF0aC9mcm9tX2ZpbGVfdXJsLnRzXCI7XG4gKlxuICogLy8gcG9zaXhcbiAqIGZyb21GaWxlVXJsKFwiZmlsZTovLy9ob21lL2Zvb1wiKTsgLy8gXCIvaG9tZS9mb29cIlxuICpcbiAqIC8vIHdpbjMyXG4gKiBmcm9tRmlsZVVybChcImZpbGU6Ly8vaG9tZS9mb29cIik7IC8vIFwiXFxcXGhvbWVcXFxcZm9vXCJcbiAqIGZyb21GaWxlVXJsKFwiZmlsZTovLy9DOi9Vc2Vycy9mb29cIik7IC8vIFwiQzpcXFxcVXNlcnNcXFxcZm9vXCJcbiAqIGZyb21GaWxlVXJsKFwiZmlsZTovL2xvY2FsaG9zdC9ob21lL2Zvb1wiKTsgLy8gXCJcXFxcXFxcXGxvY2FsaG9zdFxcXFxob21lXFxcXGZvb1wiXG4gKiBgYGBcbiAqIEBwYXJhbSB1cmwgb2YgYSBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUZpbGVVcmwodXJsOiBzdHJpbmcgfCBVUkwpOiBzdHJpbmcge1xuICByZXR1cm4gaXNXaW5kb3dzID8gd2luZG93c0Zyb21GaWxlVXJsKHVybCkgOiBwb3NpeEZyb21GaWxlVXJsKHVybCk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgaXNXaW5kb3dzIH0gZnJvbSBcIi4vX29zLnRzXCI7XG5pbXBvcnQgeyB0b0ZpbGVVcmwgYXMgcG9zaXhUb0ZpbGVVcmwgfSBmcm9tIFwiLi9wb3NpeC90b19maWxlX3VybC50c1wiO1xuaW1wb3J0IHsgdG9GaWxlVXJsIGFzIHdpbmRvd3NUb0ZpbGVVcmwgfSBmcm9tIFwiLi93aW5kb3dzL3RvX2ZpbGVfdXJsLnRzXCI7XG5cbi8qKlxuICogQ29udmVydHMgYSBwYXRoIHN0cmluZyB0byBhIGZpbGUgVVJMLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB0b0ZpbGVVcmwgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9wYXRoL3RvX2ZpbGVfdXJsLnRzXCI7XG4gKlxuICogLy8gcG9zaXhcbiAqIHRvRmlsZVVybChcIi9ob21lL2Zvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8vaG9tZS9mb29cIilcbiAqXG4gKiAvLyB3aW4zMlxuICogdG9GaWxlVXJsKFwiXFxcXGhvbWVcXFxcZm9vXCIpOyAvLyBuZXcgVVJMKFwiZmlsZTovLy9ob21lL2Zvb1wiKVxuICogdG9GaWxlVXJsKFwiQzpcXFxcVXNlcnNcXFxcZm9vXCIpOyAvLyBuZXcgVVJMKFwiZmlsZTovLy9DOi9Vc2Vycy9mb29cIilcbiAqIHRvRmlsZVVybChcIlxcXFxcXFxcMTI3LjAuMC4xXFxcXGhvbWVcXFxcZm9vXCIpOyAvLyBuZXcgVVJMKFwiZmlsZTovLzEyNy4wLjAuMS9ob21lL2Zvb1wiKVxuICogYGBgXG4gKiBAcGFyYW0gcGF0aCB0byBjb252ZXJ0IHRvIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0ZpbGVVcmwocGF0aDogc3RyaW5nKTogVVJMIHtcbiAgcmV0dXJuIGlzV2luZG93cyA/IHdpbmRvd3NUb0ZpbGVVcmwocGF0aCkgOiBwb3NpeFRvRmlsZVVybChwYXRoKTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuaW1wb3J0IHsgZGlybmFtZSB9IGZyb20gXCIuLi9wYXRoL2Rpcm5hbWUudHNcIjtcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwiLi4vcGF0aC9yZXNvbHZlLnRzXCI7XG5pbXBvcnQgeyBlbnN1cmVEaXIsIGVuc3VyZURpclN5bmMgfSBmcm9tIFwiLi9lbnN1cmVfZGlyLnRzXCI7XG5pbXBvcnQgeyBnZXRGaWxlSW5mb1R5cGUgfSBmcm9tIFwiLi9fZ2V0X2ZpbGVfaW5mb190eXBlLnRzXCI7XG5pbXBvcnQgeyB0b1BhdGhTdHJpbmcgfSBmcm9tIFwiLi9fdG9fcGF0aF9zdHJpbmcudHNcIjtcblxuY29uc3QgaXNXaW5kb3dzID0gRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCI7XG5cbmZ1bmN0aW9uIHJlc29sdmVTeW1saW5rVGFyZ2V0KHRhcmdldDogc3RyaW5nIHwgVVJMLCBsaW5rTmFtZTogc3RyaW5nIHwgVVJMKSB7XG4gIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSBcInN0cmluZ1wiKSByZXR1cm4gdGFyZ2V0OyAvLyBVUkwgaXMgYWx3YXlzIGFic29sdXRlIHBhdGhcbiAgaWYgKHR5cGVvZiBsaW5rTmFtZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiByZXNvbHZlKGRpcm5hbWUobGlua05hbWUpLCB0YXJnZXQpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgVVJMKHRhcmdldCwgbGlua05hbWUpO1xuICB9XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IHRoZSBsaW5rIGV4aXN0cywgYW5kIHBvaW50cyB0byBhIHZhbGlkIGZpbGUuXG4gKiBJZiB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBkb2VzIG5vdCBleGlzdCwgaXQgaXMgY3JlYXRlZC5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IHRoZSBzb3VyY2UgZmlsZSBwYXRoXG4gKiBAcGFyYW0gbGlua05hbWUgdGhlIGRlc3RpbmF0aW9uIGxpbmsgcGF0aFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlU3ltbGluayhcbiAgdGFyZ2V0OiBzdHJpbmcgfCBVUkwsXG4gIGxpbmtOYW1lOiBzdHJpbmcgfCBVUkwsXG4pIHtcbiAgY29uc3QgdGFyZ2V0UmVhbFBhdGggPSByZXNvbHZlU3ltbGlua1RhcmdldCh0YXJnZXQsIGxpbmtOYW1lKTtcbiAgY29uc3Qgc3JjU3RhdEluZm8gPSBhd2FpdCBEZW5vLmxzdGF0KHRhcmdldFJlYWxQYXRoKTtcbiAgY29uc3Qgc3JjRmlsZVBhdGhUeXBlID0gZ2V0RmlsZUluZm9UeXBlKHNyY1N0YXRJbmZvKTtcblxuICBhd2FpdCBlbnN1cmVEaXIoZGlybmFtZSh0b1BhdGhTdHJpbmcobGlua05hbWUpKSk7XG5cbiAgY29uc3Qgb3B0aW9uczogRGVuby5TeW1saW5rT3B0aW9ucyB8IHVuZGVmaW5lZCA9IGlzV2luZG93c1xuICAgID8ge1xuICAgICAgdHlwZTogc3JjRmlsZVBhdGhUeXBlID09PSBcImRpclwiID8gXCJkaXJcIiA6IFwiZmlsZVwiLFxuICAgIH1cbiAgICA6IHVuZGVmaW5lZDtcblxuICB0cnkge1xuICAgIGF3YWl0IERlbm8uc3ltbGluayh0YXJnZXQsIGxpbmtOYW1lLCBvcHRpb25zKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLkFscmVhZHlFeGlzdHMpKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgdGhlIGxpbmsgZXhpc3RzLCBhbmQgcG9pbnRzIHRvIGEgdmFsaWQgZmlsZS5cbiAqIElmIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGRvZXMgbm90IGV4aXN0LCBpdCBpcyBjcmVhdGVkLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgdGhlIHNvdXJjZSBmaWxlIHBhdGhcbiAqIEBwYXJhbSBsaW5rTmFtZSB0aGUgZGVzdGluYXRpb24gbGluayBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVTeW1saW5rU3luYyhcbiAgdGFyZ2V0OiBzdHJpbmcgfCBVUkwsXG4gIGxpbmtOYW1lOiBzdHJpbmcgfCBVUkwsXG4pIHtcbiAgY29uc3QgdGFyZ2V0UmVhbFBhdGggPSByZXNvbHZlU3ltbGlua1RhcmdldCh0YXJnZXQsIGxpbmtOYW1lKTtcbiAgY29uc3Qgc3JjU3RhdEluZm8gPSBEZW5vLmxzdGF0U3luYyh0YXJnZXRSZWFsUGF0aCk7XG4gIGNvbnN0IHNyY0ZpbGVQYXRoVHlwZSA9IGdldEZpbGVJbmZvVHlwZShzcmNTdGF0SW5mbyk7XG5cbiAgZW5zdXJlRGlyU3luYyhkaXJuYW1lKHRvUGF0aFN0cmluZyhsaW5rTmFtZSkpKTtcblxuICBjb25zdCBvcHRpb25zOiBEZW5vLlN5bWxpbmtPcHRpb25zIHwgdW5kZWZpbmVkID0gaXNXaW5kb3dzXG4gICAgPyB7XG4gICAgICB0eXBlOiBzcmNGaWxlUGF0aFR5cGUgPT09IFwiZGlyXCIgPyBcImRpclwiIDogXCJmaWxlXCIsXG4gICAgfVxuICAgIDogdW5kZWZpbmVkO1xuXG4gIHRyeSB7XG4gICAgRGVuby5zeW1saW5rU3luYyh0YXJnZXQsIGxpbmtOYW1lLCBvcHRpb25zKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLkFscmVhZHlFeGlzdHMpKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuaW1wb3J0IHsgR2xvYk9wdGlvbnMgfSBmcm9tIFwiLi4vcGF0aC9nbG9iLnRzXCI7XG5pbXBvcnQgeyBnbG9iVG9SZWdFeHAgfSBmcm9tIFwiLi4vcGF0aC9nbG9iX3RvX3JlZ2V4cC50c1wiO1xuaW1wb3J0IHsgam9pbkdsb2JzIH0gZnJvbSBcIi4uL3BhdGgvam9pbl9nbG9icy50c1wiO1xuaW1wb3J0IHsgaXNHbG9iIH0gZnJvbSBcIi4uL3BhdGgvaXNfZ2xvYi50c1wiO1xuaW1wb3J0IHsgaXNBYnNvbHV0ZSB9IGZyb20gXCIuLi9wYXRoL2lzX2Fic29sdXRlLnRzXCI7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcIi4uL3BhdGgvcmVzb2x2ZS50c1wiO1xuaW1wb3J0IHsgU0VQQVJBVE9SX1BBVFRFUk4gfSBmcm9tIFwiLi4vcGF0aC9jb25zdGFudHMudHNcIjtcbmltcG9ydCB7IHdhbGssIHdhbGtTeW5jIH0gZnJvbSBcIi4vd2Fsay50c1wiO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4uL2Fzc2VydC9hc3NlcnQudHNcIjtcbmltcG9ydCB7IHRvUGF0aFN0cmluZyB9IGZyb20gXCIuL190b19wYXRoX3N0cmluZy50c1wiO1xuaW1wb3J0IHtcbiAgY3JlYXRlV2Fsa0VudHJ5LFxuICBjcmVhdGVXYWxrRW50cnlTeW5jLFxuICB0eXBlIFdhbGtFbnRyeSxcbn0gZnJvbSBcIi4vX2NyZWF0ZV93YWxrX2VudHJ5LnRzXCI7XG5cbmV4cG9ydCB0eXBlIHsgR2xvYk9wdGlvbnMgfTtcblxuY29uc3QgaXNXaW5kb3dzID0gRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCI7XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIGV4cGFuZEdsb2J9IGFuZCB7QGxpbmtjb2RlIGV4cGFuZEdsb2JTeW5jfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhwYW5kR2xvYk9wdGlvbnMgZXh0ZW5kcyBPbWl0PEdsb2JPcHRpb25zLCBcIm9zXCI+IHtcbiAgLyoqIEZpbGUgcGF0aCB3aGVyZSB0byBleHBhbmQgZnJvbS4gKi9cbiAgcm9vdD86IHN0cmluZztcbiAgLyoqIExpc3Qgb2YgZ2xvYiBwYXR0ZXJucyB0byBiZSBleGNsdWRlZCBmcm9tIHRoZSBleHBhbnNpb24uICovXG4gIGV4Y2x1ZGU/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSBkaXJlY3RvcmllcyBpbiBlbnRyaWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7dHJ1ZX1cbiAgICovXG4gIGluY2x1ZGVEaXJzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7ZmFsc2V9XG4gICAqL1xuICBmb2xsb3dTeW1saW5rcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZm9sbG93ZWQgc3ltbGluaydzIHBhdGggc2hvdWxkIGJlIGNhbm9uaWNhbGl6ZWQuXG4gICAqIFRoaXMgb3B0aW9uIHdvcmtzIG9ubHkgaWYgYGZvbGxvd1N5bWxpbmtzYCBpcyBub3QgYGZhbHNlYC5cbiAgICpcbiAgICogQGRlZmF1bHQge3RydWV9XG4gICAqL1xuICBjYW5vbmljYWxpemU/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgU3BsaXRQYXRoIHtcbiAgc2VnbWVudHM6IHN0cmluZ1tdO1xuICBpc0Fic29sdXRlOiBib29sZWFuO1xuICBoYXNUcmFpbGluZ1NlcDogYm9vbGVhbjtcbiAgLy8gRGVmaW5lZCBmb3IgYW55IGFic29sdXRlIFdpbmRvd3MgcGF0aC5cbiAgd2luUm9vdD86IHN0cmluZztcbn1cblxuZnVuY3Rpb24gc3BsaXQocGF0aDogc3RyaW5nKTogU3BsaXRQYXRoIHtcbiAgY29uc3QgcyA9IFNFUEFSQVRPUl9QQVRURVJOLnNvdXJjZTtcbiAgY29uc3Qgc2VnbWVudHMgPSBwYXRoXG4gICAgLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7c318JHtzfSRgLCBcImdcIiksIFwiXCIpXG4gICAgLnNwbGl0KFNFUEFSQVRPUl9QQVRURVJOKTtcbiAgY29uc3QgaXNBYnNvbHV0ZV8gPSBpc0Fic29sdXRlKHBhdGgpO1xuICByZXR1cm4ge1xuICAgIHNlZ21lbnRzLFxuICAgIGlzQWJzb2x1dGU6IGlzQWJzb2x1dGVfLFxuICAgIGhhc1RyYWlsaW5nU2VwOiAhIXBhdGgubWF0Y2gobmV3IFJlZ0V4cChgJHtzfSRgKSksXG4gICAgd2luUm9vdDogaXNXaW5kb3dzICYmIGlzQWJzb2x1dGVfID8gc2VnbWVudHMuc2hpZnQoKSA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gdGhyb3dVbmxlc3NOb3RGb3VuZChlcnJvcjogdW5rbm93bikge1xuICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLk5vdEZvdW5kKSkge1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVQYXRoKGE6IFdhbGtFbnRyeSwgYjogV2Fsa0VudHJ5KTogbnVtYmVyIHtcbiAgaWYgKGEucGF0aCA8IGIucGF0aCkgcmV0dXJuIC0xO1xuICBpZiAoYS5wYXRoID4gYi5wYXRoKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8qKlxuICogRXhwYW5kIHRoZSBnbG9iIHN0cmluZyBmcm9tIHRoZSBzcGVjaWZpZWQgYHJvb3RgIGRpcmVjdG9yeSBhbmQgeWllbGQgZWFjaFxuICogcmVzdWx0IGFzIGEgYFdhbGtFbnRyeWAgb2JqZWN0LlxuICpcbiAqIFNlZSBbYGdsb2JUb1JlZ0V4cCgpYF0oLi4vcGF0aC9nbG9iLnRzI2dsb2JUb1JlZ0V4cCkgZm9yIGRldGFpbHMgb24gc3VwcG9ydGVkXG4gKiBzeW50YXguXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBleHBhbmRHbG9iIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vZnMvZXhwYW5kX2dsb2IudHNcIjtcbiAqIGZvciBhd2FpdCAoY29uc3QgZmlsZSBvZiBleHBhbmRHbG9iKFwiKipcXC8qLnRzXCIpKSB7XG4gKiAgIGNvbnNvbGUubG9nKGZpbGUpO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogZXhwYW5kR2xvYihcbiAgZ2xvYjogc3RyaW5nIHwgVVJMLFxuICB7XG4gICAgcm9vdCxcbiAgICBleGNsdWRlID0gW10sXG4gICAgaW5jbHVkZURpcnMgPSB0cnVlLFxuICAgIGV4dGVuZGVkID0gdHJ1ZSxcbiAgICBnbG9ic3RhciA9IHRydWUsXG4gICAgY2FzZUluc2Vuc2l0aXZlLFxuICAgIGZvbGxvd1N5bWxpbmtzLFxuICAgIGNhbm9uaWNhbGl6ZSxcbiAgfTogRXhwYW5kR2xvYk9wdGlvbnMgPSB7fSxcbik6IEFzeW5jSXRlcmFibGVJdGVyYXRvcjxXYWxrRW50cnk+IHtcbiAgY29uc3Qge1xuICAgIHNlZ21lbnRzLFxuICAgIGlzQWJzb2x1dGU6IGlzR2xvYkFic29sdXRlLFxuICAgIGhhc1RyYWlsaW5nU2VwLFxuICAgIHdpblJvb3QsXG4gIH0gPSBzcGxpdCh0b1BhdGhTdHJpbmcoZ2xvYikpO1xuICByb290ID8/PSBpc0dsb2JBYnNvbHV0ZSA/IHdpblJvb3QgPz8gXCIvXCIgOiBEZW5vLmN3ZCgpO1xuXG4gIGNvbnN0IGdsb2JPcHRpb25zOiBHbG9iT3B0aW9ucyA9IHsgZXh0ZW5kZWQsIGdsb2JzdGFyLCBjYXNlSW5zZW5zaXRpdmUgfTtcbiAgY29uc3QgYWJzUm9vdCA9IGlzR2xvYkFic29sdXRlID8gcm9vdCA6IHJlc29sdmUocm9vdCEpOyAvLyByb290IGlzIGFsd2F5cyBzdHJpbmcgaGVyZVxuICBjb25zdCByZXNvbHZlRnJvbVJvb3QgPSAocGF0aDogc3RyaW5nKTogc3RyaW5nID0+IHJlc29sdmUoYWJzUm9vdCwgcGF0aCk7XG4gIGNvbnN0IGV4Y2x1ZGVQYXR0ZXJucyA9IGV4Y2x1ZGVcbiAgICAubWFwKHJlc29sdmVGcm9tUm9vdClcbiAgICAubWFwKChzOiBzdHJpbmcpOiBSZWdFeHAgPT4gZ2xvYlRvUmVnRXhwKHMsIGdsb2JPcHRpb25zKSk7XG4gIGNvbnN0IHNob3VsZEluY2x1ZGUgPSAocGF0aDogc3RyaW5nKTogYm9vbGVhbiA9PlxuICAgICFleGNsdWRlUGF0dGVybnMuc29tZSgocDogUmVnRXhwKTogYm9vbGVhbiA9PiAhIXBhdGgubWF0Y2gocCkpO1xuXG4gIGxldCBmaXhlZFJvb3QgPSBpc0dsb2JBYnNvbHV0ZVxuICAgID8gd2luUm9vdCAhPT0gdW5kZWZpbmVkID8gd2luUm9vdCA6IFwiL1wiXG4gICAgOiBhYnNSb290O1xuICB3aGlsZSAoc2VnbWVudHMubGVuZ3RoID4gMCAmJiAhaXNHbG9iKHNlZ21lbnRzWzBdKSkge1xuICAgIGNvbnN0IHNlZyA9IHNlZ21lbnRzLnNoaWZ0KCk7XG4gICAgYXNzZXJ0KHNlZyAhPT0gdW5kZWZpbmVkKTtcbiAgICBmaXhlZFJvb3QgPSBqb2luR2xvYnMoW2ZpeGVkUm9vdCwgc2VnXSwgZ2xvYk9wdGlvbnMpO1xuICB9XG5cbiAgbGV0IGZpeGVkUm9vdEluZm86IFdhbGtFbnRyeTtcbiAgdHJ5IHtcbiAgICBmaXhlZFJvb3RJbmZvID0gYXdhaXQgY3JlYXRlV2Fsa0VudHJ5KGZpeGVkUm9vdCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRocm93VW5sZXNzTm90Rm91bmQoZXJyb3IpO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24qIGFkdmFuY2VNYXRjaChcbiAgICB3YWxrSW5mbzogV2Fsa0VudHJ5LFxuICAgIGdsb2JTZWdtZW50OiBzdHJpbmcsXG4gICk6IEFzeW5jSXRlcmFibGVJdGVyYXRvcjxXYWxrRW50cnk+IHtcbiAgICBpZiAoIXdhbGtJbmZvLmlzRGlyZWN0b3J5KSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChnbG9iU2VnbWVudCA9PT0gXCIuLlwiKSB7XG4gICAgICBjb25zdCBwYXJlbnRQYXRoID0gam9pbkdsb2JzKFt3YWxrSW5mby5wYXRoLCBcIi4uXCJdLCBnbG9iT3B0aW9ucyk7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoc2hvdWxkSW5jbHVkZShwYXJlbnRQYXRoKSkge1xuICAgICAgICAgIHJldHVybiB5aWVsZCBhd2FpdCBjcmVhdGVXYWxrRW50cnkocGFyZW50UGF0aCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRocm93VW5sZXNzTm90Rm91bmQoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoZ2xvYlNlZ21lbnQgPT09IFwiKipcIikge1xuICAgICAgcmV0dXJuIHlpZWxkKiB3YWxrKHdhbGtJbmZvLnBhdGgsIHtcbiAgICAgICAgc2tpcDogZXhjbHVkZVBhdHRlcm5zLFxuICAgICAgICBtYXhEZXB0aDogZ2xvYnN0YXIgPyBJbmZpbml0eSA6IDEsXG4gICAgICAgIGZvbGxvd1N5bWxpbmtzLFxuICAgICAgICBjYW5vbmljYWxpemUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZ2xvYlBhdHRlcm4gPSBnbG9iVG9SZWdFeHAoZ2xvYlNlZ21lbnQsIGdsb2JPcHRpb25zKTtcbiAgICBmb3IgYXdhaXQgKFxuICAgICAgY29uc3Qgd2Fsa0VudHJ5IG9mIHdhbGsod2Fsa0luZm8ucGF0aCwge1xuICAgICAgICBtYXhEZXB0aDogMSxcbiAgICAgICAgc2tpcDogZXhjbHVkZVBhdHRlcm5zLFxuICAgICAgICBmb2xsb3dTeW1saW5rcyxcbiAgICAgIH0pXG4gICAgKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHdhbGtFbnRyeS5wYXRoICE9PSB3YWxrSW5mby5wYXRoICYmXG4gICAgICAgIHdhbGtFbnRyeS5uYW1lLm1hdGNoKGdsb2JQYXR0ZXJuKVxuICAgICAgKSB7XG4gICAgICAgIHlpZWxkIHdhbGtFbnRyeTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsZXQgY3VycmVudE1hdGNoZXM6IFdhbGtFbnRyeVtdID0gW2ZpeGVkUm9vdEluZm9dO1xuICBmb3IgKGNvbnN0IHNlZ21lbnQgb2Ygc2VnbWVudHMpIHtcbiAgICAvLyBBZHZhbmNpbmcgdGhlIGxpc3Qgb2YgY3VycmVudCBtYXRjaGVzIG1heSBpbnRyb2R1Y2UgZHVwbGljYXRlcywgc28gd2VcbiAgICAvLyBwYXNzIGV2ZXJ5dGhpbmcgdGhyb3VnaCB0aGlzIE1hcC5cbiAgICBjb25zdCBuZXh0TWF0Y2hNYXA6IE1hcDxzdHJpbmcsIFdhbGtFbnRyeT4gPSBuZXcgTWFwKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjdXJyZW50TWF0Y2hlcy5tYXAoYXN5bmMgKGN1cnJlbnRNYXRjaCkgPT4ge1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IG5leHRNYXRjaCBvZiBhZHZhbmNlTWF0Y2goY3VycmVudE1hdGNoLCBzZWdtZW50KSkge1xuICAgICAgICAgIG5leHRNYXRjaE1hcC5zZXQobmV4dE1hdGNoLnBhdGgsIG5leHRNYXRjaCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gICAgY3VycmVudE1hdGNoZXMgPSBbLi4ubmV4dE1hdGNoTWFwLnZhbHVlcygpXS5zb3J0KGNvbXBhcmVQYXRoKTtcbiAgfVxuXG4gIGlmIChoYXNUcmFpbGluZ1NlcCkge1xuICAgIGN1cnJlbnRNYXRjaGVzID0gY3VycmVudE1hdGNoZXMuZmlsdGVyKFxuICAgICAgKGVudHJ5OiBXYWxrRW50cnkpOiBib29sZWFuID0+IGVudHJ5LmlzRGlyZWN0b3J5LFxuICAgICk7XG4gIH1cbiAgaWYgKCFpbmNsdWRlRGlycykge1xuICAgIGN1cnJlbnRNYXRjaGVzID0gY3VycmVudE1hdGNoZXMuZmlsdGVyKFxuICAgICAgKGVudHJ5OiBXYWxrRW50cnkpOiBib29sZWFuID0+ICFlbnRyeS5pc0RpcmVjdG9yeSxcbiAgICApO1xuICB9XG4gIHlpZWxkKiBjdXJyZW50TWF0Y2hlcztcbn1cblxuLyoqXG4gKiBTeW5jaHJvbm91cyB2ZXJzaW9uIG9mIGBleHBhbmRHbG9iKClgLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZXhwYW5kR2xvYlN5bmMgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9mcy9leHBhbmRfZ2xvYi50c1wiO1xuICogZm9yIChjb25zdCBmaWxlIG9mIGV4cGFuZEdsb2JTeW5jKFwiKipcXC8qLnRzXCIpKSB7XG4gKiAgIGNvbnNvbGUubG9nKGZpbGUpO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiogZXhwYW5kR2xvYlN5bmMoXG4gIGdsb2I6IHN0cmluZyB8IFVSTCxcbiAge1xuICAgIHJvb3QsXG4gICAgZXhjbHVkZSA9IFtdLFxuICAgIGluY2x1ZGVEaXJzID0gdHJ1ZSxcbiAgICBleHRlbmRlZCA9IHRydWUsXG4gICAgZ2xvYnN0YXIgPSB0cnVlLFxuICAgIGNhc2VJbnNlbnNpdGl2ZSxcbiAgICBmb2xsb3dTeW1saW5rcyxcbiAgICBjYW5vbmljYWxpemUsXG4gIH06IEV4cGFuZEdsb2JPcHRpb25zID0ge30sXG4pOiBJdGVyYWJsZUl0ZXJhdG9yPFdhbGtFbnRyeT4ge1xuICBjb25zdCB7XG4gICAgc2VnbWVudHMsXG4gICAgaXNBYnNvbHV0ZTogaXNHbG9iQWJzb2x1dGUsXG4gICAgaGFzVHJhaWxpbmdTZXAsXG4gICAgd2luUm9vdCxcbiAgfSA9IHNwbGl0KHRvUGF0aFN0cmluZyhnbG9iKSk7XG4gIHJvb3QgPz89IGlzR2xvYkFic29sdXRlID8gd2luUm9vdCA/PyBcIi9cIiA6IERlbm8uY3dkKCk7XG5cbiAgY29uc3QgZ2xvYk9wdGlvbnM6IEdsb2JPcHRpb25zID0geyBleHRlbmRlZCwgZ2xvYnN0YXIsIGNhc2VJbnNlbnNpdGl2ZSB9O1xuICBjb25zdCBhYnNSb290ID0gaXNHbG9iQWJzb2x1dGUgPyByb290IDogcmVzb2x2ZShyb290ISk7IC8vIHJvb3QgaXMgYWx3YXlzIHN0cmluZyBoZXJlXG4gIGNvbnN0IHJlc29sdmVGcm9tUm9vdCA9IChwYXRoOiBzdHJpbmcpOiBzdHJpbmcgPT4gcmVzb2x2ZShhYnNSb290LCBwYXRoKTtcbiAgY29uc3QgZXhjbHVkZVBhdHRlcm5zID0gZXhjbHVkZVxuICAgIC5tYXAocmVzb2x2ZUZyb21Sb290KVxuICAgIC5tYXAoKHM6IHN0cmluZyk6IFJlZ0V4cCA9PiBnbG9iVG9SZWdFeHAocywgZ2xvYk9wdGlvbnMpKTtcbiAgY29uc3Qgc2hvdWxkSW5jbHVkZSA9IChwYXRoOiBzdHJpbmcpOiBib29sZWFuID0+XG4gICAgIWV4Y2x1ZGVQYXR0ZXJucy5zb21lKChwOiBSZWdFeHApOiBib29sZWFuID0+ICEhcGF0aC5tYXRjaChwKSk7XG5cbiAgbGV0IGZpeGVkUm9vdCA9IGlzR2xvYkFic29sdXRlXG4gICAgPyB3aW5Sb290ICE9PSB1bmRlZmluZWQgPyB3aW5Sb290IDogXCIvXCJcbiAgICA6IGFic1Jvb3Q7XG4gIHdoaWxlIChzZWdtZW50cy5sZW5ndGggPiAwICYmICFpc0dsb2Ioc2VnbWVudHNbMF0pKSB7XG4gICAgY29uc3Qgc2VnID0gc2VnbWVudHMuc2hpZnQoKTtcbiAgICBhc3NlcnQoc2VnICE9PSB1bmRlZmluZWQpO1xuICAgIGZpeGVkUm9vdCA9IGpvaW5HbG9icyhbZml4ZWRSb290LCBzZWddLCBnbG9iT3B0aW9ucyk7XG4gIH1cblxuICBsZXQgZml4ZWRSb290SW5mbzogV2Fsa0VudHJ5O1xuICB0cnkge1xuICAgIGZpeGVkUm9vdEluZm8gPSBjcmVhdGVXYWxrRW50cnlTeW5jKGZpeGVkUm9vdCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRocm93VW5sZXNzTm90Rm91bmQoZXJyb3IpO1xuICB9XG5cbiAgZnVuY3Rpb24qIGFkdmFuY2VNYXRjaChcbiAgICB3YWxrSW5mbzogV2Fsa0VudHJ5LFxuICAgIGdsb2JTZWdtZW50OiBzdHJpbmcsXG4gICk6IEl0ZXJhYmxlSXRlcmF0b3I8V2Fsa0VudHJ5PiB7XG4gICAgaWYgKCF3YWxrSW5mby5pc0RpcmVjdG9yeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoZ2xvYlNlZ21lbnQgPT09IFwiLi5cIikge1xuICAgICAgY29uc3QgcGFyZW50UGF0aCA9IGpvaW5HbG9icyhbd2Fsa0luZm8ucGF0aCwgXCIuLlwiXSwgZ2xvYk9wdGlvbnMpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHNob3VsZEluY2x1ZGUocGFyZW50UGF0aCkpIHtcbiAgICAgICAgICByZXR1cm4geWllbGQgY3JlYXRlV2Fsa0VudHJ5U3luYyhwYXJlbnRQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3dVbmxlc3NOb3RGb3VuZChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChnbG9iU2VnbWVudCA9PT0gXCIqKlwiKSB7XG4gICAgICByZXR1cm4geWllbGQqIHdhbGtTeW5jKHdhbGtJbmZvLnBhdGgsIHtcbiAgICAgICAgc2tpcDogZXhjbHVkZVBhdHRlcm5zLFxuICAgICAgICBtYXhEZXB0aDogZ2xvYnN0YXIgPyBJbmZpbml0eSA6IDEsXG4gICAgICAgIGZvbGxvd1N5bWxpbmtzLFxuICAgICAgICBjYW5vbmljYWxpemUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZ2xvYlBhdHRlcm4gPSBnbG9iVG9SZWdFeHAoZ2xvYlNlZ21lbnQsIGdsb2JPcHRpb25zKTtcbiAgICBmb3IgKFxuICAgICAgY29uc3Qgd2Fsa0VudHJ5IG9mIHdhbGtTeW5jKHdhbGtJbmZvLnBhdGgsIHtcbiAgICAgICAgbWF4RGVwdGg6IDEsXG4gICAgICAgIHNraXA6IGV4Y2x1ZGVQYXR0ZXJucyxcbiAgICAgICAgZm9sbG93U3ltbGlua3MsXG4gICAgICB9KVxuICAgICkge1xuICAgICAgaWYgKFxuICAgICAgICB3YWxrRW50cnkucGF0aCAhPT0gd2Fsa0luZm8ucGF0aCAmJlxuICAgICAgICB3YWxrRW50cnkubmFtZS5tYXRjaChnbG9iUGF0dGVybilcbiAgICAgICkge1xuICAgICAgICB5aWVsZCB3YWxrRW50cnk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IGN1cnJlbnRNYXRjaGVzOiBXYWxrRW50cnlbXSA9IFtmaXhlZFJvb3RJbmZvXTtcbiAgZm9yIChjb25zdCBzZWdtZW50IG9mIHNlZ21lbnRzKSB7XG4gICAgLy8gQWR2YW5jaW5nIHRoZSBsaXN0IG9mIGN1cnJlbnQgbWF0Y2hlcyBtYXkgaW50cm9kdWNlIGR1cGxpY2F0ZXMsIHNvIHdlXG4gICAgLy8gcGFzcyBldmVyeXRoaW5nIHRocm91Z2ggdGhpcyBNYXAuXG4gICAgY29uc3QgbmV4dE1hdGNoTWFwOiBNYXA8c3RyaW5nLCBXYWxrRW50cnk+ID0gbmV3IE1hcCgpO1xuICAgIGZvciAoY29uc3QgY3VycmVudE1hdGNoIG9mIGN1cnJlbnRNYXRjaGVzKSB7XG4gICAgICBmb3IgKGNvbnN0IG5leHRNYXRjaCBvZiBhZHZhbmNlTWF0Y2goY3VycmVudE1hdGNoLCBzZWdtZW50KSkge1xuICAgICAgICBuZXh0TWF0Y2hNYXAuc2V0KG5leHRNYXRjaC5wYXRoLCBuZXh0TWF0Y2gpO1xuICAgICAgfVxuICAgIH1cbiAgICBjdXJyZW50TWF0Y2hlcyA9IFsuLi5uZXh0TWF0Y2hNYXAudmFsdWVzKCldLnNvcnQoY29tcGFyZVBhdGgpO1xuICB9XG5cbiAgaWYgKGhhc1RyYWlsaW5nU2VwKSB7XG4gICAgY3VycmVudE1hdGNoZXMgPSBjdXJyZW50TWF0Y2hlcy5maWx0ZXIoXG4gICAgICAoZW50cnk6IFdhbGtFbnRyeSk6IGJvb2xlYW4gPT4gZW50cnkuaXNEaXJlY3RvcnksXG4gICAgKTtcbiAgfVxuICBpZiAoIWluY2x1ZGVEaXJzKSB7XG4gICAgY3VycmVudE1hdGNoZXMgPSBjdXJyZW50TWF0Y2hlcy5maWx0ZXIoXG4gICAgICAoZW50cnk6IFdhbGtFbnRyeSk6IGJvb2xlYW4gPT4gIWVudHJ5LmlzRGlyZWN0b3J5LFxuICAgICk7XG4gIH1cbiAgeWllbGQqIGN1cnJlbnRNYXRjaGVzO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG5pbXBvcnQgeyBpc1N1YmRpciB9IGZyb20gXCIuL19pc19zdWJkaXIudHNcIjtcbmltcG9ydCB7IGlzU2FtZVBhdGggfSBmcm9tIFwiLi9faXNfc2FtZV9wYXRoLnRzXCI7XG5cbmNvbnN0IEVYSVNUU19FUlJPUiA9IG5ldyBEZW5vLmVycm9ycy5BbHJlYWR5RXhpc3RzKFwiZGVzdCBhbHJlYWR5IGV4aXN0cy5cIik7XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIGluIHtAbGlua2NvZGUgbW92ZX0gb3Ige0BsaW5rY29kZSBtb3ZlU3luY30gd2hlbiB0aGVcbiAqIGRlc3RpbmF0aW9uIGlzIGEgc3ViZGlyZWN0b3J5IG9mIHRoZSBzb3VyY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdWJkaXJlY3RvcnlNb3ZlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIC8qKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlLiAqL1xuICBjb25zdHJ1Y3RvcihzcmM6IHN0cmluZyB8IFVSTCwgZGVzdDogc3RyaW5nIHwgVVJMKSB7XG4gICAgc3VwZXIoXG4gICAgICBgQ2Fubm90IG1vdmUgJyR7c3JjfScgdG8gYSBzdWJkaXJlY3Rvcnkgb2YgaXRzZWxmLCAnJHtkZXN0fScuYCxcbiAgICApO1xuICB9XG59XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIG1vdmV9IGFuZCB7QGxpbmtjb2RlIG1vdmVTeW5jfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW92ZU9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgZGVzdGluYXRpb24gZmlsZSBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gaWYgaXQgYWxyZWFkeSBleGlzdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtmYWxzZX1cbiAgICovXG4gIG92ZXJ3cml0ZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogTW92ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IG1vdmUgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9mcy9tb2QudHNcIjtcbiAqXG4gKiBtb3ZlKFwiLi9mb29cIiwgXCIuL2JhclwiKTsgLy8gcmV0dXJucyBhIHByb21pc2VcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbW92ZShcbiAgc3JjOiBzdHJpbmcgfCBVUkwsXG4gIGRlc3Q6IHN0cmluZyB8IFVSTCxcbiAgeyBvdmVyd3JpdGUgPSBmYWxzZSB9OiBNb3ZlT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHNyY1N0YXQgPSBhd2FpdCBEZW5vLnN0YXQoc3JjKTtcblxuICBpZiAoXG4gICAgc3JjU3RhdC5pc0RpcmVjdG9yeSAmJlxuICAgIChpc1N1YmRpcihzcmMsIGRlc3QpIHx8IGlzU2FtZVBhdGgoc3JjLCBkZXN0KSlcbiAgKSB7XG4gICAgdGhyb3cgbmV3IFN1YmRpcmVjdG9yeU1vdmVFcnJvcihzcmMsIGRlc3QpO1xuICB9XG5cbiAgaWYgKG92ZXJ3cml0ZSkge1xuICAgIGlmIChpc1NhbWVQYXRoKHNyYywgZGVzdCkpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgRGVuby5yZW1vdmUoZGVzdCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgRGVuby5lcnJvcnMuTm90Rm91bmQpKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgRGVuby5sc3RhdChkZXN0KTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChFWElTVFNfRVJST1IpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gRG8gbm90aGluZy4uLlxuICAgIH1cbiAgfVxuXG4gIGF3YWl0IERlbm8ucmVuYW1lKHNyYywgZGVzdCk7XG59XG5cbi8qKlxuICogTW92ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSBzeW5jaHJvbm91c2x5LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbW92ZVN5bmMgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9mcy9tb2QudHNcIjtcbiAqXG4gKiBtb3ZlU3luYyhcIi4vZm9vXCIsIFwiLi9iYXJcIik7IC8vIHZvaWRcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbW92ZVN5bmMoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIHsgb3ZlcndyaXRlID0gZmFsc2UgfTogTW92ZU9wdGlvbnMgPSB7fSxcbik6IHZvaWQge1xuICBjb25zdCBzcmNTdGF0ID0gRGVuby5zdGF0U3luYyhzcmMpO1xuXG4gIGlmIChcbiAgICBzcmNTdGF0LmlzRGlyZWN0b3J5ICYmXG4gICAgKGlzU3ViZGlyKHNyYywgZGVzdCkgfHwgaXNTYW1lUGF0aChzcmMsIGRlc3QpKVxuICApIHtcbiAgICB0aHJvdyBuZXcgU3ViZGlyZWN0b3J5TW92ZUVycm9yKHNyYywgZGVzdCk7XG4gIH1cblxuICBpZiAob3ZlcndyaXRlKSB7XG4gICAgaWYgKGlzU2FtZVBhdGgoc3JjLCBkZXN0KSkgcmV0dXJuO1xuICAgIHRyeSB7XG4gICAgICBEZW5vLnJlbW92ZVN5bmMoZGVzdCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgRGVuby5lcnJvcnMuTm90Rm91bmQpKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgRGVuby5sc3RhdFN5bmMoZGVzdCk7XG4gICAgICB0aHJvdyBFWElTVFNfRVJST1I7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciA9PT0gRVhJU1RTX0VSUk9SKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIERlbm8ucmVuYW1lU3luYyhzcmMsIGRlc3QpO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG5cbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSBcIi4uL3BhdGgvYmFzZW5hbWUudHNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwiLi4vcGF0aC9qb2luLnRzXCI7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcIi4uL3BhdGgvcmVzb2x2ZS50c1wiO1xuaW1wb3J0IHsgZW5zdXJlRGlyLCBlbnN1cmVEaXJTeW5jIH0gZnJvbSBcIi4vZW5zdXJlX2Rpci50c1wiO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4uL2Fzc2VydC9hc3NlcnQudHNcIjtcbmltcG9ydCB7IGdldEZpbGVJbmZvVHlwZSB9IGZyb20gXCIuL19nZXRfZmlsZV9pbmZvX3R5cGUudHNcIjtcbmltcG9ydCB7IHRvUGF0aFN0cmluZyB9IGZyb20gXCIuL190b19wYXRoX3N0cmluZy50c1wiO1xuaW1wb3J0IHsgaXNTdWJkaXIgfSBmcm9tIFwiLi9faXNfc3ViZGlyLnRzXCI7XG5cbmNvbnN0IGlzV2luZG93cyA9IERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiO1xuXG4vKiogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBjb3B5fSBhbmQge0BsaW5rY29kZSBjb3B5U3luY30uICovXG5leHBvcnQgaW50ZXJmYWNlIENvcHlPcHRpb25zIHtcbiAgLyoqXG4gICAqIG92ZXJ3cml0ZSBleGlzdGluZyBmaWxlIG9yIGRpcmVjdG9yeS5cbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgb3ZlcndyaXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCB3aWxsIHNldCBsYXN0IG1vZGlmaWNhdGlvbiBhbmQgYWNjZXNzIHRpbWVzIHRvIHRoZSBvbmVzIG9mIHRoZVxuICAgKiBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gICAqIFdoZW4gYGZhbHNlYCwgdGltZXN0YW1wIGJlaGF2aW9yIGlzIE9TLWRlcGVuZGVudC5cbiAgICpcbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgcHJlc2VydmVUaW1lc3RhbXBzPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEludGVybmFsQ29weU9wdGlvbnMgZXh0ZW5kcyBDb3B5T3B0aW9ucyB7XG4gIC8qKiBAZGVmYXVsdCB7ZmFsc2V9ICovXG4gIGlzRm9sZGVyPzogYm9vbGVhbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZW5zdXJlVmFsaWRDb3B5KFxuICBzcmM6IHN0cmluZyB8IFVSTCxcbiAgZGVzdDogc3RyaW5nIHwgVVJMLFxuICBvcHRpb25zOiBJbnRlcm5hbENvcHlPcHRpb25zLFxuKTogUHJvbWlzZTxEZW5vLkZpbGVJbmZvIHwgdW5kZWZpbmVkPiB7XG4gIGxldCBkZXN0U3RhdDogRGVuby5GaWxlSW5mbztcblxuICB0cnkge1xuICAgIGRlc3RTdGF0ID0gYXdhaXQgRGVuby5sc3RhdChkZXN0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLk5vdEZvdW5kKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IGVycjtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmlzRm9sZGVyICYmICFkZXN0U3RhdC5pc0RpcmVjdG9yeSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3Qgb3ZlcndyaXRlIG5vbi1kaXJlY3RvcnkgJyR7ZGVzdH0nIHdpdGggZGlyZWN0b3J5ICcke3NyY30nLmAsXG4gICAgKTtcbiAgfVxuICBpZiAoIW9wdGlvbnMub3ZlcndyaXRlKSB7XG4gICAgdGhyb3cgbmV3IERlbm8uZXJyb3JzLkFscmVhZHlFeGlzdHMoYCcke2Rlc3R9JyBhbHJlYWR5IGV4aXN0cy5gKTtcbiAgfVxuXG4gIHJldHVybiBkZXN0U3RhdDtcbn1cblxuZnVuY3Rpb24gZW5zdXJlVmFsaWRDb3B5U3luYyhcbiAgc3JjOiBzdHJpbmcgfCBVUkwsXG4gIGRlc3Q6IHN0cmluZyB8IFVSTCxcbiAgb3B0aW9uczogSW50ZXJuYWxDb3B5T3B0aW9ucyxcbik6IERlbm8uRmlsZUluZm8gfCB1bmRlZmluZWQge1xuICBsZXQgZGVzdFN0YXQ6IERlbm8uRmlsZUluZm87XG4gIHRyeSB7XG4gICAgZGVzdFN0YXQgPSBEZW5vLmxzdGF0U3luYyhkZXN0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLk5vdEZvdW5kKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IGVycjtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmlzRm9sZGVyICYmICFkZXN0U3RhdC5pc0RpcmVjdG9yeSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3Qgb3ZlcndyaXRlIG5vbi1kaXJlY3RvcnkgJyR7ZGVzdH0nIHdpdGggZGlyZWN0b3J5ICcke3NyY30nLmAsXG4gICAgKTtcbiAgfVxuICBpZiAoIW9wdGlvbnMub3ZlcndyaXRlKSB7XG4gICAgdGhyb3cgbmV3IERlbm8uZXJyb3JzLkFscmVhZHlFeGlzdHMoYCcke2Rlc3R9JyBhbHJlYWR5IGV4aXN0cy5gKTtcbiAgfVxuXG4gIHJldHVybiBkZXN0U3RhdDtcbn1cblxuLyogY29weSBmaWxlIHRvIGRlc3QgKi9cbmFzeW5jIGZ1bmN0aW9uIGNvcHlGaWxlKFxuICBzcmM6IHN0cmluZyB8IFVSTCxcbiAgZGVzdDogc3RyaW5nIHwgVVJMLFxuICBvcHRpb25zOiBJbnRlcm5hbENvcHlPcHRpb25zLFxuKSB7XG4gIGF3YWl0IGVuc3VyZVZhbGlkQ29weShzcmMsIGRlc3QsIG9wdGlvbnMpO1xuICBhd2FpdCBEZW5vLmNvcHlGaWxlKHNyYywgZGVzdCk7XG4gIGlmIChvcHRpb25zLnByZXNlcnZlVGltZXN0YW1wcykge1xuICAgIGNvbnN0IHN0YXRJbmZvID0gYXdhaXQgRGVuby5zdGF0KHNyYyk7XG4gICAgYXNzZXJ0KHN0YXRJbmZvLmF0aW1lIGluc3RhbmNlb2YgRGF0ZSwgYHN0YXRJbmZvLmF0aW1lIGlzIHVuYXZhaWxhYmxlYCk7XG4gICAgYXNzZXJ0KHN0YXRJbmZvLm10aW1lIGluc3RhbmNlb2YgRGF0ZSwgYHN0YXRJbmZvLm10aW1lIGlzIHVuYXZhaWxhYmxlYCk7XG4gICAgYXdhaXQgRGVuby51dGltZShkZXN0LCBzdGF0SW5mby5hdGltZSwgc3RhdEluZm8ubXRpbWUpO1xuICB9XG59XG4vKiBjb3B5IGZpbGUgdG8gZGVzdCBzeW5jaHJvbm91c2x5ICovXG5mdW5jdGlvbiBjb3B5RmlsZVN5bmMoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM6IEludGVybmFsQ29weU9wdGlvbnMsXG4pIHtcbiAgZW5zdXJlVmFsaWRDb3B5U3luYyhzcmMsIGRlc3QsIG9wdGlvbnMpO1xuICBEZW5vLmNvcHlGaWxlU3luYyhzcmMsIGRlc3QpO1xuICBpZiAob3B0aW9ucy5wcmVzZXJ2ZVRpbWVzdGFtcHMpIHtcbiAgICBjb25zdCBzdGF0SW5mbyA9IERlbm8uc3RhdFN5bmMoc3JjKTtcbiAgICBhc3NlcnQoc3RhdEluZm8uYXRpbWUgaW5zdGFuY2VvZiBEYXRlLCBgc3RhdEluZm8uYXRpbWUgaXMgdW5hdmFpbGFibGVgKTtcbiAgICBhc3NlcnQoc3RhdEluZm8ubXRpbWUgaW5zdGFuY2VvZiBEYXRlLCBgc3RhdEluZm8ubXRpbWUgaXMgdW5hdmFpbGFibGVgKTtcbiAgICBEZW5vLnV0aW1lU3luYyhkZXN0LCBzdGF0SW5mby5hdGltZSwgc3RhdEluZm8ubXRpbWUpO1xuICB9XG59XG5cbi8qIGNvcHkgc3ltbGluayB0byBkZXN0ICovXG5hc3luYyBmdW5jdGlvbiBjb3B5U3ltTGluayhcbiAgc3JjOiBzdHJpbmcgfCBVUkwsXG4gIGRlc3Q6IHN0cmluZyB8IFVSTCxcbiAgb3B0aW9uczogSW50ZXJuYWxDb3B5T3B0aW9ucyxcbikge1xuICBhd2FpdCBlbnN1cmVWYWxpZENvcHkoc3JjLCBkZXN0LCBvcHRpb25zKTtcbiAgY29uc3Qgb3JpZ2luU3JjRmlsZVBhdGggPSBhd2FpdCBEZW5vLnJlYWRMaW5rKHNyYyk7XG4gIGNvbnN0IHR5cGUgPSBnZXRGaWxlSW5mb1R5cGUoYXdhaXQgRGVuby5sc3RhdChzcmMpKTtcbiAgaWYgKGlzV2luZG93cykge1xuICAgIGF3YWl0IERlbm8uc3ltbGluayhvcmlnaW5TcmNGaWxlUGF0aCwgZGVzdCwge1xuICAgICAgdHlwZTogdHlwZSA9PT0gXCJkaXJcIiA/IFwiZGlyXCIgOiBcImZpbGVcIixcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBEZW5vLnN5bWxpbmsob3JpZ2luU3JjRmlsZVBhdGgsIGRlc3QpO1xuICB9XG4gIGlmIChvcHRpb25zLnByZXNlcnZlVGltZXN0YW1wcykge1xuICAgIGNvbnN0IHN0YXRJbmZvID0gYXdhaXQgRGVuby5sc3RhdChzcmMpO1xuICAgIGFzc2VydChzdGF0SW5mby5hdGltZSBpbnN0YW5jZW9mIERhdGUsIGBzdGF0SW5mby5hdGltZSBpcyB1bmF2YWlsYWJsZWApO1xuICAgIGFzc2VydChzdGF0SW5mby5tdGltZSBpbnN0YW5jZW9mIERhdGUsIGBzdGF0SW5mby5tdGltZSBpcyB1bmF2YWlsYWJsZWApO1xuICAgIGF3YWl0IERlbm8udXRpbWUoZGVzdCwgc3RhdEluZm8uYXRpbWUsIHN0YXRJbmZvLm10aW1lKTtcbiAgfVxufVxuXG4vKiBjb3B5IHN5bWxpbmsgdG8gZGVzdCBzeW5jaHJvbm91c2x5ICovXG5mdW5jdGlvbiBjb3B5U3ltbGlua1N5bmMoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM6IEludGVybmFsQ29weU9wdGlvbnMsXG4pIHtcbiAgZW5zdXJlVmFsaWRDb3B5U3luYyhzcmMsIGRlc3QsIG9wdGlvbnMpO1xuICBjb25zdCBvcmlnaW5TcmNGaWxlUGF0aCA9IERlbm8ucmVhZExpbmtTeW5jKHNyYyk7XG4gIGNvbnN0IHR5cGUgPSBnZXRGaWxlSW5mb1R5cGUoRGVuby5sc3RhdFN5bmMoc3JjKSk7XG4gIGlmIChpc1dpbmRvd3MpIHtcbiAgICBEZW5vLnN5bWxpbmtTeW5jKG9yaWdpblNyY0ZpbGVQYXRoLCBkZXN0LCB7XG4gICAgICB0eXBlOiB0eXBlID09PSBcImRpclwiID8gXCJkaXJcIiA6IFwiZmlsZVwiLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIERlbm8uc3ltbGlua1N5bmMob3JpZ2luU3JjRmlsZVBhdGgsIGRlc3QpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMucHJlc2VydmVUaW1lc3RhbXBzKSB7XG4gICAgY29uc3Qgc3RhdEluZm8gPSBEZW5vLmxzdGF0U3luYyhzcmMpO1xuICAgIGFzc2VydChzdGF0SW5mby5hdGltZSBpbnN0YW5jZW9mIERhdGUsIGBzdGF0SW5mby5hdGltZSBpcyB1bmF2YWlsYWJsZWApO1xuICAgIGFzc2VydChzdGF0SW5mby5tdGltZSBpbnN0YW5jZW9mIERhdGUsIGBzdGF0SW5mby5tdGltZSBpcyB1bmF2YWlsYWJsZWApO1xuICAgIERlbm8udXRpbWVTeW5jKGRlc3QsIHN0YXRJbmZvLmF0aW1lLCBzdGF0SW5mby5tdGltZSk7XG4gIH1cbn1cblxuLyogY29weSBmb2xkZXIgZnJvbSBzcmMgdG8gZGVzdC4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNvcHlEaXIoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM6IENvcHlPcHRpb25zLFxuKSB7XG4gIGNvbnN0IGRlc3RTdGF0ID0gYXdhaXQgZW5zdXJlVmFsaWRDb3B5KHNyYywgZGVzdCwge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgaXNGb2xkZXI6IHRydWUsXG4gIH0pO1xuXG4gIGlmICghZGVzdFN0YXQpIHtcbiAgICBhd2FpdCBlbnN1cmVEaXIoZGVzdCk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5wcmVzZXJ2ZVRpbWVzdGFtcHMpIHtcbiAgICBjb25zdCBzcmNTdGF0SW5mbyA9IGF3YWl0IERlbm8uc3RhdChzcmMpO1xuICAgIGFzc2VydChzcmNTdGF0SW5mby5hdGltZSBpbnN0YW5jZW9mIERhdGUsIGBzdGF0SW5mby5hdGltZSBpcyB1bmF2YWlsYWJsZWApO1xuICAgIGFzc2VydChzcmNTdGF0SW5mby5tdGltZSBpbnN0YW5jZW9mIERhdGUsIGBzdGF0SW5mby5tdGltZSBpcyB1bmF2YWlsYWJsZWApO1xuICAgIGF3YWl0IERlbm8udXRpbWUoZGVzdCwgc3JjU3RhdEluZm8uYXRpbWUsIHNyY1N0YXRJbmZvLm10aW1lKTtcbiAgfVxuXG4gIHNyYyA9IHRvUGF0aFN0cmluZyhzcmMpO1xuICBkZXN0ID0gdG9QYXRoU3RyaW5nKGRlc3QpO1xuXG4gIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgZm9yIGF3YWl0IChjb25zdCBlbnRyeSBvZiBEZW5vLnJlYWREaXIoc3JjKSkge1xuICAgIGNvbnN0IHNyY1BhdGggPSBqb2luKHNyYywgZW50cnkubmFtZSk7XG4gICAgY29uc3QgZGVzdFBhdGggPSBqb2luKGRlc3QsIGJhc2VuYW1lKHNyY1BhdGggYXMgc3RyaW5nKSk7XG4gICAgaWYgKGVudHJ5LmlzU3ltbGluaykge1xuICAgICAgcHJvbWlzZXMucHVzaChjb3B5U3ltTGluayhzcmNQYXRoLCBkZXN0UGF0aCwgb3B0aW9ucykpO1xuICAgIH0gZWxzZSBpZiAoZW50cnkuaXNEaXJlY3RvcnkpIHtcbiAgICAgIHByb21pc2VzLnB1c2goY29weURpcihzcmNQYXRoLCBkZXN0UGF0aCwgb3B0aW9ucykpO1xuICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKSB7XG4gICAgICBwcm9taXNlcy5wdXNoKGNvcHlGaWxlKHNyY1BhdGgsIGRlc3RQYXRoLCBvcHRpb25zKSk7XG4gICAgfVxuICB9XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufVxuXG4vKiBjb3B5IGZvbGRlciBmcm9tIHNyYyB0byBkZXN0IHN5bmNocm9ub3VzbHkgKi9cbmZ1bmN0aW9uIGNvcHlEaXJTeW5jKFxuICBzcmM6IHN0cmluZyB8IFVSTCxcbiAgZGVzdDogc3RyaW5nIHwgVVJMLFxuICBvcHRpb25zOiBDb3B5T3B0aW9ucyxcbikge1xuICBjb25zdCBkZXN0U3RhdCA9IGVuc3VyZVZhbGlkQ29weVN5bmMoc3JjLCBkZXN0LCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBpc0ZvbGRlcjogdHJ1ZSxcbiAgfSk7XG5cbiAgaWYgKCFkZXN0U3RhdCkge1xuICAgIGVuc3VyZURpclN5bmMoZGVzdCk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5wcmVzZXJ2ZVRpbWVzdGFtcHMpIHtcbiAgICBjb25zdCBzcmNTdGF0SW5mbyA9IERlbm8uc3RhdFN5bmMoc3JjKTtcbiAgICBhc3NlcnQoc3JjU3RhdEluZm8uYXRpbWUgaW5zdGFuY2VvZiBEYXRlLCBgc3RhdEluZm8uYXRpbWUgaXMgdW5hdmFpbGFibGVgKTtcbiAgICBhc3NlcnQoc3JjU3RhdEluZm8ubXRpbWUgaW5zdGFuY2VvZiBEYXRlLCBgc3RhdEluZm8ubXRpbWUgaXMgdW5hdmFpbGFibGVgKTtcbiAgICBEZW5vLnV0aW1lU3luYyhkZXN0LCBzcmNTdGF0SW5mby5hdGltZSwgc3JjU3RhdEluZm8ubXRpbWUpO1xuICB9XG5cbiAgc3JjID0gdG9QYXRoU3RyaW5nKHNyYyk7XG4gIGRlc3QgPSB0b1BhdGhTdHJpbmcoZGVzdCk7XG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBEZW5vLnJlYWREaXJTeW5jKHNyYykpIHtcbiAgICBjb25zdCBzcmNQYXRoID0gam9pbihzcmMsIGVudHJ5Lm5hbWUpO1xuICAgIGNvbnN0IGRlc3RQYXRoID0gam9pbihkZXN0LCBiYXNlbmFtZShzcmNQYXRoIGFzIHN0cmluZykpO1xuICAgIGlmIChlbnRyeS5pc1N5bWxpbmspIHtcbiAgICAgIGNvcHlTeW1saW5rU3luYyhzcmNQYXRoLCBkZXN0UGF0aCwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmIChlbnRyeS5pc0RpcmVjdG9yeSkge1xuICAgICAgY29weURpclN5bmMoc3JjUGF0aCwgZGVzdFBhdGgsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKSB7XG4gICAgICBjb3B5RmlsZVN5bmMoc3JjUGF0aCwgZGVzdFBhdGgsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENvcHkgYSBmaWxlIG9yIGRpcmVjdG9yeS4gVGhlIGRpcmVjdG9yeSBjYW4gaGF2ZSBjb250ZW50cy4gTGlrZSBgY3AgLXJgLlxuICogUmVxdWlyZXMgdGhlIGAtLWFsbG93LXJlYWRgIGFuZCBgLS1hbGxvdy13cml0ZWAgZmxhZy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGNvcHkgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9mcy9jb3B5LnRzXCI7XG4gKiBjb3B5KFwiLi9mb29cIiwgXCIuL2JhclwiKTsgLy8gcmV0dXJucyBhIHByb21pc2VcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzcmMgdGhlIGZpbGUvZGlyZWN0b3J5IHBhdGguXG4gKiAgICAgICAgICAgIE5vdGUgdGhhdCBpZiBgc3JjYCBpcyBhIGRpcmVjdG9yeSBpdCB3aWxsIGNvcHkgZXZlcnl0aGluZyBpbnNpZGVcbiAqICAgICAgICAgICAgb2YgdGhpcyBkaXJlY3RvcnksIG5vdCB0aGUgZW50aXJlIGRpcmVjdG9yeSBpdHNlbGZcbiAqIEBwYXJhbSBkZXN0IHRoZSBkZXN0aW5hdGlvbiBwYXRoLiBOb3RlIHRoYXQgaWYgYHNyY2AgaXMgYSBmaWxlLCBgZGVzdGAgY2Fubm90XG4gKiAgICAgICAgICAgICBiZSBhIGRpcmVjdG9yeVxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvcHkoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM6IENvcHlPcHRpb25zID0ge30sXG4pIHtcbiAgc3JjID0gcmVzb2x2ZSh0b1BhdGhTdHJpbmcoc3JjKSk7XG4gIGRlc3QgPSByZXNvbHZlKHRvUGF0aFN0cmluZyhkZXN0KSk7XG5cbiAgaWYgKHNyYyA9PT0gZGVzdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNvdXJjZSBhbmQgZGVzdGluYXRpb24gY2Fubm90IGJlIHRoZSBzYW1lLlwiKTtcbiAgfVxuXG4gIGNvbnN0IHNyY1N0YXQgPSBhd2FpdCBEZW5vLmxzdGF0KHNyYyk7XG5cbiAgaWYgKHNyY1N0YXQuaXNEaXJlY3RvcnkgJiYgaXNTdWJkaXIoc3JjLCBkZXN0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3QgY29weSAnJHtzcmN9JyB0byBhIHN1YmRpcmVjdG9yeSBvZiBpdHNlbGYsICcke2Rlc3R9Jy5gLFxuICAgICk7XG4gIH1cblxuICBpZiAoc3JjU3RhdC5pc1N5bWxpbmspIHtcbiAgICBhd2FpdCBjb3B5U3ltTGluayhzcmMsIGRlc3QsIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKHNyY1N0YXQuaXNEaXJlY3RvcnkpIHtcbiAgICBhd2FpdCBjb3B5RGlyKHNyYywgZGVzdCwgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoc3JjU3RhdC5pc0ZpbGUpIHtcbiAgICBhd2FpdCBjb3B5RmlsZShzcmMsIGRlc3QsIG9wdGlvbnMpO1xuICB9XG59XG5cbi8qKlxuICogQ29weSBhIGZpbGUgb3IgZGlyZWN0b3J5LiBUaGUgZGlyZWN0b3J5IGNhbiBoYXZlIGNvbnRlbnRzLiBMaWtlIGBjcCAtcmAuXG4gKiBSZXF1aXJlcyB0aGUgYC0tYWxsb3ctcmVhZGAgYW5kIGAtLWFsbG93LXdyaXRlYCBmbGFnLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgY29weVN5bmMgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9mcy9jb3B5LnRzXCI7XG4gKiBjb3B5U3luYyhcIi4vZm9vXCIsIFwiLi9iYXJcIik7IC8vIHZvaWRcbiAqIGBgYFxuICogQHBhcmFtIHNyYyB0aGUgZmlsZS9kaXJlY3RvcnkgcGF0aC5cbiAqICAgICAgICAgICAgTm90ZSB0aGF0IGlmIGBzcmNgIGlzIGEgZGlyZWN0b3J5IGl0IHdpbGwgY29weSBldmVyeXRoaW5nIGluc2lkZVxuICogICAgICAgICAgICBvZiB0aGlzIGRpcmVjdG9yeSwgbm90IHRoZSBlbnRpcmUgZGlyZWN0b3J5IGl0c2VsZlxuICogQHBhcmFtIGRlc3QgdGhlIGRlc3RpbmF0aW9uIHBhdGguIE5vdGUgdGhhdCBpZiBgc3JjYCBpcyBhIGZpbGUsIGBkZXN0YCBjYW5ub3RcbiAqICAgICAgICAgICAgIGJlIGEgZGlyZWN0b3J5XG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29weVN5bmMoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM6IENvcHlPcHRpb25zID0ge30sXG4pIHtcbiAgc3JjID0gcmVzb2x2ZSh0b1BhdGhTdHJpbmcoc3JjKSk7XG4gIGRlc3QgPSByZXNvbHZlKHRvUGF0aFN0cmluZyhkZXN0KSk7XG5cbiAgaWYgKHNyYyA9PT0gZGVzdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNvdXJjZSBhbmQgZGVzdGluYXRpb24gY2Fubm90IGJlIHRoZSBzYW1lLlwiKTtcbiAgfVxuXG4gIGNvbnN0IHNyY1N0YXQgPSBEZW5vLmxzdGF0U3luYyhzcmMpO1xuXG4gIGlmIChzcmNTdGF0LmlzRGlyZWN0b3J5ICYmIGlzU3ViZGlyKHNyYywgZGVzdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2Fubm90IGNvcHkgJyR7c3JjfScgdG8gYSBzdWJkaXJlY3Rvcnkgb2YgaXRzZWxmLCAnJHtkZXN0fScuYCxcbiAgICApO1xuICB9XG5cbiAgaWYgKHNyY1N0YXQuaXNTeW1saW5rKSB7XG4gICAgY29weVN5bWxpbmtTeW5jKHNyYywgZGVzdCwgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoc3JjU3RhdC5pc0RpcmVjdG9yeSkge1xuICAgIGNvcHlEaXJTeW5jKHNyYywgZGVzdCwgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoc3JjU3RhdC5pc0ZpbGUpIHtcbiAgICBjb3B5RmlsZVN5bmMoc3JjLCBkZXN0LCBvcHRpb25zKTtcbiAgfVxufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG5cbi8qKiBFbmQtb2YtbGluZSBjaGFyYWN0ZXIgZm9yIFBPU0lYIHBsYXRmb3JtcyBzdWNoIGFzIG1hY09TIGFuZCBMaW51eC4gKi9cbmV4cG9ydCBjb25zdCBMRiA9IFwiXFxuXCIgYXMgY29uc3Q7XG5cbi8qKiBFbmQtb2YtbGluZSBjaGFyYWN0ZXIgZm9yIFdpbmRvd3MgcGxhdGZvcm1zLiAqL1xuZXhwb3J0IGNvbnN0IENSTEYgPSBcIlxcclxcblwiIGFzIGNvbnN0O1xuXG4vKipcbiAqIEVuZC1vZi1saW5lIGNoYXJhY3RlciBldmFsdWF0ZWQgZm9yIHRoZSBjdXJyZW50IHBsYXRmb3JtLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgRU9MIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vZnMvZW9sLnRzXCI7XG4gKlxuICogRU9MOyAvLyBSZXR1cm5zIFwiXFxuXCIgb24gUE9TSVggcGxhdGZvcm1zIG9yIFwiXFxyXFxuXCIgb24gV2luZG93c1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBFT0w6IFwiXFxuXCIgfCBcIlxcclxcblwiID0gRGVubz8uYnVpbGQub3MgPT09IFwid2luZG93c1wiID8gQ1JMRiA6IExGO1xuXG5jb25zdCByZWdEZXRlY3QgPSAvKD86XFxyP1xcbikvZztcblxuLyoqXG4gKiBEZXRlY3QgdGhlIEVPTCBjaGFyYWN0ZXIgZm9yIHN0cmluZyBpbnB1dC5cbiAqIHJldHVybnMgbnVsbCBpZiBubyBuZXdsaW5lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZGV0ZWN0LCBFT0wgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9mcy9tb2QudHNcIjtcbiAqXG4gKiBjb25zdCBDUkxGaW5wdXQgPSBcImRlbm9cXHJcXG5pcyBub3RcXHJcXG5ub2RlXCI7XG4gKiBjb25zdCBNaXhlZGlucHV0ID0gXCJkZW5vXFxuaXMgbm90XFxyXFxubm9kZVwiO1xuICogY29uc3QgTEZpbnB1dCA9IFwiZGVub1xcbmlzIG5vdFxcbm5vZGVcIjtcbiAqIGNvbnN0IE5vTkxpbnB1dCA9IFwiZGVubyBpcyBub3Qgbm9kZVwiO1xuICpcbiAqIGRldGVjdChMRmlucHV0KTsgLy8gb3V0cHV0IEVPTC5MRlxuICogZGV0ZWN0KENSTEZpbnB1dCk7IC8vIG91dHB1dCBFT0wuQ1JMRlxuICogZGV0ZWN0KE1peGVkaW5wdXQpOyAvLyBvdXRwdXQgRU9MLkNSTEZcbiAqIGRldGVjdChOb05MaW5wdXQpOyAvLyBvdXRwdXQgbnVsbFxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3QoY29udGVudDogc3RyaW5nKTogdHlwZW9mIEVPTCB8IG51bGwge1xuICBjb25zdCBkID0gY29udGVudC5tYXRjaChyZWdEZXRlY3QpO1xuICBpZiAoIWQgfHwgZC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBoYXNDUkxGID0gZC5zb21lKCh4OiBzdHJpbmcpOiBib29sZWFuID0+IHggPT09IENSTEYpO1xuXG4gIHJldHVybiBoYXNDUkxGID8gQ1JMRiA6IExGO1xufVxuXG4vKipcbiAqIEZvcm1hdCB0aGUgZmlsZSB0byB0aGUgdGFyZ2V0ZWQgRU9MLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgTEYsIGZvcm1hdCB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL2ZzL21vZC50c1wiO1xuICpcbiAqIGNvbnN0IENSTEZpbnB1dCA9IFwiZGVub1xcclxcbmlzIG5vdFxcclxcbm5vZGVcIjtcbiAqXG4gKiBmb3JtYXQoQ1JMRmlucHV0LCBMRik7IC8vIG91dHB1dCBcImRlbm9cXG5pcyBub3RcXG5ub2RlXCJcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0KGNvbnRlbnQ6IHN0cmluZywgZW9sOiB0eXBlb2YgRU9MKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShyZWdEZXRlY3QsIGVvbCk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuZXhwb3J0ICogZnJvbSBcIi4vcGFyc2UudHNcIjtcbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIHtAbGlua2NvZGUgcGFyc2V9IGZ1bmN0aW9uIGZvciBwYXJzaW5nXG4gKiB7QGxpbmsgaHR0cHM6Ly9jb2RlLnZpc3VhbHN0dWRpby5jb20vZG9jcy9sYW5ndWFnZXMvanNvbiNfanNvbi13aXRoLWNvbW1lbnRzIHwgSlNPTkN9XG4gKiAoSlNPTiB3aXRoIENvbW1lbnRzKSBzdHJpbmdzLlxuICpcbiAqIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4uL2Fzc2VydC9hc3NlcnQudHNcIjtcblxuaW1wb3J0IHR5cGUgeyBKc29uVmFsdWUgfSBmcm9tIFwiLi4vanNvbi9jb21tb24udHNcIjtcbmV4cG9ydCB0eXBlIHsgSnNvblZhbHVlIH0gZnJvbSBcIi4uL2pzb24vY29tbW9uLnRzXCI7XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIHBhcnNlfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VPcHRpb25zIHtcbiAgLyoqIEFsbG93IHRyYWlsaW5nIGNvbW1hcyBhdCB0aGUgZW5kIG9mIGFycmF5cyBhbmQgb2JqZWN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQge3RydWV9XG4gICAqL1xuICBhbGxvd1RyYWlsaW5nQ29tbWE/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgSlNPTiB3aXRoIENvbW1lbnRzIChKU09OQykgc3RyaW5nIGludG8gYW4gb2JqZWN0LlxuICogSWYgYSBzeW50YXggZXJyb3IgaXMgZm91bmQsIHRocm93IGEge0BsaW5rY29kZSBTeW50YXhFcnJvcn0uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL2pzb25jL21vZC50c1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKHBhcnNlKCd7XCJmb29cIjogXCJiYXJcIiwgfSAvLyBjb21tZW50JykpOyAvLyB7IGZvbzogXCJiYXJcIiB9XG4gKiBjb25zb2xlLmxvZyhwYXJzZSgne1wiZm9vXCI6IFwiYmFyXCIsIH0gLyogY29tbWVudCAqXFwvJykpOyAvLyB7IGZvbzogXCJiYXJcIiB9XG4gKiBjb25zb2xlLmxvZyhwYXJzZSgne1wiZm9vXCI6IFwiYmFyXCIgfSAvLyBjb21tZW50Jywge1xuICogICBhbGxvd1RyYWlsaW5nQ29tbWE6IGZhbHNlLFxuICogfSkpOyAvLyB7IGZvbzogXCJiYXJcIiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gdGV4dCBBIHZhbGlkIEpTT05DIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKFxuICB0ZXh0OiBzdHJpbmcsXG4gIHsgYWxsb3dUcmFpbGluZ0NvbW1hID0gdHJ1ZSB9OiBQYXJzZU9wdGlvbnMgPSB7fSxcbik6IEpzb25WYWx1ZSB7XG4gIGlmIChuZXcudGFyZ2V0KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcInBhcnNlIGlzIG5vdCBhIGNvbnN0cnVjdG9yXCIpO1xuICB9XG4gIHJldHVybiBuZXcgSlNPTkNQYXJzZXIodGV4dCwgeyBhbGxvd1RyYWlsaW5nQ29tbWEgfSkucGFyc2UoKTtcbn1cblxudHlwZSBUb2tlblR5cGUgPVxuICB8IFwiQmVnaW5PYmplY3RcIlxuICB8IFwiRW5kT2JqZWN0XCJcbiAgfCBcIkJlZ2luQXJyYXlcIlxuICB8IFwiRW5kQXJyYXlcIlxuICB8IFwiTmFtZVNlcGFyYXRvclwiXG4gIHwgXCJWYWx1ZVNlcGFyYXRvclwiXG4gIHwgXCJOdWxsT3JUcnVlT3JGYWxzZU9yTnVtYmVyXCJcbiAgfCBcIlN0cmluZ1wiO1xuXG50eXBlIFRva2VuID0ge1xuICB0eXBlOiBFeGNsdWRlPFxuICAgIFRva2VuVHlwZSxcbiAgICBcIlN0cmluZ1wiIHwgXCJOdWxsT3JUcnVlT3JGYWxzZU9yTnVtYmVyXCJcbiAgPjtcbiAgc291cmNlVGV4dD86IHVuZGVmaW5lZDtcbiAgcG9zaXRpb246IG51bWJlcjtcbn0gfCB7XG4gIHR5cGU6IFwiU3RyaW5nXCI7XG4gIHNvdXJjZVRleHQ6IHN0cmluZztcbiAgcG9zaXRpb246IG51bWJlcjtcbn0gfCB7XG4gIHR5cGU6IFwiTnVsbE9yVHJ1ZU9yRmFsc2VPck51bWJlclwiO1xuICBzb3VyY2VUZXh0OiBzdHJpbmc7XG4gIHBvc2l0aW9uOiBudW1iZXI7XG59O1xuXG5jb25zdCBvcmlnaW5hbEpTT05QYXJzZSA9IGdsb2JhbFRoaXMuSlNPTi5wYXJzZTtcblxuLy8gRmlyc3QgdG9rZW5pemUgYW5kIHRoZW4gcGFyc2UgdGhlIHRva2VuLlxuY2xhc3MgSlNPTkNQYXJzZXIge1xuICByZWFkb25seSAjd2hpdGVzcGFjZSA9IG5ldyBTZXQoXCIgXFx0XFxyXFxuXCIpO1xuICByZWFkb25seSAjbnVtYmVyRW5kVG9rZW4gPSBuZXcgU2V0KFsuLi5cIltde306LC9cIiwgLi4udGhpcy4jd2hpdGVzcGFjZV0pO1xuICAjdGV4dDogc3RyaW5nO1xuICAjbGVuZ3RoOiBudW1iZXI7XG4gICN0b2tlbml6ZWQ6IEdlbmVyYXRvcjxUb2tlbiwgdm9pZD47XG4gICNvcHRpb25zOiBQYXJzZU9wdGlvbnM7XG4gIGNvbnN0cnVjdG9yKHRleHQ6IHN0cmluZywgb3B0aW9uczogUGFyc2VPcHRpb25zKSB7XG4gICAgdGhpcy4jdGV4dCA9IGAke3RleHR9YDtcbiAgICB0aGlzLiNsZW5ndGggPSB0aGlzLiN0ZXh0Lmxlbmd0aDtcbiAgICB0aGlzLiN0b2tlbml6ZWQgPSB0aGlzLiN0b2tlbml6ZSgpO1xuICAgIHRoaXMuI29wdGlvbnMgPSBvcHRpb25zO1xuICB9XG4gIHBhcnNlKCk6IEpzb25WYWx1ZSB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLiNnZXROZXh0KCk7XG4gICAgY29uc3QgcmVzID0gdGhpcy4jcGFyc2VKc29uVmFsdWUodG9rZW4pO1xuXG4gICAgLy8gbWFrZSBzdXJlIGFsbCBjaGFyYWN0ZXJzIGhhdmUgYmVlbiByZWFkXG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gdGhpcy4jdG9rZW5pemVkLm5leHQoKTtcbiAgICBpZiAoIWRvbmUpIHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihidWlsZEVycm9yTWVzc2FnZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH1cbiAgLyoqIFJlYWQgdGhlIG5leHQgdG9rZW4uIElmIHRoZSB0b2tlbiBpcyByZWFkIHRvIHRoZSBlbmQsIGl0IHRocm93cyBhIFN5bnRheEVycm9yLiAqL1xuICAjZ2V0TmV4dCgpOiBUb2tlbiB7XG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gdGhpcy4jdG9rZW5pemVkLm5leHQoKTtcbiAgICBpZiAoZG9uZSkge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFwiVW5leHBlY3RlZCBlbmQgb2YgSlNPTkMgaW5wdXRcIik7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICAvKiogU3BsaXQgdGhlIEpTT05DIHN0cmluZyBpbnRvIHRva2VuIHVuaXRzLiBXaGl0ZXNwYWNlIGFuZCBjb21tZW50cyBhcmUgc2tpcHBlZC4gKi9cbiAgKiN0b2tlbml6ZSgpOiBHZW5lcmF0b3I8VG9rZW4sIHZvaWQ+IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuI2xlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBza2lwIHdoaXRlc3BhY2VcbiAgICAgIGlmICh0aGlzLiN3aGl0ZXNwYWNlLmhhcyh0aGlzLiN0ZXh0W2ldISkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHNraXAgbXVsdGkgbGluZSBjb21tZW50IChgLyouLi4qL2ApXG4gICAgICBpZiAodGhpcy4jdGV4dFtpXSA9PT0gXCIvXCIgJiYgdGhpcy4jdGV4dFtpICsgMV0gPT09IFwiKlwiKSB7XG4gICAgICAgIGkgKz0gMjtcbiAgICAgICAgbGV0IGhhc0VuZE9mQ29tbWVudCA9IGZhbHNlO1xuICAgICAgICBmb3IgKDsgaSA8IHRoaXMuI2xlbmd0aDsgaSsrKSB7IC8vIHJlYWQgdW50aWwgZmluZCBgKi9gXG4gICAgICAgICAgaWYgKHRoaXMuI3RleHRbaV0gPT09IFwiKlwiICYmIHRoaXMuI3RleHRbaSArIDFdID09PSBcIi9cIikge1xuICAgICAgICAgICAgaGFzRW5kT2ZDb21tZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWhhc0VuZE9mQ29tbWVudCkge1xuICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcIlVuZXhwZWN0ZWQgZW5kIG9mIEpTT05DIGlucHV0XCIpO1xuICAgICAgICB9XG4gICAgICAgIGkrKztcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHNraXAgc2luZ2xlIGxpbmUgY29tbWVudCAoYC8vLi4uYClcbiAgICAgIGlmICh0aGlzLiN0ZXh0W2ldID09PSBcIi9cIiAmJiB0aGlzLiN0ZXh0W2kgKyAxXSA9PT0gXCIvXCIpIHtcbiAgICAgICAgaSArPSAyO1xuICAgICAgICBmb3IgKDsgaSA8IHRoaXMuI2xlbmd0aDsgaSsrKSB7IC8vIHJlYWQgdW50aWwgZmluZCBgXFxuYCBvciBgXFxyYFxuICAgICAgICAgIGlmICh0aGlzLiN0ZXh0W2ldID09PSBcIlxcblwiIHx8IHRoaXMuI3RleHRbaV0gPT09IFwiXFxyXCIpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoICh0aGlzLiN0ZXh0W2ldKSB7XG4gICAgICAgIGNhc2UgXCJ7XCI6XG4gICAgICAgICAgeWllbGQgeyB0eXBlOiBcIkJlZ2luT2JqZWN0XCIsIHBvc2l0aW9uOiBpIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ9XCI6XG4gICAgICAgICAgeWllbGQgeyB0eXBlOiBcIkVuZE9iamVjdFwiLCBwb3NpdGlvbjogaSB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiW1wiOlxuICAgICAgICAgIHlpZWxkIHsgdHlwZTogXCJCZWdpbkFycmF5XCIsIHBvc2l0aW9uOiBpIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJdXCI6XG4gICAgICAgICAgeWllbGQgeyB0eXBlOiBcIkVuZEFycmF5XCIsIHBvc2l0aW9uOiBpIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCI6XCI6XG4gICAgICAgICAgeWllbGQgeyB0eXBlOiBcIk5hbWVTZXBhcmF0b3JcIiwgcG9zaXRpb246IGkgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIixcIjpcbiAgICAgICAgICB5aWVsZCB7IHR5cGU6IFwiVmFsdWVTZXBhcmF0b3JcIiwgcG9zaXRpb246IGkgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnXCInOiB7IC8vIHBhcnNlIHN0cmluZyB0b2tlblxuICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBpO1xuICAgICAgICAgIC8vIE5lZWQgdG8gaGFuZGxlIGNvbnNlY3V0aXZlIGJhY2tzbGFzaGVzIGNvcnJlY3RseVxuICAgICAgICAgIC8vICdcIlxcXFxcIlwiJyA9PiAnXCInXG4gICAgICAgICAgLy8gJ1wiXFxcXFxcXFxcIicgPT4gJ1xcXFwnXG4gICAgICAgICAgLy8gJ1wiXFxcXFxcXFxcXFxcXCJcIicgPT4gJ1xcXFxcIidcbiAgICAgICAgICAvLyAnXCJcXFxcXFxcXFxcXFxcXFxcXCInID0+ICdcXFxcXFxcXCdcbiAgICAgICAgICBsZXQgc2hvdWxkRXNjYXBlTmV4dCA9IGZhbHNlO1xuICAgICAgICAgIGkrKztcbiAgICAgICAgICBmb3IgKDsgaSA8IHRoaXMuI2xlbmd0aDsgaSsrKSB7IC8vIHJlYWQgdW50aWwgZmluZCBgXCJgXG4gICAgICAgICAgICBpZiAodGhpcy4jdGV4dFtpXSA9PT0gJ1wiJyAmJiAhc2hvdWxkRXNjYXBlTmV4dCkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNob3VsZEVzY2FwZU5leHQgPSB0aGlzLiN0ZXh0W2ldID09PSBcIlxcXFxcIiAmJiAhc2hvdWxkRXNjYXBlTmV4dDtcbiAgICAgICAgICB9XG4gICAgICAgICAgeWllbGQge1xuICAgICAgICAgICAgdHlwZTogXCJTdHJpbmdcIixcbiAgICAgICAgICAgIHNvdXJjZVRleHQ6IHRoaXMuI3RleHQuc3Vic3RyaW5nKHN0YXJ0SW5kZXgsIGkgKyAxKSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdGFydEluZGV4LFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDogeyAvLyBwYXJzZSBudWxsLCB0cnVlLCBmYWxzZSBvciBudW1iZXIgdG9rZW5cbiAgICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gaTtcbiAgICAgICAgICBmb3IgKDsgaSA8IHRoaXMuI2xlbmd0aDsgaSsrKSB7IC8vIHJlYWQgdW50aWwgZmluZCBudW1iZXJFbmRUb2tlblxuICAgICAgICAgICAgaWYgKHRoaXMuI251bWJlckVuZFRva2VuLmhhcyh0aGlzLiN0ZXh0W2ldISkpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGktLTtcbiAgICAgICAgICB5aWVsZCB7XG4gICAgICAgICAgICB0eXBlOiBcIk51bGxPclRydWVPckZhbHNlT3JOdW1iZXJcIixcbiAgICAgICAgICAgIHNvdXJjZVRleHQ6IHRoaXMuI3RleHQuc3Vic3RyaW5nKHN0YXJ0SW5kZXgsIGkgKyAxKSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdGFydEluZGV4LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgI3BhcnNlSnNvblZhbHVlKHZhbHVlOiBUb2tlbik6IEpzb25WYWx1ZSB7XG4gICAgc3dpdGNoICh2YWx1ZS50eXBlKSB7XG4gICAgICBjYXNlIFwiQmVnaW5PYmplY3RcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMuI3BhcnNlT2JqZWN0KCk7XG4gICAgICBjYXNlIFwiQmVnaW5BcnJheVwiOlxuICAgICAgICByZXR1cm4gdGhpcy4jcGFyc2VBcnJheSgpO1xuICAgICAgY2FzZSBcIk51bGxPclRydWVPckZhbHNlT3JOdW1iZXJcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMuI3BhcnNlTnVsbE9yVHJ1ZU9yRmFsc2VPck51bWJlcih2YWx1ZSk7XG4gICAgICBjYXNlIFwiU3RyaW5nXCI6XG4gICAgICAgIHJldHVybiB0aGlzLiNwYXJzZVN0cmluZyh2YWx1ZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYnVpbGRFcnJvck1lc3NhZ2UodmFsdWUpKTtcbiAgICB9XG4gIH1cbiAgI3BhcnNlT2JqZWN0KCk6IHsgW2tleTogc3RyaW5nXTogSnNvblZhbHVlIHwgdW5kZWZpbmVkIH0ge1xuICAgIGNvbnN0IHRhcmdldDogeyBba2V5OiBzdHJpbmddOiBKc29uVmFsdWUgfCB1bmRlZmluZWQgfSA9IHt9O1xuICAgIC8vICAg4pSM4pSAdG9rZW4xXG4gICAgLy8geyB9XG4gICAgLy8gICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIB0b2tlbjFcbiAgICAvLyAgICAgIOKUgiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgHRva2VuMlxuICAgIC8vICAgICAg4pSCICAg4pSCICAg4pSM4pSA4pSA4pSA4pSA4pSAdG9rZW4zXG4gICAgLy8gICAgICDilIIgICDilIIgICDilIIgICDilIzilIB0b2tlbjRcbiAgICAvLyAgeyBcImtleVwiIDogdmFsdWUgfVxuICAgIC8vICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAdG9rZW4xXG4gICAgLy8gICAgICDilIIgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIB0b2tlbjJcbiAgICAvLyAgICAgIOKUgiAgIOKUgiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgHRva2VuM1xuICAgIC8vICAgICAg4pSCICAg4pSCICAg4pSCICAg4pSM4pSA4pSA4pSAdG9rZW40XG4gICAgLy8gICAgICDilIIgICDilIIgICDilIIgICDilIIg4pSM4pSAdG9rZW4xXG4gICAgLy8gIHsgXCJrZXlcIiA6IHZhbHVlICwgfVxuICAgIC8vICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAdG9rZW4xXG4gICAgLy8gICAgICDilIIgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIB0b2tlbjJcbiAgICAvLyAgICAgIOKUgiAgIOKUgiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgHRva2VuM1xuICAgIC8vICAgICAg4pSCICAg4pSCICAg4pSCICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAdG9rZW40XG4gICAgLy8gICAgICDilIIgICDilIIgICDilIIgICDilIIgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIB0b2tlbjFcbiAgICAvLyAgICAgIOKUgiAgIOKUgiAgIOKUgiAgIOKUgiAgIOKUgiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgHRva2VuMlxuICAgIC8vICAgICAg4pSCICAg4pSCICAg4pSCICAg4pSCICAg4pSCICAg4pSCICAg4pSM4pSA4pSA4pSA4pSA4pSAdG9rZW4zXG4gICAgLy8gICAgICDilIIgICDilIIgICDilIIgICDilIIgICDilIIgICDilIIgICDilIIgICDilIzilIB0b2tlbjRcbiAgICAvLyAgeyBcImtleVwiIDogdmFsdWUgLCBcImtleVwiIDogdmFsdWUgfVxuICAgIGZvciAobGV0IGlzRmlyc3QgPSB0cnVlOzsgaXNGaXJzdCA9IGZhbHNlKSB7XG4gICAgICBjb25zdCB0b2tlbjEgPSB0aGlzLiNnZXROZXh0KCk7XG4gICAgICBpZiAoXG4gICAgICAgIChpc0ZpcnN0IHx8IHRoaXMuI29wdGlvbnMuYWxsb3dUcmFpbGluZ0NvbW1hKSAmJlxuICAgICAgICB0b2tlbjEudHlwZSA9PT0gXCJFbmRPYmplY3RcIlxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgICB9XG4gICAgICBpZiAodG9rZW4xLnR5cGUgIT09IFwiU3RyaW5nXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGJ1aWxkRXJyb3JNZXNzYWdlKHRva2VuMSkpO1xuICAgICAgfVxuICAgICAgY29uc3Qga2V5ID0gdGhpcy4jcGFyc2VTdHJpbmcodG9rZW4xKTtcblxuICAgICAgY29uc3QgdG9rZW4yID0gdGhpcy4jZ2V0TmV4dCgpO1xuICAgICAgaWYgKHRva2VuMi50eXBlICE9PSBcIk5hbWVTZXBhcmF0b3JcIikge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYnVpbGRFcnJvck1lc3NhZ2UodG9rZW4yKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRva2VuMyA9IHRoaXMuI2dldE5leHQoKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgICB2YWx1ZTogdGhpcy4jcGFyc2VKc29uVmFsdWUodG9rZW4zKSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0b2tlbjQgPSB0aGlzLiNnZXROZXh0KCk7XG4gICAgICBpZiAodG9rZW40LnR5cGUgPT09IFwiRW5kT2JqZWN0XCIpIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgIH1cbiAgICAgIGlmICh0b2tlbjQudHlwZSAhPT0gXCJWYWx1ZVNlcGFyYXRvclwiKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihidWlsZEVycm9yTWVzc2FnZSh0b2tlbjQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgI3BhcnNlQXJyYXkoKTogSnNvblZhbHVlW10ge1xuICAgIGNvbnN0IHRhcmdldDogSnNvblZhbHVlW10gPSBbXTtcbiAgICAvLyAgIOKUjOKUgHRva2VuMVxuICAgIC8vIFsgXVxuICAgIC8vICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAdG9rZW4xXG4gICAgLy8gICAgICDilIIgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIB0b2tlbjJcbiAgICAvLyAgWyB2YWx1ZSBdXG4gICAgLy8gICAgICDilIzilIDilIDilIDilIDilIDilIDilIB0b2tlbjFcbiAgICAvLyAgICAgIOKUgiAgIOKUjOKUgOKUgOKUgHRva2VuMlxuICAgIC8vICAgICAg4pSCICAg4pSCIOKUjOKUgHRva2VuMVxuICAgIC8vICBbIHZhbHVlICwgXVxuICAgIC8vICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAdG9rZW4xXG4gICAgLy8gICAgICDilIIgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIB0b2tlbjJcbiAgICAvLyAgICAgIOKUgiAgIOKUgiAgIOKUjOKUgOKUgOKUgOKUgOKUgHRva2VuMVxuICAgIC8vICAgICAg4pSCICAg4pSCICAg4pSCICAg4pSM4pSAdG9rZW4yXG4gICAgLy8gIFsgdmFsdWUgLCB2YWx1ZSBdXG4gICAgZm9yIChsZXQgaXNGaXJzdCA9IHRydWU7OyBpc0ZpcnN0ID0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHRva2VuMSA9IHRoaXMuI2dldE5leHQoKTtcbiAgICAgIGlmIChcbiAgICAgICAgKGlzRmlyc3QgfHwgdGhpcy4jb3B0aW9ucy5hbGxvd1RyYWlsaW5nQ29tbWEpICYmXG4gICAgICAgIHRva2VuMS50eXBlID09PSBcIkVuZEFycmF5XCJcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgfVxuICAgICAgdGFyZ2V0LnB1c2godGhpcy4jcGFyc2VKc29uVmFsdWUodG9rZW4xKSk7XG5cbiAgICAgIGNvbnN0IHRva2VuMiA9IHRoaXMuI2dldE5leHQoKTtcbiAgICAgIGlmICh0b2tlbjIudHlwZSA9PT0gXCJFbmRBcnJheVwiKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgICB9XG4gICAgICBpZiAodG9rZW4yLnR5cGUgIT09IFwiVmFsdWVTZXBhcmF0b3JcIikge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYnVpbGRFcnJvck1lc3NhZ2UodG9rZW4yKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gICNwYXJzZVN0cmluZyh2YWx1ZToge1xuICAgIHR5cGU6IFwiU3RyaW5nXCI7XG4gICAgc291cmNlVGV4dDogc3RyaW5nO1xuICAgIHBvc2l0aW9uOiBudW1iZXI7XG4gIH0pOiBzdHJpbmcge1xuICAgIGxldCBwYXJzZWQ7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFVzZSBKU09OLnBhcnNlIHRvIGhhbmRsZSBgXFx1MDAwMGAgZXRjLiBjb3JyZWN0bHkuXG4gICAgICBwYXJzZWQgPSBvcmlnaW5hbEpTT05QYXJzZSh2YWx1ZS5zb3VyY2VUZXh0KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihidWlsZEVycm9yTWVzc2FnZSh2YWx1ZSkpO1xuICAgIH1cbiAgICBhc3NlcnQodHlwZW9mIHBhcnNlZCA9PT0gXCJzdHJpbmdcIik7XG4gICAgcmV0dXJuIHBhcnNlZDtcbiAgfVxuICAjcGFyc2VOdWxsT3JUcnVlT3JGYWxzZU9yTnVtYmVyKHZhbHVlOiB7XG4gICAgdHlwZTogXCJOdWxsT3JUcnVlT3JGYWxzZU9yTnVtYmVyXCI7XG4gICAgc291cmNlVGV4dDogc3RyaW5nO1xuICAgIHBvc2l0aW9uOiBudW1iZXI7XG4gIH0pOiBudWxsIHwgYm9vbGVhbiB8IG51bWJlciB7XG4gICAgaWYgKHZhbHVlLnNvdXJjZVRleHQgPT09IFwibnVsbFwiKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnNvdXJjZVRleHQgPT09IFwidHJ1ZVwiKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnNvdXJjZVRleHQgPT09IFwiZmFsc2VcIikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgcGFyc2VkO1xuICAgIHRyeSB7XG4gICAgICAvLyBVc2UgSlNPTi5wYXJzZSB0byBoYW5kbGUgYCsxMDBgLCBgSW5maW5pdHlgIGV0Yy4gY29ycmVjdGx5LlxuICAgICAgcGFyc2VkID0gb3JpZ2luYWxKU09OUGFyc2UodmFsdWUuc291cmNlVGV4dCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYnVpbGRFcnJvck1lc3NhZ2UodmFsdWUpKTtcbiAgICB9XG4gICAgYXNzZXJ0KHR5cGVvZiBwYXJzZWQgPT09IFwibnVtYmVyXCIpO1xuICAgIHJldHVybiBwYXJzZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gYnVpbGRFcnJvck1lc3NhZ2UoeyB0eXBlLCBzb3VyY2VUZXh0LCBwb3NpdGlvbiB9OiBUb2tlbik6IHN0cmluZyB7XG4gIGxldCB0b2tlbiA9IFwiXCI7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgXCJCZWdpbk9iamVjdFwiOlxuICAgICAgdG9rZW4gPSBcIntcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJFbmRPYmplY3RcIjpcbiAgICAgIHRva2VuID0gXCJ9XCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiQmVnaW5BcnJheVwiOlxuICAgICAgdG9rZW4gPSBcIltcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJFbmRBcnJheVwiOlxuICAgICAgdG9rZW4gPSBcIl1cIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJOYW1lU2VwYXJhdG9yXCI6XG4gICAgICB0b2tlbiA9IFwiOlwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIlZhbHVlU2VwYXJhdG9yXCI6XG4gICAgICB0b2tlbiA9IFwiLFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIk51bGxPclRydWVPckZhbHNlT3JOdW1iZXJcIjpcbiAgICBjYXNlIFwiU3RyaW5nXCI6XG4gICAgICAvLyBUcnVuY2F0ZSB0aGUgc3RyaW5nIHNvIHRoYXQgaXQgaXMgd2l0aGluIDMwIGxlbmd0aHMuXG4gICAgICB0b2tlbiA9IDMwIDwgc291cmNlVGV4dC5sZW5ndGhcbiAgICAgICAgPyBgJHtzb3VyY2VUZXh0LnNsaWNlKDAsIDMwKX0uLi5gXG4gICAgICAgIDogc291cmNlVGV4dDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTtcbiAgfVxuICByZXR1cm4gYFVuZXhwZWN0ZWQgdG9rZW4gJHt0b2tlbn0gaW4gSlNPTkMgYXQgcG9zaXRpb24gJHtwb3NpdGlvbn1gO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG5cbmNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcblxuZnVuY3Rpb24gZ2V0VHlwZU5hbWUodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICBjb25zdCB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBpZiAodHlwZSAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiB0eXBlO1xuICB9IGVsc2UgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIFwibnVsbFwiO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZT8uY29uc3RydWN0b3I/Lm5hbWUgPz8gXCJvYmplY3RcIjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVCaW5hcnlMaWtlKHNvdXJjZTogdW5rbm93bik6IFVpbnQ4QXJyYXkge1xuICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBlbmNvZGVyLmVuY29kZShzb3VyY2UpO1xuICB9IGVsc2UgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICByZXR1cm4gc291cmNlO1xuICB9IGVsc2UgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHNvdXJjZSk7XG4gIH1cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICBgVGhlIGlucHV0IG11c3QgYmUgYSBVaW50OEFycmF5LCBhIHN0cmluZywgb3IgYW4gQXJyYXlCdWZmZXIuIFJlY2VpdmVkIGEgdmFsdWUgb2YgdGhlIHR5cGUgJHtcbiAgICAgIGdldFR5cGVOYW1lKHNvdXJjZSlcbiAgICB9LmAsXG4gICk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAoYykgMjAxNCBKYW1lc29uIExpdHRsZS4gTUlUIExpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IHZhbGlkYXRlQmluYXJ5TGlrZSB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qKlxuICogVXRpbGl0aWVzIGZvclxuICogW2Jhc2UzMl17QGxpbmsgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM0NjQ4I3NlY3Rpb24tNn1cbiAqIGVuY29kaW5nIGFuZCBkZWNvZGluZy5cbiAqXG4gKiBNb2RpZmllZCBmcm9tIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vYmVhdGdhbW1pdC9iYXNlNjQtanN9LlxuICpcbiAqIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuY29uc3QgbG9va3VwOiBzdHJpbmdbXSA9IFtdO1xuY29uc3QgcmV2TG9va3VwOiBudW1iZXJbXSA9IFtdO1xuXG4vLyBSRkM0NjQ4IGJhc2UzMlxuY29uc3QgY29kZSA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoyMzQ1NjdcIjtcbmZvciAobGV0IGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gIGxvb2t1cFtpXSA9IGNvZGVbaV07XG4gIHJldkxvb2t1cFtjb2RlLmNoYXJDb2RlQXQoaSldID0gaTtcbn1cblxuY29uc3QgcGxhY2VIb2xkZXJQYWRMb29rdXAgPSBbMCwgMSwgLCAyLCAzLCAsIDRdO1xuZnVuY3Rpb24gX2dldFBhZExlbihwbGFjZUhvbGRlcnNMZW46IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IG1heWJlTGVuID0gcGxhY2VIb2xkZXJQYWRMb29rdXBbcGxhY2VIb2xkZXJzTGVuXTtcbiAgaWYgKHR5cGVvZiBtYXliZUxlbiAhPT0gXCJudW1iZXJcIikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcGFkIGxlbmd0aFwiKTtcbiAgfVxuICByZXR1cm4gbWF5YmVMZW47XG59XG5cbmZ1bmN0aW9uIGdldExlbnMoYjMyOiBzdHJpbmcpOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgY29uc3QgbGVuID0gYjMyLmxlbmd0aDtcblxuICBpZiAobGVuICUgOCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4XCIpO1xuICB9XG5cbiAgbGV0IHZhbGlkTGVuID0gYjMyLmluZGV4T2YoXCI9XCIpO1xuICBpZiAodmFsaWRMZW4gPT09IC0xKSB2YWxpZExlbiA9IGxlbjtcblxuICBjb25zdCBwbGFjZUhvbGRlcnNMZW4gPSB2YWxpZExlbiA9PT0gbGVuID8gMCA6IDggLSAodmFsaWRMZW4gJSA4KTtcblxuICByZXR1cm4gW3ZhbGlkTGVuLCBwbGFjZUhvbGRlcnNMZW5dO1xufVxuXG5mdW5jdGlvbiBfYnl0ZUxlbmd0aCh2YWxpZExlbjogbnVtYmVyLCBwbGFjZUhvbGRlcnNMZW46IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDUpIC8gOCAtIF9nZXRQYWRMZW4ocGxhY2VIb2xkZXJzTGVuKTtcbn1cblxuLyoqXG4gKiBEZWNvZGVzIGEgYmFzZTMyLWVuY29kZWQgc3RyaW5nLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNDY0OCNzZWN0aW9uLTZ9XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBkZWNvZGVCYXNlMzIgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9lbmNvZGluZy9iYXNlMzIudHNcIjtcbiAqXG4gKiBkZWNvZGVCYXNlMzIoXCJOUlFNQT09PVwiKTsgLy8gVWludDhBcnJheSgzKSBbIDEwOCwgOTYsIDE5MiBdXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUJhc2UzMihiMzI6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICBsZXQgdG1wOiBudW1iZXI7XG4gIGNvbnN0IFt2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuXSA9IGdldExlbnMoYjMyKTtcblxuICBjb25zdCBhcnIgPSBuZXcgVWludDhBcnJheShfYnl0ZUxlbmd0aCh2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuKSk7XG5cbiAgbGV0IGN1ckJ5dGUgPSAwO1xuXG4gIC8vIGlmIHRoZXJlIGFyZSBwbGFjZWhvbGRlcnMsIG9ubHkgZ2V0IHVwIHRvIHRoZSBsYXN0IGNvbXBsZXRlIDggY2hhcnNcbiAgY29uc3QgbGVuID0gcGxhY2VIb2xkZXJzTGVuID4gMCA/IHZhbGlkTGVuIC0gOCA6IHZhbGlkTGVuO1xuXG4gIGxldCBpOiBudW1iZXI7XG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gOCkge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSldIDw8IDIwKSB8XG4gICAgICAocmV2TG9va3VwW2IzMi5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgMTUpIHxcbiAgICAgIChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSArIDIpXSA8PCAxMCkgfFxuICAgICAgKHJldkxvb2t1cFtiMzIuY2hhckNvZGVBdChpICsgMyldIDw8IDUpIHxcbiAgICAgIHJldkxvb2t1cFtiMzIuY2hhckNvZGVBdChpICsgNCldO1xuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiAxNykgJiAweGZmO1xuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA5KSAmIDB4ZmY7XG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDEpICYgMHhmZjtcblxuICAgIHRtcCA9ICgodG1wICYgMSkgPDwgMTUpIHxcbiAgICAgIChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSArIDUpXSA8PCAxMCkgfFxuICAgICAgKHJldkxvb2t1cFtiMzIuY2hhckNvZGVBdChpICsgNildIDw8IDUpIHxcbiAgICAgIHJldkxvb2t1cFtiMzIuY2hhckNvZGVBdChpICsgNyldO1xuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4ZmY7XG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweGZmO1xuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gMSkge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSldIDw8IDIwKSB8XG4gICAgICAocmV2TG9va3VwW2IzMi5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgMTUpIHxcbiAgICAgIChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSArIDIpXSA8PCAxMCkgfFxuICAgICAgKHJldkxvb2t1cFtiMzIuY2hhckNvZGVBdChpICsgMyldIDw8IDUpIHxcbiAgICAgIHJldkxvb2t1cFtiMzIuY2hhckNvZGVBdChpICsgNCldO1xuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiAxNykgJiAweGZmO1xuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA5KSAmIDB4ZmY7XG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDEpICYgMHhmZjtcbiAgICB0bXAgPSAoKHRtcCAmIDEpIDw8IDcpIHxcbiAgICAgIChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSArIDUpXSA8PCAyKSB8XG4gICAgICAocmV2TG9va3VwW2IzMi5jaGFyQ29kZUF0KGkgKyA2KV0gPj4gMyk7XG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweGZmO1xuICB9IGVsc2UgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gMykge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSldIDw8IDE5KSB8XG4gICAgICAocmV2TG9va3VwW2IzMi5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgMTQpIHxcbiAgICAgIChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSArIDIpXSA8PCA5KSB8XG4gICAgICAocmV2TG9va3VwW2IzMi5jaGFyQ29kZUF0KGkgKyAzKV0gPDwgNCkgfFxuICAgICAgKHJldkxvb2t1cFtiMzIuY2hhckNvZGVBdChpICsgNCldID4+IDEpO1xuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiAxNikgJiAweGZmO1xuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4ZmY7XG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweGZmO1xuICB9IGVsc2UgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gNCkge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSldIDw8IDExKSB8XG4gICAgICAocmV2TG9va3VwW2IzMi5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgNikgfFxuICAgICAgKHJldkxvb2t1cFtiMzIuY2hhckNvZGVBdChpICsgMildIDw8IDEpIHxcbiAgICAgIChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSArIDMpXSA+PiA0KTtcbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gOCkgJiAweGZmO1xuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhmZjtcbiAgfSBlbHNlIGlmIChwbGFjZUhvbGRlcnNMZW4gPT09IDYpIHtcbiAgICB0bXAgPSAocmV2TG9va3VwW2IzMi5jaGFyQ29kZUF0KGkpXSA8PCAzKSB8XG4gICAgICAocmV2TG9va3VwW2IzMi5jaGFyQ29kZUF0KGkgKyAxKV0gPj4gMik7XG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweGZmO1xuICB9XG5cbiAgcmV0dXJuIGFycjtcbn1cblxuZnVuY3Rpb24gZW5jb2RlQ2h1bmsodWludDg6IFVpbnQ4QXJyYXksIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogc3RyaW5nIHtcbiAgbGV0IHRtcDogbnVtYmVyO1xuICBjb25zdCBvdXRwdXQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpICs9IDUpIHtcbiAgICB0bXAgPSAoKHVpbnQ4W2ldIDw8IDE2KSAmIDB4ZmYwMDAwKSB8XG4gICAgICAoKHVpbnQ4W2kgKyAxXSA8PCA4KSAmIDB4ZmYwMCkgfFxuICAgICAgKHVpbnQ4W2kgKyAyXSAmIDB4ZmYpO1xuICAgIG91dHB1dC5wdXNoKGxvb2t1cFsodG1wID4+IDE5KSAmIDB4MWZdKTtcbiAgICBvdXRwdXQucHVzaChsb29rdXBbKHRtcCA+PiAxNCkgJiAweDFmXSk7XG4gICAgb3V0cHV0LnB1c2gobG9va3VwWyh0bXAgPj4gOSkgJiAweDFmXSk7XG4gICAgb3V0cHV0LnB1c2gobG9va3VwWyh0bXAgPj4gNCkgJiAweDFmXSk7XG4gICAgdG1wID0gKCh0bXAgJiAweGYpIDw8IDE2KSB8XG4gICAgICAoKHVpbnQ4W2kgKyAzXSA8PCA4KSAmIDB4ZmYwMCkgfFxuICAgICAgKHVpbnQ4W2kgKyA0XSAmIDB4ZmYpO1xuICAgIG91dHB1dC5wdXNoKGxvb2t1cFsodG1wID4+IDE1KSAmIDB4MWZdKTtcbiAgICBvdXRwdXQucHVzaChsb29rdXBbKHRtcCA+PiAxMCkgJiAweDFmXSk7XG4gICAgb3V0cHV0LnB1c2gobG9va3VwWyh0bXAgPj4gNSkgJiAweDFmXSk7XG4gICAgb3V0cHV0LnB1c2gobG9va3VwW3RtcCAmIDB4MWZdKTtcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oXCJcIik7XG59XG5cbi8qKlxuICogQ29udmVydHMgZGF0YSB0byBhIGJhc2UzMi1lbmNvZGVkIHN0cmluZy5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzQ2NDgjc2VjdGlvbi02fVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZW5jb2RlQmFzZTMyIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vZW5jb2RpbmcvYmFzZTMyLnRzXCI7XG4gKlxuICogZW5jb2RlQmFzZTMyKFwiNmM2MGMwXCIpOyAvLyBcIk5SUU1BPT09XCJcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlQmFzZTMyKGRhdGE6IEFycmF5QnVmZmVyIHwgVWludDhBcnJheSB8IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHVpbnQ4ID0gdmFsaWRhdGVCaW5hcnlMaWtlKGRhdGEpO1xuXG4gIGxldCB0bXA6IG51bWJlcjtcbiAgY29uc3QgbGVuID0gdWludDgubGVuZ3RoO1xuICBjb25zdCBleHRyYUJ5dGVzID0gbGVuICUgNTtcbiAgY29uc3QgcGFydHMgPSBbXTtcbiAgY29uc3QgbWF4Q2h1bmtMZW5ndGggPSAxNjM4NTsgLy8gbXVzdCBiZSBtdWx0aXBsZSBvZiA1XG4gIGNvbnN0IGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzO1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IDUgYnl0ZXMsIHdlJ2xsIGRlYWwgd2l0aCB0cmFpbGluZyBzdHVmZiBsYXRlclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjI7IGkgKz0gbWF4Q2h1bmtMZW5ndGgpIHtcbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgZW5jb2RlQ2h1bmsoXG4gICAgICAgIHVpbnQ4LFxuICAgICAgICBpLFxuICAgICAgICBpICsgbWF4Q2h1bmtMZW5ndGggPiBsZW4yID8gbGVuMiA6IGkgKyBtYXhDaHVua0xlbmd0aCxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIC8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXNcbiAgaWYgKGV4dHJhQnl0ZXMgPT09IDQpIHtcbiAgICB0bXAgPSAoKHVpbnQ4W2xlbjJdICYgMHhmZikgPDwgMTYpIHxcbiAgICAgICgodWludDhbbGVuMiArIDFdICYgMHhmZikgPDwgOCkgfFxuICAgICAgKHVpbnQ4W2xlbjIgKyAyXSAmIDB4ZmYpO1xuICAgIHBhcnRzLnB1c2gobG9va3VwWyh0bXAgPj4gMTkpICYgMHgxZl0pO1xuICAgIHBhcnRzLnB1c2gobG9va3VwWyh0bXAgPj4gMTQpICYgMHgxZl0pO1xuICAgIHBhcnRzLnB1c2gobG9va3VwWyh0bXAgPj4gOSkgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiA0KSAmIDB4MWZdKTtcbiAgICB0bXAgPSAoKHRtcCAmIDB4ZikgPDwgMTEpIHwgKHVpbnQ4W2xlbjIgKyAzXSA8PCAzKTtcbiAgICBwYXJ0cy5wdXNoKGxvb2t1cFsodG1wID4+IDEwKSAmIDB4MWZdKTtcbiAgICBwYXJ0cy5wdXNoKGxvb2t1cFsodG1wID4+IDUpICYgMHgxZl0pO1xuICAgIHBhcnRzLnB1c2gobG9va3VwW3RtcCAmIDB4MWZdKTtcbiAgICBwYXJ0cy5wdXNoKFwiPVwiKTtcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAzKSB7XG4gICAgdG1wID0gKCh1aW50OFtsZW4yXSAmIDB4ZmYpIDw8IDE3KSB8XG4gICAgICAoKHVpbnQ4W2xlbjIgKyAxXSAmIDB4ZmYpIDw8IDkpIHxcbiAgICAgICgodWludDhbbGVuMiArIDJdICYgMHhmZikgPDwgMSk7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiAyMCkgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiAxNSkgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiAxMCkgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiA1KSAmIDB4MWZdKTtcbiAgICBwYXJ0cy5wdXNoKGxvb2t1cFt0bXAgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChcIj09PVwiKTtcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKCh1aW50OFtsZW4yXSAmIDB4ZmYpIDw8IDEyKSB8ICgodWludDhbbGVuMiArIDFdICYgMHhmZikgPDwgNCk7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiAxNSkgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiAxMCkgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiA1KSAmIDB4MWZdKTtcbiAgICBwYXJ0cy5wdXNoKGxvb2t1cFt0bXAgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChcIj09PT1cIik7XG4gIH0gZWxzZSBpZiAoZXh0cmFCeXRlcyA9PT0gMSkge1xuICAgIHRtcCA9ICh1aW50OFtsZW4yXSAmIDB4ZmYpIDw8IDI7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiA1KSAmIDB4MWZdKTtcbiAgICBwYXJ0cy5wdXNoKGxvb2t1cFt0bXAgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChcIj09PT09PVwiKTtcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKFwiXCIpO1xufVxuIiwgImV4cG9ydCBpbnRlcmZhY2UgU3BlY2lmaWVyTWFwIHtcbiAgW3VybDogc3RyaW5nXTogc3RyaW5nIHwgbnVsbDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVzIHtcbiAgW3VybDogc3RyaW5nXTogU3BlY2lmaWVyTWFwO1xufVxuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRNYXAge1xuICBpbXBvcnRzPzogU3BlY2lmaWVyTWFwO1xuICBzY29wZXM/OiBTY29wZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdChvYmplY3Q6IHVua25vd24pOiBvYmplY3QgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PSBcIm9iamVjdFwiICYmIG9iamVjdCAhPT0gbnVsbCAmJlxuICAgIG9iamVjdC5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRPYmplY3QoXG4gIG5vcm1hbGl6ZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCBzb3J0ZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGNvbnN0IHNvcnRlZEtleXMgPSBPYmplY3Qua2V5cyhub3JtYWxpemVkKVxuICAgIC5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKTtcbiAgZm9yIChjb25zdCBrZXkgb2Ygc29ydGVkS2V5cykge1xuICAgIHNvcnRlZFtrZXldID0gbm9ybWFsaXplZFtrZXldO1xuICB9XG4gIHJldHVybiBzb3J0ZWQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNJbXBvcnRNYXAoaW1wb3J0TWFwOiB1bmtub3duKTogaW1wb3J0TWFwIGlzIEltcG9ydE1hcCB7XG4gIHJldHVybiBpc09iamVjdChpbXBvcnRNYXApICYmXG4gICAgKGltcG9ydE1hcC5pbXBvcnRzICE9PSB1bmRlZmluZWQgPyBpc0ltcG9ydHMoaW1wb3J0TWFwLmltcG9ydHMpIDogdHJ1ZSkgJiZcbiAgICAoaW1wb3J0TWFwLnNjb3BlcyAhPT0gdW5kZWZpbmVkID8gaXNTY29wZXMoaW1wb3J0TWFwLnNjb3BlcykgOiB0cnVlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ltcG9ydHMoXG4gIGltcG9ydHNNYXA6IHVua25vd24sXG4pOiBpbXBvcnRzTWFwIGlzIEltcG9ydE1hcCB7XG4gIHJldHVybiBpc09iamVjdChpbXBvcnRzTWFwKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1Njb3BlcyhcbiAgc2NvcGVzOiB1bmtub3duLFxuKTogc2NvcGVzIGlzIFNjb3BlcyB7XG4gIHJldHVybiBpc09iamVjdChzY29wZXMpICYmXG4gICAgT2JqZWN0LnZhbHVlcyhzY29wZXMpLmV2ZXJ5KCh2YWx1ZSkgPT4gaXNTcGVjaWZpZXJNYXAodmFsdWUpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1NwZWNpZmllck1hcChcbiAgc3BlY2lmaWVyTWFwOiB1bmtub3duLFxuKTogc3BlY2lmaWVyTWFwIGlzIFNwZWNpZmllck1hcCB7XG4gIHJldHVybiBpc09iamVjdChzcGVjaWZpZXJNYXApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVVJMKHVybDogdW5rbm93bik6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIG5ldyBVUkwodXJsIGFzIHN0cmluZyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwgImltcG9ydCB7XG4gIEltcG9ydE1hcCxcbiAgaXNJbXBvcnRNYXAsXG4gIGlzSW1wb3J0cyxcbiAgaXNTY29wZXMsXG4gIGlzU3BlY2lmaWVyTWFwLFxuICBpc1VSTCxcbiAgU2NvcGVzLFxuICBzb3J0T2JqZWN0LFxuICBTcGVjaWZpZXJNYXAsXG59IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbmV4cG9ydCB0eXBlIHsgSW1wb3J0TWFwLCBTY29wZXMsIFNwZWNpZmllck1hcCB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vaW1wb3J0LW1hcHMvI3NvcnQtYW5kLW5vcm1hbGl6ZS1hLXNwZWNpZmllci1tYXAgKi9cbmZ1bmN0aW9uIHNvcnRBbmROb3JtYWxpemVTcGVjaWZpZXJNYXAoXG4gIG9yaWdpbmFsTWFwOiBTcGVjaWZpZXJNYXAsXG4gIGJhc2VVUkw6IFVSTCxcbik6IFNwZWNpZmllck1hcCB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQ6IFNwZWNpZmllck1hcCA9IHt9O1xuICBmb3IgKGNvbnN0IFtzcGVjaWZpZXJLZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvcmlnaW5hbE1hcCkpIHtcbiAgICBjb25zdCBub3JtYWxpemVkU3BlY2lmaWVyS2V5ID0gbm9ybWFsaXplU3BlY2lmaWVyS2V5KHNwZWNpZmllcktleSwgYmFzZVVSTCk7XG4gICAgaWYgKG5vcm1hbGl6ZWRTcGVjaWZpZXJLZXkgPT09IG51bGwpIGNvbnRpbnVlO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnNvbGUud2FybihgYWRkcmVzc2VzIG5lZWQgdG8gYmUgc3RyaW5ncy5gKTtcbiAgICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplZFNwZWNpZmllcktleV0gPSBudWxsO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGFkZHJlc3NVUkwgPSBwYXJzZVVybExpa2VJbXBvcnRTcGVjaWZpZXIodmFsdWUsIGJhc2VVUkwpO1xuXG4gICAgaWYgKGFkZHJlc3NVUkwgPT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUud2FybihgdGhlIGFkZHJlc3Mgd2FzIGludmFsaWQuYCk7XG4gICAgICBub3JtYWxpemVkW25vcm1hbGl6ZWRTcGVjaWZpZXJLZXldID0gbnVsbDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoc3BlY2lmaWVyS2V5LmVuZHNXaXRoKFwiL1wiKSAmJiAhc2VyaWFsaXplVVJMKGFkZHJlc3NVUkwpLmVuZHNXaXRoKFwiL1wiKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgYW4gaW52YWxpZCBhZGRyZXNzIHdhcyBnaXZlbiBmb3IgdGhlIHNwZWNpZmllciBrZXkgc3BlY2lmaWVyS2V5OyBzaW5jZSBzcGVjaWZpZXJLZXkgZW5kZWQgaW4gYSBzbGFzaCwgdGhlIGFkZHJlc3MgbmVlZHMgdG8gYXMgd2VsbC5gLFxuICAgICAgKTtcbiAgICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplZFNwZWNpZmllcktleV0gPSBudWxsO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplZFNwZWNpZmllcktleV0gPSBzZXJpYWxpemVVUkwoYWRkcmVzc1VSTCk7XG4gIH1cbiAgcmV0dXJuIHNvcnRPYmplY3Qobm9ybWFsaXplZCkgYXMgU3BlY2lmaWVyTWFwO1xufVxuLyogaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXVybC1zZXJpYWxpemVyICovXG5mdW5jdGlvbiBzZXJpYWxpemVVUkwodXJsOiBVUkwpOiBzdHJpbmcge1xuICByZXR1cm4gdXJsLmhyZWY7XG59XG4vKiBodHRwczovL3dpY2cuZ2l0aHViLmlvL2ltcG9ydC1tYXBzLyNzb3J0LWFuZC1ub3JtYWxpemUtc2NvcGVzICovXG5mdW5jdGlvbiBzb3J0QW5kTm9ybWFsaXplU2NvcGVzKFxuICBvcmlnaW5hbE1hcDogU2NvcGVzLFxuICBiYXNlVVJMOiBVUkwsXG4pOiBTY29wZXMge1xuICBjb25zdCBub3JtYWxpemVkOiBTY29wZXMgPSB7fTtcbiAgZm9yIChcbiAgICBjb25zdCBbc2NvcGVQcmVmaXgsIHBvdGVudGlhbFNwZWNpZmllck1hcF0gb2YgT2JqZWN0LmVudHJpZXMob3JpZ2luYWxNYXApXG4gICkge1xuICAgIGlmICghaXNTcGVjaWZpZXJNYXAocG90ZW50aWFsU3BlY2lmaWVyTWFwKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYHRoZSB2YWx1ZSBvZiB0aGUgc2NvcGUgd2l0aCBwcmVmaXggc2NvcGVQcmVmaXggbmVlZHMgdG8gYmUgYW4gb2JqZWN0LmAsXG4gICAgICApO1xuICAgIH1cbiAgICBsZXQgc2NvcGVQcmVmaXhVUkw7XG4gICAgdHJ5IHtcbiAgICAgIHNjb3BlUHJlZml4VVJMID0gbmV3IFVSTChzY29wZVByZWZpeCwgYmFzZVVSTCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBjb25zb2xlLndhcm4oYHRoZSBzY29wZSBwcmVmaXggVVJMIHdhcyBub3QgcGFyc2VhYmxlLmApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG5vcm1hbGl6ZWRTY29wZVByZWZpeCA9IHNlcmlhbGl6ZVVSTChzY29wZVByZWZpeFVSTCk7XG4gICAgbm9ybWFsaXplZFtub3JtYWxpemVkU2NvcGVQcmVmaXhdID0gc29ydEFuZE5vcm1hbGl6ZVNwZWNpZmllck1hcChcbiAgICAgIHBvdGVudGlhbFNwZWNpZmllck1hcCxcbiAgICAgIGJhc2VVUkwsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHNvcnRlZDogU2NvcGVzID0ge307XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG5vcm1hbGl6ZWQpKSB7XG4gICAgc29ydGVkW2tleV0gPSBzb3J0T2JqZWN0KG5vcm1hbGl6ZWRba2V5XSkgYXMgU3BlY2lmaWVyTWFwO1xuICB9XG4gIHJldHVybiBzb3J0T2JqZWN0KHNvcnRlZCkgYXMgU2NvcGVzO1xufVxuLyogaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9pbXBvcnQtbWFwcy8jbm9ybWFsaXplLWEtc3BlY2lmaWVyLWtleSAqL1xuZnVuY3Rpb24gbm9ybWFsaXplU3BlY2lmaWVyS2V5KFxuICBzcGVjaWZpZXJLZXk6IHN0cmluZyxcbiAgYmFzZVVSTDogVVJMLFxuKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICghc3BlY2lmaWVyS2V5Lmxlbmd0aCkge1xuICAgIGNvbnNvbGUud2FybihcInNwZWNpZmllciBrZXkgY2Fubm90IGJlIGFuIGVtcHR5IHN0cmluZy5cIik7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgdXJsID0gcGFyc2VVcmxMaWtlSW1wb3J0U3BlY2lmaWVyKHNwZWNpZmllcktleSwgYmFzZVVSTCk7XG4gIGlmICh1cmwgIT09IG51bGwpIHtcbiAgICByZXR1cm4gc2VyaWFsaXplVVJMKHVybCk7XG4gIH1cbiAgcmV0dXJuIHNwZWNpZmllcktleTtcbn1cbi8qIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vaW1wb3J0LW1hcHMvI3BhcnNlLWEtdXJsLWxpa2UtaW1wb3J0LXNwZWNpZmllciAqL1xuZnVuY3Rpb24gcGFyc2VVcmxMaWtlSW1wb3J0U3BlY2lmaWVyKFxuICBzcGVjaWZpZXI6IHN0cmluZyxcbiAgYmFzZVVSTDogVVJMLFxuKTogVVJMIHwgbnVsbCB7XG4gIGlmIChcbiAgICBiYXNlVVJMICYmIChzcGVjaWZpZXIuc3RhcnRzV2l0aChcIi9cIikgfHxcbiAgICAgIHNwZWNpZmllci5zdGFydHNXaXRoKFwiLi9cIikgfHxcbiAgICAgIHNwZWNpZmllci5zdGFydHNXaXRoKFwiLi4vXCIpKVxuICApIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChzcGVjaWZpZXIsIGJhc2VVUkwpO1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChzcGVjaWZpZXIpO1xuICAgIHJldHVybiB1cmw7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmNvbnN0IHNwZWNpYWxTY2hlbWVzID0gW1xuICBcImZ0cFwiLFxuICBcImZpbGVcIixcbiAgXCJodHRwXCIsXG4gIFwiaHR0cHNcIixcbiAgXCJ3c1wiLFxuICBcIndzc1wiLFxuXTtcbi8qIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jaXMtc3BlY2lhbCAqL1xuZnVuY3Rpb24gaXNTcGVjaWFsKGFzVVJMOiBVUkwpOiBib29sZWFuIHtcbiAgcmV0dXJuIHNwZWNpYWxTY2hlbWVzLnNvbWUoKHNjaGVtZSkgPT5cbiAgICBzZXJpYWxpemVVUkwoYXNVUkwpLnN0YXJ0c1dpdGgoc2NoZW1lKVxuICApO1xufVxuLyogaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9pbXBvcnQtbWFwcy8jcmVzb2x2ZS1hbi1pbXBvcnRzLW1hdGNoICovXG5mdW5jdGlvbiByZXNvbHZlSW1wb3J0c01hdGNoKFxuICBub3JtYWxpemVkU3BlY2lmaWVyOiBzdHJpbmcsXG4gIGFzVVJMOiBVUkwgfCBudWxsLFxuICBzcGVjaWZpZXJNYXA6IFNwZWNpZmllck1hcCxcbik6IHN0cmluZyB8IG51bGwge1xuICBmb3IgKFxuICAgIGNvbnN0IFtzcGVjaWZpZXJLZXksIHJlc29sdXRpb25SZXN1bHRdIG9mIE9iamVjdC5lbnRyaWVzKHNwZWNpZmllck1hcClcbiAgKSB7XG4gICAgaWYgKHNwZWNpZmllcktleSA9PT0gbm9ybWFsaXplZFNwZWNpZmllcikge1xuICAgICAgaWYgKHJlc29sdXRpb25SZXN1bHQgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBgcmVzb2x1dGlvbiBvZiBzcGVjaWZpZXJLZXkgd2FzIGJsb2NrZWQgYnkgYSBudWxsIGVudHJ5LmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoIWlzVVJMKHJlc29sdXRpb25SZXN1bHQpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYHJlc29sdXRpb25SZXN1bHQgbXVzdCBiZSBhbiBVUkwuYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x1dGlvblJlc3VsdDtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgc3BlY2lmaWVyS2V5LmVuZHNXaXRoKFwiL1wiKSAmJlxuICAgICAgbm9ybWFsaXplZFNwZWNpZmllci5zdGFydHNXaXRoKHNwZWNpZmllcktleSkgJiZcbiAgICAgIChhc1VSTCA9PT0gbnVsbCB8fCBpc1NwZWNpYWwoYXNVUkwpKVxuICAgICkge1xuICAgICAgaWYgKHJlc29sdXRpb25SZXN1bHQgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBgcmVzb2x1dGlvbiBvZiBzcGVjaWZpZXJLZXkgd2FzIGJsb2NrZWQgYnkgYSBudWxsIGVudHJ5LmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoIWlzVVJMKHJlc29sdXRpb25SZXN1bHQpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYHJlc29sdXRpb25SZXN1bHQgbXVzdCBiZSBhbiBVUkwuYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBhZnRlclByZWZpeCA9IG5vcm1hbGl6ZWRTcGVjaWZpZXIuc2xpY2Uoc3BlY2lmaWVyS2V5Lmxlbmd0aCk7XG5cbiAgICAgIGlmICghcmVzb2x1dGlvblJlc3VsdC5lbmRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgcmVzb2x1dGlvblJlc3VsdCBkb2VzIG5vdCBlbmQgd2l0aCBcIi9cImApO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKGFmdGVyUHJlZml4LCByZXNvbHV0aW9uUmVzdWx0KTtcbiAgICAgICAgaWYgKCFpc1VSTCh1cmwpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgdXJsIG11c3QgYmUgYW4gVVJMLmApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VyaWFsaXplVVJMKHVybCkuc3RhcnRzV2l0aChyZXNvbHV0aW9uUmVzdWx0KSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgICBgcmVzb2x1dGlvbiBvZiBub3JtYWxpemVkU3BlY2lmaWVyIHdhcyBibG9ja2VkIGR1ZSB0byBpdCBiYWNrdHJhY2tpbmcgYWJvdmUgaXRzIHByZWZpeCBzcGVjaWZpZXJLZXkuYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXJpYWxpemVVUkwodXJsKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIGByZXNvbHV0aW9uIG9mIG5vcm1hbGl6ZWRTcGVjaWZpZXIgd2FzIGJsb2NrZWQgc2luY2UgdGhlIGFmdGVyUHJlZml4IHBvcnRpb24gY291bGQgbm90IGJlIFVSTC1wYXJzZWQgcmVsYXRpdmUgdG8gdGhlIHJlc29sdXRpb25SZXN1bHQgbWFwcGVkIHRvIGJ5IHRoZSBzcGVjaWZpZXJLZXkgcHJlZml4LmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuLyogaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9pbXBvcnQtbWFwcy8jcGFyc2luZyAqL1xuLy8gZG8gbm90IHBhcnNlIEpTT04gc3RyaW5nIGFzIGRvbmUgaW4gdGhlIHNwZWNzLiBUaGF0IGNhbiBiZSBkb25lIHdpdGggSlNPTi5wYXJzZVxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVJbXBvcnRNYXAoXG4gIGltcG9ydE1hcDogSW1wb3J0TWFwLFxuICBiYXNlVVJMOiBVUkwsXG4pOiBJbXBvcnRNYXAge1xuICBsZXQgc29ydGVkQW5kTm9ybWFsaXplZEltcG9ydHMgPSB7fTtcbiAgaWYgKCFpc0ltcG9ydE1hcChpbXBvcnRNYXApKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgdGhlIHRvcC1sZXZlbCB2YWx1ZSBuZWVkcyB0byBiZSBhIEpTT04gb2JqZWN0LmApO1xuICB9XG4gIGNvbnN0IHsgaW1wb3J0cywgc2NvcGVzIH0gPSBpbXBvcnRNYXA7XG4gIGlmIChpbXBvcnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIWlzSW1wb3J0cyhpbXBvcnRzKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgXCJpbXBvcnRzXCIgdG9wLWxldmVsIGtleSBuZWVkcyB0byBiZSBhbiBvYmplY3QuYCk7XG4gICAgfVxuICAgIHNvcnRlZEFuZE5vcm1hbGl6ZWRJbXBvcnRzID0gc29ydEFuZE5vcm1hbGl6ZVNwZWNpZmllck1hcChcbiAgICAgIGltcG9ydHMsXG4gICAgICBiYXNlVVJMLFxuICAgICk7XG4gIH1cbiAgbGV0IHNvcnRlZEFuZE5vcm1hbGl6ZWRTY29wZXMgPSB7fTtcbiAgaWYgKHNjb3BlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFpc1Njb3BlcyhzY29wZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBcInNjb3Blc1wiIHRvcC1sZXZlbCBrZXkgbmVlZHMgdG8gYmUgYW4gb2JqZWN0LmApO1xuICAgIH1cbiAgICBzb3J0ZWRBbmROb3JtYWxpemVkU2NvcGVzID0gc29ydEFuZE5vcm1hbGl6ZVNjb3BlcyhcbiAgICAgIHNjb3BlcyxcbiAgICAgIGJhc2VVUkwsXG4gICAgKTtcbiAgfVxuICBpZiAoXG4gICAgT2JqZWN0LmtleXMoaW1wb3J0TWFwKS5maW5kKChrZXkpID0+IGtleSAhPT0gXCJpbXBvcnRzXCIgJiYga2V5ICE9PSBcInNjb3Blc1wiKVxuICApIHtcbiAgICBjb25zb2xlLndhcm4oYGFuIGludmFsaWQgdG9wLWxldmVsIGtleSB3YXMgcHJlc2VudCBpbiB0aGUgaW1wb3J0IG1hcC5gKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGltcG9ydHM6IHNvcnRlZEFuZE5vcm1hbGl6ZWRJbXBvcnRzLFxuICAgIHNjb3Blczogc29ydGVkQW5kTm9ybWFsaXplZFNjb3BlcyxcbiAgfTtcbn1cbi8qIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vaW1wb3J0LW1hcHMvI25ldy1yZXNvbHZlLWFsZ29yaXRobSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVNb2R1bGVTcGVjaWZpZXIoXG4gIHNwZWNpZmllcjogc3RyaW5nLFxuICB7IGltcG9ydHMgPSB7fSwgc2NvcGVzID0ge30gfTogSW1wb3J0TWFwLFxuICBiYXNlVVJMOiBVUkwsXG4pOiBzdHJpbmcge1xuICBjb25zdCBiYXNlVVJMU3RyaW5nID0gc2VyaWFsaXplVVJMKGJhc2VVUkwpO1xuICBjb25zdCBhc1VSTCA9IHBhcnNlVXJsTGlrZUltcG9ydFNwZWNpZmllcihzcGVjaWZpZXIsIGJhc2VVUkwpO1xuICBjb25zdCBub3JtYWxpemVkU3BlY2lmaWVyID0gYXNVUkwgIT09IG51bGwgPyBzZXJpYWxpemVVUkwoYXNVUkwpIDogc3BlY2lmaWVyO1xuICBmb3IgKGNvbnN0IFtzY29wZVByZWZpeCwgc2NvcGVJbXBvcnRzXSBvZiBPYmplY3QuZW50cmllcyhzY29wZXMpKSB7XG4gICAgaWYgKFxuICAgICAgc2NvcGVQcmVmaXggPT09IGJhc2VVUkxTdHJpbmcgfHxcbiAgICAgIChzY29wZVByZWZpeC5lbmRzV2l0aChcIi9cIikgJiYgYmFzZVVSTFN0cmluZy5zdGFydHNXaXRoKHNjb3BlUHJlZml4KSlcbiAgICApIHtcbiAgICAgIGNvbnN0IHNjb3BlSW1wb3J0c01hdGNoID0gcmVzb2x2ZUltcG9ydHNNYXRjaChcbiAgICAgICAgbm9ybWFsaXplZFNwZWNpZmllcixcbiAgICAgICAgYXNVUkwsXG4gICAgICAgIHNjb3BlSW1wb3J0cyxcbiAgICAgICk7XG4gICAgICBpZiAoc2NvcGVJbXBvcnRzTWF0Y2ggIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHNjb3BlSW1wb3J0c01hdGNoO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHRvcExldmVsSW1wb3J0c01hdGNoID0gcmVzb2x2ZUltcG9ydHNNYXRjaChcbiAgICBub3JtYWxpemVkU3BlY2lmaWVyLFxuICAgIGFzVVJMLFxuICAgIGltcG9ydHMsXG4gICk7XG5cbiAgaWYgKHRvcExldmVsSW1wb3J0c01hdGNoICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRvcExldmVsSW1wb3J0c01hdGNoO1xuICB9XG5cbiAgaWYgKGFzVVJMICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZVVSTChhc1VSTCk7XG4gIH1cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICBgc3BlY2lmaWVyIHdhcyBhIGJhcmUgc3BlY2lmaWVyLCBidXQgd2FzIG5vdCByZW1hcHBlZCB0byBhbnl0aGluZyBieSBpbXBvcnRNYXAuYCxcbiAgKTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5leHBvcnQgdHlwZSBPU1R5cGUgPSBcIndpbmRvd3NcIiB8IFwibGludXhcIiB8IFwiZGFyd2luXCI7XG5cbmV4cG9ydCBjb25zdCBvc1R5cGU6IE9TVHlwZSA9ICgoKSA9PiB7XG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gIGNvbnN0IHsgRGVubyB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gIGlmICh0eXBlb2YgRGVubz8uYnVpbGQ/Lm9zID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIERlbm8uYnVpbGQub3M7XG4gIH1cblxuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICBjb25zdCB7IG5hdmlnYXRvciB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gIGlmIChuYXZpZ2F0b3I/LmFwcFZlcnNpb24/LmluY2x1ZGVzPy4oXCJXaW5cIikpIHtcbiAgICByZXR1cm4gXCJ3aW5kb3dzXCI7XG4gIH1cblxuICByZXR1cm4gXCJsaW51eFwiO1xufSkoKTtcblxuZXhwb3J0IGNvbnN0IGlzV2luZG93cyA9IG9zVHlwZSA9PT0gXCJ3aW5kb3dzXCI7XG5leHBvcnQgY29uc3QgaXNMaW51eCA9IG9zVHlwZSA9PT0gXCJsaW51eFwiO1xuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgdGhlIEJyb3dzZXJpZnkgYXV0aG9ycy4gTUlUIExpY2Vuc2UuXG4vLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYnJvd3NlcmlmeS9wYXRoLWJyb3dzZXJpZnkvXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB0eXBlIHsgRm9ybWF0SW5wdXRQYXRoT2JqZWN0LCBQYXJzZWRQYXRoIH0gZnJvbSBcIi4vX2ludGVyZmFjZS50c1wiO1xuaW1wb3J0IHtcbiAgQ0hBUl9CQUNLV0FSRF9TTEFTSCxcbiAgQ0hBUl9DT0xPTixcbiAgQ0hBUl9ET1QsXG4gIENIQVJfUVVFU1RJT05fTUFSSyxcbn0gZnJvbSBcIi4vX2NvbnN0YW50cy50c1wiO1xuXG5pbXBvcnQge1xuICBfZm9ybWF0LFxuICBhc3NlcnRQYXRoLFxuICBlbmNvZGVXaGl0ZXNwYWNlLFxuICBpc1BhdGhTZXBhcmF0b3IsXG4gIGlzV2luZG93c0RldmljZVJvb3QsXG4gIG5vcm1hbGl6ZVN0cmluZyxcbn0gZnJvbSBcIi4vX3V0aWwudHNcIjtcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gXCIuLi9fdXRpbC9hc3NlcnQudHNcIjtcblxuZXhwb3J0IGNvbnN0IHNlcCA9IFwiXFxcXFwiO1xuZXhwb3J0IGNvbnN0IGRlbGltaXRlciA9IFwiO1wiO1xuXG4vKipcbiAqIFJlc29sdmVzIHBhdGggc2VnbWVudHMgaW50byBhIGBwYXRoYFxuICogQHBhcmFtIHBhdGhTZWdtZW50cyB0byBwcm9jZXNzIHRvIHBhdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUoLi4ucGF0aFNlZ21lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGxldCByZXNvbHZlZERldmljZSA9IFwiXCI7XG4gIGxldCByZXNvbHZlZFRhaWwgPSBcIlwiO1xuICBsZXQgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlO1xuXG4gIGZvciAobGV0IGkgPSBwYXRoU2VnbWVudHMubGVuZ3RoIC0gMTsgaSA+PSAtMTsgaS0tKSB7XG4gICAgbGV0IHBhdGg6IHN0cmluZztcbiAgICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IHsgRGVubyB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gICAgaWYgKGkgPj0gMCkge1xuICAgICAgcGF0aCA9IHBhdGhTZWdtZW50c1tpXTtcbiAgICB9IGVsc2UgaWYgKCFyZXNvbHZlZERldmljZSkge1xuICAgICAgaWYgKHR5cGVvZiBEZW5vPy5jd2QgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUmVzb2x2ZWQgYSBkcml2ZS1sZXR0ZXItbGVzcyBwYXRoIHdpdGhvdXQgYSBDV0QuXCIpO1xuICAgICAgfVxuICAgICAgcGF0aCA9IERlbm8uY3dkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIERlbm8/LmVudj8uZ2V0ICE9PSBcImZ1bmN0aW9uXCIgfHwgdHlwZW9mIERlbm8/LmN3ZCAhPT0gXCJmdW5jdGlvblwiXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlJlc29sdmVkIGEgcmVsYXRpdmUgcGF0aCB3aXRob3V0IGEgQ1dELlwiKTtcbiAgICAgIH1cbiAgICAgIHBhdGggPSBEZW5vLmN3ZCgpO1xuXG4gICAgICAvLyBWZXJpZnkgdGhhdCBhIGN3ZCB3YXMgZm91bmQgYW5kIHRoYXQgaXQgYWN0dWFsbHkgcG9pbnRzXG4gICAgICAvLyB0byBvdXIgZHJpdmUuIElmIG5vdCwgZGVmYXVsdCB0byB0aGUgZHJpdmUncyByb290LlxuICAgICAgaWYgKFxuICAgICAgICBwYXRoID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgcGF0aC5zbGljZSgwLCAzKS50b0xvd2VyQ2FzZSgpICE9PSBgJHtyZXNvbHZlZERldmljZS50b0xvd2VyQ2FzZSgpfVxcXFxgXG4gICAgICApIHtcbiAgICAgICAgcGF0aCA9IGAke3Jlc29sdmVkRGV2aWNlfVxcXFxgO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aDtcblxuICAgIC8vIFNraXAgZW1wdHkgZW50cmllc1xuICAgIGlmIChsZW4gPT09IDApIGNvbnRpbnVlO1xuXG4gICAgbGV0IHJvb3RFbmQgPSAwO1xuICAgIGxldCBkZXZpY2UgPSBcIlwiO1xuICAgIGxldCBpc0Fic29sdXRlID0gZmFsc2U7XG4gICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcblxuICAgIC8vIFRyeSB0byBtYXRjaCBhIHJvb3RcbiAgICBpZiAobGVuID4gMSkge1xuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgICAvLyBQb3NzaWJsZSBVTkMgcm9vdFxuXG4gICAgICAgIC8vIElmIHdlIHN0YXJ0ZWQgd2l0aCBhIHNlcGFyYXRvciwgd2Uga25vdyB3ZSBhdCBsZWFzdCBoYXZlIGFuXG4gICAgICAgIC8vIGFic29sdXRlIHBhdGggb2Ygc29tZSBraW5kIChVTkMgb3Igb3RoZXJ3aXNlKVxuICAgICAgICBpc0Fic29sdXRlID0gdHJ1ZTtcblxuICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgxKSkpIHtcbiAgICAgICAgICAvLyBNYXRjaGVkIGRvdWJsZSBwYXRoIHNlcGFyYXRvciBhdCBiZWdpbm5pbmdcbiAgICAgICAgICBsZXQgaiA9IDI7XG4gICAgICAgICAgbGV0IGxhc3QgPSBqO1xuICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RQYXJ0ID0gcGF0aC5zbGljZShsYXN0LCBqKTtcbiAgICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgICBsYXN0ID0gajtcbiAgICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBwYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgICAgaWYgKCFpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgICAgIGxhc3QgPSBqO1xuICAgICAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoaiA9PT0gbGVuKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyByb290IG9ubHlcbiAgICAgICAgICAgICAgICBkZXZpY2UgPSBgXFxcXFxcXFwke2ZpcnN0UGFydH1cXFxcJHtwYXRoLnNsaWNlKGxhc3QpfWA7XG4gICAgICAgICAgICAgICAgcm9vdEVuZCA9IGo7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcm9vdCB3aXRoIGxlZnRvdmVyc1xuXG4gICAgICAgICAgICAgICAgZGV2aWNlID0gYFxcXFxcXFxcJHtmaXJzdFBhcnR9XFxcXCR7cGF0aC5zbGljZShsYXN0LCBqKX1gO1xuICAgICAgICAgICAgICAgIHJvb3RFbmQgPSBqO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJvb3RFbmQgPSAxO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzV2luZG93c0RldmljZVJvb3QoY29kZSkpIHtcbiAgICAgICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgICAgZGV2aWNlID0gcGF0aC5zbGljZSgwLCAyKTtcbiAgICAgICAgICByb290RW5kID0gMjtcbiAgICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMikpKSB7XG4gICAgICAgICAgICAgIC8vIFRyZWF0IHNlcGFyYXRvciBmb2xsb3dpbmcgZHJpdmUgbmFtZSBhcyBhbiBhYnNvbHV0ZSBwYXRoXG4gICAgICAgICAgICAgIC8vIGluZGljYXRvclxuICAgICAgICAgICAgICBpc0Fic29sdXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgcm9vdEVuZCA9IDM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAgIC8vIGBwYXRoYCBjb250YWlucyBqdXN0IGEgcGF0aCBzZXBhcmF0b3JcbiAgICAgIHJvb3RFbmQgPSAxO1xuICAgICAgaXNBYnNvbHV0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZGV2aWNlLmxlbmd0aCA+IDAgJiZcbiAgICAgIHJlc29sdmVkRGV2aWNlLmxlbmd0aCA+IDAgJiZcbiAgICAgIGRldmljZS50b0xvd2VyQ2FzZSgpICE9PSByZXNvbHZlZERldmljZS50b0xvd2VyQ2FzZSgpXG4gICAgKSB7XG4gICAgICAvLyBUaGlzIHBhdGggcG9pbnRzIHRvIGFub3RoZXIgZGV2aWNlIHNvIGl0IGlzIG5vdCBhcHBsaWNhYmxlXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAocmVzb2x2ZWREZXZpY2UubGVuZ3RoID09PSAwICYmIGRldmljZS5sZW5ndGggPiAwKSB7XG4gICAgICByZXNvbHZlZERldmljZSA9IGRldmljZTtcbiAgICB9XG4gICAgaWYgKCFyZXNvbHZlZEFic29sdXRlKSB7XG4gICAgICByZXNvbHZlZFRhaWwgPSBgJHtwYXRoLnNsaWNlKHJvb3RFbmQpfVxcXFwke3Jlc29sdmVkVGFpbH1gO1xuICAgICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IGlzQWJzb2x1dGU7XG4gICAgfVxuXG4gICAgaWYgKHJlc29sdmVkQWJzb2x1dGUgJiYgcmVzb2x2ZWREZXZpY2UubGVuZ3RoID4gMCkgYnJlYWs7XG4gIH1cblxuICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCxcbiAgLy8gYnV0IGhhbmRsZSByZWxhdGl2ZSBwYXRocyB0byBiZSBzYWZlIChtaWdodCBoYXBwZW4gd2hlbiBwcm9jZXNzLmN3ZCgpXG4gIC8vIGZhaWxzKVxuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgdGFpbCBwYXRoXG4gIHJlc29sdmVkVGFpbCA9IG5vcm1hbGl6ZVN0cmluZyhcbiAgICByZXNvbHZlZFRhaWwsXG4gICAgIXJlc29sdmVkQWJzb2x1dGUsXG4gICAgXCJcXFxcXCIsXG4gICAgaXNQYXRoU2VwYXJhdG9yLFxuICApO1xuXG4gIHJldHVybiByZXNvbHZlZERldmljZSArIChyZXNvbHZlZEFic29sdXRlID8gXCJcXFxcXCIgOiBcIlwiKSArIHJlc29sdmVkVGFpbCB8fCBcIi5cIjtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgYHBhdGhgXG4gKiBAcGFyYW0gcGF0aCB0byBub3JtYWxpemVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIFwiLlwiO1xuICBsZXQgcm9vdEVuZCA9IDA7XG4gIGxldCBkZXZpY2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbGV0IGlzQWJzb2x1dGUgPSBmYWxzZTtcbiAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcblxuICAvLyBUcnkgdG8gbWF0Y2ggYSByb290XG4gIGlmIChsZW4gPiAxKSB7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gUG9zc2libGUgVU5DIHJvb3RcblxuICAgICAgLy8gSWYgd2Ugc3RhcnRlZCB3aXRoIGEgc2VwYXJhdG9yLCB3ZSBrbm93IHdlIGF0IGxlYXN0IGhhdmUgYW4gYWJzb2x1dGVcbiAgICAgIC8vIHBhdGggb2Ygc29tZSBraW5kIChVTkMgb3Igb3RoZXJ3aXNlKVxuICAgICAgaXNBYnNvbHV0ZSA9IHRydWU7XG5cbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDEpKSkge1xuICAgICAgICAvLyBNYXRjaGVkIGRvdWJsZSBwYXRoIHNlcGFyYXRvciBhdCBiZWdpbm5pbmdcbiAgICAgICAgbGV0IGogPSAyO1xuICAgICAgICBsZXQgbGFzdCA9IGo7XG4gICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHtcbiAgICAgICAgICBjb25zdCBmaXJzdFBhcnQgPSBwYXRoLnNsaWNlKGxhc3QsIGopO1xuICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIHBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgIGlmICghaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAvLyBNYXRjaGVkIVxuICAgICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGogPT09IGxlbikge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgb25seVxuICAgICAgICAgICAgICAvLyBSZXR1cm4gdGhlIG5vcm1hbGl6ZWQgdmVyc2lvbiBvZiB0aGUgVU5DIHJvb3Qgc2luY2UgdGhlcmVcbiAgICAgICAgICAgICAgLy8gaXMgbm90aGluZyBsZWZ0IHRvIHByb2Nlc3NcblxuICAgICAgICAgICAgICByZXR1cm4gYFxcXFxcXFxcJHtmaXJzdFBhcnR9XFxcXCR7cGF0aC5zbGljZShsYXN0KX1cXFxcYDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgd2l0aCBsZWZ0b3ZlcnNcblxuICAgICAgICAgICAgICBkZXZpY2UgPSBgXFxcXFxcXFwke2ZpcnN0UGFydH1cXFxcJHtwYXRoLnNsaWNlKGxhc3QsIGopfWA7XG4gICAgICAgICAgICAgIHJvb3RFbmQgPSBqO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm9vdEVuZCA9IDE7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBkZXZpY2Ugcm9vdFxuXG4gICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgIGRldmljZSA9IHBhdGguc2xpY2UoMCwgMik7XG4gICAgICAgIHJvb3RFbmQgPSAyO1xuICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkge1xuICAgICAgICAgICAgLy8gVHJlYXQgc2VwYXJhdG9yIGZvbGxvd2luZyBkcml2ZSBuYW1lIGFzIGFuIGFic29sdXRlIHBhdGhcbiAgICAgICAgICAgIC8vIGluZGljYXRvclxuICAgICAgICAgICAgaXNBYnNvbHV0ZSA9IHRydWU7XG4gICAgICAgICAgICByb290RW5kID0gMztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgLy8gYHBhdGhgIGNvbnRhaW5zIGp1c3QgYSBwYXRoIHNlcGFyYXRvciwgZXhpdCBlYXJseSB0byBhdm9pZCB1bm5lY2Vzc2FyeVxuICAgIC8vIHdvcmtcbiAgICByZXR1cm4gXCJcXFxcXCI7XG4gIH1cblxuICBsZXQgdGFpbDogc3RyaW5nO1xuICBpZiAocm9vdEVuZCA8IGxlbikge1xuICAgIHRhaWwgPSBub3JtYWxpemVTdHJpbmcoXG4gICAgICBwYXRoLnNsaWNlKHJvb3RFbmQpLFxuICAgICAgIWlzQWJzb2x1dGUsXG4gICAgICBcIlxcXFxcIixcbiAgICAgIGlzUGF0aFNlcGFyYXRvcixcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHRhaWwgPSBcIlwiO1xuICB9XG4gIGlmICh0YWlsLmxlbmd0aCA9PT0gMCAmJiAhaXNBYnNvbHV0ZSkgdGFpbCA9IFwiLlwiO1xuICBpZiAodGFpbC5sZW5ndGggPiAwICYmIGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQobGVuIC0gMSkpKSB7XG4gICAgdGFpbCArPSBcIlxcXFxcIjtcbiAgfVxuICBpZiAoZGV2aWNlID09PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoaXNBYnNvbHV0ZSkge1xuICAgICAgaWYgKHRhaWwubGVuZ3RoID4gMCkgcmV0dXJuIGBcXFxcJHt0YWlsfWA7XG4gICAgICBlbHNlIHJldHVybiBcIlxcXFxcIjtcbiAgICB9IGVsc2UgaWYgKHRhaWwubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRhaWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc0Fic29sdXRlKSB7XG4gICAgaWYgKHRhaWwubGVuZ3RoID4gMCkgcmV0dXJuIGAke2RldmljZX1cXFxcJHt0YWlsfWA7XG4gICAgZWxzZSByZXR1cm4gYCR7ZGV2aWNlfVxcXFxgO1xuICB9IGVsc2UgaWYgKHRhaWwubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBkZXZpY2UgKyB0YWlsO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkZXZpY2U7XG4gIH1cbn1cblxuLyoqXG4gKiBWZXJpZmllcyB3aGV0aGVyIHBhdGggaXMgYWJzb2x1dGVcbiAqIEBwYXJhbSBwYXRoIHRvIHZlcmlmeVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBYnNvbHV0ZShwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcbiAgY29uc3QgbGVuID0gcGF0aC5sZW5ndGg7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNXaW5kb3dzRGV2aWNlUm9vdChjb2RlKSkge1xuICAgIC8vIFBvc3NpYmxlIGRldmljZSByb290XG5cbiAgICBpZiAobGVuID4gMiAmJiBwYXRoLmNoYXJDb2RlQXQoMSkgPT09IENIQVJfQ09MT04pIHtcbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBKb2luIGFsbCBnaXZlbiBhIHNlcXVlbmNlIG9mIGBwYXRoc2AsdGhlbiBub3JtYWxpemVzIHRoZSByZXN1bHRpbmcgcGF0aC5cbiAqIEBwYXJhbSBwYXRocyB0byBiZSBqb2luZWQgYW5kIG5vcm1hbGl6ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpvaW4oLi4ucGF0aHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgY29uc3QgcGF0aHNDb3VudCA9IHBhdGhzLmxlbmd0aDtcbiAgaWYgKHBhdGhzQ291bnQgPT09IDApIHJldHVybiBcIi5cIjtcblxuICBsZXQgam9pbmVkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxldCBmaXJzdFBhcnQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGhzQ291bnQ7ICsraSkge1xuICAgIGNvbnN0IHBhdGggPSBwYXRoc1tpXTtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChqb2luZWQgPT09IHVuZGVmaW5lZCkgam9pbmVkID0gZmlyc3RQYXJ0ID0gcGF0aDtcbiAgICAgIGVsc2Ugam9pbmVkICs9IGBcXFxcJHtwYXRofWA7XG4gICAgfVxuICB9XG5cbiAgaWYgKGpvaW5lZCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gXCIuXCI7XG5cbiAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGpvaW5lZCBwYXRoIGRvZXNuJ3Qgc3RhcnQgd2l0aCB0d28gc2xhc2hlcywgYmVjYXVzZVxuICAvLyBub3JtYWxpemUoKSB3aWxsIG1pc3Rha2UgaXQgZm9yIGFuIFVOQyBwYXRoIHRoZW4uXG4gIC8vXG4gIC8vIFRoaXMgc3RlcCBpcyBza2lwcGVkIHdoZW4gaXQgaXMgdmVyeSBjbGVhciB0aGF0IHRoZSB1c2VyIGFjdHVhbGx5XG4gIC8vIGludGVuZGVkIHRvIHBvaW50IGF0IGFuIFVOQyBwYXRoLiBUaGlzIGlzIGFzc3VtZWQgd2hlbiB0aGUgZmlyc3RcbiAgLy8gbm9uLWVtcHR5IHN0cmluZyBhcmd1bWVudHMgc3RhcnRzIHdpdGggZXhhY3RseSB0d28gc2xhc2hlcyBmb2xsb3dlZCBieVxuICAvLyBhdCBsZWFzdCBvbmUgbW9yZSBub24tc2xhc2ggY2hhcmFjdGVyLlxuICAvL1xuICAvLyBOb3RlIHRoYXQgZm9yIG5vcm1hbGl6ZSgpIHRvIHRyZWF0IGEgcGF0aCBhcyBhbiBVTkMgcGF0aCBpdCBuZWVkcyB0b1xuICAvLyBoYXZlIGF0IGxlYXN0IDIgY29tcG9uZW50cywgc28gd2UgZG9uJ3QgZmlsdGVyIGZvciB0aGF0IGhlcmUuXG4gIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGUgdXNlciBjYW4gdXNlIGpvaW4gdG8gY29uc3RydWN0IFVOQyBwYXRocyBmcm9tXG4gIC8vIGEgc2VydmVyIG5hbWUgYW5kIGEgc2hhcmUgbmFtZTsgZm9yIGV4YW1wbGU6XG4gIC8vICAgcGF0aC5qb2luKCcvL3NlcnZlcicsICdzaGFyZScpIC0+ICdcXFxcXFxcXHNlcnZlclxcXFxzaGFyZVxcXFwnKVxuICBsZXQgbmVlZHNSZXBsYWNlID0gdHJ1ZTtcbiAgbGV0IHNsYXNoQ291bnQgPSAwO1xuICBhc3NlcnQoZmlyc3RQYXJ0ICE9IG51bGwpO1xuICBpZiAoaXNQYXRoU2VwYXJhdG9yKGZpcnN0UGFydC5jaGFyQ29kZUF0KDApKSkge1xuICAgICsrc2xhc2hDb3VudDtcbiAgICBjb25zdCBmaXJzdExlbiA9IGZpcnN0UGFydC5sZW5ndGg7XG4gICAgaWYgKGZpcnN0TGVuID4gMSkge1xuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihmaXJzdFBhcnQuY2hhckNvZGVBdCgxKSkpIHtcbiAgICAgICAgKytzbGFzaENvdW50O1xuICAgICAgICBpZiAoZmlyc3RMZW4gPiAyKSB7XG4gICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihmaXJzdFBhcnQuY2hhckNvZGVBdCgyKSkpICsrc2xhc2hDb3VudDtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcGF0aCBpbiB0aGUgZmlyc3QgcGFydFxuICAgICAgICAgICAgbmVlZHNSZXBsYWNlID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChuZWVkc1JlcGxhY2UpIHtcbiAgICAvLyBGaW5kIGFueSBtb3JlIGNvbnNlY3V0aXZlIHNsYXNoZXMgd2UgbmVlZCB0byByZXBsYWNlXG4gICAgZm9yICg7IHNsYXNoQ291bnQgPCBqb2luZWQubGVuZ3RoOyArK3NsYXNoQ291bnQpIHtcbiAgICAgIGlmICghaXNQYXRoU2VwYXJhdG9yKGpvaW5lZC5jaGFyQ29kZUF0KHNsYXNoQ291bnQpKSkgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gUmVwbGFjZSB0aGUgc2xhc2hlcyBpZiBuZWVkZWRcbiAgICBpZiAoc2xhc2hDb3VudCA+PSAyKSBqb2luZWQgPSBgXFxcXCR7am9pbmVkLnNsaWNlKHNsYXNoQ291bnQpfWA7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplKGpvaW5lZCk7XG59XG5cbi8qKlxuICogSXQgd2lsbCBzb2x2ZSB0aGUgcmVsYXRpdmUgcGF0aCBmcm9tIGBmcm9tYCB0byBgdG9gLCBmb3IgaW5zdGFuY2U6XG4gKiAgZnJvbSA9ICdDOlxcXFxvcmFuZGVhXFxcXHRlc3RcXFxcYWFhJ1xuICogIHRvID0gJ0M6XFxcXG9yYW5kZWFcXFxcaW1wbFxcXFxiYmInXG4gKiBUaGUgb3V0cHV0IG9mIHRoZSBmdW5jdGlvbiBzaG91bGQgYmU6ICcuLlxcXFwuLlxcXFxpbXBsXFxcXGJiYidcbiAqIEBwYXJhbSBmcm9tIHJlbGF0aXZlIHBhdGhcbiAqIEBwYXJhbSB0byByZWxhdGl2ZSBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWxhdGl2ZShmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRQYXRoKGZyb20pO1xuICBhc3NlcnRQYXRoKHRvKTtcblxuICBpZiAoZnJvbSA9PT0gdG8pIHJldHVybiBcIlwiO1xuXG4gIGNvbnN0IGZyb21PcmlnID0gcmVzb2x2ZShmcm9tKTtcbiAgY29uc3QgdG9PcmlnID0gcmVzb2x2ZSh0byk7XG5cbiAgaWYgKGZyb21PcmlnID09PSB0b09yaWcpIHJldHVybiBcIlwiO1xuXG4gIGZyb20gPSBmcm9tT3JpZy50b0xvd2VyQ2FzZSgpO1xuICB0byA9IHRvT3JpZy50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmIChmcm9tID09PSB0bykgcmV0dXJuIFwiXCI7XG5cbiAgLy8gVHJpbSBhbnkgbGVhZGluZyBiYWNrc2xhc2hlc1xuICBsZXQgZnJvbVN0YXJ0ID0gMDtcbiAgbGV0IGZyb21FbmQgPSBmcm9tLmxlbmd0aDtcbiAgZm9yICg7IGZyb21TdGFydCA8IGZyb21FbmQ7ICsrZnJvbVN0YXJ0KSB7XG4gICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQpICE9PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSBicmVhaztcbiAgfVxuICAvLyBUcmltIHRyYWlsaW5nIGJhY2tzbGFzaGVzIChhcHBsaWNhYmxlIHRvIFVOQyBwYXRocyBvbmx5KVxuICBmb3IgKDsgZnJvbUVuZCAtIDEgPiBmcm9tU3RhcnQ7IC0tZnJvbUVuZCkge1xuICAgIGlmIChmcm9tLmNoYXJDb2RlQXQoZnJvbUVuZCAtIDEpICE9PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSBicmVhaztcbiAgfVxuICBjb25zdCBmcm9tTGVuID0gZnJvbUVuZCAtIGZyb21TdGFydDtcblxuICAvLyBUcmltIGFueSBsZWFkaW5nIGJhY2tzbGFzaGVzXG4gIGxldCB0b1N0YXJ0ID0gMDtcbiAgbGV0IHRvRW5kID0gdG8ubGVuZ3RoO1xuICBmb3IgKDsgdG9TdGFydCA8IHRvRW5kOyArK3RvU3RhcnQpIHtcbiAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSAhPT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkgYnJlYWs7XG4gIH1cbiAgLy8gVHJpbSB0cmFpbGluZyBiYWNrc2xhc2hlcyAoYXBwbGljYWJsZSB0byBVTkMgcGF0aHMgb25seSlcbiAgZm9yICg7IHRvRW5kIC0gMSA+IHRvU3RhcnQ7IC0tdG9FbmQpIHtcbiAgICBpZiAodG8uY2hhckNvZGVBdCh0b0VuZCAtIDEpICE9PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSBicmVhaztcbiAgfVxuICBjb25zdCB0b0xlbiA9IHRvRW5kIC0gdG9TdGFydDtcblxuICAvLyBDb21wYXJlIHBhdGhzIHRvIGZpbmQgdGhlIGxvbmdlc3QgY29tbW9uIHBhdGggZnJvbSByb290XG4gIGNvbnN0IGxlbmd0aCA9IGZyb21MZW4gPCB0b0xlbiA/IGZyb21MZW4gOiB0b0xlbjtcbiAgbGV0IGxhc3RDb21tb25TZXAgPSAtMTtcbiAgbGV0IGkgPSAwO1xuICBmb3IgKDsgaSA8PSBsZW5ndGg7ICsraSkge1xuICAgIGlmIChpID09PSBsZW5ndGgpIHtcbiAgICAgIGlmICh0b0xlbiA+IGxlbmd0aCkge1xuICAgICAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0ICsgaSkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYHRvYC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nQzpcXFxcZm9vXFxcXGJhcic7IHRvPSdDOlxcXFxmb29cXFxcYmFyXFxcXGJheidcbiAgICAgICAgICByZXR1cm4gdG9PcmlnLnNsaWNlKHRvU3RhcnQgKyBpICsgMSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMikge1xuICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGBmcm9tYCBpcyB0aGUgZGV2aWNlIHJvb3QuXG4gICAgICAgICAgLy8gRm9yIGV4YW1wbGU6IGZyb209J0M6XFxcXCc7IHRvPSdDOlxcXFxmb28nXG4gICAgICAgICAgcmV0dXJuIHRvT3JpZy5zbGljZSh0b1N0YXJ0ICsgaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmcm9tTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgIGlmIChmcm9tLmNoYXJDb2RlQXQoZnJvbVN0YXJ0ICsgaSkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgdG9gIGlzIHRoZSBleGFjdCBiYXNlIHBhdGggZm9yIGBmcm9tYC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nQzpcXFxcZm9vXFxcXGJhcic7IHRvPSdDOlxcXFxmb28nXG4gICAgICAgICAgbGFzdENvbW1vblNlcCA9IGk7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMikge1xuICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGB0b2AgaXMgdGhlIGRldmljZSByb290LlxuICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPSdDOlxcXFxmb29cXFxcYmFyJzsgdG89J0M6XFxcXCdcbiAgICAgICAgICBsYXN0Q29tbW9uU2VwID0gMztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IGZyb21Db2RlID0gZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCArIGkpO1xuICAgIGNvbnN0IHRvQ29kZSA9IHRvLmNoYXJDb2RlQXQodG9TdGFydCArIGkpO1xuICAgIGlmIChmcm9tQ29kZSAhPT0gdG9Db2RlKSBicmVhaztcbiAgICBlbHNlIGlmIChmcm9tQ29kZSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkgbGFzdENvbW1vblNlcCA9IGk7XG4gIH1cblxuICAvLyBXZSBmb3VuZCBhIG1pc21hdGNoIGJlZm9yZSB0aGUgZmlyc3QgY29tbW9uIHBhdGggc2VwYXJhdG9yIHdhcyBzZWVuLCBzb1xuICAvLyByZXR1cm4gdGhlIG9yaWdpbmFsIGB0b2AuXG4gIGlmIChpICE9PSBsZW5ndGggJiYgbGFzdENvbW1vblNlcCA9PT0gLTEpIHtcbiAgICByZXR1cm4gdG9PcmlnO1xuICB9XG5cbiAgbGV0IG91dCA9IFwiXCI7XG4gIGlmIChsYXN0Q29tbW9uU2VwID09PSAtMSkgbGFzdENvbW1vblNlcCA9IDA7XG4gIC8vIEdlbmVyYXRlIHRoZSByZWxhdGl2ZSBwYXRoIGJhc2VkIG9uIHRoZSBwYXRoIGRpZmZlcmVuY2UgYmV0d2VlbiBgdG9gIGFuZFxuICAvLyBgZnJvbWBcbiAgZm9yIChpID0gZnJvbVN0YXJ0ICsgbGFzdENvbW1vblNlcCArIDE7IGkgPD0gZnJvbUVuZDsgKytpKSB7XG4gICAgaWYgKGkgPT09IGZyb21FbmQgfHwgZnJvbS5jaGFyQ29kZUF0KGkpID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7XG4gICAgICBpZiAob3V0Lmxlbmd0aCA9PT0gMCkgb3V0ICs9IFwiLi5cIjtcbiAgICAgIGVsc2Ugb3V0ICs9IFwiXFxcXC4uXCI7XG4gICAgfVxuICB9XG5cbiAgLy8gTGFzdGx5LCBhcHBlbmQgdGhlIHJlc3Qgb2YgdGhlIGRlc3RpbmF0aW9uIChgdG9gKSBwYXRoIHRoYXQgY29tZXMgYWZ0ZXJcbiAgLy8gdGhlIGNvbW1vbiBwYXRoIHBhcnRzXG4gIGlmIChvdXQubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBvdXQgKyB0b09yaWcuc2xpY2UodG9TdGFydCArIGxhc3RDb21tb25TZXAsIHRvRW5kKTtcbiAgfSBlbHNlIHtcbiAgICB0b1N0YXJ0ICs9IGxhc3RDb21tb25TZXA7XG4gICAgaWYgKHRvT3JpZy5jaGFyQ29kZUF0KHRvU3RhcnQpID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSArK3RvU3RhcnQ7XG4gICAgcmV0dXJuIHRvT3JpZy5zbGljZSh0b1N0YXJ0LCB0b0VuZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBwYXRoIHRvIGEgbmFtZXNwYWNlIHBhdGhcbiAqIEBwYXJhbSBwYXRoIHRvIHJlc29sdmUgdG8gbmFtZXNwYWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b05hbWVzcGFjZWRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIE5vdGU6IHRoaXMgd2lsbCAqcHJvYmFibHkqIHRocm93IHNvbWV3aGVyZS5cbiAgaWYgKHR5cGVvZiBwYXRoICE9PSBcInN0cmluZ1wiKSByZXR1cm4gcGF0aDtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gXCJcIjtcblxuICBjb25zdCByZXNvbHZlZFBhdGggPSByZXNvbHZlKHBhdGgpO1xuXG4gIGlmIChyZXNvbHZlZFBhdGgubGVuZ3RoID49IDMpIHtcbiAgICBpZiAocmVzb2x2ZWRQYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgIC8vIFBvc3NpYmxlIFVOQyByb290XG5cbiAgICAgIGlmIChyZXNvbHZlZFBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkge1xuICAgICAgICBjb25zdCBjb2RlID0gcmVzb2x2ZWRQYXRoLmNoYXJDb2RlQXQoMik7XG4gICAgICAgIGlmIChjb2RlICE9PSBDSEFSX1FVRVNUSU9OX01BUksgJiYgY29kZSAhPT0gQ0hBUl9ET1QpIHtcbiAgICAgICAgICAvLyBNYXRjaGVkIG5vbi1sb25nIFVOQyByb290LCBjb252ZXJ0IHRoZSBwYXRoIHRvIGEgbG9uZyBVTkMgcGF0aFxuICAgICAgICAgIHJldHVybiBgXFxcXFxcXFw/XFxcXFVOQ1xcXFwke3Jlc29sdmVkUGF0aC5zbGljZSgyKX1gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KHJlc29sdmVkUGF0aC5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgICAgaWYgKFxuICAgICAgICByZXNvbHZlZFBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTiAmJlxuICAgICAgICByZXNvbHZlZFBhdGguY2hhckNvZGVBdCgyKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSFxuICAgICAgKSB7XG4gICAgICAgIC8vIE1hdGNoZWQgZGV2aWNlIHJvb3QsIGNvbnZlcnQgdGhlIHBhdGggdG8gYSBsb25nIFVOQyBwYXRoXG4gICAgICAgIHJldHVybiBgXFxcXFxcXFw/XFxcXCR7cmVzb2x2ZWRQYXRofWA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhdGg7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBkaXJlY3RvcnkgbmFtZSBvZiBhIGBwYXRoYC5cbiAqIEBwYXJhbSBwYXRoIHRvIGRldGVybWluZSBuYW1lIGZvclxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlybmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIFwiLlwiO1xuICBsZXQgcm9vdEVuZCA9IC0xO1xuICBsZXQgZW5kID0gLTE7XG4gIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICBsZXQgb2Zmc2V0ID0gMDtcbiAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcblxuICAvLyBUcnkgdG8gbWF0Y2ggYSByb290XG4gIGlmIChsZW4gPiAxKSB7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gUG9zc2libGUgVU5DIHJvb3RcblxuICAgICAgcm9vdEVuZCA9IG9mZnNldCA9IDE7XG5cbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDEpKSkge1xuICAgICAgICAvLyBNYXRjaGVkIGRvdWJsZSBwYXRoIHNlcGFyYXRvciBhdCBiZWdpbm5pbmdcbiAgICAgICAgbGV0IGogPSAyO1xuICAgICAgICBsZXQgbGFzdCA9IGo7XG4gICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHtcbiAgICAgICAgICAvLyBNYXRjaGVkIVxuICAgICAgICAgIGxhc3QgPSBqO1xuICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBwYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgICBpZiAoIWlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgLy8gTWF0Y2hlZCFcbiAgICAgICAgICAgIGxhc3QgPSBqO1xuICAgICAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIG5vbi1wYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqID09PSBsZW4pIHtcbiAgICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyByb290IG9ubHlcbiAgICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgd2l0aCBsZWZ0b3ZlcnNcblxuICAgICAgICAgICAgICAvLyBPZmZzZXQgYnkgMSB0byBpbmNsdWRlIHRoZSBzZXBhcmF0b3IgYWZ0ZXIgdGhlIFVOQyByb290IHRvXG4gICAgICAgICAgICAgIC8vIHRyZWF0IGl0IGFzIGEgXCJub3JtYWwgcm9vdFwiIG9uIHRvcCBvZiBhIChVTkMpIHJvb3RcbiAgICAgICAgICAgICAgcm9vdEVuZCA9IG9mZnNldCA9IGogKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNXaW5kb3dzRGV2aWNlUm9vdChjb2RlKSkge1xuICAgICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgICAgaWYgKHBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTikge1xuICAgICAgICByb290RW5kID0gb2Zmc2V0ID0gMjtcbiAgICAgICAgaWYgKGxlbiA+IDIpIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgyKSkpIHJvb3RFbmQgPSBvZmZzZXQgPSAzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgIC8vIGBwYXRoYCBjb250YWlucyBqdXN0IGEgcGF0aCBzZXBhcmF0b3IsIGV4aXQgZWFybHkgdG8gYXZvaWRcbiAgICAvLyB1bm5lY2Vzc2FyeSB3b3JrXG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cblxuICBmb3IgKGxldCBpID0gbGVuIC0gMTsgaSA+PSBvZmZzZXQ7IC0taSkge1xuICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgZW5kID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yXG4gICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAoZW5kID09PSAtMSkge1xuICAgIGlmIChyb290RW5kID09PSAtMSkgcmV0dXJuIFwiLlwiO1xuICAgIGVsc2UgZW5kID0gcm9vdEVuZDtcbiAgfVxuICByZXR1cm4gcGF0aC5zbGljZSgwLCBlbmQpO1xufVxuXG4vKipcbiAqIFJldHVybiB0aGUgbGFzdCBwb3J0aW9uIG9mIGEgYHBhdGhgLiBUcmFpbGluZyBkaXJlY3Rvcnkgc2VwYXJhdG9ycyBhcmUgaWdub3JlZC5cbiAqIEBwYXJhbSBwYXRoIHRvIHByb2Nlc3NcbiAqIEBwYXJhbSBleHQgb2YgcGF0aCBkaXJlY3RvcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJhc2VuYW1lKHBhdGg6IHN0cmluZywgZXh0ID0gXCJcIik6IHN0cmluZyB7XG4gIGlmIChleHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZXh0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJleHRcIiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gIH1cblxuICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gIGxldCBzdGFydCA9IDA7XG4gIGxldCBlbmQgPSAtMTtcbiAgbGV0IG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIGxldCBpOiBudW1iZXI7XG5cbiAgLy8gQ2hlY2sgZm9yIGEgZHJpdmUgbGV0dGVyIHByZWZpeCBzbyBhcyBub3QgdG8gbWlzdGFrZSB0aGUgZm9sbG93aW5nXG4gIC8vIHBhdGggc2VwYXJhdG9yIGFzIGFuIGV4dHJhIHNlcGFyYXRvciBhdCB0aGUgZW5kIG9mIHRoZSBwYXRoIHRoYXQgY2FuIGJlXG4gIC8vIGRpc3JlZ2FyZGVkXG4gIGlmIChwYXRoLmxlbmd0aCA+PSAyKSB7XG4gICAgY29uc3QgZHJpdmUgPSBwYXRoLmNoYXJDb2RlQXQoMCk7XG4gICAgaWYgKGlzV2luZG93c0RldmljZVJvb3QoZHJpdmUpKSB7XG4gICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSBzdGFydCA9IDI7XG4gICAgfVxuICB9XG5cbiAgaWYgKGV4dCAhPT0gdW5kZWZpbmVkICYmIGV4dC5sZW5ndGggPiAwICYmIGV4dC5sZW5ndGggPD0gcGF0aC5sZW5ndGgpIHtcbiAgICBpZiAoZXh0Lmxlbmd0aCA9PT0gcGF0aC5sZW5ndGggJiYgZXh0ID09PSBwYXRoKSByZXR1cm4gXCJcIjtcbiAgICBsZXQgZXh0SWR4ID0gZXh0Lmxlbmd0aCAtIDE7XG4gICAgbGV0IGZpcnN0Tm9uU2xhc2hFbmQgPSAtMTtcbiAgICBmb3IgKGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IC0taSkge1xuICAgICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZpcnN0Tm9uU2xhc2hFbmQgPT09IC0xKSB7XG4gICAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIHJlbWVtYmVyIHRoaXMgaW5kZXggaW4gY2FzZVxuICAgICAgICAgIC8vIHdlIG5lZWQgaXQgaWYgdGhlIGV4dGVuc2lvbiBlbmRzIHVwIG5vdCBtYXRjaGluZ1xuICAgICAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgICAgIGZpcnN0Tm9uU2xhc2hFbmQgPSBpICsgMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXh0SWR4ID49IDApIHtcbiAgICAgICAgICAvLyBUcnkgdG8gbWF0Y2ggdGhlIGV4cGxpY2l0IGV4dGVuc2lvblxuICAgICAgICAgIGlmIChjb2RlID09PSBleHQuY2hhckNvZGVBdChleHRJZHgpKSB7XG4gICAgICAgICAgICBpZiAoLS1leHRJZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgdGhlIGV4dGVuc2lvbiwgc28gbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyIHBhdGhcbiAgICAgICAgICAgICAgLy8gY29tcG9uZW50XG4gICAgICAgICAgICAgIGVuZCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEV4dGVuc2lvbiBkb2VzIG5vdCBtYXRjaCwgc28gb3VyIHJlc3VsdCBpcyB0aGUgZW50aXJlIHBhdGhcbiAgICAgICAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgICAgICAgZXh0SWR4ID0gLTE7XG4gICAgICAgICAgICBlbmQgPSBmaXJzdE5vblNsYXNoRW5kO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGFydCA9PT0gZW5kKSBlbmQgPSBmaXJzdE5vblNsYXNoRW5kO1xuICAgIGVsc2UgaWYgKGVuZCA9PT0gLTEpIGVuZCA9IHBhdGgubGVuZ3RoO1xuICAgIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9IGVsc2Uge1xuICAgIGZvciAoaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSBzdGFydDsgLS1pKSB7XG4gICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChpKSkpIHtcbiAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgICAgLy8gcGF0aCBjb21wb25lbnRcbiAgICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICAgIGVuZCA9IGkgKyAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbmQgPT09IC0xKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBgcGF0aGAgd2l0aCBsZWFkaW5nIHBlcmlvZC5cbiAqIEBwYXJhbSBwYXRoIHdpdGggZXh0ZW5zaW9uXG4gKiBAcmV0dXJucyBleHRlbnNpb24gKGV4LiBmb3IgYGZpbGUudHNgIHJldHVybnMgYC50c2ApXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRuYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG4gIGxldCBzdGFydCA9IDA7XG4gIGxldCBzdGFydERvdCA9IC0xO1xuICBsZXQgc3RhcnRQYXJ0ID0gMDtcbiAgbGV0IGVuZCA9IC0xO1xuICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgLy8gVHJhY2sgdGhlIHN0YXRlIG9mIGNoYXJhY3RlcnMgKGlmIGFueSkgd2Ugc2VlIGJlZm9yZSBvdXIgZmlyc3QgZG90IGFuZFxuICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICBsZXQgcHJlRG90U3RhdGUgPSAwO1xuXG4gIC8vIENoZWNrIGZvciBhIGRyaXZlIGxldHRlciBwcmVmaXggc28gYXMgbm90IHRvIG1pc3Rha2UgdGhlIGZvbGxvd2luZ1xuICAvLyBwYXRoIHNlcGFyYXRvciBhcyBhbiBleHRyYSBzZXBhcmF0b3IgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aCB0aGF0IGNhbiBiZVxuICAvLyBkaXNyZWdhcmRlZFxuXG4gIGlmIChcbiAgICBwYXRoLmxlbmd0aCA+PSAyICYmXG4gICAgcGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OICYmXG4gICAgaXNXaW5kb3dzRGV2aWNlUm9vdChwYXRoLmNoYXJDb2RlQXQoMCkpXG4gICkge1xuICAgIHN0YXJ0ID0gc3RhcnRQYXJ0ID0gMjtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IC0taSkge1xuICAgIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAvLyBleHRlbnNpb25cbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgZW5kID0gaSArIDE7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSBDSEFSX0RPVCkge1xuICAgICAgLy8gSWYgdGhpcyBpcyBvdXIgZmlyc3QgZG90LCBtYXJrIGl0IGFzIHRoZSBzdGFydCBvZiBvdXIgZXh0ZW5zaW9uXG4gICAgICBpZiAoc3RhcnREb3QgPT09IC0xKSBzdGFydERvdCA9IGk7XG4gICAgICBlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSkgcHJlRG90U3RhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoc3RhcnREb3QgIT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgYSBub24tZG90IGFuZCBub24tcGF0aCBzZXBhcmF0b3IgYmVmb3JlIG91ciBkb3QsIHNvIHdlIHNob3VsZFxuICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgIHByZURvdFN0YXRlID0gLTE7XG4gICAgfVxuICB9XG5cbiAgaWYgKFxuICAgIHN0YXJ0RG90ID09PSAtMSB8fFxuICAgIGVuZCA9PT0gLTEgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgIChwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSlcbiAgKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbiAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnREb3QsIGVuZCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBwYXRoIGZyb20gYEZvcm1hdElucHV0UGF0aE9iamVjdGAgb2JqZWN0LlxuICogQHBhcmFtIHBhdGhPYmplY3Qgd2l0aCBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXQocGF0aE9iamVjdDogRm9ybWF0SW5wdXRQYXRoT2JqZWN0KTogc3RyaW5nIHtcbiAgaWYgKHBhdGhPYmplY3QgPT09IG51bGwgfHwgdHlwZW9mIHBhdGhPYmplY3QgIT09IFwib2JqZWN0XCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYFRoZSBcInBhdGhPYmplY3RcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIHBhdGhPYmplY3R9YCxcbiAgICApO1xuICB9XG4gIHJldHVybiBfZm9ybWF0KFwiXFxcXFwiLCBwYXRoT2JqZWN0KTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gYSBgUGFyc2VkUGF0aGAgb2JqZWN0IG9mIHRoZSBgcGF0aGAuXG4gKiBAcGFyYW0gcGF0aCB0byBwcm9jZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShwYXRoOiBzdHJpbmcpOiBQYXJzZWRQYXRoIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICBjb25zdCByZXQ6IFBhcnNlZFBhdGggPSB7IHJvb3Q6IFwiXCIsIGRpcjogXCJcIiwgYmFzZTogXCJcIiwgZXh0OiBcIlwiLCBuYW1lOiBcIlwiIH07XG5cbiAgY29uc3QgbGVuID0gcGF0aC5sZW5ndGg7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiByZXQ7XG5cbiAgbGV0IHJvb3RFbmQgPSAwO1xuICBsZXQgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcblxuICAvLyBUcnkgdG8gbWF0Y2ggYSByb290XG4gIGlmIChsZW4gPiAxKSB7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gUG9zc2libGUgVU5DIHJvb3RcblxuICAgICAgcm9vdEVuZCA9IDE7XG4gICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgxKSkpIHtcbiAgICAgICAgLy8gTWF0Y2hlZCBkb3VibGUgcGF0aCBzZXBhcmF0b3IgYXQgYmVnaW5uaW5nXG4gICAgICAgIGxldCBqID0gMjtcbiAgICAgICAgbGV0IGxhc3QgPSBqO1xuICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgLy8gTWF0Y2hlZCFcbiAgICAgICAgICBsYXN0ID0gajtcbiAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgaWYgKCFpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHtcbiAgICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgICBsYXN0ID0gajtcbiAgICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaiA9PT0gbGVuKSB7XG4gICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcm9vdCBvbmx5XG5cbiAgICAgICAgICAgICAgcm9vdEVuZCA9IGo7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGogIT09IGxhc3QpIHtcbiAgICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyByb290IHdpdGggbGVmdG92ZXJzXG5cbiAgICAgICAgICAgICAgcm9vdEVuZCA9IGogKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNXaW5kb3dzRGV2aWNlUm9vdChjb2RlKSkge1xuICAgICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgICAgaWYgKHBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTikge1xuICAgICAgICByb290RW5kID0gMjtcbiAgICAgICAgaWYgKGxlbiA+IDIpIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgyKSkpIHtcbiAgICAgICAgICAgIGlmIChsZW4gPT09IDMpIHtcbiAgICAgICAgICAgICAgLy8gYHBhdGhgIGNvbnRhaW5zIGp1c3QgYSBkcml2ZSByb290LCBleGl0IGVhcmx5IHRvIGF2b2lkXG4gICAgICAgICAgICAgIC8vIHVubmVjZXNzYXJ5IHdvcmtcbiAgICAgICAgICAgICAgcmV0LnJvb3QgPSByZXQuZGlyID0gcGF0aDtcbiAgICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJvb3RFbmQgPSAzO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBgcGF0aGAgY29udGFpbnMganVzdCBhIGRyaXZlIHJvb3QsIGV4aXQgZWFybHkgdG8gYXZvaWRcbiAgICAgICAgICAvLyB1bm5lY2Vzc2FyeSB3b3JrXG4gICAgICAgICAgcmV0LnJvb3QgPSByZXQuZGlyID0gcGF0aDtcbiAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgIC8vIGBwYXRoYCBjb250YWlucyBqdXN0IGEgcGF0aCBzZXBhcmF0b3IsIGV4aXQgZWFybHkgdG8gYXZvaWRcbiAgICAvLyB1bm5lY2Vzc2FyeSB3b3JrXG4gICAgcmV0LnJvb3QgPSByZXQuZGlyID0gcGF0aDtcbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgaWYgKHJvb3RFbmQgPiAwKSByZXQucm9vdCA9IHBhdGguc2xpY2UoMCwgcm9vdEVuZCk7XG5cbiAgbGV0IHN0YXJ0RG90ID0gLTE7XG4gIGxldCBzdGFydFBhcnQgPSByb290RW5kO1xuICBsZXQgZW5kID0gLTE7XG4gIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICBsZXQgaSA9IHBhdGgubGVuZ3RoIC0gMTtcblxuICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gIC8vIGFmdGVyIGFueSBwYXRoIHNlcGFyYXRvciB3ZSBmaW5kXG4gIGxldCBwcmVEb3RTdGF0ZSA9IDA7XG5cbiAgLy8gR2V0IG5vbi1kaXIgaW5mb1xuICBmb3IgKDsgaSA+PSByb290RW5kOyAtLWkpIHtcbiAgICBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgLy8gZXh0ZW5zaW9uXG4gICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgIGVuZCA9IGkgKyAxO1xuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gQ0hBUl9ET1QpIHtcbiAgICAgIC8vIElmIHRoaXMgaXMgb3VyIGZpcnN0IGRvdCwgbWFyayBpdCBhcyB0aGUgc3RhcnQgb2Ygb3VyIGV4dGVuc2lvblxuICAgICAgaWYgKHN0YXJ0RG90ID09PSAtMSkgc3RhcnREb3QgPSBpO1xuICAgICAgZWxzZSBpZiAocHJlRG90U3RhdGUgIT09IDEpIHByZURvdFN0YXRlID0gMTtcbiAgICB9IGVsc2UgaWYgKHN0YXJ0RG90ICE9PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgIC8vIGhhdmUgYSBnb29kIGNoYW5jZSBhdCBoYXZpbmcgYSBub24tZW1wdHkgZXh0ZW5zaW9uXG4gICAgICBwcmVEb3RTdGF0ZSA9IC0xO1xuICAgIH1cbiAgfVxuXG4gIGlmIChcbiAgICBzdGFydERvdCA9PT0gLTEgfHxcbiAgICBlbmQgPT09IC0xIHx8XG4gICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkb3RcbiAgICBwcmVEb3RTdGF0ZSA9PT0gMCB8fFxuICAgIC8vIFRoZSAocmlnaHQtbW9zdCkgdHJpbW1lZCBwYXRoIGNvbXBvbmVudCBpcyBleGFjdGx5ICcuLidcbiAgICAocHJlRG90U3RhdGUgPT09IDEgJiYgc3RhcnREb3QgPT09IGVuZCAtIDEgJiYgc3RhcnREb3QgPT09IHN0YXJ0UGFydCArIDEpXG4gICkge1xuICAgIGlmIChlbmQgIT09IC0xKSB7XG4gICAgICByZXQuYmFzZSA9IHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIGVuZCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIHN0YXJ0RG90KTtcbiAgICByZXQuYmFzZSA9IHBhdGguc2xpY2Uoc3RhcnRQYXJ0LCBlbmQpO1xuICAgIHJldC5leHQgPSBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xuICB9XG5cbiAgLy8gSWYgdGhlIGRpcmVjdG9yeSBpcyB0aGUgcm9vdCwgdXNlIHRoZSBlbnRpcmUgcm9vdCBhcyB0aGUgYGRpcmAgaW5jbHVkaW5nXG4gIC8vIHRoZSB0cmFpbGluZyBzbGFzaCBpZiBhbnkgKGBDOlxcYWJjYCAtPiBgQzpcXGApLiBPdGhlcndpc2UsIHN0cmlwIG91dCB0aGVcbiAgLy8gdHJhaWxpbmcgc2xhc2ggKGBDOlxcYWJjXFxkZWZgIC0+IGBDOlxcYWJjYCkuXG4gIGlmIChzdGFydFBhcnQgPiAwICYmIHN0YXJ0UGFydCAhPT0gcm9vdEVuZCkge1xuICAgIHJldC5kaXIgPSBwYXRoLnNsaWNlKDAsIHN0YXJ0UGFydCAtIDEpO1xuICB9IGVsc2UgcmV0LmRpciA9IHJldC5yb290O1xuXG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBmaWxlIFVSTCB0byBhIHBhdGggc3RyaW5nLlxuICpcbiAqIGBgYHRzXG4gKiAgICAgIGltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcIi4vd2luMzIudHNcIjtcbiAqICAgICAgZnJvbUZpbGVVcmwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpOyAvLyBcIlxcXFxob21lXFxcXGZvb1wiXG4gKiAgICAgIGZyb21GaWxlVXJsKFwiZmlsZTovLy9DOi9Vc2Vycy9mb29cIik7IC8vIFwiQzpcXFxcVXNlcnNcXFxcZm9vXCJcbiAqICAgICAgZnJvbUZpbGVVcmwoXCJmaWxlOi8vbG9jYWxob3N0L2hvbWUvZm9vXCIpOyAvLyBcIlxcXFxcXFxcbG9jYWxob3N0XFxcXGhvbWVcXFxcZm9vXCJcbiAqIGBgYFxuICogQHBhcmFtIHVybCBvZiBhIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tRmlsZVVybCh1cmw6IHN0cmluZyB8IFVSTCk6IHN0cmluZyB7XG4gIHVybCA9IHVybCBpbnN0YW5jZW9mIFVSTCA/IHVybCA6IG5ldyBVUkwodXJsKTtcbiAgaWYgKHVybC5wcm90b2NvbCAhPSBcImZpbGU6XCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBhIGZpbGUgVVJMLlwiKTtcbiAgfVxuICBsZXQgcGF0aCA9IGRlY29kZVVSSUNvbXBvbmVudChcbiAgICB1cmwucGF0aG5hbWUucmVwbGFjZSgvXFwvL2csIFwiXFxcXFwiKS5yZXBsYWNlKC8lKD8hWzAtOUEtRmEtZl17Mn0pL2csIFwiJTI1XCIpLFxuICApLnJlcGxhY2UoL15cXFxcKihbQS1aYS16XTopKFxcXFx8JCkvLCBcIiQxXFxcXFwiKTtcbiAgaWYgKHVybC5ob3N0bmFtZSAhPSBcIlwiKSB7XG4gICAgLy8gTm90ZTogVGhlIGBVUkxgIGltcGxlbWVudGF0aW9uIGd1YXJhbnRlZXMgdGhhdCB0aGUgZHJpdmUgbGV0dGVyIGFuZFxuICAgIC8vIGhvc3RuYW1lIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIE90aGVyd2lzZSBpdCB3b3VsZCBub3QgaGF2ZSBiZWVuIHZhbGlkXG4gICAgLy8gdG8gYXBwZW5kIHRoZSBob3N0bmFtZSBhbmQgcGF0aCBsaWtlIHRoaXMuXG4gICAgcGF0aCA9IGBcXFxcXFxcXCR7dXJsLmhvc3RuYW1lfSR7cGF0aH1gO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgcGF0aCBzdHJpbmcgdG8gYSBmaWxlIFVSTC5cbiAqXG4gKiBgYGB0c1xuICogICAgICBpbXBvcnQgeyB0b0ZpbGVVcmwgfSBmcm9tIFwiLi93aW4zMi50c1wiO1xuICogICAgICB0b0ZpbGVVcmwoXCJcXFxcaG9tZVxcXFxmb29cIik7IC8vIG5ldyBVUkwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpXG4gKiAgICAgIHRvRmlsZVVybChcIkM6XFxcXFVzZXJzXFxcXGZvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8vQzovVXNlcnMvZm9vXCIpXG4gKiAgICAgIHRvRmlsZVVybChcIlxcXFxcXFxcMTI3LjAuMC4xXFxcXGhvbWVcXFxcZm9vXCIpOyAvLyBuZXcgVVJMKFwiZmlsZTovLzEyNy4wLjAuMS9ob21lL2Zvb1wiKVxuICogYGBgXG4gKiBAcGFyYW0gcGF0aCB0byBjb252ZXJ0IHRvIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0ZpbGVVcmwocGF0aDogc3RyaW5nKTogVVJMIHtcbiAgaWYgKCFpc0Fic29sdXRlKHBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5cIik7XG4gIH1cbiAgY29uc3QgWywgaG9zdG5hbWUsIHBhdGhuYW1lXSA9IHBhdGgubWF0Y2goXG4gICAgL14oPzpbL1xcXFxdezJ9KFteL1xcXFxdKykoPz1bL1xcXFxdKD86W14vXFxcXF18JCkpKT8oLiopLyxcbiAgKSE7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoXCJmaWxlOi8vL1wiKTtcbiAgdXJsLnBhdGhuYW1lID0gZW5jb2RlV2hpdGVzcGFjZShwYXRobmFtZS5yZXBsYWNlKC8lL2csIFwiJTI1XCIpKTtcbiAgaWYgKGhvc3RuYW1lICE9IG51bGwgJiYgaG9zdG5hbWUgIT0gXCJsb2NhbGhvc3RcIikge1xuICAgIHVybC5ob3N0bmFtZSA9IGhvc3RuYW1lO1xuICAgIGlmICghdXJsLmhvc3RuYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBob3N0bmFtZS5cIik7XG4gICAgfVxuICB9XG4gIHJldHVybiB1cmw7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeS9cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHR5cGUgeyBGb3JtYXRJbnB1dFBhdGhPYmplY3QgfSBmcm9tIFwiLi9faW50ZXJmYWNlLnRzXCI7XG5pbXBvcnQge1xuICBDSEFSX0JBQ0tXQVJEX1NMQVNILFxuICBDSEFSX0RPVCxcbiAgQ0hBUl9GT1JXQVJEX1NMQVNILFxuICBDSEFSX0xPV0VSQ0FTRV9BLFxuICBDSEFSX0xPV0VSQ0FTRV9aLFxuICBDSEFSX1VQUEVSQ0FTRV9BLFxuICBDSEFSX1VQUEVSQ0FTRV9aLFxufSBmcm9tIFwiLi9fY29uc3RhbnRzLnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRQYXRoKHBhdGg6IHN0cmluZyk6IHZvaWQge1xuICBpZiAodHlwZW9mIHBhdGggIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYFBhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShwYXRoKX1gLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUG9zaXhQYXRoU2VwYXJhdG9yKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQYXRoU2VwYXJhdG9yKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNQb3NpeFBhdGhTZXBhcmF0b3IoY29kZSkgfHwgY29kZSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2luZG93c0RldmljZVJvb3QoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgKGNvZGUgPj0gQ0hBUl9MT1dFUkNBU0VfQSAmJiBjb2RlIDw9IENIQVJfTE9XRVJDQVNFX1opIHx8XG4gICAgKGNvZGUgPj0gQ0hBUl9VUFBFUkNBU0VfQSAmJiBjb2RlIDw9IENIQVJfVVBQRVJDQVNFX1opXG4gICk7XG59XG5cbi8vIFJlc29sdmVzIC4gYW5kIC4uIGVsZW1lbnRzIGluIGEgcGF0aCB3aXRoIGRpcmVjdG9yeSBuYW1lc1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVN0cmluZyhcbiAgcGF0aDogc3RyaW5nLFxuICBhbGxvd0Fib3ZlUm9vdDogYm9vbGVhbixcbiAgc2VwYXJhdG9yOiBzdHJpbmcsXG4gIGlzUGF0aFNlcGFyYXRvcjogKGNvZGU6IG51bWJlcikgPT4gYm9vbGVhbixcbik6IHN0cmluZyB7XG4gIGxldCByZXMgPSBcIlwiO1xuICBsZXQgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICBsZXQgbGFzdFNsYXNoID0gLTE7XG4gIGxldCBkb3RzID0gMDtcbiAgbGV0IGNvZGU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHBhdGgubGVuZ3RoOyBpIDw9IGxlbjsgKytpKSB7XG4gICAgaWYgKGkgPCBsZW4pIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgZWxzZSBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUhKSkgYnJlYWs7XG4gICAgZWxzZSBjb2RlID0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xuXG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlISkpIHtcbiAgICAgIGlmIChsYXN0U2xhc2ggPT09IGkgLSAxIHx8IGRvdHMgPT09IDEpIHtcbiAgICAgICAgLy8gTk9PUFxuICAgICAgfSBlbHNlIGlmIChsYXN0U2xhc2ggIT09IGkgLSAxICYmIGRvdHMgPT09IDIpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlcy5sZW5ndGggPCAyIHx8XG4gICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggIT09IDIgfHxcbiAgICAgICAgICByZXMuY2hhckNvZGVBdChyZXMubGVuZ3RoIC0gMSkgIT09IENIQVJfRE9UIHx8XG4gICAgICAgICAgcmVzLmNoYXJDb2RlQXQocmVzLmxlbmd0aCAtIDIpICE9PSBDSEFSX0RPVFxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RTbGFzaEluZGV4ID0gcmVzLmxhc3RJbmRleE9mKHNlcGFyYXRvcik7XG4gICAgICAgICAgICBpZiAobGFzdFNsYXNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgIHJlcyA9IFwiXCI7XG4gICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlcyA9IHJlcy5zbGljZSgwLCBsYXN0U2xhc2hJbmRleCk7XG4gICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gcmVzLmxlbmd0aCAtIDEgLSByZXMubGFzdEluZGV4T2Yoc2VwYXJhdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3RTbGFzaCA9IGk7XG4gICAgICAgICAgICBkb3RzID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmxlbmd0aCA9PT0gMiB8fCByZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXMgPSBcIlwiO1xuICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICAgICAgICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgICAgICAgIGlmIChyZXMubGVuZ3RoID4gMCkgcmVzICs9IGAke3NlcGFyYXRvcn0uLmA7XG4gICAgICAgICAgZWxzZSByZXMgPSBcIi4uXCI7XG4gICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAyO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHJlcyArPSBzZXBhcmF0b3IgKyBwYXRoLnNsaWNlKGxhc3RTbGFzaCArIDEsIGkpO1xuICAgICAgICBlbHNlIHJlcyA9IHBhdGguc2xpY2UobGFzdFNsYXNoICsgMSwgaSk7XG4gICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gaSAtIGxhc3RTbGFzaCAtIDE7XG4gICAgICB9XG4gICAgICBsYXN0U2xhc2ggPSBpO1xuICAgICAgZG90cyA9IDA7XG4gICAgfSBlbHNlIGlmIChjb2RlID09PSBDSEFSX0RPVCAmJiBkb3RzICE9PSAtMSkge1xuICAgICAgKytkb3RzO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb3RzID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfZm9ybWF0KFxuICBzZXA6IHN0cmluZyxcbiAgcGF0aE9iamVjdDogRm9ybWF0SW5wdXRQYXRoT2JqZWN0LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgZGlyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBwYXRoT2JqZWN0LmRpciB8fCBwYXRoT2JqZWN0LnJvb3Q7XG4gIGNvbnN0IGJhc2U6IHN0cmluZyA9IHBhdGhPYmplY3QuYmFzZSB8fFxuICAgIChwYXRoT2JqZWN0Lm5hbWUgfHwgXCJcIikgKyAocGF0aE9iamVjdC5leHQgfHwgXCJcIik7XG4gIGlmICghZGlyKSByZXR1cm4gYmFzZTtcbiAgaWYgKGRpciA9PT0gcGF0aE9iamVjdC5yb290KSByZXR1cm4gZGlyICsgYmFzZTtcbiAgcmV0dXJuIGRpciArIHNlcCArIGJhc2U7XG59XG5cbmNvbnN0IFdISVRFU1BBQ0VfRU5DT0RJTkdTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBcIlxcdTAwMDlcIjogXCIlMDlcIixcbiAgXCJcXHUwMDBBXCI6IFwiJTBBXCIsXG4gIFwiXFx1MDAwQlwiOiBcIiUwQlwiLFxuICBcIlxcdTAwMENcIjogXCIlMENcIixcbiAgXCJcXHUwMDBEXCI6IFwiJTBEXCIsXG4gIFwiXFx1MDAyMFwiOiBcIiUyMFwiLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVdoaXRlc3BhY2Uoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2VBbGwoL1tcXHNdL2csIChjKSA9PiB7XG4gICAgcmV0dXJuIFdISVRFU1BBQ0VfRU5DT0RJTkdTW2NdID8/IGM7XG4gIH0pO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmV4cG9ydCBjbGFzcyBEZW5vU3RkSW50ZXJuYWxFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gXCJEZW5vU3RkSW50ZXJuYWxFcnJvclwiO1xuICB9XG59XG5cbi8qKiBNYWtlIGFuIGFzc2VydGlvbiwgaWYgbm90IGB0cnVlYCwgdGhlbiB0aHJvdy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoZXhwcjogdW5rbm93biwgbXNnID0gXCJcIik6IGFzc2VydHMgZXhwciB7XG4gIGlmICghZXhwcikge1xuICAgIHRocm93IG5ldyBEZW5vU3RkSW50ZXJuYWxFcnJvcihtc2cpO1xuICB9XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeS9cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHR5cGUgeyBGb3JtYXRJbnB1dFBhdGhPYmplY3QsIFBhcnNlZFBhdGggfSBmcm9tIFwiLi9faW50ZXJmYWNlLnRzXCI7XG5pbXBvcnQgeyBDSEFSX0RPVCwgQ0hBUl9GT1JXQVJEX1NMQVNIIH0gZnJvbSBcIi4vX2NvbnN0YW50cy50c1wiO1xuXG5pbXBvcnQge1xuICBfZm9ybWF0LFxuICBhc3NlcnRQYXRoLFxuICBlbmNvZGVXaGl0ZXNwYWNlLFxuICBpc1Bvc2l4UGF0aFNlcGFyYXRvcixcbiAgbm9ybWFsaXplU3RyaW5nLFxufSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG5leHBvcnQgY29uc3Qgc2VwID0gXCIvXCI7XG5leHBvcnQgY29uc3QgZGVsaW1pdGVyID0gXCI6XCI7XG5cbi8vIHBhdGgucmVzb2x2ZShbZnJvbSAuLi5dLCB0bylcbi8qKlxuICogUmVzb2x2ZXMgYHBhdGhTZWdtZW50c2AgaW50byBhbiBhYnNvbHV0ZSBwYXRoLlxuICogQHBhcmFtIHBhdGhTZWdtZW50cyBhbiBhcnJheSBvZiBwYXRoIHNlZ21lbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKC4uLnBhdGhTZWdtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICBsZXQgcmVzb2x2ZWRQYXRoID0gXCJcIjtcbiAgbGV0IHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcblxuICBmb3IgKGxldCBpID0gcGF0aFNlZ21lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGktLSkge1xuICAgIGxldCBwYXRoOiBzdHJpbmc7XG5cbiAgICBpZiAoaSA+PSAwKSBwYXRoID0gcGF0aFNlZ21lbnRzW2ldO1xuICAgIGVsc2Uge1xuICAgICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICAgIGNvbnN0IHsgRGVubyB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gICAgICBpZiAodHlwZW9mIERlbm8/LmN3ZCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJSZXNvbHZlZCBhIHJlbGF0aXZlIHBhdGggd2l0aG91dCBhIENXRC5cIik7XG4gICAgICB9XG4gICAgICBwYXRoID0gRGVuby5jd2QoKTtcbiAgICB9XG5cbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gICAgLy8gU2tpcCBlbXB0eSBlbnRyaWVzXG4gICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXNvbHZlZFBhdGggPSBgJHtwYXRofS8ke3Jlc29sdmVkUGF0aH1gO1xuICAgIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfRk9SV0FSRF9TTEFTSDtcbiAgfVxuXG4gIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHBhdGggc2hvdWxkIGJlIHJlc29sdmVkIHRvIGEgZnVsbCBhYnNvbHV0ZSBwYXRoLCBidXRcbiAgLy8gaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIGJlIHNhZmUgKG1pZ2h0IGhhcHBlbiB3aGVuIHByb2Nlc3MuY3dkKCkgZmFpbHMpXG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHJlc29sdmVkUGF0aCA9IG5vcm1hbGl6ZVN0cmluZyhcbiAgICByZXNvbHZlZFBhdGgsXG4gICAgIXJlc29sdmVkQWJzb2x1dGUsXG4gICAgXCIvXCIsXG4gICAgaXNQb3NpeFBhdGhTZXBhcmF0b3IsXG4gICk7XG5cbiAgaWYgKHJlc29sdmVkQWJzb2x1dGUpIHtcbiAgICBpZiAocmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDApIHJldHVybiBgLyR7cmVzb2x2ZWRQYXRofWA7XG4gICAgZWxzZSByZXR1cm4gXCIvXCI7XG4gIH0gZWxzZSBpZiAocmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDApIHJldHVybiByZXNvbHZlZFBhdGg7XG4gIGVsc2UgcmV0dXJuIFwiLlwiO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSB0aGUgYHBhdGhgLCByZXNvbHZpbmcgYCcuLidgIGFuZCBgJy4nYCBzZWdtZW50cy5cbiAqIEBwYXJhbSBwYXRoIHRvIGJlIG5vcm1hbGl6ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiLlwiO1xuXG4gIGNvbnN0IGlzQWJzb2x1dGUgPSBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfRk9SV0FSRF9TTEFTSDtcbiAgY29uc3QgdHJhaWxpbmdTZXBhcmF0b3IgPVxuICAgIHBhdGguY2hhckNvZGVBdChwYXRoLmxlbmd0aCAtIDEpID09PSBDSEFSX0ZPUldBUkRfU0xBU0g7XG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHBhdGggPSBub3JtYWxpemVTdHJpbmcocGF0aCwgIWlzQWJzb2x1dGUsIFwiL1wiLCBpc1Bvc2l4UGF0aFNlcGFyYXRvcik7XG5cbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwICYmICFpc0Fic29sdXRlKSBwYXRoID0gXCIuXCI7XG4gIGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgdHJhaWxpbmdTZXBhcmF0b3IpIHBhdGggKz0gXCIvXCI7XG5cbiAgaWYgKGlzQWJzb2x1dGUpIHJldHVybiBgLyR7cGF0aH1gO1xuICByZXR1cm4gcGF0aDtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyB3aGV0aGVyIHByb3ZpZGVkIHBhdGggaXMgYWJzb2x1dGVcbiAqIEBwYXJhbSBwYXRoIHRvIGJlIHZlcmlmaWVkIGFzIGFic29sdXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuICByZXR1cm4gcGF0aC5sZW5ndGggPiAwICYmIHBhdGguY2hhckNvZGVBdCgwKSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xufVxuXG4vKipcbiAqIEpvaW4gYWxsIGdpdmVuIGEgc2VxdWVuY2Ugb2YgYHBhdGhzYCx0aGVuIG5vcm1hbGl6ZXMgdGhlIHJlc3VsdGluZyBwYXRoLlxuICogQHBhcmFtIHBhdGhzIHRvIGJlIGpvaW5lZCBhbmQgbm9ybWFsaXplZFxuICovXG5leHBvcnQgZnVuY3Rpb24gam9pbiguLi5wYXRoczogc3RyaW5nW10pOiBzdHJpbmcge1xuICBpZiAocGF0aHMubGVuZ3RoID09PSAwKSByZXR1cm4gXCIuXCI7XG4gIGxldCBqb2luZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHBhdGhzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgY29uc3QgcGF0aCA9IHBhdGhzW2ldO1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG4gICAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFqb2luZWQpIGpvaW5lZCA9IHBhdGg7XG4gICAgICBlbHNlIGpvaW5lZCArPSBgLyR7cGF0aH1gO1xuICAgIH1cbiAgfVxuICBpZiAoIWpvaW5lZCkgcmV0dXJuIFwiLlwiO1xuICByZXR1cm4gbm9ybWFsaXplKGpvaW5lZCk7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gYGZyb21gIHRvIGB0b2AgYmFzZWQgb24gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIEBwYXJhbSBmcm9tIHBhdGggaW4gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeVxuICogQHBhcmFtIHRvIHBhdGggaW4gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmUoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0UGF0aChmcm9tKTtcbiAgYXNzZXJ0UGF0aCh0byk7XG5cbiAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gXCJcIjtcblxuICBmcm9tID0gcmVzb2x2ZShmcm9tKTtcbiAgdG8gPSByZXNvbHZlKHRvKTtcblxuICBpZiAoZnJvbSA9PT0gdG8pIHJldHVybiBcIlwiO1xuXG4gIC8vIFRyaW0gYW55IGxlYWRpbmcgYmFja3NsYXNoZXNcbiAgbGV0IGZyb21TdGFydCA9IDE7XG4gIGNvbnN0IGZyb21FbmQgPSBmcm9tLmxlbmd0aDtcbiAgZm9yICg7IGZyb21TdGFydCA8IGZyb21FbmQ7ICsrZnJvbVN0YXJ0KSB7XG4gICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQpICE9PSBDSEFSX0ZPUldBUkRfU0xBU0gpIGJyZWFrO1xuICB9XG4gIGNvbnN0IGZyb21MZW4gPSBmcm9tRW5kIC0gZnJvbVN0YXJ0O1xuXG4gIC8vIFRyaW0gYW55IGxlYWRpbmcgYmFja3NsYXNoZXNcbiAgbGV0IHRvU3RhcnQgPSAxO1xuICBjb25zdCB0b0VuZCA9IHRvLmxlbmd0aDtcbiAgZm9yICg7IHRvU3RhcnQgPCB0b0VuZDsgKyt0b1N0YXJ0KSB7XG4gICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCkgIT09IENIQVJfRk9SV0FSRF9TTEFTSCkgYnJlYWs7XG4gIH1cbiAgY29uc3QgdG9MZW4gPSB0b0VuZCAtIHRvU3RhcnQ7XG5cbiAgLy8gQ29tcGFyZSBwYXRocyB0byBmaW5kIHRoZSBsb25nZXN0IGNvbW1vbiBwYXRoIGZyb20gcm9vdFxuICBjb25zdCBsZW5ndGggPSBmcm9tTGVuIDwgdG9MZW4gPyBmcm9tTGVuIDogdG9MZW47XG4gIGxldCBsYXN0Q29tbW9uU2VwID0gLTE7XG4gIGxldCBpID0gMDtcbiAgZm9yICg7IGkgPD0gbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoaSA9PT0gbGVuZ3RoKSB7XG4gICAgICBpZiAodG9MZW4gPiBsZW5ndGgpIHtcbiAgICAgICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCArIGkpID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYHRvYC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nL2Zvby9iYXInOyB0bz0nL2Zvby9iYXIvYmF6J1xuICAgICAgICAgIHJldHVybiB0by5zbGljZSh0b1N0YXJ0ICsgaSArIDEpO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIHJvb3RcbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nLyc7IHRvPScvZm9vJ1xuICAgICAgICAgIHJldHVybiB0by5zbGljZSh0b1N0YXJ0ICsgaSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZnJvbUxlbiA+IGxlbmd0aCkge1xuICAgICAgICBpZiAoZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCArIGkpID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgdG9gIGlzIHRoZSBleGFjdCBiYXNlIHBhdGggZm9yIGBmcm9tYC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nL2Zvby9iYXIvYmF6JzsgdG89Jy9mb28vYmFyJ1xuICAgICAgICAgIGxhc3RDb21tb25TZXAgPSBpO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgdG9gIGlzIHRoZSByb290LlxuICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvZm9vJzsgdG89Jy8nXG4gICAgICAgICAgbGFzdENvbW1vblNlcCA9IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjb25zdCBmcm9tQ29kZSA9IGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQgKyBpKTtcbiAgICBjb25zdCB0b0NvZGUgPSB0by5jaGFyQ29kZUF0KHRvU3RhcnQgKyBpKTtcbiAgICBpZiAoZnJvbUNvZGUgIT09IHRvQ29kZSkgYnJlYWs7XG4gICAgZWxzZSBpZiAoZnJvbUNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSCkgbGFzdENvbW1vblNlcCA9IGk7XG4gIH1cblxuICBsZXQgb3V0ID0gXCJcIjtcbiAgLy8gR2VuZXJhdGUgdGhlIHJlbGF0aXZlIHBhdGggYmFzZWQgb24gdGhlIHBhdGggZGlmZmVyZW5jZSBiZXR3ZWVuIGB0b2BcbiAgLy8gYW5kIGBmcm9tYFxuICBmb3IgKGkgPSBmcm9tU3RhcnQgKyBsYXN0Q29tbW9uU2VwICsgMTsgaSA8PSBmcm9tRW5kOyArK2kpIHtcbiAgICBpZiAoaSA9PT0gZnJvbUVuZCB8fCBmcm9tLmNoYXJDb2RlQXQoaSkgPT09IENIQVJfRk9SV0FSRF9TTEFTSCkge1xuICAgICAgaWYgKG91dC5sZW5ndGggPT09IDApIG91dCArPSBcIi4uXCI7XG4gICAgICBlbHNlIG91dCArPSBcIi8uLlwiO1xuICAgIH1cbiAgfVxuXG4gIC8vIExhc3RseSwgYXBwZW5kIHRoZSByZXN0IG9mIHRoZSBkZXN0aW5hdGlvbiAoYHRvYCkgcGF0aCB0aGF0IGNvbWVzIGFmdGVyXG4gIC8vIHRoZSBjb21tb24gcGF0aCBwYXJ0c1xuICBpZiAob3V0Lmxlbmd0aCA+IDApIHJldHVybiBvdXQgKyB0by5zbGljZSh0b1N0YXJ0ICsgbGFzdENvbW1vblNlcCk7XG4gIGVsc2Uge1xuICAgIHRvU3RhcnQgKz0gbGFzdENvbW1vblNlcDtcbiAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSArK3RvU3RhcnQ7XG4gICAgcmV0dXJuIHRvLnNsaWNlKHRvU3RhcnQpO1xuICB9XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgcGF0aCB0byBhIG5hbWVzcGFjZSBwYXRoXG4gKiBAcGFyYW0gcGF0aCB0byByZXNvbHZlIHRvIG5hbWVzcGFjZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9OYW1lc3BhY2VkUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBOb24tb3Agb24gcG9zaXggc3lzdGVtc1xuICByZXR1cm4gcGF0aDtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGRpcmVjdG9yeSBuYW1lIG9mIGEgYHBhdGhgLlxuICogQHBhcmFtIHBhdGggdG8gZGV0ZXJtaW5lIG5hbWUgZm9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXJuYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiLlwiO1xuICBjb25zdCBoYXNSb290ID0gcGF0aC5jaGFyQ29kZUF0KDApID09PSBDSEFSX0ZPUldBUkRfU0xBU0g7XG4gIGxldCBlbmQgPSAtMTtcbiAgbGV0IG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIGZvciAobGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMTsgLS1pKSB7XG4gICAgaWYgKHBhdGguY2hhckNvZGVBdChpKSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSB7XG4gICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICBlbmQgPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3JcbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChlbmQgPT09IC0xKSByZXR1cm4gaGFzUm9vdCA/IFwiL1wiIDogXCIuXCI7XG4gIGlmIChoYXNSb290ICYmIGVuZCA9PT0gMSkgcmV0dXJuIFwiLy9cIjtcbiAgcmV0dXJuIHBhdGguc2xpY2UoMCwgZW5kKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGxhc3QgcG9ydGlvbiBvZiBhIGBwYXRoYC4gVHJhaWxpbmcgZGlyZWN0b3J5IHNlcGFyYXRvcnMgYXJlIGlnbm9yZWQuXG4gKiBAcGFyYW0gcGF0aCB0byBwcm9jZXNzXG4gKiBAcGFyYW0gZXh0IG9mIHBhdGggZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYXNlbmFtZShwYXRoOiBzdHJpbmcsIGV4dCA9IFwiXCIpOiBzdHJpbmcge1xuICBpZiAoZXh0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGV4dCAhPT0gXCJzdHJpbmdcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZXh0XCIgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpO1xuICB9XG4gIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgbGV0IHN0YXJ0ID0gMDtcbiAgbGV0IGVuZCA9IC0xO1xuICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgbGV0IGk6IG51bWJlcjtcblxuICBpZiAoZXh0ICE9PSB1bmRlZmluZWQgJiYgZXh0Lmxlbmd0aCA+IDAgJiYgZXh0Lmxlbmd0aCA8PSBwYXRoLmxlbmd0aCkge1xuICAgIGlmIChleHQubGVuZ3RoID09PSBwYXRoLmxlbmd0aCAmJiBleHQgPT09IHBhdGgpIHJldHVybiBcIlwiO1xuICAgIGxldCBleHRJZHggPSBleHQubGVuZ3RoIC0gMTtcbiAgICBsZXQgZmlyc3ROb25TbGFzaEVuZCA9IC0xO1xuICAgIGZvciAoaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgICBpZiAoY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSB7XG4gICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgIHN0YXJ0ID0gaSArIDE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmaXJzdE5vblNsYXNoRW5kID09PSAtMSkge1xuICAgICAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCByZW1lbWJlciB0aGlzIGluZGV4IGluIGNhc2VcbiAgICAgICAgICAvLyB3ZSBuZWVkIGl0IGlmIHRoZSBleHRlbnNpb24gZW5kcyB1cCBub3QgbWF0Y2hpbmdcbiAgICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgICBmaXJzdE5vblNsYXNoRW5kID0gaSArIDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4dElkeCA+PSAwKSB7XG4gICAgICAgICAgLy8gVHJ5IHRvIG1hdGNoIHRoZSBleHBsaWNpdCBleHRlbnNpb25cbiAgICAgICAgICBpZiAoY29kZSA9PT0gZXh0LmNoYXJDb2RlQXQoZXh0SWR4KSkge1xuICAgICAgICAgICAgaWYgKC0tZXh0SWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIHRoZSBleHRlbnNpb24sIHNvIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91ciBwYXRoXG4gICAgICAgICAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBFeHRlbnNpb24gZG9lcyBub3QgbWF0Y2gsIHNvIG91ciByZXN1bHQgaXMgdGhlIGVudGlyZSBwYXRoXG4gICAgICAgICAgICAvLyBjb21wb25lbnRcbiAgICAgICAgICAgIGV4dElkeCA9IC0xO1xuICAgICAgICAgICAgZW5kID0gZmlyc3ROb25TbGFzaEVuZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPT09IGVuZCkgZW5kID0gZmlyc3ROb25TbGFzaEVuZDtcbiAgICBlbHNlIGlmIChlbmQgPT09IC0xKSBlbmQgPSBwYXRoLmxlbmd0aDtcbiAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KGkpID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgICAgLy8gcGF0aCBjb21wb25lbnRcbiAgICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICAgIGVuZCA9IGkgKyAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbmQgPT09IC0xKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBgcGF0aGAgd2l0aCBsZWFkaW5nIHBlcmlvZC5cbiAqIEBwYXJhbSBwYXRoIHdpdGggZXh0ZW5zaW9uXG4gKiBAcmV0dXJucyBleHRlbnNpb24gKGV4LiBmb3IgYGZpbGUudHNgIHJldHVybnMgYC50c2ApXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRuYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG4gIGxldCBzdGFydERvdCA9IC0xO1xuICBsZXQgc3RhcnRQYXJ0ID0gMDtcbiAgbGV0IGVuZCA9IC0xO1xuICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgLy8gVHJhY2sgdGhlIHN0YXRlIG9mIGNoYXJhY3RlcnMgKGlmIGFueSkgd2Ugc2VlIGJlZm9yZSBvdXIgZmlyc3QgZG90IGFuZFxuICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICBsZXQgcHJlRG90U3RhdGUgPSAwO1xuICBmb3IgKGxldCBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSCkge1xuICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAvLyBleHRlbnNpb25cbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgZW5kID0gaSArIDE7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSBDSEFSX0RPVCkge1xuICAgICAgLy8gSWYgdGhpcyBpcyBvdXIgZmlyc3QgZG90LCBtYXJrIGl0IGFzIHRoZSBzdGFydCBvZiBvdXIgZXh0ZW5zaW9uXG4gICAgICBpZiAoc3RhcnREb3QgPT09IC0xKSBzdGFydERvdCA9IGk7XG4gICAgICBlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSkgcHJlRG90U3RhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoc3RhcnREb3QgIT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgYSBub24tZG90IGFuZCBub24tcGF0aCBzZXBhcmF0b3IgYmVmb3JlIG91ciBkb3QsIHNvIHdlIHNob3VsZFxuICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgIHByZURvdFN0YXRlID0gLTE7XG4gICAgfVxuICB9XG5cbiAgaWYgKFxuICAgIHN0YXJ0RG90ID09PSAtMSB8fFxuICAgIGVuZCA9PT0gLTEgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgIChwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSlcbiAgKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbiAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnREb3QsIGVuZCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBwYXRoIGZyb20gYEZvcm1hdElucHV0UGF0aE9iamVjdGAgb2JqZWN0LlxuICogQHBhcmFtIHBhdGhPYmplY3Qgd2l0aCBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXQocGF0aE9iamVjdDogRm9ybWF0SW5wdXRQYXRoT2JqZWN0KTogc3RyaW5nIHtcbiAgaWYgKHBhdGhPYmplY3QgPT09IG51bGwgfHwgdHlwZW9mIHBhdGhPYmplY3QgIT09IFwib2JqZWN0XCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYFRoZSBcInBhdGhPYmplY3RcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIHBhdGhPYmplY3R9YCxcbiAgICApO1xuICB9XG4gIHJldHVybiBfZm9ybWF0KFwiL1wiLCBwYXRoT2JqZWN0KTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gYSBgUGFyc2VkUGF0aGAgb2JqZWN0IG9mIHRoZSBgcGF0aGAuXG4gKiBAcGFyYW0gcGF0aCB0byBwcm9jZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShwYXRoOiBzdHJpbmcpOiBQYXJzZWRQYXRoIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICBjb25zdCByZXQ6IFBhcnNlZFBhdGggPSB7IHJvb3Q6IFwiXCIsIGRpcjogXCJcIiwgYmFzZTogXCJcIiwgZXh0OiBcIlwiLCBuYW1lOiBcIlwiIH07XG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHJldDtcbiAgY29uc3QgaXNBYnNvbHV0ZSA9IHBhdGguY2hhckNvZGVBdCgwKSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xuICBsZXQgc3RhcnQ6IG51bWJlcjtcbiAgaWYgKGlzQWJzb2x1dGUpIHtcbiAgICByZXQucm9vdCA9IFwiL1wiO1xuICAgIHN0YXJ0ID0gMTtcbiAgfSBlbHNlIHtcbiAgICBzdGFydCA9IDA7XG4gIH1cbiAgbGV0IHN0YXJ0RG90ID0gLTE7XG4gIGxldCBzdGFydFBhcnQgPSAwO1xuICBsZXQgZW5kID0gLTE7XG4gIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICBsZXQgaSA9IHBhdGgubGVuZ3RoIC0gMTtcblxuICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gIC8vIGFmdGVyIGFueSBwYXRoIHNlcGFyYXRvciB3ZSBmaW5kXG4gIGxldCBwcmVEb3RTdGF0ZSA9IDA7XG5cbiAgLy8gR2V0IG5vbi1kaXIgaW5mb1xuICBmb3IgKDsgaSA+PSBzdGFydDsgLS1pKSB7XG4gICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICBpZiAoY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSB7XG4gICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICBzdGFydFBhcnQgPSBpICsgMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICBlbmQgPSBpICsgMTtcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IENIQVJfRE9UKSB7XG4gICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgIGlmIChzdGFydERvdCA9PT0gLTEpIHN0YXJ0RG90ID0gaTtcbiAgICAgIGVsc2UgaWYgKHByZURvdFN0YXRlICE9PSAxKSBwcmVEb3RTdGF0ZSA9IDE7XG4gICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgYW5kIG5vbi1wYXRoIHNlcGFyYXRvciBiZWZvcmUgb3VyIGRvdCwgc28gd2Ugc2hvdWxkXG4gICAgICAvLyBoYXZlIGEgZ29vZCBjaGFuY2UgYXQgaGF2aW5nIGEgbm9uLWVtcHR5IGV4dGVuc2lvblxuICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICB9XG4gIH1cblxuICBpZiAoXG4gICAgc3RhcnREb3QgPT09IC0xIHx8XG4gICAgZW5kID09PSAtMSB8fFxuICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgY2hhcmFjdGVyIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgZG90XG4gICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAvLyBUaGUgKHJpZ2h0LW1vc3QpIHRyaW1tZWQgcGF0aCBjb21wb25lbnQgaXMgZXhhY3RseSAnLi4nXG4gICAgKHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKVxuICApIHtcbiAgICBpZiAoZW5kICE9PSAtMSkge1xuICAgICAgaWYgKHN0YXJ0UGFydCA9PT0gMCAmJiBpc0Fic29sdXRlKSB7XG4gICAgICAgIHJldC5iYXNlID0gcmV0Lm5hbWUgPSBwYXRoLnNsaWNlKDEsIGVuZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXQuYmFzZSA9IHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChzdGFydFBhcnQgPT09IDAgJiYgaXNBYnNvbHV0ZSkge1xuICAgICAgcmV0Lm5hbWUgPSBwYXRoLnNsaWNlKDEsIHN0YXJ0RG90KTtcbiAgICAgIHJldC5iYXNlID0gcGF0aC5zbGljZSgxLCBlbmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXQubmFtZSA9IHBhdGguc2xpY2Uoc3RhcnRQYXJ0LCBzdGFydERvdCk7XG4gICAgICByZXQuYmFzZSA9IHBhdGguc2xpY2Uoc3RhcnRQYXJ0LCBlbmQpO1xuICAgIH1cbiAgICByZXQuZXh0ID0gcGF0aC5zbGljZShzdGFydERvdCwgZW5kKTtcbiAgfVxuXG4gIGlmIChzdGFydFBhcnQgPiAwKSByZXQuZGlyID0gcGF0aC5zbGljZSgwLCBzdGFydFBhcnQgLSAxKTtcbiAgZWxzZSBpZiAoaXNBYnNvbHV0ZSkgcmV0LmRpciA9IFwiL1wiO1xuXG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBmaWxlIFVSTCB0byBhIHBhdGggc3RyaW5nLlxuICpcbiAqIGBgYHRzXG4gKiAgICAgIGltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcIi4vcG9zaXgudHNcIjtcbiAqICAgICAgZnJvbUZpbGVVcmwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpOyAvLyBcIi9ob21lL2Zvb1wiXG4gKiBgYGBcbiAqIEBwYXJhbSB1cmwgb2YgYSBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUZpbGVVcmwodXJsOiBzdHJpbmcgfCBVUkwpOiBzdHJpbmcge1xuICB1cmwgPSB1cmwgaW5zdGFuY2VvZiBVUkwgPyB1cmwgOiBuZXcgVVJMKHVybCk7XG4gIGlmICh1cmwucHJvdG9jb2wgIT0gXCJmaWxlOlwiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYSBmaWxlIFVSTC5cIik7XG4gIH1cbiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChcbiAgICB1cmwucGF0aG5hbWUucmVwbGFjZSgvJSg/IVswLTlBLUZhLWZdezJ9KS9nLCBcIiUyNVwiKSxcbiAgKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHBhdGggc3RyaW5nIHRvIGEgZmlsZSBVUkwuXG4gKlxuICogYGBgdHNcbiAqICAgICAgaW1wb3J0IHsgdG9GaWxlVXJsIH0gZnJvbSBcIi4vcG9zaXgudHNcIjtcbiAqICAgICAgdG9GaWxlVXJsKFwiL2hvbWUvZm9vXCIpOyAvLyBuZXcgVVJMKFwiZmlsZTovLy9ob21lL2Zvb1wiKVxuICogYGBgXG4gKiBAcGFyYW0gcGF0aCB0byBjb252ZXJ0IHRvIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0ZpbGVVcmwocGF0aDogc3RyaW5nKTogVVJMIHtcbiAgaWYgKCFpc0Fic29sdXRlKHBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5cIik7XG4gIH1cbiAgY29uc3QgdXJsID0gbmV3IFVSTChcImZpbGU6Ly8vXCIpO1xuICB1cmwucGF0aG5hbWUgPSBlbmNvZGVXaGl0ZXNwYWNlKFxuICAgIHBhdGgucmVwbGFjZSgvJS9nLCBcIiUyNVwiKS5yZXBsYWNlKC9cXFxcL2csIFwiJTVDXCIpLFxuICApO1xuICByZXR1cm4gdXJsO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGlzV2luZG93cywgb3NUeXBlIH0gZnJvbSBcIi4uL191dGlsL29zLnRzXCI7XG5pbXBvcnQgeyBTRVAsIFNFUF9QQVRURVJOIH0gZnJvbSBcIi4vc2VwYXJhdG9yLnRzXCI7XG5pbXBvcnQgKiBhcyBfd2luMzIgZnJvbSBcIi4vd2luMzIudHNcIjtcbmltcG9ydCAqIGFzIF9wb3NpeCBmcm9tIFwiLi9wb3NpeC50c1wiO1xuaW1wb3J0IHR5cGUgeyBPU1R5cGUgfSBmcm9tIFwiLi4vX3V0aWwvb3MudHNcIjtcblxuY29uc3QgcGF0aCA9IGlzV2luZG93cyA/IF93aW4zMiA6IF9wb3NpeDtcbmNvbnN0IHsgam9pbiwgbm9ybWFsaXplIH0gPSBwYXRoO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JPcHRpb25zIHtcbiAgLyoqIEV4dGVuZGVkIGdsb2Igc3ludGF4LlxuICAgKiBTZWUgaHR0cHM6Ly93d3cubGludXhqb3VybmFsLmNvbS9jb250ZW50L2Jhc2gtZXh0ZW5kZWQtZ2xvYmJpbmcuIERlZmF1bHRzXG4gICAqIHRvIHRydWUuICovXG4gIGV4dGVuZGVkPzogYm9vbGVhbjtcbiAgLyoqIEdsb2JzdGFyIHN5bnRheC5cbiAgICogU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9nbG9ic3Rhci1uZXctYmFzaC1nbG9iYmluZy1vcHRpb24uXG4gICAqIElmIGZhbHNlLCBgKipgIGlzIHRyZWF0ZWQgbGlrZSBgKmAuIERlZmF1bHRzIHRvIHRydWUuICovXG4gIGdsb2JzdGFyPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgZ2xvYnN0YXIgc2hvdWxkIGJlIGNhc2UgaW5zZW5zaXRpdmUuICovXG4gIGNhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW47XG4gIC8qKiBPcGVyYXRpbmcgc3lzdGVtLiBEZWZhdWx0cyB0byB0aGUgbmF0aXZlIE9TLiAqL1xuICBvcz86IE9TVHlwZTtcbn1cblxuZXhwb3J0IHR5cGUgR2xvYlRvUmVnRXhwT3B0aW9ucyA9IEdsb2JPcHRpb25zO1xuXG5jb25zdCByZWdFeHBFc2NhcGVDaGFycyA9IFtcbiAgXCIhXCIsXG4gIFwiJFwiLFxuICBcIihcIixcbiAgXCIpXCIsXG4gIFwiKlwiLFxuICBcIitcIixcbiAgXCIuXCIsXG4gIFwiPVwiLFxuICBcIj9cIixcbiAgXCJbXCIsXG4gIFwiXFxcXFwiLFxuICBcIl5cIixcbiAgXCJ7XCIsXG4gIFwifFwiLFxuXTtcbmNvbnN0IHJhbmdlRXNjYXBlQ2hhcnMgPSBbXCItXCIsIFwiXFxcXFwiLCBcIl1cIl07XG5cbi8qKiBDb252ZXJ0IGEgZ2xvYiBzdHJpbmcgdG8gYSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKlxuICogVHJpZXMgdG8gbWF0Y2ggYmFzaCBnbG9iIGV4cGFuc2lvbiBhcyBjbG9zZWx5IGFzIHBvc3NpYmxlLlxuICpcbiAqIEJhc2ljIGdsb2Igc3ludGF4OlxuICogLSBgKmAgLSBNYXRjaGVzIGV2ZXJ5dGhpbmcgd2l0aG91dCBsZWF2aW5nIHRoZSBwYXRoIHNlZ21lbnQuXG4gKiAtIGA/YCAtIE1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIuXG4gKiAtIGB7Zm9vLGJhcn1gIC0gTWF0Y2hlcyBgZm9vYCBvciBgYmFyYC5cbiAqIC0gYFthYmNkXWAgLSBNYXRjaGVzIGBhYCwgYGJgLCBgY2Agb3IgYGRgLlxuICogLSBgW2EtZF1gIC0gTWF0Y2hlcyBgYWAsIGBiYCwgYGNgIG9yIGBkYC5cbiAqIC0gYFshYWJjZF1gIC0gTWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciBiZXNpZGVzIGBhYCwgYGJgLCBgY2Agb3IgYGRgLlxuICogLSBgW1s6PGNsYXNzPjpdXWAgLSBNYXRjaGVzIGFueSBjaGFyYWN0ZXIgYmVsb25naW5nIHRvIGA8Y2xhc3M+YC5cbiAqICAgICAtIGBbWzphbG51bTpdXWAgLSBNYXRjaGVzIGFueSBkaWdpdCBvciBsZXR0ZXIuXG4gKiAgICAgLSBgW1s6ZGlnaXQ6XWFiY11gIC0gTWF0Y2hlcyBhbnkgZGlnaXQsIGBhYCwgYGJgIG9yIGBjYC5cbiAqICAgICAtIFNlZSBodHRwczovL2ZhY2VsZXNzdXNlci5naXRodWIuaW8vd2NtYXRjaC9nbG9iLyNwb3NpeC1jaGFyYWN0ZXItY2xhc3Nlc1xuICogICAgICAgZm9yIGEgY29tcGxldGUgbGlzdCBvZiBzdXBwb3J0ZWQgY2hhcmFjdGVyIGNsYXNzZXMuXG4gKiAtIGBcXGAgLSBFc2NhcGVzIHRoZSBuZXh0IGNoYXJhY3RlciBmb3IgYW4gYG9zYCBvdGhlciB0aGFuIGBcIndpbmRvd3NcImAuXG4gKiAtIFxcYCAtIEVzY2FwZXMgdGhlIG5leHQgY2hhcmFjdGVyIGZvciBgb3NgIHNldCB0byBgXCJ3aW5kb3dzXCJgLlxuICogLSBgL2AgLSBQYXRoIHNlcGFyYXRvci5cbiAqIC0gYFxcYCAtIEFkZGl0aW9uYWwgcGF0aCBzZXBhcmF0b3Igb25seSBmb3IgYG9zYCBzZXQgdG8gYFwid2luZG93c1wiYC5cbiAqXG4gKiBFeHRlbmRlZCBzeW50YXg6XG4gKiAtIFJlcXVpcmVzIGB7IGV4dGVuZGVkOiB0cnVlIH1gLlxuICogLSBgPyhmb298YmFyKWAgLSBNYXRjaGVzIDAgb3IgMSBpbnN0YW5jZSBvZiBge2ZvbyxiYXJ9YC5cbiAqIC0gYEAoZm9vfGJhcilgIC0gTWF0Y2hlcyAxIGluc3RhbmNlIG9mIGB7Zm9vLGJhcn1gLiBUaGV5IGJlaGF2ZSB0aGUgc2FtZS5cbiAqIC0gYCooZm9vfGJhcilgIC0gTWF0Y2hlcyBfbl8gaW5zdGFuY2VzIG9mIGB7Zm9vLGJhcn1gLlxuICogLSBgKyhmb298YmFyKWAgLSBNYXRjaGVzIF9uID4gMF8gaW5zdGFuY2VzIG9mIGB7Zm9vLGJhcn1gLlxuICogLSBgIShmb298YmFyKWAgLSBNYXRjaGVzIGFueXRoaW5nIG90aGVyIHRoYW4gYHtmb28sYmFyfWAuXG4gKiAtIFNlZSBodHRwczovL3d3dy5saW51eGpvdXJuYWwuY29tL2NvbnRlbnQvYmFzaC1leHRlbmRlZC1nbG9iYmluZy5cbiAqXG4gKiBHbG9ic3RhciBzeW50YXg6XG4gKiAtIFJlcXVpcmVzIGB7IGdsb2JzdGFyOiB0cnVlIH1gLlxuICogLSBgKipgIC0gTWF0Y2hlcyBhbnkgbnVtYmVyIG9mIGFueSBwYXRoIHNlZ21lbnRzLlxuICogICAgIC0gTXVzdCBjb21wcmlzZSBpdHMgZW50aXJlIHBhdGggc2VnbWVudCBpbiB0aGUgcHJvdmlkZWQgZ2xvYi5cbiAqIC0gU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9nbG9ic3Rhci1uZXctYmFzaC1nbG9iYmluZy1vcHRpb24uXG4gKlxuICogTm90ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKiAtIFRoZSBnZW5lcmF0ZWQgYFJlZ0V4cGAgaXMgYW5jaG9yZWQgYXQgYm90aCBzdGFydCBhbmQgZW5kLlxuICogLSBSZXBlYXRpbmcgYW5kIHRyYWlsaW5nIHNlcGFyYXRvcnMgYXJlIHRvbGVyYXRlZC4gVHJhaWxpbmcgc2VwYXJhdG9ycyBpbiB0aGVcbiAqICAgcHJvdmlkZWQgZ2xvYiBoYXZlIG5vIG1lYW5pbmcgYW5kIGFyZSBkaXNjYXJkZWQuXG4gKiAtIEFic29sdXRlIGdsb2JzIHdpbGwgb25seSBtYXRjaCBhYnNvbHV0ZSBwYXRocywgZXRjLlxuICogLSBFbXB0eSBnbG9icyB3aWxsIG1hdGNoIG5vdGhpbmcuXG4gKiAtIEFueSBzcGVjaWFsIGdsb2Igc3ludGF4IG11c3QgYmUgY29udGFpbmVkIHRvIG9uZSBwYXRoIHNlZ21lbnQuIEZvciBleGFtcGxlLFxuICogICBgPyhmb298YmFyL2JheilgIGlzIGludmFsaWQuIFRoZSBzZXBhcmF0b3Igd2lsbCB0YWtlIHByZWNlZGVuY2UgYW5kIHRoZVxuICogICBmaXJzdCBzZWdtZW50IGVuZHMgd2l0aCBhbiB1bmNsb3NlZCBncm91cC5cbiAqIC0gSWYgYSBwYXRoIHNlZ21lbnQgZW5kcyB3aXRoIHVuY2xvc2VkIGdyb3VwcyBvciBhIGRhbmdsaW5nIGVzY2FwZSBwcmVmaXgsIGFcbiAqICAgcGFyc2UgZXJyb3IgaGFzIG9jY3VycmVkLiBFdmVyeSBjaGFyYWN0ZXIgZm9yIHRoYXQgc2VnbWVudCBpcyB0YWtlblxuICogICBsaXRlcmFsbHkgaW4gdGhpcyBldmVudC5cbiAqXG4gKiBMaW1pdGF0aW9uczpcbiAqIC0gQSBuZWdhdGl2ZSBncm91cCBsaWtlIGAhKGZvb3xiYXIpYCB3aWxsIHdyb25nbHkgYmUgY29udmVydGVkIHRvIGEgbmVnYXRpdmVcbiAqICAgbG9vay1haGVhZCBmb2xsb3dlZCBieSBhIHdpbGRjYXJkLiBUaGlzIG1lYW5zIHRoYXQgYCEoZm9vKS5qc2Agd2lsbCB3cm9uZ2x5XG4gKiAgIGZhaWwgdG8gbWF0Y2ggYGZvb2Jhci5qc2AsIGV2ZW4gdGhvdWdoIGBmb29iYXJgIGlzIG5vdCBgZm9vYC4gRWZmZWN0aXZlbHksXG4gKiAgIGAhKGZvb3xiYXIpYCBpcyB0cmVhdGVkIGxpa2UgYCEoQChmb298YmFyKSopYC4gVGhpcyB3aWxsIHdvcmsgY29ycmVjdGx5IGlmXG4gKiAgIHRoZSBncm91cCBvY2N1cnMgbm90IG5lc3RlZCBhdCB0aGUgZW5kIG9mIHRoZSBzZWdtZW50LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdsb2JUb1JlZ0V4cChcbiAgZ2xvYjogc3RyaW5nLFxuICB7XG4gICAgZXh0ZW5kZWQgPSB0cnVlLFxuICAgIGdsb2JzdGFyOiBnbG9ic3Rhck9wdGlvbiA9IHRydWUsXG4gICAgb3MgPSBvc1R5cGUsXG4gICAgY2FzZUluc2Vuc2l0aXZlID0gZmFsc2UsXG4gIH06IEdsb2JUb1JlZ0V4cE9wdGlvbnMgPSB7fSxcbik6IFJlZ0V4cCB7XG4gIGlmIChnbG9iID09IFwiXCIpIHtcbiAgICByZXR1cm4gLyg/ISkvO1xuICB9XG5cbiAgY29uc3Qgc2VwID0gb3MgPT0gXCJ3aW5kb3dzXCIgPyBcIig/OlxcXFxcXFxcfC8pK1wiIDogXCIvK1wiO1xuICBjb25zdCBzZXBNYXliZSA9IG9zID09IFwid2luZG93c1wiID8gXCIoPzpcXFxcXFxcXHwvKSpcIiA6IFwiLypcIjtcbiAgY29uc3Qgc2VwcyA9IG9zID09IFwid2luZG93c1wiID8gW1wiXFxcXFwiLCBcIi9cIl0gOiBbXCIvXCJdO1xuICBjb25zdCBnbG9ic3RhciA9IG9zID09IFwid2luZG93c1wiXG4gICAgPyBcIig/OlteXFxcXFxcXFwvXSooPzpcXFxcXFxcXHwvfCQpKykqXCJcbiAgICA6IFwiKD86W14vXSooPzovfCQpKykqXCI7XG4gIGNvbnN0IHdpbGRjYXJkID0gb3MgPT0gXCJ3aW5kb3dzXCIgPyBcIlteXFxcXFxcXFwvXSpcIiA6IFwiW14vXSpcIjtcbiAgY29uc3QgZXNjYXBlUHJlZml4ID0gb3MgPT0gXCJ3aW5kb3dzXCIgPyBcImBcIiA6IFwiXFxcXFwiO1xuXG4gIC8vIFJlbW92ZSB0cmFpbGluZyBzZXBhcmF0b3JzLlxuICBsZXQgbmV3TGVuZ3RoID0gZ2xvYi5sZW5ndGg7XG4gIGZvciAoOyBuZXdMZW5ndGggPiAxICYmIHNlcHMuaW5jbHVkZXMoZ2xvYltuZXdMZW5ndGggLSAxXSk7IG5ld0xlbmd0aC0tKTtcbiAgZ2xvYiA9IGdsb2Iuc2xpY2UoMCwgbmV3TGVuZ3RoKTtcblxuICBsZXQgcmVnRXhwU3RyaW5nID0gXCJcIjtcblxuICAvLyBUZXJtaW5hdGVzIGNvcnJlY3RseS4gVHJ1c3QgdGhhdCBgamAgaXMgaW5jcmVtZW50ZWQgZXZlcnkgaXRlcmF0aW9uLlxuICBmb3IgKGxldCBqID0gMDsgaiA8IGdsb2IubGVuZ3RoOykge1xuICAgIGxldCBzZWdtZW50ID0gXCJcIjtcbiAgICBjb25zdCBncm91cFN0YWNrOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBpblJhbmdlID0gZmFsc2U7XG4gICAgbGV0IGluRXNjYXBlID0gZmFsc2U7XG4gICAgbGV0IGVuZHNXaXRoU2VwID0gZmFsc2U7XG4gICAgbGV0IGkgPSBqO1xuXG4gICAgLy8gVGVybWluYXRlcyB3aXRoIGBpYCBhdCB0aGUgbm9uLWluY2x1c2l2ZSBlbmQgb2YgdGhlIGN1cnJlbnQgc2VnbWVudC5cbiAgICBmb3IgKDsgaSA8IGdsb2IubGVuZ3RoICYmICFzZXBzLmluY2x1ZGVzKGdsb2JbaV0pOyBpKyspIHtcbiAgICAgIGlmIChpbkVzY2FwZSkge1xuICAgICAgICBpbkVzY2FwZSA9IGZhbHNlO1xuICAgICAgICBjb25zdCBlc2NhcGVDaGFycyA9IGluUmFuZ2UgPyByYW5nZUVzY2FwZUNoYXJzIDogcmVnRXhwRXNjYXBlQ2hhcnM7XG4gICAgICAgIHNlZ21lbnQgKz0gZXNjYXBlQ2hhcnMuaW5jbHVkZXMoZ2xvYltpXSkgPyBgXFxcXCR7Z2xvYltpXX1gIDogZ2xvYltpXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IGVzY2FwZVByZWZpeCkge1xuICAgICAgICBpbkVzY2FwZSA9IHRydWU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PSBcIltcIikge1xuICAgICAgICBpZiAoIWluUmFuZ2UpIHtcbiAgICAgICAgICBpblJhbmdlID0gdHJ1ZTtcbiAgICAgICAgICBzZWdtZW50ICs9IFwiW1wiO1xuICAgICAgICAgIGlmIChnbG9iW2kgKyAxXSA9PSBcIiFcIikge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgc2VnbWVudCArPSBcIl5cIjtcbiAgICAgICAgICB9IGVsc2UgaWYgKGdsb2JbaSArIDFdID09IFwiXlwiKSB7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgICAgICBzZWdtZW50ICs9IFwiXFxcXF5cIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSBpZiAoZ2xvYltpICsgMV0gPT0gXCI6XCIpIHtcbiAgICAgICAgICBsZXQgayA9IGkgKyAxO1xuICAgICAgICAgIGxldCB2YWx1ZSA9IFwiXCI7XG4gICAgICAgICAgd2hpbGUgKGdsb2JbayArIDFdICE9IG51bGwgJiYgZ2xvYltrICsgMV0gIT0gXCI6XCIpIHtcbiAgICAgICAgICAgIHZhbHVlICs9IGdsb2JbayArIDFdO1xuICAgICAgICAgICAgaysrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZ2xvYltrICsgMV0gPT0gXCI6XCIgJiYgZ2xvYltrICsgMl0gPT0gXCJdXCIpIHtcbiAgICAgICAgICAgIGkgPSBrICsgMjtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBcImFsbnVtXCIpIHNlZ21lbnQgKz0gXCJcXFxcZEEtWmEtelwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJhbHBoYVwiKSBzZWdtZW50ICs9IFwiQS1aYS16XCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBcImFzY2lpXCIpIHNlZ21lbnQgKz0gXCJcXHgwMC1cXHg3RlwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJibGFua1wiKSBzZWdtZW50ICs9IFwiXFx0IFwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJjbnRybFwiKSBzZWdtZW50ICs9IFwiXFx4MDAtXFx4MUZcXHg3RlwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJkaWdpdFwiKSBzZWdtZW50ICs9IFwiXFxcXGRcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IFwiZ3JhcGhcIikgc2VnbWVudCArPSBcIlxceDIxLVxceDdFXCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBcImxvd2VyXCIpIHNlZ21lbnQgKz0gXCJhLXpcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IFwicHJpbnRcIikgc2VnbWVudCArPSBcIlxceDIwLVxceDdFXCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBcInB1bmN0XCIpIHtcbiAgICAgICAgICAgICAgc2VnbWVudCArPSBcIiFcXFwiIyQlJicoKSorLFxcXFwtLi86Ozw9Pj9AW1xcXFxcXFxcXFxcXF1eX+KAmHt8fX5cIjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gXCJzcGFjZVwiKSBzZWdtZW50ICs9IFwiXFxcXHNcXHZcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IFwidXBwZXJcIikgc2VnbWVudCArPSBcIkEtWlwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJ3b3JkXCIpIHNlZ21lbnQgKz0gXCJcXFxcd1wiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJ4ZGlnaXRcIikgc2VnbWVudCArPSBcIlxcXFxkQS1GYS1mXCI7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT0gXCJdXCIgJiYgaW5SYW5nZSkge1xuICAgICAgICBpblJhbmdlID0gZmFsc2U7XG4gICAgICAgIHNlZ21lbnQgKz0gXCJdXCI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5SYW5nZSkge1xuICAgICAgICBpZiAoZ2xvYltpXSA9PSBcIlxcXFxcIikge1xuICAgICAgICAgIHNlZ21lbnQgKz0gYFxcXFxcXFxcYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWdtZW50ICs9IGdsb2JbaV07XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZ2xvYltpXSA9PSBcIilcIiAmJiBncm91cFN0YWNrLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgZ3JvdXBTdGFja1tncm91cFN0YWNrLmxlbmd0aCAtIDFdICE9IFwiQlJBQ0VcIlxuICAgICAgKSB7XG4gICAgICAgIHNlZ21lbnQgKz0gXCIpXCI7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBncm91cFN0YWNrLnBvcCgpITtcbiAgICAgICAgaWYgKHR5cGUgPT0gXCIhXCIpIHtcbiAgICAgICAgICBzZWdtZW50ICs9IHdpbGRjYXJkO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgIT0gXCJAXCIpIHtcbiAgICAgICAgICBzZWdtZW50ICs9IHR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZ2xvYltpXSA9PSBcInxcIiAmJiBncm91cFN0YWNrLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgZ3JvdXBTdGFja1tncm91cFN0YWNrLmxlbmd0aCAtIDFdICE9IFwiQlJBQ0VcIlxuICAgICAgKSB7XG4gICAgICAgIHNlZ21lbnQgKz0gXCJ8XCI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PSBcIitcIiAmJiBleHRlbmRlZCAmJiBnbG9iW2kgKyAxXSA9PSBcIihcIikge1xuICAgICAgICBpKys7XG4gICAgICAgIGdyb3VwU3RhY2sucHVzaChcIitcIik7XG4gICAgICAgIHNlZ21lbnQgKz0gXCIoPzpcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IFwiQFwiICYmIGV4dGVuZGVkICYmIGdsb2JbaSArIDFdID09IFwiKFwiKSB7XG4gICAgICAgIGkrKztcbiAgICAgICAgZ3JvdXBTdGFjay5wdXNoKFwiQFwiKTtcbiAgICAgICAgc2VnbWVudCArPSBcIig/OlwiO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT0gXCI/XCIpIHtcbiAgICAgICAgaWYgKGV4dGVuZGVkICYmIGdsb2JbaSArIDFdID09IFwiKFwiKSB7XG4gICAgICAgICAgaSsrO1xuICAgICAgICAgIGdyb3VwU3RhY2sucHVzaChcIj9cIik7XG4gICAgICAgICAgc2VnbWVudCArPSBcIig/OlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlZ21lbnQgKz0gXCIuXCI7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IFwiIVwiICYmIGV4dGVuZGVkICYmIGdsb2JbaSArIDFdID09IFwiKFwiKSB7XG4gICAgICAgIGkrKztcbiAgICAgICAgZ3JvdXBTdGFjay5wdXNoKFwiIVwiKTtcbiAgICAgICAgc2VnbWVudCArPSBcIig/IVwiO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT0gXCJ7XCIpIHtcbiAgICAgICAgZ3JvdXBTdGFjay5wdXNoKFwiQlJBQ0VcIik7XG4gICAgICAgIHNlZ21lbnQgKz0gXCIoPzpcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IFwifVwiICYmIGdyb3VwU3RhY2tbZ3JvdXBTdGFjay5sZW5ndGggLSAxXSA9PSBcIkJSQUNFXCIpIHtcbiAgICAgICAgZ3JvdXBTdGFjay5wb3AoKTtcbiAgICAgICAgc2VnbWVudCArPSBcIilcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IFwiLFwiICYmIGdyb3VwU3RhY2tbZ3JvdXBTdGFjay5sZW5ndGggLSAxXSA9PSBcIkJSQUNFXCIpIHtcbiAgICAgICAgc2VnbWVudCArPSBcInxcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IFwiKlwiKSB7XG4gICAgICAgIGlmIChleHRlbmRlZCAmJiBnbG9iW2kgKyAxXSA9PSBcIihcIikge1xuICAgICAgICAgIGkrKztcbiAgICAgICAgICBncm91cFN0YWNrLnB1c2goXCIqXCIpO1xuICAgICAgICAgIHNlZ21lbnQgKz0gXCIoPzpcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBwcmV2Q2hhciA9IGdsb2JbaSAtIDFdO1xuICAgICAgICAgIGxldCBudW1TdGFycyA9IDE7XG4gICAgICAgICAgd2hpbGUgKGdsb2JbaSArIDFdID09IFwiKlwiKSB7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgICAgICBudW1TdGFycysrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBuZXh0Q2hhciA9IGdsb2JbaSArIDFdO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGdsb2JzdGFyT3B0aW9uICYmIG51bVN0YXJzID09IDIgJiZcbiAgICAgICAgICAgIFsuLi5zZXBzLCB1bmRlZmluZWRdLmluY2x1ZGVzKHByZXZDaGFyKSAmJlxuICAgICAgICAgICAgWy4uLnNlcHMsIHVuZGVmaW5lZF0uaW5jbHVkZXMobmV4dENoYXIpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBzZWdtZW50ICs9IGdsb2JzdGFyO1xuICAgICAgICAgICAgZW5kc1dpdGhTZXAgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWdtZW50ICs9IHdpbGRjYXJkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgc2VnbWVudCArPSByZWdFeHBFc2NhcGVDaGFycy5pbmNsdWRlcyhnbG9iW2ldKSA/IGBcXFxcJHtnbG9iW2ldfWAgOiBnbG9iW2ldO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciB1bmNsb3NlZCBncm91cHMgb3IgYSBkYW5nbGluZyBiYWNrc2xhc2guXG4gICAgaWYgKGdyb3VwU3RhY2subGVuZ3RoID4gMCB8fCBpblJhbmdlIHx8IGluRXNjYXBlKSB7XG4gICAgICAvLyBQYXJzZSBmYWlsdXJlLiBUYWtlIGFsbCBjaGFyYWN0ZXJzIGZyb20gdGhpcyBzZWdtZW50IGxpdGVyYWxseS5cbiAgICAgIHNlZ21lbnQgPSBcIlwiO1xuICAgICAgZm9yIChjb25zdCBjIG9mIGdsb2Iuc2xpY2UoaiwgaSkpIHtcbiAgICAgICAgc2VnbWVudCArPSByZWdFeHBFc2NhcGVDaGFycy5pbmNsdWRlcyhjKSA/IGBcXFxcJHtjfWAgOiBjO1xuICAgICAgICBlbmRzV2l0aFNlcCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlZ0V4cFN0cmluZyArPSBzZWdtZW50O1xuICAgIGlmICghZW5kc1dpdGhTZXApIHtcbiAgICAgIHJlZ0V4cFN0cmluZyArPSBpIDwgZ2xvYi5sZW5ndGggPyBzZXAgOiBzZXBNYXliZTtcbiAgICAgIGVuZHNXaXRoU2VwID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBUZXJtaW5hdGVzIHdpdGggYGlgIGF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dCBzZWdtZW50LlxuICAgIHdoaWxlIChzZXBzLmluY2x1ZGVzKGdsb2JbaV0pKSBpKys7XG5cbiAgICAvLyBDaGVjayB0aGF0IHRoZSBuZXh0IHZhbHVlIG9mIGBqYCBpcyBpbmRlZWQgaGlnaGVyIHRoYW4gdGhlIGN1cnJlbnQgdmFsdWUuXG4gICAgaWYgKCEoaSA+IGopKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBc3NlcnRpb24gZmFpbHVyZTogaSA+IGogKHBvdGVudGlhbCBpbmZpbml0ZSBsb29wKVwiKTtcbiAgICB9XG4gICAgaiA9IGk7XG4gIH1cblxuICByZWdFeHBTdHJpbmcgPSBgXiR7cmVnRXhwU3RyaW5nfSRgO1xuICByZXR1cm4gbmV3IFJlZ0V4cChyZWdFeHBTdHJpbmcsIGNhc2VJbnNlbnNpdGl2ZSA/IFwiaVwiIDogXCJcIik7XG59XG5cbi8qKiBUZXN0IHdoZXRoZXIgdGhlIGdpdmVuIHN0cmluZyBpcyBhIGdsb2IgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dsb2Ioc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgY2hhcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IFwie1wiOiBcIn1cIiwgXCIoXCI6IFwiKVwiLCBcIltcIjogXCJdXCIgfTtcbiAgY29uc3QgcmVnZXggPVxuICAgIC9cXFxcKC4pfCheIXxcXCp8XFw/fFtcXF0uKyldXFw/fFxcW1teXFxcXFxcXV0rXFxdfFxce1teXFxcXH1dK1xcfXxcXChcXD9bOiE9XVteXFxcXCldK1xcKXxcXChbXnxdK1xcfFteXFxcXCldK1xcKSkvO1xuXG4gIGlmIChzdHIgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGw7XG5cbiAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMoc3RyKSkpIHtcbiAgICBpZiAobWF0Y2hbMl0pIHJldHVybiB0cnVlO1xuICAgIGxldCBpZHggPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aDtcblxuICAgIC8vIGlmIGFuIG9wZW4gYnJhY2tldC9icmFjZS9wYXJlbiBpcyBlc2NhcGVkLFxuICAgIC8vIHNldCB0aGUgaW5kZXggdG8gdGhlIG5leHQgY2xvc2luZyBjaGFyYWN0ZXJcbiAgICBjb25zdCBvcGVuID0gbWF0Y2hbMV07XG4gICAgY29uc3QgY2xvc2UgPSBvcGVuID8gY2hhcnNbb3Blbl0gOiBudWxsO1xuICAgIGlmIChvcGVuICYmIGNsb3NlKSB7XG4gICAgICBjb25zdCBuID0gc3RyLmluZGV4T2YoY2xvc2UsIGlkeCk7XG4gICAgICBpZiAobiAhPT0gLTEpIHtcbiAgICAgICAgaWR4ID0gbiArIDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3RyID0gc3RyLnNsaWNlKGlkeCk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBMaWtlIG5vcm1hbGl6ZSgpLCBidXQgZG9lc24ndCBjb2xsYXBzZSBcIioqXFwvLi5cIiB3aGVuIGBnbG9ic3RhcmAgaXMgdHJ1ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVHbG9iKFxuICBnbG9iOiBzdHJpbmcsXG4gIHsgZ2xvYnN0YXIgPSBmYWxzZSB9OiBHbG9iT3B0aW9ucyA9IHt9LFxuKTogc3RyaW5nIHtcbiAgaWYgKGdsb2IubWF0Y2goL1xcMC9nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgR2xvYiBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnM6IFwiJHtnbG9ifVwiYCk7XG4gIH1cbiAgaWYgKCFnbG9ic3Rhcikge1xuICAgIHJldHVybiBub3JtYWxpemUoZ2xvYik7XG4gIH1cbiAgY29uc3QgcyA9IFNFUF9QQVRURVJOLnNvdXJjZTtcbiAgY29uc3QgYmFkUGFyZW50UGF0dGVybiA9IG5ldyBSZWdFeHAoXG4gICAgYCg/PD0oJHtzfXxeKVxcXFwqXFxcXCoke3N9KVxcXFwuXFxcXC4oPz0ke3N9fCQpYCxcbiAgICBcImdcIixcbiAgKTtcbiAgcmV0dXJuIG5vcm1hbGl6ZShnbG9iLnJlcGxhY2UoYmFkUGFyZW50UGF0dGVybiwgXCJcXDBcIikpLnJlcGxhY2UoL1xcMC9nLCBcIi4uXCIpO1xufVxuXG4vKiogTGlrZSBqb2luKCksIGJ1dCBkb2Vzbid0IGNvbGxhcHNlIFwiKipcXC8uLlwiIHdoZW4gYGdsb2JzdGFyYCBpcyB0cnVlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpvaW5HbG9icyhcbiAgZ2xvYnM6IHN0cmluZ1tdLFxuICB7IGV4dGVuZGVkID0gdHJ1ZSwgZ2xvYnN0YXIgPSBmYWxzZSB9OiBHbG9iT3B0aW9ucyA9IHt9LFxuKTogc3RyaW5nIHtcbiAgaWYgKCFnbG9ic3RhciB8fCBnbG9icy5sZW5ndGggPT0gMCkge1xuICAgIHJldHVybiBqb2luKC4uLmdsb2JzKTtcbiAgfVxuICBpZiAoZ2xvYnMubGVuZ3RoID09PSAwKSByZXR1cm4gXCIuXCI7XG4gIGxldCBqb2luZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZm9yIChjb25zdCBnbG9iIG9mIGdsb2JzKSB7XG4gICAgY29uc3QgcGF0aCA9IGdsb2I7XG4gICAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFqb2luZWQpIGpvaW5lZCA9IHBhdGg7XG4gICAgICBlbHNlIGpvaW5lZCArPSBgJHtTRVB9JHtwYXRofWA7XG4gICAgfVxuICB9XG4gIGlmICgham9pbmVkKSByZXR1cm4gXCIuXCI7XG4gIHJldHVybiBub3JtYWxpemVHbG9iKGpvaW5lZCwgeyBleHRlbmRlZCwgZ2xvYnN0YXIgfSk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cblxuLyoqXG4gKiBQb3J0ZWQgbW9zdGx5IGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Jyb3dzZXJpZnkvcGF0aC1icm93c2VyaWZ5L1xuICogVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuLi9fdXRpbC9vcy50c1wiO1xuaW1wb3J0ICogYXMgX3dpbjMyIGZyb20gXCIuL3dpbjMyLnRzXCI7XG5pbXBvcnQgKiBhcyBfcG9zaXggZnJvbSBcIi4vcG9zaXgudHNcIjtcblxuY29uc3QgcGF0aCA9IGlzV2luZG93cyA/IF93aW4zMiA6IF9wb3NpeDtcblxuZXhwb3J0IGNvbnN0IHdpbjMyID0gX3dpbjMyO1xuZXhwb3J0IGNvbnN0IHBvc2l4ID0gX3Bvc2l4O1xuZXhwb3J0IGNvbnN0IHtcbiAgYmFzZW5hbWUsXG4gIGRlbGltaXRlcixcbiAgZGlybmFtZSxcbiAgZXh0bmFtZSxcbiAgZm9ybWF0LFxuICBmcm9tRmlsZVVybCxcbiAgaXNBYnNvbHV0ZSxcbiAgam9pbixcbiAgbm9ybWFsaXplLFxuICBwYXJzZSxcbiAgcmVsYXRpdmUsXG4gIHJlc29sdmUsXG4gIHNlcCxcbiAgdG9GaWxlVXJsLFxuICB0b05hbWVzcGFjZWRQYXRoLFxufSA9IHBhdGg7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2NvbW1vbi50c1wiO1xuZXhwb3J0IHsgU0VQLCBTRVBfUEFUVEVSTiB9IGZyb20gXCIuL3NlcGFyYXRvci50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vX2ludGVyZmFjZS50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ2xvYi50c1wiO1xuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBBIG1vZHVsZSB0byBwcmludCBBTlNJIHRlcm1pbmFsIGNvbG9ycy4gSW5zcGlyZWQgYnkgY2hhbGssIGtsZXVyLCBhbmQgY29sb3JzXG4vLyBvbiBucG0uXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGJnQmx1ZSwgcmVkLCBib2xkIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vZm10L2NvbG9ycy50c1wiO1xuICogY29uc29sZS5sb2coYmdCbHVlKHJlZChib2xkKFwiSGVsbG8gd29ybGQhXCIpKSkpO1xuICogYGBgXG4gKlxuICogVGhpcyBtb2R1bGUgc3VwcG9ydHMgYE5PX0NPTE9SYCBlbnZpcm9ubWVudGFsIHZhcmlhYmxlIGRpc2FibGluZyBhbnkgY29sb3JpbmdcbiAqIGlmIGBOT19DT0xPUmAgaXMgc2V0LlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuY29uc3QgeyBEZW5vIH0gPSBnbG9iYWxUaGlzIGFzIGFueTtcbmNvbnN0IG5vQ29sb3IgPSB0eXBlb2YgRGVubz8ubm9Db2xvciA9PT0gXCJib29sZWFuXCJcbiAgPyBEZW5vLm5vQ29sb3IgYXMgYm9vbGVhblxuICA6IHRydWU7XG5cbmludGVyZmFjZSBDb2RlIHtcbiAgb3Blbjogc3RyaW5nO1xuICBjbG9zZTogc3RyaW5nO1xuICByZWdleHA6IFJlZ0V4cDtcbn1cblxuLyoqIFJHQiA4LWJpdHMgcGVyIGNoYW5uZWwuIEVhY2ggaW4gcmFuZ2UgYDAtPjI1NWAgb3IgYDB4MDAtPjB4ZmZgICovXG5pbnRlcmZhY2UgUmdiIHtcbiAgcjogbnVtYmVyO1xuICBnOiBudW1iZXI7XG4gIGI6IG51bWJlcjtcbn1cblxubGV0IGVuYWJsZWQgPSAhbm9Db2xvcjtcblxuLyoqXG4gKiBTZXQgY2hhbmdpbmcgdGV4dCBjb2xvciB0byBlbmFibGVkIG9yIGRpc2FibGVkXG4gKiBAcGFyYW0gdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldENvbG9yRW5hYmxlZCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICBpZiAobm9Db2xvcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGVuYWJsZWQgPSB2YWx1ZTtcbn1cblxuLyoqIEdldCB3aGV0aGVyIHRleHQgY29sb3IgY2hhbmdlIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sb3JFbmFibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZW5hYmxlZDtcbn1cblxuLyoqXG4gKiBCdWlsZHMgY29sb3IgY29kZVxuICogQHBhcmFtIG9wZW5cbiAqIEBwYXJhbSBjbG9zZVxuICovXG5mdW5jdGlvbiBjb2RlKG9wZW46IG51bWJlcltdLCBjbG9zZTogbnVtYmVyKTogQ29kZSB7XG4gIHJldHVybiB7XG4gICAgb3BlbjogYFxceDFiWyR7b3Blbi5qb2luKFwiO1wiKX1tYCxcbiAgICBjbG9zZTogYFxceDFiWyR7Y2xvc2V9bWAsXG4gICAgcmVnZXhwOiBuZXcgUmVnRXhwKGBcXFxceDFiXFxcXFske2Nsb3NlfW1gLCBcImdcIiksXG4gIH07XG59XG5cbi8qKlxuICogQXBwbGllcyBjb2xvciBhbmQgYmFja2dyb3VuZCBiYXNlZCBvbiBjb2xvciBjb2RlIGFuZCBpdHMgYXNzb2NpYXRlZCB0ZXh0XG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gYXBwbHkgY29sb3Igc2V0dGluZ3MgdG9cbiAqIEBwYXJhbSBjb2RlIGNvbG9yIGNvZGUgdG8gYXBwbHlcbiAqL1xuZnVuY3Rpb24gcnVuKHN0cjogc3RyaW5nLCBjb2RlOiBDb2RlKTogc3RyaW5nIHtcbiAgcmV0dXJuIGVuYWJsZWRcbiAgICA/IGAke2NvZGUub3Blbn0ke3N0ci5yZXBsYWNlKGNvZGUucmVnZXhwLCBjb2RlLm9wZW4pfSR7Y29kZS5jbG9zZX1gXG4gICAgOiBzdHI7XG59XG5cbi8qKlxuICogUmVzZXQgdGhlIHRleHQgbW9kaWZpZWRcbiAqIEBwYXJhbSBzdHIgdGV4dCB0byByZXNldFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXQoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMF0sIDApKTtcbn1cblxuLyoqXG4gKiBNYWtlIHRoZSB0ZXh0IGJvbGQuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBib2xkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBib2xkKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzFdLCAyMikpO1xufVxuXG4vKipcbiAqIFRoZSB0ZXh0IGVtaXRzIG9ubHkgYSBzbWFsbCBhbW91bnQgb2YgbGlnaHQuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gZGltXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaW0oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMl0sIDIyKSk7XG59XG5cbi8qKlxuICogTWFrZSB0aGUgdGV4dCBpdGFsaWMuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdGFsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGl0YWxpYyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFszXSwgMjMpKTtcbn1cblxuLyoqXG4gKiBNYWtlIHRoZSB0ZXh0IHVuZGVybGluZS5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byB1bmRlcmxpbmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuZGVybGluZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0XSwgMjQpKTtcbn1cblxuLyoqXG4gKiBJbnZlcnQgYmFja2dyb3VuZCBjb2xvciBhbmQgdGV4dCBjb2xvci5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBpbnZlcnQgaXRzIGNvbG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZlcnNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzddLCAyNykpO1xufVxuXG4vKipcbiAqIE1ha2UgdGhlIHRleHQgaGlkZGVuLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIGhpZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhpZGRlbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs4XSwgMjgpKTtcbn1cblxuLyoqXG4gKiBQdXQgaG9yaXpvbnRhbCBsaW5lIHRocm91Z2ggdGhlIGNlbnRlciBvZiB0aGUgdGV4dC5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBzdHJpa2UgdGhyb3VnaFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaWtldGhyb3VnaChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5XSwgMjkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB0byBibGFjay5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGJsYWNrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBibGFjayhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFszMF0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gcmVkLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgcmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWQoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMzFdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGdyZWVuLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgZ3JlZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyZWVuKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzMyXSwgMzkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB0byB5ZWxsb3cuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSB5ZWxsb3dcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHllbGxvdyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFszM10sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYmx1ZS5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGJsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJsdWUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMzRdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIG1hZ2VudGEuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBtYWdlbnRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWdlbnRhKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzM1XSwgMzkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB0byBjeWFuLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgY3lhblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3lhbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFszNl0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gd2hpdGUuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSB3aGl0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2hpdGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMzddLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGdyYXkuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBncmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBncmF5KHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGJyaWdodEJsYWNrKHN0cik7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IGJsYWNrLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgYnJpZ2h0LWJsYWNrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBicmlnaHRCbGFjayhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5MF0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IHJlZC5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGJyaWdodC1yZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyaWdodFJlZChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5MV0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IGdyZWVuLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgYnJpZ2h0LWdyZWVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBicmlnaHRHcmVlbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5Ml0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IHllbGxvdy5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGJyaWdodC15ZWxsb3dcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyaWdodFllbGxvdyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5M10sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IGJsdWUuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBicmlnaHQtYmx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYnJpZ2h0Qmx1ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5NF0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IG1hZ2VudGEuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBicmlnaHQtbWFnZW50YVxuICovXG5leHBvcnQgZnVuY3Rpb24gYnJpZ2h0TWFnZW50YShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5NV0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IGN5YW4uXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBicmlnaHQtY3lhblxuICovXG5leHBvcnQgZnVuY3Rpb24gYnJpZ2h0Q3lhbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5Nl0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IHdoaXRlLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgYnJpZ2h0LXdoaXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBicmlnaHRXaGl0ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5N10sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8gYmxhY2suXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBibGFja1xuICovXG5leHBvcnQgZnVuY3Rpb24gYmdCbGFjayhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0MF0sIDQ5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8gcmVkLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgcmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ1JlZChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0MV0sIDQ5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8gZ3JlZW4uXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBncmVlblxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdHcmVlbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0Ml0sIDQ5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8geWVsbG93LlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgeWVsbG93XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ1llbGxvdyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0M10sIDQ5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8gYmx1ZS5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIGJsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnQmx1ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0NF0sIDQ5KSk7XG59XG5cbi8qKlxuICogIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIG1hZ2VudGEuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBtYWdlbnRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ01hZ2VudGEoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDVdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGN5YW4uXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBjeWFuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ0N5YW4oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDZdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIHdoaXRlLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgd2hpdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnV2hpdGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDddLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCBibGFjay5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIGJyaWdodC1ibGFja1xuICovXG5leHBvcnQgZnVuY3Rpb24gYmdCcmlnaHRCbGFjayhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDBdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCByZWQuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBicmlnaHQtcmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ0JyaWdodFJlZChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDFdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCBncmVlbi5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIGJyaWdodC1ncmVlblxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdCcmlnaHRHcmVlbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDJdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCB5ZWxsb3cuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBicmlnaHQteWVsbG93XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ0JyaWdodFllbGxvdyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDNdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCBibHVlLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgYnJpZ2h0LWJsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnQnJpZ2h0Qmx1ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDRdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCBtYWdlbnRhLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgYnJpZ2h0LW1hZ2VudGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnQnJpZ2h0TWFnZW50YShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDVdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCBjeWFuLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgYnJpZ2h0LWN5YW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnQnJpZ2h0Q3lhbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDZdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCB3aGl0ZS5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIGJyaWdodC13aGl0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdCcmlnaHRXaGl0ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDddLCA0OSkpO1xufVxuXG4vKiBTcGVjaWFsIENvbG9yIFNlcXVlbmNlcyAqL1xuXG4vKipcbiAqIENsYW0gYW5kIHRydW5jYXRlIGNvbG9yIGNvZGVzXG4gKiBAcGFyYW0gblxuICogQHBhcmFtIG1heCBudW1iZXIgdG8gdHJ1bmNhdGUgdG9cbiAqIEBwYXJhbSBtaW4gbnVtYmVyIHRvIHRydW5jYXRlIGZyb21cbiAqL1xuZnVuY3Rpb24gY2xhbXBBbmRUcnVuY2F0ZShuOiBudW1iZXIsIG1heCA9IDI1NSwgbWluID0gMCk6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLnRydW5jKE1hdGgubWF4KE1hdGgubWluKG4sIG1heCksIG1pbikpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHVzaW5nIHBhbGV0dGVkIDhiaXQgY29sb3JzLlxuICogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZSM4LWJpdFxuICogQHBhcmFtIHN0ciB0ZXh0IGNvbG9yIHRvIGFwcGx5IHBhbGV0dGVkIDhiaXQgY29sb3JzIHRvXG4gKiBAcGFyYW0gY29sb3IgY29kZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmdiOChzdHI6IHN0cmluZywgY29sb3I6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFszOCwgNSwgY2xhbXBBbmRUcnVuY2F0ZShjb2xvcildLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHVzaW5nIHBhbGV0dGVkIDhiaXQgY29sb3JzLlxuICogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZSM4LWJpdFxuICogQHBhcmFtIHN0ciB0ZXh0IGNvbG9yIHRvIGFwcGx5IHBhbGV0dGVkIDhiaXQgYmFja2dyb3VuZCBjb2xvcnMgdG9cbiAqIEBwYXJhbSBjb2xvciBjb2RlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ1JnYjgoc3RyOiBzdHJpbmcsIGNvbG9yOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDgsIDUsIGNsYW1wQW5kVHJ1bmNhdGUoY29sb3IpXSwgNDkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB1c2luZyAyNGJpdCByZ2IuXG4gKiBgY29sb3JgIGNhbiBiZSBhIG51bWJlciBpbiByYW5nZSBgMHgwMDAwMDBgIHRvIGAweGZmZmZmZmAgb3JcbiAqIGFuIGBSZ2JgLlxuICpcbiAqIFRvIHByb2R1Y2UgdGhlIGNvbG9yIG1hZ2VudGE6XG4gKlxuICogYGBgdHNcbiAqICAgICAgaW1wb3J0IHsgcmdiMjQgfSBmcm9tIFwiLi9jb2xvcnMudHNcIjtcbiAqICAgICAgcmdiMjQoXCJmb29cIiwgMHhmZjAwZmYpO1xuICogICAgICByZ2IyNChcImZvb1wiLCB7cjogMjU1LCBnOiAwLCBiOiAyNTV9KTtcbiAqIGBgYFxuICogQHBhcmFtIHN0ciB0ZXh0IGNvbG9yIHRvIGFwcGx5IDI0Yml0IHJnYiB0b1xuICogQHBhcmFtIGNvbG9yIGNvZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJnYjI0KHN0cjogc3RyaW5nLCBjb2xvcjogbnVtYmVyIHwgUmdiKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBjb2xvciA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBydW4oXG4gICAgICBzdHIsXG4gICAgICBjb2RlKFxuICAgICAgICBbMzgsIDIsIChjb2xvciA+PiAxNikgJiAweGZmLCAoY29sb3IgPj4gOCkgJiAweGZmLCBjb2xvciAmIDB4ZmZdLFxuICAgICAgICAzOSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcnVuKFxuICAgIHN0cixcbiAgICBjb2RlKFxuICAgICAgW1xuICAgICAgICAzOCxcbiAgICAgICAgMixcbiAgICAgICAgY2xhbXBBbmRUcnVuY2F0ZShjb2xvci5yKSxcbiAgICAgICAgY2xhbXBBbmRUcnVuY2F0ZShjb2xvci5nKSxcbiAgICAgICAgY2xhbXBBbmRUcnVuY2F0ZShjb2xvci5iKSxcbiAgICAgIF0sXG4gICAgICAzOSxcbiAgICApLFxuICApO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHVzaW5nIDI0Yml0IHJnYi5cbiAqIGBjb2xvcmAgY2FuIGJlIGEgbnVtYmVyIGluIHJhbmdlIGAweDAwMDAwMGAgdG8gYDB4ZmZmZmZmYCBvclxuICogYW4gYFJnYmAuXG4gKlxuICogVG8gcHJvZHVjZSB0aGUgY29sb3IgbWFnZW50YTpcbiAqXG4gKiBgYGB0c1xuICogICAgICBpbXBvcnQgeyBiZ1JnYjI0IH0gZnJvbSBcIi4vY29sb3JzLnRzXCI7XG4gKiAgICAgIGJnUmdiMjQoXCJmb29cIiwgMHhmZjAwZmYpO1xuICogICAgICBiZ1JnYjI0KFwiZm9vXCIsIHtyOiAyNTUsIGc6IDAsIGI6IDI1NX0pO1xuICogYGBgXG4gKiBAcGFyYW0gc3RyIHRleHQgY29sb3IgdG8gYXBwbHkgMjRiaXQgcmdiIHRvXG4gKiBAcGFyYW0gY29sb3IgY29kZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdSZ2IyNChzdHI6IHN0cmluZywgY29sb3I6IG51bWJlciB8IFJnYik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgY29sb3IgPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4gcnVuKFxuICAgICAgc3RyLFxuICAgICAgY29kZShcbiAgICAgICAgWzQ4LCAyLCAoY29sb3IgPj4gMTYpICYgMHhmZiwgKGNvbG9yID4+IDgpICYgMHhmZiwgY29sb3IgJiAweGZmXSxcbiAgICAgICAgNDksXG4gICAgICApLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJ1bihcbiAgICBzdHIsXG4gICAgY29kZShcbiAgICAgIFtcbiAgICAgICAgNDgsXG4gICAgICAgIDIsXG4gICAgICAgIGNsYW1wQW5kVHJ1bmNhdGUoY29sb3IuciksXG4gICAgICAgIGNsYW1wQW5kVHJ1bmNhdGUoY29sb3IuZyksXG4gICAgICAgIGNsYW1wQW5kVHJ1bmNhdGUoY29sb3IuYiksXG4gICAgICBdLFxuICAgICAgNDksXG4gICAgKSxcbiAgKTtcbn1cblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2NoYWxrL2Fuc2ktcmVnZXgvYmxvYi8wMmZhODkzZDYxOWQzZGE4NTQxMWFjYzhmZDRlMmVlYTBlOTVhOWQ5L2luZGV4LmpzXG5jb25zdCBBTlNJX1BBVFRFUk4gPSBuZXcgUmVnRXhwKFxuICBbXG4gICAgXCJbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT9cXFxcdTAwMDcpXCIsXG4gICAgXCIoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW5xLXV5PT48fl0pKVwiLFxuICBdLmpvaW4oXCJ8XCIpLFxuICBcImdcIixcbik7XG5cbi8qKlxuICogUmVtb3ZlIEFOU0kgZXNjYXBlIGNvZGVzIGZyb20gdGhlIHN0cmluZy5cbiAqIEBwYXJhbSBzdHJpbmcgdG8gcmVtb3ZlIEFOU0kgZXNjYXBlIGNvZGVzIGZyb21cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQ29sb3Ioc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoQU5TSV9QQVRURVJOLCBcIlwiKTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4uL191dGlsL2Fzc2VydC50c1wiO1xuaW1wb3J0IHsgQnl0ZXNMaXN0IH0gZnJvbSBcIi4uL2J5dGVzL2J5dGVzX2xpc3QudHNcIjtcbmltcG9ydCB7IGNvbmNhdCwgY29weSB9IGZyb20gXCIuLi9ieXRlcy9tb2QudHNcIjtcbmltcG9ydCB0eXBlIHsgUmVhZGVyLCBSZWFkZXJTeW5jLCBXcml0ZXIsIFdyaXRlclN5bmMgfSBmcm9tIFwiLi90eXBlcy5kLnRzXCI7XG5cbi8vIE1JTl9SRUFEIGlzIHRoZSBtaW5pbXVtIEFycmF5QnVmZmVyIHNpemUgcGFzc2VkIHRvIGEgcmVhZCBjYWxsIGJ5XG4vLyBidWZmZXIuUmVhZEZyb20uIEFzIGxvbmcgYXMgdGhlIEJ1ZmZlciBoYXMgYXQgbGVhc3QgTUlOX1JFQUQgYnl0ZXMgYmV5b25kXG4vLyB3aGF0IGlzIHJlcXVpcmVkIHRvIGhvbGQgdGhlIGNvbnRlbnRzIG9mIHIsIHJlYWRGcm9tKCkgd2lsbCBub3QgZ3JvdyB0aGVcbi8vIHVuZGVybHlpbmcgYnVmZmVyLlxuY29uc3QgTUlOX1JFQUQgPSAzMiAqIDEwMjQ7XG5jb25zdCBNQVhfU0laRSA9IDIgKiogMzIgLSAyO1xuXG4vKiogQSB2YXJpYWJsZS1zaXplZCBidWZmZXIgb2YgYnl0ZXMgd2l0aCBgcmVhZCgpYCBhbmQgYHdyaXRlKClgIG1ldGhvZHMuXG4gKlxuICogQnVmZmVyIGlzIGFsbW9zdCBhbHdheXMgdXNlZCB3aXRoIHNvbWUgSS9PIGxpa2UgZmlsZXMgYW5kIHNvY2tldHMuIEl0IGFsbG93c1xuICogb25lIHRvIGJ1ZmZlciB1cCBhIGRvd25sb2FkIGZyb20gYSBzb2NrZXQuIEJ1ZmZlciBncm93cyBhbmQgc2hyaW5rcyBhc1xuICogbmVjZXNzYXJ5LlxuICpcbiAqIEJ1ZmZlciBpcyBOT1QgdGhlIHNhbWUgdGhpbmcgYXMgTm9kZSdzIEJ1ZmZlci4gTm9kZSdzIEJ1ZmZlciB3YXMgY3JlYXRlZCBpblxuICogMjAwOSBiZWZvcmUgSmF2YVNjcmlwdCBoYWQgdGhlIGNvbmNlcHQgb2YgQXJyYXlCdWZmZXJzLiBJdCdzIHNpbXBseSBhXG4gKiBub24tc3RhbmRhcmQgQXJyYXlCdWZmZXIuXG4gKlxuICogQXJyYXlCdWZmZXIgaXMgYSBmaXhlZCBtZW1vcnkgYWxsb2NhdGlvbi4gQnVmZmVyIGlzIGltcGxlbWVudGVkIG9uIHRvcCBvZlxuICogQXJyYXlCdWZmZXIuXG4gKlxuICogQmFzZWQgb24gW0dvIEJ1ZmZlcl0oaHR0cHM6Ly9nb2xhbmcub3JnL3BrZy9ieXRlcy8jQnVmZmVyKS4gKi9cblxuZXhwb3J0IGNsYXNzIEJ1ZmZlciB7XG4gICNidWY6IFVpbnQ4QXJyYXk7IC8vIGNvbnRlbnRzIGFyZSB0aGUgYnl0ZXMgYnVmW29mZiA6IGxlbihidWYpXVxuICAjb2ZmID0gMDsgLy8gcmVhZCBhdCBidWZbb2ZmXSwgd3JpdGUgYXQgYnVmW2J1Zi5ieXRlTGVuZ3RoXVxuXG4gIGNvbnN0cnVjdG9yKGFiPzogQXJyYXlCdWZmZXJMaWtlIHwgQXJyYXlMaWtlPG51bWJlcj4pIHtcbiAgICB0aGlzLiNidWYgPSBhYiA9PT0gdW5kZWZpbmVkID8gbmV3IFVpbnQ4QXJyYXkoMCkgOiBuZXcgVWludDhBcnJheShhYik7XG4gIH1cblxuICAvKiogUmV0dXJucyBhIHNsaWNlIGhvbGRpbmcgdGhlIHVucmVhZCBwb3J0aW9uIG9mIHRoZSBidWZmZXIuXG4gICAqXG4gICAqIFRoZSBzbGljZSBpcyB2YWxpZCBmb3IgdXNlIG9ubHkgdW50aWwgdGhlIG5leHQgYnVmZmVyIG1vZGlmaWNhdGlvbiAodGhhdFxuICAgKiBpcywgb25seSB1bnRpbCB0aGUgbmV4dCBjYWxsIHRvIGEgbWV0aG9kIGxpa2UgYHJlYWQoKWAsIGB3cml0ZSgpYCxcbiAgICogYHJlc2V0KClgLCBvciBgdHJ1bmNhdGUoKWApLiBJZiBgb3B0aW9ucy5jb3B5YCBpcyBmYWxzZSB0aGUgc2xpY2UgYWxpYXNlcyB0aGUgYnVmZmVyIGNvbnRlbnQgYXRcbiAgICogbGVhc3QgdW50aWwgdGhlIG5leHQgYnVmZmVyIG1vZGlmaWNhdGlvbiwgc28gaW1tZWRpYXRlIGNoYW5nZXMgdG8gdGhlXG4gICAqIHNsaWNlIHdpbGwgYWZmZWN0IHRoZSByZXN1bHQgb2YgZnV0dXJlIHJlYWRzLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBEZWZhdWx0cyB0byBgeyBjb3B5OiB0cnVlIH1gXG4gICAqL1xuICBieXRlcyhvcHRpb25zID0geyBjb3B5OiB0cnVlIH0pOiBVaW50OEFycmF5IHtcbiAgICBpZiAob3B0aW9ucy5jb3B5ID09PSBmYWxzZSkgcmV0dXJuIHRoaXMuI2J1Zi5zdWJhcnJheSh0aGlzLiNvZmYpO1xuICAgIHJldHVybiB0aGlzLiNidWYuc2xpY2UodGhpcy4jb2ZmKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHVucmVhZCBwb3J0aW9uIG9mIHRoZSBidWZmZXIgaXMgZW1wdHkuICovXG4gIGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNidWYuYnl0ZUxlbmd0aCA8PSB0aGlzLiNvZmY7XG4gIH1cblxuICAvKiogQSByZWFkIG9ubHkgbnVtYmVyIG9mIGJ5dGVzIG9mIHRoZSB1bnJlYWQgcG9ydGlvbiBvZiB0aGUgYnVmZmVyLiAqL1xuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI2J1Zi5ieXRlTGVuZ3RoIC0gdGhpcy4jb2ZmO1xuICB9XG5cbiAgLyoqIFRoZSByZWFkIG9ubHkgY2FwYWNpdHkgb2YgdGhlIGJ1ZmZlcidzIHVuZGVybHlpbmcgYnl0ZSBzbGljZSwgdGhhdCBpcyxcbiAgICogdGhlIHRvdGFsIHNwYWNlIGFsbG9jYXRlZCBmb3IgdGhlIGJ1ZmZlcidzIGRhdGEuICovXG4gIGdldCBjYXBhY2l0eSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNidWYuYnVmZmVyLmJ5dGVMZW5ndGg7XG4gIH1cblxuICAvKiogRGlzY2FyZHMgYWxsIGJ1dCB0aGUgZmlyc3QgYG5gIHVucmVhZCBieXRlcyBmcm9tIHRoZSBidWZmZXIgYnV0XG4gICAqIGNvbnRpbnVlcyB0byB1c2UgdGhlIHNhbWUgYWxsb2NhdGVkIHN0b3JhZ2UuIEl0IHRocm93cyBpZiBgbmAgaXNcbiAgICogbmVnYXRpdmUgb3IgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlci4gKi9cbiAgdHJ1bmNhdGUobjogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKG4gPT09IDApIHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG4gPCAwIHx8IG4gPiB0aGlzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJieXRlcy5CdWZmZXI6IHRydW5jYXRpb24gb3V0IG9mIHJhbmdlXCIpO1xuICAgIH1cbiAgICB0aGlzLiNyZXNsaWNlKHRoaXMuI29mZiArIG4pO1xuICB9XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy4jcmVzbGljZSgwKTtcbiAgICB0aGlzLiNvZmYgPSAwO1xuICB9XG5cbiAgI3RyeUdyb3dCeVJlc2xpY2UobjogbnVtYmVyKSB7XG4gICAgY29uc3QgbCA9IHRoaXMuI2J1Zi5ieXRlTGVuZ3RoO1xuICAgIGlmIChuIDw9IHRoaXMuY2FwYWNpdHkgLSBsKSB7XG4gICAgICB0aGlzLiNyZXNsaWNlKGwgKyBuKTtcbiAgICAgIHJldHVybiBsO1xuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAjcmVzbGljZShsZW46IG51bWJlcikge1xuICAgIGFzc2VydChsZW4gPD0gdGhpcy4jYnVmLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICB0aGlzLiNidWYgPSBuZXcgVWludDhBcnJheSh0aGlzLiNidWYuYnVmZmVyLCAwLCBsZW4pO1xuICB9XG5cbiAgLyoqIFJlYWRzIHRoZSBuZXh0IGBwLmxlbmd0aGAgYnl0ZXMgZnJvbSB0aGUgYnVmZmVyIG9yIHVudGlsIHRoZSBidWZmZXIgaXNcbiAgICogZHJhaW5lZC4gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuIElmIHRoZSBidWZmZXIgaGFzIG5vIGRhdGEgdG9cbiAgICogcmV0dXJuLCB0aGUgcmV0dXJuIGlzIEVPRiAoYG51bGxgKS4gKi9cbiAgcmVhZFN5bmMocDogVWludDhBcnJheSk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh0aGlzLmVtcHR5KCkpIHtcbiAgICAgIC8vIEJ1ZmZlciBpcyBlbXB0eSwgcmVzZXQgdG8gcmVjb3ZlciBzcGFjZS5cbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgIGlmIChwLmJ5dGVMZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gdGhpcyBlZGdlIGNhc2UgaXMgdGVzdGVkIGluICdidWZmZXJSZWFkRW1wdHlBdEVPRicgdGVzdFxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBucmVhZCA9IGNvcHkodGhpcy4jYnVmLnN1YmFycmF5KHRoaXMuI29mZiksIHApO1xuICAgIHRoaXMuI29mZiArPSBucmVhZDtcbiAgICByZXR1cm4gbnJlYWQ7XG4gIH1cblxuICAvKiogUmVhZHMgdGhlIG5leHQgYHAubGVuZ3RoYCBieXRlcyBmcm9tIHRoZSBidWZmZXIgb3IgdW50aWwgdGhlIGJ1ZmZlciBpc1xuICAgKiBkcmFpbmVkLiBSZXNvbHZlcyB0byB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuIElmIHRoZSBidWZmZXIgaGFzIG5vXG4gICAqIGRhdGEgdG8gcmV0dXJuLCByZXNvbHZlcyB0byBFT0YgKGBudWxsYCkuXG4gICAqXG4gICAqIE5PVEU6IFRoaXMgbWV0aG9kcyByZWFkcyBieXRlcyBzeW5jaHJvbm91c2x5OyBpdCdzIHByb3ZpZGVkIGZvclxuICAgKiBjb21wYXRpYmlsaXR5IHdpdGggYFJlYWRlcmAgaW50ZXJmYWNlcy5cbiAgICovXG4gIHJlYWQocDogVWludDhBcnJheSk6IFByb21pc2U8bnVtYmVyIHwgbnVsbD4ge1xuICAgIGNvbnN0IHJyID0gdGhpcy5yZWFkU3luYyhwKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJyKTtcbiAgfVxuXG4gIHdyaXRlU3luYyhwOiBVaW50OEFycmF5KTogbnVtYmVyIHtcbiAgICBjb25zdCBtID0gdGhpcy4jZ3JvdyhwLmJ5dGVMZW5ndGgpO1xuICAgIHJldHVybiBjb3B5KHAsIHRoaXMuI2J1ZiwgbSk7XG4gIH1cblxuICAvKiogTk9URTogVGhpcyBtZXRob2RzIHdyaXRlcyBieXRlcyBzeW5jaHJvbm91c2x5OyBpdCdzIHByb3ZpZGVkIGZvclxuICAgKiBjb21wYXRpYmlsaXR5IHdpdGggYFdyaXRlcmAgaW50ZXJmYWNlLiAqL1xuICB3cml0ZShwOiBVaW50OEFycmF5KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBuID0gdGhpcy53cml0ZVN5bmMocCk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuKTtcbiAgfVxuXG4gICNncm93KG46IG51bWJlcikge1xuICAgIGNvbnN0IG0gPSB0aGlzLmxlbmd0aDtcbiAgICAvLyBJZiBidWZmZXIgaXMgZW1wdHksIHJlc2V0IHRvIHJlY292ZXIgc3BhY2UuXG4gICAgaWYgKG0gPT09IDAgJiYgdGhpcy4jb2ZmICE9PSAwKSB7XG4gICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfVxuICAgIC8vIEZhc3Q6IFRyeSB0byBncm93IGJ5IG1lYW5zIG9mIGEgcmVzbGljZS5cbiAgICBjb25zdCBpID0gdGhpcy4jdHJ5R3Jvd0J5UmVzbGljZShuKTtcbiAgICBpZiAoaSA+PSAwKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gICAgY29uc3QgYyA9IHRoaXMuY2FwYWNpdHk7XG4gICAgaWYgKG4gPD0gTWF0aC5mbG9vcihjIC8gMikgLSBtKSB7XG4gICAgICAvLyBXZSBjYW4gc2xpZGUgdGhpbmdzIGRvd24gaW5zdGVhZCBvZiBhbGxvY2F0aW5nIGEgbmV3XG4gICAgICAvLyBBcnJheUJ1ZmZlci4gV2Ugb25seSBuZWVkIG0rbiA8PSBjIHRvIHNsaWRlLCBidXRcbiAgICAgIC8vIHdlIGluc3RlYWQgbGV0IGNhcGFjaXR5IGdldCB0d2ljZSBhcyBsYXJnZSBzbyB3ZVxuICAgICAgLy8gZG9uJ3Qgc3BlbmQgYWxsIG91ciB0aW1lIGNvcHlpbmcuXG4gICAgICBjb3B5KHRoaXMuI2J1Zi5zdWJhcnJheSh0aGlzLiNvZmYpLCB0aGlzLiNidWYpO1xuICAgIH0gZWxzZSBpZiAoYyArIG4gPiBNQVhfU0laRSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIGJ1ZmZlciBjYW5ub3QgYmUgZ3Jvd24gYmV5b25kIHRoZSBtYXhpbXVtIHNpemUuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOb3QgZW5vdWdoIHNwYWNlIGFueXdoZXJlLCB3ZSBuZWVkIHRvIGFsbG9jYXRlLlxuICAgICAgY29uc3QgYnVmID0gbmV3IFVpbnQ4QXJyYXkoTWF0aC5taW4oMiAqIGMgKyBuLCBNQVhfU0laRSkpO1xuICAgICAgY29weSh0aGlzLiNidWYuc3ViYXJyYXkodGhpcy4jb2ZmKSwgYnVmKTtcbiAgICAgIHRoaXMuI2J1ZiA9IGJ1ZjtcbiAgICB9XG4gICAgLy8gUmVzdG9yZSB0aGlzLiNvZmYgYW5kIGxlbih0aGlzLiNidWYpLlxuICAgIHRoaXMuI29mZiA9IDA7XG4gICAgdGhpcy4jcmVzbGljZShNYXRoLm1pbihtICsgbiwgTUFYX1NJWkUpKTtcbiAgICByZXR1cm4gbTtcbiAgfVxuXG4gIC8qKiBHcm93cyB0aGUgYnVmZmVyJ3MgY2FwYWNpdHksIGlmIG5lY2Vzc2FyeSwgdG8gZ3VhcmFudGVlIHNwYWNlIGZvclxuICAgKiBhbm90aGVyIGBuYCBieXRlcy4gQWZ0ZXIgYC5ncm93KG4pYCwgYXQgbGVhc3QgYG5gIGJ5dGVzIGNhbiBiZSB3cml0dGVuIHRvXG4gICAqIHRoZSBidWZmZXIgd2l0aG91dCBhbm90aGVyIGFsbG9jYXRpb24uIElmIGBuYCBpcyBuZWdhdGl2ZSwgYC5ncm93KClgIHdpbGxcbiAgICogdGhyb3cuIElmIHRoZSBidWZmZXIgY2FuJ3QgZ3JvdyBpdCB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgKlxuICAgKiBCYXNlZCBvbiBHbyBMYW5nJ3NcbiAgICogW0J1ZmZlci5Hcm93XShodHRwczovL2dvbGFuZy5vcmcvcGtnL2J5dGVzLyNCdWZmZXIuR3JvdykuICovXG4gIGdyb3cobjogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKG4gPCAwKSB7XG4gICAgICB0aHJvdyBFcnJvcihcIkJ1ZmZlci5ncm93OiBuZWdhdGl2ZSBjb3VudFwiKTtcbiAgICB9XG4gICAgY29uc3QgbSA9IHRoaXMuI2dyb3cobik7XG4gICAgdGhpcy4jcmVzbGljZShtKTtcbiAgfVxuXG4gIC8qKiBSZWFkcyBkYXRhIGZyb20gYHJgIHVudGlsIEVPRiAoYG51bGxgKSBhbmQgYXBwZW5kcyBpdCB0byB0aGUgYnVmZmVyLFxuICAgKiBncm93aW5nIHRoZSBidWZmZXIgYXMgbmVlZGVkLiBJdCByZXNvbHZlcyB0byB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuXG4gICAqIElmIHRoZSBidWZmZXIgYmVjb21lcyB0b28gbGFyZ2UsIGAucmVhZEZyb20oKWAgd2lsbCByZWplY3Qgd2l0aCBhbiBlcnJvci5cbiAgICpcbiAgICogQmFzZWQgb24gR28gTGFuZydzXG4gICAqIFtCdWZmZXIuUmVhZEZyb21dKGh0dHBzOi8vZ29sYW5nLm9yZy9wa2cvYnl0ZXMvI0J1ZmZlci5SZWFkRnJvbSkuICovXG4gIGFzeW5jIHJlYWRGcm9tKHI6IFJlYWRlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgbGV0IG4gPSAwO1xuICAgIGNvbnN0IHRtcCA9IG5ldyBVaW50OEFycmF5KE1JTl9SRUFEKTtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3Qgc2hvdWxkR3JvdyA9IHRoaXMuY2FwYWNpdHkgLSB0aGlzLmxlbmd0aCA8IE1JTl9SRUFEO1xuICAgICAgLy8gcmVhZCBpbnRvIHRtcCBidWZmZXIgaWYgdGhlcmUncyBub3QgZW5vdWdoIHJvb21cbiAgICAgIC8vIG90aGVyd2lzZSByZWFkIGRpcmVjdGx5IGludG8gdGhlIGludGVybmFsIGJ1ZmZlclxuICAgICAgY29uc3QgYnVmID0gc2hvdWxkR3Jvd1xuICAgICAgICA/IHRtcFxuICAgICAgICA6IG5ldyBVaW50OEFycmF5KHRoaXMuI2J1Zi5idWZmZXIsIHRoaXMubGVuZ3RoKTtcblxuICAgICAgY29uc3QgbnJlYWQgPSBhd2FpdCByLnJlYWQoYnVmKTtcbiAgICAgIGlmIChucmVhZCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbjtcbiAgICAgIH1cblxuICAgICAgLy8gd3JpdGUgd2lsbCBncm93IGlmIG5lZWRlZFxuICAgICAgaWYgKHNob3VsZEdyb3cpIHRoaXMud3JpdGVTeW5jKGJ1Zi5zdWJhcnJheSgwLCBucmVhZCkpO1xuICAgICAgZWxzZSB0aGlzLiNyZXNsaWNlKHRoaXMubGVuZ3RoICsgbnJlYWQpO1xuXG4gICAgICBuICs9IG5yZWFkO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZWFkcyBkYXRhIGZyb20gYHJgIHVudGlsIEVPRiAoYG51bGxgKSBhbmQgYXBwZW5kcyBpdCB0byB0aGUgYnVmZmVyLFxuICAgKiBncm93aW5nIHRoZSBidWZmZXIgYXMgbmVlZGVkLiBJdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gSWYgdGhlXG4gICAqIGJ1ZmZlciBiZWNvbWVzIHRvbyBsYXJnZSwgYC5yZWFkRnJvbVN5bmMoKWAgd2lsbCB0aHJvdyBhbiBlcnJvci5cbiAgICpcbiAgICogQmFzZWQgb24gR28gTGFuZydzXG4gICAqIFtCdWZmZXIuUmVhZEZyb21dKGh0dHBzOi8vZ29sYW5nLm9yZy9wa2cvYnl0ZXMvI0J1ZmZlci5SZWFkRnJvbSkuICovXG4gIHJlYWRGcm9tU3luYyhyOiBSZWFkZXJTeW5jKTogbnVtYmVyIHtcbiAgICBsZXQgbiA9IDA7XG4gICAgY29uc3QgdG1wID0gbmV3IFVpbnQ4QXJyYXkoTUlOX1JFQUQpO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCBzaG91bGRHcm93ID0gdGhpcy5jYXBhY2l0eSAtIHRoaXMubGVuZ3RoIDwgTUlOX1JFQUQ7XG4gICAgICAvLyByZWFkIGludG8gdG1wIGJ1ZmZlciBpZiB0aGVyZSdzIG5vdCBlbm91Z2ggcm9vbVxuICAgICAgLy8gb3RoZXJ3aXNlIHJlYWQgZGlyZWN0bHkgaW50byB0aGUgaW50ZXJuYWwgYnVmZmVyXG4gICAgICBjb25zdCBidWYgPSBzaG91bGRHcm93XG4gICAgICAgID8gdG1wXG4gICAgICAgIDogbmV3IFVpbnQ4QXJyYXkodGhpcy4jYnVmLmJ1ZmZlciwgdGhpcy5sZW5ndGgpO1xuXG4gICAgICBjb25zdCBucmVhZCA9IHIucmVhZFN5bmMoYnVmKTtcbiAgICAgIGlmIChucmVhZCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbjtcbiAgICAgIH1cblxuICAgICAgLy8gd3JpdGUgd2lsbCBncm93IGlmIG5lZWRlZFxuICAgICAgaWYgKHNob3VsZEdyb3cpIHRoaXMud3JpdGVTeW5jKGJ1Zi5zdWJhcnJheSgwLCBucmVhZCkpO1xuICAgICAgZWxzZSB0aGlzLiNyZXNsaWNlKHRoaXMubGVuZ3RoICsgbnJlYWQpO1xuXG4gICAgICBuICs9IG5yZWFkO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBERUZBVUxUX0JVRl9TSVpFID0gNDA5NjtcbmNvbnN0IE1JTl9CVUZfU0laRSA9IDE2O1xuY29uc3QgTUFYX0NPTlNFQ1VUSVZFX0VNUFRZX1JFQURTID0gMTAwO1xuY29uc3QgQ1IgPSBcIlxcclwiLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBMRiA9IFwiXFxuXCIuY2hhckNvZGVBdCgwKTtcblxuZXhwb3J0IGNsYXNzIEJ1ZmZlckZ1bGxFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgb3ZlcnJpZGUgbmFtZSA9IFwiQnVmZmVyRnVsbEVycm9yXCI7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXJ0aWFsOiBVaW50OEFycmF5KSB7XG4gICAgc3VwZXIoXCJCdWZmZXIgZnVsbFwiKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGFydGlhbFJlYWRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgb3ZlcnJpZGUgbmFtZSA9IFwiUGFydGlhbFJlYWRFcnJvclwiO1xuICBwYXJ0aWFsPzogVWludDhBcnJheTtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJFbmNvdW50ZXJlZCBVbmV4cGVjdGVkRW9mLCBkYXRhIG9ubHkgcGFydGlhbGx5IHJlYWRcIik7XG4gIH1cbn1cblxuLyoqIFJlc3VsdCB0eXBlIHJldHVybmVkIGJ5IG9mIEJ1ZlJlYWRlci5yZWFkTGluZSgpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWFkTGluZVJlc3VsdCB7XG4gIGxpbmU6IFVpbnQ4QXJyYXk7XG4gIG1vcmU6IGJvb2xlYW47XG59XG5cbi8qKiBCdWZSZWFkZXIgaW1wbGVtZW50cyBidWZmZXJpbmcgZm9yIGEgUmVhZGVyIG9iamVjdC4gKi9cbmV4cG9ydCBjbGFzcyBCdWZSZWFkZXIgaW1wbGVtZW50cyBSZWFkZXIge1xuICAjYnVmITogVWludDhBcnJheTtcbiAgI3JkITogUmVhZGVyOyAvLyBSZWFkZXIgcHJvdmlkZWQgYnkgY2FsbGVyLlxuICAjciA9IDA7IC8vIGJ1ZiByZWFkIHBvc2l0aW9uLlxuICAjdyA9IDA7IC8vIGJ1ZiB3cml0ZSBwb3NpdGlvbi5cbiAgI2VvZiA9IGZhbHNlO1xuICAvLyBwcml2YXRlIGxhc3RCeXRlOiBudW1iZXI7XG4gIC8vIHByaXZhdGUgbGFzdENoYXJTaXplOiBudW1iZXI7XG5cbiAgLyoqIHJldHVybiBuZXcgQnVmUmVhZGVyIHVubGVzcyByIGlzIEJ1ZlJlYWRlciAqL1xuICBzdGF0aWMgY3JlYXRlKHI6IFJlYWRlciwgc2l6ZTogbnVtYmVyID0gREVGQVVMVF9CVUZfU0laRSk6IEJ1ZlJlYWRlciB7XG4gICAgcmV0dXJuIHIgaW5zdGFuY2VvZiBCdWZSZWFkZXIgPyByIDogbmV3IEJ1ZlJlYWRlcihyLCBzaXplKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHJkOiBSZWFkZXIsIHNpemU6IG51bWJlciA9IERFRkFVTFRfQlVGX1NJWkUpIHtcbiAgICBpZiAoc2l6ZSA8IE1JTl9CVUZfU0laRSkge1xuICAgICAgc2l6ZSA9IE1JTl9CVUZfU0laRTtcbiAgICB9XG4gICAgdGhpcy4jcmVzZXQobmV3IFVpbnQ4QXJyYXkoc2l6ZSksIHJkKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBpbiBieXRlcy4gKi9cbiAgc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNidWYuYnl0ZUxlbmd0aDtcbiAgfVxuXG4gIGJ1ZmZlcmVkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI3cgLSB0aGlzLiNyO1xuICB9XG5cbiAgLy8gUmVhZHMgYSBuZXcgY2h1bmsgaW50byB0aGUgYnVmZmVyLlxuICAjZmlsbCA9IGFzeW5jICgpID0+IHtcbiAgICAvLyBTbGlkZSBleGlzdGluZyBkYXRhIHRvIGJlZ2lubmluZy5cbiAgICBpZiAodGhpcy4jciA+IDApIHtcbiAgICAgIHRoaXMuI2J1Zi5jb3B5V2l0aGluKDAsIHRoaXMuI3IsIHRoaXMuI3cpO1xuICAgICAgdGhpcy4jdyAtPSB0aGlzLiNyO1xuICAgICAgdGhpcy4jciA9IDA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuI3cgPj0gdGhpcy4jYnVmLmJ5dGVMZW5ndGgpIHtcbiAgICAgIHRocm93IEVycm9yKFwiYnVmaW86IHRyaWVkIHRvIGZpbGwgZnVsbCBidWZmZXJcIik7XG4gICAgfVxuXG4gICAgLy8gUmVhZCBuZXcgZGF0YTogdHJ5IGEgbGltaXRlZCBudW1iZXIgb2YgdGltZXMuXG4gICAgZm9yIChsZXQgaSA9IE1BWF9DT05TRUNVVElWRV9FTVBUWV9SRUFEUzsgaSA+IDA7IGktLSkge1xuICAgICAgY29uc3QgcnIgPSBhd2FpdCB0aGlzLiNyZC5yZWFkKHRoaXMuI2J1Zi5zdWJhcnJheSh0aGlzLiN3KSk7XG4gICAgICBpZiAocnIgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy4jZW9mID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KHJyID49IDAsIFwibmVnYXRpdmUgcmVhZFwiKTtcbiAgICAgIHRoaXMuI3cgKz0gcnI7XG4gICAgICBpZiAocnIgPiAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgTm8gcHJvZ3Jlc3MgYWZ0ZXIgJHtNQVhfQ09OU0VDVVRJVkVfRU1QVFlfUkVBRFN9IHJlYWQoKSBjYWxsc2AsXG4gICAgKTtcbiAgfTtcblxuICAvKiogRGlzY2FyZHMgYW55IGJ1ZmZlcmVkIGRhdGEsIHJlc2V0cyBhbGwgc3RhdGUsIGFuZCBzd2l0Y2hlc1xuICAgKiB0aGUgYnVmZmVyZWQgcmVhZGVyIHRvIHJlYWQgZnJvbSByLlxuICAgKi9cbiAgcmVzZXQocjogUmVhZGVyKTogdm9pZCB7XG4gICAgdGhpcy4jcmVzZXQodGhpcy4jYnVmLCByKTtcbiAgfVxuXG4gICNyZXNldCA9IChidWY6IFVpbnQ4QXJyYXksIHJkOiBSZWFkZXIpOiB2b2lkID0+IHtcbiAgICB0aGlzLiNidWYgPSBidWY7XG4gICAgdGhpcy4jcmQgPSByZDtcbiAgICB0aGlzLiNlb2YgPSBmYWxzZTtcbiAgICAvLyB0aGlzLmxhc3RCeXRlID0gLTE7XG4gICAgLy8gdGhpcy5sYXN0Q2hhclNpemUgPSAtMTtcbiAgfTtcblxuICAvKiogcmVhZHMgZGF0YSBpbnRvIHAuXG4gICAqIEl0IHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkIGludG8gcC5cbiAgICogVGhlIGJ5dGVzIGFyZSB0YWtlbiBmcm9tIGF0IG1vc3Qgb25lIFJlYWQgb24gdGhlIHVuZGVybHlpbmcgUmVhZGVyLFxuICAgKiBoZW5jZSBuIG1heSBiZSBsZXNzIHRoYW4gbGVuKHApLlxuICAgKiBUbyByZWFkIGV4YWN0bHkgbGVuKHApIGJ5dGVzLCB1c2UgaW8uUmVhZEZ1bGwoYiwgcCkuXG4gICAqL1xuICBhc3luYyByZWFkKHA6IFVpbnQ4QXJyYXkpOiBQcm9taXNlPG51bWJlciB8IG51bGw+IHtcbiAgICBsZXQgcnI6IG51bWJlciB8IG51bGwgPSBwLmJ5dGVMZW5ndGg7XG4gICAgaWYgKHAuYnl0ZUxlbmd0aCA9PT0gMCkgcmV0dXJuIHJyO1xuXG4gICAgaWYgKHRoaXMuI3IgPT09IHRoaXMuI3cpIHtcbiAgICAgIGlmIChwLmJ5dGVMZW5ndGggPj0gdGhpcy4jYnVmLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgLy8gTGFyZ2UgcmVhZCwgZW1wdHkgYnVmZmVyLlxuICAgICAgICAvLyBSZWFkIGRpcmVjdGx5IGludG8gcCB0byBhdm9pZCBjb3B5LlxuICAgICAgICBjb25zdCByciA9IGF3YWl0IHRoaXMuI3JkLnJlYWQocCk7XG4gICAgICAgIGNvbnN0IG5yZWFkID0gcnIgPz8gMDtcbiAgICAgICAgYXNzZXJ0KG5yZWFkID49IDAsIFwibmVnYXRpdmUgcmVhZFwiKTtcbiAgICAgICAgLy8gaWYgKHJyLm5yZWFkID4gMCkge1xuICAgICAgICAvLyAgIHRoaXMubGFzdEJ5dGUgPSBwW3JyLm5yZWFkIC0gMV07XG4gICAgICAgIC8vICAgdGhpcy5sYXN0Q2hhclNpemUgPSAtMTtcbiAgICAgICAgLy8gfVxuICAgICAgICByZXR1cm4gcnI7XG4gICAgICB9XG5cbiAgICAgIC8vIE9uZSByZWFkLlxuICAgICAgLy8gRG8gbm90IHVzZSB0aGlzLmZpbGwsIHdoaWNoIHdpbGwgbG9vcC5cbiAgICAgIHRoaXMuI3IgPSAwO1xuICAgICAgdGhpcy4jdyA9IDA7XG4gICAgICByciA9IGF3YWl0IHRoaXMuI3JkLnJlYWQodGhpcy4jYnVmKTtcbiAgICAgIGlmIChyciA9PT0gMCB8fCByciA9PT0gbnVsbCkgcmV0dXJuIHJyO1xuICAgICAgYXNzZXJ0KHJyID49IDAsIFwibmVnYXRpdmUgcmVhZFwiKTtcbiAgICAgIHRoaXMuI3cgKz0gcnI7XG4gICAgfVxuXG4gICAgLy8gY29weSBhcyBtdWNoIGFzIHdlIGNhblxuICAgIGNvbnN0IGNvcGllZCA9IGNvcHkodGhpcy4jYnVmLnN1YmFycmF5KHRoaXMuI3IsIHRoaXMuI3cpLCBwLCAwKTtcbiAgICB0aGlzLiNyICs9IGNvcGllZDtcbiAgICAvLyB0aGlzLmxhc3RCeXRlID0gdGhpcy5idWZbdGhpcy5yIC0gMV07XG4gICAgLy8gdGhpcy5sYXN0Q2hhclNpemUgPSAtMTtcbiAgICByZXR1cm4gY29waWVkO1xuICB9XG5cbiAgLyoqIHJlYWRzIGV4YWN0bHkgYHAubGVuZ3RoYCBieXRlcyBpbnRvIGBwYC5cbiAgICpcbiAgICogSWYgc3VjY2Vzc2Z1bCwgYHBgIGlzIHJldHVybmVkLlxuICAgKlxuICAgKiBJZiB0aGUgZW5kIG9mIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBoYXMgYmVlbiByZWFjaGVkLCBhbmQgdGhlcmUgYXJlIG5vIG1vcmVcbiAgICogYnl0ZXMgYXZhaWxhYmxlIGluIHRoZSBidWZmZXIsIGByZWFkRnVsbCgpYCByZXR1cm5zIGBudWxsYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBBbiBlcnJvciBpcyB0aHJvd24gaWYgc29tZSBieXRlcyBjb3VsZCBiZSByZWFkLCBidXQgbm90IGVub3VnaCB0byBmaWxsIGBwYFxuICAgKiBlbnRpcmVseSBiZWZvcmUgdGhlIHVuZGVybHlpbmcgc3RyZWFtIHJlcG9ydGVkIGFuIGVycm9yIG9yIEVPRi4gQW55IGVycm9yXG4gICAqIHRocm93biB3aWxsIGhhdmUgYSBgcGFydGlhbGAgcHJvcGVydHkgdGhhdCBpbmRpY2F0ZXMgdGhlIHNsaWNlIG9mIHRoZVxuICAgKiBidWZmZXIgdGhhdCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZmlsbGVkIHdpdGggZGF0YS5cbiAgICpcbiAgICogUG9ydGVkIGZyb20gaHR0cHM6Ly9nb2xhbmcub3JnL3BrZy9pby8jUmVhZEZ1bGxcbiAgICovXG4gIGFzeW5jIHJlYWRGdWxsKHA6IFVpbnQ4QXJyYXkpOiBQcm9taXNlPFVpbnQ4QXJyYXkgfCBudWxsPiB7XG4gICAgbGV0IGJ5dGVzUmVhZCA9IDA7XG4gICAgd2hpbGUgKGJ5dGVzUmVhZCA8IHAubGVuZ3RoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByciA9IGF3YWl0IHRoaXMucmVhZChwLnN1YmFycmF5KGJ5dGVzUmVhZCkpO1xuICAgICAgICBpZiAocnIgPT09IG51bGwpIHtcbiAgICAgICAgICBpZiAoYnl0ZXNSZWFkID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnRpYWxSZWFkRXJyb3IoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnl0ZXNSZWFkICs9IHJyO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBQYXJ0aWFsUmVhZEVycm9yKSB7XG4gICAgICAgICAgZXJyLnBhcnRpYWwgPSBwLnN1YmFycmF5KDAsIGJ5dGVzUmVhZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBjb25zdCBlID0gbmV3IFBhcnRpYWxSZWFkRXJyb3IoKTtcbiAgICAgICAgICBlLnBhcnRpYWwgPSBwLnN1YmFycmF5KDAsIGJ5dGVzUmVhZCk7XG4gICAgICAgICAgZS5zdGFjayA9IGVyci5zdGFjaztcbiAgICAgICAgICBlLm1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICBlLmNhdXNlID0gZXJyLmNhdXNlO1xuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIG5leHQgYnl0ZSBbMCwgMjU1XSBvciBgbnVsbGAuICovXG4gIGFzeW5jIHJlYWRCeXRlKCk6IFByb21pc2U8bnVtYmVyIHwgbnVsbD4ge1xuICAgIHdoaWxlICh0aGlzLiNyID09PSB0aGlzLiN3KSB7XG4gICAgICBpZiAodGhpcy4jZW9mKSByZXR1cm4gbnVsbDtcbiAgICAgIGF3YWl0IHRoaXMuI2ZpbGwoKTsgLy8gYnVmZmVyIGlzIGVtcHR5LlxuICAgIH1cbiAgICBjb25zdCBjID0gdGhpcy4jYnVmW3RoaXMuI3JdO1xuICAgIHRoaXMuI3IrKztcbiAgICAvLyB0aGlzLmxhc3RCeXRlID0gYztcbiAgICByZXR1cm4gYztcbiAgfVxuXG4gIC8qKiByZWFkU3RyaW5nKCkgcmVhZHMgdW50aWwgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgZGVsaW0gaW4gdGhlIGlucHV0LFxuICAgKiByZXR1cm5pbmcgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgZGF0YSB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZSBkZWxpbWl0ZXIuXG4gICAqIElmIFJlYWRTdHJpbmcgZW5jb3VudGVycyBhbiBlcnJvciBiZWZvcmUgZmluZGluZyBhIGRlbGltaXRlcixcbiAgICogaXQgcmV0dXJucyB0aGUgZGF0YSByZWFkIGJlZm9yZSB0aGUgZXJyb3IgYW5kIHRoZSBlcnJvciBpdHNlbGZcbiAgICogKG9mdGVuIGBudWxsYCkuXG4gICAqIFJlYWRTdHJpbmcgcmV0dXJucyBlcnIgIT0gbmlsIGlmIGFuZCBvbmx5IGlmIHRoZSByZXR1cm5lZCBkYXRhIGRvZXMgbm90IGVuZFxuICAgKiBpbiBkZWxpbS5cbiAgICogRm9yIHNpbXBsZSB1c2VzLCBhIFNjYW5uZXIgbWF5IGJlIG1vcmUgY29udmVuaWVudC5cbiAgICovXG4gIGFzeW5jIHJlYWRTdHJpbmcoZGVsaW06IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGlmIChkZWxpbS5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRlbGltaXRlciBzaG91bGQgYmUgYSBzaW5nbGUgY2hhcmFjdGVyXCIpO1xuICAgIH1cbiAgICBjb25zdCBidWZmZXIgPSBhd2FpdCB0aGlzLnJlYWRTbGljZShkZWxpbS5jaGFyQ29kZUF0KDApKTtcbiAgICBpZiAoYnVmZmVyID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGJ1ZmZlcik7XG4gIH1cblxuICAvKiogYHJlYWRMaW5lKClgIGlzIGEgbG93LWxldmVsIGxpbmUtcmVhZGluZyBwcmltaXRpdmUuIE1vc3QgY2FsbGVycyBzaG91bGRcbiAgICogdXNlIGByZWFkU3RyaW5nKCdcXG4nKWAgaW5zdGVhZCBvciB1c2UgYSBTY2FubmVyLlxuICAgKlxuICAgKiBgcmVhZExpbmUoKWAgdHJpZXMgdG8gcmV0dXJuIGEgc2luZ2xlIGxpbmUsIG5vdCBpbmNsdWRpbmcgdGhlIGVuZC1vZi1saW5lXG4gICAqIGJ5dGVzLiBJZiB0aGUgbGluZSB3YXMgdG9vIGxvbmcgZm9yIHRoZSBidWZmZXIgdGhlbiBgbW9yZWAgaXMgc2V0IGFuZCB0aGVcbiAgICogYmVnaW5uaW5nIG9mIHRoZSBsaW5lIGlzIHJldHVybmVkLiBUaGUgcmVzdCBvZiB0aGUgbGluZSB3aWxsIGJlIHJldHVybmVkXG4gICAqIGZyb20gZnV0dXJlIGNhbGxzLiBgbW9yZWAgd2lsbCBiZSBmYWxzZSB3aGVuIHJldHVybmluZyB0aGUgbGFzdCBmcmFnbWVudFxuICAgKiBvZiB0aGUgbGluZS4gVGhlIHJldHVybmVkIGJ1ZmZlciBpcyBvbmx5IHZhbGlkIHVudGlsIHRoZSBuZXh0IGNhbGwgdG9cbiAgICogYHJlYWRMaW5lKClgLlxuICAgKlxuICAgKiBUaGUgdGV4dCByZXR1cm5lZCBmcm9tIFJlYWRMaW5lIGRvZXMgbm90IGluY2x1ZGUgdGhlIGxpbmUgZW5kIChcIlxcclxcblwiIG9yXG4gICAqIFwiXFxuXCIpLlxuICAgKlxuICAgKiBXaGVuIHRoZSBlbmQgb2YgdGhlIHVuZGVybHlpbmcgc3RyZWFtIGlzIHJlYWNoZWQsIHRoZSBmaW5hbCBieXRlcyBpbiB0aGVcbiAgICogc3RyZWFtIGFyZSByZXR1cm5lZC4gTm8gaW5kaWNhdGlvbiBvciBlcnJvciBpcyBnaXZlbiBpZiB0aGUgaW5wdXQgZW5kc1xuICAgKiB3aXRob3V0IGEgZmluYWwgbGluZSBlbmQuIFdoZW4gdGhlcmUgYXJlIG5vIG1vcmUgdHJhaWxpbmcgYnl0ZXMgdG8gcmVhZCxcbiAgICogYHJlYWRMaW5lKClgIHJldHVybnMgYG51bGxgLlxuICAgKlxuICAgKiBDYWxsaW5nIGB1bnJlYWRCeXRlKClgIGFmdGVyIGByZWFkTGluZSgpYCB3aWxsIGFsd2F5cyB1bnJlYWQgdGhlIGxhc3QgYnl0ZVxuICAgKiByZWFkIChwb3NzaWJseSBhIGNoYXJhY3RlciBiZWxvbmdpbmcgdG8gdGhlIGxpbmUgZW5kKSBldmVuIGlmIHRoYXQgYnl0ZSBpc1xuICAgKiBub3QgcGFydCBvZiB0aGUgbGluZSByZXR1cm5lZCBieSBgcmVhZExpbmUoKWAuXG4gICAqL1xuICBhc3luYyByZWFkTGluZSgpOiBQcm9taXNlPFJlYWRMaW5lUmVzdWx0IHwgbnVsbD4ge1xuICAgIGxldCBsaW5lOiBVaW50OEFycmF5IHwgbnVsbCA9IG51bGw7XG5cbiAgICB0cnkge1xuICAgICAgbGluZSA9IGF3YWl0IHRoaXMucmVhZFNsaWNlKExGKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5CYWRSZXNvdXJjZSkge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgICBsZXQgcGFydGlhbDtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBQYXJ0aWFsUmVhZEVycm9yKSB7XG4gICAgICAgIHBhcnRpYWwgPSBlcnIucGFydGlhbDtcbiAgICAgICAgYXNzZXJ0KFxuICAgICAgICAgIHBhcnRpYWwgaW5zdGFuY2VvZiBVaW50OEFycmF5LFxuICAgICAgICAgIFwiYnVmaW86IGNhdWdodCBlcnJvciBmcm9tIGByZWFkU2xpY2UoKWAgd2l0aG91dCBgcGFydGlhbGAgcHJvcGVydHlcIixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gRG9uJ3QgdGhyb3cgaWYgYHJlYWRTbGljZSgpYCBmYWlsZWQgd2l0aCBgQnVmZmVyRnVsbEVycm9yYCwgaW5zdGVhZCB3ZVxuICAgICAgLy8ganVzdCByZXR1cm4gd2hhdGV2ZXIgaXMgYXZhaWxhYmxlIGFuZCBzZXQgdGhlIGBtb3JlYCBmbGFnLlxuICAgICAgaWYgKCEoZXJyIGluc3RhbmNlb2YgQnVmZmVyRnVsbEVycm9yKSkge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG5cbiAgICAgIHBhcnRpYWwgPSBlcnIucGFydGlhbDtcblxuICAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIFwiXFxyXFxuXCIgc3RyYWRkbGVzIHRoZSBidWZmZXIuXG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLiNlb2YgJiYgcGFydGlhbCAmJlxuICAgICAgICBwYXJ0aWFsLmJ5dGVMZW5ndGggPiAwICYmXG4gICAgICAgIHBhcnRpYWxbcGFydGlhbC5ieXRlTGVuZ3RoIC0gMV0gPT09IENSXG4gICAgICApIHtcbiAgICAgICAgLy8gUHV0IHRoZSAnXFxyJyBiYWNrIG9uIGJ1ZiBhbmQgZHJvcCBpdCBmcm9tIGxpbmUuXG4gICAgICAgIC8vIExldCB0aGUgbmV4dCBjYWxsIHRvIFJlYWRMaW5lIGNoZWNrIGZvciBcIlxcclxcblwiLlxuICAgICAgICBhc3NlcnQodGhpcy4jciA+IDAsIFwiYnVmaW86IHRyaWVkIHRvIHJld2luZCBwYXN0IHN0YXJ0IG9mIGJ1ZmZlclwiKTtcbiAgICAgICAgdGhpcy4jci0tO1xuICAgICAgICBwYXJ0aWFsID0gcGFydGlhbC5zdWJhcnJheSgwLCBwYXJ0aWFsLmJ5dGVMZW5ndGggLSAxKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcnRpYWwpIHtcbiAgICAgICAgcmV0dXJuIHsgbGluZTogcGFydGlhbCwgbW9yZTogIXRoaXMuI2VvZiB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChsaW5lID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAobGluZS5ieXRlTGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4geyBsaW5lLCBtb3JlOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmIChsaW5lW2xpbmUuYnl0ZUxlbmd0aCAtIDFdID09IExGKSB7XG4gICAgICBsZXQgZHJvcCA9IDE7XG4gICAgICBpZiAobGluZS5ieXRlTGVuZ3RoID4gMSAmJiBsaW5lW2xpbmUuYnl0ZUxlbmd0aCAtIDJdID09PSBDUikge1xuICAgICAgICBkcm9wID0gMjtcbiAgICAgIH1cbiAgICAgIGxpbmUgPSBsaW5lLnN1YmFycmF5KDAsIGxpbmUuYnl0ZUxlbmd0aCAtIGRyb3ApO1xuICAgIH1cbiAgICByZXR1cm4geyBsaW5lLCBtb3JlOiBmYWxzZSB9O1xuICB9XG5cbiAgLyoqIGByZWFkU2xpY2UoKWAgcmVhZHMgdW50aWwgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYGRlbGltYCBpbiB0aGUgaW5wdXQsXG4gICAqIHJldHVybmluZyBhIHNsaWNlIHBvaW50aW5nIGF0IHRoZSBieXRlcyBpbiB0aGUgYnVmZmVyLiBUaGUgYnl0ZXMgc3RvcFxuICAgKiBiZWluZyB2YWxpZCBhdCB0aGUgbmV4dCByZWFkLlxuICAgKlxuICAgKiBJZiBgcmVhZFNsaWNlKClgIGVuY291bnRlcnMgYW4gZXJyb3IgYmVmb3JlIGZpbmRpbmcgYSBkZWxpbWl0ZXIsIG9yIHRoZVxuICAgKiBidWZmZXIgZmlsbHMgd2l0aG91dCBmaW5kaW5nIGEgZGVsaW1pdGVyLCBpdCB0aHJvd3MgYW4gZXJyb3Igd2l0aCBhXG4gICAqIGBwYXJ0aWFsYCBwcm9wZXJ0eSB0aGF0IGNvbnRhaW5zIHRoZSBlbnRpcmUgYnVmZmVyLlxuICAgKlxuICAgKiBJZiBgcmVhZFNsaWNlKClgIGVuY291bnRlcnMgdGhlIGVuZCBvZiB0aGUgdW5kZXJseWluZyBzdHJlYW0gYW5kIHRoZXJlIGFyZVxuICAgKiBhbnkgYnl0ZXMgbGVmdCBpbiB0aGUgYnVmZmVyLCB0aGUgcmVzdCBvZiB0aGUgYnVmZmVyIGlzIHJldHVybmVkLiBJbiBvdGhlclxuICAgKiB3b3JkcywgRU9GIGlzIGFsd2F5cyB0cmVhdGVkIGFzIGEgZGVsaW1pdGVyLiBPbmNlIHRoZSBidWZmZXIgaXMgZW1wdHksXG4gICAqIGl0IHJldHVybnMgYG51bGxgLlxuICAgKlxuICAgKiBCZWNhdXNlIHRoZSBkYXRhIHJldHVybmVkIGZyb20gYHJlYWRTbGljZSgpYCB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZVxuICAgKiBuZXh0IEkvTyBvcGVyYXRpb24sIG1vc3QgY2xpZW50cyBzaG91bGQgdXNlIGByZWFkU3RyaW5nKClgIGluc3RlYWQuXG4gICAqL1xuICBhc3luYyByZWFkU2xpY2UoZGVsaW06IG51bWJlcik6IFByb21pc2U8VWludDhBcnJheSB8IG51bGw+IHtcbiAgICBsZXQgcyA9IDA7IC8vIHNlYXJjaCBzdGFydCBpbmRleFxuICAgIGxldCBzbGljZTogVWludDhBcnJheSB8IHVuZGVmaW5lZDtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAvLyBTZWFyY2ggYnVmZmVyLlxuICAgICAgbGV0IGkgPSB0aGlzLiNidWYuc3ViYXJyYXkodGhpcy4jciArIHMsIHRoaXMuI3cpLmluZGV4T2YoZGVsaW0pO1xuICAgICAgaWYgKGkgPj0gMCkge1xuICAgICAgICBpICs9IHM7XG4gICAgICAgIHNsaWNlID0gdGhpcy4jYnVmLnN1YmFycmF5KHRoaXMuI3IsIHRoaXMuI3IgKyBpICsgMSk7XG4gICAgICAgIHRoaXMuI3IgKz0gaSArIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBFT0Y/XG4gICAgICBpZiAodGhpcy4jZW9mKSB7XG4gICAgICAgIGlmICh0aGlzLiNyID09PSB0aGlzLiN3KSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgc2xpY2UgPSB0aGlzLiNidWYuc3ViYXJyYXkodGhpcy4jciwgdGhpcy4jdyk7XG4gICAgICAgIHRoaXMuI3IgPSB0aGlzLiN3O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gQnVmZmVyIGZ1bGw/XG4gICAgICBpZiAodGhpcy5idWZmZXJlZCgpID49IHRoaXMuI2J1Zi5ieXRlTGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuI3IgPSB0aGlzLiN3O1xuICAgICAgICAvLyAjNDUyMSBUaGUgaW50ZXJuYWwgYnVmZmVyIHNob3VsZCBub3QgYmUgcmV1c2VkIGFjcm9zcyByZWFkcyBiZWNhdXNlIGl0IGNhdXNlcyBjb3JydXB0aW9uIG9mIGRhdGEuXG4gICAgICAgIGNvbnN0IG9sZGJ1ZiA9IHRoaXMuI2J1ZjtcbiAgICAgICAgY29uc3QgbmV3YnVmID0gdGhpcy4jYnVmLnNsaWNlKDApO1xuICAgICAgICB0aGlzLiNidWYgPSBuZXdidWY7XG4gICAgICAgIHRocm93IG5ldyBCdWZmZXJGdWxsRXJyb3Iob2xkYnVmKTtcbiAgICAgIH1cblxuICAgICAgcyA9IHRoaXMuI3cgLSB0aGlzLiNyOyAvLyBkbyBub3QgcmVzY2FuIGFyZWEgd2Ugc2Nhbm5lZCBiZWZvcmVcblxuICAgICAgLy8gQnVmZmVyIGlzIG5vdCBmdWxsLlxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy4jZmlsbCgpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBQYXJ0aWFsUmVhZEVycm9yKSB7XG4gICAgICAgICAgZXJyLnBhcnRpYWwgPSBzbGljZTtcbiAgICAgICAgfSBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIGNvbnN0IGUgPSBuZXcgUGFydGlhbFJlYWRFcnJvcigpO1xuICAgICAgICAgIGUucGFydGlhbCA9IHNsaWNlO1xuICAgICAgICAgIGUuc3RhY2sgPSBlcnIuc3RhY2s7XG4gICAgICAgICAgZS5tZXNzYWdlID0gZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgZS5jYXVzZSA9IGVyci5jYXVzZTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSBsYXN0IGJ5dGUsIGlmIGFueS5cbiAgICAvLyBjb25zdCBpID0gc2xpY2UuYnl0ZUxlbmd0aCAtIDE7XG4gICAgLy8gaWYgKGkgPj0gMCkge1xuICAgIC8vICAgdGhpcy5sYXN0Qnl0ZSA9IHNsaWNlW2ldO1xuICAgIC8vICAgdGhpcy5sYXN0Q2hhclNpemUgPSAtMVxuICAgIC8vIH1cblxuICAgIHJldHVybiBzbGljZTtcbiAgfVxuXG4gIC8qKiBgcGVlaygpYCByZXR1cm5zIHRoZSBuZXh0IGBuYCBieXRlcyB3aXRob3V0IGFkdmFuY2luZyB0aGUgcmVhZGVyLiBUaGVcbiAgICogYnl0ZXMgc3RvcCBiZWluZyB2YWxpZCBhdCB0aGUgbmV4dCByZWFkIGNhbGwuXG4gICAqXG4gICAqIFdoZW4gdGhlIGVuZCBvZiB0aGUgdW5kZXJseWluZyBzdHJlYW0gaXMgcmVhY2hlZCwgYnV0IHRoZXJlIGFyZSB1bnJlYWRcbiAgICogYnl0ZXMgbGVmdCBpbiB0aGUgYnVmZmVyLCB0aG9zZSBieXRlcyBhcmUgcmV0dXJuZWQuIElmIHRoZXJlIGFyZSBubyBieXRlc1xuICAgKiBsZWZ0IGluIHRoZSBidWZmZXIsIGl0IHJldHVybnMgYG51bGxgLlxuICAgKlxuICAgKiBJZiBhbiBlcnJvciBpcyBlbmNvdW50ZXJlZCBiZWZvcmUgYG5gIGJ5dGVzIGFyZSBhdmFpbGFibGUsIGBwZWVrKClgIHRocm93c1xuICAgKiBhbiBlcnJvciB3aXRoIHRoZSBgcGFydGlhbGAgcHJvcGVydHkgc2V0IHRvIGEgc2xpY2Ugb2YgdGhlIGJ1ZmZlciB0aGF0XG4gICAqIGNvbnRhaW5zIHRoZSBieXRlcyB0aGF0IHdlcmUgYXZhaWxhYmxlIGJlZm9yZSB0aGUgZXJyb3Igb2NjdXJyZWQuXG4gICAqL1xuICBhc3luYyBwZWVrKG46IG51bWJlcik6IFByb21pc2U8VWludDhBcnJheSB8IG51bGw+IHtcbiAgICBpZiAobiA8IDApIHtcbiAgICAgIHRocm93IEVycm9yKFwibmVnYXRpdmUgY291bnRcIik7XG4gICAgfVxuXG4gICAgbGV0IGF2YWlsID0gdGhpcy4jdyAtIHRoaXMuI3I7XG4gICAgd2hpbGUgKGF2YWlsIDwgbiAmJiBhdmFpbCA8IHRoaXMuI2J1Zi5ieXRlTGVuZ3RoICYmICF0aGlzLiNlb2YpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuI2ZpbGwoKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgUGFydGlhbFJlYWRFcnJvcikge1xuICAgICAgICAgIGVyci5wYXJ0aWFsID0gdGhpcy4jYnVmLnN1YmFycmF5KHRoaXMuI3IsIHRoaXMuI3cpO1xuICAgICAgICB9IGVsc2UgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgY29uc3QgZSA9IG5ldyBQYXJ0aWFsUmVhZEVycm9yKCk7XG4gICAgICAgICAgZS5wYXJ0aWFsID0gdGhpcy4jYnVmLnN1YmFycmF5KHRoaXMuI3IsIHRoaXMuI3cpO1xuICAgICAgICAgIGUuc3RhY2sgPSBlcnIuc3RhY2s7XG4gICAgICAgICAgZS5tZXNzYWdlID0gZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgZS5jYXVzZSA9IGVyci5jYXVzZTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICAgYXZhaWwgPSB0aGlzLiN3IC0gdGhpcy4jcjtcbiAgICB9XG5cbiAgICBpZiAoYXZhaWwgPT09IDAgJiYgdGhpcy4jZW9mKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKGF2YWlsIDwgbiAmJiB0aGlzLiNlb2YpIHtcbiAgICAgIHJldHVybiB0aGlzLiNidWYuc3ViYXJyYXkodGhpcy4jciwgdGhpcy4jciArIGF2YWlsKTtcbiAgICB9IGVsc2UgaWYgKGF2YWlsIDwgbikge1xuICAgICAgdGhyb3cgbmV3IEJ1ZmZlckZ1bGxFcnJvcih0aGlzLiNidWYuc3ViYXJyYXkodGhpcy4jciwgdGhpcy4jdykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiNidWYuc3ViYXJyYXkodGhpcy4jciwgdGhpcy4jciArIG4pO1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIEFic3RyYWN0QnVmQmFzZSB7XG4gIGJ1ZjogVWludDhBcnJheTtcbiAgdXNlZEJ1ZmZlckJ5dGVzID0gMDtcbiAgZXJyOiBFcnJvciB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGJ1ZjogVWludDhBcnJheSkge1xuICAgIHRoaXMuYnVmID0gYnVmO1xuICB9XG5cbiAgLyoqIFNpemUgcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgdW5kZXJseWluZyBidWZmZXIgaW4gYnl0ZXMuICovXG4gIHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5idWYuYnl0ZUxlbmd0aDtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGhvdyBtYW55IGJ5dGVzIGFyZSB1bnVzZWQgaW4gdGhlIGJ1ZmZlci4gKi9cbiAgYXZhaWxhYmxlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYnVmLmJ5dGVMZW5ndGggLSB0aGlzLnVzZWRCdWZmZXJCeXRlcztcbiAgfVxuXG4gIC8qKiBidWZmZXJlZCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBoYXZlIGJlZW4gd3JpdHRlbiBpbnRvIHRoZVxuICAgKiBjdXJyZW50IGJ1ZmZlci5cbiAgICovXG4gIGJ1ZmZlcmVkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudXNlZEJ1ZmZlckJ5dGVzO1xuICB9XG59XG5cbi8qKiBCdWZXcml0ZXIgaW1wbGVtZW50cyBidWZmZXJpbmcgZm9yIGFuIGRlbm8uV3JpdGVyIG9iamVjdC5cbiAqIElmIGFuIGVycm9yIG9jY3VycyB3cml0aW5nIHRvIGEgV3JpdGVyLCBubyBtb3JlIGRhdGEgd2lsbCBiZVxuICogYWNjZXB0ZWQgYW5kIGFsbCBzdWJzZXF1ZW50IHdyaXRlcywgYW5kIGZsdXNoKCksIHdpbGwgcmV0dXJuIHRoZSBlcnJvci5cbiAqIEFmdGVyIGFsbCBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4sIHRoZSBjbGllbnQgc2hvdWxkIGNhbGwgdGhlXG4gKiBmbHVzaCgpIG1ldGhvZCB0byBndWFyYW50ZWUgYWxsIGRhdGEgaGFzIGJlZW4gZm9yd2FyZGVkIHRvXG4gKiB0aGUgdW5kZXJseWluZyBkZW5vLldyaXRlci5cbiAqL1xuZXhwb3J0IGNsYXNzIEJ1ZldyaXRlciBleHRlbmRzIEFic3RyYWN0QnVmQmFzZSBpbXBsZW1lbnRzIFdyaXRlciB7XG4gICN3cml0ZXI6IFdyaXRlcjtcblxuICAvKiogcmV0dXJuIG5ldyBCdWZXcml0ZXIgdW5sZXNzIHdyaXRlciBpcyBCdWZXcml0ZXIgKi9cbiAgc3RhdGljIGNyZWF0ZSh3cml0ZXI6IFdyaXRlciwgc2l6ZTogbnVtYmVyID0gREVGQVVMVF9CVUZfU0laRSk6IEJ1ZldyaXRlciB7XG4gICAgcmV0dXJuIHdyaXRlciBpbnN0YW5jZW9mIEJ1ZldyaXRlciA/IHdyaXRlciA6IG5ldyBCdWZXcml0ZXIod3JpdGVyLCBzaXplKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHdyaXRlcjogV3JpdGVyLCBzaXplOiBudW1iZXIgPSBERUZBVUxUX0JVRl9TSVpFKSB7XG4gICAgc3VwZXIobmV3IFVpbnQ4QXJyYXkoc2l6ZSA8PSAwID8gREVGQVVMVF9CVUZfU0laRSA6IHNpemUpKTtcbiAgICB0aGlzLiN3cml0ZXIgPSB3cml0ZXI7XG4gIH1cblxuICAvKiogRGlzY2FyZHMgYW55IHVuZmx1c2hlZCBidWZmZXJlZCBkYXRhLCBjbGVhcnMgYW55IGVycm9yLCBhbmRcbiAgICogcmVzZXRzIGJ1ZmZlciB0byB3cml0ZSBpdHMgb3V0cHV0IHRvIHcuXG4gICAqL1xuICByZXNldCh3OiBXcml0ZXIpOiB2b2lkIHtcbiAgICB0aGlzLmVyciA9IG51bGw7XG4gICAgdGhpcy51c2VkQnVmZmVyQnl0ZXMgPSAwO1xuICAgIHRoaXMuI3dyaXRlciA9IHc7XG4gIH1cblxuICAvKiogRmx1c2ggd3JpdGVzIGFueSBidWZmZXJlZCBkYXRhIHRvIHRoZSB1bmRlcmx5aW5nIGlvLldyaXRlci4gKi9cbiAgYXN5bmMgZmx1c2goKSB7XG4gICAgaWYgKHRoaXMuZXJyICE9PSBudWxsKSB0aHJvdyB0aGlzLmVycjtcbiAgICBpZiAodGhpcy51c2VkQnVmZmVyQnl0ZXMgPT09IDApIHJldHVybjtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwID0gdGhpcy5idWYuc3ViYXJyYXkoMCwgdGhpcy51c2VkQnVmZmVyQnl0ZXMpO1xuICAgICAgbGV0IG53cml0dGVuID0gMDtcbiAgICAgIHdoaWxlIChud3JpdHRlbiA8IHAubGVuZ3RoKSB7XG4gICAgICAgIG53cml0dGVuICs9IGF3YWl0IHRoaXMuI3dyaXRlci53cml0ZShwLnN1YmFycmF5KG53cml0dGVuKSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aGlzLmVyciA9IGU7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIHRoaXMuYnVmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5idWYubGVuZ3RoKTtcbiAgICB0aGlzLnVzZWRCdWZmZXJCeXRlcyA9IDA7XG4gIH1cblxuICAvKiogV3JpdGVzIHRoZSBjb250ZW50cyBvZiBgZGF0YWAgaW50byB0aGUgYnVmZmVyLiAgSWYgdGhlIGNvbnRlbnRzIHdvbid0IGZ1bGx5XG4gICAqIGZpdCBpbnRvIHRoZSBidWZmZXIsIHRob3NlIGJ5dGVzIHRoYXQgY2FuIGFyZSBjb3BpZWQgaW50byB0aGUgYnVmZmVyLCB0aGVcbiAgICogYnVmZmVyIGlzIHRoZSBmbHVzaGVkIHRvIHRoZSB3cml0ZXIgYW5kIHRoZSByZW1haW5pbmcgYnl0ZXMgYXJlIGNvcGllZCBpbnRvXG4gICAqIHRoZSBub3cgZW1wdHkgYnVmZmVyLlxuICAgKlxuICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiB0byB0aGUgYnVmZmVyLlxuICAgKi9cbiAgYXN5bmMgd3JpdGUoZGF0YTogVWludDhBcnJheSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgaWYgKHRoaXMuZXJyICE9PSBudWxsKSB0aHJvdyB0aGlzLmVycjtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHJldHVybiAwO1xuXG4gICAgbGV0IHRvdGFsQnl0ZXNXcml0dGVuID0gMDtcbiAgICBsZXQgbnVtQnl0ZXNXcml0dGVuID0gMDtcbiAgICB3aGlsZSAoZGF0YS5ieXRlTGVuZ3RoID4gdGhpcy5hdmFpbGFibGUoKSkge1xuICAgICAgaWYgKHRoaXMuYnVmZmVyZWQoKSA9PT0gMCkge1xuICAgICAgICAvLyBMYXJnZSB3cml0ZSwgZW1wdHkgYnVmZmVyLlxuICAgICAgICAvLyBXcml0ZSBkaXJlY3RseSBmcm9tIGRhdGEgdG8gYXZvaWQgY29weS5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBudW1CeXRlc1dyaXR0ZW4gPSBhd2FpdCB0aGlzLiN3cml0ZXIud3JpdGUoZGF0YSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLmVyciA9IGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG51bUJ5dGVzV3JpdHRlbiA9IGNvcHkoZGF0YSwgdGhpcy5idWYsIHRoaXMudXNlZEJ1ZmZlckJ5dGVzKTtcbiAgICAgICAgdGhpcy51c2VkQnVmZmVyQnl0ZXMgKz0gbnVtQnl0ZXNXcml0dGVuO1xuICAgICAgICBhd2FpdCB0aGlzLmZsdXNoKCk7XG4gICAgICB9XG4gICAgICB0b3RhbEJ5dGVzV3JpdHRlbiArPSBudW1CeXRlc1dyaXR0ZW47XG4gICAgICBkYXRhID0gZGF0YS5zdWJhcnJheShudW1CeXRlc1dyaXR0ZW4pO1xuICAgIH1cblxuICAgIG51bUJ5dGVzV3JpdHRlbiA9IGNvcHkoZGF0YSwgdGhpcy5idWYsIHRoaXMudXNlZEJ1ZmZlckJ5dGVzKTtcbiAgICB0aGlzLnVzZWRCdWZmZXJCeXRlcyArPSBudW1CeXRlc1dyaXR0ZW47XG4gICAgdG90YWxCeXRlc1dyaXR0ZW4gKz0gbnVtQnl0ZXNXcml0dGVuO1xuICAgIHJldHVybiB0b3RhbEJ5dGVzV3JpdHRlbjtcbiAgfVxufVxuXG4vKiogQnVmV3JpdGVyU3luYyBpbXBsZW1lbnRzIGJ1ZmZlcmluZyBmb3IgYSBkZW5vLldyaXRlclN5bmMgb2JqZWN0LlxuICogSWYgYW4gZXJyb3Igb2NjdXJzIHdyaXRpbmcgdG8gYSBXcml0ZXJTeW5jLCBubyBtb3JlIGRhdGEgd2lsbCBiZVxuICogYWNjZXB0ZWQgYW5kIGFsbCBzdWJzZXF1ZW50IHdyaXRlcywgYW5kIGZsdXNoKCksIHdpbGwgcmV0dXJuIHRoZSBlcnJvci5cbiAqIEFmdGVyIGFsbCBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4sIHRoZSBjbGllbnQgc2hvdWxkIGNhbGwgdGhlXG4gKiBmbHVzaCgpIG1ldGhvZCB0byBndWFyYW50ZWUgYWxsIGRhdGEgaGFzIGJlZW4gZm9yd2FyZGVkIHRvXG4gKiB0aGUgdW5kZXJseWluZyBkZW5vLldyaXRlclN5bmMuXG4gKi9cbmV4cG9ydCBjbGFzcyBCdWZXcml0ZXJTeW5jIGV4dGVuZHMgQWJzdHJhY3RCdWZCYXNlIGltcGxlbWVudHMgV3JpdGVyU3luYyB7XG4gICN3cml0ZXI6IFdyaXRlclN5bmM7XG5cbiAgLyoqIHJldHVybiBuZXcgQnVmV3JpdGVyU3luYyB1bmxlc3Mgd3JpdGVyIGlzIEJ1ZldyaXRlclN5bmMgKi9cbiAgc3RhdGljIGNyZWF0ZShcbiAgICB3cml0ZXI6IFdyaXRlclN5bmMsXG4gICAgc2l6ZTogbnVtYmVyID0gREVGQVVMVF9CVUZfU0laRSxcbiAgKTogQnVmV3JpdGVyU3luYyB7XG4gICAgcmV0dXJuIHdyaXRlciBpbnN0YW5jZW9mIEJ1ZldyaXRlclN5bmNcbiAgICAgID8gd3JpdGVyXG4gICAgICA6IG5ldyBCdWZXcml0ZXJTeW5jKHdyaXRlciwgc2l6ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih3cml0ZXI6IFdyaXRlclN5bmMsIHNpemU6IG51bWJlciA9IERFRkFVTFRfQlVGX1NJWkUpIHtcbiAgICBzdXBlcihuZXcgVWludDhBcnJheShzaXplIDw9IDAgPyBERUZBVUxUX0JVRl9TSVpFIDogc2l6ZSkpO1xuICAgIHRoaXMuI3dyaXRlciA9IHdyaXRlcjtcbiAgfVxuXG4gIC8qKiBEaXNjYXJkcyBhbnkgdW5mbHVzaGVkIGJ1ZmZlcmVkIGRhdGEsIGNsZWFycyBhbnkgZXJyb3IsIGFuZFxuICAgKiByZXNldHMgYnVmZmVyIHRvIHdyaXRlIGl0cyBvdXRwdXQgdG8gdy5cbiAgICovXG4gIHJlc2V0KHc6IFdyaXRlclN5bmMpOiB2b2lkIHtcbiAgICB0aGlzLmVyciA9IG51bGw7XG4gICAgdGhpcy51c2VkQnVmZmVyQnl0ZXMgPSAwO1xuICAgIHRoaXMuI3dyaXRlciA9IHc7XG4gIH1cblxuICAvKiogRmx1c2ggd3JpdGVzIGFueSBidWZmZXJlZCBkYXRhIHRvIHRoZSB1bmRlcmx5aW5nIGlvLldyaXRlclN5bmMuICovXG4gIGZsdXNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVyciAhPT0gbnVsbCkgdGhyb3cgdGhpcy5lcnI7XG4gICAgaWYgKHRoaXMudXNlZEJ1ZmZlckJ5dGVzID09PSAwKSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcCA9IHRoaXMuYnVmLnN1YmFycmF5KDAsIHRoaXMudXNlZEJ1ZmZlckJ5dGVzKTtcbiAgICAgIGxldCBud3JpdHRlbiA9IDA7XG4gICAgICB3aGlsZSAobndyaXR0ZW4gPCBwLmxlbmd0aCkge1xuICAgICAgICBud3JpdHRlbiArPSB0aGlzLiN3cml0ZXIud3JpdGVTeW5jKHAuc3ViYXJyYXkobndyaXR0ZW4pKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIHRoaXMuZXJyID0gZTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgdGhpcy5idWYgPSBuZXcgVWludDhBcnJheSh0aGlzLmJ1Zi5sZW5ndGgpO1xuICAgIHRoaXMudXNlZEJ1ZmZlckJ5dGVzID0gMDtcbiAgfVxuXG4gIC8qKiBXcml0ZXMgdGhlIGNvbnRlbnRzIG9mIGBkYXRhYCBpbnRvIHRoZSBidWZmZXIuICBJZiB0aGUgY29udGVudHMgd29uJ3QgZnVsbHlcbiAgICogZml0IGludG8gdGhlIGJ1ZmZlciwgdGhvc2UgYnl0ZXMgdGhhdCBjYW4gYXJlIGNvcGllZCBpbnRvIHRoZSBidWZmZXIsIHRoZVxuICAgKiBidWZmZXIgaXMgdGhlIGZsdXNoZWQgdG8gdGhlIHdyaXRlciBhbmQgdGhlIHJlbWFpbmluZyBieXRlcyBhcmUgY29waWVkIGludG9cbiAgICogdGhlIG5vdyBlbXB0eSBidWZmZXIuXG4gICAqXG4gICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIHRoZSBidWZmZXIuXG4gICAqL1xuICB3cml0ZVN5bmMoZGF0YTogVWludDhBcnJheSk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuZXJyICE9PSBudWxsKSB0aHJvdyB0aGlzLmVycjtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHJldHVybiAwO1xuXG4gICAgbGV0IHRvdGFsQnl0ZXNXcml0dGVuID0gMDtcbiAgICBsZXQgbnVtQnl0ZXNXcml0dGVuID0gMDtcbiAgICB3aGlsZSAoZGF0YS5ieXRlTGVuZ3RoID4gdGhpcy5hdmFpbGFibGUoKSkge1xuICAgICAgaWYgKHRoaXMuYnVmZmVyZWQoKSA9PT0gMCkge1xuICAgICAgICAvLyBMYXJnZSB3cml0ZSwgZW1wdHkgYnVmZmVyLlxuICAgICAgICAvLyBXcml0ZSBkaXJlY3RseSBmcm9tIGRhdGEgdG8gYXZvaWQgY29weS5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBudW1CeXRlc1dyaXR0ZW4gPSB0aGlzLiN3cml0ZXIud3JpdGVTeW5jKGRhdGEpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgdGhpcy5lcnIgPSBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBudW1CeXRlc1dyaXR0ZW4gPSBjb3B5KGRhdGEsIHRoaXMuYnVmLCB0aGlzLnVzZWRCdWZmZXJCeXRlcyk7XG4gICAgICAgIHRoaXMudXNlZEJ1ZmZlckJ5dGVzICs9IG51bUJ5dGVzV3JpdHRlbjtcbiAgICAgICAgdGhpcy5mbHVzaCgpO1xuICAgICAgfVxuICAgICAgdG90YWxCeXRlc1dyaXR0ZW4gKz0gbnVtQnl0ZXNXcml0dGVuO1xuICAgICAgZGF0YSA9IGRhdGEuc3ViYXJyYXkobnVtQnl0ZXNXcml0dGVuKTtcbiAgICB9XG5cbiAgICBudW1CeXRlc1dyaXR0ZW4gPSBjb3B5KGRhdGEsIHRoaXMuYnVmLCB0aGlzLnVzZWRCdWZmZXJCeXRlcyk7XG4gICAgdGhpcy51c2VkQnVmZmVyQnl0ZXMgKz0gbnVtQnl0ZXNXcml0dGVuO1xuICAgIHRvdGFsQnl0ZXNXcml0dGVuICs9IG51bUJ5dGVzV3JpdHRlbjtcbiAgICByZXR1cm4gdG90YWxCeXRlc1dyaXR0ZW47XG4gIH1cbn1cblxuLyoqIEdlbmVyYXRlIGxvbmdlc3QgcHJvcGVyIHByZWZpeCB3aGljaCBpcyBhbHNvIHN1ZmZpeCBhcnJheS4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUxQUyhwYXQ6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcbiAgY29uc3QgbHBzID0gbmV3IFVpbnQ4QXJyYXkocGF0Lmxlbmd0aCk7XG4gIGxwc1swXSA9IDA7XG4gIGxldCBwcmVmaXhFbmQgPSAwO1xuICBsZXQgaSA9IDE7XG4gIHdoaWxlIChpIDwgbHBzLmxlbmd0aCkge1xuICAgIGlmIChwYXRbaV0gPT0gcGF0W3ByZWZpeEVuZF0pIHtcbiAgICAgIHByZWZpeEVuZCsrO1xuICAgICAgbHBzW2ldID0gcHJlZml4RW5kO1xuICAgICAgaSsrO1xuICAgIH0gZWxzZSBpZiAocHJlZml4RW5kID09PSAwKSB7XG4gICAgICBscHNbaV0gPSAwO1xuICAgICAgaSsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVmaXhFbmQgPSBscHNbcHJlZml4RW5kIC0gMV07XG4gICAgfVxuICB9XG4gIHJldHVybiBscHM7XG59XG5cbi8qKiBSZWFkIGRlbGltaXRlZCBieXRlcyBmcm9tIGEgUmVhZGVyLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiByZWFkRGVsaW0oXG4gIHJlYWRlcjogUmVhZGVyLFxuICBkZWxpbTogVWludDhBcnJheSxcbik6IEFzeW5jSXRlcmFibGVJdGVyYXRvcjxVaW50OEFycmF5PiB7XG4gIC8vIEF2b2lkIHVuaWNvZGUgcHJvYmxlbXNcbiAgY29uc3QgZGVsaW1MZW4gPSBkZWxpbS5sZW5ndGg7XG4gIGNvbnN0IGRlbGltTFBTID0gY3JlYXRlTFBTKGRlbGltKTtcbiAgY29uc3QgY2h1bmtzID0gbmV3IEJ5dGVzTGlzdCgpO1xuICBjb25zdCBidWZTaXplID0gTWF0aC5tYXgoMTAyNCwgZGVsaW1MZW4gKyAxKTtcblxuICAvLyBNb2RpZmllZCBLTVBcbiAgbGV0IGluc3BlY3RJbmRleCA9IDA7XG4gIGxldCBtYXRjaEluZGV4ID0gMDtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBpbnNwZWN0QXJyID0gbmV3IFVpbnQ4QXJyYXkoYnVmU2l6ZSk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVhZGVyLnJlYWQoaW5zcGVjdEFycik7XG4gICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgLy8gWWllbGQgbGFzdCBjaHVuay5cbiAgICAgIHlpZWxkIGNodW5rcy5jb25jYXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKHJlc3VsdCA8IDApIHtcbiAgICAgIC8vIERpc2NhcmQgYWxsIHJlbWFpbmluZyBhbmQgc2lsZW50bHkgZmFpbC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2h1bmtzLmFkZChpbnNwZWN0QXJyLCAwLCByZXN1bHQpO1xuICAgIGxldCBsb2NhbEluZGV4ID0gMDtcbiAgICB3aGlsZSAoaW5zcGVjdEluZGV4IDwgY2h1bmtzLnNpemUoKSkge1xuICAgICAgaWYgKGluc3BlY3RBcnJbbG9jYWxJbmRleF0gPT09IGRlbGltW21hdGNoSW5kZXhdKSB7XG4gICAgICAgIGluc3BlY3RJbmRleCsrO1xuICAgICAgICBsb2NhbEluZGV4Kys7XG4gICAgICAgIG1hdGNoSW5kZXgrKztcbiAgICAgICAgaWYgKG1hdGNoSW5kZXggPT09IGRlbGltTGVuKSB7XG4gICAgICAgICAgLy8gRnVsbCBtYXRjaFxuICAgICAgICAgIGNvbnN0IG1hdGNoRW5kID0gaW5zcGVjdEluZGV4IC0gZGVsaW1MZW47XG4gICAgICAgICAgY29uc3QgcmVhZHlCeXRlcyA9IGNodW5rcy5zbGljZSgwLCBtYXRjaEVuZCk7XG4gICAgICAgICAgeWllbGQgcmVhZHlCeXRlcztcbiAgICAgICAgICAvLyBSZXNldCBtYXRjaCwgZGlmZmVyZW50IGZyb20gS01QLlxuICAgICAgICAgIGNodW5rcy5zaGlmdChpbnNwZWN0SW5kZXgpO1xuICAgICAgICAgIGluc3BlY3RJbmRleCA9IDA7XG4gICAgICAgICAgbWF0Y2hJbmRleCA9IDA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChtYXRjaEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgaW5zcGVjdEluZGV4Kys7XG4gICAgICAgICAgbG9jYWxJbmRleCsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hdGNoSW5kZXggPSBkZWxpbUxQU1ttYXRjaEluZGV4IC0gMV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqIFJlYWQgZGVsaW1pdGVkIHN0cmluZ3MgZnJvbSBhIFJlYWRlci4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogcmVhZFN0cmluZ0RlbGltKFxuICByZWFkZXI6IFJlYWRlcixcbiAgZGVsaW06IHN0cmluZyxcbiAgZGVjb2Rlck9wdHM/OiB7XG4gICAgZW5jb2Rpbmc/OiBzdHJpbmc7XG4gICAgZmF0YWw/OiBib29sZWFuO1xuICAgIGlnbm9yZUJPTT86IGJvb2xlYW47XG4gIH0sXG4pOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8c3RyaW5nPiB7XG4gIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcihkZWNvZGVyT3B0cz8uZW5jb2RpbmcsIGRlY29kZXJPcHRzKTtcbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiByZWFkRGVsaW0ocmVhZGVyLCBlbmNvZGVyLmVuY29kZShkZWxpbSkpKSB7XG4gICAgeWllbGQgZGVjb2Rlci5kZWNvZGUoY2h1bmspO1xuICB9XG59XG5cbi8qKiBSZWFkIHN0cmluZ3MgbGluZS1ieS1saW5lIGZyb20gYSBSZWFkZXIuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIHJlYWRMaW5lcyhcbiAgcmVhZGVyOiBSZWFkZXIsXG4gIGRlY29kZXJPcHRzPzoge1xuICAgIGVuY29kaW5nPzogc3RyaW5nO1xuICAgIGZhdGFsPzogYm9vbGVhbjtcbiAgICBpZ25vcmVCT00/OiBib29sZWFuO1xuICB9LFxuKTogQXN5bmNJdGVyYWJsZUl0ZXJhdG9yPHN0cmluZz4ge1xuICBjb25zdCBidWZSZWFkZXIgPSBuZXcgQnVmUmVhZGVyKHJlYWRlcik7XG4gIGxldCBjaHVua3M6IFVpbnQ4QXJyYXlbXSA9IFtdO1xuICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKGRlY29kZXJPcHRzPy5lbmNvZGluZywgZGVjb2Rlck9wdHMpO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJ1ZlJlYWRlci5yZWFkTGluZSgpO1xuICAgIGlmICghcmVzKSB7XG4gICAgICBpZiAoY2h1bmtzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgeWllbGQgZGVjb2Rlci5kZWNvZGUoY29uY2F0KC4uLmNodW5rcykpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNodW5rcy5wdXNoKHJlcy5saW5lKTtcbiAgICBpZiAoIXJlcy5tb3JlKSB7XG4gICAgICB5aWVsZCBkZWNvZGVyLmRlY29kZShjb25jYXQoLi4uY2h1bmtzKSk7XG4gICAgICBjaHVua3MgPSBbXTtcbiAgICB9XG4gIH1cbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuXG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tIFwiLi4vaW8vYnVmZmVyLnRzXCI7XG5cbmNvbnN0IERFRkFVTFRfQ0hVTktfU0laRSA9IDE2XzY0MDtcbmNvbnN0IERFRkFVTFRfQlVGRkVSX1NJWkUgPSAzMiAqIDEwMjQ7XG5cbmZ1bmN0aW9uIGlzQ2xvc2VyKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgRGVuby5DbG9zZXIge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9IG51bGwgJiYgXCJjbG9zZVwiIGluIHZhbHVlICYmXG4gICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICB0eXBlb2YgKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW1wiY2xvc2VcIl0gPT09IFwiZnVuY3Rpb25cIjtcbn1cblxuLyoqIENyZWF0ZSBhIGBEZW5vLlJlYWRlcmAgZnJvbSBhbiBpdGVyYWJsZSBvZiBgVWludDhBcnJheWBzLlxuICpcbiAqIGBgYHRzXG4gKiAgICAgIGltcG9ydCB7IHJlYWRlckZyb21JdGVyYWJsZSB9IGZyb20gXCIuL2NvbnZlcnNpb24udHNcIjtcbiAqXG4gKiAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBEZW5vLm9wZW4oXCJtZXRyaWNzLnR4dFwiLCB7IHdyaXRlOiB0cnVlIH0pO1xuICogICAgICBjb25zdCByZWFkZXIgPSByZWFkZXJGcm9tSXRlcmFibGUoKGFzeW5jIGZ1bmN0aW9uKiAoKSB7XG4gKiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAqICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDEwMDApKTtcbiAqICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgZGF0YTogJHtKU09OLnN0cmluZ2lmeShEZW5vLm1ldHJpY3MoKSl9XFxuXFxuYDtcbiAqICAgICAgICAgIHlpZWxkIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShtZXNzYWdlKTtcbiAqICAgICAgICB9XG4gKiAgICAgIH0pKCkpO1xuICogICAgICBhd2FpdCBEZW5vLmNvcHkocmVhZGVyLCBmaWxlKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZGVyRnJvbUl0ZXJhYmxlKFxuICBpdGVyYWJsZTogSXRlcmFibGU8VWludDhBcnJheT4gfCBBc3luY0l0ZXJhYmxlPFVpbnQ4QXJyYXk+LFxuKTogRGVuby5SZWFkZXIge1xuICBjb25zdCBpdGVyYXRvcjogSXRlcmF0b3I8VWludDhBcnJheT4gfCBBc3luY0l0ZXJhdG9yPFVpbnQ4QXJyYXk+ID1cbiAgICAoaXRlcmFibGUgYXMgQXN5bmNJdGVyYWJsZTxVaW50OEFycmF5PilbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPy4oKSA/P1xuICAgICAgKGl0ZXJhYmxlIGFzIEl0ZXJhYmxlPFVpbnQ4QXJyYXk+KVtTeW1ib2wuaXRlcmF0b3JdPy4oKTtcbiAgY29uc3QgYnVmZmVyID0gbmV3IEJ1ZmZlcigpO1xuICByZXR1cm4ge1xuICAgIGFzeW5jIHJlYWQocDogVWludDhBcnJheSk6IFByb21pc2U8bnVtYmVyIHwgbnVsbD4ge1xuICAgICAgaWYgKGJ1ZmZlci5sZW5ndGggPT0gMCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgIGlmIChyZXN1bHQuZG9uZSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChyZXN1bHQudmFsdWUuYnl0ZUxlbmd0aCA8PSBwLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHAuc2V0KHJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlLmJ5dGVMZW5ndGg7XG4gICAgICAgICAgfVxuICAgICAgICAgIHAuc2V0KHJlc3VsdC52YWx1ZS5zdWJhcnJheSgwLCBwLmJ5dGVMZW5ndGgpKTtcbiAgICAgICAgICBhd2FpdCB3cml0ZUFsbChidWZmZXIsIHJlc3VsdC52YWx1ZS5zdWJhcnJheShwLmJ5dGVMZW5ndGgpKTtcbiAgICAgICAgICByZXR1cm4gcC5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBuID0gYXdhaXQgYnVmZmVyLnJlYWQocCk7XG4gICAgICAgIGlmIChuID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkKHApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG5cbi8qKiBDcmVhdGUgYSBgV3JpdGVyYCBmcm9tIGEgYFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlcmAuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVyRnJvbVN0cmVhbVdyaXRlcihcbiAgc3RyZWFtV3JpdGVyOiBXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXI8VWludDhBcnJheT4sXG4pOiBEZW5vLldyaXRlciB7XG4gIHJldHVybiB7XG4gICAgYXN5bmMgd3JpdGUocDogVWludDhBcnJheSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICBhd2FpdCBzdHJlYW1Xcml0ZXIucmVhZHk7XG4gICAgICBhd2FpdCBzdHJlYW1Xcml0ZXIud3JpdGUocCk7XG4gICAgICByZXR1cm4gcC5sZW5ndGg7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqIENyZWF0ZSBhIGBSZWFkZXJgIGZyb20gYSBgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkZXJGcm9tU3RyZWFtUmVhZGVyKFxuICBzdHJlYW1SZWFkZXI6IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcjxVaW50OEFycmF5Pixcbik6IERlbm8uUmVhZGVyIHtcbiAgY29uc3QgYnVmZmVyID0gbmV3IEJ1ZmZlcigpO1xuXG4gIHJldHVybiB7XG4gICAgYXN5bmMgcmVhZChwOiBVaW50OEFycmF5KTogUHJvbWlzZTxudW1iZXIgfCBudWxsPiB7XG4gICAgICBpZiAoYnVmZmVyLmVtcHR5KCkpIHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgc3RyZWFtUmVhZGVyLnJlYWQoKTtcbiAgICAgICAgaWYgKHJlcy5kb25lKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7IC8vIEVPRlxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgd3JpdGVBbGwoYnVmZmVyLCByZXMudmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYnVmZmVyLnJlYWQocCk7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXcml0YWJsZVN0cmVhbUZyb21Xcml0ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIElmIHRoZSBgd3JpdGVyYCBpcyBhbHNvIGEgYERlbm8uQ2xvc2VyYCwgYXV0b21hdGljYWxseSBjbG9zZSB0aGUgYHdyaXRlcmBcbiAgICogd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCwgYWJvcnRlZCwgb3IgYSB3cml0ZSBlcnJvciBvY2N1cnMuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGB0cnVlYC4gKi9cbiAgYXV0b0Nsb3NlPzogYm9vbGVhbjtcbn1cblxuLyoqIENyZWF0ZSBhIGBXcml0YWJsZVN0cmVhbWAgZnJvbSBhIGBXcml0ZXJgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRhYmxlU3RyZWFtRnJvbVdyaXRlcihcbiAgd3JpdGVyOiBEZW5vLldyaXRlcixcbiAgb3B0aW9uczogV3JpdGFibGVTdHJlYW1Gcm9tV3JpdGVyT3B0aW9ucyA9IHt9LFxuKTogV3JpdGFibGVTdHJlYW08VWludDhBcnJheT4ge1xuICBjb25zdCB7IGF1dG9DbG9zZSA9IHRydWUgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIG5ldyBXcml0YWJsZVN0cmVhbSh7XG4gICAgYXN5bmMgd3JpdGUoY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHdyaXRlQWxsKHdyaXRlciwgY2h1bmspO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb250cm9sbGVyLmVycm9yKGUpO1xuICAgICAgICBpZiAoaXNDbG9zZXIod3JpdGVyKSAmJiBhdXRvQ2xvc2UpIHtcbiAgICAgICAgICB3cml0ZXIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY2xvc2UoKSB7XG4gICAgICBpZiAoaXNDbG9zZXIod3JpdGVyKSAmJiBhdXRvQ2xvc2UpIHtcbiAgICAgICAgd3JpdGVyLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBhYm9ydCgpIHtcbiAgICAgIGlmIChpc0Nsb3Nlcih3cml0ZXIpICYmIGF1dG9DbG9zZSkge1xuICAgICAgICB3cml0ZXIuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcbn1cblxuLyoqIENyZWF0ZSBhIGBSZWFkYWJsZVN0cmVhbWAgZnJvbSBhbnkga2luZCBvZiBpdGVyYWJsZS5cbiAqXG4gKiBgYGB0c1xuICogICAgICBpbXBvcnQgeyByZWFkYWJsZVN0cmVhbUZyb21JdGVyYWJsZSB9IGZyb20gXCIuL2NvbnZlcnNpb24udHNcIjtcbiAqXG4gKiAgICAgIGNvbnN0IHIxID0gcmVhZGFibGVTdHJlYW1Gcm9tSXRlcmFibGUoW1wiZm9vLCBiYXIsIGJhelwiXSk7XG4gKiAgICAgIGNvbnN0IHIyID0gcmVhZGFibGVTdHJlYW1Gcm9tSXRlcmFibGUoYXN5bmMgZnVuY3Rpb24qICgpIHtcbiAqICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgoKHIpID0+IHNldFRpbWVvdXQociwgMTAwMCkpKTtcbiAqICAgICAgICB5aWVsZCBcImZvb1wiO1xuICogICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKCgocikgPT4gc2V0VGltZW91dChyLCAxMDAwKSkpO1xuICogICAgICAgIHlpZWxkIFwiYmFyXCI7XG4gKiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKChyKSA9PiBzZXRUaW1lb3V0KHIsIDEwMDApKSk7XG4gKiAgICAgICAgeWllbGQgXCJiYXpcIjtcbiAqICAgICAgfSgpKTtcbiAqIGBgYFxuICpcbiAqIElmIHRoZSBwcm9kdWNlZCBpdGVyYXRvciAoYGl0ZXJhYmxlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpYCBvclxuICogYGl0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0oKWApIGlzIGEgZ2VuZXJhdG9yLCBvciBtb3JlIHNwZWNpZmljYWxseSBpcyBmb3VuZFxuICogdG8gaGF2ZSBhIGAudGhyb3coKWAgbWV0aG9kIG9uIGl0LCB0aGF0IHdpbGwgYmUgY2FsbGVkIHVwb25cbiAqIGByZWFkYWJsZVN0cmVhbS5jYW5jZWwoKWAuIFRoaXMgaXMgdGhlIGNhc2UgZm9yIHRoZSBzZWNvbmQgaW5wdXQgdHlwZSBhYm92ZTpcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcmVhZGFibGVTdHJlYW1Gcm9tSXRlcmFibGUgfSBmcm9tIFwiLi9jb252ZXJzaW9uLnRzXCI7XG4gKlxuICogY29uc3QgcjMgPSByZWFkYWJsZVN0cmVhbUZyb21JdGVyYWJsZShhc3luYyBmdW5jdGlvbiogKCkge1xuICogICB0cnkge1xuICogICAgIHlpZWxkIFwiZm9vXCI7XG4gKiAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgICAgY29uc29sZS5sb2coZXJyb3IpOyAvLyBFcnJvcjogQ2FuY2VsbGVkIGJ5IGNvbnN1bWVyLlxuICogICB9XG4gKiB9KCkpO1xuICogY29uc3QgcmVhZGVyID0gcjMuZ2V0UmVhZGVyKCk7XG4gKiBjb25zb2xlLmxvZyhhd2FpdCByZWFkZXIucmVhZCgpKTsgLy8geyB2YWx1ZTogXCJmb29cIiwgZG9uZTogZmFsc2UgfVxuICogYXdhaXQgcmVhZGVyLmNhbmNlbChuZXcgRXJyb3IoXCJDYW5jZWxsZWQgYnkgY29uc3VtZXIuXCIpKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZGFibGVTdHJlYW1Gcm9tSXRlcmFibGU8VD4oXG4gIGl0ZXJhYmxlOiBJdGVyYWJsZTxUPiB8IEFzeW5jSXRlcmFibGU8VD4sXG4pOiBSZWFkYWJsZVN0cmVhbTxUPiB7XG4gIGNvbnN0IGl0ZXJhdG9yOiBJdGVyYXRvcjxUPiB8IEFzeW5jSXRlcmF0b3I8VD4gPVxuICAgIChpdGVyYWJsZSBhcyBBc3luY0l0ZXJhYmxlPFQ+KVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0/LigpID8/XG4gICAgICAoaXRlcmFibGUgYXMgSXRlcmFibGU8VD4pW1N5bWJvbC5pdGVyYXRvcl0/LigpO1xuICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICBhc3luYyBwdWxsKGNvbnRyb2xsZXIpIHtcbiAgICAgIGNvbnN0IHsgdmFsdWUsIGRvbmUgfSA9IGF3YWl0IGl0ZXJhdG9yLm5leHQoKTtcbiAgICAgIGlmIChkb25lKSB7XG4gICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBjYW5jZWwocmVhc29uKSB7XG4gICAgICBpZiAodHlwZW9mIGl0ZXJhdG9yLnRocm93ID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGl0ZXJhdG9yLnRocm93KHJlYXNvbik7XG4gICAgICAgIH0gY2F0Y2ggeyAvKiBgaXRlcmF0b3IudGhyb3coKWAgYWx3YXlzIHRocm93cyBvbiBzaXRlLiBXZSBjYXRjaCBpdC4gKi8gfVxuICAgICAgfVxuICAgIH0sXG4gIH0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWRhYmxlU3RyZWFtRnJvbVJlYWRlck9wdGlvbnMge1xuICAvKiogSWYgdGhlIGByZWFkZXJgIGlzIGFsc28gYSBgRGVuby5DbG9zZXJgLCBhdXRvbWF0aWNhbGx5IGNsb3NlIHRoZSBgcmVhZGVyYFxuICAgKiB3aGVuIGBFT0ZgIGlzIGVuY291bnRlcmVkLCBvciBhIHJlYWQgZXJyb3Igb2NjdXJzLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBgdHJ1ZWAuICovXG4gIGF1dG9DbG9zZT86IGJvb2xlYW47XG5cbiAgLyoqIFRoZSBzaXplIG9mIGNodW5rcyB0byBhbGxvY2F0ZSB0byByZWFkLCB0aGUgZGVmYXVsdCBpcyB+MTZLaUIsIHdoaWNoIGlzXG4gICAqIHRoZSBtYXhpbXVtIHNpemUgdGhhdCBEZW5vIG9wZXJhdGlvbnMgY2FuIGN1cnJlbnRseSBzdXBwb3J0LiAqL1xuICBjaHVua1NpemU/OiBudW1iZXI7XG5cbiAgLyoqIFRoZSBxdWV1aW5nIHN0cmF0ZWd5IHRvIGNyZWF0ZSB0aGUgYFJlYWRhYmxlU3RyZWFtYCB3aXRoLiAqL1xuICBzdHJhdGVneT86IHsgaGlnaFdhdGVyTWFyaz86IG51bWJlciB8IHVuZGVmaW5lZDsgc2l6ZT86IHVuZGVmaW5lZCB9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5PmAgZnJvbSBmcm9tIGEgYERlbm8uUmVhZGVyYC5cbiAqXG4gKiBXaGVuIHRoZSBwdWxsIGFsZ29yaXRobSBpcyBjYWxsZWQgb24gdGhlIHN0cmVhbSwgYSBjaHVuayBmcm9tIHRoZSByZWFkZXJcbiAqIHdpbGwgYmUgcmVhZC4gIFdoZW4gYG51bGxgIGlzIHJldHVybmVkIGZyb20gdGhlIHJlYWRlciwgdGhlIHN0cmVhbSB3aWxsIGJlXG4gKiBjbG9zZWQgYWxvbmcgd2l0aCB0aGUgcmVhZGVyIChpZiBpdCBpcyBhbHNvIGEgYERlbm8uQ2xvc2VyYCkuXG4gKlxuICogQW4gZXhhbXBsZSBjb252ZXJ0aW5nIGEgYERlbm8uRnNGaWxlYCBpbnRvIGEgcmVhZGFibGUgc3RyZWFtOlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyByZWFkYWJsZVN0cmVhbUZyb21SZWFkZXIgfSBmcm9tIFwiLi9tb2QudHNcIjtcbiAqXG4gKiBjb25zdCBmaWxlID0gYXdhaXQgRGVuby5vcGVuKFwiLi9maWxlLnR4dFwiLCB7IHJlYWQ6IHRydWUgfSk7XG4gKiBjb25zdCBmaWxlU3RyZWFtID0gcmVhZGFibGVTdHJlYW1Gcm9tUmVhZGVyKGZpbGUpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkYWJsZVN0cmVhbUZyb21SZWFkZXIoXG4gIHJlYWRlcjogRGVuby5SZWFkZXIgfCAoRGVuby5SZWFkZXIgJiBEZW5vLkNsb3NlciksXG4gIG9wdGlvbnM6IFJlYWRhYmxlU3RyZWFtRnJvbVJlYWRlck9wdGlvbnMgPSB7fSxcbik6IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+IHtcbiAgY29uc3Qge1xuICAgIGF1dG9DbG9zZSA9IHRydWUsXG4gICAgY2h1bmtTaXplID0gREVGQVVMVF9DSFVOS19TSVpFLFxuICAgIHN0cmF0ZWd5LFxuICB9ID0gb3B0aW9ucztcblxuICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICBhc3luYyBwdWxsKGNvbnRyb2xsZXIpIHtcbiAgICAgIGNvbnN0IGNodW5rID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmtTaXplKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlYWQgPSBhd2FpdCByZWFkZXIucmVhZChjaHVuayk7XG4gICAgICAgIGlmIChyZWFkID09PSBudWxsKSB7XG4gICAgICAgICAgaWYgKGlzQ2xvc2VyKHJlYWRlcikgJiYgYXV0b0Nsb3NlKSB7XG4gICAgICAgICAgICByZWFkZXIuY2xvc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmsuc3ViYXJyYXkoMCwgcmVhZCkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb250cm9sbGVyLmVycm9yKGUpO1xuICAgICAgICBpZiAoaXNDbG9zZXIocmVhZGVyKSkge1xuICAgICAgICAgIHJlYWRlci5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBjYW5jZWwoKSB7XG4gICAgICBpZiAoaXNDbG9zZXIocmVhZGVyKSAmJiBhdXRvQ2xvc2UpIHtcbiAgICAgICAgcmVhZGVyLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgfSwgc3RyYXRlZ3kpO1xufVxuXG4vKiogUmVhZCBSZWFkZXIgYHJgIHVudGlsIEVPRiAoYG51bGxgKSBhbmQgcmVzb2x2ZSB0byB0aGUgY29udGVudCBhc1xuICogVWludDhBcnJheWAuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IEJ1ZmZlciB9IGZyb20gXCIuLi9pby9idWZmZXIudHNcIjtcbiAqIGltcG9ydCB7IHJlYWRBbGwgfSBmcm9tIFwiLi9jb252ZXJzaW9uLnRzXCI7XG4gKlxuICogLy8gRXhhbXBsZSBmcm9tIHN0ZGluXG4gKiBjb25zdCBzdGRpbkNvbnRlbnQgPSBhd2FpdCByZWFkQWxsKERlbm8uc3RkaW4pO1xuICpcbiAqIC8vIEV4YW1wbGUgZnJvbSBmaWxlXG4gKiBjb25zdCBmaWxlID0gYXdhaXQgRGVuby5vcGVuKFwibXlfZmlsZS50eHRcIiwge3JlYWQ6IHRydWV9KTtcbiAqIGNvbnN0IG15RmlsZUNvbnRlbnQgPSBhd2FpdCByZWFkQWxsKGZpbGUpO1xuICogRGVuby5jbG9zZShmaWxlLnJpZCk7XG4gKlxuICogLy8gRXhhbXBsZSBmcm9tIGJ1ZmZlclxuICogY29uc3QgbXlEYXRhID0gbmV3IFVpbnQ4QXJyYXkoMTAwKTtcbiAqIC8vIC4uLiBmaWxsIG15RGF0YSBhcnJheSB3aXRoIGRhdGFcbiAqIGNvbnN0IHJlYWRlciA9IG5ldyBCdWZmZXIobXlEYXRhLmJ1ZmZlcik7XG4gKiBjb25zdCBidWZmZXJDb250ZW50ID0gYXdhaXQgcmVhZEFsbChyZWFkZXIpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkQWxsKHI6IERlbm8uUmVhZGVyKTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gIGNvbnN0IGJ1ZiA9IG5ldyBCdWZmZXIoKTtcbiAgYXdhaXQgYnVmLnJlYWRGcm9tKHIpO1xuICByZXR1cm4gYnVmLmJ5dGVzKCk7XG59XG5cbi8qKiBTeW5jaHJvbm91c2x5IHJlYWRzIFJlYWRlciBgcmAgdW50aWwgRU9GIChgbnVsbGApIGFuZCByZXR1cm5zIHRoZSBjb250ZW50XG4gKiBhcyBgVWludDhBcnJheWAuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IEJ1ZmZlciB9IGZyb20gXCIuLi9pby9idWZmZXIudHNcIjtcbiAqIGltcG9ydCB7IHJlYWRBbGxTeW5jIH0gZnJvbSBcIi4vY29udmVyc2lvbi50c1wiO1xuICpcbiAqIC8vIEV4YW1wbGUgZnJvbSBzdGRpblxuICogY29uc3Qgc3RkaW5Db250ZW50ID0gcmVhZEFsbFN5bmMoRGVuby5zdGRpbik7XG4gKlxuICogLy8gRXhhbXBsZSBmcm9tIGZpbGVcbiAqIGNvbnN0IGZpbGUgPSBEZW5vLm9wZW5TeW5jKFwibXlfZmlsZS50eHRcIiwge3JlYWQ6IHRydWV9KTtcbiAqIGNvbnN0IG15RmlsZUNvbnRlbnQgPSByZWFkQWxsU3luYyhmaWxlKTtcbiAqIERlbm8uY2xvc2UoZmlsZS5yaWQpO1xuICpcbiAqIC8vIEV4YW1wbGUgZnJvbSBidWZmZXJcbiAqIGNvbnN0IG15RGF0YSA9IG5ldyBVaW50OEFycmF5KDEwMCk7XG4gKiAvLyAuLi4gZmlsbCBteURhdGEgYXJyYXkgd2l0aCBkYXRhXG4gKiBjb25zdCByZWFkZXIgPSBuZXcgQnVmZmVyKG15RGF0YS5idWZmZXIpO1xuICogY29uc3QgYnVmZmVyQ29udGVudCA9IHJlYWRBbGxTeW5jKHJlYWRlcik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRBbGxTeW5jKHI6IERlbm8uUmVhZGVyU3luYyk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCBidWYgPSBuZXcgQnVmZmVyKCk7XG4gIGJ1Zi5yZWFkRnJvbVN5bmMocik7XG4gIHJldHVybiBidWYuYnl0ZXMoKTtcbn1cblxuLyoqIFdyaXRlIGFsbCB0aGUgY29udGVudCBvZiB0aGUgYXJyYXkgYnVmZmVyIChgYXJyYCkgdG8gdGhlIHdyaXRlciAoYHdgKS5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSBcIi4uL2lvL2J1ZmZlci50c1wiO1xuICogaW1wb3J0IHsgd3JpdGVBbGwgfSBmcm9tIFwiLi9jb252ZXJzaW9uLnRzXCI7XG5cbiAqIC8vIEV4YW1wbGUgd3JpdGluZyB0byBzdGRvdXRcbiAqIGxldCBjb250ZW50Qnl0ZXMgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCJIZWxsbyBXb3JsZFwiKTtcbiAqIGF3YWl0IHdyaXRlQWxsKERlbm8uc3Rkb3V0LCBjb250ZW50Qnl0ZXMpO1xuICpcbiAqIC8vIEV4YW1wbGUgd3JpdGluZyB0byBmaWxlXG4gKiBjb250ZW50Qnl0ZXMgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCJIZWxsbyBXb3JsZFwiKTtcbiAqIGNvbnN0IGZpbGUgPSBhd2FpdCBEZW5vLm9wZW4oJ3Rlc3QuZmlsZScsIHt3cml0ZTogdHJ1ZX0pO1xuICogYXdhaXQgd3JpdGVBbGwoZmlsZSwgY29udGVudEJ5dGVzKTtcbiAqIERlbm8uY2xvc2UoZmlsZS5yaWQpO1xuICpcbiAqIC8vIEV4YW1wbGUgd3JpdGluZyB0byBidWZmZXJcbiAqIGNvbnRlbnRCeXRlcyA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShcIkhlbGxvIFdvcmxkXCIpO1xuICogY29uc3Qgd3JpdGVyID0gbmV3IEJ1ZmZlcigpO1xuICogYXdhaXQgd3JpdGVBbGwod3JpdGVyLCBjb250ZW50Qnl0ZXMpO1xuICogY29uc29sZS5sb2cod3JpdGVyLmJ5dGVzKCkubGVuZ3RoKTsgIC8vIDExXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQWxsKHc6IERlbm8uV3JpdGVyLCBhcnI6IFVpbnQ4QXJyYXkpIHtcbiAgbGV0IG53cml0dGVuID0gMDtcbiAgd2hpbGUgKG53cml0dGVuIDwgYXJyLmxlbmd0aCkge1xuICAgIG53cml0dGVuICs9IGF3YWl0IHcud3JpdGUoYXJyLnN1YmFycmF5KG53cml0dGVuKSk7XG4gIH1cbn1cblxuLyoqIFN5bmNocm9ub3VzbHkgd3JpdGUgYWxsIHRoZSBjb250ZW50IG9mIHRoZSBhcnJheSBidWZmZXIgKGBhcnJgKSB0byB0aGVcbiAqIHdyaXRlciAoYHdgKS5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSBcIi4uL2lvL2J1ZmZlci50c1wiO1xuICogaW1wb3J0IHsgd3JpdGVBbGxTeW5jIH0gZnJvbSBcIi4vY29udmVyc2lvbi50c1wiO1xuICpcbiAqIC8vIEV4YW1wbGUgd3JpdGluZyB0byBzdGRvdXRcbiAqIGxldCBjb250ZW50Qnl0ZXMgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCJIZWxsbyBXb3JsZFwiKTtcbiAqIHdyaXRlQWxsU3luYyhEZW5vLnN0ZG91dCwgY29udGVudEJ5dGVzKTtcbiAqXG4gKiAvLyBFeGFtcGxlIHdyaXRpbmcgdG8gZmlsZVxuICogY29udGVudEJ5dGVzID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKFwiSGVsbG8gV29ybGRcIik7XG4gKiBjb25zdCBmaWxlID0gRGVuby5vcGVuU3luYygndGVzdC5maWxlJywge3dyaXRlOiB0cnVlfSk7XG4gKiB3cml0ZUFsbFN5bmMoZmlsZSwgY29udGVudEJ5dGVzKTtcbiAqIERlbm8uY2xvc2UoZmlsZS5yaWQpO1xuICpcbiAqIC8vIEV4YW1wbGUgd3JpdGluZyB0byBidWZmZXJcbiAqIGNvbnRlbnRCeXRlcyA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShcIkhlbGxvIFdvcmxkXCIpO1xuICogY29uc3Qgd3JpdGVyID0gbmV3IEJ1ZmZlcigpO1xuICogd3JpdGVBbGxTeW5jKHdyaXRlciwgY29udGVudEJ5dGVzKTtcbiAqIGNvbnNvbGUubG9nKHdyaXRlci5ieXRlcygpLmxlbmd0aCk7ICAvLyAxMVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUFsbFN5bmModzogRGVuby5Xcml0ZXJTeW5jLCBhcnI6IFVpbnQ4QXJyYXkpOiB2b2lkIHtcbiAgbGV0IG53cml0dGVuID0gMDtcbiAgd2hpbGUgKG53cml0dGVuIDwgYXJyLmxlbmd0aCkge1xuICAgIG53cml0dGVuICs9IHcud3JpdGVTeW5jKGFyci5zdWJhcnJheShud3JpdHRlbikpO1xuICB9XG59XG5cbi8qKiBUdXJucyBhIFJlYWRlciwgYHJgLCBpbnRvIGFuIGFzeW5jIGl0ZXJhdG9yLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBpdGVyYXRlUmVhZGVyIH0gZnJvbSBcIi4vY29udmVyc2lvbi50c1wiO1xuICpcbiAqIGxldCBmID0gYXdhaXQgRGVuby5vcGVuKFwiL2V0Yy9wYXNzd2RcIik7XG4gKiBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIGl0ZXJhdGVSZWFkZXIoZikpIHtcbiAqICAgY29uc29sZS5sb2coY2h1bmspO1xuICogfVxuICogZi5jbG9zZSgpO1xuICogYGBgXG4gKlxuICogU2Vjb25kIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHR1bmUgc2l6ZSBvZiBhIGJ1ZmZlci5cbiAqIERlZmF1bHQgc2l6ZSBvZiB0aGUgYnVmZmVyIGlzIDMya0IuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGl0ZXJhdGVSZWFkZXIgfSBmcm9tIFwiLi9jb252ZXJzaW9uLnRzXCI7XG4gKlxuICogbGV0IGYgPSBhd2FpdCBEZW5vLm9wZW4oXCIvZXRjL3Bhc3N3ZFwiKTtcbiAqIGNvbnN0IGl0ID0gaXRlcmF0ZVJlYWRlcihmLCB7XG4gKiAgIGJ1ZlNpemU6IDEwMjQgKiAxMDI0XG4gKiB9KTtcbiAqIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgaXQpIHtcbiAqICAgY29uc29sZS5sb2coY2h1bmspO1xuICogfVxuICogZi5jbG9zZSgpO1xuICogYGBgXG4gKlxuICogSXRlcmF0b3IgdXNlcyBhbiBpbnRlcm5hbCBidWZmZXIgb2YgZml4ZWQgc2l6ZSBmb3IgZWZmaWNpZW5jeTsgaXQgcmV0dXJuc1xuICogYSB2aWV3IG9uIHRoYXQgYnVmZmVyIG9uIGVhY2ggaXRlcmF0aW9uLiBJdCBpcyB0aGVyZWZvcmUgY2FsbGVyJ3NcbiAqIHJlc3BvbnNpYmlsaXR5IHRvIGNvcHkgY29udGVudHMgb2YgdGhlIGJ1ZmZlciBpZiBuZWVkZWQ7IG90aGVyd2lzZSB0aGVcbiAqIG5leHQgaXRlcmF0aW9uIHdpbGwgb3ZlcndyaXRlIGNvbnRlbnRzIG9mIHByZXZpb3VzbHkgcmV0dXJuZWQgY2h1bmsuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogaXRlcmF0ZVJlYWRlcihcbiAgcjogRGVuby5SZWFkZXIsXG4gIG9wdGlvbnM/OiB7XG4gICAgYnVmU2l6ZT86IG51bWJlcjtcbiAgfSxcbik6IEFzeW5jSXRlcmFibGVJdGVyYXRvcjxVaW50OEFycmF5PiB7XG4gIGNvbnN0IGJ1ZlNpemUgPSBvcHRpb25zPy5idWZTaXplID8/IERFRkFVTFRfQlVGRkVSX1NJWkU7XG4gIGNvbnN0IGIgPSBuZXcgVWludDhBcnJheShidWZTaXplKTtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByLnJlYWQoYik7XG4gICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgeWllbGQgYi5zdWJhcnJheSgwLCByZXN1bHQpO1xuICB9XG59XG5cbi8qKiBUdXJucyBhIFJlYWRlclN5bmMsIGByYCwgaW50byBhbiBpdGVyYXRvci5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgaXRlcmF0ZVJlYWRlclN5bmMgfSBmcm9tIFwiLi9jb252ZXJzaW9uLnRzXCI7XG4gKlxuICogbGV0IGYgPSBEZW5vLm9wZW5TeW5jKFwiL2V0Yy9wYXNzd2RcIik7XG4gKiBmb3IgKGNvbnN0IGNodW5rIG9mIGl0ZXJhdGVSZWFkZXJTeW5jKGYpKSB7XG4gKiAgIGNvbnNvbGUubG9nKGNodW5rKTtcbiAqIH1cbiAqIGYuY2xvc2UoKTtcbiAqIGBgYFxuICpcbiAqIFNlY29uZCBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byB0dW5lIHNpemUgb2YgYSBidWZmZXIuXG4gKiBEZWZhdWx0IHNpemUgb2YgdGhlIGJ1ZmZlciBpcyAzMmtCLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBpdGVyYXRlUmVhZGVyU3luYyB9IGZyb20gXCIuL2NvbnZlcnNpb24udHNcIjtcblxuICogbGV0IGYgPSBhd2FpdCBEZW5vLm9wZW4oXCIvZXRjL3Bhc3N3ZFwiKTtcbiAqIGNvbnN0IGl0ZXIgPSBpdGVyYXRlUmVhZGVyU3luYyhmLCB7XG4gKiAgIGJ1ZlNpemU6IDEwMjQgKiAxMDI0XG4gKiB9KTtcbiAqIGZvciAoY29uc3QgY2h1bmsgb2YgaXRlcikge1xuICogICBjb25zb2xlLmxvZyhjaHVuayk7XG4gKiB9XG4gKiBmLmNsb3NlKCk7XG4gKiBgYGBcbiAqXG4gKiBJdGVyYXRvciB1c2VzIGFuIGludGVybmFsIGJ1ZmZlciBvZiBmaXhlZCBzaXplIGZvciBlZmZpY2llbmN5OyBpdCByZXR1cm5zXG4gKiBhIHZpZXcgb24gdGhhdCBidWZmZXIgb24gZWFjaCBpdGVyYXRpb24uIEl0IGlzIHRoZXJlZm9yZSBjYWxsZXInc1xuICogcmVzcG9uc2liaWxpdHkgdG8gY29weSBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGlmIG5lZWRlZDsgb3RoZXJ3aXNlIHRoZVxuICogbmV4dCBpdGVyYXRpb24gd2lsbCBvdmVyd3JpdGUgY29udGVudHMgb2YgcHJldmlvdXNseSByZXR1cm5lZCBjaHVuay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyYXRlUmVhZGVyU3luYyhcbiAgcjogRGVuby5SZWFkZXJTeW5jLFxuICBvcHRpb25zPzoge1xuICAgIGJ1ZlNpemU/OiBudW1iZXI7XG4gIH0sXG4pOiBJdGVyYWJsZUl0ZXJhdG9yPFVpbnQ4QXJyYXk+IHtcbiAgY29uc3QgYnVmU2l6ZSA9IG9wdGlvbnM/LmJ1ZlNpemUgPz8gREVGQVVMVF9CVUZGRVJfU0laRTtcbiAgY29uc3QgYiA9IG5ldyBVaW50OEFycmF5KGJ1ZlNpemUpO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHIucmVhZFN5bmMoYik7XG4gICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgeWllbGQgYi5zdWJhcnJheSgwLCByZXN1bHQpO1xuICB9XG59XG5cbi8qKiBDb3BpZXMgZnJvbSBgc3JjYCB0byBgZHN0YCB1bnRpbCBlaXRoZXIgRU9GIChgbnVsbGApIGlzIHJlYWQgZnJvbSBgc3JjYCBvclxuICogYW4gZXJyb3Igb2NjdXJzLiBJdCByZXNvbHZlcyB0byB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCBvciByZWplY3RzIHdpdGhcbiAqIHRoZSBmaXJzdCBlcnJvciBlbmNvdW50ZXJlZCB3aGlsZSBjb3B5aW5nLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBjb3B5IH0gZnJvbSBcIi4vY29udmVyc2lvbi50c1wiO1xuICpcbiAqIGNvbnN0IHNvdXJjZSA9IGF3YWl0IERlbm8ub3BlbihcIm15X2ZpbGUudHh0XCIpO1xuICogY29uc3QgYnl0ZXNDb3BpZWQxID0gYXdhaXQgY29weShzb3VyY2UsIERlbm8uc3Rkb3V0KTtcbiAqIGNvbnN0IGRlc3RpbmF0aW9uID0gYXdhaXQgRGVuby5jcmVhdGUoXCJteV9maWxlXzIudHh0XCIpO1xuICogY29uc3QgYnl0ZXNDb3BpZWQyID0gYXdhaXQgY29weShzb3VyY2UsIGRlc3RpbmF0aW9uKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzcmMgVGhlIHNvdXJjZSB0byBjb3B5IGZyb21cbiAqIEBwYXJhbSBkc3QgVGhlIGRlc3RpbmF0aW9uIHRvIGNvcHkgdG9cbiAqIEBwYXJhbSBvcHRpb25zIENhbiBiZSB1c2VkIHRvIHR1bmUgc2l6ZSBvZiB0aGUgYnVmZmVyLiBEZWZhdWx0IHNpemUgaXMgMzJrQlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weShcbiAgc3JjOiBEZW5vLlJlYWRlcixcbiAgZHN0OiBEZW5vLldyaXRlcixcbiAgb3B0aW9ucz86IHtcbiAgICBidWZTaXplPzogbnVtYmVyO1xuICB9LFxuKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgbGV0IG4gPSAwO1xuICBjb25zdCBidWZTaXplID0gb3B0aW9ucz8uYnVmU2l6ZSA/PyBERUZBVUxUX0JVRkZFUl9TSVpFO1xuICBjb25zdCBiID0gbmV3IFVpbnQ4QXJyYXkoYnVmU2l6ZSk7XG4gIGxldCBnb3RFT0YgPSBmYWxzZTtcbiAgd2hpbGUgKGdvdEVPRiA9PT0gZmFsc2UpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzcmMucmVhZChiKTtcbiAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgICBnb3RFT0YgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbndyaXR0ZW4gPSAwO1xuICAgICAgd2hpbGUgKG53cml0dGVuIDwgcmVzdWx0KSB7XG4gICAgICAgIG53cml0dGVuICs9IGF3YWl0IGRzdC53cml0ZShiLnN1YmFycmF5KG53cml0dGVuLCByZXN1bHQpKTtcbiAgICAgIH1cbiAgICAgIG4gKz0gbndyaXR0ZW47XG4gICAgfVxuICB9XG4gIHJldHVybiBuO1xufVxuIiwgIi8vIEBnZW5lcmF0ZWQgZmlsZSBmcm9tIHdhc21idWlsZCAtLSBkbyBub3QgZWRpdFxuLy8gZGVuby1saW50LWlnbm9yZS1maWxlXG4vLyBkZW5vLWZtdC1pZ25vcmUtZmlsZVxuLy8gc291cmNlLWhhc2g6IDZkNDczMDI2MTRiOGJmNzIzNDNiMjE5YmNlNDc0NTZiNzBmYTUyNzhcbmxldCB3YXNtO1xuXG5pbXBvcnQge1xuICBhdG9taWNfd3JpdGVfZmlsZSxcbiAgbW9kaWZpZWRfdGltZSxcbiAgcmVhZF9maWxlX2J5dGVzLFxufSBmcm9tIFwiLi9zbmlwcGV0cy9kZW5vX2NhY2hlX2Rpci1hMmFlY2FhOTUzNmM5NDAyL2ZzLmpzXCI7XG5pbXBvcnQgKiBhcyBpbXBvcnQwIGZyb20gXCIuL3NuaXBwZXRzL2Rlbm9fY2FjaGVfZGlyLWEyYWVjYWE5NTM2Yzk0MDIvZnMuanNcIjtcblxuY29uc3QgY2FjaGVkVGV4dERlY29kZXIgPSB0eXBlb2YgVGV4dERlY29kZXIgIT09IFwidW5kZWZpbmVkXCJcbiAgPyBuZXcgVGV4dERlY29kZXIoXCJ1dGYtOFwiLCB7IGlnbm9yZUJPTTogdHJ1ZSwgZmF0YWw6IHRydWUgfSlcbiAgOiB7XG4gICAgZGVjb2RlOiAoKSA9PiB7XG4gICAgICB0aHJvdyBFcnJvcihcIlRleHREZWNvZGVyIG5vdCBhdmFpbGFibGVcIik7XG4gICAgfSxcbiAgfTtcblxuaWYgKHR5cGVvZiBUZXh0RGVjb2RlciAhPT0gXCJ1bmRlZmluZWRcIikgY2FjaGVkVGV4dERlY29kZXIuZGVjb2RlKCk7XG5cbmxldCBjYWNoZWRVaW50OE1lbW9yeTAgPSBudWxsO1xuXG5mdW5jdGlvbiBnZXRVaW50OE1lbW9yeTAoKSB7XG4gIGlmIChjYWNoZWRVaW50OE1lbW9yeTAgPT09IG51bGwgfHwgY2FjaGVkVWludDhNZW1vcnkwLmJ5dGVMZW5ndGggPT09IDApIHtcbiAgICBjYWNoZWRVaW50OE1lbW9yeTAgPSBuZXcgVWludDhBcnJheSh3YXNtLm1lbW9yeS5idWZmZXIpO1xuICB9XG4gIHJldHVybiBjYWNoZWRVaW50OE1lbW9yeTA7XG59XG5cbmZ1bmN0aW9uIGdldFN0cmluZ0Zyb21XYXNtMChwdHIsIGxlbikge1xuICBwdHIgPSBwdHIgPj4+IDA7XG4gIHJldHVybiBjYWNoZWRUZXh0RGVjb2Rlci5kZWNvZGUoZ2V0VWludDhNZW1vcnkwKCkuc3ViYXJyYXkocHRyLCBwdHIgKyBsZW4pKTtcbn1cblxuY29uc3QgaGVhcCA9IG5ldyBBcnJheSgxMjgpLmZpbGwodW5kZWZpbmVkKTtcblxuaGVhcC5wdXNoKHVuZGVmaW5lZCwgbnVsbCwgdHJ1ZSwgZmFsc2UpO1xuXG5sZXQgaGVhcF9uZXh0ID0gaGVhcC5sZW5ndGg7XG5cbmZ1bmN0aW9uIGFkZEhlYXBPYmplY3Qob2JqKSB7XG4gIGlmIChoZWFwX25leHQgPT09IGhlYXAubGVuZ3RoKSBoZWFwLnB1c2goaGVhcC5sZW5ndGggKyAxKTtcbiAgY29uc3QgaWR4ID0gaGVhcF9uZXh0O1xuICBoZWFwX25leHQgPSBoZWFwW2lkeF07XG5cbiAgaGVhcFtpZHhdID0gb2JqO1xuICByZXR1cm4gaWR4O1xufVxuXG5mdW5jdGlvbiBnZXRPYmplY3QoaWR4KSB7XG4gIHJldHVybiBoZWFwW2lkeF07XG59XG5cbmZ1bmN0aW9uIGRyb3BPYmplY3QoaWR4KSB7XG4gIGlmIChpZHggPCAxMzIpIHJldHVybjtcbiAgaGVhcFtpZHhdID0gaGVhcF9uZXh0O1xuICBoZWFwX25leHQgPSBpZHg7XG59XG5cbmZ1bmN0aW9uIHRha2VPYmplY3QoaWR4KSB7XG4gIGNvbnN0IHJldCA9IGdldE9iamVjdChpZHgpO1xuICBkcm9wT2JqZWN0KGlkeCk7XG4gIHJldHVybiByZXQ7XG59XG5cbmxldCBXQVNNX1ZFQ1RPUl9MRU4gPSAwO1xuXG5jb25zdCBjYWNoZWRUZXh0RW5jb2RlciA9IHR5cGVvZiBUZXh0RW5jb2RlciAhPT0gXCJ1bmRlZmluZWRcIlxuICA/IG5ldyBUZXh0RW5jb2RlcihcInV0Zi04XCIpXG4gIDoge1xuICAgIGVuY29kZTogKCkgPT4ge1xuICAgICAgdGhyb3cgRXJyb3IoXCJUZXh0RW5jb2RlciBub3QgYXZhaWxhYmxlXCIpO1xuICAgIH0sXG4gIH07XG5cbmNvbnN0IGVuY29kZVN0cmluZyA9IGZ1bmN0aW9uIChhcmcsIHZpZXcpIHtcbiAgcmV0dXJuIGNhY2hlZFRleHRFbmNvZGVyLmVuY29kZUludG8oYXJnLCB2aWV3KTtcbn07XG5cbmZ1bmN0aW9uIHBhc3NTdHJpbmdUb1dhc20wKGFyZywgbWFsbG9jLCByZWFsbG9jKSB7XG4gIGlmIChyZWFsbG9jID09PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBidWYgPSBjYWNoZWRUZXh0RW5jb2Rlci5lbmNvZGUoYXJnKTtcbiAgICBjb25zdCBwdHIgPSBtYWxsb2MoYnVmLmxlbmd0aCkgPj4+IDA7XG4gICAgZ2V0VWludDhNZW1vcnkwKCkuc3ViYXJyYXkocHRyLCBwdHIgKyBidWYubGVuZ3RoKS5zZXQoYnVmKTtcbiAgICBXQVNNX1ZFQ1RPUl9MRU4gPSBidWYubGVuZ3RoO1xuICAgIHJldHVybiBwdHI7XG4gIH1cblxuICBsZXQgbGVuID0gYXJnLmxlbmd0aDtcbiAgbGV0IHB0ciA9IG1hbGxvYyhsZW4pID4+PiAwO1xuXG4gIGNvbnN0IG1lbSA9IGdldFVpbnQ4TWVtb3J5MCgpO1xuXG4gIGxldCBvZmZzZXQgPSAwO1xuXG4gIGZvciAoOyBvZmZzZXQgPCBsZW47IG9mZnNldCsrKSB7XG4gICAgY29uc3QgY29kZSA9IGFyZy5jaGFyQ29kZUF0KG9mZnNldCk7XG4gICAgaWYgKGNvZGUgPiAweDdGKSBicmVhaztcbiAgICBtZW1bcHRyICsgb2Zmc2V0XSA9IGNvZGU7XG4gIH1cblxuICBpZiAob2Zmc2V0ICE9PSBsZW4pIHtcbiAgICBpZiAob2Zmc2V0ICE9PSAwKSB7XG4gICAgICBhcmcgPSBhcmcuc2xpY2Uob2Zmc2V0KTtcbiAgICB9XG4gICAgcHRyID0gcmVhbGxvYyhwdHIsIGxlbiwgbGVuID0gb2Zmc2V0ICsgYXJnLmxlbmd0aCAqIDMpID4+PiAwO1xuICAgIGNvbnN0IHZpZXcgPSBnZXRVaW50OE1lbW9yeTAoKS5zdWJhcnJheShwdHIgKyBvZmZzZXQsIHB0ciArIGxlbik7XG4gICAgY29uc3QgcmV0ID0gZW5jb2RlU3RyaW5nKGFyZywgdmlldyk7XG5cbiAgICBvZmZzZXQgKz0gcmV0LndyaXR0ZW47XG4gIH1cblxuICBXQVNNX1ZFQ1RPUl9MRU4gPSBvZmZzZXQ7XG4gIHJldHVybiBwdHI7XG59XG5cbmZ1bmN0aW9uIGlzTGlrZU5vbmUoeCkge1xuICByZXR1cm4geCA9PT0gdW5kZWZpbmVkIHx8IHggPT09IG51bGw7XG59XG5cbmxldCBjYWNoZWRJbnQzMk1lbW9yeTAgPSBudWxsO1xuXG5mdW5jdGlvbiBnZXRJbnQzMk1lbW9yeTAoKSB7XG4gIGlmIChjYWNoZWRJbnQzMk1lbW9yeTAgPT09IG51bGwgfHwgY2FjaGVkSW50MzJNZW1vcnkwLmJ5dGVMZW5ndGggPT09IDApIHtcbiAgICBjYWNoZWRJbnQzMk1lbW9yeTAgPSBuZXcgSW50MzJBcnJheSh3YXNtLm1lbW9yeS5idWZmZXIpO1xuICB9XG4gIHJldHVybiBjYWNoZWRJbnQzMk1lbW9yeTA7XG59XG5cbmxldCBjYWNoZWRGbG9hdDY0TWVtb3J5MCA9IG51bGw7XG5cbmZ1bmN0aW9uIGdldEZsb2F0NjRNZW1vcnkwKCkge1xuICBpZiAoY2FjaGVkRmxvYXQ2NE1lbW9yeTAgPT09IG51bGwgfHwgY2FjaGVkRmxvYXQ2NE1lbW9yeTAuYnl0ZUxlbmd0aCA9PT0gMCkge1xuICAgIGNhY2hlZEZsb2F0NjRNZW1vcnkwID0gbmV3IEZsb2F0NjRBcnJheSh3YXNtLm1lbW9yeS5idWZmZXIpO1xuICB9XG4gIHJldHVybiBjYWNoZWRGbG9hdDY0TWVtb3J5MDtcbn1cblxuZnVuY3Rpb24gZGVidWdTdHJpbmcodmFsKSB7XG4gIC8vIHByaW1pdGl2ZSB0eXBlc1xuICBjb25zdCB0eXBlID0gdHlwZW9mIHZhbDtcbiAgaWYgKHR5cGUgPT0gXCJudW1iZXJcIiB8fCB0eXBlID09IFwiYm9vbGVhblwiIHx8IHZhbCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGAke3ZhbH1gO1xuICB9XG4gIGlmICh0eXBlID09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gYFwiJHt2YWx9XCJgO1xuICB9XG4gIGlmICh0eXBlID09IFwic3ltYm9sXCIpIHtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHZhbC5kZXNjcmlwdGlvbjtcbiAgICBpZiAoZGVzY3JpcHRpb24gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFwiU3ltYm9sXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgU3ltYm9sKCR7ZGVzY3JpcHRpb259KWA7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlID09IFwiZnVuY3Rpb25cIikge1xuICAgIGNvbnN0IG5hbWUgPSB2YWwubmFtZTtcbiAgICBpZiAodHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIiAmJiBuYW1lLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBgRnVuY3Rpb24oJHtuYW1lfSlgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJGdW5jdGlvblwiO1xuICAgIH1cbiAgfVxuICAvLyBvYmplY3RzXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICBjb25zdCBsZW5ndGggPSB2YWwubGVuZ3RoO1xuICAgIGxldCBkZWJ1ZyA9IFwiW1wiO1xuICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICBkZWJ1ZyArPSBkZWJ1Z1N0cmluZyh2YWxbMF0pO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBkZWJ1ZyArPSBcIiwgXCIgKyBkZWJ1Z1N0cmluZyh2YWxbaV0pO1xuICAgIH1cbiAgICBkZWJ1ZyArPSBcIl1cIjtcbiAgICByZXR1cm4gZGVidWc7XG4gIH1cbiAgLy8gVGVzdCBmb3IgYnVpbHQtaW5cbiAgY29uc3QgYnVpbHRJbk1hdGNoZXMgPSAvXFxbb2JqZWN0IChbXlxcXV0rKVxcXS8uZXhlYyh0b1N0cmluZy5jYWxsKHZhbCkpO1xuICBsZXQgY2xhc3NOYW1lO1xuICBpZiAoYnVpbHRJbk1hdGNoZXMubGVuZ3RoID4gMSkge1xuICAgIGNsYXNzTmFtZSA9IGJ1aWx0SW5NYXRjaGVzWzFdO1xuICB9IGVsc2Uge1xuICAgIC8vIEZhaWxlZCB0byBtYXRjaCB0aGUgc3RhbmRhcmQgJ1tvYmplY3QgQ2xhc3NOYW1lXSdcbiAgICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpO1xuICB9XG4gIGlmIChjbGFzc05hbWUgPT0gXCJPYmplY3RcIikge1xuICAgIC8vIHdlJ3JlIGEgdXNlciBkZWZpbmVkIGNsYXNzIG9yIE9iamVjdFxuICAgIC8vIEpTT04uc3RyaW5naWZ5IGF2b2lkcyBwcm9ibGVtcyB3aXRoIGN5Y2xlcywgYW5kIGlzIGdlbmVyYWxseSBtdWNoXG4gICAgLy8gZWFzaWVyIHRoYW4gbG9vcGluZyB0aHJvdWdoIG93blByb3BlcnRpZXMgb2YgYHZhbGAuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBcIk9iamVjdChcIiArIEpTT04uc3RyaW5naWZ5KHZhbCkgKyBcIilcIjtcbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICByZXR1cm4gXCJPYmplY3RcIjtcbiAgICB9XG4gIH1cbiAgLy8gZXJyb3JzXG4gIGlmICh2YWwgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIHJldHVybiBgJHt2YWwubmFtZX06ICR7dmFsLm1lc3NhZ2V9XFxuJHt2YWwuc3RhY2t9YDtcbiAgfVxuICAvLyBUT0RPIHdlIGNvdWxkIHRlc3QgZm9yIG1vcmUgdGhpbmdzIGhlcmUsIGxpa2UgYFNldGBzIGFuZCBgTWFwYHMuXG4gIHJldHVybiBjbGFzc05hbWU7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUVycm9yKGYsIGFyZ3MpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZi5hcHBseSh0aGlzLCBhcmdzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHdhc20uX193YmluZGdlbl9leG5fc3RvcmUoYWRkSGVhcE9iamVjdChlKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QXJyYXlVOEZyb21XYXNtMChwdHIsIGxlbikge1xuICBwdHIgPSBwdHIgPj4+IDA7XG4gIHJldHVybiBnZXRVaW50OE1lbW9yeTAoKS5zdWJhcnJheShwdHIgLyAxLCBwdHIgLyAxICsgbGVuKTtcbn1cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVybF90b19maWxlbmFtZSh1cmwpIHtcbiAgbGV0IGRlZmVycmVkM18wO1xuICBsZXQgZGVmZXJyZWQzXzE7XG4gIHRyeSB7XG4gICAgY29uc3QgcmV0cHRyID0gd2FzbS5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKC0xNik7XG4gICAgY29uc3QgcHRyMCA9IHBhc3NTdHJpbmdUb1dhc20wKFxuICAgICAgdXJsLFxuICAgICAgd2FzbS5fX3diaW5kZ2VuX21hbGxvYyxcbiAgICAgIHdhc20uX193YmluZGdlbl9yZWFsbG9jLFxuICAgICk7XG4gICAgY29uc3QgbGVuMCA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICB3YXNtLnVybF90b19maWxlbmFtZShyZXRwdHIsIHB0cjAsIGxlbjApO1xuICAgIHZhciByMCA9IGdldEludDMyTWVtb3J5MCgpW3JldHB0ciAvIDQgKyAwXTtcbiAgICB2YXIgcjEgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMV07XG4gICAgdmFyIHIyID0gZ2V0SW50MzJNZW1vcnkwKClbcmV0cHRyIC8gNCArIDJdO1xuICAgIHZhciByMyA9IGdldEludDMyTWVtb3J5MCgpW3JldHB0ciAvIDQgKyAzXTtcbiAgICB2YXIgcHRyMiA9IHIwO1xuICAgIHZhciBsZW4yID0gcjE7XG4gICAgaWYgKHIzKSB7XG4gICAgICBwdHIyID0gMDtcbiAgICAgIGxlbjIgPSAwO1xuICAgICAgdGhyb3cgdGFrZU9iamVjdChyMik7XG4gICAgfVxuICAgIGRlZmVycmVkM18wID0gcHRyMjtcbiAgICBkZWZlcnJlZDNfMSA9IGxlbjI7XG4gICAgcmV0dXJuIGdldFN0cmluZ0Zyb21XYXNtMChwdHIyLCBsZW4yKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB3YXNtLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoMTYpO1xuICAgIHdhc20uX193YmluZGdlbl9mcmVlKGRlZmVycmVkM18wLCBkZWZlcnJlZDNfMSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFzc0FycmF5OFRvV2FzbTAoYXJnLCBtYWxsb2MpIHtcbiAgY29uc3QgcHRyID0gbWFsbG9jKGFyZy5sZW5ndGggKiAxKSA+Pj4gMDtcbiAgZ2V0VWludDhNZW1vcnkwKCkuc2V0KGFyZywgcHRyIC8gMSk7XG4gIFdBU01fVkVDVE9SX0xFTiA9IGFyZy5sZW5ndGg7XG4gIHJldHVybiBwdHI7XG59XG5cbmNvbnN0IEdsb2JhbEh0dHBDYWNoZUZpbmFsaXphdGlvbiA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgocHRyKSA9PlxuICB3YXNtLl9fd2JnX2dsb2JhbGh0dHBjYWNoZV9mcmVlKHB0ciA+Pj4gMClcbik7XG4vKiogKi9cbmV4cG9ydCBjbGFzcyBHbG9iYWxIdHRwQ2FjaGUge1xuICBzdGF0aWMgX193cmFwKHB0cikge1xuICAgIHB0ciA9IHB0ciA+Pj4gMDtcbiAgICBjb25zdCBvYmogPSBPYmplY3QuY3JlYXRlKEdsb2JhbEh0dHBDYWNoZS5wcm90b3R5cGUpO1xuICAgIG9iai5fX3diZ19wdHIgPSBwdHI7XG4gICAgR2xvYmFsSHR0cENhY2hlRmluYWxpemF0aW9uLnJlZ2lzdGVyKG9iaiwgb2JqLl9fd2JnX3B0ciwgb2JqKTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgX19kZXN0cm95X2ludG9fcmF3KCkge1xuICAgIGNvbnN0IHB0ciA9IHRoaXMuX193YmdfcHRyO1xuICAgIHRoaXMuX193YmdfcHRyID0gMDtcbiAgICBHbG9iYWxIdHRwQ2FjaGVGaW5hbGl6YXRpb24udW5yZWdpc3Rlcih0aGlzKTtcbiAgICByZXR1cm4gcHRyO1xuICB9XG5cbiAgZnJlZSgpIHtcbiAgICBjb25zdCBwdHIgPSB0aGlzLl9fZGVzdHJveV9pbnRvX3JhdygpO1xuICAgIHdhc20uX193YmdfZ2xvYmFsaHR0cGNhY2hlX2ZyZWUocHRyKTtcbiAgfVxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAgICogQHJldHVybnMge0dsb2JhbEh0dHBDYWNoZX1cbiAgICovXG4gIHN0YXRpYyBuZXcocGF0aCkge1xuICAgIGNvbnN0IHB0cjAgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgIHBhdGgsXG4gICAgICB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLFxuICAgICAgd2FzbS5fX3diaW5kZ2VuX3JlYWxsb2MsXG4gICAgKTtcbiAgICBjb25zdCBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgIGNvbnN0IHJldCA9IHdhc20uZ2xvYmFsaHR0cGNhY2hlX25ldyhwdHIwLCBsZW4wKTtcbiAgICByZXR1cm4gR2xvYmFsSHR0cENhY2hlLl9fd3JhcChyZXQpO1xuICB9XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEByZXR1cm5zIHthbnl9XG4gICAqL1xuICBnZXRIZWFkZXJzKHVybCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXRwdHIgPSB3YXNtLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoLTE2KTtcbiAgICAgIGNvbnN0IHB0cjAgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgICAgdXJsLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyxcbiAgICAgICk7XG4gICAgICBjb25zdCBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgICAgd2FzbS5nbG9iYWxodHRwY2FjaGVfZ2V0SGVhZGVycyhyZXRwdHIsIHRoaXMuX193YmdfcHRyLCBwdHIwLCBsZW4wKTtcbiAgICAgIHZhciByMCA9IGdldEludDMyTWVtb3J5MCgpW3JldHB0ciAvIDQgKyAwXTtcbiAgICAgIHZhciByMSA9IGdldEludDMyTWVtb3J5MCgpW3JldHB0ciAvIDQgKyAxXTtcbiAgICAgIHZhciByMiA9IGdldEludDMyTWVtb3J5MCgpW3JldHB0ciAvIDQgKyAyXTtcbiAgICAgIGlmIChyMikge1xuICAgICAgICB0aHJvdyB0YWtlT2JqZWN0KHIxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YWtlT2JqZWN0KHIwKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgd2FzbS5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKDE2KTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHJldHVybnMge2FueX1cbiAgICovXG4gIGdldEZpbGVUZXh0KHVybCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXRwdHIgPSB3YXNtLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoLTE2KTtcbiAgICAgIGNvbnN0IHB0cjAgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgICAgdXJsLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyxcbiAgICAgICk7XG4gICAgICBjb25zdCBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgICAgd2FzbS5nbG9iYWxodHRwY2FjaGVfZ2V0RmlsZVRleHQocmV0cHRyLCB0aGlzLl9fd2JnX3B0ciwgcHRyMCwgbGVuMCk7XG4gICAgICB2YXIgcjAgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMF07XG4gICAgICB2YXIgcjEgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMV07XG4gICAgICB2YXIgcjIgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMl07XG4gICAgICBpZiAocjIpIHtcbiAgICAgICAgdGhyb3cgdGFrZU9iamVjdChyMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGFrZU9iamVjdChyMCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHdhc20uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigxNik7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7YW55fSBoZWFkZXJzXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gdGV4dFxuICAgKi9cbiAgc2V0KHVybCwgaGVhZGVycywgdGV4dCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXRwdHIgPSB3YXNtLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoLTE2KTtcbiAgICAgIGNvbnN0IHB0cjAgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgICAgdXJsLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyxcbiAgICAgICk7XG4gICAgICBjb25zdCBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgICAgY29uc3QgcHRyMSA9IHBhc3NBcnJheThUb1dhc20wKHRleHQsIHdhc20uX193YmluZGdlbl9tYWxsb2MpO1xuICAgICAgY29uc3QgbGVuMSA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICAgIHdhc20uZ2xvYmFsaHR0cGNhY2hlX3NldChcbiAgICAgICAgcmV0cHRyLFxuICAgICAgICB0aGlzLl9fd2JnX3B0cixcbiAgICAgICAgcHRyMCxcbiAgICAgICAgbGVuMCxcbiAgICAgICAgYWRkSGVhcE9iamVjdChoZWFkZXJzKSxcbiAgICAgICAgcHRyMSxcbiAgICAgICAgbGVuMSxcbiAgICAgICk7XG4gICAgICB2YXIgcjAgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMF07XG4gICAgICB2YXIgcjEgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMV07XG4gICAgICBpZiAocjEpIHtcbiAgICAgICAgdGhyb3cgdGFrZU9iamVjdChyMCk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHdhc20uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigxNik7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IExvY2FsSHR0cENhY2hlRmluYWxpemF0aW9uID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KChwdHIpID0+XG4gIHdhc20uX193YmdfbG9jYWxodHRwY2FjaGVfZnJlZShwdHIgPj4+IDApXG4pO1xuLyoqICovXG5leHBvcnQgY2xhc3MgTG9jYWxIdHRwQ2FjaGUge1xuICBzdGF0aWMgX193cmFwKHB0cikge1xuICAgIHB0ciA9IHB0ciA+Pj4gMDtcbiAgICBjb25zdCBvYmogPSBPYmplY3QuY3JlYXRlKExvY2FsSHR0cENhY2hlLnByb3RvdHlwZSk7XG4gICAgb2JqLl9fd2JnX3B0ciA9IHB0cjtcbiAgICBMb2NhbEh0dHBDYWNoZUZpbmFsaXphdGlvbi5yZWdpc3RlcihvYmosIG9iai5fX3diZ19wdHIsIG9iaik7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIF9fZGVzdHJveV9pbnRvX3JhdygpIHtcbiAgICBjb25zdCBwdHIgPSB0aGlzLl9fd2JnX3B0cjtcbiAgICB0aGlzLl9fd2JnX3B0ciA9IDA7XG4gICAgTG9jYWxIdHRwQ2FjaGVGaW5hbGl6YXRpb24udW5yZWdpc3Rlcih0aGlzKTtcbiAgICByZXR1cm4gcHRyO1xuICB9XG5cbiAgZnJlZSgpIHtcbiAgICBjb25zdCBwdHIgPSB0aGlzLl9fZGVzdHJveV9pbnRvX3JhdygpO1xuICAgIHdhc20uX193YmdfbG9jYWxodHRwY2FjaGVfZnJlZShwdHIpO1xuICB9XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYWxfcGF0aFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZ2xvYmFsX3BhdGhcbiAgICogQHJldHVybnMge0xvY2FsSHR0cENhY2hlfVxuICAgKi9cbiAgc3RhdGljIG5ldyhsb2NhbF9wYXRoLCBnbG9iYWxfcGF0aCkge1xuICAgIGNvbnN0IHB0cjAgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgIGxvY2FsX3BhdGgsXG4gICAgICB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLFxuICAgICAgd2FzbS5fX3diaW5kZ2VuX3JlYWxsb2MsXG4gICAgKTtcbiAgICBjb25zdCBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgIGNvbnN0IHB0cjEgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgIGdsb2JhbF9wYXRoLFxuICAgICAgd2FzbS5fX3diaW5kZ2VuX21hbGxvYyxcbiAgICAgIHdhc20uX193YmluZGdlbl9yZWFsbG9jLFxuICAgICk7XG4gICAgY29uc3QgbGVuMSA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICBjb25zdCByZXQgPSB3YXNtLmxvY2FsaHR0cGNhY2hlX25ldyhwdHIwLCBsZW4wLCBwdHIxLCBsZW4xKTtcbiAgICByZXR1cm4gTG9jYWxIdHRwQ2FjaGUuX193cmFwKHJldCk7XG4gIH1cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHJldHVybnMge2FueX1cbiAgICovXG4gIGdldEhlYWRlcnModXJsKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJldHB0ciA9IHdhc20uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigtMTYpO1xuICAgICAgY29uc3QgcHRyMCA9IHBhc3NTdHJpbmdUb1dhc20wKFxuICAgICAgICB1cmwsXG4gICAgICAgIHdhc20uX193YmluZGdlbl9tYWxsb2MsXG4gICAgICAgIHdhc20uX193YmluZGdlbl9yZWFsbG9jLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGxlbjAgPSBXQVNNX1ZFQ1RPUl9MRU47XG4gICAgICB3YXNtLmxvY2FsaHR0cGNhY2hlX2dldEhlYWRlcnMocmV0cHRyLCB0aGlzLl9fd2JnX3B0ciwgcHRyMCwgbGVuMCk7XG4gICAgICB2YXIgcjAgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMF07XG4gICAgICB2YXIgcjEgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMV07XG4gICAgICB2YXIgcjIgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMl07XG4gICAgICBpZiAocjIpIHtcbiAgICAgICAgdGhyb3cgdGFrZU9iamVjdChyMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGFrZU9iamVjdChyMCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHdhc20uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigxNik7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEByZXR1cm5zIHthbnl9XG4gICAqL1xuICBnZXRGaWxlVGV4dCh1cmwpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmV0cHRyID0gd2FzbS5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKC0xNik7XG4gICAgICBjb25zdCBwdHIwID0gcGFzc1N0cmluZ1RvV2FzbTAoXG4gICAgICAgIHVybCxcbiAgICAgICAgd2FzbS5fX3diaW5kZ2VuX21hbGxvYyxcbiAgICAgICAgd2FzbS5fX3diaW5kZ2VuX3JlYWxsb2MsXG4gICAgICApO1xuICAgICAgY29uc3QgbGVuMCA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICAgIHdhc20ubG9jYWxodHRwY2FjaGVfZ2V0RmlsZVRleHQocmV0cHRyLCB0aGlzLl9fd2JnX3B0ciwgcHRyMCwgbGVuMCk7XG4gICAgICB2YXIgcjAgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMF07XG4gICAgICB2YXIgcjEgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMV07XG4gICAgICB2YXIgcjIgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMl07XG4gICAgICBpZiAocjIpIHtcbiAgICAgICAgdGhyb3cgdGFrZU9iamVjdChyMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGFrZU9iamVjdChyMCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHdhc20uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigxNik7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7YW55fSBoZWFkZXJzXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gdGV4dFxuICAgKi9cbiAgc2V0KHVybCwgaGVhZGVycywgdGV4dCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXRwdHIgPSB3YXNtLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoLTE2KTtcbiAgICAgIGNvbnN0IHB0cjAgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgICAgdXJsLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyxcbiAgICAgICk7XG4gICAgICBjb25zdCBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgICAgY29uc3QgcHRyMSA9IHBhc3NBcnJheThUb1dhc20wKHRleHQsIHdhc20uX193YmluZGdlbl9tYWxsb2MpO1xuICAgICAgY29uc3QgbGVuMSA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICAgIHdhc20ubG9jYWxodHRwY2FjaGVfc2V0KFxuICAgICAgICByZXRwdHIsXG4gICAgICAgIHRoaXMuX193YmdfcHRyLFxuICAgICAgICBwdHIwLFxuICAgICAgICBsZW4wLFxuICAgICAgICBhZGRIZWFwT2JqZWN0KGhlYWRlcnMpLFxuICAgICAgICBwdHIxLFxuICAgICAgICBsZW4xLFxuICAgICAgKTtcbiAgICAgIHZhciByMCA9IGdldEludDMyTWVtb3J5MCgpW3JldHB0ciAvIDQgKyAwXTtcbiAgICAgIHZhciByMSA9IGdldEludDMyTWVtb3J5MCgpW3JldHB0ciAvIDQgKyAxXTtcbiAgICAgIGlmIChyMSkge1xuICAgICAgICB0aHJvdyB0YWtlT2JqZWN0KHIwKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgd2FzbS5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKDE2KTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgaW1wb3J0cyA9IHtcbiAgX193YmluZGdlbl9wbGFjZWhvbGRlcl9fOiB7XG4gICAgX193YmluZGdlbl9lcnJvcl9uZXc6IGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgICBjb25zdCByZXQgPSBuZXcgRXJyb3IoZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzAsIGFyZzEpKTtcbiAgICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG4gICAgfSxcbiAgICBfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZjogZnVuY3Rpb24gKGFyZzApIHtcbiAgICAgIHRha2VPYmplY3QoYXJnMCk7XG4gICAgfSxcbiAgICBfX3diaW5kZ2VuX3N0cmluZ19nZXQ6IGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgICBjb25zdCBvYmogPSBnZXRPYmplY3QoYXJnMSk7XG4gICAgICBjb25zdCByZXQgPSB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiID8gb2JqIDogdW5kZWZpbmVkO1xuICAgICAgdmFyIHB0cjEgPSBpc0xpa2VOb25lKHJldClcbiAgICAgICAgPyAwXG4gICAgICAgIDogcGFzc1N0cmluZ1RvV2FzbTAoXG4gICAgICAgICAgcmV0LFxuICAgICAgICAgIHdhc20uX193YmluZGdlbl9tYWxsb2MsXG4gICAgICAgICAgd2FzbS5fX3diaW5kZ2VuX3JlYWxsb2MsXG4gICAgICAgICk7XG4gICAgICB2YXIgbGVuMSA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICAgIGdldEludDMyTWVtb3J5MCgpW2FyZzAgLyA0ICsgMV0gPSBsZW4xO1xuICAgICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAwXSA9IHB0cjE7XG4gICAgfSxcbiAgICBfX3diaW5kZ2VuX3N0cmluZ19uZXc6IGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgICBjb25zdCByZXQgPSBnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMCwgYXJnMSk7XG4gICAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xuICAgIH0sXG4gICAgX193YmdfcmVhZGZpbGVieXRlc185Y2U4NzBkZTg2YjJjYzM2OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gaGFuZGxlRXJyb3IoZnVuY3Rpb24gKGFyZzAsIGFyZzEpIHtcbiAgICAgICAgY29uc3QgcmV0ID0gcmVhZF9maWxlX2J5dGVzKGdldFN0cmluZ0Zyb21XYXNtMChhcmcwLCBhcmcxKSk7XG4gICAgICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG4gICAgICB9LCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgX193YmluZGdlbl9pc19udWxsOiBmdW5jdGlvbiAoYXJnMCkge1xuICAgICAgY29uc3QgcmV0ID0gZ2V0T2JqZWN0KGFyZzApID09PSBudWxsO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIF9fd2JpbmRnZW5faXNfdW5kZWZpbmVkOiBmdW5jdGlvbiAoYXJnMCkge1xuICAgICAgY29uc3QgcmV0ID0gZ2V0T2JqZWN0KGFyZzApID09PSB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0sXG4gICAgX193YmdfYXRvbWljd3JpdGVmaWxlXzMxMGM1ZDY5MGVkNGExODY6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBoYW5kbGVFcnJvcihmdW5jdGlvbiAoYXJnMCwgYXJnMSwgYXJnMiwgYXJnMykge1xuICAgICAgICBjb25zdCByZXQgPSBhdG9taWNfd3JpdGVfZmlsZShcbiAgICAgICAgICBnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMCwgYXJnMSksXG4gICAgICAgICAgZ2V0QXJyYXlVOEZyb21XYXNtMChhcmcyLCBhcmczKSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbiAgICAgIH0sIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBfX3diZ19tb2RpZmllZHRpbWVfNjdlZjE3YWM0ZWViZjUyYzogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGhhbmRsZUVycm9yKGZ1bmN0aW9uIChhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgICAgIGNvbnN0IHJldCA9IG1vZGlmaWVkX3RpbWUoZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzEsIGFyZzIpKTtcbiAgICAgICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAxXSA9IGlzTGlrZU5vbmUocmV0KSA/IDAgOiByZXQ7XG4gICAgICAgIGdldEludDMyTWVtb3J5MCgpW2FyZzAgLyA0ICsgMF0gPSAhaXNMaWtlTm9uZShyZXQpO1xuICAgICAgfSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIF9fd2JpbmRnZW5fbnVtYmVyX2dldDogZnVuY3Rpb24gKGFyZzAsIGFyZzEpIHtcbiAgICAgIGNvbnN0IG9iaiA9IGdldE9iamVjdChhcmcxKTtcbiAgICAgIGNvbnN0IHJldCA9IHR5cGVvZiBvYmogPT09IFwibnVtYmVyXCIgPyBvYmogOiB1bmRlZmluZWQ7XG4gICAgICBnZXRGbG9hdDY0TWVtb3J5MCgpW2FyZzAgLyA4ICsgMV0gPSBpc0xpa2VOb25lKHJldCkgPyAwIDogcmV0O1xuICAgICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAwXSA9ICFpc0xpa2VOb25lKHJldCk7XG4gICAgfSxcbiAgICBfX3diaW5kZ2VuX2lzX29iamVjdDogZnVuY3Rpb24gKGFyZzApIHtcbiAgICAgIGNvbnN0IHZhbCA9IGdldE9iamVjdChhcmcwKTtcbiAgICAgIGNvbnN0IHJldCA9IHR5cGVvZiB2YWwgPT09IFwib2JqZWN0XCIgJiYgdmFsICE9PSBudWxsO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIF9fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXE6IGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgICBjb25zdCByZXQgPSBnZXRPYmplY3QoYXJnMCkgPT0gZ2V0T2JqZWN0KGFyZzEpO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIF9fd2JpbmRnZW5fYm9vbGVhbl9nZXQ6IGZ1bmN0aW9uIChhcmcwKSB7XG4gICAgICBjb25zdCB2ID0gZ2V0T2JqZWN0KGFyZzApO1xuICAgICAgY29uc3QgcmV0ID0gdHlwZW9mIHYgPT09IFwiYm9vbGVhblwiID8gKHYgPyAxIDogMCkgOiAyO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIF9fd2JnX1N0cmluZ184ODgxMGRmZWI0MDIxOTAyOiBmdW5jdGlvbiAoYXJnMCwgYXJnMSkge1xuICAgICAgY29uc3QgcmV0ID0gU3RyaW5nKGdldE9iamVjdChhcmcxKSk7XG4gICAgICBjb25zdCBwdHIxID0gcGFzc1N0cmluZ1RvV2FzbTAoXG4gICAgICAgIHJldCxcbiAgICAgICAgd2FzbS5fX3diaW5kZ2VuX21hbGxvYyxcbiAgICAgICAgd2FzbS5fX3diaW5kZ2VuX3JlYWxsb2MsXG4gICAgICApO1xuICAgICAgY29uc3QgbGVuMSA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICAgIGdldEludDMyTWVtb3J5MCgpW2FyZzAgLyA0ICsgMV0gPSBsZW4xO1xuICAgICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAwXSA9IHB0cjE7XG4gICAgfSxcbiAgICBfX3diZ19zZXRfODQxYWM1N2NmZjNkNjcyYjogZnVuY3Rpb24gKGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICAgIGdldE9iamVjdChhcmcwKVt0YWtlT2JqZWN0KGFyZzEpXSA9IHRha2VPYmplY3QoYXJnMik7XG4gICAgfSxcbiAgICBfX3diZ19uZXdfYWJkYTc2ZTg4M2JhOGE1ZjogZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmV0ID0gbmV3IEVycm9yKCk7XG4gICAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xuICAgIH0sXG4gICAgX193Ymdfc3RhY2tfNjU4Mjc5ZmU0NDU0MWNmNjogZnVuY3Rpb24gKGFyZzAsIGFyZzEpIHtcbiAgICAgIGNvbnN0IHJldCA9IGdldE9iamVjdChhcmcxKS5zdGFjaztcbiAgICAgIGNvbnN0IHB0cjEgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgICAgcmV0LFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyxcbiAgICAgICk7XG4gICAgICBjb25zdCBsZW4xID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAxXSA9IGxlbjE7XG4gICAgICBnZXRJbnQzMk1lbW9yeTAoKVthcmcwIC8gNCArIDBdID0gcHRyMTtcbiAgICB9LFxuICAgIF9fd2JnX2Vycm9yX2Y4NTE2NjdhZjcxYmNmYzY6IGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgICBsZXQgZGVmZXJyZWQwXzA7XG4gICAgICBsZXQgZGVmZXJyZWQwXzE7XG4gICAgICB0cnkge1xuICAgICAgICBkZWZlcnJlZDBfMCA9IGFyZzA7XG4gICAgICAgIGRlZmVycmVkMF8xID0gYXJnMTtcbiAgICAgICAgY29uc29sZS5lcnJvcihnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMCwgYXJnMSkpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgd2FzbS5fX3diaW5kZ2VuX2ZyZWUoZGVmZXJyZWQwXzAsIGRlZmVycmVkMF8xKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIF9fd2JpbmRnZW5faXNfc3RyaW5nOiBmdW5jdGlvbiAoYXJnMCkge1xuICAgICAgY29uc3QgcmV0ID0gdHlwZW9mIChnZXRPYmplY3QoYXJnMCkpID09PSBcInN0cmluZ1wiO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIF9fd2JpbmRnZW5faXNfZnVuY3Rpb246IGZ1bmN0aW9uIChhcmcwKSB7XG4gICAgICBjb25zdCByZXQgPSB0eXBlb2YgKGdldE9iamVjdChhcmcwKSkgPT09IFwiZnVuY3Rpb25cIjtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcbiAgICBfX3diZ19uZXdfMGYyYjcxY2EyZjJhNjAyOTogZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmV0ID0gbmV3IE1hcCgpO1xuICAgICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbiAgICB9LFxuICAgIF9fd2JnX25leHRfZjRiYzBlOTZlYTY3ZGE2ODogZnVuY3Rpb24gKGFyZzApIHtcbiAgICAgIGNvbnN0IHJldCA9IGdldE9iamVjdChhcmcwKS5uZXh0O1xuICAgICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbiAgICB9LFxuICAgIF9fd2JnX3ZhbHVlXzJmNGVmMjAzNmJmYWQyOGU6IGZ1bmN0aW9uIChhcmcwKSB7XG4gICAgICBjb25zdCByZXQgPSBnZXRPYmplY3QoYXJnMCkudmFsdWU7XG4gICAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xuICAgIH0sXG4gICAgX193YmdfaXRlcmF0b3JfN2M3ZTU4ZjYyZWI4NDcwMDogZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmV0ID0gU3ltYm9sLml0ZXJhdG9yO1xuICAgICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbiAgICB9LFxuICAgIF9fd2JnX25ld18yYjZmZWE0ZWEwM2IxYjk1OiBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXQgPSBuZXcgT2JqZWN0KCk7XG4gICAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xuICAgIH0sXG4gICAgX193YmdfZ2V0XzczMDNlZDJlZjAyNmIyZjU6IGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgICBjb25zdCByZXQgPSBnZXRPYmplY3QoYXJnMClbYXJnMSA+Pj4gMF07XG4gICAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xuICAgIH0sXG4gICAgX193YmdfbGVuZ3RoXzgyMGM3ODY5NzNhYmRkOGE6IGZ1bmN0aW9uIChhcmcwKSB7XG4gICAgICBjb25zdCByZXQgPSBnZXRPYmplY3QoYXJnMCkubGVuZ3RoO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIF9fd2JnX2luc3RhbmNlb2ZfQXJyYXlCdWZmZXJfZWYyNjMyYWEwZDRiZmZmODogZnVuY3Rpb24gKGFyZzApIHtcbiAgICAgIGxldCByZXN1bHQ7XG4gICAgICB0cnkge1xuICAgICAgICByZXN1bHQgPSBnZXRPYmplY3QoYXJnMCkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJldCA9IHJlc3VsdDtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcbiAgICBfX3diZ19uZXdfODcyOTdmMjI5NzMxNTdjODogZnVuY3Rpb24gKGFyZzAsIGFyZzEpIHtcbiAgICAgIGNvbnN0IHJldCA9IG5ldyBFcnJvcihnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMCwgYXJnMSkpO1xuICAgICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbiAgICB9LFxuICAgIF9fd2JnX2NhbGxfNTU3YTJmMmRlYWNjNDkxMjogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGhhbmRsZUVycm9yKGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgICAgIGNvbnN0IHJldCA9IGdldE9iamVjdChhcmcwKS5jYWxsKGdldE9iamVjdChhcmcxKSk7XG4gICAgICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG4gICAgICB9LCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgX193Ymdfc2V0X2RhN2JlN2JmMGUwMzdiMTQ6IGZ1bmN0aW9uIChhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgICBjb25zdCByZXQgPSBnZXRPYmplY3QoYXJnMCkuc2V0KGdldE9iamVjdChhcmcxKSwgZ2V0T2JqZWN0KGFyZzIpKTtcbiAgICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG4gICAgfSxcbiAgICBfX3diZ19uZXh0X2VjMDYxZTQ4YTBlNzJhOTY6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBoYW5kbGVFcnJvcihmdW5jdGlvbiAoYXJnMCkge1xuICAgICAgICBjb25zdCByZXQgPSBnZXRPYmplY3QoYXJnMCkubmV4dCgpO1xuICAgICAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xuICAgICAgfSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIF9fd2JnX2RvbmVfYjZhYmIyN2Q0MmI2Mzg2NzogZnVuY3Rpb24gKGFyZzApIHtcbiAgICAgIGNvbnN0IHJldCA9IGdldE9iamVjdChhcmcwKS5kb25lO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIF9fd2JnX2VudHJpZXNfMTNlMDExNDUzNzc2NDY4ZjogZnVuY3Rpb24gKGFyZzApIHtcbiAgICAgIGNvbnN0IHJldCA9IE9iamVjdC5lbnRyaWVzKGdldE9iamVjdChhcmcwKSk7XG4gICAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xuICAgIH0sXG4gICAgX193YmdfZ2V0X2Y1M2M5MjEyOTFjMzgxYmQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBoYW5kbGVFcnJvcihmdW5jdGlvbiAoYXJnMCwgYXJnMSkge1xuICAgICAgICBjb25zdCByZXQgPSBSZWZsZWN0LmdldChnZXRPYmplY3QoYXJnMCksIGdldE9iamVjdChhcmcxKSk7XG4gICAgICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG4gICAgICB9LCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgX193YmdfYnVmZmVyXzU1YmE3YTZiMWI5MmUyYWM6IGZ1bmN0aW9uIChhcmcwKSB7XG4gICAgICBjb25zdCByZXQgPSBnZXRPYmplY3QoYXJnMCkuYnVmZmVyO1xuICAgICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbiAgICB9LFxuICAgIF9fd2JnX25ld18wOTkzOGE3ZDAyMGYwNDliOiBmdW5jdGlvbiAoYXJnMCkge1xuICAgICAgY29uc3QgcmV0ID0gbmV3IFVpbnQ4QXJyYXkoZ2V0T2JqZWN0KGFyZzApKTtcbiAgICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG4gICAgfSxcbiAgICBfX3diZ19pbnN0YW5jZW9mX1VpbnQ4QXJyYXlfMTM0OTY0MGFmMmRhMmU4ODogZnVuY3Rpb24gKGFyZzApIHtcbiAgICAgIGxldCByZXN1bHQ7XG4gICAgICB0cnkge1xuICAgICAgICByZXN1bHQgPSBnZXRPYmplY3QoYXJnMCkgaW5zdGFuY2VvZiBVaW50OEFycmF5O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgcmV0ID0gcmVzdWx0O1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIF9fd2JnX2xlbmd0aF8wYWFiN2ZmZDY1YWQxOWVkOiBmdW5jdGlvbiAoYXJnMCkge1xuICAgICAgY29uc3QgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLmxlbmd0aDtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcbiAgICBfX3diZ19zZXRfMzY5OGUzY2E1MTliM2MzYzogZnVuY3Rpb24gKGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICAgIGdldE9iamVjdChhcmcwKS5zZXQoZ2V0T2JqZWN0KGFyZzEpLCBhcmcyID4+PiAwKTtcbiAgICB9LFxuICAgIF9fd2JpbmRnZW5fZGVidWdfc3RyaW5nOiBmdW5jdGlvbiAoYXJnMCwgYXJnMSkge1xuICAgICAgY29uc3QgcmV0ID0gZGVidWdTdHJpbmcoZ2V0T2JqZWN0KGFyZzEpKTtcbiAgICAgIGNvbnN0IHB0cjEgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgICAgcmV0LFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyxcbiAgICAgICk7XG4gICAgICBjb25zdCBsZW4xID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAxXSA9IGxlbjE7XG4gICAgICBnZXRJbnQzMk1lbW9yeTAoKVthcmcwIC8gNCArIDBdID0gcHRyMTtcbiAgICB9LFxuICAgIF9fd2JpbmRnZW5fdGhyb3c6IGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzAsIGFyZzEpKTtcbiAgICB9LFxuICAgIF9fd2JpbmRnZW5fbWVtb3J5OiBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXQgPSB3YXNtLm1lbW9yeTtcbiAgICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG4gICAgfSxcbiAgfSxcbiAgXCIuL3NuaXBwZXRzL2Rlbm9fY2FjaGVfZGlyLWEyYWVjYWE5NTM2Yzk0MDIvZnMuanNcIjogaW1wb3J0MCxcbn07XG5cbi8qKiBJbnN0YW50aWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFdhc20gbW9kdWxlIHJldHVybmluZyBpdHMgZnVuY3Rpb25zLlxuICogQHJlbWFya3MgSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgbXVsdGlwbGUgdGltZXMgYW5kIG9uY2Ugc3VjY2Vzc2Z1bGx5XG4gKiBsb2FkZWQgaXQgd2lsbCBhbHdheXMgcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlKCkge1xuICByZXR1cm4gaW5zdGFudGlhdGVXaXRoSW5zdGFuY2UoKS5leHBvcnRzO1xufVxuXG5sZXQgaW5zdGFuY2VXaXRoRXhwb3J0cztcblxuLyoqIEluc3RhbnRpYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgV2FzbSBtb2R1bGUgYWxvbmcgd2l0aCBpdHMgZXhwb3J0cy5cbiAqIEByZW1hcmtzIEl0IGlzIHNhZmUgdG8gY2FsbCB0aGlzIG11bHRpcGxlIHRpbWVzIGFuZCBvbmNlIHN1Y2Nlc3NmdWxseVxuICogbG9hZGVkIGl0IHdpbGwgYWx3YXlzIHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgc2FtZSBvYmplY3QuXG4gKiBAcmV0dXJucyB7e1xuICogICBpbnN0YW5jZTogV2ViQXNzZW1ibHkuSW5zdGFuY2U7XG4gKiAgIGV4cG9ydHM6IHsgdXJsX3RvX2ZpbGVuYW1lOiB0eXBlb2YgdXJsX3RvX2ZpbGVuYW1lOyBHbG9iYWxIdHRwQ2FjaGUgOiB0eXBlb2YgR2xvYmFsSHR0cENhY2hlIDsgTG9jYWxIdHRwQ2FjaGUgOiB0eXBlb2YgTG9jYWxIdHRwQ2FjaGUgIH1cbiAqIH19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVdpdGhJbnN0YW5jZSgpIHtcbiAgaWYgKGluc3RhbmNlV2l0aEV4cG9ydHMgPT0gbnVsbCkge1xuICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFudGlhdGVJbnN0YW5jZSgpO1xuICAgIHdhc20gPSBpbnN0YW5jZS5leHBvcnRzO1xuICAgIGNhY2hlZEludDMyTWVtb3J5MCA9IG5ldyBJbnQzMkFycmF5KHdhc20ubWVtb3J5LmJ1ZmZlcik7XG4gICAgY2FjaGVkVWludDhNZW1vcnkwID0gbmV3IFVpbnQ4QXJyYXkod2FzbS5tZW1vcnkuYnVmZmVyKTtcbiAgICBpbnN0YW5jZVdpdGhFeHBvcnRzID0ge1xuICAgICAgaW5zdGFuY2UsXG4gICAgICBleHBvcnRzOiB7IHVybF90b19maWxlbmFtZSwgR2xvYmFsSHR0cENhY2hlLCBMb2NhbEh0dHBDYWNoZSB9LFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIGluc3RhbmNlV2l0aEV4cG9ydHM7XG59XG5cbi8qKiBHZXRzIGlmIHRoZSBXYXNtIG1vZHVsZSBoYXMgYmVlbiBpbnN0YW50aWF0ZWQuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJbnN0YW50aWF0ZWQoKSB7XG4gIHJldHVybiBpbnN0YW5jZVdpdGhFeHBvcnRzICE9IG51bGw7XG59XG5cbmZ1bmN0aW9uIGluc3RhbnRpYXRlSW5zdGFuY2UoKSB7XG4gIGNvbnN0IHdhc21CeXRlcyA9IGJhc2U2NGRlY29kZShcblwiXFxcbkFHRnpiUUVBQUFBQjNZS0FnQUF2WUFBQVlBQUJmMkFCZndCZ0FYOEJmMkFCZndGK1lBSi9md0JnQW45L0FYOWdBbjkvQVg1Z0EzOS9md1xcXG5CZ0EzOS9md0YvWUFOL2YzOEJmbUFFZjM5L2Z3QmdCSDkvZjM4QmYyQUZmMzkvZjM4QVlBVi9mMzkvZndGL1lBWi9mMzkvZjM4QVlBWi9cXFxuZjM5L2YzOEJmMkFIZjM5L2YzOS9md0JnQjM5L2YzOS9mMzhCZjJBTGYzOS9mMzkvZjM5L2YzOEJmMkFOZjM5L2YzOS9mMzkvZjM5L2Z3XFxcbkJnQ1g5L2YzOS9mMzUrZmdCZ0JIOS9mMzRBWUFWL2YzOStmd0JnQTM5L2ZnQmdCSDkvZm44QVlBUi9mMzUvQVg5Z0JYOS9mbjkvQUdBRlxcXG5mMzk5ZjM4QVlBTi9mM3dBWUFWL2YzeC9md0JnQW45K0FHQUNmMzRCZjJBRGYzNS9BR0FEZjM1L0FYOWdCSDkrZjM4QVlBUi9mbjkvQVhcXFxuOWdCWDkrZjM5L0FYOWdCWDkrZjM1L0FHQUZmMzUrZm40QVlBUi9mWDkvQUdBQ2Yzd0FZQVIvZkg5L0FHQUVmM3gvZndGL1lBSitmd0JnXFxcbkFuNS9BWDlnQTM1L2Z3Ri9BdWVTZ0lBQUxCaGZYM2RpYVc1a1oyVnVYM0JzWVdObGFHOXNaR1Z5WDE4VVgxOTNZbWx1WkdkbGJsOWxjblxcXG5KdmNsOXVaWGNBQmhoZlgzZGlhVzVrWjJWdVgzQnNZV05sYUc5c1pHVnlYMThhWDE5M1ltbHVaR2RsYmw5dlltcGxZM1JmWkhKdmNGOXlcXFxuWldZQUFoaGZYM2RpYVc1a1oyVnVYM0JzWVdObGFHOXNaR1Z5WDE4VlgxOTNZbWx1WkdkbGJsOXpkSEpwYm1kZloyVjBBQVVZWDE5M1ltXFxcbmx1WkdkbGJsOXdiR0ZqWldodmJHUmxjbDlmRlY5ZmQySnBibVJuWlc1ZmMzUnlhVzVuWDI1bGR3QUdHRjlmZDJKcGJtUm5aVzVmY0d4aFxcXG5ZMlZvYjJ4a1pYSmZYeVJmWDNkaVoxOXlaV0ZrWm1sc1pXSjVkR1Z6WHpsalpUZzNNR1JsT0RaaU1tTmpNellBQmhoZlgzZGlhVzVrWjJcXFxuVnVYM0JzWVdObGFHOXNaR1Z5WDE4U1gxOTNZbWx1WkdkbGJsOXBjMTl1ZFd4c0FBTVlYMTkzWW1sdVpHZGxibDl3YkdGalpXaHZiR1JsXFxcbmNsOWZGMTlmZDJKcGJtUm5aVzVmYVhOZmRXNWtaV1pwYm1Wa0FBTVlYMTkzWW1sdVpHZGxibDl3YkdGalpXaHZiR1JsY2w5ZkpsOWZkMlxcXG5KblgyRjBiMjFwWTNkeWFYUmxabWxzWlY4ek1UQmpOV1EyT1RCbFpEUmhNVGcyQUF3WVgxOTNZbWx1WkdkbGJsOXdiR0ZqWldodmJHUmxcXFxuY2w5ZkkxOWZkMkpuWDIxdlpHbG1hV1ZrZEdsdFpWODJOMlZtTVRkaFl6UmxaV0ptTlRKakFBZ3dMaTl6Ym1sd2NHVjBjeTlrWlc1dlgyXFxcbk5oWTJobFgyUnBjaTFoTW1GbFkyRmhPVFV6Tm1NNU5EQXlMMlp6TG1wekNIUnBiV1ZmYm05M0FBRVlYMTkzWW1sdVpHZGxibDl3YkdGalxcXG5aV2h2YkdSbGNsOWZGVjlmZDJKcGJtUm5aVzVmYm5WdFltVnlYMmRsZEFBRkdGOWZkMkpwYm1SblpXNWZjR3hoWTJWb2IyeGtaWEpmWHhcXFxuUmZYM2RpYVc1a1oyVnVYMmx6WDI5aWFtVmpkQUFER0Y5ZmQySnBibVJuWlc1ZmNHeGhZMlZvYjJ4a1pYSmZYeGxmWDNkaWFXNWtaMlZ1XFxcblgycHpkbUZzWDJ4dmIzTmxYMlZ4QUFZWVgxOTNZbWx1WkdkbGJsOXdiR0ZqWldodmJHUmxjbDlmRmw5ZmQySnBibVJuWlc1ZlltOXZiR1xcXG5WaGJsOW5aWFFBQXhoZlgzZGlhVzVrWjJWdVgzQnNZV05sYUc5c1pHVnlYMThkWDE5M1ltZGZVM1J5YVc1blh6ZzRPREV3WkdabFlqUXdcXFxuTWpFNU1ESUFCUmhmWDNkaWFXNWtaMlZ1WDNCc1lXTmxhRzlzWkdWeVgxOGFYMTkzWW1kZmMyVjBYemcwTVdGak5UZGpabVl6WkRZM01tXFxcbklBQ0JoZlgzZGlhVzVrWjJWdVgzQnNZV05sYUc5c1pHVnlYMThhWDE5M1ltZGZibVYzWDJGaVpHRTNObVU0T0ROaVlUaGhOV1lBQVJoZlxcXG5YM2RpYVc1a1oyVnVYM0JzWVdObGFHOXNaR1Z5WDE4Y1gxOTNZbWRmYzNSaFkydGZOalU0TWpjNVptVTBORFUwTVdObU5nQUZHRjlmZDJcXFxuSnBibVJuWlc1ZmNHeGhZMlZvYjJ4a1pYSmZYeHhmWDNkaVoxOWxjbkp2Y2w5bU9EVXhOalkzWVdZM01XSmpabU0yQUFVWVgxOTNZbWx1XFxcblpHZGxibDl3YkdGalpXaHZiR1JsY2w5ZkZGOWZkMkpwYm1SblpXNWZhWE5mYzNSeWFXNW5BQU1ZWDE5M1ltbHVaR2RsYmw5d2JHRmpaV1xcXG5odmJHUmxjbDlmRmw5ZmQySnBibVJuWlc1ZmFYTmZablZ1WTNScGIyNEFBeGhmWDNkaWFXNWtaMlZ1WDNCc1lXTmxhRzlzWkdWeVgxOGFcXFxuWDE5M1ltZGZibVYzWHpCbU1tSTNNV05oTW1ZeVlUWXdNamtBQVJoZlgzZGlhVzVrWjJWdVgzQnNZV05sYUc5c1pHVnlYMThiWDE5M1ltXFxcbmRmYm1WNGRGOW1OR0pqTUdVNU5tVmhOamRrWVRZNEFBTVlYMTkzWW1sdVpHZGxibDl3YkdGalpXaHZiR1JsY2w5ZkhGOWZkMkpuWDNaaFxcXG5iSFZsWHpKbU5HVm1NakF6Tm1KbVlXUXlPR1VBQXhoZlgzZGlhVzVrWjJWdVgzQnNZV05sYUc5c1pHVnlYMThmWDE5M1ltZGZhWFJsY21cXFxuRjBiM0pmTjJNM1pUVTRaall5WldJNE5EY3dNQUFCR0Y5ZmQySnBibVJuWlc1ZmNHeGhZMlZvYjJ4a1pYSmZYeHBmWDNkaVoxOXVaWGRmXFxcbk1tSTJabVZoTkdWaE1ETmlNV0k1TlFBQkdGOWZkMkpwYm1SblpXNWZjR3hoWTJWb2IyeGtaWEpmWHhwZlgzZGlaMTluWlhSZk56TXdNMlxcXG5Wa01tVm1NREkyWWpKbU5RQUdHRjlmZDJKcGJtUm5aVzVmY0d4aFkyVm9iMnhrWlhKZlh4MWZYM2RpWjE5c1pXNW5kR2hmT0RJd1l6YzRcXFxuTmprM00yRmlaR1E0WVFBREdGOWZkMkpwYm1SblpXNWZjR3hoWTJWb2IyeGtaWEpmWHkxZlgzZGlaMTlwYm5OMFlXNWpaVzltWDBGeWNtXFxcbkY1UW5WbVptVnlYMlZtTWpZek1tRmhNR1EwWW1abVpqZ0FBeGhmWDNkaWFXNWtaMlZ1WDNCc1lXTmxhRzlzWkdWeVgxOGFYMTkzWW1kZlxcXG5ibVYzWHpnM01qazNaakl5T1Rjek1UVTNZemdBQmhoZlgzZGlhVzVrWjJWdVgzQnNZV05sYUc5c1pHVnlYMThiWDE5M1ltZGZZMkZzYkZcXFxuODFOVGRoTW1ZeVpHVmhZMk0wT1RFeUFBWVlYMTkzWW1sdVpHZGxibDl3YkdGalpXaHZiR1JsY2w5ZkdsOWZkMkpuWDNObGRGOWtZVGRpXFxcblpUZGlaakJsTURNM1lqRTBBQWtZWDE5M1ltbHVaR2RsYmw5d2JHRmpaV2h2YkdSbGNsOWZHMTlmZDJKblgyNWxlSFJmWldNd05qRmxORFxcXG5oaE1HVTNNbUU1TmdBREdGOWZkMkpwYm1SblpXNWZjR3hoWTJWb2IyeGtaWEpmWHh0ZlgzZGlaMTlrYjI1bFgySTJZV0ppTWpka05ESmlcXFxuTmpNNE5qY0FBeGhmWDNkaWFXNWtaMlZ1WDNCc1lXTmxhRzlzWkdWeVgxOGVYMTkzWW1kZlpXNTBjbWxsYzE4eE0yVXdNVEUwTlRNM056XFxcblkwTmpobUFBTVlYMTkzWW1sdVpHZGxibDl3YkdGalpXaHZiR1JsY2w5ZkdsOWZkMkpuWDJkbGRGOW1OVE5qT1RJeE1qa3hZek00TVdKa1xcXG5BQVlZWDE5M1ltbHVaR2RsYmw5d2JHRmpaV2h2YkdSbGNsOWZIVjlmZDJKblgySjFabVpsY2w4MU5XSmhOMkUyWWpGaU9USmxNbUZqQUFcXFxuTVlYMTkzWW1sdVpHZGxibDl3YkdGalpXaHZiR1JsY2w5ZkdsOWZkMkpuWDI1bGQxOHdPVGt6T0dFM1pEQXlNR1l3TkRsaUFBTVlYMTkzXFxcblltbHVaR2RsYmw5d2JHRmpaV2h2YkdSbGNsOWZMRjlmZDJKblgybHVjM1JoYm1ObGIyWmZWV2x1ZERoQmNuSmhlVjh4TXpRNU5qUXdZV1xcXG5ZeVpHRXlaVGc0QUFNWVgxOTNZbWx1WkdkbGJsOXdiR0ZqWldodmJHUmxjbDlmSFY5ZmQySm5YMnhsYm1kMGFGOHdZV0ZpTjJabVpEWTFcXFxuWVdReE9XVmtBQU1ZWDE5M1ltbHVaR2RsYmw5d2JHRmpaV2h2YkdSbGNsOWZHbDlmZDJKblgzTmxkRjh6TmprNFpUTmpZVFV4T1dJell6XFxcbk5qQUFnWVgxOTNZbWx1WkdkbGJsOXdiR0ZqWldodmJHUmxjbDlmRjE5ZmQySnBibVJuWlc1ZlpHVmlkV2RmYzNSeWFXNW5BQVVZWDE5M1xcXG5ZbWx1WkdkbGJsOXdiR0ZqWldodmJHUmxjbDlmRUY5ZmQySnBibVJuWlc1ZmRHaHliM2NBQlJoZlgzZGlhVzVrWjJWdVgzQnNZV05sYUdcXFxuOXNaR1Z5WDE4UlgxOTNZbWx1WkdkbGJsOXRaVzF2Y25rQUFRT1Nqb0NBQUpBT0N3MEREdzhQQ3c4SkNBVVBCUThOQ0E4RkNBc0RFUXNOXFxcbkN3Z0lDQWdDRFFVR0RRMExKQVlEQ1FZSkF3OFBEd2dNQmlzRkNSQUlDQXNKQ0FrTENTc0pDd2dKR2drR0Jnc0ZDeUlJQ3drTkNROEZCZ1xcXG5VSkJRVUpDQVVKQ0F3RkJRWUlCZ2dHQlFVTkRnc1JCZzBOQ2dVSUNBZ0lDQVVYQlEwWEJRVU5EUUlMQlFVRkJRVUZCZ2dDREFnR0JoVUZcXFxuQ0FVRkJSRUdDUVVSQ0FVRkJRZ0dBd01EQ0FVU0JnVUlEd1lPRVJFSUN3Z0lDQVVJQmdZRUJRVUlDUzRHQmdZSUZ4Y0lCZzhOQXcwR0NBXFxcbllKQlFJT0N3TUZCZ1lMR3dJRkNBZ0RDQWdHQmdZTkRRWUZCUVVGQVJnR0RRZ0lCUXNMQ3dNRkF3Z0lEUVVGQmdNTEFRVUlDQVVHQlE4RFxcXG5DQWdMQXdJTEJnTU5DQWdJQ3dZWkJSWVdCUVVGQXlJR0NCY0xGd2dJQ0EwTkNBMElDQWdORFFnRkN3MExCZzBMQ3dzTEN3c0xDd3NMQmdcXFxuWUdEZ3NEQ0FnTERBVUlCUWdVRFEwTEN3VUxDd3NiRXdzUkN3TUpBd1VEQXdNSUR3Z0RDQllXRFFzU0NRWUdCZ2tMQmdzTkNCRVJBd1lDXFxcbkF3c0xDd3NJQ0JrTkRRVUxCUVlGQlFVTEpnc0xDd2dtQ3dzQ0NBZ0ZDd01KQXdNTEJRVUlEUU1HRFFVREF3Z0ZEUWdGQXdVRkJnWUdCUVxcXG5VSUJnWUZCUWdEQ0FnSUNBVUZCUWdGRFFJTEN3c0xDd2dGQlFnTUN5QUpDQVVJQlFnRENBZ0ZDd3dNQlFZQ0FnNEpCUVVGRGc0RkJnZ0xcXFxuQlFnSUJRZ0lCUWdJQ0FjTkNBWU5CUVVHQmdVRENBVUZCUW9rREFvTEJRTUpJQVVEQ0FVQ0JnSUZEUmNHRFJjSUp3WUNBZ2tJQlFzRkNRXFxcbmdJRGdnREJ3VUpCUVlGQlFVSUJRZ0ZDUVVHQ3dVRkNRWURBd3NKQlFVQ0JRY0hCUWdDQlFNSkJRVUxCUWdGQ0FnSUNBZ0ZCZ1VGQWdnR1xcXG5CaVFDQlFrRkJnVWhCZ2tMQ0FZRkJRc0ZCUXNMQlFVRklpVUlCUVlHQmdZR0JRa01DUXdNQmd3TUJRME5DQVVGSWlRRkJRVUdCZ1VJQmdcXFxuWUxCZ1lHQ0FZR0JRTUxCUXNJQ3dnSUN3VUZDd1lrQmdZR0F3WUdCZ2tGQmdZQ0RRVUlDQWdJQ0EwTkRRVU5CUTBJRFF3TkF3VUZCUXNGXFxcbkJnc0ZDd2dGQmdnSUN3c0xDQVVGQWdzRkN3a0ZCZ01GQlEwSUNBWURCUUlGQWdNRkR3VURCaGtJRmdnRkJnOE5CUWdGQlFVSUJRVUZCUVxcXG5rREJRWUdEUXdJQ0FzR0F3VU1CUXdNQlFzTEJRVUZCUWdMQlFnRkNBZ0ZCUVVNQ3drR0NRa1BBZ0lHQ0NNTENBZ0xEdzhJQ0FVRkJRVUZcXFxuQ0FnQ0JRTUZCZ1VJQ0FVSUNBVVBLU2tBQmdnR0NBc0xCZ1lLQ2dvUENBRUNEdzhQRHdZSUN3Z0lDd3NMQ0FZQ0NBSUdBZ01DQWdNRkJRXFxcbjBORFFJQ0F3Z0ZBd3NGQlFNSUNBZ0ZCUVVGQlFZR0lBZ0lDQWdJQlFrRkNRa0xCUWdEQlFrSkJRZ09CZ0lGQWdJR0NBZ0xDd1VGQWdnSVxcXG5CUWdDQlFnSUNBWU5CUUlJQ0FVSUNBZ0dBd1lKQ3dnRkJRZ0lCUXNMQ0FzRkJRc0lCZ3NMQ3dzQUFBQUZBZ1VGQlFVRkJRVUZDd3NMQ0FcXFxuWURCUU1HQlFNRENBZ0lDQWdJQlFVZkJRWUdCZ1lDQWdJQ0N4Z0ZCUVVGQlFzREJRVUlDUVVHQmdJRkJRVUlCUVVGQWdJSkN3WUdCUVlHXFxcbkJnSUZCZ1VJQlFnTkJnWUxEUW9LQ2dvRkNBVUZCUWdGQ0FnRkNBa0ZCUWdJQlFVRkRRZ0ZDQWdGQmdNSkJRVUlDQVVJQ0FVSUNBVU5DQVxcXG5nR0JnWUdCZ1lHQmdzSUJnTUZCUVlHQXdzRkFnTUdBd0lGQWdrQ0RRSUdCUVVGQWdZQ0JRVUNBZ0lHQWdNQ0Jnd0NCaTBGQlEwRkJRVUZcXFxuQlFVRkJRZ0lDdzBJQ0FJR0NBZ0ZCZ1VOQlFNREJoc0ZCUVVDQlFVTkJRVUpCUUlDQlEwRkJRSUlCZ1lHQmhrR0F3a1FBd1VGQmdvS0N3XFxcblVJQWdVRkFnc0ZEQVVORGcwT0RSc2NIZ3dMQlFZTUJRVUZCUXdNQmdVTEFnWUdBZ0lDQmdJQ0Fnc0NBZ01DQWdJQ0FnWURDZ29HQmdZRlxcXG5CZ1lHQXdrR0JRa0ZCZ1VGQlFJQ0Fna0RBd1lMQ0FJREFnSUlBZ0lHQmdNTEFnWUdCZ1lHQlFVRkNBVUZBZ0lCQlFNRkJna0dCZ1lHQWdcXFxuSUNBZ01JQlFVQ0NBSUlDQUlETEFnZEFnTUdBd0lGQmdZR0Fnc0dCUUlJQWdZQ0FnSUNJQ0FnSUNBTUN3Z0JBZ2dHQ0FnSUNBZ0ZCZ0lJXFxcbkFnTUNDQWdDQlNBREJRWUdBZ0lGQlFJQ0FnSUNBZ0lKQlFJQ0FnSUpDUUlHQWdJR0RRSUZCZ0lDQWdVRkJRVUdCUVVGQlFVSkF3WUdCZ1xcXG5ZSkNBWUNCUWtJQmdJRkFnZ0dDQWdMQ0FZR0Fna0ZBZ01JQ0FZR0JnVUZDQVlHQmdZR0JnZ0ZBZ01DQXdZR0JRWURBd01JQWdrRkNBTURcXFxuQ3dnSkJna0NBZ01DSWd3SkF3TURBd01EQmdZSkJnSUZCUU1KQ1FVQ0F3TUZBd1lHQmdZR0Jna0pCZ3NEQWdJQ0JRWUdCZ1lEQXdJQ0FnXFxcbklHQmdJZkh4OGZBZ1VGQWdJQ0JnZ0dBZ1lDQWdZR0JnVUFBQUlHQmdZR0JnWUNCaDhJQXdNREF3WUZCUWtGQlFZR0NRa0pDUU1EQmdZR1xcXG5CZ1lHQmdZR0JRVURBd01EQmdZR0JnTURCUVVHQXdJREJnTURBd1VDQWdVR0FRWUNCZ1lEQXdVRkJRSUNBZ0lEQWdBQ0F3SURDQU1EQXdcXFxuTURCQVFFQkFRRUJBUUVBd0VFQkFNR0JBQURBd01CQVFNQkJBTUVCQVFFQkFRREFBWUJBUU1PREFrR0F3TUVBZ0lDQ0FnQ0FnSUNBZ2dDXFxcbkJRSUNBZ0FDQWdJQ0FnSUNBZ0lDQWdJQ0FnZ0NBZ0lBQWdJQ0FnSUVoNENBZ0FBQmNBSEdBc1lDQllPQWdJQUFBUUFVQm9tQWdJQUFBWFxcXG44QlFZQ0F3QUFMQjZPRGdJQUFFUVp0WlcxdmNua0NBQTkxY214ZmRHOWZabWxzWlc1aGJXVUFuUU1hWDE5M1ltZGZaMnh2WW1Gc2FIUjBcXFxuY0dOaFkyaGxYMlp5WldVQWtnb1RaMnh2WW1Gc2FIUjBjR05oWTJobFgyNWxkd0NlQmhwbmJHOWlZV3hvZEhSd1kyRmphR1ZmWjJWMFNHXFxcblZoWkdWeWN3RHhBeHRuYkc5aVlXeG9kSFJ3WTJGamFHVmZaMlYwUm1sc1pWUmxlSFFBOGdNVFoyeHZZbUZzYUhSMGNHTmhZMmhsWDNObFxcXG5kQUNlQXhsZlgzZGlaMTlzYjJOaGJHaDBkSEJqWVdOb1pWOW1jbVZsQVBjRUVteHZZMkZzYUhSMGNHTmhZMmhsWDI1bGR3Q3pCQmxzYjJcXFxuTmhiR2gwZEhCallXTm9aVjluWlhSSVpXRmtaWEp6QVBNREdteHZZMkZzYUhSMGNHTmhZMmhsWDJkbGRFWnBiR1ZVWlhoMEFQUURFbXh2XFxcblkyRnNhSFIwY0dOaFkyaGxYM05sZEFDZkF4RmZYM2RpYVc1a1oyVnVYMjFoYkd4dll3Q3NDQkpmWDNkaWFXNWtaMlZ1WDNKbFlXeHNiMlxcXG5NQTlna1VYMTkzWW1sdVpHZGxibDlsZUc1ZmMzUnZjbVVBamd3ZlgxOTNZbWx1WkdkbGJsOWhaR1JmZEc5ZmMzUmhZMnRmY0c5cGJuUmxcXFxuY2dEaERBOWZYM2RpYVc1a1oyVnVYMlp5WldVQXZBc0pqb1dBZ0FBQkFFRUJDOFVDaHd5TURZUU41d3Y5QzFHL0JOb010UUdsQk53TXpnXFxcbkgvREwwTHZ3YVVEcThOcXcyVERwY01wZzJ0RGRVTnB3eW9ETHdOOFEzSkM1ME9xQTJzRGRRTjB3M1NEZW9Jc0F6eERNY0ZnQXUyQzljTlxcXG4zQWl2Q2JzQ2tBYnlEZjhMcUFqZUJhWUlzQTN0RGU0TGx3NlZEcVVLc1EzbkRlMExsZzdnQjh3Ti93WHNEWlFFL2dYV0RkZ01uQWZwRGFcXFxua003Z3k0Q0xjTjlBYnFEWjhJN0F5N0NMWU45UWJ1RGFBSTdReTZDTGdOOWdibURhRUk2QTN2RExrSXVRM3pCdXNObmdqeURNTUg4d3V1XFxcbkMvTU1wd3ZDQi9FTHJRdjBES2tMd1Fmd0M2c0xxQXZFQi9JTHJBdjFES29MeFFmMEM2OEw5Z3lwRGFvTnJnMm5EZkFJalFyeENJNEs3d1xcXG5qR0N1NEl4UXFkQ2JJS253bS9DWjRKZ2dxQkNvVUtuQW5sQ2FJSmd3cWhDY2dLb0FuSENxTUp5UXJxRElnRDZ3eUpBK1VHc2dINUM1Z09cXFxuaFEzN0RMY01od0xDQlprT21nNzdDL29MM3dYeEFZSU0yQTI1RFAwTXd3V2NEcHNPZ0F5NERPQUZuZzcwRFo4T29BNmhEc0FHb2c2dkI5XFxcbkVLOVEya0RvRU5wUTdoQ05vTndBeUlBcVlPYk13QjBncTZDckFHbmdxY0Nwc0ttZ3FmQ3FFS29BcWRDb2dLcUE3a0NJME0yUVBpQmR3TlxcXG55UXlMRGF3T3F3NlBETWdNNHdXcURxNE8rQVRWQ3Y0Tnd3cmZESXdLM1FlTEFwVU1sZ3l3RHYwRjFncUFEdUFMc1E3UURKSU42QVhGQzhcXFxuWUxtUXpIQzVNTjNnMmNESnNNeVEyQ0RwZ01zZzZSRGY4SHlnM1NCb0VPMFFhQUNxQU1uZ3pBQmJNTzRBYmVBYWtGdEE2dENwME11Z25CXFxcbkNwOE10UTcrQ29NT2hRN2dDYjBDaFFTQkI2SU1oQTdvQ3JnTzRnYlhES29GNndpNURvRUxtUTNDQ3NvRjJRemJET01McWd5ZEM4b0x5d1xcXG51VEJmc0I3QUdyQ2JvTzR3YjhBYXdGdXc2U0RxQU5lclFDeXdXZkRkNE1xZ0tyQmFJQ2xRUUszZEtSZ0FDUURvNHdBaDEvQkg0akFFSEFcXFxuQ21zaUJDUUFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FCS1FNQUlpXFxcbkZRRFFBZ0FTa0RDQ0lpVUEwQklBRXBBeEFpSTFBTkFpQWhJQ044SWlRZ0lWUU5BeUFoSUNKVURRUWdBMEVSU1EwRklBRXNBQm9oQlNBQlxcXG5Md0VZSVFFZ0JDQWhQZ0lBSUFSQkFVRUNJQ0ZDZ0lDQWdCQlVJZ1liTmdLZ0FTQUVRUUFnSVVJZ2lLY2dCaHMyQWdRZ0JFRUlha0VBUVpcXFxuZ0JFS0VOR2lBRUlDSStBcWdCSUFSQkFVRUNJQ0pDZ0lDQWdCQlVJZ1liTmdMSUFpQUVRUUFnSWtJZ2lLY2dCaHMyQXF3QklBUkJxQUZxXFxcblFRaHFRUUJCbUFFUW9RMGFJQVFnSXo0QzBBSWdCRUVCUVFJZ0kwS0FnSUNBRUZRaUJoczJBdkFESUFSQkFDQWpRaUNJcHlBR0d6WUMxQVxcXG5JZ0JFSFFBbXBCQ0dwQkFFR1lBUkNoRFJvZ0JFSDRBMnBCQkhKQkFFR2NBUkNoRFJvZ0JFRUJOZ0w0QXlBRVFRRTJBcGdGSUFHdHd5QWtcXFxuUW45OGVYMUN3cHJCNkFSK1FvQ2h6YUMwQW54Q0lJaW5JZ2JCSVFjQ1FBSkFJQUhCSWdoQkFFZ05BQ0FFSUFFUVRCb2dCRUdvQVdvZ0FSXFxcbkJNR2lBRVFkQUNhaUFCRUV3YURBRUxJQVJCK0FOcVFRQWdDR3ZCRUV3YUN3SkFBa0FnQjBGL1NnMEFJQVJCQUNBSGE4RWlBUkJjR2lBRVxcXG5RYWdCYWlBQkVGd2FJQVJCMEFKcUlBRVFYQm9NQVFzZ0JFSDRBMm9nQmtILy93TnhFRndhQ3lBRUlBUW9BcUFCSWdrMkFyZ0tJQVJCbUFcXFxubHFJQVJCb0FFUXBBMGFJQWtnQkNnQzhBTWlDaUFKSUFwTEd5SUxRU2hMRFFZQ1FDQUxEUUJCQUNFTERBa0xJQXRCQVhFaERBSkFJQXRCXFxcbkFVY05BRUVBSVExQkFDRU9EQWdMSUF0QmZuRWhEMEVBSVEwZ0JFR1lDV29oQVNBRVFkQUNhaUVHUVFBaERnTkFJQUVnQVNnQ0FDSVFJQVxcXG5Zb0FnQnFJZ2dnRFVFQmNXb2lFVFlDQUNBQlFRUnFJZzBnRFNnQ0FDSVNJQVpCQkdvb0FnQnFJZzBnQ0NBUVNTQVJJQWhKY21vaUNEWUNcXFxuQUNBTklCSkpJQWdnRFVseUlRMGdCa0VJYWlFR0lBRkJDR29oQVNBUElBNUJBbW9pRGtjTkFBd0lDd3RCaTRQT0FFRWNRYWlEemdBUWd3XFxcbmNBQzBHNGc4NEFRUjFCMklQT0FCQ0RCd0FMUWVpRHpnQkJIRUdFaE00QUVJTUhBQXRCbElUT0FFRTJRY3lFemdBUWd3Y0FDMEhjaE00QVxcXG5RVGRCbElYT0FCQ0RCd0FMUWFTRnpnQkJMVUhVaGM0QUVJTUhBQXNnQzBFb1FhaTR6Z0FRZ3dVQUN3SkFJQXhGRFFBZ0JFR1lDV29nRGtcXFxuRUNkQ0lCYWlJR0lBWW9BZ0FpQmlBRVFkQUNhaUFCYWlnQ0FHb2lBU0FOYWlJSU5nSUFJQUVnQmtrZ0NDQUJTWEloRFFzZ0RVRUJjVVVOXFxcbkFDQUxRU2RMRFFFZ0JFR1lDV29nQzBFQ2RHcEJBVFlDQUNBTFFRRnFJUXNMSUFRZ0N6WUN1QW9nQkNnQ21BVWlEaUFMSUE0Z0Mwc2JJZ1xcXG5GQktVOE5BU0FCUVFKMElRRUNRQUpBQTBBZ0FVVU5BVUYvSUFGQmZHb2lBU0FFUVpnSmFtb29BZ0FpQmlBQklBUkIrQU5xYWlnQ0FDSUlcXFxuUnlBR0lBaExHeUlHUlEwQURBSUxDMEYvUVFBZ0FSc2hCZ3NDUUNBR0lBVklEUUFnQ1VFcFR3MERBa0FnQ1EwQVFRQWhDUXdHQ3lBSlFYXFxcbjlxUWYvLy8vOERjU0lCUVFGcUlnaEJBM0VoQmdKQUlBRkJBMDhOQUNBRUlRRkNBQ0VoREFVTElBaEIvUC8vL3dkeElRZ2dCQ0VCUWdBaFxcXG5JUU5BSUFFZ0FUVUNBRUlLZmlBaGZDSWhQZ0lBSUFGQkJHb2lEU0FOTlFJQVFncCtJQ0ZDSUloOElpRStBZ0FnQVVFSWFpSU5JQTAxQWdcXFxuQkNDbjRnSVVJZ2lId2lJVDRDQUNBQlFReHFJZzBnRFRVQ0FFSUtmaUFoUWlDSWZDSWhQZ0lBSUNGQ0lJZ2hJU0FCUVJCcUlRRWdDRUY4XFxcbmFpSUlEUUFNQlFzTElBZEJBV29oQnd3TUN5QUxRU2hCcUxqT0FCQ0JCUUFMSUFGQktFR291TTRBRUlNRkFBc2dDVUVvUWFpNHpnQVFnd1xcXG5VQUN3SkFJQVpGRFFBRFFDQUJJQUUxQWdCQ0NuNGdJWHdpSVQ0Q0FDQUJRUVJxSVFFZ0lVSWdpQ0VoSUFaQmYyb2lCZzBBQ3dzZ0lhY2lcXFxuQVVVTkFDQUpRU2RMRFFFZ0JDQUpRUUowYWlBQk5nSUFJQWxCQVdvaENRc2dCQ0FKTmdLZ0FTQUVLQUxJQWlJUVFTbFBEUUVDUUNBUURRXFxcbkJCQUNFUURBUUxJQkJCZjJwQi8vLy8vd054SWdGQkFXb2lDRUVEY1NFR0FrQWdBVUVEVHcwQUlBUkJxQUZxSVFGQ0FDRWhEQU1MSUFoQlxcXG4vUC8vL3dkeElRZ2dCRUdvQVdvaEFVSUFJU0VEUUNBQklBRTFBZ0JDQ240Z0lYd2lJVDRDQUNBQlFRUnFJZzBnRFRVQ0FFSUtmaUFoUWlcXFxuQ0lmQ0loUGdJQUlBRkJDR29pRFNBTk5RSUFRZ3ArSUNGQ0lJaDhJaUUrQWdBZ0FVRU1haUlOSUEwMUFnQkNDbjRnSVVJZ2lId2lJVDRDXFxcbkFDQWhRaUNJSVNFZ0FVRVFhaUVCSUFoQmZHb2lDQTBBREFNTEN5QUpRU2hCcUxqT0FCQ0JCUUFMSUJCQktFR291TTRBRUlNRkFBc0NRQ1xcXG5BR1JRMEFBMEFnQVNBQk5RSUFRZ3ArSUNGOElpRStBZ0FnQVVFRWFpRUJJQ0ZDSUlnaElTQUdRWDlxSWdZTkFBc0xJQ0duSWdGRkRRQWdcXFxuRUVFblN3MEJJQVJCcUFGcUlCQkJBblJxSUFFMkFnQWdFRUVCYWlFUUN5QUVJQkEyQXNnQ0lBcEJLVThOQVFKQUlBb05BQ0FFUVFBMkF2XFxcbkFEREFRTElBcEJmMnBCLy8vLy93TnhJZ0ZCQVdvaUNFRURjU0VHQWtBZ0FVRURUdzBBSUFSQjBBSnFJUUZDQUNFaERBTUxJQWhCL1AvL1xcXG4vd2R4SVFnZ0JFSFFBbW9oQVVJQUlTRURRQ0FCSUFFMUFnQkNDbjRnSVh3aUlUNENBQ0FCUVFScUlnMGdEVFVDQUVJS2ZpQWhRaUNJZkNcXFxuSWhQZ0lBSUFGQkNHb2lEU0FOTlFJQVFncCtJQ0ZDSUloOElpRStBZ0FnQVVFTWFpSU5JQTAxQWdCQ0NuNGdJVUlnaUh3aUlUNENBQ0FoXFxcblFpQ0lJU0VnQVVFUWFpRUJJQWhCZkdvaUNBMEFEQU1MQ3lBUVFTaEJxTGpPQUJDQkJRQUxJQXBCS0VHb3VNNEFFSU1GQUFzQ1FDQUdSUVxcXG4wQUEwQWdBU0FCTlFJQVFncCtJQ0Y4SWlFK0FnQWdBVUVFYWlFQklDRkNJSWdoSVNBR1FYOXFJZ1lOQUFzTEFrQWdJYWNpQVVVTkFDQUtcXFxuUVNkTERRSWdCRUhRQW1vZ0NrRUNkR29nQVRZQ0FDQUtRUUZxSVFvTElBUWdDallDOEFNTElBUWdEallDd0FZZ0JFR2dCV29nQkVINEEyXFxcbnBCb0FFUXBBMGFJQVJCb0FWcVFRRVFUQ0VUSUFRZ0JDZ0NtQVUyQXVnSElBUkJ5QVpxSUFSQitBTnFRYUFCRUtRTkdpQUVRY2dHYWtFQ1xcXG5FRXdoRkNBRUlBUW9BcGdGTmdLUUNTQUVRZkFIYWlBRVFmZ0Rha0dnQVJDa0RSb2dCRUh3QjJwQkF4Qk1JUlVDUUFKQUlBUW9BcUFCSWdcXFxuOGdCQ2dDa0FraUZpQVBJQlpMR3lJTFFTaExEUUFnQkVHZ0JXcEJmR29oRENBRVFjZ0dha0Y4YWlFS0lBUkI4QWRxUVh4cUlRa2dCQ2dDXFxcbm1BVWhGeUFFS0FMQUJpRVlJQVFvQXVnSElSbEJBQ0VhQTBBZ0dpRWJJQXRCQW5RaEFRSkFBa0FEUUNBQlJRMEJRWDhnQ1NBQmFpZ0NBQ1xcXG5JR0lBRkJmR29pQVNBRWFpZ0NBQ0lJUnlBR0lBaExHeUlHUlEwQURBSUxDMEYvUVFBZ0FSc2hCZ3RCQUNFY0FrQUNRQUpBQWtBQ1FBSkFcXFxuQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQVpCQVVzTkFBSkFJQXRGRFFCQkFTXFxcbkVOSUF0QkFYRWhIVUVBSVE0Q1FDQUxRUUZHRFFBZ0MwRitjU0VQUVFBaERrRUJJUTBnQkNFQklBUkI4QWRxSVFZRFFDQUJJQUVvQWdBaVxcXG5FQ0FHS0FJQVFYOXphaUlJSUExQkFYRnFJaEUyQWdBZ0FVRUVhaUlOSUEwb0FnQWlFaUFHUVFScUtBSUFRWDl6YWlJTklBZ2dFRWtnRVNcXFxuQUlTWEpxSWdnMkFnQWdEU0FTU1NBSUlBMUpjaUVOSUFaQkNHb2hCaUFCUVFocUlRRWdEeUFPUVFKcUlnNUhEUUFMQ3dKQUlCMUZEUUFnXFxcbkJDQU9RUUowSWdGcUlnWWdCaWdDQUNJR0lCVWdBV29vQWdCQmYzTnFJZ0VnRFdvaUNEWUNBQ0FCSUFaSklBZ2dBVWx5SVEwTElBMUJBWFxcXG5GRkRRSUxJQVFnQ3pZQ29BRkJDQ0VjSUFzaER3c2dEeUFaSUE4Z0dVc2JJZ3RCS1U4TkFTQUxRUUowSVFFQ1FBSkFBMEFnQVVVTkFVRi9cXFxuSUFvZ0FXb29BZ0FpQmlBQlFYeHFJZ0VnQkdvb0FnQWlDRWNnQmlBSVN4c2lCa1VOQUF3Q0N3dEJmMEVBSUFFYklRWUxBa0FDUUNBR1FRXFxcbkZORFFBZ0R5RUxEQUVMQWtBZ0MwVU5BRUVCSVEwZ0MwRUJjU0VkUVFBaERnSkFJQXRCQVVZTkFDQUxRWDV4SVE5QkFDRU9RUUVoRFNBRVxcXG5JUUVnQkVISUJtb2hCZ05BSUFFZ0FTZ0NBQ0lRSUFZb0FnQkJmM05xSWdnZ0RVRUJjV29pRVRZQ0FDQUJRUVJxSWcwZ0RTZ0NBQ0lTSUFcXFxuWkJCR29vQWdCQmYzTnFJZzBnQ0NBUVNTQVJJQWhKY21vaUNEWUNBQ0FOSUJKSklBZ2dEVWx5SVEwZ0JrRUlhaUVHSUFGQkNHb2hBU0FQXFxcbklBNUJBbW9pRGtjTkFBc0xBa0FnSFVVTkFDQUVJQTVCQW5RaUFXb2lCaUFHS0FJQUlnWWdGQ0FCYWlnQ0FFRi9jMm9pQVNBTmFpSUlOZ1xcXG5JQUlBRWdCa2tnQ0NBQlNYSWhEUXNnRFVFQmNVVU5CQXNnQkNBTE5nS2dBU0FjUVFSeUlSd0xJQXNnR0NBTElCaExHeUlkUVNsUERRTWdcXFxuSFVFQ2RDRUJBa0FDUUFOQUlBRkZEUUZCZnlBTUlBRnFLQUlBSWdZZ0FVRjhhaUlCSUFScUtBSUFJZ2hISUFZZ0NFc2JJZ1pGRFFBTUFnXFxcbnNMUVg5QkFDQUJHeUVHQ3dKQUFrQWdCa0VCVFEwQUlBc2hIUXdCQ3dKQUlCMUZEUUJCQVNFTklCMUJBWEVoQzBFQUlRNENRQ0FkUVFGR1xcXG5EUUFnSFVGK2NTRVBRUUFoRGtFQklRMGdCQ0VCSUFSQm9BVnFJUVlEUUNBQklBRW9BZ0FpRUNBR0tBSUFRWDl6YWlJSUlBMUJBWEZxSWhcXFxuRTJBZ0FnQVVFRWFpSU5JQTBvQWdBaUVpQUdRUVJxS0FJQVFYOXphaUlOSUFnZ0VFa2dFU0FJU1hKcUlnZzJBZ0FnRFNBU1NTQUlJQTFKXFxcbmNpRU5JQVpCQ0dvaEJpQUJRUWhxSVFFZ0R5QU9RUUpxSWc1SERRQUxDd0pBSUF0RkRRQWdCQ0FPUVFKMElnRnFJZ1lnQmlnQ0FDSUdJQlxcXG5NZ0FXb29BZ0JCZjNOcUlnRWdEV29pQ0RZQ0FDQUJJQVpKSUFnZ0FVbHlJUTBMSUExQkFYRkZEUVlMSUFRZ0hUWUNvQUVnSEVFQ2FpRWNcXFxuQ3lBZElCY2dIU0FYU3hzaUQwRXBUdzBGSUE5QkFuUWhBUUpBQWtBRFFDQUJSUTBCUVg4Z0FVRjhhaUlCSUFSQitBTnFhaWdDQUNJR0lBXFxcbkVnQkdvb0FnQWlDRWNnQmlBSVN4c2lCa1VOQUF3Q0N3dEJmMEVBSUFFYklRWUxBa0FDUUNBR1FRRk5EUUFnSFNFUERBRUxBa0FnRDBVTlxcXG5BRUVCSVEwZ0QwRUJjU0VkUVFBaERnSkFJQTlCQVVZTkFDQVBRWDV4SVF0QkFDRU9RUUVoRFNBRUlRRWdCRUg0QTJvaEJnTkFJQUVnQVNcXFxuZ0NBQ0lRSUFZb0FnQkJmM05xSWdnZ0RVRUJjV29pRVRZQ0FDQUJRUVJxSWcwZ0RTZ0NBQ0lTSUFaQkJHb29BZ0JCZjNOcUlnMGdDQ0FRXFxcblNTQVJJQWhKY21vaUNEWUNBQ0FOSUJKSklBZ2dEVWx5SVEwZ0JrRUlhaUVHSUFGQkNHb2hBU0FMSUE1QkFtb2lEa2NOQUFzTEFrQWdIVVxcXG5VTkFDQUVJQTVCQW5RaUFXb2lCaUFHS0FJQUlnWWdCRUg0QTJvZ0FXb29BZ0JCZjNOcUlnRWdEV29pQ0RZQ0FDQUJJQVpKSUFnZ0FVbHlcXFxuSVEwTElBMUJBWEZGRFFnTElBUWdEellDb0FFZ0hFRUJhaUVjQ3lBYklBTkdEUW9nQWlBYmFpQWNRVEJxT2dBQUlBOGdCQ2dDeUFJaUhpXFxcbkFQSUI1TEd5SUJRU2xQRFFjZ0cwRUJhaUVhSUFGQkFuUWhBUUpBQWtBRFFDQUJSUTBCUVg4Z0FVRjhhaUlCSUFSQnFBRnFhaWdDQUNJR1xcXG5JQUVnQkdvb0FnQWlDRWNnQmlBSVN4c2lDMFVOQUF3Q0N3dEJmMEVBSUFFYklRc0xJQVFnRHpZQ3VBb2dCRUdZQ1dvZ0JFR2dBUkNrRFJcXFxub2dEeUFFS0FMd0F5SWZJQThnSDBzYkloeEJLRXNORGdKQUFrQWdIQTBBUVFBaEhBd0JDeUFjUVFGeElTQkJBQ0VOUVFBaERnSkFJQnhCXFxcbkFVWU5BQ0FjUVg1eElSMUJBQ0VOSUFSQm1BbHFJUUVnQkVIUUFtb2hCa0VBSVE0RFFDQUJJQUVvQWdBaUVDQUdLQUlBYWlJSUlBMUJBWFxcXG5GcUloRTJBZ0FnQVVFRWFpSU5JQTBvQWdBaUVpQUdRUVJxS0FJQWFpSU5JQWdnRUVrZ0VTQUlTWEpxSWdnMkFnQWdEU0FTU1NBSUlBMUpcXFxuY2lFTklBWkJDR29oQmlBQlFRaHFJUUVnSFNBT1FRSnFJZzVIRFFBTEN3SkFJQ0JGRFFBZ0JFR1lDV29nRGtFQ2RDSUJhaUlHSUFZb0FnXFxcbkFpQmlBRVFkQUNhaUFCYWlnQ0FHb2lBU0FOYWlJSU5nSUFJQUVnQmtrZ0NDQUJTWEloRFFzZ0RVRUJjVVVOQUNBY1FTZExEUWtnQkVHWVxcXG5DV29nSEVFQ2RHcEJBVFlDQUNBY1FRRnFJUndMSUFRZ0hEWUN1QW9nRnlBY0lCY2dIRXNiSWdGQktVOE5DU0FCUVFKMElRRUNRQUpBQTBcXFxuQWdBVVVOQVVGL0lBRkJmR29pQVNBRVFaZ0phbW9vQWdBaUJpQUJJQVJCK0FOcWFpZ0NBQ0lJUnlBR0lBaExHeUlHUlEwQURBSUxDMEYvXFxcblFRQWdBUnNoQmdzQ1FDQUxJQVZJRFFBZ0JpQUZTQTBBSUE5QktVOE5EQUpBSUE4TkFFRUFJUThNRXdzZ0QwRi9ha0gvLy8vL0EzRWlBVVxcXG5FQmFpSUlRUU54SVFZQ1FDQUJRUU5QRFFBZ0JDRUJRZ0FoSVF3U0N5QUlRZnovLy84SGNTRUlJQVFoQVVJQUlTRURRQ0FCSUFFMUFnQkNcXFxuQ240Z0lYd2lJVDRDQUNBQlFRUnFJZzBnRFRVQ0FFSUtmaUFoUWlDSWZDSWhQZ0lBSUFGQkNHb2lEU0FOTlFJQVFncCtJQ0ZDSUloOElpXFxcbkUrQWdBZ0FVRU1haUlOSUEwMUFnQkNDbjRnSVVJZ2lId2lJVDRDQUNBaFFpQ0lJU0VnQVVFUWFpRUJJQWhCZkdvaUNBMEFEQklMQ3lBR1xcXG5JQVZPRFE4Q1FDQUxJQVZPRFFBZ0JFRUJFRXdhSUFRb0FxQUJJZ0VnQkNnQ21BVWlCaUFCSUFaTEd5SUJRU2xQRFEwZ0FVRUNkQ0VCSUFcXFxuUkJmR29oRFNBRVFmZ0Rha0Y4YWlFT0FrQUNRQU5BSUFGRkRRRWdEU0FCYWlFR0lBNGdBV29oQ0NBQlFYeHFJUUZCZnlBSUtBSUFJZ2dnXFxcbkJpZ0NBQ0lHUnlBSUlBWkxHeUlHUlEwQURBSUxDMEYvUVFBZ0FSc2hCZ3NnQmtFQ1R3MFFDeUFiSUFOUERRMGdBaUFhYWlFT0lCc2hBVVxcXG5GL0lRWUNRQU5BSUFGQmYwWU5BU0FHUVFGcUlRWWdBaUFCYWlFSUlBRkJmMm9pRFNFQklBZ3RBQUJCT1VZTkFBc2dBaUFOYWlJSVFRRnFcXFxuSWdFZ0FTMEFBRUVCYWpvQUFDQU5RUUpxSUJ0TERSQWdDRUVDYWtFd0lBWVFvUTBhREJBTElBSkJNVG9BQUFKQUlCdEZEUUFnQWtFQmFrXFxcbkV3SUJzUW9RMGFDd0pBSUJvZ0EwOE5BQ0FPUVRBNkFBQWdCMEVCYWlFSElCdEJBbW9oR2d3UUN5QWFJQU5CaEliT0FCQ0JCUUFMUWJpNFxcXG56Z0JCR2tHb3VNNEFFSU1IQUFzZ0MwRW9RYWk0emdBUWd3VUFDMEc0dU00QVFScEJxTGpPQUJDREJ3QUxJQjFCS0VHb3VNNEFFSU1GQUFcXFxudEJ1TGpPQUVFYVFhaTR6Z0FRZ3djQUN5QVBRU2hCcUxqT0FCQ0RCUUFMUWJpNHpnQkJHa0dvdU00QUVJTUhBQXNnQVVFb1FhaTR6Z0FRXFxcbmd3VUFDeUFjUVNoQnFMak9BQkNCQlFBTElBRkJLRUdvdU00QUVJTUZBQXNnQXlBRFFlU0Z6Z0FRZ1FVQUN5QVBRU2hCcUxqT0FCQ0RCUVxcXG5BTElBRkJLRUdvdU00QUVJTUZBQXNnR2lBRFFmU0Z6Z0FRZ3dVQUN5QWNRU2hCcUxqT0FCQ0RCUUFMQWtBZ0dpQURTdzBBSUFBZ0J6c0JcXFxuQ0NBQUlCbzJBZ1FnQUNBQ05nSUFJQVJCd0FwcUpBQVBDeUFhSUFOQmxJYk9BQkNEQlFBTEFrQWdCa1VOQUFOQUlBRWdBVFVDQUVJS2ZpXFxcbkFoZkNJaFBnSUFJQUZCQkdvaEFTQWhRaUNJSVNFZ0JrRi9haUlHRFFBTEN5QWhweUlCUlEwQUlBOUJKMHNOQVNBRUlBOUJBblJxSUFFMlxcXG5BZ0FnRDBFQmFpRVBDeUFFSUE4MkFxQUJJQjVCS1U4TkFRSkFJQjROQUVFQUlSNE1CQXNnSGtGL2FrSC8vLy8vQTNFaUFVRUJhaUlJUVFcXFxuTnhJUVlDUUNBQlFRTlBEUUFnQkVHb0FXb2hBVUlBSVNFTUF3c2dDRUg4Ly8vL0IzRWhDQ0FFUWFnQmFpRUJRZ0FoSVFOQUlBRWdBVFVDXFxcbkFFSUtmaUFoZkNJaFBnSUFJQUZCQkdvaURTQU5OUUlBUWdwK0lDRkNJSWg4SWlFK0FnQWdBVUVJYWlJTklBMDFBZ0JDQ240Z0lVSWdpSFxcXG53aUlUNENBQ0FCUVF4cUlnMGdEVFVDQUVJS2ZpQWhRaUNJZkNJaFBnSUFJQ0ZDSUlnaElTQUJRUkJxSVFFZ0NFRjhhaUlJRFFBTUF3c0xcXFxuSUE5QktFR291TTRBRUlFRkFBc2dIa0VvUWFpNHpnQVFnd1VBQ3dKQUlBWkZEUUFEUUNBQklBRTFBZ0JDQ240Z0lYd2lJVDRDQUNBQlFRXFxcblJxSVFFZ0lVSWdpQ0VoSUFaQmYyb2lCZzBBQ3dzZ0lhY2lBVVVOQUNBZVFTZExEUUVnQkVHb0FXb2dIa0VDZEdvZ0FUWUNBQ0FlUVFGcVxcXG5JUjRMSUFRZ0hqWUN5QUlnSDBFcFR3MEJBa0FnSHcwQVFRQWhId3dFQ3lBZlFYOXFRZi8vLy84RGNTSUJRUUZxSWdoQkEzRWhCZ0pBSUFcXFxuRkJBMDhOQUNBRVFkQUNhaUVCUWdBaElRd0RDeUFJUWZ6Ly8vOEhjU0VJSUFSQjBBSnFJUUZDQUNFaEEwQWdBU0FCTlFJQVFncCtJQ0Y4XFxcbklpRStBZ0FnQVVFRWFpSU5JQTAxQWdCQ0NuNGdJVUlnaUh3aUlUNENBQ0FCUVFocUlnMGdEVFVDQUVJS2ZpQWhRaUNJZkNJaFBnSUFJQVxcXG5GQkRHb2lEU0FOTlFJQVFncCtJQ0ZDSUloOElpRStBZ0FnSVVJZ2lDRWhJQUZCRUdvaEFTQUlRWHhxSWdnTkFBd0RDd3NnSGtFb1FhaTRcXFxuemdBUWdRVUFDeUFmUVNoQnFMak9BQkNEQlFBTEFrQWdCa1VOQUFOQUlBRWdBVFVDQUVJS2ZpQWhmQ0loUGdJQUlBRkJCR29oQVNBaFFpXFxcbkNJSVNFZ0JrRi9haUlHRFFBTEN5QWhweUlCUlEwQUlCOUJKMHNOQXlBRVFkQUNhaUFmUVFKMGFpQUJOZ0lBSUI5QkFXb2hId3NnQkNBZlxcXG5OZ0x3QXlBUElCWWdEeUFXU3hzaUMwRW9UUTBBQ3dzZ0MwRW9RYWk0emdBUWd3VUFDeUFmUVNoQnFMak9BQkNCQlFBTElBcEJLRUdvdU1cXFxuNEFFSUVGQUF1dktBSWJmd04rSXdCQjBBWnJJZ1VrQUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDXFxcblFDQUJLUU1BSWlCUURRQWdBU2tEQ0NJaFVBMEJJQUVwQXhBaUlsQU5BaUFnSUNKOElDQlVEUU1nSUNBaFZBMEVJQUV2QVJnaEFTQUZJQ1xcXG5BK0FnZ2dCVUVCUVFJZ0lFS0FnSUNBRUZRaUJoczJBcWdCSUFWQkFDQWdRaUNJcHlBR0d6WUNEQ0FGUVJCcVFRQkJtQUVRb1EwYUlBVkJcXFxuc0FGcVFRUnlRUUJCbkFFUW9RMGFJQVZCQVRZQ3NBRWdCVUVCTmdMUUFpQUJyY01nSUVKL2ZIbDlRc0thd2VnRWZrS0FvYzJndEFKOFFpXFxcbkNJcHlJR3dTRUhBa0FDUUNBQndTSUlRUUJJRFFBZ0JVRUlhaUFCRUV3YURBRUxJQVZCc0FGcVFRQWdDR3ZCRUV3YUN3SkFBa0FnQjBGL1xcXG5TZzBBSUFWQkNHcEJBQ0FIYThFUVhCb01BUXNnQlVHd0FXb2dCa0gvL3dOeEVGd2FDeUFGSUFVb0F0QUNJZ2syQXNnR0lBVkJxQVZxSUFcXFxuVkJzQUZxUWFBQkVLUU5HaUFESVFvQ1FDQURRUXBKRFFBQ1FBSkFJQWxCS0UwTkFDQUpJUUVNQVFzZ0JVR29CV3BCZUdvaEN5QURJUW9nXFxcbkNTRUJBMEFDUUNBQlJRMEFJQUZCZjJwQi8vLy8vd054SWdaQkFXb2lDRUVCY1NFTUlBRkJBblFoQVFKQUFrQWdCZzBBSUFWQnFBVnFJQVxcXG5GcUlRRkNBQ0VnREFFTElBaEIvdi8vL3dkeElRWWdDeUFCYWlFQlFnQWhJQU5BSUFGQkJHb2lDQ0FnUWlDR0lBZzFBZ0NFSWlCQ2dKVHJcXFxuM0FPQUlpSStBZ0FnQVNBZ0lDSkNnSlRyM0FOK2ZVSWdoaUFCTlFJQWhDSWdRb0NVNjl3RGdDSWlQZ0lBSUNBZ0lrS0FsT3ZjQTM1OUlTXFxcbkFnQVVGNGFpRUJJQVpCZm1vaUJnMEFDeUFCUVFocUlRRUxJQXhGRFFBZ0FVRjhhaUlCSUNCQ0lJWWdBVFVDQUlSQ2dKVHIzQU9BUGdJQVxcXG5DeUFLUVhkcUlncEJDVTBOQWlBRktBTElCaUlCUVNsSkRRQUxDeUFCUVNoQnFMak9BQkNEQlFBTEFrQUNRQUpBQWtBZ0NrRUNkRUhjZ01cXFxuNEFhaWdDQUNJR1JRMEFJQVVvQXNnR0lnRkJLVThOQ1FKQUlBRU5BRUVBSVFFTUJBc2dBVUYvYWtILy8vLy9BM0VpQ0VFQmFpSU1RUUZ4XFxcbklRb2dBVUVDZENFQklBYXRJU0FnQ0EwQklBVkJxQVZxSUFGcUlRRkNBQ0VpREFJTFFlKzR6Z0JCRzBHb3VNNEFFSU1IQUFzZ0RFSCsvL1xcXG4vL0IzRWhCaUFCSUFWQnFBVnFha0Y0YWlFQlFnQWhJZ05BSUFGQkJHb2lDQ0FpUWlDR0lBZzFBZ0NFSWlJZ0lJQWlJVDRDQUNBQklDSWdcXFxuSVNBZ2ZuMUNJSVlnQVRVQ0FJUWlJaUFnZ0NJaFBnSUFJQ0lnSVNBZ2ZuMGhJaUFCUVhocUlRRWdCa0YrYWlJR0RRQUxJQUZCQ0dvaEFRXFxcbnNDUUNBS1JRMEFJQUZCZkdvaUFTQWlRaUNHSUFFMUFnQ0VJQ0NBUGdJQUN5QUZLQUxJQmlFQkN5QUJJQVVvQXFnQklnMGdBU0FOU3hzaVxcXG5Ea0VvU3cwR0FrQWdEZzBBUVFBaERnd0pDeUFPUVFGeElROENRQ0FPUVFGSERRQkJBQ0VLUVFBaERBd0lDeUFPUVg1eElSQkJBQ0VLSUFcXFxuVkJxQVZxSVFFZ0JVRUlhaUVHUVFBaERBTkFJQUVnQVNnQ0FDSUxJQVlvQWdCcUlnZ2dDa0VCY1dvaUVUWUNBQ0FCUVFScUlnb2dDaWdDXFxcbkFDSVNJQVpCQkdvb0FnQnFJZ29nQ0NBTFNTQVJJQWhKY21vaUNEWUNBQ0FLSUJKSklBZ2dDa2x5SVFvZ0JrRUlhaUVHSUFGQkNHb2hBU1xcXG5BUUlBeEJBbW9pREVjTkFBd0lDd3RCaTRQT0FFRWNRYVNHemdBUWd3Y0FDMEc0Zzg0QVFSMUJ0SWJPQUJDREJ3QUxRZWlEemdCQkhFSEVcXFxuaHM0QUVJTUhBQXRCbElUT0FFRTJRZFNHemdBUWd3Y0FDMEhjaE00QVFUZEI1SWJPQUJDREJ3QUxJQUZCS0VHb3VNNEFFSU1GQUFzZ0RrXFxcbkVvUWFpNHpnQVFnd1VBQ3dKQUlBOUZEUUFnQlVHb0JXb2dERUVDZENJQmFpSUdJQVlvQWdBaUJpQUZRUWhxSUFGcUtBSUFhaUlCSUFwcVxcXG5JZ2cyQWdBZ0FTQUdTU0FJSUFGSmNpRUtDeUFLUVFGeFJRMEFJQTVCSjBzTkFTQUZRYWdGYWlBT1FRSjBha0VCTmdJQUlBNUJBV29oRGdcXFxuc2dCU0FPTmdMSUJpQU9JQWtnRGlBSlN4c2lBVUVwVHcwQklBRkJBblFoQVFKQUFrQURRQ0FCUlEwQlFYOGdBVUY4YWlJQklBVkJzQUZxXFxcbmFpZ0NBQ0lHSUFFZ0JVR29CV3BxS0FJQUlnaEhJQVlnQ0VzYklnWkZEUUFNQWdzTFFYOUJBQ0FCR3lFR0N3SkFJQVpCQVVzTkFDQUhRUVxcXG5GcUlRY01CZ3NnRFVFcFR3MENBa0FnRFEwQVFRQWhEUXdGQ3lBTlFYOXFRZi8vLy84RGNTSUJRUUZxSWdoQkEzRWhCZ0pBSUFGQkEwOE5cXFxuQUNBRlFRaHFJUUZDQUNFZ0RBUUxJQWhCL1AvLy93ZHhJUWdnQlVFSWFpRUJRZ0FoSUFOQUlBRWdBVFVDQUVJS2ZpQWdmQ0lnUGdJQUlBXFxcbkZCQkdvaUNpQUtOUUlBUWdwK0lDQkNJSWg4SWlBK0FnQWdBVUVJYWlJS0lBbzFBZ0JDQ240Z0lFSWdpSHdpSUQ0Q0FDQUJRUXhxSWdvZ1xcXG5DalVDQUVJS2ZpQWdRaUNJZkNJZ1BnSUFJQ0JDSUlnaElDQUJRUkJxSVFFZ0NFRjhhaUlJRFFBTUJBc0xJQTVCS0VHb3VNNEFFSUVGQUFcXFxuc2dBVUVvUWFpNHpnQVFnd1VBQ3lBTlFTaEJxTGpPQUJDREJRQUxBa0FnQmtVTkFBTkFJQUVnQVRVQ0FFSUtmaUFnZkNJZ1BnSUFJQUZCXFxcbkJHb2hBU0FnUWlDSUlTQWdCa0YvYWlJR0RRQUxDeUFncHlJQlJRMEFJQTFCSjBzTkFpQUZRUWhxSUExQkFuUnFJQUUyQWdBZ0RVRUJhaVxcXG5FTkN5QUZJQTAyQXFnQkMwRUFJUXNDUUFKQUlBZkJJZ0VnQk1FaUUwZ05BQ0FISUFScndTQURJQUVnRTJzZ0Ewa2JJZ29OQVVFQUlRc0xcXFxuUVFBaENnd0NDeUFGSUFrMkF2Z0RJQVZCMkFKcUlBVkJzQUZxUWFBQkVLUU5HaUFGUWRnQ2FrRUJFRXdoRkNBRklBVW9BdEFDTmdLZ0JTXFxcbkFGUVlBRWFpQUZRYkFCYWtHZ0FSQ2tEUm9nQlVHQUJHcEJBaEJNSVJVZ0JTQUZLQUxRQWpZQ3lBWWdCVUdvQldvZ0JVR3dBV3BCb0FFUVxcXG5wQTBhSUFWQnNBRnFRWHhxSVE0Z0JVSFlBbXBCZkdvaEVDQUZRWUFFYWtGOGFpRVNJQVZCcUFWcVFYeHFJUkVnQlVHb0JXcEJBeEJNSVJcXFxuWWdCU2dDcUFFaEN5QUZLQUxRQWlFSklBVW9BdmdESVJjZ0JTZ0NvQVVoR0NBRktBTElCaUVaUVFBaEdnSkFBMEFnR2lFYkFrQUNRQUpBXFxcbkFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FMUVNsUERRQWdHMEVCYWlFYUlBdEJBblFoQ0VFQUlRRUNRQUpBQWtBRFFDQUlJQVxcXG5GR0RRRWdCVUVJYWlBQmFpRUdJQUZCQkdvaEFTQUdLQUlBUlEwQUN5QUxJQmtnQ3lBWlN4c2lIRUVwVHcwRUlCeEJBblFoQVFKQUFrQURcXFxuUUNBQlJRMEJRWDhnRVNBQmFpZ0NBQ0lHSUFGQmZHb2lBU0FGUVFocWFpZ0NBQ0lJUnlBR0lBaExHeUlHUlEwQURBSUxDMEYvUVFBZ0FSXFxcbnNoQmd0QkFDRWRBa0FnQmtFQ1R3MEFBa0FnSEVVTkFFRUJJUXdnSEVFQmNTRWRRUUFoQ3dKQUlCeEJBVVlOQUNBY1FYNXhJUjVCQUNFTFxcXG5RUUVoRENBRlFRaHFJUUVnQlVHb0JXb2hCZ05BSUFFZ0FTZ0NBQ0lOSUFZb0FnQkJmM05xSWdnZ0RFRUJjV29pQkRZQ0FDQUJRUVJxSWdcXFxud2dEQ2dDQUNJUElBWkJCR29vQWdCQmYzTnFJZ3dnQ0NBTlNTQUVJQWhKY21vaUNEWUNBQ0FNSUE5SklBZ2dERWx5SVF3Z0JrRUlhaUVHXFxcbklBRkJDR29oQVNBZUlBdEJBbW9pQzBjTkFBc0xBa0FnSFVVTkFDQUZRUWhxSUF0QkFuUWlBV29pQmlBR0tBSUFJZ1lnRmlBQmFpZ0NBRVxcXG5GL2Myb2lBU0FNYWlJSU5nSUFJQUVnQmtrZ0NDQUJTWEloREFzZ0RFRUJjVVVOQ1FzZ0JTQWNOZ0tvQVVFSUlSMGdIQ0VMQ3lBTElCZ2dcXFxuQ3lBWVN4c2lIa0VwVHcwSUlCNUJBblFoQVFOQUlBRkZEUUpCZnlBU0lBRnFLQUlBSWdZZ0FVRjhhaUlCSUFWQkNHcHFLQUlBSWdoSElBXFxcbllnQ0VzYklnWkZEUUFNQXdzTElBb2dHMGtOQkNBS0lBTkxEUVVnQ2lBYlJnMFVJQUlnRzJwQk1DQUtJQnRyRUtFTkdnd1VDMEYvUVFBZ1xcXG5BUnNoQmdzQ1FBSkFJQVpCQVUwTkFDQUxJUjRNQVFzQ1FDQWVSUTBBUVFFaERDQWVRUUZ4SVI5QkFDRUxBa0FnSGtFQlJnMEFJQjVCZm5cXFxuRWhIRUVBSVF0QkFTRU1JQVZCQ0dvaEFTQUZRWUFFYWlFR0EwQWdBU0FCS0FJQUlnMGdCaWdDQUVGL2Myb2lDQ0FNUVFGeGFpSUVOZ0lBXFxcbklBRkJCR29pRENBTUtBSUFJZzhnQmtFRWFpZ0NBRUYvYzJvaURDQUlJQTFKSUFRZ0NFbHlhaUlJTmdJQUlBd2dEMGtnQ0NBTVNYSWhEQ1xcXG5BR1FRaHFJUVlnQVVFSWFpRUJJQndnQzBFQ2FpSUxSdzBBQ3dzQ1FDQWZSUTBBSUFWQkNHb2dDMEVDZENJQmFpSUdJQVlvQWdBaUJpQVZcXFxuSUFGcUtBSUFRWDl6YWlJQklBeHFJZ2cyQWdBZ0FTQUdTU0FJSUFGSmNpRU1DeUFNUVFGeFJRMElDeUFGSUI0MkFxZ0JJQjFCQkhJaEhRXFxcbnNnSGlBWElCNGdGMHNiSWh4QktVOE5CeUFjUVFKMElRRUNRQUpBQTBBZ0FVVU5BVUYvSUJBZ0FXb29BZ0FpQmlBQlFYeHFJZ0VnQlVFSVxcXG5hbW9vQWdBaUNFY2dCaUFJU3hzaUJrVU5BQXdDQ3d0QmYwRUFJQUViSVFZTEFrQUNRQ0FHUVFGTkRRQWdIaUVjREFFTEFrQWdIRVVOQUVcXFxuRUJJUXdnSEVFQmNTRWZRUUFoQ3dKQUlCeEJBVVlOQUNBY1FYNXhJUjVCQUNFTFFRRWhEQ0FGUVFocUlRRWdCVUhZQW1vaEJnTkFJQUVnXFxcbkFTZ0NBQ0lOSUFZb0FnQkJmM05xSWdnZ0RFRUJjV29pQkRZQ0FDQUJRUVJxSWd3Z0RDZ0NBQ0lQSUFaQkJHb29BZ0JCZjNOcUlnd2dDQ1xcXG5BTlNTQUVJQWhKY21vaUNEWUNBQ0FNSUE5SklBZ2dERWx5SVF3Z0JrRUlhaUVHSUFGQkNHb2hBU0FlSUF0QkFtb2lDMGNOQUFzTEFrQWdcXFxuSDBVTkFDQUZRUWhxSUF0QkFuUWlBV29pQmlBR0tBSUFJZ1lnRkNBQmFpZ0NBRUYvYzJvaUFTQU1haUlJTmdJQUlBRWdCa2tnQ0NBQlNYXFxcbkloREFzZ0RFRUJjVVVOQ2dzZ0JTQWNOZ0tvQVNBZFFRSnFJUjBMSUJ3Z0NTQWNJQWxMR3lJTFFTbFBEUWtnQzBFQ2RDRUJBa0FDUUFOQVxcXG5JQUZGRFFGQmZ5QU9JQUZxS0FJQUlnWWdBVUY4YWlJQklBVkJDR3BxS0FJQUlnaEhJQVlnQ0VzYklnWkZEUUFNQWdzTFFYOUJBQ0FCR3lcXFxuRUdDd0pBQWtBZ0JrRUJUUTBBSUJ3aEN3d0JDd0pBSUF0RkRRQkJBU0VNSUF0QkFYRWhIMEVBSVEwQ1FDQUxRUUZHRFFBZ0MwRitjU0VjXFxcblFRQWhEVUVCSVF3Z0JVRUlhaUVCSUFWQnNBRnFJUVlEUUNBQklBRW9BZ0FpQkNBR0tBSUFRWDl6YWlJSUlBeEJBWEZxSWc4MkFnQWdBVVxcXG5FRWFpSU1JQXdvQWdBaUhpQUdRUVJxS0FJQVFYOXphaUlNSUFnZ0JFa2dEeUFJU1hKcUlnZzJBZ0FnRENBZVNTQUlJQXhKY2lFTUlBWkJcXFxuQ0dvaEJpQUJRUWhxSVFFZ0hDQU5RUUpxSWcxSERRQUxDd0pBSUI5RkRRQWdCVUVJYWlBTlFRSjBJZ0ZxSWdZZ0JpZ0NBQ0lHSUFWQnNBXFxcbkZxSUFGcUtBSUFRWDl6YWlJQklBeHFJZ2cyQWdBZ0FTQUdTU0FJSUFGSmNpRU1DeUFNUVFGeFJRME1DeUFGSUFzMkFxZ0JJQjFCQVdvaFxcXG5IUXNDUUNBYklBTkdEUUFnQWlBYmFpQWRRVEJxT2dBQUlBdEJLVThOREFKQUlBc05BRUVBSVFzTUR3c2dDMEYvYWtILy8vLy9BM0VpQVVcXFxuRUJhaUlJUVFOeElRWUNRQ0FCUVFOUERRQWdCVUVJYWlFQlFnQWhJQXdPQ3lBSVFmei8vLzhIY1NFSUlBVkJDR29oQVVJQUlTQURRQ0FCXFxcbklBRTFBZ0JDQ240Z0lId2lJRDRDQUNBQlFRUnFJZ3dnRERVQ0FFSUtmaUFnUWlDSWZDSWdQZ0lBSUFGQkNHb2lEQ0FNTlFJQVFncCtJQ1xcXG5CQ0lJaDhJaUErQWdBZ0FVRU1haUlNSUF3MUFnQkNDbjRnSUVJZ2lId2lJRDRDQUNBZ1FpQ0lJU0FnQVVFUWFpRUJJQWhCZkdvaUNBMEFcXFxuREE0TEN5QURJQU5CaElmT0FCQ0JCUUFMSUF0QktFR291TTRBRUlNRkFBc2dIRUVvUWFpNHpnQVFnd1VBQ3lBYklBcEI5SWJPQUJDRUJRXFxcbkFMSUFvZ0EwSDBoczRBRUlNRkFBdEJ1TGpPQUVFYVFhaTR6Z0FRZ3djQUN5QWVRU2hCcUxqT0FCQ0RCUUFMUWJpNHpnQkJHa0dvdU00QVxcXG5FSU1IQUFzZ0hFRW9RYWk0emdBUWd3VUFDMEc0dU00QVFScEJxTGpPQUJDREJ3QUxJQXRCS0VHb3VNNEFFSU1GQUF0QnVMak9BRUVhUWFcXFxuaTR6Z0FRZ3djQUN5QUxRU2hCcUxqT0FCQ0RCUUFMQWtBZ0JrVU5BQU5BSUFFZ0FUVUNBRUlLZmlBZ2ZDSWdQZ0lBSUFGQkJHb2hBU0FnXFxcblFpQ0lJU0FnQmtGL2FpSUdEUUFMQ3lBZ3B5SUJSUTBBSUF0Qkowc05BaUFGUVFocUlBdEJBblJxSUFFMkFnQWdDMEVCYWlFTEN5QUZJQVxcXG5zMkFxZ0JJQm9nQ2tjTkFBdEJBU0VMREFJTElBdEJLRUdvdU00QUVJRUZBQXNnRFVFb1FhaTR6Z0FRZ1FVQUN3SkFBa0FDUUFKQUFrQUNcXFxuUUFKQUFrQWdDVUVwVHcwQUFrQWdDUTBBUVFBaENRd0RDeUFKUVg5cVFmLy8vLzhEY1NJQlFRRnFJZ2hCQTNFaEJnSkFJQUZCQTA4TkFDXFxcbkFGUWJBQmFpRUJRZ0FoSUF3Q0N5QUlRZnovLy84SGNTRUlJQVZCc0FGcUlRRkNBQ0VnQTBBZ0FTQUJOUUlBUWdWK0lDQjhJaUErQWdBZ1xcXG5BVUVFYWlJTUlBdzFBZ0JDQlg0Z0lFSWdpSHdpSUQ0Q0FDQUJRUWhxSWd3Z0REVUNBRUlGZmlBZ1FpQ0lmQ0lnUGdJQUlBRkJER29pRENcXFxuQU1OUUlBUWdWK0lDQkNJSWg4SWlBK0FnQWdJRUlnaUNFZ0lBRkJFR29oQVNBSVFYeHFJZ2dOQUF3Q0N3c2dDVUVvUWFpNHpnQVFnd1VBXFxcbkN3SkFJQVpGRFFBRFFDQUJJQUUxQWdCQ0JYNGdJSHdpSUQ0Q0FDQUJRUVJxSVFFZ0lFSWdpQ0VnSUFaQmYyb2lCZzBBQ3dzZ0lLY2lBVVxcXG5VTkFDQUpRU2RMRFFFZ0JVR3dBV29nQ1VFQ2RHb2dBVFlDQUNBSlFRRnFJUWtMSUFVZ0NUWUMwQUlnQlNnQ3FBRWlBU0FKSUFFZ0NVc2JcXFxuSWdGQktVOE5BU0FCUVFKMElRRUNRQUpBQTBBZ0FVVU5BVUYvSUFGQmZHb2lBU0FGUWJBQmFtb29BZ0FpQmlBQklBVkJDR3BxS0FJQUlnXFxcbmhISUFZZ0NFc2JJZ1pGRFFBTUFnc0xRWDlCQUNBQkd5RUdDd0pBQWtBZ0JrSC9BWEVPQWdBQkJnc2dDMFVOQlNBS1FYOXFJZ0VnQTA4TlxcXG5BeUFDSUFGcUxRQUFRUUZ4UlEwRkN5QUtJQU5MRFFNZ0FpQUthaUVNUVFBaEFTQUNJUVlDUUFOQUlBb2dBVVlOQVNBQlFRRnFJUUVnQmtcXFxuRi9haUlHSUFwcUlnZ3RBQUJCT1VZTkFBc2dDQ0FJTFFBQVFRRnFPZ0FBSUFvZ0FXdEJBV29nQ2s4TkJTQUlRUUZxUVRBZ0FVRi9haENoXFxcbkRSb01CUXNDUUFKQUlBb05BRUV4SVFFTUFRc2dBa0V4T2dBQVFUQWhBU0FLUVFGR0RRQkJNQ0VCSUFKQkFXcEJNQ0FLUVg5cUVLRU5HZ1xcXG5zZ0IwRUJhc0VpQnlBVFRBMEVJQW9nQTA4TkJDQU1JQUU2QUFBZ0NrRUJhaUVLREFRTElBbEJLRUdvdU00QUVJRUZBQXNnQVVFb1FhaTRcXFxuemdBUWd3VUFDeUFCSUFOQmxJZk9BQkNCQlFBTElBb2dBMEdraDg0QUVJTUZBQXNnQ2lBRFRRMEFJQW9nQTBHMGg4NEFFSU1GQUFzZ0FDXFxcbkFIT3dFSUlBQWdDallDQkNBQUlBSTJBZ0FnQlVIUUJtb2tBQXZBSUFJUWZ3RitJd0JCRUdzaUFTUUFBa0FDUUFKQUFrQUNRQUpBQWtBQ1xcXG5RQUpBQWtBZ0FFSDFBVWtOQUJDS0RpSUNRUWdRbkFzaEEwRVVRUWdRbkFzaEJFRVFRUWdRbkFzaEJVRUFJUVpCQUVFUVFRZ1FuQXRCQW5cXFxuUnJJZ2NnQWlBRklBTWdCR3BxYTBINC8zdHFRWGR4UVgxcUlnSWdCeUFDU1JzZ0FFME5DU0FBUVFScVFRZ1FuQXNoQWtFQUtBTDhxazlGXFxcbkRRaEJBQ0VJQWtBZ0FrR0FBa2tOQUVFZklRZ2dBa0gvLy84SFN3MEFJQUpCQmlBQ1FRaDJaeUlBYTNaQkFYRWdBRUVCZEd0QlBtb2hDQVxcXG50QkFDQUNheUVHSUFoQkFuUkI0S2ZQQUdvb0FnQWlBdzBCUVFBaEFFRUFJUVFNQWd0QkVDQUFRUVJxUVJCQkNCQ2NDMEY3YWlBQVN4dEJcXFxuQ0JDY0N5RUNBa0FDUUFKQUFrQkJBQ2dDK0twUElnUWdBa0VEZGlJR2RpSUFRUU54RFFBZ0FrRUFLQUtBcTA5TkRRc2dBQTBCUVFBb0F2XFxcbnlxVHlJQVJRMExJQUFRMHd4b1FRSjBRZUNuendCcUtBSUFJZ01RaXc0UWxRMGdBbXNoQmdKQUlBTVE2Z29pQUVVTkFBTkFJQUFRaXc0UVxcXG5sUTBnQW1zaUJDQUdJQVFnQmtraUJCc2hCaUFBSUFNZ0JCc2hBeUFBRU9vS0lnQU5BQXNMSUFNUWl3NGlBQ0FDRU00TklRUWdBeEQyQVNcXFxuQUdRUkJCQ0JDY0Mwa05BeUFFRUlzT0lRUWdBQ0FDRU5VTUlBUWdCaEQ5Q2tFQUtBS0FxMDhpQncwQ0RBa0xBa0FDUUNBQVFYOXpRUUZ4XFxcbklBWnFJZ0pCQTNRaUEwSDRxTThBYWlnQ0FDSUFRUWhxS0FJQUlnWWdBMEh3cU04QWFpSURSZzBBSUFZZ0F6WUNEQ0FESUFZMkFnZ01BUVxcXG50QkFDQUVRWDRnQW5keE5nTDRxazhMSUFBZ0FrRURkQkN1Q2lBQUVOQU5JUVlNQ3dzQ1FBSkFRUUVnQmtFZmNTSUdkQkRJQ3lBQUlBWjBcXFxuY1JEVERHZ2lCa0VEZENJRVFmaW96d0JxS0FJQUlnQkJDR29vQWdBaUF5QUVRZkNvendCcUlnUkdEUUFnQXlBRU5nSU1JQVFnQXpZQ0NBXFxcbndCQzBFQVFRQW9BdmlxVDBGK0lBWjNjVFlDK0twUEN5QUFJQUlRMVF3Z0FDQUNFTTROSWdRZ0JrRURkQ0FDYXlJRkVQMEtRUUFvQW9DclxcXG5UeUlEUlEwR0lBTkJlSEZCOEtqUEFHb2hCa0VBS0FLSXEwOGhBZ0pBQWtCQkFDZ0MrS3BQSWdkQkFTQURRUU4yZENJRGNVVU5BQ0FHS0FcXFxuSUlJUU1NQVF0QkFDQUhJQU55TmdMNHFrOGdCaUVEQ3lBR0lBSTJBZ2dnQXlBQ05nSU1JQUlnQmpZQ0RDQUNJQU0yQWdnTUJnc2dCMEY0XFxcbmNVSHdxTThBYWlFRlFRQW9Bb2lyVHlFREFrQUNRRUVBS0FMNHFrOGlDRUVCSUFkQkEzWjBJZ2R4UlEwQUlBVW9BZ2doQnd3QkMwRUFJQVxcXG5nZ0IzSTJBdmlxVHlBRklRY0xJQVVnQXpZQ0NDQUhJQU0yQWd3Z0F5QUZOZ0lNSUFNZ0J6WUNDQXdHQ3lBQUlBWWdBbW9RcmdvTUJnc2dcXFxuQWlBSUVQd0tkQ0VGUVFBaEFFRUFJUVFEUUFKQUlBTVFpdzRRbFEwaUJ5QUNTUTBBSUFjZ0Ftc2lCeUFHVHcwQUlBY2hCaUFESVFRZ0J3XFxcbjBBUVFBaEJpQURJUVFnQXlFQURBTUxJQU5CRkdvb0FnQWlCeUFBSUFjZ0F5QUZRUjEyUVFSeGFrRVFhaWdDQUNJRFJ4c2dBQ0FIR3lFQVxcXG5JQVZCQVhRaEJTQUREUUFMQ3dKQUlBQWdCSElOQUVFQUlRUkJBU0FJZEJESUMwRUFLQUw4cWs5eElnQkZEUVlnQUJEVERHaEJBblJCNEtcXFxuZlBBR29vQWdBaEFBc2dBRVVOQVFzRFFDQUFJQVFnQUJDTERoQ1ZEU0lESUFKUElBTWdBbXNpQXlBR1NYRWlCUnNoQkNBRElBWWdCUnNoXFxcbkJpQUFFT29LSWdBTkFBc0xJQVJGRFFNQ1FFRUFLQUtBcTA4aUFDQUNTUTBBSUFZZ0FDQUNhMDhOQkFzZ0JCQ0xEaUlBSUFJUXpnMGhBeVxcXG5BRUVQWUJBa0FDUUNBR1FSQkJDQkNjQzBrTkFDQUFJQUlRMVF3Z0F5QUdFUDBLQWtBZ0JrR0FBa2tOQUNBRElBWVErZ0VNQWdzZ0JrRjRcXFxuY1VId3FNOEFhaUVFQWtBQ1FFRUFLQUw0cWs4aUJVRUJJQVpCQTNaMElnWnhSUTBBSUFRb0FnZ2hCZ3dCQzBFQUlBVWdCbkkyQXZpcVR5XFxcbkFFSVFZTElBUWdBellDQ0NBR0lBTTJBZ3dnQXlBRU5nSU1JQU1nQmpZQ0NBd0JDeUFBSUFZZ0Ftb1FyZ29MSUFBUTBBMGlCa1VOQXd3RVxcXG5DMEVBSUFRMkFvaXJUMEVBSUFVMkFvQ3JUeUFBRU5BTklRWU1Bd3RCQUNBRU5nS0lxMDlCQUNBR05nS0FxMDhMSUFBUTBBMGlCZzBCQ3dcXFxuSkFBa0FDUUFKQUFrQUNRQUpBQWtCQkFDZ0NnS3RQSWdZZ0FrOE5BRUVBS0FLRXEwOGlBQ0FDU3cwQ0lBRkI0S2ZQQUNBQ0VJb09JZ0JyXFxcbklBQkJDQkNjQzJwQkZFRUlFSndMYWtFUVFRZ1FuQXRxUVFocVFZQ0FCQkNjQ3hEYkJ5QUJLQUlBSWdZTkFVRUFJUVlNQ0F0QkFDZ0NpS1xcXG50UElRQUNRQ0FHSUFKcklnWkJFRUVJRUp3TFR3MEFRUUJCQURZQ2lLdFBRUUFvQW9DclR5RUNRUUJCQURZQ2dLdFBJQUFnQWhDdUNpQUFcXFxuRU5BTklRWU1DQXNnQUNBQ0VNNE5JUU5CQUNBR05nS0FxMDlCQUNBRE5nS0lxMDhnQXlBR0VQMEtJQUFnQWhEVkRDQUFFTkFOSVFZTUJ3XFxcbnNnQVNnQ0NDRUlRUUJCQUNnQ2tLdFBJQUVvQWdRaUJXb2lBRFlDa0t0UFFRQkJBQ2dDbEt0UElnTWdBQ0FESUFCTEd6WUNsS3RQQWtBQ1xcXG5RQUpBQWtCQkFDZ0NqS3RQUlEwQVFlQ296d0FoQUFOQUlBWWdBQkRXREVZTkFpQUFLQUlJSWdBTkFBd0RDd3RCQUNnQ25LdFBJZ0JGRFFcXFxuVWdCaUFBU1EwRkRBY0xJQUFRbHcwTkFDQUFFSmdOSUFoSERRQWdBRUVBS0FLTXEwOFE0UWtOQVF0QkFFRUFLQUtjcTA4aUFDQUdJQVlnXFxcbkFFc2JOZ0tjcTA4Z0JpQUZhaUVEUWVDb3p3QWhBQUpBQWtBQ1FBTkFJQUFvQWdBZ0EwWU5BU0FBS0FJSUlnQU5BQXdDQ3dzZ0FCQ1hEUVxcXG4wQUlBQVFtQTBnQ0VZTkFRdEJBQ2dDakt0UElRTkI0S2pQQUNFQUFrQURRQUpBSUFBb0FnQWdBMHNOQUNBQUVOWU1JQU5MRFFJTElBQW9cXFxuQWdnaUFBMEFDMEVBSVFBTElBQVExZ3dpQkVFVVFRZ1FuQXNpQ1d0QmFXb2hBQ0FESUFBZ0FCRFFEU0lIUVFnUW5Bc2dCMnRxSWdBZ0FDXFxcbkFEUVJCQkNCQ2NDMnBKR3lJSEVOQU5JUW9nQnlBSkVNNE5JUUFRaWc0aUMwRUlFSndMSVF4QkZFRUlFSndMSVExQkVFRUlFSndMSVE1QlxcXG5BQ0FHSUFZUTBBMGlEMEVJRUp3TElBOXJJaEFRemcwaUR6WUNqS3RQUVFBZ0N5QUZhaUFPSUF3Z0RXcHFJQkJxYXlJTE5nS0VxMDhnRHlcXFxuQUxRUUZ5TmdJRUVJb09JZ3hCQ0JDY0N5RU5RUlJCQ0JDY0N5RU9RUkJCQ0JDY0N5RVFJQThnQ3hET0RTQVFJQTRnRFNBTWEycHFOZ0lFXFxcblFRQkJnSUNBQVRZQ21LdFBJQWNnQ1JEVkRFRUFLUUxncUU4aEVTQUtRUWhxUVFBcEF1aW9UemNDQUNBS0lCRTNBZ0JCQUNBSU5nTHNxRVxcXG45QkFDQUZOZ0xrcUU5QkFDQUdOZ0xncUU5QkFDQUtOZ0xvcUU4RFFDQUFRUVFRemcwaEJpQUFFSWtPTmdJRUlBWWhBQ0FHUVFScUlBUkpcXFxuRFFBTElBY2dBMFlOQnlBSElBTnJJUUFnQXlBQUlBTWdBQkRPRFJEL0NRSkFJQUJCZ0FKSkRRQWdBeUFBRVBvQkRBZ0xJQUJCZUhGQjhLXFxcbmpQQUdvaEJnSkFBa0JCQUNnQytLcFBJZ1JCQVNBQVFRTjJkQ0lBY1VVTkFDQUdLQUlJSVFBTUFRdEJBQ0FFSUFCeU5nTDRxazhnQmlFQVxcXG5DeUFHSUFNMkFnZ2dBQ0FETmdJTUlBTWdCallDRENBRElBQTJBZ2dNQndzZ0FDZ0NBQ0VFSUFBZ0JqWUNBQ0FBSUFBb0FnUWdCV28yQWdcXFxuUWdCaERRRFNJQVFRZ1FuQXNoQXlBRUVOQU5JZ1ZCQ0JDY0N5RUhJQVlnQXlBQWEyb2lCaUFDRU00TklRTWdCaUFDRU5VTUlBUWdCeUFGXFxcbmEyb2lBQ0FDSUFacWF5RUNBa0FnQUVFQUtBS01xMDlHRFFBZ0FFRUFLQUtJcTA5R0RRTWdBQkNtREEwRkFrQUNRQ0FBRUpVTklnUkJnQVxcXG5KSkRRQWdBQkQyQVF3QkN3SkFJQUJCREdvb0FnQWlCU0FBUVFocUtBSUFJZ2RHRFFBZ0J5QUZOZ0lNSUFVZ0J6WUNDQXdCQzBFQVFRQW9cXFxuQXZpcVQwRitJQVJCQTNaM2NUWUMrS3BQQ3lBRUlBSnFJUUlnQUNBRUVNNE5JUUFNQlF0QkFDQUROZ0tNcTA5QkFFRUFLQUtFcTA4Z0FtXFxcbm9pQURZQ2hLdFBJQU1nQUVFQmNqWUNCQ0FHRU5BTklRWU1Cd3NnQUNBQUtBSUVJQVZxTmdJRVFRQW9Bb3lyVDBFQUtBS0VxMDhnQldvUVxcXG5rZ1VNQlF0QkFDQUFJQUpySWdZMkFvU3JUMEVBUVFBb0FveXJUeUlBSUFJUXpnMGlBellDakt0UElBTWdCa0VCY2pZQ0JDQUFJQUlRMVFcXFxud2dBQkRRRFNFR0RBVUxRUUFnQXpZQ2lLdFBRUUJCQUNnQ2dLdFBJQUpxSWdBMkFvQ3JUeUFESUFBUS9Rb2dCaERRRFNFR0RBUUxRUUFnXFxcbkJqWUNuS3RQREFFTElBTWdBaUFBRVA4SkFrQWdBa0dBQWtrTkFDQURJQUlRK2dFZ0JoRFFEU0VHREFNTElBSkJlSEZCOEtqUEFHb2hBQVxcXG5KQUFrQkJBQ2dDK0twUElnUkJBU0FDUVFOMmRDSUNjVVVOQUNBQUtBSUlJUUlNQVF0QkFDQUVJQUp5TmdMNHFrOGdBQ0VDQ3lBQUlBTTJcXFxuQWdnZ0FpQUROZ0lNSUFNZ0FEWUNEQ0FESUFJMkFnZ2dCaERRRFNFR0RBSUxRUUJCL3g4MkFxQ3JUMEVBSUFnMkF1eW9UMEVBSUFVMkF1XFxcblNvVDBFQUlBWTJBdUNvVDBFQVFmQ296d0EyQXZ5b1QwRUFRZmlvendBMkFvU3BUMEVBUWZDb3p3QTJBdmlvVDBFQVFZQ3B6d0EyQW95cFxcXG5UMEVBUWZpb3p3QTJBb0NwVDBFQVFZaXB6d0EyQXBTcFQwRUFRWUNwendBMkFvaXBUMEVBUVpDcHp3QTJBcHlwVDBFQVFZaXB6d0EyQXBcXFxuQ3BUMEVBUVppcHp3QTJBcVNwVDBFQVFaQ3B6d0EyQXBpcFQwRUFRYUNwendBMkFxeXBUMEVBUVppcHp3QTJBcUNwVDBFQVFhaXB6d0EyXFxcbkFyU3BUMEVBUWFDcHp3QTJBcWlwVDBFQVFiQ3B6d0EyQXJ5cFQwRUFRYWlwendBMkFyQ3BUMEVBUWJDcHp3QTJBcmlwVDBFQVFiaXB6d1xcXG5BMkFzU3BUMEVBUWJpcHp3QTJBc0NwVDBFQVFjQ3B6d0EyQXN5cFQwRUFRY0NwendBMkFzaXBUMEVBUWNpcHp3QTJBdFNwVDBFQVFjaXBcXFxuendBMkF0Q3BUMEVBUWRDcHp3QTJBdHlwVDBFQVFkQ3B6d0EyQXRpcFQwRUFRZGlwendBMkF1U3BUMEVBUWRpcHp3QTJBdUNwVDBFQVFlXFxcbkNwendBMkF1eXBUMEVBUWVDcHp3QTJBdWlwVDBFQVFlaXB6d0EyQXZTcFQwRUFRZWlwendBMkF2Q3BUMEVBUWZDcHp3QTJBdnlwVDBFQVxcXG5RZmlwendBMkFvU3FUMEVBUWZDcHp3QTJBdmlwVDBFQVFZQ3F6d0EyQW95cVQwRUFRZmlwendBMkFvQ3FUMEVBUVlpcXp3QTJBcFNxVDBcXFxuRUFRWUNxendBMkFvaXFUMEVBUVpDcXp3QTJBcHlxVDBFQVFZaXF6d0EyQXBDcVQwRUFRWmlxendBMkFxU3FUMEVBUVpDcXp3QTJBcGlxXFxcblQwRUFRYUNxendBMkFxeXFUMEVBUVppcXp3QTJBcUNxVDBFQVFhaXF6d0EyQXJTcVQwRUFRYUNxendBMkFxaXFUMEVBUWJDcXp3QTJBclxcXG55cVQwRUFRYWlxendBMkFyQ3FUMEVBUWJpcXp3QTJBc1NxVDBFQVFiQ3F6d0EyQXJpcVQwRUFRY0NxendBMkFzeXFUMEVBUWJpcXp3QTJcXFxuQXNDcVQwRUFRY2lxendBMkF0U3FUMEVBUWNDcXp3QTJBc2lxVDBFQVFkQ3F6d0EyQXR5cVQwRUFRY2lxendBMkF0Q3FUMEVBUWRpcXp3XFxcbkEyQXVTcVQwRUFRZENxendBMkF0aXFUMEVBUWVDcXp3QTJBdXlxVDBFQVFkaXF6d0EyQXVDcVQwRUFRZWlxendBMkF2U3FUMEVBUWVDcVxcXG56d0EyQXVpcVQwRUFRZWlxendBMkF2Q3FUeENLRGlJRFFRZ1FuQXNoQkVFVVFRZ1FuQXNoQjBFUVFRZ1FuQXNoQ0VFQUlBWWdCaERRRFNcXFxuSUFRUWdRbkFzZ0FHc2lDaERPRFNJQU5nS01xMDlCQUNBRElBVnFJQWdnQkNBSGFtb2dDbXBySWdZMkFvU3JUeUFBSUFaQkFYSTJBZ1FRXFxcbmlnNGlBMEVJRUp3TElRUkJGRUVJRUp3TElRVkJFRUVJRUp3TElRY2dBQ0FHRU00TklBY2dCU0FFSUFOcmFtbzJBZ1JCQUVHQWdJQUJOZ1xcXG5LWXEwOExRUUFoQmtFQUtBS0VxMDhpQUNBQ1RRMEFRUUFnQUNBQ2F5SUdOZ0tFcTA5QkFFRUFLQUtNcTA4aUFDQUNFTTROSWdNMkFveXJcXFxuVHlBRElBWkJBWEkyQWdRZ0FDQUNFTlVNSUFBUTBBMGhCZ3NnQVVFUWFpUUFJQVlMM3hjQ0NIOENmaU1BUVpBQ2F5SUdKQUFnQmlBRE5nXFxcbkpzSUFZZ0FqWUNhQ0FHUWFBQmFpQUdRZWdBYWhER0NDQUdLQUtnQVNFSElBWWdCa0dvQVdvb0FnQWlDRFlDZENBR0lBWW9BcVFCSWdrMlxcXG5BbkFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFkQjNBQkdEUUFnQjBFdlJ3MEJDeUFCS0FJWUlRb0NRQ0FIUWRcXFxud0FSdzBBSUFwRkRRQWdDa0VBSUFGQkhHb29BZ0FvQWhRUkJRQUxJQVpCb0FGcUlBWkI4QUJxRU1ZSUlBWkJxQUZxS0FJQUlRc2dCaWdDXFxcbnBBRWhEQUpBQWtBZ0JpZ0NvQUVpRFVFdlJnMEFJQTFCM0FCSERRRUxBa0FnRFVIY0FFY05BQ0FLUlEwQUlBcEJBQ0FCUVJ4cUtBSUFLQVxcXG5JVUVRVUFDeUFCUVl5S3dRQkJCeENURENBR1FhQUJhaUFNSUFzUWl3RWdCaTBBb0FFaEJ3SkFJQVl0QUt3QlFRSkdEUUFnQmtISUFXcEJcXFxuQ0dvaUJTQUdRYUFCYWtFSWFpZ0FBRFlBQUNBR0lBWXBBS0VCTndESkFTQUdJQWM2QU1nQklBWW9BckFCSVFNZ0JpZ0N0QUVoQWlBRktBXFxcbklBSWdkRkRRc2dCa0dnQVdvZ0JpZ0N5QUVnQnhBK0FrQWdCaTBBb0FFaUIwRURSZzBBSUFaQjhBRnFRUXBxSUFaQm9BRnFRUXBxS1FFQVxcXG5Od0VBSUFaQjhBRnFRUkpxSUFaQm9BRnFRUkpxTHdFQU93RUFJQVlnQmlrQm9nRTNBZklCSUFZZ0JpMEFvUUU2QVBFQklBWWdCem9BOEFcXFxuRUNRQUpBSUFjTkFDQUdJQVpCOEFGcVFRUnlOZ0tnQVNBR1FhQUJhaENYQ3cwQkN5QUdRZmdBYWtFUWFpSUhJQVpCOEFGcVFSQnFLQUlBXFxcbk5nSUFJQVpCK0FCcVFRaHFJZ1VnQmtId0FXcEJDR29wQXdBM0F3QWdCaUFHS1FQd0FUY0RlQ0FHUWF3QmFrSUJOd0lBUVFFaENpQUdRUVxcXG5FMkFxUUJJQVpCb0lmQkFEWUNvQUVnQmtIWUFUWUNqQUlnQmlBR1FZZ0NhallDcUFFZ0JpQUdRZmdBYWpZQ2lBSWdBU0FHUWFBQmFoREhcXFxuQlVIa2k4RUFFT1VJSUFaQm9BRnFRUkJxSUFjb0FnQTJBZ0FnQmtHZ0FXcEJDR29nQlNrREFEY0RBQ0FHSUFZcEEzZzNBNkFCSUFaQjJBXFxcbkZxSUFaQm9BRnFFSWNHSUFZdEFOZ0JJUWNNRGdzZ0JrSHdBV29RdmdzTURBc2dCaTBBb1FFaEJ5QUdRY2dCYWhDS0RRc2dBRUVDTmdJQVxcXG5JQUFnQnpvQUJBd01DMEVISVFvZ0FVR01pc0VBUVFjUWt3eEJBQ0VMSUFaQjhBQnFFSTBESVEwZ0JVVU5DQ0FORFFnZ0JrR2dBV29nQlJcXFxuQ3lCaUFHS0FLZ0FVR0FnTVFBUmcwQklBWkIrQUJxSUFaQm9BRnFRU2dRcEEwYUlBWkIwQUJxSUFaQitBQnFFSzBESUFaQnlBQnFJQVlvXFxcbkFsQWdCaWdDVkVHa2lzRUFFS01LSUFZb0FrZ2lEU0FHS0FKTUlnd1FrQWdOQWlBR1FjQUFhaUFGRUtjR0lBWW9Ba0FpRFVVTkNDQUJJQVxcXG4wZ0JpZ0NSQkNURENBR1FmZ0JhaUFGUVQxcUtRQUFOd01BSUFZZ0JVRTFhaWtBQURjRDhBRWdCUzBBTkNFTElBRW9BZ2doQ2d3SUN3SkFcXFxuQWtBQ1FBSkFBa0FDUUNBRlJRMEFJQWRCSTBZTkF5QUhRVDlHRFFJZ0IwR0FnTVFBUncwQklBVW9BZ2dOQkNBRlFSeHFLQUlBSVFjZ0JTXFxcbmdDRkNFRERBVUxJQUZCdElyQkFFRUlFSk1NSUFaQkFEb0FvQUVnQmtFSWFpQUJRUUFnQmtHZ0FXcEJCeUFDSUFNUVFTQUdRYUFCYWlBQlxcXG5RUUJCQkNBR0tBSUlJQVlvQWd3UXJBSWdCaWdDb0FFaUIwRUNSZzBMSUFZcEFxUUJJUTRnQmlnQ3JBRWhCU0FBUVFBN0FSQWdBQ0FGTmdcXFxuSU1JQUFnRGpjQ0JDQUFJQWMyQWdBZ0FFRUFPZ0EwSUFCQkJ6WUNNQ0FBUW9lQWdJRHdBRGNDS0NBQVFvU0FnSUR3QURjQ0lDQUFJQUVwXFxcbkFnQTNBaFFnQUVFY2FpQUJRUWhxS0FJQU5nSUFEQkFMQWtBZ0JrSG9BR29RalFNTkFBSkFBa0FDUUFKQUlBVW9BZ0FOQUNBRktBSUlSUVxcXG4wQ0lBVkJER29oQnd3QkN5QUZRUVJxSVFjTElBWkJJR29nQlNBSEtBSUFFUDhHSUFZb0FpUWhCeUFHS0FJZ0lRb01BUXNnQlVFY2FpZ0NcXFxuQUNFSElBVW9BaFFoQ2dzZ0FTQUtJQWNRa3d3Z0FVRUFJQVVvQWpBaUJ4Q3pCaUFHUVFFNkFLQUJJQVpCR0dvZ0FVRUFJQVpCb0FGcUlBXFxcbmNnQWlBREVFRWdCaWdDSENFRElBWW9BaGdoQWlBR1FhQUJhaUFCUVNRUXBBMGFJQVVvQWl3aEFTQUZLQUlvSVFvZ0JTZ0NKQ0VOSUFVb1xcXG5BaUFoQkNBR1FZZ0JhaUFGUWNRQWFpMEFBRG9BQUNBR1FZQUJhaUFGUVR4cUtRQUFOd01BSUFZZ0JTa0FORGNEZUNBQUlBWkJvQUZxUVFcXFxuQWdCQ0FOSUFvZ0FTQUdRZmdBYWlBRkx3RVFJQVZCRW1vdkFRQWdCeUFDSUFNUTlRSU1FQXNnQVVHMGlzRUFRUWdRa3d3Z0JrRUFPZ0NnXFxcbkFTQUdRUkJxSUFGQkFDQUdRYUFCYWtFSElBSWdBeEJCSUFaQm9BRnFJQUZCQUVFRUlBWW9BaEFnQmlnQ0ZCQ3NBaUFHS0FLZ0FTSUhRUVxcXG5KR0RRb2dCaWtDcEFFaERpQUdLQUtzQVNFRklBQkJBRHNCRUNBQUlBVTJBZ3dnQUNBT053SUVJQUFnQnpZQ0FDQUFRUUE2QURRZ0FFRUhcXFxuTmdJd0lBQkNoNENBZ1BBQU53SW9JQUJDaElDQWdQQUFOd0lnSUFBZ0FTa0NBRGNDRkNBQVFSeHFJQUZCQ0dvb0FnQTJBZ0FNRHdzZ0JTXFxcbmdDQUVVTkJTQUZRUVJxSVFjTUJnc2dCa0dnQVdvZ0FVRWtFS1FOR2lBQUlBWkJvQUZxSUFVZ0FpQURFSjhDREEwTElBWkJLR29nQlVFVVxcXG5haUFGUVF4cUtBSUFRYnlLd1FBUWhRWWdCaWdDTENFSElBWW9BaWdoQXdzZ0FTQURJQWNRa3d3Z0FFRUFOZ0lJSUFBZ0JTa0NORGNDTkNcXFxuQUFRVHhxSUFWQlBHb3BBZ0EzQWdBZ0FFSEVBR29nQlVIRUFHb3RBQUE2QUFBZ0FDQUZLQUlRTmdJUUlBQWdCU2tDQURjQ0FDQUFJQUVwXFxcbkFnQTNBaFFnQUVFY2FpQUJRUWhxS0FJQU5nSUFJQVVwQWlBaERpQUZLUUlvSVE4Z0FDQUZLQUl3TmdJd0lBQWdEemNDS0NBQUlBNDNBaVxcXG5BTUN3dEJ3SUxCQUVFclFaU0t3UUFRZ3djQUN5QUJRUzhRM2dRZ0FTQU5JQXdRa3d3TUJRc2dCU2dDQ0VVTkFTQUZRUXhxSVFjTElBWkJcXFxuTUdvZ0JTQUhLQUlBRVA4R0lBWW9BalFoQnlBR0tBSXdJUW9NQVFzZ0JVRWNhaWdDQUNFSElBVW9BaFFoQ2dzZ0FTQUtJQWNRa3d3Z0JrXFxcbkdnQVdvZ0FTQUVJQVVvQWlBaUJ5QUNJQU1RckFJZ0JpZ0NvQUVpQTBFQ1JnMEFJQVlwQXFRQklRNGdBQ0FHS0FLc0FUWUNEQ0FBSUE0M1xcXG5BZ1FnQUNBRE5nSUFJQUFnQnpZQ0lDQUFJQVVwQWpRM0FqUWdBRUU4YWlBRlFUeHFLUUlBTndJQUlBQkJ4QUJxSUFWQnhBQnFMUUFBT2dcXFxuQUFJQUFnQlNnQ0VEWUNFQ0FBSUFFcEFnQTNBaFFnQUVFY2FpQUJRUWhxS0FJQU5nSUFJQUFnQlNrQ0pEY0NKQ0FBSUFVcEFpdzNBaXdNXFxcbkJRc2dCaTBBcEFFaEJ5QUFRUUkyQWdBZ0FDQUhPZ0FFREFNTEFrQUNRQ0FIUVM5R0RRQWdCMEUvUmcwQUlBZEIzQUJIRFFFTElBSWhDU1xcXG5BRElRZ0xJQVpCQURvQW9BRWdCa0U0YWlBQlFRQWdCa0dnQVdvZ0NpQUpJQWdRUVNBR1FhQUJhaUFCSUFSQkJDQUdLQUk0SUFZb0Fqd1FcXFxuckFJQ1FDQUdLQUtnQVNJSFFRSkdEUUFnQmlrQ3BBRWhEaUFHS0FLc0FTRUZJQUFnQmlrRDhBRTNBRFVnQUVFQU93RVFJQUFnQlRZQ0RDXFxcbkFBSUE0M0FnUWdBQ0FITmdJQUlBQWdDem9BTkNBQUlBbzJBakFnQUNBS05nSXNJQUJCQnpZQ0tDQUFRb1NBZ0lEd0FEY0NJQ0FBUVQxcVxcXG5JQVpCOEFGcVFRaHFLUU1BTndBQUlBQWdBU2tDQURjQ0ZDQUFRUnhxSUFGQkNHb29BZ0EyQWdBTUJBc2dCaTBBcEFFaEJ5QUFRUUkyQWdcXFxuQWdBQ0FIT2dBRURBSUxRUUFoQjBFQUlRb0xJQVpCK0FCcVFRaHFJQVpCNFFGcUtRQUFOd01BSUFZZ0Jpa0EyUUUzQTNnZ0JrSElBV29RXFxcbmlnMGdBU2dDQ0NFRklBWWdCMEgvQVhGQkFFYzZBUEFCQWtBQ1FDQUtEUUFnQVVFdkVONEVJQVpCNEFCcUlBRkJBQ0FHUWZBQmFpQUZJQVxcXG5NZ0FoQkJJQVlvQW1RaEF5QUdLQUpnSVFJTUFRc2dCa0hZQUdvZ0FVRUFJQVpCOEFGcUlBTWdBaER0QVNBR0tBSmNJUU1nQmlnQ1dDRUNcXFxuQ3dKQUFrQWdCaTBBOEFGRkRRQWdCU0VLREFFTFFRY2hDaUFHUWFBQmFpQUJRUWNnQlJEckFpQUdRYUFCYWhEeEJFRUFJUWNMSUFaQm9BXFxcbkZxSUFFZ0JFRUVJQUlnQXhDc0FnSkFJQVlvQXFBQklnVkJBa1lOQUNBR0tRS2tBU0VPSUFZb0Fxd0JJUU1nQUNBR0tRTjROd0ExSUFCQlxcXG5BRHNCRUNBQUlBTTJBZ3dnQUNBT053SUVJQUFnQlRZQ0FDQUFJQWM2QURRZ0FDQUtOZ0l3SUFBZ0NqWUNMQ0FBUVFjMkFpZ2dBRUtFZ0lcXFxuQ0E4QUEzQWlBZ0FFRTlhaUFHUWZnQWFrRUlhaWtEQURjQUFDQUFJQUVwQWdBM0FoUWdBRUVjYWlBQlFRaHFLQUlBTmdJQURBSUxJQVl0XFxcbkFLUUJJUWNnQUVFQ05nSUFJQUFnQnpvQUJBc2dBUkNLRFFzZ0JrR1FBbW9rQUF1ZEZnRU9meU1BUWNBQ2F5SUdKQUFnQkVFQU5nSUlJQVxcXG5aQktHcEJDR3BCQURZQ0FDQUdRVFJxUVFocUlBTkJCR290QUFBaUJ6b0FBQ0FHUWdBM0F5Z2dCaUFES0FBQU5nSTRJQVVvQWdnaENDQUdcXFxuUVpBQmFrRUFOZ0lBSUFaQmlBRnFJQUVnQW1vMkFnQWdCa0hBQUdwQnhBQnFJQUUyQWdBZ0JrR1VBV29nQmlrQ05EY0NBQ0FHUVp3QmFpXFxcbkFIT2dBQUlBWkJvQUZxUWdBM0F3QWdCa0dvQVdwQkFEb0FBQ0FHUVl3QmFpSUpJQVpCS0dvMkFnQWdCa0dBQW1wQkNtcENBRGNCQUNBR1xcXG5RZ0EzQVlJQ0lBWkIxZ0JxSUFaQmdBSnFRUWhxS1FFQU53RUFJQVpCM2dCcUlBWkJnQUpxUVJCcUx3RUFPd0VBSUFZZ0Jpa0JnQUkzQVVcXFxuNGdCa0dBQVdwQkFEWUNBQ0FHUWZ3QWFrRUFPZ0FBSUFaQitBQnFRUUEyQWdBZ0JrSDBBR3BCQURvQUFDQUdRZkFBYWtFQU5nSUFJQVpCXFxcbjdBQnFRUUE2QUFBZ0JrSG9BR3BCQURZQ0FDQUdRZVFBYWtFQU9nQUFJQVpCQURzQllDQUdRUUE3QVV3Z0JrRUFOZ0pBSUFaQkFEb0FyQVxcXG5FZ0JrR0FnTVFBTmdKSUlBUWdCa0hBQUdvUU5pQUdRUUEyQXJnQklBWkNCRGNEc0FFZ0F5MEFBQ0VLSUFaQmdBSnFJQVFvQWdBZ0JDZ0NcXFxuQ0JDWkJTQURRUUpxSVFzZ0JrR29BbXBCQW1vaERDQUdRY0FBYWtFQ2NpRU5JQVpCemdCcUlRNUJBQ0VDUVFBaEJ3SkFBMEFnQmtFZ2FpXFxcbkFHUVlBQ2FoQ1pBUUpBSUFZb0FpQWlCQTBBSUFaQkNHb2dCU0FJUVlDandRQVFvd2NnQmtHQUFtb2dCaWdDQ0NBR0tBSU1FSmtGSUFaQlxcXG53QUJxSUFaQmdBSnFRU2dRcEEwYUlBZEJBWEVoRHdOQUlBWWdCa0hBQUdvUW1RRWdCaWdDQUNJSFJRMERJQTlGRFFBZ0JpZ0NCQ0VFSUFcXFxuWWdCellDcUFJZ0JpQUhJQVJxSWhBMkFxd0NJQVpCcUFKcUVJVURJZ1JCZ0lERUFFWU5BQUpBQWtBZ0JCRGREVUgvQVhFaUJFVU5BQ0FFXFxcblFSRkdEUUFnQkVFSlJ3MEJBMEFDUUNBR1FhZ0NhaENGQXlJRVFZQ0F4QUJIRFFBZ0JpQVFOZ0xFQVNBR0lBYzJBc0FCQTBBZ0JrSEFBV1xcXG5vUTdBSWlCRUdBZ01RQVJnMEZJQVFRM1ExQi93RnhRUTFHRFFBTElBUVEzUTFCL3dGeFFRbEdEUVFnQkJEZERVSC9BWEZCQlVZTkJBd0RcXFxuQ3lBRUVOME5RZjhCY1NJRVFRNUxEUUpCQVNBRWRFSDR4UUZ4RFFBTUFnc0xJQVlnQmlrRHFBSTNBOEFCUVFBaEJVRUFJUVFEUUNBRUlRXFxcbklDUUNBR1FjQUJhaENGQXlJQlFZQ0F4QUJIRFFBZ0JpQVFOZ0xFQVNBR0lBYzJBc0FCQTBBZ0JrSEFBV29RN0FJaUJFR0FnTVFBUmcwRFxcXG5JQVFRM1ExQi93RnhRUTFHRFFBTElBUVEzUTFCL3dGeElnUkJFVXNOQWtFQklBUjBRYU9BQ0hGRkRRSWdCU0FDY1VFQmNVVU5Bd3dDQzBcXFxuRUJJUVFnQVJEZERVSC9BWEVpQVVFRlJnMEFJQUZCRVVzTkFTQUJRUUZHSUFWeUlRVWdBaUVFUVFFZ0FYUkIrOEVKY1EwQUN3c0xJQVpCXFxcbkFUb0FLZ3dDQ3lBR0tBSWtJUUVDUUNBQ1FRRnhSUTBBSUFWQkxoRGdCQXNnQmtFWWFpQUVJQUZCN0tMQkFFRUVFTGdKQWtBQ1FBSkFBa1xcXG5BQ1FBSkFJQVlvQWhnaUFrVU5BQ0FHUWNBQmFpQUdRYkFCYWlBQ0lBWW9BaHdRVHlBR0tBTEFBVVVOQVNBR1FlQUJha0VZYWlBR1FjQUJcXFxuYWtFWWFpZ0NBRFlDQUNBR1FlQUJha0VRYWlBR1FjQUJha0VRYWlrREFEY0RBQ0FHUWVBQmFrRUlhaUFHUWNBQmFrRUlhaWtEQURjREFDXFxcbkFHSUFZcEE4QUJOd1BnQVNBRktBSUlJUVFnQlNBR1FlQUJhaERuQkNBR1FSQnFJQVVnQkVId29zRUFFS01IUVFFaEVDQUdLQUlVSVJFZ1xcXG5CaWdDRUNFUElBZEJBWEZGRFFJTUJBdEJBU0VDSUFkQkFYRWhEMEVCSVFjZ0R3MENJQVFnQVJDYUJTRUhEQUlMUVFFaEJ5QUdRUUU2QUNcXFxuZ01Bd3NnRHlBUkVKb0ZJUkFNQVFzZ0JDQUJJQU1nQmtFb2FoQ0FBeUFGSUFRZ0FSQ1REQXdDQ3dKQUlBWkJLR29RL0FVTkFDQUdJQTgyXFxcbkFrQWdCaUFQSUJGcUloSTJBa1JCQUNFQlFRRWhBZ05BSUFJaEV3SkFBMEFnQVNFQ0FrQUNRQ0FHUWNBQWFoQ0ZBeUlFUVlDQXhBQkdEUVxcXG5CQkFDRUJJQVJCZ0FGSkRRSUNRQ0FDUWY4QmNTQUVFSklNSWdGQi93RnhJZ0pORFFBZ0FnMEVDd0pBSUFSQndIbHFJZ0pCQkVzTkFDQUNcXFxuUVFKSERRUUxJQVJCajBGcUlnSkJERXNOQVVFQklBSjBRZFVxY1VVTkFRd0RDd0pBSUJOQkFYRU5BQ0FNUVFocVFnQTNBUUFnREVJQU53XFxcbkVBSUE0Z0Jpa0JxQUkzQVFBZ0RrRUlhaUFHUWFnQ2FrRUlhaWtCQURjQkFDQU9RUkJxSUFaQnFBSnFRUkJxTHdFQU93RUFJQWxDQURjQ1xcXG5BQ0FKUVFocVFRQTZBQUFnQmlBU05nS0lBU0FHSUE4MkFvUUJJQVpCQURZQ2dBRWdCa0VBT2dCOElBWkJBRFlDZUNBR1FRQTZBSFFnQmtcXFxuRUFOZ0p3SUFaQkFEb0FiQ0FHUVFBMkFtZ2dCa0VBT2dCa0lBWkJBRHNCWUNBR1FRQTdBVXdnQmtFQU5nSkFJQVpCQURvQW1BRWdCa0dBXFxcbmdNUUFOZ0pJSUE4Z0VpQUdRY0FBYWhBMFJRMERDeUFOSUFzdkFBQTdBQUFnRFVFQ2FpQUxRUUpxTFFBQU9nQUFJQVpCQURvQVFTQUdJQVxcXG5vNkFFQWdEeUFSSUFaQndBQnFJQVpCS0dvUWdBTU1CQXNDUUNBRVFiMWhhaUlDUVJsTERRQkJBU0FDZEVHQmlNSVFjUTBDQ3dKQUlBUkJcXFxuNDJCcUlnSkJIRXNOQUVFQklBSjBRYUdJZ29BQmNRMENDd0pBSUFSQmwyRnFJZ0pCR0VzTkFFRUJJQUowUVlHSWdnaHhEUUlMQWtBZ0JFXFxcbkd0UUdvaUFrRVlTdzBBUVFFZ0FuUkJnWUtFQ0hFTkFnc0NRQ0FFUVl4NWFpSUNRUk5MRFFCQkFTQUNkRUdCaUNCeERRSUxRUUFoQWdKQVxcXG5JQVJCd21scUlnZEJHVXNOQUVFQklBZDBRWUdBZ0JoeERRTUxBa0FnQkVHMlpHb2lCMEVWU3cwQVFRRWdCM1JCb1lDQUFYRU5Bd3NDUUNcXFxuQUVRWWRBYWlJSFFRUkxEUUJCQVNBSGRFRVZjUTBDQ3dKQUFrQWdCRUh4ZVdvT0F3UUJCQUFMQWtBZ0JFRytlV29PQkFRQkFRUUFDd0pBXFxcbklBUkJ6V3RxRGdRREFRRURBQXNDUUNBRVFjVkFhZzRFQXdFQkF3QUxBa0FnQkVHM1FHb09Bd01CQXdBTElBUkIxN2wvYWtFQ1NRMENBa1xcXG5BZ0JFSHdpM3hxRGdNREFRTUFDd0pBSUFSQjRJdDhhZzREQXdFREFBc0NRQ0FFUWVPSmZHb09Bd01CQXdBTEFrQWdCRUhHMW50cURnUUVcXFxuQVFFRUFBc2dCRUdiQmtZTkF5QUVRYmdHUmcwRElBUkJ2QkpHRFFNZ0JFRytFMFlOQXlBRVFkY1RSZzBESUFSQjN4TkdEUUlnQkVIZUZFXFxcbllOQWlBRVFiNFhSZzBESUFSQjF4ZEdEUU1nQkVIV0dFWU5BeUFFUWNJWlJnMERJQVJCdmhwR0RRTWdCRUhYR2tZTkF5QUVRWk1mUmcwQ1xcXG5JQVJCcmlCR0RRTWdCRUcxTmtZTkF5QUVRYWJDQUVZTkFpQUVRZHpWQUVZTkFpQUVRYjcyQTBZTkFpQUVRYnFoQkVZTkF5QUVRYWVpQkVcXFxuWU5BeUFFUWI2bUJFWU5BeUFFUWRlbUJFWU5BeUFFUWJDcEJFWU5BeUFFUWErckJFWU5BeUFFUWJDeUJFWU5Bd3NnQkVHQWtIUnFRWjRFXFxcblNRMEJJQVJCeGR4NGFrRUdTUTBCSUFSQm90MTRha0VIU1EwQklBUkJ1b2w4YWtFSlNRMEJJQVJCdllsOGFrRUNTUTBCSUFSQi92Ly9BSFxcXG5FaUIwSEE5Z05HRFFFZ0JFSElpWHhxUVFWSkRRRWdCRUhXaVh4cVFRMUpEUUVnQkVHUWkzeHFRZW9BU1EwQklBUkIxb3Q4YWtIRUFFa05cXFxuQVNBRVFkdUxmR3BCQWtrTkFTQUVRZXVMZkdwQkNra05BU0FFUVlDT2ZHcEJqZ0pKRFFFZ0IwR3F3Z0JHRFFFZ0IwR0F3QUJHRFFFZ0IwXFxcbkh1UDBZTkFTQUVRWXRoYWtFQ1NRMEJJQWRCM0JaR0RRRWdCRUduYTJwQkEwa05BU0FFUWZqLy93QnhRZGdTUmcwQklBZEIzQk5HRFFFZ1xcXG5CRUhZWEdwQkcwa05BaUFFUVo5ZGFrRVZTUTBDSUFSQnEyWnFRUUpKRFFJZ0JFR3RjMnBCQTBrTkFpQUhRYkFHUmcwQ0lBUkIwM2xxUVFcXFxuSkpEUUlnQkVIZGVXcEJCa2tOQWlBRVFlMTVha0VDU1EwQ0lBUkJnSHBxUVFWSkRRSWdCRUg2ZVdwQkIwa05BaUFFUWVlZWYycEJBa2tOXFxcbkFnd0FDd3NMSUFaQkFUb0FMUXNnRUNFSEMwRUJJUUlNQUFzTElBQWdCaWtES0RjQUFDQUFRUWhxSUFaQktHcEJDR29vQWdBMkFBQWdCa1xcXG5Hd0FXb1F2d29nQmtIQUFtb2tBQXU4RmdJVWZ3UitJd0JCMEFOcklnWWtBQ0FHUWRnQWFpQUJFTG9FQWtBQ1FBSkFBa0FnQmkwQVdBMEFcXFxuSUFZdEFGa05BaUFHUVFVMkFzZ0JJQUVnQmtISUFXb1EzUWdoQVF3QkN5QUdLQUpjSVFFTElBQkJBRFlDRUNBQUlBRTJBZ0FNQVFzQ1FBXFxcbkpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FHTFFCYUlnZEIyd0JHRFFBQ1FDQUhRZnNBUmcwQUlBRWdCa0hJQTJwQmpKN0FBQkI0SVFjTVxcXG5DZ3NnQVNBQkxRQVlRWDlxSWdjNkFCZ0NRQ0FIUWY4QmNVVU5BQ0FCRUlNTUlBWkIwQUJxSUFFUWhBd2dCaWdDVUNFSElBWWdCaTBBVkVcXFxuRUJjVG9BdkFFZ0JpQUhOZ0s0QVVFQUlRZ2dCa0VBTmdMQUFpQUdRUUEyQXBnRElBWkJzQUpxUVJScUlRa2dCa0d3QW1wQkJISWhDaUFHXFxcblFjZ0Jha0VVYWlFTElBWkJ5QUZxUVFSeUlRd2dCa0dJQTJwQkZHb2hEU0FHUVlnRGFrRUVjaUVPUVFBaER3TkFJQVpCeUFGcUlBWkJ1QVxcXG5GcUVJOEJBa0FDUUFKQUFrQUNRQ0FHTFFESUFRMEFJQVl0QU1rQklnZEJBMFlOQVNBSERnSUVBd0lMSUFZb0Fzd0JJUWNNREFzQ1FBSkFcXFxuSUFnTkFDQUdRY0FBYWhEUUNFR0FnOEFBSVFoQkJDRU9RUUFoRFNBR0tRTklJUm9nQmlrRFFDRWJRUUFoQ2tFQUlSQkJBQ0VSUVFBaEVnXFxcbndCQ3lBR0tBTGNBaUVNSUFZb0F0Z0NJUTBnQmlnQzFBSWhDaUFHS0FMUUFpRU9JQVlvQXN3Q0lSQWdCaWdDeUFJaEVTQUdLQUxFQWlFU1xcXG5JQVlwQTdnQ0lSb2dCaWtEc0FJaEd3c0NRQUpBSUE4TkFDQUdRVEJxRU5BSVFRZ2hFMEVBSVJSQmdJUEFBQ0VQSUFZcEF6Z2hIQ0FHS1FcXFxuTXdJUjFCQUNFVlFRQWhGa0VBSVJkQkFDRVlEQUVMSUFZb0FyUURJUmtnQmlnQ3NBTWhHQ0FHS0FLc0F5RVhJQVlvQXFnRElSTWdCaWdDXFxcbnBBTWhGaUFHS0FLZ0F5RVZJQVlvQXB3RElSUWdCaWtEa0FNaEhDQUdLUU9JQXlFZEN5QWJRaUNJcHlFSklCdW5JUWNNREFzZ0JrRzRBV1xcXG5vUTNRb2lCMFVOQWd3S0N5QVBEUVFnQmtISUFXb2dCa0c0QVdvUTJRa2dCaWdDeUFFaEJ5QUdLQUxZQVNJUFJRMEpJQVpCdUFOcVFRaHFcXFxuSWhBZ0RFRUlhaWdDQURZQ0FDQUdRZUFDYWtFSWFpSVJJQXRCQ0dvcEFnQTNBd0FnQmtIZ0FtcEJFR29pRWlBTFFSQnFLUUlBTndNQUlBXFxcblpCNEFKcVFSaHFJaFFnQzBFWWFpZ0NBRFlDQUNBR0lBd3BBZ0EzQTdnRElBWWdDeWtDQURjRDRBSWdCa0dJQTJvUTFnc2dEaUFHS1FPNFxcXG5BemNDQUNBT1FRaHFJQkFvQWdBMkFnQWdEU0FHS1FQZ0FqY0NBQ0FOUVFocUlCRXBBd0EzQWdBZ0RVRVFhaUFTS1FNQU53SUFJQTFCR0dcXFxub2dGQ2dDQURZQ0FDQUdJQWMyQW9nRElBWWdEellDbUFNTUFRc0NRQ0FJUlEwQVFaV3N3QUJCQnhET0JTRUhEQWtMSUFaQnlBRnFJQVpCXFxcbnVBRnFFTmNKSUFZb0FzZ0JJUWNnQmlnQzJBRWlDRVVOQ0NBR1FiZ0Rha0VJYWlJUUlBeEJDR29vQWdBMkFnQWdCa0hnQW1wQkNHb2lFU1xcXG5BTFFRaHFLUUlBTndNQUlBWkI0QUpxUVJCcUloSWdDMEVRYWlrQ0FEY0RBQ0FHUWVBQ2FrRVlhaUlVSUF0QkdHb29BZ0EyQWdBZ0JpQU1cXFxuS1FJQU53TzRBeUFHSUFzcEFnQTNBK0FDSUFaQnNBSnFFTk1MSUFvZ0Jpa0R1QU0zQWdBZ0NrRUlhaUFRS0FJQU5nSUFJQWtnQmlrRDRBXFxcbkkzQWdBZ0NVRUlhaUFSS1FNQU53SUFJQWxCRUdvZ0Vpa0RBRGNDQUNBSlFSaHFJQlFvQWdBMkFnQWdCaUFITmdLd0FpQUdJQWcyQXNBQ1xcXG5EQUFMQ3lBR1FSZzJBc2dCSUFFZ0JrSElBV29RM1FnaEFRd0ZDeUFCSUFFdEFCaEJmMm9pQnpvQUdDQUhRZjhCY1VVTkF5QUJFSU1NSUFcXFxuWkJLR29nQVJDRURDQUdLQUlvSVFjZ0JpQUdMUUFzUVFGeE9nQ0VBeUFHSUFjMkFvQURJQVpCeUFGcUlBWkJnQU5xRUx3QkFrQUNRQUpBXFxcbklBWW9Bc2dCRFFBZ0JrRzRBMnBCQ0dvaUJ5QUdRY2dCYWtFUWFpa0RBRGNEQUNBR1FiQUNha0VJYWlJTElBWkJ5QUZxUVNScUtRSUFOd1xcXG5NQUlBWkJzQUpxUVJCcUlna2dCa0hJQVdwQkxHb3BBZ0EzQXdBZ0JrR3dBbXBCR0dvaURDQUdRZndCYWlnQ0FEWUNBQ0FHSUFZcEE5QUJcXFxuTndPNEF5QUdJQVpCeUFGcVFSeHFLUUlBTndPd0FpQUdRY2dCYWtFWWFpZ0NBQ0lJRFFFZ0JrRVlhaERRQ0NBR1FZZ0Rha0VrYWtJQU53XFxcbklBSUFaQmlBTnFRUnhxUW9DQWdJREFBRGNDQUNBR1Fad0Rha0lBTndJQVFZQ0R3QUFoQ0NBR1FZQ0R3QUEyQXBnRElBWWdCaWtESURjRFxcXG5rQU1nQmlBR0tRTVlOd09JQXd3Q0N5QUdLQUxNQVNFSERBTUxJQVpCaUFOcVFRaHFJQWNwQXdBM0F3QWdCa0dJQTJwQkhHb2dDeWtEQURcXFxuY0NBQ0FHUVlnRGFrRWthaUFKS1FNQU53SUFJQVpCaUFOcVFTeHFJQXdvQWdBMkFnQWdCaUFHS1FPNEF6Y0RpQU1nQmlBR0tRT3dBamNDXFxcbm5BTWdCaUFJTmdLWUF3c2dCa0hJQVdvZ0JrR0FBMm9RdWdFQ1FBSkFBa0FnQmlnQ3lBRU5BQ0FHUWZ3QmFpZ0NBQ0VNSUFaQnlBRnFRUlxcXG5ocUtBSUFJZ2xGRFFFZ0JrSDRBV29vQWdBaERTQUdRY2dCYWtFc2FpZ0NBQ0VQSUFaQjhBRnFLQUlBSVFvZ0JrSElBV3BCSkdvb0FnQWhcXFxuRGlBR1FlZ0JhaWdDQUNFUUlBWkJ5QUZxUVJ4cUtBSUFJUkVnQmtISUFXcEJFR29wQXdBaEdpQUdLUVBRQVNFZERBSUxJQVlvQXN3QklRXFxcbmNnQmtHSUEyb1EyQW9NQXdzZ0JrRUlhaERRQ0VHQWc4QUFJUWxCQ0NFS1FRQWhEU0FHS1FNUUlSb2dCaWtEQ0NFZFFRQWhEMEVBSVE1QlxcXG5BQ0VRUVFBaEVRc2dCa0c0QVdwQkNHb2dCa0dVQTJvb0FnQTJBZ0FnQmtIZ0FtcEJDR29nQmtHSUEycEJIR29wQWdBM0F3QWdCa0hnQW1cXFxucEJFR29nQmtHSUEycEJKR29wQWdBM0F3QWdCa0hnQW1wQkdHb2dCa0dJQTJwQkxHb29BZ0EyQWdBZ0JpQUdLUUtNQXpjRHVBRWdCaUFHXFxcbktRS2NBemNENEFJZ0JpZ0NpQU1oQnd3Q0MwR2NyTUFBUVFjUXpnVWhCd3dFQzBFQUlRZ0xJQUVnQVMwQUdFRUJham9BR0NBR1FkUUJhaVxcXG5BR1FiZ0Jha0VJYWlnQ0FEWUNBQ0FHUWVRQmFpQUdRZUFDYWtFSWFpa0RBRGNDQUNBR1Fld0JhaUFHUWZBQ2Fpa0RBRGNDQUNBR1FmUUJcXFxuYWlBR1FmZ0NhaWdDQURZQ0FDQUdJQVlwQTdnQk53TE1BU0FHSUFZcEErQUNOd0xjQVNBR0lBRVFzUUlpQ3pZQ3FBSWdCaUFNTmdLa0FpXFxcbkFHSUEwMkFxQUNJQVlnRHpZQ25BSWdCaUFLTmdLWUFpQUdJQTQyQXBRQ0lBWWdFRFlDa0FJZ0JpQVJOZ0tNQWlBR0lBazJBb2dDSUFZZ1xcXG5HamNEZ0FJZ0JpQWROd1A0QVNBR0lBZzJBdGdCSUFZZ0J6WUN5QUVDUUFKQUlBaEZEUUFnQ3cwQklBWkJxQUZxUVFocUlBWkJ1QUZxUVFcXFxuaHFLQUlBTmdJQUlBWWdCaWtEdUFFM0E2Z0JJQVpCMkFCcUlBWkIzQUZxUWN3QUVLUU5HZ3dHQzBFQUlRZ2dDMFVOQlNBR1FhZ0NhaEN2XFxcbkNRd0ZDeUFHUWNnQmFoRGxDMEVBSVFnZ0N5RUhEQVFMSUFaQkdEWUN5QUVnQVNBR1FjZ0JhaERkQ0NFQkN5QUFRUUEyQWhBZ0FDQUJOZ1xcXG5JQURBUUxJQVpCaUFOcUVOWUxJQVpCc0FKcUVOTUxRUUFoQ0FzZ0FTQUJMUUFZUVFGcU9nQVlJQVlnQVJERkF5SUxOZ0tvQWlBR0lCazJcXFxuQXFRQ0lBWWdHRFlDb0FJZ0JpQVhOZ0tjQWlBR0lCTTJBcGdDSUFZZ0ZqWUNsQUlnQmlBVk5nS1FBaUFHSUJRMkFvd0NJQVlnRHpZQ2lBXFxcbklnQmlBY053T0FBaUFHSUIwM0EvZ0JJQVlnRERZQzlBRWdCaUFOTmdMd0FTQUdJQW8yQXV3QklBWWdEallDNkFFZ0JpQVFOZ0xrQVNBR1xcXG5JQkUyQXVBQklBWWdFallDM0FFZ0JpQUlOZ0xZQVNBR0lCbzNBOUFCSUFZZ0NUWUN6QUVnQmlBSE5nTElBUUpBQWtBZ0NFVU5BQ0FMRFFcXFxuRWdCa0dvQVdwQkNHb2dCa0hJQVdwQkJISWlDMEVJYWlnQ0FEWUNBQ0FHSUFzcEFnQTNBNmdCSUFaQjJBQnFJQVpCM0FGcVFjd0FFS1FOXFxcbkdnd0NDMEVBSVFnZ0MwVU5BU0FHUWFnQ2FoQ3ZDUXdCQ3lBR1FjZ0JhaERsQzBFQUlRZ2dDeUVIQ3lBSVJRMEFJQUFnQmlrRHFBRTNBZ1xcXG5RZ0FFRU1haUFHUWJBQmFpZ0NBRFlDQUNBQVFSUnFJQVpCMkFCcVFjd0FFS1FOR2lBQUlBZzJBaEFnQUNBSE5nSUFEQUVMSUFFZ0J4QytcXFxuRFNFQklBQkJBRFlDRUNBQUlBRTJBZ0FMSUFaQjBBTnFKQUFMMHhBQ0NIOFdmaU1BUVRCcklnUWtBQUpBQWtBQ1FBSkFBa0FDUUNBQktRXFxcbk1BSWd4UURRQUNRQ0FCS1FNSUlnMVFEUUFDUUNBQktRTVFJZzVRRFFBQ1FDQU1JQTU4SWc0Z0RGUU5BQUpBSUF3Z0RWUU5BQUpBSUFOQlxcXG5FVWtOQUFKQUFrQUNRQUpBQWtBZ0RrTC8vLy8vLy8vLy94OVdEUUFnQkNBQkx3RVlJZ0U3QVFnZ0JDQU1JQTE5SWc4M0F3QWdBU0FCUVdcXFxuQnFJQUVnRGtLQWdJQ0FFRlFpQlJzaUJrRndhaUFHSUE1Q0lJWWdEaUFGR3lJT1FvQ0FnSUNBZ01BQVZDSUZHeUlHUVhocUlBWWdEa0lRXFxcbmhpQU9JQVViSWc1Q2dJQ0FnSUNBZ0lBQlZDSUZHeUlHUVh4cUlBWWdEa0lJaGlBT0lBVWJJZzVDZ0lDQWdJQ0FnSUFRVkNJRkd5SUdRWFxcXG41cUlBWWdEa0lFaGlBT0lBVWJJZzVDZ0lDQWdJQ0FnSURBQUZRaUJSc2dEa0lDaGlBT0lBVWJJaEJDZjFVaUIyc2lCV3ZCSWdaQkFFZ05cXFxuQkNBRVFuOGdCcTBpRVlnaURpQVBnemNERUNBUElBNVdEUU1nQkNBQk93RUlJQVFnRERjREFDQUVJQTRnRElNM0F4QWdEQ0FPVmcwQ1FhXFxcbkIvSUFWcndVSFFBR3hCc0tjRmFrSE9FRzBpQVVIUkFFOE5BU0FCUVFSMElnRkJ5SWZPQUdvcEF3QWlEa0wvLy8vL0Q0TWlEU0FNSUJGQ1xcXG5QNE1pRVlZaURFSWdpQ0lTZmlJVFFpQ0lJaFFnRGtJZ2lDSVZJQkorZkNBVklBeEMvLy8vL3crRElneCtJZzVDSUlnaUZud2hGeUFUUXZcXFxuLy8vLzhQZ3lBTklBeCtRaUNJZkNBT1F2Ly8vLzhQZzN4Q2dJQ0FnQWg4UWlDSUlSaENBVUVBSUFVZ0FVSFFoODRBYWk4QkFHcHJRVDl4XFxcbnJTSU9oaUlaUW45OElSTWdEU0FQSUJHR0lneENJSWdpRDM0aUVVTC8vLy8vRDRNZ0RTQU1Rdi8vLy84UGd5SU1ma0lnaUh3Z0ZTQU1maVxcXG5JTVF2Ly8vLzhQZzN4Q2dJQ0FnQWg4UWlDSUlSb2dGU0FQZmlFUElBeENJSWdoR3lBUlFpQ0lJUkVnQVVIU2g4NEFhaThCQUNFQkFrQUNcXFxuUUFKQUFrQWdGU0FRSUFldGhpSU1RaUNJSWh4K0loMGdEU0FjZmlJUVFpQ0lJaDU4SUJVZ0RFTC8vLy8vRDRNaURINGlIMElnaUNJZ2ZDXFxcbkFRUXYvLy8vOFBneUFOSUF4K1FpQ0lmQ0FmUXYvLy8vOFBnM3hDZ0lDQWdBaDhRaUNJSWlGOFFnRjhJaDhnRG9pbklnWkJrTTRBU1EwQVxcXG5JQVpCd0lROVNRMEJJQVpCZ01MWEwwa05Ba0VJUVFrZ0JrR0FsT3ZjQTBraUJSc2hDRUdBd3RjdlFZQ1U2OXdESUFVYklRVU1Bd3NDUUNcXFxuQUdRZVFBU1EwQVFRSkJBeUFHUWVnSFNTSUZHeUVJUWVRQVFlZ0hJQVViSVFVTUF3dEJDa0VCSUFaQkNVc2lDQnNoQlF3Q0MwRUVRUVVnXFxcbkJrR2dqUVpKSWdVYklRaEJrTTRBUWFDTkJpQUZHeUVGREFFTFFRWkJCeUFHUVlDdDRnUkpJZ1ViSVFoQndJUTlRWUN0NGdRZ0JSc2hCUVxcXG5zZ0Z5QVlmQ0VYSUI4Z0U0TWhEQ0FJSUFGclFRRnFJUWtnSHlBUElCRjhJQnQ4SUJwOElodDlRZ0Y4SWhFZ0U0TWhEMEVBSVFFRFFDQUdcXFxuSUFWdUlRY0NRQUpBQWtBZ0F5QUJSZzBBSUFJZ0FXb2lDaUFIUVRCcUlnczZBQUFnRVNBR0lBY2dCV3hySWdhdElBNkdJZzBnREh3aUVGXFxcbllORHlBSUlBRkhEUUlnQVVFQmFpRUJRZ0VoRFFOQUlBMGhFQ0FQSVJFZ0FTQURUdzBDSUFJZ0FXb2dERUlLZmlJTUlBNklwMEV3YWlJRlxcXG5PZ0FBSUFGQkFXb2hBU0FRUWdwK0lRMGdFVUlLZmlJUElBd2dFNE1pREZnTkFBc2dEeUFNZlNJT0lCbGFJUVlnRFNBZklCZDlmaUlUSUFcXFxuMThJUmdnRGlBWlZBMFFJQk1nRFgwaUV5QU1XQTBRSUFJZ0FXcEJmMm9oQnlBUlFncCtJQmtnREh4OUlSVWdHU0FUZlNFZklCTWdESDBoXFxcbkVrSUFJUTREUUFKQUlBd2dHWHdpRFNBVFZBMEFJQklnRG53Z0h5QU1mRm9OQUVFQklRWU1FZ3NnQnlBRlFYOXFJZ1U2QUFBZ0ZTQU9mQ1xcXG5JUklCbGFJUVlnRFNBVFdnMFNJQTRnR1gwaERpQU5JUXdnRVNBWldnMEFEQklMQ3lBRElBTkI3SlBPQUJDQkJRQUxJQUVnQTBHTWxNNEFcXFxuRUlFRkFBc2dBVUVCYWlFQklBVkJDa2toQnlBRlFRcHVJUVVnQjBVTkFBdEIwSlBPQUVFWlFiaVR6Z0FRZ3djQUMwSDRrczRBUVMxQnFKXFxcblBPQUJDREJ3QUxJQUZCMFFCQmlKTE9BQkNCQlFBTElBUkJBRFlDR0NBRVFSQnFJQVFnQkVFWWFoQzZCUUFMSUFSQkFEWUNHQ0FFUVJCcVxcXG5JQVFnQkVFWWFoQzZCUUFMUWZ6L3pRQkJIVUc4Z000QUVJTUhBQXRCcElYT0FFRXRRZWlTemdBUWd3Y0FDMEhjaE00QVFUZEIySkxPQUJcXFxuQ0RCd0FMUVpTRXpnQkJOa0hJa3M0QUVJTUhBQXRCNklQT0FFRWNRYmlTemdBUWd3Y0FDMEc0Zzg0QVFSMUJxSkxPQUJDREJ3QUxRWXVEXFxcbnpnQkJIRUdZa3M0QUVJTUhBQXNnQVVFQmFpRUdBa0FDUUNBQklBTlBEUUFnRVNBUWZTSVRJQVd0SUE2R0lnNWFJUUVnSHlBWGZTSVBRZ1xcXG5GOElSb2dEMEovZkNJWklCQllEUUVnRXlBT1ZBMEJJQXdnRG53aUVDQVVmQ0FXZkNBWWZDQVZJQklnSEgxK2ZDQWVmU0FnZlNBaGZTRVRcXFxuSUI0Z0lId2dJWHdnSFh3aEQwSUFJQmNnRFNBTWZIeDlJUmhDQWlBYklCQWdEWHg4ZlNFU0EwQUNRQ0FOSUJCOEloVWdHVlFOQUNBWUlBXFxcbjk4SUEwZ0UzeGFEUUFnRFNBTWZDRVFRUUVoQVF3REN5QUtJQXRCZjJvaUN6b0FBQ0FNSUE1OElRd2dFaUFQZkNFZkFrQWdGU0FaV2cwQVxcXG5JQkFnRG53aEVDQVRJQTU4SVJNZ0R5QU9mU0VQSUI4Z0Rsb05BUXNMSUI4Z0Rsb2hBU0FOSUF4OElSQU1BUXNnQmlBRFFmeVR6Z0FRZ3dcXFxuVUFDd0pBQWtBQ1FDQWFJQkJZRFFBZ0FVVU5BQ0FRSUE1OElnd2dHbFFOQVNBYUlCQjlJQXdnR24xYURRRUxBa0FnRUVJQ1ZBMEFJQkFnXFxcbkVVSjhmRmdOQWdzZ0FFRUFOZ0lBREFVTElBQkJBRFlDQUF3RUN5QUFJQWs3QVFnZ0FDQUdOZ0lFREFJTElBd2hEUXNDUUFKQUFrQWdHQ1xcXG5BTldBMEFJQVpGRFFBZ0RTQVpmQ0lNSUJoVURRRWdHQ0FOZlNBTUlCaDlXZzBCQ3dKQUlCQkNGSDRnRFZZTkFDQU5JQkJDV0g0Z0QzeFlcXFxuRFFJTElBQkJBRFlDQUF3REN5QUFRUUEyQWdBTUFnc2dBQ0FKT3dFSUlBQWdBVFlDQkFzZ0FDQUNOZ0lBQ3lBRVFUQnFKQUFMcmhFQ0NuXFxcbjhCZmlNQVFaQUNheUlHSkFBZ0JpQUJFTFlFQWtBQ1FBSkFBa0FnQmkwQUFBMEFJQVl0QUFFTkFpQUdRUVUyQW1nZ0FTQUdRZWdBYWhET1xcXG5DQ0VCREFFTElBWW9BZ1FoQVFzZ0FFR0JsT3ZjQXpZQ0NDQUFJQUUyQWdBTUFRc0NRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtcXFxuQUNRQ0FHTFFBQ0lnZEIyd0JHRFFBQ1FDQUhRZnNBUmcwQUlBRWdCa0dJQW1wQm5KN0FBQkJvSVFnTURRc2dBU0FCTFFBWVFYOXFJZ2M2XFxcbkFCZ0NRQ0FIUWY4QmNVVU5BQ0FCSUFFb0FnaEJBV28yQWdnZ0JrRUJPZ0RVQVNBR0lBRTJBdEFCUVFBaENTQUdRUUEyQXZnQklBWkJzQVxcXG5GcVFRaHFJUW9nQmtIb0FHcEJDR29oQzBHQmxPdmNBeUVNQWtBRFFDQUdRZWdBYWlBR1FkQUJhaENKQVNBR0xRQm9EUUVDUUFKQUFrQUNcXFxuUUFKQUlBWXRBR2tpQjBFRVJnMEFJQWNPQXdRREFnRUxJQVlnQ1RZQ3NBRWdCaUFOTmdLMEFTQUpSU0VISUFsRkRRZ2dCa0hZQVdwQkdHXFxcbm9nQmtHd0FXcEJHR29pQ0NrREFEY0RBQ0FHUWRnQmFrRVFhaUFHUWJBQmFrRVFhaUlOS1FNQU53TUFJQVpCMkFGcVFRaHFJQVpCc0FGcVxcXG5RUWhxSWdvcEF3QTNBd0FnQmlBR0tRT3dBVGNEMkFFQ1FDQUdLQUw0QVVVTkFDQUdRVGhxUVFocUlBWkIrQUZxUVFocUtBSUFOZ0lBSUFcXFxuWWdCaWtEK0FFM0F6Z2dCa0dFQVdvZ0NDa0RBRGNDQUNBR1Fmd0FhaUFOS1FNQU53SUFJQVpCOUFCcUlBb3BBd0EzQWdBZ0JpQUdLUU93XFxcbkFUY0NiQ0FHUWNRQWFpQUdRZWdBYWtFa0VLUU5Ha0lBSUE2dFFpQ0dJQSt0aENBTVFZR1U2OXdEUmlJSEd5SVFweUVJSUJCQ0lJaW5JUVxcXG5sQmdKVHIzQU1nRENBSEd5RUhEQkFMUWJPcXdBQkJBeEROQlNFSUlBWkIyQUZxRUlVTERBNExJQVpCMEFGcUVOd0tJZ2hGRFFNZ0JpQUpcXFxuTmdLd0FTQUdJQTAyQXJRQlFRRWhCd3dOQ3dKQUlBeEJnWlRyM0FOR0RRQWdCaUFKTmdLd0FTQUdJQTAyQXJRQlFRRWhCMEcycXNBQVFRXFxcbk1RemdVaENBd05DeUFHUWVnQWFpQUdRZEFCYWhEVENRSkFJQVlvQW5BaURFR0JsT3ZjQTBZTkFDQUdLQUpzSVE0Z0JpZ0NhQ0VQREFNTFxcXG5JQVlnQ1RZQ3NBRWdCaUFOTmdLMEFTQUdLQUpvSVFoQkFTRUhEQXdMQWtBZ0JpZ0MrQUZGRFFBZ0JpQUpOZ0t3QVNBR0lBMDJBclFCUVFcXFxuRWhCMEd6cXNBQVFRTVF6Z1VoQ0F3TUN5QUdRZWdBYWlBR1FkQUJhaERXQ1NBR0tBSm9JZ2RGRFFJZ0Jpa0NiQ0VRSUFaQitBRnFFTXdMXFxcbklBWWdFRGNDL0FFZ0JpQUhOZ0w0QVF3QkN3SkFJQWxGRFFBZ0JpQUpOZ0t3QVNBR0lBMDJBclFCUVFFaEIwR3Nxc0FBUVFjUXpnVWhDQVxcXG53TEN5QUdRZWdBYWlBR1FkQUJhaERVQ1FKQUlBWW9BbWdpQ1VVTkFDQUtJQXNwQXdBM0F3QWdDa0VJYWlBTFFRaHFLUU1BTndNQUlBcEJcXFxuRUdvZ0MwRVFhaWtEQURjREFDQUdLQUpzSVEwTUFRc0xRUUFoQ1FzZ0JpQUpOZ0t3QVNBR0lBMDJBclFCSUFZb0Ftd2hDRUVCSVFjTUNBXFxcbnNnQmtFWU5nSm9JQUVnQmtIb0FHb1F6Z2doQVF3R0N5QUJJQUV0QUJoQmYyb2lCem9BR0NBSFFmOEJjVVVOQkNBQklBRW9BZ2hCQVdvMlxcXG5BZ2dnQmtFQk9nRFVBU0FHSUFFMkF0QUJJQVpCNkFCcUlBWkIwQUZxRUtVQklBWW9BbWdOQVNBR1FiZ0JhaUlISUFaQjZBQnFRUlJxS1FcXFxuSUFOd01BSUFaQndBRnFJZ2dnQmtIb0FHcEJIR29wQWdBM0F3QWdCa0hJQVdvaUNTQUdRWXdCYWlnQ0FEWUNBQ0FHSUFaQjZBQnFRUXhxXFxcbktRSUFOd093QVFKQUlBWW9BbkFpRFEwQVFRQkJrS3ZBQUVIb2dzQUFFTGdFSVFnTUF3c2dCa0hZQVdwQkhHb2dDU2dDQURZQ0FDQUdRZFxcXG5nQmFrRVVhaUFJS1FNQU53SUFJQVpCMkFGcVFReHFJQWNwQXdBM0FnQWdCaUFHS1FPd0FUY0MzQUVnQmlBTk5nTFlBU0FHUWVnQWFpQUdcXFxuUWRBQmFoQzRBUUpBQWtBZ0JpZ0NhQTBBQWtBZ0JpZ0NiQ0lIRFFCQkFVR1FxOEFBUWVpQ3dBQVF1QVFoQ0F3Q0N5QUdJQVpCOEFCcUtRXFxcbk1BTndMOEFTQUdJQWMyQXZnQklBWkI2QUJxSUFaQjBBRnFFTUFCQWtBQ1FBSkFJQVlvQW5BaUIwR0NsT3ZjQTBZTkFDQUhRWUdVNjl3RFxcXG5SdzBDUVFKQmtLdkFBRUhvZ3NBQUVMZ0VJUWdNQVFzZ0JpZ0NhQ0VJQ3lBR1FmZ0JhaERqREF3Q0N5QUdLQUpzSVFrZ0JpZ0NhQ0VJSUFcXFxuWkJPR3BCQ0dvZ0JrSDRBV3BCQ0dvb0FnQTJBZ0FnQmtIMEFHb2dCa0hZQVdwQkNHb3BBd0EzQWdBZ0JrSDhBR29nQmtIb0FXb3BBd0EzXFxcbkFnQWdCa0dFQVdvZ0JrSHdBV29wQXdBM0FnQWdCaUFHS1FQNEFUY0RPQ0FHSUFZcEE5Z0JOd0pzSUFaQnhBQnFJQVpCNkFCcVFTUVFwQVxcXG4wYURBVUxJQVlvQW13aENBc2dCa0hZQVdvUWhRc01BZ3RCcktyQUFFRUhFTTBGSVFnTUJRc2dCaWdDYkNFSUMwR0JsT3ZjQXlFSEN5QUJcXFxuSUFFdEFCaEJBV282QUJnZ0FSQ3RBaUVOSUFZZ0NUWUNiQ0FHSUFnMkFtZ2dCaUFITmdKd0lBWkI5QUJxSUFaQnhBQnFRU1FRcEEwaERDXFxcbkFHUWFBQmFpQUdRY0FBYWlnQ0FEWUNBQ0FHSUEwMkFxZ0JJQVlnQmlrRE9EY0RtQUVDUUFKQUlBZEJnWlRyM0FOR0RRQWdEUTBCSUFZZ1xcXG5ERUUwRUtRTkdnd0lDeUFOUlEwRklBWkJxQUZxRUs4SkRBVUxJQVpCNkFCcUVKOExRWUdVNjl3RElRY2dEU0VJREFZTElBWkJHRFlDYUNcXFxuQUJJQVpCNkFCcUVNNElJUUVMSUFCQmdaVHIzQU0yQWdnZ0FDQUJOZ0lBREFZTEFrQWdCaWdDK0FGRkRRQWdCa0g0QVdvUTR3d0xBa0FnXFxcbkJ5QUpRUUJIY1VVTkFDQUdRYkFCYWhDRkN3dEJnWlRyM0FNaEJ3c2dBU0FCTFFBWVFRRnFPZ0FZSUFFUXhBTWhEU0FHSUFrMkFtd2dCaVxcXG5BSU5nSm9JQVlnQnpZQ2NDQUdRZlFBYWlBR1FjUUFha0VrRUtRTklRd2dCa0dnQVdvZ0JrSEFBR29vQWdBMkFnQWdCaUFOTmdLb0FTQUdcXFxuSUFZcEF6ZzNBNWdCQWtBZ0IwR0JsT3ZjQTBZTkFDQU5EUUlnQmlBTVFUUVFwQTBhREFNTElBMUZEUUFnQmtHb0FXb1Fyd2tMUVlHVTY5XFxcbndESVFjTUFRc2dCa0hvQUdvUW53dEJnWlRyM0FNaEJ5QU5JUWdMSUFkQmdaVHIzQU5HRFFBZ0FFRU1haUFHUVRRUXBBMGFJQUFnQnpZQ1xcXG5DQ0FBSUFrMkFnUWdBQ0FJTmdJQURBRUxJQWdnQVJDcEJpRUJJQUJCZ1pUcjNBTTJBZ2dnQUNBQk5nSUFDeUFHUVpBQ2FpUUFDOHNQQVFcXFxueC9Jd0JCb0FGcklnTWtBQ0FEUVNocUlBSkIzQUFRcEEwYUlBTWdBVFlDakFFZ0F5QUFOZ0tJQVNBRFFjZ0FhaUVFSUFOQk9Hb2hCU0FEXFxcblFUUnFJUVlDUUFOQUlBTkJpQUZxRUlVRElRY2dBeWdDTENFSUlBTW9BaWdoQVFKQUFrQUNRQUpBQTBBZ0F5Z0NSQ0VKSUFNb0Fqd2hDaVxcXG5BREtBSTRJUXNnQXk4Qk5DSUFJUUlDUUFOQUlBa2hEQUpBQTBBQ1FBSkFBa0FnQVE0REJBQUJCQXNDUUFKQUFrQWdDMEdBZ01RQVJnMEFcXFxuSUFKQi8vOERjU0lDUVFWSkRRRWdBeUFNTmdKRUlBTWdBRHNCTkNBRFFRRTJBaWdnQWtFRVFZQ2V3UUFRZ3dVQUMwRUFJUUZCQUNFSklBXFxcbmdnREU4TkJnd0JDeUFJSUFKUERRSWdCU0VLQ3lBRElBdzJBa1FnQXlBQU93RTBJQU5CQVRZQ0tDQUtJQWhCQW5ScUtBSUFJUUFnQXlBSVxcXG5RUUZxTmdJc0RBb0xJQU1nRERZQ1JDQURJQUE3QVRRZ0EwRUNOZ0lvQWtBQ1FDQUxRWUNBeEFCR0RRQWdBa0gvL3dOeElnSkJCVThOQmlcXFxuQUZJUW9nQ0NBQ1NRMEJJQUpGRFFrZ0EwRUFPd0UwREFrTElBZ2dERThOQndzZ0NpQUlRUUowYWlnQ0FDRUFJQU1nQ0VFQmFqWUNMQXdKXFxcbkMwRUFJUUZCQUNBQUlBSWJJUUJCQUNFQ0RBQUxDd3NnQXlBTU5nSkVJQU1nQURzQk5DQURRUUEyQWlnRFFDQURJQVEyQXBRQklBUWhBZ1xcXG5KQUFrQURRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFKQk1Hb29BZ0FpQVEwQUFrQWdBaWdDSkVVTkFDQUNRU1JxRUlVRElRQWdcXFxuQXlnQ2xBRWhBaUFBUVlDQXhBQkhEUU1MSUFKQkZHb29BZ0FnQWk4QkFDQUNLQUlJUVlDQXhBQkdHMFVOQXlBQ0VJd0VJQU1vQXBRQklnXFxcbkpCTUdvZ0FrRVVhaWdDQUNBQ0x3RUFJQUlvQWdnaUNFR0FnTVFBUmhzaUFUWUNBQXdCQ3lBQ0tBSUlJUWdMSUFJb0Fpd2hBQUpBQWtBZ1xcXG5DRUdBZ01RQVJpSU1EUUFnQWk4QkFDSUlRUVZQRFFRZ0FrRUVhaUVMREFFTElBSkJGR29vQWdBaENDQUNLQUlNSVFzTElBZ2dBRTBOQXlcXFxuQUxJQUJCQTNScUtBSUVJUTBDUUNBQVFRRnFJZ0FnQVVZTkFDQUNJQUEyQWl3TUN3c2dBa0VVYWlnQ0FDQUNMd0VBSUF3YklBRnJJUXBCXFxcbkJDRUFJQUpCQkdvaERrRUFJUUVEUUFKQUlBb2dBVWNOQUFKQUlBSW9BZ2hCZ0lERUFFWU5BQ0FLSUFJdkFRQlBEUXdnQWlBS093RUFEQVxcXG53TElBSW9BaFFnQ2trTkN5QUNJQW8yQWhRTUN3c2dBaWdDTUNFTEFrQUNRQ0FDS0FJSVFZQ0F4QUJHSWd3TkFDQU9JUWtnQWk4QkFDSUlcXFxuUVFWSkRRRWdDRUVFUVlDZXdRQVFnd1VBQ3lBQ0tBSVVJUWdnQWlnQ0RDRUpDeUFJSUFFZ0Myb2lDMDBOQlNBSklBdEJBM1JxSWdnb0FnXFxcblFoQ3lBSUxRQUFJUWtDUUFKQUlBd05BQ0FEUVFocVFRQWdBaThCQUNBT1FRUkI4SjdCQUJEdUJpQURLQUlNSVFnZ0F5Z0NDQ0VNREFFTFxcXG5JQUlvQWhRaENDQUNLQUlNSVF3TElBZ2dBVTBOQmlBTUlBQnFJZ2dnQ3pZQ0FDQUlRWHhxSUFrNkFBQWdBVUVCYWlFQklBQkJDR29oQUFcXFxud0FDd3NDUUNBQ0xRQTBEUUFnQXlBRFFaUUJhallDbUFFQ1FDQUFRWUFCU1EwQUFrQUNRQ0FBRU00TURRQWdBMEVRYWlBQUVLOEVJQU1vXFxcbkFoQWlBVVVOQVNBREtBSVVRUUowSVFJRFFDQUNSUTBMSUFOQm1BRnFJQUVvQWdBUXpRd2dBa0Y4YWlFQ0lBRkJCR29oQVF3QUN3c2dBeVxcXG5BRFFaUUJhallDbkFFZ0EwR2NBV29nQUVHQXFIMXFJZ0pCekFSdUlnRkJnQ0pxRU0wTUlBTkJuQUZxSUFJZ0FVSE1CR3hyUWYvL0EzRkJcXFxuSEc1QjRTSnFFTTBNSUFKQkhIQWlBa1VOQ1NBRFFad0JhaUFDUWFjamFoRE5EQXdKQ3lBRFFaZ0JhaUFBRU0wTURBZ0xJQU5CbUFGcUlBXFxcbkFRelF3TUJ3c2dBeUFEUVpRQmFqWUNtQUVDUUNBQVFZQUJTUTBBQWtBQ1FDQUFFTTRNRFFBZ0EwRWdhaUFBRUs0RUFrQWdBeWdDSUNJQlxcXG5SUTBBSUFNb0FpUWhBZ3dKQ3lBRFFSaHFJQUFRcndRZ0F5Z0NHQ0lCUlEwQklBTW9BaHdoQWd3SUN5QURJQU5CbEFGcU5nS2NBU0FEUVpcXFxud0JhaUFBUVlDb2ZXb2lBa0hNQkc0aUFVR0FJbW9RelF3Z0EwR2NBV29nQWlBQlFjd0ViR3RCLy84RGNVRWNia0hoSW1vUXpRd2dBa0VjXFxcbmNDSUNSUTBJSUFOQm5BRnFJQUpCcHlOcUVNME1EQWdMSUFOQm1BRnFJQUFRelF3TUJ3c2dBMEdZQVdvZ0FCRE5EQXdHQ3lBRFFnSTNBeVxcXG5oQkFpRUJRUUFoQ0NBREtBSXdJZ0JCZ0lERUFFWU5Dd3dPQ3lBSVFRUkJnSjdCQUJDREJRQUxJQUFnQ0VHNGxzRUFFSUVGQUFzZ0N5QUlcXFxuUWVTV3dRQVFnUVVBQ3lBQklBaEI5SmJCQUJDQkJRQUxJQUpCQW5RaEFnTkFJQUpGRFFFZ0EwR1lBV29nQVNnQ0FCRE5EQ0FDUVh4cUlRXFxcbklnQVVFRWFpRUJEQUFMQ3lBREtBS1VBU0VDREFBTEN5QUNRZ0EzQWl3TElBMFFrZ3doQWdKQUFrQWdBeWdDTUNJQVFZQ0F4QUJIRFFBZ1xcXG5Ba0gvQVhGRkRRRWdEU0VBREFnTEFrQUNRQUpBSUFNdEFJQUJEUUFnQUNBTkVKVUJJZ0ZCZ0lERUFFY05BU0FDUWY4QmNRMENJQU1nRFRcXFxuWUNNQXdLQ3dKQUlBTXRBSUVCSUFKQi93RnhJZ0ZQRFFBZ0FDQU5FSlVCSWdGQmdJREVBRVlOQWlBRElBRTJBakFNQkFzZ0FRMEJJQU5CXFxcbkFEb0FnQUVnQXlBTk5nSXdJQU5DQVRjREtBd0pDeUFESUFFMkFqQU1BZ3NnQmlBTkVNQURJQU1nQWpvQWdRRWdBMEVCT2dDQUFRd0JDeVxcXG5BRElBMDJBakFNQUFzTEN5QUNRUVJCZ0o3QkFCQ0RCUUFMSUFOQkFEWUNSQXNnQXlnQ01DRUFDeUFEUVlDQXhBQTJBakFMQWtBZ0IwR0FcXFxuZ01RQVJnMEFRUUFoQWlBQVFZQ0F4QUJHRFFJZ0FDQUhSZzBCREFJTEN5QUFRWUNBeEFCR0lRSUxJQVFRK1FvZ0JoRDRDaUFEUWFBQmFpXFxcblFBSUFJTHZBOEJEWDhqQUVHUUFtc2lBeVFBSUFOQjBBRnFJQUVnQWhDOEJDQURJQU1vQXRBQklnSWdBeWdDMUFFaUFXbzJBdXdCSUFNZ1xcXG5BallDNkFFZ0F5QURRZWdCYWpZQzJBRWdBMEhJQVdvZ0EwSFlBV29Ra0FVQ1FBSkFBa0FDUUFKQUFrQWdBeTBBeUFGQkFYRkZEUUFnQXlcXFxuMEF5UUVpQkVHL2YycEIvd0Z4UVJwSlFRVjBJQVJ5UWY4QmNVSGtBRWNOQUNBRFFjQUJhaUFEUWRnQmFoQ1FCU0FETFFEQUFVRUJjVVVOXFxcbkFDQURMUURCQVNJRVFiOS9ha0gvQVhGQkdrbEJCWFFnQkhKQi93RnhRZUVBUncwQUlBTkJ1QUZxSUFOQjJBRnFFSkFGSUFNdEFMZ0JRUVxcXG5GeFJRMEFJQU10QUxrQklnUkJ2MzlxUWY4QmNVRWFTVUVGZENBRWNrSC9BWEZCOUFCSERRQWdBMEd3QVdvZ0EwSFlBV29Ra0FVZ0F5MEFcXFxuc0FGQkFYRkZEUUFnQXkwQXNRRWlCRUcvZjJwQi93RnhRUnBKUVFWMElBUnlRZjhCY1VIaEFFY05BQ0FEUWFnQmFpQURRZGdCYWhDUUJTXFxcbkFETFFDb0FVRUJjVVVOQUNBRExRQ3BBVUgvQVhGQk9rY05BQ0FEUWFBQmFpQUNJQUVnQVNBREtBTHNBV3NnQXlnQzZBRnFRWmp5d0FBUVxcXG45UVVnQTBHWUFXb2dBeWdDb0FFZ0F5Z0NwQUVRN0FNZ0F5Z0NtQUVpQlVVTkFDQURLQUtjQVNFR0lBTkJBRFlDOEFFZ0F5QUZOZ0xvQVNcXFxuQURJQVVnQm1vMkF1d0JBMEFnQTBHUUFXb2dBMEhvQVdvUTd3Y2dBeTBBa0FGQkFYRkZEUU1nQXkwQWtRRWhBaUFESUFNb0F2QUJJZ0ZCXFxcbkFXb2lCRFlDOEFFZ0FrSC9BWEVpQWtFalJnMERJQUpCTEVjTkFBc2dBMEdJQVdvZ0JTQUdJQUZCcVBMQUFCREJCaUFES0FLTUFTRUJJQVxcXG5Nb0FvZ0JJUUlnQTBHQUFXb2dCU0FHSUFSQnVQTEFBQkQxQlNBQ1JRMENJQU1vQW9RQklRWWdBeWdDZ0FFaEJ5QURRZmdBYWlBQ0lBRVFcXFxuaEFJZ0F5QURLQUo0SWdJZ0F5Z0NmQ0lCYWpZQzNBRWdBeUFDTmdMWUFTQURJQU5CMkFGcU5nS01BaUFEUWZBQWFpQURRWXdDYWhDb0JTXFxcbkFETFFCd1FRRnhSUTBESUFNdEFIRkIvd0Z4UVRSSERRTWdBMEhvQUdvZ0EwR01BbW9RcUFVZ0F5MEFhRUVCY1VVTkF5QURMUUJwUWY4QlxcXG5jVUUyUmcwQkRBTUxJQUJCQWpvQUxDQUFRUUE2QUFBTUJBc2dBMEhnQUdvZ0EwR01BbW9RcUFVZ0F5MEFZRUVCY1VVTkFTQURMUUJoSWdcXFxuUkJ2MzlxUWY4QmNVRWFTVUVGZENBRWNrSC9BWEZCNVFCSERRRWdBMEhZQUdvZ0EwR01BbW9RcUFVZ0F5MEFXRUVCY1VVTkFTQURMUUJaXFxcbklnUkJ2MzlxUWY4QmNVRWFTVUVGZENBRWNrSC9BWEZCOHdCSERRRWdBMEhRQUdvZ0EwR01BbW9RcUFVZ0F5MEFVRUVCY1VVTkFTQURMUVxcXG5CUklnUkJ2MzlxUWY4QmNVRWFTVUVGZENBRWNrSC9BWEZCNFFCSERRRWdBMEhJQUdvZ0EwR01BbW9RcUFVZ0F5MEFTRUVCY1VVTkFTQURcXFxuTFFCSklnUkJ2MzlxUWY4QmNVRWFTVUVGZENBRWNrSC9BWEZCNGdCSERRRWdBMEVBT2dEc0FTQURJQU5CMkFGcU5nTG9BUU5BSUFOQndBXFxcbkJxSUFOQjZBRnFFTkFISUFNdEFFQkJBWEZGRFFJQ1FDQURMUUJCSWdWQi93RnhRWGRxSWdSQkYwc05BRUVCSUFSMFFaT0FnQVJ4RFFFTFxcXG5DeUFGUWY4QmNVRTdSdzBCSUFOQk9Hb2dBaUFCSUFNb0F0d0JJQU1vQXRnQmEwSGc4c0FBRU1FR0lBTW9BandoQlNBREtBSTRJUVFNQWdcXFxuc2dBRUVDT2dBc0lBQkJBVG9BQUF3Q0MwRUFJUVFMUVFBaENDQURRUUEyQXVBQklBTkNBVGNEMkFFQ1FDQUVJQUlnQkJzaUFpQUZJQUVnXFxcbkJCc2lBVUU3RU04SFJRMEFJQU5CMkFGcVFjanl3QUJCMHZMQUFCQ0FDUXNnQXlBQ05nTG9BU0FESUFJZ0FXbzJBdXdCQWtBRFFDQURRVFxcXG5CcUlBTkI2QUZxRU84SEFrQUNRQUpBSUFNdEFEQkJBWEVOQUNBRFFlZ0JhaUFES0FMWUFTQURLQUxnQVJCR0FrQWdBeWdDNkFFaUFVVU5cXFxuQUNBREtBS0lBaUVKSUFNb0FvUUNJUW9nQXlnQ2dBSWhBaUFES0FMOEFTRUlJQU1vQXZnQklRc2dBeWdDOUFFaEJTQURLQUx3QVNFTUlBXFxcbk1vQXV3QklRME1CUXRCQkNFTUlBTkJLR3BCQkVFQUVNMEVJQU1vQWl3aERTQURLQUlvSWdGQjlNcmhvd2MyQUFCQkJTRUlJQU5CSUdwQlxcXG5CVUVBRU0wRUlBTW9BaVFoQ3lBREtBSWdJZ1ZCQUNnQTB2SkFOZ0FBSUFWQkJHcEJBQzBBMXZKQU9nQUFJQU5CR0dwQkJFRVlRUUFRaXdcXFxuZ2dBeWdDR0NJQ1JRMEJJQU5CRUdwQkIwRUFFTTBFSUFNb0FoUWhDaUFES0FJUUlnbEJBQ2dBMS9KQU5nQUFJQWxCQTJwQkFDZ0EydkpBXFxcbk5nQUFJQU5CQ0dwQkNFRUFFTTBFSUFNb0Fnd2hEaUFES0FJSUlnOUMxYWExaWJUcTBLVEpBRGNBQUNBQ1FRZzJBaFFnQWlBT05nSVFJQVxcXG5JZ0R6WUNEQ0FDUVFjMkFnZ2dBaUFLTmdJRUlBSWdDVFlDQUVFQklRcEJBU0VKREFRTEFrQWdBeTBBTVNJQlFmOEJjU0lDUVExTERRQkJcXFxuQVNBQ2RFR0F6QUJ4RFFNTEFrQWdBVUdCZjJwQi93RnhRYUFCU3cwQUlBRWdBMEhZQVdvUWhBa01Bd3NDUUFKQUFrQUNRQUpBQWtBZ0FrXFxcbkZFYWc0RUFRY0NBd0FMQWtBZ0FrRmdhZzREQkFjQUJ3c2dDRUVCY1VVTkJnd0VDeUFJUVFGeFJRMEZEQU1MSUFoQkFYRU5BZ3dFQ3lBRFxcXG5RZGdCYWtFL0VPUUVRUUVoQ0F3RUN5QUlRUUZ4UlEwQ0N5QUJJQU5CMkFGcUVJUUpRUUVoQ0F3Q0MwRUVRUmdRbWcwQUN5QURRZGdCYWlcXFxuQUNFT1FFREFBTEN5QURRZGdCYWhEakNpQUFJQVJCQUVjNkFDd2dBQ0FHTmdJb0lBQWdCellDSkNBQUlBazJBaUFnQUNBS05nSWNJQUFnXFxcbkFqWUNHQ0FBSUFnMkFoUWdBQ0FMTmdJUUlBQWdCVFlDRENBQUlBdzJBZ2dnQUNBTk5nSUVJQUFnQVRZQ0FBc2dBMEdRQW1va0FBdXdEd1xcXG5FTmZ5TUFRYUFCYXlJQ0pBQWdBa0VnYWlBQlFmQUFFS1FOR2lBQVFRQVFxUW9nQWtIQUFHb2hBeUFDUVRCcUlRUWdBa0VzYWlFRkEwQWdcXFxuQWlnQ0pDRUdJQUlvQWlBaEJ3SkFBa0FDUUFKQUEwQWdBaWdDUENFSUlBSW9BalFoQ1NBQ0tBSXdJUW9nQWk4QkxDSUxJUUVDUUFOQUlBXFxcbmdoREFKQUEwQUNRQUpBQWtBZ0J3NERCQUFCQkFzQ1FBSkFBa0FnQ2tHQWdNUUFSZzBBSUFGQi8vOERjU0lCUVFWSkRRRWdBaUFNTmdJOFxcXG5JQUlnQ3pzQkxDQUNRUUUyQWlBZ0FVRUVRWUNld1FBUWd3VUFDMEVBSVFkQkFDRUlJQVlnREU4TkJnd0JDeUFHSUFGUERRSWdCQ0VKQ3lcXFxuQUNJQXcyQWp3Z0FpQUxPd0VzSUFKQkFUWUNJQ0FKSUFaQkFuUnFLQUlBSVFzZ0FpQUdRUUZxTmdJa0RBa0xJQUlnRERZQ1BDQUNJQXM3XFxcbkFTd2dBa0VDTmdJZ0FrQUNRQ0FLUVlDQXhBQkdEUUFnQVVILy93TnhJZ0ZCQlU4TkJpQUVJUWtnQmlBQlNRMEJJQUZGRFFrZ0FrRUFPd1xcXG5Fc0RBa0xJQVlnREU4TkJ3c2dDU0FHUVFKMGFpZ0NBQ0VMSUFJZ0JrRUJhallDSkF3SUMwRUFJUWRCQUNBTElBRWJJUXRCQUNFQkRBQUxcXFxuQ3dzZ0FpQU1OZ0k4SUFJZ0N6c0JMQ0FDUVFBMkFpQURRQ0FDSUFNMkFwUUJJQU1oQVFKQUFrQURRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrXFxcbkFDUUFKQUlBRkJ4QUJxS0FJQUlnY05BQUpBSUFGQk9Hb2lCeTBBQUVFQ1JnMEFJQUZCSkdvUW1nSWlBVUdBZ01RQVJ3MERJQWRCQWpvQVxcXG5BQ0FDS0FLVUFTRUJDeUFCUVJScUtBSUFJQUV2QVFBZ0FTZ0NDRUdBZ01RQVJodEZEUU1nQVJDTEJDQUNLQUtVQVNJQlFjUUFhaUFCUVJcXFxuUnFLQUlBSUFFdkFRQWdBU2dDQ0NJR1FZQ0F4QUJHR3lJSE5nSUFEQUVMSUFFb0FnZ2hCZ3NnQVNnQ1FDRUxBa0FDUUNBR1FZQ0F4QUJHXFxcbklnd05BQ0FCTHdFQUlnWkJCVThOQkNBQlFRUnFJUW9NQVFzZ0FVRVVhaWdDQUNFR0lBRW9BZ3doQ2dzZ0JpQUxUUTBESUFvZ0MwRURkR1xcXG5vb0FnUWhEUUpBSUF0QkFXb2lDeUFIUmcwQUlBRWdDellDUUF3TEN5QUJRUlJxS0FJQUlBRXZBUUFnREJzZ0Iyc2hDVUVFSVFzZ0FVRUVcXFxuYWlFT1FRQWhCd05BQWtBZ0NTQUhSdzBBQWtBZ0FTZ0NDRUdBZ01RQVJnMEFJQWtnQVM4QkFFOE5EQ0FCSUFrN0FRQU1EQXNnQVNnQ0ZDXFxcbkFKU1EwTElBRWdDVFlDRkF3TEN5QUJLQUpFSVFvQ1FBSkFJQUVvQWdoQmdJREVBRVlpREEwQUlBNGhDQ0FCTHdFQUlnWkJCVWtOQVNBR1xcXG5RUVJCZ0o3QkFCQ0RCUUFMSUFFb0FoUWhCaUFCS0FJTUlRZ0xJQVlnQnlBS2FpSUtUUTBGSUFnZ0NrRURkR29pQmlnQ0JDRUtJQVl0QUFcXFxuQWhDQUpBQWtBZ0RBMEFJQUpCQUNBQkx3RUFJQTVCQkVId25zRUFFTzRHSUFJb0FnUWhCaUFDS0FJQUlRd01BUXNnQVNnQ0ZDRUdJQUVvXFxcbkFnd2hEQXNnQmlBSFRRMEdJQXdnQzJvaUJpQUtOZ0lBSUFaQmZHb2dDRG9BQUNBSFFRRnFJUWNnQzBFSWFpRUxEQUFMQ3dKQUlBSW9BcFxcXG5RQkxRQklEUUFnQWlBQ1FaUUJhallDbUFFQ1FDQUJRWUFCU1EwQUFrQUNRQ0FCRU00TURRQWdBa0VJYWlBQkVLOEVJQUlvQWdnaUIwVU5cXFxuQVNBQ0tBSU1RUUowSVFFRFFDQUJSUTBMSUFKQm1BRnFJQWNvQWdBUXpBd2dBVUY4YWlFQklBZEJCR29oQnd3QUN3c2dBaUFDUVpRQmFqXFxcbllDbkFFZ0FrR2NBV29nQVVHQXFIMXFJZ0ZCekFSdUlnZEJnQ0pxRU13TUlBSkJuQUZxSUFFZ0IwSE1CR3hyUWYvL0EzRkJIRzVCNFNKcVxcXG5FTXdNSUFGQkhIQWlBVVVOQ1NBQ1Fad0JhaUFCUWFjamFoRE1EQXdKQ3lBQ1FaZ0JhaUFCRU13TURBZ0xJQUpCbUFGcUlBRVF6QXdNQndcXFxuc2dBaUFDUVpRQmFqWUNtQUVDUUNBQlFZQUJTUTBBQWtBQ1FDQUJFTTRNRFFBZ0FrRVlhaUFCRUs0RUFrQWdBaWdDR0NJSFJRMEFJQUlvXFxcbkFod2hBUXdKQ3lBQ1FSQnFJQUVRcndRZ0FpZ0NFQ0lIUlEwQklBSW9BaFFoQVF3SUN5QUNJQUpCbEFGcU5nS2NBU0FDUVp3QmFpQUJRWVxcXG5Db2ZXb2lBVUhNQkc0aUIwR0FJbW9RekF3Z0FrR2NBV29nQVNBSFFjd0ViR3RCLy84RGNVRWNia0hoSW1vUXpBd2dBVUVjY0NJQlJRMElcXFxuSUFKQm5BRnFJQUZCcHlOcUVNd01EQWdMSUFKQm1BRnFJQUVRekF3TUJ3c2dBa0dZQVdvZ0FSRE1EQXdHQ3lBQ1FnSTNBeUJCQWlFSFFRXFxcbkFoQmlBQ0tBSW9JZ3RCZ0lERUFFWU5DeUFDUVlDQXhBQTJBaWdNRGdzZ0JrRUVRWUNld1FBUWd3VUFDeUFMSUFaQnVKYkJBQkNCQlFBTFxcXG5JQW9nQmtIa2xzRUFFSUVGQUFzZ0J5QUdRZlNXd1FBUWdRVUFDeUFCUVFKMElRRURRQ0FCUlEwQklBSkJtQUZxSUFjb0FnQVF6QXdnQVVcXFxuRjhhaUVCSUFkQkJHb2hCd3dBQ3dzZ0FpZ0NsQUVoQVF3QUN3c2dBVUlBTndKQUN5QU5FSklNSVFFQ1FBSkFJQUlvQWlnaUMwR0FnTVFBXFxcblJ3MEFJQUZCL3dGeFJRMEJJQTBoQ3d3SEN3SkFBa0FDUUNBQ0xRQ01BUTBBSUFzZ0RSQ1ZBU0lIUVlDQXhBQkhEUUVnQVVIL0FYRU5BaVxcXG5BQ0lBMDJBaWdNQ1FzQ1FDQUNMUUNOQVNBQlFmOEJjU0lIVHcwQUlBc2dEUkNWQVNJSFFZQ0F4QUJHRFFJZ0FpQUhOZ0lvREFRTElBY05cXFxuQVNBQ1FRQTZBSXdCSUFJZ0RUWUNLQ0FDUWdFM0F5QU1DQXNnQWlBSE5nSW9EQUlMSUFVZ0RSREFBeUFDSUFFNkFJMEJJQUpCQVRvQWpBXFxcbkVNQVFzZ0FpQU5OZ0lvREFBTEN3c2dBVUVFUVlDZXdRQVFnd1VBQ3lBQ1FRQTJBandMSUFJb0FpZ2hDeUFDUVlDQXhBQTJBaWdnQzBHQVxcXG5nTVFBUmcwQkN5QUFJQXNRNEFRTUFRc0xJQU1RK1FvZ0JSRDRDaUFDUWFBQmFpUUFDNzBPQWd4L0FuNGpBRUdRQW1zaUJpUUFJQVpCOEFcXFxuQnFJQUVRdWdRQ1FBSkFBa0FDUUNBR0xRQndEUUFnQmkwQWNRMENJQVpCQlRZQzBBRWdBU0FHUWRBQmFoRGRDQ0VCREFFTElBWW9BblFoXFxcbkFRc2dBRUVBTmdJUUlBQWdBVFlDQUF3QkN3SkFBa0FDUUFKQUFrQUNRQ0FHTFFCeUlnZEIyd0JHRFFBQ1FDQUhRZnNBUmcwQUlBRWdCa1xcXG5HSUFtcEIvSjNBQUJCNElRY01CZ3NnQVNBQkxRQVlRWDlxSWdjNkFCZ0NRQ0FIUWY4QmNVVU5BQ0FCRUlNTUlBWkJNR29nQVJDRURDQUdcXFxuS0FJd0lRY2dCaUFHTFFBMFFRRnhPZ0JzSUFZZ0J6WUNhRUVBSVFnZ0JrRUFOZ0tBQVNBR1FmQUFha0VVYWlFSklBWkI4QUJxUVFSeUlRXFxcbm9nQmtIUUFXcEJGR29oQ3lBR1FkQUJha0VFY2lFTUEwQWdCa0hRQVdvZ0JrSG9BR29Ra0FFQ1FBSkFBa0FDUUNBR0xRRFFBUTBBSUFZdFxcXG5BTkVCRGdNREFnRUNDeUFHS0FMVUFTRUhEQWNMQWtBQ1FDQUlEUUFnQmtFZ2FoRFFDRUVFSVExQmdJUEFBQ0VJUVFBaEN5QUdLUU1vSVJcXFxuSWdCaWtESUNFVFFRQWhDa0VBSVF4QkFDRU9RUUFoRHd3QkN5QUdLQUtjQVNFUUlBWW9BcGdCSVE4Z0JpZ0NsQUVoRGlBR0tBS1FBU0VOXFxcbklBWW9Bb3dCSVF3Z0JpZ0NpQUVoQ2lBR0tBS0VBU0VMSUFZcEEzZ2hFaUFHS1FOd0lSTUxJQk5DSUlpbklSRWdFNmNoQnd3SEN5QUdRZVxcXG5nQWFoRGRDaUlIUlEwQkRBVUxBa0FnQ0VVTkFFR3Nxc0FBUVFjUXpnVWhCd3dGQ3lBR1FkQUJhaUFHUWVnQWFoRFNDU0FHS0FMUUFTRUhcXFxuSUFZb0F1QUJJZ2hGRFFRZ0JrSEFBV3BCQ0dvaURTQU1RUWhxS0FJQU5nSUFJQVpCb0FGcVFRaHFJZzRnQzBFSWFpa0NBRGNEQUNBR1FhXFxcbkFCYWtFUWFpSVBJQXRCRUdvcEFnQTNBd0FnQmtHZ0FXcEJHR29pRUNBTFFSaHFLQUlBTmdJQUlBWWdEQ2tDQURjRHdBRWdCaUFMS1FJQVxcXG5Od09nQVNBR1FmQUFhaERVQ3lBS0lBWXBBOEFCTndJQUlBcEJDR29nRFNnQ0FEWUNBQ0FKSUFZcEE2QUJOd0lBSUFsQkNHb2dEaWtEQURcXFxuY0NBQ0FKUVJCcUlBOHBBd0EzQWdBZ0NVRVlhaUFRS0FJQU5nSUFJQVlnQnpZQ2NDQUdJQWcyQW9BQkRBQUxDeUFHUVJnMkF0QUJJQUVnXFxcbkJrSFFBV29RM1FnaEFRd0JDeUFCSUFFdEFCaEJmMm9pQnpvQUdBSkFJQWRCL3dGeFJRMEFJQUVRZ3d3Z0JrRVlhaUFCRUlRTUlBWW9BaFxcXG5naEJ5QUdJQVl0QUJ4QkFYRTZBSFFnQmlBSE5nSndJQVpCMEFGcUlBWkI4QUJxRUxzQkFrQUNRQUpBQWtBZ0JpZ0MwQUVOQUNBR1FZUUNcXFxuYWlnQ0FDRUxJQVpCNkFGcUtBSUFJZ2hGRFFFZ0JrR0FBbW9vQWdBaENpQUdRZndCYWlnQ0FDRU1JQVpCK0FGcUtBSUFJUTBnQmtIMEFXXFxcbm9vQWdBaERpQUdRZkFCYWlnQ0FDRVBJQVpCN0FGcUtBSUFJUkFnQmtIZ0FXb3BBd0FoRWlBR0tRUFlBU0VUREFJTElBWW9BdFFCSVFkQlxcXG5BQ0VJREFJTElBWkJDR29RMEFoQmdJUEFBQ0VJUVFRaERVRUFJUW9nQmlrREVDRVNJQVlwQXdnaEUwRUFJUXhCQUNFT1FRQWhEMEVBSVJcXFxuQUxJQk5DSUlpbklSRWdFNmNoQndzZ0FTQUJMUUFZUVFGcU9nQVlJQVlnQVJDeEFpSUpOZ0tBQWlBR0lBczJBdndCSUFZZ0NqWUMrQUVnXFxcbkJpQU1OZ0wwQVNBR0lBMDJBdkFCSUFZZ0RqWUM3QUVnQmlBUE5nTG9BU0FHSUJBMkF1UUJJQVlnQ0RZQzRBRWdCaUFTTndQWUFTQUdJQlxcXG5FMkF0UUJJQVlnQnpZQzBBRUNRQUpBSUFoRkRRQWdDUTBCSUFaQjJBQnFRUWhxSUFaQjBBRnFRUVJ5SWd0QkNHb29BZ0EyQWdBZ0JrRTRcXFxuYWtFSWFpQUdRZVFCYWlJSlFRaHFLUUlBTndNQUlBWkJPR3BCRUdvZ0NVRVFhaWtDQURjREFDQUdRVGhxUVJocUlBbEJHR29vQWdBMkFnXFxcbkFnQmlBTEtRSUFOd05ZSUFZZ0NTa0NBRGNET0F3R0MwRUFJUWdnQ1VVTkJTQUdRWUFDYWhDdkNRd0ZDeUFHUWRBQmFoRFpDa0VBSVFnZ1xcXG5DU0VIREFRTElBWkJHRFlDMEFFZ0FTQUdRZEFCYWhEZENDRUJDeUFBUVFBMkFoQWdBQ0FCTmdJQURBUUxJQVpCOEFCcUVOUUxRUUFoQ0FcXFxuc2dBU0FCTFFBWVFRRnFPZ0FZSUFZZ0FSREZBeUlKTmdLQUFpQUdJQkEyQXZ3QklBWWdEellDK0FFZ0JpQU9OZ0wwQVNBR0lBMDJBdkFCXFxcbklBWWdERFlDN0FFZ0JpQUtOZ0xvQVNBR0lBczJBdVFCSUFZZ0NEWUM0QUVnQmlBU053UFlBU0FHSUJFMkF0UUJJQVlnQnpZQzBBRUNRQVxcXG5KQUlBaEZEUUFnQ1EwQklBWkIyQUJxUVFocUlBWkIwQUZxUVFSeUlndEJDR29vQWdBMkFnQWdCa0U0YWtFSWFpQUdRZVFCYWlJSlFRaHFcXFxuS1FJQU53TUFJQVpCT0dwQkVHb2dDVUVRYWlrQ0FEY0RBQ0FHUVRocVFSaHFJQWxCR0dvb0FnQTJBZ0FnQmlBTEtRSUFOd05ZSUFZZ0NTXFxcbmtDQURjRE9Bd0NDMEVBSVFnZ0NVVU5BU0FHUVlBQ2FoQ3ZDUXdCQ3lBR1FkQUJhaERaQ2tFQUlRZ2dDU0VIQ3lBSVJRMEFJQUFnQmlrRFxcXG5XRGNDQkNBQUlBWXBBemczQWhRZ0FDQUlOZ0lRSUFBZ0J6WUNBQ0FBUVF4cUlBWkIyQUJxUVFocUtBSUFOZ0lBSUFCQkhHb2dCa0U0YWtcXFxuRUlhaWtEQURjQ0FDQUFRU1JxSUFaQnlBQnFLUU1BTndJQUlBQkJMR29nQmtIUUFHb29BZ0EyQWdBTUFRc2dBU0FIRUw0TklRRWdBRUVBXFxcbk5nSVFJQUFnQVRZQ0FBc2dCa0dRQW1va0FBdkpEUUVOZnlNQVFjQUFheUlDSkFBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa1xcXG5BZ0FVRWNhaTBBQUNJRFFRTkdEUUFnQVVFZGFpMEFBQ0lFUWY4QmNTSUZRUU5HRFFBZ0F5QUZTdzBBUVFBZ0FVRUlhaUFCTFFBSUlnWkJcXFxuQmtZaUJ4c2hDQ0FEUVFGSFFYOGdBeHNoQ1NBQ1FTQnFRUVZ5SVFvZ0FTMEFIaUVMQWtBQ1FBSkFJQU1OQUNBQlFSMXFJUXdnQ1VGL1JpXFxcbkVOQTBBQ1FBSkFJQVJCL3dGeERnTUhBUUFIQ3lBQktBSUVJUVVDUUFKQUlBME5BRUVBSVFOQkFDRU9JQWxCL3dGeERRRUxJQUVRN3dFaFxcXG5EaUFMSVFNTFFRQWhCQUpBSUFjTkFFRUdJUVFDUUFKQUFrQUNRQUpBSUFndEFBQU9CZ1FEQlFJQkFBUUxRUUloQkF3RUN5QUlLQUlJSUFcXFxuZ29BaEFpQkVFQmFrRUFJQVFiYWtFQ2FpRUVEQU1MSUFnb0FnaEJCR29oQkF3Q0N5QUlLQUlJSUFnb0FoQWlCRUVCYWtFQUlBUWJha0VJXFxcbmFpRUVEQUVMSUFnb0FnaEJCR29oQkFzQ1FDQUZJQTRnQTBIL0FYRnFJQVJxU3cwQVFRRWhCQ0FNUVFFNkFBQU1BZ3NnQWtFZ2FpQUJFSVxcXG5FQklBSW9BaUFoQkNBQ1FRaHFJQXBCQ0dvcEFBQTNBd0FnQWtFUWFpQUtRUkJxS1FBQU53TUFJQUpCRjJvZ0NrRVhhaWdBQURZQUFDQUNcXFxuSUFvcEFBQTNBd0FnQlNBRWF5RU9JQVVnQkVrTkJ5QUNMUUFrSVFRZ0FTQU9OZ0lFSUFSQi93RnhRUXBIRFExQkFpRUVEQUVMSUF4QkFEXFxcbm9BQUFKQUFrQWdDMEgvQVhFTkFFRUFJUVFnQmc0SEFnSUNDZ29DQVFvTElBRW9BZ1FoQlF3REN5QUJFTzhCUlEwQUN5QUJLQUlFSVFVTVxcXG5CZ3NnQ1VIL0FYRWhCeUFCS0FJRUlRVUNRQUpBSUFsQmYwWU5BQ0FIRFFFTElBdEIvd0Z4SVFzZ0FVRWRhaUVNSUFsQmYwWWhDUU5BQWtcXFxuQUNRQUpBSUFSQi93RnhEZ01JQVFBSUN3SkFBa0FnQ1EwQVFRQWhCQ0FIRFFFTElBRVE3d0VoQkFzQ1FDQUZJQVFnQzJwTERRQkJBU0VFXFxcbklBeEJBVG9BQUF3Q0N5QUNRU0JxSUFFUWdRRWdBaWdDSUNFRUlBSkJDR29nQ2tFSWFpa0FBRGNEQUNBQ1FSQnFJQXBCRUdvcEFBQTNBd1xcXG5BZ0FrRVhhaUFLUVJkcUtBQUFOZ0FBSUFJZ0Npa0FBRGNEQUNBRklBUnJJUTRnQlNBRVNRMElJQUl0QUNRaEJDQUJJQTQyQWdRZ0JFSC9cXFxuQVhGQkNrY05Ea0VDSVFRZ0RpRUZEQUVMSUF4QkFEb0FBQ0FMRFFOQkFDRUVBa0FnQmc0SEFRRUJDZ29CQUFvTElBRVE3d0VOQ0FzZ0F5XFxcbkFFVFEwQURBUUxDeUFMUWY4QmNVVU5BU0FCUVIxcUlRNGdCU0VMQTBBQ1FDQUVRZjhCY1NJRVFRSkdEUUFDUUNBRURnSUdBQVlMSUFGQlxcXG5IV3BCQURvQUFBd0NDd0pBQWtBZ0N3MEFRUUVoQkNBT1FRRTZBQUJCQUNFTERBRUxJQUpCSUdvZ0FSQ0JBU0FDS0FJZ0lRUWdBa0VJYWlcXFxuQUtRUWhxS1FBQU53TUFJQUpCRUdvZ0NrRVFhaWtBQURjREFDQUNRUmRxSUFwQkYyb29BQUEyQUFBZ0FpQUtLUUFBTndNQUlBc2dCR3NoXFxcbkJRSkFJQXNnQkU4TkFDQUZJUTRnQ3lFRkRBY0xJQUl0QUNRaEJDQUJJQVUyQWdRZ0JFSC9BWEZCQ2tjTkRFRUNJUVFnQlNFTEN5QURJQVxcXG5STkRRQU1Bd3NMSUFWQmYyb2hCQUpBSUFWRkRRQWdBRUVHT2dBQUlBRWdCRFlDQkF3TkN5QUVRUUJCN092TkFCQ0RCUUFMSUFGQkhXb2hcXFxuRGlBRklRc0RRQUpBQWtBQ1FDQUVRZjhCY1E0REJRRUFCUXNDUUNBTERRQkJBU0VFSUE1QkFUb0FBRUVBSVFzTUFnc2dBa0VnYWlBQkVJXFxcbkVCSUFJb0FpQWhCQ0FDUVFocUlBcEJDR29wQUFBM0F3QWdBa0VRYWlBS1FSQnFLUUFBTndNQUlBSkJGMm9nQ2tFWGFpZ0FBRFlBQUNBQ1xcXG5JQW9wQUFBM0F3QWdDeUFFYXlFRkFrQWdDeUFFVHcwQUlBVWhEaUFMSVFVTUJnc2dBaTBBSkNFRUlBRWdCVFlDQkNBRVFmOEJjVUVLUndcXFxuMExRUUloQkNBRklRc01BUXRCQUNFRUlBNUJBRG9BQUFKQUlBWU9Cd0VCQVFjSEFRQUhDeUFCRU84QkRRVUxJQU1nQkUwTkFBc0xJQUJCXFxcbkNqb0FBQXdLQ3lBR1FRWkdEUWdDUUFKQUlBZ3RBQUFPQmdZRkJ3QUJCd1lMSUFnb0FnaEJCR3BGRFFrTUJnc2dDQ2dDQ0NBSUtBSVFJZ1xcXG5SQkFXcEJBQ0FFRzJwQkFtcEZEUWdNQlFzZ0RpQUZRZHpyelFBUWd3VUFDeUFGUVg5cUlRUWdCVVVOQlNBQVFRYzZBQUFnQVNBRU5nSUVcXFxuREFjTElBQkJCam9BQUF3R0N5QUlLQUlJSUFnb0FoQWlCRUVCYWtFQUlBUWJha0VJYWcwQkRBUUxJQWdvQWdoQkJHcEZEUU1MSUFBZ0JqXFxcbm9BQUNBQlFSMXFRUU02QUFBZ0FDQUJLUUlBTndJVUlBQWdBVUVKYWlrQUFEY0FBU0FBUVFscUlBRkJFV29wQUFBM0FBQWdBRUVRYWlBQlxcXG5RUmhxS0FBQU5nQUFEQU1MSUFBZ0JEb0FBQ0FBSUFJcEF3QTNBQUVnQUVFSmFpQUNRUWhxS1FNQU53QUFJQUJCRVdvZ0FrRVFhaWtEQURcXFxuY0FBQ0FBUVJocUlBSkJGMm9vQUFBMkFBQU1BZ3NnQkVFQVFmenJ6UUFRZ3dVQUN5QUFRUW82QUFBZ0FVRWRha0VET2dBQUN5QUNRY0FBXFxcbmFpUUFDK1FOQVF4L0l3QkJrQUZySWdZa0FDQUJRUzhRM2dRZ0FVRXZFTjRFSUFFb0FnZ2hCeUFHSUFNMkFvd0JJQVlnQWpZQ2lBRWdCaVxcXG5BRE5nSk1JQVlnQWpZQ1NFRUFJUWdnQkVIL0FYRkJBa1loQ1VFQUlRb0NRQU5BQWtBQ1FBSkFBa0FDUUFKQUlBWkJ5QUJxRU1nSklndEJcXFxuUVdvT0FnY0JBQXNnQzBIY0FFWU5BU0FMUVNOR0RRWWdDMEdBZ01RQVJnMEdJQXRCTDBjTkJBd0dDeUFJUlEwQklBRW9BaGdpQzBVTkFpXFxcbkFMUVFvZ0FTZ0NIQ2dDRkJFRkFBd0NDeUFKUlEwRURBSUxJQUVvQWhnaUMwVU5BQ0FMUVFJZ0FTZ0NIQ2dDRkJFRkFBc2dCaWdDVENFTVxcXG5JQVlvQWtnaENDQUtJUTBMSUFwQkFXb2hDZ3dBQ3dzZ0J5RU9Ba0FnQ0VVTkFBSkFBa0FDUUFKQUlBMUZEUUJCQUNFT1FRQWhEMEVBSVFcXFxua01BUXNnQmlBTU5nSnNJQVlnQ0RZQ2FDQUdRU0JxSUFaQjZBQnFFTVlJSUFZb0FpQWlDMEZkYWlJS1FSeExEUUZCQVNBS2RFR0JvSUNBXFxcbkFYRkZEUUVNQWdzQ1FBSkFBMEFnRDBFQmN5RURBa0FEUUNBTklRb0RRQUpBSUFwQkFFb05BQ0FCS0FJSUlRb2dDU0FQY2tFQmNRMEREQVxcXG5ZTElBWkJJR29nQmtHSUFXb1F4d01nQmlnQ0lDSUxRWUNBeEFCR0RRUWdCaWdDS0NFTklBWW9BaVFoQWdKQUFrQWdDMEU2UncwQUlBNUZcXFxuRFFFTElBRWdDeUFHUVlnQmFoRFlBU0FHUVlDTHdRQTJBaWdnQmlBTk5nSWtJQVlnQWpZQ0lDQUJJQVpCSUdvUTVnVWdDa0YvYWlFS0lBXFxcbk1nQ1hJaENRd0JDd3NnQ2tGL2FpRU5RUUVoRGlBQktBSUlJUkFnQ2tFQlRRMEFDeUFCUVRvUTNnUWdDa0YvYWlFTlFRRWhEa0VCSVE4TVxcXG5BUXNMSUFGQndBQVEzZ1FNQVF0QndJTEJBRUVyUWZDS3dRQVFnd2NBQ3lBUUlBb2dEaHNoRGlBTUlRTWdDQ0VDREFJTEFrQWdDMEdBZ01cXFxuUUFSZzBBSUFSQi93RnhRUUpHRFFBZ0MwSGNBRVlOQVFzZ0RDRURJQWdoQWlBSElRNE1BUXRCQUNFQ0lBd2hBMEVBSVE0TEFrQUNRQUpBXFxcbklBSU5BQ0FBUVFJMkFnQWdBQ0FPT2dBRURBRUxJQUVvQWdnaERDQUdRZWdBYWlBQ0lBTWdCQkJFQWtBQ1FDQUdMUUJvSWdwQkEwY05BQ1xcXG5BR0xRQnBJUXNNQVFzZ0JpMEFhU0VMSUFaQnlBQnFRUkpxSUFaQjZBQnFRUkpxTHdFQU93RUFJQVpCeUFCcVFRcHFJQVpCNkFCcVFRcHFcXFxuS1FFQU53RUFJQVlnQmlrQmFqY0JTaUFHSUFzNkFFa2dCaUFLT2dCSUlBWW9BbndoQ2lBR0lBWW9Bb0FCSWcwMkFtUWdCaUFLTmdKZ0lBXFxcblpCNkFCcVFReHFRZ0UzQWdBZ0JrRUJOZ0pzSUFaQm9JZkJBRFlDYUNBR1FkZ0JOZ0tNQVNBR0lBWkJpQUZxTmdKd0lBWWdCa0hJQUdvMlxcXG5Bb2dCSUFFZ0JrSG9BR29ReHdWQmtJdkJBQkRsQ0NBQktBSUlJUU1DUUFKQUlBWXRBRWdOQUNBR1FjZ0Fha0VNYWlnQ0FBMEFRUUFoQ3lcXFxuQUdRZUFBYWtHZWg4RUFRUUVRalFraENDQUVRZjhCY1VFQ1J3MEJJQWdOQVFzZ0JrRVlhaUFHUWVBQWFrRTZFT3dHQWtBQ1FDQUdLQUlZXFxcbklnZ05BRUVBSVE4TUFRc2dBUzBBSUNFUElBWWdCaWdDSENJTk5nS01BU0FHSUFnMkFvZ0JRUUFoQzBFQklRSWdDQ0VLQWtBQ1FBTkFJQVxcXG5aQjZBQnFJQVpCaUFGcUVNWUlJQVlvQW1naUNFR0FnTVFBUmcwQ0FrQWdDRUZRYWlJSlFRcFBEUUFnQ1NBTFFRcHNhaUlMUWYvL0Ewc05cXFxuQWlBR0tBSnNJUW9nQmlBR0tBSndJZzAyQW93QklBWWdDallDaUFGQkFDRUNEQUVMQ3lBUFFmOEJjUTBCQWtBZ0NFRmRhaUlKUVJ4TERRXFxcbkJCQVNBSmRFR0JvSUNBQVhFTkFnc2dDRUhjQUVZTkFRdEJBaUVMREFJTEFrQUNRQ0FDUVFGeERRQWdCa0VRYWlBQklBVkJ1SXZCQUJDRlxcXG5CaUFHUVFocUlBWW9BaEFnQmlnQ0ZCRFVCU0FHTHdFSVJRMEJJQVl2QVFwQi8vOERjU0FMUWYvL0EzRkhEUUVMUVFBaER3d0JDeUFHSUFcXFxuczdBWVlCSUFaQjlBQnFRZ0UzQWdCQkFTRVBJQVpCQVRZQ2JDQUdRYUNMd1FBMkFtZ2dCa0VMTmdLTUFTQUdJQVpCaUFGcU5nSndJQVlnXFxcbkJrR0dBV28yQW9nQklBRWdCa0hvQUdvUXh3VkJxSXZCQUJEbENBc2dCa0hvQUdwQkVHb2lFQ0FHUWNnQWFrRVFhaUlJS0FJQU5nSUFJQVxcXG5aQjZBQnFRUWhxSWhFZ0JrSElBR3BCQ0dvaUNTa0RBRGNEQUNBR0lBWXBBMGczQTJnZ0JrRWdha0VJYWlBR1FlZ0FhaENIQmlBSUlBWkJcXFxuT0dvdEFBQTZBQUFnQ1NBR1FTQnFRUkJxS1FNQU53TUFJQVlnQmlrREtEY0RTQ0FHUWNnQWFrSGNpc0VBRUlnR0lRSUNRQ0FISUF4R0RRXFxcbkFnQWtVTkFDQUFRUUkyQWdBZ0FFRUFPZ0FFREFNTElBRW9BZ2doQWlBR1FRRTZBQ0FnQmlBQklBUWdCa0VnYWlBS0lBMFE3UUVnQmlnQ1xcXG5CQ0VLSUFZb0FnQWhEU0FHUVNCcUlBRkJKQkNrRFJvZ0VDQUlMUUFBT2dBQUlCRWdDU2tEQURjREFDQUdJQVlwQTBnM0EyZ2dBQ0FHUVNcXFxuQnFJQVFnQlNBT0lBd2dBeUFHUWVnQWFpQVBJQXNnQWlBTklBb1E5UUlNQXdzZ0JrSElBR29RdmdzTElBQkJBallDQUNBQUlBczZBQVFMXFxcbklBRVFpZzBMSUFaQmtBRnFKQUFMa1F3Q0NuOEJmZ0pBSUFRTkFDQUFJQU0yQWpnZ0FDQUJOZ0l3SUFCQkFEb0FEaUFBUVlFQ093RU1JQVxcXG5BZ0FqWUNDQ0FBUWdBM0F3QWdBRUU4YWtFQU5nSUFJQUJCTkdvZ0FqWUNBQThMUVFFaEJVRUFJUVlDUUFKQUlBUkJBVWNOQUVFQklRZEJcXFxuQUNFSURBRUxRUUVoQ1VFQUlRcEJBU0VMUVFBaEJrRUJJUVVEUUNBTElRd0NRQUpBQWtBZ0JpQUthaUlMSUFSUERRQUNRQ0FESUFscUxRXFxcbkFBUWY4QmNTSUpJQU1nQzJvdEFBQWlDMGtOQUNBSklBdEdEUUpCQVNFRklBeEJBV29oQzBFQUlRWWdEQ0VLREFNTElBd2dCbXBCQVdvaVxcXG5DeUFLYXlFRlFRQWhCZ3dDQ3lBTElBUkJrS2pPQUJDQkJRQUxRUUFnQmtFQmFpSUxJQXNnQlVZaUNSc2hCaUFMUVFBZ0NSc2dER29oQ3dcXFxuc2dDeUFHYWlJSklBUkpEUUFMUVFFaENVRUFJUWhCQVNFTFFRQWhCa0VCSVFjRFFDQUxJUXdDUUFKQUFrQWdCaUFJYWlJTElBUlBEUUFDXFxcblFDQURJQWxxTFFBQVFmOEJjU0lKSUFNZ0Myb3RBQUFpQzBzTkFDQUpJQXRHRFFKQkFTRUhJQXhCQVdvaEMwRUFJUVlnRENFSURBTUxJQVxcXG53Z0JtcEJBV29pQ3lBSWF5RUhRUUFoQmd3Q0N5QUxJQVJCa0tqT0FCQ0JCUUFMUVFBZ0JrRUJhaUlMSUFzZ0IwWWlDUnNoQmlBTFFRQWdcXFxuQ1JzZ0RHb2hDd3NnQ3lBR2FpSUpJQVJKRFFBTElBb2hCZ3NDUUFKQUFrQWdCaUFJSUFZZ0NFc2lDeHNpRFNBRVN3MEFBa0FnQlNBSElBXFxcbnNiSWdzZ0RXb2lCaUFMU1EwQUFrQWdCaUFFU3cwQUFrQWdBeUFESUF0cUlBMFFvZzFGRFFBZ0RTQUVJQTFySWdsTElRZ2dCRUVEY1NFTFxcXG5Ba0FnQkVGL2FrRURUdzBBUWdBaER5QURJUVlNQlFzZ0JFRjhjU0VNUWdBaER5QURJUVlEUUVJQklBWkJBMm94QUFDR1FnRWdCa0VDYWpcXFxuRUFBSVpDQVNBR1FRRnFNUUFBaGtJQklBWXhBQUNHSUErRWhJU0VJUThnQmtFRWFpRUdJQXhCZkdvaURBMEFEQVVMQzBFQklRaEJBQ0VHXFxcblFRRWhDVUVBSVFVQ1FBTkFJQWtpRENBR2FpSUhJQVJQRFFFQ1FBSkFBa0FDUUNBRUlBWnJJQXhCZjNOcUlna2dCRThOQUNBR1FYOXpJQVxcXG5ScUlBVnJJZ29nQkU4TkFRSkFJQU1nQ1dvdEFBQkIvd0Z4SWdrZ0F5QUthaTBBQUNJS1NRMEFJQWtnQ2tZTkF5QU1RUUZxSVFsQkFDRUdcXFxuUVFFaENDQU1JUVVNQkFzZ0IwRUJhaUlKSUFWcklRaEJBQ0VHREFNTElBa2dCRUdncU00QUVJRUZBQXNnQ2lBRVFiQ296Z0FRZ1FVQUMwXFxcbkVBSUFaQkFXb2lDU0FKSUFoR0lnb2JJUVlnQ1VFQUlBb2JJQXhxSVFrTElBZ2dDMGNOQUFzTFFRRWhDRUVBSVFaQkFTRUpRUUFoQndKQVxcXG5BMEFnQ1NJTUlBWnFJZzRnQkU4TkFRSkFBa0FDUUFKQUlBUWdCbXNnREVGL2Myb2lDU0FFVHcwQUlBWkJmM01nQkdvZ0Iyc2lDaUFFVHdcXFxuMEJBa0FnQXlBSmFpMEFBRUgvQVhFaUNTQURJQXBxTFFBQUlncExEUUFnQ1NBS1JnMERJQXhCQVdvaENVRUFJUVpCQVNFSUlBd2hCd3dFXFxcbkN5QU9RUUZxSWdrZ0Iyc2hDRUVBSVFZTUF3c2dDU0FFUWFDb3pnQVFnUVVBQ3lBS0lBUkJzS2pPQUJDQkJRQUxRUUFnQmtFQmFpSUpJQVxcXG5rZ0NFWWlDaHNoQmlBSlFRQWdDaHNnREdvaENRc2dDQ0FMUncwQUN3c0NRQ0FMSUFSTERRQWdCQ0FGSUFjZ0JTQUhTeHRySVFwQkFDRUlcXFxuQWtBQ1FDQUxEUUJDQUNFUFFRQWhDd3dCQ3lBTFFRTnhJUXdDUUFKQUlBdEJCRThOQUVJQUlROGdBeUVHREFFTElBdEJmSEVoQ1VJQUlRXFxcbjhnQXlFR0EwQkNBU0FHUVFOcU1RQUFoa0lCSUFaQkFtb3hBQUNHUWdFZ0JrRUJhakVBQUlaQ0FTQUdNUUFBaGlBUGhJU0VoQ0VQSUFaQlxcXG5CR29oQmlBSlFYeHFJZ2tOQUFzTElBeEZEUUFEUUVJQklBWXhBQUNHSUErRUlROGdCa0VCYWlFR0lBeEJmMm9pREEwQUN3c2dCQ0VHREFcXFxuVUxJQXNnQkVHQXFNNEFFSU1GQUFzZ0JpQUVRZkNuemdBUWd3VUFDeUFMSUFaQjhLZk9BQkNFQlFBTElBMGdCRUhncDg0QUVJTUZBQXNnXFxcbkRTQUpJQWdiSVF3Q1FDQUxSUTBBQTBCQ0FTQUdNUUFBaGlBUGhDRVBJQVpCQVdvaEJpQUxRWDlxSWdzTkFBc0xJQXhCQVdvaEMwRi9JUVxcXG5nZ0RTRUtRWDhoQmdzZ0FDQUROZ0k0SUFBZ0FUWUNNQ0FBSUFZMkFpZ2dBQ0FJTmdJa0lBQWdBallDSUNBQVFRQTJBaHdnQUNBTE5nSVlcXFxuSUFBZ0NqWUNGQ0FBSUEwMkFoQWdBQ0FQTndJSUlBQkJBVFlDQUNBQVFUeHFJQVEyQWdBZ0FFRTBhaUFDTmdJQUMvd0xBUXgvSXdCQklHXFxcbnNpQXlRQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQWcwQVFRQWhCRUVCSVFVTUFRc2dBa0YvVEEwQ1FRQWhCRUVBTFFEeHBrOGFJQUpCQVJEM1xcXG5DeUlGUlEwQklBSkJDRWtOQUVFQUlRUURRQ0FCSUFScUlnWkJCR29vQUFBaUJ5QUdLQUFBSWdoeVFZQ0Jnb1I0Y1EwQklBVWdCR29pQmtcXFxuRUVhaUFIUWI5L2FrSC9BWEZCR2tsQkJYUWdCM0k2QUFBZ0JpQUlRYjkvYWtIL0FYRkJHa2xCQlhRZ0NISTZBQUFnQmtFSGFpQUhRUmgyXFxcbklnbEJ2MzlxUWY4QmNVRWFTVUVGZENBSmNqb0FBQ0FHUVFacUlBZEJFSFlpQ1VHL2YycEIvd0Z4UVJwSlFRVjBJQWx5T2dBQUlBWkJCV1xcXG5vZ0IwRUlkaUlIUWI5L2FrSC9BWEZCR2tsQkJYUWdCM0k2QUFBZ0JrRURhaUFJUVJoMklnZEJ2MzlxUWY4QmNVRWFTVUVGZENBSGNqb0FcXFxuQUNBR1FRSnFJQWhCRUhZaUIwRy9mMnBCL3dGeFFScEpRUVYwSUFkeU9nQUFJQVpCQVdvZ0NFRUlkaUlHUWI5L2FrSC9BWEZCR2tsQkJYXFxcblFnQm5JNkFBQWdCRUVRYWlFR0lBUkJDR29pQnlFRUlBWWdBazBOQUFzZ0J5RUVDeUFESUFVMkFnZ2dBeUFDTmdJTUlBTWdCRFlDRUNBQ1xcXG5JQVJHRFFRZ0FTQUNhaUVLSUFJZ0JHc2hDMEVBSVF3Z0FTQUVhaUlKSVFFRFFBSkFBa0FnQVN3QUFDSUdRWDlNRFFBZ0FVRUJhaUVGSUFcXFxuWkIvd0Z4SVFZTUFRc2dBUzBBQVVFL2NTRUhJQVpCSDNFaENBSkFJQVpCWDBzTkFDQUlRUVowSUFkeUlRWWdBVUVDYWlFRkRBRUxJQWRCXFxcbkJuUWdBUzBBQWtFL2NYSWhCd0pBSUFaQmNFOE5BQ0FISUFoQkRIUnlJUVlnQVVFRGFpRUZEQUVMSUFkQkJuUWdBUzBBQTBFL2NYSWdDRVxcXG5FU2RFR0FnUEFBY1hJaUJrR0FnTVFBUmcwR0lBRkJCR29oQlFzQ1FBSkFBa0FnQmtHakIwWU5BQ0FHUVlDQXhBQkhEUUVNQ0FzQ1FDQU1cXFxuUlEwQUFrQWdEQ0FMU1EwQUlBd2dDMFlOQVF3SUN5QUpJQXhxTEFBQVFiOS9UQTBIQ3lBSklBeHFJUVpCQUNFRUFrQUNRQUpBQWtBRFFDXFxcbkFHSUFsR0RRRUNRQ0FHUVg5cUlnZ3RBQUFpQjhBaUFrRi9TZzBBQWtBQ1FDQUdRWDVxSWdndEFBQWlCOEFpRFVGQVNBMEFJQWRCSDNFaFxcXG5CZ3dCQ3dKQUFrQWdCa0Y5YWlJSUxRQUFJZ2ZBSWc1QlFFZ05BQ0FIUVE5eElRWU1BUXNnQmtGOGFpSUlMUUFBUVFkeFFRWjBJQTVCUDNcXFxuRnlJUVlMSUFaQkJuUWdEVUUvY1hJaEJnc2dCa0VHZENBQ1FUOXhjaUlIUVlDQXhBQkdEUUlMQWtBQ1FDQUVRZjhCY1EwQUlBY1F5UUZGXFxcbkRRQkJnSURFQUNFSFFRQWhCQXdCQzBFQklRUUxJQWdoQmlBSFFZQ0F4QUJHRFFBTElBY1F5Z0ZGRFFBZ0N5RUhBa0FnREVFQ2FpSUdSUVxcXG4wQUFrQUNRQ0FMSUFaTERRQWdDeUFHUmcwQkRBd0xJQWtnQm1vc0FBQkJ2MzlNRFFzTElBc2dCbXNoQndzZ0NTQUdhaUlHSUFkcUlRUkJcXFxuQUNFSUEwQWdCaUFFUmcwQ0FrQUNRQ0FHTEFBQUlnZEJmMHdOQUNBR1FRRnFJUVlnQjBIL0FYRWhCd3dCQ3lBR0xRQUJRVDl4SVFJZ0IwXFxcbkVmY1NFTkFrQWdCMEZmU3cwQUlBMUJCblFnQW5JaEJ5QUdRUUpxSVFZTUFRc2dBa0VHZENBR0xRQUNRVDl4Y2lFQ0FrQWdCMEZ3VHcwQVxcXG5JQUlnRFVFTWRISWhCeUFHUVFOcUlRWU1BUXNnQWtFR2RDQUdMUUFEUVQ5eGNpQU5RUkowUVlDQThBQnhjaUlIUVlDQXhBQkdEUU1nQmtcXFxuRUVhaUVHQ3dKQUFrQWdDRUgvQVhFTkFDQUhFTWtCUlEwQVFZQ0F4QUFoQjBFQUlRZ01BUXRCQVNFSUN5QUhRWUNBeEFCR0RRQUxJQWNRXFxcbnlnRkZEUUVMUWMrSEFpRUhJQU1vQWd3Z0F5Z0NFQ0lHYTBFQ1NRMEJEQUlMUWMrRkFpRUhJQU1vQWd3Z0F5Z0NFQ0lHYTBFQlN3MEJDeVxcXG5BRFFRaHFJQVpCQWhEdUFpQURLQUlRSVFZTElBTW9BZ2dnQm1vZ0J6c0FBQ0FESUFaQkFtbzJBaEFNQVFzZ0EwRVVhaUFHRU1FQ0FrQUNcXFxuUUNBREtBSVlJZ2NOQUNBREtBSVVJUVlNQVFzZ0F5Z0NIQ0VHSUFOQkNHb2dBeWdDRkJEaEFTQURRUWhxSUFjUTRRRWdCa1VOQVFzZ0EwXFxcbkVJYWlBR0VPRUJDeUFNSUFGcklBVnFJUXdnQlNFQklBVWdDa2NOQUF3RkN3dEJBU0FDRUpvTkFBc1Fsd2dBQ3lBSklBc2dCaUFMUWV6OFxcXG56UUFRNUFzQUN5QUpJQXRCQUNBTVFmejh6UUFRNUFzQUN5QUFJQU1wQXdnM0FnQWdBRUVJYWlBRFFRaHFRUWhxS0FJQU5nSUFJQU5CSUdcXFxub2tBQXVjRFFJSGZ3SitJd0JCb0FGcklnWWtBQ0FHSUFNMkFsd2dCaUFDTmdKWUlBWkI0QUJxSUFaQjJBQnFFTVlJQWtBQ1FBSkFBa0FDXFxcblFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQmlnQ1lDSUhRU05HRFFBZ0JrSG9BR29vQWdBaENDQUdLQUprSVFrZ0IwRXZSZ1xcXG4wQklBZEJQMFlOQkNBSFFkd0FSZzBCSUFkQmdJREVBRWNOQWlBRktBSUlEUVVnQlVFY2FpZ0NBQ0VISUFVb0FoUWhDZ3dHQ3lBR1FlQUFcXFxuYWlBQlFTUVFwQTBhSUFBZ0JrSGdBR29nQlNBQ0lBTVFud0lNRGd0QkFDRUxJQU1oQnlBQ0lRb0RRQ0FHSUFjMkFtUWdCaUFLTmdKZ0FrXFxcbkFnQmtIZ0FHb1F5QWtpREVIY0FFWU5BQ0FNUVM5SERRTUxJQXRCQVdvaEN5QUdLQUprSVFjZ0JpZ0NZQ0VLREFBTEN5QUZLQUlBUlEwSVxcXG5JQVZCQkdvaEJ3d0pDd0pBSUF0QkFVc05BQ0FHUWRBQWFpQUZJQVVvQWpBaUJ4RC9CaUFCSUFZb0FsQWdCaWdDVkJDVERDQUJRUzhRM2dcXFxuUWdCa0VCT2dCZ0lBWkJ5QUJxSUFFZ0JDQUdRZUFBYWlBSElBa2dDQkJCSUFZb0Frd2hDaUFHS0FKSUlRc2dCa0hnQUdvZ0FVRWtFS1FOXFxcbkdpQUZLQUlzSVF3Z0JTZ0NLQ0VCSUFVb0FpUWhBeUFGS0FJZ0lRSWdCa0dZQVdvZ0JVSEVBR290QUFBNkFBQWdCa0dRQVdvZ0JVRThhaVxcXG5rQUFEY0RBQ0FHSUFVcEFEUTNBNGdCSUFBZ0JrSGdBR29nQkNBQ0lBTWdBU0FNSUFaQmlBRnFJQVV2QVJBZ0JVRVNhaThCQUNBSElBc2dcXFxuQ2hEMUFnd01Dd0pBSUFFb0FoZ2lDMFVOQUNBQlFSeHFLQUlBSVFnZ0JrRUFPZ0JvSUFZZ0F6WUNaQ0FHSUFJMkFtQWdCa0dJQVdvZ0JrXFxcbkhnQUdvUS9nWWdCa0dJQVdvUW1Rc2hEQ0FHUVlnQmFoQ0tEU0FNUlEwQUlBdEJBeUFJS0FJVUVRVUFDeUFHUWNBQWFpQUZJQVVvQWlBaVxcXG5DMEVCYWhEL0JpQUJJQVlvQWtBZ0JpZ0NSQkNURENBR1FUaHFJQVpCMkFCcUVOc0dBa0FnQmlnQ09DSU1SUTBBSUFZb0Fqd2hCeUFHUWVcXFxuQUFhaUFCUVNRUXBBMGFJQUFnQmtIZ0FHb2dEQ0FISUFRZ0N4QTVEQXdMSUFaQjRBQnFJQUZCSkJDa0RSb2dBQ0FHUWVBQWFpQUtJQWNnXFxcbkJDQUxFRGtNQ3dzZ0JTZ0NBRVVOQWlBRlFRUnFJUWNNQXdzZ0JrRW9haUFGUVJScUlBVkJER29vQWdCQnpJckJBQkNGQmlBR0tBSXNJUVxcXG5jZ0JpZ0NLQ0VLQ3lBQklBb2dCeENURENBQVFRQTJBZ2dnQUNBRktRSTBOd0kwSUFCQlBHb2dCVUU4YWlrQ0FEY0NBQ0FBUWNRQWFpQUZcXFxuUWNRQWFpMEFBRG9BQUNBQUlBVW9BaEEyQWhBZ0FDQUZLUUlBTndJQUlBQWdBU2tDQURjQ0ZDQUFRUnhxSUFGQkNHb29BZ0EyQWdBZ0JTXFxcbmtDSUNFTklBVXBBaWdoRGlBQUlBVW9BakEyQWpBZ0FDQU9Od0lvSUFBZ0RUY0NJQXdJQ3lBRktBSUlSUTBCSUFWQkRHb2hCd3NnQmtFd1xcXG5haUFGSUFjb0FnQVEvd1lnQmlnQ05DRUhJQVlvQWpBaENnd0JDeUFGUVJ4cUtBSUFJUWNnQlNnQ0ZDRUtDeUFCSUFvZ0J4Q1REQ0FHUWVcXFxuQUFhaUFCSUFRZ0JTZ0NJQ0lISUFJZ0F4Q3NBZ0pBSUFZb0FtQWlDa0VDUmcwQUlBWXBBbVFoRFNBQUlBWW9BbXcyQWd3Z0FDQU5Od0lFXFxcbklBQWdDallDQUNBQUlBYzJBaUFnQUNBRktRSTBOd0kwSUFCQlBHb2dCVUU4YWlrQ0FEY0NBQ0FBUWNRQWFpQUZRY1FBYWkwQUFEb0FBQ1xcXG5BQUlBVW9BaEEyQWhBZ0FDQUJLUUlBTndJVUlBQkJIR29nQVVFSWFpZ0NBRFlDQUNBQUlBVXBBaVEzQWlRZ0FDQUZLUUlzTndJc0RBVUxcXFxuSUFZdEFHUWhCeUFBUVFJMkFnQWdBQ0FIT2dBRUlBRVFpZzBNQkFzZ0JTZ0NDRVVOQVNBRlFReHFJUWNMSUFaQklHb2dCU0FIS0FJQUVQXFxcbjhHSUFZb0FpUWhCeUFHS0FJZ0lRb01BUXNnQlVFY2FpZ0NBQ0VISUFVb0FoUWhDZ3NnQVNBS0lBY1Frd3dnQVNBRUlBVW9BakFpQnhDQlxcXG5CQUpBSUFjZ0FTZ0NDRWNOQUNBR1FSaHFJQVVROVFjQ1FDQUdLQUlZSUFZb0Fod1E1QVZCL3dGeFFRSkhEUUFnQmtIWUFHb1FqQWtOQVFcXFxuc2dBVUV2RU40RUN5QUdRZUFBYWlBR1FkZ0FhaERHQ0FKQUFrQWdCaWdDWUVFdlJnMEFJQVpCQVRvQWlBRWdCa0VRYWlBQklBUWdCa0dJXFxcbkFXb2dCeUFDSUFNUVFTQUdLQUlVSVFvZ0JpZ0NFQ0VMREFFTElBWkI2QUJxS0FJQUlRb2dCaWdDWkNFTElBWkJBVG9BaUFFZ0JrRUlhaVxcXG5BQklBUWdCa0dJQVdvZ0J5QUxJQW9RUVNBR0tBSU1JUW9nQmlnQ0NDRUxDeUFHUWVBQWFpQUJRU1FRcEEwYUlBVW9BaXdoRENBRktBSW9cXFxuSVFFZ0JTZ0NKQ0VESUFVb0FpQWhBaUFHUVpnQmFpQUZRY1FBYWkwQUFEb0FBQ0FHUVpBQmFpQUZRVHhxS1FBQU53TUFJQVlnQlNrQU5EXFxcbmNEaUFFZ0FDQUdRZUFBYWlBRUlBSWdBeUFCSUF3Z0JrR0lBV29nQlM4QkVDQUZRUkpxTHdFQUlBY2dDeUFLRVBVQ0N5QUdRYUFCYWlRQVxcXG5DN01MQVF0L0l3QkJ3QUJySWdJa0FDQUJLQUlFSVFNZ0FTZ0NBQ0VFQWtBZ0FTMEFDQ0lGUVFaR0RRQWdBa0V2YWlBQlFSaHFLQUFBTmdcXFxuQUFJQUpCS0dvZ0FVRVJhaWtBQURjREFDQUNJQUZCQ1dvcEFBQTNBeUFMSUFKQkNXb2dBaWtESURjQUFDQUNRUkZxSUFKQktHb3BBd0EzXFxcbkFBQWdBa0VZYWlBQ1FTOXFLQUFBTmdBQUlBSWdCVG9BQ0NBQ0lBTTJBZ1FnQWlBRU5nSUFJQUlnQVMwQUhpSUdPZ0FlSUFJZ0FTMEFIU1xcXG5JSE9nQWRJQUlnQVMwQUhDSUlPZ0FjQWtBZ0NFRUNSdzBBQWtBZ0F3MEFRUUFoQXd3QkN3SkFBa0FDUUNBRlFRTkpEUUFEUUVFQUlRRUNcXFxuUUFOQUFrQWdCQ0FCYWkwQUFFRXZSdzBBUVFFaENRd0NDeUFESUFGQkFXb2lBVWNOQUF0QkFDRUpJQU1oQVFzQ1FBSkFJQUVPQWdFQUJRXFxcbnNnQkMwQUFFRXVSdzBFQ3lBRElBRWdDV29pQVVrTkFpQUVJQUZxSVFRZ0F5QUJheUlERFFBTFFRQWhBd3dDQ3dOQVFRQWhBUUpBQTBBQ1xcXG5RQ0FFSUFGcUxRQUFRUzlIRFFCQkFTRUpEQUlMSUFNZ0FVRUJhaUlCUncwQUMwRUFJUWtnQXlFQkN5QUJEUUlDUUNBRElBbFBEUUJCQVNcXFxuRUJEQUlMSUFRZ0NXb2hCQ0FESUFscklnTU5BQXRCQUNFRERBRUxJQUVnQTBHODY4MEFFSUlGQUFzZ0FpQUROZ0lFSUFJZ0JEWUNBQXNDXFxcblFBSkFBa0FnQjBIL0FYRkJBa1lOQUNBRElRRU1BUXNnQ0VFQlIwRi9JQWdiSVFFQ1FBSkFJQWdOQUNBRlFRWkdJZ2tOQVVFUUlBSkJHR1xcXG5vZ0NSc2hDa0VJSUFKQkVHb2dDUnNoQ3lBQlFmOEJjU0VNSUFGQmYwWWhCd05BQWtBQ1FDQUhEUUJCQUNFSlFRQWhDQ0FNRFFFTElBSVFcXFxuN3dFaENDQUdJUWtMUVFZaEFRSkFBa0FDUUFKQUFrQUNRQ0FGRGdZRUF3VUNBUUFFQzBFQ0lRRU1CQXNnQ3lnQ0FDQUtLQUlBSWdGQkFXXFxcbnBCQUNBQkcycEJBbW9oQVF3REN5QUxLQUlBUVFScUlRRU1BZ3NnQ3lnQ0FDQUtLQUlBSWdGQkFXcEJBQ0FCRzJwQkNHb2hBUXdCQ3lBTFxcXG5LQUlBUVFScUlRRUxBa0FnQXlBSUlBbHFJQUZxU3cwQUlBTWhBUXdFQ3lBQ1FTQnFJQUlRZ1FFQ1FDQUNMUUFrUVFwR0RRQWdBeUVCREFcXFxuUUxJQU1nQWlnQ0lDSUpheUVCSUFNZ0NVa05CQ0FDSUFFMkFnUWdBU0VEREFBTEN5QUJRZjhCY1NFSkFrQUNRQ0FCUVg5R0RRQWdDUTBCXFxcbkN3SkFBa0FnQVVGL1JnMEFJQWtOQVFzQ1FDQURJQUlRN3dFZ0JtcExEUUFnQXlFQkRBUUxBMEFnQWtFZ2FpQUNFSUVCQWtBZ0FpMEFKRVxcXG5FS1JnMEFJQU1oQVF3RkN5QURJQUlvQWlBaUNXc2hBU0FESUFsSkRRVWdBaUFCTmdJRUlBRWhBeUFCSUFJUTd3RWdCbXBMRFFBTUJBc0xcXFxuQWtBZ0F5QUdTdzBBSUFNaEFRd0RDd05BSUFKQklHb2dBaENCQVFKQUlBSXRBQ1JCQ2tZTkFDQURJUUVNQkFzZ0F5QUNLQUlnSWdscklRXFxcbkVnQXlBSlNRMEVJQUlnQVRZQ0JDQUJJUU1nQVNBR1RRMEREQUFMQzBFQUlRRWdBMFVOQVFOQUlBSkJJR29nQWhDQkFRSkFJQUl0QUNSQlxcXG5Da1lOQUNBRElRRU1Bd3NnQXlBQ0tBSWdJZ1pySVFrQ1FDQURJQVpQRFFBZ0NTRUJEQVFMSUFJZ0NUWUNCQ0FKSVFNZ0NVVU5BZ3dBQ3dcXFxuc2dBVUgvQVhFaENRSkFBa0FnQVVGL1JpSUJEUUFnQ1EwQkN3SkFBa0FnQVEwQUlBa05BUXNDUUNBRElBSVE3d0VnQm1wTERRQWdBeUVCXFxcbkRBTUxBMEFnQWtFZ2FpQUNFSUVCQWtBZ0FpMEFKRUVLUmcwQUlBTWhBUXdFQ3lBRElBSW9BaUFpQ1dzaEFTQURJQWxKRFFRZ0FpQUJOZ1xcXG5JRUlBRWhBeUFCSUFJUTd3RWdCbXBMRFFBTUF3c0xBa0FnQXlBR1N3MEFJQU1oQVF3Q0N3TkFJQUpCSUdvZ0FoQ0JBUUpBSUFJdEFDUkJcXFxuQ2tZTkFDQURJUUVNQXdzZ0F5QUNLQUlnSWdscklRRWdBeUFKU1EwRElBSWdBVFlDQkNBQklRTWdBU0FHU3cwQURBSUxDMEVBSVFFZ0EwXFxcblVOQUFOQUlBSkJJR29nQWhDQkFRSkFJQUl0QUNSQkNrWU5BQ0FESVFFTUFnc2dBeUFDS0FJZ0lnWnJJUWtDUUNBRElBWlBEUUFnQ1NFQlxcXG5EQU1MSUFJZ0NUWUNCQ0FKSVFNZ0NRMEFDd3NnQUNBQk5nSUVJQUFnQkRZQ0FDQUNRY0FBYWlRQUR3c2dBU0FEUWN6cnpRQVFnd1VBQy9cXFxud0xBUVYvSXdCQm9BRnJJZ01rQUFKQUFrQUNRQUpBQWtBQ1FDQUJJQUpCMndBUTJBY05BQ0FEUVRocUlBRWdBU0FDYWhDNUF5QURRZmdBXFxcbmFpQURLQUk0SWdFZ0F5Z0NQQ0FCR3lBRFFUaHFRUWhxS0FJQUVPZ0lBa0FnQXkwQWVFVU5BRUVCSVFFTUJBc2dBeUFES0FDQkFUWUNhQ1xcXG5BRElBTkJoQUZxS0FBQU5nQnJJQU5CK0FCcVFRaHFMUUFBSVFFZ0F5Z0NmQ0lDUlEwRElBTkJ5QUJxUVFocUlnUWdBeWdBYXpZQUFDQURcXFxuSUFNb0FtZzJBRTBnQXlBQk9nQk1JQU1nQWpZQ1NDQUVLQUlBSWdRTkFVRUFJUUVNQWdzQ1FDQUJJQUpCM1FBUTJRZEZEUUFnQXlBQklBXFxcbkpCQVNBQ1FYOXFRZXlHd1FBUXBnWWdBMEg0QUdvZ0F5Z0NBQ0FES0FJRUVFY0NRQUpBSUFNdEFIZ05BQ0FBSUFNcEFIazNBQUVnQUVFSlxcXG5haUFEUWZnQWFrRUphaWtBQURjQUFFRUNJUUVNQVFzZ0FDQURMUUI1T2dBQlFRTWhBUXNnQUNBQk9nQUFEQVVMSUFCQmd3ZzdBUUFNQkFcXFxuc2dBMEVBTmdLSUFTQURJQUkyQW9BQklBTWdBallDZUNBRElBUTJBbndnQXlBQ0lBUnFOZ0tFQVNBRFFmZ0Fha0VJYWlFRkFrQUNRQUpBXFxcbkEwQWdBMEV3YWlBRkVOMEVBa0FDUUFKQUFrQUNRQUpBQWtBZ0F5Z0NOQ0lCUVlDQXhBQkdEUUFnQVVFZ1NRMElJQUZCWFdvaUJrRWRUUVxcXG4wQkRBWUxJQU5CK0FCcVFTNGdBaUFFRU5NRklBTkJBVHNCbkFFZ0F5QUVOZ0tZQVNBRFFRQTJBcFFCSUFOQktHb2dBMEg0QUdvUStnSWdcXFxuQTBFZ2FpQURLQUlvSUFNb0FpeEJ1SWZCQUJDakNnSkFJQU1vQWlRaUJVVU5BQ0FES0FJZ0lRWU1BZ3NnQTBFWWFpQURRZmdBYWhENkFpXFxcbkFES0FJWUlnWkZEUU1nQXlnQ0hDSUZEUUZCQUNFRkRBSUxRUUVnQm5SQmhhQ0ExQU54UlEwRURBWUxJQU1nQmpZQ2FDQURJQVlnQldvMlxcXG5BbXdEUUNBRFFlZ0FhaEN0Q0NJQlFZQ0F4QUJHRFFNZ0F5QUJOZ0pZUWNpSHdRQWdBMEhZQUdvUTh3Y05BQXNMSUFOQkVHb2dCaUFGRUpcXFxuNEJJQU1vQWhCQkFrY05BUXNnQTBHREFXb2dBMEhJQUdwQkNHb29BZ0EyQUFBZ0FFRUFPZ0FBSUFNZ0F5a0RTRGNBZXlBQUlBTXBBSGczXFxcbkFBRWdBRUVJYWlBRFFmOEFhaWtBQURjQUFBd0ZDeUFEUWZnQWFpQUNJQVJCTGhDWUJTQURRZGdBYWlBRFFmZ0FhaEN6QXlBRElBTW9BbFxcXG5naUFTQURLQUpnSWdKQmYyb2lCRUVEZEdwQkFDQUVJQUpKR3pZQ2VDQURRZmdBYWtHY2lNRUFFSXNKSVFZQ1FDQUVJQUpQRFFBZ0JrVU5cXFxuQUNBRElBUTJBbUFnQkNFQ0N3SkFBa0FDUUFKQUFrQWdBa0VFU3cwQUlBTkJBRFlDY0NBRFFnUTNBMmdnQXlnQ1hDRUVJQU1nQVNBQ1FRXFxcbk4wYWlJQ05nS0VBU0FESUFFMkFvQUJJQU1nQkRZQ2ZDQURJQUUyQW5nQ1FBTkFBa0FnQVNBQ1J3MEFJQU5CK0FCcUVQZ0pJQU1vQW5BaVxcXG5CMFVOQlNBRElBZEJmMm9pQWpZQ2NDQURLQUpvSWdFZ0FrRUNkR29vQWdBaUJrRi9JQUpCQTNSMlN3MEdJQWRCQW5SQmZHb2hBaUFCSVFcXFxuUU1BZ3NnQXlBQlFRaHFOZ0tBQVNBRFFRaHFJQUVvQWdBZ0FTZ0NCQkNlQVFKQUlBTW9BZ2hCQVVZTkFDQURRZmdBYWhENENRd0dDeUFEXFxcbktBSU1JUUlDUUNBREtBSndJZ0VnQXlnQ2JFY05BQ0FEUWVnQWFpQUJFSW9KSUFNb0FuQWhBUXNnQXlnQ2FDQUJRUUowYWlBQ05nSUFJQVxcXG5NZ0F5Z0NjRUVCYWpZQ2NDQURLQUtFQVNFQ0lBTW9Bb0FCSVFFTUFBc0xBa0FEUUNBQ1JRMEJJQUpCZkdvaEFpQUVLQUlBSVFVZ0JFRUVcXFxuYWlFRUlBVkIvd0ZMRFFVTUFBc0xJQWRCQW5SQmZHb2hBa0VZSVFRRFFDQUNSUTBDSUFKQmZHb2hBaUFCS0FJQUlBUkJHSEYwSUFacUlRXFxcbllnQkVGNGFpRUVJQUZCQkdvaEFRd0FDd3NnQTBIWUFHb1F1d29NQXdzZ0EwSG9BR29RdkFvZ0FFRUJPZ0FBSUFBZ0JrRVlkQ0FHUVlEK1xcXG5BM0ZCQ0hSeUlBWkJDSFpCZ1A0RGNTQUdRUmgyY25JMkFBRU1CZ3RCb0lqQkFFRWJRYnlJd1FBUWlnWUFDeUFEUWVnQWFoQzhDZ3RCQXlcXFxuRUJEQVVMSUFGQnBYOXFRUVJKRFFFQ1FDQUJRWVIvYWc0RUFnRUJBZ0FMSUFGQklFY05BQXNMSUFCQmd3bzdBUUFMSUFOQnlBQnFFSW9OXFxcbkN5QURRVGhxRU44TERBTUxJQUJCQXpvQUFDQUFJQUU2QUFFZ0EwSElBR29RaWcwTUFRc2dBRUVET2dBQUlBQWdBVG9BQVFzZ0EwRTRhaFxcXG5EZkN3c2dBMEdnQVdva0FBdXVEQUlNZndGK0l3QkJrQU5ySWdRa0FDQUVRU0JxRU5BSUlBUkIxQUJxUWdBM0FnQWdCRUhNQUdwQ2dJQ0FcXFxuZ01BQU53SUFJQVJCeEFCcVFnQTNBZ0FnQkVHQWc4QUFOZ0pBSUFRZ0JDa0RLRGNET0NBRUlBUXBBeUEzQXpBZ0JFSFFBbXBCQUNrRG9LXFxcbmRBTndNQUlBUkJ5QUpxUVFBcEE1aW5RRGNEQUNBRVFiZ0Nha0VJYWtFQUtRT1FwMEEzQXdBZ0JFRUFLUU9JcDBBM0E3Z0NJQVJDZ0lDQVxcXG5nTUFBTndQWUFpQUVRZVFCYWlFRkFrQUNRQUpBQWtBRFFDQUVRUmhxSUFSQnVBSnFFTFFHQWtBZ0JDZ0NHQ0lHRFFBZ0FDQUFLQUlBSWdcXFxuWkJDQ0FHR3pZQ0FBSkFJQVpGRFFBZ0FDQVFRWUNVNjl3REVIVWFDd0pBSUFRb0Frd05BRUVDSVFZQ1FDQUJLQUlJSWdkRkRRQWdCMEVNXFxcbmJDQUJLQUlBYWtGMGFpSUdLQUlBSUFZb0FnaEJJeERSQnlFR0MwRUJJUWdnQmtFQ1JnMERJQVpCQVhGRkRRTUxJQVJCa0FGcUlBUkJNR1xcXG5wQk1CQ2tEUm9DUUNBQVFUaHFJQUlRalFVaUJrVU5BQ0FHSUFSQmtBRnFFTWtFRFFRTElBUkJ1QUpxSUFJUWxBVWdCRUhZQVdvZ0JFR1FcXFxuQVdwQk1CQ2tEUm9nQUVFSWFpQUVRYmdDYWlBQklBUkIyQUZxRU8wRVFRRWhDUXdFQ3lBRUtBSWNJUWNnQkNBR05nS0FBeUFFSUFjMkFvXFxcblFEQWtBZ0JFR0FBMnBCcUtmQUFCQ0RDMFVOQUNBQ0lBTVE4UXBGRFFFTElBUkIyQUZxSUFNZ0JpQUhFTjhLSUFRb0F0Z0JSUTBBSUFSQlxcXG40QUJxUVFocUlBUkIyQUZxUVFocUtBSUFOZ0lBSUFSQjhBQnFRUWhxSUFWQkNHb29BZ0EyQWdBZ0JDQUVLUVBZQVRjRFlDQUVJQVVwQWdcXFxuQTNBM0FnQkVHUUFXb2dCRUV3YWlBRVFlQUFhaUFFUWZBQWFoRG1CeUFFUVpBQmFoRE1Dd3dBQ3dzZ0FFRUlhaUFDSUFFUTBRUWhDUXdDXFxcbkN5QUVRWkFCYWhEWkNrRUFJUWtMUVFBaENBc0NRQUpBQWtBZ0FTMEFEQTBBSUFsRkRRSU1BUXNnQkVHNEFtb2dBaERkQXlBRVFZQUJhaVxcXG5BRVFiZ0NhaERHRFNBRVFiZ0NhaUFDRUpRRklBUkJ1QUpxUWJDbndBQkJBUkNwQXlBRVFiZ0Nha0VBSUFRUXFBSWdCRUc0QW1wQkFDQUVcXFxuRUpvRUlBUkJrQUZxSUFSQnVBSnFRY2dBRUtRTkdpQUVRUkJxUVFFZ0FTZ0NDQ0lLUVg5cUlBRW9BZ0FpQ3lBS1FiU253QUFRNUFZZ0FFXFxcbkVJYWlFTUlBUW9BaEFpQmlBRUtBSVVRUXhzYWlFTlFRQWhCd05BQWtBZ0JpQU5SdzBBSUFSQnBBRnFFT01NSUFSQmdBRnFFS2NPSUFSQlxcXG5nQUZxRUxrS0lBbEJBWEVOQWd3REN5QUhRUUZxSVFjZ0JrRUlhaUVGSUFZb0FnQWhEaUFHUVF4cUlnOGhCaUFPSUFVb0FnQkJJeERSQjBcXFxuVU5BQ0FFUWRnQmFpQUVRWkFCYWhDVUJRSkFJQVFvQW9nQklnWWdCMEYvYWswTkFDQUVRWUFEYWlBRUtBS0FBU0FIUWJDbndBQkJBUkJOXFxcbklBUkJCRFlDdEFJZ0JFRUNOZ0s4QWlBRVFjU253QUEyQXJnQ0lBUkNBVGNDeEFJZ0JDQUVRWUFEYWpZQ3NBSWdCQ0FFUWJBQ2FqWUN3QVxcXG5JZ0JFR2dBbW9nQkVHNEFtb1Fqd1FnQkVHQUEyb1E0d3dnQkVHNEFtcEJDR29nQkVHZ0FtcEJDR29vQWdBaUJqWUNBQ0FFSUFRcEE2QUNcXFxuSWhBM0E3Z0NJQVJCMkFGcUlCQ25JQVlRcVFNZ0JFRzRBbW9RNHd3Z0JFRzRBbW9nQkVIWUFXcEJ5QUFRcEEwYUlBUkJDR3BCQUNBSFFRXFxcbkZxSUFzZ0NrSGtwOEFBRU9RR0lBUkJnQU5xSUFRb0FnZ2dCQ2dDREVHd3A4QUFRUUVRVGlBTUlBUkJ1QUpxSUFSQmdBTnFFSVFESUFseVxcXG5JUWtnRHlFR0RBRUxDeUFISUFaQjFLZkFBQkNEQlFBTElBQkJrQUZxS0FJQUlRWWdBQ2dDaUFFaEJ5QUVRYmdDYWlBQVFRaHFFTklESUFcXFxuUkJvQUpxSUFRZ0J5QUdJQVFvQXJnQ0lBUW9Bc0FDRUlzRElBUkJ1QUpxRU9NTUlBUXRBS0FDUVFSR0RRQWdCQ0FFS1FPZ0FqY0RnQU1DXFxcblFFRUFLQUw0cGs5QkEwME5BQ0FFUWV3QmFrRUJOZ0lBSUFSQjVBRnFRUUUyQWdBZ0JFRU1OZ0tVQVNBRVFRRTJBdHdCSUFSQm1LakFBRFxcXG5ZQzJBRWdCQ0FFUVlBRGFqWUNrQUVnQkVFRE9nRFVBaUFFUVFRMkF0QUNJQVJDSURjRHlBSWdCRUtDZ0lDQUlEY0R3QUlnQkVFQ05nSzRcXFxuQWlBRUlBUkJ1QUpxTmdMb0FTQUVJQVJCa0FGcU5nTGdBU0FFUWRnQmFrRUVRYmlvd0FCQkFDQUVFSkVEQ3lBRVFZQURhaERnQndzZ0FFXFxcbkVBSUFBb0FnQWlCaUFHUVFoR0lnWWJOZ0lBQWtBZ0JnMEFJQUJCQUJCK0N3SkFJQWhGRFFBZ0JFRXdhaERaQ2dzZ0F4Q0ZDeUFDUVJScVxcXG5FT01NSUFFUTRnd2dCRUdRQTJva0FBdi9DZ0liZndGK0l3QkI4QUJySWdFa0FDQUJRVEJxSUFBb0FnQWlBaUFBS0FJSUlnTkI2cy9BQUVcXFxuRUpFRG9DUUFKQUFrQUNRQUpBQWtBZ0FTZ0NNQTBBSUFGQk9Hb29BZ0FoQkNBQlFUMXFMUUFBSVFVZ0FVSGtBR29vQWdBaEJpQUJLQUpnXFxcbklRY2dBVUUrYWkwQUFFSC9BWEVoQ0FOQUlBZ05Bd0pBQWtBQ1FBSkFJQVJGRFFBQ1FBSkFJQVFnQmtrTkFDQUVJQVpHRFFFTURBc2dCeVxcXG5BRWFpd0FBRUcvZjB3TkN3c2dCeUFFYWlJSlFYOXFMUUFBSWdyQUlndEJmMG9OQXdKQUlBbEJmbW9pQ2kwQUFDSUp3Q0lNUVVCSURRQWdcXFxuQ1VFZmNTRUtEQU1MQWtBZ0NrRi9haUlLTFFBQUlnbkFJZzFCUUVnTkFDQUpRUTl4SVFvTUFnc2dDa0YvYWkwQUFFRUhjVUVHZENBTlFUXFxcbjl4Y2lFS0RBRUxJQVZCL3dGeERRVU1CZ3NnQ2tFR2RDQU1RVDl4Y2lFS0N5QUtRUVowSUF0QlAzRnlJUW9MSUFWQi93RnhEUUlnQ2tHQVxcXG5nTVFBUmcwRFFYOGhCUUpBSUFwQmdBRkpEUUJCZmlFRklBcEJnQkJKRFFCQmZVRjhJQXBCZ0lBRVNSc2hCUXNnQlNBRWFpRUVRUUVoQlFcXFxud0FDd3NnQVVIRUFHb29BZ0FpRGlBQlFld0FhaWdDQUNJTGF5RVBJQUVvQW1naURDQU9haUVRSUFFb0FtQWlFU0FMYXlFU1FRQWdEbXNoXFxcbkV5QU9JQXNnRGlBTFN4c2lGQ0FPYXlFVklBRkIyQUJxS0FJQUlRb2dBVUhJQUdvb0FnQWhGaUFCUWRBQWFpZ0NBQ0VFSUFGQjVBQnFLQVxcXG5JQUlRY2dBVUhVQUdvb0FnQWhGeUFCS1FNNElSd0RRQ0FPSUE0Z0NpQU9JQXBKR3lBWFFYOUdJaGdiUVg5cUlRZ2dFeUFMSUFvZ0dCc2lcXFxuQ2lBT0lBb2dEa3NiYWlFWkEwQWdCQ0lhSUF0cklnUWdCMDhOQXdKQUFrQWdIQ0FSSUFScU1RQUFpRUlCZzFBTkFDQVNJQnBxSVFrZ0NDXFxcbkVLQWtBQ1FBSkFBa0FEUUFKQUlBcEJmMGNOQUNBUElCcHFJUW9nR1NFRklCVWhCaUFRSVFrRFFDQUZSUTBMSUFaRkRRVWdDaUFIVHcwR1xcXG5JQVZCZjJvaEJTQUdRWDlxSVFZZ0VTQUthaUVOSUFrdEFBQWhHeUFLUVFGcUlRb2dDVUVCYWlFSklCc2dEUzBBQUVZTkFBc2dHaUFXYXlcXFxuRUVJQmdOQ0NBV0lRb01DUXNnQ0NBTFR3MEJJQVFnQ21vZ0IwOE5BaUFKSUFwcUlRVWdEQ0FLYWlFR0lBcEJmMm9oQ2lBR0xRQUFJQVV0XFxcbkFBQkdEUUFMSUJvZ0Rtc2dDbXBCQVdvaEJDQVlEUVlnRXlBYWFpQUtha0VCYWlFRURBVUxJQW9nQzBIUXNzQUFFSUVGQUFzZ0dpQUxheVxcXG5BS2FpQUhRZUN5d0FBUWdRVUFDeUFVSUF0QjhMTEFBQkNCQlFBTElBb2dCMEdBczhBQUVJRUZBQXNnR0EwQkN3c2dDeUVLREFBTEN5QUVcXFxuUVFscUlnWWhDZ0pBQTBBZ0FVRW9haUFBSUFwQnBOSEFBQkNoQndKQUFrQWdBU2dDTEVVTkFDQUJLQUlvTFFBQVFWQnFRZjhCY1VFS1NRXFxcbjBCQ3lBQlFTQnFJQUFnQ2tHMDBjQUFFS0VIUVFBaEJ5QUJLQUlnSUFFb0FpUkI4OC9BQUVFSUVNa0dSUTBFSUFwQkNHb2lDU0VGQTBBZ1xcXG5BVUVZYWlBQUlBVkJ4TkhBQUJDaEJ3SkFBa0FnQVNnQ0hFVU5BQ0FCS0FJWUxRQUFRVkJxUWY4QmNVRUtTUTBCQ3lBRklBTkpEUVlnQVVcXFxuRVFhaUFBSUFZZ0NrSFUwY0FBRVBJRklBRkJNR29nQVNnQ0VDQUJLQUlVRUlJQ0lBRXRBREFOQmlBQktBSTBJUVlnQVVFSWFpQUFJQWtnXFxcbkJVSGswY0FBRVBJRklBRkJNR29nQVNnQ0NDQUJLQUlNRUlJQ0lBRXRBREFOQmlBQktBSTBJUWNnQXlBRVNRMEhBa0FnQkVVTkFBSkFJQVxcXG5NZ0JFc05BQ0FESUFSR0RRRU1CZ3NnQWlBRWFpd0FBRUZBU0EwRkN5QUFJQVEyQWdnTUJ3c2dCVUVCYWlFRkRBQUxDeUFLUVFGcUlRb01cXFxuQUFzTFFlQzF3QUJCTUVHUXRzQUFFSU1IQUF0QkFDRUhDMEVBSVFZTElBRkJNR3BCQ0dvZ0FFRUlhaWdDQURZQ0FDQUJJQUFwQWdBM0F6XFxcbkFnQVNBQlFUQnFFUE1LSUFFcEF3QWhIRUVVRUtzSElnb2dCellDRUNBS0lBWTJBZ3dnQ2lBY053SUVJQXBCQURZQ0FDQUJRZkFBYWlRQVxcXG5JQW9QQ3lBSElBWkJBQ0FFUWFpM3dBQVE1QXNBQzVJTEFnZC9BWDRqQUVIZ0FHc2lCeVFBSUFjZ0JqWUNUQ0FISUFVMkFrZ2dBeTBBQUNcXFxuRUlJQUpCL3dGeElRa0RRQ0FCS0FJSUlRb0RRQ0FIS0FKTUlRc2dCeWdDU0NFTUlBZEIwQUJxSUFkQnlBQnFFTWNEQWtBQ1FBSkFBa0FDXFxcblFDQUhLQUpRSWdaQmdJREVBRVlOQUNBSEtBSllJUVVnQnlnQ1ZDRU5Ba0FDUUNBR1FTTkdEUUFnQmtFdlJnMERBa0FnQmtFL1JnMEFJQVxcXG5aQjNBQkhEUWNnQ1VFQ1JnMEhJQUV0QUNCQi93RnhRUUpHRFFjZ0FTZ0NHQ0lHUlEwRklBWkJBQ0FCS0FJY0tBSVVFUVVBREFVTElBRXRcXFxuQUNBTkJnd0JDeUFCTFFBZ0RRVUxJQWNnQ3pZQ1RDQUhJQXcyQWtnTElBZEJPR29nQVNBS0lBRW9BZ2hCbEl6QkFCRDNCVUVBSVEwZ0J5XFxcbmdDUENFRklBY29BamdoQmd3Q0N5QUJMUUFnUVFKR0RRSUxJQUZCTHhEZUJDQUhRY0FBYWlBQklBb2dBU2dDQ0VGL2FrR0VqTUVBRVBjRlxcXG5RUUVoRFNBSEtBSkVJUVVnQnlnQ1FDRUdDd0pBQWtBQ1FBSkFJQVlnQlVHa2pNRUFRUUlRcGdvTkFDQUdJQVZCcG96QkFFRUdFS1lLRFFcXFxuQWdCaUFGUWF5TXdRQkJCaENtQ2cwQUlBWWdCVUd5ak1FQVFRWVFwZ29OQUNBR0lBVkJ1SXpCQUVFR0VLWUtEUUFnQmlBRlFiNk13UUJCXFxcbkJCQ21DZzBBSUFZZ0JVSENqTUVBUVFRUXBnb05BQ0FHSUFWQnhvekJBRUVFRUtZS0RRQWdCaUFGUWNxTXdRQkJCQkNtQ2cwQUFrQUNRQ1xcXG5BR0lBVkJ6b3pCQUVFQkVLWUtEUUFnQmlBRlFjK013UUJCQXhDbUNnMEFJQVlnQlVIU2pNRUFRUU1RcGdvTkFDQUpEUUVnQmlBRkVOUUtcXFxuUlEwQklBY2dCallDVUNBSElBWWdCV28yQWxRQ1FDQUhRZEFBYWhDdENDSUdRWUNBeEFCR0RRQWdBU0FLRUtBR0lBRWdCaERlQkNBQlFUXFxcbm9RM2dRZ0RVVU5BQ0FCUVM4UTNnUUxJQWhCL3dGeFJRMEJBa0FnQVNnQ0dDSUdSUTBBSUFaQkJTQUJLQUljS0FJVUVRVUFDMEVBSVFnZ1xcXG5BMEVBT2dBQUlBME5DQXdFQ3lBQklBb1FvQVlnQVNnQ0FDQUJLQUlJUVM4UTJRY05BQ0FCUVM4UTNnUUxJQTBOQmd3QkN5QUJJQW9Rb0FcXFxuWUNRQ0FCS0FJQUlBRW9BZ2hCTHhEWkIwVU5BQ0FIUVRCcUlBRW9BZ0FpQlNBQktBSUlJZ1lnQmtGL2FrR0lqY0VBRUxFR0lBZEJLR29nXFxcbkJ5Z0NNQ0FIS0FJMEVJOElJQWNvQWloQkFVY05BQ0FIS0FJc0lnc2dCRWtOQUNBSFFTQnFJQXNnQlNBR1FaaU53UUFRK1FVQ1FDQUhLQVxcXG5Ja0lnWkZEUUFDUUFKQUlBY29BaUFpQlMwQUFDSU1RVjFxSWd0QkhFc05BRUVCSUF0MFFZR2dnSUFCY1EwQkN5QU1RZHdBUncwQkN5QUhcXFxuUVJocVFRRWdCU0FHUVl5UHdRQVErUVVnQnlnQ0dDQUhLQUljRU9VRURRRUxJQUVRdmdRTElBRWdBaUFFRUxNR0lBMUZEUUFnQVNnQ0FDXFxcbkFCS0FJSVFTOFEyUWNOQlNBQlFTOFEzZ1FNQlFzZ0FrSC9BWEVOQVFzZ0FTZ0NDQ0VHSUFFb0FnQWhCUUpBQWtBQ1FBSkFJQVJGRFFBQ1xcXG5RQUpBSUFZZ0JFc05BQ0FHSUFSR0RRRU1CUXNnQlNBRWFpd0FBRUZBU0EwRUN5QUdJQVJKRFFJZ0IwRVFhaUFHSUFScklnWkJBQkRWQkNcXFxuQUhLQUlVSVEwZ0J5Z0NFQ0VMSUFFZ0JEWUNDQ0FMSUFVZ0JHb2dCaENrRFNFRkRBRUxJQWRCQ0dvZ0FTZ0NCQ0lOUVFBUTFRUWdCeWtEXFxcbkNDRU9JQUZCQURZQ0NDQUJJQTQzQWdBTElBY2dCallDV0NBSElBMDJBbFFnQnlBRk5nSlFJQUZCTHhEZUJDQUhJQVVnQmtFdkVMUURJQVxcXG5FZ0J5Z0NBQ0FIS0FJRUVKTU1JQWRCMEFCcUVJb05EQUlMSUFRZ0JoQ0FCUUFMUWZTRXdRQkJLMEdnaGNFQUVJTUhBQXNnQUNBSEtRTklcXFxuTndNQUlBZEI0QUJxSkFBUEN5QUJJQVlnQjBISUFHb1EyQUVDUUNBQkxRQWdRUUpHRFFBZ0IwSDRqTUVBTmdKWUlBY2dCVFlDVkNBSElBXFxcbjAyQWxBZ0FTQUhRZEFBYWhEbUJRd0JDd0pBSUFsQkFrY05BQ0FIUWVpTXdRQTJBbGdnQnlBRk5nSlVJQWNnRFRZQ1VDQUJJQWRCMEFCcVxcXG5FT1lGREFFTElBZEIySXpCQURZQ1dDQUhJQVUyQWxRZ0J5QU5OZ0pRSUFFZ0IwSFFBR29RNWdVTUFBc0xDN2tLQVFkL0l3QkJvQUpySWdcXFxuUWtBQ0FFUWRBQWFpQURRUUFRMVFRZ0JFSDBBR29nQVVFTWFpZ0NBQ0lGTmdJQUlBUkJBRG9BZUNBRVFRQTJBbUFnQkNBQktBSUlJZ1kyXFxcbkFuQWdCQ0FCS1FJQU53Tm9JQVFnQVNnQ0VEWUNaQ0FFSUFRcEExQTNBMWdnQkVISUFHb2dBaUFESUFZZ0JSRFRBeUFFUWNBQWFpQUVRZFxcXG5nQWFpQUVLQUpJSWdFZ0JDZ0NUQ0lERUxvQ0FrQUNRQUpBQWtBQ1FBSkFJQVFvQWtBaUJrVU5BQ0FFS0FKRUlRY2dCRUdBQVdvZ0JFSFlcXFxuQUdwQkpCQ2tEUm9nQkNBSE5nS3NBU0FFSUFZMkFxZ0JJQVFvQW9BQklBUW9Bb2dCSWdnUTVBVWhBU0FFUVlBQmFrRTZFTjRFQWtBQ1FBXFxcbkpBQWtBZ0FVSC9BWEVpQ1E0REFBRUNBQXNDUUNBRUtBS1lBU0lCUlEwQUlBUkJuQUZxS0FJQUlRTWdCRUdvQVdwQmdJckJBRUVDRUkwSlxcXG5EUUFnQVVFRUlBTW9BaFFSQlFBTFFRQWhBUUpBSUFRb0Fvd0JJZ05GRFFBZ0JFRUlhaUFERVBVSElBUWdCQ2tEQ0RjRDRBRWdBMEVBSUFcXFxuUkI0QUZxUVlTS3dRQVFtQXNiSVFFTElBUkJBRFlDaUFFZ0JFSGdBV29nQkVHQUFXcEJKQkNrRFJvZ0FDQUVRZUFCYWlBR0lBY2dDU0FCXFxcbkVDOE1DQXRCQUNFQ0lBY2hBU0FHSVFNQ1FBTkFJQVFnQVRZQzVBRWdCQ0FETmdMZ0FRSkFJQVJCNEFGcUVNZ0pJZ1ZCM0FCR0RRQWdCVVxcXG5FdlJ3MENDeUFDUVFGcUlRSWdCQ2dDNUFFaEFTQUVLQUxnQVNFRERBQUxDeUFDUVFGTERRWWdCQ2dDakFFaUFnMEJEQVlMSUFSQnNBRnFcXFxuSUFSQmdBRnFRU1FRcEEwYUlBUWdCellDM0FFZ0JDQUdOZ0xZQVNBRVFUaHFJQVJCMkFGcUVOc0dJQVFvQWpnaUFRMENJQVFvQXJnQklRXFxcbkVnQkVFd2FpQUVRZGdCYWtFdkVPd0dBa0FDUUNBRUtBSXdJZ05GRFFBZ0JDZ0NOQ0VDSUFSQnNBRnFRUzhRM2dRZ0JFRUFPZ0RnQVNBRVxcXG5RU2hxSUFSQnNBRnFJQWtnQkVIZ0FXb2dBU0FESUFJUVFTQUVLQUlzSVFNZ0JDZ0NLQ0VDREFFTElBUkJJR29nQkVHd0FXb2dCaUFIRUpcXFxua0RJQVFvQWlRaEF5QUVLQUlnSVFJTElBUkI0QUZxSUFSQnNBRnFRU1FRcEEwYUlBUkJBRG9BaUFJZ0FDQUVRZUFCYWlBSklBZ2dBU0FCXFxcbklBRWdCRUdJQW1wQkFDQUVJQUVnQWlBREVQVUNEQVlMSUFSQkdHb2dBaEQxQnlBRUlBUXBBeGczQTdBQklBUkJFR29nQkVHQUFXb2dDRVxcXG5Id2ljRUFFSVVHSUFRZ0JDa0RFRGNENEFFZ0JFR3dBV29nQkVIZ0FXb1FtQXRGRFFRZ0JFRUFOZ0tJQVNBRVFlQUJhaUFFUVlBQmFrRWtcXFxuRUtRTkdpQUFJQVJCNEFGcUlBWWdCeUFKSUFJUVBBd0ZDd0pBSUFRb0FtUWlBZzBBUVFZaEJRd0RDeUFFSUFNMkF1UUJJQVFnQVRZQzRBXFxcbkZCSXlBRVFlQUJhaERLQ1EwQlFRY2hCU0FDRUxZSERRSWdCQ0FDRVBVSEFrQWdCQ2dDQUNBRUtBSUVFT1FGUWY4QmNTSUZSUTBBSUFSQlxcXG40QUZxSUFSQjJBQnFRU1FRcEEwYUlBQWdCRUhnQVdvZ0FTQURJQVVnQWhBOERBVUxJQVJCNEFGcUlBUkIyQUJxUVNRUXBBMGFJQUFnQkVcXFxuSGdBV29nQVNBRFFRQWdBaEF2REFRTElBUW9BandoQXlBRVFlQUJhaUFFUWJBQmFrRWtFS1FOR2lBQUlBUkI0QUZxSUFFZ0F5QUpJQWdRXFxcbk9Rd0RDeUFFUWVBQmFpQUVRZGdBYWtFa0VLUU5HaUFBSUFSQjRBRnFJQUlnQVNBREVKOENEQUlMSUFCQkFqWUNBQ0FBSUFVNkFBUWdCRVxcXG5IWUFHb1FpZzBNQVFzQ1FDQUVLQUtZQVNJQ1JRMEFJQVJCbkFGcUtBSUFJUW9nQkVFQU9nRG9BU0FFSUFjMkF1UUJJQVFnQmpZQzRBRWdcXFxuQkVHd0FXb2dCRUhnQVdvUS9nWWdCRUd3QVdvUW1Rc2hCU0FFUWJBQmFoQ0tEU0FGUlEwQUlBSkJBeUFLS0FJVUVRVUFDeUFFUWVBQmFpXFxcbkFFUVlBQmFrRWtFS1FOR2lBQUlBUkI0QUZxSUFNZ0FTQUpJQWdRT1FzZ0JFR2dBbW9rQUF2akNRRUZmeU1BUWZBQWF5SUZKQUFnQlNBRFxcXG5OZ0lNSUFVZ0FqWUNDQUpBQWtBQ1FDQUJRWUVDU1EwQVFZQUNJUVlDUUNBQUxBQ0FBa0cvZjBvTkFFSC9BU0VHSUFBc0FQOEJRYjkvU2dcXFxuMEFRZjRCSVFZZ0FDd0EvZ0ZCdjM5S0RRQkIvUUVoQmdzZ0FDQUdhaXdBQUVHL2Ywd05BU0FGSUFZMkFoUWdCU0FBTmdJUVFRVWhCa0hCXFxcbnFNNEFJUWNNQWdzZ0JTQUJOZ0lVSUFVZ0FEWUNFRUVBSVFaQi9QL05BQ0VIREFFTElBQWdBVUVBSUFZZ0JCRGtDd0FMSUFVZ0JqWUNIQ1xcXG5BRklBYzJBaGdDUUFKQUFrQUNRQ0FDSUFGTElnWU5BQ0FESUFGTERRQUNRQUpBQWtBQ1FDQUNJQU5MRFFBQ1FBSkFJQUpGRFFBQ1FDQUNcXFxuSUFGSkRRQWdBaUFCUmcwQkRBSUxJQUFnQW1vc0FBQkJRRWdOQVFzZ0F5RUNDeUFGSUFJMkFpQWdBU0VEQWtBZ0FpQUJUdzBBSUFKQkFXXFxcbm9pQmtFQUlBSkJmV29pQXlBRElBSkxHeUlEU1EwR0FrQWdBeUFHUmcwQUlBQWdCbW9nQUNBRGFpSUlheUVHQWtBZ0FDQUNhaUlKTEFBQVxcXG5RYjkvVEEwQUlBWkJmMm9oQnd3QkN5QURJQUpHRFFBQ1FDQUpRWDlxSWdJc0FBQkJ2MzlNRFFBZ0JrRithaUVIREFFTElBZ2dBa1lOQUFcXFxuSkFJQUpCZjJvaUFpd0FBRUcvZjB3TkFDQUdRWDFxSVFjTUFRc2dDQ0FDUmcwQUFrQWdBa0YvYWlJQ0xBQUFRYjkvVEEwQUlBWkJmR29oXFxcbkJ3d0JDeUFJSUFKR0RRQWdCa0Y3YWlFSEN5QUhJQU5xSVFNTEFrQWdBMFVOQUFKQUFrQWdBeUFCU1EwQUlBRWdBMFlOQVF3S0N5QUFJQVxcXG5OcUxBQUFRYjkvVEEwSkN5QUJJQU5ySVFFTElBRkZEUVlDUUFKQUlBQWdBMm9pQWl3QUFDSUJRWDlLRFFBZ0FpMEFBVUUvY1NFQUlBRkJcXFxuSDNFaEJpQUJRVjlMRFFFZ0JrRUdkQ0FBY2lFQ0RBUUxJQVVnQVVIL0FYRTJBaVJCQVNFQkRBUUxJQUJCQm5RZ0FpMEFBa0UvY1hJaEFDXFxcbkFCUVhCUERRRWdBQ0FHUVF4MGNpRUNEQUlMSUFWQjVBQnFRYTRDTmdJQUlBVkIzQUJxUWE0Q05nSUFJQVZCeUFCcVFReHFRUWcyQWdBZ1xcXG5CVUV3YWtFTWFrSUVOd0lBSUFWQkJEWUNOQ0FGUWFTcHpnQTJBakFnQlVFSU5nSk1JQVVnQlVISUFHbzJBamdnQlNBRlFSaHFOZ0pnSUFcXFxuVWdCVUVRYWpZQ1dDQUZJQVZCREdvMkFsQWdCU0FGUVFocU5nSklJQVZCTUdvZ0JCQ1lDQUFMSUFCQkJuUWdBaTBBQTBFL2NYSWdCa0VTXFxcbmRFR0FnUEFBY1hJaUFrR0FnTVFBUmcwRUN5QUZJQUkyQWlSQkFTRUJJQUpCZ0FGSkRRQkJBaUVCSUFKQi93OU5EUUJCQTBFRUlBSkJnSVxcXG5BRVNSc2hBUXNnQlNBRE5nSW9JQVVnQVNBRGFqWUNMQ0FGUVRCcVFReHFRZ1UzQWdBZ0JVSHNBR3BCcmdJMkFnQWdCVUhrQUdwQnJnSTJcXFxuQWdBZ0JVSGNBR3BCc2dJMkFnQWdCVUhJQUdwQkRHcEJzd0kyQWdBZ0JVRUZOZ0kwSUFWQitLbk9BRFlDTUNBRlFRZzJBa3dnQlNBRlFjXFxcbmdBYWpZQ09DQUZJQVZCR0dvMkFtZ2dCU0FGUVJCcU5nSmdJQVVnQlVFb2FqWUNXQ0FGSUFWQkpHbzJBbEFnQlNBRlFTQnFOZ0pJSUFWQlxcXG5NR29nQkJDWUNBQUxJQVVnQWlBRElBWWJOZ0lvSUFWQk1HcEJER3BDQXpjQ0FDQUZRZHdBYWtHdUFqWUNBQ0FGUWNnQWFrRU1ha0d1QWpcXFxuWUNBQ0FGUVFNMkFqUWdCVUhvcU00QU5nSXdJQVZCQ0RZQ1RDQUZJQVZCeUFCcU5nSTRJQVVnQlVFWWFqWUNXQ0FGSUFWQkVHbzJBbEFnXFxcbkJTQUZRU2hxTmdKSUlBVkJNR29nQkJDWUNBQUxJQU1nQmtHOHFzNEFFSVFGQUF0QnZaVE9BRUVySUFRUWd3Y0FDeUFBSUFFZ0F5QUJJQVxcXG5RUTVBc0FDK3NKQVFoL0l3QkI0QUJySWdRa0FDQUVJQUkyQWhRZ0JDQUJOZ0lRQWtBQ1FDQURRZjhCY1NJRlJRMEFJQVFnQVRZQ0tDQUVcXFxuSUFJMkFpd2dBaUFCYXlFR1FRQWhCeUFGUVFKR0lRaEJBQ0VKUVFBaENrRUFJUXNEUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBXFxcblJCS0dvUXJRZ2lBa0dsZjJvT0F3SUJBd0FMSUFKQmQycEJBa2tOQnlBQ1FRMUdEUWNnQWtFNlJnMERJQUpCSTBZTkJpQUNRUzlHRFFZZ1xcXG5Ba0dBZ01RQVJnMEdJQUpCUDBjTkJRd0dDeUFJUlEwRkRBTUxRUUVoQ3lBSlFRRnFJUWxCQVNFRkRBWUxRUUVoQlNBSlFRRnFJUWxCQUNcXFxuRUxEQVVMSUF0QkFYRkZEUUlMUVFFaEJTQUpRUUZxSVFrTUF3dEJBU0VGSUFsQkFXb2hDU0FDUVlBQlNRMENRUUloQlNBQ1FZQVFTUTBDXFxcblFRTkJCQ0FDUVlDQUJFa2JJUVVNQWdzQ1FBSkFJQXBCQVhFTkFDQUVJQWsyQWl3Z0JDQUVRUkJxTmdJb0EwQWdCRUVvYWhDSkNrR0FnTVxcXG5RQVJ3MEFDeUFFUVFocUlBRWdCaUFIUWNpTHdRQVFzUVlnQkNnQ0RDRUNJQVFvQWdnaEJRd0JDeUFFUWNnQWFpQUVRUkJxSUFrUTZ3WWdcXFxuQkNnQ1VDRUNJQVFvQWtnaEJRc0NRQUpBQWtBQ1FDQURRZjhCY1VGL2FnNENBQUVDQ3lBQ0RRRWdBRUVET3dFQURBSUxJQVJCS0dvZ0JTXFxcbkFDRUp3QkFrQWdCQzBBS0NJQ1FRTkdEUUFnQUNBRUtRRXFOd0VDSUFCQkNtb2dCRUVvYWtFS2Fpa0JBRGNCQUNBQVFSSnFJQVJCS0dwQlxcXG5FbW92QVFBN0FRQWdCQzBBS1NFRklBQWdCQ2tERURjQ0ZDQUFJQVU2QUFFZ0FDQUNPZ0FBREFJTElBUXRBQ2toQWlBQVFRTTZBQUFnQUNcXFxuQUNPZ0FCREFFTElBUkJLR29nQlNBQ0VENENRQ0FFTFFBb0lnSkJBMFlOQUNBQUlBUXBBU28zQVFJZ0FFRUthaUFFUVNocVFRcHFLUUVBXFxcbk53RUFJQUJCRW1vZ0JFRW9ha0VTYWk4QkFEc0JBQ0FFTFFBcElRVWdBQ0FFS1FNUU53SVVJQUFnQlRvQUFTQUFJQUk2QUFBZ0NrRUJjVVxcXG5VTkJpQUVRY2dBYWhDS0RRd0dDeUFFTFFBcElRSWdBRUVET2dBQUlBQWdBam9BQVFzZ0NrRUJjVVVOQkNBRVFjZ0FhaENLRFF3RUMwRUJcXFxuSVFwQkFTRUZDeUFGSUFkcUlRY01BQXNMSUFSQktHb2dBU0FDRUlzQklBUXRBQ2doQWdKQUFrQUNRQ0FFTFFBMFFRSkdEUUFnQkVFWWFrXFxcbkVJYWlJRklBUkJLR3BCQ0dvb0FBQTJBQUFnQkNBRUtRQXBOd0FaSUFRZ0Fqb0FHQ0FFS0FJNElRY2dCQ2dDUENFSklBUkJLR29nQkNnQ1xcXG5HQ0FGS0FJQUVENGdCQzBBS0NJQ1FRTkdEUUVnQkVISUFHcEJDbW9nQkVFb2FrRUthaWtCQURjQkFDQUVRY2dBYWtFU2FpQUVRU2hxUVJcXFxuSnFMd0VBT3dFQUlBUWdCQ2tCS2pjQlNpQUVJQVF0QUNrNkFFa2dCQ0FDT2dCSUFrQUNRQ0FDRFFBZ0JDQUVRY2dBYWtFRWNqWUNLQ0FFXFxcblFTaHFFSmNMRFFFZ0JDMEFTQ0VDQ3lBRVFjUUFha0VDYWlBRVFjZ0Fha0VCY2lJRlFRSnFMUUFBT2dBQUlBUWdCUzhBQURzQlJDQUVLQVxcXG5KWUlRVWdCQ2dDVkNFTElBUW9BbEFoQ2lBRUtBSk1JUWdNQXd0QkFDRUNJQVJCQUVFQUVOVUVJQVFvQWdRaENpQUVLQUlBSVFnZ0JFSElcXFxuQUdvUXZndEJBQ0VMREFJTElBQkJBem9BQUNBQUlBSTZBQUVNQWdzZ0JDMEFLU0VDSUFCQkF6b0FBQ0FBSUFJNkFBRWdCRUVZYWhDS0RRXFxcbndCQ3lBQUlBUXZBVVE3QUFFZ0FDQUpOZ0lZSUFBZ0J6WUNGQ0FBSUFVMkFoQWdBQ0FMTmdBTUlBQWdDallBQ0NBQUlBZzJBQVFnQUNBQ1xcXG5PZ0FBSUFCQkEyb2dCRUhHQUdvdEFBQTZBQUFnQkVFWWFoQ0tEUXNnQkVIZ0FHb2tBQXVYQ2dJRmZ3TitJd0JCMEFGcklnTWtBQUpBQWtcXFxuQWdBU2dDQUNJRVFRaHhEUUFnQkVFUWFpSUZJQVJKRFFBZ0FTQUZJQUVvQWdBaUJpQUdJQVJHSWdRYk5nSUFJQVFOQVFzZ0FVRUFJQWhCXFxcbmdKVHIzQU1RYmhvTElBTWdBVFlDUkFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFGQk9Hb2dBaENOQlNJRURRQWdBMFxcXG5FZ2FpQUJLQUtJQVNBQlFaQUJhaWdDQUJDT0F5QURRUmhxSUFNb0FpQWdBeWdDSkVIa3FNQUFFSThLSUFNb0Fod2hCaUFES0FJWUlRY2dcXFxuQTBHSUFXb2dBa0VBSUFNUVp5QURRYkFCYWlBRFFZZ0JhaENjQ0VFQ0lRRWdBeTBBdkFFaUJFRUNSZzBCSUFOQnlBQnFRUWhxSUFOQnNBXFxcbkZxUVFocUtBSUFJZ1UyQWdBZ0EwSElBR3BCRDJvZ0EwR3dBV3BCRDJvdEFBQTZBQUFnQXlBREtRT3dBU0lJTndOSUlBTWdBeThBdlFFN1xcXG5BRlVnQXlBRU9nQlVBa0FnQlVVTkFDQUZRUXhzSUFpbmFrRjBhaUlCS0FJQUlBRW9BZ2hCSXhEUkJ5RUJDd0pBSUFGQkFrWU5BQ0FCUVFcXFxuRnhEUU1MSUFOQnNBRnFJQU5CeUFCcUlBY2dCaENkQlNBRFFZZ0JhaUFESUFNb0FyQUJJQU1vQXJnQkVOZ0NJQU1vQXBBQklnRkIvdi8vXFxcbi93TnhRWUNVNjl3RFJ3MERJQUJCZ0pUcjNBTTJBZ2dNQkFzZ0EwSElBR29nQkVFZ2FpZ0NBQ0lGSUFVZ0JFRW9haWdDQUVFY2JHb1ErQVxcXG5NZ0EwSElBR3BCZ0tMQUFFRUlFUFVMRFFRZ0EwRTRhaUFEUWNnQWFoQ0VDQ0FEUVlnQmFpQUNJQU1vQWpnZ0F5Z0NQQkJuSUFOQnNBRnFcXFxuSUFOQmlBRnFFSndJQWtBZ0F5MEF2QUVpQkVFQ1JnMEFJQU5CK0FCcVFRaHFJQU5Cc0FGcVFRaHFLQUlBTmdJQUlBTkIrQUJxUVE5cUlBXFxcbk5Cc0FGcVFROXFMUUFBT2dBQUlBTWdBeWtEc0FFM0EzZ2dBeUFETHdDOUFUc0FoUUVnQXlBRU9nQ0VBU0FEUVRCcUlBRW9Bb2dCSUFGQlxcXG5rQUZxS0FJQUVJNERJQU5CS0dvZ0F5Z0NNQ0FES0FJMFFkU293QUFRandvZ0EwSG9BR29nQTBINEFHb2dBeWdDS0NBREtBSXNFSjBGSUFcXFxuTkIrQUJxRU9JTUlBTW9BbXdoQVNBREtBSm9JZ1pGSVFVZ0EwSG9BR29oQkNBR0RRY01CZ3NnQUVHQWxPdmNBellDQ0F3SEN5QUFRWUNVXFxcbjY5d0ROZ0lJREFjTElBQkJnSlRyM0FNMkFnZ2dBMEhJQUdvUTRnd01CZ3NnQXlrRGlBRWhDQ0FEUVFocUVOQUlJQU1wQXdnaENTQURLUVxcXG5NUUlRb2dBRUV3YWlBQ0VJZ0ZJQUFnQ2pjQ0tDQUFJQWszQWlBZ0FFRUFOZ0ljSUFCQ0FEY0NGQ0FBUVlDRHdBQTJBaEFnQUNBQk5nSUlcXFxuSUFBZ0NEY0RBQXNnQTBHd0FXb1E0d3dnQTBISUFHb1E0Z3dnQTBHSUFXb1Fvd3NNQmdzZ0EwRUFOZ0pvSUFNZ0FVR0lBV29pQVRZQ2JFXFxcbkVCSVFVTElBRWhCQXNnQTBHSUFXb2dBeUFFS0FJQUlBRWdBMEhvQUdvZ0JSc29BZ2dRMkFJZ0F5Z0NrQUVpQVVIKy8vLy9BM0ZCZ0pUclxcXG4zQU5IRFFJZ0EwR0lBV29Rb3dzZ0FFR0FsT3ZjQXpZQ0NDQURRZWdBYWhETUN3c2dBMEhJQUdvUWhRc0xJQU5CeEFCcUVNQUpEQUlMSUFcXFxuTXBBNGdCSVFnZ0EwR0lBV29Rb3dzZ0EwR3dBV3BCR0dvaUJDQURRY2dBYWtFWWFpa0RBRGNEQUNBRFFiQUJha0VRYWlJRklBTkJ5QUJxXFxcblFSQnFLUU1BTndNQUlBTkJzQUZxUVFocUlnWWdBMEhJQUdwQkNHb3BBd0EzQXdBZ0F5QURLUU5JTndPd0FTQUFRVEJxSUFJUWlBVWdBMFxcXG5Ha0FXb2dCQ2tEQURjQ0FDQURRWndCYWlBRktRTUFOd0lBSUFOQmlBRnFRUXhxSUFZcEF3QTNBZ0FnQXlBREtRT3dBVGNDakFFZ0FDQUJcXFxuTmdJSUlBQWdDRGNEQUNBQVFReHFJQU5CaUFGcVFTUVFwQTBhSUFOQjZBQnFFTXdMQ3lBRFFjUUFhaERBQ1FzZ0EwSFFBV29rQUF2TUNRXFxcbkVQZnlNQVFjQUJheUlESkFBZ0EwSFFBR29nQVNBQ0VONERJQU5CaUFGcUlBTW9BbEFnQXlnQ1ZFRXZFTFVFSUFOQmxBRnFLQUlBSVFRZ1xcXG5BeWdDa0FFaEFpQURLQUtJQVNJRklBTW9Bb3dCSWdZUXFnZ2hBUUpBQWtBQ1FDQUdSUTBBSUFGRkRRQWdBa1VOQUNBRFFZZ0JhaUFDSUFcXFxuUkJPeEMxQkNBRFFaUUJhaWdDQUNFQklBTW9BcEFCSVFJZ0EwSElBR29nQXlnQ2lBRWdBeWdDakFFUXhRVWdBeWdDU0NJSElBTW9Ba3dpXFxcbkNCQ3FDRVVOQUNBSVJRMEFJQU5CQURZQ2dBRWdBMElFTndONEFrQWdBa1VOQUNBRFFZZ0Jha0U3SUFJZ0FSRFJCU0FEUVFFN0Fhd0JJQVxcXG5NZ0FUWUNxQUVnQTBFQU5nS2tBVUVFSVFsQkFDRUtBMEFnQ2tFWWJDRUxBMEFnQTBIQUFHb2dBMEdJQVdvUXF3RWdBeWdDUUNJQ1JRMENcXFxuSUFOQk9Hb2dBaUFES0FKRUVLY0ZJQU5Cc0FGcUlBTW9BamdnQXlnQ1BFRTlFTFVFSUFNb0Fyd0JJUXdnQXlnQ3VBRWhEU0FES0FLd0FTXFxcbkVPUVFFaER3SkFJQU1vQXJRQkloQkZEUUFnRGlBUUVLb0lSUTBBSUFzaEFpQUpJUUVEUUNBQ1FRQkhJUThnQWtVTkFTQUNRV2hxSVFJZ1xcXG5BU2dDQ0NFRUlBRW9BZ0FoRVNBQlFSaHFJUUVnRVNBRUlBNGdFQkNZQ2tVTkFBc0xJQTFGRFFBZ0EwRXdhaUFOSUF4QkloQ1NCZ0pBQWtcXFxuQUNRQ0FES0FJd0lnSkZEUUFnQTBFb2FrRUFJQU1vQWpRaUFVRi9haUlFSUFRZ0FVc2JRUUFRelFRZ0EwRUFOZ0s0QVNBRElBTXBBeWczXFxcbkE3QUJJQU1nQWpZQ2FDQURJQUlnQVdvMkFtd01BUXNnQTBFUWFpQU5JQXdReFFVZ0R5QURLQUlVSWdKRmNnMENJQU1vQWhBaUFTQUNFTVxcXG5ZRlJRMENJQU5CQ0dvZ0FrRUFFTTBFSUFNb0Fnd2hCQ0FES0FJSUloRWdBU0FDRUtRTkdpQURLQUtBQVNFS0RBRUxBa0FEUUFKQUlBTkJcXFxuNkFCcUVLa0lJZ0pCM0FCR0RRQUNRQ0FDUVlDQXhBQkdEUUFnQWtFaVJnMERJQU5Cc0FGcUlBSVE1QVFNQWdzZ0EwRVlhaUFEUVlnQmFoXFxcbkNyQVNBREtBSVlJZ0pGRFFJZ0F5Z0NIQ0VCSUFOQnNBRnFRVHNRNUFRZ0F5QUNOZ0pvSUFNZ0FpQUJhallDYkF3QkN3SkFJQU5CNkFCcVxcXG5FS2tJSWdKQmdJREVBRWNOQUNBRFFTQnFJQU5CaUFGcUVLc0JBa0FnQXlnQ0lDSUNEUUJCM0FBaEFnd0JDeUFES0FJa0lRRWdBeUFDTmdcXFxuSm9JQU1nQWlBQmFqWUNiRUU3SVFJTElBTkJzQUZxSUFJUTVBUU1BQXNMQWtBZ0R3MEFJQTBnREJER0JVVU5BQ0FES0FLNEFTRUNJQU1vXFxcbkFyUUJJUVFnQXlnQ3NBRWhFUXdCQ3lBRFFiQUJhaERqQ2d3QkN3c2dBMEd3QVdvZ0RpQVFFSzBFQWtBZ0NpQURLQUo4UncwQUlBTkIrQVxcXG5CcUlBb1Fnd2tnQXlnQ2dBRWhDZ3NnQXlnQ2VDSUpJQXBCR0d4cUlnRWdBeWtEc0FFM0FnQWdBU0FDTmdJVUlBRWdCRFlDRUNBQklCRTJcXFxuQWd3Z0FVRUlhaUFEUWJBQmFrRUlhaWdDQURZQ0FDQURJQXBCQVdvaUNqWUNnQUVNQUFzTElBTkJzQUZxSUFVZ0JoQ3RCQ0FEUVlnQmFpXFxcbkFISUFnUXJRUWdBMEhZQUdwQkNHb2lBaUFEUWZnQWFrRUlhaWdDQURZQ0FDQURRZWdBYWtFSWFpSUJJQU5CaUFGcVFRaHFLQUlBTmdJQVxcXG5JQU1nQXlrRGVEY0RXQ0FESUFNcEE0Z0JOd05vSUFNb0FyQUJJZ1FOQVFzZ0FFRUFOZ0lBREFFTElBQWdBeWtDdEFFM0FnUWdBQ0FFTmdcXFxuSUFJQUFnQXlrRGFEY0NEQ0FBSUFNcEExZzNBaGdnQUVFVWFpQUJLQUlBTmdJQUlBQkJJR29nQWlnQ0FEWUNBQXNnQTBIQUFXb2tBQXVqXFxcbkNBRUtmeU1BUVNCcklnTWtBQ0FEUVJocVFnQTNBd0FnQTBJQU53TVFBa0FDUUNBQ1FRRk5EUUJCQUNFRVFRQWhCUUpBSUFFdEFBQWlCa1xcXG5FNlJ3MEFJQUV0QUFGQk9rY05BVUVCSVFWQkFpRUVDeUFHUVRwSElRZEJBU0VJQWtBRFFDQUZRUWdnQlVFSVN4c2hDUU5BSUFRZ0FrOE5cXFxuQWlBRlFRaEdEUU1DUUNBQklBUnFMUUFBUVRwSERRQWdCMEVCY1VVTkJDQUVRUUZxSVFSQkFDRUhJQVZCQVdvaUNDRUZEQUlMSUFRZ0FpXFxcbkFFUVFScUlnWWdBaUFHU1JzaUJpQUVJQVpMR3lFS1FRQWhDeUFFSVFZQ1FBTkFJQW9nQmtZTkFTQURRUWhxSUFFZ0Jtb3RBQUJCRUJDR1xcXG5CZ0pBSUFNb0FnZ05BQ0FHSVFvTUFnc2dCa0VCYWlFR0lBdEJCSFFnQXlnQ0RHb2hDd3dBQ3dzQ1FBSkFJQW9nQWtrTkFDQUtJUVFNQVFcXFxuc0NRQ0FCSUFwcUxRQUFJZ1pCT2tZTkFDQUdRUzVIRFFVZ0NpQUVSZzBGSUFWQkJrc05CVUVBSVF3RFFBSkFJQVFnQWtrTkFDQU1RUVJIXFxcbkRRY01CZ3NDUUNBTVFRQk1EUUFnREVFRFN3MEhJQUVnQkdvdEFBQkJMa2NOQnlBRVFRRnFJUVFMSUFRZ0FpQUVJQUpMR3lFSlFRQWhDZ1xcXG5KQUEwQUNRQ0FKSUFSSERRQWdDU0VFREFJTElBRWdCR290QUFCQlVHcEIvd0Z4SWd0QkNVc05BUUpBQWtBZ0NrSC8vd054RFFCQkFTRUtcXFxuSUFzaEJnd0JDeUFHUWYvL0EzRkZEUWtnQmtFS2JDQUxhaUlHUWYvL0EzRkIvd0ZMRFFrTElBUkJBV29oQkF3QUN3c2dDa0gvL3dOeFFRXFxcbkZIRFFZQ1FDQUZRUWhQRFFBZ0EwRVFhaUFGUVFGMGFpSUxJQXN2QVFCQkNIUWdCbW83QVFBZ0JTQU1RUUZxSWd4QkFrWWdERUVFUm5KcVxcXG5JUVVNQVFzTElBVkJDRUhjaU1FQUVJRUZBQXNnQ2tFQmFpSUVJQUpHRFFRTEFrQWdCU0FKUmcwQUlBTkJFR29nQlVFQmRHb2dDenNCQUNcXFxuQUZRUUZxSVFVTUFRc0xDeUFKUVFoQnpJakJBQkNCQlFBTElBUWdBa2tOQUFKQUFrQUNRQUpBSUFkQkFYRU5BQ0FJSUFWcklRUWdCVUVCXFxcbmRDRUpJQVZCZjJvaEFpQURRUjVxSVF0QkFDRUdBMEFnQkNBR1JnMENJQVpCQjJwQkIwc05BeUFDSUFacVFRaFBEUVFnQ3k4QkFDRUtJQVxcXG5zZ0N5QUpha0Z3YWlJQkx3RUFPd0VBSUFFZ0Nqc0JBQ0FMUVg1cUlRc2dCa0YvYWlFR0RBQUxDeUFGUVFoSERRTUxJQUJCQURvQUFDQUFcXFxuUVE5cUlBTXZBUjRpQmtFSWRDQUdRUWgyY2pzQUFDQUFRUTFxSUFNdkFSd2lCa0VJZENBR1FRaDJjanNBQUNBQVFRdHFJQU12QVJvaUJrXFxcbkVJZENBR1FRaDJjanNBQUNBQVFRbHFJQU12QVJnaUJrRUlkQ0FHUVFoMmNqc0FBQ0FBUVFkcUlBTXZBUllpQmtFSWRDQUdRUWgyY2pzQVxcXG5BQ0FBUVFWcUlBTXZBUlFpQmtFSWRDQUdRUWgyY2pzQUFDQUFRUU5xSUFNdkFSSWlCa0VJZENBR1FRaDJjanNBQUNBQUlBTXZBUkFpQmtcXFxuRUlkQ0FHUVFoMmNqc0FBUXdEQzBGL1FRaEI3SWpCQUJDQkJRQUxJQVVnQm1wQmYycEJDRUhzaU1FQUVJRUZBQXNnQUVHQkNEc0FBQXNnXFxcbkEwRWdhaVFBQytVSkFRZC9Jd0JCc0FGcklnTWtBQ0FDS0FJQUlRUWdBMEV3YWlBQ1FReHFLQUlBTmdJQUlBTWdBaWtDQkRjREtBSkFBa1xcXG5BZ0JDQUJLQUlBS0FJQVFYOXFSZzBBUVFBaEJBd0JDeUFESUFFb0FnUWdBU2dDQ0NJQ0tBSUFJQUlvQWdRUWh3cEIvd0Z4T2dDUUFTQURcXFxuUVNCcUlBTkJrQUZxRVBFSklBTW9BaVFoQlNBREtBSWdJUVFMQWtBQ1FDQURLQUl3SWdaQllXcEJZa2tOQUNBRFFaQUJhaUFES0FJb0lnXFxcbmNnQmhBN1FRRWhBZ0pBSUFNb0FwQUJJZ2dnQXlnQ21BRWlDVUg0cGNBQVFRTVF2d3dOQUNBSUlBbEIrNlhBQUVFREVMOE1EUUFnQ0NBSlxcXG5RZjZsd0FCQkJCQy9EQTBBSUFnZ0NVR0Nwc0FBUVFRUXZ3d05BQ0FJSUFsQmhxYkFBRUVFRUw4TURRQWdDQ0FKUVlxbXdBQkJCQkMvREFcXFxuMEFJQWdnQ1VHT3BzQUFRUVVRdnd3TkFDQUlJQWxCazZiQUFFRUZFTDhNSVFJTElBTkJrQUZxRU9NTUFrQUNRQ0FFUlEwQUlBSkZEUUlnXFxcbkJ5QUdJQVFnQlJDL0RFVU5BZ3dCQ3lBQ0RRRUxJQWNnQmtFakVORUhEUUFnQXlBSE5nS1FBU0FESUFjZ0JtbzJBcFFCQWtBRFFDQURRWlxcXG5BQmFoQ0RBeUlDUVlDQXhBQkdEUUVnQXlBQ05nSjRRWWltendBUXVnMGdBMEg0QUdvUTZ3a2hDQ0FDUVlWL2FrRm1TU0FDUWQvLy93QnhcXFxuUWI5L2FrRWFTWEVOQWlBSVJRMEFEQUlMQ3dKQUlBUU5BRUc0cHM4QUVMc05JQWNnQmhETUJBMEJDeUFISUFaQkxoRFNCdzBBSUFBZ0F5XFxcbmtES0RjQ0FDQUFRUWhxSUFOQktHcEJDR29vQWdBMkFnQU1BUXNnQVNnQ0RFRUJPZ0FBSUFNb0FpZ2hBU0FESUFNb0FqQWlDRFlDbEFFZ1xcXG5BeUFCTmdLUUFTQURRVGhxSUFOQmtBRnFFTmNDUVJRaEFpQURRUmhxUVJSQkFCRFZCQ0FEUVFBMkFsQWdBeUFES1FNWU53TklJQU1nQVNcXFxuQUlhallDWENBRElBRTJBbGdDUUFOQUlBSkZEUUVnQXlBQ1FYOXFOZ0pnSUFOQjJBQnFFSU1ESWdKQmdJREVBRVlOQVNBRElBSTJBbkFnXFxcbkFrRS9SZzBCQWtBQ1FFR0lwczhBRUxvTklBTkI4QUJxRU9zSkRRQWdBMEdRQVdvZ0F5Z0NjQkRCQWlBRFFmZ0FhaUFEUVpBQmFoRHlCaVxcXG5BRFFjZ0FhaUFEUWZnQWFoRGFCQXdCQ3lBRFFjZ0Fha0hmQUJEWUJBc2dBeWdDWUNFQ0RBQUxDeUFES0FKUUlRSWdBeWdDU0NFQkFrQUNcXFxuUUNBRURRQkI0SUxBQUNFRVFRQWhCUXdCQ3lBRFFSQnFJQUVnQWlBRUlBVVEwUWtnQTBFUWFrRUVjaUFEUWRBQWFpQURLQUlRSWdFYktBXFxcbklBSVFJZ0FTQURLQUpJSUFFYklRRUxJQU1nQWpZQ2JDQURJQUUyQW1nZ0F5QUZOZ0owSUFNZ0JEWUNjQUpBQWtBZ0FrVU5BQ0FESUFOQlxcXG42QUJxTmdLc0FTQURRUWhxSUFOQk9HcEJCVUhVcHNBQUVJQUdJQU5CcEFGcVFRRTJBZ0FnQTBHUUFXcEJER3BCQVRZQ0FDQURRZmdBYWtcXFxuRU1ha0lETndJQUlBTkJBallDbEFFZ0EwRUROZ0o4SUFOQnZLYkFBRFlDZUNBRElBTXBBd2czQTFnZ0F5QURRZkFBYWpZQ29BRWdBeUFEXFxcblFkZ0FhallDbUFFZ0F5QURRYXdCYWpZQ2tBRWdBeUFEUVpBQmFqWUNnQUVnQUNBRFFmZ0FhaENQQkF3QkN5QURJQU5CT0dwQkIwR3Nwc1xcXG5BQUVJQUdJQU5CK0FCcVFReHFRUUUyQWdBZ0EwR1FBV3BCREdwQ0FqY0NBQ0FEUVFFMkFud2dBMEVDTmdLVUFTQURRWnltd0FBMkFwQUJcXFxuSUFNZ0F5a0RBRGNEV0NBRElBTkI4QUJxTmdLQUFTQURJQU5CMkFCcU5nSjRJQU1nQTBINEFHbzJBcGdCSUFBZ0EwR1FBV29RandRTElBXFxcbk5CeUFCcUVPTU1JQU5CT0dvUTR3d2dBMEVvYWhEakRBc2dBMEd3QVdva0FBdlpDUUVHZnlBQUVORU5JUUFnQUNBQUVKVU5JZ0VRemcwaFxcXG5BZ0pBQWtBQ1FDQUFFSllORFFBZ0FDZ0NBQ0VEQWtBQ1FDQUFFTlFNRFFBZ0F5QUJhaUVCSUFBZ0F4RFBEU0lBUVFBb0FvaXJUMGNOQVNcXFxuQUNLQUlFUVFOeFFRTkhEUUpCQUNBQk5nS0FxMDhnQUNBQklBSVEvd2tQQzBIZ3A4OEFJQUFnQTJzZ0F5QUJha0VRYWlJQUVJNE9SUTBDXFxcblFRQkJBQ2dDa0t0UElBQnJOZ0tRcTA4UEN3SkFJQU5CZ0FKSkRRQWdBQkQyQVF3QkN3SkFJQUJCREdvb0FnQWlCQ0FBUVFocUtBSUFJZ1xcXG5WR0RRQWdCU0FFTmdJTUlBUWdCVFlDQ0F3QkMwRUFRUUFvQXZpcVQwRitJQU5CQTNaM2NUWUMrS3BQQ3dKQUFrQWdBaENrREVVTkFDQUFcXFxuSUFFZ0FoRC9DUXdCQ3dKQUFrQUNRQUpBSUFKQkFDZ0NqS3RQUmcwQUlBSkJBQ2dDaUt0UFJ3MEJRUUFnQURZQ2lLdFBRUUJCQUNnQ2dLXFxcbnRQSUFGcUlnRTJBb0NyVHlBQUlBRVEvUW9QQzBFQUlBQTJBb3lyVDBFQVFRQW9Bb1NyVHlBQmFpSUJOZ0tFcTA4Z0FDQUJRUUZ5TmdJRVxcXG5JQUJCQUNnQ2lLdFBSZzBCREFJTElBSVFsUTBpQXlBQmFpRUJBa0FDUUNBRFFZQUNTUTBBSUFJUTlnRU1BUXNDUUNBQ1FReHFLQUlBSWdcXFxuUWdBa0VJYWlnQ0FDSUNSZzBBSUFJZ0JEWUNEQ0FFSUFJMkFnZ01BUXRCQUVFQUtBTDRxazlCZmlBRFFRTjJkM0UyQXZpcVR3c2dBQ0FCXFxcbkVQMEtJQUJCQUNnQ2lLdFBSdzBDUVFBZ0FUWUNnS3RQREFNTFFRQkJBRFlDZ0t0UFFRQkJBRFlDaUt0UEN5QUJRUUFvQXBpclQwME5BUlxcXG5DS0RpSUFRUWdRbkFzaEFVRVVRUWdRbkFzaEFrRVFRUWdRbkFzaEEwRUFRUkJCQ0JDY0MwRUNkR3NpQkNBQUlBTWdBU0FDYW1wclFmai9cXFxuZTJwQmQzRkJmV29pQUNBRUlBQkpHMFVOQVVFQUtBS01xMDlGRFFFUWlnNGlBRUVJRUp3TElRRkJGRUVJRUp3TElRTkJFRUVJRUp3TElRXFxcblJCQUNFQ0FrQkJBQ2dDaEt0UElnVWdCQ0FESUFFZ0FHdHFhaUlBVFEwQUlBVWdBR3RCLy84RGFrR0FnSHh4SWdSQmdJQjhhaUVEUVFBb1xcXG5Bb3lyVHlFQlFlQ296d0FoQUFKQUEwQUNRQ0FBS0FJQUlBRkxEUUFnQUJEV0RDQUJTdzBDQ3lBQUtBSUlJZ0FOQUF0QkFDRUFDMEVBSVFcXFxuSWdBQkNYRFEwQVFlQ256d0FnQUNnQ0RFRUJkaENQRGtVTkFDQUFLQUlFSUFOSkRRQkI0S2pQQUNFQkEwQWdBQ0FCRU9FSkRRRWdBU2dDXFxcbkNDSUJEUUFMUWVDbnp3QWdBQ2dDQUNBQUtBSUVJZ0VnQVNBRGF4Q05Ea1VOQUNBRFJRMEFJQUFnQUNnQ0JDQURhellDQkVFQVFRQW9BcFxcXG5DclR5QURhellDa0t0UFFRQW9Bb1NyVHlFQlFRQW9Bb3lyVHlFQVFRQWdBQ0FBRU5BTklnSkJDQkNjQ3lBQ2F5SUNFTTROSWdBMkFveXJcXFxuVDBFQUlBRWdCQ0FDYW10QmdJQUVhaUlCTmdLRXEwOGdBQ0FCUVFGeU5nSUVFSW9PSWdKQkNCQ2NDeUVFUVJSQkNCQ2NDeUVGUVJCQkNCXFxcbkNjQ3lFR0lBQWdBUkRPRFNBR0lBVWdCQ0FDYTJwcU5nSUVRUUJCZ0lDQUFUWUNtS3RQSUFNaEFnc1FrQUpCQUNBQ2EwY05BVUVBS0FLRVxcXG5xMDlCQUNnQ21LdFBUUTBCUVFCQmZ6WUNtS3RQRHdzZ0FVR0FBa2tOQVNBQUlBRVErZ0ZCQUVFQUtBS2dxMDlCZjJvaUFEWUNvS3RQSUFcXFxuQU5BQkNRQWhvUEN3OExJQUZCZUhGQjhLalBBR29oQWdKQUFrQkJBQ2dDK0twUElnTkJBU0FCUVFOMmRDSUJjVVVOQUNBQ0tBSUlJUUVNXFxcbkFRdEJBQ0FESUFGeU5nTDRxazhnQWlFQkN5QUNJQUEyQWdnZ0FTQUFOZ0lNSUFBZ0FqWUNEQ0FBSUFFMkFnZ0wwUWdDQ0g4R2ZnSkFBa1xcXG5BQ1FBSkFBa0FDUUFKQUlBRXBBd0FpRFZBTkFDQU5Rdi8vLy8vLy8vLy9IMVlOQVNBRFJRMERRYUIvSUFFdkFSZ2lBVUZnYWlBQklBMUNcXFxuZ0lDQWdCQlVJZ1ViSWdGQmNHb2dBU0FOUWlDR0lBMGdCUnNpRFVLQWdJQ0FnSURBQUZRaUJSc2lBVUY0YWlBQklBMUNFSVlnRFNBRkd5XFxcbklOUW9DQWdJQ0FnSUNBQVZRaUJSc2lBVUY4YWlBQklBMUNDSVlnRFNBRkd5SU5Rb0NBZ0lDQWdJQ0FFRlFpQlJzaUFVRithaUFCSUExQ1xcXG5CSVlnRFNBRkd5SU5Rb0NBZ0lDQWdJQ0F3QUJVSWdVYklBMUNBb1lnRFNBRkd5SU5RbjlWYXlJRmE4RkIwQUJzUWJDbkJXcEJ6aEJ0SWdcXFxuRkIwUUJQRFFJZ0FVRUVkQ0lCUWNpSHpnQnFLUU1BSWc1Qy8vLy8vdytESWc4Z0RTQU5RbitGUWorSWhpSU5RaUNJSWhCK0loRkNJSWdnXFxcbkRrSWdpQ0lPSUJCK2ZDQU9JQTFDLy8vLy93K0RJZzErSWc1Q0lJaDhJQkZDLy8vLy93K0RJQThnRFg1Q0lJaDhJQTVDLy8vLy93K0RmRVxcXG5LQWdJQ0FDSHhDSUloOElnMUJRQ0FGSUFGQjBJZk9BR292QVFCcWF5SUdRVDl4clNJUGlLY2hCeUFCUWRLSHpnQnFMd0VBSVFFQ1FBSkFcXFxuQWtBQ1FDQU5RZ0VnRDRZaUVrSi9mQ0lRZ3lJT1VFVU5BQ0FEUVFwTERRRWdBMEVDZEVHNGxjNEFhaWdDQUNBSFN3MEJDd0pBQWtBQ1FBXFxcbkpBSUFkQmtNNEFTUTBBSUFkQndJUTlTUTBCSUFkQmdNTFhMMGtOQWtFSVFRa2dCMEdBbE92Y0Ewa2lCUnNoQ0VHQXd0Y3ZRWUNVNjl3RFxcXG5JQVViSVFVTUF3c0NRQ0FIUWVRQVNRMEFRUUpCQXlBSFFlZ0hTU0lGR3lFSVFlUUFRZWdISUFVYklRVU1Bd3RCQ2tFQklBZEJDVXNpQ0JcXFxuc2hCUXdDQzBFRVFRVWdCMEdnalFaSklnVWJJUWhCa000QVFhQ05CaUFGR3lFRkRBRUxRUVpCQnlBSFFZQ3Q0Z1JKSWdVYklRaEJ3SVE5XFxcblFZQ3Q0Z1FnQlJzaEJRc2dDQ0FCYTBFQmFzRWlDU0FFd1NJQlRBMEJJQVpCLy84RGNTRUtJQWtnQkd2QklBTWdDU0FCYXlBRFNSc2lDMFxcXG5GL2FpRU1RUUFoQVFOQUlBY2dCVzRoQmlBRElBRkdEUWdnQnlBR0lBVnNheUVISUFJZ0FXb2dCa0V3YWpvQUFDQU1JQUZHRFFrZ0NDQUJcXFxuUmcwRElBRkJBV29oQVNBRlFRcEpJUVlnQlVFS2JpRUZJQVpGRFFBTFFkQ1R6Z0JCR1VIa2xjNEFFSU1IQUFzZ0FFRUFOZ0lBRHdzZ0FDXFxcbkFDSUFOQkFDQUpJQVFnRFVJS2dDQUZyU0FQaGlBU0VMY0JEd3NnQVVFQmFpRUJJQXBCZjJwQlAzR3RJUkZDQVNFTkEwQUNRQ0FOSUJHSVxcXG5VQTBBSUFCQkFEWUNBQThMSUFFZ0EwOE5CeUFDSUFGcUlBNUNDbjRpRGlBUGlLZEJNR282QUFBZ0RVSUtmaUVOSUE0Z0VJTWhEaUFMSUFcXFxuRkJBV29pQVVjTkFBc2dBQ0FDSUFNZ0N5QUpJQVFnRGlBU0lBMFF0d0VQQzBHTGc4NEFRUnhCNkpUT0FCQ0RCd0FMUWZpVXpnQkJKRUdjXFxcbmxjNEFFSU1IQUFzZ0FVSFJBRUdJa3M0QUVJRUZBQXRCbkpUT0FFRWhRYXlWemdBUWd3Y0FDeUFESUFOQjlKWE9BQkNCQlFBTElBQWdBaVxcXG5BRElBc2dDU0FFSUFldElBK0dJQTU4SUFXdElBK0dJQklRdHdFUEN5QUJJQU5CaEpiT0FCQ0JCUUFMbWdrQ0EzOENmaU1BUVlBQ2F5SUNcXFxuSkFBZ0FpQUJOZ0k4SUFKQitBQnFJQUpCUEdvUWpnSWdBaWdDZUNFQkFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBaTBBZkNJRFFYXFxcbjVxRGdJQ0FBRUxJQUVRN3cwaEFTQUFRUUEyQWdBZ0FDQUJOZ0lFREFnTElBSkJ3QUJxSUFFZ0EwRUFSeERnQ2lBQ1FRaHFFTkFJSUFJcFxcXG5Bd2doQlNBQ0tRTVFJUVlnQWtINEFHcEJBQkNEQ0NBQ0lBWTNBNUFCSUFJZ0JUY0RpQUVnQWtHOEFXb2hBd0pBQWtBRFFDQUNRWmdCYWlcXFxuQUNRY0FBYWhDeEF5QUNLQUtZQVEwQkFrQUNRQ0FDS0FLY0FTSUJEUUJCQUNFQkRBRUxJQUlnQWlrRG9BRWlCVGNDNUFFZ0FpQUJOZ0xnXFxcbkFTQUNRZkFCYWlBQ1FjQUFhaERLQ2lBQ0tBTHdBVVVOQlNBQ1FkZ0Fha0VJYWlBQ1FmQUJha0VJYWlnQ0FEWUNBQ0FDSUFJcEEvQUJOd1xcXG5OWUN5QURJQUlwQTFnM0FnQWdBMEVJYWlBQ1FkZ0Fha0VJYWlJRUtBSUFOZ0lBSUFJZ0JUY0N0QUVnQWlBQk5nS3dBU0FCUlEwQ0lBSkJcXFxuNkFCcVFRaHFJQUpCc0FGcVFRaHFLQUlBTmdJQUlBSkIwQUZxUVFocUlBUW9BZ0EyQWdBZ0FpQUNLUU93QVRjRGFDQUNJQUlwQTFnM0E5XFxcbkFCSUFKQm1BRnFJQUpCK0FCcUlBSkI2QUJxSUFKQjBBRnFFS1FDSUFKQm1BRnFFTXdMREFBTEN5QUNLQUtjQVNFQkRBWUxJQUpCc0FGcVxcXG5FTklMSUFCQkdHb2dBa0g0QUdwQkdHb3BBd0EzQXdBZ0FFRVFhaUFDUWZnQWFrRVFhaWtEQURjREFDQUFRUWhxSUFKQitBQnFRUWhxS1FcXFxuTUFOd01BSUFBZ0Fpa0RlRGNEQUF3R0N5QUNRVEJxSUFKQlBHb1F3Z2dnQWlnQ01FVU5BeUFDSUFJb0FqUTJBbWdnQWtINEFHb2dBa0hvXFxcbkFHb1Ewd29nQWtIQUFHcEJFR29nQWtINEFHcEJDR29vQWdBMkFnQWdBa0VBTmdKVUlBSkJBRFlDUUNBQ0lBSXBBM2czQTBnZ0FrRW9haVxcXG5BQ1FjQUFha0VJYWhEMUJDQUNLQUlzSVFFZ0FpZ0NLQ0VESUFKQkdHb1EwQWdnQWlrREdDRUZJQUlwQXlBaEJpQUNRZmdBYWlBQlFhclZcXFxuQWlBQlFhclZBa2tiUVFBZ0F4c1Fnd2dnQWlBR053T1FBU0FDSUFVM0E0Z0JJQUpCcEFGcUlRTWdBa0d3QVdwQkJISWhBUU5BSUFKQnNBXFxcbkZxSUFKQndBQnFFUFVCSUFJb0FyQUJEUUlnQWtHWUFXcEJFR29nQVVFUWFpa0NBRGNEQUNBQ1FaZ0Jha0VJYWlBQlFRaHFJZ1FwQWdBM1xcXG5Bd0FnQWlBQktRSUFJZ1UzQTVnQkFrQWdCYWRGRFFBZ0FrSFFBV3BCQ0dvZ0JDZ0NBRFlDQUNBQ1FlQUJha0VJYWlBRFFRaHFLQUlBTmdcXFxuSUFJQUlnQVNrQ0FEY0QwQUVnQWlBREtRSUFOd1BnQVNBQ1FmQUJhaUFDUWZnQWFpQUNRZEFCYWlBQ1FlQUJhaENrQWlBQ1FmQUJhaERNXFxcbkN3d0JDd3NnQWtHWUFXb1EwZ3NnQUVFWWFpQUNRZmdBYWtFWWFpa0RBRGNEQUNBQVFSQnFJQUpCK0FCcVFSQnFLUU1BTndNQUlBQkJDR1xcXG5vZ0FrSDRBR3BCQ0dvcEF3QTNBd0FnQUNBQ0tRTjROd01BREFJTElBSW9BdlFCSVFFZ0FrSGdBV29RNHd3TUF3c2dBQ0FDS0FLMEFUWUNcXFxuQkNBQVFRQTJBZ0FnQWtINEFHb1FoUXNMSUFKQndBQnFFSVlMSUFKQjZBQnFFSVFMREFNTElBQWdBa0U4YWhEUkNBd0NDeUFBUVFBMkFnXFxcbkFnQUNBQk5nSUVJQUpCK0FCcUVJVUxDeUFDUWNnQWFoQ0VDeUFDUWNBQWFoQ0dDd3NnQWtFOGFoQ0VDeUFDUVlBQ2FpUUFDNndJQVFkL1xcXG5Ba0FDUUNBQlFmOEpTdzBBSUFGQkJYWWhBZ0pBQWtBQ1FBSkFJQUFvQXFBQklnTkZEUUFnQTBGL2FpRUVJQU5CQW5RZ0FHcEJmR29oQlNcXFxuQURJQUpxUVFKMElBQnFRWHhxSVFZZ0EwRW9TeUVEQTBBZ0F3MEVJQUlnQkdvaUIwRW9UdzBDSUFZZ0JTZ0NBRFlDQUNBR1FYeHFJUVlnXFxcbkJVRjhhaUVGSUFSQmYyb2lCRUYvUncwQUN3c2dBVUVnU1EwRUlBQkJBRFlDQUNBQlFjQUFUdzBCREFRTElBZEJLRUdvdU00QUVJRUZBQVxcXG5zZ0FFRUFOZ0lFSUFKQkFTQUNRUUZMR3lJRVFRSkdEUUlnQUVFQU5nSUlJQVJCQTBZTkFpQUFRUUEyQWd3Z0JFRUVSZzBDSUFCQkFEWUNcXFxuRUNBRVFRVkdEUUlnQUVFQU5nSVVJQVJCQmtZTkFpQUFRUUEyQWhnZ0JFRUhSZzBDSUFCQkFEWUNIQ0FFUVFoR0RRSWdBRUVBTmdJZ0lBXFxcblJCQ1VZTkFpQUFRUUEyQWlRZ0JFRUtSZzBDSUFCQkFEWUNLQ0FFUVF0R0RRSWdBRUVBTmdJc0lBUkJERVlOQWlBQVFRQTJBakFnQkVFTlxcXG5SZzBDSUFCQkFEWUNOQ0FFUVE1R0RRSWdBRUVBTmdJNElBUkJEMFlOQWlBQVFRQTJBandnQkVFUVJnMENJQUJCQURZQ1FDQUVRUkZHRFFcXFxuSWdBRUVBTmdKRUlBUkJFa1lOQWlBQVFRQTJBa2dnQkVFVFJnMENJQUJCQURZQ1RDQUVRUlJHRFFJZ0FFRUFOZ0pRSUFSQkZVWU5BaUFBXFxcblFRQTJBbFFnQkVFV1JnMENJQUJCQURZQ1dDQUVRUmRHRFFJZ0FFRUFOZ0pjSUFSQkdFWU5BaUFBUVFBMkFtQWdCRUVaUmcwQ0lBQkJBRFxcXG5ZQ1pDQUVRUnBHRFFJZ0FFRUFOZ0pvSUFSQkcwWU5BaUFBUVFBMkFtd2dCRUVjUmcwQ0lBQkJBRFlDY0NBRVFSMUdEUUlnQUVFQU5nSjBcXFxuSUFSQkhrWU5BaUFBUVFBMkFuZ2dCRUVmUmcwQ0lBQkJBRFlDZkNBRVFTQkdEUUlnQUVFQU5nS0FBU0FFUVNGR0RRSWdBRUVBTmdLRUFTXFxcbkFFUVNKR0RRSWdBRUVBTmdLSUFTQUVRU05HRFFJZ0FFRUFOZ0tNQVNBRVFTUkdEUUlnQUVFQU5nS1FBU0FFUVNWR0RRSWdBRUVBTmdLVVxcXG5BU0FFUVNaR0RRSWdBRUVBTmdLWUFTQUVRU2RHRFFJZ0FFRUFOZ0tjQVNBRVFTaEdEUUpCS0VFb1FhaTR6Z0FRZ1FVQUN5QUVRU2hCcUxcXFxuak9BQkNCQlFBTFFkSzR6Z0JCSFVHb3VNNEFFSU1IQUFzZ0FDZ0NvQUVnQW1vaEJRSkFJQUZCSDNFaUF3MEFJQUFnQlRZQ29BRWdBQThMXFxcbkFrQUNRQ0FGUVg5cUlnUkJKMHNOQUNBRklRZ2dBQ0FFUVFKMGFpZ0NBQ0lHUVFBZ0FXc2lBWFlpQkVVTkFRSkFJQVZCSjBzTkFDQUFJQVxcXG5WQkFuUnFJQVEyQWdBZ0JVRUJhaUVJREFJTElBVkJLRUdvdU00QUVJRUZBQXNnQkVFb1FhaTR6Z0FRZ1FVQUN3SkFBa0FnQWtFQmFpSUhcXFxuSUFWUERRQWdBVUVmY1NFQklBVkJBblFnQUdwQmVHb2hCQU5BSUFWQmZtcEJLRThOQWlBRVFRUnFJQVlnQTNRZ0JDZ0NBQ0lHSUFGMmNqXFxcbllDQUNBRVFYeHFJUVFnQnlBRlFYOXFJZ1ZKRFFBTEN5QUFJQUpCQW5ScUlnUWdCQ2dDQUNBRGREWUNBQ0FBSUFnMkFxQUJJQUFQQzBGL1xcXG5RU2hCcUxqT0FCQ0JCUUFMOUFnQ0IzOEJmaU1BUVRCcklnVWtBQUpBQWtBZ0FnMEFJQUJCQURZQ0NDQUFRZ0UzQWdBTUFRc0NRQUpBSUFcXFxuU3RJQUpCZjJwQi8vLy8vd0Z4clg0aURFSWdpS2NOQUNBQlFRaHFJUVlnREtjaEJ5QUNRUU4wSVFnZ0FTRUpBMEFnQ0VVTkFpQUlRWGhxXFxcbklRZ2dCeUFKS0FJRWFpSUtJQWRQSVFzZ0NVRUlhaUVKSUFvaEJ5QUxEUUFMQzBHd2o4QUFRVFZCd0pEQUFCQ0tCZ0FMSUFWQkNHb2dCMFxcXG5FQUVOVUVJQVZCQURZQ0dDQUZJQVVwQXdnM0F4QWdCVUVRYWlBQktBSUFJQUVvQWdRUWlBd2dCeUFGS0FJWUlnaHJJUWtnQlNnQ0VDQUlcXFxuYWlFSUFrQUNRQUpBQWtBQ1FBSkFBa0FnQkE0RkJRUURBZ0VBQ3lBQ1FRTjBRWGhxSVFvRFFDQUtSUTBHSUFZb0FnQWhBaUFHS0FJRUlRXFxcbnNnQlVFZ2FpQUlJQWtnQkJDZUJ5QUZLQUlzSVFnZ0JTZ0NLQ0VKSUFVb0FpQWdCU2dDSkNBRElBUkJzSkRBQUJEbkNTQUZRU0JxSUFrZ1xcXG5DQ0FMRUo0SElBVW9BaXdoQ1NBRktBSW9JUWdnQlNnQ0lDQUZLQUlrSUFJZ0MwR3drTUFBRU9jSklBcEJlR29oQ2lBR1FRaHFJUVlNQUFcXFxuc0xJQUpCQTNSQmVHb2hDZ05BSUFwRkRRVWdCaWdDQUNFRUlBWW9BZ1FoQ3lBRlFTQnFJQWdnQ1VFRUVKNEhJQVVvQWl3aENDQUZLQUlvXFxcbklRa2dCU2dDSUNBRktBSWtJQU5CQkVHd2tNQUFFT2NKSUFWQklHb2dDU0FJSUFzUW5nY2dCU2dDTENFSklBVW9BaWdoQ0NBRktBSWdJQVxcXG5Vb0FpUWdCQ0FMUWJDUXdBQVE1d2tnQ2tGNGFpRUtJQVpCQ0dvaEJnd0FDd3NnQWtFRGRFRjRhaUVLQTBBZ0NrVU5CQ0FHS0FJQUlRUWdcXFxuQmlnQ0JDRUxJQVZCSUdvZ0NDQUpRUU1RbmdjZ0JTZ0NMQ0VJSUFVb0FpZ2hDU0FGS0FJZ0lBVW9BaVFnQTBFRFFiQ1F3QUFRNXdrZ0JVXFxcbkVnYWlBSklBZ2dDeENlQnlBRktBSXNJUWtnQlNnQ0tDRUlJQVVvQWlBZ0JTZ0NKQ0FFSUF0QnNKREFBQkRuQ1NBS1FYaHFJUW9nQmtFSVxcXG5haUVHREFBTEN5QUNRUU4wUVhocUlRb0RRQ0FLUlEwRElBWW9BZ0FoQkNBR0tBSUVJUXNnQlVFZ2FpQUlJQWxCQWhDZUJ5QUZLQUlzSVFcXFxuZ2dCU2dDS0NFSklBVW9BaUFnQlNnQ0pDQURRUUpCc0pEQUFCRG5DU0FGUVNCcUlBa2dDQ0FMRUo0SElBVW9BaXdoQ1NBRktBSW9JUWdnXFxcbkJTZ0NJQ0FGS0FJa0lBUWdDMEd3a01BQUVPY0pJQXBCZUdvaENpQUdRUWhxSVFZTUFBc0xJQUpCQTNSQmVHb2hDZ05BSUFwRkRRSWdCaVxcXG5nQ0FDRUVJQVlvQWdRaEN5QUZRU0JxSUFnZ0NVRUJFSjRISUFVb0Fpd2hDQ0FGS0FJb0lRa2dCU2dDSUNBRktBSWtJQU5CQVVHd2tNQUFcXFxuRU9jSklBVkJJR29nQ1NBSUlBc1FuZ2NnQlNnQ0xDRUpJQVVvQWlnaENDQUZLQUlnSUFVb0FpUWdCQ0FMUWJDUXdBQVE1d2tnQ2tGNGFpXFxcbkVLSUFaQkNHb2hCZ3dBQ3dzZ0FrRURkRUY0YWlFS0EwQWdDa1VOQVNBR0tBSUFJUVFnQmlnQ0JDRUxJQWhCQUNBRFFRQkJzSkRBQUJEblxcXG5DU0FGUVNCcUlBZ2dDU0FMRUo0SElBVW9BaXdoQ1NBRktBSW9JUWdnQlNnQ0lDQUZLQUlrSUFRZ0MwR3drTUFBRU9jSklBcEJlR29oQ2lcXFxuQUdRUWhxSVFZTUFBc0xJQUFnQlNrREVEY0NBQ0FBUVFocUlBY2dDV3MyQWdBTElBVkJNR29rQUF2dUNBSUhmd0YrSXdCQk1Hc2lCU1FBXFxcbkFrQUNRQ0FDRFFBZ0FFRUFOZ0lJSUFCQ0FUY0NBQXdCQ3dKQUFrQWdCSzBnQWtFTWJDSUdRWFJxUVF4dXJYNGlERUlnaUtjTkFDQUJRUVxcXG54cUlRY2dES2NoQ0NBQklRa0RRQ0FHUlEwQ0lBWkJkR29oQmlBSUlBa29BZ2hxSWdvZ0NFOGhDeUFKUVF4cUlRa2dDaUVJSUFzTkFBc0xcXFxuUWJDUHdBQkJOVUhBa01BQUVJb0dBQXNnQlVFSWFpQUlRUUFRMVFRZ0JVRUFOZ0lZSUFVZ0JTa0RDRGNERUNBRlFSQnFJQUVvQWdBZ0FTXFxcbmdDQ0JDSURDQUlJQVVvQWhnaUJtc2hDU0FGS0FJUUlBWnFJUVlDUUFKQUFrQUNRQUpBQWtBQ1FDQUVEZ1VGQkFNQ0FRQUxJQUpCREd4QlxcXG5kR29oQ2dOQUlBcEZEUVlnQnlnQ0FDRUJJQWNvQWdnaEN5QUZRU0JxSUFZZ0NTQUVFSjRISUFVb0Fpd2hCaUFGS0FJb0lRa2dCU2dDSUNcXFxuQUZLQUlrSUFNZ0JFR3drTUFBRU9jSklBVkJJR29nQ1NBR0lBc1FuZ2NnQlNnQ0xDRUpJQVVvQWlnaEJpQUZLQUlnSUFVb0FpUWdBU0FMXFxcblFiQ1F3QUFRNXdrZ0NrRjBhaUVLSUFkQkRHb2hCd3dBQ3dzZ0FrRU1iRUYwYWlFS0EwQWdDa1VOQlNBSEtBSUFJUVFnQnlnQ0NDRUxJQVxcXG5WQklHb2dCaUFKUVFRUW5nY2dCU2dDTENFR0lBVW9BaWdoQ1NBRktBSWdJQVVvQWlRZ0EwRUVRYkNRd0FBUTV3a2dCVUVnYWlBSklBWWdcXFxuQ3hDZUJ5QUZLQUlzSVFrZ0JTZ0NLQ0VHSUFVb0FpQWdCU2dDSkNBRUlBdEJzSkRBQUJEbkNTQUtRWFJxSVFvZ0IwRU1haUVIREFBTEN5XFxcbkFDUVF4c1FYUnFJUW9EUUNBS1JRMEVJQWNvQWdBaEJDQUhLQUlJSVFzZ0JVRWdhaUFHSUFsQkF4Q2VCeUFGS0FJc0lRWWdCU2dDS0NFSlxcXG5JQVVvQWlBZ0JTZ0NKQ0FEUVFOQnNKREFBQkRuQ1NBRlFTQnFJQWtnQmlBTEVKNEhJQVVvQWl3aENTQUZLQUlvSVFZZ0JTZ0NJQ0FGS0FcXFxuSWtJQVFnQzBHd2tNQUFFT2NKSUFwQmRHb2hDaUFIUVF4cUlRY01BQXNMSUFKQkRHeEJkR29oQ2dOQUlBcEZEUU1nQnlnQ0FDRUVJQWNvXFxcbkFnZ2hDeUFGUVNCcUlBWWdDVUVDRUo0SElBVW9BaXdoQmlBRktBSW9JUWtnQlNnQ0lDQUZLQUlrSUFOQkFrR3drTUFBRU9jSklBVkJJR1xcXG5vZ0NTQUdJQXNRbmdjZ0JTZ0NMQ0VKSUFVb0FpZ2hCaUFGS0FJZ0lBVW9BaVFnQkNBTFFiQ1F3QUFRNXdrZ0NrRjBhaUVLSUFkQkRHb2hcXFxuQnd3QUN3c2dBa0VNYkVGMGFpRUtBMEFnQ2tVTkFpQUhLQUlBSVFRZ0J5Z0NDQ0VMSUFWQklHb2dCaUFKUVFFUW5nY2dCU2dDTENFR0lBXFxcblVvQWlnaENTQUZLQUlnSUFVb0FpUWdBMEVCUWJDUXdBQVE1d2tnQlVFZ2FpQUpJQVlnQ3hDZUJ5QUZLQUlzSVFrZ0JTZ0NLQ0VHSUFVb1xcXG5BaUFnQlNnQ0pDQUVJQXRCc0pEQUFCRG5DU0FLUVhScUlRb2dCMEVNYWlFSERBQUxDeUFDUVF4c1FYUnFJUW9EUUNBS1JRMEJJQWNvQWdcXFxuQWhCQ0FIS0FJSUlRc2dCa0VBSUFOQkFFR3drTUFBRU9jSklBVkJJR29nQmlBSklBc1FuZ2NnQlNnQ0xDRUpJQVVvQWlnaEJpQUZLQUlnXFxcbklBVW9BaVFnQkNBTFFiQ1F3QUFRNXdrZ0NrRjBhaUVLSUFkQkRHb2hCd3dBQ3dzZ0FDQUZLUU1RTndJQUlBQkJDR29nQ0NBSmF6WUNBQVxcXG5zZ0JVRXdhaVFBQzRrSUFReC9Jd0JCMEFCcklnUWtBQ0FCUVFBMkFnZ2dCRUV3YWtFdElBSWdBeERWQlNBRVFjZ0FhaUVGSUFSQk9Hb29cXFxuQWdBaEJpQUVLQUpBSVFjZ0JDZ0NOQ0VJQTBBQ1FBSkFBa0FDUUNBSElBWkxEUUFnQnlBRUtBSThJZ2xKRFFBZ0JFRW9haUFFS0FKRUlBXFxcblZxUVg5cUxRQUFJQWdnQ1dvZ0J5QUpheEJ5SUFRb0FpaEJBVWNOQUNBRUtBSThJQVFvQWl4cUlnY2dCQ2dDUkNJSlFYOXFJZ3BKRFFNZ1xcXG5CeUFLYXlJTElBbHFJZ3dnQzBrTkF5QU1JQVpMRFFNZ0JFRWdhaUFKSUFWQkJFR0FuOEVBRU4wSklBZ2dDMm9nQ1NBRUtBSWdJQVFvQWlcXFxuUVFwZ3BGRFFNZ0JFRVlhaUFMSUFJZ0F4RFBCaUFFS0FJWUlnMUZEUUVnQkNnQ0hDRU9JQWNnQ2tZTkFpQUVRUkJxSUF0QkFXb2dBaUFEXFxcblFaU2d3UUFRK3dVZ0JDZ0NGQ0VESUFRb0FoQWhBZ3dDQzBIa2xzRUFJUTFCQUNFT0RBRUxJQUlnQTBFQUlBdEJoS0RCQUJEa0N3QUxBa1xcXG5BQ1FBSkFJQTBnRGhDYUEwVU5BQ0FFSUFJMkFqQWdCQ0FDSUFOcU5nSTBRWUFCSVE5QnlBQWhDRUVBSVFJZ0RpRURBa0FDUUFKQUEwQWdcXFxuQkVFSWFpQUVRVEJxRVBrSElBUXRBQWhCQVhGRkRRRWdCQzBBQ1NFR1FRQWdDR3NoQ3lBSVFScHFJUXhCSkNFSlFRRWhCeUFDSVFvRFFBXFxcbkpBQWtBZ0JrRlFha0gvQVhGQkNra05BQ0FHUWI5L2FpSUZRZjhCY1VFYVNRMEJJQVpCbjM5cUlnVkIvd0Z4UVJwSkRRRU1DQXNnQmtGcVxcXG5haUVGQ3lBSFJRMERJQXBCZjNNZ0IyNGdCVUgvQVhFaUJra05CaUFISUFac0lBcHFJUW9DUUNBTElBbHFRUm9nQ1NBTVNSdEJBU0FKSUFcXFxuaExHeUlGSUFaTERRQkJKQ0FGYXlJRnJTQUhyWDVDSUlpbkRRY2dCQ0FFUVRCcUVQa0hJQVF0QUFCQkFYRkZEUWNnQkMwQUFTRUdJQVVnXFxcbkIyd2hCeUFKUVNScUlRa01BUXNMSUFvZ0Ftc2dBMEVCYWlJRElBSkZFSkVGSVFnZ0EwVU5BeUFLSUFOdUlnY2dEMEYvYzBzTkJTQUhJQVxcXG45cUlnOUJnTEFEYzBHQWdMeC9ha0dBa0x4L1NRMEZJQTlCZ0lERUFFWU5CU0FLSUFjZ0EyeHJJUW9nQVNnQ0NFRURkQ0VKSUFFb0FnQWhcXFxuQndOQUFrQWdDUTBBQWtBZ0FTZ0NDQ0lISUFFb0FnUkhEUUFnQVNBSEVJNEpJQUVvQWdnaEJ3c2dBU2dDQUNBSFFRTjBhaUlISUE4MkFnXFxcblFnQnlBS05nSUFJQUVnQVNnQ0NFRUJhallDQ0NBS1FRRnFJUUlNQWdzQ1FDQUhLQUlBSWdZZ0Nra05BQ0FISUFaQkFXbzJBZ0FMSUFkQlxcXG5DR29oQnlBSlFYaHFJUWtNQUFzTEN5QUJLQUlBSUFFb0FnZ2dCRUhNQUdvUWRpQUFRZ0EzQWhBZ0FDQU5JQTVxTmdJRUlBQWdEVFlDQUNcXFxuQUFJQUVvQWdnaUJ6WUNEQ0FBSUFFb0FnQTJBZ2dnQUNBSElBNXFOZ0lZREFRTFFiQ1h3UUJCR1VHa29NRUFFSU1IQUF0QnNKZkJBRUVaXFxcblFiU2d3UUFRZ3djQUN5QUFRUUEyQWdBTUFRc2dBRUVBTmdJQUN5QUVRZEFBYWlRQUR3c2dCQ0FITmdKQURBQUxDNDBJQVExL0l3QkJzQVxcXG5GcklnUWtBQ0FFUVFBMkFoUWdBa0dBbE92Y0EwY2hCU0FBUVFGeUlRWWdBQ2dDQUNFSEFrQURRQ0FISWdoQkQwME5BUUpBQWtBZ0JFRVVcXFxuYWhDbkNRMEFBa0FnQ0VFQ2NRMEFJQUFnQ0VFQ2NpQUFLQUlBSWdjZ0J5QUlSaHMyQWdBZ0J5QUlSdzBEQ3lBRVFRQTJBbUFDUUVFQUVMXFxcbjhOSWdjTkFDQUVRZUFBYWhEUUJTRUhDeUFHRU9FRklRa0NRQUpBQWtBZ0FDZ0NBQ0lLUVJCSkRRQWdDa0VDY1VVTkFDQUhRUUEyQWdRZ1xcXG5CeUFGT2dBUUlBZEJDRFlDRENBSElBWTJBZ0FnQnhDNkRBSkFBa0FnQ1NnQ0JBMEFJQWxCQkdvaENnd0JDeUFKS0FJSVFRUnFJUW9MSUFcXFxub2dCellDQUNBSklBYzJBZ2dnQ1JERUNRSkFJQVVOQUNBSEVMME1EQU1MSUFjZ0FTQUNFTDRNRFFJZ0JFRUlhaUFIRU84RUlBUW9BZ3doXFxcbkNTQUVLQUlJSVFzZ0J4QzhERVVOQVNBSlFRUnFJUVpCQUNFRkEwQWdCaWdDQUNJS1JRMEZBa0FnQ2lBSFJnMEFJQXBCQkdvaEJpQUtJUVxcXG5VTUFRc0xJQVlnQnlnQ0JDSUtOZ0lBQWtBZ0NTZ0NDQ0FIUncwQUlBa2dCVFlDQ0F3RkN3TkFJQXBGRFFVZ0NpZ0NBQ0FMUmcwRklBb29cXFxuQWdRaENnd0FDd3NnQ1JERUNRd0JDeUFKRU1RSkN5QUVRZUFBYWhDUkN3c2dBQ2dDQUNFSERBRUxDeUFKRU1RSklBUkI0QUJxRUpFTElBXFxcbkFnQXlBQUtBSUFJZ2RxUVhacU5nSUFJQWRCQVhGRkRRQWdBQkRoQlNJTUtBSUVJUVpCQUNFTElBUkJBRFlDR0NBRVFRQTJBbHdnREVFRVxcXG5haUVLUVJRaEEwRUFJUWtEUUNBRFFRUnhJUTBnQTBFSWNTRU9Ba0FEUUNBTElROERRQ0FLSVFVZ0NTRUNJQVlpQjBVTkFpQUhRUVJxSVFcXFxub2dCeWdDQkNFR0lBY2hDU0FIS0FJQUlBQkhEUUFMQWtBZ0RrVU5BRUVCSVE4TUFnc2dCeWdDRENFUUFrQWdEVVVOQUVFQklRc2dCeUVKXFxcbklCQkJESEVOQVFzTElBVWdCallDQUFKQUlBd29BZ2dnQjBjTkFDQU1JQUkyQWdnTElCQWdBMm9oQXlBRVFSaHFJQWNRc2dNZ0R5RUxJQVxcXG5JaENTQUZJUW9NQVFzTEFrQWdCQ2dDWENJSFFRbEpEUUFnQkNnQ0hDRUhDd0pBSUFkRkRRQVFvdzRMQWtBZ0QwSC9BWEVOQUNBQUlBQW9cXFxuQWdCQmZuRTJBZ0FMQWtBQ1FDQUVLQUpjSWdCQkNFc05BQ0FFUVJocVFRUnlJUWNNQVFzZ0JDZ0NIQ0VBSUFRb0FpQWhCd3NnQUVFRGRDXFxcbkVBQTBBQ1FDQUFEUUFnREJERUNTQUVLQUljSVFBZ0JDZ0NYQ0VISUFRZ0JDZ0NHRFlDWUNBRVFRQWdBQ0FIUVFoTElna2JOZ0prSUFSQlxcXG40QUJxUVFocUlBUkJHR3BCQ0dwQlBCQ2tEUm9nQkNBQUlBY2dDUnMyQXF3QklBUkJBRFlDcUFFZ0JDQUhRUUFnQ1JzMkFxUUJBa0FEUUNcXFxuQUVRZUFBYWhDa0JrSC9BWEZCQWtZTkFSQ2pEZ3dBQ3dzZ0JFSGdBR29RZ0EwTUFnc2dCeWdDQUVFQU5nSUlJQWNvQWdBUXV3d2dCMEVCXFxcbk9nQUVJQUJCZUdvaEFDQUhRUWhxSVFjTUFBc0xJQVJCc0FGcUpBQWdDRUVRU1F1SUNRRUJmeU1BUVRCcklnSWtBQUpBQWtBQ1FBSkFBa1xcXG5BQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQXRBQUFPRWdBQkFnTUVCUVlIQ0FrS0N3d05EZzhRRVFBTElBSWdcXFxuQUMwQUFUb0FDQ0FDUVNScVFnRTNBZ0FnQWtFQ05nSWNJQUpCNk52TkFEWUNHQ0FDUWVZQk5nSVVJQUlnQWtFUWFqWUNJQ0FDSUFKQkNHXFxcbm8yQWhBZ0FTQUNRUmhxRUswRklRQU1FUXNnQWlBQUtRTUlOd01JSUFKQkpHcENBVGNDQUNBQ1FRSTJBaHdnQWtITTI4MEFOZ0lZSUFKQlxcXG41d0UyQWhRZ0FpQUNRUkJxTmdJZ0lBSWdBa0VJYWpZQ0VDQUJJQUpCR0dvUXJRVWhBQXdRQ3lBQ0lBQXBBd2czQXdnZ0FrRWtha0lCTndcXFxuSUFJQUpCQWpZQ0hDQUNRY3pielFBMkFoZ2dBa0hvQVRZQ0ZDQUNJQUpCRUdvMkFpQWdBaUFDUVFocU5nSVFJQUVnQWtFWWFoQ3RCU0VBXFxcbkRBOExJQUlnQUNzRENEa0RDQ0FDUVNScVFnRTNBZ0FnQWtFQ05nSWNJQUpCc052TkFEWUNHQ0FDUWVrQk5nSVVJQUlnQWtFUWFqWUNJQ1xcXG5BQ0lBSkJDR28yQWhBZ0FTQUNRUmhxRUswRklRQU1EZ3NnQWlBQUtBSUVOZ0lJSUFKQkpHcENBVGNDQUNBQ1FRSTJBaHdnQWtHUTI4MEFcXFxuTmdJWUlBSkI2Z0UyQWhRZ0FpQUNRUkJxTmdJZ0lBSWdBa0VJYWpZQ0VDQUJJQUpCR0dvUXJRVWhBQXdOQ3lBQ0lBQXBBZ1EzQXdnZ0FrXFxcbkVrYWtJQk53SUFJQUpCQVRZQ0hDQUNRZnphelFBMkFoZ2dBa0hyQVRZQ0ZDQUNJQUpCRUdvMkFpQWdBaUFDUVFocU5nSVFJQUVnQWtFWVxcXG5haEN0QlNFQURBd0xJQUpCSkdwQ0FEY0NBQ0FDUVFFMkFod2dBa0hzMnMwQU5nSVlJQUpCOU5qTkFEWUNJQ0FCSUFKQkdHb1FyUVVoQUFcXFxud0xDeUFDUVNScVFnQTNBZ0FnQWtFQk5nSWNJQUpCNU5yTkFEWUNHQ0FDUWZUWXpRQTJBaUFnQVNBQ1FSaHFFSzBGSVFBTUNnc2dBa0VrXFxcbmFrSUFOd0lBSUFKQkFUWUNIQ0FDUWREYXpRQTJBaGdnQWtIMDJNMEFOZ0lnSUFFZ0FrRVlhaEN0QlNFQURBa0xJQUpCSkdwQ0FEY0NBQ1xcXG5BQ1FRRTJBaHdnQWtHODJzMEFOZ0lZSUFKQjlOak5BRFlDSUNBQklBSkJHR29RclFVaEFBd0lDeUFDUVNScVFnQTNBZ0FnQWtFQk5nSWNcXFxuSUFKQnBOck5BRFlDR0NBQ1FmVFl6UUEyQWlBZ0FTQUNRUmhxRUswRklRQU1Cd3NnQWtFa2FrSUFOd0lBSUFKQkFUWUNIQ0FDUVpUYXpRXFxcbkEyQWhnZ0FrSDAyTTBBTmdJZ0lBRWdBa0VZYWhDdEJTRUFEQVlMSUFKQkpHcENBRGNDQUNBQ1FRRTJBaHdnQWtHSTJzMEFOZ0lZSUFKQlxcXG45TmpOQURZQ0lDQUJJQUpCR0dvUXJRVWhBQXdGQ3lBQ1FTUnFRZ0EzQWdBZ0FrRUJOZ0ljSUFKQi9Obk5BRFlDR0NBQ1FmVFl6UUEyQWlcXFxuQWdBU0FDUVJocUVLMEZJUUFNQkFzZ0FrRWtha0lBTndJQUlBSkJBVFlDSENBQ1Flalp6UUEyQWhnZ0FrSDAyTTBBTmdJZ0lBRWdBa0VZXFxcbmFoQ3RCU0VBREFNTElBSkJKR3BDQURjQ0FDQUNRUUUyQWh3Z0FrSFEyYzBBTmdJWUlBSkI5TmpOQURZQ0lDQUJJQUpCR0dvUXJRVWhBQVxcXG53Q0N5QUNRU1JxUWdBM0FnQWdBa0VCTmdJY0lBSkJ1Tm5OQURZQ0dDQUNRZlRZelFBMkFpQWdBU0FDUVJocUVLMEZJUUFNQVFzZ0FTQUFcXFxuS0FJRUlBQkJDR29vQWdBUS93b2hBQXNnQWtFd2FpUUFJQUFMa3dnQkJuOGpBRUV3YXlJQkpBQkJBQ0VDSUFCQkZHcEJBRFlDQUNBQVFRXFxcbnhxSVFNQ1FBSkFBa0FDUUFKQUEwQWdBVUVZYWlBQUVMWUVJQUV0QUJnTkF3SkFJQUV0QUJrTkFDQUJRUVUyQWlBZ0FDQUJRU0JxRU00SVxcXG5JUVFNQmdzQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFFdEFCb2lCRUVpUmcwQUlBUkJMVVlOQVNBRVFkc0FSZzBEQWtBZ0JFSG1BRVlOQUNcXFxuQUVRZTRBUmcwRkFrQWdCRUgwQUVZTkFDQUVRZnNBUmcwRklBUkJVR3BCL3dGeFFRcEpEUVFnQVVFS05nSWdJQUFnQVVFZ2FoRE9DQ0VFXFxcbkRBOExJQUFnQUNnQ0NFRUJhallDQ0NBQVFZU0F3QUJCQXhEREF5SUVSUTBHREE0TElBQWdBQ2dDQ0VFQmFqWUNDQ0FBUVlDQXdBQkJCQlxcXG5EREF5SUVSUTBGREEwTElBQWdBQ2dDQ0VFQmFqWUNDQ0FBRUtBRElnUkZEUVFNREFzZ0FDQUFLQUlJUVFGcU5nSUlDeUFBRVBrQklnUkZcXFxuRFFJTUNnc2dBeUFDUVFGeElBVVFyZ2dnQUNBQUtBSUlRUUZxTmdJSVFRQWhCaUFFSVFVTUFnc2dBQ0FBS0FJSVFRRnFOZ0lJSUFCQmg0XFxcbkRBQUVFREVNTURJZ1FOQ0FzQ1FDQUNRUUZ4RFFBZ0FVRVFhaUFERUx3SElBRXRBQkJCQVhGRkRRY2dBUzBBRVNFRkMwRUFJUVFNQVF0QlxcXG5BU0VFQ3dKQUEwQUNRQUpBSUFRT0FnQUJBUXRCQVNFR1FRRWhCQXdCQ3lBQlFSaHFJQUFRdGdRZ0FTMEFHQTBGQWtBQ1FBSkFBa0FDUUNcXFxuQUJMUUFaRFFCQkFpRUVJQVZCL3dGeElnVkIyd0JHRFFJZ0JVSDdBRVlOQVVHS2dNQUFRU2hCbUlIQUFCQ0RCd0FMQWtBQ1FBSkFBa0FnXFxcbkFTMEFHaUlFUWQwQVJnMEFJQVJCL1FCR0RRRWdCRUVzUmcwRERBY0xJQVZCL3dGeFFkc0FSdzBHREFFTElBVkIvd0Z4UWZzQVJ3MEZDeVxcXG5BQUlBQW9BZ2hCQVdvMkFnZ2dBVUVJYWlBREVMd0hJQUV0QUFoQkFYRkZEUXNnQVMwQUNTRUZEQU1MSUFaQkFYRkZEUVVnQUNBQUtBSUlcXFxuUVFGcU5nSUlEQVVMUVFNaEJBc2dBU0FFTmdJZ0lBQWdBVUVnYWhET0NDRUVEQWtMUVFBaEJBd0JDd3NnQmtFQmNVVU5BRUVISVFRQ1FDXFxcbkFGUWY4QmNTSUZRZHNBUmcwQUlBVkIrd0JIRFFOQkNDRUVDeUFCSUFRMkFpQWdBQ0FCUVNCcUVNNElJUVFNQmd0QkFTRUNJQVZCL3dGeFxcXG5RZnNBUncwQUlBRkJHR29nQUJDMkJDQUJMUUFZRFFNQ1FDQUJMUUFaRFFBZ0FVRUROZ0lnSUFBZ0FVRWdhaERPQ0NFRURBWUxJQUV0QUJcXFxucEJJa2NOQWlBQUlBQW9BZ2hCQVdvMkFnZ2dBQkNnQXlJRURRVWdBVUVZYWlBQUVMWUVJQUV0QUJnTkF3SkFJQUV0QUJrTkFDQUJRUU0yXFxcbkFpQWdBQ0FCUVNCcUVNNElJUVFNQmdzQ1FDQUJMUUFhUVRwSERRQkJBU0VDSUFBZ0FDZ0NDRUVCYWpZQ0NBd0JDd3NnQVVFR05nSWdJQVxcXG5BZ0FVRWdhaERPQ0NFRURBUUxRWXFBd0FCQktFR0lnY0FBRUlNSEFBc2dBVUVSTmdJZ0lBQWdBVUVnYWhET0NDRUVEQUlMSUFFb0Fod2hcXFxuQkF3QkMwRUFJUVFMSUFGQk1Hb2tBQ0FFQzYwSEFRaC9Ba0FDUUNBQUtBSUFJZ01nQUNnQ0NDSUVja1VOQUFKQUlBUkZEUUFnQVNBQ2FpXFxcbkVGSUFCQkRHb29BZ0JCQVdvaEJrRUFJUWNnQVNFSUFrQURRQ0FJSVFRZ0JrRi9haUlHUlEwQklBUWdCVVlOQWdKQUFrQWdCQ3dBQUNJSlxcXG5RWDlNRFFBZ0JFRUJhaUVJSUFsQi93RnhJUWtNQVFzZ0JDMEFBVUUvY1NFS0lBbEJIM0VoQ0FKQUlBbEJYMHNOQUNBSVFRWjBJQXB5SVFcXFxua2dCRUVDYWlFSURBRUxJQXBCQm5RZ0JDMEFBa0UvY1hJaENnSkFJQWxCY0U4TkFDQUtJQWhCREhSeUlRa2dCRUVEYWlFSURBRUxJQXBCXFxcbkJuUWdCQzBBQTBFL2NYSWdDRUVTZEVHQWdQQUFjWElpQ1VHQWdNUUFSZzBESUFSQkJHb2hDQXNnQnlBRWF5QUlhaUVISUFsQmdJREVBRVxcXG5jTkFBd0NDd3NnQkNBRlJnMEFBa0FnQkN3QUFDSUlRWDlLRFFBZ0NFRmdTUTBBSUFoQmNFa05BQ0FFTFFBQ1FUOXhRUVowSUFRdEFBRkJcXFxuUDNGQkRIUnlJQVF0QUFOQlAzRnlJQWhCL3dGeFFSSjBRWUNBOEFCeGNrR0FnTVFBUmcwQkN3SkFBa0FnQjBVTkFBSkFJQWNnQWtrTkFFXFxcbkVBSVFRZ0J5QUNSZzBCREFJTFFRQWhCQ0FCSUFkcUxBQUFRVUJJRFFFTElBRWhCQXNnQnlBQ0lBUWJJUUlnQkNBQklBUWJJUUVMQWtBZ1xcXG5BdzBBSUFBb0FoUWdBU0FDSUFCQkdHb29BZ0FvQWd3UkNRQVBDeUFBS0FJRUlRY0NRQUpBSUFKQkVFa05BQ0FCSUFJUVZDRUlEQUVMQWtcXFxuQWdBZzBBUVFBaENBd0JDeUFDUVFOeElRa0NRQUpBSUFKQkJFOE5BRUVBSVFnZ0FTRUVEQUVMSUFKQmZIRWhCa0VBSVFnZ0FTRUVBMEFnXFxcbkNDQUVMQUFBUWI5L1Ntb2dCQ3dBQVVHL2YwcHFJQVFzQUFKQnYzOUthaUFFTEFBRFFiOS9TbW9oQ0NBRVFRUnFJUVFnQmtGOGFpSUdEUVxcXG5BTEN5QUpSUTBBQTBBZ0NDQUVMQUFBUWI5L1Ntb2hDQ0FFUVFGcUlRUWdDVUYvYWlJSkRRQUxDd0pBSUFjZ0NFME5BRUVBSVFRZ0J5QUlcXFxuYXlJSUlRY0NRQUpBQWtBZ0FDMEFJQTRFQWdBQkFnSUxRUUFoQnlBSUlRUU1BUXNnQ0VFQmRpRUVJQWhCQVdwQkFYWWhCd3NnQkVFQmFpXFxcbkVFSUFCQkdHb29BZ0FoQ1NBQVFSUnFLQUlBSVFZZ0FDZ0NFQ0VJQWtBRFFDQUVRWDlxSWdSRkRRRWdCaUFJSUFrb0FoQVJCZ0JGRFFBTFxcXG5RUUVQQzBFQklRUWdDRUdBZ01RQVJnMENJQVlnQVNBQ0lBa29BZ3dSQ1FBTkFrRUFJUVFEUUFKQUlBY2dCRWNOQUNBSElBZEpEd3NnQkVcXFxuRUJhaUVFSUFZZ0NDQUpLQUlRRVFZQVJRMEFDeUFFUVg5cUlBZEpEd3NnQUNnQ0ZDQUJJQUlnQUVFWWFpZ0NBQ2dDREJFSkFBOExJQUFvXFxcbkFoUWdBU0FDSUFCQkdHb29BZ0FvQWd3UkNRQWhCQXNnQkF2eUJnRUpmd0pBQWtBZ0FFRURha0Y4Y1NJQ0lBQnJJZ01nQVVzTkFDQUJJQVxcXG5OcklnUkJCRWtOQUNBRVFRTnhJUVZCQUNFR1FRQWhBUUpBSUFJZ0FFWU5BQ0FEUVFOeElRY0NRQUpBSUFJZ0FFRi9jMnBCQTA4TkFFRUFcXFxuSVFFZ0FDRUNEQUVMSUFOQmZIRWhDRUVBSVFFZ0FDRUNBMEFnQVNBQ0xBQUFRYjkvU21vZ0Fpd0FBVUcvZjBwcUlBSXNBQUpCdjM5S2FpXFxcbkFDTEFBRFFiOS9TbW9oQVNBQ1FRUnFJUUlnQ0VGOGFpSUlEUUFMQ3lBSFJRMEFBMEFnQVNBQ0xBQUFRYjkvU21vaEFTQUNRUUZxSVFJZ1xcXG5CMEYvYWlJSERRQUxDeUFBSUFOcUlRQUNRQ0FGUlEwQUlBQWdCRUY4Y1dvaUFpd0FBRUcvZjBvaEJpQUZRUUZHRFFBZ0JpQUNMQUFCUWJcXFxuOS9TbW9oQmlBRlFRSkdEUUFnQmlBQ0xBQUNRYjkvU21vaEJnc2dCRUVDZGlFRElBWWdBV29oQndOQUlBQWhCaUFEUlEwQ0lBTkJ3QUVnXFxcbkEwSEFBVWtiSWdSQkEzRWhCU0FFUVFKMElRa0NRQUpBSUFSQi9BRnhJZ29OQUVFQUlRSU1BUXNnQmlBS1FRSjBhaUVJUVFBaEFpQUdJUVxcXG5BRFFDQUFSUTBCSUFCQkRHb29BZ0FpQVVGL2MwRUhkaUFCUVFaMmNrR0Jnb1FJY1NBQVFRaHFLQUlBSWdGQmYzTkJCM1lnQVVFR2RuSkJcXFxuZ1lLRUNIRWdBRUVFYWlnQ0FDSUJRWDl6UVFkMklBRkJCblp5UVlHQ2hBaHhJQUFvQWdBaUFVRi9jMEVIZGlBQlFRWjJja0dCZ29RSWNTXFxcbkFDYW1wcWFpRUNJQUJCRUdvaUFDQUlSdzBBQ3dzZ0F5QUVheUVESUFZZ0NXb2hBQ0FDUVFoMlFmK0IvQWR4SUFKQi80SDhCM0ZxUVlHQVxcXG5CR3hCRUhZZ0Iyb2hCeUFGUlEwQUN3SkFBa0FnQmcwQVFRQWhBQXdCQ3lBR0lBcEJBblJxSWdJb0FnQWlBRUYvYzBFSGRpQUFRUVoyY2tcXFxuR0Jnb1FJY1NFQUlBVkJBVVlOQUNBQ0tBSUVJZ0ZCZjNOQkIzWWdBVUVHZG5KQmdZS0VDSEVnQUdvaEFDQUZRUUpHRFFBZ0FpZ0NDQ0lDXFxcblFYOXpRUWQySUFKQkJuWnlRWUdDaEFoeElBQnFJUUFMSUFCQkNIWkIvNEVjY1NBQVFmK0IvQWR4YWtHQmdBUnNRUkIySUFkcUR3c0NRQ1xcXG5BQkRRQkJBQThMSUFGQkEzRWhBZ0pBQWtBZ0FVRUVUdzBBUVFBaEJ3d0JDeUFCUVh4eElRRkJBQ0VIQTBBZ0J5QUFMQUFBUWI5L1Ntb2dcXFxuQUN3QUFVRy9mMHBxSUFBc0FBSkJ2MzlLYWlBQUxBQURRYjkvU21vaEJ5QUFRUVJxSVFBZ0FVRjhhaUlCRFFBTEN5QUNSUTBBQTBBZ0J5XFxcbkFBTEFBQVFiOS9TbW9oQnlBQVFRRnFJUUFnQWtGL2FpSUNEUUFMQ3lBSEM0a0hBZzUvQVg0akFFRWdheUlESkFCQkFTRUVBa0FDUUFKQVxcXG5JQUlvQWhRaUJVRWlJQUpCR0dvb0FnQWlCaWdDRUNJSEVRWUFEUUFDUUFKQUlBRU5BRUVBSVFKQkFDRUJEQUVMSUFBZ0FXb2hDRUVBSVFcXFxuSWdBQ0VKUVFBaENnSkFBMEFDUUFKQUlBa2lDeXdBQUNJTVFYOU1EUUFnQzBFQmFpRUpJQXhCL3dGeElRME1BUXNnQ3kwQUFVRS9jU0VPXFxcbklBeEJIM0VoRHdKQUlBeEJYMHNOQUNBUFFRWjBJQTV5SVEwZ0MwRUNhaUVKREFFTElBNUJCblFnQ3kwQUFrRS9jWEloRGlBTFFRTnFJUVxcXG5rQ1FDQU1RWEJQRFFBZ0RpQVBRUXgwY2lFTkRBRUxJQTVCQm5RZ0NTMEFBRUUvY1hJZ0QwRVNkRUdBZ1BBQWNYSWlEVUdBZ01RQVJnMENcXFxuSUF0QkJHb2hDUXNnQXlBTlFZR0FCQkJoQWtBQ1FDQURMUUFBUVlBQlJnMEFJQU10QUFzZ0F5MEFDbXRCL3dGeFFRRkdEUUFnQ2lBQ1NRXFxcbjBIQWtBZ0FrVU5BQUpBSUFJZ0FVa05BQ0FDSUFGR0RRRU1DUXNnQUNBQ2Fpd0FBRUZBU0EwSUN3SkFJQXBGRFFBQ1FDQUtJQUZKRFFBZ1xcXG5DaUFCUncwSkRBRUxJQUFnQ21vc0FBQkJ2MzlNRFFnTEFrQUNRQ0FGSUFBZ0Ftb2dDaUFDYXlBR0tBSU1FUWtBRFFBZ0EwRVFha0VJYWlcXFxuSVBJQU5CQ0dvb0FnQTJBZ0FnQXlBREtRTUFJaEUzQXhBQ1FDQVJwMEgvQVhGQmdBRkhEUUJCZ0FFaERnTkFBa0FDUUNBT1FmOEJjVUdBXFxcbkFVWU5BQ0FETFFBYUlnd2dBeTBBRzA4TkJTQURJQXhCQVdvNkFCb2dERUVLVHcwSElBTkJFR29nREdvdEFBQWhBZ3dCQzBFQUlRNGdEMFxcXG5FQU5nSUFJQU1vQWhRaEFpQURRZ0EzQXhBTElBVWdBaUFIRVFZQVJRMEFEQUlMQ3lBRExRQWFJZ0pCQ2lBQ1FRcExHeUVNSUFNdEFCc2lcXFxuRGlBQ0lBNGdBa3NiSVJBRFFDQVFJQUpHRFFJZ0F5QUNRUUZxSWc0NkFCb2dEQ0FDUmcwRUlBTkJFR29nQW1vaER5QU9JUUlnQlNBUExRXFxcbkFBSUFjUkJnQkZEUUFMQzBFQklRUU1CZ3RCQVNFQ0FrQWdEVUdBQVVrTkFFRUNJUUlnRFVIL0QwME5BRUVEUVFRZ0RVR0FnQVJKR3lFQ1xcXG5DeUFDSUFwcUlRSUxJQW9nQzJzZ0NXb2hDaUFKSUFoSERRRU1BZ3NMSUF4QkNrSDR0ODRBRUlFRkFBc0NRQ0FDRFFCQkFDRUNEQUVMQWtcXFxuQUNRQ0FDSUFGSkRRQWdBU0FDUmcwQkRBUUxJQUFnQW1vc0FBQkJ2MzlNRFFNTElBRWdBbXNoQVFzZ0JTQUFJQUpxSUFFZ0JpZ0NEQkVKXFxcbkFBMEFJQVZCSWlBSEVRWUFJUVFMSUFOQklHb2tBQ0FFRHdzZ0FDQUJJQUlnQVVIY29jNEFFT1FMQUFzZ0FDQUJJQUlnQ2tITW9jNEFFT1xcXG5RTEFBdkRCd0VHZnlNQVFUQnJJZ0VrQUVFQUlRSWdBRUVVYWtFQU5nSUFJQUJCREdvaEF3SkFBa0FDUUFKQUFrQURRQ0FCUVJocUlBQVFcXFxudWdRZ0FTMEFHQTBEQWtBZ0FTMEFHUTBBSUFGQkJUWUNJQ0FBSUFGQklHb1EzUWdoQkF3R0N3SkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0FTXFxcbjBBR2lJRVFTSkdEUUFnQkVFdFJnMEJJQVJCMndCR0RRTUNRQ0FFUWVZQVJnMEFJQVJCN2dCR0RRVUNRQ0FFUWZRQVJnMEFJQVJCK3dCR1xcXG5EUVVnQkVGUWFrSC9BWEZCQ2trTkJDQUJRUW8yQWlBZ0FDQUJRU0JxRU4wSUlRUU1Ed3NnQUJDRERDQUFRWVNBd0FCQkF4RDhBeUlFUlFcXFxuMEdEQTRMSUFBUWd3d2dBRUdBZ01BQVFRUVEvQU1pQkVVTkJRd05DeUFBRUlNTUlBQVEyUTBpQkVVTkJBd01DeUFBRUlNTUN5QUFFSU1DXFxcbklnUkZEUUlNQ2dzZ0F5QUNRUUZ4SUFVUXJnZ2dBQkNEREVFQUlRWWdCQ0VGREFJTElBQVFnd3dnQUVHSGdNQUFRUU1RL0FNaUJBMElDd1xcXG5KQUlBSkJBWEVOQUNBQlFSQnFJQU1RdkFjZ0FTMEFFRUVCY1VVTkJ5QUJMUUFSSVFVTFFRQWhCQXdCQzBFQklRUUxBa0FEUUFKQUFrQWdcXFxuQkE0Q0FBRUJDMEVCSVFaQkFTRUVEQUVMSUFGQkdHb2dBQkM2QkNBQkxRQVlEUVVDUUFKQUFrQUNRQUpBSUFFdEFCa05BRUVDSVFRZ0JVXFxcbkgvQVhFaUJVSGJBRVlOQWlBRlFmc0FSZzBCUVlxQXdBQkJLRUdZZ2NBQUVJTUhBQXNDUUFKQUFrQUNRQ0FCTFFBYUlnUkIzUUJHRFFBZ1xcXG5CRUg5QUVZTkFTQUVRU3hHRFFNTUJ3c2dCVUgvQVhGQjJ3QkhEUVlNQVFzZ0JVSC9BWEZCK3dCSERRVUxJQUFRZ3d3Z0FVRUlhaUFERUxcXFxud0hJQUV0QUFoQkFYRkZEUXNnQVMwQUNTRUZEQU1MSUFaQkFYRkZEUVVnQUJDRERBd0ZDMEVESVFRTElBRWdCRFlDSUNBQUlBRkJJR29RXFxcbjNRZ2hCQXdKQzBFQUlRUU1BUXNMSUFaQkFYRkZEUUJCQnlFRUFrQWdCVUgvQVhFaUJVSGJBRVlOQUNBRlFmc0FSdzBEUVFnaEJBc2dBU1xcXG5BRU5nSWdJQUFnQVVFZ2FoRGRDQ0VFREFZTFFRRWhBaUFGUWY4QmNVSDdBRWNOQUNBQlFSaHFJQUFRdWdRZ0FTMEFHQTBEQWtBZ0FTMEFcXFxuR1EwQUlBRkJBellDSUNBQUlBRkJJR29RM1FnaEJBd0dDeUFCTFFBYVFTSkhEUUlnQUJDRERDQUFFTmtOSWdRTkJTQUJRUmhxSUFBUXVnXFxcblFnQVMwQUdBMERBa0FnQVMwQUdRMEFJQUZCQXpZQ0lDQUFJQUZCSUdvUTNRZ2hCQXdHQ3dKQUlBRXRBQnBCT2tjTkFDQUFFSU1NUVFFaFxcXG5BZ3dCQ3dzZ0FVRUdOZ0lnSUFBZ0FVRWdhaERkQ0NFRURBUUxRWXFBd0FCQktFR0lnY0FBRUlNSEFBc2dBVUVSTmdJZ0lBQWdBVUVnYWhcXFxuRGRDQ0VFREFJTElBRW9BaHdoQkF3QkMwRUFJUVFMSUFGQk1Hb2tBQ0FFQzZjSEFnaC9BbjRqQUVIZ0FHc2lCaVFBSUFZZ0JEWUNIQ0FHXFxcbklBTTJBaGdnQVNnQ0RDRUhJQVlnQmtFWWFqWUNKQUpBQWtBZ0J5QUNhaUlESUFkUERRQWdCa0VJYWlBRkVMb0dJQVlvQWd3aENDQUdLQVxcXG5JSUlRUU1BUXRCQVNFRUFrQWdBeUFCS0FJRUlna2dDVUVCYWlJS1FRTjJRUWRzSUFsQkNFa2JJZ3RCQVhaTkRRQWdCa0hBQUdvZ0F5QUxcXFxuUVFGcUlnUWdBeUFFU3hzZ0JSQ2RBZ0pBSUFZb0FrQWlCUTBBSUFaQnlBQnFLQUlBSVFnZ0JpZ0NSQ0VFREFJTElBWkNoSUNBZ0lBQk53XFxcbk00SUFZZ0JpZ0NSRFlDTENBR0lBVTJBaWdnQmlBSE5nSTBJQVlnQmlnQ1NDQUhheUlJTmdJd0lBRW9BZ0FpQ1VGOGFpRURRUUFoQkFOQVxcXG5Ba0FnQ2lBRVJ3MEFJQUVwQWdBaERpQUJJQVlwQXlnM0FnQWdCa0VvYWtFSWFpSUVLUU1BSVE4Z0JDQUJRUWhxSWdFcEFnQTNBd0FnQVNcXFxuQVBOd0lBSUFZZ0RqY0RLQUpBSUFZb0FpeEZEUUFnQmtFb2FrRUVRUWdReVFjTFFZR0FnSUI0SVFRTUF3c0NRQ0FKSUFScUxBQUFRUUJJXFxcbkRRQWdCa0VvYWlBR1FTaHFJQVpCSkdvZ0FTQUVFSkVISWc0USt3TWlBaUFPRU1FSUlBVWdBa0VDZEd0QmZHb2dBeWdBQURZQUFBc2dCRVxcXG5FQmFpRUVJQU5CZkdvaEF3d0FDd3NnQmtFQk9nQTBJQVpCQnpZQ01DQUdJQW8yQWl3Z0JrRUFOZ0lvSUFFb0FnQWhBZ05BQWtBQ1FDQUVcXFxuUWY4QmNRMEFJQVpCRUdvZ0JrRW9haUFHS0FJd0VJb0hJQVlvQWhRaEF5QUdLQUlRSVFRTUFRdEJBQ0VFSUFaQkFEb0FOQ0FHS0FJb0lnXFxcbk1nQmlnQ0xFOE5BRUVCSVFRZ0JpQURRUUZxTmdJb0N3SkFJQVFOQUFKQUFrQWdDa0VJU1EwQUlBSWdDbW9nQWlrQUFEY0FBQXdCQ3lBQ1xcXG5RUWhxSUFJZ0NoQ2pEUm9MUVFBaERBTkFBa0FDUUNBTUlnTWdDa1lOQUNBRFFRRnFJUXdnQWlBRGFpSU5MUUFBUVlBQlJ3MENJQUlnQTBcXFxuRUNkR3RCZkdvaENBTkFJQU1nQ1NBR1FTUnFJQUVnQXhDUkJ5SU9wM0VpQldzZ0FTQU9FUHNESWdRZ0JXdHpJQWx4UVFoSkRRSWdBaUFFXFxcbmFpMEFBQ0VGSUFFZ0JDQU9FTUVJSUFJZ0JFRUNkR3RCZkdvaEJBSkFJQVZCL3dGR0RRQWdDQ0FFUVFRUXB3Y01BUXNMSUExQi93RTZBQVxcXG5BZ0EwRjRhaUFKY1NBQ2FrRUlha0gvQVRvQUFDQUVJQWdvQUFBMkFBQU1BZ3NnQVNBTElBZHJOZ0lJUVlHQWdJQjRJUVFNQkFzZ0FTQURcXFxuSUE0UXdRZ01BQXNMSUFJZ0Eyb2lCQ0FFS1FNQUlnNUNmNFZDQjRoQ2dZS0VpSkNnd0lBQmd5QU9Rdi8rL2Z2Mzc5Ky8vd0NFZkRjREFDXFxcbkFHTFFBMElRUU1BQXNMSUFBZ0NEWUNCQ0FBSUFRMkFnQWdCa0hnQUdva0FBdW5Cd0lJZndKK0l3QkI0QUJySWdZa0FDQUdJQVEyQWh3Z1xcXG5CaUFETmdJWUlBRW9BZ3doQnlBR0lBWkJHR28yQWlRQ1FBSkFJQWNnQW1vaUF5QUhUdzBBSUFaQkNHb2dCUkM2QmlBR0tBSU1JUWdnQmlcXFxuZ0NDQ0VFREFFTFFRRWhCQUpBSUFNZ0FTZ0NCQ0lKSUFsQkFXb2lDa0VEZGtFSGJDQUpRUWhKR3lJTFFRRjJUUTBBSUFaQndBQnFJQU1nXFxcbkMwRUJhaUlFSUFNZ0JFc2JJQVVRblFJQ1FDQUdLQUpBSWdVTkFDQUdRY2dBYWlnQ0FDRUlJQVlvQWtRaEJBd0NDeUFHUW9TQWdJQ0FBVFxcXG5jRE9DQUdJQVlvQWtRMkFpd2dCaUFGTmdJb0lBWWdCellDTkNBR0lBWW9Ba2dnQjJzaUNEWUNNQ0FCS0FJQUlnbEJmR29oQTBFQUlRUURcXFxuUUFKQUlBb2dCRWNOQUNBQktRSUFJUTRnQVNBR0tRTW9Od0lBSUFaQktHcEJDR29pQkNrREFDRVBJQVFnQVVFSWFpSUJLUUlBTndNQUlBXFxcbkVnRHpjQ0FDQUdJQTQzQXlnQ1FDQUdLQUlzUlEwQUlBWkJLR3BCQkVFSUVNa0hDMEdCZ0lDQWVDRUVEQU1MQWtBZ0NTQUVhaXdBQUVFQVxcXG5TQTBBSUFaQktHb2dCa0VvYWlBR1FTUnFJQUVnQkJDU0J5SU9FUHNESWdJZ0RoREJDQ0FGSUFKQkFuUnJRWHhxSUFNb0FBQTJBQUFMSUFcXFxuUkJBV29oQkNBRFFYeHFJUU1NQUFzTElBWkJBVG9BTkNBR1FRYzJBakFnQmlBS05nSXNJQVpCQURZQ0tDQUJLQUlBSVFJRFFBSkFBa0FnXFxcbkJFSC9BWEVOQUNBR1FSQnFJQVpCS0dvZ0JpZ0NNQkNLQnlBR0tBSVVJUU1nQmlnQ0VDRUVEQUVMUVFBaEJDQUdRUUE2QURRZ0JpZ0NLQ1xcXG5JRElBWW9BaXhQRFFCQkFTRUVJQVlnQTBFQmFqWUNLQXNDUUNBRURRQUNRQUpBSUFwQkNFa05BQ0FDSUFwcUlBSXBBQUEzQUFBTUFRc2dcXFxuQWtFSWFpQUNJQW9Rb3cwYUMwRUFJUXdEUUFKQUFrQWdEQ0lESUFwR0RRQWdBMEVCYWlFTUlBSWdBMm9pRFMwQUFFR0FBVWNOQWlBQ0lBXFxcbk5CQW5SclFYeHFJUWdEUUNBRElBa2dCa0VrYWlBQklBTVFrZ2NpRHFkeElnVnJJQUVnRGhEN0F5SUVJQVZyY3lBSmNVRUlTUTBDSUFJZ1xcXG5CR290QUFBaEJTQUJJQVFnRGhEQkNDQUNJQVJCQW5SclFYeHFJUVFDUUNBRlFmOEJSZzBBSUFnZ0JFRUVFS2NIREFFTEN5QU5RZjhCT2dcXFxuQUFJQU5CZUdvZ0NYRWdBbXBCQ0dwQi93RTZBQUFnQkNBSUtBQUFOZ0FBREFJTElBRWdDeUFIYXpZQ0NFR0JnSUNBZUNFRURBUUxJQUVnXFxcbkF5QU9FTUVJREFBTEN5QUNJQU5xSWdRZ0JDa0RBQ0lPUW4rRlFnZUlRb0dDaElpUW9NQ0FBWU1nRGtMLy92Mzc5Ky9mdi84QWhIdzNBd1xcXG5BZ0JpMEFOQ0VFREFBTEN5QUFJQWcyQWdRZ0FDQUVOZ0lBSUFaQjRBQnFKQUFMcHdjQ0NIOENmaU1BUWVBQWF5SUdKQUFnQmlBRU5nSWNcXFxuSUFZZ0F6WUNHQ0FCS0FJTUlRY2dCaUFHUVJocU5nSWtBa0FDUUNBSElBSnFJZ01nQjA4TkFDQUdRUWhxSUFVUXVnWWdCaWdDRENFSUlBXFxcbllvQWdnaEJBd0JDMEVCSVFRQ1FDQURJQUVvQWdRaUNTQUpRUUZxSWdwQkEzWkJCMndnQ1VFSVNSc2lDMEVCZGswTkFDQUdRY0FBYWlBRFxcXG5JQXRCQVdvaUJDQURJQVJMR3lBRkVKMENBa0FnQmlnQ1FDSUZEUUFnQmtISUFHb29BZ0FoQ0NBR0tBSkVJUVFNQWdzZ0JrS0VnSUNBZ0FcXFxuRTNBemdnQmlBR0tBSkVOZ0lzSUFZZ0JUWUNLQ0FHSUFjMkFqUWdCaUFHS0FKSUlBZHJJZ2cyQWpBZ0FTZ0NBQ0lKUVh4cUlRTkJBQ0VFXFxcbkEwQUNRQ0FLSUFSSERRQWdBU2tDQUNFT0lBRWdCaWtES0RjQ0FDQUdRU2hxUVFocUlnUXBBd0FoRHlBRUlBRkJDR29pQVNrQ0FEY0RBQ1xcXG5BQklBODNBZ0FnQmlBT053TW9Ba0FnQmlnQ0xFVU5BQ0FHUVNocVFRUkJDQkRKQnd0QmdZQ0FnSGdoQkF3REN3SkFJQWtnQkdvc0FBQkJcXFxuQUVnTkFDQUdRU2hxSUFaQktHb2dCa0VrYWlBQklBUVFrd2NpRGhEN0F5SUNJQTRRd1FnZ0JTQUNRUUowYTBGOGFpQURLQUFBTmdBQUN5XFxcbkFFUVFGcUlRUWdBMEY4YWlFRERBQUxDeUFHUVFFNkFEUWdCa0VITmdJd0lBWWdDallDTENBR1FRQTJBaWdnQVNnQ0FDRUNBMEFDUUFKQVxcXG5JQVJCL3dGeERRQWdCa0VRYWlBR1FTaHFJQVlvQWpBUWlnY2dCaWdDRkNFRElBWW9BaEFoQkF3QkMwRUFJUVFnQmtFQU9nQTBJQVlvQWlcXFxuZ2lBeUFHS0FJc1R3MEFRUUVoQkNBR0lBTkJBV28yQWlnTEFrQWdCQTBBQWtBQ1FDQUtRUWhKRFFBZ0FpQUthaUFDS1FBQU53QUFEQUVMXFxcbklBSkJDR29nQWlBS0VLTU5HZ3RCQUNFTUEwQUNRQUpBSUF3aUF5QUtSZzBBSUFOQkFXb2hEQ0FDSUFOcUlnMHRBQUJCZ0FGSERRSWdBaVxcXG5BRFFRSjBhMEY4YWlFSUEwQWdBeUFKSUFaQkpHb2dBU0FERUpNSElnNm5jU0lGYXlBQklBNFErd01pQkNBRmEzTWdDWEZCQ0VrTkFpQUNcXFxuSUFScUxRQUFJUVVnQVNBRUlBNFF3UWdnQWlBRVFRSjBhMEY4YWlFRUFrQWdCVUgvQVVZTkFDQUlJQVJCQkJDbkJ3d0JDd3NnRFVIL0FUXFxcbm9BQUNBRFFYaHFJQWx4SUFKcVFRaHFRZjhCT2dBQUlBUWdDQ2dBQURZQUFBd0NDeUFCSUFzZ0IyczJBZ2hCZ1lDQWdIZ2hCQXdFQ3lBQlxcXG5JQU1nRGhEQkNBd0FDd3NnQWlBRGFpSUVJQVFwQXdBaURrSi9oVUlIaUVLQmdvU0lrS0RBZ0FHRElBNUMvLzc5Ky9mdjM3Ly9BSVI4TndcXFxuTUFJQVl0QURRaEJBd0FDd3NnQUNBSU5nSUVJQUFnQkRZQ0FDQUdRZUFBYWlRQUM5Z0hBZ1ovQVg0akFFR0FBbXNpQXlRQUlBTkJ1QUZxXFxcbklBRW9BcVFCUVFocUlBSVFyUVlDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQU1vQXJnQklnUkZEUUFnQXlBREtRUEFBVGNERUNBRElBTW9BclxcXG53Qk5nSU1JQU1nQkRZQ0NDQURRYmdCYWlBQktBS2tBVUVJYWlBRFFRaHFFTmtCSUFOQkNHcEJCSEloQkNBREtBSzRBU0VGSUFNb0FzQUJcXFxuSWdaQmdaVHIzQU5HRFFFZ0F5Z0N2QUVoQnlBRFFkZ0Fha0VNYWlBRFFiZ0Jha0VNYWtFMEVLUU5HaUFESUFjMkFsd2dBeUFGTmdKWUlBXFxcbk1nQmpZQ1lBSkFBa0FDUUNBR1FZQ1U2OXdEUmcwQUlBTkJHR29nQTBIWUFHcEJ3QUFRcEEwYUlBTWdBMEVvYWlJRkVJUUlJQU5CdUFGcVxcXG5JQUlnQXlnQ0FDQURLQUlFRUdjZ0EwSFlBR3BCQ0dvaUJpQURRYmdCYWtFSWFpSUlLQUlBTmdJQUlBTWdBeWtEdUFFM0ExZ2dBeTBBeEFcXFxuRWlCMEVDUmcwQklBTkJtQUZxUVE5cUlBTkJ1QUZxUVE5cUxRQUFPZ0FBSUFOQm1BRnFRUWhxSUFZb0FnQTJBZ0FnQXlBREx3REZBVHNBXFxcbnBRRWdBeUFES1FOWU53T1lBU0FESUFjNkFLUUJJQU5CR0dvUTlndEZEUUlNQ0FzZ0EwSFlBR29RcFFzZ0FFRUFPd0VBREFnTElBZ2dCaVxcXG5nQ0FEWUNBQ0FESUFNcEExZzNBN2dCSUFOQnVBRnFFTE1OSVFFZ0FFRUJPZ0FBSUFBZ0FUWUNCQXdGQ3lBRFFiZ0JhaUFCS0FLa0FVRUlcXFxuYWlBRFFRaHFFUFlFSUFNb0FyZ0JEUUlDUUFKQUlBTW9BcndCSWdaRkRRQWdBMEc0QVdwQkNHb3BBd0FoQ1NBRElBWTJBbGdnQXlBSk53XFxcbkpjSUFOQnVBRnFJQU5CbUFGcUlBRW9BcGdCSUFGQm9BRnFLQUlBRUowRklBTkJxQUZxSUFNZ0F5Z0N1QUVnQXlnQ3dBRWdCaUFKUWlDSVxcXG5weENMQXdKQUlBTXRBS2dCUVFSR0RRQWdBeWtEcUFFaUNVTC9BWU5DQkZJTkFnc2dBMEc0QVdvUTR3d2dBMEhZQUdvUTR3d01Cd3NnQUVcXFxuRUFPd0VBREFRTElBTWdDVGNEcUFFZ0EwR29BV29RcFEwaEFTQUFRUUU2QUFBZ0FDQUJOZ0lFSUFOQnVBRnFFT01NSUFOQjJBQnFFT01NXFxcbkRBTUxJQU1vQXJ3QklRRWdBRUVCT2dBQUlBQWdBVFlDQkF3R0N5QUFRUUU2QUFBZ0FDQUZOZ0lFREFRTElBTW9BcndCSVFFZ0FFRUJPZ1xcXG5BQUlBQWdBVFlDQkFzZ0EwR1lBV29RNGd3TElBTkJHR29RbndzTUFRc2dBMEdvQVdwQkNHb2dBMEdZQVdwQkNHb3BBd0EzQXdBZ0F5QURcXFxuS1FPWUFUY0RxQUVnQTBHNEFXb2dBaENVQlNBRFFkZ0Fha0VZYWlBRlFSaHFLUU1BTndNQUlBTkIyQUJxUVJCcUlBVkJFR29wQXdBM0F3XFxcbkFnQTBIWUFHcEJDR29nQlVFSWFpa0RBRGNEQUNBRElBVXBBd0EzQTFnZ0FTQURRYWdCYWlBRFFiZ0JhaUFEUWRnQWFoQS9JQUJCZ0FJN1xcXG5BUUFnQTBISUFHb1E0d3dMSUFRUXpBc0xJQU5CZ0FKcUpBQUxwZ2NCQm44Q1FBSkFBa0FDUUNBQ1FRbEpEUUFnQWlBREVMNEJJZ0lOQVVcXFxuRUFEd3NRaWc0aUFVRUlFSndMSVFSQkZFRUlFSndMSVFWQkVFRUlFSndMSVFaQkFDRUNRUUJCRUVFSUVKd0xRUUowYXlJSElBRWdCaUFFXFxcbklBVnFhbXRCK1A5N2FrRjNjVUY5YWlJQklBY2dBVWtiSUFOTkRRRkJFQ0FEUVFScVFSQkJDQkNjQzBGN2FpQURTeHRCQ0JDY0N5RUVJQVxcXG5BUTBRMGhBU0FCSUFFUWxRMGlCUkRPRFNFR0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQkVOUU1EUUFnQlNBRVR3MEJJQVpCQUNnQ2pLdFBcXFxuUmcwQ0lBWkJBQ2dDaUt0UFJnMERJQVlRcEF3TkJ5QUdFSlVOSWdjZ0JXb2lCU0FFU1EwSElBVWdCR3NoQ0NBSFFZQUNTUTBFSUFZUTlnXFxcbkVNQlFzZ0FSQ1ZEU0VGSUFSQmdBSkpEUVlDUUNBRklBUkJCR3BKRFFBZ0JTQUVhMEdCZ0FoSkRRWUxRZUNuendBZ0FTQUJLQUlBSWdaclxcXG5JQVVnQm1wQkVHb2lCeUFFUVI5cVFlQ256d0FRa1E0UW5Bc2lCVUVCRUl3T0lnUkZEUVlnQkNBR2FpSUJJQVVnQm1zaUEwRndhaUlDTmdcXFxuSUVFSWtPSVFBZ0FTQUNFTTROSUFBMkFnUWdBU0FEUVhScUVNNE5RUUEyQWdSQkFFRUFLQUtRcTA4Z0JTQUhhMm9pQXpZQ2tLdFBRUUJCXFxcbkFDZ0NuS3RQSWdJZ0JDQUVJQUpMR3pZQ25LdFBRUUJCQUNnQ2xLdFBJZ0lnQXlBQ0lBTkxHellDbEt0UERBa0xJQVVnQkdzaUJVRVFRUVxcXG5nUW5BdEpEUVFnQVNBRUVNNE5JUVlnQVNBRUVMc0pJQVlnQlJDN0NTQUdJQVVRZkF3RUMwRUFLQUtFcTA4Z0JXb2lCU0FFVFEwRUlBRWdcXFxuQkJET0RTRUdJQUVnQkJDN0NTQUdJQVVnQkdzaUJFRUJjallDQkVFQUlBUTJBb1NyVDBFQUlBWTJBb3lyVHd3REMwRUFLQUtBcTA4Z0JXXFxcbm9pQlNBRVNRMERBa0FDUUNBRklBUnJJZ1pCRUVFSUVKd0xUdzBBSUFFZ0JSQzdDVUVBSVFaQkFDRUZEQUVMSUFFZ0JCRE9EU0lGSUFZUVxcXG56ZzBoQnlBQklBUVF1d2tnQlNBR0VQMEtJQWNRcFF3TFFRQWdCVFlDaUt0UFFRQWdCallDZ0t0UERBSUxBa0FnQmtFTWFpZ0NBQ0lKSUFcXFxuWkJDR29vQWdBaUJrWU5BQ0FHSUFrMkFnd2dDU0FHTmdJSURBRUxRUUJCQUNnQytLcFBRWDRnQjBFRGRuZHhOZ0w0cWs4TEFrQWdDRUVRXFxcblFRZ1FuQXRKRFFBZ0FTQUVFTTROSVFVZ0FTQUVFTHNKSUFVZ0NCQzdDU0FGSUFnUWZBd0JDeUFCSUFVUXV3a0xJQUVOQXdzZ0F4QXVJZ1xcXG5SRkRRRWdCQ0FBSUFFUWxRMUJlRUY4SUFFUTFBd2JhaUlDSUFNZ0FpQURTUnNRcEEwaEF5QUFFRWtnQXc4TElBSWdBQ0FCSUFNZ0FTQURcXFxuU1JzUXBBMGFJQUFRU1FzZ0FnOExJQUVRMUF3YUlBRVEwQTBMNmdZQ0JYOENmZ0pBQWtBQ1FBSkFBa0FDUUFKQUlBRkJCM0VpQWtVTkFBXFxcbkpBQWtBQ1FDQUFLQUtnQVNJRFFTbFBEUUFDUUNBRERRQkJBQ0VEREFNTElBSkJBblJCdkpYT0FHbzFBZ0FoQnlBRFFYOXFRZi8vLy84RFxcXG5jU0lDUVFGcUlnUkJBM0VoQlFKQUlBSkJBMDhOQUVJQUlRZ2dBQ0VDREFJTElBUkIvUC8vL3dkeElRUkNBQ0VJSUFBaEFnTkFJQUlnQWpcXFxuVUNBQ0FIZmlBSWZDSUlQZ0lBSUFKQkJHb2lCaUFHTlFJQUlBZCtJQWhDSUloOElnZytBZ0FnQWtFSWFpSUdJQVkxQWdBZ0IzNGdDRUlnXFxcbmlId2lDRDRDQUNBQ1FReHFJZ1lnQmpVQ0FDQUhmaUFJUWlDSWZDSUlQZ0lBSUFoQ0lJZ2hDQ0FDUVJCcUlRSWdCRUY4YWlJRURRQU1BZ1xcXG5zTElBTkJLRUdvdU00QUVJTUZBQXNDUUNBRlJRMEFBMEFnQWlBQ05RSUFJQWQrSUFoOElnZytBZ0FnQWtFRWFpRUNJQWhDSUlnaENDQUZcXFxuUVg5cUlnVU5BQXNMSUFpbklnSkZEUUFnQTBFblN3MENJQUFnQTBFQ2RHb2dBallDQUNBRFFRRnFJUU1MSUFBZ0F6WUNvQUVMSUFGQkNIXFxcbkZGRFFRZ0FDZ0NvQUVpQTBFcFR3MEJBa0FnQXcwQVFRQWhBd3dFQ3lBRFFYOXFRZi8vLy84RGNTSUNRUUZxSWdSQkEzRWhCUUpBSUFKQlxcXG5BMDhOQUVJQUlRY2dBQ0VDREFNTElBUkIvUC8vL3dkeElRUkNBQ0VISUFBaEFnTkFJQUlnQWpVQ0FFS0F3dGN2ZmlBSGZDSUhQZ0lBSUFcXFxuSkJCR29pQmlBR05RSUFRb0RDMXk5K0lBZENJSWg4SWdjK0FnQWdBa0VJYWlJR0lBWTFBZ0JDZ01MWEwzNGdCMElnaUh3aUJ6NENBQ0FDXFxcblFReHFJZ1lnQmpVQ0FFS0F3dGN2ZmlBSFFpQ0lmQ0lIUGdJQUlBZENJSWdoQnlBQ1FSQnFJUUlnQkVGOGFpSUVEUUFNQXdzTElBTkJLRVxcXG5Hb3VNNEFFSUVGQUFzZ0EwRW9RYWk0emdBUWd3VUFDd0pBSUFWRkRRQURRQ0FDSUFJMUFnQkNnTUxYTDM0Z0Izd2lCejRDQUNBQ1FRUnFcXFxuSVFJZ0IwSWdpQ0VISUFWQmYyb2lCUTBBQ3dzZ0I2Y2lBa1VOQUNBRFFTZExEUUlnQUNBRFFRSjBhaUFDTmdJQUlBTkJBV29oQXdzZ0FDXFxcbkFETmdLZ0FRc0NRQ0FCUVJCeFJRMEFJQUJCaElIT0FFRUNFRjhhQ3dKQUlBRkJJSEZGRFFBZ0FFR01nYzRBUVFRUVh4b0xBa0FnQVVIQVxcXG5BSEZGRFFBZ0FFR2NnYzRBUVFjUVh4b0xBa0FnQVVHQUFYRkZEUUFnQUVHNGdjNEFRUTRRWHhvTEFrQWdBVUdBQW5GRkRRQWdBRUh3Z2NcXFxuNEFRUnNRWHhvTElBQVBDeUFEUVNoQnFMak9BQkNCQlFBTHpnY0NCWDhHZmlNQVFmQUlheUlFSkFBZ0FiMGhDUUpBQWtBZ0FTQUJZUTBBXFxcblFRSWhCUXdCQ3lBSlF2Ly8vLy8vLy84SGd5SUtRb0NBZ0lDQWdJQUloQ0FKUWdHR1F2Ny8vLy8vLy84UGd5QUpRalNJcDBIL0QzRWlCaFxcXG5zaUMwSUJneUVNUVFNaEJRSkFBa0FDUUVFQlFRSkJCQ0FKUW9DQWdJQ0FnSUQ0L3dDRElnMVFJZ2NiSUExQ2dJQ0FnSUNBZ1BqL0FGRWJcXFxuUVFOQkJDQUhHeUFLVUJ0QmYyb09CQU1BQVFJREMwRUVJUVVNQWdzZ0JrSE5kMm9oQ0NBTVVDRUZRZ0VoRGd3QkMwS0FnSUNBZ0lDQUlDXFxcbkFMUWdHR0lBdENnSUNBZ0lDQWdBaFJJZ1ViSVF0Q0FrSUJJQVViSVE1QnkzZEJ6SGNnQlJzZ0Jtb2hDQ0FNVUNFRkN5QUVJQWc3QWVnSVxcXG5JQVFnRGpjRDRBZ2dCRUlCTndQWUNDQUVJQXMzQTlBSUlBUWdCVG9BNmdnQ1FBSkFBa0FnQlVGK2FrSC9BWEVpQlVFRElBVkJBMGtiSWdcXFxuWkZEUUJCNDVmT0FFSGtsODRBUWZ6L3pRQWdBaHNnQ1VJQVV4c2hCMEVCSVFWQkFTQUpRaitJcHlBQ0d5RUNBa0FDUUFKQUlBWkJmMm9PXFxcbkF3SUJBQUlMUVhSQkJTQUl3U0lGUVFCSUd5QUZiQ0lGUWIvOUFFc05CQ0FFUVpBSWFpQUVRZEFJYWlBRVFSQnFJQVZCQkhaQkZXb2lDRVxcXG5FQUlBTnJRWUNBZmlBRFFZQ0FBa2tiSWdVUVNpQUZ3U0VGQWtBQ1FDQUVLQUtRQ0EwQUlBUkJ3QWhxSUFSQjBBaHFJQVJCRUdvZ0NDQUZcXFxuRUMwTUFRc2dCRUhBQ0dwQkNHb2dCRUdRQ0dwQkNHb29BZ0EyQWdBZ0JDQUVLUU9RQ0RjRHdBZ0xBa0FnQkM0QnlBZ2lDQ0FGVEEwQUlBXFxcblJCQ0dvZ0JDZ0N3QWdnQkNnQ3hBZ2dDQ0FESUFSQmtBaHFRUVFRdlFFZ0JDZ0NEQ0VGSUFRb0FnZ2hDQXdFQzBFQ0lRVWdCRUVDT3dHUVxcXG5DQUpBSUFORkRRQWdCRUdnQ0dvZ0F6WUNBQ0FFUVFBN0Fad0lJQVJCQWpZQ21BZ2dCRUhnbDg0QU5nS1VDQ0FFUVpBSWFpRUlEQVFMUVFcXFxuRWhCU0FFUVFFMkFwZ0lJQVJCNVpmT0FEWUNsQWdnQkVHUUNHb2hDQXdEQzBFQ0lRVWdCRUVDT3dHUUNBSkFJQU5GRFFBZ0JFR2dDR29nXFxcbkF6WUNBQ0FFUVFBN0Fad0lJQVJCQWpZQ21BZ2dCRUhnbDg0QU5nS1VDQ0FFUVpBSWFpRUlEQU1MUVFFaEJTQUVRUUUyQXBnSUlBUkI1WlxcXG5mT0FEWUNsQWdnQkVHUUNHb2hDQXdDQ3lBRVFRTTJBcGdJSUFSQjVwZk9BRFlDbEFnZ0JFRUNPd0dRQ0NBRVFaQUlhaUVJREFFTElBUkJcXFxuQXpZQ21BZ2dCRUhwbDg0QU5nS1VDQ0FFUVFJN0FaQUlRUUVoQlNBRVFaQUlhaUVJUVFBaEFrSDgvODBBSVFjTElBUkJ6QWhxSUFVMkFnXFxcbkFnQkNBSU5nTElDQ0FFSUFJMkFzUUlJQVFnQnpZQ3dBZ2dBQ0FFUWNBSWFoQnhJUVVnQkVId0NHb2tBQ0FGRHd0QjdKZk9BRUVsUVpTWVxcXG56Z0FRZ3djQUMvZ0dBZ1IvQW40akFFSGdBV3NpQWlRQUlBSkI0QUJxSUFFUXRnUUNRQUpBQWtBQ1FDQUNMUUJnRFFBZ0FpMEFZUTBDSUFcXFxuSkJCVFlDTUNBQklBSkJNR29RemdnaEF3d0JDeUFDS0FKa0lRTUxJQUJCQURZQ0FDQUFJQU0yQWdRTUFRc0NRQUpBSUFJdEFHSkIrd0JIXFxcbkRRQWdBU0FCTFFBWVFYOXFJZ002QUJnQ1FDQURRZjhCY1EwQUlBSkJHRFlDTUNBQklBSkJNR29RemdnaEF5QUFRUUEyQWdBZ0FDQUROZ1xcXG5JRURBTUxJQUVnQVNnQ0NFRUJhallDQ0NBQ1FRRTZBRndnQWlBQk5nSllJQUpCQ0dvUTBBZ2dBaWtEQ0NFR0lBSXBBeEFoQnlBQ1FUQnFcXFxuUVFBUWd3Z2dBaUFITndOSUlBSWdCamNEUUNBQ1Fld0FhaUVFQWtBQ1FBSkFBMEFnQWtHb0FXb2dBa0hZQUdvUW9RRWdBaWdDckFFaEF5XFxcbkFDS0FLb0FRMEJBa0FDUUNBRFJRMEFJQUlnQWlrRHNBRWlCamNDdkFFZ0FpQUROZ0s0QVNBQ1FjZ0JhaUFDUWRnQWFoRFdDU0FDS0FMSVxcXG5BVVVOQVNBQ1FmZ0Fha0VJYWlBQ1FjZ0Jha0VJYWlnQ0FEWUNBQ0FDSUFJcEE4Z0JOd040Q3lBRUlBSXBBM2czQWdBZ0JFRUlhaUFDUWZcXFxuZ0Fha0VJYWlJRktBSUFOZ0lBSUFJZ0JqY0NaQ0FDSUFNMkFtQWdBMFVOQXlBQ1FZZ0Jha0VJYWlBQ1FlQUFha0VJYWlnQ0FEWUNBQ0FDXFxcblFaZ0Jha0VJYWlBRktBSUFOZ0lBSUFJZ0Fpa0RZRGNEaUFFZ0FpQUNLUU40TndPWUFTQUNRYWdCYWlBQ1FUQnFJQUpCaUFGcUlBSkJtQVxcXG5GcUVLUUNJQUpCcUFGcUVNd0xEQUVMQ3lBQ0tBTE1BU0VESUFKQnVBRnFFT01NQ3lBQ1FUQnFFSVVMUVFBaEJBd0JDeUFDUWVBQWFoRFNcXFxuQ3lBQ1FTQnFJQUpCTUdwQkVHb3BBd0EzQXdBZ0FrRVlha0VRYWlBQ1FjZ0FhaWtEQURjREFDQUNJQUlwQXpnM0F4Z2dBaWdDTUNFRUlBXFxcbklvQWpRaEF3c2dBU0FCTFFBWVFRRnFPZ0FZSUFKQnlBQnFJQUpCR0dwQkVHb3BBd0EzQXdBZ0FrRXdha0VRYWlBQ1FTQnFLUU1BTndNQVxcXG5JQUlnQWlrREdEY0RPQ0FDSUFFUXhBTWlCVFlDVUNBQ0lBTTJBalFnQWlBRU5nSXdBa0FDUUNBRVJRMEFJQVZGRFFFZ0FrRXdhaENGQ3lcXFxuQUZJUU1NQXdzZ0JVVU5BaUFDUWRBQWFoQ3ZDUXdDQ3lBQUlBSXBBeGczQXdnZ0FFRVlhaUFDUVJocVFSQnFLUU1BTndNQUlBQkJFR29nXFxcbkFrRWdhaWtEQURjREFDQUFJQU0yQWdRZ0FDQUVOZ0lBREFJTElBRWdBa0hZQVdwQmpJVEFBQkJvSVFNTElBTWdBUkNwQmlFRElBQkJBRFxcXG5ZQ0FDQUFJQU0yQWdRTElBSkI0QUZxSkFBTGtBWUNESDhDZmlNQVFhQUJheUlESkFBZ0EwRUFRYUFCRUtFTklRUUNRQUpBQWtBZ0FDZ0NcXFxub0FFaUJTQUNTUTBBQWtBZ0JVRXBUdzBBSUFFZ0FrRUNkR29oQmlBRlJRMENJQVZCQVdvaEJ5QUZRUUowSVFKQkFDRUlRUUFoQ1FOQUlBXFxcblFnQ0VFQ2RHb2hDZ05BSUFnaEN5QUtJUU1nQVNBR1JnMEZJQU5CQkdvaENpQUxRUUZxSVFnZ0FTZ0NBQ0VNSUFGQkJHb2lEU0VCSUF4RlxcXG5EUUFMSUF5dElROUNBQ0VRSUFJaERDQUxJUUVnQUNFS0FrQUNRQU5BSUFGQkowc05BU0FESUJBZ0F6VUNBSHdnQ2pVQ0FDQVBmbndpRURcXFxuNENBQ0FRUWlDSUlSQWdBMEVFYWlFRElBRkJBV29oQVNBS1FRUnFJUW9nREVGOGFpSU1EUUFMSUFVaEF5QVFweUlCUlEwQkFrQWdDeUFGXFxcbmFpSURRU2RMRFFBZ0JDQURRUUowYWlBQk5nSUFJQWNoQXd3Q0N5QURRU2hCcUxqT0FCQ0JCUUFMSUFGQktFR291TTRBRUlFRkFBc2dDU1xcXG5BRElBdHFJZ01nQ1NBRFN4c2hDU0FOSVFFTUFBc0xJQVZCS0VHb3VNNEFFSU1GQUFzQ1FDQUZRU2xQRFFBZ0FrRUNkQ0VISUFKQkFXb2hcXFxuRGlBQUlBVkJBblJxSVExQkFDRUxJQUFoQ2tFQUlRa0RRQ0FFSUF0QkFuUnFJUWdEUUNBTElRd2dDQ0VESUFvZ0RVWU5CQ0FEUVFScUlRXFxcbmdnREVFQmFpRUxJQW9vQWdBaEJpQUtRUVJxSWdVaENpQUdSUTBBQ3lBR3JTRVBRZ0FoRUNBSElRWWdEQ0VLSUFFaENBSkFBa0FEUUNBS1xcXG5RU2RMRFFFZ0F5QVFJQU0xQWdCOElBZzFBZ0FnRDM1OEloQStBZ0FnRUVJZ2lDRVFJQU5CQkdvaEF5QUtRUUZxSVFvZ0NFRUVhaUVJSUFcXFxuWkJmR29pQmcwQUN5QUNJUU1nRUtjaUNrVU5BUUpBSUF3Z0Ftb2lBMEVuU3cwQUlBUWdBMEVDZEdvZ0NqWUNBQ0FPSVFNTUFnc2dBMEVvXFxcblFhaTR6Z0FRZ1FVQUN5QUtRU2hCcUxqT0FCQ0JCUUFMSUFrZ0F5QU1haUlESUFrZ0Ewc2JJUWtnQlNFS0RBQUxDeUFGUVNoQnFMak9BQlxcXG5DREJRQUxRUUFoQ1VFQUlRTURRQ0FCSUFaR0RRRWdBMEVCYWlFRElBRW9BZ0FoQ2lBQlFRUnFJZ2doQVNBS1JRMEFJQWtnQTBGL2FpSUJcXFxuSUFrZ0FVc2JJUWtnQ0NFQkRBQUxDeUFBSUFSQm9BRVFwQTBpQXlBSk5nS2dBU0FFUWFBQmFpUUFJQU1MbUFZQkIzOENRQUpBSUFGRkRRXFxcbkJCSzBHQWdNUUFJQUFvQWh3aUJrRUJjU0lCR3lFSElBRWdCV29oQ0F3QkN5QUZRUUZxSVFnZ0FDZ0NIQ0VHUVMwaEJ3c0NRQUpBSUFaQlxcXG5CSEVOQUVFQUlRSU1BUXNDUUFKQUlBTkJFRWtOQUNBQ0lBTVFWQ0VKREFFTEFrQWdBdzBBUVFBaENRd0JDeUFEUVFOeElRb0NRQUpBSUFcXFxuTkJCRThOQUVFQUlRa2dBaUVCREFFTElBTkJmSEVoQzBFQUlRa2dBaUVCQTBBZ0NTQUJMQUFBUWI5L1Ntb2dBU3dBQVVHL2YwcHFJQUVzXFxcbkFBSkJ2MzlLYWlBQkxBQURRYjkvU21vaENTQUJRUVJxSVFFZ0MwRjhhaUlMRFFBTEN5QUtSUTBBQTBBZ0NTQUJMQUFBUWI5L1Ntb2hDU1xcXG5BQlFRRnFJUUVnQ2tGL2FpSUtEUUFMQ3lBSklBaHFJUWdMQWtBQ1FDQUFLQUlBRFFCQkFTRUJJQUJCRkdvb0FnQWlDU0FBUVJocUtBSUFcXFxuSWdBZ0J5QUNJQU1RM0FjTkFTQUpJQVFnQlNBQUtBSU1FUWtBRHdzQ1FBSkFBa0FDUUFKQUlBQW9BZ1FpQ3lBSVRRMEFJQVpCQ0hFTkJDXFxcbkFMSUFocklna2hDQ0FBTFFBZ0lnRU9CQU1CQWdFREMwRUJJUUVnQUVFVWFpZ0NBQ0lKSUFCQkdHb29BZ0FpQUNBSElBSWdBeERjQncwRVxcXG5JQWtnQkNBRklBQW9BZ3dSQ1FBUEMwRUFJUWdnQ1NFQkRBRUxJQWxCQVhZaEFTQUpRUUZxUVFGMklRZ0xJQUZCQVdvaEFTQUFRUmhxS0FcXFxuSUFJUW9nQUVFVWFpZ0NBQ0VMSUFBb0FoQWhDUUpBQTBBZ0FVRi9haUlCUlEwQklBc2dDU0FLS0FJUUVRWUFSUTBBQzBFQkR3dEJBU0VCXFxcbklBbEJnSURFQUVZTkFTQUxJQW9nQnlBQ0lBTVEzQWNOQVNBTElBUWdCU0FLS0FJTUVRa0FEUUZCQUNFQkFrQURRQUpBSUFnZ0FVY05BQ1xcXG5BSUlRRU1BZ3NnQVVFQmFpRUJJQXNnQ1NBS0tBSVFFUVlBUlEwQUN5QUJRWDlxSVFFTElBRWdDRWtoQVF3QkN5QUFLQUlRSVFZZ0FFRXdcXFxuTmdJUUlBQXRBQ0FoREVFQklRRWdBRUVCT2dBZ0lBQkJGR29vQWdBaUNTQUFRUmhxS0FJQUlnb2dCeUFDSUFNUTNBY05BQ0FMSUFoclFRXFxcbkZxSVFFQ1FBTkFJQUZCZjJvaUFVVU5BU0FKUVRBZ0NpZ0NFQkVHQUVVTkFBdEJBUThMUVFFaEFTQUpJQVFnQlNBS0tBSU1FUWtBRFFBZ1xcXG5BQ0FNT2dBZ0lBQWdCallDRUVFQUR3c2dBUXVBQndFQmZ5TUFRUkJySWdNa0FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUVPS0FcXFxuRUlDQWdJQ0FnSUNBSUVDQWdEQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSENBZ0lDQVlBQ3lBQlFkd0FSZzBFREFjTElBQkJnQVE3XFxcbkFRb2dBRUlBTndFQ0lBQkIzT0FBT3dFQURBY0xJQUJCZ0FRN0FRb2dBRUlBTndFQ0lBQkIzT2dCT3dFQURBWUxJQUJCZ0FRN0FRb2dBRVxcXG5JQU53RUNJQUJCM09RQk93RUFEQVVMSUFCQmdBUTdBUW9nQUVJQU53RUNJQUJCM053Qk93RUFEQVFMSUFCQmdBUTdBUW9nQUVJQU53RUNcXFxuSUFCQjNMZ0JPd0VBREFNTElBSkJnQUp4UlEwQklBQkJnQVE3QVFvZ0FFSUFOd0VDSUFCQjNNNEFPd0VBREFJTElBSkJnSUFFY1VVTkFDXFxcbkFBUVlBRU93RUtJQUJDQURjQkFpQUFRZHpFQURzQkFBd0JDd0pBQWtBQ1FDQUNRUUZ4UlEwQUlBRVF5QUZGRFFBZ0EwRUdha0VDYWtFQVxcXG5PZ0FBSUFOQkFEc0JCaUFEUWYwQU9nQVBJQU1nQVVFUGNVRzR0ODRBYWkwQUFEb0FEaUFESUFGQkJIWkJEM0ZCdUxmT0FHb3RBQUE2QUFcXFxuMGdBeUFCUVFoMlFROXhRYmkzemdCcUxRQUFPZ0FNSUFNZ0FVRU1ka0VQY1VHNHQ4NEFhaTBBQURvQUN5QURJQUZCRUhaQkQzRkJ1TGZPXFxcbkFHb3RBQUE2QUFvZ0F5QUJRUlIyUVE5eFFiaTN6Z0JxTFFBQU9nQUpJQUZCQVhKblFRSjJRWDVxSWdGQkMwOE5BU0FEUVFacUlBRnFJZ1xcXG5KQkFDOEE5TGRPT3dBQUlBSkJBbXBCQUMwQTlyZE9PZ0FBSUFBZ0F5a0JCamNBQUNBQVFRaHFJQU5CQm1wQkNHb3ZBUUE3QUFBZ0FFRUtcXFxuT2dBTElBQWdBVG9BQ2d3REN3SkFJQUVRdFFJTkFDQURRUVpxUVFKcVFRQTZBQUFnQTBFQU93RUdJQU5CL1FBNkFBOGdBeUFCUVE5eFFiXFxcbmkzemdCcUxRQUFPZ0FPSUFNZ0FVRUVka0VQY1VHNHQ4NEFhaTBBQURvQURTQURJQUZCQ0haQkQzRkJ1TGZPQUdvdEFBQTZBQXdnQXlBQlxcXG5RUXgyUVE5eFFiaTN6Z0JxTFFBQU9nQUxJQU1nQVVFUWRrRVBjVUc0dDg0QWFpMEFBRG9BQ2lBRElBRkJGSFpCRDNGQnVMZk9BR290QUFcXFxuQTZBQWtnQVVFQmNtZEJBblpCZm1vaUFVRUxUdzBDSUFOQkJtb2dBV29pQWtFQUx3RDB0MDQ3QUFBZ0FrRUNha0VBTFFEMnQwNDZBQUFnXFxcbkFDQURLUUVHTndBQUlBQkJDR29nQTBFR2FrRUlhaThCQURzQUFDQUFRUW82QUFzZ0FDQUJPZ0FLREFNTElBQWdBVFlDQkNBQVFZQUJPZ1xcXG5BQURBSUxJQUZCQ2tIa3Q4NEFFSUlGQUFzZ0FVRUtRZVMzemdBUWdnVUFDeUFEUVJCcUpBQUwvQVVCQ0g4Q1FBSkFBa0FnQWtVTkFFRUFcXFxuSUFKQmVXb2lBeUFESUFKTEd5RUVJQUZCQTJwQmZIRWdBV3NoQlVFQUlRTURRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBRWdBMm90QUFBaUJzXFxcbkFpQjBGL1NnMEFRUUVoQ0VFQklRa0NRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBWkIwS1RPQUdvdEFBQkJmbW9PQXdBQkFoSUxJQU5CQVdvaVxcXG5CaUFDU1EwR1FRQWhDUXdSQzBFQklRaEJBQ0VKSUFOQkFXb2lDaUFDVHcwUUlBRWdDbW9zQUFBaENpQUdRYUIrYWc0T0FRTURBd01EQXdcXFxuTURBd01EQXdJREMwRUJJUWdDUUNBRFFRRnFJZ2tnQWtrTkFFRUFJUWtNRUFzZ0FTQUphaXdBQUNFS0FrQUNRQUpBSUFaQmtINXFEZ1VCXFxcbkFBQUFBZ0FMUVFFaENDQUhRUTlxUWY4QmNVRUNUUTBJUVFFaENRd1JDeUFLUWZBQWFrSC9BWEZCTUVrTkNnd1BDeUFLUVk5L1NnME9EQVxcXG5rTElBcEJZSEZCb0g5SERRME1BZ3NnQ2tHZ2YwNE5EQXdCQ3dKQUFrQWdCMEVmYWtIL0FYRkJERWtOQUVFQklRZ2dCMEYrY1VGdVJnMEJcXFxuUVFFaENRd09DeUFLUWI5L1NnME1EQUVMUVFFaENTQUtRVUJPRFF3TFFRQWhDU0FEUVFKcUlnWWdBazhOQ3lBQklBWnFMQUFBUWI5L1RBXFxcbjBHUVFFaENVRUNJUWdNQ3dzZ0FTQUdhaXdBQUVHL2Ywb05DUXdGQ3lBRklBTnJRUU54RFFFZ0F5QUVUdzBDQTBBZ0FTQURhaUlHS0FJQVxcXG5RWUNCZ29SNGNRMERJQVpCQkdvb0FnQkJnSUdDaEhoeERRTWdBMEVJYWlJRElBUlBEUU1NQUFzTFFRRWhDU0FLUVVCSURRSU1DQXNnQTBcXFxuRUJhaUVEREFNTElBTWdBazhOQWdOQUlBRWdBMm9zQUFCQkFFZ05BeUFDSUFOQkFXb2lBMGNOQUF3RkN3c0NRQ0FEUVFKcUlnWWdBa2tOXFxcbkFFRUFJUWtNQmdzQ1FDQUJJQVpxTEFBQVFiOS9UQTBBUVFJaENFRUJJUWtNQmd0QkFDRUpJQU5CQTJvaUJpQUNUdzBGSUFFZ0Jtb3NBQVxcXG5CQnYzOU1EUUJCQXlFSVFRRWhDUXdGQ3lBR1FRRnFJUU1MSUFNZ0Fra05BQXNMSUFBZ0FUWUNCQ0FBUVFocUlBSTJBZ0FnQUVFQU5nSUFcXFxuRHd0QkFTRUlRUUVoQ1FzZ0FDQUROZ0lFSUFCQkNXb2dDRG9BQUNBQVFRaHFJQWs2QUFBZ0FFRUJOZ0lBQzlZR0FoQi9CSDRqQUVIUUFXXFxcbnNpQkNRQUFrQUNRQ0FCUlEwQUlBUkJLR29nQVNBQ0VPTUpBa0FDUUNBRUtBSTRJZ1VOQUNBRUlBUW9BaWcyQW93QlFRQW9BdmltVDBFRFxcXG5UUTBCSUFSQnBBRnFRUUUyQWdBZ0JFR2NBV3BCQVRZQ0FDQUVRUTAyQXF3QklBUkJBVFlDbEFFZ0JFR2dxY0FBTmdLUUFTQUVJQVJCakFcXFxuRnFOZ0tvQVNBRVFRTTZBTXdCSUFSQkJEWUN5QUVnQkVJZ053UEFBU0FFUW9LQWdJQWdOd080QVNBRVFRSTJBckFCSUFRZ0JFR3dBV28yXFxcbkFxQUJJQVFnQkVHb0FXbzJBcGdCSUFSQmtBRnFRUVJCeUtuQUFFRUFJQVFRa1FNTUFRc2dCQ2dDaEFFaEJpQUVLQUtBQVNFSElBUW9BblxcXG53aENDQUVLQUo0SVFJZ0JDZ0NkQ0VKSUFRb0FuQWhDaUFFS0FKc0lRc2dCQ2dDYUNFTUlBUXBBMkFoRkNBRUtRTllJUlVnQkNnQ1ZDRU5cXFxuSUFRb0FsQWhEaUFFS0FKTUlROGdCQ2dDU0NFQklBUW9Ba1FoRUNBRUtBSkFJUkVnQkNnQ1BDRVNJQVFwQXpBaEZpQUVLUU1vSVJjTUFnXFxcbnNnQkVHTUFXb1Fyd2tMSUFSQkdHb1EwQWdnQkNrRElDRVdJQVFwQXhnaEZ5QUVRUWhxRU5BSVFRUWhBVUdBZzhBQUlReEJDQ0VDUVFBaFxcXG5CeUFFS1FNUUlSUWdCQ2tEQ0NFVlFRQWhDRUVBSVFsQkFDRUtRUUFoQzBFQUlRNUJBQ0VQUVFBaEVFRUFJUkZCQUNFU1FZQ0R3QUFoQlFcXFxudEJBQ0VUQWtBZ0EwVU5BQ0FFSUFFMkFwZ0JJQVJCa0FGcVFReHFJQUVnRGtIWUFHeHFOZ0lBSUFRZ0FqWUNrQUVnQkNBQ0lBZEJCM1JxXFxcbk5nS1VBU0FFUVNocUlBUkJrQUZxRUlBRUlBUkJ1QUZxSUFSQktHcEJER29wQWdBM0F3QWdCRUhBQVdvZ0JFRThhaWtDQURjREFDQUVRY1xcXG5nQmFpQUVRY1FBYWlnQ0FEWUNBQ0FFSUFRcEFpdzNBN0FCSUFRb0FpZ2hFd3NnQUNBVE5nSmdJQUFnQmpZQ1hDQUFJQWMyQWxnZ0FDQUlcXFxuTmdKVUlBQWdBallDVUNBQUlBazJBa3dnQUNBS05nSklJQUFnQ3pZQ1JDQUFJQXcyQWtBZ0FDQVVOd000SUFBZ0ZUY0RNQ0FBSUEwMkFpXFxcbndnQUNBT05nSW9JQUFnRHpZQ0pDQUFJQUUyQWlBZ0FDQVFOZ0ljSUFBZ0VUWUNHQ0FBSUJJMkFoUWdBQ0FGTmdJUUlBQWdGamNEQ0NBQVxcXG5JQmMzQXdBZ0FFSGtBR29nQkNrRHNBRTNBZ0FnQUVIOEFHb2dCRUhJQVdvb0FnQTJBZ0FnQUVIMEFHb2dCRUhBQVdvcEF3QTNBZ0FnQUVcXFxuSHNBR29nQkVHNEFXb3BBd0EzQWdBZ0JFSFFBV29rQUF1bUJRRUlmd0pBQWtBQ1FBSkFBa0FnQUNBQmF5QUNUdzBBSUFFZ0Ftb2hBeUFBXFxcbklBSnFJUVFnQWtFUFN3MEJJQUFoQlF3Q0N3SkFJQUpCRDBzTkFDQUFJUVFNQXdzZ0FFRUFJQUJyUVFOeElnTnFJUVVDUUNBRFJRMEFJQVxcXG5BaEJDQUJJUVlEUUNBRUlBWXRBQUE2QUFBZ0JrRUJhaUVHSUFSQkFXb2lCQ0FGU1EwQUN3c2dCU0FDSUFOcklnZEJmSEVpQ0dvaEJBSkFcXFxuQWtBZ0FTQURhaUlKUVFOeElnWkZEUUFnQ0VFQlNBMEJJQWxCZkhFaUNrRUVhaUVCUVFBZ0JrRURkQ0lDYTBFWWNTRURJQW9vQWdBaEJnXFxcbk5BSUFVZ0JpQUNkaUFCS0FJQUlnWWdBM1J5TmdJQUlBRkJCR29oQVNBRlFRUnFJZ1VnQkVrTkFBd0NDd3NnQ0VFQlNBMEFJQWtoQVFOQVxcXG5JQVVnQVNnQ0FEWUNBQ0FCUVFScUlRRWdCVUVFYWlJRklBUkpEUUFMQ3lBSFFRTnhJUUlnQ1NBSWFpRUJEQUlMSUFSQmZIRWhCa0VBSUFcXFxuUkJBM0VpQ0dzaEJ3SkFJQWhGRFFBZ0FTQUNha0YvYWlFRkEwQWdCRUYvYWlJRUlBVXRBQUE2QUFBZ0JVRi9haUVGSUFZZ0JFa05BQXNMXFxcbklBWWdBaUFJYXlJSlFYeHhJZ1ZySVFSQkFDQUZheUVJQWtBQ1FDQURJQWRxSWdkQkEzRWlCVVVOQUNBSVFYOUtEUUVnQjBGOGNTSUtRWFxcXG54cUlRRkJBQ0FGUVFOMElnSnJRUmh4SVFNZ0NpZ0NBQ0VGQTBBZ0JrRjhhaUlHSUFVZ0EzUWdBU2dDQUNJRklBSjJjallDQUNBQlFYeHFcXFxuSVFFZ0JDQUdTUTBBREFJTEN5QUlRWDlLRFFBZ0NTQUJha0Y4YWlFQkEwQWdCa0Y4YWlJR0lBRW9BZ0EyQWdBZ0FVRjhhaUVCSUFRZ0JrXFxcbmtOQUFzTElBbEJBM0VpQVVVTkFpQUhJQWhxSVFNZ0JDQUJheUVGQ3lBRFFYOXFJUUVEUUNBRVFYOXFJZ1FnQVMwQUFEb0FBQ0FCUVg5cVxcXG5JUUVnQlNBRVNRMEFEQUlMQ3lBQ1JRMEFJQVFnQW1vaEJRTkFJQVFnQVMwQUFEb0FBQ0FCUVFGcUlRRWdCRUVCYWlJRUlBVkpEUUFMQ3lcXFxuQUFDL3dGQVFWL0l3QkI4QUJySWdNa0FDQURRU2hxSUFFZ0FoQ3VEQ0FESUFNcEF5ZzNBekFnQTBIUUFHb2dBMEV3YWhDRUFRSkFBa0FnXFxcbkF5Z0NVRVVOQUNBRFFlQUFha0VJYWlBRFFkQUFha0VJYWlrREFEY0RBQ0FESUFNcEExQTNBMkFnQTBFZ2FpQURRZUFBYWhDZERTQURLQVxcXG5Ja0lRRWdBeWdDSUNFRUlBTkJHR29nQTBIZ0FHb1FuZzBDUUNBREtBSWNEUUFnQUNBRU5nSUVJQUJCQURZQ0FDQUFRUWhxSUFFMkFnQU1cXFxuQWdzQ1FBSkFBa0FDUUNBQ0RRQkJBU0VGREFFTElBSkJmMHdOQWtFQUxRRHhwazhhSUFKQkFSRDNDeUlGUlEwQkMwRUFJUVlnQTBFQU5nXFxcbkpBSUFNZ0JUWUNPQ0FESUFJMkFqd0NRQ0FCSUFKTkRRQWdBMEU0YWtFQUlBRVE3Z0lnQXlnQ09DRUZJQU1vQWtBaEJnc2dCU0FHYWlBRVxcXG5JQUVRcEEwYUlBTWdCaUFCYWlJQ05nSkFBa0FnQXlnQ1BDQUNhMEVDU3cwQUlBTkJPR29nQWtFREVPNENJQU1vQWtBaEFnc2dBeWdDT0NcXFxuSUZJQUpxSWdGQkFDOEFqUDFOSWdZN0FBQWdBVUVDYWtFQUxRQ08vVTBpQnpvQUFDQURJQUpCQTJvaUFqWUNRQ0FESUFNcEF6QTNBMGdnXFxcbkEwSFFBR29nQTBISUFHb1FoQUVDUUNBREtBSlFSUTBBQTBBZ0EwSGdBR3BCQ0dvZ0EwSFFBR3BCQ0dvcEF3QTNBd0FnQXlBREtRTlFOd1xcXG5OZ0lBTkJFR29nQTBIZ0FHb1FuUTBnQXlnQ0VDRUVBa0FnQXlnQ1BDQUNheUFES0FJVUlnRlBEUUFnQTBFNGFpQUNJQUVRN2dJZ0F5Z0NcXFxuT0NFRklBTW9Ba0FoQWdzZ0JTQUNhaUFFSUFFUXBBMGFJQU1nQWlBQmFpSUNOZ0pBSUFOQkNHb2dBMEhnQUdvUW5nMENRQ0FES0FJTVJRXFxcbjBBQWtBZ0F5Z0NQQ0FDYTBFQ1N3MEFJQU5CT0dvZ0FrRURFTzRDSUFNb0FrQWhBZ3NnQXlnQ09DSUZJQUpxSWdFZ0Jqc0FBQ0FCUVFKcVxcXG5JQWM2QUFBZ0F5QUNRUU5xSWdJMkFrQUxJQU5CMEFCcUlBTkJ5QUJxRUlRQklBTW9BbEFOQUFzTElBQWdBeWtET0RjQ0FDQUFRUWhxSUFcXFxuTkJPR3BCQ0dvb0FnQTJBZ0FNQXd0QkFTQUNFSm9OQUFzUWx3Z0FDeUFBUWVUNnpRQTJBZ1FnQUVFQU5nSUFJQUJCQ0dwQkFEWUNBQXNnXFxcbkEwSHdBR29rQUF1V0JnRURmeU1BUVNCcklnTWtBQ0FEUVJCcUlBQVF0d1VDUUFKQUlBTXRBQkFOQUFKQUFrQUNRQUpBQWtBQ1FBSkFBa1xcXG5BQ1FBSkFBa0FnQXkwQUVTSUVRWkovYWc0SUJ3RUJBUWdCQ1FvQUN3SkFJQVJCbm45cURnVUZBUUVCQmdBTElBUkJJa1lOQVNBRVFTOUdcXFxuRFFNZ0JFSGNBRVlOQWdzZ0EwRU1OZ0lRSUFBZ0EwRVFhaERnQ0NFQURBb0xJQUpCSWhDSENFRUFJUUFNQ1FzZ0FrSGNBQkNIQ0VFQUlRXFxcbkFNQ0FzZ0FrRXZFSWNJUVFBaEFBd0hDeUFDUVFnUWh3aEJBQ0VBREFZTElBSkJEQkNIQ0VFQUlRQU1CUXNnQWtFS0VJY0lRUUFoQUF3RVxcXG5DeUFDUVEwUWh3aEJBQ0VBREFNTElBSkJDUkNIQ0VFQUlRQU1BZ3NnQTBFSWFpQUFFTUFDQWtBQ1FDQURMd0VJRFFBQ1FBSkFJQU12QVFcXFxub2lCRUdBK0FOeElnVkJnTEFEUmcwQUFrQWdCVUdBdUFOSERRQWdBVVVOQkNBRFFSUTJBaEFnQUNBRFFSQnFFT0FJSVFBTUJnc2dCRUdBXFxcbnNMOS9jMEgvajd4L1N3MEJRWUN3d0FCQkswSE0xOEFBRUlNSEFBc2dBMEVRYWlBQUVMa0dJQU10QUJBTkF3SkFBa0FDUUNBRExRQVJRZFxcXG53QVJ3MEFJQUFnQUNnQ0NDSUZRUUZxTmdJSUlBTkJFR29nQUJDNUJpQURMUUFRRFFZZ0F5MEFFVUgxQUVjTkFTQUFJQVZCQW1vMkFnZ2dcXFxuQTBFUWFpQUFFTUFDSUFNdkFSQU5CaUFETHdFU0lnRkJnTUFBYWtILy93TnhRWUQ0QTBrTkFnSkFJQVJCZ05BQWFrSC8vd054UVFwMElBXFxcbkZCZ01nQWFrSC8vd054Y2tHQWdBUnFJZ1JCZ0xBRGMwR0FnTHgvYWtHQWtMeC9TUTBBSUFSQmdJREVBRWNOQkFzZ0EwRVBOZ0lRSUFBZ1xcXG5BMEVRYWhEZ0NDRUFEQWNMSUFGRkRRUWdBQ0FBS0FJSVFRRnFOZ0lJSUFOQkZ6WUNFQ0FBSUFOQkVHb1E0QWdoQUF3R0N3SkFJQUVOQUNcXFxuQUNJQVFROUFVZ0FFRUFJQUlRWmlFQURBWUxJQUFnQlVFQ2FqWUNDQ0FEUVJjMkFoQWdBQ0FEUVJCcUVPQUlJUUFNQlFzZ0EwRVVOZ0lRXFxcbklBQWdBMEVRYWhEZ0NDRUFEQVFMUVFBaEFDQURRUUEyQWhBZ0F5QUVJQU5CRUdvUXpBSWdBaUFES0FJQUlBTW9BZ1FRZ1F3TUF3c2dBeVxcXG5nQ0RDRUFEQUlMSUFJZ0JCRDBCVUVBSVFBTUFRc2dBeWdDRkNFQUN5QURRU0JxSkFBZ0FBditCUUVFZnlNQVFaQUJheUlFSkFBZ0JDQURcXFxuTmdJVUlBUWdBallDRUNBRVFkZ0FhaUFCUWFta3dBQkJBUkIzQWtBQ1FBSkFBa0FDUUFKQUlBUW9BbGhGRFFBZ0JFRVlha0VJYWlBRVFkXFxcbmdBYWtFSWFpZ0NBRFlDQUNBRUlBUXBBMWczQXhnZ0JFRVlha0dzcE1BQUVONEtJZ01vQWdBZ0F5Z0NDRUdNb3NBQVFRVVFwZ3BGRFFFZ1xcXG5CRUhZQUdvZ0JFRVlha0VBUWJ5a3dBQVFvQVVnQkVIWUFHb1E0d3dnQkNnQ0lDRUNJQVFvQWhnaEF3d0NDeUFFUWRnQWFpQUJFSWdGSUFcXFxuQkJBam9BRENBQVFRaHFJQVJCMkFCcVFRaHFLQUlBTmdJQUlBQWdCQ2tEV0RjQ0FBd0VDeUFFUVNocUlBUkJHR3BCQUVITXBNQUFFS0FGXFxcbklBUkJHR3BCN0tUQUFCRGVDaUVESUFSQk9HcEJER3BCQkRZQ0FDQUVRZGdBYWtFTWFrSUNOd0lBSUFRZ0F6WUNRQ0FFUVFRMkFqd2dCRVxcXG5FQ05nSmNJQVJCM0tUQUFEWUNXQ0FFSUFSQktHbzJBamdnQkNBRVFUaHFOZ0pnSUFSQnlBQnFJQVJCMkFCcUVJOEVJQVFvQWlBaUFrVU5cXFxuQVNBRUtBSVlJZ01RNHd3Z0EwRUlhaUFFUWNnQWFrRUlhaWdDQURZQ0FDQURJQVFwQTBnM0FnQWdCRUVvYWhEakRBc2dCRUhZQUdvZ0FSXFxcbkRkQXlBRUlBTTJBb2dCSUFRZ0F6WUNnQUVnQkNBRElBSkJER3hxTmdLTUFTQUVJQVFvQWh3MkFvUUJJQVJCeUFCcUlBUkIyQUJxRU1JQ1xcXG5JQVJCQ0dvZ0FSRE9CQ0FFS0FKUUlRTUNRQUpBSUFRb0FnZ2lCUTBBSUFRb0FrZ2hBZ3dCQ3lBRFJRMENJQVFvQWd3aEJpQURRUXhzSUFcXFxuUW9Ba2dpQW1wQmRHb2lCMEUvRU5nRUlBY2dCU0FHRUlnTUN5QUVRUUE2QUZjZ0JDQUROZ0lvSUFRb0Frd2hCU0FFSUFFMkFuQWdCRUVBXFxcbk5nSm9JQVFnQWpZQ1lDQUVJQVUyQWx3Z0JDQUNOZ0pZSUFRZ0FpQURRUXhzYWpZQ1pDQUVJQVJCMXdCcU5nSjRJQVFnQkVFUWFqWUNkQ1xcXG5BRUlBUkJLR28yQW13Z0JFRTRhaUFFUWRnQWFoRHJCU0FBSUFRcEF6ZzNBZ0FnQUVFSWFpQUVRVGhxUVFocUtBSUFOZ0lBSUFBZ0JDMEFcXFxuVnpvQURBd0NDMEVBUVFCQi9LVEFBQkNCQlFBTFFjQ0d3QUJCSzBHTXBjQUFFSU1IQUFzZ0JFR1FBV29rQUF2QUJRSUVmd0YrSXdCQndBXFxcbkJySWdNa0FFRUFJUVFDUUNBQUtBSUlJZ1VnQUNnQ0JFOE5BQ0FBS0FJQUlBVnFMUUFBSVFRTElBTkJBRG9BTUNBRElBUTZBREVDUUFKQVxcXG5Ba0FDUUFKQUFrQUNRQUpBQWtBQ1FDQURRVEJxRU1RS0lnWkIvd0Z4SWdSQklrWU5BQ0FFUVMxR0RRRWdCRUhtQUVZTkF5QUVRZTRBUmdcXFxuMEZJQVJCOUFCR0RRUUNRQ0FFUWRzQVJnMEFJQVJCK3dCR0RRZ0NRQ0FHUVZCcVFmOEJjVUVLU1EwQUlBTkJDallDTUNBQUlBTkJNR29RXFxcbnpnZ2hCQXdLQ3lBRFFUQnFJQUJCQVJDYUFTQURLUU13UWdOUkRRTWdBMEVRYWtFSWFpQURRVEJxUVFocUtRTUFOd01BSUFNZ0F5a0RNRFxcXG5jREVDQURRUkJxSUFFZ0FoQ1hCU0VFREFrTElBTkJDam9BTUNBRFFUQnFJQUVnQWhDWUF5RUVEQWdMSUFCQkZHcEJBRFlDQUNBQUlBVkJcXFxuQVdvMkFnZ2dBMEVnYWlBQUlBQkJER29RalFFZ0F5Z0NJRUVDUmcwRklBTXBBaVFoQnlBRFFRVTZBREFnQXlBSE53STBJQU5CTUdvZ0FTXFxcbkFDRUpnRElRUU1Cd3NnQUNBRlFRRnFOZ0lJSUFOQk1Hb2dBRUVBRUpvQklBTXBBekJDQTFFTkFDQURRUWhxSUFOQk1HcEJDR29wQXdBM1xcXG5Bd0FnQXlBREtRTXdOd01BSUFNZ0FTQUNFSmNGSVFRTUJnc2dBeWdDT0NFRURBWUxJQUFnQlVFQmFqWUNDQ0FESUFCQmdJREFBRUVFRU1cXFxuTURJZ1EyQWpBZ0JBMEZJQU5CTUdvUTBBc2dBMEVBT3dFd0lBTkJNR29nQVNBQ0VKZ0RJUVFNQkFzZ0FDQUZRUUZxTmdJSUlBTWdBRUdFXFxcbmdNQUFRUU1Rd3dNaUJEWUNNQ0FFRFFRZ0EwRXdhaERRQ3lBRFFZQUNPd0V3SUFOQk1Hb2dBU0FDRUpnRElRUU1Bd3NnQUNBRlFRRnFOZ1xcXG5JSUlBTWdBRUdIZ01BQVFRTVF3d01pQkRZQ01DQUVEUU1nQTBFd2FoRFFDeUFEUVFjNkFEQWdBMEV3YWlBQklBSVFtQU1oQkF3Q0N5QURcXFxuS0FJa0lRUU1BZ3NnQTBFTE9nQXdJQU5CTUdvZ0FTQUNFSmdESVFRTElBUWdBQkNwQmlFRUN5QURRY0FBYWlRQUlBUUw2UVVDQlg4R2ZpXFxcbk1BUVlBQmF5SUVKQUFnQWIwaENRSkFBa0FnQVNBQllRMEFRUUloQlF3QkN5QUpRdi8vLy8vLy8vOEhneUlLUW9DQWdJQ0FnSUFJaENBSlxcXG5RZ0dHUXY3Ly8vLy8vLzhQZ3lBSlFqU0lwMEgvRDNFaUJoc2lDMElCZ3lFTVFRTWhCUUpBQWtBQ1FFRUJRUUpCQkNBSlFvQ0FnSUNBZ0lcXFxuRDQvd0NESWcxUUlnY2JJQTFDZ0lDQWdJQ0FnUGovQUZFYlFRTkJCQ0FIR3lBS1VCdEJmMm9PQkFNQUFRSURDMEVFSVFVTUFnc2dCa0hOXFxcbmQyb2hDQ0FNVUNFRlFnRWhEZ3dCQzBLQWdJQ0FnSUNBSUNBTFFnR0dJQXRDZ0lDQWdJQ0FnQWhSSWdVYklRdENBa0lCSUFVYklRNUJ5M1xcXG5kQnpIY2dCUnNnQm1vaENDQU1VQ0VGQ3lBRUlBZzdBWGdnQkNBT053TndJQVJDQVRjRGFDQUVJQXMzQTJBZ0JDQUZPZ0I2QWtBQ1FDQUZcXFxuUVg1cVFmOEJjU0lGUVFNZ0JVRURTUnNpQjBVTkFFSGpsODRBUWVTWHpnQkIvUC9OQUNBQ0d5QUpRZ0JUR3lFSVFRRWhCVUVCSUFsQ1A0XFxcbmluSUFJYklRSUNRQUpBQWtBZ0IwRi9hZzREQWdFQUFnc2dCRUVnYWlBRVFlQUFhaUFFUVE5cVFSRVFNZ0pBQWtBZ0JDZ0NJQTBBSUFSQlxcXG4wQUJxSUFSQjRBQnFJQVJCRDJwQkVSQXNEQUVMSUFSQjBBQnFRUWhxSUFSQklHcEJDR29vQWdBMkFnQWdCQ0FFS1FNZ053TlFDeUFFSUFcXFxuUW9BbEFnQkNnQ1ZDQUVMd0ZZSUFNZ0JFRWdha0VFRUwwQklBUW9BZ1FoQlNBRUtBSUFJUWNNQXd0QkFpRUZJQVJCQWpzQklBSkFJQU5GXFxcbkRRQWdCRUV3YWtFQk5nSUFJQVJCQURzQkxDQUVRUUkyQWlnZ0JFSGdsODRBTmdJa0lBUkJJR29oQnd3REMwRUJJUVVnQkVFQk5nSW9JQVxcXG5SQjVaZk9BRFlDSkNBRVFTQnFJUWNNQWdzZ0JFRUROZ0lvSUFSQjVwZk9BRFlDSkNBRVFRSTdBU0FnQkVFZ2FpRUhEQUVMSUFSQkF6WUNcXFxuS0NBRVFlbVh6Z0EyQWlRZ0JFRUNPd0VnUVFFaEJTQUVRU0JxSVFkQkFDRUNRZnovelFBaENBc2dCRUhjQUdvZ0JUWUNBQ0FFSUFjMkFsXFxcbmdnQkNBQ05nSlVJQVFnQ0RZQ1VDQUFJQVJCMEFCcUVIRWhCU0FFUVlBQmFpUUFJQVVMclFVQkNIOGpBRUVRYXlJREpBQUNRQUpBSUFJb1xcXG5BZ1FpQkVVTkFFRUJJUVVnQUNBQ0tBSUFJQVFnQVNnQ0RCRUpBQTBCQ3dKQUlBSkJER29vQWdBaUJRMEFRUUFoQlF3QkN5QUNLQUlJSWdcXFxuWWdCVUVNYkdvaEJ5QURRUWhxUVFScUlRZ0RRQUpBQWtBQ1FBSkFJQVl2QVFBT0F3QUNBUUFMQWtBQ1FDQUdLQUlFSWdKQndRQkpEUUFnXFxcbkFVRU1haWdDQUNFRkEwQUNRQ0FBUWZDZ3pnQkJ3QUFnQlJFSkFFVU5BRUVCSVFVTUNBc2dBa0ZBYWlJQ1FjQUFTdzBBREFJTEN5QUNSUVxcXG4wREN3SkFBa0FnQWtFL1N3MEFJQUpCOEtET0FHb3NBQUJCdjM5TURRRUxJQUJCOEtET0FDQUNJQUZCREdvb0FnQVJDUUJGRFFOQkFTRUZcXFxuREFVTFFmQ2d6Z0JCd0FCQkFDQUNRYkNoemdBUTVBc0FDeUFBSUFZb0FnUWdCa0VJYWlnQ0FDQUJRUXhxS0FJQUVRa0FSUTBCUVFFaEJRXFxcbndEQ3lBR0x3RUNJUUlnQ0VFQU9nQUFJQU5CQURZQ0NBSkFBa0FDUUFKQUFrQUNRQ0FHTHdFQURnTUNBUUFDQ3lBR1FRaHFJUVVNQWdzQ1xcXG5RQ0FHTHdFQ0lnVkI2QWRKRFFCQkJFRUZJQVZCa000QVNSc2hDUXdEQzBFQklRa2dCVUVLU1EwQ1FRSkJBeUFGUWVRQVNSc2hDUXdDQ3lcXFxuQUdRUVJxSVFVTEFrQWdCU2dDQUNJSlFRWlBEUUFnQ1EwQlFRQWhDUXdDQ3lBSlFRVkI0S0RPQUJDREJRQUxJQU5CQ0dvZ0NXb2hCQUpBXFxcbkFrQWdDVUVCY1EwQUlBSWhCUXdCQ3lBRVFYOXFJZ1FnQWlBQ1FmLy9BM0ZCQ200aUJVRUtiR3RCTUhJNkFBQUxJQWxCQVVZTkFDQUVRWFxcXG41cUlRSURRQ0FDSUFWQi8vOERjU0lFUVFwdUlncEJDbkJCTUhJNkFBQWdBa0VCYWlBRklBcEJDbXhyUVRCeU9nQUFJQVJCNUFCdUlRVWdcXFxuQWlBRFFRaHFSaUVFSUFKQmZtb2hBaUFFUlEwQUN3c2dBQ0FEUVFocUlBa2dBVUVNYWlnQ0FCRUpBRVVOQUVFQklRVU1BZ3NnQmtFTWFpXFxcbklHSUFkSERRQUxRUUFoQlFzZ0EwRVFhaVFBSUFVTCtRUUNCSDhDZmlNQVFUQnJJZ1FrQUNBRUlBTTJBZ3dDUUFKQUFrQUNRQUpBQWtBZ1xcXG5BMEYrYWtFaVN3MEFBa0FnQWcwQUlBQkJBRG9BQVF3REN3SkFBa0FnQVMwQUFFRlZhZzREQVFNQUF3c2dBa0VCUmcwRkRBSUxJQUpCZjJcXFxub2lBa1VOQkNBQlFRRnFJUUVNQVFzZ0JFRWNha0lCTndJQUlBUkJBVFlDRkNBRVFlQ1l6Z0EyQWhBZ0JFRUlOZ0lzSUFRZ0JFRW9hallDXFxcbkdDQUVJQVJCREdvMkFpZ2dCRUVRYWtHRW1jNEFFSmdJQUFzQ1FDQURRUkJMRFFBZ0FrRUpUdzBBQWtBZ0EwRUtTdzBBUVFBaEJRTkFJQVxcXG5FdEFBQkJVR29pQmlBRFR3MEZJQUZCQVdvaEFTQUdJQVVnQTJ4cUlRVWdBa0YvYWlJQ0RRQU1CQXNMUVFBaEJRTkFBa0FnQVMwQUFDSUhcXFxuUVZCcUlnWkJDa2tOQUVGL0lBZEJJSElpQmtHcGYyb2lCeUFISUFaQm4zOXFTUnNpQmlBRFR3MEZDeUFCUVFGcUlRRWdCaUFGSUFOc2FpXFxcbkVGSUFKQmYyb2lBZzBBREFNTEN3SkFBa0FDUUNBRFFRcExEUUFnQTYwaENFRUFJUVVEUUNBQ1JRMEZJQUV0QUFCQlVHb2lCaUFEVHcwR1xcXG5JQVd0SUFoK0lnbENJSWluUVFCSERRTWdCaUFISUFZZ0Ewa2JJUVVnQVVFQmFpRUJJQUpCZjJvaEFpQUdJUWNnQlNBSnB5SUdhaUlGSUFcXFxuWlBEUUFNQWdzTElBT3RJUWhCQUNFRkEwQWdBa1VOQkFKQUlBRXRBQUFpQjBGUWFpSUdRUXBKRFFCQmZ5QUhRU0J5SWdaQnFYOXFJZ2NnXFxcbkJ5QUdRWjkvYWtrYklnWWdBMDhOQmdzZ0JhMGdDSDRpQ1VJZ2lLZEJBRWNOQWlBQlFRRnFJUUVnQWtGL2FpRUNJQW1uSWdjZ0Jtb2lCU1xcXG5BSFR3MEFDd3NnQUVFQ09nQUJEQUVMSUFCQkFqb0FBUXRCQVNFQkRBSUxJQUFnQlRZQ0JFRUFJUUVNQVF0QkFTRUJJQUJCQVRvQUFRc2dcXFxuQUNBQk9nQUFJQVJCTUdva0FBdmhCQUVWZnlNQVFjQUNheUlESkFBZ0FTQUNRUVowYWlFRUlBQW9BaHdoQlNBQUtBSVlJUVlnQUNnQ0ZDXFxcbkVISUFBb0FoQWhDQ0FBS0FJTUlRa2dBQ2dDQ0NFS0lBQW9BZ1FoQ3lBQUtBSUFJUXdDUUFOQUlBRWdCRVlOQVVFQUlRSWdBMEVBUWNBQ1xcXG5FS0VOSVEwRFFBSkFJQUpCd0FCSERRQkJBQ0VPQTBBQ1FDQU9RY0FCUncwQVFRQWhEeUFNSVJBZ0N5RU9JQW9oRVNBSklSSWdDQ0VUSUFcXFxuY2hBaUFHSVJRZ0JTRVZBMEFnRkNFV0lBSWhGQ0FUSVFJZ0VTRVhJQTRoRVNBUUlRNENRQ0FQUVlBQ1J3MEFJQlVnQldvaEJTQVdJQVpxXFxcbklRWWdGQ0FIYWlFSElBSWdDR29oQ0NBU0lBbHFJUWtnRnlBS2FpRUtJQkVnQzJvaEN5QU9JQXhxSVF3Z0FVSEFBR29oQVF3R0N5QVhJQlxcXG5GeUlBNXhJQmNnRVhGeUlBNUJFM2NnRGtFZWQzTWdEa0VLZDNOcUlCWWdBa0YvYzNFZ0ZDQUNjWElnRldvZ0FrRVZkeUFDUVJwM2N5QUNcXFxuUVFkM2Myb2dEMEdVOThBQWFpZ0NBR29nRFNBUGFpZ0NBR29pRTJvaEVDQVRJQkpxSVJNZ0QwRUVhaUVQSUJjaEVpQVdJUlVNQUFzTElBXFxcbjBnRG1vaUFrSEFBR29nQWtFRWFpZ0NBQ0lQUVE1M0lBOUJHWGR6SUE5QkEzWnpJQUpCSkdvb0FnQnFJQUlvQWdCcUlBSkJPR29vQWdBaVxcXG5Ba0VOZHlBQ1FROTNjeUFDUVFwMmMybzJBZ0FnRGtFRWFpRU9EQUFMQ3lBTklBSnFJQUVnQW1vb0FBQWlEa0VZZENBT1FZRCtBM0ZCQ0hcXFxuUnlJQTVCQ0haQmdQNERjU0FPUVJoMmNuSTJBZ0FnQWtFRWFpRUNEQUFMQ3dzZ0FDQUZOZ0ljSUFBZ0JqWUNHQ0FBSUFjMkFoUWdBQ0FJXFxcbk5nSVFJQUFnQ1RZQ0RDQUFJQW8yQWdnZ0FDQUxOZ0lFSUFBZ0REWUNBQ0FEUWNBQ2FpUUFDNlFGQVFwL0l3QkJNR3NpQXlRQUlBTkJJR1xcXG5vZ0FUWUNBQ0FEUVFNNkFDZ2dBMEVnTmdJWVFRQWhCQ0FEUVFBMkFpUWdBeUFBTmdJY0lBTkJBRFlDRUNBRFFRQTJBZ2dDUUFKQUFrQUNcXFxuUUNBQ0tBSVFJZ1VOQUNBQ1FReHFLQUlBSWdCRkRRRWdBaWdDQ0NFQklBQkJBM1FoQmlBQVFYOXFRZi8vLy84QmNVRUJhaUVFSUFJb0FnXFxcbkFoQUFOQUFrQWdBRUVFYWlnQ0FDSUhSUTBBSUFNb0Fod2dBQ2dDQUNBSElBTW9BaUFvQWd3UkNRQU5CQXNnQVNnQ0FDQURRUWhxSUFGQlxcXG5CR29vQWdBUkJnQU5BeUFCUVFocUlRRWdBRUVJYWlFQUlBWkJlR29pQmcwQURBSUxDeUFDUVJScUtBSUFJZ0ZGRFFBZ0FVRUZkQ0VJSUFcXFxuRkJmMnBCLy8vL1AzRkJBV29oQkNBQ0tBSUFJUUJCQUNFR0EwQUNRQ0FBUVFScUtBSUFJZ0ZGRFFBZ0F5Z0NIQ0FBS0FJQUlBRWdBeWdDXFxcbklDZ0NEQkVKQUEwREN5QURJQVVnQm1vaUFVRVFhaWdDQURZQ0dDQURJQUZCSEdvdEFBQTZBQ2dnQXlBQlFSaHFLQUlBTmdJa0lBRkJER1xcXG5vb0FnQWhDU0FDS0FJSUlRcEJBQ0VMUVFBaEJ3SkFBa0FDUUNBQlFRaHFLQUlBRGdNQkFBSUJDeUFKUVFOMElReEJBQ0VISUFvZ0RHb2lcXFxuRENnQ0JFR3JBa2NOQVNBTUtBSUFLQUlBSVFrTFFRRWhCd3NnQXlBSk5nSU1JQU1nQnpZQ0NDQUJRUVJxS0FJQUlRY0NRQUpBQWtBZ0FTXFxcbmdDQUE0REFRQUNBUXNnQjBFRGRDRUpJQW9nQ1dvaUNTZ0NCRUdyQWtjTkFTQUpLQUlBS0FJQUlRY0xRUUVoQ3dzZ0F5QUhOZ0lVSUFNZ1xcXG5DellDRUNBS0lBRkJGR29vQWdCQkEzUnFJZ0VvQWdBZ0EwRUlhaUFCS0FJRUVRWUFEUUlnQUVFSWFpRUFJQWdnQmtFZ2FpSUdSdzBBQ3dcXFxuc0NRQ0FFSUFJb0FnUlBEUUFnQXlnQ0hDQUNLQUlBSUFSQkEzUnFJZ0VvQWdBZ0FTZ0NCQ0FES0FJZ0tBSU1FUWtBRFFFTFFRQWhBUXdCXFxcbkMwRUJJUUVMSUFOQk1Hb2tBQ0FCQzVZRkFRWi9Jd0JCTUdzaUJDUUFJQVJCQURZQ0ZDQURRWUNVNjl3RFJ5RUZJQUZCQVhNaEJpQUFLQVxcXG5JQUlRRUNRQUpBQWtBQ1FBSkFBMEFDUUFKQUFrQWdBVUVJY1VVTkFDQUJRUkJKSUFaeURRRUxJQUZCRUdvaUJ5QUJTUTBESUFBZ0J5QUFcXFxuS0FJQUlnZ2dDQ0FCUmlJQkd6WUNBQ0FCUlEwQlFRRWhCd3dIQ3dKQUlBRkJBM0VOQUNBRVFSUnFFS2NKRFFFTEFrQWdBVUVCY1EwQUlBXFxcbkFnQVVFQmNpQUFLQUlBSWdjZ0J5QUJSaHMyQWdBZ0J5QUJSeUVJSUFjaEFTQUlEUUlMSUFSQkFEWUNHQUpBUVFBUXZ3MGlBUTBBSUFSQlxcXG5HR29RMEFVaEFRc2dBQkRoQlNFSEFrQUNRQUpBQWtBZ0FDZ0NBRUVKY1VFSlJ3MEFJQUZCQURZQ0JDQUJJQVU2QUJBZ0FVRVFOZ0lNSUFcXFxuRWdBRFlDQUNBQkVMb01JQWNvQWdRTkFTQUhRUVJxSVFnTUFnc2dCeERFQ1NBRVFSaHFFSkVMREFJTElBY29BZ2hCQkdvaENBc2dDQ0FCXFxcbk5nSUFJQWNnQVRZQ0NDQUhFTVFKQWtBQ1FDQUZEUUFnQVJDOURBd0JDeUFCSUFJZ0F4QytEQTBBSUFSQkNHb2dBUkR2QkNBRUtBSU1JUVxcXG5nZ0JDZ0NDQ0VKQWtBZ0FSQzhERVVOQUNBSVFRUnFJUVpCQUNFRFFRRWhCUU5BSUFZb0FnQWlCMFVOQ1FKQUlBY2dBVVlOQUNBSFFRUnFcXFxuSVFZZ0J5Z0NBQ0FKUnlBRmNTRUZJQWNoQXd3QkN3c2dCaUFCS0FJRUlnYzJBZ0FDUUNBSUtBSUlJQUZIRFFBZ0NDQUROZ0lJSUFWQkFYXFxcbkVOQ0F3SkN3TkFJQWRGRFFjZ0J5Z0NBQ0FKUmcwSklBY29BZ1FoQnd3QUN3c2dDQkRFQ1FzZ0FTZ0NDQ0VCUVFFaEJ5QUVRUmhxRUpFTFxcXG5JQUZCQVVZTkJ3c2dCRUVBTmdJVUN5QUFLQUlBSVFFTUFBc0xRYXpld0FCQkhFR2szOEFBRUlvR0FBc2dCVUVCY1VVTkFRc2dBQ0FBS0FcXFxuSUFRWDV4TmdJQUN5QUlFTVFKSUFSQkdHb1FrUXRCQUNFSEN5QUVRVEJxSkFBZ0J3dWxCUUVPZnlNQVFZQUJheUlESkFBZ0EwRUFOZ0k0XFxcbklBTkJBVHNCTkNBRElBSTJBakFnQTBFQU5nSXNJQU5DZ1lDQWdLQUJOd0lrSUFNZ0FqWUNJQ0FESUFJMkFoZ2dBeUFCTmdJVUlBTkJDalxcXG5ZQ0VDQUFMUUFNSVFRZ0FDZ0NCQ0VGSUFBb0FnQWhCaUFBS0FJSUlRY2dBMEVvYWlFSVFRQWhDVUVBSVFwQkFDRUxRUUFoREFKQUEwQWdcXFxuQ2lFTklBa2hEaUFNSWc5Qi93RnhEUUVDUUFKQUFrQURRQ0FDSUF0SkloQU5Ba0VBSUFFZ0Myb2dFQnNoQ2dKQUFrQWdDU0FDSUF0cklCXFxcbkFiSWdsQkIwc05BRUVBSVF4QkFDRVFBMEFDUUNBSklCQkhEUUFnQ1NFUURBTUxBa0FnQ2lBUWFpMEFBRUVLUncwQVFRRWhEQXdEQ3lBUVxcXG5RUUZxSVJBTUFBc0xJQU5CQ0dwQkNpQUtJQWtRL1FFZ0F5Z0NEQ0VRSUFNb0FnZ2hEQXNnREVFQlJ3MEJJQU1nQ3lBUWFpSVFRUUZxSWdcXFxuczJBaHdnRUNBQ1R3MEFJQUVnRUdwQkFTQUlRUUVRckFwRkRRQUxJQU1nQ3pZQ0xFRUFJUXdnQ3lFS0RBSUxJQU1nQWpZQ0hDQUNJUXNMXFxcblFRRWhEQ0FEUVFFNkFEVWdEU0VLSUFJaEVBc2dBeUFPUVFGcUlnazJBamdDUUFKQUFrQWdCRUgvQVhGRkRRQWdEa1VOQWlBSFFRb1FuZ1xcXG5zTkJDQUdEUUVnQjBITTM4MEFRUVFRL3dwRkRRSU1CQXNnQUVFQk9nQU1Ba0FnQmcwQVFRRWhCQ0FIUWN6ZnpRQkJCQkQvQ2tVTkFnd0VcXFxuQ3lBRElBVTJBandnQTBFSU5nSmNRUUVoQkNBRFFRRTJBbFFnQTBFQ05nSkVJQU5Cdk4vTkFEWUNRQ0FEUVFFMkFrd2dBeUFEUVR4cU5nXFxcbkpZSUFOQkFUb0FmQ0FEUVFBMkFuZ2dBMElnTndOd0lBTkNnSUNBZ05BQU53Tm9JQU5CQWpZQ1lDQURJQU5CNEFCcU5nSlFJQU1nQTBIWVxcXG5BR28yQWtnZ0J5QURRY0FBYWhDdEJRMEREQUVMSUFkQjBOL05BRUVIRVA4S0RRSUxJQWNnQVNBTmFpQVFJQTFyRVA4S1JRMEFDd3NnQTBcXFxuR0FBV29rQUNBUFFmOEJjVVVMNVFRQkJuOGpBRUV3YXlJQ0pBQWdBaUFBTHdBT0lnTkJDSFFnQTBFSWRuSTdBUTRnQWlBQUx3QU1JZ05CXFxcbkNIUWdBMEVJZG5JN0FRd2dBaUFBTHdBS0lnTkJDSFFnQTBFSWRuSTdBUW9nQWlBQUx3QUlJZ05CQ0hRZ0EwRUlkbkk3QVFnZ0FpQUFMd1xcXG5BR0lnTkJDSFFnQTBFSWRuSTdBUVlnQWlBQUx3QUVJZ05CQ0hRZ0EwRUlkbkk3QVFRZ0FpQUFMd0FDSWdOQkNIUWdBMEVJZG5JN0FRSWdcXFxuQWlBQUx3QUFJZ0JCQ0hRZ0FFRUlkbkk3QVFCQmZ5RUVRUUFoQUVGL0lRVURRQ0FDSUFCQkFYUnFJUU5CZnlFR0FrQURRQ0FBUVFoR0RRXFxcbkVDUUFKQUFrQWdBeThCQUEwQUlBQWdCaUFHUVFCSUd5RUhEQUVMUVg4aEJ5QUdRWDlLRFFFTElBQkJBV29oQUNBRFFRSnFJUU1nQnlFR1xcXG5EQUVMQ3lBQUlBWnJJZ01nQkNBRElBUktJZ01iSVFRZ0JpQUZJQU1iSVFVZ0FFRUJhaUVBREFFTEMwRi9JQVlnQlVFSUlBWnJJZ0FnQkVcXFxub2lBeHNnQlNBR1FYOUtJZ1liSWdjZ0FDQUVJQU1iSUFRZ0Joc2lBRUVDU0NJR0d5RURRWDRnQnlBQWFpQUdHeUVHUVFBaEFBSkFBa0FEXFxcblFDQUFRUWhPRFFFQ1FBSkFJQUFnQTBjTkFDQUJRWjZId1FCQkFSRC9DZzBCQWtBZ0F3MEFJQUZCbm9mQkFFRUJFUDhLRFFJTElBWWhBQ1xcXG5BR1FRaE9EUU1MQWtBQ1FDQUFRUWhQRFFBZ0FrSFhBVFlDTENBQ1FhQ0h3UUEyQWhBZ0FrSUJOd0ljSUFKQkFUWUNGQ0FDSUFJZ0FFRUJcXFxuZEdvMkFpZ2dBaUFDUVNocU5nSVlJQUVnQWtFUWFoQ3RCVVVOQVF3Q0N5QUFRUWhCcUlmQkFCQ0JCUUFMQWtBZ0FFRUhUdzBBSUFGQm5vXFxcbmZCQUVFQkVQOEtEUUVMSUFCQkFXb2hBQXdCQ3d0QkFTRUFEQUVMUVFBaEFBc2dBa0V3YWlRQUlBQUxoUVVCQ244akFFRVFheUlDSkFBQ1xcXG5RQUpBQWtBQ1FBSkFJQUFvQWdCRkRRQWdBQ2dDQkNFRElBSkJER29nQVVFTWFpZ0NBQ0lFTmdJQUlBSWdBU2dDQ0NJRk5nSUlJQUlnQVNcXFxuZ0NCQ0lHTmdJRUlBSWdBU2dDQUNJQk5nSUFJQUF0QUNBaEJ5QUFLQUlRSVFnZ0FDMEFIRUVJY1EwQklBZ2hDU0FISVFvZ0JpRUJEQUlMXFxcbklBQkJGR29vQWdBZ0FFRVlhaWdDQUNBQkVHb2hCUXdEQ3lBQUtBSVVJQUVnQmlBQVFSaHFLQUlBS0FJTUVRa0FEUUZCQVNFS0lBQkJBVFxcXG5vQUlFRXdJUWtnQUVFd05nSVFRUUFoQVNBQ1FRQTJBZ1FnQWtIOC84MEFOZ0lBUVFBZ0F5QUdheUlHSUFZZ0Ewc2JJUU1MQWtBZ0JFVU5cXFxuQUNBRVFReHNJUVFEUUFKQUFrQUNRQUpBSUFVdkFRQU9Bd0FDQVFBTElBVkJCR29vQWdBaEJnd0NDeUFGUVFocUtBSUFJUVlNQVFzQ1FDXFxcbkFGUVFKcUx3RUFJZ3RCNkFkSkRRQkJCRUVGSUF0QmtNNEFTUnNoQmd3QkMwRUJJUVlnQzBFS1NRMEFRUUpCQXlBTFFlUUFTUnNoQmdzZ1xcXG5CVUVNYWlFRklBWWdBV29oQVNBRVFYUnFJZ1FOQUFzTEFrQUNRQUpBSUFNZ0FVME5BQ0FESUFGcklnRWhCQUpBQWtBQ1FDQUtRZjhCY1NcXFxuSUZEZ1FDQUFFQUFndEJBQ0VFSUFFaEJRd0JDeUFCUVFGMklRVWdBVUVCYWtFQmRpRUVDeUFGUVFGcUlRVWdBRUVZYWlnQ0FDRUJJQUJCXFxcbkZHb29BZ0FoQmdOQUlBVkJmMm9pQlVVTkFpQUdJQWtnQVNnQ0VCRUdBRVVOQUF3RUN3c2dBRUVVYWlnQ0FDQUFRUmhxS0FJQUlBSVFhaVxcXG5FRkRBRUxJQVlnQVNBQ0VHb05BVUVBSVFVRFFBSkFJQVFnQlVjTkFDQUVJQVJKSVFVTUFnc2dCVUVCYWlFRklBWWdDU0FCS0FJUUVRWUFcXFxuUlEwQUN5QUZRWDlxSUFSSklRVUxJQUFnQnpvQUlDQUFJQWcyQWhBTUFRdEJBU0VGQ3lBQ1FSQnFKQUFnQlF2WEJBRUZmeUFEUVFBZ0F5XFxcbkFDUVFOcVFYeHhJQUpySWdSclFRZHhJQU1nQkVrYklnVnJJUVlDUUFKQUFrQUNRQ0FESUFWSkRRQUNRQ0FGUlEwQUlBSWdBMm9pQlNBQ1xcXG5JQVpxSWdkcklRZ0NRQUpBSUFWQmYyb2lCUzBBQUNBQlFmOEJjVWNOQUNBSVFYOXFJUVFNQVFzZ0J5QUZSZzBCQWtBZ0JVRi9haUlGTFFcXFxuQUFJQUZCL3dGeFJ3MEFJQWhCZm1vaEJBd0JDeUFISUFWR0RRRUNRQ0FGUVg5cUlnVXRBQUFnQVVIL0FYRkhEUUFnQ0VGOWFpRUVEQUVMXFxcbklBY2dCVVlOQVFKQUlBVkJmMm9pQlMwQUFDQUJRZjhCY1VjTkFDQUlRWHhxSVFRTUFRc2dCeUFGUmcwQkFrQWdCVUYvYWlJRkxRQUFJQVxcXG5GQi93RnhSdzBBSUFoQmUyb2hCQXdCQ3lBSElBVkdEUUVDUUNBRlFYOXFJZ1V0QUFBZ0FVSC9BWEZIRFFBZ0NFRjZhaUVFREFFTElBY2dcXFxuQlVZTkFRSkFJQVZCZjJvaUJTMEFBQ0FCUWY4QmNVY05BQ0FJUVhscUlRUU1BUXNnQnlBRlJnMEJJQWhCZUdvaEJBc2dCQ0FHYWlFRURBXFxcbk1MSUFRZ0F5QURJQVJMR3lFSElBRkIvd0Z4UVlHQ2hBaHNJUVVEUUNBR0lnUWdCMDBOQWlBQ0lBUnFJZ2hCZUdvb0FnQWdCWE1pQmtGL1xcXG5jeUFHUWYvOSszZHFjVUdBZ1lLRWVIRU5BaUFFUVhocUlRWWdDRUY4YWlnQ0FDQUZjeUlJUVg5eklBaEIvLzM3ZDJweFFZQ0Jnb1I0Y1VcXFxuVU5BQXdDQ3dzZ0JpQURRWXlpemdBUWdnVUFDd0pBSUFRZ0Ewc05BQ0FDUVg5cUlRVWdBVUgvQVhFaENBTkFBa0FnQkEwQVFRQWhCZ3dFXFxcbkN5QUZJQVJxSVFZZ0JFRi9haUVFSUFZdEFBQWdDRVlOQWd3QUN3c2dCQ0FEUVp5aXpnQVFnd1VBQzBFQklRWUxJQUFnQkRZQ0JDQUFJQVxcXG5ZMkFnQUxoUVVCQ1g4akFFRWdheUlDSkFBQ1FBSkFBa0FDUUNBQktBSW9SUTBBQWtBZ0FVRXdhaWdDQUNJRElBRkJOR29vQWdCR0RRQWdcXFxuQVNBRFFReHFOZ0l3SUFNb0FnQWlCQTBDQ3lBQlFTaHFJZ01RelFzZ0EwRUFOZ0lBQ3lBQktBSUFRWUNBeEFCR0lnTU5BUUpBUVFBZ0FTXFxcbkFER3lJRUxRQWxEUUFnQkVFWWFpRUZJQVFvQWdRaUJpRUhBMEFDUUFKQUFrQUNRQ0FFS0FJUUlnRWdCQ2dDRENJSVNTQUJJQVFvQWdoTFxcXG5jaUlKRFFCQkFDQUhJQWhxSUFrYklRY2dCQ2dDRkNBRmFrRi9haTBBQUNFS0FrQUNRQ0FESUFFZ0NHc2dDUnNpQTBFSFN3MEFRUUFoQ0VcXFxuRUFJUUVEUUFKQUlBTWdBVWNOQUNBRElRRU1Bd3NDUUNBSElBRnFMUUFBSUFwQi93RnhSdzBBUVFFaENBd0RDeUFCUVFGcUlRRU1BQXNMXFxcbklBSkJHR29nQ2lBSElBTVEvUUVnQWlnQ0hDRUJJQUlvQWhnaENBc0NRQ0FJUVFGSERRQWdCQ0FCSUFRb0FneHFRUUZxSWdFMkFnd2dBU1xcXG5BRUtBSVVJZ2RKRFFRZ0FTQUVLQUlJVFEwQ0RBUUxJQVFnQkNnQ0VEWUNEQXNnQkMwQUpRMEVJQVJCQVRvQUpTQUVLQUljSVFNZ0JDZ0NcXFxuSUNFQkFrQWdCQzBBSkEwQUlBRWdBMFlOQlFzZ0FTQURheUVCSUFRb0FnUWdBMm9oQXd3QkN5QUVLQUlFSVFvZ0FrRVFha0VBSUFjZ0JVXFxcbkVFUWJTYXdBQVFoUWNnQ2lBQklBZHJJZ0ZxSUFjZ0FpZ0NFQ0FDS0FJVUVLWUtSUTBCSUFRb0Fod2hBeUFFSUFRb0FndzJBaHdnQVNBRFxcXG5heUVCSUFZZ0Eyb2hBd3NnQWtFSWFpQUJRUUFRMVFRZ0FpZ0NEQ0VFSUFJb0FnZ2dBeUFCRUtRTklRTWdBQ0FCTmdJSUlBQWdCRFlDQkNcXFxuQUFJQU0yQWdBTUJRc2dCQ2dDQkNFSERBQUxDeUFBUVFBMkFnQU1BZ3NnQUNBRU5nSUFJQUFnQXlrQ0JEY0NCQXdCQ3lBQVFRQTJBZ0FMXFxcbklBSkJJR29rQUF2dkJBSU1md0YrSXdCQklHc2lCQ1FBSUFBb0FnUWhCVUVCSVFZZ0JFRUJPZ0FjSUFSQkJ6WUNHQ0FFSUFWQkFXb2lCelxcXG5ZQ0ZDQUVRUUEyQWhBZ0FDZ0NBQ0VJQTBBQ1FBSkFJQVpCL3dGeERRQWdCRUVJYWlBRVFSQnFJQVFvQWhnUWlnY2dCQ2dDRENFRklBUW9cXFxuQWdnaEJnd0JDMEVBSVFZZ0JFRUFPZ0FjSUFRb0FoQWlCU0FFS0FJVVR3MEFRUUVoQmlBRUlBVkJBV28yQWhBTEFrQWdCZzBBQWtBQ1FDXFxcbkFIUVFoSkRRQWdDQ0FIYWlBSUtRQUFOd0FBREFFTElBaEJDR29nQ0NBSEVLTU5HZ3NnQUNnQ0JFRUJhaUVKUVFBaENnTkFBa0FDUUNBS1xcXG5JZ2dnQ1VZTkFDQUlRUUZxSVFvZ0FDZ0NBQ0lHSUFocUxRQUFRWUFCUncwQ0lBWWdDRUYvY3lBRGJHb2hDeUFDS0FJVUlRd0RRQ0FCSUFcXFxuQWdDQ0FNRVFvQUlSQWdDQ0FBS0FJRUlnVWdFS2NpQjNFaURXc2dBQ0FRRUxrRUlnWWdEV3R6SUFWeFFRaEpEUUlnQUNnQ0FDSU5JQVpxXFxcbklnNHRBQUFoRHlBT0lBZEJHWFlpQnpvQUFDQUdRWGhxSUFWeElBQW9BZ0JxUVFocUlBYzZBQUFnRFNBR1FYOXpJQU5zYWlFR0FrQWdEMFxcXG5IL0FVWU5BQ0FMSUFZZ0F4Q25Cd3dCQ3dzZ0FDZ0NCQ0VGSUFBb0FnQWdDR3BCL3dFNkFBQWdCU0FJUVhocWNTQUFLQUlBYWtFSWFrSC9cXFxuQVRvQUFDQUdJQXNnQXhDa0RSb01BZ3NnQUNBQUtBSUVJZ1lnQmtFQmFrRURka0VIYkNBR1FRaEpHeUFBS0FJTWF6WUNDQ0FFUVNCcUpBXFxcbkFQQ3lBQUtBSUFJQWhxSUFkQkdYWWlCam9BQUNBRklBaEJlR3B4SUFBb0FnQnFRUWhxSUFZNkFBQU1BQXNMSUFnZ0JXb2lCaUFHS1FNQVxcXG5JaEJDZjRWQ0I0aENnWUtFaUpDZ3dJQUJneUFRUXYvKy9mdjM3OSsvL3dDRWZEY0RBQ0FFTFFBY0lRWU1BQXNMK1FRQkIzOGpBRUV3YXlcXFxuSURKQUFnQTBFQU5nSVVJQUpCZ0pUcjNBTkhJUVFnQUNnQ0FDRUZBa0FDUUFKQUFrQUNRQU5BQWtBZ0JVRU1jUTBBSUFBZ0JVRUljaUFBXFxcbktBSUFJZ1lnQmlBRlJpSUZHellDQUNBRkRRSWdCaUVGREFFTEFrQUNRQ0FGUVFOeERRQWdBMEVVYWhDbkNRMEJDd0pBSUFWQkFYRU5BQ1xcXG5BQUlBVkJBWElnQUNnQ0FDSUdJQVlnQlVZYk5nSUFJQVlnQlVjaEJ5QUdJUVVnQncwQ0N5QURRUUEyQWhnQ1FFRUFFTDhOSWdVTkFDQURcXFxuUVJocUVOQUZJUVVMSUFBUTRRVWhCZ0pBQWtBQ1FBSkFJQUFvQWdBaUIwRUJjVVVOQUNBSFFReHhSUTBBSUFWQkFEWUNCQ0FGSUFRNkFCXFxcbkFnQlVFSU5nSU1JQVVnQURZQ0FDQUZFTG9NSUFZb0FnUU5BU0FHUVFScUlRY01BZ3NnQmhERUNTQURRUmhxRUpFTERBSUxJQVlvQWdoQlxcXG5CR29oQndzZ0J5QUZOZ0lBSUFZZ0JUWUNDQ0FHRU1RSkFrQUNRQ0FFRFFBZ0JSQzlEQXdCQ3lBRklBRWdBaEMrREEwQUlBTkJDR29nQlJcXFxuRHZCQ0FES0FJTUlRY2dBeWdDQ0NFSUFrQWdCUkM4REVVTkFDQUhRUVJxSVFSQkFDRUpRUUVoQWdOQUlBUW9BZ0FpQmtVTkNRSkFJQVlnXFxcbkJVWU5BQ0FHUVFScUlRUWdCaWdDQUNBSVJ5QUNjU0VDSUFZaENRd0JDd3NnQkNBRktBSUVJZ1kyQWdBQ1FDQUhLQUlJSUFWSERRQWdCeVxcXG5BSk5nSUlJQUpCQVhFTkNBd0pDd05BSUFaRkRRY2dCaWdDQUNBSVJnMEpJQVlvQWdRaEJnd0FDd3NnQnhERUNRc2dCU2dDQ0NFRklBTkJcXFxuR0dvUWtRc2dCVUVCUmcwREN5QURRUUEyQWhRTElBQW9BZ0FoQlF3QUN3c2dBQ0FCSUFKQkFCQlFJUVVNQXdzZ0FrRUJjVVVOQVFzZ0FDXFxcbkFBS0FJQVFYNXhOZ0lBQ3lBSEVNUUpJQU5CR0dvUWtRdEJBQ0VGQ3lBRFFUQnFKQUFnQlF1SUJRSUtmd0YrSXdCQjBBQnJJZ01rQUFKQVxcXG5Ba0FnQVVFVlNRMEFJQU5CTUdvZ0FVRUJkaERuQ0NBRElBTW9BalEyQWp3Z0F5QURLQUl3SWdRMkFqZ2dBMEhBQUdvUStRbEJBQ0VGQTBcXFxuQUNRQ0FGSUFGSkRRQWdBMEhBQUdvUXl3d2dBMEU0YWhEQUN3d0RDeUFEUVNocUlBQWdCVUVEZEdvZ0FTQUZheUFERUs0RElBTW9BaWdnXFxcbkJXb2hCZ0pBSUFNdEFDeEJBWEZGRFFBZ0EwRWdhaUFGSUFZZ0FDQUJRY2lad1FBUTd3WWdBMEVZYWtFQUlBTW9BaVFpQjBFQmRpSUlJQVxcXG5Nb0FpQWlDU0FJUWFpWXdRQVE3d1lnQXlnQ0hDRUtJQU1vQWhnaEN5QURRUkJxUVFBZ0NDQUpJQWRCQTNScUlBaEJBM1FpQjJzZ0NFRzRcXFxubU1FQUVPOEdJQWhCZjJvaENDQURLQUlRSUFkcVFYaHFJUWNnQXlnQ0ZDRU1JQW9oQ1FKQUEwQWdDRUYvUmcwQ0lBbEZEUUVDUUNBSUlBXFxcbnhQRFFBZ0N5a0NBQ0VOSUFzZ0J5a0NBRGNDQUNBSElBMDNBZ0FnQ1VGL2FpRUpJQWRCZUdvaEJ5QUlRWDlxSVFnZ0MwRUlhaUVMREFFTFxcXG5DeUFJSUF4QjJKakJBQkNCQlFBTElBb2dDa0hJbU1FQUVJRUZBQXNnQTBIQUFHb2dBQ0FCSUFVZ0JpQUNFSklFSWdZZ0JXc2dCUkRIQkFcXFxuTkFJQU5CQ0dvZ0F5Z0NRQ0FES0FKSUlBRVEyZ0lnQXlnQ0RDRUlBa0FnQXlnQ0NFRUJSZzBBSUFZaEJRd0NDeUFEUWNBQWFpQUlRZGlaXFxcbndRQVE1UVVpQnlnQ0FDRUxJQU1nQnlnQ0JDSUhJQU5Cd0FCcUlBaEJBV29pQ1VIb21jRUFFT1VGSWd3b0FnUWdEQ2dDQUNJTWFpQUFJQVxcXG5GQitKbkJBQkR2QmlBREtBSUFJQU1vQWdRZ0N5QUVJQU1RaVFJZ0EwSEFBR29nQ1VHSW1zRUFFT1VGSWdrZ0J6WUNCQ0FKSUF3Z0MybzJcXFxuQWdBZ0EwSEFBR29nQ0JEQkJBd0FDd3NMSUFGQkFra05BQ0FBSUFGQkFTQURFTWdGQ3lBRFFkQUFhaVFBQzdFRkFRTi9Jd0JCa0FGcklnXFxcblFrQUNBRUlBTTJBaXdnQkNBQ05nSW9JQVJCSUdwQkFrRUFFUDhESUFSQkFEWUNPQ0FFSUFRcEF5QTNBekFnQkVFWWFpQUJFTThGSUFRb1xcXG5BaGdoQWlBRVFSQnFJQVFvQWh3aUEwRUFFTlVFSUFRb0FoUWhCU0FFS0FJUUlBSWdBeENrRFNFR0lBUWdBellDZ0FFZ0JDQUZOZ0o4SUFcXFxuUWdCallDZUNBRVFUQnFJQVJCK0FCcUVLSUdBa0FDUUFKQUFrQUNRQUpBSUFJZ0EwR0lvc0FBUVFRUXBnb05BQ0FDSUFOQmpLTEFBRUVGXFxcbkVLWUtSUTBCQ3lBRVFRaHFJQUVRcHdZZ0JDZ0NDQ0lDUlEwQklBUW9BZ3doQXlBRUlBSTJBa0FnQkNBRE5nSkVBa0FDUUNBQkx3RVFEUVxcXG5BZ0JDQURRUUFRMVFRZ0JDZ0NCQ0VCSUFRb0FnQWlCU0FDSUFNUXBBMGFEQUVMSUFRZ0FVRVNhaThCQURzQlRpQUVRZUFBYWtFTWFrSURcXFxuTndJQUlBUkJqQUZxUVFzMkFnQWdCRUg0QUdwQkRHcEJBVFlDQUNBRVFRTTJBbVFnQkVHNG9zQUFOZ0pnSUFSQkFUWUNmQ0FFSUFSQitBXFxcbkJxTmdKb0lBUWdCRUhPQUdvMkFvZ0JJQVFnQkVFb2FqWUNnQUVnQkNBRVFjQUFhallDZUNBRVFkQUFhaUFFUWVBQWFoQ1BCQ0FFS0FKUVxcXG5JUVVnQkNnQ1ZDRUJJQVFvQWxnaEF3c2dCQ0FETmdLQUFTQUVJQUUyQW53Z0JDQUZOZ0o0SUFSQk1Hb2dCRUg0QUdvUW9nWU1Bd3NnQWlcXFxuQURRZENpd0FCQkJCQ21DZzBDSUFJZ0EwSFVvc0FBUVFRUXBnb05BaUFFSUFNMkFsUWdCQ0FDTmdKUVFRQW9BdmltVDBFRFRRMEJJQVJCXFxcbmhBRnFRZ0UzQWdBZ0JFRUJOZ0o4SUFSQmlLUEFBRFlDZUNBRVFRRTJBbVFnQkNBRVFlQUFhallDZ0FFZ0JDQUVRZEFBYWpZQ1lDQUVRZlxcXG5nQWFrRUVRYWlqd0FCQkFDQUVFSkVEREFFTFFjQ0d3QUJCSzBHb29zQUFFSU1IQUFzZ0FFRUFOZ0lBSUFSQk1Hb1E0Z3dNQVFzZ0FDQUVcXFxuS1FNd053SUFJQUJCQ0dvZ0JFRXdha0VJYWlnQ0FEWUNBQXNnQkVHUUFXb2tBQXVBQlFJRGZ3RitJd0JCd0FCcklnTWtBQ0FEUVRCcUlBXFxcbkFRM2dnQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQURRVEJxRU1RS0lnUkIvd0Z4SWdWQklrWU5BQ0FGUVMxR0RRRWdCVUhtQUVZTlxcXG5BeUFGUWU0QVJnMEZJQVZCOUFCR0RRUUNRQ0FGUWRzQVJnMEFJQVZCK3dCR0RRZ0NRQ0FFUVZCcVFmOEJjVUVLU1EwQUlBTkJDallDTUNcXFxuQUFJQU5CTUdvUTNRZ2hCUXdLQ3lBRFFUQnFJQUJCQVJEK0RDQURLUU13UWdOUkRRTWdBMEVRYWtFSWFpQURRVEJxUVFocUtRTUFOd01BXFxcbklBTWdBeWtETURjREVDQURRUkJxSUFFZ0FoQ1hCU0VGREFrTElBTkJDam9BTUNBRFFUQnFJQUVnQWhDWUF5RUZEQWdMSUFBUWd3d2dBRVxcXG5FVWFrRUFOZ0lBSUFOQklHb2dBQ0FBUVF4cUVNWUJJQU1vQWlCQkFrWU5CU0FES1FJa0lRWWdBMEVGT2dBd0lBTWdCamNDTkNBRFFUQnFcXFxuSUFFZ0FoQ1lBeUVGREFjTElBQVFnd3dnQTBFd2FpQUFRUUFRL2d3Z0F5a0RNRUlEVVEwQUlBTkJDR29nQTBFd2FrRUlhaWtEQURjREFDXFxcbkFESUFNcEF6QTNBd0FnQXlBQklBSVFsd1VoQlF3R0N5QURLQUk0SVFVTUJnc2dBQkNERENBRElBQkJnSURBQUVFRUVQd0RJZ1UyQWpBZ1xcXG5CUTBGSUFOQk1Hb1EwQXNnQTBFQU93RXdJQU5CTUdvZ0FTQUNFSmdESVFVTUJBc2dBQkNERENBRElBQkJoSURBQUVFREVQd0RJZ1UyQWpcXFxuQWdCUTBFSUFOQk1Hb1EwQXNnQTBHQUFqc0JNQ0FEUVRCcUlBRWdBaENZQXlFRkRBTUxJQUFRZ3d3Z0F5QUFRWWVBd0FCQkF4RDhBeUlGXFxcbk5nSXdJQVVOQXlBRFFUQnFFTkFMSUFOQkJ6b0FNQ0FEUVRCcUlBRWdBaENZQXlFRkRBSUxJQU1vQWlRaEJRd0NDeUFEUVFzNkFEQWdBMFxcXG5Fd2FpQUJJQUlRbUFNaEJRc2dBQ0FGRUw0TklRVUxJQU5Cd0FCcUpBQWdCUXVTQlFJRGZ3SitJd0JCOEFCcklnVWtBQ0FGSUFFb0FrZ2lcXFxuQmlnQ1VDSUhOZ0lvSUFVZ0F6WUNMQUpBQWtBQ1FBSkFJQWNnQTBjTkFDQUVJQU5MRFFFZ0JDQURUdzBDSUFJZ0JHcEJnQUU2QUFBZ0JFXFxcbkVCYWlFSEFrQWdBeUFHS0FKVWF5QUVUUTBBSUFNaEJnd0VDeUFGUVNCcUlBY2dBeUFDSUFOQitQckFBQkNhQnlBRktBSWtJUWNnQlNnQ1xcXG5JQ0VHQWtBRFFDQUhSUTBCSUFaQkFEb0FBQ0FIUVg5cUlRY2dCa0VCYWlFR0RBQUxDeUFCSUFKQkFTQUJLQUpJS0FKQUVRZ0FRUUFoQnlcXFxuQUZLQUlvSVFZTUF3c2dCVUVBTmdJd1FRQWdCVUVzYWlBRlFTaHFJQVZCTUdwQm1QckFBQkM1QlFBTFFhajZ3QUJCTGtIWStzQUFFSU1IXFxcbkFBc2dCQ0FEUWVqNndBQVFnUVVBQ3lBRlFSaHFJQWNnQmtGNGFpQUNJQU5CaVB2QUFCQ2FCeUFGS0FJY0lRY2dCU2dDR0NFR0FrQURRQ1xcXG5BSFJRMEJJQVpCQURvQUFDQUhRWDlxSVFjZ0JrRUJhaUVHREFBTEN5QUZJQUVwQTBCQ0FDQUZLQUlvSWdldFFnQVF5QVFnQlNrRENGQ3RcXFxuUVpqN3dBQVFrd3NnQlNrREFDSUlJQVN0ZkNJSklBaGFyVUdvKzhBQUVKTUxJQWxDZ0lDQWdJQ0FnSUFnVksxQnVQdkFBQkNUQ3lBRlFSXFxcbkJxSUFkQmVHb2dCeUFDSUFOQnlQdkFBQkNhQnlBRktBSVVJUWNnQlNnQ0VDRUdJQVVnQ1VJN2hpQUpRaXVHUW9DQWdJQ0FnTUQvQUlPRVxcXG5JQWxDRzRaQ2dJQ0FnSURnUDRNZ0NVSUxoa0tBZ0lDQThCK0RoSVFnQ1VJRmlFS0FnSUQ0RDRNZ0NVSVZpRUtBZ1B3SGc0UWdDVUlsaUVcXFxuS0EvZ09ESUFsQ0E0WkNPSWlFaElRM0F6QWdCaUFISUFWQk1HcEJDRUhZKzhBQUVQTUpJQUVnQWtFQklBRW9Ba2dvQWtBUkNBQWdBU2dDXFxcblNDSUhLQUpFSVFZZ0JVRXdhaUFCUWNBQUVLUU5HaUFBSUFWQk1Hb2dCaEVGQUNBQUlBYzJBa0FnQlVId0FHb2tBQXZEQkFFTGZ5QUFLQVxcXG5JRUlRTWdBQ2dDQUNFRUlBQW9BZ2doQlVFQUlRWkJBQ0VIUVFBaENFRUFJUWtDUUFOQUlBbEIvd0Z4RFFFQ1FBSkFJQWdnQWtzTkFBTkFcXFxuSUFFZ0NHb2hDZ0pBQWtBZ0FpQUlheUlMUVFoSkRRQUNRQUpBQWtBZ0NrRURha0Y4Y1NJQUlBcEdEUUFnQUNBS2F5SU1SUTBBUVFBaEFBXFxcbk5BSUFvZ0FHb3RBQUJCQ2tZTkJTQU1JQUJCQVdvaUFFY05BQXNnRENBTFFYaHFJZzFORFFFTUFnc2dDMEY0YWlFTlFRQWhEQXNEUUNBS1xcXG5JQXhxSWdrb0FnQWlBRUYvY3lBQVFZcVVxTkFBYzBILy9mdDNhbkZCZ0lHQ2hIaHhEUUVnQ1VFRWFpZ0NBQ0lBUVg5eklBQkJpcFNvMEFcXFxuQnpRZi85KzNkcWNVR0FnWUtFZUhFTkFTQU1RUWhxSWd3Z0RVME5BQXNMQWtBZ0N5QU1SdzBBSUFJaENBd0VDd05BQWtBZ0NpQU1haTBBXFxcbkFFRUtSdzBBSUF3aEFBd0RDeUFMSUF4QkFXb2lERWNOQUFzZ0FpRUlEQU1MQWtBZ0NDQUNSdzBBSUFJaENBd0RDMEVBSVFBRFFDQUtJQVxcXG5CcUxRQUFRUXBHRFFFZ0N5QUFRUUZxSWdCSERRQUxJQUloQ0F3Q0N5QUlJQUJxSWdCQkFXb2hDQUpBSUFBZ0FrOE5BQ0FCSUFCcUxRQUFcXFxuUVFwSERRQkJBQ0VKSUFnaERTQUlJUUFNQXdzZ0NDQUNUUTBBQ3d0QkFTRUpJQWNoRFNBQ0lRQWdCeUFDUmcwQ0N3SkFBa0FnQlMwQUFFXFxcblVOQUNBRVFhaWV6Z0JCQkNBREtBSU1FUWtBRFFFTElBRWdCMm9oRENBQUlBZHJJUXBCQUNFTEFrQWdBQ0FIUmcwQUlBb2dER3BCZjJvdFxcXG5BQUJCQ2tZaEN3c2dCU0FMT2dBQUlBMGhCeUFFSUF3Z0NpQURLQUlNRVFrQVJRMEJDd3RCQVNFR0N5QUdDNUlGQVFaL0l3QkJNR3NpQmlcXFxuUUFJQVpCQ0dvZ0FSQzJCQUpBQWtBQ1FBSkFJQVl0QUFnTkFDQUdMUUFKRFFJZ0JrRUZOZ0lRSUFFZ0JrRVFhaERPQ0NFQkRBRUxJQVlvXFxcbkFnd2hBUXNnQUVHQWxPdmNBellDQ0NBQUlBRTJBZ0FNQVFzQ1FBSkFBa0FDUUFKQUFrQWdCaTBBQ2lJSFFkc0FSZzBBQWtBZ0IwSDdBRVxcXG5ZTkFDQUJJQVpCS0dwQndJUEFBQkJvSVFjTUJnc2dBU0FCTFFBWVFYOXFJZ2M2QUJnZ0IwSC9BWEZGRFFJZ0FTQUJLQUlJUVFGcU5nSUlcXFxuSUFaQkVHb2dBVUVCRU1zQklBRWdBUzBBR0VFQmFqb0FHQ0FHSUFFUXhBTWlCellDSUVHQWxPdmNBeUVJQWtBZ0JpZ0NHQ0lKUVlDVTY5XFxcbndEUmcwQUlBY05BaUFHS0FJVUlRb2dCaWdDRUNFSElBa2hDQXdGQ3lBR0tBSVFJUW9DUUNBSFJRMEFJQWxCZ0pUcjNBTkdEUVFMSUFvaFxcXG5Cd3dCQ3lBQklBRXRBQmhCZjJvaUJ6b0FHQUpBSUFkQi93RnhSUTBBSUFFZ0FTZ0NDRUVCYWpZQ0NDQUdRUkJxSUFGQkFSQ3VBaUFCSUFcXFxuRXRBQmhCQVdvNkFCZ2dCaUFCRUswQ0lnYzJBaUJCZ0pUcjNBTWhDQUpBSUFZb0FoZ2lDVUdBbE92Y0EwWU5BQ0FIRFFJZ0JpZ0NGQ0VLXFxcbklBWW9BaEFoQnlBSklRZ01CUXNnQmlnQ0VDRUxBa0FnQjBVTkFDQUpRWUNVNjl3RFJ3MEFJQVpCSUdvUXJ3bEJnSlRyM0FNaENBc2dDeVxcXG5FSERBUUxJQVpCR0RZQ0VDQUJJQVpCRUdvUXpnZ2hBU0FBUVlDVTY5d0ROZ0lJSUFBZ0FUWUNBQXdGQ3d3Q0N5QUdRUmcyQWhBZ0FTQUdcXFxuUVJCcUVNNElJUUVnQUVHQWxPdmNBellDQ0NBQUlBRTJBZ0FNQXdzZ0JrRWdhaEN2Q1NBS0lRZEJnSlRyM0FNaENBc2dDRUdBbE92Y0EwXFxcbllOQUNBQUlBZzJBZ2dnQUNBS05nSUVJQUFnQnpZQ0FBd0JDeUFISUFFUXFRWWhBU0FBUVlDVTY5d0ROZ0lJSUFBZ0FUWUNBQXNnQmtFd1xcXG5haVFBQy9nRUFRUi9JQUFnQVJET0RTRUNBa0FDUUFKQUlBQVFsZzBOQUNBQUtBSUFJUU1DUUFKQUlBQVExQXdOQUNBRElBRnFJUUVnQUNcXFxuQURFTThOSWdCQkFDZ0NpS3RQUncwQklBSW9BZ1JCQTNGQkEwY05Ba0VBSUFFMkFvQ3JUeUFBSUFFZ0FoRC9DUThMUWVDbnp3QWdBQ0FEXFxcbmF5QURJQUZxUVJCcUlnQVFqZzVGRFFKQkFFRUFLQUtRcTA4Z0FHczJBcENyVHc4TEFrQWdBMEdBQWtrTkFDQUFFUFlCREFFTEFrQWdBRVxcXG5FTWFpZ0NBQ0lFSUFCQkNHb29BZ0FpQlVZTkFDQUZJQVEyQWd3Z0JDQUZOZ0lJREFFTFFRQkJBQ2dDK0twUFFYNGdBMEVEZG5keE5nTDRcXFxucWs4TEFrQWdBaENrREVVTkFDQUFJQUVnQWhEL0NRd0NDd0pBQWtBZ0FrRUFLQUtNcTA5R0RRQWdBa0VBS0FLSXEwOUhEUUZCQUNBQU5nXFxcbktJcTA5QkFFRUFLQUtBcTA4Z0FXb2lBVFlDZ0t0UElBQWdBUkQ5Q2c4TFFRQWdBRFlDakt0UFFRQkJBQ2dDaEt0UElBRnFJZ0UyQW9TclxcXG5UeUFBSUFGQkFYSTJBZ1FnQUVFQUtBS0lxMDlIRFFGQkFFRUFOZ0tBcTA5QkFFRUFOZ0tJcTA4UEN5QUNFSlVOSWdNZ0FXb2hBUUpBQWtcXFxuQWdBMEdBQWtrTkFDQUNFUFlCREFFTEFrQWdBa0VNYWlnQ0FDSUVJQUpCQ0dvb0FnQWlBa1lOQUNBQ0lBUTJBZ3dnQkNBQ05nSUlEQUVMXFxcblFRQkJBQ2dDK0twUFFYNGdBMEVEZG5keE5nTDRxazhMSUFBZ0FSRDlDaUFBUVFBb0FvaXJUMGNOQVVFQUlBRTJBb0NyVHdzUEN3SkFJQVxcXG5GQmdBSkpEUUFnQUNBQkVQb0JEd3NnQVVGNGNVSHdxTThBYWlFQ0FrQUNRRUVBS0FMNHFrOGlBMEVCSUFGQkEzWjBJZ0Z4UlEwQUlBSW9cXFxuQWdnaEFRd0JDMEVBSUFNZ0FYSTJBdmlxVHlBQ0lRRUxJQUlnQURZQ0NDQUJJQUEyQWd3Z0FDQUNOZ0lNSUFBZ0FUWUNDQXVRQlFFRWZ5XFxcbk1BUWVBQWF5SUNKQUFnQWtFQk93RlVJQUpCQURZQ1RDQUNRb0dBZ0lDd0J6Y0NSQ0FDUVFBMkFqd2dBa0U3TmdJd0lBSWdBU2dDQ0NJRFxcXG5OZ0pRSUFJZ0F6WUNRQ0FDSUFNMkFqZ2dBaUFCS0FJQU5nSTBJQUpCSUdvZ0FrRXdhaEQvQ0NBQ1FSaHFJQUpCSUdvUTRnb2lBeWdDQUNcXFxuQURLQUlFRUxrQklBSkJNR29nQWlnQ0dDQUNLQUljRURzQ1FBSkFJQUlvQWpBaUJDQUNLQUk0SWdWQjFPdkFBRUVXRUtZS0RRQWdCQ0FGXFxcblFibnF3QUJCRHhDbUNnMEFJQVFnQlVIcTY4QUFRUmNRcGdvTkFDQUVJQVZCZ2V6QUFFRUtFS1lLRFFBZ0JDQUZRWXZzd0FCQkdCQ21DZ1xcXG4wQUFrQWdCQ0FGUWFQc3dBQkJGaENtQ2cwQUlBUWdCVUhJNnNBQVFROFFwZ29OQUNBRUlBVkJ1ZXpBQUVFV0VLWUtEUUFnQkNBRlFjL3NcXFxud0FCQkR4Q21DZzBBSUFRZ0JVSGU3TUFBUVJnUXBnb05BQ0FFSUFWQjl1ekFBRUVRRUtZS0RRQUNRQUpBSUFRZ0JVR0c3Y0FBUVF3UXBnXFxcbm9OQUVFQklRTWdCQ0FGUWRmcXdBQkJDQkNtQ2tVTkFRd0VDeUFBUVFFUWtnSkIvd0Z4SVFNTUF3dEJDaUVESUFRZ0JVR3g2c0FBUVFnUVxcXG5wZ29OQWtFTElRTWdCQ0FGUVpIcXdBQkJFQkNtQ2cwQ0lBUWdCVUdTN2NBQVFRa1FwZ29OQWtFTUlRTWdCQ0FGUWFIcXdBQkJFQkNtQ2dcXFxuMENBa0FDUUNBRUlBVkJtKzNBQUVFS0VLWUtSUTBBSUFKQkVHb2dBQkRaQlNBQ0lBSXBBeEEzQTFnZ0FrSFlBR29Ra2dzTkFRdEJEeUVEXFxcbklBUWdCVUdwN2NBQVFSZ1FwZ3BGRFFNZ0FrRUlhaUFBRU5rRklBSWdBaWtEQ0RjRFdDQUNRZGdBYWhDU0MwVU5Bd3NnQUJDY0FrSC9BWFxcXG5FaEF3d0NDeUFBUVFBUWtnSkIvd0Z4SVFNTUFRc2dBRUVFRUpJQ1FmOEJjU0VEQ3lBQ1FUQnFFSUlOSUFKQklHb1FndzBnQVJDQ0RTQUNcXFxuUWVBQWFpUUFJQU1MdUFRQkRuOGpBRUdnQVdzaUFpUUFJQUFRNFFVaUF5Z0NCQ0VFUVFBaEJTQUNRUUEyQWdnZ0FrRUFOZ0pNSUFOQkJHXFxcbm9oQmtFQUlRZEJBQ0VJQTBBZ0JVRUVjU0VKSUFWQkNIRWhDZ0pBQTBBZ0J5RUxBMEFnQmlFTUlBZ2hEU0FFSWc1RkRRSWdEa0VFYWlFR1xcXG5JQTRvQWdRaEJDQU9JUWdnRGlnQ0FDQUFSdzBBQ3dKQUlBcEZEUUJCQVNFTERBSUxJQTRvQWd3aER3SkFJQWxGRFFCQkFTRUhJQTRoQ0NcXFxuQVBRUXh4RFFFTEN5QU1JQVEyQWdBQ1FDQURLQUlJSUE1SERRQWdBeUFOTmdJSUN5QVBJQVZxSVFVZ0FrRUlhaUFPRUxJRElBc2hCeUFOXFxcbklRZ2dEQ0VHREFFTEN3SkFJQUlvQWt3aURrRUpTUTBBSUFJb0Fnd2hEZ3NDUUFKQUFrQWdEa1VOQUJDakRpQUJEUUVMUVFBaEJDQUxRZlxcXG44QmNVRUFSeUVPREFFTElBVWdDMEgvQVhGeUlRNUJBU0VFQ3lBQUlBNDJBZ0FDUUFKQUlBSW9Ba3dpQ0VFSVN3MEFJQUpCQ0dwQkJISWhcXFxuRGd3QkN5QUNLQUlNSVFnZ0FpZ0NFQ0VPQ3lBSVFRTjBJUWdEUUFKQUlBZ05BQ0FERU1RSklBSW9BZ3doQ0NBQ0tBSk1JUTRnQWlBQ0tBXFxcbklJTmdKUUlBSkJBQ0FJSUE1QkNFc2lCQnMyQWxRZ0FrSFFBR3BCQ0dvZ0FrRUlha0VJYWtFOEVLUU5HaUFDSUFnZ0RpQUVHellDbkFFZ1xcXG5Ba0VBTmdLWUFTQUNJQTVCQUNBRUd6WUNsQUVDUUFOQUlBSkIwQUJxRUtRR1FmOEJjVUVDUmcwQkVLTU9EQUFMQ3lBQ1FkQUFhaENBRFNcXFxuQUNRYUFCYWlRQUR3c2dEaWdDQUNBRU5nSUlJQTRvQWdBUXV3d2dEa0VCT2dBRUlBaEJlR29oQ0NBT1FRaHFJUTRNQUFzTHJBUUJEbjhqXFxcbkFFRWdheUlESkFBZ0F5QUJOZ0lVSUFNZ0FEWUNFRUVBSVFSQkFDRUZBa0FDUUFOQUFrQWdBMEVRYWhDRkF5SUdRWUNBeEFCSERRQWdCQVxcXG4wQ0RBTUxJQVZCQVdvaEJTQUdRZjhBU3cwQUlBSWdCaERnQkNBRVFRRnFJUVFNQUFzTElBSkJMUkRnQkFzZ0EwRVlhaUVIUWNnQUlRaEJcXFxuZ0FFaENTQUVJUXBCQUNFR0FrQURRQ0FESUFrMkFnd2dDaUFGU1NJTFJRMEJJQU1nQVRZQ0ZDQURJQUEyQWhBZ0F5QURRUXhxTmdJWUlBXFxcbk1nQTBFUWFpQUhFTGNIQWtBQ1FDQURLQUlBRFFCQkFDRU1EQUVMUVFFaERDQURLQUlRSUFNb0FoUWdBeWdDQkNBREtBSVlFUG9GSVFrTFxcXG5JQXdRd2dzZ0NTQURLQUlNYXlJTUlBWkJmM01nQ2tFQmFpSU5ia3NOQVNBRElBazJBZ3dnQXlBQk5nSVVJQU1nQURZQ0VDQU1JQTFzSUFcXFxuWnFJUTREUUNBREtBSU1JUWtEUUFKQUlBTkJFR29RaFFNaUJrR0FnTVFBUncwQUlBTW9BZ3hCQVdvaENTQU9RUUZxSVFZTUF3c0NRQ0FHXFxcbklBbFBEUUFnRGtFQmFpSU9SUTBFQ3lBR0lBbEhEUUFMUVFBZ0NHc2hEeUFJUVJwcUlSQkJKQ0VHSUE0aERBSkFBa0FEUUNBTUlBOGdCbVxcXG5wQkdpQUdJQkJKRzBFQklBWWdDRXNiSWdsSkRRRWdDVUVrUmcwQ0lBSWdEQ0FKYXlJTUlBeEJKQ0FKYXlJTmJpSU1JQTFzYXlBSmFoRElcXFxuQ0JEZ0JDQUdRU1JxSVFZTUFBc0xJQUlnREJESUNCRGdCQ0FPSUFwQkFXb2lCaUFLSUFSR0VKRUZJUWdnQmlFS1FRQWhEZ3dCQ3dzTFFkXFxcbkNnd1FCQk9VR2NvY0VBRUlNSEFBc2dBMEVnYWlRQUlBc0x6UVFDQlg4QmZpTUFRWUFCYXlJQ0pBQWdBa0hBQUdvZ0FVSEVvOEFBUVFVUVxcXG5kd0pBQWtBQ1FDQUNLQUpBSWdNTkFDQUNRUUEyQWpBTUFRc2dBaWdDUkNFRUlBSW9Ba2doQlNBQ1FRQTJBbWdnQWtJQk53TmdJQUpCMEFcXFxuQnFJQUpCNEFCcUVOY0tJQUlnQXlBRlFReHNJZ1ZxTmdKc0lBSWdBellDYUNBQ0lBUTJBbVFnQWlBRE5nSmdBa0FEUUNBRlJRMEJJQUlnXFxcbkEwRU1haUlFTmdKb0lBTW9BZ0FpQmtVTkFTQUNJQVkyQW5BZ0FpQURLUUlFTndKMElBVkJkR29oQlNBQ1FkQUFhaUFDUWZBQWFoQ2lDeVxcXG5BRUlRTU1BQXNMSUFKQjRBQnFFTjRISUFKQk1HcEJDR29pQXlBQ1FkQUFha0VJYWlnQ0FEWUNBQ0FDSUFJcEExQWlCemNETUNBSHAwVU5cXFxuQUNBQ1FTQnFRUWhxSUFNb0FnQTJBZ0FnQWlBQ0tRTXdOd01nSUFKQkdHb2dBUkM5QkNBQ0tBSVlJUVFnQWtFUWFpQUNLQUljSWdOQkFCXFxcbkRWQkNBQ0tBSVVJUVlnQWlnQ0VDSUZJQVFnQXhDa0RTRUVJQUlnQXpZQ2VDQUNJQVkyQW5RZ0FpQUVOZ0p3SUFKQkNHb2dBUkRPQkFKQVxcXG5JQUlvQWdnaUJFVU5BQ0FDS0FJTUlRTWdBa0h3QUdwQlB4RFlCQ0FDUWZBQWFpQUVJQU1RaUF3Z0FpZ0NlQ0VESUFJb0FuQWhCUXNnQWlcXFxuQUROZ0pVSUFJZ0JUWUNVQ0FDUWVBQWFpQUNRZEFBYWhEWEFpQUNRU0JxSUFKQjRBQnFFS0lMSUFCQkRHb2dBa0VvYWlnQ0FEWUNBQ0FBXFxcbklBSXBBeUEzQWdRZ0FFRUFOZ0lBSUFKQjhBQnFFT01NREFFTElBSkJNR29RekFzZ0FrSGdBR29nQVJDSUJTQUFRUUUyQWdBZ0FFRU1haVxcXG5BQ1FlZ0FhaWdDQURZQ0FDQUFJQUlwQTJBM0FnUUxJQUpCZ0FGcUpBQUxvd1FCQjM4Z0FTMEFIQ0lDUVFGSFFYOGdBaHNpQTBIL0FYRWhcXFxuQkVFQUlRVUNRQUpBSUFOQmYwWWlBdzBBSUFSRkRRQkJBQ0VHREFFTElBRXRBQjRoQmdKQUlBTU5BQ0FFRFFFTElBRVE3d0VoQlF0QkFDXFxcbkVEQWtBZ0FnMEFRUVloQXdKQUlBRXRBQWhCQmtZaUFrVU5BRUVBSVFNTUFRc0NRQUpBQWtBQ1FBSkFRUUFnQVVFSWFpQUNHeUlDTFFBQVxcXG5EZ1lBQVFVQ0F3UUFDeUFDUVFocUtBSUFRUVJxSVFNTUJBc2dBa0VJYWlnQ0FDQUNRUkJxS0FJQUlnSkJBV3BCQUNBQ0cycEJDR29oQXdcXFxud0RDeUFDUVFocUtBSUFRUVJxSVFNTUFnc2dBa0VJYWlnQ0FDQUNRUkJxS0FJQUlnSkJBV3BCQUNBQ0cycEJBbW9oQXd3QkMwRUNJUU1MXFxcbkFrQUNRQ0FCS0FJRUlnUWdCU0FHUWY4QmNXb2dBMm9pQjBrTkFDQUJLQUlBSWdVZ0Iyb2hDRUYvSVFNZ0J5RUNBa0FEUUFKQUlBUWdBa1xcXG5jTkFFRUFJUVVNQWdzZ0EwRUJhaUVESUFKQkFXb2hBaUFGUVg5cUlnVWdCR29pQmkwQUFFRXZSdzBBQ3lBRUlBUWdBMnNpQjBrTkFrRUJcXFxuSVFVZ0JrRUJhaUVJQzBFSklRTUNRQUpBQWtBQ1FDQUVJQWRySWdJT0F3SUFBUU1MSUFndEFBQkJMa2NOQWtFSFFRb2dBVUVJYWkwQUFFXFxcbkgvQVhGQkEwa2JJUU1NQWdzZ0NDMEFBRUV1UncwQlFRaEJDU0FJTFFBQlFTNUdHeUVEREFFTFFRb2hBd3NnQUNBRE9nQUVJQUJCREdvZ1xcXG5BallDQUNBQVFRaHFJQWcyQWdBZ0FDQUNJQVZxTmdJQUR3c2dCeUFFUVp6cnpRQVFnZ1VBQ3lBSElBUkJyT3ZOQUJDQ0JRQUxnd1VCQW5cXFxuOGpBRUhnQUdzaUF5UUFJQU5CQVRzQlZDQURJQUkyQWxBZ0EwRUFOZ0pNSUFOQ2dZQ0FnTEFITndKRUlBTWdBallDUUNBRFFRQTJBandnXFxcbkF5QUNOZ0k0SUFNZ0FUWUNOQ0FEUVRzMkFqQWdBMEVnYWlBRFFUQnFFUDhJSUFOQkdHb2dBMEVnYWhEaUNpSUNLQUlBSUFJb0FnUVF1UVxcXG5FZ0EwRXdhaUFES0FJWUlBTW9BaHdRT3dKQUFrQWdBeWdDTUNJQklBTW9BamdpQkVIVTY4QUFRUllRcGdvTkFDQUJJQVJCdWVyQUFFRVBcXFxuRUtZS0RRQWdBU0FFUWVycndBQkJGeENtQ2cwQUlBRWdCRUdCN01BQVFRb1FwZ29OQUNBQklBUkJpK3pBQUVFWUVLWUtEUUFDUUNBQklBXFxcblJCbyt6QUFFRVdFS1lLRFFBZ0FTQUVRY2pxd0FCQkR4Q21DZzBBSUFFZ0JFRzU3TUFBUVJZUXBnb05BQ0FCSUFSQnorekFBRUVQRUtZS1xcXG5EUUFnQVNBRVFkN3N3QUJCR0JDbUNnMEFJQUVnQkVIMjdNQUFRUkFRcGdvTkFBSkFBa0FnQVNBRVFZYnR3QUJCREJDbUNnMEFRUUVoQWlcXFxuQUJJQVJCMStyQUFFRUlFS1lLUlEwQkRBUUxJQUJCQVJDU0FrSC9BWEVoQWd3REMwRUtJUUlnQVNBRVFiSHF3QUJCQ0JDbUNnMENRUXNoXFxcbkFpQUJJQVJCa2VyQUFFRVFFS1lLRFFJZ0FTQUVRWkx0d0FCQkNSQ21DZzBDUVF3aEFpQUJJQVJCb2VyQUFFRVFFS1lLRFFJQ1FBSkFJQVxcXG5FZ0JFR2I3Y0FBUVFvUXBncEZEUUFnQTBFUWFpQUFFTmtGSUFNZ0F5a0RFRGNEV0NBRFFkZ0FhaENTQ3cwQkMwRVBJUUlnQVNBRVFhbnRcXFxud0FCQkdCQ21Da1VOQXlBRFFRaHFJQUFRMlFVZ0F5QURLUU1JTndOWUlBTkIyQUJxRUpJTFJRMERDeUFBRUp3Q1FmOEJjU0VDREFJTElBXFxcbkJCQUJDU0FrSC9BWEVoQWd3QkN5QUFRUVFRa2dKQi93RnhJUUlMSUFOQk1Hb1FnZzBnQTBFZ2FoQ0REU0FEUWVBQWFpUUFJQUlMNEFRQ1xcXG5CWDhCZmlNQVFkQUJheUlESkFBZ0EwSElBR29nQVNBQ0tBSUFJZ1FRbGdRQ1FBSkFBa0FnQXlnQ1VDSUNRWUdVNjl3RFJnMEFJQU1vQWtcXFxud2hCU0FES0FKSUlRWWdBMEVVYWlBRFFkUUFhaUlIUVRRUXBBMGFJQUpCZ0pUcjNBTkhEUUVnQUVJQU53SUFEQUlMSUFNb0FrZ2hBU0FBXFxcblFRRTJBZ0FnQUNBQk5nSUVEQUVMSUFNZ0FqWUNVQ0FESUFVMkFrd2dBeUFHTmdKSUlBY2dBMEVVYWtFMEVLUU5HZ0pBQWtBQ1FBSkFBa1xcXG5BZ0EwSElBR29ROWdzTkFDQURRUWhxSUFOQjJBQnFFSVFJSUFOQnVBRnFJQVFnQXlnQ0NDQURLQUlNRUdjZ0EwR29BV3BCQ0dvaUFpQURcXFxuUWJnQmFrRUlhaUlGS0FJQU5nSUFJQU1nQXlrRHVBRTNBNmdCSUFNdEFNUUJJZ1JCQWtZTkFpQURRWmdCYWtFUGFpQURRYmdCYWtFUGFpXFxcbjBBQURvQUFDQURRWmdCYWtFSWFpQUNLQUlBTmdJQUlBTWdBeThBeFFFN0FLVUJJQU1nQXlrRHFBRTNBNWdCSUFNZ0JEb0FwQUVnQTBHSVxcXG5BV29nQTBHWUFXb2dBU2dDbUFFZ0FVR2dBV29vQWdBUW5RVWdBMEdZQVdvUTRnd2dBMEc0QVdvZ0F5QURLQUtJQVNBREtBS1FBUkN3QWlcXFxuQURLQUs0QVEwRElBTXBBcndCSVFnZ0FFRU1haUFEUWJnQmFrRU1haWdDQURZQ0FDQUFJQWczQWdRZ0FFRUFOZ0lBSUFOQmlBRnFFT01NXFxcbkRBRUxJQUJDZ0lDQWdCQTNBZ0FnQUVFSWFrSUFOd0lBQ3lBRFFjZ0FhaENmQ3d3REN5QUZJQUlvQWdBMkFnQWdBeUFES1FPb0FUY0R1QVxcXG5FZ0EwRzRBV29Rc3cwaEFTQUFRUUUyQWdBZ0FDQUJOZ0lFREFFTElBTWdBeWtDdkFFM0E4Z0JJQUFnQTBISUFXb1FuUWdnQTBHSUFXb1FcXFxuNHd3TElBTkJ5QUJxRUo4TEN5QURRZEFCYWlRQUM2TUVBUWQvQWtBZ0FTZ0NCQ0lDUlEwQUlBRW9BZ0FoQTBFQUlRUUNRQU5BSUFSQkFXXFxcbm9oQlFKQUFrQWdBeUFFYWkwQUFDSUd3Q0lIUVFCSURRQWdCU0VFREFFTEFrQUNRQUpBQWtBQ1FBSkFBa0FnQmtIUXBNNEFhaTBBQUVGK1xcXG5hZzREQUFFQ0NRc2dBeUFGYWtIQXFNNEFJQVVnQWtrYkxRQUFRY0FCY1VHQUFVY05DQ0FFUVFKcUlRUU1CZ3NnQXlBRmFrSEFxTTRBSUFcXFxuVWdBa2tiTEFBQUlRZ2dCa0dnZm1vT0RnRURBd01EQXdNREF3TURBd01DQXdzZ0F5QUZha0hBcU00QUlBVWdBa2tiTEFBQUlRZ0NRQUpBXFxcbkFrQUNRQ0FHUVpCK2FnNEZBUUFBQUFJQUN5QUhRUTlxUWY4QmNVRUNTdzBKSUFoQlFFNE5DUXdDQ3lBSVFmQUFha0gvQVhGQk1FOE5DQVxcXG53QkN5QUlRWTkvU2cwSEN5QURJQVJCQW1vaUJXcEJ3S2pPQUNBRklBSkpHeTBBQUVIQUFYRkJnQUZIRFFZZ0F5QUVRUU5xSWdWcVFjQ29cXFxuemdBZ0JTQUNTUnN0QUFCQndBRnhRWUFCUncwR0lBUkJCR29oQkF3RUN5QUlRV0J4UWFCL1J3MEZEQUlMSUFoQm9IOU9EUVFNQVFzQ1FDXFxcbkFIUVI5cVFmOEJjVUVNU1EwQUlBZEJmbkZCYmtjTkJDQUlRVUJPRFFRTUFRc2dDRUcvZjBvTkF3c2dBeUFFUVFKcUlnVnFRY0NvemdBZ1xcXG5CU0FDU1JzdEFBQkJ3QUZ4UVlBQlJ3MENJQVJCQTJvaEJBc2dCQ0VGSUFRZ0Fra05BQXNMSUFBZ0JEWUNCQ0FBSUFNMkFnQWdBU0FDSUFcXFxuVnJOZ0lFSUFFZ0F5QUZhallDQUNBQUlBVWdCR3MyQWd3Z0FDQURJQVJxTmdJSUR3c2dBRUVBTmdJQUM1Y0VBd1ovQVg0QmZDTUFRWUFCXFxcbmF5SURKQUFDUUFKQUlBQVFwd2hGRFFCQkJ5RUVRUUFoQlVFQUlRWU1BUXRCQUNFRkFrQkJBVUVDSUFBb0FnQWlCaEFOSWdkQkFVWWJRUVxcXG5BZ0J4c2lCMEVDUmcwQVFRQWhCa0VBSVFRTUFRc2dBMEVZYWlBQUVNZ0dBa0FnQXlrREdLZEJBVWNOQUNBREt3TWdJUXBCQXlFRVFRQWhcXFxuQlVFQUlRWU1BUXNnQTBFUWFpQUdFQUlDUUFKQUlBTW9BaEFpQlVVTkFDQURRY2dBYWlBRklBTW9BaFFRK0FZZ0F5Z0NTRVVOQUNBRFFTXFxcbmhxUVFocUlBTkJ5QUJxUVFocUtBSUFJZ2cyQWdBZ0F5QURLUU5JSWdrM0F5Z2dDYWNoQUVFRklRUkJBU0VHUVFBaEJRd0JDeUFEUWRnQVxcXG5haUFBRU9JREFrQUNRQ0FES0FKWUlnZEZEUUFnQTBFNGFrRUlhaUFEUWRnQWFrRUlhaWdDQURZQ0FDQURJQU1wQTFnM0F6aEJCaUVFSUFcXFxuTkJPR29oQmd3QkN5QURRZlFBYWtJQk53SUFJQU5CQVRZQ2JDQURRZmlzd0FBMkFtZ2dBMEVLTmdJOElBTWdBRFlDT0NBRElBTkJPR28yXFxcbkFuQWdBMEVJYWlBRFFlZ0FhaEN1QmlBRFFTaHFJQU1vQWdnZ0F5Z0NEQ0FEUWVnQWFoQ0RCa0VSSVFRZ0EwRW9haUVHQ3lBSFFRQkhJUVxcXG5VZ0JpZ0NBQ0VBSUFZb0FnZ2hDQ0FIUlNFR0N5QUlyYjhoQ2dzZ0F5QUtPUU53SUFNZ0FEWUNiQ0FESUFjNkFHa2dBeUFFT2dCb0lBTkJcXFxuNkFCcUlBRWdBaER1QkNFQUFrQWdCVVVOQUNBRFFUaHFFUG9NQ3dKQUlBWkZEUUFnQTBFb2FoRDZEQXNnQTBHQUFXb2tBQ0FBQzdZRUFRXFxcbmgvSXdCQnNBUnJJZ01rQUNBRElBSTZBQndnQXlBQk5nSVlJQU5CQ0dvUTBBZ2dBMEhFQUdwQ0FEY0NBQ0FEUVR4cVFvQ0FnSURBQURjQ1xcXG5BQ0FEUVRScVFnQTNBZ0FnQTBHQWc4QUFOZ0l3SUFNZ0F5a0RFRGNES0NBRElBTXBBd2czQXlBZ0EwSFFBR3BCd0FCcUlRRWdBMEhvQVdcXFxucEJDR29oQkNBRFFlQURha0hBQUdvaEJTQURRWWdEYWtFSWFpRUdJQU5CaUFOcVFRUnlJUWNnQTBIQUFtcEJCSEloQ0FKQUFrQUNRQUpBXFxcbkEwQWdBMEhBQW1vZ0EwRVlhaEN2QVFKQUFrQWdBeWdDd0FJaUFrRithZzRDQVFNQUN5QURJQUkyQW9nRElBY2dDRUhFQUJDa0RSb2dBMFxcXG5IZ0Eyb2dBMEVZYWhEVkNRSkFJQU1vQXVBRERRQWdBeWdDNUFNaEFpQURRWndEYWhEakRBd0VDeUFEUWRBRGFrRUlhaUlKSUFOQjRBTnFcXFxuUVFocUtBSUFOZ0lBSUFNZ0F5a0Q0QU0zQTlBRElBTW9Bb3dESVFvZ0EwSGdBMm9nQmtIQUFCQ2tEUm9nQlVFSWFpQUpLQUlBTmdJQUlBXFxcblVnQXlrRDBBTTNBZ0FnQTBHY0FXb2dBMEhnQTJwQnpBQVFwQTBhQ3lBRFFkQUFhaUFEUVp3QmFrSE1BQkNrRFJvZ0FrRUNSZzBESUFNZ1xcXG5DallDN0FFZ0F5QUNOZ0xvQVNBRUlBTkIwQUJxUWNBQUVLUU5HaUFEUWJBQ2FrRUlhaUFCUVFocUtBSUFOZ0lBSUFNZ0FTa0NBRGNEc0FcXFxuSWdBMEhnQTJvZ0EwRWdhaUFEUWVnQmFpQURRYkFDYWhEbEJ5QURRZUFEYWhETUN3d0FDd3NnQXlnQ3hBSWhBZ3NnQUVFQU5nSVFJQUFnXFxcbkFqWUNBQ0FEUVNCcUVOZ0tEQUVMSUFBZ0EwRWdha0V3RUtRTkdnc2dBMEd3Qkdva0FBdWpCQUVHZnlNQVFZQUJheUlFSkFBZ0JFRWdhaVxcXG5BQUlBRVE2QUVDUUFKQUlBUW9BaUFpQlVVTkFDQUVRUmhxSUFVZ0JDZ0NKQkNDQnlBRUtBSVlJZ1ZGRFFBZ0JTQUVLQUljSWdaQnpPbkFcXFxuQUVFQ0VNc0pEUUVnQkVFNGFpQUFJQUVRbEEwZ0JFRVFhaUFFUVRocUVJb0tJQVFvQWhBZ0JDZ0NGRUhPNmNBQVFRTVF5d2toQVFKQUlBXFxcblFvQWpoRkRRQWdCRUU0YWhDQ0RRc2dBVVVOQUFKQUlBWkJCRWtOQUNBRVFUaHFJQVVnQmtIUjZjQUFRUU1RT2dKQUlBUW9BamdOQUNBRVxcXG5RY1FBYWkwQUFDRUhJQVJCN0FCcUtBSUFJUUFnQkNnQ1BDRUJJQVFvQW1naENDQUVRY1lBYWkwQUFFSC9BWEVoQ1FOQUlBa05BeUFBSVFcXFxuVUNRQ0FCUlEwQUFrQUNRQUpBSUFBZ0FVc05BQ0FBSUFGSERRRU1BZ3NnQ0NBQmFpd0FBRUcvZjBvTkFRc2dDQ0FBSUFFZ0FFRzg2Y0FBXFxcbkVPUUxBQXNnQUNBQmF5RUZDeUFFSUFnZ0FXb2lCallDZUNBRUlBWWdCV28yQW53Z0JFRUlhaUFFUWZnQWFoQ01BaUFIUWY4QmNRMEVJQVxcXG5Rb0FneEJnSURFQUNBRUtBSUlHeUlGUVlDQXhBQkdEUU5CQVNFSFFRRWhCZ0pBSUFWQmdBRkpEUUJCQWlFR0lBVkJnQkJKRFFCQkEwRUVcXFxuSUFWQmdJQUVTUnNoQmdzZ0JpQUJhaUVCREFBTEN5QUVRU2hxSUFSQndBQnFJQVFvQW1nZ0JFSHNBR29vQWdBZ0JDZ0NjQ0FFUWZRQWFpXFxcbmdDQUNBRVFkd0FhaWdDQUVGL1JoQ1VBU0FFS0FJb0RRSU1BUXRCMGVuQUFFRURJQVVnQmhDbUNnMEJDeUFDSVFNTElBUkJnQUZxSkFBZ1xcXG5Bd3YvQXdFR2Z5TUFRVEJySWdJa0FBSkFBa0FDUUFKQUFrQUNRQ0FCS0FJRUlnTkZEUUFnQVNnQ0FDRUVJQU5CZjJwQi8vLy8vd0Z4SWdcXFxuTkJBV29pQlVFSGNTRUdBa0FDUUNBRFFRZFBEUUJCQUNFRklBUWhBd3dCQ3lBRVFUeHFJUU1nQlVINC8vLy9BM0VoQjBFQUlRVURRQ0FEXFxcbktBSUFJQU5CZUdvb0FnQWdBMEZ3YWlnQ0FDQURRV2hxS0FJQUlBTkJZR29vQWdBZ0EwRllhaWdDQUNBRFFWQnFLQUlBSUFOQlNHb29BZ1xcXG5BZ0JXcHFhbXBxYW1wcUlRVWdBMEhBQUdvaEF5QUhRWGhxSWdjTkFBc2dBMEZFYWlFREN3SkFJQVpGRFFBZ0EwRUVhaUVEQTBBZ0F5Z0NcXFxuQUNBRmFpRUZJQU5CQ0dvaEF5QUdRWDlxSWdZTkFBc0xBa0FnQVVFTWFpZ0NBRVVOQUNBRlFRQklEUUVnQlVFUVNTQUVLQUlFUlhFTkFTXFxcbkFGUVFGMElRVUxJQVVOQVF0QkFTRURRUUFoQlF3QkN5QUZRWDlNRFFGQkFDMEE4YVpQR2lBRlFRRVE5d3NpQTBVTkFnc2dBa0VBTmdJSVxcXG5JQUlnQlRZQ0JDQUNJQU0yQWdBZ0FpQUNOZ0lNSUFKQkVHcEJFR29nQVVFUWFpa0NBRGNEQUNBQ1FSQnFRUWhxSUFGQkNHb3BBZ0EzQXdcXFxuQWdBaUFCS1FJQU53TVFJQUpCREdwQnZQck5BQ0FDUVJCcUVHMUZEUUpCclB2TkFFRXpJQUpCS0dwQjRQdk5BRUdJL00wQUVNSUVBQXNRXFxcbmx3Z0FDMEVCSUFVUW1nMEFDeUFBSUFJcEF3QTNBZ0FnQUVFSWFpQUNRUWhxS0FJQU5nSUFJQUpCTUdva0FBdW5CQUVEZnlNQVFTQnJJZ1xcXG5Ja0FDQUNRUWhxSUFFb0FnQWlBeEMyQkFKQUFrQUNRQUpBSUFJdEFBZ05BQUpBSUFJdEFBa05BQ0FDUVFNMkFoQWdBeUFDUVJCcUVNNElcXFxuSVFFZ0FFRUJPZ0FBSUFBZ0FUWUNCQXdFQ3dKQUFrQUNRQ0FDTFFBS0lnUkJMRVlOQUFKQUlBUkIvUUJHRFFBZ0FTMEFCQTBDSUFKQkNEXFxcbllDRUNBRElBSkJFR29RemdnaEFTQUFRUUU2QUFBZ0FDQUJOZ0lFREFjTElBQkJnQWc3QVFBTUJnc2dBUzBBQkEwQUlBTWdBeWdDQ0VFQlxcXG5hallDQ0NBQ1FSQnFJQU1RdGdRQ1FDQUNMUUFRUlEwQUlBQWdBaWdDRkRZQ0JDQUFRUUU2QUFBTUJnc0NRQ0FDTFFBUlJRMEFJQUl0QUJcXFxuSWhCQXdDQ3lBQ1FRVTJBaEFnQXlBQ1FSQnFFTTRJSVFFZ0FFRUJPZ0FBSUFBZ0FUWUNCQXdGQ3lBQlFRQTZBQVFMQWtBQ1FDQUVRZjhCXFxcbmNTSUJRU0pHRFFBZ0FVSDlBRVlOQVNBQ1FSRTJBaEFnQXlBQ1FSQnFFTTRJSVFFZ0FFRUJPZ0FBSUFBZ0FUWUNCQXdGQ3lBRFFSUnFRUVxcXG5BMkFnQWdBeUFES0FJSVFRRnFOZ0lJSUFKQkVHb2dBeUFEUVF4cUVJMEJBa0FDUUNBQ0tBSVFRUUpIRFFBZ0FpZ0NGQ0VCREFFTElBSkJcXFxuQ0dvZ0FpZ0NGQ0FDS0FJWUVPZ0dJQUl0QUFoRkRRTWdBaWdDRENFQkN5QUFJQUUyQWdSQkFTRUJEQU1MSUFKQkZUWUNFQ0FESUFKQkVHXFxcbm9RemdnaEFTQUFRUUU2QUFBZ0FDQUJOZ0lFREFNTElBQWdBaWdDRERZQ0JDQUFRUUU2QUFBTUFnc2dBQ0FDTFFBSk9nQUJRUUFoQVFzZ1xcXG5BQ0FCT2dBQUN5QUNRU0JxSkFBTGh3UUJDWDhqQUVIZ0FHc2lBaVFBSUFBdEFBZ2hBeUFCTFFBZElRUWdBQzBBSFNFRklBRXRBQndoQmlcXFxuQUFMUUFjSVFjQ1FBSkFJQUFvQWdRaUNDQUJLQUlFSWdsSERRQWdCMEgvQVhFZ0JrSC9BWEZIRFFBZ0JVSC9BWEZCQWtjTkFDQUVRZjhCXFxcbmNVRUNSdzBBSUFOQi93RnhRUUpMSUFFdEFBaEJBMGx6UlEwQVFRRWhDaUFBS0FJQUlBZ2dBU2dDQUNBSUVLWUtEUUVMSUFBb0FnQWhDZ1xcXG5KQUlBTkIvd0Z4UVFaR0RRQWdBa0UzYWlBQVFSaHFLQUFBTmdBQUlBSkJNR29nQUVFUmFpa0FBRGNEQUNBQ0lBQkJDV29wQUFBM0F5Z0xcXFxuSUFKQkNHcEJFV29nQWtFb2FrRUlhaWtEQURjQUFDQUNRUWhxUVJocUlBSkJLR3BCRDJvb0FBQTJBQUFnQWlBQ0tRTW9Od0FSSUFJZ0JUXFxcbm9BSlNBQ0lBYzZBQ1FnQWlBRE9nQVFJQUlnQ0RZQ0RDQUNJQW8yQWdnZ0FpQUFMUUFlT2dBbUlBRW9BZ0FoQUFKQUlBRXRBQWdpQTBFR1xcXG5SZzBBSUFKQnlBQnFRUTlxSUFGQkdHb29BQUEyQUFBZ0FrSElBR3BCQ0dvZ0FVRVJhaWtBQURjREFDQUNJQUZCQ1dvcEFBQTNBMGdMSUFcXFxuSkJLR3BCRVdvZ0FrSElBR3BCQ0dvcEF3QTNBQUFnQWtFb2FrRVlhaUFDUWNnQWFrRVBhaWdBQURZQUFDQUNJQUlwQTBnM0FERWdBaUFFXFxcbk9nQkZJQUlnQmpvQVJDQUNJQU02QURBZ0FpQUpOZ0lzSUFJZ0FEWUNLQ0FDSUFFdEFCNDZBRVlnQWtFSWFpQUNRU2hxRUtrRUlRb0xJQVxcXG5KQjRBQnFKQUFnQ2d1UUJBSUhmd0YrSXdCQndBQnJJZ01rQUNBRElBSTJBaVFnQXlBQk5nSWdJQUlnQVdzaEJFRUFJUVZCQUNFR1FRQWhcXFxuQndOQVFRRWhDQUpBQWtBZ0EwRWdhaEN0Q0NJSlFYZHFRUUpKRFFBZ0NVRU5SZzBBQWtBQ1FBSkFBa0FnQ1VFalJnMEFJQWxCTDBZTkFDXFxcbkFKUVQ5R0RRQWdDVUdBZ01RQVJnMEFJQWxCM0FCSERRRUxJQU1nQWpZQ05DQURJQUUyQWpBZ0IwRUJjUTBCSUFNZ0JqWUNQQ0FESUFOQlxcXG5NR28yQWpnRFFDQURRVGhxRUlrS1FZQ0F4QUJIRFFBTElBTkJHR29nQVNBRUlBVkI5SXZCQUJDeEJpQURLQUljSVFrZ0F5Z0NHQ0VJREFcXFxuSUxRUUVoQ0NBR1FRRnFJUVlnQ1VHQUFVa05BMEVDSVFnZ0NVR0FFRWtOQTBFRFFRUWdDVUdBZ0FSSkd5RUlEQU1MSUFOQklHb2dBMEV3XFxcbmFpQUdFT3NHSUFNb0FpZ2hDU0FES0FJZ0lRZ0xBa0FDUUNBSUlBa1ExQW9OQUNBRFFSQnFJQWxCQUJEVkJDQURLQUlVSVFVZ0F5Z0NFQ1xcXG5BSUlBa1FwQTBoQ0NBQVFRRTZBQXdnQUNBSk5nSUlJQUFnQlRZQ0JDQUFJQWcyQWdBZ0FDQURMd0E0T3dBTklBQkJEMm9nQTBFNmFpMEFcXFxuQURvQUFDQUFJQU1wQXpBM0FoQWdCMEVCY1VVTkFTQURRU0JxRUlvTkRBRUxJQU5CQ0dwQkFFRUFFTlVFSUFNcEF3Z2hDaUFBSUFJMkFoXFxcblFnQUNBQk5nSVFJQUJCQURvQURDQUFRUUEyQWdnZ0FDQUtOd0lBSUFkQkFYRkZEUUFnQTBFZ2FoQ0tEUXNnQTBIQUFHb2tBQThMUVFFaFxcXG5Cd3NnQ0NBRmFpRUZEQUFMQzdvRUFRWi9Jd0JCZ0FGcklnSWtBQ0FDUVNCcUlBQWdBQ2dDQUNnQ0JCRUZBQ0FDSUFJb0FpUWlBRFlDTENcXFxuQUNJQUlvQWlBaUF6WUNLQUpBQWtBQ1FDQUJFS3NNRFFBZ0FrSHNBR3BDQVRjQ0FFRUJJUUFnQWtFQk5nSmtJQUpCL04zTkFEWUNZQ0FDXFxcblFmRUJOZ0kwSUFJZ0FrRXdhallDYUNBQ0lBSkJLR28yQWpBZ0FTQUNRZUFBYWhDdEJRMENJQUpCR0dvZ0FpZ0NLQ0FDS0FJc0tBSVlFUVxcXG5VQUlBSW9BaGdpQTBVTkFTQUNLQUljSVFRZ0FrSHNBR3BDQURjQ0FFRUJJUUFnQWtFQk5nSmtJQUpCcU4vTkFEWUNZQ0FDUWRUZHpRQTJcXFxuQW1nZ0FTQUNRZUFBYWhDdEJRMENJQUpCRUdvZ0F5QUVLQUlZRVFVQUlBSW9BaEFoQlNBQ1FRQTJBa0FnQWlBRU5nSTRJQUlnQXpZQ05DXFxcbkFDUVFBMkFqQWdCVUVBUnlFR0EwQWdBa0VJYWlBQ1FUQnFFTEFFQWtBZ0FpZ0NDQ0lBRFFBZ0FrRXdhaERoQ3d3REN5QUNLQUlNSVFRZ1xcXG5BaUFDS0FKQUlnZEJBV28yQWtBZ0FpQUVOZ0pNSUFJZ0FEWUNTQ0FDUVFFMkFtUWdBa0cwMzgwQU5nSmdJQUpDQURjQ2JDQUNRZFRkelFcXFxuQTJBbWdDUUNBQklBSkI0QUJxRUswRkRRQWdBa0VBT2dCY0lBSWdCallDVUNBQ0lBRTJBbGdnQWlBSElBTWdCUnNpQXpZQ1ZDQUNRUUUyXFxcbkFtUWdBa0g4M2MwQU5nSmdJQUpDQVRjQ2JDQUNRZkVCTmdKOElBSWdBa0g0QUdvMkFtZ2dBaUFDUWNnQWFqWUNlQ0FDUWRBQWFpQUNRZVxcXG5BQWFoREpCVVVOQVFzTElBSkJNR29RNFF0QkFTRUFEQUlMSUFNZ0FTQUFLQUlNRVFZQUlRQU1BUXRCQUNFQUN5QUNRWUFCYWlRQUlBQUxcXFxubkFRQkIzOGpBRUV3YXlJREpBQUNRQUpBQWtBRFFDQUJLQUlJSWdRZ0FTZ0NCQ0lGSUFRZ0JVc2JJUVlnQVNnQ0FDRUhJQVFoQ0FKQUFrXFxcbkFEUUNBR0lBaEdEUUVnQnlBSWFpMEFBQ0lKUWN6VndBQnFMUUFBRFFJZ0FTQUlRUUZxSWdnMkFnZ01BQXNMSUFVZ0JFa05CQ0FEUVFRMlxcXG5BaUFnQUNBQklBTkJJR29ReWdjTUF3c0NRQ0FKUWR3QVJnMEFJQWxCSWtZTkFpQUJJQWhCQVdvMkFnZ2dBMEVRTmdJZ0lBQWdBU0FEUVNcXFxuQnFFTW9IREFNTElBTkJHR29nQkNBSUlBY2dCVUg4MU1BQUVKUUhJQUlnQXlnQ0dDQURLQUljRUlFTUlBRWdDRUVCYWpZQ0NDQUJRUUVnXFxcbkFoQm1JZ2hGRFFBTElBQkJBallDQUNBQUlBZzJBZ1FNQVFzQ1FDQUNLQUlJUlEwQUlBTkJFR29nQkNBSUlBY2dCVUdjMWNBQUVKUUhJQVxcXG5JZ0F5Z0NFQ0FES0FJVUVJRU1RUUVoQmlBQklBaEJBV28yQWdnZ0EwRWdhaUFCSUFJb0FnQWdBaWdDQ0JEcUJnSkFBa0FnQXlnQ0lDSUlcXFxuUlEwQUlBQWdBeWdDSkRZQ0NDQUFJQWcyQWdRTUFRc2dBQ0FES0FJa05nSUVRUUloQmdzZ0FDQUdOZ0lBREFFTElBTkJDR29nQkNBSUlBXFxcbmNnQlVHTTFjQUFFSlFISUFNb0Fnd2hCaUFES0FJSUlRY2dBU0FJUVFGcU5nSUlJQU5CSUdvZ0FTQUhJQVlRNmdZQ1FBSkFJQU1vQWlBaVxcXG5DRVVOQUNBQUlBTW9BaVEyQWdnZ0FDQUlOZ0lFUVFBaENBd0JDeUFBSUFNb0FpUTJBZ1JCQWlFSUN5QUFJQWcyQWdBTElBTkJNR29rQUFcXFxuOExJQVlnQlVIczFNQUFFSUVGQUF1NEJBRURmeU1BUVRCcklnSWtBQ0FDUVJocUlBQWdBUkR5QVFKQUFrQUNRQUpBSUFJb0FoZ2lBdzBBXFxcbklBSkJDR29nQUNBQkVLQUVJQUlvQWdnaUFRMEJRUThoQVF3REN5QUNRUkJxSUFNZ0FpZ0NIQkNDQndKQUFrQUNRQ0FDS0FJUUlnTU5BQ1xcXG5BQ1FRQTJBaUFNQVFzZ0FrRWdhaUFESUFJb0FoUVFPeUFDS0FJZ0lnTU5BUXRCRHlFQkRBSUxBa0FDUUFKQUlBTWdBaWdDS0NJRVFjSHRcXFxud0FCQkFoQ21DZzBBSUFNZ0JFSEQ3Y0FBUVFNUXBnb05BU0FESUFSQnh1M0FBRUVERUtZS0RRSkJDaUVCSUFNZ0JFSEo3Y0FBUVFNUXBnXFxcbm9OQkVFQUlRRWdBeUFFUWN6dHdBQkJBaENtQ2cwRVFRRWhBU0FESUFSQnp1M0FBRUVERUtZS0RRUkJBaUVCSUFNZ0JFSFI3Y0FBUVFNUVxcXG5wZ29OQkVFRElRRWdBeUFFUWRUdHdBQkJBeENtQ2cwRVFRc2hBU0FESUFSQjErM0FBRUVFRUtZS0RRUkJEQ0VCSUFNZ0JFSGI3Y0FBUVFcXFxuUVFwZ29OQkVFTklRRWdBeUFFUWQvdHdBQkJDeENtQ2cwRVFRNUJEeUFESUFSQjZ1M0FBRUVERUtZS0d5RUJEQVFMSUFBZ0FVRUVRUWNRXFxcbmh3RkIvd0Z4SVFFTUF3c2dBQ0FCUVFWQkNCQ0hBVUgvQVhFaEFRd0NDeUFBSUFGQkJrRUpFSWNCUWY4QmNTRUJEQUVMSUFJZ0FTQUNLQVxcXG5JTUVJSUhBa0FDUUFKQUFrQWdBaWdDQUNJQkRRQWdBa0VBTmdJZ0RBRUxJQUpCSUdvZ0FTQUNLQUlFRURzZ0FpZ0NJQ0lCRFFFTFFROGhcXFxuQVF3QkMwRU5RUThnQVNBQ0tBSW9RZGZwd0FCQkRCQ21DaHNoQVFzZ0FrRWdhaERjQ3d3QkN5QUNRU0JxRU53TEN5QUNRVEJxSkFBZ0FRXFxcbnVYQkFFRGZ5TUFRU0JySWdJa0FDQUNRUWhxSUFFb0FnQWlBeEM2QkFKQUFrQUNRQUpBSUFJdEFBZ05BQUpBSUFJdEFBa05BQ0FDUVFNMlxcXG5BaEFnQXlBQ1FSQnFFTjBJSVFFZ0FFRUJPZ0FBSUFBZ0FUWUNCQXdFQ3dKQUFrQUNRQ0FDTFFBS0lnUkJMRVlOQUFKQUlBUkIvUUJHRFFcXFxuQWdBUzBBQkEwQ0lBSkJDRFlDRUNBRElBSkJFR29RM1FnaEFTQUFRUUU2QUFBZ0FDQUJOZ0lFREFjTElBQkJnQVk3QVFBTUJnc2dBUzBBXFxcbkJBMEFJQU1RZ3d3Z0FrRVFhaUFERUxvRUFrQWdBaTBBRUVVTkFDQUFJQUlvQWhRMkFnUWdBRUVCT2dBQURBWUxBa0FnQWkwQUVVVU5BQ1xcXG5BQ0xRQVNJUVFNQWdzZ0FrRUZOZ0lRSUFNZ0FrRVFhaERkQ0NFQklBQkJBVG9BQUNBQUlBRTJBZ1FNQlFzZ0FVRUFPZ0FFQ3dKQUFrQWdcXFxuQkVIL0FYRWlBVUVpUmcwQUlBRkIvUUJHRFFFZ0FrRVJOZ0lRSUFNZ0FrRVFhaERkQ0NFQklBQkJBVG9BQUNBQUlBRTJBZ1FNQlFzZ0F4XFxcbkNERENBRFFSUnFRUUEyQWdBZ0FrRVFhaUFESUFOQkRHb1F4Z0VDUUFKQUlBSW9BaEJCQWtjTkFDQUNLQUlVSVFFTUFRc2dBa0VJYWlBQ1xcXG5LQUlVSUFJb0FoZ1FvQWNnQWkwQUNFVU5BeUFDS0FJTUlRRUxJQUFnQVRZQ0JFRUJJUUVNQXdzZ0FrRVZOZ0lRSUFNZ0FrRVFhaERkQ0NcXFxuRUJJQUJCQVRvQUFDQUFJQUUyQWdRTUF3c2dBQ0FDS0FJTU5nSUVJQUJCQVRvQUFBd0NDeUFBSUFJdEFBazZBQUZCQUNFQkN5QUFJQUU2XFxcbkFBQUxJQUpCSUdva0FBdVhCQUVEZnlNQVFTQnJJZ0lrQUNBQ1FRaHFJQUVvQWdBaUF4QzZCQUpBQWtBQ1FBSkFJQUl0QUFnTkFBSkFJQVxcXG5JdEFBa05BQ0FDUVFNMkFoQWdBeUFDUVJCcUVOMElJUUVnQUVFQk9nQUFJQUFnQVRZQ0JBd0VDd0pBQWtBQ1FDQUNMUUFLSWdSQkxFWU5cXFxuQUFKQUlBUkIvUUJHRFFBZ0FTMEFCQTBDSUFKQkNEWUNFQ0FESUFKQkVHb1EzUWdoQVNBQVFRRTZBQUFnQUNBQk5nSUVEQWNMSUFCQmdBXFxcblE3QVFBTUJnc2dBUzBBQkEwQUlBTVFnd3dnQWtFUWFpQURFTG9FQWtBZ0FpMEFFRVVOQUNBQUlBSW9BaFEyQWdRZ0FFRUJPZ0FBREFZTFxcXG5Ba0FnQWkwQUVVVU5BQ0FDTFFBU0lRUU1BZ3NnQWtFRk5nSVFJQU1nQWtFUWFoRGRDQ0VCSUFCQkFUb0FBQ0FBSUFFMkFnUU1CUXNnQVVcXFxuRUFPZ0FFQ3dKQUFrQWdCRUgvQVhFaUFVRWlSZzBBSUFGQi9RQkdEUUVnQWtFUk5nSVFJQU1nQWtFUWFoRGRDQ0VCSUFCQkFUb0FBQ0FBXFxcbklBRTJBZ1FNQlFzZ0F4Q0REQ0FEUVJScVFRQTJBZ0FnQWtFUWFpQURJQU5CREdvUXhnRUNRQUpBSUFJb0FoQkJBa2NOQUNBQ0tBSVVJUVxcXG5FTUFRc2dBa0VJYWlBQ0tBSVVJQUlvQWhnUWtRb2dBaTBBQ0VVTkF5QUNLQUlNSVFFTElBQWdBVFlDQkVFQklRRU1Bd3NnQWtFVk5nSVFcXFxuSUFNZ0FrRVFhaERkQ0NFQklBQkJBVG9BQUNBQUlBRTJBZ1FNQXdzZ0FDQUNLQUlNTmdJRUlBQkJBVG9BQUF3Q0N5QUFJQUl0QUFrNkFBXFxcbkZCQUNFQkN5QUFJQUU2QUFBTElBSkJJR29rQUF2MUF3SUZmd0orSXdCQjBBQnJJZ1VrQUNBRklBTTJBZ2dnQVNnQ0RDRURJQVVnQlVFSVxcXG5hallDREFKQUFrQWdBeUFDYWlJQ0lBTlBEUUFnQlNBRUVMc0dJQVVvQWdRaEJpQUZLQUlBSVFNTUFRc0NRQUpBSUFJZ0FTZ0NCQ0lESUFcXFxuTkJBV29pQjBFRGRrRUhiQ0FEUVFoSkd5SURRUUYyVFEwQUlBVkJLR29nQVVFWUlBSWdBMEVCYWlJRElBSWdBMHNiSUFRUXhRUWdCU2dDXFxcbktDSUlSUTBCSUFWQkVHcEJGR29nQlVFb2FrRVVhaWdDQURZQ0FDQUZJQVVwQWpRM0Fod2dCU0FGS0FJd0lnWTJBaGdnQlNBRktBSXNOZ1xcXG5JVUlBVWdDRFlDRUVGb0lRSkJBQ0VEQTBBQ1FDQUhJQU5IRFFBZ0FTa0NBQ0VLSUFFZ0JTa0RFRGNDQUNBRlFSQnFRUWhxSWdNcEF3QWhcXFxuQ3lBRElBRkJDR29pQWlrQ0FEY0RBQ0FDSUFzM0FnQWdCU0FLTndNUUlBVkJFR29RNWdaQmdZQ0FnSGdoQXd3RUN3SkFJQUVvQWdBaUNTXFxcbkFEYWl3QUFFRUFTQTBBSUFWQkVHb2dCVUVNYWlBQklBTVFqZ29ReUFkQmFHd2dDR3BCYUdvaUJDQUpJQUpxSWdrcEFBQTNBQUFnQkVFUVxcXG5haUFKUVJCcUtRQUFOd0FBSUFSQkNHb2dDVUVJYWlrQUFEY0FBQXNnQTBFQmFpRURJQUpCYUdvaEFnd0FDd3NnQVNBRlFReHFRY1Nld0FcXFxuQkJHQkIwUVlHQWdJQjRJUU1NQVFzZ0JVRXdhaWdDQUNFR0lBVW9BaXdoQXdzZ0FDQUdOZ0lFSUFBZ0F6WUNBQ0FGUWRBQWFpUUFDNElFXFxcbkFnVi9BWDRqQUVHZ0FXc2lCU1FBSUFKQmdLTEFBRUVJRVBVTElRWWdCVUVJYWlBQ0VJUUlJQVZCT0dvZ0FTQUZLQUlJSUFVb0Fnd1FaeVxcXG5BRlFZQUJha0VJYWlJSElBVkJPR3BCQ0dvaUNDZ0NBRFlDQUNBRklBVXBBemczQTRBQkFrQUNRQUpBQWtBQ1FDQUZMUUJFSWdsQkFrWU5cXFxuQUNBRlFSQnFRUTlxSUFWQk9HcEJEMm90QUFBNkFBQWdCVUVRYWtFSWFpQUhLQUlBTmdJQUlBVWdCUzhBUlRzQUhTQUZJQVVwQTRBQk53XFxcbk1RSUFVZ0NUb0FIQ0FHUlEwQkRBTUxJQWdnQnlnQ0FEWUNBQ0FGSUFVcEE0QUJOd000SUFWQk9Hb1FzdzBoQVF3QkN5QUZRVGhxSUFWQlxcXG5FR29nQUNnQ21BRWdBRUdnQVdvb0FnQVFuUVVnQlVHQUFXb2dCU0FGS0FJNElBVW9Ba0FnQXlBRUVJc0RBa0FDUUNBRkxRQ0FBVUVFUmdcXFxuMEFJQVVwQTRBQklncEMvd0dEUWdSU0RRRUxJQVZCT0dvUTR3d01BZ3NnQlNBS053TWdJQVZCSUdvUXNBa2hBU0FGUVRocUVPTU1JQVZCXFxcbkVHb1E0Z3dMSUFJUWhRc01BUXNnQlVFb2FrRUlhaUFGUVJCcVFRaHFLUU1BTndNQUlBVWdCU2tERURjREtDQUZRVGhxSUFFUWxBVWdCVVxcXG5HQUFXcEJHR29nQWtFWWFpa0RBRGNEQUNBRlFZQUJha0VRYWlBQ1FSQnFLUU1BTndNQUlBVkJnQUZxUVFocUlBSkJDR29wQXdBM0F3QWdcXFxuQlNBQ0tRTUFOd09BQVNBQUlBVkJLR29nQlVFNGFpQUZRWUFCYWhBL1FRQWhBUXNnQlVHZ0FXb2tBQ0FCQzV3RUFnSi9BWDRqQUVIUUFXXFxcbnNpQkNRQUlBUkIwQUJxSUFJZ0F4Q2FDUUpBQWtBQ1FBSkFBa0FnQkNnQ1VDSURRUUpHRFFBZ0JDMEFWQ0VDSUFSQkNHcEJCWElnQkVIUVxcXG5BR3BCQlhKQnd3QVFwQTBhSUFRZ0Fqb0FEQ0FFSUFNMkFnZ2dCRUhRQUdvZ0FTQUVRUWhxRUswR0lBUW9BbEFpQTBVTkFTQUVJQVFwQTFcXFxuZzNBNkFCSUFRZ0JDZ0NWRFlDbkFFZ0JDQUROZ0tZQVNBRVFkQUFhaUFCSUFSQm1BRnFFUFlFSUFSQm1BRnFRUVJ5SVFNQ1FBSkFJQVFvXFxcbkFsQU5BQ0FFS0FKVUlnRU5BVUVBSVFFTUJRc2dCQ2dDVkNFQklBTVF6QXNnQkVFY2FoRGpEQXdEQ3lBRUlBUkIyQUJxS1FNQU53S3NBU1xcXG5BRUlBRTJBcWdCSUFSQnVBRnFJQVJCcUFGcUVJa0ZJQVFwQXJ3QklRWWdCQ2dDdUFFaEFTQUVMUURJQVNJQ1FRSkdEUU1nQkNnQ3hBRWhcXFxuQlNBRVFkQUFha0VUYWlBRVFiZ0Jha0VUYWkwQUFEb0FBQ0FFSUFRdkFNa0JPd0JoSUFRZ0Fqb0FZQ0FFSUFVMkFsd2dCQ0FHTndKVUlBXFxcblFnQVRZQ1VDQUVRZEFBYWhDMURTRUJJQU1RekFzZ0JFRWNhaERqREF3Q0N5QUVMUUJVRUxJTklRRU1BUXNnQkNnQ1ZDRUJJQVJCSEdvUVxcXG40d3dMSUFRZ0FUWUNERUVCSVFFTUFRc2dBeERNQ3lBRVFSeHFFT01NQWtBQ1FDQUJEUUJCZ0FFaEFRd0JDeUFFSUFZM0FsUWdCQ0FCTmdcXFxuSlFJQVJCMEFCcUVJZ0xJUUVMSUFRZ0FUWUNERUVBSVFFTElBUWdBVFlDQ0NBRUlBUkJDR29RdHdnZ0FDQUVLUU1BTndNQUlBUkIwQUZxXFxcbkpBQUw1Z01DRFg4QmZrRUFJQUVvQWdnaUIyc2hDQ0FGSUFFb0FoQWlDV3NoQ2lBQktBSWNJUXNnQVNrREFDRVVJQUVvQWhRaERBSkFBMFxcXG5CQkFDQUxJQVliSVEwZ0J5QUhJQXNnQnlBTFN4c2dCaHNpRGlBRklBNGdCVXNiSVE4Q1FBSkFBMEFDUUNBTUlBVnFJaEJCZjJvaUN5QURcXFxuU1EwQUlBRWdBellDRkVFQUlRc01CUXNDUUNBVUlBSWdDMm94QUFDSVFnR0RVQTBBSUFJZ0RHb2hFU0FPSVFzQ1FBTkFBa0FnRHlBTFJ3XFxcbjBBSUFjaEN3SkFBa0FDUUFOQUFrQWdEU0FMU1EwQUlBRWdFRFlDRkNBR1JRMENEQXNMSUF0QmYyb2lDeUFGVHcwQ0lBc2dER29pRWlBRFxcXG5UdzBESUFRZ0Myb3RBQUFnQWlBU2FpMEFBRVlOQUFzZ0FTQUpJQXhxSWd3MkFoUWdCZzBISUFvaEN3d0lDeUFCUVFBMkFod01DQXNnQ3lcXFxuQUZRY0Rvd0FBUWdRVUFDeUFTSUFOQjBPakFBQkNCQlFBTElBd2dDMm9nQTA4TkFTQVJJQXRxSVJJZ0JDQUxhaUVUSUF0QkFXb2hDeUFUXFxcbkxRQUFJQkl0QUFCR0RRQUxJQUVnQ0NBTWFpSVNJQXRxSWd3MkFoUWdCZzBDSUJJZ0Myb2hERUVBSVFzTUF3c2dBeUFPSUF4cUlnc2dBeVxcXG5BTFN4c2dBMEd3Nk1BQUVJRUZBQXNnQVNBUU5nSVVJQkFoRENBR0RRQUxRUUFoQ3lBUUlRd0xJQUVnQ3pZQ0hBd0JDd3NnQUNBTU5nSUVcXFxuSUFCQkNHb2dFRFlDQUVFQklRc0xJQUFnQ3pZQ0FBdTVCQUVDZndKQUFrQWdBRUdBWG1wQkUwa05BQ0FBUVlDb2ZXb2lBa0gvL3dOeFFSXFxcbnh3SVFNZ0FrR2oxd0JMRFFFZ0FVSFlYR3BCR2tzTkFTQUREUUVnQUNBQmFrSFpYR29QQ3lBQlFaOWRha0VVU3cwQUlBQkJ6QVJzSUFGQlxcXG5IR3hxUWVUeTNuNXFEd3NDUUFKQUlBRWdBSEpCZ0lBRVNRMEFRWUNBeEFBaEFnSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFcXFxuSkFJQUJCNTk1N2FnNERBUTRDQUFzQ1FDQUFRYy9kZTJvT0FnUUZBQXNDUUNBQVFjalVlMm9PQWdnSkFBc2dBRUdsb1FSR0RRSWdBRUhIXFxcbnBnUkdEUVVnQUVHNXFRUkdEUVlnQUVHMXNnUkhEUTFCdUxJRVFZQ0F4QUFnQVVHd3NnUkdHdzhMUVpxaEJFR0FnTVFBSUFGQnVxRUVSaFxcXG5zUEMwR2NvUVJCZ0lERUFDQUJRYnFoQkVZYkR3dEJxNkVFUVlDQXhBQWdBVUc2b1FSR0d3OExRYTZpQkVHQWdNUUFJQUZCcDZJRVJoc1BcXFxuQzBHdm9nUkJnSURFQUNBQlFhZWlCRVliRHd0Qnk2WUVRY3ltQkVHQWdNUUFJQUZCMTZZRVJoc2dBVUcrcGdSR0d3OExJQUZCeHRaN2FnXFxcbjRFQXdZR0JBSUxRYnFyQkVHQWdNUUFJQUZCcjZzRVJoc1BDMEc3cXdSQmdJREVBQ0FCUWErckJFWWJEd3NnQVVHd3FRUkhEUU5CdktrRVxcXG5Ed3RCdTZrRUR3dEJ2cWtFRHdzZ0FFRVFkQ0FCY2lJQUlBQkJ1ZlBkOFhsc0lBQkJwcktGaWdOc0lnRnpyVUtnQjM1Q0lJaW5RUUYwUWZcXFxuU2p4UUJxTHdFQWFrRzU4OTN4ZVd3Z0FYT3RRcUFIZmtJZ2lLZEJBM1FpQVVHNHNzVUFhaWdDQUVHQWdNUUFJQUZCdExMRkFHb29BZ0FnXFxcbkFFWWJJUUlMSUFJTG53UUJESDhqQUVFUWF5SUZKQUFnQTBGL2FpRUdJQVJCZjNNaEJ5QURJQVJxSVFnZ0FTZ0NBQ0VKUVFBaENpQURJUVxcXG5zRFFDQUtJUXhCQUNFTkFrQUNRQUpBQWtBRFFBSkFJQXNnRFdvaURpQUlSdzBBSUF3Z0JFWU5BaUFGSUFNZ0JDQU1RYnlDd0FBUTZnVWdcXFxuQUNBQklBVW9BZ0FnQlNnQ0JCQ2dDd3dEQ3lBTlFRRnFJUTBnRGkwQUFDSVBRWWJTd0FCcUxRQUFJZzVGRFFBTElBd2dEV29pQ2tGL2FpXFxcbklRSUF4TkRRTUNRQ0FNUlEwQUFrQWdEQ0FFU1EwQUlBd2dCRVlOQVF3RUN5QURJQXhxTEFBQVFVQklEUU1MQWtBQ1FDQVFJQVJKRFFBZ1xcXG5DaUFIYWcwRURBRUxJQVlnREdvZ0RXb3NBQUJCdjM5TURRTUxJQWtnQXlBTWFpQU5RWDlxRUlnTURBTUxJQUJCQkRvQUFBc2dCVUVRYWlcXFxuUUFEd3NnQXlBRUlBd2dEQ0FOYWtGL2FrR3Nnc0FBRU9RTEFBc2dDeUFOYWlFTEFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBT1FaSi9hZzRJXFxcbkFRY0hCd0lIQXdRQUN3SkFBa0FnRGtHZWYyb09CUVlJQ0FnQkFBdEIzWUxBQUNFTklBNUJJa1lOQmlBT1Fkd0FSdzBIUWR1Q3dBQWhEUVxcXG53R0MwSFhnc0FBSVEwTUJRdEIxWUxBQUNFTkRBUUxRZE9Dd0FBaERRd0RDMEhSZ3NBQUlRME1BZ3NnQlVIYzZzR0JBellBQ2lBRklBOUJcXFxuRDNGQjlOSEFBR290QUFBNkFBOGdCU0FQUVFSMlFmVFJ3QUJxTFFBQU9nQU9JQWtnQlVFS2FrRUdFSWdNREFNTFFkbUN3QUFoRFFzZ0NTXFxcbkFOUVFJUWlBd01BUXNMUVlxQXdBQkJLRUdjZ3NBQUVJTUhBQXY4QXdJRGZ3SitJd0JCMEFCcklnVWtBQUpBQWtBQ1FDQUNJQU1ReFFJTlxcXG5BQ0FGSUFGQkhHb3RBQUE2QUN3Z0JTQUJLQUFZTmdJb0lBVkJHR29nQWlBRElBVkJLR29nQVNBRUVEQkJBQ0VDSUFWQkVHb2dCRUVJYWlcXFxuSURLQUlBUVFBUTFRUWdBeWdDQUNFR0lBVXBBeEFoQ0NBRFFRQTJBZ0FnQlVFb2FrRUlhaUlESUFZMkFnQWdCQ2tDQUNFSklBUWdDRGNDXFxcbkFDQUZJQWszQXlnZ0FVRU1haEQyQnlBQlFSUnFJZ1lnQXlnQ0FEWUNBQ0FCSUFVcEF5ZzNBZ3dnQlVFb2FpQUJLQUlNSUFZb0FnQVFtUVxcXG5VZ0JTMEFHQ0VIREFFTElBUWdBaUFERUpNTUlBQkJDR3BCQURZQUFDQUFRZ0EzQUFBTUFRc0RRQ0FGUVFocUlBVkJLR29RbVFFQ1FDQUZcXFxuS0FJSUlnRU5BQ0FGSUFjNkFCZ2dBRUVJYWlBRlFSaHFRUWhxS0FJQU5nQUFJQUFnQlNrREdEY0FBQXdDQ3lBRktBSU1JUU1DUUNBQ1FRXFxcbkZ4UlEwQUlBUkJMaERnQkFzQ1FBSkFBa0FnQVNBREVKb0RSUTBBSUFRZ0FTQURFSk1NREFFTElBUW9BZ2doQmlBRVFleWl3UUJCQkJDVFxcXG5ERUVCSVFJZ0FTQUJJQU5xSUFRUWYwVU5Ba0VCSVFkQkFTRUNJQVFvQWdnaUFTQUdTUTBDQWtBZ0JrVU5BQUpBSUFFZ0Jrc05BQ0FCSUFcXFxuWkdEUUVNQXdzZ0JDZ0NBQ0FHYWl3QUFFRkFTQTBDQ3lBRUlBWTJBZ2hCQVNFSEMwRUJJUUlNQVFzTFFhQ2N3UUJCTUVHY25jRUFFSU1IXFxcbkFBc2dCVUhRQUdva0FBdmZBd0lGZndWK0l3QkI0QUJySWdNa0FDQURRVGhxSWdSQ0FEY0RBQ0FEUVJocUlnVWdBQ2tEQ0NJSVF2UEswY1xcXG51bmpObXk5QUNGTndNQUlBTkJFR29pQmlBSVF1M2VrZk9Xek55MzVBQ0ZOd01BSUFOQkNHb2lCeUFBS1FNQUlnbEM0ZVNWODliczJienNcXFxuQUlVM0F3QWdBMElBTndNd0lBTWdDRGNES0NBRElBazNBeUFnQXlBSlF2WEt6WVBYck51Mzh3Q0ZOd01BSUFNZ0FTQUNFTGdDSUFOQi93XFxcbkU2QUVBZ0F5QURRY0FBYWtFQkVMZ0NJQU5Cd0FCcVFSQnFJZ0FnQmlrREFEY0RBQ0FEUWNBQWFrRUlhaUlDSUFjcEF3QTNBd0FnQTBIQVxcXG5BR3BCR0dvaUFTQUVOUUlBUWppR0lBTXBBekNFSWdvZ0JTa0RBSVUzQXdBZ0F5QURLUU1BTndOQUlBTkJ3QUJxRUk4RklBQXBBd0FoQ0NcXFxuQURLUU5BSVFzZ0Fpa0RBQ0VNSUFFcEF3QWhDU0FEUWVBQWFpUUFJQWtnREVML0FZVjhJZ3dnQ0VJTmlTQUlJQXNnQ29WOElnaUZJZ3A4XFxcbklnc2dDa0lSaVlVaUNrSU5pU0FKUWhDSklBeUZJZ2tnQ0VJZ2lYd2lDQ0FLZkNJS2hTSU1RaEdKSUFsQ0ZZa2dDSVVpQ0NBTFFpQ0pmQ1xcXG5JSklBeDhJZ3VGSWd4Q0RZa2dDRUlRaVNBSmhTSUlJQXBDSUlsOElna2dESHlGSWdwQ0VZa2dDRUlWaVNBSmhTSUlJQXRDSUlsOElna2dcXFxuQ253aUNrSWdpWVVnQ0VJUWlTQUpoVUlWaVlVZ0NvVUw0QU1CQ1g4akFFRVFheUlDSkFBQ1FBSkFJQUV0QUNWRkRRQkJBQ0VEREFFTElBXFxcbkZCR0dvaEJDQUJLQUlFSWdVaEJnTkFBa0FDUUFKQUlBRW9BaEFpQXlBQktBSU1JZ2RKSUFNZ0FTZ0NDRXR5SWdnTkFFRUFJQVlnQjJvZ1xcXG5DQnNoQmlBQktBSVVJQVJxUVg5cUxRQUFJUWtDUUFKQUlBb2dBeUFIYXlBSUd5SUtRUWRMRFFCQkFDRUhRUUFoQXdOQUFrQWdDaUFEUndcXFxuMEFJQW9oQXd3REN3SkFJQVlnQTJvdEFBQWdDVUgvQVhGSERRQkJBU0VIREFNTElBTkJBV29oQXd3QUN3c2dBa0VJYWlBSklBWWdDaEQ5XFxcbkFTQUNLQUlNSVFNZ0FpZ0NDQ0VIQ3dKQUlBZEJBVWNOQUNBQklBTWdBU2dDREdwQkFXb2lBellDRENBRElBRW9BaFFpQmtrTkF5QURJQVxcXG5Fb0FnaE5EUUlNQXdzZ0FTQUJLQUlRTmdJTUMwRUFJUU1DUUNBQkxRQWxSUTBBREFRTElBRkJBVG9BSlNBQktBSWNJUVlnQVNnQ0lDRUpcXFxuQWtBZ0FTMEFKQTBBSUFrZ0JrWU5CQXNnQ1NBR2F5RUtJQUVvQWdRZ0Jtb2hBd3dEQ3lBQktBSUVJUWtnQWlBR0lBUkJCRUhnbnNFQUVOXFxcbjBKSUFrZ0F5QUdheUlEYWlBR0lBSW9BZ0FnQWlnQ0JCQ21Da1VOQUNBQktBSWNJUVlnQVNBQktBSU1OZ0ljSUFNZ0Jtc2hDaUFGSUFacVxcXG5JUU1NQWdzZ0FTZ0NCQ0VHREFBTEN5QUFJQW8yQWdRZ0FDQUROZ0lBSUFKQkVHb2tBQXZ2QXdJR2Z3RitJd0JCSUdzaUF5UUFJQU5CQ0dcXFxub2dBUkRUQmdKQUFrQUNRQUpBSUFNdEFBZ05BQ0FETFFBSkRRSWdBMEVGTmdJUUlBRWdBMEVRYWhEUENDRUVEQUVMSUFNb0Fnd2hCQXNnXFxcbkFFSUROd01BSUFBZ0JEWUNDQXdCQ3dKQUFrQWdBeTBBQ2lJRlFmOEJjVUV3UncwQUFrQWdBU2dDQ0NJRUlBRW9BZ1JQRFFBZ0FTZ0NBQ1xcXG5BRWFpMEFBRUZRYWtIL0FYRkJDa2tOQWdzZ0FDQUJJQUpDQUJDK0Fnd0NDd0pBSUFWQlQycEIvd0Z4UVFsSkRRQWdBMEVOTmdJUUlBRWdcXFxuQTBFUWFoRFBDQ0VFSUFCQ0F6Y0RBQ0FBSUFRMkFnZ01BZ3NnQVNnQ0NDSUVJQUVvQWdRaUJpQUVJQVpMR3lFSElBVkJVR3F0UXY4Qmd5XFxcbkVKSUFFb0FnQWhDQU5BQWtBQ1FDQUhJQVJHRFFBZ0NDQUVhaTBBQUVGUWFpSUZRZjhCY1NJR1FRcEpEUUVMSUFBZ0FTQUNJQWtRdmdJTVxcXG5Bd3NDUUFKQUlBbENtYlBtekptejVzd1pWQTBBSUFsQ21iUG16Sm16NXN3WlVnMEJJQVpCQlVzTkFRc2dBU0FFUVFGcUlnUTJBZ2dnQ1VcXFxuSUtmaUFGclVML0FZTjhJUWtNQVFzTElBTkJFR29nQVNBQ0lBa1Fqd01DUUFKQUlBTW9BaEFOQUNBQUlBTXJBeGc1QXdoQ0FDRUpEQUVMXFxcbklBQWdBeWdDRkRZQ0NFSURJUWtMSUFBZ0NUY0RBQXdCQ3lBRFFRMDJBaEFnQVNBRFFSQnFFTTRJSVFRZ0FFSUROd01BSUFBZ0JEWUNDQVxcXG5zZ0EwRWdhaVFBQys4REFnWi9BWDRqQUVFZ2F5SURKQUFnQTBFSWFpQUJFTmdHQWtBQ1FBSkFBa0FnQXkwQUNBMEFJQU10QUFrTkFpQURcXFxuUVFVMkFoQWdBU0FEUVJCcUVOOElJUVFNQVFzZ0F5Z0NEQ0VFQ3lBQVFnTTNBd0FnQUNBRU5nSUlEQUVMQWtBQ1FDQURMUUFLSWdWQi93XFxcbkZ4UVRCSERRQUNRQ0FCS0FJSUlnUWdBU2dDQkU4TkFDQUJLQUlBSUFScUxRQUFRVkJxUWY4QmNVRUtTUTBDQ3lBQUlBRWdBa0lBRUw4Q1xcXG5EQUlMQWtBZ0JVRlBha0gvQVhGQkNVa05BQ0FEUVEwMkFoQWdBU0FEUVJCcUVOOElJUVFnQUVJRE53TUFJQUFnQkRZQ0NBd0NDeUFCS0FcXFxuSUlJZ1FnQVNnQ0JDSUdJQVFnQmtzYklRY2dCVUZRYXExQy93R0RJUWtnQVNnQ0FDRUlBMEFDUUFKQUlBY2dCRVlOQUNBSUlBUnFMUUFBXFxcblFWQnFJZ1ZCL3dGeElnWkJDa2tOQVFzZ0FDQUJJQUlnQ1JDL0Fnd0RDd0pBQWtBZ0NVS1pzK2JNbWJQbXpCbFVEUUFnQ1VLWnMrYk1tYlxcXG5QbXpCbFNEUUVnQmtFRlN3MEJDeUFCSUFSQkFXb2lCRFlDQ0NBSlFncCtJQVd0UXY4Qmczd2hDUXdCQ3dzZ0EwRVFhaUFCSUFJZ0NSQ1FcXFxuQXdKQUFrQWdBeWdDRUEwQUlBQWdBeXNER0RrRENFSUFJUWtNQVFzZ0FDQURLQUlVTmdJSVFnTWhDUXNnQUNBSk53TUFEQUVMSUFOQkRUXFxcbllDRUNBQklBTkJFR29RM1FnaEJDQUFRZ00zQXdBZ0FDQUVOZ0lJQ3lBRFFTQnFKQUFMaEFRQkJIOGpBRUdBQVdzaUF5UUFBa0FDUUNBQlxcXG5JQUpCMndBUTJBY05BQ0FEUVFBMkFtZ2dBeUFCTmdKZ0lBTWdBVFlDV0NBRElBSTJBbHdnQXlBQklBSnFOZ0prSUFOQjRBQnFJUVFDUUFcXFxuSkFBMEFnQTBFUWFpQUVFTjBFQWtBZ0F5Z0NGQ0lGUVZGcUlnWkJFVXNOQUVFQklBWjBRWUhRRG5FTkFnc0NRQ0FGUVExTERRQkJBU0FGXFxcbmRFR0J6QUJ4RFFJTElBVkJwWDlxUVFSSkRRRUNRQ0FGUVdCcURnUUNBUUVDQUFzZ0JVSDhBRVlOQVNBRlFZQ0F4QUJIRFFBTElBTkJqSVxcXG5mQkFEWUNRQ0FESUFJMkFqd2dBeUFCTmdJNElBTkJBRFlDVUNBRFFnRTNBMGdnQTBIWUFHb2dBMEhJQUdwQjdJREJBQkRMQ0NBRFFUaHFcXFxuSUFOQjJBQnFFT2NGRFFFZ0EwRWphaUFEUWNnQWFrRUlhaWdDQURZQUFDQURJQU1wQTBnM0FCc2dBRUVBT2dBQUlBQWdBeWtBR0RjQUFTXFxcbkFBUVFocUlBTkJIMm9wQUFBM0FBQU1Bd3NnQUVHRENqc0JBQXdDQzBHRWdjRUFRVGNnQTBFWWFrRzhnY0VBUVppQ3dRQVF3Z1FBQ3dKQVxcXG5JQUVnQWtIZEFCRFpCMFVOQUNBRFFRaHFJQUVnQWtFQklBSkJmMnBCL0liQkFCQ21CaUFEUWRnQWFpQURLQUlJSUFNb0Fnd1FSd0pBQWtcXFxuQWdBeTBBV0EwQUlBQWdBeWtBV1RjQUFTQUFRUWxxSUFOQjJBQnFRUWxxS1FBQU53QUFRUUloQlF3QkN5QUFJQU10QUZrNkFBRkJBeUVGXFxcbkN5QUFJQVU2QUFBTUFRc2dBRUdEQ0RzQkFBc2dBMEdBQVdva0FBdnhBd0VIZnlNQVFkQUZheUlESkFBZ0F5QUNPZ0FVSUFNZ0FUWUNFQ1xcXG5BREVOQUlJQU5CUEdwQ0FEY0NBQ0FEUVRScVFvQ0FnSUNBQVRjQ0FDQURRU3hxUWdBM0FnQWdBMEdBZzhBQU5nSW9JQU1nQXlrRENEY0RcXFxuSUNBRElBTXBBd0EzQXhnZ0EwSElBR3BCd0FCcUlRUWdBMEdvQW1wQkNHb2hCU0FEUWVnRGFrRUlhaUVHSUFOQjRBUnFRY0FBYWlFSElBXFxcbk5CNkFOcVFRUnlJUWdnQTBHZ0EycEJCSEloQ1FKQUFrQUNRQUpBQTBBZ0EwR2dBMm9nQTBFUWFoQ3ZBUUpBQWtBZ0F5Z0NvQU1pQWtGK1xcXG5hZzRDQVFNQUN5QURJQUkyQXVnRElBZ2dDVUhFQUJDa0RSb2dBMEd3QkdvZ0EwRVFhaERZQ1FKQUlBTW9Bc0FFRFFBZ0F5Z0NzQVFoQWlcXFxuQURRZndEYWhEakRBd0VDeUFISUFOQnNBUnFRVEFRcEEwYUlBTW9BdXdESVFFZ0EwSGdCR29nQmtIQUFCQ2tEUm9nQTBHNEFXb2dBMEhnXFxcbkJHcEI4QUFRcEEwYUN5QURRY2dBYWlBRFFiZ0Jha0h3QUJDa0RSb2dBa0VDUmcwRElBTWdBVFlDckFJZ0F5QUNOZ0tvQWlBRklBTkJ5QVxcXG5CcVFjQUFFS1FOR2lBRFFmQUNhaUFFUVRBUXBBMGFJQU5CNEFScUlBTkJHR29nQTBHb0Ftb2dBMEh3QW1vUXdBZ2dBMEhnQkdvUTFBc01cXFxuQUFzTElBTW9BcVFESVFJTElBQkJBRFlDRUNBQUlBSTJBZ0FnQTBFWWFoRGFDZ3dCQ3lBQUlBTkJHR3BCTUJDa0RSb0xJQU5CMEFWcUpBXFxcbkFMK2dNQkJIOGpBRUVnYXlJREpBQUNRQUpBSUFJTkFFRUNJUVFNQVFzQ1FBSkFBa0FDUUNBQklBSkIxSWZCQUVFQ0VONEdEUUFnQVNBQ1xcXG5RZGFId1FCQkFoRGVCZzBBSUFKQkFVME5BaUFCSUFKQk1CRFlCMFVOQWlBRFFRaHFRUUVnQVNBQ1FlaUh3UUFRK1FWQkNDRUZJQU1vQWdcXFxud2hBaUFES0FJSUlRRU1BUXNnQTBFQ0lBRWdBa0hZaDhFQUVQa0ZRUkFoQlNBREtBSUVJUUlnQXlnQ0FDRUJDMEVBSVFZQ1FDQUNEUUJCXFxcbkFTRUVEQU1MUVFJaEJBSkFJQVZCRUVZTkFDQUZRUWhIRFFNZ0F5QUJOZ0lRSUFNZ0FTQUNhallDRkFOQUFrQWdBMEVRYWhDdENDSUZRWVxcXG5DQXhBQkhEUUJCQ0NFRkRBUUxJQU1nQlRZQ0hFSDRoOEVBSUFOQkhHb1E4d2RGRFFRTUFBc0xJQU1nQVRZQ0VDQURJQUVnQW1vMkFoUURcXFxuUUFKQUlBTkJFR29RclFnaUJVR0FnTVFBUncwQVFSQWhCUXdEQ3lBRElBVTJBaHhCeUlmQkFDQURRUnhxRVBNSERRQkJoSWpCQUNBRFFSXFxcbnhxRVBNSERRQkJrSWpCQUNBRFFSeHFFUE1IUlEwRERBQUxDeUFESUFFMkFoQWdBeUFCSUFKcU5nSVVBMEFDUUNBRFFSQnFFSzBJSWdWQlxcXG5nSURFQUVjTkFFRUtJUVVNQWdzZ0F5QUZOZ0ljUWNpSHdRQWdBMEVjYWhEekJ3MEFDMEVDSVFSQkFDRUdEQUVMSUFOQkVHb2dBU0FDSUFcXFxuVVE0QXdnQXlnQ0ZDRUdJQU10QUJCRklRUUxJQUFnQmpZQ0JDQUFJQVEyQWdBZ0EwRWdhaVFBQytNREFnaC9BbjRqQUVIZ0FXc2lBaVFBXFxcbklBSWdBVFlDQ0FKQUlBQW9BZ0FpQVVVTkFDQUFLQUlFSVFNZ0FpQUNRUWhxTmdJTUlBSkIrQUJxSVFRZ0FrSG9BR3BCREdvaEJRTkFJQVxcXG5GQkFDQUJJQU5ISWdZYklnZEZEUUVnQmtFSGRDRUdBa0FnQjBISUFHb2lDRUdBb3NBQVFRZ1F6QWdOQUFKQUFrQWdDRUdkcE1BQVFRd1FcXFxuK2dRaUNBMEFRUUFoQ0F3QkN5QUlLQUlJSVFrZ0NDZ0NBQ0VJQ3lBQ1FlZ0FhaUFISUFnZ0NSQm5JQUpCMkFCcUlBSkI2QUJxRUp3SUlBXFxcbkl0QUdSQkFrWU5BQ0FDUVJCcVFRaHFJQUpCMkFCcVFRaHFLUU1BSWdvM0F3QWdBaUFDS1FOWUlnczNBeEFnQWtIQUFXb2dDNmNnQ3FkQlxcXG5zS2ZBQUVFQkVFNGdBa0hRQVdvZ0FrSEFBV29RMXdvZ0JTQUhFSlFGSUFKQjZBQnFRUWhxSWdjZ0FrSFFBV3BCQ0dvaUNDZ0NBRFlDQUNcXFxuQUNJQUlwQTlBQk53Tm9JQUpCRUdvUTRnd2dDQ0FIS0FJQU5nSUFJQUlnQWlrRGFEY0QwQUVnQWlnQ2RDRUpJQUpCRUdvZ0JFSEVBQkNrXFxcbkRSb2dDVUVDUmcwQUlBY2dDQ2dDQURZQ0FDQUNJQUlwQTlBQk53Tm9JQVFnQWtFUWFrSEVBQkNrRFJvZ0FpQUpOZ0owSUFKQkRHb2dBa1xcXG5Ib0FHb1F6UWdMSUFFZ0Jtb2hBUXdBQ3dzQ1FDQUFLQUlJSWdGRkRRQWdBU0FBUVF4cUtBSUFJQUlvQWdnUTZBTUxJQUpCNEFGcUpBQUxcXFxuMUFNQkIzOGpBRUVnYXlJRkpBQkJBU0VHSUFFZ0FTZ0NDQ0lIUVFGcUlnZzJBZ2dDUUNBSUlBRW9BZ1JQRFFCQkFTRUdBa0FDUUNBQktBXFxcbklBSUFocUxRQUFRVlZxRGdNQkFnQUNDMEVBSVFZTElBRWdCMEVDYWpZQ0NBc2dCVUVJYWlBQkVOTUdBa0FDUUFKQUFrQWdCUzBBQ0EwQVxcXG5JQVV0QUFrTkFpQUZRUVUyQWhBZ0FTQUZRUkJxRU04SUlRZ01BUXNnQlNnQ0RDRUlDeUFBUVFFMkFnQWdBQ0FJTmdJRURBRUxBa0FnQlNcXFxuMEFDa0ZRYWtIL0FYRWlCMEVLU1EwQUlBVkJEVFlDRUNBQklBVkJFR29RendnaENDQUFRUUUyQWdBZ0FDQUlOZ0lFREFFTElBRW9BZ2dpXFxcbkNDQUJLQUlFSWdrZ0NDQUpTeHNoQ2lBQktBSUFJUXNDUUFKQUFrQURRQUpBQWtBZ0NpQUlSZzBBSUFzZ0NHb3RBQUJCVUdwQi93RnhJZ1xcXG5sQkNra05BUXNnQmcwQ0lBUWdCMnNpQ0VFZmRVR0FnSUNBZUhNZ0NDQUhRUUJLSUFnZ0JFaHpHeUVJREFNTElBRWdDRUVCYWlJSU5nSUlcXFxuQWtBZ0IwSE1tYlBtQUVnTkFDQUhRY3lacytZQVJ3MEVJQWxCQjBzTkJBc2dCMEVLYkNBSmFpRUhEQUFMQ3lBRUlBZHFJZ2hCSDNWQmdJXFxcbkNBZ0hoeklBZ2dCMEVBU0NBSUlBUkljeHNoQ0FzZ0FDQUJJQUlnQXlBSUVNY0NEQUVMSUFBZ0FTQUNJQU5RSUFZUXlnTUxJQVZCSUdva1xcXG5BQXZyQXdFRGZ5TUFRU0JySWdJa0FDQUNRUWhxSUFFb0FnQWlBeEMyQkFKQUFrQWdBaTBBQ0EwQUFrQWdBaTBBQ1EwQUlBSkJBellDRUNcXFxuQURJQUpCRUdvUXpnZ2hBU0FBUVFFMkFnQWdBQ0FCTmdJRURBSUxBa0FDUUFKQUlBSXRBQW9pQkVFc1JnMEFBa0FnQkVIOUFFWU5BQ0FCXFxcbkxRQUVEUUlnQWtFSU5nSVFJQU1nQWtFUWFoRE9DQ0VCSUFCQkFUWUNBQ0FBSUFFMkFnUU1CUXNnQUVJQU53SUFEQVFMSUFFdEFBUU5BQ1xcXG5BRElBTW9BZ2hCQVdvMkFnZ2dBa0VRYWlBREVMWUVBa0FnQWkwQUVFVU5BQ0FBSUFJb0FoUTJBZ1FnQUVFQk5nSUFEQVFMQWtBZ0FpMEFcXFxuRVVVTkFDQUNMUUFTSVFRTUFnc2dBa0VGTmdJUUlBTWdBa0VRYWhET0NDRUJJQUJCQVRZQ0FDQUFJQUUyQWdRTUF3c2dBVUVBT2dBRUN3XFxcbkpBQWtBZ0JFSC9BWEVpQVVFaVJnMEFJQUZCL1FCR0RRRWdBa0VSTmdJUUlBTWdBa0VRYWhET0NDRUJJQUJCQVRZQ0FDQUFJQUUyQWdRTVxcXG5Bd3NnQWtFUWFpQURFTHdGQWtBQ1FDQUNLQUlRUlEwQUlBQWdBaWtERURjQ0JDQUFRUXhxSUFKQkdHb29BZ0EyQWdCQkFDRUJEQUVMSUFcXFxuQWdBaWdDRkRZQ0JFRUJJUUVMSUFBZ0FUWUNBQXdDQ3lBQ1FSVTJBaEFnQXlBQ1FSQnFFTTRJSVFFZ0FFRUJOZ0lBSUFBZ0FUWUNCQXdCXFxcbkN5QUFJQUlvQWd3MkFnUWdBRUVCTmdJQUN5QUNRU0JxSkFBTDJBTUNCSDhDZmlNQVFkQUFheUlGSkFBZ0JTQUROZ0lJSUFFb0Fnd2hBeVxcXG5BRklBVkJDR28yQWd3Q1FBSkFJQU1nQW1vaUFpQURUdzBBSUFVZ0JCQzdCaUFGS0FJRUlRWWdCU2dDQUNFRERBRUxBa0FDUUNBQ0lBRW9cXFxuQWdRaUF5QURRUUZxSWdkQkEzWkJCMndnQTBFSVNSc2lBMEVCZGswTkFDQUZRU2hxSUFGQjFBQWdBaUFEUVFGcUlnTWdBaUFEU3hzZ0JCXFxcbkRGQkNBRktBSW9JZ2hGRFFFZ0JVRVFha0VVYWlBRlFTaHFRUlJxS0FJQU5nSUFJQVVnQlNrQ05EY0NIQ0FGSUFVb0FqQWlCallDR0NBRlxcXG5JQVVvQWl3MkFoUWdCU0FJTmdJUVFheC9JUUpCQUNFREEwQUNRQ0FISUFOSERRQWdBU2tDQUNFSklBRWdCU2tERURjQ0FDQUZRUkJxUVFcXFxuaHFJZ01wQXdBaENpQURJQUZCQ0dvaUFpa0NBRGNEQUNBQ0lBbzNBZ0FnQlNBSk53TVFJQVZCRUdvUTVnWkJnWUNBZ0hnaEF3d0VDd0pBXFxcbklBRW9BZ0FpQkNBRGFpd0FBRUVBU0EwQUlBVkJFR29nQlVFTWFpQUJJQU1RalFvUXlBZEJySDlzSUFocVFheC9haUFFSUFKcVFkUUFFS1xcXG5RTkdnc2dBMEVCYWlFRElBSkJySDlxSVFJTUFBc0xJQUVnQlVFTWFrR3Nuc0FBUWRRQUVIUkJnWUNBZ0hnaEF3d0JDeUFGUVRCcUtBSUFcXFxuSVFZZ0JTZ0NMQ0VEQ3lBQUlBWTJBZ1FnQUNBRE5nSUFJQVZCMEFCcUpBQUwxQU1CQjM4akFFRWdheUlGSkFCQkFTRUdJQUVnQVNnQ0NDXFxcbklIUVFGcUlnZzJBZ2dDUUNBSUlBRW9BZ1JQRFFCQkFTRUdBa0FDUUNBQktBSUFJQWhxTFFBQVFWVnFEZ01CQWdBQ0MwRUFJUVlMSUFFZ1xcXG5CMEVDYWpZQ0NBc2dCVUVJYWlBQkVOZ0dBa0FDUUFKQUFrQWdCUzBBQ0EwQUlBVXRBQWtOQWlBRlFRVTJBaEFnQVNBRlFSQnFFTjhJSVFcXFxuZ01BUXNnQlNnQ0RDRUlDeUFBUVFFMkFnQWdBQ0FJTmdJRURBRUxBa0FnQlMwQUNrRlFha0gvQVhFaUIwRUtTUTBBSUFWQkRUWUNFQ0FCXFxcbklBVkJFR29RM3dnaENDQUFRUUUyQWdBZ0FDQUlOZ0lFREFFTElBRW9BZ2dpQ0NBQktBSUVJZ2tnQ0NBSlN4c2hDaUFCS0FJQUlRc0NRQVxcXG5KQUFrQURRQUpBQWtBZ0NpQUlSZzBBSUFzZ0NHb3RBQUJCVUdwQi93RnhJZ2xCQ2trTkFRc2dCZzBDSUFRZ0Iyc2lDRUVmZFVHQWdJQ0FcXFxuZUhNZ0NDQUhRUUJLSUFnZ0JFaHpHeUVJREFNTElBRWdDRUVCYWlJSU5nSUlBa0FnQjBITW1iUG1BRWdOQUNBSFFjeVpzK1lBUncwRUlBXFxcbmxCQjBzTkJBc2dCMEVLYkNBSmFpRUhEQUFMQ3lBRUlBZHFJZ2hCSDNWQmdJQ0FnSGh6SUFnZ0IwRUFTQ0FJSUFSSWN4c2hDQXNnQUNBQlxcXG5JQUlnQXlBSUVNa0NEQUVMSUFBZ0FTQUNJQU5RSUFZUXpRTUxJQVZCSUdva0FBdnJBd0VEZnlNQVFTQnJJZ0lrQUNBQ1FRaHFJQUVvQWdcXFxuQWlBeEM2QkFKQUFrQWdBaTBBQ0EwQUFrQWdBaTBBQ1EwQUlBSkJBellDRUNBRElBSkJFR29RM1FnaEFTQUFRUUUyQWdBZ0FDQUJOZ0lFXFxcbkRBSUxBa0FDUUFKQUlBSXRBQW9pQkVFc1JnMEFBa0FnQkVIOUFFWU5BQ0FCTFFBRURRSWdBa0VJTmdJUUlBTWdBa0VRYWhEZENDRUJJQVxcXG5CQkFUWUNBQ0FBSUFFMkFnUU1CUXNnQUVJQU53SUFEQVFMSUFFdEFBUU5BQ0FESUFNb0FnaEJBV28yQWdnZ0FrRVFhaUFERUxvRUFrQWdcXFxuQWkwQUVFVU5BQ0FBSUFJb0FoUTJBZ1FnQUVFQk5nSUFEQVFMQWtBZ0FpMEFFVVVOQUNBQ0xRQVNJUVFNQWdzZ0FrRUZOZ0lRSUFNZ0FrXFxcbkVRYWhEZENDRUJJQUJCQVRZQ0FDQUFJQUUyQWdRTUF3c2dBVUVBT2dBRUN3SkFBa0FnQkVIL0FYRWlBVUVpUmcwQUlBRkIvUUJHRFFFZ1xcXG5Ba0VSTmdJUUlBTWdBa0VRYWhEZENDRUJJQUJCQVRZQ0FDQUFJQUUyQWdRTUF3c2dBa0VRYWlBREVMOEZBa0FDUUNBQ0tBSVFSUTBBSUFcXFxuQWdBaWtERURjQ0JDQUFRUXhxSUFKQkdHb29BZ0EyQWdCQkFDRUJEQUVMSUFBZ0FpZ0NGRFlDQkVFQklRRUxJQUFnQVRZQ0FBd0NDeUFDXFxcblFSVTJBaEFnQXlBQ1FSQnFFTjBJSVFFZ0FFRUJOZ0lBSUFBZ0FUWUNCQXdCQ3lBQUlBSW9BZ3cyQWdRZ0FFRUJOZ0lBQ3lBQ1FTQnFKQVxcXG5BTDVBTUJBMzhqQUVFd2F5SUNKQUFnQWtFSWFpQUJLQUlBSWdNUXRnUUNRQUpBSUFJdEFBZ05BQUpBSUFJdEFBa05BQ0FDUVFJMkFoQWdcXFxuQXlBQ1FSQnFFTTRJSVFFZ0FFRUJOZ0lBSUFBZ0FUWUNCQXdDQ3dKQUFrQUNRQ0FDTFFBS0lnUkJMRVlOQUFKQUlBUkIzUUJHRFFBZ0FTXFxcbjBBQkEwQ0lBSkJCellDRUNBRElBSkJFR29RemdnaEFTQUFRUUUyQWdBZ0FDQUJOZ0lFREFVTElBQkJBRFlDQUNBQVFRQTJBZ2dNQkFzZ1xcXG5BUzBBQkEwQUlBTWdBeWdDQ0VFQmFqWUNDQ0FDUVJCcUlBTVF0Z1FDUUNBQ0xRQVFSUTBBSUFBZ0FpZ0NGRFlDQkNBQVFRRTJBZ0FNQkFcXFxuc0NRQ0FDTFFBUlJRMEFJQUl0QUJJaEJBd0NDeUFDUVFVMkFoQWdBeUFDUVJCcUVNNElJUUVnQUVFQk5nSUFJQUFnQVRZQ0JBd0RDeUFCXFxcblFRQTZBQVFMQWtBZ0JFSC9BWEZCM1FCSERRQWdBa0VWTmdJUUlBTWdBa0VRYWhET0NDRUJJQUJCQVRZQ0FDQUFJQUUyQWdRTUFnc2dBa1xcXG5FUWFpQURFRjRDUUNBQ0tBSVFSUTBBSUFBZ0Fpa0RFRGNEQ0NBQVFRQTJBZ0FnQUVFZ2FpQUNRUkJxUVJocUtRTUFOd01BSUFCQkdHb2dcXFxuQWtFUWFrRVFhaWtEQURjREFDQUFRUkJxSUFKQkdHb3BBd0EzQXdBTUFnc2dBQ0FDS0FJVU5nSUVJQUJCQVRZQ0FBd0JDeUFBSUFJb0FnXFxcbncyQWdRZ0FFRUJOZ0lBQ3lBQ1FUQnFKQUFMMFFNQ0JIOENmaU1BUWRBQWF5SUZKQUFnQlNBRE5nSUlJQUVvQWd3aEF5QUZJQVZCQ0dvMlxcXG5BZ3dDUUFKQUlBTWdBbW9pQWlBRFR3MEFJQVVnQkJDN0JpQUZLQUlFSVFZZ0JTZ0NBQ0VEREFFTEFrQUNRQ0FDSUFFb0FnUWlBeUFEUVFcXFxuRnFJZ2RCQTNaQkIyd2dBMEVJU1JzaUEwRUJkazBOQUNBRlFTaHFJQUZCQkNBQ0lBTkJBV29pQXlBQ0lBTkxHeUFFRU1VRUlBVW9BaWdpXFxcbkNFVU5BU0FGUVJCcVFSUnFJQVZCS0dwQkZHb29BZ0EyQWdBZ0JTQUZLUUkwTndJY0lBVWdCU2dDTUNJR05nSVlJQVVnQlNnQ0xEWUNGQ1xcXG5BRklBZzJBaEJCZkNFQ1FRQWhBd05BQWtBZ0J5QURSdzBBSUFFcEFnQWhDU0FCSUFVcEF4QTNBZ0FnQlVFUWFrRUlhaUlES1FNQUlRb2dcXFxuQXlBQlFRaHFJZ0lwQWdBM0F3QWdBaUFLTndJQUlBVWdDVGNERUNBRlFSQnFFT1lHUVlHQWdJQjRJUU1NQkFzQ1FDQUJLQUlBSWdRZ0EyXFxcbm9zQUFCQkFFZ05BQ0FJSUFWQkVHb2dCVUVNYWlBQklBTVF4Z29ReUFkQkFuUnJRWHhxSUFRZ0Ftb29BQUEyQUFBTElBTkJBV29oQXlBQ1xcXG5RWHhxSVFJTUFBc0xJQUVnQlVFTWFrSGNuc0FBUVFRUWRFR0JnSUNBZUNFRERBRUxJQVZCTUdvb0FnQWhCaUFGS0FJc0lRTUxJQUFnQmpcXFxuWUNCQ0FBSUFNMkFnQWdCVUhRQUdva0FBdlJBd0lFZndKK0l3QkIwQUJySWdVa0FDQUZJQU0yQWdnZ0FTZ0NEQ0VESUFVZ0JVRUlhallDXFxcbkRBSkFBa0FnQXlBQ2FpSUNJQU5QRFFBZ0JTQUVFTHNHSUFVb0FnUWhCaUFGS0FJQUlRTU1BUXNDUUFKQUlBSWdBU2dDQkNJRElBTkJBV1xcXG5vaUIwRURka0VIYkNBRFFRaEpHeUlEUVFGMlRRMEFJQVZCS0dvZ0FVRUlJQUlnQTBFQmFpSURJQUlnQTBzYklBUVF4UVFnQlNnQ0tDSUlcXFxuUlEwQklBVkJFR3BCRkdvZ0JVRW9ha0VVYWlnQ0FEWUNBQ0FGSUFVcEFqUTNBaHdnQlNBRktBSXdJZ1kyQWhnZ0JTQUZLQUlzTmdJVUlBXFxcblVnQ0RZQ0VFRjRJUUpCQUNFREEwQUNRQ0FISUFOSERRQWdBU2tDQUNFSklBRWdCU2tERURjQ0FDQUZRUkJxUVFocUlnTXBBd0FoQ2lBRFxcXG5JQUZCQ0dvaUFpa0NBRGNEQUNBQ0lBbzNBZ0FnQlNBSk53TVFJQVZCRUdvUTVnWkJnWUNBZ0hnaEF3d0VDd0pBSUFFb0FnQWlCQ0FEYWlcXFxud0FBRUVBU0EwQUlBZ2dCVUVRYWlBRlFReHFJQUVnQXhERkNoRElCMEVEZEd0QmVHb2dCQ0FDYWlrQUFEY0FBQXNnQTBFQmFpRURJQUpCXFxcbmVHb2hBZ3dBQ3dzZ0FTQUZRUXhxUWZTZXdBQkJDQkIwUVlHQWdJQjRJUU1NQVFzZ0JVRXdhaWdDQUNFR0lBVW9BaXdoQXdzZ0FDQUdOZ1xcXG5JRUlBQWdBellDQUNBRlFkQUFhaVFBQzljREFRdC9RUUJCQUNnQy9LWlBRUUZxSWdFMkF2eW1UeUFCUVFOc0lRSUNRQU5BQWtCQkFDZ0NcXFxuZ0tkUElnTU5BQkNXQnlFREN5QURLQUlFSWdRZ0FrOE5BU0FFUVFaMElRVWdBeWdDQUNFRUFrQURRQUpBSUFVTkFDQURRUUFvQW9DblQwXFxcbllOQWlBREtBSUVRUVowSVFRZ0F5Z0NBQ0VGQTBBZ0JFVU5CQ0FFUVVCcUlRUWdCUkRGQ1NBRlFjQUFhaUVGREFBTEN5QUVJQVFvQWdBaVxcXG5Ca0VCSUFZYk5nSUFBa0FnQmtVTkFDQUVFTUFFQ3lBRVFjQUFhaUVFSUFWQlFHb2hCUXdBQ3dzTElBRWdBeENHQWlFSElBTW9BZ0FpQkNcXFxuQURLQUlFUVFaMGFpRUlBMEFDUUNBRUlBaEhEUUJCQUNBSE5nS0FwMDhnQXlnQ0JFRUdkQ0VFSUFNb0FnQWhCUU5BSUFSRkRRTWdCRUZBXFxcbmFpRUVJQVVReFFrZ0JVSEFBR29oQlF3QUN3c2dCRUhBQUdvaENVRUFJQWNvQWdoclFSOXhJUW9nQnlnQ0FDRUxJQWNvQWdRaEFTQUVLQVxcXG5JRUlRUURRQUpBSUFRTkFDQUpJUVFNQWdzQ1FDQUVLQUlBUWJuejNmRjViQ0FLZGlJRklBRlBEUUFnQkNnQ0JDRUdJQXNnQlVFR2RHb2lcXFxuQlNnQ0NDSUNJQVVnQWhzZ0JEWUNCQ0FGSUFRMkFnZ2dCRUVBTmdJRUlBWWhCQXdCQ3dzTElBVWdBVUhBNGNBQUVJRUZBQXNnQUVJQU53XFxcbklBSUFCQkVHcEJBRG9BQUNBQVFRaHFRZ0EzQWdBTDR3TUNBbjhCZmlNQVFkQUJheUlFSkFBZ0JFSFFBR29nQWlBREVKb0pBa0FDUUFKQVxcXG5Ba0FnQkNnQ1VDSURRUUpIRFFBZ0JDMEFWQkN5RFNFQ0RBRUxJQVF0QUZRaEFpQUVRUWhxUVFWeUlBUkIwQUJxUVFWeVFjTUFFS1FOR2lcXFxuQUVJQUk2QUF3Z0JDQUROZ0lJUVFBaEFpQUVRUUEyQXB3QklBUWdCRUVJYWpZQ21BRWdCRUhRQUdvZ0FTQUVRWmdCYWhDREFTQUVRWmdCXFxcbmFrRUVjaUVEQWtBZ0JDZ0NVQTBBQWtBZ0JDZ0NWQ0lCRFFBTUF3c2dCQ0FFUWRnQWFpa0RBRGNDckFFZ0JDQUJOZ0tvQVNBRVFiZ0JhaVxcXG5BRVFhZ0JhaENKQlNBRUtRSzhBU0VHSUFRb0FyZ0JJUUlnQkMwQXlBRWlBVUVDUmcwQ0lBUW9Bc1FCSVFVZ0JFSFFBR3BCRTJvZ0JFRzRcXFxuQVdwQkUyb3RBQUE2QUFBZ0JDQUVMd0RKQVRzQVlTQUVJQUU2QUdBZ0JDQUZOZ0pjSUFRZ0JqY0NWQ0FFSUFJMkFsQWdCRUhRQUdvUXRRXFxcbjBoQWlBREVNd0xJQVJCSEdvUTR3d01BUXNnQkNnQ1ZDRUNJQU1RekFzZ0JFRWNhaERqREFzZ0JDQUNOZ0lNUVFFaEF3d0JDeUFERU13TFxcXG5JQVJCSEdvUTR3d0NRQUpBSUFJTkFFR0FBU0VEREFFTElBUWdCamNDVkNBRUlBSTJBbEFnQkVIUUFHb1FpQXNoQXdzZ0JDQUROZ0lNUVFcXFxuQWhBd3NnQkNBRE5nSUlJQVFnQkVFSWFoQzNDQ0FBSUFRcEF3QTNBd0FnQkVIUUFXb2tBQXZiQXdFRGZ5TUFRU0JySWdJa0FDQUNRUWhxXFxcbklBRW9BZ0FpQXhDMkJBSkFBa0FnQWkwQUNBMEFBa0FnQWkwQUNRMEFJQUpCQXpZQ0VDQURJQUpCRUdvUXpnZ2hBU0FBUVFFNkFBQWdBQ1xcXG5BQk5nSUVEQUlMQWtBQ1FBSkFJQUl0QUFvaUJFRXNSZzBBQWtBZ0JFSDlBRVlOQUNBQkxRQUVEUUlnQWtFSU5nSVFJQU1nQWtFUWFoRE9cXFxuQ0NFQklBQkJBVG9BQUNBQUlBRTJBZ1FNQlFzZ0FFR0FCRHNCQUF3RUN5QUJMUUFFRFFBZ0F5QURLQUlJUVFGcU5nSUlJQUpCRUdvZ0F4XFxcbkMyQkFKQUlBSXRBQkJGRFFBZ0FDQUNLQUlVTmdJRUlBQkJBVG9BQUF3RUN3SkFJQUl0QUJGRkRRQWdBaTBBRWlFRURBSUxJQUpCQlRZQ1xcXG5FQ0FESUFKQkVHb1F6Z2doQVNBQVFRRTZBQUFnQUNBQk5nSUVEQU1MSUFGQkFEb0FCQXNDUUFKQUlBUkIvd0Z4SWdGQklrWU5BQ0FCUWZcXFxuMEFSZzBCSUFKQkVUWUNFQ0FESUFKQkVHb1F6Z2doQVNBQVFRRTZBQUFnQUNBQk5nSUVEQU1MSUFKQkVHb2dBeEM3QlFKQUFrQWdBaTBBXFxcbkVBMEFJQUFnQWkwQUVUb0FBVUVBSVFFTUFRc2dBQ0FDS0FJVU5nSUVRUUVoQVFzZ0FDQUJPZ0FBREFJTElBSkJGVFlDRUNBRElBSkJFR1xcXG5vUXpnZ2hBU0FBUVFFNkFBQWdBQ0FCTmdJRURBRUxJQUFnQWlnQ0REWUNCQ0FBUVFFNkFBQUxJQUpCSUdva0FBdTFBd0VKZnlNQVFTQnJcXFxuSWdJa0FBSkFBa0FnQVMwQUpVVU5BRUVBSVFNTUFRc2dBVUVZYWlFRUlBRW9BZ1FpQlNFR0EwQUNRQUpBQWtBZ0FTZ0NFQ0lESUFFb0FnXFxcbndpQjBrZ0F5QUJLQUlJUzNJaUNBMEFRUUFnQmlBSGFpQUlHeUVHSUFFb0FoUWdCR3BCZjJvdEFBQWhDUUpBQWtBZ0NpQURJQWRySUFnYlxcXG5JZ3BCQjBzTkFFRUFJUWRCQUNFREEwQUNRQ0FLSUFOSERRQWdDaUVEREFNTEFrQWdCaUFEYWkwQUFDQUpRZjhCY1VjTkFFRUJJUWNNQXdcXFxuc2dBMEVCYWlFRERBQUxDeUFDUVJocUlBa2dCaUFLRVAwQklBSW9BaHdoQXlBQ0tBSVlJUWNMQWtBZ0IwRUJSdzBBSUFFZ0F5QUJLQUlNXFxcbmFrRUJhaUlETmdJTUlBTWdBU2dDRkNJR1NRMERJQU1nQVNnQ0NFME5BZ3dEQ3lBQklBRW9BaEEyQWd3TElBSkJDR29nQVJDRUJpQUNLQVxcXG5JTUlRb2dBaWdDQ0NFRERBTUxJQUVvQWdRaENTQUNRUkJxUVFBZ0JpQUVRUVJCelBEQUFCQ1lCeUFKSUFNZ0Jtc2lBMm9nQmlBQ0tBSVFcXFxuSUFJb0FoUVFtQXBGRFFBZ0FTZ0NIQ0VHSUFFZ0FTZ0NERFlDSENBRElBWnJJUW9nQlNBR2FpRUREQUlMSUFFb0FnUWhCZ3dBQ3dzZ0FDXFxcbkFLTmdJRUlBQWdBellDQUNBQ1FTQnFKQUFMeHdNQkEzOGpBRUhRQUdzaUFpUUFJQUpCQ0dvZ0FSQzZCQUpBQWtBQ1FBSkFJQUl0QUFnTlxcXG5BQ0FDTFFBSkRRSWdBa0VGTmdJUUlBRWdBa0VRYWhEZENDRUJEQUVMSUFJb0Fnd2hBUXNnQUVFQU5nSVFJQUFnQVRZQ0FBd0JDd0pBQWtcXFxuQWdBaTBBQ2tIN0FFY05BQ0FCSUFFdEFCaEJmMm9pQXpvQUdBSkFJQU5CL3dGeERRQWdBa0VZTmdJUUlBRWdBa0VRYWhEZENDRUJJQUJCXFxcbkFEWUNFQ0FBSUFFMkFnQU1Bd3NnQVJDRERDQUNJQUVRaEF3Z0FrRVFhaUFDS0FJQUlBSXRBQVJCQVhFUXNRRWdBU0FCTFFBWVFRRnFPZ1xcXG5BWUlBSWdBUkRGQXlJRE5nSkFBa0FDUUNBQ0tBSWdJZ1JGRFFBZ0EwVU5BU0FDUVJCcUVOa0tJQU1oQkF3REN5QUNLQUlRSVFRZ0EwVU5cXFxuQWlBQ1FjQUFhaEN2Q1F3Q0N5QUFJQUlwQWhRM0FnUWdBQ0FDS1FJa053SVVJQUJCREdvZ0FrRVFha0VNYWlnQ0FEWUNBQ0FBUVJ4cUlBXFxcbkpCRUdwQkhHb3BBZ0EzQWdBZ0FFRWthaUFDUVJCcVFTUnFLUUlBTndJQUlBQkJMR29nQWtFUWFrRXNhaWdDQURZQ0FDQUNLQUlRSVFFZ1xcXG5BQ0FFTmdJUUlBQWdBVFlDQUF3Q0N5QUJJQUpCeUFCcVFleWR3QUFRZUNFRUN5QUJJQVFRdmcwaEFTQUFRUUEyQWhBZ0FDQUJOZ0lBQ3lcXFxuQUNRZEFBYWlRQUM4Y0RBUU4vSXdCQjBBQnJJZ0lrQUNBQ1FRaHFJQUVRdWdRQ1FBSkFBa0FDUUNBQ0xRQUlEUUFnQWkwQUNRMENJQUpCXFxcbkJUWUNFQ0FCSUFKQkVHb1EzUWdoQVF3QkN5QUNLQUlNSVFFTElBQkJBRFlDRUNBQUlBRTJBZ0FNQVFzQ1FBSkFJQUl0QUFwQit3QkhEUVxcXG5BZ0FTQUJMUUFZUVg5cUlnTTZBQmdDUUNBRFFmOEJjUTBBSUFKQkdEWUNFQ0FCSUFKQkVHb1EzUWdoQVNBQVFRQTJBaEFnQUNBQk5nSUFcXFxuREFNTElBRVFnd3dnQWlBQkVJUU1JQUpCRUdvZ0FpZ0NBQ0FDTFFBRVFRRnhFSVlCSUFFZ0FTMEFHRUVCYWpvQUdDQUNJQUVReFFNaUF6XFxcbllDUUFKQUFrQWdBaWdDSUNJRVJRMEFJQU5GRFFFZ0FrRVFhaERZQ2lBRElRUU1Bd3NnQWlnQ0VDRUVJQU5GRFFJZ0FrSEFBR29RcndrTVxcXG5BZ3NnQUNBQ0tRSVVOd0lFSUFBZ0Fpa0NKRGNDRkNBQVFReHFJQUpCRUdwQkRHb29BZ0EyQWdBZ0FFRWNhaUFDUVJCcVFSeHFLUUlBTndcXFxuSUFJQUJCSkdvZ0FrRVFha0VrYWlrQ0FEY0NBQ0FBUVN4cUlBSkJFR3BCTEdvb0FnQTJBZ0FnQWlnQ0VDRUJJQUFnQkRZQ0VDQUFJQUUyXFxcbkFnQU1BZ3NnQVNBQ1FjZ0Fha0hzbmNBQUVIZ2hCQXNnQVNBRUVMNE5JUUVnQUVFQU5nSVFJQUFnQVRZQ0FBc2dBa0hRQUdva0FBdkhBd1xcXG5FRGZ5TUFRZEFBYXlJQ0pBQWdBa0VJYWlBQkVMb0VBa0FDUUFKQUFrQWdBaTBBQ0EwQUlBSXRBQWtOQWlBQ1FRVTJBaEFnQVNBQ1FSQnFcXFxuRU4wSUlRRU1BUXNnQWlnQ0RDRUJDeUFBUVFBMkFoQWdBQ0FCTmdJQURBRUxBa0FDUUNBQ0xRQUtRZnNBUncwQUlBRWdBUzBBR0VGL2FpXFxcbklET2dBWUFrQWdBMEgvQVhFTkFDQUNRUmcyQWhBZ0FTQUNRUkJxRU4wSUlRRWdBRUVBTmdJUUlBQWdBVFlDQUF3REN5QUJFSU1NSUFJZ1xcXG5BUkNFRENBQ1FSQnFJQUlvQWdBZ0FpMEFCRUVCY1JDZEFTQUJJQUV0QUJoQkFXbzZBQmdnQWlBQkVNVURJZ00yQWtBQ1FBSkFJQUlvQWlcXFxuQWlCRVVOQUNBRFJRMEJJQUpCRUdvUTJnb2dBeUVFREFNTElBSW9BaEFoQkNBRFJRMENJQUpCd0FCcUVLOEpEQUlMSUFBZ0Fpa0NGRGNDXFxcbkJDQUFJQUlwQWlRM0FoUWdBRUVNYWlBQ1FSQnFRUXhxS0FJQU5nSUFJQUJCSEdvZ0FrRVFha0VjYWlrQ0FEY0NBQ0FBUVNScUlBSkJFR1xcXG5wQkpHb3BBZ0EzQWdBZ0FFRXNhaUFDUVJCcVFTeHFLQUlBTmdJQUlBSW9BaEFoQVNBQUlBUTJBaEFnQUNBQk5nSUFEQUlMSUFFZ0FrSElcXFxuQUdwQjdKM0FBQkI0SVFRTElBRWdCQkMrRFNFQklBQkJBRFlDRUNBQUlBRTJBZ0FMSUFKQjBBQnFKQUFMelFNQkEzOGpBRUhRQUdzaUFpXFxcblFBSUFJZ0FTZ0NBQ0lERUxvRUFrQUNRQ0FDTFFBQURRQUNRQ0FDTFFBQkRRQWdBa0VETmdJSUlBTWdBa0VJYWhEZENDRUJJQUJCQXpZQ1xcXG5BQ0FBSUFFMkFnUU1BZ3NDUUFKQUFrQWdBaTBBQWlJRVFTeEdEUUFDUUNBRVFmMEFSZzBBSUFFdEFBUU5BaUFDUVFnMkFnZ2dBeUFDUVFcXFxuaHFFTjBJSVFFZ0FFRUROZ0lBSUFBZ0FUWUNCQXdGQ3lBQVFRSTJBZ0FNQkFzZ0FTMEFCQTBBSUFNUWd3d2dBa0VJYWlBREVMb0VBa0FnXFxcbkFpMEFDRVVOQUNBQUlBSW9BZ3cyQWdRZ0FFRUROZ0lBREFRTEFrQWdBaTBBQ1VVTkFDQUNMUUFLSVFRTUFnc2dBa0VGTmdJSUlBTWdBa1xcXG5FSWFoRGRDQ0VCSUFCQkF6WUNBQ0FBSUFFMkFnUU1Bd3NnQVVFQU9nQUVDd0pBQWtBZ0JFSC9BWEVpQVVFaVJnMEFJQUZCL1FCR0RRRWdcXFxuQWtFUk5nSUlJQU1nQWtFSWFoRGRDQ0VCSUFCQkF6WUNBQ0FBSUFFMkFnUU1Bd3NnQWtFSWFpQURFTm9GQWtBZ0FpZ0NDRUVDUmcwQUlBXFxcbkFnQWtFSWFrSElBQkNrRFJvTUF3c2dBQ0FDS0FJTU5nSUVJQUJCQXpZQ0FBd0NDeUFDUVJVMkFnZ2dBeUFDUVFocUVOMElJUUVnQUVFRFxcXG5OZ0lBSUFBZ0FUWUNCQXdCQ3lBQUlBSW9BZ1EyQWdRZ0FFRUROZ0lBQ3lBQ1FkQUFhaVFBQzhFREFRRi9Jd0JCNEFCcklnSWtBQ0FDSUFcXFxuQW9BQUEyQWdRQ1FBSkFBa0FnQVNnQ0NDQUJLQUlBY2tVTkFDQUNRUUEyQWdnZ0FpQUNRUWhxTmdJY0lBSkJQR3BCckFJMkFnQWdBa0UwXFxcbmFrR3NBallDQUNBQ1FTeHFRYXdDTmdJQUlBSWdBa0VFYWtFRGNqWUNPQ0FDSUFKQkJHcEJBbkkyQWpBZ0FpQUNRUVJxUVFGeU5nSW9JQVxcXG5KQnJBSTJBaVFnQWlBQ1FRUnFOZ0lnSUFKQ0JEY0NUQ0FDUWV5WnpnQTJBa0FnQWlBQ1FTQnFOZ0pJSUFKQkJEWUNSQ0FDUVJ4cVFZeWFcXFxuemdBZ0FrSEFBR29RYlVVTkFVR2ttczRBUVNzZ0FrSFlBR3BCMEpyT0FFR0FtODRBRU1JRUFBc2dBa0U4YWtHc0FqWUNBQ0FDUVRScVFhXFxcbndDTmdJQUlBSkJMR3BCckFJMkFnQWdBa0dzQWpZQ0pDQUNJQUpCQkdwQkEzSTJBamdnQWlBQ1FRUnFRUUp5TmdJd0lBSWdBa0VFYWtFQlxcXG5jallDS0NBQlFSaHFLQUlBSVFBZ0FpQUNRUVJxTmdJZ0lBRW9BaFFoQVNBQ1FnUTNBa3dnQWtFRU5nSkVJQUpCN0puT0FEWUNRQ0FDSUFcXFxuSkJJR28yQWtnZ0FTQUFJQUpCd0FCcUVHMGhBUXdCQ3dKQUlBSW9BZ2dpQUVFUVR3MEFJQUVnQWtFSWFrRUVjaUFBRUZNaEFRd0JDeUFBXFxcblFROUJ1SnZPQUJDREJRQUxJQUpCNEFCcUpBQWdBUXZPQXdJQ2Z3RitJd0JCd0FGcklnTWtBQ0FESUFJNkFCUWdBeUFCTmdJUUlBTVEwQVxcXG5nZ0EwRThha0lBTndJQUlBTkJOR3BDZ0lDQWdNQUFOd0lBSUFOQkxHcENBRGNDQUNBRFFZQ0R3QUEyQWlnZ0F5QURLUU1JTndNZ0lBTWdcXFxuQXlrREFEY0RHQ0FEUWRRQWFpRUJBa0FDUUFKQUEwQWdBMEdRQVdvZ0EwRVFhaENrQVNBREtBS1VBU0VDSUFNb0FwQUJEUUVDUUFKQUlBXFxcbkpGRFFBZ0F5QURLUU9ZQVNJRk53S2tBU0FESUFJMkFxQUJJQU5Cc0FGcUlBTkJFR29RMVFrZ0F5Z0NzQUZGRFFFZ0EwSGdBR3BCQ0dvZ1xcXG5BMEd3QVdwQkNHb29BZ0EyQWdBZ0F5QURLUU93QVRjRFlBc2dBU0FES1FOZ053SUFJQUZCQ0dvaUJDQURRZUFBYWtFSWFpZ0NBRFlDQUNcXFxuQURJQVUzQWt3Z0F5QUNOZ0pJSUFKRkRRTWdBMEh3QUdwQkNHb2dBMEhJQUdwQkNHb29BZ0EyQWdBZ0EwR0FBV3BCQ0dvZ0JDZ0NBRFlDXFxcbkFDQURJQU1wQTBnM0EzQWdBeUFCS1FJQU53T0FBU0FEUVpBQmFpQURRUmhxSUFOQjhBQnFJQU5CZ0FGcUVPWUhJQU5Ca0FGcUVNd0xEQVxcXG5FTEN5QURLQUswQVNFQ0lBTkJvQUZxRU9NTUN5QUFRUUEyQWhBZ0FDQUNOZ0lBSUFOQkdHb1EyUW9NQVFzZ0EwSElBR29RMGdzZ0FDQURcXFxuUVJocVFUQVFwQTBhQ3lBRFFjQUJhaVFBQzVJRUFRRi9Jd0JCd0FGcklnRWtBQ0FCUWJ3QmFrRUVOZ0lBSUFGQnRBRnFRUVEyQWdBZ0FVXFxcbkdzQVdwQkJEWUNBQ0FCUWFRQmFrRUVOZ0lBSUFGQm5BRnFRUVEyQWdBZ0FVR1VBV3BCQkRZQ0FDQUJRWXdCYWtFRU5nSUFJQUZCaEFGcVxcXG5RUVEyQWdBZ0FVSDhBR3BCQkRZQ0FDQUJRZlFBYWtFRU5nSUFJQUZCN0FCcVFRUTJBZ0FnQVVIa0FHcEJCRFlDQUNBQlFkd0Fha0VFTmdcXFxuSUFJQUZCMUFCcVFRUTJBZ0FnQVVITUFHcEJCRFlDQUNBQlFjUUFha0VFTmdJQUlBRkJQR3BCQkRZQ0FDQUJRVFJxUVFRMkFnQWdBVUVzXFxcbmFrRUVOZ0lBSUFGQkpHcEJCRFlDQUNBQlFSeHFRUU0yQWdBZ0FVRVVha0VETmdJQUlBRkJER3BCQXpZQ0FDQUJRZkdsd0FBMkFyZ0JJQVxcXG5GQjdhWEFBRFlDc0FFZ0FVSHBwY0FBTmdLb0FTQUJRZVdsd0FBMkFxQUJJQUZCNGFYQUFEWUNtQUVnQVVIZHBjQUFOZ0tRQVNBQlFkbWxcXFxud0FBMkFvZ0JJQUZCMWFYQUFEWUNnQUVnQVVIUnBjQUFOZ0o0SUFGQnphWEFBRFlDY0NBQlFjbWx3QUEyQW1nZ0FVSEZwY0FBTmdKZ0lBXFxcbkZCd2FYQUFEWUNXQ0FCUWIybHdBQTJBbEFnQVVHNXBjQUFOZ0pJSUFGQnRhWEFBRFlDUUNBQlFiR2x3QUEyQWpnZ0FVR3RwY0FBTmdJd1xcXG5JQUZCcWFYQUFEWUNLQ0FCUWFXbHdBQTJBaUFnQVVHaXBjQUFOZ0lZSUFGQm42WEFBRFlDRUNBQlFaeWx3QUEyQWdnZ0FVRUROZ0lFSUFcXFxuRkI5YVhBQURZQ0FDQUFJQUVROWdNZ0FVSEFBV29rQUF1M0F3SUJmd0YrSXdCQm9BRnJJZ1FrQUNBRVFSQnFJQUVnQWtId284QUFRUTBRXFxcbjdnTWdCRUV3YWtFb2FpQURRU2hxS1FNQU53TUFJQVJCTUdwQklHb2dBMEVnYWlrREFEY0RBQ0FFUVRCcVFSaHFJQU5CR0dvcEF3QTNBd1xcXG5BZ0JFRXdha0U0YWlBRFFUaHFLQUlBTmdJQUlBUWdBeWtERURjRFFDQUVJQU1wQXpBM0EyQWdCQ0FES0FJSU5nSTRJQVFnQXlrREFEY0RcXFxuTUNBRVFRaHFRWUFCUVFBUTFRUWdCRUVBTmdLQUFTQUVJQVFwQXdnM0EzZ2dCRUdJQVdwQkJISVFqZ3NnQkNBRVFmZ0FhallDaUFFQ1FBXFxcbkpBQWtBQ1FDQUVRVEJxSUFSQmlBRnFFS29FSWdORkRRQWdCRUg0QUdvUTR3d01BUXNnQkNnQ2ZDRURJQVFvQW5naUFrVU5BQ0FFSUFRb1xcXG5Bb0FCSWdFMkFpZ2dCQ0FETmdJa0lBUWdBallDSUNBRVFUQnFFSjhMSUFSQk1Hb2dCQ0FFS0FJUUlBUW9BaGdnQWlBQkVJc0RBa0FDUUNcXFxuQUVMUUF3UVFSR0RRQWdCQ2tETUNJRlF2OEJnMElFVWcwQkN5QUVRU0JxRU9NTUlBUkJFR29RNHd4QkFDRUREQU1MSUFRZ0JUY0RjQ0FFXFxcblFmQUFhaEN3Q1NFRElBUkJJR29RNHd3TUFRc2dBeEMwRFNFRElBUkJNR29RbndzTElBUkJFR29RNHd3TElBUkJvQUZxSkFBZ0F3dkJBd1xcXG5FSWZ5TUFRZEFBYXlJREpBQUNRQUpBSUFGQkZVa05BQ0FEUVRCcUlBRkJBWFlRNXdnZ0F5QURLQUkwTmdJOElBTWdBeWdDTUNJRU5nSTRcXFxuSUFOQndBQnFFUGtKUVFBaEJRTkFBa0FnQlNBQlNRMEFJQU5Cd0FCcUVNc01JQU5CT0dvUXdBc01Bd3NnQTBFb2FpQUZJQUFnQVJESENDXFxcbkFEUVNCcUlBTW9BaWdnQXlnQ0xDQURFSklESUFNb0FpQWdCV29oQmdKQUlBTXRBQ1JCQVhGRkRRQWdBMEVZYWlBRklBWWdBQ0FCUWNpWlxcXG53UUFRN2dZZ0F5Z0NHQ0FES0FJY0VLRUNDeUFEUWNBQWFpQUFJQUVnQlNBR0lBSVFrd1FpQnlBRmF5QUZFTWNFQTBBZ0EwRVFhaUFES0FcXFxuSkFJQU1vQWtnZ0FSRGFBaUFES0FJVUlRVUNRQ0FES0FJUVFRRkdEUUFnQnlFRkRBSUxJQU5Cd0FCcUlBVkIySm5CQUJEbEJTSUlLQUlBXFxcbklRWWdBMEVJYWlBSUtBSUVJZ2dnQTBIQUFHb2dCVUVCYWlJSlFlaVp3UUFRNVFVaUNpZ0NCQ0FLS0FJQUlncHFJQUFnQVVING1jRUFFT1xcXG40R0lBTW9BZ2dnQXlnQ0RDQUdJQVFnQXhDS0FpQURRY0FBYWlBSlFZaWF3UUFRNVFVaUNTQUlOZ0lFSUFrZ0NpQUdhallDQUNBRFFjQUFcXFxuYWlBRkVNRUVEQUFMQ3dzZ0FVRUNTUTBBSUFBZ0FVRUJJQU1RNWdRTElBTkIwQUJxSkFBTDBBTUJCSDhqQUVFd2F5SUNKQUFDUUFKQUFrXFxcbkFDUUFKQUFrQWdBQ2dDQkNJRERnTUFBd0lCQzBHVzNjMEFRUTVCcE4zTkFCRGZDUUFMSUFKQkpHcENBRGNDQUVFQklRUWdBa0VCTmdJY1xcXG5JQUpCZ056TkFEWUNHQ0FDUWZUWXpRQTJBaUFnQVNBQ1FSaHFFSzBGUlEwQ0RBTUxJQUpCREdwQjdBRTJBZ0FnQWtFWWFrRU1ha0lDTndcXFxuSUFJQUpCQXpZQ0hDQUNRYXpjelFBMkFoZ2dBa0hzQVRZQ0JDQUNJQUFvQWdBaUF6WUNBQ0FDSUFOQkNHbzJBZ2dnQWlBQ05nSWdJQUVnXFxcbkFrRVlhaEN0QlNFRURBSUxJQUpCSkdwQ0FUY0NBQ0FDUVFJMkFod2dBa0dVM00wQU5nSVlJQUpCN0FFMkFnUWdBaUFBS0FJQU5nSUFJQVxcXG5JZ0FqWUNJQ0FCSUFKQkdHb1FyUVVoQkF3QkN5QURRUU4wSVFNZ0FDZ0NBQ0VBUVFBaEJFRUFJUVVEUUNBRFJRMEJJQUlnQURZQ0ZBSkFcXFxuQWtBZ0JVVU5BQ0FDUVFFMkFod2dBa0dNM00wQU5nSVlJQUpDQURjQ0pDQUNRZlRZelFBMkFpQWdBU0FDUVJocUVLMEZEUUVMSUFKQkFqXFxcbllDSENBQ1FaVGN6UUEyQWhnZ0FrSUJOd0lrSUFKQkFqWUNCQ0FDSUFJMkFpQWdBaUFDUVJScU5nSUFJQUVnQWtFWWFoQ3RCUTBBSUFCQlxcXG5DR29oQUNBRlFYOXFJUVVnQTBGNGFpRUREQUVMQzBFQklRUUxJQUpCTUdva0FDQUVDOEVEQWdKL0FYNGpBRUh3QUdzaUFpUUFJQUpCS0dcXFxub2dBQ2dDQUNJRElBTW9BZ0FvQWdRUkJRQWdBa0hjQUdwQ0FUY0NBQ0FDUWZFQk5nSnNRUUVoQUNBQ1FRRTJBbFFnQWtIODNjMEFOZ0pRXFxcbklBSWdBaWtES0RjRE1DQUNJQUpCTUdvMkFtZ2dBaUFDUWVnQWFqWUNXQUpBSUFFZ0FrSFFBR29RclFVTkFFRUFJUUFnQVJDckRFVU5BQ1xcXG5BQ1FTQnFJQU1nQXlnQ0FDZ0NCQkVGQUNBQ0tRTWdJUVFnQWtFQk5nSkFJQUlnQkRjQ05DQUNRUUEyQWpCQkFTRUFBMEFDUUFKQUlBQU5cXFxuQUNBQ1FRaHFJQUpCTUdvUXNBUWdBaWdDRENFRElBSW9BZ2doQUF3QkN5QUNRUUEyQWtBZ0FFRUJhaUVBQWtBRFFDQUFRWDlxSWdCRkRRXFxcbkVnQWtFWWFpQUNRVEJxRUxBRUlBSW9BaGdOQUF0QkFDRUFEQUVMSUFKQkVHb2dBa0V3YWhDd0JDQUNLQUlVSVFNZ0FpZ0NFQ0VBQ3dKQVxcXG5JQUFOQUNBQ1FUQnFFT0VMUVFBaEFBd0NDeUFDSUFBMkFrZ2dBaUFETmdKTUlBSkJBVFlDVkNBQ1FaVGZ6UUEyQWxBZ0FrSUJOd0pjSUFcXFxuSkI4UUUyQW13Z0FpQUNRZWdBYWpZQ1dDQUNJQUpCeUFCcU5nSm9Ba0FnQVNBQ1FkQUFhaEN0QlEwQUlBSW9Ba0FoQUF3QkN3c2dBa0V3XFxcbmFoRGhDMEVCSVFBTElBSkI4QUJxSkFBZ0FBdU9Bd0VFZndKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQnlBSVdBMEFJQWNnQ0gwZ0NGZ05BUVxcXG5KQUlBY2dCbjBnQmxnTkFDQUhJQVpDQVlaOUlBaENBWVphRFFNTEFrQWdCaUFJV0EwQUlBY2dCaUFJZlNJSWZTQUlXQTBFQ3lBQVFRQTJcXFxuQWdBUEN5QUFRUUEyQWdBUEN5QUFRUUEyQWdBUEN5QURJQUpMRFFFTUJBc2dBeUFDU3cwQklBRWdBMm9oQ1VFQUlRb2dBU0VMQWtBRFFDXFxcbkFESUFwR0RRRWdDa0VCYWlFS0lBdEJmMm9pQ3lBRGFpSU1MUUFBUVRsR0RRQUxJQXdnREMwQUFFRUJham9BQUNBRElBcHJRUUZxSUFOUFxcXG5EUU1nREVFQmFrRXdJQXBCZjJvUW9RMGFEQU1MQWtBQ1FDQUREUUJCTVNFS0RBRUxJQUZCTVRvQUFFRXdJUW9nQTBFQlJnMEFRVEFoQ2lcXFxuQUJRUUZxUVRBZ0EwRi9haENoRFJvTElBUkJBV3JCSVFRZ0F5QUNUdzBDSUFRZ0JjRk1EUUlnQ1NBS09nQUFJQU5CQVdvaEF3d0NDeUFEXFxcbklBSkJsSmJPQUJDREJRQUxJQU1nQWtHa2xzNEFFSU1GQUFzZ0F5QUNUUTBBSUFNZ0FrRzBsczRBRUlNRkFBc2dBQ0FFT3dFSUlBQWdBelxcXG5ZQ0JDQUFJQUUyQWdBTHVBTUJBMzhqQUVFZ2F5SUNKQUFnQWtFSWFpQUJLQUlBSWdNUXRnUUNRQUpBSUFJdEFBZ05BQUpBSUFJdEFBa05cXFxuQUNBQ1FRSTJBaEFnQXlBQ1FSQnFFTTRJSVFFZ0FFRUJOZ0lBSUFBZ0FUWUNCQXdDQ3dKQUFrQUNRQ0FDTFFBS0lnUkJMRVlOQUFKQUlBXFxcblJCM1FCR0RRQWdBUzBBQkEwQ0lBSkJCellDRUNBRElBSkJFR29RemdnaEFTQUFRUUUyQWdBZ0FDQUJOZ0lFREFVTElBQkNBRGNDQUF3RVxcXG5DeUFCTFFBRURRQWdBeUFES0FJSVFRRnFOZ0lJSUFKQkVHb2dBeEMyQkFKQUlBSXRBQkJGRFFBZ0FDQUNLQUlVTmdJRUlBQkJBVFlDQUFcXFxud0VDd0pBSUFJdEFCRkZEUUFnQWkwQUVpRUVEQUlMSUFKQkJUWUNFQ0FESUFKQkVHb1F6Z2doQVNBQVFRRTJBZ0FnQUNBQk5nSUVEQU1MXFxcbklBRkJBRG9BQkFzQ1FDQUVRZjhCY1VIZEFFY05BQ0FDUVJVMkFoQWdBeUFDUVJCcUVNNElJUUVnQUVFQk5nSUFJQUFnQVRZQ0JBd0NDeVxcXG5BQ1FSQnFJQU1RbXdJQ1FDQUNLQUlRUlEwQUlBQWdBaWtERURjQ0JDQUFRUUEyQWdBZ0FFRU1haUFDUVJocUtBSUFOZ0lBREFJTElBQWdcXFxuQWlnQ0ZEWUNCQ0FBUVFFMkFnQU1BUXNnQUNBQ0tBSU1OZ0lFSUFCQkFUWUNBQXNnQWtFZ2FpUUFDNDBEQVFwL0l3QkJJR3NpQXlRQUlBXFxcbk5CQURZQ0dDQURJQUUyQWhBZ0F5QUJOZ0lJSUFNZ0FqWUNEQ0FESUFFZ0Ftb2lCRFlDRkNBRFFSQnFJUVVnQVNFR0FrQURRQ0FESUFVUVxcXG5qQUlnQXlnQ0dDRUhBa0FDUUNBREtBSUFSUTBBSUFNb0FnUWlDRUdBZ01RQVJ3MEJDMEVBSVFrZ0F5Z0NGQ0VDSUFNb0FoQWhCaUFISVFcXFxucEJBQ0VIREFJTElBTWdCeUFFYWlBR0lBTW9BaFFpQW1wcklBTW9BaEFpQm1vaUNqWUNHQ0FDSVFRZ0NpRUpJQWdRNUFNTkFBc0xBa0FEXFxcblFDQUdJQUlpQkVZTkFRSkFJQVJCZjJvaUFpMEFBQ0lJd0NJRlFYOUtEUUFDUUFKQUlBUkJmbW9pQWkwQUFDSUl3Q0lMUVVCSURRQWdDRVxcXG5FZmNTRUlEQUVMQWtBQ1FDQUVRWDFxSWdJdEFBQWlDTUFpREVGQVNBMEFJQWhCRDNFaENBd0JDeUFFUVh4cUlnSXRBQUJCQjNGQkJuUWdcXFxuREVFL2NYSWhDQXNnQ0VFR2RDQUxRVDl4Y2lFSUN5QUlRUVowSUFWQlAzRnlJZ2hCZ0lERUFFWU5BZ3NnQ0JEa0F3MEFDeUFLSUFacklBXFxcblJxSVFrTElBQWdDU0FIYXpZQ0JDQUFJQUVnQjJvMkFnQWdBMEVnYWlRQUM3SURBUU4vSXdCQndBQnJJZ0lrQUNBQ1FRaHFJQUVvQWdBaVxcXG5BeEM2QkFKQUFrQWdBaTBBQ0EwQUFrQWdBaTBBQ1EwQUlBSkJBallDRUNBRElBSkJFR29RM1FnaEFTQUFRUUUyQWdBZ0FDQUJOZ0lFREFcXFxuSUxBa0FDUUFKQUlBSXRBQW9pQkVFc1JnMEFBa0FnQkVIZEFFWU5BQ0FCTFFBRURRSWdBa0VITmdJUUlBTWdBa0VRYWhEZENDRUJJQUJCXFxcbkFUWUNBQ0FBSUFFMkFnUU1CUXNnQUVFQU5nSUFJQUJCR0dwQkFEWUNBQXdFQ3lBQkxRQUVEUUFnQXhDRERDQUNRUkJxSUFNUXVnUUNRQ1xcXG5BQ0xRQVFSUTBBSUFBZ0FpZ0NGRFlDQkNBQVFRRTJBZ0FNQkFzQ1FDQUNMUUFSUlEwQUlBSXRBQkloQkF3Q0N5QUNRUVUyQWhBZ0F5QUNcXFxuUVJCcUVOMElJUUVnQUVFQk5nSUFJQUFnQVRZQ0JBd0RDeUFCUVFBNkFBUUxBa0FnQkVIL0FYRkIzUUJIRFFBZ0FrRVZOZ0lRSUFNZ0FrXFxcbkVRYWhEZENDRUJJQUJCQVRZQ0FDQUFJQUUyQWdRTUFnc2dBa0VRYWlBREVLNEJBa0FnQWlnQ0lFVU5BQ0FBUVFocUlBSkJFR3BCTUJDa1xcXG5EUm9nQUVFQU5nSUFEQUlMSUFBZ0FpZ0NFRFlDQkNBQVFRRTJBZ0FNQVFzZ0FDQUNLQUlNTmdJRUlBQkJBVFlDQUFzZ0FrSEFBR29rQUFcXFxudXlBd0VEZnlNQVFjQUFheUlDSkFBZ0FrRUlhaUFCS0FJQUlnTVF1Z1FDUUFKQUlBSXRBQWdOQUFKQUlBSXRBQWtOQUNBQ1FRSTJBaEFnXFxcbkF5QUNRUkJxRU4wSUlRRWdBRUVCTmdJQUlBQWdBVFlDQkF3Q0N3SkFBa0FDUUNBQ0xRQUtJZ1JCTEVZTkFBSkFJQVJCM1FCR0RRQWdBU1xcXG4wQUJBMENJQUpCQnpZQ0VDQURJQUpCRUdvUTNRZ2hBU0FBUVFFMkFnQWdBQ0FCTmdJRURBVUxJQUJCQURZQ0FDQUFRUmhxUVFBMkFnQU1cXFxuQkFzZ0FTMEFCQTBBSUFNUWd3d2dBa0VRYWlBREVMb0VBa0FnQWkwQUVFVU5BQ0FBSUFJb0FoUTJBZ1FnQUVFQk5nSUFEQVFMQWtBZ0FpXFxcbjBBRVVVTkFDQUNMUUFTSVFRTUFnc2dBa0VGTmdJUUlBTWdBa0VRYWhEZENDRUJJQUJCQVRZQ0FDQUFJQUUyQWdRTUF3c2dBVUVBT2dBRVxcXG5Dd0pBSUFSQi93RnhRZDBBUncwQUlBSkJGVFlDRUNBRElBSkJFR29RM1FnaEFTQUFRUUUyQWdBZ0FDQUJOZ0lFREFJTElBSkJFR29nQXhcXFxuQ3NBUUpBSUFJb0FpQkZEUUFnQUVFSWFpQUNRUkJxUVRBUXBBMGFJQUJCQURZQ0FBd0NDeUFBSUFJb0FoQTJBZ1FnQUVFQk5nSUFEQUVMXFxcbklBQWdBaWdDRERZQ0JDQUFRUUUyQWdBTElBSkJ3QUJxSkFBTHNnTUJBMzhqQUVIQUFHc2lBaVFBSUFKQkNHb2dBU2dDQUNJREVMb0VBa1xcXG5BQ1FDQUNMUUFJRFFBQ1FDQUNMUUFKRFFBZ0FrRUNOZ0lRSUFNZ0FrRVFhaERkQ0NFQklBQkJBVFlDQUNBQUlBRTJBZ1FNQWdzQ1FBSkFcXFxuQWtBZ0FpMEFDaUlFUVN4R0RRQUNRQ0FFUWQwQVJnMEFJQUV0QUFRTkFpQUNRUWMyQWhBZ0F5QUNRUkJxRU4wSUlRRWdBRUVCTmdJQUlBXFxcbkFnQVRZQ0JBd0ZDeUFBUVFBMkFnQWdBRUVZYWtFQU5nSUFEQVFMSUFFdEFBUU5BQ0FERUlNTUlBSkJFR29nQXhDNkJBSkFJQUl0QUJCRlxcXG5EUUFnQUNBQ0tBSVVOZ0lFSUFCQkFUWUNBQXdFQ3dKQUlBSXRBQkZGRFFBZ0FpMEFFaUVFREFJTElBSkJCVFlDRUNBRElBSkJFR29RM1FcXFxuZ2hBU0FBUVFFMkFnQWdBQ0FCTmdJRURBTUxJQUZCQURvQUJBc0NRQ0FFUWY4QmNVSGRBRWNOQUNBQ1FSVTJBaEFnQXlBQ1FSQnFFTjBJXFxcbklRRWdBRUVCTmdJQUlBQWdBVFlDQkF3Q0N5QUNRUkJxSUFNUXJRRUNRQ0FDS0FJZ1JRMEFJQUJCQ0dvZ0FrRVFha0V3RUtRTkdpQUFRUVxcXG5BMkFnQU1BZ3NnQUNBQ0tBSVFOZ0lFSUFCQkFUWUNBQXdCQ3lBQUlBSW9BZ3cyQWdRZ0FFRUJOZ0lBQ3lBQ1FjQUFhaVFBQzZ3REFBSkFcXFxuQWtBQ1FBSkFBa0FnQWtVTkFDQUJMUUFBUVRGSkRRRWdCa0VFU1EwQ0lBVkJBanNCQUFKQUFrQWdBOEVpQmtFQlNBMEFJQVVnQVRZQ0JDXFxcbkFEUWYvL0EzRWlBeUFDVHcwQklBVkJBanNCR0NBRlFRSTdBUXdnQlNBRE5nSUlJQVZCSUdvZ0FpQURheUlDTmdJQUlBVkJIR29nQVNBRFxcXG5hallDQUNBRlFSUnFRUUUyQWdBZ0JVRVFha0hpbDg0QU5nSUFRUU1oQVNBQ0lBUlBEUVlnQkNBQ2F5RUVEQVVMSUFWQkFqc0JHQ0FGUVFcXFxuQTdBUXdnQlVFQ05nSUlJQVZCNEpmT0FEWUNCQ0FGUVNCcUlBSTJBZ0FnQlVFY2FpQUJOZ0lBSUFWQkVHcEJBQ0FHYXlJRE5nSUFRUU1oXFxcbkFTQUVJQUpORFFVZ0JDQUNheUlDSUFOTkRRVWdBaUFHYWlFRURBUUxJQVZCQURzQkRDQUZJQUkyQWdnZ0JVRVFhaUFESUFKck5nSUFBa1xcXG5BZ0JBMEFRUUloQVF3RkN5QUZRUUk3QVJnZ0JVRWdha0VCTmdJQUlBVkJIR3BCNHBmT0FEWUNBQXdEQzBHY2xNNEFRU0ZCNkpiT0FCQ0RcXFxuQndBTFFmaVd6Z0JCSVVHY2w4NEFFSU1IQUF0QnJKZk9BRUVpUWRDWHpnQVFnd2NBQ3lBRlFRQTdBU1FnQlVFb2FpQUVOZ0lBUVFRaEFRXFxcbnNnQUNBQk5nSUVJQUFnQlRZQ0FBdUZBd0VHZndKQVFSQkJDQkNjQ3lBQVRRMEFRUkJCQ0JDY0N5RUFDeENLRGlJQ1FRZ1FuQXNoQTBFVVxcXG5RUWdRbkFzaEJFRVFRUWdRbkFzaEJVRUFJUVlDUUVFQVFSQkJDQkNjQzBFQ2RHc2lCeUFDSUFVZ0F5QUVhbXByUWZqL2UycEJkM0ZCZldcXFxub2lBaUFISUFKSkd5QUFheUFCVFEwQUlBQkJFQ0FCUVFScVFSQkJDQkNjQzBGN2FpQUJTeHRCQ0JDY0N5SURha0VRUVFnUW5BdHFRWHhxXFxcbkVDNGlBa1VOQUNBQ0VORU5JUUVDUUFKQUlBQkJmMm9pQmlBQ2NRMEFJQUVoQUF3QkN5QUdJQUpxUVFBZ0FHdHhFTkVOSVFaQkVFRUlFSlxcXG53TElRSWdBUkNWRFNBR1FRQWdBQ0FHSUFGcklBSkxHMm9pQUNBQmF5SUdheUVDQWtBZ0FSRFVEQTBBSUFBZ0FoQzdDU0FCSUFZUXV3a2dcXFxuQVNBR0VId01BUXNnQVNnQ0FDRUJJQUFnQWpZQ0JDQUFJQUVnQm1vMkFnQUxBa0FnQUJEVURBMEFJQUFRbFEwaUFVRVFRUWdRbkFzZ0EyXFxcbnBORFFBZ0FDQURFTTROSVFZZ0FDQURFTHNKSUFZZ0FTQURheUlCRUxzSklBWWdBUkI4Q3lBQUVOQU5JUVlnQUJEVURCb0xJQVlMamdNQlxcXG5CMzhqQUVFd2F5SURKQUFnQTBFSWFpQUFLQUlBSWdRZ0FDZ0NDQ0lGRU9nQkFrQWdBeWdDQ0NJR1JRMEFBa0FnQlNBR0lBTW9BZ3hxSUFcXFxuUnJJZ2RKRFFBZ0FDQUhOZ0lJSUFjaEJRc2dBa1VOQUFKQUlBQkJCR29vQWdBaUJ5QUZheUFDUVFGcUlnaFBEUUFDUUNBRklBaHFJZ2dnXFxcbkJVa05BQ0FJUVg5elFSOTJJUWtDUUFKQUlBZEZEUUFnQXlBSE5nSW9JQU5CQVRZQ0pDQURJQVEyQWlBTUFRc2dBMEVBTmdJa0N5QURRUlxcXG5CcUlBa2dDQ0FEUVNCcUVJSURJQU1vQWhRaENRSkFJQU1vQWhBTkFDQUFJQWsyQWdBZ0FFRUVhaUFJTmdJQUlBa2hCQ0FJSVFjTUFnc2dcXFxuQ1VHQmdJQ0FlRVlOQVNBSlJRMEFJQWtnQTBFWWFpZ0NBQkNhRFFBTEVKY0lBQXNDUUNBRklBZEhEUUFnQUNBRkVQRUNJQUFvQWdBaEJDXFxcbkFBS0FJSUlRVUxJQVFnQldwQkxqb0FBQ0FBSUFWQkFXb2lCVFlDQ0FKQUlBQkJCR29vQWdBZ0JXc2dBazhOQUNBQUlBVWdBaER0QWlBQVxcXG5LQUlJSVFVTElBQW9BZ0FnQldvZ0FTQUNFS1FOR2lBQUlBVWdBbW8yQWdnTElBTkJNR29rQUNBR1FRQkhDOUFEQVFOL0l3QkJJR3NpQWlcXFxuUUFJQUpCQ0dvZ0FTZ0NBQ0lERUxZRUFrQUNRQ0FDTFFBSURRQUNRQ0FDTFFBSkRRQWdBa0VDTmdJUUlBTWdBa0VRYWhET0NDRUJJQUJCXFxcbmdwVHIzQU0yQWdnZ0FDQUJOZ0lBREFJTEFrQUNRQUpBSUFJdEFBb2lCRUVzUmcwQUFrQWdCRUhkQUVZTkFDQUJMUUFFRFFJZ0FrRUhOZ1xcXG5JUUlBTWdBa0VRYWhET0NDRUJJQUJCZ3BUcjNBTTJBZ2dnQUNBQk5nSUFEQVVMSUFCQmdaVHIzQU0yQWdnTUJBc2dBUzBBQkEwQUlBTWdcXFxuQXlnQ0NFRUJhallDQ0NBQ1FSQnFJQU1RdGdRQ1FDQUNMUUFRUlEwQUlBQkJncFRyM0FNMkFnZ2dBQ0FDS0FJVU5nSUFEQVFMQWtBZ0FpXFxcbjBBRVVVTkFDQUNMUUFTSVFRTUFnc2dBa0VGTmdJUUlBTWdBa0VRYWhET0NDRUJJQUJCZ3BUcjNBTTJBZ2dnQUNBQk5nSUFEQU1MSUFGQlxcXG5BRG9BQkFzQ1FDQUVRZjhCY1VIZEFFY05BQ0FDUVJVMkFoQWdBeUFDUVJCcUVNNElJUUVnQUVHQ2xPdmNBellDQ0NBQUlBRTJBZ0FNQWdcXFxuc2dBa0VRYWlBREVLOERBa0FnQWlnQ0dDSUJRWUdVNjl3RFJnMEFJQUFnQVRZQ0NDQUFJQUlwQXhBM0F3QU1BZ3NnQUVHQ2xPdmNBellDXFxcbkNDQUFJQUlvQWhBMkFnQU1BUXNnQUVHQ2xPdmNBellDQ0NBQUlBSW9BZ3cyQWdBTElBSkJJR29rQUF1eEF3RUJmeU1BUWZBQWF5SUhKQVxcXG5BZ0J5QUNOZ0lNSUFjZ0FUWUNDQ0FISUFRMkFoUWdCeUFETmdJUUFrQUNRQUpBQWtBZ0FFSC9BWEVPQXdBQkFnQUxJQWRCK1p6T0FEWUNcXFxuR0VFQ0lRSU1BZ3NnQjBIM25NNEFOZ0lZUVFJaEFnd0JDeUFIUWZDY3pnQTJBaGhCQnlFQ0N5QUhJQUkyQWh3Q1FDQUZLQUlBRFFBZ0IwXFxcbkhNQUdwQnJRSTJBZ0FnQjBFNGFrRU1ha0d0QWpZQ0FDQUhRZGdBYWtFTWFrSUROd0lBSUFkQkJEWUNYQ0FIUWR5ZHpnQTJBbGdnQjBHdVxcXG5BallDUENBSElBZEJPR28yQW1BZ0J5QUhRUkJxTmdKSUlBY2dCMEVJYWpZQ1FDQUhJQWRCR0dvMkFqZ2dCMEhZQUdvZ0JoQ1lDQUFMSUFcXFxuZEJJR3BCRUdvZ0JVRVFhaWtDQURjREFDQUhRU0JxUVFocUlBVkJDR29wQWdBM0F3QWdCeUFGS1FJQU53TWdJQWRCMkFCcVFReHFRZ1EzXFxcbkFnQWdCMEhVQUdwQnNRSTJBZ0FnQjBITUFHcEJyUUkyQWdBZ0IwRTRha0VNYWtHdEFqWUNBQ0FIUVFRMkFsd2dCMEc0bmM0QU5nSllJQVxcXG5kQnJnSTJBandnQnlBSFFUaHFOZ0pnSUFjZ0IwRWdhallDVUNBSElBZEJFR28yQWtnZ0J5QUhRUWhxTmdKQUlBY2dCMEVZYWpZQ09DQUhcXFxuUWRnQWFpQUdFSmdJQUF1Z0F3RURmeU1BUWZBQWF5SURKQUFnQXlBQ0tBSU1JZ1EyQWpnZ0F5QUNLQUlBSWdVMkFqQWdBeUFGUVFocU5nXFxcbklvSUFNZ0JTQUNLQUlFYWtFQmFqWUNMQ0FESUFVcEF3QkNmNFZDZ0lHQ2hJaVFvTUNBZjRNM0F5QWdBMEhZQUdvZ0FVRUJJQVFRdFF3Q1xcXG5RQUpBQWtBQ1FDQURLQUpZUVFKR0RRQWdBMEhBQUdwQkVHb2dBMEhZQUdwQkVHb29BZ0EyQWdBZ0EwSEFBR3BCQ0dvZ0EwSFlBR3BCQ0dcXFxub3BBd0EzQXdBZ0F5QURLUU5ZTndOQUEwQWdBMEVZYWlBRFFTQnFFT1FKSUFNb0FoZ2lBa1VOQXlBREtBSWNJUVVnQXlBQ05nSnNJQU1nXFxcbkJUWUNXQ0FEUVJCcUlBTkJ3QUJxSUFOQjdBQnFJQU5CMkFCcUVOc0ZJQU1vQWhCRkRRQUxJQU1vQWhRaEFpQURRY0FBYWtFRWNoQ0VDeVxcXG5BRFFjZ0FhaENHQ3d3QkN5QURLQUpjSVFJTFFRRWhCUXdCQ3lBRFFkZ0Fha0VRYWlBRFFjQUFha0VRYWlnQ0FEWUNBQ0FEUWRnQWFrRUlcXFxuYWlBRFFjQUFha0VJYWlrREFEY0RBQ0FESUFNcEEwQTNBMWdnQTBFSWFpQURRZGdBYWhEQ0NTQURLQUlNSVFJZ0F5Z0NDQ0VGQ3lBQUlBXFxcbkkyQWdRZ0FDQUZOZ0lBSUFOQjhBQnFKQUFMbXdNQkFuOGpBRUhRQUdzaUFpUUFJQUpCQ0dvZ0FSQzJCQUpBQWtBQ1FBSkFJQUl0QUFnTlxcXG5BQ0FDTFFBSkRRSWdBa0VGTmdJb0lBRWdBa0VvYWhET0NDRUJEQUVMSUFJb0Fnd2hBUXNnQUVFQk5nSUFJQUFnQVRZQ0JBd0JDd0pBQWtcXFxuQUNRQUpBQWtBQ1FDQUNMUUFLSWdOQi93RnhRUzFIRFFBZ0FTQUJLQUlJUVFGcU5nSUlJQUpCS0dvZ0FVRUFFSm9CSUFJcEF5aENBMUVOXFxcbkF5QUNRUmhxUVFocUlBSkJLR3BCQ0dvcEF3QTNBd0FnQWlBQ0tRTW9Od01ZSUFKQkNHb2dBa0VZYWhDb0JBd0JDd0pBSUFOQlVHcEIvd1xcXG5GeFFRcEpEUUFnQWlBQklBSkJ5QUJxUWJpQndBQVFhRFlDREF3RUN5QUNRU2hxSUFGQkFSQ2FBU0FDS1FNb1FnTlJEUUVnQWtFNGFrRUlcXFxuYWlBQ1FTaHFRUWhxS1FNQU53TUFJQUlnQWlrREtEY0RPQ0FDUVFocUlBSkJPR29RcUFRTElBSW9BZ2dOQWlBQUlBSXBBeEEzQXdoQkFDXFxcbkVCREFNTElBQWdBaWdDTURZQ0JDQUFRUUUyQWdBTUF3c2dBQ0FDS0FJd05nSUVJQUJCQVRZQ0FBd0NDeUFBSUFJb0Fnd2dBUkNwQmpZQ1xcXG5CRUVCSVFFTElBQWdBVFlDQUFzZ0FrSFFBR29rQUF1bkF3RURmeU1BUVNCcklnSWtBQ0FDUVFocUlBRW9BZ0FpQXhDMkJBSkFBa0FnQWlcXFxuMEFDQTBBQWtBZ0FpMEFDUTBBSUFKQkFqWUNFQ0FESUFKQkVHb1F6Z2doQVNBQVFnSTNBd0FnQUNBQk5nSUlEQUlMQWtBQ1FBSkFJQUl0XFxcbkFBb2lCRUVzUmcwQUFrQWdCRUhkQUVZTkFDQUJMUUFFRFFJZ0FrRUhOZ0lRSUFNZ0FrRVFhaERPQ0NFQklBQkNBamNEQUNBQUlBRTJBZ1xcXG5nTUJRc2dBRUlBTndNQURBUUxJQUV0QUFRTkFDQURJQU1vQWdoQkFXbzJBZ2dnQWtFUWFpQURFTFlFQWtBZ0FpMEFFRVVOQUNBQUlBSW9cXFxuQWhRMkFnZ2dBRUlDTndNQURBUUxBa0FnQWkwQUVVVU5BQ0FDTFFBU0lRUU1BZ3NnQWtFRk5nSVFJQU1nQWtFUWFoRE9DQ0VCSUFCQ0FqXFxcbmNEQUNBQUlBRTJBZ2dNQXdzZ0FVRUFPZ0FFQ3dKQUlBUkIvd0Z4UWQwQVJ3MEFJQUpCRlRZQ0VDQURJQUpCRUdvUXpnZ2hBU0FBUWdJM1xcXG5Bd0FnQUNBQk5nSUlEQUlMSUFKQkVHb2dBeEREQVFKQUlBSW9BaEFOQUNBQUlBSXBBeGczQXdnZ0FFSUJOd01BREFJTElBQWdBaWdDRkRcXFxuWUNDQ0FBUWdJM0F3QU1BUXNnQUNBQ0tBSU1OZ0lJSUFCQ0FqY0RBQXNnQWtFZ2FpUUFDNmNEQVFOL0l3QkJJR3NpQWlRQUlBSkJDR29nXFxcbkFTZ0NBQ0lERUxZRUFrQUNRQ0FDTFFBSURRQUNRQ0FDTFFBSkRRQWdBa0VDTmdJUUlBTWdBa0VRYWhET0NDRUJJQUJCQWpZQ0FDQUFJQVxcXG5FMkFnUU1BZ3NDUUFKQUFrQWdBaTBBQ2lJRVFTeEdEUUFDUUNBRVFkMEFSZzBBSUFFdEFBUU5BaUFDUVFjMkFoQWdBeUFDUVJCcUVNNElcXFxuSVFFZ0FFRUNOZ0lBSUFBZ0FUWUNCQXdGQ3lBQVFRQTJBZ0FNQkFzZ0FTMEFCQTBBSUFNZ0F5Z0NDRUVCYWpZQ0NDQUNRUkJxSUFNUXRnXFxcblFDUUNBQ0xRQVFSUTBBSUFBZ0FpZ0NGRFlDQkNBQVFRSTJBZ0FNQkFzQ1FDQUNMUUFSUlEwQUlBSXRBQkloQkF3Q0N5QUNRUVUyQWhBZ1xcXG5BeUFDUVJCcUVNNElJUUVnQUVFQ05nSUFJQUFnQVRZQ0JBd0RDeUFCUVFBNkFBUUxBa0FnQkVIL0FYRkIzUUJIRFFBZ0FrRVZOZ0lRSUFcXFxuTWdBa0VRYWhET0NDRUJJQUJCQWpZQ0FDQUFJQUUyQWdRTUFnc2dBa0VRYWlBREVNOEJBa0FnQWlnQ0VBMEFJQUFnQWlnQ0ZEWUNCQ0FBXFxcblFRRTJBZ0FNQWdzZ0FDQUNLQUlVTmdJRUlBQkJBallDQUF3QkN5QUFJQUlvQWd3MkFnUWdBRUVDTmdJQUN5QUNRU0JxSkFBTG9BTUJCM1xcXG44akFFRXdheUlESkFBQ1FBSkFBa0FEUUNBQktBSUlJZ1FnQVNnQ0JDSUZJQVFnQlVzYklRWWdBU2dDQUNFSElBUWhDQUpBQWtBRFFDQUdcXFxuSUFoR0RRRWdCeUFJYWkwQUFDSUpRY3pWd0FCcUxRQUFEUUlnQVNBSVFRRnFJZ2cyQWdnTUFBc0xJQVVnQkVrTkJDQURRUVEyQWlBZ0FDXFxcbkFCSUFOQklHb1F5Z2NNQXdzQ1FDQUpRZHdBUmcwQUlBbEJJa1lOQWlBQklBaEJBV28yQWdnZ0EwRVFOZ0lnSUFBZ0FTQURRU0JxRU1vSFxcXG5EQU1MSUFOQkdHb2dCQ0FJSUFjZ0JVSDgxTUFBRUpRSElBSWdBeWdDR0NBREtBSWNFSUVNSUFFZ0NFRUJhallDQ0NBQlFRRWdBaEJtSWdcXFxuaEZEUUFMSUFCQkFqWUNBQ0FBSUFnMkFnUU1BUXNDUUNBQ0tBSUlSUTBBSUFOQkVHb2dCQ0FJSUFjZ0JVR2MxY0FBRUpRSElBSWdBeWdDXFxcbkVDQURLQUlVRUlFTUlBRWdDRUVCYWpZQ0NDQUFRUUUyQWdBZ0FDQUNLQUlJTmdJSUlBQWdBaWdDQURZQ0JBd0JDeUFEUVFocUlBUWdDQ1xcXG5BSElBVkJqTlhBQUJDVUJ5QUFJQU1wQXdnM0FnUWdBU0FJUVFGcU5nSUlJQUJCQURZQ0FBc2dBMEV3YWlRQUR3c2dCaUFGUWV6VXdBQVFcXFxuZ1FVQUM1UURBUTEvSXdCQndBQnJJZ0lrQUFKQUEwQWdBaUFBRURnQ1FBSkFBa0FnQWkwQUFDSURRUXBHRFFBZ0FpZ0NFQ0VFSUFJb0FnXFxcbndoQlNBQ0tBSUlJUVlnQWlnQ0JDRUhJQUl0QUFFaENDQUNRU0JxSUFFUU9BSkFJQUl0QUNBaUNVRUtSdzBBUVFFaENnd0ZDMEVDSVFvZ1xcXG5BMEY2YWtIL0FYRWlDMEVCYWtFQUlBdEJCRWtiSWd4QkFDQUpRWHBxUWY4QmNTSUxRUUZxSUF0QkEwc2lEUnRIRFFRZ0FpZ0NLQ0VMSUFcXFxuSW9BaVFoRGdKQUlBd09CUUFFQkFRQ0JBc2dEVVVOQXlBRElBbEhEUVFnQWlnQ01DRUpJQUlvQWl3aERDQUNMUUFoSVEwQ1FBSkFBa0FDXFxcblFBSkFJQU1PQmdRQUFRSURCd1FMSUFjZ0JpQU9JQXNRcGdwRkRRZ2dCU0FFSUF3Z0NSQ21DZzBIREFnTElBaEIvd0Z4SUExQi93RnhSZ1xcXG4wR0RBY0xJQWNnQmlBT0lBc1FwZ29OQlF3R0N5QUhJQVlnRGlBTEVLWUtSUTBGSUFVZ0JDQU1JQWtRcGdvTkJBd0ZDeUFISUFZZ0RpQUxcXFxuRUtZS0RRTU1CQXRCQXlFS0RBTUxJQWNnQmlBT0lBc1FwZ29OQVF3Q0N5QUlRZjhCY1NBTlFmOEJjVVlOQUFzTElBSkJ3QUJxSkFBZ0NnXFxcbnY5QWdFRmZ5QUFRUXQwSVFGQkFDRUNRU0VoQTBFaElRUUNRQUpBQTBBQ1FBSkFRWDhnQTBFQmRpQUNhaUlGUVFKMFFZVEZ6Z0JxS0FJQVxcXG5RUXQwSWdNZ0FVY2dBeUFCU1JzaUEwRUJSdzBBSUFVaEJBd0JDeUFEUWY4QmNVSC9BVWNOQWlBRlFRRnFJUUlMSUFRZ0Ftc2hBeUFFSUFcXFxuSkxEUUFNQWdzTElBVkJBV29oQWdzQ1FBSkFBa0FDUUFKQUlBSkJJRXNOQUNBQ1FRSjBJZ0ZCaE1YT0FHb29BZ0JCRlhZaEJDQUNRU0JIXFxcbkRRRkIxd1VoQlVFZklRSU1BZ3NnQWtFaFFkaTV6Z0FRZ1FVQUN5QUJRWWpGemdCcUtBSUFRUlYySVFVZ0FrVU5BU0FDUVg5cUlRSUxJQVxcXG5KQkFuUkJoTVhPQUdvb0FnQkIvLy8vQUhFaEFnd0JDMEVBSVFJTEFrQWdCU0FFUVg5emFrVU5BQ0FBSUFKcklRTWdCRUhYQlNBRVFkY0ZcXFxuU3hzaEFTQUZRWDlxSVFWQkFDRUNBMEFDUUFKQUlBRWdCRVlOQUNBQ0lBUkJpTWJPQUdvdEFBQnFJZ0lnQTAwTkFRd0RDeUFCUWRjRlFlXFxcbmk1emdBUWdRVUFDeUFGSUFSQkFXb2lCRWNOQUFzZ0JTRUVDeUFFUVFGeEMvMENBUVYvSUFCQkMzUWhBVUVBSVFKQkl5RURRU01oQkFKQVxcXG5Ba0FEUUFKQUFrQkJmeUFEUVFGMklBSnFJZ1ZCQW5SQitMbk9BR29vQWdCQkMzUWlBeUFCUnlBRElBRkpHeUlEUVFGSERRQWdCU0VFREFcXFxuRUxJQU5CL3dGeFFmOEJSdzBDSUFWQkFXb2hBZ3NnQkNBQ2F5RURJQVFnQWtzTkFBd0NDd3NnQlVFQmFpRUNDd0pBQWtBQ1FBSkFBa0FnXFxcbkFrRWlTdzBBSUFKQkFuUWlBVUg0dWM0QWFpZ0NBRUVWZGlFRUlBSkJJa2NOQVVIckJpRUZRU0VoQWd3Q0N5QUNRU05CMkxuT0FCQ0JCUVxcXG5BTElBRkIvTG5PQUdvb0FnQkJGWFloQlNBQ1JRMEJJQUpCZjJvaEFnc2dBa0VDZEVINHVjNEFhaWdDQUVILy8vOEFjU0VDREFFTFFRQWhcXFxuQWdzQ1FDQUZJQVJCZjNOcVJRMEFJQUFnQW1zaEF5QUVRZXNHSUFSQjZ3WkxHeUVCSUFWQmYyb2hCVUVBSVFJRFFBSkFBa0FnQVNBRVJnXFxcbjBBSUFJZ0JFR0V1ODRBYWkwQUFHb2lBaUFEVFEwQkRBTUxJQUZCNndaQjZMbk9BQkNCQlFBTElBVWdCRUVCYWlJRVJ3MEFDeUFGSVFRTFxcXG5JQVJCQVhFTC9RSUJCWDhnQUVFTGRDRUJRUUFoQWtFV0lRTkJGaUVFQWtBQ1FBTkFBa0FDUUVGL0lBTkJBWFlnQW1vaUJVRUNkRUh3d2NcXFxuNEFhaWdDQUVFTGRDSURJQUZISUFNZ0FVa2JJZ05CQVVjTkFDQUZJUVFNQVFzZ0EwSC9BWEZCL3dGSERRSWdCVUVCYWlFQ0N5QUVJQUpyXFxcbklRTWdCQ0FDU3cwQURBSUxDeUFGUVFGcUlRSUxBa0FDUUFKQUFrQUNRQ0FDUVJWTERRQWdBa0VDZENJQlFmREJ6Z0JxS0FJQVFSVjJJUVxcXG5RZ0FrRVZSdzBCUWJzQ0lRVkJGQ0VDREFJTElBSkJGa0hZdWM0QUVJRUZBQXNnQVVIMHdjNEFhaWdDQUVFVmRpRUZJQUpGRFFFZ0FrRi9cXFxuYWlFQ0N5QUNRUUowUWZEQnpnQnFLQUlBUWYvLy93QnhJUUlNQVF0QkFDRUNDd0pBSUFVZ0JFRi9jMnBGRFFBZ0FDQUNheUVESUFSQnV3XFxcbklnQkVHN0Frc2JJUUVnQlVGL2FpRUZRUUFoQWdOQUFrQUNRQ0FCSUFSR0RRQWdBaUFFUWNqQ3pnQnFMUUFBYWlJQ0lBTk5EUUVNQXdzZ1xcXG5BVUc3QWtIb3VjNEFFSUVGQUFzZ0JTQUVRUUZxSWdSSERRQUxJQVVoQkFzZ0JFRUJjUXZRQXdJQmZ3SitJd0JCTUdzaUF5UUFJQU1nQWpcXFxub0FGQ0FESUFFMkFoQkNBQ0VFUVFBaEFnSkFBMEFnQTBFWWFpQURRUkJxRUtvQkFrQUNRQUpBQWtBQ1FBSkFJQU10QUJnTkFDQURMUUFaXFxcbkRnTURBZ0VDQ3lBQVFZQ1U2OXdETmdJSUlBQWdBeWdDSERZQ0FBd0dDd0pBSUFSQ0FGSU5BRUd1ZzhBQVFSQVF6UVVoQWlBQVFZQ1U2OVxcXG53RE5nSUlJQUFnQWpZQ0FBd0dDd0pBSUFJTkFFR2RnOEFBUVJFUXpRVWhBaUFBUVlDVTY5d0ROZ0lJSUFBZ0FqWUNBQXdHQ3dKQUlBVWdcXFxuQVJET0NTSUNEUUFnQXlBRklBRVFsUVVnQXlrREFDRUVJQUFnQXlnQ0NEWUNDQ0FBSUFRM0F3QU1CZ3NnQUVHQWxPdmNBellDQ0NBQUlBXFxcbkkyQWdBTUJRc2dBZzBCSUFOQklHb2dBMEVRYWhEUENRSkFJQU1vQWlBTkFDQURLQUlrSVFGQkFTRUNEQVFMSUFCQmdKVHIzQU0yQWdnZ1xcXG5BQ0FES0FJa05nSUFEQVFMQWtBZ0JGQU5BRUd1ZzhBQVFSQVF6Z1VoQWlBQVFZQ1U2OXdETmdJSUlBQWdBallDQUF3RUN5QURRU0JxSUFcXFxuTkJFR29RMEFrZ0F5Z0NJRVVOQVNBQVFZQ1U2OXdETmdJSUlBQWdBeWdDSkRZQ0FBd0RDMEdkZzhBQVFSRVF6Z1VoQWlBQVFZQ1U2OXdEXFxcbk5nSUlJQUFnQWpZQ0FBd0NDeUFES1FNb0lRVkNBU0VFREFBTEN5QURRVEJxSkFBTDNBSUJBWDhnQUNBQktBSWNJZ0pCR0hRZ0FrR0EvZ1xcXG5OeFFRaDBjaUFDUVFoMlFZRCtBM0VnQWtFWWRuSnlOZ0ljSUFBZ0FTZ0NHQ0lDUVJoMElBSkJnUDREY1VFSWRISWdBa0VJZGtHQS9nTnhcXFxuSUFKQkdIWnljallDR0NBQUlBRW9BaFFpQWtFWWRDQUNRWUQrQTNGQkNIUnlJQUpCQ0haQmdQNERjU0FDUVJoMmNuSTJBaFFnQUNBQktBXFxcbklRSWdKQkdIUWdBa0dBL2dOeFFRaDBjaUFDUVFoMlFZRCtBM0VnQWtFWWRuSnlOZ0lRSUFBZ0FTZ0NEQ0lDUVJoMElBSkJnUDREY1VFSVxcXG5kSElnQWtFSWRrR0EvZ054SUFKQkdIWnljallDRENBQUlBRW9BZ2dpQWtFWWRDQUNRWUQrQTNGQkNIUnlJQUpCQ0haQmdQNERjU0FDUVJcXFxuaDJjbkkyQWdnZ0FDQUJLQUlFSWdKQkdIUWdBa0dBL2dOeFFRaDBjaUFDUVFoMlFZRCtBM0VnQWtFWWRuSnlOZ0lFSUFBZ0FTZ0NBQ0lCXFxcblFSaDBJQUZCZ1A0RGNVRUlkSElnQVVFSWRrR0EvZ054SUFGQkdIWnljallDQUF2MEFnRUhmMEVCSVFjQ1FBSkFJQUpGRFFBZ0FTQUNRUVxcXG5GMGFpRUlJQUJCZ1A0RGNVRUlkaUVKUVFBaENpQUFRZjhCY1NFTEEwQWdBVUVDYWlFTUlBb2dBUzBBQVNJQ2FpRU5Ba0FnQVMwQUFDSUJcXFxuSUFsR0RRQWdBU0FKU3cwQ0lBMGhDaUFNSVFFZ0RDQUlSZzBDREFFTEFrQUNRQUpBSUEwZ0Nra05BQ0FOSUFSTERRRWdBeUFLYWlFQkEwXFxcbkFnQWtVTkF5QUNRWDlxSVFJZ0FTMEFBQ0VLSUFGQkFXb2hBU0FLSUF0SERRQUxRUUFoQnd3RkN5QUtJQTFCOUt2T0FCQ0VCUUFMSUEwZ1xcXG5CRUgwcTg0QUVJTUZBQXNnRFNFS0lBd2hBU0FNSUFoSERRQUxDeUFHUlEwQUlBVWdCbW9oQ3lBQVFmLy9BM0VoQVVFQklRY0NRQU5BSUFcXFxuVkJBV29oQ2dKQUFrQWdCUzBBQUNJQ3dDSU5RUUJJRFFBZ0NpRUZEQUVMSUFvZ0MwWU5BaUFOUWY4QWNVRUlkQ0FGTFFBQmNpRUNJQVZCXFxcbkFtb2hCUXNnQVNBQ2F5SUJRUUJJRFFJZ0IwRUJjeUVISUFVZ0MwY05BQXdDQ3d0QnZaVE9BRUVyUVlTc3pnQVFnd2NBQ3lBSFFRRnhDN1xcXG5JREFRRi9Jd0JCd0FCcklnSWtBQUpBQWtBQ1FBSkFBa0FDUUNBQUxRQUFEZ1FBQVFJREFBc2dBaUFBS0FJRU5nSUVRUUF0QVBHbVR4cEJcXFxuRkVFQkVQY0xJZ0JGRFFRZ0FFRVFha0VBS0FDZjlFMDJBQUFnQUVFSWFrRUFLUUNYOUUwM0FBQWdBRUVBS1FDUDlFMDNBQUFnQWtLVWdJXFxcbkNBd0FJM0Fnd2dBaUFBTmdJSUlBSkJLR3BCREdwQ0FqY0NBQ0FDUVJocVFReHFRWWdDTmdJQUlBSkJBellDTENBQ1FienF6UUEyQWlnZ1xcXG5Ba0dKQWpZQ0hDQUNJQUpCR0dvMkFqQWdBaUFDUVFScU5nSWdJQUlnQWtFSWFqWUNHQ0FCSUFKQktHb1FyUVVoQUNBQ0tBSU1JZ0ZGRFFcXFxuTWdBaWdDQ0NBQlFRRVFzZ3dNQXdzZ0FDMEFBU0VBSUFKQk5HcENBVGNDQUNBQ1FRRTJBaXdnQWtIYzQ4MEFOZ0lvSUFKQmlnSTJBZ3dnXFxcbkFpQUFRUUowSWdCQnBQVE5BR29vQWdBMkFod2dBaUFBUWNqMXpRQnFLQUlBTmdJWUlBSWdBa0VJYWpZQ01DQUNJQUpCR0dvMkFnZ2dBU1xcXG5BQ1FTaHFFSzBGSVFBTUFnc2dBQ2dDQkNJQUtBSUFJQUFvQWdRZ0FSQ2NEU0VBREFFTElBQW9BZ1FpQUNnQ0FDQUJJQUFvQWdRb0FoQVJcXFxuQmdBaEFBc2dBa0hBQUdva0FDQUFEd3RCQVVFVUVKb05BQXVSQXdFQ2Z5TUFRY0FBYXlJQ0pBQWdBaUFCRUxZRUFrQUNRQUpBQWtBZ0FpXFxcbjBBQUEwQUlBSXRBQUVOQWlBQ1FRVTJBaGdnQVNBQ1FSaHFFTTRJSVFFTUFRc2dBaWdDQkNFQkN5QUFRUUUyQWdBZ0FDQUJOZ0lFREFFTFxcXG5Ba0FDUUFKQUFrQUNRQUpBSUFJdEFBSWlBMEgvQVhGQkxVY05BQ0FCSUFFb0FnaEJBV28yQWdnZ0FrRVlhaUFCUVFBUW1nRWdBaWtER0VcXFxuSURVUTBESUFKQkNHcEJDR29nQWtFWWFrRUlhaWtEQURjREFDQUNJQUlwQXhnM0F3Z2dBaUFDUVFocUVJWUREQUVMQWtBZ0EwRlFha0gvXFxcbkFYRkJDa2tOQUNBQ0lBRWdBa0U0YWtHb2djQUFFR2cyQWdRTUJBc2dBa0VZYWlBQlFRRVFtZ0VnQWlrREdFSURVUTBCSUFKQktHcEJDR1xcXG5vZ0FrRVlha0VJYWlrREFEY0RBQ0FDSUFJcEF4ZzNBeWdnQWlBQ1FTaHFFSVlEQ3lBQ0tBSUFEUUlnQUNBQ0tBSUVOZ0lFUVFBaEFRd0RcXFxuQ3lBQUlBSW9BaUEyQWdRZ0FFRUJOZ0lBREFNTElBQWdBaWdDSURZQ0JDQUFRUUUyQWdBTUFnc2dBQ0FDS0FJRUlBRVFxUVkyQWdSQkFTXFxcbkVCQ3lBQUlBRTJBZ0FMSUFKQndBQnFKQUFMc3dNQkJuOGpBRUhBQUdzaUF5UUFBa0FDUUFKQUFrQWdBRUhJQVdvb0FnQW9BbEFpQkNBQVxcXG5LQUxRQVNJRmF5SUdJQUpMRFFBZ0FFR0FBV29oQndKQUlBVkZEUUFnQTBFNGFpQUFJQVVnQkVHSS9NQUFFTE1ISUFNb0Fqd2hCU0FES0FcXFxuSTRJUWdnQTBFd2FpQUJJQUlnQmtHWS9NQUFFTEVISUFnZ0JTQURLQUl3SUFNb0FqUkJxUHpBQUJEekNTQURRU2hxSUFCQmdBRWdCRUc0XFxcbi9NQUFFTEVISUFjZ0F5Z0NLQ0FES0FJc0VMOERJQU5CSUdvZ0JpQUJJQUpCeVB6QUFCQ0ZDU0FES0FJZ0lRRWdBRUVBTmdMUUFTQURLQVxcXG5Ja0lRSUxJQVJGRFFNZ0EwRVlhaUFCSUFJZ0FpQUNJQVJ3SWdWcklnUkI2UHpBQUJDeEJ5QUhJQU1vQWhnZ0F5Z0NIQkMvQXlBRlJRMENcXFxuSUFOQkVHb2dBQ0FGUWZqOHdBQVEwd2NnQXlnQ0ZDRUdJQU1vQWhBaEJ5QURRUWhxSUFRZ0FTQUNRWWo5d0FBUWhRa2dCeUFHSUFNb0FnXFxcbmdnQXlnQ0RFR1kvY0FBRVBNSkRBRUxJQU1nQUNBRklBVWdBbXBCNlB2QUFCQ3pCeUFES0FJQUlBTW9BZ1FnQVNBQ1Fmajd3QUFROHdrZ1xcXG5BQ2dDMEFFZ0Ftb2hCUXNnQUNBRk5nTFFBUXNnQTBIQUFHb2tBQThMUWVEMXdBQkJHVUhZL01BQUVJTUhBQXVqQXdFQ2Z5TUFRZEFBYXlcXFxuSUdKQUFnQmlBRU5nSVlJQVlnQlRZQ0hDQUdRUkJxSUFVZ0JHdEJBQkRWQkNBR1FRQTJBaWdnQmlBR0tRTVFOd01nQWtBQ1FBTkFBa0FDXFxcblFDQUdRUmhxRU1nSklnUkJJMFlOQUNBRVFZQ0F4QUJIRFFGQkFDRUVEQVFMSUFFdEFDQkZEUUlMSUFFZ0JDQUdRUmhxRU5nQklBWkJJR1xcXG5vZ0JCRGVCQXdBQ3dzZ0JpZ0NIQ0VGSUFZb0FoZ2hCQXNnQmtFSWFpQUJJQU5Cdkk3QkFCQ0ZCZ0pBQWtBQ1FDQUdLQUlJSWdNZ0JpZ0NcXFxuRENJSFFmK0l3UUJCQkJDbUNnMEFJQU1nQjBHRGljRUFRUVVRcGdvTkFDQURJQWRCalluQkFFRUVFS1lLRFFBZ0F5QUhRZnlJd1FCQkF4XFxcbkNtQ2tVTkFRc2dBU2dDRUNJRFJRMEFJQVpCTUdvZ0F5QUdLQUlnSUFZb0FpZ2dBVUVVYWlnQ0FDZ0NGQkVMQUF3QkN5QUdRVEJxSUFZb1xcXG5BaUFnQmlnQ0tCRGxDZ3NnQmlBR1FUQnFFSXNLSUFZZ0Jpa0RBRGNEUUNBR1FkeU93UUJCekk3QkFDQUNRZjhCY1VFQ1JoczJBa2dnQVNcXFxuQUdRY0FBYWhEbUJRSkFJQVlvQWpCRkRRQWdCa0V3YWhDS0RRc2dCa0VnYWhDS0RTQUFJQVUyQWdRZ0FDQUVOZ0lBSUFaQjBBQnFKQUFMXFxcbnp3TUJBWDhqQUVFd2F5SUNKQUFDUUFKQUFrQUNRQUpBQWtBZ0FDMEFBQTRFQUFFQ0F3QUxJQUlnQUNnQ0JEWUNEQ0FDUVJCcUlBRkJpT1xcXG5yTkFFRUNFSzBKSUFKQkVHcEJpdXJOQUVFRUlBSkJER3BCa09yTkFCRFRBU0VBSUFKQktEb0FIeUFBUWRicHpRQkJCQ0FDUVI5cVFkenBcXFxuelFBUTB3RWhBVUVBTFFEeHBrOGFRUlJCQVJEM0N5SUFSUTBFSUFCQkVHcEJBQ2dBbi9STk5nQUFJQUJCQ0dwQkFDa0FsL1JOTndBQUlBXFxcbkJCQUNrQWovUk5Od0FBSUFKQ2xJQ0FnTUFDTndJa0lBSWdBRFlDSUNBQlFlenB6UUJCQnlBQ1FTQnFRYURxelFBUTB3RVExZ1FoQUNBQ1xcXG5LQUlrSWdGRkRRTWdBaWdDSUNBQlFRRVFzZ3dNQXdzZ0FpQUFMUUFCT2dBUUlBSkJJR29nQVVHRTZzMEFRUVFRN0FnZ0FrRWdhaUFDUVJcXFxuQnFRZHpwelFBUTlBRVF3Z01oQUF3Q0N5QUFLQUlFSVFBZ0FrRWdhaUFCUWRIcHpRQkJCUkN0Q1NBQ1FTQnFRZGJwelFCQkJDQUFRUWhxXFxcblFkenB6UUFRMHdGQjdPbk5BRUVISUFCQjlPbk5BQkRUQVJEV0JDRUFEQUVMSUFJZ0FDZ0NCQ0lBTmdJZ0lBRkIzKy9OQUVFR1FkYnB6UVxcXG5CQkJDQUFRUWhxUWR6cHpRQkI1ZS9OQUVFRklBSkJJR3BCN08vTkFCRC9BaUVBQ3lBQ1FUQnFKQUFnQUE4TFFRRkJGQkNhRFFBTHJRTUNcXFxuQlg4QmZpTUFRY0FBYXlJRkpBQkJBU0VHQWtBZ0FDMEFCQTBBSUFBdEFBVWhCd0pBSUFBb0FnQWlDQ2dDSENJSlFRUnhEUUJCQVNFR0lBXFxcbmdvQWhSQnNaN09BRUd6bnM0QUlBZEIvd0Z4SWdjYlFRSkJBeUFIR3lBSVFSaHFLQUlBS0FJTUVRa0FEUUZCQVNFR0lBZ29BaFFnQVNBQ1xcXG5JQWdvQWhnb0Fnd1JDUUFOQVVFQklRWWdDQ2dDRkVIOG5jNEFRUUlnQ0NnQ0dDZ0NEQkVKQUEwQklBTWdDQ0FFS0FJTUVRWUFJUVlNQVFcXFxuc0NRQ0FIUWY4QmNRMEFRUUVoQmlBSUtBSVVRYXllemdCQkF5QUlRUmhxS0FJQUtBSU1FUWtBRFFFZ0NDZ0NIQ0VKQzBFQklRWWdCVUVCXFxcbk9nQVhJQVZCTUdwQmtKN09BRFlDQUNBRklBZ3BBaFEzQXdnZ0JTQUZRUmRxTmdJUUlBVWdDQ2tDQ0RjRElDQUlLUUlBSVFvZ0JTQUpOZ1xcXG5JMElBVWdDQ2dDRURZQ0tDQUZJQWd0QUNBNkFEZ2dCU0FLTndNWUlBVWdCVUVJYWpZQ0xDQUZRUWhxSUFFZ0FoQjZEUUFnQlVFSWFrSDhcXFxubmM0QVFRSVFlZzBBSUFNZ0JVRVlhaUFFS0FJTUVRWUFEUUFnQlNnQ0xFR3ZuczRBUVFJZ0JTZ0NNQ2dDREJFSkFDRUdDeUFBUVFFNkFBXFxcblVnQUNBR09nQUVJQVZCd0FCcUpBQWdBQXVUQXdFQmZ5TUFRZUFCYXlJSEpBQWdCeUFFTmdJTUlBZEIyQUJxSUFJZ0F4Q2FDUUpBQWtBZ1xcXG5CeWdDV0NJRFFRSkdEUUFnQnkwQVhDRUNJQWRCRUdwQkJYSWdCMEhZQUdwQkJYSkJ3d0FRcEEwYUlBY2dBam9BRkNBSElBTTJBaEFnQjBcXFxuR2dBV29nQkJEbERBSkFJQWNvQXFBQklnUU5BQ0FISUFjb0FxUUJOZ0xFQVNBSFFlUUFha0lCTndJQUlBZEJBVFlDWENBSFFlQ0N3QUEyXFxcbkFsZ2dCMEVQTmdMY0FTQUhJQWRCMkFGcU5nSmdJQWNnQjBIRUFXbzJBdGdCSUFkQnlBRnFJQWRCMkFCcUVJOEVJQWRCeUFGcUVOOE5JUVxcXG5RZ0IwSEVBV29RaEFzZ0IwRWthaERqREF3Q0N5QUhRZGdBYWtFUWFpQUhRYUFCYWtFUWFpa0RBRGNEQUNBSFFkZ0Fha0VZYWlBSFFhQUJcXFxuYWtFWWFpa0RBRGNEQUNBSElBY3BBNmdCTndOZ0lBY2dCeWdDcEFFMkFsd2dCeUFFTmdKWUlBRWdCMEVRYWlBSFFkZ0FhaUFGSUFZUTl3XFxcbkVoQkNBSFFTUnFFT01NREFFTElBY3RBRndRc2cwaEJDQUhRUXhxRUlRTEN5QUhJQVFRd1FrZ0J5Z0NCQ0VFSUFBZ0J5Z0NBRFlDQUNBQVxcXG5JQVEyQWdRZ0IwSGdBV29rQUF1VEF3RUJmeU1BUWVBQmF5SUhKQUFnQnlBRU5nSU1JQWRCMkFCcUlBSWdBeENhQ1FKQUFrQWdCeWdDV0NcXFxuSURRUUpHRFFBZ0J5MEFYQ0VDSUFkQkVHcEJCWElnQjBIWUFHcEJCWEpCd3dBUXBBMGFJQWNnQWpvQUZDQUhJQU0yQWhBZ0IwR2dBV29nXFxcbkJCRGxEQUpBSUFjb0FxQUJJZ1FOQUNBSElBY29BcVFCTmdMRUFTQUhRZVFBYWtJQk53SUFJQWRCQVRZQ1hDQUhRZUNDd0FBMkFsZ2dCMFxcXG5FUE5nTGNBU0FISUFkQjJBRnFOZ0pnSUFjZ0IwSEVBV28yQXRnQklBZEJ5QUZxSUFkQjJBQnFFSThFSUFkQnlBRnFFTjhOSVFRZ0IwSEVcXFxuQVdvUWhBc2dCMEVrYWhEakRBd0NDeUFIUWRnQWFrRVFhaUFIUWFBQmFrRVFhaWtEQURjREFDQUhRZGdBYWtFWWFpQUhRYUFCYWtFWWFpXFxcbmtEQURjREFDQUhJQWNwQTZnQk53TmdJQWNnQnlnQ3BBRTJBbHdnQnlBRU5nSllJQUVnQjBFUWFpQUhRZGdBYWlBRklBWVFrZ0VoQkNBSFxcXG5RU1JxRU9NTURBRUxJQWN0QUZ3UXNnMGhCQ0FIUVF4cUVJUUxDeUFISUFRUXdRa2dCeWdDQkNFRUlBQWdCeWdDQURZQ0FDQUFJQVEyQWdcXFxuUWdCMEhnQVdva0FBdUJBd0lIZndOK0l3QkJrQUZySWdNa0FBSkFJQUZCR0dvb0FnQWlCQ0FDVFEwQUlBTkJDR29nQVNnQ0VDSUZJQUpCXFxcbkIzUnFJZ1pCZ0FFUXBBMGFJQVlnQlNBRVFYOXFJZ1JCQjNScVFZQUJFS01OSVFjZ0FTQUVOZ0lZQWtBZ0JDQUNUUTBBSUFFb0FnQWlDRVxcXG5GOGFpRUdJQUVvQWdRaUJTQUhLQUo0SWdkeElRRWdCMEVaZHExQ2dZS0VpSkNnd0lBQmZpRUtRUUFoQ1FOQUlBTWdDQ0FCYWlrQUFDSUxcXFxuSUFxRklneENmNFVnREVMLy9mdjM3OSsvLzM1OGcwS0FnWUtFaUpDZ3dJQi9nemNEaUFFRFFDQURJQU5CaUFGcUVJUUhBa0FnQXlnQ0FBXFxcbjBBQWtBZ0N5QUxRZ0dHZzBLQWdZS0VpSkNnd0lCL2cxQkZEUUFnQVNBSlFRaHFJZ2xxSUFWeElRRU1Bd3RCckozQUFFRVBRYnlkd0FBUVxcXG5pZ1lBQ3lBR0lBTW9BZ1FnQVdvZ0JYRWlCMEVDZEdzb0FnQWdCRWNOQUFzTElBaEJBQ0FIYTBFQ2RHcEJmR29nQWpZQ0FBc2dBQ0FEUVFcXFxuaHFRY2dBRUtRTlFjZ0FhaUFEUVFocVFjZ0Fha0V3RUtRTkdpQURRWkFCYWlRQUR3c2dBaUFFRVA0RUFBdWdBd0lCZndGK0l3QkI4QUZyXFxcbklnUWtBQ0FFUVpnQmFpQUNJQU1RbWdrQ1FBSkFBa0FnQkNnQ21BRWlBMEVDUmcwQUlBUXRBSndCSVFJZ0JFSFFBR3BCQlhJZ0JFR1lBV1xcXG5wQkJYSkJ3d0FRcEEwYUlBUWdBam9BVkNBRUlBTTJBbEFnQkVHWUFXb2dBU0FFUWRBQWFoQ3RCZ0pBSUFRb0FwZ0JJZ01OQUNBRUtBS2NcXFxuQVNFQklBUkI1QUJxRU9NTURBSUxJQVFnQkNrRG9BRTNBK2dCSUFRZ0JDZ0NuQUUyQXVRQklBUWdBellDNEFFZ0JFRVFhaUFCSUFSQjRBXFxcbkZxRU5rQklBUkI0QUZxUVFSeUVNd0xJQVJCNUFCcUVPTU1RWUFCSVFFQ1FBSkFBa0FnQkNnQ0dDSURRWURzbEtOOGFnNENBZ0FCQ3lBRVxcXG5LQUlRSVFFTUF3c2dCQ2tERUNFRklBUWdBellDb0FFZ0JDQUZOd09ZQVNBRVFaZ0Jha0VNYWlBRVFSQnFRUXhxUVRRUXBBMGFJQVJCQ0dcXFxub2dCRUdvQVdvUTB3Z2dCQ2dDQ0NBRUtBSU1FT0lISVFFZ0JFR1lBV29RbndzTElBUWdBVFlDbkFGQkFDRUJEQUlMSUFRdEFKd0JFTElOXFxcbklRRUxJQVFnQVRZQ25BRkJBU0VCQ3lBRUlBRTJBcGdCSUFRZ0JFR1lBV29RdHdnZ0FDQUVLUU1BTndNQUlBUkI4QUZxSkFBTC9RSUJBM1xcXG44akFFRVFheUlESkFBQ1FDQUFLQUlZSWdSRkRRQWdBRUVjYWlnQ0FDRUFBa0FnQVVFbFJ3MEFJQU1nQWlrQ0FEY0RDQ0FEUVFocUVNZ0pcXFxuSVFFZ0EwRUlhaERJQ1NFQ0FrQWdBVUdBZ01RQVJnMEFJQUpCZ0lERUFFWU5BQ0FCRU5ZSFJRMEFJQUlRMWdjTkFnc2dCRUVJSUFBb0FoXFxcblFSQlFBTUFRc2dBVUZRYWtFS1NRMEFJQUZCWDNGQnYzOXFRUnBKRFFBQ1FDQUJRVjlxSWdKQkgwc05BRUVCSUFKMFFlbi9nYkI5Y1EwQlxcXG5DeUFCUWQ4QVJnMEFJQUZCL2dCR0RRQWdBVUdBZ0VCcVFmNy9BMGtOQUNBQlFZQ0FSR3BCL3Y4RFNRMEFJQUZCZ09CSGFrSCszd05KRFFcXFxuQWdBVUgrLzN0eElnSkJnSUJRYWtIKy93TkpEUUFnQVVIKy8zTnhJZ1ZCZ0lCZ2FrSCsvd05KRFFBZ0JVR0FnSEJxUWY3L0Ewa05BQ0FDXFxcblFZQ0FlR3BCL3Y4RFNRMEFJQUZCZ0lCOGFrSCsvd05KRFFBZ0FVR1FoSHhxUVk0RVNRMEFJQUZCNEg1cVFlQ3VBMGtOQUNBQlFZREFmR1xcXG5wQjBEdEpEUUFnQkVFR0lBQW9BaFFSQlFBTElBTkJFR29rQUF1Y0F3SURmd0YrSXdCQmtBSnJJZ01rQUNBRElBSVF6Z29pQWlnQ0FDQUNcXFxuS0FJSVFmQ2p3QUJCRFJEdUF5QURRWkFCYWlBRElBTW9BZ0FnQXlnQ0NCQ3dBZ0pBQWtBQ1FBSkFBa0FnQXlnQ2tBRU5BQ0FES0FLVUFTXFxcbklDRFFGQmdKVHIzQU1oQWd3Q0N5QURJQU1wQXBRQk53T1FBU0FEUVpBQmFoQ2xEU0VDSUFCQmdaVHIzQU0yQWdnZ0FDQUNOZ0lBREFNTFxcXG5JQU5CbUFGcUtRTUFJUVlnQXlBQ05nSkFJQU1nQmpjQ1JDQURRWkFCYWlBQ0lBWkNJSWluRU9JSklBTW9BcEFCSVFJZ0F5Z0NtQUVpQkVcXFxuR0JsT3ZjQTBZTkFTQURLQUtVQVNFRklBTkIwQUZxUVF4cUlBTkJrQUZxUVF4cVFUUVFwQTBhSUFNZ0JEWUMyQUVnQXlBRk5nTFVBU0FEXFxcbklBSTJBdEFCSUFOQjBBQnFJQU5CMEFGcUlBRVEwUU1nQXlnQ1dDRUNJQU1wQTFBaEJpQURRUXhxSUFOQjBBQnFRUXhxUVRRUXBBMGFJQVxcXG5OQndBQnFFT01NQ3lBQUlBSTJBZ2dnQUNBR053TUFJQUJCREdvZ0EwRU1ha0UwRUtRTkdnd0JDeUFDRUxRTklRSWdBRUdCbE92Y0F6WUNcXFxuQ0NBQUlBSTJBZ0FnQTBIQUFHb1E0d3dMSUFNUTR3d2dBMEdRQW1va0FBdUZBd0lDZndGK0l3QkI4QUZySWdNa0FCQ0lCeUFEUWRnQWFpXFxcbkFCSUFJUW1na0NRQUpBSUFNb0FsZ2lBa0VDUmcwQUlBTW9BbHdoQVNBRFFhQUJhaUFEUWRnQWFrRUlha0hBQUJDa0RSb2dBeUFCTmdJVVxcXG5JQU1nQWpZQ0VDQURRUkJxUVFocUlBTkJvQUZxUWNBQUVLUU5HaUFEUWRnQWFpQURRUkJxRUlBQkFrQUNRQ0FES0FKWURRQWdBMEhnQVdcXFxucEJDR29nQTBIa0FHb29BZ0FpQWpZQ0FDQURJQU1wQWx3aUJUY0Q0QUVnQTBHZ0FXb2dCYWNnQWhDVURTQURRUWhxSUFOQm9BRnFFSW9LXFxcbklBTW9BZ2doQVNBRElBTW9BZ3dpQWtFQUVOVUVJQU1vQWdRaEJDQURLQUlBSUFFZ0FoQ2tEU0VCSUFOQm9BRnFFTXdMSUFOQjRBRnFFT1xcXG5NTUlBQWdBallDQ0NBQUlBUTJBZ1FnQUNBQk5nSUFEQUVMSUFNcEFsd2hCU0FESUFOQjVBQnFLQUlBTmdKZ0lBTWdCVGNEV0NBRFFkZ0FcXFxuYWhDekRSRExBeUVDSUFCQkFEWUNBQ0FBSUFJMkFnUUxJQU5CSkdvUTR3d01BUXNnQXkwQVhCQ3lEUkRMQXlFQ0lBQkJBRFlDQUNBQUlBXFxcbkkyQWdRTElBTkI4QUZxSkFBTGlBTUNBMzhCZmlNQVFlQUFheUlDSkFBZ0FDa0NGQ0VGSUFCQ0FUY0NGQ0FDUVRCcUlBQkJIR29pQXlnQ1xcXG5BRFlDQUNBRFFRQTJBZ0FnQWtFQk9nQklJQUpCQURZQ1FDQUNRZ0EzQWpRZ0FpQUZOd01vSUFCQkZHb2hBQUpBQWtBZ0FTZ0NBQzBBQUFcXFxuMEFJQUpCQVRvQVVDQUJLQUlJTFFBQUlRTWdBa0VJYWlBQktBSUVJZ0VvQWdBZ0FTZ0NCQkRWQnlBQ0lBSkJLR29nQXlBQ1FkQUFhaUFDXFxcbktBSUlJQUlvQWd3UTdRRU1BUXNDUUFKQUlBRW9BZ1FpQVNnQ0FDQUJLQUlFUVM4UTJBY05BQ0FCS0FJRUlRUWdBU2dDQUNFRERBRUxJQVxcXG5KQktHcEI2SkRCQUVFREVKTU1JQUpCSUdwQkFTQUJLQUlBSUFFb0FnUkI3SkRCQUJENUJTQUNLQUlnSVFNZ0FTQUNLQUlrSWdRMkFnUWdcXFxuQVNBRE5nSUFDeUFDUVJocUlBTWdCQkRWQnlBQ1FSQnFJQUpCS0dvZ0FpZ0NHQ0FDS0FJY0VKa0RDeUFDUWRBQWFrRUlhaUlCSUFKQktHXFxcbnBCQ0dvb0FnQTJBZ0FnQWlBQ0tRTW9Od05RSUFBUWlnMGdBRUVJYWlBQktBSUFOZ0lBSUFBZ0Fpa0RVRGNDQUNBQ1FlQUFhaVFBQy9FQ1xcXG5BUVovSXdCQk1Hc2lBeVFBSUFNZ0FqWUNIQ0FESUFFMkFoZ0NRQUpBQWtBRFFDQURLQUlZSVFRZ0F5Z0NIQ0VGQTBBZ0JDQUZSZzBDSUFcXFxuUXRBQUFoQmlBRVFRRnFJZ2NoQkNBR1FTVkhEUUFMSUFNZ0J6WUNHQ0FEUVJCcUlBTkJHR29RN1FNZ0F5MEFFRUVCY1VVTkFBc2dBeTBBXFxcbkVTRUlJQU5CQ0dwQkFDQUNJQUZySWdRZ0F5Z0NHR29nQXlnQ0hHdEJmV29nQVNBRVFkRFl6UUFRbXdjZ0F5Z0NDQ0VDSUFNZ0F5Z0NEQ1xcXG5JR1FRQVE0UVFnQXlnQ0JDRUZJQU1vQWdBaUJ5QUNJQVlRcEEwaEFpQURJQVkyQWlnZ0F5QUZOZ0lrSUFNZ0FqWUNJQUpBSUFZZ0JVY05cXFxuQUNBRFFTQnFJQVlRbUFrZ0F5Z0NJQ0VISUFNb0FpZ2hCZ3NnQnlBR2FpQUlPZ0FBSUFNZ0JrRUJhallDS0NBRFFTQnFJQU1vQWhnZ0F5XFxcbmdDSEJDZkJDQURLQUlnSWdaRkRRRWdBQ0FES1FJa053SUVJQUFnQmpZQ0FBd0NDeUFDSUFGcklRUUxJQUFnQVRZQ0JDQUFRUUEyQWdBZ1xcXG5BRUVJYWlBRU5nSUFDeUFEUVRCcUpBQUwvd0lCQjM4akFFRVFheUlDSkFCQkFTRURBa0FnQVNBQUtBSUFJQUFvQWdnUS93b05BRUVCSVFcXFxuTWdBVUhBOGNBQVFRRVEvd29OQUNBQklBQW9BZ3dnQUVFVWFpZ0NBQkQvQ2cwQUlBQW9BaGdpQkNBQVFTQnFLQUlBUVJoc2FpRUZBMEFDXFxcblFDQUVJQVZIRFFCQkFDRUREQUlMUVFFaEF5QUJRY0h4d0FCQkFSRC9DZzBCSUFFZ0JDZ0NBQ0FFS0FJSUVQOEtEUUZCQVNFRElBRkJ3dlxcXG5IQUFFRUJFUDhLRFFFZ0JFRVlhaUVHSUFRb0Fnd2lCeUFFUVJScUtBSUFJZ0FRcWdnaENBSkFBa0FnQUVVTkFDQUlEUUVMUVFFaEF5QUJcXFxuUWNQeHdBQkJBUkQvQ2cwQ0lBUWdCVWNoQXlBQ0lBUW9BZ3dpQUNBRUtBSVVhallDRENBQ0lBQTJBZ2dDUUFOQUFrQUNRQ0FDUVFocUVLXFxcbmtJSWdCQklrWU5BQ0FBUWR3QVJnMEFJQUJCZ0lERUFFY05BU0FHSVFRZ0FVSEQ4Y0FBUVFFUS93cEZEUVVNQmdzZ0FVSEU4Y0FBUVFFUVxcXG4vd29OQWdzZ0FTQUFFSjRMUlEwQUN3dEJBU0VEREFJTElBWWhCQ0FCSUFjZ0FCRC9Da1VOQUFzTElBSkJFR29rQUNBREMrRUNBUUovSXdcXFxuQkJFR3NpQWlRQUlBQW9BZ0FoQUFKQUFrQWdBVUgvQUVzTkFBSkFJQUFvQWdnaUF5QUFLQUlFUncwQUlBQWdBeER4QWlBQUtBSUlJUU1MXFxcbklBQWdBMEVCYWpZQ0NDQUFLQUlBSUFOcUlBRTZBQUFNQVFzZ0FrRUFOZ0lNQWtBQ1FDQUJRWUFRU1EwQUFrQWdBVUdBZ0FSSkRRQWdBaVxcXG5BQlFUOXhRWUFCY2pvQUR5QUNJQUZCQm5aQlAzRkJnQUZ5T2dBT0lBSWdBVUVNZGtFL2NVR0FBWEk2QUEwZ0FpQUJRUkoyUVFkeFFmQUJcXFxuY2pvQURFRUVJUUVNQWdzZ0FpQUJRVDl4UVlBQmNqb0FEaUFDSUFGQkRIWkI0QUZ5T2dBTUlBSWdBVUVHZGtFL2NVR0FBWEk2QUExQkF5XFxcbkVCREFFTElBSWdBVUUvY1VHQUFYSTZBQTBnQWlBQlFRWjJRY0FCY2pvQURFRUNJUUVMQWtBZ0FDZ0NCQ0FBS0FJSUlnTnJJQUZQRFFBZ1xcXG5BQ0FESUFFUTdRSWdBQ2dDQ0NFREN5QUFLQUlBSUFOcUlBSkJER29nQVJDa0RSb2dBQ0FESUFGcU5nSUlDeUFDUVJCcUpBQkJBQXV5QWdcXFxuSUVmd1YrSXdCQklHc2lBU1FBSUFGQkVHb2lBaUFBUVJCcUtRTUFOd01BSUFGQkNHb2lBeUFBUVFocUtRTUFOd01BSUFGQkdHb2lCQ0FBXFxcbk5RSTRRamlHSUFBcEF6Q0VJZ1VnQUVFWWFpa0RBSVUzQXdBZ0FTQUFLUU1BTndNQUlBRVFpZ1VnQWlrREFDRUdJQUVwQXdBaEJ5QURLUVxcXG5NQUlRZ2dCQ2tEQUNFSklBRkJJR29rQUNBSklBaEMvd0dGZkNJSUlBWkNEWWtnQmlBSElBV0ZmQ0lHaFNJRmZDSUhJQVZDRVltRklnVkNcXFxuRFlrZ0NVSVFpU0FJaFNJSklBWkNJSWw4SWdZZ0JYd2lCWVVpQ0VJUmlTQUpRaFdKSUFhRklnWWdCMElnaVh3aUNTQUlmQ0lIaFNJSVFnXFxcbjJKSUFaQ0VJa2dDWVVpQmlBRlFpQ0pmQ0lKSUFoOGhTSUZRaEdKSUFaQ0ZZa2dDWVVpQmlBSFFpQ0pmQ0lKSUFWOElnVkNJSW1GSUFaQ1xcXG5FSWtnQ1lWQ0ZZbUZJQVdGQzk4Q0FRbC9Jd0JCRUdzaUFpUUFJQUZCR0dvaEF3SkFBa0FEUUVFQUlRUWdBU2dDRUNJRklBRW9BZ3dpQmtcXFxua2dCU0FCS0FJSVMzSWlCdzBDUVFBZ0FTZ0NCQ0FHYWlBSEd5RUlJQUVvQWhRZ0EycEJmMm90QUFBaENRSkFBa0FnQ2lBRklBWnJJQWNiXFxcbklncEJCMHNOQUVFQUlRWkJBQ0VGQTBBQ1FDQUtJQVZIRFFBZ0NpRUZEQU1MQWtBZ0NDQUZhaTBBQUNBSlFmOEJjVWNOQUVFQklRWU1Bd1xcXG5zZ0JVRUJhaUVGREFBTEN5QUNRUWhxSUFrZ0NDQUtFUDBCSUFJb0Fnd2hCU0FDS0FJSUlRWUxJQVpCQVVjTkFTQUJJQVVnQVNnQ0RHcEJcXFxuQVdvaUJUWUNEQ0FGSUFFb0FoUWlDRWtOQUNBRklBRW9BZ2hMRFFBZ0FTZ0NCQ0VKSUFJZ0NDQURRWUNHd1FBUTNBa2dDU0FGSUFocklnXFxcblZxSUFnZ0FpZ0NBQ0FDS0FJRUVLWUtSUTBBQ3lBQUlBVTJBZ1FnQUVFSWFpQUJLQUlNTmdJQVFRRWhCQXdCQ3lBQklBRW9BaEEyQWd3TFxcXG5JQUFnQkRZQ0FDQUNRUkJxSkFBTDJBSUJBbjhqQUVFUWF5SUNKQUFDUUFKQUlBRkIvd0JMRFFBQ1FDQUFLQUlJSWdNZ0FDZ0NCRWNOQUNcXFxuQUFJQU1ROHdJZ0FDZ0NDQ0VEQ3lBQUlBTkJBV28yQWdnZ0FDZ0NBQ0FEYWlBQk9nQUFEQUVMSUFKQkFEWUNEQUpBQWtBZ0FVR0FFRWtOXFxcbkFBSkFJQUZCZ0lBRVNRMEFJQUlnQVVFL2NVR0FBWEk2QUE4Z0FpQUJRUVoyUVQ5eFFZQUJjam9BRGlBQ0lBRkJESFpCUDNGQmdBRnlPZ1xcXG5BTklBSWdBVUVTZGtFSGNVSHdBWEk2QUF4QkJDRUJEQUlMSUFJZ0FVRS9jVUdBQVhJNkFBNGdBaUFCUVF4MlFlQUJjam9BRENBQ0lBRkJcXFxuQm5aQlAzRkJnQUZ5T2dBTlFRTWhBUXdCQ3lBQ0lBRkJQM0ZCZ0FGeU9nQU5JQUlnQVVFR2RrSEFBWEk2QUF4QkFpRUJDd0pBSUFBb0FnXFxcblFnQUNnQ0NDSURheUFCVHcwQUlBQWdBeUFCRU80Q0lBQW9BZ2doQXdzZ0FDZ0NBQ0FEYWlBQ1FReHFJQUVRcEEwYUlBQWdBeUFCYWpZQ1xcXG5DQXNnQWtFUWFpUUFDK2dDQVFaL0l3QkJNR3NpQXlRQUlBTkJJR29nQUNBQkVLRU1RUUFoQkNBRFFSaHFRUUFnQXlnQ0lDQURLQUlrUWZcXFxuQ093QUFRN1FnZ0F5Z0NIQ0VGSUFNb0FoZ2hCa0VBSVFkQkFDRUlBMEFnQkNFQkEwQUNRQ0FGSUFGSERRQUNRQ0FJSUFWUERRQWdBeUFJXFxcbklBWWdCVUdnajhBQUVPMElJQUlnQXlnQ0FDQURLQUlFSWdFUXR3SWdBU0FIYWlFSEN5QURJQWMyQWl3Z0FpQURRU3hxUVFRUXR3SWdBMFxcXG5Fd2FpUUFEd3NnQmlBQmFpRUFJQUZCQVdvaUJDRUJJQUF0QUFCQkwwY05BQXNDUUNBRVFYOXFJZ0VnQ0UwTkFDQURRUkJxSUFnZ0FTQUdcXFxuSUFWQmdJL0FBQkNGQnlBQ0lBTW9BaEFnQXlnQ0ZDSUJFTGNDSUFFZ0Iyb2hCd3NnQTBFSWFpQUVJQVlnQlVHUWo4QUFFTzBJSUFNb0FnXFxcbmdoQUFKQUFrQUNRQUpBSUFNb0Fnd09BZ0lBQVF0QkFTRUJJQUF0QUFCQkxrWU5BZ3dCQ3lBQUxRQUFRUzVIRFFCQkFTRUJJQUF0QUFGQlxcXG5MMFlOQVF0QkFDRUJDeUFCSUFScUlRZ01BQXNMdkFJQkNIOENRQUpBSUFKQkQwc05BQ0FBSVFNTUFRc2dBRUVBSUFCclFRTnhJZ1JxSVFcXFxuVUNRQ0FFUlEwQUlBQWhBeUFCSVFZRFFDQURJQVl0QUFBNkFBQWdCa0VCYWlFR0lBTkJBV29pQXlBRlNRMEFDd3NnQlNBQ0lBUnJJZ2RCXFxcbmZIRWlDR29oQXdKQUFrQWdBU0FFYWlJSlFRTnhJZ1pGRFFBZ0NFRUJTQTBCSUFsQmZIRWlDa0VFYWlFQlFRQWdCa0VEZENJQ2EwRVljU1xcXG5FRUlBb29BZ0FoQmdOQUlBVWdCaUFDZGlBQktBSUFJZ1lnQkhSeU5nSUFJQUZCQkdvaEFTQUZRUVJxSWdVZ0Ewa05BQXdDQ3dzZ0NFRUJcXFxuU0EwQUlBa2hBUU5BSUFVZ0FTZ0NBRFlDQUNBQlFRUnFJUUVnQlVFRWFpSUZJQU5KRFFBTEN5QUhRUU54SVFJZ0NTQUlhaUVCQ3dKQUlBXFxcbkpGRFFBZ0F5QUNhaUVGQTBBZ0F5QUJMUUFBT2dBQUlBRkJBV29oQVNBRFFRRnFJZ01nQlVrTkFBc0xJQUFMMGdJQ0JYOEJmaU1BUVRCclxcXG5JZ01rQUVFbklRUUNRQUpBSUFCQ2tNNEFXZzBBSUFBaENBd0JDMEVuSVFRRFFDQURRUWxxSUFScUlnVkJmR29nQUNBQVFwRE9BSUFpQ0VcXFxuS1F6Z0IrZmFjaUJrSC8vd054UWVRQWJpSUhRUUYwUWY2ZXpnQnFMd0FBT3dBQUlBVkJmbW9nQmlBSFFlUUFiR3RCLy84RGNVRUJkRUgrXFxcbm5zNEFhaThBQURzQUFDQUVRWHhxSVFRZ0FFTC93ZGN2VmlFRklBZ2hBQ0FGRFFBTEN3SkFJQWluSWdWQjR3Qk5EUUFnQTBFSmFpQUVRWFxcXG41cUlnUnFJQWluSWdVZ0JVSC8vd054UWVRQWJpSUZRZVFBYkd0Qi8vOERjVUVCZEVIK25zNEFhaThBQURzQUFBc0NRQUpBSUFWQkNra05cXFxuQUNBRFFRbHFJQVJCZm1vaUJHb2dCVUVCZEVIK25zNEFhaThBQURzQUFBd0JDeUFEUVFscUlBUkJmMm9pQkdvZ0JVRXdham9BQUFzZ0FpXFxcbkFCUWZ6L3pRQkJBQ0FEUVFscUlBUnFRU2NnQkdzUVlDRUVJQU5CTUdva0FDQUVDL1FDQVFSL0l3QkJ3QUJySWdJa0FFRUJJUU1DUUNBQlxcXG5LQUlVSWdSQjdKdk9BRUVNSUFGQkdHb29BZ0FpQVNnQ0RCRUpBQTBBQWtBQ1FDQUFLQUlNSWdWRkRRQWdBaUFGTmdJTUlBSkJyd0kyQWhcXFxuUWdBaUFDUVF4cU5nSVFJQUpDQVRjQ05DQUNRUUkyQWl3Z0FrSDhtODRBTmdJb0lBSWdBa0VRYWpZQ01DQUVJQUVnQWtFb2FoQnRSUTBCXFxcbkRBSUxJQUFvQWdBaUJTQUFLQUlFUVF4cUtBSUFFUVFBUXNIMytlak1rN0xSUVZJTkFDQUNJQVUyQWd3Z0FrR3dBallDRkNBQ0lBSkJER1xcXG5vMkFoQWdBa0lCTndJMElBSkJBallDTENBQ1FmeWJ6Z0EyQWlnZ0FpQUNRUkJxTmdJd0lBUWdBU0FDUVNocUVHME5BUXNnQUNnQ0NDRURcXFxuSUFKQkpHcEJDRFlDQUNBQ1FSQnFRUXhxUVFnMkFnQWdBaUFEUVF4cU5nSWdJQUlnQTBFSWFqWUNHQ0FDUWE0Q05nSVVJQUlnQXpZQ0VDXFxcbkFDUWdNM0FqUWdBa0VETmdJc0lBSkIxSnZPQURZQ0tDQUNJQUpCRUdvMkFqQWdCQ0FCSUFKQktHb1FiU0VEQ3lBQ1FjQUFhaVFBSUFNTFxcXG56d0lCQTM4akFFR0FBV3NpQWlRQUFrQUNRQUpBQWtBQ1FDQUJLQUljSWdOQkVIRU5BQ0FEUVNCeERRRWdBREVBQUVFQklBRVE1QUVoQUFcXFxud0VDeUFBTFFBQUlRTkJBQ0VBQTBBZ0FpQUFha0gvQUdwQk1FSFhBQ0FEUVE5eElnUkJDa2tiSUFScU9nQUFJQUJCZjJvaEFDQURRZjhCXFxcbmNTSUVRUVIySVFNZ0JFRVBTdzBBQ3lBQVFZQUJhaUlEUVlFQlR3MEJJQUZCQVVIOG5zNEFRUUlnQWlBQWFrR0FBV3BCQUNBQWF4QmdJUVxcXG5BTUF3c2dBQzBBQUNFRFFRQWhBQU5BSUFJZ0FHcEIvd0JxUVRCQk55QURRUTl4SWdSQkNra2JJQVJxT2dBQUlBQkJmMm9oQUNBRFFmOEJcXFxuY1NJRVFRUjJJUU1nQkVFUFN3MEFDeUFBUVlBQmFpSURRWUVCVHcwQklBRkJBVUg4bnM0QVFRSWdBaUFBYWtHQUFXcEJBQ0FBYXhCZ0lRXFxcbkFNQWdzZ0EwR0FBVUhzbnM0QUVJSUZBQXNnQTBHQUFVSHNuczRBRUlJRkFBc2dBa0dBQVdva0FDQUFDODhDQWdKL0FYNGpBRUdBQVdzaVxcXG5BaVFBQWtBQ1FBSkFBa0FDUUNBQktBSWNJZ05CRUhFTkFDQURRU0J4RFFFZ0FDa0RBRUVCSUFFUTVBRWhBQXdFQ3lBQUtRTUFJUVJCQUNcXFxuRUFBMEFnQWlBQWFrSC9BR3BCTUVIWEFDQUVwMEVQY1NJRFFRcEpHeUFEYWpvQUFDQUFRWDlxSVFBZ0JFSVBWaUVESUFSQ0JJZ2hCQ0FEXFxcbkRRQUxJQUJCZ0FGcUlnTkJnUUZQRFFFZ0FVRUJRZnllemdCQkFpQUNJQUJxUVlBQmFrRUFJQUJyRUdBaEFBd0RDeUFBS1FNQUlRUkJBQ1xcXG5FQUEwQWdBaUFBYWtIL0FHcEJNRUUzSUFTblFROXhJZ05CQ2trYklBTnFPZ0FBSUFCQmYyb2hBQ0FFUWc5V0lRTWdCRUlFaUNFRUlBTU5cXFxuQUFzZ0FFR0FBV29pQTBHQkFVOE5BU0FCUVFGQi9KN09BRUVDSUFJZ0FHcEJnQUZxUVFBZ0FHc1FZQ0VBREFJTElBTkJnQUZCN0o3T0FCXFxcbkNDQlFBTElBTkJnQUZCN0o3T0FCQ0NCUUFMSUFKQmdBRnFKQUFnQUF2TUFnRUZmeU1BUWNBQWF5SURKQUFDUUFKQUlBSkZEUUJCQVNFRVxcXG5JQUV0QUFCQkwwWU5BUXRCQUNFRUN5QURJQVE2QUQ0Z0EwRUdPZ0FvSUFNZ0FqWUNKQ0FESUFFMkFpQWdBMEdBQkRzQlBDQURJQU5CSUdcXFxub1FPRUVBSVFFQ1FBSkFJQU10QUFBaUJFRUtSdzBBREFFTElBTW9BZ1FpQlVFQUlBUkJDVVliSWdaRkRRQkJBaUVDQWtBQ1FBSkFBa0FnXFxcbkF5Z0NDQ0lCUVFKSERRQWdCaThBQUVHdTNBQkdEUUVMUVFBaEFpQUdJUVFEUUFKQUlBRWdBa2NOQUNBQklRSWdCaUVCREFVTElBSkJBV1xcXG5vaEFpQUVRWDlxSWdRZ0FXb2lCUzBBQUVFdVJ3MEFDeUFCSUFFZ0Ftc2lCMEVCYWlJRVNRMEJJQUVnQWtZaEJDQUdSUTBDSUFFZ0J5QUVcXFxuR3lFQ0lBWWhCUXNnQlNFQkRBSUxJQVFnQVVIUTRNMEFFSUlGQUF0QkFDQUZRUUZxSUFRYklRRWdBa0YvYWlFQ0N5QUFJQUkyQWdRZ0FDXFxcbkFCTmdJQUlBTkJ3QUJxSkFBTDFnSUJDWDhqQUVFUWF5SUZKQUFnQVNBQktBSUlJZ1pCQVdvaUJ6WUNDQ0FISUFFb0FnQnFJUWdnQVNnQ1xcXG5CQ0VKUVFBaEJ3SkFBa0FDUUFOQUFrQUNRQUpBSUFZZ0Iyb2lDa0VCYWlBSlR3MEFJQWdnQjJvdEFBQWlDMEZRYWlJTVFmOEJjU0lOUVFcXFxucEpEUUlnQjBVTkJTQUVJQWRySVFjZ0MwRWdja0hsQUVjTkFTQUFJQUVnQWlBRElBY1FvQUVNQmdzZ0IwVU5BeUFFSUFkcklRY0xJQUFnXFxcbkFTQUNJQU1nQnhESEFnd0VDd0pBQWtBZ0EwS1pzK2JNbWJQbXpCbFVEUUFnQTBLWnMrYk1tYlBtekJsU0RRRWdEVUVGU3cwQkN5QUJJQVxcXG5wQkFtbzJBZ2dnQjBFQmFpRUhJQU5DQ240Z0RLMUMvd0dEZkNFRERBRUxDeUFBSUFFZ0FpQURJQVFnQjJzUXd3UU1BZ3NnQlVFRk5nSUFcXFxuSUFFZ0JSRE9DQ0VISUFCQkFUWUNBQ0FBSUFjMkFnUU1BUXNnQlVFTk5nSUFJQUVnQlJET0NDRUhJQUJCQVRZQ0FDQUFJQWMyQWdRTElBXFxcblZCRUdva0FBdldBZ0VKZnlNQVFSQnJJZ1VrQUNBQklBRW9BZ2dpQmtFQmFpSUhOZ0lJSUFjZ0FTZ0NBR29oQ0NBQktBSUVJUWxCQUNFSFxcXG5Ba0FDUUFKQUEwQUNRQUpBQWtBZ0JpQUhhaUlLUVFGcUlBbFBEUUFnQ0NBSGFpMEFBQ0lMUVZCcUlneEIvd0Z4SWcxQkNra05BaUFIUlFcXFxuMEZJQVFnQjJzaEJ5QUxRU0J5UWVVQVJ3MEJJQUFnQVNBQ0lBTWdCeENqQVF3R0N5QUhSUTBESUFRZ0Iyc2hCd3NnQUNBQklBSWdBeUFIXFxcbkVNa0NEQVFMQWtBQ1FDQURRcG16NXN5WnMrYk1HVlFOQUNBRFFwbXo1c3lacytiTUdWSU5BU0FOUVFWTERRRUxJQUVnQ2tFQ2FqWUNDQ1xcXG5BSFFRRnFJUWNnQTBJS2ZpQU1yVUwvQVlOOElRTU1BUXNMSUFBZ0FTQUNJQU1nQkNBSGF4REdCQXdDQ3lBRlFRVTJBZ0FnQVNBRkVOMElcXFxuSVFjZ0FFRUJOZ0lBSUFBZ0J6WUNCQXdCQ3lBRlFRMDJBZ0FnQVNBRkVOMElJUWNnQUVFQk5nSUFJQUFnQnpZQ0JBc2dCVUVRYWlRQUMrXFxcbjhDQVFaL1FRZ2hBd0pBQWtBZ0FTZ0NSQ0lFUVFoTERRQWdBVUVFYWlFRklBUWhCZ3dCQ3lBQktBSUVJUVlnQVNnQ0NDRUZJQVFoQXdzQ1xcXG5RQUpBQWtBQ1FDQUdJQUpMRFFBQ1FBSkFJQUpCQ1VrTkFFR0JnSUNBZUNFSElBTWdBa2NOQVF3RUMwR0JnSUNBZUNFSElBUkJDVWtOQXlcXFxuQUJRUUEyQWdBZ0FVRUVhaUFGSUFaQkEzUVFwQTBhSUFFZ0JqWUNSQ0FGSUFNUW1BUU1CQXNnQWtFRGRDRUlRUUFoQnlBQ1FmLy8vLzhCXFxcblN3MERJQWhCL1AvLy93ZExEUU1DUUFKQUlBUkJDVWtOQUNBRFFRTjBJUVFnQTBILy8vLy9BVXNOQXlBRVFmei8vLzhIU3cwRFFRUWhCeVxcXG5BRklBUkJCQ0FJRUxBTElnUU5BUXdGQzBFQUxRRHhwazhhUVFRaEJ5QUlRUVFROXdzaUJFVU5CQ0FFSUFVZ0JrRURkQkNrRFJvTElBRWdcXFxuQWpZQ1JDQUJJQVEyQWdnZ0FTQUdOZ0lFSUFGQkFUWUNBRUdCZ0lDQWVDRUhEQU1MUWZ6ZHdBQkJJRUdjM3NBQUVJTUhBQXNnQkNFSURBXFxcbkVMQ3lBQUlBZzJBZ1FnQUNBSE5nSUFDOHNDQVFOL0l3QkJnQUZySWdJa0FBSkFBa0FDUUFKQUFrQWdBU2dDSENJRFFSQnhEUUFnQTBFZ1xcXG5jUTBCSUFBMUFnQkJBU0FCRU9RQklRQU1CQXNnQUNnQ0FDRUFRUUFoQXdOQUlBSWdBMnBCL3dCcVFUQkIxd0FnQUVFUGNTSUVRUXBKR3lcXFxuQUVham9BQUNBRFFYOXFJUU1nQUVFUFN5RUVJQUJCQkhZaEFDQUVEUUFMSUFOQmdBRnFJZ0JCZ1FGUERRRWdBVUVCUWZ5ZXpnQkJBaUFDXFxcbklBTnFRWUFCYWtFQUlBTnJFR0FoQUF3REN5QUFLQUlBSVFCQkFDRURBMEFnQWlBRGFrSC9BR3BCTUVFM0lBQkJEM0VpQkVFS1NSc2dCR1xcXG5vNkFBQWdBMEYvYWlFRElBQkJEMHNoQkNBQVFRUjJJUUFnQkEwQUN5QURRWUFCYWlJQVFZRUJUdzBCSUFGQkFVSDhuczRBUVFJZ0FpQURcXFxuYWtHQUFXcEJBQ0FEYXhCZ0lRQU1BZ3NnQUVHQUFVSHNuczRBRUlJRkFBc2dBRUdBQVVIc25zNEFFSUlGQUFzZ0FrR0FBV29rQUNBQUM5XFxcblFDQVFaL0l3QkJNR3NpQmlRQUlBWWdCVFlDSENBR0lBUTJBaGdnQVNnQ0NDRUhJQVpCSUdvZ0JrRVlhaERHQ0NBR0tBSWdJUWdDUUFKQVxcXG5Ba0FDUUFKQUlBSkIvd0Z4UVFKSERRQWdDRUVqUmcwRUlBaEJMMFlOQXlBSVFUOUdEUVFnQ0VHQWdNUUFSdzBCREFNTElBWkJLR29vQWdcXFxuQWhDU0FHS0FJa0lRb2dDRUhjQUVjTkFTQUJLQUlZSWd0RkRRRWdDMEVBSUFGQkhHb29BZ0FvQWhRUkJRQU1BUXNnQVVFdkVONEVEQUVMXFxcbkFrQWdBU2dDQUNBSFFTOFEyUWNOQUNBQlFTOFEzZ1FDUUNBSVFkd0FSZzBBSUFoQkwwY05BUXNnQmtFUWFpQUJJQUlnQXlBSElBb2dDUlxcXG5CQklBWW9BaFFoQlNBR0tBSVFJUVFNQWdzZ0JrRUlhaUFCSUFJZ0F5QUhJQVFnQlJCQklBWW9BZ3doQlNBR0tBSUlJUVFNQVFzZ0JpQUJcXFxuUVFJZ0F5QUhJQVFnQlJCQklBWW9BZ1FoQlNBR0tBSUFJUVFMSUFBZ0JUWUNCQ0FBSUFRMkFnQWdCa0V3YWlRQUM5Y0NBUUYvSXdCQjBBXFxcbkJySWdVa0FDQUZRUmhxSUFFZ0FpQURJQVFRbHdFQ1FDQUJRUnBxTFFBQVJRMEFBa0FDUUFKQUFrQUNRQ0FFS0FJQUlBUW9BZ2hCTGhEWlxcXG5CdzBBSUFRb0FnZ2hBU0FFS0FJQUlRTU1BUXNnQlVFUWFpQUVLQUlJSWdGQmYyb2lBaUFFS0FJQUlnUWdBUkRQQmlBRktBSVFJZ05GRFFcXFxuRWdCU2dDRkNFQkN5QUJSUTBCSUFWQktHb2dBeUFCRUprRkFrQURRQ0FGUVFocUlBVkJLR29RbVFFZ0JTZ0NDQ0lFUlEwQklBVW9BZ3dOXFxcbkFBc0xJQVFOQVF3Q0N5QUVJQUZCQUNBQ1FaQ2p3UUFRNUFzQUN5QUZRUUU2QUNJTEFrQWdBVUg5QVVzTkFDQUZRU2hxSUFNZ0FSQ1pCUVxcXG5KQUEwQWdCU0FGUVNocUVKa0JJQVVvQWdBaUJFVU5BU0FGS0FJRVFjQUFTUTBBQ3dzZ0JFVU5BUXNnQlVFQk9nQWhDeUFGUVNocVFRaHFcXFxuSUFWQkdHcEJDR29vQWdBMkFnQWdCU0FGS1FNWU53TW9JQUFnQlVFb2FoQ1NDU0FGUWRBQWFpUUFDOGNDQVFaL1FRQWhBUUpBSUFBdEFCXFxcbjROQUNBQUxRQUlJZ0pCL3dGeFFRVkpEUUFnQUNnQ0JDRURJQUFvQWdBaEJFRUFJUUZCQUNFRkFrQUNRQUpBQWtBZ0FDMEFIQTBBUVFZaFxcXG5Ca0VBSVFVZ0FrSC9BWEZCQmtZaUFnMEFBa0FDUUFKQUFrQUNRQUpBUVFBZ0FFRUlhaUFDR3lJQUxRQUFEZ1lBQVFVQ0F3UUFDeUFBUVFcXFxuaHFLQUlBUVFScUlRWU1CQXNnQUVFSWFpZ0NBQ0FBUVJCcUtBSUFJZ0JCQVdwQkFDQUFHMnBCQ0dvaEJnd0RDeUFBUVFocUtBSUFRUVJxXFxcbklRWU1BZ3NnQUVFSWFpZ0NBQ0FBUVJCcUtBSUFJZ0JCQVdwQkFDQUFHMnBCQW1vaEJnd0JDMEVDSVFZTElBTWdCa2tOQVNBR0lRVUxJQVxcXG5VZ0EwWU5BeUFFSUFWcUlnVkJBV29pQUNBRUlBTnFSdzBCUVM0aEF5QUZJUUFNQWdzZ0JpQURRWXpyelFBUWdnVUFDMEV2SVFNZ0JTMEFcXFxuQUVFdVJ3MEJDeUFBTFFBQUlBTkdJUUVMSUFFTDBRSUJBMzhqQUVFUWF5SUZKQUFDUUFKQUFrQUNRQUpBSUFJTkFFRUJJUVpCQVNBQklBXFxcbklRcEEwaEFTQUZJQUkyQWdnZ0JTQUNOZ0lFSUFVZ0FUWUNBRUVBSVFjZ0JFVU5BZ3dCQ3dKQUFrQWdBa0YvU2lJSFJRMEFRUUF0QVBHbVxcXG5UeG9nQWlBSEVQY0xJZ1pGRFFFZ0JpQUJJQUlRcEEwaEFTQUZJQUkyQWdnZ0JTQUNOZ0lFSUFVZ0FUWUNBQ0FDSUFGcVFYOXFMUUFBUVNcXFxuOUhJUWNnQkEwQ0RBTUxFSmNJQUFzZ0J5QUNFSm9OQUF0QkFDRUJJQU10QUFCQkwwWU5BUXNDUUNBSERRQWdBaUVCREFJTElBVWdBa0VCXFxcbkVPMENJQVVvQWdBaUJpQUZLQUlJSWdKcVFTODZBQUFnQWtFQmFpRUJJQVVvQWdRaEFnc2dCU0FCTmdJSUN3SkFJQUlnQVdzZ0JFOE5BQ1xcXG5BRklBRWdCQkR0QWlBRktBSUFJUVlnQlNnQ0NDRUJDeUFHSUFGcUlBTWdCQkNrRFJvZ0FFRUlhaUFCSUFScU5nSUFJQUFnQlNrREFEY0NcXFxuQUNBRlFSQnFKQUFMdGdNQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBXFxcbkpBQWtBZ0FDZ0NBQTRaQUFFQ0F3UUZCZ2NJQ1FvTERBME9EeEFSRWhNVUZSWVhHQUFMSUFFZ0FDZ0NCQ0FBUVFocUtBSUFFUDhLRHdzZ1xcXG5BRUVFYWlBQkVNNEJEd3NnQVVIU3o4QUFRUmdRL3dvUEN5QUJRYmZQd0FCQkd4RC9DZzhMSUFGQm5jL0FBRUVhRVA4S0R3c2dBVUdFejhcXFxuQUFRUmtRL3dvUEN5QUJRZmpPd0FCQkRCRC9DZzhMSUFGQjVjN0FBRUVURVA4S0R3c2dBVUhTenNBQVFSTVEvd29QQ3lBQlFjVE93QUJCXFxcbkRoRC9DZzhMSUFGQnRzN0FBRUVPRVA4S0R3c2dBVUdxenNBQVFRd1Evd29QQ3lBQlFaek93QUJCRGhEL0NnOExJQUZCanM3QUFFRU9FUFxcXG44S0R3c2dBVUg3emNBQVFSTVEvd29QQ3lBQlFlSE53QUJCR2hEL0NnOExJQUZCbzgzQUFFRStFUDhLRHdzZ0FVR1B6Y0FBUVJRUS93b1BcXFxuQ3lBQlFkdk13QUJCTkJEL0NnOExJQUZCcjh6QUFFRXNFUDhLRHdzZ0FVR0x6TUFBUVNRUS93b1BDeUFCUWYzTHdBQkJEaEQvQ2c4TElBXFxcbkZCNnN2QUFFRVRFUDhLRHdzZ0FVSE95OEFBUVJ3US93b1BDeUFCUWJiTHdBQkJHQkQvQ2d2R0FnRUZmeU1BUWNBQWF5SURKQUFDUUFKQVxcXG5JQUpGRFFCQkFTRUVJQUV0QUFCQkwwWU5BUXRCQUNFRUN5QURJQVE2QUQ0Z0EwRUdPZ0FvSUFNZ0FqWUNKQ0FESUFFMkFpQWdBMEdBQkRcXFxuc0JQQ0FESUFOQklHb1FPRUVBSVFJQ1FBSkFBa0FnQXkwQUFDSUVRUXBIRFFBTUFRc2dBeWdDQkNJRlFRQWdCRUVKUmhzaUJrVU5BQUpBXFxcbkFrQWdBeWdDQ0NJQlFRSkhEUUFnQmk4QUFFR3UzQUJIRFFCQkFDRUNEQUVMUVFBaEJVRUFJUUlnQmlFRUEwQUNRQ0FCSUFKSERRQWdCaVxcXG5FQ0RBSUxJQUpCQVdvaEFpQUVRWDlxSWdRZ0FXb2lCeTBBQUVFdVJ3MEFDeUFCSUFFZ0FtdEJBV29pQkVrTkFnSkFBa0FnQVNBQ1J3MEFcXFxuUVFBaEFnd0JDeUFDUVg5cUlRRWdCMEVCYWlFQ0N5QUdJUVVMSUFKQkFDQUZHeUVDQ3lBQUlBRTJBZ1FnQUNBQ05nSUFJQU5Cd0FCcUpBXFxcbkFQQ3lBRUlBRkIwT0ROQUJDQ0JRQUwxQUlDQlg4RWZpTUFRUkJySWdJa0FFRUFJUU1DUUFKQUlBRkZEUUFnQVNnQ0RFVU5BQ0FCUVJCcVxcXG5RZC9xd0FCQkRCQ1lBU0VISUFKQkREWUNCQ0FDUWQvcXdBQTJBZ0FnQWlBQk5nSU1JQWRDR1loQy93Q0RRb0dDaElpUW9NQ0FBWDRoQ0NcXFxuQUJLQUlFSWdRZ0I2ZHhJUU1nQWlBQ05nSUlJQUVvQWdBaEJVRUFJUVlEUUNBRklBTnFLUUFBSWdrZ0NJVWlCMEovaFNBSFF2LzkrL2Z2XFxcbjM3Ly9mbnlEUW9DQmdvU0lrS0RBZ0grRElRY0RRQUpBSUFkQ0FGSU5BQUpBSUFrZ0NVSUJob05DZ0lHQ2hJaVFvTUNBZjROUURRQkJBQ1xcXG5FRERBVUxJQU1nQmtFSWFpSUdhaUFFY1NFRERBSUxJQWQ2SVFvZ0IwSi9mQ0FIZ3lFSElBSkJDR29nQ3FkQkEzWWdBMm9nQkhFaUFSREdcXFxuQ1VVTkFBc0xJQVZCQUNBQmEwRVliR3BCYUdvaUJDZ0NEQ0VESUFSQkZHb29BZ0FoQkF3QkN3c2dBQ0FESUFRUWh3b2hBeUFDUVJCcUpBXFxcbkFnQTBIL0FYRUw3QUlDQlg4QmZpTUFRY0FBYXlJREpBQUNRQUpBSUFBdEFBaEZEUUFnQUNnQ0FDRUVRUUVoQlF3QkN5QUFLQUlBSVFRQ1xcXG5RQ0FBUVFScUtBSUFJZ1lvQWh3aUIwRUVjUTBBUVFFaEJTQUdLQUlVUWJHZXpnQkJ1NTdPQUNBRUcwRUNRUUVnQkJzZ0JrRVlhaWdDQUNcXFxuZ0NEQkVKQUEwQklBRWdCaUFDS0FJTUVRWUFJUVVNQVFzQ1FDQUVEUUFDUUNBR0tBSVVRYm1lemdCQkFpQUdRUmhxS0FJQUtBSU1FUWtBXFxcblJRMEFRUUVoQlVFQUlRUU1BZ3NnQmlnQ0hDRUhDMEVCSVFVZ0EwRUJPZ0FYSUFOQk1HcEJrSjdPQURZQ0FDQURJQVlwQWhRM0F3Z2dBeVxcXG5BRFFSZHFOZ0lRSUFNZ0Jpa0NDRGNESUNBR0tRSUFJUWdnQXlBSE5nSTBJQU1nQmlnQ0VEWUNLQ0FESUFZdEFDQTZBRGdnQXlBSU53TVlcXFxuSUFNZ0EwRUlhallDTENBQklBTkJHR29nQWlnQ0RCRUdBQTBBSUFNb0FpeEJyNTdPQUVFQ0lBTW9BakFvQWd3UkNRQWhCUXNnQUNBRk9nXFxcbkFJSUFBZ0JFRUJhallDQUNBRFFjQUFhaVFBSUFBTHp3SUNBbjhCZmlNQVFkQUFheUlDSkFBZ0FrRUlhaUFCRU1FRkFrQUNRQ0FDS0FJSVxcXG5EUUFnQUVJQU53SUFEQUVMSUFJb0Fnd2hBU0FDSUFKQkNHcEJDR29vQWdBaUF6WUNGQ0FDUVRocUlBRVE3dzBRa1FRQ1FDQUNLQUk0UlFcXFxuMEFJQUpCR0dwQkNHb2dBa0U0YWtFSWFpZ0NBRFlDQUNBQ0lBSXBBemczQXhnZ0FrRTRhaUFERU84TkVKRUVBa0FnQWlnQ09BMEFJQUFnXFxcbkFpZ0NQRFlDQkNBQVFRRTJBZ0FnQWtFWWFoRGpEQXdDQ3lBQ1FTaHFRUWhxSUFKQk9HcEJDR29pQVNnQ0FDSUROZ0lBSUFJZ0Fpa0RPQ1xcXG5JRU53TW9JQUVnQWtFWWFrRUlhaWdDQURZQ0FDQUNRVGhxUVJScUlBTTJBZ0FnQUNBQ0tRTVlOd0lFSUFJZ0JEY0NSQ0FBUVF4cUlBRXBcXFxuQXdBM0FnQWdBRUVVYWlBQ1FjZ0FhaWtEQURjQ0FDQUFRUUEyQWdBTUFRc2dBQ0FDS0FJOE5nSUVJQUJCQVRZQ0FDQUNRUlJxRUlRTEN5XFxcbkFDUWRBQWFpUUFDOGdDQVFWL0lBQW9BaGdoQVFKQUFrQUNRQ0FBRU9FTklBQkhEUUFnQUVFVVFSQWdBRUVVYWlJQ0tBSUFJZ01iYWlnQ1xcXG5BQ0lFRFFGQkFDRUNEQUlMSUFBUTRnMGlCQ0FBRU9FTklnSVFpdzQyQWd3Z0FpQUVFSXNPTmdJSURBRUxJQUlnQUVFUWFpQURHeUVEQTBcXFxuQWdBeUVGSUFRaUFrRVVhaUlFSUFKQkVHb2dCQ2dDQUNJRUd5RURJQUpCRkVFUUlBUWJhaWdDQUNJRURRQUxJQVZCQURZQ0FBc0NRQ0FCXFxcblJRMEFBa0FDUUNBQUtBSWNRUUowUWVDbnp3QnFJZ1FvQWdBZ0FFWU5BQ0FCUVJCQkZDQUJLQUlRSUFCR0cyb2dBallDQUNBQ1JRMENEQVxcXG5FTElBUWdBallDQUNBQ0RRQkJBRUVBS0FMOHFrOUJmaUFBS0FJY2QzRTJBdnlxVHc4TElBSWdBVFlDR0FKQUlBQW9BaEFpQkVVTkFDQUNcXFxuSUFRMkFoQWdCQ0FDTmdJWUN5QUFRUlJxS0FJQUlnUkZEUUFnQWtFVWFpQUVOZ0lBSUFRZ0FqWUNHQThMQzlBQ0FnTi9BWDRqQUVHQUFXXFxcbnNpQlNRQUlBVkJLR29nQUNBQkVJb0RBa0FDUUFKQUlBVW9BaWdpQmtVTkFDQUZJQVVvQWpBaUJ6WUNJQ0FGSUFVb0FpdzJBaHdnQlNBR1xcXG5OZ0lZSUFWQktHb2dCU0FHSUFjZ0F5QUVFSXNEQWtBQ1FBSkFJQVV0QUNoQkJFWU5BQ0FGS1FNb0lnaEMvd0dEUWdSU0RRRUxJQVZCQ0dcXFxub2dCUkRXQmlBRktRTUlJUWdnQlNnQ0VDRUVJQVZCOEFCcUlBRVFpQVVnQlVIb0FHb2dBa0VZYWlrREFEY0RBQ0FGUWVBQWFpQUNRUkJxXFxcbktRTUFOd01BSUFWQndBQnFRUmhxSUFKQkNHb3BBd0EzQXdBZ0JTQUVOZ0pJSUFVZ0NEY0RRQ0FGSUFJcEF3QTNBMUJCQUNFQklBQWdCaVxcXG5BSElBVkJ3QUJxRUxNQklnWU5BU0FGUVJocUVPTU1RUUFoQmd3RUN5QUZJQWczQXpoQkFTRUJJQVZCT0dvUXNBa2hCZ3NnQlVFWWFoRGpcXFxuRENBQkRRRU1BZ3NnQlNnQ0xDRUdDeUFDRUlVTEN5QUZRWUFCYWlRQUlBWUw0d0lDQVg4QmZpTUFRZUFCYXlJRUpBQWdCRUdZQVdvZ0FpXFxcbkFERUpvSkFrQUNRQUpBSUFRb0FwZ0JJZ05CQWtjTkFDQUVMUUNjQVJDeURTRUREQUVMSUFRdEFKd0JJUUlnQkVIUUFHcEJCWElnQkVHWVxcXG5BV3BCQlhKQnd3QVFwQTBhSUFRZ0Fqb0FWQ0FFSUFNMkFsQkJBQ0VESUFSQkFEWUNuQUVnQkNBRVFkQUFhallDbUFFZ0JFRVFhaUFCSUFcXFxuUkIwQUJxRUpZRUlBUkJtQUZxUVFSeUVNd0xJQVJCNUFCcUVPTU1RWUFCSVFJQ1FBSkFBa0FnQkNnQ0dDSUJRWURzbEtOOGFnNENBUUlBXFxcbkN5QUVLUU1RSVFVZ0JDQUJOZ0tnQVNBRUlBVTNBNWdCSUFSQm1BRnFRUXhxSUFSQkVHcEJER3BCTkJDa0RSb2dCRUVJYWlBRVFhZ0JhaFxcXG5EVENDQUVLQUlJSUFRb0Fnd1E0Z2NoQWlBRVFaZ0JhaENmQ3dzZ0JDQUNOZ0tjQVF3Q0N5QUVLQUlRSVFNTElBUWdBellDbkFGQkFTRURcXFxuQ3lBRUlBTTJBcGdCSUFRZ0JFR1lBV29RdHdnZ0FDQUVLUU1BTndNQUlBUkI0QUZxSkFBTHVRSUJCWDhqQUVFZ2F5SUJKQUFnQVVFSWFpXFxcbkFBRUprR0FrQUNRQUpBQWtBZ0FTMEFDQTBBQWtBQ1FDQUJMUUFKSWdKQk1FY05BQ0FBS0FJSUlnSWdBQ2dDQkNJRFNRMEJEQVFMSUFKQlxcXG5UMnBCL3dGeFFRaExEUUlnQUNnQ0NDSUNJQUFvQWdRaUF5QUNJQU5MR3lFRUlBQW9BZ0FoQlFOQUlBUWdBa1lOQkNBRklBSnFMUUFBUVZcXFxuQnFRZjhCY1VFSlN3MEVJQUFnQWtFQmFpSUNOZ0lJREFBTEN5QUFLQUlBSUFKcUxRQUFRVkJxUWY4QmNVRUpTdzBDSUFGQkRUWUNFQ0FBXFxcbklBRkJFR29RemdnaEJBd0RDeUFCS0FJTUlRUU1BZ3NnQVVFTk5nSVFJQUFnQVVFUWFoRFBDQ0VFREFFTFFRQWhCQ0FDSUFOUERRQUNRQ1xcXG5BQUtBSUFJQUpxTFFBQUlnSkI1UUJHRFFBZ0FrSEZBRVlOQUNBQ1FTNUhEUUVnQUJDakF5RUVEQUVMSUFBUXd3SWhCQXNnQVVFZ2FpUUFcXFxuSUFRTHd3SUJCWDlCQUNFQ0FrQWdBVUdBQWtrTkFFRWZJUUlnQVVILy8vOEhTdzBBSUFGQkJpQUJRUWgyWnlJQ2EzWkJBWEVnQWtFQmRHXFxcbnRCUG1vaEFnc2dBRUlBTndJUUlBQWdBallDSENBQ1FRSjBRZUNuendCcUlRTWdBQkNMRGlFRUFrQUNRQUpBQWtBQ1FFRUFLQUw4cWs4aVxcXG5CVUVCSUFKMElnWnhSUTBBSUFNb0FnQWhCU0FDRVB3S0lRSWdCUkNMRGhDVkRTQUJSdzBCSUFVaEFnd0NDMEVBSUFVZ0JuSTJBdnlxVHlcXFxuQURJQUEyQWdBZ0FDQUROZ0lZREFNTElBRWdBblFoQXdOQUlBVWdBMEVkZGtFRWNXcEJFR29pQmlnQ0FDSUNSUTBDSUFOQkFYUWhBeUFDXFxcbklRVWdBaENMRGhDVkRTQUJSdzBBQ3dzZ0FoQ0xEaUlDS0FJSUlnTWdCRFlDRENBQ0lBUTJBZ2dnQkNBQ05nSU1JQVFnQXpZQ0NDQUFRUVxcXG5BMkFoZ1BDeUFHSUFBMkFnQWdBQ0FGTmdJWUN5QUVJQVEyQWdnZ0JDQUVOZ0lNQzhBQ0FRZC9Jd0JCRUdzaUFpUUFRUUVoQXdKQUFrQWdcXFxuQVNnQ0ZDSUVRU2NnQVVFWWFpZ0NBQ2dDRUNJRkVRWUFEUUFnQWlBQUtBSUFRWUVDRUdFQ1FBSkFJQUl0QUFCQmdBRkhEUUFnQWtFSWFpXFxcbkVHUVlBQklRY0RRQUpBQWtBZ0IwSC9BWEZCZ0FGR0RRQWdBaTBBQ2lJQUlBSXRBQXRQRFFRZ0FpQUFRUUZxT2dBS0lBQkJDazhOQmlBQ1xcXG5JQUJxTFFBQUlRRU1BUXRCQUNFSElBWkJBRFlDQUNBQ0tBSUVJUUVnQWtJQU53TUFDeUFFSUFFZ0JSRUdBRVVOQUF3REN3c2dBaTBBQ2lcXFxuSUJRUW9nQVVFS1N4c2hBQ0FDTFFBTElnY2dBU0FISUFGTEd5RUlBMEFnQ0NBQlJnMEJJQUlnQVVFQmFpSUhPZ0FLSUFBZ0FVWU5BeUFDXFxcbklBRnFJUVlnQnlFQklBUWdCaTBBQUNBRkVRWUFSUTBBREFJTEN5QUVRU2NnQlJFR0FDRURDeUFDUVJCcUpBQWdBdzhMSUFCQkNrSDR0OFxcXG40QUVJRUZBQXVzQWdFRGZ5TUFRUkJySWdJa0FDQUFLQUlBSVFBZ0FrRUFOZ0lNQWtBQ1FDQUJRWUFCU1EwQUFrQWdBVUdBRUVrTkFBSkFcXFxuSUFGQmdJQUVTUTBBSUFJZ0FVRS9jVUdBQVhJNkFBOGdBaUFCUVFaMlFUOXhRWUFCY2pvQURpQUNJQUZCREhaQlAzRkJnQUZ5T2dBTklBXFxcbklnQVVFU2RrRUhjVUh3QVhJNkFBeEJCQ0VCREFNTElBSWdBVUUvY1VHQUFYSTZBQTRnQWlBQlFReDJRZUFCY2pvQURDQUNJQUZCQm5aQlxcXG5QM0ZCZ0FGeU9nQU5RUU1oQVF3Q0N5QUNJQUZCUDNGQmdBRnlPZ0FOSUFJZ0FVRUdka0hBQVhJNkFBeEJBaUVCREFFTElBSWdBVG9BREVcXFxuRUJJUUVMQWtBZ0FDZ0NBQ0lESUFGcUlnUWdBMGtnQkVFUFMzSWlCQTBBSUFBZ0EycEJCR29nQWtFTWFpQUJFS1FOR2lBQUlBQW9BZ0FnXFxcbkFXbzJBZ0FMSUFKQkVHb2tBQ0FFQzZ3Q0FRVi9Ba0FDUUFKQUFrQWdBa0VEYWtGOGNTSUVJQUpHRFFBZ0JDQUNheUlFSUFNZ0JDQURTUlxcXG5zaUJFVU5BRUVBSVFVZ0FVSC9BWEVoQmtFQklRY0RRQ0FDSUFWcUxRQUFJQVpHRFFRZ0JDQUZRUUZxSWdWSERRQUxJQVFnQTBGNGFpSUlcXFxuU3cwQ0RBRUxJQU5CZUdvaENFRUFJUVFMSUFGQi93RnhRWUdDaEFoc0lRVURRQ0FDSUFScUlnY29BZ0FnQlhNaUJrRi9jeUFHUWYvOSszXFxcbmRxY1VHQWdZS0VlSEVOQVNBSFFRUnFLQUlBSUFWeklnWkJmM01nQmtILy9mdDNhbkZCZ0lHQ2hIaHhEUUVnQkVFSWFpSUVJQWhORFFBTFxcXG5DMEVBSVFjQ1FDQUVJQU5HRFFBZ0FVSC9BWEVoQlFOQUFrQWdBaUFFYWkwQUFDQUZSdzBBSUFRaEJVRUJJUWNNQXdzZ0F5QUVRUUZxSWdcXFxuUkhEUUFMQ3lBRElRVUxJQUFnQlRZQ0JDQUFJQWMyQWdBTHpnSUNDSDhDZmlNQVFUQnJJZ1VrQUVFQUlRWWdCVUVBTmdJY0lBVWdBU2dDXFxcbkJDSUhJQUtuY1NJSU5nSVlJQUpDR1loQy93Q0RRb0dDaElpUW9NQ0FBWDRoRFNBQktBSUFJUWxCQUNFS0FrQURRQ0FGSUFrZ0NHb3BBQVxcXG5BaUFqY0RJQ0FGSUFJZ0RZVWlEa0ovaFNBT1F2LzkrL2Z2MzcvL2ZueURRb0NCZ29TSWtLREFnSCtETndNb0FrQUNRQU5BSUFWQkVHb2dcXFxuQlVFb2FoQ0VCd0pBSUFVb0FoQU5BQ0FLUlEwQ0RBTUxJQU1nQlNnQ0ZDQUlhaUFIY1NJTElBUW9BaEFSQmdCRkRRQUxRUUFoQ0F3REN5XFxcbkFGUVFocUlBRWdCVUVnYWlBRlFSaHFFTnNJSUFVb0Fnd2hEQ0FGS0FJSUlRb0xBa0FnQWlBQ1FnR0dnMEtBZ1lLRWlKQ2d3SUIvZzFCRlxcXG5EUUFnQlNBR1FRaHFJZ1kyQWh3Z0JTQUdJQWhxSUFkeElnZzJBaGdNQVFzTFFRRWhDQ0FCSUF3UXBna2hDd3NnQUNBTE5nSUVJQUFnQ0RcXFxuWUNBQ0FGUVRCcUpBQUwwUUlCQkg4akFFSGdBR3NpQVNRQUlBRkJBRFlDTUNBQlFnRTNBeWdnQVVFNGFpQUJRU2hxUVppdHdBQVF5d2dDXFxcblFDQUFJQUZCT0dvUTVRRU5BQ0FCUVJocVFRaHFJZ0lnQVVFb2FrRUlhaWdDQURZQ0FDQUJJQUVwQXlnM0F4Z2dBVUVZYWtIMHI4QUFRZlxcXG42dndBQVE5d2dnQVVFUWFoQVFJZ01RRVNBQktBSVFJUUFnQVNBQktBSVVJZ1EyQWtBZ0FTQUVOZ0k4SUFFZ0FEWUNPQ0FCUVFocUlBRkJcXFxuT0dvUThnb2dBU0FCS0FJTUlnQTJBakFnQVNBQU5nSXNJQUVnQVNnQ0NDSUVOZ0lvSUFGQkdHb2dCQ0FBRVB3TElBRkJHR3BCL3EvQUFFXFxcbkdBc01BQUVQY0lJQUZCT0dwQkNHb2dBaWdDQURZQ0FDQUJJQUVwQXhnM0F6Z2dBU0FCUVRocUVQSUtJQUVvQWdBZ0FTZ0NCQkFTSUFGQlxcXG5LR29RK3d3Q1FDQURRWVFCU1EwQUlBTVFBUXNnQVVIZ0FHb2tBQThMUWJDdHdBQkJOeUFCUVJocVFlaXR3QUJCeEs3QUFCRENCQUFMcHdcXFxuSUJCbjhDUUFKQUlBRW9BZ0FpQWlBQktBSUVJZ05IRFFCQkFDRUJEQUVMSUFFZ0EwRi9haUlFTmdJRUFrQWdCQzBBQUNJRndDSUdRWDlLXFxcbkRRQUNRQUpBSUFJZ0JFY05BRUVBSVFNZ0FpRUZEQUVMSUFFZ0EwRithaUlGTmdJRUlBVWhBd3NDUUFKQUlBTXRBQUFpQThBaUJFRkFTQVxcXG4wQUlBTkJIM0VoQVF3QkN3SkFBa0FnQWlBRlJ3MEFRUUFoQXlBQ0lRVU1BUXNnQVNBRlFYOXFJZ1UyQWdRZ0JTRURDd0pBQWtBZ0F5MEFcXFxuQUNJRHdDSUhRVUJJRFFBZ0EwRVBjU0VCREFFTEFrQUNRQ0FDSUFWSERRQkJBQ0VGREFFTElBRWdCVUYvYWlJRk5nSUVDeUFGTFFBQVFRXFxcbmR4UVFaMElBZEJQM0Z5SVFFTElBRkJCblFnQkVFL2NYSWhBUXNnQVVFR2RDQUdRVDl4Y2lFRkMwRUJJUUVMSUFBZ0JUWUNCQ0FBSUFFMlxcXG5BZ0FMMlFJQ0JIOEJmaU1BUWNBQWF5SURKQUJCQVNFRUFrQWdBQzBBQkEwQUlBQXRBQVVoQkFKQUFrQUNRQUpBSUFBb0FnQWlCU2dDSENcXFxuSUdRUVJ4RFFBZ0JFSC9BWEVOQVF3REN5QUVRZjhCY1EwQlFRRWhCQ0FGS0FJVVFiMmV6Z0JCQVNBRlFSaHFLQUlBS0FJTUVRa0FEUU1nXFxcbkJTZ0NIQ0VHREFFTFFRRWhCQ0FGS0FJVVFiR2V6Z0JCQWlBRlFSaHFLQUlBS0FJTUVRa0FSUTBCREFJTFFRRWhCQ0FEUVFFNkFCY2dBMFxcXG5Fd2FrR1FuczRBTmdJQUlBTWdCU2tDRkRjRENDQURJQU5CRjJvMkFoQWdBeUFGS1FJSU53TWdJQVVwQWdBaEJ5QURJQVkyQWpRZ0F5QUZcXFxuS0FJUU5nSW9JQU1nQlMwQUlEb0FPQ0FESUFjM0F4Z2dBeUFEUVFocU5nSXNJQUVnQTBFWWFpQUNLQUlNRVFZQURRRWdBeWdDTEVHdm5zXFxcbjRBUVFJZ0F5Z0NNQ2dDREJFSkFDRUVEQUVMSUFFZ0JTQUNLQUlNRVFZQUlRUUxJQUJCQVRvQUJTQUFJQVE2QUFRZ0EwSEFBR29rQUF1a1xcXG5BZ0lEZndGK0FrQWdBZzBBSUFCQkFEb0FBU0FBUVFFNkFBQVBDd0pBQWtBQ1FBSkFJQUV0QUFCQlZXb09Bd0VDQUFJTElBSkJBVVlOQWdcXFxud0JDeUFDUVg5cUlnSkZEUUVnQVVFQmFpRUJDd0pBQWtBQ1FDQUNRUWxKRFFCQkFDRURBMEFnQWtVTkFpQUJMUUFBUVZCcUlnUkJDVXNOXFxcbkJDQURyVUlLZmlJR1FpQ0lwMEVBUncwRElBUWdCU0FFUVFwSkd5RURJQUZCQVdvaEFTQUNRWDlxSVFJZ0JDRUZJQU1nQnFjaUJHb2lBeVxcXG5BRVR3MEFDeUFBUVFJNkFBRWdBRUVCT2dBQUR3dEJBQ0VEQTBBZ0FTMEFBRUZRYWlJRVFRbExEUU1nQVVFQmFpRUJJQVFnQTBFS2JHb2hcXFxuQXlBQ1FYOXFJZ0lOQUFzTElBQWdBellDQkNBQVFRQTZBQUFQQ3lBQVFRSTZBQUVnQUVFQk9nQUFEd3NnQUVFQk9nQUJJQUJCQVRvQUFBXFxcbnUyQWdFRGZ5TUFRU0JySWdFa0FDQUJJQUFRbWdZQ1FBSkFBa0FDUUFKQUFrQWdBUzBBQUEwQUFrQUNRQUpBSUFFdEFBRWlBa0V3UncwQVxcXG5JQUZCQ0dvZ0FCRGVDQ0FCTFFBSURRRWdBUzBBQ1VGUWFrSC9BWEZCQ2trTkFnd0ZDeUFDUVU5cVFmOEJjVUVJU3cwREEwQWdBVUVRYWlcXFxuQUFFTjRJSUFFdEFCQU5CaUFCTFFBUlFWQnFRZjhCY1VFS1R3MEZJQUFRZ3d3TUFBc0xJQUVvQWd3aEFnd0dDeUFCUVEwMkFoQWdBQ0FCXFxcblFSQnFFTjBJSVFJTUJRc2dBU2dDQkNFQ0RBUUxJQUZCRFRZQ0VDQUFJQUZCRUdvUTN3Z2hBZ3dEQ3lBQlFSQnFJQUFRM2dnZ0FTMEFFRVxcXG5VTkFRc2dBU2dDRkNFQ0RBRUxBa0FnQVMwQUVTSURRUzVHRFFBQ1FDQURRY1VBUmcwQVFRQWhBaUFEUWVVQVJ3MENDeUFBRUljRElRSU1cXFxuQVFzZ0FCRFFBeUVDQ3lBQlFTQnFKQUFnQWd1eEFnRUhmeU1BUVRCcklnTWtBQ0FEUVFBMkFpZ2dBeUFCTmdJZ0lBTWdBVFlDR0NBRElBXFxcbkkyQWh3Z0F5QUJJQUpxSWdRMkFpUWdBMEVnYWlFQ0lBRWhCUUpBQTBBZ0EwRVFhaUFDRU53RUlBTW9BaFFpQmtGM2FpSUhRUmRMRFFGQlxcXG5BU0FIZEVHVGdJQUVjVVVOQVNBREtBSWdJUVVnQXlnQ0pDRUVEQUFMQ3dKQUFrQWdCa0dBZ01RQVJnMEFJQVFnQldzZ0F5Z0NFQ0lJYWlcXFxuQURLQUlnYWlBREtBSWtheUVKREFFTFFRQWhDRUVBSVFrTEFrQURRQ0FES0FJZ0lRUWdBeWdDSkNFRklBTkJDR29nQWhDckFpQURLQUlNXFxcbklnWkJkMm9pQjBFWFN3MEJRUUVnQjNSQms0Q0FCSEVOQUFzTEFrQWdCa0dBZ01RQVJnMEFJQVVnQkdzZ0F5Z0NDR29nQXlnQ0lHb2dBeVxcXG5nQ0pHc2hDUXNnQUNBSklBaHJOZ0lFSUFBZ0FTQUlhallDQUNBRFFUQnFKQUFMdEFJQ0EzOEJmaU1BUWFBQ2F5SURKQUFnQTBFWWFpQURcXFxuSUFFb0FnQWdBU2dDQ0JDd0FnSkFBa0FDUUFKQUFrQWdBeWdDR0VVTkFDQURRUmhxUVFSeUVPQUhEQUVMSUFNb0Fod2lCQTBCQzBFQUlRXFxcblFnQTBFQU5nSUlEQUVMSUFNZ0EwRWdhaWtEQURjQ3BBRWdBeUFFTmdLZ0FTQURRUmhxSUFOQm9BRnFFSWtGQWtBZ0F5MEFLRUVDUncwQVxcXG5JQU5CQ0dwQkNHb2dBMEVZYWtFSWFpZ0NBQ0lGTmdJQUlBTWdBeWtER0NJR053TUlJQWFuSVFRTUFndEJBQ0VFSUFOQkFEWUNDQ0FEUVJcXFxuaHFFT01NQ3dzZ0EwR2dBV29nQkNBRklBSVFZeUFEUVJocVFRUnFJQU5Cb0FGcVFZQUJFS1FOR2lBQVFRQTJBZ0FnQUVHUUFXb2dBVUVJXFxcbmFpZ0NBRFlDQUNBQUlBRXBBZ0EzQW9nQklBQkJCR29nQTBFWWFrR0VBUkNrRFJvZ0EwRUlhaERNQ3lBRFFhQUNhaVFBQzZjQ0FnVi9BWFxcXG40akFFSFFBR3NpQWlRQUlBSkJDR3BCZnlBQVFRTnNJZ0JCZjJwbmRrRUJha0VCSUFCQkFVc2JJZ05CQUJEOUF5QUNRUUEyQWhnZ0FpQUNcXFxuS0FJTU5nSVVJQUlnQWlnQ0NDSUVOZ0lRUVFBaEFFRUFJUVVDUUFOQUlBTWdCVVlOQVNBRlFRRnFJUVVDUUNBQUlBSW9BaFJIRFFBZ0FrXFxcbkVRYWlBQUVQNElJQUlvQWhBaEJDQUNLQUlZSVFBTElBUWdBRUVHZEdvaUJpQUZOZ0lNSUFaQkFEWUNDQ0FHUWdBM0F3QWdCa0VRYWlBQ1xcXG5RU0JxUVRBUXBBMGFJQUlnQUVFQmFpSUFOZ0lZREFBTEN5QUNRU0JxUVFocUlBSkJFR3BCQ0dvb0FnQTJBZ0FnQWlBQ0tRTVFOd01nSUFcXFxuSWdBa0VnYWhEMENpQUNLUU1BSVFkQkVCQ3VCeUlBSUFFMkFnd2dBRUVmSUFObmF6WUNDQ0FBSUFjM0FnQWdBa0hRQUdva0FDQUFDNmNDXFxcbkFRSi9Jd0JCRUdzaUFpUUFBa0FDUUNBQlFmOEFTdzBBQWtBZ0FDZ0NDQ0lESUFBb0FnUkhEUUFnQUNBREVQZ0lJQUFvQWdnaEF3c2dBQ1xcXG5nQ0FDQURhaUFCT2dBQUlBQWdBQ2dDQ0VFQmFqWUNDQXdCQ3lBQ1FRQTJBZ3dDUUFKQUlBRkJnQkJKRFFBQ1FDQUJRWUNBQkVrTkFDQUNcXFxuSUFGQlAzRkJnQUZ5T2dBUElBSWdBVUVHZGtFL2NVR0FBWEk2QUE0Z0FpQUJRUXgyUVQ5eFFZQUJjam9BRFNBQ0lBRkJFblpCQjNGQjhBXFxcbkZ5T2dBTVFRUWhBUXdDQ3lBQ0lBRkJQM0ZCZ0FGeU9nQU9JQUlnQVVFTWRrSGdBWEk2QUF3Z0FpQUJRUVoyUVQ5eFFZQUJjam9BRFVFRFxcXG5JUUVNQVFzZ0FpQUJRVDl4UVlBQmNqb0FEU0FDSUFGQkJuWkJ3QUZ5T2dBTVFRSWhBUXNnQUNBQ1FReHFJQUVRL0FzTElBSkJFR29rQUVcXFxuRUFDNmNDQVFKL0l3QkJFR3NpQWlRQUFrQUNRQ0FCUWY4QVN3MEFBa0FnQUNnQ0NDSURJQUFvQWdSSERRQWdBQ0FERUpVSklBQW9BZ2doXFxcbkF3c2dBQ2dDQUNBRGFpQUJPZ0FBSUFBZ0FDZ0NDRUVCYWpZQ0NBd0JDeUFDUVFBMkFnd0NRQUpBSUFGQmdCQkpEUUFDUUNBQlFZQ0FCRVxcXG5rTkFDQUNJQUZCUDNGQmdBRnlPZ0FQSUFJZ0FVRUdka0UvY1VHQUFYSTZBQTRnQWlBQlFReDJRVDl4UVlBQmNqb0FEU0FDSUFGQkVuWkJcXFxuQjNGQjhBRnlPZ0FNUVFRaEFRd0NDeUFDSUFGQlAzRkJnQUZ5T2dBT0lBSWdBVUVNZGtIZ0FYSTZBQXdnQWlBQlFRWjJRVDl4UVlBQmNqXFxcbm9BRFVFRElRRU1BUXNnQWlBQlFUOXhRWUFCY2pvQURTQUNJQUZCQm5aQndBRnlPZ0FNUVFJaEFRc2dBQ0FDUVF4cUlBRVFrd3dMSUFKQlxcXG5FR29rQUVFQUM0NENBUVYvSUFBZ0FVRURkR29oQlNBQUlBSkJBM1FpQm1vaEJ3SkFBa0FDUUNBQklBSnJJZ0VnQWs4TkFDQURJQWNnQVVcXFxuRURkQ0lDRUtRTklnZ2dBbW9oQWlBRlFYaHFJUUVEUUNBSElBQk5EUUlnQWlBSVRRMENJQUVnQjBGNFFRQWdBa0Y0YWlnQ0FDSUdJQWRCXFxcbmVHb29BZ0FpQ1VraUJSdHFJZ2NnQWtGNFFRQWdCaUFKVHh0cUlnSWdCUnNwQWdBM0FnQWdBVUY0YWlFQkRBQUxDeUFESUFBZ0JoQ2tEU1xcXG5BR2FpRUNBMEFnQXlBQ1R3MENJQWNnQlU4TkFpQUFJQWNnQXlBSEtBSUFJZ0VnQXlnQ0FDSUdTU0lKR3lrQ0FEY0NBQ0FBUVFocUlRQWdcXFxuQXlBQklBWlBRUU4wYWlFRElBY2dDVUVEZEdvaEJ3d0FDd3NnQnlFQUN5QUFJQU1nQWlBRGF4Q2tEUm9MamdJQkJYOGdBQ0FCUVFOMGFpXFxcbkVGSUFBZ0FrRURkQ0lHYWlFSEFrQUNRQUpBSUFFZ0Ftc2lBU0FDVHcwQUlBTWdCeUFCUVFOMElnSVFwQTBpQ0NBQ2FpRUNJQVZCZUdvaFxcXG5BUU5BSUFjZ0FFME5BaUFDSUFoTkRRSWdBU0FIUVhoQkFDQUNRWGhxTFFBQUlnWWdCMEY0YWkwQUFDSUpTU0lGRzJvaUJ5QUNRWGhCQUNcXFxuQUdJQWxQRzJvaUFpQUZHeWtDQURjQ0FDQUJRWGhxSVFFTUFBc0xJQU1nQUNBR0VLUU5JQVpxSVFJRFFDQURJQUpQRFFJZ0J5QUZUdzBDXFxcbklBQWdCeUFESUFjdEFBQWlBU0FETFFBQUlnWkpJZ2tiS1FJQU53SUFJQUJCQ0dvaEFDQURJQUVnQms5QkEzUnFJUU1nQnlBSlFRTjBhaVxcXG5FSERBQUxDeUFISVFBTElBQWdBeUFDSUFOckVLUU5HZ3VuQWdFQmZ5TUFRUkJySWdJa0FDQUFLQUlBSVFBQ1FBSkFJQUVvQWdBZ0FTZ0NcXFxuQ0hKRkRRQWdBa0VBTmdJTUFrQUNRQ0FBUVlBQlNRMEFBa0FnQUVHQUVFa05BQUpBSUFCQmdJQUVTUTBBSUFJZ0FFRS9jVUdBQVhJNkFBXFxcbjhnQWlBQVFSSjJRZkFCY2pvQURDQUNJQUJCQm5aQlAzRkJnQUZ5T2dBT0lBSWdBRUVNZGtFL2NVR0FBWEk2QUExQkJDRUFEQU1MSUFJZ1xcXG5BRUUvY1VHQUFYSTZBQTRnQWlBQVFReDJRZUFCY2pvQURDQUNJQUJCQm5aQlAzRkJnQUZ5T2dBTlFRTWhBQXdDQ3lBQ0lBQkJQM0ZCZ0FcXFxuRnlPZ0FOSUFJZ0FFRUdka0hBQVhJNkFBeEJBaUVBREFFTElBSWdBRG9BREVFQklRQUxJQUVnQWtFTWFpQUFFRk1oQVF3QkN5QUJLQUlVXFxcbklBQWdBVUVZYWlnQ0FDZ0NFQkVHQUNFQkN5QUNRUkJxSkFBZ0FRdWVBZ0VIZndKQUFrQWdBU2dDQUNJQ0lBRW9BZ1FpQTBjTkFFRUFJUVxcXG5RTUFRdEJBU0VFSUFFZ0FrRUJhaUlGTmdJQUlBSXRBQUFpQnNCQmYwb05BQUpBQWtBZ0JTQURSdzBBUVFBaEJTQURJUUlNQVFzZ0FTQUNcXFxuUVFKcUlnSTJBZ0FMSUFaQkgzRWhCeUFGTFFBQVFUOXhJUVZCQVNFRUFrQWdCa0hmQVVzTkFDQUhRUVowSUFWeUlRWU1BUXNDUUFKQUlBXFxcbklnQTBjTkFFRUFJUUlnQXlFSURBRUxJQUVnQWtFQmFpSUlOZ0lBQ3lBRlFRWjBJQUl0QUFCQlAzRnlJUUlDUUNBR1FmQUJUdzBBSUFJZ1xcXG5CMEVNZEhJaEJnd0JDd0pBQWtBZ0NDQURSdzBBUVFBaENBd0JDeUFCSUFoQkFXbzJBZ0FMSUFKQkJuUWdDQzBBQUVFL2NYSWdCMEVTZEVcXFxuR0FnUEFBY1hJaEJnc2dBQ0FHTmdJRUlBQWdCRFlDQUF1ZUFnRUhmd0pBQWtBZ0FTZ0NBQ0lDSUFFb0FnUWlBMGNOQUVFQUlRUU1BUXRCXFxcbkFTRUVJQUVnQWtFQmFpSUZOZ0lBSUFJdEFBQWlCc0JCZjBvTkFBSkFBa0FnQlNBRFJ3MEFRUUFoQlNBRElRSU1BUXNnQVNBQ1FRSnFJZ1xcXG5JMkFnQUxJQVpCSDNFaEJ5QUZMUUFBUVQ5eElRVkJBU0VFQWtBZ0JrSGZBVXNOQUNBSFFRWjBJQVZ5SVFZTUFRc0NRQUpBSUFJZ0EwY05cXFxuQUVFQUlRSWdBeUVJREFFTElBRWdBa0VCYWlJSU5nSUFDeUFGUVFaMElBSXRBQUJCUDNGeUlRSUNRQ0FHUWZBQlR3MEFJQUlnQjBFTWRIXFxcbkloQmd3QkN3SkFBa0FnQ0NBRFJ3MEFRUUFoQ0F3QkN5QUJJQWhCQVdvMkFnQUxJQUpCQm5RZ0NDMEFBRUUvY1hJZ0IwRVNkRUdBZ1BBQVxcXG5jWEloQmdzZ0FDQUdOZ0lFSUFBZ0JEWUNBQXUwQWdFRGZ5TUFRVEJySWdJa0FDQUNFQmcyQWlBZ0FrRVlhaUFCSUFKQklHb1EyZ1lnQWlcXFxuZ0NIQ0VEQWtBQ1FBSkFBa0FnQWlnQ0dBMEFJQUpCRUdvZ0F4Q01DQ0FDSUFJb0FoUWlCRFlDTENBQ0lBSW9BaEFpQXpZQ0tDQURSUTBCXFxcbklBQkJBam9BQkNBQ1FTaHFRUVJ5RUpZTERBSUxJQUJCQXpvQUJDQUFJQU0yQWdBTUFRc2dBaUFFTmdJa0lBSkJDR29nQWtFa2FpQUJFTlxcXG5rR0lBSW9BZ3doQVFKQUFrQUNRQ0FDS0FJSURRQWdBaUFCRUkwSUlBSWdBaWdDQkNJRE5nSXNJQUlnQWlnQ0FDSUJOZ0lvSUFGRkRRSWdcXFxuQUVFQ09nQUVJQUpCS0dwQkJISVFsZ3NNQVFzZ0FFRURPZ0FFSUFBZ0FUWUNBQXNnQWtFa2FoQ1dDd3dCQ3lBQVFRQTZBQVFnQUNBRE5nXFxcbklBSUFKQkpHb1FsZ3NnQWtFZ2FoQ1dDd3dCQ3lBQ1FTQnFFSllMQ3lBQ1FUQnFKQUFMbmdJQkIzOENRQUpBSUFFb0FnQWlBaUFCS0FJRVxcXG5JZ05IRFFCQkFDRUVEQUVMUVFFaEJDQUJJQUpCQVdvaUJUWUNBQ0FDTFFBQUlnYkFRWDlLRFFBQ1FBSkFJQVVnQTBjTkFFRUFJUVVnQXlcXFxuRUNEQUVMSUFFZ0FrRUNhaUlDTmdJQUN5QUdRUjl4SVFjZ0JTMEFBRUUvY1NFRlFRRWhCQUpBSUFaQjN3RkxEUUFnQjBFR2RDQUZjaUVHXFxcbkRBRUxBa0FDUUNBQ0lBTkhEUUJCQUNFQ0lBTWhDQXdCQ3lBQklBSkJBV29pQ0RZQ0FBc2dCVUVHZENBQ0xRQUFRVDl4Y2lFQ0FrQWdCa1xcXG5Id0FVOE5BQ0FDSUFkQkRIUnlJUVlNQVFzQ1FBSkFJQWdnQTBjTkFFRUFJUWdNQVFzZ0FTQUlRUUZxTmdJQUN5QUNRUVowSUFndEFBQkJcXFxuUDNGeUlBZEJFblJCZ0lEd0FIRnlJUVlMSUFBZ0JqWUNCQ0FBSUFRMkFnQUx4UUlCRFg5QkFDRUFRUUFoQVFKQVFRQW9BdWlvVHlJQ1JRXFxcbjBBUWVDb3p3QWhBMEVBSVFGQkFDRUFBMEFnQWlJRUtBSUlJUUlnQkNnQ0JDRUZJQVFvQWdBaEJnSkFBa0JCNEtmUEFDQUVLQUlNUVFGMlxcXG5FSThPUlEwQUlBUVFsdzBOQUNBR0lBWVEwQTBpQjBFSUVKd0xJQWRyYWlJSEVKVU5JUWdRaWc0aUNVRUlFSndMSVFwQkZFRUlFSndMSVFcXFxudEJFRUVJRUp3TElRd2dCeENtREEwQUlBY2dDR29nQmlBSklBVnFJQW9nQzJvZ0RHcHJha2tOQUFKQUFrQWdCMEVBS0FLSXEwOUdEUUFnXFxcbkJ4RDJBUXdCQzBFQVFRQTJBb0NyVDBFQVFRQTJBb2lyVHdzQ1FFSGdwODhBSUFZZ0JSQ09EZzBBSUFjZ0NCRDZBUXdCQzBFQVFRQW9BcFxcXG5DclR5QUZhellDa0t0UElBTWdBallDQ0NBRklBRnFJUUVNQVFzZ0JDRURDeUFBUVFGcUlRQWdBZzBBQ3d0QkFDQUFRZjhmSUFCQi94OUxcXFxuR3pZQ29LdFBJQUVMcUFJQ0JIOEJma0VVSVFNQ1FBSkFJQUpDa000QVdnMEFJQUloQnd3QkMwRVVJUU1EUUNBQklBTnFJZ1JCZkdvZ0FpXFxcbkFDUXBET0FJQWlCMEtRemdCK2ZhY2lCVUgvL3dOeFFlUUFiaUlHUVFGMFFaaTB3QUJxTHdBQU93QUFJQVJCZm1vZ0JTQUdRZVFBYkd0QlxcXG4vLzhEY1VFQmRFR1l0TUFBYWk4QUFEc0FBQ0FEUVh4cUlRTWdBa0wvd2RjdlZpRUVJQWNoQWlBRURRQUxDd0pBQWtBZ0I2Y2lCVUhqQUVcXFxub05BQ0FGSVFRTUFRc2dBU0FEUVg1cUlnTnFJQVVnQlVIa0FHNGlCRUhrQUd4clFRRjBRWmkwd0FCcUx3QUFPd0FBQ3dKQUFrQWdCRUVLXFxcblNBMEFJQUVnQTBGK2FpSURhaUFFUVFGMFFaaTB3QUJxTHdBQU93QUFEQUVMSUFFZ0EwRi9haUlEYWlBRVFUQnFPZ0FBQ3lBQVFSUWdBMlxcXG5zMkFnUWdBQ0FCSUFOcU5nSUFDNzhDQVFWL0l3QkJJR3NpQWlRQUlBSkJFR29nQUJERUJTQUNRUWhxSUFJb0FoQWlBeUFDS0FJWUlnUVFcXFxuOGdFQ1FBSkFJQUlvQWdnaUFFVU5BQ0FDSUFBZ0FpZ0NEQkNDQnlBQ0tBSUFJZ1ZGRFFCQkFTRUFJQVVnQWlnQ0JDSUdRYzd0d0FCQkF4XFxcbkNtQ2cwQlFRSWhBQ0FGSUFaQjBlM0FBRUVERUtZS0RRRkJBeUVBSUFVZ0JrSFU3Y0FBUVFNUXBnb05BVUVLSVFBZ0JTQUdRY250d0FCQlxcXG5BeENtQ2cwQkFrQUNRQ0FGSUFaQndlM0FBRUVDRUtZS0RRQWdCU0FHUWNQdHdBQkJBeENtQ2cwQklBVWdCa0hHN2NBQVFRTVFwZ3BGRFFcXFxuSWdBeUFFUVFaQkF5QUJRZjhCY1J0QkNSQ0hBVUgvQVhFaEFBd0RDeUFESUFRZ0FVRUhFSWNCUWY4QmNTRUFEQUlMSUFNZ0JFRUZRUUlnXFxcbkFVSC9BWEViUVFnUWh3RkIvd0Z4SVFBTUFRc2dBU0VBQ3lBQ1FSQnFFSUlOSUFKQklHb2tBQ0FBQzdZQ0FnSi9BMzRqQUVFd2F5SUZKQVxcXG5BZ0FTZ0NFQ0VHSUFVZ0FVRVlhaWdDQURZQ0hDQUZJQVkyQWhnZ0JTQUVOZ0lVSUFVZ0F6WUNFQ0FGSUFFMkFpUWdBa0VaZHExQ2dZS0VcXFxuaUpDZ3dJQUJmaUVISUFFb0FnUWlCQ0FDY1NFQ0lBVWdCVUVRYWpZQ0lDQUJLQUlBSVFOQkFDRUdBa0FEUUNBRklBTWdBbW9wQUFBaUNDXFxcbkFIaFNJSlFuK0ZJQWxDLy8zNzkrL2Z2LzkrZklOQ2dJR0NoSWlRb01DQWY0TTNBeWdEUUNBRlFRaHFJQVZCS0dvUWhBY0NRQ0FGS0FJSVxcXG5EUUFDUUNBSUlBaENBWWFEUW9DQmdvU0lrS0RBZ0grRFVBMEFRUUFoQWd3RUN5QUNJQVpCQ0dvaUJtb2dCSEVoQWd3Q0N5QUZRU0JxSUFcXFxuVW9BZ3dnQW1vZ0JIRWlBUkNDQmtVTkFBc0xJQU1nQVVFQ2RHdEJmR29vQWdBaEJFRUJJUUlMSUFBZ0JEWUNCQ0FBSUFJMkFnQWdCVUV3XFxcbmFpUUFDNlVDQVFaL0l3QkJNR3NpQXlRQUlBTkJBRFlDS0NBRElBRTJBaUFnQXlBQk5nSVlJQU1nQWpZQ0hDQURJQUVnQW1vaUJEWUNKQ1xcXG5BRFFTQnFJUUlnQVNFRkFrQURRQ0FEUVJCcUlBSVEzUVFnQXlnQ0ZDSUdRUTFMRFFGQkFTQUdkRUdBekFCeFJRMEJJQU1vQWlBaEJTQURcXFxuS0FJa0lRUU1BQXNMQWtBQ1FDQUdRWUNBeEFCR0RRQWdCQ0FGYXlBREtBSVFJZ2RxSUFNb0FpQnFJQU1vQWlScklRZ01BUXRCQUNFSFFRXFxcbkFoQ0FzQ1FBTkFJQU1vQWlBaEJDQURLQUlrSVFVZ0EwRUlhaUFDRU5JRklBTW9BZ3dpQmtFTlN3MEJRUUVnQm5SQmdNd0FjUTBBQ3dzQ1xcXG5RQ0FHUVlDQXhBQkdEUUFnQlNBRWF5QURLQUlJYWlBREtBSWdhaUFES0FJa2F5RUlDeUFBSUFnZ0IyczJBZ1FnQUNBQklBZHFOZ0lBSUFcXFxuTkJNR29rQUF1aUFnRUZmMEVLSVFNQ1FBSkFJQUpCa000QVR3MEFJQUloQkF3QkMwRUtJUU1EUUNBQklBTnFJZ1ZCZkdvZ0FpQUNRWkRPXFxcbkFHNGlCRUdRemdCc2F5SUdRZi8vQTNGQjVBQnVJZ2RCQVhSQjRJekFBR292QUFBN0FBQWdCVUYrYWlBR0lBZEI1QUJzYTBILy93TnhRUVxcXG5GMFFlQ013QUJxTHdBQU93QUFJQU5CZkdvaEF5QUNRZi9CMXk5TElRVWdCQ0VDSUFVTkFBc0xBa0FDUUNBRVFlTUFTdzBBSUFRaEFnd0JcXFxuQ3lBQklBTkJmbW9pQTJvZ0JDQUVRZVFBYmlJQ1FlUUFiR3RCQVhSQjRJekFBR292QUFBN0FBQUxBa0FDUUNBQ1FRcEpEUUFnQVNBRFFYXFxcbjVxSWdOcUlBSkJBWFJCNEl6QUFHb3ZBQUE3QUFBTUFRc2dBU0FEUVg5cUlnTnFJQUpCTUdvNkFBQUxJQUJCQ2lBRGF6WUNCQ0FBSUFFZ1xcXG5BMm8yQWdBTG5BSUJDSDhqQUVFUWF5SUNKQUFnQVVFWWFpRURJQUZCQ0dvb0FnQWhCQ0FCS0FJUUlRVWdBU2dDQkNFR0EwQkJBQ0VIQWtcXFxuQUNRQ0FGSUFFb0Fnd2lDRWtOQUNBRklBUkxEUUFnQWtFSWFpQUJLQUlVSUFOcVFYOXFMUUFBSUFZZ0NHb2dCU0FJYXhCeUFrQUNRQ0FDXFxcbktBSUlRUUZIRFFBZ0FTZ0NEQ0FDS0FJTWFpSUZJQUVvQWhRaUNFRi9haUlIVHcwQkRBTUxJQUVnQVNnQ0REWUNFQXdCQ3lBRklBZHJJZ1xcXG5jZ0NHb2lDU0FIU1EwQklBa2dCRXNOQVNBQ0lBZ2dBMEdRaHNFQUVOd0pJQVlnQjJvZ0NDQUNLQUlBSUFJb0FnUVFwZ3BGRFFFZ0FTQUhcXFxuTmdJUUlBQWdCellDQkNBQVFRaHFJQUVvQWhRZ0IybzJBZ0JCQVNFSEN5QUFJQWMyQWdBZ0FrRVFhaVFBRHdzZ0FTQUZOZ0lRREFBTEM2XFxcbm9DQWdKL0FYNGpBRUVnYXlJRUpBQUNRQUpBSUFJTkFDQUFRUUEyQWd3Z0FFSUFOd0lFSUFCQmdJUEFBRFlDQUF3QkN3SkFBa0FDUUNBQ1xcXG5RUWhKRFFBQ1FDQUNRWUNBZ0lBQ1R3MEFRUUVoQlNBQ1FRTjBJZ0pCRGtrTkEwRi9JQUpCQjI1QmYycG5ka0VCYWlFRkRBTUxJQVJCQ0dcXFxub2dBeEM3QmlBRUtBSU1JUVVnQkNnQ0NDSUNRWUdBZ0lCNFJ3MEJEQUlMUVFSQkNDQUNRUVJKR3lFRkRBRUxJQUFnQWpZQ0JDQUFRUUEyXFxcbkFnQWdBRUVJYWlBRk5nSUFEQUVMSUFSQkVHb2dBVUVJSUFVZ0F4Q3NBd0pBSUFRb0FoQWlBa1VOQUNBRUtRTVlJUVlnQWtIL0FTQUVLQVxcXG5JVUlnTkJDV29Rb1EwaEFpQUFJQVkzQWdnZ0FDQUROZ0lFSUFBZ0FqWUNBQXdCQ3lBRUtRSVVJUVlnQUVFQU5nSUFJQUFnQmpjQ0JBc2dcXFxuQkVFZ2FpUUFDNjhDQWdOL0EzNGpBRUV3YXlJRUpBQWdBU2dDRUNFRklBUWdBVUVZYWlnQ0FEWUNHQ0FFSUFVMkFoUWdCQ0FETmdJUUlBXFxcblFnQVRZQ0pDQUNRUmwyclVLQmdvU0lrS0RBZ0FGK0lRY2dBU2dDQkNJRElBSnhJUUlnQkNBRVFSQnFOZ0lnSUFFb0FnQWhCVUVBSVFZQ1xcXG5RQU5BSUFRZ0JTQUNhaWtBQUNJSUlBZUZJZ2xDZjRVZ0NVTC8vZnYzNzkrLy8zNThnMEtBZ1lLRWlKQ2d3SUIvZ3pjREtBTkFJQVJCQ0dcXFxub2dCRUVvYWhDRUJ3SkFJQVFvQWdnTkFBSkFJQWdnQ0VJQmhvTkNnSUdDaElpUW9NQ0FmNE5RRFFCQkFDRUNEQVFMSUFJZ0JrRUlhaUlHXFxcbmFpQURjU0VDREFJTElBUkJJR29nQkNnQ0RDQUNhaUFEY1NJQkVNc0tSUTBBQ3dzZ0JTQUJRUUowYTBGOGFpZ0NBQ0VEUVFFaEFnc2dBQ1xcXG5BRE5nSUVJQUFnQWpZQ0FDQUVRVEJxSkFBTHJ3SUNBMzhEZmlNQVFUQnJJZ1FrQUNBQktBSVFJUVVnQkNBQlFSaHFLQUlBTmdJWUlBUWdcXFxuQlRZQ0ZDQUVJQU0yQWhBZ0JDQUJOZ0lrSUFKQkdYYXRRb0dDaElpUW9NQ0FBWDRoQnlBQktBSUVJZ01nQW5FaEFpQUVJQVJCRUdvMkFpXFxcbkFnQVNnQ0FDRUZRUUFoQmdKQUEwQWdCQ0FGSUFKcUtRQUFJZ2dnQjRVaUNVSi9oU0FKUXYvOSsvZnYzNy8vZm55RFFvQ0Jnb1NJa0tEQVxcXG5nSCtETndNb0EwQWdCRUVJYWlBRVFTaHFFSVFIQWtBZ0JDZ0NDQTBBQWtBZ0NDQUlRZ0dHZzBLQWdZS0VpSkNnd0lCL2cxQU5BRUVBSVFcXFxuSU1CQXNnQWlBR1FRaHFJZ1pxSUFOeElRSU1BZ3NnQkVFZ2FpQUVLQUlNSUFKcUlBTnhJZ0VRekFwRkRRQUxDeUFGSUFGQkFuUnJRWHhxXFxcbktBSUFJUU5CQVNFQ0N5QUFJQU0yQWdRZ0FDQUNOZ0lBSUFSQk1Hb2tBQXV5QWdFRWZ5TUFRUkJySWdFa0FDQUFRUXhxSVFJQ1FBTkFBa1xcXG5BZ0FpZ0NBRVVOQUNBQ0VJVURJZ05CZ0lERUFFY05BaUFDUVFBMkFnQUxJQUFRaFFNaUEwRlRha0VDU1EwQkFrQWdBMEdBZ01RQVJ3MEFcXFxuUVlDQXhBQWhBd3dDQ3lBRFFaOS9ha0VhU1EwQklBTkJVR3BCQ2trTkFRSkFBa0FDUUFKQUFrQUNRQUpBSUFNUW93SWlCQzBBQUE0SUNBXFxcbmNGQkFBQkFnTUlDeUFBS0FJSVFRRTZBQWdNQndzZ0FDMEFGRVVOQmlBQUtBSUlRUUU2QUFZTUJnc2dCRUVCYWlFRElBQXRBQlJGRFFNZ1xcXG5BQ2dDQ0VFQk9nQUhEQU1MSUFCQkdHb3RBQUJGRFFRZ0FDZ0NDRUVCT2dBTERBUUxJQUF0QUJWRkRRTUxJQVJCQVdvaEF3c2dBVUVJYWlcXFxuQURFSjRFSUFFb0Fnd2hBeUFBSUFFb0FnZ2lCRFlDRENBQUlBUWdBMm8yQWhBTUFBc0xJQUZCRUdva0FDQURDNlVDQVFKL0l3QkJNR3NpXFxcbkFpUUFJQUpCQ0dvZ0FSQzJCQUpBQWtBQ1FBSkFJQUl0QUFnTkFDQUNMUUFKRFFJZ0FrRUZOZ0lZSUFFZ0FrRVlhaERPQ0NFQkRBRUxJQVxcXG5Jb0Fnd2hBUXNnQUVFQU5nSUFJQUFnQVRZQ0JBd0JDd0pBQWtBZ0FpMEFDa0VpUncwQUlBRkJGR3BCQURZQ0FDQUJJQUVvQWdoQkFXbzJcXFxuQWdnZ0FrRVlhaUFCSUFGQkRHb1FqUUVDUUFKQUlBSW9BaGhCQWtZTkFDQUNRUWhxSUFJb0Fod2dBaWdDSUJEWEJpQUNLQUlJRFFFZ0FpXFxcbmdDRENFRERBTUxJQUFnQWlnQ0hEWUNCQ0FBUVFBMkFnQU1Bd3NnQUNBQ0tRTUlOd0lBSUFCQkNHb2dBa0VJYWtFSWFpZ0NBRFlDQUF3Q1xcXG5DeUFCSUFKQktHcEJuSVRBQUJCb0lRTUxJQU1nQVJDcEJpRUJJQUJCQURZQ0FDQUFJQUUyQWdRTElBSkJNR29rQUF1bEFnRUNmeU1BUWJcXFxuQUJheUlCSkFBZ0FTQUFFTmtGSUFFZ0FTa0RBRGNET0FKQUFrQUNRQ0FCUVRocUVKSUxEUUFnQVVFSWFpQUFLQUlVSUFCQkhHb29BZ0FRXFxcbk5VRVBJUUlnQVMwQU5FRUNSZzBCSUFGQk9Hb2dBVUVJYWtFd0VLUU5HaUFCUVRocUVQY05JUUlnQVVFQU5nS0FBU0FCUWdFM0EzZ2dBVVxcXG5HSUFXb2dBVUg0QUdwQnBPYkFBQkRMQ0NBQ0lBRkJpQUZxRU4wQkRRSWdBVUhvQUdwQkNHb2dBVUg0QUdwQkNHb29BZ0EyQWdBZ0FTQUJcXFxuS1FONE53Tm9JQUFnQVVIb0FHb1FmVUgvQVhFaEFpQUJRVGhxRUxnS0RBRUxJQUZCT0dvZ0FCREVCU0FCS0FJNElBRW9Ba0FRamdGQi93XFxcbkZ4SVFJZ0FVRTRhaENDRFFzZ0FVR3dBV29rQUNBQ0R3dEJ2T2JBQUVFM0lBRkI2QUJxUWZUbXdBQkIwT2ZBQUJEQ0JBQUxuUUlDQW44QlxcXG5maU1BUVNCcklnTWtBQUpBQWtBZ0FRMEFJQUJCQURZQ0RDQUFRZ0EzQWdRZ0FFR0FnOEFBTmdJQURBRUxBa0FDUUFKQUlBRkJDRWtOQUFcXFxuSkFJQUZCLy8vLy93RkxEUUJCZnlBQlFRTjBRUWR1UVg5cVozWkJBV29oQVF3REN5QURRUWhxSUFJUXVnWWdBeWdDRENFQklBTW9BZ2dpXFxcbkJFR0JnSUNBZUVjTkFRd0NDMEVFUVFnZ0FVRUVTUnNoQVF3QkN5QUFJQVEyQWdRZ0FFRUFOZ0lBSUFCQkNHb2dBVFlDQUF3QkN5QURRUlxcXG5CcVFRUkJDQ0FCSUFJUW5BTUNRQ0FES0FJUUlnRkZEUUFnQXlrREdDRUZJQUZCL3dFZ0F5Z0NGQ0lDUVFscUVLRU5JUUVnQUNBRk53SUlcXFxuSUFBZ0FqWUNCQ0FBSUFFMkFnQU1BUXNnQXlrQ0ZDRUZJQUJCQURZQ0FDQUFJQVUzQWdRTElBTkJJR29rQUF1TkFnRUJmeU1BUVJCcklnXFxcbk1rQUFKQUFrQWdBVUdBQVVrTkFBSkFJQUZCZ0JCSkRRQUNRQ0FCUVlDQUJFa05BQ0FDSUFGQlAzRkJnQUZ5T2dBRElBSWdBVUVHZGtFL1xcXG5jVUdBQVhJNkFBSWdBaUFCUVF4MlFUOXhRWUFCY2pvQUFTQUNJQUZCRW5aQkIzRkI4QUZ5T2dBQVFRUWhBUXdEQ3lBQ0lBRkJQM0ZCZ0FcXFxuRnlPZ0FDSUFJZ0FVRU1ka0hnQVhJNkFBQWdBaUFCUVFaMlFUOXhRWUFCY2pvQUFVRURJUUVNQWdzZ0FpQUJRVDl4UVlBQmNqb0FBU0FDXFxcbklBRkJCblpCd0FGeU9nQUFRUUloQVF3QkN5QUNJQUU2QUFCQkFTRUJDeUFEUVFocVFRQWdBU0FDUVFSQjBQWEFBQkNhQnlBREtBSU1JUVxcXG5FZ0FDQURLQUlJTmdJQUlBQWdBVFlDQkNBRFFSQnFKQUFMcEFJQ0EzOENmaU1BUVJCcklnVWtBQ0FGSUFRMkFnd2dCU0FETmdJSUFrQUNcXFxuUUNBQ0tBSUlEUUFnQWtFY2FpZ0NBQ0VHSUFJb0FoUWhCd3dCQ3lBRklBSWdBa0VNYWlnQ0FCRC9CaUFGS0FJRUlRWWdCU2dDQUNFSEN5XFxcbkFCSUFZZ0JHb2dBMnNRcVFvZ0FTQUhJQVlRa3d3Z0FVRWpFTjRFSUFWQkNHb1F5QWthSUFFZ0JTZ0NDQ0FGS0FJTUVPY0RJQUFnQmpZQ1xcXG5EQ0FBUVFFMkFnZ2dBQ0FDS1FJME53STBJQUJCUEdvZ0FrRThhaWtDQURjQ0FDQUFRY1FBYWlBQ1FjUUFhaTBBQURvQUFDQUFJQUlvQWhcXFxuQTJBaEFnQUNBQ0tRSUFOd0lBSUFBZ0FTa0NBRGNDRkNBQVFSeHFJQUZCQ0dvb0FnQTJBZ0FnQWlrQ0lDRUlJQUlwQWlnaENTQUFJQUlvXFxcbkFqQTJBakFnQUNBSk53SW9JQUFnQ0RjQ0lDQUZRUkJxSkFBTG5RSUJBbjhqQUVFd2F5SUNKQUFnQWtFSWFpQUJFTG9FQWtBQ1FBSkFBa1xcXG5BZ0FpMEFDQTBBSUFJdEFBa05BaUFDUVFVMkFoZ2dBU0FDUVJocUVOMElJUUVNQVFzZ0FpZ0NEQ0VCQ3lBQVFRQTJBZ0FnQUNBQk5nSUVcXFxuREFFTEFrQUNRQ0FDTFFBS1FTSkhEUUFnQVJDRERDQUJRUlJxUVFBMkFnQWdBa0VZYWlBQklBRkJER29ReGdFQ1FBSkFJQUlvQWhoQkFrXFxcbllOQUNBQ1FRaHFJQUlvQWh3Z0FpZ0NJQkRYQmlBQ0tBSUlEUUVnQWlnQ0RDRUREQU1MSUFBZ0FpZ0NIRFlDQkNBQVFRQTJBZ0FNQXdzZ1xcXG5BQ0FDS1FNSU53SUFJQUJCQ0dvZ0FrRUlha0VJYWlnQ0FEWUNBQXdDQ3lBQklBSkJLR3BCbklUQUFCQjRJUU1MSUFFZ0F4QytEU0VCSUFcXFxuQkJBRFlDQUNBQUlBRTJBZ1FMSUFKQk1Hb2tBQXVMQWdFSWZ5TUFRUkJySWdJa0FFRUFJUU1nQWtFSWFrRUFJQUZCQVhZaUJDQUFJQVJCXFxcbnFKakJBQkR1QmlBQ0tBSU1JUVVnQWlnQ0NDRUdJQUpCQUNBRUlBQWdBVUVEZEdvZ0JFRURkQ0lCYXlBRVFiaVl3UUFRN2dZZ0FTQUNLQVxcXG5JQWFrRjRhaUVCSUFJb0FnUWhCd0pBQWtBRFFDQUVJQU5xSWdCRkRRRWdCU0FEYWtVTkFnSkFJQUJCZjJvZ0IwOE5BQ0FHTFFBQUlRQWdcXFxuQmlBQkxRQUFPZ0FBSUFFZ0FEb0FBQ0FHUVFScUlnQW9BZ0FoQ0NBQUlBRkJCR29pQ1NnQ0FEWUNBQ0FKSUFnMkFnQWdBVUY0YWlFQklBXFxcbk5CZjJvaEF5QUdRUWhxSVFZTUFRc0xJQUJCZjJvZ0IwSFltTUVBRUlFRkFBc2dBa0VRYWlRQUR3c2dCU0FGUWNpWXdRQVFnUVVBQzZjQ1xcXG5BUUovSXdCQklHc2lBaVFBQWtBQ1FDQUFLQUlBSWdNdEFBQU5BQ0FCS0FJVVFZNjV6Z0JCQkNBQlFSaHFLQUlBS0FJTUVRa0FJUUFNQVFcXFxudEJBU0VBSUFJZ0EwRUJhallDRENBQ0lBRW9BaFJCaXJuT0FFRUVJQUZCR0dvb0FnQW9BZ3dSQ1FBNkFCZ2dBaUFCTmdJVUlBSkJBRG9BXFxcbkdTQUNRUUEyQWhBZ0FrRVFhaUFDUVF4cVFjQ2V6Z0FROUFFaEFTQUNMUUFZSVFNQ1FDQUJLQUlBSWdFTkFDQURRZjhCY1VFQVJ5RUFEQVxcXG5FTElBTkIvd0Z4RFFBZ0FpZ0NGQ0VEQWtBZ0FVRUJSdzBBSUFJdEFCbEIvd0Z4UlEwQUlBTXRBQnhCQkhFTkFFRUJJUUFnQXlnQ0ZFRzhcXFxubnM0QVFRRWdBMEVZYWlnQ0FDZ0NEQkVKQUEwQkN5QURLQUlVUVp1WnpnQkJBU0FEUVJocUtBSUFLQUlNRVFrQUlRQUxJQUpCSUdva0FDXFxcbkFBQzVJQ0FRVi9RUUFoQVVIYURpRUNRZG9PSVFNQ1FBTkFBa0FnQVNBQ1R5SUVSUTBBSUFFaEF3d0NDd0pBQWtCQmZ5QURRUUYySUFGcVxcXG5JZ05CQTNSQm9LUEJBR29vQWdBaUJTQUFSeUFGSUFCSkd5SUZRUUZIRFFBZ0F5RUNEQUVMSUFWQi93RnhRZjhCUncwQ0lBTkJBV29oQVFcXFxuc2dBaUFCYXlFRERBQUxDd0pBQWtBZ0F5QUVheUlCUWRrT1N3MEFJQUZCQTNRaUEwR2tvOEVBYWk0QkFDSUNRZi8vQVhFaEFRSkFBa0FnXFxcbkFrRi9UQTBBSUFBZ0EwR2dvOEVBYWk4QkFHc2dBV3BCLy84RGNTSUJRZk0rU1EwQklBRkI4ejVCektMQkFCQ0JCUUFMSUFGQjh6NVBEUVxcXG5JTElBRkJBblJCOEpqQ0FHb1BDeUFCUWRvT1FheWl3UUFRZ1FVQUN5QUJRZk0rUWJ5aXdRQVFnUVVBQzQ0Q0FnTi9BWDRqQUVIQUFHc2lcXFxuQkNRQUlBRkJFR29pQlNBQ0VQTUVJUWNnQkNBQ05nSThJQVFnQVRZQ0pDQUVJQVJCUEdvMkFpQWdCRUVJYWlBQklBY2dCRUVnYWtId244XFxcbkFBRVA0Q0FrQUNRQUpBSUFRb0FnaEZEUUFnQVNnQ0FDSUdEUUVMSUFSQklHcEJDR29nQWtFSWFpZ0NBRFlDQUNBRVFUUnFJQU5CQ0dvb1xcXG5BZ0EyQWdBZ0JDQUNLUUlBTndNZ0lBUWdBeWtDQURjQ0xDQUJJQWNnQkVFZ2FpQUZFTElFR2lBQVFRQTJBZ0FNQVFzZ0JrRUFJQVFvQWdcXFxueHJRUmhzYWtGb2FpSUJLUUlNSVFjZ0FTQURLUUlBTndJTUlBQWdCemNDQUNBQlFSUnFJZ0VvQWdBaEJTQUJJQU5CQ0dvb0FnQTJBZ0FnXFxcbkFFRUlhaUFGTmdJQUlBSVE0d3dMSUFSQndBQnFKQUFMckFJQ0JIOERmaU1BUVJCcklnQWtBQUpBQWtBQ1FBSkFRUUFvQXF5clR3MEFRUVxcXG5CQmZ6WUNyS3RQQWtCQkFDZ0NzS3RQSWdFTkFDQUFRUWhCRUJDaEJDQUFLQUlBSVFJQ1FBSkFJQUFvQWdRaUF3MEFJQUloQVF3QkMwRUFcXFxuTFFEeHBrOGFJQU1nQWhEM0N5RUJDeUFCUlEwRElBRkNnWUNBZ0JBM0FnQWdBVUVRYWtFQU5nSUFRUUFwQTlpblR5RUVBMEFnQkVJQmZDXFxcbklGVUEwRlFRQWdCVUVBS1FQWXAwOGlCaUFHSUFSUklnSWJOd1BZcDA4Z0JpRUVJQUpGRFFBTFFRQWdBVFlDc0t0UElBRWdCVGNEQ0FzZ1xcXG5BU0FCS0FJQUlnSkJBV28yQWdBZ0FrRi9TZzBCQUF0QjFPck5BRUVRSUFCQkNHcEI1T3JOQUVHSTdjMEFFTUlFQUF0QkFFRUFLQUtzcTBcXFxuOUJBV28yQXF5clR5QUFRUkJxSkFBZ0FROExJQUlnQXhDYURRQUxFSlVJQUF2Q0FnRUVmeU1BUVNCcklnSWtBQUpBQWtBQ1FBSkFBa0FDXFxcblFFRUFLQUxRcDA5Qi8vLy8vd2R4UlEwQUVNc05SUTBCQzBFQUtBTEFwMDhoQTBFQVFYODJBc0NuVHlBRERRUkJBQ2dDMEtkUFFmLy8vL1xcXG44SGNRMEJRUUFvQXN5blR5RUVRUUFnQVRZQ3pLZFBRUUFvQXNpblR5RURRUUFnQURZQ3lLZFBEQUlMSUFKQkZHcENBRGNDQUNBQ1FRRTJcXFxuQWd3Z0FrR283czBBTmdJSUlBSkIrT0ROQURZQ0VDQUNRUWhxUWN6dXpRQVFtQWdBQ3hETERTRUZRUUFvQXN5blR5RUVRUUFnQVRZQ3pLXFxcbmRQUVFBb0FzaW5UeUVEUVFBZ0FEWUN5S2RQSUFWRkRRRUxRUUFvQXRDblQwSC8vLy8vQjNGRkRRQVF5dzBOQUVFQVFRRTZBTVNuVHd0QlxcXG5BRUVBTmdMQXAwOENRQ0FEUlEwQUlBTWdCQ2dDQUJFQ0FDQUVRUVJxS0FJQUlnRkZEUUFnQXlBQklBUkJDR29vQWdBUXNnd0xJQUpCSUdcXFxub2tBQThMQUF1UUFnRUdmeU1BUVJCcklnTWtBQ0FBS0FJQUlRUUNRQU5BSUFSQkEzRWhCUUpBQWtBQ1FBTkFJQVVPQXdFQ0JRQUxDeUFCXFxcbkRRRUxJQU1nQlhJaEJnSkFBa0FEUUJENkNpRUhJQUFnQmlBQUtBSUFJZ2dnQ0NBRVJoczJBZ0FnQTBFQU9nQUlJQU1nQnpZQ0FDQURJQVxcXG5SQmZIRTJBZ1FnQ0NBRVJnMEJJQU1RMndzZ0NDRUVJQWhCQTNFZ0JVWU5BQXdDQ3dzQ1FBTkFJQU10QUFnTkFSQ1dDQXdBQ3dzZ0F4RGJcXFxuQ3dzZ0FDZ0NBQ0VFREFFTElBQWdCRUY4Y1VFQmNpQUFLQUlBSWdnZ0NDQUVSaHMyQWdBZ0NDQUVSeUVISUFnaEJDQUhEUUFMSUFOQkFEXFxcbllDQkNBRElBQTJBZ0FDUUNBQklBSW9BaEFSQXdCRkRRQWdBMEVDTmdJRUN5QURFS0lEQ3lBRFFSQnFKQUFMamdJQkFuOGpBRUhBQUdzaVxcXG5BeVFBSUFOQkVHb2dBQkNiQkNBQUtBSUFJUVFnQUVFQU5nSUFBa0FnQkVVTkFDQUFRUlJxSUFBb0FnUVFvQVlMQWtBZ0FVVU5BQ0FESUFcXFxuSTJBaVFnQXlBQk5nSWdJQU5CQURvQU1DQURJQUJCSEdvb0FnQTJBalFnQUNBRFFUQnFRY2lRd1FBUS9RWTJBZ1FnQUVFQk5nSUFJQUJCXFxcbkZHcEJQeERlQkNBRFFRaHFJQUFROVFjZ0F5QURLQUlJSUFNb0Fnd1E1QVZCL3dGeE9nQXJJQU1nQUNnQ0lEWUNMQ0FESUFOQklHbzJBalxcXG5nZ0F5QURRU3hxTmdJMElBTWdBMEVyYWpZQ01DQURJQUFnQTBFd2FoRFNBZ3NnQTBFd2FrRUlhaUFEUVJCcVFRaHFLQUlBTmdJQUlBTWdcXFxuQXlrREVEY0RNQ0FBSUFOQk1Hb1EwQVFnQTBIQUFHb2tBQXVVQWdFSGZ5TUFRUkJySWdJa0FBSkFBa0FnQVNnQ0JDSUREUUJCQUNFRURBXFxcbkVMQWtBQ1FDQUJLQUlJSWdVZ0FTZ0NBQ0lFTFFBQUlnWVFxZ2tOQUNBRFFYOXFJUWRCQUNFR0EwQUNRQ0FISUFaSERRQWdBVUVBTmdJRVxcXG5JQUZCdE5ITkFEWUNBQXdFQ3lBRUlBWnFJUWdnQmtFQmFpRUdJQVVnQ0VFQmFpMEFBQkNxQ1VVTkFBc2dBeUFHU1EwQklBRWdBeUFHYXpcXFxuWUNCQ0FCSUFRZ0JtbzJBZ0FnQmlFRERBSUxJQUVnQkVFQmFqWUNBQ0FCSUFOQmYybzJBZ1FnQWtFSWFpQUdRUU5zSWdZZ0JrRURha0hBXFxcbjBzMEFRWUFHUWJEU3pRQVFtd2NnQWlnQ0RDRURJQUlvQWdnaEJBd0JDMEcwMGMwQVFTTkJ3TmpOQUJDREJ3QUxJQUFnQXpZQ0JDQUFJQVxcXG5RMkFnQWdBa0VRYWlRQUMvMEJBUUYvSXdCQkVHc2lBaVFBSUFBb0FnQWhBQ0FDUVFBMkFnd0NRQUpBSUFGQmdBRkpEUUFDUUNBQlFZQVFcXFxuU1EwQUFrQWdBVUdBZ0FSSkRRQWdBaUFCUVQ5eFFZQUJjam9BRHlBQ0lBRkJCblpCUDNGQmdBRnlPZ0FPSUFJZ0FVRU1ka0UvY1VHQUFYXFxcbkk2QUEwZ0FpQUJRUkoyUVFkeFFmQUJjam9BREVFRUlRRU1Bd3NnQWlBQlFUOXhRWUFCY2pvQURpQUNJQUZCREhaQjRBRnlPZ0FNSUFJZ1xcXG5BVUVHZGtFL2NVR0FBWEk2QUExQkF5RUJEQUlMSUFJZ0FVRS9jVUdBQVhJNkFBMGdBaUFCUVFaMlFjQUJjam9BREVFQ0lRRU1BUXNnQWlcXFxuQUJPZ0FNUVFFaEFRc2dBQ0FDUVF4cUlBRVFlaUVCSUFKQkVHb2tBQ0FCQy8wQkFRZC9Ba0FDUUNBQktBSUFJZ0lnQVNnQ0JDSURSdzBBXFxcblFZQ0F4QUFoQXd3QkN5QUJJQU5CZjJvaUJEWUNCQUpBSUFRdEFBQWlCY0FpQmtGL1NnMEFJQUVnQTBGK2FpSUVOZ0lFQWtBQ1FDQUVMUVxcXG5BQUlnZkFJZ1ZCUUVnTkFDQUhRUjl4SVFVTUFRc2dBU0FEUVgxcUlnUTJBZ1FDUUFKQUlBUXRBQUFpQjhBaUNFRkFTQTBBSUFkQkQzRWhcXFxuQXd3QkN5QUJJQU5CZkdvaUJEWUNCQ0FFTFFBQVFRZHhRUVowSUFoQlAzRnlJUU1MSUFOQkJuUWdCVUUvY1hJaEJRdEJnSURFQUNFRElBXFxcblZCQm5RZ0JrRS9jWElpQlVHQWdNUUFSZzBCQ3lBQktBSUlJQUpySUFScUlRY2dCU0VEQ3lBQUlBTTJBZ1FnQUNBSE5nSUFDNW9DQVFGL1xcXG5Jd0JCRUdzaUJpUUFJQVlnQlRZQ0RDQUdJQVEyQWdnQ1FBSkFBa0FDUUNBR1FRaHFFTWdKSWdWQkkwY05BRUVBSVFNTUFRc0NRQ0FGUVRcXFxuOUdEUUFDUUNBRlFZQ0F4QUJIRFFCQkFDRUZJQUJCQURZQ0FFRUlJUUVNQkF0QjZJM0JBRUhEQUVHc2pzRUFFTjRKQUFzZ0FTZ0NDQ0VFXFxcbklBRkJQeERlQkNBR0lBRWdBaUFESUFZb0FnZ2dCaWdDREJEUkFTQUdLQUlBSWdWRkRRRWdCaWdDQkNFRElBWWdCVFlDQ0NBR0lBTTJBZ1xcXG54QkFTRURDeUFCS0FJSUlRVWdBVUVqRU40RUlBRWdCaWdDQ0NBR0tBSU1FT2NESUFCQkFUWUNDQ0FBSUFRMkFnUWdBQ0FETmdJQVFRd2hcXFxuQVF3QkN5QUFJQVEyQWdRZ0FFRUJOZ0lBUVFBaEJVRUlJUUVMSUFBZ0FXb2dCVFlDQUNBR1FSQnFKQUFMaGdJQkFuOGpBRUVnYXlJQkpBXFxcbkFnQVNBQUVMWUVBa0FDUUFKQUlBRXRBQUFOQUNBQkxRQUJEUUVnQVVFQ05nSVFJQUFnQVVFUWFoRE9DQ0VBREFJTElBRW9BZ1FoQUF3QlxcXG5Dd0pBQWtBZ0FTMEFBaUlDUWQwQVJnMEFJQUpCTEVZTkFTQUJRUlkyQWhBZ0FDQUJRUkJxRU00SUlRQU1BZ3NnQUNBQUtBSUlRUUZxTmdcXFxuSUlRUUFoQUF3QkN5QUFJQUFvQWdoQkFXbzJBZ2dnQVVFSWFpQUFFTFlFQWtBZ0FTMEFDQ0lDRFFBZ0FTMEFDVVVOQUNBQkxRQUtRZjhCXFxcbmNVSGRBRWNOQUNBQlFSVTJBaEFnQUNBQlFSQnFFTTRJSVFBTUFRc2dBVUVXTmdJUUlBQWdBVUVRYWhET0NDRUFJQUpGRFFBZ0FVRUlha1xcXG5FRWNoQ3ZDUXNnQVVFZ2FpUUFJQUFMb0FJQ0FYOEJmaU1BUVRCcklnTWtBQ0FESUFJNkFCUWdBeUFCTmdJUUlBTkJHR29nQTBFUWFoREVcXFxuQVFKQUFrQUNRQUpBSUFNcEF4Z2lCRUlDVVEwQUlBUlFSUTBDUVFBZ0EwRW9ha0hBZzhBQUVMZ0VJUUlNQVFzZ0F5Z0NJQ0VDQ3lBQVFZXFxcbkNVNjl3RE5nSUlJQUFnQWpZQ0FBd0JDeUFES1FNZ0lRUWdBMEVZYWlBRFFSQnFFTVVCQWtBQ1FBSkFJQU1vQWhnaUFrRUNSZzBBSUFJTlxcXG5Ba0VCSUFOQktHcEJ3SVBBQUJDNEJDRUNEQUVMSUFNb0Fod2hBZ3NnQUVHQWxPdmNBellDQ0NBQUlBSTJBZ0FNQVFzQ1FDQUVJQU1vQWhcXFxud2lBUkRPQ1NJQ0RRQWdBeUFFSUFFUWxRVWdBeWtEQUNFRUlBQWdBeWdDQ0RZQ0NDQUFJQVEzQXdBTUFRc2dBRUdBbE92Y0F6WUNDQ0FBXFxcbklBSTJBZ0FMSUFOQk1Hb2tBQXVNQWdFQ2Z5TUFRU0JySWdNa0FDQUJLQUlJSVFRZ0FVRUFOZ0lJSUFNZ0JDQUJRUXhxS0FJQUVLRUxJZ1xcXG5RMkFoUWdBMEVJYWlBQ0lBRW9BaEFRakFjZ0F5Z0NEQ0VDQWtBQ1FBSkFJQU1vQWdnTkFDQURJQUkyQWhnQ1FBSkFBa0FnQVNnQ0FFVU5cXFxuQUNBRElBUVEzd2NnQXlnQ0JDRUVJQU1vQWdCRkRRRWdBeUFFTmdJY1FhaWJ3QUJCTXhER0JpRUNJQU5CSEdvUWhBc2dBMEVZYWhDRUN3XFxcbndFQ3lBRElBRkJCR29nQTBFVWFpQURRUmhxRU40TE5nSWNJQU5CSEdvUWhBc2dBMEVZYWhDRUN5QURRUlJxRUlRTERBRUxJQUZCQkdvZ1xcXG5CQ0FDRUxZTUMwRUFJUUVNQWdzZ0EwRVVhaENFQ3d0QkFTRUJDeUFBSUFJMkFnUWdBQ0FCTmdJQUlBTkJJR29rQUF1Q0FnSUJmd0YrSXdcXFxuQkJNR3NpQkNRQUlBUkJJR29nQWlBREVKUU5JQVJCQ0dvZ0JFRWdhaENLQ2lBRUtBSUlJQVFvQWd3UUJDRURJQVFReHdrZ0JFRVlhaUFFXFxcbktBSUFJZ0lnQkNnQ0JDQURJQUliRUo4SEFrQUNRQUpBQWtBQ1FDQUVMUUFZUVFSSERRQWdCQ2dDSENFRERBRUxJQVFwQXhnaUJVTC9BWVxcXG5OQ0JGSU5BU0FGUWlDSXB5RURDeUFFSUFNMkFoUWdCRUVnYWhETUN5QURFQVZCQVVZTkFTQURFQVpCQVVZTkFTQUVJQU0yQWlBZ0FFRUVcXFxuYWlBRVFTQnFFTTBHSUFCQkFEWUNBQ0FFUVNCcUVJUUxEQUlMSUFCQkFUWUNBQ0FBSUFVM0FnUWdCRUVnYWhETUN3d0JDeUFBUWdBM0FnXFxcbkFnQkVFVWFoQ0VDd3NnQkVFd2FpUUFDNFlDQVFKL0l3QkJJR3NpQVNRQUlBRWdBQkM2QkFKQUFrQUNRQ0FCTFFBQURRQWdBUzBBQVEwQlxcXG5JQUZCQWpZQ0VDQUFJQUZCRUdvUTNRZ2hBQXdDQ3lBQktBSUVJUUFNQVFzQ1FBSkFJQUV0QUFJaUFrSGRBRVlOQUNBQ1FTeEdEUUVnQVVcXFxuRVdOZ0lRSUFBZ0FVRVFhaERkQ0NFQURBSUxJQUFnQUNnQ0NFRUJhallDQ0VFQUlRQU1BUXNnQUNBQUtBSUlRUUZxTmdJSUlBRkJDR29nXFxcbkFCQzZCQUpBSUFFdEFBZ2lBZzBBSUFFdEFBbEZEUUFnQVMwQUNrSC9BWEZCM1FCSERRQWdBVUVWTmdJUUlBQWdBVUVRYWhEZENDRUFEQVxcXG5FTElBRkJGallDRUNBQUlBRkJFR29RM1FnaEFDQUNSUTBBSUFGQkNHcEJCSElRL2dzTElBRkJJR29rQUNBQUMvMEJBUVIvSUFBb0FnQWhcXFxuQVFKQUFrQURRQ0FCSWdKQkJFa05BU0FDUVFKeERRRWdBQ0FDUVFKeUlBQW9BZ0FpQVNBQklBSkdHellDQUNBQklBSkhEUUFMQTBBZ0FrXFxcbkY4Y1NJRElRRUNRQU5BSUFFb0FnQWlCQTBCSUFFb0FnZ2lCQ0FCTmdJRUlBUWhBUXdBQ3dzZ0F5QUVOZ0lBQWtBQ1FBSkFJQUpCQVhFTlxcXG5BQ0FFS0FJRUlnRkZEUUVnQXlBQk5nSUFJQUFnQUNnQ0FFRjljVFlDQUF3RkN5QUFJQUpCZlhFZ0FDZ0NBQ0lCSUFFZ0FrWWlCQnMyQWdcXFxuQWdCQTBEREFFTEEwQWdBQ0FDUVFGeElBQW9BZ0FpQVNBQklBSkdJZ1FiTmdJQUlBUU5CQ0FCSVFJZ0FVRUVTUTBBQ3dzZ0FTRUNEQUFMXFxcbkN3OExJQUVRdXd3QUM0b0NBUU4vSXdCQjRBQnJJZ1FrQUVFQUlRVWdCRUVJYWlBRFFRQVExUVFnQkVFUWFrRUlhaUlHUVFBMkFnQWdCQ1xcXG5BRUtRTUlOd01RSUFSQk1HcENBRGNEQUNBRVFUeHFJQUZCQkdvdEFBQTZBQUFnQkVLQWdJQ0FFRGNES0NBRVFnRTNBeUFnQkNBQktBQUFcXFxuTmdJNElBUkJ3QUJxSUFSQklHb2dBaUFESUFSQkVHb1E3Z0VnQkVIUUFHcEJDR29nQmlnQ0FEWUNBQ0FFSUFRcEF4QTNBMUFDUUFKQUlBXFxcblF0QUVCQkFrY05BQ0FBSUFRcEF4QTNBZ1FnQUVFTWFpQUdLQUlBTmdJQURBRUxJQUFnQkNrRFFEY0FBU0FBUVFscUlBUkJ3QUJxUVFocVxcXG5LQUlBTmdBQUlBUkIwQUJxRVBZSFFRRWhCUXNnQUNBRk9nQUFJQVJCSUdvUWtRd2dCRUhnQUdva0FBdjJBUUVCZnlNQVFSQnJJZ0lrQUNcXFxuQUNRUUEyQWd3Q1FBSkFJQUZCZ0FGSkRRQUNRQ0FCUVlBUVNRMEFBa0FnQVVHQWdBUkpEUUFnQWlBQlFUOXhRWUFCY2pvQUR5QUNJQUZCXFxcbkJuWkJQM0ZCZ0FGeU9nQU9JQUlnQVVFTWRrRS9jVUdBQVhJNkFBMGdBaUFCUVJKMlFRZHhRZkFCY2pvQURFRUVJUUVNQXdzZ0FpQUJRVFxcXG45eFFZQUJjam9BRGlBQ0lBRkJESFpCNEFGeU9nQU1JQUlnQVVFR2RrRS9jVUdBQVhJNkFBMUJBeUVCREFJTElBSWdBVUUvY1VHQUFYSTZcXFxuQUEwZ0FpQUJRUVoyUWNBQmNqb0FERUVDSVFFTUFRc2dBaUFCT2dBTVFRRWhBUXNnQUNBQ1FReHFJQUVRZWlFQklBSkJFR29rQUNBQkM1XFxcblVDQVFGL0FrQWdBRUVnVHcwQVFRQVBDMEVCSVFFQ1FBSkFJQUJCL3dCSkRRQWdBRUdBZ0FSSkRRRUNRQUpBSUFCQmdJQUlTUTBBQWtBZ1xcXG5BRUhRdUhOcVFkQzZLMDhOQUVFQUR3c0NRQ0FBUWJYWmMycEJCVThOQUVFQUR3c0NRQ0FBUWVLTGRHcEI0Z3RQRFFCQkFBOExBa0FnQUVcXFxuR2ZxSFJxUVo4WVR3MEFRUUFQQ3dKQUlBQkIzdUowYWtFT1R3MEFRUUFQQ3dKQUlBQkJmbkZCbnZBS1J3MEFRUUFQQ3lBQVFXQnhRZUROXFxcbkNrY05BVUVBRHdzZ0FFR3lzYzRBUVN4QmlyTE9BRUhFQVVIT3M4NEFRY0lERU0wQkR3dEJBQ0VCSUFCQnhwRjFha0VHU1EwQUlBQkJnSVxcXG5DOGYycEI4SU4wU1NFQkN5QUJEd3NnQUVHVXJNNEFRU2hCNUt6T0FFR2ZBa0dEcjg0QVFhOENFTTBCQy9vQkFnaC9BWDRqQUVFd2F5SUZcXFxuSkFBZ0FVRVVhaUVHSUFWQklHcEJCSEloQnlBQktBSVFJUWdnQVNnQ0NDRUpJQUVvQWd3aENnSkFBMEFDUUNBSklBcEhEUUFnQlVFQU5nXFxcbklBREFJTElBRWdDVUVNYWlJTE5nSUlJQVZCQ0dvZ0NVRUlhaUlNS0FJQU5nSUFJQVVnQ1NrQ0FDSU5Od01BSUEyblJRMEJJQWNnQ1NrQ1xcXG5BRGNDQUNBSFFRaHFJQXdvQWdBMkFnQWdCU0FJTmdJZ0lBVkJFR29nQmlBRlFTQnFFRWdnQTBFSWFpQUZRUkJxUVFocUtBSUFOZ0lBSUFcXFxuTWdCU2tERURjQ0FDQUJJQWhCQVdvaUNEWUNFQ0FEUVF4cUlRTWdDeUVKREFBTEN5QUZFTXdMSUFBZ0F6WUNCQ0FBSUFJMkFnQWdCVUV3XFxcbmFpUUFDL3dCQWdKL0FYNGdBQ0FBS0FJNElBSnFOZ0k0QWtBQ1FBSkFBa0FDUUNBQUtBSThJZ01OQUVFQUlRUU1BUXNnQUNBQUtRTXdJQVxcXG5GQkFDQUNRUWdnQTJzaUJDQUNJQVJKR3hDeEJDQURRUU4wUVRoeHJZYUVJZ1UzQXpBZ0JDQUNTdzBCSUFBZ0FDa0RHQ0FGaFRjREdDQUFcXFxuRUlvRklBQkJBRFlDUENBQUlBQXBBd0FnQUNrRE1JVTNBd0FMSUFJZ0JHc2lBMEY0Y1NFQ0RBRUxJQU1nQW1vaEFnd0JDd0pBQTBBZ0JDXFxcbkFDVHcwQklBQWdBQ2tER0NBQklBUnFLUUFBSWdXRk53TVlJQUFRaWdVZ0FDQUZJQUFwQXdDRk53TUFJQVJCQ0dvaEJBd0FDd3NnQUNBQlxcXG5JQVFnQTBFSGNTSUNFTEVFTndNd0N5QUFJQUkyQWp3TC9BRUNBbjhCZmlBQUlBQW9BamdnQW1vMkFqZ0NRQUpBQWtBQ1FBSkFJQUFvQWpcXFxud2lBdzBBUVFBaEJBd0JDeUFBSUFBcEF6QWdBVUVBSUFKQkNDQURheUlFSUFJZ0JFa2JFTFFFSUFOQkEzUkJPSEd0aG9RaUJUY0RNQ0FFXFxcbklBSkxEUUVnQUNBQUtRTVlJQVdGTndNWUlBQVFqd1VnQUVFQU5nSThJQUFnQUNrREFDQUFLUU13aFRjREFBc2dBaUFFYXlJRFFYaHhJUVxcXG5JTUFRc2dBeUFDYWlFQ0RBRUxBa0FEUUNBRUlBSlBEUUVnQUNBQUtRTVlJQUVnQkdvcEFBQWlCWVUzQXhnZ0FCQ1BCU0FBSUFVZ0FDa0RcXFxuQUlVM0F3QWdCRUVJYWlFRURBQUxDeUFBSUFFZ0JDQURRUWR4SWdJUXRBUTNBekFMSUFBZ0FqWUNQQXYrQVFFR2Z5TUFRVEJySWdNa0FFXFxcbkVBSVFRZ0EwRUFOZ0lvSUFNZ0FUWUNJQ0FESUFFMkFoZ2dBeUFDTmdJY0lBTWdBU0FDYWpZQ0pDQURRU0JxSVFJQ1FBTkFJQU1vQWlBaFxcXG5CU0FES0FJa0lRWWdBMEVRYWlBQ0VOMEVBa0FnQXlnQ0ZDSUhRWUNBeEFCSERRQkJBQ0VJREFJTElBZEJJVWtOQUFzZ0JpQUZheUFES0FcXFxuSVFJZ1JxSUFNb0FpQnFJQU1vQWlScklRZ0xBa0FEUUNBREtBSWdJUVVnQXlnQ0pDRUdJQU5CQ0dvZ0FoRFNCU0FES0FJTUlnZEJnSURFXFxcbkFFWU5BU0FIUVNGSkRRQUxJQVlnQldzZ0F5Z0NDR29nQXlnQ0lHb2dBeWdDSkdzaENBc2dBQ0FJSUFSck5nSUVJQUFnQVNBRWFqWUNBQ1xcXG5BRFFUQnFKQUFMK1FFQkFuOGpBRUVRYXlJRUpBQWdCQ0FETmdJRUlBUWdBallDQUVFQUlRVUNRQUpBSUFRUWpBbEZEUUFNQVFzZ0JDQURcXFxuTmdJTUlBUWdBallDQ0NBRVFRaHFFTDBLUlEwQUEwQUNRQUpBQWtBQ1FBSkFJQVFReUFraUEwR0FnTVFBUmcwQUlBTkJ2MzlxSVFJZ0EwXFxcbkdmZjJwQkdra05CQ0FDUVJwSkRRUWdBMEZRYWtFS1R3MEJEQVFMSUFFdEFDQkJBVVlOQVF3Q0N5QURRVk5xUVFKSkRRSWdBMEVyUmcwQ1xcXG5JQU5CT2tjTkFRc2dCQ2dDQkNFRElBUW9BZ0FoQlF3REMwRUFJUVVnQVVFQU5nSUlEQUlMSUFFZ0EwRWdjeUFESUFKQkdra2JFTjRFREFcXFxuQUxDeUFBSUFNMkFnUWdBQ0FGTmdJQUlBUkJFR29rQUF1R0FnRUJmeU1BUVlBQmF5SUNKQUFnQUNnQ0FDRUFJQUpCQURZQ1VDQUNRZ0UzXFxcbkEwZ2dBa0hZQUdvZ0FrSElBR3BCckxEQUFCRExDQUpBSUFBZ0FrSFlBR29ROFFGRkRRQkJ4TERBQUVFM0lBSkJJR3BCL0xEQUFFSFlzY1xcXG5BQUVNSUVBQXNnQWtFNGFrRUlhaUFDUWNnQWFrRUlhaWdDQURZQ0FDQUNRVFJxUVFnMkFnQWdBa0VnYWtFTWFrRUlOZ0lBSUFKQkNHcEJcXFxuREdwQ0F6Y0NBQ0FDSUFJcEEwZzNBemdnQWtHcUFUWUNKQ0FDUVFRMkFnd2dBa0d3ME1BQU5nSUlJQUlnQUVFUWFqWUNNQ0FDSUFCQkRHXFxcbm8yQWlnZ0FpQUNRVGhxTmdJZ0lBSWdBa0VnYWpZQ0VDQUJJQUpCQ0dvUXJRVWhBQ0FDUVRocUVPRUtJQUpCZ0FGcUpBQWdBQXVEQWdJQ1xcXG5md0orSXdCQk1Hc2lCQ1FBSUFGQkNHb29BZ0FoQlFKQUFrQUNRQ0FCS1FNQUlnWWdBbFFOQUNBR0lBSjlJUWNDUUNBRklBTlBEUUFnQjFcXFxuQU5BU0FGUVlDVTY5d0RhaUVGSUFkQ2Yzd2hCd3NnQnlBRklBTnJJZ0ZCZ0pUcjNBTnVJZ1d0ZkNJQ0lBZFVEUUlnQUNBQ053TUlJQUJCXFxcbkVHb2dBU0FGUVlDVTY5d0RiR3MyQWdCQ0FDRUNEQUVMSUFSQkNHb2dBaUFESUFZZ0JSQzFBeUFFS1FNSUlRSWdBRUVRYWlBRUtBSVFOZ1xcXG5JQUlBQWdBamNEQ0VJQklRSUxJQUFnQWpjREFDQUVRVEJxSkFBUEN5QUVRU1JxUWdBM0FnQWdCRUVCTmdJY0lBUkJsT0hOQURZQ0dDQUVcXFxuUWZqZ3pRQTJBaUFnQkVFWWFrSGs0YzBBRUpnSUFBdURBZ0lFZndGK0l3QkJNR3NpQWlRQUlBRkJCR29oQXdKQUlBRW9BZ1FOQUNBQktBXFxcbklBSVFRZ0FrRWdha0VJYWlJRlFRQTJBZ0FnQWtJQk53TWdJQUlnQWtFZ2FqWUNMQ0FDUVN4cVFlRGd6UUFnQkJCdEdpQUNRUkJxUVFocVxcXG5JQVVvQWdBaUJEWUNBQ0FDSUFJcEF5QWlCamNERUNBRFFRaHFJQVEyQWdBZ0F5QUdOd0lBQ3lBQ1FRaHFJZ1FnQTBFSWFpZ0NBRFlDQUNcXFxuQUJRUXhxUVFBMkFnQWdBeWtDQUNFR0lBRkNBVGNDQkVFQUxRRHhwazhhSUFJZ0JqY0RBQUpBUVF4QkJCRDNDeUlCRFFCQkJFRU1FSm9OXFxcbkFBc2dBU0FDS1FNQU53SUFJQUZCQ0dvZ0JDZ0NBRFlDQUNBQVFmenV6UUEyQWdRZ0FDQUJOZ0lBSUFKQk1Hb2tBQXVCQWdJQ2Z3SitJd1xcXG5CQkVHc2lCQ1FBQWtBQ1FBSkFBa0FDUUFKQUlBRW9BZ2dpQlNBQktBSUVUdzBBSUFFb0FnQWdCV290QUFBaUJVRXVSZzBDSUFWQnhRQkdcXFxuRFFFZ0JVSGxBRVlOQVF0Q0FTRUdBa0FnQWtVTkFDQURJUWNNQkF0Q0FDRUdBa0JDQUNBRGZTSUhRbjlWRFFCQ0FpRUdEQVFMSUFPNnZVXFxcbktBZ0lDQWdJQ0FnSUIvaFNFSERBTUxJQVFnQVNBQ0lBTkJBQkNnQVNBRUtBSUFSUTBCSUFBZ0JDZ0NCRFlDQ0NBQVFnTTNBd0FNQXdzZ1xcXG5CQ0FCSUFJZ0EwRUFFT2tCSUFRb0FnQkZEUUFnQUNBRUtBSUVOZ0lJSUFCQ0F6Y0RBQXdDQ3lBRUtRTUlJUWRDQUNFR0N5QUFJQWMzQXdcXFxuZ2dBQ0FHTndNQUN5QUVRUkJxSkFBTGdRSUNBbjhDZmlNQVFSQnJJZ1FrQUFKQUFrQUNRQUpBQWtBQ1FDQUJLQUlJSWdVZ0FTZ0NCRThOXFxcbkFDQUJLQUlBSUFWcUxRQUFJZ1ZCTGtZTkFpQUZRY1VBUmcwQklBVkI1UUJHRFFFTFFnRWhCZ0pBSUFKRkRRQWdBeUVIREFRTFFnQWhCZ1xcXG5KQVFnQWdBMzBpQjBKL1ZRMEFRZ0loQmd3RUN5QUR1cjFDZ0lDQWdJQ0FnSUNBZjRVaEJ3d0RDeUFFSUFFZ0FpQURRUUFRb3dFZ0JDZ0NcXFxuQUVVTkFTQUFJQVFvQWdRMkFnZ2dBRUlETndNQURBTUxJQVFnQVNBQ0lBTkJBQkRxQVNBRUtBSUFSUTBBSUFBZ0JDZ0NCRFlDQ0NBQVFnXFxcbk0zQXdBTUFnc2dCQ2tEQ0NFSFFnQWhCZ3NnQUNBSE53TUlJQUFnQmpjREFBc2dCRUVRYWlRQUMrNEJBUWgvSXdCQkVHc2lBaVFBQWtBQ1xcXG5RQUpBQWtBZ0FTZ0NDQ0lEUVFScUlBRW9BZ1FpQkVzTkFFRUFJUVZCQUNBRUlBTnJJZ1lnQmlBRVN4c2hCeUFCS0FJQUlBTnFJUWhCQUNcXFxuRUdEQUVMSUFFZ0JEWUNDQ0FDUVFRMkFnQU1BUXNDUUFOQUFrQWdCVUVFUncwQUlBQkJBRHNCQUNBQUlBWTdBUUlNQkFzZ0J5QUZSZzBCXFxcbklBRWdBeUFGYWtFQmFqWUNDQUpBSUFnZ0JXb3RBQUJCM05mQUFHb3RBQUFpQ1VIL0FVWU5BQ0FGUVFGcUlRVWdCa0VFZENBSmFpRUdEQVxcXG5FTEN5QUNRUXcyQWdBTUFRc2dBeUFGYWlBRVFielZ3QUFRZ1FVQUN5QUFJQUVnQWhETEJ3c2dBa0VRYWlRQUMrMEJBUVIvQWtBZ0FVR0FcXFxuQVVrTkFFRUFJUUpCL3dvaEEwSC9DaUVFQWtBRFFBSkFBa0JCZnlBRFFRRjJJQUpxSWdOQkEzUkI0TTNPQUdvb0FnQWlCU0FCUnlBRklBXFxcbkZKR3lJRlFRRkhEUUFnQXlFRURBRUxJQVZCL3dGeFFmOEJSdzBDSUFOQkFXb2hBZ3NnQkNBQ2F5RURJQVFnQWtzTkFBc2dBRUlBTndJRVxcXG5JQUFnQVRZQ0FBOExJQUJDaHdaQ0FDQURRUU4wUWVUTnpnQnFLQUlBSWdKQmdJREVBRVlnQWtHQXNBTnpRWUNBdkg5cVFZQ1F2SDlKY2lcXFxuSUVHemNDQkNBQVFla0FJQUlnQkJzMkFnQVBDeUFBUWdBM0FnUWdBQ0FCUWI5L2FrSC9BWEZCR2tsQkJYUWdBWEkyQWdBTDZRRUJCSDhqXFxcbkFFSGdBR3NpQWlRQUlBSkJHR29nQVJCekFrQUNRQ0FDS0FJWURRQWdBRUVBTmdJSUlBQkNCRGNDQUNBQlFTaHFFTTBMREFFTElBSkJLR1xcXG5vZ0FSQ1FCQ0FDSUFJb0FpaEJBV29pQTBGL0lBTWJJZ05CQkNBRFFRUkxHMEVBRVA4RElBSkJHR3BCQ0dvb0FnQWhCQ0FDS0FJRUlRVWdcXFxuQWlnQ0FDSURJQUlwQXhnM0FnQWdBMEVJYWlBRU5nSUFJQUpCQ0dwQkNHb2lCRUVCTmdJQUlBSWdCVFlDRENBQ0lBTTJBZ2dnQWtFb2FpXFxcbkFCUVRnUXBBMGFJQUpCQ0dvZ0FrRW9haERWQXlBQVFRaHFJQVFvQWdBMkFnQWdBQ0FDS1FNSU53SUFDeUFDUWVBQWFpUUFDK2tCQVFWL1xcXG5Jd0JCSUdzaUFTUUFJQUFnQUNnQ0NDSUNRUUZxSWdNMkFnZ0NRQ0FESUFBb0FnUlBEUUFDUUNBQUtBSUFJQU5xTFFBQVFWVnFEZ01BQVFcXFxuQUJDeUFBSUFKQkFtbzJBZ2dMSUFGQkNHb2dBQkNaQmdKQUFrQWdBUzBBQ0EwQUFrQWdBUzBBQ1VGUWFrSC9BWEZCQ2trTkFDQUJRUTAyXFxcbkFoQWdBQ0FCUVJCcUVNOElJUUlNQWdzZ0FDZ0NDQ0lESUFBb0FnUWlBaUFESUFKTEd5RUVJQUFvQWdBaEJRTkFRUUFoQWlBRUlBTkdEUVxcXG5JZ0JTQURhaTBBQUVGUWFrSC9BWEZCQ1VzTkFpQUFJQU5CQVdvaUF6WUNDQXdBQ3dzZ0FTZ0NEQ0VDQ3lBQlFTQnFKQUFnQWd2ekFRSUZcXFxuZndKK0l3QkJJR3NpQXlRQUlBTWdBallDRUNBQlFobUlRdjhBZzBLQmdvU0lrS0RBZ0FGK0lRZ2dBeUFBTmdJVUlBQW9BZ1FpQkNBQnAzXFxcbkVoQWlBQUtBSUFJUVZCQUNFR0EwQWdBeUFGSUFKcUtRQUFJZ0VnQ0lVaUNVSi9oU0FKUXYvOSsvZnYzNy8vZm55RFFvQ0Jnb1NJa0tEQVxcXG5nSCtETndNWUFrQURRQ0FEUVFocUlBTkJHR29RaEFjQ1FDQURLQUlJSWdBTkFDQUJJQUZDQVlhRFFvQ0Jnb1NJa0tEQWdIK0RVRVVOQWlcXFxuQUNJQVpCQ0dvaUJtb2dCSEVoQWd3REN5QURRUkJxSUFNb0Fnd2dBbW9nQkhFaUJ4RE5Da1VOQUFzTEN5QURRU0JxSkFBZ0JTQUhRUUowXFxcbmEwRUFJQUFiQytnQkFRSi9Jd0JCSUdzaUFpUUFBa0FDUUNBQlJRMEFJQUlnQURZQ0NDQUNJQUFnQVdvMkFneEJBQ0VBQTBBZ0FDRURRUVxcXG5BaEFDQUNRUWhxRUlVRElnRkJMa1lOQUFKQUlBRkJnSURFQUVjTkFFRUJJUUVNQXdzQ1FDQUREUUFnQVVFdFJnMENDMEVGSVFBQ1FDQURcXFxuUVFWUERRQWdBa0t0Z0lDQTBBVTNBaGdnQWtMNGdJQ0E0QTAzQWhBQ1FDQURRUVJHRFFBZ0FTQUNRUkJxSUFOQkFuUnFLQUlBUncwQklBXFxcbk5CQVdvaUFFRUVSZzBEREFFTFFRUkJCRUhjb3NFQUVJRUZBQXNnQVVHRmYycEJaVXNOQUNBQlFVWnFRWFpQRFFBTEMwRUFJUUVMSUFKQlxcXG5JR29rQUNBQkMvQUJBUU4vSXdCQjBBQnJJZ01rQUNBQ0tBSUlJQUlvQWdRaUJFRU1iR29oQlNBQ0tBSUFJUUlDUUFOQUlBQWdBVVlOQVNcXFxuQURJQUEyQWd3Z0EwRUROZ0lzSUFOQkFUWUNKQ0FEUVFFMkFoUWdBMEhnZ3NBQU5nSVFJQU5CQVRZQ0hDQURJQU5CREdvMkFpZ2dBMEVEXFxcbk9nQk1JQU5DSURjRFFDQURRb0NBZ0lBZ053TTRJQU5CQWpZQ01DQURRUWcyQWtnZ0F5QURRVEJxTmdJZ0lBTWdBMEVvYWpZQ0dDQURJQVxcXG5OQkVHb1Fqd1FnQlVFSWFpQURRUWhxS0FJQU5nSUFJQVVnQXlrREFEY0NBQ0FGUVF4cUlRVWdCRUVCYWlFRUlBQkJBV29oQUF3QUN3c2dcXFxuQWlBRU5nSUFJQU5CMEFCcUpBQUwvQUVDQW44Q2ZDTUFRUkJySWdVa0FDQUR1aUVIQWtBQ1FBSkFBa0FDUUFOQUlBUWdCRUVmZFNJR2N5XFxcbkFHYXlJR1FiVUNTUTBCSUFkRUFBQUFBQUFBQUFCaERRUWdCRUYvU2cwQ0lBUkJ0QUpxSVFRZ0IwU2d5T3VGODh6aGY2TWhCd3dBQ3dzZ1xcXG5Ca0VEZEVHNHQ4QUFhaXNEQUNFSUFrQWdCRUYvU2cwQUlBY2dDS01oQnd3REN3SkFJQWNnQ0tJaUIwUUFBQUFBQUFEd2YyRU5BQ0FIUkFcXFxuQUFBQUFBQVBEL1lnMERDeUFGUVE0MkFnQWdBQ0FCSUFVUXp3ZzJBZ1FNQVFzZ0JVRU9OZ0lBSUFBZ0FTQUZFTThJTmdJRUMwRUJJUVFNXFxcbkFRc2dBQ0FISUFlYUlBSWJPUU1JUVFBaEJBc2dBQ0FFTmdJQUlBVkJFR29rQUF2akFRRUVmeU1BUVNCcklnUWtBQUpBSUFCQkdHb29BZ1xcXG5BaUJTQUFRUlJxS0FJQUlnWkhEUUFnQUVFQkVLUUZJQUFvQWhRaEJpQUFLQUlZSVFVTElBUkJDR3BCQ0dvaUJ5QUNRUWhxS0FJQU5nSUFcXFxuSUFSQkNHcEJGR29nQTBFSWFpZ0NBRFlDQUNBRUlBSXBBZ0EzQXdnZ0JDQURLUUlBTndJVUFrQWdCU0FHUncwQUlBQkJFR29nQmhEMkNDXFxcbkFBS0FJWUlRVUxJQUFvQWhBZ0JVRWNiR29pQlNBRUtRTUlOd0lBSUFVZ0FUWUNHQ0FGUVJCcUlBUkJDR3BCRUdvcEF3QTNBZ0FnQlVFSVxcXG5haUFIS1FNQU53SUFJQUFnQUNnQ0dFRUJhallDR0NBRVFTQnFKQUFML0FFQ0FuOENmQ01BUVJCcklnVWtBQ0FEdWlFSEFrQUNRQUpBQWtcXFxuQUNRQU5BSUFRZ0JFRWZkU0lHY3lBR2F5SUdRYlVDU1EwQklBZEVBQUFBQUFBQUFBQmhEUVFnQkVGL1NnMENJQVJCdEFKcUlRUWdCMFNnXFxcbnlPdUY4OHpoZjZNaEJ3d0FDd3NnQmtFRGRFRzR0OEFBYWlzREFDRUlBa0FnQkVGL1NnMEFJQWNnQ0tNaEJ3d0RDd0pBSUFjZ0NLSWlCMFxcXG5RQUFBQUFBQUR3ZjJFTkFDQUhSQUFBQUFBQUFQRC9ZZzBEQ3lBRlFRNDJBZ0FnQUNBQklBVVEzd2cyQWdRTUFRc2dCVUVPTmdJQUlBQWdcXFxuQVNBRkVOOElOZ0lFQzBFQklRUU1BUXNnQUNBSElBZWFJQUliT1FNSVFRQWhCQXNnQUNBRU5nSUFJQVZCRUdva0FBdmRBUUlFZndGK0l3XFxcbkJCNEFCcklnTWtBQ0FEUVJocVFReHFJUVFnQTBFTWFpRUZBa0FEUUNBQVJRMEJJQUFnQVVZTkFTQURJQUFRbndVZ0JTQUFRUXhxRUo4RlxcXG5JQU5CR0dwQkVHb2dBMEVRYWlrREFEY0RBQ0FEUVJocVFRaHFJQU5CQ0dvaUJpa0RBRGNEQUNBRElBTXBBd0FpQnpjREdDQURRVEJxUVFcXFxuaHFJQVlvQWdBMkFnQWdBMEhBQUdwQkNHb2dCRUVJYWlnQ0FEWUNBQ0FESUFjM0F6QWdBeUFFS1FJQU53TkFJQU5CMEFCcUlBSWdBMEV3XFxcbmFpQURRY0FBYWhDa0FpQUFRUnhxSVFBZ0EwSFFBR29RekFzTUFBc0xJQU5CNEFCcUpBQUwzQUVBQWtBQ1FDQUJRWUFCU1EwQUFrQWdBVVxcXG5HQUVFa05BQUpBSUFGQmdJQUVTUTBBSUFJZ0FVRS9jVUdBQVhJNkFBTWdBaUFCUVFaMlFUOXhRWUFCY2pvQUFpQUNJQUZCREhaQlAzRkJcXFxuZ0FGeU9nQUJJQUlnQVVFU2RrRUhjVUh3QVhJNkFBQkJCQ0VCREFNTElBSWdBVUUvY1VHQUFYSTZBQUlnQWlBQlFReDJRZUFCY2pvQUFDXFxcbkFDSUFGQkJuWkJQM0ZCZ0FGeU9nQUJRUU1oQVF3Q0N5QUNJQUZCUDNGQmdBRnlPZ0FCSUFJZ0FVRUdka0hBQVhJNkFBQkJBaUVCREFFTFxcXG5JQUlnQVRvQUFFRUJJUUVMSUFBZ0FUWUNCQ0FBSUFJMkFnQUwzQUVBQWtBQ1FDQUJRWUFCU1EwQUFrQWdBVUdBRUVrTkFBSkFJQUZCZ0lcXFxuQUVTUTBBSUFJZ0FVRS9jVUdBQVhJNkFBTWdBaUFCUVFaMlFUOXhRWUFCY2pvQUFpQUNJQUZCREhaQlAzRkJnQUZ5T2dBQklBSWdBVUVTXFxcbmRrRUhjVUh3QVhJNkFBQkJCQ0VCREFNTElBSWdBVUUvY1VHQUFYSTZBQUlnQWlBQlFReDJRZUFCY2pvQUFDQUNJQUZCQm5aQlAzRkJnQVxcXG5GeU9nQUJRUU1oQVF3Q0N5QUNJQUZCUDNGQmdBRnlPZ0FCSUFJZ0FVRUdka0hBQVhJNkFBQkJBaUVCREFFTElBSWdBVG9BQUVFQklRRUxcXFxuSUFBZ0FUWUNCQ0FBSUFJMkFnQUw2Z0VCQW44akFFRVFheUlGSkFBQ1FBSkFBa0FnQVVVTkFBSkFBa0FDUUNBQ1FYOU1EUUFnQXlnQ0JBXFxcbjBCSUFVZ0FTQUNFT29ISUFVb0FnUWhCaUFGS0FJQUlRTU1BZ3NnQUVFQU5nSUVEQU1MQWtBZ0EwRUlhaWdDQUNJR0RRQWdCVUVJYWlBQlxcXG5JQUpCQUJDSUNDQUZLQUlNSVFZZ0JTZ0NDQ0VEREFFTElBTW9BZ0FnQmlBQklBSVFzQXNoQXlBQ0lRWUxBa0FnQTBVTkFDQUFJQU0yQWdcXFxuUWdBRUVJYWlBR05nSUFRUUFoQWd3REN5QUFJQUUyQWdRZ0FFRUlhaUFDTmdJQURBRUxJQUJCQURZQ0JDQUFRUWhxSUFJMkFnQUxRUUVoXFxcbkFnc2dBQ0FDTmdJQUlBVkJFR29rQUF2cUFRRUNmeU1BUVJCcklnVWtBQUpBQWtBQ1FDQUJSUTBBQWtBQ1FBSkFJQUpCZjB3TkFDQURLQVxcXG5JRURRRWdCU0FCSUFJUTdRY2dCU2dDQkNFR0lBVW9BZ0FoQXd3Q0N5QUFRUUEyQWdRTUF3c0NRQ0FEUVFocUtBSUFJZ1lOQUNBRlFRaHFcXFxuSUFFZ0FrRUFFSWtJSUFVb0Fnd2hCaUFGS0FJSUlRTU1BUXNnQXlnQ0FDQUdJQUVnQWhDd0N5RURJQUloQmdzQ1FDQURSUTBBSUFBZ0F6XFxcbllDQkNBQVFRaHFJQVkyQWdCQkFDRUNEQU1MSUFBZ0FUWUNCQ0FBUVFocUlBSTJBZ0FNQVFzZ0FFRUFOZ0lFSUFCQkNHb2dBallDQUF0QlxcXG5BU0VDQ3lBQUlBSTJBZ0FnQlVFUWFpUUFDOXdCQUFKQUFrQWdBVUdBQVVrTkFBSkFJQUZCZ0JCSkRRQUNRQ0FCUVlDQUJFa05BQ0FDSUFcXFxuRkJQM0ZCZ0FGeU9nQURJQUlnQVVFR2RrRS9jVUdBQVhJNkFBSWdBaUFCUVF4MlFUOXhRWUFCY2pvQUFTQUNJQUZCRW5aQkIzRkI4QUZ5XFxcbk9nQUFRUVFoQVF3REN5QUNJQUZCUDNGQmdBRnlPZ0FDSUFJZ0FVRU1ka0hnQVhJNkFBQWdBaUFCUVFaMlFUOXhRWUFCY2pvQUFVRURJUVxcXG5FTUFnc2dBaUFCUVQ5eFFZQUJjam9BQVNBQ0lBRkJCblpCd0FGeU9nQUFRUUloQVF3QkN5QUNJQUU2QUFCQkFTRUJDeUFBSUFFMkFnUWdcXFxuQUNBQ05nSUFDK29CQVFKL0l3QkJFR3NpQlNRQUFrQUNRQUpBSUFGRkRRQUNRQUpBQWtBZ0FrRi9UQTBBSUFNb0FnUU5BU0FGSUFFZ0FoXFxcbkR3QnlBRktBSUVJUVlnQlNnQ0FDRUREQUlMSUFCQkFEWUNCQXdEQ3dKQUlBTkJDR29vQWdBaUJnMEFJQVZCQ0dvZ0FTQUNRUUFRaXdnZ1xcXG5CU2dDRENFR0lBVW9BZ2doQXd3QkN5QURLQUlBSUFZZ0FTQUNFTEFMSVFNZ0FpRUdDd0pBSUFORkRRQWdBQ0FETmdJRUlBQkJDR29nQmpcXFxuWUNBRUVBSVFJTUF3c2dBQ0FCTmdJRUlBQkJDR29nQWpZQ0FBd0JDeUFBUVFBMkFnUWdBRUVJYWlBQ05nSUFDMEVCSVFJTElBQWdBallDXFxcbkFDQUZRUkJxSkFBTDNBRUFBa0FDUUNBQlFZQUJTUTBBQWtBZ0FVR0FFRWtOQUFKQUlBRkJnSUFFU1EwQUlBSWdBVUUvY1VHQUFYSTZBQVxcXG5NZ0FpQUJRUVoyUVQ5eFFZQUJjam9BQWlBQ0lBRkJESFpCUDNGQmdBRnlPZ0FCSUFJZ0FVRVNka0VIY1VId0FYSTZBQUJCQkNFQkRBTUxcXFxuSUFJZ0FVRS9jVUdBQVhJNkFBSWdBaUFCUVF4MlFlQUJjam9BQUNBQ0lBRkJCblpCUDNGQmdBRnlPZ0FCUVFNaEFRd0NDeUFDSUFGQlAzXFxcbkZCZ0FGeU9nQUJJQUlnQVVFR2RrSEFBWEk2QUFCQkFpRUJEQUVMSUFJZ0FUb0FBRUVCSVFFTElBQWdBVFlDQkNBQUlBSTJBZ0FMOGdFQ1xcXG5CWDhCZmlNQVFkQUFheUlESkFBZ0EwRVlha0VJYWlJRUlBRkJIR29pQlNnQ0FEWUNBQ0FGUVFBMkFnQWdBU2tDRkNFSUlBRkNBVGNDRkNcXFxuQURRUUU2QURnZ0EwRUFOZ0l3SUFOQ0FEY0NKQ0FESUFnM0F4Z2dBaWdDQkNnQ0FDRUdJQUlvQWdBdEFBQWhCeUFEUVJCcUlBSW9BZ2dpXFxcbkFpZ0NBQ0FDS0FJRUVKUUNJQU5CQ0dvZ0EwRVlhaUFISUFZZ0F5Z0NFQ0lDSUFJZ0F5Z0NGR29RMFFFZ0F5a0RDQ0VJSUFOQndBQnFRUVxcXG5ocUlnSWdCQ2dDQURZQ0FDQURJQU1wQXhnM0EwQWdBVUVVYWhDS0RTQUZJQUlvQWdBMkFnQWdBU0FES1FOQU53SVVJQUFnQ0RjREFDQURcXFxuUWRBQWFpUUFDOXdCQUFKQUFrQWdBVUdBQVVrTkFBSkFJQUZCZ0JCSkRRQUNRQ0FCUVlDQUJFa05BQ0FDSUFGQlAzRkJnQUZ5T2dBRElBXFxcbklnQVVFR2RrRS9jVUdBQVhJNkFBSWdBaUFCUVF4MlFUOXhRWUFCY2pvQUFTQUNJQUZCRW5aQkIzRkI4QUZ5T2dBQVFRUWhBUXdEQ3lBQ1xcXG5JQUZCUDNGQmdBRnlPZ0FDSUFJZ0FVRU1ka0hnQVhJNkFBQWdBaUFCUVFaMlFUOXhRWUFCY2pvQUFVRURJUUVNQWdzZ0FpQUJRVDl4UVlcXFxuQUJjam9BQVNBQ0lBRkJCblpCd0FGeU9nQUFRUUloQVF3QkN5QUNJQUU2QUFCQkFTRUJDeUFBSUFFMkFnUWdBQ0FDTmdJQUMrb0JBUUovXFxcbkl3QkJFR3NpQlNRQUFrQUNRQUpBSUFGRkRRQUNRQUpBQWtBZ0FrRi9UQTBBSUFNb0FnUU5BU0FGSUFFZ0FoRDZCeUFGS0FJRUlRWWdCU1xcXG5nQ0FDRUREQUlMSUFCQkFEWUNCQXdEQ3dKQUlBTkJDR29vQWdBaUJnMEFJQVZCQ0dvZ0FTQUNRUUFRa2dnZ0JTZ0NEQ0VHSUFVb0FnZ2hcXFxuQXd3QkN5QURLQUlBSUFZZ0FTQUNFTEFMSVFNZ0FpRUdDd0pBSUFORkRRQWdBQ0FETmdJRUlBQkJDR29nQmpZQ0FFRUFJUUlNQXdzZ0FDXFxcbkFCTmdJRUlBQkJDR29nQWpZQ0FBd0JDeUFBUVFBMkFnUWdBRUVJYWlBQ05nSUFDMEVCSVFJTElBQWdBallDQUNBRlFSQnFKQUFMNmdFQlxcXG5BbjhqQUVFUWF5SUZKQUFDUUFKQUFrQWdBVVVOQUFKQUFrQUNRQ0FDUVg5TURRQWdBeWdDQkEwQklBVWdBU0FDRVB3SElBVW9BZ1FoQmlcXFxuQUZLQUlBSVFNTUFnc2dBRUVBTmdJRURBTUxBa0FnQTBFSWFpZ0NBQ0lHRFFBZ0JVRUlhaUFCSUFKQkFCQ1RDQ0FGS0FJTUlRWWdCU2dDXFxcbkNDRUREQUVMSUFNb0FnQWdCaUFCSUFJUXNBc2hBeUFDSVFZTEFrQWdBMFVOQUNBQUlBTTJBZ1FnQUVFSWFpQUdOZ0lBUVFBaEFnd0RDeVxcXG5BQUlBRTJBZ1FnQUVFSWFpQUNOZ0lBREFFTElBQkJBRFlDQkNBQVFRaHFJQUkyQWdBTFFRRWhBZ3NnQUNBQ05nSUFJQVZCRUdva0FBdmNcXFxuQVFBQ1FBSkFJQUZCZ0FGSkRRQUNRQ0FCUVlBUVNRMEFBa0FnQVVHQWdBUkpEUUFnQWlBQlFUOXhRWUFCY2pvQUF5QUNJQUZCQm5aQlAzXFxcbkZCZ0FGeU9nQUNJQUlnQVVFTWRrRS9jVUdBQVhJNkFBRWdBaUFCUVJKMlFRZHhRZkFCY2pvQUFFRUVJUUVNQXdzZ0FpQUJRVDl4UVlBQlxcXG5jam9BQWlBQ0lBRkJESFpCNEFGeU9nQUFJQUlnQVVFR2RrRS9jVUdBQVhJNkFBRkJBeUVCREFJTElBSWdBVUUvY1VHQUFYSTZBQUVnQWlcXFxuQUJRUVoyUWNBQmNqb0FBRUVDSVFFTUFRc2dBaUFCT2dBQVFRRWhBUXNnQUNBQk5nSUVJQUFnQWpZQ0FBdnhBUUVDZnlNQVFaQUVheUlDXFxcbkpBQWdBa0VZYWtHNC9jQUFFS3NJSUFKQkVHb2dBVUVCRVBVS0lBSW9BaFFoQXlBQ0tBSVFJUUVEUUFKQUlBRWdBMGNOQUNBQ1FiZ0NhaVxcXG5BQ1FSaHFRZGdCRUtRTkdpQUNRZkFCYWlBQ1FiZ0NhaEQyQlNBQ1FRaHFJQUpCOEFGcVFRZ1F1UXNnQWtFQUlBSW9BckFDS0FKSUlBSW9cXFxuQWdnZ0FpZ0NERUdZbThBQUVJVUhJQUpCdUFKcUlBSW9BZ0FpQVNBQklBSW9BZ1JxRU13RklBQWdBaWdDdUFJZ0FpZ0N3QUpCNElMQUFFXFxcbkVBRUU0Z0FrRzRBbW9RNGd3Z0FrR1FCR29rQUE4TElBSkJHR29nQVNnQ0FDQUJRUVJxS0FJQUVOQUJJQUZCQ0dvaEFRd0FDd3Y2QVFFQlxcXG5meU1BUWRBQWF5SUVKQUFnQkVIQUFHb2dBaUFERUpRTklBUkJPR29nQkVIQUFHb1FpZ29nQkVFd2FpQUVLQUk0SUFRb0Fqd1FDQ0FFS0FcXFxuSTBJUU1nQkNnQ01DRUNJQVJCS0dvUXh3a0NRQUpBQWtBZ0JDZ0NLRVVOQUNBRUtBSXNJUU1NQVFzZ0JFRWdhaUFDSUFNUWlReEJnSlRyXFxcbjNBTWhBaUFFS0FJa0lRTUNRQUpBSUFRb0FpQU9Bd0VBQWdBTElBUkJFR29nQTYwUXRnZ2dCRUlBUVFBZ0JDa0RFQ0FFS0FJWUVMb0RJQVxcXG5Rb0FnZ2hBaUFBSUFRcEF3QTNBd0FMSUFBZ0FqWUNDQ0FFUWNBQWFoRE1Dd3dCQ3lBQUlBTVErd1FnQUVHQmxPdmNBellDQ0NBRVFjQUFcXFxuYWhETUN3c2dCRUhRQUdva0FBdm9BUUVDZnlNQVFSQnJJZ1VrQUFKQUFrQUNRQ0FCUlEwQUFrQUNRQUpBSUFKQmYwd05BQ0FES0FJRURRXFxcbkVnQlNBQklBSVEyd2tnQlNnQ0JDRUdJQVVvQWdBaEF3d0NDeUFBUVFBMkFnUU1Bd3NDUUNBRFFRaHFLQUlBSWdZTkFDQUZRUWhxSUFFZ1xcXG5BaERiQ1NBRktBSU1JUVlnQlNnQ0NDRUREQUVMSUFNb0FnQWdCaUFCSUFJUXNBc2hBeUFDSVFZTEFrQWdBMFVOQUNBQUlBTTJBZ1FnQUVcXFxuRUlhaUFHTmdJQVFRQWhBZ3dEQ3lBQUlBRTJBZ1FnQUVFSWFpQUNOZ0lBREFFTElBQkJBRFlDQkNBQVFRaHFJQUkyQWdBTFFRRWhBZ3NnXFxcbkFDQUNOZ0lBSUFWQkVHb2tBQXZMQVFFRWYwRUFJUVFDUUFKQUlBSkJBa2tOQUFKQUFrQUNRQ0FDUVFOMElBRnFJZ1ZCZUdvaUJpZ0NBQ1xcXG5JSElBWW9BZ1JxSUFOR0RRQWdCVUZ3YWlnQ0FDSUZJQWRORFFBZ0FrRURTUTBESUFFZ0FrRjlhaUlEUVFOMGFpZ0NBQ0lHSUFVZ0IycE5cXFxuRFFFZ0FrRUVTUTBESUFKQkEzUWdBV3BCWUdvb0FnQWdCaUFGYWswTkFRd0VDeUFDUVFOSkRRRWdBU0FDUVgxcUlnTkJBM1JxS0FJQUlRXFxcbllMUVFFaEJDQUdJQWRKRFFJTElBSkJmbW9oQTBFQklRUU1BUXNMSUFBZ0F6WUNCQ0FBSUFRMkFnQUw3QUVCQTM4akFFSEFBR3NpQWlRQVxcXG5JQUlnQVNnQ0RDSUROZ0lnSUFJZ0FTZ0NBQ0lFTmdJWUlBSWdCRUVJYWpZQ0VDQUNJQVFnQVNnQ0JHcEJBV28yQWhRZ0FpQUVLUU1BUW5cXFxuK0ZRb0NCZ29TSWtLREFnSCtETndNSUlBSkJNR29nQUVFQklBTVFtd01nQWlnQ01DRUJBa0FnQWkwQU5DSUVRUU5HRFFBZ0FpQUVPZ0FzXFxcbklBSWdBVFlDS0FKQUEwQWdBaUFDUVFocUVPUUpJQUlvQWdBaUFVVU5BU0FDS0FJRUlRUWdBaUFCTmdJOElBSWdCRFlDTUNBQ1FTaHFJQVxcXG5KQlBHb2dBa0V3YWhEWkJDSUJSUTBBREFJTEN5QUNLQUlvSUFJdEFDd1E1d1loQVFzZ0FrSEFBR29rQUNBQkMrVUJBZ0ovQVg0akFFRXdcXFxuYXlJRkpBQWdCVUVJYWlBQklBSWdBeEM0QXlBRktBSU1JUVlDUUFKQUFrQWdCU2dDQ0EwQUlBRkJHR29vQWdBaUFpQUdUUTBDSUFBZ0JqXFxcbllDQUNBQktBSVFJQVpCSEd4cUlnRXBBZ3doQnlBQklBUXBBZ0EzQWd3Z0FDQUhOd0lFSUFGQkZHb2lBU2dDQUNFR0lBRWdCRUVJYWlnQ1xcXG5BRFlDQUNBQVFReHFJQVkyQWdBZ0F4RGpEQXdCQ3lBRlFTQnFRUWhxSUFOQkNHb29BZ0EyQWdBZ0JTQURLUUlBTndNZ0lBRWdBaUFGUVNcXFxuQnFJQVFReUFJZ0FFRUFOZ0lFSUFBZ0JqWUNBQXNnQlVFd2FpUUFEd3NnQmlBQ1FjeWR3QUFRZ1FVQUM5c0JBUU4vSXdCQklHc2lCQ1FBXFxcblFRQWhCUUpBSUFJZ0Eyb2lBeUFDU1EwQUlBRW9BZ1FpQWtFQmRDSUZJQU1nQlNBRFN4c2lBMEVFSUFOQkJFc2JJZ05CREd3aEJTQURRYVxcXG52VnF0VUFTVUVDZENFR0FrQUNRQ0FDUlEwQUlBUkJCRFlDRkNBRUlBSkJER3cyQWhnZ0JDQUJLQUlBTmdJUURBRUxJQVJCQURZQ0ZBc2dcXFxuQkNBR0lBVWdCRUVRYWlBQkVOUUNJQVFvQWdRaEJRSkFJQVFvQWdCRkRRQWdCRUVJYWlnQ0FDRUREQUVMSUFFZ0F6WUNCQ0FCSUFVMkFnXFxcbkJCZ1lDQWdIZ2hCUXNnQUNBRE5nSUVJQUFnQlRZQ0FDQUVRU0JxSkFBTDNBRUJBMzhqQUVFZ2F5SUVKQUJCQUNFRkFrQWdBaUFEYWlJRFxcXG5JQUpKRFFBZ0FTZ0NCQ0lDUVFGMElnVWdBeUFGSUFOTEd5SURRUVFnQTBFRVN4c2lBMEhZQUd3aEJTQURRWmk2MFF0SlFRSjBJUVlDUUFcXFxuSkFJQUpGRFFBZ0JFRUVOZ0lVSUFRZ0FrSFlBR3cyQWhnZ0JDQUJLQUlBTmdJUURBRUxJQVJCQURZQ0ZBc2dCQ0FHSUFVZ0JFRVFhaUFCXFxcbkVOUUNJQVFvQWdRaEJRSkFJQVFvQWdCRkRRQWdCRUVJYWlnQ0FDRUREQUVMSUFFZ0F6WUNCQ0FCSUFVMkFnQkJnWUNBZ0hnaEJRc2dBQ1xcXG5BRE5nSUVJQUFnQlRZQ0FDQUVRU0JxSkFBTDJnRUJBMzhqQUVFZ2F5SUVKQUJCQUNFRkFrQWdBaUFEYWlJRElBSkpEUUFnQVNnQ0JDSUNcXFxuUVFGMElnVWdBeUFGSUFOTEd5SURRUVFnQTBFRVN4c2lBMEVjYkNFRklBTkJwWkxKSkVsQkFuUWhCZ0pBQWtBZ0FrVU5BQ0FFUVFRMkFoXFxcblFnQkNBQ1FSeHNOZ0lZSUFRZ0FTZ0NBRFlDRUF3QkN5QUVRUUEyQWhRTElBUWdCaUFGSUFSQkVHb2dBUkRVQWlBRUtBSUVJUVVDUUNBRVxcXG5LQUlBUlEwQUlBUkJDR29vQWdBaEF3d0JDeUFCSUFNMkFnUWdBU0FGTmdJQVFZR0FnSUI0SVFVTElBQWdBellDQkNBQUlBVTJBZ0FnQkVcXFxuRWdhaVFBQzlvQkFRTi9Jd0JCSUdzaUJDUUFRUUFoQlFKQUlBSWdBMm9pQXlBQ1NRMEFJQUVvQWdRaUFrRUJkQ0lGSUFNZ0JTQURTeHNpXFxcbkEwRUVJQU5CQkVzYklnTkJCM1FoQlNBRFFZQ0FnQWhKUVFOMElRWUNRQUpBSUFKRkRRQWdCRUVJTmdJVUlBUWdBa0VIZERZQ0dDQUVJQVxcXG5Fb0FnQTJBaEFNQVFzZ0JFRUFOZ0lVQ3lBRUlBWWdCU0FFUVJCcUlBRVExQUlnQkNnQ0JDRUZBa0FnQkNnQ0FFVU5BQ0FFUVFocUtBSUFcXFxuSVFNTUFRc2dBU0FETmdJRUlBRWdCVFlDQUVHQmdJQ0FlQ0VGQ3lBQUlBTTJBZ1FnQUNBRk5nSUFJQVJCSUdva0FBdmJBUUVEZnlNQVFTXFxcbkJySWdRa0FFRUFJUVVDUUNBQ0lBTnFJZ01nQWtrTkFDQUJLQUlFSWdKQkFYUWlCU0FESUFVZ0Ewc2JJZ05CQkNBRFFRUkxHeUlEUVFaMFxcXG5JUVVnQTBHQWdJQVFTVUVHZENFR0FrQUNRQ0FDUlEwQUlBUkJ3QUEyQWhRZ0JDQUNRUVowTmdJWUlBUWdBU2dDQURZQ0VBd0JDeUFFUVFcXFxuQTJBaFFMSUFRZ0JpQUZJQVJCRUdvZ0JCRE9BaUFFS0FJRUlRVUNRQ0FFS0FJQVJRMEFJQVJCQ0dvb0FnQWhBd3dCQ3lBQklBTTJBZ1FnXFxcbkFTQUZOZ0lBUVlHQWdJQjRJUVVMSUFBZ0F6WUNCQ0FBSUFVMkFnQWdCRUVnYWlRQUM5b0JBUU4vSXdCQklHc2lCQ1FBUVFBaEJRSkFJQVxcXG5JZ0Eyb2lBeUFDU1EwQUlBRW9BZ1FpQWtFQmRDSUZJQU1nQlNBRFN4c2lBMEVFSUFOQkJFc2JJZ05CR0d3aEJTQURRZGFxMVNwSlFRSjBcXFxuSVFZQ1FBSkFJQUpGRFFBZ0JFRUVOZ0lVSUFRZ0FrRVliRFlDR0NBRUlBRW9BZ0EyQWhBTUFRc2dCRUVBTmdJVUN5QUVJQVlnQlNBRVFSXFxcbkJxSUFRUTBBSWdCQ2dDQkNFRkFrQWdCQ2dDQUVVTkFDQUVRUWhxS0FJQUlRTU1BUXNnQVNBRE5nSUVJQUVnQlRZQ0FFR0JnSUNBZUNFRlxcXG5DeUFBSUFNMkFnUWdBQ0FGTmdJQUlBUkJJR29rQUF2YkFRRURmeU1BUVNCcklnUWtBRUVBSVFVQ1FDQUNJQU5xSWdNZ0Fra05BQ0FCS0FcXFxuSUVJZ0pCQVhRaUJTQURJQVVnQTBzYklnTkJCQ0FEUVFSTEd5SURRUUowSVFVZ0EwR0FnSUNBQWtsQkFuUWhCZ0pBQWtBZ0FrVU5BQ0FFXFxcblFRUTJBaFFnQkNBQ1FRSjBOZ0lZSUFRZ0FTZ0NBRFlDRUF3QkN5QUVRUUEyQWhRTElBUWdCaUFGSUFSQkVHb2dBUkRVQWlBRUtBSUVJUVxcXG5VQ1FDQUVLQUlBUlEwQUlBUkJDR29vQWdBaEF3d0JDeUFCSUFNMkFnUWdBU0FGTmdJQVFZR0FnSUI0SVFVTElBQWdBellDQkNBQUlBVTJcXFxuQWdBZ0JFRWdhaVFBQzlzQkFRTi9Jd0JCSUdzaUJDUUFRUUFoQlFKQUlBSWdBMm9pQXlBQ1NRMEFJQUVvQWdRaUFrRUJkQ0lGSUFNZ0JTXFxcbkFEU3hzaUEwRUVJQU5CQkVzYklnTkJBM1FoQlNBRFFZQ0FnSUFCU1VFQ2RDRUdBa0FDUUNBQ1JRMEFJQVJCQkRZQ0ZDQUVJQUpCQTNRMlxcXG5BaGdnQkNBQktBSUFOZ0lRREFFTElBUkJBRFlDRkFzZ0JDQUdJQVVnQkVFUWFpQUJFTlFDSUFRb0FnUWhCUUpBSUFRb0FnQkZEUUFnQkVcXFxuRUlhaWdDQUNFRERBRUxJQUVnQXpZQ0JDQUJJQVUyQWdCQmdZQ0FnSGdoQlFzZ0FDQUROZ0lFSUFBZ0JUWUNBQ0FFUVNCcUpBQUwyd0VCXFxcbkEzOGpBRUVnYXlJRUpBQkJBQ0VGQWtBZ0FpQURhaUlESUFKSkRRQWdBU2dDQkNJQ1FRRjBJZ1VnQXlBRklBTkxHeUlEUVFRZ0EwRUVTeFxcXG5zaUEwRURkQ0VGSUFOQmdJQ0FnQUZKUVFKMElRWUNRQUpBSUFKRkRRQWdCRUVFTmdJVUlBUWdBa0VEZERZQ0dDQUVJQUVvQWdBMkFoQU1cXFxuQVFzZ0JFRUFOZ0lVQ3lBRUlBWWdCU0FFUVJCcUlBRVExQUlnQkNnQ0JDRUZBa0FnQkNnQ0FFVU5BQ0FFUVFocUtBSUFJUU1NQVFzZ0FTXFxcbkFETmdJRUlBRWdCVFlDQUVHQmdJQ0FlQ0VGQ3lBQUlBTTJBZ1FnQUNBRk5nSUFJQVJCSUdva0FBdmJBUUVEZnlNQVFTQnJJZ1FrQUVFQVxcXG5JUVVDUUNBQ0lBTnFJZ01nQWtrTkFDQUJLQUlFSWdKQkFYUWlCU0FESUFVZ0Ewc2JJZ05CQkNBRFFRUkxHeUlEUVFKMElRVWdBMEdBZ0lcXFxuQ0FBa2xCQW5RaEJnSkFBa0FnQWtVTkFDQUVRUVEyQWhRZ0JDQUNRUUowTmdJWUlBUWdBU2dDQURZQ0VBd0JDeUFFUVFBMkFoUUxJQVFnXFxcbkJpQUZJQVJCRUdvZ0FSRFVBaUFFS0FJRUlRVUNRQ0FFS0FJQVJRMEFJQVJCQ0dvb0FnQWhBd3dCQ3lBQklBTTJBZ1FnQVNBRk5nSUFRWVxcXG5HQWdJQjRJUVVMSUFBZ0F6WUNCQ0FBSUFVMkFnQWdCRUVnYWlRQUMrUUJBUUYvSXdCQk1Hc2lBaVFBQWtBQ1FDQUFMUUFFUlEwQUlBSWdcXFxuQUVFRmFpMEFBRG9BQnlBQ1FSUnFRUWcyQWdBZ0FpQUFOZ0lRSUFKQnJBSTJBZ3dnQVVFWWFpZ0NBQ0VBSUFJZ0FrRUhhallDQ0NBQktBXFxcbklVSVFFZ0FrSUNOd0lrSUFKQkFqWUNIQ0FDUWJDbnpnQTJBaGdnQWlBQ1FRaHFOZ0lnSUFFZ0FDQUNRUmhxRUcwaEFBd0JDeUFDUVFnMlxcXG5BZ3dnQWlBQU5nSUlJQUZCR0dvb0FnQWhBQ0FCS0FJVUlRRWdBa0lCTndJa0lBSkJBVFlDSENBQ1FmeW16Z0EyQWhnZ0FpQUNRUWhxTmdcXFxuSWdJQUVnQUNBQ1FSaHFFRzBoQUFzZ0FrRXdhaVFBSUFBTDlnRUJBbjhqQUVFUWF5SUNKQUFnQWlBQVFRUnFOZ0lFSUFFb0FoUkJxYm5PXFxcbkFFRUpJQUZCR0dvb0FnQW9BZ3dSQ1FBaEF5QUNRUUE2QUEwZ0FpQURPZ0FNSUFJZ0FUWUNDQ0FDUVFocVFiSzV6Z0JCQ3lBQVFaUzV6Z1xcXG5BUTB3RkJ2Ym5PQUVFSklBSkJCR3BCeUxuT0FCRFRBU0VESUFJdEFBd2hBQUpBQWtBZ0FpMEFEUTBBSUFCQi93RnhRUUJISVFFTUFRdEJcXFxuQVNFQklBQkIvd0Z4RFFBQ1FDQURLQUlBSWdFdEFCeEJCSEVOQUNBQktBSVVRYmVlemdCQkFpQUJRUmhxS0FJQUtBSU1FUWtBSVFFTUFRXFxcbnNnQVNnQ0ZFRzJuczRBUVFFZ0FVRVlhaWdDQUNnQ0RCRUpBQ0VCQ3lBQ1FSQnFKQUFnQVF2MkFRRUNmeU1BUVJCcklnSWtBQ0FDSUFBMlxcXG5BZ1FnQVNnQ0ZFSFlwYzhBUVFZZ0FVRVlhaWdDQUNnQ0RCRUpBQ0VESUFKQkFEb0FEU0FDSUFNNkFBd2dBaUFCTmdJSUlBSkJDR3BCM3FcXFxuWFBBRUVFSUFCQkJHcEJsTG5PQUJEVEFVSGlwYzhBUVFVZ0FrRUVha0hvcGM4QUVOTUJJUU1nQWkwQURDRUFBa0FDUUNBQ0xRQU5EUUFnXFxcbkFFSC9BWEZCQUVjaEFRd0JDMEVCSVFFZ0FFSC9BWEVOQUFKQUlBTW9BZ0FpQVMwQUhFRUVjUTBBSUFFb0FoUkJ0NTdPQUVFQ0lBRkJHR1xcXG5vb0FnQW9BZ3dSQ1FBaEFRd0JDeUFCS0FJVVFiYWV6Z0JCQVNBQlFSaHFLQUlBS0FJTUVRa0FJUUVMSUFKQkVHb2tBQ0FCQytVQkFRRi9cXFxuSXdCQkVHc2lCU1FBSUFVZ0FDZ0NGQ0FCSUFJZ0FFRVlhaWdDQUNnQ0RCRUpBRG9BQ0NBRklBQTJBZ1FnQlNBQ1JUb0FDU0FGUVFBMkFnXFxcbkFnQlNBRElBUVE5QUVoQUNBRkxRQUlJUUlDUUFKQUlBQW9BZ0FpQVEwQUlBSkIvd0Z4UVFCSElRQU1BUXRCQVNFQUlBSkIvd0Z4RFFBZ1xcXG5CU2dDQkNFQ0FrQWdBVUVCUncwQUlBVXRBQWxCL3dGeFJRMEFJQUl0QUJ4QkJIRU5BRUVCSVFBZ0FpZ0NGRUc4bnM0QVFRRWdBa0VZYWlcXFxuZ0NBQ2dDREJFSkFBMEJDeUFDS0FJVVFadVp6Z0JCQVNBQ1FSaHFLQUlBS0FJTUVRa0FJUUFMSUFWQkVHb2tBQ0FBQytBQkFRTi9Jd0JCXFxcbkVHc2lCQ1FBSUFSQkNHb2dBaUFESUFFb0FnZ2lCVUdvZzhFQUVQUUhJQUVvQWdBaEJpQUVLQUlNSVFNQ1FBSkFJQVFvQWdnaUFrVU5BQVxcXG5KQUlBSWdCVWtOQUNBQ0lBVkdEUUVNQWdzZ0JpQUNhaXdBQUVGQVNBMEJDd0pBSUFORkRRQUNRQUpBSUFNZ0JVa05BQ0FESUFWSERRRU1cXFxuQWdzZ0JpQURhaXdBQUVHL2Ywb05BUXRCK0lQQkFFRXNRYVNFd1FBUWd3Y0FDeUFBSUFNMkFoQWdBQ0FDTmdJTUlBQWdBVFlDQ0NBQUlBXFxcbllnQTJvMkFnUWdBQ0FHSUFKcU5nSUFJQVJCRUdva0FBOExRYmlEd1FCQkxrSG9nOEVBRUlNSEFBdkpBUUVGZndKQUlBQW9BZ0FnQUNnQ1xcXG5CQ0lCUncwQVFZQ0F4QUFQQ3lBQUlBRkJmMm9pQWpZQ0JBSkFJQUl0QUFBaUFzQWlBMEYvU2cwQUlBQWdBVUYrYWlJQ05nSUVBa0FDUUNcXFxuQUNMUUFBSWdMQUlnUkJRRWdOQUNBQ1FSOXhJUUFNQVFzZ0FDQUJRWDFxSWdJMkFnUUNRQUpBSUFJdEFBQWlBc0FpQlVGQVNBMEFJQUpCXFxcbkQzRWhBQXdCQ3lBQUlBRkJmR29pQVRZQ0JDQUJMUUFBUVFkeFFRWjBJQVZCUDNGeUlRQUxJQUJCQm5RZ0JFRS9jWEloQUFzZ0FFRUdkQ1xcXG5BRFFUOXhjaUVDQ3lBQ0M5RUJBUUovSXdCQklHc2lBeVFBQWtBQ1FDQUJJQUpxSWdJZ0FVa05BQ0FBUVFScUtBSUFJZ0ZCQVhRaUJDQUNcXFxuSUFRZ0Frc2JJZ0pCQ0NBQ1FRaExHeUlDUVg5elFSOTJJUVFDUUFKQUlBRkZEUUFnQXlBQk5nSVlJQU5CQVRZQ0ZDQURJQUFvQWdBMkFoXFxcbkFNQVFzZ0EwRUFOZ0lVQ3lBRElBUWdBaUFEUVJCcUVJSURJQU1vQWdRaEFRSkFJQU1vQWdBTkFDQUFJQUUyQWdBZ0FFRUVhaUFDTmdJQVxcXG5EQUlMSUFGQmdZQ0FnSGhHRFFFZ0FVVU5BQ0FCSUFOQkNHb29BZ0FRbWcwQUN4Q1hDQUFMSUFOQklHb2tBQXZSQVFFQ2Z5TUFRU0JySWdcXFxuTWtBQUpBQWtBZ0FTQUNhaUlDSUFGSkRRQWdBRUVFYWlnQ0FDSUJRUUYwSWdRZ0FpQUVJQUpMR3lJQ1FRZ2dBa0VJU3hzaUFrRi9jMEVmXFxcbmRpRUVBa0FDUUNBQlJRMEFJQU1nQVRZQ0dDQURRUUUyQWhRZ0F5QUFLQUlBTmdJUURBRUxJQU5CQURZQ0ZBc2dBeUFFSUFJZ0EwRVFhaFxcXG5EdkFpQURLQUlFSVFFQ1FDQURLQUlBRFFBZ0FDQUJOZ0lBSUFCQkJHb2dBallDQUF3Q0N5QUJRWUdBZ0lCNFJnMEJJQUZGRFFBZ0FTQURcXFxuUVFocUtBSUFFSm9OQUFzUWx3Z0FDeUFEUVNCcUpBQUw0UUVBQWtBQ1FDQUJSUTBBQWtBQ1FBSkFBa0FDUUFKQUlBSkJmMHdOQUNBREtBXFxcbklFRFFFZ0FnMENRUUVoQVF3RUN5QUFRUUEyQWdRTUJnc0NRQ0FEUVFocUtBSUFJZ0VOQUFKQUlBSU5BRUVCSVFFTUJBdEJBQzBBOGFaUFxcXG5HaUFDUVFFUTl3c2hBUXdDQ3lBREtBSUFJQUZCQVNBQ0VMQUxJUUVNQVF0QkFDMEE4YVpQR2lBQ1FRRVE5d3NoQVFzZ0FVVU5BUXNnQUNcXFxuQUJOZ0lFSUFCQkNHb2dBallDQUNBQVFRQTJBZ0FQQ3lBQVFRRTJBZ1FnQUVFSWFpQUNOZ0lBSUFCQkFUWUNBQThMSUFCQkFEWUNCQ0FBXFxcblFRaHFJQUkyQWdBTElBQkJBVFlDQUF2YkFRRUJmeU1BUWNBQWF5SUVKQUFnQkNBQk5nSU1JQVFnQURZQ0NBSkFBa0FnQTBVTkFDQUVRU1xcXG5ocVFReHFRUWsyQWdBZ0JFRVFha0VNYWtJQ053SUFJQVJCQWpZQ0ZDQUVRZUNSd0FBMkFoQWdCRUVCTmdJc0lBUWdBellDUENBRUlBSTJcXFxuQWpnZ0JDQUVRU2hxTmdJWUlBUWdCRUU0YWpZQ01DQUVJQVJCQ0dvMkFpZ2dCRUVRYWhEV0F5RUREQUVMSUFSQkhHcENBVGNDQUNBRVFRXFxcbkkyQWhRZ0JFSEVrY0FBTmdJUUlBUkJBVFlDTENBRUlBUkJLR28yQWhnZ0JDQUVRUWhxTmdJb0lBUkJFR29RMWdNaEF3c2dCRUhBQUdva1xcXG5BQ0FEQzg4QkFRTi9Jd0JCSUdzaUFpUUFBa0FDUUNBQlFRRnFJZ0ZGRFFBZ0FFRUVhaWdDQUNJRFFRRjBJZ1FnQVNBRUlBRkxHeUlCUVFcXFxuZ2dBVUVJU3hzaUFVRi9jMEVmZGlFRUFrQUNRQ0FEUlEwQUlBSWdBellDR0NBQ1FRRTJBaFFnQWlBQUtBSUFOZ0lRREFFTElBSkJBRFlDXFxcbkZBc2dBaUFFSUFFZ0FrRVFhaENDQXlBQ0tBSUVJUU1DUUNBQ0tBSUFEUUFnQUNBRE5nSUFJQUJCQkdvZ0FUWUNBQXdDQ3lBRFFZR0FnSVxcXG5CNFJnMEJJQU5GRFFBZ0F5QUNRUWhxS0FJQUVKb05BQXNRbHdnQUN5QUNRU0JxSkFBTDFBRUJCSDhnQUNnQ0FDRURRUUFoQkFKQUlBQW9cXFxuQWdnaUJVVU5BQ0FEUlEwQUlBVWdBMnBCZjJvdEFBQkJMMGNoQkFzQ1FBSkFBa0FnQWtVTkFFRUFJUVlnQVMwQUFFRXZSZzBCQ3dKQUlBXFxcblFOQUNBRklRWU1BZ3NDUUNBQUtBSUVJQVZIRFFBZ0FDQUZRUUVRN1FJZ0FDZ0NBQ0VESUFBb0FnZ2hCUXNnQXlBRmFrRXZPZ0FBSUFWQlxcXG5BV29oQmdzZ0FDQUdOZ0lJQ3dKQUlBQW9BZ1FnQm1zZ0FrOE5BQ0FBSUFZZ0FoRHRBaUFBS0FJQUlRTWdBQ2dDQ0NFR0N5QURJQVpxSUFcXFxuRWdBaENrRFJvZ0FDQUdJQUpxTmdJSUM4OEJBUU4vSXdCQklHc2lBaVFBQWtBQ1FDQUJRUUZxSWdGRkRRQWdBRUVFYWlnQ0FDSURRUUYwXFxcbklnUWdBU0FFSUFGTEd5SUJRUWdnQVVFSVN4c2lBVUYvYzBFZmRpRUVBa0FDUUNBRFJRMEFJQUlnQXpZQ0dDQUNRUUUyQWhRZ0FpQUFLQVxcXG5JQU5nSVFEQUVMSUFKQkFEWUNGQXNnQWlBRUlBRWdBa0VRYWhEdkFpQUNLQUlFSVFNQ1FDQUNLQUlBRFFBZ0FDQUROZ0lBSUFCQkJHb2dcXFxuQVRZQ0FBd0NDeUFEUVlHQWdJQjRSZzBCSUFORkRRQWdBeUFDUVFocUtBSUFFSm9OQUFzUWx3Z0FDeUFDUVNCcUpBQUw2QUVCQVg4akFFXFxcbkdBQVdzaUF5UUFJQU1nQVNBQ0VKb0pBa0FDUUNBREtBSUFRUUpHRFFBZ0FDQURRY2dBRUtRTkdnd0JDeUFESUFNdEFBUTZBRThnQTBIc1xcXG5BR3BDQVRjQ0FDQURRUUUyQW1RZ0EwSGdnc0FBTmdKZ0lBTkJCellDZkNBRElBTkIrQUJxTmdKb0lBTWdBMEhQQUdvMkFuZ2dBMEhRQUdcXFxub2dBMEhnQUdvUWp3UWdBMEhvQUdvZ0FqWUNBQ0FESUFFMkFtUWdBMEVGT2dCZ0lBTWdBeWdDV0RZQ2ZDQURJQU1vQWxBMkFuZ2dBMEhnXFxcbkFHb2dBMEg0QUdwQjZJTEFBQkRwQkNFQ0lBTkIwQUJxRU9NTUlBQkJBallDQUNBQUlBSTJBZ1FMSUFOQmdBRnFKQUFMNFFFQ0FYOEJmaVxcXG5NQVFSQnJJZzBrQUNBTklBRWdBaUFESUFzZ0RCQ3NBZ0pBQWtBZ0RTZ0NBQ0lNUVFKR0RRQWdEU2tDQkNFT0lBMG9BZ3doQ3lBQUlBazdcXFxuQVJJZ0FDQUlPd0VRSUFBZ0N6WUNEQ0FBSUE0M0FnUWdBQ0FLTmdJd0lBQWdCallDTENBQUlBVTJBaWdnQUNBRU5nSWtJQUFnQXpZQ0lDXFxcbkFBUWNRQWFpQUhRUkJxTFFBQU9nQUFJQUJCUEdvZ0IwRUlhaWtBQURjQUFDQUFJQWNwQUFBM0FEUWdBQ0FCS1FJQU53SVVJQUJCSEdvZ1xcXG5BVUVJYWlnQ0FEWUNBQXdCQ3lBQUlBMHRBQVE2QUFRZ0FSQ0tEUXNnQUNBTU5nSUFJQTFCRUdva0FBditBUUVDZnlNQVFTQnJJZ1VrQUVcXFxuRUFRUUFvQXRDblR5SUdRUUZxTmdMUXAwOENRQUpBSUFaQkFFZ05BRUVBTFFDb3EwOUIvd0Z4RFFCQkFFRUJPZ0NvcTA5QkFFRUFLQUtrXFxcbnEwOUJBV28yQXFTclR5QUZJQUkyQWhRZ0JVSEU3ODBBTmdJTUlBVkIrT0ROQURZQ0NDQUZJQVE2QUJnZ0JTQUROZ0lRUVFBb0FzQ25UeVxcXG5JR1FYOU1EUUJCQUNBR1FRRnFOZ0xBcDA4Q1FFRUFLQUxJcDA5RkRRQWdCU0FBSUFFb0FoQVJCUUFnQlNBRktRTUFOd01JUVFBb0FzaW5cXFxuVHlBRlFRaHFRUUFvQXN5blR5Z0NGQkVGQUVFQUtBTEFwMDlCZjJvaEJndEJBQ0FHTmdMQXAwOUJBRUVBT2dDb3EwOGdCQTBCQ3dBTElBXFxcbkFnQVJEUkRBQUwyZ0VDQW44QmZpTUFRZUFBYXlJRkpBQWdCU0FCSUFJZ0F4QzJBeUFGS0FJRUlRWUNRQUpBQWtBZ0JTZ0NBQTBBSUFGQlxcXG5HR29vQWdBaUFpQUdUUTBDSUFBZ0JqWUNBQ0FCS0FJUUlBWkIyQUJzYWlJQktRSklJUWNnQVNBRUtRSUFOd0pJSUFBZ0J6Y0NCQ0FCUWRcXFxuQUFhaUlCS0FJQUlRWWdBU0FFUVFocUtBSUFOZ0lBSUFCQkRHb2dCallDQUNBRFFSUnFFT01NREFFTElBVkJHR29nQTBISUFCQ2tEUm9nXFxcbkFTQUNJQVZCR0dvZ0JCQzdBeUFBUVFBMkFnUWdBQ0FHTmdJQUN5QUZRZUFBYWlRQUR3c2dCaUFDUWN5ZHdBQVFnUVVBQzgwQkFRSi9Jd1xcXG5CQklHc2lCQ1FBUVFBaEJRSkFJQUlnQTJvaUF5QUNTUTBBSUFFb0FnUWlBa0VCZENJRklBTWdCU0FEU3hzaUEwRUlJQU5CQ0VzYklnTkJcXFxuZjNOQkgzWWhCUUpBQWtBZ0FrVU5BQ0FFSUFJMkFoZ2dCRUVCTmdJVUlBUWdBU2dDQURZQ0VBd0JDeUFFUVFBMkFoUUxJQVFnQlNBRElBXFxcblJCRUdvZ0JCRE5BaUFFS0FJRUlRVUNRQ0FFS0FJQVJRMEFJQVJCQ0dvb0FnQWhBd3dCQ3lBQklBTTJBZ1FnQVNBRk5nSUFRWUdBZ0lCNFxcXG5JUVVMSUFBZ0F6WUNCQ0FBSUFVMkFnQWdCRUVnYWlRQUM4MEJBUUovSXdCQklHc2lCQ1FBUVFBaEJRSkFJQUlnQTJvaUF5QUNTUTBBSUFcXFxuRW9BZ1FpQWtFQmRDSUZJQU1nQlNBRFN4c2lBMEVJSUFOQkNFc2JJZ05CZjNOQkgzWWhCUUpBQWtBZ0FrVU5BQ0FFSUFJMkFoZ2dCRUVCXFxcbk5nSVVJQVFnQVNnQ0FEWUNFQXdCQ3lBRVFRQTJBaFFMSUFRZ0JTQURJQVJCRUdvZ0JCRFFBaUFFS0FJRUlRVUNRQ0FFS0FJQVJRMEFJQVxcXG5SQkNHb29BZ0FoQXd3QkN5QUJJQU0yQWdRZ0FTQUZOZ0lBUVlHQWdJQjRJUVVMSUFBZ0F6WUNCQ0FBSUFVMkFnQWdCRUVnYWlRQUM5UUJcXFxuQVFSL0l3QkJJR3NpQWlRQVFRQWhBd0pBQWtBZ0FTMEFKVVVOQUF3QkN3SkFJQUV0QUNRTkFDQUJRUUU2QUNRZ0FrRUlhaUFCRVBvQ0lBXFxcbklvQWd3aEJBSkFJQUlvQWdnaUJVVU5BQ0FFUlEwQUlBVWhBd3dDQ3lBQkxRQWxEUUVMSUFFb0FnUWhBeUFDUVJCcUlBRVFsZ0lDUUFKQVxcXG5JQUlvQWhBTkFDQUJRUUU2QUNVZ0FTZ0NJQ0FCS0FJY0lnRnJJUVFNQVFzZ0FTZ0NJQ0VFSUFFZ0FpZ0NGRFlDSUNBRUlBSkJHR29vQWdcXFxuQWlBV3NoQkFzZ0F5QUJhaUVEQ3lBQUlBUTJBZ1FnQUNBRE5nSUFJQUpCSUdva0FBdk5BUUVDZnlNQVFTQnJJZ1FrQUVFQUlRVUNRQ0FDXFxcbklBTnFJZ01nQWtrTkFDQUJLQUlFSWdKQkFYUWlCU0FESUFVZ0Ewc2JJZ05CQ0NBRFFRaExHeUlEUVg5elFSOTJJUVVDUUFKQUlBSkZEUVxcXG5BZ0JDQUNOZ0lZSUFSQkFUWUNGQ0FFSUFFb0FnQTJBaEFNQVFzZ0JFRUFOZ0lVQ3lBRUlBVWdBeUFFUVJCcUlBUVExQUlnQkNnQ0JDRUZcXFxuQWtBZ0JDZ0NBRVVOQUNBRVFRaHFLQUlBSVFNTUFRc2dBU0FETmdJRUlBRWdCVFlDQUVHQmdJQ0FlQ0VGQ3lBQUlBTTJBZ1FnQUNBRk5nXFxcbklBSUFSQklHb2tBQXZOQVFFQ2Z5TUFRU0JySWdRa0FFRUFJUVVDUUNBQ0lBTnFJZ01nQWtrTkFDQUJLQUlFSWdKQkFYUWlCU0FESUFVZ1xcXG5BMHNiSWdOQkNDQURRUWhMR3lJRFFYOXpRUjkySVFVQ1FBSkFJQUpGRFFBZ0JDQUNOZ0lZSUFSQkFUWUNGQ0FFSUFFb0FnQTJBaEFNQVFcXFxuc2dCRUVBTmdJVUN5QUVJQVVnQXlBRVFSQnFJQVFRMVFJZ0JDZ0NCQ0VGQWtBZ0JDZ0NBRVVOQUNBRVFRaHFLQUlBSVFNTUFRc2dBU0FEXFxcbk5nSUVJQUVnQlRZQ0FFR0JnSUNBZUNFRkN5QUFJQU0yQWdRZ0FDQUZOZ0lBSUFSQklHb2tBQXZzQVFFQmZ5TUFRU0JySWdRa0FBSkFBa1xcXG5BQ1FBSkFBa0FDUUNBQUxRQUFEZ1FCQUFVQ0FRc2dBVVVOQWdzZ0FFRUNPZ0FBSUFRZ0FEWUNDQ0FDS0FJQUlnQXRBQUFoQWlBQVFRQTZcXFxuQUFBZ0FrVU5Ba0VBUVFFUXBRZEJ0SVhBQUJDbUFpQUVRUU02QUF3Z0JFRUlhaERTREFzZ0JFRWdhaVFBRHdzZ0JFRVVha0lBTndJQUlBXFxcblJCQVRZQ0RDQUVRYmlHd0FBMkFnZ2dCRUhnZ3NBQU5nSVFJQVJCQ0dvZ0F4Q1lDQUFMUWNDR3dBQkJLMEc0aDhBQUVJTUhBQXNnQkVFVVxcXG5ha0lBTndJQUlBUkJBVFlDRENBRVFZU0d3QUEyQWdnZ0JFSGdnc0FBTmdJUUlBUkJDR29nQXhDWUNBQUwxd0VDQkg4RGZpQUNRaG1JUXZcXFxuOEFnMEtCZ29TSWtLREFnQUYrSVFrZ0FTZ0NCQ0lGSUFLbmNTRUdJQUVvQWdBaEIwRUFJUWdEUUNBSElBWnFLUUFBSWdvZ0NZVWlBa0ovXFxcbmhTQUNRdi85Ky9mdjM3Ly9mbnlEUW9DQmdvU0lrS0RBZ0grRElRc0NRQU5BQWtBZ0N5SUNRZ0JTRFFBZ0NpQUtRZ0dHZzBLQWdZS0VpSlxcXG5DZ3dJQi9nMUJGRFFJZ0JpQUlRUWhxSWdocUlBVnhJUVlNQXdzZ0FrSi9mQ0FDZ3lFTElBTWdBbnFuUVFOMklBWnFJQVZ4SWdFZ0JDZ0NcXFxuRUJFR0FFVU5BQXNMQ3lBQUlBRTJBZ1FnQUNBQ1FnQlNOZ0lBQzlvQkFRRi9Jd0JCRUdzaUN5UUFJQUFvQWhRZ0FTQUNJQUJCR0dvb0FnXFxcbkFvQWd3UkNRQWhBaUFMUVFBNkFBMGdDeUFDT2dBTUlBc2dBRFlDQ0NBTFFRaHFJQU1nQkNBRklBWVEwd0VnQnlBSUlBa2dDaERUQVNFQlxcXG5JQXN0QUF3aEFnSkFBa0FnQ3kwQURRMEFJQUpCL3dGeFFRQkhJUUFNQVF0QkFTRUFJQUpCL3dGeERRQUNRQ0FCS0FJQUlnQXRBQnhCQkhcXFxuRU5BQ0FBS0FJVVFiZWV6Z0JCQWlBQVFSaHFLQUlBS0FJTUVRa0FJUUFNQVFzZ0FDZ0NGRUcybnM0QVFRRWdBRUVZYWlnQ0FDZ0NEQkVKXFxcbkFDRUFDeUFMUVJCcUpBQWdBQXZoQVFFRGZ5TUFRUkJySWdRa0FDQUVJQUEyQWdnZ0JDQUFJQUZxSWdVMkFnd0NRQ0FFUVFocUVJVURJZ1xcXG5aQmdJREVBRVlOQUFKQUFrQWdBaTBBQTBVTkFDQUFJQUZCTFJEWUJ3MEJJQUFnQVVFdEVOa0hEUUVMQWtBZ0JoQ29CZzBBSUFRZ0JUWUNcXFxuRENBRUlBQTJBZ2dnQWkwQUFTRUdJQUl0QUFBaEFnTkFJQVJCQ0dvUWhRTWlBRUdBZ01RQVJnMERJQVloQVFKQUFrQUNRQ0FBRUtNQ0xRXFxcbkFBRGdnREFnSUJBZ0FDQXdJTElBSWhBUXNnQVVIL0FYRkZEUUVMQ3lBRFFRRTZBQVFNQWdzZ0EwRUJPZ0FEREFFTElBTkJBVG9BQVFzZ1xcXG5CRUVRYWlRQUM4UUJBZ0ovQVg0Q1FBSkFJQUZCdWZQZDhYbHNJQUZCcHJLRmlnTnNJZ2R6clNBRHJTSUpma0lnaUtjaUNDQURUdzBBSUFcXFxuSWdDRUVCZEdvdkFRQWdBV3BCdWZQZDhYbHNJQWR6clNBSmZrSWdpS2NpQXlBRlR3MEJBa0FnQkNBRFFRTjBhaWtDQUNJSnB5QUJSZzBBXFxcbklBQWdCaWdCQURZQkFDQUFRUVJxSUFaQkJHb3ZBUUE3QVFBUEN5QUFRUUU3QVFBZ0FFRUVhaUFKUWpDSVBRRUFJQUFnQ1VJZ2lEMEJBZ1xcXG44TElBZ2dBMEhNeWN3QUVJRUZBQXNnQXlBRlFkekp6QUFRZ1FVQUM5VUJBUUYvQWtBQ1FDQUJSUTBBQWtBQ1FBSkFBa0FDUUFKQUlBSkJcXFxuZjB3TkFDQURLQUlFUlEwRElBTkJDR29vQWdBaUJBMENJQUlOQVNBQklRTU1CUXNnQUVFQU5nSUVEQVlMUVFBdEFQR21UeG9NQWdzZ0F5XFxcbmdDQUNBRUlBRWdBaEN3Q3lFRERBSUxBa0FnQWcwQUlBRWhBd3dDQzBFQUxRRHhwazhhQ3lBQ0lBRVE5d3NoQXdzQ1FDQURSUTBBSUFBZ1xcXG5BellDQkNBQVFRaHFJQUkyQWdBZ0FFRUFOZ0lBRHdzZ0FDQUJOZ0lFSUFCQkNHb2dBallDQUF3QkN5QUFRUUEyQWdRZ0FFRUlhaUFDTmdcXFxuSUFDeUFBUVFFMkFnQUx1d0VCQkg4Q1FDQUFLQUlBSWdFZ0FDZ0NCRWNOQUVHQWdNUUFEd3NnQUNBQlFRRnFOZ0lBQWtBZ0FTMEFBQ0lDXFxcbndFRi9TZzBBSUFBZ0FVRUNhallDQUNBQkxRQUJRVDl4SVFNZ0FrRWZjU0VFQWtBZ0FrSGZBVXNOQUNBRVFRWjBJQU55RHdzZ0FDQUJRUVxcXG5OcU5nSUFJQU5CQm5RZ0FTMEFBa0UvY1hJaEF3SkFJQUpCOEFGUERRQWdBeUFFUVF4MGNnOExJQUFnQVVFRWFqWUNBQ0FEUVFaMElBRXRcXFxuQUFOQlAzRnlJQVJCRW5SQmdJRHdBSEZ5SVFJTElBSUx6d0VCQW44akFFR2dBV3NpQXlRQUFrQUNRQUpBSUFBZ0FSQ01CU0lFUlEwQUlBXFxcblFnQWhDQ0N3MEJDd0pBSUFBb0FtQkZEUUFnQTBISUFHb2dBaEM3QnlBRFFkZ0FhaUFCRUpRRklBTWdBRUhnQUdvZ0EwSElBR29nQTBIWVxcXG5BR29ROEFNZ0F4RHNDZ3NnQTBIWUFHb2dBVUhJQUJDa0RSb2dBMEVJYWlBQ1FRaHFLQUlBTmdJQUlBTWdBaWtDQURjREFDQURRY2dBYWlcXFxuQUFJQU5CMkFCcUlBTVE1UWNnQTBISUFHb1F6QXRCQVNFQURBRUxJQUlRNHd3Z0FVRVVhaERqREVFQUlRQUxJQU5Cb0FGcUpBQWdBQXU3XFxcbkFRRUVmd0pBSUFBb0FnQWlBU0FBS0FJRVJ3MEFRWUNBeEFBUEN5QUFJQUZCQVdvMkFnQUNRQ0FCTFFBQUlnTEFRWDlLRFFBZ0FDQUJRUVxcXG5KcU5nSUFJQUV0QUFGQlAzRWhBeUFDUVI5eElRUUNRQ0FDUWQ4QlN3MEFJQVJCQm5RZ0EzSVBDeUFBSUFGQkEybzJBZ0FnQTBFR2RDQUJcXFxuTFFBQ1FUOXhjaUVEQWtBZ0FrSHdBVThOQUNBRElBUkJESFJ5RHdzZ0FDQUJRUVJxTmdJQUlBTkJCblFnQVMwQUEwRS9jWElnQkVFU2RFXFxcbkdBZ1BBQWNYSWhBZ3NnQWd2aEFRSUJmd0YrSXdCQklHc2lBaVFBQWtBQ1FBSkFBa0FnQVNnQ0FBNERBQUVDQUFzZ0FDQUJLd01JRUlZSFxcXG5EQUlMQWtBQ1FDQUJLUU1JSWdOQ2dJQ0FnQkJVRFFCQkFTRUJJQUpCQVRvQUNDQUNJQU0zQXhBZ0FDQUNRUWhxSUFKQkdHcEJxSUhBQUJcXFxuRHBCRFlDQkF3QkN5QUFJQU0rQWdSQkFDRUJDeUFBSUFFMkFnQU1BUXNDUUFKQUlBRXBBd2dpQTBLQWdJQ0FFRlFOQUNBQ1FRSTZBQWdnXFxcbkFpQUROd01RSUFBZ0FrRUlhaUFDUVJocVFhaUJ3QUFRNlFRMkFnUkJBU0VCREFFTElBQWdBejRDQkVFQUlRRUxJQUFnQVRZQ0FBc2dBa1xcXG5FZ2FpUUFDODBCQVFGL0l3QkJJR3NpQVNRQUlBQVFnd3dnQVVFUWFpQUFFTjRJQWtBQ1FDQUJMUUFRRFFBQ1FBSkFJQUV0QUJGQlZXb09cXFxuQXdBQkFBRUxJQUFRZ3d3TElBRkJDR29nQUJDYUJnSkFJQUV0QUFnTkFBSkFJQUV0QUFsQlVHcEIvd0Z4UVFwSkRRQWdBVUVOTmdJUUlBXFxcbkFnQVVFUWFoRGZDQ0VBREFNTEEwQWdBVUVRYWlBQUVONElJQUV0QUJBTkFnSkFJQUV0QUJGQlVHcEIvd0Z4UVFwUERRQWdBQkNEREF3QlxcXG5Dd3RCQUNFQURBSUxJQUVvQWd3aEFBd0JDeUFCS0FJVUlRQUxJQUZCSUdva0FDQUFDOUlCQVFOL0l3QkJJR3NpQVNRQUlBQW9BZ0FpQWlcXFxuZ0NBQ0VESUFKQkFEWUNBQ0FES0FJb0lRSWdBMEVBTmdJb0FrQWdBa1VOQUNBQklBSVJBZ0FDUUNBQUtBSUVJZ0FvQWdBaUF5Z0NBRVVOXFxcbkFDQURFTmtMSUFBb0FnQWhBd3NnQXlBQktRTUFOd01BSUFOQkdHb2dBVUVZYWlrREFEY0RBQ0FEUVJCcUlBRkJFR29wQXdBM0F3QWdBMFxcXG5FSWFpQUJRUWhxS1FNQU53TUFJQUZCSUdva0FFRUJEd3NnQVVFTWFrSUFOd0lBSUFGQkFUWUNCQ0FCUVpTaHdBQTJBZ0FnQVVIZ2dzQUFcXFxuTmdJSUlBRkI4S0hBQUJDWUNBQUwwZ0VCQTM4akFFRWdheUlCSkFBZ0FDZ0NBQ0lDS0FJQUlRTWdBa0VBTmdJQUlBTW9BaWdoQWlBRFFRXFxcbkEyQWlnQ1FDQUNSUTBBSUFFZ0FoRUNBQUpBSUFBb0FnUWlBQ2dDQUNJREtBSUFSUTBBSUFNUTJnc2dBQ2dDQUNFREN5QURJQUVwQXdBM1xcXG5Bd0FnQTBFWWFpQUJRUmhxS1FNQU53TUFJQU5CRUdvZ0FVRVFhaWtEQURjREFDQURRUWhxSUFGQkNHb3BBd0EzQXdBZ0FVRWdhaVFBUVFcXFxuRVBDeUFCUVF4cVFnQTNBZ0FnQVVFQk5nSUVJQUZCbEtIQUFEWUNBQ0FCUWVDQ3dBQTJBZ2dnQVVId29jQUFFSmdJQUF2SEFRSUNmd0YrXFxcbkl3QkJNR3NpQXlRQUlBRW9BZ2doQkNBQktBSUFJUUVnQTBFUWFpQUNFSUFCQWtBQ1FDQURLQUlRRFFBZ0EwRUlhaUFEUVJ4cUtBSUFJZ1xcXG5JMkFnQWdBMEVnYWtFSWFpQUNOZ0lBSUFNZ0F5a0NGQ0lGTndNQUlBTWdCVGNESUNBQUlBRWdCQ0FEUVNCcUVPc0tEQUVMSUFOQkNHb2dcXFxuQTBFY2FpZ0NBQ0lCTmdJQUlBTWdBeWtDRkNJRk53TUFJQU5CRUdwQkNHb2dBVFlDQUNBRElBVTNBeEFnQTBFUWFoQ3pEU0VCSUFCQkFEXFxcbllDQUNBQUlBRTJBZ1FMSUFOQk1Hb2tBQXZGQVFJQmZ3RitJd0JCTUdzaUJpUUFJQVpCSUdvZ0FpQURFSlFOSUFaQkNHb2dCa0VnYWhDS1xcXG5DaUFHS0FJSUlBWW9BZ3dnQkNBRkVBY2hBeUFHRU1jSklBWkJHR29nQmlnQ0FDSUNJQVlvQWdRZ0F5QUNHeENmQndKQUFrQUNRQUpBSUFcXFxuWXRBQmhCQkVjTkFDQUdLQUljSVFNTUFRc2dCaWtER0NJSFF2OEJnMElFVWcwQklBZENJSWluSVFNTElBWWdBellDRkNBR1FSUnFFSVFMXFxcbklBWkJJR29RekFzZ0FFRUVPZ0FBREFFTElBQWdCemNDQUNBR1FTQnFFTXdMQ3lBR1FUQnFKQUFMMUFFQkJIOGpBRUVnYXlJREpBQUNRQ1xcXG5BQktBSUVJQUpKRFFBZ0EwRUlhaUFCRUtnSkFrQUNRQ0FES0FJTUlnUkZEUUFnQXlnQ0VDRUZJQU1vQWdnaEJnSkFBa0FnQWcwQUFrQWdcXFxuQlVVTkFDQUdJQVVnQkJDeURBc2dCQ0VGREFFTElBWWdCU0FFSUFJUXNBc2hCUXNnQlVVTkFTQUJJQUkyQWdRZ0FTQUZOZ0lBQzBHQmdJXFxcbkNBZUNFRUN5QUFJQUkyQWdRZ0FDQUVOZ0lBSUFOQklHb2tBQThMSUFOQkZHcENBRGNDQUNBRFFRRTJBZ3dnQTBHUXI4QUFOZ0lJSUFOQlxcXG43SzdBQURZQ0VDQURRUWhxUWVTdndBQVFtQWdBQzhRQkFRUi9Jd0JCRUdzaUFTUUFJQUVnQUNrQ0FEY0RDQ0FCUVFocUVNZ0pJUUJCQUNcXFxuRUNJQUZCQ0dvUXlBa2hBeUFCUVFocUVNZ0pJUVFDUUNBQVFZQ0F4QUJHRFFBZ0EwR0FnTVFBUmcwQUlBQkIzLy8vQUhGQnYzOXFJUUFDXFxcblFDQUVRWUNBeEFCSERRQWdBRUVhVHcwQklBTkIvQUJHSUFOQk9rWnlJUUlNQVFzZ0FFRVpTdzBBQWtBZ0EwSDhBRVlOQUNBRFFUcEhEUVxcXG5FTElBUkJYV29pQUVFNVN3MEFRb0dnZ0lDQmdJQ0FBaUFBcllpblFRRnhJUUlMSUFGQkVHb2tBQ0FDQzhJQkFRSi9Jd0JCMEFCcklnTWtcXFxuQUFKQUFrQWdBa1VOQUVFQklRUWdBUzBBQUVFdlJnMEJDMEVBSVFRTElBTWdCRG9BTGlBRFFRWTZBQmdnQXlBQ05nSVVJQU1nQVRZQ0VDXFxcbkFEUVlBRU93RXNJQU5CTUdvZ0EwRVFhaEE0UVFBaEFnSkFBa0FnQXkwQU1DSUJRUXBIRFFBTUFRc0NRQ0FCUVhwcVFmOEJjU0lFUVFOTlxcXG5EUUFNQVFzZ0JFRi9ha0VDU3cwQUlBTkJDR29nQTBFUWFoQTlJQU1vQWd3aEFTQURLQUlJSVFJTElBQWdBVFlDQkNBQUlBSTJBZ0FnQTBcXFxuSFFBR29rQUF1NEFRRUZmMEVBSVFSQkFDQUJLQUlFSWdVZ0FTZ0NDQ0lHYXlJSElBY2dCVXNiSVFVZ0JrRUJhaUVJSUFFb0FnQWdCbW9oXFxcbkJ3TkFBa0FDUUFKQUFrQWdCU0FFUmcwQUlBY2dCR290QUFBaUJrRlFha0gvQVhGQkNra05BeUFHUVM1R0RRRWdCa0hGQUVZTkFpQUdRZVxcXG5VQVJnMENJQVFoQlFzZ0FDQUJJQUlnQXlBRkVNY0NEd3NnQUNBQklBSWdBeUFFRU9rQkR3c2dBQ0FCSUFJZ0F5QUVFS0FCRHdzZ0FTQUlcXFxuSUFScU5nSUlJQVJCQVdvaEJBd0FDd3U0QVFFRmYwRUFJUVJCQUNBQktBSUVJZ1VnQVNnQ0NDSUdheUlISUFjZ0JVc2JJUVVnQmtFQmFpXFxcbkVJSUFFb0FnQWdCbW9oQndOQUFrQUNRQUpBQWtBZ0JTQUVSZzBBSUFjZ0JHb3RBQUFpQmtGUWFrSC9BWEZCQ2trTkF5QUdRUzVHRFFFZ1xcXG5Ca0hGQUVZTkFpQUdRZVVBUmcwQ0lBUWhCUXNnQUNBQklBSWdBeUFGRU1rQ0R3c2dBQ0FCSUFJZ0F5QUVFT29CRHdzZ0FDQUJJQUlnQXlcXFxuQUVFS01CRHdzZ0FTQUlJQVJxTmdJSUlBUkJBV29oQkF3QUN3dlZBUUlDZndOK0l3QkIwQUJySWdVa0FBSkFJQU1OQUNBQ0tBSVlJUU1nXFxcbkFpa0NDQ0VISUFJcEFoQWhDQ0FDS1FJQUlRa2dCUkREQ1NBRktBSUFJUUlnQlNnQ0JDRUdJQVZCTEdvZ0NUY0NBQ0FGUVNCcUlBZzNBd1xcXG5BZ0JVRVVhaUFITndJQUlBVkJ4QUJxSUFBcEFoQTNBZ0FnQlVFOGFpQUFLUUlJTndJQUlBVWdBVFlDS0NBRlFRQTJBaHdnQlVFQU5nSVFcXFxuSUFWQkFUWUNDQ0FGSUFNMkFnd2dCU0FBS1FJQU53STBJQUlnQlVFSWFpQUdLQUlVRVFVQUlBVkIwQUJxSkFBUEMwSFEyc0FBUWRVQVFhXFxcbmpid0FBUWd3Y0FDN29CQVFSL1FRQWhCQUpBSUFKQkFra05BQUpBSUFFdEFBZ2lCU0FCTFFBQVNRMEFJQUZCRUdvaEJrRUNJUUVEUUNBQ1xcXG5JQUZHRFFJZ0JVSC9BWEVoQndKQUlBWXRBQUFpQlNBSFR3MEFJQUVoQWd3REN5QUdRUWhxSVFZZ0FVRUJhaUVCREFBTEN5QUJRUkJxSVFcXFxuWkJBaUVCUVFFaEJBTkFJQUlnQVVZTkFTQUZRZjhCY1NFSEFrQWdCaTBBQUNJRklBZEpEUUFnQVNFQ0RBSUxJQVpCQ0dvaEJpQUJRUUZxXFxcbklRRU1BQXNMSUFBZ0JEb0FCQ0FBSUFJMkFnQUx6d0VCQVg4akFFRVFheUlISkFBZ0FDZ0NGQ0FCSUFJZ0FFRVlhaWdDQUNnQ0RCRUpBQ1xcXG5FQ0lBZEJBRG9BRFNBSElBSTZBQXdnQnlBQU5nSUlJQWRCQ0dvZ0F5QUVJQVVnQmhEVEFTRUJJQWN0QUF3aEFnSkFBa0FnQnkwQURRMEFcXFxuSUFKQi93RnhRUUJISVFBTUFRdEJBU0VBSUFKQi93RnhEUUFDUUNBQktBSUFJZ0F0QUJ4QkJIRU5BQ0FBS0FJVVFiZWV6Z0JCQWlBQVFSXFxcbmhxS0FJQUtBSU1FUWtBSVFBTUFRc2dBQ2dDRkVHMm5zNEFRUUVnQUVFWWFpZ0NBQ2dDREJFSkFDRUFDeUFIUVJCcUpBQWdBQXUxQVFFRFxcXG5md0pBQWtBZ0FrRVBTdzBBSUFBaEF3d0JDeUFBUVFBZ0FHdEJBM0VpQkdvaEJRSkFJQVJGRFFBZ0FDRURBMEFnQXlBQk9nQUFJQU5CQVdcXFxub2lBeUFGU1EwQUN3c2dCU0FDSUFScklnUkJmSEVpQW1vaEF3SkFJQUpCQVVnTkFDQUJRZjhCY1VHQmdvUUliQ0VDQTBBZ0JTQUNOZ0lBXFxcbklBVkJCR29pQlNBRFNRMEFDd3NnQkVFRGNTRUNDd0pBSUFKRkRRQWdBeUFDYWlFRkEwQWdBeUFCT2dBQUlBTkJBV29pQXlBRlNRMEFDd1xcXG5zZ0FBdTdBUUVEZnlNQVFTQnJJZ0lrQUNBQlFTQnFLQUlBSVFNZ0FrRVFhaUFBUVFFZ0FVRW9haWdDQUNJQkVKc0RJQUlvQWhBaEFBSkFcXFxuSUFJdEFCUWlCRUVEUmcwQUlBSWdCRG9BRENBQ0lBQTJBZ2dnQVVFSGRDRUJBa0FEUUNBRFJRMEJJQUZGRFFFZ0FpQUROZ0ljSUFJZ0EwXFxcbkhJQUdvMkFoQWdBVUdBZjJvaEFTQURRWUFCYWlFRElBSkJDR29nQWtFY2FpQUNRUkJxRUs4RklnQkZEUUFNQWdzTElBSW9BZ2dnQWkwQVxcXG5EQkRuQmlFQUN5QUNRU0JxSkFBZ0FBdTRBUUVEZnlNQVFTQnJJZ0lrQUNBQlFTQnFLQUlBSVFNZ0FrRVFhaUFBUVFFZ0FVRW9haWdDQUNcXFxuSUJFSnNESUFJb0FoQWhBQUpBSUFJdEFCUWlCRUVEUmcwQUlBSWdCRG9BRENBQ0lBQTJBZ2dnQVVFY2JDRUJBa0FEUUNBRFJRMEJJQUZGXFxcbkRRRWdBaUFETmdJY0lBSWdBMEVNYWpZQ0VDQUJRV1JxSVFFZ0EwRWNhaUVESUFKQkNHb2dBa0VjYWlBQ1FSQnFFTmtFSWdCRkRRQU1BZ1xcXG5zTElBSW9BZ2dnQWkwQURCRG5CaUVBQ3lBQ1FTQnFKQUFnQUF1OEFRRURmeU1BUVNCcklnSWtBQ0FCUVNCcUtBSUFJUU1nQWtFUWFpQUFcXFxuUVFFZ0FVRW9haWdDQUNJQkVKc0RJQUlvQWhBaEFBSkFJQUl0QUJRaUJFRURSZzBBSUFJZ0JEb0FEQ0FDSUFBMkFnZ2dBVUhZQUd3aEFRXFxcbkpBQTBBZ0EwVU5BU0FCUlEwQklBSWdBellDSENBQ0lBTkJ5QUJxTmdJUUlBRkJxSDlxSVFFZ0EwSFlBR29oQXlBQ1FRaHFJQUpCSEdvZ1xcXG5Ba0VRYWhEYkNpSUFSUTBBREFJTEN5QUNLQUlJSUFJdEFBd1E1d1loQUFzZ0FrRWdhaVFBSUFBTHh3RUJBWDhqQUVFd2F5SURKQUFnQXlcXFxuQUNOZ0lFSUFNZ0FUWUNBQUpBQWtBZ0FDMEFBRUVIUncwQUlBTkJGR3BDQVRjQ0FDQURRUUUyQWd3Z0EwR2MwY0FBTmdJSUlBTkJCVFlDXFxcbkpDQURJQU5CSUdvMkFoQWdBeUFETmdJZ0lBTkJDR29RMWdNaEFBd0JDeUFEUVNCcVFReHFRUVUyQWdBZ0EwRUlha0VNYWtJQ053SUFJQVxcXG5OQkFqWUNEQ0FEUWV6UXdBQTJBZ2dnQTBFR05nSWtJQU1nQURZQ0lDQURJQU5CSUdvMkFoQWdBeUFETmdJb0lBTkJDR29RMWdNaEFBc2dcXFxuQTBFd2FpUUFJQUFMeXdFQ0FuOEJmaU1BUVRCcklnUWtBQ0FFSUFNMkFnd2dCQ0FDTmdJSUEwQWdCRUVRYWlBRVFRaHFFTWNEQWtBQ1FBXFxcbkpBSUFRb0FoQWlCVUVqUmcwQUFrQWdCVUUvUmcwQUlBVkJnSURFQUVjTkF5QUVLQUlNSVFNZ0JDZ0NDQ0VDREFJTElBRXRBQ0JGRFFFTVxcXG5BZ3NnQVMwQUlBMEJDeUFBSUFNMkFnUWdBQ0FDTmdJQUlBUkJNR29rQUE4TElBUXBBaFFoQmlBQklBVWdCRUVJYWhEWUFTQUVRWXlId1FcXFxuQTJBaWdnQkNBR053TWdJQUVnQkVFZ2FoRG1CU0FFS0FJTUlRTWdCQ2dDQ0NFQ0RBQUxDN2dCQVFOL0FrQUNRQUpBSUFGQkJFa05BQ0FBXFxcblFRTnFRWHh4SWdJZ0FHc2lBeUFCVFEwQkN5QUFRWDlxSVFBRFFDQUJSU0VFSUFGRkRRSWdBQ0FCYWlFQ0lBRkJmMm9oQVNBQ0xBQUFRUVxcXG5CT0RRQU1BZ3NMUVFBaEJDQUFLQUFBUVlDQmdvUjRjUTBBUVFRZ0F5QUNJQUJHR3lFQ0lBRkJmR29oQVFOQUFrQWdBaUFCU1EwQUlBQWdcXFxuQVdvb0FBQkJnSUdDaEhoeFJTRUVEQUlMSUFBZ0Ftb29BZ0JCZ0lHQ2hIaHhEUUVnQWtFRWFpRUNEQUFMQ3lBRUM4UUJBUUovSXdCQkVHXFxcbnNpQkNRQUlBRkJFR3BCQURvQUFDQUJRUXhxSWdVZ0JTZ0NBRUVCYWpZQ0FDQUJLQUlBUWQ2WndBQkJBUkNJRENBRVFRUTZBQWdDUUFKQVxcXG5Ba0FnQkVFSWFoQzlCeUlGRFFBQ1FDQUNSUTBBSUFORkRRSUxJQUJCQVRvQUJDQUFJQUUyQWdBTUFnc2dBRUVET2dBRUlBQWdCVFlDQUFcXFxud0JDeUFFUVFocUlBRkJCR29nQVJDTEJRSkFJQVJCQ0dvUXZRY2lCUTBBSUFCQkFEb0FCQ0FBSUFFMkFnQU1BUXNnQUVFRE9nQUVJQUFnXFxcbkJUWUNBQXNnQkVFUWFpUUFDOEVCQVFOL0l3QkJJR3NpQlNRQUlBVkJFR29nQVNBQ0lBTVErZ01DUUFKQUlBVW9BaEFpQWcwQUlBVWdCQlxcXG5DNkJpQUFJQVVwQXdBM0FnUWdBRUVBTmdJQURBRUxRUUF0QVBHbVR4b2dCU2dDR0NFQkFrQWdCU2dDRkNJR0lBSVE5d3NpQjBVTkFDQUFcXFxuUVFBMkFnd2dBQ0FEUVg5cUlnSTJBZ1FnQUNBSElBRnFOZ0lBSUFBZ0FpQURRUU4yUVFkc0lBSkJDRWtiTmdJSURBRUxJQVZCQ0dvZ0JDXFxcbkFDSUFZUWxnb2dBQ0FGS1FNSU53SUVJQUJCQURZQ0FBc2dCVUVnYWlRQUM4VUJBUU4vSXdCQk1Hc2lBeVFBSUFOQkVHb2dBU0FDRUowSFxcXG5JQU1nQXlnQ0ZDSUNOZ0ljSUFNZ0F5Z0NFQ0lCTmdJWUlBTkJJR29nQVNBQ0VOb0JJQU1vQWlnaEJDQURLQUlrSVFJZ0F5Z0NJQ0VCSUFcXFxuTkJHR29RNlFzQ1FBSkFJQUVOQUVFQklRRU1BUXNnQXlBRU5nSW9JQU1nQWpZQ0pDQURJQUUyQWlBZ0EwRUlhaUFEUVNCcUVQTUtJQU1vXFxcbkFnd2hCQ0FES0FJSUlRVkJBQ0VDUVFBaEFRc2dBQ0FCTmdJTUlBQWdBallDQ0NBQUlBUTJBZ1FnQUNBRk5nSUFJQU5CTUdva0FBdkRBUVxcXG5FQ2Z5TUFRVEJySWdja0FDQUhRUmhxSUFFUTV3Y2dCeWdDSENFQklBY29BaGdoQ0NBSFFSQnFJQUlnQXhDZEJ5QUhJQWNvQWhRaUF6WUNcXFxuSkNBSElBY29BaEFpQWpZQ0lDQUhRUWhxSUFVZ0JoQ2RCeUFISUFjb0Fnd2lCallDTENBSElBY29BZ2dpQlRZQ0tDQUhJQWdnQWlBRElBXFxcblFnQlNBR0VOUUJJQWNvQWdRaEFpQUhLQUlBSVFNZ0IwRW9haERwQ3lBSFFTQnFFT2tMSUFFZ0FTZ0NBRUYvYWpZQ0FDQUFJQU0yQWdRZ1xcXG5BQ0FDUVFBZ0F4czJBZ0FnQjBFd2FpUUFDOE1CQVFKL0l3QkJNR3NpQnlRQUlBZEJHR29nQVJEb0J5QUhLQUljSVFFZ0J5Z0NHQ0VJSUFcXFxuZEJFR29nQWlBREVKMEhJQWNnQnlnQ0ZDSUROZ0lrSUFjZ0J5Z0NFQ0lDTmdJZ0lBZEJDR29nQlNBR0VKMEhJQWNnQnlnQ0RDSUdOZ0lzXFxcbklBY2dCeWdDQ0NJRk5nSW9JQWNnQ0NBQ0lBTWdCQ0FGSUFZUTFRRWdCeWdDQkNFQ0lBY29BZ0FoQXlBSFFTaHFFT2tMSUFkQklHb1E2UVxcXG5zZ0FTQUJLQUlBUVg5cU5nSUFJQUFnQXpZQ0JDQUFJQUpCQUNBREd6WUNBQ0FIUVRCcUpBQUx4UUVCQTM4akFFRVFheUlCSkFBQ1FBSkFcXFxuQWtBRFFBSkFBa0FDUUNBQUtBSUlJZ0lnQUNnQ0JDSURUdzBBQWtBZ0FDZ0NBQ0FDYWkwQUFDSURRY3pWd0FCcUxRQUFEUUFnQUNBQ1FRXFxcbkZxTmdJSURBUUxJQU5CM0FCR0RRSWdBMEVpUmcwQklBRkJFRFlDQUF3RkN5QUNJQU5HRFFNZ0FpQURRYXpWd0FBUWdRVUFDeUFBSUFKQlxcXG5BV28yQWdoQkFDRUNEQVFMSUFBZ0FrRUJhallDQ0NBQUVLd0VJZ0pGRFFBTUF3c0xJQUZCQkRZQ0FBc2dBQ0FCRU9BSUlRSUxJQUZCRUdcXFxub2tBQ0FDQzhJQkFRSi9Jd0JCSUdzaUFpUUFBa0FDUUFKQUlBRkZEUUFnQVNnQ0FDRURJQUZCQURZQ0FDQUREUUVMSUFKQkNHb1FxQUVNXFxcbkFRc2dBa0VZYWlBQlFSUnFLQUlBTmdJQUlBSkJFR29nQVVFTWFpa0NBRGNEQUNBQ0lBRXBBZ1EzQXdnTElBQWdBaWtEQ0RjQ0JDQUFLQVxcXG5JQUlRRWdBRUVCTmdJQUlBQkJER29nQWtFUWFpa0RBRGNDQUNBQVFSUnFJQUpCR0dvb0FnQTJBZ0FnQUVFRWFpRUFBa0FnQVVVTkFFRUFcXFxuUVFBb0F2eW1UMEYvYWpZQy9LWlBDeUFDUVNCcUpBQWdBQXZJQVFFRGZ5TUFRU0JySWdFa0FDQUFLQUlBSWdJb0FnQWhBeUFDSUFBb0FnXFxcblEyQWdBZ0FTQURRUU54SWdBMkFnUUNRQUpBQWtBZ0FFRUJSdzBBSUFOQmYyb2hBQU5BSUFCRkRRSWdBQ2dDQkNFQ0lBQW9BZ0FoQXlBQVxcXG5RUUEyQWdBZ0EwVU5BeUFBUVFFNkFBZ2dBU0FETmdJSUlBTkJDR29RaGc0UXR3NGdBVUVJYWhEd0NTQUNJUUFNQUFzTElBRkJBRFlDQ0VcXFxuRUFJQUZCQkdwQm5PVEFBQ0FCUVFocVFmamt3QUFRdUFVQUN5QUJRU0JxSkFBUEMwSGc0OEFBUVN0QmlPWEFBQkNEQndBTHRRRUJCMzhqXFxcbkFFRVFheUlCSkFBZ0FDZ0NDRUVCYWlFQ0lBQW9BZ0FoQXlBQUtBSUVJUVJCQVNFRkFrQUNRQUpBQWtBRFFDQUZJUVlnQUNBQ05nSUlJQVxcXG5JZ0JFOE5BU0FESUFKcUlRZEJBQ0VGSUFKQkFXb2hBaUFITFFBQUlnZEJVR3BCL3dGeFFRcEpEUUFMSUFaQkFYRU5BU0FIUVNCeVFlVUFcXFxuUmcwQ1FRQWhBZ3dEQzBFQUlRSWdCa0VCY1VVTkFnc2dBVUVOTmdJQUlBQWdBUkRPQ0NFQ0RBRUxJQUFRd3dJaEFnc2dBVUVRYWlRQUlBXFxcbklMd3dFQkEzOGpBRUVnYXlJRUpBQkJBQ0VGQWtBZ0FpQURhaUlESUFKSkRRQWdBMEhZQUd3aEFpQURRWmk2MFF0SlFRSjBJUVVDUUFKQVxcXG5JQUVvQWdRaUJrVU5BQ0FFUVFRMkFoUWdCQ0FHUWRnQWJEWUNHQ0FFSUFFb0FnQTJBaEFNQVFzZ0JFRUFOZ0lVQ3lBRUlBVWdBaUFFUVJcXFxuQnFJQUVRMUFJZ0JDZ0NCQ0VGQWtBZ0JDZ0NBRVVOQUNBRVFRaHFLQUlBSVFNTUFRc2dBU0FETmdJRUlBRWdCVFlDQUVHQmdJQ0FlQ0VGXFxcbkN5QUFJQU0yQWdRZ0FDQUZOZ0lBSUFSQklHb2tBQXZCQVFFRGZ5TUFRU0JySWdRa0FFRUFJUVVDUUNBQ0lBTnFJZ01nQWtrTkFDQURRUVxcXG5kMElRSWdBMEdBZ0lBSVNVRURkQ0VGQWtBQ1FDQUJLQUlFSWdaRkRRQWdCRUVJTmdJVUlBUWdCa0VIZERZQ0dDQUVJQUVvQWdBMkFoQU1cXFxuQVFzZ0JFRUFOZ0lVQ3lBRUlBVWdBaUFFUVJCcUlBRVExQUlnQkNnQ0JDRUZBa0FnQkNnQ0FFVU5BQ0FFUVFocUtBSUFJUU1NQVFzZ0FTXFxcbkFETmdJRUlBRWdCVFlDQUVHQmdJQ0FlQ0VGQ3lBQUlBTTJBZ1FnQUNBRk5nSUFJQVJCSUdva0FBdkJBUUVEZnlNQVFTQnJJZ1FrQUVFQVxcXG5JUVVDUUNBQ0lBTnFJZ01nQWtrTkFDQURRUnhzSVFJZ0EwR2xrc2trU1VFQ2RDRUZBa0FDUUNBQktBSUVJZ1pGRFFBZ0JFRUVOZ0lVSUFcXFxuUWdCa0VjYkRZQ0dDQUVJQUVvQWdBMkFoQU1BUXNnQkVFQU5nSVVDeUFFSUFVZ0FpQUVRUkJxSUFFUTFBSWdCQ2dDQkNFRkFrQWdCQ2dDXFxcbkFFVU5BQ0FFUVFocUtBSUFJUU1NQVFzZ0FTQUROZ0lFSUFFZ0JUWUNBRUdCZ0lDQWVDRUZDeUFBSUFNMkFnUWdBQ0FGTmdJQUlBUkJJR1xcXG5va0FBdTVBUUVDZnlNQVFiQUJheUlFSkFBZ0FTZ0NFQ0VGSUFRZ0FVRVlhaWdDQURZQ1FDQUVJQVUyQWp3Z0JDQUROZ0k0SUFRZ0FTQUNcXFxuclNBRVFUaHFFS29HQWtBQ1FDQUVLQUlBRFFBZ0FFRUNOZ0lBREFFTElBUkJPR29nQVNBRUtBSUVJZ01RMWdFZ0FDQUVRVGhxUWNnQUVLXFxcblFOSVFFZ0JFRUlhaUFFUVRocVFjZ0Fha0V3RUtRTkdpQUVRVHhxSUFSQkNHcEJNQkNrRFJvZ0FTQUROZ0pJSUFGQnpBQnFJQVJCT0dwQlxcXG5OQkNrRFJvTElBUkJzQUZxSkFBTDBnRUJCbjhqQUVFZ2F5SURKQUFDUUFKQUFrQWdBU2dDQkNJRUlBSkpEUUJCZ1lDQWdIZ2hCU0FFRFFcXFxuRU1BZ3NnQTBFVWFrSUFOd0lBSUFOQkFUWUNEQ0FEUWV6ZndBQTJBZ2dnQTBISTM4QUFOZ0lRSUFOQkNHcEJ3T0RBQUJDWUNBQUxJQVJCXFxcbkJuUWhCaUFCS0FJQUlRY0NRQUpBSUFJTkFFSEFBQ0VJSUFkQndBQWdCaEMxQ3d3QkMwSEFBQ0VGSUFjZ0JrSEFBQ0FDUVFaMElnUVFzQVxcXG5zaUNFVU5BUXNnQVNBQ05nSUVJQUVnQ0RZQ0FFR0JnSUNBZUNFRkN5QUFJQVEyQWdRZ0FDQUZOZ0lBSUFOQklHb2tBQXZFQVFFQmZ5TUFcXFxuUVRCcklnTWtBQ0FESUFJMkFnd2dBeUFCTmdJSUlBTkJFR29nQUJET0F5QURRUUE2QUNBZ0F5QUFRUnhxS0FJQU5nSWtJQU5CSUdwQjJKXFxcbkRCQUJEOUJpRUNJQU1nQUJDMkJ6b0FIaUFESUFBUTlRY2dBeUFES0FJQUlBTW9BZ1FRNUFWQi93RnhPZ0FmSUFCQkZHb2dBQ2dDTUJDZ1xcXG5CaUFESUFOQkgybzJBaWdnQXlBRFFRaHFOZ0lrSUFNZ0EwRWVhallDSUNBQUlBTkJJR29RMndFZ0FDQUNJQU1vQWhBZ0F5Z0NHQkRQQkNcXFxuQURRUkJxRUlvTklBTkJNR29rQUF2TkFRSUNmd0YrSXdCQklHc2lCQ1FBUVlDVTY5d0RJUVVDUUFKQUlBRXBBd0FpQmlBQ2ZDSUNJQVphXFxcbkRRQU1BUXNDUUNBQlFRaHFLQUlBSUFOcUlnRkIvNVByM0FOTkRRQWdBa0lCZkNJQ1VBMEJJQUZCZ095VW8zeHFJUUVMQWtBZ0FpQUJRWVxcXG5DVTY5d0RiaUlGclh3aUJpQUNXZzBBSUFSQkZHcENBRGNDQUNBRVFRRTJBZ3dnQkVHVTRjMEFOZ0lJSUFSQitPRE5BRFlDRUNBRVFRaHFcXFxuUWVUaHpRQVFtQWdBQ3lBQklBVkJnSlRyM0FOc2F5RUZDeUFBSUFVMkFnZ2dBQ0FHTndNQUlBUkJJR29rQUF1NUFRRUNmeU1BUWRBQWF5XFxcbklGSkFBZ0JTQUJJQUlnQXhDM0F5QUZLQUlFSVFZQ1FBSkFBa0FnQlNnQ0FBMEFJQUZCR0dvb0FnQWlBaUFHVFEwQ0lBQkJDR29nQVNnQ1xcXG5FQ0FHUVFkMGFrSElBR29pQVVFd0VLUU5HaUFCSUFSQk1CQ2tEUm9nQUNBR05nSUFJQU5CRkdvUTR3d01BUXNnQlVFSWFpQURRY2dBRUtcXFxuUU5HaUFCSUFJZ0JVRUlhaUFFRU1FRElBQkJHR3BCQURZQ0FDQUFJQVkyQWdBTElBVkIwQUJxSkFBUEN5QUdJQUpCekozQUFCQ0JCUUFMXFxcbnV3RUJBMzhqQUVFZ2F5SUZKQUFnQlVFUWFpQUJJQUlnQXhDWEJBSkFBa0FnQlNnQ0VDSUNEUUFnQlNBRUVMc0dJQUFnQlNrREFEY0NCQ1xcXG5BQVFRQTJBZ0FNQVFzZ0JTZ0NHQ0VCQWtBZ0JTQUNJQVVvQWhRaUJoRFBDaUlIUlEwQUlBQkJBRFlDRENBQUlBTkJmMm9pQWpZQ0JDQUFcXFxuSUFjZ0FXbzJBZ0FnQUNBQ0lBTkJBM1pCQjJ3Z0FrRUlTUnMyQWdnTUFRc2dCVUVJYWlBRUlBSWdCaEN2Q2lBQUlBVXBBd2czQWdRZ0FFXFxcbkVBTmdJQUN5QUZRU0JxSkFBTHZRRUJCWDhqQUVFUWF5SUNKQUFDUUFKQUlBRXRBQ1ZGRFFCQkFDRUREQUVMSUFFb0FnUWhCQ0FDSUFFUVxcXG40QUVDUUNBQ0tBSUFEUUJCQUNFREFrQWdBUzBBSlVVTkFBd0NDeUFCUVFFNkFDVWdBU2dDSENFRUlBRW9BaUFoQlFKQUlBRXRBQ1FOQUNcXFxuQUZJQVJHRFFJTElBVWdCR3NoQmlBQktBSUVJQVJxSVFNTUFRc2dBU2dDSENFRElBRWdBa0VJYWlnQ0FEWUNIQ0FDS0FJRUlBTnJJUVlnXFxcbkJDQURhaUVEQ3lBQUlBWTJBZ1FnQUNBRE5nSUFJQUpCRUdva0FBdXlBUUVFZjBFQUlRUUNRQ0FDUVFKSkRRQUNRQ0FCS0FJSUlnVWdBU1xcXG5nQ0FFa05BQ0FCUVJCcUlRWkJBaUVCQTBBZ0FpQUJSZzBDQWtBZ0JpZ0NBQ0lISUFWUERRQWdBU0VDREFNTElBWkJDR29oQmlBQlFRRnFcXFxuSVFFZ0J5RUZEQUFMQ3lBQlFSQnFJUVpCQWlFQlFRRWhCQU5BSUFJZ0FVWU5BUUpBSUFZb0FnQWlCeUFGU1EwQUlBRWhBZ3dDQ3lBR1FRXFxcbmhxSVFZZ0FVRUJhaUVCSUFjaEJRd0FDd3NnQUNBRU9nQUVJQUFnQWpZQ0FBdlNBUUVCZnlNQVFTQnJJZ0lrQUNBQ1FRaHFJQUVRdGdRQ1xcXG5RQUpBQWtBQ1FDQUNMUUFJRFFBZ0FpMEFDVVVOQWlBQ0xRQUtRZjhCY1VIdUFFY05BaUFCSUFFb0FnaEJBV28yQWdnZ0FVR0hnTUFBUVFcXFxuTVF3d01pQVEwQklBQkJnSlRyM0FNMkFnZ01Bd3NnQWlnQ0RDRUJDeUFBUVlHVTY5d0ROZ0lJSUFBZ0FUWUNBQXdCQ3lBQ1FSQnFJQUVRXFxcbjZ3TUNRQ0FDS0FJWUlnRkJnSlRyM0FOR0RRQWdBQ0FCTmdJSUlBQWdBaWtERURjREFBd0JDeUFBUVlHVTY5d0ROZ0lJSUFBZ0FpZ0NFRFxcXG5ZQ0FBc2dBa0VnYWlRQUM4VUJBZ0ovQVg0akFFRWdheUlDSkFBZ0FpQUFRZ0JCQUJDOEFnSkFBa0FnQWlrREFFSUFVZzBBSUFKQkVHb29cXFxuQWdBaEF5QUNLUU1JSVFRZ0FpQUJRUUZCQWhDYkF5QUNLQUlBSVFBZ0FpMEFCQ0lCUVFOR0RRRWdBaUFCT2dBY0lBSWdBRFlDR0NBQ0lBXFxcblEzQXdBZ0FrRVlha0d1ZzhBQVFSQWdBaENIQkNJQURRRWdBaUFETmdJQUlBSkJHR3BCbllQQUFFRVJJQUlRaUFRaUFBMEJJQUlvQWhnZ1xcXG5BaTBBSEJEbkJpRUFEQUVMUVptVHdBQkJLQkNwQnlFQUN5QUNRU0JxSkFBZ0FBdkdBUUlFZndGK0l3QkJJR3NpQWlRQUlBSkJDR29nQVVcXFxuRUlhaERVQjBFQUlRTWdBaWdDRENFRVFRQWhCUUpBQWtBQ1FBSkFBa0FDUUNBQ0tBSUlEZ01CQUFJQkN5QUFJQVFRN3cwMkFnUU1Bd3NnXFxcbkFpQUVFTDRHSUFJb0FnQWhCU0FDS0FJRUlRUWdBUkNHQ3lBQklBUTJBZ1FnQVVFQk5nSUFJQUpCRUdvZ0JSQ1JCQ0FDS0FJUUlnVkZEUVxcXG5FZ0Fpa0NGQ0VHQ3lBQUlBVTJBZ1FnQUVFSWFpQUdOd0lBREFJTElBQWdBaWdDRkRZQ0JBdEJBU0VEQ3lBQUlBTTJBZ0FnQWtFZ2FpUUFcXFxuQzdNQkFRWi9Jd0JCRUdzaUFpUUFRUWdoQXdKQUFrQWdBQ2dDUkNJRVFRaExEUUFnQUVIRUFHb2hCU0FBUVFScUlRWWdCQ0VIREFFTElBXFxcbkJCQkdvaEJTQUFLQUlFSVFjZ0FDZ0NDQ0VHSUFRaEF3c0NRQ0FISUFOSERRQWdBa0VJYWlBQVFRRVE0d01nQWlnQ0NDQUNLQUlNRUxRSlxcXG5JQUJCQkdvaEJTQUFLQUlFSVFjZ0FDZ0NDQ0VHQ3lBR0lBZEJBM1JxSWdCQkFEb0FCQ0FBSUFFMkFnQWdCU0FGS0FJQVFRRnFOZ0lBSUFcXFxuSkJFR29rQUF1NkFRRUZmeU1BUWRBQWF5SUNKQUFnQWtFUWFpQUJFSzBEQWtBQ1FDQUNLQUlRSWdNTkFDQUFRUUEyQWdnZ0FFSUVOd0lBXFxcbkRBRUxJQUlvQWhRaEJDQUNRUWhxUVFSQkFCRDRCU0FDS0FJTUlRVWdBaWdDQ0NJR0lBUTJBZ1FnQmlBRE5nSUFJQUpCR0dwQkNHb2lBMFxcXG5FQk5nSUFJQUlnQlRZQ0hDQUNJQVkyQWhnZ0FrRW9haUFCUVNnUXBBMGFJQUpCR0dvZ0FrRW9haER3QkNBQVFRaHFJQU1vQWdBMkFnQWdcXFxuQUNBQ0tRTVlOd0lBQ3lBQ1FkQUFhaVFBQzdNQkFRWi9Jd0JCTUdzaUJDUUFJQVJCQ0dvZ0F5QUJJQUlRMHdVZ0JDZ0NEQ0lGSUFRb0FoXFxcbmhxSVFZZ0JDZ0NDQ0VISUFRb0FoUWhBd0pBQWtBRFFDQUVJQVkyQWl3Z0JDQUZJQU5xSWdnMkFpZ2dCQ0FFUVNocUVJOENJQVFvQWdCRlxcXG5EUUVnQkNnQ0JDSUpRWUNBeEFCR0RRRWdDU0FIUncwQ0lBTWdCbW9nQ0NBRUtBSXNhbXNnQkNnQ0tHb2hBd3dBQ3dzZ0FpRURDeUFBSUFcXFxuSWdBMnMyQWdRZ0FDQUJJQU5xTmdJQUlBUkJNR29rQUF2QUFRRUJmeU1BUVNCcklnVWtBQUpBQWtBZ0FTQURWQTBBSUFFZ0EzMGhBd0pBXFxcbklBSWdCRThOQUNBRFVBMEJJQUpCZ0pUcjNBTnFJUUlnQTBKL2ZDRURDeUFESUFJZ0JHc2lBa0dBbE92Y0EyNGlCSzE4SWdFZ0ExUU5BU1xcXG5BQUlBRTNBd0FnQUNBQ0lBUkJnSlRyM0FOc2F6WUNDQ0FGUVNCcUpBQVBDMEdZcTg0QVFTTkJ2S3ZPQUJDS0JnQUxJQVZCRkdwQ0FEY0NcXFxuQUNBRlFRRTJBZ3dnQlVIb3FzNEFOZ0lJSUFWQi9QL05BRFlDRUNBRlFRaHFRWWlyemdBUW1BZ0FDN3NCQWdOL0FYNGpBRUVnYXlJRUpBXFxcbkFnQVNnQ0VDRUZJQVFnQVVFWWFpZ0NBQ0lHTmdJUUlBUWdCVFlDRENBRUlBTTJBZ2hCQVNFRElBRkJBU0FGSUFZUXBBZ2dCQ0FCTmdJY1xcXG5JQVFnQkVFSWFqWUNHQ0FFSUFFZ0FxMGlCeUFFUVJocVFaaWd3QUFRL2dFZ0JDZ0NCQ0VGQWtBQ1FDQUVLQUlBRFFBZ0FTZ0NBQ0FGUVFcXFxuSjBhMEY4YWlnQ0FDRUNRUUFoQXd3QkN5QUJJQWNnQlNBQktBSU1JZ0lRNlFZTElBQWdBallDQkNBQUlBTTJBZ0FnQkVFZ2FpUUFDN3NCXFxcbkFnTi9BWDRqQUVFZ2F5SUVKQUFnQVNnQ0VDRUZJQVFnQVVFWWFpZ0NBQ0lHTmdJUUlBUWdCVFlDRENBRUlBTTJBZ2hCQVNFRElBRkJBU1xcXG5BRklBWVFvd2dnQkNBQk5nSWNJQVFnQkVFSWFqWUNHQ0FFSUFFZ0FxMGlCeUFFUVJocVFheWd3QUFRL2dFZ0JDZ0NCQ0VGQWtBQ1FDQUVcXFxuS0FJQURRQWdBU2dDQUNBRlFRSjBhMEY4YWlnQ0FDRUNRUUFoQXd3QkN5QUJJQWNnQlNBQktBSU1JZ0lRNlFZTElBQWdBallDQkNBQUlBXFxcbk0yQWdBZ0JFRWdhaVFBQzdzQkFnTi9BWDRqQUVFZ2F5SUVKQUFnQVNnQ0VDRUZJQVFnQVVFWWFpZ0NBQ0lHTmdJUUlBUWdCVFlDRENBRVxcXG5JQU0yQWdoQkFTRURJQUZCQVNBRklBWVFvZ2dnQkNBQk5nSWNJQVFnQkVFSWFqWUNHQ0FFSUFFZ0FxMGlCeUFFUVJocVFZU2d3QUFRL2dcXFxuRWdCQ2dDQkNFRkFrQUNRQ0FFS0FJQURRQWdBU2dDQUNBRlFRSjBhMEY4YWlnQ0FDRUNRUUFoQXd3QkN5QUJJQWNnQlNBQktBSU1JZ0lRXFxcbjZRWUxJQUFnQWpZQ0JDQUFJQU0yQWdBZ0JFRWdhaVFBQzdZQkFnRi9BWDRqQUVFd2F5SURKQUFnQXlBQklBSVEzQUVDUUFKQUlBTW9BZ1xcXG5BTkFDQUFJQU1vQWdRZ0EwRUlhaWdDQUJCbERBRUxJQU5CRUdwQkNHb2dBMEVJYWlJQktBSUFJZ0kyQWdBZ0F5QURLUU1BSWdRM0F4QWdcXFxuQTBFZ2FpQUVweUFDRUdVQ1FDQURLQUlnRFFBZ0FDQURLUU1BTndJQUlBQkJDR29nQVNnQ0FEWUNBQXdCQ3lBQUlBTXBBeUEzQWdBZ0FFXFxcbkVJYWlBRFFTQnFRUWhxS0FJQU5nSUFJQU5CRUdvUTVnb0xJQU5CTUdva0FBdkJBUUVCZnlNQVFTQnJJZ1VrQUFKQUFrQWdBU0FEZkNJRFxcXG5JQUZVRFFBZ0JDQUNhaUlFUWYrVDY5d0RUUTBCSUFOQ0FYd2lBMUFOQUNBRVFZRHNsS044YWlFRURBRUxRWXpzelFCQktFSE03TTBBRUlcXFxub0dBQXNDUUNBRElBUkJnSlRyM0FOdUlnS3RmQ0lCSUFOYURRQWdCVUVVYWtJQU53SUFJQVZCQVRZQ0RDQUZRWlRoelFBMkFnZ2dCVUg0XFxcbjRNMEFOZ0lRSUFWQkNHcEI1T0hOQUJDWUNBQUxJQUFnQVRjREFDQUFJQVFnQWtHQWxPdmNBMnhyTmdJSUlBVkJJR29rQUF1eUFRRURmeVxcXG5NQVFlQUFheUlFSkFBQ1FDQUFRUmhxS0FJQUlnVWdBRUVVYWlnQ0FDSUdSdzBBSUFCQkFSQ2pCU0FBS0FJVUlRWWdBQ2dDR0NFRkN5QUVcXFxuUVFocUlBSkJ5QUFRcEEwYUlBUkIyQUJxSUFOQkNHb29BZ0EyQWdBZ0JDQURLUUlBTndOUUFrQWdCU0FHUncwQUlBQkJFR29nQmhEMUNDXFxcbkFBS0FJWUlRVUxJQUFvQWhBZ0JVSFlBR3hxSUFSQkNHcEIxQUFRcEEwZ0FUWUNWQ0FBSUFBb0FoaEJBV28yQWhnZ0JFSGdBR29rQUF1cFxcXG5BUUVDZnlNQVFTQnJJZ1FrQUVFQUlRVUNRQ0FDSUFOcUlnTWdBa2tOQUNBQktBSUVJUUlnQkVFUWFpQUJFS2dKSUFRZ0FrRUJkQ0lDSUFcXFxuTWdBaUFEU3hzaUEwRUlJQU5CQ0VzYklnTkJmM05CSDNZZ0F5QUVRUkJxSUFFUTJRSWdCQ2dDQkNFRkFrQWdCQ2dDQUVVTkFDQUVRUWhxXFxcbktBSUFJUU1NQVFzZ0FTQUROZ0lFSUFFZ0JUWUNBRUdCZ0lDQWVDRUZDeUFBSUFNMkFnUWdBQ0FGTmdJQUlBUkJJR29rQUF1MkFRRUdmeVxcXG5BQVFRRnlJZ0VRNFFVaUFrRUVhaUVEUVFBaEJBTkFJQVFoQlFKQUlBTWlCaWdDQUNJRURRQWdBQ0FBS0FJQVFYMXhOZ0lBSUFJUXhBa1BcXFxuQ3lBRVFRUnFJUU1nQkNnQ0FDQUJSdzBBQ3lBR0lBUW9BZ1FpQXpZQ0FBSkFBa0FnQWlnQ0NDQUVSdzBBSUFJZ0JUWUNDQXdCQ3dOQUlBXFxcbk5GRFFFZ0F5Z0NBQ0FCUmcwQklBTW9BZ1FoQXd3QUN3c1FvdzRnQUNBQUtBSUFRWDF4TmdJQUlBUkJBRFlDQ0NBRUVMc01JQUlReEFrUVxcXG5vdzRMdndFQkJYOGpBRUVnYXlJREpBQUNRQ0FCS0FJRUlnUWdBa2tOQUVHQmdJQ0FlQ0VGQWtBZ0JFVU5BQ0FCS0FJQUlRWUNRQUpBSUFcXFxuSU5BRUVCSVFjZ0JrRUJJQVFRc2dzTUFRdEJBU0VGSUFZZ0JFRUJJQUlRc0FzaUIwVU5BUXNnQVNBQ05nSUVJQUVnQnpZQ0FFR0JnSUNBXFxcbmVDRUZDeUFBSUFJMkFnUWdBQ0FGTmdJQUlBTkJJR29rQUE4TElBTkJGR3BDQURjQ0FDQURRUUUyQWd3Z0EwSEV0c0FBTmdJSUlBTkJyTFxcXG5EQUFEWUNFQ0FEUVFocVFaaTN3QUFRbUFnQUM3RUJBZ1YvQW40akFFRWdheUlESkFBQ1FBSkFJQUFvQWtnaUJDZ0NVQ0lGUlEwQUlBTWdcXFxuQWlBRmJpSUdJQVZzSWdjMkFnQWdBeUFDTmdJRUlBY2dBa2NOQVFKQUlBVWdBa3NOQUNBQUlBRWdCaUFFS0FKQUVRZ0FJQUFwQTBBaUNDXFxcbkFHclh3aUNTQUlXcTFCaVByQUFCQ1RDeUFBSUFrM0EwQUxJQU5CSUdva0FBOExRZUQxd0FCQkdVSG8rY0FBRUlNSEFBc2dBMEVBTmdJSVxcXG5RUUFnQXlBRFFRUnFJQU5CQ0dwQitQbkFBQkM1QlFBTHFRRUJBbjhqQUVFZ2F5SUNKQUFDUUFKQUFrQWdBQ2dDQkVHQWdNUUFSZzBBSUFcXFxuQXZBUUFpQTBFRFN3MEJJQUFnQTBFQmFqc0JBQ0FBUVFScUlBTkJBblJxSUFFMkFnQU1BZ3NnQUVFSWFpQUJFTGdIREFFTElBRkJnSURFXFxcbkFFWU5BQ0FDUVFocUlBQWdBUkR4QmlBQUVQZ0tJQUJCRUdvZ0FrRUlha0VRYWlnQ0FEWUNBQ0FBUVFocUlBSkJDR3BCQ0dvcEF3QTNBZ1xcXG5BZ0FDQUNLUU1JTndJQUN5QUNRU0JxSkFBTHB3RUJBMzhqQUVHQUFXc2lCQ1FBQWtBZ0FFRVlhaWdDQUNJRklBQkJGR29vQWdBaUJrY05cXFxuQUNBQVFRRVFvZ1VnQUNnQ0ZDRUdJQUFvQWhnaEJRc2dCRUVJYWlBQ1FjZ0FFS1FOR2lBRVFRaHFRY2dBYWlBRFFUQVFwQTBhQWtBZ0JTXFxcbkFHUncwQUlBQkJFR29nQmhEMENDQUFLQUlZSVFVTElBQW9BaEFnQlVFSGRHb2dCRUVJYWtINEFCQ2tEU0FCTmdKNElBQWdBQ2dDR0VFQlxcXG5hallDR0NBRVFZQUJhaVFBQzdRQkFRTi9JQUF0QUFnaEFRSkFJQUFvQWdBaUFnMEFJQUZCL3dGeFFRQkhEd3RCQVNFREFrQUNRQ0FCUWZcXFxuOEJjUTBBQWtBQ1FDQUNRUUZIRFFBZ0FDMEFDVUgvQVhFTkFRc2dBQ2dDQkNFQkRBSUxJQUJCQkdvb0FnQWlBUzBBSEVFRWNRMEJRUUVoXFxcbkF5QUJLQUlVUWJ5ZXpnQkJBU0FCUVJocUtBSUFLQUlNRVFrQVJRMEJDeUFBSUFNNkFBZ2dBdzhMSUFBZ0FTZ0NGRUdibWM0QVFRRWdBVVxcXG5FWWFpZ0NBQ2dDREJFSkFDSUJPZ0FJSUFFTHF3RUJBWDhqQUVFZ2F5SURKQUFnQXlBQklBSVF1QXNnQXlnQ0JDRUJJQU1vQWdBaEFnSkFcXFxuQWtBRFFBSkFJQUlnQVVjTkFFRUFJUUlNQXdzZ0EwRUlhaUFBRU5NR0lBTXRBQWdOQVFKQUlBTXRBQWtOQUNBRFFRVTJBaEFnQUNBRFFSXFxcbkJxRU04SUlRSU1Bd3NDUUNBRExRQUtJQUl0QUFCSERRQWdBa0VCYWlFQ0RBRUxDeUFEUVFrMkFoQWdBQ0FEUVJCcUVNOElJUUlNQVFzZ1xcXG5BeWdDRENFQ0N5QURRU0JxSkFBZ0FndXFBUUVDZnlNQVFTQnJJZ0VrQUNBQlFRaHFJQUFRdGdRQ1FBSkFBa0FnQVMwQUNBMEFJQUV0QUFcXFxua05BU0FCUVFNMkFoQWdBQ0FCUVJCcUVNNElJUUFNQWdzZ0FTZ0NEQ0VBREFFTEFrQUNRQ0FCTFFBS0lnSkIvUUJHRFFBZ0FrRXNSZzBCXFxcbklBRkJGallDRUNBQUlBRkJFR29RemdnaEFBd0NDeUFBSUFBb0FnaEJBV28yQWdoQkFDRUFEQUVMSUFGQkZUWUNFQ0FBSUFGQkVHb1F6Z1xcXG5naEFBc2dBVUVnYWlRQUlBQUxxZ0VCQW44akFFRWdheUlCSkFBZ0FVRUlhaUFBRUxvRUFrQUNRQUpBSUFFdEFBZ05BQ0FCTFFBSkRRRWdcXFxuQVVFRE5nSVFJQUFnQVVFUWFoRGRDQ0VBREFJTElBRW9BZ3doQUF3QkN3SkFBa0FnQVMwQUNpSUNRZjBBUmcwQUlBSkJMRVlOQVNBQlFSXFxcblkyQWhBZ0FDQUJRUkJxRU4wSUlRQU1BZ3NnQUNBQUtBSUlRUUZxTmdJSVFRQWhBQXdCQ3lBQlFSVTJBaEFnQUNBQlFSQnFFTjBJSVFBTFxcXG5JQUZCSUdva0FDQUFDNkFCQVFKL0l3QkJJR3NpQkNRQVFRQWhCUUpBSUFJZ0Eyb2lBeUFDU1EwQUlBRW9BZ1FoQWlBRVFSQnFJQUVRcUFcXFxua2dCQ0FDUVFGMElnSWdBeUFDSUFOTEd5SURRUWdnQTBFSVN4c2lBa0YvYzBFZmRpQUNJQVJCRUdvZ0FSRFpBaUFFUVFocUtBSUFJUU1nXFxcbkJDZ0NCQ0VGSUFRb0FnQU5BQ0FCSUFVZ0F5QUNFSW9NUVlHQWdJQjRJUVVMSUFBZ0F6WUNCQ0FBSUFVMkFnQWdCRUVnYWlRQUM3QUJBUVxcXG5SL0l3QkJFR3NpQWlRQUFrQURRQ0FCS0FJQUlRTWdBU2dDQkNFRUlBRVFyUWdpQlVFTlN3MEJRUUVnQlhSQmdNd0FjUTBBQ3dzQ1FBSkFcXFxuSUFWQmdJREVBRWNOQUNBQVFZQ0F4QUEyQWdBTUFRc2dCQ0FEYXlFRVFRRWhBUUpBSUFWQmdBRkpEUUJCQWlFQklBVkJnQkJKRFFCQkEwXFxcbkVFSUFWQmdJQUVTUnNoQVFzZ0FrRUlhaUFESUFRZ0FVSGdpY0VBRUxFR0lBQWdBaWtEQ0RjQ0JDQUFJQVUyQWdBTElBSkJFR29rQUF1dlxcXG5BUUlFZndGK0l3QkJ3QUJySWdJa0FDQUFLUUlVSVFZZ0FFSUJOd0lVSUFKQkNHcEJDR29pQXlBQVFSeHFJZ1FvQWdBMkFnQWdCRUVBTmdcXFxuSUFJQUpCQVRvQUtDQUNRUUEyQWlBZ0FrSUFOd0lVSUFJZ0JqY0RDQ0FDUVFocUlBRW9BZ0FpQlNBRklBRW9BZ1JxRU9jRElBSkJNR3BCXFxcbkNHb2lBU0FES0FJQU5nSUFJQUlnQWlrRENEY0RNQ0FBUVJScUVJb05JQVFnQVNnQ0FEWUNBQ0FBSUFJcEF6QTNBaFFnQWtIQUFHb2tBQVxcXG51ZEFRSURmd0orQWtBZ0FDQUJRWDlxUVFOMGFpSURMUUFBSWdRZ0EwRjRhaUlGTFFBQVR3MEFJQVN0SVFZZ0F6VUNCQ0VISUFNZ0JTa0NcXFxuQURjQ0FDQUJRWDVxSVFNZ0FVRURkQ0FBYWtGb2FpRUJBMEFDUUFKQUlBTkZEUUFnQkNBQkxRQUFTUTBCSUFGQkNHb2hBQXNnQUNBSFFpXFxcbkNHSUFhRU53SUFEQUlMSUFGQkNHb2dBU2tDQURjQ0FDQURRWDlxSVFNZ0FVRjRhaUVCREFBTEN3dXlBUUVDZnlNQVFSQnJJZ1VrQUFKQVxcXG5Ba0FDUUNBRERRQWdCQTBCQ3lBQktBSUlJZ01nQVNnQ0JDSUVJQU1nQkVzYklRUWdBU2dDQUNFR0EwQUNRQUpBSUFRZ0EwWU5BQ0FHSUFcXFxuTnFMUUFBUVZCcVFmOEJjVUVLU1EwQkN5QUFSQUFBQUFBQUFBQUFSQUFBQUFBQUFBQ0FJQUliT1FNSVFRQWhBd3dEQ3lBQklBTkJBV29pXFxcbkF6WUNDQXdBQ3dzZ0JVRU9OZ0lBSUFBZ0FTQUZFTThJTmdJRVFRRWhBd3NnQUNBRE5nSUFJQVZCRUdva0FBdXNBUUlCZndGK0l3QkIwQVxcXG5CcklnRWtBQ0FCSUFBMkFnUWdBVUVBTmdJZ0lBRkNBVGNER0NBQlFTaHFJQUZCR0dwQmdJbkFBQkRMQ0FKQUlBRkJCR29nQVVFb2FoQzJcXFxuQVVVTkFFR1lpY0FBUVRjZ0FVRUlha0hRaWNBQVFheUt3QUFRd2dRQUN5QUJRUWhxUVFocUlBRkJHR3BCQ0dvb0FnQWlBRFlDQUNBQklBXFxcbkVwQXhnaUFqY0RDQ0FDcHlBQUVNSU5JUUFnQVVFSWFoRGpEQ0FCUVFScUVPSUxJQUZCMEFCcUpBQWdBQXVvQVFFRWZ5TUFRUkJySWdJa1xcXG5BQ0FDUVFocUlBRkJBU0FBUWN3QWFpZ0NBQ0lEUVFCSElBQkJIR29vQWdBaUJFRUFSMm9RbXdNZ0FpZ0NDQ0VCQWtBZ0FpMEFEQ0lGUVFcXFxuTkdEUUFnQWlBRk9nQUVJQUlnQVRZQ0FBSkFJQVJGRFFBZ0FrR1ZyTUFBUVFjZ0FCQ3dCU0lCRFFFTEFrQWdBMFVOQUNBQ1FaeXN3QUJCXFxcbkJ5QUFRVEJxRUxVRklnRU5BUXNnQWlnQ0FDQUNMUUFFRU9jR0lRRUxJQUpCRUdva0FDQUJDN0lCQVFKL0l3QkJFR3NpQlNRQUFrQUNRQVxcXG5KQUlBTU5BQ0FFRFFFTElBRW9BZ2dpQXlBQktBSUVJZ1FnQXlBRVN4c2hCQ0FCS0FJQUlRWURRQUpBQWtBZ0JDQURSZzBBSUFZZ0Eyb3RcXFxuQUFCQlVHcEIvd0Z4UVFwSkRRRUxJQUJFQUFBQUFBQUFBQUJFQUFBQUFBQUFBSUFnQWhzNUF3aEJBQ0VEREFNTElBRWdBMEVCYWlJRE5nXFxcbklJREFBTEN5QUZRUTQyQWdBZ0FDQUJJQVVRM3dnMkFnUkJBU0VEQ3lBQUlBTTJBZ0FnQlVFUWFpUUFDNmdCQVFaL0l3QkJFR3NpQWlRQVxcXG5Ba0FDUUFKQUlBRW9BZ0FOQUFKQUlBRW9BZ2hGRFFBZ0FVRU1haUVEREFJTFFRQWhCRUVCSVFWQkFDRUREQUlMSUFGQkJHb2hBd3NnQWtcXFxuRUlhaUFCSUFNb0FnQWlCaENBQnlBQ0tBSUlJUWNnQWlBQ0tBSU1JZ05CQUJEVkJDQUNLQUlFSVFRZ0FpZ0NBQ0lGSUFjZ0F4Q2tEUm9nXFxcbkFVRVVhaUFHRUtBR0N5QUFJQU0yQWdnZ0FDQUVOZ0lFSUFBZ0JUWUNBQ0FDUVJCcUpBQUxud0VCQm45QnBnc2hBVUVBSVFKQnBnc2hBd1xcXG5OQUFrQWdBaUFCU1EwQVFRa1BDd0pBQWtBQ1FFRUFRWDlCQVNBRFFRRjJJQUpxSWdOQkRHd2lCRUh3eWN3QWFpZ0NBQ0lGSUFCSkd5SUdcXFxuSUFVZ0FFOGJJQVlnQkVIc3ljd0FhaWdDQUNBQVRSc2lCRUVCUncwQUlBTWhBUXdCQ3lBRVFmOEJjVUgvQVVjTkFTQURRUUZxSVFJTElBXFxcbkVnQW1zaEF3d0JDd3NnQTBFTWJFSDB5Y3dBYWkwQUFBdW9BUUVDZnlNQVFSQnJJZ0VrQUNBQUVJTU1RUUVoQWdKQUEwQWdBU0FBRU40SVxcXG5Ba0FDUUFKQUlBRXRBQUFOQUNBQkxRQUJRVkJxUWY4QmNVRUtTUTBDQWtBZ0FrRUJjUTBBSUFFZ0FCRGVDQ0FCTFFBQURRRWdBUzBBQVVcXFxuRWdja0hsQUVZTkFrRUFJUUFNQlFzZ0FVRU5OZ0lBSUFBZ0FSRGRDQ0VBREFRTElBRW9BZ1FoQUF3REN5QUFFSWNESVFBTUFnc2dBQkNEXFxcbkRFRUFJUUlNQUFzTElBRkJFR29rQUNBQUM2d0JBZ0ovQVg0akFFRVFheUlESkFBQ1FBSkFJQUVvQWdnaUJFR0FsT3ZjQTBZTkFDQUJLUVxcXG5NQUlRVU1BUXNnQXlBQUVOWUdJQU1vQWdnaEJDQURLUU1BSVFVTElBQWdCRFlDQ0NBQUlBVTNBd0FnQUNBQktRTVFOd01RSUFBZ0FTa0RcXFxuTURjRE1DQUFRU2hxSUFGQktHb3BBd0EzQXdBZ0FFRWdhaUFCUVNCcUtRTUFOd01BSUFCQkdHb2dBVUVZYWlrREFEY0RBQ0FBUVRocUlBXFxcbkZCT0dvb0FnQTJBZ0FnQTBFUWFpUUFDNjhCQVFKL0l3QkJNR3NpQWlRQUlBSkJnQUZCQUJEVkJDQUNRUUEyQWhBZ0FpQUNLUU1BTndNSVxcXG5JQUpCR0dwQkJISVFqZ3NnQWlBQ1FRaHFOZ0lZQWtBQ1FBSkFJQUVnQWtFWWFoRE1BeUlCUlEwQUlBSkJDR29RNHd3TUFRc2dBaWdDRENcXFxuRUJJQUlvQWdnaUF3MEJDeUFDSUFFMkFoaEJrNHpBQUVFcklBSkJHR3BCMEl6QUFFSGtxY0FBRU1JRUFBc2dBQ0FDS0FJUU5nSUlJQUFnXFxcbkFUWUNCQ0FBSUFNMkFnQWdBa0V3YWlRQUM2VUJBUUovSXdCQkVHc2lCU1FBSUFVZ0FTQUNFTGtDSUFVb0FnUWhCaUFGS0FJQUlRRUNRQ1xcXG5BRFJRMEFBa0FnQmlBQ1R3MEFJQU5CQVNBRUtBSVVFUVVBQ3lBRklBRTJBZ2dnQlNBQklBWnFOZ0lNQTBBQ1FDQUZRUWhxRUswSUlnSkJcXFxuRFVzTkFFRUJJQUowUVlETUFIRkZEUUFnQTBFSklBUW9BaFFSQlFBTUFnc2dBa0dBZ01RQVJ3MEFDd3NnQUNBQk5nSUFJQUFnQVNBR2FqXFxcbllDQkNBRlFSQnFKQUFMbVFFQ0EzOEJmZ0pBSUFBZ0FVRi9ha0VEZEdvaUF5Z0NBQ0lFSUFOQmVHb2lCU2dDQUU4TkFDQUROUUlFSVFZZ1xcXG5BeUFGS1FJQU53SUFJQUZCZm1vaEF5QUJRUU4wSUFCcVFXaHFJUUVEUUFKQUFrQWdBMFVOQUNBRUlBRW9BZ0JKRFFFZ0FVRUlhaUVBQ3lcXFxuQUFJQVpDSUlZZ0JLMkVOd0lBREFJTElBRkJDR29nQVNrQ0FEY0NBQ0FEUVg5cUlRTWdBVUY0YWlFQkRBQUxDd3VkQVFFRWZ5TUFRU0JyXFxcbklnSWtBQU5BSUFJZ0FSQnpBa0FDUUNBQ0tBSUFSUTBBSUFBb0FnZ2lBeUFBS0FJRVJ3MEJJQUpCRUdvZ0FSQ1FCQ0FBSUFJb0FoQkJBV1xcXG5vaUJFRi9JQVFiRUpBS0RBRUxJQUlRekFzZ0FVRW9haEROQ3lBQ1FTQnFKQUFQQ3lBQ1FRaHFLQUlBSVFRZ0FDZ0NBQ0FEUVF4c2FpSUZcXFxuSUFJcEF3QTNBZ0FnQlVFSWFpQUVOZ0lBSUFBZ0EwRUJhallDQ0F3QUN3dXNBUUVEZnlNQVFTQnJJZ0VrQUNBQVFReHFLQUlBSVFJQ1FBXFxcbkpBQWtBQ1FBSkFJQUFvQWdRT0FnQUJBd3NnQWcwQ1FheXd3QUFoQWtFQUlRQU1BUXNnQWcwQklBQW9BZ0FpQWlnQ0JDRUFJQUlvQWdBaFxcXG5BZ3NnQVVFSWFpQUFRUUFRMGdRZ0FTZ0NEQ0VESUFFb0FnZ2dBaUFBRUtRTklRSWdBU0FBTmdJWUlBRWdBellDRkNBQklBSTJBaEFNQVFcXFxuc2dBVUVRYWlBQUVJZ0JDeUFCUVJCcUVFQWhBQ0FCUVNCcUpBQWdBQXVnQVFFR2Z5TUFRUkJySWdJa0FDQUJRUWhxSVFNQ1FBTkFJQUVvXFxcbkFnZ2hCQ0FCS0FJTUlRVWdBa0VJYWlBREVLc0NJQUlvQWd3aUJrRjNhaUlIUVJkTERRRkJBU0FIZEVHVGdJQUVjUTBBQ3dzQ1FBSkFJQVxcXG5aQmdJREVBRVlOQUNBQUlBSW9BZ2dpQnpZQ0JDQUFRUWhxSUFjZ0JTQUVhMm9nQVNnQ0NHb2dBU2dDREdzMkFnQkJBU0VCREFFTFFRQWhcXFxuQVFzZ0FDQUJOZ0lBSUFKQkVHb2tBQXVnQVFFR2Z5TUFRUkJySWdJa0FDQUJRUWhxSVFNQ1FBTkFJQUVvQWdnaEJDQUJLQUlNSVFVZ0FrXFxcbkVJYWlBREVOd0VJQUlvQWd3aUJrRjNhaUlIUVJkTERRRkJBU0FIZEVHVGdJQUVjUTBBQ3dzQ1FBSkFJQVpCZ0lERUFFWU5BQ0FBSUFJb1xcXG5BZ2dpQnpZQ0JDQUFRUWhxSUFjZ0JTQUVhMm9nQVNnQ0NHb2dBU2dDREdzMkFnQkJBU0VCREFFTFFRQWhBUXNnQUNBQk5nSUFJQUpCRUdcXFxub2tBQXVkQVFFRGZ5TUFRWUFCYXlJQ0pBQWdBQzhCQUNFRFFRQWhBQU5BSUFJZ0FHcEIvd0JxUVRCQjF3QWdBMEVQY1NJRVFRcEpHeUFFXFxcbmFqb0FBQ0FBUVg5cUlRQWdBMEgvL3dOeElnUkJCSFloQXlBRVFROUxEUUFMQWtBZ0FFR0FBV29pQTBHQkFVa05BQ0FEUVlBQlFleWV6Z1xcXG5BUWdnVUFDeUFCUVFGQi9KN09BRUVDSUFJZ0FHcEJnQUZxUVFBZ0FHc1FZQ0VBSUFKQmdBRnFKQUFnQUF1YkFRRURmeU1BUVlBQmF5SUNcXFxuSkFBZ0FDMEFBQ0VEUVFBaEFBTkFJQUlnQUdwQi93QnFRVEJCTnlBRFFROXhJZ1JCQ2trYklBUnFPZ0FBSUFCQmYyb2hBQ0FEUWY4QmNTXFxcbklFUVFSMklRTWdCRUVQU3cwQUN3SkFJQUJCZ0FGcUlnTkJnUUZKRFFBZ0EwR0FBVUhzbnM0QUVJSUZBQXNnQVVFQlFmeWV6Z0JCQWlBQ1xcXG5JQUJxUVlBQmFrRUFJQUJyRUdBaEFDQUNRWUFCYWlRQUlBQUxuQUVCQTM4akFFR0FBV3NpQWlRQUlBQXRBQUFoQTBFQUlRQURRQ0FDSUFcXFxuQnFRZjhBYWtFd1FkY0FJQU5CRDNFaUJFRUtTUnNnQkdvNkFBQWdBRUYvYWlFQUlBTkIvd0Z4SWdSQkJIWWhBeUFFUVE5TERRQUxBa0FnXFxcbkFFR0FBV29pQTBHQkFVa05BQ0FEUVlBQlFleWV6Z0FRZ2dVQUN5QUJRUUZCL0o3T0FFRUNJQUlnQUdwQmdBRnFRUUFnQUdzUVlDRUFJQVxcXG5KQmdBRnFKQUFnQUF1akFRSURmd0YrUVlBQklRSUNRQ0FBS0FJQUlnTWdBeUFCS0FJQWEwRUNkU0lCYWlJRUtRQUFJZ1VnQlVJQmhvTkNcXFxuZ0lHQ2hJaVFvTUNBZjRONnAwRURkaUFESUFGQmVHb2dBQ2dDQkhGcUlnTXBBQUFpQlNBRlFnR0dnMEtBZ1lLRWlKQ2d3SUIvZzNtblFRXFxcbk4yYWtFSFN3MEFJQUFnQUNnQ0NFRUJhallDQ0VIL0FTRUNDeUFFSUFJNkFBQWdBMEVJYWlBQ09nQUFJQUFnQUNnQ0RFRi9hallDREF1b1xcXG5BUUVFZnlNQVFTQnJJZ0lrQUNBQ1FSaHFJQUVRdlFRZ0FrRVFhaUFDS0FJWUlBSW9BaHhCTHhDVUJpQUNLQUlVSVFNZ0FpZ0NFQ0VFSUFcXFxuSkJDR29nQVJDOUJDQUNLQUlJSVFVZ0FpZ0NEQ0VCSUFCQkFUc0JKQ0FBUVFBMkFod2dBRUtCZ0lDQThBVTNBaFFnQUVFQU5nSU1JQUJCXFxcbkx6WUNBQ0FBSUFNZ0FTQUVHeUlCTmdJZ0lBQWdBVFlDRUNBQUlBRTJBZ2dnQUNBRUlBVWdCQnMyQWdRZ0FrRWdhaVFBQzVrQkFRUi9Jd1xcXG5CQk1Hc2lBeVFBSUFNZ0FUWUNFQ0FESUFFMkFnZ2dBeUFDTmdJTUlBTWdBU0FDYWpZQ0ZDQURRUUEyQWhnZ0EwRWdhaUFEUVFocUVOZ0RcXFxuSUFNb0FpQWhBaUFES0FJa0lRUWdBMEVvYWlJRktBSUFJUVlnQTBFZ2FpQURRUWhxRU5jRElBQWdCU2dDQUNBR1FRQWdBaHNnQXlnQ0lCXFxcbnNnQkVFQUlBSWJJZ0pyTmdJRUlBQWdBU0FDYWpZQ0FDQURRVEJxSkFBTG1nRUJBMzhqQUVHQUFXc2lBaVFBSUFBb0FnQWhBRUVBSVFNRFxcXG5RQ0FDSUFOcVFmOEFha0V3UWRjQUlBQkJEM0VpQkVFS1NSc2dCR282QUFBZ0EwRi9haUVESUFCQkQwc2hCQ0FBUVFSMklRQWdCQTBBQ3dcXFxuSkFJQU5CZ0FGcUlnQkJnUUZKRFFBZ0FFR0FBVUhzbnM0QUVJSUZBQXNnQVVFQlFmeWV6Z0JCQWlBQ0lBTnFRWUFCYWtFQUlBTnJFR0FoXFxcbkFDQUNRWUFCYWlRQUlBQUxtUUVCQTM4akFFR0FBV3NpQWlRQUlBQW9BZ0FoQUVFQUlRTURRQ0FDSUFOcVFmOEFha0V3UVRjZ0FFRVBjU1xcXG5JRVFRcEpHeUFFYWpvQUFDQURRWDlxSVFNZ0FFRVBTeUVFSUFCQkJIWWhBQ0FFRFFBTEFrQWdBMEdBQVdvaUFFR0JBVWtOQUNBQVFZQUJcXFxuUWV5ZXpnQVFnZ1VBQ3lBQlFRRkIvSjdPQUVFQ0lBSWdBMnBCZ0FGcVFRQWdBMnNRWUNFQUlBSkJnQUZxSkFBZ0FBdXVBUUVCZnlNQVFhXFxcbkFCYXlJQ0pBQWdBaUFCRU1RSUlBSkI0QUJxSUFJUXp3c0NRQUpBQWtBQ1FDQUNLQUpvUVlHVTY5d0RSZzBBSUFKQklHb2dBa0hnQUdwQlxcXG53QUFRcEEwYUlBSVFtQVlpQVEwQklBQWdBa0VnYWtIQUFCQ2tEUm9nQWtFTWFoRGpEQXdEQ3lBQVFZR1U2OXdETmdJSUlBQWdBaWdDWURcXFxuWUNBQXdCQ3lBQVFZR1U2OXdETmdJSUlBQWdBVFlDQUNBQ1FTQnFFSjhMQ3lBQ1FReHFFT01NQ3lBQ1FhQUJhaVFBQzUwQkFRSi9Jd0JCXFxcbklHc2lBaVFBQWtBQ1FBSkFJQUVRc3d3aUF3MEFJQUVRdEF3aUFRMEJJQUJCQURZQ0FBd0NDeUFDUVJCcUlBTVF6UVlnQUVFSWFpQUNRUlxcXG5CcVFRaHFLQUlBTmdJQUlBQWdBaWtERURjQ0FBd0JDeUFDSUFFUXhRMDJBZ3dnQWtFUWFpQUNRUXhxRU0wR0lBQkJDR29nQWtFUWFrRUlcXFxuYWlnQ0FEWUNBQ0FBSUFJcEF4QTNBZ0FnQWtFTWFoQ01Dd3NnQWtFZ2FpUUFDNkVCQVFOL0l3QkJFR3NpQXlRQUFrQUNRQ0FCS0FKRUlnXFxcblJCQ1U4TkFDQUVJUVZCQ0NFRURBRUxJQUVvQWdRaEJRc0NRQUpBSUFRZ0JXc2dBa2tOQUVHQmdJQ0FlQ0VGREFFTElBTkJDR29nQlNBQ1xcXG5haUlFSUFWUElBUVFsUWNnQXlnQ0RDRUVBa0FnQXlnQ0NBMEFRUUFoQlF3QkN5QURJQUVnQkJEckFTQURLQUlFSVFRZ0F5Z0NBQ0VGQ3lcXFxuQUFJQVEyQWdRZ0FDQUZOZ0lBSUFOQkVHb2tBQXVWQVFFQ2Z3SkFBa0FnQUVGM2FpSUJRUmhQRFFCQkFTRUNRWitBZ0FRZ0FYWkJBWEVOXFxcbkFRdEJBQ0VDSUFCQmdBRkpEUUFDUUNBQVFRaDJJZ0ZGRFFBQ1FBSkFJQUZCTUVZTkFDQUJRU0JHRFFFZ0FVRVdSdzBESUFCQmdDMUdEd1xcXG5zZ0FFR0E0QUJHRHdzZ0FFSC9BWEZCMzh2T0FHb3RBQUJCQW5GQkFYWVBDeUFBUWY4QmNVSGZ5ODRBYWkwQUFFRUJjUThMSUFJTHF3RUJcXFxuQTM4akFFRWdheUlESkFBQ1FDQUJLQUlFSUFKSkRRQWdBMEVJYWlBQkVLZ0pBa0FDUUNBREtBSU1JZ1JGRFFBZ0F5Z0NDQ0FFSUFNb0FoXFxcbkFnQkNBQ0VOUUVJZ1ZGRFFFZ0FTQUNOZ0lFSUFFZ0JUWUNBQXRCZ1lDQWdIZ2hCQXNnQUNBQ05nSUVJQUFnQkRZQ0FDQURRU0JxSkFBUFxcXG5DeUFEUVJScVFnQTNBZ0FnQTBFQk5nSU1JQU5CZ1AvQUFEWUNDQ0FEUWN6K3dBQTJBaEFnQTBFSWFrSFUvOEFBRUpnSUFBdXFBUUVFZnlcXFxuTUFRU0JySWdNa0FBSkFBa0FDUUFKQUlBRW9BZ1FpQkNBQ1NRMEFJQVFOQVF3Q0N5QURRUlJxUWdBM0FnQWdBMEVCTmdJTUlBTkJnUC9BXFxcbkFEWUNDQ0FEUWN6K3dBQTJBaEFnQTBFSWFrSFUvOEFBRUpnSUFBdEJCQ0VGSUFFb0FnQkJCQ0FFUVFKMFFRUWdBa0VDZENJRUVOUUVJZ1xcXG5aRkRRRWdBU0FDTmdJRUlBRWdCallDQUF0QmdZQ0FnSGdoQlFzZ0FDQUVOZ0lFSUFBZ0JUWUNBQ0FEUVNCcUpBQUxwd0VCQW44akFFRXdcXFxuYXlJREpBQWdBeUFDTmdJTUlBTWdBVFlDQ0FKQUEwQWdBMEVRYWlBRFFRaHFFTWNESUFNb0FoQWlBa0dBZ01RQVJnMEJJQU1vQWhnaEFTXFxcbkFES0FJVUlRUUNRQUpBSUFJTkFDQUFLQUlZSWdKRkRRRWdBa0VISUFBb0Fod29BaFFSQlFBTUFRc2dBQ0FDSUFOQkNHb1EyQUVMSUFOQlxcXG43STdCQURZQ0tDQURJQUUyQWlRZ0F5QUVOZ0lnSUFBZ0EwRWdhaERtQlF3QUN3c2dBMEV3YWlRQUM1WUJBUUYvSXdCQndBRnJJZ01rQUNcXFxuQURJQUkyQWd3Z0EwSDBBR29oQWdKQUEwQWdBRVVOQVNBQUlBRkdEUUVnQTBFUWFpQUFRY2dBYWhDN0J5QUNJQUFRbEFVZ0EwSG9BR3BCXFxcbkNHb2dBMEVRYWtFSWFpZ0NBRFlDQUNBRElBTXBBeEEzQTJnZ0EwRVFhaUFEUWVnQWFrSFVBQkNrRFJvZ0FFSFlBR29oQUNBRFFReHFJQVxcXG5OQkVHb1E2QVFNQUFzTElBTkJ3QUZxSkFBTG9nRUJBWDhqQUVIZ0FXc2lBaVFBSUFJZ0FSRERDQ0FDUVlBQmFpQUNFTTRMQWtBQ1FBSkFcXFxuQWtBZ0FpZ0NrQUZGRFFBZ0FrRWdhaUFDUVlBQmFrSGdBQkNrRFJvZ0FoQ2ZCaUlCRFFFZ0FDQUNRU0JxUWVBQUVLUU5HaUFDUVF4cUVPXFxcbk1NREFNTElBQkJBRFlDRUNBQUlBSW9Bb0FCTmdJQURBRUxJQUJCQURZQ0VDQUFJQUUyQWdBZ0FrRWdhaERsQ3dzZ0FrRU1haERqREFzZ1xcXG5Ba0hnQVdva0FBdVlBUUVDZnlNQVFTQnJJZ0lrQUNBQ1FRaHFJQUZCQ0dvcEFnQTNBd0FnQWlBQktRSUFOd01BQWtBQ1FDQUFLQUlNRFFcXFxuQWdBa0VRYWlBQ0VLY0VJQUlvQWhBaEF3d0JDeUFDUVJCcUlBSVFwd1FnQWlnQ0VFRUJha0VCZGlFREN5QUFJQU1nQUVFUWFoQ3dDQ0FDXFxcblFSQnFRUWhxSUFGQkNHb3BBZ0EzQXdBZ0FpQUJLUUlBTndNUUlBSkJFR29nQUJDZkFTQUNRU0JxSkFBTHNBRUNBMzhCZmlNQVFTQnJJZ1xcXG5Ja0FDQUNRUkJxSUFFZ0FpQUNJQUlnQWhCN0FrQUNRQ0FDS0FJWUlnRkJnSlRyM0FOR0RRQWdBa0hva3NBQUlBSXBBeEFnQVJDcUF3SkFcXFxuQWtBZ0FpZ0NDQ0lCUVlDVTY5d0RSdzBBUWZpU3dBQkJJUkNwQnlFRERBRUxJQUlwQXdBaUJVSWdpS2NoQkNBRnB5RURDeUFBSUFFMkFnXFxcbmdnQUNBRU5nSUVJQUFnQXpZQ0FBd0JDeUFBUVlDVTY5d0ROZ0lJSUFBZ0FpZ0NFRFlDQUFzZ0FrRWdhaVFBQzUwQkFRVi9Jd0JCSUdzaVxcXG5BeVFBUVFBaEJDQURRUUEyQWhnZ0F5QUJOZ0lRSUFNZ0FUWUNDQ0FESUFJMkFnd2dBeUFCSUFKcU5nSVVJQU5CRUdvaEJRSkFBMEFnQXlcXFxuZ0NFQ0VHSUFNb0FoUWhCeUFESUFVUXF3SWdBeWdDQkNJQ1FZQ0F4QUJHRFFFZ0FrRWhTUTBBQ3lBSElBWnJJQU1vQWdCcUlBTW9BaEJxXFxcbklBTW9BaFJySVFRTElBQWdCRFlDQkNBQUlBRTJBZ0FnQTBFZ2FpUUFDNWdCQVFWL0l3QkJFR3NpQWlRQVFRQWhBd0pBQWtBZ0FTZ0NBQ1xcXG5JRUlBRW9BZ1FpQlVZTkFDQUNRUWhxSUFRdEFBQVEwQVlnQWlnQ0NFVU5BQ0FFUVFGcUlnWWdCVVlOQUNBQ0tBSU1JUVVnQWlBR0xRQUFcXFxuRU5BR0lBSW9BZ0JGRFFBZ0FpZ0NCQ0VESUFFZ0JFRUNhallDQUNBRElBVkJCSFJxSVFGQkFTRUREQUVMQ3lBQUlBRTZBQUVnQUNBRE9nXFxcbkFBSUFKQkVHb2tBQXViQVFFRGZ5TUFRUkJySWdVa0FBSkFBa0FDUUFKQUlBSU5BRUVCSVFZTUFRc2dBa0YvU2lJSFJRMEJRUUF0QVBHbVxcXG5UeG9nQWlBSEVQY0xJZ1pGRFFJTElBWWdBU0FDRUtRTklRRWdCVUVJYWlJR0lBSTJBZ0FnQlNBQ05nSUVJQVVnQVRZQ0FDQUZJQU1nQkJcXFxuQy9BUm9nQUVFSWFpQUdLQUlBTmdJQUlBQWdCU2tEQURjQ0FDQUZRUkJxSkFBUEN4Q1hDQUFMSUFjZ0FoQ2FEUUFMdEFFQkEzOGpBRUVRXFxcbmF5SUJKQUFnQUNnQ0FDSUNRUXhxS0FJQUlRTUNRQUpBQWtBQ1FDQUNLQUlFRGdJQUFRTUxJQU1OQWtINDRNMEFJUUpCQUNFRERBRUxJQVxcXG5NTkFTQUNLQUlBSWdJb0FnUWhBeUFDS0FJQUlRSUxJQUVnQXpZQ0JDQUJJQUkyQWdBZ0FVR3c3ODBBSUFBb0FnUWlBaERqRFNBQUtBSUlcXFxuSUFJUTVRMFE5Z0lBQ3lBQlFRQTJBZ1FnQVNBQ05nSUFJQUZCbk8vTkFDQUFLQUlFSWdJUTR3MGdBQ2dDQ0NBQ0VPVU5FUFlDQUF1YkFRXFxcbklEZndGK0l3QkI0QUJySWdRa0FBSkFBa0FnQVNBQlFSQnFJZ1VnQWhEMEJDSUhJQUlRcFFVaUJnMEFJQVJCQ0dwQkNHb2dBa0VJYWlnQ1xcXG5BRFlDQUNBRUlBSXBBZ0EzQXdnZ0JFRVVhaUFEUWNnQUVLUU5HaUFCSUFjZ0JFRUlhaUFGRUw0RkdpQUFRUUkyQWdBTUFRc2dBQ0FHUWJcXFxuaC9haUlCUWNnQUVLUU5HaUFCSUFOQnlBQVFwQTBhSUFJUTR3d0xJQVJCNEFCcUpBQUxtd0VCQW44akFFRWdheUlFSkFBZ0JFRVFhaUFCXFxcbkVPY0hJQVFvQWhRaEFTQUVLQUlRSVFVZ0JFRUlhaUFDSUFNUW5RY2dCQ0FFS0FJTUlnTTJBaHdnQkNBRUtBSUlJZ0kyQWhnZ0JDQUZJQVxcXG5JZ0F4RFhBU0FFS0FJRUlRTWdCQ2dDQUNFQ0lBUkJHR29RNlFzZ0FTQUJLQUlBUVg5cU5nSUFJQUFnQWtFQVJ6WUNDQ0FBSUFOQkFDQUNcXFxuR3pZQ0JDQUFJQU0yQWdBZ0JFRWdhaVFBQzVzQkFRSi9Jd0JCSUdzaUJDUUFJQVJCRUdvZ0FSRG5CeUFFS0FJVUlRRWdCQ2dDRUNFRklBXFxcblJCQ0dvZ0FpQURFSjBISUFRZ0JDZ0NEQ0lETmdJY0lBUWdCQ2dDQ0NJQ05nSVlJQVFnQlNBQ0lBTVFrd0VnQkNnQ0JDRURJQVFvQWdBaFxcXG5BaUFFUVJocUVPa0xJQUVnQVNnQ0FFRi9hallDQUNBQUlBSkJBRWMyQWdnZ0FDQURRUUFnQWhzMkFnUWdBQ0FETmdJQUlBUkJJR29rQUFcXFxudWJBUUVDZnlNQVFTQnJJZ1FrQUNBRVFSQnFJQUVRNkFjZ0JDZ0NGQ0VCSUFRb0FoQWhCU0FFUVFocUlBSWdBeENkQnlBRUlBUW9BZ3dpXFxcbkF6WUNIQ0FFSUFRb0FnZ2lBallDR0NBRUlBVWdBaUFERVBnQklBUW9BZ1FoQXlBRUtBSUFJUUlnQkVFWWFoRHBDeUFCSUFFb0FnQkJmMlxcXG5vMkFnQWdBQ0FDUVFCSE5nSUlJQUFnQTBFQUlBSWJOZ0lFSUFBZ0F6WUNBQ0FFUVNCcUpBQUxtd0VCQW44akFFRWdheUlFSkFBZ0JFRVFcXFxuYWlBQkVPZ0hJQVFvQWhRaEFTQUVLQUlRSVFVZ0JFRUlhaUFDSUFNUW5RY2dCQ0FFS0FJTUlnTTJBaHdnQkNBRUtBSUlJZ0kyQWhnZ0JDXFxcbkFGSUFJZ0F4Q3BBU0FFS0FJRUlRTWdCQ2dDQUNFQ0lBUkJHR29RNlFzZ0FTQUJLQUlBUVg5cU5nSUFJQUFnQWtFQVJ6WUNDQ0FBSUFOQlxcXG5BQ0FDR3pZQ0JDQUFJQU0yQWdBZ0JFRWdhaVFBQzVZQkFRSi9Jd0JCTUdzaUF5UUFBa0FDUUFKQUlBQW9BZ2hCZ0lERUFFWU5BQ0FBTHdcXFxuRUFJZ1JCQTBzTkFTQUFJQVJCQVdvN0FRQWdBQ0FFUVFOMGFpSUFRUWhxSUFJMkFnQWdBRUVFYWlBQk9nQUFEQUlMSUFCQkRHb2dBU0FDXFxcbkVQQUdEQUVMSUFKQmdJREVBRVlOQUNBRFFRaHFJQUFnQVNBQ0VOOEdJQUFRK1FvZ0FDQURRUWhxUVNRUXBBMGFDeUFEUVRCcUpBQUxtd1xcXG5FQkEzOGpBRUV3YXlJQ0pBQWdBa0g0Z3NBQUVJRUdJQUpCRUdwQkdHb2lBeUFDS1FNSU53TUFJQUpCRUdwQkVHb2lCQ0FDS1FNQU53TUFcXFxuSUFKQkFEWUNIQ0FDUWdBM0FoUWdBa0dBZzhBQU5nSVFJQUpCRUdvZ0FSQ2JDQ0FBUVJocUlBTXBBd0EzQXdBZ0FFRVFhaUFFS1FNQU53XFxcbk1BSUFCQkNHb2dBa0VRYWtFSWFpa0RBRGNEQUNBQUlBSXBBeEEzQXdBZ0FrRXdhaVFBQzVzQkFRTi9Jd0JCTUdzaUFpUUFJQUpCK0lMQVxcXG5BQkNCQmlBQ1FSQnFRUmhxSWdNZ0Fpa0RDRGNEQUNBQ1FSQnFRUkJxSWdRZ0Fpa0RBRGNEQUNBQ1FRQTJBaHdnQWtJQU53SVVJQUpCZ0lcXFxuUEFBRFlDRUNBQ1FSQnFJQUVRbWdnZ0FFRVlhaUFES1FNQU53TUFJQUJCRUdvZ0JDa0RBRGNEQUNBQVFRaHFJQUpCRUdwQkNHb3BBd0EzXFxcbkF3QWdBQ0FDS1FNUU53TUFJQUpCTUdva0FBdVlBUUVEZnlNQVFUQnJJZ01rQUNBREVOQUlJQU5CRUdwQkdHb2lCQ0FES1FNSU53TUFJQVxcXG5OQkVHcEJFR29pQlNBREtRTUFOd01BSUFOQkFEWUNIQ0FEUWdBM0FoUWdBMEdBZzhBQU5nSVFJQU5CRUdvZ0FTQUNFTElJSUFCQkdHb2dcXFxuQkNrREFEY0RBQ0FBUVJCcUlBVXBBd0EzQXdBZ0FFRUlhaUFEUVJCcVFRaHFLUU1BTndNQUlBQWdBeWtERURjREFDQURRVEJxSkFBTG53XFxcbkVCQVg4akFFRVFheUlFSkFBQ1FDQUFJQUVnQWhDeEJTSUNEUUFnQkVFSWFpQUFLQUlBSWdBUXNRd2dCRUVJYWhDOUJ5SUNEUUFDUUFKQVxcXG5JQU1vQWdoQmdKVHIzQU5IRFFBZ0FDZ0NBRUhOZ3NBQVFRUVFpQXdnQkVFRU9nQUlJQVJCQ0dvUXZRY2hBZ3dCQ3lBRElBQVFzQU1oQWdcXFxuc2dBZzBBSUFCQkVHcEJBVG9BQUNBRVFRUTZBQWdnQkVFSWFoQzlCeUVDQ3lBRVFSQnFKQUFnQWd1TkFRSUJmd0YrQWtBZ0FhMGdBNjErXFxcbklnVkNJSWluRFFBQ1FBSkFBa0FnQWlBRnB5SUJha0YvYWlJRUlBRkpEUUFnQXlBRVFRQWdBbXR4SWdGcVFRaHFJZ01nQVVrTkFTQURRWVxcXG5DQWdJQjRJQUpyU3cwQ0lBQWdBVFlDQ0NBQUlBTTJBZ1FnQUNBQ05nSUFEd3NnQUVFQU5nSUFEd3NnQUVFQU5nSUFEd3NnQUVFQU5nSUFcXFxuRHdzZ0FFRUFOZ0lBQzVNQkFRVi9Jd0JCSUdzaUFpUUFJQUpCQURZQ0ZDQUNJQUFvQWdRaUF5QUJwM0VpQkRZQ0VDQUFLQUlBSVFWQkNDXFxcbkVHQWtBRFFDQUNJQVVnQkdvcEFBQTNBeGdnQWtFSWFpQUFJQUpCR0dvZ0FrRVFhaERiQ0NBQ0tBSUlEUUVnQWlBR05nSVVJQUlnQkNBR1xcXG5haUFEY1NJRU5nSVFJQVpCQ0dvaEJnd0FDd3NnQUNBQ0tBSU1FS1lKSVFZZ0FrRWdhaVFBSUFZTG1BRUJBWDhqQUVFZ2F5SURKQUFDUUFcXFxuSkFBMEFDUUNBQ0RRQkJBQ0VDREFNTElBTkJDR29nQUJEWUJpQURMUUFJRFFFQ1FDQURMUUFKRFFBZ0EwRUZOZ0lRSUFBZ0EwRVFhaERmXFxcbkNDRUNEQU1MQWtBZ0F5MEFDaUFCTFFBQVJ3MEFJQUZCQVdvaEFTQUNRWDlxSVFJTUFRc0xJQU5CQ1RZQ0VDQUFJQU5CRUdvUTN3Z2hBZ1xcXG53QkN5QURLQUlNSVFJTElBTkJJR29rQUNBQ0M1b0JBUU4vSXdCQkVHc2lBeVFBQWtBQ1FDQUJEUUJCd0FBaEFnd0JDd0pBSUFGQi8vLy9cXFxuRDBzTkFDQUJRUVowSWdSQmYwd05BQ0FCUVlDQWdCQkpRUVowSVFVQ1FBSkFJQUlOQUNBRFFRaHFJQVVnQkJEdEJ5QURLQUlJSVFJTUFRXFxcbnNnQXlBRklBUkJBUkNKQ0NBREtBSUFJUUlMSUFJTkFTQUZJQVFRbWcwQUN4Q1hDQUFMSUFBZ0FUWUNCQ0FBSUFJMkFnQWdBMEVRYWlRQVxcXG5DNThCQWdKL0FYNGpBRUVRYXlJQ0pBQWdBU2tDQUNFRUlBRXRBQWdoQXlBQ1FRdHFJQUZCQzJvdEFBQTZBQUFnQWlBQkx3QUpPd0FKSUFcXFxuQkJBQkNwQ2lBQ0lBTTZBQWdnQWlBRU53TUFBa0FnQXcwQUEwQUNRQUpBSUFJUXlBa2lBVUV2UmlJRERRQWdBVUhjQUVZTkFDQUJRWUNBXFxcbnhBQkdEUU1nQWtFQk9nQUlEQUVMSUFBZ0FSRGVCQXNnQXcwQUlBRkIzQUJHRFFBTEN5QUNRUkJxSkFBTG1RRUJBMzhqQUVFUWF5SURKQVxcXG5BQ1FBSkFJQUVOQUVFRUlRSU1BUXNDUUNBQlFhclZxdFVBU3cwQUlBRkJER3dpQkVGL1RBMEFJQUZCcTlXcTFRQkpRUUowSVFVQ1FBSkFcXFxuSUFJTkFDQURRUWhxSUFVZ0JCRGpCeUFES0FJSUlRSU1BUXNnQXlBRklBUVE1QWNnQXlnQ0FDRUNDeUFDRFFFZ0JTQUVFSm9OQUFzUWx3XFxcbmdBQ3lBQUlBRTJBZ1FnQUNBQ05nSUFJQU5CRUdva0FBdVdBUUVEZnlNQVFUQnJJZ0lrQUNBQ0VOQUlJQUpCRUdwQkdHb2lBeUFDS1FNSVxcXG5Od01BSUFKQkVHcEJFR29pQkNBQ0tRTUFOd01BSUFKQkFEWUNIQ0FDUWdBM0FoUWdBa0dBZzhBQU5nSVFJQUpCRUdvZ0FSRHFBeUFBUVJcXFxuaHFJQU1wQXdBM0F3QWdBRUVRYWlBRUtRTUFOd01BSUFCQkNHb2dBa0VRYWtFSWFpa0RBRGNEQUNBQUlBSXBBeEEzQXdBZ0FrRXdhaVFBXFxcbkM1OEJBUUYvSXdCQklHc2lBeVFBQWtBQ1FDQUFLQUlJSUFKTkRRQWdBMEVZYWlBQUlBSkJ1STNCQUJDaUJ5QURRUkJxSUFNb0FoZ2dBeVxcXG5nQ0hCQ1BDQ0FES0FJUVJRMEJJQUlnQXlnQ0ZHcEJBV29oQWdKQUlBRkIvd0Z4RFFBZ0EwRUlhaUFBSUFKQjJJM0JBQkNpQnlBREtBSUlcXFxuSUFNb0Fnd1FrQWdOQVFzZ0FDQUNFS0FHQ3lBRFFTQnFKQUFQQzBIQWdzRUFRU3RCeUkzQkFCQ0RCd0FMbHdFQkEzOGdBRUVNYWlnQ0FDXFxcbkVCSUFBb0FoQWhBZ05BQWtBQ1FBSkFJQUlnQVU4TkFDQUFLQUlJSWdFZ0FrRURkR29vQWdBaUF5QUFLQUlVUmcwQkN5QUFFSVVESWdKQlxcXG5nSURFQUVZTkFTQUFJQUFvQWhSQkFXbzJBaFFnQWc4TElBQWdBMEVCYWpZQ0ZDQUFJQUpCQVdvMkFoQWdBU0FDUVFOMGFpZ0NCQThMSUFcXFxuQW9BaEFpQWlBQUtBSU1JZ0ZKRFFBTFFZQ0F4QUFMbVFFQkEzOGpBRUVRYXlJREpBQUNRQUpBSUFFTkFFRUVJUUlNQVFzQ1FDQUJRZi8vXFxcbi8vOEJTdzBBSUFGQkFuUWlCRUYvVEEwQUlBRkJnSUNBZ0FKSlFRSjBJUVVDUUFKQUlBSU5BQ0FEUVFocUlBVWdCQkQzQnlBREtBSUlJUVxcXG5JTUFRc2dBeUFGSUFRUStBY2dBeWdDQUNFQ0N5QUNEUUVnQlNBRUVKb05BQXNRbHdnQUN5QUFJQUUyQWdRZ0FDQUNOZ0lBSUFOQkVHb2tcXFxuQUF1WkFRRURmeU1BUVJCcklnTWtBQUpBQWtBZ0FRMEFRUVFoQWd3QkN3SkFJQUZCLy8vLy93QkxEUUFnQVVFRGRDSUVRWDlNRFFBZ0FVXFxcbkdBZ0lDQUFVbEJBblFoQlFKQUFrQWdBZzBBSUFOQkNHb2dCU0FFRVBjSElBTW9BZ2doQWd3QkN5QURJQVVnQkJENEJ5QURLQUlBSVFJTFxcXG5JQUlOQVNBRklBUVFtZzBBQ3hDWENBQUxJQUFnQVRZQ0JDQUFJQUkyQWdBZ0EwRVFhaVFBQzVvQkFnTi9BWDRqQUVFZ2F5SUNKQUFnQVVcXFxuRUVhaUVEQWtBZ0FTZ0NCQTBBSUFFb0FnQWhBU0FDUVJCcVFRaHFJZ1JCQURZQ0FDQUNRZ0UzQXhBZ0FpQUNRUkJxTmdJY0lBSkJIR3BCXFxcbjRPRE5BQ0FCRUcwYUlBSkJDR29nQkNnQ0FDSUJOZ0lBSUFJZ0Fpa0RFQ0lGTndNQUlBTkJDR29nQVRZQ0FDQURJQVUzQWdBTElBQkIvT1xcXG43TkFEWUNCQ0FBSUFNMkFnQWdBa0VnYWlRQUM0WUJBZ1YvQVg1QkFDRUVBa0FDUUNBQ3JTQUJLQUlFSWdWQkFXcXRmaUlKUWlDSXB3MEFcXFxuSUFNZ0NhY2lCbXBCZjJvaUJ5QUdTUTBCUVFBaEJDQUZJQWRCQUNBRGEzRWlBbXBCQ1dvaUNDQUNTUTBBSUFoQmdJQ0FnSGdnQTJ0TERRXFxcbkVnQXlFRURBRUxDeUFBSUFRMkFnUWdBRUVJYWlBSU5nSUFJQUFnQVNnQ0FDQUNhellDQUF1VkFRRUJmeU1BUWNBQWF5SUVKQUFDUUNBQVxcXG5JQUVnQWhDeEJTSUNEUUFnQkVFWWFpQUFLQUlBSWdBUXNRd2dCRUVZYWhDOUJ5SUNEUUFnQkVFSWFpQUVRUmhxSUFNcEF3QVFrUUlnQUNcXFxuZ0NBQ0FFS0FJSUlBUW9BZ3dRaUF3Z0JFRUVPZ0FRSUFSQkVHb1F2UWNpQWcwQUlBQkJFR3BCQVRvQUFDQUVRUVE2QUJnZ0JFRVlhaEM5XFxcbkJ5RUNDeUFFUWNBQWFpUUFJQUlMbFFFQkFYOGpBRUhBQUdzaUJDUUFBa0FnQUNBQklBSVFzUVVpQWcwQUlBUkJHR29nQUNnQ0FDSUFFTFxcXG5FTUlBUkJHR29RdlFjaUFnMEFJQVJCQ0dvZ0JFRVlhaUFES0FJQUVKVUNJQUFvQWdBZ0JDZ0NDQ0FFS0FJTUVJZ01JQVJCQkRvQUVDQUVcXFxuUVJCcUVMMEhJZ0lOQUNBQVFSQnFRUUU2QUFBZ0JFRUVPZ0FZSUFSQkdHb1F2UWNoQWdzZ0JFSEFBR29rQUNBQ0M1Z0JBZ04vQVg1QmdBXFxcbkVoQWdKQUlBQW9BZ0FpQXlBQmFpSUVLUUFBSWdVZ0JVSUJob05DZ0lHQ2hJaVFvTUNBZjRONnAwRURkaUFESUFBb0FnUWdBVUY0YW5GcVxcXG5JZ0VwQUFBaUJTQUZRZ0dHZzBLQWdZS0VpSkNnd0lCL2czbW5RUU4yYWtFSFN3MEFJQUFnQUNnQ0NFRUJhallDQ0VIL0FTRUNDeUFFSUFcXFxuSTZBQUFnQVVFSWFpQUNPZ0FBSUFBZ0FDZ0NERUYvYWpZQ0RBdVdBUUVCZnlNQVFUQnJJZ0lrQUFKQUFrQWdBQ2dDREEwQUlBQWdBUkR4XFxcbkFTRUFEQUVMSUFKQkxHcEJDRFlDQUNBQ1FSaHFRUXhxUVFnMkFnQWdBa0VNYWtJRE53SUFJQUpCQXpZQ0JDQUNRZnpQd0FBMkFnQWdBaVxcXG5BQVFReHFOZ0lnSUFKQnFRRTJBaHdnQWlBQU5nSVlJQUlnQUVFUWFqWUNLQ0FDSUFKQkdHbzJBZ2dnQVNBQ0VLMEZJUUFMSUFKQk1Hb2tcXFxuQUNBQUM1Y0JBUU4vSXdCQkVHc2lBU1FBSUFCQnhBQnFLQUlBSVFJQ1FBSkFJQUFvQWdoQmdJREVBRVlOQUNBQlFRQWdBQzhCQUNBQVFRXFxcblJxUVFSQjhKN0JBQkR1QmlBQktBSUVJUU1nQVNnQ0FDRUFEQUVMSUFCQkZHb29BZ0FoQXlBQUtBSU1JUUFMQWtBZ0F5QUNUdzBBSUFJZ1xcXG5BMEdFbDhFQUVJSUZBQXNnQUNBQ1FRTjBhaUFESUFKcklBRkJER29RdEFFZ0FVRVFhaVFBQzVZQkFRTi9Jd0JCRUdzaUFTUUFJQUJCTUdcXFxub29BZ0FoQWdKQUFrQWdBQ2dDQ0VHQWdNUUFSZzBBSUFGQkFDQUFMd0VBSUFCQkJHcEJCRUh3bnNFQUVPNEdJQUVvQWdRaEF5QUJLQUlBXFxcbklRQU1BUXNnQUVFVWFpZ0NBQ0VESUFBb0Fnd2hBQXNDUUNBRElBSlBEUUFnQWlBRFFZU1h3UUFRZ2dVQUN5QUFJQUpCQTNScUlBTWdBbVxcXG5zZ0FVRU1haEMwQVNBQlFSQnFKQUFMakFFQ0FuOEJmZ0pBQWtBZ0FFRzU4OTN4ZVd3Z0FFR21zb1dLQTJ3aUJYT3RJQUt0SWdkK1FpQ0lcXFxucHlJR0lBSlBEUUFnQVNBR1FRRjBhaThCQUNBQWFrRzU4OTN4ZVd3Z0JYT3RJQWQrUWlDSXB5SUNJQVJKRFFFZ0FpQUVRZHpKekFBUWdRXFxcblVBQ3lBR0lBSkJ6TW5NQUJDQkJRQUxJQU1nQWtFQ2RHb29BZ0FpQWtFQUlBSkJDSFlnQUVZYkM1RUJBZ0YvQVg0akFFRWdheUlESkFBZ1xcXG5BeUFDTmdJTUlBTWdBVFlDQ0NBQVFSQnFJZ0VnQTBFSWFoRFhCQ0VFSUFNZ0EwRUlhallDRkNBRElBQTJBaHdnQXlBRFFSUnFOZ0lZSUFcXFxuTWdBQ0FFSUFOQkdHcEJqSi9BQUJEK0FnSkFJQU1vQWdCQkFFY2dBQ2dDQUVFQVIzRWlBZzBBSUFBZ0JDQURLQUlJSUFNb0Fnd2dBUkNtXFxcbkJSb0xJQU5CSUdva0FDQUNDNTRCQVFOL0l3QkJFR3NpQWlRQUlBRkJER29vQWdBaEF3SkFBa0FDUUFKQUFrQWdBU2dDQkE0Q0FBRURDeVxcXG5BRERRSkI0SUxBQUNFRFFRQWhBUXdCQ3lBRERRRWdBU2dDQUNJREtBSUVJUUVnQXlnQ0FDRURDeUFDUVFocUlBRkJBQkRWQkNBQ0tBSU1cXFxuSVFRZ0FpZ0NDQ0FESUFFUXBBMGhBeUFBSUFFMkFnZ2dBQ0FFTmdJRUlBQWdBellDQUF3QkN5QUFJQUVRaUFFTElBSkJFR29rQUF1VEFRXFxcbkVCZnlBQktBSUFJUUlDUUFKQUlBRW9BaWdOQUNBQVFRQTJBZ0FnQWtHQWdNUUFSdzBCSUFCQ0FUY0NCQThMQWtBZ0FrR0FnTVFBUncwQVxcXG5JQUJCQVRZQ0JDQUFRUWhxSUFGQk5Hb29BZ0FnQVVFd2FpZ0NBR3RCREc0aUFUWUNBQ0FBSUFFMkFnQVBDeUFBUVFBMkFnUWdBQ0FCUVRcXFxuUnFLQUlBSUFGQk1Hb29BZ0JyUVF4dU5nSUFEd3NnQUVFQU5nSUVDNDRCQVFGL0l3QkJNR3NpQWlRQUlBSWdBVFlDSENBQ1FSQnFJQUVRXFxcbkFnSkFBa0FnQWlnQ0VDSUJSUTBBSUFKQkNHb2dBU0FDS0FJVUVKMEhJQUpCSUdvZ0FpZ0NDQ0FDS0FJTUVJMExJQUlvQWlCRkRRQWdBQ1xcXG5BQ0tRTWdOd0lBSUFCQkNHb2dBa0VnYWtFSWFpZ0NBRFlDQUF3QkN5QUFJQUpCSEdvUTBnZ0xJQUpCSEdvUWhBc2dBa0V3YWlRQUM0c0JcXFxuQVFKL0l3QkJFR3NpQlNRQUFrQWdBeUFDU1EwQUlBTWdBVXNOQUFKQUlBTWdBVThOQUNBRElBSnJJZ1pCQ2s4TkFDQUZRUWhxSUFJZ0FrXFxcbkVLYWlJRElBRWdBeUFCU1JzaUF5QUFJQUZCd0p2QkFCRHZCaUFGS0FJSUlBVW9BZ3dnQmtFQklBWkJBVXNiSUFNUXlBVUxJQVZCRUdva1xcXG5BQ0FERHd0QmhKdkJBRUVzUWJDYndRQVFnd2NBQzRzQkFRSi9Jd0JCRUdzaUJTUUFBa0FnQXlBQ1NRMEFJQU1nQVVzTkFBSkFJQU1nQVVcXFxuOE5BQ0FESUFKcklnWkJDazhOQUNBRlFRaHFJQUlnQWtFS2FpSURJQUVnQXlBQlNSc2lBeUFBSUFGQndKdkJBQkR1QmlBRktBSUlJQVVvXFxcbkFnd2dCa0VCSUFaQkFVc2JJQU1RNWdRTElBVkJFR29rQUNBRER3dEJoSnZCQUVFc1FiQ2J3UUFRZ3djQUM2WUJBUU4vSXdCQkVHc2lBaVxcXG5RQVFlVGp6UUFoQTBFVElRUUNRQUpBQWtBQ1FDQUJMUUFBRGdRREFBRUNBd3NnQVMwQUFVRUNkQ0lCUWNqMXpRQnFLQUlBSVFNZ0FVR2tcXFxuOU0wQWFpZ0NBQ0VFREFJTElBRW9BZ1FpQVNnQ0JDRUVJQUVvQWdBaEF3d0JDeUFDUVFocUlBRW9BZ1FpQVNnQ0FDQUJLQUlFS0FJZ0VRXFxcblVBSUFJb0Fnd2hCQ0FDS0FJSUlRTUxJQUFnQkRZQ0JDQUFJQU0yQWdBZ0FrRVFhaVFBQzVVQkFRRi9Jd0JCTUdzaUFpUUFJQUFvQWdBaFxcXG5BQ0FDUVF4cVFiUUNOZ0lBSUFJZ0FDZ0NBQ0lBTmdJUUlBSkJ0UUkyQWdRZ0FpQUFhRFlDRkNBQlFSaHFLQUlBSVFBZ0FpQUNRUlJxTmdcXFxuSUlJQUlnQWtFUWFqWUNBQ0FCS0FJVUlRRWdBa0lDTndJa0lBSkJBellDSENBQ1FaeVp6Z0EyQWhnZ0FpQUNOZ0lnSUFFZ0FDQUNRUmhxXFxcbkVHMGhBU0FDUVRCcUpBQWdBUXVkQVFFQmZ5TUFRZEFBYXlJREpBQWdBMEVJYWlBQklBSVFSUUpBQWtBZ0F5Z0NFRUdBbE92Y0EwWU5BQ1xcXG5BQUlBTkJDR3BCd0FBUXBBMGFEQUVMSUFOQnlBQnFJQUVnQWhCYUFrQUNRQ0FETFFCSURRQWdBeTBBU1EwQklBQkJnSlRyM0FNMkFnZ01cXFxuQWdzZ0F5Z0NUQ0VDSUFCQmdaVHIzQU0yQWdnZ0FDQUNOZ0lBSUFOQkNHb1FwUXNNQVFzZ0FDQUJJQUlRUlFzZ0EwSFFBR29rQUF1RkFRXFxcbklCZndGK0FrQUNRQ0FCclNBRHJYNGlCVUlnaUtjTkFDQUNJQVduSWdGcVFYOXFJZ1FnQVU4TkFRc2dBRUVBTmdJQUR3c0NRQ0FESUFSQlxcXG5BQ0FDYTNFaUFXcEJDR29pQXlBQlNRMEFBa0FnQTBHQWdJQ0FlQ0FDYTBzTkFDQUFJQUUyQWdnZ0FDQUROZ0lFSUFBZ0FqWUNBQThMSUFcXFxuQkJBRFlDQUE4TElBQkJBRFlDQUF1VkFRRUNmeU1BUVNCcklnSWtBQ0FCUVFOMElRTUNRQUpBQWtBZ0FVSC8vLy8vQVVzTkFBSkFJQU5CXFxcbi9QLy8vd2RMRFFBZ0FrRVlhaUFETmdJQUlBSkJCRFlDRkVFQUlRRU1Bd3NnQWtFQU5nSVVEQUVMSUFKQkdHb2dBellDQUNBQ1FRQTJBaFxcXG5RTFFRRWhBUXNnQWlBQk5nSVFJQUpCQ0dvZ0FrRVFhaEQ2QmlBQUlBSW9BZ3dnQWlnQ0NCQ3lEQ0FDUVNCcUpBQUxrZ0VCQW44akFFRVFcXFxuYXlJREpBQUNRQUpBSUFFdEFBQkZEUUJCQWlFRURBRUxJQU1nQWhEOEJpQURLQUlFSVFJQ1FDQURLQUlBUlEwQVFRRWhCQ0FCUVFFNkFBXFxcbkFNQVFzZ0F5QUNOZ0lNQWtBQ1FDQURRUXhxRU1RTURRQkJBQ0VFSUFJUUZ5RUNEQUVMSUFGQkFUb0FBRUVDSVFRTElBTkJER29RbGdzTFxcXG5JQUFnQWpZQ0JDQUFJQVEyQWdBZ0EwRVFhaVFBQzVJQkFRRi9Jd0JCRUdzaUF5UUFBa0FnQUNnQ0NFVU5BQ0FBUVJScUlBQkJER29vQWdcXFxuQVFvQVlMQWtBQ1FDQUJSUTBBSUFNZ0FqWUNCQ0FESUFFMkFnQWdBMEVBT2dBSUlBTWdBRUVjYWlnQ0FEWUNEQ0FBUVF4cUlBTkJDR3BCXFxcbjZJL0JBQkQ5QmpZQ0FDQUFRUUUyQWdnZ0FFRVVha0VqRU40RUlBQWdBeERJQXd3QkN5QUFRUUEyQWdnTElBTkJFR29rQUF1UEFRRUdmeVxcXG5NQVFSQnJJZ0lrQUNBQktBSUlJUU5CQUNFRUlBRkJBRFlDQ0FKQUlBTkZEUUFnQWtFSWFpQUJJQUZCREdvb0FnQWlCVUVCYWhDQUJ5QUNcXFxuS0FJSUlRWWdBaUFDS0FJTUlnTkJBQkRWQkNBQ0tBSUVJUWNnQWlnQ0FDSUVJQVlnQXhDa0RSb2dBVUVVYWlBRkVLQUdJQUFnQXpZQ0NDXFxcbkFBSUFjMkFnUUxJQUFnQkRZQ0FDQUNRUkJxSkFBTGpnRUJBbjhqQUVFZ2F5SURKQUFnQTBFSWFpQUJMd0VBSWdRZ0FtcEJBQkNFQkNBRFxcXG5RUkJxUVFocUlnSkJBRFlDQUNBRElBTXBBd2czQXhBZ0EwRUFJQVFnQVVFRWFrRUVRZkNld1FBUTdnWWdBMEVRYWlBREtBSUFJZ1FnQkNcXFxuQURLQUlFUVFOMGFoREVCaUFCUVFBN0FRQWdBQ0FES1FNUU53SUFJQUJCQ0dvZ0FpZ0NBRFlDQUNBRFFTQnFKQUFMaXdFQkFuOGpBRUVnXFxcbmF5SURKQUFnQTBFSWFpQUJMd0VBSWdRZ0FtcEJBQkNEQkNBRFFRQTJBaGdnQXlBREtRTUlOd01RQWtBZ0JFRUZTUTBBSUFSQkJFSHduc1xcXG5FQUVJTUZBQXNnQTBFUWFpQUJRUVJxSWdJZ0FpQUVRUUowYWhEREJpQUJRUUE3QVFBZ0FDQURLUU1RTndJQUlBQkJDR29nQTBFUWFrRUlcXFxuYWlnQ0FEWUNBQ0FEUVNCcUpBQUxvUUVCQW44Z0FTOEFBQ0lDSUFFdEFBSWlBMm9oQVFKQUFrQUNRQ0FDUlEwQUFrQWdBa0djNUFCSkRRXFxcbkFnQWtHYzVBQkdEUUVNQWdzZ0FrRzhsTVFBYWl3QUFFRkFTQTBCQ3lBQlJRMEJBa0FnQVVHYzVBQkpEUUFnQVVHYzVBQkhEUUVNQWdzZ1xcXG5BVUc4bE1RQWFpd0FBRUcvZjBvTkFRdEJ2SlRFQUVHYzVBQWdBaUFCUVp5aXdRQVE1QXNBQ3lBQUlBTTJBZ1FnQUNBQ1FieVV4QUJxTmdcXFxuSUFDNHNCQVFGL0l3QkJFR3NpQXlRQUlBTWdBallDRENBRElBRTJBZ2dEUUNBRElBTkJDR29RbXdVQ1FBSkFJQU10QUFCQkFYRkZEUUFnXFxcbkF5MEFBU0VCSUFBb0FnZ2lBaUFBS0FJRVJ3MEJJQUFnQXlnQ0RDQURLQUlJYTBFQ2FrRURia0VCYWhDcUNnd0JDeUFEUVJCcUpBQVBDeVxcXG5BQUlBSkJBV28yQWdnZ0FDZ0NBQ0FDYWlBQk9nQUFEQUFMQzQ4QkFRSi9Jd0JCd0FCcklnTWtBQUpBQWtBZ0FrVU5BRUVCSVFRZ0FTMEFcXFxuQUVFdlJnMEJDMEVBSVFRTElBTWdCRG9BUGlBRFFRWTZBQ2dnQXlBQ05nSWtJQU1nQVRZQ0lDQURRWUFFT3dFOElBTWdBMEVnYWhBNElBXFxcbk1vQWdRaEFTQURMUUFBSVFJZ0FDQURLQUlJTmdJRUlBQkJBQ0FCUVFBZ0FrRUpSaHNnQWtFS1JoczJBZ0FnQTBIQUFHb2tBQXVGQVFFQ1xcXG5meU1BUVJCcklnTWtBQUpBSUFGQkIycEJBQ0FCYTNFaUJDQUVRWGhxU1EwQUlBUWdBbW9pQWlBRVNRMEFJQUpCZ0lDQWdIZ2dBVUVFSUFcXFxuRkJCRXNiSWdGclN3MEFJQUFnQVRZQ0FDQUFJQUVnQW1wQmYycEJBQ0FCYTNFMkFnUWdBMEVRYWlRQUR3dEJtUHpOQUVFcklBTkJDR3BCXFxcbnhQek5BRUc0L2MwQUVNSUVBQXUwQVFJQmZ3SitJd0JCMEFCcklnSWtBQ0FDUWNBQWFrSUFOd01BSUFKQ0FEY0RPQ0FDSUFBcEF3Z2lBelxcXG5jRE1DQUNJQUFwQXdBaUJEY0RLQ0FDSUFOQzg4clJ5NmVNMmJMMEFJVTNBeUFnQWlBRFF1M2VrZk9Xek55MzVBQ0ZOd01ZSUFJZ0JFTGhcXFxuNUpYejF1elp2T3dBaFRjREVDQUNJQVJDOWNyTmc5ZXMyN2Z6QUlVM0F3Z2dBaUFCS0FJQU5nSk1JQUpCQ0dvZ0FrSE1BR3BCQkJDM0FpXFxcbkFDUVFocUVOOEJJUU1nQWtIUUFHb2tBQ0FEQzRNQkFRSi9RUUFoQlFKQUFrQWdBaUFCU1EwQUFrQWdBVVVOQUFKQUlBRWdCRWtOQUNBQlxcXG5JQVJIRFFJTUFRc2dBeUFCYWl3QUFFRkFTQTBCQ3dKQUlBSkZEUUFDUUNBQ0lBUkpEUUFnQWlBRVJnMEJEQU1MSUFNZ0Ftb3NBQUJCUUVcXFxuZ05BZ3NnQWlBQmF5RUdJQU1nQVdvaEJRd0JDd3NnQUNBR05nSUVJQUFnQlRZQ0FBdUpBUUVFZnlNQVFSQnJJZ01rQUNBRFFRaHFRUUFnXFxcbkFpQUJLQUlBSUFFb0FnUkIzTlRBQUJDVUJ5QURLQUlNSVFFZ0F5Z0NDQ0VDUVFBaEJFRUJJUVVEUUFKQUlBRU5BQ0FBSUFRMkFnUWdBQ1xcXG5BRk5nSUFJQU5CRUdva0FBOExRUUFnQkVFQmFpQUNMUUFBUVFwR0lnWWJJUVFnQVVGL2FpRUJJQUpCQVdvaEFpQUZJQVpxSVFVTUFBc0xcXFxua3dFQkFYOGpBRUhBQUdzaUFpUUFJQUpDQURjRE9DQUNRVGhxSUFBb0FnQVFLU0FDUVJScVFnRTNBZ0FnQWlBQ0tBSThJZ0EyQWpBZ0FpXFxcbkFBTmdJc0lBSWdBaWdDT0RZQ0tDQUNRZFlCTmdJa0lBSkJBallDRENBQ1FmRC93QUEyQWdnZ0FpQUNRU2hxTmdJZ0lBSWdBa0VnYWpZQ1xcXG5FQ0FCSUFKQkNHb1FyUVVoQUNBQ1FTaHFFT1FLSUFKQndBQnFKQUFnQUF1REFRRUNmMEVBSVFVQ1FBSkFJQUlnQVVrTkFBSkFJQUZGRFFcXFxuQUNRQ0FCSUFSSkRRQWdBU0FFUncwQ0RBRUxJQU1nQVdvc0FBQkJRRWdOQVFzQ1FDQUNSUTBBQWtBZ0FpQUVTUTBBSUFJZ0JFWU5BUXdEXFxcbkN5QURJQUpxTEFBQVFVQklEUUlMSUFJZ0FXc2hCaUFESUFGcUlRVU1BUXNMSUFBZ0JqWUNCQ0FBSUFVMkFnQUxpQUVCQW44Z0FTZ0NDQ1xcXG5FQ0FrQUNRQUpBSUFFb0FnQWlBdzBBSUFJTkFVRUFJUUZCQUNFRERBSUxJQUVvQWdRZ0EydEJCM1loQXdKQUlBSU5BRUVBSVFFTUFnc2dcXFxuQVVFTWFpZ0NBQ0FDYTBIWUFHNGlBU0FEYWlFRERBRUxJQUZCREdvb0FnQWdBbXRCMkFCdUlnRWhBd3NnQUVFQk5nSUVJQUFnQVRZQ0FDXFxcbkFBUVFocUlBTTJBZ0FMbXdFQ0FYOEJmaU1BUVNCcklnSWtBQUpBQWtBQ1FBSkFJQUVvQWdBT0F3QUJBZ0FMSUFBZ0FTc0RDQkNIQnd3Q1xcXG5DeUFBUVFBMkFnQWdBQ0FCS1FNSU53TUlEQUVMQWtBQ1FDQUJLUU1JSWdOQ0FGTU5BQ0FBSUFNM0F3aEJBQ0VCREFFTElBSkJBam9BQ0NcXFxuQUNJQU0zQXhBZ0FDQUNRUWhxSUFKQkdHcEJ1SUhBQUJEcEJEWUNCRUVCSVFFTElBQWdBVFlDQUFzZ0FrRWdhaVFBQzRRQkFRRi9Jd0JCXFxcbndBQnJJZ0lrQUNBQ1FSaHFJQUZCR0dvcEFnQTNBd0FnQWtFUWFpQUJRUkJxS1FJQU53TUFJQUpCQ0dvZ0FVRUlhaWtDQURjREFDQUNJQVxcXG5FcEFnQTNBd0FDUUNBQUlBSVF4d0VpQVVIL0FYRkJBMGNOQUNBQ1FTQnFJQUlRT0VGL1FRQWdBaTBBSUVFS1J4c2hBUXNnQWtIQUFHb2tcXFxuQUNBQlFmOEJjVVVMa3dFQkFuOGpBRUVRYXlJQ0pBQWdBa0VJYWlBQlFRRkJBeENiQXlBQ0tBSUlJUUVDUUNBQ0xRQU1JZ05CQTBZTkFDXFxcbkFDSUFNNkFBUWdBaUFCTmdJQUlBSkJyS3JBQUVFSElBQkJFR29RdGdVaUFRMEFJQUpCczZyQUFFRURJQUJCTUdvUXN3VWlBUTBBSUFKQlxcXG50cXJBQUVFRElBQVErUU1pQVEwQUlBSW9BZ0FnQWkwQUJCRG5CaUVCQ3lBQ1FSQnFKQUFnQVF1R0FRRUNmeU1BUVNCcklnSWtBQ0FDUVFcXFxuaHFJQUVvQWdnaUEwRUFFTlVFSUFKQkFEWUNHQ0FDSUFJcEF3ZzNBeEFnQTBFTWJDRURJQUVvQWdBaEFRTkFBa0FnQXcwQUlBQWdBaWtEXFxcbkVEY0NBQ0FBUVFocUlBSkJFR3BCQ0dvb0FnQTJBZ0FnQWtFZ2FpUUFEd3NnQTBGMGFpRURJQUpCRUdvZ0FSRG1DeUFCUVF4cUlRRU1BQVxcXG5zTG5BRUJBMzhqQUVFUWF5SUJKQUFnQVNBQUVMY0ZBa0FDUUNBQkxRQUFEUUJCQUNFQ0FrQUNRQUpBSUFFdEFBRWlBMEdTZjJvT0NBUUJcXFxuQVFFRUFRUUNBQXNDUUNBRFFaNS9hZzRGQkFFQkFRUUFDeUFEUVNKR0RRTWdBMEV2UmcwRElBTkIzQUJHRFFNTElBRkJERFlDQUNBQUlBXFxcbkVRNEFnaEFnd0NDeUFCSUFBUXdBSWdBUzhCQUVVTkFRc2dBU2dDQkNFQ0N5QUJRUkJxSkFBZ0FndUdBUUVFZnlNQVFSQnJJZ01rQUVFQVxcXG5JUVFnQTBFSWFpQUNRUUFRelFRZ0F5Z0NEQ0VGSUFNb0FnZ2dBU0FDRUtRTklRWUNRQU5BSUFJZ0JFWU5BU0FHSUFScUlnRWdBUzBBQUNcXFxuSUJRYjkvYWtIL0FYRkJHa2xCQlhRZ0FYSTZBQUFnQkVFQmFpRUVEQUFMQ3lBQUlBSTJBZ2dnQUNBR05nSUFJQUFnQlRZQ0JDQURRUkJxXFxcbkpBQUxvQUVCQW44akFFRWdheUlDSkFCQkFDRURJQUpCQURzQkdDQUNRUkJxSUFGQjVQakhBRUhrSFVHc3RNZ0FRZVFkSUFKQkdHb1FnUVxcXG5NQ1FBSkFJQUl2QVJBTkFBd0JDeUFDTHdFVUlRTWdBa0VJYWtITW9zb0FRZWNzSUFJdkFSSkI2TlhMQUJEcENDQUNJQUlvQWdnZ0FpZ0NcXFxuRENBRFFlalZ5d0FRK3drZ0FpZ0NCQ0VCSUFJb0FnQWhBd3NnQUNBQk5nSUVJQUFnQXpZQ0FDQUNRU0JxSkFBTG9BRUJBbjhqQUVFZ2F5XFxcbklDSkFCQkFDRURJQUpCQURzQkdDQUNRUkJxSUFGQnRPekZBRUdORUVIUWpNWUFRWTBRSUFKQkdHb1FnUU1DUUFKQUlBSXZBUkFOQUF3QlxcXG5DeUFDTHdFVUlRTWdBa0VJYWtHNGpjY0FRYzRhSUFJdkFSSkIxUGpIQUJEcENDQUNJQUlvQWdnZ0FpZ0NEQ0FEUWRUNHh3QVErd2tnQWlcXFxuZ0NCQ0VCSUFJb0FnQWhBd3NnQUNBQk5nSUVJQUFnQXpZQ0FDQUNRU0JxSkFBTGtBRUJBMzhqQUVFUWF5SUNKQUFDUUFKQUFrQUNRQ0FCXFxcbktBSUFEUUFnQVNnQ0JDSUREUUVNQWdzZ0FTZ0NDQ0lESUFFb0FneEdEUUVnQVNBRFFRaHFOZ0lJSUFNb0FnUWhCQ0FES0FJQUlRTU1BZ1xcXG5zZ0FrRUlhaUFESUFGQkNHb29BZ0FpQkNnQ0dCRUZBQ0FCSUFJcEF3ZzNBZ1FNQVF0QkFDRURDeUFBSUFRMkFnUWdBQ0FETmdJQUlBSkJcXFxuRUdva0FBdDVBZ0YvQVg0Q1FBSkFJQUpCQTBzTkFFRUFJUU5DQUNFRURBRUxJQUFnQVdvMUFBQWhCRUVFSVFNTEFrQWdBMEVCY2lBQ1R3XFxcbjBBSUFBZ0F5QUJhbW96QUFBZ0EwRURkSzJHSUFTRUlRUWdBMEVDY2lFREN3SkFJQU1nQWs4TkFDQUFJQU1nQVdwcU1RQUFJQU5CQTNTdFxcXG5oaUFFaENFRUN5QUVDNFlCQVFKL0lBQW9BZ0FnQUNBQkVMa0VJZ1JxTFFBQUlRVUNRQ0FBS0FJSURRQWdCVUVCY1VVTkFDQUFRUUVnQXhcXFxuQ3pDQ0FBSUFFUXVRUWhCQXNnQUNBRUlBVWdBUkNzQmlBQUtBSUFRUUFnQkd0QkdHeHFJZ1JCYUdvaUFDQUNLUUlBTndJQUlBQkJFR29nXFxcbkFrRVFhaWtDQURjQ0FDQUFRUWhxSUFKQkNHb3BBZ0EzQWdBZ0JBdVFBUUVCZnlNQVFkQUJheUlFSkFBZ0JFRVFhaUFBSUFFUW5RY2dCQ1xcXG5BRUtBSVVJZ0UyQXNRQklBUWdCQ2dDRUNJQU5nTEFBU0FFUVFocUlBSWdBeENkQnlBRUlBUW9BZ3dpQXpZQ3pBRWdCQ0FFS0FJSUlnSTJcXFxuQXNnQklBUkJHR29nQUNBQklBSWdBeER4QlNBRVFjZ0JhaERwQ3lBRVFjQUJhaERwQ3lBRVFSaHFFTWNHSVFFZ0JFSFFBV29rQUNBQkMzXFxcbmtDQVg4QmZnSkFBa0FnQWtFRFN3MEFRUUFoQTBJQUlRUU1BUXNnQUNBQmFqVUFBQ0VFUVFRaEF3c0NRQ0FEUVFGeUlBSlBEUUFnQUNBRFxcXG5JQUZxYWpNQUFDQURRUU4wcllZZ0JJUWhCQ0FEUVFKeUlRTUxBa0FnQXlBQ1R3MEFJQUFnQXlBQmFtb3hBQUFnQTBFRGRLMkdJQVNFSVFcXFxuUUxJQVFMa2dFQkFYOGpBRUhBQUdzaUJDUUFJQVJCRUdvZ0F5QUJJQUlRMFFVZ0JFRUNOZ0k0SUFSQkFUc0JOQ0FFSUFJMkFqQWdCRUVBXFxcbk5nSXNJQVJCQ0dvZ0JFRVFhaEQ4QkFKQUlBUW9BZ2dpQWcwQVFkRHZ3QUJCSzBHdzhjQUFFSU1IQUFzZ0JDZ0NEQ0VCSUFRZ0JFRVFhaFxcXG5EOEJDQUFJQVFwQXdBM0FnZ2dBQ0FCTmdJRUlBQWdBallDQUNBRVFjQUFhaVFBQzRNQkFRWi9JQUVvQWdnaUFpQUJLQUlFSWdNZ0FpQURcXFxuU3hzaEJDQUJLQUlBSVFVQ1FBTkFBa0FnQkNBQ1J3MEFRUUFoQmd3Q0MwRUJJUVlnQlNBQ2FpMEFBQ0lIUVhkcUlnTkJGMHNOQVVFQklBXFxcbk4wUVpPQWdBUnhSUTBCSUFFZ0FrRUJhaUlDTmdJSURBQUxDeUFBSUFZNkFBRWdBRUVBT2dBQUlBQkJBbW9nQnpvQUFBdUlBUUVCZnlNQVxcXG5RU0JySWdFa0FDQUJRUWhxSUFBUXRnUUNRQUpBQWtBZ0FTMEFDQTBBSUFFdEFBa05BU0FCUVFNMkFoQWdBQ0FCUVJCcUVNNElJUUFNQWdcXFxuc2dBU2dDRENFQURBRUxBa0FnQVMwQUNrRTZSdzBBSUFBZ0FDZ0NDRUVCYWpZQ0NFRUFJUUFNQVFzZ0FVRUdOZ0lRSUFBZ0FVRVFhaERPXFxcbkNDRUFDeUFCUVNCcUpBQWdBQXVIQVFFQmZ5TUFRY0FBYXlJREpBQWdBeUFDTmdJVUlBTWdBVFlDRUNBRElBQTJBZ3dnQTBFWWFrRU1ha1xcXG5JQ053SUFJQU5CTUdwQkRHcEJCVFlDQUNBRFFRSTJBaHdnQTBHQWtzQUFOZ0lZSUFOQkNEWUNOQ0FESUFOQk1HbzJBaUFnQXlBRFFSQnFcXFxuTmdJNElBTWdBMEVNYWpZQ01DQURRUmhxRU5ZRElRSWdBMEhBQUdva0FDQUNDNFlCQVFOL0lBQW9BZ1FpQWlBQnAzRWhBeUFBS0FJQUlRXFxcblJCQ0NFQUEzOENRQ0FFSUFOcUtRQUFRb0NCZ29TSWtLREFnSCtESWdGUURRQUNRQ0FFSUFGNnAwRURkaUFEYWlBQ2NTSURhaXdBQUVGL1xcXG5UQTBBSUFRcEF3QkNnSUdDaElpUW9NQ0FmNE42cDBFRGRpRURDeUFERHdzZ0F5QUFhaUFDY1NFRElBQkJDR29oQUF3QUN3dURBUUVHZnlcXFxuQUJLQUlJSWdJZ0FTZ0NCQ0lESUFJZ0Ewc2JJUVFnQVNnQ0FDRUZBa0FEUUFKQUlBUWdBa2NOQUVFQUlRWU1BZ3RCQVNFR0lBVWdBbW90XFxcbkFBQWlCMEYzYWlJRFFSZExEUUZCQVNBRGRFR1RnSUFFY1VVTkFTQUJJQUpCQVdvaUFqWUNDQXdBQ3dzZ0FDQUdPZ0FCSUFCQkFEb0FBQ1xcXG5BQVFRSnFJQWM2QUFBTGlBRUJBWDhqQUVFZ2F5SUJKQUFnQVVFSWFpQUFFTG9FQWtBQ1FBSkFJQUV0QUFnTkFDQUJMUUFKRFFFZ0FVRURcXFxuTmdJUUlBQWdBVUVRYWhEZENDRUFEQUlMSUFFb0Fnd2hBQXdCQ3dKQUlBRXRBQXBCT2tjTkFDQUFJQUFvQWdoQkFXbzJBZ2hCQUNFQURBXFxcbkVMSUFGQkJqWUNFQ0FBSUFGQkVHb1EzUWdoQUFzZ0FVRWdhaVFBSUFBTGlBRUJBMzhqQUVFZ2F5SURKQUFnQTBFQU5nSVlJQU1nQVNBQ1xcXG5hallDRkNBRElBRTJBaEFnQXlBQ05nSU1JQU1nQVRZQ0NDQURRUkJxSVFRQ1FBTkFJQU1nQkJEY0JBSkFJQU1vQWdRaUJVR0FnTVFBUndcXFxuMEFJQUloQlF3Q0N5QUZRU0ZKRFFBTElBTW9BZ0FoQlFzZ0FDQUNJQVZyTmdJRUlBQWdBU0FGYWpZQ0FDQURRU0JxSkFBTGl3RUJBbjhqXFxcbkFFRVFheUlDSkFBQ1FBSkFBa0FDUUNBQktBSUFEUUFnQVNnQ0NFVU5BaUFCUVF4cUlRTU1BUXNnQVVFRWFpRURDeUFDUVFocUlBRWdBU1xcXG5nQ01DQURLQUlBRU8wR0lBSW9BZ3doQVNBQ0tBSUlJUU1NQVFzZ0FpQUJJQUVvQWpBUWdBY2dBaWdDQkNFQklBSW9BZ0FoQXdzZ0FDQURcXFxuTmdJQUlBQWdBVFlDQkNBQ1FSQnFKQUFMaGdFQkJIOGpBRUVRYXlJQkpBQWdBU0FBS0FJQUlnSTJBZ2dnQVNBQ0lBQW9BZ2dpQTJvMkFnXFxcbndnQVNBQlFRaHFFSUFDQWtBZ0FTZ0NBRVVOQUNBQktBSUVJZ0pCZ0lERUFFWU5BRUYvSVFRQ1FDQUNRWUFCU1EwQVFYNGhCQ0FDUWY4UFxcXG5UUTBBUVgxQmZDQUNRWUNBQkVrYklRUUxJQUFnQkNBRGFqWUNDQXNnQVVFUWFpUUFDN01CQUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFcXFxuSkFJQUF0QUFBT0NnQUJBZ01FQlFZSENBa0FDeUFCUWN5VHdRQkJDaEQvQ2c4TElBRkJxNVBCQUVFaEVQOEtEd3NnQVVHWWs4RUFRUk1RXFxcbi93b1BDeUFCUVlTVHdRQkJGQkQvQ2c4TElBRkI4SkxCQUVFVUVQOEtEd3NnQVVIWWtzRUFRUmdRL3dvUEN5QUJRYjJTd1FCQkd4RC9DZ1xcXG44TElBRkJsSkxCQUVFcEVQOEtEd3NnQVVIaGtjRUFRVE1RL3dvUEN5QUJRYnlSd1FCQkpSRC9DZ3Q3QVFSL1FRQWhBUUpBQTBBZ0FDZ0NcXFxuQUNFQ0EwQUNRQ0FDUVFGeFJRMEFJQUpCQTBzTkF5QUJRUXBQRFFNZ0FVRURTU0VDSUFGQkFXb2lBeUVCSUFJTkFoQzJEaUFESVFFTUFnXFxcbnNnQUNBQ1FRRnlJQUFvQWdBaUF5QURJQUpHR3pZQ0FDQURJQUpISVFRZ0F5RUNJQVFOQUFzTER3c2dBaEM2REFBTGdnRUJBMzhqQUVFZ1xcXG5heUlDSkFBQ1FDQUFLQUlJSWdNZ0FVME5BQ0FBS0FJQUlBRkJBM1JxSWdRZ0JFRUlhaUFESUFGQmYzTnFRUU4wRUtNTkdpQUFJQU5CZjJcXFxubzJBZ2dnQWtFZ2FpUUFEd3NnQWtFVWFrSUFOd0lBSUFKQkFUWUNEQ0FDUWR5V3dRQTJBZ2dnQWtIa2xzRUFOZ0lRSUFKQkNHcEI5SnJCXFxcbkFCQ1lDQUFMaHdFQkFYOGpBRUhBQUdzaUJTUUFJQVVnQVRZQ0RDQUZJQUEyQWdnZ0JTQUROZ0lVSUFVZ0FqWUNFQ0FGUVJocVFReHFRZ1xcXG5JM0FnQWdCVUV3YWtFTWFrR3RBallDQUNBRlFRSTJBaHdnQlVHQW5zNEFOZ0lZSUFWQnJnSTJBalFnQlNBRlFUQnFOZ0lnSUFVZ0JVRVFcXFxuYWpZQ09DQUZJQVZCQ0dvMkFqQWdCVUVZYWlBRUVKZ0lBQXQrQVFSL0lBRW9BZ2dpQlNBQktBSUVJZ1lnQlNBR1N4c2hCaUFCS0FJQUlRXFxcbmNDUUFKQUEwQWdCaUFGUmcwQkFrQWdCeUFGYWkwQUFDSUlRVkJxUWY4QmNVRUtUdzBBSUFFZ0JVRUJhaUlGTmdJSURBRUxDeUFJUVNCeVxcXG5RZVVBUmcwQkN5QUFJQUVnQWlBRElBUVF4d0lQQ3lBQUlBRWdBaUFESUFRUW9BRUxoQUVCQTM4akFFRVFheUlDSkFBZ0FrRUlhaUFCUVFcXFxuRWdBRUVjYWlnQ0FDSURRUUJIRUpzRElBSW9BZ2doQVFKQUlBSXRBQXdpQkVFRFJnMEFJQUlnQkRvQUJDQUNJQUUyQWdBQ1FDQURSUTBBXFxcbklBSkJyS3JBQUVFSElBQVFzZ1VpQVEwQklBSXRBQVFoQkNBQ0tBSUFJUUVMSUFFZ0JCRG5CaUVCQ3lBQ1FSQnFKQUFnQVF1RkFRRUNmeVxcXG5NQVFSQnJJZ1VrQUNBRklBSWdBeUFFRUpjQ0lBVkJDR29vQWdBaEJDQUZLQUlFSVFNQ1FBSkFJQVVvQWdBaUJrVU5BQ0FBUVFnMkFoUWdcXFxuQUNBQ05nSVFJQUFnQXpZQ0JDQUFJQUVvQWd3aUFqWUNEQ0FBSUFRZ0FtczJBZ2dNQVFzZ0FDQUROZ0lFSUFCQkNHb2dCRFlDQUFzZ0FDXFxcbkFHTmdJQUlBVkJFR29rQUF0K0FRUi9JQUVvQWdnaUJTQUJLQUlFSWdZZ0JTQUdTeHNoQmlBQktBSUFJUWNDUUFKQUEwQWdCaUFGUmcwQlxcXG5Ba0FnQnlBRmFpMEFBQ0lJUVZCcVFmOEJjVUVLVHcwQUlBRWdCVUVCYWlJRk5nSUlEQUVMQ3lBSVFTQnlRZVVBUmcwQkN5QUFJQUVnQWlcXFxuQURJQVFReVFJUEN5QUFJQUVnQWlBRElBUVFvd0VMaVFFQkEzOGdBQ2dDQUNFREFrQUNRQ0FBS0FJSUlnUWdBQ2dDQkVZTkFDQURJUVVNXFxcbkFRc2dBQ0FFUVFGMElnVTJBZ1FDUUNBRkVNRUxJZ1VOQUVHWW1zRUFRU3RCNUpyQkFCQ0RCd0FMSUFBZ0JUWUNBQ0FGSUFNZ0JFRURkQlxcXG5Da0RSb2dBeUFFRUpBTUN5QUFJQVJCQVdvMkFnZ2dCU0FFUVFOMGFpSUFJQUkyQWdRZ0FDQUJOZ0lBQzI0QkJuNGdBQ0FEUXYvLy8vOFBcXFxuZ3lJRklBRkMvLy8vL3crRElnWitJZ2NnQlNBQlFpQ0lJZ2grSWdrZ0EwSWdpQ0lLSUFaK2ZDSUZRaUNHZkNJR053TUFJQUFnQ2lBSWZpXFxcbkFGSUFsVXJVSWdoaUFGUWlDSWhId2dCaUFIVksxOElBUWdBWDRnQXlBQ2ZueDhOd01JQzNNQkJYOUJBQ0VDQWtBZ0FFRWNhaWdDQUNBQlxcXG5RUnhxS0FJQVJ3MEFJQUJCSUdvb0FnQWlBeUFBUVNocUtBSUFRUnhzYWlFRUEwQWdBMEVBSUFNZ0JFY2lCUnNpQUVVaEFpQUFSUTBCSUFcXFxuRWdBQkNIQlNJR1JRMEJJQU1nQlVFY2JHb2hBeUFBUVF4cUlBWVFnZ3NOQUFzTElBSUxpQUVDQTM4QmZpTUFRU0JySWdFa0FBSkFJQUFvXFxcbkFnd2lBa1VOQUNBQUtBSUFJZ01wQXdBaEJDQUFLQUlFSVFBZ0FTQUNOZ0lZSUFFZ0F6WUNFQ0FCSUFBZ0EycEJBV28yQWd3Z0FTQURRUVxcXG5ocU5nSUlJQUVnQkVKL2hVS0FnWUtFaUpDZ3dJQi9nemNEQUFOQUlBRVE2Z2tpQUVVTkFTQUFRV2hxRU9nTERBQUxDeUFCUVNCcUpBQUxcXFxuaVFFQ0EzOEJmaU1BUVNCcklnRWtBQUpBSUFBb0Fnd2lBa1VOQUNBQUtBSUFJZ01wQXdBaEJDQUFLQUlFSVFBZ0FTQUNOZ0lZSUFFZ0F6XFxcbllDRUNBQklBQWdBMnBCQVdvMkFnd2dBU0FEUVFocU5nSUlJQUVnQkVKL2hVS0FnWUtFaUpDZ3dJQi9nemNEQUFOQUlBRVE2UWtpQUVVTlxcXG5BU0FBUWF4L2FoRHFDd3dBQ3dzZ0FVRWdhaVFBQzRFQkFnRi9BWDRqQUVFZ2F5SURKQUFDUUFKQUlBQW9BZ3dOQUVFQUlRQU1BUXNnQUVcXFxuRVFhaUFCSUFJUW1BRWhCQ0FESUFJMkFoUWdBeUFCTmdJUUlBTWdBRFlDSENBRElBTkJFR28yQWhnZ0EwRUlhaUFBSUFRZ0EwRVlha0hjXFxcbm44QUFFUDRDSUFNb0FnaEJBRWNnQUNnQ0FFRUFSM0VoQUFzZ0EwRWdhaVFBSUFBTGdBRUJBbjhqQUVFUWF5SURKQUFDUUFKQUlBRU5BRVxcXG5FQklRSU1BUXNDUUNBQlFYOUtJZ1JGRFFBQ1FBSkFJQUlOQUNBRFFRaHFJQVFnQVJEd0J5QURLQUlJSVFJTUFRc2dBeUFFSUFGQkFSQ0xcXFxuQ0NBREtBSUFJUUlMSUFJTkFTQUVJQUVRbWcwQUN4Q1hDQUFMSUFBZ0FUWUNCQ0FBSUFJMkFnQWdBMEVRYWlRQUM0UUJBUUovSXdCQkVHXFxcbnNpQWlRQUFrQUNRQ0FCS0FJQURRQkJBQ0VCREFFTElBRW9BZ1JCQVdvaEF3SkFJQUVvQWdnTkFDQUNJQUVnQXhDQUJ5QUNLQUlFSVFNZ1xcXG5BaWdDQUNFQkRBRUxJQUpCQ0dvZ0FTQURJQUZCREdvb0FnQVE3UVlnQWlnQ0RDRURJQUlvQWdnaEFRc2dBQ0FETmdJRUlBQWdBVFlDQUNcXFxuQUNRUkJxSkFBTGZnRURmeU1BUVJCcklnUWtBQ0FFUVFBNkFBZ2dCQ0FBUVJ4cUtBSUFOZ0lNSUFSQkNHcEIvSkRCQUJEOUJpRUZBa0FnXFxcbkFDZ0NBRVVOQUNBQUlBVWdBV3NnQUNnQ0JHbzJBZ1FMQWtBZ0FDZ0NDRVVOQUNBQVFReHFJZ1lnQlNBQmF5QUdLQUlBYWpZQ0FBc2dBRVxcXG5FVWFpQUNJQU1Ra3d3Z0JFRVFhaVFBQzRrQkFRSi9Jd0JCRUdzaUFpUUFBa0FDUUNBQktBSUFJZ05GRFFBZ0FDZ0NDQTBCSUFKQkFEb0FcXFxuQ0NBQ0lBQkJIR29vQWdBMkFnd2dBRUVNYWlBQ1FRaHFRYmlRd1FBUS9RWTJBZ0FnQUVFQk5nSUlJQUJCRkdvaUFFRWpFTjRFSUFBZ0F5XFxcbkFCS0FJSUVKTU1DeUFCRU44TElBSkJFR29rQUE4TFFmaVB3UUJCTDBHb2tNRUFFSU1IQUF0NUFRRi9Jd0JCNEFCcklnTWtBQ0FEUVFocVxcXG5JQUJCTUdvZ0FSRHRCU0FES0FJWUlRRWdBMEVJYWhEVUN3SkFJQUZGRFFBZ0FDZ0NZRVVOQUNBRFFkQUFhaUFDRUtzRUlBTkJDR29nQUVcXFxuSGdBR29nQTBIUUFHb1Fxd1lnQTBFSWFoRHNDaUFEUWRBQWFoRGpEQXNnQTBIZ0FHb2tBQ0FCUVFCSEMzNEJBbjhqQUVFUWF5SURKQUFDXFxcblFBSkFJQUVOQUVFQklRSU1BUXNDUUNBQlFYOUtJZ1JGRFFBQ1FBSkFJQUlOQUNBRFFRaHFJQVFnQVJEcUJ5QURLQUlJSVFJTUFRc2dBeVxcXG5BRUlBRVE2d2NnQXlnQ0FDRUNDeUFDRFFFZ0JDQUJFSm9OQUFzUWx3Z0FDeUFBSUFFMkFnUWdBQ0FDTmdJQUlBTkJFR29rQUF0K0FRSi9cXFxuSXdCQkVHc2lBeVFBQWtBQ1FDQUJEUUJCQVNFQ0RBRUxBa0FnQVVGL1NpSUVSUTBBQWtBQ1FDQUNEUUFnQTBFSWFpQUVJQUVROFFjZ0F5XFxcbmdDQ0NFQ0RBRUxJQU1nQkNBQkVQSUhJQU1vQWdBaEFnc2dBZzBCSUFRZ0FSQ2FEUUFMRUpjSUFBc2dBQ0FCTmdJRUlBQWdBallDQUNBRFxcXG5RUkJxSkFBTGZBRUNmeU1BUVJCcklnVWtBQUpBQWtBZ0JBMEFJQUFnQVNBQ0VMb0xJQU1oQmd3QkN3SkFJQUVnQTBZTkFFRUFJUVlnQlVcXFxuRUlhaUFESUFSQkFCQ09DQ0FGS0FJSUlnTkZEUUVnQXlBQUlBUVFwQTBoQkNBQUlBRWdBaEM2Q3lBRUlRWU1BUXNnQUNBQ0lBRWdCQkN3XFxcbkN5RUdDeUFGUVJCcUpBQWdCZ3QrQVFKL0l3QkJFR3NpQXlRQUFrQUNRQ0FCRFFCQkFTRUNEQUVMQWtBZ0FVRi9TaUlFUlEwQUFrQUNRQ1xcXG5BQ0RRQWdBMEVJYWlBRUlBRVErZ2NnQXlnQ0NDRUNEQUVMSUFNZ0JDQUJFUHNISUFNb0FnQWhBZ3NnQWcwQklBUWdBUkNhRFFBTEVKY0lcXFxuQUFzZ0FDQUJOZ0lFSUFBZ0FqWUNBQ0FEUVJCcUpBQUxpUUVCQW44Z0FDMEFCQ0VCQWtBZ0FDMEFCUTBBSUFGQi93RnhRUUJIRHd0QkFTXFxcbkVDQWtBZ0FVSC9BWEVOQUFKQUlBQW9BZ0FpQVMwQUhFRUVjUTBBSUFBZ0FTZ0NGRUczbnM0QVFRSWdBVUVZYWlnQ0FDZ0NEQkVKQUNJQlxcXG5PZ0FFSUFFUEN5QUJLQUlVUWJhZXpnQkJBU0FCUVJocUtBSUFLQUlNRVFrQUlRSUxJQUFnQWpvQUJDQUNDNlVCQWdGL0FuNGpBRUhBQUdcXFxuc2lBaVFBSUFKQk9HcENBRGNEQUNBQ1FnQTNBekFnQWlBQUtRTUlJZ00zQXlnZ0FpQUFLUU1BSWdRM0F5QWdBaUFEUXZQSzBjdW5qTm15XFxcbjlBQ0ZOd01ZSUFJZ0EwTHQzcEh6bHN6Y3QrUUFoVGNERUNBQ0lBUkM0ZVNWODliczJienNBSVUzQXdnZ0FpQUVRdlhLellQWHJOdTM4d1xcXG5DRk53TUFJQUlnQVNnQ0FDQUJLQUlFRU5RSUlBSVEzd0VoQXlBQ1FjQUFhaVFBSUFNTGdBRUJBbjhqQUVFUWF5SUNKQUFDUUFKQUlBRkJcXFxuL3dCTERRQUNRQ0FBS0FJSUlnTWdBQ2dDQkVjTkFDQUFJQU1RaHdrZ0FDZ0NDQ0VEQ3lBQUtBSUFJQU5xSUFFNkFBQWdBQ0FBS0FJSVFRXFxcbkZxTmdJSURBRUxJQUpCQURZQ0RDQUNJQUVnQWtFTWFoRExBaUFBSUFJb0FnQWdBaWdDQkJDSURBc2dBa0VRYWlRQUMzd0JBMzhqQUVFUVxcXG5heUlESkFBZ0EwRUlhaUFBS0FJQUlnUkJCR29nQkNBQUxRQUVRUUZHRUtRSkFrQWdBMEVJYWhDOUJ5SUZEUUFnQUVFQ09nQUVJQVFnQVNcXFxuZ0NBQ0lGS0FJQUlBVW9BZ2dRZ0FnaUJRMEFJQU5CQkRvQUNDQURRUWhxRUwwSElnVU5BQ0FBSUFJUTNBVWhCUXNnQTBFUWFpUUFJQVVMXFxcbmZ3RUNmeU1BUVNCcklnSWtBQ0FDUVFocUlnTWdBVUVJYWlnQ0FEWUNBQ0FDSUFFcEFnQTNBd0FnQWtFUWFpQUNFTW9JSUFBZ0FpZ0NFQlxcXG5DWkNpQUNRUkJxUVFocUlBTW9BZ0EyQWdBZ0FpQUNLUU1BTndNUUFrQURRQ0FDUVJCcUVQa0VJZ0ZCZ0lERUFFWU5BU0FBSUFFUTJBUU1cXFxuQUFzTElBSkJJR29rQUF1aEFRSUJmd0orSXdCQndBQnJJZ0lrQUNBQ1FUaHFRZ0EzQXdBZ0FrSUFOd013SUFJZ0FDa0RDQ0lETndNb0lBXFxcbklnQUNrREFDSUVOd01nSUFJZ0EwTHp5dEhMcDR6WnN2UUFoVGNER0NBQ0lBTkM3ZDZSODViTTNMZmtBSVUzQXhBZ0FpQUVRdUhrbGZQV1xcXG43Tm04N0FDRk53TUlJQUlnQkVMMXlzMkQxNnpidC9NQWhUY0RBQ0FCUVJScUlBSVE2d3NnQWhEZkFTRURJQUpCd0FCcUpBQWdBNmNMZ1FcXFxuRUJCbjhqQUVFUWF5SUNKQUFnQVNnQ0FDRURJQUVvQWdRaEJDQUNRUWhxSUFFUWpRSkJnSURFQUNFRkFrQUNRQ0FDS0FJSURRQU1BUXNnXFxcbkFpZ0NEQ0lHUVlDQXhBQkdEUUFnQVNBQktBSUlJZ2NnQkdvZ0F5QUJLQUlFYW1zZ0FTZ0NBR28yQWdnZ0JpRUZDeUFBSUFVMkFnUWdBQ1xcXG5BSE5nSUFJQUpCRUdva0FBdUJBUUVHZnlNQVFSQnJJZ0lrQUNBQktBSUFJUU1nQVNnQ0JDRUVJQUpCQ0dvZ0FSQ1BBa0dBZ01RQUlRVUNcXFxuUUFKQUlBSW9BZ2dOQUF3QkN5QUNLQUlNSWdaQmdJREVBRVlOQUNBQklBRW9BZ2dpQnlBRWFpQURJQUVvQWdScWF5QUJLQUlBYWpZQ0NDXFxcbkFHSVFVTElBQWdCVFlDQkNBQUlBYzJBZ0FnQWtFUWFpUUFDNEFCQVFKL0l3QkJFR3NpQWlRQUFrQUNRQ0FCUWY4QVN3MEFBa0FnQUNnQ1xcXG5DQ0lESUFBb0FnUkhEUUFnQUNBREVKVUpJQUFvQWdnaEF3c2dBQ2dDQUNBRGFpQUJPZ0FBSUFBZ0FDZ0NDRUVCYWpZQ0NBd0JDeUFDUVFcXFxuQTJBZ3dnQWlBQklBSkJER29RMFFJZ0FDQUNLQUlBSUFJb0FnUVFrd3dMSUFKQkVHb2tBQXQ2QVFSL0lBSW9BZ2dnQWlnQ0JDSURRUU4wXFxcbmFpRUVJQUlvQWdBaEJRSkFBMEFnQUNBQlJnMEJJQUF0QUFBaEFpQUFRUUE2QUFBZ0JDQUNPZ0FBSUFCQkJHb2lBaWdDQUNFR0lBSkJBRFxcXG5ZQ0FDQUVRUVJxSUFZMkFnQWdBRUVJYWlFQUlBUkJDR29oQkNBRFFRRnFJUU1NQUFzTElBVWdBellDQUF1QUFRRUNmeU1BUVJCcklnSWtcXFxuQUFKQUFrQWdBVUgvQUVzTkFBSkFJQUFvQWdnaUF5QUFLQUlFUncwQUlBQWdBeENWQ1NBQUtBSUlJUU1MSUFBb0FnQWdBMm9nQVRvQUFDXFxcbkFBSUFBb0FnaEJBV28yQWdnTUFRc2dBa0VBTmdJTUlBSWdBU0FDUVF4cUVOTUNJQUFnQWlnQ0FDQUNLQUlFRUpNTUN5QUNRUkJxSkFBTFxcXG5mUUVCZnlNQVFSQnJJZ01rQUFKQUFrQWdBUTBBUVFFaEFnd0JDd0pBSUFGQkFFZ05BQUpBQWtBZ0FnMEFJQU5CQ0dwQkFTQUJFUHdISUFcXFxuTW9BZ2doQWd3QkN5QURRUUVnQVVFQkVKTUlJQU1vQWdBaEFnc2dBZzBCUVFFZ0FSQ2FEUUFMRUpjSUFBc2dBQ0FCTmdJRUlBQWdBallDXFxcbkFDQURRUkJxSkFBTGN3RUNmeU1BUWRBQmF5SUNKQUFnQWtFSWFpQUFRY2dCRUtRTkdpQUNRY3dCYWlnQ0FDQUNLQUxJQVNJQWF5RURJQVxcXG5KQkNHb2dBRUVEZEdvaEFBSkFBMEFnQTBVTkFTQUJJQUFvQWdBZ0FFRUVhaWdDQUJDT0JCb2dBRUVJYWlFQUlBTkJmMm9oQXd3QUN3c2dcXFxuQWtIUUFXb2tBQXVnQVFJQmZ3SitJd0JCd0FCcklnTWtBQ0FEUVRocVFnQTNBd0FnQTBJQU53TXdJQU1nQUNrRENDSUVOd01vSUFNZ0FDXFxcbmtEQUNJRk53TWdJQU1nQkVMenl0SExwNHpac3ZRQWhUY0RHQ0FESUFSQzdkNlI4NWJNM0xma0FJVTNBeEFnQXlBRlF1SGtsZlBXN05tOFxcXG43QUNGTndNSUlBTWdCVUwxeXMyRDE2emJ0L01BaFRjREFDQURJQUVnQWhEVUNDQURFTjhCSVFRZ0EwSEFBR29rQUNBRXB3dDlBUUovSXdcXFxuQkJFR3NpQWlRQUFrQUNRQ0FCUWY4QVN3MEFBa0FnQUNnQ0NDSURJQUFvQWdSSERRQWdBQ0FERUlJSklBQW9BZ2doQXdzZ0FDQURRUUZxXFxcbk5nSUlJQUFvQWdBZ0Eyb2dBVG9BQUF3QkN5QUNRUUEyQWd3Z0FpQUJJQUpCREdvUXp3SWdBQ0FDS0FJQUlBSW9BZ1FRaGd3TElBSkJFR1xcXG5va0FBdDNBUUovUVFBaEFnSkFJQUZCQWtrTkFDQUFMUUFBUWQ4QmNVRy9mMnBCR1VzTkFBSkFJQUF0QUFFaUEwSDhBRVlOQUNBRFFUcEhcXFxuRFFFTFFRRWhBaUFCUVFKR0RRQkJBQ0VDSUFBdEFBSkJYV29pQVVIL0FYRkJPVXNOQUVLQm9JQ0FnWUNBZ0FJZ0FhMUMvd0dEaUtkQkFYXFxcbkVoQWdzZ0FndDhBUUYvSXdCQklHc2lCQ1FBQWtBQ1FDQUNRWDlxSUFGUERRQURRQ0FCSUFKR0RRSWdCRUVBT2dBWUlBUkJBRFlDRUNBRVxcXG5JQUkyQWhRZ0JFRUlhaUFFUVJCcUlBQWdBUkQ5QkNBRUtBSUlJQVFvQWd3Z0JCREpBeUFDUVFGcUlRSU1BQXNMUWRDYndRQkJMa0dBbk1cXFxuRUFFSU1IQUFzZ0JFRWdhaVFBQzM0QkFuOGpBRUVnYXlJQ0pBQWdBa0VRYWlBQlFSQnFLQUlBTmdJQUlBSkJDR29nQVVFSWFpa0NBRGNEXFxcbkFDQUNJQUVwQWdBM0F3QWdBQ0FCS0FJWUlnTWdBU2dDRkNJQmF4Q3BDaUFDSUFNMkFoZ2dBaUFCTmdJVUFrQURRQ0FDRUlJRUlnRkJnSVxcXG5ERUFFWU5BU0FBSUFFUTRBUU1BQXNMSUFKQklHb2tBQXQzQVFGL0l3QkJnQUpySWdJa0FDQUNRUWhxSUFGQjFBQVFwQTBhSUFKQjRBQnFcXFxuUVFocUlBRkJDR29vQWdBMkFnQWdBaUFCS1FJQU53TmdJQUpCOEFCcUlBSkJGR3BCeUFBUXBBMGFJQUpCdUFGcUlBQW9BZ0FnQWtIZ0FHXFxcbm9nQWtId0FHb1E4QU1nQWtHNEFXb1E3QW9nQWtHQUFtb2tBQXQ0QVFGL0l3QkJNR3NpQXlRQUlBTWdBallDQkNBRElBRTJBZ0FnQTBFSVxcXG5ha0VNYWtJQ053SUFJQU5CSUdwQkRHcEJCVFlDQUNBRFFRSTJBZ3dnQTBIc2tNQUFOZ0lJSUFOQkJqWUNKQ0FESUFBMkFpQWdBeUFEUVNcXFxuQnFOZ0lRSUFNZ0F6WUNLQ0FEUVFocUVOWURJUUlnQTBFd2FpUUFJQUlMbmdFQ0FYOENmaU1BUWNBQWF5SUNKQUFnQWtFNGFrSUFOd01BXFxcbklBSkNBRGNETUNBQ0lBQXBBd2dpQXpjREtDQUNJQUFwQXdBaUJEY0RJQ0FDSUFOQzg4clJ5NmVNMmJMMEFJVTNBeGdnQWlBRFF1M2VrZlxcXG5PV3pOeTM1QUNGTndNUUlBSWdCRUxoNUpYejF1elp2T3dBaFRjRENDQUNJQVJDOWNyTmc5ZXMyN2Z6QUlVM0F3QWdBU0FDRU9zTElBSVFcXFxuM3dFaEF5QUNRY0FBYWlRQUlBT25DM3dDQTM4QmZpQUFLQUlRSVFFZ0FDZ0NDQ0VDSUFBcEF3QWhCQU4vQWtBZ0JGQU5BQ0FBSUFSQ2YzXFxcbndnQklNM0F3QWdBU0FFZXFkQkEzWkJySDlzYWc4TElBQWdBVUhnZW1vaUFUWUNFQ0FBSUFKQkNHb2lBellDQ0NBQUlBSXBBd0JDZjRWQ1xcXG5nSUdDaElpUW9NQ0FmNE1pQkRjREFDQURJUUlNQUFzTGV3SURmd0YrSUFBb0FoQWhBU0FBS0FJSUlRSWdBQ2tEQUNFRUEzOENRQ0FFVUFcXFxuMEFJQUFnQkVKL2ZDQUVnemNEQUNBQklBUjZwMEVEZGtGb2JHb1BDeUFBSUFGQndINXFJZ0UyQWhBZ0FDQUNRUWhxSWdNMkFnZ2dBQ0FDXFxcbktRTUFRbitGUW9DQmdvU0lrS0RBZ0grRElnUTNBd0FnQXlFQ0RBQUxDM2tCQVg4akFFR2dBV3NpQkNRQUFrQWdBQ2dDWUVVTkFDQUVRY1xcXG5nQWFpQUNFS3NFSUFSQjJBQnFJQUVRbEFVZ0JDQUFRZUFBYWlBRVFjZ0FhaUFFUWRnQWFoRHdBeUFFRU93S0N5QUVRZGdBYWlBQlFjZ0FcXFxuRUtRTkdpQUVJQUJCTUdvZ0JFSFlBR29nQXhEQUNDQUVFTlFMSUFSQm9BRnFKQUFMZVFFQmZ5TUFRVEJySWdNa0FDQURJQUkyQWdRZ0F5XFxcbkFCTmdJQUlBTkJDR3BCREdwQ0FqY0NBQ0FEUVNCcVFReHFRWjBCTmdJQUlBTkJBallDRENBRFFlaXN3QUEyQWdnZ0EwRUdOZ0lrSUFNZ1xcXG5BRFlDSUNBRElBTkJJR28yQWhBZ0F5QUROZ0lvSUFOQkNHb1F2UVloQWlBRFFUQnFKQUFnQWd1QkFRRUVmd0pBQTBBUXN3c2hBaUFCS0FcXFxuSUFJZ05CdWZQZDhYbHNRUUFnQWlnQ0NHdDJJZ1FnQWlnQ0JDSUZUdzBCSUFJb0FnQWdCRUVHZEdvaUJCQ1ZDZ0pBQWtBZ0FrRUFLQUtBXFxcbnAwOUhEUUFnQVNnQ0FDQURSZzBCQ3lBRUVNUUpEQUVMQ3lBQUlBUTJBZ1FnQUNBRE5nSUFEd3NnQkNBRlFhamN3QUFRZ1FVQUMzWUJCWFxcXG44akFFRVFheUlDSkFBRFFDQUNRUWhxSUFFUXJRTUNRQUpBSUFJb0FnZ2lBMFVOQUNBQ0tBSU1JUVFnQUNnQ0NDSUZJQUFvQWdSSERRRWdcXFxuQUVFQkVLUUtEQUVMSUFKQkVHb2tBQThMSUFBb0FnQWdCVUVEZEdvaUJpQUVOZ0lFSUFZZ0F6WUNBQ0FBSUFWQkFXbzJBZ2dNQUFzTGN3XFxcbkVFZndKQUlBQW9BZ3dpQVNBQUtBSVFJZ0pMRFFBZ0FDZ0NDQ0lES0FJSUlnQWdBa2tOQUNBRElBRTJBZ2dnQUNBQ2F5RUVBa0FDUUNBQ1xcXG5JQUZIRFFBZ0FDQUNSdzBCREFJTElBQWdBa1lOQVNBREtBSUFJZ0FnQVdvZ0FDQUNhaUFFRUtNTkdnc2dBeUFFSUFGcU5nSUlDd3R1QVFcXFxuTi9Jd0JCd0FCcklnSWtBQ0FCS0FJRUlRTWdBU2dDQUNFRUlBSkJDR3BCQ0dvZ0FVRUlha0VzRUtRTkdpQUFJQU1nQkdzaUFVRUJha0VCXFxcbmRpQUJJQUFvQWd3YklBQkJFR29RcndnZ0FpQUROZ0lNSUFJZ0JEWUNDQ0FDUVFocUlBQVFoZ1VnQWtIQUFHb2tBQXVkQVFJQmZ3SitJd1xcXG5CQndBQnJJZ0lrQUNBQ1FUaHFRZ0EzQXdBZ0FrSUFOd013SUFJZ0FDa0RDQ0lETndNb0lBSWdBQ2tEQUNJRU53TWdJQUlnQTBMenl0SExcXFxucDR6WnN2UUFoVGNER0NBQ0lBTkM3ZDZSODViTTNMZmtBSVUzQXhBZ0FpQUVRdUhrbGZQVzdObTg3QUNGTndNSUlBSWdCRUwxeXMyRDE2XFxcbnpidC9NQWhUY0RBQ0FCSUFJUTZ3c2dBaERmQVNFRElBSkJ3QUJxSkFBZ0F3dWRBUUlCZndKK0l3QkJ3QUJySWdJa0FDQUNRVGhxUWdBM1xcXG5Bd0FnQWtJQU53TXdJQUlnQUNrRENDSUROd01vSUFJZ0FDa0RBQ0lFTndNZ0lBSWdBMEx6eXRITHA0elpzdlFBaFRjREdDQUNJQU5DN2RcXFxuNlI4NWJNM0xma0FJVTNBeEFnQWlBRVF1SGtsZlBXN05tODdBQ0ZOd01JSUFJZ0JFTDF5czJEMTZ6YnQvTUFoVGNEQUNBQklBSVE3QXNnXFxcbkFoRGZBU0VESUFKQndBQnFKQUFnQXd0eUFRSi9Jd0JCSUdzaUFpUUFBa0FDUUNBQktBSUFEUUJCQUNFQkRBRUxRUUFnQVVFSWFpZ0NBQ1xcXG5JRElBRW9BZ1JySWdFZ0FTQURTeHNoQVFzZ0FrRVlhaUFCTmdJQUlBSkJBVFlDRkNBQ0lBRTJBaEFnQWtFSWFpQUNRUkJxRU1rSUlBQWdcXFxuQWlrRENEY0RBQ0FDUVNCcUpBQUxlZ0lCZndGK0l3QkJJR3NpQXlRQUlBTkJDR29nQXlBQ0VNNEtJZ0lvQWdBZ0FpZ0NDQkN3QWdKQUFrXFxcbkFnQXlnQ0NBMEFJQU1wQWd3aEJDQUFRUXhxSUFOQkNHcEJER29vQWdBMkFnQWdBQ0FFTndJRUlBQkJBRFlDQUF3QkN5QURJQU1wQWd3M1xcXG5BeGdnQUNBRFFSaHFFSjBJQ3lBRFFTQnFKQUFMZUFFQmZ5TUFRYkFCYXlJQkpBQWdBVUVJYWlBQUVJOEdJQUZCb0FGcUVPTU1JQUZCa0FcXFxuRnFFT01NSUFGQkVHb1E1UXNDUUNBQlFmQUFhaUlBS0FJQVJRMEFJQUFRaHdzTElBRW9BcXdCSWdBZ0FDZ0NBQ0lBUVg5cU5nSUFBa0FnXFxcbkFFRUJSdzBBSUFGQnJBRnFFTmdJQ3lBQlFiQUJhaVFBQzNnQkEzOGpBRUVRYXlJQ0pBQWdBU2dDQUNFRElBRkJBRFlDQUFKQUFrQWdBMFxcXG5VTkFDQUJLQUlFSVFRZ0FrRUlha0VFUVFoQkFCQ1JDQ0FDS0FJSUlnRkZEUUVnQVNBRU5nSUVJQUVnQXpZQ0FDQUFRWkNmd1FBMkFnUWdcXFxuQUNBQk5nSUFJQUpCRUdva0FBOExFSWNPQUF0QkJFRUlFSm9OQUF1U0FRRURmMEdBZ01RQUlRRUNRQUpBQWtBQ1FBSkFJQUFvQWdnaUFrXFxcbkdCZ0x4L2FrRUFJQUpCZ0lDOGYycEJBMGtiRGdRQUFRSUVBQXNnQUNnQ0JDRURJQUFnQWpZQ0JDQUFLQUlBSVFFZ0FDQUROZ0lBUVlDQVxcXG54QUFoQWd3Q0N5QUFLQUlBSVFFZ0FDQUFLQUlFTmdJQVFZR0F4QUFoQWd3QkN5QUFLQUlBSVFGQmdvREVBQ0VDQ3lBQUlBSTJBZ2dMSUFcXFxuRUxiUUVCZnlNQVFSQnJJZ01rQUNBRFFRaHFJQUFnQVNBQ0VOZ0ZRUUFoQWdKQUFrQWdBeWdDQ0VFQlJ3MEFJQU1vQWd3aUFpQUFRU2hxXFxcbktBSUFJZ0ZQRFFFZ0FFRWdhaWdDQUNBQ1FSeHNha0VNYWlFQ0N5QURRUkJxSkFBZ0FnOExJQUlnQVVHMG5NQUFFSUVGQUF0MEFRRi9Jd1xcXG5CQndBQnJJZ0lrQUNBQ0lBRTJBZ3dnQWtFc2FrSUJOd0lBSUFKQkFUWUNKQ0FDUWFTcXdBQTJBaUFnQWtFS05nSThJQUlnQWtFNGFqWUNcXFxuS0NBQ0lBSkJER28yQWpnZ0FrRVFhaUFDUVNCcUVJOEVJQUJCSnlBQ1FSQnFFSnNKSUFKQkRHb1FoQXNnQWtIQUFHb2tBQXQ3QVFSL0l3XFxcbkJCRUdzaUFpUUFRUUFoQXdKQUFrQUNRQ0FCS0FJb0lnUU9BZ0lCQUFzZ0FTQUVRWDlxTmdJb0lBSWdBUkNyQVNBQ0tBSUVJUVVnQWlnQ1xcXG5BQ0VEREFFTElBRkJBRFlDS0NBQ1FRaHFJQUVRaEFZZ0FpZ0NEQ0VGSUFJb0FnZ2hBd3NnQUNBRk5nSUVJQUFnQXpZQ0FDQUNRUkJxSkFcXFxuQUxkd0VEZnlNQVFSQnJJZ1FrQUFKQUlBRW9BZ1FpQlVGL1JnMEFJQVZCQVdvaUJpRUZBa0FnQVMwQUNFRUJjUTBBSUFFb0FnQWhCUXNnXFxcbkJFRUlhaUFGSUFZZ0FpQURRWkNjd1FBUTdnWWdCQ2dDRENFQklBQWdCQ2dDQ0RZQ0FDQUFJQUUyQWdRZ0JFRVFhaVFBRHd0QmtKekJBQlxcXG5DWkNBQUxkZ0VCZnlNQVFUQnJJZ0lrQUNBQ0lBRTJBZ1FnQWlBQU5nSUFJQUpCQ0dwQkRHcENBamNDQUNBQ1FTQnFRUXhxUVFnMkFnQWdcXFxuQWtFRE5nSU1JQUpCK1AzTkFEWUNDQ0FDUVFnMkFpUWdBaUFDUVNCcU5nSVFJQUlnQWtFRWFqWUNLQ0FDSUFJMkFpQWdBa0VJYWtHcy9zXFxcbjBBRUpnSUFBdHpBUUYvSXdCQk1Hc2lBeVFBSUFNZ0FUWUNCQ0FESUFBMkFnQWdBMEVJYWtFTWFrSUNOd0lBSUFOQklHcEJER3BCQ0RZQ1xcXG5BQ0FEUVFNMkFnd2dBMEhvL3MwQU5nSUlJQU5CQ0RZQ0pDQURJQU5CSUdvMkFoQWdBeUFEUVFScU5nSW9JQU1nQXpZQ0lDQURRUWhxSUFcXFxuSVFtQWdBQzNZQkFYOGpBRUV3YXlJQ0pBQWdBaUFCTmdJRUlBSWdBRFlDQUNBQ1FRaHFRUXhxUWdJM0FnQWdBa0VnYWtFTWFrRUlOZ0lBXFxcbklBSkJBellDRENBQ1Faai96UUEyQWdnZ0FrRUlOZ0lrSUFJZ0FrRWdhallDRUNBQ0lBSkJCR28yQWlnZ0FpQUNOZ0lnSUFKQkNHcEJzUFxcXG4vTkFCQ1lDQUFMY3dFQmZ5TUFRVEJySWdNa0FDQURJQUUyQWdRZ0F5QUFOZ0lBSUFOQkNHcEJER3BDQWpjQ0FDQURRU0JxUVF4cVFRZzJcXFxuQWdBZ0EwRUNOZ0lNSUFOQjBKek9BRFlDQ0NBRFFRZzJBaVFnQXlBRFFTQnFOZ0lRSUFNZ0F6WUNLQ0FESUFOQkJHbzJBaUFnQTBFSWFpXFxcbkFDRUpnSUFBdHpBUUYvSXdCQk1Hc2lBeVFBSUFNZ0FEWUNBQ0FESUFFMkFnUWdBMEVJYWtFTWFrSUNOd0lBSUFOQklHcEJER3BCQ0RZQ1xcXG5BQ0FEUVFJMkFnd2dBMEhnb3M0QU5nSUlJQU5CQ0RZQ0pDQURJQU5CSUdvMkFoQWdBeUFEUVFScU5nSW9JQU1nQXpZQ0lDQURRUWhxSUFcXFxuSVFtQWdBQzNNQkFYOGpBRUV3YXlJREpBQWdBeUFBTmdJQUlBTWdBVFlDQkNBRFFRaHFRUXhxUWdJM0FnQWdBMEVnYWtFTWFrRUlOZ0lBXFxcbklBTkJBallDRENBRFFZQ2p6Z0EyQWdnZ0EwRUlOZ0lrSUFNZ0EwRWdhallDRUNBRElBTkJCR28yQWlnZ0F5QUROZ0lnSUFOQkNHb2dBaFxcXG5DWUNBQUxjd0VCZnlNQVFUQnJJZ01rQUNBRElBQTJBZ0FnQXlBQk5nSUVJQU5CQ0dwQkRHcENBamNDQUNBRFFTQnFRUXhxUVFnMkFnQWdcXFxuQTBFQ05nSU1JQU5CdEtQT0FEWUNDQ0FEUVFnMkFpUWdBeUFEUVNCcU5nSVFJQU1nQTBFRWFqWUNLQ0FESUFNMkFpQWdBMEVJYWlBQ0VKXFxcbmdJQUF0ekFRRi9Jd0JCTUdzaUF5UUFJQU1nQVRZQ0JDQURJQUEyQWdBZ0EwRUlha0VNYWtJQ053SUFJQU5CSUdwQkRHcEJDRFlDQUNBRFxcXG5RUU0yQWd3Z0EwRzRwTTRBTmdJSUlBTkJDRFlDSkNBRElBTkJJR28yQWhBZ0F5QUROZ0lvSUFNZ0EwRUVhallDSUNBRFFRaHFJQUlRbUFcXFxuZ0FDMmdCQW44akFFSEFBR3NpQWlRQUlBSkJDR29nQUVFMEVLUU5HaUFDS0FJTUlBSW9BZ2dpQTJzaEFDQURRUUowSUFKQkNHcHFRUWhxXFxcbklRTUNRQU5BSUFCRkRRRWdBU0FES0FJQUVKY0dHaUFBUVg5cUlRQWdBMEVFYWlFRERBQUxDeUFDUWNBQWFpUUFDMnNCQW44akFFRVFheVxcXG5JQ0pBQWdBa0VJYWlBQUlBRVE3d1ZCQUNFQkFrQUNRQ0FDS0FJSVFRRkhEUUFnQWlnQ0RDSUJJQUJCS0dvb0FnQWlBMDhOQVNBQVFTQnFcXFxuS0FJQUlBRkJIR3hxUVF4cUlRRUxJQUpCRUdva0FDQUJEd3NnQVNBRFFiU2N3QUFRZ1FVQUMzb0JBWDhqQUVIQUFHc2lBaVFBSUFKQkFEXFxcbllDQ0NBQ1FnRTNBd0FnQWtFUWFpQUNRWUNKd0FBUXl3Z0NRQ0FCUVJScUlBSkJFR29RNXdzTkFDQUFJQUlwQXdBM0FnQWdBRUVJYWlBQ1xcXG5RUWhxS0FJQU5nSUFJQUpCd0FCcUpBQVBDMEdZaWNBQVFUY2dBa0U0YWtIUWljQUFRYXlLd0FBUXdnUUFDM1lCQVg4akFFRVFheUlDSkFcXFxuQWdBaUFCS0FJQUlBRW9BZ2dRWWdKQUFrQWdBaWdDQUEwQUlBQkJBam9BRUNBQUlBRXBBZ0EzQWdBZ0FFRUlhaUFCUVFocUtBSUFOZ0lBXFxcbkRBRUxJQUFnQWlrQ0JEY0NEQ0FBSUFFcEFnQTNBZ0FnQUVFSWFpQUJRUWhxS0FJQU5nSUFDeUFDUVJCcUpBQUxaZ0VGZmlBQUlBQXBBeFxcXG5naUFVSVFpU0FCSUFBcEF3aDhJZ0dGSWdJZ0FDa0RFQ0lESUFBcEF3QjhJZ1JDSUlsOElnVTNBd0FnQUNBQ1FoV0pJQVdGTndNWUlBQWdcXFxuQVNBRFFnMkpJQVNGSWdKOElnRWdBa0lSaVlVM0F4QWdBQ0FCUWlDSk53TUlDM29CQW44akFFRVFheUlESkFBZ0FTQUJLQUlJUVg5cUlnXFxcblEyQWdnQ1FBSkFJQUV0QUF4RkRRQWdBaWdDQUVIY21jQUFRUUVRaUF3Z0EwRUlhaUFDSUFRZ0FTZ0NBQ0FCS0FJRUVKa0pJQU10QUFoQlxcXG5CRVlOQUNBQUlBTXBBd2czQWdBTUFRc2dBQ0FDUWQyWndBQkJBUkNnQ3dzZ0EwRVFhaVFBQzIwQkFuOGpBRUVRYXlJQ0pBQWdBa0VJYWlcXFxuQUFJQUVRN2dWQkFDRUJBa0FDUUNBQ0tBSUlRUUZIRFFBZ0FpZ0NEQ0lCSUFCQktHb29BZ0FpQTA4TkFTQUFRU0JxS0FJQUlBRkIyQUJzXFxcbmFrSElBR29oQVFzZ0FrRVFhaVFBSUFFUEN5QUJJQU5CdEp6QUFCQ0JCUUFMYkFFQ2Z5TUFRUkJySWdJa0FDQUNRUWhxSUFBZ0FSRHdCVVxcXG5FQUlRRUNRQUpBSUFJb0FnaEJBVWNOQUNBQ0tBSU1JZ0VnQUVFb2FpZ0NBQ0lEVHcwQklBQkJJR29vQWdBZ0FVRUhkR3BCeUFCcUlRRUxcXFxuSUFKQkVHb2tBQ0FCRHdzZ0FTQURRYlNjd0FBUWdRVUFDMjRCQVg4akFFRWdheUlFSkFBZ0JDQUROZ0lVSUFRZ0FqWUNFQ0FFSUFBMkFoXFxcbndnQkNBRVFSQnFOZ0lZSUFSQkNHb2dBQ0FCSUFSQkdHcEJvSi9BQUJEK0FpQUVLQUlNSVFNZ0JDZ0NDQ0VDSUFBb0FnQWhBQ0FFUVNCcVxcXG5KQUFnQUVFQUlBTnJRUmhzYWtFQUlBSWJDMllCQlg0Z0FDQUFLUU1ZSWdGQ0VJa2dBU0FBS1FNSWZDSUJoU0lDSUFBcEF4QWlBeUFBS1FcXFxuTUFmQ0lFUWlDSmZDSUZOd01BSUFBZ0FrSVZpU0FGaFRjREdDQUFJQUVnQTBJTmlTQUVoU0lDZkNJQklBSkNFWW1GTndNUUlBQWdBVUlnXFxcbmlUY0RDQXR3QVFSL0l3QkJFR3NpQWlRQUlBRW9BZ0FoQXdKQUEwQWdBa0VJYWlBREVPOEhJQUl0QUFraEFRSkFJQUl0QUFoQkFYRU5BRVxcXG5FQUlRUU1BZ3RCQVNFRUlBRkIvd0Z4SWdWQkRVc05BVUVCSUFWMFFZRE1BSEVOQUFzTElBQWdCRG9BQUNBQUlBRTZBQUVnQWtFUWFpUUFcXFxuQzJvQUFrQWdBVVVOQUNBQVFid0ZRUUlnQWh0dUlnSWdBVzRnQW1vaEFVRUFJUUlDUUFOQUlBRkJ5QU5KRFFFZ0FrRWthaUVDSUFGQkkyXFxcbjRoQVF3QUN3c2dBaUFCUVNSc1Fmei9BM0VnQVVFbWFrSC8vd054Ym1vUEMwR3dsOEVBUVJsQjlKL0JBQkNEQndBTGZBRUVmeUFBSUFBUVxcXG4wQTBpQWtFSUVKd0xJQUpySWdJUXpnMGhBRUVBSUFFZ0Ftc2lBVFlDaEt0UFFRQWdBRFlDakt0UElBQWdBVUVCY2pZQ0JCQ0tEaUlDUVFcXFxuZ1FuQXNoQTBFVVFRZ1FuQXNoQkVFUVFRZ1FuQXNoQlNBQUlBRVF6ZzBnQlNBRUlBTWdBbXRxYWpZQ0JFRUFRWUNBZ0FFMkFwaXJUd3QyXFxcbkFRUi9Jd0JCSUdzaUFpUUFRUUVoQXdKQUlBQWdBUkRzQVEwQUlBRkJHR29vQWdBaEJDQUJLQUlVSVFVZ0FrSUFOd0lVSUFKQi9QL05BRFxcXG5ZQ0VFRUJJUU1nQWtFQk5nSU1JQUpCMUpuT0FEWUNDQ0FGSUFRZ0FrRUlhaEJ0RFFBZ0FFRUVhaUFCRU93QklRTUxJQUpCSUdva0FDQURcXFxuQzNjQUlBQkJGR29nQVVFVWFoQ2ZCU0FBSUFFcEFqUTNBalFnQUVFOGFpQUJRVHhxS1FJQU53SUFJQUJCeEFCcUlBRkJ4QUJxTFFBQU9nXFxcbkFBSUFBZ0FTa0NLRGNDS0NBQUlBRXBBaUEzQWlBZ0FDQUJLQUl3TmdJd0lBQWdBU2dDRURZQ0VDQUFJQUVwQWdnM0FnZ2dBQ0FCS1FJQVxcXG5Od0lBQzNvQ0FuOEJmaU1BUVNCcklnTWtBQUpBSUFFZ0FrR0FsT3ZjQTI0aUJLMThJZ1VnQVZvTkFDQURRUlJxUWdBM0FnQWdBMEVCTmdcXFxuSU1JQU5CNklyQUFEWUNDQ0FEUWVDQ3dBQTJBaEFnQTBFSWFrRzRpOEFBRUpnSUFBc2dBQ0FGTndNQUlBQWdBaUFFUVlDVTY5d0RiR3MyXFxcbkFnZ2dBMEVnYWlRQUMzTUNBbjhDZmlNQVFSQnJJZ0lrQUFKQUFrQWdBVVVOQUNBQktBSUFJUU1nQVVJQU53TUFJQU5CQVVjTkFDQUJLUVxcXG5NUUlRUWdBU2tEQ0NFRkRBRUxJQUlRb3d3Z0Fpa0RDQ0VFSUFJcEF3QWhCUXNnQUNBRU53TVFJQUFnQlRjRENDQUFRZ0UzQXdBZ0FrRVFcXFxuYWlRQUlBQkJDR29MZndNQmZ3RitBWHdqQUVFUWF5SURKQUFDUUFKQUFrQUNRQ0FBS0FJQURnTUFBUUlBQ3lBQUt3TUlJUVVnQTBFRE9nXFxcbkFBSUFNZ0JUa0RDQXdDQ3lBQUtRTUlJUVFnQTBFQk9nQUFJQU1nQkRjRENBd0JDeUFBS1FNSUlRUWdBMEVDT2dBQUlBTWdCRGNEQ0FzZ1xcXG5BeUFCSUFJUW1BTWhBQ0FEUVJCcUpBQWdBQXR1QVFGL0l3QkJJR3NpQkNRQUlBUWdBeUFCSUFJUTB3VWdBRUVCT3dFa0lBQWdBallDSUNcXFxuQUFRUUEyQWh3Z0FFRVlhaUFFUVJocUtBSUFOZ0lBSUFCQkVHb2dCRUVRYWlrREFEY0NBQ0FBUVFocUlBUkJDR29wQXdBM0FnQWdBQ0FFXFxcbktRTUFOd0lBSUFSQklHb2tBQXR1QVFGL0l3QkJJR3NpQXlRQUlBTkJMaUFCSUFJUTFRVWdBRUVCT3dFa0lBQWdBallDSUNBQVFRQTJBaFxcXG53Z0FFRVlhaUFEUVJocUtBSUFOZ0lBSUFCQkVHb2dBMEVRYWlrREFEY0NBQ0FBUVFocUlBTkJDR29wQXdBM0FnQWdBQ0FES1FNQU53SUFcXFxuSUFOQklHb2tBQXR0QVFGL0l3QkJFR3NpQWlRQUlBSWdBRFlDQ0NBQ0lBQWdBV28yQWd3Q1FBTkFJQUpCQ0dvUWhRTWlBRUdBZ01RQVJnXFxcbjBCSUFCQlgycEIzZ0JKRFFBZ0FCRGREVUgvQVhFaUFVRVJTdzBBUVFFZ0FYUkJnNEFJY1VVTkFBc0xJQUpCRUdva0FDQUFRWUNBeEFCSFxcXG5DMjBCQTM4akFFRVFheUlDSkFBQ1FBSkFJQUVvQWdBaUF5QUJLQUlFUnlJRURRQU1BUXNnQVNBRFFRRnFOZ0lBSUFNdEFBQWlBMEVsUndcXFxuMEFJQUpCQ0dvZ0FSRHRBeUFDTFFBSlFTVWdBaTBBQ0VFQmNSc2hBd3NnQUNBRE9nQUJJQUFnQkRvQUFDQUNRUkJxSkFBTGR3RUJmeU1BXFxcblFjQUFheUlDSkFBZ0FrRUFOZ0lJSUFKQ0FUY0RBQ0FDUVJCcUlBSkJnSW5BQUJETENBSkFJQUVnQWtFUWFoQ0hEQTBBSUFBZ0Fpa0RBRFxcXG5jQ0FDQUFRUWhxSUFKQkNHb29BZ0EyQWdBZ0FrSEFBR29rQUE4TFFaaUp3QUJCTnlBQ1FUaHFRZENKd0FCQnJJckFBQkRDQkFBTGFnRUJcXFxuZnlNQVFSQnJJZ1FrQUNBRUlBSWdBeERXQlNBQktBSUlRUXhzSVFNZ0FTZ0NBQ0VCQTBBQ1FDQUREUUFnQUNBRUtRTUFOd0lBSUFCQkNHXFxcbm9nQkVFSWFpZ0NBRFlDQUNBRVFSQnFKQUFQQ3lBRFFYUnFJUU1nQkNBQkVPWUxJQUZCREdvaEFRd0FDd3R0QVFGL0l3QkJJR3NpQWlRQVxcXG5JQUVRMFFzZ0FrRUlhaUFCRUx3SklBSW9BZ3hCQURZQ0FDQUNRUkJxUVFocUlBRkJDR29wQWdBM0F3QWdBaUFCS1FJQU53TVFJQUFnQWlcXFxua0NGRGNDQUNBQVFRaHFJQUpCSEdvb0FnQTJBZ0FnQVVFUVFRUVFzZ3dnQWtFZ2FpUUFDM0VCQW44Z0FTZ0NBQ0VDQWtBQ1FBSkFBa0FnXFxcbkFVRUlhaWdDQUNJQkRRQkJBU0VEREFFTElBRkJmMHdOQVVFQUxRRHhwazhhSUFGQkFSRDNDeUlEUlEwQ0N5QURJQUlnQVJDa0RTRUNJQVxcXG5BZ0FUWUNDQ0FBSUFFMkFnUWdBQ0FDTmdJQUR3c1Fsd2dBQzBFQklBRVFtZzBBQzJNQkFYOENRQ0FCS0FJSUlnUWdBazBOQUNBQUlBRW9cXFxuQWdBZ0FrRU1iR29pQXlrQ0FEY0NBQ0FBUVFocUlBTkJDR29vQWdBMkFnQWdBeUFEUVF4cUlBUWdBa0YvYzJwQkRHd1FvdzBhSUFFZ0JFXFxcbkYvYWpZQ0NBOExJQUlnQkNBREVQOEVBQXRzQVFKL0l3QkJFR3NpQkNRQUlBRW9BaEFoQlNBRUlBRkJHR29vQWdBMkFnZ2dCQ0FGTmdJRVxcXG5JQVFnQXpZQ0FBSkFBa0FnQVNBQ3JTQUVFTVFDSWdFTkFFRUFJUUVNQVFzZ0FVRjhhaWdDQUNFRFFRRWhBUXNnQUNBRE5nSUVJQUFnQVRcXFxuWUNBQ0FFUVJCcUpBQUxiUUVEZnlNQVFSQnJJZ0lrQUNBQVFSQnFJUU1DUUFKQUlBQW9BZ2dnQUNnQ0RHb2lCRUgvLy84SElBUkIvLy8vXFxcbkIwa2JJQUJCR0dvb0FnQnJJZ0FnQVUwTkFDQUNRUWhxSUFNZ0FCQytCeUFDS0FJSVFZR0FnSUI0UmcwQkN5QURJQUVRMVFnTElBSkJFR1xcXG5va0FBdHRBUU4vSXdCQkVHc2lBaVFBSUFCQkVHb2hBd0pBQWtBZ0FDZ0NDQ0FBS0FJTWFpSUVRWmU2MFFzZ0JFR1h1dEVMU1JzZ0FFRVlcXFxuYWlnQ0FHc2lBQ0FCVFEwQUlBSkJDR29nQXlBQUVMOEhJQUlvQWdoQmdZQ0FnSGhHRFFFTElBTWdBUkRYQ0FzZ0FrRVFhaVFBQzIwQkEzXFxcbjhqQUVFUWF5SUNKQUFnQUVFUWFpRURBa0FDUUNBQUtBSUlJQUFvQWd4cUlnUkJwSkxKSkNBRVFhU1N5U1JKR3lBQVFSaHFLQUlBYXlJQVxcXG5JQUZORFFBZ0FrRUlhaUFESUFBUXdBY2dBaWdDQ0VHQmdJQ0FlRVlOQVFzZ0F5QUJFTllJQ3lBQ1FSQnFKQUFMYUFFQ2Z5TUFRU0JySWdcXFxuTWtBQ0FESUFJMkFoUWdBeUFBTmdJY0lBTWdBMEVVYWpZQ0dDQURRUWhxSUFBZ0FTQURRUmhxUWJTZndBQVEvZ0lnQXlnQ0RDRUNJQU1vXFxcbkFnZ2hCQ0FBS0FJQUlRQWdBMEVnYWlRQUlBQkJBQ0FDYTBIVUFHeHFRUUFnQkJzTGFnRUNmeUFBS0FJQUlBQWdBUkM1QkNJRmFpMEFBQ1xcXG5FR0FrQWdBQ2dDQ0EwQUlBWkJBWEZGRFFBZ0FFRUJJQVFRc1FnZ0FDQUJFTGtFSVFVTElBQWdCU0FHSUFFUXJBWWdBQ2dDQUNBRlFRTjBcXFxuYXlJQVFYaHFJZ1VnQWpZQ0FDQUZRUVJxSUFNMkFnQWdBQXRvQVFKL0l3QkJNR3NpQXlRQUlBTkJBRFlDR0NBRElBRTJBaEFnQXlBQk5nXFxcbklJSUFNZ0FqWUNEQ0FESUFFZ0FtbzJBaFFnQTBFZ2FpQURRUWhxRU5nRElBQWdBaUFES0FJa0lBSWdBeWdDSUJzaUJHczJBZ1FnQUNBQlxcXG5JQVJxTmdJQUlBTkJNR29rQUF0cUFRTi9Jd0JCRUdzaUFpUUFBa0FEUUNBQ1FRaHFJQUVRMEFjQ1FDQUNMUUFJUVFGeERRQkJBQ0VEREFcXFxuSUxBa0FnQWkwQUNTSUVRZjhCY1NJRFFRMUxEUUJCQVNBRGRFR0F6QUJ4RFFFTEMwRUJJUU1MSUFBZ0JEb0FBU0FBSUFNNkFBQWdBa0VRXFxcbmFpUUFDMmNCQVg4akFFRWdheUlDSkFBZ0FDZ0NBQ0VBSUFKQkNHcEJFR29nQVVFUWFpa0NBRGNEQUNBQ1FRaHFRUWhxSUFGQkNHb3BBZ1xcXG5BM0F3QWdBaUFCS1FJQU53TUlJQUlnQURZQ0JDQUNRUVJxUWVEZ3pRQWdBa0VJYWhCdElRRWdBa0VnYWlRQUlBRUxad0VCZnlNQVFTQnJcXFxuSWdJa0FDQUFLQUlBSVFBZ0FrRUlha0VRYWlBQlFSQnFLUUlBTndNQUlBSkJDR3BCQ0dvZ0FVRUlhaWtDQURjREFDQUNJQUVwQWdBM0F3XFxcbmdnQWlBQU5nSUVJQUpCQkdwQnZQck5BQ0FDUVFocUVHMGhBU0FDUVNCcUpBQWdBUXRuQVFGL0l3QkJJR3NpQWlRQUlBQW9BZ0FoQUNBQ1xcXG5RUWhxUVJCcUlBRkJFR29wQWdBM0F3QWdBa0VJYWtFSWFpQUJRUWhxS1FJQU53TUFJQUlnQVNrQ0FEY0RDQ0FDSUFBMkFnUWdBa0VFYWtcXFxuSElvTTRBSUFKQkNHb1FiU0VCSUFKQklHb2tBQ0FCQzJjQkFYOGpBRUVnYXlJQ0pBQWdBQ2dDQUNFQUlBSkJDR3BCRUdvZ0FVRVFhaWtDXFxcbkFEY0RBQ0FDUVFocVFRaHFJQUZCQ0dvcEFnQTNBd0FnQWlBQktRSUFOd01JSUFJZ0FEWUNCQ0FDUVFScVFZeWF6Z0FnQWtFSWFoQnRJUVxcXG5FZ0FrRWdhaVFBSUFFTFpBRUNmeU1BUVNCcklnSWtBQ0FBUVJocUtBSUFJUU1nQUNnQ0ZDRUFJQUpCQ0dwQkVHb2dBVUVRYWlrQ0FEY0RcXFxuQUNBQ1FRaHFRUWhxSUFGQkNHb3BBZ0EzQXdBZ0FpQUJLUUlBTndNSUlBQWdBeUFDUVFocUVHMGhBU0FDUVNCcUpBQWdBUXRwQVFOL0l3XFxcbkJCMEFGcklnSWtBQ0FDUVFocUlBRkJ3QUVRcEEwYUlBQWdBU2dDeEFFaUF5QUJLQUxBQVNJQmF5SUVRUUZxUVFGMklBUWdBQ2dDREJzZ1xcXG5BRUVRYWhDeENDQUNJQU0yQXN3QklBSWdBVFlDeUFFZ0FrRUlhaUFBRU9JRUlBSkIwQUZxSkFBTGFBRUJmeU1BUVJCcklnTWtBQUpBSUFcXFxuQWdBUkMwQlNJQkRRQWdBMEVJYWlBQUtBSUFJZ0FRc1F3Z0EwRUlhaEM5QnlJQkRRQWdBaWdDQUNBQUVNUUVJZ0VOQUNBQVFSQnFRUUU2XFxcbkFBQWdBMEVFT2dBSUlBTkJDR29RdlFjaEFRc2dBMEVRYWlRQUlBRUxad0VCZnlNQVFSQnJJZ1FrQUFKQUlBQWdBU0FDRUxFRklnSU5BQ1xcXG5BRVFRaHFJQUFvQWdBaUFCQ3hEQ0FFUVFocUVMMEhJZ0lOQUNBQUlBTVFsd01pQWcwQUlBQkJFR3BCQVRvQUFDQUVRUVE2QUFnZ0JFRUlcXFxuYWhDOUJ5RUNDeUFFUVJCcUpBQWdBZ3RtQVFOL0l3QkJFR3NpQXlRQUlBTkJDR29nQUNnQ0FDSUVRUVJxSUFRZ0FDMEFCRUVCUmhDa0NRXFxcbkpBSUFOQkNHb1F2UWNpQlEwQUlBQkJBam9BQkNBRUlBRWdBaENBQ0NJRkRRQWdBMEVFT2dBSUlBTkJDR29RdlFjaEJRc2dBMEVRYWlRQVxcXG5JQVVMWndFQmZ5TUFRUkJySWdRa0FBSkFJQUFnQVNBQ0VMRUZJZ0lOQUNBRVFRaHFJQUFvQWdBaUFCQ3hEQ0FFUVFocUVMMEhJZ0lOQUNcXFxuQUFJQU1RbGdNaUFnMEFJQUJCRUdwQkFUb0FBQ0FFUVFRNkFBZ2dCRUVJYWhDOUJ5RUNDeUFFUVJCcUpBQWdBZ3RuQVFGL0l3QkJFR3NpXFxcbkJDUUFBa0FnQUNBQklBSVFzUVVpQWcwQUlBUkJDR29nQUNnQ0FDSUFFTEVNSUFSQkNHb1F2UWNpQWcwQUlBTWdBQkR2Q3lJQ0RRQWdBRVxcXG5FUWFrRUJPZ0FBSUFSQkJEb0FDQ0FFUVFocUVMMEhJUUlMSUFSQkVHb2tBQ0FDQzJjQkEzOGpBRUVRYXlJQ0pBQWdBa0VJYWlBQUtBSUFcXFxuSWdOQkJHb2dBeUFBTFFBRVFRRkdFS1FKQWtBZ0FrRUlhaEM5QnlJRURRQWdBRUVDT2dBRUlBRW9BZ0FnQXhDbUN5SUVEUUFnQWtFRU9nXFxcbkFJSUFKQkNHb1F2UWNoQkFzZ0FrRVFhaVFBSUFRTFp3RUJmeU1BUVJCcklnUWtBQUpBSUFBZ0FTQUNFTEVGSWdJTkFDQUVRUWhxSUFBb1xcXG5BZ0FpQUJDeERDQUVRUWhxRUwwSElnSU5BQ0FBSUFNUWxRTWlBZzBBSUFCQkVHcEJBVG9BQUNBRVFRUTZBQWdnQkVFSWFoQzlCeUVDQ3lcXFxuQUVRUkJxSkFBZ0FndG5BUUYvSXdCQkVHc2lCQ1FBQWtBZ0FDQUJJQUlRc1FVaUFnMEFJQVJCQ0dvZ0FDZ0NBQ0lBRUxFTUlBUkJDR29RXFxcbnZRY2lBZzBBSUFBZ0F4RGJBaUlDRFFBZ0FFRVFha0VCT2dBQUlBUkJCRG9BQ0NBRVFRaHFFTDBISVFJTElBUkJFR29rQUNBQ0MyNEJBWFxcXG44akFFRWdheUlDSkFBZ0FrRUlhaUFCRU5nR0FrQUNRQUpBSUFJdEFBZ05BQ0FDTFFBSkRRRWdBa0VFTmdJUUlBQWdBU0FDUVJCcUVNd0hcXFxuREFJTElBQWdBaWdDRERZQ0JDQUFRUUU2QUFBTUFRc2dBQ0FDTFFBS09nQUJJQUJCQURvQUFBc2dBa0VnYWlRQUMya0JBWDhqQUVFZ2F5XFxcbklGSkFBZ0JTQUNOZ0lFSUFVZ0FUWUNBQ0FGUVFocVFSQnFJQU5CRUdvcEFnQTNBd0FnQlVFSWFrRUlhaUFEUVFocUtRSUFOd01BSUFVZ1xcXG5BeWtDQURjRENDQUFJQVZCak9UQUFDQUZRUVJxUVl6a3dBQWdCVUVJYWlBRUVNRUJBQXRwQVFGL0l3QkJJR3NpQlNRQUlBVWdBallDQkNcXFxuQUZJQUUyQWdBZ0JVRUlha0VRYWlBRFFSQnFLUUlBTndNQUlBVkJDR3BCQ0dvZ0EwRUlhaWtDQURjREFDQUZJQU1wQWdBM0F3Z2dBQ0FGXFxcblFjeit3QUFnQlVFRWFrSE0vc0FBSUFWQkNHb2dCQkRCQVFBTGJBRUJmeU1BUVNCcklnTWtBQ0FESUFFMkFnUWdBeUFBTmdJQUlBTkJDR1xcXG5wQkVHb2dBa0VRYWlrQ0FEY0RBQ0FEUVFocVFRaHFJQUpCQ0dvcEFnQTNBd0FnQXlBQ0tRSUFOd01JUVFBZ0EwSGduTTRBSUFOQkJHcEJcXFxuNEp6T0FDQURRUWhxUWN5QXpnQVF3UUVBQzJrQkFYOGpBRUVRYXlJQ0pBQWdBVUVVYWtFQU5nSUFJQUVnQVNnQ0NFRUJhallDQ0NBQ0lBXFxcbkVnQVVFTWFoQ05BUUpBQWtBZ0FpZ0NBRUVDUmcwQUlBQWdBaWdDQkNBQ0tBSUlFSndHREFFTElBQWdBaWdDQkRZQ0JDQUFRUUU2QUFBTFxcXG5JQUpCRUdva0FBdHBBUUYvSXdCQkVHc2lBaVFBSUFGQkZHcEJBRFlDQUNBQklBRW9BZ2hCQVdvMkFnZ2dBaUFCSUFGQkRHb1FqUUVDUUFcXFxuSkFJQUlvQWdCQkFrWU5BQ0FBSUFJb0FnUWdBaWdDQ0JEWEJnd0JDeUFBSUFJb0FnUTJBZ1FnQUVFQU5nSUFDeUFDUVJCcUpBQUxaQUVDXFxcbmZ5TUFRU0JySWdNa0FDQURJQUkyQWhRZ0F5QUFOZ0ljSUFNZ0EwRVVhallDR0NBRFFRaHFJQUFnQVNBRFFSaHFRY2lmd0FBUS9nSWdBeVxcXG5nQ0RDRUNJQU1vQWdnaEJDQUFLQUlBSVFBZ0EwRWdhaVFBSUFBZ0FrRUNkR3RCQUNBRUd3dG5BUUovSUFBb0FnQWdBQ0FCRUxrRUlnUnFcXFxuTFFBQUlRVUNRQ0FBS0FJSURRQWdCVUVCY1VVTkFDQUFRUUVnQXhDd0NDQUFJQUVRdVFRaEJBc2dBQ0FFSUFVZ0FSQ3NCaUFBS0FJQVFRXFxcbkFnQkd0QjFBQnNhaUlBUWF4L2FpQUNRZFFBRUtRTkdpQUFDMmtCQVg4akFFRVFheUlDSkFBZ0FVRVVha0VBTmdJQUlBRWdBU2dDQ0VFQlxcXG5hallDQ0NBQ0lBRWdBVUVNYWhER0FRSkFBa0FnQWlnQ0FFRUNSZzBBSUFBZ0FpZ0NCQ0FDS0FJSUVOY0dEQUVMSUFBZ0FpZ0NCRFlDQkNcXFxuQUFRUUEyQWdBTElBSkJFR29rQUF0c0FRRi9Jd0JCTUdzaUFpUUFBa0JCQUMwQThLWlBSUTBBSUFKQkZHcENBVGNDQUNBQ1FRSTJBZ3dnXFxcbkFrRzg3YzBBTmdJSUlBSkJDRFlDSkNBQ0lBRTJBaXdnQWlBQ1FTQnFOZ0lRSUFJZ0FrRXNhallDSUNBQ1FRaHFRZVR0elFBUW1BZ0FDeVxcXG5BQ1FUQnFKQUFMWkFFQ2Z5TUFRUkJySWdJa0FFRUFJUU1DUUNBQktBSUlSUTBBSUFKQkNHb2dBVUVJYWhDbEJpQUNLQUlJUlEwQUlBSWdcXFxuQWlnQ0RCQytCaUFBSUFJcEF3QTNBZ1JCQVNFRElBRWdBU2dDRkVFQmFqWUNGQXNnQUNBRE5nSUFJQUpCRUdva0FBdGdBUUYvSXdCQklHXFxcbnNpQWlRQUlBSWdBRFlDQkNBQ1FRaHFRUkJxSUFGQkVHb3BBZ0EzQXdBZ0FrRUlha0VJYWlBQlFRaHFLUUlBTndNQUlBSWdBU2tDQURjRFxcXG5DQ0FDUVFScVFkU3V3QUFnQWtFSWFoQnRJUUVnQWtFZ2FpUUFJQUVMWUFFQmZ5TUFRU0JySWdJa0FDQUNJQUEyQWdRZ0FrRUlha0VRYWlcXFxuQUJRUkJxS1FJQU53TUFJQUpCQ0dwQkNHb2dBVUVJYWlrQ0FEY0RBQ0FDSUFFcEFnQTNBd2dnQWtFRWFrSG9zY0FBSUFKQkNHb1FiU0VCXFxcbklBSkJJR29rQUNBQkMyb0JBbjhqQUVFUWF5SUNKQUFnQWtFSWFpQUJFTDBFQWtBQ1FDQUNLQUlNSWdORkRRQWdBQ0FDS0FJSUlBTVFpZ1xcXG5nTUFRc2dBaUFCRUpZR0FrQWdBaWdDQUNJQlJRMEFJQUFnQVNBQ0tBSUVFSW9JREFFTElBQkI0T2ZBQUVFQUVJb0lDeUFDUVJCcUpBQUxcXFxuWXdFQmZ5TUFRVEJySWdNa0FDQURJQUUyQWhBZ0F5QUJOZ0lJSUFNZ0FqWUNEQ0FESUFFZ0FtbzJBaFFnQTBFQU5nSVlJQU5CSUdvZ0EwXFxcbkVJYWhEWEF5QUFJQU5CS0dvb0FnQkJBQ0FES0FJZ0d6WUNCQ0FBSUFFMkFnQWdBMEV3YWlRQUMyVUJBWDhqQUVFUWF5SUNKQUFnQWlBQVxcXG5OZ0lJSUFJZ0FDQUJhallDREFKQUEwQWdBa0VJYWhDcENDSUFRWUNBeEFCR0RRRWdBRUdBLy84QWNVR0FBVVlOQUNBQVFRbEdEUUFnQUVcXFxuRmdha0hmQUVrTkFBc0xJQUpCRUdva0FDQUFRWUNBeEFCR0MyQUJBWDhqQUVFZ2F5SUNKQUFnQWlBQU5nSUVJQUpCQ0dwQkVHb2dBVUVRXFxcbmFpa0NBRGNEQUNBQ1FRaHFRUWhxSUFGQkNHb3BBZ0EzQXdBZ0FpQUJLUUlBTndNSUlBSkJCR3BCcUlMQkFDQUNRUWhxRUcwaEFTQUNRU1xcXG5CcUpBQWdBUXRwQVFGL0l3QkJFR3NpQkNRQUFrQUNRQ0FDUVg5cUlBRlBEUUFEUUNBQklBSkdEUUlnQkVFSWFrRUFJQUpCQVdvaUFpQUFcXFxuSUFGQmtKekJBQkR2QmlBRUtBSUlJQVFvQWd3Z0FoRFVBd3dBQ3d0QjBKdkJBRUV1UVlDY3dRQVFnd2NBQ3lBRVFSQnFKQUFMWUFFQmZ5XFxcbk1BUVNCcklnSWtBQ0FDSUFBMkFnUWdBa0VJYWtFUWFpQUJRUkJxS1FJQU53TUFJQUpCQ0dwQkNHb2dBVUVJYWlrQ0FEY0RBQ0FDSUFFcFxcXG5BZ0EzQXdnZ0FrRUVha0c4M2MwQUlBSkJDR29RYlNFQklBSkJJR29rQUNBQkMyUUJBbjhqQUVFUWF5SUNKQUFnQUNnQ0NDRURJQUFvQWdcXFxuQWhBQ0FDSUFFUXJna0NRQ0FEUlEwQUEwQWdBaUFBTmdJTUlBSWdBa0VNYWtIVStzMEFFTjBNR2lBQVFRRnFJUUFnQTBGL2FpSUREUUFMXFxcbkN5QUNFS3dKSVFBZ0FrRVFhaVFBSUFBTFlBRUJmeU1BUVNCcklnSWtBQ0FDSUFBMkFnUWdBa0VJYWtFUWFpQUJRUkJxS1FJQU53TUFJQVxcXG5KQkNHcEJDR29nQVVFSWFpa0NBRGNEQUNBQ0lBRXBBZ0EzQXdnZ0FrRUVha0hJb000QUlBSkJDR29RYlNFQklBSkJJR29rQUNBQkMxOEJcXFxuQW44akFFRWdheUlESkFBZ0EwRUlhaUFDSUFGclFRQVEvd01nQTBFUWFrRUlhaUlFUVFBMkFnQWdBeUFES1FNSU53TVFJQU5CRUdvZ0FTXFxcbkFDRU5RR0lBQkJDR29nQkNnQ0FEWUNBQ0FBSUFNcEF4QTNBZ0FnQTBFZ2FpUUFDMlFCQVg4akFFRXdheUlDSkFBZ0FpQUJOZ0lNSUFJZ1xcXG5BRFlDQ0NBQ1FSeHFRZ0UzQWdBZ0FrRUNOZ0lVSUFKQmpKSEFBRFlDRUNBQ1FRRTJBaXdnQWlBQ1FTaHFOZ0lZSUFJZ0FrRUlhallDS0NcXFxuQUNRUkJxRU5ZRElRRWdBa0V3YWlRQUlBRUxaQUVCZnlNQVFUQnJJZ0lrQUNBQ0lBRTJBZ3dnQWlBQU5nSUlJQUpCSEdwQ0FUY0NBQ0FDXFxcblFRSTJBaFFnQWtHa2tzQUFOZ0lRSUFKQkFUWUNMQ0FDSUFKQktHbzJBaGdnQWlBQ1FRaHFOZ0lvSUFKQkVHb1ExZ01oQVNBQ1FUQnFKQVxcXG5BZ0FRdG1BUVIvSXdCQkVHc2lBaVFBSUFKQkNHb2dBU2dDSUNJRElBRW9BaFFpQkNBQlFSeHFLQUlBSWdVUXhRWUNRQ0FDS0FJSUlnRU5cXFxuQUNBRUlBVkJBQ0FEUWN5WndBQVE1QXNBQ3lBQ0tBSU1JUU1nQUNBQk5nSUFJQUFnQXpZQ0JDQUNRUkJxSkFBTFlRRUJmeU1BUVNCcklnXFxcbkVrQUFKQUlBQW9BZ0FOQUNBQlFReHFFS2dCSUFBUWtRc2dBRUVCTmdJQUlBQWdBU2tDRERjQ0JDQUFRUXhxSUFGQkZHb3BBZ0EzQWdBZ1xcXG5BRUVVYWlBQlFSeHFLQUlBTmdJQUN5QUJRU0JxSkFBZ0FFRUVhZ3RsQVFKL0l3QkJFR3NpQkNRQUlBUkJBRFlDRENBRUlBRWdCRUVNYWhcXFxuRFBBaUFFS0FJRUlRVWdBQ0FETmdJUUlBQkJBRFlDRENBQVFRaHFJQU0yQWdBZ0FDQUNOZ0lFSUFBZ0JDZ0NERFlDR0NBQUlBVTJBaFFnXFxcbkFDQUJOZ0lBSUFSQkVHb2tBQXRvQVFSL0l3QkJFR3NpQWlRQUlBSkJDR29nQVJDQUFrR0FnTVFBSVFNQ1FBSkFJQUlvQWdnTkFBd0JDeVxcXG5BQ0tBSU1JZ1JCZ0lERUFFWU5BQ0FCS0FJSUlBRW9BZ1JxSUFFb0FnQnJJUVVnQkNFREN5QUFJQU0yQWdRZ0FDQUZOZ0lBSUFKQkVHb2tcXFxuQUF0bEFRSi9Jd0JCRUdzaUJDUUFJQVJCQURZQ0RDQUVJQUVnQkVFTWFoRFJBaUFFS0FJRUlRVWdBQ0FETmdJUUlBQkJBRFlDRENBQVFRXFxcbmhxSUFNMkFnQWdBQ0FDTmdJRUlBQWdCQ2dDRERZQ0dDQUFJQVUyQWhRZ0FDQUJOZ0lBSUFSQkVHb2tBQXQzQVFKL1FRRWhBMEhRQUNFRVxcXG5Ba0FnQVNBQ1FmK0l3UUJCQkJDbUNnMEFJQUVnQWtHSWljRUFRUUlRcGdvTkFFRzdBeUVFSUFFZ0FrR0RpY0VBUVFVUXBnb05BQ0FCSUFcXFxuSkJpb25CQUVFREVLWUtEUUJCRlNFRUlBRWdBa0g4aU1FQVFRTVFwZ29oQXdzZ0FDQUVPd0VDSUFBZ0F6c0JBQXRsQVFKL0l3QkJFR3NpXFxcbkJDUUFJQVJCQURZQ0RDQUVJQUVnQkVFTWFoRFRBaUFFS0FJRUlRVWdBQ0FETmdJUUlBQkJBRFlDRENBQVFRaHFJQU0yQWdBZ0FDQUNOZ1xcXG5JRUlBQWdCQ2dDRERZQ0dDQUFJQVUyQWhRZ0FDQUJOZ0lBSUFSQkVHb2tBQXRsQVFKL0FrQUNRQUpBQWtBZ0FnMEFRUUVoQXd3QkN5QUNcXFxuUVg5S0lnUkZEUUZCQUMwQThhWlBHaUFDSUFRUTl3c2lBMFVOQWdzZ0F5QUJJQUlRcEEwaEFTQUFJQUkyQWdnZ0FDQUNOZ0lFSUFBZ0FUXFxcbllDQUE4TEVKY0lBQXNnQkNBQ0VKb05BQXRsQVFKL0FrQUNRQUpBQWtBZ0FnMEFRUUVoQXd3QkN5QUNRWDlLSWdSRkRRRkJBQzBBOGFaUFxcXG5HaUFDSUFRUTl3c2lBMFVOQWdzZ0F5QUJJQUlRcEEwaEFTQUFJQUkyQWdnZ0FDQUNOZ0lFSUFBZ0FUWUNBQThMRUpjSUFBc2dCQ0FDRUpcXFxub05BQXRnQVFGL0l3QkJFR3NpQkNRQUFrQUNRQ0FCUVJ4cUtBSUFEUUJCQUNFQkRBRUxJQVJCQ0dvZ0FVRVFhaUFCSUFJZ0F4RGpCQ0FDXFxcbklBTVFrd0lnQkNnQ0RDRURJQVFvQWdnaEFRc2dBQ0FETmdJRUlBQWdBVFlDQUNBRVFSQnFKQUFMWXdFQ2Z5QUJLQUlVSVFJQ1FDQUJLQVxcXG5JZ0lnTkZEUUFDUUFKQUlBRkJIR29vQWdBaUFTQURTdzBBSUFFZ0EwY05BUXdDQ3lBQ0lBTnFMQUFBUWI5L1NnMEJDeUFDSUFGQkFDQURcXFxuUWF6cHdBQVE1QXNBQ3lBQUlBTTJBZ1FnQUNBQ05nSUFDMkVCQVg4akFFRVFheUlDSkFBZ0FSQ0REQ0FCUVJScVFRQTJBZ0FnQWlBQklBXFxcbkZCREdvUXhnRUNRQUpBSUFJb0FnQkJBa1lOQUNBQUlBSW9BZ1FnQWlnQ0NCRDBBZ3dCQ3lBQUlBSW9BZ1EyQWdRZ0FFRUNOZ0lBQ3lBQ1xcXG5RUkJxSkFBTFlBRUJmeU1BUVJCcklnUWtBQ0FFUVFocUlBRWdBaERzQlFKQUFrQWdCQ2dDQ0VVTkFFRUJJUUVnQkNnQ0RDRUNEQUVMSUFcXFxuUWdBU0FERUs4Q0lBUW9BZ1FoQWlBRUtBSUFJUUVMSUFBZ0FUWUNBQ0FBSUFJMkFnUWdCRUVRYWlRQUMxMEJBbjhqQUVFUWF5SUNKQUFnXFxcbkFrRUlhaUFBS0FJQUlnTVFzUXdDUUNBQ1FRaHFFTDBISWdBTkFDQUJLQUlBSUFNUTd3c2lBQTBBSUFOQkVHcEJBVG9BQUNBQ1FRUTZBQVxcXG5nZ0FrRUlhaEM5QnlFQUN5QUNRUkJxSkFBZ0FBdGVBUUovSUFBb0FnQWdBQ0FCRUxrRUlnUnFMUUFBSVFVQ1FDQUFLQUlJRFFBZ0JVRUJcXFxuY1VVTkFDQUFRUUVnQXhDdkNDQUFJQUVRdVFRaEJBc2dBQ0FFSUFVZ0FSQ3NCaUFBS0FJQUlBUkJBblJySWdCQmZHb2dBallDQUNBQUMxXFxcbjhCQVg4akFFRXdheUlDSkFBZ0FpQUFOZ0lNSUFKQkhHcENBVGNDQUNBQ1FRSTJBaFFnQWtIWXE4QUFOZ0lRSUFKQkRqWUNMQ0FDSUFKQlxcXG5LR28yQWhnZ0FpQUNRUXhxTmdJb0lBRWdBa0VRYWhDdEJTRUFJQUpCTUdva0FDQUFDMWtCQVg4akFFRWdheUlDSkFBZ0FDZ0NBQ0VBSUFcXFxuSkJDR3BCRUdvZ0FVRVFhaWtDQURjREFDQUNRUWhxUVFocUlBRkJDR29wQWdBM0F3QWdBaUFCS1FJQU53TUlJQUFnQWtFSWFoRENCU0VCXFxcbklBSkJJR29rQUNBQkMxa0JBWDhqQUVFZ2F5SUNKQUFnQUNnQ0FDRUFJQUpCQ0dwQkVHb2dBVUVRYWlrQ0FEY0RBQ0FDUVFocVFRaHFJQVxcXG5GQkNHb3BBZ0EzQXdBZ0FpQUJLUUlBTndNSUlBQWdBa0VJYWhEREJTRUJJQUpCSUdva0FDQUJDMlVCQTM4Z0FFRzU4OTN4ZVd3aEFRSkFcXFxuQTBBZ0FVRUFFTE1MSWdBb0FnaHJkaUlDSUFBb0FnUWlBMDhOQVNBQUtBSUFJQUpCQm5ScUlnSVFsUW9DUUNBQVFRQW9Bb0NuVDBZTkFDXFxcbkFDRU1RSkRBRUxDeUFDRHdzZ0FpQURRWmpjd0FBUWdRVUFDMm9CQVg4Q1FBSkFBa0FnQUMwQUFBNERBQUVDQUFzZ0FDZ0NCQ0FBUVF4cVxcXG5LQUlBSUFFUW5BMFBDeUFBUVFGcUlBRVFzQUVQQzBFQklRSUNRQ0FCUVp5SHdRQkJBUkQvQ2cwQVFRRWhBaUFBUVFGcUlBRVFjQTBBSUFcXFxuRkJuWWZCQUVFQkVQOEtJUUlMSUFJTFdRRUJmeU1BUVNCcklnSWtBQ0FBS0FJQUlRQWdBa0VJYWtFUWFpQUJRUkJxS1FJQU53TUFJQUpCXFxcbkNHcEJDR29nQVVFSWFpa0NBRGNEQUNBQ0lBRXBBZ0EzQXdnZ0FDQUNRUWhxRU1jRklRRWdBa0VnYWlRQUlBRUxjZ0VCZjBFQklRSUNRQ1xcXG5BQUlBRkIvNGpCQUVFRUVLWUtEUUFnQUNBQlFZT0p3UUJCQlJDbUNnMEFJQUFnQVVHSWljRUFRUUlRcGdvTkFDQUFJQUZCaW9uQkFFRURcXFxuRUtZS0RRQWdBQ0FCUWZ5SXdRQkJBeENtQ2cwQVFRQkJBaUFBSUFGQmpZbkJBRUVFRUtZS0d5RUNDeUFDQzJBQkFYOGpBRUVnYXlJREpBXFxcbkFDUUNBQUtBSUlJQUZMRFFBZ0EwRVVha0lBTndJQUlBTkJBVFlDRENBRFFkeVd3UUEyQWdnZ0EwSGtsc0VBTmdJUUlBTkJDR29nQWhDWVxcXG5DQUFMSUFBb0FnQWhBQ0FEUVNCcUpBQWdBQ0FCUVFOMGFndGNBUUYvSXdCQklHc2lBaVFBSUFKQkVHcEJDR29nQVVFSWFpZ0NBRFlDQUNcXFxuQUNJQUVwQWdBM0F4QUNRQU5BSUFKQkNHb2dBa0VRYWhDcEFpQUNLQUlJSWdGRkRRRWdBQ0FCSUFJb0Fnd1FsQXdNQUFzTElBSkJJR29rXFxcbkFBdGZBZ0YvQVg0akFFRWdheUlDSkFBZ0FDa0NBQ0VESUFJZ0FDZ0NDRFlDR0NBQ0lBTTNBeEFDUUFOQUlBSkJDR29nQWtFUWFoQ3BBaVxcXG5BQ0tBSUlJZ0JGRFFFZ0FTQUFJQUlvQWd3US93cEZEUUFMQ3lBQ1FTQnFKQUFnQUVFQVJ3dFpBUUYvSXdCQklHc2lBaVFBSUFBb0FnQWhcXFxuQUNBQ1FRaHFRUkJxSUFGQkVHb3BBZ0EzQXdBZ0FrRUlha0VJYWlBQlFRaHFLUUlBTndNQUlBSWdBU2tDQURjRENDQUFJQUpCQ0dvUXlRXFxcblVoQVNBQ1FTQnFKQUFnQVF0Y0FRSi9Ba0FnQUVFUWFpZ0NBQ0lCUlEwQUlBQkJGR29vQWdBaEFpQUJRUUE2QUFBZ0FrVU5BQ0FCSUFKQlxcXG5BUkN5REFzQ1FDQUFRWDlHRFFBZ0FDQUFLQUlFSWdGQmYybzJBZ1FnQVVFQlJ3MEFJQUJCR0VFSUVMSU1Dd3RYQUFKQUlBTkZEUUFDUUFcXFxuSkFBa0FnQWlBRFN3MEFJQUlnQTBjTkFRd0NDeUFCSUFOcUxBQUFRYjkvU2cwQkN5QUJJQUlnQXlBQ0lBUVE1QXNBQ3lBQ0lBTnJJUUlMXFxcbklBQWdBallDQkNBQUlBRWdBMm8yQWdBTFhBRUVmeU1BUVJCcklnSWtBQ0FCS0FJRUlRTWdBa0VJYWlBQklBRW9BZ0FpQkNBRUlBRVF0Z1xcXG5JZ0FpZ0NEQ0VGSUFFUW93WWdBQ0FETmdJRUlBQWdCRFlDQUNBQUlBVWdCR3RCREc0MkFnZ2dBUkRlQnlBQ1FSQnFKQUFMWFFFQ2Z5TUFcXFxuUVJCcklnTWtBQ0FEUVFocUlBSWdBU2dDRUJDTUJ5QURLQUlNSVFJQ1FDQURLQUlJSWdRTkFDQUJRUWhxRUlZTElBRkJER29nQWpZQ0FDXFxcbkFCUVFFMkFnZ0xJQUFnQkRZQ0FDQUFJQUkyQWdRZ0EwRVFhaVFBQzE0QkFYOGpBRUdBQW1zaUF5UUFJQU1nQVNBQ0VLVUpBa0FDUUNBRFxcXG5LQUlBUVFKSERRQWdBRUVBTmdJUURBRUxJQU5CZ0FGcUlBTkJnQUVRcEEwYUlBQWdBMEhRQVdwQk1CQ2tEUm9nQTBHVUFXb1E0d3dMSUFcXFxuTkJnQUpxSkFBTFhBRUJmeU1BUVJCcklnTWtBQUpBQWtBZ0FVRWNhaWdDQUEwQVFRQWhBUXdCQ3lBRFFRaHFJQUZCRUdvZ0FTQUNFTnNFXFxcbklBSVFtQUlnQXlnQ0RDRUNJQU1vQWdnaEFRc2dBQ0FDTmdJRUlBQWdBVFlDQUNBRFFSQnFKQUFMWEFFQmZ5TUFRUkJySWdNa0FBSkFBa1xcXG5BZ0FVRWNhaWdDQUEwQVFRQWhBUXdCQ3lBRFFRaHFJQUZCRUdvZ0FTQUNFT29FSUFJUW1RSWdBeWdDRENFQ0lBTW9BZ2doQVFzZ0FDQUNcXFxuTmdJRUlBQWdBVFlDQUNBRFFSQnFKQUFMWEFFQmZ5TUFRUkJySWdNa0FBSkFBa0FnQVVFY2FpZ0NBQTBBUVFBaEFRd0JDeUFEUVFocUlBXFxcbkZCRUdvZ0FTQUNFTnNFSUFJUW9RVWdBeWdDRENFQ0lBTW9BZ2doQVFzZ0FDQUNOZ0lFSUFBZ0FUWUNBQ0FEUVJCcUpBQUxZUUVCZnlNQVxcXG5RU0JySWdVa0FCQ0lCeUFGUVJCcUlBTWdCQkNDQ0NBRklBRWdBaENDQ0VFVVFRUVFwUWNpQkVLQmdJQ0FFRGNDQUNBRUlBVXBBeEEzQWdcXFxuZ2dCRUVRYWlBRlFSaHFLQUlBTmdJQUlBQWdCU0FFRUxjR0lBVkJJR29rQUF0ZEFRTi9Jd0JCRUdzaUJTUUFJQVZCQ0dvZ0FpQURJQUVvXFxcbkFnQWlCaUFCS0FJSUlnY1Fvd1FDUUNBRktBSUlJZ0VOQUNBR0lBY2dBaUFESUFRUTVBc0FDeUFGS0FJTUlRTWdBQ0FCTmdJQUlBQWdBelxcXG5ZQ0JDQUZRUkJxSkFBTFZ3QUNRQ0FCUlEwQUFrQUNRQUpBSUFNZ0FVc05BQ0FESUFGSERRRU1BZ3NnQWlBQmFpd0FBRUcvZjBvTkFRc2dcXFxuQWlBRElBRWdBeUFFRU9RTEFBc2dBeUFCYXlFREN5QUFJQU0yQWdRZ0FDQUNJQUZxTmdJQUMxVUJBWDhqQUVFUWF5SUNKQUFnQWlBQlFUXFxcbjl4UVlBQmNqb0FEeUFDSUFGQkJuWkJQM0ZCZ0FGeU9nQU9JQUlnQVVHQTRBTnhRUXgyUWVBQmNqb0FEU0FBSUFKQkRXb2dBa0VRYWhENlxcXG5DQ0FDUVJCcUpBQUxWd0FDUUNBRFJRMEFBa0FDUUFKQUlBSWdBMHNOQUNBQ0lBTkhEUUVNQWdzZ0FTQURhaXdBQUVHL2Ywb05BUXNnQVNcXFxuQUNJQU1nQWlBRUVPUUxBQXNnQWlBRGF5RUNDeUFBSUFJMkFnUWdBQ0FCSUFOcU5nSUFDMkFCQW44akFFSGdBR3NpQWlRQUlBRkJ5QUZxXFxcbktBSUFLQUpRSVFNZ0FrRVFhaUFCUVlBQmFrSFFBQkNrRFJvZ0FrRUlhaUFCSUFOQnFQM0FBQkRUQnlBQUlBSkJFR29nQWlnQ0NDQUNLQVxcXG5JTUlBRW9BdEFCRUhrZ0FrSGdBR29rQUF0ZEFRTi9Jd0JCRUdzaUJTUUFJQVZCQ0dvZ0FpQURJQUVvQWdBaUJpQUJLQUlJSWdjUXBnUUNcXFxuUUNBRktBSUlJZ0VOQUNBR0lBY2dBaUFESUFRUTVBc0FDeUFGS0FJTUlRTWdBQ0FCTmdJQUlBQWdBellDQkNBRlFSQnFKQUFMWVFFQ2Z3XFxcbkpBQWtBZ0FRMEFRUVFoQWd3QkN3SkFJQUZCLy8vLy93QkxEUUFnQVVFRGRDSURRWDlNRFFBZ0FVR0FnSUNBQVVsQkFuUWlCQ0FESUFJUVxcXG50Z2tpQWcwQklBUWdBeENhRFFBTEVKY0lBQXNnQUNBQk5nSUVJQUFnQWpZQ0FBdFhBQUpBSUFGRkRRQUNRQUpBQWtBZ0F5QUJTdzBBSUFcXFxuTWdBVWNOQVF3Q0N5QUNJQUZxTEFBQVFiOS9TZzBCQ3lBQ0lBTWdBU0FESUFRUTVBc0FDeUFESUFGcklRTUxJQUFnQXpZQ0JDQUFJQUlnXFxcbkFXbzJBZ0FMV1FFQmZ5TUFRUkJySWdRa0FDQUVJQUUyQWd3Z0JDQUFOZ0lJSUFNb0FnQWhBQUpBQTBBZ0JFRUlhaENGQXlJQlFZQ0F4QVxcXG5CR0RRRWdBaUFDSUFFZ0FpQUJTUnNnQUNBQlN4c2hBZ3dBQ3dzZ0JFRVFhaVFBSUFJTFZ3QUNRQ0FCUlEwQUFrQUNRQUpBSUFNZ0FVc05cXFxuQUNBRElBRkhEUUVNQWdzZ0FpQUJhaXdBQUVHL2Ywb05BUXNnQWlBRElBRWdBeUFFRU9RTEFBc2dBeUFCYXlFREN5QUFJQU0yQWdRZ0FDXFxcbkFDSUFGcU5nSUFDMW9CQVg5QkFTRUJBa0FnQUMwQUFpQUFMUUFBY2lBQUxRQURjaUFBTFFBRWNpQUFMUUFGY2lBQUxRQUdjaUFBTFFBSFxcXG5jaUFBTFFBSWNpQUFMUUFKY2lBQUxRQUtjaUFBTFFBQmNnMEFJQUF0QUF0QkFFY2hBUXNnQVF0a0FRSi9JQUVvQWdBaEFpQUJRUUEyQWdcXFxuQUNRQUpBSUFKRkRRQWdBU2dDQkNFRFFRQXRBUEdtVHhwQkNFRUVFUGNMSWdGRkRRRWdBU0FETmdJRUlBRWdBallDQUNBQVFmVFl6UUEyXFxcbkFnUWdBQ0FCTmdJQUR3c1FodzRBQzBFRVFRZ1FtZzBBQzJBQkFuOGpBRUVRYXlJQ0pBQUNRQUpBSUFFdEFBQkJBMFlOQUVFQUlRRU1BUVxcXG5zZ0FrRUlhaUFCS0FJRUlnRW9BZ0FnQVNnQ0JDZ0NKQkVGQUNBQ0tBSU1JUU1nQWlnQ0NDRUJDeUFBSUFNMkFnUWdBQ0FCTmdJQUlBSkJcXFxuRUdva0FBdGdBUUovSXdCQkVHc2lBaVFBQWtBQ1FDQUJMUUFBUVFOR0RRQkJBQ0VCREFFTElBSkJDR29nQVNnQ0JDSUJLQUlBSUFFb0FnXFxcblFvQWhnUkJRQWdBaWdDRENFRElBSW9BZ2doQVFzZ0FDQUROZ0lFSUFBZ0FUWUNBQ0FDUVJCcUpBQUxXd0VEZnlNQVFSQnJJZ1FrQUNBRVxcXG5RUWhxSUFJZ0FTZ0NBQ0lGSUFFb0FnZ2lCaERGQmdKQUlBUW9BZ2dpQVEwQUlBVWdCa0VBSUFJZ0F4RGtDd0FMSUFRb0Fnd2hBaUFBSUFcXFxuRTJBZ0FnQUNBQ05nSUVJQVJCRUdva0FBdGtBZ0YvQVg0akFFRVFheUlDSkFBQ1FFRUFJQUVvQWdBUkF3QWlBVVVOQUNBQklBRXBBd0FpXFxcbkEwSUJmRGNEQUNBQUlBRXBBd2czQXdnZ0FDQUROd01BSUFKQkVHb2tBQThMUWNpSHdBQkJ4Z0FnQWtFSWFrR1FpTUFBUWZDSXdBQVF3Z1xcXG5RQUMxNEJBWDhDUUNBQUtBSUVLQUlBSUFGQkFuUnJRWHhxS0FJQUlnRWdBQ2dDQUNJQVFReHFLQUlBSWdKSkRRQWdBU0FDUVp5ZHdBQVFcXFxuZ1FVQUN5QUFLQUlBSUFBb0FnUWdBQ2dDQ0NBQlFSeHNhaUlBS0FJQUlBQW9BZ2dRcGdvTFhRRUJmeU1BUVJCcklnUWtBQUpBQWtBZ0FRXFxcbjBBSUFBZ0F4Q0lBUXdCQ3lBRVFRaHFJQUpCQUJEVEJDQUVLQUlNSVFNZ0JDZ0NDQ0FCSUFJUXBBMGhBU0FBSUFJMkFnZ2dBQ0FETmdJRVxcXG5JQUFnQVRZQ0FBc2dCRUVRYWlRQUMxMEJCSDlCQUNFQ0FrQUNRQ0FCTFFBbFJRMEFEQUVMSUFGQkFUb0FKU0FCS0FJY0lRTWdBU2dDSUNcXFxuRUVBa0FnQVMwQUpBMEFJQVFnQTBZTkFRc2dCQ0FEYXlFRklBRW9BZ1FnQTJvaEFnc2dBQ0FGTmdJRUlBQWdBallDQUF0YkFRTi9Jd0JCXFxcbkVHc2lCQ1FBSUFSQkNHb2dBaUFCS0FJQUlnVWdBU2dDQ0NJR0VNNEdBa0FnQkNnQ0NDSUJEUUFnQlNBR1FRQWdBaUFERU9RTEFBc2dCQ1xcXG5nQ0RDRUNJQUFnQVRZQ0FDQUFJQUkyQWdRZ0JFRVFhaVFBQzFNQkFuOGdBVUZRYWlFREFrQUNRQ0FDUVFwTkRRQkJBU0VFSUFOQkNra05cXFxuQVVGL0lBRkJJSElpQTBHcGYyb2lBU0FCSUFOQm4zOXFTUnNoQXdzZ0F5QUNTU0VFQ3lBQUlBTTJBZ1FnQUNBRU5nSUFDMlFCQVg4Q1FBXFxcbkpBQWtBQ1FDQUJMUUFBRGdNQUFRSUFDeUFCUVF4cUtBSUFRUUJISVFJTUFnc2dBQ0FCS0FBQk5nQUJRUUloQWd3QkN5QUFJQUVwQUFFM1xcXG5BQUVnQUVFSmFpQUJRUWxxS1FBQU53QUFRUU1oQWdzZ0FDQUNPZ0FBSUFFUXZnc0xXUUVDZjBFQUlRSUNRQ0FBTFFBQUlnTWdBUzBBQUVcXFxuY05BRUVCSVFJQ1FBSkFJQU5CZm1vT0FnRUFBZ3NnQTBFRFJ3MEJJQUJCQVdvZ0FVRUJhaERLREE4TElBTkJBa2NOQUNBQUtBQUJJQUVvXFxcbkFBRkdJUUlMSUFJTFdRRUNmeUFDS0FJSUlBSW9BZ1FpQTBFQ2RHb2hCQ0FDS0FJQUlRSUNRQU5BSUFBZ0FVWU5BU0FFSUFBb0FnQTJBZ1xcXG5BZ0FFRUFOZ0lBSUFSQkJHb2hCQ0FEUVFGcUlRTWdBRUVFYWlFQURBQUxDeUFDSUFNMkFnQUxYUUVCZnlNQVFUQnJJZ01rQUNBRElBRTJcXFxuQWd3Z0F5QUFOZ0lJSUFOQkhHcENBVGNDQUNBRFFRRTJBaFFnQTBISW04NEFOZ0lRSUFOQnJnSTJBaXdnQXlBRFFTaHFOZ0lZSUFNZ0EwXFxcbkVJYWpZQ0tDQURRUkJxSUFJUW1BZ0FDMXNCQVg4akFFRVFheUlFSkFBQ1FBSkFJQUVvQWdRZ0Ftc2dBMGtOQUVHQmdJQ0FlQ0VCREFFTFxcXG5JQVJCQ0dvZ0FTQUNJQU1RcFFNZ0JDZ0NEQ0VDSUFRb0FnZ2hBUXNnQUNBQ05nSUVJQUFnQVRZQ0FDQUVRUkJxSkFBTFd3RUJmeU1BUVJcXFxuQnJJZ1FrQUFKQUFrQWdBU2dDQkNBQ2F5QURTUTBBUVlHQWdJQjRJUUVNQVFzZ0JFRUlhaUFCSUFJZ0F4Q21BeUFFS0FJTUlRSWdCQ2dDXFxcbkNDRUJDeUFBSUFJMkFnUWdBQ0FCTmdJQUlBUkJFR29rQUF0YkFRRi9Jd0JCRUdzaUJDUUFBa0FDUUNBQktBSUVJQUpySUFOSkRRQkJnWVxcXG5DQWdIZ2hBUXdCQ3lBRVFRaHFJQUVnQWlBREVLUURJQVFvQWd3aEFpQUVLQUlJSVFFTElBQWdBallDQkNBQUlBRTJBZ0FnQkVFUWFpUUFcXFxuQzFRQkFYOGpBRUVRYXlJREpBQWdBeUFDTmdJTUlBRWdBMEVNYWhDTEN5QUFJQUpCYUdvaUFpa0NBRGNDQUNBQVFSQnFJQUpCRUdvcEFnXFxcbkEzQWdBZ0FFRUlhaUFDUVFocUtRSUFOd0lBSUFOQkVHb2tBQXRZQVFGL0l3QkJ3QUZySWdJa0FDQUJFTkVMSUFKQkNHb2dBUkM5Q1NBQ1xcXG5LQUlNUVFBMkFnQWdBa0VRYWlBQlFiQUJFS1FOR2lBQUlBSkJFR3BCQ0dwQnFBRVFwQTBhSUFGQnNBRkJDQkN5RENBQ1FjQUJhaVFBQzFcXFxuZ0JBbjhqQUVFUWF5SUNKQUFDUUFKQUlBRW9BZ0FpQVNnQ0FFRUJSZzBBUVFBaEFRd0JDeUFDUVFocUlBRkJCR29RL3dVZ0FpZ0NEQ0VEXFxcbklBSW9BZ2doQVFzZ0FDQUROZ0lFSUFBZ0FUWUNBQ0FDUVJCcUpBQUxWUUVEZnlNQVFSQnJJZ0VrQUFKQUlBQW9BZ0FpQUVFUWFpZ0NBQ1xcXG5JQ1JRMEFJQUpCQURvQUFDQUFRUlJxS0FJQUlnTkZEUUFnQWlBRFFRRVFzZ3dMSUFFZ0FEWUNEQ0FCUVF4cUVPSUlJQUZCRUdva0FBdFZcXFxuQVFKL0l3QkJFR3NpQkNRQUlBUkJBRFlDRENBRUlBTWdCRUVNYWhEUEFpQUJJQUlnQkNnQ0FDQUVLQUlFSWdNUXl3WWhCU0FBSUFJZ0EyXFxcbnMyQWdRZ0FDQUJJQU5xUVFBZ0JSczJBZ0FnQkVFUWFpUUFDMVlCQW44akFFRVFheUlDSkFBZ0FoRDlEU0lETmdJRUlBSWdBeEFrSWdNMlxcXG5BZ3dnQWlBREVDVTJBZ2dnQWtFTWFoQ1dDeUFDUVFocUlBQWdBUkNMRENBQ1FRaHFFSllMSUFKQkJHb1FsZ3NnQWtFUWFpUUFDMVVCQW5cXFxuOGpBRUVRYXlJRUpBQWdCRUVBTmdJTUlBUWdBeUFFUVF4cUVORUNJQUVnQWlBRUtBSUFJQVFvQWdRaUF4RGVCaUVGSUFBZ0FpQURhellDXFxcbkJDQUFJQUVnQTJwQkFDQUZHellDQUNBRVFSQnFKQUFMV3dFQmZ5TUFRUkJySWdNa0FDQURJQUEyQWdnZ0F5QUFJQUZxTmdJTUFrQURRQ1xcXG5BRFFRaHFFSzBJSWdCQmdJREVBRVlOQVNBQ0VNZ0pJZ0ZCZ0lERUFFWU5BU0FCSUFCR0RRQUxDeUFEUVJCcUpBQWdBRUdBZ01RQVJndGFcXFxuQVFKL0l3QkJFR3NpQWlRQUFrQUNRQ0FCTFFBMFFRRkdEUUJCQUNFQkRBRUxJQUpCQ0dvZ0FTQUJLQUlvSUFFb0Fpd1E3UVlnQWlnQ0RDXFxcbkVESUFJb0FnZ2hBUXNnQUNBRE5nSUVJQUFnQVRZQ0FDQUNRUkJxSkFBTFV3SUNmd0YrSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQUpBSUFBZ1xcXG5BRUVRYWlJRElBSkJER29Rb2dRaUJDQUNRUXhxRUwwRklnRU5BQ0FBSUFRZ0FpZ0NEQ0FERU4wRkdnc2dBa0VRYWlRQUlBRkJBRWNMVlFcXFxuRUNmeU1BUVNCcklnRWtBQ0FCUVFocUlBQVF0Z1FDUUFKQUlBRXRBQWdOQUVFQUlRSWdBUzBBQ1VVTkFTQUJRUlkyQWhBZ0FDQUJRUkJxXFxcbkVNNElJUUlNQVFzZ0FTZ0NEQ0VDQ3lBQlFTQnFKQUFnQWd0WUFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FSRFRCZ0pBQWtBZ0FpMEFDQVxcXG4wQVFRQWhBU0FBSUFJdEFBcEJBQ0FDTFFBSkd6b0FBUXdCQ3lBQUlBSW9BZ3cyQWdSQkFTRUJDeUFBSUFFNkFBQWdBa0VRYWlRQUMxZ0JcXFxuQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFCRUwwTkFrQUNRQ0FDTFFBSURRQkJBQ0VCSUFBZ0FpMEFDa0VBSUFJdEFBa2JPZ0FCREFFTElBXFxcbkFnQWlnQ0REWUNCRUVCSVFFTElBQWdBVG9BQUNBQ1FSQnFKQUFMWFFFQmZ5TUFRUkJySWdVa0FDQUJLQUlBUWN5Q3dBQkJBUkNJRENBRlxcXG5RUWhxSUFFZ0JTQURJQVFRbGdFQ1FBSkFJQVV0QUFoQkJFY05BQ0FBSUFGQnpJTEFBRUVCRUtBTERBRUxJQUFnQlNrRENEY0NBQXNnQlVcXFxuRVFhaVFBQzJNQUFrQUNRQUpBSUFFZ0FrR3VnOEFBUVJBUXBnb05BQ0FCSUFKQm5ZUEFBRUVSRUtZS0RRRWdBQ0FCSUFKQnRJVEFBRUVDXFxcbkVQQUNOZ0lFUVFFaEFnd0NDMEVBSVFJZ0FFRUFPZ0FCREFFTElBQkJBVG9BQVVFQUlRSUxJQUFnQWpvQUFBdGNBZ0YvQVg0akFFRVFheVxcXG5JREpBQWdBMEVZSUFFZ0FoQ1hBZ0pBQWtBZ0F5Z0NBQ0lDUlEwQUlBTXBBZ1FoQkNBQUlBTW9BZ3cyQWd3Z0FDQUVOd0lFREFFTElBQWdcXFxuQXlrQ0JEY0NCQXNnQUNBQ05nSUFJQU5CRUdva0FBdFZBUUYvSXdCQklHc2lBaVFBSUFJZ0FDQUJFSjBISUFJZ0FpZ0NCQ0lCTmdJY0lBXFxcbklnQWlnQ0FDSUFOZ0lZSUFKQkNHb2dBQ0FCRUlVSUlBSkJHR29RNlFzZ0FrRUlhaEN5Q1NFQklBSkJJR29rQUNBQkMxVUJBbjhqQUVFZ1xcXG5heUlCSkFBZ0FVRUlhaUFBRUxvRUFrQUNRQ0FCTFFBSURRQkJBQ0VDSUFFdEFBbEZEUUVnQVVFV05nSVFJQUFnQVVFUWFoRGRDQ0VDREFcXFxuRUxJQUVvQWd3aEFnc2dBVUVnYWlRQUlBSUxXUUVCZndKQUFrQWdBQ2dDQ0NJQ0lBRkpEUUFDUUNBQlJRMEFBa0FnQWlBQlN3MEFJQUlnXFxcbkFVWU5BUXdEQ3lBQUtBSUFJQUZxTEFBQVFVQklEUUlMSUFBZ0FSQ2JDd3NQQzBHMGhNRUFRVEJCNUlUQkFCQ0RCd0FMWWdFRGZ5TUFRUlxcXG5CcklnRWtBQUpBQWtBZ0FCRGtEU0lDUlEwQUlBQVE0dzBpQTBVTkFTQUJJQUkyQWdnZ0FTQUFOZ0lFSUFFZ0F6WUNBQ0FCRU0wTkFBdEJcXFxuMTkvTkFFRXJRZXp1elFBUWd3Y0FDMEhYMzgwQVFTdEIzTzdOQUJDREJ3QUxWZ0VCZndKQUlBQW9BZ2dpQWlBQUtBSUVSdzBBSUFBZ0FoXFxcbkR5Q0NBQUtBSUlJUUlMSUFBb0FnQWdBa0VNYkdvaUFpQUJLUUlBTndJQUlBSkJDR29nQVVFSWFpZ0NBRFlDQUNBQUlBQW9BZ2hCQVdvMlxcXG5BZ2dMV0FFRGZ5TUFRUkJySWdFa0FDQUFRUUEyQWdRZ0FDZ0NEQ0VDSUFBb0FnZ2hBeUFBUVFRMkFnQWdBVUlFTndNSUlBRkJDR29Rc0FcXFxub2dBRUtFZ0lDQXdBQTNBZ2dnQXlBQ0lBTnJRUXh1RU9ZSklBRkJFR29rQUF0VEFRSi9RUUloQVFKQUlBQW9Ba2dpQWlBQUtBSk1SZzBBXFxcbklBQWdBa0VCYWpZQ1NBSkFBa0FnQUNnQ1JFRUlTdzBBSUFCQkJHb2hBQXdCQ3lBQUtBSUlJUUFMSUFBZ0FrRURkR290QUFRaEFRc2dBUVxcXG50VkFRSi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FVRUVhaERGQ0FKQUFrQWdBaWdDQ0EwQVFRQWhBd3dCQzBFQklRTWdBU2dDQUNBQ0tBSU1cXFxuRUlZTklRRUxJQUFnQVRZQ0JDQUFJQU0yQWdBZ0FrRVFhaVFBQzFNQkFuOGpBRUVRYXlJR0pBQWdCa0VJYWlBRElBUWdBU0FDRUtZRUFrXFxcbkFnQmlnQ0NDSUhEUUFnQVNBQ0lBTWdCQ0FGRU9RTEFBc2dCaWdDRENFQ0lBQWdCellDQUNBQUlBSTJBZ1FnQmtFUWFpUUFDMWNCQW44alxcXG5BRUVRYXlJQ0pBQUNRQUpBSUFFdEFEUU5BRUVBSVFFTUFRc2dBa0VJYWlBQklBRW9BaWdnQVNnQ0xCRHRCaUFDS0FJTUlRTWdBaWdDQ0NcXFxuRUJDeUFBSUFNMkFnUWdBQ0FCTmdJQUlBSkJFR29rQUF0VEFRRi9JQUJCdWZQZDhYbHNJQUJCcHJLRmlnTnNJZ0Z6clVLU0UzNUNJSWluXFxcblFRRjBRZmpWeXdCcUx3RUFJQUJxUWJuejNmRjViQ0FCYzYxQ2toTitRaUNJcDBFQ2RFR2MvTXNBYWlnQ0FDQUFSZ3RTQVFGL0l3QkJFR1xcXG5zaUFpUUFBa0FDUUNBQUtBSU1SUTBBSUFBaEFRd0JDeUFDUVFocUlBQkJDR29vQWdBMkFnQWdBaUFBS1FJQU53TUFJQUVnQWhEUENDRUJcXFxuSUFBUTVBd0xJQUpCRUdva0FDQUJDMUlCQVg4akFFRVFheUlFSkFBQ1FBSkFJQUVnQWlBREVNUUNJZ01OQUVFQUlRRU1BUXNnQkVFSWFpXFxcbkFCSUFNUTl3WkJBU0VCSUFRb0FnZ2hBd3NnQUNBRE5nSUVJQUFnQVRZQ0FDQUVRUkJxSkFBTFVRRUJmeU1BUWVBQWF5SURKQUFnQTBFSVxcXG5haUFCSUFJUWlRc0NRQUpBSUFNb0FoUkJBa2NOQUNBQVFRSTJBZ0FNQVFzZ0FDQURRUlJxUWNnQUVLUU5HaUFEUVFocUVPTU1DeUFEUWVcXFxuQUFhaVFBQzB3QkFuOGdBQ2dDQUNJRUlBRnFJQU9uUVJsMklnVTZBQUFnQUNBQUtBSUlJQUpCQVhGck5nSUlJQUFnQUNnQ0RFRUJhallDXFxcbkRDQUVJQUFvQWdRZ0FVRjRhbkZxUVFocUlBVTZBQUFMVlFFQmZ5TUFRUkJySWdNa0FDQURJQUVnQWhDS0F3SkFBa0FnQXlnQ0FDSUJSUVxcXG4wQUlBQWdBeWtDQkRjQ0NDQUFJQUUyQWdRTUFRc2dBQ0FES0FJRU5nSUVRUUFoQWdzZ0FDQUNOZ0lBSUFOQkVHb2tBQXRjQVFOL0lBRkJcXFxuREdvb0FnQWhBa0VBSVFNQ1FBSkFBa0FnQVNnQ0JBNENBQUVDQzBFQUlRUkJBRUhNck1BQUlBSWJJUU1NQVFzZ0FnMEFJQUVvQWdBaUFTXFxcbmdDQkNFRUlBRW9BZ0FoQXdzZ0FDQUVOZ0lFSUFBZ0F6WUNBQXRTQVFGL0l3QkJFR3NpQWlRQUFrQUNRQ0FBS0FJTVJRMEFJQUFoQVF3QlxcXG5DeUFDUVFocUlBQkJDR29vQWdBMkFnQWdBaUFBS1FJQU53TUFJQUVnQWhEZkNDRUJJQUFRL0F3TElBSkJFR29rQUNBQkMxSUJBWDhqQUVcXFxuRWdheUlHSkFBQ1FDQUJEUUJCbVA3QUFFRXlFSWNOQUFzZ0JrRVFhaUFCSUFNZ0JDQUZJQUlvQWhBUkRRQWdCa0VJYWlBR1FSQnFFUGNLXFxcbklBQWdCaWtEQ0RjREFDQUdRU0JxSkFBTFVRRUNmeU1BUVJCcklnVWtBQ0FGUVFocUlBTWdBU0FDRU00R0FrQWdCU2dDQ0NJR0RRQWdBU1xcXG5BQ1FRQWdBeUFFRU9RTEFBc2dCU2dDRENFQ0lBQWdCallDQUNBQUlBSTJBZ1FnQlVFUWFpUUFDMWdCQVg4akFFRVFheUlDSkFBZ0FrRUlcXFxuYWlBQkVMMEVJQUlnQWlnQ0NDQUNLQUlNUVM4UWxBWUNRQUpBSUFJb0FnQWlBUTBBSUFCQmdJREVBRFlDQUF3QkN5QUFJQUVnQWlnQ0JFXFxcbkV2RUpnRkN5QUNRUkJxSkFBTFZRRUJmeU1BUVJCcklnTWtBQUpBSUFBb0FnZ2dBa1lOQUFKQUlBRkIvd0Z4RFFBZ0EwRUlhaUFBSUFKQlxcXG5xSTNCQUJDaUJ5QURLQUlJSUFNb0Fnd1FrQWdOQVFzZ0FDQUJJQUlRZ1FRTElBTkJFR29rQUF0UUFRRi9Ba0FDUUNBQlFTUnFLQUlBSUFcXFxuRW9BaUFpQWtjTkFFRUFJUUVNQVFzZ0FTQUNRUUZxTmdJZ0lBRWdBa0VEZEdvaUFTZ0NCQ0VDSUFFb0FnQWhBUXNnQUNBQ05nSUVJQUFnXFxcbkFUWUNBQXRQQVFGL0l3QkJJR3NpQWlRQUlBSWdBVFlDQUNBQ0lBQTJBZ1FnQWlBQ1FSaHFOZ0lRSUFJZ0FrRUVhallDRENBQ0lBSTJBZ1xcXG5nZ0FFRWdhaUFDUVFocVFjQ2d3QUFRcHdJZ0FrRWdhaVFBQzA4QkFYOGpBRUVnYXlJQ0pBQWdBaUFCTmdJQUlBSWdBRFlDQkNBQ0lBSkJcXFxuR0dvMkFoQWdBaUFDUVFScU5nSU1JQUlnQWpZQ0NDQUFRU0JxSUFKQkNHcEIxS0RBQUJDbkFpQUNRU0JxSkFBTFZ3RUNmeU1BUVJCcklnXFxcbk1rQUNBRElBRW9BZ0FnQVVFSWFpSUVLQUlBUWYyandBQkJEUkR3QVNBQUlBTVErQXdnQUNBQ05nS2tBU0FBUWFBQmFpQUVLQUlBTmdJQVxcXG5JQUFnQVNrQ0FEY0NtQUVnQTBFUWFpUUFDMDBCQTM4akFFRVFheUlDSkFBZ0FrRUlhaUFCSUFFb0FnUWlBeUFCS0FJSVFRRnFJZ1FnQXlcXFxuQUVTUnNRcEFRZ0FpZ0NEQ0VCSUFBZ0FpZ0NDRFlDQUNBQUlBRTJBZ1FnQWtFUWFpUUFDMUlCQW44akFFRVFheUlDSkFBQ1FBSkFJQUVvXFxcbkFnZ2lBeUFCS0FJRVNRMEFJQUpCQkRZQ0FDQUFJQUVnQWhETUJ3d0JDeUFBUVFBNkFBQWdBQ0FCS0FJQUlBTnFMUUFBT2dBQkN5QUNRUlxcXG5CcUpBQUxWZ0VCZnlNQVFTQnJJZ0lrQUFKQUlBRU5BQ0FBUVFBMkFnQWdBa0VnYWlRQUR3c2dBa0VVYWtJQU53SUFJQUpCQVRZQ0RDQUNcXFxuUWJUbHdBQTJBZ2dnQWtHWTVjQUFOZ0lRSUFKQkNHcEJsT2JBQUJDWUNBQUxWZ0VCZnlNQVFTQnJJZ0lrQUFKQUlBRU5BQ0FBUVFBMkFnXFxcbkFnQWtFZ2FpUUFEd3NnQWtFVWFrSUFOd0lBSUFKQkFUWUNEQ0FDUWRENXpRQTJBZ2dnQWtIWStjMEFOZ0lRSUFKQkNHcEJyUHJOQUJDWVxcXG5DQUFMU2dFRGYwRUFJUU1DUUNBQ1JRMEFBa0FEUUNBQUxRQUFJZ1FnQVMwQUFDSUZSdzBCSUFCQkFXb2hBQ0FCUVFGcUlRRWdBa0YvYWlcXFxuSUNSUTBDREFBTEN5QUVJQVZySVFNTElBTUxUUUVCZnlNQVFTQnJJZ0VrQUNBQlFRaHFJQUFRcmdZZ0FVRVFhaUFCS0FJSUlBRW9BZ3dnXFxcbkFCQ0RCaUFCS0FJUUlBRW9BaGdRQUJEOERTRUFJQUZCRUdvUStnd2dBVUVnYWlRQUlBQUxUQUVDZnlNQVFSQnJJZ0lrQUNBQ0lBRVErUVxcXG4wMkFnd2dBa0VNYWtFQUVJWU5JUUVnQWtFTWFrRUJFSVlOSVFNZ0FrRU1haENNQ3lBQUlBTTJBZ1FnQUNBQk5nSUFJQUpCRUdva0FBdE5cXFxuQVFGL0l3QkJJR3NpQWlRQUlBSkJDR29nQUNnQ0FCQU9JQUpCRUdvZ0FpZ0NDQ0FDS0FJTUVQZ0dJQUlvQWhBZ0FpZ0NHQ0FCRUp3TklRXFxcbkFnQWtFUWFoRDZEQ0FDUVNCcUpBQWdBQXRaQVFGL0l3QkJFR3NpQWlRQUFrQUNRQ0FBS0FJQURRQWdBVUhRNDhBQVFSQVEvd29oQUF3QlxcXG5DeUFDSUFBMkFnd2dBVUd3NDhBQVFRaEJ1T1BBQUVFR0lBSkJER3BCd09QQUFCQ1RBeUVBQ3lBQ1FSQnFKQUFnQUF0S0FBSkFJQU5GRFFcXFxuQUNRQUpBSUFNZ0Fra05BQ0FESUFKSERRRU1BZ3NnQVNBRGFpd0FBRUcvZjBvTkFRc2dBU0FDUVFBZ0F5QUVFT1FMQUFzZ0FDQUROZ0lFXFxcbklBQWdBVFlDQUF0TkFRSi9Jd0JCRUdzaUJDUUFRUUFoQlFKQUlBRWdBMGtOQUNBRVFRaHFJQUVnQTJzZ0FDQUJRZGoyd0FBUWhRa2dBaVxcXG5BRElBUW9BZ2dnQkNnQ0RCQ2lDaUVGQ3lBRVFSQnFKQUFnQlF0TUFRSi9Jd0JCRUdzaUF5UUFJQUFnQWlBQmEwRUNkaENuQ2lBQUtBSUlcXFxuSVFRZ0F5QUFLQUlBTmdJSUlBTWdCRFlDQkNBRElBQkJDR28yQWdBZ0FTQUNJQU1RaVFZZ0EwRVFhaVFBQzB3QkFuOGpBRUVRYXlJREpBXFxcbkFnQUNBQ0lBRnJRUU4yRUtnS0lBQW9BZ2doQkNBRElBQW9BZ0EyQWdnZ0F5QUVOZ0lFSUFNZ0FFRUlhallDQUNBQklBSWdBeERmQkNBRFxcXG5RUkJxSkFBTFNRRUJmd0pBQWtBZ0FVVU5BQUpBSUFFZ0Ewa05BRUVBSVFRZ0FTQURSZzBCREFJTFFRQWhCQ0FDSUFGcUxBQUFRVUJJRFFcXFxuRUxJQUloQkFzZ0FDQUJOZ0lFSUFBZ0JEWUNBQXRLQVFGL0l3QkJJR3NpQWlRQUlBSWdBVFlDRENBQ0lBQTJBZ2dnQWtFUWFpQUNRUWhxXFxcbkVKd0ZJQUlvQWhBZ0FpZ0NHQkFBRVB3TklRRWdBa0VRYWhEakRDQUNRU0JxSkFBZ0FRdEpBUUYvSXdCQnNBRnJJZ0VrQUNBQlFRUnFRUVxcXG5ScUlBQkJxQUVRcEEwYVFiQUJRUWdRcFFjaUFFRUFOZ0lBSUFCQkJHb2dBVUVFYWtHc0FSQ2tEUm9nQVVHd0FXb2tBQ0FBQzBzQkFYOGpcXFxuQUVFZ2F5SUNKQUFnQWtFUWFpQUJLQUlBRUFvZ0FpQUNLQUlRSUFJckF4Z1FsUXNnQWlnQ0FDRUJJQUFnQWlzRENEa0RDQ0FBSUFGQkFFXFxcbmV0TndNQUlBSkJJR29rQUF0TUFRSi9Jd0JCRUdzaUJDUUFRUUFoQlFKQUlBRWdBMGtOQUNBRVFRaHFRUUFnQXlBQUlBRkJpTFRBQUJDVVxcXG5CeUFDSUFNZ0JDZ0NDQ0FFS0FJTUVLc0tJUVVMSUFSQkVHb2tBQ0FGQzAwQkFYOGpBRUVRYXlJQ0pBQUNRQUpBSUFGQi93QkxEUUFnQUNcXFxuQUJFSWNJREFFTElBSkJBRFlDRENBQ0lBRWdBa0VNYWhETUFpQUFJQUlvQWdBZ0FpZ0NCQkNCREFzZ0FrRVFhaVFBQzB3QkFuOGpBRUVRXFxcbmF5SUVKQUJCQUNFRkFrQWdBU0FEU1EwQUlBUkJDR3BCQUNBRElBQWdBVUhBNzhBQUVKZ0hJQUlnQXlBRUtBSUlJQVFvQWd3UW1Bb2hCUVxcXG5zZ0JFRVFhaVFBSUFVTFRBRUNmeU1BUVJCcklnUWtBRUVBSVFVQ1FDQUJJQU5KRFFBZ0JFRUlha0VBSUFNZ0FDQUJRY2oyd0FBUW1RY2dcXFxuQWlBRElBUW9BZ2dnQkNnQ0RCQ2lDaUVGQ3lBRVFSQnFKQUFnQlF0T0FRTi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FSREVEVUVBRU5NRUlBXFxcbklvQWd3aEF5QUJJQUlvQWdnaUJCQ1RCaUFBSUFFUXhBMDJBZ2dnQUNBRE5nSUVJQUFnQkRZQ0FDQUNRUkJxSkFBTFNRRUJmd0pBQWtBZ1xcXG5BVVVOQUFKQUlBRWdBMGtOQUVFQUlRUWdBU0FEUmcwQkRBSUxRUUFoQkNBQ0lBRnFMQUFBUVVCSURRRUxJQUloQkFzZ0FDQUJOZ0lFSUFcXFxuQWdCRFlDQUF0SkFRRi9Ba0FDUUNBQlJRMEFBa0FnQVNBRFNRMEFRUUFoQkNBQklBTkdEUUVNQWd0QkFDRUVJQUlnQVdvc0FBQkJRRWdOXFxcbkFRc2dBaUVFQ3lBQUlBRTJBZ1FnQUNBRU5nSUFDMFVCQW45QkFTRUNBa0FnQVVGUWFpSURRUXBKRFFCQmZ5QUJRU0J5SWdGQnFYOXFJZ1xcXG5JZ0FpQUJRWjkvYWtrYklnTkJFRWtoQWdzZ0FDQUROZ0lFSUFBZ0FqWUNBQXRRQVFGL0l3QkJFR3NpQWlRQUlBSkJDR29nQVNBQktBSUFcXFxuS0FJRUVRVUFJQUlnQWlnQ0NDQUNLQUlNS0FJWUVRVUFJQUlvQWdRaEFTQUFJQUlvQWdBMkFnQWdBQ0FCTmdJRUlBSkJFR29rQUF0UUFRXFxcbkYvSXdCQkVHc2lBaVFBSUFKQkNHb2dBU0FCS0FJQUtBSUVFUVVBSUFJZ0FpZ0NDQ0FDS0FJTUtBSVlFUVVBSUFJb0FnUWhBU0FBSUFJb1xcXG5BZ0EyQWdBZ0FDQUJOZ0lFSUFKQkVHb2tBQXRLQVFOL0FrQWdBU2dDQ0NJQ0lBRW9BZ1FpQTA4TkFDQUJJQUpCQVdvMkFnZ2dBU2dDQUNcXFxuQUNhaTBBQUNFRUN5QUFRUUE2QUFBZ0FFRUNhaUFFT2dBQUlBQWdBaUFEU1RvQUFRdEpBUUovSXdCQkVHc2lBeVFBSUFBZ0FpQUJheENRXFxcbkNpQUFLQUlJSVFRZ0F5QUFLQUlBTmdJSUlBTWdCRFlDQkNBRElBQkJDR28yQWdBZ0FTQUNJQU1ReGdJZ0EwRVFhaVFBQzBjQkFuOGpBRVxcXG5FUWF5SUVKQUFnQVNBQ0VPb0VJUVVnQkVFSWFpQUNRUWhxS0FJQU5nSUFJQVFnQWlrQ0FEY0RBQ0FBSUFGQkVHb2dCU0FFSUFNUTNBSWdcXFxuQkVFUWFpUUFDMHdDQVg4QmZpTUFRU0JySWdJa0FDQUNRUkJxRUFtdEVMWUlJQUpDQUVFQUlBSXBBeEFnQWlnQ0dCQzZBeUFDS1FNQUlRXFxcbk1nQUNBQ0tBSUlOZ0lJSUFBZ0F6Y0RBQ0FDUVNCcUpBQUxTZ0VDZnlNQVFSQnJJZ01rQUNBRFFRaHFJQUpCQUJEU0JDQURLQUlNSVFRZ1xcXG5BeWdDQ0NBQklBSVFwQTBoQVNBQUlBSTJBZ2dnQUNBRU5nSUVJQUFnQVRZQ0FDQURRUkJxSkFBTFNnRURmd0pBSUFFb0FnZ2lBaUFCS0FcXFxuSUVJZ05QRFFBZ0FTQUNRUUZxTmdJSUlBRW9BZ0FnQW1vdEFBQWhCQXNnQUVFQU9nQUFJQUJCQW1vZ0JEb0FBQ0FBSUFJZ0EwazZBQUVMXFxcblNRRUNmeU1BUVJCcklnTWtBQ0FCS0FJQUlBSW9BZ0FRSGlFQ0lBTkJDR29ReHdrZ0F5Z0NEQ0VCSUFBZ0F5Z0NDQ0lFTmdJQUlBQWdBU1xcXG5BQ0lBUWJOZ0lFSUFOQkVHb2tBQXRKQVFKL0l3QkJFR3NpQXlRQUlBRW9BZ0FnQWlnQ0FCQWpJUUlnQTBFSWFoREhDU0FES0FJTUlRRWdcXFxuQUNBREtBSUlJZ1EyQWdBZ0FDQUJJQUlnQkJzMkFnUWdBMEVRYWlRQUMwd0JBbjhqQUVFUWF5SUNKQUFnQWlBQktRSUFOd01JUVlDS3dRXFxcbkJCQWlBQ1FRaHFFSlVHSVFFZ0FpZ0NDQ0VESUFBZ0FpZ0NERFlDQkNBQUlBTkJBQ0FCR3pZQ0FDQUNRUkJxSkFBTFRnRUJmd0pBSUFFUVxcXG5rZ3dpQWtIL0FYRU5BQ0FBRUlzRUlBQkJBQ0FCRVBVRElBQkJ4QUJxSUFCQkZHb29BZ0FnQUM4QkFDQUFLQUlJUVlDQXhBQkdHellDQUFcXFxuOExJQUFnQWlBQkVQVURDMDBCQVg4Q1FDQUJFSklNSWdKQi93RnhEUUFnQUJDTUJDQUFRUUFnQVJEMUF5QUFRVEJxSUFCQkZHb29BZ0FnXFxcbkFDOEJBQ0FBS0FJSVFZQ0F4QUJHR3pZQ0FBOExJQUFnQWlBQkVQVURDMG9CQW44akFFRVFheUlFSkFCQkFDRUZBa0FnQVNBRFNRMEFJQVxcXG5SQkNHb2dBeUFBSUFGQm1KakJBQkRkQ1NBQ0lBTWdCQ2dDQ0NBRUtBSU1FS1lLSVFVTElBUkJFR29rQUNBRkMwMEJBWDhqQUVFUWF5SUVcXFxuSkFBZ0JDQUJJQUV2QVFBUW5BUWdCQ0FDSUFNUThBWWdBRUdBZ01RQU5nSUlJQUJCRkdvZ0JFRUlhaWdDQURZQ0FDQUFJQVFwQXdBM0FnXFxcbndnQkVFUWFpUUFDMG9CQVg4Q1FDQUFLQUlBSWdBb0FnUWdBQ2dDQ0NJRGF5QUNUdzBBSUFBZ0F5QUNFTzBDSUFBb0FnZ2hBd3NnQUNnQ1xcXG5BQ0FEYWlBQklBSVFwQTBhSUFBZ0F5QUNhallDQ0VFQUMwd0FBa0FDUUNBQlFRbEpEUUFnQVNBQUVMNEJJUUVNQVFzZ0FCQXVJUUVMQWtcXFxuQWdBVVVOQUFKQVFlQ256d0FRa0E1RkRRQWdBUkRSRFJEVURBMEJDeUFCUVFBZ0FCQ2hEUm9MSUFFTFNnRUJmd0pBSUFBb0FnQWlBQ2dDXFxcbkJDQUFLQUlJSWdOcklBSlBEUUFnQUNBRElBSVE3Z0lnQUNnQ0NDRURDeUFBS0FJQUlBTnFJQUVnQWhDa0RSb2dBQ0FESUFKcU5nSUlRUVxcXG5BTFJBRUNmd0pBSUFBb0FnQWlBQ2dDQUNJRElBSnFJZ1FnQTBrZ0JFRVBTM0lpQkEwQUlBQWdBMnBCQkdvZ0FTQUNFS1FOR2lBQUlBQW9cXFxuQWdBZ0FtbzJBZ0FMSUFRTFFRQUNRQUpBSUFJZ0FVa05BQ0FDSUFSTkRRRWdBaUFFSUFVUWd3VUFDeUFCUVFBZ0JSQ0VCUUFMSUFBZ0FpXFxcbkFCYXpZQ0JDQUFJQU1nQVVFTWJHbzJBZ0FMWVFFQmZ5TUFRVEJySWdFa0FDQUJRUzgyQWl3Z0FVS2lnSUNBOEFRM0FpUWdBVUxjZ0lDQVxcXG5vQWMzQWh3Z0FVS3FnSUNBd0E4M0FoUWdBVUsrZ0lDQW9BYzNBZ3dnQVVLL2dJQ0F3QWMzQWdRZ0FDQUJRUVJxRVBjRElBRkJNR29rQUFcXFxudElBUUYvSXdCQkVHc2lBU1FBQWtBZ0FDZ0NCRVVOQUNBQklBQWdBQ2dDRUNBQVFSUnFLQUlBRUlZRUlBRW9BZ0FnQVNnQ0JDQUJRUWhxXFxcbktBSUFFS1FMQ3lBQlFSQnFKQUFMUXdFQmZ5TUFRUkJySWdJa0FBSkFBa0FnQVVIL0FYRU5BRUVBSVFBTUFRc2dBa0VJYWlBQVFRUnFJQVxcXG5BUWl3VWdBa0VJYWhDOUJ5RUFDeUFDUVJCcUpBQWdBQXRTQVFGL1FRQWhBd0pBSUFFZ0FrR3Nxc0FBUVFjUXBnb05BRUVCSVFNZ0FTQUNcXFxuUWJPcXdBQkJBeENtQ2cwQVFRSkJBeUFCSUFKQnRxckFBRUVERUtZS0d5RURDeUFBUVFBNkFBQWdBQ0FET2dBQkMwVUJBWDhnQUNBQUtBXFxcbklJSUFBb0FnQWlCQ0FDYWkwQUFFRUJjV3MyQWdnZ0FDQUNJQUVRd1FnZ0JDQUNRUUowYTBGOGFpQUROZ0lBSUFBZ0FDZ0NERUVCYWpZQ1xcXG5EQXRJQVFGL0l3QkJJR3NpQkNRQUlBUWdBaUFERUdJQ1FBSkFJQVFvQWdBTkFDQUFJQVFwQWdRM0FnQU1BUXNnQkVFUE5nSVFJQUFnQVNcXFxuQUVRUkJxRU0wSEN5QUVRU0JxSkFBTFJ3RUNmeU1BUVJCcklnTWtBQ0FEUVFocUlnUkJBRFlDQUNBRFFnRTNBd0FnQXlBQklBSVE1Z2dnXFxcbkFFRUlhaUFFS0FJQU5nSUFJQUFnQXlrREFEY0NBQ0FEUVJCcUpBQUxSd0VCZnlNQVFSQnJJZ01rQUNBRElBRXBBZ0EzQXdnZ0FpQURRUVxcXG5ocUVNb0pJUUVnQXlnQ0NDRUNJQUFnQXlnQ0REWUNCQ0FBSUFKQkFDQUJHellDQUNBRFFSQnFKQUFMU2dFQmZ5TUFRUkJySWdRa0FDQUVcXFxuUVFocUlBRW9BaFFnQVVFY2FpZ0NBQ0FDSUFOQmpKSEJBQkNtQmlBRUtBSU1JUUVnQUNBRUtBSUlOZ0lBSUFBZ0FUWUNCQ0FFUVJCcUpBXFxcbkFMUVFBQ1FBSkFJQUlnQVVrTkFDQUNJQVJORFFFZ0FpQUVJQVVRZ3dVQUN5QUJJQUlnQlJDRUJRQUxJQUFnQWlBQmF6WUNCQ0FBSUFNZ1xcXG5BVUVEZEdvMkFnQUxRUUFDUUFKQUlBSWdBVWtOQUNBQ0lBUk5EUUVnQWlBRUlBVVFnd1VBQ3lBQklBSWdCUkNFQlFBTElBQWdBaUFCYXpcXFxuWUNCQ0FBSUFNZ0FVRURkR28yQWdBTFNnRUJmd0pBSUFBb0FnZ2lBeUFBS0FJRVJ3MEFJQUFnQXhDT0NTQUFLQUlJSVFNTElBQW9BZ0FnXFxcbkEwRURkR29pQXlBQ05nSUVJQU1nQVRvQUFDQUFJQUFvQWdoQkFXbzJBZ2dMU3dFQmZ5TUFRUkJySWdNa0FDQURJQUVnQVM4QkFCQ2RCQ1xcXG5BRElBSVF1QWNnQUVHQWdNUUFOZ0lFSUFCQkVHb2dBMEVJYWlnQ0FEWUNBQ0FBSUFNcEF3QTNBZ2dnQTBFUWFpUUFDMVFCQVg4Q1FBSkFcXFxuSUFFb0FnZ2lBZzBBSUFBZ0FTZ0NBRFlDQUNBQktBSUVJZ0VOQVNBQVFZR0F4QUEyQWdnUEN5QUFJQUkyQWdnZ0FDQUJLUUlBTndJQUR3XFxcbnNnQUVHQWdNUUFOZ0lJSUFBZ0FUWUNCQXRJQVFGL0l3QkJFR3NpQWlRQUlBSkJDR29nQVJEYUJ5QUNJQUlvQWdnZ0FpZ0NEQ2dDR0JFRlxcXG5BQ0FDS0FJRUlRRWdBQ0FDS0FJQU5nSUFJQUFnQVRZQ0JDQUNRUkJxSkFBTFNBRUJmeU1BUVJCcklnSWtBQ0FDUVFocUlBRVEyZ2NnQWlcXFxuQUNLQUlJSUFJb0Fnd29BaGdSQlFBZ0FpZ0NCQ0VCSUFBZ0FpZ0NBRFlDQUNBQUlBRTJBZ1FnQWtFUWFpUUFDMGdCQVg4akFFRVFheUlDXFxcbkpBQWdBa0VJYWlBQkVOb0hJQUlnQWlnQ0NDQUNLQUlNS0FJWUVRVUFJQUlvQWdRaEFTQUFJQUlvQWdBMkFnQWdBQ0FCTmdJRUlBSkJFR1xcXG5va0FBdElBUUYvSXdCQkVHc2lBaVFBSUFKQkNHb2dBUkRhQnlBQ0lBSW9BZ2dnQWlnQ0RDZ0NHQkVGQUNBQ0tBSUVJUUVnQUNBQ0tBSUFcXFxuTmdJQUlBQWdBVFlDQkNBQ1FSQnFKQUFMUWdFQmZ5TUFRUkJySWdNa0FDQURJQUkyQWd3Z0FTQURRUXhxRU53RElBQWdBa0Y4YWlnQ0FEXFxcbllDQUNBQUlBRW9BZ0FnQW10QkFuVTJBZ1FnQTBFUWFpUUFDMFVCQVg4akFFRWdheUlESkFBZ0F5QUNOZ0lZSUFNZ0FqWUNGQ0FESUFFMlxcXG5BaEFnQTBFSWFpQURRUkJxRVBZS0lBQWdBeWdDQ0NBREtBSU1FSlFMSUFOQklHb2tBQXRIQVFOL0l3QkJFR3NpQVNRQUFrQWdBQ2dDUkNcXFxuSUNRUWxKRFFBZ0FDZ0NDQ0VESUFFZ0FDZ0NCRFlDQ0NBQklBSTJBZ1FnQVNBRE5nSUFJQUVRdHdvTElBRkJFR29rQUF0TkFRRi9Jd0JCXFxcbkVHc2lBaVFBQWtBZ0FTZ0NBQTBBSUFBZ0FTa0NCRGNEQUNBQ1FSQnFKQUFQQ3lBQ0lBRXBBZ1EzQXdoQnVOekFBRUVySUFKQkNHcEI1TlxcXG56QUFFSEkzY0FBRU1JRUFBdERBUUovSXdCQkVHc2lBU1FBUVFBaEFnSkFJQUFRd3d4RkRRQWdBU0FBS0FJQUVCWTJBZ3dnQVVFTWFoREJcXFxuRENFQ0lBRkJER29RbGdzTElBRkJFR29rQUNBQ0MwUUJBMzhqQUVFUWF5SUNKQUFnQVNnQ0FCQWdJUUVnQWtFSWFoREhDU0FDS0FJTUlRXFxcbk1nQUNBQ0tBSUlJZ1EyQWdBZ0FDQURJQUVnQkJzMkFnUWdBa0VRYWlRQUMwa0JBWDhqQUVFUWF5SUNKQUFDUUNBQUxRQUFEUUFnQUNnQ1xcXG5CQ0VBSUFKQkVHb2tBQ0FBRHdzZ0FpQUFMUUFCT2dBUFFmeUN3UUJCS3lBQ1FROXFRZXlDd1FBZ0FSRENCQUFMUlFFQ2Z5TUFRUkJySWdcXFxuSWtBQ0FDUVFocUlnTkJBRFlDQUNBQ1FnRTNBd0FnQWlBQkVQNERJQUJCQ0dvZ0F5Z0NBRFlDQUNBQUlBSXBBd0EzQWdBZ0FrRVFhaVFBXFxcbkMwZ0JBWDhqQUVFUWF5SURKQUFnQTBFSWFpQUJLQUlVSUFGQkhHb29BZ0FnQWtHc2tjRUFFTEVHSUFNb0Fnd2hBU0FBSUFNb0FnZzJBZ1xcXG5BZ0FDQUJOZ0lFSUFOQkVHb2tBQXRJQVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQWlBQktBSVVJQUZCSEdvb0FnQkJuSkhCQUJENUJTQURcXFxuS0FJTUlRRWdBQ0FES0FJSU5nSUFJQUFnQVRZQ0JDQURRUkJxSkFBTFR3RUNmMEVBTFFEeHBrOGFJQUVvQWdRaEFpQUJLQUlBSVFNQ1FFXFxcbkVJUVFRUTl3c2lBUTBBUVFSQkNCQ2FEUUFMSUFFZ0FqWUNCQ0FCSUFNMkFnQWdBRUdNNzgwQU5nSUVJQUFnQVRZQ0FBdERBUUYvSXdCQlxcXG5FR3NpQXlRQUlBTWdBU0FDRUdJZ0F5Z0NCQ0VDSUFNb0FnQWhBU0FBSUFOQkNHb29BZ0EyQWdRZ0FFRUFJQUlnQVJzMkFnQWdBMEVRYWlcXFxuUUFDMGdCQVg4akFFRWdheUlESkFBZ0EwRU1ha0lBTndJQUlBTkJBVFlDQkNBRFFmei96UUEyQWdnZ0F5QUJOZ0ljSUFNZ0FEWUNHQ0FEXFxcbklBTkJHR28yQWdBZ0F5QUNFSmdJQUFzL0FRRitBa0FDUUNBQktRTUFJZ0pRUlEwQVFRQWhBUXdCQ3lBQklBSkNmM3dnQW9NM0F3QkJBU1xcXG5FQkN5QUFJQUUyQWdBZ0FDQUNlcWRCQTNZMkFnUUxQZ0FDUUFKQUlBSWdBVWtOQUNBQ0lBUk5EUUVnQWlBRUlBVVFnd1VBQ3lBQklBSWdcXFxuQlJDRUJRQUxJQUFnQWlBQmF6WUNCQ0FBSUFNZ0FXbzJBZ0FMUkFFQ2Z5TUFRU0JySWdJa0FDQUNRUU02QUFnZ0FpQUJPUU1RSUFKQkNHXFxcbm9nQWtFWWFrR29nY0FBRUpnRElRTWdBRUVCTmdJQUlBQWdBellDQkNBQ1FTQnFKQUFMUkFFQ2Z5TUFRU0JySWdJa0FDQUNRUU02QUFnZ1xcXG5BaUFCT1FNUUlBSkJDR29nQWtFWWFrRzRnY0FBRUpnRElRTWdBRUVCTmdJQUlBQWdBellDQkNBQ1FTQnFKQUFMU0FFQmZ5TUFRUkJySWdcXFxuQWtBQUpBUVFBdEFQS21UMEVEUmcwQUlBQkJBVG9BQ3lBQUlBQkJDMm8yQWd4QjhxYlBBRUVBSUFCQkRHcEJwSVhBQUJEOUFnc2dBRUVRXFxcbmFpUUFDMGNCQVg4akFFRWdheUlDSkFBZ0FrRVVha0lBTndJQUlBSkJBVFlDRENBQ1FkeWJ3QUEyQWdnZ0FrSGdnc0FBTmdJUUlBRWdBa1xcXG5FSWFoQ3RCU0VCSUFKQklHb2tBQ0FCQ3o0QkFuOGdBU0FCS0FJRUlnTWdBU2dDQUNJRUlBSnFJZ0pCQVdvZ0FpQUVTU0FDSUFOUGNpSURcXFxuR3pZQ0FDQUFJQUkyQWdRZ0FDQURRUUZ6TmdJQUMwVUJBWDhqQUVIQUFHc2lBaVFBSUFJZ0FDZ0NBQ0FBS0FJSUVLUUhJQUpCSUdvZ0FTXFxcbmdDQUNBQktBSUlFS1FISUFJZ0FrRWdhaENLQVNFQUlBSkJ3QUJxSkFBZ0FBdEZBUUYvSXdCQkVHc2lBeVFBSUFOQkNHb2dBaUFCS0FJQVxcXG5JZ0VvQWdBZ0FTZ0NDQkN4Q3lBREtBSU1JUUVnQUNBREtBSUlOZ0lBSUFBZ0FUWUNCQ0FEUVJCcUpBQUxRQUVDZnlNQVFkQUFheUlFSkFcXFxuQWdBU0FDRU5zRUlRVWdCRUVJYWlBQ1FjZ0FFS1FOR2lBQUlBRkJFR29nQlNBRVFRaHFJQU1ROXdJZ0JFSFFBR29rQUF0QUFRSi9Jd0JCXFxcbjBBQnJJZ1FrQUNBQklBSVEyd1FoQlNBRVFRaHFJQUpCeUFBUXBBMGFJQUFnQVVFUWFpQUZJQVJCQ0dvZ0F4Q3JBeUFFUWRBQWFpUUFDMFxcXG5JQkFYOENRQ0FCS0FJQUlnRWdBRUVJYWlnQ0FDSUNUdzBBSUFBb0FnQkJGR29nQUNnQ0JDQUJRUWQwYWtFVWFoQ0NDdzhMSUFFZ0FrR2NcXFxubmNBQUVJRUZBQXREQVFGL0FrQWdBU2dDQUNJQklBQkJDR29vQWdBaUFrOE5BQ0FBS0FJQVFSUnFJQUFvQWdRZ0FVSFlBR3hxUVJScUVJXFxcbklMRHdzZ0FTQUNRWnlkd0FBUWdRVUFDMElBQWtBZ0FTZ0NBQ0FDUVFKMGEwRjhhaWdDQUNJQ0lBQW9BZ0FpQVNnQ0JDSUFTUTBBSUFJZ1xcXG5BRUhjbmNBQUVJRUZBQXNnQVNnQ0FDQUNRUnhzYWpVQ0dBdERBQUpBSUFFb0FnQWdBa0VDZEd0QmZHb29BZ0FpQWlBQUtBSUFJZ0VvQWdcXFxuUWlBRWtOQUNBQ0lBQkIzSjNBQUJDQkJRQUxJQUVvQWdBZ0FrSFlBR3hxTlFKVUMwSUFBa0FnQVNnQ0FDQUNRUUowYTBGOGFpZ0NBQ0lDXFxcbklBQW9BZ0FpQVNnQ0JDSUFTUTBBSUFJZ0FFSGNuY0FBRUlFRkFBc2dBU2dDQUNBQ1FRZDBhalVDZUFzK0FBSkFBa0FnQWlBQlNRMEFJQVxcXG5JZ0JFME5BU0FDSUFRZ0JSQ0RCUUFMSUFFZ0FpQUZFSVFGQUFzZ0FDQUNJQUZyTmdJRUlBQWdBeUFCYWpZQ0FBczdBQUpBQWtBZ0FRMEFcXFxuUVFBaEFnd0JDMEVBUVg4Z0FrRi9hbWQySUFKQkFra2JRUUZxSWdGQkFFY2hBZ3NnQUNBQk5nSUVJQUFnQWpZQ0FBdEtBUUovUVFOQkFCXFxcbkNHQWlFQVFRQkJBQ2dDZ0tkUElnRWdBQ0FCR3pZQ2dLZFBBa0FnQVEwQUlBQVBDeUFBS0FJQVFjQUFJQUFvQWdSQkJuUVF0UXNnQUVFUVxcXG5RUVFRc2d3Z0FRdEJBUUovSXdCQkVHc2lBU1FBSUFFZ0FCRGpDQUpBSUFFb0FnUWlBRVVOQUNBQlFRaHFLQUlBSWdKRkRRQWdBU2dDQUNcXFxuQUNJQUFRc2d3TElBRkJFR29rQUFzK0FBSkFBa0FnQWlBQlNRMEFJQUlnQkUwTkFTQUNJQVFnQlJDREJRQUxJQUVnQWlBRkVJUUZBQXNnXFxcbkFDQUNJQUZyTmdJRUlBQWdBeUFCYWpZQ0FBcytBQUpBQWtBZ0FpQUJTUTBBSUFJZ0JFME5BU0FDSUFRZ0JSQ0RCUUFMSUFFZ0FpQUZFSVxcXG5RRkFBc2dBQ0FDSUFGck5nSUVJQUFnQXlBQmFqWUNBQXMrQUFKQUFrQWdBaUFCU1EwQUlBSWdCRTBOQVNBQ0lBUWdCUkNEQlFBTElBRWdcXFxuQWlBRkVJUUZBQXNnQUNBQ0lBRnJOZ0lFSUFBZ0F5QUJhallDQUFzK0FBSkFBa0FnQWlBQlNRMEFJQUlnQkUwTkFTQUNJQVFnQlJDREJRXFxcbkFMSUFFZ0FpQUZFSVFGQUFzZ0FDQUNJQUZyTmdJRUlBQWdBeUFCYWpZQ0FBdE5BUUYvSXdCQkVHc2lBaVFBSUFJZ0FFRU1hallDRENBQlxcXG5RZHovelFCQkRVSEEvODBBUVFVZ0FFSHMvODBBUWNYL3pRQkJCU0FDUVF4cVFjei96UUFRL3dJaEFDQUNRUkJxSkFBZ0FBdEFBUUYvSXdcXFxuQkJJR3NpQXlRQUlBTWdBallDR0NBRElBSTJBaFFnQXlBQk5nSVFJQU5CQ0dvZ0EwRVFhaER6Q2lBQUlBTXBBd2czQXdBZ0EwRWdhaVFBXFxcbkMwSUFBa0FnQWlBRFNRMEFJQUFnQXpZQ0JDQUFJQUUyQWdBZ0FFRU1haUFDSUFOck5nSUFJQUFnQVNBRGFqWUNDQThMUWZDTHdBQkJJMFxcXG5Hd2tNQUFFSU1IQUF0Q0FRRi9Jd0JCRUdzaUF5UUFBa0FDUUNBQkRRQWdBRUVFT2dBQUlBQWdBallDQkF3QkN5QURRUWhxSUFJUSt3UWdcXFxuQUNBREtRTUlOd0lBQ3lBRFFSQnFKQUFMU3dBQ1FBSkFBa0FnQVNBQ1FaV3N3QUJCQnhDbUNnMEFJQUVnQWtHY3JNQUFRUWNRcGdvTkFTXFxcbkFBUVFJNkFBRU1BZ3NnQUVFQU9nQUJEQUVMSUFCQkFUb0FBUXNnQUVFQU9nQUFDMElCQVg4akFFRVFheUlFSkFBZ0JFRUlhaUFDSUFFb1xcXG5BZ0FnQVNnQ0NDQURFUE1GSUFRb0Fnd2hBU0FBSUFRb0FnZzJBZ0FnQUNBQk5nSUVJQVJCRUdva0FBdENBUUYvSXdCQkVHc2lCQ1FBSUFcXFxuUkJDR29nQWlBQktBSUFJQUVvQWdnZ0F4RDVCU0FFS0FJTUlRRWdBQ0FFS0FJSU5nSUFJQUFnQVRZQ0JDQUVRUkJxSkFBTFFnRUJmeU1BXFxcblFSQnJJZ1FrQUNBRVFRaHFJQUlnQVNnQ0FDQUJLQUlJSUFNUSt3VWdCQ2dDRENFQklBQWdCQ2dDQ0RZQ0FDQUFJQUUyQWdRZ0JFRVFhaVxcXG5RQUMwVUJBWDhDUUFKQUlBSkZEUUJCQVNFRElBRXRBQUJCTDBZTkFRdEJBQ0VEQ3lBQUlBTTZBQjRnQUVFR09nQUlJQUFnQWpZQ0JDQUFcXFxuSUFFMkFnQWdBRUdBQkRzQkhBczZBUUovSXdCQkVHc2lBaVFBSUFKQkNHb2dBU0FBUVFBUWdRZ0NRQ0FDS0FJSUlnTkZEUUFnQWtFUWFpXFxcblFBSUFNUEN5QUJJQUFRbWcwQUN6OEJBWDhnQUNnQ0FFSElBR29oQVNBQUtBSUlJUUFDUUFOQUlBQkZEUUVnQVVGTWFoRGpEQ0FCRU5rS1xcXG5JQUJCZjJvaEFDQUJRWUFCYWlFQkRBQUxDd3MrQVFGL0FrQURRQ0FDUlEwQklBQXRBQUFoQXlBQUlBRXRBQUE2QUFBZ0FTQURPZ0FBSUFcXFxuSkJmMm9oQWlBQVFRRnFJUUFnQVVFQmFpRUJEQUFMQ3dzL0FRRi9JQUFvQWdCQnlBQnFJUUVnQUNnQ0NDRUFBa0FEUUNBQVJRMEJJQUZCXFxcblRHb1E0d3dnQVJEakRDQUFRWDlxSVFBZ0FVSFlBR29oQVF3QUN3c0xPZ0VCZnlNQVFTQnJJZ0lrQUNBQ0lBRTJBZ3dnQWlBQU5nSUlJQVxcXG5KQkVHb2dBa0VJYWhDY0JTQUNRUkJxRUVBaEFTQUNRU0JxSkFBZ0FRcy9BUUovSXdCQkVHc2lBU1FBQWtBZ0FDZ0NCQ0FBS0FJSUlnSk5cXFxuRFFBZ0FVRUlhaUFBSUFJUWpBTWdBU2dDQ0NBQktBSU1FTzBKQ3lBQlFSQnFKQUFMT2dFQ2Z5TUFRUkJySWdFa0FDQUJRUWhxUVFRZ0FFXFxcbkVBRUlnSUFrQWdBU2dDQ0NJQ1JRMEFJQUZCRUdva0FDQUNEd3RCQkNBQUVKb05BQXMvQVFKL0l3QkJFR3NpQVNRQUFrQWdBQ2dDQkNBQVxcXG5LQUlJSWdKTkRRQWdBVUVJYWlBQUlBSVF2Z01nQVNnQ0NDQUJLQUlNRU80SkN5QUJRUkJxSkFBTFB3RUNmeU1BUVJCcklnRWtBQUpBSUFcXFxuQW9BZ1FnQUNnQ0NDSUNUUTBBSUFGQkNHb2dBQ0FDRUtnRElBRW9BZ2dnQVNnQ0RCRHZDUXNnQVVFUWFpUUFDem9CQW44akFFRVFheUlCXFxcbkpBQWdBVUVJYWtFRUlBQkJBQkNKQ0FKQUlBRW9BZ2dpQWtVTkFDQUJRUkJxSkFBZ0FnOExRUVFnQUJDYURRQUxTQUVDZnlBQktBSUFJUVxcXG5JZ0FVRUFOZ0lBQWtBZ0FnMEFFSWNPQUFzZ0FTZ0NCQ0VEUVFnUXJnY2lBU0FETmdJRUlBRWdBallDQUNBQVFkRGd3QUEyQWdRZ0FDQUJcXFxuTmdJQUMwRUJBMzhDUUFKQUlBRW9BZ0FpQWlBQktBSUVJZ05IRFFBTUFRc2dBU0FEUVg5cUlnUTJBZ1FnQkMwQUFDRUJDeUFBSUFFNkFBXFxcbkVnQUNBQ0lBTkhPZ0FBQ3o0QkFYOGpBRUVRYXlJRkpBQWdCVUVJYWtFQUlBTWdBU0FDSUFRUW1RY2dCU2dDRENFRUlBQWdCU2dDQ0RZQ1xcXG5BQ0FBSUFRMkFnUWdCVUVRYWlRQUN6NEJBWDhqQUVFUWF5SUZKQUFnQlVFSWFrRUFJQU1nQVNBQ0lBUVFtZ2NnQlNnQ0RDRUVJQUFnQlNcXFxuZ0NDRFlDQUNBQUlBUTJBZ1FnQlVFUWFpUUFDejhCQVg4akFFRVFheUlGSkFBZ0JVRUlhaUFDSUFNZ0FVR0FBU0FFRUpvSElBVW9BZ3doXFxcbkJDQUFJQVVvQWdnMkFnQWdBQ0FFTmdJRUlBVkJFR29rQUFzL0FRSi9Jd0JCRUdzaUFTUUFBa0FnQUNnQ0JDQUFLQUlJSWdKTkRRQWdBVVxcXG5FSWFpQUFJQUlRNVFNZ0FTZ0NDQ0FCS0FJTUVQVUpDeUFCUVJCcUpBQUxQd0VDZnlNQVFSQnJJZ0VrQUFKQUlBQW9BZ1FnQUNnQ0NDSUNcXFxuVFEwQUlBRkJDR29nQUNBQ0VPWURJQUVvQWdnZ0FTZ0NEQkQxQ1FzZ0FVRVFhaVFBQ3p3QkFYOGpBRUVRYXlJQkpBQWdBVUVJYWlBQUlBXFxcbkFvQWlCQkFXb1FnQWNnQVNnQ0NDQUJLQUlNUVM4UTJBY2hBQ0FCUVJCcUpBQWdBRUVCY3d0RkFRRi9JQUlvQWdBaEF3SkFBMEFDUUNBQlxcXG5FSVVESWdKQmdJREVBRWNOQUVFQUlRRU1BZ3NnQXlnQ0FDQUNTdzBBQzBFQklRRUxJQUFnQWpZQ0JDQUFJQUUyQWdBTFFRRUJmd0pBSUFcXFxuQW9BZ2dpQWlBQUtBSUVSdzBBSUFBZ0FoQ1BDU0FBS0FJSUlRSUxJQUFvQWdBZ0FrRUNkR29nQVRZQ0FDQUFJQUFvQWdoQkFXbzJBZ2dMXFxcbk9nRUNmeU1BUVJCcklnRWtBQ0FCUVFocVFRUWdBRUVBRUpRSUFrQWdBU2dDQ0NJQ1JRMEFJQUZCRUdva0FDQUNEd3RCQkNBQUVKb05BQVxcXG50RkFRRi9RUUF0QVBHbVR4b0NRRUVNUVFRUTl3c2lCQTBBUVFSQkRCQ2FEUUFMSUFRZ0FUb0FDQ0FFSUFNMkFnUWdCQ0FDTmdJQUlBQWdcXFxuQkRZQ0JDQUFRUU0yQWdBTFBRRUJmeU1BUVJCcklnSWtBQ0FDSUFFb0FnQWdBU2dDQ0JEWEJTQUFRUWhxSUFKQkNHb29BZ0EyQWdBZ0FDXFxcbkFDS1FNQU53SUFJQUpCRUdva0FBcy9BUUovQWtBQ1FDQUJLQUlJSWdJTkFBd0JDeUFCSUFKQmYyb2lBellDQ0NBQktBSUFJQU5xTFFBQVxcXG5JUUVMSUFBZ0FUb0FBU0FBSUFKQkFFYzZBQUFMT3dFQ2Z5TUFRUkJySWdFa0FFRUFJUUlDUUNBQUxRQUFRUVJHRFFBZ0FTQUFLUUlBTndcXFxuTUlJQUZCQ0dvUWhnb2hBZ3NnQVVFUWFpUUFJQUlMUFFFQmZ5TUFRUkJySWdNa0FDQURRUWhxSUFFZ0FTZ0NDQ0FDRUlzR0lBTW9BZ3doXFxcbkFTQUFJQU1vQWdnMkFnQWdBQ0FCTmdJRUlBTkJFR29rQUFzOUFRRi9Jd0JCRUdzaUF5UUFJQU5CQ0dvZ0FTQUJLQUlJSUFJUWpRWWdBeVxcXG5nQ0RDRUJJQUFnQXlnQ0NEWUNBQ0FBSUFFMkFnUWdBMEVRYWlRQUN6MEJBWDhqQUVFUWF5SURKQUFnQTBFSWFpQUJJQUVvQWdnZ0FoQ01cXFxuQmlBREtBSU1JUUVnQUNBREtBSUlOZ0lBSUFBZ0FUWUNCQ0FEUVJCcUpBQUxQZ0VCZnlNQVFSQnJJZ0lrQUNBQ1FRaHFJQUZCQkdwQjFKXFxcblBBQUJDYURDQUNLQUlNSVFFZ0FDQUNLQUlJTmdJQUlBQWdBVFlDQkNBQ1FSQnFKQUFMUGdFQmZ5TUFRUkJySWdJa0FDQUNRUWhxSUFGQlxcXG5CR3BCa0pUQUFCQ2FEQ0FDS0FJTUlRRWdBQ0FDS0FJSU5nSUFJQUFnQVRZQ0JDQUNRUkJxSkFBTFBnRUJmeU1BUVJCcklnSWtBQ0FDUVFcXFxuaHFJQUZCQkdwQnpKVEFBQkNhRENBQ0tBSU1JUUVnQUNBQ0tBSUlOZ0lBSUFBZ0FUWUNCQ0FDUVJCcUpBQUxQZ0VCZnlNQVFSQnJJZ0lrXFxcbkFDQUNRUWhxSUFGQkJHcEJpSlhBQUJDYURDQUNLQUlNSVFFZ0FDQUNLQUlJTmdJQUlBQWdBVFlDQkNBQ1FSQnFKQUFMUGdFQmZ5TUFRUlxcXG5CcklnSWtBQ0FDUVFocUlBRkJCR3BCeEpYQUFCQ2FEQ0FDS0FJTUlRRWdBQ0FDS0FJSU5nSUFJQUFnQVRZQ0JDQUNRUkJxSkFBTFBnRUJcXFxuZjBFWVFRUVFwUWNpQWlBQk5nSUFJQUlnQUNrQ0FEY0NCQ0FDUVF4cUlBQkJDR29wQWdBM0FnQWdBa0VVYWlBQVFSQnFLQUlBTmdJQUlBXFxcbklMUHdFQmZ3SkFJQUVvQWdBaUFTQUFRUWhxS0FJQUlnSlBEUUFnQUNnQ0FDQUFLQUlFSUFGQkhHeHFFUE1ORUlJTER3c2dBU0FDUVp5ZFxcXG53QUFRZ1FVQUN6Z0JBMzhnQUNnQ0FDSUNJQUFnQVJDNUJDSURhaUFCcDBFWmRpSUVPZ0FBSUFJZ0FDZ0NCQ0FEUVhocWNXcEJDR29nQkRcXFxub0FBQ0FEQ3owQkFYOGpBRUVRYXlJREpBQWdBeUFCSUFJZ0FDZ0NCRUVCYWhENkF5QUFLQUlBSUFNb0FnaHJJQU1vQWdRZ0F5Z0NBQkN5XFxcbkRDQURRUkJxSkFBTFBRRUJmeU1BUVJCcklnTWtBQ0FEUVFocUlBRVE3QWNnQWlBREtBSUlJQU1vQWd3US9RZ2hBU0FBUVFJMkFnQWdBQ1xcXG5BQk5nSUVJQU5CRUdva0FBczlBUUYvSXdCQkVHc2lBeVFBSUFOQkNHb2dBUkRzQnlBQ0lBTW9BZ2dnQXlnQ0RCRDlDQ0VCSUFCQkFUc0JcXFxuQUNBQUlBRTJBZ1FnQTBFUWFpUUFDejBCQVg4akFFRVFheUlESkFBZ0EwRUlhaUFCRU93SElBSWdBeWdDQ0NBREtBSU1FUDBJSVFFZ0FFXFxcbkVCT2dBQUlBQWdBVFlDQkNBRFFSQnFKQUFMUFFFQmZ5TUFRUkJySWdNa0FDQURRUWhxSUFFUTdBY2dBaUFES0FJSUlBTW9BZ3dRL1FnaFxcXG5BU0FBUVFBMkFnQWdBQ0FCTmdJRUlBTkJFR29rQUFzL0FRSi9Ba0FDUUNBQktBSUFJZ0lnQVNnQ0JDSURSdzBBREFFTElBRWdBa0VCYWpcXFxuWUNBQ0FDTFFBQUlRRUxJQUFnQVRvQUFTQUFJQUlnQTBjNkFBQUxQQUVCZnlNQVFSQnJJZ01rQUNBRFFRQTJBZ3dnQXlBQ0lBTkJER29RXFxcbnp3SWdBQ0FCSUFNb0FnQWdBeWdDQkJETEJpRUNJQU5CRUdva0FDQUNDendCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFCS0FJQUVMQUhJQVxcXG5JdEFBa2hBU0FBSUFJdEFBaEJBWEU2QUFBZ0FDQUJPZ0FCSUFKQkVHb2tBQXM4QVFGL0l3QkJFR3NpQXlRQUlBTkJBRFlDRENBRElBSWdcXFxuQTBFTWFoQ2VBaUFBSUFFZ0F5Z0NBQ0FES0FJRUVNd0dJUUlnQTBFUWFpUUFJQUlMUEFFQmZ5TUFRUkJySWdNa0FDQURRUUEyQWd3Z0F5XFxcbkFDSUFOQkRHb1FuZ0lnQUNBQklBTW9BZ0FnQXlnQ0JCRENCaUVDSUFOQkVHb2tBQ0FDQ3owQkFYOGpBRUVRYXlJRUpBQWdCRUVJYWlBQlxcXG5RWUFCSUFJZ0F4Q3lCeUFFS0FJTUlRTWdBQ0FFS0FJSU5nSUFJQUFnQXpZQ0JDQUVRUkJxSkFBTE93RUJmeU1BUVJCcklnSWtBQ0FDUVFcXFxuaHFJQUZCQkdvZ0FSQ1pCQ0FDS0FJTUlRRWdBQ0FDS0FJSU5nSUFJQUFnQVRZQ0JDQUNRUkJxSkFBTFBBRUJmeU1BUVJCcklnTWtBQ0FEXFxcblFRaHFJQUVnQWtFQUlBTVEwd01nQXlnQ0RDRUNJQUFnQXlnQ0NEWUNBQ0FBSUFJMkFnUWdBMEVRYWlRQUN6a0JBWDlCQVNFQkFrQWdBRVxcXG5GUWFrRUtTUTBBUVFBaEFTQUFRYjkvYWlJQVFTVkxEUUJDdjRDQWdQQUhJQUN0aUtkQkFYRWhBUXNnQVFzL0FRSi9Ba0FDUUNBQktBSUFcXFxuSWdJZ0FTZ0NCQ0lEUncwQURBRUxJQUVnQWtFQmFqWUNBQ0FDTFFBQUlRRUxJQUFnQVRvQUFTQUFJQUlnQTBjNkFBQUxQQUVCZnlNQVFSXFxcbkJySWdNa0FDQURRUUEyQWd3Z0F5QUNJQU5CREdvUTB3SWdBQ0FCSUFNb0FnQWdBeWdDQkJEZUJpRUNJQU5CRUdva0FDQUNDendCQVg4alxcXG5BRUVRYXlJREpBQWdBMEVBTmdJTUlBTWdBaUFEUVF4cUVOTUNJQUFnQVNBREtBSUFJQU1vQWdRUXl3a2hBaUFEUVJCcUpBQWdBZ3MrQVFcXFxuRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FTQUJLQUlBS0FJRUVRVUFJQUlvQWd3aEFTQUFJQUlvQWdnMkFnQWdBQ0FCTmdJRUlBSkJFR29rXFxcbkFBczVBUUYvSUFKQkVIWkFBQ0VESUFCQkFEWUNDQ0FBUVFBZ0FrR0FnSHh4SUFOQmYwWWlBaHMyQWdRZ0FFRUFJQU5CRUhRZ0FoczJBZ1xcXG5BTFFnRUJmd0pBQWtBQ1FDQUNRWUNBeEFCR0RRQkJBU0VGSUFBZ0FpQUJLQUlRRVFZQURRRUxJQU1OQVVFQUlRVUxJQVVQQ3lBQUlBTWdcXFxuQkNBQktBSU1FUWtBQ3owQ0FYOEJmQ0FCS0FJY1FRRnhJUUlnQUNzREFDRURBa0FnQVNnQ0NFVU5BQ0FCSUFNZ0FpQUJRUXhxS0FJQUVGXFxcbjBQQ3lBQklBTWdBa0VBRUdrTE9BRUNmeU1BUVJCcklnRWtBQ0FCSUFBMkFnd2dBQ2dDQ0NJQ0lBQW9BZ3dnQW10QkRHNFE1Z2tnQVVFTVxcXG5haEMrQ1NBQlFSQnFKQUFMT1FFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FrRU1haERDRENFQklBQWdBaWdDRERZQ0JDQUFJQUZCQVhcXFxuTTJBZ0FnQWtFUWFpUUFDMElCQW44Q1FDQUFMUUFBUVFOSERRQWdBQ2dDQkNJQUtBSUFJZ0VnQUNnQ0JDSUNLQUlBRVFJQUlBRWdBaWdDXFxcbkNDQUNLQUlFRUtRTElBQkJERUVFRUxJTUN3czZBUUYvSUFBb0FnZ2hBU0FBS0FJQUlRQUNRQU5BSUFGRkRRRWdBQkRqRENBQVFReHFFT1xcXG5NTUlBRkJmMm9oQVNBQVFSeHFJUUFNQUFzTEN6OEJBWDhqQUVFUWF5SUNKQUFDUUNBQURRQWdBa0VRYWlRQUlBRVBDeUFDSUFFMkFneEJcXFxuazR6QUFFRXJJQUpCREdwQndJekFBRUdJcXNBQUVNSUVBQXM2QVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQVNBQ1FRQVFnUWdnQXlnQ0RDXFxcbkVDSUFBZ0F5Z0NDRFlDQUNBQUlBSTJBZ1FnQTBFUWFpUUFDem9CQVg4akFFRVFheUlESkFBZ0EwRUlhaUFCSUFKQkFSQ0JDQ0FES0FJTVxcXG5JUUlnQUNBREtBSUlOZ0lBSUFBZ0FqWUNCQ0FEUVJCcUpBQUxPUUVCZnlNQVFSQnJJZ1FrQUNBRUlBRWdBaUFERUkwSElBQkJDR29nQkVcXFxuRU1haWdDQURZQ0FDQUFJQVFwQWdRM0FnQWdCRUVRYWlRQUN6a0JBWDhqQUVFUWF5SUVKQUFnQkNBQklBSWdBeERWQmlBQVFRaHFJQVJCXFxcbkRHb29BZ0EyQWdBZ0FDQUVLUUlFTndJQUlBUkJFR29rQUFzN0FRRi9Jd0JCRUdzaUFpUUFJQUVRMFFzZ0FrRUlhaUFCRUxRSUlBSW9BZ1xcXG53aEFTQUFJQUlvQWdnMkFnQWdBQ0FCTmdJRUlBSkJFR29rQUFzN0FRRi9Jd0JCRUdzaUFpUUFJQUVRMFFzZ0FrRUlhaUFCRUxVSUlBSW9cXFxuQWd3aEFTQUFJQUlvQWdnMkFnQWdBQ0FCTmdJRUlBSkJFR29rQUF0Q0FRSi9Ba0FnQUMwQUFFRURSdzBBSUFBb0FnUWlBQ2dDQUNJQklBXFxcbkFvQWdRaUFpZ0NBQkVDQUNBQklBSW9BZ2dnQWlnQ0JCQ3lDeUFBUVF4QkJCQ3lEQXNMT2dFQmZ5TUFRUkJySWdNa0FDQURRUWhxSUFFZ1xcXG5Ba0VBRUlnSUlBTW9BZ3doQWlBQUlBTW9BZ2cyQWdBZ0FDQUNOZ0lFSUFOQkVHb2tBQXM2QVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQVNcXFxuQUNRUUVRaUFnZ0F5Z0NEQ0VDSUFBZ0F5Z0NDRFlDQUNBQUlBSTJBZ1FnQTBFUWFpUUFDenNCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFCXFxcbklBRW9BZ2dRcEFRZ0FpZ0NEQ0VCSUFBZ0FpZ0NDRFlDQUNBQUlBRTJBZ1FnQWtFUWFpUUFDem9CQVg4akFFRVFheUlESkFBZ0EwRUlhaVxcXG5BQklBSkJBQkNKQ0NBREtBSU1JUUlnQUNBREtBSUlOZ0lBSUFBZ0FqWUNCQ0FEUVJCcUpBQUxPZ0VCZnlBQUtBSUlJUUVnQUNnQ0FDRUFcXFxuQWtBRFFDQUJSUTBCSUFBUWdnMGdBRUVNYWhDQ0RTQUJRWDlxSVFFZ0FFRVlhaUVBREFBTEN3czVBUUYvSXdCQkVHc2lBaVFBSUFKQkNHXFxcbm9nQVJET0J5QUNMUUFKSVFFZ0FDQUNMUUFJUVFGeE9nQUFJQUFnQVRvQUFTQUNRUkJxSkFBTE9nRUJmeU1BUVJCcklnTWtBQ0FEUVFocVxcXG5JQUVnQWtFQUVJc0lJQU1vQWd3aEFpQUFJQU1vQWdnMkFnQWdBQ0FDTmdJRUlBTkJFR29rQUFzNkFRRi9Jd0JCRUdzaUF5UUFJQU5CQ0dcXFxub2dBU0FDUVFBUWpnZ2dBeWdDRENFQ0lBQWdBeWdDQ0RZQ0FDQUFJQUkyQWdRZ0EwRVFhaVFBQ3pvQkFYOGpBRUVRYXlJREpBQWdBMEVJXFxcbmFpQUJJQUpCQVJDT0NDQURLQUlNSVFJZ0FDQURLQUlJTmdJQUlBQWdBallDQkNBRFFSQnFKQUFMT2dFQmYwRUFJUUlDUUNBQUtBSUFJQVxcXG5Fb0FnQWlBVXNOQUNBQUtBSUVJUUlDUUNBQUxRQUlEUUFnQVNBQ1RROExJQUVnQWtraEFnc2dBZ3M0QUFKQUFrQWdBU0FDU3cwQUlBSWdcXFxuQTAwTkFTQUNJQU1nQkJDREJRQUxJQUVnQWlBRUVJUUZBQXNnQUNBQ05nSUVJQUFnQVRZQ0FBczdBUUYvSXdCQkVHc2lBaVFBSUFKQkNHXFxcbm9nQVNBQktBSWdFUDhHSUFJb0Fnd2hBU0FBSUFJb0FnZzJBZ0FnQUNBQk5nSUVJQUpCRUdva0FBczZBUUYvSXdCQkVHc2lBU1FBSUFFZ1xcXG5BQkNwQ1FKQUlBRW9BZ1FpQUVVTkFDQUJLQUlBSUFBZ0FVRUlhaWdDQUJEREN3c2dBVUVRYWlRQUN6b0JBWDhqQUVFUWF5SURKQUFnQTBcXFxuRUlhaUFCSUFKQkFCQ1JDQ0FES0FJTUlRSWdBQ0FES0FJSU5nSUFJQUFnQWpZQ0JDQURRUkJxSkFBTE9nRUJmeU1BUVJCcklnTWtBQ0FEXFxcblFRaHFJQUVnQWtFQkVKRUlJQU1vQWd3aEFpQUFJQU1vQWdnMkFnQWdBQ0FDTmdJRUlBTkJFR29rQUFzNUFRRi9Jd0JCRUdzaUFpUUFJQVxcXG5KQkNHb2dBUkRYQnlBQ0xRQUpJUUVnQUNBQ0xRQUlRUUZ4T2dBQUlBQWdBVG9BQVNBQ1FSQnFKQUFMT2dFQmZ5TUFRUkJySWdNa0FDQURcXFxuUVFocUlBRWdBa0VBRUpJSUlBTW9BZ3doQWlBQUlBTW9BZ2cyQWdBZ0FDQUNOZ0lFSUFOQkVHb2tBQXM2QVFGL0l3QkJFR3NpQXlRQUlBXFxcbk5CQ0dvZ0FTQUNRUUVRa2dnZ0F5Z0NEQ0VDSUFBZ0F5Z0NDRFlDQUNBQUlBSTJBZ1FnQTBFUWFpUUFDem9CQVg4akFFRVFheUlESkFBZ1xcXG5BMEVJYWlBQklBSkJBQkNUQ0NBREtBSU1JUUlnQUNBREtBSUlOZ0lBSUFBZ0FqWUNCQ0FEUVJCcUpBQUxPUUVCZnlNQVFSQnJJZ0lrQUNcXFxuQUNRUUEyQWd3Z0FpQUJJQUpCREdvUTFnSWdBQ0FDS0FJQUlBSW9BZ1FRYnlFQklBSkJFR29rQUNBQkN6d0JBWDhqQUVFUWF5SUJKQUFnXFxcbkFVRUlhaUFBUVFocUtBSUFOZ0lBSUFFZ0FDa0NBRGNEQUNBQlFZVGV6UUFRelFraEFDQUJRUkJxSkFBZ0FBczhBUUYvSXdCQkVHc2lBaVxcXG5RQUlBSkJDR29nQUNBQUtBSUFLQUlFRVFVQUlBSW9BZ2dnQVNBQ0tBSU1LQUlRRVFZQUlRQWdBa0VRYWlRQUlBQUxNd0VCZnlNQVFSQnJcXFxuSWdNa0FDQURRUWhxSUFBZ0FFRUVhaUFCSUFJUW13WWdBMEVJYWhDOUJ5RUFJQU5CRUdva0FDQUFDenNBQWtBZ0FrVU5BQUpBSUFNTkFFXFxcbkVBTFFEeHBrOGFJQUlnQVJEM0N5RUJEQUVMSUFJZ0FSRDRDeUVCQ3lBQUlBSTJBZ1FnQUNBQk5nSUFDemNCQVg4akFFRVFheUlESkFBZ1xcXG5BeUFCSUFJUTF3VWdBRUVJYWlBRFFRaHFLQUlBTmdJQUlBQWdBeWtEQURjQ0FDQURRUkJxSkFBTE53RUJmeU1BUVJCcklnSWtBQ0FDSUFcXFxuRkJBUkNkQmlBQVFRaHFJQUpCQ0dvcEF3QTNBZ0FnQUNBQ0tRTUFOd0lBSUFKQkVHb2tBQXMvQVFGL0FrQUNRQ0FCUVoya3dBQkJEQkRhXFxcbkNDSUJEUUJCQUNFQkRBRUxJQUZCRkdvb0FnQWhBaUFCS0FJTUlRRUxJQUFnQWpZQ0JDQUFJQUUyQWdBTE53RUJmeU1BUVJCcklnTWtBQ1xcXG5BRElBRWdBaENDQ0NBQVFRaHFJQU5CQ0dvb0FnQTJBZ0FnQUNBREtRTUFOd0lBSUFOQkVHb2tBQXMrQVFGL0FrQUNRQ0FDRFFCQkFDRUNcXFxuRVBvTklRTU1BUXRCQVNFQ0VQc05JUU1MSUFCQkFEWUNDQ0FBSUFNMkFnUWdBQ0FDTmdJQUlBQWdBVFlDRUFzN0FRRi9Ba0FnQUNnQ0NDXFxcbklDSUFBb0FnUkhEUUFnQUNBQ0VQc0lJQUFvQWdnaEFnc2dBQ0FDUVFGcU5nSUlJQUFvQWdBZ0Ftb2dBVG9BQUFzN0FBSkFJQUpGRFFBQ1xcXG5RQ0FERFFCQkFDMEE4YVpQR2lBQ0lBRVE5d3NoQVF3QkN5QUNJQUVRK0FzaEFRc2dBQ0FDTmdJRUlBQWdBVFlDQUFzN0FBSkFJQUpGRFFcXFxuQUNRQ0FERFFCQkFDMEE4YVpQR2lBQ0lBRVE5d3NoQVF3QkN5QUNJQUVRK0FzaEFRc2dBQ0FDTmdJRUlBQWdBVFlDQUFzM0FRRi9Jd0JCXFxcbkVHc2lBeVFBSUFNZ0FTQUNFTmNGSUFCQkNHb2dBMEVJYWlnQ0FEWUNBQ0FBSUFNcEF3QTNBZ0FnQTBFUWFpUUFDenNBQWtBZ0FrVU5BQVxcXG5KQUlBTU5BRUVBTFFEeHBrOGFJQUlnQVJEM0N5RUJEQUVMSUFJZ0FSRDRDeUVCQ3lBQUlBSTJBZ1FnQUNBQk5nSUFDellCQW44akFFRVFcXFxuYXlJQ0pBQWdBaUFCTmdJTUlBSkJER29Rd1F3aEF5QUFJQUUyQWdRZ0FDQURRUUZ6TmdJQUlBSkJFR29rQUFzMkFRSi9Jd0JCRUdzaUFpXFxcblFBSUFJZ0FUWUNEQ0FDUVF4cUVQc0dJUU1nQUNBQk5nSUVJQUFnQTBFQmN6WUNBQ0FDUVJCcUpBQUxPd0FDUUNBQ1JRMEFBa0FnQXcwQVxcXG5RUUF0QVBHbVR4b2dBaUFCRVBjTElRRU1BUXNnQWlBQkVQZ0xJUUVMSUFBZ0FqWUNCQ0FBSUFFMkFnQUxOZ0VCZnlNQVFUQnJJZ01rQUNcXFxuQURRUkJxUVM4Z0FTQUNFTk1GSUFNZ0EwRVFhaENXQWlBQUlBTXBBd0EzQXdBZ0EwRXdhaVFBQ3prQkFYOUJBQ0VDQWtBQ1FDQUFJQUVRXFxcbjFBcEZEUUFnQVVFQ1NRMEJJQUF0QUFGQk9rWWhBZ3NnQWc4TFFRRWdBVUg4anNFQUVJRUZBQXM3QUFKQUlBSkZEUUFDUUNBRERRQkJBQ1xcXG4wQThhWlBHaUFDSUFFUTl3c2hBUXdCQ3lBQ0lBRVErQXNoQVFzZ0FDQUNOZ0lFSUFBZ0FUWUNBQXM3QUFKQUlBSkZEUUFDUUNBRERRQkJcXFxuQUMwQThhWlBHaUFDSUFFUTl3c2hBUXdCQ3lBQ0lBRVErQXNoQVFzZ0FDQUNOZ0lFSUFBZ0FUWUNBQXM3QUFKQUlBSkZEUUFDUUNBRERRXFxcbkJCQUMwQThhWlBHaUFDSUFFUTl3c2hBUXdCQ3lBQ0lBRVErQXNoQVFzZ0FDQUNOZ0lFSUFBZ0FUWUNBQXM3QUFKQUlBSkZEUUFDUUNBRFxcXG5EUUJCQUMwQThhWlBHaUFDSUFFUTl3c2hBUXdCQ3lBQ0lBRVErQXNoQVFzZ0FDQUNOZ0lFSUFBZ0FUWUNBQXRBQVFGL0l3QkJJR3NpQUNcXFxuUUFJQUJCRkdwQ0FEY0NBQ0FBUVFFMkFnd2dBRUhFNDgwQU5nSUlJQUJCK09ETkFEWUNFQ0FBUVFocVFjemp6UUFRbUFnQUN6OEJBbjhDXFxcblFCQ2xBaUlBUlEwQUlBQWdBQ2dDQUNJQlFYOXFOZ0lBQWtBZ0FVRUJSdzBBSUFBUTZRVUxEd3RCLytITkFFSGVBRUg4NHMwQUVJb0dBQVxcXG50QUFRRi9Jd0JCSUdzaUFDUUFJQUJCRkdwQ0FEY0NBQ0FBUVFFMkFnd2dBRUdVKzgwQU5nSUlJQUJCNVByTkFEWUNFQ0FBUVFocVFaejdcXFxuelFBUW1BZ0FDejhCQVg4akFFRWdheUlDSkFBZ0FpQUFOZ0lVSUFKQmpKek9BRFlDRENBQ1Fmei96UUEyQWdnZ0FrRUJPZ0FZSUFJZ0FUXFxcbllDRUNBQ1FRaHFFS0VHQUFzOUFRRi9Jd0JCSUdzaUFTUUFJQUZCRkdwQ0FEY0NBQ0FCUVFFMkFnd2dBVUh3bzg0QU5nSUlJQUZCL1AvTlxcXG5BRFlDRUNBQlFRaHFJQUFRbUFnQUN6a0JBWDhqQUVIQUFHc2lBaVFBSUFKQkVHb2dBVUVzRUtRTkdpQUNRb0NBZ0lDd0FUY0RDQ0FBSUFcXFxuSkJDR29ROGdRZ0FrSEFBR29rQUFzN0FRRi9Jd0JCMEFGcklnSWtBQ0FDUVFocUlBRkJ3QUVRcEEwYUlBSkNnSUNBZ0lBRE53UElBU0FBXFxcbklBSkJDR29RcmdVZ0FrSFFBV29rQUFzMkFBSkFJQUV0QUF4QkFrWU5BQ0FBSUFFcEFnQTNBZ0FnQUVFSWFpQUJRUWhxS1FJQU53SUFEd1xcXG5zZ0FFRUNPZ0FNSUFFUTR3d0xOZ0VCZnlNQVFSQnJJZ0lrQUNBQ0lBRXBBZ0EzQXdnZ0FrRUlhaENsRFNFQklBQkJBVFlDQUNBQUlBRTJcXFxuQWdRZ0FrRVFhaVFBQ3pZQkFYOGpBRUVRYXlJQ0pBQWdBa0VJYWlBQkVQTUdJQUlvQWd3aEFTQUFJQUlvQWdnMkFnQWdBQ0FCTmdJRUlBXFxcbkpCRUdva0FBczJBUUYvSXdCQkVHc2lBaVFBSUFKQkNHb2dBUkQwQmlBQ0tBSU1JUUVnQUNBQ0tBSUlOZ0lBSUFBZ0FUWUNCQ0FDUVJCcVxcXG5KQUFMTmdFQmZ5TUFRUkJySWdJa0FDQUNRUWhxSUFFUTlRWWdBaWdDRENFQklBQWdBaWdDQ0RZQ0FDQUFJQUUyQWdRZ0FrRVFhaVFBQ3pcXFxuWUJBWDhqQUVFUWF5SUNKQUFnQWtFSWFpQUJFUFlHSUFJb0Fnd2hBU0FBSUFJb0FnZzJBZ0FnQUNBQk5nSUVJQUpCRUdva0FBc3lBUUYvXFxcbkl3QkJFR3NpQkNRQUFrQWdBQ2dDQ0NBQlR3MEFJQVJCQ0dvZ0FDQUJJQUlnQTBFQkVGY0xJQVJCRUdva0FBc3lBUUYvSXdCQkVHc2lCQ1xcXG5RQUFrQWdBQ2dDQ0NBQlR3MEFJQVJCQ0dvZ0FDQUJJQUlnQTBFQkVGa0xJQVJCRUdva0FBc3lBUUYvSXdCQkVHc2lCQ1FBQWtBZ0FDZ0NcXFxuQ0NBQlR3MEFJQVJCQ0dvZ0FDQUJJQUlnQTBFQkVGZ0xJQVJCRUdva0FBczBBUUYvSXdCQkVHc2lBeVFBSUFNZ0FqWUNEQ0FCSUFOQkRHXFxcbm9RaWdzZ0FDQUNRYXgvYWtIVUFCQ2tEUm9nQTBFUWFpUUFDendCQVg4akFFRVFheUlDSkFBZ0FpQUFOZ0lNSUFGQm1LdkFBRUVjUWJPcVxcXG53QUJCQXlBQ1FReHFRYnlLd0FBUWt3TWhBQ0FDUVJCcUpBQWdBQXMxQVFGL0l3QkJFR3NpQVNRQUlBRkJnUUUyQWd3Z0FDZ0NBRUdCQVJcXFxuQU1JUUFnQVVFTWFoQ01DeUFCUVJCcUpBQWdBRUVBUndzMkFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FSQ1FCaUFDS0FJTUlRRWdBQ0FDXFxcbktBSUlOZ0lBSUFBZ0FUWUNCQ0FDUVJCcUpBQUxOZ0VDZnlNQVFSQnJJZ0VrQUNBQlFRaHFJQUFRalFJZ0FTZ0NDQ0VBSUFFb0Fnd2hBaVxcXG5BQlFSQnFKQUFnQWtHQWdNUUFJQUFiQ3pZQkFuOENRQU5BSUFFaUFrVU5BU0FDUVg5cUlRRWdBQzBBQUNFRElBQkJBV29oQUNBRFFZRHpcXFxud0FCcUxRQUFEUUFMQ3lBQ1JRczVBQ0FBUVFCQmdBRVFvUTBpQUVHQUFXb2dBVUhBQUJDa0RSb2dBRUVBTmdMUUFTQUFRY2dCYWlBQk5nXFxcbklBSUFCQndBRnFRZ0EzQXdBTE53QUNRQ0FBUWZ6Ly8vOEhTdzBBQWtBZ0FBMEFRUVFQQ3lBQVFmMy8vLzhIU1VFQ2RDQUFFSXdNSWdCRlxcXG5EUUFnQUE4TEVOc05BQXMyQVFKL0l3QkJFR3NpQVNRQUlBRkJDR29nQUJDUEFpQUJLQUlJSVFBZ0FTZ0NEQ0VDSUFGQkVHb2tBQ0FDUVlcXFxuQ0F4QUFnQUJzTE5RRUJmeUFBSUFFUW1Rb2dBQ2dDQ0NFREFrQWdBVVVOQUNBQUtBSUFJQU5xSUFJNkFBQWdBMEVCYWlFREN5QUFJQU0yXFxcbkFnZ0xNUUVCZnlNQVFSQnJJZ01rQUFKQUlBQW9BZ2dnQVU4TkFDQURRUWhxSUFBZ0FTQUNRUUVRcGdFTElBTkJFR29rQUFzeEFRRi9Jd1xcXG5CQkVHc2lBeVFBQWtBZ0FDZ0NDQ0FCVHcwQUlBTkJDR29nQUNBQklBSkJBUkNpQVFzZ0EwRVFhaVFBQ3pFQkFYOGpBRUVRYXlJREpBQUNcXFxuUUNBQUtBSUlJQUZQRFFBZ0EwRUlhaUFBSUFFZ0FrRUJFS2NCQ3lBRFFSQnFKQUFMTHdFQmZ5QUFJQUlnQVd0QkhHNGlBMEVCYWtFQmRpXFxcbkFESUFBb0Fnd2JJQUJCRUdvUXN3Z2dBU0FDSUFBUXlnSUxNUUVCZnlNQVFSQnJJZ01rQUFKQUlBQW9BZ2dnQVU4TkFDQURRUWhxSUFBZ1xcXG5BU0FDUVFFUWtRRUxJQU5CRUdva0FBc3pBUUYvQWtBZ0FTZ0NBQ0lDUVg5R0RRQWdBU0FDUVFGcU5nSUFJQUFnQVRZQ0JDQUFJQUZCQkdcXFxubzJBZ0FQQ3hDSkRRQUxNd0VCZndKQUlBRW9BZ0FpQWtGL1JnMEFJQUVnQWtFQmFqWUNBQ0FBSUFFMkFnUWdBQ0FCUVFocU5nSUFEd3NRXFxcbmlRMEFDelVCQVg4akFFRVFheUlDSkFBZ0FpQUJRUUFRbFFVZ0Fpa0RBQ0VCSUFBZ0FpZ0NDRFlDQ0NBQUlBRTNBd0FnQWtFUWFpUUFDelxcXG5vQkFYOENRQUpBSUFFb0FnQU5BQ0FCS0FJRUlRRkJBQ0VDREFFTFFRRWhBaUFCS0FJRUVNc0RJUUVMSUFBZ0FUWUNCQ0FBSUFJMkFnQUxcXFxuTkFFQmZ5TUFRUkJySWdJa0FDQUNRUWhxSUFBUTJnY2dBaWdDQ0NBQklBSW9BZ3dvQWhBUkJnQWhBQ0FDUVJCcUpBQWdBQXMwQVFGL0l3XFxcbkJCRUdzaUFpUUFJQUpCQ0dvZ0FCRGFCeUFDS0FJSUlBRWdBaWdDRENnQ0VCRUdBQ0VBSUFKQkVHb2tBQ0FBQ3pRQkFYOGpBRUVRYXlJQ1xcXG5KQUFnQWtFSWFpQUFFTm9ISUFJb0FnZ2dBU0FDS0FJTUtBSVFFUVlBSVFBZ0FrRVFhaVFBSUFBTE5BRUJmeU1BUVJCcklnSWtBQ0FDUVFcXFxuaHFJQUFRMmdjZ0FpZ0NDQ0FCSUFJb0Fnd29BaEFSQmdBaEFDQUNRUkJxSkFBZ0FBczBBUUYvSXdCQkVHc2lBU1FBSUFFZ0FFRVlRUWdRXFxcbmhnUWdBU2dDQUNBQktBSUVJQUZCQ0dvb0FnQVFwQXNnQVVFUWFpUUFDelFCQVg4akFFRVFheUlCSkFBZ0FTQUFRUVJCQ0JDR0JDQUJLQVxcXG5JQUlBRW9BZ1FnQVVFSWFpZ0NBQkNrQ3lBQlFSQnFKQUFMTkFFQmZ5TUFRUkJySWdFa0FDQUJJQUJCQ0VFSUVJWUVJQUVvQWdBZ0FTZ0NcXFxuQkNBQlFRaHFLQUlBRUtRTElBRkJFR29rQUFzMUFRRi9Jd0JCRUdzaUFTUUFJQUVnQUVIVUFFRUlFSVlFSUFFb0FnQWdBU2dDQkNBQlFRXFxcbmhxS0FJQUVLUUxJQUZCRUdva0FBc3hBUUYvSXdCQndBQnJJZ1FrQUNBRVFRaHFJQUVnQWlBREVJNEhJQUFnQkVFUWFrRXdFS1FOR2lBRVxcXG5RY0FBYWlRQUN5OEJBbjhnQUNnQ0FDSURJQUZxSUFLblFSbDJJZ1E2QUFBZ0F5QUFLQUlFSUFGQmVHcHhha0VJYWlBRU9nQUFDemdCQVhcXFxuOUJBU0VDQWtBQ1FDQUJLQUlBRUF0QkFVWU5BRUVBSVFJTUFRc2dBUkQ0RFJERERTRUJDeUFBSUFFMkFnUWdBQ0FDTmdJQUN6VUFJQUJCXFxcbmdBRTZBQmdnQUVJQk53SU1JQUFnQVNrQ0FEY0NBQ0FBUVJScVFRQTJBZ0FnQUVFSWFpQUJRUWhxS0FJQU5nSUFDelVBSUFCQmdBRTZBQlxcXG5nZ0FFSUJOd0lNSUFBZ0FTa0NBRGNDQUNBQVFSUnFRUUEyQWdBZ0FFRUlhaUFCUVFocUtBSUFOZ0lBQ3pZQkFuOUJBQ0VDQWtBZ0FTZ0NcXFxuQUNJRElBRW9BZ1JQRFFCQkFTRUNJQUVnQTBFQmFqWUNBQXNnQUNBRE5nSUVJQUFnQWpZQ0FBczFBUUYvSXdCQkVHc2lBaVFBSUFJZ0FTXFxcbmtDQURjRENDQUFJQUpCQ0dvUXlBazJBZ0FnQUNBQ0tRTUlOd0lFSUFKQkVHb2tBQXN4QUFKQUlBTWdBVWtOQUNBQUlBTWdBV3MyQWdRZ1xcXG5BQ0FDSUFGQkEzUnFOZ0lBRHdzZ0FTQURRYmlad1FBUWdnVUFDemNCQVg5QjRRQWhBUUpBQWtBZ0FFRWFTUTBBUVJZaEFTQUFRU05MRFFcXFxuRUxJQUVnQUdvUEMwR3NvY0VBUVE1QnZLSEJBQkRlQ1FBTE53RUJmd0pBQWtBZ0FTZ0NCQTBBUVFBaEFRd0JDeUFCS0FJQUlBRkJDR29vXFxcbkFnQWlBa1loQVFzZ0FDQUNOZ0lFSUFBZ0FUWUNBQXMxQUNBQVFRRTJBZ1FnQUVFSWFrR0NnTVFBSUFFb0FnZ2lBV3RCQXlBQlFZQ0F2SFxcXG45cVFRTkpHeUlCTmdJQUlBQWdBVFlDQUFzMkFDQUFRUU02QUNBZ0FFRWdOZ0lRSUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUVBTmdJSUlBQkJcXFxuQURZQ0FDQUFRUmhxSUFJMkFnQUxMZ0VCZnlNQVFSQnJJZ01rQUNBRFFRaHFJQUFnQVNBQ0VOZ0ZJQU1vQWdnaEFpQURRUkJxSkFBZ0FrXFxcbkVBUndzeEFRRi9Jd0JCNEFCcklnSWtBQ0FDUVFocUlBRkIxQUFRcEEwYUlBQW9BZ0FnQWtFSWFoRG9CQ0FDUWVBQWFpUUFDekVCQVg4alxcXG5BRUVRYXlJQ0pBQWdBa0VJYWlBQUVMZ0dJQUVnQWlnQ0NDQUNLQUlNRVAwSUlRQWdBa0VRYWlRQUlBQUxNUUVCZnlNQVFSQnJJZ0lrQUNcXFxuQUNRUWhxSUFBUTdBY2dBU0FDS0FJSUlBSW9BZ3dRL1FnaEFDQUNRUkJxSkFBZ0FBczRBZ0YvQVg0akFFRVFheUlCSkFBZ0FVSDRnc0FBXFxcbkVJRUdJQUVwQXdBaEFpQUFJQUVwQXdnM0F3Z2dBQ0FDTndNQUlBRkJFR29rQUFzekFRRi9Jd0JCRUdzaUFpUUFJQUVnQWtFSWFrR01oTVxcXG5BQUVJVUJJUUVnQUVFQU5nSUFJQUFnQVRZQ0JDQUNRUkJxSkFBTE13RUJmeU1BUVJCcklnSWtBQ0FCSUFKQkNHcEJuSVRBQUJDRkFTRUJcXFxuSUFCQkFEWUNBQ0FBSUFFMkFnUWdBa0VRYWlRQUN6SUJBWDhqQUVFUWF5SUNKQUFnQWhEd0RUWUNDQ0FDSUFKQkNHb2dBUkRDQVNBQUlBXFxcbklwQXdBM0F3QWdBa0VRYWlRQUN6RUJBWDhqQUVFUWF5SURKQUFnQUNBQklBSVF0d0lnQTBIL0FUb0FEeUFBSUFOQkQycEJBUkMzQWlBRFxcXG5RUkJxSkFBTE1nRUJmeU1BUVJCcklnSWtBQ0FDUVFocUlBQWdBQ2dDQ0NBQkVJc0dJQUlvQWdnZ0FpZ0NEQkRvQ1NBQ1FSQnFKQUFMTWdcXFxuRUJmeU1BUVJCcklnSWtBQ0FDUVFocUlBQWdBQ2dDQ0NBQkVJd0dJQUlvQWdnZ0FpZ0NEQkRvQ1NBQ1FSQnFKQUFMTWdFQmZ5TUFRUkJyXFxcbklnSWtBQ0FDUVFocUlBQWdBQ2dDQ0NBQkVJMEdJQUlvQWdnZ0FpZ0NEQkRvQ1NBQ1FSQnFKQUFMTUFFQmZ5TUFRUkJySWdFa0FDQUFLQVxcXG5JQUlnQkJDR29RNHd3Z0FTQUFOZ0lNSUFGQkRHb1EyUWdnQVVFUWFpUUFDeklCQVg4Q1FDQUFLQUlBSWdCQmYwWU5BQ0FBSUFBb0FnUWlcXFxuQVVGL2FqWUNCQ0FCUVFGSERRQWdBRUVVUVFRUXNnd0xDeTRBQWtBZ0FDZ0NEQTBBUVFBUEN5QUFJQUJCRUdvZ0FTQUNFSmdCSUFFZ0FoXFxcbkNPQlNJQVFXaHFRUUFnQUJzTE53RUJmaUFBSUFJcEF3QkNnSUdDaElpUW9NQ0FmNE1pQkVJQVVqWUNBQ0FBSUFSNnAwRURkaUFES0FJQVxcXG5haUFCS0FJRWNUWUNCQXMxQVFGL0l3QkJFR3NpQWlRQUlBSWdBRFlDRENBQlFZQ3R3QUJCQlNBQ1FReHFRWWl0d0FBUTZnSWhBQ0FDUVJcXFxuQnFKQUFnQUFzeEFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FCQzRCaUFCSUFJb0FnZ2dBaWdDREJEOUNDRUFJQUpCRUdva0FDQUFDelVCXFxcbkFuOUJBQ0VDQWtBZ0FTZ0NDQ0lESUFFb0FnUlBEUUFnQVNnQ0FDQURhaTBBQUNFQ0N5QUFRUUE2QUFBZ0FDQUNPZ0FCQ3pFQkFYOGpBRVxcXG5FUWF5SUNKQUFnQWtFSWFpQUFFT3dISUFFZ0FpZ0NDQ0FDS0FJTUVQMElJUUFnQWtFUWFpUUFJQUFMTVFFQmZ5TUFRUkJySWdJa0FDQUNcXFxuUVFocUlBQVE3QWNnQVNBQ0tBSUlJQUlvQWd3US9RZ2hBQ0FDUVJCcUpBQWdBQXMwQUNBQUtBSUFJUUFDUUNBQkVLd01EUUFDUUNBQkVLXFxcbjBNRFFBZ0FDQUJFTm9NRHdzZ0FDQUJFT0FERHdzZ0FDQUJFTjhEQ3pJQkFYOENRQ0FBS0FJQUlnQkJmMFlOQUNBQUlBQW9BZ1FpQVVGL1xcXG5hallDQkNBQlFRRkhEUUFnQUVFWVFRZ1FzZ3dMQ3pRQkFYOENRQ0FCS0FJRUlnSkZEUUFnQUVFRU5nSUVJQUFnQWtFWWJEWUNDQ0FBSUFcXFxuRW9BZ0EyQWdBUEN5QUFRUUEyQWdRTE5BQWdBQ2dDQUNFQUFrQWdBUkNzREEwQUFrQWdBUkN0REEwQUlBQWdBUkRhREE4TElBQWdBUkRnXFxcbkF3OExJQUFnQVJEZkF3c3pBUUYvSXdCQkVHc2lBaVFBQWtBZ0FBMEFJQUpCRUdva0FBOExRZnlDd1FCQkt5QUNRUWhxUWJ5QndRQWdBUlxcXG5EQ0JBQUxOUUVCZnlBQVFRQVFxUW9DUUNBQ1JRMEFBMEFnQVJESUNTSURRWUNBeEFCR0RRRWdBQ0FERU40RUlBSkJmMm9pQWcwQUN3c0xcXFxuT3dFQmYwRUFMUUR4cGs4YUFrQWdBVUVEZEVFRUVQY0xJZ0lOQUVHWW1zRUFRU3RCeEpyQkFCQ0RCd0FMSUFBZ0FUWUNCQ0FBSUFJMkFnXFxcbkFMTUFFQmZ5TUFRUkJySWdNa0FDQURRUUE2QUF3Z0EwRUFOZ0lJSUFBZ0EwRUlhaUFCSUFJUXN3SWdBMEVRYWlRQUN5MEFBa0FnQWlBRFxcXG5UdzBBSUFNZ0FpQUVFSUlGQUFzZ0FDQUNJQU5yTmdJRUlBQWdBU0FEUVFKMGFqWUNBQXN4QVFGL0l3QkJFR3NpQWlRQUlBSkJDR29nQVVcXFxuSDA0YzBBUVFzUXJRa2dBa0VJYWhEV0JDRUJJQUpCRUdva0FDQUJDelFBSUFBb0FnQWhBQUpBSUFFUXJBd05BQUpBSUFFUXJRd05BQ0FBXFxcbklBRVEyd3dQQ3lBQUlBRVEyZ01QQ3lBQUlBRVEyd01MTkFBZ0FDQUJLQUlVSUFJZ0F5QUJRUmhxS0FJQUtBSU1FUWtBT2dBSUlBQWdBVFxcXG5ZQ0JDQUFJQU5GT2dBSklBQkJBRFlDQUFzckFBSkFJQU1nQVVrTkFDQUFJQU1nQVdzMkFnUWdBQ0FDSUFGcU5nSUFEd3NnQVNBRElBUVFcXFxuZ2dVQUN6QUNBWDhCZmlNQVFSQnJJZ01rQUNBRElBQW9BZ0EyQWd3Z0EwRU1haUFCSUFJUXhRb2hCQ0FEUVJCcUpBQWdCQXN3QWdGL0FYXFxcbjRqQUVFUWF5SURKQUFnQXlBQUtBSUFOZ0lNSUFOQkRHb2dBU0FDRU1ZS0lRUWdBMEVRYWlRQUlBUUxNQUlCZndGK0l3QkJFR3NpQXlRQVxcXG5JQU1nQUNnQ0FEWUNEQ0FEUVF4cUlBRWdBaENOQ2lFRUlBTkJFR29rQUNBRUN6QUNBWDhCZmlNQVFSQnJJZ01rQUNBRElBQW9BZ0EyQWdcXFxud2dBMEVNYWlBQklBSVFqZ29oQkNBRFFSQnFKQUFnQkFzdkFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FDQUJRUUVRM1FJZ0FpZ0NDQ0FDXFxcbktBSU1FT2dKSUFKQkVHb2tBQXN2QVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQUNBQklBSVEzUUlnQXlnQ0NDQURLQUlNRU9nSklBTkJFR1xcXG5va0FBc3ZBUUYvSXdCQkVHc2lBaVFBSUFKQkNHb2dBQ0FCUVFFUTRBSWdBaWdDQ0NBQ0tBSU1FT2dKSUFKQkVHb2tBQXN2QVFGL0l3QkJcXFxuRUdzaUFpUUFJQUpCQ0dvZ0FDQUJRUUVRM2dJZ0FpZ0NDQ0FDS0FJTUVPZ0pJQUpCRUdva0FBc3ZBUUYvSXdCQkVHc2lBaVFBSUFKQkNHXFxcbm9nQUNBQlFRRVEzd0lnQWlnQ0NDQUNLQUlNRU9nSklBSkJFR29rQUFzdUFDQUFJQUlnQVdzaUFoQ1RDaUFBS0FJQUlBQW9BZ2hxSUFFZ1xcXG5BaENrRFJvZ0FDQUFLQUlJSUFKcU5nSUlDeThCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBSUFGQkFSQzhBeUFDS0FJSUlBSW9BZ3dRN1FcXFxua2dBa0VRYWlRQUN5OEJBWDhqQUVFUWF5SURKQUFnQTBFSWFpQUFJQUVnQWhDOEF5QURLQUlJSUFNb0Fnd1E3UWtnQTBFUWFpUUFDeThCXFxcbkFYOGdBQ0FDSUFGcklnSVFsQW9nQUNnQ0FDQUFLQUlJSWdOcUlBRWdBaENrRFJvZ0FDQURJQUpxTmdJSUN5OEJBWDhqQUVFUWF5SUNKQVxcXG5BZ0FrRUlhaUFBSUFGQkFSRDRBaUFDS0FJSUlBSW9BZ3dRN2drZ0FrRVFhaVFBQ3k4QkFYOGpBRUVRYXlJREpBQWdBMEVJYWlBQUlBRWdcXFxuQWhENEFpQURLQUlJSUFNb0Fnd1E3Z2tnQTBFUWFpUUFDek1CQVg5QkZCQ3JCeUlESUFJMkFoQWdBeUFCTmdJTUlBTkJDR29nQUVFSWFpXFxcbmdDQURZQ0FDQURJQUFwQWdBM0FnQWdBd3N2QVFGL0l3QkJFR3NpQWlRQUlBSkJDR29nQUNBQlFRRVE0UUlnQWlnQ0NDQUNLQUlNRU84SlxcXG5JQUpCRUdva0FBc3JBUUYvSXdCQk1Hc2lBaVFBSUFKQkNHb2dBVUVvRUtRTkdpQUFJQUpCQ0dvUXhnMGdBa0V3YWlRQUN5OEJBWDhnQUNcXFxuQUNJQUZySWdJUWx3b2dBQ2dDQUNBQUtBSUlJZ05xSUFFZ0FoQ2tEUm9nQUNBRElBSnFOZ0lJQ3k4QkFYOGpBRUVRYXlJREpBQWdBMEVJXFxcbmFpQUFJQUVnQWhENUFpQURLQUlJSUFNb0Fnd1E4Z2tnQTBFUWFpUUFDeThCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBSUFGQkFSRDVBaVxcXG5BQ0tBSUlJQUlvQWd3UThna2dBa0VRYWlRQUN5OEJBWDhqQUVFUWF5SUNKQUFnQWtFSWFpQUFJQUZCQVJEaUFpQUNLQUlJSUFJb0Fnd1FcXFxuOGdrZ0FrRVFhaVFBQ3pNQUlBRkJKUkRrQkNBQklBQkI4QUZ4UVFSMlFmRHl3QUJxTFFBQUVPUUVJQUVnQUVFUGNVSHc4c0FBYWkwQUFCXFxcbkRrQkFzckFBSkFJQU1nQVVrTkFDQUFJQU1nQVdzMkFnUWdBQ0FDSUFGcU5nSUFEd3NnQVNBRElBUVFnZ1VBQ3k0QUlBQWdBaUFCYXlJQ1xcXG5FSmtLSUFBb0FnQWdBQ2dDQ0dvZ0FTQUNFS1FOR2lBQUlBQW9BZ2dnQW1vMkFnZ0xMd0VCZnlNQVFSQnJJZ0lrQUNBQ1FRaHFJQUFnQVVcXFxuRUJFTVlESUFJb0FnZ2dBaWdDREJEMENTQUNRUkJxSkFBTEx3RUJmeU1BUVJCcklnTWtBQ0FEUVFocUlBQWdBU0FDRU1ZRElBTW9BZ2dnXFxcbkF5Z0NEQkQwQ1NBRFFSQnFKQUFMTHdFQmZ5TUFRUkJySWdNa0FDQURRUWhxSUFBZ0FTQUNFT1FDSUFNb0FnZ2dBeWdDREJEM0NTQURRUlxcXG5CcUpBQUxMd0VCZnlNQVFSQnJJZ0lrQUNBQ1FRaHFJQUFnQVVFQkVPTUNJQUlvQWdnZ0FpZ0NEQkQzQ1NBQ1FSQnFKQUFMTGdFRGZ5QUFcXFxuS0FJQUlnSWdBU2dDQUNJRGNrVWhCQUpBSUFKRkRRQWdBMFVOQUNBQUlBRVF4d3doQkFzZ0JBc3dBUUYvSXdCQkVHc2lBU1FBSUFFZ0FDXFxcbmtDQURjRENDQUJRUWhxRU1nSklRQWdBVUVRYWlRQUlBQkJnSURFQUVZTExnRUJmeU1BUVJCcklnTWtBQ0FESUFBcEFnQTNBd2dnQVNBQ1xcXG5JQU5CQ0dvUWxRWWhBQ0FEUVJCcUpBQWdBQXN2QVFGL0l3QkJFR3NpQWlRQUlBSkJDR29nQUNBQlFRRVE1UUlnQWlnQ0NDQUNLQUlNRVBcXFxub0pJQUpCRUdva0FBc3ZBUUYvSXdCQkVHc2lBaVFBSUFKQkNHb2dBQ0FCUVFFUTVnSWdBaWdDQ0NBQ0tBSU1FUG9KSUFKQkVHb2tBQXN2XFxcbkFRRi9Jd0JCRUdzaUF5UUFJQU5CQ0dvZ0FDQUJJQUlRNWdJZ0F5Z0NDQ0FES0FJTUVQb0pJQU5CRUdva0FBc3ZBUUYvSXdCQkVHc2lBeVxcXG5RQUlBTkJDR29nQUNBQklBSVE1UUlnQXlnQ0NDQURLQUlNRVBvSklBTkJFR29rQUFzdkFBSkFJQUVRL0FWRkRRQWdBQ0FCS1FBQU53QUFcXFxuSUFCQkNHb2dBVUVJYWlnQUFEWUFBQThMSUFCQkFqb0FBQXN2QVFGL0lBQWdBaUFCYXlJQ0VLa0tJQUFvQWdBZ0FDZ0NDQ0lEYWlBQklBXFxcbklRcEEwYUlBQWdBeUFDYWpZQ0NBc3ZBUUYvSXdCQkVHc2lBeVFBSUFOQkNHb2dBQ0FCSUFJUSt3SWdBeWdDQ0NBREtBSU1FUHdKSUFOQlxcXG5FR29rQUFzdkFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FDQUJRUUVRK3dJZ0FpZ0NDQ0FDS0FJTUVQd0pJQUpCRUdva0FBc3ZBUUYvSUFcXFxuQWdBaUFCYXlJQ0VLb0tJQUFvQWdBZ0FDZ0NDQ0lEYWlBQklBSVFwQTBhSUFBZ0F5QUNhallDQ0FzdkFRRi9Jd0JCRUdzaUF5UUFJQU5CXFxcbkNHb2dBQ0FCSUFJUS9BSWdBeWdDQ0NBREtBSU1FUDBKSUFOQkVHb2tBQXN2QVFGL0l3QkJFR3NpQWlRQUlBSkJDR29nQUNBQlFRRVEvQVxcXG5JZ0FpZ0NDQ0FDS0FJTUVQMEpJQUpCRUdva0FBc3RBQ0FCS0FJQUlRRUNRQU5BSUFKRkRRRWdBU0FESUFRUWlBd2dBa0YvYWlFQ0RBQUxcXFxuQ3lBQVFRUTZBQUFMS1FFQmZ5TUFRU0JySWdNa0FDQURRUWhxRUpvTElBQWdBMEVJYWlBQklBSVFRaUFEUVNCcUpBQUxNd0VCZjBFTVFRXFxcblFRcFFjaUEwRUlhaUFDUVFocUtBSUFOZ0lBSUFNZ0Fpa0NBRGNDQUNBQUlBRWdBMEhnZzhBQUVMb0hDeXdCQVg4akFFRVFheUlDSkFBZ1xcXG5BaUFBS1FJQU53TUlJQUpCQ0dvZ0FSRGxDU0VBSUFKQkVHb2tBQ0FBQ3l3QkFYOGpBRUVRYXlJQ0pBQWdBaUFBS1FJQU53TUlJQUpCQ0dcXFxub2dBUkN5Q2lFQUlBSkJFR29rQUNBQUN5d0JBWDhqQUVFUWF5SUNKQUFnQWlBQUtRSUFOd01JSUFKQkNHb2dBUkNDQ2lFQUlBSkJFR29rXFxcbkFDQUFDeXdCQVg4akFFRVFheUlDSkFBZ0FpQUFLUUlBTndNSUlBSkJDR29nQVJDL0NTRUFJQUpCRUdva0FDQUFDeXdCQVg4akFFRVFheVxcXG5JQ0pBQWdBaUFBS1FJQU53TUlJQUpCQ0dvZ0FSREhDaUVBSUFKQkVHb2tBQ0FBQ3l3QkFYOGpBRUVRYXlJQ0pBQWdBaUFBS1FJQU53TUlcXFxuSUFKQkNHb2dBUkRJQ2lFQUlBSkJFR29rQUNBQUN5d0JBWDhqQUVFUWF5SUNKQUFnQWlBQUtRSUFOd01JSUFKQkNHb2dBUkNEQ2lFQUlBXFxcbkpCRUdva0FDQUFDeXdCQVg4akFFRVFheUlDSkFBZ0FpQUFLUUlBTndNSUlBSkJDR29nQVJESkNpRUFJQUpCRUdva0FDQUFDelFBSUFJb1xcXG5BZ0JCM0puQUFFSGZtY0FBSUFNYlFRRkJBaUFER3hDSURDQUFJQUlnQVNnQ0NDQUJLQUlBSUFFb0FnUVFtUWtMS3dBQ1FDQUJRUnhxS0FcXFxuSUFSUTBBSUFBZ0FVRVFhaUFCSUFJUTJ3UWdBaENuQXc4TElBQkJBallDQUFzeEFBSkFJQUFvQWdBaUFDQUJhaXdBQUVGL1RBMEFJQUFwXFxcbkF3QkNnSUdDaElpUW9NQ0FmNE42cDBFRGRpRUJDeUFCQ3l3QkFYOENRQ0FBS0FJQUlnRkJDVXNOQUNBQUlBRkJBV28yQWdBZ0FVRUNUUVxcXG4wQUVQWU5DeUFCUVFwSkN6RUJBWDhDUUNBQktBSUVJZ0pGRFFBZ0FDQUNOZ0lJSUFCQkFUWUNCQ0FBSUFFb0FnQTJBZ0FQQ3lBQVFRQTJcXFxuQWdRTE1RRUJmd0pBSUFFb0FnUWlBa1VOQUNBQUlBSTJBZ2dnQUVFQk5nSUVJQUFnQVNnQ0FEWUNBQThMSUFCQkFEWUNCQXNrQUFKQUlBXFxcbkhBUVFCT0RRQkJBUThMSUFBZ0FVRURka0VjY1dvb0FnQWdBWFpCQVhFTExBRUJmeU1BUVJCcklnSWtBQ0FDSUFBb0FnQTJBZ3dnQWtFTVxcXG5haUFCRU93QklRQWdBa0VRYWlRQUlBQUxOUUVCZjBFQklRRUNRQ0FBTFFBRURRQWdBQ2dDQUNJQUtBSVVRZENlemdCQkFTQUFRUmhxS0FcXFxuSUFLQUlNRVFrQUlRRUxJQUVMTUFBZ0FTZ0NGQ0FDSUFNZ0FVRVlhaWdDQUNnQ0RCRUpBQ0VESUFCQkFEb0FCU0FBSUFNNkFBUWdBQ0FCXFxcbk5nSUFDelVCQVg4Z0FTZ0NGRUhSbTg0QVFRRWdBVUVZYWlnQ0FDZ0NEQkVKQUNFQ0lBQkJBRG9BQlNBQUlBSTZBQVFnQUNBQk5nSUFDelxcXG5FQUFrQUNRQUpBSUFBb0FnQWlBQ2dDQUE0Q0FBRUNDeUFBUVFScUVPa0xEQUVMSUFCQkJHb1E0QWNMSUFBUTVBd0xLZ0VCZnlNQVFSQnJcXFxuSWdFa0FDQUJJQUFwQWdBM0F3Z2dBVUVJYWhDbERTRUFJQUZCRUdva0FDQUFDeTRCQVg5QkVFRUVFS1VISWdJZ0FUWUNBQ0FDSUFBcEFnXFxcbkEzQWdRZ0FrRU1haUFBUVFocUtBSUFOZ0lBSUFJTExnRUJmMEVRUVFRUXBRY2lBVUVBTmdJQUlBRWdBQ2tDQURjQ0JDQUJRUXhxSUFCQlxcXG5DR29vQWdBMkFnQWdBUXN3QUFKQUFrQUNRQ0FBS0FJQURnSUFBUUlMSUFBb0FnUkJBU0FBUVFocUtBSUFFTElMRHdzZ0FFRUVhaERwQndcXFxuc0xNUUFDUUFKQUlBQkJnWUNBZ0hoR0RRQWdBRVVOQVNBQUlBRVFtZzBBQ3c4TFFkamR3QUJCRVVIczNjQUFFSU1IQUFzdUFRRi9Jd0JCXFxcbkVHc2lBU1FBSUFFZ0FDa0NBRGNEQ0NBQlFRaHFRYlRmd0FCQkFDQUFLQUlJUVFFUTlnSUFDeXdBQWtBZ0FVVU5BQUpBSUFJTkFFRUFMUVxcXG5EeHBrOGFJQUVnQUJEM0N3OExJQUVnQUJENEN5RUFDeUFBQ3k0QkFYOGpBRUVRYXlJQkpBQWdBU0FBS1FJQU53TUlJQUZCQ0dwQmxKZkJcXFxuQUVFQUlBQW9BZ2hCQVJEMkFnQUxLQUFnQVNBQ0lBTWdCQkRlQmlFRElBQWdBaUFFYXpZQ0JDQUFJQUVnQkdwQkFDQURHellDQUFzdUFRXFxcbkYvSXdCQkVHc2lBU1FBSUFFZ0FDa0NBRGNEQ0NBQlFRaHFRZURZelFCQkFDQUFLQUlJUVFFUTlnSUFDeTBBQWtBQ1FDQUJFS3dNRFFBZ1xcXG5BUkN0REEwQklBQWdBUkNBQ2c4TElBQWdBUkRmQXc4TElBQWdBUkRnQXdzbkFDQUFJQUFvQWdSQkFYRWdBWEpCQW5JMkFnUWdBQ0FCYWlcXFxuSUFJQUFvQWdSQkFYSTJBZ1FMS1FBQ1FDQUJLQUlBRFFBZ0FVRi9OZ0lBSUFBZ0FUWUNCQ0FBSUFGQkJHbzJBZ0FQQ3hDSkRRQUxLUUFDXFxcblFDQUJLQUlBRFFBZ0FVRi9OZ0lBSUFBZ0FUWUNCQ0FBSUFGQkNHbzJBZ0FQQ3hDSkRRQUxLUUVCZnlNQVFSQnJJZ0VrQUNBQklBQW9BZ1xcXG5BcEFnQTNBd2dnQVVFSWFoQ3dDaUFCUVJCcUpBQUxLZ0VCZnlBQUtBSUFJZ0lvQWdBZ0FpZ0NCQ0FBS0FJRUtBSUFRUUFnQVd0QkdHeHFcXFxuUVdocUVOMExDeW9CQVg4Z0FDZ0NBQ0lBSUFBb0FnQWlBVUZ3YWpZQ0FBSkFJQUZCY25GQkVrY05BQ0FBRUwwREN3c3RBUUYvQWtBQ1FDXFxcbkFCRFFCQkFDRUNEQUVMUVFFaEFpQUJFTXNESVFFTElBQWdBVFlDQkNBQUlBSTJBZ0FMTEFFQmZ5QUJLQUlFSVFJQ1FDQUJLQUlJUlEwQVxcXG5JQUZCREdvUWpBc0xJQUFnQWpZQ0JDQUFRUUEyQWdBTE5nRUJmeUFBUVFBb0F1eW1UMEhvMmNBQVFRQW9BdlNtVDBFQ1JpSUJHellDQkNcXFxuQUFRUUFvQXVpbVQwSGMyY0FBSUFFYk5nSUFDeWtCQVg4Z0FDQUFLQUlBSWdGQmYybzJBZ0FDUUNBQlFRUkpEUUFnQVVFQ2NRMEFJQUFRXFxcbnNnSUxDeWtCQVg4Z0FDQUFLQUlBSWdGQmYybzJBZ0FDUUNBQlFRUkpEUUFnQVVFQ2NRMEFJQUFRc2dJTEN5b0JBWDhnQUNnQ0FDSUNLQVxcXG5JQUlBSW9BZ1FnQUNnQ0JDZ0NBRUVBSUFGclFSaHNha0ZvYWhEZEN3czJBUUovUVFBdEFKeW5UeUVCUVFCQkFEb0FuS2RQUVFBb0FxQ25cXFxuVHlFQ1FRQkJBRFlDb0tkUElBQWdBallDQkNBQUlBRTJBZ0FMS3dFQmZ5QUFFUDhOSVFFQ1FBTkFJQUVRclFnaUFFRU5TdzBCUVFFZ0FIXFxcblJCZ013QWNRMEFDd3NnQUFzcEFRRi9Jd0JCRUdzaUFTUUFJQUVnQUNnQ0FDa0NBRGNEQ0NBQlFRaHFFTHNLSUFGQkVHb2tBQXNyQUFKQVxcXG5JQUVReUFraUFVR0FnTVFBUncwQUlBQkJnSURFQUVZUEN5QUFRWUNBeEFCSElBRWdBRVp4Q3ljQkFYOUJBQ0VFQWtBZ0FTQURTUTBBSUFcXFxuSWdBeUFBSUFFZ0EydHFJQU1RcGdvaEJBc2dCQXNwQVFGL0l3QkJFR3NpQVNRQUlBRWdBQ2dDQUNrQ0FEY0RDQ0FCUVFocUVNQUtJQUZCXFxcbkVHb2tBQXNzQVFGL1FSQVF1UWNpQWlBQk5nSUFJQUlnQUNrQ0FEY0NCQ0FDUVF4cUlBQkJDR29vQWdBMkFnQWdBZ3NyQVFGL1FRQWhBZ1xcXG5KQUlBQWdBVUdBbE92Y0EyNnRmQ0FBV2cwQVFiU1N3QUJCTGhDcEJ5RUNDeUFDQ3lzQkFYOENRQ0FCS0FJQUlnSVF0d1FpQVEwQUlBQWdcXFxuQWhEUEFROExJQUJCQVRZQ0FDQUFJQUUyQWdRTEt3RUJmd0pBSUFFb0FnQWlBaEMzQkNJQkRRQWdBQ0FDRU1NQkR3c2dBRUVCTmdJQUlBXFxcbkFnQVRZQ0JBc2xBQ0FCSUFJZ0F5QUVFTUlHSVFNZ0FDQUNJQVJyTmdJRUlBQWdBVUVBSUFNYk5nSUFDeXNCQVg4Q1FDQUJLQUlBSWdJUVxcXG51d1FpQVEwQUlBQWdBaENzQVE4TElBQkJBRFlDRUNBQUlBRTJBZ0FMTHdFQmZ3SkFJQUVvQWdBaUFoQzNCQ0lCRFFBZ0FDQUNFSzhERHdcXFxuc2dBRUdCbE92Y0F6WUNDQ0FBSUFFMkFnQUxLZ0VCZndKQUlBRW9BZ0FpQWhDM0JDSUJEUUFnQUNBQ0VGNFBDeUFBUVFBMkFnQWdBQ0FCXFxcbk5nSUVDeXNCQVg4Q1FDQUJLQUlBSWdJUXV3UWlBUTBBSUFBZ0FoQ2dBZzhMSUFCQkFEWUNBQ0FBSUFFMkFnUUxLd0VCZndKQUlBRW9BZ1xcXG5BaUFoQzNCQ0lCRFFBZ0FDQUNFSnNDRHdzZ0FFRUFOZ0lBSUFBZ0FUWUNCQXNyQVFGL0FrQWdBU2dDQUNJQ0VMc0VJZ0VOQUNBQUlBSVFcXFxuclFFUEN5QUFRUUEyQWhBZ0FDQUJOZ0lBQ3lzQkFYOENRQ0FCS0FJQUlnSVF1d1FpQVEwQUlBQWdBaERZQ3c4TElBQkJBRFlDRUNBQUlBXFxcbkUyQWdBTEt3RUJmd0pBSUFFb0FnQWlBaEM3QkNJQkRRQWdBQ0FDRUs0QkR3c2dBRUVBTmdJUUlBQWdBVFlDQUFzb0FRRi9Jd0JCRUdzaVxcXG5BeVFBSUFNZ0FqWUNDQ0FESUFFMkFnUWdBeUFBTmdJQUlBTVF3QTBBQ3lrQUFrQWdBa1VOQUVFQUxRRHhwazhhSUFJZ0FSRDNDeUVCQ3lcXFxuQUFJQUkyQWdRZ0FDQUJOZ0lBQ3lVQUFrQWdBVUVFU3cwQUlBQWdBVFlDQkNBQUlBSTJBZ0FQQ3lBQlFRUWdBeENEQlFBTEpRQUNRQ0FCXFxcbklBTkxEUUFnQUNBQk5nSUVJQUFnQWpZQ0FBOExJQUVnQXlBRUVJTUZBQXNvQVFGL0l3QkJFR3NpQXlRQUlBTWdBallDQ0NBRElBRTJBZ1xcXG5RZ0F5QUFOZ0lBSUFNUXh3MEFDeWdCQVg4akFFRVFheUlESkFBZ0F5QUNOZ0lJSUFNZ0FUWUNCQ0FESUFBMkFnQWdBeERJRFFBTEp3RUJcXFxuZndKQUlBQW9BZ1FpQVVVTkFDQUFRUWhxS0FJQUlnQkZEUUFnQVNBQVFRRVFzZ3dMQ3lZQkFuOUJBQ0VDQWtBZ0FDZ0NBQ0lESUFGTERRXFxcbkFnQXlBQUtBSUVhaUFCU3lFQ0N5QUNDeVFCQVg4akFFRVFheUlESkFBZ0F5QUJJQUlRandzZ0FDQURFT0VESUFOQkVHb2tBQXNrQVFGL1xcXG5Jd0JCRUdzaUF5UUFJQU1nQVNBQ0VKQUxJQUFnQXhEcEF5QURRUkJxSkFBTEpBRUJmeUFBSUFFUTZna2lBVUZvYWlJQ1FReHFOZ0lFSUFcXFxuQWdBa0VBSUFFYk5nSUFDeWNCQVg4Z0FDZ0NBQ0lDS0FJQUlBSW9BZ1FnQUNnQ0JDZ0NBQ0FCUVFOMGEwRjRhaERYQ3dzaUFBSkFBMEFnXFxcbkFVVU5BU0FCUVg5cUlRRWdBQkRqRENBQVFReHFJUUFNQUFzTEN5RUFBa0FnQVNBRFJ3MEFJQUFnQWlBQkVLUU5HZzhMSUFFZ0F5QUVFSVxcXG5VRkFBc2xBQUpBQWtBZ0FFR0JnSUNBZUVZTkFDQUFSUTBCSUFBZ0FSQ2FEUUFMRHdzUWx3Z0FDeWNCQVg4Q1FDQUFLQUlZRFFCQkFBOExcXFxuSUFBUTZ3UWhBU0FBSUFBb0FoaEJmMm8yQWhnZ0FRc25BUUYvQWtBZ0FDZ0NHQTBBUVFBUEN5QUFFT3dFSVFFZ0FDQUFLQUlZUVg5cU5nXFxcbklZSUFFTEl3QUNRQ0FBS0FJTURRQkJBQThMSUFBZ0FFRVFhaUFCRUtJRUlBRVF2UVZCQUVjTEpRQUNRQ0FCSUFJZ0F5QUVFSTRGSWdRTlxcXG5BQ0FBUVFBMkFnQVBDeUFBSUFFZ0JCQ09CZ3NsQUFKQUFrQWdBRUdCZ0lDQWVFWU5BQ0FBUlEwQklBQWdBUkNhRFFBTER3c1Fsd2dBQ3lcXFxuVUFBa0FDUUNBQVFZR0FnSUI0UmcwQUlBQkZEUUVnQUNBQkVKb05BQXNQQ3hDWENBQUxKUUFDUUFKQUlBQkJnWUNBZ0hoR0RRQWdBRVVOXFxcbkFTQUFJQUVRbWcwQUN3OExFSmNJQUFzbkFRRi9JQUFvQWdBaUFTQUJLQUlBSWdGQmYybzJBZ0FDUUNBQlFRRkhEUUFnQUJDUkJnc0xLZ1xcXG5BZ0FDQUJMUUFBUVFKMElnRkI4TzNBQUdvb0FnQTJBZ1FnQUNBQlFiRHV3QUJxS0FJQU5nSUFDeVVBQWtBQ1FDQUFRWUdBZ0lCNFJnMEFcXFxuSUFCRkRRRWdBQ0FCRUpvTkFBc1BDeENYQ0FBTElRQUNRQ0FCSUFOSERRQWdBQ0FDSUFFUXBBMGFEd3NnQVNBRElBUVFoUVVBQ3lVQUFrXFxcbkFDUUNBQVFZR0FnSUI0UmcwQUlBQkZEUUVnQUNBQkVKb05BQXNQQ3hDWENBQUxKUUFDUUFKQUlBQkJnWUNBZ0hoR0RRQWdBRVVOQVNBQVxcXG5JQUVRbWcwQUN3OExFSmNJQUFzb0FBSkFBa0FnQVVIOC8vLy9CMHNOQUNBQUlBRkJCQ0FDRUxBTElnRU5BUXNRMncwQUN5QUJDeVVBQWtcXFxuQUNRQ0FBUVlHQWdJQjRSZzBBSUFCRkRRRWdBQ0FCRUpvTkFBc1BDeENYQ0FBTEl3RUJmeU1BUVJCcklnRWtBQ0FCSUFBMkFnd2dBVUVNXFxcbmFoREpDU0FCUVJCcUpBQUxMZ0VCZndKQVFSQVF3UXNpQVEwQVFaaWF3UUJCSzBIVW1zRUFFSU1IQUFzZ0FFSVFOd0lFSUFBZ0FUWUNBQVxcXG5zbEFBSkFBa0FnQUVHQmdJQ0FlRVlOQUNBQVJRMEJJQUFnQVJDYURRQUxEd3NRbHdnQUN5UUFBa0FnQXlBQ1RRMEFJQU1nQWlBRUVJTUZcXFxuQUFzZ0FDQUROZ0lFSUFBZ0FUWUNBQXNsQUFKQUFrQWdBRUdCZ0lDQWVFWU5BQ0FBUlEwQklBQWdBUkNhRFFBTER3c1Fsd2dBQ3lVQUFrXFxcbkFDUUNBQVFZR0FnSUI0UmcwQUlBQkZEUUVnQUNBQkVKb05BQXNQQ3hDWENBQUxJd0VCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVVFTVxcXG5haERNQ1NBQlFSQnFKQUFMSXdBZ0FpQUNLQUlFUVg1eE5nSUVJQUFnQVVFQmNqWUNCQ0FBSUFGcUlBRTJBZ0FMSHdBZ0FDZ0NBQ0lBclVcXFxuSUFJQUNzZlNBQVFYOUtJZ0FiSUFBZ0FSRGtBUXNpQUNBQUtBSUFLQUlBS0FJQUlBQW9BZ1FvQWdBZ0FVRUNkR3RCZkdvb0FnQkdDeU1BXFxcbklBQW9BZ0FvQWdBZ0FDZ0NCQ2dDQUVFQUlBRnJRZFFBYkdwQnJIOXFFSXNIQ3lFQUlBQW9BZ0FvQWdBZ0FDZ0NCQ2dDQUVFQUlBRnJRUlxcXG5oc2FrRm9haER3REFzakFBSkFJQUVnQWlBREVLVUZJZ01OQUNBQVFRSTJBZ3dQQ3lBQUlBRWdBeENsQ0FzaUFDQUFLQUlBS0FJQUtBSUFcXFxuSUFBb0FnUW9BZ0FnQVVFQ2RHdEJmR29vQWdCR0N5Y0JBWDRnQUNrQ0FDRUJRUlFRcXdjaUFFSUFOd0lNSUFBZ0FUY0NCQ0FBUVFFMkFnXFxcbkFnQUFzaEFBSkFJQUZGRFFBZ0FDQUJJQUlRZ2dGQi93RnhEd3NnQUJDY0FrSC9BWEVMSmdBQ1FDQUFEUUJCbVA3QUFFRXlFSWNOQUFzZ1xcXG5BQ0FDSUFNZ0JDQUZJQUVvQWhBUkRnQUxLQUVCZndKQUlBQW9BZ1FpQVEwQVFZQ0F4QUFQQ3lBQUlBRkJmMm8yQWdRZ0FDZ0NBQkRJQ1FcXFxuc2xBUUYvSUFBZ0FVRUlhaWdDQURZQ0JDQUFJQUVvQWdBaUFpQUJLQUlFSUFJYk5nSUFDeVVCQVg4Z0FDQUJRUWhxS0FJQU5nSUVJQUFnXFxcbkFTZ0NBQ0lDSUFFb0FnUWdBaHMyQWdBTElBRUNmaUFBS1FNQUlnSWdBa0kvaHlJRGhTQURmU0FDUW45VklBRVE1QUVMSUFBZ0FDZ0NBQ1xcXG5nQ0FDQUJLQUlBUVFBZ0FtdEIxQUJzYWtHc2Yyb1E5QVFMSGdBZ0FDZ0NBQ2dDQUNBQktBSUFRUUFnQW10QkdHeHFRV2hxRVBNRUN5UUFcXFxuQWtBZ0FRMEFRY0NHd0FCQkt5QURFSU1IQUFzZ0FDQUNOZ0lFSUFBZ0FUWUNBQXNpQVFGL0FrQWdBQ2dDQkNBQUtBSUlJZ0pySUFGUERRXFxcbkFnQUNBQ0lBRVE4d2dMQ3lNQUlBRWdBa0dzcXNBQVFRY1FwZ29oQWlBQVFRQTZBQUFnQUNBQ1FRRnpPZ0FCQ3lBQkFYOGpBRUVRYXlJQlxcXG5KQUFnQVNBQUVKNEZJQUVRNHd3Z0FVRVFhaVFBQ3lJQkFYOENRQ0FBS0FJRUlBQW9BZ2dpQW1zZ0FVOE5BQ0FBSUFJZ0FSRDVDQXNMSWdcXFxuRUJmd0pBSUFBb0FnUWdBQ2dDQ0NJQ2F5QUJUdzBBSUFBZ0FpQUJFUHdJQ3dzaUFRRi9JQUFnQUNnQ0FDSUJRUUVnQVJzMkFnQUNRQ0FCXFxcblJRMEFJQUFRd0FRTEN5QUFBa0FnQVEwQUlBQWdBellDQkNBQUlBSTJBZ0FQQ3lBQ0lBTVFtZzBBQ3lJQkFYOENRQ0FBS0FJRUlBQW9BZ1xcXG5naUFtc2dBVThOQUNBQUlBSWdBUkNCQ1FzTElBRUJmMEVBSVFRQ1FDQUJJQU5IRFFBZ0FDQUNJQUVRb2cxRklRUUxJQVFMSWdFQmZ3SkFcXFxuSUFBb0FnUWdBQ2dDQ0NJQ2F5QUJUdzBBSUFBZ0FpQUJFSWdKQ3dza0FBSkFJQUFOQUVHWS9zQUFRVElRaHcwQUN5QUFJQUlnQXlBRUlBXFxcbkVvQWhBUkN3QUxKQUFDUUNBQURRQkJtUDdBQUVFeUVJY05BQXNnQUNBQ0lBTWdCQ0FCS0FJUUVRd0FDeVFBQWtBZ0FBMEFRWmord0FCQlxcXG5NaENIRFFBTElBQWdBaUFESUFRZ0FTZ0NFQkVMQUFza0FBSkFJQUFOQUVHWS9zQUFRVElRaHcwQUN5QUFJQUlnQXlBRUlBRW9BaEFSREFcXFxuQUxKQUFDUUNBQURRQkJtUDdBQUVFeUVJY05BQXNnQUNBQ0lBTWdCQ0FCS0FJUUVRc0FDeVFBQWtBZ0FBMEFRWmord0FCQk1oQ0hEUUFMXFxcbklBQWdBaUFESUFRZ0FTZ0NFQkVqQUFza0FBSkFJQUFOQUVHWS9zQUFRVElRaHcwQUN5QUFJQUlnQXlBRUlBRW9BaEFSS0FBTEpBQUNRQ1xcXG5BQURRQkJtUDdBQUVFeUVJY05BQXNnQUNBQ0lBTWdCQ0FCS0FJUUVTb0FDeUFCQVg5QkFDRUVBa0FnQVNBRFJ3MEFJQUFnQWlBQkVLSU5cXFxuUlNFRUN5QUVDeVFBQWtBZ0FRMEFRY0NDd1FCQkt5QURFSU1IQUFzZ0FDQUNOZ0lFSUFBZ0FUWUNBQXNpQVFGL0FrQWdBQ2dDQkNBQUtBXFxcbklJSWdKcklBRlBEUUFnQUNBQ0lBRVFpUWtMQ3lVQUlBRWdBQzBBQUVFQ2RDSUFRYXlWd1FCcUtBSUFJQUJCaEpYQkFHb29BZ0FRL3dvTFxcXG5JQUVCZjBFQUlRUUNRQ0FCSUFOSERRQWdBQ0FDSUFFUW9nMUZJUVFMSUFRTElnRUJmd0pBSUFBb0FnUWdBQ2dDQ0NJQ2F5QUJUdzBBSUFcXFxuQWdBaUFCRUpBSkN3c2lBUUYvQWtBZ0FDZ0NCQ0FBS0FJSUlnSnJJQUZQRFFBZ0FDQUNJQUVRa1FrTEN5SUJBWDhDUUNBQUtBSUVJQUFvXFxcbkFnZ2lBbXNnQVU4TkFDQUFJQUlnQVJDVUNRc0xJZ0VCZndKQUlBQW9BZ1FnQUNnQ0NDSUNheUFCVHcwQUlBQWdBaUFCRUpjSkN3c2dBUVxcXG5GL1FRQWhCQUpBSUFFZ0EwY05BQ0FBSUFJZ0FSQ2lEVVVoQkFzZ0JBc2dBUUYvUVFBaEJBSkFJQUVnQTBjTkFDQUFJQUlnQVJDaURVVWhcXFxuQkFzZ0JBc2xBQ0FCSUFBdEFBQkJBblFpQUVHUStNMEFhaWdDQUNBQVFlejJ6UUJxS0FJQUVQOEtDeDRBSUFBZ0FVRURjallDQkNBQUlBXFxcbkZxSWdFZ0FTZ0NCRUVCY2pZQ0JBc2dBQUpBSUFFTkFDQUFJQU0yQWdRZ0FDQUNOZ0lBRHdzZ0FpQURFSm9OQUFzZ0FRRi9Ba0FnQUNnQ1xcXG5CQ0lCUlEwQUlBQW9BZ0JCQkNBQlFReHNFS1FMQ3dzY0FBSkFJQUFwQXdCQ0FGRU5BQ0FBUVFocUR3c2dBQ0FCRUpZRkN4NEFJQUFvQWdcXFxuQW9BZ0FnQUNnQ0JDZ0NBQ0FCUVFOMGEwRjRhaENEQ3dzZ0FRRi9Ba0FnQUNnQ0JDSUJSUTBBSUFBb0FnQkJDQ0FCUVFkMEVLUUxDd3NoXFxcbkFRRi9Ba0FnQUNnQ0JDSUJSUTBBSUFBb0FnQkJCQ0FCUWRnQWJCQ2tDd3NMSUFFQmZ3SkFJQUFvQWdRaUFVVU5BQ0FBS0FJQVFRUWdBVVxcXG5FY2JCQ2tDd3NMSWdFQmZpQUFLUUlBSVFKQkRFRUVFS1VISWdBZ0FqY0NCQ0FBSUFFMkFnQWdBQXNnQVFGL0FrQWdBQ2dDQkNJQlJRMEFcXFxuSUFBb0FnQWdBVUVEZEVFRUVMSU1Dd3NlQUNBQUVJSU5JQUJCREdvUWdnMGdBRUVZYWlJQUVPNEhJQUFRbHdjTElBRUJmd0pBSUFBb0FnXFxcblFpQVVVTkFDQUFLQUlBUVFRZ0FVRURkQkMzQ3dzTElnQUNRQ0FBRFFCQm1QN0FBRUV5RUljTkFBc2dBQ0FDSUFNZ0FTZ0NFQkVJQUFzZ1xcXG5BUUYvQWtBZ0FDZ0NCQ0lCUlEwQUlBQW9BZ0JCQkNBQlFRTjBFTDhMQ3dzZ0FRRi9Ba0FnQUNnQ0JDSUJSUTBBSUFBb0FnQkJCQ0FCUVFcXFxuSjBFTDhMQ3dzZkFDQUFFTWdKSWdCQmdJREVBRWNnQUVIZi8vOEFjVUcvZjJwQkdrbHhDeUFCQVg4Q1FDQUFLQUlFSWdGRkRRQWdBQ2dDXFxcbkFFRUVJQUZCQW5RUXd3c0xDeUFCQVg4Q1FDQUFLQUlFSWdGRkRRQWdBQ2dDQUVFRUlBRkJBM1FRd3dzTEN5QUJBWDhDUUNBQUtBSUVJZ1xcXG5GRkRRQWdBQ2dDQUVFRUlBRkJBM1FReEFzTEN5QUJBWDhDUUNBQVFRUnFLQUlBSWdGRkRRQWdBQ2dDQUNBQlFRRVFzZ3dMQ3lBQkFYOENcXFxuUUNBQVFRUnFLQUlBSWdGRkRRQWdBQ2dDQUNBQlFRRVFzZ3dMQ3lNQUFrQWdBQzBBQUEwQUlBRkJ4S0hPQUVFRkVGTVBDeUFCUWNDaHpnXFxcbkJCQkJCVEN4d0FBa0FnQUMwQUFBMEFJQUF0QUFFUEN5QUFRUVJxRUs4SlFRQUxHd0FnQUNnQ0FDZ0NBQ0FCS0FJQUlBSkJBM1JyUVhocVxcXG5FTmNFQ3hzQUlBQW9BZ0FvQWdBZ0FTZ0NBQ0FDUVFKMGEwRjhhaENpQkFzYkFDQUFLQUlBSUFBb0FnUW9BZ0FnQVVFQ2RHdEJmR29Ra0FcXFxuY0xHd0FnQUNnQ0FDQUFLQUlFS0FJQUlBRkJBblJyUVh4cUVNY0hDeHNBSUFBb0FnQWdBQ2dDQkNnQ0FDQUJRUUowYTBGOGFoQ1BCd3NoXFxcbkFRRi9JQUVvQWdBaEFpQUJRUUEyQWdBZ0FDQUNJQUVvQWdRUW9Rc1FrUVFMR3dBZ0FDZ0NBQ0FBS0FJRUtBSUFJQUZCQW5SclFYeHFFSlxcXG5BSEN4c0FJQUFvQWdBZ0FDZ0NCQ2dDQUNBQlFRSjBhMEY4YWhESEJ3c2JBQ0FBS0FJQUlBQW9BZ1FvQWdBZ0FVRUNkR3RCZkdvUWp3Y0xcXFxuSVFBQ1FDQUFLQUlFRFFCQndJYkFBRUVyUWVDandBQVFnd2NBQ3lBQVFRUnFDeDBBQWtBZ0FrVU5BRUVBTFFEeHBrOGFJQUlnQVJEM0N5XFxcbkVCQ3lBQkN4b0FBa0FnQUNnQ0FFVU5BQ0FBUVFScUR3c2dBQ0FCRUtFREN5RUFBa0FnQVNnQ0FBMEFFSWNPQUFzZ0FFSFE0TUFBTmdJRVxcXG5JQUFnQVRZQ0FBc2dBQUpBSUFBTkFFR1kvc0FBUVRJUWh3MEFDeUFBSUFJZ0FTZ0NFQkVHQUFzZEFDQUFRUWhxSUFFUXdRMDJBZ0FnQUVcXFxuRUFOZ0lFSUFBZ0FUWUNBQXNkQVFGL1FRQWhBZ0pBSUFGQkFrY05BQ0FBUVFJUTVRUWhBZ3NnQWdzaEFBSkFJQUVvQWdBTkFCQ0hEZ0FMXFxcbklBQkJrSi9CQURZQ0JDQUFJQUUyQWdBTElRQUNRQ0FCS0FJQURRQVFodzRBQ3lBQVFmVFl6UUEyQWdRZ0FDQUJOZ0lBQ3h3QUlBQWdBU1xcXG5rQ0FEY0NBQ0FBUVFocUlBRkJDR29vQWdBMkFnQUxHUUFnQUVFUWFoRFZDeUFBUVNCcUlnQVFxQWNnQUJDMENnc1pBQ0FBUVJCcUVOVUxcXFxuSUFCQklHb2lBQkRoQnlBQUVMVUtDeGtBSUFCQkVHb1ExUXNnQUVFZ2FpSUFFS1lISUFBUXN3b0xHd0FDUUNBQUlBRVF0QVVpQVEwQUlBXFxcbkFnQWhEY0JTRUJDeUFCQ3gwQkFYOENRQ0FBS0FJQUlnRVF0d1FpQUEwQUlBRVFVaUVBQ3lBQUN4MEJBWDhDUUNBQUtBSUFJZ0VRdXdRaVxcXG5BQTBBSUFFUVZpRUFDeUFBQ3hzQUFrQWdBQ2dDQ0EwQVFRQkJBQ0FCRUlFRkFBc2dBQ2dDQUFzWkFDQUFJQUVnQVVFUWFpQUNJQU1RbUFcXFxuRWdBaUFERU93SkN4b0FJQUFnQVRZQ0NDQUFRUUEyQWdBZ0FFRU1haUFDT2dBQUN4MEJBWDhDUUNBQUtBSUVJZ0ZGRFFBZ0FDZ0NBRUVCXFxcbklBRVFzZ3NMQ3g0QUFrQWdBQ2dDQ0EwQVFRQkJBRUhFNjhBQUVJRUZBQXNnQUNnQ0FBc2RBUUYvQWtBZ0FDZ0NCQ0lCUlEwQUlBQW9BZ1xcXG5BZ0FVRUJFTElNQ3dzZEFRRi9Ba0FnQUNnQ0JDSUJSUTBBSUFBb0FnQkJBU0FCRUxzTEN3c2FBQ0FBSUFFMkFnUWdBRUVBTmdJQUlBQkJcXFxuQ0dvZ0FqWUNBQXNkQVFGL0FrQWdBQ2dDQkNJQlJRMEFJQUFvQWdBZ0FVRUJFTElNQ3dzZEFRRi9Ba0FnQUNnQ0JDSUJSUTBBSUFBb0FnXFxcbkJCQVNBQkVNUUxDd3NjQUNBQUtBSUFJZ0FvQWdBZ0FTQUFRUVJxS0FJQUtBSU1FUVlBQ3hnQUFrQWdBVUVKU1EwQUlBRWdBQkMrQVE4TFxcXG5JQUFRTGdzY0FRRi9Ba0FnQUNnQ0VDSUJEUUFnQUVFVWFpZ0NBQ0VCQ3lBQkN4b0FJQUFnQVNBQ0lBTW9BZ0FnQXlnQ0NCRHdBU0FERU9cXFxuTU1DeGNBQWtBZ0FDZ0NBRUVDUmcwQUlBQkJGR29RNHd3TEN4c0JBWDlCQ0VFRUVLVUhJZ0lnQURvQUJDQUNJQUUyQWdBZ0Fnc2JBUUYvXFxcblFRaEJCQkNsQnlJQ0lBQTJBZ1FnQWlBQk5nSUFJQUlMR0FBQ1FDQUFLQUlnUVFKR0RRQWdBQ0FCRUxZR0N5QUFDeGdBQWtBZ0FDZ0NJRVxcXG5FQ1JnMEFJQUFnQVJDMUJnc2dBQXNYQUNBQUVKd0NRZjhCY1NBQUlBRVE4d0ZCL3dGeFJ3c2JBQ0FCRUtvSElBQWdBU2dDQ0RZQ0JDQUFcXFxuSUFFb0FnQTJBZ0FMR3dBZ0FSQ3NCeUFBSUFFb0FnZzJBZ1FnQUNBQktBSUFOZ0lBQ3hzQUlBRVFyUWNnQUNBQktBSUlOZ0lFSUFBZ0FTXFxcbmdDQURZQ0FBc1dBQ0FBSUFFZ0FrRURkR28yQWdRZ0FDQUJOZ0lBQ3hzQUlBRVF0QWNnQUNBQktBSUlOZ0lFSUFBZ0FTZ0NBRFlDQUFzYlxcXG5BQ0FCRUxVSElBQWdBU2dDQ0RZQ0JDQUFJQUVvQWdBMkFnQUxHZ0FDUUNBQUtBSUVRWUNBeEFCSERRQWdBRUVJYWhDK0Nnc0xHZ0FDUUNcXFxuQUFLQUlJUVlDQXhBQkhEUUFnQUVFTWFoQy9DZ3NMSVFFQmZ3SkFFS1VDSWdBTkFFSC80YzBBUWQ0QVFmeml6UUFRaWdZQUN5QUFDeHNCXFxcbkFYOGdBU0FBUVFBb0FyeW5UeUlDUVlzQ0lBSWJFUVVBQUFzU0FFRUFRUmtnQUVFQmRtc2dBRUVmUmhzTEZnQWdBQ0FCUVFGeU5nSUVJQVxcXG5BZ0FXb2dBVFlDQUFzY0FDQUJLQUlVUWR5WnpnQkJEaUFCUVJocUtBSUFLQUlNRVFrQUN4a0FJQUFvQWhRZ0FTQUNJQUJCR0dvb0FnQW9cXFxuQWd3UkNRQUxIQUFnQVNnQ0ZFR2t1YzRBUVFVZ0FVRVlhaWdDQUNnQ0RCRUpBQXNjQUNBQktBSVVRZmlsendCQkN5QUJRUmhxS0FJQUtBXFxcbklNRVFrQUN4a0FJQUFvQWdBZ0FDZ0NDQ0FCS0FJQUlBRW9BZ2dRcGdvTEdRQWdBQ2dDQUNBQUtBSUVJQUVvQWdBZ0FTZ0NCQkNtQ2dzV1xcXG5BQUpBSUFBb0FnQWlBRUdFQVVrTkFDQUFFQUVMQ3hjQUFrQWdBQ2dDQkVVTkFDQUFFTW9FSUFBUXZBZ0xDeFVBQWtBZ0FDZ0NBRVVOQUNcXFxuQUFRUVJxRUlRTEN3c1hBQUpBSUFBb0FnUkZEUUFnQUJETEJDQUFFTDhJQ3dzWkFRRi9JQUFvQWdBZ0FDZ0NDQkFESVFFZ0FCRGpEQ0FCXFxcbkN4VUFJQUFnQVNBQlFSQnFJQUlROUFRZ0FoQ0VDZ3NXQUNBQUlBQW9BZ0FnQVNnQ0FHdEIxQUJ0RUlrRUN4VUFJQUFnQUNnQ0FDQUJLQVxcXG5JQWEwRVliUkNKQkFzV0FBSkFJQUFvQWdBaUFFR0VBVWtOQUNBQUVBRUxDeGNBSUFBZ0FqWUNDQ0FBSUFJMkFnUWdBQ0FCTmdJQUN4b0FcXFxuSUFCQkFEb0FEQ0FBUWdJM0FnUWdBRUdFMHNBQU5nSUFDeGNBSUFCQkFEWUNDQ0FBSUFJMkFnUWdBQ0FCTmdJQUN4Y0FJQUJCQURZQ0NDXFxcbkFBSUFJMkFnUWdBQ0FCTmdJQUN4VUFBa0FnQUNnQ0FFVU5BQ0FBUVFScUVJVU1Dd3NaQUNBQUtBSUFJQUFvQWdSQnBlM0FBRUVFRUtZS1xcXG5RUUZ6Q3hjQUFrQWdBS2NOQUVIbzlzQUFRU3NnQVJDREJ3QUxDeGNBSUFBZ0FqWUNDQ0FBSUFJMkFnUWdBQ0FCTmdJQUN4UUFJQUFnQWpcXFxua0RDQ0FBSUFGQkFFZXROd01BQ3hZQUFrQWdBQ2dDQUNJQVFZUUJTUTBBSUFBUUFRc0xHd0FnQUNnQ0FDSUFLQUlBSUFBb0FnaEIySXZCXFxcbkFFRUpFS1lLQ3hrQUlBQW9BZ0FnQUNnQ0JDQUJLQUlBSUFFb0FnUVFwZ29MR1FBZ0FDZ0NBQ0FBS0FJSVFZQ0t3UUJCQWhDbUNrRUJjd1xcXG5zWEFDQUFRUUEyQWdnZ0FFRUFOZ0lBSUFCQkFEWUNFQXNXQUFKQUlBQW9BZ2dnQVVrTkFDQUFJQUUyQWdnTEN4QUFJQUFnQVdwQmYycEJcXFxuQUNBQmEzRUxGZ0FnQVNnQ0ZDQUJRUmhxS0FJQUlBQW9BZ0FRYlFzWEFDQUFLQUlVSUFFZ0FFRVlhaWdDQUNnQ0VCRUdBQXNTQUNBQVFSXFxcbkJxRUlVTElBQkJNR29RNHd3TEZRQWdBU2dDQUNBQ0lBTVFpQXdnQUVFRU9nQUFDeFlBQWtBZ0FBMEFRWWlEd0FCQkZSQ0hEUUFMSUFFTFxcXG5GZ0FnQUNBQktBSUFJQUVvQWdnUThnSWdBUkRqREFzWUFBSkFJQUFvQWdoQmdaVHIzQU5IRFFBZ0FCRGdCd3NMRXdBQ1FDQUNSUTBBSUFcXFxuQWdBaUFCRUxJTUN3c1lBQUpBSUFBb0FnaEJnSlRyM0FOR0RRQWdBQkNmQ3dzTEZBQWdBU0FBS0FJVUlBQkJIR29vQWdBUWdBZ0xFd0FnXFxcbkFFRUVhaERqRENBQVFSQkJCQkN5REFzVEFDQUFRUVJxRU9BSElBQkJERUVFRUxJTUN4TUFJQUJCQkdvUXJ3a2dBRUVJUVFRUXNnd0xFd1xcXG5BZ0FFRUVhaERqRENBQVFSaEJCQkN5REFzWEFDQUFRUVJxUVFBZ0FVTGlydk8ra3FxMDRWVlJHd3NZQUNBQVFRUnFRUUFnQVVMTnVjREVcXFxudGZ5bjFzZ0FVUnNMRndBZ0FFRUVha0VBSUFGQ2xxcXE3c3UxcjZBaFVSc0xHQUFnQUVFRWFrRUFJQUZDMis3ejZkZmh3dmlzZjFFYkN4XFxcbmNBSUFCQkJHcEJBQ0FCUXJPcXJwcXQzKy95TkZFYkN4TUJBWDhnQUNBQklBSWdBeEJiSVFRZ0JBOExGQUFnQUNBQ0lBTVFBellDQkNBQVxcXG5RUUEyQWdBTEV3QUNRQ0FDUlEwQUlBQWdBaUFCRUxJTUN3c1pBUUYvQWtCQkFDZ0NnS2RQSWdBTkFCQ1dCeUVBQ3lBQUN4TUFBMEFnQUJcXFxuQ2tCa0gvQVhGQkFrY05BQXNMRXdBQ1FDQUNSUTBBSUFBZ0FpQUJFTElNQ3dzVkFDQUFLQUlBSWdBb0FnQWdBQ2dDQ0NBQkVGVUxFd0FDXFxcblFDQUNSUTBBSUFBZ0FpQUJFTElNQ3dzVEFDQUFJQUVnQW1vMkFnUWdBQ0FCTmdJQUN4TUFJQUFnQWtFRGREWUNCQ0FBSUFFMkFnQUxFd1xcXG5BQ1FDQUNSUTBBSUFBZ0FpQUJFTElNQ3dzVEFBSkFJQUpGRFFBZ0FDQUNJQUVRc2d3TEN4TUFBa0FnQVVVTkFDQUFJQUZCQkJDeURBc0xcXFxuRmdBZ0FDZ0NBQ0lBS0FJQUlBQW9BZ2dnQVJDY0RRc1VBQUpBSUFBdEFBQU5BQ0FBUVFScUVJb05Dd3NUQUFKQUlBSkZEUUFnQUNBQ0lBXFxcbkVRc2d3TEN4UUFJQUFvQWdBZ0FDZ0NCRUVEZEVFRUVMSU1DeFFBUVFBdEFQR21UeG9nQUVFRGRFRUVFUGNMQ3hrQUFrQWdBQTBBUVppYVxcXG53UUJCSzBHTW9jRUFFSU1IQUFzTEV3QUNRQ0FDUlEwQUlBQWdBaUFCRUxJTUN3c1RBQUpBSUFKRkRRQWdBQ0FDSUFFUXNnd0xDeE1BSUFcXFxuQkJCR29RNXdvZ0FFRVFRUVFRc2d3TEZnQWdBRUdvM3MwQU5nSUVJQUFnQVVFRWFqWUNBQXNZQUNBQVFRUnFRUUFnQVVLeWdwcnVtZGJCXFxcbnJxNS9VUnNMRHdBZ0FFRUJkQ0lBUVFBZ0FHdHlDeFlBSUFBZ0FTZ0NDRFlDQkNBQUlBRW9BZ0EyQWdBTEZRQWdBU0FBS0FJQUlnQW9BZ1xcXG5BZ0FDZ0NCQkJUQ3hNQUlBRW9BaFFnQVVFWWFpZ0NBQ0FBRUcwTEVnQUNRQ0FBS0FJQVJRMEFJQUFRNHd3TEN4SUFBa0FnQUNnQ0FFVU5cXFxuQUNBQUVONEhDd3NRQUNBQUlBRWdBU0FCSUFFZ0FSQXhDeEFBSUFBZ0FTQUJJQUVnQVNBQkVETUxFZ0FDUUNBQUtBSUFSUTBBSUFBUXJ3XFxcbmtMQ3c4QUFrQWdBRVVOQUE4TEVJZ05BQXNTQUFKQUlBQW9BZ0JGRFFBZ0FCRG9Dd3NMRWdBQ1FDQUFLQUlRUlEwQUlBQVEyQW9MQ3hJQVxcXG5Ba0FnQUNnQ0VFVU5BQ0FBRU5rS0N3c1NBQUpBSUFBb0FnUkZEUUFnQUJEM0RBc0xFZ0FDUUNBQUtBSVFSUTBBSUFBUTJnb0xDeE1BSUFcXFxuQWdBU0FDS0FJQUlBSW9BZ1FRcGdvTEVBQWdBQ0FCSUFFZ0FTQUJJQUVRTndzU0FBSkFJQUFvQWdSRkRRQWdBQkM5Q0FzTEVnQUNRQ0FBXFxcbktBSUVSUTBBSUFBUXZnZ0xDeElBQWtBZ0FDZ0NBRVVOQUNBQUVQQUpDd3NTQUFKQUlBQW9BZ0JGRFFBZ0FCQ0NEUXNMRXdBZ0FDQUJJQVxcXG5Jb0FnQWdBaWdDQ0JDbUNnc1RBQ0FBS0FJQUlBRW9BZ0FnQWlnQ0FCQWZDeElBQWtBZ0FDZ0NBRVVOQUNBQUVJb05Dd3NVQUNBQUtBSUFcXFxuSUFFZ0FDZ0NCQ2dDRUJFR0FBc1NBQUpBSUFBb0FnQkZEUUFnQUJEK0NRc0xGQUFnQUNnQ0FDSUFJQUFvQWdBb0FnQVJBZ0FMRkFBZ0FDXFxcbmdDQUNBQklBQW9BZ1FvQWd3UkJnQUxEd0FnQUNBQklBSWdBeUFFRUVNQUN3OEFJQUFRMkFvZ0FFRXdhaERhQ2dzUkFDQUFJQUVvQWdBZ1xcXG5BU2dDQ0JEeUFnc1JBQ0FBS0FJQUlBQW9BZ2dnQVJDY0RRc1BBQ0FBRU9NTUlBQkJER29RNHd3TEVRQWdBQ2dDQUVFQklBQW9BZ1FRcEFcXFxuc0xEd0FnQUJEakRDQUFRU0JxRU9NTUN4RUFJQUVnQUNnQ0FDQUFLQUlJRU5RSUN4RUFJQUFvQWdBZ0FDZ0NDQ0FCRU9JQkN4TUFJQUJCXFxcbktEWUNCQ0FBUWNpTHdBQTJBZ0FMRXdBZ0FFRW9OZ0lFSUFCQnlJdkFBRFlDQUFzUkFDQUJJQUFvQWdBZ0FDZ0NDQkNBQ0FzVEFDQUFRWVxcXG5DV3dBQTJBZ1FnQUNBQk5nSUFDeE1BSUFCQnZKYkFBRFlDQkNBQUlBRTJBZ0FMRXdBZ0FFSDRsc0FBTmdJRUlBQWdBVFlDQUFzVEFDQUFcXFxuUWJTWHdBQTJBZ1FnQUNBQk5nSUFDeE1BSUFCQjhKZkFBRFlDQkNBQUlBRTJBZ0FMRGdBZ0FDQUJJQUlRMmdoQkFFY0xFUUFnQUVFUWFrXFxcbkdBb3NBQVFRZ1E5UXNMRUFFQmZ5QUFJQUVRNlFvaEFpQUNEd3NRQVFGL0lBQWdBUkRoQmlFQ0lBSVBDeEVBSUFBb0FnQWdBQ2dDQkNBQlxcXG5FTThNQ3c4QUlBQW9BZ0FnQVJDSEFocEJBQXNRQUNBQUtBSUFJQUVnQWhEOEMwRUFDdzRBSUFBZ0FTQUJJQUpxRVBjSUN4RUFJQUFvQWdcXFxuQWdBQ2dDQkNBQkVNOE1DeEVBSUFBb0FnQWlBQkN6Q1NBQUVQd01DeE1BSUFCQktEWUNCQ0FBUVpDendBQTJBZ0FMRUFBZ0FDZ0NBQ0FCXFxcbklBSVFnUXhCQUFzT0FDQUFJQUVnQVNBQ2FoRDZDQXNRQUNBQUtBSUFJQUFvQWdnZ0FSQlZDdzhBSUFBZ0FDZ0NDRUVCYWpZQ0NBc1FBQ1xcXG5BQVFRRTZBQVFnQUNBQk5nSUFDeE1BUVFCQkFDZ0MvS1pQUVg5cU5nTDhwazhMRGdBZ0FDQUJJQUVnQW1vUWdBa0xFUUFnQUNnQ0FDQUFcXFxuS0FJRUlBRVFuQTBMRGdBZ0FDQUJJQUVnQW1vUWhna0xFQUFnQUNBQ05nSUVJQUFnQVRZQ0FBc1FBQ0FBSUFNMkFnUWdBQ0FCTmdJQUN4XFxcbkFBSUFBb0FnQWdBU2dDQUNBQ0VDZ0xFUUJCQUMwQThhWlBHaUFCSUFBUTl3c0xFUUFnQUNnQ0FDQUFLQUlJSUFFUW5BMExGQUJCQUNBQVxcXG5OZ0tncDA5QkFFRUJPZ0NjcDA4TEVBQWdBQ2dDQUNBQklBSVFrd3hCQUFzT0FDQUFJQUZCQTNSQkJCQ3lEQXNQQUNBQUVQWUhJQUJCREdcXFxub1E5Z2NMRndBZ0FFSFkrTVFBUVpvSFFZeUh4UUJCbWdjUWpRUUxEZ0FnQUNBQklBRWdBbW9Ra3drTERnQWdBQ0FCSUFFZ0Ftb1FsZ2tMXFxcbkVBQWdBQ2dDQUNBQUtBSUVJQUVRVlFzUkFDQUFLQUlBSUFBb0FnUWdBUkNjRFFzUkFDQUJJQUFvQWdBZ0FDZ0NCQkQvQ2dzVEFDQUFRU1xcXG5nMkFnUWdBRUhVM2MwQU5nSUFDeE1BSUFCQjVON05BRFlDQkNBQUlBRTJBZ0FMRUFBZ0FDQUNOZ0lFSUFBZ0FUWUNBQXNRQUNBQUtBSUFcXFxuSUFBb0FnZ2dBUkJWQ3hFQUlBQW9BZ0FnQUNnQ0NDQUJFSndOQ3hBQUlBQW9BZ0FnQUNnQ0JDQUJFRlVMRVFBZ0FDZ0NBQ0FBS0FJRUlBXFxcbkVRbkEwTEVBQWdBQ2dDQUNBQUtBSUlJQUVRVlFzUkFDQUFLQUlBSUFBb0FnZ2dBUkNjRFFzUUFDQUFJQUkyQWdRZ0FDQUJOZ0lBQ3hNQVxcXG5JQUJCak8vTkFEWUNCQ0FBSUFFMkFnQUxFQUFnQUVJQ053TUlJQUJDQVRjREFBc05BQ0FBTFFBRVFRSnhRUUYyQ3c4QUlBQWdBQ2dDQkVcXFxuRitjVFlDQkFzTkFDQUFLQUlFUVFOeFFRRkhDeEVBSUFBb0FnQWdBQ2dDQ0NBQkVKd05DeEFBSUFBb0FnQWdBQ2dDQ0NBQkVGVUxFd0FnXFxcbkFFRU5OZ0lFSUFCQmovM05BRFlDQUFzUUFDQUJJQUFvQWdBZ0FDZ0NCQkJUQ3cwQUlBQXRBQnhCQkhGQkFuWUxEUUFnQUMwQUhFRVFjVVxcXG5FRWRnc05BQ0FBTFFBY1FTQnhRUVYyQ3hBQUlBQWdBallDQkNBQUlBRTJBZ0FMRHdBZ0FDZ0NBQ0FBS0FJSUVPWUpDdzBBSUFBZ0FTQUNcXFxuRUlnTVFRQUxFQUFnQUNBQlFlR1p3QUJCQWhDZ0N3c01BQ0FBSUFFZ0FoRGdEUThMREFBZ0FFRUFJQUFReGd3YkN3d0FJQUJCQUNBQUVNXFxcblVNR3dzT0FDQUFJQUVnQVMwQUFSQ0dDQXNOQUNBQUtBSUFJQUVnQWhBUEN3MEFJQUFnQVNBQ0VQd0xRUUFMRGdBZ0FDZ0NBQ0FCRU1vR1xcXG5RUUFMRFFBZ0FDQUJJQUlRZ1F4QkFBc1NBRUhRNGNBQVFTWkI0T0xBQUJEYUNRQUxFZ0JCME9IQUFFRW1RYURqd0FBUTJna0FDeElBUWRcXFxuRGh3QUJCSmtIdzRzQUFFTm9KQUFzU0FFSFE0Y0FBUVNaQmdPUEFBQkRhQ1FBTEVnQkIwT0hBQUVFbVFaRGp3QUFRMmdrQUN3MEFJQUFnXFxcbkFTQUNJQU1ReXdrTERRQWdBQ0FCSUFJUWt3eEJBQXNNQUNBQUtBSUFFQlJCQVVZTERBQWdBQ2dDQUJBVFFRRkdDd3dBSUFBb0FnQVFDMFxcXG5FQlJnc01BQ0FBS0FJQUVDRkJBRWNMREFBZ0FDZ0NBQkFjUVFCSEN3d0FJQUFvQWdBUUprRUFSd3NQQUNBQUtBSUFJQUVvQWdBUW1Bc0xcXFxuRGdBZ0FDZ0NBQ0FCRU40RVFRQUxEUUFnQUNBQklBSVFrd3hCQUFzTUFDQUFJQUZCRUJDaURVVUxEd0FnQUNnQ0FDQUFLQUlFRUpBTUN3XFxcbjhBSUFBb0FnQW9BZ0FnQVJEY0Jnc1BBQ0FBS0FJQUtBSUFJQUVRM1FZTERnQWdBRUdBcUgxcVFhVFhBRWtMRGdBZ0FDQUNJQUVvQWd3UlxcXG5CZ0FMRFFBZ0FDZ0NBQ0FCSUFJUWJ3c0xBQ0FBSUFFUWlBNGFBQXNQQUNBQUtBSUFJQUF0QUFRNkFBQUxDZ0JCQUNBQWF5QUFjUXNMQUNcXFxuQUFMUUFFUVFOeFJRc01BQ0FBSUFGQkEzSTJBZ1FMRFFBZ0FDZ0NBQ0FBS0FJRWFnc09BQ0FBS0FJQUlBRVE0UUZCQUFzTUFDQUFRUXhxXFxcbklBRVE1d0lMRFFBZ0FDZ0NBQm9EZnd3QUN3c09BQ0FBTlFJQVFRRWdBUkRrQVFzT0FDQUFNUUFBUVFFZ0FSRGtBUXNPQUNBQU13RUFRUVxcXG5FZ0FSRGtBUXNOQUNBQUlBRWdBaENCQWlBQUN3MEFJQUFvQWdBZ0FTQUNFSG9MRGdBZ0FDa0RBRUVCSUFFUTVBRUxEQUFnQUNBQklBSWdcXFxuQXhCckN3c0FJQUFqQUdva0FDTUFDd3dBSUFBUXJ3d2dBQkN3Q2dzTUFDQUFFS2tPSUFBUTVBb0xDd0FnQUVFVVFRUVFzZ3dMQ3dBZ0FDXFxcbkFCRU84TkVFc0xEZ0FnQVVHc2hNQUFRUVVRL3dvTERnQWdBVUc1cXNBQVFTSVEvd29MRGdBZ0FVSG9xOEFBUVMwUS93b0xEZ0FnQVVHalxcXG5yTUFBUVNjUS93b0xDZ0FnQUJDSUF4cEJBUXNLQUNBQUVJa0RHa0VCQ3dvQUlBQkJCR29RNHd3TENnQWdBRUVFYWhEZ0J3c0tBQ0FBUVFcXFxuUnFFSzhKQ3dvQUlBQkJCR29RNHd3TERBQWdBQ0FCRVBNTkVJSUxDd3NBSUFBZ0FSRFlCRUVBQ3dzQUlBQkJDRUVFRUxJTUN3c0FJQUJCXFxcbkNFRUVFTElNQ3dzQUlBQkJFRUVFRUxJTUN3c0FJQUJCREVFRUVMSU1Dd3NBSUFCQkdFRUVFTElNQ3dzQUlBQkJCRUVJRU1rSEN3c0FJQVxcXG5BZ0FVRUFFSVVDQ3dvQUlBQWdBUkQ3Q2c4TERBQWdBQkNwRGlBQUVPUUtDd3dBSUFBUXFRNGdBQkRrQ2dzTEFDQUFRUlJCQkJDeURBc0xcXFxuQUNBQUlBRVF5Z1pCQUFzTEFDQUFJQUVnQWhDYkFRc01BQ0FBS0FJQUlBRVFpZ1FMREFBZ0FCQzBDeUFBRVBrR0N3d0FJQUFvQWdBZ0FSXFxcbkRwQWdzTUFDQUFFSzhPSUFBUTlnY0xEQUFnQUJDdERpQUFFTHNLQ3d3QUlBQW9BZ0FnQVJEYkF3c01BQ0FBS0FJQUlBRVFwUVFMQ3dBZ1xcXG5BQ2dDQUNBQkVCb0xDUUFnQUNBQkVDb0FDdzBBUVlDQXdRQkJHeENIRFFBTERnQkJtNERCQUVIUEFCQ0hEUUFMREFBZ0FCQ3ZEaUFBRVBcXFxuWUhDd3NBSUFBZ0FSRGVCRUVBQ3d3QUlBQW9BZ0FnQVJDV0RBc09BQ0FCUVlUWnpRQkJDQkQvQ2dzT0FDQUJRWmJaelFCQkVSRC9DZ3NPXFxcbkFDQUJRYlRkelFCQkF4RC9DZ3NPQUNBQlFiZmR6UUJCQXhEL0Nnc0tBQ0FBUVFScUVPY0tDd3dBSUFBb0FnQWdBUkQ5QndzTEFDQUFRUlxcXG5CQkJCQ3lEQXNLQUNBQUlBRWdBaEJsQ3dvQUlBQW9BZ1JCZUhFTENnQWdBQ2dDQkVFQmNRc0tBQ0FBS0FJTVFRRnhDd29BSUFBb0FneEJcXFxuQVhZTERBQWdBQ2dDQUNBQkVPZ0NDd29BSUFBZ0FSQ2JEUUFMQ2dBZ0FTQUFFUGtNQUFzS0FDQUNJQUFnQVJCVEN3d0FJQUFnQVNrQ0FEXFxcbmNEQUFzTUFDQUFJQUVwQWdnM0F3QUxEQUFnQUNnQ0FDQUJFT1lCQ3d3QUlBQW9BZ0FnQVJEbkFRc0xBQ0FBSUFFZ0FoQ1VBd3NMQUNBQVxcXG5JQUVnQWhDOEJnc0tBQ0FBSUFFZ0FoQmtDd3NBSUFBZ0FTQUNFT01CQ3d3QUlBQkIySmpBQUJDMkNnc01BRUc0cTg4QUlBQVFzUW9MQ1FcXFxuQWdBU0FCRU9jTUN3a0FJQUVnQVJEbURBc0pBQ0FCSUFFUWlRY0xDUUFnQVNBQkVPZ01Dd2tBSUFBZ0FSQ1FEUXNKQUNBQUlBRVFqUTBMXFxcbkNRQWdBQ0FCRUk0TkN3a0FJQUVnQVJEcERBc0pBQ0FBSUFFUWp3MExDUUFnQUVFQU5nSUFDd2tBSUFCQkFEWUNBQXNNQUNBQVFaeVl3QVxcXG5BUTdRb0xEQUFnQUVHd21NQUFFTEVKQ3d3QUlBQkJ4SmpBQUJEdUNnc01BQ0FBUWV5WXdBQVF4Z2NMQ1FBZ0FDQUJFSXdCQ3drQUlBQWdcXFxuQVJDTUFRc0pBQ0FBSUFFUWpBRUxDUUFnQUNBQkVJd0JDd2tBSUFBZ0FCRHdDZ3NKQUNBQUlBQVE3d29MQ1FBZ0FFRUFOZ0lBQ3drQUlBXFxcbkFnQVJEWUJnc0pBQ0FCSUFBUXJ3WUxEQUJCaEtmUEFDQUFFTkFLQ3dnQUlBQVF0UWtBQ3drQUlBQW9BZ0FRR3dzSUFDQUFJQUVRSFFzSlxcXG5BQ0FBS0FJQUVDSUxDUUFnQUNnQ0FCQW5Dd2tBSUFBb0FnQVFKUXNKQUNBQUlBRVFzd01MQ0FBZ0FCQzNDUUFMQ0FBZ0FCQzVDUUFMQ1FcXFxuQWdBRUVBTmdJQUN3a0FJQUFnQVJDTUFRc0tBRUVBS0FLa3EwOUZDd2tBSUFBZ0FSRFNBUXNJQUNBQUVPOERBQXNIQUNBQUlBRnFDd2NBXFxcbklBQWdBV3NMQndBZ0FFRUlhZ3NIQUNBQVFYaHFDd2NBSUFFUS93RUxCd0FnQVJEL0FRc0hBQ0FCRVA4QkN3Y0FJQUFRNHd3TEJ3QWdBQlxcXG5EakRBc0hBQ0FBRUlRTEN3Y0FJQUFRNFFvTEJ3QWdBQkNnQXdzSEFDQUFFSUlOQ3dZQUVJY09BQXNIQUNBQUVJb05Dd2NBSUFBUXp3TUxcXFxuQndBZ0FCRG5DZ3NIQUNBQUVQNEhDd1lBSUFBUVNRc0hBQ0FBS0FJTUN3Y0FJQUFvQWdnTEJ3QWdBQ2dDREFzSEFDQUFLQUlJQ3djQUlBXFxcbkF0QUJBTERBQkM3WVhybWNYKzU5QnpDdzBBUXR2dTgrblg0Y0w0ckg4TERRQkNpL1Bkc3ZYaGo3S0Nmd3NNQUVLenFxNmFyZC92OGpRTFxcXG5EUUJDN2RPWmxaL296THI2QUFzTUFFS0Q4YW5Gczd1Ymd6d0xEUUJDemJuQXhMWDhwOWJJQUFzTUFFS1dxcXJ1eTdXdm9DRUxEQUJDblpcXFxuVHp4UHViMHZNRUN3UUFJQUFMQkFCQkFBc05BRUtHc0txeXZ0N1lyS3QvQ3d3QVF1S3U4NzZTcXJUaFZRc0VBQ0FBQ3dRQVFRQUxEQUJDXFxcbndmZjU2TXlUc3RGQkN3VUFFTFlPQ3dRQUlBQUxCQUFnQUFzRUFDQUFDd1FBRUJVTEJBQVFHUXNFQUNBQUN3UUFFQ3NMREFCQ3dmZjU2TVxcXG55VHN0RkJDd1FBSUFBTERBQkN3ZmY1Nk15VHN0RkJDdzBBUXFlRzVmdkY4Y0NUZ244TERRQkNnYWJWbnNXcHc0Vytmd3NOQUVLeWdwcnVcXFxubWRiQnJxNS9DdzBBUXA3WWc4bSt1L1AzaTM4TERBQkN3ZmY1Nk15VHN0RkJDd1FBSUFBTEF3QUFDd01BQUFzRUFFRUhDd1FBUVFnTEJBXFxcbkFnQUFzRUFFRUFDd1FBUVFBTEJBQkJBQXNFQUVFQUN3UUFRUUVMQmdCQmdJQUVDdzBBUXA3WWc4bSt1L1AzaTM4TEFnQUxBZ0FMQWdBTFxcXG5BZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdcXFxuQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxDLzZtXFxcbmo0QUFBZ0JCZ0lEQUFBdURwZzloYkhObGNuVmxkV3hzYVc1MFpYSnVZV3dnWlhKeWIzSTZJR1Z1ZEdWeVpXUWdkVzV5WldGamFHRmliR1xcXG5VZ1kyOWtaWDR2TG1OaGNtZHZMM0psWjJsemRISjVMM055WXk5cGJtUmxlQzVqY21GMFpYTXVhVzh0Tm1ZeE4yUXlNbUppWVRFMU1EQXhcXFxuWmk5elpYSmtaVjlxYzI5dUxURXVNQzR4TURRdmMzSmpMMlJsTG5KekFBQUFNZ0FRQUZNQUFBQ1BCQUFBSmdBQUFESUFFQUJUQUFBQW1RXFxcblFBQUNJQUFBQVFBQUFBQUFBQUFBRUFBQUFSQUFBQUVBQUFBQUFBQUFBQkFBQUFFZ0FBQUg0dkxtTmhjbWR2TDNKbFoybHpkSEo1TDNOeVxcXG5ZeTlwYm1SbGVDNWpjbUYwWlhNdWFXOHRObVl4TjJReU1tSmlZVEUxTURBeFppOXpaWEprWlY5cWMyOXVMVEV1TUM0eE1EUXZjM0pqTDNcXFxuTmxjaTV5YzhnQUVBQlVBQUFBL2dVQUFCSUFBQURJQUJBQVZBQUFBQlFJQUFBN0FBQUF5QUFRQUZRQUFBQWhDQUFBTGdBQUFDSnVkV3hzXFxcblhIUmNjbHh1WEdaY1lseGNYQ0lBWUFFUUFBQUFBQUFUQUFBQUNBQUFBQVFBQUFBVUFBQUFGUUFBQUFBQUFBRC8vLy8vLy8vLy8yQjFiblxcXG5keVlYQmZkR2h5YjNkZ0lHWmhhV3hsWkc1aGJtOXpYM05wYm1ObFgyVndiMk5vYzJWamMxOXphVzVqWlY5bGNHOWphQUFBRUFBQUFBQUFcXFxuQUFBQkFBQUFGZ0FBQUJjQUFBQU1BQUFBQkFBQUFCZ0FBQUFYQUFBQURBQUFBQVFBQUFBWkFBQUFHQUFBQU5BQkVBQWFBQUFBR3dBQUFCXFxcbndBQUFBYUFBQUFIUUFBQUJBQUFBQUFBQUFBQVFBQUFCNEFBQUFRQUFBQUFBQUFBQUVBQUFBZkFBQUFZU0J0WVhBQUFBQ3VBUkFBRUFBQVxcXG5BSjBCRUFBUkFBQUFmaTh1WTJGeVoyOHZjbVZuYVhOMGNua3ZjM0pqTDJsdVpHVjRMbU55WVhSbGN5NXBieTAyWmpFM1pESXlZbUpoTVRcXFxuVXdNREZtTDJOdmJuTnZiR1ZmWlhKeWIzSmZjR0Z1YVdOZmFHOXZheTB3TGpFdU55OXpjbU12YkdsaUxuSnpSQUlRQUdBQUFBQ1ZBQUFBXFxcbkRnQUFBQkFBQUFBQUFBQUFBUUFBQUNBQUFBQWhBQUFBSWdBQUFHOXVaUzEwYVcxbElHbHVhWFJwWVd4cGVtRjBhVzl1SUcxaGVTQnViM1xcXG5RZ1ltVWdjR1Z5Wm05eWJXVmtJSEpsWTNWeWMybDJaV3g1ekFJUUFEZ0FBQUJQYm1ObElHbHVjM1JoYm1ObElHaGhjeUJ3Y21WMmFXOTFcXFxuYzJ4NUlHSmxaVzRnY0c5cGMyOXVaV1FBQUF3REVBQXFBQUFBWTJGc2JHVmtJR0JQY0hScGIyNDZPblZ1ZDNKaGNDZ3BZQ0J2YmlCaElHXFxcbkJPYjI1bFlDQjJZV3gxWlM5eWRYTjBZeTlsWWpJMk1qazJZalUxTm1ObFpqRXdabUkzTVROaE16aG1NMlF4Tm1JNU9EZzJNRGd3WmpJMlxcXG5MMnhwWW5KaGNua3ZjM1JrTDNOeVl5OXplVzVqTDI5dVkyVXVjbk1BYXdNUUFFd0FBQUNWQUFBQU1nQUFBR05oYm01dmRDQmhZMk5sYzNcXFxuTWdZU0JVYUhKbFlXUWdURzlqWVd3Z1UzUnZjbUZuWlNCMllXeDFaU0JrZFhKcGJtY2diM0lnWVdaMFpYSWdaR1Z6ZEhKMVkzUnBiMjRBXFxcbkFCQUFBQUFBQUFBQUFRQUFBQ01BQUFBdmNuVnpkR012WldJeU5qSTVObUkxTlRaalpXWXhNR1ppTnpFellUTTRaak5rTVRaaU9UZzROalxcXG5BNE1HWXlOaTlzYVdKeVlYSjVMM04wWkM5emNtTXZkR2h5WldGa0wyeHZZMkZzTG5KekFDQUVFQUJQQUFBQTlnQUFBQm9BQUFBWEFBQUFcXFxuREFBQUFBUUFBQUFrQUFBQUpRQUFBQ1lBQUFCaElFUnBjM0JzWVhrZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRnY21WMGRYSnVaV1FnWVc0Z1pYXFxcbkp5YjNJZ2RXNWxlSEJsWTNSbFpHeDVBQkFBQUFBQUFBQUFBUUFBQUNjQUFBQXZjblZ6ZEdNdlpXSXlOakk1Tm1JMU5UWmpaV1l4TUdaaVxcXG5OekV6WVRNNFpqTmtNVFppT1RnNE5qQTRNR1l5Tmk5c2FXSnlZWEo1TDJGc2JHOWpMM055WXk5emRISnBibWN1Y25NQTRBUVFBRXNBQUFcXFxuRGNDUUFBRGdBQUFCTUFBQUFFQUFBQUJBQUFBQ2dBQUFCdmRtVnlabXh2ZHlCcGJpQkVkWEpoZEdsdmJqbzZibVYzQUFBQVRBVVFBQmtBXFxcbkFBQXZjblZ6ZEdNdlpXSXlOakk1Tm1JMU5UWmpaV1l4TUdaaU56RXpZVE00WmpOa01UWmlPVGc0TmpBNE1HWXlOaTlzYVdKeVlYSjVMMlxcXG5OdmNtVXZjM0pqTDNScGJXVXVjbk53QlJBQVNBQUFBTW9BQUFBVkFBQUFaR1Z6WTNKcGNIUnBiMjRvS1NCcGN5QmtaWEJ5WldOaGRHVmtcXFxuT3lCMWMyVWdSR2x6Y0d4aGVXRnpjMlZ5ZEdsdmJpQm1ZV2xzWldRNklHMXBaQ0E4UFNCelpXeG1MbXhsYmlncFkyRnNiR1ZrSUdCU1pYXFxcbk4xYkhRNk9uVnVkM0poY0NncFlDQnZiaUJoYmlCZ1JYSnlZQ0IyWVd4MVpRQUFLUUFBQUFRQUFBQUVBQUFBS2dBQUFDc0FBQUFFQUFBQVxcXG5CQUFBQUN3QUFBQXdNREF4TURJd016QTBNRFV3TmpBM01EZ3dPVEV3TVRFeE1qRXpNVFF4TlRFMk1UY3hPREU1TWpBeU1USXlNak15TkRcXFxuSTFNall5TnpJNE1qa3pNRE14TXpJek16TTBNelV6TmpNM016Z3pPVFF3TkRFME1qUXpORFEwTlRRMk5EYzBPRFE1TlRBMU1UVXlOVE0xXFxcbk5EVTFOVFkxTnpVNE5UazJNRFl4TmpJMk16WTBOalUyTmpZM05qZzJPVGN3TnpFM01qY3pOelEzTlRjMk56YzNPRGM1T0RBNE1UZ3lPRFxcXG5NNE5EZzFPRFk0TnpnNE9EazVNRGt4T1RJNU16azBPVFU1TmprM09UZzVPUzl5ZFhOMFl5OWxZakkyTWprMllqVTFObU5sWmpFd1ptSTNcXFxuTVROaE16aG1NMlF4Tm1JNU9EZzJNRGd3WmpJMkwyeHBZbkpoY25rdmMzUmtMM055WXk5d1lYUm9Mbkp6QUNnSEVBQkhBQUFBOFFzQUFCXFxcbllBQUFBb0J4QUFSd0FBQVBvTEFBQWtBQUFBS0FjUUFFY0FBQUFEREFBQUhRQUFBQ2dIRUFCSEFBQUFFQXdBQUJ3QUFBQmhkSFJsYlhCMFxcXG5JSFJ2SUdwdmFXNGdhVzUwYnlCamIyeHNaV04wYVc5dUlIZHBkR2dnYkdWdUlENGdkWE5wZW1VNk9rMUJXQzl5ZFhOMFl5OWxZakkyTWpcXFxuazJZalUxTm1ObFpqRXdabUkzTVROaE16aG1NMlF4Tm1JNU9EZzJNRGd3WmpJMkwyeHBZbkpoY25rdllXeHNiMk12YzNKakwzTjBjaTV5XFxcbmN3QUFBT1VIRUFCSUFBQUFzQUFBQUJZQUFBRGxCeEFBU0FBQUFKa0FBQUFLQUFBQWFXNTJZV3hwWkNCMllXeDFaVG9nTENCbGVIQmxZM1xcXG5SbFpDQUFBRkFJRUFBUEFBQUFYd2dRQUFzQUFBQnRhWE56YVc1bklHWnBaV3hrSUdCZ2ZBZ1FBQThBQUFDTENCQUFBUUFBQUhWdWEyNXZcXFxuZDI0Z1ptbGxiR1FnWUdBc0lIUm9aWEpsSUdGeVpTQnVieUJtYVdWc1pITUFBQUNjQ0JBQUR3QUFBS3NJRUFBV0FBQUFZQ3dnWlhod1pXXFxcbk4wWldRZ25BZ1FBQThBQUFEVUNCQUFEQUFBQUdsdWRtRnNhV1FnYkdWdVozUm9JQUR3Q0JBQUR3QUFBRjhJRUFBTEFBQUFaSFZ3YkdsalxcXG5ZWFJsSUdacFpXeGtJR0FBQUFBUUNSQUFFUUFBQUlzSUVBQUJBQUFBYjNabGNtWnNiM2NnWkdWelpYSnBZV3hwZW1sdVp5QlRlWE4wWldcXFxuMVVhVzFsSUdWd2IyTm9JRzltWm5ObGRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJ2ZG1WeVpteHZkeUJrWlhObGNtbGhiR2w2XFxcbmFXNW5JRk41YzNSbGJWUnBiV1ZUZVhOMFpXMVVhVzFsSUcxMWMzUWdZbVVnYkdGMFpYSWdkR2hoYmlCVlRrbFlYMFZRVDBOSUFBQUFLd1xcXG5BQUFBUUFBQUFFQUFBQURRQUFBQ3NBQUFBRUFBQUFCQUFBQUN3QUFBQU5BQUFBeEFrUUFDMEFBQUF1QUFBQUx3QUFBREFBQUFBZEFBQUFcXFxuRndBQUFBd0FBQUFFQUFBQU1RQUFBQmNBQUFBTUFBQUFCQUFBQURJQUFBQXhBQUFBQUFvUUFETUFBQUEwQUFBQU5RQUFBRE1BQUFBMkFBXFxcbkFBTndBQUFBRUFBQUFCQUFBQUJ3QUFBRGNBQUFBQkFBQUFBUUFBQURnQUFBQUhBQUFBUEFvUUFEa0FBQUE2QUFBQU93QUFBRGtBQUFBOFxcXG5BQUFBUFFBQUFBZ0FBQUFFQUFBQURBQUFBRDBBQUFBSUFBQUFCQUFBQUQ0QUFBQU1BQUFBZUFvUUFEOEFBQUJBQUFBQVFRQUFBRUlBQUFcXFxuQTJBQUFBUXdBQUFCUUFBQUFFQUFBQVJBQUFBRU1BQUFBVUFBQUFCQUFBQUVVQUFBQkVBQUFBdEFvUUFETUFBQUJHQUFBQVJ3QUFBRE1BXFxcbkFBQTJBQUFBU0FBQUFBZ0FBQUFFQUFBQVNRQUFBRWdBQUFBSUFBQUFCQUFBQUVvQUFBQkpBQUFBOEFvUUFFc0FBQUJNQUFBQU5RQUFBRVxcXG4wQUFBQTJBQUFBVGdBQUFCQUFBQUFFQUFBQVR3QUFBRTRBQUFBUUFBQUFCQUFBQUZBQUFBQlBBQUFBTEFzUUFGRUFBQUJTQUFBQU5RQUFcXFxuQUZNQUFBQTJBQUFBVkFBQUFBd0FBQUFFQUFBQVZRQUFBRlFBQUFBTUFBQUFCQUFBQUZZQUFBQlZBQUFBYUFzUUFGY0FBQUJZQUFBQU5RXFxcbkFBQUZrQUFBQTJBQUFBRXdBQUFBZ0FBQUFFQUFBQVNRQUFBQk1BQUFBSUFBQUFCQUFBQUVvQUFBQkpBQUFBcEFzUUFFc0FBQUJhQUFBQVxcXG5OUUFBQUUwQUFBQTJBQUFBV3dBQUFCZ0FBQUFFQUFBQVhBQUFBRnNBQUFBWUFBQUFCQUFBQUYwQUFBQmNBQUFBNEFzUUFGNEFBQUJmQUFcXFxuQUFOUUFBQUdBQUFBQTJBQUFBWVFBQUFHSUFBQUJqQUFBQVpBQUFBR1VBQUFCbUFBQUFad0FBQUdnQUFBQnBBQUFBYWdBQUFHc0FBQUJzXFxcbkFBQUFiUUFBQUc0QUFBQmxBQUFBYndBQUFIQUFBQUJ4QUFBQWNnQUFBSE1BQUFCMEFBQUFkUUFBQUhZQUFBQjNBQUFBZUFBQUFINHZMbVxcXG5OaGNtZHZMM0psWjJsemRISjVMM055WXk5cGJtUmxlQzVqY21GMFpYTXVhVzh0Tm1ZeE4yUXlNbUppWVRFMU1EQXhaaTkxY213dE1pNHpcXFxuTGpFdmMzSmpMMnhwWWk1eWN3Q0FEQkFBU3dBQUFFSUtBQUFLQUFBQUNuMTdMQW82SUM5eWRYTjBZeTlsWWpJMk1qazJZalUxTm1ObFpqXFxcbkV3Wm1JM01UTmhNemhtTTJReE5tSTVPRGcyTURnd1pqSTJMMnhwWW5KaGNua3ZZMjl5WlM5emNtTXZjM1J5TDNCaGRIUmxjbTR1Y25NQVxcXG5BT01NRUFCUEFBQUF1QUVBQUNZQUFBQitMeTVqWVhKbmJ5OXlaV2RwYzNSeWVTOXpjbU12YVc1a1pYZ3VZM0poZEdWekxtbHZMVFptTVRcXFxuZGtNakppWW1FeE5UQXdNV1l2Y21sdVp5MHdMakUyTGpJd0wzTnlZeTlrYVdkbGMzUXVjbk1BQUFCRURSQUFVUUFBQVBzQUFBQUtBQUFBXFxcblRXRndJR3RsZVNCcGN5QnViM1FnWVNCemRISnBibWNnWVc1a0lHTmhibTV2ZENCaVpTQmhiaUJ2WW1wbFkzUWdhMlY1QUN3Q0VBQUZBQVxcXG5BQWZpOHVZMkZ5WjI4dmNtVm5hWE4wY25rdmMzSmpMMmx1WkdWNExtTnlZWFJsY3k1cGJ5MDJaakUzWkRJeVltSmhNVFV3TURGbUwybHVcXFxuWkdWNGJXRndMVEl1TUM0d0wzTnlZeTl0WVhBdWNuUGtEUkFBVUFBQUFMMEJBQUFhQUFBQWZpOHVZMkZ5WjI4dmNtVm5hWE4wY25rdmMzXFxcbkpqTDJsdVpHVjRMbU55WVhSbGN5NXBieTAyWmpFM1pESXlZbUpoTVRVd01ERm1MMmx1WkdWNGJXRndMVEl1TUM0d0wzTnlZeTl0WVhBdlxcXG5ZMjl5WlM1eWN3QUFBRVFPRUFCVkFBQUFLUUFBQUNNQUFBQnBibVJsZUNCdWIzUWdabTkxYm1RQVJBNFFBRlVBQUFBMkFBQUFDZ0FBQUVcXFxuUU9FQUJWQUFBQUxRRUFBREVBQUFCRURoQUFWUUFBQUNFQUFBQVBBQUFBRUFBQUFBQUFBQUFCQUFBQWVRQUFBQkFBQUFBQUFBQUFBUUFBXFxcbkFIb0FBQUFRQUFBQUFBQUFBQUVBQUFCN0FBQUFFQUFBQUFBQUFBQUJBQUFBZkFBQUFCTUFBQUFFQUFBQUJBQUFBSDBBQUFCK0FBQUFmZ1xcXG5BQUFCTUFBQUFFQUFBQUJBQUFBSDhBQUFDQUFBQUFnQUFBQUJNQUFBQUVBQUFBQkFBQUFJRUFBQUNDQUFBQWdnQUFBQk1BQUFBRUFBQUFcXFxuQkFBQUFJTUFBQUNFQUFBQWhBQUFBQk1BQUFBSUFBQUFCQUFBQUlVQUFBQ0dBQUFBRXdBQUFBZ0FBQUFFQUFBQWh3QUFBSWdBQUFBVEFBXFxcbkFBQ0FBQUFBUUFBQUNKQUFBQWlnQUFBQk1BQUFBSUFBQUFCQUFBQUlzQUFBQ01BQUFBRXdBQUFBZ0FBQUFFQUFBQWpRQUFBSTRBQUFBVFxcXG5BQUFBQ0FBQUFBUUFBQUNQQUFBQWtBQUFBQk1BQUFBSUFBQUFCQUFBQUpFQUFBQ1NBQUFBRXdBQUFBZ0FBQUFFQUFBQWt3QUFBSlFBQUFcXFxuQVRBQUFBQ0FBQUFBUUFBQUNWQUFBQWxnQUFBQk1BQUFBTUFBQUFCQUFBQUpjQUFBQ1lBQUFBRXdBQUFBd0FBQUFFQUFBQW1RQUFBSm9BXFxcbkFBQk1ZWHA1SUdsdWMzUmhibU5sSUdoaGN5QndjbVYyYVc5MWMyeDVJR0psWlc0Z2NHOXBjMjl1WldRQUFHZ1FFQUFxQUFBQWZpOHVZMlxcXG5GeVoyOHZjbVZuYVhOMGNua3ZjM0pqTDJsdVpHVjRMbU55WVhSbGN5NXBieTAyWmpFM1pESXlZbUpoTVRVd01ERm1MMjl1WTJWZlkyVnNcXFxuYkMweExqRTRMakF2YzNKakwyeHBZaTV5Y3dBQW5CQVFBRklBQUFBaEJRQUFHUUFBQUd4dlkyRjBhVzl1YUhSMGNHaDBkSEJ6Y25OZmJHXFxcbmxpTDNOeVl5OWpiMjF0YjI0dWNuTUFBQUFSRVJBQUZBQUFBQllBQUFBaEFBQUFZQUVRQUFBQUFBQmdBUkFBQUFBQUFHQUJFQUFBQUFBQVxcXG5aR0YwWVdKc2IySkViMjRuZENCcmJtOTNJR2h2ZHlCMGJ5QmpjbVZoZEdVZ1kyRmphR1VnYm1GdFpTQm1iM0lnYzJOb1pXMWxPaUJZRVJcXFxuQUFNQUFBQUdSbGJtOWZZMkZqYUdWZlpHbHlPanBqYjIxdGIyNEFBSkFSRUFBV0FBQUFrQkVRQUJZQUFBQVJFUkFBRkFBQUFDQUFBQUJmXFxcblVFOVNWSEp6WDJ4cFlpOXpjbU12WjJ4dlltRnNMbkp6QUFBQXlSRVFBQlFBQUFCaUFBQUFIQUFBQUcxbGRHRmtZWFJoTG1wemIyNXRZV1xcXG41cFptVnpkQzVxYzI5dWNuTmZiR2xpTDNOeVl5OXNiMk5oYkM1eWMyTnZiblJsYm5RdGRIbHdaVjhBQUFvU0VBQVRBQUFBMmdFQUFBWUFcXFxuQUFBS0VoQUFFd0FBQU5zQkFBQVFBQUFBQ2hJUUFCTUFBQURkQVFBQUhRQUFBR0FCRUFBQUFBQUFLUklRQUFFQUFBQUtFaEFBRXdBQUFOXFxcbjRCQUFBdUFBQUFDaElRQUJNQUFBRGVBUUFBQlFBQUFBb1NFQUFUQUFBQTZnRUFBQ1lBQUFCd2NtNWhkWGh1ZFd4amIyMHdZMjl0TVdOdlxcXG5iVEpqYjIwelkyOXROR052YlRWamIyMDJZMjl0TjJOdmJUaGpiMjA1YkhCME1HeHdkREZzY0hReWJIQjBNMnh3ZERSc2NIUTFiSEIwTm1cXFxueHdkRGRzY0hRNGJIQjBPV052Ymk1cWN5NTBjeTVxYzNndWRITjRMbTEwY3k1dGFuTXVhbk52Ymk1M1lYTnRJd0FBQUJnVEVBQUJBQUFBXFxcbllBRVFBQUFBQUFBS0VoQUFFd0FBQUxjQkFBQVpBQUFBR0JNUUFBRUFBQUFwRWhBQUFRQUFBR0FCRUFBQUFBQUFDaElRQUJNQUFBQzVBUVxcXG5BQUlnQUFBSGd0WkdWdWJ5MTNZWEp1YVc1bmVDMTBlWEJsYzJOeWFYQjBMWFI1Y0dWekFBQUFBQjBTRUFBTUFBQUFBQkVRQUFnQUFBQmtcXFxuRXhBQURnQUFBSElURUFBU0FBQUFIUklRQUF3QUFBQXZBQUFBQ2hJUUFCTUFBQUJzQWdBQUhnQUFBR0FCRUFBQUFBQUFzQk1RQUFFQUFBXFxcbkFLRWhBQUV3QUFBSElDQUFBb0FBQUFDaElRQUJNQUFBQnpBZ0FBSmdBQUFFWmhhV3hsWkNCellYWnBibWNnYkc5allXd2dZMkZqYUdVZ1xcXG5iV0Z1YVdabGMzUTZJUFFURUFBa0FBQUFaR1Z1YjE5allXTm9aVjlrYVhJNk9teHZZMkZzQUFBQUlCUVFBQlVBQUFBZ0ZCQUFGUUFBQUFcXFxub1NFQUFUQUFBQWdRSUFBQW9TRUFBVEFBQUFsQUlBQURVQUFBQUtFaEFBRXdBQUFLTUNBQUF6QUFBQVJtRnBiR1ZrSUdSbGMyVnlhV0ZzXFxcbmFYcHBibWNnYkc5allXd2dZMkZqYUdVZ2JXRnVhV1psYzNRNklBQjBGQkFBS3dBQUFHUmxibTlmWTJGamFHVmZaR2x5T2pwc2IyTmhiRFxcXG5vNmJXRnVhV1psYzNRQXFCUVFBQjhBQUFDb0ZCQUFId0FBQUFvU0VBQVRBQUFBOXdJQUFBb1NFQUFUQUFBQVlRTUFBRFlBQUFCeWMxOXNcXFxuYVdJdmMzSmpMMnhwWWk1eWN3QUFBUFFVRUFBUkFBQUF1Z0FBQURzQUFBQktVeUJGY25KdmNqb2dBQUFZRlJBQUNnQUFBR2hsWVdSbGNuXFxcbk4xY214dWIzZHpkSEoxWTNRZ1UyVnlhV0ZzYVhwbFpFTmhZMmhsWkZWeWJFMWxkR0ZrWVhSaGMzUnlkV04wSUZObGNtbGhiR2w2WldSRFxcXG5ZV05vWldSVmNteE5aWFJoWkdGMFlTQjNhWFJvSURNZ1pXeGxiV1Z1ZEhNQUFBQmJGUkFBTWdBQUFGVnliRlJ2Um1sc1pXNWhiV1ZEYjJcXFxuNTJaWEp6YVc5dVJYSnliM0pEWVc0bmRDQmpiMjUyWlhKMElIVnliQ0FvSWlJcElIUnZJR1pwYkdWdVlXMWxMZ0MwRlJBQUZBQUFBTWdWXFxcbkVBQVBBQUFBYzNSeWRXTjBJRk5sY21saGJHbDZaV1JNYjJOaGJFTmhZMmhsVFdGdWFXWmxjM1JFWVhSaFRXOWtkV3hsWm05c1pHVnljMlxcXG4xdlpIVnNaWE56ZEhKMVkzUWdVMlZ5YVdGc2FYcGxaRXh2WTJGc1EyRmphR1ZOWVc1cFptVnpkRVJoZEdFQUFHbHVkbUZzYVdRZ2RIbHdcXFxuWlRvZ0xDQmxlSEJsWTNSbFpDQUFBQUJNRmhBQURnQUFBRm9XRUFBTEFBQUFUQllRQUFBQUFBQkZjbkp2Y2dBQUFKNEFBQUFFQUFBQUJBXFxcbkFBQUo4QUFBQ2dBQUFBREFBQUFBUUFBQUNoQUFBQW9nQUFBS01BQUFCaElFUnBjM0JzWVhrZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRnY21WMFxcXG5kWEp1WldRZ1lXNGdaWEp5YjNJZ2RXNWxlSEJsWTNSbFpHeDVBS1FBQUFBQUFBQUFBUUFBQUNjQUFBQXZjblZ6ZEdNdlpXSXlOakk1Tm1cXFxuSTFOVFpqWldZeE1HWmlOekV6WVRNNFpqTmtNVFppT1RnNE5qQTRNR1l5Tmk5c2FXSnlZWEo1TDJGc2JHOWpMM055WXk5emRISnBibWN1XFxcbmNuTUErQllRQUVzQUFBRGNDUUFBRGdBQUFLVUFBQUFFQUFBQUJBQUFBS1lBQUFDbkFBQUFxQUFBQUZSeWFXVmtJSFJ2SUhOb2NtbHVheVxcXG5CMGJ5QmhJR3hoY21kbGNpQmpZWEJoWTJsMGVXd1hFQUFrQUFBQUwzSjFjM1JqTDJWaU1qWXlPVFppTlRVMlkyVm1NVEJtWWpjeE0yRXpcXFxuT0dZelpERTJZams0T0RZd09EQm1Nall2YkdsaWNtRnllUzloYkd4dll5OXpjbU12Y21GM1gzWmxZeTV5YzVnWEVBQk1BQUFBcmdFQUFBXFxcbmtBQUFBS0NsTjBZV05yT2dvS0NncGpZV3hzWldRZ1lFOXdkR2x2YmpvNmRXNTNjbUZ3S0NsZ0lHOXVJR0VnWUU1dmJtVmdJSFpoYkhWbFxcXG5BS3NBQUFBTUFBQUFCQUFBQUt3QUFBQ3RBQUFBcmdBQUFHRWdSR2x6Y0d4aGVTQnBiWEJzWlcxbGJuUmhkR2x2YmlCeVpYUjFjbTVsWkNcXFxuQmhiaUJsY25KdmNpQjFibVY0Y0dWamRHVmtiSGtBcndBQUFBQUFBQUFCQUFBQUp3QUFBQzl5ZFhOMFl5OWxZakkyTWprMllqVTFObU5sXFxcblpqRXdabUkzTVROaE16aG1NMlF4Tm1JNU9EZzJNRGd3WmpJMkwyeHBZbkpoY25rdllXeHNiMk12YzNKakwzTjBjbWx1Wnk1eWN3Q01HQlxcXG5BQVN3QUFBTndKQUFBT0FBQUFzQUFBQUFRQUFBQUVBQUFBc1FBQUFMSUFBQUN6QUFBQUwzSjFjM1JqTDJWaU1qWXlPVFppTlRVMlkyVm1cXFxuTVRCbVlqY3hNMkV6T0dZelpERTJZams0T0RZd09EQm1Nall2YkdsaWNtRnllUzlqYjNKbEwzTnlZeTl6ZEhJdmNHRjBkR1Z5Ymk1eWN3XFxcbkFBR1JBQVR3QUFBUDRGQUFBVUFBQUFBQmtRQUU4QUFBRCtCUUFBSVFBQUFBQVpFQUJQQUFBQUNnWUFBQlFBQUFBQUdSQUFUd0FBQUFvR1xcXG5BQUFoQUFBQVpHVnpZM0pwY0hScGIyNG9LU0JwY3lCa1pYQnlaV05oZEdWa095QjFjMlVnUkdsemNHeGhlUzl5ZFhOMFl5OWxZakkyTWpcXFxuazJZalUxTm1ObFpqRXdabUkzTVROaE16aG1NMlF4Tm1JNU9EZzJNRGd3WmpJMkwyeHBZbkpoY25rdlkyOXlaUzl6Y21NdmMyeHBZMlV2XFxcbmJXOWtMbkp6QUFBQXVCa1FBRTBBQUFEdkNRQUFKd0FBQURBd01ERXdNakF6TURRd05UQTJNRGN3T0RBNU1UQXhNVEV5TVRNeE5ERTFNVFxcXG5ZeE56RTRNVGt5TURJeE1qSXlNekkwTWpVeU5qSTNNamd5T1RNd016RXpNak16TXpRek5UTTJNemN6T0RNNU5EQTBNVFF5TkRNME5EUTFcXFxuTkRZME56UTRORGsxTURVeE5USTFNelUwTlRVMU5qVTNOVGcxT1RZd05qRTJNall6TmpRMk5UWTJOamMyT0RZNU56QTNNVGN5TnpNM05EXFxcbmMxTnpZM056YzROems0TURneE9ESTRNemcwT0RVNE5qZzNPRGc0T1Rrd09URTVNamt6T1RRNU5UazJPVGM1T0RrNVlYTnpaWEowYVc5dVxcXG5JR1poYVd4bFpEb2djMlZzWmk1cGMxOWphR0Z5WDJKdmRXNWtZWEo1S0c1bGQxOXNaVzRwakJnUUFFc0FBQUQvQkFBQURRQUFBRlJ5YVdcXFxuVmtJSFJ2SUhOb2NtbHVheUIwYnlCaElHeGhjbWRsY2lCallYQmhZMmwwZVNBYkVBQWtBQUFBTDNKMWMzUmpMMlZpTWpZeU9UWmlOVFUyXFxcblkyVm1NVEJtWWpjeE0yRXpPR1l6WkRFMllqazRPRFl3T0RCbU1qWXZiR2xpY21GeWVTOWhiR3h2WXk5emNtTXZjbUYzWDNabFl5NXljMFxcXG53YkVBQk1BQUFBcmdFQUFBa0FBQUFBR1JBQVR3QUFBSXNFQUFBWEFBQUFBQUFBQUFBQThEOEFBQUFBQUFBa1FBQUFBQUFBQUZsQUFBQUFcXFxuQUFCQWowQUFBQUFBQUlqRFFBQUFBQUFBYXZoQUFBQUFBSUNFTGtFQUFBQUEwQkpqUVFBQUFBQ0UxNWRCQUFBQUFHWE56VUVBQUFBZ1g2XFxcbkFDUWdBQUFPaDJTRGRDQUFBQW9wUWFiVUlBQUVEbG5EQ2lRZ0FBa0I3RXZOWkNBQUEwSnZWckRFTUFnT0EzZWNOQlF3Q2cySVZYTkhaRFxcXG5BTWhPWjIzQnEwTUFQWkZnNUZqaFEwQ010WGdkcnhWRVVPL2kxdVFhUzBTUzFVMEd6L0NBUlBaSzRjY0NMYlZFdEozWmVVTjQ2a1NSQWlcXFxuZ3NLb3NnUlRVRE1yZjByVlJGQW9UKzVISFppVVdCRWg4djV5ZkFSU0hYNXZyZ01mUkY2b3lnT1ZrK0tVWWtzQWlJNzQxZlJoZHVCYlcxXFxcbnVKTkduTWxHSXVPbXlFWURmTmpxbTlEK1JvSk54M0poUWpOSDR5QjV6L2tTYUVjYmFWZER1QmVlUjdHaEZpclR6dEpISFVxYzlJZUNCMFxcXG5pbFhNUHhLV005U09jWkdqZjZYWEpJWWFEZ3hIajFwa2g1eUJqMjFyTGNTRXg5ejFuRzd4RkpubHhEOExkclJrbkdNMVRzcFFaOFNWeWdcXFxudExNbmhMRkpjOGlob0RIbDVVbVBPc29JZmw0YlNwcGtmc1VPRzFGS3dQM2RkdEpoaFVvd2ZaVVVSN3E2U2o1dTNXeHN0UEJLenNrVWlJXFxcbmZoSkV0Qi9CbHE2UmxhUzZrOVVPSXhVSkJMRTAza1dqNWt4RXRYWUozeFRYMzVTMjI0Qkc2aDNDOU1SUFBDNU9UcFkwd1ZzUE1kWHVTWVxcXG5UQnVjY0tWMUhjOU1rV0ZtaDJseUEwMzErVC9wQTA4NFRYTDRqK1BFWW01TlIvczVEcnY5b2swWmVzalJLYjNYVForWU9rWjByQTFPWkpcXFxuL2txOGlMUWs0OXg5M1d1aTUzVGd3NWxZeHArcXhPcDBQZDk0RWM0azZSbE5SMW9xTVdUN1c1U1JPTFRFeFBFUlFPN05hdmdVOFdtUkduXFxcbnpCdTJUMXYvMWRDL291dFBtYitGNHJkRklWQi9MeWZiSlpkVlVGLzc4Rkh2L0lwUUc1MDJreFhld0ZCaVJBVDRtaFgxVUh0VkJiWUJXeVxcXG5wUmJWWERFZUY0WUZISUtqUldHWmVVVVhvMXdhdmZ2TWxSYk1GWXl3c1dBRkxIOFM2K2poczBVam11dW0xeUltbFN4MWtwQ1E5cm4xSWRcXFxuMkxsbDZhTFRVaVJPS0wraml3aFRyV0h5cm95dVBsTU1mVmZ0RnkxelUwOWNyZWhkK0tkVFk3UFlZblgyM1ZNZWNNZGRDYm9TVkNWTU9iXFxcbldMYUVkVUxwK0hvcTVDZlZSOXc1UWxyVW15VkZ6MCtXNFkzT1pVYzNHNGloNlRIRlhvUnJNVzg5dFJWYUlZWU56dlVvWlZ5aDU0MDZ2blxcXG51MVUvRXl0a3kzRHhWUTdZTlQzK3pDVldFazZEekQxQVcxYkxFTktmSmdpUlZ2NlV4a2N3U3NWV1BUcTRXYnljK2xabUpCTzQ5YUV3VjRcXFxuRHRGeVp6eW1SWDRPaWQ3dy85bVZlTXNjTDFLVDdRVis5ZE0zTzBUUVJZYXpVQWtDRmhPVmpGUWdEMGFibHZXTHNwZ0RqaTA2TllLalNnXFxcbnh0ckkyRmcxUVVoNEVmc09XY0VvTGV2cVhFTlo4WEw0cFNVMGVGbXRqM1lQTDBHdVdjd1pxbW05Nk9KWlA2QVV4T3lpRjFwUHlCbjFwNFxcXG50TldqSWRNUGxJZDRKYWZpUjhOeHNWdDFxZUxWc0ZZdHJzV29MOFdFTjlDQ0pib3pzdmxKeUtWbHVNQ2p1NVF5Mk1XNWZteEZOS25NRmJcXFxuUFNDMjZGd0Q5bHROcU9NaU5JUXJYREJKenBXZ01tRmNmTnRCdTBoL2xWeGJVaExxR3QvS1hIbHpTOUp3eXdCZFYxRGVCazMrTkYxdDVKXFxcblZJNEQxcVhjU3VYUzJzWnFCZGRScTFPRmVBMUYwU1llSUdiYUFKWHF0OFRTUkVCRUJlMXR0Z0xWVUZkRjdNRXJsNHFnYXBYbjlYNXhaVlxcXG5TTjllcjVaUUxqV05FMTlidk9SNWduQklYM0xyWFJpampINWZKN002NytVWHMxL3hYd2xyMzkzblgrMjN5MFZYMVIxZzlGS2ZpMWFsVW1cXFxuQ3hKNGN1ckU2SFlKM3hLRHBYSXIxZ0FwZFpoSFkxOG1ERC9HOGwxTUltWWZUN3l5NkpjMXhoZUgwL3ZUWElrV0hXWEk4c1F6ckdZUXcwXFxcbnMvZlR5UHRoaHdEUWVvUmRNV0twQUlTWjViUmxZdFFBNWY4ZUlwdGloQ0R2WDFQMTBHS2w2T28zcURJRlk4K2k1VVZTZnpwandZV3ZhNVxcXG5PUGNHTXlaNXRHZUxPa1kvNUFRbGhXNE5sam4yZ3A5elVzRUdUR3d2TjBRemRFWkhpek1GSVVSWGxrVnVDOFpsbVdyMlEyRERiZzk3M2pcXFxuWkVPUFE5aDFyUmhsRkhOVVR0UFlUbVhzeC9RUWhFZURaZWo1TVJWbEdiaGxZWGgrV3I0ZjdtVTlDNC80MXRNaVpnek9zcmJNaUZkbWo0XFxcbkZmNVA5cWpXYjVzTHZ1MzJMQ1pqaWRhdXFYKy9abWhrUUY1WDI2TEdmVVNpT3ZqdlJoWjRrZDdGcXljWlpuNnlTbjhSNE96R2NUZHdoWFxcXG4wNGdCYU5lVXlpd0k2elZvRFRyOU44cGxhMmhJUlA1aW5oK2hhRnJWdmZ1Rlo5Vm9zVXF0ZW1mQkNtbXZUcXlzNExoQWFWcGkxOWNZNTNcXFxuUnA4VHJORGQ4Z3FtbldSS0JvaTFUZ2FReFd5RUt1YVJScWoydDYweG1FU1dwekJsbElJT1YvYWdpa055MDA3N05xQ28yRk9BSHI2R3BNXFxcbjhLYUd3U1VmYXpCV0tQU1lkMU5ydTJzeU1YOVZpR3VxQm4vOTNtcStheXBrYjE3TEF2TnJOVDBMTm43REoyeUNESTdEWGJSZGJOSEhPSlxcXG5xNmtKSnN4dm5HUU9rMHgydzN1UGlRSXdMOWJDTnptenBXSVRKdDYwOUN5YXVwWm0zbTQ1SzdGbFNjYlhET096V090TkZ0RE1LS3dyRWhcXFxuQm02UGNpMHpIcW83YnBsbi9OOVNTbkZ1ZjRIN2wrZWNwVzdmWWZwOUlRVGJiaXg5dk82VTRoQnZkcHhyS2pvYlJXK1Vnd2ExQ0dKNmJ6XFxcbjBTSkhGRmZiQnZ6Qlp0elphYzVHOS9YTWlBdk1NWmNNODVmZEJWR2xCd1E0aWNST3NnaEhCVXFzTVZKaW01Y09tVU5KdHZjKzl3RWQwQVxcXG53U1dvSTNGV0ZFRXhMNUpZY1d0WmtmMjZ0bzV4NDlkNjNqUXl3M0hjalJrV3d2NzNjVlB4bjV0eS9pMXkxUFpEb1FlL1luS0o5SlNKeVdcXFxuNlhjcXN4K3V0N1NzMXlDMTk4YzQxT0FuUE5kbHZRTU9JMmM0RlVjZ1M5bW14ejBIVEhJcmJnb1hNRVVubXI0MWpXYzRhbVY1WWM3d3QwXFxcbkZNajIzWEYxUVhRWWVuUlZ6dEoxZEo2WTBlcUJSNnQwWS8vQ01yRU00WFE4djNOLzNVOFZkUXV2VU4vVW8wcDFaMjJTQzJXbWdIWEFDSFxcXG5kTy9zKzBkZkhLRk9MOUErcDExdjVNclg1Q0lIYU1QcUJZSGxOVWRpOU95TzdsWjRsMnUyRjZhdC9CdjNZVmZZeWlLOW56ZGxxY0w0dDJcXFxuenloM2NJUDdMVlFEWDNjbU1yMmNGR0tUZDdCKzdNT1pPc2gzWEo3bk5FQkovbmY1d2hBaHlPMHllTGp6VkNrNnFXZDRwVENxczRpVG5YXFxcbmhuWGtwd05YelNlQUgyWE14Q0d3ZDVnak4wZnhQaVBIa3hvS2d2VEExeWVUM0lranVma0taNVRYcDNDc2MwM0hsd3JJcG0vS0FSZW94WFxcXG5MWUE3Q1VaNmI2MDRZSXFMZTNwbGJDTjhOamV4ZW45SExCc0VoZVY2WGxuM0lVWG1HbnZibHpvMTY4OVFlOUk5aVFMbUE0VjdSbzByZzlcXFxuOUV1bnRNT1B1eEMydndlMThHZXA3T2hTUjg5b2NZUmtLbldYejZWTTlyaVFpUWZEZ3F3OGFyQ3NSOHgvUnp1RllOK1h6NDhaQm1yRkF2XFxcbmZUdVhHc0Jya21OOUNqMGhzQVozbUgxTWpDbGN5SlRPZmJEM21UbjlIQU4rbkhVQWlEemtOMzREa3dDcVM5MXRmdUpiUUVwUHFxSisyblxcXG5MUUhPTlUxMzZRandUa0d5b05mN3JaZ201Uk9rSi9LWkFqeXVYSWRuOHpkS3c4SDN1c2Y2REk2NFh6ek9GL2ZpOHVZMkZ5WjI4dmNtVm5cXFxuYVhOMGNua3ZjM0pqTDJsdVpHVjRMbU55WVhSbGN5NXBieTAyWmpFM1pESXlZbUpoTVRVd01ERm1MM05sY21SbFgycHpiMjR0TVM0d0xqXFxcbkV3TkM5emNtTXZaWEp5YjNJdWNuTnlaV04xY25OcGIyNGdiR2x0YVhRZ1pYaGpaV1ZrWldSMWJtVjRjR1ZqZEdWa0lHVnVaQ0J2WmlCb1xcXG5aWGdnWlhOallYQmxkSEpoYVd4cGJtY2dZMmhoY21GamRHVnljM1J5WVdsc2FXNW5JR052YlcxaGJHOXVaU0JzWldGa2FXNW5JSE4xY25cXFxuSnZaMkYwWlNCcGJpQm9aWGdnWlhOallYQmxabXh2WVhRZ2EyVjVJRzExYzNRZ1ltVWdabWx1YVhSbElDaG5iM1FnVG1GT0lHOXlJQ3N2XFxcbkxXbHVaaWxwYm5aaGJHbGtJSFpoYkhWbE9pQmxlSEJsWTNSbFpDQnJaWGtnZEc4Z1ltVWdZU0J1ZFcxaVpYSWdhVzRnY1hWdmRHVnphMlxcXG5WNUlHMTFjM1FnWW1VZ1lTQnpkSEpwYm1kamIyNTBjbTlzSUdOb1lYSmhZM1JsY2lBb1hIVXdNREF3TFZ4MU1EQXhSaWtnWm05MWJtUWdcXFxuZDJocGJHVWdjR0Z5YzJsdVp5QmhJSE4wY21sdVoybHVkbUZzYVdRZ2RXNXBZMjlrWlNCamIyUmxJSEJ2YVc1MGJuVnRZbVZ5SUc5MWRDXFxcbkJ2WmlCeVlXNW5aV2x1ZG1Gc2FXUWdiblZ0WW1WeWFXNTJZV3hwWkNCbGMyTmhjR1ZsZUhCbFkzUmxaQ0JnSW1CbGVIQmxZM1JsWkNCMlxcXG5ZV3gxWldWNGNHVmpkR1ZrSUdsa1pXNTBaWGh3WldOMFpXUWdZQ3hnSUc5eUlHQjlZR1Y0Y0dWamRHVmtJR0FzWUNCdmNpQmdYV0JsZUhcXFxuQmxZM1JsWkNCZ09tQkZUMFlnZDJocGJHVWdjR0Z5YzJsdVp5QmhJSFpoYkhWbFJVOUdJSGRvYVd4bElIQmhjbk5wYm1jZ1lTQnpkSEpwXFxcbmJtZEZUMFlnZDJocGJHVWdjR0Z5YzJsdVp5QmhiaUJ2WW1wbFkzUkZUMFlnZDJocGJHVWdjR0Z5YzJsdVp5QmhJR3hwYzNRZ1lYUWdiR1xcXG5sdVpTQWdZMjlzZFcxdUlBQXNHQkFBQUFBQUFPb25FQUFKQUFBQTh5Y1FBQWdBQUFCRmNuSnZjaWdzSUd4cGJtVTZJQ3dnWTI5c2RXMXVcXFxuT2lBcEFBQUFGQ2dRQUFZQUFBQWFLQkFBQ0FBQUFDSW9FQUFLQUFBQUxDZ1FBQUVBQUFCcGJuWmhiR2xrSUhSNWNHVTZJQ3dnWlhod1pXXFxcbk4wWldRZ0FBQUFVQ2dRQUE0QUFBQmVLQkFBQ3dBQUFHbHVkbUZzYVdRZ2RIbHdaVG9nYm5Wc2JDd2daWGh3WldOMFpXUWdBQUFBZkNnUVxcXG5BQjBBQUFCZ0pSQUFWZ0FBQU40QkFBQWVBQUFBWUNVUUFGWUFBQURpQVFBQUNRQUFBR0FsRUFCV0FBQUE2UUVBQUI0QUFBQmdKUkFBVmdcXFxuQUFBUElCQUFBbkFBQUFZQ1VRQUZZQUFBRDJBUUFBS1FBQUFEQXhNak0wTlRZM09EbGhZbU5rWldZZ0lIVjFkWFYxZFhWMVluUnVkV1p5XFxcbmRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMUFBQWlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVxcXG5BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFcXFxuQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBXFxcbkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVxcXG5BQUFBQUFBQUFBQitMeTVqWVhKbmJ5OXlaV2RwYzNSeWVTOXpjbU12YVc1a1pYZ3VZM0poZEdWekxtbHZMVFptTVRka01qSmlZbUV4TlRcXFxuQXdNV1l2YzJWeVpHVmZhbk52YmkweExqQXVNVEEwTDNOeVl5OXlaV0ZrTG5KekFBWXFFQUJWQUFBQW9RRUFBQlFBQUFBR0toQUFWUUFBXFxcbkFNWUJBQUFUQUFBQUJpb1FBRlVBQUFEVkFRQUFNQUFBQUFZcUVBQlZBQUFBeXdFQUFDa0FBQUFHS2hBQVZRQUFBTThCQUFBMEFBQUFCaVxcXG5vUUFGVUFBQUFtQWdBQUV3QUFBQVlxRUFCVkFBQUFQZ0lBQUNVQUFBQUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJcXFxuQVFFQkFRQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBXFxcbkFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVxcXG5BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFcXFxuQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJpb1FBRlVBXFxcbkFBQ21Bd0FBTHdBQUFQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vd1xcXG5BQkFnTUVCUVlIQ0FuLy8vLy8vLy8vQ2dzTURRNFAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOEtDd3dORGcvLy8vLy9cXFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXFxcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xcXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8rMEFBQUFBQUFBQUFFQUFBQzBBQUFBQUFBQUFBRUFBQURjTEJcXFxuQUF0UUFBQUxZQUFBQzNBQUFBZmk4dVkyRnlaMjh2Y21WbmFYTjBjbmt2YzNKakwybHVaR1Y0TG1OeVlYUmxjeTVwYnkwMlpqRTNaREl5XFxcblltSmhNVFV3TURGbUwyeHZaeTB3TGpRdU1Ua3ZjM0pqTDJ4cFlpNXljMnRsZVMxMllXeDFaU0J6ZFhCd2IzSjBJR2x6SUdWNGNHVnlhV1xcXG4xbGJuUmhiQ0JoYm1RZ2JYVnpkQ0JpWlNCbGJtRmliR1ZrSUhWemFXNW5JSFJvWlNCZ2EzWmZkVzV6ZEdGaWJHVmdJR1psWVhSMWNtVUFcXFxuQUFBRUxSQUFUQUFBQU1VRkFBQUpBQUFBZmk4dVkyRnlaMjh2Y21WbmFYTjBjbmt2YzNKakwybHVaR1Y0TG1OeVlYUmxjeTVwYnkwMlpqXFxcbkUzWkRJeVltSmhNVFV3TURGbUwzQmhjbXRwYm1kZmJHOTBYMk52Y21VdE1DNDVMamd2YzNKakwzQmhjbXRwYm1kZmJHOTBMbkp6dUMwUVxcXG5BR0FBQUFCckFRQUFGd0FBQUxndEVBQmdBQUFBaGdFQUFCY0FBQUJqWVd4c1pXUWdZRkpsYzNWc2REbzZkVzUzY21Gd0tDbGdJRzl1SUdcXFxuRnVJR0JGY25KZ0lIWmhiSFZsQUxnQUFBQUlBQUFBQkFBQUFMa0FBQUIrTHk1allYSm5ieTl5WldkcGMzUnllUzl6Y21NdmFXNWtaWGd1XFxcblkzSmhkR1Z6TG1sdkxUWm1NVGRrTWpKaVltRXhOVEF3TVdZdmMyMWhiR3gyWldNdE1TNHhNUzR3TDNOeVl5OXNhV0l1Y25NQUFBQjBMaFxcXG5BQVVRQUFBRllCQUFBdUFBQUFZMkZ3WVdOcGRIa2diM1psY21ac2IzY0FBQUIwTGhBQVVRQUFBRVVCQUFBMkFBQUFZWE56WlhKMGFXOXVcXFxuSUdaaGFXeGxaRG9nYm1WM1gyTmhjQ0ErUFNCc1pXNTBMaEFBVVFBQUFKNEVBQUFOQUFBQVVuZE1iMk5ySUhKbFlXUmxjaUJqYjNWdWRDXFxcbkJ2ZG1WeVpteHZkMzR2TG1OaGNtZHZMM0psWjJsemRISjVMM055WXk5cGJtUmxlQzVqY21GMFpYTXVhVzh0Tm1ZeE4yUXlNbUppWVRFMVxcXG5NREF4Wmk5d1lYSnJhVzVuWDJ4dmRDMHdMakV5TGpFdmMzSmpMM0poZDE5eWQyeHZZMnN1Y25NQVNDOFFBRnNBQUFDL0FnQUFIZ0FBQUxcXFxub0FBQUFJQUFBQUJBQUFBTHNBQUFDOEFBQUFWSEpwWldRZ2RHOGdjMmh5YVc1cklIUnZJR0VnYkdGeVoyVnlJR05oY0dGamFYUjV5QzhRXFxcbkFDUUFBQUF2Y25WemRHTXZaV0l5TmpJNU5tSTFOVFpqWldZeE1HWmlOekV6WVRNNFpqTmtNVFppT1RnNE5qQTRNR1l5Tmk5c2FXSnlZWFxcXG5KNUwyRnNiRzlqTDNOeVl5OXlZWGRmZG1WakxuSno5QzhRQUV3QUFBQ3VBUUFBQ1FBQUFMb0FBQUFJQUFBQUJBQUFBTDBBQUFCK0x5NWpcXFxuWVhKbmJ5OXlaV2RwYzNSeWVTOXpjbU12YVc1a1pYZ3VZM0poZEdWekxtbHZMVFptTVRka01qSmlZbUV4TlRBd01XWXZjR0Z5YTJsdVoxXFxcbjlzYjNSZlkyOXlaUzB3TGprdU9DOXpjbU12Y0dGeWEybHVaMTlzYjNRdWNuTmdNQkFBWUFBQUFFb0JBQUFNQUFBQVVHRnlhMmx1WnlCdVxcXG5iM1FnYzNWd2NHOXlkR1ZrSUc5dUlIUm9hWE1nY0d4aGRHWnZjbTErTHk1allYSm5ieTl5WldkcGMzUnllUzl6Y21NdmFXNWtaWGd1WTNcXFxuSmhkR1Z6TG1sdkxUWm1NVGRrTWpKaVltRXhOVEF3TVdZdmNHRnlhMmx1WjE5c2IzUmZZMjl5WlMwd0xqa3VPQzl6Y21NdmRHaHlaV0ZrXFxcblgzQmhjbXRsY2k5M1lYTnRMbkp6QUFBQTlqQVFBR2NBQUFBYUFBQUFDUUFBQVBZd0VBQm5BQUFBSGdBQUFBa0FBQUQyTUJBQVp3QUFBQ1xcXG5JQUFBQUpBQUFBOWpBUUFHY0FBQUFtQUFBQUNRQUFBUFl3RUFCbkFBQUFLZ0FBQUFrQUFBQkJiR3h2WTBWeWNteGhlVzkxZEFBQXZnQUFcXFxuQUFRQUFBQUVBQUFBdndBQUFFTmhjR0ZqYVhSNVQzWmxjbVpzYjNkallXeHNaV1FnWUU5d2RHbHZiam82ZFc1M2NtRndLQ2xnSUc5dUlHXFxcbkVnWUU1dmJtVmdJSFpoYkhWbEFNQUFBQUFFQUFBQUJBQUFBTUVBQUFBQkFBQUFmaTh1WTJGeVoyOHZjbVZuYVhOMGNua3ZjM0pqTDJsdVxcXG5aR1Y0TG1OeVlYUmxjeTVwYnkwMlpqRTNaREl5WW1KaE1UVXdNREZtTDI5dVkyVmZZMlZzYkMweExqRTRMakF2YzNKakwybHRjRjl6ZEdcXFxuUXVjbk1BQUNBeUVBQldBQUFBbXdBQUFBa0FBQUFnTWhBQVZnQUFBS0VBQUFBMkFBQUFTR0Z6YUNCMFlXSnNaU0JqWVhCaFkybDBlU0J2XFxcbmRtVnlabXh2ZDVneUVBQWNBQUFBZmk4dVkyRnlaMjh2Y21WbmFYTjBjbmt2YzNKakwybHVaR1Y0TG1OeVlYUmxjeTVwYnkwMlpqRTNaRFxcXG5JeVltSmhNVFV3TURGbUwyaGhjMmhpY205M2JpMHdMakUwTGpBdmMzSmpMM0poZHk5dGIyUXVjbk1BQUx3eUVBQldBQUFBVWdBQUFDZ0FcXFxuQUFEQ0FBQUFEQUFBQUFRQUFBRERBQUFBeEFBQUFDWUFBQUJoSUVScGMzQnNZWGtnYVcxd2JHVnRaVzUwWVhScGIyNGdjbVYwZFhKdVpXXFxcblFnWVc0Z1pYSnliM0lnZFc1bGVIQmxZM1JsWkd4NUFNVUFBQUFBQUFBQUFRQUFBQ2NBQUFBdmNuVnpkR012WldJeU5qSTVObUkxTlRaalxcXG5aV1l4TUdaaU56RXpZVE00WmpOa01UWmlPVGc0TmpBNE1HWXlOaTlzYVdKeVlYSjVMMkZzYkc5akwzTnlZeTl6ZEhKcGJtY3Vjbk1BaERcXFxuTVFBRXNBQUFEY0NRQUFEZ0FBQUM5eWRYTjBZeTlsWWpJMk1qazJZalUxTm1ObFpqRXdabUkzTVROaE16aG1NMlF4Tm1JNU9EZzJNRGd3XFxcblpqSTJMMnhwWW5KaGNua3ZZMjl5WlM5emNtTXZjM1J5TDNCaGRIUmxjbTR1Y25NQTRETVFBRThBQUFDbkJRQUFJUUFBQU9BekVBQlBBQVxcXG5BQXN3VUFBQlFBQUFEZ014QUFUd0FBQUxNRkFBQWhBQUFBZmk4dVkyRnlaMjh2Y21WbmFYTjBjbmt2YzNKakwybHVaR1Y0TG1OeVlYUmxcXFxuY3k1cGJ5MDJaakUzWkRJeVltSmhNVFV3TURGbUwzVnliQzB5TGpNdU1TOXpjbU12YkdsaUxuSnpBR0EwRUFCTEFBQUFRZ29BQUFvQUFBXFxcbkRnTXhBQVR3QUFBRGNFQUFBWEFBQUFMbVF1ZEhNdVpDNHVhbk11ZEhOaWRXbHNaR2x1Wm04dWFuTnZiaTUwYzNndVpDNWpkSE11WkM1dFxcXG5kSE11WkM1MGN5NWpkSE11YlhSekxtTnFjeTV0YW5NdWFuTjRZWEJ3YkdsallYUnBiMjR2YW5OdmJtRndjR3hwWTJGMGFXOXVMM2RoYzJcXFxuMTBaWGgwTDNSemVIUmxlSFF2ZEhsd1pYTmpjbWx3ZEhSbGVIUXZhbUYyWVhOamNtbHdkSFJsZUhRdmFuTjRZMjl1ZEdWdWRDMTBlWEJsXFxcbmZpOHVZMkZ5WjI4dmNtVm5hWE4wY25rdmMzSmpMMmx1WkdWNExtTnlZWFJsY3k1cGJ5MDJaakUzWkRJeVltSmhNVFV3TURGbUwyUmxibVxcXG45ZmJXVmthV0ZmZEhsd1pTMHdMakV1TVM5emNtTXZiR2xpTG5KekFBQnJOUkFBVndBQUFLc0FBQUFMQUFBQVlYQndiR2xqWVhScGIyNHZcXFxuZEhsd1pYTmpjbWx3ZEhacFpHVnZMM1p1WkM1a2JHNWhMbTF3WldjdGRIUnpkbWxrWlc4dmJYQXlkR0Z3Y0d4cFkyRjBhVzl1TDNndGRIXFxcbmx3WlhOamNtbHdkR0Z3Y0d4cFkyRjBhVzl1TDJwaGRtRnpZM0pwY0hSaGNIQnNhV05oZEdsdmJpOWxZMjFoYzJOeWFYQjBkR1Y0ZEM5bFxcXG5ZMjFoYzJOeWFYQjBZWEJ3YkdsallYUnBiMjR2ZUMxcVlYWmhjMk55YVhCMFlYQndiR2xqWVhScGIyNHZibTlrWlhSbGVIUXZhbk5qY21cXFxubHdkSFJsZUhRdmFuTnZiblJsZUhRdmNHeGhhVzVrWVhSaFlYQndiR2xqWVhScGIyNHZiMk4wWlhRdGMzUnlaV0Z0ZEhOdGRITmpkSE4wXFxcbmMzaHFjMnB6ZUcxcWMyTnFjMnB6YjI1M1lYTnRkSE5pZFdsc1pHbHVabTl0WVhBQUFBQURBQUFBQkFBQUFBUUFBQUFFQUFBQUF3QUFBQVxcXG5RQUFBQUVBQUFBQlFBQUFBWUFBQUFHQUFBQUJBQUFBQVVBQUFBREFBQUFEQUFBQUFNQUFBQURBQUFBMURRUUFBMDFFQUFKTlJBQUJUVVFcXFxuQU00MEVBQUJOUkFBL1RRUUFQZzBFQUR5TkJBQTdEUVFBT2cwRUFEak5CQUExRFFRQU5jMEVBRFVOQkFBMURRUUFDOXlkWE4wWXk5bFlqXFxcbkkyTWprMllqVTFObU5sWmpFd1ptSTNNVE5oTXpobU0yUXhObUk1T0RnMk1EZ3daakkyTDJ4cFluSmhjbmt2WTI5eVpTOXpjbU12YzJ4cFxcXG5ZMlV2Ylc5a0xuSnpBQUFBY0RjUUFFMEFBQUR2Q1FBQUp3QUFBR05oYkd4bFpDQmdUM0IwYVc5dU9qcDFibmR5WVhBb0tXQWdiMjRnWVNcXFxuQmdUbTl1WldBZ2RtRnNkV1V2Y25WemRHTXZaV0l5TmpJNU5tSTFOVFpqWldZeE1HWmlOekV6WVRNNFpqTmtNVFppT1RnNE5qQTRNR1l5XFxcbk5pOXNhV0p5WVhKNUwyTnZjbVV2YzNKakwzTjBjaTl3WVhSMFpYSnVMbkp6QUFEN054QUFUd0FBQUxnQkFBQW1BQUFBZmk4dVkyRnlaMlxcXG44dmNtVm5hWE4wY25rdmMzSmpMMmx1WkdWNExtTnlZWFJsY3k1cGJ5MDJaakUzWkRJeVltSmhNVFV3TURGbUwyUmhkR0V0ZFhKc0xUQXVcXFxuTWk0d0wzTnlZeTl0YVcxbExuSnpBQUFBWERnUUFGRUFBQUE5QUFBQUhRQUFBQzg3UFNKY2ZpOHVZMkZ5WjI4dmNtVm5hWE4wY25rdmMzXFxcbkpqTDJsdVpHVjRMbU55WVhSbGN5NXBieTAyWmpFM1pESXlZbUpoTVRVd01ERm1MMlJoZEdFdGRYSnNMVEF1TWk0d0wzTnlZeTlzYVdJdVxcXG5jbk1BQUFERk9CQUFVQUFBQUpJQUFBQVlBQUFBeFRnUUFGQUFBQUNiQUFBQUd3QUFBTVU0RUFCUUFBQUFtd0FBQUM0QUFBQjBaWGgwTDNcXFxuQnNZV2x1Y0d4aGFXNWphR0Z5YzJWMEFBREZPQkFBVUFBQUFPd0FBQUFMQUFBQU1ERXlNelExTmpjNE9VRkNRMFJGUmdBQUFBQUFBQUFBXFxcbkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFRRUJBUUVBQUFFQkFBRUJBQUVCQVFFQkFRRUJBUUVBQUFBQUFBQUFBUVxcXG5FQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVBQUFBQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRQUJcXFxuQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBXFxcbkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVxcXG5BQUFBQUFBQUFBQUFBQUFBQUFBdmNuVnpkR012WldJeU5qSTVObUkxTlRaalpXWXhNR1ppTnpFellUTTRaak5rTVRaaU9UZzROakE0TUdcXFxuWXlOaTlzYVdKeVlYSjVMMk52Y21VdmMzSmpMMk5vWVhJdmJXVjBhRzlrY3k1eWM0QTZFQUJRQUFBQTBRWUFBQW9BQUFCaGRIUmxiWEIwXFxcbklIUnZJR1JwZG1sa1pTQmllU0I2WlhKdkwzSjFjM1JqTDJWaU1qWXlPVFppTlRVMlkyVm1NVEJtWWpjeE0yRXpPR1l6WkRFMllqazRPRFxcXG5Zd09EQm1Nall2YkdsaWNtRnllUzlqYjNKbEwzTnlZeTl6YkdsalpTOXRiMlF1Y25NQUFQazZFQUJOQUFBQTd3a0FBQ2NBQUFENU9oQUFcXFxuVFFBQUFBMEtBQUFlQUFBQVkyRnNiR1ZrSUdCUGNIUnBiMjQ2T25WdWQzSmhjQ2dwWUNCdmJpQmhJR0JPYjI1bFlDQjJZV3gxWlFDWUw0XFxcbnBDa1VRM2NjLzd3TFdsMjdYcFc4SldPZkVSOFZta2dqK1MxVjRjcTVpcUI5Z0JXNE1Tdm9VeEpNTjlERlYwWGI1eS9ySGVnS2NHM0p0MFxcXG44WnZCd1dtYjVJWkh2dS9HbmNFUHpLRU1KRzhzNlMycWhIUkszS213WE5xSStYWlNVVDZZYmNZeHFNZ25BN0RIZjFtLzh3dmd4a2VScDlcXFxuVlJZOG9HWnlrcEZJVUt0eWM0SVJzdS9HMHNUUk1OT0ZOVWN3cGx1d3BxZGk3SndvR0ZMSEtTb2VpL29rdG1HcWh3aTB2Q28xRnN4eG5vXFxcbmt0RWtCcG5XaFRVTzlIQ2dhaEFXd2FRWkNHdzNIa3gzU0NlMXZMQTBzd3djT1VxcTJFNVB5cHhiODI4dWFPNkNqM1J2WTZWNEZIakloQVxcXG5nQ3g0ejYvNzZRNjJ4UXBQZWorYjd5ZUhIR2ZpOHVZMkZ5WjI4dmNtVm5hWE4wY25rdmMzSmpMMmx1WkdWNExtTnlZWFJsY3k1cGJ5MDJcXFxuWmpFM1pESXlZbUpoTVRVd01ERm1MM0pwYm1jdE1DNHhOaTR5TUM5emNtTXZaR2xuWlhOMExuSnpBQUFBbER3UUFGRUFBQUJBQUFBQUdnXFxcbkFBQUpROEVBQlJBQUFBUVFBQUFBa0FBQUNVUEJBQVVRQUFBRWtBQUFBU0FBQUFsRHdRQUZFQUFBQlBBQUFBQ1FBQUFHRnpjMlZ5ZEdsdlxcXG5iaUJtWVdsc1pXUTZJRzUxYlY5d1pXNWthVzVuSUR3OUlIQmxibVJwYm1jdWJHVnVLQ2tBQUpROEVBQlJBQUFBVUFBQUFBa0FBQUNVUEJcXFxuQUFVUUFBQUZNQUFBQUpBQUFBbER3UUFGRUFBQUJYQUFBQUtBQUFBSlE4RUFCUkFBQUFZQUFBQUNRQUFBQ1VQQkFBVVFBQUFHWUFBQUFPXFxcbkFBQUFsRHdRQUZFQUFBQm9BQUFBRGdBQUFKUThFQUJSQUFBQWFnQUFBQTRBQUFDVVBCQUFVUUFBQUdzQUFBQUpBQUFBbER3UUFGRUFBQVxcXG5CckFBQUFMUUFBQUpROEVBQlJBQUFBcVFBQUFBMEFBQUNVUEJBQVVRQUFBS2tBQUFCTkFBQUFsRHdRQUZFQUFBQ3hBQUFBRFFBQUFKUThcXFxuRUFCUkFBQUFzUUFBQUVnQUFBQ1VQQkFBVVFBQUFMRUFBQUEzQUFBQWxEd1FBRkVBQUFDeUFBQUFJQUFBQUpROEVBQlJBQUFBc3dBQUFCXFxcbm9BQUFDVVBCQUFVUUFBQUxjQUFBQWFBQUFBbER3UUFGRUFBQUM1QUFBQUhBQUFBSlE4RUFCUkFBQUF1d0FBQUEwQUFBQ1VQQkFBVVFBQVxcXG5BTHdBQUFBakFBQUFsRHdRQUZFQUFBQzhBQUFBRWdBQUFKUThFQUJSQUFBQXh3QUFBQm9BQUFCbjVnbHFoYTVudTNMemJqdzY5VStsZjFcXFxuSU9VWXhvQlp1cjJZTWZHYzNnV3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF4Z0FBQU1jQUFBQWdBQUFBXFxcbklBQUFBRUFBQUFBSUFBQUFBUUFBQUFBQUFBQmpiRzl6ZFhKbElHbHVkbTlyWldRZ2NtVmpkWEp6YVhabGJIa2diM0lnWVdaMFpYSWdZbVxcXG5WcGJtY2daSEp2Y0hCbFpBQUExQUFBQUFRQUFBQUVBQUFBMVFBQUFGUnlhV1ZrSUhSdklITm9jbWx1YXlCMGJ5QmhJR3hoY21kbGNpQmpcXFxuWVhCaFkybDBlVncvRUFBa0FBQUFMM0oxYzNSakwyVmlNall5T1RaaU5UVTJZMlZtTVRCbVlqY3hNMkV6T0dZelpERTJZams0T0RZd09EXFxcbkJtTWpZdmJHbGljbUZ5ZVM5aGJHeHZZeTl6Y21NdmNtRjNYM1psWXk1eWM0Zy9FQUJNQUFBQXJnRUFBQWtBQUFCS2MxWmhiSFZsS0NrQVxcXG5BQURrUHhBQUNBQUFBT3cvRUFBQkFBQUFiblZzYkNCd2IybHVkR1Z5SUhCaGMzTmxaQ0IwYnlCeWRYTjBjbVZqZFhKemFYWmxJSFZ6WlNcXFxuQnZaaUJoYmlCdlltcGxZM1FnWkdWMFpXTjBaV1FnZDJocFkyZ2dkMjkxYkdRZ2JHVmhaQ0IwYnlCMWJuTmhabVVnWVd4cFlYTnBibWNnXFxcbmFXNGdjblZ6ZEFBQTJRQUFBQXdBQUFBRUFBQUEyZ0FBQU5zQUFBQW1BQUFBWVNCRWFYTndiR0Y1SUdsdGNHeGxiV1Z1ZEdGMGFXOXVJSFxcXG5KbGRIVnlibVZrSUdGdUlHVnljbTl5SUhWdVpYaHdaV04wWldSc2VRRGNBQUFBQUFBQUFBRUFBQUFuQUFBQUwzSjFjM1JqTDJWaU1qWXlcXFxuT1RaaU5UVTJZMlZtTVRCbVlqY3hNMkV6T0dZelpERTJZams0T0RZd09EQm1Nall2YkdsaWNtRnllUzloYkd4dll5OXpjbU12YzNSeWFXXFxcbjVuTG5KekFNeEFFQUJMQUFBQTNBa0FBQTRBQUFEZEFBQUFCQUFBQUFRQUFBRGVBQUFBM3dBQUFPQUFBQUJqWVd4c1pXUWdZRTl3ZEdsdlxcXG5iam82ZFc1M2NtRndLQ2xnSUc5dUlHRWdZRTV2Ym1WZ0lIWmhiSFZsQU9FQUFBQUJBQUFBQVFBQUFEZ0FBQUJqWVd4c1pXUWdZRkpsYzNcXFxuVnNkRG82ZFc1M2NtRndLQ2xnSUc5dUlHRnVJR0JGY25KZ0lIWmhiSFZsQU14QUVBQkxBQUFBNHdZQUFDUUFBQUJoYzNObGNuUnBiMjRnXFxcblptRnBiR1ZrT2lCelpXeG1MbWx6WDJOb1lYSmZZbTkxYm1SaGNua29jM1JoY25RcEFBRE1RQkFBU3dBQUFPUUdBQUFKQUFBQVlYTnpaWFxcXG5KMGFXOXVJR1poYVd4bFpEb2djMlZzWmk1cGMxOWphR0Z5WDJKdmRXNWtZWEo1S0dWdVpDbk1RQkFBU3dBQUFPVUdBQUFKQUFBQVlYTnpcXFxuWlhKMGFXOXVJR1poYVd4bFpEb2djMlZzWmk1cGMxOWphR0Z5WDJKdmRXNWtZWEo1S0c1bGQxOXNaVzRwekVBUUFFc0FBQUQvQkFBQURRXFxcbkFBQUdGemMyVnlkR2x2YmlCbVlXbHNaV1E2SUhObGJHWXVhWE5mWTJoaGNsOWliM1Z1WkdGeWVTaGhkQ2tBekVBUUFFc0FBQUNZQmdBQVxcXG5DUUFBQUM5eWRYTjBZeTlsWWpJMk1qazJZalUxTm1ObFpqRXdabUkzTVROaE16aG1NMlF4Tm1JNU9EZzJNRGd3WmpJMkwyeHBZbkpoY25cXFxua3ZZMjl5WlM5emNtTXZjM1J5TDNCaGRIUmxjbTR1Y25NQXNFSVFBRThBQUFDNEFRQUFKZ0FBQUxCQ0VBQlBBQUFBOUFFQUFDWUFBQUIrXFxcbkx5NWpZWEpuYnk5eVpXZHBjM1J5ZVM5emNtTXZhVzVrWlhndVkzSmhkR1Z6TG1sdkxUWm1NVGRrTWpKaVltRXhOVEF3TVdZdmRYSnNMVFxcXG5JdU15NHhMM055WXk5b2IzTjBMbkp6SUVNUUFFd0FBQUJTQUFBQUpBQUFBQ0JERUFCTUFBQUFnZ0FBQUNRQUFBRC8vLy8vQUFBQUFBQUFcXFxuQUFBQUFBQ0FXMTA2QUVCQkVBQUFBQUFBSUVNUUFFd0FBQURXQUFBQUd3QUFBQ0JERUFCTUFBQUFCZ0VBQUIwQUFBQXdBQUFBT1FBQUFBXFxcbkFBQUFBd2VEQllJRU1RQUV3QUFBQWdBUUFBRWdBQUFDQkRFQUJNQUFBQUl3RUFBQklBQUFBd0FBQUFOd0FBQUFBQUFBQmhBQUFBWmdBQVxcXG5BQUFBQUFCQkFBQUFSZ0FBQUFBQUFBQ2dReEFBWVNCdWIyNHRaVzF3ZEhrZ2JHbHpkQ0J2WmlCdWRXMWlaWEp6QUNCREVBQk1BQUFBVHdcXFxuRUFBQ0lBQUFBZ1F4QUFUQUFBQUtVQkFBQUpBQUFBSUVNUUFFd0FBQURMQVFBQUVRQUFBQ0JERUFCTUFBQUE1QUVBQUJnQUFBQm1kSEJvXFxcbmRIUndhSFIwY0hOM2MzZHpjMlpwYkdWK0x5NWpZWEpuYnk5eVpXZHBjM1J5ZVM5emNtTXZhVzVrWlhndVkzSmhkR1Z6TG1sdkxUWm1NVFxcXG5ka01qSmlZbUV4TlRBd01XWXZkWEpzTFRJdU15NHhMM055WXk5d1lYSnpaWEl1Y25NQWtVUVFBRTRBQUFBVUFRQUFLZ0FBQUpGRUVBQk9cXFxuQUFBQXRBRUFBRElBQUFBdkx3QUFqVVFRQUFRQUFBQm1hV3hsT2k4dkFKRkVFQUJPQUFBQUxnSUFBRVlBQUFDUlJCQUFUZ0FBQUM0Q0FBXFxcbkJXQUFBQVptbHNaVG92THkrUlJCQUFUZ0FBQUdBQ0FBQWxBQUFBa1VRUUFFNEFBQURRQWdBQUlRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVxcXG5BQUFBQUFBQWtVUVFBRTRBQUFDTkF3QUFNUUFBQVAvLy8vOE5nQUQ4QVFBQWVBRUFBTGlSUkJBQVRnQUFBTEVEQUFBMUFBQUFua01RQUFcXFxuRUFBQUNSUkJBQVRnQUFBTVlEQUFBNkFBQUFrVVFRQUU0QUFBREFBd0FBS3dBQUFKRkVFQUJPQUFBQTlnTUFBQjBBQUFCc2IyTmhiR2h2XFxcbmMzUUFBQUNSUkJBQVRnQUFBQjBFQUFCQkFBQUFrVVFRQUU0QUFBQS9CQUFBSFFBQUFKRkVFQUJPQUFBQXd3UUFBQklBQUFDUlJCQUFUZ1xcXG5BQUFNVUVBQUFTQUFBQUxpNGxNbVVsTW1VbE1tVWxNa1VsTWtVbE1tVWxNa1VsTWtVbE1tVXVKVEpGTGk0bE1tVXVKVEpGTGlVeVpTVXlcXFxuUlFBQUFQLy8vLzh0Z0FEUUFBQUFFQUVBQUtqLy8vLy9MWUFBMEFBQUFBQUJBQUNvLy8vLy93MEFBTkFBQUFBQUFRQUFxSkZFRUFCT0FBXFxcbkFBQ0FVQUFDTUFBQUNSUkJBQVRnQUFBQTBGQUFBOEFBQUFrVVFRQUU0QUFBQWJCUUFBTkFBQUFKRkVFQUJPQUFBQUpnVUFBQ0lBQUFDUlxcXG5SQkFBVGdBQUFDWUZBQUJPQUFBQWtVUVFBRTRBQUFBckJRQUFPQUFBQUZCeWIyZHlZVzF0YVc1bklHVnljbTl5TGlCd1lYSnpaVjl4ZFdcXFxuVnllVjloYm1SZlpuSmhaMjFsYm5Rb0tTQmpZV3hzWldRZ2QybDBhRzkxZENBL0lHOXlJQ01Ba1VRUUFFNEFBQUIxQlFBQUVnQUFBSkZFXFxcbkVBQk9BQUFBa1FVQUFCOEFBQUQvLy8vL2pRQUFVQUFBQUFBQUFBQ0EvLy8vL3cwQUFGQUFBQUFBQUFBQWdQLy8vLzhGQUFCUUFBQUFBQVxcXG5FQUFJQ1JSQkFBVGdBQUFBNEdBQUFwQUFBQWtVUVFBRTRBQUFBY0JnQUFWZ0FBQUg0dkxtTmhjbWR2TDNKbFoybHpkSEo1TDNOeVl5OXBcXFxuYm1SbGVDNWpjbUYwWlhNdWFXOHRObVl4TjJReU1tSmlZVEUxTURBeFppOTFjbXd0TWk0ekxqRXZjM0pqTDJ4cFlpNXljd0NjUnhBQVN3XFxcbkFBQUc0RkFBQkpBQUFBWVhOelpYSjBhVzl1SUdaaGFXeGxaRG9nYzJWc1ppNW1jbUZuYldWdWRGOXpkR0Z5ZEM1cGMxOXViMjVsS0NrQVxcXG5uRWNRQUVzQUFBQ0JCUUFBRFFBQUFKeEhFQUJMQUFBQWdnVUFBRWtBQUFDY1J4QUFTd0FBQUtVRkFBQkdBQUFBbkVjUUFFc0FBQUFhQmdcXFxuQUFRd0FBQUNVeVJnQ2NSeEFBU3dBQUFDSUdBQUFkQUFBQW5FY1FBRXNBQUFBNkJnQUFTQUFBQUp4SEVBQkxBQUFBTkFvQUFBb0FBQUNjXFxcblJ4QUFTd0FBQURzS0FBQUtBQUFBbkVjUUFFc0FBQUJDQ2dBQUNnQUFBRlZTVEhNZ2JXOXlaU0IwYUdGdUlEUWdSMElnWVhKbElHNXZkQ1xcXG5CemRYQndiM0owWldSaElHTmhibTV2ZEMxaVpTMWhMV0poYzJVZ1ZWSk1JR1J2WlhOdTRvQ1pkQ0JvWVhabElHRWdhRzl6ZENCMGJ5QnpcXFxuWlhSeVpXeGhkR2wyWlNCVlVrd2dkMmwwYUNCaElHTmhibTV2ZEMxaVpTMWhMV0poYzJVZ1ltRnpaWEpsYkdGMGFYWmxJRlZTVENCM2FYXFxcblJvYjNWMElHRWdZbUZ6WldsdWRtRnNhV1FnWkc5dFlXbHVJR05vWVhKaFkzUmxjbWx1ZG1Gc2FXUWdTVkIyTmlCaFpHUnlaWE56YVc1MlxcXG5ZV3hwWkNCSlVIWTBJR0ZrWkhKbGMzTnBiblpoYkdsa0lIQnZjblFnYm5WdFltVnlhVzUyWVd4cFpDQnBiblJsY201aGRHbHZibUZzSUdcXFxuUnZiV0ZwYmlCdVlXMWxaVzF3ZEhrZ2FHOXpkRTkyWlhKbWJHOTNVMlYwU0c5emRFOXVRMkZ1Ym05MFFtVkJRbUZ6WlZWeWJGSmxiR0YwXFxcbmFYWmxWWEpzVjJsMGFFTmhibTV2ZEVKbFFVSmhjMlZDWVhObFVtVnNZWFJwZG1WVmNteFhhWFJvYjNWMFFtRnpaVWx1ZG1Gc2FXUkViMlxcXG4xaGFXNURhR0Z5WVdOMFpYSkpiblpoYkdsa1NYQjJOa0ZrWkhKbGMzTkpiblpoYkdsa1NYQjJORUZrWkhKbGMzTkpiblpoYkdsa1VHOXlcXFxuZEVsa2JtRkZjbkp2Y2tWdGNIUjVTRzl6ZEFrQUFBQUpBQUFBQ3dBQUFCSUFBQUFTQUFBQUZnQUFBQllBQUFBZ0FBQUFHUUFBQUFnQUFBXFxcbkI3U2hBQWNrb1FBR2RLRUFCVlNoQUFRMG9RQUMxS0VBQVhTaEFBOTBrUUFONUpFQURXU1JBQWZpOHVZMkZ5WjI4dmNtVm5hWE4wY25rdlxcXG5jM0pqTDJsdVpHVjRMbU55WVhSbGN5NXBieTAyWmpFM1pESXlZbUpoTVRVd01ERm1MM1Z1YVdOdlpHVXRibTl5YldGc2FYcGhkR2x2YmlcXFxuMHdMakV1TWpJdmMzSmpMMlJsWTI5dGNHOXpaUzV5YzlSS0VBQmtBQUFBandBQUFCY0FBQUJKYm1SbGVDQnZkWFFnYjJZZ1ltOTFibVJ6XFxcbkFFaExFQUFUQUFBQTFFb1FBR1FBQUFCV0FBQUFIZ0FBQU5SS0VBQmtBQUFBVmdBQUFBMEFBQURVU2hBQVpBQUFBRTBBQUFBSkFBQUE0Z1xcXG5BQUFBZ0FBQUFFQUFBQTR3QUFBT1FBQUFBQUFBQUFBQUFBQUdGMGRHVnRjSFFnZEc4Z1pHbDJhV1JsSUdKNUlIcGxjbTh2Y25WemRHTXZcXFxuWldJeU5qSTVObUkxTlRaalpXWXhNR1ppTnpFellUTTRaak5rTVRaaU9UZzROakE0TUdZeU5pOXNhV0p5WVhKNUwyTnZjbVV2YzNKakwzXFxcbk5zYVdObEwyMXZaQzV5Y3dBQXlVc1FBRTBBQUFEdkNRQUFKd0FBQU1sTEVBQk5BQUFBekFNQUFDQUFBQURKU3hBQVRRQUFBTXdEQUFBdFxcXG5BQUFBeVVzUUFFMEFBQURRQXdBQUlBQUFBTWxMRUFCTkFBQUEwQU1BQUNzQUFBQXZjblZ6ZEdNdlpXSXlOakk1Tm1JMU5UWmpaV1l4TUdcXFxuWmlOekV6WVRNNFpqTmtNVFppT1RnNE5qQTRNR1l5Tmk5c2FXSnlZWEo1TDJOdmNtVXZjM0pqTDNOc2FXTmxMM052Y25RdWNuTUFBR2hNXFxcbkVBQk9BQUFBTVFRQUFEY0FBQUJvVEJBQVRnQUFBRFFFQUFBTkFBQUFhRXdRQUU0QUFBQkJCQUFBR0FBQUFHaE1FQUJPQUFBQVFnUUFBQlxcXG5rQUFBQm9UQkFBVGdBQUFFTUVBQUFrQUFBQWFFd1FBRTRBQUFCSkJBQUFEUUFBQUdOaGJHeGxaQ0JnVDNCMGFXOXVPanAxYm5keVlYQW9cXFxuS1dBZ2IyNGdZU0JnVG05dVpXQWdkbUZzZFdVQWFFd1FBRTRBQUFDSEJBQUFRQUFBQUdoTUVBQk9BQUFBclFRQUFFNEFBQUJvVEJBQVRnXFxcbkFBQUxzRUFBQldBQUFBYUV3UUFFNEFBQURQQkFBQUVRQUFBR0Z6YzJWeWRHbHZiaUJtWVdsc1pXUTZJR1Z1WkNBK1BTQnpkR0Z5ZENBbVxcXG5KaUJsYm1RZ1BEMGdiR1Z1YUV3UUFFNEFBQUFtQlFBQUJRQUFBR2hNRUFCT0FBQUFOd1VBQUNnQUFBQmhjM05sY25ScGIyNGdabUZwYkdcXFxuVmtPaUJ2Wm1aelpYUWdJVDBnTUNBbUppQnZabVp6WlhRZ1BEMGdiR1Z1QUFCb1RCQUFUZ0FBQUpzQUFBQUZBQUFBYUV3UUFFNEFBQUNqXFxcbkFBQUFIZ0FBQUdGemMyVnlkR2x2YmlCbVlXbHNaV1E2SUhObGJHWXVhWE5mWTJoaGNsOWliM1Z1WkdGeWVTaHVaWGRmYkdWdUtTOXlkWFxcXG5OMFl5OWxZakkyTWprMllqVTFObU5sWmpFd1ptSTNNVE5oTXpobU0yUXhObUk1T0RnMk1EZ3daakkyTDJ4cFluSmhjbmt2WVd4c2IyTXZcXFxuYzNKakwzTjBjbWx1Wnk1eWN3QlFUaEFBU3dBQUFQOEVBQUFOQUFBQWZpOHVZMkZ5WjI4dmNtVm5hWE4wY25rdmMzSmpMMmx1WkdWNExtXFxcbk55WVhSbGN5NXBieTAyWmpFM1pESXlZbUpoTVRVd01ERm1MM1JwYm5sMlpXTXRNUzQyTGpBdmMzSmpMMkZ5Y21GNWRtVmpMbkp6ckU0UVxcXG5BRlFBQUFDZEFBQUFCZ0FBQUM5eWRYTjBZeTlsWWpJMk1qazJZalUxTm1ObFpqRXdabUkzTVROaE16aG1NMlF4Tm1JNU9EZzJNRGd3WmpcXFxuSTJMMnhwWW5KaGNua3ZZMjl5WlM5emNtTXZjM1J5TDNCaGRIUmxjbTR1Y25NQUVFOFFBRThBQUFDNEFRQUFKZ0FBQUt4T0VBQlVBQUFBXFxcbnBRQUFBQW9BQUFBUVR4QUFUd0FBQVBRQkFBQW1BQUFBNGdBQUFBZ0FBQUFFQUFBQTVRQUFBSDR2TG1OaGNtZHZMM0psWjJsemRISjVMM1xcXG5OeVl5OXBibVJsZUM1amNtRjBaWE11YVc4dE5tWXhOMlF5TW1KaVlURTFNREF4Wmk5cFpHNWhMVEF1TXk0d0wzTnlZeTl3ZFc1NVkyOWtcXFxuWlM1eWN3QUFBS0JQRUFCUkFBQUFJQUFBQUE0QUFBQ2dUeEFBVVFBQUFFZ0FBQUFTQUFBQW9FOFFBRkVBQUFCS0FBQUFGZ0FBQUtCUEVBXFxcbkJSQUFBQWJRQUFBQndBQUFDZ1R4QUFVUUFBQUljQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQVlYUjBaVzF3ZENCMGJ5QmpZV3hqZFd4aFxcXG5kR1VnZEdobElISmxiV0ZwYm1SbGNpQjNhWFJvSUdFZ1pHbDJhWE52Y2lCdlppQjZaWEp2QUFBQW9FOFFBRkVBQUFBRkFRQUFEZ0FBQUtcXFxuQlBFQUJSQUFBQUl3RUFBQ1VBQUFCbGVIQnNhV05wZENCd1lXNXBZd0FBb0U4UUFGRUFBQUE1QVFBQURnQUFBSDR2TG1OaGNtZHZMM0psXFxcbloybHpkSEo1TDNOeVl5OXBibVJsZUM1amNtRjBaWE11YVc4dE5tWXhOMlF5TW1KaVlURTFNREF4Wmk5cFpHNWhMVEF1TXk0d0wzTnlZeVxcXG45MWRITTBOaTV5Y3dBQXpGQVFBRTRBQUFBbEFBQUFCZ0FBQU14UUVBQk9BQUFBUFFBQUFCVUFBQURNVUJBQVRnQUFBRUlBQUFBS0FBQUFcXFxuekZBUUFFNEFBQUJFQUFBQUNnQUFBTXhRRUFCT0FBQUFVZ0VBQUJVQUFBQjRiaTB0ekZBUUFFNEFBQUNGQVFBQUtnQUFBTXhRRUFCT0FBXFxcbkFBb3dFQUFCSUFBQURNVUJBQVRnQUFBT01CQUFBU0FBQUFBQUFBQUFDQUFBQXRBQUFBQVlBQUFDOEFBQUFDZ0FBQU1BQUFBQU9BQUFBNlxcXG5BQUFBQklBQUFFRUFBQUFGQUFBQVd3QUFBQitBQUFCaEFBQUFJSUFBQUhzQUFBQWhnQUFBZ0FBQUFDS0FBQUNnQUFBQUk0QUFBS0VBQUFcXFxuQWtnQUFBcUFBQUFDVUFBQUNyQUFBQUtJQUFBSzBBQUFBcEFBQUFzQUFBQUN5QUFBQ3lBQUFBTFFBQUFPQUFBQUJiZ0FBQTl3QUFBRnlBXFxcbkFBRDRBQUFBWFlBQUFBQUJBQUJlQUFBQU1nRUFBSkNBQUFBMEFRQUFrUUFBQURjQkFBQ1VnQUFBT1FFQUFKVUFBQUEvQVFBQW00QUFBRVxcXG5FQkFBQ2NBQUFBakFFQUFPZUFBQUNPQVFBQTZBQUFBSmtCQUFEemdBQUFuQUVBQVBRQUFBQ3FBUUFBQW9FQUFLd0JBQUFEQVFBQXVRRUFcXFxuQUJDQkFBQzhBUUFBRVlFQUFMMEJBQUFTZ1FBQXhBRUFBQk9CQUFESEFRQUFGSUVBQU1vQkFBQVZnUUFBelFFQUFCWUJBQURjQVFBQUpZXFxcbkVBQU40QkFBQW1BUUFBN3dFQUFEZUJBQUR4QVFBQU9JRUFBUFFCQUFBNUFRQUFNd0lBQUhpQkFBQTZBZ0FBZVFFQUFEOENBQUIrZ1FBQVxcXG5RUUlBQUg4QkFBQlBBZ0FBallFQUFMQUNBQUNPQVFBQXVRSUFBSmVCQUFEQ0FnQUFtSUVBQU1ZQ0FBQ1pnUUFBMGdJQUFKcUJBQURZQWdcXFxuQUFtd0VBQU40Q0FBQ2hnUUFBNEFJQUFLSUJBQURsQWdBQXA0RUFBT3dDQUFDb0FRQUE3d0lBQUt1QkFBQUFBd0FBcklFQUFFQURBQUN0XFxcbkFRQUFSZ01BQUxPQkFBQlBBd0FBdElFQUFGQURBQUMxZ1FBQWNBTUFBTFlCQUFCNEF3QUF2b0VBQUhvREFBQy9nUUFBZXdNQUFNQ0JBQVxcXG5CK0F3QUF3UUVBQUlBREFBRERnUUFBaEFNQUFNUUJBQUNzQXdBQTdJRUFBTUlEQUFEdGdRQUF3d01BQU82QkFBRFBBd0FBN3dFQUFQc0RcXFxuQUFBYmdnQUEvUU1BQUJ3Q0FBQXdCQUFBVDRJQUFHQUVBQUJRQWdBQWd3UUFBSE9DQUFDSUJBQUFkSUlBQUlvRUFBQjFBZ0FBemdRQUFMXFxcbm1DQUFEUUJBQUF1Z0lBQUZjRkFBQkJnd0FBV1FVQUFFS0RBQUJhQlFBQVE0TUFBR0FGQUFCRWd3QUFod1VBQUVVREFBQ0pCUUFBUjRNQVxcXG5BSXNGQUFCSWd3QUFqUVVBQUVtREFBQ1FCUUFBU29NQUFKRUZBQUJMZ3dBQXZnVUFBRXdEQUFEQkJRQUFUNE1BQU1NRkFBQlFnd0FBeEFcXFxuVUFBRkdEQUFER0JRQUFVZ01BQU1nRkFBQlVnd0FBMEFVQUFGV0RBQURyQlFBQVZvTUFBTzhGQUFCWGd3QUE5UVVBQUZpREFBQUdCZ0FBXFxcbldZTUFBQkFHQUFCYWd3QUFHd1lBQUZ1REFBQWNCZ0FBWElNQUFCNEdBQUJkZ3dBQUlBWUFBRjZEQUFCQUJnQUFYNE1BQUVFR0FBQmdnd1xcXG5BQWFnWUFBR0dEQUFCdUJnQUFZb01BQUhVR0FBQmpBd0FBZVFZQUFHZURBQURVQmdBQWFJTUFBTlVHQUFCcGd3QUEzUVlBQUdvREFBRGZcXFxuQmdBQWJJTUFBT2tHQUFCdGd3QUE2Z1lBQUc2REFBQUFCd0FBYjRNQUFBNEhBQUJ3Z3dBQUVBY0FBSEdEQUFCTEJ3QUFjb01BQUUwSEFBXFxcbkJ6Z3dBQXNnY0FBSFNEQUFEQUJ3QUFkWU1BQVBZSEFBQjJnd0FBK3djQUFIZURBQUQ5QndBQWVJTUFBUDRIQUFCNWd3QUFBQWdBQUhxRFxcXG5BQUF1Q0FBQWU0TUFBREFJQUFCOGd3QUFQd2dBQUgyREFBQkFDQUFBZm9NQUFGd0lBQUIvZ3dBQVhnZ0FBSUFEQUFCZ0NBQUFnb01BQUdcXFxuc0lBQUNEZ3dBQW9BZ0FBSVNEQUFDMUNBQUFoWU1BQUxZSUFBQ0dnd0FBeUFnQUFJZURBQURUQ0FBQWlJTUFBT0lJQUFDSmd3QUE0d2dBXFxcbkFJcURBQUJZQ1FBQWl3TUFBR0FKQUFDVGd3QUFaQWtBQUpTREFBQm1DUUFBbFlNQUFIQUpBQUNXZ3dBQWNRa0FBSmVEQUFDRUNRQUFtSVxcXG5NQUFJVUpBQUNaZ3dBQWpRa0FBSnFEQUFDUENRQUFtNE1BQUpFSkFBQ2Nnd0FBa3drQUFKMkRBQUNwQ1FBQW5vTUFBS29KQUFDZmd3QUFcXFxuc1FrQUFLQURBQUN6Q1FBQW9vTUFBTFlKQUFDamd3QUF1Z2tBQUtTREFBQzhDUUFBcFlNQUFNVUpBQUNtZ3dBQXh3a0FBS2VEQUFESkNRXFxcbkFBcUlNQUFNc0pBQUNwZ3dBQXp3a0FBS3FEQUFEWENRQUFxNE1BQU5nSkFBQ3Nnd0FBM0FrQUFLMERBQURnQ1FBQXNZTUFBT1FKQUFDeVxcXG5nd0FBNWdrQUFMT0RBQUR5Q1FBQXRJTUFBUHdKQUFDMUF3QUEvd2tBQUxpREFBQUJDZ0FBdVlNQUFBUUtBQUM2Z3dBQUJRb0FBTHVEQUFcXFxuQUxDZ0FBdklNQUFBOEtBQUM5Z3dBQUVRb0FBTDZEQUFBVENnQUF2NE1BQUNrS0FBREFnd0FBS2dvQUFNR0RBQUF4Q2dBQXdnTUFBRGdLXFxcbkFBREpnd0FBT2dvQUFNcURBQUE4Q2dBQXl3TUFBRDRLQUFETmd3QUFRd29BQU02REFBQkhDZ0FBejRNQUFFa0tBQURRZ3dBQVN3b0FBTlxcXG5HREFBQk9DZ0FBMG9NQUFGRUtBQURUZ3dBQVVnb0FBTlNEQUFCWkNnQUExUU1BQUY4S0FBRGJnd0FBWmdvQUFOeURBQUIyQ2dBQTNZTUFcXFxuQUhjS0FBRGVnd0FBZ1FvQUFOK0RBQUNFQ2dBQTRJTUFBSVVLQUFEaGd3QUFqZ29BQU9LREFBQ1BDZ0FBNDRNQUFKSUtBQURrZ3dBQWt3XFxcbm9BQU9XREFBQ3BDZ0FBNW9NQUFLb0tBQURuZ3dBQXNRb0FBT2lEQUFDeUNnQUE2WU1BQUxRS0FBRHFnd0FBdFFvQUFPdURBQUM2Q2dBQVxcXG43SU1BQUx3S0FBRHRnd0FBeGdvQUFPNkRBQURIQ2dBQTc0TUFBTW9LQUFEd2d3QUF5d29BQVBHREFBRE9DZ0FBOG9NQUFOQUtBQUR6Z3dcXFxuQUEwUW9BQVBTREFBRGdDZ0FBOVlNQUFPUUtBQUQyZ3dBQTVnb0FBUGVEQUFEd0NnQUErSU1BQVBJS0FBRDVnd0FBK1FvQUFQcURBQUFBXFxcbkN3QUErNE1BQUFFTEFBRDhnd0FBQkFzQUFQMkRBQUFGQ3dBQS9vTUFBQTBMQUFEL2d3QUFEd3NBQUFDRUFBQVJDd0FBQVlRQUFCTUxBQVxcXG5BQ2hBQUFLUXNBQUFPRUFBQXFDd0FBQklRQUFERUxBQUFGaEFBQU1nc0FBQWFFQUFBMEN3QUFCNFFBQURVTEFBQUloQUFBT2dzQUFBbUVcXFxuQUFBOEN3QUFDb1FBQUVVTEFBQUxoQUFBUndzQUFBeUVBQUJKQ3dBQURZUUFBRXNMQUFBT2hBQUFUZ3NBQUErRUFBQlZDd0FBRUlRQUFGXFxcbmdMQUFBUmhBQUFYQXNBQUJJRUFBQmZDd0FBRllRQUFHUUxBQUFXaEFBQVpnc0FBQmVFQUFCd0N3QUFHQVFBQUhJTEFBQWFoQUFBZUFzQVxcXG5BQnVFQUFDQ0N3QUFISVFBQUlRTEFBQWRoQUFBaFFzQUFCNkVBQUNMQ3dBQUg0UUFBSTRMQUFBZ2hBQUFrUXNBQUNHRUFBQ1NDd0FBSW9cXFxuUUFBSllMQUFBamhBQUFtUXNBQUNTRUFBQ2JDd0FBSlFRQUFKNExBQUFvaEFBQW9Bc0FBQ21FQUFDakN3QUFLb1FBQUtVTEFBQXJoQUFBXFxcbnFBc0FBQ3lFQUFDckN3QUFMWVFBQUs0TEFBQXVoQUFBdWdzQUFDK0VBQUMrQ3dBQU1JUUFBTU1MQUFBeGhBQUF4Z3NBQURLRUFBREpDd1xcXG5BQU00UUFBTW9MQUFBMGhBQUF6Z3NBQURXRUFBRFFDd0FBTm9RQUFORUxBQUEzaEFBQTF3c0FBRGlFQUFEWUN3QUFPWVFBQU9ZTEFBQTZcXFxuaEFBQThBc0FBRHVFQUFEN0N3QUFQSVFBQUFBTUFBQTloQUFBRFF3QUFENkVBQUFPREFBQVA0UUFBQkVNQUFCQWhBQUFFZ3dBQUVHRUFBXFxcbkFwREFBQVFvUUFBQ29NQUFCRGhBQUFPZ3dBQUVTRUFBQTlEQUFBUllRQUFFVU1BQUJHaEFBQVJnd0FBRWVFQUFCSkRBQUFTSVFBQUVvTVxcXG5BQUJKaEFBQVRnd0FBRXFFQUFCVkRBQUFTNFFBQUZjTUFBQk1oQUFBV0F3QUFFMkVBQUJiREFBQVRvUUFBR0FNQUFCUGhBQUFaQXdBQUZcXFxuQ0VBQUJtREFBQVVZUUFBSEFNQUFCU2hBQUFkd3dBQUZPRUFBQ0FEQUFBVklRQUFJUU1BQUJWaEFBQWhRd0FBRmFFQUFDTkRBQUFWNFFBXFxcbkFJNE1BQUJZaEFBQWtRd0FBRm1FQUFDU0RBQUFXb1FBQUtrTUFBQmJoQUFBcWd3QUFGeUVBQUMwREFBQVhZUUFBTFVNQUFCZWhBQUF1Z1xcXG53QUFGK0VBQUM4REFBQVlJUUFBTVVNQUFCaGhBQUF4Z3dBQUdLRUFBREpEQUFBWTRRQUFNb01BQUJraEFBQXpnd0FBR1dFQUFEVkRBQUFcXFxuWm9RQUFOY01BQUJuaEFBQTNnd0FBR2dFQUFEZ0RBQUFhb1FBQU9RTUFBQnJoQUFBNWd3QUFHeUVBQUR3REFBQWJZUUFBUEVNQUFCdWhBXFxcbkFBOHd3QUFHK0VBQUFBRFFBQWNJUUFBQTBOQUFCeGhBQUFEZzBBQUhLRUFBQVJEUUFBYzRRQUFCSU5BQUIwaEFBQVJRMEFBSFdFQUFCR1xcXG5EUUFBZG9RQUFFa05BQUIzaEFBQVNnMEFBSGlFQUFCUERRQUFlWVFBQUZBTkFBQjZoQUFBVkEwQUFIdUVBQUJZRFFBQWZJUUFBRjhOQUFcXFxuQjloQUFBWkEwQUFINkVBQUJtRFFBQWY0UUFBSEFOQUFDQWhBQUFlZzBBQUlHRUFBQ0FEUUFBZ29RQUFJRU5BQUNEaEFBQWhBMEFBSVNFXFxcbkFBQ0ZEUUFBaFlRQUFKY05BQUNHaEFBQW1nMEFBSWVFQUFDeURRQUFpSVFBQUxNTkFBQ0poQUFBdkEwQUFJb0VBQUMrRFFBQWpJUUFBTVxcXG5BTkFBQ05oQUFBeHcwQUFJNkVBQURLRFFBQWo0UUFBTXNOQUFDUWhBQUF6dzBBQUpHRUFBRFZEUUFBa2dRQUFOZ05BQUNWaEFBQTRBMEFcXFxuQUphRUFBRG1EUUFBbDRRQUFQQU5BQUNZaEFBQThnMEFBSm1FQUFEMERRQUFtb1FBQVBVTkFBQ2JoQUFBQVE0QUFKeUVBQUF6RGdBQW5ZXFxcblFBQURRT0FBQ2VoQUFBT3c0QUFKK0VBQUEvRGdBQW9JUUFBRUFPQUFDaGhBQUFUdzRBQUtLRUFBQlFEZ0FBbzRRQUFGb09BQUNraEFBQVxcXG5YQTRBQUtXRUFBQ0JEZ0FBcG9RQUFJTU9BQUNuQkFBQWhnNEFBS3FFQUFDTERnQUFxNFFBQUl3T0FBQ3NoQUFBcEE0QUFLMEVBQUNuRGdcXFxuQUFzSVFBQUxNT0FBQ3hoQUFBdEE0QUFMS0VBQUMrRGdBQXM0UUFBTUFPQUFDMGhBQUF4UTRBQUxVRUFBRElEZ0FBdUlRQUFNNE9BQUM1XFxcbmhBQUEwQTRBQUxxRUFBRGFEZ0FBdTRRQUFOd09BQUM4QkFBQTNnNEFBTDZFQUFEZ0RnQUF2NFFBQUFBUEFBREFoQUFBQVE4QUFNR0VBQVxcXG5BTER3QUF3Z1FBQUEwUEFBREVoQUFBR0E4QUFNV0VBQUFhRHdBQXhvUUFBQ0FQQUFESGhBQUFLZzhBQU1pRUFBQTFEd0FBeVFRQUFEb1BcXFxuQUFET2hBQUFQZzhBQU0rRUFBQkREd0FBMElRQUFFUVBBQURSaEFBQVNBOEFBTktFQUFCSkR3QUEwNFFBQUUwUEFBRFVoQUFBVGc4QUFOXFxcbldFQUFCU0R3QUExb1FBQUZNUEFBRFhoQUFBVnc4QUFOaUVBQUJZRHdBQTJZUUFBRndQQUFEYWhBQUFYUThBQU51RUFBQnBEd0FBM0lRQVxcXG5BR29QQUFEZGhBQUFiUThBQU42RUFBQnhEd0FBMzRRQUFITVBBQURnQkFBQWVnOEFBT2VFQUFDQkR3QUE2SVFBQUlJUEFBRHBoQUFBaFFcXFxuOEFBT3FFQUFDR0R3QUE2NFFBQUpNUEFBRHNoQUFBbEE4QUFPMkVBQUNZRHdBQTdvUUFBSmtQQUFEdmhBQUFuUThBQVBDRUFBQ2VEd0FBXFxcbjhZUUFBS0lQQUFEeWhBQUFvdzhBQVBPRUFBQ25Ed0FBOUlRQUFLZ1BBQUQxaEFBQXJBOEFBUGFFQUFDdER3QUE5NFFBQUxrUEFBRDRoQVxcXG5BQXVnOEFBUG1FQUFDOUR3QUErb1FBQUw0UEFBRDdoQUFBeGc4QUFQeUVBQURIRHdBQS9ZUUFBTTBQQUFEK2hBQUF6ZzhBQVArRUFBRGJcXFxuRHdBQUFJVUFBQUFRQUFBQmhRQUFTaEFBQUFLRkFBQlFFQUFBQTRVQUFKNFFBQUFFaFFBQW9CQUFBQVdGQUFESEVBQUFCb1VBQU1nUUFBXFxcbkFIaFFBQXpSQUFBQWlGQUFET0VBQUFDWVVBQU5BUUFBQUtoUUFBK3hBQUFBc0ZBQUQ5RUFBQURZVUFBQUFSQUFBT2hRQUFYeEVBQUErRlxcXG5BQUJoRVFBQUVJVUFBQUFTQUFBUmhRQUFTUklBQUJLRkFBQktFZ0FBRTRVQUFFNFNBQUFVaFFBQVVCSUFBQldGQUFCWEVnQUFGZ1VBQUZcXFxub1NBQUFaaFFBQVhoSUFBQnFGQUFCZ0VnQUFHNFVBQUlrU0FBQWNoUUFBaWhJQUFCMkZBQUNPRWdBQUhvVUFBSkFTQUFBZmhRQUFzUklBXFxcbkFDQ0ZBQUN5RWdBQUlZVUFBTFlTQUFBaWhRQUF1QklBQUNPRkFBQy9FZ0FBSkFVQUFNSVNBQUFuaFFBQXhoSUFBQ2lGQUFESUVnQUFLWVxcXG5VQUFOY1NBQUFxaFFBQTJCSUFBQ3VGQUFBUkV3QUFMSVVBQUJJVEFBQXRoUUFBRmhNQUFDNkZBQUFZRXdBQUw0VUFBRnNUQUFBd2hRQUFcXFxuWFJNQUFER0ZBQUJnRXdBQU1vVUFBSDBUQUFBemhRQUFnQk1BQURTRkFBQ1FFd0FBTllVQUFKb1RBQUEyaFFBQW9CTUFBRGVGQUFEMkV3XFxcbkFBT0lVQUFQZ1RBQUE1QlFBQS9oTUFBRCtGQUFBQUZBQUFRSVVBQUFFVUFBQkJoUUFBYlJZQUFFS0ZBQUJ2RmdBQVE0VUFBSUFXQUFCRVxcXG5oUUFBZ1JZQUFFV0ZBQUNiRmdBQVJvVUFBSjBXQUFCSGhRQUFvQllBQUVpRkFBRHJGZ0FBU1lVQUFQRVdBQUJLaFFBQStSWUFBRXVGQUFcXFxuQUFGd0FBVElVQUFBMFhBQUJOaFFBQURoY0FBRTZGQUFBVkZ3QUFUNFVBQUNBWEFBQlFoUUFBTlJjQUFGR0ZBQUEzRndBQVVvVUFBRUFYXFxcbkFBQlRoUUFBVkJjQUFGU0ZBQUJnRndBQVZZVUFBRzBYQUFCV2hRQUFiaGNBQUZlRkFBQnhGd0FBV0lVQUFISVhBQUJaaFFBQWRCY0FBRlxcXG5xRkFBQ0FGd0FBVzRVQUFMUVhBQUJjaFFBQXRoY0FBRjJGQUFEVUZ3QUFYb1VBQU5jWEFBQmZoUUFBMkJjQUFHQ0ZBQURjRndBQVlZVUFcXFxuQU40WEFBQmloUUFBNEJjQUFHT0ZBQURxRndBQVpJVUFBUEFYQUFCbGhRQUEraGNBQUdhRkFBQUFHQUFBWjRVQUFBWVlBQUJvaFFBQUJ4XFxcbmdBQUdtRkFBQUxHQUFBYW9VQUFBNFlBQUJyaFFBQUVCZ0FBR3lGQUFBYUdBQUFiWVVBQUNBWUFBQnVoUUFBZVJnQUFHK0ZBQUNBR0FBQVxcXG5jSVVBQUtzWUFBQnhoUUFBc0JnQUFIS0ZBQUQyR0FBQWM0VUFBQUFaQUFCMGhRQUFIeGtBQUhXRkFBQWdHUUFBZG9VQUFDd1pBQUIzaFFcXFxuQUFNQmtBQUhpRkFBQThHUUFBZVlVQUFFQVpBQUI2aFFBQVFSa0FBSHVGQUFCRUdRQUFmSVVBQUVZWkFBQjloUUFBYmhrQUFINkZBQUJ3XFxcbkdRQUFmNFVBQUhVWkFBQ0FoUUFBZ0JrQUFJR0ZBQUNzR1FBQWdvVUFBTEFaQUFDRGhRQUF5aGtBQUlTRkFBRFFHUUFBaFlVQUFOb1pBQVxcXG5DR2hRQUEyeGtBQUllRkFBRGVHUUFBaUlVQUFBQWFBQUNKaFFBQUhCb0FBSXFGQUFBZUdnQUFpNFVBQUNBYUFBQ01oUUFBWHhvQUFJMkZcXFxuQUFCZ0dnQUFqb1VBQUgwYUFBQ1BoUUFBZnhvQUFKQ0ZBQUNLR2dBQWtZVUFBSkFhQUFDU2hRQUFtaG9BQUpPRkFBQ2dHZ0FBbElVQUFLXFxcbmNhQUFDVmhRQUFxQm9BQUphRkFBQ3VHZ0FBbDRVQUFMQWFBQUNZaFFBQXZob0FBSm1GQUFDL0dnQUFtb1VBQU1FYUFBQ2JoUUFBQUJzQVxcXG5BSnlGQUFCTUd3QUFuWVVBQUZBYkFBQ2VoUUFBV2hzQUFKK0ZBQUJyR3dBQW9JVUFBSFFiQUFDaGhRQUFmUnNBQUtLRkFBQ0FHd0FBbzRcXFxuVUFBUFFiQUFDa2hRQUEvQnNBQUtXRkFBQUFIQUFBcG9VQUFEZ2NBQUNuaFFBQU94d0FBS2lGQUFCQUhBQUFxWVVBQUVvY0FBQ3FoUUFBXFxcblRSd0FBS3VGQUFCK0hBQUFySVVBQUlBY0FBQ3RCUUFBaEJ3QUFMR0ZBQUNHSEFBQXNnVUFBSWtjQUFDMWhRQUFrQndBQUxZRkFBQzdIQVxcXG5BQTRZVUFBTDBjQUFEaUJRQUF3QndBQU9XRkFBRElIQUFBNW9VQUFOQWNBQURuaFFBQTB4d0FBT2lGQUFEVUhBQUE2WVVBQVBzY0FBRHFcXFxuaFFBQUFCMEFBT3VGQUFBc0hRQUE3QVVBQUdzZEFBQXJoZ0FBZUIwQUFDeUdBQUI1SFFBQUxZWUFBSnNkQUFBdUJnQUF3QjBBQUZPR0FBXFxcbkQ2SFFBQVZJWUFBUHNkQUFCVmhnQUFBQjRBQUZZR0FBQ1ZIZ0FBNjRZQUFKb2VBQURzQmdBQW5CNEFBTzZHQUFDZUhnQUE3d1lBQVA4ZVxcXG5BQUJRaHdBQUNCOEFBRkVIQUFBUUh3QUFXWWNBQUJZZkFBQmFod0FBR0I4QUFGc0hBQUFlSHdBQVlZY0FBQ0FmQUFCaWh3QUFLQjhBQUdcXFxuTUhBQUF3SHdBQWE0Y0FBRGdmQUFCc0J3QUFRQjhBQUhTSEFBQkdId0FBZFljQUFFZ2ZBQUIyQndBQVRoOEFBSHlIQUFCUUh3QUFmWWNBXFxcbkFGZ2ZBQUIrQndBQVlCOEFBSWFIQUFCb0h3QUFod2NBQUg0ZkFBQ2Rod0FBZ0I4QUFKNEhBQUN3SHdBQXpvY0FBTElmQUFEUEJ3QUEwQlxcXG44QUFPMkhBQURUSHdBQTdvY0FBTlFmQUFEdmh3QUExaDhBQVBDSEFBRFlId0FBOFFjQUFPQWZBQUQ1aHdBQTR4OEFBUHFIQUFEa0h3QUFcXFxuKzRjQUFPZ2ZBQUQ4QndBQThCOEFBQVNJQUFEeUh3QUFCUWdBQUFBZ0FBQVRpQUFBQ3lBQUFCU0lBQUFNSUFBQUZZZ0FBQTRnQUFBV2lBXFxcbkFBRUNBQUFCY0lBQUFTSUFBQUdZZ0FBQmNnQUFBYWlBQUFHQ0FBQUJ1SUFBQWtJQUFBSElnQUFDY2dBQUFkaUFBQUtDQUFBQjZJQUFBdlxcXG5JQUFBSDRnQUFEQWdBQUFnaUFBQU15QUFBQ0VJQUFBNElBQUFKb2dBQUR3Z0FBQW5DQUFBUHlBQUFDcUlBQUJISUFBQUt3Z0FBRW9nQUFcXFxuQXVpQUFBVnlBQUFDK0lBQUJZSUFBQU1JZ0FBRjhnQUFBeENBQUFZU0FBQURPSUFBQmtJQUFBTklnQUFHVWdBQUExaUFBQWNDQUFBRFlJXFxcbkFBQnlJQUFBT0lnQUFIUWdBQUE1Q0FBQW5TQUFBR0tJQUFDZ0lBQUFZNGdBQUtnZ0FBQmtpQUFBcVNBQUFHV0lBQURBSUFBQVpvZ0FBTlxcXG5BZ0FBQm5pQUFBOFNBQUFHaUlBQUFBSVFBQWFRZ0FBQXNoQUFCMGlBQUFEeUVBQUhXSUFBQVFJUUFBZG9nQUFCSWhBQUIzaUFBQUZDRUFcXFxuQUhnSUFBQVhJUUFBZTRnQUFCa2hBQUI4Q0FBQUd5RUFBSDZJQUFBZUlRQUFmNGdBQUNBaEFBQ0FDQUFBTHlFQUFJK0lBQUF4SVFBQWtBXFxcbmdBQUQwaEFBQ2NpQUFBUHlFQUFKMElBQUJCSVFBQW40Z0FBRVVoQUFDZ2lBQUFSeUVBQUtFSUFBQktJUUFBcElnQUFFNGhBQUNsQ0FBQVxcXG5nQ0VBQU5lSUFBQ0RJUUFBMkFnQUFJVWhBQURhaUFBQWlTRUFBTnVJQUFDS0lRQUEzSWdBQUl3aEFBRGRpQUFBa0NFQUFONklBQUFzSWdcXFxuQUEzd2dBQURFaUFBRGtpQUFBWUNJQUFPV0lBQUJoSWdBQTVvZ0FBRzRpQUFEbmlBQUFjQ0lBQU9pSUFBQXBJd0FBNlFnQUFDc2pBQURyXFxcbmlBQUFKeVFBQU95SUFBQkFKQUFBN1lnQUFFc2tBQUR1aUFBQVlDUUFBTzhJQUFDSUpBQUFGNGtBQUp3a0FBQVlDUUFBNnlRQUFHZUpBQVxcXG5BTUtnQUFhSWtBQUEwcUFBQnBpUUFBZENvQUFHb0pBQUIzS2dBQWJZa0FBTndxQUFCdWlRQUEzU29BQUcrSkFBQjBLd0FBY0lrQUFIWXJcXFxuQUFCeGlRQUFsaXNBQUhLSkFBQ1hLd0FBYzRrQUFBQXNBQUIwQ1FBQU1Dd0FBS1NKQUFCZkxBQUFwUWtBQUdVc0FBQ3JpUUFBWnl3QUFLXFxcbndKQUFCekxBQUF1SWtBQUhVc0FBQzVpUUFBZGl3QUFMcUpBQUI4TEFBQXV3a0FBT01zQUFBaWlnQUE1U3dBQUNPS0FBRHJMQUFBSkFvQVxcXG5BTzRzQUFBbmlnQUE4aXdBQUNnS0FBRDBMQUFBS29vQUFQa3NBQUFyaWdBQUFDMEFBQ3lLQUFBbUxRQUFMUW9BQUNndEFBQXZpZ0FBTFNcXFxuMEFBRENLQUFBdUxRQUFNWW9BQURBdEFBQXlpZ0FBYUMwQUFET0tBQUJ2TFFBQU5Bb0FBSEV0QUFBMmlnQUFmeTBBQURlS0FBQ1hMUUFBXFxcbk9Jb0FBS0F0QUFBNWlnQUFweTBBQURxS0FBQ29MUUFBTzRvQUFLOHRBQUE4aWdBQXNDMEFBRDJLQUFDM0xRQUFQb29BQUxndEFBQS9pZ1xcXG5BQXZ5MEFBRUNLQUFEQUxRQUFRWW9BQU1jdEFBQkNpZ0FBeUMwQUFFT0tBQURQTFFBQVJJb0FBTkF0QUFCRmlnQUExeTBBQUVhS0FBRFlcXFxuTFFBQVI0b0FBTjh0QUFCSWlnQUE0QzBBQUVtS0FBQUFMZ0FBU29vQUFDOHVBQUJMaWdBQU1DNEFBRXlLQUFCVExnQUFUWW9BQUlBdUFBXFxcbkJPaWdBQW1pNEFBRStLQUFDYkxnQUFVSW9BQUo4dUFBQlJpZ0FBb0M0QUFGS0tBQUR6TGdBQVU0b0FBUFF1QUFCVWlnQUFBQzhBQUZVS1xcXG5BQURXTHdBQUs0c0FBQUF3QUFBc0N3QUFBekFBQUMrTEFBQUZNQUFBTUlzQUFBZ3dBQUF4aXdBQUtqQUFBREtMQUFBdU1BQUFNNHNBQURcXFxuWXdBQUEwQ3dBQVBUQUFBRHVMQUFCQU1BQUFQSXNBQUVFd0FBQTlpd0FBbHpBQUFENkxBQUNaTUFBQVA0c0FBSnN3QUFCQUN3QUFuVEFBXFxcbkFFS0xBQUNmTUFBQVF3c0FBS0V3QUFCRml3QUEvekFBQUVhTEFBQUFNUUFBUjRzQUFBVXhBQUJJaXdBQU1ERUFBRWtMQUFDUU1RQUFxWVxcXG5zQUFKSXhBQUNxQ3dBQW9ERUFBTGlMQUFEQU1RQUF1WXNBQU9ReEFBQzZpd0FBOERFQUFMdUxBQUFBTWdBQXZBc0FBRWd5QUFBRWpBQUFcXFxuVURJQUFBVU1BQUFBTkFBQXRZMEFBTUJOQUFDMmpRQUFBRTRBQUxlTkFBRDlud0FBdUkwQUFBQ2dBQUM1alFBQWphUUFBTHFOQUFDUXBBXFxcbkFBdTQwQUFNZWtBQUM4alFBQTBLUUFBTDJOQUFEK3BBQUF2bzBBQUFDbEFBQy9qUUFBRGFZQUFNQ05BQUFRcGdBQXdZMEFBQ3ltQUFEQ1xcXG5qUUFBUUtZQUFNTU5BQUJ0cGdBQThJMEFBSENtQUFEeGpRQUFkS1lBQVBLTkFBQitwZ0FBOHcwQUFKNm1BQUFUamdBQTVxWUFBQlNPQUFcXFxuRHdwZ0FBRlk0QUFQS21BQUFXamdBQStLWUFBQmVPQUFBQXB3QUFHSTRBQUJlbkFBQVpqZ0FBSUtjQUFCcU9BQUFpcHdBQUd3NEFBQytuXFxcbkFBQW9qZ0FBTXFjQUFDa09BQUJ4cHdBQWFJNEFBSG1uQUFCcERnQUFoNmNBQUhlT0FBQ0pwd0FBZUk0QUFJdW5BQUI1RGdBQWpxY0FBSFxcXG55T0FBQ1Fwd0FBZlE0QUFKT25BQUNBamdBQWxxY0FBSUVPQUFEQXB3QUFxNDRBQU1LbkFBQ3NEZ0FBeTZjQUFMV09BQUQxcHdBQXRvNEFcXFxuQVBhbkFBQzNqZ0FBK0tjQUFMZ09BQUQ2cHdBQXVvNEFBQ2lvQUFDN2pnQUFMS2dBQUx5T0FBQXRxQUFBdlk0QUFEQ29BQUMramdBQU9xXFxcbmdBQUwrT0FBQkFxQUFBd0k0QUFIU29BQURCamdBQWVLZ0FBTUtPQUFDQXFBQUF3NDRBQU1hb0FBREVqZ0FBenFnQUFNV09BQURRcUFBQVxcXG54bzRBQU5xb0FBREhqZ0FBNEtnQUFNaU9BQUQ0cUFBQXlZNEFBUHVvQUFES0RnQUEvYWdBQU15T0FBQXVxUUFBelk0QUFEQ3BBQURPamdcXFxuQUFWS2tBQU0rT0FBQmZxUUFBMEk0QUFIMnBBQURSamdBQWdLa0FBTktPQUFEQnFRQUEwNDRBQU02cEFBRFVqZ0FBejZrQUFOV09BQURhXFxcbnFRQUExbzRBQU42cEFBRFhqZ0FBNEtrQUFOaU9BQUQvcVFBQTJZNEFBQUNxQUFEYWpnQUFONm9BQU51T0FBQkFxZ0FBM0k0QUFFNnFBQVxcXG5EZGpnQUFVS29BQU42T0FBQmFxZ0FBMzQ0QUFGeXFBQURnamdBQVlLb0FBT0dPQUFCM3FnQUE0bzRBQUhxcUFBRGpqZ0FBdzZvQUFPU09cXFxuQUFEYnFnQUE1WTRBQU42cUFBRG1qZ0FBNEtvQUFPZU9BQUR3cWdBQTZJNEFBUEtxQUFEcGpnQUE5Nm9BQU9xT0FBQUJxd0FBNjQ0QUFBXFxcbmVyQUFEc2pnQUFDYXNBQU8yT0FBQVBxd0FBN280QUFCR3JBQUR2amdBQUY2c0FBUENPQUFBZ3F3QUE4WTRBQUNlckFBRHlqZ0FBS0tzQVxcXG5BUE9PQUFBdnF3QUE5STRBQURDckFBRDFqZ0FBVzZzQUFQWU9BQUJncXdBQSs0NEFBR21yQUFEOGpnQUFhcXNBQVAyT0FBQnNxd0FBL29cXFxuNEFBSENyQUFEL0RnQUF3S3NBQUUrUEFBRHJxd0FBVUk4QUFPeXJBQUJSandBQTdxc0FBRktQQUFEd3F3QUFVNDhBQVBxckFBQlVqd0FBXFxcbkFLd0FBRldQQUFDazF3QUFWbzhBQUxEWEFBQlhqd0FBeDljQUFGaVBBQURMMXdBQVdZOEFBUHpYQUFCYWp3QUFBUGtBQUZzUEFBQUgrUVxcXG5BQVlvOEFBQW41QUFCakR3QUFEdm9BQUdpUUFBQVErZ0FBYVJBQUFCUDZBQUJza0FBQUZmb0FBRzBRQUFBaitnQUFlNUFBQUNYNkFBQjhcXFxuRUFBQUovb0FBSDZRQUFBcStnQUFmeEFBQUYzNkFBQ3lrQUFBWC9vQUFMTVFBQUJ1K2dBQXdwQUFBSEQ2QUFEREVBQUEydm9BQUMyUkFBXFxcbkFBK3dBQUxoRUFBQVg3QUFBemtRQUFCL3NBQURTUkFBQVQrd0FBTlJFQUFCajdBQUE2a1FBQUhmc0FBRHNSQUFCUSt3QUFicEVBQUZMN1xcXG5BQUJ2a1FBQVZ2c0FBSENSQUFCYSt3QUFjWkVBQUY3N0FBQnlrUUFBWXZzQUFIT1JBQUJtK3dBQWRKRUFBR3I3QUFCMWtRQUFidnNBQUhcXFxuYVJBQUJ5K3dBQWQ1RUFBSGI3QUFCNGtRQUFldnNBQUhtUkFBQisrd0FBZXBFQUFJTDdBQUI3a1FBQWhQc0FBSHlSQUFDRyt3QUFmWkVBXFxcbkFJajdBQUIra1FBQWl2c0FBSCtSQUFDTSt3QUFnSkVBQUk3N0FBQ0JrUUFBa3ZzQUFJS1JBQUNXK3dBQWc1RUFBSnI3QUFDRWtRQUFudlxcXG5zQUFJV1JBQUNnK3dBQWhwRUFBS1Q3QUFDSGtRQUFwdnNBQUlpUkFBQ3Erd0FBaVpFQUFLNzdBQUNLa1FBQXNQc0FBSXVSQUFDeSt3QUFcXFxuakpFQUFNTDdBQUNOa1FBQTAvc0FBSTZSQUFEWCt3QUFqNUVBQU5uN0FBQ1FrUUFBMi9zQUFKR1JBQURkK3dBQWtwRUFBTjc3QUFDVGtRXFxcbkFBNFBzQUFKU1JBQURpK3dBQWxaRUFBT1Q3QUFDV2tRQUE2UHNBQUplUkFBRHErd0FBbUpFQUFPejdBQUNaa1FBQTd2c0FBSnFSQUFEd1xcXG4rd0FBbTVFQUFQTDdBQUNja1FBQTlQc0FBSjJSQUFEMit3QUFucEVBQVBuN0FBQ2ZrUUFBL1BzQUFLQ1JBQUFBL0FBQW9SRUFBRHo5QUFcXFxuRGRrZ0FBUHYwQUFONlNBQUJBL1FBQTM1SUFBRkQ5QUFEZ2tnQUFVZjBBQU9HU0FBQlQvUUFBNGhJQUFGajlBQURua2dBQVd2MEFBT2dTXFxcbkFBQmYvUUFBN1pJQUFHSDlBQUR1a2dBQVl2MEFBTytTQUFCay9RQUE4SklBQUdiOUFBRHhrZ0FBWi8wQUFQS1NBQUJwL1FBQTg1SUFBR1xcXG5yOUFBRDBrZ0FBYlAwQUFQV1NBQUJ1L1FBQTlwSUFBRy85QUFEM2tnQUFjZjBBQVBpU0FBQnovUUFBK1JJQUFIYjlBQUQ4a2dBQWVQMEFcXFxuQVAwU0FBQjgvUUFBQVpNQUFINzlBQUFDRXdBQWcvMEFBQWVUQUFDRi9RQUFDSk1BQUlmOUFBQUprd0FBaWYwQUFBb1RBQUNRL1FBQUVaXFxcbk1BQUpMOUFBQVNFd0FBbC8wQUFCZVRBQUNaL1FBQUdCTUFBSno5QUFBYmt3QUFudjBBQUJ3VEFBREkvUUFBUnBNQUFQRDlBQUJIRXdBQVxcXG4vdjBBQUZXVEFBQUEvZ0FBVnBNQUFCRCtBQUJYRXdBQUdmNEFBR0NUQUFBZy9nQUFZWk1BQUREK0FBQmlFd0FBTS80QUFHV1RBQUExL2dcXFxuQUFaaE1BQUVYK0FBQjJrd0FBUi80QUFIY1RBQUJKL2dBQWVaTUFBRTMrQUFCNmt3QUFVUDRBQUhzVEFBQlMvZ0FBZlpNQUFGVCtBQUIrXFxcbkV3QUFiUDRBQUphVEFBQncvZ0FBbHhNQUFJSCtBQUNva3dBQWcvNEFBS21UQUFDRi9nQUFxcE1BQUlmK0FBQ3Jrd0FBaWY0QUFLeVRBQVxcXG5DTi9nQUFyWk1BQUkvK0FBQ3Vrd0FBay80QUFLK1RBQUNWL2dBQXNKTUFBSm4rQUFDeGt3QUFuZjRBQUxLVEFBQ2gvZ0FBczVNQUFLWCtcXFxuQUFDMGt3QUFxZjRBQUxXVEFBQ3IvZ0FBdHBNQUFLMytBQUMza3dBQXIvNEFBTGlUQUFDeC9nQUF1Wk1BQUxYK0FBQzZrd0FBdWY0QUFMXFxcbnVUQUFDOS9nQUF2Sk1BQU1IK0FBQzlrd0FBeGY0QUFMNlRBQURKL2dBQXY1TUFBTTMrQUFEQWt3QUEwZjRBQU1HVEFBRFYvZ0FBd3BNQVxcXG5BTm4rQUFERGt3QUEzZjRBQU1TVEFBRGgvZ0FBeFpNQUFPWCtBQURHa3dBQTZmNEFBTWVUQUFEdC9nQUF5Sk1BQU8vK0FBREprd0FBOGZcXFxuNEFBTXFUQUFEMS9nQUF5NU1BQVBmK0FBRE1rd0FBK2Y0QUFNMlRBQUQ3L2dBQXpwTUFBUDMrQUFEUGt3QUEvLzRBQU5BVEFBQy8vd0FBXFxcbmtKUUFBTUwvQUFDUkZBQUF5UDhBQUplVUFBREsvd0FBbUJRQUFORC9BQUNlbEFBQTB2OEFBSjhVQUFEWS93QUFwWlFBQU5yL0FBQ21GQVxcXG5BQTNmOEFBS21VQUFEZy93QUFxaFFBQU8vL0FBQzVsQUFBQUFBQkFMcVVBQUFNQUFFQXU1UUFBQTBBQVFDOGxBQUFKd0FCQUwyVUFBQW9cXFxuQUFFQXZwUUFBRHNBQVFDL2xBQUFQQUFCQU1DVUFBQStBQUVBd1pRQUFEOEFBUURDbEFBQVRnQUJBTU9VQUFCUUFBRUF4SlFBQUY0QUFRXFxcbkRGbEFBQWdBQUJBTWFVQUFEN0FBRUF4NVFBQUFBQkFRRElsQUFBQXdFQkFNbVVBQUFIQVFFQXlwUUFBRFFCQVFETGxBQUFOd0VCQU15VVxcXG5BQUNQQVFFQXpaUUFBSkFCQVFET2xBQUFuUUVCQU0rVUFBQ2dBUUVBMEpRQUFLRUJBUURSbEFBQTBBRUJBTktVQUFEOUFRRUEwNVFBQVBcXFxuNEJBUURVbEFBQWdBSUJBTldVQUFDZEFnRUExcFFBQUtBQ0FRRFhsQUFBMFFJQkFOaVVBQURnQWdFQTJaUUFBT0VDQVFEYWxBQUEvQUlCXFxcbkFOdVVBQUFBQXdFQTNKUUFBQ0FEQVFEZGxBQUFKQU1CQU42VUFBQXRBd0VBMzVRQUFFRURBUURnbEFBQVFnTUJBT0dVQUFCS0F3RUE0cFxcXG5RQUFFc0RBUURqbEFBQVVBTUJBT1NVQUFCN0F3RUE1WlFBQUlBREFRRG1sQUFBbmdNQkFPY1VBQUNnQXdFQTZaUUFBTVFEQVFEcWxBQUFcXFxueUFNQkFPdVVBQURRQXdFQTdKUUFBTllEQVFEdGxBQUFBQVFCQU80VUFBQW9CQUVBRnBVQUFKNEVBUUFYbFFBQW9BUUJBQmlWQUFDcUJBXFxcbkVBR1pVQUFMQUVBUUFhRlFBQTFBUUJBRDZWQUFEWUJBRUFQNVVBQVB3RUFRQkFsUUFBQUFVQkFFR1ZBQUFvQlFFQVFwVUFBREFGQVFCRFxcXG5sUUFBWkFVQkFFU1ZBQUJ2QlFFQVJaVUFBSEFGQVFCR2xRQUFBQVlCQUVlVkFBQTNCd0VBU0pVQUFFQUhBUUJKbFFBQVZnY0JBRXFWQUFcXFxuQmdCd0VBUzVVQUFHZ0hBUUJNbFFBQUFBZ0JBRTJWQUFBR0NBRUFUcFVBQUFnSUFRQlBGUUFBQ2dnQkFGR1ZBQUEyQ0FFQVVwVUFBRGNJXFxcbkFRQlRsUUFBT1FnQkFGU1ZBQUE4Q0FFQVZaVUFBRDBJQVFCV2xRQUFQd2dCQUZlVkFBQldDQUVBV0pVQUFGY0lBUUJabFFBQVlBZ0JBRlxcXG5xVkFBQjNDQUVBVzVVQUFJQUlBUUJjbFFBQW53Z0JBRjJWQUFDbkNBRUFYcFVBQUxBSUFRQmZsUUFBNEFnQkFHQ1ZBQUR6Q0FFQVlaVUFcXFxuQVBRSUFRQmlsUUFBOWdnQkFHT1ZBQUQ3Q0FFQVpKVUFBQUFKQVFCbGxRQUFGZ2tCQUdhVkFBQWNDUUVBWjVVQUFCOEpBUUJvbFFBQUlBXFxcbmtCQUdtVkFBQTZDUUVBYXBVQUFEOEpBUUJybFFBQVFBa0JBR3lWQUFDQUNRRUFiWlVBQUxnSkFRQnVsUUFBdkFrQkFHK1ZBQUMrQ1FFQVxcXG5jSlVBQU1BSkFRQnhsUUFBMEFrQkFIS1ZBQURTQ1FFQWM1VUFBQUFLQVFCMGxRQUFCQW9CQUhXVkFBQUZDZ0VBZHBVQUFBY0tBUUIzbFFcXFxuQUFEQW9CQUhpVkFBQVVDZ0VBZVpVQUFCVUtBUUI2bFFBQUdBb0JBSHVWQUFBWkNnRUFmSlVBQURZS0FRQjlsUUFBT0FvQkFINlZBQUE3XFxcbkNnRUFmNVVBQUQ4S0FRQ0FsUUFBUUFvQkFJR1ZBQUJKQ2dFQWdwVUFBRkFLQVFDRGxRQUFXUW9CQUlTVkFBQmdDZ0VBaFpVQUFIMEtBUVxcXG5DR2xRQUFnQW9CQUllVkFBQ2RDZ0VBaUpVQUFLQUtBUUNKbFFBQXdBb0JBSXFWQUFESUNnRUFpNVVBQU1rS0FRQ01sUUFBNXdvQkFJMlZcXFxuQUFEckNnRUFqcFVBQVBjS0FRQ1BsUUFBQUFzQkFKQ1ZBQUEyQ3dFQWtaVUFBRGtMQVFDU2xRQUFRQXNCQUpPVkFBQldDd0VBbEpVQUFGXFxcbmdMQVFDVmxRQUFZQXNCQUphVkFBQnpDd0VBbDVVQUFIZ0xBUUNZbFFBQWdBc0JBSm1WQUFDU0N3RUFtcFVBQUprTEFRQ2JsUUFBblFzQlxcXG5BSnlWQUFDcEN3RUFuWlVBQUxBTEFRQ2VsUUFBQUF3QkFKK1ZBQUJKREFFQW9KVUFBSUFNQVFDaEZRQUFzd3dCQU5TVkFBREFEQUVBMVpcXFxuVUFBUE1NQVFEV2xRQUErZ3dCQU5lVkFBQUFEUUVBMkpVQUFDZ05BUURabFFBQU1BMEJBTnFWQUFBNkRRRUEyNVVBQUdBT0FRRGNsUUFBXFxcbmZ3NEJBTjJWQUFDQURnRUEzcFVBQUtvT0FRRGZsUUFBcXc0QkFPQ1ZBQUN0RGdFQTRaVUFBSzRPQVFEaWxRQUFzQTRCQU9PVkFBQ3lEZ1xcXG5FQTVKVUFBQUFQQVFEbGxRQUFIUThCQU9hVkFBQW5Ed0VBNTVVQUFDZ1BBUURvbFFBQU1BOEJBT21WQUFCUkR3RUE2cFVBQUZvUEFRRHJcXFxubFFBQXNBOEJBT3lWQUFERkR3RUE3WlVBQU13UEFRRHVsUUFBNEE4QkFPK1ZBQUQzRHdFQThKVUFBQUFRQVFEeGxRQUFSeEFCQVBLVkFBXFxcbkJPRUFFQTg1VUFBRklRQVFEMGxRQUFaaEFCQVBXVkFBQndFQUVBOXBVQUFIOFFBUUQzbFFBQXV4QUJBUGlWQUFDOUVBRUErWlVBQUw0UVxcXG5BUUQ2bFFBQXdoQUJBUHVWQUFEUUVBRUEvSlVBQU9rUUFRRDlsUUFBOEJBQkFQNlZBQUQ2RUFFQS81VUFBQUFSQVFBQWxnQUFOUkVCQUFcXFxuR1dBQUEyRVFFQUFwWUFBRUFSQVFBRGxnQUFSQkVCQUFTV0FBQklFUUVBQlpZQUFGQVJBUUFHbGdBQWRCRUJBQWVXQUFCMkVRRUFDSllBXFxcbkFIY1JBUUFKbGdBQWdCRUJBQXFXQUFERkVRRUFDNVlBQU1rUkFRQU1sZ0FBelJFQkFBMldBQURPRVFFQURwWUFBTnNSQVFBUEZnQUEzUlxcXG5FQkFCR1dBQURnRVFFQUVwWUFBT0VSQVFBVGxnQUE5UkVCQUJTV0FBQUFFZ0VBRlpZQUFCSVNBUUFXbGdBQUV4SUJBQmVXQUFBNEVnRUFcXFxuR0pZQUFENFNBUUFabGdBQVB4SUJBQnFXQUFDQUVnRUFHNVlBQUljU0FRQWNGZ0FBaWhJQkFCK1dBQUNPRWdFQUlKWUFBSThTQVFBaGxnXFxcbkFBbmhJQkFDS1dBQUNmRWdFQUk1WUFBS2tTQVFBa2xnQUFxaElCQUNXV0FBQ3dFZ0VBSnBZQUFPc1NBUUFubGdBQThCSUJBQ2lXQUFENlxcXG5FZ0VBS1pZQUFBQVRBUUFxbGdBQUJCTUJBQ3VXQUFBRkV3RUFMSllBQUEwVEFRQXRsZ0FBRHhNQkFDNldBQUFSRXdFQUw1WUFBQk1UQVFcXFxuQXdsZ0FBS1JNQkFER1dBQUFxRXdFQU1wWUFBREVUQVFBemxnQUFNaE1CQURTV0FBQTBFd0VBTlpZQUFEVVRBUUEybGdBQU9oTUJBRGVXXFxcbkFBQTdFd0VBT0pZQUFFVVRBUUE1bGdBQVJ4TUJBRHFXQUFCSkV3RUFPNVlBQUVzVEFRQThsZ0FBVGhNQkFEMldBQUJRRXdFQVBwWUFBRlxcXG5FVEFRQS9sZ0FBVnhNQkFFQ1dBQUJZRXdFQVFaWUFBRjBUQVFCQ2xnQUFaQk1CQUVPV0FBQm1Fd0VBUkpZQUFHMFRBUUJGbGdBQWNCTUJcXFxuQUVhV0FBQjFFd0VBUjVZQUFBQVVBUUJJbGdBQVN4UUJBRW1XQUFCUUZBRUFTcFlBQUZvVUFRQkxsZ0FBWEJRQkFFd1dBQUJlRkFFQVRwXFxcbllBQUdJVUFRQlBsZ0FBZ0JRQkFGQ1dBQURHRkFFQVVSWUFBTWdVQVFCVGxnQUEwQlFCQUZTV0FBRGFGQUVBVlpZQUFJQVZBUUJXbGdBQVxcXG50aFVCQUZlV0FBQzRGUUVBV0pZQUFNRVZBUUJabGdBQTJCVUJBRnFXQUFEZUZRRUFXNVlBQUFBV0FRQmNsZ0FBUVJZQkFGMldBQUJFRmdcXFxuRUFYcFlBQUVVV0FRQmZsZ0FBVUJZQkFHQ1dBQUJhRmdFQVlaWUFBR0FXQVFCaWxnQUFiUllCQUdPV0FBQ0FGZ0VBWkpZQUFMa1dBUUJsXFxcbmxnQUF3QllCQUdhV0FBREtGZ0VBWjVZQUFBQVhBUUJvbGdBQUd4Y0JBR21XQUFBZEZ3RUFhcFlBQUN3WEFRQnJsZ0FBTUJjQkFHeVdBQVxcXG5BNkZ3RUFiWllBQUVBWEFRQnVsZ0FBQUJnQkFHK1dBQUE3R0FFQWNKWUFBRHdZQVFCeGxnQUFvQmdCQUhJV0FBREFHQUVBa3BZQUFPb1lcXFxuQVFDVGxnQUE4eGdCQUpTV0FBRC9HQUVBbFpZQUFBY1pBUUNXbGdBQUNSa0JBSmVXQUFBS0dRRUFtSllBQUF3WkFRQ1psZ0FBRkJrQkFKXFxcbnFXQUFBVkdRRUFtNVlBQUJjWkFRQ2NsZ0FBR0JrQkFKMldBQUEyR1FFQW5wWUFBRGNaQVFDZmxnQUFPUmtCQUtDV0FBQTdHUUVBb1pZQVxcXG5BRVFaQVFDaWxnQUFSeGtCQUtPV0FBQlFHUUVBcEpZQUFGb1pBUUNsbGdBQW9Ca0JBS2FXQUFDb0dRRUFwNVlBQUtvWkFRQ29sZ0FBMkJcXFxua0JBS21XQUFEYUdRRUFxcFlBQU9JWkFRQ3JsZ0FBNHhrQkFLeVdBQURsR1FFQXJaWUFBQUFhQVFDdWxnQUFQeG9CQUsrV0FBQkhHZ0VBXFxcbnNKWUFBRWdhQVFDeGxnQUFVQm9CQUxLV0FBQ2FHZ0VBczVZQUFKMGFBUUMwbGdBQW5ob0JBTFdXQUFDakdnRUF0cFlBQU1BYUFRQzNsZ1xcXG5BQStSb0JBTGlXQUFBQUhBRUF1WllBQUFrY0FRQzZsZ0FBQ2h3QkFMdVdBQUEzSEFFQXZKWUFBRGdjQVFDOWxnQUFRUndCQUw2V0FBQkdcXFxuSEFFQXY1WUFBRkFjQVFEQWxnQUFXaHdCQU1HV0FBQnRIQUVBd3BZQUFIQWNBUUREbGdBQWNod0JBTVNXQUFDUUhBRUF4WllBQUpJY0FRXFxcbkRHbGdBQXFCd0JBTWVXQUFDcEhBRUF5SllBQUxjY0FRREpsZ0FBQUIwQkFNcVdBQUFISFFFQXk1WUFBQWdkQVFETWxnQUFDaDBCQU0yV1xcXG5BQUFMSFFFQXpwWUFBRGNkQVFEUGxnQUFPaDBCQU5BV0FBQThIUUVBMHBZQUFENGRBUURUbGdBQVB4MEJBTlNXQUFCSUhRRUExWllBQUZcXFxuQWRBUURXbGdBQVdoMEJBTmVXQUFCZ0hRRUEySllBQUdZZEFRRFpsZ0FBWngwQkFOcVdBQUJwSFFFQTI1WUFBR29kQVFEY2xnQUFqeDBCXFxcbkFOMldBQUNRSFFFQTNwWUFBSklkQVFEZmxnQUFreDBCQU9DV0FBQ1pIUUVBNFpZQUFLQWRBUURpbGdBQXFoMEJBT09XQUFEZ0hnRUE1SlxcXG5ZQUFQY2VBUURsbGdBQStSNEJBT2FXQUFDd0h3RUE1NVlBQUxFZkFRRG9sZ0FBd0I4QkFPbVdBQUR5SHdFQTZwWUFBUDhmQVFEcmxnQUFcXFxuQUNBQkFPeVdBQUNhSXdFQTdaWUFBQUFrQVFEdWxnQUFieVFCQU8rV0FBQndKQUVBOEpZQUFIVWtBUUR4bGdBQWdDUUJBUEtXQUFCRUpRXFxcbkVBODVZQUFBQXdBUUQwbGdBQUx6UUJBUFdXQUFBQVJBRUE5cFlBQUVkR0FRRDNsZ0FBQUdnQkFQaVdBQUE1YWdFQStaWUFBRUJxQVFENlxcXG5sZ0FBWDJvQkFQdVdBQUJnYWdFQS9KWUFBR3BxQVFEOWxnQUFibW9CQVA2V0FBQndhZ0VBLzVZQUFOQnFBUUFBbHdBQTdtb0JBQUdYQUFcXFxuRHdhZ0VBQXBjQUFQVnFBUUFEbHdBQTltb0JBQVNYQUFBQWF3RUFCWmNBQURkckFRQUdsd0FBUUdzQkFBZVhBQUJFYXdFQUNKY0FBRVpyXFxcbkFRQUpsd0FBVUdzQkFBcVhBQUJhYXdFQUM1Y0FBRnRyQVFBTWx3QUFZbXNCQUEyWEFBQmphd0VBRHBjQUFIaHJBUUFQbHdBQWZXc0JBQlxcXG5DWEFBQ1Fhd0VBRVpjQUFFQnVBUUFTRndBQVlHNEJBREtYQUFDQWJnRUFNNWNBQUp0dUFRQTBsd0FBQUc4QkFEV1hBQUJMYndFQU5wY0FcXFxuQUU5dkFRQTNsd0FBaUc4QkFEaVhBQUNQYndFQU9aY0FBS0J2QVFBNmx3QUE0RzhCQUR1WEFBRGlid0VBUEpjQUFPTnZBUUE5bHdBQTVXXFxcbjhCQUQ2WEFBRHdid0VBUDVjQUFQSnZBUUJBbHdBQUFIQUJBRUdYQUFENGh3RUFRcGNBQUFDSUFRQkRsd0FBMW93QkFFU1hBQUFBalFFQVxcXG5SWmNBQUFtTkFRQkdsd0FBQUxBQkFFZVhBQUFmc1FFQVNKY0FBRkN4QVFCSmx3QUFVN0VCQUVxWEFBQmtzUUVBUzVjQUFHaXhBUUJNbHdcXFxuQUFjTEVCQUUyWEFBRDhzZ0VBVHBjQUFBQzhBUUJQbHdBQWE3d0JBRkNYQUFCd3ZBRUFVWmNBQUgyOEFRQlNsd0FBZ0x3QkFGT1hBQUNKXFxcbnZBRUFWSmNBQUpDOEFRQlZsd0FBbXJ3QkFGYVhBQUNjdkFFQVY1Y0FBSjI4QVFCWWx3QUFuN3dCQUZtWEFBQ2d2QUVBV3BjQUFLUzhBUVxcXG5CYmx3QUFBTkFCQUZ5WEFBRDIwQUVBWFpjQUFBRFJBUUJlbHdBQUo5RUJBRitYQUFBcDBRRUFZSmNBQUY3UkFRQmhGd0FBWmRFQkFHaVhcXFxuQUFCejBRRUFhWmNBQUh2UkFRQnFsd0FBdTlFQkFHc1hBQURCMFFFQWNaY0FBT25SQVFCeWx3QUFBTklCQUhPWEFBQkcwZ0VBZEpjQUFPXFxcbkRTQVFCMWx3QUE5TklCQUhhWEFBQUEwd0VBZDVjQUFGZlRBUUI0bHdBQVlOTUJBSG1YQUFCNTB3RUFlcGNBQUFEVUFRQjdGd0FBb05RQlxcXG5BQnVZQUFDaTFBRUFISmdBQUtQVUFRQWRtQUFBcGRRQkFCNFlBQUNuMUFFQUlKZ0FBS25VQVFBaEdBQUFDOVVCQUlPWUFBQU4xUUVBaEJcXFxuZ0FBRWZWQVFDK21BQUFTdFVCQUw4WUFBQ20xZ0VBRzVvQUFLaldBUUFjR2dBQTA5WUJBRWVhQUFEVjFnRUFTQm9BQUEzWEFRQ0FtZ0FBXFxcbkQ5Y0JBSUVhQUFCSDF3RUF1Wm9BQUVuWEFRQzZHZ0FBZ2RjQkFQS2FBQUNEMXdFQTh4b0FBTHZYQVFBcm13QUF2ZGNCQUN3YkFBREsxd1xcXG5FQU9ac0FBTXpYQVFBNm13QUF6dGNCQURzYkFBQUEyQUVBYlpzQUFBRGFBUUJ1bXdBQU45b0JBRytiQUFBNzJnRUFjSnNBQUczYUFRQnhcXFxubXdBQWRkb0JBSEtiQUFCMjJnRUFjNXNBQUlUYUFRQjBtd0FBaGRvQkFIV2JBQUNNMmdFQWRwc0FBSnZhQVFCM213QUFvTm9CQUhpYkFBXFxcbkNoMmdFQWVac0FBTERhQVFCNm13QUFBT0FCQUh1YkFBQUg0QUVBZkpzQUFBamdBUUI5bXdBQUdlQUJBSDZiQUFBYjRBRUFmNXNBQUNMZ1xcXG5BUUNBbXdBQUkrQUJBSUdiQUFBbDRBRUFncHNBQUNiZ0FRQ0Rtd0FBSytBQkFJU2JBQUFBNFFFQWhac0FBQzNoQVFDR213QUFNT0VCQUlcXFxuZWJBQUErNFFFQWlKc0FBRURoQVFDSm13QUFTdUVCQUlxYkFBQk80UUVBaXhzQUFGRGhBUUNObXdBQXdPSUJBSTZiQUFENjRnRUFqNXNBXFxcbkFQL2lBUUNRbXdBQUFPTUJBSkdiQUFBQTZBRUFrcHNBQU1Yb0FRQ1Rtd0FBeCtnQkFKU2JBQURRNkFFQWxac0FBTmZvQVFDV213QUFBT1xcXG5rQkFKY2JBQUFpNlFFQXVac0FBRXpwQVFDNm13QUFVT2tCQUx1YkFBQmE2UUVBdkpzQUFGN3BBUUM5bXdBQVlPa0JBTDZiQUFCeDdBRUFcXFxudjVzQUFMWHNBUURBbXdBQUFlMEJBTUdiQUFBKzdRRUF3cHNBQUFEdUFRRERHd0FBSmU0QkFPaWJBQUFuN2dFQTZSc0FBRHp1QVFEK213XFxcbkFBUXU0QkFQK2JBQUJEN2dFQUFKd0FBRWZ1QVFBQkhBQUFWZTRCQUErY0FBQlg3Z0VBRUJ3QUFHWHVBUUFlbkFBQVorNEJBQjhjQUFDY1xcXG43Z0VBVkp3QUFLSHVBUUJWSEFBQXZPNEJBSENjQUFEdzdnRUFjWndBQVBMdUFRQnluQUFBQVBBQkFIT2NBQUFzOEFFQWRKd0FBRER3QVFcXFxuQjFuQUFBbFBBQkFIYWNBQUNnOEFFQWQ1d0FBSy93QVFCNG5BQUFzZkFCQUhtY0FBREE4QUVBZXB3QUFNSHdBUUI3bkFBQTBQQUJBSHljXFxcbkFBRFI4QUVBZlp3QUFQYndBUUIrbkFBQUFmRUJBSDhjQUFBTDhRRUFpWndBQUJEeEFRQ0tIQUFBVVBFQkFNcWNBQUJxOFFFQXl4d0FBR1xcXG4zeEFRRE9uQUFBa1BFQkFNK2NBQUNSOFFFQTBKd0FBSzd4QVFEUm5BQUE1dkVCQU5LY0FBQUE4Z0VBMHh3QUFBUHlBUURXbkFBQUVQSUJcXFxuQU5jY0FBQTg4Z0VBQTUwQUFFRHlBUUFFSFFBQVNmSUJBQTJkQUFCUThnRUFEaDBBQUZMeUFRQVFuUUFBWVBJQkFCR2RBQUJtOGdFQUVwXFxcbjBBQUFEekFRQVRuUUFBMlBZQkFCU2RBQURnOWdFQUZaMEFBTzMyQVFBV25RQUE4UFlCQUJlZEFBRDk5Z0VBR0owQUFBRDNBUUFablFBQVxcXG5kUGNCQUJxZEFBQ0E5d0VBRzUwQUFObjNBUUFjblFBQTRQY0JBQjJkQUFEczl3RUFIcDBBQUFENEFRQWZuUUFBRFBnQkFDQ2RBQUFRK0FcXFxuRUFJWjBBQUVqNEFRQWluUUFBVVBnQkFDT2RBQUJhK0FFQUpKMEFBR0Q0QVFBbG5RQUFpUGdCQUNhZEFBQ1ErQUVBSjUwQUFLNzRBUUFvXFxcbm5RQUFzUGdCQUNtZEFBQ3krQUVBS3AwQUFBRDVBUUFyblFBQWVma0JBQ3lkQUFCNitRRUFMWjBBQU16NUFRQXVuUUFBemZrQkFDK2RBQVxcXG5CVStnRUFNSjBBQUdENkFRQXhuUUFBYnZvQkFES2RBQUJ3K2dFQU01MEFBSFg2QVFBMG5RQUFlUG9CQURXZEFBQjcrZ0VBTnAwQUFJRDZcXFxuQVFBM25RQUFoL29CQURpZEFBQ1ErZ0VBT1owQUFLbjZBUUE2blFBQXNQb0JBRHVkQUFDMytnRUFQSjBBQU1ENkFRQTluUUFBdy9vQkFEXFxcbjZkQUFEUStnRUFQNTBBQU5mNkFRQkFuUUFBQVBzQkFFR2RBQUNUK3dFQVFwMEFBSlQ3QVFCRG5RQUF5L3NCQUVTZEFBRHcrd0VBUlIwQVxcXG5BUHI3QVFCUG5RQUFBQUFDQUZDZEFBRGVwZ0lBVVowQUFBQ25BZ0JTblFBQU5iY0NBRk9kQUFCQXR3SUFWSjBBQUI2NEFnQlZuUUFBSUxcXFxuZ0NBRmFkQUFDaXpnSUFWNTBBQUxET0FnQlluUUFBNGVzQ0FGbWRBQUFBK0FJQVdoMEFBREg0QWdDTG5RQUFOUGdDQUl3ZEFBQkYrQUlBXFxcbm5aMEFBRWY0QWdDZUhRQUFhdmdDQU1HZEFBQnMrQUlBd2gwQUFKSDRBZ0RublFBQWsvZ0NBT2lkQUFDVStBSUE2WjBBQUpiNEFnRHFIUVxcXG5BQUxQa0NBSUNlQUFBdStRSUFnUjRBQUViNUFnQ1puZ0FBU1BrQ0FKb2VBQUJkK1FJQXI1NEFBRi81QWdDd0hnQUEvdmtDQUUrZkFBQUFcXFxuK2dJQVVCOEFBQjc2QWdCdW53QUFBQUFEQUcrZkFBQkxFd01BY0o4QUFBQUJEZ0J4bndBQThBRU9BSEtmQUFBRkFBQUFBQUFBQUFVQUFBXFxcbkFBQUFBQUJRQUFBQUlBQUFFQ0FRQUJBZ0lBQVFJREFBRUNCQUFCQWdVQUFRSUdBQUVDQndBQkFnZ0FBUUlKQUFFQ0NnQUJBZ3NBQVFJTVxcXG5BQUVDRFFBQkFnNEFBUUlQQUFFQ0VBQUJBaEVBQVFJU0FBRUNFd0FCQWhRQUFRSVZBQUVDRmdBQkFoY0FBUUlZQUFFQ0dRQUJCUUFBQUFcXFxuQUFBQUFGQUFBQUJBQUFBQVlhQUFFSEFBQUFCaHNBQXdjQUFBQUNBQUFCQndBQUFBRUFBQUFIQUFBQUJoNEFBd2NBQUFBQ0lRQUJBaUlBXFxcbkFRWWpBQU1DSmdBQ0J3QUFBQUFBQUFBR0tBQURBaXNBQVFJT0FBRUhBQUFBQWl3QUJRSXhBQVVDTmdBRkJ3QUFBQUk3QUFJQ1BRQUNBalxcXG44QUFnSkJBQUlDUXdBQ0FrVUFBZ0pIQUFJQ1NRQUNBa3NBQWdKTkFBSUNUd0FDQWxFQUFnSlRBQUlDVlFBQ0FsY0FBZ0paQUFJQ1d3QUNcXFxuQWwwQUFnSmZBQUlDWVFBQ0FtTUFBZ0psQUFJQ1p3QUNCd0FBQUFKcEFBSUNhd0FDQW0wQUFnSnZBQUlDY1FBQ0FuTUFBZ0oxQUFJRGR3XFxcbkFDQUFBQUFBY0FBQUFBQUFBQUFua0FBZ0FBQUFBQ2V3QUNBQUFBQUFKOUFBSUFBQUFBQW44QUFnQUFBQUFDZ1FBQ0FBQUFBQUtEQUFJQVxcXG5BQUFBQW9VQUFnQUFBQUFDaHdBQ0FBQUFBQUtKQUFJQUFBQUFBb3NBQWdBQUFBQUNqUUFDQUFBQUFBS1BBQUlBQUFBQUFwRUFBZ0FBQUFcXFxuQUNrd0FDQUFBQUFBS1ZBQUlBQUFBQUFwY0FBZ0FBQUFBQ21RQUNBQUFBQUFLYkFBSUFBQUFBQXAwQUFnQUFBQUFDbndBQ0FBQUFBQUtoXFxcbkFBSUFBQUFBQXFNQUFnQUFBQUFDcFFBQ0FBQUFBQUtuQUFJQUFBQUFBcWtBQXdBQUFBQUNyQUFDQXE0QUFnQUFBQUFDc0FBQ0FBQUFBQVxcXG5LeUFBSUFBQUFBQXJRQUFnQUFBQUFDdGdBQ0FBQUFBQUs0QUFNQ3V3QUNBQUFBQUFLOUFBSUFBQUFBQXI4QUFnQUFBQUFDd1FBQ0FBQUFcXFxuQUFMREFBTUN4Z0FDQUFBQUFBTElBQUlBQUFBQUFzb0FBZ0FBQUFBQ3pBQUNBQUFBQUFMT0FBSUFBQUFBQXRBQUFnQUFBQUFDMGdBQ0FBXFxcbkFBQUFMVUFBSUFBQUFBQXRZQUFnQUFBQUFDMkFBQ0FBQUFBQUxhQUFJQUFBQUFBdHdBQWdBQUFBQUMzZ0FDQUFBQUFBTGdBQUlBQUFBQVxcXG5BdUlBQWdBQUFBQUM1QUFDQUFBQUFBTG1BQUlBQUFBQUF1Z0FBZ0FBQUFBQzZnQUNBQUFBQUFMc0FBSUFBQUFBQXU0QUFnQUFBQUFDOEFcXFxuQUNBQUFBQUFMeUFBSUFBQUFBQXZRQUFnTDJBQUlBQUFBQUF2Z0FBZ0FBQUFBQytnQUNBQUFBQUFJU0FBRUFBQUFBQXZ3QUFnTCtBQUlBXFxcbkFBQUFBZ0FCQWdBQUFBQUNBZ0VDQWdRQkFnQUFBQUFDQmdFQ0FnZ0JBZ0lLQVFJQUFBQUFBZ3dCQWdJT0FRSUNFQUVDQWhJQkFnQUFBQVxcXG5BQ0ZBRUNBaFlCQWdBQUFBQUNHQUVDQWhvQkFnSWNBUUlBQUFBQUFoNEJBZ0lnQVFJQUFBQUFBaUlCQWdJa0FRSUFBQUFBQWlZQkFnQUFcXFxuQUFBQ0tBRUNBQUFBQUFJcUFRSUNMQUVDQUFBQUFBSXVBUUlBQUFBQUFqQUJBZ0FBQUFBQ01nRUNBalFCQWdBQUFBQUNOZ0VDQWpnQkFnXFxcbkk2QVFJQUFBQUFBandCQWdBQUFBQUNQZ0VDQWtBQkFnQUFBQUFDUWdFQ0FBQUFBQUpFQVFNQ1J3RUNBa2tCQWdKTEFRSUFBQUFBQWswQlxcXG5BZ0FBQUFBQ1R3RUNBQUFBQUFKUkFRSUFBQUFBQWxNQkFnQUFBQUFDVlFFQ0FBQUFBQUpYQVFJQUFBQUFBbGtCQWdBQUFBQUNXd0VDQUFcXFxuQUFBQUpkQVFJQUFBQUFBbDhCQWdBQUFBQUNZUUVDQUFBQUFBSmpBUUlBQUFBQUFtVUJBZ0FBQUFBQ1p3RUNBQUFBQUFKcEFRSUFBQUFBXFxcbkFtc0JBZ0FBQUFBQ2JRRUNBbThCQWdBQUFBQUNjUUVDQW5NQkFnSjFBUUlBQUFBQUFuY0JBZ0FBQUFBQ2VRRUNBQUFBQUFKN0FRSUFBQVxcXG5BQUFuMEJBZ0FBQUFBQ2Z3RUNBQUFBQUFLQkFRSUFBQUFBQW9NQkFnQUFBQUFDaFFFQ0FBQUFBQUtIQVFJQUFBQUFBb2tCQWdBQUFBQUNcXFxuaXdFQ0FBQUFBQUtOQVFJQUFBQUFBbzhCQWdBQUFBQUNrUUVDQUFBQUFBS1RBUUlBQUFBQUFwVUJBZ0FBQUFBQ2x3RUNBQUFBQUFLWkFRXFxcbklBQUFBQUFwc0JBZ0FBQUFBQ25RRUNBQUFBQUFLZkFRSUFBQUFBQXFFQkFnQUFBQUFDb3dFQ0FBQUFBQUtsQVFJQUFBQUFBcWNCQWdBQVxcXG5BQUFDcVFFQ0FBQUFBQUtyQVFJQUFBQUFBcTBCQWdBQUFBQUNyd0VDQUFBQUFBS3hBUU1DdEFFQ0FBQUFBQUsyQVFJQ3VBRURBQUFBQUFcXFxuSzdBUUlBQUFBQUFyMEJBZ0svQVFJQ3dRRUNBc01CQWdBQUFBQUN4UUVDQUFBQUFBTEhBUUlBQUFBQUFza0JBZ0FBQUFBQ3l3RUNBQUFBXFxcbkFBSUhBQUVDelFFQ0Fna0FBUUlSQUFFQ3p3RUNBdEVCQWdMVEFRSUNGZ0FCQWhnQUFRQUFBQUFIQUFBQUFBQUFBQWNBQUFBRzFRRURCdFxcXG5nQkF3YmJBUU1HM2dFREJ1RUJBd2JrQVFNSEFBQUFBaFlCQWdJTEFBRUNFZ0FCQWhjQUFRTG5BUUlIQUFBQUFBQUFBQWNBQUFBQUFBQUFcXFxuQndBQUFBQUFBQUFDNlFFQ0F1c0JBZ0FBQUFBQzdRRUNBdThCQkFMekFRSUFBQUFBQVFBQUFBQUFBQUFDOVFFQ0FBQUFBQUwzQVFJQUFBXFxcbkFBQXZrQkFnQUFBQUFDK3dFQ0FBQUFBQVFBQUFBRy9RRURBQUFBQUFZQUFnRUNBUUlDQkFBQUFBWWpBQU1HQXdJRkFnZ0NBZ0lLQWdJQ1xcXG5EQUlDQWc0Q0FnSVFBZ0lFQUFBQUFoSUNBZ1FBQUFBQ0ZBSUNBaFlDQWdBQUFBQUNHQUlDQWhvQ0FnSWNBZ0lDSGdJQ0FpQUNBZ0lpQWdcXFxuSUNKQUlDQWlZQ0FnTHpBUUlDS0FJQ0Fpb0NBZ0ltQUFJQ0xBSUNBaTRDQWdJd0FnSUNNZ0lDQWpRQ0FnUUFBQUFDTmdJQ0FqZ0NBZ0k2XFxcbkFnSUNQQUlDQWo0Q0FnSkFBZ0lDUWdJQ0FrUUNBZ0pHQWdJQUFBQUFBellDQWdBQUFBQUNTQUlDQWhvQ0FnSW1BZ0lDT2dJQ0FoUUNBZ1xcXG5KR0FnSUNQQUlDQWpJQ0FnQUFBQUFDU2dJQ0FBQUFBQUpNQWdJQUFBQUFBazRDQWdBQUFBQUNVQUlDQUFBQUFBSlNBZ0lBQUFBQUFsUUNcXFxuQWdBQUFBQUNWZ0lDQUFBQUFBSllBZ0lBQUFBQUFsb0NBZ0FBQUFBQ1hBSUNBQUFBQUFKZUFnSUFBQUFBQW1BQ0FnQUFBQUFDS0FJQ0FqXFxcblFDQWdJMkFnSUFBQUFBQWlZQ0FnSWdBZ0lIQUFBQUFtSUNBZ0FBQUFBQ05nSUNBbVFDQWdBQUFBQUNaZ0lDQW1nQ0FnSnFBZ0lDYkFJQ1xcXG5BbTRDQWdKd0FnSUNjZ0lDQW5RQ0FnSjJBZ0lDZUFJQ0Fub0NBZ0o4QWdJQ2ZnSUNBb0FDQWdLQ0FnSUNoQUlDQW9ZQ0FnS0lBZ0lDaWdcXFxuSUNBb3dDQWdLT0FnSUNrQUlDQXBJQ0FnS1VBZ0lDbGdJQ0FwZ0NBZ0thQWdJQ25BSUNBcDRDQWdLZ0FnSUNvZ0lDQXFRQ0FnS21BZ0lDXFxcbnFBSUNBcW9DQWdLc0FnSUNyZ0lDQXJBQ0FnS3lBZ0lDdEFJQ0FyWUNBZ0s0QWdJQ3VnSUNBcndDQWdLK0FnSUN3QUlDQXNJQ0FnTEVBZ1xcXG5JQ3hnSUNBc2dDQWdMS0FnSUFBQUFBQXN3Q0FnQUFBQUFDemdJQ0FBQUFBQUxRQWdJQUFBQUFBdElDQWdBQUFBQUMxQUlDQUFBQUFBTFdcXFxuQWdJQUFBQUFBdGdDQWdBQUFBQUMyZ0lDQUFBQUFBTGNBZ0lBQUFBQUF0NENBZ0FBQUFBQzRBSUNBQUFBQUFMaUFnSUFBQUFBQXVRQ0FnXFxcbkFBQUFBQzVnSUNBQUFBQUFMb0FnSUFBQUFBQXVvQ0FnQUFBQUFDN0FJQ0FBQUFBQWNBQUFBQUFBQUFCd0FBQUFMdUFnSUFBQUFBQXZBQ1xcXG5BZ0FBQUFBQzhnSUNBQUFBQUFMMEFnSUFBQUFBQXZZQ0FnQUFBQUFDK0FJQ0FBQUFBQUw2QWdJQUFBQUFBdndDQWdBQUFBQUMvZ0lDQUFcXFxuQUFBQUlBQXdJQUFBQUFBZ0lEQWdBQUFBQUNCQU1DQUFBQUFBSUdBd0lBQUFBQUFnZ0RBZ0FBQUFBQ0NnTUNBQUFBQUFJTUF3SUFBQUFBXFxcbkFnNERBZ0FBQUFBQ0VBTUNBQUFBQUFJU0F3SUFBQUFBQWhRREFnQUFBQUFDRmdNQ0FBQUFBQUlZQXdJQUFBQUFBaG9EQWdBQUFBQUNIQVxcXG5NQ0FBQUFBQUllQXdJQUFBQUFBaUFEQWdBQUFBQUNJZ01DQUFBQUFBUUFBQUFDSkFNQ0FBQUFBQUltQXdJQUFBQUFBaWdEQWdBQUFBQUNcXFxuS2dNQ0FBQUFBQUlzQXdJQUFBQUFBaTREQWdBQUFBQUNNQU1DQUFBQUFBSXlBd0lBQUFBQUFqUURBZ0FBQUFBQ05nTUNBQUFBQUFJNEF3XFxcbklBQUFBQUFqb0RBZ0FBQUFBQ1BBTUNBQUFBQUFJK0F3SUFBQUFBQWtBREFnQUFBQUFDUWdNQ0FBQUFBQUpFQXdJQUFBQUFBa1lEQWdBQVxcXG5BQUFDU0FNQ0FBQUFBQUpLQXdJQUFBQUFBa3dEQWdBQUFBQUNUZ01DQUFBQUFBSlFBd0lBQUFBQUFsSURBZ0FBQUFBQ1ZBTUNBQUFBQUFcXFxuSldBd0lBQUFBQUFsZ0RBZ0FBQUFBQ1dnTUNBQUFBQUFKY0F3SUFBQUFBQWw0REFnQUFBQUFDWUFNQ0FBQUFBQUppQXdJQUFBQUFBbVFEXFxcbkFnQUFBQUFDWmdNQ0FBQUFBQUpvQXdJQUFBQUFBbW9EQWdBQUFBQUNiQU1DQUFBQUFBSnVBd0lBQUFBQUFuQURBZ0FBQUFBQ2NnTUNBQVxcXG5BQUFBSjBBd0lBQUFBQUFuWURBZ0FBQUFBQ2VBTUNBQUFBQUFKNkF3SUFBQUFBQW53REFnQUFBQUFDZmdNQ0FBQUFBQUtBQXdJQUFBQUFcXFxuQW9JREFnQUFBQUFDaEFNQ0FBQUFBQUtHQXdJQUFBQUFBb2dEQWdBQUFBQUNpZ01DQUFBQUFBS01Bd0lBQUFBQUFvNERBZ0FBQUFBQ2tBXFxcbk1DQUFBQUFBUUFBQUFDa2dNQ0FwUURBZ0tXQXdJQ21BTUNBcG9EQWdLY0F3SUNuZ01DQXFBREFnS2lBd0lDcEFNQ0FxWURBZ0tvQXdJQ1xcXG5xZ01DQXF3REFnS3VBd0lDc0FNQ0FySURBZ0swQXdJQ3RnTUNBcmdEQWdLNkF3SUN2QU1DQXI0REFnTEFBd0lDd2dNQ0FzUURBZ0xHQXdcXFxuSUN5QU1DQXNvREFnTE1Bd0lDemdNQ0F0QURBZ0xTQXdJQzFBTUNBdFlEQWdMWUF3SUMyZ01DQXR3REFnUUFBQUFBQUFBQUJ3QUFBQUFBXFxcbkFBQUMzZ01FQUFBQUFBY0FBQUFFQUFBQUJ3QUFBQVFBQUFBQUFBQUFCd0FBQUFBQUFBQUhBQUFBQUFBQUFBY0FBQUFBQUFBQUJ3QUFBQVxcXG5BQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQWNBQUFBQUFBQUFCd0FBQUFRQUFBQUhBQUFBQUFBQUFBY0FBQUFBQUFBQUJ3QUFcXFxuQUFBQUFBQUM0Z01FQXVZREJBTHFBd1FDN2dNRUFBQUFBQWNBQUFBQUFBQUFCQUFBQUFjQUFBQUFBQUFBQndBQUFBQUFBQUFIQUFBQUJBXFxcbkFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJ3QUFBQVFBQUFBQUFBQUFCd0FBQUFBQUFBQUVBQUFBQndBQUFBUUFBQUFBQUFBQVxcXG5CQUFBQUFjQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQXZJREJnTDRBd1lDL2dcXFxuTUdBZ1FFQmdJS0JBWUNFQVFHQWhZRUJnSWNCQVlBQUFBQUJ3QUFBQUFBQUFBSEFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFXFxcbkFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQVxcXG5BQUFBQUFCQUFBQUFJaUJBWUNLQVFHQkFBQUFBSXVCQVlBQUFBQUJBQUFBQUFBQUFBSEFBQUFBQUFBQUFjQUFBQUFBQUFBQkFBQUFBQUFcXFxuQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFBalFFQmdRQUFBQUFBQUFBQWpvRUJnXFxcblFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUNRQVFHQWtZRVxcXG5CZ0pNQkFZQUFBQUFCQUFBQUFKU0JBWUVBQUFBQUFBQUFBY0FBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFcXFxuQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBXFxcbkJBQUFBQUFBQUFBRUFBQUFBQUFBQUFjQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQVxcXG5BQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVcXFxuQUFBQUFsZ0VCZ0plQkFZRUFBQUFBQUFBQUFRQUFBQUFBQUFBQndBQUFBQUFBQUFIQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBXFxcbkFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQVxcXG5BQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBSEFBQUFCQUFBQUFcXFxuQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBXFxcbkFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUhBQUFBQUFBQUFBY0FBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQVxcXG5BQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFcXFxuQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBXFxcbkFBQUFBQUFBY0FBQUFFQUFBQUFBQUFBQWNBQUFBQUFBQUFCQUFBQUFBQUFBQUhBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRVxcXG5BQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFcXFxuQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQWNBQUFBRUFBQUFBQUFBQUFKa0JBWUFBQUFBQkFBQUFBY0FBQUFBQUFBQUJ3QUFBQUFBXFxcbkFBQUhBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUFtb0VCZ1xcXG5BQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUNjQVFHQW5ZRUJnQUFBQUFFQUFBQUFBQUFcXFxuQUFjQUFBQUFBQUFBQW53RUF3Y0FBQUFBQUFBQUJ3QUFBQUFBQUFBSEFBQUFBQUFBQUFjQUFBQUFBQUFBQndBQUFBQUFBQUFIQUFBQUFBXFxcbkFBQUFKL0JBWUFBQUFBQkFBQUFBQUFBQUFDaFFRR0FBQUFBQUtMQkFZQUFBQUFBcEVFQmdBQUFBQUNsd1FHQUFBQUFBS2RCQVlBQUFBQVxcXG5CQUFBQUFBQUFBQUNvd1FHQUFBQUFBS3BCQVlDcndRR0FyVUVDUUsrQkFZQ3hBUUpBQUFBQUFMTkJBWUFBQUFBQndBQUFBQUFBQUFDMHdcXFxuUUdBQUFBQUFRQUFBQUFBQUFBQXRrRUJnQUFBQUFDM3dRR0FBQUFBQUxsQkFZQUFBQUFBdXNFQmdBQUFBQUM4UVFHQUFBQUFBUUFBQUFIXFxcbkFBQUFBQUFBQUFjQUFBQUVBQUFBQndBQUFBUUFBQUFBQUFBQUJ3QUFBQUFBQUFBSEFBQUFCQUFBQUFMM0JBTUVBQUFBQXZvRUF3UUFBQVxcXG5BQUFBQUFCd0FBQUFMOUJBTUFBQUFBQndBQUFBUUFBQUFIQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFcXFxuQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBXFxcbkFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCd0FBQUFRQUFBQUFBQUFBQndBQVxcXG5BQVFBQUFBQUFBQUFCQUFBQUFJQUJRTUNBd1VEQWdZRkF3SUpCUU1DREFVREFnOEZBd1FBQUFBSEFBQUFBQUFBQUFjQUFBQUFBQUFBQkFcXFxuQUFBQUFBQUFBSEFBQUFCQUFBQUFBQUFBQUhBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFjQUFBQUVBQUFBXFxcbkFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBSEFBQUFBQUFBQUFjQUFBQUFBQVxcXG5BQUJBQUFBQUFBQUFBRUFBQUFCd0FBQUFRQUFBQUhBQUFBQkFBQUFBY0FBQUFCQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFcXFxuQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUJ3QUFBQVFBQUFBSEFBQUFBQUFBQUFRQUFBXFxcbkFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQndBQUFBUUFBQUFIQUFBQUFBQUFBQVFBQUFBSEFBQUFBQUFBQUFRQVxcXG5BQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUhBQUFBQUFBQUFBY0FBQUFFQUFBQUFBQUFBQWNBQUFBQUFBQUFCQUFBQUFcXFxuQUFBQUFFQUFBQUFBQUFBQWNBQUFBQUFBQUFCd0FBQUFRQUFBQUFBQUFBQkFBQUFBY0FBQUFBQUFBQUJBQUFBQWNBQUFBQUFBQUFCQUFBXFxcbkFBQUFBQUFIQUFBQUFwQUNBZ0tVQWdJQ3FBSUNBcTRDQWdLd0FnSUN3QUlDQXM0Q0FnSVNCUU1FQUFBQUFoVUZBd0lZQlFNQ0d3VURBaFxcXG40RkF3SWhCUU1DSkFVREFpY0ZBd0lxQlFNQ0xRVURBakFGQXdJekJRTUNOZ1VEQXYwRUF3STVCUU1DUEFVREFqOEZBd0pDQlFNQ1JRVURcXFxuQWtnRkF3SkxCUU1DVGdVREFsRUZBd0pVQlFNQ1Z3VURBbG9GQXdKZEJRTUNZQVVEQW1NRkF3Sm1CUU1DYVFVREFtd0ZBd0p2QlFNQ2NnXFxcblVEQW5VRkF3SjRCUU1DZXdVREFuNEZBd0tCQlFNQ2hBVURBb2NGQXdLS0JRTUNqUVVEQXBBRkF3UUFBQUFDa3dVREFwWUZBd0taQlFNSFxcXG5BQUFBQkFBQUFBQUFBQUFIQUFBQUFBQUFBQVFBQUFBQUFBQUFBZ0FBQVFKSEFBSUNBUUFCQUFBQUFBSURBQUVDQkFBQkFnd0JBZ0lHQUFcXFxuRUNCd0FCQWdnQUFRSUpBQUVDQ2dBQkFnc0FBUUlNQUFFQ0RRQUJBQUFBQUFJT0FBRUNud0VDQWc4QUFRSVJBQUVDRXdBQkFoUUFBUUlXXFxcbkFBRUNBQUFCQXB3RkFnS2VCUUlDb0FVREFnRUFBUUlEQUFFQ0JBQUJBZzRCQWdJUUFRSUNvd1VDQWdZQUFRQUFBQUFDQ2dBQkFnd0FBUVxcXG5MR0FBSUNEZ0FCQWdJQkFnS2xCUU1DcUFVREFnOEFBUUlUQUFFQ0ZBQUJBcXNGQXdJZUFRSUNGUUFCQXE0RkF3SWFBZ0lDSEFJQ0FoNENcXFxuQWdJOEFnSUNQZ0lDQWdnQUFRSVJBQUVDRkFBQkFoVUFBUUlhQWdJQ0hBSUNBalFDQWdJOEFnSUNQZ0lDQUFBQUFBS21BZ0lBQUFBQUFyXFxcbkVGQWdJQ0FBRUNzd1VDQWxzQUFnS2pCUUlDQlFBQkFyVUZBZ0szQlFJQ3VRVUNBaG9CQWdJWUFRSUN1d1VDQXIwRkF3TEFCUUlDd2dVQ1xcXG5Bc1FGQXdMSEJRSUN5UVVDQXNzRkFnSWdBUUlDelFVQ0FzOEZBZ0lpQVFJQzBRVUNBdE1GQWdJdUFRSUMxUVVDQXI4QkFnSTJBUUlDMXdcXFxuVURBamdCQWdMQkFRSUNHUUFCQXRvRkFnTGNCUUlDUGdFQ0FpWUNBZ0FBQUFBRUFBQUFBQUFBQUFMZUJRTUFBQUFBQXVFRkF3QUFBQUFDXFxcbjVBVURBQUFBQUFMbkJRTUFBQUFBQXVvRkF3QUFBQUFDN1FVREFBQUFBQUx3QlFNQUFBQUFBdk1GQXdBQUFBQUM5Z1VEQUFBQUFBTDVCUVxcXG5NQUFBQUFBdndGQXdBQUFBQUMvd1VEQUFBQUFBSUNCZ01BQUFBQUFnVUdBd0FBQUFBQ0NBWURBQUFBQUFJTEJnTUFBQUFBQWc0R0F3QUFcXFxuQUFBQ0VRWURBQUFBQUFJVUJnTUFBQUFBQWhjR0F3QUFBQUFDR2dZREFBQUFBQUlkQmdNQUFBQUFBaUFHQXdBQUFBQUNJd1lEQUFBQUFBXFxcbkltQmdNQUFBQUFBaWtHQXdBQUFBQUNMQVlEQUFBQUFBSXZCZ01BQUFBQUFqSUdBd0FBQUFBQ05RWURBQUFBQUFJNEJnTUFBQUFBQWpzR1xcXG5Bd0FBQUFBQ1BnWURBQUFBQUFKQkJnTUFBQUFBQWtRR0F3QUFBQUFDUndZREFBQUFBQUpLQmdNQUFBQUFBazBHQXdBQUFBQUNVQVlEQUFcXFxuQUFBQUpUQmdNQUFBQUFBbFlHQXdBQUFBQUNXUVlEQUFBQUFBSmNCZ01BQUFBQUFsOEdBd0FBQUFBQ1lnWURBQUFBQUFKbEJnTUFBQUFBXFxcbkFtZ0dBd0FBQUFBQ2F3WURBQUFBQUFKdUJnTUFBQUFBQW5FR0F3QUFBQUFDZEFZREFBQUFBQUozQmdNQUFBQUFBbm9HQXdBQUFBQUNmUVxcXG5ZREFBQUFBQUtBQmdNQUFBQUFBb01HQXdBQUFBQUNoZ1lEQUFBQUFBS0pCZ01BQUFBQUFvd0dBd0FBQUFBQ2p3WURBQUFBQUFLU0JnTUFcXFxuQUFBQUFwVUdBd0FBQUFBQ21BWURBQUFBQUFLYkJnTUFBQUFBQXA0R0F3QUFBQUFDb1FZREFBQUFBQUtrQmdNQUFBQUFBcWNHQXdBQUFBXFxcbkFDcWdZREFBQUFBQUt0QmdNQUFBQUFBckFHQXdBQUFBQUNzd1lEQUFBQUFBSzJCZ01BQUFBQUFya0dBd0FBQUFBQ3ZBWURBQUFBQUFLL1xcXG5CZ01DYmdZREFBQUFBQUozQUFJQUFBQUFBc0lHQXdBQUFBQUN4UVlEQUFBQUFBTElCZ01BQUFBQUFzc0dBd0FBQUFBQ3pnWURBQUFBQUFcXFxuTFJCZ01BQUFBQUF0UUdBd0FBQUFBQzF3WURBQUFBQUFMYUJnTUFBQUFBQXQwR0F3QUFBQUFDNEFZREFBQUFBQUxqQmdNQUFBQUFBdVlHXFxcbkF3QUFBQUFDNlFZREFBQUFBQUxzQmdNQUFBQUFBdThHQXdBQUFBQUM4Z1lEQUFBQUFBTDFCZ01BQUFBQUF2Z0dBd0FBQUFBQyt3WURBQVxcXG5BQUFBTCtCZ01BQUFBQUFnRUhBd0FBQUFBQ0JBY0RBQUFBQUFJSEJ3TUFBQUFBQWdvSEF3QUFBQUFDRFFjREFBQUFBQUlRQndNQUFBQUFcXFxuQWhNSEF3QUFBQUFDRmdjREFBQUFBQUlaQndNQUFBQUFBaHdIQXdBQUFBQUNId2NEQUFBQUFBSWlCd01BQUFBQUFpVUhBd0FBQUFBQ0tBXFxcbmNEQUFBQUFBSXJCd01BQUFBQUFpNEhBd0FBQUFBQ01RY0RBQUFBQUFJMEJ3TUFBQUFBQWpjSEF3QUFBQUFDT2djREFBQUFBQUk5QndNQVxcXG5BQUFBQWtBSEF3QUFBQUFDUXdjREFBQUFBQUpHQndNQUFBQUFBa2tIQXdBQUFBQUNUQWNEQUFBQUFBSlBCd01BQUFBQUFsSUhBd0pWQndcXFxuTUNXQWNEQWxzSEF3SmVCd01DWVFjREFtUUhBd0puQndNQUFBQUFCQUFBQUFKcUJ3TUNiUWNEQW5BSEF3SnpCd01DZGdjREFua0hBd1FBXFxcbkFBQUFBQUFBQW53SEF3Si9Cd01DZ2djREFvVUhBd0tJQndNQ2l3Y0RBbzRIQXdLUkJ3TUFBQUFBQXBRSEF3S1hCd01DbWdjREFwMEhBd1xcXG5LZ0J3TUNvd2NEQXFZSEF3S3BCd01BQUFBQUJBQUFBQUtzQndNQ3J3Y0RBcklIQXdLMUJ3TUN1QWNEQXJzSEF3UUFBQUFBQUFBQUJBQUFcXFxuQUFLK0J3TUVBQUFBQXNFSEF3UUFBQUFDeEFjREJBQUFBQUxIQndNQUFBQUFBc29IQXdMTkJ3TUMwQWNEQXRNSEF3TFdCd01DMlFjREF0XFxcbndIQXdMZkJ3TUFBQUFBQWdnQ0FnQUFBQUFDREFJQ0FBQUFBQUlPQWdJQUFBQUFBaEFDQWdBQUFBQUNFZ0lDQUFBQUFBSVVBZ0lBQUFBQVxcXG5BaFlDQWdRQUFBQUM0Z2NGQXVjSEJRTHNCd1VDOFFjRkF2WUhCUUw3QndVQ0FBZ0ZBZ1VJQlFMaUJ3VUM1d2NGQXV3SEJRTHhCd1VDOWdcXFxuY0ZBdnNIQlFJQUNBVUNCUWdGQWdvSUJRSVBDQVVDRkFnRkFoa0lCUUllQ0FVQ0l3Z0ZBaWdJQlFJdENBVUNDZ2dGQWc4SUJRSVVDQVVDXFxcbkdRZ0ZBaDRJQlFJakNBVUNLQWdGQWkwSUJRSXlDQVVDTndnRkFqd0lCUUpCQ0FVQ1JnZ0ZBa3NJQlFKUUNBVUNWUWdGQWpJSUJRSTNDQVxcXG5VQ1BBZ0ZBa0VJQlFKR0NBVUNTd2dGQWxBSUJRSlZDQVVBQUFBQUFsb0lCUUpmQ0FRQ1l3Z0VCQUFBQUFBQUFBQUNad2dGQW13SUF3SnZcXFxuQ0FNQ2NnZ0RBZ2dDQWdKZkNBUUdkUWdEQXZNQkFnWjFDQU1HZUFnREJuc0lCUUtBQ0FVQ2hRZ0VBb2tJQkFRQUFBQUFBQUFBQW8wSUJRXFxcbktTQ0FNQ0RBSUNBcFVJQXdJT0FnSUNoUWdFQnBnSUJRYWRDQVVHb2dnRkFBQUFBQUtuQ0FJRUFBQUFBQUFBQUFLcENBTUNyQWdEQXE4SVxcXG5Bd0lRQWdJRUFBQUFCcklJQlFhM0NBVUd2QWdGQUFBQUFBTEJDQUlBQUFBQUFzTUlBd0xHQ0FNQ3lRZ0RBaFFDQWdMTUNBTUd6d2dGQmdcXFxuTUNCUWJVQ0FFRUFBQUFBdFVJQlFMYUNBUUMzZ2dFQkFBQUFBQUFBQUFDNGdnRkF1Y0lBd0lTQWdJQzZnZ0RBaFlDQWdMYUNBUUdJd0FEXFxcbkJ1MElBd1FBQUFBR0dnQUJBUUFBQUFQd0NBQUVBQUFBQndBQUFBTHdDQU1IQUFBQUJ2TUlBd2NBQUFBRUFBQUFCd0FBQUFRQUFBQUdHZ1xcXG5BQkJ3QUFBQUwyQ0FZQy9BZ0pCd0FBQUFJRkNRWUNDd2tKQndBQUFBWVVDUUlIQUFBQUJoWUpBd2NBQUFBR0dRa0NCaHNKQWdZZENRSUhcXFxuQUFBQUFoOEpEQWNBQUFBR0dnQUJBUUFBQUFRQUFBQUJBQUFBQkFBQUFBSXJDUUVDQ0FBQkJBQUFBQUlzQ1FFQ0xRa0JBaTRKQVFJdkNRXFxcbkVDTUFrQkFqRUpBUVl5Q1FFQ013a0RCallKQVFZM0NRRUdPQWtCQWcwQUFRSXJDUUVDS3dBQkFpRUFBUUlpQUFFQ0xBa0JBaTBKQVFJdVxcXG5DUUVDTHdrQkFqQUpBUUl4Q1FFR01na0JBak1KQXdZMkNRRUdOd2tCQmpnSkFRUUFBQUFDQUFBQkFnUUFBUUlPQUFFQ0Z3QUJBZzRCQWdcXFxuSUhBQUVDQ2dBQkFnc0FBUUlNQUFFQ0RRQUJBZzhBQVFJU0FBRUNFd0FCQkFBQUFBY0FBQUFDT1FrQ0J3QUFBQVFBQUFBSEFBQUFCQUFBXFxcbkFBWTdDUU1HUGdrREFnSUFBUUpCQ1FNSEFBQUFCa1FKQXdaSENRTUNFQUVDQndBQUFBSktDUU1DQmdBQkFnY0FBUUtmQUFJQ0NBQUJBZ1xcXG5zQUFRY0FBQUFDRFFBQkFrMEpBZ2NBQUFBQ0R3QUJBaEFBQVFJUkFBRUhBQUFBQWs4SkFnSlJDUU1DVkFrQ0J3QUFBQUlaQUFFSEFBQUFcXFxuQWtJQ0FnY0FBQUFDR1FBQkJ3QUFBQUlLQUFFQ1JRQUNBZ0VBQVFJQ0FBRUhBQUFBQWdRQUFRSUZBQUVFQUFBQUFnd0FBUUlPQUFFQ1ZnXFxcbmtDQWxnSkFnSmFDUUlDWEFrQ0FnZ0FBUWNBQUFBQ1hna0RBaklDQWdJY0FnSUNNZ0lDQW1FSkF3Y0FBQUFDQXdBQkFnUUFBUUlJQUFFQ1xcXG5DUUFCQndBQUFBQUFBQUFIQUFBQUFtUUpCUUpwQ1FVQ2Jna0dBblFKQlFKNUNRVUNmZ2tGQW9NSkJRS0lDUVVDalFrRkFwSUpCUUtYQ1FcXFxuVUNuQWtGQXFFSkJRS21DUVVDcXdrRkFyQUpCQUlJQUFFQ3RBa0NBcllKQXdLNUNRSUNGUUFCQXJzSkFnSzlDUU1Dd0FrRUFzUUpBZ0lYXFxcbkFBRUN4Z2tDQXNnSkF3SUxBQUVDQWdBQkFnTUFBUUlNQUFFQ0NBQUJBclFKQWdLMkNRTUN1UWtDQWhVQUFRSzdDUUlDdlFrREFzQUpCQVxcXG5MRUNRSUNGd0FCQXNZSkFnTElDUU1DQ3dBQkFnSUFBUUlEQUFFQ0RBQUJCd0FBQUFRQUFBQUFBQUFBQndBQUFBTExDUVVIQUFBQUJBQUFcXFxuQUFjQUFBQUMwQWtHQXRZSkNRY0FBQUFDM3drR0F1VUpDUWNBQUFBRkFBQUFCd0FBQUFVQUFBQUhBQUFBQXU0SkF3THhDUU1IQUFBQUJBXFxcbkFBQUFjQUFBQUVBQUFBQWlzQUFRSWhBQUVDSWdBQkFpd0pBUUl0Q1FFQ0xna0JBaThKQVFJd0NRRUNNUWtCQXZRSkFnTDJDUUlDK0FrQ1xcXG5Bdm9KQWdMOENRSUMvZ2tDQWdBS0FnSUNDZ0lDQkFvQ0FnWUtBZ0lJQ2dJR0Nnb0RCZzBLQXdZUUNnTUdFd29EQmhZS0F3WVpDZ01HSEFcXFxub0RCaDhLQXdZaUNnTUdKUW9FQmlrS0JBWXRDZ1FHTVFvRUJqVUtCQVk1Q2dRR1BRb0VCa0VLQkFaRkNnUUdTUW9FQmswS0JBUUFBQUFHXFxcblVRb0RCbFFLQXdaWENnTUdXZ29EQmwwS0F3WmdDZ01HWXdvREJtWUtBd1pwQ2dNR2JBb0RCbThLQXdaeUNnTUdkUW9EQm5nS0F3WjdDZ1xcXG5NR2Znb0RCb0VLQXdhRUNnTUdod29EQm9vS0F3YU5DZ01Ha0FvREJwTUtBd2FXQ2dNR21Rb0RCcHdLQXdJQUFBRUNBUUFCQWdJQUFRSURcXFxuQUFFQ0JBQUJBZ1VBQVFJR0FBRUNCd0FCQWdnQUFRSUpBQUVDQ2dBQkFnc0FBUUlNQUFFQ0RRQUJBZzRBQVFJUEFBRUNFQUFCQWhFQUFRXFxcbklTQUFFQ0V3QUJBaFFBQVFJVkFBRUNGZ0FCQWhjQUFRSVlBQUVDR1FBQkFnQUFBUUlCQUFFQ0FnQUJBZ01BQVFJRUFBRUNCUUFCQWdZQVxcXG5BUUlIQUFFQ0NBQUJBZ2tBQVFJS0FBRUNDd0FCQWd3QUFRSU5BQUVDRGdBQkFnOEFBUUlRQUFFQ0VRQUJBaElBQVFJVEFBRUNGQUFCQWhcXFxuVUFBUUlXQUFFQ0Z3QUJBaGdBQVFJWkFBRUNLd2tCQndBQUFBS2ZDZ3dIQUFBQUJxc0tBd2F1Q2dJR3NBb0RCd0FBQUFLekNnVUhBQUFBXFxcbkJBQUFBQWNBQUFBRUFBQUFCd0FBQUFLNENnTUN1d29EQXI0S0F3TEJDZ01DeEFvREFzY0tBd0xLQ2dNQ3pRb0RBdEFLQXdMVENnTUMxZ1xcXG5vREF0a0tBd0xjQ2dNQzN3b0RBdUlLQXdMbENnTUM2QW9EQXVzS0F3THVDZ01DOFFvREF2UUtBd0wzQ2dNQytnb0RBdjBLQXdJQUN3TUNcXFxuQXdzREFnWUxBd0lKQ3dNQ0RBc0RBZzhMQXdJU0N3TUNGUXNEQWhnTEF3SWJDd01DSGdzREFpRUxBd0lrQ3dNQ0p3c0RBaW9MQXdJdEN3XFxcbk1DTUFzREFqTUxBd0kyQ3dNQ09Rc0RBandMQXdJL0N3TUNRZ3NEQkFBQUFBQUFBQUFFQUFBQUFrVUxBd0FBQUFBQ1NBc0NBa29MQXdKTlxcXG5Dd0lBQUFBQUFrOExBd0FBQUFBQ1Vnc0RBQUFBQUFKVkN3TUFBQUFBQXA0RkFnTEpCUUlDbkFVQ0FyRUZBZ0FBQUFBQ1dBc0RBQUFBQUFcXFxuSmJDd01BQUFBQUFna0FBUUlWQUFFQ1hnc0NBbUFMQWdKaUN3TUFBQUFBQW1VTEF3QUFBQUFDYUFzREFBQUFBQUpyQ3dNQUFBQUFBbTRMXFxcbkF3QUFBQUFDY1FzREFBQUFBQUowQ3dNQUFBQUFBbmNMQXdBQUFBQUNlZ3NEQUFBQUFBSjlDd01BQUFBQUFvQUxBd0FBQUFBQ2d3c0RBQVxcXG5BQUFBS0dDd01BQUFBQUFva0xBd0FBQUFBQ2pBc0RBQUFBQUFLUEN3TUFBQUFBQXBJTEF3QUFBQUFDbFFzREFBQUFBQUtZQ3dNQUFBQUFcXFxuQXBzTEF3QUFBQUFDbmdzREFBQUFBQUtoQ3dNQUFBQUFBcVFMQXdBQUFBQUNwd3NEQUFBQUFBS3FDd01BQUFBQUFxMExBd0FBQUFBQ3NBXFxcbnNEQUFBQUFBS3pDd01BQUFBQUFyWUxBd0FBQUFBQ3VRc0RBQUFBQUFLOEN3TUFBQUFBQXI4TEF3QUFBQUFDd2dzREFBQUFBQUxGQ3dNQVxcXG5BQUFBQXNnTEF3QUFBQUFDeXdzREFBQUFBQUxPQ3dNQUFBQUFBdEVMQXdBQUFBQUMxQXNEQUFBQUFBTFhDd01BQUFBQUF0b0xBd0FBQUFcXFxuQUMzUXNEQUFBQUFBTGdDd01BQUFBQUF1TUxBd0FBQUFBQzVnc0RBQUFBQUFMcEN3TUFBQUFBQXV3TEF3QUFBQUFDN3dzREFBQUFBQUx5XFxcbkN3TUFBQUFBQXZVTEF3QUFBQUFIQUFBQUF2Z0xBd0FBQUFBQyt3c0RBQUFBQUFMK0N3TUFBQUFBQkFBQUFBY0FBQUFBQUFBQUJBQUFBQVxcXG5BQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUlCREFNSEFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFcXFxuQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFIQUFBQUFBXFxcbkFBQUFjQUFBQUVBQUFBQndBQUFBUUFBQUFIQUFBQUFnUU1Bd2NBQUFBQ0J3d0RCQUFBQUFJS0RBTUNEUXdEQWhBTUF3SVREQU1DRmd3RFxcXG5BaGtNQXdJY0RBTUNId3dEQWlJTUF3SWxEQU1DS0F3REFpc01Bd0l1REFNQ01Rd0RBalFNQXdJM0RBTUNPZ3dEQWowTUF3SkFEQU1DUXdcXFxud0RBa1lNQXdKSkRBTUNUQXdEQWs4TUF3SlNEQU1DVlF3REFsZ01Bd0piREFNQ1hnd0RBbUVNQXdKa0RBTUNad3dEQW1vTUF3SnREQU1DXFxcbmNBd0RBbk1NQXdKMkRBTUNlUXdEQW53TUF3Si9EQU1DZ2d3REFvVU1Bd0tJREFNQ2l3d0RBbzRNQXdLUkRBTUNsQXdEQXBjTUF3S2FEQVxcXG5NQ25Rd0RBcUFNQXdLakRBTUNwZ3dEQXFrTUF3S3NEQU1Dcnd3REFySU1Bd0sxREFNQ3VBd0RBcnNNQXdLK0RBTUN3UXdEQXNRTUF3TEhcXFxuREFNQ3lnd0RBczBNQXdMUURBTUMwd3dEQXRZTUF3TFpEQU1DM0F3REF0OE1Bd0xpREFNQzVRd0RBdWdNQXdMckRBTUM3Z3dEQXZFTUF3XFxcbkwwREFNQzl3d0RBdm9NQXdMOURBTUNBQTBEQWdNTkF3SUdEUU1DQ1EwREFnd05Bd0lQRFFNQ0VnMERBaFVOQXdJWURRTUNHdzBEQWg0TlxcXG5Bd0loRFFNQ0pBMERBaWNOQXdJcURRTUNMUTBEQWpBTkF3SXpEUU1DTmcwREFqa05Bd0k4RFFNQ1B3MERBa0lOQXdKRkRRTUNTQTBEQWtcXFxuc05Bd0pPRFFNQ1VRMERBbFFOQXdKWERRTUNXZzBEQWwwTkF3SmdEUU1DWXcwREFtWU5Bd0pwRFFNQ2JBMERBbThOQXdKeURRTUNkUTBEXFxcbkFuZ05Bd0o3RFFNQ2ZnMERBb0VOQXdLRURRTUNodzBEQW9vTkF3S05EUU1Da0EwREFwTU5Bd0tXRFFNQ21RMERBcHdOQXdLZkRRTUNvZ1xcXG4wREFxVU5Bd0tvRFFNQ3F3MERBcTROQXdLeERRTUN0QTBEQXJjTkF3SzZEUU1DdlEwREFzQU5Bd0xERFFNQ3hnMERBc2tOQXdMTURRTUNcXFxuencwREF0SU5Bd0xWRFFNQzJBMERBdHNOQXdMZURRTUM0UTBEQXVRTkF3TG5EUU1DNmcwREF1ME5Bd0x3RFFNQzh3MERBdllOQXdMNURRXFxcbk1DL0EwREF2OE5Bd0lDRGdNQ0JRNERBZ2dPQXdJTERnTUNEZzREQWhFT0F3SVVEZ01DRnc0REFob09Bd0lkRGdNQ0lBNERBaU1PQXdJbVxcXG5EZ01DS1E0REFpd09Bd0l2RGdNQ01nNERBalVPQXdJNERnTUNPdzREQWo0T0F3SkJEZ01DUkE0REFrY09Bd0pLRGdNQ1RRNERBbEFPQXdcXFxuSlREZ01DVmc0REFsa09Bd0pjRGdNQ1h3NERBbUlPQXdKbERnTUNhQTREQW1zT0F3SnVEZ01DY1E0REFuUU9Bd0ozRGdNQ2VnNERBbjBPXFxcbkF3S0FEZ01DZ3c0REFvWU9Bd0tKRGdNRUFBQUFCaG9BQVFjQUFBQUNqQTRCQndBQUFBQUFBQUFIQUFBQUFBQUFBQWNBQUFBQ2pRNERCd1xcXG5BQUFBSlBEQU1Da0E0REFwTU9Bd2NBQUFBQUFBQUFCd0FBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFHbGc0RUJwb09CQUFBQUFBQ25nNEdcXFxuQndBQUFBQUFBQUFDcEE0R0JBQUFBQUFBQUFBRUFBQUFBcW9PQXdLdERnTUNzQTREQXJNT0F3SzJEZ01DdVE0REFyd09Bd0svRGdNQ3dnXFxcbjREQXNVT0F3TElEZ01DeXc0REFzNE9Bd0xSRGdNQzFBNERBdGNPQXdMYURnTUMzUTREQXVBT0F3TGpEZ01DNWc0REF1a09Bd0xzRGdNQ1xcXG43dzREQXZJT0F3TDFEZ01DK0E0REF2c09Bd0wrRGdNQ0FROERBZ1FQQXdJSER3TUNDZzhEQWcwUEF3SVFEd01DRXc4REFoWVBBd0laRHdcXFxuTUNIQThEQWg4UEF3SWlEd01DSlE4REFpZ1BBd0lyRHdNQ0xnOERBakVQQXdJMER3TUNOdzhEQWpvUEF3STlEd01DUUE4REJBQUFBQUpEXFxcbkR3TUNSZzhEQWtrUEF3Sk1Ed01DVHc4REFsSVBBd0pWRHdNQ1dBOERBbHNQQXdKZUR3TUNZUThEQW1RUEF3Sm5Ed01DYWc4REFtMFBBd1xcXG5Kd0R3TUNjdzhEQW5ZUEF3SjVEd01DZkE4REFuOFBBd0tDRHdNQ2hROERBb2dQQXdLTER3TUNqZzhEQXBFUEF3S1VEd01DbHc4REFwb1BcXFxuQXdLZER3TUNvQThEQXFNUEF3S21Ed01DcVE4REFxd1BBd0t2RHdNQ3NnOERBclVQQXdLNER3TUN1dzhEQXI0UEF3UUFBQUFIQUFBQUFnXFxcbm9NQXdJY0RBTUN3UThEQXNRUEF3TEhEd01DeWc4REFzMFBBd0xRRHdNQ0Znd0RBdE1QQXdMV0R3TUMyUThEQXR3UEF3SWlEQU1BQUFBQVxcXG5Cd0FBQUFRQUFBQUFBQUFBQnQ4UEJRYmtEd1VHNlE4RkJ1NFBCUWJ6RHdVRytBOEZCdjBQQlFZQ0VBVUdCeEFGQmd3UUJRWVJFQVVHRmhcXFxuQUZCaHNRQlFZZ0VBVUdKUkFGQmlvUUJRWXZFQVVHTkJBRkJqa1FCUVkrRUFVR1F4QUZCa2dRQlFaTkVBVUdVaEFGQmxjUUJRWmNFQVVHXFxcbllSQUZCbVlRQlFackVBVUdjQkFJQm5nUUNBUUFBQUFHZ0JBRkJvVVFCUWFLRUFVR2p4QUZCcFFRQlFhWkVBVUduaEFGQnFNUUJRYW9FQVxcXG5VR3JSQUZCcklRQlFhM0VBVUd2QkFGQnNFUUJRYkdFQVVHeXhBRkJ0QVFCUWJWRUFVRzJoQUZCdDhRQlFia0VBVUc2UkFGQnU0UUJRYnpcXFxuRUFVRytCQUZCdjBRQlFZQ0VRVUdCeEVGQmd3UkJRWVJFUVVHRmhFRkJoc1JCUVlnRVFVR0pSRUZCaW9SQlFZdkVRVUNOQkVEQWpjUkF3XFxcbkxRREFNQ09oRURCd0FBQUFJOUVRTUNRQkVDQWtJUkFnSkVFUUlDUmhFQ0FrZ1JBZ0pLRVFJQ1RCRUNBazRSQWdKUUVRSUNVaEVDQWxRUlxcXG5BZ0pXRVFJQ1dCRUNBbG9SQWdKY0VRSUNxZzREQXJNT0F3SzhEZ01Dd2c0REF0b09Bd0xkRGdNQzVnNERBdXdPQXdMdkRnTUM5UTREQXZcXFxuZ09Bd0w3RGdNQy9nNERBZ0VQQXdKZUVRTUNZUkVEQW1RUkF3Sm5FUU1DYWhFREFtMFJBd0p3RVFNQ2N4RURBbllSQXdKNUVRTUNmQkVEXFxcbkFuOFJBd0tDRVFNQ2hSRURBb2dSQmdLT0VRWUNsQkVEQndBQUFBSUtEQU1DSEF3REFzRVBBd0xFRHdNQ2x4RURBcG9SQXdLZEVRTUNLd1xcXG53REFxQVJBd0pQREFNQzVRd0RBZ2tOQXdJR0RRTUM2QXdEQXZ3TkF3Sm5EQU1DM3d3REFxTVJBd0ttRVFNQ3FSRURBcXdSQXdLdkVRTUNcXFxuc2hFREFyVVJBd0s0RVFNQ3V4RURBcjRSQXdKNURBTUN3UkVEQXNRUkF3TEhFUU1DeWhFREFzMFJBd0xRRVFNQzB4RURBdFlSQXdMSER3XFxcbk1DeWc4REFzMFBBd0xaRVFNQzNCRURBdDhSQXdMaUVRTUM1UkVEQXVnUkF3THJFUU1DN2hFREF2RVJBd0wwRVFNQzl4RUNBdmtSQWdMN1xcXG5FUUlDL1JFQ0F2OFJBZ0lCRWdJQ0F4SUNBZ1VTQWdJSEVnSUNDUklDQWdzU0FnSU5FZ0lDRHhJQ0FoRVNBZ0lURWdJQ0ZSSUVBaGtTQkFcXFxuSWRFZ1FDSVJJRUFpVVNCQUlwRWdRQ0xSSUVBakVTQkFJMUVnUUNPUklGQWo0U0JRSkRFZ1VDU0JJQ0Frb1NBd0pORWdJQ1R4SURBbElTXFxcbkF3SlZFZ01DV0JJREFsc1NBd0plRWdNQ1lSSURBbVFTQXdKbkVnTUNhaElEQW0wU0F3SndFZ01DY3hJREFuWVNBd0o1RWdNQ2ZCSURBblxcXG44U0F3S0NFZ01DaFJJREFvZ1NBd0tMRWdNQ2poSURBcEVTQXdLVUVnTUNseElEQXBvU0F3S2RFZ01Db0JJREFxTVNBd0ttRWdNQ3FSSURcXFxuQXF3U0F3S3ZFZ01Dc2hJREFyVVNBd0s0RWdNQ3V4SURBcjRTQXdMQkVnTUN4QklEQXNjU0F3TEtFZ01DelJJREF0QVNBd0xURWdNQzFoXFxcbklEQXRrU0F3TGNFZ01DM3hJR0F1VVNEQUx4RWd3Qy9SSU1BZ2tUQ1FJU0V3d0NIaE1KQWljVENRSXdFdzhDUHhNTUFrc1RDUUpVRXdrQ1xcXG5YUk1KQW1ZVERBSnlFd3dDZmhNSkFvY1RDUUtRRXdZQ2xoTUpBcDhUREFLckV3d0N0eE1HQXIwVER3TE1FeElDM2hNUEF1MFRDUUwyRXdcXFxuOENCUlFQQWhRVURBSWdGQWtDS1JRSkFqSVVDUUk3RkF3Q1J4UVBBbFlVREFKaUZBa0NheFFKQW5RVUNRSjlGQVlDZ3hRR0Fva1VCZ0tQXFxcbkZBWUNsUlFKQXA0VUNRS25GQThDdGhRSkFyOFVEQUxMRkE4QzJoUUpBdU1VQmdMcEZBWUM3eFFQQXY0VURBSUtGUThDR1JVSkFpSVZEd1xcXG5JeEZRWUNOeFVKQWtBVkNRSkpGUWtDVWhVSkFsc1ZDUUprRlF3Q2NCVUpBbmtWQmdKL0ZRa0NpQlVKQXBFVkNRS2FGUXdDcGhVSkFxOFZcXFxuQ1FLNEZRa0N3UlVQQXRBVkRBTGNGUVlDNGhVUEF2RVZCZ0wzRlF3Q0F4WU1BZzhXQ1FJWUZna0NJUllKQWlvV0RBSTJGZ1lDUEJZSkFrXFxcblVXREFKUkZnWUNWeFlQQW1ZV0NRSnZGZ1FDY3hZRUFuY1dCQUo3RmdRQ2Z4WUVBb01XQkFLSEZnUUNpeFlFQW84V0JBS1RGZ1FDbHhZRlxcXG5BcHdXQlFLaEZnVUNwaFlGQXFzV0JRS3dGZ1VDdFJZRkFyb1dCUUsvRmdVQ3hCWUZBc2tXQlFMT0ZnVUMweFlGQXRnV0JRTGRGZ1VDNGhcXFxuWURBdVVXQWdMbkZnSUM2UllEQXV3V0FnTHVGZ0lDOEJZQ0F2SVdBd0wxRmdNQytCWUNBdm9XQmdJQUZ3WUNCaGNHQWd3WEJnSVNGd3dDXFxcbkhoY0NBaUFYQWdJaUZ3TUNKUmNDQWljWEFnSXBGd0lDS3hjQ0FpMFhBZ0l2RndNQ01oY0VBallYQWdJNEZ3SUNPaGNEQWowWEF3SkFGd1xcXG5JQ1FoY0NBa1FYQWdKR0Z3TUNTUmNEQWt3WEF3SlBGd01DVWhjREFsVVhBZ0pYRndJQ1dSY0NBbHNYQWdKZEZ3SUNYeGNEQW1JWEFnSmtcXFxuRndJQ1poY0NBbWdYQXdKckZ3TUNiaGNDQW5BWEF3SnpGd01DZGhjREFua1hBZ0o3RndNQ2ZoY0ZBb01YQmdJZUZ3SUNpUmNEQW93WEF3XFxcbktQRndNQ2toY0RBcFVYQndLY0Z3Z0NwQmNDQXFZWEFnS29Gd01DcXhjQ0FxMFhBZ0t2RndJQ3NSY0RBclFYQWdLMkZ3SUN0QmNDQXJnWFxcXG5BZ0s2RndJQ3ZCY0RBcjhYQWdMQkZ3SUN2eGNDQXNNWEF3TEdGd01FQUFBQUFza1hBZ0xMRndJQ3pSY0NBczhYQmdRQUFBQUMxUmNDQXRcXFxuY1hBZ0xaRndJQzJ4Y0NBdDBYQWdMZkZ3SUNaaGNDQXVFWEFnTGpGd0lDNVJjQ0F1Y1hBd0xxRndJQ0t4Y0NBdXdYQXdMdkZ3TUM4aGNDXFxcbkJBQUFBQUwwRndNQzl4Y0NBdmtYQWdMN0Z3SUMvUmNDQXY4WEJRSUVHQVVDQ1JnRUFnMFlCQUlSR0FRQ0ZSZ0VBaGtZQkFJZEdBUUNJUlxcXG5nRUFpVVlCQUlwR0FRQ0xSZ0ZBaklZQlFJM0dBVUNQQmdGQWtFWUJRSkdHQVVDU3hnRkFsQVlCUUpWR0FVQ1doZ0ZBbDhZQlFKa0dBVUNcXFxuYVJnRkFtNFlCUUp6R0FVQ2VCZ0ZBbjBZQlFLQ0dBVUNoeGdGQW93WUJRS1JHQVVDbGhnRkFwc1lBd0FBQUFBSEFBQUFBQUFBQUFRQUFBXFxcbkFBQUFBQUJBQUFBQWNBQUFBRUFBQUFBQUFBQUFjQUFBQUFBQUFBQndBQUFBQUFBQUFFQUFBQUFwNFlBd0FBQUFBQ29SZ0RBQUFBQUFLa1xcXG5HQU1BQUFBQUFxY1lBd0FBQUFBQ3FoZ0RBQUFBQUFJU0JRTUFBQUFBQXEwWUF3QUFBQUFDc0JnREFBQUFBQUt6R0FNQUFBQUFBcllZQXdcXFxuQUFBQUFDdVJnREFBQUFBQUs4R0FNQUFBQUFBcjhZQXdBQUFBQUN3aGdEQUFBQUFBTEZHQU1BQUFBQUFzZ1lBd0FBQUFBQ3l4Z0RBQUFBXFxcbkFBTE9HQU1BQUFBQUF0RVlBd0FBQUFBQzFCZ0RBQUFBQUFMWEdBTUFBQUFBQXRvWUF3QUFBQUFDM1JnREFBQUFBQWNBQUFBQUFBQUFCd1xcXG5BQUFBQUFBQUFDNEJnREFBQUFBQUxqR0FNQUFBQUFBdVlZQXdBQUFBQUM2UmdEQUFBQUFBTHNHQU1BQUFBQUF1OFlBd0FBQUFBQzhoZ0RcXFxuQUFBQUFBTDFHQU1BQUFBQUF2Z1lBd0FBQUFBQyt4Z0RBQUFBQUFMK0dBTUFBQUFBQWdFWkF3QUFBQUFDQkJrREFBQUFBQUlIR1FNQUFBXFxcbkFBQXNBQ0FnTEVBZ0lBQUFBQUJ3QUFBQUFBQUFBSEFBQUFCQUFBQUFjQUFBQUFBQUFBQndBQUFBSUtHUU1BQUFBQUFnMFpBd0FBQUFBQ1xcXG5FQmtEQUFBQUFBSVRHUU1BQUFBQUFoWVpBd0FBQUFBQ0dSa0RBQUFBQUFJY0dRTUFBQUFBQWg4WkF3QUFBQUFDSWhrREFBQUFBQUlsR1FcXFxuTUFBQUFBQWlnWkF3QUFBQUFDS3hrREFBQUFBQUl1R1FNQUFBQUFBakVaQXdBQUFBQUNOQmtEQUFBQUFBSTNHUU1BQUFBQUFqb1pBd0FBXFxcbkFBQUNQUmtEQUFBQUFBSkFHUU1BQUFBQUFrTVpBd0FBQUFBQ1Joa0RBQUFBQUFKSkdRTUFBQUFBQWt3WkF3QUFBQUFDVHhrREFBQUFBQVxcXG5KU0dRTUFBQUFBQWxVWkF3QUFBQUFDV0JrREFBQUFBQUpiR1FNQUFBQUFBbDRaQXdBQUFBQUNZUmtEQUFBQUFBSmtHUU1BQUFBQUFtY1pcXFxuQXdBQUFBQUNhaGtEQUFBQUFBSnRHUU1BQUFBQUFuQVpBd0FBQUFBQ2N4a0RBQUFBQUFKMkdRTUFBQUFBQW5rWkF3QUFBQUFDZVJrREFBXFxcbkFBQUFKOEdRTUFBQUFBQW44WkF3QUFBQUFDZ2hrREFvVVpBd0FBQUFBQ2lCa0RBQUFBQUFLTEdRTUFBQUFBQW80WkF3QUFBQUFDa1JrRFxcXG5BQUFBQUFjQUFBQUNsQmtEQUFBQUFBSzVCUUlBQUFBQUFwY1pBd0FBQUFBQ21oa0RBQUFBQUFLZEdRTUFBQUFBQXFBWkF3QUFBQUFDb3hcXFxua0RBQUFBQUFLbUdRTUFBQUFBQXFrWkF3QUFBQUFDckJrREFBQUFBQUt2R1FNQUFBQUFBcklaQXdBQUFBQUN0UmtEQUFBQUFBSzRHUU1BXFxcbkFBQUFBczBCQWdLakJRSUN0d1VDQXJzWkFnSzdCUUlBQUFBQUFyMFpBZ0svR1FJQ3dBVUNBc0VaQXdMRUdRTUFBQUFBQXNjWkF3QUFBQVxcXG5BQ3loa0RBQUFBQUFMTkdRTUFBQUFBQXRBWkF3QUFBQUFDMHhrREFBQUFBQVFBQUFBQzFoa0RBQUFBQUFMWkdRTUMwd1VDQXR3WkF3TGZcXFxuR1FNQUFBQUFBdUlaQXdBQUFBQUVBQUFBQXVVWkF3QUFBQUFDbndBQ0FzNEFBZ0FBQUFBSEFBQUFBQUFBQUFRQUFBQUhBQUFBQkFBQUFBXFxcbkFBQUFBSEFBQUFCQUFBQUFBQUFBQUVBQUFBQndBQUFBQUFBQUFFQUFBQUFBQUFBQWNBQUFBQUFBQUFCd0FBQUFBQUFBQUhBQUFBQUFBQVxcXG5BQVFBQUFBSEFBQUFCQUFBQUFBQUFBQUhBQUFBQkFBQUFBQUFBQUFFQUFBQUJ3QUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFcXFxuQUFBQUFBQUFBRUFBQUFCd0FBQUFBQUFBQUhBQUFBQUFBQUFBUUFBQUFBQUFBQUJ3QUFBQUFBQUFBSEFBQUFBQUFBQUFRQUFBQUFBQUFBXFxcbkJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQWNBQUFBQ0VCa0RBdWdaQXdKSUN3SUM2eFxcXG5rREFBQUFBQUx1R1FJSEFBQUFCQUFBQUFMd0dRTUM4eGtEQXZZWkF3TDVHUU1DL0JrREF2OFpBd0lDR2dNQ0JSb0RBZ2dhQXdJTEdnTUNcXFxuRGhvREFoRWFBd0lVR2dNQ0Z4b0RBaG9hQXdJZEdnTUNJQm9EQWlNYUF3SW1HZ01DS1JvREFpd2FBd0l2R2dNQ01ob0RBalVhQXdJNEdnXFxcbk1DT3hvREFqNGFBd0pCR2dNQ1JCb0RBa2NhQXdKS0dnTUNUUm9EQWxBYUF3SlRHZ01DVmhvREFsa2FBd0pjR2dNQ1h4b0RBbUlhQXdKbFxcXG5HZ01DYUJvREFtc2FBd0p1R2dNQ2NSb0RBblFhQXdKM0dnTUNlaG9EQW4wYUF3S0FHZ01DZ3hvREFvWWFBd0tKR2dNQ2pCb0RBbzhhQXdcXFxuS1NHZ01DbFJvREFwZ2FBd0tiR2dNQ25ob0RBcUVhQXdLa0dnTUNweG9EQXFvYUF3S3RHZ01Dc0JvREFyTWFBd0syR2dNQ3VSb0RBcndhXFxcbkF3Sy9HZ01Dd2hvREFzVWFBd0xJR2dNQ3l4b0RBczRhQXdMUkdnTUMxQm9EQXRjYUF3TGFHZ01DM1JvREFBQUFBQWNBQUFBQUFBQUFCQVxcXG5BQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBSEFBQUFCQUFBQUFjQUFBQUVBQUFBQXVBYUF3TGpHZ01DNUEwREF1WWFBd0xwR2dNQzdCb0RcXFxuQXU4YUF3S0dEZ01DOGhvREF2d05Bd0wxR2dNQytCb0RBdnNhQXdMK0dnTUNBUnNEQWdRYkF3SUhHd01DQ2hzREFnMGJBd0lRR3dNQ0V4XFxcbnNEQWhZYkF3SVpHd01DSEJzREFoOGJBd0lpR3dNQ0pSc0RBaWdiQXdJckd3TUNMaHNEQWpFYkF3STBHd01DTnhzREFqb2JBd0k5R3dNQ1xcXG5RQnNEQWtNYkF3SkdHd01DU1JzREFrd2JBd0pQR3dNQ1Voc0RBbFViQXdKWUd3TUNXeHNEQWw0YkF3SmhHd01DWkJzREFtY2JBd0pxR3dcXFxuTUNiUnNEQW40TkF3SndHd01DY3hzREFuWWJBd0o1R3dNQ2ZCc0RBbjhiQXdLQ0d3TUNoUnNEQW9nYkF3S0xHd01DamhzREFsa09Bd0tSXFxcbkd3TUNsQnNEQXBjYkF3S2FHd01DblJzREFxQWJBd0tqR3dNQ3Boc0RBcWtiQXdLc0d3TUNyeHNEQXJJYkF3SzFHd01DdUJzREFyc2JBd1xcXG5LK0d3TUN3UnNEQXNRYkF3TEhHd01DeWhzREFzMGJBd0xRR3dNQzB4c0RBdFliQXdMWkd3TUMzQnNEQXQ4YkF3SVFHd01DNGhzREF1VWJcXFxuQXdMb0d3TUM2eHNEQXU0YkF3THhHd01DOUJzREF2Y2JBd0w2R3dNQy9Sc0RBZ0FjQXdJREhBTUNCaHdEQWdrY0F3SU1IQU1DRHh3REFoXFxcbkljQXdJVkhBTUNHQndEQWhzY0F3THFEUU1DSGh3REFpRWNBd0lrSEFNQ0p4d0RBaW9jQXdJdEhBTUNNQndEQWpNY0F3STJIQU1DT1J3RFxcXG5BandjQXdJL0hBTUNRaHdEQWtVY0F3SklIQU1DZVF3REFrc2NBd0pPSEFNQ1VSd0RBbFFjQXdKWEhBTUNXaHdEQWwwY0F3SmdIQU1DUUFcXFxud0RBbU1jQXdKbUhBTUNhUndEQW13Y0F3SnZIQU1DY2h3REFuVWNBd0o0SEFNQ2V4d0RBbjRjQXdLQkhBTUNoQndEQW9jY0F3S0tIQU1DXFxcbmpSd0RBcEFjQXdLVEhBTUNsaHdEQXBrY0F3S2NIQU1Dbnh3REFxSWNBd0lZSEFNQ3BSd0RBcWdjQXdLckhBTUNyaHdEQXJFY0F3SzBIQVxcXG5NQ3R4d0RBcm9jQXdMb0d3TUN2UndEQXNBY0F3TERIQU1DeGh3REFza2NBd0xNSEFNQ3p4d0RBdEljQXdMVkhBTUMyQndEQXRzY0F3TGVcXFxuSEFNQzRSd0RBdVFjQXdMbkhBTUM2aHdEQXUwY0F3THdIQU1DOHh3REF2WWNBd0lRR3dNQytSd0RBdndjQXdML0hBTUNBaDBEQW9NT0F3XFxcbklGSFFNQ0NCMERBZ3NkQXdJT0hRTUNFUjBEQWhRZEF3SVhIUU1DR2gwREFoMGRBd0lnSFFNQ0l4MERBaVlkQXdLYUVRTUNLUjBEQWl3ZFxcXG5Bd0l2SFFNQ01oMERBalVkQXdJNEhRTUNPeDBEQWo0ZEF3SkJIUU1DN2hzREFrUWRBd0pISFFNQ1NoMERBazBkQXdKUUhRTUNVeDBEQWxcXFxuWWRBd0paSFFNQ1hCMERBbDhkQXdKaUhRTUNaUjBEQW1nZEF3TDVEUU1DYXgwREFtNGRBd0p4SFFNQ2RCMERBbmNkQXdKNkhRTUNmUjBEXFxcbkFvQWRBd0tESFFNQ2hoMERBb2tkQXdLTUhRTUNqeDBEQW1ZTkF3S1NIUU1DbFIwREFwZ2RBd0tiSFFNQ25oMERBcUVkQXdLa0hRTUNweFxcXG4wREFxb2RBd0t0SFFNQ3NCMERBck1kQXdLMkhRTUN1UjBEQXJ3ZEF3Sy9IUU1DdHcwREFzSWRBd0xBRFFNQ3hSMERBc2dkQXdMTEhRTUFcXFxuQUFBQUFzNGRBd0FBQUFBQzBSMERBQUFBQUFMVUhRTUMxeDBEQXRvZEF3TGRIUU1DNEIwREF1TWRBd0xtSFFNQzZSMERBdXdkQXdKN0RRXFxcbk1BQUFBQUF1OGRBd0FBQUFBQzhoMERBQUFBQUFMMUhRTUMrQjBEQUFBQUFBTDdIUU1DL2gwREFnRWVBd0lFSGdNQ0J4NERBZ29lQXdJTlxcXG5IZ01DRUI0REFoTWVBd0lXSGdNQ0dSNERBaHdlQXdJZkhnTUNJaDREQWlVZUF3SW9IZ01DS3g0REFpNGVBd0tPREFNQ01SNERBalFlQXdcXFxuSTNIZ01DT2g0REFqMGVBd0pBSGdNQ1F4NERBa1llQXdKSkhnTUNUQjREQWs4ZUF3SlNIZ01DVlI0REFsZ2VBd0piSGdNQ3FSRURBbDRlXFxcbkF3SmhIZ01DWkI0REFtY2VBd0sxRVFNQ2FoNERBbTBlQXdKd0hnTUNjeDREQW5ZZUF3S0VIQU1DZVI0REFud2VBd0ovSGdNQ2doNERBb1xcXG5VZUF3S0lIZ01DaXg0REFvNGVBd0tSSGdNQ2xCNERBcGNlQXdLYUhnTUNuUjREQXFBZUF3TDFIUU1Db3g0REFxWWVBd0twSGdNQ3JCNERcXFxuQXE4ZUJBS3pIZ01FQUFBQUFyWWVBd0s1SGdNQ3ZCNERBcjhlQXdMQ0hnTUN4UjREQXNnZUF3TExIZ01DSHg0REFzNGVBd0xSSGdNQzFCXFxcbjREQXM0ZEF3TFhIZ01DMmg0REF0MGVBd0xnSGdNQzR4NERBdVllQXdMcEhnTUM3QjREQXU4ZUF3THlIZ01DOVI0REF2Z2VBd0kzSGdNQ1xcXG4reDREQWpvZUF3TCtIZ01DQVI4REFnUWZBd0lISHdNQ0NoOERBdEVkQXdKUEd3TUNEUjhEQWhBZkF3THhEQU1DR3h3REFoUWRBd0lUSHdcXFxuTUNGaDhEQWs4ZUF3SVpId01DVWg0REFod2ZBd0lmSHdNQ0loOERBdGNkQXdJbEh3TUNLQjhEQWlzZkF3SXVId01DTVI4REF0b2RBd0kwXFxcbkh3TUNOeDhEQWpvZkF3STlId01DUUI4REFrTWZBd0oySGdNQ1JoOERBa2tmQXdLRUhBTUNUQjhEQW9JZUF3SlBId01DVWg4REFsVWZBd1xcXG5KWUh3TUNXeDhEQXBFZUF3SmVId01DOGgwREFtRWZBd0tVSGdNQzRoc0RBbVFmQXdLWEhnTUNaeDhEQXAwZUF3SnFId01DYlI4REFuQWZcXFxuQXdKekh3TUNkaDhEQXFNZUF3THBIUU1DZVI4REFxWWVBd0o4SHdNQ3FSNERBbjhmQXdLR0RnTUNnaDhFQW9ZZkJBS0tId1FDamg4REFwXFxcbkVmQXdLVUh3TUNseDhFQXBzZkJBS2ZId1FDb3g4REFxWWZBd1FBQUFBQ3FSOENBcXNmQWdLdEh3SUNyeDhEQXJJZkF3SzFId0lFQUFBQVxcXG5BcmNmQkFLN0h3UUN2eDhFQXNNZkJBTEhId1FFQUFBQUFzc2ZCQUFBQUFBQ3p4OEVBdE1mQWdKV0NRSUNYQWtDQXRVZkFnTFhId0lDMlJcXFxuOENBdHNmQWdMZEh3SUMzeDhDQmpJSkFRTGhId1FDNVI4RUF1a2ZCZ0x2SHdZQzlSOEVBdmtmQkFMOUh3UUNBU0FFQWdVZ0JBSUpJQVFDXFxcbkRTQUVBaEVnQkFJVklBUUVBQUFBQWhrZ0JBSWRJQVFDSVNBRUFpVWdCQUlwSUFRRUFBQUFBaTBnQkFRQUFBQUNNU0FFQWpVZ0JBUUFBQVxcXG5BQ09TQUVBajBnQkFRQUFBQUNRU0FFQWtVZ0JBSkpJQVFDVFNBRUFsRWdCQUpWSUFRQ1dTQUVBbDBnQkFKaElBUUNaU0FFQW1rZ0FnSnJcXFxuSUFJQ2JTQUNBbThnQWdKeElBSUNjeUFDQW5VZ0FnSjNJQUlDZVNBQ0Fuc2dBZ0o5SUFJQ2Z5QUNBb0VnQWdLRElBSUNoU0FDQW9jZ0FnXFxcbktKSUFJQ2l5QUNBbzBnQWdLUElBSUNrU0FDQXBNZ0FnS1ZJQUlDbHlBQ0Fwa2dBZ0tiSUFJQ25TQUNBcDhnQWdLaElBSUNveUFDQndBQVxcXG5BQVFBQUFBQ3BTQUNBcWNnQWdLcElBSUNxeUFDQXVvREJBS3RJQUlDcnlBQ0FyRWdBZ0t6SUFJQ3RTQUNBcmNnQkFLN0lBUUN2eUFFQXNcXFxuTWdCQUxISUFRQ3l5QUVBczhnQkFMVElBUUMxeUFDQXRrZ0JBTGRJQVFDNFNBRUF0TWdCQUxsSUFRQzZTQUVBdTBnQkFMeElBUUM5U0FFXFxcbkF2a2dCQUw5SUFRQ0FTRUVBZ1VoQkFJSklRUUNEU0VFQWhFaEJBSVZJUVFDR1NFRUFoMGhCQUloSVFRQ0pTRUVBaWtoQkFJdElRUUNNU1xcXG5FRUFqVWhCQUk1SVFRQ1BTRUVBa0VoQkFKRklRUUNTU0VFQWswaEJBSlJJUVFDVlNFRUFsa2hCQUpkSVFRQ1lTRUVBbVVoQkFKcElRUUNcXFxuYlNFRUFuRWhCQUoxSVFRQ2VTRUVBbjBoQkFLQklRUUNoU0VFQW9raEJBS05JUVFDa1NFRUFwVWhCQUtaSVFRQ25TRUVBcUVoQkFLbElRXFxcblFDcVNFRUFxMGhCQUt4SVFRQ3RTRUVBcmtoQkFLOUlRUUN3U0VFQXNVaEJBTEpJUVFDelNFRUF0RWhCQUxWSVFRQzJTRUVBdDBoQkFMaFxcXG5JUVFDNVNFRUF1a2hCQUx0SVFRQzhTRUVBdlVoQkFMNUlRUUMvU0VFQWdFaUJBSUZJZ1FDQ1NJRUFnMGlCQUlSSWdRQ0ZTSUVBaGtpQkFcXFxuSWRJZ1FDSVNJRUFpVWlCQUlwSWdRQ0xTSUVBakVpQkFJMUlnUUNPU0lFQWowaUJBSkJJZ1FDUlNJRUFra2lCQVpOSWdVR1VpSUZCbGNpXFxcbkJRWmNJZ1VHWVNJRkJtWWlCUUpySWdRQ2J5SUVBdUVnQkFKeklnUUMweUFFQXVVZ0JBSjNJZ1FDZXlJRUF2VWdCQUovSWdRQytTQUVBdlxcXG4wZ0JBS0RJZ1FDaHlJRUFnMGhCQUtMSWdRQ0VTRUVBaFVoQkFLUElnUUNreUlFQWgwaEJBS1hJZ1FDSVNFRUFpVWhCQUtaSVFRQ25TRUVcXFxuQXFraEJBS3RJUVFDc1NFRUFzRWhCQUxGSVFRQ3lTRUVBczBoQkFMZElRUUM0U0VFQXVVaEJBS2JJZ1FDOVNFRUFwOGlCQUtqSWdRQ0RTXFxcbklFQXFjaUJBSVJJZ1FDRlNJRUFra2lCQUtySWdRQ3J5SUVBalVpQkFLeklnUUNPU0lFQWowaUJBTFpJQVFDM1NBRUFyY2lCQUxoSUFRQ1xcXG51eUlFQXVrZ0JBTHRJQVFDOFNBRUF2VWdCQUsvSWdRQ0FTRUVBZ1VoQkFJSklRUUNEU0VFQXNNaUJBSWRJUVFDS1NFRUFpMGhCQUl4SVFcXFxuUUNOU0VFQWpraEJBSkJJUVFDUlNFRUFra2hCQUpOSVFRQ1VTRUVBbFVoQkFMSElnUUNXU0VFQWwwaEJBSmhJUVFDWlNFRUFta2hCQUp0XFxcbklRUUNkU0VFQW5raEJBSjlJUVFDZ1NFRUFvVWhCQUtKSVFRQ2pTRUVBcEVoQkFLVklRUUNvU0VFQXFVaEJBSzFJUVFDdVNFRUFyMGhCQVxcXG5MQklRUUN4U0VFQXRFaEJBTFZJUVFDMlNFRUF0MGhCQUxMSWdRQzZTRUVBdTBoQkFMeElRUUM5U0VFQWdFaUJBSUZJZ1FDQ1NJRUFnMGlcXFxuQkFMUElnUUNHU0lFQWgwaUJBTFRJZ1FDS1NJRUFpMGlCQUl4SWdRQ05TSUVBdGNpQkFMaElBUUN1eUlFQXZVZ0JBSy9JZ1FDRFNFRUFzXFxcbk1pQkFJZElRUUMyeUlFQWxFaEJBTGZJZ1FDNHlJRUF1Y2lCQUxCSVFRQ3hTRUVBdDBoQkFJTklnUUN6eUlFQWpVaUJBTFhJZ1FDNnlJR1xcXG5BdkVpQmdMM0lnWUMvU0lFQWdFakJBSUZJd1FDQ1NNRUFnMGpCQUlSSXdRQ0ZTTUVBaGtqQkFJZEl3UUNJU01FQWlVakJBSXBJd1FDTFNcXFxuTUVBakVqQkFJMUl3UUNPU01FQWowakJBSkJJd1FDUlNNRUFra2pCQUpOSXdRQ1VTTUVBbFVqQkFMaklnUUNXU01FQWwwakJBSmhJd1FDXFxcblpTTUVBdjBpQkFJQkl3UUNCU01FQWdrakJBSU5Jd1FDRVNNRUFoVWpCQUlaSXdRQ0hTTUVBaUVqQkFJbEl3UUNLU01FQWkwakJBSXhJd1xcXG5RQ05TTUVBamtqQkFJOUl3UUNRU01FQWtVakJBSkpJd1FDVFNNRUFsRWpCQUpWSXdRQzR5SUVBbGtqQkFKZEl3UUNZU01FQW1VakJBSk5cXFxuSXdRQ1VTTUVBbFVqQkFMaklnUUMzeUlFQXVjaUJBSnhJUVFDUlNFRUFra2hCQUpOSVFRQ1RTTUVBbEVqQkFKVkl3UUNjU0VFQW5VaEJBXFxcbkpwSXdRSEFBQUFCQUFBQUFKdEl3WUNjeU1HQW5rakJnSi9Jd1lDaFNNR0Fvc2pCZ0tSSXdZQ2x5TUdBcDBqQmdLakl3WUNxU01HQXE4alxcXG5CZ0sxSXdZQ3V5TUdBc0VqQmdMSEl3WUN6U01HQXRNakJnTFpJd1lDM3lNR0F1VWpCZ0xySXdZQzhTTUdBdmNqQmdMOUl3WUNBeVFHQWdcXFxua2tCZ0lQSkFZQ0ZTUUdBaHNrQmdJaEpBWUNKeVFHQWkwa0JnSXpKQVlDT1NRR0FqOGtCZ0pGSkFZQ1N5UUdBbEVrQmdKWEpBWUNYU1FHXFxcbkFtTWtCZ0pwSkFZQ2J5UUdBblVrQmdKN0pBWUNnU1FHQW9ja0JnS05KQVlFQUFBQUFwTWtCZ0taSkFZQ255UUdBcVVrQmdLckpBWUNzU1xcXG5RR0FyY2tCZ0s5SkFZQ3d5UUdBc2trQmdMUEpBWUMxU1FHQXRza0JnTGhKQVlDNXlRR0F1MGtCZ0x6SkFZQytTUUdBdjhrQmdJRkpRWUNcXFxuQ3lVR0FoRWxCZ0lYSlFZQ0hTVUdBaU1sQmdJcEpRWUNMeVVHQWpVbEJnSTdKUVlDUVNVR0FrY2xCZ0pOSlFZQ09TUUdBa1VrQmdKVEpRXFxcbllDV1NVR0FsOGxCZ0psSlFZQ2F5VUdBbkVsQmdKckpRWUNYeVVHQW5jbEJnSjlKUVlDZ3lVR0Fva2xCZ0tQSlFZQ2NTVUdBZzhrQmdMVFxcXG5Jd1lDbFNVR0Fwc2xCZ1FBQUFBQ29TVUdBcWNsQmdLdEpRZ0N0U1VJQXIwbENBTEZKUWdDelNVSUF0VWxDQUxkSlFnQzVTVUdCdXNsSVFcXFxuWU1KZzhDR3lZSUJ3QUFBQVFBQUFBQkFBQUFCaU1tQVFJa0pnTUVBQUFBQmljbUFRWUFBZ0VHS0NZQkJpa21BUUlxSmdNQ0xTWURCQUFBXFxcbkFBQUFBQUFFQUFBQUFqQW1Bd0l6SmdNR05pWUJCamNKQVFZNENRRUdOeVlCQmpnbUFRSTVKZ01DUENZREFqOG1Bd0pDSmdNQ1JTWURBa1xcXG5nbUF3THVDUU1DOFFrREFrc21Bd0pPSmdNQ1VTWURBbFFtQXdjQUFBQUdWeVlCQmxnbUFRWVdDUU1HTmlZQkJpTW1BUUlrSmdNRUFBQUFcXFxuQmdBQ0FRWW5KZ0VHS1NZQkJpZ21BUUl3SmdNR053a0JCamdKQVFZM0pnRUdPQ1lCQWprbUF3SThKZ01HV1NZQkJsb21BUVpiSmdFR01nXFxcbmtCQWx3bUFRWmRKZ0VHWGlZQkJqWUpBUVFBQUFBR1h5WUJCbUFtQVFaaEpnRUdZaVlCQkFBQUFBWmpKZ01DWmlZRUJtb21Bd0FBQUFBR1xcXG5iU1lEQkFBQUFBWndKZ01DY3lZRUJuY21Bd0o2SmdRR2ZpWURBb0VtQkFhRkpnTUNpQ1lFQm93bUF3S1BKZ1FDa3lZQ0FwVW1BZ0tYSmdcXFxuSUNtU1lDQXBzbUFnS2RKZ0lDbnlZQ0FxRW1BZ0tqSmdJQ3BTWUNBcWNtQWdLcEpnSUNxeVlDQXEwbUFnS3ZKZ0lDc1NZQ0FyTW1BZ0sxXFxcbkpnSUN0eVlDQXJrbUFnSzdKZ0lDdlNZQ0FyOG1BZ0xCSmdJQ3d5WUNBc1VtQWdMSEpnSUN5U1lDQXNzbUFnTE5KZ0lDenlZQ0F0RW1BZ1xcXG5MVEpnSUMxU1lDQXJVZ0FnTFhKZ0lDMlNZRUF0MG1CQUxoSmdRQzVTWUVCQUFBQUFFQUFBQUVBQUFBQmlnbUFRYnBKZ0VHV1NZQkJtQW1cXFxuQVFaaEpnRUdXaVlCQnVvbUFRWTNDUUVHT0FrQkJsc21BUVl5Q1FFR0l5WUJBbHdtQVFLTURnRUc2eVlCQWlzSkFRSXJBQUVDSVFBQkFpXFxcbklBQVFJc0NRRUNMUWtCQWk0SkFRSXZDUUVDTUFrQkFqRUpBUVluSmdFR0FBSUJCbDBtQVFZMkNRRUdYaVlCQmlrbUFRWmlKZ0VDQUFBQlxcXG5BZ0VBQVFJQ0FBRUNBd0FCQWdRQUFRSUZBQUVDQmdBQkFnY0FBUUlJQUFFQ0NRQUJBZ29BQVFJTEFBRUNEQUFCQWcwQUFRSU9BQUVDRHdcXFxuQUJBaEFBQVFJUkFBRUNFZ0FCQWhNQUFRSVVBQUVDRlFBQkFoWUFBUUlYQUFFQ0dBQUJBaGtBQVFaWEpnRUdYeVlCQmxnbUFRYnNKZ0VHXFxcbk5pWUJCdFFJQVFJQUFBRUNBUUFCQWdJQUFRSURBQUVDQkFBQkFnVUFBUUlHQUFFQ0J3QUJBZ2dBQVFJSkFBRUNDZ0FCQWdzQUFRSU1BQVxcXG5FQ0RRQUJBZzRBQVFJUEFBRUNFQUFCQWhFQUFRSVNBQUVDRXdBQkFoUUFBUUlWQUFFQ0ZnQUJBaGNBQVFJWUFBRUNHUUFCQmpjbUFRYnRcXFxuSmdFR09DWUJCdTRtQVFMdkpnTUM4aVlEQW93T0FRSkxKZ01DVGlZREFpUW1Bd0wxSmdNQzNCSURBdmdtQXdMN0pnTUMvaVlEQWdFbkF3XFxcbklFSndNQ0J5Y0RBZ29uQXdJTkp3TUNFQ2NEQWhNbkF3SlNFZ01DVlJJREFsZ1NBd0piRWdNQ1hoSURBbUVTQXdKa0VnTUNaeElEQW1vU1xcXG5Bd0p0RWdNQ2NCSURBbk1TQXdKMkVnTUNlUklEQW53U0F3Si9FZ01DZ2hJREFvVVNBd0tJRWdNQ2l4SURBbzRTQXdLUkVnTUNsQklEQXBcXFxuY1NBd0thRWdNQ25SSURBcUFTQXdLakVnTUNwaElEQXFrU0F3S3NFZ01DcnhJREFySVNBd0sxRWdNQ3VCSURBcnNTQXdLK0VnTUN3UklEXFxcbkFzUVNBd0xIRWdNQ3loSURBczBTQXdMUUVnTUMweElEQWhZbkF3SVpKd01DSENjREJBQUFBQUtxRGdNQ3JRNERBckFPQXdLekRnTUN0Z1xcXG40REFya09Bd0s4RGdNQ3Z3NERBc0lPQXdMRkRnTUN5QTREQXNzT0F3TE9EZ01DMFE0REF0UU9Bd0xYRGdNQzJnNERBdDBPQXdMZ0RnTUNcXFxuNHc0REF1WU9Bd0xwRGdNQzdBNERBdThPQXdMeURnTUM5UTREQXZnT0F3TDdEZ01DL2c0REFnRVBBd1FBQUFBQ0JBOERBZ2NQQXdJS0R3XFxcbk1DRFE4REFoQVBBd0lURHdNRUFBQUFBaFlQQXdJWkR3TUNIQThEQWg4UEF3SWlEd01DSlE4REJBQUFBQUlvRHdNQ0t3OERBaTRQQXdJeFxcXG5Ed01DTkE4REFqY1BBd1FBQUFBQ09nOERBajBQQXdKQUR3TUVBQUFBQWg4bkFnSWhKd0lDSXljQ0JoNEFBd0lsSndJQ0p5Y0NBaWtuQXdcXFxuUUFBQUFDTENjREFpOG5Bd0l5SndNQ05TY0RBamduQXdJN0p3TUNQaWNEQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBXFxcbkFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQndBQUFBUUFBQUFIQUFBQUJBQUFBQWNBQUFBRUFBQUFCd1xcXG5BQUFBUUFBQUFIQUFBQUJBQUFBQWNBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJ3QUFBQVFBQUFBQUFBQUFcXFxuQndBQUFBUUFBQUFBQUFBQUJ3QUFBQUFBQUFBSEFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFIQUFBQUFBQUFBQVFBQUFBQUFBXFxcbkFBQndBQUFBUUFBQUFDUVNjRUFrVW5CQUpKSndRQ1RTY0VBbEVuQkFKVkp3UUNXU2NFQWwwbkJBSmhKd1FDWlNjRUFta25CQUp0SndRQ1xcXG5jU2NFQW5VbkJBSjVKd1FDZlNjRUFvRW5CQUtGSndRQ2lTY0VBbzBuQkFLUkp3UUNsU2NFQXBrbkJBS2RKd1FDb1NjRUFxVW5CQUtwSndcXFxuUUNyU2NFQXJFbkJBSzFKd1FDdVNjRUFyMG5CQUxCSndRQ3hTY0VBc2tuQkFMTkp3UUMwU2NFQXRVbkJBTFpKd1FDM1NjRUFBQUFBQVFBXFxcbkFBQUFBQUFBQkFBQUFBTGhKd1FDNVNjRUF1a25CQUx0SndRQzhTY0VBdlVuQkFMNUp3UUMvU2NFQWdFb0JBSUZLQVFDQ1NnRUFnMG9CQVxcXG5JUktBUUNGU2dFQWhrb0JBSWRLQVFDSVNnRUFpVW9CQUlwS0FRQ0xTZ0VBakVvQkFJMUtBUUNPU2dFQWowb0JBSkJLQVFDUlNnRUFra29cXFxuQkFKTktBUUNVU2dFQWxVb0JBSlpLQVFDWFNnRUFtRW9CQUpsS0FRQ2FTZ0VBbTBvQkFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBXFxcbkFBQUFRQUFBQUhBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQVxcXG5CQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQWNBQUFBQUFBQUFCd0FBQUFBQUFBQUVBQUFBQndBQUFBUUFBQUFBQUFcXFxuQUFCQUFBQUFBQUFBQUVBQUFBQndBQUFBQUFBQUFIQUFBQUJBQUFBQWNBQUFBQUFBQUFCQUFBQUFjQUFBQUVBQUFBQUFBQUFBUUFBQUFIXFxcbkFBQUFBQUFBQUFjQUFBQUVBQUFBQndBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQVxcXG5BQUFBQUFCQUFBQUFBQUFBQUhBQUFBQkFBQUFBY0FBQUFFQUFBQUFBQUFBQWNBQUFBQUFBQUFCd0FBQUFRQUFBQUFBQUFBQndBQUFBQUFcXFxuQUFBRUFBQUFCd0FBQUFRQUFBQUFBQUFBQkFBQUFBY0FBQUFBQUFBQUJBQUFBQWNBQUFBQUFBQUFCQUFBQUFjQUFBQUFBQUFBQkFBQUFBXFxcbmNBQUFBRUFBQUFCd0FBQUFRQUFBQUFBQUFBQkFBQUFBSnhLQVFDZFNnRUFua29CQUo5S0FRQ2dTZ0VBb1VvQkFLSktBUUNqU2dFQXBFb1xcXG5CQUtWS0FRQ21TZ0VBcDBvQkFLaEtBUUNwU2dFQXFrb0JBS3RLQVFDc1NnRUFyVW9CQUs1S0FRQ3ZTZ0VBc0VvQkFMRktBUUN5U2dFQXNcXFxuMG9CQUxSS0FRQzFTZ0VBdGtvQkFMZEtBUUM0U2dFQXVVb0JBTHBLQVFDN1NnRUF2RW9CQUwxS0FRQytTZ0VBdjBvQkFJQktRUUNCU2tFXFxcbkFna3BCQUlOS1FRQ0VTa0VBaFVwQkFJWktRUUNIU2tFQWlFcEJBSWxLUVFDS1NrRUFpMHBCQUl4S1FRQ05Ta0VBamtwQkFRQUFBQUFBQVxcXG5BQUJBQUFBQWNBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQndBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBSEFBQUFCQUFBQUFBQUFBQUVcXFxuQUFBQUFBQUFBQWNBQUFBQUFBQUFCQUFBQUFBQUFBQUhBQUFBQkFBQUFBQUFBQUFIQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFjQUFBXFxcbkFFQUFBQUJ3QUFBQUFBQUFBRUFBQUFBQUFBQUFjQUFBQUVBQUFBQndBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQVxcXG5BQUFBQUFBQUJ3QUFBQUFBQUFBRUFBQUFBQUFBQUFjQUFBQUFBQUFBQkFBQUFBQUFBQUFIQUFBQUFBQUFBQWNBQUFBQUFBQUFCd0FBQUFcXFxuQUFBQUFIQUFBQUJBQUFBQWNBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQndBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBXFxcbkFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCd0FBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQVxcXG5BQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFcXFxuQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQWNBQUFBQUFBXFxcbkFBQndBQUFBUUFBQUFIQUFBQUFBQUFBQVFBQUFBQUFBQUFCd0FBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBSFxcXG5BQUFBQUFBQUFBUUFBQUFBQUFBQUJ3QUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUhBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFcXFxuQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQWNBQUFBRUFBQUFBQUFBQUFjQUFBQUVBQUFBQWowcEJBSkJLUVFDUlNrRUFra3BCQUpOXFxcbktRUUNVU2tFQWxVcEJBSlpLUVFDWFNrRUFtRXBCQUpsS1FRQ2FTa0VBbTBwQkFKeEtRUUNkU2tFQW5rcEJBSjlLUVFDZ1NrRUFvVXBCQVxcXG5LSktRUUNqU2tFQXBFcEJBS1ZLUVFDbVNrRUFwMHBCQUtoS1FRQ3BTa0VBcWtwQkFLdEtRUUNzU2tFQXJVcEJBSzVLUVFBQUFBQUJ3QUFcXFxuQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJ3XFxcbkFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCd0FBQUFBQUFBQUVBQUFBQUFBQUFBY0FBQUFBQUFBQVxcXG5CQUFBQUFBQUFBQUhBQUFBQUFBQUFBY0FBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBY0FBQUFFQUFcXFxuQUFBQUFBQUFjQUFBQUVBQUFBQndBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBXFxcbkFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQVxcXG5BRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQWNBQUFBRUFBQUFBQUFBQUFRQUFBQUhBQUFBQkFBQUFBY0FcXFxuQUFBQUFBQUFCQUFBQUFjQUFBQUVBQUFBQndBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBXFxcbkFBQUFBRUFBQUFBQUFBQUFRQUFBQUhBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQWNBQUFBRUFBQUFBQUFBQUFjQUFBQUFBQUFBQndBQVxcXG5BQVFBQUFBQUFBQUFCQUFBQUFjQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUs5S1FRQ3dTa0VBc1VwQkFMSktRUUN6U2tFQXRcXFxuRXBCQUxWS1FRQzJTa0VBdDBwQkFMaEtRUUM1U2tFQXVrcEJBTHRLUVFDOFNrRUF2VXBCQUw1S1FRQy9Ta0VBZ0VxQkFJRktnUUNDU29FXFxcbkFnMHFCQUlSS2dRQ0ZTb0VBaGtxQkFJZEtnUUNJU29FQWlVcUJBSXBLZ1FDTFNvRUFqRXFCQUkxS2dRQ09Tb0VBQUFBQUFjQUFBQUVBQVxcXG5BQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBY0FBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFcXFxuQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBXFxcbkFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFjQUFBQUFBQUFBQndBQUFBRUFBQUFFQUFBQUJ3QUFBQVFBQUFBSEFBQUFCQUFBQUFjQVxcXG5BQUFDUFNvSUFrVXFDQUpOS2d3Q1dTb01BbVVxREFKeEtnd0NmU29NQndBQUFBUUFBQUFIQUFBQUFva3FDQUtSS2dnQ21Tb01BcVVxREFcXFxuS3hLZ3dDdlNvTUJ3QUFBQVFBQUFBSEFBQUFCQUFBQUFjQUFBQUVBQUFBQndBQUFBUUFBQUFIQUFBQUJBQUFBQUlBQUFFQ0FRQUJBZ0lBXFxcbkFRSURBQUVDQkFBQkFnVUFBUUlHQUFFQ0J3QUJBZ2dBQVFJSkFBRUNDZ0FCQWdzQUFRSU1BQUVDRFFBQkFnNEFBUUlQQUFFQ0VBQUJBaFxcXG5FQUFRSVNBQUVDRXdBQkFoUUFBUUlWQUFFQ0ZnQUJBaGNBQVFJWUFBRUNHUUFCQWdBQUFRSUJBQUVDQWdBQkFnTUFBUUlFQUFFQ0JRQUJcXFxuQWdZQUFRSUhBQUVDQ0FBQkFna0FBUUlLQUFFQ0N3QUJBZ3dBQVFJTkFBRUNEZ0FCQWc4QUFRSVFBQUVDRVFBQkFoSUFBUUlUQUFFQ0ZBXFxcbkFCQWhVQUFRSVdBQUVDRndBQkFoZ0FBUUlaQUFFQ0FBQUJBZ0VBQVFJQ0FBRUNBd0FCQWdRQUFRSUZBQUVDQmdBQkFnY0FBUUlJQUFFQ1xcXG5DUUFCQWdvQUFRSUxBQUVDREFBQkFnMEFBUUlPQUFFQ0R3QUJBaEFBQVFJUkFBRUNFZ0FCQWhNQUFRSVVBQUVDRlFBQkFoWUFBUUlYQUFcXFxuRUNHQUFCQWhrQUFRSUFBQUVDQVFBQkFnSUFBUUlEQUFFQ0JBQUJBZ1VBQVFJR0FBRUVBQUFBQWdnQUFRSUpBQUVDQ2dBQkFnc0FBUUlNXFxcbkFBRUNEUUFCQWc0QUFRSVBBQUVDRUFBQkFoRUFBUUlTQUFFQ0V3QUJBaFFBQVFJVkFBRUNGZ0FCQWhjQUFRSVlBQUVDR1FBQkFnQUFBUVxcXG5JQkFBRUNBZ0FCQWdNQUFRSUVBQUVDQlFBQkFnWUFBUUlIQUFFQ0NBQUJBZ2tBQVFJS0FBRUNDd0FCQWd3QUFRSU5BQUVDRGdBQkFnOEFcXFxuQVFJUUFBRUNFUUFCQWhJQUFRSVRBQUVDRkFBQkFoVUFBUUlXQUFFQ0Z3QUJBaGdBQVFJWkFBRUNBQUFCQWdFQUFRSUNBQUVDQXdBQkFnXFxcblFBQVFJRkFBRUNCZ0FCQWdjQUFRSUlBQUVDQ1FBQkFnb0FBUUlMQUFFQ0RBQUJBZzBBQVFJT0FBRUNEd0FCQWhBQUFRSVJBQUVDRWdBQlxcXG5BaE1BQVFJVUFBRUNGUUFCQWhZQUFRSVhBQUVDR0FBQkFoa0FBUUlBQUFFRUFBQUFBZ0lBQVFJREFBRUVBQUFBQWdZQUFRUUFBQUFDQ1FcXFxuQUJBZ29BQVFRQUFBQUNEUUFCQWc0QUFRSVBBQUVDRUFBQkJBQUFBQUlTQUFFQ0V3QUJBaFFBQVFJVkFBRUNGZ0FCQWhjQUFRSVlBQUVDXFxcbkdRQUJBZ0FBQVFJQkFBRUNBZ0FCQWdNQUFRUUFBQUFDQlFBQkJBQUFBQUlIQUFFQ0NBQUJBZ2tBQVFJS0FBRUNDd0FCQWd3QUFRSU5BQVxcXG5FRUFBQUFBZzhBQVFJUUFBRUNFUUFCQWhJQUFRSVRBQUVDRkFBQkFoVUFBUUlXQUFFQ0Z3QUJBaGdBQVFJWkFBRUNBQUFCQWdFQUFRSUNcXFxuQUFFQ0F3QUJBZ1FBQVFJRkFBRUNCZ0FCQWdjQUFRSUlBQUVDQ1FBQkFnb0FBUUlMQUFFQ0RBQUJBZzBBQVFJT0FBRUNEd0FCQWhBQUFRXFxcbklSQUFFQ0VnQUJBaE1BQVFJVUFBRUNGUUFCQWhZQUFRSVhBQUVDR0FBQkFoa0FBUUlBQUFFQ0FRQUJBZ0lBQVFJREFBRUNCQUFCQWdVQVxcXG5BUUlHQUFFQ0J3QUJBZ2dBQVFJSkFBRUNDZ0FCQWdzQUFRSU1BQUVDRFFBQkFnNEFBUUlQQUFFQ0VBQUJBaEVBQVFJU0FBRUNFd0FCQWhcXFxuUUFBUUlWQUFFQ0ZnQUJBaGNBQVFJWUFBRUNHUUFCQWdBQUFRSUJBQUVFQUFBQUFnTUFBUUlFQUFFQ0JRQUJBZ1lBQVFRQUFBQUNDUUFCXFxcbkFnb0FBUUlMQUFFQ0RBQUJBZzBBQVFJT0FBRUNEd0FCQWhBQUFRUUFBQUFDRWdBQkFoTUFBUUlVQUFFQ0ZRQUJBaFlBQVFJWEFBRUNHQVxcXG5BQkJBQUFBQUlBQUFFQ0FRQUJBZ0lBQVFJREFBRUNCQUFCQWdVQUFRSUdBQUVDQndBQkFnZ0FBUUlKQUFFQ0NnQUJBZ3NBQVFJTUFBRUNcXFxuRFFBQkFnNEFBUUlQQUFFQ0VBQUJBaEVBQVFJU0FBRUNFd0FCQWhRQUFRSVZBQUVDRmdBQkFoY0FBUUlZQUFFQ0dRQUJBZ0FBQVFJQkFBXFxcbkVFQUFBQUFnTUFBUUlFQUFFQ0JRQUJBZ1lBQVFRQUFBQUNDQUFCQWdrQUFRSUtBQUVDQ3dBQkFnd0FBUVFBQUFBQ0RnQUJCQUFBQUFJU1xcXG5BQUVDRXdBQkFoUUFBUUlWQUFFQ0ZnQUJBaGNBQVFJWUFBRUVBQUFBQWdBQUFRSUJBQUVDQWdBQkFnTUFBUUlFQUFFQ0JRQUJBZ1lBQVFcXFxuSUhBQUVDQ0FBQkFna0FBUUlLQUFFQ0N3QUJBZ3dBQVFJTkFBRUNEZ0FCQWc4QUFRSVFBQUVDRVFBQkFoSUFBUUlUQUFFQ0ZBQUJBaFVBXFxcbkFRSVdBQUVDRndBQkFoZ0FBUUlaQUFFQ0FBQUJBZ0VBQVFJQ0FBRUNBd0FCQWdRQUFRSUZBQUVDQmdBQkFnY0FBUUlJQUFFQ0NRQUJBZ1xcXG5vQUFRSUxBQUVDREFBQkFnMEFBUUlPQUFFQ0R3QUJBaEFBQVFJUkFBRUNFZ0FCQWhNQUFRSVVBQUVDRlFBQkFoWUFBUUlYQUFFQ0dBQUJcXFxuQWhrQUFRSUFBQUVDQVFBQkFnSUFBUUlEQUFFQ0JBQUJBZ1VBQVFJR0FBRUNCd0FCQWdnQUFRSUpBQUVDQ2dBQkFnc0FBUUlNQUFFQ0RRXFxcbkFCQWc0QUFRSVBBQUVDRUFBQkFoRUFBUUlTQUFFQ0V3QUJBaFFBQVFJVkFBRUNGZ0FCQWhjQUFRSVlBQUVDR1FBQkFnQUFBUUlCQUFFQ1xcXG5BZ0FCQWdNQUFRSUVBQUVDQlFBQkFnWUFBUUlIQUFFQ0NBQUJBZ2tBQVFJS0FBRUNDd0FCQWd3QUFRSU5BQUVDRGdBQkFnOEFBUUlRQUFcXFxuRUNFUUFCQWhJQUFRSVRBQUVDRkFBQkFoVUFBUUlXQUFFQ0Z3QUJBaGdBQVFJWkFBRUNBQUFCQWdFQUFRSUNBQUVDQXdBQkFnUUFBUUlGXFxcbkFBRUNCZ0FCQWdjQUFRSUlBQUVDQ1FBQkFnb0FBUUlMQUFFQ0RBQUJBZzBBQVFJT0FBRUNEd0FCQWhBQUFRSVJBQUVDRWdBQkFoTUFBUVxcXG5JVUFBRUNGUUFCQWhZQUFRSVhBQUVDR0FBQkFoa0FBUUlBQUFFQ0FRQUJBZ0lBQVFJREFBRUNCQUFCQWdVQUFRSUdBQUVDQndBQkFnZ0FcXFxuQVFJSkFBRUNDZ0FCQWdzQUFRSU1BQUVDRFFBQkFnNEFBUUlQQUFFQ0VBQUJBaEVBQVFJU0FBRUNFd0FCQWhRQUFRSVZBQUVDRmdBQkFoXFxcbmNBQVFJWUFBRUNHUUFCQWdBQUFRSUJBQUVDQWdBQkFnTUFBUUlFQUFFQ0JRQUJBZ1lBQVFJSEFBRUNDQUFCQWdrQUFRSUtBQUVDQ3dBQlxcXG5BZ3dBQVFJTkFBRUNEZ0FCQWc4QUFRSVFBQUVDRVFBQkFoSUFBUUlUQUFFQ0ZBQUJBaFVBQVFJV0FBRUNGd0FCQWhnQUFRSVpBQUVDQUFcXFxuQUJBZ0VBQVFJQ0FBRUNBd0FCQWdRQUFRSUZBQUVDQmdBQkFnY0FBUUlJQUFFQ0NRQUJBZ29BQVFJTEFBRUNEQUFCQWcwQUFRSU9BQUVDXFxcbkR3QUJBaEFBQVFJUkFBRUNFZ0FCQWhNQUFRSVVBQUVDRlFBQkFoWUFBUUlYQUFFQ0dBQUJBaGtBQVFJQUFBRUNBUUFCQWdJQUFRSURBQVxcXG5FQ0JBQUJBZ1VBQVFJR0FBRUNCd0FCQWdnQUFRSUpBQUVDQ2dBQkFnc0FBUUlNQUFFQ0RRQUJBZzRBQVFJUEFBRUNFQUFCQWhFQUFRSVNcXFxuQUFFQ0V3QUJBaFFBQVFJVkFBRUNGZ0FCQWhjQUFRSVlBQUVDR1FBQkFnQUFBUUlCQUFFQ0FnQUJBZ01BQVFJRUFBRUNCUUFCQWdZQUFRXFxcbklIQUFFQ0NBQUJBZ2tBQVFJS0FBRUNDd0FCQWd3QUFRSU5BQUVDRGdBQkFnOEFBUUlRQUFFQ0VRQUJBaElBQVFJVEFBRUNGQUFCQWhVQVxcXG5BUUlXQUFFQ0Z3QUJBaGdBQVFJWkFBRUNBQUFCQWdFQUFRSUNBQUVDQXdBQkFnUUFBUUlGQUFFQ0JnQUJBZ2NBQVFJSUFBRUNDUUFCQWdcXFxub0FBUUlMQUFFQ0RBQUJBZzBBQVFJT0FBRUNEd0FCQWhBQUFRSVJBQUVDRWdBQkFoTUFBUUlVQUFFQ0ZRQUJBaFlBQVFJWEFBRUNHQUFCXFxcbkFoa0FBUUlBQUFFQ0FRQUJBZ0lBQVFJREFBRUNCQUFCQWdVQUFRSUdBQUVDQndBQkFnZ0FBUUlKQUFFQ0NnQUJBZ3NBQVFJTUFBRUNEUVxcXG5BQkFnNEFBUUlQQUFFQ0VBQUJBaEVBQVFJU0FBRUNFd0FCQWhRQUFRSVZBQUVDRmdBQkFoY0FBUUlZQUFFQ0dRQUJBZ0FBQVFJQkFBRUNcXFxuQWdBQkFnTUFBUUlFQUFFQ0JRQUJBZ1lBQVFJSEFBRUNDQUFCQWdrQUFRSUtBQUVDQ3dBQkFnd0FBUUlOQUFFQ0RnQUJBZzhBQVFJUUFBXFxcbkVDRVFBQkFoSUFBUUlUQUFFQ0ZBQUJBaFVBQVFJV0FBRUNGd0FCQWhnQUFRSVpBQUVDeVNvQ0Fzc3FBZ1FBQUFBQ0dBSUNBaG9DQWdJY1xcXG5BZ0lDSGdJQ0FpQUNBZ0lpQWdJQ0pBSUNBaVlDQWdMekFRSUNLQUlDQWlvQ0FnSW1BQUlDTEFJQ0FpNENBZ0l3QWdJQ01nSUNBalFDQWdcXFxuSW1BZ0lDTmdJQ0FqZ0NBZ0k2QWdJQ1BBSUNBajRDQWdKQUFnSUNRZ0lDQXMwcUF3SVlBZ0lDR2dJQ0Fod0NBZ0llQWdJQ0lBSUNBaUlDXFxcbkFnSWtBZ0lDSmdJQ0F2TUJBZ0lvQWdJQ0tnSUNBaVlBQWdJc0FnSUNMZ0lDQWpBQ0FnSXlBZ0lDTkFJQ0FqWUNBZ0k0QWdJQ09nSUNBalxcXG53Q0FnSStBZ0lDUUFJQ0FrSUNBZ0xRS2dNQ0lBSUNBaVlDQWdJb0FnSUNQQUlDQWpRQ0FnSXlBZ0lDR0FJQ0Fob0NBZ0ljQWdJQ0hnSUNcXFxuQWlBQ0FnSWlBZ0lDSkFJQ0FpWUNBZ0x6QVFJQ0tBSUNBaW9DQWdJbUFBSUNMQUlDQWk0Q0FnSXdBZ0lDTWdJQ0FqUUNBZ0ltQWdJQ05nXFxcbklDQWpnQ0FnSTZBZ0lDUEFJQ0FqNENBZ0pBQWdJQ1FnSUNBczBxQXdJWUFnSUNHZ0lDQWh3Q0FnSWVBZ0lDSUFJQ0FpSUNBZ0lrQWdJQ1xcXG5KZ0lDQXZNQkFnSW9BZ0lDS2dJQ0FpWUFBZ0lzQWdJQ0xnSUNBakFDQWdJeUFnSUNOQUlDQWpZQ0FnSTRBZ0lDT2dJQ0Fqd0NBZ0krQWdcXFxuSUNRQUlDQWtJQ0FnTFFLZ01DSUFJQ0FpWUNBZ0lvQWdJQ1BBSUNBalFDQWdJeUFnSUNHQUlDQWhvQ0FnSWNBZ0lDSGdJQ0FpQUNBZ0lpXFxcbkFnSUNKQUlDQWlZQ0FnTHpBUUlDS0FJQ0Fpb0NBZ0ltQUFJQ0xBSUNBaTRDQWdJd0FnSUNNZ0lDQWpRQ0FnSW1BZ0lDTmdJQ0FqZ0NBZ1xcXG5JNkFnSUNQQUlDQWo0Q0FnSkFBZ0lDUWdJQ0FzMHFBd0lZQWdJQ0dnSUNBaHdDQWdJZUFnSUNJQUlDQWlJQ0FnSWtBZ0lDSmdJQ0F2TUJcXFxuQWdJb0FnSUNLZ0lDQWlZQUFnSXNBZ0lDTGdJQ0FqQUNBZ0l5QWdJQ05BSUNBallDQWdJNEFnSUNPZ0lDQWp3Q0FnSStBZ0lDUUFJQ0FrXFxcbklDQWdMUUtnTUNJQUlDQWlZQ0FnSW9BZ0lDUEFJQ0FqUUNBZ0l5QWdJQ0dBSUNBaG9DQWdJY0FnSUNIZ0lDQWlBQ0FnSWlBZ0lDSkFJQ1xcXG5BaVlDQWdMekFRSUNLQUlDQWlvQ0FnSW1BQUlDTEFJQ0FpNENBZ0l3QWdJQ01nSUNBalFDQWdJbUFnSUNOZ0lDQWpnQ0FnSTZBZ0lDUEFcXFxuSUNBajRDQWdKQUFnSUNRZ0lDQXMwcUF3SVlBZ0lDR2dJQ0Fod0NBZ0llQWdJQ0lBSUNBaUlDQWdJa0FnSUNKZ0lDQXZNQkFnSW9BZ0lDXFxcbktnSUNBaVlBQWdJc0FnSUNMZ0lDQWpBQ0FnSXlBZ0lDTkFJQ0FqWUNBZ0k0QWdJQ09nSUNBandDQWdJK0FnSUNRQUlDQWtJQ0FnTFFLZ1xcXG5NQ0lBSUNBaVlDQWdJb0FnSUNQQUlDQWpRQ0FnSXlBZ0lDR0FJQ0Fob0NBZ0ljQWdJQ0hnSUNBaUFDQWdJaUFnSUNKQUlDQWlZQ0FnTHpcXFxuQVFJQ0tBSUNBaW9DQWdJbUFBSUNMQUlDQWk0Q0FnSXdBZ0lDTWdJQ0FqUUNBZ0ltQWdJQ05nSUNBamdDQWdJNkFnSUNQQUlDQWo0Q0FnXFxcbkpBQWdJQ1FnSUNBczBxQXdJWUFnSUNHZ0lDQWh3Q0FnSWVBZ0lDSUFJQ0FpSUNBZ0lrQWdJQ0pnSUNBdk1CQWdJb0FnSUNLZ0lDQWlZQVxcXG5BZ0lzQWdJQ0xnSUNBakFDQWdJeUFnSUNOQUlDQWpZQ0FnSTRBZ0lDT2dJQ0Fqd0NBZ0krQWdJQ1FBSUNBa0lDQWdMUUtnTUNJQUlDQWlcXFxuWUNBZ0lvQWdJQ1BBSUNBalFDQWdJeUFnSUNUZ0lDQkFBQUFBSXJDUUVDS3dBQkFpRUFBUUlpQUFFQ0xBa0JBaTBKQVFJdUNRRUNMd2tCXFxcbkFqQUpBUUl4Q1FFQ0t3a0JBaXNBQVFJaEFBRUNJZ0FCQWl3SkFRSXRDUUVDTGdrQkFpOEpBUUl3Q1FFQ01Ra0JBaXNKQVFJckFBRUNJUVxcXG5BQkFpSUFBUUlzQ1FFQ0xRa0JBaTRKQVFJdkNRRUNNQWtCQWpFSkFRSXJDUUVDS3dBQkFpRUFBUUlpQUFFQ0xBa0JBaTBKQVFJdUNRRUNcXFxuTHdrQkFqQUpBUUl4Q1FFQ0t3a0JBaXNBQVFJaEFBRUNJZ0FCQWl3SkFRSXRDUUVDTGdrQkFpOEpBUUl3Q1FFQ01Ra0JCd0FBQUFBQUFBXFxcbkFIQUFBQUFBQUFBQWNBQUFBQUFBQUFCd0FBQUFBQUFBQUhBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQVxcXG5BQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFcXFxuY0FBQUFFQUFBQUFBQUFBQVFBQUFBSEFBQUFCQUFBQUFBQUFBQUVBQUFBQndBQUFBQUFBQUFFQUFBQUF0TXFCQUxYS2dRQzJ5b0VBdDhxXFxcbkJBTGpLZ1FDNXlvRUF1c3FCQUx2S2dRQzh5b0VBdmNxQkFMN0tnUUMveW9FQWdNckJBSUhLd1FDQ3lzRUFnOHJCQUlUS3dRQ0Z5c0VBaFxcXG5zckJBSWZLd1FDSXlzRUFpY3JCQUlyS3dRQ0x5c0VBak1yQkFJM0t3UUNPeXNFQWo4ckJBSkRLd1FDUnlzRUFrc3JCQUpQS3dRQ1V5c0VcXFxuQWxjckJBQUFBQUFFQUFBQUFBQUFBQVFBQUFBSEFBQUFCQUFBQUFjQUFBQUVBQUFBQndBQUFBUUFBQUFDbnlZQ0FxRW1BZ0twSmdJQ3J5XFxcbllDQkFBQUFBTFZKZ0lDdFNZQ0Fxc21BZ0svSmdJQzF5WUNBc3NtQWdMTkpnSUN6eVlDQXRFbUFnSzNKZ0lDd3lZQ0FzY21BZ0s3SmdJQ1xcXG55U1lDQXJNbUFnSzVKZ0lDcFNZQ0FxY21BZ0t0SmdJQ3NTWUNBcjBtQWdMQkpnSUN4U1lDQWxzckFnS1hJQUlDWFNzQ0FsOHJBZ1FBQUFcXFxuQUNvU1lDQXFrbUFnUUFBQUFDMHlZQ0JBQUFBQUtySmdJRUFBQUFBdGNtQWdMTEpnSUN6U1lDQXM4bUFnTFJKZ0lDdHlZQ0FzTW1BZ0xIXFxcbkpnSUN1eVlDQXNrbUFnUUFBQUFDdVNZQ0FxVW1BZ0tuSmdJQ3JTWUNCQUFBQUFLOUpnSUVBQUFBQXNVbUFnUUFBQUFDcVNZQ0JBQUFBQVxcXG5LckpnSUVBQUFBQXRjbUFnUUFBQUFDelNZQ0JBQUFBQUxSSmdJQ3R5WUNBc01tQWdRQUFBQUN1eVlDQXNrbUFnUUFBQUFDdVNZQ0JBQUFcXFxuQUFLdEpnSUVBQUFBQXIwbUFnUUFBQUFDeFNZQ0JBQUFBQUtYSUFJRUFBQUFBbDhyQWdRQUFBQUNvU1lDQXFrbUFnUUFBQUFDMHlZQ0JBXFxcbkFBQUFLckpnSUN2eVlDQXRjbUFnTExKZ0lFQUFBQUFzOG1BZ0xSSmdJQ3R5WUNBc01tQWdMSEpnSUN1eVlDQXNrbUFnUUFBQUFDdVNZQ1xcXG5BcVVtQWdLbkpnSUNyU1lDQkFBQUFBSzlKZ0lDd1NZQ0FzVW1BZ0piS3dJRUFBQUFBbDByQWdRQUFBQUNueVlDQXFFbUFnS3BKZ0lDcnlcXFxuWUNBdE1tQWdMVkpnSUN0U1lDQXFzbUFnSy9KZ0lDMXlZQ0JBQUFBQUxOSmdJQ3p5WUNBdEVtQWdLM0pnSUN3eVlDQXNjbUFnSzdKZ0lDXFxcbnlTWUNBck1tQWdLNUpnSUNwU1lDQXFjbUFnS3RKZ0lDc1NZQ0FyMG1BZ0xCSmdJQ3hTWUNCQUFBQUFLaEpnSUNxU1lDQXE4bUFnUUFBQVxcXG5BQzFTWUNBclVtQWdLckpnSUN2eVlDQXRjbUFnUUFBQUFDelNZQ0FzOG1BZ0xSSmdJQ3R5WUNBc01tQWdMSEpnSUN1eVlDQXNrbUFnS3pcXFxuSmdJQ3VTWUNBcVVtQWdLbkpnSUNyU1lDQXJFbUFnSzlKZ0lDd1NZQ0FzVW1BZ1FBQUFBSEFBQUFCQUFBQUFjQUFBQUVBQUFBQndBQUFBXFxcblFBQUFBSEFBQUFCQUFBQUFjQUFBQUVBQUFBQndBQUFBUUFBQUFIQUFBQUJBQUFBQVpoS3dJR1l5c0NCbVVyQWdabkt3SUdhU3NDQm1zclxcXG5BZ1p0S3dJR2J5c0NCbkVyQWdaekt3SUhBQUFBQmxFS0F3WlVDZ01HVndvREJsb0tBd1pkQ2dNR1lBb0RCbU1LQXdabUNnTUdhUW9EQm1cXFxud0tBd1p2Q2dNR2Nnb0RCblVLQXdaNENnTUdld29EQm40S0F3YUJDZ01HaEFvREJvY0tBd2FLQ2dNR2pRb0RCcEFLQXdhVENnTUdsZ29EXFxcbkJwa0tBd2FjQ2dNQ2RTc0hBZ0lBQVFJUkFBRUN6UmNDQW53ckFnY0FBQUFDQUFBQkFnRUFBUUlDQUFFQ0F3QUJBZ1FBQVFJRkFBRUNCZ1xcXG5BQkFnY0FBUUlJQUFFQ0NRQUJBZ29BQVFJTEFBRUNEQUFCQWcwQUFRSU9BQUVDRHdBQkFoQUFBUUlSQUFFQ0VnQUJBaE1BQVFJVUFBRUNcXFxuRlFBQkFoWUFBUUlYQUFFQ0dBQUJBaGtBQVFKK0t3SUN0QmNDQW9BckFnSjNBQUlDZ2lzREFvVXJBZ2NBQUFBQ2h5c0NBb2tyQWdLTEt3XFxcbklIQUFBQUFvMHJBZ2NBQUFBRUFBQUFCd0FBQUFLUEt3WUNsU3NHQW5BU0F3UUFBQUFDeHd3REFwc3JBd0tlS3dNQ29Tc0RBaHdNQXdLa1xcXG5Ld01DcHlzREF0a1BBd0txS3dNQ3JTc0RBckFyQXdMMkhBTUNzeXNEQXJZckF3SzVLd01DdkNzREFyOHJBd0xDS3dNQ013MERBc1VyQXdcXFxuTElLd01DeXlzREFzNHJBd0xSS3dNQzFDc0RBZ29NQXdMQkR3TUMxeXNEQXRrUkF3TEtEd01DM0JFREF0b3JBd0xiRFFNQzNTc0RBdUFyXFxcbkF3TGpLd01DNWlzREF1a3JBd0ttRVFNQzVRd0RBdXdyQXdMdkt3TUM4aXNEQXZVckF3UUFBQUFDK0NzSkFnRXNDUUlLTEFrQ0V5d0pBaFxcXG53c0NRSWxMQWtDTGl3SkFqY3NDUUpBTEFrRUFBQUFBa2tzQXdKTUxBTUVBQUFBQndBQUFBUUFBQUFIQUFBQUJBQUFBQWNBQUFBRUFBQUFcXFxuQndBQUFBUUFBQUFIQUFBQUJBQUFBQWNBQUFBRUFBQUFCd0FBQUFRQUFBQUhBQUFBQkFBQUFBY0FBQUFFQUFBQUJ3QUFBQVFBQUFBSEFBXFxcbkFBQkFBQUFBY0FBQUFFQUFBQUJ3QUFBQVFBQUFBSEFBQUFCQUFBQUFjQUFBQUVBQUFBQndBQUFBUUFBQUFIQUFBQUJBQUFBQWNBQUFBRVxcXG5BQUFBQndBQUFBUUFBQUFIQUFBQUJBQUFBQWNBQUFBRUFBQUFCd0FBQUFRQUFBQUhBQUFBQkFBQUFBY0FBQUFFQUFBQUJ3QUFBQVFBQUFcXFxuQUhBQUFBQkFBQUFBSXJDUUVDS3dBQkFpRUFBUUlpQUFFQ0xBa0JBaTBKQVFJdUNRRUNMd2tCQWpBSkFRSXhDUUVFQUFBQUFBQUFBQVFBXFxcbkFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFKUExBTUNVaXdEQWxVc0F3SllMQVFDWEN3REFnMGVBd1xcXG5KZkxBTUNZaXdEQW1Vc0F3Sm9MQU1DRUI0REFtc3NBd0p1TEFNQ2NTd0VBaE1lQXdKMUxBTUNlQ3dEQW5zc0F3SitMQVFDZ2l3REFvVXNcXFxuQXdLNUt3TUNpQ3dFQW93c0F3S1BMQU1Da2l3REFwVXNBd0s1SGdNQ21Dd0VBam9NQXdLY0xBTUNueXdEQXFJc0F3S2xMQU1DN3lzREFxXFxcbmdzQXdLckxBTUN5QjREQWhZZUF3SVpIZ01DeXg0REFxNHNBd0t4TEFNQzlCc0RBclFzQXdJY0hnTUN0eXdEQXJvc0F3SzlMQU1Dd0N3RFxcXG5Bc01zQkFMSExBTUN5aXdEQXMwc0F3TFFMQVFDMUN3REF0Y3NBd0xhTEFNQzNTd0RBdUFzQXdMakxBTUM1aXdEQXVrc0F3THNMQU1DN3lcXFxud0RBdklzQXdMMUxBTUMrQ3dEQXRFZUF3TDdMQU1DL2l3REFnRXRBd0lFTFFNQ0loNERBZ2N0QXdJS0xRTUNEUzBEQXFvZEF3SVFMUU1DXFxcbkV5MERBaFl0QXdJWkxRTUNIQzBEQWg4dEF3SWlMUU1DSlMwREFpZ3RCQUlzTFFNQ0x5MERBakl0QXdLa0t3TUNOUzBEQWpndEF3STdMUVxcXG5RQ1B5MEVBa010QXdKR0xRTUNTUzBEQWt3dEF3SlBMUU1DVWkwREJBQUFBQUpWTFFNQ1dDMERBbHN0QkFKZkxRTUNZaTBEQXVnYkF3SmxcXFxuTFFNQ2FDMEVBbXd0QXdKdkxRTUVBQUFBQW9nTUF3SnlMUU1DZFMwREFvNE1Bd0o0TFFNQ2V5MERBbjR0QkFLQ0xRTUNoUzBFQW9rdEF3XFxcbktNTFFNQ2p5MERBcEl0QXdLVkxRTUNtQzBEQXBzdEF3S2VMUU1Db1MwREFxUXRBd0tuTFFNQ3FpMEVBcTR0QXdLeExRTUN0QzBEQXJjdFxcXG5Bd0pNR3dNQ3VpMEVBcXdNQXdLK0xRUUN3aTBEQXNVdEF3TElMUU1DeXkwRUFzOHRCQUxUTFFNQzFpMERBdGt0QXdMY0xRTUMzeTBEQXVcXFxuSXRBd0xsTFFNQzZDMERBdXN0QXdMdUxRTUNNUjREQXZFdEJBTDFMUU1DK0MwREF2c3RBd0wxSGdNQyt5MERBdjR0QXdJM0hnTUNBUzREXFxcbkFnUXVBd0lITGdNQ0NpNERBam9lQXdMN0dnTUNEUzREQWhBdUF3SVRMZ01DRmk0REFoa3VBd0ljTGdNQ0h5NEVBaU11QXdJbUxnTUNLU1xcXG40REFpd3VBd0l2TGdNQ01pNEVBall1QXdJNUxnTUNQQzREQWo4dUF3SkNMZ01DUlM0REFrZ3VBd0pMTGdNQ1RpNERBajBlQXdKUkxnTUNcXFxuVkM0RUFsZ3VBd0piTGdNQ1hpNERBbUV1QXdKREhnTUNaQzREQW1jdUF3SnFMZ01DYlM0REFuQXVBd0p6TGdNQ2RpNERBbmt1QXdKUEd3XFxcbk1DRFI4REFud3VBd0ovTGdNQ2dpNERBb1V1QkFLSkxnTUNqQzREQW84dUF3S1NMZ01DUmg0REFwVXVCQUtaTGdNQ25DNERBcDh1QXdLT1xcXG5Id01Db2k0REFxVXVBd0tvTGdNQ3F5NERBcTR1QkFLeUxnTUN0UzREQXJndUF3SzdMZ1FDdnk0REFzSXVBd0xGTGdNQ3lDNERBaHNjQXdcXFxuTExMZ01Demk0RUF0SXVCQUxXTGdRQzJpNERBdDB1QkFMaExnTUM1QzREQXVjdUF3THFMZ01DN1M0REFra2VBd0lVSFFNQzhDNERBdk11XFxcbkF3TDJMZ01DK1M0RUF2MHVBd0lBTHdNQ0F5OERBZ1l2QXdJV0h3TUNDUzhEQWd3dkJBSVFMd01DRXk4REFoWXZCQUlhTHdRQ0hpOERBaVxcXG5FdkF3SVpId01DSkM4REFpY3ZBd0lxTHdNQ0xTOERBakF2QXdJekx3TUNOaThFQWpvdkF3STlMd1FDUVM4REJBQUFBQUpFTHdNQ0h4OERcXFxuQWtjdkF3SktMd1FDVGk4REFsRXZBd0pVTHdRQ1dDOEVBbHd2QXdKZkx3TUNZaThEQW1VdkF3Sm9Md01DYXk4REFtNHZBd0lsSHdNQ2NTXFxcbjhEQW5RdkF3SjNMd01DZWk4REFuMHZCQUtCTHdNQ2hDOEVBdkViQXdLSUx3UUNqQzhEQW84dkJBS1RMd1FDbHk4RUFwc3ZBd0tlTHdNQ1xcXG5OeDhEQXFFdkJBS2xMd1FDcVM4RUFxMHZCQUt4THdNQ3RDOERBam9mQXdLVUh3TUN0eThEQXJvdkF3SzlMd01Dd0M4RUFzUXZBd0tDR3dcXFxuTUNRQjhEQXNjdkF3TEtMd1FDWng0REFzNHZCQUxTTHdRQzVoMERBdFl2QXdMWkx3TUNjQjREQXR3dkF3TGZMd01DNGk4RUF1WXZCQVFBXFxcbkFBQUM2aThEQXUwdkJBTHhMd01DOUM4REF2Y3ZBd0w2THdRQy9pOERBZ0V3QXdJRU1BTUNCekFEQWdvd0F3SU5NQVFDRVRBREFoUXdBd1xcXG5JWE1BTUNHakFEQWgwd0F3SWdNQU1DSXpBRUFpY3dCQUlyTUFNQ0xqQUVBakl3QXdJMU1BUUNPVEFEQWp3d0F3S0NIZ01DUHpBRUFrTXdcXFxuQkFKSE1BTUNTakFFQWs0d0F3SlJNQVFDVlRBREFsZ3dBd0piTUFNQ1hqQURBbUV3QXdKa01BTUNaekFFQW1zd0JBSnZNQVFDY3pBRUFzXFxcbkl0QXdKM01BTUNlakFEQW4wd0F3S0FNQU1DZ3pBREFvWXdBd0tKTUFNQ2pEQURBbzh3QXdLU01BTUNsVEFEQXBnd0JBSWtIQU1DbkRBRFxcXG5BcDh3QXdLaU1BTUNwVEFEQXFnd0F3S3JNQU1DaXg0REFxNHdBd0t4TUFNQ3REQURBcmN3QXdLNk1BUUN2akFFQXNJd0JBTEdNQU1DeVRcXFxuQURBc3d3QXdMUE1BTUMwakFFQXRZd0F3TFpNQVFDM1RBREF1QXdBd0xqTUFRQzV6QUVBdXN3QXdMdU1BTUNjeHNEQXZFd0F3TDBNQU1DXFxcbjl6QURBdm93QXdMOU1BTUNBREVEQWxVZkF3SURNUU1DQmpFREFna3hBd1FBQUFBQ0RERURBZzh4QXdJU01RTUNGVEVEQXJvTkF3SVlNUVxcXG5RQ0hERURBaDh4QXdJaU1RTUNKVEVEQWlneEF3SXJNUVFDTHpFRUFqTXhBd0kyTVFNQ09URURBbVFmQXdKbkh3TUN6dzBEQWp3eEJBSkFcXFxuTVFNQ1F6RURBa1l4QXdKSk1RTUNUREVFQWxBeEJBSlVNUU1DVnpFREFsb3hBd0pkTVFRQ1lURURBbW9mQXdKa01RUUNhREVFQW13eEF3XFxcbkp2TVFNQ2NqRURBblV4QkFKNU1RTUNmREVEQW44eEF3S0NNUU1DaFRFREFvZ3hBd0tMTVFNQ2pqRUVBcEl4QXdLVk1RTUNtREVEQXBzeFxcXG5CQUtmTVFNQ29qRURBcVV4QXdLb01RTUNxekVFQXE4eEJBS3pNUU1DdGpFREFya3hBd0s4TVFRQ3dERURBc014QkFKOEh3TUN4ekVEQXNcXFxub3hCQUxPTVFNQzBURURBdFF4QXdMWE1RTUMyakVEQXQweEF3TGdNUU1DNHpFRUFuOGZBd0xuTVFNQzZqRURBdTB4QXdMd01RTUM4ekVEXFxcbkF2WXhCQUw2TVFNQy9URUVBZ0V5QkFJRk1nUUNYdzREQWdreUF3SnJEZ01DRERJREFnOHlBd0lTTWdNQ0ZUSURBbm9PQXdJWU1nUUVBQVxcXG5BQUFBQUFBQVFBQUFBQkFBQUFCQUFBQUdGaVkyUmxabWRvYVdwcmJHMXViM0J4Y25OMGRYWjNlSGw2SUNETWlDRE1oREl6SU15Qnpyd2dcXFxuektjeE1lS0JoRFF4NG9HRU1qUGlnWVEwdzZERG9jT2l3NlBEcE1PbHc2YkRwOE9vdzZuRHFzT3J3NnpEcmNPdXc2L0RzTU94dzdMRHM4XFxcbk8wdzdYRHRzTzR3N25EdXNPN3c3ekR2Y08rYzNQRWdjU0R4SVhFaDhTSnhJdkVqY1NQeEpIRWs4U1Z4SmZFbWNTYnhKM0VuOFNoeEtQRVxcXG5wY1NueEtuRXE4U3R4SzlweklkcGFzUzF4TGZFdXNTOHhMNXN3cmZGZ3NXRXhZYkZpTXE4YnNXTHhZM0ZqOFdSeFpQRmxjV1h4Wm5GbThcXFxuV2R4Wi9Gb2NXanhhWEZwOFdweGF2RnJjV3Z4YkhGczhXMXhiZkR2OFc2eGJ6RnZzbVR4b1BHaGNtVXhvakpsc21YeG96SG5jbVp5WnZHXFxcbmtzbWd5YVBKcWNtb3hwbkpyOG15eWJYR29jYWp4cVhLZ01hb3lvUEdyY3FJeHJES2lzcUx4clRHdHNxU3hybkd2V1RGdm14cWJtckhqc1xcXG5lUXg1TEhsTWVXeDVqSG1zZWN4NS9Ib2Nlang2WEhwOGVweDZ2SHJjZXZaSHJIdGNhVnhyL0h1Y2U3eDczSHY4aUJ5SVBJaGNpSHlJbklcXFxuaThpTnlJL0lrY2lUeUpYSWw4aVp5SnZJbmNpZnhwN0lvOGlseUtmSXFjaXJ5SzNJcjhpeHlMUGlzYVhJdk1hYTRyR215WUxHZ01xSnlvXFxcbnpKaDhtSnlZdkpqY21QeWFiSnVjbTd5b0VneklZZ3pJY2d6SW9nektnZ3pJTWd6SXZLbGN5QXpJSE1rOHlJeklIT3VjMnh6YlBLdWMyM1xcXG5JTTY1TzgreklNeUl6SUhPck1LM3pxM09yczZ2ejR6UGpjK096ckhPc3M2enpyVE90YzYyenJmT3VNNjZ6cnZPdmM2K3pyL1BnTStCejRcXFxuUFBoTStGejRiUGg4K0l6NG5QaXMrTHo1ZlBtYytiejUzUG44K2h6NlBQcGMrbno2blBxOCt0ejYvUHVNKzd6YnZOdk0yOTBaRFJrZEdTXFxcbjBaUFJsTkdWMFpiUmw5R1kwWm5SbXRHYjBaelJuZEdlMFovUXNOQ3gwTExRczlDMDBMWFF0dEMzMExqUXVkQzYwTHZRdk5DOTBMN1F2OVxcXG5HQTBZSFJndEdEMFlUUmhkR0cwWWZSaU5HSjBZclJpOUdNMFkzUmp0R1AwYUhSbzlHbDBhZlJxZEdyMGEzUnI5R3gwYlBSdGRHMzBiblJcXFxudTlHOTBiL1NnZEtMMG8zU2o5S1IwcFBTbGRLWDBwblNtOUtkMHAvU29kS2owcVhTcDlLcDBxdlNyZEt2MHJIU3M5SzEwcmZTdWRLNzByXFxcbjNTdjlPQzA0VFRodE9JMDRyVGpOT08wNUhUazlPVjA1ZlRtZE9iMDUzVG45T2gwNlBUcGRPbjA2blRxOU90MDYvVHNkT3owN1hUdDlPNVxcXG4wN3ZUdmRPLzFJSFVnOVNGMUlmVWlkU0wxSTNVajlTUjFKUFVsZFNYMUpuVW05U2QxSi9Vb2RTajFLWFVwOVNwMUt2VXJkU3YxYUhWb3RcXFxuV2oxYVRWcGRXbTFhZlZxTldwMWFyVnE5V3MxYTNWcnRXdjFiRFZzZFd5MWJQVnROVzExYmJWdDlXNDFiblZ1dFc3MWJ6VnZkVysxYi9XXFxcbmdOYUIxb0xXZzlhRTFvWFdodFdsMW9MWXA5bTAyWWpadE51SDJiVFppdG0wNEtTVjRLUzg0S1NXNEtTODRLU1g0S1M4NEtTYzRLUzg0S1xcXG5TaDRLUzg0S1NpNEtTODRLU3I0S1M4NEtTdjRLUzg0S2FoNEthODRLYWk0S2E4NEthdjRLYTg0S2l5NEtpODRLaTQ0S2k4NEtpVzRLaThcXFxuNEtpWDRLaTg0S2ljNEtpODRLaXI0S2k4NEt5aDRLeTg0S3lpNEt5ODRMbU40TGl5NEx1TjRMcXk0THFyNExxWjRMcXI0THFoNEx5TDRMXFxcbjJDNEw2MzRMMk00TDYzNEwyUjRMNjM0TDJXNEw2MzRMMmI0TDYzNEwyQTRMNjE0TDJ4NEwyeTRMMng0TDIwNEw2eTRMNkE0TDZ5NEwyeFxcXG40TDZBNEw2ejRMNkE0TDZ6NEwyeDRMNkE0TDJ4NEw2QTRMNlM0TDYzNEw2YzRMNjM0TDZoNEw2MzRMNm00TDYzNEw2cjRMNjM0TDZRNExcXFxuNjE0clNuNHJTdDRZT2M0WSt3NFkreDRZK3k0WSt6NFkrMDRZKzE2cG1MNFlPUTRZT1I0WU9TNFlPVDRZT1U0WU9WNFlPVzRZT1g0WU9ZXFxcbjRZT1o0WU9hNFlPYjRZT2Q0WU9lNFlPZjRZT2c0WU9oNFlPaTRZT2o0WU9rNFlPbDRZT200WU9uNFlPbzRZT3A0WU9xNFlPcjRZT3M0WVxcXG5PdDRZT3U0WU92NFlPdzRZT3g0WU95NFlPejRZTzA0WU8xNFlPMjRZTzM0WU80NFlPNTRZTzY0WU85NFlPKzRZTy95WkRKa2VHMGdzbWNcXFxuNGJTVzRiU1g0YlNkNGJTbHlaTEpsY21meWFISnBjbXE0Ylc3eXAzSnJlRzJoY3FmeWJISnNNbXp5YlRKdU1xQ3hxdmh0SnpLa01xUjRiXFxcbmlCNGJpRDRiaUY0YmlINGJpSjRiaUw0YmlONGJpUDRiaVI0YmlUNGJpVjRiaVg0YmlaNGJpYjRiaWQ0YmlmNGJpaDRiaWo0YmlsNGJpblxcXG40YmlwNGJpcjRiaXQ0Yml2NGJpeDRiaXo0YmkxNGJpMzRiaTU0Ymk3NGJpOTRiaS80Ym1CNGJtRDRibUY0Ym1INGJtSjRibUw0Ym1ONGJcXFxubVA0Ym1SNGJtVDRibVY0Ym1YNGJtWjRibWI0Ym1kNGJtZjRibWg0Ym1qNGJtbDRibW40Ym1wNGJtcjRibXQ0Ym12NGJteDRibXo0Ym0xXFxcbjRibTM0Ym01NGJtNzRibTk0Ym0vNGJxQjRicUQ0YnFGNGJxSDRicUo0YnFMNGJxTjRicVA0YnFSNGJxVDRicVZZY3ErNGJxaDRicWo0YlxcXG5xbDRicW40YnFwNGJxcjRicXQ0YnF2NGJxeDRicXo0YnExNGJxMzRicTU0YnE3NGJxOTRicS80YnVCNGJ1RDRidUY0YnVINGJ1SjRidUxcXFxuNGJ1TjRidVA0YnVSNGJ1VDRidVY0YnVYNGJ1WjRidWI0YnVkNGJ1ZjRidWg0YnVqNGJ1bDRidW40YnVwNGJ1cjRidXQ0YnV2NGJ1eDRiXFxcbnV6NGJ1MTRidTM0YnU1NGJ1NzRidTk0YnUvNGJ5QTRieUI0YnlDNGJ5RDRieUU0YnlGNGJ5RzRieUg0YnlRNGJ5UjRieVM0YnlUNGJ5VVxcXG40YnlWNGJ5ZzRieWg0YnlpNGJ5ajRieWs0YnlsNGJ5bTRieW40Ynl3NGJ5eDRieXk0Ynl6NGJ5MDRieTE0YnkyNGJ5MzRiMkE0YjJCNGJcXFxuMkM0YjJENGIyRTRiMkY0YjJSNGIyVDRiMlY0YjJYNGIyZzRiMmg0YjJpNGIyajRiMms0YjJsNGIybTRiMm40YnlBenJuaHZJSE91ZUc4XFxcbmdzNjU0YnlEenJuaHZJVE91ZUc4aGM2NTRieUd6cm5odklmT3VlRzhvTTY1NGJ5aHpybmh2S0xPdWVHOG84NjU0YnlrenJuaHZLWE91ZVxcXG5HOHBzNjU0YnluenJuaHZhRE91ZUc5b2M2NTRiMml6cm5odmFQT3VlRzlwTTY1NGIybHpybmh2YWJPdWVHOXA4NjU0YjJ3enJuT3NjNjVcXFxuenF6T3VlRyt0czY1NGI2dzRiNng0YjJ3SU15VElNMkNJTXlJellMaHZiVE91YzYzenJuT3JzNjU0YitHenJuaHZiTGh2YlFnekpQTWdDXFxcbkRNazh5QklNeVR6WUxPa09HL2tPRy9rZUc5dGlETWxNeUFJTXlVeklFZ3pKVE5nczZ3NGIrZzRiK2g0YjI2NGIrbElNeUl6SUJnNGIyOFxcXG56cm5QaWM2NXo0N091ZUcvdHM2NTRiMjQ0YjI4SU15VTRvQ1FJTXl6NG9DeTRvQ3k0b0N5NG9DeTRvQ3k0b0MxNG9DMTRvQzE0b0MxNG9cXFxuQzFJU0VneklVL1B6OGhJVC9pZ0xMaWdMTGlnTExpZ0xJd05EVTJOemc1SytLSWtqMG9LWEp6WVM5allTOXp3ckJqWXk5dll5OTF3ckJtXFxcbmJtOXpiWFJsYkhSdDE1RFhrZGVTMTVObVlYamlpSkV4NG9HRU56SGlnWVE1TWVLQmhERXdNZUtCaERNeTRvR0VNekhpZ1lRMU11S0JoRFxcXG5VejRvR0VOVFRpZ1lRMU1lS0JoRFkxNG9HRU5qSGlnWVE0TStLQmhEZzE0b0dFT0RmaWdZUTRNZUtCaEdscGFXbHBhWFoyYVhacGFYWnBcXFxuYVdscGVIaHBlR2xwTU9LQmhEUGlpS3ZpaUt2aWlLdmlpS3ZpaUt2aWlLN2lpSzdpaUs3aWlLN2lpSzdqZ0lqamdJa3hNREV4TVRJeE16XFxcbkUwTVRVeE5qRTNNVGd4T1RJd0tERXBLRElwS0RNcEtEUXBLRFVwS0RZcEtEY3BLRGdwS0RrcEtERXdLU2d4TVNrb01USXBLREV6S1NneFxcXG5OQ2tvTVRVcEtERTJLU2d4Tnlrb01UZ3BLREU1S1NneU1Da29ZU2tvWWlrb1l5a29aQ2tvWlNrb1ppa29aeWtvYUNrb2FTa29haWtvYXlcXFxua29iQ2tvYlNrb2Jpa29ieWtvY0Nrb2NTa29jaWtvY3lrb2RDa29kU2tvZGlrb2R5a29lQ2tvZVNrb2VpbmlpS3ZpaUt2aWlLdmlpS3M2XFxcbk9qMDlQVDA5UGVLcm5jeTQ0ckN3NHJDeDRyQ3k0ckN6NHJDMDRyQzE0ckMyNHJDMzRyQzQ0ckM1NHJDNjRyQzc0ckM4NHJDOTRyQys0clxcXG5DLzRyR0E0ckdCNHJHQzRyR0Q0ckdFNHJHRjRyR0c0ckdINHJHSTRyR0o0ckdLNHJHTDRyR000ckdONHJHTzRyR1A0ckdRNHJHUjRyR1NcXFxuNHJHVDRyR1U0ckdWNHJHVzRyR1g0ckdZNHJHWjRyR2E0ckdiNHJHYzRyR2Q0ckdlNHJHaHlhdmh0YjNKdmVLeHFPS3hxdUt4ck9LeHMrXFxcbkt4dHNpL3lZRGlzb0hpc29QaXNvWGlzb2Zpc29uaXNvdmlzbzNpc28vaXNwSGlzcFBpc3BYaXNwZmlzcG5pc3B2aXNwM2lzcC9pc3FIaVxcXG5zcVBpc3FYaXNxZmlzcW5pc3F2aXNxM2lzcS9pc3JIaXNyUGlzclhpc3JmaXNybmlzcnZpc3IzaXNyL2lzNEhpczRQaXM0WGlzNGZpczRcXFxubmlzNHZpczQzaXM0L2lzNUhpczVQaXM1WGlzNWZpczVuaXM1dmlzNTNpczUvaXM2SGlzNlBpczZ6aXM2N2lzN1BpdGFIbXI0M3B2cC9rXFxcbnVJRGt1S2prdUxia3VML2t1Wm5rdW9Ya3Vvemt1cURrdXJybGhML2xoYVhsaGF2bGhvTGxocGJsaHF2bGg2RGxoN1hsaUlEbGlwdmxpN1xcXG5ubGpKWGxqSnJsakxqbGpZSGxqWnpsamFubGpvTGxqcmJsajRqbGo2UGxtNWZsbkovbG82dmxwSUxscElybHBKWGxwS2ZscGJQbHJaRGxcXFxucm9EbHI3amxzSS9sc0tMbHNMamxzYTdsc2JIbHQ1dmx0NlhsdDdIbHQ3N2x1YkxsdWJybHViL2x1N1RsdTc3bHZJdmx2SlBsdlpEbHZhXFxcbkhsdmJQbHY0UG1pSWptaUxibWlZdm1sSy9tbExUbWxvZm1scGZtbHFUbWxybm1sNkRtbDZYbW03RG1uSWptbktqbXJLRG1yYUxtcmJubVxcXG5yclBtcjR2bXI1VG1yNXZtc0kvbXNKVG1zTFRuZ2F2bmlLcm5pTGJuaUx2bmlML25pWWZuaVpubmladm5pcXpuam9Ubmpvbm5rNXpuazZcXFxuYm5sSmpubEovbmxLam5sTERubG92bmxwTG5tYmJubWIzbm1xN25tci9ubTY3bm41dm5uNkxubjdQbnBMcm5wcmpucHI3bnFiVG5xNHZuXFxcbnE3bm5zYlBuczdqbnZMYm52Wkhudm9ybnZyM29nSUhvZ0l6b2dKTG9nTFBvZ2Ivb2dvbm9oNlBvaDZyb2g3UG9oN3pvaUl6b2lKdm9pSlxcXG4vb2lhN29pYkxvaWJqb21ZM29tYXZvb1lEb29Zem9vYVBvcGI3b3Bvdm9wNUxvcUlEb3NMZm9zWWJvc1pYb3Niam9zcDNvdGFUb3RiRG9cXFxudHJQb3Vxdm91NHJvdnB2b3ZyRG92clhwZ3BIcGhZbnBoNGJwaDR6cGg1SHBsYmZwbG9EcG1KenBtcmJwbXJucG02anBuWkhwblo3cG5hXFxcbkxwbmFucG40dnBuNjNwbjdQcG9JSHBvcWpwbzV2cG81L3BwcGJwcHBucHBxenBxcWpwcTVqcHE1L3ByS1hwcksvcHJMTHByTHpwclpycFxcXG5zNlhwdWJYcHViL3B1cVhwdXJ2cHU0UHB1NDNwdTVIcHU3bnB1NzNwdkk3cHZKUHB2S0Rwdkx2cHZZcnB2Wkxwdm8zcHZwenB2cUF1NDRcXFxuQ1M1WTJFNVkyRklPT0NtU0RqZ3Byamdvampnb3JqZ3JQamc0amhoSURoaElIaGhxcmhoSUxoaHF6aGhxM2hoSVBoaElUaGhJWGhockRoXFxcbmhySGhockxoaHJQaGhyVGhoclhoaEpyaGhJYmhoSWZoaElqaGhLSGhoSW5oaElyaGhJdmhoSXpoaEkzaGhJN2hoSS9oaEpEaGhKSGhoSlxcXG5MaGhhSGhoYUxoaGFQaGhhVGhoYVhoaGFiaGhhZmhoYWpoaGFuaGhhcmhoYXZoaGF6aGhhM2hoYTdoaGEvaGhiRGhoYkhoaGJMaGhiUGhcXFxuaGJUaGhiWGhoSlRoaEpYaGg0ZmhoNGpoaDR6aGg0N2hoNVBoaDVmaGg1bmhoSnpoaDUzaGg1L2hoSjNoaEo3aGhLRGhoS0xoaEtQaGhLXFxcbmZoaEtuaGhLdmhoS3poaEszaGhLN2hoSy9oaExMaGhMYmhoWURoaFlmaGhZemhoN0hoaDdMaGhaZmhoWmpoaFpuaGhvVGhob1hoaG9qaFxcXG5ocEhoaHBMaGhwVGhocDdoaHFIa3VJbmxtNXZrdUlya3VLM2t1SXZubExMa3VKbmt1SUhscEtubG5MQW80WVNBS1NqaGhJSXBLT0dFZ3lcXFxua280WVNGS1NqaGhJWXBLT0dFaHlrbzRZU0pLU2poaElzcEtPR0VqQ2tvNFlTT0tTamhoSThwS09HRWtDa280WVNSS1NqaGhKSXBLT3F3XFxcbmdDa282NEtZS1Nqcmk2UXBLT3VkdkNrbzY2ZUlLU2pyc0pRcEtPeUNyQ2tvN0pXRUtTanNucEFwS095d3FDa283TG0wS1NqdGc0QXBLT1xcXG4yTWpDa283WldZS1Nqc283d3BLT3lZcE95Z2hDa283SmlrN1p1RUtTamt1SUFwS09TNmpDa281TGlKS1NqbG01c3BLT1M2bENrbzVZV3RcXFxuS1Nqa3VJTXBLT1dGcXlrbzVMbWRLU2psallFcEtPYWNpQ2tvNTRHcktTam1zTFFwS09hY3FDa282WWVSS1NqbG5KOHBLT2FYcFNrbzVxXFxcbkNxS1NqbW5Ja3BLT2VrdmlrbzVaQ05LU2puaWJrcEtPaXlvU2tvNTZXZEtTamxpclFwS09TN295a281Wkc4S1NqbHJhWXBLT2Vib3lrb1xcXG41THlCS1Nqb3M0Y3BLT1dObENrbzU2V3RLU2prdkpFcEtPaUhxaWtvNkllektlV1ZqK1c1dk9ldWozQjBaVEl4TWpJeU16STBNalV5TmpcXFxuSTNNamd5T1RNd016RXpNak16TXpRek5lcXdnT3VDbU91THBPdWR2T3VuaU91d2xPeUNyT3lWaE95ZWtPeXdxT3k1dE8yRGdPMk1qTzJWXFxcbm1PeXd1T3F6b095anZPeWRtT3lhc09TNmxPV0ZyZVM0ZytTNW5lYWdxdWFjaWVla3Z1V1FqZWVKdWVpeW9lZWxuZVdLdE9lbm1PZVV0K1xcXG5tQnFlV0VxdVdOc09henFPbWdoZVM4a2VXR21lYXRvK1czcHVXUHMrV011K1d1bCtXdHB1ZWJvK1M4Z2VpemgrV05sT1drbkRNMk16Y3pcXFxuT0RNNU5EQTBNVFF5TkRNME5EUTFORFkwTnpRNE5EazFNREhtbklneTVweUlNK2FjaURUbW5JZzE1cHlJTnVhY2lEZm1uSWc0NXB5SU9lXFxcbmFjaURFdzVweUlNVEhtbklneE11YWNpR2huWlhKblpYWnNkR1RqZ3FMamdxVGpncWJqZ3FqamdxcmpncXZqZ3EzamdxL2pnckhqZ3JQalxcXG5nclhqZ3JmamdybmpncnZqZ3IzamdyL2pnNEhqZzRUamc0YmpnNGpqZzRyamc0dmpnNHpqZzQzamc0N2pnNC9qZzVMamc1WGpnNWpqZzVcXFxudmpnNTdqZzUvamc2RGpnNkhqZzZMamc2VGpnNmJqZzZqamc2bmpnNnJqZzZ2amc2empnNjNqZzYvamc3RGpnN0hqZzdMa3U2VGxrb3pqXFxcbmdxTGpnNUhqZzd6amc0ampncUxqZzZ2amc1WGpncUhqZ3FMamc3UGpnNXJqZ3FMamdxTGpnN3pqZzZ2amdxVGpnNHZqZzdQamdyRGpncVxcXG5Uamc3UGpnNEhqZ3FiamdxbmpnN1BqZ3FqamdybmpncS9qZzd6amc0bmpncWpqZzd6amdxdmpnN3pqZ3Fyamc3UGpncm5qZ3Fyamc3empcXFxuZzZEamdxdmpncVRqZzZyamdxdmpnNm5qZzRQamc0ampncXZqZzYzamc2cmpnN3pqZ3F6amc2M2pnN1BqZ3F6amc3UGpnNTdqZ3E3amdxXFxcbnpqZ3E3amc0dmpnN3pqZ3Ezamc2WGpnNnJqZzd6amdxN2pnNnZqZzREamc3empncTNqZzYzamdxM2pnNjNqZ3JEamc2bmpnNkRqZ3EzalxcXG5nNjNqZzZIamc3empnNGpqZzZ2amdxM2pnNjNqZzYvamc0UGpnNGpqZ3JEamc2bmpnNkRqZ3JEamc2bmpnNkRqZzRqamc3UGpncS9qZzZcXFxudmpncnpqZ3FUamc2M2pncS9qZzYzamc3empnNDNqZ3JIamc3empncm5qZ3JQamc2dmpnNHJqZ3JQamc3empnNTNqZ3JYamdxVGpncS9qXFxcbmc2dmpnclhqZzdQamc0SGpnN3pqZzZEamdyZmpnNnJqZzdQamdyRGpncnZqZzdQamc0SGpncnZqZzdQamc0ampnNERqZzd6amdybmpnNFxcXG5mamdyZmpnNG5qZzZ2amc0ampnN1BqZzRyamc0N2pnNDdqZzRQamc0ampnNC9qZ3FUamc0VGpnNUhqZzd6amdydmpnN1BqZzRqamc1SGpcXFxuZzd6amc0VGpnNURqZzd6amc2empnNnZqZzVUamdxTGpncm5qZzRqamc2dmpnNVRqZ3Evamc2dmpnNVRqZ3JQamc1UGpnNnZqZzVYamdxXFxcbkhqZzZuamc0UGpnNG5qZzVYamdxUGpnN3pqZzRqamc1YmpnNFBqZ3JmamdxZmpnNnZqZzVYamc2bmpnN1BqZzVqamdxL2pnci9qZzd6alxcXG5nNnZqZzVyamdyM2pnNXJqZzR2amc1TGpnNWpqZzZ2amc0VGpnNXJqZzdQamdybmpnNXJqZzd6amdyampnNW5qZzd6amdyL2pnNTNqZ3FcXFxuVGpnN1BqZzRqamc1empnNnZqZzRqamc1dmpnN1BqZzUzamc3UGpnNG5qZzV2amc3empnNnZqZzV2amc3empnN1BqZzU3amdxVGpncS9qXFxcbmc2M2pnNTdqZ3FUamc2dmpnNTdqZzRQamc0L2pnNTdqZzZ2amdxL2pnNTdqZzdQamdyZmpnNmZqZzdQamc1L2pncS9qZzYzamc3UGpnNVxcXG4vamc2cmpnNS9qZzZyamc1RGpnN3pqZzZ2amc2SGpncXpqZzZIamdxempnNGpqZzdQamc2SGpnN3pqZzRqamc2dmpnNlRqZzd6amc0bmpcXFxuZzZUamc3empnNnZqZzZiamdxTGpnN1BqZzZyamc0UGpnNGpqZzZ2amc2cmpnNm5qZzZ2amc1VGpnN3pqZzZ2amc3empnNWJqZzZ2amc2XFxcbnpqZzZEamc2empnN1BqZzRqamdyTGpnN1BqZzYvamc0UGpnNGd3NTRLNU1lZUN1VExuZ3JrejU0SzVOT2VDdVRYbmdyazI1NEs1TitlQ1xcXG51VGpuZ3JrNTU0SzVNVERuZ3JreE1lZUN1VEV5NTRLNU1UUG5ncmt4Tk9lQ3VURTE1NEs1TVRibmdya3hOK2VDdVRFNDU0SzVNVG5uZ3JcXFxua3lNT2VDdVRJeDU0SzVNakxuZ3JreU0rZUN1VEkwNTRLNWFIQmhaR0ZoZFdKaGNtOTJjR05rYldSdE1tUnRNMmwxNWJtejVvaVE1cGl0XFxcbjVaS001YVNuNXEyajVwaU81cks3NXFDcTVieVA1THlhNTZTK2NHRnVZYzY4WVcxaGEyRnJZbTFpWjJKallXeHJZMkZzY0dadVpzNjhac1xcXG42OFoyMW5hMmRvZW10b2VtMW9lbWRvZW5Sb2VzNjhiRzFzWkd4cmJHWnRibTNPdkcxdGJXTnRhMjF0YlRKamJUSnRNbXR0TW0xdE0yTnRcXFxuTTIwemEyMHpiZUtJbFhOdDRvaVZjekpyY0dGdGNHRm5jR0Z5WVdSeVlXVGlpSlZ6Y21GazRvaVZjekp3YzI1enpyeHpiWE53ZG01MnpyXFxcbngyYlhacmRuQjNibmZPdkhkdGQydDNhOCtKYmMrSlluRmpZMk5rWStLSWxXdG5aR0puZVdoaGFIQnBibXRyYTNSc2JXeHViRzluYkhodFxcXG5hV3h0YjJ4d2FIQndiWEJ5YzNKemRuZGlkdUtJbFcxaDRvaVZiVEhtbDZVeTVwZWxNK2FYcFRUbWw2VTE1cGVsTnVhWHBUZm1sNlU0NXBcXFxuZWxPZWFYcFRFdzVwZWxNVEhtbDZVeE11YVhwVEV6NXBlbE1UVG1sNlV4TmVhWHBURTI1cGVsTVRmbWw2VXhPT2FYcFRFNTVwZWxNakRtXFxcbmw2VXlNZWFYcFRJeTVwZWxNalBtbDZVeU5PYVhwVEkxNXBlbE1qYm1sNlV5TithWHBUSTQ1cGVsTWpubWw2VXpNT2FYcFRNeDVwZWxaMlxcXG5GczZwbUI2cG1ENnBtRjZwbUg2cG1KNnBtTjZwbVA2cG1SNnBtVDZwbVY2cG1YNnBtWjZwbWI2cG1kNnBtZjZwbWg2cG1qNnBtbDZwbW5cXFxuNnBtcDZwbXI2cG10NnBxQjZwcUQ2cHFGNnBxSDZwcUo2cHFMNnBxTjZwcVA2cHFSNnBxVDZwcVY2cHFYNnBxWjZwcWI2cHlqNnB5bDZwXFxcbnluNnB5cDZweXI2cHl0NnB5djZweXo2cHkxNnB5MzZweTU2cHk3NnB5OTZweS82cDJCNnAyRDZwMkY2cDJINnAySjZwMkw2cDJONnAyUFxcXG42cDJSNnAyVDZwMlY2cDJYNnAyWjZwMmI2cDJkNnAyZjZwMmg2cDJqNnAybDZwMm42cDJwNnAycjZwMnQ2cDJ2NnAyNjZwMjg0Ylc1NnBcXFxuMi82cDZCNnA2RDZwNkY2cDZINnA2TTZwNlI2cDZUNnA2WDZwNlo2cDZiNnA2ZDZwNmY2cDZoNnA2ajZwNmw2cDZuNnA2cHlhektuc3FIXFxcbjZxMlQ2cDYxNnA2MzZwNjU2cDY3NnA2OTZwNi82cCtENnA2VTRiYU82cCtJNnArSzZwKzI2cXkzNnEyU3lvM2hqcURoanFIaGpxTGhqcVxcXG5QaGpxVGhqcVhoanFiaGpxZmhqcWpoanFuaGpxcmhqcXZoanF6aGpxM2hqcTdoanEvaGpyRGhqckhoanJMaGpyUGhqclRoanJYaGpyYmhcXFxuanJmaGpyamhqcm5oanJyaGpydmhqcnpoanIzaGpyN2hqci9oajREaGo0SGhqNExoajRQaGo0VGhqNFhoajRiaGo0ZmhqNGpoajRuaGo0XFxcbnJoajR2aGo0emhqNDNoajQ3aGo0L2hqNURoajVIaGo1TGhqNVBoajVUaGo1WGhqNWJoajVmaGo1amhqNW5oajVyaGo1dmhqNXpoajUzaFxcXG5qNTdoajUvaGo2RGhqNkhoajZMaGo2UGhqNlRoajZYaGo2YmhqNmZoajZqaGo2bmhqNnJoajZ2aGo2emhqNjNoajY3aGo2L29zWWptbTdcXFxuVG9zNGptdTVIa3VMTGxqNlhscFpIbGxvZmxwWWptaDdibm1hbm52b1hvbUwvb25ycm9vN2pwZ28vbXFJTG10SnZuZzVubmo1N29rTDNwXFxcbmhhcnBwN0hrdW9MbGpiWG1ySVRuaUp2b21LM3B1SjdsdFpEbXY2dm9sNDNvcGFUbWk0bm9oNWpvb0ovbHU0cm1uSmZtdGFybmk3enBnNFxcXG43a3ZvYmxocmZsaTU3bWs0VG1xNVBuaUpEbm02Zm9tSWJvbVp6b3Q2L3BuTExwcmEvcHQ3cm5vb3pucGIvbnRxRG9qNG5waklUb3E1YmxcXFxubzUvbHZJVG5zYURvZ2I3bmlhTG5vNHJvczRMcG03ZmxvNWpsc2FMbXFKUG10NXJtdkkvbnRLL251TGZwbVl2bGk1TG9nb3ZsaDV6bGg0XFxcbnpucUp6bnRyN29qN0hwbWJYb3JvRG1pNC9vcTc3a3VMbmxyNmZtZ0pMbmpvZm5sYkRsakpmbm83dmt2ci9sdnFua3VJM21zNHptbGJqblxcXG50S0xsajRQbG9aN25uSUhva1lub3Fxcm1ycnJtc29qbWk3N29pNlhtanFEbmxhWGt1cTdsaGFubGg0bm1vb0huczZmb2lhL29xNUxwaDRcXFxuL2xpN1hsa1lMbHU2em1sNFhtdjc3bnBLcnBscTNwcWFycHVwZnB1NDdtbTRibXJiZm92YUxsdWJUbWhwRG1pSURta3BybXZLUG5oWW5uXFxcbmtvbm5wNHJudDdUb2dhL292S2JvazY3cGdLUHBqWXJsaUpmbGlxUGxrcjNuZzRqb280TGx1NG5sdjdYbWpidm1ycTduc0w3bmpiWGt1NlxcXG5UbG03bmx0cnJtZ0p6bmpyTG5rYW5udnByb2dZYnBpTFRwbTdicG5ZanBvSmprdm92bnBxN3BoclRwbXJqbWc2SGt1b2JsZzVybHI2N2xcXFxuc0wvbWxwbm5oNDdubVlMb2s3enBnYnptbW9qcG1LN2xpb25tbmJ2bW43UG10WUhtdXB6bmtJbm5sWm5ub2F2bnRKRHBvWjdtaUs3cG1iXFxcbmpsZ0t2bHRKbm10NnJvdktybHZvdm1oWVRtb0pmcG1vYmxpS25sa0kvbHNhWG1tSlBtblk3bW9xam1zNlhua0libmw2TG52Ym5vbzQvb1xcXG5vNkhwbTZMbGpML211cnJsa0ozbmg1RG5rcGpvbDdycG1xUHBzWmZwdXAvbW5wZm10NHZvaDZqbnJLRG5zcExuaTREbmdwbm9yWmprdTRcXFxuRG9qTGJsaUxybGlJZmx1cWJtaTVQbnM1Ymxyb1htdEo3bW1yVG92THZwbVkzbHU1UGxoWURsbDREbG9acm1tYlRsaDU3bmpLcm5tNHJuXFxcbnBMem5wWjducGFYbnBvL3BuWmJuc3I3b21KTG9xN2pwZ0xqcGc3M3BvNi9wbzd6cHBLanB0clRwZzU3cG1yZmt2cTdsZzZmbGhZM2xpNFxcXG5ubGk2VGxqWkhsbHAzbG1JYmxtYWpsb1lEbG9xamxzYVRtZ3BUbWhham1obzdtaDdMbWxZL21sNkxtbXBIbW9vWG10YmZtdUpybXZLTG5cXFxuaGE3bmlLdm5rS0xub3BIbnBZbm5wWWpucFpEbnBaYm5wbzNucG83bnFZRG5xb0hucjREbnVJbm51WUhudmJMb2dJWG9oNjNvaWJub2taXFxcbmZvcEpEb3BwYm9ySUhvckxub3M1UG90SWpvdnJicG02UHBuNy9wb0x2bWdiWHdwSXV1NklpWTVMaW01WWExNVlXbzVMNkE1WVdGNVlhQVxcXG41WXVINVl1NjVaV1Y1WmFaNVplaTVhS3o1YVdFNWFXVTVhbWk1YXlvNWJ1UzVidVo1YjJwNWI2dDVvT1k1b1dPNW9TSTVvV2c1b2kwNW9cXFxuK0U1cENjNXBHUzVwV1c1cHliNXAyVzVydWI1cnVMNTRDZTU1Nm41NGkxNTRxdjU1R3g1NVNHNTVTNzU1aWQ1NWlmNTV1YjU1dTA1NTJLXFxcbjU1MkE1Nk9NNTZxeDU3Rzc1N1diNTd5KzZJMlM2SSt2NkoyNTZLV0I2S2FHNktxLzZLdUw2S3V0Nks2SzZMeTQ2WUd5NllhWjZZbTI2WlxcXG5tODZaK2I2YUNMNmF5UzhLS2hpdkNpb1lUd280K1Y0NjZkNUlDWTVJQzU4S1dKaWZDbHM1RHdwN3VUNmIyRDZiNk9abVptYVdac1ptWnBcXFxuWm1ac2MzVFZ0TlcyMWJUVnBkVzAxYXZWdnRXMjFiVFZyZGVaMXJUWHN0YTMxNkxYbE5lYjE1elhuZGVvMTZyWHFkZUIxNm5YZ3RlcDFyXFxcbnpYZ2RlcDFyelhndGVRMXJmWGtOYTQxNURXdk5lUjFyelhrdGE4MTVQV3ZOZVUxcnpYbGRhODE1Yld2TmVZMXJ6WG1kYTgxNXJXdk5lYlxcXG4xcnpYbk5hODE1N1d2TmVnMXJ6WG9kYTgxNlBXdk5lazFyelhwdGE4MTZmV3ZOZW8xcnpYcWRhODE2cld2TmVWMXJuWGtkYS8xNXZXdjlcXFxuZWsxci9Ya05lYzJiSFp1OW0rMm9EWnV0bS8yYm5hcE5xbTJvVGFnOXFHMm9mYWpkcU0ybzdhaU5xWTJwSGFxZHF2MnJQYXNkcTYycnZiXFxcbmdOdUIycjdia3R1VDJxM2JoOXVHMjRqYmk5dUYyNG5ia05tSjJLYllwOWltMjVYWXB0bUkyS2JiaDlpbTI0YllwdHVJMktiYmtOaW0yWVxcXG5uYmpOaW0yS3pZcHRpdDJLYlpoZGltMllyWXFOaXMyS2pZcmRpbzJLN1lxTm1GMktqWmlkaW8yWXJZcXRpczJLcllyZGlxMks3WXF0bUZcXFxuMktyWmlkaXEyWXJZcTlpczJLdlpoZGlyMlluWXE5bUsyS3pZcmRpczJZWFlyZGlzMkszWmhkaXUyS3pZcnRpdDJLN1poZGl6Mkt6WXM5XFxcbml0MkxQWXJ0aXoyWVhZdGRpdDJMWFpoZGkyMkt6WXR0aXQyTGJZcnRpMjJZWFl0OWl0MkxmWmhkaTQyWVhZdWRpczJMblpoZGk2Mkt6WVxcXG51dG1GMllIWXJObUIySzNaZ2RpdTJZSFpoZG1CMlluWmdkbUsyWUxZcmRtQzJZWFpndG1KMllMWml0bUQyS2ZaZzlpczJZUFlyZG1EMktcXFxuN1pnOW1FMllQWmhkbUQyWW5aZzltSzJZVFlyTm1FMkszWmhOaXUyWVRaaGRtRTJZblpoTm1LMllYWXJObUYySzNaaGRpdTJZWFpoZG1GXFxcbjJZblpoZG1LMlliWXJObUcySzNaaHRpdTJZYlpoZG1HMlluWmh0bUsyWWZZck5tSDJZWFpoOW1KMllmWml0bUsyS3paaXRpdDJZcllydFxcXG5tSzJZWFppdG1KMllyWml0aXcyYkRZc2RtdzJZblpzQ0Raak5tUklObU4yWkVnMlk3WmtTRFpqOW1SSU5tUTJaRWcyWkhac05pbTJMSFlcXFxucHRpeTJLYlpodGlvMkxIWXFOaXkyS2paaHRpcTJMSFlxdGl5MktyWmh0aXIyTEhZcTlpeTJLdlpodG1GMktmWmh0aXgyWWJZc3RtRzJZXFxcbmJaaXRpeDJZcllzdG1LMlliWXB0aXUyS2JaaDlpbzJZZllxdG1IMkxYWXJ0bUUyWWZaaHRtSDJZZlpzTm1LMllmWXE5bUgyTFBaaDlpMFxcXG4yWVhZdE5tSDJZRFpqdG1SMllEWmo5bVIyWURaa05tUjJMZlppZGkzMllyWXVkbUoyTG5aaXRpNjJZbll1dG1LMkxQWmlkaXoyWXJZdE5cXFxubUoyTFRaaXRpdDJZbllyZG1LMkt6WmlkaXMyWXJZcnRtSjJLN1ppdGkxMlluWXRkbUsyTGJaaWRpMjJZcll0TmlzMkxUWXJkaTAySzdZXFxcbnROaXgyTFBZc2RpMTJMSFl0dGl4MktmWmk5aXEyS3paaGRpcTJLM1lyTmlxMkszWmhkaXEySzdaaGRpcTJZWFlyTmlxMllYWXJkaXEyWVxcXG5YWXJ0aXMyWVhZcmRpdDJZWFppdGl0MllYWmlkaXoySzNZck5pejJLellyZGl6Mkt6WmlkaXoyWVhZcmRpejJZWFlyTml6MllYWmhkaTFcXFxuMkszWXJkaTEyWVhaaGRpMDJLM1poZGkwMkt6Wml0aTAyWVhZcnRpMDJZWFpoZGkyMkszWmlkaTIySzdaaGRpMzJZWFlyZGkzMllYWmhkXFxcbmkzMllYWml0aTUyS3paaGRpNTJZWFpoZGk1MllYWmlkaTYyWVhaaGRpNjJZWFppdGk2MllYWmlkbUIySzdaaGRtQzJZWFlyZG1DMllYWlxcXG5oZG1FMkszWmhkbUUySzNaaXRtRTJLM1ppZG1FMkt6WXJObUUySzdaaGRtRTJZWFlyZG1GMkszWXJObUYySzNaaGRtRjJLM1ppdG1GMktcXFxuellyZG1GMkt6WmhkbUYySzdZck5tRjJLN1poZG1GMkt6WXJ0bUgyWVhZck5tSDJZWFpoZG1HMkszWmhkbUcySzNaaWRtRzJLelpoZG1HXFxcbjJLelppZG1HMllYWml0bUcyWVhaaWRtSzJZWFpoZGlvMks3Wml0aXEyS3paaXRpcTJLelppZGlxMks3Wml0aXEySzdaaWRpcTJZWFppdFxcXG5pcTJZWFppZGlzMllYWml0aXMySzNaaWRpczJZWFppZGl6Mks3WmlkaTEySzNaaXRpMDJLM1ppdGkyMkszWml0bUUyS3paaXRtRTJZWFpcXFxuaXRtSzJLM1ppdG1LMkt6Wml0bUsyWVhaaXRtRjJZWFppdG1DMllYWml0bUcySzNaaXRpNTJZWFppdG1EMllYWml0bUcyS3pZcmRtRjJLXFxcbjdaaXRtRTJLelpoZG1EMllYWmhkaXMySzNaaXRpdDJLelppdG1GMkt6Wml0bUIyWVhaaXRpbzJLM1ppdGl6Mks3Wml0bUcyS3paaXRpMVxcXG4yWVRia3RtQzJZVGJrdGluMllUWmhObUgyS2ZaZzlpbzJMSFpoZGl0MllYWXI5aTEyWVRZdWRtRjJMSFlzOW1JMllUWXVkbUUyWXJaaDlcXFxubUkyTFBaaE5tRjJMWFpoTm1KMkxYWmhObUpJTmluMllUWmhObUhJTmk1MllUWml0bUhJTm1JMkxQWmhObUYyS3paaENEWXJObUUyS2ZaXFxcbmhObUgyTEhiak5pbjJZUXM0NENCT2lFLzQ0Q1c0NENYNG9DVTRvQ1RYM3Q5NDRDVTQ0Q1Y0NENRNDRDUjQ0Q0s0NENMNDRDTTQ0Q040NFxcXG5DTzQ0Q1BXMTBqSmlvdFBENWNKQ1ZBSU5tTDJZRFppeURaakNEWmpTRFpqdG1BMlk0ZzJZL1pnTm1QSU5tUTJZRFprQ0Raa2RtQTJaRWdcXFxuMlpMWmdObVMyS0hZb3RpajJLVFlwZGltMktmWXFOaXAyS3JZcTlpczJLM1lydGl2MkxEWXNkaXkyTFBZdE5pMTJMYll0OWk0MkxuWXV0XFxcbm1CMllMWmc5bUUyWVhaaHRtSDJZalppdG1FMktMWmhOaWoyWVRZcGRtRTJLY2lKeTllZkg3aXBvWGlwb2JqZzd2amdxSGpncVBqZ3FYalxcXG5ncWZqZ3Fuamc2UGpnNlhqZzZmamc0UGpnN3pqZzdQamdwbmpncHJDb3NLandxekNwc0tsNG9LcDRwU0M0b2FRNG9hUjRvYVM0b2FUNHBcXFxuYWc0cGVMOEpDUXFQQ1FrS253a0pDcThKQ1FxL0NRa0t6d2tKQ3Q4SkNRcnZDUWtLL3drSkN3OEpDUXNmQ1FrTEx3a0pDejhKQ1F0UENRXFxcbmtMWHdrSkMyOEpDUXQvQ1FrTGp3a0pDNThKQ1F1dkNRa0x2d2tKQzg4SkNRdmZDUWtMN3drSkMvOEpDUmdQQ1FrWUh3a0pHQzhKQ1JnL1xcXG5DUWtZVHdrSkdGOEpDUmh2Q1FrWWZ3a0pHSThKQ1JpZkNRa1lyd2tKR0w4SkNSalBDUWtZM3drSkdPOEpDUmovQ1FrNWp3a0pPWjhKQ1RcXFxubXZDUWs1dndrSk9jOEpDVG5mQ1FrNTd3a0pPZjhKQ1RvUENRazZId2tKT2k4SkNUby9DUWs2VHdrSk9sOEpDVHB2Q1FrNmZ3a0pPbzhKXFxcbkNUcWZDUWs2cndrSk9yOEpDVHJQQ1FrNjN3a0pPdThKQ1RyL0NRazdEd2tKT3g4SkNUc3ZDUWs3UHdrSk8wOEpDVHRmQ1FrN2J3a0pPM1xcXG44SkNUdVBDUWs3bndrSk82OEpDVHUvQ1FzNER3a0xPQjhKQ3pndkNRczRQd2tMT0U4SkN6aGZDUXM0YndrTE9IOEpDemlQQ1FzNG53a0xcXFxuT0s4SkN6aS9DUXM0endrTE9OOEpDemp2Q1FzNC93a0xPUThKQ3prZkNRczVMd2tMT1Q4SkN6bFBDUXM1WHdrTE9XOEpDemwvQ1FzNWp3XFxcbmtMT1o4SkN6bXZDUXM1dndrTE9jOEpDem5mQ1FzNTd3a0xPZjhKQ3pvUENRczZId2tMT2k4SkN6by9DUXM2VHdrTE9sOEpDenB2Q1FzNlxcXG5md2tMT284SkN6cWZDUXM2cndrTE9yOEpDenJQQ1FzNjN3a0xPdThKQ3pyL0NRczdEd2tMT3g4SkN6c3ZDUm80RHdrYU9COEpHamd2Q1JcXFxubzRQd2thT0U4SkdqaGZDUm80YndrYU9IOEpHamlQQ1JvNG53a2FPSzhKR2ppL0NSbzR6d2thT044SkdqanZDUm80L3drYU9ROEpHamtmXFxcbkNSbzVMd2thT1Q4SkdqbFBDUm81WHdrYU9XOEpHamwvQ1JvNWp3a2FPWjhKR2ptdkNSbzV2d2thT2M4SkdqbmZDUm81N3drYU9mOEphNVxcXG5vUENXdWFId2xybWk4SmE1by9DV3VhVHdscm1sOEphNXB2Q1d1YWZ3bHJtbzhKYTVxZkNXdWFyd2xybXI4SmE1clBDV3VhM3dscm11OEpcXFxuYTVyL0NXdWJEd2xybXg4SmE1c3ZDV3ViUHdscm0wOEphNXRmQ1d1YmJ3bHJtMzhKYTV1UENXdWJud2xybTY4SmE1dS9DV3Viendscm05XFxcbjhKYTV2dkNXdWIvd25ZV1g4SjJGcGZDZGhaanduWVdsOEoyRm1QQ2RoYVh3bllXdThKMkZtUENkaGFYd25ZV3Y4SjJGbVBDZGhhWHduWVxcXG5XdzhKMkZtUENkaGFYd25ZV3g4SjJGbVBDZGhhWHduWVd5OEoyR3VmQ2RoYVh3bllhNjhKMkZwZkNkaHJud25ZV2w4SjJGcnZDZGhycndcXFxubllXbDhKMkZydkNkaHJud25ZV2w4SjJGci9DZGhycnduWVdsOEoyRnI4U3h5TGZpaUlmaWlJTHducVNpOEo2a28vQ2VwS1R3bnFTbDhKXFxcbjZrcHZDZXBLZnducVNvOEo2a3FmQ2VwS3J3bnFTcjhKNmtyUENlcEszd25xU3U4SjZrci9DZXBMRHducVN4OEo2a3N2Q2VwTFB3bnFTMFxcXG44SjZrdGZDZXBMYnducVMzOEo2a3VQQ2VwTG53bnFTNjhKNmt1L0NlcEx6d25xUzk4SjZrdnZDZXBML3ducVdBOEo2bGdmQ2VwWUx3bnFcXFxuV0QyYTdhb2Rtdk1Dd3hMRElzTXl3MExEVXNOaXczTERnc09TempnSlJ6NDRDVmQzcG9kbk5rY0hCMmQyTnRZMjFrYlhKa2F1T0J1K09CXFxcbmkrT0NzK09DcytXdGwrV1BqT09EaCtXa211aW5vK1M2cE9hWW9PZUVvZVdKamVXK2pPV0dqZWFXc09XSW5lZTFndWl5cWVXanNPV1F1ZVxcXG5hOGxPYUtsZWFObGVtQml1YU1oK2FKaytlbWdlZXB1dVdRaU9hNmdPZVVzK1dKc3VXV3R1bUZqZU9BbE9hY3JPT0FsZU9BbE9TNGllT0FcXFxubGVPQWxPUzZqT09BbGVPQWxPV3VpZU9BbGVPQWxPZUN1ZU9BbGVPQWxPYUprK09BbGVPQWxPZWJsK09BbGVPQWxPV0xuZU9BbGVPQWxPXFxcbmFWbCtPQWxlVytsK1dQcitTNHZlUzR1T1M1Z2ZDZ2hLTGt2YURrdnJ2bGdJTGxnYnJsZ3BubGc0L2prcDd3b0ppNjVZV1U1WVdrNVlXM1xcXG44S0NVbk9PU3VlV0ZwL0NnbFl2bGhwZmxocVRrdTR6bGhxendxWWVmNVlpRDQ1T2Y1WWk3NVltRzVZbTM0NVNWNVl5RjVZeUc1WTJKNVlcXFxuMmE1WTJ6NVkyOTVZMi84S0Nvck9lQnNPV1BpdVdQbi9DZ3JhUGxqNnZsajdIbGtJYmxrcDdsa0xqbGtZamxrYWpsa3FMbGs3YmxsSkRsXFxcbmxaUGxsYVBsbG9UbGxxdmxsclBsbDRMbG5KYmxuSmZsbVpIbG1iVGxvNjdsbjQ3bG43VGxvSTNsbm92bG9MTGxvTEhsb3F6d29aT2s1YVxcXG5PeTVhTzM1YVNHNWFTaTVhV2k4S0dhcVBDaG02cmxwNnpscUp2bHFLZmxwNWpscWFiam02N2xySWpsckw3d29hZUk1YStENWErWTVhK3pcXFxuOEtHc21PV3Z2K1d3aHVPZWdlV3hvT1d6Z09XeWpmQ2h0NlRsdFlQd29iZW01Yld1NWJXcjViVzg1YmVoNWJlaTQ2Q3Y1YmU5NWJpbzViXFxcbmk5NWJtcDQ2R2k4S0tHZytPaHZPVzZzT1c2cytXNnR2Q3FqcEx3b295eDZJaUI1YnlpNDZPSDhLT0t1UENtaDVybHZhTGx2YXZqbzZQbFxcXG52cHJsdjQzbHY1Zmx2N25tZ29IanBMcmpwSnp3b3B1VTVvT0g1b1dJNW9XTTVvVzY1b2F5NW9hazVvYXY1b2VlNW9pUTVvaWI1b21kNW9cXFxucXg1b3VVNW8yUThLS3NqT2FNdmVhTHZPYU5xT2FPZythUHBQQ2lyN0hta0tMbWo0WG1qcW5qcUs3bWthbm1rYjdta3AzbWtiZmpxYXptXFxcbmxhendvNENLNXBlajVwdTQ1cG1KNDZ5WjQ2eUk0NnVrNVlhUzVZYVY1cHlBNXBxYzZJS3Q1SStaNXB5aDVwMmU1cDJUOEtPUGcrT3RpZVxcXG5hZnV1YWVoZWFoa3ZDamthM21vbzdtb0ovbXBKVG1wWUxtcHFQbXA2cm1xcWp3bzVxajVxdWI0N0NZNXF5aDhLT2lwK2F0bE9PeGp1YXRcXFxuc3VhdW4rYXV1L0NqcW8zd29iU0w4S09ydXVheGp2Q2pzcnptc3IvbXM0M21zYWZtdEpibXRMN210YW5tdGJqbXRvWHdvN1NlNXJTMDVyXFxcbml2NXJtdTQ3U3o1cnVIOEtPN2tlYTN1ZWE5cnZDanZaN3dvNzZPNXIrRzU0QzU1NENiNDdhVzU0R0s1NEc5NTRHMzU0S3Q4S0NVcGVlRlxcXG5oZkNraWFQbmhwem5pS2puaVpEd3BKaUk1NHFBNTRxVjhLU2N0ZkNrb0pUbmpicm5qb3ZqdXF6bmpxWGp1cmpua1lmbmtaem5rb1huazRcXFxucmp2SnZubEtUd3BMQzI1NVMrOEtTeWt2Q2locC9ubUpEd3BMNmg4S1MrdVBDbGdZVGp2N3prZ0lqd3BZT3o4S1dEc3ZDbGhKbndwWVN6XFxcbjU1eWU1NXlmNTU2TDVJR0c1SUtXOEtXUW5lZWhqdVNEby9DbG1LYndwWnFhOEtXYmhlZW5xK1NFcitlcGl1ZXBqL0NscGJ6d3BhcW41SVxcXG5pQzhLV3VxK2V2aHVldmllU0lwL0Nsc29EbnM1TGtpcURuczZqbnM2UG50SUR3cGI2RzU3V2o1SXlCNTdlSDU3aUM1N21GNUl5MDhLYUlcXFxucVBDbWlZZmtqWm53cG91WjU3MjY4S2FNdnVlK2xlZS91dkNtazVyd3BwU2o2SUdnOEthV3FPaUJzUENqalova2o1WG9nckxvaElQa2tJXFxcbnZvaEw3bHFyWHdwcDZuOEthZXRmQ2pqcFB3bzQ2YzZJaUU2TDZlNUpHcjZJcVI2SXFMNklxZDVZcXo2SXF4NklxejZJcTk2SXVtOEthc1xcXG52T2lNbmVpTm8raU9yZWlNbytpT3ZlaVBwK2lOaytpUGl1aVBqT2lQblBDbXNMYndwcldyOEthemxlU1VxK2lUc2VpVHMraVVsdkNuajRcXFxucm9sYVR3cHJ5czVKV2Q1SldoOEthK3NmQ25nNUxrbGF2b21aRG9tYWZvbWFub21xbm9tb2pvbkk3b202TG9uS2pvbmF2b25vYm9uNkhvXFxcbm9JSGtsN25vb2FEd3A1bW42S09YNktPZTVKaTE2S082NDVLNzhLZWlydkNucGFia21yN2ttNGZvcXFEd3A3S282TEtyNkxPQjZMU2I2TFxcXG5XMzhLZThyL0Nnb0lUb3Q0dm90cnpvdDdEd29LT2U2THVVOEtpWGt2Q29sNjNwZ3BUcGc3SHBoSkh3cUp5dTZZU2I2WWk0Nll1WDZZdVlcXFxuNlltODZZKzU2WkNWOEtpdnV1bVdpK1NtbGVtV3QvQ290YmZrcDZicG00UGx0ckxwbktQd3FZV0Y4S21JbXVTcHJ1U3B0dW1mb1BDcGtJXFxcbnJrcXJMd3FaS1c2YUNwOEttV3R1bWpvdVNzcytta3FlbW1wK21uZ3VtbnZ1U3ZqdkNwckxEcHNZRHBzNzNrczQ3a3M2M3B0YWZ3cW9PT1xcXG41TE80OEtxRWhmQ3FpSTd3cW9xUjVMV1c2YnUrNmJ5RjZieVA2YnlXOEtxWWdBQUFBUUFrQXBjQkJBQUFBRzhBQkFDdkFBQUFBQUFFQUFcXFxuQUFBQUNJQUFvQUNBQUFBQUFBQUFBY0FFWUFBUUFOQUJzQUFBQVZBQklBUlFEc0FEWUFFQUFBQUFBQUFBQUNBQUFBbEFBQUFGY0FBQUFJXFxcbkFBTUFCd0FBQUJZQU9nQUNBQ01BQXdBRUFCd0FBUUFBQUVjQUVRQVhBQVFBR3dBQUFCTUFBQUFBQUFBQUFBQUJBQWNBQndBRUFDNEFBQVxcXG5BQUFDd0FBQUFBQUFNQUR3QUFBQUFBRXdBQUFBRUFBZ0FCQUFrQUFBQUFBQUFBQVFBQkFBQUFBZ0FDQUFNQUFnQWVBQUFBQ0FBUkFBRUFcXFxuQUFBRkFBQUFlUUFBQUFRQUV3QUFBQUFBQlFBQ0FBQUFCUUFCQUJVQUFRQUFBQU1BREFBQUFEVUFBd0FDQUFVQUJnQUFBQVVBQkFBQ0FCXFxcbndBQUFBQUFBQUFCQUFBQUFBQUFBQUpBQUlBQ1FBSEFBQUFCUUFBQUFnQUJ3QUFBQklBQ1FBQUFEa0FBZ0FKQUFBQUJBQUNBQUFBQUFBQVxcXG5BQUFBQUFBQUFBRUFJZ0FDQUFBQUd3QVRBQXdBRkFBR0FBUUFCUUFUQUFJQUFBQURBQVFBQWdBQUFCZ0FBQUFHQUFRQUFBQUFBQW9BQ2dcXFxuQUFBQUVBQUFBUEFCQUFBUUFBQUFBQUFBQUNBQThBQVFBRUFBSUFDZ0FMQUFrQUJBQUJBQUFBQ3dBQUFBTUFBQUFHQUFBQUJnQUFBQU1BXFxcbkJBQUFBQUFBQXdBQUFBQUFBUUFDQUJVQUFBQUFBQUFBRkFBYkFBQUFEQUFBQUFBQUNBQURBQXdBQUFBT0FBSUFBQUFEQUFBQUNnQUNBQVxcXG5ZQUFRQUFBQVFBQUFBQkFBWUFBZ0FEQUFJQUVBQUFBQThBQUFBQUFBQUFBd0FEQUFRQURRQUdBQUFBQUFBQ0FBQUFBQUFBQUJnQUNnQUdcXFxuQUFFQUFRQUlBQUFBQVFBQkFBY0FBQUFEQUFrQUVRQUZBQUVBQlFBREFCWUFCd0FGQUFRQUFBQUtBQVlBQXdBQUFBRUFBQUFIQUFBQUJnXFxcbkFBQUFVQVFRQUpBQUVBQ2dBQUFBVUFBZ0FSQUFzQUF3QUJBQUFBQUFBQkFBRUFBQUFDQUFBQUJnQVlBQU1BQUFBREFBQUFBZ0FBQUFJQVxcXG5BQUFBQUFBQUFBQUZBQUVBQUFBQUFBa0FBUUFBQUFBQUFnQUJBQUFBQVFBQ0FBRUFBQUFEQUFFQUFRQUJBQUFBQXdBTUFBRUFBd0FCQUFcXFxuQUFBZ0FBQUFBQUJRQUJBQVVBQUFBQkFBc0FCUUFBQUFBQUFBQUFBQUFBQUFBUEFBQUFBQUFDQUFjQUFBQUFBQUFBQUFBQUFBQUFBUUFBXFxcbkFBa0FDQUFBQUFBQUF3QURBQUVBQkFBREFBUUFCUUFDQUFBQUFBQUNBQVlBQVFBRkFBRUFBQUFEQUFZQUNBQUNBQUlBQmdBREFBQUFFQVxcXG5BR0FBWUFCUUFCQUFjQUFBQUNBQU1BQWdBQUFBQUFBQUFHQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFFQUNBQUJBQUFBQWdBQUFBRUFcXFxuREFBRUFBRUFBZ0FCQUFRQUFnQUZBQVFBQUFBREFBUUFBZ0FBQUFFQUF3QUhBQVlBQ0FBQUFBSUFBd0FBQUFJQUFnQUNBQVFBQUFBQUFBXFxcbllBQmdBR0FBd0FCUUFBQUFBQUFBQUJBQUlBQUFBREFBQUFDUUFEQUFJQUFRQUJBQWtBQVFBQUFBZ0FBUUFHQUFBQUF3QUFBQVVBQVFBQlxcXG5BQUFBQUFBQ0FBUUFBQUFDQUFBQUFnQUdBQVlBQWdBSUFBVUFCZ0FGQUFFQUJnQUNBQUFBQVFBQUFBQUFBd0FBQUFFQUNRQUZBQVVBRGdcXFxuQUFBQU1BQlFBQUFBQUFBUUFCQUFBQUFBQUFBQUFBQVFBRUFBQUFBZ0FFQUFZQUJRQUdBQUFBQUFBQkFBRUFBQUFBQUFVQUFnQUlBQWdBXFxcbkFRQUdBQUFBQVFBQUFBRUFBQUFJQUFBQUJBQUhBQW9BQVFBQUFBQUFBZ0FCQUFFQUFRQUFBQUVBQWdBQUFBSUFBUUFFQUFRQUFBQUFBQVxcXG5BQUJnQUFBQU1BQXdBQUFBQUFBQUFBQUFBQUFnQUJBQUVBQWdBQ0FBQUFCQUFDQUFFQUFBQUFBQUVBQUFBQkFBRUFBQUFDQUFJQUFnQUNcXFxuQUFBQUFRQUZBQVFBQVFBQUFBRUFBUUFBQUFBQUFRQUVBQUVBQWdBQkFBRUFBQUFBQUFBQUFBQUFBQUVBQUFBQkFBQUFBQUFFQUFFQUFnXFxcbkFBQUFFQURRQUVBQUFBQVFBRUFBQUFCUUFEQUFjQUF3QURBQU1BQWdBQUFBSUFBZ0FDQUFFQUFBQUJBQU1BQkFBQkFBQUFBUUFFQUFFQVxcXG5BQUFBQUFBQUFRQURBQUVBQUFBQUFBRUFCQUFCQUFnQUFnQUVBQUVBQVFBQkFBVUFBUUFFQUFFQUFRQUNBQVlBQUFBQUFBQUFBQUFDQUFcXFxuQUFBZ0FBQUFZQUF3QUJBQU1BQWdBREFBVUFCQUFCQUFBQUJRQUFBQUFBQVFBREFBQUFBZ0FBQUFFQUFRQUFBQUFBQUFBQkFBQUFBQUFBXFxcbkFBVUFCUUFJQUFBQUFBQUFBQUFBQmdBQUFBQUFBQUFBQUFJQUFnQUZBQUVBQUFBQkFBRUFBQUFDQUFJQUJ3QUJBQUVBQWdBQUFBSUFBZ1xcXG5BQkFBQUFBQUFCQUFBQUFnQUNBQUlBQkFBQkFBUUFBQUFDQUFJQUJBQUVBQUFBQ0FBRUFBWUFBZ0FCQUFFQUFBQUJBQUFBQUFBQUFBTUFcXFxuQmdBQkFBQUFBd0FDQUFFQUFBQUZBQVFBQUFBQUFBVUFBZ0FBQUFBQUFnQUFBQUFBQkFBREFBQUFDUUFGQUFJQUFBQUFBQUlBQUFBQkFBXFxcbmNBQUFBREFBRUFBZ0FCQUFBQUFBQUNBQU1BQUFBQ0FBTUFBUUFDQUFFQUFnQUFBQVFBQWdBQkFBRUFBUUFDQUFJQUFBQUVBQUlBQVFBQVxcXG5BQUFBQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFnQUFBQUVBQUFBQ0FBRUFBUUFBQUFJQUFBQUJBQUFBQUFcXFxuQUJBQUVBQUFBQkFBQUFBZ0FBQUFNQUFBQUJBQUVBQUFBQUFBRUFBZ0FCQUFJQUF3QUZBQU1BQVFBQUFBRUFBd0FIQUFBQUFBQUNBQUFBXFxcbkFnQURBQUVBNWtvREFPYjZMUURhK2gwQTNEa0RBT244SFFBSlRRb0E1dEFnQU9hVEJRRGM0QUlCNXZRY0FOeWlCUURtSnY0QUNVVWRBUlxcXG5uQ0JRRGM2Z1lBNW5XbUFOeE9Ed0htNjZnQTNESURBQWxOREFEbVFRY0EySEhSQWR3dC9nRG04aDBBNXQ0ZEFPYmhxQUFVdXdVQTV0VWRcXFxuQU9iT0NBRG1leG9BaEhRUEFPYm1xQUFmR1FZQUI4TVVBZVo1R2dEbVhRWUFIUEVJQU9ZZzRBSG04YWdBM1AwZEFPWWwvZ0RtUitrQjVuXFxcblVhQUFtNkRnRG1LdUFCRzBzR0FPYlpCZ0FKdGhZQjV1d2RBQWs2RGdEbVZBa0E1dWt0QU9hekdnRG04d2dBNXZjSUFPYmlxQURtQytBQlxcXG4zQ2orQUFIWUlBRG1zS29BM0UwUEFlWWxDQURtRVFZQTVyNnFBT1lnQ0FEbTZBZ0E1Z1lEQU9ia0xRQUpRUjhCQjhvUkFlYndMQURjMXhcXFxud0EzRG9LQWVZeDRRRUpPaEFBM0RzSEFPaFlBd0RtaHdRQTVyRWFBT1p3RXdIbTBCd0E1dTZvQU53OEF3RG0xU0FBNWhrSUFPWXdhd0VCXFxcbjgyb0JCN3dKQU9icEhRRG0yaDBBNW1zVEFlWXJDQUFKTkJjQTV0c2RBQTYwQlFEaWJkRUJBV25SQWVaTUF3RG04QzBBQVRjREFPWnpFd1xcXG5FSDZSSUIzTUFhQUFIcUlBRG1QZ01BZ1hFUEFBRm8wUUhtUmdNQTNOYm9BZHpRNkFIY0xQNEE1dUFjQU9icUNBRG0yeUFBNWpGckFlWTFcXFxuQndEYy9RNEIzSDdSQVFrMEdnSG1Id2dBNWh6Z0FlYmZIUURjNkNBQUNlMnJBT2JoSFFEY0ZnTUEzSUxSQWViWElBQWZUd1lBNXZVSUFBXFxcbmxORFFEbXlSb0FDYmtRQWVhOEdnRG1lcVlBNXFyUkFkenU1QUhtTU9FQjVwOEZBTjQ1R1FEbVZ3TUFDZUFaQVFid2J3SG1Nd2NBM0NuK1xcXG5BT2I0SEFBSmhBOEE1bVFEQU53WEF3RG1nd1FBNW13REFBdXhCUURtMGh3QTVnY0RBQ0ZSQmdEY01BTUEzQmtEQU54V0JnRG01QjBBM0ZcXFxuSUpBUEJGQXdEbThTMEEzRHNaQU9aWkJnRG1xd1VBNW5NYkFPYnhMQUFIdkFvQWdud1BBT1pxRXdIbTVLZ0E1dnNJQUF5eUJRRG1JZjRBXFxcbjV2c3RBT2dhQXdEY09BY0FBZE1nQU53cS9nRG1hUk1CZ25JUEFPYkNHZ0RjZTlFQjVvWVBBTW9uQXdEbXdCMEE1a2dQQVFsR0VBSG1heFxcXG5zQTNPWUlBT1kwNFFIbVFRTUE2UFlkQU9ic3FBRG1xOUVCNXV3R0FPYXU0Z0VQdFFVQTVzY2FBT1lDNEFIY3hnOEE1amJoQWViZkNBQWNcXFxuVEFZQTVsZ0dBT2JoQmdEbTV5MEEzTThJQU9ZQ0F3RGN4Qm9BNXIrcUFCTzVCUURjaTlFQkNTc1hBZWJ6TFFEY09RY0E1dUF0QU56Y0hBXFxcbkFKY0JBQjNDeXBBT1lqQ0FEbTh4MEE1bjJtQU54R0R3SG16QjBBNXR3R0FBbEhHZ0YydVE0QTVtc0RBT1plQmdEbStSd0E1dFlJQU9iZ1xcXG5DQURtYmhzQTV0Z0lBT1ltNEFIbVF3TUFBZGtnQU9aSTZRRVF0Z1VBNWhIZ0FlYm9IUURrOXgwQTV2d3RBQW1YSFFIbWhnUUE1c0VkQU5cXFxueVJCUUFKUkIwQkNjU29BQW1xR3dEYy93NEIzTzBHQU54V0F3RG03aDBBNXUwdEFCMU5CZ0FKMGhjQUNUd05BT1pGNlFFSndoUUI1Z01EXFxcbkFPYndwZ0RnTHpBQTVodmdBZVpvRXdFSlB4WUJBZU1jQU55akJRRGM3d2dBM0pZRkFPWW80QUhjVHc4QkNTeW9BTmh5MFFIbTd5d0E1a1xcXG5rUEFlYnFxQURjTEFNQUNUc05BT1lQNEFIYzdRZ0FDUlFYQU9hN0dnRGMwK2dCQnp3TEFPYWRCUURjNWdvQjV2c2RBQWJ4YndIbUtnZ0FcXFxuM080Z0FOemZIQURjM1J3QTNOSUlBT1pmRXdDQ2VnOEE1aEFHQUFsQ0ZBSG03aTBBNWw0VUFlWTlCd0RxWFFNQTVpLytBQWU4REFEbXh4XFxcbjBBNXVjR0FNb2hBd0RjcGdVQTV2Q29BQk82QlFEbTdDMEEzTzRJQUFIeWFnRVN4d1VBNWhJR0FPYWNCUUFIUWgwQjNMb2FBT2EwR2dEY1xcXG4wdWdCM0ZzSUFPWnlHd0RtQU9BQkNyQUZBTnpGQlFEY1J3OEI1bmdhQUFrMEVRRUhSaFFCNWlZTkFlYmNJQURtVUFNQWduMFBBTndmQXdcXFxuQUpPUkFBM05NSUFBZm1Hd0RjTVFjQTVoSURBT1lwQ0FEYytnZ0E1dXNIQU9iZEhRRFlaZEVCNXVrZ0FPWWU0QUhtTmVFQjV1MGRBRnRXXFxcbkRBRG1FdUFCNXVNdEFJSjdEd0RjM2h3QTVtMERBT2IwQ0FEYzFPZ0IzRHdIQU9aMEV3SG1yQVVBNXNnYUFPYnJMUURjSzZrQUIzTVJBUVxcXG5uQUVRRUJOZ01BZ29BUEFPYlVJQURjbXdVQTVnSGdBZVluQ0FBQk5BTUEyQnNEQUFIU0lBRG1BK0FCNXZBZEFOd2RBd0RtOUMwQTVuSVRcXFxuQWVZVUF3RGtxUmdBNW13VEFlYmxMUUFKTXhFQjVsMFRBT1ozR2dCbk9RNEE1aWNOQVFuTkRBRGNMUU1BNXBJRkFPYnZMUURteWdnQTV1XFxcbkV0QU9aWEJnRGNLd01BNXF3T0FlWUpBd0RtTUFjQTNGOEdBT1lVNEFIbTNnZ0E1djR0QU9ZemF3SG16UWdBM0NrREFCM3lDQUFIUEFrQVxcXG41a2NIQU54WkNBRG1OZ2NBNWpnS0FlWWRDQURjMVJ3QTVrTUhBTnhHQndEY21RZ0FJQm9HQUFIaUhBRG1BUU1BNWtUcEFlYUcwUUhtNEFcXFxuWUFCME1aQWR4VkF3QWVHQVlBNW0rbUFPYi9DQURtQUJFQjVqMERBTnpDSFFEbUZRWUE1a0lEQU9ZWEdnRG1aeE1CNXFzT0FlYnJCZ0RtXFxcbkgrQUJhMG9PQU53bEF3RGNTUU1BNWlQK0FPWjJBd0htL3kwQTJHL1JBZVlQQXdBSnF4c0E1dUl0QU9aQUJ3QUpQaGtCMkRrUEFOenZJQVxcXG5EbTVpMEE1b2ZSQWViU0hRRG1TZzhCNXRnR0FBYzBHd0RtNmkwQTVubW1BT2FFRHdIbWh3OEE2VjhEQU9ZQUF3RG03Z2NBNXZJdEFBbENcXFxuSHdIbU9nY0EzQjREQU9ZTjRBSFd6aDBBM0xjYUFOaHUwUUhtVWdNQTNQWUlBT1ozcGdEbWZCb0E1dWNJQU9ZeWF3SG0yUjBBM1BrZEFOXFxcbnpwQ0FEbVpoTUI1c1lhQUFIbkhBRG0wUndBNmw0REFBSDBhZ0htc0JvQTVrc0RBTnc3QXdBamNBWUE1bVlEQU9ZbERRSG0vZ2tBM0xTcVxcXG5BQW5OQ3dEbXlSMEFGcjBGQU56UUNBRG1GZ2dBM1AwQkFRYzhDZ0RjZk5FQjVqSUhBT1ltQ0FBSE94TUIzTmtjQU9ZZUNBRGNndzhCNWhcXFxuTURBTnovSFFEY2Y5RUJBV2ZSQVFsZ0dnRG1TZWtCM0EwS0FRazVHQUhjR1E4QTV1Y2RBQWxOQ3dEbW5BZ0E1djB0QU9abkF3QUp3S2tBXFxcbjVudW1BTnd6QXdEbW9RVUE1dXNJQU9ZSjRBSG03eDBBM0NRREFOd3IvZ0RjSi80QTVpUU5BZVliQ0FEbUNPQUI1aDNnQVFsVHFRRG0yd1xcXG5ZQVZGVU1BQWwvTFFEbTJod0FGYndGQU42YUJRRG1kcVlBNXZndEFPYldJQUFOc3dVQTNJSFJBZHpLR2dEbVV3a0F5aWdEQU9hZ0JRRG1cXFxubFFVQTV0VUlBT1lJQXdEbWRLWUE1Z3dEQU9aMkdnRG14aDBBNXVJR0FPWk1Ed0htOENBQTVzc0lBT1lQQ2dIbVhoTUE1bThiQU9heUdnXFxcbkRrK0IwQTNLb0ZBT2JsQ2dIbW53Z0E1Z3pnQVFIbElBRG0vQWdBSUZBR0FPYnNDQURtbUFnQTV1M2lBZWJYSFFCbk9BNEE1cDBJQU9aeFxcXG5Hd0RjV2dnQTVzVWRBT2FKMFFIbW42WUEzRWdEQU9iYkNBRG14QjBBM0NBREFPYmpxQURtUnVrQjJIRFJBUW4ycWdEbXpCb0E2bUFEQU5cXFxueS9HZ0Rtd1JvQTZDd3dBT2IzTFFCMnVBNEE1akxoQWViK0hRRG1Qd01BQWVzZ0FPWXRDQURjUndNQUJ6WVNBZWJ4cGdEbVNRY0E1dDBYXFxcbkFPYnhCd0RtRndZQTVzMGFBT2JtSFFEbTVBZ0E1bEVEQU9hZUNBRG1Fd1lBNnMwZEFOeFZCZ0RtNFNBQTNGd0dBTnk5R2dEY3VSb0E1blxcXG5pbUFBay9DZ0hjS2dNQTV1Mm9BTm9xTUFBQjJpQUE1ZzBEQU9Rck1BRG0xd2dBRy9BSUFPYmNDQUFSdHdVQUNRYW9BT2F0MFFIbTVBWUFcXFxuNXVBZEFONnRCUURtOFIwQTVnSVJBZHpWNkFIbURnTUE1dThIQU9id0J3RG1sd1VBNWlmZ0FlYnM0Z0hjSEFNQTZCVURBT2EzcWdEbUZnXFxcbllBNXZZdEFCZS9CUUFCT1FvQjVsTUdBTmhtMFFIbXhSb0E2bUVEQU9iNENBRGN3eG9BQnpjUUFBazFFZ0htYmdNQTVnVGdBZVlqNEFIbVxcXG5hQU1BNXRZZEFPWkVBd0RjUWdjQTVvVUVBQWU2RUFIYzJCd0FBZFFjQU9iK0NBRG05UzBBNWc3Z0FYckxEZ0FKVFFrQTV1c2RBQWM4RXdcXFxuSG03K1FCM0ZrREFPWVE0QUhtQkFNQTVxZ0ZBTnpXSEFEbXM2b0E1bkFiQU9ib0JnRGNMYWtBNXRrSUFPWTBhd0hjR0E4QTVnb0RBTnp0XFxcbklBRG83T1FCNXUvaUFlWkMwZ0hjVkFNQUFmRnFBZVpiQXdEbTR4MEEzRDRIQU9ZRjRBRUp2eFVCNXNnZEFPYUVCQURtSEFnQTVqUGhBUlxcXG5LNEJRRG1RQU1BNXBnRkFBR2V2QUhtM0IwQUI4QVZBZHpqQ0FBSlB4d0IzSVVQQWVsY0F3RG0yeHdBNXF6UkFkelI2QUhjdFJvQUNjb05cXFxuQU1vaUF3RGNTdzhCNXNNZEFOeGFBd0RtN0FjQUNlb1NBV3RMRGdEYy9RY0EzQzREQU9aYkJnRG1JdjRBNXRNZEFOeWFDQURtNktnQTNQXFxcbmtJQU9adkF3RG1iUnNBNXN3SUFBbE5Fd0htT2hrQUNKb3dBT1lnL2dEbTRoMEEzTzBjQU56K0RnSG1FK0FCNXRRSUFOeE9Bd0RtTldzQlxcXG41bm9EQVFsL0VBSG0zUWdBNXRFZEFBRTRBd0RtZktZQTVzNGFBT2FQNEFFSE9oZ0I1a1RTQWVZWTRBRUp6UW9BM0tVRkFCNU9CZ0FCNUJcXFxud0EzRGNQQU9aRkJ3QUhQQXdBSWxJR0FPWUZBd0RjT2dNQTV2VWRBT1lYNEFFQjZCd0FDVDBaQWViUklBRGNHQU1BNWlJSUFBZTNGZ0htXFxcbkVBTUE1aUVJQU9aNEF3SGNwQVVBNW9NUEFPYkJxZ0RLMEIwQTVvWFJBZHpSQ0FEbXJ3VUE1dVVkQUFpWk1BRG1aUU1BNWxFSkFPWnBBd1xcXG5EY1NBY0Flc2tPQU9ZWENBRG0yZ1lBNk8za0FRSGxIQURjTndjQTVoRURBTnpqQmdBSjh4c0EzSnNJQU9ZQkVRRVl3UVVBNXVndEFPWVVcXFxuQmdEbUx2NEE1bmtEQWR6UEhRRG1MQWdBM0M4REFBbEVHd0FKRlJjQTVzc2FBTnhzR3dCNnlnNEE1aFhnQVFIbUlBRG1KUDRBNWtQU0FlXFxcblloNEFGclNRNEFKQkVIQU9iZkJnQUhzNmtBNWxvR0FOeC9HZ0RtMmdnQTV1RUlBQW1aR2dIY2dORUI1dStvQU9iMEhRRG1kd01CNldJRFxcXG5BT2FVQlFBQk5RTUEzUElIQU55SzBRSG15eDBBNXFrRkFBSG1IQURjVFFNQWVzZ09BT2JYQmdEY2pSQUE1c1FGQU9acUF3RGNKZ01BNWdcXFxucmdBZWJncUFEY3B3VUE1dW9kQU9iV0JnRG01NmdBNWdzREFBSHdhZ0VITnh3QTRDNHdBR3RJRGdEbTJCMEEzTGdhQU53WUdnRG0rUzBBXFxcbkdoNzdBT1pqQXdEbVNnY0E1aVRnQWVhWkJRRG1uZ1VBNXZNSEFBbnlHd0RtR0FnQTV1bW9BT1kyYXdIY1VBOEI1dFFkQU9heXFnRG01YVxcXG5nQTNFUUhBT2FDRHdIZUxUQUEzREVEQU9hSTBRSG03UWNBNWdiZ0FlYTRxZ0RjVXdNQTVoYmdBZHpLSFFEbVB3Y0EzRFVQQU9hZXBnRGNcXFxuSXdNQTV1VUlBTnpzSUFEbTd1SUI1SzRGQU9aeEV3SG1LZUFCM0RRSEFOeTJHZ0RtNXlBQTNIM1JBZWI5Q0FBSnpRa0E1b0lQQU9aNkdnXFxcbkRtVkFZQUIwcnBBUUFBQUFBQUFBQUFYUUlEQUYwQUFBQUNBQWtBQkFDSEFBWUFOUUVCQUFBQUFBQUVBQU1BNFFCNEFBQUFBZ0FwQUFnQVxcXG5qd0FrQUFBQUFBQUFBREVBQUFBQUFHMEFBQUF6QUFFQVRBQUFBQUVBQUFBQUFBZ0FmQUFHQUV3QVJRQXFBQUlBQUFBQUFBQUFDZ0FBQUFcXFxuQUFXUUFBQUJBQUF3QUpBQTRBQmdBQkFBd0FFQUFBQUFBQUFBQTlBQUFBQUFBcUFBQUFBQUFCQUNBQUNnQUFBQUVBRGdBQ0FCQUFJZ0FBXFxcbkFHRUFBQUFFQUJVQUFBQUVBQU1BQUFBQUFBTUFBQUFOQUFFQUFRQWtBQU1BQkFBQUFBQUFHQUJZQUFBQUFBQUtBQmtBRUFBQUFBSUFBQVxcXG5BQUFCSUFGUUFBQUF3QUJ3QURBQUFBR2dBSEFBd0FBUUFGQUFRQUlRQUJBQUlBQUFBQUFBRUFDZ0FBQUFvQUFBQUVBQWtBQlFBTkFBVUFcXFxuQUFBREFBWUFKZ0FMQUFBQUJBQUdBQUFBRXdBQUFBQUFCQUFCQUFBQUFBQUFBQ1FBQVFBZEFBRUFBQUFBQUJBQUFBQUJBQUVBQVFBQUFBXFxcbkFBQ2dBQUFBMEFBQUFRQUFBQUJnQUZBQUFBQUFBSkFBTUFBUUFBQUFBQUFBQUFBQUlBQVFBQ0FBQUFBQUFXQUFFQUFnQUFBQUVBQUFBR1xcXG5BQUVBSlFBRkFBQUFDZ0FOQUFJQUFBQUJBQUFBQUFBU0FBQUFBQUFCQUFBQUFRQUFBQUVBQUFBRUFBa0FBQUFCQUFRQUFBQUVBQUVBQmdcXFxuQUxBQU1BQmdBSEFBQUFBQUFBQUEwQUR3QU9BQUFBQVFBQkFBUUFEd0FRQUFBQUJRQUFBQmtBQVFBT0FBQUFDQUFCQUFNQUFBQUFBQVVBXFxcbkFRQUFBQUFBRVFBQUFBUUFCUUFBQUFFQUFBQUFBQUFBQUFBQ0FBRUFBQUFBQUFJQUFRQUJBQVVBQ0FBQUFBQUFEQUFLQUFBQUJnQUpBQVxcXG5NQUFRQUdBQUVBQUFBYkFBRUFEZ0FBQUFnQUJRQURBQlVBQUFBQ0FBY0FDd0FEQUFBQUNnQURBQUFBQmdBQUFBb0FBQUFCQUFNQUNBQUFcXFxuQUFrQUFBQUJBQUlBQUFBRkFBQUFBUUFBQUFBQUFBQVhBQUFBQUFBQ0FBQUFCUUFXQUFBQUVBQURBQVFBRVFBQkFBTUFBQUFBQUFBQUJBXFxcbkFCQUFBQUJRQUFBQUlBQVFBQUFBSUFBQUFDQUFJQUFBQUFBQUFBQUFBQ0FBQUFFZ0FCQUFRQUNnQUxBQVFBQUFBQ0FBQUFBd0FBQUFRQVxcXG5CUUFBQUFBQUVRQUJBQVlBQmdBQUFBSUFBQUFCQUFBQUJBQUFBQUFBQVFBQkFBY0FBQUFEQUFvQUFBQUJBQW9BQWdBQUFBRUFBQUFBQUFcXFxuMEFCUUFCQUFFQUFBQUFBQVVBQmdBSUFBUUFCUUFBQUFzQUFBQUVBQXNBQUFBQUFBRUFCUUFBQUFzQUFBQUdBQUFBQUFBQUFBQUFBUUFBXFxcbkFBUUFBQUFHQUFBQUFBQUhBQk1BQkFBWkFBTUFBUUFBQUFFQUJnQUdBQUFBQUFBQUFBQUFEQUFDQUFNQUFBQUVBQUFBQVFBQUFBRUFCUVxcXG5BQkFBRUFBZ0FCQUFBQUFBQUFBQUFBQ1FBQUFBQUFCd0FCQUFrQUJnQUVBQUVBQlFBQUFBRUFBZ0FJQUFBQUNRQUFBQUFBQVFBREFBc0FcXFxuQUFBQkFBQUFBQUFGQUFBQUFBQUFBQUFBQUFBREFBQUFBZ0FCQUFJQUFBQUFBQUFBQkFBQkFBQUFCZ0FDQUFVQUNBQVNBQUFBQUFBQUFBXFxcbk1BQVFBQUFBQUFBQUFDQUFNQUF3QUFBQUFBQVFBQUFBRUFBQUFEQUFBQUFBQUNBQUVBQkFBTkFBQUFBQUFMQUFBQUFRQUFBQUFBREFBQVxcXG5BQUFBQUFBRkFBZ0FBZ0FBQUFJQUFRQUdBQUVBQVFBQkFBQUFBZ0FBQUFVQUFRQUJBQUFBQWdBQUFBQUFBQUFBQUE0QUVBQUFBQVVBQkFcXFxuQUNBQUVBQUFBQUFBTUFBUUFBQUFJQUFRQUVBQUFBQUFBREFBQUFBUUFCQUFNQUFRQUZBQUlBQXdBRUFBQUFBd0FEQUFZQUFBQUFBQUVBXFxcbkFBQUNBQTRBQVFBQ0FBRUFCQUFDQUFVQUFnQUJBQUVBQUFBQkFBQUFCUUFGQUFZQUJnQUZBQUFBQWdBQkFBQUFBZ0FFQUFFQUFBQUZBQVxcXG5BQUJnQUNBQWdBQUFBQUFBY0FBUUFDQUFJQUJRQUVBQkVBQUFBREFBQUFBUUFBQUFFQUJBQUFBQU1BQWdBQUFBRUFBd0FBQUFzQUJnQUFcXFxuQUFZQUFBQUVBQUVBQWdBQUFBRUFBQUFDQUFFQUFnQUFBQVVBQVFBQUFBQUFBQUFCQUFNQUFnQUdBQUFBQUFBQ0FBUUFCZ0FBQUFBQUFBXFxcbkFBQUF3QURBQUFBQUFBQUFBRUFBUUFBQUFJQUFNQUFRQUFBQUVBQUFBREFBQUFBQUFGQUFBQUJRQUJBQUFBQXdBRUFBRUFBZ0FEQUFBQVxcXG5BUUFIQUFBQUFBQUhBQUFBQWdBQ0FBQUFBQUFCQUFFQUFRQUJBQXNBQUFBRUFBQUFBUUFCQUFBQUFnQUJBQUVBQlFBQUFBQUFBd0FHQUFcXFxuQUFBQUFFQUFJQUFRQURBQU1BQ2dBSEFBQUFCQUFCQUFZQUFBQUJBQUFBQUFBQ0FBRUFBUUFBQUFBQUFBQUFBQUFBQWdBQkFBRUFBUUFFXFxcbkFBQUFBd0FBQUFFQUFBQUFBQUVBQUFBQkFBQUFCQUFBQUFFQUFBQUdBQUFBQVFBQUFBUUFBQUFCQUFJQUJnQUFBQUlBQUFBREFBY0FBQVxcXG5BREFBQUFBUUFCQUFBQUFBQURBQVVBQWdBQUFBRUFBUUFDQUFJQUJBQUJBQUFBQUFBQkFBQUFBd0FDQUFBQUFRQUFBQUlBQkFBQ0FBQUFcXFxuQVFBRkFBQUFBQUFDQUFFQUFRQUFBQUFBQVFBQUFBVUFBZ0FBQUFnQUF3QUJBQUVBQVFBREFBUUFBQUFDQUFBQUFRQUNBQUFBQUFBQUFBXFxcbkFBQUFBQkFBQUFCZ0FBQUFBQUFBQURBQUFBQUFBQ0FBSUFBQUFCQUFNQUFRQURBQUVBQWdBQUFBRUFBZ0FBQUFBQUFRQUFBQU1BQVFBQ1xcXG5BQUFBQWdBQkFBQUFBZ0FFQUFBQUJRQUZBQUFBQlFBQ0FBQUFBUUFEQUFFQUFBQUNBQVlBQWdBQkFBQUFBQUFBQUFNQVZBWktCaVlHQUFcXFxuQUpBMmtBeVI0QUFBWURaUUFWQVFBQUN3TWpCUElFQUFBTUEwY0E1Z0VBQUFFRFZ3Q0NIZ0FBQVFQRkFQb0JBQUE0QTlJaHp5RUFBQWNEXFxcblF3QUtBUUFBQndONkFId0JBQUFNQTBrQXp3RUFBQWNEY2dCWkhnQUFtVEJMTUV3d0FBQkZBMkVmb1I4QUFBY0RRUUFtQWdBQUl3TnJBRFxcXG5NZUFBQUVBNWtEMlI4QUFBRURTUjlOSHdBQVFnUEtBOWNmQUFBRUExVUFhZ0VBQUpvdzJ6RGRNQUFBUlFOdUg2NGZBQUF4QTBJQUJoNEFcXFxuQUFnREhnVG1CQUFBSlFOQkFBQWVBQUF4QTFJQVhoNEFBRVVEOWgvM0h3QUFPQU55SW5RaUFBQTRBMGdpU1NJQUFBRUR2eC9PSHdBQW1UXFxcbkRHTU1jd0FBQWpBM1lBZng0QUFBY0RjQUJYSGdBQUFRTlJIMVVmQUFBb0EzVUFjd0VBQUprd1d6QmNNQUFBQ2dOQkFNVUFBQUFqQTZFQlxcXG40eDRBQUJFRFZRQVdBZ0FBQndOVEFHQWVBQUFNQTl3QTJRRUFBQUFEVHdEU0FBQUFCd052QUM4Q0FBQUJBMGNBOUFFQUFBa0RZUUNqSGdcXFxuQUFBUU1JSHd3ZkFBQUJBN2tEcndNQUFBRURNd1JUQkFBQVJRTWdINUFmQUFBSEEySUFBeDRBQUVVREF4K0RId0FBQ0FOWEFJUWVBQUFIXFxcbkExb0Fld0VBQUprd3dURENNQUFBQ1FPaEFkOGVBQUJWQmljR0pRWUFBQlFEdndOQkh3QUFBUU5uQVBVQkFBQUJBNThEakFNQUFBRUQ2Z1xcXG5DL0hnQUFEQU5qQUEwQkFBQkZBd0FmZ0I4QUFBRURFd1FEQkFBQUl3TkxBREllQUFBQkEza0EvUUFBQUFFRGR3Q0RIZ0FBUlFNT0g0NGZcXFxuQUFBSUEwZ0FKaDRBQUprd3BqRDBNQUFBQUFNQ0FiQWVBQUFCQTJ3QU9nRUFBQWtEUlFDNkhnQUFBUU01SHowZkFBQVJBMmtBQ3dJQUFBXFxcblFESXdUdUJBQUFEQU5oQU00QkFBQUFBeEFmRWg4QUFBQURPQVJkQkFBQUl3TklBQ1FlQUFBMUd4RWJFaHNBQUFFRFF3QUdBUUFBSXdOVVxcXG5BR3dlQUFBREEwa0FLQUVBQUFJRG9SNnRIZ0FBQ0FNMUJGRUVBQUFIQTJFQUp3SUFBQUFEQUI4Q0h3QUFCd050QUVFZUFBQURBM1lBZlJcXFxuNEFBQ2NEY3dCZkFRQUFCQU5IQUNBZUFBQUdBMGNBSGdFQUFFVURiUit0SHdBQUF3TnZBUFVBQUFBeEEyc0FOUjRBQURFRGNnQmZIZ0FBXFxcbkFBT3dBZXNlQUFBMUd3c2JEQnNBQUMwRFZRQjJIZ0FBQ2dOaEFPVUFBQUNaTUVZd2xEQUFBRFViT2hzN0d3QUFDZ05WQUc0QkFBQThDU1xcXG5nSktRa0FBQk1EeVFOZ0h3QUFNQU5sQUJzZUFBQURBMWtBK0I0QUFEQURSUUFhSGdBQU1RTmtBQThlQUFBSUE3a0R5Z01BQUprd25UQ2VcXFxuTUFBQUN3TkRCUE1FQUFBK0MwY0xTd3NBQUE4RGJ3QU5BZ0FBSXdOdUFFY2VBQUFJQTJrQTd3QUFBQzBEWlFBWkhnQUFCd05hQVdRZUFBXFxcbkFCQXhnZkhCOEFBQUVEQ1I4Tkh3QUFSUU1uSDVjZkFBQUNBM29Ba1I0QUFBRURXUURkQUFBQU1RTk1BRG9lQUFCRkEyUWZwQjhBQUFJRFxcXG51UjdISGdBQVJRTWtINVFmQUFBQUF4TUJGUjRBQUE4RGFRQUpBZ0FBTVFOMEFHOGVBQUFCQTBnZlRCOEFBREVEZWdDVkhnQUFSUU1wSDVcXFxua2ZBQUFCQTlRQTBCNEFBQVFEeEFEZUFRQUFBUU9YQTRrREFBQU1BM0lBV1FFQUFBRURFUjhWSHdBQUNRUDBBTlVlQUFBbkEwVUFLQUlBXFxcbkFCc0Rid0NoQVFBQUJBUEdBT0lCQUFBSUE1a0RxZ01BQUVVRHpnUDBId0FBQVFOdEFEOGVBQUFKQXdNQnN4NEFBQUlEYndEMEFBQUFEQVxcXG5OekFHRUJBQUFCQTNVQStnQUFBQUVEYVI5dEh3QUFBUU9wQTQ4REFBQTRBejBBWUNJQUFFVUR4aC9ISHdBQUFBTjNBSUVlQUFBR0F5Z0NcXFxuSEI0QUFERURiQUE3SGdBQW1UQ3RNSzR3QUFBQ0E3Z2V4aDRBQUFJRFZRRGJBQUFBenczWkRkd05BQUFFQTZVRDZSOEFBQlFEcVFOcEh3XFxcbkFBSndOMEFHTUJBQUFtQTFNQUdBSUFBQXNEVlFCd0FRQUFtakJ2TUhFd0FBQW5BMnNBTndFQUFEQURkUUIxSGdBQUFRTnpBRnNCQUFCQ1xcXG5BekFmTmg4QUFBY0RSd0FnQVFBQTFRekdETWNNQUFBQUEya2ZheDhBQUFFREF3R3ZIZ0FBRVFOMUFCY0NBQUE4Q1RBSk1Ra0FBSmt3WVRcXFxuQmlNQUFBSXdOM0FJa2VBQUFCQS9VQVRSNEFBQUFEL0FEY0FRQUFEd05KQUFnQ0FBQUNBMmtBN2dBQUFFVURJeCtUSHdBQUFBUDBBTk1lXFxcbkFBQUlBMHNFK1FRQUFFVURMaCtlSHdBQUFBTmxBT2dBQUFBSUEwa0F6d0FBQUFFREtCOHNId0FBQUFNWUh4b2ZBQUJUQmljR0lnWUFBQVxcXG5FRElCOGtId0FBT0FNRElnUWlBQUFFQTNrQU13SUFBQUFET1I4N0h3QUFKUU5oQUFFZUFBQUpBM2tBOXg0QUFBTURyd0h1SGdBQUFRTnZcXFxuQVBNQUFBQWpBMlFBRFI0QUFKa3dUekJRTUFBQVJRTUJINEVmQUFBSkE4b0F3aDRBQUFnRDBnUFVBd0FBQVFOUUgxUWZBQUFBQXdFZkF4XFxcbjhBQUVVRHFRUDhId0FBQ0FNbkJQUUVBQUFDQTFNQVhBRUFBQUVEVWdCVUFRQUFCZ05GQUJRQkFBQWpBMU1BWWg0QUFBWURad0FmQVFBQVxcXG5PQU4ySW5naUFBQUFBelVFVUFRQUFKa3d0VEMyTUFBQUN3TnZBRkVCQUFBRUF4Z0U0Z1FBQUFjRFl3QUxBUUFBQVFQU0E5TURBQUE0QTNcXFxud2k0Q0lBQUFRRFlRQUJBUUFBQUFPb0FPMGZBQUF4QTBRQURoNEFBQkVEWlFBSEFnQUFBUVA0QVA4QkFBQU1BM1VBMUFFQUFDY0RVd0JlXFxcbkFRQUFtVEJYTUZnd0FBQkZBN2NEd3g4QUFBd0RhUURRQVFBQUp3TnVBRVlCQUFBSEEzZ0FpeDRBQUVJREFCOEdId0FBQXdPd0FlOGVBQVxcXG5BbkEwY0FJZ0VBQUFrRHdnQ29IZ0FBTFFOc0FEMGVBQUNaTUUwd1RqQUFBQU1EYVFBcEFRQUFJd092QWZBZUFBQUNBMDhBMUFBQUFBRURcXFxuQWdHdUhnQUFDQU5IQlBVRUFBQTRBNmdpclNJQUFBQUR4UU42SHdBQUV3T1JBd2dmQUFBdEEyUUFFeDRBQUFFRHp3QXVIZ0FBRHdOaEFBXFxcbkVDQUFBR0E2RWV0eDRBQUNNRGVRRDFIZ0FBT0FPUUlab2hBQUJGQXlVZmxSOEFBQVFEVHdCTUFRQUFCZ05QQUU0QkFBQ1pNTE13dERBQVxcXG5BQ2NEUkFBUUhnQUExd3VTQzVRTEFBQUlBMVVBM0FBQUFDTURaUUM1SGdBQW1UQjdNSHd3QUFBTUEwOEEwUUVBQUFRRFp3QWhIZ0FBREFcXFxuTnFBUEFCQUFBakExVUE1QjRBQUFFRG9RSGJIZ0FBSXdOWkFQUWVBQUFBQTBFQXdBQUFBSmt3dVRDNk1BQUFDQU1qQlBBRUFBQUJBMU1BXFxcbldnRUFBSm93MkREYU1BQUFDUU4xQU9jZUFBQXdBMVVBZEI0QUFDY0RVZ0JXQVFBQUNBTTNCTjhFQUFBQUE4b0F3QjRBQURnRGxDR3VJUVxcXG5BQUJnT3hBN0FmQUFCQ0EyRWZaeDhBQURnRFBDSkJJZ0FBbVREU01OTXdBQUJGQTJzZnF4OEFBQWNEU1FBd0FRQUFJd05CQUtBZUFBQUpcXFxuQTFVQTVoNEFBQXNEZFFCeEFRQUFtVEJUTUZRd0FBQ1pNRjB3WGpBQUFDTURUQUEySGdBQUJBTW1BdUFCQUFBUEEzVUVkd1FBQUNnRFNRXFxcbkF1QVFBQUFBTWhIeU1mQUFBQkEyRWZaUjhBQUVJRElSOG5Id0FBQWdObkFCMEJBQUFCQTA0QVF3RUFBQU1EVGdEUkFBQUFBQU9aQTlvZlxcXG5BQUFCQTc4RHpBTUFBQUFERlFRQUJBQUFGQVBKQTJFZkFBQTRBNklpckNJQUFKa3cyekRjTUFBQUZBT2xBMWtmQUFBUEExSUFFQUlBQUNcXFxuTURUZ0JHSGdBQVJRTU5INDBmQUFBQ0E4MGUyUjRBQUF3RC9BRGFBUUFBQkFQV0FDb0NBQUFCQXdBZkJCOEFBSmt3enpEUU1BQUFCZ00xXFxcbkJOY0VBQUE0QXdzaURDSUFBQUFEV1FEeUhnQUFDQU1YQk40RUFBQU1BMjRBU0FFQUFBd0RUQUE5QVFBQUFRTnBBWGtlQUFBSUF4QUUwZ1xcXG5RQUFBRURvQUhhSGdBQUR3TkJBQUFDQUFBQkEzSUFWUUVBQUFNRFJRQzhIZ0FBTlJzTkd3NGJBQUFCQXhJQkZoNEFBQUlEU2dBMEFRQUFcXFxuQUFPL0EzZ2ZBQUNaTUZrd1dqQUFBQXNEVHdCUUFRQUFLQU5oQUFVQkFBQ1pNTmd3MlRBQUFFVURLeCtiSHdBQUFRTkFIMFFmQUFBUEEyXFxcblVBQlFJQUFFVURyZ1BFSHdBQUFRTm9BWGdlQUFBbUEzUUFHd0lBQUVJRHVRUFdId0FBUlFOdkg2OGZBQUFCQTZVRGpnTUFBRVVEQ1IrSlxcXG5Id0FBQUFOVkFOa0FBQUFNQTBFQXpRRUFBQ2NEUXdESEFBQUFCd05HQUI0ZUFBQUJBN1VEclFNQUFENE5SdzFMRFFBQUVRTmhBQU1DQUFcXFxuQUlBOVVBVGg0QUFBQUR5UU44SHdBQUJnTkRCRjRFQUFBQkEvNGYzaDhBQUFFRG1RT0tBd0FBQndONUFJOGVBQUFFQTFvZVhCNEFBQThEXFxcbmRRQVZBZ0FBdmduSENjc0pBQUExR3djYkNCc0FBREFEYVFBdEhnQUFtakI3TUgwd0FBQ1pNTWd3eVRBQUFEZ0RzeUxySWdBQUFRT3dBZVxcXG5rZUFBQUFBM2tBOHg0QUFBY0RWd0NHSGdBQUtBTnBBQzhCQUFBakExb0FraDRBQUVJRHhRUG1Id0FBQ1FOUEFNNGVBQUJDQXlrZkx4OEFcXFxuQUFBRG9BSGNIZ0FBUlFNcUg1b2ZBQUFCQTAwQlV4NEFBRGdEMENITklRQUFLQU5WQUhJQkFBQXhBMmdBbGg0QUFBd0RhQUFmQWdBQUFRXFxcbk5NQURrQkFBQTRBNFlpaUNJQUFCUURud05KSHdBQUJnT2xBK2dmQUFCV0MwY0xTQXNBQUprd2RUQjJNQUFBQkFOYkhsMGVBQUJGQTJvZlxcXG5xaDhBQUNjRFZBQmlBUUFBQXdNQ0FiUWVBQUFUQTU4RFNCOEFBRUlEQ1I4UEh3QUFCZ01RQk5BRUFBQUFBMDBCVVI0QUFBUURRd1R2QkFcXFxuQUFPQU9TSVpzaEFBQTRBMkVpWWlJQUFBUUQ5UUF0QWdBQUV3TzVBekFmQUFBSUEyOEE5Z0FBQUFjRGN3QmhIZ0FBR3dOMUFMQUJBQUNaXFxcbk1MY3d1REFBQUFjRFloNW9IZ0FBQmdOQkFBSUJBQUFVQTVjREtSOEFBQUlEWXdBSkFRQUFBZ05xQURVQkFBQUJBK1VBK3dFQUFDWURjd1xcXG5BWkFnQUFSUU4wSDhJZkFBQUpBMlVBdXg0QUFBd0RXZ0I5QVFBQU9BTWxJaVlpQUFBVEE2a0RhQjhBQUNjRGNnQlhBUUFBQUFNSkh3c2ZcXFxuQUFBSUF6WUUzUVFBQUVVRENCK0lId0FBTVFOaUFBY2VBQUE0QTNNaWRTSUFBQ01EVmdCK0hnQUFJd05QQU13ZUFBQUVBeTRDTUFJQUFGXFxcblFHMVFiQUJnQUFFd094QXdBZkFBQURBMDhBMVFBQUFBRURBUjhGSHdBQUJBTmxBQk1CQUFBakEwVUF1QjRBQUw0THhndktDd0FBT0FObFxcXG5JbkVpQUFBVUE1RURDUjhBQUFBREVnRVVIZ0FBQndOT0FFUWVBQUFJQTJnQUp4NEFBQkVEVHdBT0FnQUFBd05WQUdnQkFBQVVBNkVEN0JcXFxuOEFBQUVEc1FPc0F3QUFEd05WQUJRQ0FBQTRBejRBYnlJQUFBY0RZUUZuSGdBQVJRTUVINFFmQUFBQUEwVUF5QUFBQURVYkNSc0tHd0FBXFxcbm1URDlNUDR3QUFBQkEyZ2ZiQjhBQUFNRFpRQzlIZ0FBQkFPNUE5RWZBQURYQ2NjSnpBa0FBQWdES3dUNEJBQUFKd05PQUVVQkFBQkZBMlxcXG5NZm94OEFBQVlET0FRNUJBQUFGQU94QXdFZkFBQW1BMVFBR2dJQUFBY0RkQUJySGdBQUFRUEpBODREQUFBVUE1a0RPUjhBQUprd3NUQ3lcXFxuTUFBQUFnTjFBUHNBQUFEV0RNWU15QXdBQUprd3ZUQytNQUFBQUFOdUFQa0JBQUJDQXprZlB4OEFBQVFESndMaEFRQUFPQU1JSWdraUFBXFxcbkFHQXhnRUdRUUFBQXdEUkFBT0FRQUFDZ04xQUc4QkFBQlVCaWNHSXdZQUFBWURkUUJ0QVFBQUFBTzNBM1FmQUFCRkEyWWZwaDhBQUVVRFxcXG5hUitwSHdBQUJ3TmJBV1VlQUFCQ0F5Z2ZMaDhBQUVVRGNCK3lId0FBUlFNUEg0OGZBQUF4QTFRQWJoNEFBRGdEZXlLQklnQUFPQU9ISW9cXFxua2lBQUJDQXdFZkJ4OEFBQWdEcFFPckF3QUFSUU5sSDZVZkFBQUFBOVFBMGg0QUFBUUQ5Z0FyQWdBQTFReS9ETUFNQUFCQ0F6Z2ZQaDhBXFxcbkFEZ0RzaUxxSWdBQUR3TnlBQkVDQUFDWk1MOHd3REFBQUFnRDZRVHJCQUFBT0FPRElvVWlBQUFBQThzRDRoOEFBQUVEeWdDK0hnQUFCQVxcXG5OWkFESUNBQUFCQTJrQTdRQUFBSmt3WHpCZ01BQUFCd05FQUFvZUFBQUNBOHdlMkI0QUFFVURJUitSSHdBQUVRTkJBQUlDQUFBUkEzSUFcXFxuRXdJQUFBQURwUVBxSHdBQUFBTlpIMXNmQUFBRUErUUEzd0VBQUFBRFVCOVNId0FBT0FOTkltMGlBQUFCQTI0QVJBRUFBQzBEZFFCM0hnXFxcbkFBQVFQMEFORWVBQUJDQThrRDloOEFBQUVEdHdPdUF3QUFCd051QUVVZUFBQUVBMEVBQUFFQUFBRURHUjhkSHdBQUJBT3hBN0VmQUFDYVxcXG5NSGd3ZWpBQUFDTURWd0NJSGdBQUNBTkRCUEVFQUFBdEEwVUFHQjRBQUFnREZRUUJCQUFBS0FOUEFPb0JBQUFJQTlrRTJ3UUFBQWdEQmdcXFxuUUhCQUFBQXdQMEFOY2VBQUFHQTdrRDBCOEFBQWNEWlFBWEFRQUFRZ05vSDI0ZkFBQUVBemdFNHdRQUFBQURRUjlESHdBQUFBUCtIOTBmXFxcbkFBQUJBMDhBMHdBQUFDY0RaQUFSSGdBQUJnTXBBaDBlQUFBQkEzb0FlZ0VBQUNNRFlnQUZIZ0FBUlFOOEgvSWZBQUFqQTdBQjhSNEFBQVxcXG5FRFlCOWtId0FBbVRCbU1HY3dBQUE0QTJRaWNDSUFBQUFETVI4ekh3QUFJd05oQUtFZUFBQUFBMGdmU2g4QUFBRURWUURhQUFBQVZneEdcXFxuREVnTUFBQUFBOG9EMGg4QUFBd0R0d0h1QVFBQUl3TnlBRnNlQUFCQ0F5QWZKaDhBQUFnRE1BVFRCQUFBT0FPQ0lvUWlBQUFCQTFrZlhSXFxcbjhBQUVJRENCOE9Id0FBSXdORUFBd2VBQUF1RUNVUUpoQUFBQVFEa1FPNUh3QUFNUU5MQURRZUFBQUFBMmtBN0FBQUFDNERTQUFxSGdBQVxcXG5BUU5qQUFjQkFBQkNBMmtmYng4QUFCTUR0UU1RSHdBQW1qRFBNTkV3QUFBTUEwNEFSd0VBQUZjTFJ3dE1Dd0FBQVFPUkE0WURBQUFvQTJcXFxuVUFHUUVBQUFBRHZ4L05Id0FBUWdPM0E4WWZBQUFIQTBVQUZnRUFBQUVET0I4OEh3QUFtakIxTUhjd0FBQUJBMHNBTUI0QUFBQURBd0d4XFxcbkhnQUFBd1BpQUtzZUFBQUNBMEVBd2dBQUFBZ0RaUURyQUFBQUJ3TllBSW9lQUFBTUExUUFaQUVBQUJNRHhRTlFId0FBRkFPMUF4RWZBQVxcXG5BMUd6NGJRQnNBQUFFREVCOFVId0FBbWpCeU1IUXdBQUJGQXlnZm1COEFBRGdEZHlKNUlnQUFPQU42SW9BaUFBQUNBMGNBSEFFQUFBZ0RcXFxuUlFETEFBQUFKQU5WQUhJZUFBQkZBeXdmbkI4QUFDY0RTd0EyQVFBQUFnTkpBTTRBQUFBQ0EyZ0FKUUVBQUFjRFVnQllIZ0FBQVFOaEFPXFxcbkVBQUFBTUEwc0E2QUVBQUFrRFNRRElIZ0FBREFOc0FENEJBQUFIQTAwQVFCNEFBQVFETmg0NEhnQUFCQVBGQStFZkFBQUtBM2tBbVI0QVxcXG5BQk1EbHdNb0h3QUFMUU5VQUhBZUFBQUFBMGtmU3g4QUFEVWJRaHRER3dBQUV3TzNBeUFmQUFBQkErOEFMeDRBQUFFRDV3QUpIZ0FBQ0FcXFxuTnFBWG9lQUFBREE4b0F4QjRBQUFBRHNRTndId0FBVkFiU0J0TUdBQUNaTU5VdzFqQUFBRVVETHgrZkh3QUFBQU8xQTNJZkFBQWtBM1VBXFxcbmN4NEFBQVlERlFUV0JBQUFEQU5sQUJzQkFBQUNBMWNBZEFFQUFBWURvQjYySGdBQVJRTUhINGNmQUFBQkE2Z0FoUU1BQUFJRGVRQjNBUVxcXG5BQUxRTnVBRXNlQUFBTUEyOEEwZ0VBQUVVRHlRUHpId0FBQWdOREFBZ0JBQUFEQTNrQStSNEFBQ01EZEFCdEhnQUFDUVBpQUtrZUFBQUFcXFxuQXpBZk1oOEFBQUVEYXdBeEhnQUFPQU9TSXVNaUFBQVVBNVVER1I4QUFBRURLUjh0SHdBQUtBTkZBQmdCQUFCRkE3WWZ0eDhBQUFRRDFRXFxcbkFzQWdBQUJnTXdCTkVFQUFBSUEvVUFUeDRBQUFJRG9CNnNIZ0FBQUFOb0gyb2ZBQUFBQTVjRHloOEFBQUVEUlFESkFBQUFCQU5wQUNzQlxcXG5BQURYQzhZTHpBc0FBQVFEYndCTkFRQUFDQU5QQU5ZQUFBQytDOGNMeXdzQUFBd0RWUURUQVFBQVJRT3NBN1FmQUFCQ0E3OGZ6eDhBQUpcXFxub3cwakRVTUFBQUJ3Tm1BQjhlQUFBQUEwNEErQUVBQUFnRGVRRC9BQUFBTGdOb0FDc2VBQUFNQTJRQUR3RUFBQWNEVHdBdUFnQUFRZ05aXFxcbkgxOGZBQUNaTUs4d3NEQUFBQVFENWdEakFRQUFBUVBGQTgwREFBQUlBM2NBaFI0QUFCUUR1UU14SHdBQUl3TjFBT1VlQUFBSkExa0E5aFxcXG40QUFBd0RrZ0x2QVFBQUJnTlZBR3dCQUFBQkErWUEvUUVBQUFnRGF3RjdIZ0FBRHdOUEFBd0NBQUFUQTc4RFFCOEFBQUVEMkFEK0FRQUFcXFxuQXdQQ0FLb2VBQUFBQTFFZlV4OEFBQWtEc0FIdEhnQUFMUU5PQUVvZUFBQUpBMjhBeng0QUFBQURHQVFOQkFBQU9BT3BJcTRpQUFCRkEyXFxcbmdmcUI4QUFEVWJQQnM5R3dBQUFBTkFIMElmQUFCRkF3c2ZpeDhBQUFZRHhRUGdId0FBTFFORUFCSWVBQURWRE1vTXl3d0FBQU1ENmdERlxcXG5IZ0FBQmdNakJBNEVBQUFCQThjQUNCNEFBQXdEZWdCK0FRQUFCd05uQUNFQkFBQVJBMFVBQmdJQUFBQURid0R5QUFBQW1UQzdNTHd3QUFcXFxuQUlBeGdFNUFRQUFKa3dVVEJTTUFBQUl3TnNBRGNlQUFBVUE3Y0RJUjhBQUFvRGR3Q1lIZ0FBSXdOcEFNc2VBQUFEQTJFQTR3QUFBSmt3XFxcbjhURDVNQUFBUlFPeEE3TWZBQUErRFVZTlNnMEFBQUFEdVFOMkh3QUFPQVBVSWM0aEFBQkZBMklmb2g4QUFBSURkd0IxQVFBQUJBUDhBTlxcXG5ZQkFBQUJBeE1CRng0QUFKa3dhREJwTUFBQVFnTmdIMllmQUFBakEyZ0FKUjRBQUJNRGxRTVlId0FBQUFQcUFNRWVBQUJDQThzRDV4OEFcXFxuQURnRFF5SkVJZ0FBbVRCNE1Ia3dBQUFUQTVrRE9COEFBREFEU1FBc0hnQUFCd04zQUljZUFBQUJBMlVBNlFBQUFDY0RhQUFwSGdBQU9BXFxcbk8xSXUwaUFBQkNBN0VEdGg4QUFBWURrUU80SHdBQUFRTk5BRDRlQUFBSkEwRUFvaDRBQURVYkJSc0dHd0FBT0FNOEFHNGlBQUFJQTFrQVxcXG5lQUVBQUFNREF3RzFIZ0FBSndOSUFDZ2VBQUFqQTIwQVF4NEFBSmt3WkRCbE1BQUFDQU5XQkZjRUFBQUNBMWtBZGdFQUFGUUd3UWJDQmdcXFxuQUFBUU02QkZ3RUFBQUFBK0lBcHg0QUFBRURsUU9JQXdBQUp3TmpBT2NBQUFBSEEzOEJteDRBQUZRR1NBWWtCZ0FBbVRDck1Ld3dBQUFqXFxcbkE2QUI0aDRBQUFnRDJBVGFCQUFBTVFOYUFKUWVBQUFNQTJjQTV3RUFBQUFEbndQNEh3QUFKd05sQUNrQ0FBQWpBMGtBeWg0QUFBQURFUlxcXG44VEh3QUFRZ05SSDFjZkFBQWpBMDBBUWg0QUFBRURNQjgwSHdBQUp3TnNBRHdCQUFCRkF3VWZoUjhBQUFBRG9RSGRIZ0FBQ0FNV0JOd0VcXFxuQUFBSEEyUUFDeDRBQUMwRFRBQThIZ0FBRkFQQkErVWZBQUFFQStvQjdBRUFBQUFEQ0I4S0h3QUFBZ05sQU9vQUFBQUFBNUVEdWg4QUFBXFxcbkVEY0FCVkhnQUFSUU1DSDRJZkFBQUpBd0lCc2g0QUFBTURkUUJwQVFBQVJRTU1INHdmQUFBQkE4c0RzQU1BQUFnRGRBQ1hIZ0FBQUFPVlxcXG5BOGdmQUFBNEEzMGk0U0lBQUNNRGVnQ1RIZ0FBRVFOdkFBOENBQUFvQTI4QTZ3RUFBQUFESUI4aUh3QUFBQU1aSHhzZkFBQURBMVlBZkJcXFxuNEFBQXdEYXdEcEFRQUFDQVBvQk9vRUFBQUFBNmtEK2g4QUFFSURxQURCSHdBQUJnTTJCTUlFQUFBQkE5d0Exd0VBQUFRRGRRQnJBUUFBXFxcbk9BTkZJa2NpQUFBRUEwa0FLZ0VBQUFnRE9BVGxCQUFBVncxR0RVd05BQUFBQTNVQStRQUFBRGdEdENMc0lnQUFDQU4xQVB3QUFBQVVBOFxcXG5VRFVSOEFBQWNEWUFGbUhnQUFCZ01XQk1FRUFBQWJBMVVBcndFQUFEZ0RxeUt2SWdBQUFBTk1BVkFlQUFCQ0F6RWZOeDhBQUVVREpoK1dcXFxuSHdBQU9BT1JJdUlpQUFBQkExQUFWQjRBQUNjRFRBQTdBUUFBQVFOYUFIa0JBQUFIQTBJQUFoNEFBQk1Ed1FQa0h3QUFBUU5CSDBVZkFBXFxcbkFIQTFBQVZoNEFBQXdEUXdBTUFRQUFJd056QUdNZUFBQ1pNRlV3VmpBQUFKa3diekJ3TUFBQUNBTk5CTzBFQUFCRkEyY2ZweDhBQUFFRFxcXG5yd0hvSGdBQUFBTXBIeXNmQUFBMUd6OGJRUnNBQUFJRFJRREtBQUFBQmdOdkFFOEJBQUFCQS93QTJBRUFBSmt3OGpENk1BQUFSUU10SDVcXFxuMGZBQUFCQTB3QlVoNEFBQWdEWVFEa0FBQUFSUU5nSDZBZkFBQkZBd29maWg4QUFBWURZUUFEQVFBQUFBTmdIMklmQUFBQUE2OEI2aDRBXFxcbkFBZ0RQZ1RuQkFBQU9BTWpJaVFpQUFBQkE4b0RrQU1BQUpvdzFURFhNQUFBUlFNaUg1SWZBQUFCQTlVQVRCNEFBRVVEYkIrc0h3QUFCd1xcXG5OVUFHb2VBQUFFQXpjZU9SNEFBTW9OMlEzYURRQUFBd09oQWVFZUFBQU1BMGdBSGdJQUFBa0Q2Z0RESGdBQURBTlNBRmdCQUFBREE5UUFcXFxuMWg0QUFBd0RSUUFhQVFBQW1URHZNUGN3QUFBQ0EwZ0FKQUVBQUNNRFVnQmFIZ0FBQUFQQ0FLWWVBQUF0QTNRQWNSNEFBQWdETFFUc0JBXFxcbkFBM3czWkRkNE5BQUFJQTBFQXhBQUFBQThEZEFSMkJBQUFBUVBHQVB3QkFBQUJBekVmTlI4QUFBQURZUjlqSHdBQXdnekdETW9NQUFBQlxcXG5BOElBcEI0QUFBZ0R4UVBMQXdBQUFRUGlBS1VlQUFCQ0ExQWZWaDhBQUFBRFlRRGdBQUFBRVFOSkFBb0NBQUFuQTJjQUl3RUFBQWNEV1FcXFxuQ09IZ0FBUlFPWEE4d2ZBQUFKQTlRQTFCNEFBQU1Eb0FIZ0hnQUFRZ1ArSDk4ZkFBQUJBeG9FREFRQUFBd0RkQUJsQVFBQUFBUGNBTnNCXFxcbkFBQUlBM2dBalI0QUFBUUQzQURWQVFBQUFnTmhBT0lBQUFBQ0Exb0FrQjRBQUR3Sk13azBDUUFBR3dOUEFLQUJBQUFSQTFJQUVnSUFBQVxcXG5NRGJnRHhBQUFBRHdORkFBUUNBQUFKQTY4QjdCNEFBQVFEUlFBU0FRQUFBUU1oSHlVZkFBQUVBeThDTVFJQUFBWURtUVBZSHdBQU1RTk9cXFxuQUVnZUFBQUFBemdmT2g4QUFBWURTUUFzQVFBQUJnTnBBQzBCQUFCRkF3WWZoaDhBQUFFRFNRRE5BQUFBQUFOWEFJQWVBQUNaTVBBdytEXFxcbkFBQUF3RFV3QmdBUUFBQUFOSkFNd0FBQUNaTUhJd2N6QUFBQUFES0I4cUh3QUFCd05JQUNJZUFBQUpBNkFCM2g0QUFBUUQ2d0h0QVFBQVxcXG5Cd05qSG1rZUFBQWpBMjhBelI0QUFBTURRUUREQUFBQVJRT1JBN3dmQUFBb0EwRUFCQUVBQUFjRGFBQWpIZ0FBTVFOdUFFa2VBQURLRGRcXFxud04zUTBBQUFnRFdBQ01IZ0FBQVFOQkFNRUFBQUNaTU1Rd3hUQUFBQ01EUWdBRUhnQUFBZ056QUYwQkFBQ3VEQTRBQUFBQUFGb0VQd0lBXFxcbkFPZ0JLQUNBQWdBQUJnQk1BUUVDQmdBZ0FBTUFBQUJ4QUlzQkRRQk5BZE1BQUFBQ0FJVUFSUUFLQUFRQTZRQWhBQUFBQUFDcUFBSUFCUVxcXG5FQUFMVUJEUUFBQUFBQUFBQUJBQUFBQmdCbkFBZ0FBQUFDQUFBQUFBQkhBRElBQUFBQUFEd0FSUUFBQUFBQUFRQUFBQUlBRUFBQkFBQUFcXFxuQUFBQkFBQUF6Z0FzQUFBQUhRQUFBQklBQUFBQUFCRUFBd0FjQUFjQUFBQUJBR29BQVFBV0FBQUFid0FBQUFFQUpRQUFBQ2NBRUFBQUFDXFxcbklBQUFDOEFBQUFDUUFBQUFBQUZRQUFBQUFBRXdBQUFJY0FBQUE2QUNjQUFBQUZBQllBQlFBVUFCSUFJUUFGQUFJQUFRQUFBQlVBSmdBQVxcXG5BQVFBQUFBQUFBRUFGd0FaQUFBQUJBQUFBQU1BQUFBUUFBRUFBUUFBQUFVQUFRQUFBQUFBSWdBQUFBSUFCQUFUQUFBQUVRQmFBQVVBRXdcXFxuQU5BRTRBQ0FBRUFCZ0FDUUJrQUNZQUFBQVJBQUFBQlFBd0FBQUFBUUFCQUFBQUFnQUJBRDRBUmdBRkFBQUFBUUFBQUFFQU53QUFBQUFBXFxcbkJRQURBQUFBRXdBQ0FBQUFBUUFBQUFZQUFBQUxBQndBQVFBQUFBVUFMd0FCQUFBQUNBQWRBREFBQUFBbEFBSUFFZ0FBQUFBQUl3QUNBQVxcXG5BQUFBQUxBQmdBRGdBQUFCRUFEQUFWQUFJQUFBQUFBQU1BQUFBSUFBZ0FDQUFBQUFBQUNRQU9BQUFBQVFBSkFDd0FBd0FCQUJZQUVRQUFcXFxuQUFBQUFBQUFBQUFBQUFBRUFCZ0FBUUF3QUFRQURBQU9BQWtBQUFBREFBc0FBQUFDQUFVQUFBQVFBQU1BQWdBR0FBc0FDQUFLQUFBQUNBXFxcbkFEQUFFQUpRQURBQnNBQWdBU0FBVUFCd0FTQUFBQUVBQUFBQkVBQUFBSkFBQUFDUUFBQUF3QUFBQUFBQUVBQUFBQUFBQUFDQUFBQUFBQVxcXG5BQUFEQUFBQUFBQUFBQmNBQUFBQUFBTUFEQUFBQUFBQUFnQUJBRU1BQUFBQUFBc0FCUUFKQUFBQUFBQWlBQUlBQkFBQ0FBSUFBUUFCQUJcXFxuUUFBUUF4QUFBQUJBQWdBQWtBQndBQkFDRUFGZ0FCQUFJQUFBQUdBQUFBRGdBQUFBVUFFZ0FPQUFRQUFBQUFBQjBBQUFBQUFBWUFBQUFLXFxcbkFBQUFBQUFBQUJZQUFBQUFBQUFBQUFBSUFBQUFBUUFBQUFzQUFBQUJBQUFBQUFBQUFBUUFBQUFBQUJZQUFBQUJBQUFBQVFBZEFBY0FBQVxcXG5BQkFBWUFCQUFCQUFNQURnQUpBQkFBQ0FBQ0FBRUFBQUFBQUFNQUFnQUNBQ0lBQUFBQUFBUUFFd0FSQUFBQUFnQU5BQUFBQVFBRUFBd0FcXFxuQVFBV0FBNEFBZ0FBQUFBQUJBQUFBQUFBQUFBQUFBQUFGUUFBQUFBQUF3QUFBQUFBQUFBTUFBQUFCUUFFQUFBQUFBQVJBQTBBRVFBQUFBXFxcblFBQUFBREFBSUFBUUFEQUFFQUFnQUNBQUlBQVFBQkFBTUFBUUFCQUFBQUFnQUNBQUlBQVFBTkFBQUFBQUFBQUFFQUFnQUdBQTBBQVFBQlxcXG5BQVFBREFBQ0FBWUFBQUFFQUNjQUhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnQUFBQUFBQUFBQUFBQUFBQUFQQUFjQUNBQUFBQU1BQUFcXFxuQUVBQUFBQUFBQkFBQUFEd0FCQUFBQUFBQUFBQUlBQXdBQUFCWUFDd0FGQUFBQUFBQUNBQWdBQkFBQUFBZ0FBQUFBQUFBQUF3QUVBQUFBXFxcbkFRQUxBQUVBQUFBQUFCZ0FDUUFFQUFjQUFBQUJBQUlBQVFBQUFBQUFBUUFlQUFBQUFnQUJBQUFBQUFBSkFBQUFBQUFEQUFvQUFnQURBQVxcXG5FQUFBQUVBQUFBQkFBZkFBQUFBQUFBQUFBQUFBQUFBQUFBSkFBSEFBVUFBZ0FDQUFvQUFRQUFBQUFBQXdBQUFBRUFEQUFBQUFFQUFBQUFcXFxuQUFFQUFnQUJBQXNBQUFBQUFBRUFBd0FHQUFJQURBQU9BQjRBQUFBQUFCQUFBQUFCQUFJQURRQURBQUFBQmdBQUFBSUFDZ0FFQUFBQUR3XFxcbkFRQUFJQUFRQUNBQVlBQUFBQUFBc0FBQUFGQUEwQUFnQUFBQU1BQndBQUFBVUFCQUFBQUFBQUJnQUJBQUFBQUFBUEFBTUFBQUFBQUF3QVxcXG5BQUFYQUFJQUNRQUFBQUFBQUFBQUFBQUFBZ0FBQUFjQUFRQURBQTBBQUFBRkFBY0FCQUFJQUFBQUN3QUlBQWtBQVFBQUFBQUFDUUFGQUFcXFxuQUFDQUFCQUFBQUJnQUFBQWdBQUFBSEFBQUFBZ0FDQUFVQUJBQUZBQUFBQUFBQkFCTUFDQUFBQUFBQUFRQUFBQW9BQUFBR0FBQUFBQUFBXFxcbkFBQUFEQUFDQUFRQUFnQUFBQUFBQXdBQUFBUUFBQUFEQUFJQUJ3QUJBQUFBQUFBQUFBTUFBQUFBQUFBQUF3QUFBQUFBQUFBRUFBQUFBUVxcXG5BQUFBSUFBQUFBQUFJQUJ3QUFBQVFBQUFBQkFBRUFBUUFKQUFJQUFnQUdBQU1BQUFBQUFBQUFBUUFHQUFVQUFnQUFBQUFBQkFBQkFBSUFcXFxuRVFBQkFBQUFBQUFCQUFFQUJRQUFBQUVBQUFBSEFBQUFBQUFBQUFBQUF3QU9BQUFBQUFBREFBQUFBQUFBQUFJQUFRQUFBQkFBQUFBQUFBXFxcbkFBQWdBQUFBSUFBZ0FHQUFBQUNRQUFBQVlBQUFBQkFBWUFCUUFCQUFFQUFnQUlBQUlBQXdBQkFBUUFBUUFBQUFBQURRQUNBQUFBQUFBQlxcXG5BQzhBQVFBQ0FBRUFCZ0FWQUFBQUFBQUFBQXdBQkFBQUFBQUFBQUFBQUJvQUFBQUFBQUFBQUFBREFBY0FBQUFKQUFJQUFRQUFBQUVBQVFcXFxuQUFBQUFBQUFBREFBQUFBZ0FBQUFvQUFBQUFBQUVBQUFBT0FBSUFBZ0FKQUFJQUN3QUNBQUVBQXdBQkFBQUFBQUFLQUFNQUFRQUJBQUlBXFxcbkFnQUNBQUFBQWdBSkFBQUFBQUFCQUFZQUFRQUFBQWNBR0FBQkFBQUFCd0FCQUFFQUFBQVpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURBQVxcXG5BQUFBQUFBQUFBQUFBRUFBSUFBQUFBQUFFQUFBQUxBQUVBQlFBQUFBQUFBQUFEQUFJQUJnQUNBQUVBQlFBQkFBWUFBd0FCQUFJQUFRQUJcXFxuQUJ3QUJnQUNBQUlBQXdBQkFBZ0FBQUFDQUFBQUFRQURBQUVBRmdBR0FBc0FBQUFFQUFRQUFRQUNBQUFBQUFBQUFBQUFCQUFBQUFRQUFBXFxcbkFBQUFBQUZnQUFBQUFBQUFBQUFBTUFBQUFBQUFBQUFRQUFBQVFBQ1FBUEFBVUFBQUFCQUFFQUNBQUFBQUVBQUFBQUFBRUFBZ0FCQUFFQVxcXG5BUUFBQUFFQUFBQUlBQUVBQWdBQkFBTUFBZ0FBQUFJQUJBQUJBQUVBQkFBQUFBOEFBQUFBQUFBQUFnQUpBQUVBQUFBQ0FBQUFBZ0FFQUFcXFxuRUFBQUFIQUFVQUF3QUNBQW9BQWdBREFBQUFCUUFBQUFBQUFBQUdBQUlBQ2dBQUFBRUFCZ0FGQUFBQUFnQURBQUVBQ0FBQ0FBQUFBUUFBXFxcbkFCUUFBQUFCQUFJQUJRQUFBQUVBQVFBQUFBRUFBQUFDQUFrQUFBQURBQUVBQUFBTkFBRUFBQUFBQUFFQUJBQUFBQUFBQUFBQUFBQUFBZ1xcXG5BT0FBQUFBZ0FYQUFVQUFBQUFBQUVBQWdBSUFBQUFBUUFKQUFNQUFBQUJBQWNBQUFBRUFBRUFDQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFcXFxuQWdBRkFBQUFCUUFFQUFFQUFBQURBQUFBQWdBQ0FBTUFBUUFQQUFFQUF3QUNBQUFBQUFBQUFBRUFCUUFBQUFJQUJ3QUFBQUFBQUFBQUFBXFxcbkVBQUFBQUFBZ0FCZ0FBQUFBQUFRQUFBQUFBQ2dBRUFBVUFBQUFBQUFBQUFRQUFBQUlBQUFBQUFBQUFCQUFBQUFrQUFRQUJBQUFBQmdBQVxcXG5BQUFBRUFBQkFBSUFCUUFCQUFFQUFBQUFBQVFBQUFBQ0FBSUFBZ0FBQUFBQUFRQUJBQU1BQVFBREFBQUFBd0FBQUFBQUFBQUFBQUVBQmdcXFxuQUVBQUVBQVFBQ0FBZ0FBd0FEQUFBQUFBQUVBQUlBQVFBT0FDQUFBQUFCQUFFQURBQUFBQUFBQUFBRUFBQUFBZ0FBQUFBQUFBQUVBQW9BXFxcbkFnQUJBQVFBQmdBQUFBQUFBQUFHQUFZQUFBQURBQUFBQkFBQkFBY0FBUUFHQUFnQUFRQUhBQUVBQVFBQUFBRUFBZ0FEQUFBQUJnQUFBQVxcXG5BQUFRQUlBQUFBQXdBQkFBRUFCZ0FDQUFBQUFnQUVBQVlBQVFBRUFBTUFCZ0FCQUFNQUFnQUVBQUlBQUFBR0FBSUFBQUFGQUFFQUFRQUNcXFxuQUFBQUFRQUNBQUVBQVFBQ0FBSUFCd0FEQUFNQUFBQUJBQWNBQVFBT0FBQUFBUUFBQUFzQUFBQUJBQUlBQVFBQkFBTUFBQUFCQUFBQUFBXFxcbkFBQUFBQUFBQUFBQUFBQUFBRkFBQUFBQUFBQUFBQUFBQUJBQUlBQUFBQUFBTUFCZ0FEQUFJQUJnQUFBQUVBQXdBQkFBSUFBUUFDQUFNQVxcXG5BQUFEQUFFQUFnQUVBQU1BQUFBQUFCQUFBUUFDQUFBQUFRQUFBQU1BQVFBQ0FBRUFBUUFCQUFBQUFRQUFBQUVBQUFBQUFBQUFBZ0FBQUFcXFxuQUFCUUFGQUFFQUFBQUFBQUFBQUFBQUFBRUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFRQUFnQUJBQUVBQUFBQ0FBQUFBQUFCXFxcbkFBQUFCd0FMQUFNQUFRQUNBQUVBQWdBQkFBY0FBUUFFQUFFQUFRQUFBQUVBQUFBQkFBTUFBUUFDQUFJQUJRQUJBQUVBQ1FBQkFBRUFBUVxcXG5BQUFBSUFBd0FCQUFBQUFBQUlBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQURBQUFBQUFBQUFBVUFBQUFFQUFBQUFBQUFBQUVBQXdBQkFBQUFcXFxuQVFBQkFBTUFBUUFBQUFBQUFBQURBQVFBQ1FBR0FBQUFDUUFHQUFJQUFRQURBQUVBQVFBQ0FBUUFBZ0FEQUFJQUFBQUdBQUVBQUFBQ0FBXFxcbkFBQUFBRkFBb0FBUUFBQUFBQUJBQUFBQUFBQkFBQUFBRUFBZ0FCQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVxcXG5BQTBBQUFBQUFBTUFBd0FBQUFFQUFnQUJBQUFBQXdBQUFBRUFBQUFBQUFBQUF3QUFBQUVBQWdBQkFBQUFCQUFDQUFBQUFRQURBQUFBQWdcXFxuQURBQVVBQlFBQUFBQUFCUUFCQUFFQUVBQUJBQU1BQWdBQUFBRUFBUUFEQUFFQUJnQUZBQUVBQWdBQkFBSUFBQUFEQUFBQUFRQUFBQUFBXFxcbkFBQUJBQUFBQUFBREFBY0FBUUFDQUFNQUFBQUdBQUlBQVFBQUFBQUFBUUFBQUFJQUFRQUFBQU1BQVFBQkFBTUFBQUFDQUFFQUFRQUNBQVxcXG5FQUFBQUFBQUVBQUFBREFBQUFBQUFDQUFNQUFBQUNBQUFBQWdBQkFBQUFBd0FBQUFFQUFBQUFBQVVBQWdBQ0FBSUFBQUFDQUFjQUJRQURcXFxuQUFFQUFBQUtBQUVBQVFBRUFBQUFCZ0FBQUFBQUFBQUFBQUFBQVFBQkFBRUFBZ0FBQUFNQUFRQUJBQUVBQXdBREFBRUFCQUFCQUFBQUFRXFxcbkFCQUFFQUF3QUJBQVVBQUFBQ0FBQUFBUUFCQUFBQUJBQUFBQUlBQVFBQUFBQUFBQUFFQUFJQUFBQUFBQUFBQUFBRUFBSUFBd0FBQUFBQVxcXG5BQUFBQUFFQUFBQUtBQUVBQWdBQ0FBRUFBd0FBQUFZQUFRQURBQVlBQUFBQ0FBQUFBQUFCQUFBQUJBQUZBQVFBQVFBQ0FBQUFBd0FBQUFcXFxuRUFBZ0FFQUFFQUFBQURBQUFBQUFBQUFBQUFBUUFCQUFFQUFRQUJBQU1BQUFBQkFBRUFBQUFEQUFBQUFRQUVBQW9BQUFBREFBUUFCUUFGXFxcbkFBY0FBd0FEQUFJQUFBQUJBQUlBQWdBRUFBQUFBUUFBQUFBQUFBQUNBQUFBQUFBSkFBTUFFQUFCQUFBQUFnQUFBQUVBQkFBQUFBVUFBZ1xcXG5BQUFBVUFBQUFCQUFFQUJBQUFBQWNBQmdBRUFBQUFBQUFCQUFjQUFBQUNBQU1BQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBREFBQUFcXFxuQVFBRkFBSUFCZ0FCQUFJQUJRQUdBQUlBQkFBQUFBTUFBUUFDQUFFQUFRQUFBQUFBQWdBQkFBTUFCZ0FCQUFFQUFRQURBQWNBQUFBQUFBXFxcbkFBQWdBRUFBQUFBUUFCQUFNQUFRQUJBQUlBQUFBQkFBQUFCUUFDQUFVQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBQVxcXG5BQWNBQUFBQUFBQUFBQUFFQUFBQUFnQUVBQUFBQUFBQUFBRUFBQUFBQUFJQUFBQUFBQUVBQUFBQkFBRUFBUUFFQUFJQUN3QUJBQUFBQUFcXFxuQUJBQVFBQWdBQUFBRUFCQUFCQUFJQUFnQUJBQUlBQWdBQUFBQUFBQUFGQUFJQUFnQUFBQUFBQkFBRUFBVUFBZ0FBQUFBQURRQUFBQUFBXFxcbkFBQUFBQUFBQWdBQUFBWUFBQUFEQUFBQUFBQUFBQUVBQWdBQkFBRUFBZ0FKQUFNQUFBQUFBQU1BQUFBQkFBRUFBUUFDQUFBQUFnQURBQVxcXG5FQUJBQUFBQUlBQndBQkFBQUFBZ0FCQUFFQUFRQUNBQUFBQlFBREFBQUFBQUFCQUFBQUJRQUFBQUVBQUFBSEFBQUFBQUFDQUFFQUFRQUFcXFxuQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBUUFCQUFBQUFBQUFRQUNBQVlBQUFBQUFBSUFBUUFDQUFBQUFRXFxcbkFBQUFJQUFnQUNBQVlBQVFBQkFBY0FBQUFCQUFJQUJRQUJBQUlBQVFBQkFBRUFBd0FDQUFJQUFRQUVBQUFBQUFBQUFBUUFBUUFCQUFBQVxcXG5BZ0FBQUFFQUF3QUFBQUVBQWdBQUFPNEVBQUNhQWdJQWFmZ0NBSmtMQVFDeU1BQUFxUWdDQUM0ZkFBQUtCZ01BSUFFQUFLWUFBZ0FGK1FcXFxuQUE1Z2dCQU9qNUFBREpDUUVBT2g0QUFOSURBZ0JsK1FBQVJna0JBTDBlQUFEMkJBSUFPdmdDQUdvTEFRQUJBUUFBYkFBQ0FJYjVBQUJuXFxcbkNRRUFWL29BQUN3S0FRQ1JId0FBQkFjREFOOEVBQUNFQWdJQTRnRUFBSDRCQWdBcEFnQUE4Z0VDQUs4QkFBQkdBUUlBWnZvQUFEc0tBUVxcXG5BNUh3QUFLQVlDQUhvZUFBQmtCQU1BYkI4QUFKMEdBd0NvK2dBQWV3b0JBTTc0QWdEK0N3RUFLQUVBQUxJQUFnQkwrZ0FBSUFvQkFCajRcXFxuQWdCSUN3RUFpUGtDQUxnTUFRQjArUUFBVlFrQkFLa2VBQUMvQkFNQVVSOEFBRjRHQWdBeitBSUFZd3NCQVB6NEFnQXNEQUVBandNQUFDXFxcblFDQWdBKytnQUFFd29CQUY3NkFBQXpDZ0VBSHZvQUFQb0pBUUQzK1FJQUp3MEJBRjhCQUFBR0FRSUFOUjRBQU1ZREFnQkgrd0FBNHdvQ1xcXG5BR0w1QWdDU0RBRUFodm9BQUZrS0FRQXYrUUFBRUFrQkFOMzRBZ0FOREFFQWN3OEFBQ1FEQWdBVkhnQUFmd01EQU5BZUFBQW1CUU1BeXZcXFxua0FBS3NKQVFEbUJBQUFqZ0lDQUtJZkFBQkRCd1FBbWZrQ0FNa01BUURDSHdBQWx3Y0RBTWY0QWdEM0N3RUF2UG9BQUk4S0FRQzBNQUFBXFxcbnF3Z0NBTG41QWdEcERBRUFjeDRBQUZRRUFnQmIrUUFBUEFrQkFGTDVBZ0NDREFFQVgvb0FBRFFLQVFBSUd3QUFQZ01DQUFRaUFBQWRDQVxcXG5JQW9oNEFBS3dFQWdEcUFRQUFpZ0VDQUNrQkFBQzBBQUlBSVBrQUFBRUpBUUNGSHdBQTF3WUVBSk1lQUFDWUJBSUFzdmtDQU9JTUFRQWhcXFxuK0FJQVVRc0JBTmI1QWdBR0RRRUFaZm9BQURvS0FRQngrUUFBVWdrQkFEQUNBQUFFQWdNQWJRRUFBQjRCQWdBYkFnQUE1Z0VDQU5UNUFnXFxcbkFFRFFFQVlkRUJBQlFMQXdDVStnQUFad29CQUFNRUFBQktBZ0lBYWdFQUFCZ0JBZ0JZQ1FBQXhBSUNBQ0w1QWdCU0RBRUFQZmtBQUI0SlxcXG5BUUE1SGdBQXp3TURBSEQ0QWdDZ0N3RUFyaDRBQU00RUF3QTFId0FBSFFZREFDLzZBQUFFQ2dFQVhnRUFBQVFCQWdCREhnQUE1QU1DQUVcXFxuTDRBZ0J5Q3dFQXNma0FBSklKQVFCZCtnQUFNZ29CQU5MNUFBQ3pDUUVBMkI0QUFENEZBd0RLK2dBQW5Rb0JBTndlQUFCS0JRTUEvZmtDXFxcbkFDME5BUUFMK1FJQU93d0JBTWtlQUFBWUJRSUFLU01BQUdrSUFRQ1dIZ0FBbmdRQ0FLRDVBZ0RRREFFQTBQa0FBTEVKQVFEdEJBQUFtQVxcXG5JQ0FNSUFBQUFFQUFJQWVSNEFBR0VFQXdEeEJBQUFvQUlDQU5BZkFBQzBCd0lBOVI0QUFJNEZBZ0FsQVFBQXNBQUNBQ3o3QUFDMUNnTUFcXFxuaHdNQUFCa0NBUUR2K1FBQTBBa0JBUFg1QWdBbERRRUFjQUVBQUNRQkFnQndJZ0FBT1FnQ0FNejVBZ0Q4REFFQWJmb0FBRUlLQVFDQStRXFxcbkFBWVFrQkFBZjVBQURvQ0FFQVYvZ0NBSWNMQVFDNUhnQUE3Z1FDQU5YNEFnQUZEQUVBK2ZrQUFOb0pBUUNpK0FJQTBnc0JBRXY1QUFBc1xcXG5DUUVBZnZnQ0FLNExBUUFmK1FBQUFBa0JBT3o1QUFETkNRRUE5QVFBQUtZQ0FnQlJCQUFBV2dJQ0FLMGlBQUJUQ0FJQUYva0NBRWNNQVFcXFxuQmgrQUlBa1FzQkFCMzVBQUQrQ0FFQWx2b0FBR2tLQVFEMkFBQUFYQUFDQUNjZUFBQ29Bd0lBU0I4QUFFd0dBZ0RySHdBQTZnY0NBT1VlXFxcbkFBQmtCUUlBbi9rQ0FNOE1BUURvK0FJQUdBd0JBTi81QUFEQUNRRUFyeDRBQU5FRUF3QXErUUFBQ3drQkFIajZBQUJMQ2dFQWJQb0FBRVxcXG5FS0FRQWlIZ0FBbmdNQ0FPb2VBQUJ3QlFNQVVQZ0NBSUFMQVFESitRSUErUXdCQUJ6NUFBRDlDQUVBTXdvQUFONENBZ0RuQUFBQVFBQUNcXFxuQUF2NEFnQTdDd0VBa2ZvQUFHUUtBUURkQ1FBQTJnSUNBRWo0QWdCNEN3RUFadmtBQUVjSkFRQTIrd0FBeXdvQ0FGZjVBQUE0Q1FFQWl2XFxcbmdDQUxvTEFRQmNNQUFBZlFnQ0FJTDVBZ0N5REFFQUlnRUFBS29BQWdCZCtRQUFQZ2tCQU16NEFnRDhDd0VBYXZnQ0FKb0xBUUNCSHdBQVxcXG55QVlEQUNvaEFBQU9DQUVBZmdFQUFFQUJBZ0NwK1FBQWlna0JBTDM2QUFDUUNnRUFIdmtDQUU0TUFRRHIrUUFBekFrQkFEZjVBZ0JuREFcXFxuRUFwdmdDQU5ZTEFRQkNIZ0FBNGdNQ0FDOFJBUUQ3Q2dJQXFCOEFBRnNIQXdEQUFBQUFBQUFDQU5yNEFnQUtEQUVBdGZrQ0FPVU1BUURCXFxcbitBSUE4UXNCQUxUNUFBQ1ZDUUVBY1FFQUFDWUJBZ0JTK1FBQU13a0JBQWo2QUFEcENRRUFyQjhBQUdrSEJBRDdBUUFBcFFFREFCTDVBQVxcXG5EekNBRUFFUjhBQU1ZRkFnQUJBZ0FBc2dFQ0FMbjRBZ0RwQ3dFQUhQb0NBRXdOQVFDMStBSUE1UXNCQUlnZUFBQ0NCQUlBdVBvQUFJc0tcXFxuQVFCRCtnQUFHQW9CQUVRQkFBRGFBQUlBaXg0QUFJZ0VBZ0RoK1FJQUVRMEJBSHo1QUFCZENRRUFoZmtBQUdZSkFRQUdId0FBcUFVREFMXFxcbklmQUFCOUJ3TUEyL2tDQUFzTkFRRGtId0FBMndjQ0FNUDZBQUNXQ2dFQWR3RUFBRElCQWdCSStRSUFlQXdCQU1zQUFBQVVBQUlBbng4QVxcXG5BRGtIQkFDWitnQUFiQW9CQUVMNUFnQnlEQUVBZHZrQ0FLWU1BUUNJK1FBQWFRa0JBT1lmQUFEZkJ3SUFWZ0VBQVBRQUFnQ09IZ0FBamdcXFxuUUNBUDc0QWdBdURBRUFSaDRBQU9vREFnQWUrQUlBVGdzQkFGMEVBQUJpQWdJQXp4OEFBTElIQWdEUEhnQUFKQVVDQUVnZUFBRHVBd0lBXFxcbnkva0FBS3dKQVFCRytRSUFkZ3dCQU0vNkFBQ2lDZ0VBQ1FFQUFId0FBZ0RqSWdBQVh3Z0NBRklQQUFBY0F3SUFUREFBQUcwSUFnQ3krUVxcXG5BQWt3a0JBQ3dCQUFDNkFBSUFhZmtDQUprTUFRQ2wrUUlBMVF3QkFIb3dBQUNaQ0FJQXZ2a0NBTzRNQVFBYkh3QUEyd1VEQUYwZkFBQjNcXFxuQmdNQXEva0NBTnNNQVFEeCtBSUFJUXdCQUw3NUFBQ2ZDUUVBdVBrQUFKa0pBUUMwSHdBQWdnY0RBTjhlQUFCVEJRTUFMd0lBQUFJQ0FnXFxcbkEwQ1FBQXdnSUNBSXI1QWdDNkRBRUE2QjhBQU9RSEFnQ3IrZ0FBZmdvQkFGdjZBQUF3Q2dFQTB3UUFBSFFDQWdBbUlnQUFKUWdDQUFQNlxcXG5BZ0F6RFFFQUV2b0FBUEFKQVFEa0hnQUFZZ1VDQU5ZZkFBQytCd0lBTWZrQUFCSUpBUUNoK2dBQWRBb0JBRGI1QWdCbURBRUE2UjhBQU9cXFxuWUhBZ0QwSHdBQStBY0RBR3o0QWdDY0N3RUFFZmtDQUVFTUFRQmZDUUFBMGdJQ0FNMEFBQUFZQUFJQVh2a0NBSTRNQVFDUCtRQUFjQWtCXFxcbkFBZ2VBQUJpQXdNQStqQUFBTjBJQWdEYUJBQUFlZ0lDQU1YNUFBQ21DUUVBMkFFQUFHTUJBd0RzQVFBQWpnRURBRjc1QUFBL0NRRUFUdlxcXG5zQUFQRUtBZ0RGQUFBQUNnQUNBSDM0QWdDdEN3RUFEQnNBQUVJREFnREcrUUlBOWd3QkFIbjRBZ0NwQ3dFQTh2a0NBQ0lOQVFET0hnQUFcXFxuSWdVQ0FOb05BQUFQQXdJQWdCOEFBTVVHQXdCME1BQUFrUWdDQUlraUFBQlBDQUlBMEFFQUFGQUJBZ0NzSGdBQXlBUURBRkg0QWdDQkN3XFxcbkVBTEFJQUFQb0JBd0NlSHdBQU5RY0VBTkw1QWdBQ0RRRUFCZm9BQU9ZSkFRQ00rQUlBdkFzQkFQMGZBQUFLQ0FFQUN4OEFBTFVGQXdDNlxcXG4rZ0FBalFvQkFJSWVBQUIyQkFJQXd2Z0NBUElMQVFBd0h3QUFFQVlDQUljZkFBRGZCZ1FBWWZvQUFEWUtBUUFHR3dBQVBBTUNBT2o1QWdcXFxuQVlEUUVBRHZnQ0FENExBUUFBSHdBQW1BVUNBQVA2QUFEa0NRRUFBZ0lBQUxRQkFnRE9BUUFBVEFFQ0FCTDZBZ0JDRFFFQVQvZ0NBSDhMXFxcbkFRREJCQUFBYWdJQ0FJSDZBQUJVQ2dFQXgvb0FBSm9LQVFDNytRQUFuQWtCQUc4QkFBQWlBUUlBRkFFQUFJNEFBZ0RIREFBQUFBTUNBQVxcXG40YkFBQkVBd0lBMGZrQ0FBRU5BUUE1QVFBQXpBQUNBRGI0QWdCbUN3RUFTQXNBQU9vQ0FnRDVNQUFBMndnQ0FIbjZBQUJNQ2dFQVdEQUFcXFxuQUhrSUFnQngrUUlBb1F3QkFDajVBZ0JZREFFQS9BRUFBS2dCQWdBa0lnQUFJd2dDQUxQNkFBQ0dDZ0VBNS9nQ0FCY01BUURlSHdBQXpRXFxcbmNDQU9jQkFBQ0VBUUlBRXg0QUFIb0RBZ0JhK2dBQUx3b0JBTTRmQUFDd0J3SUFXQjRBQUJZRUFnQmsrUUlBbEF3QkFMNzZBQUNSQ2dFQVxcXG5EeDRBQUhJREFnQTQrUUlBYUF3QkFCMEJBQUNnQUFJQWxQa0FBSFVKQVFCSCtRQUFLQWtCQUtvREFBQXBBZ0lBZ2ZrQUFHSUpBUUF3SGdcXFxuQUF2QU1DQUJRZkFBRE9CUU1BOGZrQUFOSUpBUUNwSHdBQVhnY0RBR0llQUFBc0JBSUFYZmdDQUkwTEFRQk8rZ0FBSXdvQkFDSWZBQURvXFxcbkJRTUFPUGdDQUdnTEFRQ20rUUlBMWd3QkFELzVBQUFnQ1FFQTgva0NBQ01OQVFDdCtnQUFnQW9CQUhyNEFnQ3FDd0VBTVBnQ0FHQUxBUVxcXG5ESStBSUErQXNCQUFvQkFBQitBQUlBQ3dJQUFNWUJBZ0IzSHdBQXR3WUNBTFQ2QUFDSENnRUFoZmtDQUxVTUFRRDMrUUFBMkFrQkFFLzVcXFxuQWdCL0RBRUFRUG9BQUJVS0FRQm8rUUlBbUF3QkFJejZBQUJmQ2dFQXpnQUFBQm9BQWdEQStnQUFrd29CQUdJd0FBQ0RDQUlBK1FBQUFGXFxcbjRBQWdDd0h3QUFlUWNDQUpRTEFBRDBBZ0lBSnZrQ0FGWU1BUUNFSHdBQTB3WUVBTzhFQUFDY0FnSUFuUThBQURBREFnQnRJZ0FBTXdnQ1xcXG5BQ2dmQUFENkJRSUFWZmtDQUlVTUFRQjVJZ0FBUXdnQ0FMYjZBQUNKQ2dFQU5ma0FBQllKQVFBNUJBQUFWZ0lDQURnWkFRQUxDd0lBN2dcXFxuQUFBRTRBQWdCN0FRQUFPZ0VDQUF3ZUFBQnNBd0lBYWg0QUFFSUVBZ0FVQWdBQTJBRUNBRmNQQUFBZUF3SUFKZmdDQUZVTEFRQzdGQUVBXFxcbkFRc0NBQUFCQUFCcUFBSUE1Z0VBQUlJQkFnQlIrUUlBZ1F3QkFNNzVBZ0QrREFFQWhQa0NBTFFNQVFEcklnQUFZd2dDQUdzZkFBQ2FCZ1xcXG5NQU93RUFBTkFBQWdEcCtRSUFHUTBCQUw3NEFnRHVDd0VBSS9nQ0FGTUxBUURUK1FJQUF3MEJBSHo1QWdDc0RBRUFTZm9BQUI0S0FRQ3hcXFxuSGdBQTF3UURBSmo1QWdESURBRUFUakFBQUc4SUFnQU5Id0FBdXdVREFFb05BQUFKQXdJQU9mc0FBTThLQWdCYU1BQUFld2dDQUxENUFBXFxcbkNSQ1FFQS8vZ0NBQzhNQVFDdU1BQUFwUWdDQUhmNUFnQ25EQUVBK2dFQUFLSUJBd0FnSGdBQW1nTUNBQmY1QUFENENBRUFpZmtBQUdvSlxcXG5BUUFPK1FBQTd3Z0JBRFQ3QUFESENnSUFpZmdDQUxrTEFRQm0rQUlBbGdzQkFHWDRBZ0NWQ3dFQUx3RUFBTUFBQWdBTytnSUFQZzBCQUdcXFxuRWVBQUFxQkFJQS9RRUFBS29CQWdBRCtBSUFNd3NCQU9NZkFBRFlCd01BUlBvQUFCa0tBUUNtSHdBQVV3Y0VBQThDQUFET0FRSUFwQjhBXFxcbkFFc0hCQURMREFBQUJnTURBRS82QUFBa0NnRUFsL2tDQU1jTUFRQkxIZ0FBOUFNQ0FLTDZBQUIxQ2dFQU9mZ0NBR2tMQVFCVkh3QUFhUVxcXG5ZREFESWVBQURBQXdJQThQa0FBTkVKQVFEcUFBQUFSZ0FDQU5UNEFnQUVEQUVBYWZrQUFFb0pBUUQ2QUFBQVlBQUNBRE1lQUFEQ0F3SUFcXFxuYng0QUFFd0VBZ0NxK1FBQWl3a0JBRGo1QUFBWkNRRUFKdmdDQUZZTEFRQTgrUUFBSFFrQkFPSUVBQUNHQWdJQVh4NEFBQ1lFQWdEQ0JBXFxcbkFBYkFJQ0FOMEVBQUNBQWdJQWtBTUFBQ1lDQXdBaitRSUFVd3dCQUJrRUFBQlVBZ0lBNmZnQ0FCa01BUUE3R3dBQVNBTUNBR0Q0QWdDUVxcXG5Dd0VBd0I0QUFQNEVBd0FrQVFBQXJnQUNBRFg1QWdCbERBRUF6U0VBQUJjSUFnQWYrQUlBVHdzQkFKVWZBQUFUQndRQVdmb0FBQzRLQVFcXFxuQksrd0FBNlFvQ0FEY0JBQURLQUFJQUdmb0NBRWtOQVFDTUhnQUFpZ1FDQUJINkFnQkJEUUVBa3ZrQUFITUpBUUNiK1FBQWZBa0JBRzhpXFxcbkFBQTNDQUlBQ1BrQ0FEZ01BUUNoSGdBQXFnUUNBTWN3QUFDOUNBSUFYQThBQUNBREFnQzhGQUVBQXdzQ0FCcjVBQUQ3Q0FFQVNmc0FBT1xcXG5jS0FnQ1MrQUlBd2dzQkFMdlJBUUFnQ3dJQURnUUFBRklDQWdCK0hnQUFiZ1FDQU5NZkFBQzdCd01BdGg4QUFJVUhBZ0JrQVFBQUVBRUNcXFxuQUN2NUFnQmJEQUVBUFI4QUFETUdBd0NHQXdBQUZ3SUNBQ1FmQUFEdUJRTUF6Zm9BQUtBS0FRQVgrZ0FBOHdrQkFCY2VBQUNGQXdNQUMvXFxcbm9BQU93SkFRQ0ErUUlBc0F3QkFDMzZBQUFDQ2dFQWp2Z0NBTDRMQVFBdSt3QUF1d29DQURINkFBQUdDZ0VBQ1I4QUFMQUZBZ0FWK0FJQVxcXG5SUXNCQU1yNUFnRDZEQUVBVmZvQUFDb0tBUUQ1K1FJQUtRMEJBR0lmQUFDQkJnTUFCZ0VBQUhZQUFnQy9IZ0FBK3dRREFEZ2ZBQUFtQmdcXFxuSUFJQjhBQU9RRkFnQmwrUUlBbFF3QkFDbjRBZ0JaQ3dFQSt4OEFBQVlJQWdESkFBQUFFQUFDQUVjQkFBRGdBQUlBdy9rQ0FQTU1BUUFUXFxcbkFnQUExZ0VDQUowZkFBQXhCd1FBSlI4QUFQRUZBd0N2K1FJQTN3d0JBSGY2QUFCS0NnRUFDU0lBQUI4SUFnQjJEd0FBS0FNQ0FGYjVBQVxcXG5BM0NRRUF6QjhBQUt3SEFnQ2dId0FBUFFjREFEd0JBQURTQUFJQXN4NEFBTjBFQXdCYUhnQUFHZ1FDQURYN0FBREpDZ0lBdGZrQUFKWUpcXFxuQVFBSytnQUE2d2tCQUtVZkFBQlBCd1FBTGdJQUFBQUNBZ0R1SGdBQWZBVURBTlVCQUFCYUFRTUFYQUVBQUFBQkFnRGpBQUFBT2dBQ0FJXFxcbnY2QUFCZUNnRUFlVEFBQUpjSUFnQTQrd0FBelFvQ0FGWDRBZ0NGQ3dFQW52b0FBSEVLQVFCT0FRQUE2QUFDQUhVZUFBQllCQUlBUnZvQVxcXG5BQnNLQVFBSytnSUFPZzBCQUJFQ0FBRFNBUUlBcWZnQ0FOa0xBUUFWQVFBQWtBQUNBTkV3QUFERENBSUFSeDRBQU93REFnRGcrQUlBRUFcXFxud0JBSDc2QUFCUkNnRUEyQjhBQU1NSEFnQ1NIZ0FBbGdRQ0FHZjRBZ0NYQ3dFQUhmc0FBSzBLQWdCOStRQUFYZ2tCQUxuNkFBQ01DZ0VBXFxcblJ2Z0NBSFlMQVFCOUhnQUFiQVFDQU1qNkFBQ2JDZ0VBQkFFQUFISUFBZ0QxQkFBQXFBSUNBQkQ2QWdCQURRRUFkZmtBQUZZSkFRQnErUVxcXG5BQVN3a0JBQ3Y2QUFBQUNnRUFjeDhBQUs4R0FnQlgrUUlBaHd3QkFOMGVBQUJOQlFNQXJRTUFBQzhDQWdBaytRSUFWQXdCQU5UNkFBQ25cXFxuQ2dFQWUva0NBS3NNQVFCVCtBSUFnd3NCQUQvNkFBQVVDZ0VBaXZvQUFGMEtBUUJNK3dBQTdRb0NBRHNmQUFBdEJnTUF4QUFBQUFnQUFnXFxcbkNhRUFFQTh3b0NBRUVEQUFBUEFnRUFEUjRBQUc0REFnRGNCQUFBZmdJQ0FCRDZBQUR2Q1FFQThSNEFBSVVGQXdBRCtRSUFNd3dCQU8wZlxcXG5BQUR1QndJQTd4OEFBUElIQVFDa0hnQUFzQVFEQUI4Q0FBRHFBUUlBa3ZvQUFHVUtBUUNrK0FJQTFBc0JBTWo1QUFDcENRRUFvUGtBQUlcXFxuRUpBUUF4SGdBQXZnTUNBQVA1QUFEa0NBRUExQU1BQUVRQ0FnQUorQUlBT1FzQkFBY2VBQUJnQXdJQXNSOEFBSHNIQWdEUitBSUFBUXdCXFxcbkFCRWVBQUIyQXdJQTBoOEFBTGdIQXdCZTBRRUFEUXNDQUVINUFnQnhEQUVBWXZrQUFFTUpBUUR3SGdBQWdnVURBT0FlQUFCV0JRTUFValxcXG5BQUFITUlBZ0JJQVFBQTRnQUNBRVFmQUFCR0JnTUFNUGtDQUdBTUFRQUxIZ0FBYWdNQ0FENzRBZ0J1Q3dFQWxEQUFBSjhJQWdCYkhnQUFcXFxuSEFRQ0FGVDZBQUFwQ2dFQS9Qa0FBTjBKQVFEZUFRQUFjZ0VEQUFJZUFBQldBd0lBNVBrQ0FCUU5BUUIvK1FBQVlBa0JBT0VmQUFEVEJ3XFxcbklBeXg0QUFCd0ZBZ0JIK1FJQWR3d0JBQzM0QWdCZEN3RUFiUjhBQUtBR0F3Qk1IZ0FBOWdNREFBQWVBQUJTQXdJQVBQa0NBR3dNQVFERVxcXG4rUUlBOUF3QkFDMGZBQUFIQmdNQWpBTUFBQ0FDQWdDN0ZRRUFDUXNDQUF6NkFBRHRDUUVBaHZrQ0FMWU1BUUFLSHdBQXNnVURBSU1mQUFcXFxuRFBCZ1FBNHg0QUFGOEZBd0ErK1FJQWJnd0JBTzM0QWdBZERBRUFnZmtDQUxFTUFRQlVId0FBWmdZREFCWWVBQUNDQXdNQWF2b0FBRDhLXFxcbkFRQjVBUUFBTmdFQ0FDMzdBQUM0Q2dNQUMva0FBT3dJQVFBKyt3QUExd29DQUxENUFnRGdEQUVBTXZrQUFCTUpBUURtSGdBQVpnVUNBRlxcXG43NEFnQ09Dd0VBMS9nQ0FBY01BUUJBSGdBQTNnTUNBTzBpQUFCbkNBSUFReDhBQUVNR0F3RGxCQUFBakFJQ0FLWDZBQUI0Q2dFQW94OEFcXFxuQUVjSEJBQm4rUUlBbHd3QkFKUDVBQUIwQ1FFQWpmZ0NBTDBMQVFEdEFBQUFUQUFDQUFiNUFnQTJEQUVBbVBvQUFHc0tBUUFCK1FJQU1RXFxcbndCQVBjZkFBRDlCd01BWEFrQUFNd0NBZ0JnK2dBQU5Rb0JBTW9EQUFBNEFnSUFZdm9BQURjS0FRREQrQUlBOHdzQkFNb2VBQUFhQlFJQVxcXG5VUGtBQURFSkFRQnpBUUFBS2dFQ0FKcjVBZ0RLREFFQWNQa0NBS0FNQVFCYStBSUFpZ3NCQUJQNkFnQkREUUVBaS9rQUFHd0pBUUFUK1FcXFxuSUFRd3dCQUxrUEFBQTRBd0lBR2ZrQUFQb0lBUUM2SGdBQThBUUNBSkQ0QWdEQUN3RUFVL2tBQURRSkFRQ3lIZ0FBMmdRREFBVDVBQURsXFxcbkNBRUEzQUVBQUc4QkF3Q3JBd0FBS3dJQ0FFNzVBQUF2Q1FFQTMvZ0NBQThNQVFBWkh3QUExZ1VDQUx3d0FBQ3pDQUlBWGpBQUFIOElBZ1xcXG5DSEhnQUFnQVFDQVByNUFBRGJDUUVBSy9nQ0FGc0xBUUFkK0FJQVRRc0JBS1A0QWdEVEN3RUFCUG9DQURRTkFRQTYrZ0FBRHdvQkFPUUVcXFxuQUFDS0FnSUExZmtDQUFVTkFRQU4rUUlBUFF3QkFHZjVBQUJJQ1FFQTAvb0FBS1lLQVFEeUh3QUE4d2NEQUlZZUFBQitCQUlBTGZrQUFBXFxcbjRKQVFEM0hnQUFrZ1VDQUluNkFBQmNDZ0VBZFBnQ0FLUUxBUUJTK0FJQWdnc0JBTTM1QUFDdUNRRUFWUGdDQUlRTEFRQWxIZ0FBcEFNQ1xcXG5BTUVlQUFBQkJRTUEyeDRBQUVjRkF3QUZBZ0FBdWdFQ0FFUDRBZ0J6Q3dFQXNmZ0NBT0VMQVFDNEh3QUFpZ2NDQU1zTEFBRDRBZ0lBVFBcXFxuZ0NBSHdMQVFBdytnQUFCUW9CQU1zSkFBRFVBZ0lBV1BnQ0FJZ0xBUUJiSHdBQWRBWURBTUlHQUFDNkFnSUFVUGtDQUlBTUFRQmNDd0FBXFxcbjhBSUNBRTM2QUFBaUNnRUFreDhBQUFzSEJBQjArZ0FBUndvQkFGa2ZBQUJ5QmdJQUhmb0NBRTBOQVFCdytnQUFRd29CQUJqNkFBRDBDUVxcXG5FQWlQZ0NBTGdMQVFDMytBSUE1d3NCQUozNUFBQitDUUVBMi9rQUFMd0pBUUJBK1FBQUlRa0JBSTBmQUFEMUJnUUFseDhBQUJzSEJBQVFcXFxuSGdBQWRBTUNBSmY1QUFCNENRRUFWdmtDQUlZTUFRQ3ErUUlBMmd3QkFFRWVBQURnQXdJQURQa0NBRHdNQVFCaStBSUFrZ3NCQUdZZUFBXFxcbkEyQkFNQStCNEFBSlFGQWdCSitBSUFlUXNCQUpUNEFnREVDd0VBZng0QUFIQUVBZ0FwSHdBQS9BVUNBQno2QUFENENRRUFzQjRBQU5RRVxcXG5Bd0IwSHdBQXNRWUNBT2tlQUFCdEJRTUF1eDhBQUpBSEFnQmlBUUFBREFFQ0FOSUFBQUFnQUFJQWwvb0FBR29LQVFBaytBSUFWQXNCQURcXFxuTUNBQUFNQWdJQXJ5SUFBRmNJQWdEc0h3QUE3QWNDQUgvNkFBQlNDZ0VBU3ZrQ0FIb01BUUNIK0FJQXR3c0JBQmY2QWdCSERRRUFNUWtBXFxcbkFNQUNBZ0F3QVFBQXdnQUNBRFVCQUFER0FBSUFkakFBQUpNSUFnQ2lEd0FBTWdNQ0FQZ0VBQUNxQWdJQUp4OEFBUGNGQXdCaitRQUFSQVxcXG5rQkFFMzVBQUF1Q1FFQVFBTUFBQTRDQVFETitRSUEvUXdCQUFFZUFBQlVBd0lBMHg0QUFDOEZBd0FEQVFBQWNBQUNBQUFDQUFDd0FRSUFcXFxuZkFFQUFEd0JBZ0FzK1FBQURRa0JBQkllQUFCNEF3SUFNL3NBQU1VS0FnQ1QrZ0FBWmdvQkFQVUFBQUJhQUFJQStEQUFBTmtJQWdBUUFnXFxcbkFBMEFFQ0FQTUFBQUJXQUFJQUJQZ0NBRFFMQVFEQStBSUE4QXNCQUJvQ0FBRGtBUUlBSEI0QUFKQURBd0FlQVFBQW9nQUNBSThmQUFEOVxcXG5CZ1FBVFBvQUFDRUtBUUJiQ1FBQXlnSUNBRVg2QUFBYUNnRUExZm9BQUtnS0FRQXUrQUlBWGdzQkFGejZBQUF4Q2dFQXQva0FBSmdKQVFcXFxuQUdBZ0FBdkFFQ0FNY2ZBQUNoQndNQXl3TUFBRG9DQWdEYytRQUF2UWtCQUNzQ0FBRDNBUU1BTHZrQUFBOEpBUURpSGdBQVhBVURBSS80XFxcbkFnQy9Dd0VBVFBrQ0FId01BUUNFK2dBQVZ3b0JBT1A1QWdBVERRRUExdmtBQUxjSkFRQmRBUUFBQWdFQ0FDUWVBQUNpQXdJQVhQa0NBSVxcXG53TUFRQ21IZ0FBdGdRREFLZ2VBQUM4QkFNQTl6QUFBTmNJQWdCMytRQUFXQWtCQU1UNkFBQ1hDZ0VBTy9vQUFCQUtBUUFFK1FJQU5Bd0JcXFxuQUt2NUFBQ01DUUVBNndRQUFKUUNBZ0FnK2dBQSt3a0JBQWY1QWdBM0RBRUF4aDRBQUJBRkF3QUYrZ0lBTlEwQkFLc1FBUUQzQ2dJQVB4XFxcbjRBQU53REFnQ0ZJZ0FBU3dnQ0FFTURBQUFRQWdFQTJ2a0FBTHNKQVFBSCtnSUFOdzBCQUJYNkFnQkZEUUVBOHdRQUFLUUNBZ0FUQVFBQVxcXG5qQUFDQUhzZkFBQy9CZ0lBenlFQUFCc0lBZ0I2SHdBQXZRWUNBT1VBQUFBK0FBSUFmVEFBQUowSUFnQVUrZ0lBUkEwQkFKSDRBZ0RCQ3dcXFxuRUE1ZmtDQUJVTkFRQ0QrUUlBc3d3QkFKQWZBQUFCQndNQWhSNEFBSHdFQWdEVUFBQUFKQUFDQU9BaUFBQlpDQUlBcmdNQUFERUNBZ0N1XFxcbitBSUEzZ3NCQVB2NUFBRGNDUUVBblBrQUFIMEpBUUFYQWdBQTNnRUNBTGNlQUFEcEJBTUFxdmdDQU5vTEFRQ0ZBd0FBRlFJQ0FCYjZBQVxcXG5EeUNRRUE0dmtDQUJJTkFRRGhBUUFBZXdFREFBRDZBZ0F3RFFFQVZBRUFBUEFBQWdDM0h3QUFod2NEQU84ZUFBQi9CUU1BQXZvQUFPTUpcXFxuQVFDUStRSUF3QXdCQUZJZUFBQUlCQU1BSkFZQUFMSUNBZ0NkK1FJQXpRd0JBSVA0QWdDekN3RUExeDhBQU1BSEF3RE0rUUFBclFrQkFDXFxcbmI1QUFBSENRRUFWaDRBQUJJRUFnQUcrZ0FBNXdrQkFGSDZBQUFtQ2dFQTlCNEFBSXdGQWdEYStRSUFDZzBCQURZZUFBRElBd0lBMHdZQVxcXG5BTHdDQWdELytRSUFMdzBCQU9MNEFnQVNEQUVBcWg0QUFNSUVBd0N0K0FJQTNRc0JBQWY2QUFEb0NRRUFldmtDQUtvTUFRQm0rUUlBbGdcXFxud0JBSUFlQUFCeUJBSUEwZ0VBQUZRQkFnQmpId0FBaEFZREFLMGZBQUJ0QndRQUh2a0FBUDhJQVFDZytnQUFjd29CQUdQNEFnQ1RDd0VBXFxcbjNUQUFBTk1JQWdCZUJBQUFaQUlDQUJyNUFnQktEQUVBQlI0QUFGd0RBZ0FhQVFBQW1nQUNBR0VmQUFCL0JnSUFHL29DQUVzTkFRRGcrUVxcXG5JQUVBMEJBRDBCQUFEVUFBSUFNdnNBQU1NS0FnQ2xIZ0FBc3dRREFOME5BQUFUQXdNQUdBRUFBSllBQWdBSEFnQUF2Z0VDQVBvZkFBQUVcXFxuQ0FJQVAva0NBRzhNQVFDRytBSUF0Z3NCQU9ENUFBREJDUUVBY1BrQUFGRUpBUUIrK1FJQXJnd0JBSEw1QUFCVENRRUFOZ0VBQU1nQUFnXFxcbkFLR3dBQVFBTUNBSE13QUFDUENBSUFGdmtBQVBjSUFRRGlJZ0FBWFFnQ0FDSDVBZ0JSREFFQVlDSUFBQzhJQWdCbUh3QUFqUVlEQUEvNFxcXG5BZ0EvQ3dFQUFTQUFBQXdJQVFDSUh3QUE0d1lEQUtiNkFBQjVDZ0VBcmg4QUFIRUhCQUNrK2dBQWR3b0JBRG9mQUFBcUJnTUF3Zm9BQUpcXFxuUUtBUUNQK2dBQVlnb0JBRjBKQUFET0FnSUEwZmtBQUxJSkFRQkJHd0FBVGdNQ0FFajVBQUFwQ1FFQVBCNEFBTllEQWdEWitnQUFyQW9CXFxcbkFBQUVBQUJHQWdJQWJma0FBRTRKQVFCOEhnQUFhZ1FDQU5NREFBQkNBZ0lBY2dFQUFDZ0JBZ0FmSGdBQW1BTUNBSi82QUFCeUNnRUFiaVxcXG5JQUFEVUlBZ0FpK0FJQVVnc0JBSFVQQUFBbUF3SUFjZmdDQUtFTEFRQVMrQUlBUWdzQkFIVWlBQUEvQ0FJQVB4OEFBRGtHQXdEWE1BQUFcXFxueXdnQ0FOa0FBQUFxQUFJQXEvZ0NBTnNMQVFCNitnQUFUUW9CQUJYNUFBRDJDQUVBSFI0QUFKTURBd0RyQVFBQWpBRUNBQWo0QWdBNEN3XFxcbkVBanZrQ0FMNE1BUUJUK2dBQUtBb0JBS2I1QUFDSENRRUFEUGdDQUR3TEFRRDErQUlBSlF3QkFBTDZBZ0F5RFFFQWdSNEFBSFFFQWdBd1xcXG4rUUFBRVFrQkFHQXdBQUNCQ0FJQTZoOEFBT2dIQWdDS0F3QUFIZ0lDQUZ6NEFnQ01Dd0VBeVI4QUFLWUhBZ0J2K0FJQW53c0JBQXI1QWdcXFxuQTZEQUVBQXZrQ0FESU1BUUExK0FJQVpRc0JBRTBCQUFEbUFBSUFZdEVCQUJjTEF3QWorUUFBQkFrQkFKYjRBZ0RHQ3dFQUxRSUFBUDBCXFxcbkF3RHkrUUFBMHdrQkFNSXdBQUM1Q0FJQTFEQUFBTWNJQWdCKytRQUFYd2tCQU9JZkFBRFZCd01BN0FBQUFFb0FBZ0JKSHdBQVRnWUNBSVxcXG4zNkFBQmdDZ0VBbVBnQ0FNZ0xBUUMxSGdBQTR3UURBSlQ1QWdERURBRUFLd0VBQUxnQUFnQU9BZ0FBekFFQ0FHZ0JBQUFVQVFJQVZoOEFcXFxuQUd3R0F3Q2crQUlBMEFzQkFGTDZBQUFuQ2dFQVBma0NBRzBNQVFEYUFBQUFMQUFDQU1RZUFBQUtCUU1BbFI0QUFKd0VBZ0JuSHdBQWtBXFxcbllEQU1INUFnRHhEQUVBM3ZrQUFMOEpBUUE5K0FJQWJRc0JBTzM1QUFET0NRRUF2L29BQUpJS0FRQlhCQUFBWGdJQ0FBMzZBQUR1Q1FFQVxcXG5zZm9BQUlRS0FRRDYrQUlBS2d3QkFFa2VBQUR3QXdJQUcva0FBUHdJQVFCUUhnQUFBZ1FEQUVyNUFBQXJDUUVBa1BvQUFHTUtBUUNFSWdcXFxuQUFTUWdDQUtBZUFBQ29CQUlBYVFFQUFCWUJBZ0FBK1FBQTRRZ0JBT3NlQUFCekJRTUE1ZmtBQU1ZSkFRRHErUUlBR2cwQkFLejRBZ0RjXFxcbkN3RUErUGdDQUNnTUFRRElEQUFBQWdNQ0FQYjRBZ0FtREFFQWFQa0FBRWtKQVFCc0hnQUFSZ1FDQU5qNEFnQUlEQUVBdGg0QUFPWUVBd1xcXG5DWitBSUF5UXNCQU1NQUFBQUdBQUlBc0FFQUFFZ0JBZ0FUSHdBQXl3VURBR01lQUFBdUJBSUFFZ0VBQUlvQUFnQWcrUUlBVUF3QkFBVDZcXFxuQUFEbENRRUEyZmdDQUFrTUFRQTRIZ0FBekFNREFKUWZBQUFQQndRQVFQa0NBSEFNQVFCOStRSUFyUXdCQUU3NEFnQitDd0VBcGZrQUFJXFxcbllKQVFEY0NRQUEyQUlDQVB3QUFBQmtBQUlBN0I0QUFIWUZBd0NnQVFBQVFnRUNBTFQ1QWdEa0RBRUF5Z3NBQVBZQ0FnQTArQUlBWkFzQlxcXG5BQXY2QWdBN0RRRUEyUG9BQUtzS0FRREZNQUFBdXdnQ0FQWDVBQURXQ1FFQVMvZ0NBSHNMQVFCZUhnQUFKQVFDQU1iNEFnRDJDd0VBTy9cXFxua0NBR3NNQVFCUkFRQUE3Z0FDQVB3ZkFBQUlDQUlBT2ZvQUFBNEtBUUFKSGdBQVpRTURBSm41QUFCNkNRRUE1dmdDQUJZTUFRQzYrQUlBXFxcbjZnc0JBSGI0QWdDbUN3RUFJd0VBQUt3QUFnQTgrd0FBMVFvQ0FKYjVBQUIzQ1FFQWpSNEFBSXdFQWdBTUFRQUFnZ0FDQU83NEFnQWVEQVxcXG5FQUNma0FBT29JQVFCSytnQUFId29CQUtuNUFnRFpEQUVBQnZnQ0FEWUxBUURRTUFBQXdRZ0NBTHY1QWdEckRBRUFkZmtDQUtVTUFRQVlcXFxuK2dJQVNBMEJBSW41QWdDNURBRUFoL2tBQUdnSkFRQUsrQUlBT2dzQkFKajVBQUI1Q1FFQWVma0FBRm9KQVFBTitRQUE3Z2dCQUNMNUFBXFxcbkFEQ1FFQWpCOEFBUEVHQkFBM0h3QUFJd1lEQUVqN0FBRGxDZ0lBWnpBQUFJY0lBZ0F5K1FJQVlnd0JBTkllQUFBc0JRTUEwUUFBQUI0QVxcXG5BZ0FvSGdBQXFnTUNBSGdCQUFBMEFRSUFyUGtDQU53TUFRQmhBUUFBQ2dFQ0FORDZBQUNqQ2dFQUFRUUFBRWdDQWdCQklnQUFKd2dDQUxcXFxuMzVBQUNlQ1FFQThQZ0NBQ0FNQVFCRkhnQUE2QU1DQU5uNUFBQzZDUUVBcWZvQUFId0tBUUExK2dBQUNnb0JBTklFQUFCeUFnSUFOQjRBXFxcbkFNUURBZ0FuK1FBQUNBa0JBTU1lQUFBSEJRTUEzdmdDQUE0TUFRQ2krUUlBMGd3QkFFUDVBQUFrQ1FFQWp4NEFBSkFFQWdEVitRQUF0Z1xcXG5rQkFJTDVBQUJqQ1FFQVVCOEFBRndHQWdDU0h3QUFCd2NFQUlFUEFBQXNBd0lBaC9vQUFGb0tBUUJPK1FJQWZnd0JBS3NmQUFCbEJ3UUFcXFxuUGZvQUFCSUtBUURaQVFBQVpnRURBSmI1QWdER0RBRUFpaDRBQUlZRUFnQlkrZ0FBTFFvQkFNRWZBQUNWQndJQVlma0NBSkVNQVFCRUF3XFxcbkFBRVFJQ0FEUWZBQUFhQmdNQXFQa0FBSWtKQVFCakFRQUFEZ0VDQUV2N0FBRHJDZ0lBekFrQUFOWUNBZ0J4SGdBQVVBUUNBT0lBQUFBNFxcXG5BQUlBOC9rQUFOUUpBUUNlK0FJQXpnc0JBTFA0QWdEakN3RUFUUjhBQUZrR0F3RDVIZ0FBbGdVQ0FDLzRBZ0JmQ3dFQUx2b0FBQU1LQVFcXFxuQVUrQUlBUkFzQkFOSDZBQUNrQ2dFQXhSNEFBQTBGQXdEZkNRQUEzQUlDQUtINEFnRFJDd0VBT2ZrQUFCb0pBUUFvQWdBQThBRUNBTkw0XFxcbkFnQUNEQUVBdmRFQkFDUUxBd0NHSHdBQTJ3WUVBR2o0QWdDWUN3RUFLZ0lBQVBRQkF3RGorQUlBRXd3QkFGb0tBQURrQWdJQXlCOEFBS1xcXG5RSEFnQWkrZ0FBL0FrQkFPMEJBQUNSQVFNQW4va0FBSUFKQVFDNCtRSUE2QXdCQU9mNUFnQVhEUUVBdS9vQUFJNEtBUURXQVFBQVhRRURcXFxuQURIN0FBREJDZ0lBUmdFQUFONEFBZ0R5SGdBQWlBVUNBS0VmQUFCQUJ3TUFHQjRBQUlnREFnQ2IrZ0FBYmdvQkFJRDZBQUJUQ2dFQXpQXFxcbm9BQUo4S0FRQjZBUUFBT0FFQ0FEc2VBQURVQXdJQWRCNEFBRllFQWdCcitBSUFtd3NCQUNNZUFBQ2dBd0lBZFFFQUFDNEJBZ0ErSGdBQVxcXG4yZ01DQU5zRUFBQjhBZ0lBbXlFQUFCTUlBZ0NFSGdBQWVnUUNBTS81QUFDd0NRRUFSQjRBQU9ZREFnQWFIZ0FBakFNQ0FHVWZBQUNLQmdcXFxuTUFLZmtBQUFvSkFRQkhJZ0FBS3dnQ0FQSUVBQUNpQWdJQWZQZ0NBS3dMQVFBdkhnQUF1UU1EQUVyNEFnQjZDd0VBalBrQ0FMd01BUUNoXFxcbitRSUEwUXdCQU1nZUFBQVdCUUlBVndFQUFQWUFBZ0MvK0FJQTd3c0JBRUg3QUFEYkNnSUErUVFBQUt3Q0FnQ1YrUUlBeFF3QkFDNEJBQVxcXG5DK0FBSUF0dmtBQUpjSkFRQzhIZ0FBOUFRQ0FDRWVBQUNjQXdJQVFmZ0NBSEVMQVFBV0FRQUFrZ0FDQUZNRUFBQmNBZ0lBa3ZrQ0FNSU1cXFxuQVFCazBRRUFIUXNEQU9INEFnQVJEQUVBZGZvQUFFZ0tBUUFDK1FBQTR3Z0JBQWo1QUFEcENBRUFGL2dDQUVjTEFRQmYrUUFBUUFrQkFEXFxcbnY0QWdCckN3RUFEd0VBQUlnQUFnRFRBQUFBSWdBQ0FHa3dBQUNKQ0FJQVpSNEFBRE1FQXdCRCt3QUEzUW9DQUxvd0FBQ3hDQUlBbXg4QVxcXG5BQ2tIQkFCc0FRQUFIQUVDQU1jQUFBQU1BQUlBYS9rQ0FKc01BUUQ0K1FBQTJRa0JBRmdCQUFENEFBSUFZOUVCQUJvTEF3Q25IZ0FBdVFcXFxuUURBSWdpQUFCTkNBSUF5L29BQUo0S0FRQUIrUUFBNGdnQkFJNGZBQUQ1QmdRQUNmb0NBRGtOQVFESStRSUErQXdCQUE0ZUFBQndBd0lBXFxcblNma0FBQ29KQVFEb0FBQUFRZ0FDQUR6NkFBQVJDZ0VBN1BnQ0FCd01BUURiK0FJQUN3d0JBQmdDQUFEZ0FRSUFaVEFBQUlVSUFnQjgrZ1xcXG5BQVR3b0JBSUlmQUFETEJnUUFteDRBQUtZRUFnQUpBZ0FBd2dFQ0FORWZBQUMyQndJQSt2a0NBQ29OQVFEME1BQUExUWdDQUJvZkFBRFlcXFxuQlFNQVhCNEFBQjRFQXdCcitnQUFRQW9CQU43NUFnQU9EUUVBeHZrQUFLY0pBUURhQVFBQWFRRURBQTRmQUFDK0JRTUFlL2tBQUZ3SkFRXFxcbkREK1FBQXBBa0JBQmNCQUFDVUFBSUFSZmtBQUNZSkFRRCsrUUlBTGcwQkFOWWVBQUE0QlFNQUpRWUFBTFFDQWdDOCtRSUE3QXdCQUVraVxcXG5BQUF0Q0FJQTFBRUFBRmdCQWdEdytRSUFJQTBCQURINUFnQmhEQUVBS3ZrQ0FGb01BUURiSHdBQXlRY0NBSHY2QUFCT0NnRUFndmdDQUxcXFxuSUxBUUR2K0FJQUh3d0JBRS81QUFBd0NRRUFrdzhBQUM0REFnQkYrUUlBZFF3QkFGWXdBQUIzQ0FJQVdRa0FBTVlDQWdDc0lnQUFVUWdDXFxcbkFQWWZBQUQ3QndJQUFmZ0NBREVMQVFBaCtRQUFBZ2tCQUVINkFBQVdDZ0VBL3ZrQUFOOEpBUUNqK2dBQWRnb0JBTFQ0QWdEa0N3RUFEQVxcXG5JQUFNZ0JBZ0RCK1FBQW9na0JBQUFnQUFBTENBRUFCZmtDQURVTUFRQU5CQUFBVUFJQ0FIa2ZBQUM3QmdJQVcva0NBSXNNQVFCeUhnQUFcXFxuVWdRQ0FCdjVBZ0JMREFFQTRma0FBTUlKQVFETCtRSUErd3dCQUUzNEFnQjlDd0VBcC9nQ0FOY0xBUUFGSHdBQXBRVURBREQ3QUFDL0NnXFxcbklBQWZvQUFPSUpBUUR2QUFBQVVBQUNBTURSQVFBdEN3TUFHZmdDQUVrTEFRREtBQUFBRWdBQ0FLNGhBQUFWQ0FJQUxoNEFBTFlEQXdEYVxcXG5NQUFBendnQ0FJRDRBZ0N3Q3dFQU12Z0NBR0lMQVFEYkFRQUFiQUVEQU9jRUFBQ1FBZ0lBVy9nQ0FJc0xBUUR3QVFBQW1BRUNBTWY1QWdcXFxuRDNEQUVBYUI0QUFEd0VBd0FNK1FBQTdRZ0JBRTM3QUFEdkNnSUE5UGdDQUNRTUFRQ3dBd0FBTlFJREFBLzVBQUR3Q0FFQW4vZ0NBTThMXFxcbkFRQ2FId0FBSlFjRUFJajZBQUJiQ2dFQXY5RUJBQ29MQXdCeE1BQUFqUWdDQUduNkFBQStDZ0VBSmhBQUFEb0RBZ0FhK2dBQTlna0JBQVxcXG5NZUFBQllBd0lBS1BrQUFBa0pBUUIwK1FJQXBBd0JBRXNMQUFEc0FnSUFIUjhBQU9FRkF3QmxBUUFBRWdFQ0FOTDZBQUNsQ2dFQXlmb0FcXFxuQUp3S0FRQ1grQUlBeHdzQkFBLzZBZ0EvRFFFQXJ2a0NBTjRNQVFESUFBQUFEZ0FDQUx6NEFnRHNDd0VBYXZrQ0FKb01BUUQ3K1FJQUt3XFxcbjBCQU0zNEFnRDlDd0VBSC9zQUFLOEtBZ0JMK1FJQWV3d0JBQkg0QWdCQkN3RUFXZ2tBQU1nQ0FnRGNNQUFBMFFnQ0FIZ1BBQUFxQXdJQVxcXG5DZmtDQURrTUFRQ3VJZ0FBVlFnQ0FOajVBQUM1Q1FFQWp2b0FBR0VLQVFBcUhnQUFyZ01DQUFnQkFBQjZBQUlBei9rQ0FQOE1BUUI3SGdcXFxuQUFad1FEQU12NEFnRDdDd0VBd3ZvQUFKVUtBUUJmMFFFQUR3c0NBQ1Q1QUFBRkNRRUFiL2tBQUZBSkFRRGVIZ0FBVUFVREFJZjVBZ0MzXFxcbkRBRUFjaDhBQUswR0FnRFVIZ0FBTWdVREFMTDRBZ0RpQ3dFQVF2b0FBQmNLQVFBbUJnQUF0Z0lDQUozNkFBQndDZ0VBcy9rQ0FPTU1BUVxcXG5BWitRSUFTUXdCQU5QNUFBQzBDUUVBY2ZvQUFFUUtBUUF2SHdBQURRWURBTmtlQUFCQkJRTUFML3NBQUwwS0FnRGMrQUlBREF3QkFMUWVcXFxuQUFEZ0JBTUFKZm9BQVAwSkFRQnQrQUlBblFzQkFPb0VBQUNTQWdJQXpSNEFBQ0FGQWdBQkh3QUFtZ1VDQU5ENEFnQUFEQUVBT3ZrQ0FHXFxcbm9NQVFBTUJBQUFUZ0lDQURyNUFBQWJDUUVBLy9rQUFPQUpBUUFtSGdBQXBnTUNBQWdmQUFDdUJRSUFBeDhBQUo4RkF3RFgrZ0FBcWdvQlxcXG5BSVQ0QWdDMEN3RUFSZmdDQUhVTEFRQ09Bd0FBSWdJQ0FOQUVBQUJ1QWdJQXZqQUFBTFVJQWdBeUh3QUFGQVlEQUFqNkFnQTREUUVBZlFcXFxuRUFBRDRCQWdBOUhnQUEyQU1DQUN6NkFBQUJDZ0VBWC9rQ0FJOE1BUUNjK1FJQXpBd0JBRzhmQUFDbUJnTUFOL2tBQUJnSkFRQTArZ0FBXFxcbkNRb0JBQ29mQUFEK0JRTUFhUThBQUNJREFnRGdBQUFBTkFBQ0FIajVBZ0NvREFFQWYva0NBSzhNQVFEdkFRQUFsZ0VDQUVNYkFBQlFBd1xcXG5JQVZRRUFBUElBQWdER0h3QUFud2NDQUFvQ0FBREVBUUlBZHpBQUFKVUlBZ0FiSGdBQWpnTUNBSVg0QWdDMUN3RUFEUUlBQU1vQkFnREVcXFxuK1FBQXBRa0JBS2Y1QUFDSUNRRUFqdmtBQUc4SkFRQk5Ed0FBR2dNQ0FBWDRBZ0ExQ3dFQVdRRUFBUG9BQWdEMEFBQUFXQUFDQUVBZkFBXFxcbkE4QmdJQUFQb0FBT0VKQVFEMitRSUFKZzBCQUs3NkFBQ0JDZ0VBRmZvQUFQRUpBUUFySVFBQUR3Z0NBQWI2QWdBMkRRRUExUUFBQUNZQVxcXG5BZ0F0SGdBQXRBTUNBQThmQUFEQkJRTUFjU0lBQURzSUFnQnhId0FBcXdZQ0FFZjZBQUFjQ2dFQVN3MEFBQXNEQWdBYytBSUFUQXNCQUxcXFxua2ZBQUNNQndJQUp2b0FBUDRKQVFENUh3QUFBZ2dDQURRQkFBREVBQUlBa2ZrQUFISUpBUUJnMFFFQUVRc0RBS3o1QUFDTkNRRUFLUGdDXFxcbkFGZ0xBUURaSHdBQXhRY0NBT3Y0QWdBYkRBRUFpL2dDQUxzTEFRQ3grUUlBNFF3QkFMejVBQUNkQ1FFQUt2b0FBUDhKQVFCOE1BQUFtd1xcXG5nQ0FQVUJBQUNjQVFJQWVCOEFBTGtHQWdCeStnQUFSUW9CQUlBaUFBQkZDQUlBR1BrQ0FFZ01BUURrQUFBQVBBQUNBQUw0QWdBeUN3RUFcXFxuMXZnQ0FBWU1BUUNJQXdBQUdnSUNBTVg2QUFDWUNnRUFEUUVBQUlRQUFnQlkrUUFBT1FrQkFMNGVBQUQ0QkFNQUN2a0FBT3NJQVFENUFRXFxcbkFBb0FFQ0FFd0xBQUR1QWdJQVZ4OEFBRzhHQXdBR0hnQUFYZ01DQU5FZUFBQXBCUU1BOHg4QUFQWUhBZ0FySGdBQXNBTUNBTGdlQUFEc1xcXG5CQUlBZGZnQ0FLVUxBUUJDK1FBQUl3a0JBR29mQUFDWEJnTUE0QUVBQUhnQkF3Qk4rUUlBZlF3QkFFZ01BQUQ4QWdJQUVQZ0NBRUFMQVFcXFxuQTJId0FBSUFZREFQUDRBZ0FqREFFQS9RQUFBR1lBQWdCaCtRQUFRZ2tCQUhQNEFnQ2pDd0VBZmdNQUFCUUNBUUFSK1FBQThnZ0JBTWI2XFxcbkFBQ1pDZ0VBbmZnQ0FNMExBUUJnK1FJQWtBd0JBSUw2QUFCVkNnRUFiL2tDQUo4TUFRQXpId0FBRndZREFGOGZBQUI2QmdNQVp4NEFBRFxcXG5rRUF3RFpNQUFBelFnQ0FKcjVBQUI3Q1FFQTdDSUFBR1VJQWdBRUFnQUF1QUVDQU53QUFBQXdBQUlBSmZrQ0FGVU1BUUJvK2dBQVBRb0JcXFxuQUVENEFnQndDd0VBelFNQUFENENBZ0NRSGdBQWtnUUNBSFVmQUFDekJnSUEzQTBBQUJFREFnQS8rQUlBYndzQkFIYjVBQUJYQ1FFQWJ2XFxcbmdDQUo0TEFRQlFBUUFBN0FBQ0FKa2VBQUNrQkFJQTBRRUFBRklCQWdBVytRSUFSZ3dCQUNuNUFnQlpEQUVBQkI4QUFLSUZBd0NuSHdBQVxcXG5Wd2NFQU44QkFBQjFBUU1BUlBzQUFOOEtBZ0FjQVFBQW5nQUNBRG9CQUFET0FBSUFFQjhBQU1RRkFnREUrQUlBOUFzQkFKY2VBQUNnQkFcXFxuSUFWUGtBQURVSkFRQUErUUlBTUF3QkFQNHdBQURmQ0FJQXRqQUFBSzBJQWdCcEh3QUFsUVlDQUszNUFBQ09DUUVBZHg0QUFGd0VBZ0EzXFxcbitnQUFEQW9CQURUNUFBQVZDUUVBc1BvQUFJTUtBUURxSWdBQVlRZ0NBSno0QWdETUN3RUFKd0lBQU80QkFnQXJId0FBQVFZREFIbjVBZ1xcXG5DcERBRUFWUGtDQUlRTUFRQWVIZ0FBbGdNQ0FLNzVBQUNQQ1FFQTVmZ0NBQlVNQVFDdkF3QUFNd0lDQUV3ZkFBQldCZ01BUWZrQUFDSUpcXFxuQVFBMCtRSUFaQXdCQUtQNUFBQ0VDUUVBS1FrQUFMNENBZ0NiK0FJQXl3c0JBTEQ0QWdEZ0N3RUFneDRBQUhnRUFnRHMrUUlBSEEwQkFHXFxcbkFmQUFCOUJnSUFJd1lBQUxBQ0FnQnVIZ0FBU2dRQ0FDNFJBUUQ1Q2dJQVhRc0FBUElDQWdBVkFnQUEyZ0VDQUwzNUFnRHREQUVBZGdFQVxcXG5BREFCQWdDckhnQUF4UVFEQU9iNUFnQVdEUUVBWlBnQ0FKUUxBUUF4SHdBQUVnWUNBQy81QWdCZkRBRUFJUGdDQUZBTEFRRGFId0FBeHdcXFxuY0NBQ3o0QWdCY0N3RUFSUjhBQUVrR0F3QjhId0FBd1FZQ0FGTWVBQUFMQkFNQWN2a0NBS0lNQVFBYStnSUFTZzBCQUdENUFBQkJDUUVBXFxcbjF3RUFBR0FCQXdEb0hnQUFhZ1VEQU1vTUFBQUVBd0lBUWg4QUFFQUdBd0JkK1FJQWpRd0JBTzRCQUFDVUFRSUEwL2dDQUFNTUFRQk5IZ1xcXG5BQStRTURBTllBQUFBb0FBSUFsaDhBQUJjSEJBQVkrUUFBK1FnQkFLLzVBQUNRQ1FFQSsvZ0NBQ3NNQVFCZ0hnQUFLQVFDQUJJYkFBQkdcXFxuQXdJQS9ma0FBTjRKQVFEcitRSUFHdzBCQUdRZUFBQXdCQU1BSy9zQUFMTUtBZ0RnSHdBQTBRY0NBQlg1QWdCRkRBRUFHL2dDQUVzTEFRXFxcbkRkSHdBQXl3Y0NBTGI0QWdEbUN3RUFpUjRBQUlRRUFnQzUrUUFBbWdrQkFMTWZBQUNBQndJQTR3RUFBSUFCQWdEakJBQUFpQUlDQU04QVxcXG5BQUFjQUFJQThRQUFBRklBQWdDLytRSUE3d3dCQU1uNEFnRDVDd0VBcVBnQ0FOZ0xBUUJhK1FJQWlnd0JBS2o1QWdEWURBRUFvUUVBQUVcXFxuUUJBZ0NlK1FBQWZ3a0JBRWI3QUFEaENnSUF4L2tBQUtnSkFRQjJCQUFBWmdJQ0FNMEJBQUJLQVFJQXYva0FBS0FKQVFDdEhnQUF5d1FEXFxcbkFBVUJBQUIwQUFJQXBQa0NBTlFNQVFCYkFRQUEvZ0FDQU1uNUFBQ3FDUUVBR1FFQUFKZ0FBZ0JHK1FBQUp3a0JBRlF3QUFCMUNBSUFEUFxcXG5vQ0FEd05BUURQQVFBQVRnRUNBSDM2QUFCUUNnRUFSUGtBQUNVSkFRQWQrZ0FBK1FrQkFNTDVBZ0R5REFFQVpQa0FBRVVKQVFBWkFnQUFcXFxuNGdFQ0FOMzVBQUMrQ1FFQWl4OEFBTzBHQkFCaUlnQUFNUWdDQUxQNUFBQ1VDUUVBb3ZrQUFJTUpBUUJRTUFBQWNRZ0NBT2dCQUFDR0FRXFxcbklBMHpBQUFNVUlBZ0RKTUFBQXZ3Z0NBRnI1QUFBN0NRRUFpdmtBQUdzSkFRQjIrZ0FBU1FvQkFCYjRBZ0JHQ3dFQVFCc0FBRXdEQWdBU1xcXG5BZ0FBMUFFQ0FKRWVBQUNVQkFJQTVQa0FBTVVKQVFDWUh3QUFId2NEQUJENUFBRHhDQUVBMlBrQ0FBZ05BUUFkK1FJQVRRd0JBSndmQUFcXFxuQXRCd1FBMndBQUFDNEFBZ0F5QWdBQUNnSUNBSlg1QUFCMkNRRUE0dmtBQU1NSkFRQWpId0FBNndVREFONE5BQUFXQXdJQXp2a0FBSzhKXFxcbkFRRHRIZ0FBZVFVREFBd2ZBQUM0QlFNQUhQa0NBRXdNQVFDd01BQUFwd2dDQUpENUFBQnhDUUVBYUI4QUFKTUdBZ0M4SHdBQWtnY0NBTFxcXG5mNUFnRG5EQUVBYS9rQUFFd0pBUUFKK2dBQTZna0JBUDhCQUFDdUFRSUFFUGtDQUVBTUFRRDArUUlBSkEwQkFILzRBZ0N2Q3dFQVdSNEFcXFxuQUJnRUFnQytGQUVBQlFzQ0FHejVBQUJOQ1FFQXJBOEFBRFlEQWdBVCtRQUE5QWdCQUEzNEFnQTlDd0VBSi9rQ0FGY01BUUEzK0FJQVp3XFxcbnNCQUt3d0FBQ2pDQUlBN2g4QUFQQUhBZ0NoK1FBQWdna0JBRlFlQUFBT0JBSUFiaDhBQUtNR0F3QzMrZ0FBaWdvQkFEdjdBQURUQ2dJQVxcXG44ZmtDQUNFTkFRQTJDZ0FBNEFJQ0FJa2ZBQURtQmdNQXpCNEFBQjRGQWdCWStRSUFpQXdCQUdzQkFBQWFBUUlBUlBrQ0FIUU1BUUQ1K0FcXFxuSUFLUXdCQUFjRUFBQk1BZ0lBOWg0QUFKQUZBZ0NqK1FJQTB3d0JBSUg0QWdDeEN3RUFUQk1CQVA4S0FnQWErQUlBU2dzQkFOMzVBZ0FOXFxcbkRRRUFaUG9BQURrS0FRQ3YrQUlBM3dzQkFPMzVBZ0FkRFFFQTZ2a0FBTXNKQVFDY0VBRUE5UW9DQUU4QkFBRHFBQUlBZXZrQUFGc0pBUVxcXG5CSitRSUFlUXdCQUZzS0FBRG1BZ0lBTnZrQUFCY0pBUUJlQ2dBQTZBSUNBSnI0QWdES0N3RUFTeDhBQUZNR0F3Q0UrUUFBWlFrQkFHMGVcXFxuQUFCSUJBSUFEdmtDQUQ0TUFRQXFJd0FBYWdnQkFBMzZBZ0E5RFFFQXN2b0FBSVVLQVFCUUJBQUFXQUlDQUFJZkFBQ2NCUU1BTXZvQUFBXFxcbmNLQVFCMkh3QUF0UVlDQUczNUFnQ2REQUVBcC9rQ0FOY01BUUNqSGdBQXJnUUNBTHI1QUFDYkNRRUFGUjhBQU5FRkF3Q3ZId0FBZFFjRVxcXG5BR0FCQUFBSUFRSUFZL2tDQUpNTUFRQWwrUUFBQmdrQkFQYjVBQURYQ1FFQXdEQUFBTGNJQWdBZUFnQUE2QUVDQUp6NkFBQnZDZ0VBT3ZcXFxuc0FBTkVLQWdDNkh3QUFqZ2NDQUhRREFBQVRBZ0VBM0NvQUFHc0lBZ0FmK1FJQVR3d0JBTUFNQUFEK0FnSUE4eDRBQUlvRkFnRERId0FBXFxcbm1nY0NBTDM0QWdEdEN3RUFId0VBQUtRQUFnQ25Ed0FBTkFNQ0FQVDVBQURWQ1FFQXpBc0FBUG9DQWdCSCtBSUFkd3NCQUVvZkFBQlFCZ1xcXG5NQWova0NBTDhNQVFCdStRQUFUd2tCQU9iNUFBREhDUUVBNC9rQUFNUUpBUUJFK0FJQWRBc0JBQlA0QWdCREN3RUF0Zm9BQUlnS0FRQ3FcXFxuSHdBQVlRY0VBTUVBQUFBQ0FBSUFheDRBQUVRRUFnRGxId0FBM1FjQ0FBZjRBZ0EzQ3dFQVgvZ0NBSThMQVFBNytRQUFIQWtCQVBnQkFBXFxcbkNlQVFJQWFSNEFBRDhFQXdEbkh3QUE0UWNEQUZjZUFBQVVCQUlBekFBQUFCWUFBZ0NiK1FJQXl3d0JBUEFFQUFDZUFnSUEvZmdDQUMwTVxcXG5BUUFoQVFBQXFBQUNBUElBQUFCVUFBSUFtdm9BQUcwS0FRRHYrUUlBSHcwQkFIajRBZ0NvQ3dFQVdma0FBRG9KQVFCTEV3RUEvUW9DQUxcXFxuNGZBQUNVQndFQVZ2b0FBQ3NLQVFDKzBRRUFKd3NEQUx2NEFnRHJDd0VBNVBnQ0FCUU1BUUFaSGdBQWlnTUNBQzM1QWdCZERBRUFMQjhBXFxcbkFBUUdBd0RoQUFBQU5nQUNBTGI1QWdEbURBRUFqZmtBQUc0SkFRQVUrUUFBOVFnQkFCbjZBQUQxQ1FFQXp2b0FBS0VLQVFCYUFRQUEvQVxcXG5BQ0FIUWlBQUE5Q0FJQVRQa0FBQzBKQVFERUh3QUFuQWNEQUxvVkFRQUhDd0lBdVBnQ0FPZ0xBUUFCK2dJQU1RMEJBT3I0QWdBYURBRUFcXFxubUI0QUFLSUVBZ0NMK1FJQXV3d0JBTno1QWdBTURRRUFtUjhBQUNJSEF3Q0tId0FBNlFZRUFCd2ZBQURlQlFNQU9Qb0FBQTBLQVFCVCtRXFxcbklBZ3d3QkFQZjRBZ0FuREFFQVFSOEFBRDRHQWdESEhnQUFFd1VEQUJiNkFnQkdEUUVBV2ZnQ0FJa0xBUUJaK1FJQWlRd0JBTS80QWdEL1xcXG5Dd0VBVEFFQUFPUUFBZ0NUK1FJQXd3d0JBRDRCQUFEV0FBSUFLZ0VBQUxZQUFnQ1IrUUlBd1F3QkFNb2ZBQUNvQndJQWlRTUFBQndDQWdcXFxuQnorZ0FBUmdvQkFObjVBZ0FKRFFFQVF3RUFBTmdBQWdDVCtBSUF3d3NCQUNmNEFnQlhDd0VBWS9vQUFEZ0tBUUNzQXdBQUxRSUNBQWNmXFxcbkFBQ3JCUU1BdXg0QUFQSUVBZ0JEK1FJQWN3d0JBR2Y2QUFBOENnRUExZ1FBQUhZQ0FnQVNId0FBeUFVREFQUUJBQUNhQVFJQU54NEFBTVxcXG5vREFnQVArUUlBUHd3QkFCZ2ZBQURVQlFJQWR3UUFBR2dDQWdBQ0FRQUFiZ0FDQUFENEFnQXdDd0VBci9vQUFJSUtBUURBQmdBQXVBSUNcXFxuQU9zQUFBQklBQUlBMmg0QUFFUUZBd0I5SHdBQXd3WUNBRmtLQUFEaUFnSUE4dmdDQUNJTUFRQ2VNQUFBb1FnQ0FOWXdBQURKQ0FJQUx2XFxcbmtDQUY0TUFRQXorUUFBRkFrQkFHNzVBZ0NlREFFQVZSNEFBQkFFQWdDQklnQUFSd2dDQUU0ZUFBRDhBd01BY3ZnQ0FLSUxBUUQ4K1FJQVxcXG5MQTBCQUx6UkFRQWlDd0lBVVBvQUFDVUtBUUFzK1FJQVhBd0JBSEF3QUFDTENBSUE2ZmtBQU1vSkFRQTgrQUlBYkFzQkFQajVBZ0FvRFFcXFxuRUFVaDhBQUdBR0F3Q3MrZ0FBZndvQkFKUWVBQUNhQkFJQTF2b0FBS2tLQVFETEh3QUFxZ2NDQURQNkFBQUlDZ0VBRy9vQUFQY0pBUUR1XFxcbitRQUF6d2tCQUN3ZUFBQ3lBd0lBQXdJQUFMWUJBZ0IzK0FJQXB3c0JBUGdmQUFBQUNBSUE2UUVBQUlnQkFnRCtBUUFBckFFQ0FHejVBZ1xcXG5DY0RBRUFVUjRBQUFVRUF3RGVCQUFBZ2dJQ0FLVDVBQUNGQ1FFQVFQc0FBTmtLQWdBaUJnQUFyZ0lDQU13REFBQThBZ0lBbnZrQ0FNNE1cXFxuQVFBcitRQUFEQWtCQU9FaUFBQmJDQUlBZEFFQUFDd0JBZ0JLSGdBQThnTUNBRG41QWdCcERBRUF6Z01BQUVBQ0FnQ24rZ0FBZWdvQkFJXFxcblg2QUFCWUNnRUE1L2tBQU1nSkFRQUhBUUFBZUFBQ0FKWDZBQUJvQ2dFQWMva0FBRlFKQVFBeitRSUFZd3dCQU1MNUFBQ2pDUUVBNFI0QVxcXG5BRmtGQXdEVEFRQUFWZ0VDQU5ENUFnQUFEUUVBS3ZzQUFMRUtBZ0Q3QUFBQVlnQUNBRThlQUFEL0F3TUFKaDhBQVBRRkF3RGRBQUFBTWdcXFxuQUNBQ1lDQUFEc0FRSUFNZmdDQUdFTEFRRHUrUUlBSGcwQkFGWDVBQUEyQ1FFQWJnRUFBQ0FCQWdDbCtBSUExUXNCQUJzQkFBQ2NBQUlBXFxcbmRoNEFBRm9FQWdCTURRQUFEUU1DQUR3ZkFBQXdCZ01BQ2g0QUFHZ0RBZ0I0SGdBQVhnUURBQ3I0QWdCYUN3RUFMUUVBQUx3QUFnREYrQVxcXG5JQTlRc0JBRDRmQUFBMkJnTUFYUGtBQUQwSkFRQWhId0FBNWdVQ0FOZjVBZ0FIRFFFQWNCOEFBS2tHQWdBVStRSUFSQXdCQUlQNkFBQldcXFxuQ2dFQTFSNEFBRFVGQXdEbkhnQUFhQVVDQUhnaUFBQkJDQUlBd1BrQUFLRUpBUURYSGdBQU93VURBTXI0QWdENkN3RUFQUnNBQUVvREFnXFxcbkN0K1FJQTNRd0JBRjRKQUFEUUFnSUFEQ0lBQUNFSUFnRGZId0FBendjQ0FFajZBQUFkQ2dFQUJCNEFBRm9EQWdEWEJBQUFlQUlDQUJZQ1xcXG5BQURjQVFJQWNCNEFBRTRFQWdCVytBSUFoZ3NCQU9rQUFBQkVBQUlBVWZrQUFESUpBUUF4QWdBQUJ3SURBRk1mQUFCakJnTUFGQjRBQUhcXFxud0RBd0NEK1FBQVpBa0JBTlQ1QUFDMUNRRUFjL2tDQUtNTUFRRGYrUUlBRHcwQkFJejVBQUJ0Q1FFQUNBSUFBTUFCQWdDVitBSUF4UXNCXFxcbkFLcjZBQUI5Q2dFQVhBUUFBR0FDQWdDNE1BQUFyd2dDQUVRaUFBQXBDQUlBL3dBQUFHZ0FBZ0RSQkFBQWNBSUNBQ1loQUFBTkNBRUFDd1xcXG5FQUFJQUFBZ0JGQVFBQTNBQUNBSGo1QUFCWkNRRUF6UjhBQUs0SEFnQVMrUUlBUWd3QkFEYjZBQUFMQ2dFQXdQa0NBUEFNQVFEc0JBQUFcXFxubGdJQ0FBNEJBQUNHQUFJQWpma0NBTDBNQVFCZEhnQUFJUVFEQUVNUEFBQVlBd0lBS1I0QUFLd0RBZ0ErK1FBQUh3a0JBTVg1QWdEMURBXFxcbkVBemlFQUFCa0lBZ0I3K0FJQXF3c0JBTHI1QWdEcURBRUF3aDRBQUFRRkF3Q2FJUUFBRVFnQ0FHUWZBQUNIQmdNQUJ2a0FBT2NJQVFEWFxcXG4rUUFBdUFrQkFFRUFBQUFBQXdBQVFRQUFBQUVEQUFCQkFBQUFBZ01BQUVFQUFBQURBd0FBUVFBQUFBZ0RBQUJCQUFBQUNnTUFBRU1BQUFcXFxuQW5Bd0FBUlFBQUFBQURBQUJGQUFBQUFRTUFBRVVBQUFBQ0F3QUFSUUFBQUFnREFBQkpBQUFBQUFNQUFFa0FBQUFCQXdBQVNRQUFBQUlEXFxcbkFBQkpBQUFBQ0FNQUFFNEFBQUFEQXdBQVR3QUFBQUFEQUFCUEFBQUFBUU1BQUU4QUFBQUNBd0FBVHdBQUFBTURBQUJQQUFBQUNBTUFBRlxcXG5VQUFBQUFBd0FBVlFBQUFBRURBQUJWQUFBQUFnTUFBRlVBQUFBSUF3QUFXUUFBQUFFREFBQmhBQUFBQUFNQUFHRUFBQUFCQXdBQVlRQUFcXFxuQUFJREFBQmhBQUFBQXdNQUFHRUFBQUFJQXdBQVlRQUFBQW9EQUFCakFBQUFKd01BQUdVQUFBQUFBd0FBWlFBQUFBRURBQUJsQUFBQUFnXFxcbk1BQUdVQUFBQUlBd0FBYVFBQUFBQURBQUJwQUFBQUFRTUFBR2tBQUFBQ0F3QUFhUUFBQUFnREFBQnVBQUFBQXdNQUFHOEFBQUFBQXdBQVxcXG5id0FBQUFFREFBQnZBQUFBQWdNQUFHOEFBQUFEQXdBQWJ3QUFBQWdEQUFCMUFBQUFBQU1BQUhVQUFBQUJBd0FBZFFBQUFBSURBQUIxQUFcXFxuQUFDQU1BQUhrQUFBQUJBd0FBZVFBQUFBZ0RBQUJCQUFBQUJBTUFBR0VBQUFBRUF3QUFRUUFBQUFZREFBQmhBQUFBQmdNQUFFRUFBQUFvXFxcbkF3QUFZUUFBQUNnREFBQkRBQUFBQVFNQUFHTUFBQUFCQXdBQVF3QUFBQUlEQUFCakFBQUFBZ01BQUVNQUFBQUhBd0FBWXdBQUFBY0RBQVxcXG5CREFBQUFEQU1BQUdNQUFBQU1Bd0FBUkFBQUFBd0RBQUJrQUFBQURBTUFBRVVBQUFBRUF3QUFaUUFBQUFRREFBQkZBQUFBQmdNQUFHVUFcXFxuQUFBR0F3QUFSUUFBQUFjREFBQmxBQUFBQndNQUFFVUFBQUFvQXdBQVpRQUFBQ2dEQUFCRkFBQUFEQU1BQUdVQUFBQU1Bd0FBUndBQUFBXFxcbklEQUFCbkFBQUFBZ01BQUVjQUFBQUdBd0FBWndBQUFBWURBQUJIQUFBQUJ3TUFBR2NBQUFBSEF3QUFSd0FBQUNjREFBQm5BQUFBSndNQVxcXG5BRWdBQUFBQ0F3QUFhQUFBQUFJREFBQkpBQUFBQXdNQUFHa0FBQUFEQXdBQVNRQUFBQVFEQUFCcEFBQUFCQU1BQUVrQUFBQUdBd0FBYVFcXFxuQUFBQVlEQUFCSkFBQUFLQU1BQUdrQUFBQW9Bd0FBU1FBQUFBY0RBQUJLQUFBQUFnTUFBR29BQUFBQ0F3QUFTd0FBQUNjREFBQnJBQUFBXFxcbkp3TUFBRXdBQUFBQkF3QUFiQUFBQUFFREFBQk1BQUFBSndNQUFHd0FBQUFuQXdBQVRBQUFBQXdEQUFCc0FBQUFEQU1BQUU0QUFBQUJBd1xcXG5BQWJnQUFBQUVEQUFCT0FBQUFKd01BQUc0QUFBQW5Bd0FBVGdBQUFBd0RBQUJ1QUFBQURBTUFBRThBQUFBRUF3QUFid0FBQUFRREFBQlBcXFxuQUFBQUJnTUFBRzhBQUFBR0F3QUFUd0FBQUFzREFBQnZBQUFBQ3dNQUFGSUFBQUFCQXdBQWNnQUFBQUVEQUFCU0FBQUFKd01BQUhJQUFBXFxcbkFuQXdBQVVnQUFBQXdEQUFCeUFBQUFEQU1BQUZNQUFBQUJBd0FBY3dBQUFBRURBQUJUQUFBQUFnTUFBSE1BQUFBQ0F3QUFVd0FBQUNjRFxcXG5BQUJ6QUFBQUp3TUFBRk1BQUFBTUF3QUFjd0FBQUF3REFBQlVBQUFBSndNQUFIUUFBQUFuQXdBQVZBQUFBQXdEQUFCMEFBQUFEQU1BQUZcXFxuVUFBQUFEQXdBQWRRQUFBQU1EQUFCVkFBQUFCQU1BQUhVQUFBQUVBd0FBVlFBQUFBWURBQUIxQUFBQUJnTUFBRlVBQUFBS0F3QUFkUUFBXFxcbkFBb0RBQUJWQUFBQUN3TUFBSFVBQUFBTEF3QUFWUUFBQUNnREFBQjFBQUFBS0FNQUFGY0FBQUFDQXdBQWR3QUFBQUlEQUFCWkFBQUFBZ1xcXG5NQUFIa0FBQUFDQXdBQVdRQUFBQWdEQUFCYUFBQUFBUU1BQUhvQUFBQUJBd0FBV2dBQUFBY0RBQUI2QUFBQUJ3TUFBRm9BQUFBTUF3QUFcXFxuZWdBQUFBd0RBQUJQQUFBQUd3TUFBRzhBQUFBYkF3QUFWUUFBQUJzREFBQjFBQUFBR3dNQUFFRUFBQUFNQXdBQVlRQUFBQXdEQUFCSkFBXFxcbkFBREFNQUFHa0FBQUFNQXdBQVR3QUFBQXdEQUFCdkFBQUFEQU1BQUZVQUFBQU1Bd0FBZFFBQUFBd0RBQUJWQUFBQUNBTUFBQVFEQUFCMVxcXG5BQUFBQ0FNQUFBUURBQUJWQUFBQUNBTUFBQUVEQUFCMUFBQUFDQU1BQUFFREFBQlZBQUFBQ0FNQUFBd0RBQUIxQUFBQUNBTUFBQXdEQUFcXFxuQlZBQUFBQ0FNQUFBQURBQUIxQUFBQUNBTUFBQUFEQUFCQkFBQUFDQU1BQUFRREFBQmhBQUFBQ0FNQUFBUURBQUJCQUFBQUJ3TUFBQVFEXFxcbkFBQmhBQUFBQndNQUFBUURBQURHQUFBQUJBTUFBT1lBQUFBRUF3QUFSd0FBQUF3REFBQm5BQUFBREFNQUFFc0FBQUFNQXdBQWF3QUFBQVxcXG53REFBQlBBQUFBS0FNQUFHOEFBQUFvQXdBQVR3QUFBQ2dEQUFBRUF3QUFid0FBQUNnREFBQUVBd0FBdHdFQUFBd0RBQUNTQWdBQURBTUFcXFxuQUdvQUFBQU1Bd0FBUndBQUFBRURBQUJuQUFBQUFRTUFBRTRBQUFBQUF3QUFiZ0FBQUFBREFBQkJBQUFBQ2dNQUFBRURBQUJoQUFBQUNnXFxcbk1BQUFFREFBREdBQUFBQVFNQUFPWUFBQUFCQXdBQTJBQUFBQUVEQUFENEFBQUFBUU1BQUVFQUFBQVBBd0FBWVFBQUFBOERBQUJCQUFBQVxcXG5FUU1BQUdFQUFBQVJBd0FBUlFBQUFBOERBQUJsQUFBQUR3TUFBRVVBQUFBUkF3QUFaUUFBQUJFREFBQkpBQUFBRHdNQUFHa0FBQUFQQXdcXFxuQUFTUUFBQUJFREFBQnBBQUFBRVFNQUFFOEFBQUFQQXdBQWJ3QUFBQThEQUFCUEFBQUFFUU1BQUc4QUFBQVJBd0FBVWdBQUFBOERBQUJ5XFxcbkFBQUFEd01BQUZJQUFBQVJBd0FBY2dBQUFCRURBQUJWQUFBQUR3TUFBSFVBQUFBUEF3QUFWUUFBQUJFREFBQjFBQUFBRVFNQUFGTUFBQVxcXG5BbUF3QUFjd0FBQUNZREFBQlVBQUFBSmdNQUFIUUFBQUFtQXdBQVNBQUFBQXdEQUFCb0FBQUFEQU1BQUVFQUFBQUhBd0FBWVFBQUFBY0RcXFxuQUFCRkFBQUFKd01BQUdVQUFBQW5Bd0FBVHdBQUFBZ0RBQUFFQXdBQWJ3QUFBQWdEQUFBRUF3QUFUd0FBQUFNREFBQUVBd0FBYndBQUFBXFxcbk1EQUFBRUF3QUFUd0FBQUFjREFBQnZBQUFBQndNQUFFOEFBQUFIQXdBQUJBTUFBRzhBQUFBSEF3QUFCQU1BQUZrQUFBQUVBd0FBZVFBQVxcXG5BQVFEQUFBQUF3QUFBUU1BQUJNREFBQUlBd0FBQVFNQUFMa0NBQUE3QUFBQXFBQUFBQUVEQUFDUkF3QUFBUU1BQUxjQUFBQ1ZBd0FBQVFcXFxuTUFBSmNEQUFBQkF3QUFtUU1BQUFFREFBQ2ZBd0FBQVFNQUFLVURBQUFCQXdBQXFRTUFBQUVEQUFDNUF3QUFDQU1BQUFFREFBQ1pBd0FBXFxcbkNBTUFBS1VEQUFBSUF3QUFzUU1BQUFFREFBQzFBd0FBQVFNQUFMY0RBQUFCQXdBQXVRTUFBQUVEQUFERkF3QUFDQU1BQUFFREFBQzVBd1xcXG5BQUNBTUFBTVVEQUFBSUF3QUF2d01BQUFFREFBREZBd0FBQVFNQUFNa0RBQUFCQXdBQTBnTUFBQUVEQUFEU0F3QUFDQU1BQUJVRUFBQUFcXFxuQXdBQUZRUUFBQWdEQUFBVEJBQUFBUU1BQUFZRUFBQUlBd0FBR2dRQUFBRURBQUFZQkFBQUFBTUFBQ01FQUFBR0F3QUFHQVFBQUFZREFBXFxcbkE0QkFBQUJnTUFBRFVFQUFBQUF3QUFOUVFBQUFnREFBQXpCQUFBQVFNQUFGWUVBQUFJQXdBQU9nUUFBQUVEQUFBNEJBQUFBQU1BQUVNRVxcXG5BQUFHQXdBQWRBUUFBQThEQUFCMUJBQUFEd01BQUJZRUFBQUdBd0FBTmdRQUFBWURBQUFRQkFBQUJnTUFBREFFQUFBR0F3QUFFQVFBQUFcXFxuZ0RBQUF3QkFBQUNBTUFBQlVFQUFBR0F3QUFOUVFBQUFZREFBRFlCQUFBQ0FNQUFOa0VBQUFJQXdBQUZnUUFBQWdEQUFBMkJBQUFDQU1BXFxcbkFCY0VBQUFJQXdBQU53UUFBQWdEQUFBWUJBQUFCQU1BQURnRUFBQUVBd0FBR0FRQUFBZ0RBQUE0QkFBQUNBTUFBQjRFQUFBSUF3QUFQZ1xcXG5RQUFBZ0RBQURvQkFBQUNBTUFBT2tFQUFBSUF3QUFMUVFBQUFnREFBQk5CQUFBQ0FNQUFDTUVBQUFFQXdBQVF3UUFBQVFEQUFBakJBQUFcXFxuQ0FNQUFFTUVBQUFJQXdBQUl3UUFBQXNEQUFCREJBQUFDd01BQUNjRUFBQUlBd0FBUndRQUFBZ0RBQUFyQkFBQUNBTUFBRXNFQUFBSUF3XFxcbkFBSndZQUFGTUdBQUFuQmdBQVZBWUFBRWdHQUFCVUJnQUFKd1lBQUZVR0FBQktCZ0FBVkFZQUFOVUdBQUJVQmdBQXdRWUFBRlFHQUFEU1xcXG5CZ0FBVkFZQUFDZ0pBQUE4Q1FBQU1Ba0FBRHdKQUFBekNRQUFQQWtBQUJVSkFBQThDUUFBRmdrQUFEd0pBQUFYQ1FBQVBBa0FBQndKQUFcXFxuQThDUUFBSVFrQUFEd0pBQUFpQ1FBQVBBa0FBQ3NKQUFBOENRQUFMd2tBQUR3SkFBREhDUUFBdmdrQUFNY0pBQURYQ1FBQW9Ra0FBTHdKXFxcbkFBQ2lDUUFBdkFrQUFLOEpBQUM4Q1FBQU1nb0FBRHdLQUFBNENnQUFQQW9BQUJZS0FBQThDZ0FBRndvQUFEd0tBQUFjQ2dBQVBBb0FBQ1xcXG5zS0FBQThDZ0FBUndzQUFGWUxBQUJIQ3dBQVBnc0FBRWNMQUFCWEN3QUFJUXNBQUR3TEFBQWlDd0FBUEFzQUFKSUxBQURYQ3dBQXhnc0FcXFxuQUw0TEFBREhDd0FBdmdzQUFNWUxBQURYQ3dBQVJnd0FBRllNQUFDL0RBQUExUXdBQU1ZTUFBRFZEQUFBeGd3QUFOWU1BQURHREFBQXdnXFxcbndBQU1ZTUFBRENEQUFBMVF3QUFFWU5BQUErRFFBQVJ3MEFBRDROQUFCR0RRQUFWdzBBQU5rTkFBREtEUUFBMlEwQUFNOE5BQURaRFFBQVxcXG56dzBBQU1vTkFBRFpEUUFBM3cwQUFFSVBBQUMzRHdBQVRBOEFBTGNQQUFCUkR3QUF0dzhBQUZZUEFBQzNEd0FBV3c4QUFMY1BBQUJBRHdcXFxuQUF0UThBQUhFUEFBQnlEd0FBY1E4QUFIUVBBQUN5RHdBQWdBOEFBTE1QQUFDQUR3QUFjUThBQUlBUEFBQ1NEd0FBdHc4QUFKd1BBQUMzXFxcbkR3QUFvUThBQUxjUEFBQ21Ed0FBdHc4QUFLc1BBQUMzRHdBQWtBOEFBTFVQQUFBbEVBQUFMaEFBQUFVYkFBQTFHd0FBQnhzQUFEVWJBQVxcXG5BSkd3QUFOUnNBQUFzYkFBQTFHd0FBRFJzQUFEVWJBQUFSR3dBQU5Sc0FBRG9iQUFBMUd3QUFQQnNBQURVYkFBQStHd0FBTlJzQUFEOGJcXFxuQUFBMUd3QUFRaHNBQURVYkFBQkJBQUFBSlFNQUFHRUFBQUFsQXdBQVFnQUFBQWNEQUFCaUFBQUFCd01BQUVJQUFBQWpBd0FBWWdBQUFDXFxcbk1EQUFCQ0FBQUFNUU1BQUdJQUFBQXhBd0FBUXdBQUFDY0RBQUFCQXdBQVl3QUFBQ2NEQUFBQkF3QUFSQUFBQUFjREFBQmtBQUFBQndNQVxcXG5BRVFBQUFBakF3QUFaQUFBQUNNREFBQkVBQUFBTVFNQUFHUUFBQUF4QXdBQVJBQUFBQ2NEQUFCa0FBQUFKd01BQUVRQUFBQXRBd0FBWkFcXFxuQUFBQzBEQUFCRkFBQUFCQU1BQUFBREFBQmxBQUFBQkFNQUFBQURBQUJGQUFBQUJBTUFBQUVEQUFCbEFBQUFCQU1BQUFFREFBQkZBQUFBXFxcbkxRTUFBR1VBQUFBdEF3QUFSUUFBQURBREFBQmxBQUFBTUFNQUFFVUFBQUFuQXdBQUJnTUFBR1VBQUFBbkF3QUFCZ01BQUVZQUFBQUhBd1xcXG5BQVpnQUFBQWNEQUFCSEFBQUFCQU1BQUdjQUFBQUVBd0FBU0FBQUFBY0RBQUJvQUFBQUJ3TUFBRWdBQUFBakF3QUFhQUFBQUNNREFBQklcXFxuQUFBQUNBTUFBR2dBQUFBSUF3QUFTQUFBQUNjREFBQm9BQUFBSndNQUFFZ0FBQUF1QXdBQWFBQUFBQzREQUFCSkFBQUFNQU1BQUdrQUFBXFxcbkF3QXdBQVNRQUFBQWdEQUFBQkF3QUFhUUFBQUFnREFBQUJBd0FBU3dBQUFBRURBQUJyQUFBQUFRTUFBRXNBQUFBakF3QUFhd0FBQUNNRFxcXG5BQUJMQUFBQU1RTUFBR3NBQUFBeEF3QUFUQUFBQUNNREFBQnNBQUFBSXdNQUFFd0FBQUFqQXdBQUJBTUFBR3dBQUFBakF3QUFCQU1BQUVcXFxud0FBQUF4QXdBQWJBQUFBREVEQUFCTUFBQUFMUU1BQUd3QUFBQXRBd0FBVFFBQUFBRURBQUJ0QUFBQUFRTUFBRTBBQUFBSEF3QUFiUUFBXFxcbkFBY0RBQUJOQUFBQUl3TUFBRzBBQUFBakF3QUFUZ0FBQUFjREFBQnVBQUFBQndNQUFFNEFBQUFqQXdBQWJnQUFBQ01EQUFCT0FBQUFNUVxcXG5NQUFHNEFBQUF4QXdBQVRnQUFBQzBEQUFCdUFBQUFMUU1BQUU4QUFBQURBd0FBQVFNQUFHOEFBQUFEQXdBQUFRTUFBRThBQUFBREF3QUFcXFxuQ0FNQUFHOEFBQUFEQXdBQUNBTUFBRThBQUFBRUF3QUFBQU1BQUc4QUFBQUVBd0FBQUFNQUFFOEFBQUFFQXdBQUFRTUFBRzhBQUFBRUF3XFxcbkFBQVFNQUFGQUFBQUFCQXdBQWNBQUFBQUVEQUFCUUFBQUFCd01BQUhBQUFBQUhBd0FBVWdBQUFBY0RBQUJ5QUFBQUJ3TUFBRklBQUFBalxcXG5Bd0FBY2dBQUFDTURBQUJTQUFBQUl3TUFBQVFEQUFCeUFBQUFJd01BQUFRREFBQlNBQUFBTVFNQUFISUFBQUF4QXdBQVV3QUFBQWNEQUFcXFxuQnpBQUFBQndNQUFGTUFBQUFqQXdBQWN3QUFBQ01EQUFCVEFBQUFBUU1BQUFjREFBQnpBQUFBQVFNQUFBY0RBQUJUQUFBQURBTUFBQWNEXFxcbkFBQnpBQUFBREFNQUFBY0RBQUJUQUFBQUl3TUFBQWNEQUFCekFBQUFJd01BQUFjREFBQlVBQUFBQndNQUFIUUFBQUFIQXdBQVZBQUFBQ1xcXG5NREFBQjBBQUFBSXdNQUFGUUFBQUF4QXdBQWRBQUFBREVEQUFCVUFBQUFMUU1BQUhRQUFBQXRBd0FBVlFBQUFDUURBQUIxQUFBQUpBTUFcXFxuQUZVQUFBQXdBd0FBZFFBQUFEQURBQUJWQUFBQUxRTUFBSFVBQUFBdEF3QUFWUUFBQUFNREFBQUJBd0FBZFFBQUFBTURBQUFCQXdBQVZRXFxcbkFBQUFRREFBQUlBd0FBZFFBQUFBUURBQUFJQXdBQVZnQUFBQU1EQUFCMkFBQUFBd01BQUZZQUFBQWpBd0FBZGdBQUFDTURBQUJYQUFBQVxcXG5BQU1BQUhjQUFBQUFBd0FBVndBQUFBRURBQUIzQUFBQUFRTUFBRmNBQUFBSUF3QUFkd0FBQUFnREFBQlhBQUFBQndNQUFIY0FBQUFIQXdcXFxuQUFWd0FBQUNNREFBQjNBQUFBSXdNQUFGZ0FBQUFIQXdBQWVBQUFBQWNEQUFCWUFBQUFDQU1BQUhnQUFBQUlBd0FBV1FBQUFBY0RBQUI1XFxcbkFBQUFCd01BQUZvQUFBQUNBd0FBZWdBQUFBSURBQUJhQUFBQUl3TUFBSG9BQUFBakF3QUFXZ0FBQURFREFBQjZBQUFBTVFNQUFHZ0FBQVxcXG5BeEF3QUFkQUFBQUFnREFBQjNBQUFBQ2dNQUFIa0FBQUFLQXdBQWZ3RUFBQWNEQUFCQkFBQUFJd01BQUdFQUFBQWpBd0FBUVFBQUFBa0RcXFxuQUFCaEFBQUFDUU1BQUVFQUFBQUNBd0FBQVFNQUFHRUFBQUFDQXdBQUFRTUFBRUVBQUFBQ0F3QUFBQU1BQUdFQUFBQUNBd0FBQUFNQUFFXFxcbkVBQUFBQ0F3QUFDUU1BQUdFQUFBQUNBd0FBQ1FNQUFFRUFBQUFDQXdBQUF3TUFBR0VBQUFBQ0F3QUFBd01BQUVFQUFBQWpBd0FBQWdNQVxcXG5BR0VBQUFBakF3QUFBZ01BQUVFQUFBQUdBd0FBQVFNQUFHRUFBQUFHQXdBQUFRTUFBRUVBQUFBR0F3QUFBQU1BQUdFQUFBQUdBd0FBQUFcXFxuTUFBRUVBQUFBR0F3QUFDUU1BQUdFQUFBQUdBd0FBQ1FNQUFFRUFBQUFHQXdBQUF3TUFBR0VBQUFBR0F3QUFBd01BQUVFQUFBQWpBd0FBXFxcbkJnTUFBR0VBQUFBakF3QUFCZ01BQUVVQUFBQWpBd0FBWlFBQUFDTURBQUJGQUFBQUNRTUFBR1VBQUFBSkF3QUFSUUFBQUFNREFBQmxBQVxcXG5BQUF3TUFBRVVBQUFBQ0F3QUFBUU1BQUdVQUFBQUNBd0FBQVFNQUFFVUFBQUFDQXdBQUFBTUFBR1VBQUFBQ0F3QUFBQU1BQUVVQUFBQUNcXFxuQXdBQUNRTUFBR1VBQUFBQ0F3QUFDUU1BQUVVQUFBQUNBd0FBQXdNQUFHVUFBQUFDQXdBQUF3TUFBRVVBQUFBakF3QUFBZ01BQUdVQUFBXFxcbkFqQXdBQUFnTUFBRWtBQUFBSkF3QUFhUUFBQUFrREFBQkpBQUFBSXdNQUFHa0FBQUFqQXdBQVR3QUFBQ01EQUFCdkFBQUFJd01BQUU4QVxcXG5BQUFKQXdBQWJ3QUFBQWtEQUFCUEFBQUFBZ01BQUFFREFBQnZBQUFBQWdNQUFBRURBQUJQQUFBQUFnTUFBQUFEQUFCdkFBQUFBZ01BQUFcXFxuQURBQUJQQUFBQUFnTUFBQWtEQUFCdkFBQUFBZ01BQUFrREFBQlBBQUFBQWdNQUFBTURBQUJ2QUFBQUFnTUFBQU1EQUFCUEFBQUFJd01BXFxcbkFBSURBQUJ2QUFBQUl3TUFBQUlEQUFCUEFBQUFHd01BQUFFREFBQnZBQUFBR3dNQUFBRURBQUJQQUFBQUd3TUFBQUFEQUFCdkFBQUFHd1xcXG5NQUFBQURBQUJQQUFBQUd3TUFBQWtEQUFCdkFBQUFHd01BQUFrREFBQlBBQUFBR3dNQUFBTURBQUJ2QUFBQUd3TUFBQU1EQUFCUEFBQUFcXFxuR3dNQUFDTURBQUJ2QUFBQUd3TUFBQ01EQUFCVkFBQUFJd01BQUhVQUFBQWpBd0FBVlFBQUFBa0RBQUIxQUFBQUNRTUFBRlVBQUFBYkF3XFxcbkFBQVFNQUFIVUFBQUFiQXdBQUFRTUFBRlVBQUFBYkF3QUFBQU1BQUhVQUFBQWJBd0FBQUFNQUFGVUFBQUFiQXdBQUNRTUFBSFVBQUFBYlxcXG5Bd0FBQ1FNQUFGVUFBQUFiQXdBQUF3TUFBSFVBQUFBYkF3QUFBd01BQUZVQUFBQWJBd0FBSXdNQUFIVUFBQUFiQXdBQUl3TUFBRmtBQUFcXFxuQUFBd0FBZVFBQUFBQURBQUJaQUFBQUl3TUFBSGtBQUFBakF3QUFXUUFBQUFrREFBQjVBQUFBQ1FNQUFGa0FBQUFEQXdBQWVRQUFBQU1EXFxcbkFBQ3hBd0FBRXdNQUFMRURBQUFVQXdBQXNRTUFBQk1EQUFBQUF3QUFzUU1BQUJRREFBQUFBd0FBc1FNQUFCTURBQUFCQXdBQXNRTUFBQlxcXG5RREFBQUJBd0FBc1FNQUFCTURBQUJDQXdBQXNRTUFBQlFEQUFCQ0F3QUFrUU1BQUJNREFBQ1JBd0FBRkFNQUFKRURBQUFUQXdBQUFBTUFcXFxuQUpFREFBQVVBd0FBQUFNQUFKRURBQUFUQXdBQUFRTUFBSkVEQUFBVUF3QUFBUU1BQUpFREFBQVRBd0FBUWdNQUFKRURBQUFVQXdBQVFnXFxcbk1BQUxVREFBQVRBd0FBdFFNQUFCUURBQUMxQXdBQUV3TUFBQUFEQUFDMUF3QUFGQU1BQUFBREFBQzFBd0FBRXdNQUFBRURBQUMxQXdBQVxcXG5GQU1BQUFFREFBQ1ZBd0FBRXdNQUFKVURBQUFVQXdBQWxRTUFBQk1EQUFBQUF3QUFsUU1BQUJRREFBQUFBd0FBbFFNQUFCTURBQUFCQXdcXFxuQUFsUU1BQUJRREFBQUJBd0FBdHdNQUFCTURBQUMzQXdBQUZBTUFBTGNEQUFBVEF3QUFBQU1BQUxjREFBQVVBd0FBQUFNQUFMY0RBQUFUXFxcbkF3QUFBUU1BQUxjREFBQVVBd0FBQVFNQUFMY0RBQUFUQXdBQVFnTUFBTGNEQUFBVUF3QUFRZ01BQUpjREFBQVRBd0FBbHdNQUFCUURBQVxcXG5DWEF3QUFFd01BQUFBREFBQ1hBd0FBRkFNQUFBQURBQUNYQXdBQUV3TUFBQUVEQUFDWEF3QUFGQU1BQUFFREFBQ1hBd0FBRXdNQUFFSURcXFxuQUFDWEF3QUFGQU1BQUVJREFBQzVBd0FBRXdNQUFMa0RBQUFVQXdBQXVRTUFBQk1EQUFBQUF3QUF1UU1BQUJRREFBQUFBd0FBdVFNQUFCXFxcbk1EQUFBQkF3QUF1UU1BQUJRREFBQUJBd0FBdVFNQUFCTURBQUJDQXdBQXVRTUFBQlFEQUFCQ0F3QUFtUU1BQUJNREFBQ1pBd0FBRkFNQVxcXG5BSmtEQUFBVEF3QUFBQU1BQUprREFBQVVBd0FBQUFNQUFKa0RBQUFUQXdBQUFRTUFBSmtEQUFBVUF3QUFBUU1BQUprREFBQVRBd0FBUWdcXFxuTUFBSmtEQUFBVUF3QUFRZ01BQUw4REFBQVRBd0FBdndNQUFCUURBQUMvQXdBQUV3TUFBQUFEQUFDL0F3QUFGQU1BQUFBREFBQy9Bd0FBXFxcbkV3TUFBQUVEQUFDL0F3QUFGQU1BQUFFREFBQ2ZBd0FBRXdNQUFKOERBQUFVQXdBQW53TUFBQk1EQUFBQUF3QUFud01BQUJRREFBQUFBd1xcXG5BQW53TUFBQk1EQUFBQkF3QUFud01BQUJRREFBQUJBd0FBeFFNQUFCTURBQURGQXdBQUZBTUFBTVVEQUFBVEF3QUFBQU1BQU1VREFBQVVcXFxuQXdBQUFBTUFBTVVEQUFBVEF3QUFBUU1BQU1VREFBQVVBd0FBQVFNQUFNVURBQUFUQXdBQVFnTUFBTVVEQUFBVUF3QUFRZ01BQUtVREFBXFxcbkFVQXdBQXBRTUFBQlFEQUFBQUF3QUFwUU1BQUJRREFBQUJBd0FBcFFNQUFCUURBQUJDQXdBQXlRTUFBQk1EQUFESkF3QUFGQU1BQU1rRFxcXG5BQUFUQXdBQUFBTUFBTWtEQUFBVUF3QUFBQU1BQU1rREFBQVRBd0FBQVFNQUFNa0RBQUFVQXdBQUFRTUFBTWtEQUFBVEF3QUFRZ01BQU1cXFxua0RBQUFVQXdBQVFnTUFBS2tEQUFBVEF3QUFxUU1BQUJRREFBQ3BBd0FBRXdNQUFBQURBQUNwQXdBQUZBTUFBQUFEQUFDcEF3QUFFd01BXFxcbkFBRURBQUNwQXdBQUZBTUFBQUVEQUFDcEF3QUFFd01BQUVJREFBQ3BBd0FBRkFNQUFFSURBQUN4QXdBQUFBTUFBTEVEQUFBQkF3QUF0UVxcXG5NQUFBQURBQUMxQXdBQUFRTUFBTGNEQUFBQUF3QUF0d01BQUFFREFBQzVBd0FBQUFNQUFMa0RBQUFCQXdBQXZ3TUFBQUFEQUFDL0F3QUFcXFxuQVFNQUFNVURBQUFBQXdBQXhRTUFBQUVEQUFESkF3QUFBQU1BQU1rREFBQUJBd0FBc1FNQUFCTURBQUJGQXdBQXNRTUFBQlFEQUFCRkF3XFxcbkFBc1FNQUFCTURBQUFBQXdBQVJRTUFBTEVEQUFBVUF3QUFBQU1BQUVVREFBQ3hBd0FBRXdNQUFBRURBQUJGQXdBQXNRTUFBQlFEQUFBQlxcXG5Bd0FBUlFNQUFMRURBQUFUQXdBQVFnTUFBRVVEQUFDeEF3QUFGQU1BQUVJREFBQkZBd0FBa1FNQUFCTURBQUJGQXdBQWtRTUFBQlFEQUFcXFxuQkZBd0FBa1FNQUFCTURBQUFBQXdBQVJRTUFBSkVEQUFBVUF3QUFBQU1BQUVVREFBQ1JBd0FBRXdNQUFBRURBQUJGQXdBQWtRTUFBQlFEXFxcbkFBQUJBd0FBUlFNQUFKRURBQUFUQXdBQVFnTUFBRVVEQUFDUkF3QUFGQU1BQUVJREFBQkZBd0FBdHdNQUFCTURBQUJGQXdBQXR3TUFBQlxcXG5RREFBQkZBd0FBdHdNQUFCTURBQUFBQXdBQVJRTUFBTGNEQUFBVUF3QUFBQU1BQUVVREFBQzNBd0FBRXdNQUFBRURBQUJGQXdBQXR3TUFcXFxuQUJRREFBQUJBd0FBUlFNQUFMY0RBQUFUQXdBQVFnTUFBRVVEQUFDM0F3QUFGQU1BQUVJREFBQkZBd0FBbHdNQUFCTURBQUJGQXdBQWx3XFxcbk1BQUJRREFBQkZBd0FBbHdNQUFCTURBQUFBQXdBQVJRTUFBSmNEQUFBVUF3QUFBQU1BQUVVREFBQ1hBd0FBRXdNQUFBRURBQUJGQXdBQVxcXG5sd01BQUJRREFBQUJBd0FBUlFNQUFKY0RBQUFUQXdBQVFnTUFBRVVEQUFDWEF3QUFGQU1BQUVJREFBQkZBd0FBeVFNQUFCTURBQUJGQXdcXFxuQUF5UU1BQUJRREFBQkZBd0FBeVFNQUFCTURBQUFBQXdBQVJRTUFBTWtEQUFBVUF3QUFBQU1BQUVVREFBREpBd0FBRXdNQUFBRURBQUJGXFxcbkF3QUF5UU1BQUJRREFBQUJBd0FBUlFNQUFNa0RBQUFUQXdBQVFnTUFBRVVEQUFESkF3QUFGQU1BQUVJREFBQkZBd0FBcVFNQUFCTURBQVxcXG5CRkF3QUFxUU1BQUJRREFBQkZBd0FBcVFNQUFCTURBQUFBQXdBQVJRTUFBS2tEQUFBVUF3QUFBQU1BQUVVREFBQ3BBd0FBRXdNQUFBRURcXFxuQUFCRkF3QUFxUU1BQUJRREFBQUJBd0FBUlFNQUFLa0RBQUFUQXdBQVFnTUFBRVVEQUFDcEF3QUFGQU1BQUVJREFBQkZBd0FBc1FNQUFBXFxcbllEQUFDeEF3QUFCQU1BQUxFREFBQUFBd0FBUlFNQUFMRURBQUJGQXdBQXNRTUFBQUVEQUFCRkF3QUFzUU1BQUVJREFBQ3hBd0FBUWdNQVxcXG5BRVVEQUFDUkF3QUFCZ01BQUpFREFBQUVBd0FBa1FNQUFBQURBQUNSQXdBQUFRTUFBSkVEQUFCRkF3QUF1UU1BQUtnQUFBQkNBd0FBdHdcXFxuTUFBQUFEQUFCRkF3QUF0d01BQUVVREFBQzNBd0FBQVFNQUFFVURBQUMzQXdBQVFnTUFBTGNEQUFCQ0F3QUFSUU1BQUpVREFBQUFBd0FBXFxcbmxRTUFBQUVEQUFDWEF3QUFBQU1BQUpjREFBQUJBd0FBbHdNQUFFVURBQUMvSHdBQUFBTUFBTDhmQUFBQkF3QUF2eDhBQUVJREFBQzVBd1xcXG5BQUJnTUFBTGtEQUFBRUF3QUF1UU1BQUFnREFBQUFBd0FBdVFNQUFBZ0RBQUFCQXdBQXVRTUFBRUlEQUFDNUF3QUFDQU1BQUVJREFBQ1pcXFxuQXdBQUJnTUFBSmtEQUFBRUF3QUFtUU1BQUFBREFBQ1pBd0FBQVFNQUFQNGZBQUFBQXdBQS9oOEFBQUVEQUFEK0h3QUFRZ01BQU1VREFBXFxcbkFHQXdBQXhRTUFBQVFEQUFERkF3QUFDQU1BQUFBREFBREZBd0FBQ0FNQUFBRURBQURCQXdBQUV3TUFBTUVEQUFBVUF3QUF4UU1BQUVJRFxcXG5BQURGQXdBQUNBTUFBRUlEQUFDbEF3QUFCZ01BQUtVREFBQUVBd0FBcFFNQUFBQURBQUNsQXdBQUFRTUFBS0VEQUFBVUF3QUFxQUFBQUFcXFxuQURBQUNvQUFBQUFRTUFBR0FBQUFESkF3QUFBQU1BQUVVREFBREpBd0FBUlFNQUFNa0RBQUFCQXdBQVJRTUFBTWtEQUFCQ0F3QUF5UU1BXFxcbkFFSURBQUJGQXdBQW53TUFBQUFEQUFDZkF3QUFBUU1BQUtrREFBQUFBd0FBcVFNQUFBRURBQUNwQXdBQVJRTUFBTFFBQUFBQ0lBQUFBeVxcXG5BQUFLa0RBQUJMQUFBQVFRQUFBQW9EQUFDUUlRQUFPQU1BQUpJaEFBQTRBd0FBbENFQUFEZ0RBQURRSVFBQU9BTUFBTlFoQUFBNEF3QUFcXFxuMGlFQUFEZ0RBQUFESWdBQU9BTUFBQWdpQUFBNEF3QUFDeUlBQURnREFBQWpJZ0FBT0FNQUFDVWlBQUE0QXdBQVBDSUFBRGdEQUFCRElnXFxcbkFBT0FNQUFFVWlBQUE0QXdBQVNDSUFBRGdEQUFBOUFBQUFPQU1BQUdFaUFBQTRBd0FBVFNJQUFEZ0RBQUE4QUFBQU9BTUFBRDRBQUFBNFxcXG5Bd0FBWkNJQUFEZ0RBQUJsSWdBQU9BTUFBSElpQUFBNEF3QUFjeUlBQURnREFBQjJJZ0FBT0FNQUFIY2lBQUE0QXdBQWVpSUFBRGdEQUFcXFxuQjdJZ0FBT0FNQUFJSWlBQUE0QXdBQWd5SUFBRGdEQUFDR0lnQUFPQU1BQUljaUFBQTRBd0FBb2lJQUFEZ0RBQUNvSWdBQU9BTUFBS2tpXFxcbkFBQTRBd0FBcXlJQUFEZ0RBQUI4SWdBQU9BTUFBSDBpQUFBNEF3QUFrU0lBQURnREFBQ1NJZ0FBT0FNQUFMSWlBQUE0QXdBQXN5SUFBRFxcXG5nREFBQzBJZ0FBT0FNQUFMVWlBQUE0QXdBQUNEQUFBQWt3QUFEZEtnQUFPQU1BQUVzd0FBQ1pNQUFBVFRBQUFKa3dBQUJQTUFBQW1UQUFcXFxuQUZFd0FBQ1pNQUFBVXpBQUFKa3dBQUJWTUFBQW1UQUFBRmN3QUFDWk1BQUFXVEFBQUprd0FBQmJNQUFBbVRBQUFGMHdBQUNaTUFBQVh6XFxcbkFBQUprd0FBQmhNQUFBbVRBQUFHUXdBQUNaTUFBQVpqQUFBSmt3QUFCb01BQUFtVEFBQUc4d0FBQ1pNQUFBYnpBQUFKb3dBQUJ5TUFBQVxcXG5tVEFBQUhJd0FBQ2FNQUFBZFRBQUFKa3dBQUIxTUFBQW1qQUFBSGd3QUFDWk1BQUFlREFBQUpvd0FBQjdNQUFBbVRBQUFIc3dBQUNhTUFcXFxuQUFSakFBQUprd0FBQ2RNQUFBbVRBQUFLc3dBQUNaTUFBQXJUQUFBSmt3QUFDdk1BQUFtVEFBQUxFd0FBQ1pNQUFBc3pBQUFKa3dBQUMxXFxcbk1BQUFtVEFBQUxjd0FBQ1pNQUFBdVRBQUFKa3dBQUM3TUFBQW1UQUFBTDB3QUFDWk1BQUF2ekFBQUprd0FBREJNQUFBbVRBQUFNUXdBQVxcXG5DWk1BQUF4akFBQUprd0FBRElNQUFBbVRBQUFNOHdBQUNaTUFBQXp6QUFBSm93QUFEU01BQUFtVEFBQU5Jd0FBQ2FNQUFBMVRBQUFKa3dcXFxuQUFEVk1BQUFtakFBQU5nd0FBQ1pNQUFBMkRBQUFKb3dBQURiTUFBQW1UQUFBTnN3QUFDYU1BQUFwakFBQUprd0FBRHZNQUFBbVRBQUFQXFxcbkF3QUFDWk1BQUE4VEFBQUprd0FBRHlNQUFBbVRBQUFQMHdBQUNaTUFBQVNJd0FBUFJtQUFES2pnQUF5SXdBQU5GdUFBQXlUZ0FBNVZNQVxcXG5BSnlmQUFDY253QUFVVmtBQU5HUkFBQ0hWUUFBU0ZrQUFQWmhBQUJwZGdBQWhYOEFBRCtHQUFDNmh3QUErSWdBQUkrUUFBQUNhZ0FBRzJcXFxuMEFBTmx3QUFEZWN3QUFQWVFBQUdxUkFBRHhtUUFBZ2s0QUFIVlRBQUFFYXdBQUczSUFBQzJHQUFBZW5nQUFVRjBBQU90dkFBRE5oUUFBXFxcblpJa0FBTWxpQUFEWWdRQUFINGdBQU1wZUFBQVhad0FBYW0wQUFQeHlBQURPa0FBQWhrOEFBTGRSQUFEZVVnQUF4R1FBQU5OcUFBQVFjZ1xcXG5BQTUzWUFBQUdBQUFBR2hnQUFYSVlBQU8rTkFBQXlsd0FBYjVzQUFQcWRBQUNNZUFBQWYza0FBS0I5QUFESmd3QUFCSk1BQUgrZUFBRFdcXFxuaWdBQTMxZ0FBQVJmQUFCZ2ZBQUFmb0FBQUdKeUFBREtlQUFBd293QUFQZVdBQURZV0FBQVlsd0FBQk5xQUFEYWJRQUFEMjhBQUM5OUFBXFxcbkEzZmdBQVM1WUFBTkpTQUFDTGdBQUEzRkVBQU14UkFBQWNlZ0FBdm4wQUFQR0RBQUIxbGdBQWdJc0FBTTlpQUFBQ2FnQUEvb29BQURsT1xcXG5BQURuV3dBQUVtQUFBSWR6QUFCd2RRQUFGMU1BQVB0NEFBQy9Ud0FBcVY4QUFBMU9BQURNYkFBQWVHVUFBQ0o5QUFERFV3QUFYbGdBQUFcXFxuRjNBQUJKaEFBQXFvb0FBTHByQUFDd2p3QUFpR3dBQVA1aUFBRGxnZ0FBb0dNQUFHVjFBQUN1VGdBQWFWRUFBTWxSQUFDQmFBQUE1M3dBXFxcbkFHK0NBQURTaWdBQXo1RUFBUFZTQUFCQ1ZBQUFjMWtBQU94ZUFBREZaUUFBL204QUFDcDVBQUN0bFFBQWFwb0FBSmVlQUFET25nQUFtMVxcXG5JQUFNWm1BQUIzYXdBQVlvOEFBSFJlQUFDUVlRQUFBR0lBQUpwa0FBQWpid0FBU1hFQUFJbDBBQURLZVFBQTlIMEFBRytBQUFBbWp3QUFcXFxuN29RQUFDT1FBQUJLa3dBQUYxSUFBS05TQUFDOVZBQUF5SEFBQU1LSUFBQ3FpZ0FBeVY0QUFQVmZBQUI3WXdBQXJtc0FBRDU4QUFCMWN3XFxcbkFBNUU0QUFQbFdBQURuV3dBQXVsMEFBQnhnQUFDeWN3QUFhWFFBQUpwL0FBQkdnQUFBTkpJQUFQYVdBQUJJbHdBQUdKZ0FBSXRQQUFDdVxcXG5lUUFBdEpFQUFMaVdBQURoWUFBQWhrNEFBTnBRQUFEdVd3QUFQMXdBQUpsbEFBQUNhZ0FBem5FQUFFSjJBQUQ4aEFBQWZKQUFBSTJmQUFcXFxuQ0laZ0FBTHBZQUFJbFNBQUI3WndBQTgyY0FBRUZ0QUFDY2JnQUFDWFFBQUZsMUFBQnJlQUFBRUgwQUFGNllBQUJ0VVFBQUxtSUFBSGlXXFxcbkFBQXJVQUFBR1YwQUFPcHRBQUFxandBQWkxOEFBRVJoQUFBWGFBQUFoM01BQUlhV0FBQXBVZ0FBRDFRQUFHVmNBQUFUWmdBQVRtY0FBS1xcXG5ob0FBRGxiQUFBQm5RQUFPSjFBQUI1ZndBQXo0Z0FBT0dJQUFETWtRQUE0cFlBQUQ5VEFBQzZiZ0FBSFZRQUFOQnhBQUNZZEFBQStvVUFcXFxuQUtPV0FBQlhuQUFBbjU0QUFKZG5BQURMYlFBQTZJRUFBTXQ2QUFBZ2V3QUFrbndBQU1CeUFBQ1pjQUFBV0lzQUFNQk9BQUEyZ3dBQU9sXFxcbklBQUFkU0FBQ21YZ0FBMDJJQUFOWjhBQUNGV3dBQUhtMEFBTFJtQUFBN2p3QUFUSWdBQUUyV0FBQ0xpUUFBMDE0QUFFQlJBQURBVlFBQVxcXG5XbGdBQUhSbUFBRGVVUUFBS25NQUFNcDJBQUE4ZVFBQVhua0FBR1Y1QUFDUGVRQUFWcGNBQUw1OEFBQzlmd0FBRW9ZQUFQaUtBQUE0a0FcXFxuQUEvWkFBQU8rWUFBRDhtQUFBS0prQUFMU2RBQURla0FBQXQ1WUFBSzVQQUFEblVBQUFUVkVBQU1sU0FBRGtVZ0FBVVZNQUFKMVZBQUFHXFxcblZnQUFhRllBQUVCWUFBQ29XQUFBWkZ3QUFHNWNBQUNVWUFBQWFHRUFBSTVoQUFEeVlRQUFUMlVBQU9KbEFBQ1JaZ0FBaFdnQUFIZHRBQVxcXG5BYWJnQUFJbThBQUc1eEFBQXJjZ0FBSW5RQUFKRjRBQUErZVFBQVNYa0FBRWg1QUFCUWVRQUFWbmtBQUYxNUFBQ05lUUFBam5rQUFFQjZcXFxuQUFDQmVnQUF3SHNBQVBSOUFBQUpmZ0FBUVg0QUFISi9BQUFGZ0FBQTdZRUFBSG1DQUFCNWdnQUFWNFFBQUJDSkFBQ1dpUUFBQVlzQUFEXFxcbm1MQUFEVGpBQUFDSTBBQUxhUEFBQTRrQUFBNDVZQUFQK1hBQUE3bUFBQWRXQUFBTzVDQWdBWWdnQUFKazRBQUxWUkFBQm9VUUFBZ0U4QVxcXG5BRVZSQUFDQVVRQUF4MUlBQVBwU0FBQ2RWUUFBVlZVQUFKbFZBQURpVlFBQVdsZ0FBTE5ZQUFCRVdRQUFWRmtBQUdKYUFBQW9Xd0FBMGxcXFxuNEFBTmxlQUFCcFh3QUFyVjhBQU5oZ0FBQk9ZUUFBQ0dFQUFJNWhBQUJnWVFBQThtRUFBRFJpQUFERVl3QUFIR1FBQUZKa0FBQldaUUFBXFxcbmRHWUFBQmRuQUFBYlp3QUFWbWNBQUhsckFBQzZhd0FBUVcwQUFOdHVBQURMYmdBQUltOEFBQjV3QUFCdWNRQUFwM2NBQURWeUFBQ3ZjZ1xcXG5BQUtuTUFBSEYwQUFBR2RRQUFPM1VBQUIxMkFBQWZkZ0FBeW5ZQUFOdDJBQUQwZGdBQVNuY0FBRUIzQUFETWVBQUFzWG9BQU1CN0FBQjdcXFxuZkFBQVczMEFBUFI5QUFBK2Z3QUFCWUFBQUZLREFBRHZnd0FBZVljQUFFR0pBQUNHaVFBQWxva0FBTCtLQUFENGlnQUF5NG9BQUFHTEFBXFxcbkQraWdBQTdZb0FBRG1MQUFDS2l3QUFDSTBBQURpUEFBQnlrQUFBbVpFQUFIYVNBQUI4bGdBQTQ1WUFBRmFYQUFEYmx3QUEvNWNBQUF1WVxcXG5BQUE3bUFBQUVwc0FBSnlmQUFCS0tBSUFSQ2dDQU5VekFnQ2RPd0FBR0VBQUFEbEFBQUJKVWdJQTBGd0NBTk4rQWdCRG53QUFqcDhBQU5cXFxua0ZBQUMwQlFBQThnVUFBTGNGQUFEcEJRQUF3UVVBQU9rRkFBRENCUUFBNlFVQUFMd0ZBQURCQlFBQTZRVUFBTHdGQUFEQ0JRQUEwQVVBXFxcbkFMY0ZBQURRQlFBQXVBVUFBTkFGQUFDOEJRQUEwUVVBQUx3RkFBRFNCUUFBdkFVQUFOTUZBQUM4QlFBQTFBVUFBTHdGQUFEVkJRQUF2QVxcXG5VQUFOWUZBQUM4QlFBQTJBVUFBTHdGQUFEWkJRQUF2QVVBQU5vRkFBQzhCUUFBMndVQUFMd0ZBQURjQlFBQXZBVUFBTjRGQUFDOEJRQUFcXFxuNEFVQUFMd0ZBQURoQlFBQXZBVUFBT01GQUFDOEJRQUE1QVVBQUx3RkFBRG1CUUFBdkFVQUFPY0ZBQUM4QlFBQTZBVUFBTHdGQUFEcEJRXFxcbkFBdkFVQUFPb0ZBQUM4QlFBQTFRVUFBTGtGQUFEUkJRQUF2d1VBQU5zRkFBQy9CUUFBNUFVQUFMOEZBQUNaRUFFQXVoQUJBSnNRQVFDNlxcXG5FQUVBcFJBQkFMb1FBUUF4RVFFQUp4RUJBRElSQVFBbkVRRUFSeE1CQUQ0VEFRQkhFd0VBVnhNQkFMa1VBUUM2RkFFQXVSUUJBTEFVQVFcXFxuQzVGQUVBdlJRQkFMZ1ZBUUN2RlFFQXVSVUJBSzhWQVFBMUdRRUFNQmtCQUZmUkFRQmwwUUVBV05FQkFHWFJBUUJZMFFFQVpkRUJBRzdSXFxcbkFRQlkwUUVBWmRFQkFHL1JBUUJZMFFFQVpkRUJBSERSQVFCWTBRRUFaZEVCQUhIUkFRQlkwUUVBWmRFQkFITFJBUUM1MFFFQVpkRUJBTFxcXG5yUkFRQmwwUUVBdWRFQkFHWFJBUUJ1MFFFQXV0RUJBR1hSQVFCdTBRRUF1ZEVCQUdYUkFRQnYwUUVBdXRFQkFHWFJBUUJ2MFFFQVBVNEFcXFxuQURoT0FBQkJUZ0FBSWdFQ0FHQlBBQUN1VHdBQXUwOEFBQUpRQUFCNlVBQUFtVkFBQU9kUUFBRFBVQUFBbmpRQUFEb0dBZ0JOVVFBQVZGXFxcbkVBQUdSUkFBQjNVUUFBSEFVQ0FMazBBQUJuVVFBQWpWRUFBRXNGQWdDWFVRQUFwRkVBQU14T0FBQ3NVUUFBdFZFQUFOK1JBZ0QxVVFBQVxcXG5BMUlBQU44MEFBQTdVZ0FBUmxJQUFISlNBQUIzVWdBQUZUVUFBTWRTQUFESlVnQUE1RklBQVBwU0FBQUZVd0FBQmxNQUFCZFRBQUJKVXdcXFxuQUFVVk1BQUZwVEFBQnpVd0FBZlZNQUFIOVRBQUIvVXdBQWYxTUFBQ3dLQWdCd2NBQUF5bE1BQU45VEFBQmpDd0lBNjFNQUFQRlRBQUFHXFxcblZBQUFubFFBQURoVUFBQklWQUFBYUZRQUFLSlVBQUQyVkFBQUVGVUFBRk5WQUFCalZRQUFoRlVBQUlSVkFBQ1pWUUFBcTFVQUFMTlZBQVxcXG5EQ1ZRQUFGbGNBQUFaV0FBQVhWd0FBVVZZQUFIUldBQUFIVWdBQTdsZ0FBTTVYQUFEMFZ3QUFEVmdBQUl0WEFBQXlXQUFBTVZnQUFLeFlcXFxuQUFEa0ZBSUE4bGdBQVBkWUFBQUdXUUFBR2xrQUFDSlpBQUJpV1FBQXFCWUNBT29XQWdEc1dRQUFHMW9BQUNkYUFBRFlXUUFBWmxvQUFPXFxcbjQyQUFEOE5nQUFDRnNBQUQ1YkFBQStXd0FBeUJrQ0FNTmJBQURZV3dBQTUxc0FBUE5iQUFBWUd3SUEvMXNBQUFaY0FBQlRYd0FBSWx3QVxcXG5BSUUzQUFCZ1hBQUFibHdBQU1CY0FBQ05YQUFBNUIwQ0FFTmRBQURtSFFJQWJsMEFBR3RkQUFCOFhRQUE0VjBBQU9KZEFBQXZPQUFBL1ZcXFxuMEFBQ2hlQUFBOVhnQUFhVjRBQUdJNEFBQ0RJUUlBZkRnQUFMQmVBQUN6WGdBQXRsNEFBTXBlQUFDU293SUEvbDRBQURFakFnQXhJd0lBXFxcbkFZSUFBQ0pmQUFBaVh3QUF4emdBQUxneUFnRGFZUUlBWWw4QUFHdGZBQURqT0FBQW1sOEFBTTFmQUFEWFh3QUErVjhBQUlGZ0FBQTZPUVxcXG5BQUhEa0FBSlJnQUFEVUpnSUF4MkFBQUVoaEFBQk1ZUUFBVG1FQUFFeGhBQUI2WVFBQWptRUFBTEpoQUFDa1lRQUFyMkVBQU41aEFBRHlcXFxuWVFBQTltRUFBQkJpQUFBYllnQUFYV0lBQUxGaUFBRFVZZ0FBVUdNQUFBd3JBZ0E5WXdBQS9HSUFBR2hqQUFDRFl3QUE1R01BQVBFckFnXFxcbkFpWkFBQXhXTUFBS2xqQUFBdU9nQUFhV1FBQUg1a0FBQ2RaQUFBZDJRQUFHdzZBQUJQWlFBQWJHVUFBQW93QWdEalpRQUErR1lBQUVsbVxcXG5BQUFaT3dBQWtXWUFBQWc3QUFEa09nQUFrbEVBQUpWUkFBQUFad0FBbkdZQUFLMkFBQURaUXdBQUYyY0FBQnRuQUFBaFp3QUFYbWNBQUZcXFxuTm5BQURETXdJQVNUc0FBUHBuQUFDRlp3QUFVbWdBQUlWb0FBQnROQUlBam1nQUFCOW9BQUFVYVFBQW5Uc0FBRUpwQUFDamFRQUE2bWtBXFxcbkFLaHFBQUNqTmdJQTIyb0FBQmc4QUFBaGF3QUFwemdDQUZSckFBQk9QQUFBY21zQUFKOXJBQUM2YXdBQXUyc0FBSTA2QWdBTEhRSUEralxcXG5vQ0FFNXNBQUM4UEFJQXYyd0FBTTFzQUFCbmJBQUFGbTBBQUQ1dEFBQjNiUUFBUVcwQUFHbHRBQUI0YlFBQWhXMEFBQjQ5QWdBMGJRQUFcXFxuTDI0QUFHNXVBQUF6UFFBQXkyNEFBTWR1QUFEUlBnSUErVzBBQUc1dkFBQmVQd0lBamo4Q0FNWnZBQUE1Y0FBQUhuQUFBQnR3QUFDV1BRXFxcbkFBU25BQUFIMXdBQUIzY0FBQXJYQUFBQ1VGQWdCRmNRQUFZMElDQUp4eEFBQ3JRd0lBS0hJQUFEVnlBQUJRY2dBQUNFWUNBSUJ5QUFDVlxcXG5jZ0FBTlVjQ0FCUklBZ0I2Y3dBQWkzTUFBS3crQUFDbGN3QUF1RDRBQUxnK0FBQkhkQUFBWEhRQUFIRjBBQUNGZEFBQXluUUFBQnMvQUFcXFxuQWtkUUFBTmt3Q0FENTFBQUNTVEFJQWNIVUFBSjhoQWdBUWRnQUFvVThDQUxoUEFnQkVVQUlBL0Q4QUFBaEFBQUQwZGdBQTgxQUNBUEpRXFxcbkFnQVpVUUlBTTFFQ0FCNTNBQUFmZHdBQUgzY0FBRXAzQUFBNVFBQUFpM2NBQUVaQUFBQ1dRQUFBSFZRQ0FFNTRBQUNNZUFBQXpIZ0FBT1xcXG5OQUFBQW1WZ0lBVm5rQUFKcFdBZ0RGVmdJQWoza0FBT3Q1QUFBdlFRQUFRSG9BQUVwNkFBQlBlZ0FBZkZrQ0FLZGFBZ0NuV2dJQTdub0FcXFxuQUFKQ0FBQ3JXd0lBeG5zQUFNbDdBQUFuUWdBQWdGd0NBTko4QUFDZ1FnQUE2SHdBQU9OOEFBQUFmUUFBaGw4Q0FHTjlBQUFCUXdBQXgzXFxcbjBBQUFKK0FBQkZmZ0FBTkVNQUFDaGlBZ0JIWWdJQVdVTUFBTmxpQWdCNmZ3QUFQbU1DQUpWL0FBRDZmd0FBQllBQUFOcGtBZ0FqWlFJQVxcXG5ZSUFBQUtobEFnQndnQUFBWHpNQ0FOVkRBQUN5Z0FBQUE0RUFBQXRFQUFBK2dRQUF0Vm9BQUtkbkFnQzFad0lBa3pNQ0FKd3pBZ0FCZ2dcXFxuQUFCSUlBQUo2UEFBQnJSQUFBa1lJQUFJdUNBQUNkZ2dBQXMxSUFBTEdDQUFDemdnQUF2WUlBQU9hQ0FBQThhd0lBNVlJQUFCMkRBQUJqXFxcbmd3QUFyWU1BQUNPREFBQzlnd0FBNTRNQUFGZUVBQUJUZ3dBQXlvTUFBTXlEQUFEY2d3QUFObXdDQUd0dEFnRFZiQUlBSzBVQUFQR0VBQVxcXG5EemhBQUFGb1VBQU1wekFnQmtoUUFBTEc4Q0FGMUZBQUJoUlFBQXNXOENBTkp3QWdCclJRQUFVSVlBQUZ5R0FBQm5oZ0FBYVlZQUFLbUdcXFxuQUFDSWhnQUFEb2NBQU9LR0FBQjVod0FBS0ljQUFHdUhBQUNHaHdBQTEwVUFBT0dIQUFBQmlBQUErVVVBQUdDSUFBQmppQUFBWjNZQ0FOXFxcbmVJQUFEZWlBQUFOVVlBQVBxSUFBQzdOQUFBcm5nQ0FHWjVBZ0MrUmdBQXgwWUFBS0NLQUFEdGlnQUFpb3NBQUZXTUFBQ29mQUlBcTR3QVxcXG5BTUdNQUFBYmpRQUFkNDBBQUM5L0FnQUVDQUlBeTQwQUFMeU5BQUR3alFBQTNnZ0NBTlNPQUFBNGp3QUEwb1VDQU8yRkFnQ1VrQUFBOFpcXFxuQUFBQkdSQUFBdWh3SUFHNUVBQURpU0FBRFhrZ0FBMkpJQUFIeVNBQUQ1a3dBQUZaUUFBUHFMQWdDTGxRQUFsVWtBQUxlVkFBQjNqUUlBXFxcbjVra0FBTU9XQUFDeVhRQUFJNWNBQUVXUkFnQWFrZ0lBYmtvQUFIWktBQURnbHdBQUNwUUNBTEpLQUFDV2xBSUFDNWdBQUF1WUFBQXBtQVxcXG5BQXRwVUNBT0tZQUFBelN3QUFLWmtBQUtlWkFBRENtUUFBL3BrQUFNNUxBQUF3bXdJQUVwc0FBRUNjQUFEOW5BQUF6a3dBQU8xTUFBQm5cXFxublFBQXpxQUNBUGhNQUFBRm9RSUFEcUlDQUpHaUFnQzduZ0FBVmswQUFQbWVBQUQrbmdBQUJaOEFBQStmQUFBV253QUFPNThBQUFDbUFnXFxcbkIrTHk1allYSm5ieTl5WldkcGMzUnllUzl6Y21NdmFXNWtaWGd1WTNKaGRHVnpMbWx2TFRabU1UZGtNakppWW1FeE5UQXdNV1l2ZFc1cFxcXG5ZMjlrWlMxdWIzSnRZV3hwZW1GMGFXOXVMVEF1TVM0eU1pOXpjbU12Ykc5dmEzVndjeTV5Y3dBQThQc1JBR0lBQUFBMkFBQUFHZ0FBQUFcXFxuQUFBQUFEQUFBQUFBQUFBQUVBYkFFT0FPOEVBZ0FBQUFBQUFBQUNBQUFBQVFBREFKY0FaUUVBQUFBQWhRRUFBQUVBQUFEMEF3QUFBQUFBXFxcbkFBQUFCQUNSQUFBQTNRQUJBR3dDQUFBTEFBQUE0QUM4QUFNQUV3SUJBQUFBeUFBREFCd0EvQUFBQUFBQUVRQXlBUUFBQUFBTEFaQUFkQVxcXG5UV0FBQUFBQUFEQUEwQUJRQUFBQVlBR1FCVUFESUJUQUFYQUFZQVNBQURBQUFBQUFBR0FBd0FBd0FBQUxFQUFRQ01BQUFBR3dEQUFBY0FcXFxuQWdBQUFCSUFBQUFBQUFZQUFRQytBY2dBQUFCOUFBQUFDZ0FBQUFBQXRBQUNBQWdBQlFCRUFkc0FBUUFHQUFBQUFBQU5BQlFBQUFCUEFBXFxcbklBQUFBREFESUFBQUFGQUE0QWZBQXNBQVlBQUFBQUFBY0FBQUJmQUFVQUR3Qm5BQUFBQVFBMEFBQUFBQUFBQUpBQUVnQUFBQUFBSGdCTVxcXG5BSWtBcUFBQUFBUUFId0FBQUFBQUFRQ1pBQmdBRFFBREFBY0FCUUFaQUFJQUFBQUVBQUVBQXdDUUFBc0FLUUJWQUFBQVVRQUFBQUlBMEFcXFxuQjZBR1lBQUFDVkFBY0FBQUFBQUFBQUFBQUJBQUFBalFBUEFDRUFWZ0FLQUJzQUFBQUFBQWdBQndCOEFBVUFBQUJpQUFJQUV3QUdBQUFBXFxcblR3QUFBQUFBTWdBdkFBUUFEUUNnQUFRQUNBQWtBQjhBQUFBQUFJSUFSUUFBQUdFQUFBQWRBQUVBQUFBQkFBQUFCd0FYQUFzQUFBQUFBQVxcXG5BQUN3QUlBQWdBQUFBQUFEMEFBQUNXQUFBQUFBQUFBQWdBQUFBQUFBQUFCQUFBQUFNQUJ3QXNBQUFBQUFBVUFDUUFBZ0FDQUFBQUFnQUFcXFxuQUJJQUFRQUFBQUlBQUFBbEFBb0FBUUJtQUFzQUNBQUFBQXdBRUFBQ0FBTUFDQUFFQUFZQUFRQUVBT01BSXdBZ0FBY0FBQUFQQUI0QUl3XFxcbkE5QUFRQUFBQUJBQUFBQXdBbEFBQUFBUUF4QUowQUFBQUFBQVFBQVFBQUFBQUFDQUFBQUFBQUpnQUFBQUFBQWdBQUFBSUFBQUFEQUFBQVxcXG5Hd0FBQUFJQUFBQUJBQW9BQXdBQkFBSUFEQUFNQUFFQUFRQUFBQkVBQkFBOUFBSUFHd0FDQUFBQURBQUdBQVlBQUFBQUFBTUFBQUFKQUNcXFxud0FBQUFKQURjQUxRQUFBQklBSXdBQUFBQUFIQUFBQUNZQUVBQVZBQUlBQUFBTEFBQUFCQUFVQUFVQUV3QUhBQndBQXdBMkFBQUFDQUFCXFxcbkFCa0FBZ0FBQUFFQUFBQUFBQVFBQVFBSUFBSUFDZ0FHQUJNQUFBQUFBQUFBTHdBQkFBQUFGZ0FGQUF3QURBQUJBQkFBQXdBT0FBQUFBUVxcXG5BTkFDZ0FBQUFBQUFFQUFBQUFBQVFBRUFBaEFBQUFBUUFEQUFBQUl3QUFBQUVBQUFBQUFBQUFEUUFCQUFBQUFBQUdBR3NBQUFBVUFBQUFcXFxuQUFBR0FCSUFBQUFDQUFBQUtnQUJBQXNBQVFBR0FBa0FDQUFCQUFBQUt3QUFBQWdBQndBQUFBOEFGZ0FBQUFBQVJBQUFBQUVBQUFBQUFBXFxcbndBR1FBbEFBSUFId0FQQUF3QUFRQWZBQW9BQUFBNEFBNEFEd0FNQUNVQUFBQUdBQTRBQUFBSUFBQUFBZ0FBQUFBQUFRQUpBQUVBRmdBQVxcXG5BQUFBQUFBREFCVUFZZ0FCQUFBQUFBQUNBQUFBQUFBOUFBQUFBd0FCQUFFQUFRQUFBQUVBQUFBcEFBUUFMQUFCQUFBQUFBQUFBQUFBSWdcXFxuQUFBQlFBS0FBQUFBY0FCQUFEQUFZQUFBQUJBQTBBS2dBQUFBQUFSQUFBQUFnQUFBQUNBQUVBQ3dBQUFBQUFBQUFBQUFRQUF3QWNBQVVBXFxcbkFBQUdBQUlBQUFBUkFBWUFCd0FBQUFJQUtBQUhBQjBBQ3dBRkFDNEFFUUFBQUFFQURBQUFBQWNBTHdBQUFBQUFCUUFLQUFBQUNBQUdBQVxcXG5BQUFBQUhBQUVBQ0FBZ0FBd0FBQUFhQUFVQUFBQW1BQ1lBQWdBTEFBZ0FBQUFFQUFVQUFnQUFBQVVBRWdBQUFBVUFBQUFCQUFZQUNRQUJcXFxuQUFNQUZRQURBQUFBQUFBQ0FBQUFBd0FBQUJZQUFBQVFBQU1BQUFBYkFBSUFBQUFKQUFBQUNRQUFBQWtBQUFBQUFBRUFBUUFNQUNZQUFRXFxcbkFBQUFBQUJBQUFBQXdBSGdBQUFBRUFOZ0FHQUFNQUFBQUFBQUVBQUFBR0FBQUFBQUFBQUFnQURBQUFBQUFBQVFBQUFBQUFCQUFDQUFjQVxcXG5BUUFDQUFjQURRQUNBQUFBQUFBQUFBSUFCUUFBQUFnQUJRQUFBQUFBQXdBR0FBQUFBQUFJQUFFQUJRQUJBQU1BQXdBUUFBc0FCd0FBQUFcXFxuOEFFUUFBQUJnQUFBQUFBQThBQWdBSEFBRUFBQUFBQUFBQURBQVlBQUFBRndBQUFBRUFBQUFtQUFNQUFBQWJBQUFBQ0FBREFBTUFBQUFBXFxcbkFBSUFCZ0FBQUFzQUd3QUpBQUFBQXdBQUFBQUFBUUFCQUFFQUJRQUFBQVlBQUFBRUFBTUFBQUFBQUFBQUFBQUFBQWtBQ1FBQUFBSUFCd1xcXG5BT0FDTUFBd0FCQUFBQUFBQVBBQUFBQ0FBaUFBNEFFQUFIQUFNQURBQVpBQUVBQ2dBQ0FBQUFBd0FZQUFFQUZnQUtBQUFBQWdBSUFBQUFcXFxuSXdBQUFBQUFCZ0FDQUFBQUJBQU5BQnNBQUFBRUFEZ0FBQUFBQUJFQURnQUFBQUFBQUFBSkFBQUFJUUFUQUFJQUdBQUVBQUVBRUFBQUFBXFxcbklBQUFBR0FCUUFDZ0FBQUFBQUJBQU9BQUFBQUFBRkFBUUFBQUFnQUIwQUFRQUFBQWtBQUFBQkFBRUFCQUFDQUFBQUFRQUFBQUFBSkFBQlxcXG5BQUFBQ1FBSUFBQUFBUUFLQUFFQUFBQUVBQUFBRXdBRkFBQUFBUUFBQUFFQUFBQUFBQUlBQkFBQUFBQUFCUUFCQUFrQUFnQUZBQUFBQUFcXFxuQUFBQUFBQUFBS0FBQUFBQUFRQUFFQUJBQUFBQUFBQVFBRUFBQUFBUUFDQUFRQUF3QUFBQVFBRkFBSEFBb0FBZ0FHQUFBQUFnQUJBQWdBXFxcbkJ3QUFBQUFBQUFBVUFBRUFFQUFBQUFBQUJRQUJBQVlBQlFBREFBQUFDUUFDQUFRQUFnQUFBQUFBREFBWkFBQUFBQUFBQUFFQUFBQUFBQVxcXG44QUNBQU5BQUFBQXdBQkFBQUFDUUFVQUJjQUFBQUFBQUFBQUFBREFBRUFBQUFGQUJVQUFRQVpBQUVBQVFBQkFBRUFBd0FBQUFZQUF3QUFcXFxuQUJFQUJRQUFBQVFBREFBREFBQUFCd0FBQUFBQUF3QUVBQU1BQ3dBQUFBQUFCZ0FJQUFNQUFRQUFBQUFBQVFBTkFBTUFBQUFIQUFBQUFRXFxcbkFBQUFBQUFBQUpBQUVBQUFBQ0FBRUFDUUFLQUFnQUFRQUhBQU1BQUFBREFBQUFBQUFFQUFBQUJBQUJBQXNBQUFBVEFBWUFCd0FBQUFBQVxcXG5DQUFIQUFjQUFBQURBQUFBQWdBREFBQUFBUUFCQUFFQUd3QURBQUlBQ1FBQ0FBRUFBZ0FBQUFRQUFRQUFBQVlBQUFBQUFBRUFCUUFBQUFcXFxuOEFBUUFHQUFnQUJBQUFBQUFBQXdBTEFBSUFCUUFCQUFJQUV3QVRBQUFBQ1FBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBSUFJUUFBXFxcbkFBWUFBd0FCQUFFQUJRQURBQUFBRUFBaUFBc0FBQUFJQUFBQUFBQURBQVFBQVFBYUFBSUFBQUFBQUFBQUFnQUJBQUFBQUFBQ0FBQUFBQVxcXG5BU0FBRUFBQUFDQUFBQUFBQUJBQUFBQWdBaEFBQUFBZ0FOQUFFQUF3QUZBQUVBREFBUUFBQUFKQUFBQUFBQUJnQUdBQnNBQVFBTkFBQUFcXFxuQVFBQUFBRUFBQUFBQUFjQUFnQUFBQVVBSkFBR0FBRUFEZ0FBQUFzQURnQUhBQUFBQUFBQUFBTUFBQUFBQUFJQUdBQURBQU1BQVFBQUFBXFxcbkFBQkFBRUFBQUFBUUFBQUJRQUJnQUxBQUFBQWdBQkFBSUFCZ0FHQUFBQUJnQUFBQUFBQVFBQ0FBSUFBUUFDQUFBQUFRQUlBQUVBREFBQVxcXG5BQWNBQWdBREFBRUFBQUFHQUFFQUJ3QVJBQU1BQUFBQkFBb0FBZ0FDQUFnQUJnQUlBQUFBQUFBRUFBZ0FBUUFIQUFJQUFnQUdBQUFBQmdcXFxuQUFBQUFBQndBQkFBNEFBZ0FDQURJQUJ3QUxBQVFBQkFBQUFBWUFBQUFJQUFBQUFBQUFBQWtBQWdBYkFBQUFBQUFBQUFFQURBQUNBQUVBXFxcbkFnQVBBQUFBQUFBQUFBTUFEQUFGQUFBQUFBQUFBQXNBQUFBQ0FBRUFBd0FBQUFFQUJnQUtBQUVBQUFBSUFBQUFCQUFCQUFBQUFRQUFBQVxcXG40QUFnQUJBQUVBQVFBSEFBRUFBd0FCQUFJQUFRQURBQUlBQUFBUkFBTUFBZ0FEQUFBQUFBQURBQVFBQUFBQUFBRUFJQUFBQUFBQUFRQUFcXFxuQUFBQUJ3QUNBQUFBRWdBQUFBb0FBUUFDQUFBQUFBQUFBQUFBQWdBQUFBQUFCQUFQQUFBQUJ3QUVBQUlBRWdBQUFBRUFCQUFDQUFNQUFBXFxcbkFCQUJjQUFRQUJBQVVBQUFBQkFBQUFBQUFMQUFBQUFRQUFBQUFBQUFBRUFBQUFBQUFKQUFBQUJBQUFBQUFBQkFBS0FBQUFBQUFHQUFjQVxcXG5BZ0FEQUFBQUFBQUFBQUFBQmdBTEFBQUFBQUFBQUFBQUFBQUJBQUFBREFBSUFBRUFEUUFMQUFJQUFBQUFBQUFBQVFBRkFBRUFBQUFBQUFcXFxuSUFBd0FEQUFBQUFBQUlBQUFBQVFBSkFCRUFBUUFNQUFBQUFBQUFBQVFBQUFBQUFBQUFBUUFCQUJjQUFRQUFBQVVBQ3dBQkFBUUFBUUFHXFxcbkFCMEFBQUFCQUFRQUFnQUpBQUlBRHdBVUFBSUFBUUFIQUFFQUFRQUhBQUlBQUFBQUFBQUFBQUFFQUJNQUFnQUJBQUVBQXdBQUFBSUFBZ1xcXG5BQUFBTUFBUUFBQUFVQUFRQUJBQUFBQVFBQkFBSUFBQUFBQUFNQUFBQUtBQVlBQVFBR0FBY0FBUUFBQUFBQUFnQUhBQVFBQUFBQUFBd0FcXFxuQWdBQUFBb0FBUUFBQUFBQUNnQUFBQVlBQXdBQkFBQUFEUUFEQUFVQUFBQUNBQW9BQUFBTEFBRUFCZ0FpQUFBQUJRQUJBQUFBQWdBQUFBXFxcbkFBRWdBRUFBSUFBQUFBQUF3QUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQVFBQWdBQkFBZ0FCQUFHQUFFQUFBQURBQW9BQUFBRlxcXG5BQUVBQUFBQUFBTUFBQUFHQUFBQUFBQURBQUFBQkFBQUFBQUFBQUFPQUFFQUFRQUFBQVlBQUFBSUFBQUFBQUFLQUFFQUFBQUVBQUFBQkFcXFxuQUJBQUFBQUFBQUFBQUFBQUFCQUFBQUZ3QUVBQUFBQ3dBREFBVUFCQUFBQUFNQUR3QUdBQUVBQVFBSEFBUUFBd0FCQUFNQUJBQUJBQUVBXFxcbkFBQUFBQUFBQWdBQkFBQUFCUUFBQUFJQUFBQUFBQU1BQVFBQUFBVUFBQUFOQUFZQUFRQUFBQUFBQndBQUFBQUFDZ0FEQUFJQUNnQUJBQVxcXG5jQUFRQUFBQUVBQUFBRkFBTUFBQUFGQUFJQUFRQUFBQUlBQUFBQkFBRUFCQUFKQUFVQUFRQUJBQVlBQUFBSkFBRUFDZ0FDQUFJQUFBQUFcXFxuQUFJQUFnQUhBQWtBQUFBUUFCd0FCQUFBQUFBQUF3QURBQTBBQVFBREFBQUFBQUFNQUFjQUFRQURBQWNBQ0FBREFBWUFBQUFEQUFFQUFRXFxcbkFBQUFFQUFRQUVBQW9BQlFBQUFBRUFFd0FDQUFBQUFBQUJBQUlBQVFBT0FBRUFEQUFCQUFFQUNRQUFBQUFBQVFBTUFBQUFBUUFBQUFJQVxcXG5CQUFEQUFFQURBQU1BQU1BQUFBTUFBc0FBQUFCQUFFQUNnQUJBQXNBQUFBQUFCd0FBQUFBQUFBQUFRQUNBQWdBQXdBQUFBVUFBQUFEQUFcXFxuTUFBQUFFQUFBQUFnQUdBQThBQUFBQkFBUUFBQUFBQUJFQUN3QUVBQVVBQkFBQUFBMEFCQUFFQUFNQUFRQUFBQUFBQWdBQUFBQUFBQUFLXFxcbkFBRUFFd0FHQUFBQUJ3QUhBQUVBQVFBRUFBUUFBQUFBQUFNQUFBQUhBQUFBQWdBQkFBQUFBZ0FBQUFJQUFnQUFBQUFBQUFBREFBUUFCUVxcXG5BUUFBQUFCd0FBQUFvQUVRQUFBQUFBQVFBQkFBQUFBQUFBQUFBQUFBQUJBQXNBQVFBQUFBQUFBQUFDQUFJQUFBQUtBQUFBQXdBQUFBY0FcXFxuQmdBQkFBQUFCQUFDQUFJQUFBQUJBQUlBQXdBRUFBQUFCQUFBQUFFQUFBQUNBQkFBQlFBQUFBQUFBUUFBQUFvQUJBQUFBQVFBQUFBQUFBXFxcbkFBQmdBTEFBc0FCUUFBQUFBQUFBQUFBQUFBQ1FBQUFBSUFCQUFBQUFVQUFnQUFBQU1BQUFBQUFBQUFBZ0FBQUFFQUFBQUVBQVlBQVFBRVxcXG5BQUVBQUFBQkFBY0FBQUFHQUFBQUFBQUNBQUlBQUFBR0FBVUFDQUFBQUFFQUFnQUJBQUFBQkFBSEFBQUFBUUFIQUFBQUFnQUNBQXNBQVFcXFxuQUNBQVlBQVFBQUFBQUFBQUFBQUFJQUJBQUFBQUFBQXdBQkFBY0FBQUFCQUFFQUFBQUJBQUFBQUFBTEFBQUFBQUFBQUFZQUFBQUJBQUFBXFxcbkJBQU1BQUlBQUFBQkFBRUFBZ0FFQUE0QUFBQUFBQUFBQUFBQUFBSUFBUUFBQUFRQUF3QVlBQUFBQVFBQUFBSUFCUUFCQUFJQUFBQUJBQVxcXG5NQUJBQUFBQUFBQlFBQ0FBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQ0FBTUFBQUFCQUFBQUFBQUJBQU1BQUFBQUFBQUFBUUFCQUFBQUFBQVVcXFxuQUFRQUN3QVNBQUFBQUFBQ0FBQUFBUUFBQUFBQUFBQUJBQU1BQ3dBREFBQUFBUUFDQUFBQUVBQU5BQUVBQVFBSEFBWUFBUUFCQUFJQUFBXFxcbkFBQUFFQUF3QUNBQUVBQXdBQkFBQUFBQUFBQUFnQUJBQUNBQVlBQ1FBRkFBQUFGZ0FCQUFRQUFBQURBQU1BQkFBQkFBQUFBQUFDQUFBQVxcXG5BUUFBQUFJQURRQUNBQUFBQ3dBR0FBb0FBd0FBQUFVQUFBQUJBQUFBQUFBQUFBVUFBUUFBQUFvQUFBQUNBQUFBQWdBQ0FBVUFBUUFDQUFcXFxuQUFBZ0FDQUFVQUFBQUJBQUFBQUFBREFBQUFBd0FDQUFBQUFBQUFBQUVBQVFBQkFBQUFHUUFBQUFBQUF3QUFBQUVBQUFBQkFBVUFCQUFCXFxcbkFBUUFBQUFCQUFNQUJBQUdBQUVBQVFBRUFBTUFCQUFBQUFRQUJRQUpBQUFBQVFBSkFBSUFBUUFBQUFBQUFBQU1BQUVBQUFBQUFBTUFBZ1xcXG5BREFBSUFBUUFBQUFRQUFBQUVBQWNBQXdBQkFBQUFBUUFCQUFBQUFBQUJBQVVBQmdBSkFBQUFBZ0FiQUFJQUFBQUpBQUFBQUFBR0FBQUFcXFxuQUFBQUFBTUFBQUFCQUFZQUFnQUJBQVlBQVFBTEFBTUFCZ0FBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFDQUFJQUFBQUFBQUFBQUFBQUFBXFxcbk1BQUFBREFBTUFCUUFMQUFBQUFBQUJBQUFBQUFBQ0FBc0FBd0FDQUJNQUFRQUJBQWdBQXdBQ0FBVUFBUUFBQUFFQUFRQUZBQUFBQVFBRFxcXG5BQVFBQlFBQUFBSUFBQUFPQUFFQUFBQUFBQVVBQXdBRkFBQUFBUUFDQUFBQUFBQUlBQUFBQVFBQ0FBQUFDUUFBQUFBQUFBQUdBQUFBQXdcXFxuQURBQWtBQndBQUFBZ0FBQUFCQUFNQUFBQURBQVVBQkFBQkFBSUFBZ0FBQUFRQUF3QUFBQWNBQlFBREFBRUFBQUFFQUFFQUFBQURBQUFBXFxcbkNBQUNBQVFBQkFBQUFBa0FBUUFFQUFBQUJnQUVBQUFBQUFBQUFBb0FBUUFBQUFFQUJnQUFBQUVBQmdBREFBSUFBZ0FBQUFFQUFRQURBQVxcXG5VQUFBQUFBQUlBQkFBQkFBQUFBQUFCQUFZQUFBQUZBQVFBQkFBQkFBRUFCQUFCQUFJQUFBQUNBQUlBQlFBTkFBRUFBQUFDQUFBQUFBQUNcXFxuQUFBQUFRQUJBQUFBQUFBQkFBUUFBQUFBQUFjQUFBQUZBQUFBQUFBQUFBRUFCQUFBQUFrQUFnQUVBQUFBQUFBQkFBQUFBd0FBQUFvQUFBXFxcbkFEQUFFQUJRQUJBQUFBQUFBRkFBb0FBUUFDQUFBQUFnQUVBQWtBQVFBRUFBVUFBQUFBQUFFQUF3QUpBQUlBQkFBSUFBSUFBQUFBQUFNQVxcXG5DQUFBQUFBQUFnQUJBQU1BQWdBQkFBQUFBQUFBQUFFQUJBQUJBQUVBQUFBQkFBQUFBUUFBQUFBQUFRQUNBQWtBQVFBQkFBVUFBZ0FBQUFcXFxuRUFBQUFBQUFJQUFBQURBQUFBQVFBQ0FBQUFCQUFDQUFRQUFnQUNBQUFBQVFBS0FBQUFBUUFBQUFBQUFBQUFBQU1BQUFBREFBSUFCUUFCXFxcbkFBSUFBUUFDQUFBQUJBQUNBQUVBQUFBQkFBQUFBQUFCQUFFQUF3QUFBQUFBQUFBQUFBQUFBZ0FBQUFJQUF3QUNBQUFBQUFBQUFBVUFBUVxcXG5BQUFBRUFBUUFBQUFjQUFRQUJBQU1BQUFBREFBRUFBUUFBQUFrQUFnQUFBQUVBQVFBSEFBWUFBZ0FBQUFZQUFBQUVBQUFBQWdBSEFBUUFcXFxuQVFBQkFBQUFBQUFDQUFFQUFBQUVBQU1BQUFBS0FBQUFBQUFDQUFJQUFRQUJBQU1BQWdBQkFBRUFBQUFEQUFBQUFBQUFBQUVBQmdBQkFBXFxcbk1BQ3dBTEFBQUFCQUFCQUFBQUFBQUFBQUFBQlFBQ0FBQUFBQUFCQUFRQUFBQUFBQUVBQUFBQUFBVUFBd0FDQUFNQUNBQUJBQVlBQVFBQ1xcXG5BQUFBQVFBRUFBVUFBZ0FBQUFZQUFRQUJBQUFBQWdBQkFBSUFBZ0FBQUFBQUJBQUFBQUVBQWdBQUFBVUFBZ0FDQUFZQUFRQUZBQU1BQWdcXFxuQUZBQUlBQVFBQkFBQUFCQUFDQUFBQUFnQUFBQUFBQlFBQUFBQUFBQUFCQUFBQUFnQUFBQUFBQUFBVkFBSUFBQUFBQUFFQUFnQUhBQU1BXFxcbkF3QURBQUVBQVFBQ0FBWUFBUUFIQUFBQUFBQUFBQUFBQkFBQUFBTUFBZ0FBQUFBQUFRQUJBQU1BQVFBQkFBQUFBUUFCQUFVQUFBQUJBQVxcXG5VQUJBQUlBQUlBQVFBQUFBRUFBQUFCQUFFQUFBQUJBQUFBQUFBQUFBQUFBUUFEQUFFQUFRQUFBQUFBQkFBREFBRUFCQUFBQUFRQUFBQUNcXFxuQUFJQUF3QUFBQUVBQUFBQUFBQUFBUUFGQUFBQUFnQUVBQUlBQVFBR0FBQUFBUUFQQUFBQUFnQUZBQUFBQWdBQUFBTUFCQUFDQUFRQUF3XFxcbkFGQUFFQUFRQUJBQWNBQUFBSEFBSUFBQUFBQUFZQUFBQUFBQUlBQUFBQUFBQUFBQUFEQUFBQUF3QUFBQUVBQWdBSEFBRUFCd0FEQUFFQVxcXG5BQUFDQUFJQUFBQUZBQUFBQXdBQUFBQUFBZ0FCQUFFQUFRQUNBQUlBQWdBQUFBRUFCQUFDQUFFQUFnQURBQUFBQWdBQ0FBUUFBZ0FCQUFcXFxuSUFBZ0FBQUFBQUFRQUFBQUlBQUFBSEFBRUFBQUFCQUFRQUF3QURBQUVBQlFBQkFBQUFBQUFEQUFBQUFRQUdBQUVBQUFBQ0FBMEFBUUFBXFxcbkFBQUFCQUFBQUE4QUFnQUFBQW9BQWdBQkFBQUFBUUFBQUFRQUFnQUFBQU1BQUFBQ0FBQUFCd0FDQUFFQUFBQUFBQU1BQUFBRUFBQUFBQVxcXG5BTEFBQUFBQUFLQUFVQUNRQUJBQUFBQXdBQkFBQUFEQUFBQUFBQUFBQUFBQUFBQVFBQUFBSUFBUUFDQUFBQUFRQURBQUlBQUFBSEFBQUFcXFxuQUFBREFBQUFBQUFHQUFJQUFBQUFBQVlBQUFBQUFBUUFBZ0FCQUFFQUFBQUhBQUlBQkFBQkFBVUFBQUFBQUFFQUFnQUFBQUlBQXdBSUFBXFxcbkVBQmdBQ0FBRUFBUUFBQUFNQUJRQUFBQUlBQVFBQkFBTUFBQUFEQUFjQUFRQUFBQUVBQUFBQUFBQUFBd0FBQUFFQUFRQUJBQUVBQmdBRlxcXG5BQUFBQlFBRUFBQUFBQUFEQUFFQUFnQUFBQUFBQWdBQUFBSUFBZ0FBQUFJQUFBQUVBQUVBQUFBQ0FBQUFCQUFCQUFFQUJBQUNBQUVBQUFcXFxuQUJBQUlBQVFBREFBQUFBQUFCQUFBQUN3QUNBQUFBQUFBREFBTUFCUUFCQUFFQUFBQUJBQUlBQVFBQUFBQUFBQUFJQUFFQUJBQURBQUFBXFxcbkJ3QUJBQU1BQVFBQUFBSUFBd0FEQUFFQUFBQUJBQUVBQVFBQUFBSUFBQUFCQUFFQUFRQUVBQUlBQlFBQUFBRUFBUUFBQUFFQUFnQUFBQVxcXG5BQUFBQUFBQU1BQVFBQ0FBRUFBd0FCQUFBQUJRQUNBQVFBQUFBREFBQUFBQUFCQUFNQUJ3QUFBQVlBQkFBQUFBRUFBZ0FDQUFNQUJRQUFcXFxuQUFnQUF3QURBQUlBQVFBSEFBSUFBUUFCQUFFQUFRQUFBQWdBQUFBQkFBTUFBQUFDQUFFQUFBQUJBQUlBQUFBQUFBWUFCd0FCQUFBQUF3XFxcbkFBQUFBQUFBQUJBQUlBQUFBQUFBRUFBUUFCQUFBQUFRQUVBQUlBQUFBQUFBRUFBQUFBQUFBQUJRQUNBQU1BQVFBQ0FBQUFCZ0FCQUFBQVxcXG5BUUFBQUFBQUFBQUFBQUlBQUFBQ0FBTUFBQUFDQUFjQUFRQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFRQUJBQUFBQUFBQ0FBQUFBUUFBQUFcXFxuUUFBZ0FBQUJFQUJRQUVBQUFBQkFBQUFBQUFBZ0FBQUFjQUFBQUJBQUFBQUFBQkFBVUFBUUFDQUFJQURnQUFBQUFBQWdBQkFBQUFBUUFBXFxcbkFBTUFBUUFDQUFFQUFBQUtBQUVBQkFBQUFBVUFBUUFCQUFFQUFnQUJBQUVBQVFBQUFBQUFBUUFJQUFFQUFRQUFBQUVBQUFBQUFBQUFBQVxcXG5BQkFBTUFBUUFQQUFFQUFnQUJBQUVBQUFBQUFBSUFBUUFBQUFBQUF3QUFBQUVBQUFBQUFBRUFBQUFGQUFjQUFnQUNBQVlBQUFBQkFBQUFcXFxuQWdBQkFBUUFBQUFDQUFFQUF3QUNBQUlBQVFBQUFBTUFBZ0FFQUFNQUFRQUFBQUVBQUFBQkFBRUFBd0FBQUFFQUFBQUNBQVlBQlFBQkFBXFxcbmtBQUFBREFBRUFBQUFHQUFBQUFBQURBQUFBQVFBQUFBSUFBZ0FBQUFNQUFRQUFBQUVBQUFBQUFBZ0FBUUFDQUFFQUFBQUNBQVFBQVFBQ1xcXG5BQUVBQlFBQUFBRUFBZ0FDQUFFQUFBQUJBQUVBQWdBQkFBQUFBZ0FEQUFFQUFRQURBQUFBQVFBQkFBQUFCUUFBQUFJQUJnQUJBQUFBQkFcXFxuQUFBQUVBQUFBQUFBRUFBZ0FBQUFNQUFBQUJBQUVBQUFBQUFBSUFBQUFDQUFBQUFRQUFBQUFBQUFBQ0FBQUFBQUFCQUFNQUFnQUFBQUFBXFxcbkFBQUJBQUFBQkFBQUFBQUFBUUFCQUFBQUFnQUFBQUlBQVFBQkFBRUFBQUFBQUFBQUFBQUFBQXNBQkFBQUFBRUFBQUFCQUFVQUFBQUJBQVxcXG5FQUFBQUZBQUVBQUFBQ0FBUUFBUUFCQUFJQUFRQUJBQUVBQUFBQUFBQUFBQUFBQUFZQUFBQUNBQU1BQUFBQkFBSUFBd0FBQUFBQUF3QUNcXFxuQUFRQUFBQURBQUFBQUFBQkFBQUFBd0FBQUEwQUFnQUFBQU1BQVFBQUFBQUFBUUFCQUFNQUFBQUJBQUFBQkFBTkFBUUFBUUFHQUFJQUF3XFxcbkFBQUFNQUFRQUFBQUlBQVFBQ0FBQUFBUUFEQUFFQUFnQUFBQUVBQWdBQUFBTUFBUUFCQUFBQUFRQUNBQUVBQXdBQ0FBQUFBQUFCQUFFQVxcXG5BQUFCQUFFQUF3QUVBQUVBQWdBREFBQUFBZ0FEQUFJQUFRQUJBQWNBQWdBQUFBRUFBQUFBQUFJQUFBQUNBQVVBQVFBQkFBQUFBQUFCQUFcXFxuRUFBZ0FBQUFFQUF3QUFBQUVBQWdBQUFBQUFCUUFBQUFJQUFBQUJBQUFBQVFBREFBRUFBQUFBQUFNQUJRQUZBQUFBQVFBREFBRUFBZ0FBXFxcbkFBQUFBd0FDQUFBQUFBQUFBQUFBQkFBQUFBRUFCZ0FBQUFFQUFRQUNBQUVBQUFBQkFBUUFBUUFDQUFFQUNBQUJBQUVBQUFBQUFBUUFBQVxcXG5BQUFBUUFBQUFBQUFNQUFBQUNBQUVBQndBQkFBQUFCZ0FBQUFFQUFBQUFBQUVBQUFBR0FBTUFBZ0FBQUFBQUFBQUFBQVVBQVFBQUFBTUFcXFxuQUFBQkFBQUFBUUFCQUFFQUFRQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFRQUFBQU1BQWdBQUFBQUFBQUFEQUFnQUJ3QUFBQUFBQUFBQ0FBXFxcbkVBQUFBQUFBQUFBQUFDQUFBQUFRQUNBQUFBQVFBQUFBQUFBUUFCQUFJQUF3QUJBQUVBQUFBQ0FBY0FCQUFBQUFBQUJnQUFBQUFBQUFBQVxcXG5BQUVBQUFBQ0FBRUFBQUFDQUFFQUF3QUJBQUlBQUFBQkFBUUFBZ0FDQUFFQUFBQUNBQUFBQUFBQUFBRUFBQUFHQUFnQUJRQUJBQUFBQ0FcXFxuQUFBQVlBQVFBQUFBd0FBd0FGQUFBQUFnQUJBQVVBQVFBQkFBUUFBd0FCQUFFQUJRQUdBQUVBQWdBSEFBTUFBZ0FBQUFBQUFRQUFBQUVBXFxcbkFnQUJBQUVBQVFBQUFBRUFBZ0FDQUFBQUFnQURBQUVBQVFBQUFBRUFBQUFCQUFVQUJRQUNBQUFBQUFBQkFBSUFCQUFCQUFBQUFBQUJBQVxcXG5NQUNBQUJBQVlBQUFBQUFBTUFBUUFCQUFFQUFRQUNBQUVBQUFBRkFBQUFBUUFBQUFVQUFRQUVBQUVBQ0FBQUFBRUFCQUFBQUFBQUFnQUFcXFxuQUFNQUFRQUFBQUVBQWdBQ0FBQUFBZ0FBQUFBQUFRQUFBQVVBQXdBQkFBSUFBd0FCQUF3QUF3QUFBQUVBQUFBQUFBQUFBQUFBQUFNQUFBXFxcbkFCQUFVQUF3QUNBQUVBQUFBREFBSUFBQURsMVFFQWtCSUJBRERVQVFEekVBRUFvUHdBQU1jTEFnQnAxd0VBRWhRQkFGWCtBQURnRGdFQVxcXG5jdjBBQUc0TkF3Q3lBQUFBQmdBQkFEc3pBQUIxQndVQXJ2c0FBQmtLQVFBbjF3RUEwQk1CQUcwa0FBQTlBZ0lBTERNQUFEWUhCQUNhMXdcXFxuRUFReFFCQUlIOUFBQ2JEUU1BQi84QUFLOFBBUUJyMXdFQUZCUUJBTEV2QUFBS0JBRUE3OVFCQUtZUkFRQ1RNUUFBbXdRQkFPejdBQUE5XFxcbkNnTUFFTlFCQU5NUUFRQjNJUUFBRHdJRUFQcjhBQUNBREFJQWp1NEJBRXNWQVFEWS9nQUFkZzhCQUxneUFBQWdCZ0lBZi9zQUFPZ0pBUVxcXG5EMDFRRUFueElCQU9BekFBQXZDUUlBVmVBQkFNd1VBUUNzL3dBQVZCQUJBSm9lQUFEcUFBSUE5LzBBQUlRT0JBQ1QxQUVBVlJFQkFJVWdcXFxuQUFCVUFRRUFTQ0VBQUxFQkFRRHAxQUVBb0JFQkFEelhBUURsRXdFQXFCMEFBTklBQVFDNi9nQUFXQThCQUk3VUFRQlFFUUVBYk80QkFDXFxcbjRWQVFBbzFnRUEweElCQU5IV0FRQjZFd0VBTUNFQUFKMEJBUUJzL3dBQUZCQUJBTFRYQVFCZEZBRUFwQjBBQU00QUFRQmg0QUVBMkJRQlxcXG5BQ1F5QUFBbkJRTUFLVElBQURZRkF3RC8xd0VBcGhRQkFGZldBUUFDRXdFQTZmNEFBSWNQQVFEMk1nQUFld1lCQUJQOEFBQ2NDZ0lBYnRcXFxuUUJBREFSQVFCeUpBQUFSd0lDQUxyV0FRQmpFd0VBQmYwQUFKWU1BZ0RYTXdBQUdBa0NBQmY4QUFDa0NnSUFjQ0VBQUFFQ0FRQWMvUUFBXFxcbnhBd0NBSUl6QUFCTENBSUFaTmNCQUEwVUFRQ1Y3Z0VBVWhVQkFDUXZBQUI5QXdFQTVUSUFBR29HQVFBSjFBRUF6QkFCQUVNZEFBQ2RBQVxcXG5FQWw5VUJBRUlTQVFDQkx3QUEyZ01CQUVyOEFBQUtDd0lBRTljQkFMd1RBUUNoMXdFQVNoUUJBSFQvQUFBY0VBRUFmZjhBQUNVUUFRQ0RcXFxuSkFBQWZnSUVBQ016QUFBWkJ3TUFXZUFCQU5BVUFRQlkxUUVBQXhJQkFEZjhBQURrQ2dJQVpDOEFBTDBEQVFCWS9nQUE0dzRCQU80eUFBXFxcbkJ6QmdFQWF2d0FBRllMQWdCbTFBRUFLQkVCQUg0Z0FBQk5BUUVBVU9BQkFNY1VBUUR0MVFFQW1CSUJBSmY4QUFDd0N3TUFrZGNCQURvVVxcXG5BUUM5MXdFQVpoUUJBRTB4QUFCWUJBRUFxak1BQUtzSUF3QU0vQUFBamdvQ0FFY3ZBQUNnQXdFQU1ESUFBRXNGQXdERy9RQUFaQTREQUJcXFxuVFdBUUMvRWdFQWtUSUFBUElGQVFBeC9nQUF1dzRCQUFiWEFRQ3ZFd0VBZVA0QUFBSVBBZ0JhTWdBQW9BVUNBSVF2QUFEZEF3RUFvZndBXFxcbkFNa0xBZ0M3SkFBQUdBTUJBSlFnQUFCaUFRRUErTlFCQUs4UkFRRCsvQUFBaUF3Q0FJZlVBUUJKRVFFQS9kWUJBS1lUQVFCWjFRRUFCQlxcXG5JQkFIUWdBQUJEQVFFQUVpRUFBSWNCQVFEVi9BQUFNUXdDQUFZdkFBQmZBd0VBdWdjQkFNSVFBUUQwcHdBQWl3a0JBTDhrQUFBY0F3RUFcXFxubk5RQkFGNFJBUUE4MWdFQTV4SUJBS0l5QUFBREJnRUFJUElCQUNRV0FRQVAxZ0VBdWhJQkFOVXlBQUJhQmdFQTdQd0FBR0VNQWdCSi9BXFxcbkFBQ0FzQ0FIRCtBQUQyRGdJQVJTOEFBSjREQVFDNE13QUEwZ2dDQU9JQ0FBQlZBQUVBdWk4QUFCTUVBUURHTWdBQVBBWUNBSWZ1QVFCRlxcXG5GUUVBcy84QUFGc1FBUUJ4K3dBQTJna0JBQXYvQUFDekR3RUFKdjBBQU5nTUFnQmovQUFBUVFzREFERXhBQUE4QkFFQWIvOEFBQmNRQVFcXFxuQzVKQUFBRmdNQkFMRXlBQUFTQmdJQW9QMEFBUElOQXdBdTF3RUExeE1CQUUzV0FRRDRFZ0VBai9zQUFQZ0pBUUE4NEFFQXN4UUJBRG45XFxcbkFBRCtEQUlBaS8wQUFMa05Bd0NhQndFQW94QUJBSlg3QUFEK0NRRUFyd2NCQUxnUUFRQnM4UUVBQ2hZQ0FKUFhBUUE4RkFFQU45UUJBUFxcXG5vUUFRQ0NNZ0FBNHdVQkFMNEFBQUFWQUFNQWZTd0FBRlVEQVFESS9nQUFaZzhCQUpuOEFBQzJDd01BZlRNQUFEOElBZ0NRTWdBQThRVUJcXFxuQUEwdkFBQm1Bd0VBdnRZQkFHY1RBUURHMVFFQWNSSUJBRGovQUFEZ0R3RUFxZjBBQUEwT0F3Q1ExZ0VBT3hNQkFDM1VBUUR3RUFFQUpOXFxcblVCQU5ZUkFRRDFBd0FBYkFBQkFJL1dBUUE2RXdFQXI5VUJBRm9TQVFCZS9RQUFNZzBEQVBmK0FBQ1pEd01BNkRNQUFEOEpBZ0RNMUFFQVxcXG5neEVCQUMvVUFRRHlFQUVBRVA0QUFLME9BUUIrMVFFQUtSSUJBTGNIQVFDL0VBRUFtZFFCQUZzUkFRQVA3Z0VBOHhRQkFKYjhBQUN1Q3dcXFxuSUEwdFFCQUlrUkFRRHAvd0FBaFJBQkFLWC9BQUJORUFFQW1USUFBUG9GQVFERTFRRUFieElCQUZ6K0FBRG5EZ0VBZndFQUFDSUFBUURxXFxcbjF3RUFrUlFCQUxEVUFRQnFFUUVBdnRVQkFHa1NBUURaTXdBQUhna0RBT2N5QUFCc0JnRUE0dFlCQUlzVEFRQ3Qvd0FBVlJBQkFLNzhBQVxcXG5EakN3SUEydndBQURzTUFnQWIvQUFBckFvQ0FHSXZBQUM3QXdFQUNqSUFBTVlFQXdENUF3QUFiUUFCQU1IOUFBQlZEZ01BY2k4QUFNc0RcXFxuQVFCdE1RQUFlQVFCQUNzeUFBQThCUU1BVnlFQUFNa0JBd0JaMWdFQUJCTUJBRHdkQUFDV0FBRUFQak1BQUlNSEJBQitJUUFBSFFJQkFCXFxcbnZ4QVFDcEZRTUFkTzRCQURVVkFRQlkxQUVBR2hFQkFQcjdBQUJuQ2dNQXMvNEFBRkVQQVFCZit3QUF5QWtCQU1rdkFBQWlCQUVBV2pFQVxcXG5BR1VFQVFDcDFBRUFaQkVCQURIOUFBRHVEQUlBT1RFQUFFUUVBUUN3SFFBQTJnQUJBUFBVQVFDcUVRRUF6L3dBQUNVTUFnQ0Erd0FBNlFcXFxua0JBRzc4QUFCZUN3SUFhTmNCQUJFVUFRQzJBZ0FBUkFBQkFEb3pBQUJ4QndRQXlkY0JBSElVQVFBODhRRUE2eFVCQUtMV0FRQk5Fd0VBXFxcbkJpQUFBQmtCQVFCRjFBRUFDQkVCQUdQWEFRQU1GQUVBK3RVQkFLVVNBUUJCTWdBQWZnVURBRXIrQUFEVERnSUFiVElBQUxrRkFRREMxZ1xcXG5FQWF4TUJBSDM5QUFDUERRTUFjRE1BQUNBSUF3QzcxZ0VBWkJNQkFJL1hBUUE0RkFFQTV0UUJBSjBSQVFBUy93QUF1ZzhCQUFYN0FBQ2ZcXFxuQ1FJQUcrNEJBUDhVQVFBSjFnRUF0QklCQUhuK0FBQUVEd0lBOXZzQUFGc0tBd0NBMXdFQUtSUUJBRGo5QUFEOERBSUEzdFFCQUpVUkFRXFxcbkNDTVFBQWpRUUJBRWorQUFEUURnRUFYdjRBQU9rT0FRQWM3Z0VBQUJVQkFCa3pBQUR1QmdZQVB6SUFBSGdGQXdBREx3QUFYQU1CQUdiVlxcXG5BUUFSRWdFQTgvd0FBSEFNQXdDQjFRRUFMQklCQU92V0FRQ1VFd0VBUitBQkFMNFVBUUFCTXdBQWl3WUVBS2d2QUFBQkJBRUFteVFBQU1cXFxuSUNBd0J3L3dBQUdCQUJBQm55QVFBZEZnRUFRZFFCQUFRUkFRRHAvQUFBV3d3Q0FNMHlBQUJOQmdNQURkY0JBTFlUQVFCaC93QUFDUkFCXFxcbkFKWWtBQUN6QWdNQUZ0UUJBTmtRQVFDUU13QUFhZ2dDQUZiWEFRRC9Fd0VBU3VBQkFNRVVBUUJyL0FBQVdBc0NBRkQ4QUFBV0N3SUFjdFxcXG5VQkFCMFNBUURPL3dBQWNSQUJBQkl2QUFCckF3RUFsZjhBQUQwUUFRQ1ord0FBQWdvQkFFYi9BQUR1RHdFQXQvMEFBRGNPQXdCV0lRQUFcXFxueGdFREFGTC9BQUQ2RHdFQVFmSUJBRU1XQXdBUDFBRUEwaEFCQUVEVUFRQURFUUVBOFFNQUFHa0FBUUI0SUFBQVJ3RUJBR3pXQVFBWEV3XFxcbkVBUHZFQkFPMFZBUUFrL0FBQXZnb0NBSmIrQUFBMER3RUFZTlFCQUNJUkFRREoxZ0VBY2hNQkFEQXpBQUJKQndNQWxTOEFBTzREQVFBZVxcXG4xd0VBeHhNQkFCN1ZBUURRRVFFQWdnY0JBSXdRQVFBbS9BQUF3Z29DQUI3OUFBRElEQUlBUlNFQUFLNEJBUUI3TWdBQTFBVUNBTHo4QUFcXFxuRC9Dd0lBT2Y4QUFPRVBBUUNjL0FBQXZ3c0NBR0wrQUFEdERnRUFITlFCQU44UUFRQ1IxZ0VBUEJNQkFJalVBUUJLRVFFQVQrNEJBQjRWXFxcbkFRRGsxUUVBanhJQkFEM2dBUUMwRkFFQVZmMEFBQmNOQXdDOS9BQUFBUXdDQUpjeUFBRDRCUUVBNE5VQkFJc1NBUUNTTVFBQW1nUUJBTlxcXG5JeUFBQlhCZ0VBbmk4QUFQY0RBUUFhL1FBQXdBd0NBT1l5QUFCckJnRUFyKzRCQUdVVkFRRFdKQUFBTXdNQkFQVCtBQUNTRHdFQWN1NEJcXFxuQURRVkFRRFQxUUVBZmhJQkFBejlBQUNrREFJQWE5WUJBQllUQVFCYS93QUFBaEFCQUZmK0FBRGlEZ0VBYXZzQUFOTUpBUUJNMUFFQUR4XFxcbkVCQUhRa0FBQkxBZ01Bcy8wQUFDc09Bd0NTK3dBQSt3a0JBSmdnQUFCbUFRRUFxZFVCQUZRU0FRQzJKQUFBRXdNQkFDYldBUURSRWdFQVxcXG5hYXNBQUpJSkFRQXcxZ0VBMnhJQkFHejdBQURWQ1FFQWI5Y0JBQmdVQVFCVk1RQUFZQVFCQUpmK0FBQTFEd0VBdXgwQUFPVUFBUUM5TXdcXFxuQUEzQWdDQUV6VkFRRDRFUUVBSkNFQUFKZ0JBUURTTXdBQUN3a0RBRFl5QUFCZEJRTUFFdkVCQUk0VkF3QTNIUUFBa2dBQkFESUJBQUFZXFxcbkFBSUFuaklBQVA4RkFRQmExZ0VBQlJNQkFQajlBQUNJRGdRQWhRTUFBRndBQXdCeEx3QUF5Z01CQUdIdUFRQW5GUUVBUGY0QUFNY09BUVxcXG5CVE1RQUFYZ1FCQU16OEFBQWZEQUlBQXpJQUFMRUVBd0EvL2dBQXlRNEJBRkRWQVFEOEVRRUE2ZFlCQUpJVEFRQjExZ0VBSUJNQkFQUURcXFxuQUFCckFBRUFQdFVCQU84UkFRQmNNUUFBWndRQkFLd3lBQUFOQmdFQXpTUUFBQ29EQVFEbS93QUFneEFCQUdZeEFBQnhCQUVBYmU0QkFDXFxcbjhWQVFEVEpBQUFNQU1CQU83L0FBQ0tFQUVBZDljQkFDQVVBUUJWL3dBQS9ROEJBTjdWQVFDSkVnRUFrOVVCQUQ0U0FRQXI3Z0VBQ2hVQlxcXG5BSWJVQVFCSUVRRUFjZjBBQUdzTkF3RDUvZ0FBbnc4REFHb3lBQUMyQlFFQTFqTUFBQlVKQXdCRk13QUFtd2NEQU5rQ0FBQkpBQUlBNVBcXFxuc0FBREVLQVFCSk1RQUFWQVFCQUEzVUFRRFFFQUVBTmZJQkFEa1dBUURlMWdFQWh4TUJBSGNHQUFCMEFBSUFWdFlCQUFFVEFRQTlIUUFBXFxcbmx3QUJBUERXQVFDWkV3RUFOUDRBQUw0T0FRQ2MxZ0VBUnhNQkFIYitBQUQrRGdJQXJ4MEFBTmtBQVFERkFRQUFKZ0FEQURuWEFRRGlFd1xcXG5FQTVETUFBRGNKQWdEdDFnRUFsaE1CQU5qV0FRQ0JFd0VBZ2Z3QUFJUUxBZ0ROL2dBQWF3OEJBQ2JYQVFEUEV3RUFVZUFCQU1nVUFRQXNcXFxuL0FBQXpnb0NBUFBXQVFDY0V3RUFPL3dBQU93S0FnRG4vQUFBVnd3Q0FMRXpBQURFQ0FJQVlTRUFBT1FCQWdDSi9nQUFJdzhDQUQvV0FRXFxcbkRxRWdFQXlkVUJBSFFTQVFCbU1nQUFzZ1VCQUFEOUFBQ01EQUlBVEIwQUFLWUFBUURqMXdFQWloUUJBQ3ZXQVFEV0VnRUFydjBBQUJ3T1xcXG5Bd0NjTXdBQWhnZ0NBSXo4QUFDYUN3SUFTZFFCQUF3UkFRRGkvd0FBZmhBQkFDOGlBQUFuQWdJQVl2d0FBRDRMQXdBSzF3RUFzeE1CQUxcXFxuTXZBQUFNQkFFQU9mSUJBRDBXQVFEY01nQUFZUVlCQUszWEFRQldGQUVBQXpNQUFKUUdBd0NMSkFBQW1BSUNBR2d4QUFCekJBRUE4UDBBXFxcbkFHb09Bd0NML3dBQU14QUJBTUhWQVFCc0VnRUFEeklBQU5ZRUJBQkY4UUVBOUJVQkFCanhBUUNnRlFNQW9QOEFBRWdRQVFCYU13QUE1Z1xcXG5jQ0FETFdBUURkRWdFQTZ6TUFBRWNKQXdBZ0lRQUFrUUVDQU5va0FBQTNBd0VBS1A4QUFOQVBBUUNxL2dBQVNBOEJBSzB2QUFBR0JBRUFcXFxucUNBQUFHc0JBZ0R6TXdBQVh3a0RBT0l5QUFCbkJnRUFHRE1BQU9vR0JBQTE3Z0VBRXhVQkFNM1ZBUUI0RWdFQVh6SUFBS29GQWdCbE13XFxcbkFBL3djREFFOGRBQUNvQUFFQTV5UUFBRVFEQVFCMi9BQUFiZ3NDQU4zK0FBQjdEd0VBeXZ3QUFCc01BZ0NMSUFBQVdnRUJBRTd4QVFBQlxcXG5GZ01BaWU0QkFFY1ZBUUI5SVFBQUhBSUJBSERYQVFBWkZBRUF1TlFCQUhJUkFRQ2wvQUFBMFFzQ0FBSFhBUUNxRXdFQVV6SUFBSklGQWdcXFxuQ08vZ0FBTEE4QkFGYjhBQUFpQ3dJQWFkUUJBQ3NSQVFDVU13QUFkUWdEQU9MN0FBQXZDZ0VBU0NBQUFEZ0JBZ0Q1L0FBQWZnd0NBTE1PXFxcbkFBQjZBQUlBeHk4QUFDQUVBUUIyTXdBQUx3Z0NBSVFIQVFDT0VBRUFyZFlCQUZZVEFRQ0Evd0FBS0JBQkFKalVBUUJhRVFFQVFmRUJBUFxcXG5BVkFRQ2xNd0FBblFnQ0FJUFdBUUF1RXdFQXV2MEFBRUFPQXdBUUlRQUFoUUVCQU56V0FRQ0ZFd0VBdjlRQkFIY1JBUURXMXdFQWZSUUJcXFxuQUNieUFRQXFGZ0VBRGRZQkFMZ1NBUUFsSUFBQUlnRUNBRWZ5QVFCVkZnTUFrUDRBQUM0UEFRQU5Nd0FBdVFZRUFGcjdBQUREQ1FFQXB5XFxcbjhBQUFBRUFRQzdNd0FBMkFnQ0FBdlhBUUMwRXdFQTNRSUFBRkVBQWdDVjF3RUFQaFFCQUlna0FBQ1NBZ0lBVFB3QUFBNExBZ0NaMVFFQVxcXG5SQklCQU9QOEFBQlBEQUlBdTlVQkFHWVNBUUNNTHdBQTVRTUJBUDdYQVFDbEZBRUFMTlFCQU84UUFRQjQvd0FBSUJBQkFIcldBUUFsRXdcXFxuRUFMTmNCQU5VVEFRQm8vd0FBRUJBQkFIb3hBQUNGQkFFQUQ5Y0JBTGdUQVFESk1nQUFRZ1lEQU4wT0FBQitBQUlBOGRVQkFKd1NBUURDXFxcbjFBRUFlaEVCQUNUL0FBRE1Ed0VBbXY4QUFFSVFBUUJ4MWdFQUhCTUJBTS8vQUFCeUVBRUFDeThBQUdRREFRRE1NZ0FBU3dZQ0FQcldBUVxcXG5DakV3RUFGdFlCQU1FU0FRQVYrd0FBcHdrQ0FPZitBQUNGRHdFQWx2OEFBRDRRQVFEU0F3QUFZUUFCQU5uVkFRQ0VFZ0VBL1I4QUFBOEJcXFxuQWdDeCt3QUFIUW9DQUtQOEFBRE5Dd0lBZnk4QUFOZ0RBUUJDTHdBQW13TUJBQ2Y4QUFERUNnSUFwKzRCQUY0VkFRQXRJUUFBbXdFQkFEXFxcblVkQUFDUUFBRUFYT0FCQU5NVUFRQ3kvQUFBNndzQ0FINzhBQUIrQ3dJQW5TOEFBUFlEQVFENU13QUFjUWtEQUFiV0FRQ3hFZ0VBVzlVQlxcXG5BQVlTQVFBdjFnRUEyaElCQUo4dkFBRDRBd0VBdkIwQUFPWUFBUUE3L3dBQTR3OEJBTmd5QUFCZEJnRUFhTlVCQUJNU0FRRGxNd0FBT1FcXFxua0NBSUl2QUFEYkF3RUFwLzRBQUVVUEFRQmQxUUVBQ0JJQkFLelVBUUJuRVFFQXNpUUFBQWNEQXdBMy9RQUErZ3dDQUlBdkFBRFpBd0VBXFxcbjM5UUJBSllSQVFCeit3QUEzQWtCQU1mOUFBQm5EZ01BU0IwQUFLSUFBUUN3K3dBQUd3b0NBQVRYQVFDdEV3RUFnZFFCQUVNUkFRQmJMd1xcXG5BQXRBTUJBRFRnQVFDckZBRUFzZ0lBQUVBQUFRQWQxQUVBNEJBQkFNNzhBQUFqREFJQXFETUFBS1VJQkFEazFnRUFqUk1CQU1mWEFRQndcXFxuRkFFQXRqSUFBQndHQWdBWU1nQUErZ1FFQVBuOUFBQ01EZ01BQi8wQUFKb01BZ0JwL3dBQUVSQUJBSll4QUFDZUJBRUE3TmNCQUpNVUFRXFxcbkRlL0FBQVF3d0NBSFF5QUFER0JRSUFFZjBBQUs0TUFnQzUvUUFBUFE0REFNMzhBQUFoREFJQW9pOEFBUHNEQVFBaCt3QUFyZ2tCQUFIVVxcXG5BUURFRUFFQURlNEJBUEVVQVFDTk13QUFaQWdDQURiOUFBRDREQUlBUlB3QUFQNEtBZ0J6MVFFQUhoSUJBSHd5QUFEV0JRVUFoOWNCQURcXFxuQVVBUUFkTHdBQWRnTUJBTXJVQVFDQkVRRUFNaThBQUlzREFRQkQxQUVBQmhFQkFNWCtBQUJqRHdFQU4vSUJBRHNXQVFDZit3QUFDQW9CXFxcbkFDNHpBQUEvQndZQXpDUUFBQ2tEQVFCaUlRQUE1Z0VEQUxiL0FBQmVFQUVBbS9zQUFBUUtBUURPSHdBQStnQURBSTR4QUFDWkJBRUEralxcXG5JQUFIOEdBUURiTWdBQVlBWUJBT1grQUFDRER3RUFRZjRBQU1zT0FRRGYxUUVBaWhJQkFQWXpBQUJvQ1FNQWhkVUJBREFTQVFDUy9RQUFcXFxueUEwREFGc2RBQUMwQUFFQWlnY0JBSk1RQVFCNk13QUFPUWdDQU1QOUFBQmJEZ01BamdjQkFKY1FBUUJqL3dBQUN4QUJBTi8rQUFCOUR3XFxcbkVBWFAwQUFDd05Bd0JENEFFQXVoUUJBSHZVQVFBOUVRRUFHUDRBQUxVT0FRREYxd0VBYmhRQkFOcjdBQUFtQ2dFQW5kVUJBRWdTQVFCWVxcXG40QUVBenhRQkFHb2hBQUQ0QVFJQW1OY0JBRUVVQVFBMzdnRUFGUlVCQUNMOEFBQzZDZ0lBY1RFQUFId0VBUUJtL1FBQVNnMERBS0x1QVFcXFxuQmFGUUVBaVBzQUFQRUpBUUMwMWdFQVhSTUJBT015QUFCb0JnRUFqaUFBQUYwQkFRQWpNZ0FBSkFVREFEY3hBQUJDQkFFQUxDSUFBQ0lDXFxcbkFnQ0xMd0FBNUFNQkFCcnhBUUNtRlFNQVQvd0FBQlFMQWdBcjFRRUEzUkVCQUtYN0FBQVBDZ0lBWmRRQkFDY1JBUUJRL3dBQStBOEJBQ1xcXG52L0FBRFREd0VBWVB3QUFEZ0xBd0J1TWdBQXVnVUNBSGo3QUFEaENRRUFnQ0FBQUU4QkFRQTMvZ0FBd1E0QkFFUHlBUUJKRmdNQUFmc0FcXFxuQUpVSkFnQ2hNZ0FBQWdZQkFObldBUUNDRXdFQUJ5QUFBQm9CQVFBYU1nQUFBZ1VFQUREWEFRRFpFd0VBZXZzQUFPTUpBUUIxTVFBQWdBXFxcblFCQURZaEFBQ2lBUUVBVlRNQUFOY0hBZ0MxTWdBQUdnWUNBRHYrQUFERkRnRUFLdjBBQU9BTUFnQ3RKQUFBK0FJREFISFVBUUF6RVFFQVxcXG5jaklBQU1JRkFnQjcxd0VBSkJRQkFHajlBQUJRRFFNQVhkWUJBQWdUQVFBNDhRRUE1eFVCQUdiZ0FRRGRGQUVBZkNFQUFCc0NBUUNHMVFcXFxuRUFNUklCQUlYWEFRQXVGQUVBUGRjQkFPWVRBUUJUL1FBQUVRMERBSXdnQUFCYkFRRUFKak1BQUNNSEF3QVgxUUVBeWhFQkFHL3VBUUF4XFxcbkZRRUFzUHdBQU9jTEFnQVovZ0FBdGc0REFDWDdBQUN5Q1FFQVBQOEFBT1FQQVFCLy9BQUFnQXNDQUlEV0FRQXJFd0VBUi84QUFPOFBBUVxcXG5CaE13QUE5QWNDQU9mVkFRQ1NFZ0VBTWVBQkFLZ1VBUUNSQndFQW1oQUJBQ1h4QVFESEZRTUFGdGNCQUw4VEFRQVIvZ0FBcmc0QkFNdlhcXFxuQVFCMEZBRUFhakVBQUhVRUFRQnE4UUVBQmhZQ0FLL1hBUUJZRkFFQUsvd0FBTXdLQWdBZS93QUF4ZzhCQUtZdkFBRC9Bd0VBYlAwQUFGXFxcbndOQXdBV0lRQUFpZ0VDQUNjekFBQW1Cd0lBSWZ3QUFMZ0tBZ0F3SFFBQWl3QUJBUDdXQVFDbkV3RUFQUHdBQU80S0FnRDMrd0FBWGdvRFxcXG5BRzdXQVFBWkV3RUFOdjRBQU1BT0FRQUExZ0VBcXhJQkFNUXlBQUE0QmdJQTd2d0FBR1VNQWdDby9nQUFSZzhCQU0vWEFRQjJGQUVBWGVcXFxuQUJBTlFVQVFDQzFnRUFMUk1CQUpna0FBQzVBZ01BM1A0QUFIb1BBUURzMWdFQWxSTUJBQjR2QUFCM0F3RUFuZFlCQUVnVEFRQlYvQUFBXFxcbklBc0NBSmZ1QVFCVUZRRUF2OVVCQUdvU0FRQi9JQUFBVGdFQkFMVHVBUUJxRlFFQU9Qd0FBT1lLQWdDbkhRQUEwUUFCQUFYWEFRQ3VFd1xcXG5FQUlOY0JBTWtUQVFCYklRQUExUUVEQVB6VUFRQ3pFUUVBUCtBQkFMWVVBUUNhMVFFQVJSSUJBUDM4QUFDR0RBSUFnUWNCQUlzUUFRQ2NcXFxuTHdBQTlRTUJBTFBWQVFCZUVnRUFwTmNCQUUwVUFRQ25Cd0VBc0JBQkFKRDdBQUQ1Q1FFQWtOUUJBRklSQVFCRDFRRUE4eEVCQUdvdkFBXFxcbkREQXdFQVpqTUFBQUlJQXdBVTFBRUExeEFCQURQV0FRRGVFZ0VBWHpNQUFQQUhBZ0NvTWdBQUNRWUJBTTh6QUFBRkNRSUEvUDRBQUtjUFxcXG5BZ0NqMWdFQVRoTUJBTHIvQUFCaUVBRUFqUWNCQUpZUUFRREUxZ0VBYlJNQkFFVGdBUUM3RkFFQXF0UUJBR1VSQVFDVjFRRUFRQklCQURcXFxuRXpBQUJNQndNQTk5Y0JBSjRVQVFENzFnRUFwQk1CQUVrZEFBQ2pBQUVBbnRRQkFGOFJBUUFSMUFFQTFCQUJBQWNoQUFCOEFRRUFYeUFBXFxcbkFFQUJBUUE0NEFFQXJ4UUJBRS83QUFDM0NRSUFtdTRCQUZjVkFRQTgxQUVBL3hBQkFLMHlBQUFPQmdFQWFOUUJBQ29SQVFDRU1RQUFqd1xcXG5RQkFHSXhBQUJ0QkFFQWFTOEFBTUlEQVFDQi9nQUFFdzhDQUFYdUFRRHBGQUVBcGY0QUFFTVBBUUM2TWdBQUpBWUNBUEF5QUFCMUJnRUFcXFxuMmRjQkFJQVVBUURBMUFFQWVCRUJBS1ArQUFCQkR3RUFIVElBQUE0RkJ3REgxZ0VBY0JNQkFNOGZBQUQ5QUFNQXZ6TUFBT0FJQWdBWTF3XFxcbkVBd1JNQkFKQUhBUUNaRUFFQUFkVUJBTGdSQVFBUTFnRUF1eElCQU9BeUFBQmxCZ0VBSWYwQUFNNE1BZ0RiMWdFQWhCTUJBRDN4QVFEc1xcXG5GUUVBT0RBQUFERUVBUUNuTXdBQW9nZ0RBQ1g5QUFEV0RBSUE0ZGNCQUlnVUFRQzkvd0FBWlJBQkFJenVBUUJKRlFFQUNPNEJBT3dVQVFcXFxuRERNd0FBNmdnQ0FCclZBUURORVFFQXZ6SUFBQzRHQWdDZUpBQUF5d0lEQU1nekFBRDNDQUlBRVBJQkFCTVdBUUI1SVFBQUZRSUJBQ0l5XFxcbkFBQWhCUU1BZ3RjQkFDc1VBUUNKQndFQWtoQUJBQVV6QUFDY0JnTUFPdjRBQU1RT0FRQXgxZ0VBM0JJQkFKa3hBQUNoQkFFQTFQOEFBSFxcXG5VUUFRQ2NJQUFBYWdFQkFFY3lBQUNLQlFFQWlQd0FBSklMQWdDNS93QUFZUkFCQUd6VUFRQXVFUUVBTnRZQkFPRVNBUUJmTVFBQWFnUUJcXFxuQUl2N0FBRDBDUUVBdFFBQUFBb0FBUUFaMUFFQTNCQUJBTlgrQUFCekR3RUF5dFlCQUhNVEFRQ2VNd0FBaWdnQ0FFSFdBUURzRWdFQXI5XFxcbllCQUZnVEFRQ0lNZ0FBNlFVQkFGUWhBQURBQVFNQWpmNEFBQ3NQQVFBTDFBRUF6aEFCQUFmV0FRQ3lFZ0VBSnY4QUFNNFBBUUJZMXdFQVxcXG5BUlFCQUU3OEFBQVNDd0lBWkRNQUFQd0hBd0QxMUFFQXJCRUJBTVl2QUFBZkJBRUEzTlVCQUljU0FRQmUvQUFBTWdzREFEYi9BQURlRHdcXFxuRUF4U1FBQUNJREFRQ0gxUUVBTWhJQkFKRWdBQUJmQVFFQVVOY0JBUGtUQVFDd0pBQUFBUU1EQUNMeEFRQytGUU1BT1RNQUFHNEhBd0JVXFxcbjRBRUF5eFFCQUJIVkFRREZFUUVBTlRNQUFGOEhBd0NxL3dBQVVoQUJBRUR5QVFCQUZnTUFFdFlCQUwwU0FRQlQxUUVBL2hFQkFLclZBUVxcXG5CVkVnRUFxZ0FBQUFNQUFRQmkvd0FBQ2hBQkFONGtBQUE3QXdFQTR0Y0JBSWtVQVFCcS9nQUE5QTRCQUc4dkFBRElBd0VBV2YwQUFDTU5cXFxuQXdEeEFRQUFPQUFDQURNZEFBQ09BQUVBandjQkFKZ1FBUUEyMVFFQTZCRUJBQW92QUFCakF3RUFSRElBQUljRkFRQnVKQUFBUHdJQ0FJXFxcblg4QUFDTUN3SUE4eklBQUhnR0FRRDArd0VBWVJZQkFFUFdBUUR1RWdFQW9Qc0FBQWtLQVFDeEhRQUEyd0FCQUZmVUFRQVpFUUVBMTljQlxcXG5BSDRVQVFCeU1RQUFmUVFCQUxJekFBREdDQUlBcWdjQkFMTVFBUUFXTHdBQWJ3TUJBREhYQVFEYUV3RUFKZGNCQU00VEFRRDArd0FBVlFcXFxub0RBUFV6QUFCbENRTUFuVE1BQUlnSUFnREUvQUFBRHd3Q0FCejhBQUN1Q2dJQUVmOEFBTGtQQVFCdDF3RUFGaFFCQUJ6V0FRREhFZ0VBXFxcbk05Y0JBTndUQVFESDFRRUFjaElCQUlIL0FBQXBFQUVBSWlFQUFKWUJBZ0N1MUFFQWFCRUJBQjN5QVFBaEZnRUFmOVFCQUVFUkFRQlgxd1xcXG5FQUFCUUJBTHdBQUFBUEFBTUFJZFlCQU13U0FRRGsvd0FBZ1JBQkFNbitBQUJuRHdFQWhPNEJBRUlWQVFDWS9RQUEyZzBEQUdFeEFBQnNcXFxuQkFFQVB5RUFBS3dCQVFDZUhRQUF5QUFCQUJuV0FRREVFZ0VBMXRRQkFJMFJBUURBMVFFQWF4SUJBSHN2QUFEVUF3RUFDKzRCQU84VUFRXFxcbkJHMXdFQTd4TUJBT3Y4QUFCZkRBSUE4LzRBQUpFUEFRRDAvQUFBY3d3REFIcitBQUFHRHdJQVhDRUFBTmdCQXdEOTFBRUF0QkVCQUtmN1xcXG5BQUFTQ2dFQVBQMEFBQVFOQWdCcTFBRUFMQkVCQUdNaEFBRHBBUUlBWk80QkFDa1ZBUUNTMWdFQVBSTUJBRWpXQVFEekVnRUFndFFCQUVcXFxuUVJBUUIyMVFFQUlSSUJBQmZYQVFEQUV3RUFNUDRBQUxrT0FnQXk4Z0VBTmhZQkFIZjhBQUJ3Q3dJQWFOWUJBQk1UQVFCR0lRQUFyd0VCXFxcbkFLZ0FBQUFCQUFJQWsvc0FBUHdKQVFEdjFRRUFtaElCQVAzN0FBQnVDZ0VBcXdjQkFMUVFBUUJqNEFFQTJoUUJBSERVQVFBeUVRRUFWalxcXG5NQUFOa0hCZ0RGMUFFQWZCRUJBT2Y3QUFBMENnRUE2aVFBQUVjREFRQVoxUUVBekJFQkFGVFdBUUQvRWdFQWJTOEFBTVlEQVFBWTFRRUFcXFxueXhFQkFEbldBUURrRWdFQVV2MEFBQTROQXdDZjF3RUFTQlFCQUhYWEFRQWVGQUVBY1RNQUFDTUlBd0JJNEFFQXZ4UUJBTTdYQVFCMUZBXFxcbkVBWmY4QUFBMFFBUUNnTXdBQWp3Z0RBRDR4QUFCSkJBRUFDdFlCQUxVU0FRQ1IxUUVBUEJJQkFFM2dBUURFRkFFQXhkVUJBSEFTQVFCNlxcXG5NZ0FBMGdVQ0FHZ2RBQURCQUFFQWNmOEFBQmtRQVFBdTFBRUE4UkFCQUhyWEFRQWpGQUVBUlA0QUFNNE9BUUF5OFFFQTRSVUJBUGJWQVFcXFxuQ2hFZ0VBZk5jQkFDVVVBUUJ2MWdFQUdoTUJBUFhYQVFDY0ZBRUExL3dBQURVTUFnQ0lNUUFBa3dRQkFLRFhBUUJKRkFFQTVmc0FBRElLXFxcbkFRQ04vd0FBTlJBQkFLRUhBUUNxRUFFQVR0UUJBQkVSQVFBbzFRRUEyaEVCQU1RdkFBQWRCQUVBSkNBQUFDRUJBUUQ4RUFBQWh3QUJBTFxcXG5EOUFBQWlEZ01BdFB3QUFPOExBZ0FNTXdBQXRRWUVBR3N4QUFCMkJBRUFFZkVCQUlzVkF3QzRMd0FBRVFRQkFJVXpBQUJSQ0FJQXFSMEFcXFxuQU5NQUFRQTYxd0VBNHhNQkFKTXlBQUQwQlFFQXo5UUJBSVlSQVFEV01nQUFXd1lCQUlzekFBQmdDQUlBU2pFQUFGVUVBUUJOOFFFQS94XFxcblVDQUpzZUFBRHNBQUlBU3RZQkFQVVNBUURhMXdFQWdSUUJBQmY3QUFDckNRSUFZZGNCQUFvVUFRQ1hJQUFBWlFFQkFNQWZBQUR5QUFJQVxcXG40ek1BQURVSkFnQ3oxZ0VBWEJNQkFMVFZBUUJmRWdFQUYvMEFBTG9NQWdBcS9BQUF5Z29DQUdyWEFRQVRGQUVBaXRZQkFEVVRBUUE1NEFcXFxuRUFzQlFCQU9uN0FBQTJDZ0VBQi9FQkFJQVZBZ0NrQndFQXJSQUJBRzBoQUFEK0FRRUFraUFBQUdBQkFRQTkvd0FBNVE4QkFMTUhBUUM3XFxcbkVBRUFVUzhBQUtvREFRQlovQUFBS0FzQ0FDblZBUURiRVFFQU56SUFBR0FGQXdBVk1nQUE3Z1FFQUdVa0FBQXhBZ0VBTmRjQkFONFRBUVxcXG5DNUJ3RUF3UkFCQU5QK0FBQnhEd0VBUENBQUFESUJBZ0NiTHdBQTlBTUJBR1l2QUFDL0F3RUFkZjBBQUhjTkF3QTAxZ0VBM3hJQkFETU9cXFxuQUFCNEFBSUF1aDBBQU9RQUFRQmEvUUFBSmcwREFKUWtBQUN0QWdNQVhURUFBR2dFQVFBSjFRRUF2eEVCQUpmWEFRQkFGQUVBVHpNQUFNXFxcbklIQXdENzF3RUFvaFFCQUdNa0FBQXZBZ0VBQXY4QUFLb1BBUUJoK3dBQXlna0JBT3d6QUFCS0NRTUE5OVVCQUtJU0FRQ3VNd0FBdHdnRlxcXG5BSW44QUFDVUN3SUFPTmNCQU9FVEFRQXc0QUVBcHhRQkFDcnlBUUF1RmdFQVN5OEFBS1FEQVFBQ013QUFqd1lGQUUwZEFBQ25BQUVBMTlcXFxuUUJBSTRSQVFCTi9BQUFFQXNDQU9YVUFRQ2NFUUVBUXRVQkFQSVJBUUEyTXdBQVlnY0ZBTFl2QUFBUEJBRUFvUzhBQVBvREFRQWExd0VBXFxcbnd4TUJBS1Q4QUFEUEN3SUFHTllCQU1NU0FRREMvQUFBQ3d3Q0FLd2RBQURXQUFFQXVQd0FBUGNMQWdCOCt3QUE1UWtCQUg4eEFBQ0tCQVxcXG5FQTROY0JBSWNVQVFERy93QUFheEFCQUZBeEFBQmJCQUVBZGpJQUFNb0ZBZ0NOTWdBQTdnVUJBTHd5QUFBb0JnSUFNd0VBQUJvQUFnQkZcXFxuOGdFQVR4WURBRDRoQUFDckFRRUFadnNBQU04SkFRQ0pMd0FBNGdNQkFDN3hBUURkRlFJQThkUUJBS2dSQVFDUi9BQUFwQXNDQUZQL0FBXFxcbkQ3RHdFQUJqTUFBSjhHQXdCekpBQUFTUUlDQUs0ZEFBRFlBQUVBclBzQUFCY0tBUUMwTXdBQXlnZ0NBQlF5QUFEcUJBUUF3aklBQURRR1xcXG5BZ0RLSkFBQUp3TUJBRFBWQVFEbEVRRUErRE1BQUc0SkF3QkUvd0FBN0E4QkFQZlVBUUN1RVFFQWpBY0JBSlVRQVFESy93QUFiUkFCQUJcXFxuZitBQUMwRGdFQTRmc0FBQzRLQVFBeS9BQUEyZ29DQUNYV0FRRFFFZ0VBUUFFQUFCNEFBZ0NyL2dBQVNROEJBTlBXQVFCOEV3RUFxTmNCXFxcbkFGRVVBUUJkK3dBQXhna0JBQ0F5QUFBYkJRTUFwU1FBQU9BQ0F3Q3oxQUVBYlJFQkFLMEhBUUMyRUFFQW1UTUFBSUFJQWdBMkx3QUFqd1xcXG5NQkFIVDhBQUJxQ3dJQXBkVUJBRkFTQVFEREx3QUFIQVFCQUd6Z0FRRGpGQUVBMlRJQUFGNEdBUUJFMVFFQTlCRUJBQ0V5QUFBZUJRTUFcXFxuRXRVQkFNWVJBUURPL2dBQWJBOEJBUGY4QUFCNkRBSUFndnNBQU9zSkFRQzQxZ0VBWVJNQkFKUXhBQUNjQkFFQTVmOEFBSUlRQVFEb01nXFxcbkFBYlFZQkFLOGtBQUQrQWdNQThmc0JBRjRXQVFEOCt3QUFiUW9CQUxNQUFBQUhBQUVBeGlRQUFDTURBUUJKMXdFQThoTUJBSnI5QUFEZ1xcXG5EUU1BdGRRQkFHOFJBUURlL2dBQWZBOEJBT2ZXQVFDUUV3RUFTQzhBQUtFREFRRGoxQUVBbWhFQkFLYnVBUUJkRlFFQWx5OEFBUEFEQVFcXFxuQ29KQUFBNlFJREFHTFZBUUFORWdFQUFpRUFBSE1CQVFBYjFnRUF4aElCQUhZeEFBQ0JCQUVBWUIwQUFMa0FBUUNZMWdFQVF4TUJBTm4rXFxcbkFBQjNEd0VBSDlZQkFNb1NBUUJxN2dFQUxSVUJBQW45QUFDZURBSUFZZFVCQUF3U0FRRGgxQUVBbUJFQkFQVFhBUUNiRkFFQWFDOEFBTVxcXG5FREFRQ3o3Z0VBYVJVQkFHTGdBUURaRkFFQXZpOEFBQmNFQVFCSElBQUFOZ0VDQUNQL0FBRExEd0VBZC80QUFBQVBBZ0JiMXdFQUJCUUJcXFxuQUxuVUFRQnpFUUVBdWpNQUFOWUlBZ0NDSkFBQWVnSUVBTEQvQUFCWUVBRUFaREVBQUc4RUFRRFJKQUFBTGdNQkFOc2tBQUE0QXdFQXZOXFxcblVCQUdjU0FRQ1dNd0FBZWdnQ0FKRFZBUUE3RWdFQTJ0VUJBSVVTQVFCVTFBRUFGeEVCQUNUdUFRQUdGUUVBTkNFQUFLQUJBUUNsMXdFQVxcXG5UaFFCQUZiZ0FRRE5GQUVBOXpJQUFId0dBUUJ5L2dBQStnNENBRXpnQVFEREZBRUE4UDRBQUk0UEFRQVBMd0FBYUFNQkFJZ3ZBQURoQXdcXFxuRUF6ZFFCQUlRUkFRQkwxUUVBOXhFQkFMclhBUUJqRkFFQXZ4OEFBUEFBQWdEci93QUFoeEFCQU83VkFRQ1pFZ0VBY3Y4QUFCb1FBUUFZXFxcbjhnRUFIQllCQURReUFBQlhCUU1BNzljQkFKWVVBUUFsMUFFQTZCQUJBTTdXQVFCM0V3RUFnKzRCQUVFVkFRQlA0QUVBeGhRQkFJUFVBUVxcXG5CRkVRRUFjLzhBQUJzUUFRQWMvd0FBeEE4QkFQSXpBQUJjQ1FNQWV5RUFBQmdDQXdBRUlBQUFGd0VCQUtUV0FRQlBFd0VBYnpJQUFMd0ZcXFxuQWdCWC9BQUFKQXNDQVBJeUFBQjNCZ0VBUnRZQkFQRVNBUUFTMUFFQTFSQUJBSm9rQUFDL0FnTUFKL0VCQU0wVkF3QUxNd0FBc2dZREFGXFxcbno4QUFBdUN3SUFSaThBQUo4REFRQUsxQUVBelJBQkFOZ2tBQUExQXdFQWZ0Y0JBQ2NVQVFBNi9RQUFBQTBDQUdRZEFBQzlBQUVBWGpFQVxcXG5BR2tFQVFDZE1RQUFwUVFCQUR2dUFRQVhGUUVBSnZzQUFMTUpBUUQrMUFFQXRSRUJBSUFrQUFCeUFnUUFiaUVBQVA4QkFRQTc0QUVBc2hcXFxuUUJBTGJXQVFCZkV3RUF2UUFBQUJJQUF3QkNIUUFBbkFBQkFLRWtBQURVQWdNQTN6TUFBQ3dKQXdDMS93QUFYUkFCQUVMZ0FRQzVGQUVBXFxcbm12d0FBTGtMQXdEcjFRRUFsaElCQUwvOEFBQUZEQUlBV1AwQUFDQU5Bd0JrSkFBQU1BSUJBRHorQUFER0RnRUFSaklBQUlrRkFRQU1LZ1xcXG5BQVNBTUVBTFQ5QUFBdURnTUFsdjBBQU5RTkF3QUgxQUVBeWhBQkFGY3lBQUNhQlFJQWVpQUFBRWtCQVFEVkF3QUFaZ0FCQUdzekFBQVJcXFxuQ0FNQTBESUFBRlVHQVFDdTdnRUFaQlVCQU5YVkFRQ0FFZ0VBcmU0QkFHTVZBUUFhTHdBQWN3TUJBT0QrQUFCK0R3RUFveThBQVB3REFRXFxcbkN5N2dFQWFCVUJBUFg3QUFCWUNnTUFaK0FCQU40VUFRQjBNUUFBZndRQkFPRDdBQUF0Q2dFQVVlNEJBQjhWQVFBLy93QUE1dzhCQUdVeFxcXG5BQUJ3QkFFQVBUSUFBSElGQXdBdDF3RUExaE1CQUp2WEFRQkVGQUVBdHRRQkFIQVJBUUJVL0FBQUhnc0NBTEF2QUFBSkJBRUFLRElBQURcXFxuTUZBd0E2SFFBQWxRQUJBQk15QUFEbUJBUUFaZUFCQU53VUFRRC8xQUVBdGhFQkFEVFhBUURkRXdFQWk5Y0JBRFFVQVFDZHBnQUFod2tCXFxcbkFKWXZBQUR2QXdFQU9md0FBT2dLQWdCTThRRUEvUlVDQU52K0FBQjVEd0VBbFNRQUFMQUNBd0FrOFFFQXhCVURBTnpYQVFDREZBRUFVK1xcXG5BQkFNb1VBUUNhTHdBQTh3TUJBR0g5QUFBN0RRTUFBdjBBQUpBTUFnQ3I3Z0VBWVJVQkFKOEhBUUNvRUFFQWh1NEJBRVFWQVFDYi9RQUFcXFxuNHcwREFBL1ZBUURERVFFQWp2d0FBSjRMQWdBVDFRRUF4eEVCQUUvVkFRRDdFUUVBY3lFQUFBY0NBZ0JhTHdBQXN3TUJBSXpYQVFBMUZBXFxcbkVBWjljQkFCQVVBUUNyL1FBQUV3NERBQUV2QUFCYUF3RUFQL3dBQVBRS0FnREdNd0FBOEFnRUFNRFdBUUJwRXdFQW1Qc0FBQUVLQVFCUlxcXG5NUUFBWEFRQkFBbnVBUUR0RkFFQWl2MEFBTFlOQXdCTi93QUE5UThCQUNuWEFRRFNFd0VBdFA0QUFGSVBBUUNrK3dBQURRb0NBTG5XQVFcXFxuQmlFd0VBME5ZQkFIa1RBUUNOTVFBQW1BUUJBQXJ4QVFDR0ZRSUFGeUFBQUI4QkFnQWg4UUVBdXhVREFCL1VBUURpRUFFQUZkUUJBTmdRXFxcbkFRQ2JNUUFBb3dRQkFOM1dBUUNHRXdFQWZ6TUFBRU1JQkFCZ01nQUFyQVVCQVBiN0FRQmpGZ0VBZS9zQUFPUUpBUUJTMXdFQSt4TUJBRlxcXG5BdkFBQ3BBd0VBdi80QUFGMFBBUUJZMWdFQUF4TUJBUHI5QUFDUERoSUFiak1BQUJvSUF3QlIvd0FBK1E4QkFCYjhBQUNpQ2dJQVhSMEFcXFxuQUxZQUFRQzRKQUFBRlFNQkFGMnJBQUNQQ1FFQUc5UUJBTjRRQVFCbyt3QUEwUWtCQUFQeEFRQjRGUUlBVXk4QUFLd0RBUUJTTXdBQXpBXFxcbmNDQVBuVkFRQ2tFZ0VBbE5RQkFGWVJBUUFzMVFFQTNoRUJBT1lrQUFCREF3RUFyeThBQUFnRUFRREJNZ0FBTWdZQ0FMTUNBQUJCQUFFQVxcXG53ZjRBQUY4UEFRQkg4UUVBOWhVQkFJUURBQUJhQUFJQXVpUUFBQmNEQVFDSC93QUFMeEFCQUduV0FRQVVFd0VBTmY4QUFOMFBBUUQ3L2dcXFxuQUFwUThDQVByWEFRQ2hGQUVBVUIwQUFLa0FBUUR5L2dBQWtBOEJBRVV5QUFDSUJRRUFpdGNCQURNVUFRQjErd0FBM2drQkFKSHVBUUJPXFxcbkZRRUE2VE1BQUVFSkF3QTVJUUFBcFFFQkFGZ3lBQUNjQlFJQWh6SUFBT2dGQVFCOU1RQUFpQVFCQUs0a0FBRDdBZ01BbVA4QUFFQVFBUVxcXG5DVzFRRUFRUklCQUxEV0FRQlpFd0VBYWVBQkFPQVVBUUFzOGdFQU1CWUJBRUwvQUFEcUR3RUF1LzhBQUdNUUFRQWQvd0FBeFE4QkFBUFZcXFxuQVFDNkVRRUE0ZFlCQUlvVEFRREgvQUFBRlF3Q0FHRC9BQUFJRUFFQVhlNEJBQ1VWQVFBVjhRRUFseFVEQU1uVUFRQ0FFUUVBWjlVQkFCXFxcbklTQVFCKzFnRUFLUk1CQU8wekFBQk5DUU1BYU9BQkFOOFVBUUNtL1FBQUJBNERBTW96QUFEN0NBSUErTmNCQUo4VUFRRHZNd0FBVXdrRFxcXG5BRkQ5QUFBSURRTUFqaVFBQUo0Q0FnRFUvQUFBTHd3Q0FKaitBQUEyRHdFQXB6SUFBQWdHQVFDcC93QUFVUkFCQUhJaEFBQUVBZ01BV2hcXFxuMEFBTE1BQVFBbi93QUF6dzhCQUswZEFBRFhBQUVBWnRjQkFBOFVBUURmSkFBQVBBTUJBSzcrQUFCTUR3RUFOZjRBQUw4T0FRQ2oxUUVBXFxcblRoSUJBRkRXQVFEN0VnRUFLdFlCQU5VU0FRRGQxQUVBbEJFQkFGdi9BQUFERUFFQVpOUUJBQ1lSQVFBMC9BQUEzZ29DQUx6V0FRQmxFd1xcXG5FQUhOY0JBTVVUQVFBb0lRQUFtUUVCQUhUN0FBRGRDUUVBN2Z3QUFHTU1BZ0NjcGdBQWhna0JBSFFxQUFCTUF3TUErUDRBQUp3UEF3QTZcXFxuMWdFQTVSSUJBTFg4QUFEeEN3SUFOZFFCQVBnUUFRQnA3Z0VBTEJVQkFEWWdBQUF0QVFJQXZSOEFBTzRBQWdENzFRRUFwaElCQUxuVkFRXFxcbkJrRWdFQVYvMEFBQjBOQXdDTE1RQUFsZ1FCQVBYOUFBQjhEZ1FBZlA0QUFBb1BBZ0NiL0FBQXZBc0RBQlQ5QUFDMERBSUFHOVVCQU00UlxcXG5BUUJuN2dFQUtoVUJBSW96QUFCZUNBSUFRUDhBQU9nUEFRQlErd0FBdVFrQkFNZlVBUUIrRVFFQW5BY0JBS1VRQVFBWDdnRUEreFFCQUpcXFxuRHhBUUFNRmdJQThOVUJBSnNTQVFDek1nQUFGZ1lDQU5YWEFRQjhGQUVBWlA0QUFPOE9BUUNPK3dBQTl3a0JBQWY4QUFDRUNnSUFXUHNBXFxcbkFNRUpBUUJjMXdFQUJSUUJBR2doQUFEMUFRSUFSZGNCQU80VEFRQk83Z0VBSFJVQkFNd3ZBQUFsQkFFQWdkY0JBQ29VQVFBOE1RQUFSd1xcXG5RQkFONGZBQUFEQVFNQXZTOEFBQllFQVFEVTFRRUFmeElCQUFEVkFRQzNFUUVBZ1B3QUFJSUxBZ0NqTXdBQWx3Z0RBQUxWQVFDNUVRRUFcXFxuMFRJQUFGWUdBUUNYL1FBQTF3MERBSW5VQVFCTEVRRUExdjhBQUhjUUFRREQvQUFBRFF3Q0FKTWtBQUNxQWdNQXh0WUJBRzhUQVFDTklBXFxcbkFBWEFFQkFBYjdBQUNoQ1FJQW5ERUFBS1FFQVFDaEhRQUF5d0FCQUJ2L0FBREREd0VBNGY0QUFIOFBBUUJsL0FBQVJ3c0RBQlQ4QUFDZVxcXG5DZ0lBb3Y0QUFFQVBBUUNSK3dBQStna0JBRkF6QUFERkJ3TUF5TllCQUhFVEFRQjMxZ0VBSWhNQkFJTUhBUUNORUFFQW94MEFBTTBBQVFcXFxuQlJIUUFBcWdBQkFHRXlBQUN0QlFFQWVQd0FBSElMQWdCak13QUErUWNEQUR3dkFBQ1ZBd0VBSnk4QUFJQURBUUNqTWdBQUJBWUJBUFg3XFxcbkFRQmlGZ0VBdEFJQUFFSUFBUUNHTWdBQTV3VUJBQmN2QUFCd0F3RUF6TlVCQUhjU0FRQXc4Z0VBTkJZQkFBUDdBQUNaQ1FNQXppUUFBQ1xcXG5zREFRQXdMd0FBaVFNQkFHRDlBQUE0RFFNQUkvRUJBTUVWQXdBeTFRRUE1QkVCQUI3eUFRQWlGZ0VBVXpNQUFNNEhCQUNiSFFBQXhRQUJcXFxuQUFUeEFRQjZGUUlBRy9JQkFCOFdBUUJTL2dBQTNnNEJBRHY5QUFBQ0RRSUFZUzhBQUxvREFRQUEvQUFBY1FvREFISHVBUUF6RlFFQThBXFxcbk1BQUdnQUFRRGsxd0VBaXhRQkFGMzhBQUF3Q3dJQWNOWUJBQnNUQVFBei9nQUF2UTRCQUgzVkFRQW9FZ0VBYS80QUFQVU9BUUF6TWdBQVxcXG5WQVVEQUNFdkFBQjZBd0VBRmZ3QUFLQUtBZ0JmMVFFQUNoSUJBR1Q5QUFCRURRTUFtdFFCQUZ3UkFRQjcvZ0FBQ0E4Q0FHTFhBUUFMRkFcXFxuRUE0TllCQUlrVEFRQzEvZ0FBVXc4QkFHdlVBUUF0RVFFQXRoMEFBT0FBQVFCQk1RQUFUQVFCQUp6K0FBQTZEd0VBaE5RQkFFWVJBUUNkXFxcbk1nQUEvZ1VCQUREVkFRRGlFUUVBTXYwQUFQQU1BZ0JmL0FBQU5Rc0RBSHZ1QVFBN0ZRRUFEQThBQUlBQUFRQnYxUUVBR2hJQkFLcldBUVxcXG5CVEV3RUEzRE1BQUNVSkFnRGpKQUFBUUFNQkFDN3lBUUF5RmdFQXQ5UUJBSEVSQVFEUjFRRUFmQklCQUtiWEFRQlBGQUVBVGk4QUFLY0RcXFxuQVFDdTFnRUFWeE1CQVBJREFBQnFBQUVBZ0RJQUFPRUZBUUErSFFBQW1BQUJBTy83QUFCR0NnTUFBdkVCQUhZVkFnQlUvZ0FBM3c0QkFHXFxcbk15QUFDdkJRRUFtLzhBQUVNUUFRQ0UxUUVBTHhJQkFGRXpBQURJQndRQVZqRUFBR0VFQVFEeSt3QUFUd29EQUFMN0FBQ1hDUUlBZXpFQVxcXG5BSVlFQVFCTU1RQUFWd1FCQU1ZQkFBQXBBQU1BUDljQkFPZ1RBUUJON2dFQUhCVUJBRk1kQUFDc0FBRUEwVE1BQUFrSkFnQ0sxUUVBTlJcXFxuSUJBSVA5QUFDaERRTUFlQ0VBQUJNQ0FnQlIxd0VBK2hNQkFIZjlBQUI5RFFNQWVkUUJBRHNSQVFCZElRQUEyd0VEQUlmOUFBQ3REUU1BXFxcbmlqRUFBSlVFQVFBLzFBRUFBaEVCQU0wdkFBQW1CQUVBOE5RQkFLY1JBUUJaSFFBQXNnQUJBRi9XQVFBS0V3RUFrek1BQUhJSUF3Q1M3Z1xcXG5FQVR4VUJBSENuQUFDSUNRRUFDLzBBQUtJTUFnQ0tJQUFBV1FFQkFJRCtBQUFTRHdFQTg5Y0JBSm9VQVFBTi9RQUFwZ3dDQUVyVkFRRDJcXFxuRVFFQW1kWUJBRVFUQVFDUy9nQUFNQThCQUV6K0FBRFhEZ0lBVTlZQkFQNFNBUUJMNEFFQXdoUUJBTGpWQVFCakVnRUFXdFFCQUJ3UkFRXFxcbkJiTXdBQTZBY0NBSW5YQVFBeUZBRUE4cWNBQUlrSkFRQ2o3Z0VBV3hVQkFIei9BQUFrRUFFQWRpRUFBQXdDQXdDbS93QUFUaEFCQUZmL1xcXG5BQUQvRHdFQWVlNEJBRGtWQVFDdTFRRUFXUklCQUcvVUFRQXhFUUVBMmdJQUFFc0FBZ0JOTHdBQXBnTUJBTVg5QUFCaERnTUFoRE1BQUVcXFxuOElBZ0RBSkFBQUhRTUJBSHpWQVFBbkVnRUFzTmNCQUZrVUFRREwxUUVBZGhJQkFJUFhBUUFzRkFFQTZOUUJBSjhSQVFDTzFRRUFPUklCXFxcbkFBMy9BQUMxRHdFQVJOWUJBTzhTQVFERUpBQUFJUU1CQUZJdkFBQ3JBd0VBanRZQkFEa1RBUUFOMVFFQXdSRUJBR3Y3QUFEVUNRRUF5eVxcXG44QUFDUUVBUUF5L3dBQTJnOEJBS3YvQUFCVEVBRUFiREVBQUhjRUFRQndJQUFBUVFFQkFJMzlBQUMvRFFNQWRQNEFBUHdPQWdBeElRQUFcXFxubmdFQkFHVC9BQUFNRUFFQW16TUFBSVFJQWdCcTRBRUE0UlFCQUNUeUFRQW9GZ0VBQmRRQkFNZ1FBUUJKL3dBQThROEJBRGYvQUFEZkR3XFxcbkVBZFNBQUFFUUJBUUMrL2dBQVhBOEJBT2orQUFDR0R3RUErS2NBQUl3SkFRQysxd0VBWnhRQkFKMGRBQURIQUFFQXRnY0JBTDRRQVFCNVxcXG5Md0FBMGdNQkFCTHlBUUFWRmdFQTMvd0FBRVVNQXdDaDFRRUFUQklCQU1uOEFBQVpEQUlBRWU0QkFQVVVBUUNmTXdBQWpBZ0RBSVA3QUFcXFxuRHNDUUVBTWZFQkFPQVZBUUFJL3dBQXNBOEJBSjcrQUFBOER3RUFPZjRBQU1NT0FRQ0dNd0FBVXdnQ0FHLzlBQUJsRFFNQWk5VUJBRFlTXFxcbkFRRHoxUUVBbmhJQkFGOGRBQUM0QUFFQU1Qd0FBTllLQWdENk13QUFkQWtEQUZ2dUFRQWtGUUVBZUNRQUFGY0NBd0JIMXdFQThCTUJBUFxcXG5qOEFBQjhEQUlBWjlZQkFCSVRBUUNXMXdFQVB4UUJBQkVnQUFBZUFRRUFSUEVCQVBNVkFRQTkvUUFBQmcwQ0FIQXlBQUMrQlFJQWJESUFcXFxuQUxnRkFRREkxUUVBY3hJQkFJeldBUUEzRXdFQSsvMEFBS0VPQ0FDMi9RQUFOQTREQUpVZ0FBQmpBUUVBR1RJQUFQNEVCQUNaSkFBQXZBXFxcbklEQUZMdUFRQWdGUUVBM0FJQUFFOEFBZ0FPSVFBQWd3RUJBTTdWQVFCNUVnRUFoOVlCQURJVEFRQUMxd0VBcXhNQkFKTWdBQUJoQVFFQVxcXG5GZFlCQU1BU0FRQU1Md0FBWlFNQkFJVXhBQUNRQkFFQUt0UUJBTzBRQVFCN0pBQUFZQUlEQU83K0FBQ01Ed0VBaFFjQkFJOFFBUUNhSUFcXFxuQUFhQUVCQUhMN0FBRGJDUUVBNGpNQUFETUpBZ0IxL0FBQWJBc0NBTklrQUFBdkF3RUFXK0FCQU5JVUFRQXNJUUFBbWdFQkFIOGtBQUJ1XFxcbkFnUUFYdFFCQUNBUkFRRGovZ0FBZ1E4QkFCa3ZBQUJ5QXdFQUhqSUFBQlVGQmdBRkx3QUFYZ01CQUJiN0FBQ3BDUUlBUWpFQUFFMEVBUVxcXG5DbEJ3RUFyaEFCQUFFZ0FBQVVBUUVBaFB3QUFJb0xBZ0JjMVFFQUJ4SUJBTVRYQVFCdEZBRUFvQzhBQVBrREFRQkQ4UUVBOGhVQkFJOHZcXFxuQUFEb0F3RUF5U1FBQUNZREFRREZNZ0FBT2dZQ0FJOGtBQUNnQWdJQWhQOEFBQ3dRQVFBa013QUFIQWNFQUxmOEFBRDFDd0lBUWVBQkFMXFxcbmdVQVFEWkpBQUFOZ01CQUJiOUFBQzREQUlBVVRJQUFJNEZBZ0NTL0FBQXBnc0NBSS8rQUFBdER3RUF4UDBBQUY0T0F3QWNMd0FBZFFNQlxcXG5BQ3Z5QVFBdkZnRUEyOVVCQUlZU0FRQkJMd0FBbWdNQkFCdjlBQURDREFJQUZ6SUFBUFlFQkFCUThnRUFXeFlCQUNFekFBQVJCd1VBUUNcXFxuOEFBSmtEQVFES0x3QUFJd1FCQUtZSEFRQ3ZFQUVBaWRVQkFEUVNBUUEyTVFBQVFRUUJBSDM4QUFCOEN3SUFoL3NBQVBBSkFRQU8vQUFBXFxcbmtnb0NBQWJ4QVFCK0ZRSUFaUzhBQUw0REFRQlcvZ0FBNFE0QkFKejdBQUFGQ2dFQTVQNEFBSUlQQVFBRzdnRUE2aFFCQU5MV0FRQjdFd1xcXG5FQVhkUUJBQjhSQVFCZzFnRUFDeE1CQUJieUFRQWFGZ0VBQU5RQkFNTVFBUUFUK3dBQW93a0NBRy84QUFCZ0N3SUFwL3dBQU5VTEFnQVRcXFxuL2dBQXNBNEJBRXYrQUFEVkRnSUFqZGNCQURZVUFRQXUvd0FBMWc4QkFHc3ZBQURFQXdFQTV2c0FBRE1LQVFEMjFBRUFyUkVCQUtnSEFRXFxcbkN4RUFFQWl6SUFBT3dGQVFCY0hRQUF0UUFCQUdva0FBQTNBZ0lBdWZ3QUFQa0xBZ0RXK3dBQUlnb0JBUGN6QUFCckNRTUFDUDBBQUp3TVxcXG5BZ0RITWdBQVBnWUNBSVRXQVFBdkV3RUFvZTRCQUZrVkFRQjQvUUFBZ0EwREFJRHVBUUErRlFFQUpmSUJBQ2tXQVFDMjdnRUFiQlVCQUFcXFxuenVBUUR3RkFFQVhLc0FBSTRKQVFCYyt3QUF4UWtCQUM0eUFBQkZCUU1BUy93QUFBd0xBZ0RISkFBQUpBTUJBR0F6QUFEeUJ3SUFOOWNCXFxcbkFPQVRBUURRTXdBQUJ3a0NBSkQ4QUFDaUN3SUFzTzRCQUdZVkFRQ2gvUUFBOVEwREFIVXpBQUF0Q0FJQUFDOEFBRmtEQVFDYSt3QUFBd1xcXG5vQkFDb3lBQUE1QlFNQXFUSUFBQW9HQVFCeTFBRUFOQkVCQU5UVUFRQ0xFUUVBSWZJQkFDVVdBUUI3L3dBQUl4QUJBRVlkQUFDZ0FBRUFcXFxuc2Y4QUFGa1FBUUEyMUFFQStSQUJBSmd5QUFENUJRRUFRL3dBQVB3S0FnQXgvQUFBMkFvQ0FIbldBUUFrRXdFQVd6RUFBR1lFQVFBUzF3XFxcbkVBdXhNQkFKbitBQUEzRHdFQTBmNEFBRzhQQVFDYU13QUFnZ2dDQUtiVUFRQmpFUUVBMWZzQUFDRUtBUUFLSVFBQWZ3RUJBSmI3QUFEL1xcXG5DUUVBamk4QUFPY0RBUUNwMXdFQVVoUUJBRjc3QUFESENRRUFrd2NCQUp3UUFRQldMd0FBcndNQkFIMGdBQUJNQVFFQUovSUJBQ3NXQVFcXFxuQ1UvQUFBcWdzQ0FOUFVBUUNLRVFFQVovMEFBRTBOQXdBSi93QUFzUThCQUtUVkFRQlBFZ0VBYmVBQkFPUVVBUUE1SFFBQWxBQUJBQkF5XFxcbkFBRGFCQVFBSWRjQkFNb1RBUUNSL3dBQU9SQUJBQzNXQVFEWUVnRUF3TmNCQUdrVUFRQVQ4Z0VBRmhZQ0FERHhBUURmRlFFQTFkUUJBSVxcXG53UkFRQ3lIUUFBM0FBQkFKZ3ZBQUR4QXdFQWF0VUJBQlVTQVFCM0pBQUFWQUlEQUNiVkFRRFlFUUVBZFNRQUFFNENBd0M0QndFQXdCQUJcXFxuQUVMeUFRQkdGZ01BaHdVQUFHNEFBZ0N6MXdFQVhCUUJBSFlnQUFCRkFRRUE4dFlCQUpzVEFRQzgvUUFBUmc0REFLWWtBQURqQWdNQTFEXFxcbk1BQUJBSkFnRFkxQUVBanhFQkFBd3lBQURNQkFNQWU5VUJBQ1lTQVFBVjdnRUErUlFCQUtRa0FBRGRBZ01BU1NFQUFMSUJBUUQ0K3dBQVxcXG5ZUW9EQUFRdkFBQmRBd0VBeXRVQkFIVVNBUUJYSFFBQXNBQUJBQ0wvQUFES0R3RUFpOVlCQURZVEFRQzExd0VBWGhRQkFNalVBUUIvRVFcXFxuRUFpQ0FBQUZjQkFRQkFNd0FBaVFjRkFBZlZBUUM5RVFFQVhUSUFBS1lGQWdEKzFRRUFxUklCQUh3eEFBQ0hCQUVBUis0QkFCa1ZBUUN3XFxcbk13QUF3Z2dDQUliWEFRQXZGQUVBZy93QUFJZ0xBZ0JFMUFFQUJ4RUJBUEV5QUFCMkJnRUFVakVBQUYwRUFRQVQvd0FBdXc4QkFEaitBQVxcXG5EQ0RnRUE3TlFCQUtNUkFRQisvUUFBa2cwREFHOHpBQUFkQ0FNQTBBTUFBRjhBQVFEeDF3RUFtQlFCQUZIeUFRQmNGZ0VBc3gwQUFOMEFcXFxuQVFBVTFRRUF5QkVCQVBzekFBQjNDUU1BOGZzQUFFd0tBd0NFL1FBQXBBMERBUFA3QVFCZ0ZnRUFpaklBQU9zRkFRQ3JKQUFBOGdJREFPXFxcbmZYQVFDT0ZBRUFYRE1BQU9vSEFnQ0Yvd0FBTFJBQkFMM1VBUUIxRVFFQXRmMEFBREVPQXdEeS9RQUFjQTRFQUlQK0FBQVhEd0lBM1I4QVxcXG5BQUFCQXdCNy9BQUFlQXNDQUpveEFBQ2lCQUVBZFRJQUFNZ0ZBZ0FnL1FBQXpBd0NBQUxVQVFERkVBRUFaLzhBQUE4UUFRRGQxd0VBaEJcXFxuUUJBQzc4QUFEU0NnSUFCUDhBQUt3UEFRQ3g3Z0VBWnhVQkFCY3pBQURsQmdVQVp6TUFBQVVJQXdCUzFnRUEvUklCQUg0ekFBQkJDQUlBXFxcbm5CMEFBTVlBQVFDZUJ3RUFweEFCQUY4dkFBQzRBd0VBcHY0QUFFUVBBUUJtSFFBQXZ3QUJBSkR1QVFCTkZRRUFJOWNCQU13VEFRQitKQVxcXG5BQWFnSUVBR3NoQUFENkFRTUFUTmNCQVBVVEFRQ04xZ0VBT0JNQkFCRXlBQURlQkFRQWY5Y0JBQ2dVQVFDRy93QUFMaEFCQUJndkFBQnhcXFxuQXdFQVJ6TUFBS0VIQlFCeS9BQUFaZ3NDQUpiVUFRQllFUUVBS2ZFQkFOTVZBd0FOSVFBQWdnRUJBQTdVQVFEUkVBRUE0TlFCQUpjUkFRXFxcbkJ4MVFFQUhCSUJBQW9nQUFBZEFRRUFQZFVCQU80UkFRQ1pJQUFBWndFQkFIVXFBQUJQQXdJQVFQNEFBTW9PQVFDOS9nQUFXdzhCQUV2VVxcXG5BUUFPRVFFQTB6SUFBRmdHQVFCbTFnRUFFUk1CQUtyN0FBQVZDZ0VBZmk4QUFOY0RBUUIzL3dBQUh4QUJBQ1gvQUFETkR3RUFrOVlCQURcXFxuNFRBUUMyL2dBQVZBOEJBSlhXQVFCQUV3RUExZjhBQUhZUUFRQ1IxQUVBVXhFQkFGa3pBQURrQndJQWY5VUJBQ29TQVFEWC93QUFlQkFCXFxcbkFETHVBUUFSRlFFQVp6SUFBTE1GQVFBdy9RQUE3QXdDQU8zN0FBQkFDZ01BbFAwQUFNNE5Bd0I0TWdBQXpnVUNBSmYvQUFBL0VBRUFodFxcXG5ZQkFERVRBUUFJOFFFQWdoVUNBQ3d2QUFDRkF3RUEwZndBQUNrTUFnQm9KQUFBTkFJQkFENytBQURJRGdFQVp2OEFBQTRRQVFBVS93QUFcXFxudkE4QkFFM1hBUUQyRXdFQTlUSUFBSG9HQVFETk13QUFBUWtDQUdra0FBQTFBZ0lBdERJQUFCZ0dBZ0JiMWdFQUJoTUJBQlB4QVFDUkZRXFxcbk1BVlNFQUFNTUJBd0NxSFFBQTFBQUJBTmIrQUFCMER3RUF2ZFVCQUdnU0FRQkY0QUVBdkJRQkFQUDlBQUIwRGdRQWpQc0FBUFVKQVFEVVxcXG4xd0VBZXhRQkFMZ0NBQUJHQUFFQVpkVUJBQkFTQVFEVkx3QUFMZ1FCQUsvVUFRQnBFUUVBOHZ3QUFHME1Bd0JDOFFFQThSVUJBSlV4QUFcXFxuQ2RCQUVBYk5VQkFCY1NBUUFPL1FBQXFBd0NBTGZ1QVFCdEZRRUFWUDhBQVB3UEFRQjRCZ0FBZGdBQ0FPNzdBQUJEQ2dNQVFOVUJBUEFSXFxcbkFRQytNd0FBM2dnQ0FLMytBQUJMRHdFQUROUUJBTThRQVFBait3QUFzQWtCQU9iK0FBQ0VEd0VBb2Y4QUFFa1FBUUIwMWdFQUh4TUJBRFxcXG5ZZEFBQ1JBQUVBQmlFQUFIa0JBd0F4TWdBQVRnVURBRm51QVFBakZRRUFPRE1BQUdvSEJBREQxd0VBYkJRQkFMVUhBUUM5RUFFQXNBSUFcXFxuQUQ0QUFRQTIvQUFBNGdvQ0FEVHlBUUE0RmdFQWM5UUJBRFVSQVFBL01RQUFTZ1FCQUh2OUFBQ0pEUU1BVkRFQUFGOEVBUUF4N2dFQUVCXFxcblVCQUs3L0FBQldFQUVBU3gwQUFLVUFBUUJMN2dFQUd4VUJBSExXQVFBZEV3RUFPekVBQUVZRUFRQ3Uxd0VBVnhRQkFEWDlBQUQyREFJQVxcXG5BRElBQUtnRUF3QVovd0FBd1E4QkFEalZBUURxRVFFQUJmRUJBSHdWQWdBNkx3QUFrd01CQUMzL0FBRFZEd0VBQSs0QkFPZ1VBUURGTHdcXFxuQUFIZ1FCQUJuOEFBQ29DZ0lBSi9zQUFMUUpBUUF4THdBQWlnTUJBSFlxQUFCUkF3TUFWZFlCQUFBVEFRQisxQUVBUUJFQkFHOGtBQUJCXFxcbkFnSUFFeThBQUd3REFRQXo4Z0VBTnhZQkFKL1ZBUUJLRWdFQWx5UUFBTFlDQXdDZkxnQUFWd01CQU4weUFBQmlCZ0VBS1AwQUFOd01BZ1xcXG5DNzF3RUFaQlFCQU5MWEFRQjVGQUVBNFRJQUFHWUdBUUNiMWdFQVJoTUJBS3dIQVFDMUVBRUFrL3dBQUtnTEFnQTBMd0FBalFNQkFKQWtcXFxuQUFDaUFnSUFidnNBQU5jSkFRQXQ4UUVBMnhVQ0FLSDdBQUFLQ2dFQWpkUUJBRThSQVFBbzhnRUFMQllCQUhFa0FBQkZBZ0lBV2ZzQUFNXFxcbklKQVFERC9nQUFZUThCQUpveUFBRDdCUUVBeVRNQUFQa0lBZ0M5SFFBQTV3QUJBSFRVQVFBMkVRRUFjOVlCQUI0VEFRRGgvd0FBZlJBQlxcXG5BTVBVQVFCN0VRRUFTZFlCQVBRU0FRRFMvZ0FBY0E4QkFBVXlBQUMzQkFNQU45VUJBT2tSQVFEWi9BQUFPUXdDQUVBeEFBQkxCQUVBbnpcXFxuQUFBRGdFQWdCWS93QUFBQkFCQUFmWEFRQ3dFd0VBMk5VQkFJTVNBUUJlTHdBQXR3TUJBSnd5QUFEOUJRRUFqKzRCQUV3VkFRQWE4Z0VBXFxcbkhoWUJBTUVmQUFEMEFBTUFHOWNCQU1RVEFRQXA3Z0VBQ0JVQkFGMHZBQUMyQXdFQVJqTUFBSjRIQXdETU13QUEvd2dDQUhiV0FRQWhFd1xcXG5FQXdTOEFBQm9FQVFBRTFnRUFyeElCQU8zVUFRQ2tFUUVBQ05VQkFMNFJBUUJkL1FBQUx3MERBS2ZWQVFCU0VnRUFNK0FCQUtvVUFRQzRcXFxuQUFBQUN3QUNBTnIvQUFCNUVBRUFjeklBQU1RRkFnQWgvd0FBeVE4QkFNOGtBQUFzQXdFQU1qTUFBRThIQmdBVDFBRUExaEFCQUp3a0FBXFxcbkRGQWdNQU1QOEFBTmdQQVFCbzdnRUFLeFVCQUxEVkFRQmJFZ0VBMS9zQUFDTUtBUUF6TVFBQVBnUUJBRFA5QUFEeURBSUFFdndBQUpvS1xcXG5BZ0JLTXdBQXJBY0dBSS9VQVFCUkVRRUFGLzhBQUw4UEFRQS9BUUFBSEFBQ0FNZ3lBQUJBQmdJQVkvNEFBTzRPQVFEMzFnRUFvQk1CQU9cXFxuWXpBQUE3Q1FJQWlkWUJBRFFUQVFEODF3RUFveFFCQUdjaEFBRHhBUVFBb2gwQUFNd0FBUUNvN2dFQVh4VUJBR2t4QUFCMEJBRUFyd0FBXFxcbkFBUUFBZ0MyL0FBQTh3c0NBT3Y3QUFBNkNnTUFZZjRBQU93T0FRRDExZ0VBbmhNQkFIY3lBQURNQlFJQUd6SUFBQVlGQkFBby9BQUF4Z1xcXG5vQ0FCelZBUURQRVFFQWt2OEFBRG9RQVFDVk13QUFlQWdDQVAzVkFRQ29FZ0VBSXRjQkFNc1RBUUNaTHdBQThnTUJBS1F6QUFDYUNBTUFcXFxuMWdNQUFHY0FBUURvSkFBQVJRTUJBQzhoQUFDY0FRRUFBZklCQUJBV0FnREEvZ0FBWGc4QkFIM1dBUUFvRXdFQW9UTUFBSklJQWdDbS9BXFxcbkFBMHdzQ0FJVXZBQURlQXdFQWVnTUFBRmdBQWdEUE1nQUFVZ1lEQUFEeUFRQU9GZ0lBNUFJQUFGY0FBUUJlMXdFQUJ4UUJBS1hVQVFCaVxcXG5FUUVBMFA0QUFHNFBBUUJwTWdBQXRRVUJBRjdWQVFBSkVnRUFPZFFCQVB3UUFRQzExUUVBWUJJQkFHVDhBQUJFQ3dNQXNQNEFBRTRQQVFcXFxuRFkrd0FBSkFvQkFFY3hBQUJTQkFFQTQvc0FBREFLQVFBVElRQUFpQUVCQUYvZ0FRRFdGQUVBYURNQUFBZ0lBd0JPL3dBQTlnOEJBS25XXFxcbkFRQlNFd0VBYmZzQUFOWUpBUUFyTXdBQU1BY0dBRXd6QUFDMUJ3VUFVdnNBQUxzSkFRQW0xQUVBNlJBQkFGK3JBQUNSQ1FFQVhmNEFBT1xcXG5nT0FRQy8xZ0VBYUJNQkFMWFdBUUJlRXdFQXB2c0FBQkVLQVFEK0h3QUFFUUVDQU5UN0FBQWdDZ0VBYmZ3QUFGd0xBZ0FnL3dBQXlBOEJcXFxuQUt2VkFRQldFZ0VBOHRVQkFKMFNBUUJjTWdBQXBBVUNBRUwrQUFETURnRUFnek1BQUUwSUFnQWkrd0FBcndrQkFPelZBUUNYRWdFQVB0XFxcbllCQU9rU0FRQjYvQUFBZGdzQ0FNdlVBUUNDRVFFQW4vMEFBTzhOQXdDZk1RQUFwd1FCQUNIVkFRRFRFUUVBZnlFQUFCNENBUUE0TWdBQVxcXG5Zd1VEQURqVUFRRDdFQUVBcFA4QUFFd1FBUUNxSkFBQTd3SURBTG9BQUFBT0FBRUFlZndBQUhRTEFnQmIvZ0FBNWc0QkFBTHVBUURuRkFcXFxuRUEreklBQUlBR0FRRFlBZ0FBUndBQ0FOb3lBQUJmQmdFQWpETUFBR0lJQWdBci9RQUE0Z3dDQUFiOUFBQ1lEQUlBc0RJQUFCRUdBUUErXFxcbjRBRUF0UlFCQUtzdkFBQUVCQUVBRENFQUFJRUJBUURXL0FBQU13d0NBR1FoQUFEckFRRUFnLzhBQUNzUUFRQzBKQUFBRFFNREFKUXZBQVxcXG5EdEF3RUE3VElBQUhJR0FRQXlNZ0FBVVFVREFGa3ZBQUN5QXdFQU0vOEFBTnNQQVFCaU1nQUFyZ1VCQUE0ekFBQzlCZ1FBaVNRQUFKUUNcXFxuQWdDMUx3QUFEZ1FCQU9yK0FBQ0lEd0VBeUM4QUFDRUVBUUJlSVFBQTNnRURBQVgvQUFDdER3RUFpaThBQU9NREFRQWQ3Z0VBQVJVQkFMXFxcbnYrQUFCWkR3RUFmOVlCQUNvVEFRQ1QvZ0FBTVE4QkFNLytBQUJ0RHdFQSsvc0FBR29LQXdEVzFnRUFmeE1CQUZJaEFBQzVBUVFBdHgwQVxcXG5BT0VBQVFCSzhRRUErUlVDQU56N0FBQW9DZ0VBbE5ZQkFEOFRBUUJZSVFBQXpBRURBRDNXQVFEb0VnRUFBU0VBQUhBQkF3QTNJUUFBb3dcXFxuRUJBTUQ5QUFCU0RnTUFvOWNCQUV3VUFRQlVIUUFBclFBQkFKY0hBUUNnRUFFQWFESUFBTFFGQVFDVkJ3RUFuaEFCQUxrekFBRFVDQUlBXFxcbkF2d0FBSGNLQXdBdk13QUFSUWNFQUQwaEFBQ3FBUUVBZ3pJQUFPUUZBUUFWTHdBQWJnTUJBRlBVQVFBV0VRRUFzQWNCQUxrUUFRQXpMd1xcXG5BQWpBTUJBSC8rQUFBUUR3SUE2OWNCQUpJVUFRREtNZ0FBUlFZREFOd09BQUI4QUFJQTdmOEFBSWtRQVFESzF3RUFjeFFCQUdVeUFBQ3hcXFxuQlFFQWlUTUFBRm9JQkFDdi9BQUE1UXNDQUduOUFBQlREUU1BcERJQUFBVUdBUUIxTHdBQXpnTUJBSHdzQUFCVUF3RUFyaThBQUFjRUFRXFxcbkFzL3dBQTFBOEJBUEg5QUFCdERnTUFFOVlCQUw0U0FRQnovQUFBYUFzQ0FKWFVBUUJYRVFFQTZ0UUJBS0VSQVFEenB3QUFpZ2tCQU9YWFxcXG5BUUNNRkFFQWhmNEFBQnNQQWdEeTFBRUFxUkVCQUY3V0FRQUpFd0VBeHRjQkFHOFVBUUFESVFBQWRBRUNBSU1nQUFCU0FRRUFNL3dBQU5cXFxud0tBZ0E5TXdBQWZnY0ZBTy84QUFCbkRBSUF1UDRBQUZZUEFRRDlNZ0FBZ2dZQkFFdlhBUUQwRXdFQWZDUUFBR01DQXdDZEJ3RUFwaEFCXFxcbkFGTGdBUURKRkFFQUVPNEJBUFFVQVFCOUx3QUExZ01CQUtUOUFBRCtEUU1BT2pJQUFHa0ZBd0JYTVFBQVlnUUJBTUF6QUFEaUNBSUE4d1xcXG5FQUFEd0FBZ0JSL0FBQUdBc0NBQlgrQUFDeURnRUFCRElBQUxRRUF3Q1hNd0FBZkFnQ0FPTFVBUUNaRVFFQXpqSUFBRkFHQWdCcCt3QUFcXFxuMGdrQkFQeldBUUNsRXdFQXBUSUFBQVlHQVFDYS9nQUFPQThCQUw0ZEFBRG9BQUVBa0NBQUFGNEJBUURaK3dBQUpRb0JBSGpYQVFBaEZBXFxcbkVBMTlZQkFJQVRBUUMvMXdFQWFCUUJBS2o5QUFBS0RnTUFrVE1BQUd3SUF3QmIvQUFBTEFzQ0FHY2tBQUF6QWdFQThOY0JBSmNVQVFDR1xcXG5NUUFBa1FRQkFCQXZBQUJwQXdFQTQ5VUJBSTRTQVFEbC9BQUFVd3dDQUZyWEFRQURGQUVBK2FjQUFJMEpBUUNBMVFFQUt4SUJBSnZVQVFcXFxuQmRFUUVBVVNFQUFMWUJBd0E3OGdFQVB4WUJBSzM4QUFEaEN3SUF0eklBQUI0R0FnRFAxUUVBZWhJQkFKRFhBUUE1RkFFQXpkWUJBSFlUXFxcbkFRRE0vd0FBYnhBQkFBY3pBQUNpQmdZQTM5Y0JBSVlVQVFBSEx3QUFZQU1CQU5Va0FBQXlBd0VBb05VQkFFc1NBUUNGK3dBQTdna0JBQ1xcXG5EVkFRRFNFUUVBMGRRQkFJZ1JBUUJoSkFBQUxRSUJBRkxVQVFBVkVRRUFjUHNBQU5rSkFRQ2YxZ0VBU2hNQkFKVFZBUUEvRWdFQWNUSUFcXFxuQU1BRkFnQlg0QUVBemhRQkFFQWRBQUNhQUFFQUorNEJBQWNWQVFBMC9RQUE5QXdDQUpzZ0FBQnBBUUVBZU5VQkFDTVNBUUJXL3dBQS9nXFxcbjhCQUNFaEFBQ1RBUU1BU0RFQUFGTUVBUUE5THdBQWxnTUJBQ1RYQVFETkV3RUFaaUVBQU80QkF3QWJMd0FBZEFNQkFPclZBUUNWRWdFQVxcXG5CZndBQUlBS0FnQnFNd0FBRGdnREFLTWtBQURhQWdNQUlETUFBQXdIQlFDQzdnRUFRQlVCQUVRekFBQ1lCd01BQ3lFQUFJQUJBUUJnMVFcXFxuRUFDeElCQUREdUFRQVBGUUVBNVNRQUFFSURBUURxL3dBQWhoQUJBRGJ5QVFBNkZnRUFOeUFBQUM4QkF3QmE0QUVBMFJRQkFBQWdBQUFUXFxcbkFRRUE1dGNCQUkwVUFRQnQvd0FBRlJBQkFEWXdBQUF3QkFFQTlOWUJBSjBUQVFBWTdnRUEvQlFCQUFEdUFRRGxGQUVBdFA4QUFGd1FBUVxcXG5DbzFnRUFVUk1CQUdJekFBRDJCd01Bd3Y0QUFHQVBBUUFtTHdBQWZ3TUJBUDR6QUFDQUNRTUFOQ0FBQUNvQkF3RE1BUUFBTmdBQ0FPRXpcXFxuQUFBeENRSUF3UHdBQUFjTUFnRGVNd0FBS1FrREFMclZBUUJsRWdFQWZkUUJBRDhSQVFCMi93QUFIaEFCQU9MOEFBQk5EQUlBZWlFQUFCXFxcbllDQWdBcC9BQUF5QW9DQU9iV0FRQ1BFd0VBT2ZFQkFPZ1ZBUUF2L3dBQTF3OEJBS0xYQVFCTEZBRUFBREFBQUM4RUFRQ3kxZ0VBV3hNQlxcXG5BS2tIQVFDeUVBRUF5LzRBQUdrUEFRQUpMd0FBWWdNQkFCYitBQUN6RGdFQUFDRUFBRzBCQXdCcE13QUFDd2dEQUNJekFBQVdCd01BcVBcXFxud0FBTmNMQWdEZ0FnQUFVd0FCQU1QV0FRQnNFd0VBUnlFQUFMQUJBUUI2MVFFQUpSSUJBUC9XQVFDb0V3RUExOVVCQUlJU0FRQVAvd0FBXFxcbnR3OEJBRmt5QUFDZUJRSUFSUjBBQUo4QUFRRDEvZ0FBa3c4REFKVHVBUUJSRlFFQWJOY0JBQlVVQVFCdk1RQUFlZ1FCQUJFdkFBQnFBd1xcXG5FQUgvOEFBTWNQQVFBU01nQUE0Z1FFQU1BeUFBQXdCZ0lBdVA4QUFHQVFBUUFML0FBQWpBb0NBQVQ4QUFCOUNnTUFVZFlCQVB3U0FRQVZcXFxuOGdFQUdSWUJBQ1V6QUFBZ0J3TUFVOWNCQVB3VEFRQy9Md0FBR0FRQkFEN1hBUURuRXdFQUJ2OEFBSzRQQVFCbit3QUEwQWtCQUVJeUFBXFxcbkNCQlFNQXdkWUJBR29UQVFBVS9nQUFzUTRCQUVQWEFRRHNFd0VBeXY0QUFHZ1BBUUJEL2dBQXpRNEJBTkhYQVFCNEZBRUFZOVVCQUE0U1xcXG5BUUFmOGdFQUl4WUJBQTM4QUFDUUNnSUFmQzhBQU5VREFRQ0Mvd0FBS2hBQkFGQXlBQUNMQlFNQTM5WUJBSWdUQVFEQjF3RUFhaFFCQVBcXFxudjhBQUNDREFJQVVmMEFBQXNOQXdCWk1RQUFaQVFCQUNMVUFRRGxFQUVBQlBzQUFKd0pBd0E2TVFBQVJRUUJBRGpXQVFEakVnRUF5ek1BXFxcbkFQMElBZ0NnQndFQXFSQUJBSkxVQVFCVUVRRUFZQ1FBQUN3Q0FRQVExUUVBeEJFQkFIUXpBQUFxQ0FNQU11QUJBS2tVQVFBcCt3QUF0Z1xcXG5rQkFBSHVBUURtRkFFQUk5WUJBTTRTQVFBZE13QUFBUWNEQU9qL0FBQ0VFQUVBTWRVQkFPTVJBUUFxN2dFQUNSVUJBTGt2QUFBU0JBRUFcXFxuNlNRQUFFWURBUUR3L0FBQWFRd0NBT2ZVQVFDZUVRRUEweThBQUN3RUFRQmkvUUFBUGcwREFON1hBUUNGRkFFQUh1NEJBQUlWQVFDeS9RXFxcbkFBS0E0REFMUXZBQUFOQkFFQXd2OEFBR2NRQVFBc01nQUFQd1VEQUl6K0FBQXBEd0lBNzlZQkFKZ1RBUUNmTWdBQUFBWUJBSllIQVFDZlxcXG5FQUVBT0IwQUFKTUFBUUFlTXdBQUJBY0VBRnpXQVFBSEV3RUFkdnNBQU44SkFRQWQ4UUVBcnhVREFKWDhBQUNzQ3dJQUxQRUJBTm9WQVFcXFxuQ0kxUUVBTXhJQkFPNHpBQUJRQ1FNQXFTUUFBT3dDQXdBSk1nQUF3d1FEQUFJeUFBQ3VCQU1BS3RjQkFOTVRBUUF3SWdBQUtRSURBQ0h1XFxcbkFRQUVGUUVBZHpFQUFJSUVBUUJlTXdBQTdnY0NBTzMrQUFDTER3RUFFak1BQU0wR0JBQ1NNd0FBYndnREFCN1VBUURoRUFFQXFOVUJBRlxcXG5NU0FRQnIvd0FBRXhBQkFQSCtBQUNQRHdFQW16SUFBUHdGQVFDZCt3QUFCZ29CQUpyV0FRQkZFd0VBd3pJQUFEWUdBZ0N5TWdBQUZBWUNcXFxuQUkvOEFBQ2dDd0lBYkNFQUFQMEJBUUNaN2dFQVZoVUJBTDc5QUFCTURnTUF0eThBQUJBRUFRQmcxd0VBQ1JRQkFNUXpBQURzQ0FJQWl2XFxcbndBQUpZTEFnRDUxd0VBb0JRQkFEelZBUUR0RVFFQXl6SUFBRWdHQXdBcC9RQUEzZ3dDQUNqeEFRRFFGUU1Bb0IwQUFNb0FBUUNmL2dBQVxcXG5QUThCQUhFaEFBQUNBZ0lBYTlVQkFCWVNBUUJPMWdFQStSSUJBRExVQVFEMUVBRUFGVE1BQU5rR0JnQmsrd0FBelFrQkFJUXlBQURsQlFcXFxuRUFWek1BQU44SEF3QTEvQUFBNEFvQ0FKSXZBQURyQXdFQWJ5RUFBQUFDQVFDck13QUFyZ2dEQURUVUFRRDNFQUVBd2RRQkFIa1JBUUM5XFxcbi9RQUFTUTREQUwzV0FRQm1Fd0VBTk80QkFCSVZBUURNMWdFQWRSTUJBRFh4QVFEa0ZRRUFuL3dBQU1VTEFnQlcxUUVBQVJJQkFNY3pBQVxcXG5EMENBTUFBUHNBQUpNSkFnQmwxd0VBRGhRQkFFalhBUUR4RXdFQWhDQUFBRk1CQVFCSzFBRUFEUkVCQUdJZEFBQzdBQUVBakRFQUFKY0VcXFxuQVFCSklBQUFPZ0VDQU9ReUFBQnBCZ0VBVXRVQkFQMFJBUUJHMVFFQTlSRUJBQ1RXQVFEUEVnRUF1ZTRCQUc4VkFRRGExQUVBa1JFQkFNXFxcbm9CQUFBeUFBSUFRRElBQUhzRkF3Q28rd0FBRXdvQkFOei9BQUI3RUFFQUpUSUFBQ29GQXdDWjF3RUFRaFFCQUNMV0FRRE5FZ0VBS1BzQVxcXG5BTFVKQVFBNk1BQUFNd1FCQUxML0FBQmFFQUVBa3RVQkFEMFNBUUI3SUFBQVNnRUJBQ3J4QVFEV0ZRTUFILzBBQU1vTUFnQVg4Z0VBR3hcXFxuWUJBSFhWQVFBZ0VnRUE4ZndBQUdzTUFnQnUvUUFBWWcwREFOMGtBQUE2QXdFQUJkWUJBTEFTQVFBdjdnRUFEaFVCQUNmOUFBRGFEQUlBXFxcbkx0VUJBT0FSQVFBbzFBRUE2eEFCQURidUFRQVVGUUVBNnpJQUFIQUdBUUI0MWdFQUl4TUJBQlQ3QUFDbENRSUFFUDhBQUxnUEFRQU8xZ1xcXG5FQXVSSUJBSzM3QUFBWUNnRUFjTlVCQUJzU0FRQTRMd0FBa1FNQkFFb3ZBQUNqQXdFQU92OEFBT0lQQVFCQjF3RUE2aE1CQUlqWEFRQXhcXFxuRkFFQURUSUFBTThFQXdCTDFnRUE5aElCQUxFQ0FBQS9BQUVBcGpNQUFKOElBd0IwMXdFQUhSUUJBQ3o5QUFEa0RBSUFDU0VBQUgwQkFnXFxcbkFBOFFFQWNoVUNBQVA4QUFCNkNnTUFZUjBBQUxvQUFRRHkxd0VBbVJRQkFLdjdBQUFXQ2dFQXAvOEFBRThRQVFCazFnRUFEeE1CQU4zOFxcXG5BQUJCREFJQXZ0UUJBSFlSQVFEYU13QUFJUWtDQUdjZEFBREFBQUVBWUM4QUFMa0RBUUNnSkFBQTBRSURBRmI3QUFDL0NRRUF2U1FBQUJcXFxub0RBUURmK3dBQUxBb0JBTGYvQUFCZkVBRUFmZGNCQUNZVUFRQ1dNZ0FBOXdVQkFMZlZBUUJpRWdFQU92SUJBRDRXQVFCdU1RQUFlUVFCXFxcbkFHMHpBQUFYQ0FNQWZ2OEFBQ1lRQVFBMDFRRUE1aEVCQUtZeUFBQUhCZ0VBZk80QkFEd1ZBUUF0N2dFQURCVUJBRnY5QUFBcERRTUFHalxcXG5NQUFQUUdCZ0QwTWdBQWVRWUJBTHN5QUFBbUJnSUFRek1BQUpRSEJBRFVMd0FBTFFRQkFOTDhBQUFyREFJQWlTRUFBQjhDQXdDdUJ3RUFcXFxudHhBQkFOUC9BQUIwRUFFQUxTOEFBSVlEQVFCVy9RQUFHZzBEQUFVaEFBQjJBUU1BLy9zQUFIQUtBUURxK3dBQU53b0RBQjNYQVFER0V3XFxcbkVBUXU0QkFCZ1ZBUUQ4L1FBQXFRNEVBTmd6QUFBYUNRUUFkUVlBQUhBQUFnRExBUUFBTkFBQ0FHdjlBQUJaRFFNQUtqTUFBQzBIQXdDblxcXG4xd0VBVUJRQkFGSDdBQUM2Q1FFQS9UTUFBSDBKQXdCWDdnRUFJaFVCQUtBQUFBQUFBQUVBS3k4QUFJUURBUUFFMUFFQXh4QUJBSUVnQUFcXFxuQlFBUUVBZVE4QUFJUUFBd0RzL2dBQWlnOEJBQy84QUFEVUNnSUFVaDBBQUtzQUFRQkIvd0FBNlE4QkFLM1ZBUUJZRWdFQU15RUFBSjhCXFxcbkFRQ3Ixd0VBVkJRQkFHUFVBUUFsRVFFQWNmNEFBUGdPQWdDdit3QUFHZ29CQURiWEFRRGZFd0VBWGgwQUFMY0FBUURqQWdBQVZnQUJBS1xcXG5UK0FBQkNEd0VBTmVBQkFLd1VBUUJVTXdBQTBnY0ZBQm9oQUFDTkFRRUFpLzRBQUNjUEFnQmY3Z0VBSmhVQkFFL1hBUUQ0RXdFQWVCMEFcXFxuQU1RQUFRQS84UUVBN2hVQkFNZi9BQUJzRUFFQVN6RUFBRllFQVFDbTFRRUFVUklCQUFyOUFBQ2dEQUlBZGlRQUFGRUNBd0EzNEFFQXJoXFxcblFCQUdNZEFBQzhBQUVBWXZzQUFNc0pBUUQyL1FBQWdBNEVBSHI5QUFDR0RRTUFvdjhBQUVvUUFRREVBUUFBSXdBREFQVFVBUUNyRVFFQVxcXG5pRE1BQUZjSUF3Q2kxUUVBVFJJQkFKQXZBQURwQXdFQWdUSUFBT0lGQVFDeTFBRUFiQkVCQUJyV0FRREZFZ0VBeVB3QUFCY01BZ0FlMWdcXFxuRUF5UklCQUxQOEFBRHRDd0lBaHYwQUFLb05Bd0NXSUFBQVpBRUJBQlRYQVFDOUV3RUExLzRBQUhVUEFRQ00vd0FBTkJBQkFIY3ZBQURRXFxcbkF3RUF0QWNCQUx3UUFRQ0pJQUFBV0FFQkFBY3lBQUM5QkFNQUZmMEFBTFlNQWdDMzFnRUFZQk1CQURUeEFRRGpGUUVBV2Y0QUFPUU9BUVxcXG5EVTFnRUFmUk1CQUFqWEFRQ3hFd0VBOXRjQkFKMFVBUUJPMXdFQTl4TUJBTnZYQVFDQ0ZBRUF2dndBQUFNTUFnQ0dMd0FBM3dNQkFEVXZcXFxuQUFDT0F3RUFnZnNBQU9vSkFRQnAxUUVBRkJJQkFJa3hBQUNVQkFFQWNmd0FBR1FMQWdCYjFBRUFIUkVCQUV2L0FBRHpEd0VBMi9zQUFDXFxcbmNLQVFCRE1nQUFoQVVEQUxVQ0FBQkRBQUVBWk5VQkFBOFNBUUJ3TVFBQWV3UUJBTjM3QUFBcENnSUF6aThBQUNjRUFRQmFJUUFBMGdFRFxcXG5BSFVoQUFBS0FnSUFmLzBBQUpVTkF3Q0FNd0FBUndnQ0FFei9BQUQwRHdFQXk5WUJBSFFUQVFEaS9nQUFnQThCQU1YL0FBQnFFQUVBcmpcXFxuSUFBQThHQVFCcC9nQUE4dzRCQURVeUFBQmFCUU1BdkNRQUFCa0RBUUM3THdBQUZBUUJBS1AvQUFCTEVBRUFGak1BQU44R0JnQXI4UUVBXFxcbjJSVUJBQkg4QUFDWUNnSUFSQzhBQUowREFRRFQrd0FBSHdvQkFEdldBUURtRWdFQUQvMEFBS29NQWdCRzhRRUE5UlVCQUk0eUFBRHZCUVxcXG5FQW5EQUFBRFlFQWdDbUhRQUEwQUFCQUwweUFBQXFCZ0lBb3ZzQUFBc0tBUUFuMVFFQTJSRUJBTVg4QUFBUkRBSUFMVE1BQURvSEJRQmFcXFxuL2dBQTVRNEJBQXpXQVFDM0VnRUFnU1FBQUhZQ0JBQk8vZ0FBMmc0QkFFWC9BQUR0RHdFQTd6SUFBSFFHQVFBdEhRQUFpUUFCQURVeEFBXFxcbkJBQkFFQVFqTUFBSkVIQXdBWDhRRUFuUlVEQUN2WEFRRFVFd0VBUVIwQUFKc0FBUUJkL3dBQUJSQUJBQVA5QUFDU0RBSUF6UDRBQUdvUFxcXG5BUUF2MVFFQTRSRUJBQ1A4QUFDOENnSUFJdFVCQU5RUkFRRDRNZ0FBZlFZQkFFTXhBQUJPQkFFQVVOUUJBQk1SQVFEYkFnQUFUUUFDQU1cXFxudjhBQUFkREFJQXNTUUFBQVFEQXdEdTF3RUFsUlFCQUMzVkFRRGZFUUVBa3RjQkFEc1VBUUNwTHdBQUFnUUJBQVl5QUFDNkJBTUFJaThBXFxcbkFIc0RBUUFVTHdBQWJRTUJBSnN3QUFBMEJBSUFxZTRCQUdBVkFRQjAvUUFBZEEwREFHb2RBQUREQUFFQVh1QUJBTlVVQVFEVzFRRUFnUlxcXG5JQkFBVFZBUUM3RVFFQW52d0FBTU1MQWdCVElRQUF2UUVEQUNIVUFRRGtFQUVBcGU0QkFGd1ZBUUJuTHdBQXdBTUJBTlFEQUFCa0FBSUFcXFxuZ3Z3QUFJWUxBZ0NZN2dFQVZSVUJBQjh2QUFCNEF3RUEwOWNCQUhvVUFRQVRNd0FBMFFZR0FGNHlBQUNvQlFJQWRDOEFBTTBEQVFCc013XFxcbkFBRkFnREFJUWtBQUNDQWdRQVp2NEFBUEVPQVFDTEJ3RUFsQkFCQVBiK0FBQ1dEd01BaGYwQUFLY05Bd0NMMUFFQVRSRUJBSWNrQUFDT1xcXG5BZ1FBVDlZQkFQb1NBUUI5L2dBQURBOENBSHo5QUFDTURRTUF3ZndBQUFrTUFnQ2kxQUVBWVJFQkFENGdBQUEwQVFJQW1OVUJBRU1TQVFcXFxuQThNZ0FBYndVREFIb2tBQUJkQWdNQUV2MEFBTEFNQWdBcDFBRUE3QkFCQUJQdUFRRDNGQUVBamZ3QUFKd0xBZ0FwTHdBQWdnTUJBS0hXXFxcbkFRQk1Fd0VBRVBFQkFJZ1ZBd0FzSFFBQWlBQUJBTGpYQVFCaEZBRUE3RElBQUhFR0FRQkZNUUFBVUFRQkFMLzlBQUJQRGdNQVRkVUJBUFxcXG5rUkFRQ0JNUUFBakFRQkFHZjhBQUJOQ3dNQU5QOEFBTndQQVFEajFnRUFqQk1CQUhEOUFBQm9EUU1BQ05ZQkFMTVNBUUFSMXdFQXVoTUJcXFxuQUozL0FBQkZFQUVBSDlVQkFORVJBUUJ6MXdFQUhCUUJBSlg5QUFEUkRRTUFYLzhBQUFjUUFRQjBJUUFBQ1FJQkFNVCtBQUJpRHdFQUk5XFxcblVCQU5VUkFRQjhJQUFBU3dFQkFLb3ZBQUFEQkFFQW50WUJBRWtUQVFCVkx3QUFyZ01CQUlMVkFRQXRFZ0VBQWRZQkFLd1NBUUNxMXdFQVxcXG5VeFFCQUY4aEFBRGhBUUlBU3Y4QUFQSVBBUUIzMUFFQU9SRUJBQ1hWQVFEWEVRRUFvdjBBQVBnTkF3Q1Uvd0FBUEJBQkFJNy9BQUEyRUFcXFxuRUFPOVFCQVA0UUFRQUoxd0VBc2hNQkFHM1ZBUUFZRWdFQTZqTUFBRVFKQXdCMzdnRUFPQlVCQUt6dUFRQmlGUUVBVFRNQUFMb0hCQUNsXFxcbjFnRUFVQk1CQU1JekFBRG1DQVFBWWRZQkFBd1RBUUFCL1FBQWpnd0NBTkxWQVFCOUVnRUFDQ0FBQUJzQkFRQ1AvUUFBeFEwREFDY3lBQVxcXG5Bd0JRTUFSOVFCQUFvUkFRQ2RKQUFBeUFJREFFdnhBUUQ3RlFJQS9OVUJBS2NTQVFBSzFRRUF3QkVCQUliN0FBRHZDUUVBR2RjQkFNSVRcXFxuQVFBUE13QUF3UVlFQUdyOUFBQldEUU1BbmZ3QUFNRUxBZ0ErL0FBQThnb0NBR1RnQVFEYkZBRUEwUU1BQUdBQUFRQ3Yvd0FBVnhBQkFEXFxcblBVQVFEMkVBRUEvdnNBQUc4S0FRRGMxQUVBa3hFQkFQRDdBQUJKQ2dNQTNUTUFBQ2NKQWdEMS9BQUFkZ3dDQU9iOEFBQlZEQUlBVk5VQlxcXG5BUDhSQVFEZkh3QUFCZ0VEQUlJZ0FBQlJBUUVBci80QUFFMFBBUUE5MUFFQUFCRUJBTWtCQUFBd0FBSUFZT0FCQU5jVUFRQXAvd0FBMFFcXFxuOEJBTFl6QUFET0NBSUFWL3NBQU1BSkFRQ3kvZ0FBVUE4QkFBUFhBUUNzRXdFQTZkVUJBSlFTQVFEaEpBQUFQZ01CQUpRSEFRQ2RFQUVBXFxcbmp6SUFBUEFGQVFCSjRBRUF3QlFCQUl6VkFRQTNFZ0VBWFRNQUFPd0hBZ0E1TUFBQU1nUUJBRzNVQVFBdkVRRUFTUzhBQUtJREFRQWk4Z1xcXG5FQUpoWUJBUDR5QUFDREJnRUFuTmNCQUVVVUFRQjVNUUFBaEFRQkFKZldBUUJDRXdFQXlBRUFBQzRBQWdBNElRQUFwQUVCQUt6V0FRQlZcXFxuRXdFQUlQd0FBTFlLQWdCK01nQUEzd1VDQUNUOUFBRFVEQUlBM3pJQUFHUUdBUUJUL0FBQUhBc0NBTG4rQUFCWER3RUFidGNCQUJjVUFRXFxcbkI0TXdBQU13Z0RBSi8vQUFCSEVBRUFHZTRCQVAwVUFRQVo4UUVBb3hVREFJRFVBUUJDRVFFQUhmd0FBTEFLQWdEL01BQUFPZ1FDQUdQN1xcXG5BQURNQ1FFQU92RUJBT2tWQVFBOE13QUFlZ2NFQUlmOEFBQ1FDd0lBWE5RQkFCNFJBUUNwL2dBQVJ3OEJBQnJVQVFEZEVBRUF1KzRCQUhcXFxuRVZBUUJPMVFFQStoRUJBTVQvQUFCcEVBRUFJOVFCQU9ZUUFRRGMvQUFBUHd3Q0FJL1ZBUUE2RWdFQVZ0UUJBQmdSQVFDTS9RQUF2QTBEXFxcbkFNTFZBUUJ0RWdFQXUvMEFBRU1PQXdCODFnRUFKeE1CQUt2VUFRQm1FUUVBVjlVQkFBSVNBUURrL0FBQVVRd0NBQzh5QUFCSUJRTUF2RFxcXG5NQUFOb0lBZ0IrL2dBQURnOENBRS9VQVFBU0VRRUFTdGNCQVBNVEFRQm5NUUFBY2dRQkFKNzdBQUFIQ2dFQWJ2OEFBQllRQVFDUS93QUFcXFxuT0JBQkFBRFhBUUNwRXdFQU1kUUJBUFFRQVFCWjFBRUFHeEVCQURzaEFBQ21BUU1BZWRjQkFDSVVBUUJHL0FBQUFnc0NBRXN6QUFDeUJ3XFxcbk1BUWZ3QUFQZ0tBZ0I1TWdBQTBBVUNBSlF5QUFEMUJRRUE2OVFCQUtJUkFRQWYxd0VBeUJNQkFDZ3ZBQUNCQXdFQTZQc0FBRFVLQVFDaVxcXG5KQUFBMXdJREFGblhBUUFDRkFFQXV2d0FBUHNMQWdBdUhRQUFpZ0FCQUpmN0FBQUFDZ0VBakNRQUFKb0NBZ0NsSFFBQXp3QUJBTk16QUFcXFxuQU9DUUlBOVAwQUFIZ09CQUNqQndFQXJCQUJBSTB2QUFEbUF3RUE5L3NCQUdRV0FRQis3Z0VBUFJVQkFESC9BQURaRHdFQUJQMEFBSlFNXFxcbkFnQStNZ0FBZFFVREFHd2tBQUE3QWdJQTZkY0JBSkFVQVFCMi9RQUFlZzBEQUNnekFBQW9Cd0lBQXRZQkFLMFNBUUJnL2dBQTZ3NEJBRlxcXG5nZEFBQ3hBQUVBanYwQUFNSU5Bd0FMTWdBQXlRUURBS1F2QUFEOUF3RUEyUHdBQURjTUFnRFQvQUFBTFF3Q0FFYlVBUUFKRVFFQUVETUFcXFxuQU1VR0JBQnExZ0VBRlJNQkFNNHpBQUFEQ1FJQWR3OEFBSUVBQXdDMzF3RUFZQlFCQUlyN0FBRHpDUUVBTHk4QUFJZ0RBUUJ5TXdBQUpnXFxcbmdDQUhra0FBQmFBZ01BeUNRQUFDVURBUUNGMUFFQVJ4RUJBSGJVQVFBNEVRRUF3VE1BQU9RSUFnQjZMd0FBMHdNQkFQbldBUUNpRXdFQVxcXG5LOVFCQU80UUFRQjExQUVBTnhFQkFGSCtBQURkRGdFQXZ4MEFBT2tBQVFDQU1RQUFpd1FCQUNmVUFRRHFFQUVBQ0M4QUFHRURBUUE2NEFcXFxuRUFzUlFCQUlFekFBQkpDQUlBWHY4QUFBWVFBUUJmMXdFQUNCUUJBUElCQUFBNkFBSUFPZFVCQU9zUkFRRDUxQUVBc0JFQkFFTXZBQUNjXFxcbkF3RUFIZjBBQU1ZTUFnQWYvQUFBdEFvQ0FIMGtBQUJtQWdRQVB2OEFBT1lQQVFCMjF3RUFIeFFCQUo4ZEFBREpBQUVBRnU0QkFQb1VBUVxcXG5CV01nQUFtQVVDQUhyL0FBQWlFQUVBS2RZQkFOUVNBUUJVN2dFQUlSVUJBRm4vQUFBQkVBRUF6OVlCQUhnVEFRRDIxZ0VBbnhNQkFMVXpcXFxuQUFETUNBSUF1ZGNCQUdJVUFRRFMvd0FBY3hBQkFGZ3pBQURpQndJQUtpOEFBSU1EQVFEaEFnQUFWQUFCQUdqOEFBQlFDd01BS1RNQUFDXFxcbm9IQXdEaC9BQUFTd3dDQURMWEFRRGJFd0VBVlBzQUFMMEpBUURrMUFFQW14RUJBQzBpQUFBa0FnTUFzZjBBQUNVT0F3Q1Uxd0VBUFJRQlxcXG5BSWorQUFBaER3SUF5TmNCQUhFVUFRQkQvd0FBNnc4QkFDRFVBUURqRUFFQVBmd0FBUEFLQWdBWS9RQUF2QXdDQUlmK0FBQWZEd0lBMENcXFxuOEFBQ2tFQVFENSt3QUFaQW9EQURzeUFBQnNCUU1BaGRZQkFEQVRBUUNISUFBQVZnRUJBRjNYQVFBR0ZBRUFSeDBBQUtFQUFRQkMvQUFBXFxcbitnb0NBRDh2QUFDWUF3RUFndjRBQUJVUEFnREYxZ0VBYmhNQkFJanVBUUJHRlFFQTZUSUFBRzRHQVFCTjFBRUFFQkVCQUZMOEFBQWFDd1xcXG5JQUhESUFBQW9GQkFEdUh3QUFEQUVEQUVqVUFRQUxFUUVBU1RNQUFLb0hBZ0RpMVFFQWpSSUJBQlR5QVFBWUZnRUFPVElBQUdZRkF3QUZcXFxuSUFBQUdBRUJBQjd4QVFDeUZRTUFPUElCQUR3V0FRQTdMd0FBbEFNQkFLLzlBQUFmRGdNQTJ0WUJBSU1UQVFEcy93QUFpQkFCQUN6V0FRXFxcbkRYRWdFQUpqSUFBQzBGQXdDVC93QUFPeEFCQUJRekFBRFhCZ0lBZVNBQUFFZ0JBUUNQL3dBQU54QUJBSE14QUFCK0JBRUFnOVVCQUM0U1xcXG5BUUQ1K3dFQVpoWUJBTFFBQUFBSUFBSUF3djBBQUZnT0F3QXlIUUFBalFBQkFCalVBUURiRUFFQWYvOEFBQ2NRQVFBejhRRUE0aFVCQUtcXFxuQXlBQUFCQmdFQVkvMEFBRUVOQXdCeDF3RUFHaFFCQUswekFBQzBDQU1BdHdJQUFFVUFBUUFSOGdFQUZCWUJBR3Z4QVFBSUZnSUFkL3NBXFxcbkFPQUpBUUQ2L2dBQW9nOERBR0hVQVFBakVRRUE2aklBQUc4R0FRQlYxUUVBQUJJQkFLc2RBQURWQUFFQXZQNEFBRm9QQVFDeDFnRUFXaFxcXG5NQkFINHhBQUNKQkFFQXNkVUJBRndTQVFDVi9nQUFNdzhCQUI4ekFBQUlCd1FBRE5jQkFMVVRBUUJpMWdFQURSTUJBQTdYQVFDM0V3RUFcXFxuRjlRQkFOb1FBUUFRL0FBQWxnb0NBQnI4QUFDcUNnSUFWZGNCQVA0VEFRQTBNUUFBUHdRQkFBZ3pBQUNvQmdRQVFkVUJBUEVSQVFDSEJ3XFxcbkVBa0JBQkFLeitBQUJLRHdFQUtmSUJBQzBXQVFCRzRBRUF2UlFCQU1Na0FBQWdBd0VBSmlBQUFDUUJBd0JKQVFBQUlBQUNBT2N6QUFBOVxcXG5DUUlBSENFQUFJOEJBUUJZTHdBQXNRTUJBUC9WQVFDcUVnRUFtLzRBQURrUEFRQXYvUUFBNmd3Q0FCRFhBUUM1RXdFQVpSMEFBTDRBQVFcXFxuQWUvQUFBc2dvQ0FKMzlBQURwRFFNQWR5QUFBRVlCQVFETEpBQUFLQU1CQUxydUFRQndGUUVBRHY4QUFMWVBBUUIrK3dBQTV3a0JBRGN6XFxcbkFBQm5Cd01BalNRQUFKd0NBZ0NaL1FBQTNRMERBR1g5QUFCSERRTUFyTmNCQUZVVUFRQWM4UUVBckJVREFQOHlBQUNFQmdJQWV1NEJBRFxcXG5vVkFRQnI0QUVBNGhRQkFFZitBQURQRGdFQU45WUJBT0lTQVFCa01nQUFzQVVCQUZqOEFBQW1Dd0lBQTlZQkFLNFNBUUI0MUFFQU9oRUJcXFxuQUFyL0FBQ3lEd0VBby8wQUFQc05Bd0JFSFFBQW5nQUJBTkFrQUFBdEF3RUFYcXNBQUpBSkFRRDgvQUFBaEF3Q0FPRC9BQUI4RUFFQUN1XFxcbjRCQU80VUFRQTlNUUFBU0FRQkFKZ3pBQUIrQ0FJQTBQd0FBQ2NNQWdCdUx3QUF4d01CQUM4Z0FBQW5BUUVBcXZ3QUFOc0xBZ0E2MUFFQVxcXG4vUkFCQUNQOUFBRFNEQUlBOHk0QUFGZ0RBUUJmL2dBQTZnNEJBSk12QUFEc0F3RUFoaUFBQUZVQkFRQnQvUUFBWHcwREFKOGtBQURPQWdcXFxuTUFKTlFCQU9jUUFRRDQrd0VBWlJZQkFHTFVBUUFrRVFFQVRmNEFBTmtPQVFBNzFRRUE3QkVCQUVuK0FBRFJEZ0lBcTlZQkFGUVRBUUF5XFxcbk1RQUFQUVFCQU1MWEFRQnJGQUVBblAwQUFPWU5Bd0RDTHdBQUd3UUJBUFF6QUFCaUNRTUFQQ0VBQUtrQkFRRG8xd0VBanhRQkFJai9BQVxcXG5Bd0VBRUFuZGNCQUVZVUFRREJKQUFBSGdNQkFPQWtBQUE5QXdFQXVPNEJBRzRWQVFCdy9BQUFZZ3NDQUd6OEFBQmFDd0lBckM4QUFBVUVcXFxuQVFBQzhnRUFFaFlCQVBQN0FBQlNDZ01BZUM4QUFORURBUUJWTWdBQWxnVUNBQzR2QUFDSEF3RUFKUHNBQUxFSkFRQ3ZNZ0FBRUFZQkFFXFxcbm9kQUFDa0FBRUFKUzhBQUg0REFRQnU3Z0VBTUJVQkFDMzlBQURtREFJQWF2OEFBQklRQVFCbUpBQUFNZ0lCQUhuVkFRQWtFZ0VBTWZJQlxcXG5BRFVXQVFCaC9BQUFPd3NEQVAzWEFRQ2tGQUVBWC8wQUFEVU5Bd0FhN2dFQS9oUUJBRWd6QUFDbUJ3UUFxZnNBQUJRS0FRQmYxQUVBSVJcXFxuRUJBRzNXQVFBWUV3RUE2UHdBQUZrTUFnQmIrd0FBeEFrQkFHTHVBUUFvRlFFQVJqRUFBRkVFQVFDc013QUFzUWdEQUVueEFRRDRGUUVBXFxcbmxUSUFBUFlGQVFBek13QUFWUWNFQUEvOEFBQ1VDZ0lBaXY4QUFESVFBUUNITXdBQVZRZ0NBSFlHQUFCeUFBSUF6ZjhBQUhBUUFRQ0cvZ1xcXG5BQUhROENBT2pXQVFDUkV3RUFRUHdBQVBZS0FnQUsvQUFBaWdvQ0FJZ0hBUUNSRUFFQXdDOEFBQmtFQVFDMjFRRUFZUklCQUtqL0FBQlFcXFxuRUFFQWlUSUFBT29GQVFCNS9RQUFndzBEQUFBekFBQ0dCZ1VBVlIwQUFLNEFBUUMxSkFBQUVBTURBRXd2QUFDbEF3RUFZekVBQUc0RUFRXFxcbkFDSUFBQUZRRUJBRmN2QUFDd0F3RUEyL3dBQUQwTUFnQ2YxQUVBWUJFQkFJaldBUUF6RXdFQUdQOEFBTUFQQVFCVUx3QUFyUU1CQUlYdVxcXG5BUUJERlFFQTBTOEFBQ29FQVFERk13QUE3Z2dDQUZQN0FBQzhDUUVBbHpFQUFKOEVBUURQTHdBQUtBUUJBQmJWQVFESkVRRUFBVElBQUtcXFxuc0VBd0NDL1FBQW5nMERBQmIvQUFDK0R3RUFVQ0VBQUxNQkF3QUo4UUVBaEJVQ0FKMytBQUE3RHdFQUR5RUFBSVFCQVFBT01nQUEwZ1FFXFxcbkFFRGdBUUMzRkFFQUNqTUFBSzhHQXdBTzdnRUE4aFFCQUVYOEFBQUFDd0lBU1A4QUFQQVBBUUJIL0FBQUJBc0NBQVhWQVFDOEVRRUFhU1xcXG5FQUFQY0JBUURjSkFBQU9RTUJBTmpYQVFCL0ZBRUFWZnNBQUw0SkFRQ0UvZ0FBR1E4Q0FDTHVBUUFGRlFFQWN0Y0JBQnNVQVFEd013QUFcXFxuVmdrREFMSFVBUUJyRVFFQW1mOEFBRUVRQVFBdS9RQUE2QXdDQUZraEFBRFBBUU1BamRVQkFEZ1NBUUFuMWdFQTBoSUJBT3YrQUFDSkR3XFxcbkVBTkRNQUFGa0hCZ0FtOFFFQXloVURBRVF4QUFCUEJBRUFOdUFCQUswVUFRQzVIUUFBNHdBQkFPcldBUUNURXdFQTd0WUJBSmNUQVFER1xcXG4vZ0FBWkE4QkFFeldBUUQzRWdFQXUvd0FBUDBMQWdBeklBQUFLQUVDQUFrZ0FBQWNBUUVBZHpNQUFERUlBZ0JnTVFBQWF3UUJBSXpVQVFcXFxuQk9FUUVBc3lRQUFBb0RBd0RRMUFFQWh4RUJBTXYvQUFCdUVBRUFyZjBBQUJrT0F3Q0w3Z0VBU0JVQkFMSCtBQUJQRHdFQTZ2d0FBRjBNXFxcbkFnQjJMd0FBendNQkFMNHlBQUFzQmdJQXNkY0JBRm9VQVFENDFRRUFveElCQUhQOUFBQnhEUU1BR3Y4QUFNSVBBUUNpL0FBQXl3c0NBQlxcXG5zaEFBQ09BUUVBc3RVQkFGMFNBUUJnK3dBQXlRa0JBQzd1QVFBTkZRRUFjU0FBQUVJQkFRQzcxQUVBZEJFQkFQd3pBQUI2Q1FNQTcvNEFcXFxuQUkwUEFRRDcxQUVBc2hFQkFDalhBUURSRXdFQS8vd0FBSW9NQWdENDFnRUFvUk1CQURYVkFRRG5FUUVBTkIwQUFJOEFBUUJsSVFBQTdBXFxcbkVDQUN6dUFRQUxGUUVBM2RVQkFJZ1NBUUJBSVFBQXJRRUJBQzB5QUFCQ0JRTUFsdTRCQUZNVkFRQysvd0FBWmhBQkFMWHVBUUJyRlFFQVxcXG5FVE1BQU1rR0JBQ0ovUUFBc3cwREFOY3lBQUJjQmdFQWtTOEFBT29EQVFDWUJ3RUFvUkFCQUdza0FBQTVBZ0lBd2lRQUFCOERBUUFPMVFcXFxuRUF3aEVCQUx6L0FBQmtFQUVBbnYwQUFPd05Bd0FWSVFBQWlRRUJBQlhYQVFDK0V3RUFyUHdBQU44TEFnQ1kvQUFBc3dzREFHYjhBQUJLXFxcbkN3TUFieTBBQUZZREFRQ2MxUUVBUnhJQkFBSDhBQUIwQ2dNQVNlNEJBQm9WQVFBWklRQUFqQUVCQU5ja0FBQTBBd0VBUXRZQkFPMFNBUVxcXG5BRU13QUFsd1lGQUpneEFBQ2dCQUVBMVA0QUFISVBBUUJzTHdBQXhRTUJBQWJVQVFESkVBRUFIZFlCQU1nU0FRRFZNd0FBRWdrREFBZnVcXFxuQVFEckZBRUF6dFFCQUlVUkFRQUI4UUVBZEJVQ0FKSUhBUUNiRUFFQXZpUUFBQnNEQVFDOEx3QUFGUVFCQUUveEFRQUVGZ0lBRXY0QUFLXFxcbjhPQVFESC9nQUFaUThCQUMzOEFBRFFDZ0lBaWlRQUFKWUNBZ0R0SHdBQUNRRURBTlhXQVFCK0V3RUFzaThBQUFzRUFRQ0wvQUFBbUFzQ1xcXG5BRmd4QUFCakJBRUE0LzhBQUg4UUFnQ0Urd0FBN1FrQkFHWDdBQURPQ1FFQWsrNEJBRkFWQVFBSU1nQUF3QVFEQVB3eUFBQ0JCZ0VBbFBcXFxuNEFBRElQQVFCUEx3QUFxQU1CQUljdkFBRGdBd0VBZGU0QkFEWVZBUUJYSUFBQVBBRUVBQmZXQVFEQ0VnRUE0ZFVCQUl3U0FRQ3MvUUFBXFxcbkZnNERBQTR2QUFCbkF3RUFIU0VBQUpBQkFRQWNNd0FBL2dZREFJTXZBQURjQXdFQXc5VUJBRzRTQVFCek13QUFLQWdDQUR2eEFRRHFGUVxcXG5FQWhpUUFBSW9DQkFCbDFnRUFFQk1CQU9EOEFBQklEQU1BMHdNQUFHSUFBZ0FEMUFFQXhoQUJBRURXQVFEckVnRUFyQ1FBQVBVQ0F3QTVcXFxuTHdBQWtnTUJBRUR4QVFEdkZRRUFiL3NBQU5nSkFRQVQvUUFBc2d3Q0FNYlVBUUI5RVFFQVNQSUJBRmdXQXdDRE1RQUFqZ1FCQUM3V0FRXFxcbkRaRWdFQVNQRUJBUGNWQVFDSit3QUE4Z2tCQUlIdUFRQS9GUUVBSmZ3QUFNQUtBZ0FqOGdFQUp4WUJBRTR6QUFDK0J3UUEwaThBQUNzRVxcXG5BUUJVL1FBQUZBMERBQUgvQUFDcER3RUFRTmNCQU9rVEFRQzgxd0VBWlJRQkFMUWRBQURlQUFFQVB0UUJBQUVSQVFDcC9BQUEyUXNDQUNcXFxuTDlBQURRREFJQUl5OEFBSHdEQVFCT01RQUFXUVFCQUlyK0FBQWxEd0lBQS84QUFLc1BBUUNTTWdBQTh3VUJBUGI4QUFCNERBSUFQeDBBXFxcbkFKa0FBUUM0SFFBQTRnQUJBR2orQUFEeURnRUFhUjBBQU1JQUFRQ2JCd0VBcEJBQkFCc3pBQUQ2QmdRQXAvMEFBQWNPQXdEYi93QUFlaFxcXG5BQkFIejhBQUI2Q3dJQXBmMEFBQUVPQXdCQk13QUFqZ2NEQUtja0FBRG1BZ01BRmpJQUFQSUVCQUErTHdBQWx3TUJBSnovQUFCRUVBRUFcXFxuSVBzQUFLMEpBUUFXOFFFQW1oVURBRnN5QUFDaUJRSUE1dFVCQUpFU0FRQ2Uxd0VBUnhRQkFCVHVBUUQ0RkFFQVB6TUFBSWNIQWdEVU1nXFxcbkFBV1FZQkFDM3lBUUF4RmdFQWlQMEFBTEFOQXdEWjFBRUFrQkVCQUtyOUFBQVFEZ01BeHZ3QUFCTU1BZ0J1MVFFQUdSSUJBRG51QVFBV1xcXG5GUUVBaXRRQkFFd1JBUURRMXdFQWR4UUJBTGtBQUFBTkFBRUFJUEVCQUxnVkF3QUwxZ0VBdGhJQkFIQXZBQURKQXdFQSt0UUJBTEVSQVFcXFxuQmNMd0FBdFFNQkFLc3lBQUFNQmdFQW8vc0FBQXdLQVFBQ0x3QUFXd01CQUIveEFRQzFGUU1BYWZ3QUFGTUxBd0RVSkFBQU1RTUJBSkVrXFxcbkFBQ2tBZ01BYXpJQUFMY0ZBUUFJL0FBQWhnb0NBTExYQVFCYkZBRUEvek1BQUlNSkF3Q04rd0FBOWdrQkFQRDdBUUJkRmdFQVVqSUFBSlxcXG5BRkFnRGwxZ0VBamhNQkFLelZBUUJYRWdFQWxQc0FBUDBKQVFCakx3QUF2QU1CQUtJSEFRQ3JFQUVBQnZ3QUFJSUtBZ0JhL0FBQUtnc0NcXFxuQUhYL0FBQWRFQUVBMnY0QUFIZ1BBUUI1L3dBQUlSQUJBR0lrQUFBdUFnRUFDZndBQUlnS0FnQVJJUUFBaGdFQkFKNHhBQUNtQkFFQVVkXFxcblFCQUJRUkFRQWdMd0FBZVFNQkFLRFdBUUJMRXdFQWQ5VUJBQ0lTQVFDMjF3RUFYeFFCQUJYL0FBQzlEd0VBUk5jQkFPMFRBUUFjOGdFQVxcXG5JQllCQVBMN0FRQmZGZ0VBT3Z3QUFPb0tBZ0I3TXdBQU93Z0NBTGo5QUFBNkRnTUF3LzhBQUdnUUFRRGJNd0FBSXdrQ0FBei9BQUMwRHdcXFxuRUFLdFVCQU53UkFRQ2I3Z0VBV0JVQkFPSWtBQUEvQXdFQW52OEFBRVlRQVFEZU1nQUFZd1lCQUhUVkFRQWZFZ0VBZHU0QkFEY1ZBUUNlXFxcbjFRRUFTUklCQUVUeUFRQk1GZ01BTi9FQkFPWVZBUUNnL2dBQVBnOEJBQ3IvQUFEU0R3RUFUekVBQUZvRUFRQjgxQUVBUGhFQkFHZlVBUVxcXG5BcEVRRUFULzhBQVBjUEFRQ2gvZ0FBUHc4QkFLa3pBQUNwQ0FJQW1RY0JBS0lRQVFBUzdnRUE5aFFCQUpJa0FBQ25BZ01BbHRZQkFFRVRcXFxuQVFDci9BQUEzUXNDQUJuOUFBQytEQUlBNk5VQkFKTVNBUUFmN2dFQUF4VUJBSkgrQUFBdkR3RUF4d0VBQUN3QUFnQ0IxZ0VBTEJNQkFMXFxcbmNrQUFBVUF3RUFoTmNCQUMwVUFRQkMxd0VBNnhNQkFLSXpBQUNVQ0FNQVJkWUJBUEFTQVFCdzdnRUFNaFVCQUJIV0FRQzhFZ0VBZkRNQVxcXG5BRDBJQWdCQzFBRUFCUkVCQURMK0FBQzhEZ0VBTVIwQUFJd0FBUUE0TVFBQVF3UUJBSVVrQUFDR0FnUUFGUEVCQUpRVkF3RFExUUVBZXhcXFxuSUJBRFhXQVFEZ0VnRUFDVE1BQUt3R0F3QUkxQUVBeXhBQkFGRCtBQURjRGdFQWplNEJBRW9WQVFDVC9RQUF5dzBEQUh2V0FRQW1Fd0VBXFxcbjI5UUJBSklSQVFBMjhRRUE1UlVCQUMveUFRQXpGZ0VBN2RjQkFKUVVBUUQ1TWdBQWZnWUJBS295QUFBTEJnRUFyek1BQUx3SUJnRGtKQVxcXG5BQVFRTUJBQU1nQUFBV0FRRUFnUDBBQUpnTkF3Qk80QUVBeFJRQkFKdlZBUUJHRWdFQWhUSUFBT1lGQVFDTzF3RUFOeFFCQUhrekFBQTJcXFxuQ0FNQXNnY0JBTG9RQVFDMy9nQUFWUThCQUhBa0FBQkRBZ0lBSU5ZQkFNc1NBUUMwMUFFQWJoRUJBRlRYQVFEOUV3RUFSdklCQUZJV0F3XFxcbkJnSVFBQTR3RUJBQy9YQVFEWUV3RUFULzRBQU5zT0FRQjYxQUVBUEJFQkFNMGZBQUQzQUFNQWZUSUFBTnNGQkFDT013QUFaZ2dDQUxNelxcXG5BQURJQ0FJQUVQMEFBS3dNQWdBM0x3QUFrQU1CQUljeEFBQ1NCQUVBWFA4QUFBUVFBUUExSVFBQW9RRUJBRHZYQVFEa0V3RUFlREVBQUlcXFxuTUVBUUNHL0FBQWpnc0NBS1V2QUFEK0F3RUE4ZFlCQUpvVEFRQzFIUUFBM3dBQkFIMzdBQURtQ1FFQVNQd0FBQVlMQWdCV0hRQUFyd0FCXFxcbkFFZldBUUR5RWdFQVpmNEFBUEFPQVFBWS9BQUFwZ29DQVBFekFBQlpDUU1BakRJQUFPMEZBUUM1TWdBQUlnWUNBSG43QUFEaUNRRUE3dFxcXG5RQkFLVVJBUUNQTXdBQWFBZ0NBR1BXQVFBT0V3RUF0ek1BQU5BSUFnQmExUUVBQlJJQkFMSDhBQURwQ3dJQVZESUFBSlFGQWdEZSt3QUFcXFxuS3dvQkFITXZBQURNQXdFQWw5UUJBRmtSQVFDSi93QUFNUkFCQVBYVkFRQ2dFZ0VBSUFBQUFDQUFBQUFJQXdBQVlRQUFBQ0FBQUFBRUF3XFxcbkFBTWdBQUFETUFBQUFnQUFBQUFRTUFBTHdEQUFBZ0FBQUFKd01BQURFQUFBQnZBQUFBTVFBQUFFUWdBQUEwQUFBQU1RQUFBRVFnQUFBeVxcXG5BQUFBTXdBQUFFUWdBQUEwQUFBQVNRQUFBRW9BQUFCcEFBQUFhZ0FBQUV3QUFBQzNBQUFBYkFBQUFMY0FBQUM4QWdBQWJnQUFBSE1BQUFcXFxuQkVBQUFBV2dBQUFBd0RBQUJFQUFBQWVnQUFBQXdEQUFCa0FBQUFlZ0FBQUF3REFBQk1BQUFBU2dBQUFFd0FBQUJxQUFBQWJBQUFBR29BXFxcbkFBQk9BQUFBU2dBQUFFNEFBQUJxQUFBQWJnQUFBR29BQUFCRUFBQUFXZ0FBQUVRQUFBQjZBQUFBWkFBQUFIb0FBQUJvQUFBQVpnSUFBR1xcXG5vQUFBQnlBQUFBZVFJQUFIc0NBQUNCQWdBQWR3QUFBSGtBQUFBZ0FBQUFCZ01BQUNBQUFBQUhBd0FBSUFBQUFBb0RBQUFnQUFBQUtBTUFcXFxuQUNBQUFBQURBd0FBSUFBQUFBc0RBQUJqQWdBQWJBQUFBSE1BQUFCNEFBQUFsUUlBQUNBQUFBQkZBd0FBSUFBQUFBRURBQUFnQUFBQUNBXFxcbk1BQUFFREFBQ3lBd0FBdUFNQUFLVURBQUNsQXdBQUFRTUFBS1VEQUFBSUF3QUF4Z01BQU1BREFBQzZBd0FBd1FNQUFNSURBQUNZQXdBQVxcXG50UU1BQUtNREFBQmxCUUFBZ2dVQUFDY0dBQUIwQmdBQVNBWUFBSFFHQUFESEJnQUFkQVlBQUVvR0FBQjBCZ0FBVFE0QUFESU9BQURORGdcXFxuQUFzZzRBQUtzT0FBQ1pEZ0FBcXc0QUFLRU9BQUFMRHdBQXNnOEFBSEVQQUFDQUR3QUFzdzhBQUhFUEFBQ0FEd0FBM0JBQUFFRUFBQURHXFxcbkFBQUFRZ0FBQUVRQUFBQkZBQUFBamdFQUFFY0FBQUJJQUFBQVNRQUFBRW9BQUFCTEFBQUFUQUFBQUUwQUFBQk9BQUFBVHdBQUFDSUNBQVxcXG5CUUFBQUFVZ0FBQUZRQUFBQlZBQUFBVndBQUFHRUFBQUJRQWdBQVVRSUFBQUlkQUFCaUFBQUFaQUFBQUdVQUFBQlpBZ0FBV3dJQUFGd0NcXFxuQUFCbkFBQUFhd0FBQUcwQUFBQkxBUUFBYndBQUFGUUNBQUFXSFFBQUZ4MEFBSEFBQUFCMEFBQUFkUUFBQUIwZEFBQnZBZ0FBZGdBQUFDXFxcblVkQUFDeUF3QUFzd01BQUxRREFBREdBd0FBeHdNQUFHa0FBQUJ5QUFBQWRRQUFBSFlBQUFDeUF3QUFzd01BQU1FREFBREdBd0FBeHdNQVxcXG5BRDBFQUFCU0FnQUFZd0FBQUZVQ0FBRHdBQUFBWEFJQUFHWUFBQUJmQWdBQVlRSUFBR1VDQUFCb0FnQUFhUUlBQUdvQ0FBQjdIUUFBblFcXFxuSUFBRzBDQUFDRkhRQUFud0lBQUhFQ0FBQndBZ0FBY2dJQUFITUNBQUIwQWdBQWRRSUFBSGdDQUFDQ0FnQUFnd0lBQUtzQkFBQ0pBZ0FBXFxcbmlnSUFBQndkQUFDTEFnQUFqQUlBQUhvQUFBQ1FBZ0FBa1FJQUFKSUNBQUM0QXdBQVlRQUFBTDRDQUFCekFBQUFCd01BQUNBQUFBQVRBd1xcXG5BQUlBQUFBQk1EQUFBZ0FBQUFRZ01BQUNBQUFBQUlBd0FBUWdNQUFDQUFBQUFUQXdBQUFBTUFBQ0FBQUFBVEF3QUFBUU1BQUNBQUFBQVRcXFxuQXdBQVFnTUFBQ0FBQUFBVUF3QUFBQU1BQUNBQUFBQVVBd0FBQVFNQUFDQUFBQUFVQXdBQVFnTUFBQ0FBQUFBSUF3QUFBQU1BQUNBQUFBXFxcbkFJQXdBQUFRTUFBQ0FBQUFBQkF3QUFJQUFBQUJRREFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQVxcXG5BQUFnQUFBQUlBQUFBQkFnQUFBZ0FBQUFNd01BQUM0QUFBQXVBQUFBTGdBQUFDNEFBQUF1QUFBQUxnQUFBQ0FBQUFBeUlBQUFNaUFBQURcXFxuSWdBQUF5SUFBQU1pQUFBRFVnQUFBMUlBQUFOU0FBQURVZ0FBQTFJQUFBSVFBQUFDRUFBQUFnQUFBQUJRTUFBRDhBQUFBL0FBQUFQd0FBXFxcbkFDRUFBQUFoQUFBQVB3QUFBRElnQUFBeUlBQUFNaUFBQURJZ0FBQWdBQUFBTUFBQUFHa0FBQUEwQUFBQU5RQUFBRFlBQUFBM0FBQUFPQVxcXG5BQUFEa0FBQUFyQUFBQUVpSUFBRDBBQUFBb0FBQUFLUUFBQUc0QUFBQXdBQUFBTVFBQUFESUFBQUF6QUFBQU5BQUFBRFVBQUFBMkFBQUFcXFxuTndBQUFEZ0FBQUE1QUFBQUt3QUFBQklpQUFBOUFBQUFLQUFBQUNrQUFBQmhBQUFBWlFBQUFHOEFBQUI0QUFBQVdRSUFBR2dBQUFCckFBXFxcbkFBYkFBQUFHMEFBQUJ1QUFBQWNBQUFBSE1BQUFCMEFBQUFVZ0FBQUhNQUFBQmhBQUFBTHdBQUFHTUFBQUJoQUFBQUx3QUFBSE1BQUFCRFxcXG5BQUFBc0FBQUFFTUFBQUJqQUFBQUx3QUFBRzhBQUFCakFBQUFMd0FBQUhVQUFBQ1FBUUFBc0FBQUFFWUFBQUJuQUFBQVNBQUFBRWdBQUFcXFxuQklBQUFBYUFBQUFDY0JBQUJKQUFBQVNRQUFBRXdBQUFCc0FBQUFUZ0FBQUU0QUFBQnZBQUFBVUFBQUFGRUFBQUJTQUFBQVVnQUFBRklBXFxcbkFBQlRBQUFBVFFBQUFGUUFBQUJGQUFBQVRBQUFBRlFBQUFCTkFBQUFXZ0FBQUZvQUFBQkNBQUFBUXdBQUFHVUFBQUJGQUFBQVJnQUFBRVxcXG4wQUFBQnZBQUFBMEFVQUFORUZBQURTQlFBQTB3VUFBR2tBQUFCR0FBQUFRUUFBQUZnQUFBREFBd0FBc3dNQUFKTURBQUNnQXdBQUVTSUFcXFxuQUVRQUFBQmtBQUFBWlFBQUFHa0FBQUJxQUFBQU1RQUFBRVFnQUFBM0FBQUFNUUFBQUVRZ0FBQTVBQUFBTVFBQUFFUWdBQUF4QUFBQU1BXFxcbkFBQURFQUFBQkVJQUFBTXdBQUFESUFBQUJFSUFBQU13QUFBREVBQUFCRUlBQUFOUUFBQURJQUFBQkVJQUFBTlFBQUFETUFBQUJFSUFBQVxcXG5OUUFBQURRQUFBQkVJQUFBTlFBQUFERUFBQUJFSUFBQU5nQUFBRFVBQUFCRUlBQUFOZ0FBQURFQUFBQkVJQUFBT0FBQUFETUFBQUJFSUFcXFxuQUFPQUFBQURVQUFBQkVJQUFBT0FBQUFEY0FBQUJFSUFBQU9BQUFBREVBQUFCRUlBQUFTUUFBQUVrQUFBQkpBQUFBU1FBQUFFa0FBQUJKXFxcbkFBQUFTUUFBQUZZQUFBQldBQUFBVmdBQUFFa0FBQUJXQUFBQVNRQUFBRWtBQUFCV0FBQUFTUUFBQUVrQUFBQkpBQUFBU1FBQUFGZ0FBQVxcXG5CWUFBQUFXQUFBQUVrQUFBQllBQUFBU1FBQUFFa0FBQUJNQUFBQVF3QUFBRVFBQUFCTkFBQUFhUUFBQUdrQUFBQnBBQUFBYVFBQUFHa0FcXFxuQUFCcEFBQUFhUUFBQUhZQUFBQjJBQUFBZGdBQUFHa0FBQUIyQUFBQWFRQUFBR2tBQUFCMkFBQUFhUUFBQUdrQUFBQnBBQUFBYVFBQUFIXFxcbmdBQUFCNEFBQUFlQUFBQUdrQUFBQjRBQUFBYVFBQUFHa0FBQUJzQUFBQVl3QUFBR1FBQUFCdEFBQUFNQUFBQUVRZ0FBQXpBQUFBS3lJQVxcXG5BQ3NpQUFBcklnQUFLeUlBQUNzaUFBQXVJZ0FBTGlJQUFDNGlBQUF1SWdBQUxpSUFBREVBQUFBeUFBQUFNd0FBQURRQUFBQTFBQUFBTmdcXFxuQUFBRGNBQUFBNEFBQUFPUUFBQURFQUFBQXdBQUFBTVFBQUFERUFBQUF4QUFBQU1nQUFBREVBQUFBekFBQUFNUUFBQURRQUFBQXhBQUFBXFxcbk5RQUFBREVBQUFBMkFBQUFNUUFBQURjQUFBQXhBQUFBT0FBQUFERUFBQUE1QUFBQU1nQUFBREFBQUFBb0FBQUFNUUFBQUNrQUFBQW9BQVxcXG5BQU1nQUFBQ2tBQUFBb0FBQUFNd0FBQUNrQUFBQW9BQUFBTkFBQUFDa0FBQUFvQUFBQU5RQUFBQ2tBQUFBb0FBQUFOZ0FBQUNrQUFBQW9cXFxuQUFBQU53QUFBQ2tBQUFBb0FBQUFPQUFBQUNrQUFBQW9BQUFBT1FBQUFDa0FBQUFvQUFBQU1RQUFBREFBQUFBcEFBQUFLQUFBQURFQUFBXFxcbkF4QUFBQUtRQUFBQ2dBQUFBeEFBQUFNZ0FBQUNrQUFBQW9BQUFBTVFBQUFETUFBQUFwQUFBQUtBQUFBREVBQUFBMEFBQUFLUUFBQUNnQVxcXG5BQUF4QUFBQU5RQUFBQ2tBQUFBb0FBQUFNUUFBQURZQUFBQXBBQUFBS0FBQUFERUFBQUEzQUFBQUtRQUFBQ2dBQUFBeEFBQUFPQUFBQUNcXFxua0FBQUFvQUFBQU1RQUFBRGtBQUFBcEFBQUFLQUFBQURJQUFBQXdBQUFBS1FBQUFERUFBQUF1QUFBQU1nQUFBQzRBQUFBekFBQUFMZ0FBXFxcbkFEUUFBQUF1QUFBQU5RQUFBQzRBQUFBMkFBQUFMZ0FBQURjQUFBQXVBQUFBT0FBQUFDNEFBQUE1QUFBQUxnQUFBREVBQUFBd0FBQUFMZ1xcXG5BQUFERUFBQUF4QUFBQUxnQUFBREVBQUFBeUFBQUFMZ0FBQURFQUFBQXpBQUFBTGdBQUFERUFBQUEwQUFBQUxnQUFBREVBQUFBMUFBQUFcXFxuTGdBQUFERUFBQUEyQUFBQUxnQUFBREVBQUFBM0FBQUFMZ0FBQURFQUFBQTRBQUFBTGdBQUFERUFBQUE1QUFBQUxnQUFBRElBQUFBd0FBXFxcbkFBTGdBQUFDZ0FBQUJoQUFBQUtRQUFBQ2dBQUFCaUFBQUFLUUFBQUNnQUFBQmpBQUFBS1FBQUFDZ0FBQUJrQUFBQUtRQUFBQ2dBQUFCbFxcXG5BQUFBS1FBQUFDZ0FBQUJtQUFBQUtRQUFBQ2dBQUFCbkFBQUFLUUFBQUNnQUFBQm9BQUFBS1FBQUFDZ0FBQUJwQUFBQUtRQUFBQ2dBQUFcXFxuQnFBQUFBS1FBQUFDZ0FBQUJyQUFBQUtRQUFBQ2dBQUFCc0FBQUFLUUFBQUNnQUFBQnRBQUFBS1FBQUFDZ0FBQUJ1QUFBQUtRQUFBQ2dBXFxcbkFBQnZBQUFBS1FBQUFDZ0FBQUJ3QUFBQUtRQUFBQ2dBQUFCeEFBQUFLUUFBQUNnQUFBQnlBQUFBS1FBQUFDZ0FBQUJ6QUFBQUtRQUFBQ1xcXG5nQUFBQjBBQUFBS1FBQUFDZ0FBQUIxQUFBQUtRQUFBQ2dBQUFCMkFBQUFLUUFBQUNnQUFBQjNBQUFBS1FBQUFDZ0FBQUI0QUFBQUtRQUFcXFxuQUNnQUFBQjVBQUFBS1FBQUFDZ0FBQUI2QUFBQUtRQUFBRUVBQUFCQ0FBQUFRd0FBQUVRQUFBQkZBQUFBUmdBQUFFY0FBQUJJQUFBQVNRXFxcbkFBQUVvQUFBQkxBQUFBVEFBQUFFMEFBQUJPQUFBQVR3QUFBRkFBQUFCUkFBQUFVZ0FBQUZNQUFBQlVBQUFBVlFBQUFGWUFBQUJYQUFBQVxcXG5XQUFBQUZrQUFBQmFBQUFBWVFBQUFHSUFBQUJqQUFBQVpBQUFBR1VBQUFCbUFBQUFad0FBQUdnQUFBQnBBQUFBYWdBQUFHc0FBQUJzQUFcXFxuQUFiUUFBQUc0QUFBQnZBQUFBY0FBQUFIRUFBQUJ5QUFBQWN3QUFBSFFBQUFCMUFBQUFkZ0FBQUhjQUFBQjRBQUFBZVFBQUFIb0FBQUF3XFxcbkFBQUFLeUlBQUNzaUFBQXJJZ0FBS3lJQUFEb0FBQUE2QUFBQVBRQUFBRDBBQUFBOUFBQUFQUUFBQUQwQUFBQTlBQUFBYWdBQUFGWUFBQVxcXG5CaExRQUF6V3NBQUorZkFBQUFUZ0FBS0U0QUFEWk9BQUEvVGdBQVdVNEFBSVZPQUFDTVRnQUFvRTRBQUxwT0FBQS9VUUFBWlZFQUFHdFJcXFxuQUFDQ1VRQUFsbEVBQUt0UkFBRGdVUUFBOVZFQUFBQlNBQUNiVWdBQStWSUFBQlZUQUFBYVV3QUFPRk1BQUVGVEFBQmNVd0FBYVZNQUFJXFxcbkpUQUFDMlV3QUF5Rk1BQU9OVEFBRFhWZ0FBSDFjQUFPdFlBQUFDV1FBQUNsa0FBQlZaQUFBbldRQUFjMWtBQUZCYkFBQ0FXd0FBK0ZzQVxcXG5BQTljQUFBaVhBQUFPRndBQUc1Y0FBQnhYQUFBMjEwQUFPVmRBQUR4WFFBQS9sMEFBSEplQUFCNlhnQUFmMTRBQVBSZUFBRCtYZ0FBQzFcXFxuOEFBQk5mQUFCUVh3QUFZVjhBQUhOZkFBRERYd0FBQ0dJQUFEWmlBQUJMWWdBQUwyVUFBRFJsQUFDSFpRQUFsMlVBQUtSbEFBQzVaUUFBXFxcbjRHVUFBT1ZsQUFEd1pnQUFDR2NBQUNobkFBQWdhd0FBWW1zQUFIbHJBQUN6YXdBQXkyc0FBTlJyQUFEYmF3QUFEMndBQUJSc0FBQTBiQVxcXG5BQWEzQUFBQ3B5QUFBMmNnQUFPM0lBQUQ5eUFBQkhjZ0FBV1hJQUFGdHlBQUNzY2dBQWhITUFBSWx6QUFEY2RBQUE1blFBQUJoMUFBQWZcXFxuZFFBQUtIVUFBREIxQUFDTGRRQUFrblVBQUhaMkFBQjlkZ0FBcm5ZQUFMOTJBQUR1ZGdBQTIzY0FBT0ozQUFEemR3QUFPbmtBQUxoNUFBXFxcbkMrZVFBQWRIb0FBTXQ2QUFENWVnQUFjM3dBQVBoOEFBQTJmd0FBVVg4QUFJcC9BQUM5ZndBQUFZQUFBQXlBQUFBU2dBQUFNNEFBQUgrQVxcXG5BQUNKZ0FBQTQ0RUFBT3FCQUFEemdRQUEvSUVBQUF5Q0FBQWJnZ0FBSDRJQUFHNkNBQUJ5Z2dBQWVJSUFBRTJHQUFCcmhnQUFRSWdBQUVcXFxueUlBQUJqaUFBQWZva0FBSXVKQUFEU2lRQUFBSW9BQURlTUFBQkdqQUFBVll3QUFIaU1BQUNkakFBQVpJMEFBSENOQUFDempRQUFxNDRBXFxcbkFNcU9BQUNiandBQXNJOEFBTFdQQUFDUmtBQUFTWkVBQU1hUkFBRE1rUUFBMFpFQUFIZVZBQUNBbFFBQUhKWUFBTGFXQUFDNWxnQUE2SlxcXG5ZQUFGR1hBQUJlbHdBQVlwY0FBR21YQUFETGx3QUE3WmNBQVBPWEFBQUJtQUFBcUpnQUFOdVlBQURmbUFBQWxwa0FBSm1aQUFDc21RQUFcXFxucUpvQUFOaWFBQURmbWdBQUpac0FBQytiQUFBeW13QUFQSnNBQUZxYkFBRGxuQUFBZFo0QUFIK2VBQUNsbmdBQXU1NEFBTU9lQUFETm5nXFxcbkFBMFo0QUFQbWVBQUQ5bmdBQURwOEFBQk9mQUFBZ253QUFPNThBQUVxZkFBQlNud0FBalo4QUFKeWZBQUNnbndBQUlBQUFBQkl3QUFCQlxcXG5Vd0FBUkZNQUFFVlRBQUFnQUFBQW1UQUFBQ0FBQUFDYU1BQUFpREFBQUlvd0FBQ3pNQUFBeURBQUFBQVJBQUFCRVFBQXFoRUFBQUlSQUFcXFxuQ3NFUUFBclJFQUFBTVJBQUFFRVFBQUJSRUFBTEFSQUFDeEVRQUFzaEVBQUxNUkFBQzBFUUFBdFJFQUFCb1JBQUFHRVFBQUJ4RUFBQWdSXFxcbkFBQWhFUUFBQ1JFQUFBb1JBQUFMRVFBQURCRUFBQTBSQUFBT0VRQUFEeEVBQUJBUkFBQVJFUUFBRWhFQUFHRVJBQUJpRVFBQVl4RUFBR1xcXG5RUkFBQmxFUUFBWmhFQUFHY1JBQUJvRVFBQWFSRUFBR29SQUFCckVRQUFiQkVBQUcwUkFBQnVFUUFBYnhFQUFIQVJBQUJ4RVFBQWNoRUFcXFxuQUhNUkFBQjBFUUFBZFJFQUFHQVJBQUFVRVFBQUZSRUFBTWNSQUFESUVRQUF6QkVBQU00UkFBRFRFUUFBMXhFQUFOa1JBQUFjRVFBQTNSXFxcbkVBQU44UkFBQWRFUUFBSGhFQUFDQVJBQUFpRVFBQUl4RUFBQ2NSQUFBcEVRQUFLeEVBQUN3UkFBQXRFUUFBTGhFQUFDOFJBQUF5RVFBQVxcXG5OaEVBQUVBUkFBQkhFUUFBVEJFQUFQRVJBQUR5RVFBQVZ4RUFBRmdSQUFCWkVRQUFoQkVBQUlVUkFBQ0lFUUFBa1JFQUFKSVJBQUNVRVFcXFxuQUFuaEVBQUtFUkFBQUFUZ0FBakU0QUFBbE9BQURiVmdBQUNrNEFBQzFPQUFBTFRnQUFNblVBQUZsT0FBQVpUZ0FBQVU0QUFDbFpBQUF3XFxcblZ3QUF1azRBQUNnQUFBQUFFUUFBS1FBQUFDZ0FBQUFDRVFBQUtRQUFBQ2dBQUFBREVRQUFLUUFBQUNnQUFBQUZFUUFBS1FBQUFDZ0FBQVxcXG5BR0VRQUFLUUFBQUNnQUFBQUhFUUFBS1FBQUFDZ0FBQUFKRVFBQUtRQUFBQ2dBQUFBTEVRQUFLUUFBQUNnQUFBQU1FUUFBS1FBQUFDZ0FcXFxuQUFBT0VRQUFLUUFBQUNnQUFBQVBFUUFBS1FBQUFDZ0FBQUFRRVFBQUtRQUFBQ2dBQUFBUkVRQUFLUUFBQUNnQUFBQVNFUUFBS1FBQUFDXFxcbmdBQUFBQUVRQUFZUkVBQUNrQUFBQW9BQUFBQWhFQUFHRVJBQUFwQUFBQUtBQUFBQU1SQUFCaEVRQUFLUUFBQUNnQUFBQUZFUUFBWVJFQVxcXG5BQ2tBQUFBb0FBQUFCaEVBQUdFUkFBQXBBQUFBS0FBQUFBY1JBQUJoRVFBQUtRQUFBQ2dBQUFBSkVRQUFZUkVBQUNrQUFBQW9BQUFBQ3hcXFxuRUFBR0VSQUFBcEFBQUFLQUFBQUF3UkFBQmhFUUFBS1FBQUFDZ0FBQUFPRVFBQVlSRUFBQ2tBQUFBb0FBQUFEeEVBQUdFUkFBQXBBQUFBXFxcbktBQUFBQkFSQUFCaEVRQUFLUUFBQUNnQUFBQVJFUUFBWVJFQUFDa0FBQUFvQUFBQUVoRUFBR0VSQUFBcEFBQUFLQUFBQUF3UkFBQnVFUVxcXG5BQUtRQUFBQ2dBQUFBTEVRQUFhUkVBQUF3UkFBQmxFUUFBcXhFQUFDa0FBQUFvQUFBQUN4RUFBR2tSQUFBU0VRQUFiaEVBQUNrQUFBQW9cXFxuQUFBQUFFNEFBQ2tBQUFBb0FBQUFqRTRBQUNrQUFBQW9BQUFBQ1U0QUFDa0FBQUFvQUFBQTIxWUFBQ2tBQUFBb0FBQUFsRTRBQUNrQUFBXFxcbkFvQUFBQWJWRUFBQ2tBQUFBb0FBQUFBMDRBQUNrQUFBQW9BQUFBYTFFQUFDa0FBQUFvQUFBQVhVNEFBQ2tBQUFBb0FBQUFRVk1BQUNrQVxcXG5BQUFvQUFBQUNHY0FBQ2tBQUFBb0FBQUFhM0FBQUNrQUFBQW9BQUFBTkd3QUFDa0FBQUFvQUFBQUtHY0FBQ2tBQUFBb0FBQUEwWkVBQUNcXFxua0FBQUFvQUFBQUgxY0FBQ2tBQUFBb0FBQUE1V1VBQUNrQUFBQW9BQUFBS21nQUFDa0FBQUFvQUFBQUNXY0FBQ2tBQUFBb0FBQUFQbmtBXFxcbkFDa0FBQUFvQUFBQURWUUFBQ2tBQUFBb0FBQUFlWElBQUNrQUFBQW9BQUFBb1l3QUFDa0FBQUFvQUFBQVhYa0FBQ2tBQUFBb0FBQUF0RlxcXG5JQUFDa0FBQUFvQUFBQTQwNEFBQ2tBQUFBb0FBQUFmRlFBQUNrQUFBQW9BQUFBWmxzQUFDa0FBQUFvQUFBQTQzWUFBQ2tBQUFBb0FBQUFcXFxuQVU4QUFDa0FBQUFvQUFBQXg0d0FBQ2tBQUFBb0FBQUFWRk1BQUNrQUFBQW9BQUFBYlhrQUFDa0FBQUFvQUFBQUVVOEFBQ2tBQUFBb0FBXFxcbkFBNm9FQUFDa0FBQUFvQUFBQTg0RUFBQ2tBQUFCUFZRQUFmRjRBQUlkbEFBQ1Bld0FBVUFBQUFGUUFBQUJGQUFBQU1nQUFBREVBQUFBeVxcXG5BQUFBTWdBQUFESUFBQUF6QUFBQU1nQUFBRFFBQUFBeUFBQUFOUUFBQURJQUFBQTJBQUFBTWdBQUFEY0FBQUF5QUFBQU9BQUFBRElBQUFcXFxuQTVBQUFBTXdBQUFEQUFBQUF6QUFBQU1RQUFBRE1BQUFBeUFBQUFNd0FBQURNQUFBQXpBQUFBTkFBQUFETUFBQUExQUFBQUFCRUFBQUlSXFxcbkFBQURFUUFBQlJFQUFBWVJBQUFIRVFBQUNSRUFBQXNSQUFBTUVRQUFEaEVBQUE4UkFBQVFFUUFBRVJFQUFCSVJBQUFBRVFBQVlSRUFBQVxcXG5JUkFBQmhFUUFBQXhFQUFHRVJBQUFGRVFBQVlSRUFBQVlSQUFCaEVRQUFCeEVBQUdFUkFBQUpFUUFBWVJFQUFBc1JBQUJoRVFBQURCRUFcXFxuQUdFUkFBQU9FUUFBWVJFQUFBOFJBQUJoRVFBQUVCRUFBR0VSQUFBUkVRQUFZUkVBQUJJUkFBQmhFUUFBRGhFQUFHRVJBQUMzRVFBQUFCXFxcbkVBQUdrUkFBQU1FUUFBYmhFQUFBc1JBQUIwRVFBQUN4RUFBRzRSQUFBQVRnQUFqRTRBQUFsT0FBRGJWZ0FBbEU0QUFHMVJBQUFEVGdBQVxcXG5hMUVBQUYxT0FBQkJVd0FBQ0djQUFHdHdBQUEwYkFBQUtHY0FBTkdSQUFBZlZ3QUE1V1VBQUNwb0FBQUpad0FBUG5rQUFBMVVBQUI1Y2dcXFxuQUFvWXdBQUYxNUFBQzBVZ0FBMkhrQUFEZDFBQUJ6V1FBQWFaQUFBQ3BSQUFCd1V3QUE2R3dBQUFXWUFBQVJUd0FBbVZFQUFHTnJBQUFLXFxcblRnQUFMVTRBQUF0T0FBRG1YUUFBODFNQUFEdFRBQUNYV3dBQVpsc0FBT04yQUFBQlR3QUF4NHdBQUZSVEFBQWNXUUFBTXdBQUFEWUFBQVxcXG5BekFBQUFOd0FBQURNQUFBQTRBQUFBTXdBQUFEa0FBQUEwQUFBQU1BQUFBRFFBQUFBeEFBQUFOQUFBQURJQUFBQTBBQUFBTXdBQUFEUUFcXFxuQUFBMEFBQUFOQUFBQURVQUFBQTBBQUFBTmdBQUFEUUFBQUEzQUFBQU5BQUFBRGdBQUFBMEFBQUFPUUFBQURVQUFBQXdBQUFBTVFBQUFBXFxcbmhuQUFBeUFBQUFDR2NBQURNQUFBQUlad0FBTkFBQUFBaG5BQUExQUFBQUNHY0FBRFlBQUFBSVp3QUFOd0FBQUFobkFBQTRBQUFBQ0djQVxcXG5BRGtBQUFBSVp3QUFNUUFBQURBQUFBQUlad0FBTVFBQUFERUFBQUFJWndBQU1RQUFBRElBQUFBSVp3QUFTQUFBQUdjQUFBQmxBQUFBY2dcXFxuQUFBR2NBQUFCbEFBQUFWZ0FBQUV3QUFBQlVBQUFBUkFBQUFLSXdBQUNrTUFBQXBqQUFBS2d3QUFDcU1BQUFxekFBQUswd0FBQ3ZNQUFBXFxcbnNUQUFBTE13QUFDMU1BQUF0ekFBQUxrd0FBQzdNQUFBdlRBQUFMOHdBQURCTUFBQXhEQUFBTVl3QUFESU1BQUF5akFBQU1zd0FBRE1NQVxcXG5BQXpUQUFBTTR3QUFEUE1BQUEwakFBQU5Vd0FBRFlNQUFBMnpBQUFONHdBQURmTUFBQTREQUFBT0V3QUFEaU1BQUE1REFBQU9Zd0FBRG9cXFxuTUFBQTZUQUFBT293QUFEck1BQUE3REFBQU8wd0FBRHZNQUFBOERBQUFQRXdBQUR5TUFBQTVFNEFBSXhVQUFDaU1BQUF6ekFBQUpvd0FBXFxcbkQ4TUFBQXlEQUFBS0l3QUFEck1BQUExVEFBQUtFd0FBQ2lNQUFBOHpBQUFOZ3dBQUNhTUFBQW9qQUFBS0l3QUFEOE1BQUE2ekFBQUtRd1xcXG5BQURMTUFBQTh6QUFBSzh3QUFDWk1BQUFwREFBQVBNd0FBREJNQUFBcGpBQUFLa3dBQUR6TUFBQXFEQUFBTGt3QUFDdk1BQUEvREFBQU1cXFxuZ3dBQUNaTUFBQXFEQUFBUHd3QUFDck1BQUEvREFBQUtvd0FBRHpNQUFBdVRBQUFLb3dBQUQ4TUFBQTREQUFBS3N3QUFDa01BQUE2akFBXFxcbkFLc3dBQURwTUFBQXd6QUFBTWd3QUFDck1BQUE3VEFBQU9vd0FBRDhNQUFBcXpBQUFKa3dBQUR0TUFBQTh6QUFBS3N3QUFDWk1BQUE4elxcXG5BQUFONHdBQUN0TUFBQW1UQUFBS3N3QUFDWk1BQUFyVEFBQUprd0FBRExNQUFBL0RBQUFLMHdBQURsTUFBQTZqQUFBUHd3QUFDdE1BQUFcXFxubVRBQUFPc3dBQUMvTUFBQW1UQUFBUHd3QUFDdE1BQUE3VEFBQUswd0FBRHRNQUFBcnpBQUFKa3dBQURwTUFBQTREQUFBSzB3QUFEdE1BXFxcbkFBNFRBQUFQd3dBQURJTUFBQTZ6QUFBSzB3QUFEdE1BQUE3ekFBQU1Nd0FBRElNQUFBcnpBQUFKa3dBQURwTUFBQTREQUFBSzh3QUFDWlxcXG5NQUFBNlRBQUFPQXdBQURJTUFBQTh6QUFBSzh3QUFEck1BQUF1ekFBQUprd0FBQ2tNQUFBN1RBQUFLOHdBQUR0TUFBQS9EQUFBTTB3QUFcXFxuQ3hNQUFBL0RBQUFMa3dBQUN6TUFBQTZ6QUFBTW93QUFDek1BQUEvREFBQU5zd0FBQ2FNQUFBdFRBQUFLUXdBQUN2TUFBQTZ6QUFBTFV3XFxcbkFBRHpNQUFBd1RBQUFQd3dBQURnTUFBQXR6QUFBT293QUFEek1BQUFyekFBQUprd0FBQzdNQUFBOHpBQUFNRXdBQUM3TUFBQTh6QUFBTVxcXG5nd0FBQy9NQUFBbVRBQUFQd3dBQUM1TUFBQXhqQUFBSmt3QUFDM01BQUF5REFBQUprd0FBRHJNQUFBeURBQUFQTXdBQURLTUFBQXpqQUFcXFxuQU00d0FBRERNQUFBeURBQUFNOHdBQUNrTUFBQXhEQUFBTTh3QUFDYU1BQUEvREFBQUxzd0FBRHpNQUFBeURBQUFNOHdBQUNhTUFBQS9EXFxcbkFBQU1Rd0FBRFBNQUFBbVRBQUFQd3dBQURzTUFBQTZ6QUFBTkl3QUFDYU1BQUFvakFBQUxrd0FBRElNQUFBNnpBQUFOSXdBQUNhTUFBQVxcXG5yekFBQU9zd0FBRFNNQUFBbWpBQUFMTXdBQURTTUFBQW1UQUFBT3N3QUFEVk1BQUFvVEFBQU9rd0FBRERNQUFBeURBQUFKa3dBQURWTUFcXFxuQUFvekFBQVB3d0FBRElNQUFBMVRBQUFKa3dBQURETUFBQXR6QUFBS2N3QUFEck1BQUExVEFBQU9rd0FBRHpNQUFBMkRBQUFLOHdBQUMvXFxcbk1BQUEvREFBQU9zd0FBRFlNQUFBbWpBQUFMMHdBQURZTUFBQW1qQUFBTXN3QUFEU01BQUEyREFBQU9zd0FBREVNQUFBMkRBQUFKb3dBQVxcXG5Eek1BQUF1VEFBQU5nd0FBQ2FNQUFBL0RBQUFMY3dBQUNaTUFBQTJEQUFBSmt3QUFEOE1BQUF2ekFBQU5zd0FBQ2FNQUFBcERBQUFQTXdcXFxuQUFESU1BQUEyekFBQUprd0FBRHJNQUFBeURBQUFOc3dBQUR6TUFBQTJ6QUFBSm93QUFEek1BQUF5REFBQUprd0FBRGJNQUFBL0RBQUFPXFxcbnN3QUFEYk1BQUEvREFBQVBNd0FBRGVNQUFBcERBQUFLOHdBQUR0TUFBQTNqQUFBS1F3QUFEck1BQUEzakFBQU1Nd0FBRFBNQUFBM2pBQVxcXG5BT3N3QUFDdk1BQUEzakFBQVBNd0FBQzNNQUFBNXpBQUFQTXdBQURmTUFBQXJ6QUFBTzB3QUFEek1BQUEzekFBQU9vd0FBRGZNQUFBNmpcXFxuQUFBTTh3QUFDWk1BQUEvREFBQU9zd0FBRGhNQUFBcXpBQUFKa3dBQURoTUFBQXF6QUFBSmt3QUFESU1BQUE4ekFBQU9Fd0FBRDhNQUFBXFxcbnlEQUFBT3N3QUFEa01BQUEvREFBQU1nd0FBQ1pNQUFBNURBQUFQd3dBQURyTUFBQTVqQUFBS0l3QUFEek1BQUE2akFBQU1Nd0FBRElNQVxcXG5BQTZ6QUFBT293QUFEcE1BQUE2ekFBQU5Jd0FBQ2FNQUFBL0RBQUFPc3dBQUQ4TUFBQTFUQUFBSmt3QUFEck1BQUE3REFBQU9Bd0FBRHNcXFxuTUFBQTh6QUFBTWd3QUFDeE1BQUFtVEFBQVBNd0FBRHZNQUFBd3pBQUFNZ3dBQUF3QUFBQXVYQUFBREVBQUFDNWNBQUFNZ0FBQUxsd0FBXFxcbkF6QUFBQXVYQUFBRFFBQUFDNWNBQUFOUUFBQUxsd0FBQTJBQUFBdVhBQUFEY0FBQUM1Y0FBQU9BQUFBTGx3QUFBNUFBQUF1WEFBQURFQVxcXG5BQUF3QUFBQXVYQUFBREVBQUFBeEFBQUF1WEFBQURFQUFBQXlBQUFBdVhBQUFERUFBQUF6QUFBQXVYQUFBREVBQUFBMEFBQUF1WEFBQURcXFxuRUFBQUExQUFBQXVYQUFBREVBQUFBMkFBQUF1WEFBQURFQUFBQTNBQUFBdVhBQUFERUFBQUE0QUFBQXVYQUFBREVBQUFBNUFBQUF1WEFBXFxcbkFESUFBQUF3QUFBQXVYQUFBRElBQUFBeEFBQUF1WEFBQURJQUFBQXlBQUFBdVhBQUFESUFBQUF6QUFBQXVYQUFBRElBQUFBMEFBQUF1WFxcXG5BQUFHZ0FBQUJRQUFBQVlRQUFBR1FBQUFCaEFBQUFRUUFBQUZVQUFBQmlBQUFBWVFBQUFISUFBQUJ2QUFBQVZnQUFBSEFBQUFCakFBQUFcXFxuWkFBQUFHMEFBQUJrQUFBQWJRQUFBRElBQUFCa0FBQUFiUUFBQURNQUFBQkpBQUFBVlFBQUFITmVBQUFRWWdBQUxXWUFBSXhVQUFBbldRXFxcbkFBWTJzQUFBNW1BQUM3YkFBQUttZ0FBQTlmQUFBYVR3QUFQbmtBQUhBQUFBQkJBQUFBYmdBQUFFRUFBQUM4QXdBQVFRQUFBRzBBQUFCQlxcXG5BQUFBYXdBQUFFRUFBQUJMQUFBQVFnQUFBRTBBQUFCQ0FBQUFSd0FBQUVJQUFBQmpBQUFBWVFBQUFHd0FBQUJyQUFBQVl3QUFBR0VBQUFcXFxuQnNBQUFBY0FBQUFFWUFBQUJ1QUFBQVJnQUFBTHdEQUFCR0FBQUF2QU1BQUdjQUFBQnRBQUFBWndBQUFHc0FBQUJuQUFBQVNBQUFBSG9BXFxcbkFBQnJBQUFBU0FBQUFIb0FBQUJOQUFBQVNBQUFBSG9BQUFCSEFBQUFTQUFBQUhvQUFBQlVBQUFBU0FBQUFIb0FBQUM4QXdBQWJBQUFBR1xcXG4wQUFBQnNBQUFBWkFBQUFHd0FBQUJyQUFBQWJBQUFBR1lBQUFCdEFBQUFiZ0FBQUcwQUFBQzhBd0FBYlFBQUFHMEFBQUJ0QUFBQVl3QUFcXFxuQUcwQUFBQnJBQUFBYlFBQUFHMEFBQUJ0QUFBQU1nQUFBR01BQUFCdEFBQUFNZ0FBQUcwQUFBQXlBQUFBYXdBQUFHMEFBQUF5QUFBQWJRXFxcbkFBQUcwQUFBQXpBQUFBWXdBQUFHMEFBQUF6QUFBQWJRQUFBRE1BQUFCckFBQUFiUUFBQURNQUFBQnRBQUFBRlNJQUFITUFBQUJ0QUFBQVxcXG5GU0lBQUhNQUFBQXlBQUFBVUFBQUFHRUFBQUJyQUFBQVVBQUFBR0VBQUFCTkFBQUFVQUFBQUdFQUFBQkhBQUFBVUFBQUFHRUFBQUJ5QUFcXFxuQUFZUUFBQUdRQUFBQnlBQUFBWVFBQUFHUUFBQUFWSWdBQWN3QUFBSElBQUFCaEFBQUFaQUFBQUJVaUFBQnpBQUFBTWdBQUFIQUFBQUJ6XFxcbkFBQUFiZ0FBQUhNQUFBQzhBd0FBY3dBQUFHMEFBQUJ6QUFBQWNBQUFBRllBQUFCdUFBQUFWZ0FBQUx3REFBQldBQUFBYlFBQUFGWUFBQVxcXG5CckFBQUFWZ0FBQUUwQUFBQldBQUFBY0FBQUFGY0FBQUJ1QUFBQVZ3QUFBTHdEQUFCWEFBQUFiUUFBQUZjQUFBQnJBQUFBVndBQUFFMEFcXFxuQUFCWEFBQUFhd0FBQUtrREFBQk5BQUFBcVFNQUFHRUFBQUF1QUFBQWJRQUFBQzRBQUFCQ0FBQUFjUUFBQUdNQUFBQmpBQUFBWXdBQUFHXFxcblFBQUFCREFBQUFGU0lBQUdzQUFBQm5BQUFBUXdBQUFHOEFBQUF1QUFBQVpBQUFBRUlBQUFCSEFBQUFlUUFBQUdnQUFBQmhBQUFBU0FBQVxcXG5BRkFBQUFCcEFBQUFiZ0FBQUVzQUFBQkxBQUFBU3dBQUFFMEFBQUJyQUFBQWRBQUFBR3dBQUFCdEFBQUFiQUFBQUc0QUFBQnNBQUFBYndcXFxuQUFBR2NBQUFCc0FBQUFlQUFBQUcwQUFBQmlBQUFBYlFBQUFHa0FBQUJzQUFBQWJRQUFBRzhBQUFCc0FBQUFVQUFBQUVnQUFBQndBQUFBXFxcbkxnQUFBRzBBQUFBdUFBQUFVQUFBQUZBQUFBQk5BQUFBVUFBQUFGSUFBQUJ6QUFBQWNnQUFBRk1BQUFCMkFBQUFWd0FBQUdJQUFBQldBQVxcXG5BQUZTSUFBRzBBQUFCQkFBQUFGU0lBQUcwQUFBQXhBQUFBNVdVQUFESUFBQURsWlFBQU13QUFBT1ZsQUFBMEFBQUE1V1VBQURVQUFBRGxcXFxuWlFBQU5nQUFBT1ZsQUFBM0FBQUE1V1VBQURnQUFBRGxaUUFBT1FBQUFPVmxBQUF4QUFBQU1BQUFBT1ZsQUFBeEFBQUFNUUFBQU9WbEFBXFxcbkF4QUFBQU1nQUFBT1ZsQUFBeEFBQUFNd0FBQU9WbEFBQXhBQUFBTkFBQUFPVmxBQUF4QUFBQU5RQUFBT1ZsQUFBeEFBQUFOZ0FBQU9WbFxcXG5BQUF4QUFBQU53QUFBT1ZsQUFBeEFBQUFPQUFBQU9WbEFBQXhBQUFBT1FBQUFPVmxBQUF5QUFBQU1BQUFBT1ZsQUFBeUFBQUFNUUFBQU9cXFxuVmxBQUF5QUFBQU1nQUFBT1ZsQUFBeUFBQUFNd0FBQU9WbEFBQXlBQUFBTkFBQUFPVmxBQUF5QUFBQU5RQUFBT1ZsQUFBeUFBQUFOZ0FBXFxcbkFPVmxBQUF5QUFBQU53QUFBT1ZsQUFBeUFBQUFPQUFBQU9WbEFBQXlBQUFBT1FBQUFPVmxBQUF6QUFBQU1BQUFBT1ZsQUFBekFBQUFNUVxcXG5BQUFPVmxBQUJuQUFBQVlRQUFBR3dBQUFCS0JBQUFUQVFBQUcrbkFBQkRBQUFBUmdBQUFGRUFBQUFtQVFBQVV3RUFBQ2VuQUFBM3F3QUFcXFxuYXdJQUFGS3JBQUNOQWdBQVpnQUFBR1lBQUFCbUFBQUFhUUFBQUdZQUFBQnNBQUFBWmdBQUFHWUFBQUJwQUFBQVpnQUFBR1lBQUFCc0FBXFxcbkFBY3dBQUFIUUFBQUJ6QUFBQWRBQUFBSFFGQUFCMkJRQUFkQVVBQUdVRkFBQjBCUUFBYXdVQUFINEZBQUIyQlFBQWRBVUFBRzBGQUFEaVxcXG5CUUFBMEFVQUFOTUZBQURVQlFBQTJ3VUFBTndGQUFEZEJRQUE2QVVBQU9vRkFBQXJBQUFBMEFVQUFOd0ZBQUJ4QmdBQWNRWUFBSHNHQUFcXFxuQjdCZ0FBZXdZQUFIc0dBQUIrQmdBQWZnWUFBSDRHQUFCK0JnQUFnQVlBQUlBR0FBQ0FCZ0FBZ0FZQUFIb0dBQUI2QmdBQWVnWUFBSG9HXFxcbkFBQi9CZ0FBZndZQUFIOEdBQUIvQmdBQWVRWUFBSGtHQUFCNUJnQUFlUVlBQUtRR0FBQ2tCZ0FBcEFZQUFLUUdBQUNtQmdBQXBnWUFBS1xcXG5ZR0FBQ21CZ0FBaEFZQUFJUUdBQUNFQmdBQWhBWUFBSU1HQUFDREJnQUFnd1lBQUlNR0FBQ0dCZ0FBaGdZQUFJWUdBQUNHQmdBQWh3WUFcXFxuQUljR0FBQ0hCZ0FBaHdZQUFJMEdBQUNOQmdBQWpBWUFBSXdHQUFDT0JnQUFqZ1lBQUlnR0FBQ0lCZ0FBbUFZQUFKZ0dBQUNSQmdBQWtRXFxcbllBQUtrR0FBQ3BCZ0FBcVFZQUFLa0dBQUN2QmdBQXJ3WUFBSzhHQUFDdkJnQUFzd1lBQUxNR0FBQ3pCZ0FBc3dZQUFMRUdBQUN4QmdBQVxcXG5zUVlBQUxFR0FBQzZCZ0FBdWdZQUFMc0dBQUM3QmdBQXV3WUFBTHNHQUFEVkJnQUFWQVlBQU5VR0FBQlVCZ0FBd1FZQUFNRUdBQURCQmdcXFxuQUF3UVlBQUw0R0FBQytCZ0FBdmdZQUFMNEdBQURTQmdBQTBnWUFBTklHQUFCVUJnQUEwZ1lBQUZRR0FBQ3RCZ0FBclFZQUFLMEdBQUN0XFxcbkJnQUF4d1lBQU1jR0FBREdCZ0FBeGdZQUFNZ0dBQURJQmdBQXh3WUFBSFFHQUFETEJnQUF5d1lBQU1VR0FBREZCZ0FBeVFZQUFNa0dBQVxcXG5EUUJnQUEwQVlBQU5BR0FBRFFCZ0FBU1FZQUFFa0dBQUJLQmdBQVZBWUFBQ2NHQUFCS0JnQUFWQVlBQUNjR0FBQktCZ0FBVkFZQUFOVUdcXFxuQUFCS0JnQUFWQVlBQU5VR0FBQktCZ0FBVkFZQUFFZ0dBQUJLQmdBQVZBWUFBRWdHQUFCS0JnQUFWQVlBQU1jR0FBQktCZ0FBVkFZQUFNXFxcbmNHQUFCS0JnQUFWQVlBQU1ZR0FBQktCZ0FBVkFZQUFNWUdBQUJLQmdBQVZBWUFBTWdHQUFCS0JnQUFWQVlBQU1nR0FBQktCZ0FBVkFZQVxcXG5BTkFHQUFCS0JnQUFWQVlBQU5BR0FBQktCZ0FBVkFZQUFOQUdBQUJLQmdBQVZBWUFBRWtHQUFCS0JnQUFWQVlBQUVrR0FBQktCZ0FBVkFcXFxuWUFBRWtHQUFETUJnQUF6QVlBQU13R0FBRE1CZ0FBU2dZQUFGUUdBQUFzQmdBQVNnWUFBRlFHQUFBdEJnQUFTZ1lBQUZRR0FBQkZCZ0FBXFxcblNnWUFBRlFHQUFCSkJnQUFTZ1lBQUZRR0FBQktCZ0FBS0FZQUFDd0dBQUFvQmdBQUxRWUFBQ2dHQUFBdUJnQUFLQVlBQUVVR0FBQW9CZ1xcXG5BQVNRWUFBQ2dHQUFCS0JnQUFLZ1lBQUN3R0FBQXFCZ0FBTFFZQUFDb0dBQUF1QmdBQUtnWUFBRVVHQUFBcUJnQUFTUVlBQUNvR0FBQktcXFxuQmdBQUt3WUFBQ3dHQUFBckJnQUFSUVlBQUNzR0FBQkpCZ0FBS3dZQUFFb0dBQUFzQmdBQUxRWUFBQ3dHQUFCRkJnQUFMUVlBQUN3R0FBXFxcbkF0QmdBQVJRWUFBQzRHQUFBc0JnQUFMZ1lBQUMwR0FBQXVCZ0FBUlFZQUFETUdBQUFzQmdBQU13WUFBQzBHQUFBekJnQUFMZ1lBQURNR1xcXG5BQUJGQmdBQU5RWUFBQzBHQUFBMUJnQUFSUVlBQURZR0FBQXNCZ0FBTmdZQUFDMEdBQUEyQmdBQUxnWUFBRFlHQUFCRkJnQUFOd1lBQUNcXFxuMEdBQUEzQmdBQVJRWUFBRGdHQUFCRkJnQUFPUVlBQUN3R0FBQTVCZ0FBUlFZQUFEb0dBQUFzQmdBQU9nWUFBRVVHQUFCQkJnQUFMQVlBXFxcbkFFRUdBQUF0QmdBQVFRWUFBQzRHQUFCQkJnQUFSUVlBQUVFR0FBQkpCZ0FBUVFZQUFFb0dBQUJDQmdBQUxRWUFBRUlHQUFCRkJnQUFRZ1xcXG5ZQUFFa0dBQUJDQmdBQVNnWUFBRU1HQUFBbkJnQUFRd1lBQUN3R0FBQkRCZ0FBTFFZQUFFTUdBQUF1QmdBQVF3WUFBRVFHQUFCREJnQUFcXFxuUlFZQUFFTUdBQUJKQmdBQVF3WUFBRW9HQUFCRUJnQUFMQVlBQUVRR0FBQXRCZ0FBUkFZQUFDNEdBQUJFQmdBQVJRWUFBRVFHQUFCSkJnXFxcbkFBUkFZQUFFb0dBQUJGQmdBQUxBWUFBRVVHQUFBdEJnQUFSUVlBQUM0R0FBQkZCZ0FBUlFZQUFFVUdBQUJKQmdBQVJRWUFBRW9HQUFCR1xcXG5CZ0FBTEFZQUFFWUdBQUF0QmdBQVJnWUFBQzRHQUFCR0JnQUFSUVlBQUVZR0FBQkpCZ0FBUmdZQUFFb0dBQUJIQmdBQUxBWUFBRWNHQUFcXFxuQkZCZ0FBUndZQUFFa0dBQUJIQmdBQVNnWUFBRW9HQUFBc0JnQUFTZ1lBQUMwR0FBQktCZ0FBTGdZQUFFb0dBQUJGQmdBQVNnWUFBRWtHXFxcbkFBQktCZ0FBU2dZQUFEQUdBQUJ3QmdBQU1RWUFBSEFHQUFCSkJnQUFjQVlBQUNBQUFBQk1CZ0FBVVFZQUFDQUFBQUJOQmdBQVVRWUFBQ1xcXG5BQUFBQk9CZ0FBVVFZQUFDQUFBQUJQQmdBQVVRWUFBQ0FBQUFCUUJnQUFVUVlBQUNBQUFBQlJCZ0FBY0FZQUFFb0dBQUJVQmdBQU1RWUFcXFxuQUVvR0FBQlVCZ0FBTWdZQUFFb0dBQUJVQmdBQVJRWUFBRW9HQUFCVUJnQUFSZ1lBQUVvR0FBQlVCZ0FBU1FZQUFFb0dBQUJVQmdBQVNnXFxcbllBQUNnR0FBQXhCZ0FBS0FZQUFESUdBQUFvQmdBQVJRWUFBQ2dHQUFCR0JnQUFLQVlBQUVrR0FBQW9CZ0FBU2dZQUFDb0dBQUF4QmdBQVxcXG5LZ1lBQURJR0FBQXFCZ0FBUlFZQUFDb0dBQUJHQmdBQUtnWUFBRWtHQUFBcUJnQUFTZ1lBQUNzR0FBQXhCZ0FBS3dZQUFESUdBQUFyQmdcXFxuQUFSUVlBQUNzR0FBQkdCZ0FBS3dZQUFFa0dBQUFyQmdBQVNnWUFBRUVHQUFCSkJnQUFRUVlBQUVvR0FBQkNCZ0FBU1FZQUFFSUdBQUJLXFxcbkJnQUFRd1lBQUNjR0FBQkRCZ0FBUkFZQUFFTUdBQUJGQmdBQVF3WUFBRWtHQUFCREJnQUFTZ1lBQUVRR0FBQkZCZ0FBUkFZQUFFa0dBQVxcXG5CRUJnQUFTZ1lBQUVVR0FBQW5CZ0FBUlFZQUFFVUdBQUJHQmdBQU1RWUFBRVlHQUFBeUJnQUFSZ1lBQUVVR0FBQkdCZ0FBUmdZQUFFWUdcXFxuQUFCSkJnQUFSZ1lBQUVvR0FBQkpCZ0FBY0FZQUFFb0dBQUF4QmdBQVNnWUFBRElHQUFCS0JnQUFSUVlBQUVvR0FBQkdCZ0FBU2dZQUFFXFxcbmtHQUFCS0JnQUFTZ1lBQUVvR0FBQlVCZ0FBTEFZQUFFb0dBQUJVQmdBQUxRWUFBRW9HQUFCVUJnQUFMZ1lBQUVvR0FBQlVCZ0FBUlFZQVxcXG5BRW9HQUFCVUJnQUFSd1lBQUNnR0FBQXNCZ0FBS0FZQUFDMEdBQUFvQmdBQUxnWUFBQ2dHQUFCRkJnQUFLQVlBQUVjR0FBQXFCZ0FBTEFcXFxuWUFBQ29HQUFBdEJnQUFLZ1lBQUM0R0FBQXFCZ0FBUlFZQUFDb0dBQUJIQmdBQUt3WUFBRVVHQUFBc0JnQUFMUVlBQUN3R0FBQkZCZ0FBXFxcbkxRWUFBQ3dHQUFBdEJnQUFSUVlBQUM0R0FBQXNCZ0FBTGdZQUFFVUdBQUF6QmdBQUxBWUFBRE1HQUFBdEJnQUFNd1lBQUM0R0FBQXpCZ1xcXG5BQVJRWUFBRFVHQUFBdEJnQUFOUVlBQUM0R0FBQTFCZ0FBUlFZQUFEWUdBQUFzQmdBQU5nWUFBQzBHQUFBMkJnQUFMZ1lBQURZR0FBQkZcXFxuQmdBQU53WUFBQzBHQUFBNEJnQUFSUVlBQURrR0FBQXNCZ0FBT1FZQUFFVUdBQUE2QmdBQUxBWUFBRG9HQUFCRkJnQUFRUVlBQUN3R0FBXFxcbkJCQmdBQUxRWUFBRUVHQUFBdUJnQUFRUVlBQUVVR0FBQkNCZ0FBTFFZQUFFSUdBQUJGQmdBQVF3WUFBQ3dHQUFCREJnQUFMUVlBQUVNR1xcXG5BQUF1QmdBQVF3WUFBRVFHQUFCREJnQUFSUVlBQUVRR0FBQXNCZ0FBUkFZQUFDMEdBQUJFQmdBQUxnWUFBRVFHQUFCRkJnQUFSQVlBQUVcXFxuY0dBQUJGQmdBQUxBWUFBRVVHQUFBdEJnQUFSUVlBQUM0R0FBQkZCZ0FBUlFZQUFFWUdBQUFzQmdBQVJnWUFBQzBHQUFCR0JnQUFMZ1lBXFxcbkFFWUdBQUJGQmdBQVJnWUFBRWNHQUFCSEJnQUFMQVlBQUVjR0FBQkZCZ0FBUndZQUFIQUdBQUJLQmdBQUxBWUFBRW9HQUFBdEJnQUFTZ1xcXG5ZQUFDNEdBQUJLQmdBQVJRWUFBRW9HQUFCSEJnQUFTZ1lBQUZRR0FBQkZCZ0FBU2dZQUFGUUdBQUJIQmdBQUtBWUFBRVVHQUFBb0JnQUFcXFxuUndZQUFDb0dBQUJGQmdBQUtnWUFBRWNHQUFBckJnQUFSUVlBQUNzR0FBQkhCZ0FBTXdZQUFFVUdBQUF6QmdBQVJ3WUFBRFFHQUFCRkJnXFxcbkFBTkFZQUFFY0dBQUJEQmdBQVJBWUFBRU1HQUFCRkJnQUFSQVlBQUVVR0FBQkdCZ0FBUlFZQUFFWUdBQUJIQmdBQVNnWUFBRVVHQUFCS1xcXG5CZ0FBUndZQUFFQUdBQUJPQmdBQVVRWUFBRUFHQUFCUEJnQUFVUVlBQUVBR0FBQlFCZ0FBVVFZQUFEY0dBQUJKQmdBQU53WUFBRW9HQUFcXFxuQTVCZ0FBU1FZQUFEa0dBQUJLQmdBQU9nWUFBRWtHQUFBNkJnQUFTZ1lBQURNR0FBQkpCZ0FBTXdZQUFFb0dBQUEwQmdBQVNRWUFBRFFHXFxcbkFBQktCZ0FBTFFZQUFFa0dBQUF0QmdBQVNnWUFBQ3dHQUFCSkJnQUFMQVlBQUVvR0FBQXVCZ0FBU1FZQUFDNEdBQUJLQmdBQU5RWUFBRVxcXG5rR0FBQTFCZ0FBU2dZQUFEWUdBQUJKQmdBQU5nWUFBRW9HQUFBMEJnQUFMQVlBQURRR0FBQXRCZ0FBTkFZQUFDNEdBQUEwQmdBQVJRWUFcXFxuQURRR0FBQXhCZ0FBTXdZQUFERUdBQUExQmdBQU1RWUFBRFlHQUFBeEJnQUFOd1lBQUVrR0FBQTNCZ0FBU2dZQUFEa0dBQUJKQmdBQU9RXFxcbllBQUVvR0FBQTZCZ0FBU1FZQUFEb0dBQUJLQmdBQU13WUFBRWtHQUFBekJnQUFTZ1lBQURRR0FBQkpCZ0FBTkFZQUFFb0dBQUF0QmdBQVxcXG5TUVlBQUMwR0FBQktCZ0FBTEFZQUFFa0dBQUFzQmdBQVNnWUFBQzRHQUFCSkJnQUFMZ1lBQUVvR0FBQTFCZ0FBU1FZQUFEVUdBQUJLQmdcXFxuQUFOZ1lBQUVrR0FBQTJCZ0FBU2dZQUFEUUdBQUFzQmdBQU5BWUFBQzBHQUFBMEJnQUFMZ1lBQURRR0FBQkZCZ0FBTkFZQUFERUdBQUF6XFxcbkJnQUFNUVlBQURVR0FBQXhCZ0FBTmdZQUFERUdBQUEwQmdBQUxBWUFBRFFHQUFBdEJnQUFOQVlBQUM0R0FBQTBCZ0FBUlFZQUFETUdBQVxcXG5CSEJnQUFOQVlBQUVjR0FBQTNCZ0FBUlFZQUFETUdBQUFzQmdBQU13WUFBQzBHQUFBekJnQUFMZ1lBQURRR0FBQXNCZ0FBTkFZQUFDMEdcXFxuQUFBMEJnQUFMZ1lBQURjR0FBQkZCZ0FBT0FZQUFFVUdBQUFuQmdBQVN3WUFBQ2NHQUFCTEJnQUFLZ1lBQUN3R0FBQkZCZ0FBS2dZQUFDXFxcbjBHQUFBc0JnQUFLZ1lBQUMwR0FBQXNCZ0FBS2dZQUFDMEdBQUJGQmdBQUtnWUFBQzRHQUFCRkJnQUFLZ1lBQUVVR0FBQXNCZ0FBS2dZQVxcXG5BRVVHQUFBdEJnQUFLZ1lBQUVVR0FBQXVCZ0FBTEFZQUFFVUdBQUF0QmdBQUxBWUFBRVVHQUFBdEJnQUFMUVlBQUVVR0FBQktCZ0FBTFFcXFxuWUFBRVVHQUFCSkJnQUFNd1lBQUMwR0FBQXNCZ0FBTXdZQUFDd0dBQUF0QmdBQU13WUFBQ3dHQUFCSkJnQUFNd1lBQUVVR0FBQXRCZ0FBXFxcbk13WUFBRVVHQUFBdEJnQUFNd1lBQUVVR0FBQXNCZ0FBTXdZQUFFVUdBQUJGQmdBQU13WUFBRVVHQUFCRkJnQUFOUVlBQUMwR0FBQXRCZ1xcXG5BQU5RWUFBQzBHQUFBdEJnQUFOUVlBQUVVR0FBQkZCZ0FBTkFZQUFDMEdBQUJGQmdBQU5BWUFBQzBHQUFCRkJnQUFOQVlBQUN3R0FBQktcXFxuQmdBQU5BWUFBRVVHQUFBdUJnQUFOQVlBQUVVR0FBQXVCZ0FBTkFZQUFFVUdBQUJGQmdBQU5BWUFBRVVHQUFCRkJnQUFOZ1lBQUMwR0FBXFxcbkJKQmdBQU5nWUFBQzRHQUFCRkJnQUFOZ1lBQUM0R0FBQkZCZ0FBTndZQUFFVUdBQUF0QmdBQU53WUFBRVVHQUFBdEJnQUFOd1lBQUVVR1xcXG5BQUJGQmdBQU53WUFBRVVHQUFCS0JnQUFPUVlBQUN3R0FBQkZCZ0FBT1FZQUFFVUdBQUJGQmdBQU9RWUFBRVVHQUFCRkJnQUFPUVlBQUVcXFxuVUdBQUJKQmdBQU9nWUFBRVVHQUFCRkJnQUFPZ1lBQUVVR0FBQktCZ0FBT2dZQUFFVUdBQUJKQmdBQVFRWUFBQzRHQUFCRkJnQUFRUVlBXFxcbkFDNEdBQUJGQmdBQVFnWUFBRVVHQUFBdEJnQUFRZ1lBQUVVR0FBQkZCZ0FBUkFZQUFDMEdBQUJGQmdBQVJBWUFBQzBHQUFCS0JnQUFSQVxcXG5ZQUFDMEdBQUJKQmdBQVJBWUFBQ3dHQUFBc0JnQUFSQVlBQUN3R0FBQXNCZ0FBUkFZQUFDNEdBQUJGQmdBQVJBWUFBQzRHQUFCRkJnQUFcXFxuUkFZQUFFVUdBQUF0QmdBQVJBWUFBRVVHQUFBdEJnQUFSUVlBQUMwR0FBQXNCZ0FBUlFZQUFDMEdBQUJGQmdBQVJRWUFBQzBHQUFCS0JnXFxcbkFBUlFZQUFDd0dBQUF0QmdBQVJRWUFBQ3dHQUFCRkJnQUFSUVlBQUM0R0FBQXNCZ0FBUlFZQUFDNEdBQUJGQmdBQVJRWUFBQ3dHQUFBdVxcXG5CZ0FBUndZQUFFVUdBQUFzQmdBQVJ3WUFBRVVHQUFCRkJnQUFSZ1lBQUMwR0FBQkZCZ0FBUmdZQUFDMEdBQUJKQmdBQVJnWUFBQ3dHQUFcXFxuQkZCZ0FBUmdZQUFDd0dBQUJGQmdBQVJnWUFBQ3dHQUFCSkJnQUFSZ1lBQUVVR0FBQktCZ0FBUmdZQUFFVUdBQUJKQmdBQVNnWUFBRVVHXFxcbkFBQkZCZ0FBU2dZQUFFVUdBQUJGQmdBQUtBWUFBQzRHQUFCS0JnQUFLZ1lBQUN3R0FBQktCZ0FBS2dZQUFDd0dBQUJKQmdBQUtnWUFBQ1xcXG40R0FBQktCZ0FBS2dZQUFDNEdBQUJKQmdBQUtnWUFBRVVHQUFCS0JnQUFLZ1lBQUVVR0FBQkpCZ0FBTEFZQUFFVUdBQUJLQmdBQUxBWUFcXFxuQUMwR0FBQkpCZ0FBTEFZQUFFVUdBQUJKQmdBQU13WUFBQzRHQUFCSkJnQUFOUVlBQUMwR0FBQktCZ0FBTkFZQUFDMEdBQUJLQmdBQU5nXFxcbllBQUMwR0FBQktCZ0FBUkFZQUFDd0dBQUJLQmdBQVJBWUFBRVVHQUFCS0JnQUFTZ1lBQUMwR0FBQktCZ0FBU2dZQUFDd0dBQUJLQmdBQVxcXG5TZ1lBQUVVR0FBQktCZ0FBUlFZQUFFVUdBQUJLQmdBQVFnWUFBRVVHQUFCS0JnQUFSZ1lBQUMwR0FBQktCZ0FBUWdZQUFFVUdBQUF0QmdcXFxuQUFSQVlBQUMwR0FBQkZCZ0FBT1FZQUFFVUdBQUJLQmdBQVF3WUFBRVVHQUFCS0JnQUFSZ1lBQUN3R0FBQXRCZ0FBUlFZQUFDNEdBQUJLXFxcbkJnQUFSQVlBQUN3R0FBQkZCZ0FBUXdZQUFFVUdBQUJGQmdBQVJBWUFBQ3dHQUFCRkJnQUFSZ1lBQUN3R0FBQXRCZ0FBTEFZQUFDMEdBQVxcXG5CS0JnQUFMUVlBQUN3R0FBQktCZ0FBUlFZQUFDd0dBQUJLQmdBQVFRWUFBRVVHQUFCS0JnQUFLQVlBQUMwR0FBQktCZ0FBUXdZQUFFVUdcXFxuQUFCRkJnQUFPUVlBQUN3R0FBQkZCZ0FBTlFZQUFFVUdBQUJGQmdBQU13WUFBQzRHQUFCS0JnQUFSZ1lBQUN3R0FBQktCZ0FBTlFZQUFFXFxcblFHQUFEU0JnQUFRZ1lBQUVRR0FBRFNCZ0FBSndZQUFFUUdBQUJFQmdBQVJ3WUFBQ2NHQUFCREJnQUFLQVlBQURFR0FBQkZCZ0FBTFFZQVxcXG5BRVVHQUFBdkJnQUFOUVlBQUVRR0FBQTVCZ0FBUlFZQUFERUdBQUF6QmdBQVNBWUFBRVFHQUFBNUJnQUFSQVlBQUVvR0FBQkhCZ0FBU0FcXFxuWUFBRE1HQUFCRUJnQUFSUVlBQURVR0FBQkVCZ0FBU1FZQUFEVUdBQUJFQmdBQVNRWUFBQ0FBQUFBbkJnQUFSQVlBQUVRR0FBQkhCZ0FBXFxcbklBQUFBRGtHQUFCRUJnQUFTZ1lBQUVjR0FBQWdBQUFBU0FZQUFETUdBQUJFQmdBQVJRWUFBQ3dHQUFCRUJnQUFJQUFBQUN3R0FBQkVCZ1xcXG5BQUp3WUFBRVFHQUFCSEJnQUFNUVlBQU13R0FBQW5CZ0FBUkFZQUFDd0FBQUFCTUFBQUFqQUFBRG9BQUFBN0FBQUFJUUFBQUQ4QUFBQVdcXFxuTUFBQUZ6QUFBQzRBQUFBdUFBQUFMZ0FBQUM0QUFBQXVBQUFBRkNBQUFCTWdBQUJmQUFBQVh3QUFBQ2dBQUFBcEFBQUFld0FBQUgwQUFBXFxcbkFVTUFBQUZUQUFBQkF3QUFBUk1BQUFDakFBQUFzd0FBQUlNQUFBQ1RBQUFBd3dBQUFOTUFBQURqQUFBQTh3QUFCYkFBQUFYUUFBQUNBQVxcXG5BQUFGQXdBQUlBQUFBQVVEQUFBZ0FBQUFCUU1BQUNBQUFBQUZBd0FBWHdBQUFGOEFBQUJmQUFBQUxBQUFBQUV3QUFBdUFBQUFPd0FBQURcXFxub0FBQUEvQUFBQUlRQUFBQlFnQUFBb0FBQUFLUUFBQUhzQUFBQjlBQUFBRkRBQUFCVXdBQUFqQUFBQUpnQUFBQ29BQUFBckFBQUFMUUFBXFxcbkFEd0FBQUErQUFBQVBRQUFBRndBQUFBa0FBQUFKUUFBQUVBQUFBQWdBQUFBU3dZQUFFQUdBQUJMQmdBQUlBQUFBRXdHQUFBZ0FBQUFUUVxcXG5ZQUFDQUFBQUJPQmdBQVFBWUFBRTRHQUFBZ0FBQUFUd1lBQUVBR0FBQlBCZ0FBSUFBQUFGQUdBQUJBQmdBQVVBWUFBQ0FBQUFCUkJnQUFcXFxuUUFZQUFGRUdBQUFnQUFBQVVnWUFBRUFHQUFCU0JnQUFJUVlBQUNjR0FBQlRCZ0FBSndZQUFGTUdBQUFuQmdBQVZBWUFBQ2NHQUFCVUJnXFxcbkFBU0FZQUFGUUdBQUJJQmdBQVZBWUFBQ2NHQUFCVkJnQUFKd1lBQUZVR0FBQktCZ0FBVkFZQUFFb0dBQUJVQmdBQVNnWUFBRlFHQUFCS1xcXG5CZ0FBVkFZQUFDY0dBQUFuQmdBQUtBWUFBQ2dHQUFBb0JnQUFLQVlBQUNrR0FBQXBCZ0FBS2dZQUFDb0dBQUFxQmdBQUtnWUFBQ3NHQUFcXFxuQXJCZ0FBS3dZQUFDc0dBQUFzQmdBQUxBWUFBQ3dHQUFBc0JnQUFMUVlBQUMwR0FBQXRCZ0FBTFFZQUFDNEdBQUF1QmdBQUxnWUFBQzRHXFxcbkFBQXZCZ0FBTHdZQUFEQUdBQUF3QmdBQU1RWUFBREVHQUFBeUJnQUFNZ1lBQURNR0FBQXpCZ0FBTXdZQUFETUdBQUEwQmdBQU5BWUFBRFxcXG5RR0FBQTBCZ0FBTlFZQUFEVUdBQUExQmdBQU5RWUFBRFlHQUFBMkJnQUFOZ1lBQURZR0FBQTNCZ0FBTndZQUFEY0dBQUEzQmdBQU9BWUFcXFxuQURnR0FBQTRCZ0FBT0FZQUFEa0dBQUE1QmdBQU9RWUFBRGtHQUFBNkJnQUFPZ1lBQURvR0FBQTZCZ0FBUVFZQUFFRUdBQUJCQmdBQVFRXFxcbllBQUVJR0FBQkNCZ0FBUWdZQUFFSUdBQUJEQmdBQVF3WUFBRU1HQUFCREJnQUFSQVlBQUVRR0FBQkVCZ0FBUkFZQUFFVUdBQUJGQmdBQVxcXG5SUVlBQUVVR0FBQkdCZ0FBUmdZQUFFWUdBQUJHQmdBQVJ3WUFBRWNHQUFCSEJnQUFSd1lBQUVnR0FBQklCZ0FBU1FZQUFFa0dBQUJLQmdcXFxuQUFTZ1lBQUVvR0FBQktCZ0FBUkFZQUFDY0dBQUJUQmdBQVJBWUFBQ2NHQUFCVEJnQUFSQVlBQUNjR0FBQlVCZ0FBUkFZQUFDY0dBQUJVXFxcbkJnQUFSQVlBQUNjR0FBQlZCZ0FBUkFZQUFDY0dBQUJWQmdBQVJBWUFBQ2NHQUFCRUJnQUFKd1lBQUNFQUFBQWlBQUFBSXdBQUFDUUFBQVxcXG5BbEFBQUFKZ0FBQUNjQUFBQW9BQUFBS1FBQUFDb0FBQUFyQUFBQUxBQUFBQzBBQUFBdUFBQUFMd0FBQURBQUFBQXhBQUFBTWdBQUFETUFcXFxuQUFBMEFBQUFOUUFBQURZQUFBQTNBQUFBT0FBQUFEa0FBQUE2QUFBQU93QUFBRHdBQUFBOUFBQUFQZ0FBQUQ4QUFBQkFBQUFBUVFBQUFFXFxcbklBQUFCREFBQUFSQUFBQUVVQUFBQkdBQUFBUndBQUFFZ0FBQUJKQUFBQVNnQUFBRXNBQUFCTUFBQUFUUUFBQUU0QUFBQlBBQUFBVUFBQVxcXG5BRkVBQUFCU0FBQUFVd0FBQUZRQUFBQlZBQUFBVmdBQUFGY0FBQUJZQUFBQVdRQUFBRm9BQUFCYkFBQUFYQUFBQUYwQUFBQmVBQUFBWHdcXFxuQUFBR0FBQUFCaEFBQUFZZ0FBQUdNQUFBQmtBQUFBWlFBQUFHWUFBQUJuQUFBQWFBQUFBR2tBQUFCcUFBQUFhd0FBQUd3QUFBQnRBQUFBXFxcbmJnQUFBRzhBQUFCd0FBQUFjUUFBQUhJQUFBQnpBQUFBZEFBQUFIVUFBQUIyQUFBQWR3QUFBSGdBQUFCNUFBQUFlZ0FBQUhzQUFBQjhBQVxcXG5BQWZRQUFBSDRBQUFDRktRQUFoaWtBQUFJd0FBQU1NQUFBRFRBQUFBRXdBQUQ3TUFBQThqQUFBS0V3QUFDak1BQUFwVEFBQUtjd0FBQ3BcXFxuTUFBQTR6QUFBT1V3QUFEbk1BQUF3ekFBQVB3d0FBQ2lNQUFBcERBQUFLWXdBQUNvTUFBQXFqQUFBS3N3QUFDdE1BQUFyekFBQUxFd0FBXFxcbkN6TUFBQXRUQUFBTGN3QUFDNU1BQUF1ekFBQUwwd0FBQy9NQUFBd1RBQUFNUXdBQURHTUFBQXlEQUFBTW93QUFETE1BQUF6REFBQU0wd1xcXG5BQURPTUFBQXp6QUFBTkl3QUFEVk1BQUEyREFBQU5zd0FBRGVNQUFBM3pBQUFPQXdBQURoTUFBQTRqQUFBT1F3QUFEbU1BQUE2REFBQU9cXFxua3dBQURxTUFBQTZ6QUFBT3d3QUFEdE1BQUE3ekFBQVBNd0FBQ1pNQUFBbWpBQUFHQVJBQUFBRVFBQUFSRUFBS29SQUFBQ0VRQUFyQkVBXFxcbkFLMFJBQUFERVFBQUJCRUFBQVVSQUFDd0VRQUFzUkVBQUxJUkFBQ3pFUUFBdEJFQUFMVVJBQUFhRVFBQUJoRUFBQWNSQUFBSUVRQUFJUlxcXG5FQUFBa1JBQUFLRVFBQUN4RUFBQXdSQUFBTkVRQUFEaEVBQUE4UkFBQVFFUUFBRVJFQUFCSVJBQUJoRVFBQVloRUFBR01SQUFCa0VRQUFcXFxuWlJFQUFHWVJBQUJuRVFBQWFCRUFBR2tSQUFCcUVRQUFheEVBQUd3UkFBQnRFUUFBYmhFQUFHOFJBQUJ3RVFBQWNSRUFBSElSQUFCekVRXFxcbkFBZEJFQUFIVVJBQUNpQUFBQW93QUFBS3dBQUFBZ0FBQUFCQU1BQUtZQUFBQ2xBQUFBcVNBQUFBSWxBQUNRSVFBQWtTRUFBSkloQUFDVFxcXG5JUUFBb0NVQUFNc2xBQURRQWdBQTBRSUFBT1lBQUFDWkFnQUFVd0lBQUtNQ0FBQm1xd0FBcFFJQUFLUUNBQUJXQWdBQVZ3SUFBSkVkQUFcXFxuQllBZ0FBWGdJQUFLa0NBQUJrQWdBQVlnSUFBR0FDQUFDYkFnQUFKd0VBQUp3Q0FBQm5BZ0FBaEFJQUFLb0NBQUNyQWdBQWJBSUFBQVRmXFxcbkFRQ09wd0FBYmdJQUFBWGZBUUNPQWdBQUJ0OEJBUGdBQUFCMkFnQUFkd0lBQUhFQUFBQjZBZ0FBQ044QkFIMENBQUIrQWdBQWdBSUFBS1xcXG5nQ0FBQ21BZ0FBWjZzQUFLY0NBQUNJQWdBQWNTd0FBSThDQUFDaEFnQUFvZ0lBQUpnQ0FBREFBUUFBd1FFQUFNSUJBQUFLM3dFQUh0OEJcXFxuQUVFQUFBQkNBQUFBUXdBQUFFUUFBQUJGQUFBQVJnQUFBRWNBQUFCSUFBQUFTUUFBQUVvQUFBQkxBQUFBVEFBQUFFMEFBQUJPQUFBQVR3XFxcbkFBQUZBQUFBQlJBQUFBVWdBQUFGTUFBQUJVQUFBQVZRQUFBRllBQUFCWEFBQUFXQUFBQUZrQUFBQmFBQUFBWVFBQUFHSUFBQUJqQUFBQVxcXG5aQUFBQUdVQUFBQm1BQUFBWndBQUFHZ0FBQUJwQUFBQWFnQUFBR3NBQUFCc0FBQUFiUUFBQUc0QUFBQnZBQUFBY0FBQUFIRUFBQUJ5QUFcXFxuQUFjd0FBQUhRQUFBQjFBQUFBZGdBQUFIY0FBQUI0QUFBQWVRQUFBSG9BQUFCQkFBQUFRZ0FBQUVNQUFBQkVBQUFBUlFBQUFFWUFBQUJIXFxcbkFBQUFTQUFBQUVrQUFBQktBQUFBU3dBQUFFd0FBQUJOQUFBQVRnQUFBRThBQUFCUUFBQUFVUUFBQUZJQUFBQlRBQUFBVkFBQUFGVUFBQVxcXG5CV0FBQUFWd0FBQUZnQUFBQlpBQUFBV2dBQUFHRUFBQUJpQUFBQVl3QUFBR1FBQUFCbEFBQUFaZ0FBQUdjQUFBQnBBQUFBYWdBQUFHc0FcXFxuQUFCc0FBQUFiUUFBQUc0QUFBQnZBQUFBY0FBQUFIRUFBQUJ5QUFBQWN3QUFBSFFBQUFCMUFBQUFkZ0FBQUhjQUFBQjRBQUFBZVFBQUFIXFxcbm9BQUFCQkFBQUFRZ0FBQUVNQUFBQkVBQUFBUlFBQUFFWUFBQUJIQUFBQVNBQUFBRWtBQUFCS0FBQUFTd0FBQUV3QUFBQk5BQUFBVGdBQVxcXG5BRThBQUFCUUFBQUFVUUFBQUZJQUFBQlRBQUFBVkFBQUFGVUFBQUJXQUFBQVZ3QUFBRmdBQUFCWkFBQUFXZ0FBQUdFQUFBQmlBQUFBWXdcXFxuQUFBR1FBQUFCbEFBQUFaZ0FBQUdjQUFBQm9BQUFBYVFBQUFHb0FBQUJyQUFBQWJBQUFBRzBBQUFCdUFBQUFid0FBQUhBQUFBQnhBQUFBXFxcbmNnQUFBSE1BQUFCMEFBQUFkUUFBQUhZQUFBQjNBQUFBZUFBQUFIa0FBQUI2QUFBQVFRQUFBRU1BQUFCRUFBQUFSd0FBQUVvQUFBQkxBQVxcXG5BQVRnQUFBRThBQUFCUUFBQUFVUUFBQUZNQUFBQlVBQUFBVlFBQUFGWUFBQUJYQUFBQVdBQUFBRmtBQUFCYUFBQUFZUUFBQUdJQUFBQmpcXFxuQUFBQVpBQUFBR1lBQUFCb0FBQUFhUUFBQUdvQUFBQnJBQUFBYkFBQUFHMEFBQUJ1QUFBQWNBQUFBSEVBQUFCeUFBQUFjd0FBQUhRQUFBXFxcbkIxQUFBQWRnQUFBSGNBQUFCNEFBQUFlUUFBQUhvQUFBQkJBQUFBUWdBQUFFTUFBQUJFQUFBQVJRQUFBRVlBQUFCSEFBQUFTQUFBQUVrQVxcXG5BQUJLQUFBQVN3QUFBRXdBQUFCTkFBQUFUZ0FBQUU4QUFBQlFBQUFBVVFBQUFGSUFBQUJUQUFBQVZBQUFBRlVBQUFCV0FBQUFWd0FBQUZcXFxuZ0FBQUJaQUFBQVdnQUFBR0VBQUFCaUFBQUFZd0FBQUdRQUFBQmxBQUFBWmdBQUFHY0FBQUJvQUFBQWFRQUFBR29BQUFCckFBQUFiQUFBXFxcbkFHMEFBQUJ1QUFBQWJ3QUFBSEFBQUFCeEFBQUFjZ0FBQUhNQUFBQjBBQUFBZFFBQUFIWUFBQUIzQUFBQWVBQUFBSGtBQUFCNkFBQUFRUVxcXG5BQUFFSUFBQUJFQUFBQVJRQUFBRVlBQUFCSEFBQUFTZ0FBQUVzQUFBQk1BQUFBVFFBQUFFNEFBQUJQQUFBQVVBQUFBRkVBQUFCVEFBQUFcXFxuVkFBQUFGVUFBQUJXQUFBQVZ3QUFBRmdBQUFCWkFBQUFZUUFBQUdJQUFBQmpBQUFBWkFBQUFHVUFBQUJtQUFBQVp3QUFBR2dBQUFCcEFBXFxcbkFBYWdBQUFHc0FBQUJzQUFBQWJRQUFBRzRBQUFCdkFBQUFjQUFBQUhFQUFBQnlBQUFBY3dBQUFIUUFBQUIxQUFBQWRnQUFBSGNBQUFCNFxcXG5BQUFBZVFBQUFIb0FBQUJCQUFBQVFnQUFBRVFBQUFCRkFBQUFSZ0FBQUVjQUFBQkpBQUFBU2dBQUFFc0FBQUJNQUFBQVRRQUFBRThBQUFcXFxuQlRBQUFBVkFBQUFGVUFBQUJXQUFBQVZ3QUFBRmdBQUFCWkFBQUFZUUFBQUdJQUFBQmpBQUFBWkFBQUFHVUFBQUJtQUFBQVp3QUFBR2dBXFxcbkFBQnBBQUFBYWdBQUFHc0FBQUJzQUFBQWJRQUFBRzRBQUFCdkFBQUFjQUFBQUhFQUFBQnlBQUFBY3dBQUFIUUFBQUIxQUFBQWRnQUFBSFxcXG5jQUFBQjRBQUFBZVFBQUFIb0FBQUJCQUFBQVFnQUFBRU1BQUFCRUFBQUFSUUFBQUVZQUFBQkhBQUFBU0FBQUFFa0FBQUJLQUFBQVN3QUFcXFxuQUV3QUFBQk5BQUFBVGdBQUFFOEFBQUJRQUFBQVVRQUFBRklBQUFCVEFBQUFWQUFBQUZVQUFBQldBQUFBVndBQUFGZ0FBQUJaQUFBQVdnXFxcbkFBQUdFQUFBQmlBQUFBWXdBQUFHUUFBQUJsQUFBQVpnQUFBR2NBQUFCb0FBQUFhUUFBQUdvQUFBQnJBQUFBYkFBQUFHMEFBQUJ1QUFBQVxcXG5id0FBQUhBQUFBQnhBQUFBY2dBQUFITUFBQUIwQUFBQWRRQUFBSFlBQUFCM0FBQUFlQUFBQUhrQUFBQjZBQUFBUVFBQUFFSUFBQUJEQUFcXFxuQUFSQUFBQUVVQUFBQkdBQUFBUndBQUFFZ0FBQUJKQUFBQVNnQUFBRXNBQUFCTUFBQUFUUUFBQUU0QUFBQlBBQUFBVUFBQUFGRUFBQUJTXFxcbkFBQUFVd0FBQUZRQUFBQlZBQUFBVmdBQUFGY0FBQUJZQUFBQVdRQUFBRm9BQUFCaEFBQUFZZ0FBQUdNQUFBQmtBQUFBWlFBQUFHWUFBQVxcXG5CbkFBQUFhQUFBQUdrQUFBQnFBQUFBYXdBQUFHd0FBQUJ0QUFBQWJnQUFBRzhBQUFCd0FBQUFjUUFBQUhJQUFBQnpBQUFBZEFBQUFIVUFcXFxuQUFCMkFBQUFkd0FBQUhnQUFBQjVBQUFBZWdBQUFFRUFBQUJDQUFBQVF3QUFBRVFBQUFCRkFBQUFSZ0FBQUVjQUFBQklBQUFBU1FBQUFFXFxcbm9BQUFCTEFBQUFUQUFBQUUwQUFBQk9BQUFBVHdBQUFGQUFBQUJSQUFBQVVnQUFBRk1BQUFCVUFBQUFWUUFBQUZZQUFBQlhBQUFBV0FBQVxcXG5BRmtBQUFCYUFBQUFZUUFBQUdJQUFBQmpBQUFBWkFBQUFHVUFBQUJtQUFBQVp3QUFBR2dBQUFCcEFBQUFhZ0FBQUdzQUFBQnNBQUFBYlFcXFxuQUFBRzRBQUFCdkFBQUFjQUFBQUhFQUFBQnlBQUFBY3dBQUFIUUFBQUIxQUFBQWRnQUFBSGNBQUFCNEFBQUFlUUFBQUhvQUFBQkJBQUFBXFxcblFnQUFBRU1BQUFCRUFBQUFSUUFBQUVZQUFBQkhBQUFBU0FBQUFFa0FBQUJLQUFBQVN3QUFBRXdBQUFCTkFBQUFUZ0FBQUU4QUFBQlFBQVxcXG5BQVVRQUFBRklBQUFCVEFBQUFWQUFBQUZVQUFBQldBQUFBVndBQUFGZ0FBQUJaQUFBQVdnQUFBR0VBQUFCaUFBQUFZd0FBQUdRQUFBQmxcXFxuQUFBQVpnQUFBR2NBQUFCb0FBQUFhUUFBQUdvQUFBQnJBQUFBYkFBQUFHMEFBQUJ1QUFBQWJ3QUFBSEFBQUFCeEFBQUFjZ0FBQUhNQUFBXFxcbkIwQUFBQWRRQUFBSFlBQUFCM0FBQUFlQUFBQUhrQUFBQjZBQUFBUVFBQUFFSUFBQUJEQUFBQVJBQUFBRVVBQUFCR0FBQUFSd0FBQUVnQVxcXG5BQUJKQUFBQVNnQUFBRXNBQUFCTUFBQUFUUUFBQUU0QUFBQlBBQUFBVUFBQUFGRUFBQUJTQUFBQVV3QUFBRlFBQUFCVkFBQUFWZ0FBQUZcXFxuY0FBQUJZQUFBQVdRQUFBRm9BQUFCaEFBQUFZZ0FBQUdNQUFBQmtBQUFBWlFBQUFHWUFBQUJuQUFBQWFBQUFBR2tBQUFCcUFBQUFhd0FBXFxcbkFHd0FBQUJ0QUFBQWJnQUFBRzhBQUFCd0FBQUFjUUFBQUhJQUFBQnpBQUFBZEFBQUFIVUFBQUIyQUFBQWR3QUFBSGdBQUFCNUFBQUFlZ1xcXG5BQUFFRUFBQUJDQUFBQVF3QUFBRVFBQUFCRkFBQUFSZ0FBQUVjQUFBQklBQUFBU1FBQUFFb0FBQUJMQUFBQVRBQUFBRTBBQUFCT0FBQUFcXFxuVHdBQUFGQUFBQUJSQUFBQVVnQUFBRk1BQUFCVUFBQUFWUUFBQUZZQUFBQlhBQUFBV0FBQUFGa0FBQUJhQUFBQVlRQUFBR0lBQUFCakFBXFxcbkFBWkFBQUFHVUFBQUJtQUFBQVp3QUFBR2dBQUFCcEFBQUFhZ0FBQUdzQUFBQnNBQUFBYlFBQUFHNEFBQUJ2QUFBQWNBQUFBSEVBQUFCeVxcXG5BQUFBY3dBQUFIUUFBQUIxQUFBQWRnQUFBSGNBQUFCNEFBQUFlUUFBQUhvQUFBQXhBUUFBTndJQUFKRURBQUNTQXdBQWt3TUFBSlFEQUFcXFxuQ1ZBd0FBbGdNQUFKY0RBQUNZQXdBQW1RTUFBSm9EQUFDYkF3QUFuQU1BQUowREFBQ2VBd0FBbndNQUFLQURBQUNoQXdBQW1BTUFBS01EXFxcbkFBQ2tBd0FBcFFNQUFLWURBQUNuQXdBQXFBTUFBS2tEQUFBSElnQUFzUU1BQUxJREFBQ3pBd0FBdEFNQUFMVURBQUMyQXdBQXR3TUFBTFxcXG5nREFBQzVBd0FBdWdNQUFMc0RBQUM4QXdBQXZRTUFBTDREQUFDL0F3QUF3QU1BQU1FREFBRENBd0FBd3dNQUFNUURBQURGQXdBQXhnTUFcXFxuQU1jREFBRElBd0FBeVFNQUFBSWlBQUMxQXdBQXVBTUFBTG9EQUFER0F3QUF3UU1BQU1BREFBQ1JBd0FBa2dNQUFKTURBQUNVQXdBQWxRXFxcbk1BQUpZREFBQ1hBd0FBbUFNQUFKa0RBQUNhQXdBQW13TUFBSndEQUFDZEF3QUFuZ01BQUo4REFBQ2dBd0FBb1FNQUFKZ0RBQUNqQXdBQVxcXG5wQU1BQUtVREFBQ21Bd0FBcHdNQUFLZ0RBQUNwQXdBQUJ5SUFBTEVEQUFDeUF3QUFzd01BQUxRREFBQzFBd0FBdGdNQUFMY0RBQUM0QXdcXFxuQUF1UU1BQUxvREFBQzdBd0FBdkFNQUFMMERBQUMrQXdBQXZ3TUFBTUFEQUFEQkF3QUF3Z01BQU1NREFBREVBd0FBeFFNQUFNWURBQURIXFxcbkF3QUF5QU1BQU1rREFBQUNJZ0FBdFFNQUFMZ0RBQUM2QXdBQXhnTUFBTUVEQUFEQUF3QUFrUU1BQUpJREFBQ1RBd0FBbEFNQUFKVURBQVxcXG5DV0F3QUFsd01BQUpnREFBQ1pBd0FBbWdNQUFKc0RBQUNjQXdBQW5RTUFBSjREQUFDZkF3QUFvQU1BQUtFREFBQ1lBd0FBb3dNQUFLUURcXFxuQUFDbEF3QUFwZ01BQUtjREFBQ29Bd0FBcVFNQUFBY2lBQUN4QXdBQXNnTUFBTE1EQUFDMEF3QUF0UU1BQUxZREFBQzNBd0FBdUFNQUFMXFxcbmtEQUFDNkF3QUF1d01BQUx3REFBQzlBd0FBdmdNQUFMOERBQURBQXdBQXdRTUFBTUlEQUFEREF3QUF4QU1BQU1VREFBREdBd0FBeHdNQVxcXG5BTWdEQUFESkF3QUFBaUlBQUxVREFBQzRBd0FBdWdNQUFNWURBQURCQXdBQXdBTUFBSkVEQUFDU0F3QUFrd01BQUpRREFBQ1ZBd0FBbGdcXFxuTUFBSmNEQUFDWUF3QUFtUU1BQUpvREFBQ2JBd0FBbkFNQUFKMERBQUNlQXdBQW53TUFBS0FEQUFDaEF3QUFtQU1BQUtNREFBQ2tBd0FBXFxcbnBRTUFBS1lEQUFDbkF3QUFxQU1BQUtrREFBQUhJZ0FBc1FNQUFMSURBQUN6QXdBQXRBTUFBTFVEQUFDMkF3QUF0d01BQUxnREFBQzVBd1xcXG5BQXVnTUFBTHNEQUFDOEF3QUF2UU1BQUw0REFBQy9Bd0FBd0FNQUFNRURBQURDQXdBQXd3TUFBTVFEQUFERkF3QUF4Z01BQU1jREFBRElcXFxuQXdBQXlRTUFBQUlpQUFDMUF3QUF1QU1BQUxvREFBREdBd0FBd1FNQUFNQURBQUNSQXdBQWtnTUFBSk1EQUFDVUF3QUFsUU1BQUpZREFBXFxcbkNYQXdBQW1BTUFBSmtEQUFDYUF3QUFtd01BQUp3REFBQ2RBd0FBbmdNQUFKOERBQUNnQXdBQW9RTUFBSmdEQUFDakF3QUFwQU1BQUtVRFxcXG5BQUNtQXdBQXB3TUFBS2dEQUFDcEF3QUFCeUlBQUxFREFBQ3lBd0FBc3dNQUFMUURBQUMxQXdBQXRnTUFBTGNEQUFDNEF3QUF1UU1BQUxcXFxub0RBQUM3QXdBQXZBTUFBTDBEQUFDK0F3QUF2d01BQU1BREFBREJBd0FBd2dNQUFNTURBQURFQXdBQXhRTUFBTVlEQUFESEF3QUF5QU1BXFxcbkFNa0RBQUFDSWdBQXRRTUFBTGdEQUFDNkF3QUF4Z01BQU1FREFBREFBd0FBM0FNQUFOMERBQUF3QUFBQU1RQUFBRElBQUFBekFBQUFOQVxcXG5BQUFEVUFBQUEyQUFBQU53QUFBRGdBQUFBNUFBQUFNQUFBQURFQUFBQXlBQUFBTXdBQUFEUUFBQUExQUFBQU5nQUFBRGNBQUFBNEFBQUFcXFxuT1FBQUFEQUFBQUF4QUFBQU1nQUFBRE1BQUFBMEFBQUFOUUFBQURZQUFBQTNBQUFBT0FBQUFEa0FBQUF3QUFBQU1RQUFBRElBQUFBekFBXFxcbkFBTkFBQUFEVUFBQUEyQUFBQU53QUFBRGdBQUFBNUFBQUFNQUFBQURFQUFBQXlBQUFBTXdBQUFEUUFBQUExQUFBQU5nQUFBRGNBQUFBNFxcXG5BQUFBT1FBQUFEQUVBQUF4QkFBQU1nUUFBRE1FQUFBMEJBQUFOUVFBQURZRUFBQTNCQUFBT0FRQUFEb0VBQUE3QkFBQVBBUUFBRDRFQUFcXFxuQS9CQUFBUUFRQUFFRUVBQUJDQkFBQVF3UUFBRVFFQUFCRkJBQUFSZ1FBQUVjRUFBQklCQUFBU3dRQUFFMEVBQUJPQkFBQWlhWUFBTmtFXFxcbkFBQldCQUFBV0FRQUFPa0VBQUN2QkFBQXp3UUFBREFFQUFBeEJBQUFNZ1FBQURNRUFBQTBCQUFBTlFRQUFEWUVBQUEzQkFBQU9BUUFBRFxcXG5vRUFBQTdCQUFBUGdRQUFEOEVBQUJCQkFBQVF3UUFBRVFFQUFCRkJBQUFSZ1FBQUVjRUFBQklCQUFBU2dRQUFFc0VBQUNSQkFBQVZnUUFcXFxuQUZVRUFBQmZCQUFBcXdRQUFGR21BQUN4QkFBQUp3WUFBQ2dHQUFBc0JnQUFMd1lBQUVnR0FBQXlCZ0FBTFFZQUFEY0dBQUJLQmdBQVF3XFxcbllBQUVRR0FBQkZCZ0FBUmdZQUFETUdBQUE1QmdBQVFRWUFBRFVHQUFCQ0JnQUFNUVlBQURRR0FBQXFCZ0FBS3dZQUFDNEdBQUF3QmdBQVxcXG5OZ1lBQURnR0FBQTZCZ0FBYmdZQUFMb0dBQUNoQmdBQWJ3WUFBQ2dHQUFBc0JnQUFSd1lBQUMwR0FBQktCZ0FBUXdZQUFFUUdBQUJGQmdcXFxuQUFSZ1lBQURNR0FBQTVCZ0FBUVFZQUFEVUdBQUJDQmdBQU5BWUFBQ29HQUFBckJnQUFMZ1lBQURZR0FBQTZCZ0FBTEFZQUFDMEdBQUJLXFxcbkJnQUFSQVlBQUVZR0FBQXpCZ0FBT1FZQUFEVUdBQUJDQmdBQU5BWUFBQzRHQUFBMkJnQUFPZ1lBQUxvR0FBQnZCZ0FBS0FZQUFDd0dBQVxcXG5CSEJnQUFMUVlBQURjR0FBQktCZ0FBUXdZQUFFVUdBQUJHQmdBQU13WUFBRGtHQUFCQkJnQUFOUVlBQUVJR0FBQTBCZ0FBS2dZQUFDc0dcXFxuQUFBdUJnQUFOZ1lBQURnR0FBQTZCZ0FBYmdZQUFLRUdBQUFuQmdBQUtBWUFBQ3dHQUFBdkJnQUFSd1lBQUVnR0FBQXlCZ0FBTFFZQUFEXFxcbmNHQUFCS0JnQUFSQVlBQUVVR0FBQkdCZ0FBTXdZQUFEa0dBQUJCQmdBQU5RWUFBRUlHQUFBeEJnQUFOQVlBQUNvR0FBQXJCZ0FBTGdZQVxcXG5BREFHQUFBMkJnQUFPQVlBQURvR0FBQW9CZ0FBTEFZQUFDOEdBQUJJQmdBQU1nWUFBQzBHQUFBM0JnQUFTZ1lBQUVRR0FBQkZCZ0FBUmdcXFxuWUFBRE1HQUFBNUJnQUFRUVlBQURVR0FBQkNCZ0FBTVFZQUFEUUdBQUFxQmdBQUt3WUFBQzRHQUFBd0JnQUFOZ1lBQURnR0FBQTZCZ0FBXFxcbk1BQUFBQzRBQUFBd0FBQUFMQUFBQURFQUFBQXNBQUFBTWdBQUFDd0FBQUF6QUFBQUxBQUFBRFFBQUFBc0FBQUFOUUFBQUN3QUFBQTJBQVxcXG5BQUxBQUFBRGNBQUFBc0FBQUFPQUFBQUN3QUFBQTVBQUFBTEFBQUFDZ0FBQUJCQUFBQUtRQUFBQ2dBQUFCQ0FBQUFLUUFBQUNnQUFBQkRcXFxuQUFBQUtRQUFBQ2dBQUFCRUFBQUFLUUFBQUNnQUFBQkZBQUFBS1FBQUFDZ0FBQUJHQUFBQUtRQUFBQ2dBQUFCSEFBQUFLUUFBQUNnQUFBXFxcbkJJQUFBQUtRQUFBQ2dBQUFCSkFBQUFLUUFBQUNnQUFBQktBQUFBS1FBQUFDZ0FBQUJMQUFBQUtRQUFBQ2dBQUFCTUFBQUFLUUFBQUNnQVxcXG5BQUJOQUFBQUtRQUFBQ2dBQUFCT0FBQUFLUUFBQUNnQUFBQlBBQUFBS1FBQUFDZ0FBQUJRQUFBQUtRQUFBQ2dBQUFCUkFBQUFLUUFBQUNcXFxuZ0FBQUJTQUFBQUtRQUFBQ2dBQUFCVEFBQUFLUUFBQUNnQUFBQlVBQUFBS1FBQUFDZ0FBQUJWQUFBQUtRQUFBQ2dBQUFCV0FBQUFLUUFBXFxcbkFDZ0FBQUJYQUFBQUtRQUFBQ2dBQUFCWUFBQUFLUUFBQUNnQUFBQlpBQUFBS1FBQUFDZ0FBQUJhQUFBQUtRQUFBQlF3QUFCVEFBQUFGVFxcXG5BQUFFTUFBQUJTQUFBQVF3QUFBRVFBQUFCWEFBQUFXZ0FBQUVFQUFBQkNBQUFBUXdBQUFFUUFBQUJGQUFBQVJnQUFBRWNBQUFCSUFBQUFcXFxuU1FBQUFFb0FBQUJMQUFBQVRBQUFBRTBBQUFCT0FBQUFUd0FBQUZBQUFBQlJBQUFBVWdBQUFGTUFBQUJVQUFBQVZRQUFBRllBQUFCWEFBXFxcbkFBV0FBQUFGa0FBQUJhQUFBQVNBQUFBRllBQUFCTkFBQUFWZ0FBQUZNQUFBQkVBQUFBVXdBQUFGTUFBQUJRQUFBQVVBQUFBRllBQUFCWFxcXG5BQUFBUXdBQUFFMEFBQUJEQUFBQVRRQUFBRVFBQUFCTkFBQUFVZ0FBQUVRQUFBQktBQUFBZXpBQUFFc3dBQUN6TUFBQXN6QUFBTFV3QUFcXFxuQkxZZ0FBVjFzQUFNeFRBQURHTUFBQW1UQUFBSXhPQUFBYVdRQUE0NGtBQUNsWkFBQ2tUZ0FBSUdZQUFDRnhBQUNaWlFBQVRWSUFBSXhmXFxcbkFBQ05VUUFBc0dVQUFCMVNBQUJDZlFBQUgzVUFBS21NQUFEd1dBQUFPVlFBQUJSdkFBQ1ZZZ0FBVldNQUFBQk9BQUFKVGdBQVNwQUFBT1xcXG5aZEFBQXRUZ0FBODFNQUFBZGpBQUJ3alFBQVUySUFBSUY1QUFCNmVnQUFDRlFBQUlCdUFBQUpad0FBQ0djQUFETjFBQUJ5VWdBQXRsVUFcXFxuQUUyUkFBQVVNQUFBTEdjQUFCVXdBQUFVTUFBQUNVNEFBQlV3QUFBVU1BQUFqRTRBQUJVd0FBQVVNQUFBaVZzQUFCVXdBQUFVTUFBQXVYXFxcbkFBQUJVd0FBQVVNQUFBVTJJQUFCVXdBQUFVTUFBQTEzWUFBQlV3QUFBVU1BQUEzVklBQUJVd0FBQVVNQUFBVjJVQUFCVXdBQUNYWHdBQVxcXG43MU1BQURBQUFBQXhBQUFBTWdBQUFETUFBQUEwQUFBQU5RQUFBRFlBQUFBM0FBQUFPQUFBQURrQUFBRHcreEVBWWdBQUFFSUFBQUFhQUFcXFxuQUFBQUFBQUEwQUJBQU1BQVVBaVFZSEFBQUFBZ0FBQUFJQUF3QUFBQUFBcXdBQUFGZ0JBQUJhQU1ZQlF3RUFBQUVBQUFBRUFBQUFBQUFBXFxcbkFBWUFCQUFBQUpJQUFBQUFBRTBDQUFBSEFBQUFmd0FNQUFBQXh3QUFBRzBCQUFBQUFBQUEyZ0FFQUJrQUJRQUFBSk1BQmdCOEFCTUFHd1xcXG5FQUFBRUFDQUJZQUFBQVhBQ2xBQUFBQVFBQUFBQUFBQUMwQUFFQUFRQUFBQUVBQ0FBQUFIa0FCd0FBQUtBQU53QUFBQWNBTmdBRkFEa0FcXFxuQUFBQUFBSUFDUUFBQUFBQWN3QUJBQVVBQUFBQUFBQUFQUUFCQUFBQUJBQUFBRlFBQVFBQUFDY0FUUUQ2QUUwQUF3QWNBTjBBQmdBQkFDXFxcblFBUVFBQUFBQUFBQUFMQUFBQUJRQURBTFlBQUFBUEFBQUFBUUFXQUFBQUFBQ2VBQUVBQUFBaEFBQUFKUUFFQUJBQUJBQVZBQUlBQVFBalxcXG5BQVVBaEFBQUFBQUFEd0FLQUFJQU53QUJBQUFBUmdBTkFCSUFBQUFFQUFBQUFBQUFBQ1FBREFCS0FBSUFCQUFBQUVJQUFBQUVBQk1BQWdcXFxuQVRBSHNBUGdBQUFCRUFBZ0FIQUFFQUFBQXhBQU1BQUFBU0FBQUFBQUFBQURVQUJnQU9BQjRBd1FBQUFBQUFBQUFBQUFVQUFnQWNBQUFBXFxcbkNBQUFBQWtBQXdDTkFIQUFWQUFqQUJFQUh3QUZBQmNBQkFBQ0FBQUFSd0FYQUF3QUtnQUFBQU1BQUFBQUFBQUFCUUE0QUJFQUZRQTVBQVxcXG5ZQUFBQURBQU1BQVFBQUFBQUFBQUJUQUFRQUFRQUJBQUVBQWdBQUFBOEFCZ0FBQUFBQUFBQUVBQ2dBQkFBQUFBQUFFUUF1QUFZQUJBQUJcXFxuQUFFQUVnQUFBQUFBQUFBQ0FBVUFBQUFWQUM0QUFBQUJBQUFBQUFBR0FBQUFBQUFOQUFNQUFBQUFBRDhBQ0FBQUFBZ0FBQUFBQUJvQUFnXFxcbkFBQUFjQUFBQUtBQUFBQXdBTUFBQUFGQUFBQUFZQUFBQVpBQUVBQXdBREFBWUFFQUFTQUFFQUZnQUFBQVFBQVFBQUFBQUFBQUFBQUFNQVxcXG5BZ0FoQUFFQUF3QVRBQllBQUFBQUFBRUFCUUFBQUE0QUFBQUFBRGdBQWdBZ0FBTUFBQUFLQUE0QUFRQURBQUFBQUFBS0FBWUFBQUFBQUFcXFxuSUFBQUFBQUFBQUFnQUFBQVFBR0FBQkFBQUFBZ0FBQUF3QUFBQUFBQUVBQVFBQUFBRUFBQUFMQUFBQUFRQUNBQUFBQUFBYkFBWUFBQUFFXFxcbkFBQUFBQUFGQUNBQUFBQUpBQUFBQUFBQUFBQUFBZ0FBQUFFQUF3QUFBQXdBQUFBV0FBQUFBQUFEQUFBQUJ3QUFBQWdBQkFBQUFBQUFBQVxcXG5BQUFBQUFBUUFBQUFBQUFBQUFBQUFBSHdBS0FDZ0FBQUFCQUFBQUFBQUlBQTBBQUFBQUFBQUFBQUFBQUFFQUFBQUNBQUFBQUFBNkFBUUFcXFxuQ0FBTEFBQUFGd0FBQUFJQUFBQUFBQ0lBQUFBRUFBQUFBUUFDQUFZQUZ3QUhBQWtBSndBQUFBRUFFUUFIQUNNQUFRQUJBQUFBQUFBSkFBXFxcbmdBQWdBbkFBZ0FBQUFYQUF3QU93QUdBQUFBQUFBTUFBQUFCQUFBQUM0QUJRQUhBQWNBQUFBREFBOEFBUUFBQUFJQUFBQUdBQUlBQWdBRVxcXG5BQUFBQXdBUEFBQUFBUUFTQUNRQUFBQUFBQUFBQ3dBZkFCVUFEUUFBQUFFQUFBQUJBQUlBQUFBQkFBQUFDQUFBQUFBQURBQUJBQTRBQUFcXFxuQUVBQVFBQUFBQUFBRUFBd0FBQUFJQUFBQXVBQUFBRVFBQUFCc0FDZ0FUQUJJQUFnQUpBQUVBRFFBQUFBRUFBZ0FBQUEwQUFBQUxBQVlBXFxcbkFBQUFBQXNBQVFBQUFBQUFBZ0FUQUJZQURRQU9BQVFBRHdBTEFBSUFBQUFBQUFvQUFBQURBQUFBRFFBQ0FBc0FBQUFkQUFBQUFnQUhBQVxcXG5BQUFBQUJBQUFBQUFBQUFBY0FCZ0FPQUFRQUFBQUJBQWdBRkFBQUFBQUFGUUFBQUFFQUFBQUFBQUFBRUFBQUFBQUFCZ0FYQUFBQUFRQUFcXFxuQUJBQUFBQUFBQUFBQ2dBQUFBQUFBUUFHQUFRQUFBQUVBQUVBQVFBQ0FBSUFBQUFCQUFjQUFBQUFBQUlBQWdBSEFBSUFId0FKQUFBQUJBXFxcbkFIQUFBQUFRQUFBQUFBQUFBRUFBTUFCQUFBQUFBQUFBQUVBQUFBQUFBQkFBa0FGd0FHQUE4QURBQUFBQUFBQUFBUUFBQUFBZ0FDQUFBQVxcXG5CZ0FDQUFBQUF3QUNBQWtBQXdBQ0FBTUFBUUFBQUFBQUFBQVNBQVFBQUFBSUFBQUFBd0FZQUFBQUF3QU1BQUFBQWdBbUFBQUFBQUFDQUFcXFxuWUFBZ0FBQUFFQUNRQUlBQllBQVFBREFCRUFBQUFUQUFBQUFnQUhBQUFBQXdBQUFBQUFBQUFNQUJvQUFBQUFBQUVBQWdBQUFBSUFDUUFFXFxcbkFCSUFBQUFBQUJFQUNBQUFBQUFBQVFBREFBQUFBd0FHQUE4QUJBQUJBQU1BQUFBSEFBUUFDUUFFQUFFQUFBQUZBQVFBQUFBQkFBQUFBQVxcXG5BREFBSUFGUUFDQUFBQUNBQUFBQUlBQUFBREFCRUFCZ0FHQUEwQUFRQUFBQUVBQXdBR0FDQUFCQUFCQUFJQUN3QUJBQUFBQUFBQkFBRUFcXFxuRVFBQUFBRUFBQUFDQUFFQUFBQUFBQWNBQkFBRkFBTUFBQUFBQUFBQUJRQUFBQUlBQXdBQUFBTUFBQUFFQUFRQUFnQUFBQUlBR1FBRUFBXFxcbkVBRXdBQkFBSUFDUUFMQUFZQUJBQUFBQUVBQUFBQkFCb0FBQUFDQUFVQUFBQVBBQUFBQ0FBQUFBQUFBZ0FFQUJBQUFRQUJBQUlBRWdBQVxcXG5BQUFBQ1FBQUFCTUFBUUFDQUFRQUJnQUVBQVFBQUFBR0FBSUFGUUFBQUFFQUNRQU9BQUlBQXdBREFBQUFBUUFFQUFBQUFBQUZBQTRBQUFcXFxuQUhBQUFBQWdBQUFBc0FBZ0FBQUFFQUJBQUpBQUlBQUFBQUFBQUFBUUFCQUFBQUJBQUJBQTBBQXdBQUFBRUFBQUFFQUFNQUFRQUNBQUFBXFxcbkFnQUZBQUFBQXdBc0FBb0FBd0FBQUFrQUFBQUFBQUlBQUFBQkFBQUFBQUFuQUFJQUFBQUFBQUFBRlFBQkFBSUFCQUFBQUFJQUFBQURBQVxcXG5NQUFRQUFBQUlBQlFBS0FBa0FBUUFDQUFNQUFRQUZBQUVBQ0FBQkFBRUFEd0FBQUFNQUNnQURBQVFBRFFBREFBRUFBQUFNQUI0QUFRQUJcXFxuQUFvQUFRQURBQUFBQVFBQUFBWUFBQUFEQUFJQUJ3QURBQTRBQXdBRUFBOEFCQUFDQUFNQUNBQUFBQUlBQXdBQkFCQUFBZ0FDQUFJQUFBXFxcbkFBQUFVQUFnQUFBQUFBQlFBQUFBQUFBQUFBQUFBQUFBQUhBQWdBQUFBQUFBQUFCQUFBQUFBQUFBQUJBQU1BQUFBQUFBRUFBZ0FCQUFzQVxcXG5Cd0FBQUFNQUJRQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFnQUtBQW9BQlFBQkFBQUFBQUFBQUFJQUFRQUpBQUFBQWdBTEFBSUFBQUFBQUFcXFxuQUFBQUFJQUFFQURBQU1BQVFBQUFBQkFBUUFBd0FFQUFNQUFRQUhBQVVBQWdBRUFBRUFBUUFDQUFBQUFBQUlBQUVBQUFBQUFBQUFBUUFDXFxcbkFBRUFBZ0FBQUF3QUJRQUJBQUFBQWdBQ0FBWUFBQUFCQUFJQUFnQUFBQUFBQmdBQ0FBY0FBUUFBQUFBQUJRQUJBQW9BQUFBQ0FBQUFBUVxcXG5BQUFBQUFBUUFCQUF3QUFBQURBQUlBQ1FBQUFBSUFBd0FBQUFFQUFRQUZBQVFBQndBQkFBRUFBUUFDQUFFQUF3QURBQUFBQVFBREFBQUFcXFxuQWdBQ0FBQUFBUUFHQUFFQUNnQUFBQUFBQ0FBQUFBVUFBQUFCQUFJQUFBQUFBQUFBQndBQUFBSUFBQUFBQUFBQUFBQUFBQUlBRUFBSEFBXFxcbkVBQlFBT0FBQUFBQUFBQUFVQUJ3QUZBQUVBQUFBRUFBQUFCUUFEQUFJQUFBQUJBQUFBQUFBSkFBQUFCQUFDQUFNQUJnQUZBQUFBQVFBQlxcXG5BQUVBQXdBQ0FBUUFBZ0FDQUFJQUFBQURBQVlBQUFBQkFBRUFBQUFCQUFJQUZBQUFBQUFBQndBRkFBSUFBQUFCQUFBQUFBQUFBQUVBQmdcXFxuQUxBQVVBQUFBUEFBRUFBQUFHQUFrQUFRQUhBQUlBQUFBQkFBRUFBQUFBQUFFQUFRQUJBQVVBQndBQUFBQUFBQUFBQUFZQUJnQUFBQWNBXFxcbkFBQUJBQUFBQUFBREFBZ0FBQUFBQUFFQUFRQUdBQXNBQndBQUFBQUFBd0FBQUFFQUNBQUJBQUVBQlFBQ0FBRUFBZ0FLQUFBQUFRQUFBQVxcXG5BQUF3QUFBQUlBQWdBQUFBQUFBQUFBQUFFQUF3QUdBQUlBQUFBQ0FBRUFCQUFCQUFJQUFnQUFBQUFBQVFBRUFBSUFBUUFCQUFFQUFBQUNcXFxuQUFRQUF3QUNBQU1BQVFBQUFBRUFBQUFBQUFRQUFBQURBQU1BQUFBRkFBVUFBUUFEQUFZQUFBQUJBQUlBQUFBS0FBTUFBUUFCQUFJQUFBXFxcbkFBQUFJQUJBQURBQUlBQUFBQ0FBVUFBUUFBQUFzQUNnQUFBQUFBQVFBREFBQUFBd0FBQUFFQUFBQURBQWdBQWdBQUFBUUFBQUFCQUFBQVxcXG5DQUFDQUFBQUFRQUJBQUVBQUFBQUFBQUFCUUFEQUFZQUFnQVVBQUFBQVFBQUFBSUFBd0FEQUFFQUF3QUdBQWdBQVFBQkFBRUFBUUFEQUFcXFxuZ0FBQUFBQUFRQUJnQURBQUFBQXdBQUFBQUFDUUFLQUFNQUF3QUNBQVVBQndBQ0FBQUFDZ0FCQUFJQUFRQUJBQUFBQWdBQ0FBQUFBUUFHXFxcbkFBRUFBQUFBQUFzQUF3QUNBQU1BQUFBQUFBQUFCZ0FBQUFJQUVnQUJBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQVlBQVFBQUFBQUFBZ1xcXG5BQUFBTUFCQUFBQUFBQUFBQUJBQThBQXdBQ0FBNEFDUUFBQUFFQUJnQUFBQUVBQUFBQUFBRUFBd0FBQUFBQUJ3QUZBQUFBQXdBQUFBQUFcXFxuREFBQUFBTUFBQUFFQUFZQUJRQUJBQUFBQXdBQUFBRUFCQUFEQUFBQUF3QUVBQUFBQXdBQUFBQUFBUUFBQUFZQUFBQUdBQUFBQWdBQUFBXFxcbklBQXdBREFBVUFBUUFBQUFVQUJRQURBQUVBQVFBQkFBRUFCQUFBQUFBQUFBQUVBQUVBQVFBQ0FBQUFBUUFIQUFBQUFnQUFBQUFBQVFBQVxcXG5BQUFBQXdBQUFBQUFBUUFDQUFBQUFRQUJBQU1BQUFBQUFBUUFBZ0FGQUFFQUFnQURBQUFBQXdBQkFBQUFBQUFCQUFZQUFRQUJBQUFBQUFcXFxuQURBQVVBQUFBQUFBQUFBUUFEQUFBQUVRQUFBQUlBQlFBQkFBa0FBUUFBQUFVQUF3QUNBQUVBQUFBQUFBWUFBQUFFQUFBQUFnQUJBQUFBXFxcbkFBQUFBQUFBQ0FBQUFBQUFBUUFBQUFjQUFRQUFBQUVBQlFBQUFBRUFCZ0FDQUFNQUJRQUVBQUlBQVFBQkFBY0FBd0FDQUFNQUFRQUFBQVxcXG5JQUNBQUVBQUVBQUFBQkFBRUFBZ0FBQUFBQUFRQUNBQUFBQVFBREFBQUFBQUFMQUFJQUFnQVBBQUFBQWdBQkFBQUFBQUFGQUFBQUFnQUJcXFxuQUFBQUFBQUFBQUVBQWdBQUFBTUFBZ0FBQUFBQUFRQUJBQUFBQUFBQkFBSUFBQUFHQUFJQUFnQURBQUVBREFBQUFBRUFCZ0FDQUFNQUFnXFxcbkFCQUFJQUFRQURBQUlBQXdBQkFBSUFBUUFBQUFRQUJRQUFBQUFBQUFBQkFBQUFBd0FFQUFJQUN3QUFBQUlBQUFBQUFBQUFBUUFBQUFFQVxcXG5CQUFDQUFVQUFnQUhBQUFBQVFBQUFBQUFBQUFCQUFBQUJnQUFBQUFBQVFBRUFBQUFBQUFDQUFBQUFBQUZBQVlBQVFBQUFBRUFCUUFBQUFcXFxuQUFCQUFDQUFNQUFRQUFBQW9BQXdBS0FBSUFBZ0FCQUFFQUFnQUNBQU1BQkFBQ0FBRUFBQUFDQUFFQUJ3QUFBQU1BQVFBQkFBQUFBZ0FFXFxcbkFBRUFBQUFBQUFJQUJnQURBQUFBQVFBQUFBTUFDZ0FCQUFZQUFnQUFBQU1BQUFBQUFBQUFCZ0FEQUFBQUFnQUdBQU1BQkFBQUFBb0FBQVxcXG5BQ0FBQUFCQUFBQUFBQUJBQURBQUlBQWdBQUFBZ0FBUUFFQUFRQUFRQUJBQUVBQVFBQ0FBRUFBQUFCQUFJQUFRQUFBQUFBQXdBQUFBQUFcXFxuQlFBQkFBQUFDZ0FHQUFFQUFnQUVBQUlBQVFBQkFBQUFCUUFCQUFNQUF3QUFBQUFBQVFBR0FBVUFEQUFBQUFBQUNnQUJBQUVBQVFBQUFBXFxcbkFBQWdBQUFBUUFBUUFDQUFNQUFnQUVBQUFBQVFBQkFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUVBQUFBQUFBQVxcXG5BQUFBQXdBQUFBQUFBZ0FDQUFjQUFRQUVBQUlBQVFBQUFBQUFBQUFEQUFBQUJRQUNBQUVBQUFBQkFBb0FBQUFBQUFBQUFRQUNBQUlBQVFcXFxuQUFBQUFBQWdBQkFBQUFBQUFBQUFRQUJBQUJBQVFBQkFBQUFBRUFBUUFBQUFNQUFBQUVBQU1BQVFBQUFBWUFBUUFBQUFFQUFBQUNBQUVBXFxcbkF3QUFBQUFBQXdBREFBQUFBUUFDQUFJQUFRQURBQUFBQVFBQUFBc0FCd0FBQUFFQUJRQUJBQUFBQUFBSkFBRUFBd0FBQUFBQUFBQUFBQVxcXG5FQUFBQUFBQTRBQWdBQUFBUUFBd0FCQUFZQUFBQUFBQVFBQUFBRkFBTUFBUUFBQUFJQUFRQUFBQUVBQVFBREFBRUFBQUFCQUFVQUFRQUNcXFxuQUFFQUFBQUJBQUFBQWdBQkFBRUFCd0FCQUFFQUFnQUdBQVFBQWdBREFBRUFBUUFCQUFBQUFRQUFBQUVBQWdBQkFBTUFBQUFCQUFVQUFBXFxcbkFBQUFZQUFnQUNBQUVBQUFBQ0FBRUFBUUFCQUFJQUJBQUNBQUFBQUFBQUFBQUFBUUFEQUFJQUFBQUVBQUVBQkFBQ0FBQUFBQUFEQUFBQVxcXG5BZ0FBQUFNQUFBQUJBQUFBQVFBQkFBQUFBQUFGQUFNQUFRQUJBQUVBQUFBQkFBSUFBQUFIQUFRQUFBQUJBQUVBQUFBQkFBQUFCUUFCQUFcXFxuQUFBUUFBQUFJQUFBQUJBQUlBQWdBQ0FBRUFBZ0FGQUFJQUFRQUJBQU1BQUFBREFBRUFBQUFDQUFNQUJnQUFBQU1BQWdBQUFBVUFBQUFFXFxcbkFBUUFBd0FCQUFBQUFnQUlBQUFBQXdBQUFBQUFBQUFBQUFNQUFBQUNBQUlBQVFBQkFBQUFBd0FBQUFFQUFnQUFBQUFBQUFBQkFBTUFBUVxcXG5BRUFBRUFBZ0FDQUFJQUFnQUFBQUlBQkFBQkFBRUFBQUFDQUFBQUFBQUNBQVFBQkFBQkFBSUFBQUFCQUFJQUFRQUVBQUlBQXdBR0FBQUFcXFxuQVFBRkFBQUFBQUFBQUFBQUFBQUNBQUlBQVFBQUFBQUFBQUFDQUFJQUJBQUFBQUFBQUFBRUFBTUFBUUFCQUFrQUFRQUFBQUFBQXdBQUFBXFxcbkFBQWdBQkFBQUFBQUFCQUFNQUFBQUJBQUFBQWdBQ0FBRUFBQUFBQUFFQUF3QUNBQUlBQUFBQkFBRUFBQUFDQUFFQUJRQUNBQVFBQVFBQVxcXG5BQUlBQUFBSUFBQUFBd0FCQUFNQUFRQUNBQUVBQVFBQ0FBRUFBUUFEQUFNQUFRQUFBQU1BQVFBQ0FBSUFBUUFBQUFBQUFRQUVBQUFBQWdcXFxuQUFBQUFBQUFBQkFBTUFBUUFBQUFFQUF3QUJBQUFBQWdBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBXFxcbkFRQUJBQUFBQUFBQkFBVUFBZ0FBQUFBQUFRQUNBQWdBQUFBQUFBRUFBQUFSQUFFQUFBQUFBQUVBQUFBQkFBQUFBQUFBQUFJQUFRQUFBQVxcXG5BQUFBQUFBQUVBQUFBQkFBRUFBQUFCQUFVQUFBQUFBQVlBQXdBQUFBSUFBZ0FCQUFFQUJRQURBQUlBQWdBQUFBQUFBQUFDQUFBQUFRQUVcXFxuQUFFQUFnQUNBQUFBQVFBQ0FBSUFBUUFCQUFvQUFRQUJBQUFBQWdBQ0FBRUFCQUFHQUFFQUFRQUJBQUVBQUFBRUFBRUFBQUFCQUFBQUFBXFxcbkFDQUFzQUFRQUlBQUVBQVFBQkFBQUFBUUFBQUFVQUFBQURBQThBQVFBQkFBQUFBUUFDQUFFQUFBQUJBQUVBQVFBQkFBRUFBZ0FJQUFFQVxcXG5BUUFBQUFFQUFRQUJBQUFBQUFBQUFBRUFBUUFBQUFFQUFBQUNBQUFBQUFBQUFBSUFBUUFBQUFFQUF3QUFBTXNCRGdEZEZRRUFPZzRBQUVcXFxuRVVBUUEwQVE0QXNSd0JBTDBWQVFDdkR3QUEzQUVPQUlFUkFRQTBHUUVBZEJNQkFDTUlBQUI4cGdBQVRRb0FBRktwQUFBRDRBRUFTUTRBXFxcbkFMVVhBQUIwRUFBQS9pMEFBTDZvQUFEOUFRRUE0QUlCQUxFUEFBQzZxUUFBQUF3QUFLYmFBUUNpQlFBQUp2NEFBRUVLQUFDbUJ3QUFtQVxcXG5nQUFJSUxBQUQ3Q2dBQXV3OEFBSG9hQUFBYXp3RUFhMjhCQUhXbUFBQkZ6d0VBTHdFT0FFOEJEZ0E3SEFFQTl5MEFBTCtwQUFEcnFBQUFcXFxubnJ3QkFIUWFBQUM0RGdBQUxEQUFBRTBNQUFCUEJnQUFYaEFBQUVFSEFBQkUyZ0VBUkFzQUFDUVpBQUFkMmdFQXdBa0FBQzMrQUFBd0F3XFxcbkFBd3dFT0FKMFFBQUFpQXdBQUdNOEJBQUlNQUFBb0FRNEF5eGNBQU1zYUFBRGpBUTRBQXFnQUFISnZBUUFCRUFFQU5CWUJBSnZhQVFET1xcXG5DQUFBdHc0QUFFRVFBUUI3R2dBQVZ4QUFBRkFCRGdCdEd3QUE0Z3dBQU9hb0FBQStFQUVBR1FZQUFJRVFBUUNqRHdBQXd4UUJBSkFhQVFcXFxuQXNDQUFBY3hFQkFHWWFBQURVNkFFQWJ0RUJBTGdSQVFBMEdRQUFETThCQU00QkRnQTV6d0VBdmhFQkFOSUJEZ0FJMmdFQVFRRU9BRFlTXFxcbkFRRENFQUVBSmY0QUFEWnJBUUJYQmdBQVNRY0FBQkVEQUFERUFRNEEweUFBQUNIYUFRRHBHd0FBRHM4QkFGMXZBUUNDMFFFQVFjOEJBUFxcXG40SUFBQUYvZ0FBV1JvQkFPWWRBQURHR2dBQUlBRU9BRGdhQVFDM0VBRUE3QjBBQUZFREFBQUpBd0FBelIwQUFMd1ZBUUMxRkFFQWdHOEJcXFxuQUlJUkFRQnVid0VBcWh3QkFKZ0JEZ0RZRFFBQUM2Z0FBTW9PQUFEd0hRQUF4YWdBQUx3UEFBQnNFd0VBWkJBQUFDa2NBQURBRkFFQU1CXFxcbkFBQUwwYUFBQk1EZ0FBQWdvQUFEMFVBUUR0NUFFQTJDQUFBQVFhQVFBbXp3RUFGZ0VPQU13S0FBQk5Ed0VBN2FvQUFLb0hBQUFDQ1FBQVxcXG5RaFFCQUN3QkRnREhDZ0FBdnFvQUFDRVpBQUNjSEFFQVBoOEJBQUlSQVFCVENRQUFXOW9CQU9tb0FBQkVFQUVBTTJzQkFPTUlBQUJZQVFcXFxuNEFKcWdBQUVFZkFRQVpEd0FBV0JBQUFPOEJEZ0FkQVE0QXV4Y0FBQjhYQVFBeUVnRUExeHdBQUdRREFBQTFIQUFBUHdvQUFGb2FBQUJUXFxcbk5BRUFWUm9CQU84ZEFBQkNBd0FBVEFzQUFPb0JEZ0F5endFQWdoQUFBR01MQUFERkdnQUFOUllCQUdrYUFBQ0hCQUFBWkFFT0FEUGFBUVxcXG5BSEFRNEF3QXNBQUQ0Y0FRREJBUTRBcnRvQkFLRVBBQUNWSEFFQWNhWUFBRFljQUFCeEd3QUFnQnNBQUR3REFBRFZJQUFBcmhZQkFGVGFcXFxuQVFBWkNBQUFIK0FCQUFFREFBRGNHUUVBSmhjQkFCd0RBQUM0RndBQVd3RU9BTkFkQUFDZUR3QUFsQThBQUg4UEFBQXlIUUVBaXhvQkFOXFxcbm9kQUFCNkFRNEF0aFlCQUpzY0FRQ09Ed0FBSUJjQkFIMnFBQUNDRHdFQXRxa0FBRVFIQUFBQkh3RUFjMjhCQURJV0FRQTREZ0FBekFzQVxcXG5BRGNmQVFEeEJ3QUFRQU1BQUxNV0FRQUNFQUVBUnVrQkFCM1BBUUJKMmdFQUx0b0JBRDRiQUFBS0FRNEE0Z2tBQUMzUEFRQURDd0FBVHdcXFxua0FBSE1UQVFCSk5BRUFPQmdCQURhcUFBRE1EQUFBc0FFT0FLMEhBQUR4SFFBQXpSY0FBRlUwQVFEaUNnQUFQTThCQUNmUEFRQ0Zid0VBXFxcbkN1QUJBSjhjQVFCbzBRRUEzaGtCQURJWkFRREFIUUFBc0JBQkFFanBBUUFuMmdFQWVBTUJBQkFEQUFEeURRQUFPQkFCQUxRVUFRQTZDUVxcXG5BQTRCd0FBRXdKQUFCa2J3RUE3S2dBQUw4UkFRQXpFUUVBN0JzQUFEWGFBUUJOcVFBQUFNOEJBQzhEQUFBb3FRQUF4d1VBQUJrYUFBQlVcXFxuQXdBQVFoa0JBRFRQQVFDd0J3QUErZ29BQURJY0FBQU4yZ0VBSmM4QkFJc2RBUUMwRmdFQXh4b0FBTHlwQUFDSzBRRUFJZjRBQUlNQkRnXFxcbkNzQndBQVVEUUJBQzBCRGdEV0dRRUE0UjBBQUw0TUFBQmJCZ0FBRmdNQUFGa2FBQUFFNEFFQWNLWUFBRXZhQVFEZEZ3QUFDT0FCQUpFQlxcXG5EZ0FZRHdBQVB4UUJBSkFCRGdEanF3QUFUZG9CQU5VTUFBRGFEUUFBWXcwQUFEVU9BQUFlendFQUh0b0JBT2dCRGdDL0ZBRUFSZ2NBQU5cXFxuRWNBQUIxMmdFQTdPSUJBSllGQUFENkhRQUFOQU1BQUhkdkFRRGpDUUFBbndFT0FMb1hBQURCQ2dBQTR4MEFBRERoQVFDaEd3QUFxQUVPXFxcbkFNTWFBQUE0SEFFQXN4RUJBRmNEQUFBcUFRNEFyQllCQUhZUEFBRGdHUUVBY2hvQUFLSVBBQUJ5RndBQXN3VUFBUGNkQUFDMkhBRUFZOVxcXG5vQkFIQnZBUUQ0SEFBQVJ3Y0FBT1FTQVFEVDZBRUFNYW9BQU1NTUFBQU4vZ0FBTnhvQkFNc2RBQUFYQXdBQXlCMEFBQ3NjQUFDNkRnQUFcXFxuV2dnQUFEVVlBUUJzQXdBQXJ3VUFBRHNVQVFBUTJnRUFuaHdCQU9Hb0FBQmNBd0FBQXhzQUFHWURBQURFQlFBQURjOEJBSW9hQVFESUFRXFxcbjRBcVFFT0FPRUdBQUFrL2dBQUpxa0FBQ1NvQUFBdHFRQUF2QkVCQU9xckFBRDhDZ0FBN1IwQUFGb0dBQUJTQ1FBQVhkb0JBRllKQUFEaFxcXG5IQUFBTXhrQkFHZlJBUUNmcGdBQVBnMEFBTFVRQVFDeUZnRUFGK0FCQUQ0QkRnQ0EwUUVBWjlvQkFPdXFBQURSSFFBQXVLb0FBQ0xQQVFcXFxuRHhMQUFBMXdZQUFEQVpBQUEwMmdFQUpnTUFBRElRQUFEbkd3QUF4QWtBQUZmYUFRQnFFd0VBb2RvQkFIa0JEZ0RCREFBQUtSRUJBSU1QXFxcbkFRQTBFQUFBZ2dvQUFGR3BBQUJMTkFFQWZ5MEFBTWNKQUFBNUh3RUFOQjhCQUZ0dkFRQytDd0FBR2dNQUFJNGRBUUJKNlFFQXRob0FBRVxcXG5BYkFBQnQwUUVBZ2cwQUFFd1RBUUEvQXdBQVB4MEJBTllOQUFCRkZBRUFXQm9BQU40SUFBRENHZ0FBTkJzQUFQUWVBUUExSFFFQWxRRU9cXFxuQURjY0FBRGxxUUFBZ0trQUFJVUJEZ0NPQVE0QXVxZ0FBRHNaQUFBNzJnRUFTd2tBQUVnUEFRQThEUUFBeVIwQUFFWVFBUUFtR1FBQXNBXFxcblVBQUZVTUFBQThIQUVBNWdnQUFCY0dBQUFKQVE0QU5PRUJBQ3orQUFEbXF3QUFELzRBQVBZZEFBREpHZ0FBUEJBQUFEd0pBQUJVQVE0QVxcXG4ydzBBQUJQUEFRRENGQUVBNmlBQUFONEJEZ0RzQmdBQVh4QUFBRy9SQVFBbi9nQUF4UUVPQUlJQkRnQzFCUUFBQkFFT0FMNnBBQUFDNEFcXFxuRUF2d3dBQUlZWUFBQ0NHd0FBeGc4QUFDb0RBQUJ3QmdBQWdRa0FBSlVGQUFEZkNBQUF5Z2dBQUJVWEFBQkJDd0FBV0FZQUFNSWRBQUJjXFxcbkJnQUFNQUVPQUt3YkFBQWtIQUFBM2lBQUFMMFJBUUMwcUFBQWhnUUFBQUlEQUFBQ0FRNEFYaFFCQUQzYUFRQVJ6d0VBVVFFT0FMUUJEZ1xcXG5DM0JRQUF0Qm9BQUtJYkFBQ3QwUUVBTFJnQkFJdlJBUUM5RndBQUg4OEJBTWtLQUFDbkhBRUE2eDBBQUh2UkFRQm8yZ0VBekE0QUFEQWNcXFxuQUFDMUZnRUE1NmdBQUNvUkFRQTlHZ0VBYXhNQkFNVUZBQUJqRXdFQTlnZ0FBTEFhQUFBOUZnRUFnZ3dBQUVEUEFRQS9Ed0FBQUFFT0FOXFxcbk1OQUFBMUVBQUFkaG9BQUtUYUFRQVVBd0FBUmc4QkFIbHZBUUJaQVE0QW5BOEFBRHdCRGdBNkdBRUFBT0FCQUVIYUFRQkhHZ0VBTXdjQVxcXG5BR0RhQVFCQUZBRUFjaHNBQUs4SEFBQnpEd0FBSjZnQUFPa0JEZ0NXR2dFQUV1QUJBREFZQVFCRzJnRUE1aTBBQU5zY0FBQVdCZ0FBQWZcXFxuNEFBQUFUQVFCUkNRQUF2QW9BQUNtcUFBQXhHUUFBRjlvQkFHMGFBQUFqRndFQVNnOEJBQjRCRGdEa0JnQUFRd01BQU5JY0FBRFpJQUFBXFxcblBoWUJBS2dGQUFBdUVnRUE0QjBBQUQ0UUFBQXRFQUFBQzlvQkFNR3FBQUI4YndFQTJpQUFBRWlwQUFCNnBnQUFJODhCQURXcUFBQzhxQVxcXG5BQVZkb0JBTE1CRGdCWGJ3RUFCUW9CQUNvWEFRQjNHZ0FBc1JZQkFNRWRBQUFHendFQWRRb0FBSFZ2QVFCRkhRRUFQQnNBQURjUUFBQytcXFxuQVE0QXBRRU9BRE1ZQVFCVUNRQUFDLzRBQUc5dkFRRC9EZ0VBVGdZQUFDQURBQURQSFFBQUtmNEFBTDRKQUFBMUR3QUExZ3dBQUlrRUFBXFxcbkJLRFFBQXR4Y0FBUHdkQUFEb3F3QUF6aDBBQUd3YkFBRGZEUUFBa0c4QkFETVdBUUNVR2dFQVQ2a0FBRGNZQVFBQURRQUFjZEVCQUlzUVxcXG5BQUF5QndBQW1Sb0JBSWJSQVFBREF3QUFkd01CQUxNVUFRQVY0QUVBbnc4QUFNMEtBQURCcUFBQW85b0JBSmdjQVFDNkZRRUFld0VPQU1cXFxuY0xBQUJvRXdFQTV3Z0FBT01LQUFCTURBQUFOODhCQUQzUEFRRGpFZ0VBOFJzQUFPSVNBUUJ3MFFFQXM2a0FBR0lEQUFDRUR3QUFQd0VPXFxcbkFJTUVBQUN5QlFBQVlBRU9BSzRjQVFCUER3RUFZVzhCQU8rcUFBRFlBUTRBQmhvQkFEa0RBQUEyRmdFQXNoUUJBQzhjQVFBK0N3QUFPaFxcXG5ZQkFFa1BBUURxcUFBQVFRd0FBRlVHQUFBMEVnRUFMQU1BQUs4QkRnQi8wUUVBT3cwQUFDUGFBUUFlK3dBQXdnb0FBSzBiQUFBOEZnRUFcXFxubFE4QUFMK29BQUFvendFQU9RRU9BSVVQQVFDN0dnQUFLZG9CQVBRY0FBRG9CZ0FBMGVnQkFEd0xBQUFjQVE0QUUrQUJBTTRhQUFDckJRXFxcbkFBNWdvQkFPRWdBQUEvendFQSt4MEFBTTBJQUFBMkhBRUFPd2NBQUNvSUFBQzJGd0FBU0E0QUFPNGdBQUEzR1FFQTN4d0FBR0lCRGdBNlxcXG56d0VBMlFnQUFEY1dBUUQ3TFFBQWpBRU9BUGtkQUFCekVBRUFYeE1BQU5jSUFBQnpGd0FBNEFnQUFQTnFBUUFRQmdBQW5BRU9BQUVKQUFcXFxuQVk0QUVBSitBQkFDemFBUUJEQ3dBQURCZ0FBRk1YQUFDeEZBRUFzaFVCQU9lckFBQWRBd0FBQVF3QUFMUVJBUURpQVE0QTlRZ0FBTFVjXFxcbkFRQzhEQUFBR2hvQUFCVGFBUURISFFBQUdCb0FBR0lOQUFCQ0J3QUFXTm9CQUxrUkFRQTFHZ0VBdVJVQkFHa0RBQUNtQlFBQThLZ0FBR1xcXG5rQkRnQ3JGZ0VBeXc0QUFKa0ZBQUJaMmdFQTdDMEFBSmtjQVFCWUF3QUFLQkVCQUxXb0FBQVh6d0VBOG1vQkFEd1RBUUFSQndBQWFSTUJcXFxuQUhBYUFBQmlFQUFBVHFrQUFCSGFBUUNjQlFBQXVROEFBRUlkQVFBcXFRQUFrUjBCQUxvYUFBQnJHZ0FBTEJJQkFEWUJEZ0NHRUFBQVp4XFxcbkFBQUtJQkRnRDlDZ0FBRmRvQkFJTnZBUUFxMmdFQUtjOEJBQ2phQVFCd0d3QUF0QmNBQUxzT0FBQkhDUUFBY1JNQkFCc2FBQUJoQXdBQVxcXG5OQjBCQU5RY0FBQSt6d0VBTlJrQkFEQVJBUUJiR2dBQU5CRUJBRWtCRGdCR0ZBRUFZd01BQUlBQkRnQU0vZ0FBTlJ3QkFMWU9BQUNrRHdcXFxuQUFvQThBQVA4SUFBQzZGQUVBT1JRQkFIQUJEZ0JBRFFBQVh3RU9BTndHQUFESkVRRUFTQXdBQURRWEFBQkQyZ0VBTEtvQUFNME9BQUN4XFxcbkFRNEFJK0FCQUdCdkFRQ2RDQUFBVFE0QUFPNEhBQUFTQXdBQXhLZ0FBRXdEQUFBOEVBRUFLUWdBQUVMUEFRQ2kyZ0VBS1JjQkFGY0pBQVxcXG5EUkdRRUF4aDBBQUFqUEFRQy9HZ0FBbmdVQUFJRU5BQURUQVE0QUNkb0JBSDNSQVFEbEVnRUFrQjBCQUI3Z0FRQTE0UUVBRHdNQUFMSVFcXFxuQVFET0VRRUF4aGNBQU9Pb0FBQm1id0VBUGdvQUFETGhBUUJWQVE0QTd1UUJBS3NIQUFEdElBQUFZd2tBQU5BQkRnQy9BUTRBMHdnQUFOXFxcbjRjQUFDa0d3QUE0d3dBQURjVUFRQUNDd0FBUUF3QUFQUUlBQUE0SHdFQWlCQUFBRkNwQUFEdUd3QUFnYWdBQUtBQkRnQUFDUUFBMXVnQlxcXG5BQjRYQVFDMUFRNEFyQVVBQUNVQkRnRHZJQUFBdGdVQUFLY0JEZ0NOSFFFQWZBRU9BTXNNQUFBL0d3QUE2eUFBQUR3S0FBQlhBUTRBVnhcXFxub0FBS3pSQVFEdnFBQUFtQVVBQU9BU0FRQXJBUTRBZ0E4QUFOd2RBQUJMQXdBQWFCb0FBUENtQUFDYkJRQUFnUnNBQURKckFRQ3FEd0FBXFxcbm5CQUFBRTBEQUFBTUFRNEFHUU1BQUNVWkFBQTdHZ0VBR3dNQUFHUWFBQURVQ0FBQWQ2WUFBR0lMQUFCRkVBRUF5d29BQUM4UkFRRFVBUVxcXG40QUN0b0JBSzhWQVFBVEJnQUE5YW9BQVBFSUFBQldHZ0VBdndzQUFFeXFBQUI2QXdFQS94MEFBTDRLQUFBdU1BQUFPUnNBQUozYUFRQnFcXFxuR2dBQTloNEJBS29CRGdEcUVnRUFIT0FCQURrUUFBQzRCUUFBTkJ3QkFOc2dBQUF3RWdFQWd3d0FBRFlRQUFCSUNRQUEyeGtCQU8wQkRnXFxcbkF4SEFBQVB3b0JBTFVhQUFDVUhRRUFnNmtBQU0wTUFBREVGd0FBTVJrQkFFSWZBUUFvSEFBQU10b0JBRVVSQVFBcU1BQUFOUUVPQU1nS1xcXG5BQURIREFBQXJRRU9BQURhQVFBM0d3QUFid01BQUVNZEFRQ3RGZ0VBOVI0QkFQK29BQUFaMmdFQUNnTUFBTXdKQUFDc0RnRUFqQjBCQUFcXFxub2FBUUMwcWdBQUwvNEFBTUFLQUFDVUFRNEFYd1lBQUFjYUFRQmFBUTRBY3dFT0FDY2NBQURJRndBQUlBZ0FBRjBHQUFETEN3QUEzUUVPXFxcbkFFTVRBUUFKNEFFQVFRa0FBRklYQUFEa0hBQUFLUU1BQUJNWEFBQVlBUTRBMmhrQkFHcmFBUUR5Q0FBQWNROEFBRkZ2QVFDZUNBQUErQ1xcXG4wQUFBNEtBUURrTFFBQUtxb0FBSklCRGdEU0RRQUFnUXdBQU1jQkRnQTRDZ0VBZGdFT0FPa2dBQUNkQVE0QTV5QUFBQzREQUFBZDRBRUFcXFxuSk04QkFERUhBQURFQ2dBQWZRRU9BSHR2QVFBMEhBQUF0UlVCQUFZREFBQjJid0VBeUFzQUFCb0dBQUJKcVFBQThBZ0FBTEljQVFBL0V3XFxcbkVBdFJFQkFFUVRBUUF0Q0FBQTB4MEFBSExSQVFBTEFRNEE5aTBBQU9BR0FBQi9FQUVBZEc4QkFFY2RBUUJER1FFQU1Hc0JBQUVhQVFCTFxcXG5EUUFBZTZvQUFDTGFBUURzQVE0QVJ6UUJBQXZQQVFDYUhBRUEraTBBQU1JQkRnQWtGd0VBaFFRQUFGSWFBUUROQVE0QUE5b0JBTHVvQUFcXFxuQWlGd0VBTUJrQkFPMEdBQUFWQmdBQXFOb0JBRElCRGdBenp3RUFRaEFCQU5nY0FBQVhHZ0FBY1FFT0FKOElBQURkR1FFQVh0b0JBS3JSXFxcbkFRQWsyZ0VBQVFzQUFGNGFBQUE5SFFFQVpRRU9BR2NEQUFDMkVBRUFkQkFCQURqUEFRQTNFZ0VBOHgwQUFPVWRBQUJBQVE0QWNxWUFBRVxcXG5vSEFBQjJBd0VBRFJnQUFNa0JEZ0JqREFBQVRBWUFBS2diQUFCOER3QUFWVzhCQUEwQkRnQ0VCQUFBcnh3QkFBWUJEZ0FZQXdBQTVCa0JcXFxuQUNzREFBQnVBUTRBT0JRQkFLOFdBUURQRndBQVRUUUJBTy9rQVFBREh3RUFSOW9CQUcwUUFBRGZIUUFBUncwQUFFb01BQUJNQ2dBQTJoXFxcbndBQUpFRkFBQldDd0FBaDlFQkFFY0tBQUFNQ2dFQWdRb0FBTGFvQUFDVkhRRUF3QXdBQUlNS0FBQW5HUUFBMkFZQUFCc0JEZ0RXQmdBQVxcXG42aTBBQUdFYUFBQVhBUTRBNUNBQUFMaXBBQUNFRHdFQTNRZ0FBTHNCRGdEU0hRQUFCZG9CQUljUEFBRHFHd0FBMFJjQUFDZ1hBUURESFFcXFxuQUFzQlFCQUxtb0FBQThCd0FBU0FvQUFFNEpBQUJMcVFBQXRnOEFBTUVYQUFDbkJRQUE4aDBBQU5jTEFBQ0REUUFBTzg4QkFPUnZBUUQ5XFxcbkRnRUFaUU1BQUpvSUFBQ21Ed0FBUE5vQkFKMGNBUUFVQVE0QXR4b0FBQjhJQUFEb3FBQUFPeGtCQUxFT0FBQXRBd0FBTE04QkFPU29BQVxcXG5EWEFRNEFuUVVBQU8yckFBQjRid0VBQkJzQUFQTUlBQUFCRVFFQXZoVUJBREVkQVFBekhBQUFCODhCQUFjREFBQlJCZ0FBNVJ3QUFOa2RcXFxuQUFDNEZRRUFyQUVPQUQ0REFBQWdHUUFBNlFnQUFQa3RBQUJZYndFQTFRRU9BRzF2QVFCS0FRNEFUUTBBQUtBY0FRQUt6d0VBNkJ3QUFHXFxcbkFRQUFDV0hBRUFYZ01BQUlZQkRnQzdGUUVBMXhrQkFQUnFBUUNwMmdFQWdna0FBTE1jQVFBcXp3RUFwQndCQURzREFBQmRFd0FBTlJRQlxcXG5BTGdVQVFDOENRQUFCZUFCQUlJUUFRQ3IwUUVBQXdvQkFQR29BQUJLRGdBQW9od0JBT3lyQUFBY0NBQUE0aHdBQUE3YUFRRGZCZ0FBSXZcXFxuNEFBT1ljQUFDSEVBQUFqdzhBQUk4YUFRRENDUUFBVHRvQkFBYmdBUURRQ0FBQTJCMEFBQlFYQUFCQUNnQUFKZ0VPQUZNYUFRQlJOQUVBXFxcbldSQUFBR0hhQVFEdDRnRUFmTkVCQUhpbUFBQ1pNQUFBWlc4QkFERUJEZ0FtQ0FBQVBSd0JBUE1OQUFBUEdBQUFWaG9BQUlvZEFRRFpIQVxcXG5BQTRLZ0FBQ2tCRGdBNEdRQUFBQjhCQUVVREFBQUNHd0FBdmFrQUFFTVVBUUFHcUFBQXVha0FBQXphQVFEV0FRNEFEK0FCQURJWkFBQlVcXFxuTkFFQVN4TUJBQ29aQUFCNUR3QUFZQm9BQUZrR0FBQTZId0VBMWVnQkFBRU5BQUEwQndBQVJoRUJBQWdCRGdCVEFRNEE2d1lBQURzQkRnXFxcbkJ6R2dBQVp3RU9BSmdhQVFCeUR3QUFNUmdCQU13ZEFBQ0JEd0FBMVJrQkFHaHZBUUNRRHdBQXV4UUJBUDB0QUFBQS9nQUE5d2dBQUZiYVxcXG5BUUNIQVE0QXdLa0FBSk1QQUFCN3BnQUFSQU1BQU9JZ0FBRDZDQUFBS3dnQUFLRUZBQUNqR3dBQVF0b0JBQk1EQUFCbUV3RUFiQm9BQU5cXFxuc0JEZ0FwcVFBQTVRRU9BQnZhQVFDd0ZnRUFKQU1BQUw0WEFBREFGd0FBM1NBQUFEWVlBUUJRRHdFQVBRY0FBTDBCRGdEUkRRQUFNeGtBXFxcbkFCdlBBUUFiQ0FBQVE2b0FBTzRCRGdEY0ZRRUE1QjBBQUVrREFBQXlIQUVBaEFFT0FGT3BBQURzSUFBQVJ3RU9BREhQQVFBdHFnQUFSd1xcXG5zQUFNOElBQUFzcVFBQUpPQUJBQnZnQVFETkdnQUFnUUVPQUNRQkRnQmlHZ0FBdndrQUFKb0ZBQUJNRFFBQUp4Y0JBSnNRQUFEQUZRRUFcXFxuN3kwQUFBNEJEZ0R0SEFBQU1Lb0FBS29iQUFDL3FnQUFHTm9CQUsvYUFRQWEyZ0VBZ2RFQkFLWWJBQUFDendFQXFSd0JBTG9CRGdBRENRXFxcbkFBQmM4QkFMOEtBQUNNRUFBQXZ4VUJBRVlOQUFBUkFRNEFvQVVBQURvY0FRQWxGd0VBQkF3QUFOVUlBQUI1QXdFQUNBTUFBQ0RnQVFDYVxcXG5Ed0FBd3hjQUFBYitBQUJWR2dBQXNCVUJBTGNSQVFEVUlBQUFoMjhCQUFNS0FBQmpBUTRBS3hBQUFPSUdBQUM3cVFBQXFRY0FBRTJxQUFcXFxuQk1Ed0VBbHgwQkFMd1VBUUR3TEFBQXVCb0FBR2NhQUFCckVBQUFkUThBQUVnVEFRRDVIQUFBY0JBQkFGNEdBQUNaQVE0QWV3OEFBSG1tXFxcbkFBQUZHZ0VBc2hvQUFFb0RBQUFzcUFBQU51RUJBRXNQQVFEU0lBQUFSczhCQUo3YUFRRGJDQUFBT1E4QUFMc1JBUUFtMmdFQUpnMEJBQVxcXG56Z0FRQXNFQUFBaG04QkFDNEJEZ0JFNlFFQXR3OEFBRFliQUFCSERBQUFDeGdBQUZRR0FBQ3RIQUVBN0FnQUFHeHZBUUJFR3dBQXpnNEFcXFxuQU53TkFBRG5BUTRBZHdFT0FOY2RBQUJlQVE0QVZRc0FBUDhLQUFES0RBQUFPeFlCQUFFYkFBRG5FZ0VBQVFvQkFKa1BBQUErR2dFQUFkXFxcbm9CQUR3VUFRQ1hHZ0VBbmdFT0FKb0JEZ0JlRXdBQWl3RU9BRThEQUFBOUdRRUFhQU1BQU82cUFBQXJxZ0FBUnc4QkFFNFBBUUNSRHdBQVxcXG5FZ0VPQUVBV0FRRHVDQUFBZ0JBQkFETWNBUUIvYndFQTNoMEFBS3ZhQVFCK0FRNEFSUWtBQUpNRkFBQmEyZ0VBdXdVQUFFSUpBQUF3MmdcXFxuRUE5cW9BQUZEYUFRRHdid0VBdDZnQUFFQVpBUUJnQXdBQTlTMEFBRDhIQUFCNEdnQUEvZ2tBQU9VSUFBRE9Gd0FBVW04QkFDNytBQUF2XFxcbkhBQUFMaGdCQUg4QkRnRDBMUUFBb3dFT0FERVdBUUR3QndBQTh4NEJBTDBGQUFEK0hRQUFQaE1CQUFJYUFRQVFBUTRBL2dvQUFPNHRBQVxcXG5DbEJRQUFsQVVBQUFUYUFRRHZDQUFBUlFFT0FBNERBQUJIQXdBQVlnd0FBQW4rQUFBN0V3RUF2UlFCQUxZUkFRQVF6d0VBUHRvQkFMa0JcXFxuRGdCSTJnRUFUUXNBQU1VZEFBRFVEUUFBUmVrQkFCZ0dBQUIwRHdBQVF4QUJBSDhhQUFEV0NBQUFqK0FCQURBY0FRQ01HZ0VBeWdFT0FEXFxcbklEQUFEd2FnRUEzZzBBQUhwdkFRQVBDZ0VBMENBQUFHSVRBUUFONEFFQUt4RUJBS01GQUFCd0NnQUFaZG9CQUZzYUFRQzNxUUFBb3h3QlxcXG5BTGdQQUFBekVBQUF6eEVCQUJvQkRnQWlDQUFBd2dVQUFETVhBQUIxQVE0QXVSb0FBRTRCRGdBcTRBRUFQZzhBQUd3UUFBQTdDUUFBNVNcXFxuMEFBTXdYQUFEaklBQUFuOW9CQURnWkFRQTJCd0FBS2VBQkFBTU5BQUROQ3dBQXF4d0JBRGtRQVFEczVBRUFBODhCQUEwREFBQ0pFQUFBXFxcbkt6QUFBQUVUQVFBeEVRRUFLNmtBQUg3UkFRREtFUUVBME9nQkFGQUdBQUR6TFFBQTNBZ0FBQzRRQUFCTXFRQUFBd3dBQUxLcUFBQzFEZ1xcXG5BQTRxZ0FBSGNQQUFBNEFRNEE3UnNBQU04QkRnRHBFZ0VBUkFFT0FETWRBUURBR2dBQXRnRU9BTUlYQUFERkNnQUFSQjBCQURrSEFBQTVcXFxuR0FFQWhSZ0FBQUFSQVFCTEJnQUFwUnNBQUxNUUFRQkhEZ0FBMGdnQUFPOEhBQUExQXdBQWhnOEFBRjBhQUFBTUF3QUFmYVlBQUdYUkFRXFxcbkN3SEFFQVBRTUFBT3NiQUFDUGJ3RUFXaG9CQU9VS0FRQVQyZ0VBUFJBQUFCTFBBUUEyRGdBQU1CWUJBRVFKQUFDM3FnQUFPZ29CQURIYVxcXG5BUUF3endFQThnY0FBQW5QQVFCTUFRNEFGYzhCQUVJTkFBQkdDUUFBUU5vQkFNWU1BQURCQ1FBQTV3WUFBS2tQQUFDbkd3QUE4d3dBQUVcXFxuRURBQUM2QlFBQXpCb0FBTVlMQUFEYkhRQUFKd01BQUMzYUFRQjRBUTRBL3kwQUFEUnJBUURLQ3dBQU9Sa0FBT1liQUFDdER3QUEweGtCXFxcbkFMU3BBQUE2SFFFQWlBUUFBT0FnQUFBMnp3RUFOd01BQUw0YUFBQXhFQUFBMUIwQUFOY0pBQUEvRmdFQUljOEJBTVFkQUFBRS9nQUFpUVxcXG5FT0FHb0RBQURkSFFBQXRoUUJBSUFSQVFCcUFRNEFhbThCQVBGdkFRQW5BUTRBTVJJQkFFRVNBUUJXQmdBQVlRRU9BRVlEQUFBNkZBRUFcXFxuMWh3QUFFa0pBQUFtSEFBQXNSQUJBRFlVQVFBREdnRUFaeE1CQUs3aUFRQUsvZ0FBRHVBQkFDVURBQUNjMmdFQVpSb0FBSU1KQUFBSUdnXFxcbkVBdVJjQUFFc01BQUIwQVE0QVJOSUJBRTgwQVFEbkxRQUFPQnNBQURvQkRnRGNJQUFBSHdFT0FCblBBUURSQ0FBQUVPQUJBRlVKQUFCcFxcXG5id0VBcXc0QkFNY1hBQUJBRXdFQUhRZ0FBQ2dEQUFBbzRBRUF2QmNBQUxPcUFBQzNBUTRBVGc0QUFMd2FBQUJtMmdFQU1oY0FBSzRCRGdcXFxuQkR6d0VBUTlJQkFCSVhBQUJDREFBQVB3c0FBQzB3QUFEbUFRNEFITm9CQU8wdEFBQkJHd0FBdEJ3QkFFZ0JEZ0FqQVE0QWt4MEJBSElRXFxcbkFBQTJHUUFBWXhBQUFGWU1BQUE1R2dFQTcrSUJBS3NCRGdEUUZ3QUFRdElCQUZrREFBQStFZ0VBT1JZQkFITWJBQUJTQVE0QWpSb0JBUFxcXG5GcUFRQmJBd0FBd2dzQUFCTGFBUURhQVE0QWt4d0JBRW9KQUFBK0J3QUFjaE1CQUVnTkFBRHBIUUFBd1JRQkFLNEhBQUJVR2dFQU9Rb0JcXFxuQURnV0FRRHJMUUFBT2djQUFBL1BBUUNyRHdBQXlob0FBTU9vQUFDQnFRQUF4Qm9BQURQaEFRRGxxd0FBVXRvQkFEY09BQUFGQVE0QVZ4XFxcbk1CQURZREFBQStEQUFBRHdFT0FJZ0JEZ0RMRVFFQVJCUUJBRUFKQUFDc0hBRUE3YWdBQUxjVUFRQXlHQUVBUXdjQUFOZ0lBQUFtNEFFQVxcXG5VOW9CQUQ4Y0FRQUcyZ0VBbXdFT0FOSVpBUUEwcWdBQUFCc0FBREFIQUFCQU5BRUF4QXdBQUVZQkRnQWxIQUFBQ3dNQUFKVWFBUUFqQXdcXFxuQUFDK0FCQUVNSkFBQ05Ed0FBeWcwQUFDVU5BUURwTFFBQXF4c0FBTEVWQVFBcjJnRUF2QTRBQURIaEFRQ0tBUTRBSXhrQUFNRUZBQURmXFxcbklBQUFQUkFCQUNlcEFBQXVIQUFBN0FjQUFJSnZBUURrQVE0QUpkb0JBSG9QQUFBZ3p3RUFIUmNCQUVjVEFRRG1FZ0VBaU5FQkFFRWRBUVxcXG5Cb0VBQUFuQWdBQURZZkFRQkJFd0VBTDZvQUFGWURBQUEzQVE0QVREUUJBTEFQQUFCckFRNEE5QjBBQUMwUkFRRGlIUUFBT3hBQkFQa0lcXFxuQUFEQUFRNEFRQjhCQU44WkFRQ0RFQUFBTTZvQUFFZzBBUUMwRHdBQXd3b0FBT1NyQUFBOEdnRUFUUk1CQUxrVUFRQTZFQUFBSU5vQkFOXFxcbm9JQUFCV2J3RUFtakFBQUNjUkFRQ1RHZ0VBS3hrQUFKY1BBQURWSEFBQVg5b0JBSVFRQUFDMERnQUFjQk1CQVA0T0FRQnBFQUFBd0JFQlxcXG5BRFFZQVFEVUdRRUFQQmtCQUJ6UEFRQW9HUUFBdnhjQUFHemFBUUJXQVE0QThoc0FBQVFEQUFDaEhBRUFNeElCQUZrSUFBQkNDZ0FBTFJcXFxud0FBRGdIQUFDU0JRQUFieHNBQUZVREFBRGREUUFBY1JvQUFNRUxBQURmRWdFQVRqUUJBS3phQVFBVTRBRUFSQTBBQVBnZEFBQlBid0VBXFxcbjRBRU9BQmJhQVFBaEZ3RUFBZzBBQU9VZ0FBQzBGUUVBUWhzQUFFTWJBQUJBQ3dBQWJBRU9BTzBJQUFDYUVBQUFBeE1CQURYUEFRQktOQVxcXG5FQXhSY0FBRGtjQVFCdnBnQUFQd2tBQU5jZ0FBQ3VCUUFBRk04QkFCYmdBUURyQ0FBQVUyOEJBRVVIQUFCVEF3QUFQQXdBQUJVREFBQlVcXFxuYndFQXVRNEFBTDRVQVFETENBQUFnVzhCQU5zR0FBQ25Cd0FBU3dvQUFPWWdBQUQxSFFBQXBBRU9BQ1ArQUFBckZ3RUEyUTBBQUNrWkFBXFxcbkF2TUFBQVRRWUFBQUVLQUFESUNRQUEwU0FBQUk4QkRnRGxxQUFBd3FnQUFERnJBUUR4cGdBQWtnOEFBUDBIQUFCTkNRQUFTdzRBQUQ0WlxcXG5BUUFWQVE0QVBna0FBQ0VJQUFEUUhBQUFLaHdBQURVSEFBQWpxQUFBcEFVQUFDRUJEZ0JjQVE0QWVSb0FBSU1QQUFEaEVnRUFSNmtBQUZcXFxuNXZBUUFHQ2dFQTB4Y0FBSVhSQVFCWERRQUFZbThCQUpZUEFBQ3pGUUVBTlI4QkFCa0JEZ0I5YndFQUF2NEFBRVlNQUFCRXp3RUE0QzBBXFxcbkFDNnFBQUM2RVFFQXRCQUJBTkxvQVFDU0hBRUFhZEVCQUY4REFBQkFCd0FBM0J3QUFDMFNBUURvTFFBQVNBY0FBTWtPQUFCakdnQUFYTlxcXG5vQkFEVWJBQURDREFBQUxCRUJBQk1CRGdEYUJnQUFJaGtBQU9NdEFBQ3BHQUFBcVJzQUFNd0lBQUJYR2dFQUx4QUFBRGNIQUFCU0JnQUFcXFxuRFFvQkFMUUZBQUFBRUFFQXB3OEFBT01HQUFEekd3QUFwZ0VPQUZJREFBQUZBd0FBZ2c4QUFISUJEZ0ExRWdFQVF3MEFBR29RQUFEb0lBXFxcbkFBbEJ3QkFHNGJBQUN4QlFBQUZBWUFBUHNJQUFBeUVRRUFPeEFBQUxrUUFRRG9FZ0VBYXhzQUFHdmFBUUFzSEFBQU9oc0FBTHdCRGdCa1xcXG4yZ0VBaFJBQUFFWGFBUUEySFFFQThDQUFBQS9hQVFDWkNBQUEyUUVPQUI0REFBQ2xEd0FBTEJnQkFLRUJEZ0RHQVE0QVVBTUFBRkkwQVFcXFxuRGpIQUFBNFMwQUFQd3RBQUJLMmdFQUJNOEJBR052QVFDSjBRRUFBUUVPQUUwQkRnQ1NHZ0VBRndnQUFERWNBUUJBRUFFQTN3RU9BQ0hnXFxcbkFRQUNFd0VBNFFFT0FHWUJEZ0EwR2dFQXpCRUJBT3lxQUFCaUNRQUFCLzRBQUJiUEFRRHZHd0FBNmdnQUFCSGdBUUIrRHdBQXA5b0JBRFxcXG5jWkFBQnRBUTRBN2gwQUFDaitBQUJiQ0FBQVNxa0FBTlVkQUFEcUhRQUFieG9BQUFQK0FBQjFHZ0FBNmdZQUFINXZBUUEzRHdBQUx4Z0JcXFxuQUo4RkFBQnAyZ0VBckE4QUFEOE1BQUJCRFFBQWhHOEJBSzRQQUFCb0FRNEFSQXdBQUU0REFBRDhDQUFBdndVQUFOQU5BQUR3R3dBQTd5XFxcbndBQUxNYUFBQS9EUUFBSzg4QkFNQ29BQUJjR2dBQVoyOEJBS3JhQVFCdkFRNEFoTm9CQVBJdEFBQ3BCUUFBUFFFT0FFTU1BQUEyMmdFQVxcXG5Bd0VPQVAwSUFBQzZEd0FBeUE0QUFCL2FBUUMxcVFBQTZCc0FBQ3YrQUFDTkVBQUEyUVlBQU4wY0FBQVdDQUFBZHFZQUFCZ0lBQUJmYndcXFxuRUFxQThBQUpzUEFBQ2REd0FBTVE0QUFKRWFBUUFSQmdBQVN3c0FBRmNMQUFCZEFRNEFqeEFBQUFIZ0FRREtGd0FBNFFnQUFKMjhBUUR4XFxcbkxRQUFRZ3NBQUI0SUFBQlpid0VBSVA0QUFKY0ZBQUFCendFQU9CQUFBRm9EQUFDV0FRNEFiaG9BQUtYYUFRQWhBd0FBVWRvQkFOSVhBQVxcXG5DdDJnRUFPZ01BQUZZUUFBQ3hHZ0FBencwQUFFZnBBUUFBQXdBQUpBMEJBQUlLQVFCQ0V3RUE1eHdBQUI4REFBQnpFQUFBVXdZQUFMSVBcXFxuQUFBekdnRUF6QUVPQUFMYUFRQXpBUTRBNGkwQUFETURBQUJ4Q2dBQTZ3RU9BSllkQVFBU0JnQUF1S2dBQU9nSUFBQ21IQUVBNkIwQUFFXFxcbi9hQVFDb0J3QUFPUTRBQUlLcEFBQnVBd0FBT2hrQUFKRnZBUUFuRFFFQWVBOEFBRjBEQUFBdjJnRUFOaG9CQUxDcUFBQU8vZ0FBclFVQVxcXG5BTllkQUFCQ0FRNEEvUjBBQUM4U0FRRGtDQUFBZktvQUFEc2JBQUJJQ3dBQXZBVUFBTzZvQUFDWEhBRUF1QkFCQUxJQkRnQWlBUTRBamhcXFxub0JBRmdhQVFCckF3QUFNUU1BQUhGdkFRQStGQUVBdWhBQkFDNFJBUUNiQ0FBQXdSb0FBRU1CRGdEdEJ3QUFkS1lBQVBBdEFBQmkyZ0VBXFxcbnZhZ0FBRDBiQUFBOEhRRUFTd0VPQURLcUFBQlJHZ0VBa204QkFHYlJBUURJREFBQXloMEFBTGdCRGdESUdnQUF5UmNBQUFqK0FBQTRBd1xcXG5BQTV4MEFBSTBCRGdDZXBnQUFUTm9CQVBNSEFBQTFhd0VBVVFvQUFDV29BQUJ4RUFBQVB4OEJBRWdEQUFDM0ZnRUF3d2tBQU83aUFRQTBcXFxuRGdBQWJRTUFBT21yQUFEM0hBQUFOUmtBQUtvRkFBQS9FQUVBQ1JvQkFEL2FBUUNLRUFBQVhHOEJBTllnQUFEckJ3QUFLdjRBQUpNQkRnXFxcbkJBSFFFQXVRVUFBSDBQQUFCYWJ3RUFsd0VPQU0wSkFBQzFEd0FBQjlvQkFORUJEZ0NBcUFBQWZCb0FBS1VjQVFETENRQUFzdzhBQUNVSVxcXG5BQUE2RUFFQUp3Z0FBRXJwQVFENENBQUFmaTh1WTJGeVoyOHZjbVZuYVhOMGNua3ZjM0pqTDJsdVpHVjRMbU55WVhSbGN5NXBieTAyWmpcXFxuRTNaREl5WW1KaE1UVXdNREZtTDNWdWFXTnZaR1V0Ym05eWJXRnNhWHBoZEdsdmJpMHdMakV1TWpJdmMzSmpMM0JsY21abFkzUmZhR0Z6XFxcbmFDNXljd0JrSkJNQVp3QUFBQ3NBQUFBTkFBQUFaQ1FUQUdjQUFBQXNBQUFBRXdBQUFBQUFBQUFJQUFBQUF3QUFBQWtBQUFBSkFBQUFGUVxcXG5BQUFBb0FBQUFLQUFBQUFnQUFBQXNBQUFBTEFBQUFGUUFBQUF3QUFBQU1BQUFBRmdBQUFBMEFBQUFOQUFBQUFnQUFBQTRBQUFBYkFBQUFcXFxuQXdBQUFCd0FBQUFlQUFBQUFnQUFBQjhBQUFBZkFBQUFGUUFBQUNBQUFBQWdBQUFBRmdBQUFDRUFBQUFpQUFBQURnQUFBQ01BQUFBbEFBXFxcbkFBQndBQUFDWUFBQUFxQUFBQURnQUFBQ3NBQUFBckFBQUFCZ0FBQUN3QUFBQXNBQUFBQkFBQUFDMEFBQUF0QUFBQUJnQUFBQzRBQUFBdlxcXG5BQUFBQkFBQUFEQUFBQUE1QUFBQUJRQUFBRG9BQUFBNkFBQUFCQUFBQURzQUFBQkFBQUFBRGdBQUFFRUFBQUJhQUFBQUNRQUFBRnNBQUFcXFxuQmdBQUFBRGdBQUFHRUFBQUI2QUFBQUNRQUFBSHNBQUFCK0FBQUFEZ0FBQUg4QUFBQ0VBQUFBQXdBQUFJVUFBQUNGQUFBQUFnQUFBSVlBXFxcbkFBQ2ZBQUFBQXdBQUFLQUFBQUNnQUFBQUJBQUFBS0VBQUFDaEFBQUFEZ0FBQUtJQUFBQ2xBQUFBQndBQUFLWUFBQUNwQUFBQURnQUFBS1xcXG5vQUFBQ3FBQUFBQ1FBQUFLc0FBQUNzQUFBQURnQUFBSzBBQUFDdEFBQUFBd0FBQUs0QUFBQ3ZBQUFBRGdBQUFMQUFBQUN4QUFBQUJ3QUFcXFxuQUxJQUFBQ3pBQUFBQlFBQUFMUUFBQUMwQUFBQURnQUFBTFVBQUFDMUFBQUFDUUFBQUxZQUFBQzRBQUFBRGdBQUFMa0FBQUM1QUFBQUJRXFxcbkFBQUxvQUFBQzZBQUFBQ1FBQUFMc0FBQUMvQUFBQURnQUFBTUFBQUFEV0FBQUFDUUFBQU5jQUFBRFhBQUFBRGdBQUFOZ0FBQUQyQUFBQVxcXG5DUUFBQVBjQUFBRDNBQUFBRGdBQUFQZ0FBQUM0QWdBQUNRQUFBTGtDQUFDNkFnQUFEZ0FBQUxzQ0FBREJBZ0FBQ1FBQUFNSUNBQURQQWdcXFxuQUFEZ0FBQU5BQ0FBRFJBZ0FBQ1FBQUFOSUNBQURmQWdBQURnQUFBT0FDQUFEa0FnQUFDUUFBQU9VQ0FBRHRBZ0FBRGdBQUFPNENBQUR1XFxcbkFnQUFDUUFBQU84Q0FBRC9BZ0FBRGdBQUFBQURBQUJ2QXdBQURRQUFBSEFEQUFCekF3QUFDUUFBQUhRREFBQjFBd0FBRGdBQUFIWURBQVxcXG5CM0F3QUFDUUFBQUhvREFBQjlBd0FBQ1FBQUFINERBQUIrQXdBQURnQUFBSDhEQUFCL0F3QUFDUUFBQUlRREFBQ0ZBd0FBRGdBQUFJWURcXFxuQUFDR0F3QUFDUUFBQUljREFBQ0hBd0FBRGdBQUFJZ0RBQUNLQXdBQUNRQUFBSXdEQUFDTUF3QUFDUUFBQUk0REFBQ2hBd0FBQ1FBQUFLXFxcbk1EQUFEMUF3QUFDUUFBQVBZREFBRDJBd0FBRGdBQUFQY0RBQUNDQkFBQUNRQUFBSU1FQUFDSkJBQUFEUUFBQUlvRUFBQXZCUUFBQ1FBQVxcXG5BREVGQUFCV0JRQUFDUUFBQUZrRkFBQ0pCUUFBQ1FBQUFJb0ZBQUNLQlFBQURnQUFBSTBGQUFDT0JRQUFEZ0FBQUk4RkFBQ1BCUUFBQndcXFxuQUFBSkFGQUFDUUJRQUFFUUFBQUpFRkFBQzlCUUFBRFFBQUFMNEZBQUMrQlFBQUVRQUFBTDhGQUFDL0JRQUFEUUFBQU1BRkFBREFCUUFBXFxcbkVRQUFBTUVGQUFEQ0JRQUFEUUFBQU1NRkFBRERCUUFBRVFBQUFNUUZBQURGQlFBQURRQUFBTVlGQUFER0JRQUFFUUFBQU1jRkFBREhCUVxcXG5BQURRQUFBTWdGQUFEL0JRQUFFUUFBQUFBR0FBQUZCZ0FBQVFBQUFBWUdBQUFIQmdBQURnQUFBQWdHQUFBSUJnQUFBQUFBQUFrR0FBQUtcXFxuQmdBQUJ3QUFBQXNHQUFBTEJnQUFBQUFBQUF3R0FBQU1CZ0FBQkFBQUFBMEdBQUFOQmdBQUFBQUFBQTRHQUFBUEJnQUFEZ0FBQUJBR0FBXFxcbkFhQmdBQURRQUFBQnNHQUFCS0JnQUFBQUFBQUVzR0FBQmZCZ0FBRFFBQUFHQUdBQUJwQmdBQUFRQUFBR29HQUFCcUJnQUFCd0FBQUdzR1xcXG5BQUJzQmdBQUFRQUFBRzBHQUFCdkJnQUFBQUFBQUhBR0FBQndCZ0FBRFFBQUFIRUdBQURWQmdBQUFBQUFBTllHQUFEY0JnQUFEUUFBQU5cXFxuMEdBQURkQmdBQUFRQUFBTjRHQUFEZUJnQUFEZ0FBQU44R0FBRGtCZ0FBRFFBQUFPVUdBQURtQmdBQUFBQUFBT2NHQUFEb0JnQUFEUUFBXFxcbkFPa0dBQURwQmdBQURnQUFBT29HQUFEdEJnQUFEUUFBQU80R0FBRHZCZ0FBQUFBQUFQQUdBQUQ1QmdBQUJRQUFBUG9HQUFBUUJ3QUFBQVxcXG5BQUFCRUhBQUFSQndBQURRQUFBQklIQUFBdkJ3QUFBQUFBQURBSEFBQktCd0FBRFFBQUFFc0hBQUNsQndBQUFBQUFBS1lIQUFDd0J3QUFcXFxuRFFBQUFMRUhBQUMvQndBQUFBQUFBTUFIQUFEcUJ3QUFFUUFBQU9zSEFBRHpCd0FBRFFBQUFQUUhBQUQxQndBQUVRQUFBUFlIQUFENUJ3XFxcbkFBRGdBQUFQb0hBQUQ4QndBQUVRQUFBUDBIQUFEOUJ3QUFEUUFBQVA0SEFBQVZDQUFBRVFBQUFCWUlBQUFaQ0FBQURRQUFBQm9JQUFBYVxcXG5DQUFBRVFBQUFCc0lBQUFqQ0FBQURRQUFBQ1FJQUFBa0NBQUFFUUFBQUNVSUFBQW5DQUFBRFFBQUFDZ0lBQUFvQ0FBQUVRQUFBQ2tJQUFcXFxuQXRDQUFBRFFBQUFDNElBQUJZQ0FBQUVRQUFBRmtJQUFCYkNBQUFEUUFBQUZ3SUFBQmZDQUFBRVFBQUFHQUlBQUJxQ0FBQUFBQUFBR3NJXFxcbkFBQnZDQUFBRVFBQUFIQUlBQUNPQ0FBQUFBQUFBSThJQUFDUENBQUFFUUFBQUpBSUFBQ1JDQUFBQVFBQUFKSUlBQUNYQ0FBQUVRQUFBSlxcXG5nSUFBQ2ZDQUFBRFFBQUFLQUlBQURKQ0FBQUFBQUFBTW9JQUFEaENBQUFEUUFBQU9JSUFBRGlDQUFBQVFBQUFPTUlBQUFDQ1FBQURRQUFcXFxuQUFNSkFBQTVDUUFBQ1FBQUFEb0pBQUE2Q1FBQURRQUFBRHNKQUFBN0NRQUFDUUFBQUR3SkFBQThDUUFBRFFBQUFEMEpBQUJBQ1FBQUNRXFxcbkFBQUVFSkFBQklDUUFBRFFBQUFFa0pBQUJNQ1FBQUNRQUFBRTBKQUFCTkNRQUFEUUFBQUU0SkFBQlFDUUFBQ1FBQUFGRUpBQUJYQ1FBQVxcXG5EUUFBQUZnSkFBQmhDUUFBQ1FBQUFHSUpBQUJqQ1FBQURRQUFBR1FKQUFDQUNRQUFDUUFBQUlFSkFBQ0JDUUFBRFFBQUFJSUpBQUNEQ1FcXFxuQUFDUUFBQUlVSkFBQ01DUUFBQ1FBQUFJOEpBQUNRQ1FBQUNRQUFBSk1KQUFDb0NRQUFDUUFBQUtvSkFBQ3dDUUFBQ1FBQUFMSUpBQUN5XFxcbkNRQUFDUUFBQUxZSkFBQzVDUUFBQ1FBQUFMd0pBQUM4Q1FBQURRQUFBTDBKQUFEQUNRQUFDUUFBQU1FSkFBREVDUUFBRFFBQUFNY0pBQVxcXG5ESUNRQUFDUUFBQU1zSkFBRE1DUUFBQ1FBQUFNMEpBQUROQ1FBQURRQUFBTTRKQUFET0NRQUFDUUFBQU5jSkFBRFhDUUFBQ1FBQUFOd0pcXFxuQUFEZENRQUFDUUFBQU44SkFBRGhDUUFBQ1FBQUFPSUpBQURqQ1FBQURRQUFBT1lKQUFEeENRQUFDUUFBQVBJSkFBRHpDUUFBQndBQUFQXFxcblFKQUFENkNRQUFDUUFBQVBzSkFBRDdDUUFBQndBQUFQd0pBQUQ5Q1FBQUNRQUFBUDRKQUFEK0NRQUFEUUFBQUFFS0FBQUNDZ0FBRFFBQVxcXG5BQU1LQUFBRENnQUFDUUFBQUFVS0FBQUtDZ0FBQ1FBQUFBOEtBQUFRQ2dBQUNRQUFBQk1LQUFBb0NnQUFDUUFBQUNvS0FBQXdDZ0FBQ1FcXFxuQUFBRElLQUFBekNnQUFDUUFBQURVS0FBQTJDZ0FBQ1FBQUFEZ0tBQUE1Q2dBQUNRQUFBRHdLQUFBOENnQUFEUUFBQUQ0S0FBQkFDZ0FBXFxcbkNRQUFBRUVLQUFCQ0NnQUFEUUFBQUVjS0FBQklDZ0FBRFFBQUFFc0tBQUJOQ2dBQURRQUFBRkVLQUFCUkNnQUFEUUFBQUZrS0FBQmNDZ1xcXG5BQUNRQUFBRjRLQUFCZUNnQUFDUUFBQUdZS0FBQnZDZ0FBQ1FBQUFIQUtBQUJ4Q2dBQURRQUFBSElLQUFCMENnQUFDUUFBQUhVS0FBQjFcXFxuQ2dBQURRQUFBSFlLQUFCMkNnQUFDUUFBQUlFS0FBQ0NDZ0FBRFFBQUFJTUtBQUNEQ2dBQUNRQUFBSVVLQUFDTkNnQUFDUUFBQUk4S0FBXFxcbkNSQ2dBQUNRQUFBSk1LQUFDb0NnQUFDUUFBQUtvS0FBQ3dDZ0FBQ1FBQUFMSUtBQUN6Q2dBQUNRQUFBTFVLQUFDNUNnQUFDUUFBQUx3S1xcXG5BQUM4Q2dBQURRQUFBTDBLQUFEQUNnQUFDUUFBQU1FS0FBREZDZ0FBRFFBQUFNY0tBQURJQ2dBQURRQUFBTWtLQUFESkNnQUFDUUFBQU1cXFxuc0tBQURNQ2dBQUNRQUFBTTBLQUFETkNnQUFEUUFBQU5BS0FBRFFDZ0FBQ1FBQUFPQUtBQURoQ2dBQUNRQUFBT0lLQUFEakNnQUFEUUFBXFxcbkFPWUtBQUR3Q2dBQUNRQUFBUEVLQUFEeENnQUFCd0FBQVBrS0FBRDVDZ0FBQ1FBQUFQb0tBQUQvQ2dBQURRQUFBQUVMQUFBQkN3QUFEUVxcXG5BQUFBSUxBQUFEQ3dBQUNRQUFBQVVMQUFBTUN3QUFDUUFBQUE4TEFBQVFDd0FBQ1FBQUFCTUxBQUFvQ3dBQUNRQUFBQ29MQUFBd0N3QUFcXFxuQ1FBQUFESUxBQUF6Q3dBQUNRQUFBRFVMQUFBNUN3QUFDUUFBQUR3TEFBQThDd0FBRFFBQUFEMExBQUErQ3dBQUNRQUFBRDhMQUFBL0N3XFxcbkFBRFFBQUFFQUxBQUJBQ3dBQUNRQUFBRUVMQUFCRUN3QUFEUUFBQUVjTEFBQklDd0FBQ1FBQUFFc0xBQUJNQ3dBQUNRQUFBRTBMQUFCTlxcXG5Dd0FBRFFBQUFGVUxBQUJXQ3dBQURRQUFBRmNMQUFCWEN3QUFDUUFBQUZ3TEFBQmRDd0FBQ1FBQUFGOExBQUJoQ3dBQUNRQUFBR0lMQUFcXFxuQmpDd0FBRFFBQUFHWUxBQUIzQ3dBQUNRQUFBSUlMQUFDQ0N3QUFEUUFBQUlNTEFBQ0RDd0FBQ1FBQUFJVUxBQUNLQ3dBQUNRQUFBSTRMXFxcbkFBQ1FDd0FBQ1FBQUFKSUxBQUNWQ3dBQUNRQUFBSmtMQUFDYUN3QUFDUUFBQUp3TEFBQ2NDd0FBQ1FBQUFKNExBQUNmQ3dBQUNRQUFBS1xcXG5NTEFBQ2tDd0FBQ1FBQUFLZ0xBQUNxQ3dBQUNRQUFBSzRMQUFDNUN3QUFDUUFBQUw0TEFBQy9Dd0FBQ1FBQUFNQUxBQURBQ3dBQURRQUFcXFxuQU1FTEFBRENDd0FBQ1FBQUFNWUxBQURJQ3dBQUNRQUFBTW9MQUFETUN3QUFDUUFBQU0wTEFBRE5Dd0FBRFFBQUFOQUxBQURRQ3dBQUNRXFxcbkFBQU5jTEFBRFhDd0FBQ1FBQUFPWUxBQUR5Q3dBQUNRQUFBUE1MQUFENEN3QUFEZ0FBQVBrTEFBRDVDd0FBQndBQUFQb0xBQUQ2Q3dBQVxcXG5EZ0FBQUFBTUFBQUFEQUFBRFFBQUFBRU1BQUFEREFBQUNRQUFBQVFNQUFBRURBQUFEUUFBQUFVTUFBQU1EQUFBQ1FBQUFBNE1BQUFRREFcXFxuQUFDUUFBQUJJTUFBQW9EQUFBQ1FBQUFDb01BQUE1REFBQUNRQUFBRHdNQUFBOERBQUFEUUFBQUQwTUFBQTlEQUFBQ1FBQUFENE1BQUJBXFxcbkRBQUFEUUFBQUVFTUFBQkVEQUFBQ1FBQUFFWU1BQUJJREFBQURRQUFBRW9NQUFCTkRBQUFEUUFBQUZVTUFBQldEQUFBRFFBQUFGZ01BQVxcXG5CYURBQUFDUUFBQUYwTUFBQmREQUFBQ1FBQUFHQU1BQUJoREFBQUNRQUFBR0lNQUFCakRBQUFEUUFBQUdZTUFBQnZEQUFBQ1FBQUFIY01cXFxuQUFCM0RBQUFDUUFBQUhnTUFBQitEQUFBRGdBQUFIOE1BQUNBREFBQUNRQUFBSUVNQUFDQkRBQUFEUUFBQUlJTUFBQ01EQUFBQ1FBQUFJXFxcbjRNQUFDUURBQUFDUUFBQUpJTUFBQ29EQUFBQ1FBQUFLb01BQUN6REFBQUNRQUFBTFVNQUFDNURBQUFDUUFBQUx3TUFBQzhEQUFBRFFBQVxcXG5BTDBNQUFERURBQUFDUUFBQU1ZTUFBRElEQUFBQ1FBQUFNb01BQURMREFBQUNRQUFBTXdNQUFETkRBQUFEUUFBQU5VTUFBRFdEQUFBQ1FcXFxuQUFBTjBNQUFEZURBQUFDUUFBQU9BTUFBRGhEQUFBQ1FBQUFPSU1BQURqREFBQURRQUFBT1lNQUFEdkRBQUFDUUFBQVBFTUFBRHpEQUFBXFxcbkNRQUFBQUFOQUFBQkRRQUFEUUFBQUFJTkFBQU1EUUFBQ1FBQUFBNE5BQUFRRFFBQUNRQUFBQklOQUFBNkRRQUFDUUFBQURzTkFBQThEUVxcXG5BQURRQUFBRDBOQUFCQURRQUFDUUFBQUVFTkFBQkVEUUFBRFFBQUFFWU5BQUJJRFFBQUNRQUFBRW9OQUFCTURRQUFDUUFBQUUwTkFBQk5cXFxuRFFBQURRQUFBRTROQUFCUERRQUFDUUFBQUZRTkFBQmhEUUFBQ1FBQUFHSU5BQUJqRFFBQURRQUFBR1lOQUFCL0RRQUFDUUFBQUlFTkFBXFxcbkNCRFFBQURRQUFBSUlOQUFDRERRQUFDUUFBQUlVTkFBQ1dEUUFBQ1FBQUFKb05BQUN4RFFBQUNRQUFBTE1OQUFDN0RRQUFDUUFBQUwwTlxcXG5BQUM5RFFBQUNRQUFBTUFOQUFER0RRQUFDUUFBQU1vTkFBREtEUUFBRFFBQUFNOE5BQURSRFFBQUNRQUFBTklOQUFEVURRQUFEUUFBQU5cXFxuWU5BQURXRFFBQURRQUFBTmdOQUFEZkRRQUFDUUFBQU9ZTkFBRHZEUUFBQ1FBQUFQSU5BQUQwRFFBQUNRQUFBQUVPQUFBd0RnQUFDUUFBXFxcbkFERU9BQUF4RGdBQURRQUFBRElPQUFBekRnQUFDUUFBQURRT0FBQTZEZ0FBRFFBQUFEOE9BQUEvRGdBQUJ3QUFBRUFPQUFCR0RnQUFDUVxcXG5BQUFFY09BQUJPRGdBQURRQUFBRThPQUFCYkRnQUFDUUFBQUlFT0FBQ0NEZ0FBQ1FBQUFJUU9BQUNFRGdBQUNRQUFBSVlPQUFDS0RnQUFcXFxuQ1FBQUFJd09BQUNqRGdBQUNRQUFBS1VPQUFDbERnQUFDUUFBQUtjT0FBQ3dEZ0FBQ1FBQUFMRU9BQUN4RGdBQURRQUFBTElPQUFDekRnXFxcbkFBQ1FBQUFMUU9BQUM4RGdBQURRQUFBTDBPQUFDOURnQUFDUUFBQU1BT0FBREVEZ0FBQ1FBQUFNWU9BQURHRGdBQUNRQUFBTWdPQUFET1xcXG5EZ0FBRFFBQUFOQU9BQURaRGdBQUNRQUFBTndPQUFEZkRnQUFDUUFBQUFBUEFBQVhEd0FBQ1FBQUFCZ1BBQUFaRHdBQURRQUFBQm9QQUFcXFxuQTBEd0FBQ1FBQUFEVVBBQUExRHdBQURRQUFBRFlQQUFBMkR3QUFDUUFBQURjUEFBQTNEd0FBRFFBQUFEZ1BBQUE0RHdBQUNRQUFBRGtQXFxcbkFBQTVEd0FBRFFBQUFEb1BBQUE5RHdBQURnQUFBRDRQQUFCSER3QUFDUUFBQUVrUEFBQnNEd0FBQ1FBQUFIRVBBQUIrRHdBQURRQUFBSFxcXG44UEFBQi9Ed0FBQ1FBQUFJQVBBQUNFRHdBQURRQUFBSVVQQUFDRkR3QUFDUUFBQUlZUEFBQ0hEd0FBRFFBQUFJZ1BBQUNNRHdBQUNRQUFcXFxuQUkwUEFBQ1hEd0FBRFFBQUFKa1BBQUM4RHdBQURRQUFBTDRQQUFERkR3QUFDUUFBQU1ZUEFBREdEd0FBRFFBQUFNY1BBQURNRHdBQUNRXFxcbkFBQU00UEFBRGFEd0FBQ1FBQUFBQVFBQUFzRUFBQUNRQUFBQzBRQUFBd0VBQUFEUUFBQURFUUFBQXhFQUFBQ1FBQUFESVFBQUEzRUFBQVxcXG5EUUFBQURnUUFBQTRFQUFBQ1FBQUFEa1FBQUE2RUFBQURRQUFBRHNRQUFBOEVBQUFDUUFBQUQwUUFBQStFQUFBRFFBQUFEOFFBQUJYRUFcXFxuQUFDUUFBQUZnUUFBQlpFQUFBRFFBQUFGb1FBQUJkRUFBQUNRQUFBRjRRQUFCZ0VBQUFEUUFBQUdFUUFBQndFQUFBQ1FBQUFIRVFBQUIwXFxcbkVBQUFEUUFBQUhVUUFBQ0JFQUFBQ1FBQUFJSVFBQUNDRUFBQURRQUFBSU1RQUFDRUVBQUFDUUFBQUlVUUFBQ0dFQUFBRFFBQUFJY1FBQVxcXG5DTUVBQUFDUUFBQUkwUUFBQ05FQUFBRFFBQUFJNFFBQUNjRUFBQUNRQUFBSjBRQUFDZEVBQUFEUUFBQUo0UUFBREZFQUFBQ1FBQUFNY1FcXFxuQUFESEVBQUFDUUFBQU0wUUFBRE5FQUFBQ1FBQUFOQVFBQUJJRWdBQUNRQUFBRW9TQUFCTkVnQUFDUUFBQUZBU0FBQldFZ0FBQ1FBQUFGXFxcbmdTQUFCWUVnQUFDUUFBQUZvU0FBQmRFZ0FBQ1FBQUFHQVNBQUNJRWdBQUNRQUFBSW9TQUFDTkVnQUFDUUFBQUpBU0FBQ3dFZ0FBQ1FBQVxcXG5BTElTQUFDMUVnQUFDUUFBQUxnU0FBQytFZ0FBQ1FBQUFNQVNBQURBRWdBQUNRQUFBTUlTQUFERkVnQUFDUUFBQU1nU0FBRFdFZ0FBQ1FcXFxuQUFBTmdTQUFBUUV3QUFDUUFBQUJJVEFBQVZFd0FBQ1FBQUFCZ1RBQUJhRXdBQUNRQUFBRjBUQUFCZkV3QUFEUUFBQUdBVEFBQjhFd0FBXFxcbkNRQUFBSUFUQUFDUEV3QUFDUUFBQUpBVEFBQ1pFd0FBRGdBQUFLQVRBQUQxRXdBQUNRQUFBUGdUQUFEOUV3QUFDUUFBQUFBVUFBQUFGQVxcXG5BQURnQUFBQUVVQUFCL0ZnQUFDUUFBQUlBV0FBQ0FGZ0FBRmdBQUFJRVdBQUNhRmdBQUNRQUFBSnNXQUFDY0ZnQUFEZ0FBQUtBV0FBRDRcXFxuRmdBQUNRQUFBQUFYQUFBUkZ3QUFDUUFBQUJJWEFBQVVGd0FBRFFBQUFCVVhBQUFWRndBQUNRQUFBQjhYQUFBeEZ3QUFDUUFBQURJWEFBXFxcbkF6RndBQURRQUFBRFFYQUFBMkZ3QUFDUUFBQUVBWEFBQlJGd0FBQ1FBQUFGSVhBQUJURndBQURRQUFBR0FYQUFCc0Z3QUFDUUFBQUc0WFxcXG5BQUJ3RndBQUNRQUFBSElYQUFCekZ3QUFEUUFBQUlBWEFBQ3pGd0FBQ1FBQUFMUVhBQUMxRndBQURRQUFBTFlYQUFDMkZ3QUFDUUFBQUxcXFxuY1hBQUM5RndBQURRQUFBTDRYQUFERkZ3QUFDUUFBQU1ZWEFBREdGd0FBRFFBQUFNY1hBQURJRndBQUNRQUFBTWtYQUFEVEZ3QUFEUUFBXFxcbkFOUVhBQURhRndBQUNRQUFBTnNYQUFEYkZ3QUFCd0FBQU53WEFBRGNGd0FBQ1FBQUFOMFhBQURkRndBQURRQUFBT0FYQUFEcEZ3QUFDUVxcXG5BQUFQQVhBQUQ1RndBQURnQUFBQUFZQUFBS0dBQUFEZ0FBQUFzWUFBQU5HQUFBRFFBQUFBNFlBQUFPR0FBQUF3QUFBQThZQUFBUEdBQUFcXFxuRFFBQUFCQVlBQUFaR0FBQUNRQUFBQ0FZQUFCNEdBQUFDUUFBQUlBWUFBQ0VHQUFBQ1FBQUFJVVlBQUNHR0FBQURRQUFBSWNZQUFDb0dBXFxcbkFBQ1FBQUFLa1lBQUNwR0FBQURRQUFBS29ZQUFDcUdBQUFDUUFBQUxBWUFBRDFHQUFBQ1FBQUFBQVpBQUFlR1FBQUNRQUFBQ0FaQUFBaVxcXG5HUUFBRFFBQUFDTVpBQUFtR1FBQUNRQUFBQ2NaQUFBb0dRQUFEUUFBQUNrWkFBQXJHUUFBQ1FBQUFEQVpBQUF4R1FBQUNRQUFBRElaQUFcXFxuQXlHUUFBRFFBQUFETVpBQUE0R1FBQUNRQUFBRGtaQUFBN0dRQUFEUUFBQUVBWkFBQkFHUUFBRGdBQUFFUVpBQUJGR1FBQURnQUFBRVlaXFxcbkFBQnRHUUFBQ1FBQUFIQVpBQUIwR1FBQUNRQUFBSUFaQUFDckdRQUFDUUFBQUxBWkFBREpHUUFBQ1FBQUFOQVpBQURhR1FBQUNRQUFBTlxcXG40WkFBRC9HUUFBRGdBQUFBQWFBQUFXR2dBQUNRQUFBQmNhQUFBWUdnQUFEUUFBQUJrYUFBQWFHZ0FBQ1FBQUFCc2FBQUFiR2dBQURRQUFcXFxuQUI0YUFBQlZHZ0FBQ1FBQUFGWWFBQUJXR2dBQURRQUFBRmNhQUFCWEdnQUFDUUFBQUZnYUFBQmVHZ0FBRFFBQUFHQWFBQUJnR2dBQURRXFxcbkFBQUdFYUFBQmhHZ0FBQ1FBQUFHSWFBQUJpR2dBQURRQUFBR01hQUFCa0dnQUFDUUFBQUdVYUFBQnNHZ0FBRFFBQUFHMGFBQUJ5R2dBQVxcXG5DUUFBQUhNYUFBQjhHZ0FBRFFBQUFIOGFBQUIvR2dBQURRQUFBSUFhQUFDSkdnQUFDUUFBQUpBYUFBQ1pHZ0FBQ1FBQUFLQWFBQUN0R2dcXFxuQUFDUUFBQUxBYUFBRE9HZ0FBRFFBQUFBQWJBQUFER3dBQURRQUFBQVFiQUFBekd3QUFDUUFBQURRYkFBQTBHd0FBRFFBQUFEVWJBQUExXFxcbkd3QUFDUUFBQURZYkFBQTZHd0FBRFFBQUFEc2JBQUE3R3dBQUNRQUFBRHdiQUFBOEd3QUFEUUFBQUQwYkFBQkJHd0FBQ1FBQUFFSWJBQVxcXG5CQ0d3QUFEUUFBQUVNYkFBQk1Hd0FBQ1FBQUFGQWJBQUJxR3dBQUNRQUFBR3NiQUFCekd3QUFEUUFBQUhRYkFBQitHd0FBQ1FBQUFJQWJcXFxuQUFDQkd3QUFEUUFBQUlJYkFBQ2hHd0FBQ1FBQUFLSWJBQUNsR3dBQURRQUFBS1liQUFDbkd3QUFDUUFBQUtnYkFBQ3BHd0FBRFFBQUFLXFxcbm9iQUFDcUd3QUFDUUFBQUtzYkFBQ3RHd0FBRFFBQUFLNGJBQURsR3dBQUNRQUFBT1liQUFEbUd3QUFEUUFBQU9jYkFBRG5Hd0FBQ1FBQVxcXG5BT2diQUFEcEd3QUFEUUFBQU9vYkFBRHNHd0FBQ1FBQUFPMGJBQUR0R3dBQURRQUFBTzRiQUFEdUd3QUFDUUFBQU84YkFBRHhHd0FBRFFcXFxuQUFBUEliQUFEekd3QUFDUUFBQVB3YkFBQXJIQUFBQ1FBQUFDd2NBQUF6SEFBQURRQUFBRFFjQUFBMUhBQUFDUUFBQURZY0FBQTNIQUFBXFxcbkRRQUFBRHNjQUFCSkhBQUFDUUFBQUUwY0FBQ0lIQUFBQ1FBQUFKQWNBQUM2SEFBQUNRQUFBTDBjQUFESEhBQUFDUUFBQU5BY0FBRFNIQVxcXG5BQURRQUFBTk1jQUFEVEhBQUFDUUFBQU5RY0FBRGdIQUFBRFFBQUFPRWNBQURoSEFBQUNRQUFBT0ljQUFEb0hBQUFEUUFBQU9rY0FBRHNcXFxuSEFBQUNRQUFBTzBjQUFEdEhBQUFEUUFBQU80Y0FBRHpIQUFBQ1FBQUFQUWNBQUQwSEFBQURRQUFBUFVjQUFEM0hBQUFDUUFBQVBnY0FBXFxcbkQ1SEFBQURRQUFBUG9jQUFENkhBQUFDUUFBQUFBZEFBQy9IUUFBQ1FBQUFNQWRBQUQvSFFBQURRQUFBQUFlQUFBVkh3QUFDUUFBQUJnZlxcXG5BQUFkSHdBQUNRQUFBQ0FmQUFCRkh3QUFDUUFBQUVnZkFBQk5Id0FBQ1FBQUFGQWZBQUJYSHdBQUNRQUFBRmtmQUFCWkh3QUFDUUFBQUZcXFxuc2ZBQUJiSHdBQUNRQUFBRjBmQUFCZEh3QUFDUUFBQUY4ZkFBQjlId0FBQ1FBQUFJQWZBQUMwSHdBQUNRQUFBTFlmQUFDOEh3QUFDUUFBXFxcbkFMMGZBQUM5SHdBQURnQUFBTDRmQUFDK0h3QUFDUUFBQUw4ZkFBREJId0FBRGdBQUFNSWZBQURFSHdBQUNRQUFBTVlmQUFETUh3QUFDUVxcXG5BQUFNMGZBQURQSHdBQURnQUFBTkFmQUFEVEh3QUFDUUFBQU5ZZkFBRGJId0FBQ1FBQUFOMGZBQURmSHdBQURnQUFBT0FmQUFEc0h3QUFcXFxuQ1FBQUFPMGZBQUR2SHdBQURnQUFBUElmQUFEMEh3QUFDUUFBQVBZZkFBRDhId0FBQ1FBQUFQMGZBQUQrSHdBQURnQUFBQUFnQUFBS0lBXFxcbkFBRmdBQUFBc2dBQUFOSUFBQUF3QUFBQTRnQUFBT0lBQUFDUUFBQUE4Z0FBQVBJQUFBRVFBQUFCQWdBQUFuSUFBQURnQUFBQ2dnQUFBb1xcXG5JQUFBRmdBQUFDa2dBQUFwSUFBQUFnQUFBQ29nQUFBcUlBQUFDZ0FBQUNzZ0FBQXJJQUFBRWdBQUFDd2dBQUFzSUFBQUR3QUFBQzBnQUFcXFxuQXRJQUFBREFBQUFDNGdBQUF1SUFBQUZBQUFBQzhnQUFBdklBQUFCQUFBQURBZ0FBQTBJQUFBQndBQUFEVWdBQUJESUFBQURnQUFBRVFnXFxcbkFBQkVJQUFBQkFBQUFFVWdBQUJlSUFBQURnQUFBRjhnQUFCZklBQUFGZ0FBQUdBZ0FBQmtJQUFBQXdBQUFHWWdBQUJtSUFBQUN3QUFBR1xcXG5jZ0FBQm5JQUFBRXdBQUFHZ2dBQUJvSUFBQUNBQUFBR2tnQUFCcElBQUFFQUFBQUdvZ0FBQnZJQUFBQXdBQUFIQWdBQUJ3SUFBQUJRQUFcXFxuQUhFZ0FBQnhJQUFBQ1FBQUFIUWdBQUI1SUFBQUJRQUFBSG9nQUFCN0lBQUFCZ0FBQUh3Z0FBQitJQUFBRGdBQUFIOGdBQUIvSUFBQUNRXFxcbkFBQUlBZ0FBQ0pJQUFBQlFBQUFJb2dBQUNMSUFBQUJnQUFBSXdnQUFDT0lBQUFEZ0FBQUpBZ0FBQ2NJQUFBQ1FBQUFLQWdBQURQSUFBQVxcXG5Cd0FBQU5BZ0FBRHdJQUFBRFFBQUFBQWhBQUFCSVFBQURnQUFBQUloQUFBQ0lRQUFDUUFBQUFNaEFBQUdJUUFBRGdBQUFBY2hBQUFISVFcXFxuQUFDUUFBQUFnaEFBQUpJUUFBRGdBQUFBb2hBQUFUSVFBQUNRQUFBQlFoQUFBVUlRQUFEZ0FBQUJVaEFBQVZJUUFBQ1FBQUFCWWhBQUFZXFxcbklRQUFEZ0FBQUJraEFBQWRJUUFBQ1FBQUFCNGhBQUFqSVFBQURnQUFBQ1FoQUFBa0lRQUFDUUFBQUNVaEFBQWxJUUFBRGdBQUFDWWhBQVxcXG5BbUlRQUFDUUFBQUNjaEFBQW5JUUFBRGdBQUFDZ2hBQUFvSVFBQUNRQUFBQ2toQUFBcElRQUFEZ0FBQUNvaEFBQXRJUUFBQ1FBQUFDNGhcXFxuQUFBdUlRQUFCd0FBQUM4aEFBQTVJUUFBQ1FBQUFEb2hBQUE3SVFBQURnQUFBRHdoQUFBL0lRQUFDUUFBQUVBaEFBQkVJUUFBRGdBQUFFXFxcblVoQUFCSklRQUFDUUFBQUVvaEFBQk5JUUFBRGdBQUFFNGhBQUJQSVFBQUNRQUFBRkFoQUFCZklRQUFEZ0FBQUdBaEFBQ0lJUUFBQ1FBQVxcXG5BSWtoQUFDTElRQUFEZ0FBQUpBaEFBQVJJZ0FBRGdBQUFCSWlBQUFTSWdBQUJnQUFBQk1pQUFBVElnQUFCd0FBQUJRaUFBQTFJd0FBRGdcXFxuQUFBRFlqQUFCNkl3QUFDUUFBQUhzakFBQ1VJd0FBRGdBQUFKVWpBQUNWSXdBQUNRQUFBSllqQUFBbUpBQUFEZ0FBQUVBa0FBQktKQUFBXFxcbkRnQUFBR0FrQUFDSEpBQUFEZ0FBQUlna0FBQ2JKQUFBQlFBQUFKd2tBQURwSkFBQUNRQUFBT29rQUFDckpnQUFEZ0FBQUt3bUFBQ3NKZ1xcXG5BQUNRQUFBSzBtQUFEL0p3QUFEZ0FBQUFBb0FBRC9LQUFBQ1FBQUFBQXBBQUJ6S3dBQURnQUFBSFlyQUFDVkt3QUFEZ0FBQUpjckFBRC9cXFxuS3dBQURnQUFBQUFzQUFEa0xBQUFDUUFBQU9Vc0FBRHFMQUFBRGdBQUFPc3NBQUR1TEFBQUNRQUFBTzhzQUFEeExBQUFEUUFBQVBJc0FBXFxcbkR6TEFBQUNRQUFBUGtzQUFEL0xBQUFEZ0FBQUFBdEFBQWxMUUFBQ1FBQUFDY3RBQUFuTFFBQUNRQUFBQzB0QUFBdExRQUFDUUFBQURBdFxcXG5BQUJuTFFBQUNRQUFBRzh0QUFCd0xRQUFDUUFBQUg4dEFBQi9MUUFBRFFBQUFJQXRBQUNXTFFBQUNRQUFBS0F0QUFDbUxRQUFDUUFBQUtcXFxuZ3RBQUN1TFFBQUNRQUFBTEF0QUFDMkxRQUFDUUFBQUxndEFBQytMUUFBQ1FBQUFNQXRBQURHTFFBQUNRQUFBTWd0QUFET0xRQUFDUUFBXFxcbkFOQXRBQURXTFFBQUNRQUFBTmd0QUFEZUxRQUFDUUFBQU9BdEFBRC9MUUFBRFFBQUFBQXVBQUJkTGdBQURnQUFBSUF1QUFDWkxnQUFEZ1xcXG5BQUFKc3VBQUR6TGdBQURnQUFBQUF2QUFEVkx3QUFEZ0FBQVBBdkFBRDdMd0FBRGdBQUFBQXdBQUFBTUFBQUZnQUFBQUV3QUFBRU1BQUFcXFxuRGdBQUFBVXdBQUFITUFBQUNRQUFBQWd3QUFBZ01BQUFEZ0FBQUNFd0FBQXBNQUFBQ1FBQUFDb3dBQUF0TUFBQURRQUFBQzR3QUFBdk1BXFxcbkFBQ1FBQUFEQXdBQUF3TUFBQURnQUFBREV3QUFBMU1BQUFDUUFBQURZd0FBQTNNQUFBRGdBQUFEZ3dBQUE4TUFBQUNRQUFBRDB3QUFBL1xcXG5NQUFBRGdBQUFFRXdBQUNXTUFBQUNRQUFBSmt3QUFDYU1BQUFEUUFBQUpzd0FBQ2NNQUFBRGdBQUFKMHdBQUNmTUFBQUNRQUFBS0F3QUFcXFxuQ2dNQUFBRGdBQUFLRXdBQUQ2TUFBQUNRQUFBUHN3QUFEN01BQUFEZ0FBQVB3d0FBRC9NQUFBQ1FBQUFBVXhBQUF2TVFBQUNRQUFBREV4XFxcbkFBQ09NUUFBQ1FBQUFKQXhBQUMvTVFBQUNRQUFBTUF4QUFEak1RQUFEZ0FBQVBBeEFBQWNNZ0FBQ1FBQUFCMHlBQUFlTWdBQURnQUFBQ1xcXG5BeUFBQlBNZ0FBQ1FBQUFGQXlBQUJmTWdBQURnQUFBR0F5QUFCN01nQUFDUUFBQUh3eUFBQitNZ0FBRGdBQUFIOHlBQUN3TWdBQUNRQUFcXFxuQUxFeUFBQy9NZ0FBRGdBQUFNQXlBQURMTWdBQUNRQUFBTXd5QUFEUE1nQUFEZ0FBQU5BeUFBQjJNd0FBQ1FBQUFIY3pBQUI2TXdBQURnXFxcbkFBQUhzekFBRGRNd0FBQ1FBQUFONHpBQURmTXdBQURnQUFBT0F6QUFEK013QUFDUUFBQVA4ekFBRC9Nd0FBRGdBQUFBQTBBQUMvVFFBQVxcXG5DUUFBQU1CTkFBRC9UUUFBRGdBQUFBQk9BQUNNcEFBQUNRQUFBSkNrQUFER3BBQUFEZ0FBQU5Da0FBQU1wZ0FBQ1FBQUFBMm1BQUFQcGdcXFxuQUFEZ0FBQUJDbUFBQXJwZ0FBQ1FBQUFFQ21BQUJ1cGdBQUNRQUFBRyttQUFCeXBnQUFEUUFBQUhPbUFBQnpwZ0FBRGdBQUFIU21BQUI5XFxcbnBnQUFEUUFBQUg2bUFBQi9wZ0FBRGdBQUFJQ21BQUNkcGdBQUNRQUFBSjZtQUFDZnBnQUFEUUFBQUtDbUFBRHZwZ0FBQ1FBQUFQQ21BQVxcXG5EeHBnQUFEUUFBQVBLbUFBRDNwZ0FBQ1FBQUFBQ25BQUFocHdBQURnQUFBQ0tuQUFDSHB3QUFDUUFBQUlpbkFBQ0lwd0FBRGdBQUFJbW5cXFxuQUFES3B3QUFDUUFBQU5DbkFBRFJwd0FBQ1FBQUFOT25BQURUcHdBQUNRQUFBTlduQUFEWnB3QUFDUUFBQVBLbkFBQUJxQUFBQ1FBQUFBXFxcbktvQUFBQ3FBQUFEUUFBQUFPb0FBQUZxQUFBQ1FBQUFBYW9BQUFHcUFBQURRQUFBQWVvQUFBS3FBQUFDUUFBQUF1b0FBQUxxQUFBRFFBQVxcXG5BQXlvQUFBa3FBQUFDUUFBQUNXb0FBQW1xQUFBRFFBQUFDZW9BQUFucUFBQUNRQUFBQ2lvQUFBcnFBQUFEZ0FBQUN5b0FBQXNxQUFBRFFcXFxuQUFBRENvQUFBM3FBQUFDUUFBQURpb0FBQTVxQUFBQndBQUFFQ29BQUJ6cUFBQUNRQUFBSFNvQUFCM3FBQUFEZ0FBQUlDb0FBRERxQUFBXFxcbkNRQUFBTVNvQUFERnFBQUFEUUFBQU02b0FBRFpxQUFBQ1FBQUFPQ29BQUR4cUFBQURRQUFBUEtvQUFEK3FBQUFDUUFBQVArb0FBRC9xQVxcXG5BQURRQUFBQUNwQUFBbHFRQUFDUUFBQUNhcEFBQXRxUUFBRFFBQUFDNnBBQUJHcVFBQUNRQUFBRWVwQUFCUnFRQUFEUUFBQUZLcEFBQlRcXFxucVFBQUNRQUFBRitwQUFCOHFRQUFDUUFBQUlDcEFBQ0NxUUFBRFFBQUFJT3BBQUN5cVFBQUNRQUFBTE9wQUFDenFRQUFEUUFBQUxTcEFBXFxcbkMxcVFBQUNRQUFBTGFwQUFDNXFRQUFEUUFBQUxxcEFBQzdxUUFBQ1FBQUFMeXBBQUM5cVFBQURRQUFBTDZwQUFETnFRQUFDUUFBQU0rcFxcXG5BQURacVFBQUNRQUFBTjZwQUFEa3FRQUFDUUFBQU9XcEFBRGxxUUFBRFFBQUFPYXBBQUQrcVFBQUNRQUFBQUNxQUFBb3FnQUFDUUFBQUNcXFxubXFBQUF1cWdBQURRQUFBQytxQUFBd3FnQUFDUUFBQURHcUFBQXlxZ0FBRFFBQUFET3FBQUEwcWdBQUNRQUFBRFdxQUFBMnFnQUFEUUFBXFxcbkFFQ3FBQUJDcWdBQUNRQUFBRU9xQUFCRHFnQUFEUUFBQUVTcUFBQkxxZ0FBQ1FBQUFFeXFBQUJNcWdBQURRQUFBRTJxQUFCTnFnQUFDUVxcXG5BQUFGQ3FBQUJacWdBQUNRQUFBRnlxQUFCN3FnQUFDUUFBQUh5cUFBQjhxZ0FBRFFBQUFIMnFBQUN2cWdBQUNRQUFBTENxQUFDd3FnQUFcXFxuRFFBQUFMR3FBQUN4cWdBQUNRQUFBTEtxQUFDMHFnQUFEUUFBQUxXcUFBQzJxZ0FBQ1FBQUFMZXFBQUM0cWdBQURRQUFBTG1xQUFDOXFnXFxcbkFBQ1FBQUFMNnFBQUMvcWdBQURRQUFBTUNxQUFEQXFnQUFDUUFBQU1HcUFBREJxZ0FBRFFBQUFNS3FBQURDcWdBQUNRQUFBTnVxQUFEclxcXG5xZ0FBQ1FBQUFPeXFBQUR0cWdBQURRQUFBTzZxQUFEMXFnQUFDUUFBQVBhcUFBRDJxZ0FBRFFBQUFBR3JBQUFHcXdBQUNRQUFBQW1yQUFcXFxuQU9xd0FBQ1FBQUFCR3JBQUFXcXdBQUNRQUFBQ0NyQUFBbXF3QUFDUUFBQUNpckFBQXVxd0FBQ1FBQUFEQ3JBQUJwcXdBQUNRQUFBR3FyXFxcbkFBQnJxd0FBRGdBQUFIQ3JBQURrcXdBQUNRQUFBT1dyQUFEbHF3QUFEUUFBQU9hckFBRG5xd0FBQ1FBQUFPaXJBQURvcXdBQURRQUFBT1xcXG5tckFBRHNxd0FBQ1FBQUFPMnJBQUR0cXdBQURRQUFBUENyQUFENXF3QUFDUUFBQUFDc0FBQ2oxd0FBQ1FBQUFMRFhBQURHMXdBQUNRQUFcXFxuQU12WEFBRDcxd0FBQ1FBQUFBRGdBQUJ0K2dBQUNRQUFBSEQ2QUFEWitnQUFDUUFBQUFEN0FBQUcrd0FBQ1FBQUFCUDdBQUFYK3dBQUNRXFxcbkFBQUIzN0FBQWQrd0FBRVFBQUFCNzdBQUFlK3dBQURRQUFBQi83QUFBbyt3QUFFUUFBQUNuN0FBQXArd0FBQmdBQUFDcjdBQUJQK3dBQVxcXG5FUUFBQUZEN0FBQTkvUUFBQUFBQUFENzlBQUJQL1FBQURnQUFBRkQ5QUFETy9RQUFBQUFBQU0vOUFBRFAvUUFBRGdBQUFQRDlBQUQ4L1FcXFxuQUFBQUFBQVAzOUFBRC8vUUFBRGdBQUFBRCtBQUFQL2dBQURRQUFBQkQrQUFBWi9nQUFEZ0FBQUNEK0FBQXYvZ0FBRFFBQUFERCtBQUJQXFxcbi9nQUFEZ0FBQUZEK0FBQlEvZ0FBQkFBQUFGSCtBQUJSL2dBQURnQUFBRkwrQUFCUy9nQUFCQUFBQUZUK0FBQlUvZ0FBRGdBQUFGWCtBQVxcXG5CVi9nQUFCQUFBQUZiK0FBQmUvZ0FBRGdBQUFGLytBQUJmL2dBQUJ3QUFBR0QrQUFCaC9nQUFEZ0FBQUdMK0FBQmovZ0FBQmdBQUFHVCtcXFxuQUFCbS9nQUFEZ0FBQUdqK0FBQm8vZ0FBRGdBQUFHbitBQUJxL2dBQUJ3QUFBR3YrQUFCci9nQUFEZ0FBQUhEK0FBRCsvZ0FBQUFBQUFQXFxcbi8rQUFELy9nQUFBd0FBQUFIL0FBQUMvd0FBRGdBQUFBUC9BQUFGL3dBQUJ3QUFBQWIvQUFBSy93QUFEZ0FBQUF2L0FBQUwvd0FBQmdBQVxcXG5BQXovQUFBTS93QUFCQUFBQUEzL0FBQU4vd0FBQmdBQUFBNy9BQUFQL3dBQUJBQUFBQkQvQUFBWi93QUFCUUFBQUJyL0FBQWEvd0FBQkFcXFxuQUFBQnYvQUFBZy93QUFEZ0FBQUNIL0FBQTYvd0FBQ1FBQUFEdi9BQUJBL3dBQURnQUFBRUgvQUFCYS93QUFDUUFBQUZ2L0FBQmwvd0FBXFxcbkRnQUFBR2IvQUFDKy93QUFDUUFBQU1ML0FBREgvd0FBQ1FBQUFNci9BQURQL3dBQUNRQUFBTkwvQUFEWC93QUFDUUFBQU5yL0FBRGMvd1xcXG5BQUNRQUFBT0QvQUFEaC93QUFCd0FBQU9ML0FBRGsvd0FBRGdBQUFPWC9BQURtL3dBQUJ3QUFBT2ovQUFEdS93QUFEZ0FBQVBuL0FBRDlcXFxuL3dBQURnQUFBQUFBQVFBTEFBRUFDUUFBQUEwQUFRQW1BQUVBQ1FBQUFDZ0FBUUE2QUFFQUNRQUFBRHdBQVFBOUFBRUFDUUFBQUQ4QUFRXFxcbkJOQUFFQUNRQUFBRkFBQVFCZEFBRUFDUUFBQUlBQUFRRDZBQUVBQ1FBQUFBQUJBUUFBQVFFQUNRQUFBQUVCQVFBQkFRRUFEZ0FBQUFJQlxcXG5BUUFDQVFFQUNRQUFBQWNCQVFBekFRRUFDUUFBQURjQkFRQS9BUUVBQ1FBQUFFQUJBUUNNQVFFQURnQUFBSTBCQVFDT0FRRUFDUUFBQUpcXFxuQUJBUUNjQVFFQURnQUFBS0FCQVFDZ0FRRUFEZ0FBQU5BQkFRRDhBUUVBQ1FBQUFQMEJBUUQ5QVFFQURRQUFBSUFDQVFDY0FnRUFDUUFBXFxcbkFLQUNBUURRQWdFQUNRQUFBT0FDQVFEZ0FnRUFEUUFBQU9FQ0FRRDdBZ0VBQlFBQUFBQURBUUFqQXdFQUNRQUFBQzBEQVFCS0F3RUFDUVxcXG5BQUFGQURBUUIxQXdFQUNRQUFBSFlEQVFCNkF3RUFEUUFBQUlBREFRQ2RBd0VBQ1FBQUFKOERBUUREQXdFQUNRQUFBTWdEQVFEVkF3RUFcXFxuQ1FBQUFBQUVBUUNkQkFFQUNRQUFBS0FFQVFDcEJBRUFDUUFBQUxBRUFRRFRCQUVBQ1FBQUFOZ0VBUUQ3QkFFQUNRQUFBQUFGQVFBbkJRXFxcbkVBQ1FBQUFEQUZBUUJqQlFFQUNRQUFBRzhGQVFCNkJRRUFDUUFBQUh3RkFRQ0tCUUVBQ1FBQUFJd0ZBUUNTQlFFQUNRQUFBSlFGQVFDVlxcXG5CUUVBQ1FBQUFKY0ZBUUNoQlFFQUNRQUFBS01GQVFDeEJRRUFDUUFBQUxNRkFRQzVCUUVBQ1FBQUFMc0ZBUUM4QlFFQUNRQUFBQUFHQVFcXFxuQTJCd0VBQ1FBQUFFQUhBUUJWQndFQUNRQUFBR0FIQVFCbkJ3RUFDUUFBQUlBSEFRQ0ZCd0VBQ1FBQUFJY0hBUUN3QndFQUNRQUFBTElIXFxcbkFRQzZCd0VBQ1FBQUFBQUlBUUFlQ1FFQUVRQUFBQjhKQVFBZkNRRUFEZ0FBQUNBSkFRQUFDZ0VBRVFBQUFBRUtBUUFEQ2dFQURRQUFBQVxcXG5RS0FRQUVDZ0VBRVFBQUFBVUtBUUFHQ2dFQURRQUFBQWNLQVFBTENnRUFFUUFBQUF3S0FRQVBDZ0VBRFFBQUFCQUtBUUEzQ2dFQUVRQUFcXFxuQURnS0FRQTZDZ0VBRFFBQUFEc0tBUUErQ2dFQUVRQUFBRDhLQVFBL0NnRUFEUUFBQUVBS0FRRGtDZ0VBRVFBQUFPVUtBUURtQ2dFQURRXFxcbkFBQU9jS0FRQTRDd0VBRVFBQUFEa0xBUUEvQ3dFQURnQUFBRUFMQVFEL0RBRUFFUUFBQUFBTkFRQWpEUUVBQUFBQUFDUU5BUUFuRFFFQVxcXG5EUUFBQUNnTkFRQXZEUUVBRVFBQUFEQU5BUUE1RFFFQUFRQUFBRG9OQVFCZkRnRUFFUUFBQUdBT0FRQitEZ0VBQVFBQUFIOE9BUUNxRGdcXFxuRUFFUUFBQUtzT0FRQ3NEZ0VBRFFBQUFLME9BUUQ4RGdFQUVRQUFBUDBPQVFEL0RnRUFEUUFBQUFBUEFRQXZEd0VBRVFBQUFEQVBBUUJGXFxcbkR3RUFBQUFBQUVZUEFRQlFEd0VBRFFBQUFGRVBBUUJaRHdFQUFBQUFBRm9QQVFDQkR3RUFFUUFBQUlJUEFRQ0ZEd0VBRFFBQUFJWVBBUVxcXG5EL0R3RUFFUUFBQUFBUUFRQUFFQUVBQ1FBQUFBRVFBUUFCRUFFQURRQUFBQUlRQVFBM0VBRUFDUUFBQURnUUFRQkdFQUVBRFFBQUFFY1FcXFxuQVFCTkVBRUFDUUFBQUZJUUFRQmxFQUVBRGdBQUFHWVFBUUJ2RUFFQUNRQUFBSEFRQVFCd0VBRUFEUUFBQUhFUUFRQnlFQUVBQ1FBQUFIXFxcbk1RQVFCMEVBRUFEUUFBQUhVUUFRQjFFQUVBQ1FBQUFIOFFBUUNCRUFFQURRQUFBSUlRQVFDeUVBRUFDUUFBQUxNUUFRQzJFQUVBRFFBQVxcXG5BTGNRQVFDNEVBRUFDUUFBQUxrUUFRQzZFQUVBRFFBQUFMc1FBUURCRUFFQUNRQUFBTUlRQVFEQ0VBRUFEUUFBQU0wUUFRRE5FQUVBQ1FcXFxuQUFBTkFRQVFEb0VBRUFDUUFBQVBBUUFRRDVFQUVBQ1FBQUFBQVJBUUFDRVFFQURRQUFBQU1SQVFBbUVRRUFDUUFBQUNjUkFRQXJFUUVBXFxcbkRRQUFBQ3dSQVFBc0VRRUFDUUFBQUMwUkFRQTBFUUVBRFFBQUFEWVJBUUJIRVFFQUNRQUFBRkFSQVFCeUVRRUFDUUFBQUhNUkFRQnpFUVxcXG5FQURRQUFBSFFSQVFCMkVRRUFDUUFBQUlBUkFRQ0JFUUVBRFFBQUFJSVJBUUMxRVFFQUNRQUFBTFlSQVFDK0VRRUFEUUFBQUw4UkFRRElcXFxuRVFFQUNRQUFBTWtSQVFETUVRRUFEUUFBQU0wUkFRRE9FUUVBQ1FBQUFNOFJBUURQRVFFQURRQUFBTkFSQVFEZkVRRUFDUUFBQU9FUkFRXFxcbkQwRVFFQUNRQUFBQUFTQVFBUkVnRUFDUUFBQUJNU0FRQXVFZ0VBQ1FBQUFDOFNBUUF4RWdFQURRQUFBRElTQVFBekVnRUFDUUFBQURRU1xcXG5BUUEwRWdFQURRQUFBRFVTQVFBMUVnRUFDUUFBQURZU0FRQTNFZ0VBRFFBQUFEZ1NBUUE5RWdFQUNRQUFBRDRTQVFBK0VnRUFEUUFBQURcXFxuOFNBUUJBRWdFQUNRQUFBRUVTQVFCQkVnRUFEUUFBQUlBU0FRQ0dFZ0VBQ1FBQUFJZ1NBUUNJRWdFQUNRQUFBSW9TQVFDTkVnRUFDUUFBXFxcbkFJOFNBUUNkRWdFQUNRQUFBSjhTQVFDcEVnRUFDUUFBQUxBU0FRRGVFZ0VBQ1FBQUFOOFNBUURmRWdFQURRQUFBT0FTQVFEaUVnRUFDUVxcXG5BQUFPTVNBUURxRWdFQURRQUFBUEFTQVFENUVnRUFDUUFBQUFBVEFRQUJFd0VBRFFBQUFBSVRBUUFERXdFQUNRQUFBQVVUQVFBTUV3RUFcXFxuQ1FBQUFBOFRBUUFRRXdFQUNRQUFBQk1UQVFBb0V3RUFDUUFBQUNvVEFRQXdFd0VBQ1FBQUFESVRBUUF6RXdFQUNRQUFBRFVUQVFBNUV3XFxcbkVBQ1FBQUFEc1RBUUE4RXdFQURRQUFBRDBUQVFBL0V3RUFDUUFBQUVBVEFRQkFFd0VBRFFBQUFFRVRBUUJFRXdFQUNRQUFBRWNUQVFCSVxcXG5Fd0VBQ1FBQUFFc1RBUUJORXdFQUNRQUFBRkFUQVFCUUV3RUFDUUFBQUZjVEFRQlhFd0VBQ1FBQUFGMFRBUUJqRXdFQUNRQUFBR1lUQVFcXFxuQnNFd0VBRFFBQUFIQVRBUUIwRXdFQURRQUFBQUFVQVFBM0ZBRUFDUUFBQURnVUFRQS9GQUVBRFFBQUFFQVVBUUJCRkFFQUNRQUFBRUlVXFxcbkFRQkVGQUVBRFFBQUFFVVVBUUJGRkFFQUNRQUFBRVlVQVFCR0ZBRUFEUUFBQUVjVUFRQmJGQUVBQ1FBQUFGMFVBUUJkRkFFQUNRQUFBRlxcXG40VUFRQmVGQUVBRFFBQUFGOFVBUUJoRkFFQUNRQUFBSUFVQVFDeUZBRUFDUUFBQUxNVUFRQzRGQUVBRFFBQUFMa1VBUUM1RkFFQUNRQUFcXFxuQUxvVUFRQzZGQUVBRFFBQUFMc1VBUUMrRkFFQUNRQUFBTDhVQVFEQUZBRUFEUUFBQU1FVUFRREJGQUVBQ1FBQUFNSVVBUURERkFFQURRXFxcbkFBQU1RVUFRREhGQUVBQ1FBQUFOQVVBUURaRkFFQUNRQUFBSUFWQVFDeEZRRUFDUUFBQUxJVkFRQzFGUUVBRFFBQUFMZ1ZBUUM3RlFFQVxcXG5DUUFBQUx3VkFRQzlGUUVBRFFBQUFMNFZBUUMrRlFFQUNRQUFBTDhWQVFEQUZRRUFEUUFBQU1FVkFRRGJGUUVBQ1FBQUFOd1ZBUURkRlFcXFxuRUFEUUFBQUFBV0FRQXlGZ0VBQ1FBQUFETVdBUUE2RmdFQURRQUFBRHNXQVFBOEZnRUFDUUFBQUQwV0FRQTlGZ0VBRFFBQUFENFdBUUErXFxcbkZnRUFDUUFBQUQ4V0FRQkFGZ0VBRFFBQUFFRVdBUUJFRmdFQUNRQUFBRkFXQVFCWkZnRUFDUUFBQUdBV0FRQnNGZ0VBRGdBQUFJQVdBUVxcXG5DcUZnRUFDUUFBQUtzV0FRQ3JGZ0VBRFFBQUFLd1dBUUNzRmdFQUNRQUFBSzBXQVFDdEZnRUFEUUFBQUs0V0FRQ3ZGZ0VBQ1FBQUFMQVdcXFxuQVFDMUZnRUFEUUFBQUxZV0FRQzJGZ0VBQ1FBQUFMY1dBUUMzRmdFQURRQUFBTGdXQVFDNUZnRUFDUUFBQU1BV0FRREpGZ0VBQ1FBQUFBXFxcbkFYQVFBYUZ3RUFDUUFBQUIwWEFRQWZGd0VBRFFBQUFDQVhBUUFoRndFQUNRQUFBQ0lYQVFBbEZ3RUFEUUFBQUNZWEFRQW1Gd0VBQ1FBQVxcXG5BQ2NYQVFBckZ3RUFEUUFBQURBWEFRQkdGd0VBQ1FBQUFBQVlBUUF1R0FFQUNRQUFBQzhZQVFBM0dBRUFEUUFBQURnWUFRQTRHQUVBQ1FcXFxuQUFBRGtZQVFBNkdBRUFEUUFBQURzWUFRQTdHQUVBQ1FBQUFLQVlBUUR5R0FFQUNRQUFBUDhZQVFBR0dRRUFDUUFBQUFrWkFRQUpHUUVBXFxcbkNRQUFBQXdaQVFBVEdRRUFDUUFBQUJVWkFRQVdHUUVBQ1FBQUFCZ1pBUUExR1FFQUNRQUFBRGNaQVFBNEdRRUFDUUFBQURzWkFRQThHUVxcXG5FQURRQUFBRDBaQVFBOUdRRUFDUUFBQUQ0WkFRQStHUUVBRFFBQUFEOFpBUUJDR1FFQUNRQUFBRU1aQVFCREdRRUFEUUFBQUVRWkFRQkdcXFxuR1FFQUNRQUFBRkFaQVFCWkdRRUFDUUFBQUtBWkFRQ25HUUVBQ1FBQUFLb1pBUURUR1FFQUNRQUFBTlFaQVFEWEdRRUFEUUFBQU5vWkFRXFxcbkRiR1FFQURRQUFBTndaQVFEZkdRRUFDUUFBQU9BWkFRRGdHUUVBRFFBQUFPRVpBUURrR1FFQUNRQUFBQUFhQVFBQUdnRUFDUUFBQUFFYVxcXG5BUUFHR2dFQURRQUFBQWNhQVFBSUdnRUFDUUFBQUFrYUFRQUtHZ0VBRFFBQUFBc2FBUUF5R2dFQUNRQUFBRE1hQVFBNEdnRUFEUUFBQURcXFxua2FBUUE2R2dFQUNRQUFBRHNhQVFBK0dnRUFEUUFBQUQ4YUFRQkdHZ0VBQ1FBQUFFY2FBUUJIR2dFQURRQUFBRkFhQVFCUUdnRUFDUUFBXFxcbkFGRWFBUUJXR2dFQURRQUFBRmNhQVFCWUdnRUFDUUFBQUZrYUFRQmJHZ0VBRFFBQUFGd2FBUUNKR2dFQUNRQUFBSW9hQVFDV0dnRUFEUVxcXG5BQUFKY2FBUUNYR2dFQUNRQUFBSmdhQVFDWkdnRUFEUUFBQUpvYUFRQ2lHZ0VBQ1FBQUFMQWFBUUQ0R2dFQUNRQUFBQUFiQVFBSkd3RUFcXFxuQ1FBQUFBQWNBUUFJSEFFQUNRQUFBQW9jQVFBdkhBRUFDUUFBQURBY0FRQTJIQUVBRFFBQUFEZ2NBUUE5SEFFQURRQUFBRDRjQVFCRkhBXFxcbkVBQ1FBQUFGQWNBUUJzSEFFQUNRQUFBSEFjQVFDUEhBRUFDUUFBQUpJY0FRQ25IQUVBRFFBQUFLa2NBUUNwSEFFQUNRQUFBS29jQVFDd1xcXG5IQUVBRFFBQUFMRWNBUUN4SEFFQUNRQUFBTEljQVFDekhBRUFEUUFBQUxRY0FRQzBIQUVBQ1FBQUFMVWNBUUMySEFFQURRQUFBQUFkQVFcXFxuQUdIUUVBQ1FBQUFBZ2RBUUFKSFFFQUNRQUFBQXNkQVFBd0hRRUFDUUFBQURFZEFRQTJIUUVBRFFBQUFEb2RBUUE2SFFFQURRQUFBRHdkXFxcbkFRQTlIUUVBRFFBQUFEOGRBUUJGSFFFQURRQUFBRVlkQVFCR0hRRUFDUUFBQUVjZEFRQkhIUUVBRFFBQUFGQWRBUUJaSFFFQUNRQUFBR1xcXG5BZEFRQmxIUUVBQ1FBQUFHY2RBUUJvSFFFQUNRQUFBR29kQVFDT0hRRUFDUUFBQUpBZEFRQ1JIUUVBRFFBQUFKTWRBUUNVSFFFQUNRQUFcXFxuQUpVZEFRQ1ZIUUVBRFFBQUFKWWRBUUNXSFFFQUNRQUFBSmNkQVFDWEhRRUFEUUFBQUpnZEFRQ1lIUUVBQ1FBQUFLQWRBUUNwSFFFQUNRXFxcbkFBQU9BZUFRRHlIZ0VBQ1FBQUFQTWVBUUQwSGdFQURRQUFBUFVlQVFENEhnRUFDUUFBQUFBZkFRQUJId0VBRFFBQUFBSWZBUUFRSHdFQVxcXG5DUUFBQUJJZkFRQTFId0VBQ1FBQUFEWWZBUUE2SHdFQURRQUFBRDRmQVFBL0h3RUFDUUFBQUVBZkFRQkFId0VBRFFBQUFFRWZBUUJCSHdcXFxuRUFDUUFBQUVJZkFRQkNId0VBRFFBQUFFTWZBUUJaSHdFQUNRQUFBTEFmQVFDd0h3RUFDUUFBQU1BZkFRRFVId0VBQ1FBQUFOVWZBUURjXFxcbkh3RUFEZ0FBQU4wZkFRRGdId0VBQndBQUFPRWZBUUR4SHdFQURnQUFBUDhmQVFDWkl3RUFDUUFBQUFBa0FRQnVKQUVBQ1FBQUFIQWtBUVxcXG5CMEpBRUFDUUFBQUlBa0FRQkRKUUVBQ1FBQUFKQXZBUUR5THdFQUNRQUFBQUF3QVFBL05BRUFDUUFBQUVBMEFRQkFOQUVBRFFBQUFFRTBcXFxuQVFCR05BRUFDUUFBQUVjMEFRQlZOQUVBRFFBQUFBQkVBUUJHUmdFQUNRQUFBQUJvQVFBNGFnRUFDUUFBQUVCcUFRQmVhZ0VBQ1FBQUFHXFxcbkJxQVFCcGFnRUFDUUFBQUc1cUFRQythZ0VBQ1FBQUFNQnFBUURKYWdFQUNRQUFBTkJxQVFEdGFnRUFDUUFBQVBCcUFRRDBhZ0VBRFFBQVxcXG5BUFZxQVFEMWFnRUFDUUFBQUFCckFRQXZhd0VBQ1FBQUFEQnJBUUEyYXdFQURRQUFBRGRyQVFCRmF3RUFDUUFBQUZCckFRQlphd0VBQ1FcXFxuQUFBRnRyQVFCaGF3RUFDUUFBQUdOckFRQjNhd0VBQ1FBQUFIMXJBUUNQYXdFQUNRQUFBRUJ1QVFDYWJnRUFDUUFBQUFCdkFRQktid0VBXFxcbkNRQUFBRTl2QVFCUGJ3RUFEUUFBQUZCdkFRQ0hid0VBQ1FBQUFJOXZBUUNTYndFQURRQUFBSk52QVFDZmJ3RUFDUUFBQU9CdkFRRGhid1xcXG5FQUNRQUFBT0p2QVFEaWJ3RUFEZ0FBQU9OdkFRRGpid0VBQ1FBQUFPUnZBUURrYndFQURRQUFBUEJ2QVFEeGJ3RUFDUUFBQUFCd0FRRDNcXFxuaHdFQUNRQUFBQUNJQVFEVmpBRUFDUUFBQUFDTkFRQUlqUUVBQ1FBQUFQQ3ZBUUR6cndFQUNRQUFBUFd2QVFEN3J3RUFDUUFBQVAydkFRXFxcbkQrcndFQUNRQUFBQUN3QVFBaXNRRUFDUUFBQURLeEFRQXlzUUVBQ1FBQUFGQ3hBUUJTc1FFQUNRQUFBRld4QVFCVnNRRUFDUUFBQUdTeFxcXG5BUUJuc1FFQUNRQUFBSEN4QVFEN3NnRUFDUUFBQUFDOEFRQnF2QUVBQ1FBQUFIQzhBUUI4dkFFQUNRQUFBSUM4QVFDSXZBRUFDUUFBQUpcXFxuQzhBUUNadkFFQUNRQUFBSnk4QVFDY3ZBRUFDUUFBQUoyOEFRQ2V2QUVBRFFBQUFKKzhBUUNmdkFFQUNRQUFBS0M4QVFDanZBRUFBd0FBXFxcbkFBRFBBUUF0endFQURRQUFBRERQQVFCR3p3RUFEUUFBQUZEUEFRRER6d0VBQ1FBQUFBRFFBUUQxMEFFQUNRQUFBQURSQVFBbTBRRUFDUVxcXG5BQUFDblJBUUJtMFFFQUNRQUFBR2ZSQVFCcDBRRUFEUUFBQUdyUkFRQnkwUUVBQ1FBQUFIUFJBUUI2MFFFQUF3QUFBSHZSQVFDQzBRRUFcXFxuRFFBQUFJUFJBUUNFMFFFQUNRQUFBSVhSQVFDTDBRRUFEUUFBQUl6UkFRQ3AwUUVBQ1FBQUFLclJBUUN0MFFFQURRQUFBSzdSQVFEbzBRXFxcbkVBQ1FBQUFPblJBUURxMFFFQURnQUFBQURTQVFCQjBnRUFEZ0FBQUVMU0FRQkUwZ0VBRFFBQUFFWFNBUUJGMGdFQURnQUFBTURTQVFEVFxcXG4wZ0VBQ1FBQUFPRFNBUUR6MGdFQUNRQUFBQURUQVFCVzB3RUFEZ0FBQUdEVEFRQjQwd0VBQ1FBQUFBRFVBUUJVMUFFQUNRQUFBRmJVQVFcXFxuQ2MxQUVBQ1FBQUFKN1VBUUNmMUFFQUNRQUFBS0xVQVFDaTFBRUFDUUFBQUtYVUFRQ20xQUVBQ1FBQUFLblVBUUNzMUFFQUNRQUFBSzdVXFxcbkFRQzUxQUVBQ1FBQUFMdlVBUUM3MUFFQUNRQUFBTDNVQVFERDFBRUFDUUFBQU1YVUFRQUYxUUVBQ1FBQUFBZlZBUUFLMVFFQUNRQUFBQVxcXG4zVkFRQVUxUUVBQ1FBQUFCYlZBUUFjMVFFQUNRQUFBQjdWQVFBNTFRRUFDUUFBQUR2VkFRQSsxUUVBQ1FBQUFFRFZBUUJFMVFFQUNRQUFcXFxuQUViVkFRQkcxUUVBQ1FBQUFFclZBUUJRMVFFQUNRQUFBRkxWQVFDbDFnRUFDUUFBQUtqV0FRRGExZ0VBQ1FBQUFOdldBUURiMWdFQURnXFxcbkFBQU56V0FRQVUxd0VBQ1FBQUFCWFhBUUFWMXdFQURnQUFBQmJYQVFCTzF3RUFDUUFBQUUvWEFRQlAxd0VBRGdBQUFGRFhBUUNJMXdFQVxcXG5DUUFBQUluWEFRQ0oxd0VBRGdBQUFJclhBUURDMXdFQUNRQUFBTVBYQVFERDF3RUFEZ0FBQU1UWEFRREwxd0VBQ1FBQUFNN1hBUUQvMXdcXFxuRUFCUUFBQUFEWUFRRC8yUUVBQ1FBQUFBRGFBUUEyMmdFQURRQUFBRGZhQVFBNjJnRUFDUUFBQUR2YUFRQnMyZ0VBRFFBQUFHM2FBUUIwXFxcbjJnRUFDUUFBQUhYYUFRQjEyZ0VBRFFBQUFIYmFBUUNEMmdFQUNRQUFBSVRhQVFDRTJnRUFEUUFBQUlYYUFRQ0wyZ0VBQ1FBQUFKdmFBUVxcXG5DZjJnRUFEUUFBQUtIYUFRQ3YyZ0VBRFFBQUFBRGZBUUFlM3dFQUNRQUFBQ1hmQVFBcTN3RUFDUUFBQUFEZ0FRQUc0QUVBRFFBQUFBamdcXFxuQVFBWTRBRUFEUUFBQUJ2Z0FRQWg0QUVBRFFBQUFDUGdBUUFrNEFFQURRQUFBQ2JnQVFBcTRBRUFEUUFBQUREZ0FRQnQ0QUVBQ1FBQUFJXFxcbi9nQVFDUDRBRUFEUUFBQUFEaEFRQXM0UUVBQ1FBQUFERGhBUUEyNFFFQURRQUFBRGZoQVFBOTRRRUFDUUFBQUVEaEFRQko0UUVBQ1FBQVxcXG5BRTdoQVFCUDRRRUFDUUFBQUpEaUFRQ3Q0Z0VBQ1FBQUFLN2lBUUN1NGdFQURRQUFBTURpQVFEcjRnRUFDUUFBQU96aUFRRHY0Z0VBRFFcXFxuQUFBUERpQVFENTRnRUFDUUFBQVAvaUFRRC80Z0VBQndBQUFORGtBUURyNUFFQUNRQUFBT3prQVFEdjVBRUFEUUFBQVBEa0FRRDU1QUVBXFxcbkNRQUFBT0RuQVFEbTV3RUFDUUFBQU9qbkFRRHI1d0VBQ1FBQUFPM25BUUR1NXdFQUNRQUFBUERuQVFEKzV3RUFDUUFBQUFEb0FRRFA2QVxcXG5FQUVRQUFBTkRvQVFEVzZBRUFEUUFBQU5mb0FRQkQ2UUVBRVFBQUFFVHBBUUJLNlFFQURRQUFBRXZwQVFCdzdBRUFFUUFBQUhIc0FRQzBcXFxuN0FFQUFBQUFBTFhzQVFBQTdRRUFFUUFBQUFIdEFRQTk3UUVBQUFBQUFEN3RBUUQvN1FFQUVRQUFBQUR1QVFEdjdnRUFBQUFBQVBEdUFRXFxcbkR4N2dFQURnQUFBUEx1QVFELzdnRUFBQUFBQUFEdkFRRC83d0VBRVFBQUFBRHdBUUFyOEFFQURnQUFBRER3QVFDVDhBRUFEZ0FBQUtEd1xcXG5BUUN1OEFFQURnQUFBTEh3QVFDLzhBRUFEZ0FBQU1Id0FRRFA4QUVBRGdBQUFOSHdBUUQxOEFFQURnQUFBQUR4QVFBSzhRRUFCUUFBQUFcXFxudnhBUUFQOFFFQURnQUFBQkR4QVFBdThRRUFDUUFBQUMveEFRQXY4UUVBRGdBQUFERHhBUUJwOFFFQUNRQUFBR3J4QVFCdjhRRUFEZ0FBXFxcbkFIRHhBUUNzOFFFQUNRQUFBSzN4QVFDdDhRRUFEZ0FBQU9ieEFRQUM4Z0VBQ1FBQUFCRHlBUUE3OGdFQUNRQUFBRUR5QVFCSThnRUFDUVxcXG5BQUFGRHlBUUJSOGdFQUNRQUFBR0R5QVFCbDhnRUFEZ0FBQUFEekFRRFg5Z0VBRGdBQUFOejJBUURzOWdFQURnQUFBUEQyQVFEODlnRUFcXFxuRGdBQUFBRDNBUUIyOXdFQURnQUFBSHYzQVFEWjl3RUFEZ0FBQU9EM0FRRHI5d0VBRGdBQUFQRDNBUUR3OXdFQURnQUFBQUQ0QVFBTCtBXFxcbkVBRGdBQUFCRDRBUUJIK0FFQURnQUFBRkQ0QVFCWitBRUFEZ0FBQUdENEFRQ0grQUVBRGdBQUFKRDRBUUN0K0FFQURnQUFBTEQ0QVFDeFxcXG4rQUVBRGdBQUFBRDVBUUJUK2dFQURnQUFBR0Q2QVFCdCtnRUFEZ0FBQUhENkFRQjgrZ0VBRGdBQUFJRDZBUUNJK2dFQURnQUFBSkQ2QVFcXFxuQzkrZ0VBRGdBQUFMLzZBUURGK2dFQURnQUFBTTc2QVFEYitnRUFEZ0FBQU9ENkFRRG8rZ0VBRGdBQUFQRDZBUUQ0K2dFQURnQUFBQUQ3XFxcbkFRQ1Mrd0VBRGdBQUFKVDdBUURLK3dFQURnQUFBUEQ3QVFENSt3RUFCUUFBQUFBQUFnRGZwZ0lBQ1FBQUFBQ25BZ0E1dHdJQUNRQUFBRVxcXG5DM0FnQWR1QUlBQ1FBQUFDQzRBZ0NoemdJQUNRQUFBTERPQWdEZzZ3SUFDUUFBQUFENEFnQWQrZ0lBQ1FBQUFBQUFBd0JLRXdNQUNRQUFcXFxuQUZBVEF3Q3ZJd01BQ1FBQUFBRUFEZ0FCQUE0QUF3QUFBQ0FBRGdCL0FBNEFBd0FBQUFBQkRnRHZBUTRBRFFBQUFBQUFEd0Q5L3c4QUNRXFxcbkFBQUFBQUVBRDkveEFBQ1FBQUFHRnpjMlZ5ZEdsdmJpQm1ZV2xzWldRNklHMXBaQ0E4UFNCelpXeG1MbXhsYmlncGZpOHVZMkZ5WjI4dlxcXG5jbVZuYVhOMGNua3ZjM0pqTDJsdVpHVjRMbU55WVhSbGN5NXBieTAyWmpFM1pESXlZbUpoTVRVd01ERm1MM0JsY21ObGJuUXRaVzVqYjJcXFxuUnBibWN0TWk0ekxqQXZjM0pqTDJ4cFlpNXljd0RYYUJNQVdBQUFBTk1BQUFBb0FBQUFKVEF3SlRBeEpUQXlKVEF6SlRBMEpUQTFKVEEyXFxcbkpUQTNKVEE0SlRBNUpUQkJKVEJDSlRCREpUQkVKVEJGSlRCR0pURXdKVEV4SlRFeUpURXpKVEUwSlRFMUpURTJKVEUzSlRFNEpURTVKVFxcXG5GQkpURkNKVEZESlRGRUpURkZKVEZHSlRJd0pUSXhKVEl5SlRJekpUSTBKVEkxSlRJMkpUSTNKVEk0SlRJNUpUSkJKVEpDSlRKREpUSkVcXFxuSlRKRkpUSkdKVE13SlRNeEpUTXlKVE16SlRNMEpUTTFKVE0ySlRNM0pUTTRKVE01SlROQkpUTkNKVE5ESlRORUpUTkZKVE5HSlRRd0pUXFxcblF4SlRReUpUUXpKVFEwSlRRMUpUUTJKVFEzSlRRNEpUUTVKVFJCSlRSQ0pUUkRKVFJFSlRSRkpUUkdKVFV3SlRVeEpUVXlKVFV6SlRVMFxcXG5KVFUxSlRVMkpUVTNKVFU0SlRVNUpUVkJKVFZDSlRWREpUVkVKVFZGSlRWR0pUWXdKVFl4SlRZeUpUWXpKVFkwSlRZMUpUWTJKVFkzSlRcXFxuWTRKVFk1SlRaQkpUWkNKVFpESlRaRUpUWkZKVFpHSlRjd0pUY3hKVGN5SlRjekpUYzBKVGMxSlRjMkpUYzNKVGM0SlRjNUpUZEJKVGRDXFxcbkpUZERKVGRFSlRkRkpUZEdKVGd3SlRneEpUZ3lKVGd6SlRnMEpUZzFKVGcySlRnM0pUZzRKVGc1SlRoQkpUaENKVGhESlRoRUpUaEZKVFxcXG5oR0pUa3dKVGt4SlRreUpUa3pKVGswSlRrMUpUazJKVGszSlRrNEpUazVKVGxCSlRsQ0pUbERKVGxFSlRsRkpUbEdKVUV3SlVFeEpVRXlcXFxuSlVFekpVRTBKVUUxSlVFMkpVRTNKVUU0SlVFNUpVRkJKVUZDSlVGREpVRkVKVUZGSlVGR0pVSXdKVUl4SlVJeUpVSXpKVUkwSlVJMUpVXFxcbkkySlVJM0pVSTRKVUk1SlVKQkpVSkNKVUpESlVKRUpVSkZKVUpHSlVNd0pVTXhKVU15SlVNekpVTTBKVU0xSlVNMkpVTTNKVU00SlVNNVxcXG5KVU5CSlVOQ0pVTkRKVU5FSlVORkpVTkdKVVF3SlVReEpVUXlKVVF6SlVRMEpVUTFKVVEySlVRM0pVUTRKVVE1SlVSQkpVUkNKVVJESlVcXFxuUkVKVVJGSlVSR0pVVXdKVVV4SlVVeUpVVXpKVVUwSlVVMUpVVTJKVVUzSlVVNEpVVTVKVVZCSlVWQ0pVVkRKVVZFSlVWRkpVVkdKVVl3XFxcbkpVWXhKVVl5SlVZekpVWTBKVVkxSlVZMkpVWTNKVVk0SlVZNUpVWkJKVVpDSlVaREpVWkVKVVpGSlVaRzEyZ1RBRmdBQUFBVUFRQUFSd1xcXG5BQUFOZG9Fd0JZQUFBQW5RRUFBQ01BQUFEdEFBQUFDQUFBQUFRQUFBRHVBQUFBN3dBQUFPMEFBQUFJQUFBQUJBQUFBUEFBQUFCaElITjBcXFxuY21sdVoySjVkR1VnWVhKeVlYbHpkSEoxWTNRZ1UzbHpkR1Z0VkdsdFpYTjBjblZqZENCMllYSnBZVzUwQUFBQXAyd1RBQTRBQUFCMGRYXFxcbkJzWlNCMllYSnBZVzUwQUFBQXdHd1RBQTBBQUFCdVpYZDBlWEJsSUhaaGNtbGhiblFBMkd3VEFBOEFBQUIxYm1sMElIWmhjbWxoYm5Ud1xcXG5iQk1BREFBQUFHVnVkVzBFYlJNQUJBQUFBRzFoY0FBUWJSTUFBd0FBQUhObGNYVmxibU5sSEcwVEFBZ0FBQUJ1WlhkMGVYQmxJSE4wY25cXFxuVmpkQUFBTEcwVEFBNEFBQUJQY0hScGIyNGdkbUZzZFdWRWJSTUFEQUFBQUhWdWFYUWdkbUZzZFdVQUFGaHRFd0FLQUFBQWpHd1RBQW9BXFxcbkFBQnpkSEpwYm1jZ0FIUnRFd0FIQUFBQVkyaGhjbUZqZEdWeUlHQmdoRzBUQUFzQUFBQ1BiUk1BQVFBQUFHWnNiMkYwYVc1bklIQnZhV1xcXG41MElHQ2diUk1BRUFBQUFJOXRFd0FCQUFBQWFXNTBaV2RsY2lCZ0FBQUF3RzBUQUFrQUFBQ1BiUk1BQVFBQUFHSnZiMnhsWVc0Z1lBQUFcXFxuQU54dEV3QUpBQUFBajIwVEFBRUFBQUJ2Ym1VZ2IyWWdBUGh0RXdBSEFBQUFMQ0FBQUFodUV3QUNBQUFBajIwVEFBRUFBQUNQYlJNQUFRXFxcbkFBQUdBZ2IzSWdZQUFBajIwVEFBRUFBQUFrYmhNQUJnQUFBSTl0RXdBQkFBQUFmaTh1WTJGeVoyOHZjbVZuYVhOMGNua3ZjM0pqTDJsdVxcXG5aR1Y0TG1OeVlYUmxjeTVwYnkwMlpqRTNaREl5WW1KaE1UVXdNREZtTDNObGNtUmxMVEV1TUM0eE9ETXZjM0pqTDJSbEwyMXZaQzV5YzJcXFxuVjRjR3hwWTJsMElIQmhibWxqUkc0VEFGSUFBQURzQ0FBQUVnQUFBSFV6TW5VMk5BQUE4Z0FBQUFRQUFBQUVBQUFBOHdBQUFQUUFBQUQxXFxcbkFBQUFaR1Z6WTNKcGNIUnBiMjRvS1NCcGN5QmtaWEJ5WldOaGRHVmtPeUIxYzJVZ1JHbHpjR3hoZWRSdUV3QUFBQUFBOWdBQUFQY0FBQVxcXG5ENEFBQUErUUFBQVBvQUFBRDdBQUFBREFBQUFBUUFBQUQ4QUFBQSt3QUFBQXdBQUFBRUFBQUEvUUFBQVB3QUFBQVlieE1BL2dBQUFQOEFcXFxuQUFBQUFRQUEvZ0FBQUFFQkFBQUNBUUFBRUFBQUFBUUFBQUFEQVFBQUFnRUFBQkFBQUFBRUFBQUFCQUVBQUFNQkFBQlVieE1BQlFFQUFBXFxcbllCQUFBQUFRQUFCd0VBQUFFQkFBQTZJQUFBa0c4VEFBSUFBQUFLQ2tOaGRYTmxaQ0JpZVRxY2J4TUFEQUFBQUFvQUFBQ3dieE1BQVFBQVxcXG5BTlJ1RXdBQUFBQUFrRzhUQUFJQUFBQWdJQ0FnSUNBZ0lDQWdJR05oYkd4bFpDQmdUM0IwYVc5dU9qcDFibmR5WVhBb0tXQWdiMjRnWVNcXFxuQmdUbTl1WldBZ2RtRnNkV1V2Y25WemRHTXZaV0l5TmpJNU5tSTFOVFpqWldZeE1HWmlOekV6WVRNNFpqTmtNVFppT1RnNE5qQTRNR1l5XFxcbk5pOXNhV0p5WVhKNUwyTnZjbVV2YzNKakwzTnNhV05sTDJsMFpYSXVjbk1DY0JNQVRnQUFBT3dCQUFBaEFBQUFEQUVBQUFRQUFBQUVBQVxcXG5BQURRRUFBQTRCQUFBUEFRQUFiM1psY21ac2IzY2dhVzRnUkhWeVlYUnBiMjQ2T201bGR3QUFBSGh3RXdBWkFBQUFMM0oxYzNSakwyVmlcXFxuTWpZeU9UWmlOVFUyWTJWbU1UQm1ZamN4TTJFek9HWXpaREUyWWprNE9EWXdPREJtTWpZdmJHbGljbUZ5ZVM5amIzSmxMM055WXk5MGFXXFxcbjFsTG5Kem5IQVRBRWdBQUFES0FBQUFGUUFBQUVGalkyVnpjMFZ5Y205eWRYTmxJRzltSUhOMFpEbzZkR2h5WldGa09qcGpkWEp5Wlc1MFxcXG5LQ2tnYVhNZ2JtOTBJSEJ2YzNOcFlteGxJR0ZtZEdWeUlIUm9aU0IwYUhKbFlXUW5jeUJzYjJOaGJDQmtZWFJoSUdoaGN5QmlaV1Z1SUdcXFxuUmxjM1J5YjNsbFpHeHBZbkpoY25rdmMzUmtMM055WXk5MGFISmxZV1F2Ylc5a0xuSnpBQUJkY1JNQUhRQUFBTWNDQUFBakFBQUFabUZwXFxcbmJHVmtJSFJ2SUdkbGJtVnlZWFJsSUhWdWFYRjFaU0IwYUhKbFlXUWdTVVE2SUdKcGRITndZV05sSUdWNGFHRjFjM1JsWkFDTWNSTUFOd1xcXG5BQUFGMXhFd0FkQUFBQVFBUUFBQTBBQUFCNGNCTUFBQUFBQUhWdVkyRjBaV2R2Y21sNlpXUWdaWEp5YjNKdmRHaGxjaUJsY25KdmNtOTFcXFxuZENCdlppQnRaVzF2Y25sMWJtVjRjR1ZqZEdWa0lHVnVaQ0J2WmlCbWFXeGxkVzV6ZFhCd2IzSjBaV1J2Y0dWeVlYUnBiMjRnYVc1MFpYXFxcbkp5ZFhCMFpXUmhjbWQxYldWdWRDQnNhWE4wSUhSdmJ5QnNiMjVuYVc1MllXeHBaQ0JtYVd4bGJtRnRaWFJ2YnlCdFlXNTVJR3hwYm10elxcXG5ZM0p2YzNNdFpHVjJhV05sSUd4cGJtc2diM0lnY21WdVlXMWxaR1ZoWkd4dlkydGxlR1ZqZFhSaFlteGxJR1pwYkdVZ1luVnplWEpsYzJcXFxuOTFjbU5sSUdKMWMzbG1hV3hsSUhSdmJ5QnNZWEpuWldacGJHVnplWE4wWlcwZ2NYVnZkR0VnWlhoalpXVmtaV1J6WldWcklHOXVJSFZ1XFxcbmMyVmxhMkZpYkdVZ1ptbHNaVzV2SUhOMGIzSmhaMlVnYzNCaFkyVjNjbWwwWlNCNlpYSnZkR2x0WldRZ2IzVjBhVzUyWVd4cFpDQmtZWFxcXG5SaGFXNTJZV3hwWkNCcGJuQjFkQ0J3WVhKaGJXVjBaWEp6ZEdGc1pTQnVaWFIzYjNKcklHWnBiR1VnYUdGdVpHeGxabWxzWlhONWMzUmxcXFxuYlNCc2IyOXdJRzl5SUdsdVpHbHlaV04wYVc5dUlHeHBiV2wwSUNobExtY3VJSE41Yld4cGJtc2diRzl2Y0NseVpXRmtMVzl1YkhrZ1ptXFxcbmxzWlhONWMzUmxiU0J2Y2lCemRHOXlZV2RsSUcxbFpHbDFiV1JwY21WamRHOXllU0J1YjNRZ1pXMXdkSGxwY3lCaElHUnBjbVZqZEc5eVxcXG5lVzV2ZENCaElHUnBjbVZqZEc5eWVXOXdaWEpoZEdsdmJpQjNiM1ZzWkNCaWJHOWphMlZ1ZEdsMGVTQmhiSEpsWVdSNUlHVjRhWE4wYzJcXFxuSnliMnRsYmlCd2FYQmxibVYwZDI5eWF5QmtiM2R1WVdSa2NtVnpjeUJ1YjNRZ1lYWmhhV3hoWW14bFlXUmtjbVZ6Y3lCcGJpQjFjMlZ1XFxcbmIzUWdZMjl1Ym1WamRHVmtZMjl1Ym1WamRHbHZiaUJoWW05eWRHVmtibVYwZDI5eWF5QjFibkpsWVdOb1lXSnNaV2h2YzNRZ2RXNXlaV1xcXG5GamFHRmliR1ZqYjI1dVpXTjBhVzl1SUhKbGMyVjBZMjl1Ym1WamRHbHZiaUJ5WldaMWMyVmtjR1Z5YldsemMybHZiaUJrWlc1cFpXUmxcXFxuYm5ScGRIa2dibTkwSUdadmRXNWtSWEp5YjNKcmFXNWtBQUFRQVFBQUFRQUFBQUVBQUFBUkFRQUFiV1Z6YzJGblpRQU1BUUFBQ0FBQUFBXFxcblFBQUFBU0FRQUFTMmx1WkU5elkyOWtaUUFBREFFQUFBUUFBQUFFQUFBQUV3RUFBQlFCQUFBTUFBQUFCQUFBQUJVQkFBQWdLRzl6SUdWeVxcXG5jbTl5SUNsNGNCTUFBQUFBQURCMUV3QUxBQUFBTzNVVEFBRUFBQUJoYkhKbFlXUjVJR0p2Y25KdmQyVmtGZ0VBQUFBQUFBQUJBQUFBRndcXFxuRUFBR3hwWW5KaGNua3ZjM1JrTDNOeVl5OXdZWFJvTG5KekFIUjFFd0FYQUFBQTJBSUFBQmdBQUFCMGRSTUFGd0FBQVA4Q0FBQWpBQUFBXFxcbmRIVVRBQmNBQUFBQkF3QUFIUUFBQUhSMUV3QVhBQUFBRGdNQUFCNEFBQUIwZFJNQUZ3QUFBQm9EQUFBZUFBQUFkSFVUQUJjQUFBQzJBd1xcXG5BQUlnQUFBSFIxRXdBWEFBQUF3UU1BQUNZQUFBQjBkUk1BRndBQUFNZ0RBQUFtQUFBQWIzWmxjbVpzYjNjZ2QyaGxiaUJoWkdScGJtY2dcXFxuWkhWeVlYUnBiMjRnZEc4Z2FXNXpkR0Z1ZEd4cFluSmhjbmt2YzNSa0wzTnlZeTkwYVcxbExuSnpBRFIyRXdBWEFBQUFTQUlBQUI4QUFBXFxcbkJzYVdKeVlYSjVMM04wWkM5emNtTXZjM2x6WDJOdmJXMXZiaTkwYUhKbFlXUmZhVzVtYnk1eWN3QUFBRngyRXdBcEFBQUFGZ0FBQURNQVxcXG5BQUJ0WlcxdmNua2dZV3hzYjJOaGRHbHZiaUJ2WmlBZ1lubDBaWE1nWm1GcGJHVmtBQUNZZGhNQUZRQUFBSzEyRXdBTkFBQUFiR2xpY21cXFxuRnllUzl6ZEdRdmMzSmpMMkZzYkc5akxuSnp6SFlUQUJnQUFBQlZBUUFBQ1FBQUFHTmhibTV2ZENCdGIyUnBabmtnZEdobElIQmhibWxqXFxcbklHaHZiMnNnWm5KdmJTQmhJSEJoYm1samEybHVaeUIwYUhKbFlXVDBkaE1BTkFBQUFHeHBZbkpoY25rdmMzUmtMM055WXk5d1lXNXBZMlxcXG50cGJtY3Vjbk13ZHhNQUhBQUFBSWNBQUFBSkFBQUFNSGNUQUJ3QUFBQlFBZ0FBSGdBQUFEQjNFd0FjQUFBQVR3SUFBQjhBQUFBVUFRQUFcXFxuREFBQUFBUUFBQUFZQVFBQURBRUFBQWdBQUFBRUFBQUFHUUVBQUJvQkFBQVFBQUFBQkFBQUFCc0JBQUFjQVFBQURBRUFBQWdBQUFBRUFBXFxcbkFBSFFFQUFCNEJBQUFXQVFBQUFBQUFBQUVBQUFBZkFRQUFWVzV6ZFhCd2IzSjBaV1JEZFhOMGIyMWxjbkp2Y2dBQURBRUFBQVFBQUFBRVxcXG5BQUFBSUFFQUFGVnVZMkYwWldkdmNtbDZaV1JQZEdobGNrOTFkRTltVFdWdGIzSjVWVzVsZUhCbFkzUmxaRVZ2WmtsdWRHVnljblZ3ZEdcXFxuVmtRWEpuZFcxbGJuUk1hWE4wVkc5dlRHOXVaMGx1ZG1Gc2FXUkdhV3hsYm1GdFpWUnZiMDFoYm5sTWFXNXJjME55YjNOelpYTkVaWFpwXFxcblkyVnpSR1ZoWkd4dlkydEZlR1ZqZFhSaFlteGxSbWxzWlVKMWMzbFNaWE52ZFhKalpVSjFjM2xHYVd4bFZHOXZUR0Z5WjJWR2FXeGxjM1xcXG5semRHVnRVWFZ2ZEdGRmVHTmxaV1JsWkU1dmRGTmxaV3RoWW14bFUzUnZjbUZuWlVaMWJHeFhjbWwwWlZwbGNtOVVhVzFsWkU5MWRFbHVcXFxuZG1Gc2FXUkVZWFJoU1c1MllXeHBaRWx1Y0hWMFUzUmhiR1ZPWlhSM2IzSnJSbWxzWlVoaGJtUnNaVVpwYkdWemVYTjBaVzFNYjI5d1VtXFxcblZoWkU5dWJIbEdhV3hsYzNsemRHVnRSR2x5WldOMGIzSjVUbTkwUlcxd2RIbEpjMEZFYVhKbFkzUnZjbmxPYjNSQlJHbHlaV04wYjNKNVxcXG5WMjkxYkdSQ2JHOWphMEZzY21WaFpIbEZlR2x6ZEhOQ2NtOXJaVzVRYVhCbFRtVjBkMjl5YTBSdmQyNUJaR1J5VG05MFFYWmhhV3hoWW1cXFxueGxRV1JrY2tsdVZYTmxUbTkwUTI5dWJtVmpkR1ZrUTI5dWJtVmpkR2x2YmtGaWIzSjBaV1JPWlhSM2IzSnJWVzV5WldGamFHRmliR1ZJXFxcbmIzTjBWVzV5WldGamFHRmliR1ZEYjI1dVpXTjBhVzl1VW1WelpYUkRiMjV1WldOMGFXOXVVbVZtZFhObFpGQmxjbTFwYzNOcGIyNUVaV1xcXG41cFpXUk9iM1JHYjNWdVpHOXdaWEpoZEdsdmJpQnpkV05qWlhOelpuVnNBQkFBQUFBUkFBQUFFZ0FBQUJBQUFBQVFBQUFBRXdBQUFCSUFcXFxuQUFBTkFBQUFEZ0FBQUJVQUFBQU1BQUFBQ3dBQUFCVUFBQUFWQUFBQUR3QUFBQTRBQUFBVEFBQUFKZ0FBQURnQUFBQVpBQUFBRndBQUFBXFxcbndBQUFBSkFBQUFDZ0FBQUJBQUFBQVhBQUFBR1FBQUFBNEFBQUFOQUFBQUZBQUFBQWdBQUFBYkFBQUFEZ0FBQUJBQUFBQVdBQUFBRlFBQVxcXG5BQXNBQUFBV0FBQUFEUUFBQUFzQUFBQVRBQUFBd1hRVEFMQjBFd0NlZEJNQWpuUVRBSDUwRXdCcmRCTUFXWFFUQUV4MEV3QStkQk1BS1hcXFxuUVRBQjEwRXdBU2RCTUEvWE1UQU9oekV3RFpjeE1BeTNNVEFMaHpFd0NTY3hNQVduTVRBRUZ6RXdBcWN4TUFIbk1UQUJWekV3QUxjeE1BXFxcbiszSVRBT1J5RXdETGNoTUF2WElUQUxCeUV3Q2NjaE1BbEhJVEFIbHlFd0JyY2hNQVczSVRBRVZ5RXdBd2NoTUFKWElUQUE5eUV3QUNjaFxcXG5NQTkzRVRBT1J4RXdBSUFBQUFFQUFBQUJFQUFBQVBBQUFBRHdBQUFCSUFBQUFSQUFBQURBQUFBQWtBQUFBUUFBQUFDd0FBQUFvQUFBQU5cXFxuQUFBQUNnQUFBQTBBQUFBTUFBQUFFUUFBQUJJQUFBQU9BQUFBRmdBQUFBd0FBQUFMQUFBQUNBQUFBQWtBQUFBTEFBQUFDd0FBQUJjQUFBXFxcbkFNQUFBQURBQUFBQklBQUFBSUFBQUFEZ0FBQUF3QUFBQVBBQUFBRXdBQUFBc0FBQUFMQUFBQURRQUFBQXNBQUFBRkFBQUFEUUFBQUFkNlxcXG5Fd0QzZVJNQTVua1RBTmQ1RXdESWVSTUF0bmtUQUtWNUV3Q1plUk1Ba0hrVEFJQjVFd0IxZVJNQWEza1RBRjU1RXdCVWVSTUFSM2tUQURcXFxudDVFd0FxZVJNQUdIa1RBQXA1RXdEMGVCTUE2SGdUQU4xNEV3RFZlQk1BekhnVEFNRjRFd0MyZUJNQW4zZ1RBSk40RXdDSGVCTUFkWGdUXFxcbkFHMTRFd0JmZUJNQVUzZ1RBRVI0RXdBeGVCTUFKbmdUQU5SM0V3QVplQk1BRG5nVEFBbDRFd0Q4ZHhNQVNHRnphQ0IwWVdKc1pTQmpZWFxcXG5CaFkybDBlU0J2ZG1WeVpteHZkN1I4RXdBY0FBQUFMMk5oY21kdkwzSmxaMmx6ZEhKNUwzTnlZeTlwYm1SbGVDNWpjbUYwWlhNdWFXOHRcXFxuTm1ZeE4yUXlNbUppWVRFMU1EQXhaaTlvWVhOb1luSnZkMjR0TUM0eE15NHhMM055WXk5eVlYY3ZiVzlrTG5KejJId1RBRlFBQUFCYUFBXFxcbkFBS0FBQUFDRUJBQUFFQUFBQUJBQUFBQ0lCQUFBakFRQUFKQUVBQUNFQkFBQUVBQUFBQkFBQUFDVUJBQUJzYVdKeVlYSjVMMkZzYkc5alxcXG5MM055WXk5eVlYZGZkbVZqTG5KelkyRndZV05wZEhrZ2IzWmxjbVpzYjNjQUFBQ0FmUk1BRVFBQUFHUjlFd0FjQUFBQURBSUFBQVVBQUFcXFxuQmhJR1p2Y20xaGRIUnBibWNnZEhKaGFYUWdhVzF3YkdWdFpXNTBZWFJwYjI0Z2NtVjBkWEp1WldRZ1lXNGdaWEp5YjNJQUpnRUFBQUFBXFxcbkFBQUJBQUFBSndBQUFHeHBZbkpoY25rdllXeHNiMk12YzNKakwyWnRkQzV5Yy9COUV3QVlBQUFBWWdJQUFDQUFBQUJqWVd4c1pXUWdZRlxcXG5KbGMzVnNkRG82ZFc1M2NtRndLQ2xnSUc5dUlHRnVJR0JGY25KZ0lIWmhiSFZsQUNZQkFBQUFBQUFBQVFBQUFDY0JBQUJzYVdKeVlYSjVcXFxuTDJGc2JHOWpMM055WXk5emRISXVjbk5VZmhNQUdBQUFBSmdCQUFBdkFBQUFWSDRUQUJnQUFBQ1hBUUFBT3dBQUFPKy92V2x1ZG1Gc2FXXFxcblFnZFhSbUxUaHNhV0p5WVhKNUwyRnNiRzlqTDNOeVl5OXplVzVqTG5KekFBQUFuSDRUQUJrQUFBQmJBUUFBTWdBQUFITjNZWEJmY21WdFxcXG5iM1psSUdsdVpHVjRJQ2hwY3lBcElITm9iM1ZzWkNCaVpTQThJR3hsYmlBb2FYTWdLUUFBQU1oK0V3QVdBQUFBM240VEFCWUFBQUQwZmhcXFxuTUFBUUFBQUd4cFluSmhjbmt2WVd4c2IyTXZjM0pqTDNabFl5OXRiMlF1Y25NUWZ4TUFIQUFBQUhZRkFBQU5BQUFBS1NCemFHOTFiR1FnXFxcblltVWdQRDBnYkdWdUlDaHBjeUJ5WlcxdmRtRnNJR2x1WkdWNElDaHBjeUFBQUFCVGZ4TUFFZ0FBQU41K0V3QVdBQUFBOUg0VEFBRUFBQVxcXG5CZ1lYUmdJSE53YkdsMElHbHVaR1Y0SUNocGN5QUFBQUNBZnhNQUZRQUFBRHgvRXdBWEFBQUE5SDRUQUFFQUFBQVFmeE1BSEFBQUFESUlcXFxuQUFBTkFBQUFZbmwwWlhObGNuSnZjZ0FBSVFFQUFBUUFBQUFFQUFBQUtBRUFBRVp5YjIxVmRHWTRSWEp5YjNJQUFBQXBBUUFBREFBQUFBXFxcblFBQUFBcUFRQUFZWE56WlhKMGFXOXVJR1poYVd4bFpEb2daV1JsYkhSaElENDlJREJzYVdKeVlYSjVMMk52Y21VdmMzSmpMMjUxYlM5a1xcXG5hWGxmWm14dllYUXVjbk1BQUJtQUV3QWhBQUFBVEFBQUFBa0FBQUFaZ0JNQUlRQUFBRTRBQUFBSkFBQUFBZ0FBQUJRQUFBRElBQUFBMEFcXFxuY0FBQ0JPQUFCQURRTUFnSVFlQUFBdE1RRUF3dXNMQUpRMWR3QUF3Vy95aGlNQUFBQUFBSUh2cklWYlFXMHQ3Z1FBQUFBQUFBQUFBQUFBXFxcbkFSOXF2MlR0T0c3dGw2ZmE5UGsvNlFOUEdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFUNlZMZ21aM3dQOU9CVVBMK1IwSSt6MXo5TUkzQVxcXG5URTJyRE52QmwvTTZZREpoL3BUZ0lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWHd1bUZ1SDA3NXlcXFxubjluWWh5OFZFc1pRM210d2JrclBEOWlWMVc1eHNpYXdac2F0SkRZVkhWclRRandPVlA5andITlZ6QmZ2K1dYeUtMeFY5OGZjZ056dGJ2XFxcblRPNzl4ZjkxTUZBR3hwWW5KaGNua3ZZMjl5WlM5emNtTXZiblZ0TDJac2RESmtaV012YzNSeVlYUmxaM2t2WkhKaFoyOXVMbkp6WVhOelxcXG5aWEowYVc5dUlHWmhhV3hsWkRvZ1pDNXRZVzUwSUQ0Z01BQmNnUk1BTHdBQUFIVUFBQUFGQUFBQVlYTnpaWEowYVc5dUlHWmhhV3hsWkRcXFxub2daQzV0YVc1MWN5QStJREFBQUFCY2dSTUFMd0FBQUhZQUFBQUZBQUFBWVhOelpYSjBhVzl1SUdaaGFXeGxaRG9nWkM1d2JIVnpJRDRnXFxcbk1GeUJFd0F2QUFBQWR3QUFBQVVBQUFCaGMzTmxjblJwYjI0Z1ptRnBiR1ZrT2lCa0xtMWhiblF1WTJobFkydGxaRjloWkdRb1pDNXdiSFxcXG5WektTNXBjMTl6YjIxbEtDa0FBRnlCRXdBdkFBQUFlQUFBQUFVQUFBQmhjM05sY25ScGIyNGdabUZwYkdWa09pQmtMbTFoYm5RdVkyaGxcXFxuWTJ0bFpGOXpkV0lvWkM1dGFXNTFjeWt1YVhOZmMyOXRaU2dwQUZ5QkV3QXZBQUFBZVFBQUFBVUFBQUJoYzNObGNuUnBiMjRnWm1GcGJHXFxcblZrT2lCaWRXWXViR1Z1S0NrZ1BqMGdUVUZZWDFOSlIxOUVTVWRKVkZNQUFBQmNnUk1BTHdBQUFIb0FBQUFGQUFBQVhJRVRBQzhBQUFEQlxcXG5BQUFBQ1FBQUFGeUJFd0F2QUFBQStRQUFBRlFBQUFCY2dSTUFMd0FBQVBvQUFBQU5BQUFBWElFVEFDOEFBQUFCQVFBQU13QUFBRnlCRXdcXFxuQXZBQUFBQ2dFQUFBVUFBQUJjZ1JNQUx3QUFBQXNCQUFBRkFBQUFYSUVUQUM4QUFBQU1BUUFBQlFBQUFGeUJFd0F2QUFBQURRRUFBQVVBXFxcbkFBQmNnUk1BTHdBQUFBNEJBQUFGQUFBQVhJRVRBQzhBQUFCTEFRQUFId0FBQUZ5QkV3QXZBQUFBWlFFQUFBMEFBQUJjZ1JNQUx3QUFBSFxcXG5FQkFBQWtBQUFBWElFVEFDOEFBQUIyQVFBQVZBQUFBRnlCRXdBdkFBQUFnd0VBQURNQUFBQUFBQUFBMzBVYVBRUFBHdWJCKzh6K0FBQUFcXFxuQU1yR21zY1gvbkNyM1B2VS9nQUFBQUJQM0x5Ky9MRjMvL2I3M1A0QUFBQUFETlpyUWUrUlZyNFIvT1QrQUFBQUFEejhmNUN0SDlDTkxQXFxcbnpzL2dBQUFBQ0RtbFV4S0Z4UjAwYjg5UDRBQUFBQXRjbW1yWStzY1oxaC9QeitBQUFBQU11TDdpTjNJcHpxZS93RS93QUFBQUJ0VTNoQVxcXG5rVW5NcnBiOERQOEFBQUFBVjg2MlhYa1NQSUt4L0JUL0FBQUFBRGRXKzAwMmxCREN5L3djL3dBQUFBQlBtRWc0YitxV2tPYjhKUDhBQUFcXFxuQUF4enFDSmN1RmROY0EvU3ovQUFBQUFQU1h2NWZOejRhZ0cvMDAvd0FBQUFEbHJDb1htQW8wN3pYOVBQOEFBQUFBanJJMUt2dG5PTEpRXFxcbi9VVC9BQUFBQURzL3h0TGYxTWlFYS8xTS93QUFBQUM2emRNYUowVGR4WVg5VlA4QUFBQUFsc2tsdTg2ZmE1T2cvVnovQUFBQUFJU2xZblxcXG4wa2JLemJ1djFrL3dBQUFBRDIybDhOV0dhcm85WDliUDhBQUFBQUp2SEQzcFA0NHZQdi9YVC9BQUFBQUxpQS82cW9yYlcxQ3Y1OC93QUFcXFxuQUFDTFNueHNCVjlpaHlYK2hQOEFBQUFBVXpEQk5HRC92TWsvL296L0FBQUFBRlVtdXBHTWhVNldXdjZVL3dBQUFBQzlmaWx3SkhmNTMzXFxcblQrblA4QUFBQUFqN2psdUorOTM2YVAvcVQvQUFBQUFKUjlkSWpQWDZuNHFmNnMvd0FBQUFEUG02aVBrM0JFdWNUK3RQOEFBQUFBYXhVUFxcXG52L2p3Q0lyZi9yei9BQUFBQUxZeE1XVlZKYkROK2Y3RS93QUFBQUNzZjN2UXh1SS9tUlQvelA4QUFBQUFCanNyS3NRUVhPUXUvOVQvQUFcXFxuQUFBTk9TYzJtWkpDU3FTZi9jL3dBQUFBQU95Z0NEOHJXSC9XUC81UDhBQUFBQTZ4b1JrbVFJNWJ4Ky8rei9BQUFBQU15SVVHOEp6THlNXFxcbm1mLzAvd0FBQUFBc1pSbmlXQmUzMGJQLy9QOEFBQUFBQUFBQUFBQUFRSnpPL3dRQUFBQUFBQUFBQUFBUXBkVG82UDhNQUFBQUFBQUFBR1xcXG5Lc3hldDRyUU1BRkFBQUFBQUFoQW1VK0hnNVA0RWVBQndBQUFBQUFMTVZCOGw3enBmQU9BQWtBQUFBQUFCd1hPcDd6akorajFNQUxBQUFcXFxuQUFBQWFJRHBxNlE0MHRWdEFEUUFBQUFBQUVVaW1oY21KMCtmaUFBOEFBQUFBQUFuKzhUVU1hSmo3YUlBUkFBQUFBQUFxSzNJakRobDNyXFxcbkM5QUV3QUFBQUFBTnRscXhxT0NNZUQyQUJVQUFBQUFBQ2FIWEZDK1IxZHhQSUFYQUFBQUFBQVdPY2JwaXhwVFpJTkFXUUFBQUFBQU9xTlxcXG5jQnBrN2dIYUp3RnNBQUFBQUFCS2QrK2FtYU50b2tJQmRBQUFBQUFBaFd0OXRIdDRDZkpjQVh3QUFBQUFBSGNZM1htaDVGUzBkd0dFQUFcXFxuQUFBQURDeFp0YmtvWmJocElCakFBQUFBQUFQVjJXeU1WVE5jaXNBWlFBQUFBQUFMT2dsL3BjdENxVnh3R2NBQUFBQUFEalg2Q1p2WjlHXFxcbjN1RUJwQUFBQUFBQUpZdzUyelRDbTZYOEFhd0FBQUFBQUZ5Zm1LTnltc2IyRmdLMEFBQUFBQURPdnVsVVU3L2N0ekVDdkFBQUFBQUE0a1xcXG5FaThoZnovSWhNQXNRQUFBQUFBS1Y0WE5PYnppRE1aZ0xNQUFBQUFBRGZVeUY3ODFvV21JRUMxQUFBQUFBQU9qQWZsOXkxb09LYkF0d0FcXFxuQUFBQUFKYXo0MXhUMGRtb3RnTGtBQUFBQUFBOFJLZWsyWHliKzlBQzdBQUFBQUFBRUVTa3AweE1kcnZyQXZRQUFBQUFBQnFjUUxidmpxXFxcbnVMQmdQOEFBQUFBQUFzaEZlbUVPOGYwQ0FEQkFFQUFBQUFLVEdSNmVXa0VKczdBd3dCQUFBQUFKME1uS0g3bXhEblZRTVVBUUFBQUFBcFxcXG45RHRpMlNBb3JIQURIQUVBQUFBQWhjK25lbDVMUklDTEF5UUJBQUFBQUMzZHJBTkE1Q0cvcFFNc0FRQUFBQUNQLzBSZUw1eG5qc0FETkFcXFxuRUFBQUFBUWJpTW5KMFhNOVRhQXp3QkFBQUFBS2tiNDdTUzJ4bWU5UU5FQVFBQUFBRFpkOSs2YnIrVzZ3OEVUQUVBQUFBQWJHbGljbUZ5XFxcbmVTOWpiM0psTDNOeVl5OXVkVzB2Wm14ME1tUmxZeTl6ZEhKaGRHVm5lUzluY21semRTNXljd0FBMklnVEFDNEFBQUI5QUFBQUZRQUFBTlxcXG5pSUV3QXVBQUFBcVFBQUFBVUFBQURZaUJNQUxnQUFBS29BQUFBRkFBQUEySWdUQUM0QUFBQ3JBQUFBQlFBQUFOaUlFd0F1QUFBQXJBQUFcXFxuQUFVQUFBRFlpQk1BTGdBQUFLMEFBQUFGQUFBQTJJZ1RBQzRBQUFDdUFBQUFCUUFBQUdGemMyVnlkR2x2YmlCbVlXbHNaV1E2SUdRdWJXXFxcbkZ1ZENBcklHUXVjR3gxY3lBOElDZ3hJRHc4SURZeEtRQUFBTmlJRXdBdUFBQUFyd0FBQUFVQUFBRFlpQk1BTGdBQUFBb0JBQUFSQUFBQVxcXG5BQUFBQUFBQUFBQmhkSFJsYlhCMElIUnZJR1JwZG1sa1pTQmllU0I2WlhKdkFBQUEySWdUQUM0QUFBQU5BUUFBQ1FBQUFOaUlFd0F1QUFcXFxuQUFGZ0VBQUVJQUFBRFlpQk1BTGdBQUFFQUJBQUFKQUFBQVlYTnpaWEowYVc5dUlHWmhhV3hsWkRvZ0lXSjFaaTVwYzE5bGJYQjBlU2dwXFxcblkyRnNiR1ZrSUdCUGNIUnBiMjQ2T25WdWQzSmhjQ2dwWUNCdmJpQmhJR0JPYjI1bFlDQjJZV3gxWmRpSUV3QXVBQUFBM0FFQUFBVUFBQVxcXG5CaGMzTmxjblJwYjI0Z1ptRnBiR1ZrT2lCa0xtMWhiblFnUENBb01TQThQQ0EyTVNuWWlCTUFMZ0FBQU4wQkFBQUZBQUFBMklnVEFDNEFcXFxuQUFEZUFRQUFCUUFBQUFFQUFBQUtBQUFBWkFBQUFPZ0RBQUFRSndBQW9JWUJBRUJDRHdDQWxwZ0FBT0gxQlFES21qdllpQk1BTGdBQUFEXFxcbk1DQUFBUkFBQUEySWdUQUM0QUFBQTJBZ0FBQ1FBQUFOaUlFd0F1QUFBQWJBSUFBQWtBQUFEWWlCTUFMZ0FBQU13Q0FBQkhBQUFBMklnVFxcXG5BQzRBQUFEakFnQUFTd0FBQU5pSUV3QXVBQUFBN3dJQUFFY0FBQUJzYVdKeVlYSjVMMk52Y21VdmMzSmpMMjUxYlM5bWJIUXlaR1ZqTDJcXFxuMXZaQzV5Y3dCRWl4TUFJd0FBQUx3QUFBQUZBQUFBWVhOelpYSjBhVzl1SUdaaGFXeGxaRG9nWW5WbVd6QmRJRDRnWWx3bk1Gd25BQUFBXFxcblJJc1RBQ01BQUFDOUFBQUFCUUFBQUdGemMyVnlkR2x2YmlCbVlXbHNaV1E2SUhCaGNuUnpMbXhsYmlncElENDlJRFFBQUVTTEV3QWpBQVxcXG5BQXZnQUFBQVVBQUFBd0xpNHRLekJwYm1aT1lVNWhjM05sY25ScGIyNGdabUZwYkdWa09pQmlkV1l1YkdWdUtDa2dQajBnYldGNGJHVnVcXFxuQUFBQVJJc1RBQ01BQUFCL0FnQUFEUUFBQUdaeWIyMWZjM1J5WDNKaFpHbDRYMmx1ZERvZ2JYVnpkQ0JzYVdVZ2FXNGdkR2hsSUhKaGJtXFxcbmRsSUdCYk1pd2dNelpkWUNBdElHWnZkVzVrSUNTTUV3QThBQUFBYkdsaWNtRnllUzlqYjNKbEwzTnlZeTl1ZFcwdmJXOWtMbkp6QUdpTVxcXG5Fd0FiQUFBQW9nVUFBQVVBQUFBZ0tERWdQRHdnS2Z4L0V3QUFBQUFBbEl3VEFBY0FBQUNiakJNQUFRQUFBR3hwWW5KaGNua3ZZMjl5WlNcXFxuOXpjbU12Wm0xMEwyMXZaQzV5Y3k0dUFBQUF6NHdUQUFJQUFBQkNiM0p5YjNkTmRYUkZjbkp2Y2dBQS9IOFRBQUFBQUFEaWl4TUFBUUFBXFxcbkFPS0xFd0FCQUFBQTRvc1RBQUVBQUFBMkFRQUFCQUFBQUFRQUFBQTNBUUFBT0FFQUFEa0JBQUJqWVd4c1pXUWdZRkpsYzNWc2REbzZkV1xcXG41M2NtRndLQ2xnSUc5dUlHRnVJR0JGY25KZ0lIWmhiSFZsQURvQkFBQUFBQUFBQVFBQUFDY0FBQUJzYVdKeVlYSjVMMk52Y21VdmMzSmpcXFxuTDI1bGRDOXBjRjloWkdSeUxuSnpBR0NORXdBZkFBQUE1QU1BQUZRQUFBQnNhV0p5WVhKNUwyTnZjbVV2YzNKakwyNWxkQzlrYVhOd2JHXFxcbkY1WDJKMVptWmxjaTV5Y3dBQWtJMFRBQ1lBQUFBV0FBQUFPUUFBQVB4L0V3QUFBQUFBT2xzQUFQeC9Fd0FBQUFBQTBJMFRBQUVBQUFEUVxcXG5qUk1BQVFBQUFIQmhibWxqYTJWa0lHRjBJQ2NuTENENGpSTUFBUUFBQVBtTkV3QURBQUFBT2dFQUFBQUFBQUFCQUFBQU93RUFBR2x1WkdcXFxuVjRJRzkxZENCdlppQmliM1Z1WkhNNklIUm9aU0JzWlc0Z2FYTWdJR0oxZENCMGFHVWdhVzVrWlhnZ2FYTWdBQUFjamhNQUlBQUFBRHlPXFxcbkV3QVNBQUFBTmdFQUFBUUFBQUFFQUFBQVBBRUFBRzFoZEdOb1pYTWhQVDA5WVhOelpYSjBhVzl1SUdaaGFXeGxaRG9nWUNoc1pXWjBJQ1xcXG5CeWFXZG9kQ2xnQ2lBZ2JHVm1kRG9nWUdBc0NpQnlhV2RvZERvZ1lHQTZJQUFBQUh1T0V3QVpBQUFBbEk0VEFCSUFBQUNtamhNQURBQUFcXFxuQUxLT0V3QURBQUFBWUFBQUFIdU9Fd0FaQUFBQWxJNFRBQklBQUFDbWpoTUFEQUFBQU5pT0V3QUJBQUFBT2lBQUFQeC9Fd0FBQUFBQS9JXFxcbjRUQUFJQUFBQTJBUUFBREFBQUFBUUFBQUE5QVFBQVBnRUFBRDhCQUFBZ0lDQWdJSHNLTEFvc0lDQjdJSDBnZlNnS0tDd0tBQUEyQVFBQVxcXG5CQUFBQUFRQUFBQkFBUUFBWFd4cFluSmhjbmt2WTI5eVpTOXpjbU12Wm0xMEwyNTFiUzV5YzFHUEV3QWJBQUFBYVFBQUFCUUFBQUF3ZURcXFxuQXdNREV3TWpBek1EUXdOVEEyTURjd09EQTVNVEF4TVRFeU1UTXhOREUxTVRZeE56RTRNVGt5TURJeE1qSXlNekkwTWpVeU5qSTNNamd5XFxcbk9UTXdNekV6TWpNek16UXpOVE0yTXpjek9ETTVOREEwTVRReU5ETTBORFExTkRZME56UTRORGsxTURVeE5USTFNelUwTlRVMU5qVTNOVFxcXG5nMU9UWXdOakUyTWpZek5qUTJOVFkyTmpjMk9EWTVOekEzTVRjeU56TTNORGMxTnpZM056YzROems0TURneE9ESTRNemcwT0RVNE5qZzNcXFxuT0RnNE9Ua3dPVEU1TWprek9UUTVOVGsyT1RjNU9EazVBQUEyQVFBQUJBQUFBQVFBQUFCQkFRQUFRZ0VBQUVNQkFBQzBqQk1BR3dBQUFOXFxcbmdGQUFBZUFBQUFNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd1xcXG5NREF3TURBd01EQXdNREF3TUxTTUV3QWJBQUFBMGdVQUFDMEFBQUIwY25WbFptRnNjMlVBQUFDMGpCTUFHd0FBQUJRSkFBQWVBQUFBdElcXFxud1RBQnNBQUFBYkNRQUFGZ0FBQUd4cFluSmhjbmt2WTI5eVpTOXpjbU12YzJ4cFkyVXZiV1Z0WTJoeUxuSno3SkFUQUNBQUFBQ1JBQUFBXFxcbkdnQUFBT3lRRXdBZ0FBQUFyUUFBQUFVQUFBQnlZVzVuWlNCemRHRnlkQ0JwYm1SbGVDQWdiM1YwSUc5bUlISmhibWRsSUdadmNpQnpiR1xcXG5salpTQnZaaUJzWlc1bmRHZ2dMSkVUQUJJQUFBQStrUk1BSWdBQUFISmhibWRsSUdWdVpDQnBibVJsZUNCd2tSTUFFQUFBQUQ2UkV3QWlcXFxuQUFBQWMyeHBZMlVnYVc1a1pYZ2djM1JoY25SeklHRjBJQ0JpZFhRZ1pXNWtjeUJoZENBQWtKRVRBQllBQUFDbWtSTUFEUUFBQUdGMGRHXFxcblZ0Y0hSbFpDQjBieUJwYm1SbGVDQnpiR2xqWlNCMWNDQjBieUJ0WVhocGJYVnRJSFZ6YVhwbHhKRVRBQ3dBQUFCemIzVnlZMlVnYzJ4cFxcXG5ZMlVnYkdWdVozUm9JQ2dwSUdSdlpYTWdibTkwSUcxaGRHTm9JR1JsYzNScGJtRjBhVzl1SUhOc2FXTmxJR3hsYm1kMGFDQW8rSkVUQUJcXFxuVUFBQUFOa2hNQUt3QUFBSnVNRXdBQkFBQUFBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCXFxcbkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUVxcXG5FQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFcXFxuQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnXFxcbklDQWdJQ0FnSUNBZ0lEQXdNREF3TURBd01EQXdNREF3TURCQVFFQkFRQUFBQUFBQUFBQUFBQUFHbHVZMjl0Y0d4bGRHVWdkWFJtTFRnZ1xcXG5ZbmwwWlNCelpYRjFaVzVqWlNCbWNtOXRJR2x1WkdWNElBQUFVSk1UQUNvQUFBQnBiblpoYkdsa0lIVjBaaTA0SUhObGNYVmxibU5sSUdcXFxuOW1JQ0JpZVhSbGN5Qm1jbTl0SUdsdVpHVjRJSVNURXdBYUFBQUFucE1UQUJJQUFBQnNhV0p5WVhKNUwyTnZjbVV2YzNKakwzTjBjaTl3XFxcbllYUjBaWEp1TG5KekFNQ1RFd0FmQUFBQVFnVUFBQXdBQUFEQWt4TUFId0FBQUVJRkFBQWlBQUFBd0pNVEFCOEFBQUJXQlFBQU1BQUFBTVxcXG5DVEV3QWZBQUFBTlFZQUFCVUFBQURBa3hNQUh3QUFBR01HQUFBVkFBQUF3Sk1UQUI4QUFBQmtCZ0FBRlFBQUFBQmJMaTR1WFdKNWRHVWdcXFxuYVc1a1pYZ2dJR2x6SUc5MWRDQnZaaUJpYjNWdVpITWdiMllnWUFCR2xCTUFDd0FBQUZHVUV3QVdBQUFBMkk0VEFBRUFBQUJpWldkcGJpXFxcbkE4UFNCbGJtUWdLQ0E4UFNBcElIZG9aVzRnYzJ4cFkybHVaeUJnQUFDQWxCTUFEZ0FBQUk2VUV3QUVBQUFBa3BRVEFCQUFBQURZamhNQVxcXG5BUUFBQUNCcGN5QnViM1FnWVNCamFHRnlJR0p2ZFc1a1lYSjVPeUJwZENCcGN5QnBibk5wWkdVZ0lDaGllWFJsY3lBcElHOW1JR0JHbEJcXFxuTUFDd0FBQU1TVUV3QW1BQUFBNnBRVEFBZ0FBQUR5bEJNQUJnQUFBTmlPRXdBQkFBQUFiR2xpY21GeWVTOWpiM0psTDNOeVl5OXpkSEl2XFxcbmJXOWtMbkp6QUNDVkV3QWJBQUFBQndFQUFCMEFBQUJ2ZG1WeVpteHZkeUJwYmlCRWRYSmhkR2x2YmpvNmJtVjNBQUFBVEpVVEFCa0FBQVxcXG5Cc2FXSnlZWEo1TDJOdmNtVXZjM0pqTDNScGJXVXVjbk53bFJNQUdBQUFBTW9BQUFBVkFBQUFiM1psY21ac2IzY2dkMmhsYmlCemRXSjBcXFxuY21GamRHbHVaeUJrZFhKaGRHbHZibk1BY0pVVEFCZ0FBQUNpQXdBQUh3QUFBR3hwWW5KaGNua3ZZMjl5WlM5emNtTXZkVzVwWTI5a1pTXFxcbjl3Y21sdWRHRmliR1V1Y25NQUFBRE1sUk1BSlFBQUFBb0FBQUFjQUFBQXpKVVRBQ1VBQUFBYUFBQUFOZ0FBQUFBQkF3VUZCZ1lDQndZSVxcXG5Cd2tSQ2h3TEdRd2FEUkFPREE4RUVBTVNFaE1KRmdFWEJCZ0JHUU1hQnhzQkhBSWZGaUFES3dNdEN5NEJNQU14QWpJQnB3S3BBcW9FcXdcXFxuajZBdnNGL1FMK0EvOEpyWGg1aTQyaU1GZFlpNHlRSE4wT0QwdE0rL3d1THo5Y1hWL2loSTJPa1pLcHNicTd4Y2JKeXQ3azVmOEFCQkVTXFxcbktURTBOem83UFVsS1hZU09rcW14dExxN3hzck96K1RsQUFRTkRoRVNLVEUwT2p0RlJrbEtYbVJsaEpHYm5jbk96dzBSS1RvN1JVbFhXMVxcXG54ZVgyUmxqWkdwdExxN3hjbmY1T1h3RFJGRlNXUmxnSVN5dkw2LzFkZnc4WU9GaTZTbXZyL0Z4OC9hMjBpWXZjM0d6czlKVGs5WFdWNWZcXFxuaVk2UHNiYTN2OEhHeDljUkZoZGJYUGIzL3YrQWJYSGUzdzRmYm04Y0hWOTlmcTZ2Zjd1OEZoY2VIMFpIVGs5WVdseGVmbisxeGRUVjNQXFxcbkR4OVhKemozUjFsaVl1TDZldnQ3L0h6OWZmbWtDWG1EQ1BIOUxVenY5T1QxcGJCd2dQRUNjdjd1OXViemM5UDBKRmtKRlRaM1hJeWREUlxcXG4yTm5uL3Y4QUlGOGlndDhFZ2tRSUd3UUdFWUdzRG9DckJSOEpnUnNER1FnQkJDOEVOQVFIQXdFSEJnY1JDbEFQRWdkVkJ3TUVIQW9KQXdcXFxuZ0RCd01DQXdNRERBUUZBd3NHQVE0VkJVNEhHd2RYQndJR0Z3eFFCRU1ETFFNQkJCRUdEd3c2QkIwbFh5QnRCR29sZ01nRmdyQURHZ2FDXFxcbi9RTlpCeFlKR0FrVURCUU1hZ1lLQmhvR1dRY3JCVVlLTEFRTUJBRURNUXNzQkJvR0N3T0FyQVlLQmk4eFRRT0FwQWc4QXc4RFBBYzRDQ1xcXG5zRmd2OFJHQWd2RVMwRElROGhENENNQklLWEdRc1ZpSlFGTHdVN0J3SU9HQW1BdmlKMERJRFdHZ3dGZ1A4RmdOOE04cDBETndtQlhCU0FcXFxudUFpQXl3VUtHRHNEQ2dZNENFWUlEQVowQ3g0RFdnUlpDWUNER0J3S0ZnbE1CSUNLQnF1a0RCY0VNYUVFZ2RvbUJ3d0ZCWUNtRUlIMUJ3XFxcbkVnS2daTUJJQ05CSUMrQXhzRER3MEFCZ0VCQXdFRUFnVUhCd0lJQ0FrQ0NnVUxBZzRFRUFFUkFoSUZFeEVVQVJVQ0Z3SVpEUndGSFFnZlxcXG5BU1FCYWdSckFxOERzUUs4QXM4QzBRTFVETlVKMWdMWEF0b0I0QVhoQXVjRTZBTHVJUEFFK0FMNkEvc0JEQ2M3UGs1UGo1NmVuM3VMazVcXFxuYWlzcnFHc1FZSENUWTlQbGJ6ME5FRUZCZzJOMVpYZjZxdXI3MDE0QktIaVk2ZUJBME9FUklwTVRRNlJVWkpTazVQWkdWY3RyY2JIQWNJXFxcbkNnc1VGelk1T3FpcDJOa0pONUNScUFjS096NW1hWStTRVc5ZnYrN3ZXbUwwL1A5VFZKcWJMaThuS0ZXZG9LR2pwS2VvcmJxOHhBWUxEQlxcXG5VZE9qOUZVYWFuek0yZ0J4a2FJaVUrUCtmczcvL0Z4Z1FnSXlVbUtETTRPa2hLVEZCVFZWWllXbHhlWUdObFptdHplSDEvaXFTcXI3REFcXFxuMEs2dmJtKytrMTRpZXdVREJDMERaZ01CTHk2QWdoMERNUThjQkNRSkhnVXJCVVFFRGlxQXFnWWtCQ1FFS0FnMEMwNURnVGNKRmdvSUdEXFxcbnRGT1FOakNBa3dGZ1VoQXhzRkFVQTRCRXNGTHdRS0J3a0hRQ0FuQkF3Sk5nTTZCUm9IQkF3SFVFazNNdzB6Qnk0SUNvRW1Va3NyQ0NvV1xcXG5HaVljRkJjSlRnUWtDVVFOR1FjS0JrZ0lKd2wxQzBJK0tnWTdCUW9HVVFZQkJSQURCWUNMWWg1SUNBcUFwbDRpUlFzS0JnMFRPZ1lLTmlcXFxud0VGNEM1UEdSVERFZ0pDa1pGRzBnSVV3MUpCd3FBOWtZS0hRTkhTVGNERGdnS0Jqa0hDb0UyR1FjN0F4eFdBUTh5RFlPYlpuVUxnTVNLXFxcblRHTU5oREFRRm8rcWdrZWh1WUk1QnlvRVhBWW1Da1lLS0FVVGdyQmJaVXNFT1FjUlFBVUxBZzZYK0FpRTFpb0pvdWVCTXc4QkhRWU9CQVxcXG5pQmpJa0Vhd1VOQXdrSEVKSmdSd2wwUElEMkNuTUljQlZHZWhRTUZBeFhDUm1BaDRGSEE0VkNEeFdFVUI4R0JvRFZLd1UrSVFGd0xRTWFcXFxuQkFLQlFCOFJPZ1VCZ2RBcWd1YUE5eWxNQkFvRUFvTVJSRXc5Z01JOEJnRUVWUVViTkFLQkRpd0VaQXhXQ29DdU9CME5MQVFKQndJT0JvXFxcbkNhZzlnRUVRTU5BM2NFWHdZTUJBRVBEQVE0Q0FvR0tBZ2lUb0ZVREIwRENRYzJDQTRFQ1FjSkI0RExKUXFFQm14cFluSmhjbmt2WTI5eVxcXG5aUzl6Y21NdmRXNXBZMjlrWlM5MWJtbGpiMlJsWDJSaGRHRXVjbk13TVRJek5EVTJOemc1WVdKalpHVm1iR2xpY21GeWVTOWpiM0psTDNcXFxuTnlZeTlsYzJOaGNHVXVjbk1BQU1pYkV3QWFBQUFBTkFBQUFBVUFBQUJjZFhzQXlKc1RBQm9BQUFCaUFBQUFJd0FBQUd4cFluSmhjbmt2XFxcblkyOXlaUzl6Y21NdmJuVnRMMkpwWjI1MWJTNXljd0FBQ0p3VEFCNEFBQUNzQVFBQUFRQUFBR0Z6YzJWeWRHbHZiaUJtWVdsc1pXUTZJR1xcXG41dlltOXljbTkzWVhOelpYSjBhVzl1SUdaaGFXeGxaRG9nWkdsbmFYUnpJRHdnTkRCaGMzTmxjblJwYjI0Z1ptRnBiR1ZrT2lCdmRHaGxcXFxuY2lBK0lEQlRiMjFsVG05dVpRQUFOZ0VBQUFRQUFBQUVBQUFBTkFFQUFFVnljbTl5VlhSbU9FVnljbTl5ZG1Gc2FXUmZkWEJmZEc5bGNuXFxcbkp2Y2w5c1pXNEFBRFlCQUFBRUFBQUFCQUFBQUVRQkFBQ1FteE1BS0FBQUFGQUFBQUFvQUFBQWtKc1RBQ2dBQUFCY0FBQUFGZ0FBQUxBQ1xcXG5BQUJkRTZBQ0VoY2dJcjBmWUNKOExDQXdCVEJnTkJXZzREWDRwR0EzREthZ054Nzc0RGNBL3VCRC9RRmhSSUFISVVnQkN1RklKQTJoU2FcXFxuc09JVXN2R0dGTE94bGhXVEFjNFZuekhtRmRNRFFoWWZCcVlXSlBiK0ZpOEsraFk1MjhvV1FBejJGbFo5SGhaUURhWVdZQTRLRm5ydUloXFxcbmFldmtJV3ZRNktGcisvUGhhd0VBYm16d0FiOXNKd0VHQVFzQkl3RUJBVWNCQkFFQkFRUUJBZ0lBd0FRQ0JBRUpBZ0VCK3dmUEFRVUJNU1xcXG4wQkFRRUNBUUlCQVN3QkN3WUtDd0VCSXdFS0ZSQUJaUWdCQ2dFRUlRRUJBUjRiV3dzNkN3UUJBZ0VZR0NzRExBRUhBZ1lJS1RvM0FRRUJcXFxuQkFnRUFRTUhDZ0lOQVE4Qk9nRUVCQWdCRkFJYUFRSUNPUUVFQWdRQ0FnTURBUjRDQXdFTEFqa0JCQVVCQWdRQkZBSVdCZ0VCT2dFQ0FRXFxcbkVFQ0FFSEFnc0NIZ0U5QVF3Qk1nRURBVGNCQVFNRkF3RUVCd0lMQWgwQk9nRUNBUVlCQlFJVUFod0NPUUlFQkFnQkZBSWRBVWdCQndNQlxcXG5BVm9CQWdjTENXSUJBZ2tKQVFFSFNRSWJBUUVCQVFFM0RnRUZBUUlGQ3dFa0NRRm1CQUVHQVFJQ0Foa0NCQU1RQkEwQkFnSUdBUThCWGdcXFxuRUFBd0FESFFJZUFoNENRQUlCQndnQkFnc0RBUVVCTFFVekFVRUNJZ0YyQXdRQ0NRRUdBOXNDQWdFNkFRRUhBUUVCQVFJSUJnb0NBU2NCXFxcbkNCOHhCREFCQVFVQkFRVUJLQWtNQWlBRUFnSUJBemdCQVFJREFRRURPZ2dDQWtBR1VnTUJEUUVIQkFFR0FRTUNNajhOQVNKbEFBRUJBd1xcXG5zRERRTU5BdzBDREFVSUFnb0JBZ0VDQlRFRkFRb0JBUTBCRUEweklRQUNjUU45QVE4QllDQXZBUUFCSkFRREJRVUJYUVpkQXdBQkFBWUFcXFxuQVdJRUFRb0JBUndFVUFJT0lrNEJGd05uQXdNQ0NBRURBUVFCR1FJRkFaY0NHaElOQVNZSUdRc3VBekFCQWdRQ0FoRUJGUUpDQmdJQ0FnXFxcbklNQVFnQkl3RUxBVE1CQVFNQ0FnVUNBUUViQVE0Q0JRSUJBV1FGQ1FONUFRSUJCQUVBQVpNUkFCQURBUXdRSWdFQ0Fha0JCd0VHQVFzQlxcXG5Jd0VCQVM4QkxRSkRBUlVEQUFIaUFaVUZBQVlCS2dFSkFBTUJBZ1VFS0FNRUFhVUNBQVFBQWxBRFJnc3hCSHNCTmc4cEFRSUNDZ014QkFcXFxuSUNBZ0VFQVFvQk1nTWtCUUVJUGdFTUFqUUpDZ1FDQVY4REFnRUJBZ1lCQWdHZEFRTUlGUUk1QWdNQkpRY0RCY01JQWdNQkFSY0JWQVlCXFxcbkFRUUNBUUx1QkFZQ0FRSWJBbFVJQWdFQkFtb0JBUUVDQmdFQlpRTUNCQUVGQUFrQkFnQUNBUUVFQVpBRUFnSUVBU0FLS0FZQ0JBZ0JDUVxcXG5ZQ0F5NE5BUUlBQndFR0FRRlNGZ0lIQVFJQkFub0dBd0VCQWdFSEFRRklBZ01CQVFFQUFnc0NOQVVGQVFFQkFCRUdEd0FGT3djSkJBQUJcXFxuUHhGQUFnRUNBQVFCQndFQ0FBSUJCQUF1QWhjQUF3a1FBZ2NlQkpRREFEY0VNZ2dCRGdFV0JRRVBBQWNCRVFJSEFRSUJCUVUrSVFHZ0RnXFxcbkFCUFFRQUJRQUhiUWdBQlFBQkhtQ0E4QUFBb0JBQUFLQVQ0QWFBSENBSUZoK2dDTFlrd0FrQUxDQVRRS1pnRXpDcjRCUUErMkFYSWY4Z1xcXG5HQUFFb1JpQUJ5RVpnQXpoRzZBWTRSeEFibUVkQU5TaEhhYlc0UjBBMzRFaU1PQmhKUURwSVNZdzhXRW1pdkd5SmtFYUJob3ZBUW9CQkFcXFxuRUZGd0VmQWNNQkJBVFFBU1FIQWg0RllBRXFCQUlDQWdRQkFRWUJBUU1CQVFFVUFWTUJpd2ltQVNZSktRQW1BUUVGQVFJckFRUUFWZ0lHXFxcbkFBa0hLd0lEUU1CQUFBSUdBaVlDQmdJSUFRRUJBUUVCQVI4Q05RRUhBUUVEQXdFSEF3UUNCZ1FOQlFNQkIzUUJEUUVRRFdVQkJBRUNDZ1xcXG5FQkF3VUdBUUVCQVFFQkJBRUdCQUVDQkFVRkJBRVJJQU1DQURRQTVRWUVBd0lNSmdFQkJRRUFMaEllaEdZREJBRTdCUUlCQVFFRkdBVUJcXFxuQXdBckFRNEdVQUFIREFVQUdnWWFBRkJnSkFRa2RBc0JEd0VIQVFJQkN3RVBBUWNCQWdBQkFnTUJLZ0VKQURNTk13QkFBRUFBVlFGSEFRXFxcbklDQVFJQ0FnUUJEQUVCQVFjQlFRRUVBZ2dCQndFY0FRUUJCUUVCQXdjQkFBSVpBUmtCSHdFWkFSOEJHUUVmQVJrQkh3RVpBUWdBQ2dFVVxcXG5CZ1lBUGdCRUFCb0dHZ1lhQUFBQUF3QUFnd1FnQUpFRllBQmRFNkFBRWhjZ0h3d2dZQi92TEtBcktqQWdMRyttNEN3Q3FHQXRIdnRnTGdcXFxuRCtJRGFlLzJBMi9RSGhOZ0VLSVRja0RlRTNxdzVoT1M4WW9Ua3dIR0ZJOHg2aFRFQTBZVkR3YXFGUlQyOGhVcDI4b1ZJQXoyRlRaZEdoXFxcblV3RGFJVlFBNE9GVnJ1SmhWK3prSVZuUTZLRlpJQUR1V2ZBQmYxb0FjQUFIQUMwQkFRRUNBUUlCQVVnTE1CVVFBV1VIQWdZQ0FnRUVJd1xcXG5FZUcxc0xPZ2tKQVJnRUFRa0JBd0VGS3dNOENDb1lBU0EzQVFFQkJBZ0VBUU1IQ2dJZEFUb0JBUUVDQkFnQkNRRUtBaG9CQWdJNUFRUUNcXFxuQkFJQ0F3TUJIZ0lEQVFzQ09RRUVCUUVDQkFFVUFoWUdBUUU2QVFFQ0FRUUlBUWNEQ2dJZUFUc0JBUUVNQVFrQktBRURBVGNCQVFNRkF3XFxcbkVFQndJTEFoMEJPZ0VDQVFJQkF3RUZBZ2NDQ3dJY0Fqa0NBUUVDQkFnQkNRRUtBaDBCU0FFRUFRSURBUUVJQVZFQkFnY01DR0lCQWdrTFxcXG5CMGtDR3dFQkFRRUJOdzRCQlFFQ0JRc0JKQWtCWmdRQkJnRUNBZ0laQWdRREVBUU5BUUlDQmdFUEFRQURBQU1kQWg0Q0hnSkFBZ0VIQ0FcXFxuRUNDd2tCTFFNQkFYVUNJZ0YyQXdRQ0NRRUdBOXNDQWdFNkFRRUhBUUVCQVFJSUJnb0NBVEFmTVFRd0J3RUJCUUVvQ1F3Q0lBUUNBZ0VEXFxcbk9BRUJBZ01CQVFNNkNBSUNtQU1CRFFFSEJBRUdBUU1DeGtBQUFjTWhBQU9OQVdBZ0FBWnBBZ0FFQVFvZ0FsQUNBQUVEQVFRQkdRSUZBWlxcXG5jQ0doSU5BU1lJR1FzdUF6QUJBZ1FDQWljQlF3WUNBZ0lDREFFSUFTOEJNd0VCQXdJQ0JRSUJBU29DQ0FIdUFRSUJCQUVBQVFBUUVCQUFcXFxuQWdBQjRnR1ZCUUFEQVFJRkJDZ0RCQUdsQWdBRUFBSlFBMFlMTVFSN0FUWVBLUUVDQWdvRE1RUUNBZ2NCUFFNa0JRRUlQZ0VNQWpRSkNnXFxcblFDQVY4REFnRUJBZ1lCQWdHZEFRTUlGUUk1QWdFQkFRRVdBUTRIQXdYRENBSURBUUVYQVZFQkFnWUJBUUlCQVFJQkF1c0JBZ1FHQWdFQ1xcXG5Hd0pWQ0FJQkFRSnFBUUVCQWdZQkFXVURBZ1FCQlFBSkFRTDFBUW9DQVFFRUFaQUVBZ0lFQVNBS0tBWUNCQWdCQ1FZQ0F5NE5BUUlBQndcXFxuRUdBUUZTRmdJSEFRSUJBbm9HQXdFQkFnRUhBUUZJQWdNQkFRRUFBZ3NDTkFVRkFRRUJBQUVHRHdBRk93Y0FBVDhFVVFFQUFnQXVBaGNBXFxcbkFRRURCQVVJQ0FJSEhnU1VBd0EzQkRJSUFRNEJGZ1VCRHdBSEFSRUNCd0VDQVFWa0FhQUhBQUU5QkFBRUFBZHRCd0JnZ1BBQUFnSUNBZ1xcXG5JQ0FnSUNBd01CQVFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFJQ0FBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFcXFxuQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBXFxcbkFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVxcXG5BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFcXFxuQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREFBQUFBNEFBQUFNRUFBQURoQUFBQXdnQUFBT0lBQUFEREFBQUE0d0FBQU1RQUFBRGtBQUFBXFxcbnhRQUFBT1VBQUFER0FBQUE1Z0FBQU1jQUFBRG5BQUFBeUFBQUFPZ0FBQURKQUFBQTZRQUFBTW9BQUFEcUFBQUF5d0FBQU9zQUFBRE1BQVxcXG5BQTdBQUFBTTBBQUFEdEFBQUF6Z0FBQU80QUFBRFBBQUFBN3dBQUFOQUFBQUR3QUFBQTBRQUFBUEVBQUFEU0FBQUE4Z0FBQU5NQUFBRHpcXFxuQUFBQTFBQUFBUFFBQUFEVkFBQUE5UUFBQU5ZQUFBRDJBQUFBMkFBQUFQZ0FBQURaQUFBQStRQUFBTm9BQUFENkFBQUEyd0FBQVBzQUFBXFxcbkRjQUFBQS9BQUFBTjBBQUFEOUFBQUEzZ0FBQVA0QUFBQUFBUUFBQVFFQUFBSUJBQUFEQVFBQUJBRUFBQVVCQUFBR0FRQUFCd0VBQUFnQlxcXG5BQUFKQVFBQUNnRUFBQXNCQUFBTUFRQUFEUUVBQUE0QkFBQVBBUUFBRUFFQUFCRUJBQUFTQVFBQUV3RUFBQlFCQUFBVkFRQUFGZ0VBQUJcXFxuY0JBQUFZQVFBQUdRRUFBQm9CQUFBYkFRQUFIQUVBQUIwQkFBQWVBUUFBSHdFQUFDQUJBQUFoQVFBQUlnRUFBQ01CQUFBa0FRQUFKUUVBXFxcbkFDWUJBQUFuQVFBQUtBRUFBQ2tCQUFBcUFRQUFLd0VBQUN3QkFBQXRBUUFBTGdFQUFDOEJBQUF3QVFBQUFBQkFBRElCQUFBekFRQUFOQVxcXG5FQUFEVUJBQUEyQVFBQU53RUFBRGtCQUFBNkFRQUFPd0VBQUR3QkFBQTlBUUFBUGdFQUFEOEJBQUJBQVFBQVFRRUFBRUlCQUFCREFRQUFcXFxuUkFFQUFFVUJBQUJHQVFBQVJ3RUFBRWdCQUFCS0FRQUFTd0VBQUV3QkFBQk5BUUFBVGdFQUFFOEJBQUJRQVFBQVVRRUFBRklCQUFCVEFRXFxcbkFBVkFFQUFGVUJBQUJXQVFBQVZ3RUFBRmdCQUFCWkFRQUFXZ0VBQUZzQkFBQmNBUUFBWFFFQUFGNEJBQUJmQVFBQVlBRUFBR0VCQUFCaVxcXG5BUUFBWXdFQUFHUUJBQUJsQVFBQVpnRUFBR2NCQUFCb0FRQUFhUUVBQUdvQkFBQnJBUUFBYkFFQUFHMEJBQUJ1QVFBQWJ3RUFBSEFCQUFcXFxuQnhBUUFBY2dFQUFITUJBQUIwQVFBQWRRRUFBSFlCQUFCM0FRQUFlQUVBQVA4QUFBQjVBUUFBZWdFQUFIc0JBQUI4QVFBQWZRRUFBSDRCXFxcbkFBQ0JBUUFBVXdJQUFJSUJBQUNEQVFBQWhBRUFBSVVCQUFDR0FRQUFWQUlBQUljQkFBQ0lBUUFBaVFFQUFGWUNBQUNLQVFBQVZ3SUFBSVxcXG5zQkFBQ01BUUFBamdFQUFOMEJBQUNQQVFBQVdRSUFBSkFCQUFCYkFnQUFrUUVBQUpJQkFBQ1RBUUFBWUFJQUFKUUJBQUJqQWdBQWxnRUFcXFxuQUdrQ0FBQ1hBUUFBYUFJQUFKZ0JBQUNaQVFBQW5BRUFBRzhDQUFDZEFRQUFjZ0lBQUo4QkFBQjFBZ0FBb0FFQUFLRUJBQUNpQVFBQW93XFxcbkVBQUtRQkFBQ2xBUUFBcGdFQUFJQUNBQUNuQVFBQXFBRUFBS2tCQUFDREFnQUFyQUVBQUswQkFBQ3VBUUFBaUFJQUFLOEJBQUN3QVFBQVxcXG5zUUVBQUlvQ0FBQ3lBUUFBaXdJQUFMTUJBQUMwQVFBQXRRRUFBTFlCQUFDM0FRQUFrZ0lBQUxnQkFBQzVBUUFBdkFFQUFMMEJBQURFQVFcXFxuQUF4Z0VBQU1VQkFBREdBUUFBeHdFQUFNa0JBQURJQVFBQXlRRUFBTW9CQUFETUFRQUF5d0VBQU13QkFBRE5BUUFBemdFQUFNOEJBQURRXFxcbkFRQUEwUUVBQU5JQkFBRFRBUUFBMUFFQUFOVUJBQURXQVFBQTF3RUFBTmdCQUFEWkFRQUEyZ0VBQU5zQkFBRGNBUUFBM2dFQUFOOEJBQVxcXG5EZ0FRQUE0UUVBQU9JQkFBRGpBUUFBNUFFQUFPVUJBQURtQVFBQTV3RUFBT2dCQUFEcEFRQUE2Z0VBQU9zQkFBRHNBUUFBN1FFQUFPNEJcXFxuQUFEdkFRQUE4UUVBQVBNQkFBRHlBUUFBOHdFQUFQUUJBQUQxQVFBQTlnRUFBSlVCQUFEM0FRQUF2d0VBQVBnQkFBRDVBUUFBK2dFQUFQXFxcbnNCQUFEOEFRQUEvUUVBQVA0QkFBRC9BUUFBQUFJQUFBRUNBQUFDQWdBQUF3SUFBQVFDQUFBRkFnQUFCZ0lBQUFjQ0FBQUlBZ0FBQ1FJQVxcXG5BQW9DQUFBTEFnQUFEQUlBQUEwQ0FBQU9BZ0FBRHdJQUFCQUNBQUFSQWdBQUVnSUFBQk1DQUFBVUFnQUFGUUlBQUJZQ0FBQVhBZ0FBR0FcXFxuSUFBQmtDQUFBYUFnQUFHd0lBQUJ3Q0FBQWRBZ0FBSGdJQUFCOENBQUFnQWdBQW5nRUFBQ0lDQUFBakFnQUFKQUlBQUNVQ0FBQW1BZ0FBXFxcbkp3SUFBQ2dDQUFBcEFnQUFLZ0lBQUNzQ0FBQXNBZ0FBTFFJQUFDNENBQUF2QWdBQU1BSUFBREVDQUFBeUFnQUFNd0lBQURvQ0FBQmxMQVxcXG5BQU93SUFBRHdDQUFBOUFnQUFtZ0VBQUQ0Q0FBQm1MQUFBUVFJQUFFSUNBQUJEQWdBQWdBRUFBRVFDQUFDSkFnQUFSUUlBQUl3Q0FBQkdcXFxuQWdBQVJ3SUFBRWdDQUFCSkFnQUFTZ0lBQUVzQ0FBQk1BZ0FBVFFJQUFFNENBQUJQQWdBQWNBTUFBSEVEQUFCeUF3QUFjd01BQUhZREFBXFxcbkIzQXdBQWZ3TUFBUE1EQUFDR0F3QUFyQU1BQUlnREFBQ3RBd0FBaVFNQUFLNERBQUNLQXdBQXJ3TUFBSXdEQUFETUF3QUFqZ01BQU0wRFxcXG5BQUNQQXdBQXpnTUFBSkVEQUFDeEF3QUFrZ01BQUxJREFBQ1RBd0FBc3dNQUFKUURBQUMwQXdBQWxRTUFBTFVEQUFDV0F3QUF0Z01BQUpcXFxuY0RBQUMzQXdBQW1BTUFBTGdEQUFDWkF3QUF1UU1BQUpvREFBQzZBd0FBbXdNQUFMc0RBQUNjQXdBQXZBTUFBSjBEQUFDOUF3QUFuZ01BXFxcbkFMNERBQUNmQXdBQXZ3TUFBS0FEQUFEQUF3QUFvUU1BQU1FREFBQ2pBd0FBd3dNQUFLUURBQURFQXdBQXBRTUFBTVVEQUFDbUF3QUF4Z1xcXG5NQUFLY0RBQURIQXdBQXFBTUFBTWdEQUFDcEF3QUF5UU1BQUtvREFBREtBd0FBcXdNQUFNc0RBQURQQXdBQTF3TUFBTmdEQUFEWkF3QUFcXFxuMmdNQUFOc0RBQURjQXdBQTNRTUFBTjREQUFEZkF3QUE0QU1BQU9FREFBRGlBd0FBNHdNQUFPUURBQURsQXdBQTVnTUFBT2NEQUFEb0F3XFxcbkFBNlFNQUFPb0RBQURyQXdBQTdBTUFBTzBEQUFEdUF3QUE3d01BQVBRREFBQzRBd0FBOXdNQUFQZ0RBQUQ1QXdBQThnTUFBUG9EQUFEN1xcXG5Bd0FBL1FNQUFIc0RBQUQrQXdBQWZBTUFBUDhEQUFCOUF3QUFBQVFBQUZBRUFBQUJCQUFBVVFRQUFBSUVBQUJTQkFBQUF3UUFBRk1FQUFcXFxuQUVCQUFBVkFRQUFBVUVBQUJWQkFBQUJnUUFBRllFQUFBSEJBQUFWd1FBQUFnRUFBQllCQUFBQ1FRQUFGa0VBQUFLQkFBQVdnUUFBQXNFXFxcbkFBQmJCQUFBREFRQUFGd0VBQUFOQkFBQVhRUUFBQTRFQUFCZUJBQUFEd1FBQUY4RUFBQVFCQUFBTUFRQUFCRUVBQUF4QkFBQUVnUUFBRFxcXG5JRUFBQVRCQUFBTXdRQUFCUUVBQUEwQkFBQUZRUUFBRFVFQUFBV0JBQUFOZ1FBQUJjRUFBQTNCQUFBR0FRQUFEZ0VBQUFaQkFBQU9RUUFcXFxuQUJvRUFBQTZCQUFBR3dRQUFEc0VBQUFjQkFBQVBBUUFBQjBFQUFBOUJBQUFIZ1FBQUQ0RUFBQWZCQUFBUHdRQUFDQUVBQUJBQkFBQUlRXFxcblFBQUVFRUFBQWlCQUFBUWdRQUFDTUVBQUJEQkFBQUpBUUFBRVFFQUFBbEJBQUFSUVFBQUNZRUFBQkdCQUFBSndRQUFFY0VBQUFvQkFBQVxcXG5TQVFBQUNrRUFBQkpCQUFBS2dRQUFFb0VBQUFyQkFBQVN3UUFBQ3dFQUFCTUJBQUFMUVFBQUUwRUFBQXVCQUFBVGdRQUFDOEVBQUJQQkFcXFxuQUFZQVFBQUdFRUFBQmlCQUFBWXdRQUFHUUVBQUJsQkFBQVpnUUFBR2NFQUFCb0JBQUFhUVFBQUdvRUFBQnJCQUFBYkFRQUFHMEVBQUJ1XFxcbkJBQUFid1FBQUhBRUFBQnhCQUFBY2dRQUFITUVBQUIwQkFBQWRRUUFBSFlFQUFCM0JBQUFlQVFBQUhrRUFBQjZCQUFBZXdRQUFId0VBQVxcXG5COUJBQUFmZ1FBQUg4RUFBQ0FCQUFBZ1FRQUFJb0VBQUNMQkFBQWpBUUFBSTBFQUFDT0JBQUFqd1FBQUpBRUFBQ1JCQUFBa2dRQUFKTUVcXFxuQUFDVUJBQUFsUVFBQUpZRUFBQ1hCQUFBbUFRQUFKa0VBQUNhQkFBQW13UUFBSndFQUFDZEJBQUFuZ1FBQUo4RUFBQ2dCQUFBb1FRQUFLXFxcbklFQUFDakJBQUFwQVFBQUtVRUFBQ21CQUFBcHdRQUFLZ0VBQUNwQkFBQXFnUUFBS3NFQUFDc0JBQUFyUVFBQUs0RUFBQ3ZCQUFBc0FRQVxcXG5BTEVFQUFDeUJBQUFzd1FBQUxRRUFBQzFCQUFBdGdRQUFMY0VBQUM0QkFBQXVRUUFBTG9FQUFDN0JBQUF2QVFBQUwwRUFBQytCQUFBdndcXFxuUUFBTUFFQUFEUEJBQUF3UVFBQU1JRUFBRERCQUFBeEFRQUFNVUVBQURHQkFBQXh3UUFBTWdFQUFESkJBQUF5Z1FBQU1zRUFBRE1CQUFBXFxcbnpRUUFBTTRFQUFEUUJBQUEwUVFBQU5JRUFBRFRCQUFBMUFRQUFOVUVBQURXQkFBQTF3UUFBTmdFQUFEWkJBQUEyZ1FBQU5zRUFBRGNCQVxcXG5BQTNRUUFBTjRFQUFEZkJBQUE0QVFBQU9FRUFBRGlCQUFBNHdRQUFPUUVBQURsQkFBQTVnUUFBT2NFQUFEb0JBQUE2UVFBQU9vRUFBRHJcXFxuQkFBQTdBUUFBTzBFQUFEdUJBQUE3d1FBQVBBRUFBRHhCQUFBOGdRQUFQTUVBQUQwQkFBQTlRUUFBUFlFQUFEM0JBQUErQVFBQVBrRUFBXFxcbkQ2QkFBQSt3UUFBUHdFQUFEOUJBQUEvZ1FBQVA4RUFBQUFCUUFBQVFVQUFBSUZBQUFEQlFBQUJBVUFBQVVGQUFBR0JRQUFCd1VBQUFnRlxcXG5BQUFKQlFBQUNnVUFBQXNGQUFBTUJRQUFEUVVBQUE0RkFBQVBCUUFBRUFVQUFCRUZBQUFTQlFBQUV3VUFBQlFGQUFBVkJRQUFGZ1VBQUJcXFxuY0ZBQUFZQlFBQUdRVUFBQm9GQUFBYkJRQUFIQVVBQUIwRkFBQWVCUUFBSHdVQUFDQUZBQUFoQlFBQUlnVUFBQ01GQUFBa0JRQUFKUVVBXFxcbkFDWUZBQUFuQlFBQUtBVUFBQ2tGQUFBcUJRQUFLd1VBQUN3RkFBQXRCUUFBTGdVQUFDOEZBQUF4QlFBQVlRVUFBRElGQUFCaUJRQUFNd1xcXG5VQUFHTUZBQUEwQlFBQVpBVUFBRFVGQUFCbEJRQUFOZ1VBQUdZRkFBQTNCUUFBWndVQUFEZ0ZBQUJvQlFBQU9RVUFBR2tGQUFBNkJRQUFcXFxuYWdVQUFEc0ZBQUJyQlFBQVBBVUFBR3dGQUFBOUJRQUFiUVVBQUQ0RkFBQnVCUUFBUHdVQUFHOEZBQUJBQlFBQWNBVUFBRUVGQUFCeEJRXFxcbkFBUWdVQUFISUZBQUJEQlFBQWN3VUFBRVFGQUFCMEJRQUFSUVVBQUhVRkFBQkdCUUFBZGdVQUFFY0ZBQUIzQlFBQVNBVUFBSGdGQUFCSlxcXG5CUUFBZVFVQUFFb0ZBQUI2QlFBQVN3VUFBSHNGQUFCTUJRQUFmQVVBQUUwRkFBQjlCUUFBVGdVQUFINEZBQUJQQlFBQWZ3VUFBRkFGQUFcXFxuQ0FCUUFBVVFVQUFJRUZBQUJTQlFBQWdnVUFBRk1GQUFDREJRQUFWQVVBQUlRRkFBQlZCUUFBaFFVQUFGWUZBQUNHQlFBQW9CQUFBQUF0XFxcbkFBQ2hFQUFBQVMwQUFLSVFBQUFDTFFBQW94QUFBQU10QUFDa0VBQUFCQzBBQUtVUUFBQUZMUUFBcGhBQUFBWXRBQUNuRUFBQUJ5MEFBS1xcXG5nUUFBQUlMUUFBcVJBQUFBa3RBQUNxRUFBQUNpMEFBS3NRQUFBTExRQUFyQkFBQUF3dEFBQ3RFQUFBRFMwQUFLNFFBQUFPTFFBQXJ4QUFcXFxuQUE4dEFBQ3dFQUFBRUMwQUFMRVFBQUFSTFFBQXNoQUFBQkl0QUFDekVBQUFFeTBBQUxRUUFBQVVMUUFBdFJBQUFCVXRBQUMyRUFBQUZpXFxcbjBBQUxjUUFBQVhMUUFBdUJBQUFCZ3RBQUM1RUFBQUdTMEFBTG9RQUFBYUxRQUF1eEFBQUJzdEFBQzhFQUFBSEMwQUFMMFFBQUFkTFFBQVxcXG52aEFBQUI0dEFBQy9FQUFBSHkwQUFNQVFBQUFnTFFBQXdSQUFBQ0V0QUFEQ0VBQUFJaTBBQU1NUUFBQWpMUUFBeEJBQUFDUXRBQURGRUFcXFxuQUFKUzBBQU1jUUFBQW5MUUFBelJBQUFDMHRBQUNnRXdBQWNLc0FBS0VUQUFCeHF3QUFvaE1BQUhLckFBQ2pFd0FBYzZzQUFLUVRBQUIwXFxcbnF3QUFwUk1BQUhXckFBQ21Fd0FBZHFzQUFLY1RBQUIzcXdBQXFCTUFBSGlyQUFDcEV3QUFlYXNBQUtvVEFBQjZxd0FBcXhNQUFIdXJBQVxcXG5Dc0V3QUFmS3NBQUswVEFBQjlxd0FBcmhNQUFINnJBQUN2RXdBQWY2c0FBTEFUQUFDQXF3QUFzUk1BQUlHckFBQ3lFd0FBZ3FzQUFMTVRcXFxuQUFDRHF3QUF0Qk1BQUlTckFBQzFFd0FBaGFzQUFMWVRBQUNHcXdBQXR4TUFBSWVyQUFDNEV3QUFpS3NBQUxrVEFBQ0pxd0FBdWhNQUFJXFxcbnFyQUFDN0V3QUFpNnNBQUx3VEFBQ01xd0FBdlJNQUFJMnJBQUMrRXdBQWpxc0FBTDhUQUFDUHF3QUF3Qk1BQUpDckFBREJFd0FBa2FzQVxcXG5BTUlUQUFDU3F3QUF3eE1BQUpPckFBREVFd0FBbEtzQUFNVVRBQUNWcXdBQXhoTUFBSmFyQUFESEV3QUFsNnNBQU1nVEFBQ1lxd0FBeVJcXFxuTUFBSm1yQUFES0V3QUFtcXNBQU1zVEFBQ2Jxd0FBekJNQUFKeXJBQURORXdBQW5hc0FBTTRUQUFDZXF3QUF6eE1BQUorckFBRFFFd0FBXFxcbm9Lc0FBTkVUQUFDaHF3QUEwaE1BQUtLckFBRFRFd0FBbzZzQUFOUVRBQUNrcXdBQTFSTUFBS1dyQUFEV0V3QUFwcXNBQU5jVEFBQ25xd1xcXG5BQTJCTUFBS2lyQUFEWkV3QUFxYXNBQU5vVEFBQ3Fxd0FBMnhNQUFLdXJBQURjRXdBQXJLc0FBTjBUQUFDdHF3QUEzaE1BQUs2ckFBRGZcXFxuRXdBQXI2c0FBT0FUQUFDd3F3QUE0Uk1BQUxHckFBRGlFd0FBc3FzQUFPTVRBQUN6cXdBQTVCTUFBTFNyQUFEbEV3QUF0YXNBQU9ZVEFBXFxcbkMycXdBQTV4TUFBTGVyQUFEb0V3QUF1S3NBQU9rVEFBQzVxd0FBNmhNQUFMcXJBQURyRXdBQXU2c0FBT3dUQUFDOHF3QUE3Uk1BQUwyclxcXG5BQUR1RXdBQXZxc0FBTzhUQUFDL3F3QUE4Qk1BQVBnVEFBRHhFd0FBK1JNQUFQSVRBQUQ2RXdBQTh4TUFBUHNUQUFEMEV3QUEvQk1BQVBcXFxuVVRBQUQ5RXdBQWtCd0FBTkFRQUFDUkhBQUEwUkFBQUpJY0FBRFNFQUFBa3h3QUFOTVFBQUNVSEFBQTFCQUFBSlVjQUFEVkVBQUFsaHdBXFxcbkFOWVFBQUNYSEFBQTF4QUFBSmdjQUFEWUVBQUFtUndBQU5rUUFBQ2FIQUFBMmhBQUFKc2NBQURiRUFBQW5Cd0FBTndRQUFDZEhBQUEzUlxcXG5BQUFKNGNBQURlRUFBQW54d0FBTjhRQUFDZ0hBQUE0QkFBQUtFY0FBRGhFQUFBb2h3QUFPSVFBQUNqSEFBQTR4QUFBS1FjQUFEa0VBQUFcXFxucFJ3QUFPVVFBQUNtSEFBQTVoQUFBS2NjQUFEbkVBQUFxQndBQU9nUUFBQ3BIQUFBNlJBQUFLb2NBQURxRUFBQXF4d0FBT3NRQUFDc0hBXFxcbkFBN0JBQUFLMGNBQUR0RUFBQXJod0FBTzRRQUFDdkhBQUE3eEFBQUxBY0FBRHdFQUFBc1J3QUFQRVFBQUN5SEFBQThoQUFBTE1jQUFEelxcXG5FQUFBdEJ3QUFQUVFBQUMxSEFBQTlSQUFBTFljQUFEMkVBQUF0eHdBQVBjUUFBQzRIQUFBK0JBQUFMa2NBQUQ1RUFBQXVod0FBUG9RQUFcXFxuQzlIQUFBL1JBQUFMNGNBQUQrRUFBQXZ4d0FBUDhRQUFBQUhnQUFBUjRBQUFJZUFBQURIZ0FBQkI0QUFBVWVBQUFHSGdBQUJ4NEFBQWdlXFxcbkFBQUpIZ0FBQ2g0QUFBc2VBQUFNSGdBQURSNEFBQTRlQUFBUEhnQUFFQjRBQUJFZUFBQVNIZ0FBRXg0QUFCUWVBQUFWSGdBQUZoNEFBQlxcXG5jZUFBQVlIZ0FBR1I0QUFCb2VBQUFiSGdBQUhCNEFBQjBlQUFBZUhnQUFIeDRBQUNBZUFBQWhIZ0FBSWg0QUFDTWVBQUFrSGdBQUpSNEFcXFxuQUNZZUFBQW5IZ0FBS0I0QUFDa2VBQUFxSGdBQUt4NEFBQ3dlQUFBdEhnQUFMaDRBQUM4ZUFBQXdIZ0FBTVI0QUFESWVBQUF6SGdBQU5CXFxcbjRBQURVZUFBQTJIZ0FBTng0QUFEZ2VBQUE1SGdBQU9oNEFBRHNlQUFBOEhnQUFQUjRBQUQ0ZUFBQS9IZ0FBUUI0QUFFRWVBQUJDSGdBQVxcXG5ReDRBQUVRZUFBQkZIZ0FBUmg0QUFFY2VBQUJJSGdBQVNSNEFBRW9lQUFCTEhnQUFUQjRBQUUwZUFBQk9IZ0FBVHg0QUFGQWVBQUJSSGdcXFxuQUFVaDRBQUZNZUFBQlVIZ0FBVlI0QUFGWWVBQUJYSGdBQVdCNEFBRmtlQUFCYUhnQUFXeDRBQUZ3ZUFBQmRIZ0FBWGg0QUFGOGVBQUJnXFxcbkhnQUFZUjRBQUdJZUFBQmpIZ0FBWkI0QUFHVWVBQUJtSGdBQVp4NEFBR2dlQUFCcEhnQUFhaDRBQUdzZUFBQnNIZ0FBYlI0QUFHNGVBQVxcXG5CdkhnQUFjQjRBQUhFZUFBQnlIZ0FBY3g0QUFIUWVBQUIxSGdBQWRoNEFBSGNlQUFCNEhnQUFlUjRBQUhvZUFBQjdIZ0FBZkI0QUFIMGVcXFxuQUFCK0hnQUFmeDRBQUlBZUFBQ0JIZ0FBZ2g0QUFJTWVBQUNFSGdBQWhSNEFBSVllQUFDSEhnQUFpQjRBQUlrZUFBQ0tIZ0FBaXg0QUFJXFxcbndlQUFDTkhnQUFqaDRBQUk4ZUFBQ1FIZ0FBa1I0QUFKSWVBQUNUSGdBQWxCNEFBSlVlQUFDZUhnQUEzd0FBQUtBZUFBQ2hIZ0FBb2g0QVxcXG5BS01lQUFDa0hnQUFwUjRBQUtZZUFBQ25IZ0FBcUI0QUFLa2VBQUNxSGdBQXF4NEFBS3dlQUFDdEhnQUFyaDRBQUs4ZUFBQ3dIZ0FBc1JcXFxuNEFBTEllQUFDekhnQUF0QjRBQUxVZUFBQzJIZ0FBdHg0QUFMZ2VBQUM1SGdBQXVoNEFBTHNlQUFDOEhnQUF2UjRBQUw0ZUFBQy9IZ0FBXFxcbndCNEFBTUVlQUFEQ0hnQUF3eDRBQU1RZUFBREZIZ0FBeGg0QUFNY2VBQURJSGdBQXlSNEFBTW9lQUFETEhnQUF6QjRBQU0wZUFBRE9IZ1xcXG5BQXp4NEFBTkFlQUFEUkhnQUEwaDRBQU5NZUFBRFVIZ0FBMVI0QUFOWWVBQURYSGdBQTJCNEFBTmtlQUFEYUhnQUEyeDRBQU53ZUFBRGRcXFxuSGdBQTNoNEFBTjhlQUFEZ0hnQUE0UjRBQU9JZUFBRGpIZ0FBNUI0QUFPVWVBQURtSGdBQTV4NEFBT2dlQUFEcEhnQUE2aDRBQU9zZUFBXFxcbkRzSGdBQTdSNEFBTzRlQUFEdkhnQUE4QjRBQVBFZUFBRHlIZ0FBOHg0QUFQUWVBQUQxSGdBQTloNEFBUGNlQUFENEhnQUErUjRBQVBvZVxcXG5BQUQ3SGdBQS9CNEFBUDBlQUFEK0hnQUEveDRBQUFnZkFBQUFId0FBQ1I4QUFBRWZBQUFLSHdBQUFoOEFBQXNmQUFBREh3QUFEQjhBQUFcXFxuUWZBQUFOSHdBQUJSOEFBQTRmQUFBR0h3QUFEeDhBQUFjZkFBQVlId0FBRUI4QUFCa2ZBQUFSSHdBQUdoOEFBQklmQUFBYkh3QUFFeDhBXFxcbkFCd2ZBQUFVSHdBQUhSOEFBQlVmQUFBb0h3QUFJQjhBQUNrZkFBQWhId0FBS2g4QUFDSWZBQUFySHdBQUl4OEFBQ3dmQUFBa0h3QUFMUlxcXG44QUFDVWZBQUF1SHdBQUpoOEFBQzhmQUFBbkh3QUFPQjhBQURBZkFBQTVId0FBTVI4QUFEb2ZBQUF5SHdBQU94OEFBRE1mQUFBOEh3QUFcXFxuTkI4QUFEMGZBQUExSHdBQVBoOEFBRFlmQUFBL0h3QUFOeDhBQUVnZkFBQkFId0FBU1I4QUFFRWZBQUJLSHdBQVFoOEFBRXNmQUFCREh3XFxcbkFBVEI4QUFFUWZBQUJOSHdBQVJSOEFBRmtmQUFCUkh3QUFXeDhBQUZNZkFBQmRId0FBVlI4QUFGOGZBQUJYSHdBQWFCOEFBR0FmQUFCcFxcXG5Id0FBWVI4QUFHb2ZBQUJpSHdBQWF4OEFBR01mQUFCc0h3QUFaQjhBQUcwZkFBQmxId0FBYmg4QUFHWWZBQUJ2SHdBQVp4OEFBSWdmQUFcXFxuQ0FId0FBaVI4QUFJRWZBQUNLSHdBQWdoOEFBSXNmQUFDREh3QUFqQjhBQUlRZkFBQ05Id0FBaFI4QUFJNGZBQUNHSHdBQWp4OEFBSWNmXFxcbkFBQ1lId0FBa0I4QUFKa2ZBQUNSSHdBQW1oOEFBSklmQUFDYkh3QUFreDhBQUp3ZkFBQ1VId0FBblI4QUFKVWZBQUNlSHdBQWxoOEFBSlxcXG44ZkFBQ1hId0FBcUI4QUFLQWZBQUNwSHdBQW9SOEFBS29mQUFDaUh3QUFxeDhBQUtNZkFBQ3NId0FBcEI4QUFLMGZBQUNsSHdBQXJoOEFcXFxuQUtZZkFBQ3ZId0FBcHg4QUFMZ2ZBQUN3SHdBQXVSOEFBTEVmQUFDNkh3QUFjQjhBQUxzZkFBQnhId0FBdkI4QUFMTWZBQURJSHdBQWNoXFxcbjhBQU1rZkFBQnpId0FBeWg4QUFIUWZBQURMSHdBQWRSOEFBTXdmQUFEREh3QUEyQjhBQU5BZkFBRFpId0FBMFI4QUFOb2ZBQUIySHdBQVxcXG4yeDhBQUhjZkFBRG9Id0FBNEI4QUFPa2ZBQURoSHdBQTZoOEFBSG9mQUFEckh3QUFleDhBQU93ZkFBRGxId0FBK0I4QUFIZ2ZBQUQ1SHdcXFxuQUFlUjhBQVBvZkFBQjhId0FBK3g4QUFIMGZBQUQ4SHdBQTh4OEFBQ1loQUFESkF3QUFLaUVBQUdzQUFBQXJJUUFBNVFBQUFESWhBQUJPXFxcbklRQUFZQ0VBQUhBaEFBQmhJUUFBY1NFQUFHSWhBQUJ5SVFBQVl5RUFBSE1oQUFCa0lRQUFkQ0VBQUdVaEFBQjFJUUFBWmlFQUFIWWhBQVxcXG5CbklRQUFkeUVBQUdnaEFBQjRJUUFBYVNFQUFIa2hBQUJxSVFBQWVpRUFBR3NoQUFCN0lRQUFiQ0VBQUh3aEFBQnRJUUFBZlNFQUFHNGhcXFxuQUFCK0lRQUFieUVBQUg4aEFBQ0RJUUFBaENFQUFMWWtBQURRSkFBQXR5UUFBTkVrQUFDNEpBQUEwaVFBQUxra0FBRFRKQUFBdWlRQUFOXFxcblFrQUFDN0pBQUExU1FBQUx3a0FBRFdKQUFBdlNRQUFOY2tBQUMrSkFBQTJDUUFBTDhrQUFEWkpBQUF3Q1FBQU5va0FBREJKQUFBMnlRQVxcXG5BTUlrQUFEY0pBQUF3eVFBQU4wa0FBREVKQUFBM2lRQUFNVWtBQURmSkFBQXhpUUFBT0FrQUFESEpBQUE0U1FBQU1na0FBRGlKQUFBeVNcXFxuUUFBT01rQUFES0pBQUE1Q1FBQU1za0FBRGxKQUFBekNRQUFPWWtBQUROSkFBQTV5UUFBTTRrQUFEb0pBQUF6eVFBQU9ra0FBQUFMQUFBXFxcbk1Dd0FBQUVzQUFBeExBQUFBaXdBQURJc0FBQURMQUFBTXl3QUFBUXNBQUEwTEFBQUJTd0FBRFVzQUFBR0xBQUFOaXdBQUFjc0FBQTNMQVxcXG5BQUNDd0FBRGdzQUFBSkxBQUFPU3dBQUFvc0FBQTZMQUFBQ3l3QUFEc3NBQUFNTEFBQVBDd0FBQTBzQUFBOUxBQUFEaXdBQUQ0c0FBQVBcXFxuTEFBQVB5d0FBQkFzQUFCQUxBQUFFU3dBQUVFc0FBQVNMQUFBUWl3QUFCTXNBQUJETEFBQUZDd0FBRVFzQUFBVkxBQUFSU3dBQUJZc0FBXFxcbkJHTEFBQUZ5d0FBRWNzQUFBWUxBQUFTQ3dBQUJrc0FBQkpMQUFBR2l3QUFFb3NBQUFiTEFBQVN5d0FBQndzQUFCTUxBQUFIU3dBQUUwc1xcXG5BQUFlTEFBQVRpd0FBQjhzQUFCUExBQUFJQ3dBQUZBc0FBQWhMQUFBVVN3QUFDSXNBQUJTTEFBQUl5d0FBRk1zQUFBa0xBQUFWQ3dBQUNcXFxuVXNBQUJWTEFBQUppd0FBRllzQUFBbkxBQUFWeXdBQUNnc0FBQllMQUFBS1N3QUFGa3NBQUFxTEFBQVdpd0FBQ3NzQUFCYkxBQUFMQ3dBXFxcbkFGd3NBQUF0TEFBQVhTd0FBQzRzQUFCZUxBQUFMeXdBQUY4c0FBQmdMQUFBWVN3QUFHSXNBQUJyQWdBQVl5d0FBSDBkQUFCa0xBQUFmUVxcXG5JQUFHY3NBQUJvTEFBQWFTd0FBR29zQUFCckxBQUFiQ3dBQUcwc0FBQlJBZ0FBYml3QUFIRUNBQUJ2TEFBQVVBSUFBSEFzQUFCU0FnQUFcXFxuY2l3QUFITXNBQUIxTEFBQWRpd0FBSDRzQUFBL0FnQUFmeXdBQUVBQ0FBQ0FMQUFBZ1N3QUFJSXNBQUNETEFBQWhDd0FBSVVzQUFDR0xBXFxcbkFBaHl3QUFJZ3NBQUNKTEFBQWlpd0FBSXNzQUFDTUxBQUFqU3dBQUk0c0FBQ1BMQUFBa0N3QUFKRXNBQUNTTEFBQWt5d0FBSlFzQUFDVlxcXG5MQUFBbGl3QUFKY3NBQUNZTEFBQW1Td0FBSm9zQUFDYkxBQUFuQ3dBQUowc0FBQ2VMQUFBbnl3QUFLQXNBQUNoTEFBQW9pd0FBS01zQUFcXFxuQ2tMQUFBcFN3QUFLWXNBQUNuTEFBQXFDd0FBS2tzQUFDcUxBQUFxeXdBQUt3c0FBQ3RMQUFBcml3QUFLOHNBQUN3TEFBQXNTd0FBTElzXFxcbkFBQ3pMQUFBdEN3QUFMVXNBQUMyTEFBQXR5d0FBTGdzQUFDNUxBQUF1aXdBQUxzc0FBQzhMQUFBdlN3QUFMNHNBQUMvTEFBQXdDd0FBTVxcXG5Fc0FBRENMQUFBd3l3QUFNUXNBQURGTEFBQXhpd0FBTWNzQUFESUxBQUF5U3dBQU1vc0FBRExMQUFBekN3QUFNMHNBQURPTEFBQXp5d0FcXFxuQU5Bc0FBRFJMQUFBMGl3QUFOTXNBQURVTEFBQTFTd0FBTllzQUFEWExBQUEyQ3dBQU5rc0FBRGFMQUFBMnl3QUFOd3NBQURkTEFBQTNpXFxcbndBQU44c0FBRGdMQUFBNFN3QUFPSXNBQURqTEFBQTZ5d0FBT3dzQUFEdExBQUE3aXdBQVBJc0FBRHpMQUFBUUtZQUFFR21BQUJDcGdBQVxcXG5RNllBQUVTbUFBQkZwZ0FBUnFZQUFFZW1BQUJJcGdBQVNhWUFBRXFtQUFCTHBnQUFUS1lBQUUybUFBQk9wZ0FBVDZZQUFGQ21BQUJScGdcXFxuQUFVcVlBQUZPbUFBQlVwZ0FBVmFZQUFGYW1BQUJYcGdBQVdLWUFBRm1tQUFCYXBnQUFXNllBQUZ5bUFBQmRwZ0FBWHFZQUFGK21BQUJnXFxcbnBnQUFZYVlBQUdLbUFBQmpwZ0FBWktZQUFHV21BQUJtcGdBQVo2WUFBR2ltQUFCcHBnQUFhcVlBQUd1bUFBQnNwZ0FBYmFZQUFJQ21BQVxcXG5DQnBnQUFncVlBQUlPbUFBQ0VwZ0FBaGFZQUFJYW1BQUNIcGdBQWlLWUFBSW1tQUFDS3BnQUFpNllBQUl5bUFBQ05wZ0FBanFZQUFJK21cXFxuQUFDUXBnQUFrYVlBQUpLbUFBQ1RwZ0FBbEtZQUFKV21BQUNXcGdBQWw2WUFBSmltQUFDWnBnQUFtcVlBQUp1bUFBQWlwd0FBSTZjQUFDXFxcblNuQUFBbHB3QUFKcWNBQUNlbkFBQW9wd0FBS2FjQUFDcW5BQUFycHdBQUxLY0FBQzJuQUFBdXB3QUFMNmNBQURLbkFBQXpwd0FBTktjQVxcXG5BRFduQUFBMnB3QUFONmNBQURpbkFBQTVwd0FBT3FjQUFEdW5BQUE4cHdBQVBhY0FBRDZuQUFBL3B3QUFRS2NBQUVHbkFBQkNwd0FBUTZcXFxuY0FBRVNuQUFCRnB3QUFScWNBQUVlbkFBQklwd0FBU2FjQUFFcW5BQUJMcHdBQVRLY0FBRTJuQUFCT3B3QUFUNmNBQUZDbkFBQlJwd0FBXFxcblVxY0FBRk9uQUFCVXB3QUFWYWNBQUZhbkFBQlhwd0FBV0tjQUFGbW5BQUJhcHdBQVc2Y0FBRnluQUFCZHB3QUFYcWNBQUYrbkFBQmdwd1xcXG5BQVlhY0FBR0tuQUFCanB3QUFaS2NBQUdXbkFBQm1wd0FBWjZjQUFHaW5BQUJwcHdBQWFxY0FBR3VuQUFCc3B3QUFiYWNBQUc2bkFBQnZcXFxucHdBQWVhY0FBSHFuQUFCN3B3QUFmS2NBQUgybkFBQjVIUUFBZnFjQUFIK25BQUNBcHdBQWdhY0FBSUtuQUFDRHB3QUFoS2NBQUlXbkFBXFxcbkNHcHdBQWg2Y0FBSXVuQUFDTXB3QUFqYWNBQUdVQ0FBQ1Fwd0FBa2FjQUFKS25BQUNUcHdBQWxxY0FBSmVuQUFDWXB3QUFtYWNBQUpxblxcXG5BQUNicHdBQW5LY0FBSjJuQUFDZXB3QUFuNmNBQUtDbkFBQ2hwd0FBb3FjQUFLT25BQUNrcHdBQXBhY0FBS2FuQUFDbnB3QUFxS2NBQUtcXFxubW5BQUNxcHdBQVpnSUFBS3VuQUFCY0FnQUFyS2NBQUdFQ0FBQ3Rwd0FBYkFJQUFLNm5BQUJxQWdBQXNLY0FBSjRDQUFDeHB3QUFod0lBXFxcbkFMS25BQUNkQWdBQXM2Y0FBRk9yQUFDMHB3QUF0YWNBQUxhbkFBQzNwd0FBdUtjQUFMbW5BQUM2cHdBQXU2Y0FBTHluQUFDOXB3QUF2cVxcXG5jQUFMK25BQURBcHdBQXdhY0FBTUtuQUFERHB3QUF4S2NBQUpTbkFBREZwd0FBZ2dJQUFNYW5BQUNPSFFBQXg2Y0FBTWluQUFESnB3QUFcXFxueXFjQUFOQ25BQURScHdBQTFxY0FBTmVuQUFEWXB3QUEyYWNBQVBXbkFBRDJwd0FBSWY4QUFFSC9BQUFpL3dBQVF2OEFBQ1AvQUFCRC93XFxcbkFBSlA4QUFFVC9BQUFsL3dBQVJmOEFBQ2IvQUFCRy93QUFKLzhBQUVmL0FBQW8vd0FBU1A4QUFDbi9BQUJKL3dBQUt2OEFBRXIvQUFBclxcXG4vd0FBUy84QUFDei9BQUJNL3dBQUxmOEFBRTMvQUFBdS93QUFUdjhBQUMvL0FBQlAvd0FBTVA4QUFGRC9BQUF4L3dBQVVmOEFBREwvQUFcXFxuQlMvd0FBTS84QUFGUC9BQUEwL3dBQVZQOEFBRFgvQUFCVi93QUFOdjhBQUZiL0FBQTMvd0FBVi84QUFEai9BQUJZL3dBQU9mOEFBRm4vXFxcbkFBQTYvd0FBV3Y4QUFBQUVBUUFvQkFFQUFRUUJBQ2tFQVFBQ0JBRUFLZ1FCQUFNRUFRQXJCQUVBQkFRQkFDd0VBUUFGQkFFQUxRUUJBQVxcXG5ZRUFRQXVCQUVBQndRQkFDOEVBUUFJQkFFQU1BUUJBQWtFQVFBeEJBRUFDZ1FCQURJRUFRQUxCQUVBTXdRQkFBd0VBUUEwQkFFQURRUUJcXFxuQURVRUFRQU9CQUVBTmdRQkFBOEVBUUEzQkFFQUVBUUJBRGdFQVFBUkJBRUFPUVFCQUJJRUFRQTZCQUVBRXdRQkFEc0VBUUFVQkFFQVBBXFxcblFCQUJVRUFRQTlCQUVBRmdRQkFENEVBUUFYQkFFQVB3UUJBQmdFQVFCQUJBRUFHUVFCQUVFRUFRQWFCQUVBUWdRQkFCc0VBUUJEQkFFQVxcXG5IQVFCQUVRRUFRQWRCQUVBUlFRQkFCNEVBUUJHQkFFQUh3UUJBRWNFQVFBZ0JBRUFTQVFCQUNFRUFRQkpCQUVBSWdRQkFFb0VBUUFqQkFcXFxuRUFTd1FCQUNRRUFRQk1CQUVBSlFRQkFFMEVBUUFtQkFFQVRnUUJBQ2NFQVFCUEJBRUFzQVFCQU5nRUFRQ3hCQUVBMlFRQkFMSUVBUURhXFxcbkJBRUFzd1FCQU5zRUFRQzBCQUVBM0FRQkFMVUVBUURkQkFFQXRnUUJBTjRFQVFDM0JBRUEzd1FCQUxnRUFRRGdCQUVBdVFRQkFPRUVBUVxcXG5DNkJBRUE0Z1FCQUxzRUFRRGpCQUVBdkFRQkFPUUVBUUM5QkFFQTVRUUJBTDRFQVFEbUJBRUF2d1FCQU9jRUFRREFCQUVBNkFRQkFNRUVcXFxuQVFEcEJBRUF3Z1FCQU9vRUFRRERCQUVBNndRQkFNUUVBUURzQkFFQXhRUUJBTzBFQVFER0JBRUE3Z1FCQU1jRUFRRHZCQUVBeUFRQkFQXFxcbkFFQVFESkJBRUE4UVFCQU1vRUFRRHlCQUVBeXdRQkFQTUVBUURNQkFFQTlBUUJBTTBFQVFEMUJBRUF6Z1FCQVBZRUFRRFBCQUVBOXdRQlxcXG5BTkFFQVFENEJBRUEwUVFCQVBrRUFRRFNCQUVBK2dRQkFOTUVBUUQ3QkFFQWNBVUJBSmNGQVFCeEJRRUFtQVVCQUhJRkFRQ1pCUUVBY3dcXFxuVUJBSm9GQVFCMEJRRUFtd1VCQUhVRkFRQ2NCUUVBZGdVQkFKMEZBUUIzQlFFQW5nVUJBSGdGQVFDZkJRRUFlUVVCQUtBRkFRQjZCUUVBXFxcbm9RVUJBSHdGQVFDakJRRUFmUVVCQUtRRkFRQitCUUVBcFFVQkFIOEZBUUNtQlFFQWdBVUJBS2NGQVFDQkJRRUFxQVVCQUlJRkFRQ3BCUVxcXG5FQWd3VUJBS29GQVFDRUJRRUFxd1VCQUlVRkFRQ3NCUUVBaGdVQkFLMEZBUUNIQlFFQXJnVUJBSWdGQVFDdkJRRUFpUVVCQUxBRkFRQ0tcXFxuQlFFQXNRVUJBSXdGQVFDekJRRUFqUVVCQUxRRkFRQ09CUUVBdFFVQkFJOEZBUUMyQlFFQWtBVUJBTGNGQVFDUkJRRUF1QVVCQUpJRkFRXFxcbkM1QlFFQWxBVUJBTHNGQVFDVkJRRUF2QVVCQUlBTUFRREFEQUVBZ1F3QkFNRU1BUUNDREFFQXdnd0JBSU1NQVFERERBRUFoQXdCQU1RTVxcXG5BUUNGREFFQXhRd0JBSVlNQVFER0RBRUFod3dCQU1jTUFRQ0lEQUVBeUF3QkFJa01BUURKREFFQWlnd0JBTW9NQVFDTERBRUF5d3dCQUlcXFxud01BUURNREFFQWpRd0JBTTBNQVFDT0RBRUF6Z3dCQUk4TUFRRFBEQUVBa0F3QkFOQU1BUUNSREFFQTBRd0JBSklNQVFEU0RBRUFrd3dCXFxcbkFOTU1BUUNVREFFQTFBd0JBSlVNQVFEVkRBRUFsZ3dCQU5ZTUFRQ1hEQUVBMXd3QkFKZ01BUURZREFFQW1Rd0JBTmtNQVFDYURBRUEyZ1xcXG53QkFKc01BUURiREFFQW5Bd0JBTndNQVFDZERBRUEzUXdCQUo0TUFRRGVEQUVBbnd3QkFOOE1BUUNnREFFQTRBd0JBS0VNQVFEaERBRUFcXFxub2d3QkFPSU1BUUNqREFFQTR3d0JBS1FNQVFEa0RBRUFwUXdCQU9VTUFRQ21EQUVBNWd3QkFLY01BUURuREFFQXFBd0JBT2dNQVFDcERBXFxcbkVBNlF3QkFLb01BUURxREFFQXF3d0JBT3NNQVFDc0RBRUE3QXdCQUswTUFRRHREQUVBcmd3QkFPNE1BUUN2REFFQTd3d0JBTEFNQVFEd1xcXG5EQUVBc1F3QkFQRU1BUUN5REFFQThnd0JBS0FZQVFEQUdBRUFvUmdCQU1FWUFRQ2lHQUVBd2hnQkFLTVlBUURER0FFQXBCZ0JBTVFZQVFcXFxuQ2xHQUVBeFJnQkFLWVlBUURHR0FFQXB4Z0JBTWNZQVFDb0dBRUF5QmdCQUtrWUFRREpHQUVBcWhnQkFNb1lBUUNyR0FFQXl4Z0JBS3dZXFxcbkFRRE1HQUVBclJnQkFNMFlBUUN1R0FFQXpoZ0JBSzhZQVFEUEdBRUFzQmdCQU5BWUFRQ3hHQUVBMFJnQkFMSVlBUURTR0FFQXN4Z0JBTlxcXG5NWUFRQzBHQUVBMUJnQkFMVVlBUURWR0FFQXRoZ0JBTllZQVFDM0dBRUExeGdCQUxnWUFRRFlHQUVBdVJnQkFOa1lBUUM2R0FFQTJoZ0JcXFxuQUxzWUFRRGJHQUVBdkJnQkFOd1lBUUM5R0FFQTNSZ0JBTDRZQVFEZUdBRUF2eGdCQU44WUFRQkFiZ0VBWUc0QkFFRnVBUUJoYmdFQVFtXFxcbjRCQUdKdUFRQkRiZ0VBWTI0QkFFUnVBUUJrYmdFQVJXNEJBR1Z1QVFCR2JnRUFabTRCQUVkdUFRQm5iZ0VBU0c0QkFHaHVBUUJKYmdFQVxcXG5hVzRCQUVwdUFRQnFiZ0VBUzI0QkFHdHVBUUJNYmdFQWJHNEJBRTF1QVFCdGJnRUFUbTRCQUc1dUFRQlBiZ0VBYjI0QkFGQnVBUUJ3YmdcXFxuRUFVVzRCQUhGdUFRQlNiZ0VBY200QkFGTnVBUUJ6YmdFQVZHNEJBSFJ1QVFCVmJnRUFkVzRCQUZadUFRQjJiZ0VBVjI0QkFIZHVBUUJZXFxcbmJnRUFlRzRCQUZsdUFRQjViZ0VBV200QkFIcHVBUUJiYmdFQWUyNEJBRnh1QVFCOGJnRUFYVzRCQUgxdUFRQmViZ0VBZm00QkFGOXVBUVxcXG5CL2JnRUFBT2tCQUNMcEFRQUI2UUVBSStrQkFBTHBBUUFrNlFFQUEra0JBQ1hwQVFBRTZRRUFKdWtCQUFYcEFRQW42UUVBQnVrQkFDanBcXFxuQVFBSDZRRUFLZWtCQUFqcEFRQXE2UUVBQ2VrQkFDdnBBUUFLNlFFQUxPa0JBQXZwQVFBdDZRRUFET2tCQUM3cEFRQU42UUVBTCtrQkFBXFxcbjdwQVFBdzZRRUFEK2tCQURIcEFRQVE2UUVBTXVrQkFCSHBBUUF6NlFFQUV1a0JBRFRwQVFBVDZRRUFOZWtCQUJUcEFRQTI2UUVBRmVrQlxcXG5BRGZwQVFBVzZRRUFPT2tCQUJmcEFRQTU2UUVBR09rQkFEcnBBUUFaNlFFQU8ra0JBQnJwQVFBODZRRUFHK2tCQUQzcEFRQWM2UUVBUHVcXFxua0JBQjNwQVFBLzZRRUFIdWtCQUVEcEFRQWY2UUVBUWVrQkFDRHBBUUJDNlFFQUlla0JBRVBwQVFCTVlYbHZkWFJ6YVhwbFlXeHBaMjRBXFxcbk5nRUFBQVFBQUFBRUFBQUFSUUVBQUV4aGVXOTFkRVZ5Y205eUFFR0lwczhBQzJnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVxcXG5BQUFBQUFBQUFBQUFBQUFBQUFBQUFBbXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFcXFxuQUFBQUFBQUFuQUFBQUFBQUFBRGNMQkFBNkN3UUFBRDBqNGlBQUFSdVlXMWxBZW1QaUlBQXZBNEFOWGRoYzIxZlltbHVaR2RsYmpvNlgxXFxcbjkzWW1sdVpHZGxibDlsY25KdmNsOXVaWGM2T21nd01qbGhOR0UwWTJJd05qZ3dNVGs1QVR0M1lYTnRYMkpwYm1SblpXNDZPbDlmZDJKcFxcXG5ibVJuWlc1ZmIySnFaV04wWDJSeWIzQmZjbVZtT2pwb01tWXdNV0V4T1RJd05tTTJZMlU1TkFJMmQyRnpiVjlpYVc1a1oyVnVPanBmWDNcXFxuZGlhVzVrWjJWdVgzTjBjbWx1WjE5blpYUTZPbWhqTWpjeVlXRmpPR1UzWWpBMk16YzJBelozWVhOdFgySnBibVJuWlc0Nk9sOWZkMkpwXFxcbmJtUm5aVzVmYzNSeWFXNW5YMjVsZHpvNmFESTVZV0pqTldFNU5tVmxNek5oTjJNRVhtUmxibTlmWTJGamFHVmZaR2x5T2pwM1lYTnRPalxcXG5weVpXRmtYMlpwYkdWZllubDBaWE02T2w5ZmQySm5YM0psWVdSbWFXeGxZbmwwWlhOZk9XTmxPRGN3WkdVNE5tSXlZMk16TmpvNmFEWXpcXFxuTnpaaFpUSXhOMlUzTkRCa056UUZNM2RoYzIxZlltbHVaR2RsYmpvNlgxOTNZbWx1WkdkbGJsOXBjMTl1ZFd4c09qcG9OMkV3TVdGaE9EXFxcbk5rWkdFeU9XWTBOQVk0ZDJGemJWOWlhVzVrWjJWdU9qcGZYM2RpYVc1a1oyVnVYMmx6WDNWdVpHVm1hVzVsWkRvNmFHVTVZelZoTXpVNVxcXG5NR1l5TlRNeVpqY0hZbVJsYm05ZlkyRmphR1ZmWkdseU9qcDNZWE50T2pwaGRHOXRhV05mZDNKcGRHVmZabWxzWlRvNlgxOTNZbWRmWVhcXFxuUnZiV2xqZDNKcGRHVm1hV3hsWHpNeE1HTTFaRFk1TUdWa05HRXhPRFk2T21neE1ESXhNalprTWpZNU4yRTJaRE5pQ0Z0a1pXNXZYMk5oXFxcblkyaGxYMlJwY2pvNmQyRnpiVG82Ylc5a2FXWnBaV1JmZEdsdFpUbzZYMTkzWW1kZmJXOWthV1pwWldSMGFXMWxYelkzWldZeE4yRmpOR1xcXG5WbFltWTFNbU02T21nME5ESmtNRGRpTXpjNU1qVTJZbUV3Q1ZGa1pXNXZYMk5oWTJobFgyUnBjam82ZDJGemJUbzZkR2x0WlY5dWIzYzZcXFxuT2w5ZmQySm5YM1JwYldWdWIzZGZaVGhsWkRRM09XWTJZbUZrTWpZeU5qbzZhRGt3T1dVeU56Z3pNRGhoTm1aa01HRUtObmRoYzIxZlltXFxcbmx1WkdkbGJqbzZYMTkzWW1sdVpHZGxibDl1ZFcxaVpYSmZaMlYwT2pwb016a3hPVEExWWpKaE5EVXpNR0l4WmdzMWQyRnpiVjlpYVc1a1xcXG5aMlZ1T2pwZlgzZGlhVzVrWjJWdVgybHpYMjlpYW1WamREbzZhRGhtT0Rka1lXVTVNVFJsWkRkallUZ01PbmRoYzIxZlltbHVaR2RsYmpcXFxubzZYMTkzWW1sdVpHZGxibDlxYzNaaGJGOXNiMjl6WlY5bGNUbzZhRFJoWW1SaE5qYzBaalZqWmpVNFpEa05OM2RoYzIxZlltbHVaR2RsXFxcbmJqbzZYMTkzWW1sdVpHZGxibDlpYjI5c1pXRnVYMmRsZERvNmFHSTVOakExT0Rrd05qWTJOakl3WWpJT2VqeHpaWEprWlY5M1lYTnRYMlxcXG5KcGJtUm5aVzQ2T21WeWNtOXlPanBGY25KdmNpQmhjeUJqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGsrT2pwbWJYUTZPblJ2WDNOMGNtbHVcXFxuWnpvNlgxOTNZbWRmVTNSeWFXNW5Yemc0T0RFd1pHWmxZalF3TWpFNU1ESTZPbWhtWkRWallXWTJORE01Tm1SaFl6QTFEMUZ6WlhKa1pWXFxcbjkzWVhOdFgySnBibVJuWlc0Nk9rOWlhbVZqZEVWNGREbzZjMlYwT2pwZlgzZGlaMTl6WlhSZk9EUXhZV00xTjJObVpqTmtOamN5WWpvNlxcXG5hRFEyWXpWa01tSTRabUU1TjJGa016WVFVMk52Ym5OdmJHVmZaWEp5YjNKZmNHRnVhV05mYUc5dmF6bzZSWEp5YjNJNk9tNWxkem82WDFcXFxuOTNZbWRmYm1WM1gyRmlaR0UzTm1VNE9ETmlZVGhoTldZNk9taGtZakV5WmpBNFpHRTNPV0ZrT0RjeUVWZGpiMjV6YjJ4bFgyVnljbTl5XFxcblgzQmhibWxqWDJodmIyczZPa1Z5Y205eU9qcHpkR0ZqYXpvNlgxOTNZbWRmYzNSaFkydGZOalU0TWpjNVptVTBORFUwTVdObU5qbzZhR1xcXG5Vd1l6VmpZVFkyTnpSa1kyWm1NamNTVUdOdmJuTnZiR1ZmWlhKeWIzSmZjR0Z1YVdOZmFHOXZhem82WlhKeWIzSTZPbDlmZDJKblgyVnlcXFxuY205eVgyWTROVEUyTmpkaFpqY3hZbU5tWXpZNk9tZzFZVEUxTVRReE9Ua3hORGMwTUdWakV6VjNZWE50WDJKcGJtUm5aVzQ2T2w5ZmQyXFxcbkpwYm1SblpXNWZhWE5mYzNSeWFXNW5PanBvWkdRMk9XTXhPVGRpTVdNMU1qVmxOeFEzZDJGemJWOWlhVzVrWjJWdU9qcGZYM2RpYVc1a1xcXG5aMlZ1WDJselgyWjFibU4wYVc5dU9qcG9OamMzT1RKbE5tUTVPRGhpTm1ZM05SVS9hbk5mYzNsek9qcE5ZWEE2T201bGR6bzZYMTkzWW1cXFxuZGZibVYzWHpCbU1tSTNNV05oTW1ZeVlUWXdNams2T21neE5XRXhNVE15T1dSa01XVTJNemsxRm1wcWMxOXplWE02T2tsMFpYSmhkRzl5XFxcbk9qcHNiMjlyYzE5c2FXdGxYMmwwWlhKaGRHOXlPanBOWVhsaVpVbDBaWEpoZEc5eU9qcHVaWGgwT2pwZlgzZGlaMTl1WlhoMFgyWTBZbVxcXG5Nd1pUazJaV0UyTjJSaE5qZzZPbWcyTkRobU9EQmpNemN6TUdFd1pETmlGMHhxYzE5emVYTTZPa2wwWlhKaGRHOXlUbVY0ZERvNmRtRnNcXFxuZFdVNk9sOWZkMkpuWDNaaGJIVmxYekptTkdWbU1qQXpObUptWVdReU9HVTZPbWd4WW1KbE5HVXhaV1V4TldSbFlUQmtHRXhxYzE5emVYXFxcbk02T2xONWJXSnZiRG82YVhSbGNtRjBiM0k2T2w5ZmQySm5YMmwwWlhKaGRHOXlYemRqTjJVMU9HWTJNbVZpT0RRM01EQTZPbWhqTW1GaVxcXG5aRE14TURBeFlUWTFaakJpR1VKcWMxOXplWE02T2s5aWFtVmpkRG82Ym1WM09qcGZYM2RpWjE5dVpYZGZNbUkyWm1WaE5HVmhNRE5pTVdcXFxuSTVOVG82YUdOaE56Um1aRE16T1dGa01XRTJNRFlhUVdwelgzTjVjem82UVhKeVlYazZPbWRsZERvNlgxOTNZbWRmWjJWMFh6Y3pNRE5sXFxcblpESmxaakF5Tm1JeVpqVTZPbWcxTm1Oa05qZzFOMkk0TkdWa05XSm1HMGRxYzE5emVYTTZPa0Z5Y21GNU9qcHNaVzVuZEdnNk9sOWZkMlxcXG5KblgyeGxibWQwYUY4NE1qQmpOemcyT1RjellXSmtaRGhoT2pwb05HSmpPRFUzWVRjME4yTXpORGt6T1J5U0FXcHpYM041Y3pvNlh6bzZcXFxuUEdsdGNHd2dkMkZ6YlY5aWFXNWtaMlZ1T2pwallYTjBPanBLYzBOaGMzUWdabTl5SUdwelgzTjVjem82UVhKeVlYbENkV1ptWlhJK09qXFxcbnBwYm5OMFlXNWpaVzltT2pwZlgzZGlaMTlwYm5OMFlXNWpaVzltWDBGeWNtRjVRblZtWm1WeVgyVm1Nall6TW1GaE1HUTBZbVptWmpnNlxcXG5PbWhtTkdNek9EY3dZbUk0TmpOa05HTmhIVUZxYzE5emVYTTZPa1Z5Y205eU9qcHVaWGM2T2w5ZmQySm5YMjVsZDE4NE56STVOMll5TWpcXFxuazNNekUxTjJNNE9qcG9NRFk1TldNNU5HWXpOekkwWTJFMVpoNUhhbk5mYzNsek9qcEdkVzVqZEdsdmJqbzZZMkZzYkRBNk9sOWZkMkpuXFxcblgyTmhiR3hmTlRVM1lUSm1NbVJsWVdOak5Ea3hNam82YURSaU56VmhaamxsTXpKbFl6Wm1OR1FmUDJwelgzTjVjem82VFdGd09qcHpaWFxcXG5RNk9sOWZkMkpuWDNObGRGOWtZVGRpWlRkaVpqQmxNRE0zWWpFME9qcG9PRFF5WmpjMFltSTROalV3TkdNeE9DQkdhbk5mYzNsek9qcEpcXFxuZEdWeVlYUnZjam82Ym1WNGREbzZYMTkzWW1kZmJtVjRkRjlsWXpBMk1XVTBPR0V3WlRjeVlUazJPanBvTWpBd1pXUmlOV1E0TVdZM056XFxcbmd5WWlGS2FuTmZjM2x6T2pwSmRHVnlZWFJ2Y2s1bGVIUTZPbVJ2Ym1VNk9sOWZkMkpuWDJSdmJtVmZZalpoWW1JeU4yUTBNbUkyTXpnMlxcXG5Oem82YUdOa1lUVmtZamRqTURkaVl6TmpORE1pU21welgzTjVjem82VDJKcVpXTjBPanBsYm5SeWFXVnpPanBmWDNkaVoxOWxiblJ5YVdcXFxuVnpYekV6WlRBeE1UUTFNemMzTmpRMk9HWTZPbWhoTXpWa01XRmtPRFJoTVRObU5tRmtJME5xYzE5emVYTTZPbEpsWm14bFkzUTZPbWRsXFxcbmREbzZYMTkzWW1kZloyVjBYMlkxTTJNNU1qRXlPVEZqTXpneFltUTZPbWhpTkdZM1lqVm1NV0V4TjJWbFlqazRKRlZxYzE5emVYTTZPbFxcXG5kbFlrRnpjMlZ0WW14NU9qcE5aVzF2Y25rNk9tSjFabVpsY2pvNlgxOTNZbWRmWW5WbVptVnlYelUxWW1FM1lUWmlNV0k1TW1VeVlXTTZcXFxuT21neE9EQXlOR1ZrT1RobVpXWTBaVFEwSlVacWMxOXplWE02T2xWcGJuUTRRWEp5WVhrNk9tNWxkem82WDE5M1ltZGZibVYzWHpBNU9UXFxcbk00WVRka01ESXdaakEwT1dJNk9tZzBNak01WkdFM1ptVm1OekUxTW1RNEpwQUJhbk5mYzNsek9qcGZPam84YVcxd2JDQjNZWE50WDJKcFxcXG5ibVJuWlc0Nk9tTmhjM1E2T2twelEyRnpkQ0JtYjNJZ2FuTmZjM2x6T2pwVmFXNTBPRUZ5Y21GNVBqbzZhVzV6ZEdGdVkyVnZaam82WDFcXFxuOTNZbWRmYVc1emRHRnVZMlZ2Wmw5VmFXNTBPRUZ5Y21GNVh6RXpORGsyTkRCaFpqSmtZVEpsT0RnNk9tZ3hOVFZtWmpaaE0yVTJOVFpoXFxcbk1UVTRKMHhxYzE5emVYTTZPbFZwYm5RNFFYSnlZWGs2T214bGJtZDBhRG82WDE5M1ltZGZiR1Z1WjNSb1h6QmhZV0kzWm1aa05qVmhaRFxcXG5FNVpXUTZPbWhpWkRkallqYzBNalJoTjJFNU1UZ3hLRVpxYzE5emVYTTZPbFZwYm5RNFFYSnlZWGs2T25ObGREbzZYMTkzWW1kZmMyVjBcXFxuWHpNMk9UaGxNMk5oTlRFNVlqTmpNMk02T21oaVkyWXpOMkU0Wmpjek56bGhZelUxS1RoM1lYTnRYMkpwYm1SblpXNDZPbDlmZDJKcGJtXFxcblJuWlc1ZlpHVmlkV2RmYzNSeWFXNW5PanBvTmpRek5XRmtObVJoWWpNME5tRTJOU294ZDJGemJWOWlhVzVrWjJWdU9qcGZYM2RpYVc1a1xcXG5aMlZ1WDNSb2NtOTNPanBvWXpZeU9UWTNOV00zWkRWbU9EWXhZeXN5ZDJGemJWOWlhVzVrWjJWdU9qcGZYM2RpYVc1a1oyVnVYMjFsYldcXFxuOXllVG82YUdZd01HSTVNalV4WW1abE16ZzVNamdzU0dOdmNtVTZPbTUxYlRvNlpteDBNbVJsWXpvNmMzUnlZWFJsWjNrNk9tUnlZV2R2XFxcbmJqbzZabTl5YldGMFgzTm9iM0owWlhOME9qcG9OemM0TTJJd05qRTRNbVUwT0dNellpMUZZMjl5WlRvNmJuVnRPanBtYkhReVpHVmpPalxcXG5wemRISmhkR1ZuZVRvNlpISmhaMjl1T2pwbWIzSnRZWFJmWlhoaFkzUTZPbWcxTTJZd1ptVmxZemM1TmpZNE1HTTVManBrYkcxaGJHeHZcXFxuWXpvNlpHeHRZV3hzYjJNNk9rUnNiV0ZzYkc5alBFRStPanB0WVd4c2IyTTZPbWd3TURNNU5UWmlPRGd5TlRreVpHWXdMekoxY213Nk9uXFxcbkJoY25ObGNqbzZVR0Z5YzJWeU9qcHdZWEp6WlY5bWFXeGxPanBvTVdWbE1EUTBOVFZrTnpKbVlqVXlOekFxYVdSdVlUbzZkWFJ6TkRZNlxcXG5PbkJ5YjJObGMzTnBibWM2T21nellUVmtOMkV5WlRobU5UZGpPVGt4TVdnOEptMTFkQ0J6WlhKa1pWOXFjMjl1T2pwa1pUbzZSR1Z6WlhcXFxuSnBZV3hwZW1WeVBGSStJR0Z6SUhObGNtUmxPanBrWlRvNlJHVnpaWEpwWVd4cGVtVnlQam82WkdWelpYSnBZV3hwZW1WZmMzUnlkV04wXFxcbk9qcG9NbVZpT0Rjek16ZzBPRGs1T1RrM05qSkxZMjl5WlRvNmJuVnRPanBtYkhReVpHVmpPanB6ZEhKaGRHVm5lVG82WjNKcGMzVTZPbVxcXG5admNtMWhkRjl6YUc5eWRHVnpkRjl2Y0hRNk9taGpaREU0WXpRME5UQTVOamc1TjJWa00yZzhKbTExZENCelpYSmtaVjlxYzI5dU9qcGtcXFxuWlRvNlJHVnpaWEpwWVd4cGVtVnlQRkkrSUdGeklITmxjbVJsT2pwa1pUbzZSR1Z6WlhKcFlXeHBlbVZ5UGpvNlpHVnpaWEpwWVd4cGVtXFxcblZmYzNSeWRXTjBPanBvTnpRNU5EQXhNalZqT1dNNVptUm1NalJBWTI5eVpUbzZhWFJsY2pvNmRISmhhWFJ6T2pwcGRHVnlZWFJ2Y2pvNlxcXG5TWFJsY21GMGIzSTZPbVZ4WDJKNU9qcG9aamc0T0RrM1pHWTRZMk00T1dZMFlqVXRaR0YwWVY5MWNtdzZPa1JoZEdGVmNtdzZPbkJ5YjJcXFxuTmxjM002T21neFpUUXdPVGs1Wm1ZMU5tWXdaalZqTmw4OFlXeHNiMk02T25OMGNtbHVaem82VTNSeWFXNW5JR0Z6SUdOdmNtVTZPbWwwXFxcblpYSTZPblJ5WVdsMGN6bzZZMjlzYkdWamREbzZSWGgwWlc1a1BHTm9ZWEkrUGpvNlpYaDBaVzVrT2pwb01Ua3lORFl4WTJFek16Vm1PV1xcXG5FMFpqZG9QQ1p0ZFhRZ2MyVnlaR1ZmYW5OdmJqbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbGNqeFNQaUJoY3lCelpYSmtaVG82WkdVNk9rUmxcXFxuYzJWeWFXRnNhWHBsY2o0Nk9tUmxjMlZ5YVdGc2FYcGxYM04wY25WamREbzZhREJpTnpNeVptUTBPRGcxT0RObE5HRTRianh6ZEdRNk9uXFxcbkJoZEdnNk9rTnZiWEJ2Ym1WdWRITWdZWE1nWTI5eVpUbzZhWFJsY2pvNmRISmhhWFJ6T2pwa2IzVmliR1ZmWlc1a1pXUTZPa1J2ZFdKc1xcXG5aVVZ1WkdWa1NYUmxjbUYwYjNJK09qcHVaWGgwWDJKaFkyczZPbWcyT1RjNU1URXlOR1kxTkRCaE5UYzVPVHAxY213Nk9uQmhjbk5sY2pcXFxubzZVR0Z5YzJWeU9qcGhablJsY2w5a2IzVmliR1ZmYzJ4aGMyZzZPbWcwWTJZek1XWTBORGhoWTJabE4ySTRPamRqYjNKbE9qcHpkSEk2XFxcbk9uQmhkSFJsY200Nk9sTjBjbE5sWVhKamFHVnlPanB1WlhjNk9tZzBNalpoWVRNMU5HVTJNRGs0WkRBeU96ZGhiR3h2WXpvNmMzUnlPalxcXG5vOGFXMXdiQ0J6ZEhJK09qcDBiMTlzYjNkbGNtTmhjMlU2T21nNE5UYzJaV1EyTm1VM1lqZGhaamMzUERaMWNtdzZPbkJoY25ObGNqbzZcXFxuVUdGeWMyVnlPanB3WVhKelpWOXlaV3hoZEdsMlpUbzZhRFZoWVRGa016TmtZbVEwT1dNM1pUazlNWE4wWkRvNmNHRjBhRG82UTI5dGNHXFxcbjl1Wlc1MGN6bzZZWE5mY0dGMGFEbzZhR1ZoT1RZMllUWXpNalZrT1RGbE0yUStLWFZ5YkRvNmFHOXpkRG82U0c5emREbzZjR0Z5YzJVNlxcXG5PbWcxWlRnek56UXlOR0U0TnprM1ptVTRQMDVrWlc1dlgyTmhZMmhsWDJScGNqbzZiRzlqWVd3Nk9reHZZMkZzUTJGamFHVk5ZVzVwWm1cXFxuVnpkRHhGYm5ZK09qcHBibk5sY25SZlpHRjBZVG82YURFMFl6ZGhOREptWTJNME56YzJZV1JBTUhObGNtUmxYMnB6YjI0Nk9tVnljbTl5XFxcbk9qcHRZV3RsWDJWeWNtOXlPanBvTmpkbVpURTJORGt4TkdGbFpUWXhORUV5ZFhKc09qcHdZWEp6WlhJNk9sQmhjbk5sY2pvNmNHRnljMlxcXG5WZmNHRjBhRG82YURjMFpqTTJaVGsxTW1KbVltSm1PR1pDSzNWeWJEbzZVR0Z5YzJWUGNIUnBiMjV6T2pwd1lYSnpaVG82YUdZNU5qQTVcXFxuWmpFeE5XRmhPVFF3T0RKRE1XTnZjbVU2T25OMGNqbzZjMnhwWTJWZlpYSnliM0pmWm1GcGJGOXlkRG82YURrMU5qVmtPVGN4Wm1aaFlqXFxcblF5WmpCRU1uVnliRG82Y0dGeWMyVnlPanBRWVhKelpYSTZPbkJoY25ObFgyaHZjM1E2T21oaFpUVTFaR1psWlRVM05XSmhaV0UwUlU5a1xcXG5aVzV2WDJOaFkyaGxYMlJwY2pvNmJHOWpZV3c2T2t4dlkyRnNRMkZqYUdWTllXNXBabVZ6ZER4RmJuWStPanBuWlhSZmJXVjBZV1JoZEdcXFxuRTZPbWcwTkdVM01UQXdZMlZsWkRCak9UQmhSbEU4WkdGMFlWOTFjbXc2T20xcGJXVTZPazFwYldVZ1lYTWdZMjl5WlRvNmMzUnlPanAwXFxcbmNtRnBkSE02T2taeWIyMVRkSEkrT2pwbWNtOXRYM04wY2pvNmFHUmxNR05oWXpOaVpUTmpZemhrTjJKSExIVnliRG82YUc5emREbzZjR1xcXG5GeWMyVmZhWEIyTm1Ga1pISTZPbWd5TXpFMU9EUTRPVGd4TldZNU1UQTJTRXhrWlc1dlgyTmhZMmhsWDJScGNqbzZiRzlqWVd3Nk9uVnlcXFxuYkY5MGIxOXNiMk5oYkY5emRXSmZjR0YwYURvNmUzdGpiRzl6ZFhKbGZYMDZPbWhsTW1OaU5HVmhPR0kwTTJKbU1qa3lTVGhrYkcxaGJHXFxcbnh2WXpvNlpHeHRZV3hzYjJNNk9rUnNiV0ZzYkc5alBFRStPanBtY21WbE9qcG9ZVGM1WVRoak56VmxPVFU1TkRNMlpFcElZMjl5WlRvNlxcXG5iblZ0T2pwbWJIUXlaR1ZqT2pwemRISmhkR1ZuZVRvNlozSnBjM1U2T21admNtMWhkRjlsZUdGamRGOXZjSFE2T21nNU5UazBNbVZoTmpcXFxuWTBNalJrWVRJNVMyVThjMlZ5WkdWZmQyRnpiVjlpYVc1a1oyVnVPanBrWlRvNlJHVnpaWEpwWVd4cGVtVnlJR0Z6SUhObGNtUmxPanBrXFxcblpUbzZSR1Z6WlhKcFlXeHBlbVZ5UGpvNlpHVnpaWEpwWVd4cGVtVmZiV0Z3T2pwb01XSmxaak5qWTJWak1EVmxaakZoWkV3NFkyOXlaVFxcXG5vNmJuVnRPanBpYVdkdWRXMDZPa0pwWnpNeWVEUXdPanB0ZFd4ZmNHOTNNam82YUdReVl6Vm1NVFV4WlRoaU0yWTFNVEZOTUdGc2JHOWpcXFxuT2pwemRISTZPbXB2YVc1ZloyVnVaWEpwWTE5amIzQjVPanBvTTJVMU5UZGlNall4WmpVek1XUTNPVTR3WVd4c2IyTTZPbk4wY2pvNmFtXFxcbjlwYmw5blpXNWxjbWxqWDJOdmNIazZPbWd4TVRBMU9EaGpNMkl4TVRWalpEaGhUekpwWkc1aE9qcHdkVzU1WTI5a1pUbzZSR1ZqYjJSbFxcXG5jam82WkdWamIyUmxPanBvWVRobVltRXpNVFF6TmpGak5XTTFOVkJIY0dGeWEybHVaMTlzYjNRNk9uSmhkMTl5ZDJ4dlkyczZPbEpoZDFcXFxuSjNURzlqYXpvNmQyRnBkRjltYjNKZmNtVmhaR1Z5Y3pvNmFETTFNelppTWpkalltTXdaVEJpWm1KUlJUeHpaWEprWlRvNlpHVTZPbFZ1XFxcblpYaHdaV04wWldRZ1lYTWdZMjl5WlRvNlptMTBPanBFYVhOd2JHRjVQam82Wm0xME9qcG9PVEkwWkRFM05EUXdaRGt6TmpneU5GSkFjMlxcXG5WeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BqbzZhV2R1YjNKbFgzWmhiSFZsT2pwb01EVmpOREJsWmpBNU1ERTJcXFxuWlRjMk5sTXNZMjl5WlRvNlptMTBPanBHYjNKdFlYUjBaWEk2T25CaFpEbzZhR0V6WkRjeVlUZGlZMkkxWlRZM1pUWlVNMk52Y21VNk9uXFxcbk4wY2pvNlkyOTFiblE2T21SdlgyTnZkVzUwWDJOb1lYSnpPanBvWTJFMllqUTRObUV4T1RJMk5URTJOMVV4UEhOMGNpQmhjeUJqYjNKbFxcXG5PanBtYlhRNk9rUmxZblZuUGpvNlptMTBPanBvTmpFNE5EQmxaamhsTURObE9HUXpZbFpBYzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJcXFxuVnlhV0ZzYVhwbGNqeFNQam82YVdkdWIzSmxYM1poYkhWbE9qcG9NemsxTmpGaU5EQXpabVZsWlRKbVpWZEhhR0Z6YUdKeWIzZHVPanB5XFxcbllYYzZPbWx1Ym1WeU9qcFNZWGRVWVdKc1pUeFVMRUUrT2pweVpYTmxjblpsWDNKbGFHRnphRG82YURBek9EQTJNR0k1TlRNeVl6UmxZMlxcXG5WWVIyaGhjMmhpY205M2JqbzZjbUYzT2pwcGJtNWxjam82VW1GM1ZHRmliR1U4VkN4QlBqbzZjbVZ6WlhKMlpWOXlaV2hoYzJnNk9taGhcXFxuTkRSaU16QTNNMkZoTW1OaU5URmtXVWRvWVhOb1luSnZkMjQ2T25KaGR6bzZhVzV1WlhJNk9sSmhkMVJoWW14bFBGUXNRVDQ2T25KbGMyXFxcblZ5ZG1WZmNtVm9ZWE5vT2pwb1pXRTFOVEZrWldVeU9ETTBPR015TUZwWlpHVnViMTlqWVdOb1pWOWthWEk2T214dlkyRnNPanBNYjJOaFxcXG5iRWgwZEhCRFlXTm9aVHhGYm5ZK09qcGphR1ZqYTE5amIzQjVYMmRzYjJKaGJGOTBiMTlzYjJOaGJEbzZhR1EyTTJOaFlqWTROemsxTkdcXFxuVXlObUpiRFY5ZmNtUnNYM0psWVd4c2IyTmNRbU52Y21VNk9tNTFiVG82Wm14ME1tUmxZem82YzNSeVlYUmxaM2s2T21SeVlXZHZiam82XFxcbmJYVnNYM0J2ZHpFd09qcG9aVFF3TWpka05EZ3dObVkxTmpsa04xMUNZMjl5WlRvNlptMTBPanBtYkc5aGREbzZabXh2WVhSZmRHOWZaR1xcXG5WamFXMWhiRjlqYjIxdGIyNWZaWGhoWTNRNk9tZ3dZbUV5WkRVME1tVTVZekEyT1dRd1htVThKbTExZENCelpYSmtaVjlxYzI5dU9qcGtcXFxuWlRvNlJHVnpaWEpwWVd4cGVtVnlQRkkrSUdGeklITmxjbVJsT2pwa1pUbzZSR1Z6WlhKcFlXeHBlbVZ5UGpvNlpHVnpaWEpwWVd4cGVtXFxcblZmYldGd09qcG9PV1k0T1Rsak9HRTBOamt3WmpCalpsODZZMjl5WlRvNmJuVnRPanBpYVdkdWRXMDZPa0pwWnpNeWVEUXdPanB0ZFd4ZlxcXG5aR2xuYVhSek9qcG9ZMlUwTmpCa1lUVXhOMlJpT0dNMFltQTFZMjl5WlRvNlptMTBPanBHYjNKdFlYUjBaWEk2T25CaFpGOXBiblJsWjNcXFxuSmhiRG82YUdFeU5XSmlaV1kzTURjeVpqQXhNR1poUldOdmNtVTZPbU5vWVhJNk9tMWxkR2h2WkhNNk9qeHBiWEJzSUdOb1lYSStPanBsXFxcbmMyTmhjR1ZmWkdWaWRXZGZaWGgwT2pwb1ptUmtaVGd6Tm1Nek9HTXpNV1ZtTUdJeFkyOXlaVG82YzNSeU9qcGpiMjUyWlhKMGN6bzZablxcXG5KdmJWOTFkR1k0T2pwb1pXTTRPR0l6WVROallqZGxNRFJoTVdOUFpHVnViMTlqWVdOb1pWOWthWEk2T214dlkyRnNPanB0WVc1cFptVnpcXFxuZERvNlRHOWpZV3hEWVdOb1pVMWhibWxtWlhOMFJHRjBZVG82Ym1WM09qcG9OakV4TWpFME5UZGxNV014TUdFeE1XUXlZMjl0Y0dsc1pYXFxcbkpmWW5WcGJIUnBibk02T20xbGJUbzZiV1Z0Ylc5MlpUbzZhR0kxWXpVeFptTmpNbVl5T1RKbFltUmxPV0ZzYkc5ak9qcHpkSEpwYm1jNlxcXG5PbE4wY21sdVp6bzZabkp2YlY5MWRHWTRYMnh2YzNONU9qcG9ZMkV4TTJVeE9UTTJZbUl6TjJVME9XWXhjMlZ5WkdWZmFuTnZiam82Y21cXFxuVmhaRG82Y0dGeWMyVmZaWE5qWVhCbE9qcG9NbVZrTXpFNU1HRTBabVF3TWpOak1XYy9aR1Z1YjE5allXTm9aVjlrYVhJNk9teHZZMkZzXFxcbk9qcDFjbXhmZEc5ZmJHOWpZV3hmYzNWaVgzQmhkR2c2T21neVpUUTJOemxrTldaaE5EVTFNbVEyYUVWelpYSmtaVjlxYzI5dU9qcGtaVFxcXG5vNlJHVnpaWEpwWVd4cGVtVnlQRkkrT2pwd1pXVnJYMmx1ZG1Gc2FXUmZkSGx3WlRvNmFEQXhOR0l5TjJNeFpHWTVOMkpqTmpKcFJXTnZcXFxuY21VNk9tWnRkRG82Wm14dllYUTZPbVpzYjJGMFgzUnZYMlJsWTJsdFlXeGZZMjl0Ylc5dVgzTm9iM0owWlhOME9qcG9PR05qWmpSalltXFxcbkkxT0RjelpEbGlOV28rWTI5eVpUbzZabTEwT2pwR2IzSnRZWFIwWlhJNk9uZHlhWFJsWDJadmNtMWhkSFJsWkY5d1lYSjBjem82YUdVd1xcXG5NVEUzTVRNNE1HSmxNV1kxWkRGckxHTnZjbVU2T201MWJUbzZabkp2YlY5emRISmZjbUZrYVhnNk9tZ3pNekJtTWpBMk9ESXhPVGd3TWpcXFxuQXdiRUp5YVc1bk9qcGthV2RsYzNRNk9uTm9ZVEk2T2tkR2NGOXphR0V5TlRaZllteHZZMnRmWkdGMFlWOXZjbVJsY2pvNmFHTTFNV1ZoXFxcbk56QXdNelk1WWpNNE1EaHRJMk52Y21VNk9tWnRkRG82ZDNKcGRHVTZPbWhtTnpabU5EVTVNVEppTnpoaU56bGlia2R3WVhKcmFXNW5YMlxcXG54dmREbzZjbUYzWDNKM2JHOWphem82VW1GM1VuZE1iMk5yT2pwc2IyTnJYM05vWVhKbFpGOXpiRzkzT2pwb09XSXpOelEwTXpjeVkyTTBcXFxuWmpnelltOU1QR0Z1ZVdodmR6bzZabTEwT2pwSmJtUmxiblJsWkR4VVBpQmhjeUJqYjNKbE9qcG1iWFE2T2xkeWFYUmxQam82ZDNKcGRHXFxcblZmYzNSeU9qcG9ZV0ZoT0dRNFlUUXhaVEF6WldSbFluQW9kWEpzT2pwb2IzTjBPanAzY21sMFpWOXBjSFkyT2pwb09XTmtOMlptTm1ZMFxcXG5OamRpTURGa05IRThZMjl5WlRvNlptMTBPanBHYjNKdFlYUjBaWEk2T25CaFpGOW1iM0p0WVhSMFpXUmZjR0Z5ZEhNNk9tZ3hNbUV4WkRcXFxuWmpaRFUwTnprMk56YzNjaTlqYjNKbE9qcHpiR2xqWlRvNmJXVnRZMmh5T2pwdFpXMXlZMmh5T2pwb1lUUmxZVFUxWm1JME5EQXlObUUxXFxcblpITnNQR052Y21VNk9tbDBaWEk2T21Ga1lYQjBaWEp6T2pwamFHRnBiam82UTJoaGFXNDhRU3hDUGlCaGN5QmpiM0psT2pwcGRHVnlPalxcXG5wMGNtRnBkSE02T21sMFpYSmhkRzl5T2pwSmRHVnlZWFJ2Y2o0Nk9tNWxlSFE2T21nek56UTRZV1V4TnpnNVpUTTNNalV3ZEVSb1lYTm9cXFxuWW5KdmQyNDZPbkpoZHpvNlVtRjNWR0ZpYkdWSmJtNWxjanhCUGpvNmNtVm9ZWE5vWDJsdVgzQnNZV05sT2pwb05XWXdNRGxsTVRKa1kyXFxcbkZpT1RJeFpYVktjR0Z5YTJsdVoxOXNiM1E2T25KaGQxOXlkMnh2WTJzNk9sSmhkMUozVEc5amF6bzZiRzlqYTE5bGVHTnNkWE5wZG1WZlxcXG5jMnh2ZHpvNmFEZzFPRGMxWmpFM01XTmpZbUl3TmpsMk1HTnZjbVU2T25Oc2FXTmxPanB6YjNKME9qcHRaWEpuWlY5emIzSjBPanBvTmpcXFxuazBPVEF3TnpJMlpHWXlPV00xTjNkRlpHVnViMTlqWVdOb1pWOWthWEk2T21OdmJXMXZiam82WW1GelpWOTFjbXhmZEc5ZlptbHNaVzVoXFxcbmJXVmZjR0Z5ZEhNNk9tZ3dOamcxT1dZMFpXWmhZV1kxWWpOaWVFVnpaWEprWlY5cWMyOXVPanBrWlRvNlJHVnpaWEpwWVd4cGVtVnlQRlxcXG5JK09qcHdaV1ZyWDJsdWRtRnNhV1JmZEhsd1pUbzZhRE13T0RKaE1UWTFabVUwWlRBeU1qaDVOWEpwYm1jNk9tUnBaMlZ6ZERvNlFteHZcXFxuWTJ0RGIyNTBaWGgwT2pwbWFXNXBjMmc2T21nMk56RTVNak0zT0dGaE1EWXhNemRpZWxNOFkyOXlaVG82Wm0xME9qcGlkV2xzWkdWeWN6XFxcbm82VUdGa1FXUmhjSFJsY2lCaGN5QmpiM0psT2pwbWJYUTZPbGR5YVhSbFBqbzZkM0pwZEdWZmMzUnlPanBvTVRaaE5EZGtNMlV5TVdRM1xcXG5OVEl5Wm50b1BDWnRkWFFnYzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BpQmhjeUJ6WlhKa1pUbzZaR1U2T2tcXFxuUmxjMlZ5YVdGc2FYcGxjajQ2T21SbGMyVnlhV0ZzYVhwbFgzTjBjblZqZERvNmFHUmlNRFF4WkdZeFpUSTFObVkwTldKOFFXUnNiV0ZzXFxcbmJHOWpPanBrYkcxaGJHeHZZem82Ukd4dFlXeHNiMk04UVQ0Nk9tUnBjM0J2YzJWZlkyaDFibXM2T21nNU5XSXdPREEzWlRRMU1EWmxZalxcXG5jMmZVQmtaVzV2WDIxbFpHbGhYM1I1Y0dVNk9rMWxaR2xoVkhsd1pUbzZabkp2YlY5amIyNTBaVzUwWDNSNWNHVTZPbWhrT0RNNU5UQm1cXFxuTm1JNFpHVmpOV0ZrZmt4d1lYSnJhVzVuWDJ4dmREbzZjbUYzWDNKM2JHOWphem82VW1GM1VuZE1iMk5yT2pwMWJteHZZMnRmWlhoamJIXFxcblZ6YVhabFgzTnNiM2M2T21nellXRXpaREkyTVdSa09ESm1NVEprZnk1cFpHNWhPanB3ZFc1NVkyOWtaVG82Wlc1amIyUmxYMmx1ZEc4NlxcXG5PbWczTlRaa05UazJaREl4WTJaak56ZzJnQUU2WkdWdWIxOWpZV05vWlY5a2FYSTZPbWRzYjJKaGJEbzZkWEpzWDNSdlgyWnBiR1Z1WVdcXFxuMWxPanBvT1dNeU9EbGpOREEzT0RrNU16azRaSUVCUTNOMFpEbzZjR0YwYURvNlEyOXRjRzl1Wlc1MGN6bzZjR0Z5YzJWZmJtVjRkRjlqXFxcbmIyMXdiMjVsYm5SZlltRmphem82YURrMlpHVXhaVGxrTlRSak16SmlOeldDQVVCa1pXNXZYMjFsWkdsaFgzUjVjR1U2T2sxbFpHbGhWSFxcXG5sd1pUbzZabkp2YlY5amIyNTBaVzUwWDNSNWNHVTZPbWhoWXpBeU9ERmxNRE5tWTJSa09URmxnd0YwUEdSbGJtOWZZMkZqYUdWZlpHbHlcXFxuT2pwc2IyTmhiRG82VEc5allXeElkSFJ3UTJGamFHVThSVzUyUGlCaGN5QmtaVzV2WDJOaFkyaGxYMlJwY2pvNlkyRmphR1U2T2toMGRIXFxcbkJEWVdOb1pUNDZPbkpsWVdSZlptbHNaVjlpZVhSbGN6bzZhR0ZpTXpkaFlUZzBaVEZoWVdZNVkyU0VBV0U4WTI5eVpUbzZjM1J5T2pwc1xcXG5iM056ZVRvNlZYUm1PRU5vZFc1cmN5QmhjeUJqYjNKbE9qcHBkR1Z5T2pwMGNtRnBkSE02T21sMFpYSmhkRzl5T2pwSmRHVnlZWFJ2Y2pcXFxuNDZPbTVsZUhRNk9tZ3dZelExWlRFNE5tTTRZVFU1WlRBemhRRkdjMlZ5WkdWZmQyRnpiVjlpYVc1a1oyVnVPanBrWlRvNlJHVnpaWEpwXFxcbllXeHBlbVZ5T2pwcGJuWmhiR2xrWDNSNWNHVmZPanBvWkRCaU1URTNaakEyTkdVek56azVNSVlCWFR4cGJtUmxlRzFoY0RvNmMyVnlaR1xcXG5VNk9rbHVaR1Y0VFdGd1ZtbHphWFJ2Y2p4TExGWXNVejRnWVhNZ2MyVnlaR1U2T21SbE9qcFdhWE5wZEc5eVBqbzZkbWx6YVhSZmJXRndcXFxuT2pwb016Z3dNekV5WWpJNVlqRXlPRGc1WW9jQk4yUmxibTlmYldWa2FXRmZkSGx3WlRvNmJXRndYM1I1Y0dWelkzSnBjSFJmYkdsclpUXFxcbm82YUdJM056YzFNMkkxTVdRNFl6RXpZaldJQVROaGJHeHZZem82Wm0xME9qcG1iM0p0WVhRNk9tWnZjbTFoZEY5cGJtNWxjam82YURrelxcXG5ZekkwWkdaaU1tSTJNVE13WkdHSkFWZzhjMlZ5WkdWZmFuTnZiam82WkdVNk9rMWhjRUZqWTJWemN6eFNQaUJoY3lCelpYSmtaVG82WkdcXFxuVTZPazFoY0VGalkyVnpjejQ2T201bGVIUmZhMlY1WDNObFpXUTZPbWd5WlROaU5UTmxOems1TkdSaE16WTVpZ0ZHUEhOMFpEbzZjR0YwXFxcbmFEbzZRMjl0Y0c5dVpXNTBjeUJoY3lCamIzSmxPanBqYlhBNk9sQmhjblJwWVd4RmNUNDZPbVZ4T2pwb1lqRm1ZbUZqWVRRNFpHWmpNalxcXG5NM09Jc0JNWFZ5YkRvNmNHRnljMlZ5T2pwUVlYSnpaWEk2T21acGJHVmZhRzl6ZERvNmFERmhPRFk0T0RVNFpEUmlZV0ZrWWpLTUFVWmhcXFxuYm5sb2IzYzZPbVp0ZERvNlBHbHRjR3dnWVc1NWFHOTNPanBsY25KdmNqbzZSWEp5YjNKSmJYQnNQam82WkdWaWRXYzZPbWczTTJaalpXXFxcbk0zTmpreFpXSXhNMlkyalFGVlBITmxjbVJsWDJwemIyNDZPbkpsWVdRNk9sTnNhV05sVW1WaFpDQmhjeUJ6WlhKa1pWOXFjMjl1T2pweVxcXG5aV0ZrT2pwU1pXRmtQam82Y0dGeWMyVmZjM1J5T2pwb1pXSTBZMkZrWm1ZME1XWXpZalF6Wkk0Qk9HUmxibTlmYldWa2FXRmZkSGx3WlRcXFxubzZUV1ZrYVdGVWVYQmxPanBtY205dFgzQmhkR2c2T21nNU5EQTVPRGt6TXpRNFpEUTBNall5andGWVBITmxjbVJsWDJwemIyNDZPbVJsXFxcbk9qcE5ZWEJCWTJObGMzTThVajRnWVhNZ2MyVnlaR1U2T21SbE9qcE5ZWEJCWTJObGMzTStPanB1WlhoMFgydGxlVjl6WldWa09qcG9OalxcXG5KaFpHRXhORFkzWWpneFkyUmpOSkFCV0R4elpYSmtaVjlxYzI5dU9qcGtaVG82VFdGd1FXTmpaWE56UEZJK0lHRnpJSE5sY21SbE9qcGtcXFxuWlRvNlRXRndRV05qWlhOelBqbzZibVY0ZEY5clpYbGZjMlZsWkRvNmFEZGhObUppT1RNeU1EazNZbVpqTVdXUkFVQm9ZWE5vWW5KdmQyXFxcbjQ2T25KaGR6bzZVbUYzVkdGaWJHVThWQ3hCUGpvNmNtVnpaWEoyWlY5eVpXaGhjMmc2T21nM09EUTROamN3TVdVM05UaG1Zekpta2dGb1xcXG5QR1JsYm05ZlkyRmphR1ZmWkdseU9qcHNiMk5oYkRvNlRHOWpZV3hJZEhSd1EyRmphR1U4Ulc1MlBpQmhjeUJrWlc1dlgyTmhZMmhsWDJcXFxuUnBjam82WTJGamFHVTZPa2gwZEhCRFlXTm9aVDQ2T25ObGREbzZhRE13TlRsa04ySmtNR1JsTWpVelltYVRBVWRrWlc1dlgyTmhZMmhsXFxcblgyUnBjam82ZDJGemJUbzZSMnh2WW1Gc1NIUjBjRU5oWTJobE9qcG5aWFJmWm1sc1pWOTBaWGgwT2pwb1pqRmxNelkzT0dVeU1EbGxPVFxcXG5oaE01UUJPMk52Y21VNk9uTjBjam82Y0dGMGRHVnliam82VkhkdlYyRjVVMlZoY21Ob1pYSTZPbTVsZUhRNk9taGpNbU14WXpFMU1XSTJcXFxuWmpkak5EZzVsUUU4ZFc1cFkyOWtaVjl1YjNKdFlXeHBlbUYwYVc5dU9qcHViM0p0WVd4cGVtVTZPbU52YlhCdmMyVTZPbWd6WmpJeU5UXFxcbmxrTlRGalpqUXlZVEZrbGdFL2MyVnlaR1ZmYW5OdmJqbzZjMlZ5T2pwbWIzSnRZWFJmWlhOallYQmxaRjl6ZEhKZlkyOXVkR1Z1ZEhNNlxcXG5PbWczTVRCa09EYzBPVGN5TUdWak5UVTNsd0UwYVdSdVlUbzZkWFJ6TkRZNk9rbGtibUU2T25SdlgyRnpZMmxwWDJsdWJtVnlPanBvTm1cXFxuUTFPV0ZpWkdZMk9HUmpNMlF5T1pnQk5HTnZjbVU2T21oaGMyZzZPa0oxYVd4a1NHRnphR1Z5T2pwb1lYTm9YMjl1WlRvNmFEWXhZVFZpXFxcbk1UWmlaR0kwTm1aaU5tT1pBVjQ4WTI5eVpUbzZjM1J5T2pwcGRHVnlPanBUY0d4cGREeFFQaUJoY3lCamIzSmxPanBwZEdWeU9qcDBjbVxcXG5GcGRITTZPbWwwWlhKaGRHOXlPanBKZEdWeVlYUnZjajQ2T201bGVIUTZPbWcxWkRGbE1USTJaRGs1WVRCaU5UWTNtZ0ZCYzJWeVpHVmZcXFxuYW5OdmJqbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbGNqeFNQam82Y0dGeWMyVmZhVzUwWldkbGNqbzZhR1UxWXpNd1pXWXpZekl5WXpFeVlUXFxcbmliQVVGelpYSmtaVjlxYzI5dU9qcGtaVG82UkdWelpYSnBZV3hwZW1WeVBGSStPanB3WVhKelpWOXBiblJsWjJWeU9qcG9PRFJsWlRWbVxcXG5aalUxTWpnNVpXRTVOWndCTUhWeWJEbzZhRzl6ZERvNlNHOXpkRG82Y0dGeWMyVmZiM0JoY1hWbE9qcG9OamMwWkdaa016RXpaV1F6WW1cXFxuTXpacDBCWFR4cGJtUmxlRzFoY0RvNmMyVnlaR1U2T2tsdVpHVjRUV0Z3Vm1semFYUnZjanhMTEZZc1V6NGdZWE1nYzJWeVpHVTZPbVJsXFxcbk9qcFdhWE5wZEc5eVBqbzZkbWx6YVhSZmJXRndPanBvT0dOaU5qZ3lNbU5tTkdFNU9XUmtNcDRCTG5WeWJEbzZhRzl6ZERvNmNHRnljMlxcXG5WZmFYQjJORzUxYldKbGNqbzZhREZrT1ROa1pUUmpaRFUyTldObE56T2ZBV3c4WTI5eVpUbzZhWFJsY2pvNllXUmhjSFJsY25NNk9tTm9cXFxuWVdsdU9qcERhR0ZwYmp4QkxFSStJR0Z6SUdOdmNtVTZPbWwwWlhJNk9uUnlZV2wwY3pvNmFYUmxjbUYwYjNJNk9rbDBaWEpoZEc5eVBqXFxcbm82Wm05c1pEbzZhR1poWXpjNVpHSXdORFl4TVdGak0yYWdBVUp6WlhKa1pWOXFjMjl1T2pwa1pUbzZSR1Z6WlhKcFlXeHBlbVZ5UEZJK1xcXG5PanB3WVhKelpWOWxlSEJ2Ym1WdWREbzZhRFEyT0RZek1qVmlZamsyTURnMlpEV2hBVmc4YzJWeVpHVmZhbk52YmpvNlpHVTZPazFoY0VcXFxuRmpZMlZ6Y3p4U1BpQmhjeUJ6WlhKa1pUbzZaR1U2T2sxaGNFRmpZMlZ6Y3o0Nk9tNWxlSFJmYTJWNVgzTmxaV1E2T21nMFl6Y3pPREprXFxcbk56RmlaREZpTldKbW9nRkFhR0Z6YUdKeWIzZHVPanB5WVhjNk9sSmhkMVJoWW14bFBGUXNRVDQ2T25KbGMyVnlkbVZmY21Wb1lYTm9PalxcXG5wb05HTmlaR1UxWkRrME1EZGpPRFEzTUtNQlFuTmxjbVJsWDJwemIyNDZPbVJsT2pwRVpYTmxjbWxoYkdsNlpYSThVajQ2T25CaGNuTmxcXFxuWDJWNGNHOXVaVzUwT2pwb1ltSmxOell3Wmpkak4yVmpORGRsTUtRQldEeHpaWEprWlY5cWMyOXVPanBrWlRvNlRXRndRV05qWlhOelBGXFxcbkkrSUdGeklITmxjbVJsT2pwa1pUbzZUV0Z3UVdOalpYTnpQam82Ym1WNGRGOXJaWGxmYzJWbFpEbzZhRFppTm1WbFpURTNPVFUwWWpoalxcXG5ZalNsQVZ3OGMyVnlaR1ZmYW5OdmJqbzZaR1U2T2xObGNVRmpZMlZ6Y3p4U1BpQmhjeUJ6WlhKa1pUbzZaR1U2T2xObGNVRmpZMlZ6Y3pcXFxuNDZPbTVsZUhSZlpXeGxiV1Z1ZEY5elpXVmtPanBvTkdRMVpqWXhNalF4TkdJME0yUTNPS1lCUUdoaGMyaGljbTkzYmpvNmNtRjNPanBTXFxcbllYZFVZV0pzWlR4VUxFRStPanB5WlhObGNuWmxYM0psYUdGemFEbzZhR0UwTXpSa05qSXdOakkwTXprMVpUYW5BVUJvWVhOb1luSnZkMlxcXG40Nk9uSmhkem82VW1GM1ZHRmliR1U4VkN4QlBqbzZjbVZ6WlhKMlpWOXlaV2hoYzJnNk9taGtNVGMwT0RjM01tTXhZelZoTVRjeXFBRkJcXFxuY0dGeWEybHVaMTlzYjNSZlkyOXlaVG82Y0dGeWEybHVaMTlzYjNRNk9sUm9jbVZoWkVSaGRHRTZPbTVsZHpvNmFHVTROV1ZsTjJGbFpXXFxcblprWldWa1lqZXBBVVprWlc1dlgyTmhZMmhsWDJScGNqbzZkMkZ6YlRvNlRHOWpZV3hJZEhSd1EyRmphR1U2T21kbGRGOW1hV3hsWDNSbFxcXG5lSFE2T21nek1UTTRZMk01TkRBd05tUXpOMlF3cWdGWVBITmxjbVJsWDJwemIyNDZPbVJsT2pwTllYQkJZMk5sYzNNOFVqNGdZWE1nYzJcXFxuVnlaR1U2T21SbE9qcE5ZWEJCWTJObGMzTStPanB1WlhoMFgydGxlVjl6WldWa09qcG9ZekpsWWpkall6SmxNVFkzWW1ObU42c0JPbU52XFxcbmNtVTZPbk4wY2pvNmFYUmxjam82VTNCc2FYUkpiblJsY201aGJEeFFQam82Ym1WNGREbzZhRGM1TmpsbE9UVTJOekV6WTJVelpXT3NBV1xcXG5VOEptMTFkQ0J6WlhKa1pWOXFjMjl1T2pwa1pUbzZSR1Z6WlhKcFlXeHBlbVZ5UEZJK0lHRnpJSE5sY21SbE9qcGtaVG82UkdWelpYSnBcXFxuWVd4cGVtVnlQam82WkdWelpYSnBZV3hwZW1WZmJXRndPanBvTUdReU1qWTJNVEUzWWpabU5ETmxNSzBCWlR3bWJYVjBJSE5sY21SbFgyXFxcbnB6YjI0Nk9tUmxPanBFWlhObGNtbGhiR2w2WlhJOFVqNGdZWE1nYzJWeVpHVTZPbVJsT2pwRVpYTmxjbWxoYkdsNlpYSStPanBrWlhObFxcXG5jbWxoYkdsNlpWOXRZWEE2T21nME1EUmhPR1JsT1RWa016SmlaREkxcmdGbFBDWnRkWFFnYzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJcXFxuVnlhV0ZzYVhwbGNqeFNQaUJoY3lCelpYSmtaVG82WkdVNk9rUmxjMlZ5YVdGc2FYcGxjajQ2T21SbGMyVnlhV0ZzYVhwbFgyMWhjRG82XFxcbmFHVTFOREU1T1RGa01tTmhNR1ZpWTJTdkFWZzhjMlZ5WkdWZmFuTnZiam82WkdVNk9rMWhjRUZqWTJWemN6eFNQaUJoY3lCelpYSmtaVFxcXG5vNlpHVTZPazFoY0VGalkyVnpjejQ2T201bGVIUmZhMlY1WDNObFpXUTZPbWcwTW1ObE5qSmlOek0wWVdJMVl6QTVzQUZNUEdOdmNtVTZcXFxuT201bGREbzZhWEJmWVdSa2NqbzZTWEIyTkVGa1pISWdZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPanBvWWpaaE9UXFxcblZqWlRjek5XTXlObU0yTWJFQlhUeHBibVJsZUcxaGNEbzZjMlZ5WkdVNk9rbHVaR1Y0VFdGd1ZtbHphWFJ2Y2p4TExGWXNVejRnWVhNZ1xcXG5jMlZ5WkdVNk9tUmxPanBXYVhOcGRHOXlQam82ZG1semFYUmZiV0Z3T2pwb05qVmxPV0kxTXpobVl6WTNaV05rT2JJQk9XTnZjbVU2T21cXFxuOXdjem82Wm5WdVkzUnBiMjQ2T2tadVQyNWpaVG82WTJGc2JGOXZibU5sT2pwb1l6RXlaR0kzTURReU5qUmhORGczTXJNQk9XUmxibTlmXFxcblkyRmphR1ZmWkdseU9qcG5iRzlpWVd3Nk9uZHlhWFJsWDIxbGRHRmtZWFJoT2pwb1kyVTFaRFUwTldRMU9UbGpOemRpWnJRQk1HTnZjbVxcXG5VNk9uTnNhV05sT2pwemIzSjBPanB0WlhKblpWOXpiM0owT2pwb1lXUmtaV1V5WkRnNU1HTTRZV05sTmJVQlFEeHpaWEprWlRvNlpHVTZcXFxuT2s5dVpVOW1JR0Z6SUdOdmNtVTZPbVp0ZERvNlJHbHpjR3hoZVQ0Nk9tWnRkRG82YURSa1pEVmtPVEppWXpNek56azRZalcyQVZKaGJuXFxcbmxvYjNjNk9tVnljbTl5T2pvOGFXMXdiQ0JqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGtnWm05eUlHRnVlV2h2ZHpvNlJYSnliM0krT2pwbVxcXG5iWFE2T21nMVptSXdNVFprTXpRME5qWm1NRFU1dHdGWVkyOXlaVG82Ym5WdE9qcG1iSFF5WkdWak9qcHpkSEpoZEdWbmVUbzZaM0pwYzNcXFxuVTZPbVp2Y20xaGRGOWxlR0ZqZEY5dmNIUTZPbkJ2YzNOcFlteDVYM0p2ZFc1a09qcG9NV1k0WTJRME1ETTJNakkyT0RobE9MZ0JYRHh6XFxcblpYSmtaVjlxYzI5dU9qcGtaVG82VTJWeFFXTmpaWE56UEZJK0lHRnpJSE5sY21SbE9qcGtaVG82VTJWeFFXTmpaWE56UGpvNmJtVjRkRlxcXG45bGJHVnRaVzUwWDNObFpXUTZPbWc0TXpoaFpXUTFORFUyTldRMk56YzR1UUUyWTI5eVpUbzZjM1J5T2pvOGFXMXdiQ0J6ZEhJK09qcDBcXFxuY21sdFgyMWhkR05vWlhNNk9taGhOREpsWm1Vek5URTFaVFppT0dSbHVnRmNQSE5sY21SbFgycHpiMjQ2T21SbE9qcFRaWEZCWTJObGMzXFxcbk04VWo0Z1lYTWdjMlZ5WkdVNk9tUmxPanBUWlhGQlkyTmxjM00rT2pwdVpYaDBYMlZzWlcxbGJuUmZjMlZsWkRvNmFERmtNemszTkRZMVxcXG5PVEJrWXpFMFpqaTdBVnc4YzJWeVpHVmZhbk52YmpvNlpHVTZPbE5sY1VGalkyVnpjenhTUGlCaGN5QnpaWEprWlRvNlpHVTZPbE5sY1VcXFxuRmpZMlZ6Y3o0Nk9tNWxlSFJmWld4bGJXVnVkRjl6WldWa09qcG9ORGxqTlRZMll6QmtPV0pqWmpKbU9Md0JYRHh6WlhKa1pWOXFjMjl1XFxcbk9qcGtaVG82VTJWeFFXTmpaWE56UEZJK0lHRnpJSE5sY21SbE9qcGtaVG82VTJWeFFXTmpaWE56UGpvNmJtVjRkRjlsYkdWdFpXNTBYM1xcXG5ObFpXUTZPbWhtWVRRMVpqTTRaakl5T1Rjd05UZzV2UUU0WTI5eVpUbzZiblZ0T2pwbWJIUXlaR1ZqT2pwa2FXZHBkSE5mZEc5ZlpHVmpcXFxuWDNOMGNqbzZhRFZrTXpZeU56VmhNREJsTldReE9USytBVHhrYkcxaGJHeHZZem82Wkd4dFlXeHNiMk02T2tSc2JXRnNiRzlqUEVFK09qXFxcbnB0WlcxaGJHbG5iam82YURWak56aGtaV1JqWm1SaE16VTNObUsvQVRWemRHUTZPbkJoZEdnNk9sQmhkR2hDZFdZNk9sOXpaWFJmWlhoMFxcXG5aVzV6YVc5dU9qcG9abU01WVdKalpUazBNakJsTTJNMU9NQUJYRHh6WlhKa1pWOXFjMjl1T2pwa1pUbzZVMlZ4UVdOalpYTnpQRkkrSUdcXFxuRnpJSE5sY21SbE9qcGtaVG82VTJWeFFXTmpaWE56UGpvNmJtVjRkRjlsYkdWdFpXNTBYM05sWldRNk9tZzNaVEk0TWpjM1pHWXdaakl3XFxcblpHWXh3UUUzWTI5eVpUbzZjR0Z1YVdOcmFXNW5PanBoYzNObGNuUmZabUZwYkdWa1gybHVibVZ5T2pwb01tWmtaR0psWkRWaU9XRXlPR1xcXG5Fd01jSUJObk5sY21SbE9qcHpaWEk2T2xObGNtbGhiR2w2WlhJNk9tTnZiR3hsWTNSZmJXRndPanBvT0dOa01URXdNakEwTjJObFlURXlcXFxuTmNNQlJuTmxjbVJsWDJwemIyNDZPbVJsT2pwRVpYTmxjbWxoYkdsNlpYSThVajQ2T21SbGMyVnlhV0ZzYVhwbFgyNTFiV0psY2pvNmFEXFxcbmN6WXpFM05HVTVZVGs1TmpRM01HTEVBVnc4YzJWeVpHVmZhbk52YmpvNlpHVTZPbE5sY1VGalkyVnpjenhTUGlCaGN5QnpaWEprWlRvNlxcXG5aR1U2T2xObGNVRmpZMlZ6Y3o0Nk9tNWxlSFJmWld4bGJXVnVkRjl6WldWa09qcG9aamMxTVRobE4yUTFOMlk0WTJNd1k4VUJYRHh6WlhcXFxuSmtaVjlxYzI5dU9qcGtaVG82VTJWeFFXTmpaWE56UEZJK0lHRnpJSE5sY21SbE9qcGtaVG82VTJWeFFXTmpaWE56UGpvNmJtVjRkRjlsXFxcbmJHVnRaVzUwWDNObFpXUTZPbWcwWmpReU1qRTJaRGc0WVROa04yWmh4Z0ZUUEhObGNtUmxYMnB6YjI0Nk9uSmxZV1E2T2xOMGNsSmxZV1xcXG5RZ1lYTWdjMlZ5WkdWZmFuTnZiam82Y21WaFpEbzZVbVZoWkQ0Nk9uQmhjbk5sWDNOMGNqbzZhRFprWVRGaE56RTVOMkkyTnpCbE5UREhcXFxuQVdvOFkyOXlaVG82YVhSbGNqbzZZV1JoY0hSbGNuTTZPbkpsZGpvNlVtVjJQRWsrSUdGeklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6XFxcbm82YVhSbGNtRjBiM0k2T2tsMFpYSmhkRzl5UGpvNmRISjVYMlp2YkdRNk9taG1OelUyTjJGaU5UZ3hOR1kwWkRrNXlBRkhZMjl5WlRvNlxcXG5kVzVwWTI5a1pUbzZkVzVwWTI5a1pWOWtZWFJoT2pwbmNtRndhR1Z0WlY5bGVIUmxibVE2T214dmIydDFjRG82YUdWak5tSXlaakUzTWpcXFxuVTRaamRsT0diSkFVWmpiM0psT2pwMWJtbGpiMlJsT2pwMWJtbGpiMlJsWDJSaGRHRTZPbU5oYzJWZmFXZHViM0poWW14bE9qcHNiMjlyXFxcbmRYQTZPbWhqTVdJM09UY3hOak5qT1RnMVl6VTJ5Z0U5WTI5eVpUbzZkVzVwWTI5a1pUbzZkVzVwWTI5a1pWOWtZWFJoT2pwallYTmxaRFxcXG5vNmJHOXZhM1Z3T2pwb05HUmhZbVZrTkdWa09XUTVNREkxTmNzQm5RRThjMlZ5WkdVNk9tUmxPanBwYlhCc2N6bzZQR2x0Y0d3Z2MyVnlcXFxuWkdVNk9tUmxPanBFWlhObGNtbGhiR2w2WlNCbWIzSWdjM1JrT2pwMGFXMWxPanBUZVhOMFpXMVVhVzFsUGpvNlpHVnpaWEpwWVd4cGVtXFxcblU2T2tSMWNtRjBhVzl1Vm1semFYUnZjaUJoY3lCelpYSmtaVG82WkdVNk9sWnBjMmwwYjNJK09qcDJhWE5wZEY5dFlYQTZPbWcyTVRCbFxcXG5aRFJrWW1JMFlURTFORGt5ekFFMWNtbHVaem82WkdsblpYTjBPanB6YUdFeU5UWmZabTl5YldGMFgyOTFkSEIxZERvNmFEWTFNV1U0T0dcXFxuVm1NMlpqWlRjd01tTE5BVEpqYjNKbE9qcDFibWxqYjJSbE9qcHdjbWx1ZEdGaWJHVTZPbU5vWldOck9qcG9ZMll5WVdFd05UWXdaakU0XFxcbk1UZzRZODRCUlR4emRHUTZPbWx2T2pwbGNuSnZjam82UlhKeWIzSWdZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPalxcXG5wb01XUXlOVE0wTXpNMlpEUXdaR015TmM4QlJuTmxjbVJsWDJwemIyNDZPbVJsT2pwRVpYTmxjbWxoYkdsNlpYSThVajQ2T21SbGMyVnlcXFxuYVdGc2FYcGxYMjUxYldKbGNqbzZhRE0wWlRjNE5qZGxNemRtWWpoak1UZlFBVEJ5YVc1bk9qcGthV2RsYzNRNk9rTnZiblJsZUhRNk9uXFxcblZ3WkdGMFpUbzZhR000TVRFMU56Z3lZbVpoTjJJME1XVFJBVE4xY213Nk9uQmhjbk5sY2pvNlVHRnljMlZ5T2pwd1lYSnpaVjl4ZFdWeVxcXG5lVG82YURJeE5qbGxOVEU1TVdVd1lUWmtORFBTQVdkemRHUTZPbWx2T2pwbGNuSnZjam82UEdsdGNHd2dZMjl5WlRvNlptMTBPanBFWldcXFxuSjFaeUJtYjNJZ2MzUmtPanBwYnpvNlpYSnliM0k2T25KbGNISmZkVzV3WVdOclpXUTZPbEpsY0hJK09qcG1iWFE2T21nM1l6bGtPV0V5XFxcbk5ETmlaakJtTkRndzB3RTZZMjl5WlRvNlptMTBPanBpZFdsc1pHVnljem82UkdWaWRXZFRkSEoxWTNRNk9tWnBaV3hrT2pwb01tTTFOVFxcXG5NNU9XWmtNV0poWlRWbE1kUUJQV1JsYm05ZlkyRmphR1ZmWkdseU9qcDNZWE50T2pwSGJHOWlZV3hJZEhSd1EyRmphR1U2T25ObGREbzZcXFxuYURnMk1EYzVNamd4WlRSbVlUWTBaR1BWQVR4a1pXNXZYMk5oWTJobFgyUnBjam82ZDJGemJUbzZURzlqWVd4SWRIUndRMkZqYUdVNk9uXFxcbk5sZERvNmFERm1aalUwTnpnek5tVXlOVGxrTkRmV0FVMXBibVJsZUcxaGNEbzZiV0Z3T2pwamIzSmxPanBKYm1SbGVFMWhjRU52Y21VOFxcXG5TeXhXUGpvNmMzZGhjRjl5WlcxdmRtVmZabWx1YVhOb09qcG9aR0U1WldJM1ptWmhPV0UzWkRSa05OY0JSV1JsYm05ZlkyRmphR1ZmWkdcXFxubHlPanAzWVhOdE9qcEhiRzlpWVd4SWRIUndRMkZqYUdVNk9tZGxkRjlvWldGa1pYSnpPanBvWVdZMU1EUXpPVGN4WW1ZNU16aGhNTmdCXFxcblBIVnliRG82Y0dGeWMyVnlPanBRWVhKelpYSTZPbU5vWldOclgzVnliRjlqYjJSbFgzQnZhVzUwT2pwb016TXdOakUxTUdGbE9ETmhNVFxcXG5RNFpOa0JkRHhrWlc1dlgyTmhZMmhsWDJScGNqbzZaMnh2WW1Gc09qcEhiRzlpWVd4SWRIUndRMkZqYUdVOFJXNTJQaUJoY3lCa1pXNXZcXFxuWDJOaFkyaGxYMlJwY2pvNlkyRmphR1U2T2toMGRIQkRZV05vWlQ0Nk9uSmxZV1JmYldWMFlXUmhkR0U2T21nM05tTTBNakF3TXpZd1pEXFxcbkZoTkdGazJnRTRaR1Z1YjE5allXTm9aVjlrYVhJNk9uZGhjMjA2T25WeWJGOTBiMTltYVd4bGJtRnRaVG82YURSa016ZzRNakV5WkRBeFxcXG5aVFl3WkRMYkFTTjFjbXc2T2xWeWJEbzZiWFYwWVhSbE9qcG9OR1JoTm1VMU1EVXpNR0UwWVRSaE5kd0Jnd0Z3WlhKalpXNTBYMlZ1WTJcXFxuOWthVzVuT2pvOGFXMXdiQ0JqYjNKbE9qcGpiMjUyWlhKME9qcEdjbTl0UEhCbGNtTmxiblJmWlc1amIyUnBibWM2T2xCbGNtTmxiblJFXFxcblpXTnZaR1UrSUdadmNpQmhiR3h2WXpvNlltOXljbTkzT2pwRGIzYzhXM1U0WFQ0K09qcG1jbTl0T2pwb05XUTBPREkzTnpsbE5qTTNaR1xcXG5WaU1kMEJSRHhrWVhSaFgzVnliRG82YldsdFpUbzZUV2x0WlNCaGN5QmpiM0psT2pwbWJYUTZPa1JwYzNCc1lYaytPanBtYlhRNk9tZzFcXFxuWW1NeFl6TmxNMlE1TUdNeU56Qm0zZ0U3UENadGRYUWdWeUJoY3lCamIzSmxPanBtYlhRNk9sZHlhWFJsUGpvNmQzSnBkR1ZmWTJoaGNqXFxcbm82YURRME5tVXlNRFUwTjJaaU5EUmhPRFBmQVYwOGMzUmtPanBqYjJ4c1pXTjBhVzl1Y3pvNmFHRnphRG82YldGd09qcEVaV1poZFd4MFxcXG5TR0Z6YUdWeUlHRnpJR052Y21VNk9taGhjMmc2T2toaGMyaGxjajQ2T21acGJtbHphRG82YURGaU16UXdOVEU1TURnek16aGxPV2JnQVdcXFxuRThZMjl5WlRvNmMzUnlPanB3WVhSMFpYSnVPanBEYUdGeVUyVmhjbU5vWlhJZ1lYTWdZMjl5WlRvNmMzUnlPanB3WVhSMFpYSnVPanBUXFxcblpXRnlZMmhsY2o0Nk9tNWxlSFJmYldGMFkyZzZPbWhqTldNeE5UUmtObU5oTWpVNFl6YzQ0UUV1WVd4c2IyTTZPbk4wY21sdVp6bzZVM1xcXG5SeWFXNW5PanB3ZFhOb09qcG9abVE1WWprellXRTFaakZqTW1VMk1PSUJQanh6ZEdRNk9uQmhkR2c2T2xCaGRHZ2dZWE1nWTI5eVpUbzZcXFxuYUdGemFEbzZTR0Z6YUQ0Nk9taGhjMmc2T21nME1ESTNOMlk1TldFMU5XRXpNR1F3NHdFeFkyOXRjR2xzWlhKZlluVnBiSFJwYm5NNk9tXFxcbjFsYlRvNmJXVnRZM0I1T2pwb05UVXdNMkV6WWpBeVpESXdORFUwTitRQkwyTnZjbVU2T21adGREbzZiblZ0T2pwcGJYQTZPbVp0ZEY5MVxcXG5OalE2T21nNFlXUmlOelUyT0RZNFpETXpOR0kxNVFGU1BHTnZjbVU2T25CaGJtbGpPanB3WVc1cFkxOXBibVp2T2pwUVlXNXBZMGx1Wm1cXFxuOGdZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPanBvTkdJeFpUazNNemhqTm1Vd1pXRmhOdVlCUm1OdmNtVTZPbVp0XFxcbmREbzZiblZ0T2pvOGFXMXdiQ0JqYjNKbE9qcG1iWFE2T2tSbFluVm5JR1p2Y2lCMU9ENDZPbVp0ZERvNmFEYzNNMlkzTjJVNU56Um1NbVxcXG5NeFlXVG5BVWRqYjNKbE9qcG1iWFE2T201MWJUbzZQR2x0Y0d3Z1kyOXlaVG82Wm0xME9qcEVaV0oxWnlCbWIzSWdkVFkwUGpvNlptMTBcXFxuT2pwb01UbGpabVpqTmpsaE5tWTFObUl3TU9nQkxYTjBaRG82Y0dGMGFEbzZVR0YwYURvNlptbHNaVjl6ZEdWdE9qcG9ZMk0yWmpNNU5UXFxcblJsTldNM01UbGxaZWtCUVhObGNtUmxYMnB6YjI0Nk9tUmxPanBFWlhObGNtbGhiR2w2WlhJOFVqNDZPbkJoY25ObFgyUmxZMmx0WVd3NlxcXG5PbWhtTVdWaE5qUTROVFE1WVdObU1qTTA2Z0ZCYzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BqbzZjR0Z5YzJcXFxuVmZaR1ZqYVcxaGJEbzZhRGs1WVRjeU9XVm1OMkUwWXpjd05tYnJBVEp6YldGc2JIWmxZem82VTIxaGJHeFdaV004UVQ0Nk9uUnllVjluXFxcbmNtOTNPanBvWkRJek1ERTNPREJrTkdZMk5qQmxadXdCUjJOdmNtVTZPbVp0ZERvNmJuVnRPam84YVcxd2JDQmpiM0psT2pwbWJYUTZPa1xcXG5SbFluVm5JR1p2Y2lCMU16SStPanBtYlhRNk9tZzNObVZtT1dWa1pHWTRNamRsT1RVMDdRRTRkWEpzT2pwd1lYSnpaWEk2T2xCaGNuTmxcXFxuY2pvNmNHRnljMlZmY0dGMGFGOXpkR0Z5ZERvNmFHTXpNVEU0WlRjd1pUSXpOelUyWmpIdUFTNXBaRzVoT2pwMWRITTBOam82U1dSdVlUXFxcbm82ZEc5ZllYTmphV2s2T21neE9HUXpNRE5qTUdRMU1tTTFNMlZrN3dFNWMzUmtPanB3WVhSb09qcERiMjF3YjI1bGJuUnpPanBwYm1Oc1xcXG5kV1JsWDJOMWNsOWthWEk2T21nME5tTTFZalU0WmpSbE5qZzBOV1psOEFFcGMzUmtPanB3WVhSb09qcFFZWFJvT2pwZmFtOXBiam82YUdcXFxuVXlNamhrTnpSa1l6UXhaamcwTW1UeEFVdzhjMlZ5WkdWZmFuTnZiam82WlhKeWIzSTZPa1Z5Y205eVEyOWtaU0JoY3lCamIzSmxPanBtXFxcbmJYUTZPa1JwYzNCc1lYaytPanBtYlhRNk9tZzFaR05rTVRrMk5EWXdObVU1TlRVeThnRXRjM1JrT2pwd1lYUm9PanBRWVhSb09qcGxlSFxcXG5SbGJuTnBiMjQ2T21obE4yUm1NV0V5WlRJeVkyRXpOelU1OHdGSlpHVnViMTl0WldScFlWOTBlWEJsT2pwTlpXUnBZVlI1Y0dVNk9tWnlcXFxuYjIxZmMzQmxZMmxtYVdWeVgyRnVaRjlvWldGa1pYSnpPanBvTm1Wa056VXdNREUyT1RNeFlqSXhNZlFCT1dOdmNtVTZPbVp0ZERvNlluXFxcblZwYkdSbGNuTTZPa1JsWW5WblZIVndiR1U2T21acFpXeGtPanBvWlRZM01UbGtaRFkwTTJFNFlqTXpaUFVCWkR4elpYSmtaVG82WkdVNlxcXG5PblpoYkhWbE9qcE5ZWEJFWlhObGNtbGhiR2w2WlhJOFNTeEZQaUJoY3lCelpYSmtaVG82WkdVNk9rMWhjRUZqWTJWemN6NDZPbTVsZUhcXFxuUmZaVzUwY25sZmMyVmxaRG82YUdObE56SmhNVFV5WmpOaE1EbGxaV0gyQVVaa2JHMWhiR3h2WXpvNlpHeHRZV3hzYjJNNk9rUnNiV0ZzXFxcbmJHOWpQRUUrT2pwMWJteHBibXRmYkdGeVoyVmZZMmgxYm1zNk9tZzFZalk1WkRNMVlqRTJOR1ZrWmprNDl3RnFQR1JsYm05ZlkyRmphR1xcXG5WZlpHbHlPanBuYkc5aVlXdzZPa2RzYjJKaGJFaDBkSEJEWVdOb1pUeEZiblkrSUdGeklHUmxibTlmWTJGamFHVmZaR2x5T2pwallXTm9cXFxuWlRvNlNIUjBjRU5oWTJobFBqbzZjMlYwT2pwb05EWTRaVGMyTTJZNVpUWm1OR0UxTS9nQlJHUmxibTlmWTJGamFHVmZaR2x5T2pwM1lYXFxcbk50T2pwTWIyTmhiRWgwZEhCRFlXTm9aVG82WjJWMFgyaGxZV1JsY25NNk9taGhPV1ZpWXpjM04ySXpaVE0yTUdaaCtRRkNjMlZ5WkdWZlxcXG5hbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BqbzZhV2R1YjNKbFgybHVkR1ZuWlhJNk9tZ3lNR05oTVdObFpUZGlObVpoTlRcXFxuZzArZ0ZHWkd4dFlXeHNiMk02T21Sc2JXRnNiRzlqT2pwRWJHMWhiR3h2WXp4QlBqbzZhVzV6WlhKMFgyeGhjbWRsWDJOb2RXNXJPanBvXFxcbk5XRXdaall6TkRFNE5XUXhNMkU1TXZzQk1qeGphR0Z5SUdGeklHTnZjbVU2T21adGREbzZSR1ZpZFdjK09qcG1iWFE2T21obVl6VmlObVxcXG5ZMVptWmhZbVppTUdaaC9BRTdQQ1p0ZFhRZ1Z5QmhjeUJqYjNKbE9qcG1iWFE2T2xkeWFYUmxQam82ZDNKcGRHVmZZMmhoY2pvNmFESmxcXFxuTlRobU5ERXlNVEU0TlRObE5qRDlBVFpqYjNKbE9qcHpiR2xqWlRvNmJXVnRZMmh5T2pwdFpXMWphSEpmWVd4cFoyNWxaRG82YURnNE16XFxcblE1TWpZMVlUZ3habVl3WTJUK0FWcG9ZWE5vWW5KdmQyNDZPbkpoZHpvNmFXNXVaWEk2T2xKaGQxUmhZbXhsU1c1dVpYSThRVDQ2T21acFxcXG5ibVJmYjNKZlptbHVaRjlwYm5ObGNuUmZjMnh2ZEY5cGJtNWxjam82YUdGbE56QTRNV0U0TkRRM05EZzVNamIvQVRGamIyNXpiMnhsWDJcXFxuVnljbTl5WDNCaGJtbGpYMmh2YjJzNk9taHZiMnM2T21obFpUSTRNemxsTnpOaVpETTRZelkyZ0FKQ1kyOXlaVG82YzNSeU9qcDJZV3hwXFxcblpHRjBhVzl1Y3pvNmJtVjRkRjlqYjJSbFgzQnZhVzUwWDNKbGRtVnljMlU2T21neFlqYzNNemd4T0ROaVpqazJZVE5rZ1FJNVkyOXlaVFxcXG5vNlptMTBPanBpZFdsc1pHVnljem82UkdWaWRXZEpibTVsY2pvNlpXNTBjbms2T21nellUTmtaakU1TWpnNVpUQm1NV1UxZ2dKUlkyOXlcXFxuWlRvNmJuVnRPam84YVcxd2JDQmpiM0psT2pwemRISTZPblJ5WVdsMGN6bzZSbkp2YlZOMGNpQm1iM0lnZFRNeVBqbzZabkp2YlY5emRIXFxcbkk2T21oaU9UVTFNVEkxTXpSbFpXUXhNV0UwZ3dKQ2MyVnlaR1ZmYW5OdmJqbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbGNqeFNQam82YVdkdVxcXG5iM0psWDJsdWRHVm5aWEk2T21neU9XRmlNR1ZqTURkak1UWTVaV001aEFJMlkyOXlaVG82YzNSeU9qbzhhVzF3YkNCemRISStPanAwY21cXFxubHRYMjFoZEdOb1pYTTZPbWd6WXpVME16ZzBaVEV6TVdKa09HTXdoUUpQWkdWdWIxOWpZV05vWlY5a2FYSTZPbXh2WTJGc09qcE1iMk5oXFxcbmJFTmhZMmhsVFdGdWFXWmxjM1E4Ulc1MlBqbzZibVYzWDJsdWRHVnlibUZzT2pwb05EVXpaVE0xTURNM09XSTJOek0zTW9ZQ1FIQmhjbVxcXG50cGJtZGZiRzkwWDJOdmNtVTZPbkJoY210cGJtZGZiRzkwT2pwSVlYTm9WR0ZpYkdVNk9tNWxkem82YUdNM01XTTRNelpsTkRGaFptWXdcXFxuTnppSEFrbzhZV3hzYjJNNk9uTjBjbWx1WnpvNlUzUnlhVzVuSUdGeklHTnZjbVU2T21adGREbzZWM0pwZEdVK09qcDNjbWwwWlY5amFHXFxcbkZ5T2pwb1ltTXpNRGc1TUdJd1pqUTJObVV5Tm9nQ1NqeGhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWNnWVhNZ1kyOXlaVG82Wm0xMFxcXG5PanBYY21sMFpUNDZPbmR5YVhSbFgyTm9ZWEk2T21oaVl6TXdPRGt3WWpCbU5EWTJaVEkyaVFJclkyOXlaVG82YzJ4cFkyVTZPbk52Y25cXFxuUTZPbTFsY21kbE9qcG9ZbVZsTVRnM01XUmlaREE1WlRoaE1Zb0NLMk52Y21VNk9uTnNhV05sT2pwemIzSjBPanB0WlhKblpUbzZhRFU0XFxcblpEZzBNemRrTURCbVpUaGlZVE9MQWpROFkyaGhjaUJoY3lCamIzSmxPanBtYlhRNk9rUnBjM0JzWVhrK09qcG1iWFE2T21oaE5UWmlOelxcXG5BMU1tWTJNbVU1WWpSaWpBSTZZMjl5WlRvNmMzUnlPanAyWVd4cFpHRjBhVzl1Y3pvNmJtVjRkRjlqYjJSbFgzQnZhVzUwT2pwb05XSTFcXFxuWXpobFpURXdaak5tWTJGbU9JMENPbU52Y21VNk9uTjBjam82ZG1Gc2FXUmhkR2x2Ym5NNk9tNWxlSFJmWTI5a1pWOXdiMmx1ZERvNmFEXFxcblV4WVRKbE1EYzRNalJqTkRnNU4yV09BaU5xYzE5emVYTTZPblJ5ZVY5cGRHVnlPanBvTnpsbE16STFORFpqTUdWbE9HSm1OWThDT21OdlxcXG5jbVU2T25OMGNqbzZkbUZzYVdSaGRHbHZibk02T201bGVIUmZZMjlrWlY5d2IybHVkRG82YURVMk5tUmlaVEl4TkRsalpUWTVNVGVRQWtcXFxudGtiRzFoYkd4dll6bzZaR3h0WVd4c2IyTTZPa1JzYldGc2JHOWpQRUUrT2pweVpXeGxZWE5sWDNWdWRYTmxaRjl6WldkdFpXNTBjem82XFxcbmFEQTNabU01WVRNMk9UTTNORGRoT0RLUkFpZHBkRzloT2pwQ2RXWm1aWEk2T21admNtMWhkRG82YUdObU9EUTFNRFl5TmpGbE1UZzRZalxcXG5TU0FqbGtaVzV2WDIxbFpHbGhYM1I1Y0dVNk9tMWhjRjlxYzE5c2FXdGxYMlY0ZEdWdWMybHZiam82YUdNNVpEWmlZVGs0TURSbE16ZGxcXFxuWkRXVEFrZHBibVJsZUcxaGNEbzZiV0Z3T2pwamIzSmxPanBKYm1SbGVFMWhjRU52Y21VOFN5eFdQam82WjJWMFgybHVaR1Y0WDI5bU9qXFxcbnBvTm1ZM01XRXpNbUkyTkRreE5tTmlNWlFDTm1OdmNtVTZPbk4wY2pvNlBHbHRjR3dnYzNSeVBqbzZkSEpwYlY5dFlYUmphR1Z6T2pwb1xcXG5ZVGhsTkdVd00yVXhPRFF4TnpZMk01VUNKMmwwYjJFNk9rSjFabVpsY2pvNlptOXliV0YwT2pwb09ETmlPREl6WmpSbVlUTmpZakJrTTVcXFxuWUNiVHhqYjNKbE9qcHpkSEk2T25CaGRIUmxjbTQ2T2tOb1lYSlRaV0Z5WTJobGNpQmhjeUJqYjNKbE9qcHpkSEk2T25CaGRIUmxjbTQ2XFxcbk9sSmxkbVZ5YzJWVFpXRnlZMmhsY2o0Nk9tNWxlSFJmYldGMFkyaGZZbUZqYXpvNmFHUmlZelF6WTJKbE1EWXlaRGxoWlRXWEFrdG9ZWFxcXG5Ob1luSnZkMjQ2T25KaGR6bzZVbUYzVkdGaWJHVkpibTVsY2p4QlBqbzZabUZzYkdsaWJHVmZkMmwwYUY5allYQmhZMmwwZVRvNmFHRTNcXFxuTlRWaVpqY3pOV05sTWpabE56S1lBa2RwYm1SbGVHMWhjRG82YldGd09qcGpiM0psT2pwSmJtUmxlRTFoY0VOdmNtVThTeXhXUGpvNloyXFxcblYwWDJsdVpHVjRYMjltT2pwb01XSmxOV0UxWXpjMU1qTTVaV1V5T1prQ1IybHVaR1Y0YldGd09qcHRZWEE2T21OdmNtVTZPa2x1WkdWNFxcXG5UV0Z3UTI5eVpUeExMRlkrT2pwblpYUmZhVzVrWlhoZmIyWTZPbWc0TW1VMFlUWXlNamhrWlRCbU0yTTFtZ0pZUEdsa2JtRTZPblYwY3pcXFxuUTJPanBOWVhCd1pYSWdZWE1nWTI5eVpUbzZhWFJsY2pvNmRISmhhWFJ6T2pwcGRHVnlZWFJ2Y2pvNlNYUmxjbUYwYjNJK09qcHVaWGgwXFxcbk9qcG9OVGt5WVRWbVl6Y3paRFF3TWpNME41c0NaVHdtYlhWMElITmxjbVJsWDJwemIyNDZPbVJsT2pwRVpYTmxjbWxoYkdsNlpYSThValxcXG40Z1lYTWdjMlZ5WkdVNk9tUmxPanBFWlhObGNtbGhiR2w2WlhJK09qcGtaWE5sY21saGJHbDZaVjl6ZEhJNk9tZ3lNV1ZsTTJVM09HTTFcXFxuTVdZeU1XWTFuQUk5WkdWdWIxOXRaV1JwWVY5MGVYQmxPanBOWldScFlWUjVjR1U2T21aeWIyMWZjM0JsWTJsbWFXVnlPanBvTjJZell6XFxcbmcwWmpNeFpEazJaVGxtT1owQ1VtaGhjMmhpY205M2JqbzZjbUYzT2pwcGJtNWxjam82VW1GM1ZHRmliR1ZKYm01bGNqeEJQam82Wm1Gc1xcXG5iR2xpYkdWZmQybDBhRjlqWVhCaFkybDBlVG82YURkbVkyWXhPVGcyWW1ZME9UVXdaRENlQWpkamIzSmxPanBqYUdGeU9qcHRaWFJvYjJcXFxuUnpPanBsYm1OdlpHVmZkWFJtT0Y5eVlYYzZPbWcwWXpNMU5URmhORE15WkRVeU1XUmpud0kxZFhKc09qcHdZWEp6WlhJNk9sQmhjbk5sXFxcbmNqbzZabkpoWjIxbGJuUmZiMjVzZVRvNmFEQTNaV1kxWWpjNU1XSTRNamxtWWphZ0FtVThKbTExZENCelpYSmtaVjlxYzI5dU9qcGtaVFxcXG5vNlJHVnpaWEpwWVd4cGVtVnlQRkkrSUdGeklITmxjbVJsT2pwa1pUbzZSR1Z6WlhKcFlXeHBlbVZ5UGpvNlpHVnpaWEpwWVd4cGVtVmZcXFxuYzNSeU9qcG9NVEEwWXpGbU5EQTNZbVZqT1dNMk1LRUNNMk52Y21VNk9uTnNhV05sT2pvOGFXMXdiQ0JiVkYwK09qcHlaWFpsY25ObE9qXFxcbnBvT0Rsa1lUWXhZemhrTURnNU9ESTBOYUlDTUR3bVZDQmhjeUJqYjNKbE9qcG1iWFE2T2tSbFluVm5Qam82Wm0xME9qcG9NekkwTldaa1xcXG5aRGN4TUdZNU0yTmtOS01DS1dsa2JtRTZPblYwY3pRMk9qcG1hVzVrWDJOb1lYSTZPbWd5WXpNMU9UYzBPV1l4TkRJd1pUYzBwQUk3YUdcXFxuRnphR0p5YjNkdU9qcHRZWEE2T2toaGMyaE5ZWEE4U3l4V0xGTXNRVDQ2T21sdWMyVnlkRG82YURRd04yWTJaRGMwTTJSbVlqa3lOakdsXFxcbkFqOXpkR1E2T25ONWMxOWpiMjF0YjI0Nk9uUm9jbVZoWkY5cGJtWnZPanBqZFhKeVpXNTBYM1JvY21WaFpEbzZhR000TTJGak1ETTNNelxcXG5ka01HUXlOMlNtQWl0emRHUTZPbkJoYm1samEybHVaem82YzJWMFgyaHZiMnM2T21nd1pUVTFaRGMyWkRnMk4yWmtZV1V4cHdJMWIyNWpcXFxuWlY5alpXeHNPanBwYlhBNk9tbHVhWFJwWVd4cGVtVmZiM0pmZDJGcGREbzZhR05oWXpJeU1qVmhZVGhoWkRneFpUQ29BaVoxY213Nk9sXFxcblZ5YkRvNmMyVjBYM0YxWlhKNU9qcG9abVV3TVdaa05UUmtORFJtWlRFMk42a0NaRHh3WlhKalpXNTBYMlZ1WTI5a2FXNW5PanBRWlhKalxcXG5aVzUwUlc1amIyUmxJR0Z6SUdOdmNtVTZPbWwwWlhJNk9uUnlZV2wwY3pvNmFYUmxjbUYwYjNJNk9rbDBaWEpoZEc5eVBqbzZibVY0ZERcXFxubzZhR1EwTlRVM01EYzBNMkk1WkdNeVpUYXFBanM4Sm0xMWRDQlhJR0Z6SUdOdmNtVTZPbVp0ZERvNlYzSnBkR1UrT2pwM2NtbDBaVjlqXFxcbmFHRnlPanBvTkdWalpUUXdOams0WXpVeE5qaGlaYXNDZFR4amIzSmxPanB6ZEhJNk9tbDBaWEk2T2tOb1lYSkpibVJwWTJWeklHRnpJR1xcXG5OdmNtVTZPbWwwWlhJNk9uUnlZV2wwY3pvNlpHOTFZbXhsWDJWdVpHVmtPanBFYjNWaWJHVkZibVJsWkVsMFpYSmhkRzl5UGpvNmJtVjRcXFxuZEY5aVlXTnJPanBvWkROa01tUTNOVFV3Wm1FMU1qZzFaS3dDUUhWeWJEbzZjR0Z5YzJWeU9qcFFZWEp6WlhJNk9uQmhjbk5sWDNGMVpYXFxcbko1WDJGdVpGOW1jbUZuYldWdWREbzZhR0prTldNd00yRmhNbVE0Wm1ObE9EZXRBanR6WlhKa1pWOXFjMjl1T2pwa1pUbzZSR1Z6WlhKcFxcXG5ZV3hwZW1WeVBGSStPanBsYm1SZmMyVnhPanBvT1dVMk9EbGtOVGd6WkRVeVltUTBONjRDblFFOGMyVnlaR1U2T21SbE9qcHBiWEJzY3pcXFxubzZQR2x0Y0d3Z2MyVnlaR1U2T21SbE9qcEVaWE5sY21saGJHbDZaU0JtYjNJZ2MzUmtPanAwYVcxbE9qcFRlWE4wWlcxVWFXMWxQam82XFxcblpHVnpaWEpwWVd4cGVtVTZPa1IxY21GMGFXOXVWbWx6YVhSdmNpQmhjeUJ6WlhKa1pUbzZaR1U2T2xacGMybDBiM0krT2pwMmFYTnBkRlxcXG45elpYRTZPbWcyTnpObE9UUXdaR1l4TlRRNE5EYzByd0pvUEhObGNtUmxYM2RoYzIxZlltbHVaR2RsYmpvNmMyVnlPanBOWVhCVFpYSnBcXFxuWVd4cGVtVnlJR0Z6SUhObGNtUmxPanB6WlhJNk9sTmxjbWxoYkdsNlpVMWhjRDQ2T25ObGNtbGhiR2w2WlY5MllXeDFaVG82YURJME56XFxcbkV4WkRWa09ETTVaamxqTW1hd0FtczhaR1Z1YjE5allXTm9aVjlrYVhJNk9uZGhjMjA2T2xkaGMyMUZibllnWVhNZ1pHVnViMTlqWVdOb1xcXG5aVjlrYVhJNk9tTnZiVzF2YmpvNlJHVnViME5oWTJobFJXNTJQam82Y21WaFpGOW1hV3hsWDJKNWRHVnpPanBvT1RkaU5qZzRabVZqWmpcXFxuUm1NMkV4WWJFQ08zTmxjbVJsWDJwemIyNDZPbVJsT2pwRVpYTmxjbWxoYkdsNlpYSThVajQ2T21WdVpGOXpaWEU2T21nMk5XTTBObUprXFxcbk1EUmlPVFExTW1WbXNnSkZjR0Z5YTJsdVoxOXNiM1JmWTI5eVpUbzZkMjl5WkY5c2IyTnJPanBYYjNKa1RHOWphem82ZFc1c2IyTnJYM1xcXG5Oc2IzYzZPbWc0WWpGa05XTm1Oekk0TXpka01Ea3dzd0l3YVdSdVlUbzZkWFJ6TkRZNk9rTnZibVpwWnpvNmRHOWZZWE5qYVdrNk9taGlcXFxuTjJNNU1XRXpPRFUxTmpFMll6RTR0QUl2WTI5eVpUbzZabTEwT2pwWGNtbDBaVG82ZDNKcGRHVmZZMmhoY2pvNmFHSmpNMkl3T0RWaE0yXFxcbkpqTVRVNFlXSzFBamxqYjNKbE9qcDFibWxqYjJSbE9qcHdjbWx1ZEdGaWJHVTZPbWx6WDNCeWFXNTBZV0pzWlRvNmFHRXhNVEJpWldOaFxcXG5NMkZrWWpObVkyVzJBbXc4WTI5eVpUbzZhWFJsY2pvNllXUmhjSFJsY25NNk9tMWhjRG82VFdGd1BFa3NSajRnWVhNZ1kyOXlaVG82YVhcXFxuUmxjam82ZEhKaGFYUnpPanBwZEdWeVlYUnZjam82U1hSbGNtRjBiM0krT2pwMGNubGZabTlzWkRvNmFESmxaak16Tm1FM01ESTVORGRoXFxcblpUSzNBa3c4WTI5eVpUbzZhR0Z6YURvNmMybHdPanBJWVhOb1pYSThVejRnWVhNZ1kyOXlaVG82YUdGemFEbzZTR0Z6YUdWeVBqbzZkM1xcXG5KcGRHVTZPbWhsTm1Gak1qVTNZMlJpTVRJeFpqTmx1QUpNUEdOdmNtVTZPbWhoYzJnNk9uTnBjRG82U0dGemFHVnlQRk0rSUdGeklHTnZcXFxuY21VNk9taGhjMmc2T2toaGMyaGxjajQ2T25keWFYUmxPanBvWTJVelkyRmhPVEZpT1RSa09Ea3hPYmtDTm1OdmNtVTZPbk4wY2pvNlBHXFxcbmx0Y0d3Z2MzUnlQam82ZEhKcGJWOXRZWFJqYUdWek9qcG9aRGxsWkdabE5HUTROMk5rWlRGaE5ib0NOSFZ5YkRvNmNHRnljMlZ5T2pwUVxcXG5ZWEp6WlhJNk9uQmhjbk5sWDNOamFHVnRaVG82YURnellXWmlaalExWXpWaVlUQTNZV083QWtZOGMyVnlaR1ZmYW5OdmJqbzZaWEp5YjNcXFxuSTZPa1Z5Y205eUlHRnpJR052Y21VNk9tWnRkRG82UkdWaWRXYytPanBtYlhRNk9tZzVORE15TWpkaE1XSXlORGsyWXpSbHZBSTRjM1JrXFxcbk9qcDBhVzFsT2pwVGVYTjBaVzFVYVcxbE9qcGtkWEpoZEdsdmJsOXphVzVqWlRvNmFHRmhNems0TURCak1tRTNZakppT1dLOUFtZzhjM1xcXG5Sa09qcHdZVzVwWTJ0cGJtYzZPbUpsWjJsdVgzQmhibWxqWDJoaGJtUnNaWEk2T2xCaGJtbGpVR0Y1Ykc5aFpDQmhjeUJqYjNKbE9qcHdcXFxuWVc1cFl6bzZRbTk0VFdWVmNENDZPblJoYTJWZlltOTRPanBvWm1ObU1HRmpPR0U1TkRneVkyRmtNTDRDUUhObGNtUmxYMnB6YjI0Nk9tXFxcblJsT2pwRVpYTmxjbWxoYkdsNlpYSThVajQ2T25CaGNuTmxYMjUxYldKbGNqbzZhRFUxTXpaak16UmpPR1poTURRNVl6YS9Ba0J6WlhKa1xcXG5aVjlxYzI5dU9qcGtaVG82UkdWelpYSnBZV3hwZW1WeVBGSStPanB3WVhKelpWOXVkVzFpWlhJNk9tZzNNalJqT1RrNU5qWTBOR0l6TnpcXFxuaGh3QUpkUEhObGNtUmxYMnB6YjI0Nk9uSmxZV1E2T2xOc2FXTmxVbVZoWkNCaGN5QnpaWEprWlY5cWMyOXVPanB5WldGa09qcFNaV0ZrXFxcblBqbzZaR1ZqYjJSbFgyaGxlRjlsYzJOaGNHVTZPbWhsWkRKak5HVmtaR1V4WkdVMFlqSTV3UUpGWTI5eVpUbzZkVzVwWTI5a1pUbzZkV1xcXG41cFkyOWtaVjlrWVhSaE9qcGpiMjUyWlhKemFXOXVjem82ZEc5ZmJHOTNaWEk2T21nNE1HTXpOelprT1dFeFlUUXhOemszd2dKd1BHRnNcXFxuYkc5ak9qcDJaV002T2xabFl6eFVQaUJoY3lCaGJHeHZZem82ZG1Wak9qcHpjR1ZqWDJaeWIyMWZhWFJsY2w5dVpYTjBaV1E2T2xOd1pXXFxcbk5HY205dFNYUmxjazVsYzNSbFpEeFVMRWsrUGpvNlpuSnZiVjlwZEdWeU9qcG9NREZoWm1aalltRmpNMlprT0RWaE1jTUNRM05sY21SbFxcXG5YMnB6YjI0Nk9tUmxPanBFWlhObGNtbGhiR2w2WlhJOFVqNDZPbWxuYm05eVpWOWxlSEJ2Ym1WdWREbzZhRGd3TVRFMU16bG1OVGszTUdcXFxuRXdPVERFQWoxb1lYTm9Zbkp2ZDI0Nk9uSmhkem82YVc1dVpYSTZPbEpoZDFSaFlteGxQRlFzUVQ0Nk9tWnBibVE2T21nek5qbGhaREEyXFxcbk1UQmhNR0kxTkRkanhRSXBhV1J1WVRvNmRYUnpORFk2T21selgzTnBiWEJzWlRvNmFHSmtZVFUwTW1KbVkySmlObVk0TjJiR0FtZzhZMlxcXG45eVpUbzZhWFJsY2pvNllXUmhjSFJsY25NNk9tMWhjRG82VFdGd1BFa3NSajRnWVhNZ1kyOXlaVG82YVhSbGNqbzZkSEpoYVhSek9qcHBcXFxuZEdWeVlYUnZjam82U1hSbGNtRjBiM0krT2pwbWIyeGtPanBvT0RBMlkyWXdPVFZsWVRZNFptWmtaY2NDUW5ObGNtUmxYMnB6YjI0Nk9tXFxcblJsT2pwRVpYTmxjbWxoYkdsNlpYSThVajQ2T21ZMk5GOW1jbTl0WDNCaGNuUnpPanBvTXpnelpHSTBZemRqT0RaaE9UWXlZY2dDUldsdVxcXG5aR1Y0YldGd09qcHRZWEE2T21OdmNtVTZPa2x1WkdWNFRXRndRMjl5WlR4TExGWStPanB3ZFhOb1gyVnVkSEo1T2pwb1lURTRPRFl3TmpcXFxuUmtPRGsyWkdVeVpza0NRbk5sY21SbFgycHpiMjQ2T21SbE9qcEVaWE5sY21saGJHbDZaWEk4VWo0Nk9tWTJORjltY205dFgzQmhjblJ6XFxcbk9qcG9NbUpqT1RKbVpUazJNakU1WmpWaFljb0NhRHhqYjNKbE9qcHBkR1Z5T2pwaFpHRndkR1Z5Y3pvNmJXRndPanBOWVhBOFNTeEdQaVxcXG5CaGN5QmpiM0psT2pwcGRHVnlPanAwY21GcGRITTZPbWwwWlhKaGRHOXlPanBKZEdWeVlYUnZjajQ2T21admJHUTZPbWcxWVRKaU9XVTNcXFxuWXpRNU5HVTFObUUzeXdJM1kyOXlaVG82WTJoaGNqbzZiV1YwYUc5a2N6bzZaVzVqYjJSbFgzVjBaamhmY21GM09qcG9OR016TlRVeFlUXFxcblF6TW1RMU1qRmtZOHdDTjJOdmNtVTZPbU5vWVhJNk9tMWxkR2h2WkhNNk9tVnVZMjlrWlY5MWRHWTRYM0poZHpvNmFEUmpNelUxTVdFMFxcXG5NekprTlRJeFpHUE5BaTVoYkd4dll6bzZjbUYzWDNabFl6bzZabWx1YVhOb1gyZHliM2M2T21nMVlUSmpNR0U0TkdaaU1UUTVNemxsemdcXFxuSXVZV3hzYjJNNk9uSmhkMTkyWldNNk9tWnBibWx6YUY5bmNtOTNPanBvTWpGaE1HRmhOemRrTldZNE4yRTBNczhDTjJOdmNtVTZPbU5vXFxcbllYSTZPbTFsZEdodlpITTZPbVZ1WTI5a1pWOTFkR1k0WDNKaGR6bzZhRFJqTXpVMU1XRTBNekprTlRJeFpHUFFBaTVoYkd4dll6bzZjbVxcXG5GM1gzWmxZem82Wm1sdWFYTm9YMmR5YjNjNk9tZzFaV0kwTW1RMk5URmxPR0prTW1FejBRSTNZMjl5WlRvNlkyaGhjam82YldWMGFHOWtcXFxuY3pvNlpXNWpiMlJsWDNWMFpqaGZjbUYzT2pwb05HTXpOVFV4WVRRek1tUTFNakZrWTlJQ0kzVnliRG82VlhKc09qcHRkWFJoZEdVNk9tXFxcbmd4TXpFeFpHSmxOekZqWm1JNFpqVTAwd0kzWTI5eVpUbzZZMmhoY2pvNmJXVjBhRzlrY3pvNlpXNWpiMlJsWDNWMFpqaGZjbUYzT2pwb1xcXG5OR016TlRVeFlUUXpNbVExTWpGa1k5UUNMbUZzYkc5ak9qcHlZWGRmZG1Wak9qcG1hVzVwYzJoZlozSnZkem82YURsaU16bGtObUkyWldcXFxuSTRPVFl3WmpMVkFpNWhiR3h2WXpvNmNtRjNYM1psWXpvNlptbHVhWE5vWDJkeWIzYzZPbWhoWm1Oak5qUmtOR0ZrT1dRMlptTmkxZ0kzXFxcblkyOXlaVG82WTJoaGNqbzZiV1YwYUc5a2N6bzZaVzVqYjJSbFgzVjBaamhmY21GM09qcG9OR016TlRVeFlUUXpNbVExTWpGa1k5Y0NNMlxcXG5SbGJtOWZZMkZqYUdWZlpHbHlPanBqYjIxdGIyNDZPbU5vWldOcmMzVnRPanBvTW1JM01XUmpaRFJsTWpNeVlqVTVaZGdDWkR4a1pXNXZcXFxuWDJOaFkyaGxYMlJwY2pvNmQyRnpiVG82VjJGemJVVnVkaUJoY3lCa1pXNXZYMk5oWTJobFgyUnBjam82WTI5dGJXOXVPanBFWlc1dlEyXFxcbkZqYUdWRmJuWStPanB0YjJScFptbGxaRG82YUdJelltTmlZMk5tWVROalpqSTVNbVBaQWk1aGJHeHZZem82Y21GM1gzWmxZem82Wm1sdVxcXG5hWE5vWDJkeWIzYzZPbWd6WkdKa09URTBaREkyT0RVNU5qUTAyZ0k2WTI5eVpUbzZjMnhwWTJVNk9uTnZjblE2T20xbGNtZGxYM052Y25cXFxuUTZPbU52Ykd4aGNITmxPanBvWTJZMVkyRm1OVFJtTnpJME4yWXpadHNDTm5ObGNtUmxPanB6WlhJNk9sTmxjbWxoYkdsNlpYSTZPbU52XFxcbmJHeGxZM1JmYldGd09qcG9ZVFl4Wm1ZNFpqTmlOMkZtTXpNNVlkd0NSbWx1WkdWNGJXRndPanB0WVhBNk9tTnZjbVU2T2tsdVpHVjRUV1xcXG5Gd1EyOXlaVHhMTEZZK09qcHBibk5sY25SZlpuVnNiRG82YURobU9Ua3laV1ZtWTJWbVpqVTVOVERkQWo1aGJHeHZZem82Y21GM1gzWmxcXFxuWXpvNlVtRjNWbVZqUEZRc1FUNDZPbWR5YjNkZllXMXZjblJwZW1Wa09qcG9OamMwWTJJeE1ERXhNVGMxT0dNelpONENQbUZzYkc5ak9qXFxcbnB5WVhkZmRtVmpPanBTWVhkV1pXTThWQ3hCUGpvNlozSnZkMTloYlc5eWRHbDZaV1E2T21nM05URTROREF4T1dFMVl6bGpNalJsM3dJK1xcXG5ZV3hzYjJNNk9uSmhkMTkyWldNNk9sSmhkMVpsWXp4VUxFRStPanBuY205M1gyRnRiM0owYVhwbFpEbzZhR013WTJGa1lUYzNOak15T1dcXFxuUTRObVBnQWo1aGJHeHZZem82Y21GM1gzWmxZem82VW1GM1ZtVmpQRlFzUVQ0Nk9tZHliM2RmWVcxdmNuUnBlbVZrT2pwb1ptWmpPREZsXFxcblkyVmlZV1UxTVRJMU11RUNQbUZzYkc5ak9qcHlZWGRmZG1Wak9qcFNZWGRXWldNOFZDeEJQam82WjNKdmQxOWhiVzl5ZEdsNlpXUTZPbVxcXG5nNE1HWXlPVGxpWmpZNFpUWTJNVFptNGdJK1lXeHNiMk02T25KaGQxOTJaV002T2xKaGQxWmxZenhVTEVFK09qcG5jbTkzWDJGdGIzSjBcXFxuYVhwbFpEbzZhR1UzWTJFM1pXUmlaREExWTJReFlqTGpBajVoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDQ2T21keWIzXFxcbmRmWVcxdmNuUnBlbVZrT2pwb01UWTRNVFF3TnpaaFlUVTFNVFkzTWVRQ1BtRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlxcXG5Qam82WjNKdmQxOWhiVzl5ZEdsNlpXUTZPbWd6WmpRNU56TXlOVEZoWVdKbU1qWms1UUkrWVd4c2IyTTZPbkpoZDE5MlpXTTZPbEpoZDFcXFxuWmxZenhVTEVFK09qcG5jbTkzWDJGdGIzSjBhWHBsWkRvNmFERTNaakkzTm1GbFkyVTNNVEZsTVRMbUFqNWhiR3h2WXpvNmNtRjNYM1psXFxcbll6bzZVbUYzVm1WalBGUXNRVDQ2T21keWIzZGZZVzF2Y25ScGVtVmtPanBvWkdZNE1UWTFNamcxTkdWaFpURm1OdWNDU3p4amIzSmxPalxcXG5wemRISTZPbVZ5Y205eU9qcFZkR1k0UlhKeWIzSWdZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPanBvTnpWbU1qVmpcXFxuTWpreFpHWXhaV0pqWStnQ1NUeGpiM0psT2pwemRISTZPbVZ5Y205eU9qcFZkR1k0UlhKeWIzSWdZWE1nWTI5eVpUbzZabTEwT2pwRVpXXFxcbkoxWno0Nk9tWnRkRG82YURnMllXRXdOR05qTjJReU5EazNOR1RwQWtrOFkyOXlaVG82WVd4c2IyTTZPbXhoZVc5MWREbzZUR0Y1YjNWMFxcXG5JR0Z6SUdOdmNtVTZPbVp0ZERvNlJHVmlkV2MrT2pwbWJYUTZPbWhoTmpabE9EYzROakkzWVRWa04yTmw2Z0pDWTI5eVpUbzZabTEwT2pcXFxucEdiM0p0WVhSMFpYSTZPbVJsWW5WblgzUjFjR3hsWDJacFpXeGtNVjltYVc1cGMyZzZPbWcyWkRWbE1qQTJaV05pTWpVNE1EWTE2d0l2XFxcbllXeHNiMk02T25OMGNtbHVaem82VTNSeWFXNW5PanBrY21GcGJqbzZhR0ptWTJFNFltVm1ZV1ZtWXpWalpqTHNBbVk4WTI5eVpUbzZhWFxcXG5SbGNqbzZZV1JoY0hSbGNuTTZPbkpsZGpvNlVtVjJQRWsrSUdGeklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6bzZhWFJsY21GMGIzSTZcXFxuT2tsMFpYSmhkRzl5UGpvNmJtVjRkRG82YUdSak5qTmlPV0l5TkRobU5tRXhabUh0QWs1aGJHeHZZem82Y21GM1gzWmxZem82VW1GM1ZtXFxcblZqUEZRc1FUNDZPbkpsYzJWeWRtVTZPbVJ2WDNKbGMyVnlkbVZmWVc1a1gyaGhibVJzWlRvNmFHVTBORGs1TmpWaVpqVm1ZekZoTTJQdVxcXG5BazVoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDQ2T25KbGMyVnlkbVU2T21SdlgzSmxjMlZ5ZG1WZllXNWtYMmhoYm1cXFxuUnNaVG82YUdSbFlXTmpZVEUyWVdGallqY3lNR1h2QWk1aGJHeHZZem82Y21GM1gzWmxZem82Wm1sdWFYTm9YMmR5YjNjNk9tZzBPVFl4XFxcbk56UmlNVGMwTlRZNU1qTTU4QUl5YzJWeVpHVTZPbVJsT2pwRmNuSnZjam82ZFc1cmJtOTNibDltYVdWc1pEbzZhRE5qWldSbVlUZ3paalxcXG5sa1pHVmlZVGp4QWtCaGJHeHZZem82Y21GM1gzWmxZem82VW1GM1ZtVmpQRlFzUVQ0Nk9uSmxjMlZ5ZG1WZlptOXlYM0IxYzJnNk9tZzNcXFxuTURCaE5qZ3hOMk5rWm1GaE9XSmk4Z0lzYzNSa09qcHdZWFJvT2pwUVlYUm9RblZtT2pwZmNIVnphRG82YURZd01EUmlNemMwTWpjNFpEXFxcbmMyTldMekFrQmhiR3h2WXpvNmNtRjNYM1psWXpvNlVtRjNWbVZqUEZRc1FUNDZPbkpsYzJWeWRtVmZabTl5WDNCMWMyZzZPbWhpTVdZMFxcXG5ZV1k0T0daaE16WmlaV1ZsOUFKelBEeDFjbXc2T2xWeWJDQmhjeUJ6WlhKa1pUbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbFBqbzZaR1Z6WlhcXFxuSnBZV3hwZW1VNk9sVnliRlpwYzJsMGIzSWdZWE1nYzJWeVpHVTZPbVJsT2pwV2FYTnBkRzl5UGpvNmRtbHphWFJmYzNSeU9qcG9NRE5pXFxcbk9XWTJaamhrT1dNeFpERTVNL1VDUDNWeWJEbzZjR0Z5YzJWeU9qcFFZWEp6WlhJNk9uZHBkR2hmY1hWbGNubGZZVzVrWDJaeVlXZHRaV1xcXG41ME9qcG9ZV0l4TmpReE0yVmlNRGcxWXpZMU52WUNOM04wWkRvNmNHRnVhV05yYVc1bk9qcHlkWE4wWDNCaGJtbGpYM2RwZEdoZmFHOXZcXFxuYXpvNmFEWmtaalZrWWpkaFpEbG1OalZrWXpqM0FrWnBibVJsZUcxaGNEbzZiV0Z3T2pwamIzSmxPanBKYm1SbGVFMWhjRU52Y21VOFN5XFxcbnhXUGpvNmFXNXpaWEowWDJaMWJHdzZPbWd5TWpBM01UVXhNams0TjJOak1HRm0rQUkrWVd4c2IyTTZPbkpoZDE5MlpXTTZPbEpoZDFabFxcXG5ZenhVTEVFK09qcG5jbTkzWDJGdGIzSjBhWHBsWkRvNmFEZ3pZMlpoWkRJek9EWm1OVGRsTVRmNUFqNWhiR3h2WXpvNmNtRjNYM1psWXpcXFxubzZVbUYzVm1WalBGUXNRVDQ2T21keWIzZGZZVzF2Y25ScGVtVmtPanBvTlRJeVptWXhaREl3TkRsbFpEYzRNUG9DUDJOdmNtVTZPbk4wXFxcbmNqbzZhWFJsY2pvNlUzQnNhWFJKYm5SbGNtNWhiRHhRUGpvNmJtVjRkRjlpWVdOck9qcG9ZbVZoWkRZNU5EUTBaamMwWkRnNFpQc0NQbVxcXG5Gc2JHOWpPanB5WVhkZmRtVmpPanBTWVhkV1pXTThWQ3hCUGpvNlozSnZkMTloYlc5eWRHbDZaV1E2T21nek9UUTNNV1EyWm1Zek4yUTNcXFxuTldNNC9BSStZV3hzYjJNNk9uSmhkMTkyWldNNk9sSmhkMVpsWXp4VUxFRStPanBuY205M1gyRnRiM0owYVhwbFpEbzZhR1JqTkROaVl6XFxcbmhpTnpKall6Um1Oemo5QWpOemRHUTZPbk41Y3pvNmQyRnpiVG82YjI1alpUbzZUMjVqWlRvNlkyRnNiRG82YURBMU5EVmlPRGhtTkdOaVxcXG5OMkV4Tm1YK0FqOW9ZWE5vWW5KdmQyNDZPbkpoZHpvNlVtRjNWR0ZpYkdWSmJtNWxjanhCUGpvNlptbHVaRjlwYm01bGNqbzZhR1E1WldcXFxuRXpOVEV5WldSallXUmlOMlgvQWtOamIzSmxPanBtYlhRNk9rWnZjbTFoZEhSbGNqbzZaR1ZpZFdkZmMzUnlkV04wWDJacFpXeGtNbDltXFxcbmFXNXBjMmc2T21oa01HVmlabVZqTnpWbFpEUTFaVE5rZ0FNdWFXUnVZVG82ZFhSek5EWTZPbU5vWldOclgzWmhiR2xrYVhSNU9qcG9aR1xcXG5JNVlqYzNPVGMwTWpobU1qTXlOWUVEUW5WdWFXTnZaR1ZmYm05eWJXRnNhWHBoZEdsdmJqbzZjR1Z5Wm1WamRGOW9ZWE5vT2pwdGNHaGZcXFxuYkc5dmEzVndPanBvTlRrd1lUTTNaak16WVRSaE4yTXlNNElETG1Gc2JHOWpPanB5WVhkZmRtVmpPanBtYVc1cGMyaGZaM0p2ZHpvNmFHXFxcblZrTlRnNVltUXhPVFUwTTJWbVltS0RBMXM4WTI5eVpUbzZjM1J5T2pwcGRHVnlPanBEYUdGeWN5QmhjeUJqYjNKbE9qcHBkR1Z5T2pwMFxcXG5jbUZwZEhNNk9tbDBaWEpoZEc5eU9qcEpkR1Z5WVhSdmNqNDZPbTVsZUhRNk9tZ3lOV05tTlRKbU5tTmpNbVU0TkdSbGhBTlpaR1Z1YjFcXFxuOWpZV05vWlY5a2FYSTZPbXh2WTJGc09qcHRZVzVwWm1WemREbzZURzlqWVd4RFlXTm9aVTFoYm1sbVpYTjBSR0YwWVRvNllXUmtYMlJwXFxcbmNtVmpkRzl5ZVRvNmFEY3dNR0ZrWTJJeE9ETXdaamxrTWpDRkExczhZMjl5WlRvNmMzUnlPanBwZEdWeU9qcERhR0Z5Y3lCaGN5QmpiM1xcXG5KbE9qcHBkR1Z5T2pwMGNtRnBkSE02T21sMFpYSmhkRzl5T2pwSmRHVnlZWFJ2Y2o0Nk9tNWxlSFE2T21neU5XTm1OVEptTm1Oak1tVTRcXFxuTkdSbGhnTTJjMlZ5WkdWZmFuTnZiam82WkdVNk9sQmhjbk5sY2s1MWJXSmxjam82ZG1semFYUTZPbWd5WldVNVltSmtOR0ZtT0RRM01qXFxcblpsaHdORGMyVnlaR1ZmYW5OdmJqbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbGNqeFNQam82YVdkdWIzSmxYMlY0Y0c5dVpXNTBPanBvT0RrMlxcXG5Oamt4TVRVNE5qVmpaakUyTklnRFIyOXVZMlZmWTJWc2JEbzZhVzF3T2pwUGJtTmxRMlZzYkR4VVBqbzZhVzVwZEdsaGJHbDZaVG82ZTNcXFxudGpiRzl6ZFhKbGZYMDZPbWhsT0RWaVlqVmlaV0kzWVRnMk1XTmppUU5IYjI1alpWOWpaV3hzT2pwcGJYQTZPazl1WTJWRFpXeHNQRlErXFxcbk9qcHBibWwwYVdGc2FYcGxPanA3ZTJOc2IzTjFjbVY5ZlRvNmFHUmlZVFV3Tnpka09ETmxNV1V6WWpLS0ExTmtaVzV2WDJOaFkyaGxYMlxcXG5ScGNqbzZaMnh2WW1Gc09qcEhiRzlpWVd4SWRIUndRMkZqYUdVOFJXNTJQam82WjJWMFgyTmhZMmhsWDJacGJHVndZWFJvT2pwb1ptUXlcXFxuWTJSbFkyTmxPRFkwWkdVNU00c0RiVHhrWlc1dlgyTmhZMmhsWDJScGNqbzZkMkZ6YlRvNlYyRnpiVVZ1ZGlCaGN5QmtaVzV2WDJOaFkyXFxcbmhsWDJScGNqbzZZMjl0Ylc5dU9qcEVaVzV2UTJGamFHVkZiblkrT2pwaGRHOXRhV05mZDNKcGRHVmZabWxzWlRvNmFHRmxaalExTWpneFxcXG5PV05rWkROaE1HV01BelpoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDQ2T25Ob2NtbHVhem82YUdJM1pXWmhNVEZsWlRcXFxuaGpabUpqTTJXTkEwaDFjbXc2T25CaGNuTmxjam82YzNSaGNuUnpYM2RwZEdoZmQybHVaRzkzYzE5a2NtbDJaVjlzWlhSMFpYSmZjMlZuXFxcbmJXVnVkRG82YURneVpEQTFOMkpqWVRjd1l6ZG1aR2FPQXlwemRHUTZPbkJoZEdnNk9sQmhkR2c2T25CaGNtVnVkRG82YUdVMk1ETTBOVFxcXG5NeVltSmhNVGt5TVdTUEEwWnpaWEprWlY5cWMyOXVPanBrWlRvNlJHVnpaWEpwWVd4cGVtVnlQRkkrT2pwd1lYSnpaVjlzYjI1blgybHVcXFxuZEdWblpYSTZPbWcwTW1RNVpqSmpOMk14TkRoaVptRmxrQU5HYzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BqXFxcbm82Y0dGeWMyVmZiRzl1WjE5cGJuUmxaMlZ5T2pwb1lXUXdNbVl3WXpjNVptVTNNVFEyT1pFREtXeHZaem82WDE5d2NtbDJZWFJsWDJGd1xcXG5hVjlzYjJjNk9tZ3lOekl5WldRME9UVTROelUyWmpJM2tnTXhZMjl5WlRvNmMyeHBZMlU2T25OdmNuUTZPbVpwYm1SZmMzUnlaV0ZyT2pcXFxucG9ZVEkwWmpFellXWTFZbUpsTVRNMk9aTURRMk52Y21VNk9tWnRkRG82Um05eWJXRjBkR1Z5T2pwa1pXSjFaMTl6ZEhKMVkzUmZabWxsXFxcbmJHUXhYMlpwYm1semFEbzZhRGs0T1RVeFpqUm1ZelV4T1dJM1ltV1VBekZqYjIxd2FXeGxjbDlpZFdsc2RHbHVjem82YldWdE9qcHRaV1xcXG4xelpYUTZPbWcyTXpZM1pqTXpZamhsWmpObE9HRTNsUU0yYzJWeVpHVTZPbk5sY2pvNlUyVnlhV0ZzYVhwbGNqbzZZMjlzYkdWamRGOXRcXFxuWVhBNk9tZ3pNekUxWlRZMVlqRXpNREZtTWpWaWxnTTJjMlZ5WkdVNk9uTmxjam82VTJWeWFXRnNhWHBsY2pvNlkyOXNiR1ZqZEY5dFlYXFxcbkE2T21nMU9EWTFNREZtTWpkbU4yTmhZMk5sbHdNMmMyVnlaR1U2T25ObGNqbzZVMlZ5YVdGc2FYcGxjam82WTI5c2JHVmpkRjl0WVhBNlxcXG5PbWczTWpOaU1qRTJNVFZqWWpBek9ERmptQU5QUEhObGNtUmxYMnB6YjI0Nk9tVnljbTl5T2pwRmNuSnZjaUJoY3lCelpYSmtaVG82WkdcXFxuVTZPa1Z5Y205eVBqbzZhVzUyWVd4cFpGOTBlWEJsT2pwb1pURm1aV1EwWWpsbE4yRTJaR0V5WVprRFEzVnliRG82Y0dGeWMyVnlPanBRXFxcbllYSnpaWEk2T25CaGNuTmxYMk5oYm01dmRGOWlaVjloWDJKaGMyVmZjR0YwYURvNmFHTmpOR05sWW1ZeU1qVmlPV1JsWVRXYUF6SmpiM1xcXG5KbE9qcHpkSEk2T2p4cGJYQnNJSE4wY2o0Nk9tbHpYMkZ6WTJscE9qcG9PRFU0TnpSaU1qYzBZakU0WVRrek5wc0RZendtYlhWMElITmxcXFxuY21SbFgycHpiMjQ2T25ObGNqbzZVMlZ5YVdGc2FYcGxjanhYTEVZK0lHRnpJSE5sY21SbE9qcHpaWEk2T2xObGNtbGhiR2w2WlhJK09qXFxcbnB6WlhKcFlXeHBlbVZmYldGd09qcG9NelZrWW1Oa1pEQXlPVEZqWVRJNU41d0RUV2hoYzJoaWNtOTNiam82Y21GM09qcHBibTVsY2pvNlxcXG5VbUYzVkdGaWJHVkpibTVsY2p4QlBqbzZibVYzWDNWdWFXNXBkR2xoYkdsNlpXUTZPbWcyTVRoa1pHTTJPRGRrTURKaU4yTXluUU1QZFhcXFxuSnNYM1J2WDJacGJHVnVZVzFsbmdNVFoyeHZZbUZzYUhSMGNHTmhZMmhsWDNObGRKOERFbXh2WTJGc2FIUjBjR05oWTJobFgzTmxkS0FEXFxcblZqeHpaWEprWlY5cWMyOXVPanB5WldGa09qcFRiR2xqWlZKbFlXUWdZWE1nYzJWeVpHVmZhbk52YmpvNmNtVmhaRG82VW1WaFpENDZPbVxcXG5sbmJtOXlaVjl6ZEhJNk9tZzNNR1kwWXpnME5EVXlaakpoT0RrNW9RTlVjM1JrT2pwemVYTTZPbU52YlcxdmJqbzZkR2h5WldGa1gyeHZcXFxuWTJGc09qcHNZWHA1T2pwTVlYcDVTMlY1U1c1dVpYSThWRDQ2T21sdWFYUnBZV3hwZW1VNk9taGxObVJtTWpOaU5ETTRPV0ppTldZM29nXFxcbk5KUEc5dVkyVmZZMlZzYkRvNmFXMXdPanBIZFdGeVpDQmhjeUJqYjNKbE9qcHZjSE02T21SeWIzQTZPa1J5YjNBK09qcGtjbTl3T2pwb1xcXG5OV0k0TVRBME9HVTBNV1ZqT1RBeE5hTURRbk5sY21SbFgycHpiMjQ2T21SbE9qcEVaWE5sY21saGJHbDZaWEk4VWo0Nk9tbG5ibTl5WlZcXFxuOWtaV05wYldGc09qcG9aVEF6TmpjelptUmhabVZpWVRNellxUURPbUZzYkc5ak9qcHlZWGRmZG1Wak9qcFNZWGRXWldNOFZDeEJQam82XFxcblozSnZkMTlsZUdGamREbzZhRGc0WXpoaVlUZGpOekUwTlRneE5qZWxBenBoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVFxcXG40Nk9tZHliM2RmWlhoaFkzUTZPbWhoTTJWbE1qWXhaamt5TnpKbU1HRXlwZ002WVd4c2IyTTZPbkpoZDE5MlpXTTZPbEpoZDFabFl6eFVcXFxuTEVFK09qcG5jbTkzWDJWNFlXTjBPanBvWXpKaFpHSmhabUZrT1RJd1ltRTNOYWNEUzJsdVpHVjRiV0Z3T2pwdFlYQTZPbU52Y21VNk9rXFxcbmx1WkdWNFRXRndRMjl5WlR4TExGWStPanB6ZDJGd1gzSmxiVzkyWlY5bWRXeHNPanBvT0dKbU0yVmxPR0V6TURoaU4yTTFacWdETm1Gc1xcXG5iRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBqbzZjMmh5YVc1ck9qcG9aVEZpWTJGa1pHWXdOakpqWkdGbE1ha0RKWFZ5YkRcXFxubzZWWEpzT2pwelpYUmZjR0YwYURvNmFEWmpNVGt3WkdFMU5UUTJNR1ptTXpXcUF6VnpkR1E2T25ScGJXVTZPbE41YzNSbGJWUnBiV1U2XFxcbk9tTm9aV05yWldSZllXUmtPanBvTVRReU56RmhaV1ZtT1RZeU1tWXdaYXNEUm1sdVpHVjRiV0Z3T2pwdFlYQTZPbU52Y21VNk9rbHVaR1xcXG5WNFRXRndRMjl5WlR4TExGWStPanBwYm5ObGNuUmZablZzYkRvNmFEYzJOMkkwT1dFell6RXhPVFpoTkRDc0EwWm9ZWE5vWW5KdmQyNDZcXFxuT25KaGR6bzZVbUYzVkdGaWJHVkpibTVsY2p4QlBqbzZibVYzWDNWdWFXNXBkR2xoYkdsNlpXUTZPbWhtWXpjNE1EVm1OR0ZtTURNd05EXFxcbkEwclFOZVBHTnZjbVU2T25OMGNqbzZhWFJsY2pvNlUzQnNhWFE4VUQ0Z1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBwZEdWeVxcXG5ZWFJ2Y2pvNlNYUmxjbUYwYjNJK09qcHVaWGgwT2pwb01HTXpOemd3WVdJd01HWmxPVE0yTTY0RE1XTnZjbVU2T25Oc2FXTmxPanB6YjNcXFxuSjBPanBtYVc1a1gzTjBjbVZoYXpvNmFHRXhOemRsWm1VNE0yRXlabVF5T0dXdkEydHpaWEprWlRvNlpHVTZPbWx0Y0d4ek9qbzhhVzF3XFxcbmJDQnpaWEprWlRvNlpHVTZPa1JsYzJWeWFXRnNhWHBsSUdadmNpQmpiM0psT2pwdmNIUnBiMjQ2T2s5d2RHbHZianhVUGo0Nk9tUmxjMlxcXG5WeWFXRnNhWHBsT2pwb01HVmhOVGt5TVdZelpXTmtaamd3TWJBRFozTmxjbVJsT2pwelpYSTZPbWx0Y0d4ek9qbzhhVzF3YkNCelpYSmtcXFxuWlRvNmMyVnlPanBUWlhKcFlXeHBlbVVnWm05eUlITjBaRG82ZEdsdFpUbzZVM2x6ZEdWdFZHbHRaVDQ2T25ObGNtbGhiR2w2WlRvNmFHXFxcblptT0dZMk5qSm1ZbU16WVRWaE5ER3hBMTA4YzJWeVpHVmZkMkZ6YlY5aWFXNWtaMlZ1T2pwa1pUbzZUV0Z3UVdOalpYTnpJR0Z6SUhObFxcXG5jbVJsT2pwa1pUbzZUV0Z3UVdOalpYTnpQam82Ym1WNGRGOXJaWGxmYzJWbFpEbzZhR1V5WTJZek1tTXpZV1U0TmpRM00yR3lBeTV6YldcXFxuRnNiSFpsWXpvNlUyMWhiR3hXWldNOFFUNDZPbkIxYzJnNk9tZzNNR05sTldaaVptSTNZVEF3TXpsaXN3TndQR0ZzYkc5ak9qcDJaV002XFxcbk9sWmxZenhVUGlCaGN5QmhiR3h2WXpvNmRtVmpPanB6Y0dWalgyWnliMjFmYVhSbGNsOXVaWE4wWldRNk9sTndaV05HY205dFNYUmxja1xcXG41bGMzUmxaRHhVTEVrK1BqbzZabkp2YlY5cGRHVnlPanBvT1RoaU5ESmhNekUyWW1WbVpHWTVPYlFEUEdOdmNtVTZPbk4wY2pvNlBHbHRcXFxuY0d3Z2MzUnlQam82ZEhKcGJWOXpkR0Z5ZEY5dFlYUmphR1Z6T2pwb056UTVPRFkzTURBNVpEVXlNekZtT0xVRFJ6eGpiM0psT2pwMGFXXFxcbjFsT2pwRWRYSmhkR2x2YmlCaGN5QmpiM0psT2pwdmNITTZPbUZ5YVhSb09qcFRkV0krT2pwemRXSTZPbWhoWVRZMk16ZzNOV1kxWldZNFxcXG5aVEJtdGdOcWFXNWtaWGh0WVhBNk9tMWhjRG82WTI5eVpUbzZjbUYzT2pvOGFXMXdiQ0JwYm1SbGVHMWhjRG82YldGd09qcGpiM0psT2pcXFxucEpibVJsZUUxaGNFTnZjbVU4U3l4V1BqNDZPbVpwYm1SZmIzSmZhVzV6WlhKME9qcG9aalkxWm1aaE1HUXhNakEwTXpNd01iY0RhbWx1XFxcblpHVjRiV0Z3T2pwdFlYQTZPbU52Y21VNk9uSmhkem82UEdsdGNHd2dhVzVrWlhodFlYQTZPbTFoY0RvNlkyOXlaVG82U1c1a1pYaE5ZWFxcXG5CRGIzSmxQRXNzVmo0K09qcG1hVzVrWDI5eVgybHVjMlZ5ZERvNmFHVXlZV0psT0dOalpUY3lOMkkzWlRHNEEycHBibVJsZUcxaGNEbzZcXFxuYldGd09qcGpiM0psT2pweVlYYzZPanhwYlhCc0lHbHVaR1Y0YldGd09qcHRZWEE2T21OdmNtVTZPa2x1WkdWNFRXRndRMjl5WlR4TExGXFxcblkrUGpvNlptbHVaRjl2Y2w5cGJuTmxjblE2T21neE5EbGpOMlZsTTJVMk16QmpNak15dVFORmNHVnlZMlZ1ZEY5bGJtTnZaR2x1WnpvNlxcXG5VR1Z5WTJWdWRFUmxZMjlrWlRvNlpHVmpiMlJsWDNWMFpqaGZiRzl6YzNrNk9taGtOMlU0TkdZd016VTJPVFl3TVdKbHVnTmVQSE4wWkRcXFxubzZkR2x0WlRvNlUzbHpkR1Z0VkdsdFpTQmhjeUJqYjNKbE9qcHZjSE02T21GeWFYUm9PanBCWkdROFkyOXlaVG82ZEdsdFpUbzZSSFZ5XFxcbllYUnBiMjQrUGpvNllXUmtPanBvTmpGaFpqSTFOREU0WXpkbE1UQXlZYnNEUldsdVpHVjRiV0Z3T2pwdFlYQTZPbU52Y21VNk9rbHVaR1xcXG5WNFRXRndRMjl5WlR4TExGWStPanB3ZFhOb1gyVnVkSEo1T2pwb09URTNZalV5TlRFd01qTTBNalZtTjd3RFBtRnNiRzlqT2pweVlYZGZcXFxuZG1Wak9qcFNZWGRXWldNOFZDeEJQam82WjNKdmQxOWhiVzl5ZEdsNlpXUTZPbWd4WmpZME1tVXlOMll5WmpGaU5qRTV2UU5KY0dGeWEyXFxcbmx1WjE5c2IzUTZPbkpoZDE5eWQyeHZZMnM2T2xKaGQxSjNURzlqYXpvNmRXNXNiMk5yWDNOb1lYSmxaRjl6Ykc5M09qcG9ZV1ptTlRJNFxcXG5NR0poWm1ZMU1tSmtaTDRETm1Gc2JHOWpPanB5WVhkZmRtVmpPanBTWVhkV1pXTThWQ3hCUGpvNmMyaHlhVzVyT2pwb1lUUmpNVGRtTlRcXFxuYzFNVE01TUdNelliOEROWEpwYm1jNk9tUnBaMlZ6ZERvNlFteHZZMnREYjI1MFpYaDBPanAxY0dSaGRHVTZPbWd5TXpBMU16azRZVE16XFxcbk5tRmpNVEJpd0FNMWRHbHVlWFpsWXpvNmRHbHVlWFpsWXpvNlZHbHVlVlpsWXp4QlBqbzZjSFZ6YURvNmFETTFabUpsT1dSaFlUa3lZalxcXG5VM05EUEJBMFZwYm1SbGVHMWhjRG82YldGd09qcGpiM0psT2pwSmJtUmxlRTFoY0VOdmNtVThTeXhXUGpvNmNIVnphRjlsYm5SeWVUbzZcXFxuYURJNVltTm1OVGRpTXpSa05EUmlNekhDQXpwamIzSmxPanBtYlhRNk9tSjFhV3hrWlhKek9qcEVaV0oxWjFSMWNHeGxPanBtYVc1cGMyXFxcbmc2T21oa1pUa3hNVGt6WVRRMVl6WXhaRE5td3dNL2MyVnlaR1ZmYW5OdmJqbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbGNqeFNQam82Y0dGeVxcXG5jMlZmYVdSbGJuUTZPbWhpWlRNNVpUVTROVGhrWXpOaFlUZGl4QU03YzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2pcXFxueFNQam82Wlc1a1gyMWhjRG82YURCa1pHVmtaR1F4Tm1Wa1ptWmxOV0xGQXp0elpYSmtaVjlxYzI5dU9qcGtaVG82UkdWelpYSnBZV3hwXFxcbmVtVnlQRkkrT2pwbGJtUmZiV0Z3T2pwb016SXpZVEEwWlRoaU1EYzBNMkkzWk1ZRFBtRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV1xcXG5NOFZDeEJQam82WjNKdmQxOWhiVzl5ZEdsNlpXUTZPbWd5TWpReVpqTTVOREV4Tm1ZeE9Ua3h4d013ZFhKc09qcHdZWEp6WlhJNk9rbHVcXFxuY0hWME9qcHVaWGgwWDNWMFpqZzZPbWhrWTJNME5UTXhOVFF3T0RrMVpUWml5QU1qZFhKc09qcFZjbXc2T20xMWRHRjBaVG82YUdZM01tXFxcbk5qWm1JMU1XUmhZamcwTWpuSkF6RmpiM0psT2pwemJHbGpaVG82YzI5eWREbzZhVzV6WlhKMFgzUmhhV3c2T21nMllXUXlOemhpTm1SbFxcXG5NRE5pTVdGaHlnTkxjMlZ5WkdWZmFuTnZiam82WkdVNk9rUmxjMlZ5YVdGc2FYcGxjanhTUGpvNmNHRnljMlZmWlhod2IyNWxiblJmYjNcXFxuWmxjbVpzYjNjNk9taGhORFUyWmpJeE56a3hNamMzTlRnMXl3TTBaR1Z1YjE5allXTm9aVjlrYVhJNk9uZGhjMjA2T21GelgycHpYMlZ5XFxcbmNtOXlPanBvTURWa05qWXpNV1ZsTURWbE56RTRNc3dEcEFGa1pXNXZYMk5oWTJobFgyUnBjam82Ykc5allXdzZPbTFoYm1sbVpYTjBPalxcXG5wZk9qbzhhVzF3YkNCelpYSmtaVG82YzJWeU9qcFRaWEpwWVd4cGVtVWdabTl5SUdSbGJtOWZZMkZqYUdWZlpHbHlPanBzYjJOaGJEbzZcXFxuYldGdWFXWmxjM1E2T2xObGNtbGhiR2w2WldSTWIyTmhiRU5oWTJobFRXRnVhV1psYzNSRVlYUmhQam82YzJWeWFXRnNhWHBsT2pwb01tXFxcbk5rWVRobFlXRXlZV1V4TXpobE5NMERTM05sY21SbFgycHpiMjQ2T21SbE9qcEVaWE5sY21saGJHbDZaWEk4VWo0Nk9uQmhjbk5sWDJWNFxcXG5jRzl1Wlc1MFgyOTJaWEptYkc5M09qcG9PV0ptWTJOa1pURTRZekptTWpObVpzNERMSFZ5YkRvNlZYSnNPanAwWVd0bFgyRm1kR1Z5WDNcXFxuQmhkR2c2T21nNVlXUXdObVkyT1RJNE5HVTRPV0UyendORmRXNXBZMjlrWlY5aWFXUnBPanBqYUdGeVgyUmhkR0U2T21KelpXRnlZMmhmXFxcbmNtRnVaMlZmZG1Gc2RXVmZkR0ZpYkdVNk9taGlPVEV3TkRZM1pUQTVOVFZpWlRCazBBTkNjMlZ5WkdWZmFuTnZiam82WkdVNk9rUmxjMlxcXG5WeWFXRnNhWHBsY2p4U1BqbzZhV2R1YjNKbFgyUmxZMmx0WVd3Nk9tZzVZakl3WWpNNVpqWTNORE5rTVRrejBRTmZaR1Z1YjE5allXTm9cXFxuWlY5a2FYSTZPbU5oWTJobE9qcFRaWEpwWVd4cGVtVmtRMkZqYUdWa1ZYSnNUV1YwWVdSaGRHRTZPbWx1ZEc5ZlkyRmphR1ZrWDNWeWJGXFxcbjl0WlhSaFpHRjBZVG82YUdaaE9HTmtaRGt3TlRabE0ySXdZVGpTQTFOa1pXNXZYMk5oWTJobFgyUnBjam82Ykc5allXdzZPbTFoYm1sbVxcXG5aWE4wT2pwTWIyTmhiRU5oWTJobFRXRnVhV1psYzNSRVlYUmhPanBoYzE5cWMyOXVPanBvTmpVeU1qUTNaalZqTkdaa04yWmxOZE1ETDNcXFxuVnliRG82Y0dGeWMyVnlPanBKYm5CMWREbzZkMmwwYUY5c2IyYzZPbWhtTlROaFpUTTBaRFppTnpOaE1EZzQxQU14WTI5eVpUbzZjMnhwXFxcblkyVTZPbk52Y25RNk9tbHVjMlZ5ZEY5MFlXbHNPanBvTWpRMFpqRXpaV1E1WVdabFlqTXlOTlVET1dGc2JHOWpPanAyWldNNk9sWmxZelxcXG54VUxFRStPanBsZUhSbGJtUmZaR1Z6ZFdkaGNtVmtPanBvTWprMk9XVTVaV05sT0dFd1pUSTNOZFlEU1R4elpYSmtaVjlxYzI5dU9qcGxcXFxuY25KdmNqbzZSWEp5YjNJZ1lYTWdjMlZ5WkdVNk9tUmxPanBGY25KdmNqNDZPbU4xYzNSdmJUbzZhR1JrTlRjNU9ERm1OREZoWkdOall6XFxcbmZYQTNvOFkyOXlaVG82YzNSeU9qcHdZWFIwWlhKdU9qcERhR0Z5VUhKbFpHbGpZWFJsVTJWaGNtTm9aWEk4Umo0Z1lYTWdZMjl5WlRvNlxcXG5jM1J5T2pwd1lYUjBaWEp1T2pwU1pYWmxjbk5sVTJWaGNtTm9aWEkrT2pwdVpYaDBYM0psYW1WamRGOWlZV05yT2pwb09HRTJPRGMzWldcXFxuUTRNR1F6TmprM1pOZ0RianhqYjNKbE9qcHpkSEk2T25CaGRIUmxjbTQ2T2tOb1lYSlFjbVZrYVdOaGRHVlRaV0Z5WTJobGNqeEdQaUJoXFxcbmN5QmpiM0psT2pwemRISTZPbkJoZEhSbGNtNDZPbE5sWVhKamFHVnlQam82Ym1WNGRGOXlaV3BsWTNRNk9tZzVNR1ZpWWpnMllUTmxNelxcXG5kallqRTEyUU5LWTI5eVpUbzZabTEwT2pwdWRXMDZPanhwYlhCc0lHTnZjbVU2T21adGREbzZURzkzWlhKSVpYZ2dabTl5SUdreE5qNDZcXFxuT21adGREbzZhRGxpTldNMk16Tm1aRE5tWXpJd09USGFBMGxqYjNKbE9qcG1iWFE2T201MWJUbzZQR2x0Y0d3Z1kyOXlaVG82Wm0xME9qXFxcbnBWY0hCbGNraGxlQ0JtYjNJZ2FUZytPanBtYlhRNk9taGxPVFU0WkRVd01EYzNPVEE1TW1ZNDJ3TkpZMjl5WlRvNlptMTBPanB1ZFcwNlxcXG5PanhwYlhCc0lHTnZjbVU2T21adGREbzZURzkzWlhKSVpYZ2dabTl5SUdrNFBqbzZabTEwT2pwb1pqUXhabVppWW1NME16Y3pPVFZsTnRcXFxud0RSbWhoYzJoaWNtOTNiam82Y21GM09qcHBibTVsY2pvNlVtRjNWR0ZpYkdVOFZDeEJQam82WlhKaGMyVmZibTlmWkhKdmNEbzZhRE0yXFxcblptVmlNVFV5WlRBd09EQXdPV0xkQXp0a1pXNXZYMk5oWTJobFgyUnBjam82Ykc5allXdzZPblZ5YkY5d1lYUm9YM05sWjIxbGJuUnpPalxcXG5wb05XWXpNMkZsWWprNE5EYzNNek5qWnQ0RE5tTnZjbVU2T25OMGNqbzZQR2x0Y0d3Z2MzUnlQam82ZEhKcGJWOXRZWFJqYUdWek9qcG9cXFxuTjJNMllqWmhaVGN6TXpBMk9HRXdNdDhEU21OdmNtVTZPbVp0ZERvNmJuVnRPam84YVcxd2JDQmpiM0psT2pwbWJYUTZPa3h2ZDJWeVNHXFxcblY0SUdadmNpQnBNekkrT2pwbWJYUTZPbWhqTm1Zd01qTm1aRGd4TVdJMk1ESm00QU5LWTI5eVpUbzZabTEwT2pwdWRXMDZPanhwYlhCc1xcXG5JR052Y21VNk9tWnRkRG82VlhCd1pYSklaWGdnWm05eUlHa3pNajQ2T21adGREbzZhRFZrTXpZNFlUTmxOV1ptTlRRNU5qVGhBeTF6WlhcXFxuSmtaVjlxYzI5dU9qcGtaVG82Wm5KdmJWOTBjbUZwZERvNmFHRmtaVEF4T1RVNFlqQTBNekV5WVRIaUEwRnpaWEprWlY5M1lYTnRYMkpwXFxcbmJtUm5aVzQ2T21SbE9qcEVaWE5sY21saGJHbDZaWEk2T21GelgySjVkR1Z6T2pwb05XSTFaVEkwTVRsbFpUZzJZakpoTWVNRE5YTnRZV1xcXG54c2RtVmpPanBUYldGc2JGWmxZenhCUGpvNmRISjVYM0psYzJWeWRtVTZPbWhsWXpneE9URTFaR1ZqWmpVMU5qZ3c1QU5DUEVZZ1lYTWdcXFxuWTI5eVpUbzZjM1J5T2pwd1lYUjBaWEp1T2pwTmRXeDBhVU5vWVhKRmNUNDZPbTFoZEdOb1pYTTZPbWhsWmpKbE5qYzNPRGxoTldaak1UXFxcbmxoNVFNMllXeHNiMk02T25KaGQxOTJaV002T2xKaGQxWmxZenhVTEVFK09qcHphSEpwYm1zNk9tZzNZV1JtWVdaak5EZzVPR0V5TURneVxcXG41Z00yWVd4c2IyTTZPbkpoZDE5MlpXTTZPbEpoZDFabFl6eFVMRUUrT2pwemFISnBibXM2T21nNE5ESXpabVZpT1RnNU9XWTBOV0kzNXdcXFxuTTJkWEpzT2pwd1lYSnpaWEk2T2xCaGNuTmxjam82Y0dGeWMyVmZabkpoWjIxbGJuUTZPbWc0TlRGaE1qRXpaV1kwWkdZNVpURmw2QU5vXFxcblBHTnZjbVU2T21sMFpYSTZPbUZrWVhCMFpYSnpPanB0WVhBNk9rMWhjRHhKTEVZK0lHRnpJR052Y21VNk9tbDBaWEk2T25SeVlXbDBjelxcXG5vNmFYUmxjbUYwYjNJNk9rbDBaWEpoZEc5eVBqbzZabTlzWkRvNmFEVmpNV0UwWldGbFltSTJZelptTjJicEF5MXpaWEprWlY5cWMyOXVcXFxuT2pwa1pUbzZabkp2YlY5MGNtRnBkRG82YURoaU16TTVaV0V4T0Rjek1USmpZbVBxQTJzOGFHRnphR0p5YjNkdU9qcHRZWEE2T2toaGMyXFxcbmhOWVhBOFN5eFdMRk1zUVQ0Z1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBqYjJ4c1pXTjBPanBGZUhSbGJtUThLRXNzVmlrK1xcXG5Qam82WlhoMFpXNWtPanBvTVdKak5EaGtPR1UzWmpaaE5ESTJPZXNEYVhObGNtUmxPanBrWlRvNmFXMXdiSE02T2p4cGJYQnNJSE5sY21cXFxuUmxPanBrWlRvNlJHVnpaWEpwWVd4cGVtVWdabTl5SUhOMFpEbzZkR2x0WlRvNlUzbHpkR1Z0VkdsdFpUNDZPbVJsYzJWeWFXRnNhWHBsXFxcbk9qcG9OamMyWW1Jd00yRmxZVFkzTmpCak9ld0RPbU52Y21VNk9uTjBjam82UEdsdGNHd2djM1J5UGpvNmRISnBiVjlsYm1SZmJXRjBZMlxcXG5obGN6bzZhR05oT0RVeE9URmtOVFl3T0daaU1qWHRBemR3WlhKalpXNTBYMlZ1WTI5a2FXNW5PanBoWm5SbGNsOXdaWEpqWlc1MFgzTnBcXFxuWjI0Nk9tZzBZVGt4TlRSak9UQmpOamcwWkdVMjdnTXpjM1JrT2pwd1lYUm9PanBRWVhSb09qcGZkMmwwYUY5bGVIUmxibk5wYjI0Nk9tXFxcbmhqTkdaaE1qRmhZelUxWm1VNVpqYzU3d05EYzNSa09qcHdZVzVwWTJ0cGJtYzZPbUpsWjJsdVgzQmhibWxqWDJoaGJtUnNaWEk2T250N1xcXG5ZMnh2YzNWeVpYMTlPanBvTUdReE5qbG1ZVEk1TnpReE1XUTJaUEFETzJoaGMyaGljbTkzYmpvNmJXRndPanBJWVhOb1RXRndQRXNzVmlcXFxueFRMRUUrT2pwcGJuTmxjblE2T21neE9HTmtaakE1TXpOaE5UUTFPREJpOFFNYVoyeHZZbUZzYUhSMGNHTmhZMmhsWDJkbGRFaGxZV1JsXFxcbmNuUHlBeHRuYkc5aVlXeG9kSFJ3WTJGamFHVmZaMlYwUm1sc1pWUmxlSFR6QXhsc2IyTmhiR2gwZEhCallXTm9aVjluWlhSSVpXRmtaWFxcXG5KejlBTWFiRzlqWVd4b2RIUndZMkZqYUdWZloyVjBSbWxzWlZSbGVIVDFBelYwYVc1NWRtVmpPanAwYVc1NWRtVmpPanBVYVc1NVZtVmpcXFxuUEVFK09qcHdkWE5vT2pwb1lqY3hOMk5qTURBNE4yWXlabUV4T2ZZRFlUeHpkR1E2T21OdmJHeGxZM1JwYjI1ek9qcG9ZWE5vT2pwelpYXFxcblE2T2toaGMyaFRaWFE4VkQ0Z1lYTWdZMjl5WlRvNlkyOXVkbVZ5ZERvNlJuSnZiVHhiVkRzZ1RsMCtQam82Wm5KdmJUbzZhRFF4TVRZNVxcXG5PV0k1TjJaallXRm1aalQzQTJFOGMzUmtPanBqYjJ4c1pXTjBhVzl1Y3pvNmFHRnphRG82YzJWME9qcElZWE5vVTJWMFBGUStJR0Z6SUdcXFxuTnZjbVU2T21OdmJuWmxjblE2T2taeWIyMDhXMVE3SUU1ZFBqNDZPbVp5YjIwNk9taGpPREZqT1RKalkyWTNOelF5TUdObCtBTi9QSE4wXFxcblpEbzZZMjlzYkdWamRHbHZibk02T21oaGMyZzZPbTFoY0RvNlNHRnphRTFoY0R4TExGWXNVejRnWVhNZ1kyOXlaVG82YVhSbGNqbzZkSFxcXG5KaGFYUnpPanBqYjJ4c1pXTjBPanBHY205dFNYUmxjbUYwYjNJOEtFc3NWaWsrUGpvNlpuSnZiVjlwZEdWeU9qcG9ObVl5WVRKalpqZzJcXFxuTW1JMU9USmxZZmtEUEhObGNtUmxPanB6WlhJNk9sTmxjbWxoYkdsNlpVMWhjRG82YzJWeWFXRnNhWHBsWDJWdWRISjVPanBvWWpaallXXFxcblUxT0RNM00ySmpOMll3TlBvRFMyaGhjMmhpY205M2JqbzZjbUYzT2pwcGJtNWxjam82VkdGaWJHVk1ZWGx2ZFhRNk9tTmhiR04xYkdGMFxcXG5aVjlzWVhsdmRYUmZabTl5T2pwb09XSXlNVGRoTURWbVlURXhNekJrTS9zRFRHaGhjMmhpY205M2JqbzZjbUYzT2pwcGJtNWxjam82VW1cXFxuRjNWR0ZpYkdWSmJtNWxjanhCUGpvNlptbHVaRjlwYm5ObGNuUmZjMnh2ZERvNmFEWmtNamMyTkdJellXVTVZemRqWldMOEF6OXpaWEprXFxcblpWOXFjMjl1T2pwa1pUbzZSR1Z6WlhKcFlXeHBlbVZ5UEZJK09qcHdZWEp6WlY5cFpHVnVkRG82YURFM1l6bGxZVFZpWlRjM056azBNMlxcXG5MOUF6dGhiR3h2WXpvNmNtRjNYM1psWXpvNlVtRjNWbVZqUEZRc1FUNDZPbUZzYkc5allYUmxYMmx1T2pwb01UVTFOR1l4TVRObFpESmtcXFxuTXpVMVpQNERYenhoYkd4dll6bzZjM1J5YVc1bk9qcFRkSEpwYm1jZ1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBqYjJ4c1pXXFxcbk4wT2pwRmVIUmxibVE4WTJoaGNqNCtPanBsZUhSbGJtUTZPbWcwTmpJM01UTXhaV0ZsWXpsaU5tVXovd003WVd4c2IyTTZPbkpoZDE5MlxcXG5aV002T2xKaGQxWmxZenhVTEVFK09qcGhiR3h2WTJGMFpWOXBiam82YURGaE9XRmpZemhoT1RRek16STVNakNBQkg4OGMzUmtPanBqYjJcXFxueHNaV04wYVc5dWN6bzZhR0Z6YURvNmJXRndPanBJWVhOb1RXRndQRXNzVml4VFBpQmhjeUJqYjNKbE9qcHBkR1Z5T2pwMGNtRnBkSE02XFxcbk9tTnZiR3hsWTNRNk9rWnliMjFKZEdWeVlYUnZjandvU3l4V0tUNCtPanBtY205dFgybDBaWEk2T21nME9UVmxNV0ZoWkdFeE1UYzFPV1xcXG5SbWdRUXdkWEpzT2pwd1lYSnpaWEk2T2xCaGNuTmxjam82Y0c5d1gzQmhkR2c2T21oaU1EUm1NVFE1TmpFMk1tTXpaVE5oZ2dSYlBHbGtcXFxuYm1FNk9uQjFibmxqYjJSbE9qcEVaV052WkdVZ1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBwZEdWeVlYUnZjam82U1hSbGNtXFxcbkYwYjNJK09qcHVaWGgwT2pwb00ySmpOMlJoT1RWak9XUmpaVGN4Wm9NRU8yRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlxcXG5Qam82WVd4c2IyTmhkR1ZmYVc0Nk9tZ3laakEwTXpKa1ptWmxNVEV6TkdVeGhBUTdZV3hzYjJNNk9uSmhkMTkyWldNNk9sSmhkMVpsWXpcXFxueFVMRUUrT2pwaGJHeHZZMkYwWlY5cGJqbzZhR1prWTJOaE9EZ3pPVEppTnpobU1qR0ZCR004YzNSa09qcHdZVzVwWTJ0cGJtYzZPbUpsXFxcbloybHVYM0JoYm1salgyaGhibVJzWlhJNk9sQmhibWxqVUdGNWJHOWhaQ0JoY3lCamIzSmxPanB3WVc1cFl6bzZRbTk0VFdWVmNENDZPbVxcXG5kbGREbzZhREpsWldRNU5HUXlOalEyTmpBell6bUdCRVJvWVhOb1luSnZkMjQ2T25KaGR6bzZVbUYzVkdGaWJHVkpibTVsY2p4QlBqbzZcXFxuWVd4c2IyTmhkR2x2Ymw5cGJtWnZPanBvTjJaalptWTNZVE00WkdSak9UUm1Nb2NFUEhObGNtUmxPanB6WlhJNk9sTmxjbWxoYkdsNlpVXFxcbjFoY0RvNmMyVnlhV0ZzYVhwbFgyVnVkSEo1T2pwb1pERTFaREZtTVdRd09EWTBaamt6WklnRVBITmxjbVJsT2pwelpYSTZPbE5sY21saFxcXG5iR2w2WlUxaGNEbzZjMlZ5YVdGc2FYcGxYMlZ1ZEhKNU9qcG9aVGd4TmpRek1qWTJZak5tTkRSaFpJa0VPbWhoYzJoaWNtOTNiam82Y21cXFxuRjNPanBTWVhkVVlXSnNaVWx1Ym1WeVBFRStPanBsY21GelpUbzZhR1k0WVdZMU5qZGtOekZtTVRrM01HYUtCRXc4YzJWeVpHVmZhbk52XFxcbmJqbzZaWEp5YjNJNk9rVnljbTl5U1cxd2JDQmhjeUJqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGsrT2pwbWJYUTZPbWc1TXpNeE9XWmtNalxcXG5Cak56ZzBOakV5aXdSVWRXNXBZMjlrWlY5dWIzSnRZV3hwZW1GMGFXOXVPanBrWldOdmJYQnZjMlU2T2tSbFkyOXRjRzl6YVhScGIyNXpcXFxuUEVrK09qcHpiM0owWDNCbGJtUnBibWM2T21oaFpqUXhaVEE1TVdWalpUUTNPR0ZsakFSVWRXNXBZMjlrWlY5dWIzSnRZV3hwZW1GMGFXXFxcbjl1T2pwa1pXTnZiWEJ2YzJVNk9rUmxZMjl0Y0c5emFYUnBiMjV6UEVrK09qcHpiM0owWDNCbGJtUnBibWM2T21oaU1UazFZMlZoTnpVNVxcXG5ZVEJtT1dVNGpRUkNkVzVwWTI5a1pWOXViM0p0WVd4cGVtRjBhVzl1T2pwd1pYSm1aV04wWDJoaGMyZzZPbTF3YUY5c2IyOXJkWEE2T21cXFxuaGhOMlkwTVRVeE1EUXhNVE00TWpNeWpnUTdhR0Z6YUdKeWIzZHVPanB0WVhBNk9raGhjMmhOWVhBOFN5eFdMRk1zUVQ0Nk9tbHVjMlZ5XFxcbmREbzZhRFZqWlRsbE9EazFabU01TnpWak5qR1BCQ1ZoYkd4dll6bzZabTEwT2pwbWIzSnRZWFE2T21obU9UYzRaakZsWXpNM1l6a3laRFxcXG5BNWtBUnhQR052Y21VNk9tbDBaWEk2T21Ga1lYQjBaWEp6T2pwamFHRnBiam82UTJoaGFXNDhRU3hDUGlCaGN5QmpiM0psT2pwcGRHVnlcXFxuT2pwMGNtRnBkSE02T21sMFpYSmhkRzl5T2pwSmRHVnlZWFJ2Y2o0Nk9uTnBlbVZmYUdsdWREbzZhRGhsWVRJek9USTJPVEl3TkdSbE16XFxcbktSQkdnOGMyVnlaR1ZmZDJGemJWOWlhVzVrWjJWdU9qcGtaVG82UkdWelpYSnBZV3hwZW1WeUlHRnpJSE5sY21SbE9qcGtaVG82UkdWelxcXG5aWEpwWVd4cGVtVnlQam82WkdWelpYSnBZV3hwZW1WZmMzUnlhVzVuT2pwb01ETXdNakl3WlRSaE5EZGhPVFJpWXBJRU9tTnZjbVU2T25cXFxuTnNhV05sT2pwemIzSjBPanB3Y205MmFXUmxYM052Y25SbFpGOWlZWFJqYURvNmFETmhZbUl5TkRJMU1URXpPVFZoWm1XVEJEcGpiM0psXFxcbk9qcHpiR2xqWlRvNmMyOXlkRG82Y0hKdmRtbGtaVjl6YjNKMFpXUmZZbUYwWTJnNk9tZ3hPVFJoTldWa1pqTTBORE14TWpJNWxBUk5QSFxcXG5OMFpEbzZhVzg2T21WeWNtOXlPanBGY25KdmNpQmhjeUJqYjNKbE9qcGxjbkp2Y2pvNlJYSnliM0krT2pwa1pYTmpjbWx3ZEdsdmJqbzZcXFxuYUdRNU1qQXhNV1F3WldaaE5XWTFZV09WQkRBOEpsUWdZWE1nWTI5eVpUbzZabTEwT2pwRVpXSjFaejQ2T21adGREbzZhRFJpT0Rjd1lUXFxcbmcwTTJWbFlUUTNPV2FXQkdWa1pXNXZYMk5oWTJobFgyUnBjam82Ykc5allXdzZPa3h2WTJGc1NIUjBjRU5oWTJobFBFVnVkajQ2T21kbFxcXG5kRjkxY214ZmJXVjBZV1JoZEdGZlkyaGxZMnRwYm1kZloyeHZZbUZzWDJOaFkyaGxPanBvTkRnNVlqRTVaRFF4TW1Jek1qRXpOcGNFUkdcXFxuaGhjMmhpY205M2JqbzZjbUYzT2pwVVlXSnNaVXhoZVc5MWREbzZZMkZzWTNWc1lYUmxYMnhoZVc5MWRGOW1iM0k2T21nNFpqRTNNR1l6XFxcbk5XVXdZV05qTWprNG1BUW5jMjFoYkd4MlpXTTZPbVJsWVd4c2IyTmhkR1U2T21oaVpXVTFNVGczTXpCa09EVmhNekF5bVFRcWFuTmZjM1xcXG5sek9qcEpkR1Z5VTNSaGRHVTZPbTVsZUhRNk9taG1ZVFl3TURFek5tWm1aREEzWkdKbG1nUXBkWEpzT2pwVmNtdzZPbk5sZEY5bWNtRm5cXFxuYldWdWREbzZhREV4TlRCaE56UTVOMlV3TVRCaFpXYWJCQ3AxY213Nk9sVnliRG82ZEdGclpWOW1jbUZuYldWdWREbzZhR1ZtTVdRMk5HXFxcblJrT0RFek1EZGhZbUdjQkV0MGFXNTVkbVZqT2pwaGNuSmhlWFpsWXpvNlFYSnlZWGxXWldNOFFUNDZPbVJ5WVdsdVgzUnZYM1psWTE5aFxcXG5ibVJmY21WelpYSjJaVG82YURsaE1ERmlNV0prWW1FelptUXpZV0dkQkV0MGFXNTVkbVZqT2pwaGNuSmhlWFpsWXpvNlFYSnlZWGxXWldcXFxuTThRVDQ2T21SeVlXbHVYM1J2WDNabFkxOWhibVJmY21WelpYSjJaVG82YURBd09EbGpORGd6TkdWbE5EazBaV09lQkN4cFpHNWhPanAxXFxcbmRITTBOam82WkdWamIyUmxYM05zYVdObE9qcG9aVGhrWXpReU5tVTRaVFE1TWpJMU1KOEVPV0ZzYkc5ak9qcDJaV002T2xabFl6eFVMRVxcXG5FK09qcGxlSFJsYm1SZlpHVnpkV2RoY21Wa09qcG9ZalE1TXpkak9UVmlNREppTVdRME1xQUVMWE4wWkRvNmNHRjBhRG82VUdGMGFEbzZcXFxuWm1sc1pWOXVZVzFsT2pwb00ySXdOalk1TnpsbFpEYzRNelpoT2FFRVFHRnNiRzlqT2pwemVXNWpPanBoY21OcGJtNWxjbDlzWVhsdmRYXFxcblJmWm05eVgzWmhiSFZsWDJ4aGVXOTFkRG82YURNd1lqRXlPVFZtTmprMFltSmhZamVpQkRSamIzSmxPanBvWVhOb09qcENkV2xzWkVoaFxcXG5jMmhsY2pvNmFHRnphRjl2Ym1VNk9taG1PRFV6TVdZM1pEa3lORFJqT1RJM293UjRZMjl5WlRvNmMzUnlPanAwY21GcGRITTZPanhwYlhcXFxuQnNJR052Y21VNk9uTnNhV05sT2pwcGJtUmxlRG82VTJ4cFkyVkpibVJsZUR4emRISStJR1p2Y2lCamIzSmxPanB2Y0hNNk9uSmhibWRsXFxcbk9qcFNZVzVuWlR4MWMybDZaVDQrT2pwblpYUTZPbWd4TXpZd1ptSXdOelkwT1ROalptRXlwQVJCYzJWeVpHVmZhbk52YmpvNmNtVmhaRFxcXG5vNlUyeHBZMlZTWldGa09qcHdiM05wZEdsdmJsOXZabDlwYm1SbGVEbzZhR0prWW1FNU1XWXdabUk1TXpWa1lUQ2xCRU04ZDJGemJWOWlcXFxuYVc1a1oyVnVPanBLYzFaaGJIVmxJR0Z6SUdOdmNtVTZPbVp0ZERvNlJHVmlkV2MrT2pwbWJYUTZPbWc0T1RVd1pUWTBNRGcyWXpJME5tXFxcbk5ocGdSNFkyOXlaVG82YzNSeU9qcDBjbUZwZEhNNk9qeHBiWEJzSUdOdmNtVTZPbk5zYVdObE9qcHBibVJsZURvNlUyeHBZMlZKYm1SbFxcXG5lRHh6ZEhJK0lHWnZjaUJqYjNKbE9qcHZjSE02T25KaGJtZGxPanBTWVc1blpUeDFjMmw2WlQ0K09qcG5aWFE2T21neE16WXdabUl3TnpcXFxuWTBPVE5qWm1FeXB3UnhQR052Y21VNk9tbDBaWEk2T21Ga1lYQjBaWEp6T2pwamFHRnBiam82UTJoaGFXNDhRU3hDUGlCaGN5QmpiM0psXFxcbk9qcHBkR1Z5T2pwMGNtRnBkSE02T21sMFpYSmhkRzl5T2pwSmRHVnlZWFJ2Y2o0Nk9uTnBlbVZmYUdsdWREbzZhRGRtTmpjeFpqWXlZMlxcXG5ReVltSTBZVEtvQkRaelpYSmtaVjlxYzI5dU9qcGtaVG82VUdGeWMyVnlUblZ0WW1WeU9qcDJhWE5wZERvNmFHRXhZMlZqWlRNM00ySmlcXFxuTW1SaU1qYXBCRUJqYjNKbE9qcHBkR1Z5T2pwMGNtRnBkSE02T21sMFpYSmhkRzl5T2pwSmRHVnlZWFJ2Y2pvNlpYRmZZbms2T21nNE56XFxcblZtWW1aa056RTNOREE1T0dObXFnU0xBV1JsYm05ZlkyRmphR1ZmWkdseU9qcGpZV05vWlRvNlh6bzZQR2x0Y0d3Z2MyVnlaR1U2T25ObFxcXG5jam82VTJWeWFXRnNhWHBsSUdadmNpQmtaVzV2WDJOaFkyaGxYMlJwY2pvNlkyRmphR1U2T2xObGNtbGhiR2w2WldSRFlXTm9aV1JWY21cXFxueE5aWFJoWkdGMFlUNDZPbk5sY21saGJHbDZaVG82YUdNeU1tWXpaamhqWTJZd09USTFPV09yQkUxa1pXNXZYMk5oWTJobFgyUnBjam82XFxcbmJHOWpZV3c2T2t4dlkyRnNRMkZqYUdWVGRXSlFZWFJvT2pwaGMxOXlaV3hoZEdsMlpWOXdZWFJvT2pwb1lqVmpaVGM1TURBek5UVmlPRFxcXG5Vd05Ld0VNbk5sY21SbFgycHpiMjQ2T25KbFlXUTZPbWxuYm05eVpWOWxjMk5oY0dVNk9taGxNR05rWVRrek5UWmxObVF3TnpnMHJRUTlcXFxuWVd4c2IyTTZPbk4wY2pvNlBHbHRjR3dnYzNSeVBqbzZkRzlmWVhOamFXbGZiRzkzWlhKallYTmxPanBvT1RGbU5EZGlOemczWkRBMFpqXFxcblUwTnE0RVVYVnVhV052WkdWZmJtOXliV0ZzYVhwaGRHbHZiam82Ykc5dmEzVndjem82WTI5dGNHRjBhV0pwYkdsMGVWOW1kV3hzZVY5a1xcXG5aV052YlhCdmMyVmtPanBvTlRKbFpqY3daRFZtWVdNNE9UWTFZYThFVFhWdWFXTnZaR1ZmYm05eWJXRnNhWHBoZEdsdmJqbzZiRzl2YTNcXFxuVndjem82WTJGdWIyNXBZMkZzWDJaMWJHeDVYMlJsWTI5dGNHOXpaV1E2T21neE5ETmxOREZqTWpKallqbGlaREZtc0FSbllXNTVhRzkzXFxcbk9qcGphR0ZwYmpvNlBHbHRjR3dnWTI5eVpUbzZhWFJsY2pvNmRISmhhWFJ6T2pwcGRHVnlZWFJ2Y2pvNlNYUmxjbUYwYjNJZ1ptOXlJR1xcXG5GdWVXaHZkem82UTJoaGFXNCtPanB1WlhoME9qcG9aVEJoT0dWak1EZ3paRGhsWmpGa05MRUVMV052Y21VNk9taGhjMmc2T25OcGNEbzZcXFxuZFRoMGJ6WTBYMnhsT2pwb1pqUTBOalk0WmpSak56WmhOalpoTUxJRU9HaGhjMmhpY205M2JqbzZjbUYzT2pwU1lYZFVZV0pzWlR4VUxFXFxcbkUrT2pwcGJuTmxjblE2T21oa09UYzJOR1V6TXprek0yRmpOV0k0c3dRU2JHOWpZV3hvZEhSd1kyRmphR1ZmYm1WM3RBUXRZMjl5WlRvNlxcXG5hR0Z6YURvNmMybHdPanAxT0hSdk5qUmZiR1U2T21obU5EUTJOamhtTkdNM05tRTJObUV3dFFRcFpHRjBZVjkxY213Nk9tMXBiV1U2T25cXFxuTndiR2wwTWpvNmFHWTRNREk0TkROaU1UZzJOalpoT1dPMkJFUnpaWEprWlY5cWMyOXVPanBrWlRvNlJHVnpaWEpwWVd4cGVtVnlQRkkrXFxcbk9qcHdZWEp6WlY5M2FHbDBaWE53WVdObE9qcG9NRFU1Wm1GbFl6QTJabU5sWW1JM05iY0VSbk5sY21SbFgycHpiMjQ2T21SbE9qcEVaWFxcXG5ObGNtbGhiR2w2WlhJOFVqNDZPbkJoY25ObFgyOWlhbVZqZEY5amIyeHZiam82YURjek1UVTNOakUwWVRNeFpUQTBORFc0QkROelpYSmtcXFxuWlRvNlpHVTZPa1Z5Y205eU9qcHBiblpoYkdsa1gyeGxibWQwYURvNmFEVXdOR0pqTVRRd1lUWmtZVE14TVRtNUJFVm9ZWE5vWW5KdmQyXFxcbjQ2T25KaGR6bzZVbUYzVkdGaWJHVkpibTVsY2p4QlBqbzZabWx1WkY5cGJuTmxjblJmYzJ4dmREbzZhR0pqTWpRd1lXVTJPREk0WldVNFxcXG5NMkc2QkVSelpYSmtaVjlxYzI5dU9qcGtaVG82UkdWelpYSnBZV3hwZW1WeVBGSStPanB3WVhKelpWOTNhR2wwWlhOd1lXTmxPanBvTnpcXFxuVTJPVFl5WWpkallUTmhNV0ZsTjdzRVJuTmxjbVJsWDJwemIyNDZPbVJsT2pwRVpYTmxjbWxoYkdsNlpYSThVajQ2T25CaGNuTmxYMjlpXFxcbmFtVmpkRjlqYjJ4dmJqbzZhRGM0T0RaalpUVXlPRFE0WVdZMk56TzhCRHhqYjNKbE9qcHpkSEk2T2p4cGJYQnNJSE4wY2o0Nk9uUnlhV1xcXG4xZmMzUmhjblJmYldGMFkyaGxjem82YURsaE5ETmhNamsxTW1SaVpUa3pPR1c5QkNGMWNtdzZPbFZ5YkRvNmNHRjBhRG82YURJME9ETTJcXFxuTXpReFkyWmhNelUwTjJPK0JDMWhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWM2T25CdmNEbzZhRFF4TURjMlpERTFPR1EzTmpFd1pXXFxcbk8vQkVjOGRYSnNPanB3WVhKelpYSTZPbEJoY25ObFJYSnliM0lnWVhNZ1kyOXlaVG82Wm0xME9qcEVhWE53YkdGNVBqbzZabTEwT2pwb1xcXG5aVEZrTlRFd09UUmpOams1TkRVM05jQUVRM0JoY210cGJtZGZiRzkwWDJOdmNtVTZPbmR2Y21SZmJHOWphem82VjI5eVpFeHZZMnM2T21cXFxueHZZMnRmYzJ4dmR6bzZhRGhoT0RCaFpEbG1Zek5qTnpjeFptUEJCRmRqYjNKbE9qcHpiR2xqWlRvNmMyOXlkRG82YldWeVoyVmZjMjl5XFxcbmREbzZVblZ1Vm1WalBGSjFia0ZzYkc5alJpeFNkVzVFWldGc2JHOWpSajQ2T25KbGJXOTJaVG82YURWbVlUa3hOMlpqTVdNd1ltSXhaalxcXG5UQ0JDNWpiM0psT2pweVpYTjFiSFE2T25WdWQzSmhjRjltWVdsc1pXUTZPbWczTXpnd09XTmpNRFZoTnpnMlpUUTR3d1JLYzJWeVpHVmZcXFxuYW5OdmJqbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbGNqeFNQam82Y0dGeWMyVmZaR1ZqYVcxaGJGOXZkbVZ5Wm14dmR6bzZhRFkwTURVd1lUXFxcbmxtTVRrNFl6bGlOemZFQktvQlpHVnViMTlqWVdOb1pWOWthWEk2T214dlkyRnNPanB0WVc1cFptVnpkRG82WHpvNlBHbHRjR3dnYzJWeVxcXG5aR1U2T25ObGNqbzZVMlZ5YVdGc2FYcGxJR1p2Y2lCa1pXNXZYMk5oWTJobFgyUnBjam82Ykc5allXdzZPbTFoYm1sbVpYTjBPanBUWlhcXFxuSnBZV3hwZW1Wa1RHOWpZV3hEWVdOb1pVMWhibWxtWlhOMFJHRjBZVTF2WkhWc1pUNDZPbk5sY21saGJHbDZaVG82YUdNeU16QTNaR0k1XFxcbllUVXlaRGxtTW1URkJFTm9ZWE5vWW5KdmQyNDZPbkpoZHpvNlVtRjNWR0ZpYkdWSmJtNWxjanhCUGpvNmNISmxjR0Z5WlY5eVpYTnBlbVxcXG5VNk9taGhOV0ZtTWpKbU0yTm1NekprWkdVNHhnUktjMlZ5WkdWZmFuTnZiam82WkdVNk9rUmxjMlZ5YVdGc2FYcGxjanhTUGpvNmNHRnlcXFxuYzJWZlpHVmphVzFoYkY5dmRtVnlabXh2ZHpvNmFEUmhaamMxTkRaaE5EUTVOakExTjJMSEJGVmpiM0psT2pwemJHbGpaVG82YzI5eWREXFxcbm82YldWeVoyVmZjMjl5ZERvNlVuVnVWbVZqUEZKMWJrRnNiRzlqUml4U2RXNUVaV0ZzYkc5alJqNDZPbkIxYzJnNk9tZzJNR1F4TmpGaFxcXG5OVEV3T0RReVlqQXh5QVFJWDE5dGRXeDBhVFBKQkhNOGFXNWtaWGh0WVhBNk9tMWhjRG82U1c1a1pYaE5ZWEE4U3l4V01TeFRNVDRnWVhcXFxuTWdZMjl5WlRvNlkyMXdPanBRWVhKMGFXRnNSWEU4YVc1a1pYaHRZWEE2T20xaGNEbzZTVzVrWlhoTllYQThTeXhXTWl4VE1qNCtQam82XFxcblpYRTZPbWhsTmpWaVpqUmtNbUk1TVRBM056Y3p5Z1EvYUdGemFHSnliM2R1T2pweVlYYzZPbEpoZDFSaFlteGxQRlFzUVQ0Nk9tUnliM1xcXG5CZlpXeGxiV1Z1ZEhNNk9tZzRaak5pTVRNelkyUXhPVFJsT1RBNXl3US9hR0Z6YUdKeWIzZHVPanB5WVhjNk9sSmhkMVJoWW14bFBGUXNcXFxuUVQ0Nk9tUnliM0JmWld4bGJXVnVkSE02T21oak9EbG1ZVFZtWWpNM01qZ3hOalExekFSQmFHRnphR0p5YjNkdU9qcHRZWEE2T2toaGMyXFxcbmhOWVhBOFN5eFdMRk1zUVQ0Nk9tTnZiblJoYVc1elgydGxlVG82YUdFeU9UWmxNVFF3WTJGaFpUQTJaRGpOQkR0aGJHeHZZem82Y21GM1xcXG5YM1psWXpvNlVtRjNWbVZqUEZRc1FUNDZPbUZzYkc5allYUmxYMmx1T2pwb1pqSmtOVGd6Tm1VMk4yUTVNMkU0T000RUluVnliRG82VlhcXFxuSnNPanB4ZFdWeWVUbzZhR1kyWkRRME1HRXpObVZtTm1Fd01XWFBCQzkxY213Nk9sVnliRG82Y21WemRHOXlaVjloWm5SbGNsOXdZWFJvXFxcbk9qcG9OMlV6WXpZM01EVTNOREl6T0daalpkQUVQSFZ5YkRvNlZYSnNPanB5WlhOMGIzSmxYMkZzY21WaFpIbGZjR0Z5YzJWa1gyWnlZV1xcXG5kdFpXNTBPanBvTWpJek1XRmhNVEZtTWpWaVpqRXhOZEVFVW1SbGJtOWZZMkZqYUdWZlpHbHlPanBzYjJOaGJEbzZiV0Z1YVdabGMzUTZcXFxuT2t4dlkyRnNRMkZqYUdWTllXNXBabVZ6ZEVSaGRHRTZPbkpsYlc5MlpUbzZhRGN5WXpreE9UbGxZemsyTURjM056VFNCRHRoYkd4dll6XFxcbm82Y21GM1gzWmxZem82VW1GM1ZtVmpQRlFzUVQ0Nk9tRnNiRzlqWVhSbFgybHVPanBvWWpJeE1UZzNNakEyTTJNd056YzFOTk1FTzJGc1xcXG5iRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBqbzZZV3hzYjJOaGRHVmZhVzQ2T21neVlqVXpaV0UzT1RoaU5UVmxPRFJpMUFcXFxuUkxQR0ZzYkc5ak9qcGhiR3h2WXpvNlIyeHZZbUZzSUdGeklHTnZjbVU2T21Gc2JHOWpPanBCYkd4dlkyRjBiM0krT2pwemFISnBibXM2XFxcbk9tZ3hOelUyWlRaa1pUZzFNVE5pTWpBeDFRUTdZV3hzYjJNNk9uSmhkMTkyWldNNk9sSmhkMVpsWXp4VUxFRStPanBoYkd4dlkyRjBaVlxcXG45cGJqbzZhRFkwT1RBNU1EVTJaVGMzTVdKbVkyYldCRHRqYjNKbE9qcG1iWFE2T21KMWFXeGtaWEp6T2pwRVpXSjFaMU4wY25WamREbzZcXFxuWm1sdWFYTm9PanBvWXpaaE1qbGxPVEV4WVdKbFl6aGhPTmNFTkdOdmNtVTZPbWhoYzJnNk9rSjFhV3hrU0dGemFHVnlPanBvWVhOb1gyXFxcbjl1WlRvNmFHTm1PR1JqTlRGa01HVTJaR00yTkRuWUJDNWhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWM2T25CMWMyZzZPbWhtWkRsaVxcXG5PVE5oWVRWbU1XTXlaVFl3MlFROGMyVnlaR1U2T25ObGNqbzZVMlZ5YVdGc2FYcGxUV0Z3T2pwelpYSnBZV3hwZW1WZlpXNTBjbms2T21cXFxuZzRZamhpWW1GaVpEVTNNMlF6TVRRMDJnUmZQR0ZzYkc5ak9qcHpkSEpwYm1jNk9sTjBjbWx1WnlCaGN5QmpiM0psT2pwcGRHVnlPanAwXFxcbmNtRnBkSE02T21OdmJHeGxZM1E2T2tWNGRHVnVaRHhqYUdGeVBqNDZPbVY0ZEdWdVpEbzZhREUzTTJJMU1qSXlZamN4Wmpsa01HSGJCRFxcXG5kcGJtUmxlRzFoY0RvNmJXRndPanBKYm1SbGVFMWhjRHhMTEZZc1V6NDZPbWhoYzJnNk9tZzBNMkV4TURrNFkyUmlOVEF5WWpOajNBUmhcXFxuUEdOdmNtVTZPbk4wY2pvNmFYUmxjam82UTJoaGNrbHVaR2xqWlhNZ1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBwZEdWeVlYXFxcblJ2Y2pvNlNYUmxjbUYwYjNJK09qcHVaWGgwT2pwb1pHTTNZVFF4WkRCaE16WmxPV1UyWnQwRVlUeGpiM0psT2pwemRISTZPbWwwWlhJNlxcXG5Pa05vWVhKSmJtUnBZMlZ6SUdGeklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6bzZhWFJsY21GMGIzSTZPa2wwWlhKaGRHOXlQam82Ym1cXFxuVjRkRG82YUdSak4yRTBNV1F3WVRNMlpUbGxObWJlQkM1aGJHeHZZem82YzNSeWFXNW5PanBUZEhKcGJtYzZPbkIxYzJnNk9taG1aRGxpXFxcbk9UTmhZVFZtTVdNeVpUWXczd1JvUEdOdmNtVTZPbWwwWlhJNk9tRmtZWEIwWlhKek9qcHRZWEE2T2sxaGNEeEpMRVkrSUdGeklHTnZjbVxcXG5VNk9tbDBaWEk2T25SeVlXbDBjem82YVhSbGNtRjBiM0k2T2tsMFpYSmhkRzl5UGpvNlptOXNaRG82YURkaU1qTmlaVFJtWWpZd09EY3lcXFxuWVRUZ0JDNWhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWM2T25CMWMyZzZPbWhtWkRsaU9UTmhZVFZtTVdNeVpUWXc0UVE3WVd4c2IyXFxcbk02T25KaGQxOTJaV002T2xKaGQxWmxZenhVTEVFK09qcGhiR3h2WTJGMFpWOXBiam82YURRNVl6QmxOV1ppWmpNeFpHRmtZekxpQkdnOFxcXG5ZMjl5WlRvNmFYUmxjam82WVdSaGNIUmxjbk02T20xaGNEbzZUV0Z3UEVrc1JqNGdZWE1nWTI5eVpUbzZhWFJsY2pvNmRISmhhWFJ6T2pcXFxucHBkR1Z5WVhSdmNqbzZTWFJsY21GMGIzSStPanBtYjJ4a09qcG9Nek5tWlRKbE5HRmhNV0kwWlRCaU4rTUVOMmx1WkdWNGJXRndPanB0XFxcbllYQTZPa2x1WkdWNFRXRndQRXNzVml4VFBqbzZhR0Z6YURvNmFHSmhaV000Tm1JMU5qUmtaR05rWlRUa0JDNWhiR3h2WXpvNmMzUnlhV1xcXG41bk9qcFRkSEpwYm1jNk9uQjFjMmc2T21obVpEbGlPVE5oWVRWbU1XTXlaVFl3NVFSQWRYSnNPanB3WVhKelpYSTZPbk4wWVhKMGMxOTNcXFxuYVhSb1gzZHBibVJ2ZDNOZlpISnBkbVZmYkdWMGRHVnlPanBvTWpVeU9ESTNZelJoTkRVd01XVTFOT1lFUDJOdmNtVTZPbk5zYVdObE9qXFxcbnB6YjNKME9qcHBibk5sY25ScGIyNWZjMjl5ZEY5emFHbG1kRjlzWldaME9qcG9NRE01WWprNE5UQTNNR1JpWldRek9lY0VYenhoYkd4dlxcXG5Zem82YzNSeWFXNW5PanBUZEhKcGJtY2dZWE1nWTI5eVpUbzZhWFJsY2pvNmRISmhhWFJ6T2pwamIyeHNaV04wT2pwRmVIUmxibVE4WTJcXFxuaGhjajQrT2pwbGVIUmxibVE2T21nM1lUaGpZMlUxTXpjeFlUWmhaVEU0NkFSV1kyOXlaVG82YVhSbGNqbzZkSEpoYVhSek9qcHBkR1Z5XFxcbllYUnZjam82U1hSbGNtRjBiM0k2T21admNsOWxZV05vT2pwallXeHNPanA3ZTJOc2IzTjFjbVY5ZlRvNmFESm1NREJrTURabE5XUmtNalxcXG5RNFpUVHBCREp6WlhKa1pUbzZaR1U2T2tWeWNtOXlPanBwYm5aaGJHbGtYM1poYkhWbE9qcG9PRGc0WWpsbVptVTFOak13WW1abE9Pb0VcXFxuTjJsdVpHVjRiV0Z3T2pwdFlYQTZPa2x1WkdWNFRXRndQRXNzVml4VFBqbzZhR0Z6YURvNmFEbGxNMlJpWVdSbVlqUmlOMlUxTURUckJEXFxcbjFvWVhOb1luSnZkMjQ2T25KaGR6bzZVbUYzU1hSbGNsSmhibWRsUEZRK09qcHVaWGgwWDJsdGNHdzZPbWd5TmpkaU5ERmpOakUxWXpReFxcXG5OREJoN0FROWFHRnphR0p5YjNkdU9qcHlZWGM2T2xKaGQwbDBaWEpTWVc1blpUeFVQam82Ym1WNGRGOXBiWEJzT2pwb1pHWXdNRFkwTW1cXFxuVmhOekF3TnpNNU1lMEVVbVJsYm05ZlkyRmphR1ZmWkdseU9qcHNiMk5oYkRvNmJXRnVhV1psYzNRNk9reHZZMkZzUTJGamFHVk5ZVzVwXFxcblptVnpkRVJoZEdFNk9tbHVjMlZ5ZERvNmFEVXpaV1ZpTlRkaE5ETXpNVFptTVRudUJERnpaWEprWlRvNlpHVTZPa1Z5Y205eU9qcHBiblxcXG5aaGJHbGtYM1I1Y0dVNk9taGpORFEyTkROa00yVTFOR1l5WWpJMjd3UkZjR0Z5YTJsdVoxOXNiM1JmWTI5eVpUbzZjR0Z5YTJsdVoxOXNcXFxuYjNRNk9teHZZMnRmWW5WamEyVjBYMk5vWldOclpXUTZPbWcxTnpSbU56UmpNMlJoTlRGaVlUazU4QVE1WVd4c2IyTTZPblpsWXpvNlZtXFxcblZqUEZRc1FUNDZPbVY0ZEdWdVpGOWtaWE4xWjJGeVpXUTZPbWhoT1RreFlUbGxaRGxtWmpsallUSTE4UVJJUEdGc2JHOWpPanB6ZEhKcFxcXG5ibWM2T2tSeVlXbHVJR0Z6SUdOdmNtVTZPbTl3Y3pvNlpISnZjRG82UkhKdmNENDZPbVJ5YjNBNk9taGxOakZsWkRWaVpEa3hZVEprWVRcXFxubG04Z1JyUEdoaGMyaGljbTkzYmpvNmJXRndPanBJWVhOb1RXRndQRXNzVml4VExFRStJR0Z6SUdOdmNtVTZPbWwwWlhJNk9uUnlZV2wwXFxcbmN6bzZZMjlzYkdWamREbzZSWGgwWlc1a1BDaExMRllwUGo0Nk9tVjRkR1Z1WkRvNmFEQmhaREkxWlRFMFpXVTVZMlprTjJIekJEUmpiM1xcXG5KbE9qcG9ZWE5vT2pwQ2RXbHNaRWhoYzJobGNqbzZhR0Z6YUY5dmJtVTZPbWd5Tnpka1lURmhZelU0T0dRMU1HRTE5QVEwWTI5eVpUbzZcXFxuYUdGemFEbzZRblZwYkdSSVlYTm9aWEk2T21oaGMyaGZiMjVsT2pwb09UaG1NemxtTm1KaVpHRTFOelUzWS9VRU5ITmxjbVJsT2pwa1pUXFxcbm82YzJsNlpWOW9hVzUwT2pwbWNtOXRYMkp2ZFc1a2N6bzZhR1ZpT1RabU56UmpPREkwT0RnNFpXSDJCSFk4WkdWdWIxOWpZV05vWlY5a1xcXG5hWEk2T21kc2IySmhiRG82UjJ4dlltRnNTSFIwY0VOaFkyaGxQRVZ1ZGo0Z1lYTWdaR1Z1YjE5allXTm9aVjlrYVhJNk9tTmhZMmhsT2pcXFxucElkSFJ3UTJGamFHVStPanB5WldGa1gyWnBiR1ZmWW5sMFpYTTZPbWczWWpVNU5UTm1ZMll6TlRFMVpEVmw5d1FaWDE5M1ltZGZiRzlqXFxcbllXeG9kSFJ3WTJGamFHVmZabkpsWmZnRVl6eHpkR1E2T25CaGJtbGphMmx1WnpvNlltVm5hVzVmY0dGdWFXTTZPbEJoYm1salVHRjViR1xcXG45aFpEeEJQaUJoY3lCamIzSmxPanB3WVc1cFl6bzZRbTk0VFdWVmNENDZPblJoYTJWZlltOTRPanBvTlRReFltUmpNRFJoWVdNMk9UWXhcXFxuWXZrRVhEeGpiM0psT2pwamFHRnlPanBVYjB4dmQyVnlZMkZ6WlNCaGN5QmpiM0psT2pwcGRHVnlPanAwY21GcGRITTZPbWwwWlhKaGRHXFxcbjl5T2pwSmRHVnlZWFJ2Y2o0Nk9tNWxlSFE2T21nNU5EUXdOelEyWmpObVpURXlNek5rK2dRMmFXNWtaWGh0WVhBNk9tMWhjRG82U1c1a1xcXG5aWGhOWVhBOFN5eFdMRk0rT2pwblpYUTZPbWhpT1RZeVlqSmhZemRrWlRkak16Um0rd1E1WTI5eVpUbzZiM0J6T2pwbWRXNWpkR2x2YmpcXFxubzZSbTVQYm1ObE9qcGpZV3hzWDI5dVkyVTZPbWczT0RobU5ERTVZekF4TURBeE56VXcvQVJmUEdOdmNtVTZPbk4wY2pvNmFYUmxjam82XFxcblUzQnNhWFJPUEZBK0lHRnpJR052Y21VNk9tbDBaWEk2T25SeVlXbDBjem82YVhSbGNtRjBiM0k2T2tsMFpYSmhkRzl5UGpvNmJtVjRkRFxcXG5vNmFEUmpOVFptWlRGaU9ERTROMlV5WXpYOUJHNDhZMjl5WlRvNmIzQnpPanB5WVc1blpUbzZVbUZ1WjJWSmJtTnNkWE5wZG1VOGRYTnBcXFxuZW1VK0lHRnpJR052Y21VNk9uTnNhV05sT2pwcGJtUmxlRG82VTJ4cFkyVkpibVJsZUR4YlZGMCtQam82YVc1a1pYaGZiWFYwT2pwb1pUXFxcbmRpTURVeE4yUm1aRGcwTnpsaE1mNEVRMkZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrT2pwemQyRndYM0psYlc5MlpUbzZZWE56WlhKMFxcXG5YMlpoYVd4bFpEbzZhRFExTkRaalpXRXhNalZtT1RabU5XSC9CRDVoYkd4dll6bzZkbVZqT2pwV1pXTThWQ3hCUGpvNmNtVnRiM1psT2pcXFxucGhjM05sY25SZlptRnBiR1ZrT2pwb1lUQTRNbVkxTWpoaU4yWTFPVFkxTm9BRlFXRnNiRzlqT2pwMlpXTTZPbFpsWXp4VUxFRStPanB6XFxcbmNHeHBkRjl2Wm1ZNk9tRnpjMlZ5ZEY5bVlXbHNaV1E2T21nNU56QTFPRGxsWXpBMVlUSTRNalF4Z1FVMlkyOXlaVG82Y0dGdWFXTnJhV1xcXG41bk9qcHdZVzVwWTE5aWIzVnVaSE5mWTJobFkyczZPbWhqWlRJd056QTVObUk1TmpnMU5qRmtnZ1ZCWTI5eVpUbzZjMnhwWTJVNk9tbHVcXFxuWkdWNE9qcHpiR2xqWlY5emRHRnlkRjlwYm1SbGVGOXNaVzVmWm1GcGJEbzZhRE5sTVRBeVlqYzFaREkyTmpjMU5qV0RCVDlqYjNKbE9qXFxcbnB6YkdsalpUbzZhVzVrWlhnNk9uTnNhV05sWDJWdVpGOXBibVJsZUY5c1pXNWZabUZwYkRvNmFETTFNMk5sTW1VNU16WXlOemN4WlRpRVxcXG5CVDFqYjNKbE9qcHpiR2xqWlRvNmFXNWtaWGc2T25Oc2FXTmxYMmx1WkdWNFgyOXlaR1Z5WDJaaGFXdzZPbWcyWlRKbE5HRTFaalpoTW1cXFxuUmlZVEkzaFFWT1kyOXlaVG82YzJ4cFkyVTZPanhwYlhCc0lGdFVYVDQ2T21OdmNIbGZabkp2YlY5emJHbGpaVG82YkdWdVgyMXBjMjFoXFxcbmRHTm9YMlpoYVd3Nk9tZzVOalUzTm1Rek5qTXlZekUyT1dKaGhnVm9QR052Y21VNk9tbDBaWEk2T21Ga1lYQjBaWEp6T2pwdFlYQTZPa1xcXG4xaGNEeEpMRVkrSUdGeklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6bzZhWFJsY21GMGIzSTZPa2wwWlhKaGRHOXlQam82Wm05c1pEbzZcXFxuYURRMU16Y3lNRE0xWTJZelpEUmpPR1NIQlRacGJtUmxlRzFoY0RvNmJXRndPanBKYm1SbGVFMWhjRHhMTEZZc1V6NDZPbWRsZERvNmFHXFxcbkU1WVRNMU9HRTROak13TW1ReVptYUlCVHc4VkNCaGN5QmhiR3h2WXpvNmMzUnlhVzVuT2pwVWIxTjBjbWx1Wno0Nk9uUnZYM04wY21sdVxcXG5aem82YURSaE5UTTJabUZqT0RNeFpqZGxNVGlKQlROaGJHeHZZem82YzNSeWFXNW5PanBUZEhKcGJtYzZPbVp5YjIxZmRYUm1PRG82YUdcXFxuVTBOV1U0WkdFeU1UVmlNVFEzTURTS0JWTThZMjl5WlRvNmFHRnphRG82YzJsd09qcFRhWEF4TTFKdmRXNWtjeUJoY3lCamIzSmxPanBvXFxcbllYTm9PanB6YVhBNk9sTnBjRDQ2T21OZmNtOTFibVJ6T2pwb01HUTFOVGRoT1dOaE1EQXpaR1EyWVlzRlh6eHpaWEprWlY5cWMyOXVPalxcXG5welpYSTZPbEJ5WlhSMGVVWnZjbTFoZEhSbGNpQmhjeUJ6WlhKa1pWOXFjMjl1T2pwelpYSTZPa1p2Y20xaGRIUmxjajQ2T21WdVpGOXZcXFxuWW1wbFkzUTZPbWc1TURsbU16QXhaV0l4TWpSbE56TTNqQVUyYVc1a1pYaHRZWEE2T20xaGNEbzZTVzVrWlhoTllYQThTeXhXTEZNK09qXFxcbnBuWlhRNk9tZ3pZbVkxWW1FeFpHUmtOVEJpWmpkbGpRVTJhVzVrWlhodFlYQTZPbTFoY0RvNlNXNWtaWGhOWVhBOFN5eFdMRk0rT2pwblxcXG5aWFE2T21nMk56UmlPVEZtTVdWaE5XTmtOemxtamdVMmFHRnphR0p5YjNkdU9qcHlZWGM2T2xKaGQxUmhZbXhsUEZRc1FUNDZPbVpwYm1cXFxuUTZPbWd5TmpnM05qY3dNRGc1WXpneFpHWTJqd1ZUUEdOdmNtVTZPbWhoYzJnNk9uTnBjRG82VTJsd01UTlNiM1Z1WkhNZ1lYTWdZMjl5XFxcblpUbzZhR0Z6YURvNmMybHdPanBUYVhBK09qcGpYM0p2ZFc1a2N6bzZhREJrTlRVM1lUbGpZVEF3TTJSa05tR1FCVzQ4WTI5eVpUbzZhWFxcXG5SbGNqbzZZV1JoY0hSbGNuTTZPbVpwYkhSbGNqbzZSbWxzZEdWeVBFa3NVRDRnWVhNZ1kyOXlaVG82YVhSbGNqbzZkSEpoYVhSek9qcHBcXFxuZEdWeVlYUnZjam82U1hSbGNtRjBiM0krT2pwdVpYaDBPanBvTVdVNVkyRmxNRGxrT1RNeFpqbGlaWkVGS0dsa2JtRTZPbkIxYm5samIyXFxcblJsT2pwaFpHRndkRG82YUdSa1pqSm1aREZtWVdJME56QTJaVGVTQlR4a2JHMWhiR3h2WXpvNlpHeHRZV3hzYjJNNk9rUnNiV0ZzYkc5alxcXG5QRUUrT2pwcGJtbDBYM1J2Y0RvNmFEZ3dZemRsTlRneFpEWXdNelJsTXplVEJVbzhZMjl5WlRvNmIzQnpPanB5WVc1blpUbzZVbUZ1WjJcXFxuVThTV1I0UGlCaGN5QmpiM0psT2pwbWJYUTZPa1JsWW5WblBqbzZabTEwT2pwb1lUVTBaamxrTlRaaE4yTm1NakZpTVpRRk9qeDFjbXc2XFxcbk9sVnliQ0JoY3lCamIzSmxPanBqYkc5dVpUbzZRMnh2Ym1VK09qcGpiRzl1WlRvNmFHTmpPR0k1WXpnNU1HRTNZakZtWm1HVkJTeGpiM1xcXG5KbE9qcDBhVzFsT2pwRWRYSmhkR2x2YmpvNmJtVjNPanBvTVRnd05XRTRPRFE1WVdJNFlXVTNPWllGVkhOMFpEbzZjM2x6T2pwamIyMXRcXFxuYjI0Nk9uUm9jbVZoWkY5c2IyTmhiRG82YkdGNmVUbzZUR0Y2ZVV0bGVVbHVibVZ5UEZRK09qcHBibWwwYVdGc2FYcGxPanBvT0dJMFl6XFxcbkEzTldJd1pqZ3lOekZsTTVjRlBYTmxjbVJsWDJwemIyNDZPbVJsT2pwUVlYSnpaWEpPZFcxaVpYSTZPbWx1ZG1Gc2FXUmZkSGx3WlRvNlxcXG5hRFEwWXpoaU1XRXpaRFZpTXprNVlqS1lCUzlqYjNKbE9qcHpkSEk2T2p4cGJYQnNJSE4wY2o0Nk9uTndiR2wwT2pwb05UWXpOV0UwTVRcXFxua3lORFJqWkRoak1aa0ZMMk52Y21VNk9uTjBjam82UEdsdGNHd2djM1J5UGpvNmMzQnNhWFE2T21nME5XUXlOemxqWWpSak5EZzJaRGMwXFxcbm1nVXVhV1J1WVRvNmRYUnpORFk2T21selgySnBaR2xmWkc5dFlXbHVPanBvTTJSaFkyWXlOekpoT0dWaU1XWm1OcHNGWkR4d1pYSmpaV1xcXG41MFgyVnVZMjlrYVc1bk9qcFFaWEpqWlc1MFJHVmpiMlJsSUdGeklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6bzZhWFJsY21GMGIzSTZcXFxuT2tsMFpYSmhkRzl5UGpvNmJtVjRkRG82YURReFpHRTVZbVkyTVdZd01XVXdNamFjQlR3OFZDQmhjeUJoYkd4dll6bzZjM1J5YVc1bk9qXFxcbnBVYjFOMGNtbHVaejQ2T25SdlgzTjBjbWx1WnpvNmFETTFabVptTkdNMVl6ZGpaakUyWldhZEJVNWtaVzV2WDJOaFkyaGxYMlJwY2pvNlxcXG5iRzlqWVd3Nk9reHZZMkZzUTJGamFHVlRkV0pRWVhSb09qcGhjMTl3WVhSb1gyWnliMjFmY205dmREbzZhR1ZoWWpBd00yUmpOek0wWkRcXFxuUTNNRGllQlhJOFpHVnViMTlqWVdOb1pWOWthWEk2T25kaGMyMDZPa2RzYjJKaGJFaDBkSEJEWVdOb1pTQmhjeUIzWVhOdFgySnBibVJuXFxcblpXNDZPbU52Ym5abGNuUTZPblJ5WVdsMGN6bzZSbkp2YlZkaGMyMUJZbWsrT2pwbWNtOXRYMkZpYVRvNmFEUmxNemd6WkRSbE9XWXpPRFxcXG5Oak5ER2ZCVWM4WVd4c2IyTTZPbk4wY21sdVp6bzZVM1J5YVc1bklHRnpJR052Y21VNk9tTnNiMjVsT2pwRGJHOXVaVDQ2T21Oc2IyNWxcXFxuT2pwb05EY3dNbUZoWWpJNFpXSm1ORGRpWTZBRkwyRnNiRzlqT2pwMlpXTTZPbFpsWXp4VUxFRStPanB5WlcxdmRtVTZPbWhrTVRJNVlXXFxcblE1WlRZM05UbGxZV1Uzb1FWSGFXNWtaWGh0WVhBNk9tMWhjRG82WTI5eVpUbzZTVzVrWlhoTllYQkRiM0psUEVzc1ZqNDZPbWRsZEY5cFxcXG5ibVJsZUY5dlpqbzZhR015T1RjMFpHVmlPREEzTldVMk5ES2lCVXBwYm1SbGVHMWhjRG82YldGd09qcGpiM0psT2pwSmJtUmxlRTFoY0VcXFxuTnZjbVU4U3l4V1BqbzZjbVZ6WlhKMlpWOWxiblJ5YVdWek9qcG9OalV4TkdJek5UTm1PR1JqTjJZeE1hTUZTbWx1WkdWNGJXRndPanB0XFxcbllYQTZPbU52Y21VNk9rbHVaR1Y0VFdGd1EyOXlaVHhMTEZZK09qcHlaWE5sY25abFgyVnVkSEpwWlhNNk9taGpZMkZsWmpNelpUQmhZV1xcXG5RNU5UZzNwQVZLYVc1a1pYaHRZWEE2T20xaGNEbzZZMjl5WlRvNlNXNWtaWGhOWVhCRGIzSmxQRXNzVmo0Nk9uSmxjMlZ5ZG1WZlpXNTBcXFxuY21sbGN6bzZhRGsxTVRNNVptVmtObU14WTJFM01UQ2xCVFpvWVhOb1luSnZkMjQ2T25KaGR6bzZVbUYzVkdGaWJHVThWQ3hCUGpvNlptXFxcbmx1WkRvNmFEUmlNakl6TkRkaU1HWm1NakZsTkRTbUJUaG9ZWE5vWW5KdmQyNDZPbkpoZHpvNlVtRjNWR0ZpYkdVOFZDeEJQam82YVc1elxcXG5aWEowT2pwb1pUWTRORGMwTXpNMk9UUmlZVGczWmFjRlBHTnZjbVU2T25OMGNqbzZQR2x0Y0d3Z2MzUnlQam82ZEhKcGJWOXpkR0Z5ZEZcXFxuOXRZWFJqYUdWek9qcG9NMlpsTmpJNU1XUXlZbVEwTUdZeU1xZ0ZaanhqYjNKbE9qcHBkR1Z5T2pwaFpHRndkR1Z5Y3pvNmNtVjJPanBTXFxcblpYWThTVDRnWVhNZ1kyOXlaVG82YVhSbGNqbzZkSEpoYVhSek9qcHBkR1Z5WVhSdmNqbzZTWFJsY21GMGIzSStPanB1WlhoME9qcG9PR1xcXG5Rd1pqVTJZemhpWWpObU5qUTVZcWtGT2p3bWJYVjBJRmNnWVhNZ1kyOXlaVG82Wm0xME9qcFhjbWwwWlQ0Nk9uZHlhWFJsWDJadGREbzZcXFxuYURreVkyVXdZakZrWldFek5tVmtaVEdxQlRvOEptMTFkQ0JYSUdGeklHTnZjbVU2T21adGREbzZWM0pwZEdVK09qcDNjbWwwWlY5bWJYXFxcblE2T21nMU5EWTBPVGszTTJGbVptSXpaalZscXdVNlBDWnRkWFFnVnlCaGN5QmpiM0psT2pwbWJYUTZPbGR5YVhSbFBqbzZkM0pwZEdWZlxcXG5abTEwT2pwb09ERmhaREF6T1RRek9EWXhZV1k0WTZ3Rk9qd21iWFYwSUZjZ1lYTWdZMjl5WlRvNlptMTBPanBYY21sMFpUNDZPbmR5YVhcXFxuUmxYMlp0ZERvNmFHVTVNbVJqWXpRM1pEazBZVFEwTVdhdEJUSmpiM0psT2pwbWJYUTZPa1p2Y20xaGRIUmxjam82ZDNKcGRHVmZabTEwXFxcbk9qcG9OR1ZpWlRRNE56SXdaV0kzTnpNMk5LNEZhenhvWVhOb1luSnZkMjQ2T20xaGNEbzZTR0Z6YUUxaGNEeExMRllzVXl4QlBpQmhjeVxcXG5CamIzSmxPanBwZEdWeU9qcDBjbUZwZEhNNk9tTnZiR3hsWTNRNk9rVjRkR1Z1WkR3b1N5eFdLVDQrT2pwbGVIUmxibVE2T21obE5HWmxcXFxuTjJZeU9UZG1aVEppT1RrMnJ3VThjMlZ5WkdVNk9uTmxjam82VTJWeWFXRnNhWHBsVFdGd09qcHpaWEpwWVd4cGVtVmZaVzUwY25rNk9tXFxcbmhoTlRsaE5XRXdNV0ZtTkRkbE1UTmhzQVU4YzJWeVpHVTZPbk5sY2pvNlUyVnlhV0ZzYVhwbFRXRndPanB6WlhKcFlXeHBlbVZmWlc1MFxcXG5jbms2T21neU1qTTFZelZoT1dKaVkyUmxZVGc0c1FWZVBITmxjbVJsWDJwemIyNDZPbk5sY2pvNlEyOXRjRzkxYm1ROFZ5eEdQaUJoY3lcXFxuQnpaWEprWlRvNmMyVnlPanBUWlhKcFlXeHBlbVZOWVhBK09qcHpaWEpwWVd4cGVtVmZhMlY1T2pwb09HWTNNMkUxTTJFNE0yTXpPRE0wXFxcbk9MSUZQSE5sY21SbE9qcHpaWEk2T2xObGNtbGhiR2w2WlUxaGNEbzZjMlZ5YVdGc2FYcGxYMlZ1ZEhKNU9qcG9OREJrTlRVeE9XTXhOVFxcXG5jNFl6SXdZYk1GUEhObGNtUmxPanB6WlhJNk9sTmxjbWxoYkdsNlpVMWhjRG82YzJWeWFXRnNhWHBsWDJWdWRISjVPanBvT1RNd09USmlcXFxuTURSa1lUZ3lNekF3T2JRRlhqeHpaWEprWlY5cWMyOXVPanB6WlhJNk9rTnZiWEJ2ZFc1a1BGY3NSajRnWVhNZ2MyVnlaR1U2T25ObGNqXFxcbm82VTJWeWFXRnNhWHBsVFdGd1BqbzZjMlZ5YVdGc2FYcGxYMnRsZVRvNmFHTmlOR1JpTVdKbE9XWTJNMlk0TmphMUJUeHpaWEprWlRvNlxcXG5jMlZ5T2pwVFpYSnBZV3hwZW1WTllYQTZPbk5sY21saGJHbDZaVjlsYm5SeWVUbzZhRGszWWpRMVpEVXdOVFJsT1dVd01EZTJCVHh6WlhcXFxuSmtaVG82YzJWeU9qcFRaWEpwWVd4cGVtVk5ZWEE2T25ObGNtbGhiR2w2WlY5bGJuUnllVG82YUdFM1ptTTFaVGxrTkRKbE1EQmlObUczXFxcbkJUQnpaWEprWlY5cWMyOXVPanB5WldGa09qcHVaWGgwWDI5eVgyVnZaam82YUdSa1lqYzBPRE00WkdVMlpUUTNOamU0QlRGamIzSmxPalxcXG5wd1lXNXBZMnRwYm1jNk9tRnpjMlZ5ZEY5bVlXbHNaV1E2T21nM1lXRTBZV05tWlRabU5URXpaVEkydVFVeFkyOXlaVG82Y0dGdWFXTnJcXFxuYVc1bk9qcGhjM05sY25SZlptRnBiR1ZrT2pwb056aGpaV1F3TVdSa05EQTFOV0U1TUxvRk1XTnZjbVU2T25CaGJtbGphMmx1WnpvNllYXFxcbk56WlhKMFgyWmhhV3hsWkRvNmFEUXpNV0ptTlRNNU1HVmlaR0ZpWVRHN0Jaa0JQSE5sY21SbE9qcGtaVG82YVcxd2JITTZPanhwYlhCc1xcXG5JSE5sY21SbE9qcGtaVG82UkdWelpYSnBZV3hwZW1VZ1ptOXlJSE4wWkRvNmRHbHRaVG82VTNsemRHVnRWR2x0WlQ0Nk9tUmxjMlZ5YVdcXFxuRnNhWHBsT2pwR2FXVnNaQ0JoY3lCelpYSmtaVG82WkdVNk9rUmxjMlZ5YVdGc2FYcGxQam82WkdWelpYSnBZV3hwZW1VNk9taG1Zems0XFxcbk1tWmtPREUwT0dJeU1XVXl2QVZwYzJWeVpHVTZPbVJsT2pwcGJYQnNjem82UEdsdGNHd2djMlZ5WkdVNk9tUmxPanBFWlhObGNtbGhiR1xcXG5sNlpTQm1iM0lnWVd4c2IyTTZPbk4wY21sdVp6bzZVM1J5YVc1blBqbzZaR1Z6WlhKcFlXeHBlbVU2T21oa01XUmxZamc0T1dZd05qSTFcXFxuT0RobXZRVTJhR0Z6YUdKeWIzZHVPanB5WVhjNk9sSmhkMVJoWW14bFBGUXNRVDQ2T21acGJtUTZPbWcyWVdWaE5EWXlNR0V6TVRZNVkyXFxcblUzdmdVNGFHRnphR0p5YjNkdU9qcHlZWGM2T2xKaGQxUmhZbXhsUEZRc1FUNDZPbWx1YzJWeWREbzZhRGRoTm1NeVpUVTNabVl5WkRBd1xcXG5NMmEvQldselpYSmtaVG82WkdVNk9tbHRjR3h6T2pvOGFXMXdiQ0J6WlhKa1pUbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbElHWnZjaUJoYkdcXFxueHZZem82YzNSeWFXNW5PanBUZEhKcGJtYytPanBrWlhObGNtbGhiR2w2WlRvNmFEVTRORGd3TURnd1lqUTRORGszTUdQQUJUZHpkR1E2XFxcbk9tRnNiRzlqT2pwa1pXWmhkV3gwWDJGc2JHOWpYMlZ5Y205eVgyaHZiMnM2T21oa056a3pPV1l4TURZeU0yWmpNRGRrd1FWRWMyVnlaR1xcXG5VNk9tUmxPanAyWVd4MVpUbzZUV0Z3UkdWelpYSnBZV3hwZW1WeVBFa3NSVDQ2T201bGVIUmZjR0ZwY2pvNmFETTVNelkxT1RCbE1XVTVcXFxuTWpRNFpUakNCUzVqYjNKbE9qcG1iWFE2T2xkeWFYUmxPanAzY21sMFpWOW1iWFE2T21obE5UY3pPVFZpTkdaaFlqSmhZalJqd3dVdVkyXFxcbjl5WlRvNlptMTBPanBYY21sMFpUbzZkM0pwZEdWZlptMTBPanBvTVRoak9HTTROalJtWXpFMlltVTFOOFFGTldSbGJtOWZiV1ZrYVdGZlxcXG5kSGx3WlRvNmMzQmxZMmxtYVdWeVgzUnZYM0JoZEdnNk9taGtNVFE1WVRaa04yUmtOekE1TXpVenhRVTZZMjl5WlRvNmMzUnlPam84YVdcXFxuMXdiQ0J6ZEhJK09qcDBjbWx0WDJWdVpGOXRZWFJqYUdWek9qcG9abVZqWW1KbFpXRXpaamhpWXpabU44WUZMbVJoZEdGZmRYSnNPanB0XFxcbmFXMWxPanAyWVd4cFpGOTJZV3gxWlRvNmFEVmlOamhsTlRKbE9UVTBNR0ZtWkdMSEJTNWpiM0psT2pwbWJYUTZPbGR5YVhSbE9qcDNjbVxcXG5sMFpWOW1iWFE2T21nM05qRmxNVGt3TlRJMFlqazBNVGhoeUFVL1kyOXlaVG82YzJ4cFkyVTZPbk52Y25RNk9tbHVjMlZ5ZEdsdmJsOXpcXFxuYjNKMFgzTm9hV1owWDJ4bFpuUTZPbWd4WVRsbE4yUmpZemcyTldSaE9UQTV5UVV1WTI5eVpUbzZabTEwT2pwWGNtbDBaVG82ZDNKcGRHXFxcblZmWm0xME9qcG9OVGxpWlRVNVlUazJZVFEyTXpBeVljb0ZRanhoYkd4dll6bzZkbVZqT2pwV1pXTThWQ3hCUGlCaGN5QmpiM0psT2pwbVxcXG5iWFE2T2tSbFluVm5Qam82Wm0xME9qcG9aakl6T0dKbU1qVm1aR0ZqWWpCalljc0ZMbU52Y21VNk9tWnRkRG82VjNKcGRHVTZPbmR5YVhcXFxuUmxYMlp0ZERvNmFEaGhaR0ZoWXpWbVlUQTBOVEZrTWpmTUJYQThZV3hzYjJNNk9uWmxZem82Vm1WalBGUStJR0Z6SUdGc2JHOWpPanAyXFxcblpXTTZPbk53WldOZlpuSnZiVjlwZEdWeVgyNWxjM1JsWkRvNlUzQmxZMFp5YjIxSmRHVnlUbVZ6ZEdWa1BGUXNTVDQrT2pwbWNtOXRYMlxcXG5sMFpYSTZPbWczTlRCa1lUTm1ZV0kxTVdSbE9HSmt6UVV5YzJWeVpHVTZPbVJsT2pwRmNuSnZjam82YldsemMybHVaMTltYVdWc1pEbzZcXFxuYUdJMllqQXlOMlptTURnNE5UUXdaRGZPQlRSelpYSmtaVG82WkdVNk9rVnljbTl5T2pwa2RYQnNhV05oZEdWZlptbGxiR1E2T21oaE1XXFxcblV4TXpZek9XSmlNekEzTm1WaXp3VWpkWEpzT2pwVmNtdzZPbk5qYUdWdFpUbzZhREkxTnpJMk9Ea3pOVFEwTkdOaFpEVFFCVDVqYjNKbFxcXG5PanB2Y0hScGIyNDZPazl3ZEdsdmJqeFVQam82WjJWMFgyOXlYMmx1YzJWeWRGOTNhWFJvT2pwb1lUUmtaamsxWkRjNU16a3dZamd5TjlcXFxuRUZSenhqYUdGeUlHRnpJR052Y21VNk9uTjBjam82Y0dGMGRHVnliam82VUdGMGRHVnliajQ2T21sdWRHOWZjMlZoY21Ob1pYSTZPbWczXFxcbk0yVTJOekprWVdZMVptSm1ORFU1MGdWMVBHTnZjbVU2T25OMGNqbzZhWFJsY2pvNlEyaGhja2x1WkdsalpYTWdZWE1nWTI5eVpUbzZhWFxcXG5SbGNqbzZkSEpoYVhSek9qcGtiM1ZpYkdWZlpXNWtaV1E2T2tSdmRXSnNaVVZ1WkdWa1NYUmxjbUYwYjNJK09qcHVaWGgwWDJKaFkyczZcXFxuT21oa00yUXlaRGMxTlRCbVlUVXlPRFZrMHdWSFBHTm9ZWElnWVhNZ1kyOXlaVG82YzNSeU9qcHdZWFIwWlhKdU9qcFFZWFIwWlhKdVBqXFxcbm82YVc1MGIxOXpaV0Z5WTJobGNqbzZhRGN6WlRZM01tUmhaalZtWW1ZME5UblVCU3gxY213Nk9uQmhjbk5sY2pvNlpHVm1ZWFZzZEY5d1xcXG5iM0owT2pwb016STNNalUwTVdVNFkyVm1NekUxTWRVRlJ6eGphR0Z5SUdGeklHTnZjbVU2T25OMGNqbzZjR0YwZEdWeWJqbzZVR0YwZEdcXFxuVnliajQ2T21sdWRHOWZjMlZoY21Ob1pYSTZPbWczTTJVMk56SmtZV1kxWm1KbU5EVTUxZ1V2YzNSa09qcHdZWFJvT2pwUVlYUm9PanAwXFxcbmIxOXdZWFJvWDJKMVpqbzZhRGczWVdRelpHRmtNVEZpTTJFeE16YlhCVHB6ZEdRNk9uTjVjem82ZDJGemJUbzZiM05mYzNSeU9qcFRiR1xcXG5salpUbzZkRzlmYjNkdVpXUTZPbWd6TTJFMk5ETTJOalprWVdJd1pEQmoyQVUvYVc1a1pYaHRZWEE2T20xaGNEbzZTVzVrWlhoTllYQThcXFxuU3l4V0xGTStPanBuWlhSZmFXNWtaWGhmYjJZNk9taG1aR0ZtTjJFNFlqYzJZekE0TXpFNTJRVWpkWEpzT2pwVmNtdzZPbk5qYUdWdFpUXFxcbm82YURJMU56STJPRGt6TlRRME5HTmhaRFRhQlVROGRYSnNPanBWY213Z1lYTWdjMlZ5WkdVNk9tUmxPanBFWlhObGNtbGhiR2w2WlQ0NlxcXG5PbVJsYzJWeWFXRnNhWHBsT2pwb05qQXpPV0poWlRZMVpqRm1NV0kxWWRzRlBITmxjbVJsT2pwelpYSTZPbE5sY21saGJHbDZaVTFoY0RcXFxubzZjMlZ5YVdGc2FYcGxYMlZ1ZEhKNU9qcG9aVGMzTURNNE56STBZalUzWXpabU5kd0ZZRHh6WlhKa1pWOXFjMjl1T2pwelpYSTZPa052XFxcbmJYQnZkVzVrUEZjc1JqNGdZWE1nYzJWeVpHVTZPbk5sY2pvNlUyVnlhV0ZzYVhwbFRXRndQam82YzJWeWFXRnNhWHBsWDNaaGJIVmxPalxcXG5wb1ltWXdNV1ExWXpJMk9USmhOelpqTWQwRk9HaGhjMmhpY205M2JqbzZjbUYzT2pwU1lYZFVZV0pzWlR4VUxFRStPanBwYm5ObGNuUTZcXFxuT21nNFlXVTRZMlEwWlROak4yTm1ZMkpoM2dWa1BHUmxibTlmWTJGamFHVmZaR2x5T2pwbmJHOWlZV3c2T2xWeWJGUnZSbWxzWlc1aGJXXFxcblZEYjI1MlpYSnphVzl1UlhKeWIzSWdZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPanBvTjJNeU1UVXhaRGxpTURNelxcXG5Nekk1T2Q4Rk9qd21iWFYwSUZjZ1lYTWdZMjl5WlRvNlptMTBPanBYY21sMFpUNDZPbmR5YVhSbFgyWnRkRG82YURVeU5HSmpOV1JoWmpcXFxuTmpZVFpqTWpQZ0JUbzhKbTExZENCWElHRnpJR052Y21VNk9tWnRkRG82VjNKcGRHVStPanAzY21sMFpWOW1iWFE2T21nME5qazVOamRqXFxcbk9HTXdOVFZoTWpneTRRVTljR0Z5YTJsdVoxOXNiM1JmWTI5eVpUbzZjR0Z5YTJsdVoxOXNiM1E2T214dlkydGZZblZqYTJWME9qcG9PVFxcXG5FMFl6QTFOekEzWm1KbE9XTTRNK0lGUWp4MWNtdzZPbWh2YzNRNk9raHZjM1E4VXo0Z1lYTWdZMjl5WlRvNlptMTBPanBFYVhOd2JHRjVcXFxuUGpvNlptMTBPanBvTnpneE9XRXpaV1F5WVdWa1ptVTBNK01GT2p3bWJYVjBJRmNnWVhNZ1kyOXlaVG82Wm0xME9qcFhjbWwwWlQ0Nk9uXFxcbmR5YVhSbFgyWnRkRG82YURFME1HVXpaakE1Tm1WaE5HTmtObUhrQlRCMWNtdzZPbkJoY25ObGNqbzZVMk5vWlcxbFZIbHdaVG82Wm5KdlxcXG5iVG82YURnNE56UmhORGcyTm1FNU5UQTFNam5sQlhvOFkyOXlaVG82YzJ4cFkyVTZPbk52Y25RNk9tMWxjbWRsWDNOdmNuUTZPbEoxYmxcXFxuWmxZenhTZFc1QmJHeHZZMFlzVW5WdVJHVmhiR3h2WTBZK0lHRnpJR052Y21VNk9tOXdjem82YVc1a1pYZzZPa2x1WkdWNFBIVnphWHBsXFxcblBqNDZPbWx1WkdWNE9qcG9NR0pqT1dVM1pHSTBOV0V5WkRVNVpPWUZYenhoYkd4dll6bzZjM1J5YVc1bk9qcFRkSEpwYm1jZ1lYTWdZMlxcXG45eVpUbzZhWFJsY2pvNmRISmhhWFJ6T2pwamIyeHNaV04wT2pwRmVIUmxibVE4Sm5OMGNqNCtPanBsZUhSbGJtUTZPbWhsTURGallqUTVcXFxuWm1Fell6ZG1Nak5oNXdWUFBIQmxjbU5sYm5SZlpXNWpiMlJwYm1jNk9sQmxjbU5sYm5SRmJtTnZaR1VnWVhNZ1kyOXlaVG82Wm0xME9qXFxcbnBFYVhOd2JHRjVQam82Wm0xME9qcG9aVGsxTkdZM1pURmlNek13TnpObU9lZ0ZPandtYlhWMElGY2dZWE1nWTI5eVpUbzZabTEwT2pwWFxcXG5jbWwwWlQ0Nk9uZHlhWFJsWDJadGREbzZhRFJsTVdRMFlUQTNOalU0WlRNMk9UUHBCVEZoYkd4dll6bzZjM2x1WXpvNlFYSmpQRlErT2pcXFxucGtjbTl3WDNOc2IzYzZPbWhtWlRGaU5EUmhNR1kxTldSa1ptRXc2Z1ZXWTI5eVpUbzZjM1J5T2pwMGNtRnBkSE02T2p4cGJYQnNJR052XFxcbmNtVTZPbTl3Y3pvNmFXNWtaWGc2T2tsdVpHVjRQRWsrSUdadmNpQnpkSEkrT2pwcGJtUmxlRG82YURnM01XVTBPVE0yTm1Zd05qTm1ZMlxcXG5QckJZY0JZV3hzYjJNNk9uWmxZem82YVc1ZmNHeGhZMlZmWTI5c2JHVmpkRG82UEdsdGNHd2dZV3hzYjJNNk9uWmxZem82YzNCbFkxOW1cXFxuY205dFgybDBaWEk2T2xOd1pXTkdjbTl0U1hSbGNqeFVMRWsrSUdadmNpQmhiR3h2WXpvNmRtVmpPanBXWldNOFZENCtPanBtY205dFgyXFxcbmwwWlhJNk9tZ3pPREF6WXpjNVpXTmpabVl6T0RFMzdBVm1QSE5sY21SbFgzZGhjMjFmWW1sdVpHZGxiam82YzJWeU9qcE5ZWEJUWlhKcFxcXG5ZV3hwZW1WeUlHRnpJSE5sY21SbE9qcHpaWEk2T2xObGNtbGhiR2w2WlUxaGNENDZPbk5sY21saGJHbDZaVjlyWlhrNk9tZ3dOVEJqT1RcXFxuWXhPVE5rT0RCbU9EQms3UVUrYVc1a1pYaHRZWEE2T20xaGNEbzZTVzVrWlhoTllYQThTeXhXTEZNK09qcHpkMkZ3WDNKbGJXOTJaVG82XFxcbmFHSmlZVFZpWkRFek9XSmpNRFkzTXpmdUJUOXBibVJsZUcxaGNEbzZiV0Z3T2pwSmJtUmxlRTFoY0R4TExGWXNVejQ2T21kbGRGOXBibVxcXG5SbGVGOXZaam82YURRMk5tVTRNakF3T1RWa04yTXhOV1B2QlQ5cGJtUmxlRzFoY0RvNmJXRndPanBKYm1SbGVFMWhjRHhMTEZZc1V6NDZcXFxuT21kbGRGOXBibVJsZUY5dlpqbzZhRGRoTWpJek56TXlZV1V5TVdVMFlURHdCVDlwYm1SbGVHMWhjRG82YldGd09qcEpibVJsZUUxaGNEXFxcbnhMTEZZc1V6NDZPbWRsZEY5cGJtUmxlRjl2WmpvNmFHRmxOV0l4Tm1OaVlqa3hPVFV5TXpQeEJUeGtaVzV2WDJOaFkyaGxYMlJwY2pvNlxcXG5kMkZ6YlRvNlRHOWpZV3hJZEhSd1EyRmphR1U2T201bGR6bzZhR1EyTWpabFlqVTRNelpsTkdFNE9UTHlCV3c4WVd4c2IyTTZPbk4wY21cXFxubHVaem82VTNSeWFXNW5JR0Z6SUdOdmNtVTZPbTl3Y3pvNmFXNWtaWGc2T2tsdVpHVjRQR052Y21VNk9tOXdjem82Y21GdVoyVTZPbEpoXFxcbmJtZGxQSFZ6YVhwbFBqNCtPanBwYm1SbGVEbzZhRE0xWTJVd01tSXdOR1EyTUdOaE16UHpCWDVqYjNKbE9qcHpkSEk2T25SeVlXbDBjelxcXG5vNlBHbHRjR3dnWTI5eVpUbzZjMnhwWTJVNk9tbHVaR1Y0T2pwVGJHbGpaVWx1WkdWNFBITjBjajRnWm05eUlHTnZjbVU2T205d2N6bzZcXFxuY21GdVoyVTZPbEpoYm1kbFJuSnZiVHgxYzJsNlpUNCtPanBwYm1SbGVEbzZhRFkwTnpCaU1EQm1NamhoTVdFd09URDBCVU56WlhKa1pWXFxcbjlxYzI5dU9qcHlaV0ZrT2pwd1lYSnpaVjlsYzJOaGNHVTZPbVZ1WTI5a1pWOXpkWEp5YjJkaGRHVTZPbWcyWVRsa09EWmhOVGxoWmpSalxcXG5OR1U1OVFWV1kyOXlaVG82YzNSeU9qcDBjbUZwZEhNNk9qeHBiWEJzSUdOdmNtVTZPbTl3Y3pvNmFXNWtaWGc2T2tsdVpHVjRQRWsrSUdcXFxuWnZjaUJ6ZEhJK09qcHBibVJsZURvNmFHVmhZV001TlRJMll6Wm1aVEUwTmpmMkJUQnlhVzVuT2pwa2FXZGxjM1E2T2tOdmJuUmxlSFE2XFxcbk9tWnBibWx6YURvNmFHRm1PVGhrWTJFelpUQmpZek0wWm1UM0JXdzhZV3hzYjJNNk9uTjBjbWx1WnpvNlUzUnlhVzVuSUdGeklHTnZjbVxcXG5VNk9tOXdjem82YVc1a1pYZzZPa2x1WkdWNFBHTnZjbVU2T205d2N6bzZjbUZ1WjJVNk9sSmhibWRsUEhWemFYcGxQajQrT2pwcGJtUmxcXFxuZURvNmFETTFZMlV3TW1Jd05HUTJNR05oTXpQNEJUdGhiR3h2WXpvNmNtRjNYM1psWXpvNlVtRjNWbVZqUEZRc1FUNDZPbUZzYkc5allYXFxcblJsWDJsdU9qcG9OelExTUdKbU9UVTRObU0yWkRFM04va0ZmbU52Y21VNk9uTjBjam82ZEhKaGFYUnpPam84YVcxd2JDQmpiM0psT2pwelxcXG5iR2xqWlRvNmFXNWtaWGc2T2xOc2FXTmxTVzVrWlhnOGMzUnlQaUJtYjNJZ1kyOXlaVG82YjNCek9qcHlZVzVuWlRvNlVtRnVaMlZHY21cXFxuOXRQSFZ6YVhwbFBqNDZPbWx1WkdWNE9qcG9OalEzTUdJd01HWXlPR0V4WVRBNU1Qb0ZhRHhqYjNKbE9qcHBkR1Z5T2pwaFpHRndkR1Z5XFxcbmN6bzZiV0Z3T2pwTllYQThTU3hHUGlCaGN5QmpiM0psT2pwcGRHVnlPanAwY21GcGRITTZPbWwwWlhKaGRHOXlPanBKZEdWeVlYUnZjalxcXG40Nk9tWnZiR1E2T21oallqZGlZMkZpWVRKbE1XVTNObVEyK3dWK1kyOXlaVG82YzNSeU9qcDBjbUZwZEhNNk9qeHBiWEJzSUdOdmNtVTZcXFxuT25Oc2FXTmxPanBwYm1SbGVEbzZVMnhwWTJWSmJtUmxlRHh6ZEhJK0lHWnZjaUJqYjNKbE9qcHZjSE02T25KaGJtZGxPanBTWVc1blpVXFxcblp5YjIwOGRYTnBlbVUrUGpvNmFXNWtaWGc2T21nMk5EY3dZakF3WmpJNFlURmhNRGt3L0FVdWFXUnVZVG82ZFhSek5EWTZPa1Z5Y205eVxcXG5jem82YVhOZlpYSnlPanBvTkRZMlpHWTVaR1U1TnpBMll6ZGlNZjBGWXp4emRHUTZPbkJoYm1samEybHVaem82WW1WbmFXNWZjR0Z1YVdcXFxuTTZPbEJoYm1salVHRjViRzloWkR4QlBpQmhjeUJqYjNKbE9qcHdZVzVwWXpvNlFtOTRUV1ZWY0Q0Nk9uUmhhMlZmWW05NE9qcG9OV1k0XFxcbk56QXpZVGhoTmprd05UVTVOdjRGUnp4emRHUTZPbWx2T2pwbGNuSnZjam82UlhKeWIzSWdZWE1nWTI5eVpUbzZaWEp5YjNJNk9rVnljbVxcXG45eVBqbzZZMkYxYzJVNk9taGlaalEyTmpRMk4yUXhZMkV4TldJei93VklQSE4wWkRvNmFXODZPbVZ5Y205eU9qcEZjbkp2Y2lCaGN5QmpcXFxuYjNKbE9qcGxjbkp2Y2pvNlJYSnliM0krT2pwemIzVnlZMlU2T21nelpqbGpNV1l5WXpJM1lURmtObU5sZ0FadVBHRnNiRzlqT2pwemRIXFxcbkpwYm1jNk9sTjBjbWx1WnlCaGN5QmpiM0psT2pwdmNITTZPbWx1WkdWNE9qcEpibVJsZUR4amIzSmxPanB2Y0hNNk9uSmhibWRsT2pwU1xcXG5ZVzVuWlZSdlBIVnphWHBsUGo0K09qcHBibVJsZURvNmFEZGpOV1UxTVRnM01EbGhZVEl4T1dXQkJqaHpkR1E2T25Sb2NtVmhaRG82YkdcXFxuOWpZV3c2T2t4dlkyRnNTMlY1UEZRK09qcDNhWFJvT2pwb1lqUXlZalkzTldGalpEZzVNamRoWklJR1NtaGhjMmhpY205M2JqbzZjbUYzXFxcbk9qcHBibTVsY2pvNlVtRjNWR0ZpYkdVOFZDeEJQam82Wm1sdVpEbzZlM3RqYkc5emRYSmxmWDA2T21nek5tVTBaak00TldRM1pqTmxNelxcXG5VMWd3WTNZMjl5WlRvNmIzQjBhVzl1T2pwUGNIUnBiMjQ4VkQ0Nk9tMWhjRjl2Y2w5bGJITmxPanBvTVRnME9EWTFNemxtTjJNNE56TXhcXFxuTjRRR1BXTnZjbVU2T25OMGNqbzZhWFJsY2pvNlUzQnNhWFJKYm5SbGNtNWhiRHhRUGpvNloyVjBYMlZ1WkRvNmFERTROMlZoTVRobFlqXFxcbkZoTkdObFlXV0ZCbTQ4WVd4c2IyTTZPbk4wY21sdVp6bzZVM1J5YVc1bklHRnpJR052Y21VNk9tOXdjem82YVc1a1pYZzZPa2x1WkdWNFxcXG5QR052Y21VNk9tOXdjem82Y21GdVoyVTZPbEpoYm1kbFZHODhkWE5wZW1VK1BqNDZPbWx1WkdWNE9qcG9OMk0xWlRVeE9EY3dPV0ZoTWpcXFxuRTVaWVlHUFdOdmNtVTZPbU5vWVhJNk9tMWxkR2h2WkhNNk9qeHBiWEJzSUdOb1lYSStPanAwYjE5a2FXZHBkRG82YUdZeE1EUTNZVFZqXFxcbllqSm1ZVGMwTlRLSEJsbzhkWEpzT2pwb2IzTjBPanBJYjNOMFNXNTBaWEp1WVd3Z1lYTWdZMjl5WlRvNlkyOXVkbVZ5ZERvNlJuSnZiVFxcXG54MWNtdzZPbWh2YzNRNk9raHZjM1ErUGpvNlpuSnZiVG82YURWbFpUSXdNMkV5TnpVM1pEa3pZemVJQmtnOGRYSnNPanBvYjNOME9qcElcXFxuYjNOMFNXNTBaWEp1WVd3Z1lYTWdZMjl5WlRvNlkyMXdPanBRWVhKMGFXRnNSWEUrT2pwbGNUbzZhR00wTkRkbFkyTTNOelJtTlRBNE1XXFxcbk9KQm1nOFkyOXlaVG82YVhSbGNqbzZZV1JoY0hSbGNuTTZPbTFoY0RvNlRXRndQRWtzUmo0Z1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaFxcXG5hWFJ6T2pwcGRHVnlZWFJ2Y2pvNlNYUmxjbUYwYjNJK09qcG1iMnhrT2pwb056RTNZakV3TURRNVl6QmpaREE0WklvR0xtTnZjbVU2T21cXFxuOXdkR2x2YmpvNlpYaHdaV04wWDJaaGFXeGxaRG82YUROaFpqRXlOalkzWldOa05EZzROMk9MQmtGaGJHeHZZem82Y21GM1gzWmxZem82XFxcblVtRjNWbVZqUEZRc1FUNDZPblJ5ZVY5eVpYTmxjblpsWDJWNFlXTjBPanBvWVRjNE16UTJOREpsWW1ObFlqVTRPSXdHUVdGc2JHOWpPalxcXG5weVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBqbzZkSEo1WDNKbGMyVnlkbVZmWlhoaFkzUTZPbWhsT1dWaE5EVmpZVGRtTlRRelpXRXlcXFxualFaQllXeHNiMk02T25KaGQxOTJaV002T2xKaGQxWmxZenhVTEVFK09qcDBjbmxmY21WelpYSjJaVjlsZUdGamREbzZhRFZtWXpabFl6XFxcbmswT1RZM1pXTTFPREdPQmpob1lYTm9Zbkp2ZDI0Nk9uSmhkem82VW1GM1ZHRmliR1U4VkN4QlBqbzZjbVZ0YjNabE9qcG9aVFE1T1dSbVxcXG5NbU5tTVdVeE1XUTNaWThHY1R4a1pXNXZYMk5oWTJobFgyUnBjam82ZDJGemJUbzZURzlqWVd4SWRIUndRMkZqYUdVZ1lYTWdkMkZ6YlZcXFxuOWlhVzVrWjJWdU9qcGpiMjUyWlhKME9qcDBjbUZwZEhNNk9rWnliMjFYWVhOdFFXSnBQam82Wm5KdmJWOWhZbWs2T21nellUazRObU0wXFxcbk5qQTVaakZoTW1Zd2tBWkxQSE5sY21SbFgycHpiMjQ2T21WeWNtOXlPanBGY25KdmNpQmhjeUJqYjNKbE9qcGxjbkp2Y2pvNlJYSnliM1xcXG5JK09qcHpiM1Z5WTJVNk9tZzRPRFkyTmpSbVpEQTROelZqTURJeGtRWXhZV3hzYjJNNk9uTjVibU02T2tGeVl6eFVQam82WkhKdmNGOXpcXFxuYkc5M09qcG9PR014T1RFeFkyUmxPR1kyTkRWaVk1SUdObU52Y21VNk9uTjBjam82UEdsdGNHd2djM1J5UGpvNmMzUnlhWEJmY0hKbFptXFxcbmw0T2pwb1l6Wm1ZbVl3T0RobE16QTJaamRqWlpNR05tcHpYM041Y3pvNlZXbHVkRGhCY25KaGVUbzZjbUYzWDJOdmNIbGZkRzlmY0hSeVxcXG5PanBvT1RNd1pqYzFZVE14TmpBek4yRTNPWlFHTm1OdmNtVTZPbk4wY2pvNlBHbHRjR3dnYzNSeVBqbzZjM1J5YVhCZmNISmxabWw0T2pcXFxucG9NVEF4TkRjeFpqSTNOMkkwTVRSak1wVUdQendtYzNSeUlHRnpJSFZ5YkRvNmNHRnljMlZ5T2pwUVlYUjBaWEp1UGpvNmMzQnNhWFJmXFxcbmNISmxabWw0T2pwb1pEYzBNbVptTmpWaU1tUmhZVFJrWlpZR0kzVnliRG82VlhKc09qcGtiMjFoYVc0Nk9taGxNV1l3WVdVMU5XVTBPRFxcXG5NeE9UazJsd1k3YUdGemFHSnliM2R1T2pwdFlYQTZPa2hoYzJoTllYQThTeXhXTEZNc1FUNDZPbWx1YzJWeWREbzZhRGhqTlRRMk1tSTJcXFxuTjJSbE9UZzJaaldZQmpkelpYSmtaVjlxYzI5dU9qcGtaVG82UkdWelpYSnBZV3hwZW1WeVBGSStPanBsYm1RNk9tZ3dNV1prTW1KaE5tXFxcbll3T1RjNU5EWXptUVpGYzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BqbzZibVY0ZEY5amFHRnlYMjl5WDI1MVxcXG5iR3c2T21nek4yTTVabVF5Tldaa09UTXpObUV4bWdaRmMyVnlaR1ZmYW5OdmJqbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbGNqeFNQam82Ym1cXFxuVjRkRjlqYUdGeVgyOXlYMjUxYkd3Nk9taG1ZekJoT1RNellqRmhORGM0T0RZd213WTJjMlZ5WkdWZmFuTnZiam82YzJWeU9qcG1iM0p0XFxcbllYUmZaWE5qWVhCbFpGOXpkSEk2T21nMU5EVTJaR1F6WldKa01tUTNZVFJsbkFiS0FUdzhjMlZ5WkdVNk9tUmxPanBwYlhCc2N6bzZQR1xcXG5sdGNHd2djMlZ5WkdVNk9tUmxPanBFWlhObGNtbGhiR2w2WlNCbWIzSWdjM1JrT2pwMGFXMWxPanBUZVhOMFpXMVVhVzFsUGpvNlpHVnpcXFxuWlhKcFlXeHBlbVU2T2tacFpXeGtJR0Z6SUhObGNtUmxPanBrWlRvNlJHVnpaWEpwWVd4cGVtVStPanBrWlhObGNtbGhiR2w2WlRvNlJtXFxcbmxsYkdSV2FYTnBkRzl5SUdGeklITmxjbVJsT2pwa1pUbzZWbWx6YVhSdmNqNDZPblpwYzJsMFgzTjBjam82YUdJMk1tWmpOMk13Tm1FMlxcXG5NemcxT0dXZEJraG9ZWE5vWW5KdmQyNDZPbkpoZHpvNlVtRjNWR0ZpYkdVOFZDeEJQam82Wm1Gc2JHbGliR1ZmZDJsMGFGOWpZWEJoWTJcXFxubDBlVG82YURZMFlUTTFNekpoTldZeU1qTXhNRGFlQmhObmJHOWlZV3hvZEhSd1kyRmphR1ZmYm1WM253WTNjMlZ5WkdWZmFuTnZiam82XFxcblpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BqbzZaVzVrT2pwb00yRmtNbVpsWmpnelptWTNaamsxTktBR01tRnNiRzlqT2pwemRISnBibVxcXG5jNk9sTjBjbWx1WnpvNmRISjFibU5oZEdVNk9taG1ORGMyWW1Zd09XTm1Oak0yWWpWbG9RWVJjblZ6ZEY5aVpXZHBibDkxYm5kcGJtU2lcXFxuQmkxaGJHeHZZem82ZG1Wak9qcFdaV004VkN4QlBqbzZjSFZ6YURvNmFESXdOamt4WldFeFptTTVaakpsT0RDakJsbGhiR3h2WXpvNmRtXFxcblZqT2pwcGJuUnZYMmwwWlhJNk9rbHVkRzlKZEdWeVBGUXNRVDQ2T21admNtZGxkRjloYkd4dlkyRjBhVzl1WDJSeWIzQmZjbVZ0WVdsdVxcXG5hVzVuT2pwb05tRm1NbUZoWWpNd1pURXlPR1pqTXFRR1dqeHpiV0ZzYkhabFl6bzZTVzUwYjBsMFpYSThRVDRnWVhNZ1kyOXlaVG82YVhcXFxuUmxjam82ZEhKaGFYUnpPanBwZEdWeVlYUnZjam82U1hSbGNtRjBiM0krT2pwdVpYaDBPanBvWkdNMlpEVTJOVGM1WVRFMlpqWmtPS1VHXFxcblZqeHFjMTl6ZVhNNk9rRnljbUY1U1hSbGNpQmhjeUJqYjNKbE9qcHBkR1Z5T2pwMGNtRnBkSE02T21sMFpYSmhkRzl5T2pwSmRHVnlZWFxcXG5SdmNqNDZPbTVsZUhRNk9tZzVNVFZpTWpsaVlUQXhPRFpqWlRCbXBnWldZMjl5WlRvNmMzUnlPanAwY21GcGRITTZPanhwYlhCc0lHTnZcXFxuY21VNk9tOXdjem82YVc1a1pYZzZPa2x1WkdWNFBFaytJR1p2Y2lCemRISStPanBwYm1SbGVEbzZhR05oWWpGbFlXVmxNbUk0WkRGaU5UXFxcbmluQmlWMWNtdzZPbFZ5YkRvNmFHOXpkRjl6ZEhJNk9tZzVNREZoWkdZNFpURTJZV1U1TTJGbHFBWkVkVzVwWTI5a1pWOXViM0p0WVd4cFxcXG5lbUYwYVc5dU9qcHNiMjlyZFhCek9qcHBjMTlqYjIxaWFXNXBibWRmYldGeWF6bzZhR0U0TVdZME1EZ3lNREE0WXpWaU1EV3BCamx6WlhcXFxuSmtaVjlxYzI5dU9qcGxjbkp2Y2pvNlJYSnliM0k2T21acGVGOXdiM05wZEdsdmJqbzZhR1F3T0RBeFpEWTVOamsxTm1ReE1UaXFCa1ZvXFxcbllYTm9Zbkp2ZDI0Nk9uSmhkem82YVc1dVpYSTZPbEpoZDFSaFlteGxQRlFzUVQ0Nk9uSmxiVzkyWlY5bGJuUnllVG82YUdZMVlUZzFZbVxcXG5Sa056QXlOVGt5WXpDckJqdG9ZWE5vWW5KdmQyNDZPbTFoY0RvNlNHRnphRTFoY0R4TExGWXNVeXhCUGpvNmNtVnRiM1psT2pwb05EaG1cXFxuT0ROaFpEQmhOR1EzTmpBMlphd0dTbWhoYzJoaWNtOTNiam82Y21GM09qcFNZWGRVWVdKc1pVbHVibVZ5UEVFK09qcHlaV052Y21SZmFYXFxcblJsYlY5cGJuTmxjblJmWVhRNk9tZ3pNakV6WXpRd01qRmpaall6TnpnMHJRWjFQR1JsYm05ZlkyRmphR1ZmWkdseU9qcG5iRzlpWVd3NlxcXG5Pa2RzYjJKaGJFaDBkSEJEWVdOb1pUeEZiblkrSUdGeklHUmxibTlmWTJGamFHVmZaR2x5T2pwallXTm9aVG82U0hSMGNFTmhZMmhsUGpcXFxubzZZMkZqYUdWZmFYUmxiVjlyWlhrNk9tZzVObUZpTURZMVpUTmtOekppTlRrd3JnWXZZMjl5WlRvNlptMTBPanBCY21kMWJXVnVkSE02XFxcbk9tRnpYM04wY2pvNmFHWTVPR0kyTXpka1pEZzJPRGRoWWpXdkJqbHpaWEprWlY5cWMyOXVPanBsY25KdmNqbzZSWEp5YjNJNk9tWnBlRlxcXG45d2IzTnBkR2x2YmpvNmFEWXdZemMxTVdFek4ySmtOVFl4T1Rpd0JqOTNZWE50WDJKcGJtUm5aVzQ2T21OdmJuWmxjblE2T21Oc2IzTjFcXFxuY21Wek9qcHBiblp2YTJVelgyMTFkRG82YURjNE1XSXpaamhpWVRobE56Z3lOVEd4QmxaamIzSmxPanB6ZEhJNk9uUnlZV2wwY3pvNlBHXFxcbmx0Y0d3Z1kyOXlaVG82YjNCek9qcHBibVJsZURvNlNXNWtaWGc4U1Q0Z1ptOXlJSE4wY2o0Nk9tbHVaR1Y0T2pwb01HTm1aalUxWm1VMVxcXG5aVFZpTW1VNVpiSUdLblZ5YkRvNlZYSnNPanB3WVhSb1gzTmxaMjFsYm5Sek9qcG9NRGhtWldGbE5qUXhPRGRsTXpabFk3TUdOSFZ5YkRcXFxubzZjR0Z5YzJWeU9qcFFZWEp6WlhJNk9uTm9iM0owWlc1ZmNHRjBhRG82YURNNVpEWTVNamN6TURnM1l6WTNORGkwQm1VOFkyOXlaVG82XFxcbllYSnlZWGs2T21sMFpYSTZPa2x1ZEc5SmRHVnlQRlFzWHo0Z1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBwZEdWeVlYUnZjalxcXG5vNlNYUmxjbUYwYjNJK09qcHVaWGgwT2pwb09USmlabUppTWpFNE1tVmtOR0UwT2JVR09tOXVZMlZmWTJWc2JEbzZhVzF3T2pwUGJtTmxcXFxuUTJWc2JEeFVQam82YVc1cGRHbGhiR2w2WlRvNmFEVTVOelEzTURabFpEZGxZbUU1TXppMkJqcHZibU5sWDJObGJHdzZPbWx0Y0RvNlQyXFxcbjVqWlVObGJHdzhWRDQ2T21sdWFYUnBZV3hwZW1VNk9taGtOVGcwTm1NeE5XRXhZbVptWWpRMnR3WkNaR1Z1YjE5allXTm9aVjlrYVhJNlxcXG5PbXh2WTJGc09qcE1iMk5oYkVoMGRIQkRZV05vWlR4RmJuWStPanB1WlhjNk9tZ3hPVFJoTVRZd05ETTRPREEwTnpjNHVBWlpQSE5sY21cXFxuUmxYMnB6YjI0Nk9uSmxZV1E2T2xOc2FXTmxVbVZoWkNCaGN5QnpaWEprWlY5cWMyOXVPanB5WldGa09qcFNaV0ZrUGpvNmNHVmxhMTl3XFxcbmIzTnBkR2x2YmpvNmFHWXpaamcwWm1Vek1HUmpPRFprT0dLNUJqQnpaWEprWlY5cWMyOXVPanB5WldGa09qcHdaV1ZyWDI5eVgyVnZaalxcXG5vNmFESTNaR1UzTmpCa09HSXhNVFUwTkdLNkJraG9ZWE5vWW5KdmQyNDZPbkpoZHpvNmFXNXVaWEk2T2taaGJHeHBZbWxzYVhSNU9qcGpcXFxuWVhCaFkybDBlVjl2ZG1WeVpteHZkem82YUdZNE9ETmpOemN3TXprd1lXRTBNVEc3QmtGb1lYTm9Zbkp2ZDI0Nk9uSmhkem82Um1Gc2JHXFxcbmxpYVd4cGRIazZPbU5oY0dGamFYUjVYMjkyWlhKbWJHOTNPanBvWldZNVlqRXdZbVl3T0dSaFpXVmpOTHdHTVdOdmJYQnBiR1Z5WDJKMVxcXG5hV3gwYVc1ek9qcHRaVzA2T20xbGJXTnRjRG82YUdJeVlXWXhNVGhoWVdGa1ltVXlORFM5QmpoelpYSmtaVjkzWVhOdFgySnBibVJuWldcXFxuNDZPbVZ5Y205eU9qcEZjbkp2Y2pvNmJtVjNPanBvTldRNE16SXlZakJrTmpRMU9EQTNNYjRHTjNObGNtUmxYM2RoYzIxZlltbHVaR2RsXFxcbmJqbzZaR1U2T21OdmJuWmxjblJmY0dGcGNqbzZhRGt3WTJFMk5qTXlPRGhqWmpFMk1XRy9CbEE4YzJWeVpHVmZkMkZ6YlY5aWFXNWtaMlxcXG5WdU9qcGxjbkp2Y2pvNlJYSnliM0lnWVhNZ1kyOXlaVG82Wm0xME9qcEVhWE53YkdGNVBqbzZabTEwT2pwb01tTmhNalF3T1dVeE5tRmlcXFxuT0RCaVk4QUdTanh6YldGc2JIWmxZem82UTI5c2JHVmpkR2x2YmtGc2JHOWpSWEp5SUdGeklHTnZjbVU2T21adGREbzZSR1ZpZFdjK09qXFxcbnBtYlhRNk9taGtaV0UzTXpkak5XWm1aVGhpTTJaaHdRWldZMjl5WlRvNmMzUnlPanAwY21GcGRITTZPanhwYlhCc0lHTnZjbVU2T205d1xcXG5jem82YVc1a1pYZzZPa2x1WkdWNFBFaytJR1p2Y2lCemRISStPanBwYm1SbGVEbzZhRFF6TTJRMU0yTTRaR1UwTkdZMk1qZkNCalZqYjNcXFxuSmxPanB6YkdsalpUbzZQR2x0Y0d3Z1cxUmRQam82Wlc1a2MxOTNhWFJvT2pwb056Y3hPREUxWmpjell6Y3hObVJtWXNNR04yRnNiRzlqXFxcbk9qcDJaV002T2xabFl6eFVMRUUrT2pwbGVIUmxibVJmZEhKMWMzUmxaRG82YURjMk9XUmhNall3TW1FellqVmtOMmJFQmpkaGJHeHZZelxcXG5vNmRtVmpPanBXWldNOFZDeEJQam82WlhoMFpXNWtYM1J5ZFhOMFpXUTZPbWhqTWpkaU5UQTNZV0V5T1RFeVpqUTR4UVo2WTI5eVpUbzZcXFxuYzNSeU9qcDBjbUZwZEhNNk9qeHBiWEJzSUdOdmNtVTZPbk5zYVdObE9qcHBibVJsZURvNlUyeHBZMlZKYm1SbGVEeHpkSEkrSUdadmNpXFxcbkJqYjNKbE9qcHZjSE02T25KaGJtZGxPanBTWVc1blpWUnZQSFZ6YVhwbFBqNDZPbWRsZERvNmFEZzNNbVptWVRBd01UZzVPVEkyWTJiR1xcXG5Camh6WlhKa1pWOTNZWE50WDJKcGJtUm5aVzQ2T21WeWNtOXlPanBGY25KdmNqbzZibVYzT2pwb09XVXhNemsyTTJReE1UVXlOelZtWXNcXFxuY0djVHhrWlc1dlgyTmhZMmhsWDJScGNqbzZkMkZ6YlRvNlRHOWpZV3hJZEhSd1EyRmphR1VnWVhNZ2QyRnpiVjlpYVc1a1oyVnVPanBqXFxcbmIyNTJaWEowT2pwMGNtRnBkSE02T2tsdWRHOVhZWE50UVdKcFBqbzZhVzUwYjE5aFltazZPbWhqWkRSaVpqVTVZV1JtWXpJNVkyUmp5QVxcXG5Zd2QyRnpiVjlpYVc1a1oyVnVPanBLYzFaaGJIVmxPanBoYzE5bU5qUTZPbWhtT1RWalpUWXpabVV5T1RZeE5qaGh5UVkzWTI5eVpUbzZcXFxuYzJ4cFkyVTZPanhwYlhCc0lGdFVYVDQ2T25OMFlYSjBjMTkzYVhSb09qcG9abVppTTJSaVpESXlOVFE1WkRZMk5jb0dMbUZzYkc5ak9qXFxcbnB6ZEhKcGJtYzZPbE4wY21sdVp6bzZjSFZ6YURvNmFHWmtPV0k1TTJGaE5XWXhZekpsTmpETEJqZGpiM0psT2pwemJHbGpaVG82UEdsdFxcXG5jR3dnVzFSZFBqbzZjM1JoY25SelgzZHBkR2c2T21nMFltVTBPRGMyTTJZelpEQXlOekU1ekFZM1kyOXlaVG82YzJ4cFkyVTZPanhwYlhcXFxuQnNJRnRVWFQ0Nk9uTjBZWEowYzE5M2FYUm9PanBvWW1VNFpHRTBaVEZoWXpsaE1XRmpNYzBHTFdwelgzTjVjem82VldsdWREaEJjbkpoXFxcbmVUbzZkRzlmZG1Wak9qcG9NalpqWVRFMU9UQTFZVFJrWTJGbU9NNEdlbU52Y21VNk9uTjBjam82ZEhKaGFYUnpPam84YVcxd2JDQmpiM1xcXG5KbE9qcHpiR2xqWlRvNmFXNWtaWGc2T2xOc2FXTmxTVzVrWlhnOGMzUnlQaUJtYjNJZ1kyOXlaVG82YjNCek9qcHlZVzVuWlRvNlVtRnVcXFxuWjJWVWJ6eDFjMmw2WlQ0K09qcG5aWFE2T21nNE56Sm1abUV3TURFNE9Ua3lObU5tendaNlkyOXlaVG82YzNSeU9qcDBjbUZwZEhNNk9qXFxcbnhwYlhCc0lHTnZjbVU2T25Oc2FXTmxPanBwYm1SbGVEbzZVMnhwWTJWSmJtUmxlRHh6ZEhJK0lHWnZjaUJqYjNKbE9qcHZjSE02T25KaFxcXG5ibWRsT2pwU1lXNW5aVlJ2UEhWemFYcGxQajQ2T21kbGREbzZhRGczTW1abVlUQXdNVGc1T1RJMlkyYlFCajFqYjNKbE9qcGphR0Z5T2pcXFxucHRaWFJvYjJSek9qbzhhVzF3YkNCamFHRnlQam82ZEc5ZlpHbG5hWFE2T21obU1UQTBOMkUxWTJJeVptRTNORFV5MFFZc1kyOXlaVG82XFxcblpYSnliM0k2T2tWeWNtOXlPanBqWVhWelpUbzZhRGt5T1dGbE56TTBZekV6TjJZNVl6YlNCazQ4WVc1NWFHOTNPanBsY25KdmNqbzZSWFxcXG5KeWIzSkpiWEJzUEVVK0lHRnpJR052Y21VNk9tVnljbTl5T2pwRmNuSnZjajQ2T25OdmRYSmpaVG82YURNMk56TmpPV1l4WkRreU1XRTJcXFxuWXpiVEJqMXpaWEprWlY5cWMyOXVPanBrWlRvNlJHVnpaWEpwWVd4cGVtVnlQRkkrT2pwdVpYaDBYMk5vWVhJNk9tZzBOekkxT0RBMVl6XFxcbmRpTXpFMVlqTTUxQVkzWVd4c2IyTTZPblpsWXpvNlZtVmpQRlFzUVQ0Nk9tVjRkR1Z1WkY5MGNuVnpkR1ZrT2pwb1pEVXhOakl3TlRBM1xcXG5aV0kyTjJSaVpkVUdQbWx1WkdWNGJXRndPanB0WVhBNk9rbHVaR1Y0VFdGd1BFc3NWaXhUUGpvNmFXNXpaWEowWDJaMWJHdzZPbWhoTXpcXFxuVmpZMlprWWpnek5tWXlNRGhtMWdaa1BHUmxibTlmWTJGamFHVmZaR2x5T2pwM1lYTnRPanBYWVhOdFJXNTJJR0Z6SUdSbGJtOWZZMkZqXFxcbmFHVmZaR2x5T2pwamIyMXRiMjQ2T2tSbGJtOURZV05vWlVWdWRqNDZPblJwYldWZmJtOTNPanBvWkRZNVpEVXdPRGc0WVRWbE56WTFOZFxcXG5jR1ZUeHpaWEprWlRvNlpHVTZPbWx0Y0d4ek9qcFRkSEpwYm1kV2FYTnBkRzl5SUdGeklITmxjbVJsT2pwa1pUbzZWbWx6YVhSdmNqNDZcXFxuT25acGMybDBYM04wY2pvNmFEVmhOMlpoWVRNMlptRm1PRGc0WXpMWUJsQThjMlZ5WkdWZmFuTnZiam82Y21WaFpEbzZVMnhwWTJWU1pXXFxcbkZrSUdGeklITmxjbVJsWDJwemIyNDZPbkpsWVdRNk9sSmxZV1ErT2pwdVpYaDBPanBvWTJNeFpHVXhOMk0zTlRZME5EaG1OOWtHS21welxcXG5YM041Y3pvNlJuVnVZM1JwYjI0Nk9tTmhiR3d3T2pwb1lUYzJZamhqT0dGbVlqTmlPVGd4WmRvR0oycHpYM041Y3pvNlVtVm1iR1ZqZERcXFxubzZaMlYwT2pwb05UUTRNVEUxTjJKaE0ySmxNelJpT05zR00zVnliRG82Y0dGeWMyVnlPanBKYm5CMWREbzZjM0JzYVhSZmNISmxabWw0XFxcbk9qcG9ZVFV3TXpBeFlUUm1aamM0WlRCa045d0dVWFZ1YVdOdlpHVmZibTl5YldGc2FYcGhkR2x2YmpvNlpHVmpiMjF3YjNObE9qcEVaV1xcXG5OdmJYQnZjMmwwYVc5dWN6eEpQam82Y0hWemFGOWlZV05yT2pwb01Ua3pNemxqTmpCbVpHTmpZVFUxWXQwR1VYVnVhV052WkdWZmJtOXlcXFxuYldGc2FYcGhkR2x2YmpvNlpHVmpiMjF3YjNObE9qcEVaV052YlhCdmMybDBhVzl1Y3p4SlBqbzZjSFZ6YUY5aVlXTnJPanBvT0dGalpHXFxcbkpoT1dRM1pqazNaR1k0TTk0R04yTnZjbVU2T25Oc2FXTmxPam84YVcxd2JDQmJWRjArT2pwemRHRnlkSE5mZDJsMGFEbzZhRFppTWpBNVxcXG5NbVJoWkRrM05XVTFORGZmQmsxMGFXNTVkbVZqT2pwMGFXNTVkbVZqT2pwVWFXNTVWbVZqUEVFK09qcHdkWE5vT2pwa2NtRnBibDkwYjFcXFxuOW9aV0Z3WDJGdVpGOXdkWE5vT2pwb1lXWmtaamxoWm1Sa1pEVmhORGcxTXVBR09qd21iWFYwSUZjZ1lYTWdZMjl5WlRvNlptMTBPanBYXFxcbmNtbDBaVDQ2T25keWFYUmxYM04wY2pvNmFHSXlZV0V3TkRVd05tSTBOMlkyWVRqaEJoSmZYM0prYkY5aGJHeHZZMTk2WlhKdlpXVGlCalxcXG5vOEptMTFkQ0JYSUdGeklHTnZjbVU2T21adGREbzZWM0pwZEdVK09qcDNjbWwwWlY5emRISTZPbWhtT1RnM1pqWXdORFEyTWpZMFlqYzNcXFxuNHdZNlBDWnRkWFFnVnlCaGN5QmpiM0psT2pwbWJYUTZPbGR5YVhSbFBqbzZkM0pwZEdWZmMzUnlPanBvWXpZeU1qTTNPRGMzTURsaVlqXFxcbkV6Tk9RR1lUeGpiM0psT2pwdmNITTZPbkpoYm1kbE9qcFNZVzVuWlR4MWMybDZaVDRnWVhNZ1kyOXlaVG82YzJ4cFkyVTZPbWx1WkdWNFxcXG5PanBUYkdsalpVbHVaR1Y0UEZ0VVhUNCtPanBwYm1SbGVEbzZhRFpqWkRjMk16WTRaVGs1TjJRMU1qRGxCamxqYjNKbE9qcHZjSE02T21cXFxuWjFibU4wYVc5dU9qcEdiazl1WTJVNk9tTmhiR3hmYjI1alpUbzZhRFV5WW1JMU9HVTFOakE0T0RNeVpEVG1CdFFCWTI5eVpUbzZjSFJ5XFxcbk9qcGtjbTl3WDJsdVgzQnNZV05sUEdoaGMyaGljbTkzYmpvNmMyTnZjR1ZuZFdGeVpEbzZVMk52Y0dWSGRXRnlaRHhvWVhOb1luSnZkMlxcXG40Nk9uSmhkem82VW1GM1ZHRmliR1ZKYm01bGNqeGhiR3h2WXpvNllXeHNiMk02T2tkc2IySmhiRDRzYUdGemFHSnliM2R1T2pweVlYYzZcXFxuT2xKaGQxUmhZbXhsU1c1dVpYSThZV3hzYjJNNk9tRnNiRzlqT2pwSGJHOWlZV3crT2pwd2NtVndZWEpsWDNKbGMybDZaVG82ZTN0amJHXFxcbjl6ZFhKbGZYMCtQam82YUdFek16QXpOR1V4WlRaaE9XTTNOMlRuQmxROGMyVnlaR1ZmYW5OdmJqbzZjMlZ5T2pwRGIyMXdiM1Z1WkR4WFxcXG5MRVkrSUdGeklITmxjbVJsT2pwelpYSTZPbE5sY21saGJHbDZaVTFoY0Q0Nk9tVnVaRG82YUdReFpEVTNOR0U1TkRsaE9ERXhPV1BvQnNcXFxuRUJQR1JsYm05ZlkyRmphR1ZmWkdseU9qcGpZV05vWlRvNlh6bzZQR2x0Y0d3Z2MyVnlaR1U2T21SbE9qcEVaWE5sY21saGJHbDZaU0JtXFxcbmIzSWdaR1Z1YjE5allXTm9aVjlrYVhJNk9tTmhZMmhsT2pwVFpYSnBZV3hwZW1Wa1EyRmphR1ZrVlhKc1RXVjBZV1JoZEdFK09qcGtaWFxcXG5ObGNtbGhiR2w2WlRvNlgxOUdhV1ZzWkZacGMybDBiM0lnWVhNZ2MyVnlaR1U2T21SbE9qcFdhWE5wZEc5eVBqbzZkbWx6YVhSZmMzUnlcXFxuT2pwb09XTTBOalk1WlRNMVpUTTJOamhqTStrR1IyaGhjMmhpY205M2JqbzZjbUYzT2pwcGJtNWxjam82VW1GM1ZHRmliR1U4VkN4QlBqXFxcbm82YVc1elpYSjBYMmx1WDNOc2IzUTZPbWd5TldFMk4ySTRNVGcwWlRBM1l6TXg2Z1lyYzJWeVpHVmZhbk52YmpvNmNtVmhaRG82WVhOZlxcXG5jM1J5T2pwb1pXWTNOekUxWldJNE5tTm1NRFZqWStzR2FEeGhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWNnWVhNZ1kyOXlaVG82YVhcXFxuUmxjam82ZEhKaGFYUnpPanBqYjJ4c1pXTjBPanBHY205dFNYUmxjbUYwYjNJOFkyaGhjajQrT2pwbWNtOXRYMmwwWlhJNk9taGpabU5tXFxcbk1XWmxZVEZoWWpSbU16Umg3QVl6ZFhKc09qcHdZWEp6WlhJNk9rbHVjSFYwT2pwemNHeHBkRjl3Y21WbWFYZzZPbWc0TURnM01tTTJZelxcXG5KbU5qWXpNR0kxN1FZaWRYSnNPanBWY213Nk9uTnNhV05sT2pwb1pXUm1ZVFkxTnprMU0ySXlORGMxWk80R1pUeGpiM0psT2pwdmNITTZcXFxuT25KaGJtZGxPanBTWVc1blpUeDFjMmw2WlQ0Z1lYTWdZMjl5WlRvNmMyeHBZMlU2T21sdVpHVjRPanBUYkdsalpVbHVaR1Y0UEZ0VVhUXFxcbjQrT2pwcGJtUmxlRjl0ZFhRNk9taGhabVkxTkRjNE56SXdNV05pTXprMDd3WmxQR052Y21VNk9tOXdjem82Y21GdVoyVTZPbEpoYm1kbFxcXG5QSFZ6YVhwbFBpQmhjeUJqYjNKbE9qcHpiR2xqWlRvNmFXNWtaWGc2T2xOc2FXTmxTVzVrWlhnOFcxUmRQajQ2T21sdVpHVjRYMjExZERcXFxubzZhR0ppTmpsak4yWmtNamcwTlRjeU5HUHdCaTFoYkd4dll6bzZkbVZqT2pwV1pXTThWQ3hCUGpvNmNIVnphRG82YURJMVlqSmlPVEkyXFxcblptTTFNR0ZrTTJQeEJrMTBhVzU1ZG1Wak9qcDBhVzU1ZG1Wak9qcFVhVzU1Vm1WalBFRStPanB3ZFhOb09qcGtjbUZwYmw5MGIxOW9aV1xcXG5Gd1gyRnVaRjl3ZFhOb09qcG9aVGMzWkRNM09UWTNNVGhoWm1FeU0vSUdNMk52Y21VNk9tTm9ZWEk2T2tOaGMyVk5ZWEJ3YVc1blNYUmxcXFxuY2pvNmJtVjNPanBvTlRReU9EazBOelExTTJObVlUUTNNZk1HVGp4aGJubG9iM2M2T21WeWNtOXlPanBGY25KdmNrbHRjR3c4UlQ0Z1lYXFxcbk1nWTI5eVpUbzZaWEp5YjNJNk9rVnljbTl5UGpvNmMyOTFjbU5sT2pwb1ltWmxaREpoWlRBNU16RTRZalUzTWZRR1RqeGhibmxvYjNjNlxcXG5PbVZ5Y205eU9qcEZjbkp2Y2tsdGNHdzhSVDRnWVhNZ1kyOXlaVG82WlhKeWIzSTZPa1Z5Y205eVBqbzZjMjkxY21ObE9qcG9NMkZpTlRcXFxuTXpOREptTlRrNFpEazBaUFVHVGp4aGJubG9iM2M2T21WeWNtOXlPanBGY25KdmNrbHRjR3c4UlQ0Z1lYTWdZMjl5WlRvNlpYSnliM0k2XFxcbk9rVnljbTl5UGpvNmMyOTFjbU5sT2pwb1ltWm1ZVGRpTkRVM09ESXlNR0k0WXZZR1RqeGhibmxvYjNjNk9tVnljbTl5T2pwRmNuSnZja1xcXG5sdGNHdzhSVDRnWVhNZ1kyOXlaVG82WlhKeWIzSTZPa1Z5Y205eVBqbzZjMjkxY21ObE9qcG9aVFkxTW1SbU5UTTVZelE0TnpFNU5QY0dcXFxuUDJoaGMyaGljbTkzYmpvNmNtRjNPanBwYm01bGNqbzZVbUYzVkdGaWJHVThWQ3hCUGpvNmNtVnRiM1psT2pwb09ESmtZbVUzT1RjeE5UXFxcbmhsWmpBMk4vZ0dod0YzWVhOdFgySnBibVJuWlc0Nk9tTnZiblpsY25RNk9uTnNhV05sY3pvNlBHbHRjR3dnZDJGemJWOWlhVzVrWjJWdVxcXG5PanBqYjI1MlpYSjBPanAwY21GcGRITTZPa1p5YjIxWFlYTnRRV0pwSUdadmNpQmhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWMrT2pcXFxucG1jbTl0WDJGaWFUbzZhREJrTnpZelpUTTRPV00xTURSaU1URDVCa2s4YzIxaGJHeDJaV002T2xOdFlXeHNWbVZqUEVFK0lHRnpJR052XFxcbmNtVTZPbTl3Y3pvNlpISnZjRG82UkhKdmNENDZPbVJ5YjNBNk9tZzROamhsWmpnNU5qQXdaV014WlRZMitnWTBZMjl5WlRvNmNtVnpkV1xcXG54ME9qcFNaWE4xYkhROFZDeEZQam82ZFc1M2NtRndPanBvT1RabE9UWmhPVGd4TXpoa01EZzJadnNHT0dwelgzTjVjem82U1hSbGNtRjBcXFxuYjNJNk9teHZiMnR6WDJ4cGEyVmZhWFJsY21GMGIzSTZPbWhrWWprMk5UQTVZamd6T0RrM1pESmwvQVlwYW5OZmMzbHpPanBKZEdWeVlYXFxcblJ2Y2pvNmJtVjRkRG82YUdReU1UUmtOVGcwWW1JM1pUUTJNVEQ5QmpSamIzSmxPanB5WlhOMWJIUTZPbEpsYzNWc2REeFVMRVUrT2pwMVxcXG5ibmR5WVhBNk9tZ3hOVEJsTXpjeU5qSmhZekV4TVdJMi9nWm9QR0ZzYkc5ak9qcHpkSEpwYm1jNk9sTjBjbWx1WnlCaGN5QmpiM0psT2pcXFxucHBkR1Z5T2pwMGNtRnBkSE02T21OdmJHeGxZM1E2T2taeWIyMUpkR1Z5WVhSdmNqeGphR0Z5UGo0Nk9tWnliMjFmYVhSbGNqbzZhREU1XFxcbllUVTVOV1ExWkdWak16VXhabVgvQmlKMWNtdzZPbFZ5YkRvNmMyeHBZMlU2T21nMlptWTVNREEwWWpsbU1XWTJZelF6Z0FjaWRYSnNPalxcXG5wVmNtdzZPbk5zYVdObE9qcG9NalU1TVdaak16WXpNelJoTTJNeU5vRUhhenh6ZEdRNk9uQmhibWxqYTJsdVp6bzZZbVZuYVc1ZmNHRnVcXFxuYVdOZmFHRnVaR3hsY2pvNlUzUnlVR0Z1YVdOUVlYbHNiMkZrSUdGeklHTnZjbVU2T25CaGJtbGpPanBDYjNoTlpWVndQam82ZEdGclpWXFxcbjlpYjNnNk9taGlNR00xTXpsaU4yRTBPR1l6WmpRNGdnYzRjM1JrT2pwemVYTTZPbmRoYzIwNk9tOXpYM04wY2pvNlUyeHBZMlU2T25SdlxcXG5YM04wY2pvNmFHUTJNekEwTVdRMFpHRmlOelZrT0RlREJ5bGpiM0psT2pwd1lXNXBZMnRwYm1jNk9uQmhibWxqT2pwb01EUmlNamd6TldcXFxuVm1PV0kwTVdReE9ZUUhjRHhvWVhOb1luSnZkMjQ2T25KaGR6bzZhVzV1WlhJNk9tSnBkRzFoYzJzNk9rSnBkRTFoYzJ0SmRHVnlJR0Z6XFxcbklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6bzZhWFJsY21GMGIzSTZPa2wwWlhKaGRHOXlQam82Ym1WNGREbzZhR0V6TmpVMVl6TTBNV1xcXG5ZNU9ERTNPRGlGQjJFOFkyOXlaVG82YjNCek9qcHlZVzVuWlRvNlVtRnVaMlU4ZFhOcGVtVStJR0Z6SUdOdmNtVTZPbk5zYVdObE9qcHBcXFxuYm1SbGVEbzZVMnhwWTJWSmJtUmxlRHhiVkYwK1BqbzZhVzVrWlhnNk9taGhPV0V4TVRJME16YzBaamhsTjJNemhnY3djMlZ5WkdVNk9tXFxcblJsT2pwV2FYTnBkRzl5T2pwMmFYTnBkRjltTmpRNk9taGxNV1JoTlRFM01HVTBabVF3WVRBNGh3Y3djMlZ5WkdVNk9tUmxPanBXYVhOcFxcXG5kRzl5T2pwMmFYTnBkRjltTmpRNk9tZzJaamd4WkRaaE5UQXdNRFZqWVRVeGlBYzFZMjl1YzI5c1pWOWxjbkp2Y2w5d1lXNXBZMTlvYjJcXFxuOXJPanB6WlhSZmIyNWpaVG82YUROa01tWXdORGhpT1dJNE5XTmlPR0tKQjEwOGFXNWtaWGh0WVhBNk9uTmxjbVJsT2pwSmJtUmxlRTFoXFxcbmNGWnBjMmwwYjNJOFN5eFdMRk0rSUdGeklITmxjbVJsT2pwa1pUbzZWbWx6YVhSdmNqNDZPbVY0Y0dWamRHbHVaem82YURVek1UQTFNelxcXG5NMU1USTRNbVZsT0RpS0IzZGpiM0psT2pwcGRHVnlPanB5WVc1blpUbzZQR2x0Y0d3Z1kyOXlaVG82YVhSbGNqbzZkSEpoYVhSek9qcHBcXFxuZEdWeVlYUnZjam82U1hSbGNtRjBiM0lnWm05eUlHTnZjbVU2T205d2N6bzZjbUZ1WjJVNk9sSmhibWRsUEVFK1BqbzZiblJvT2pwb016XFxcbmxsWTJGbFpqVTBOV1U0WWprek5vc0hQanhSSUdGeklHaGhjMmhpY205M2JqbzZSWEYxYVhaaGJHVnVkRHhMUGo0Nk9tVnhkV2wyWVd4bFxcXG5iblE2T21obU9EbGpaamcwTWpJMk5EYzFPVEV3akFkVWMyVnlaR1U2T25ObGNqbzZhVzF3YkhNNk9qeHBiWEJzSUhObGNtUmxPanB6WlhcXFxuSTZPbE5sY21saGJHbDZaU0JtYjNJZ0psUStPanB6WlhKcFlXeHBlbVU2T21nd016TmlaRFpsTnpCbVpUazJZakJsalFjK2FXNWtaWGh0XFxcbllYQTZPbTFoY0RvNlNXNWtaWGhOWVhBOFN5eFdMRk0rT2pwcGJuTmxjblJmWm5Wc2JEbzZhR0k0T1Roa1pUVmxZVFUzT0ROaVpER09CelxcXG41cGJtUmxlRzFoY0RvNmJXRndPanBKYm1SbGVFMWhjRHhMTEZZc1V6NDZPbWx1YzJWeWRGOW1kV3hzT2pwb1pHSTNZMkkwWTJVNFlUY3lcXFxuWkRJMU1ZOEhQMmx1WkdWNGJXRndPanB0WVhBNk9tTnZjbVU2T21WeGRXbDJZV3hsYm5RNk9udDdZMnh2YzNWeVpYMTlPanBvWkdNeU5EXFxcbmhtTlRkbE9HTmxZV1JsT0pBSFAybHVaR1Y0YldGd09qcHRZWEE2T21OdmNtVTZPbVZ4ZFdsMllXeGxiblE2T250N1kyeHZjM1Z5WlgxOVxcXG5PanBvWkdZellUSTROelV3TmpNNFpHWm1ONUVIVkdoaGMyaGljbTkzYmpvNmNtRjNPanBwYm01bGNqbzZVbUYzVkdGaWJHVThWQ3hCUGpcXFxubzZjbVZ6WlhKMlpWOXlaV2hoYzJnNk9udDdZMnh2YzNWeVpYMTlPanBvT0dVeVpUQTJaRGxqWVRFd05qTTVZcElIVkdoaGMyaGljbTkzXFxcbmJqbzZjbUYzT2pwcGJtNWxjam82VW1GM1ZHRmliR1U4VkN4QlBqbzZjbVZ6WlhKMlpWOXlaV2hoYzJnNk9udDdZMnh2YzNWeVpYMTlPalxcXG5wb05tTm1OekV5TjJJNE56QTNPV0ZpWTVNSFZHaGhjMmhpY205M2JqbzZjbUYzT2pwcGJtNWxjam82VW1GM1ZHRmliR1U4VkN4QlBqbzZcXFxuY21WelpYSjJaVjl5WldoaGMyZzZPbnQ3WTJ4dmMzVnlaWDE5T2pwb1lqWmtNV1kyWm1abU1UTXdObVZsWnBRSFlUeGpiM0psT2pwdmNIXFxcbk02T25KaGJtZGxPanBTWVc1blpUeDFjMmw2WlQ0Z1lYTWdZMjl5WlRvNmMyeHBZMlU2T21sdVpHVjRPanBUYkdsalpVbHVaR1Y0UEZ0VVxcXG5YVDQrT2pwcGJtUmxlRG82YUdZMFpqVmpNV1ZtWVRJd09EZG1ZMkdWQnpSamIzSmxPanB2Y0hScGIyNDZPazl3ZEdsdmJqeFVQam82WVdcXFxuNWtYM1JvWlc0Nk9taGlPR0U1TWpnd016YzJaRE5pWkRabWxnZENjR0Z5YTJsdVoxOXNiM1JmWTI5eVpUbzZjR0Z5YTJsdVoxOXNiM1E2XFxcbk9tTnlaV0YwWlY5b1lYTm9kR0ZpYkdVNk9tZzFabVF5T0RjellUQTBPREF3TW1Zd2x3ZFBQR0ZzYkc5ak9qcHlZWGRmZG1Wak9qcFNZWFxcXG5kV1pXTThWQ3hCUGlCaGN5QmpiM0psT2pwdmNITTZPbVJ5YjNBNk9rUnliM0ErT2pwa2NtOXdPanBvT0dSbE16STRNVFJsWXpoaE9EVTFcXFxuTlpnSFlUeGpiM0psT2pwdmNITTZPbkpoYm1kbE9qcFNZVzVuWlR4MWMybDZaVDRnWVhNZ1kyOXlaVG82YzJ4cFkyVTZPbWx1WkdWNE9qXFxcbnBUYkdsalpVbHVaR1Y0UEZ0VVhUNCtPanBwYm1SbGVEbzZhR1F5Tmprell6WXlZelJqTldRek9EQ1pCMkU4WTI5eVpUbzZiM0J6T2pweVxcXG5ZVzVuWlRvNlVtRnVaMlU4ZFhOcGVtVStJR0Z6SUdOdmNtVTZPbk5zYVdObE9qcHBibVJsZURvNlUyeHBZMlZKYm1SbGVEeGJWRjArUGpcXFxubzZhVzVrWlhnNk9tZ3pZVEF6WlRCbE5qZGpNV0ZqTURReW1nZGxQR052Y21VNk9tOXdjem82Y21GdVoyVTZPbEpoYm1kbFBIVnphWHBsXFxcblBpQmhjeUJqYjNKbE9qcHpiR2xqWlRvNmFXNWtaWGc2T2xOc2FXTmxTVzVrWlhnOFcxUmRQajQ2T21sdVpHVjRYMjExZERvNmFEQmpZalxcXG5JeFlUVTBNelkzWVRZMk5HU2JCMkU4WTI5eVpUbzZiM0J6T2pweVlXNW5aVG82VW1GdVoyVThkWE5wZW1VK0lHRnpJR052Y21VNk9uTnNcXFxuYVdObE9qcHBibVJsZURvNlUyeHBZMlZKYm1SbGVEeGJWRjArUGpvNmFXNWtaWGc2T21obU1qSTRabUl3WlRJMVpURmhZVEJqbkFkS1BHXFxcbkZzYkc5ak9qcHpkSEpwYm1jNk9rWnliMjFWZEdZNFJYSnliM0lnWVhNZ1kyOXlaVG82Wm0xME9qcEVaV0oxWno0Nk9tWnRkRG82YURSbVxcXG5aVE5tTWpneE16UTJNakkzWmpPZEI0a0JkMkZ6YlY5aWFXNWtaMlZ1T2pwamIyNTJaWEowT2pwemJHbGpaWE02T2p4cGJYQnNJSGRoYzJcXFxuMWZZbWx1WkdkbGJqbzZZMjl1ZG1WeWREbzZkSEpoYVhSek9qcEdjbTl0VjJGemJVRmlhU0JtYjNJZ1lXeHNiMk02T21KdmVHVmtPanBDXFxcbmIzZzhXM1U0WFQ0K09qcG1jbTl0WDJGaWFUbzZhRGhsTW1VNE9EYzNNR1psTkdJeU0yT2VCemhqYjNKbE9qcHpiR2xqWlRvNlBHbHRjR1xcXG53Z1cxUmRQam82YzNCc2FYUmZZWFJmYlhWME9qcG9NalptWWpjNFlUZ3lOVE14TlRNd01wOEhOV052Y21VNk9uSmxjM1ZzZERvNlVtVnpcXFxuZFd4MFBGUXNSVDQ2T20xaGNGOWxjbkk2T21nMk1USTNOVEl6WVRFMllqQTFZak0wb0FmYUFUeGtaVzV2WDJOaFkyaGxYMlJwY2pvNmJHXFxcbjlqWVd3Nk9tMWhibWxtWlhOME9qcGZPam84YVcxd2JDQnpaWEprWlRvNlpHVTZPa1JsYzJWeWFXRnNhWHBsSUdadmNpQmtaVzV2WDJOaFxcXG5ZMmhsWDJScGNqbzZiRzlqWVd3Nk9tMWhibWxtWlhOME9qcFRaWEpwWVd4cGVtVmtURzlqWVd4RFlXTm9aVTFoYm1sbVpYTjBSR0YwWVRcXFxuNDZPbVJsYzJWeWFXRnNhWHBsT2pwZlgwWnBaV3hrVm1semFYUnZjaUJoY3lCelpYSmtaVG82WkdVNk9sWnBjMmwwYjNJK09qcDJhWE5wXFxcbmRGOXpkSEk2T21nM05HTXhaVEEzTURNNU5EaG1ZV05qb1Fkd1BHRnNiRzlqT2pwemRISnBibWM2T2xOMGNtbHVaeUJoY3lCamIzSmxPalxcXG5wdmNITTZPbWx1WkdWNE9qcEpibVJsZUR4amIzSmxPanB2Y0hNNk9uSmhibWRsT2pwU1lXNW5aVVp5YjIwOGRYTnBlbVUrUGo0Nk9tbHVcXFxuWkdWNE9qcG9ZalEwWVdJNU5HSXdZbUl5WXpoa042SUhjRHhoYkd4dll6bzZjM1J5YVc1bk9qcFRkSEpwYm1jZ1lYTWdZMjl5WlRvNmIzXFxcbkJ6T2pwcGJtUmxlRG82U1c1a1pYZzhZMjl5WlRvNmIzQnpPanB5WVc1blpUbzZVbUZ1WjJWR2NtOXRQSFZ6YVhwbFBqNCtPanBwYm1SbFxcXG5lRG82YUdJME5HRmlPVFJpTUdKaU1tTTRaRGVqQjNBOFlXeHNiMk02T25OMGNtbHVaem82VTNSeWFXNW5JR0Z6SUdOdmNtVTZPbTl3Y3pcXFxubzZhVzVrWlhnNk9rbHVaR1Y0UEdOdmNtVTZPbTl3Y3pvNmNtRnVaMlU2T2xKaGJtZGxSbkp2YlR4MWMybDZaVDQrUGpvNmFXNWtaWGc2XFxcbk9taGlORFJoWWprMFlqQmlZakpqT0dRM3BBY3VjM1JrT2pwd1lYUm9PanBRWVhSb09qcGpiMjF3YjI1bGJuUnpPanBvT0RCa1l6VmhPVFxcXG5aaU5qUmxPR1ZsWnFVSE1HRnNiRzlqT2pwaGJHeHZZem82WlhoamFHRnVaMlZmYldGc2JHOWpPanBvTm1Jek16TTFObVU1TVRVMVpUSXdcXFxuTTZZSFNEeGhiR3h2WXpvNmRtVmpPanBXWldNOFZDeEJQaUJoY3lCamIzSmxPanB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d09qXFxcbnBvT0RRek1UazNZemd5TW1VMFpqRXhZYWNITVdOdmNtVTZPbkIwY2pvNmMzZGhjRjl1YjI1dmRtVnliR0Z3Y0dsdVp6bzZhR1EyTURFMlxcXG5ZV05rTVdFeE0yVmtZek9vQjBnOFlXeHNiMk02T25abFl6bzZWbVZqUEZRc1FUNGdZWE1nWTI5eVpUbzZiM0J6T2pwa2NtOXdPanBFY21cXFxuOXdQam82WkhKdmNEbzZhRGd6WTJGaU1UbGpPR1EzTm1Sa09UbXBCMGs4YzJWeVpHVmZhbk52YmpvNlpYSnliM0k2T2tWeWNtOXlJR0Z6XFxcbklITmxjbVJsT2pwa1pUbzZSWEp5YjNJK09qcGpkWE4wYjIwNk9tZ3hZakE1WldKak9UZGtNRGM0TW1KanFnYzJZV3hzYjJNNk9uWmxZelxcXG5vNlZtVmpQRlFzUVQ0Nk9uTm9jbWx1YTE5MGIxOW1hWFE2T21obE4ySTNaVEpsT0dZNU1EY3lOVGxqcXdjd1lXeHNiMk02T21Gc2JHOWpcXFxuT2pwbGVHTm9ZVzVuWlY5dFlXeHNiMk02T21nMllqTXpNelUyWlRreE5UVmxNakF6ckFjMllXeHNiMk02T25abFl6bzZWbVZqUEZRc1FUXFxcbjQ2T25Ob2NtbHVhMTkwYjE5bWFYUTZPbWcwTlRaak5tWTRPVEUwTWpjME56WTNyUWMyWVd4c2IyTTZPblpsWXpvNlZtVmpQRlFzUVQ0NlxcXG5Pbk5vY21sdWExOTBiMTltYVhRNk9taGlOall4TW1NM01tVm1Nall6WmpRenJnY3dZV3hzYjJNNk9tRnNiRzlqT2pwbGVHTm9ZVzVuWlZcXFxuOXRZV3hzYjJNNk9tZzJZak16TXpVMlpUa3hOVFZsTWpBenJ3ZGpQSE4wWkRvNmNHRnVhV05yYVc1bk9qcGlaV2RwYmw5d1lXNXBZem82XFxcblVHRnVhV05RWVhsc2IyRmtQRUUrSUdGeklHTnZjbVU2T25CaGJtbGpPanBDYjNoTlpWVndQam82ZEdGclpWOWliM2c2T21oaFlXUmhZV1xcXG5ObU9ERXhZalE0WWpJNXNBZUFBVHhqYjNKbE9qcHBkR1Z5T2pwaFpHRndkR1Z5Y3pvNlkyOXdhV1ZrT2pwRGIzQnBaV1E4U1Q0Z1lYTWdcXFxuWTI5eVpUbzZhWFJsY2pvNmRISmhhWFJ6T2pwa2IzVmliR1ZmWlc1a1pXUTZPa1J2ZFdKc1pVVnVaR1ZrU1hSbGNtRjBiM0krT2pwdVpYXFxcbmgwWDJKaFkyczZPbWcyWlRjMk9HWmtZMlExTUdZd1pUZ3dzUWRYWTI5eVpUbzZjMnhwWTJVNk9tbHVaR1Y0T2pvOGFXMXdiQ0JqYjNKbFxcXG5PanB2Y0hNNk9tbHVaR1Y0T2pwSmJtUmxlRHhKUGlCbWIzSWdXMVJkUGpvNmFXNWtaWGc2T21obE16Rm1OVEV4WkdNNU56ZzRZelJqc2dcXFxuZGVZMjl5WlRvNmMyeHBZMlU2T21sdVpHVjRPam84YVcxd2JDQmpiM0psT2pwdmNITTZPbWx1WkdWNE9qcEpibVJsZUUxMWREeEpQaUJtXFxcbmIzSWdXMVJkUGpvNmFXNWtaWGhmYlhWME9qcG9ZV05qTkRJNU56UTFNemN4WkRBMlpiTUhXbU52Y21VNk9tRnljbUY1T2pvOGFXMXdiQ1xcXG5CamIzSmxPanB2Y0hNNk9tbHVaR1Y0T2pwSmJtUmxlRTExZER4SlBpQm1iM0lnVzFRN0lFNWRQam82YVc1a1pYaGZiWFYwT2pwb1l6RXdcXFxuWm1FNE1qa3dNamhqTVRWaFpyUUhObUZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrT2pwemFISnBibXRmZEc5ZlptbDBPanBvTm1ZeVpUXFxcblk0T1RObE5XWTJORGMyTUxVSE5tRnNiRzlqT2pwMlpXTTZPbFpsWXp4VUxFRStPanB6YUhKcGJtdGZkRzlmWm1sME9qcG9ZV05pTW1SaVxcXG5NalUzT0Rjd056YzFNYllITFhWeWJEbzZWWEpzT2pwallXNXViM1JmWW1WZllWOWlZWE5sT2pwb1pUY3lOMkUzTVdZNE1USmtZbU0zTjdcXFxuY0hiRHhqYjNKbE9qcHBkR1Z5T2pwaFpHRndkR1Z5Y3pvNmJXRndPanBOWVhBOFNTeEdQaUJoY3lCamIzSmxPanBwZEdWeU9qcDBjbUZwXFxcbmRITTZPbWwwWlhKaGRHOXlPanBKZEdWeVlYUnZjajQ2T25SeWVWOW1iMnhrT2pwb09UVTVPR0ptTVRGaFpUZGlOakl6TmJnSExXRnNiR1xcXG45ak9qcDJaV002T2xabFl6eFVMRUUrT2pwd2RYTm9PanBvTmprM1pUZ3daakUzWVdZeVpXUmtOcmtITUdGc2JHOWpPanBoYkd4dll6bzZcXFxuWlhoamFHRnVaMlZmYldGc2JHOWpPanBvTm1Jek16TTFObVU1TVRVMVpUSXdNN29ITG5OMFpEbzZhVzg2T21WeWNtOXlPanBGY25KdmNqXFxcbm82WDI1bGR6bzZhRGRoT0dVMk1ESXdOVGRpTVdabVpHVzdCMGc4YzNSa09qcHdZWFJvT2pwUVlYUm9RblZtSUdGeklHTnZjbVU2T21OdlxcXG5iblpsY25RNk9rWnliMjA4SmxRK1BqbzZabkp2YlRvNmFEZ3paV1UzWkdJNE1URTVZV0kzTURtOEJ5eGhiR3h2WXpvNmRtVmpPanBXWldcXFxuTThWQ3hCUGpvNmNHOXdPanBvWmpjek1XTTFNMkkwWWpjM1lUUm1NTDBITldOdmNtVTZPbkpsYzNWc2REbzZVbVZ6ZFd4MFBGUXNSVDQ2XFxcbk9tMWhjRjlsY25JNk9tZ3lZelU0WVdaak5UVTVaRGRoTVRBNXZnYzZZV3hzYjJNNk9uWmxZem82Vm1WalBGUXNRVDQ2T25SeWVWOXlaWFxcXG5ObGNuWmxYMlY0WVdOME9qcG9OREJoTmpJeVlUZ3dZVEE1TldSbFlyOEhPbUZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrT2pwMGNubGZcXFxuY21WelpYSjJaVjlsZUdGamREbzZhR0l6WTJSaU9EYzBabVkwTmprd1lqREFCenBoYkd4dll6bzZkbVZqT2pwV1pXTThWQ3hCUGpvNmRIXFxcbko1WDNKbGMyVnlkbVZmWlhoaFkzUTZPbWhqWlRnMFltWTFaR1V4WkRCbFpHTmh3UWNzWVc1NWFHOTNPanBsY25KdmNqbzZiMkpxWldOMFxcXG5YM0psWmpvNmFEQm1Nell6WmpVek5ESTBOVGxoTjJQQ0J5eGhibmxvYjNjNk9tVnljbTl5T2pwdlltcGxZM1JmY21WbU9qcG9OR1l3TXpcXFxuSXlaV0UyTm1Nek4yVTJZc01ITEdGdWVXaHZkem82WlhKeWIzSTZPbTlpYW1WamRGOXlaV1k2T21nMVptRTBNV1kzWlRoa09UWmhPV0V5XFxcbnhBY3NZVzU1YUc5M09qcGxjbkp2Y2pvNmIySnFaV04wWDNKbFpqbzZhRGswWXpoaFltRmlNRGswTURneE5XVEZCeXhoYm5sb2IzYzZPbVxcXG5WeWNtOXlPanB2WW1wbFkzUmZjbVZtT2pwb09UVmpaVEV4WmpFMFptSXhaV1kxTWNZSFFXRnVlV2h2ZHpvNlpYSnliM0k2T2p4cGJYQnNcXFxuSUdGdWVXaHZkem82UlhKeWIzSStPanBqYjI1emRISjFZM1E2T21nd1pEQTJNV0poTnpaaVlqSXlNekUxeHdjL2FXNWtaWGh0WVhBNk9tXFxcbjFoY0RvNlkyOXlaVG82WlhGMWFYWmhiR1Z1ZERvNmUzdGpiRzl6ZFhKbGZYMDZPbWc1WXpBeE16VmxaREk0TnpKbVlXVmx5QWRJYUdGelxcXG5hR0p5YjNkdU9qcHlZWGM2T2xKaGQxUmhZbXhsU1c1dVpYSThRVDQ2T25CeVpYQmhjbVZmYVc1elpYSjBYM05zYjNRNk9tZ3lPVGRqWkdcXFxuTTVPR1JtTUdOa056Z3h5UWRJYUdGemFHSnliM2R1T2pweVlYYzZPbWx1Ym1WeU9qcFNZWGRVWVdKc1pVbHVibVZ5UEVFK09qcG1jbVZsXFxcblgySjFZMnRsZEhNNk9taGtZbVEwWTJSaFpUUmlZMlZpWmpGa3lnY3FjMlZ5WkdWZmFuTnZiam82Y21WaFpEbzZaWEp5YjNJNk9tZzNOalxcXG5nM1lqRTFOalprTWpnME1tSml5d2NxYzJWeVpHVmZhbk52YmpvNmNtVmhaRG82WlhKeWIzSTZPbWd3TURnM01tUm1NbVptWkdJeVpERXlcXFxuekFjcWMyVnlaR1ZmYW5OdmJqbzZjbVZoWkRvNlpYSnliM0k2T21oall6Wm1NVGc0TkROa1lqRmxOV0V6elFjcWMyVnlaR1ZmYW5OdmJqXFxcbm82Y21WaFpEbzZaWEp5YjNJNk9taGhaV1ppWW1KaVl6UTFNalZtTXpFMXpnZHNQR052Y21VNk9tbDBaWEk2T21Ga1lYQjBaWEp6T2pwalxcXG5iM0JwWldRNk9rTnZjR2xsWkR4SlBpQmhjeUJqYjNKbE9qcHBkR1Z5T2pwMGNtRnBkSE02T21sMFpYSmhkRzl5T2pwSmRHVnlZWFJ2Y2pcXFxuNDZPbTVsZUhRNk9tZzNZMk5pWldJd01UQXdOV1kzWVRCanp3YzFZMjl5WlRvNmMzUnlPam84YVcxd2JDQnpkSEkrT2pwemRHRnlkSE5mXFxcbmQybDBhRG82YURrek1HWXhOVFEwTnpka05Ua3hNVFhRQjE4OEptMTFkQ0JKSUdGeklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6bzZaR1xcXG45MVlteGxYMlZ1WkdWa09qcEViM1ZpYkdWRmJtUmxaRWwwWlhKaGRHOXlQam82Ym1WNGRGOWlZV05yT2pwb1lUVXdPRGhrTlRZek9ESmhcXFxuWlRrMVlkRUhOV052Y21VNk9uTjBjam82UEdsdGNHd2djM1J5UGpvNmMzUmhjblJ6WDNkcGRHZzZPbWczWVdNeE56bGpZak13TW1VNE1XXFxcblkyMGdjelkyOXlaVG82YzNSeU9qbzhhVzF3YkNCemRISStPanBsYm1SelgzZHBkR2c2T21oaE1ETm1PR1JqTmpkallUQTBOR0l5MHdkYVxcXG5ZMjl5WlRvNllYSnlZWGs2T2p4cGJYQnNJR052Y21VNk9tOXdjem82YVc1a1pYZzZPa2x1WkdWNFRYVjBQRWsrSUdadmNpQmJWRHNnVGxcXFxuMCtPanBwYm1SbGVGOXRkWFE2T21oaE5ESTBPRFF4TURSa01UZ3lOelV5MUFkVlBHcHpYM041Y3pvNlNXNTBiMGwwWlhJZ1lYTWdZMjl5XFxcblpUbzZhWFJsY2pvNmRISmhhWFJ6T2pwcGRHVnlZWFJ2Y2pvNlNYUmxjbUYwYjNJK09qcHVaWGgwT2pwb09XRXhNR1V6TWpFM1pEWTJaRFxcXG5sak50VUhLblZ5YkRvNmNHRnljMlZ5T2pwSmJuQjFkRG82Ym1WM09qcG9Nek0wWldZNU16WmpORGcwWWpreU1kWUhNblZ5YkRvNmNHRnlcXFxuYzJWeU9qcHBjMTloYzJOcGFWOW9aWGhmWkdsbmFYUTZPbWcxTURNMk1EbGpOVGN6WXpVeVl6WTAxd2RzUEdOdmNtVTZPbWwwWlhJNk9tXFxcbkZrWVhCMFpYSnpPanBqYjNCcFpXUTZPa052Y0dsbFpEeEpQaUJoY3lCamIzSmxPanBwZEdWeU9qcDBjbUZwZEhNNk9tbDBaWEpoZEc5eVxcXG5PanBKZEdWeVlYUnZjajQ2T201bGVIUTZPbWczTUdGbVpEbGlNR1ZsWkRFd1lUVmoyQWMxWTI5eVpUbzZjM1J5T2pvOGFXMXdiQ0J6ZEhcXFxuSStPanB6ZEdGeWRITmZkMmwwYURvNmFEaGlZakExTVdFeVpUaGpaR1UzTVRIWkJ6TmpiM0psT2pwemRISTZPanhwYlhCc0lITjBjajQ2XFxcbk9tVnVaSE5mZDJsMGFEbzZhR05oWldJM00yUmtNMk0zWVdGbU1EUGFCekpoYm5sb2IzYzZPbVZ5Y205eU9qcEZjbkp2Y2tsdGNHdzZPbVxcXG5WeWNtOXlPanBvTURRMk4yWXpaVEV5WWpJeFpURXladHNIU0R4a2JHMWhiR3h2WXpvNmMzbHpPanBUZVhOMFpXMGdZWE1nWkd4dFlXeHNcXFxuYjJNNk9rRnNiRzlqWVhSdmNqNDZPbUZzYkc5ak9qcG9ZV0pqWWpjeVltSTJNR1F4TXpBNE1kd0hRMk52Y21VNk9tWnRkRG82Um05eWJXXFxcbkYwZEdWeU9qcHdZV1JmYVc1MFpXZHlZV3c2T25keWFYUmxYM0J5WldacGVEbzZhRFk1TVRVd1kyTTROakE1WVdVME9HUGRCMHRqYjNKbFxcXG5PanBtYlhRNk9tWnNiMkYwT2pvOGFXMXdiQ0JqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGtnWm05eUlHWTJORDQ2T21adGREbzZhREZqWWpcXFxuUXlOek14WlRNMU16WTJZV0hlQjFnOFlXeHNiMk02T25abFl6bzZhVzUwYjE5cGRHVnlPanBKYm5SdlNYUmxjanhVTEVFK0lHRnpJR052XFxcbmNtVTZPbTl3Y3pvNlpISnZjRG82UkhKdmNENDZPbVJ5YjNBNk9taGlNVE00T1RFMVpqVXpOVE5oTkRBMzN3YzNkMkZ6YlY5aWFXNWtaMlxcXG5WdU9qcGpZWE4wT2pwS2MwTmhjM1E2T21SNWJsOXBiblJ2T2pwb1pXSXdOMk0yT0RreVpHTXhNbUl5TXVBSFFtTnZjbVU2T25CMGNqbzZcXFxuWkhKdmNGOXBibDl3YkdGalpUeHpkR1E2T21sdk9qcGxjbkp2Y2pvNlJYSnliM0krT2pwb01URTFNMlUyWTJJMk9URTRPVGRoWStFSFNEXFxcbnhoYkd4dll6bzZkbVZqT2pwV1pXTThWQ3hCUGlCaGN5QmpiM0psT2pwdmNITTZPbVJ5YjNBNk9rUnliM0ErT2pwa2NtOXdPanBvTVdFM1xcXG5PR0k0WTJJek5USXlaak5sTU9JSE5HTnZjbVU2T25KbGMzVnNkRG82VW1WemRXeDBQRlFzUlQ0Nk9uVnVkM0poY0RvNmFHSTVOVE14TmpcXFxuQTBZbVUzTXpreU9ERGpCMDA4WVd4c2IyTTZPbUZzYkc5ak9qcEhiRzlpWVd3Z1lYTWdZMjl5WlRvNllXeHNiMk02T2tGc2JHOWpZWFJ2XFxcbmNqNDZPbUZzYkc5allYUmxPanBvWm1ZNFpqWTRPRGhsTWpWaVltWmhPT1FIVkR4aGJHeHZZem82WVd4c2IyTTZPa2RzYjJKaGJDQmhjeVxcXG5CamIzSmxPanBoYkd4dll6bzZRV3hzYjJOaGRHOXlQam82WVd4c2IyTmhkR1ZmZW1WeWIyVmtPanBvTXpnell6UXhaalkwTkROak9EZ3hcXFxuWWVVSE9XbHVaR1Y0YldGd09qcHRZWEE2T2tsdVpHVjRUV0Z3UEVzc1ZpeFRQam82YVc1elpYSjBPanBvTm1Jek5UVmpZV0ZoT1dRMFkyXFxcblpsTStZSE9XbHVaR1Y0YldGd09qcHRZWEE2T2tsdVpHVjRUV0Z3UEVzc1ZpeFRQam82YVc1elpYSjBPanBvTlRBNFptTmlaVFZoTVdNeVxcXG5ORFF6WStjSGVUeGtaVzV2WDJOaFkyaGxYMlJwY2pvNmQyRnpiVG82UjJ4dlltRnNTSFIwY0VOaFkyaGxJR0Z6SUhkaGMyMWZZbWx1WkdcXFxuZGxiam82WTI5dWRtVnlkRG82ZEhKaGFYUnpPanBTWldaR2NtOXRWMkZ6YlVGaWFUNDZPbkpsWmw5bWNtOXRYMkZpYVRvNmFEVmhOV1F4XFxcbk9XVmpaRFZqWldWbVlqZm9CM2c4WkdWdWIxOWpZV05vWlY5a2FYSTZPbmRoYzIwNk9reHZZMkZzU0hSMGNFTmhZMmhsSUdGeklIZGhjMlxcXG4xZlltbHVaR2RsYmpvNlkyOXVkbVZ5ZERvNmRISmhhWFJ6T2pwU1pXWkdjbTl0VjJGemJVRmlhVDQ2T25KbFpsOW1jbTl0WDJGaWFUbzZcXFxuYURBek9XUmtaVGsxTVRabE9XWmpaVFBwQjBKamIzSmxPanB3ZEhJNk9tUnliM0JmYVc1ZmNHeGhZMlU4YzNSa09qcHBiem82WlhKeWIzXFxcbkk2T2tWeWNtOXlQam82YURJNFkyWXlOVGxqT1Rsak1UTmtZV2JxQjAwOFlXeHNiMk02T21Gc2JHOWpPanBIYkc5aVlXd2dZWE1nWTI5eVxcXG5aVG82WVd4c2IyTTZPa0ZzYkc5allYUnZjajQ2T21Gc2JHOWpZWFJsT2pwb1ptWTRaalk0T0RobE1qVmlZbVpoT09zSFZEeGhiR3h2WXpcXFxubzZZV3hzYjJNNk9rZHNiMkpoYkNCaGN5QmpiM0psT2pwaGJHeHZZem82UVd4c2IyTmhkRzl5UGpvNllXeHNiMk5oZEdWZmVtVnliMlZrXFxcbk9qcG9Nemd6WXpReFpqWTBORE5qT0RneFlld0hWRHh6WlhKa1pWOXFjMjl1T2pweVpXRmtPanBUYkdsalpWSmxZV1FnWVhNZ2MyVnlaR1xcXG5WZmFuTnZiam82Y21WaFpEbzZVbVZoWkQ0Nk9uQnZjMmwwYVc5dU9qcG9NREkxTmpaaFlXUmxZVFZrTURWaE9PMEhUVHhoYkd4dll6bzZcXFxuWVd4c2IyTTZPa2RzYjJKaGJDQmhjeUJqYjNKbE9qcGhiR3h2WXpvNlFXeHNiMk5oZEc5eVBqbzZZV3hzYjJOaGRHVTZPbWhtWmpobU5qXFxcbmc0T0dVeU5XSmlabUU0N2dkSVBHRnNiRzlqT2pwMlpXTTZPbFpsWXp4VUxFRStJR0Z6SUdOdmNtVTZPbTl3Y3pvNlpISnZjRG82UkhKdlxcXG5jRDQ2T21SeWIzQTZPbWhoT0dRd05HRTBaRFZqTkdJeE9UWTU3d2RiUEdOdmNtVTZPbk4wY2pvNmFYUmxjam82UW5sMFpYTWdZWE1nWTJcXFxuOXlaVG82YVhSbGNqbzZkSEpoYVhSek9qcHBkR1Z5WVhSdmNqbzZTWFJsY21GMGIzSStPanB1WlhoME9qcG9ZalEzTXpVeE0yRTFNR1ZqXFxcbk5UZG1aZkFIVFR4aGJHeHZZem82WVd4c2IyTTZPa2RzYjJKaGJDQmhjeUJqYjNKbE9qcGhiR3h2WXpvNlFXeHNiMk5oZEc5eVBqbzZZV1xcXG54c2IyTmhkR1U2T21obVpqaG1Oamc0T0dVeU5XSmlabUU0OFFkTlBHRnNiRzlqT2pwaGJHeHZZem82UjJ4dlltRnNJR0Z6SUdOdmNtVTZcXFxuT21Gc2JHOWpPanBCYkd4dlkyRjBiM0krT2pwaGJHeHZZMkYwWlRvNmFHWm1PR1kyT0RnNFpUSTFZbUptWVRqeUIxUThZV3hzYjJNNk9tXFxcbkZzYkc5ak9qcEhiRzlpWVd3Z1lYTWdZMjl5WlRvNllXeHNiMk02T2tGc2JHOWpZWFJ2Y2o0Nk9tRnNiRzlqWVhSbFgzcGxjbTlsWkRvNlxcXG5hRE00TTJNME1XWTJORFF6WXpnNE1XSHpCenBqYjNKbE9qcHZjSE02T25KaGJtZGxPanBTWVc1blpVSnZkVzVrY3pvNlkyOXVkR0ZwYm5cXFxuTTZPbWd4TnpGa1lXRTFaR1ZsTWpBMVlqQmk5QWNzWTI5eVpUbzZjMnhwWTJVNk9tbHVaR1Y0T2pweVlXNW5aVG82YUdZME5tWTROREl5XFxcbk1USm1ZV0ZsT1dUMUJ5TjFjbXc2T2xWeWJEbzZjMk5vWlcxbE9qcG9NalUzTWpZNE9UTTFORFEwWTJGa05QWUhUenhoYkd4dll6bzZjbVxcXG5GM1gzWmxZem82VW1GM1ZtVmpQRlFzUVQ0Z1lYTWdZMjl5WlRvNmIzQnpPanBrY205d09qcEVjbTl3UGpvNlpISnZjRG82YURObVptRTFcXFxuTVRrNE0yWTJZakF5WmpuM0IwMDhZV3hzYjJNNk9tRnNiRzlqT2pwSGJHOWlZV3dnWVhNZ1kyOXlaVG82WVd4c2IyTTZPa0ZzYkc5allYXFxcblJ2Y2o0Nk9tRnNiRzlqWVhSbE9qcG9abVk0WmpZNE9EaGxNalZpWW1aaE9QZ0hWRHhoYkd4dll6bzZZV3hzYjJNNk9rZHNiMkpoYkNCaFxcXG5jeUJqYjNKbE9qcGhiR3h2WXpvNlFXeHNiMk5oZEc5eVBqbzZZV3hzYjJOaGRHVmZlbVZ5YjJWa09qcG9Nemd6WXpReFpqWTBORE5qT0RcXFxuZ3hZZmtIV3p4amIzSmxPanB6ZEhJNk9tbDBaWEk2T2tKNWRHVnpJR0Z6SUdOdmNtVTZPbWwwWlhJNk9uUnlZV2wwY3pvNmFYUmxjbUYwXFxcbmIzSTZPa2wwWlhKaGRHOXlQam82Ym1WNGREbzZhR0kwTnpNMU1UTmhOVEJsWXpVM1ptWDZCMDA4WVd4c2IyTTZPbUZzYkc5ak9qcEhiR1xcXG45aVlXd2dZWE1nWTI5eVpUbzZZV3hzYjJNNk9rRnNiRzlqWVhSdmNqNDZPbUZzYkc5allYUmxPanBvWm1ZNFpqWTRPRGhsTWpWaVltWmhcXFxuT1BzSFZEeGhiR3h2WXpvNllXeHNiMk02T2tkc2IySmhiQ0JoY3lCamIzSmxPanBoYkd4dll6bzZRV3hzYjJOaGRHOXlQam82WVd4c2IyXFxcbk5oZEdWZmVtVnliMlZrT2pwb016Z3pZelF4WmpZME5ETmpPRGd4WWZ3SFRUeGhiR3h2WXpvNllXeHNiMk02T2tkc2IySmhiQ0JoY3lCalxcXG5iM0psT2pwaGJHeHZZem82UVd4c2IyTmhkRzl5UGpvNllXeHNiMk5oZEdVNk9taG1aamhtTmpnNE9HVXlOV0ppWm1FNC9RY3ZZMjl5WlRcXFxubzZabTEwT2pwWGNtbDBaVG82ZDNKcGRHVmZZMmhoY2pvNmFESTJObUUzTUdZd1lqVmxNamMzWkREK0IwSmhibmxvYjNjNk9tVnljbTl5XFxcbk9qbzhhVzF3YkNCaGJubG9iM2M2T2tWeWNtOXlQam82Wm5KdmJWOWhaR2h2WXpvNmFEQXpNemhrWmpkbU56Y3pPV0UwWVRqL0IwczhZV1xcXG41NWFHOTNPanBsY25KdmNqbzZSWEp5YjNKSmJYQnNQRVUrSUdGeklHTnZjbVU2T21adGREbzZSR2x6Y0d4aGVUNDZPbVp0ZERvNmFEaG1cXFxuWkRRMk5EZzFOR0V3WWpVek1tR0FDR004Sm0xMWRDQnpaWEprWlY5cWMyOXVPanB6WlhJNk9sTmxjbWxoYkdsNlpYSThWeXhHUGlCaGN5XFxcbkJ6WlhKa1pUbzZjMlZ5T2pwVFpYSnBZV3hwZW1WeVBqbzZjMlZ5YVdGc2FYcGxYM04wY2pvNmFEQTVaakkyTkROaVptWmlOalF5T0dPQlxcXG5DRE5oYkd4dll6bzZZV3hzYjJNNk9rZHNiMkpoYkRvNllXeHNiMk5mYVcxd2JEbzZhREJtWWpWaU5tUmhaRFk1TmpBNE5qZUNDRWc4YzNcXFxuUmtPanB3WVhSb09qcFFZWFJvUW5WbUlHRnpJR052Y21VNk9tTnZiblpsY25RNk9rWnliMjA4SmxRK1BqbzZabkp2YlRvNmFETXdNak5sXFxcbk1qRTRNbUpqWVRjMk9XU0RDRUpvWVhOb1luSnZkMjQ2T25KaGR6bzZVbUYzVkdGaWJHVThWQ3hCUGpvNmQybDBhRjlqWVhCaFkybDBlVlxcXG45cGJqbzZhR1UzTmpBNFlXRXdNR0ptWWpVNFpUV0VDRDVrWlc1dlgyTmhZMmhsWDJScGNqbzZiRzlqWVd3Nk9taGxZV1JsY25OZlkyOXVcXFxuZEdWdWRGOTBlWEJsT2pwb1lqRmtOek16TURBMVpESTNPV013T0lVSVBXUmxibTlmWTJGamFHVmZaR2x5T2pwM1lYTnRPanBIYkc5aVlXXFxcbnhJZEhSd1EyRmphR1U2T201bGR6bzZhRFZsTlROaU9EVXpaall6TkdSaFlUV0dDRDV6WlhKa1pWOTNZWE50WDJKcGJtUm5aVzQ2T25ObFxcXG5jam82VFdGd1UyVnlhV0ZzYVhwbGNqbzZibVYzT2pwb05XTTBPRFkwWldWa1l6TXdOMlZpWkljSUxXRnNiRzlqT2pwMlpXTTZPbFpsWXpcXFxueFVMRUUrT2pwd2RYTm9PanBvWVdSaU9UUmxPRFEwTTJaaU9XVTBOb2dJTTJGc2JHOWpPanBoYkd4dll6bzZSMnh2WW1Gc09qcGhiR3h2XFxcblkxOXBiWEJzT2pwb01HWmlOV0kyWkdGa05qazJNRGcyTjRrSU0yRnNiRzlqT2pwaGJHeHZZem82UjJ4dlltRnNPanBoYkd4dlkxOXBiWFxcXG5Cc09qcG9NR1ppTldJMlpHRmtOamsyTURnMk40b0lTRHh6ZEdRNk9uQmhkR2c2T2xCaGRHaENkV1lnWVhNZ1kyOXlaVG82WTI5dWRtVnlcXFxuZERvNlJuSnZiVHdtVkQ0K09qcG1jbTl0T2pwb1pEQTJZV0kzTURFME1EaGtZV1poWllzSU0yRnNiRzlqT2pwaGJHeHZZem82UjJ4dlltXFxcbkZzT2pwaGJHeHZZMTlwYlhCc09qcG9NR1ppTldJMlpHRmtOamsyTURnMk40d0lOM2RoYzIxZlltbHVaR2RsYmpvNlkyRnpkRG82U25ORFxcXG5ZWE4wT2pwa2VXNWZhVzUwYnpvNmFEQTNNalkzTlRJeE56WTNZbUV5WWpXTkNEZDNZWE50WDJKcGJtUm5aVzQ2T21OaGMzUTZPa3B6UTJcXFxuRnpkRG82WkhsdVgybHVkRzg2T21nMVlURTBZVFZqT0RobE5UUTROakJsamdnellXeHNiMk02T21Gc2JHOWpPanBIYkc5aVlXdzZPbUZzXFxcbmJHOWpYMmx0Y0d3Nk9tZ3dabUkxWWpaa1lXUTJPVFl3T0RZM2p3Z3ZZMjl5WlRvNmMzUnlPam84YVcxd2JDQnpkSEkrT2pweVptbHVaRFxcXG5vNmFHSXlOR0k0TXpreE9HUmlNVFV4TUdhUUNFSjFjbXc2T25CaGNuTmxjam82YVhOZmJtOXliV0ZzYVhwbFpGOTNhVzVrYjNkelgyUnlcXFxuYVhabFgyeGxkSFJsY2pvNmFEZ3haakF4WTJVd01EYzVPV0ZrTUdHUkNETmhiR3h2WXpvNllXeHNiMk02T2tkc2IySmhiRG82WVd4c2IyXFxcbk5mYVcxd2JEbzZhREJtWWpWaU5tUmhaRFk1TmpBNE5qZVNDRE5oYkd4dll6bzZZV3hzYjJNNk9rZHNiMkpoYkRvNllXeHNiMk5mYVcxd1xcXG5iRG82YURCbVlqVmlObVJoWkRZNU5qQTROamVUQ0ROaGJHeHZZem82WVd4c2IyTTZPa2RzYjJKaGJEbzZZV3hzYjJOZmFXMXdiRG82YURcXFxuQm1ZalZpTm1SaFpEWTVOakE0TmplVUNETmhiR3h2WXpvNllXeHNiMk02T2tkc2IySmhiRG82WVd4c2IyTmZhVzF3YkRvNmFEQm1ZalZpXFxcbk5tUmhaRFk1TmpBNE5qZVZDRGh6ZEdRNk9uUm9jbVZoWkRvNlZHaHlaV0ZrU1dRNk9tNWxkem82Wlhob1lYVnpkR1ZrT2pwb1pXUm1ZMlxcXG5GbE9UTmlabUptT0daaFpaWUlKSE4wWkRvNmRHaHlaV0ZrT2pwd1lYSnJPanBvTUdFeVpUUmpZalkwTWpZM05URTNPWmNJTkdGc2JHOWpcXFxuT2pweVlYZGZkbVZqT2pwallYQmhZMmwwZVY5dmRtVnlabXh2ZHpvNmFEQmxPVGd5WXpZNU1Ea3lOMlU1TURPWUNDMWpiM0psT2pwd1lXXFxcbjVwWTJ0cGJtYzZPbkJoYm1salgyWnRkRG82YURKa00yTTFOVGcyTVRjMU1EazRaRG1aQ0VSamIzSmxPanB6YkdsalpUbzZhVzVrWlhnNlxcXG5Pbk5zYVdObFgyVnVaRjlwYm1SbGVGOXZkbVZ5Wm14dmQxOW1ZV2xzT2pwb1kySTVNalZpTW1ZM1lqVXlZekk1WVpvSVpUeG9ZWE5vWW5cXFxuSnZkMjQ2T25ObGREbzZTR0Z6YUZObGREeFVMRk1zUVQ0Z1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBqYjJ4c1pXTjBPanBGXFxcbmVIUmxibVE4VkQ0K09qcGxlSFJsYm1RNk9tZzRaR0psWWpVeVltUXlNV00wTmprd213aGxQR2hoYzJoaWNtOTNiam82YzJWME9qcElZWFxcXG5Ob1UyVjBQRlFzVXl4QlBpQmhjeUJqYjNKbE9qcHBkR1Z5T2pwMGNtRnBkSE02T21OdmJHeGxZM1E2T2tWNGRHVnVaRHhVUGo0Nk9tVjRcXFxuZEdWdVpEbzZhR1UwTURJNVpqRmpZakl6TVdVNFltS2NDREJqYjNKbE9qcHlaWE4xYkhRNk9sSmxjM1ZzZER4VUxFVStPanB2YXpvNmFHXFxcbkl3TXpnNE9XTXdZakprWXpsaVlqaWRDSllCUEdOdmNtVTZPbkpsYzNWc2REbzZVbVZ6ZFd4MFBGUXNSajRnWVhNZ1kyOXlaVG82YjNCelxcXG5PanAwY25sZmRISmhhWFE2T2taeWIyMVNaWE5wWkhWaGJEeGpiM0psT2pweVpYTjFiSFE2T2xKbGMzVnNkRHhqYjNKbE9qcGpiMjUyWlhcXFxuSjBPanBKYm1aaGJHeHBZbXhsTEVVK1BqNDZPbVp5YjIxZmNtVnphV1IxWVd3Nk9taGxPREZsWW1Vd05UZzJPVFEyWVRjem5nZ3NZMjl5XFxcblpUbzZaWEp5YjNJNk9rVnljbTl5T2pwallYVnpaVG82YURFeE5qa3hNalkyWVRkaU1qVTNZVENmQ0N4amIzSmxPanBsY25KdmNqbzZSWFxcXG5KeWIzSTZPbU5oZFhObE9qcG9NMlJqTWpVMk9USTRNbVl3WXpZM1lxQUlMR052Y21VNk9tVnljbTl5T2pwRmNuSnZjam82WTJGMWMyVTZcXFxuT21nMlptRXpPRFV3TWpnM01UZ3hNakEyb1Fnc1kyOXlaVG82WlhKeWIzSTZPa1Z5Y205eU9qcGpZWFZ6WlRvNmFHVXlPRFl6TTJFMk5tXFxcbkZrWWpWbU1UR2lDRUJvWVhOb1luSnZkMjQ2T25KaGR6bzZhVzV1WlhJNk9sSmhkMVJoWW14bFBGUXNRVDQ2T25KbGMyVnlkbVU2T21nNFxcXG5NbUZpT0RKa1pHVmhNakJrTWpneG93aEFhR0Z6YUdKeWIzZHVPanB5WVhjNk9tbHVibVZ5T2pwU1lYZFVZV0pzWlR4VUxFRStPanB5WlhcXFxuTmxjblpsT2pwb016SmxZbVF5WTJZMFpqVTVOVGd4TmFRSVFHaGhjMmhpY205M2JqbzZjbUYzT2pwcGJtNWxjam82VW1GM1ZHRmliR1U4XFxcblZDeEJQam82Y21WelpYSjJaVG82YUdVeE5ESmxPRGt4TVRVNE9EYzBaVGVsQ0Rob1lYTm9Zbkp2ZDI0Nk9uSmhkem82VW1GM1ZHRmliR1xcXG5VOFZDeEJQam82Y21WdGIzWmxPanBvWlRkak1HTTJOV1kxTmpobU9EQTBPS1lJWWp4a1pXNXZYMk5oWTJobFgyUnBjam82WjJ4dlltRnNcXFxuT2pwVmNteFViMFpwYkdWdVlXMWxRMjl1ZG1WeWMybHZia1Z5Y205eUlHRnpJR052Y21VNk9tWnRkRG82UkdWaWRXYytPanBtYlhRNk9tXFxcbmd3WkRZNVpHVTVORFprTVdRd1lqaGxwd2hEYzJWeVpHVmZkMkZ6YlY5aWFXNWtaMlZ1T2pwa1pUbzZSR1Z6WlhKcFlXeHBlbVZ5T2pwcFxcXG5jMTl1ZFd4c2FYTm9PanBvWVRZd01XVmpObUprTm1FMU9XTXlZYWdJTEdOdmNtVTZPbVZ5Y205eU9qcEZjbkp2Y2pvNlkyRjFjMlU2T21cXFxuaGlZVGMzTkdFM05ESXpaRFV3TldFMXFRaGJQR052Y21VNk9uTjBjam82YVhSbGNqbzZRMmhoY25NZ1lYTWdZMjl5WlRvNmFYUmxjam82XFxcbmRISmhhWFJ6T2pwcGRHVnlZWFJ2Y2pvNlNYUmxjbUYwYjNJK09qcHVaWGgwT2pwb01qVmpaalV5Wmpaall6SmxPRFJrWmFvSVBtUmhkR1xcXG5GZmRYSnNPanB0YVcxbE9qcHZibXg1WDJoMGRIQmZkRzlyWlc1ZlkyOWtaVjl3YjJsdWRITTZPbWcwWmpRMFlqVTNNVE5pTURWaE1UUXlcXFxucXdndGNtbHVaem82WkdsblpYTjBPanBEYjI1MFpYaDBPanB1WlhjNk9tZzRNVEZtT0RRMVpXSm1ZV0U0WWpBMnJBZ1JYMTkzWW1sdVpHXFxcbmRsYmw5dFlXeHNiMk90Q0ZzOFkyOXlaVG82YzNSeU9qcHBkR1Z5T2pwRGFHRnljeUJoY3lCamIzSmxPanBwZEdWeU9qcDBjbUZwZEhNNlxcXG5PbWwwWlhKaGRHOXlPanBKZEdWeVlYUnZjajQ2T201bGVIUTZPbWd5TldObU5USm1ObU5qTW1VNE5HUmxyZ2czWVd4c2IyTTZPblpsWXpcXFxubzZWbVZqUEZRc1FUNDZPbVY0ZEdWdVpGOTBjblZ6ZEdWa09qcG9ZekUxTURNd05UVmtPV1kzTTJKbU9hOElPV2hoYzJoaWNtOTNiam82XFxcbmNtRjNPanBTWVhkVVlXSnNaVHhVTEVFK09qcHlaWE5sY25abE9qcG9NRE0zWmpBMU1XWTVPV1l5Tm1WaE5MQUlPV2hoYzJoaWNtOTNialxcXG5vNmNtRjNPanBTWVhkVVlXSnNaVHhVTEVFK09qcHlaWE5sY25abE9qcG9ZMkptTkdNM09UazBaRGRrWmpFelliRUlPV2hoYzJoaWNtOTNcXFxuYmpvNmNtRjNPanBTWVhkVVlXSnNaVHhVTEVFK09qcHlaWE5sY25abE9qcG9aRFJqT0dNM05qa3dPR0V6WVRNeVk3SUlhenhvWVhOb1luXFxcbkp2ZDI0Nk9tMWhjRG82U0dGemFFMWhjRHhMTEZZc1V5eEJQaUJoY3lCamIzSmxPanBwZEdWeU9qcDBjbUZwZEhNNk9tTnZiR3hsWTNRNlxcXG5Pa1Y0ZEdWdVpEd29TeXhXS1Q0K09qcGxlSFJsYm1RNk9taGxPVEZpT1RVNE5HVmtNR1l4T1dSa3N3ZzVhR0Z6YUdKeWIzZHVPanB5WVhcXFxuYzZPbEpoZDFSaFlteGxQRlFzUVQ0Nk9uSmxjMlZ5ZG1VNk9taGxaakl3TUdZeE5HVXlNRGMzTkdNMnRBZzlkMkZ6YlY5aWFXNWtaMlZ1XFxcbk9qcGZYM0owT2pwWFlYTnRVbVZtUTJWc2JEeFVQam82WW05eWNtOTNPanBvT0RVME5XVTFZV016TkRnMU56ZzFNTFVJUFhkaGMyMWZZbVxcXG5sdVpHZGxiam82WDE5eWREbzZWMkZ6YlZKbFprTmxiR3c4VkQ0Nk9tSnZjbkp2ZHpvNmFHTmlPREF4TldVNU5EVTJORGxrWm1HMkNESmpcXFxuYjNKbE9qcDBhVzFsT2pwRWRYSmhkR2x2YmpvNlpuSnZiVjl6WldOek9qcG9PVEJsWmpFM09ETTFZVEkxWWpkaFpMY0lOV052Y21VNk9uXFxcbkpsYzNWc2REbzZVbVZ6ZFd4MFBGUXNSVDQ2T20xaGNGOWxjbkk2T21nd05EZzFNbUU1TVRZd1pHUTFNV015dUFoTFBHRnVlV2h2ZHpvNlxcXG5aWEp5YjNJNk9rVnljbTl5U1cxd2JEeEZQaUJoY3lCamIzSmxPanBtYlhRNk9rUnBjM0JzWVhrK09qcG1iWFE2T21neU1XWXhPREE1TWpcXFxuQmhaRGMyTkRrenVRaExQR0Z1ZVdodmR6bzZaWEp5YjNJNk9rVnljbTl5U1cxd2JEeEZQaUJoY3lCamIzSmxPanBtYlhRNk9rUnBjM0JzXFxcbllYaytPanBtYlhRNk9tZzBNREZpTm1JNU1HWmhaV1V4T0dJMHVnaExQR0Z1ZVdodmR6bzZaWEp5YjNJNk9rVnljbTl5U1cxd2JEeEZQaVxcXG5CaGN5QmpiM0psT2pwbWJYUTZPa1JwYzNCc1lYaytPanBtYlhRNk9tZzBPR1poTW1NMlkyUTNPRGsxTW1KaHV3aExQR0Z1ZVdodmR6bzZcXFxuWlhKeWIzSTZPa1Z5Y205eVNXMXdiRHhGUGlCaGN5QmpiM0psT2pwbWJYUTZPa1JwYzNCc1lYaytPanBtYlhRNk9tZzJObUZqTWpObVpUXFxcblZqTVdZNE1qQmp2QWcrYUdGemFHSnliM2R1T2pweVlYYzZPbEpoZDFSaFlteGxQRlFzUVQ0Nk9tWnlaV1ZmWW5WamEyVjBjem82YURneFxcXG5ZV1psTnpsaFlXTXdZekJtWTJTOUNENW9ZWE5vWW5KdmQyNDZPbkpoZHpvNlVtRjNWR0ZpYkdVOFZDeEJQam82Wm5KbFpWOWlkV05yWlhcXFxuUnpPanBvWVRJMU1USXdaRGcxWmpneU16Z3pZcjRJUG1oaGMyaGljbTkzYmpvNmNtRjNPanBTWVhkVVlXSnNaVHhVTEVFK09qcG1jbVZsXFxcblgySjFZMnRsZEhNNk9taGlabUkzTkRZeE9UYzVZakZsTXpjenZ3ZythR0Z6YUdKeWIzZHVPanB5WVhjNk9sSmhkMVJoWW14bFBGUXNRVFxcXG40Nk9tWnlaV1ZmWW5WamEyVjBjem82YURobE5UazJaRGRtWkdNNE9HUTBNRG5BQ0RscGJtUmxlRzFoY0RvNmJXRndPanBKYm1SbGVFMWhcXFxuY0R4TExGWXNVejQ2T21sdWMyVnlkRG82YUdNMllUazNNbU0xTkRoaE9EUm1PRFRCQ0Vkb1lYTm9Zbkp2ZDI0Nk9uSmhkem82YVc1dVpYXFxcbkk2T2xKaGQxUmhZbXhsU1c1dVpYSThRVDQ2T25ObGRGOWpkSEpzWDJneU9qcG9NV000WW1RM00yVmlNemxqWldOaFk4SUlTbk5sY21SbFxcXG5YM2RoYzIxZlltbHVaR2RsYmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2pvNllYTmZiMkpxWldOMFgyVnVkSEpwWlhNNk9taGhPV1kzTTJcXFxuVTJaRFE1WXpkaFpHRmt3d2czYzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BqbzZibVYzT2pwb09ESXhaVFUwXFxcbk9HRXlNV1ZqTWpGbVpjUUlOM05sY21SbFgycHpiMjQ2T21SbE9qcEVaWE5sY21saGJHbDZaWEk4VWo0Nk9tNWxkem82YUdVMlpHWmlNRFxcXG5CaE1qZzFNakJrTW1MRkNIaGpiM0psT2pwcGRHVnlPanB5WVc1blpUbzZQR2x0Y0d3Z1kyOXlaVG82YVhSbGNqbzZkSEpoYVhSek9qcHBcXFxuZEdWeVlYUnZjam82U1hSbGNtRjBiM0lnWm05eUlHTnZjbVU2T205d2N6bzZjbUZ1WjJVNk9sSmhibWRsUEVFK1BqbzZibVY0ZERvNmFEXFxcbkl6TkRFM01HVmlaalE1WWpVMVptWEdDREoxY213Nk9uQmhjbk5sY2pvNlNXNXdkWFE2T25Od2JHbDBYMlpwY25OME9qcG9OMlU1WlRBMVxcXG5NekJpTVRJd056Tmxac2NJWlR4amIzSmxPanB2Y0hNNk9uSmhibWRsT2pwU1lXNW5aVVp5YjIwOGRYTnBlbVUrSUdGeklHTnZjbVU2T25cXFxuTnNhV05sT2pwcGJtUmxlRG82VTJ4cFkyVkpibVJsZUR4YlZGMCtQam82YVc1a1pYZzZPbWc1WlRObU5XTmtObVZtTVRkallUSmp5QWd4XFxcbmFXUnVZVG82Y0hWdWVXTnZaR1U2T25aaGJIVmxYM1J2WDJScFoybDBPanBvTjJObE4yRmtNRE0xT0Roa1lqRTNNY2tJTDNObGNtUmxPalxcXG5wa1pUbzZjMmw2WlY5b2FXNTBPanBvWld4d1pYSTZPbWd5TlRBMU1UY3hOamc1Tm1Rek9HVXh5Z2hoUEdOdmNtVTZPbU5vWVhJNk9sUnZcXFxuVEc5M1pYSmpZWE5sSUdGeklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6bzZhWFJsY21GMGIzSTZPa2wwWlhKaGRHOXlQam82YzJsNlpWXFxcbjlvYVc1ME9qcG9ZelU0Tm1JMU5ERmpNakl3T0RNMlpjc0lMR052Y21VNk9tWnRkRG82Um05eWJXRjBkR1Z5T2pwdVpYYzZPbWc0T1RFMFxcXG5ZbVZtT1dOaU16TXpNalF3ekFnL2FXNWtaWGh0WVhBNk9tMWhjRG82U1c1a1pYaE5ZWEE4U3l4V0xGTStPanBqYjI1MFlXbHVjMTlyWlhcXFxuazZPbWd4TnpWbE5qVmlaams0TnpFd05UTXh6UWhvWTI5eVpUbzZiM0J6T2pwbWRXNWpkR2x2YmpvNmFXMXdiSE02T2p4cGJYQnNJR052XFxcbmNtVTZPbTl3Y3pvNlpuVnVZM1JwYjI0Nk9rWnVUWFYwUEVFK0lHWnZjaUFtYlhWMElFWStPanBqWVd4c1gyMTFkRG82YUdVek0yRXdOelxcXG5JNE1ESTNNVGhqWVdQT0NENXpaWEprWlY5cWMyOXVPanBrWlRvNlJHVnpaWEpwWVd4cGVtVnlQRkkrT2pwd1pXVnJYMlZ5Y205eU9qcG9cXFxuWkdGaE5Ea3hPV0l6TTJNMFlXWTJZYzhJT1hObGNtUmxYMnB6YjI0Nk9tUmxPanBFWlhObGNtbGhiR2w2WlhJOFVqNDZPbVZ5Y205eU9qXFxcbnBvWWpnNE5HUTRaR016TlRJNU1XVmtZdEFJWUR4emRHUTZPbU52Ykd4bFkzUnBiMjV6T2pwb1lYTm9PanB0WVhBNk9sSmhibVJ2YlZOMFxcXG5ZWFJsSUdGeklHTnZjbVU2T21SbFptRjFiSFE2T2tSbFptRjFiSFErT2pwa1pXWmhkV3gwT2pwb01tUmlPR1l5WWpVME1XWTJORGN6T05cXFxuRUlSWE5sY21SbFgzZGhjMjFmWW1sdVpHZGxiam82WkdVNk9rUmxjMlZ5YVdGc2FYcGxjam82YVc1MllXeHBaRjkwZVhCbE9qcG9NRFZqXFxcblpqSTBPVEZqWkdabE9EQTVNZElJUlhObGNtUmxYM2RoYzIxZlltbHVaR2RsYmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2pvNmFXNTJZV1xcXG54cFpGOTBlWEJsT2pwb016ZzVObVkxTVRCak1ERTVOV1ZsTU5NSUwzTmxjbVJsWDNkaGMyMWZZbWx1WkdkbGJqbzZkRzlmZG1Gc2RXVTZcXFxuT21nNU5UWXlNVGxpTVRrM1pUTTJOemRpMUFoZ1BITjBaRG82WTI5c2JHVmpkR2x2Ym5NNk9taGhjMmc2T20xaGNEbzZSR1ZtWVhWc2RFXFxcbmhoYzJobGNpQmhjeUJqYjNKbE9qcG9ZWE5vT2pwSVlYTm9aWEkrT2pwM2NtbDBaVjl6ZEhJNk9tZ3pPV1ZoTVRrNE0yRXdaR1ptTWpKbVxcXG4xUWcyWVd4c2IyTTZPblpsWXpvNlZtVmpQRlFzUVQ0Nk9uSmxjMlZ5ZG1WZlpYaGhZM1E2T21nd00yTTRaRE5qWWpZMU5qRTJNV0kwMWdcXFxuZzJZV3hzYjJNNk9uWmxZem82Vm1WalBGUXNRVDQ2T25KbGMyVnlkbVZmWlhoaFkzUTZPbWcxTkRsbFlqUmxOakl4WmpVeU0yRXoxd2cyXFxcbllXeHNiMk02T25abFl6bzZWbVZqUEZRc1FUNDZPbkpsYzJWeWRtVmZaWGhoWTNRNk9taG1NamxrWm1OaU1qY3hObVV3TjJGaTJBZ3hZV1xcXG54c2IyTTZPbk41Ym1NNk9rRnlZenhVUGpvNlpISnZjRjl6Ykc5M09qcG9OMlkxWmprNFpUSXdNbU5rTVdVeVk5a0lTRHhoYkd4dll6bzZcXFxuYzNsdVl6bzZWMlZoYXp4VVBpQmhjeUJqYjNKbE9qcHZjSE02T21SeWIzQTZPa1J5YjNBK09qcGtjbTl3T2pwb05HVm1ZVEU1WlRrek9XXFxcbk0zTXpsaFp0b0lQbWhoYzJoaWNtOTNiam82YldGd09qcElZWE5vVFdGd1BFc3NWaXhUTEVFK09qcG5aWFJmYVc1dVpYSTZPbWhtTmpBeFxcXG5OVFkwTUdWalpHUXhOVGxtMndoVmFHRnphR0p5YjNkdU9qcHlZWGM2T21sdWJtVnlPanBTWVhkVVlXSnNaVWx1Ym1WeVBFRStPanBtYVdcXFxuNWtYMmx1YzJWeWRGOXpiRzkwWDJsdVgyZHliM1Z3T2pwb01qUTVORE16T0RNMFpEZ3pZV001WTl3SVRqeHpaWEprWlY5M1lYTnRYMkpwXFxcbmJtUm5aVzQ2T21WeWNtOXlPanBGY25KdmNpQmhjeUJqYjNKbE9qcG1iWFE2T2tSbFluVm5Qam82Wm0xME9qcG9ZVFZoTlRabE1XWTFaV1xcXG5NNU4ySTNZdDBJUG5ObGNtUmxYMnB6YjI0Nk9tUmxPanBFWlhObGNtbGhiR2w2WlhJOFVqNDZPbkJsWld0ZlpYSnliM0k2T21nek5qQmpcXFxuTTJKaE1tSTNZelptWldVeDNnaEFjMlZ5WkdWZmFuTnZiam82WkdVNk9rUmxjMlZ5YVdGc2FYcGxjanhTUGpvNmNHVmxhMTl2Y2w5dWRXXFxcbnhzT2pwb1pqSXlZVGhtTmpKallUZzVOek0yT044SU9YTmxjbVJsWDJwemIyNDZPbVJsT2pwRVpYTmxjbWxoYkdsNlpYSThVajQ2T21WeVxcXG5jbTl5T2pwb1pEQmtNelprTlRKak1XTXlOREUxTitBSUtuTmxjbVJsWDJwemIyNDZPbkpsWVdRNk9tVnljbTl5T2pwb1lqSTNaR05sTVRcXFxuaGxPRFJqWXpaak5PRUlNRHdtVkNCaGN5QmpiM0psT2pwbWJYUTZPa1JsWW5WblBqbzZabTEwT2pwb1kyUXpNRGcxWW1Nek5EQTFOVFl5XFxcblkrSUlTRHhoYkd4dll6bzZjM2x1WXpvNlYyVmhhenhVUGlCaGN5QmpiM0psT2pwdmNITTZPbVJ5YjNBNk9rUnliM0ErT2pwa2NtOXdPalxcXG5wb01UUXhZell6TnpRNE5XWXdNamxtTWVNSVBtRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBqbzZZM1Z5Y21WdWRGOXRcXFxuWlcxdmNuazZPbWhsTW1NNU1HWmxOalExTnpCbE1qUTQ1QWd3UENaVUlHRnpJR052Y21VNk9tWnRkRG82UkdWaWRXYytPanBtYlhRNk9tXFxcbmhtWWpBeFltSTJPRFkzWVRBME4yRm01UWcwWTI5eVpUbzZjbVZ6ZFd4ME9qcFNaWE4xYkhROFZDeEZQam82ZFc1M2NtRndPanBvWVRaalxcXG5Namc1WXpJMU1tUTNOR0l6WStZSVh6eGhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWNnWVhNZ1kyOXlaVG82YVhSbGNqbzZkSEpoYVhcXFxuUnpPanBqYjJ4c1pXTjBPanBGZUhSbGJtUThZMmhoY2o0K09qcGxlSFJsYm1RNk9taG1OVGc0WVdOa01EVXpNRGt3TXpoazV3aFBZMjl5XFxcblpUbzZjMnhwWTJVNk9uTnZjblE2T20xbGNtZGxYM052Y25RNk9rSjFaa2QxWVhKa1BGUXNSV3hsYlVSbFlXeHNiMk5HUGpvNmJtVjNPalxcXG5wb1l6Sm1aR00yTWpNMk1USXpZall3WStnSUtHbGtibUU2T21SdmJXRnBibDkwYjE5aGMyTnBhVG82YURBNE1qSTRNbU15WldabU5ETTRcXFxuTkRqcENGZGpiM0psT2pwemJHbGpaVG82YVc1a1pYZzZPanhwYlhCc0lHTnZjbVU2T205d2N6bzZhVzVrWlhnNk9rbHVaR1Y0UEVrK0lHXFxcblp2Y2lCYlZGMCtPanBwYm1SbGVEbzZhRGMxTm1Ka09XVXhZamMzWm1RNU9XUHFDRTA4YzNSa09qcDBhSEpsWVdRNk9teHZZMkZzT2pwQlxcXG5ZMk5sYzNORmNuSnZjaUJoY3lCamIzSmxPanBtYlhRNk9rUmxZblZuUGpvNlptMTBPanBvT1RjM05UUm1OVFJtT1RsbE1HVTVOT3NJTURcXFxud21WQ0JoY3lCamIzSmxPanBtYlhRNk9rUmxZblZuUGpvNlptMTBPanBvWWpKbE5qRTBaV1kzWkRVM01UVXpNZXdJTkdOdmNtVTZPbVp0XFxcbmREbzZSbTl5YldGMGRHVnlPanBrWldKMVoxOTBkWEJzWlRvNmFHVTFOREJoWldJMk0yVTNNVFk0TURYdENHVThZMjl5WlRvNmIzQnpPalxcXG5weVlXNW5aVG82VW1GdVoyVkdjbTl0UEhWemFYcGxQaUJoY3lCamIzSmxPanB6YkdsalpUbzZhVzVrWlhnNk9sTnNhV05sU1c1a1pYZzhcXFxuVzFSZFBqNDZPbWx1WkdWNE9qcG9aakF3WVRWbE9HTmpPRFUxTldGaVkrNElTR052Y21VNk9tOXdjem82Wm5WdVkzUnBiMjQ2T2tadVQyXFxcbjVqWlRvNlkyRnNiRjl2Ym1ObGUzdDJkR0ZpYkdVdWMyaHBiWDE5T2pwb01tWXhaamN5TUdZMVltUXdabU5sTis4SVNHTnZjbVU2T205d1xcXG5jem82Wm5WdVkzUnBiMjQ2T2tadVQyNWpaVG82WTJGc2JGOXZibU5sZTN0MmRHRmliR1V1YzJocGJYMTlPanBvTTJKbU5qWXhOR0V5TWpcXFxuSTRZalJqTXZBSVNHTnZjbVU2T205d2N6bzZablZ1WTNScGIyNDZPa1p1VDI1alpUbzZZMkZzYkY5dmJtTmxlM3QyZEdGaWJHVXVjMmhwXFxcbmJYMTlPanBvT0dKa05XVmxZelkyTnpZd05URmpaUEVJU0dOdmNtVTZPbTl3Y3pvNlpuVnVZM1JwYjI0Nk9rWnVUMjVqWlRvNlkyRnNiRlxcXG45dmJtTmxlM3QyZEdGaWJHVXVjMmhwYlgxOU9qcG9aVEV5T1RWaFpqUTJOemxrWVdGa01mSUlRR0ZzYkc5ak9qcHlZWGRmZG1Wak9qcFNcXFxuWVhkV1pXTThWQ3hCUGpvNmNtVnpaWEoyWlY5bWIzSmZjSFZ6YURvNmFEWTBPRFEwTlRKaVpHTXlZelppTUdQekNFNWhiR3h2WXpvNmNtXFxcbkYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDQ2T25KbGMyVnlkbVU2T21SdlgzSmxjMlZ5ZG1WZllXNWtYMmhoYm1Sc1pUbzZhRGhpTmpKbVxcXG5NRFZrTVRabVlXRTROR1gwQ0VCaGJHeHZZem82Y21GM1gzWmxZem82VW1GM1ZtVmpQRlFzUVQ0Nk9uSmxjMlZ5ZG1WZlptOXlYM0IxYzJcXFxuZzZPbWcxWldZd01tRTJZV1V5T0dZeVlXTXo5UWhBWVd4c2IyTTZPbkpoZDE5MlpXTTZPbEpoZDFabFl6eFVMRUUrT2pweVpYTmxjblpsXFxcblgyWnZjbDl3ZFhOb09qcG9aR1JoTkRWaVpHTmxOelV5TVRaa1pmWUlRR0ZzYkc5ak9qcHlZWGRmZG1Wak9qcFNZWGRXWldNOFZDeEJQalxcXG5vNmNtVnpaWEoyWlY5bWIzSmZjSFZ6YURvNmFHVmtNbU5tWVRrNU4ySXhOMlJsTUdiM0NIdzhZV3hzYjJNNk9uWmxZem82Vm1WalBGUXNcXFxuUVQ0Z1lYTWdZV3hzYjJNNk9uWmxZem82YzNCbFkxOWxlSFJsYm1RNk9sTndaV05GZUhSbGJtUThKbFFzWTI5eVpUbzZjMnhwWTJVNk9tXFxcbmwwWlhJNk9rbDBaWEk4VkQ0K1BqbzZjM0JsWTE5bGVIUmxibVE2T21oa05UUm1NVEJpT0daaE56QXdaR05tK0FoQVlXeHNiMk02T25KaFxcXG5kMTkyWldNNk9sSmhkMVpsWXp4VUxFRStPanB5WlhObGNuWmxYMlp2Y2w5d2RYTm9PanBvTXpjd09UbGxNVFpsTmpRNE9UVTRNL2tJVG1cXFxuRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBqbzZjbVZ6WlhKMlpUbzZaRzlmY21WelpYSjJaVjloYm1SZmFHRnVaR3hsXFxcbk9qcG9ZV0ZqTW1VM09USXdNV0ZoWTJOaE9mb0lmRHhoYkd4dll6bzZkbVZqT2pwV1pXTThWQ3hCUGlCaGN5QmhiR3h2WXpvNmRtVmpPalxcXG5wemNHVmpYMlY0ZEdWdVpEbzZVM0JsWTBWNGRHVnVaRHdtVkN4amIzSmxPanB6YkdsalpUbzZhWFJsY2pvNlNYUmxjanhVUGo0K09qcHpcXFxuY0dWalgyVjRkR1Z1WkRvNmFHVmtaRE5pTXpGbVpqUTFOek00TURMN0NFQmhiR3h2WXpvNmNtRjNYM1psWXpvNlVtRjNWbVZqUEZRc1FUXFxcbjQ2T25KbGMyVnlkbVZmWm05eVgzQjFjMmc2T21nMFpqUmlZV1l3Tmpoa1ltTTNOamhrL0FoT1lXeHNiMk02T25KaGQxOTJaV002T2xKaFxcXG5kMVpsWXp4VUxFRStPanB5WlhObGNuWmxPanBrYjE5eVpYTmxjblpsWDJGdVpGOW9ZVzVrYkdVNk9tZ3lOMlV3WWpkak1XVmtNemd3TVdcXFxuWXovUWd6YzJWeVpHVmZhbk52YmpvNlpYSnliM0k2T2tWeWNtOXlPanB6ZVc1MFlYZzZPbWd6T1RRNE56a3pORFZsWXprMk5HSmovZ2hBXFxcbllXeHNiMk02T25KaGQxOTJaV002T2xKaGQxWmxZenhVTEVFK09qcHlaWE5sY25abFgyWnZjbDl3ZFhOb09qcG9PREJrWWpNeE5EWmxNV1xcXG5SbE5HVTNZLzhJUW1OdmNtVTZPbWwwWlhJNk9uUnlZV2wwY3pvNmFYUmxjbUYwYjNJNk9rbDBaWEpoZEc5eU9qcGpiMnhzWldOME9qcG9cXFxuTXpKak9XTXlObUl5TkdFNFpEY3haWUFKZkR4aGJHeHZZem82ZG1Wak9qcFdaV004VkN4QlBpQmhjeUJoYkd4dll6bzZkbVZqT2pwemNHXFxcblZqWDJWNGRHVnVaRG82VTNCbFkwVjRkR1Z1WkR3bVZDeGpiM0psT2pwemJHbGpaVG82YVhSbGNqbzZTWFJsY2p4VVBqNCtPanB6Y0dWalxcXG5YMlY0ZEdWdVpEbzZhRE16WVRkbU9HWTJZbUpoTm1aaU5tV0JDVTVoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDQ2T25cXFxuSmxjMlZ5ZG1VNk9tUnZYM0psYzJWeWRtVmZZVzVrWDJoaGJtUnNaVG82YUdWbU1qUXlZbVUxTVdSbE9ERm1aak9DQ1VCaGJHeHZZem82XFxcbmNtRjNYM1psWXpvNlVtRjNWbVZqUEZRc1FUNDZPbkpsYzJWeWRtVmZabTl5WDNCMWMyZzZPbWhrTnpRNVlUaGxNemhrTkRjd01UWTJnd1xcXG5sQVlXeHNiMk02T25KaGQxOTJaV002T2xKaGQxWmxZenhVTEVFK09qcHlaWE5sY25abFgyWnZjbDl3ZFhOb09qcG9aVE5pT1dGaU5HRmpcXFxuWldObE1HUTVPSVFKSzJSaGRHRmZkWEpzT2pwd1pYSmpaVzUwWDJWdVkyOWtaVG82YUdWbE0yWmxZV0l6TlRsaFpHUTBPREdGQ1dVOFkyXFxcbjl5WlRvNmIzQnpPanB5WVc1blpUbzZVbUZ1WjJWR2NtOXRQSFZ6YVhwbFBpQmhjeUJqYjNKbE9qcHpiR2xqWlRvNmFXNWtaWGc2T2xOc1xcXG5hV05sU1c1a1pYZzhXMVJkUGo0Nk9tbHVaR1Y0T2pwb05Ua3daR0pqTWpJME5XRXpOalEwT1lZSmZEeGhiR3h2WXpvNmRtVmpPanBXWldcXFxuTThWQ3hCUGlCaGN5QmhiR3h2WXpvNmRtVmpPanB6Y0dWalgyVjRkR1Z1WkRvNlUzQmxZMFY0ZEdWdVpEd21WQ3hqYjNKbE9qcHpiR2xqXFxcblpUbzZhWFJsY2pvNlNYUmxjanhVUGo0K09qcHpjR1ZqWDJWNGRHVnVaRG82YURkbE0yWTRORGN3TUdKallqbGhZV1dIQ1VCaGJHeHZZelxcXG5vNmNtRjNYM1psWXpvNlVtRjNWbVZqUEZRc1FUNDZPbkpsYzJWeWRtVmZabTl5WDNCMWMyZzZPbWcwWTJZMlpXRTBaamd5WlRJNE4yVm1cXFxuaUFsT1lXeHNiMk02T25KaGQxOTJaV002T2xKaGQxWmxZenhVTEVFK09qcHlaWE5sY25abE9qcGtiMTl5WlhObGNuWmxYMkZ1WkY5b1lXXFxcbjVrYkdVNk9tZzRPR0kwTUdNMk1ETTNPRFUxWlRBemlRbE9ZV3hzYjJNNk9uSmhkMTkyWldNNk9sSmhkMVpsWXp4VUxFRStPanB5WlhObFxcXG5jblpsT2pwa2IxOXlaWE5sY25abFgyRnVaRjlvWVc1a2JHVTZPbWczT0ROa01UazVOelV3TkdOaFlqSTRpZ2xBWVd4c2IyTTZPbkpoZDFcXFxuOTJaV002T2xKaGQxWmxZenhVTEVFK09qcHlaWE5sY25abFgyWnZjbDl3ZFhOb09qcG9PR1JsTmpsbU9UVmhPVFExTlRObVpJc0pTRHhqXFxcbmIzSmxPanB2Y0hScGIyNDZPazl3ZEdsdmJqeFVQaUJoY3lCamIzSmxPanBqYlhBNk9sQmhjblJwWVd4RmNUNDZPbVZ4T2pwb05XVXdOV1xcXG5GbFpERTFNbU16WkRBNU5vd0pMM1Z5YkRvNmNHRnljMlZ5T2pwSmJuQjFkRG82YVhOZlpXMXdkSGs2T21oaU1qRmpaak0xTUdaaFkyUTFcXFxuTjJFempRa3lkWEpzT2pwd1lYSnpaWEk2T2tsdWNIVjBPanB6ZEdGeWRITmZkMmwwYURvNmFEZG1aakpqTm1ObVlUTmxORFl5WW1HT0NVXFxcbkJoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDQ2T25KbGMyVnlkbVZmWm05eVgzQjFjMmc2T21neU5qVTBORGcyWXpNMFxcXG5NekUwT1dKaWp3bEFZV3hzYjJNNk9uSmhkMTkyWldNNk9sSmhkMVpsWXp4VUxFRStPanB5WlhObGNuWmxYMlp2Y2w5d2RYTm9PanBvTW1cXFxuVmpZVGs0TVRJeE1UUTJZak01TVpBSlRtRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBqbzZjbVZ6WlhKMlpUbzZaRzlmXFxcbmNtVnpaWEoyWlY5aGJtUmZhR0Z1Wkd4bE9qcG9NelUzTkRsa1ltVTNaakE1WXprMFk1RUpUbUZzYkc5ak9qcHlZWGRmZG1Wak9qcFNZWFxcXG5kV1pXTThWQ3hCUGpvNmNtVnpaWEoyWlRvNlpHOWZjbVZ6WlhKMlpWOWhibVJmYUdGdVpHeGxPanBvT1RNNU0yUTJZVE13Tmpaa1pUZG1cXFxuTVpJSmhnRnBaRzVoT2pwMWRITTBOam82UEdsdGNHd2dZMjl5WlRvNlkyOXVkbVZ5ZERvNlJuSnZiVHhwWkc1aE9qcDFkSE0wTmpvNlJYXFxcbkp5YjNKelBpQm1iM0lnWTI5eVpUbzZjbVZ6ZFd4ME9qcFNaWE4xYkhROEtDa3NhV1J1WVRvNmRYUnpORFk2T2tWeWNtOXljejQrT2pwbVxcXG5jbTl0T2pwb05ETmpZVEUzTkdWaU9EWTRPV0ZrWXBNSmZEeGhiR3h2WXpvNmRtVmpPanBXWldNOFZDeEJQaUJoY3lCaGJHeHZZem82ZG1cXFxuVmpPanB6Y0dWalgyVjRkR1Z1WkRvNlUzQmxZMFY0ZEdWdVpEd21WQ3hqYjNKbE9qcHpiR2xqWlRvNmFYUmxjam82U1hSbGNqeFVQajQrXFxcbk9qcHpjR1ZqWDJWNGRHVnVaRG82YURSak56SmlOMlZtWTJFMk1tUTJZV09VQ1U1aGJHeHZZem82Y21GM1gzWmxZem82VW1GM1ZtVmpQRlxcXG5Rc1FUNDZPbkpsYzJWeWRtVTZPbVJ2WDNKbGMyVnlkbVZmWVc1a1gyaGhibVJzWlRvNmFETXdZakEzWldSaFpHUmpZVGd3WVdLVkNVQmhcXFxuYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDQ2T25KbGMyVnlkbVZmWm05eVgzQjFjMmc2T21nNFptSmpPR0U0TVRrNVpHXFxcblJqWkRZM2xnbDhQR0ZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrSUdGeklHRnNiRzlqT2pwMlpXTTZPbk53WldOZlpYaDBaVzVrT2pwVFxcXG5jR1ZqUlhoMFpXNWtQQ1pVTEdOdmNtVTZPbk5zYVdObE9qcHBkR1Z5T2pwSmRHVnlQRlErUGo0Nk9uTndaV05mWlhoMFpXNWtPanBvTVdcXFxuRTRaV1ZoWVdKbE5ESTFaRE0wT1pjSlRtRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBqbzZjbVZ6WlhKMlpUbzZaRzlmXFxcbmNtVnpaWEoyWlY5aGJtUmZhR0Z1Wkd4bE9qcG9NakptTXpZeU56WmtOVFl3WmpBNVpwZ0pRR0ZzYkc5ak9qcHlZWGRmZG1Wak9qcFNZWFxcXG5kV1pXTThWQ3hCUGpvNmNtVnpaWEoyWlY5bWIzSmZjSFZ6YURvNmFERXdOR0kwWlRFMFlqRXhNRGczTW1HWkNTcHpaWEprWlY5cWMyOXVcXFxuT2pwelpYSTZPbWx1WkdWdWREbzZhR0ZpT0dRek5qbGxNRGhsWmpVNU4yT2FDU0oxY213Nk9sVnliRG82Y0dGeWMyVTZPbWhtTnpBMU9XXFxcblk0WWpRek5tWm1NekkxbXdrdGMzUmtPanBwYnpvNlpYSnliM0k2T2tWeWNtOXlPanB1WlhjNk9taGxOelk1WlRreE1tSTRORGc1TW1RNVxcXG5uQWxJWTI5eVpUbzZiM0J6T2pwbWRXNWpkR2x2YmpvNlJtNVBibU5sT2pwallXeHNYMjl1WTJWN2UzWjBZV0pzWlM1emFHbHRmWDA2T21cXFxuZzJNV1UwWmpaak1UTmlNVGt4WmpRM25RbElZMjl5WlRvNmIzQnpPanBtZFc1amRHbHZiam82Um01UGJtTmxPanBqWVd4c1gyOXVZMlY3XFxcbmUzWjBZV0pzWlM1emFHbHRmWDA2T21nM01UUXlaVE5oTkdNME1qTTFZamhsbmdsSVkyOXlaVG82YjNCek9qcG1kVzVqZEdsdmJqbzZSbVxcXG41UGJtTmxPanBqWVd4c1gyOXVZMlY3ZTNaMFlXSnNaUzV6YUdsdGZYMDZPbWc0WkRJNVpUQXhaR1k1Tmpsa056SXhud2xJWTI5eVpUbzZcXFxuYjNCek9qcG1kVzVqZEdsdmJqbzZSbTVQYm1ObE9qcGpZV3hzWDI5dVkyVjdlM1owWVdKc1pTNXphR2x0ZlgwNk9taGhNekF3WkRZNFlqXFxcbkpqTm1VM1ltTTJvQWxJWTI5eVpUbzZiM0J6T2pwbWRXNWpkR2x2YmpvNlJtNVBibU5sT2pwallXeHNYMjl1WTJWN2UzWjBZV0pzWlM1elxcXG5hR2x0ZlgwNk9taGpOamM0TkRCaE5qRmhPR1V5Tm1NNW9RbElZMjl5WlRvNmIzQnpPanBtZFc1amRHbHZiam82Um01UGJtTmxPanBqWVdcXFxueHNYMjl1WTJWN2UzWjBZV0pzWlM1emFHbHRmWDA2T21oalpEQXdaV0V5WTJJM09UWmtOemczb2dsSVkyOXlaVG82YjNCek9qcG1kVzVqXFxcbmRHbHZiam82Um01UGJtTmxPanBqWVd4c1gyOXVZMlY3ZTNaMFlXSnNaUzV6YUdsdGZYMDZPbWhsWXpRNU16SXpaREJoWXpoaE4yUTRvd1xcXG5sSVkyOXlaVG82YjNCek9qcG1kVzVqZEdsdmJqbzZSbTVQYm1ObE9qcGpZV3hzWDI5dVkyVjdlM1owWVdKc1pTNXphR2x0ZlgwNk9taG1cXFxuTkROa09HUTNOVE14TldGbE1tRXdwQWxsUEhObGNtUmxYMnB6YjI0Nk9uTmxjam82VUhKbGRIUjVSbTl5YldGMGRHVnlJR0Z6SUhObGNtXFxcblJsWDJwemIyNDZPbk5sY2pvNlJtOXliV0YwZEdWeVBqbzZZbVZuYVc1ZmIySnFaV04wWDJ0bGVUbzZhR0ZsTXprMk0yUTRNbUl3WkdJNVxcXG5OVGVsQ1VOcGJtUmxlRzFoY0RvNmJXRndPanBKYm1SbGVFMWhjRHhMTEZZc1V6NDZPbk4zWVhCZmNtVnRiM1psWDJaMWJHdzZPbWhpTWpcXFxuTXhZMll3Tnpsa1l6RmpaalZocGdsTGFHRnphR0p5YjNkdU9qcHlZWGM2T21sdWJtVnlPanBTWVhkVVlXSnNaVWx1Ym1WeVBFRStPanBtXFxcbmFYaGZhVzV6WlhKMFgzTnNiM1E2T21neE5EazNaakJsWVRaa01EUmlNelUwcHdrOWNHRnlhMmx1WjE5c2IzUmZZMjl5WlRvNmMzQnBiblxcXG5kaGFYUTZPbE53YVc1WFlXbDBPanB6Y0dsdU9qcG9OV1JrTURjeFl6azFORFEzTkRnME42Z0pQbUZzYkc5ak9qcHlZWGRmZG1Wak9qcFNcXFxuWVhkV1pXTThWQ3hCUGpvNlkzVnljbVZ1ZEY5dFpXMXZjbms2T21nM09HRTRPRGM1WkRjek4yRXlOREF4cVFrK1lXeHNiMk02T25KaGQxXFxcbjkyWldNNk9sSmhkMVpsWXp4VUxFRStPanBqZFhKeVpXNTBYMjFsYlc5eWVUbzZhRE01TlRZMU56WXpaamt3WVdFeU9UT3FDVVJ3WlhKalxcXG5aVzUwWDJWdVkyOWthVzVuT2pwQmMyTnBhVk5sZERvNmMyaHZkV3hrWDNCbGNtTmxiblJmWlc1amIyUmxPanBvTW1WbU56SXhNRE0wTldcXFxuTmlOMlptWnFzSlRqeGpiM0psT2pwdWRXMDZPbTV2Ym5wbGNtODZPazV2YmxwbGNtOVZjMmw2WlNCaGN5QmpiM0psT2pwbWJYUTZPa1JsXFxcblluVm5Qam82Wm0xME9qcG9ZVFUyT1dGalpqZGpZVFJsWVRVNU5hd0pPV052Y21VNk9tWnRkRG82WW5WcGJHUmxjbk02T2tSbFluVm5UR1xcXG5semREbzZabWx1YVhOb09qcG9aR1UxTnpoaVlqZ3dObVV3TXpkaVlhMEpOV052Y21VNk9tWnRkRG82Um05eWJXRjBkR1Z5T2pwa1pXSjFcXFxuWjE5emRISjFZM1E2T21neE5XUmtORFZpTm1GaFl6ZGtZbUU1cmdrelkyOXlaVG82Wm0xME9qcEdiM0p0WVhSMFpYSTZPbVJsWW5WblgyXFxcbnhwYzNRNk9taG1OV1ppTkRoaU9UVmhNRGRrWVRjMHJ3bEZZMjl5WlRvNmNIUnlPanBrY205d1gybHVYM0JzWVdObFBITmxjbVJsWDJwelxcXG5iMjQ2T21WeWNtOXlPanBGY25KdmNqNDZPbWd5WmpneU1ERXdOalV5TjJOaE1HVTBzQW1XQVR4amIzSmxPanB5WlhOMWJIUTZPbEpsYzNcXFxuVnNkRHhVTEVZK0lHRnpJR052Y21VNk9tOXdjem82ZEhKNVgzUnlZV2wwT2pwR2NtOXRVbVZ6YVdSMVlXdzhZMjl5WlRvNmNtVnpkV3gwXFxcbk9qcFNaWE4xYkhROFkyOXlaVG82WTI5dWRtVnlkRG82U1c1bVlXeHNhV0pzWlN4RlBqNCtPanBtY205dFgzSmxjMmxrZFdGc09qcG9abVxcXG5SaFptUmxOVFV6Wm1FNE0yVmtZckVKUVdGdWVXaHZkem82WlhKeWIzSTZPanhwYlhCc0lHRnVlV2h2ZHpvNlJYSnliM0krT2pwamIyNXpcXFxuZEhKMVkzUTZPbWcyTjJNelpUUTVaV1F5Tm1aaVl6SXpzZ2x5UEdSbGJtOWZZMkZqYUdWZlpHbHlPanAzWVhOdE9qcEhiRzlpWVd4SWRIXFxcblJ3UTJGamFHVWdZWE1nZDJGemJWOWlhVzVrWjJWdU9qcGpiMjUyWlhKME9qcDBjbUZwZEhNNk9rbHVkRzlYWVhOdFFXSnBQam82YVc1MFxcXG5iMTloWW1rNk9tZ3paamcyTjJJellUTTJOakl6TURBeXN3bEpZMjl5WlRvNmNIUnlPanBrY205d1gybHVYM0JzWVdObFBITmxjbVJsWDJcXFxucHpiMjQ2T21WeWNtOXlPanBGY25KdmNrTnZaR1UrT2pwb1pHRTJNV0l6TldZNU0yRTNOR0ZtTWJRSkozTnRZV3hzZG1Wak9qcHBibVpoXFxcbmJHeHBZbXhsT2pwb05HVTJPV0l6WmpGaE9ERTFPRFU0TXJVSk8zTjBaRG82Y0dGdWFXTnJhVzVuT2pwaVpXZHBibDl3WVc1cFl6bzZlM1xcXG50amJHOXpkWEpsZlgwNk9taGhPR0l5TldOa09UTXdNalF4TVdFMHRna3pZV3hzYjJNNk9tRnNiRzlqT2pwSGJHOWlZV3c2T21Gc2JHOWpcXFxuWDJsdGNHdzZPbWd3Wm1JMVlqWmtZV1EyT1RZd09EWTN0d2s3YzNSa09qcHdZVzVwWTJ0cGJtYzZPbUpsWjJsdVgzQmhibWxqT2pwN2UyXFxcbk5zYjNOMWNtVjlmVG82YUdObE16YzFOR05qWXpJMFkyRm1PVEM0Q1RaamIzSmxPanB6ZEhJNk9qeHBiWEJzSUhOMGNqNDZPbk4wY21sd1xcXG5YM0J5WldacGVEbzZhR0kwTldRMk16WmhZak0zWXpjellUZTVDVHR6ZEdRNk9uQmhibWxqYTJsdVp6bzZZbVZuYVc1ZmNHRnVhV002T25cXFxudDdZMnh2YzNWeVpYMTlPanBvTUdSaE1qSmlaVEV6TlRaak5qRTRON29KUjJOdmNtVTZPbVp0ZERvNmJuVnRPam84YVcxd2JDQmpiM0psXFxcbk9qcG1iWFE2T2tSbFluVm5JR1p2Y2lCcE16SStPanBtYlhRNk9tZzVORFprWmpZeU5ERTFOamMwTkRrMXV3azNaR3h0WVd4c2IyTTZPbVxcXG5Sc2JXRnNiRzlqT2pwRGFIVnVhem82YzJWMFgybHVkWE5sT2pwb1pHTTNNVFpsT0RReU5qSTFNR1psTWJ3SlFYZGhjMjFmWW1sdVpHZGxcXFxuYmpvNlgxOXlkRG82VjJGemJWSmxaa05sYkd3OFZENDZPbUp2Y25KdmQxOXRkWFE2T21oaE5UWTJPRGRrWXpsaFpXRTRORGt3dlFsQmQyXFxcbkZ6YlY5aWFXNWtaMlZ1T2pwZlgzSjBPanBYWVhOdFVtVm1RMlZzYkR4VVBqbzZZbTl5Y205M1gyMTFkRG82YUdObU1EazFPV1UyTkRreVxcXG5NR1E0WlRTK0NZa0JQRHhoYkd4dll6bzZkbVZqT2pwcGJuUnZYMmwwWlhJNk9rbHVkRzlKZEdWeVBGUXNRVDRnWVhNZ1kyOXlaVG82YjNcXFxuQnpPanBrY205d09qcEVjbTl3UGpvNlpISnZjRG82UkhKdmNFZDFZWEprUEZRc1FUNGdZWE1nWTI5eVpUbzZiM0J6T2pwa2NtOXdPanBFXFxcbmNtOXdQam82WkhKdmNEbzZhR1U1Tm1NNVl6QXhPRFpoWWpBNU5EaS9DVU5vWVhOb1luSnZkMjQ2T25KaGR6bzZVbUYzVkdGaWJHVThWQ1xcXG54QlBqbzZabWx1WkRvNmUzdGpiRzl6ZFhKbGZYMDZPbWhpTVRZMFlqWTFOVEV3WWpnd1pXSXh3QW1xQVdOdmNtVTZPbkIwY2pvNlpISnZcXFxuY0Y5cGJsOXdiR0ZqWlR4c2IyTnJYMkZ3YVRvNmNuZHNiMk5yT2pwU2QweHZZMnRTWldGa1IzVmhjbVE4Y0dGeWEybHVaMTlzYjNRNk9uXFxcbkpoZDE5eWQyeHZZMnM2T2xKaGQxSjNURzlqYXl4a1pXNXZYMk5oWTJobFgyUnBjam82Ykc5allXdzZPbTFoYm1sbVpYTjBPanBNYjJOaFxcXG5iRU5oWTJobFRXRnVhV1psYzNSRVlYUmhQajQ2T21nMU9EYzJaREJtWlRNM09XTmhPREl5d1FrMVkyOXlaVG82Y21WemRXeDBPanBTWlhcXFxuTjFiSFE4VkN4RlBqbzZiV0Z3WDJWeWNqbzZhRGd3Wm1VMFpEUm1Zemt5TnprNU1HSENDVnc4YzJWeVpHVmZkMkZ6YlY5aWFXNWtaMlZ1XFxcbk9qcHpaWEk2T2sxaGNGTmxjbWxoYkdsNlpYSWdZWE1nYzJWeVpHVTZPbk5sY2pvNlUyVnlhV0ZzYVhwbFRXRndQam82Wlc1a09qcG9NR1xcXG5aa05EWTRPRFJrWkdJMllXUm1PTU1KSG14dlp6bzZiRzluWjJWeU9qcG9ZekF6WTJJNU1qazFaak00WkRsaFpzUUpRSEJoY210cGJtZGZcXFxuYkc5MFgyTnZjbVU2T25kdmNtUmZiRzlqYXpvNlYyOXlaRXh2WTJzNk9uVnViRzlqYXpvNmFETXpPR1E1TkdJeFltWmlNV0UwWm1MRkNVXFxcbkJ3WVhKcmFXNW5YMnh2ZEY5amIzSmxPanAzYjNKa1gyeHZZMnM2T2xkdmNtUk1iMk5yT2pwMWJteHZZMnM2T21nek16aGtPVFJpTVdKbVxcXG5ZakZoTkdaaXhnbERhR0Z6YUdKeWIzZHVPanB5WVhjNk9sSmhkMVJoWW14bFBGUXNRVDQ2T21acGJtUTZPbnQ3WTJ4dmMzVnlaWDE5T2pcXFxucG9PVEkzTldJeE9UVmxPREkyTm1RNVpNY0pPbmRoYzIxZlltbHVaR2RsYmpvNlgxOXlkRG82ZEdGclpWOXNZWE4wWDJWNFkyVndkR2x2XFxcbmJqbzZhREEyWW1VMFpHSTJOamMwTWpneU9EaklDVmM4ZFhKc09qcHdZWEp6WlhJNk9rbHVjSFYwSUdGeklHTnZjbVU2T21sMFpYSTZPblxcXG5SeVlXbDBjem82YVhSbGNtRjBiM0k2T2tsMFpYSmhkRzl5UGpvNmJtVjRkRG82YURjMFptUTBZemN4WmpRek1EUmpaR0xKQ1lrQlBEeGhcXFxuYkd4dll6bzZkbVZqT2pwcGJuUnZYMmwwWlhJNk9rbHVkRzlKZEdWeVBGUXNRVDRnWVhNZ1kyOXlaVG82YjNCek9qcGtjbTl3T2pwRWNtXFxcbjl3UGpvNlpISnZjRG82UkhKdmNFZDFZWEprUEZRc1FUNGdZWE1nWTI5eVpUbzZiM0J6T2pwa2NtOXdPanBFY205d1BqbzZaSEp2Y0RvNlxcXG5hREZqWXpBeU0yWTJaVFl3WXpZNE1UbktDVDg4WTJoaGNpQmhjeUIxY213Nk9uQmhjbk5sY2pvNlVHRjBkR1Z5Ymo0Nk9uTndiR2wwWDNcXFxuQnlaV1pwZURvNmFHSXdaREpoWVdaak1UUTJORGN5WVRmTENUVmpiM0psT2pwemJHbGpaVG82UEdsdGNHd2dXMVJkUGpvNlpXNWtjMTkzXFxcbmFYUm9PanBvTVRoaU56Z3hZV1ppTUdFM01HSTBOc3dKaVFFOFBHRnNiRzlqT2pwMlpXTTZPbWx1ZEc5ZmFYUmxjam82U1c1MGIwbDBaWFxcXG5JOFZDeEJQaUJoY3lCamIzSmxPanB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d09qcEVjbTl3UjNWaGNtUThWQ3hCUGlCaGN5QmpcXFxuYjNKbE9qcHZjSE02T21SeWIzQTZPa1J5YjNBK09qcGtjbTl3T2pwb1pqUTRNek01TXpaaE9UUTFabU16T2MwSlFXRnVlV2h2ZHpvNlpYXFxcbkp5YjNJNk9qeHBiWEJzSUdGdWVXaHZkem82UlhKeWIzSStPanBqYjI1emRISjFZM1E2T21nMlpHVTBNR1ZqWWpkaE16VXpOelkyemdsNVxcXG5jMlZ5WkdVNk9tUmxPanBwYlhCc2N6bzZQR2x0Y0d3Z2MyVnlaR1U2T21SbE9qcEVaWE5sY21saGJHbDZaU0JtYjNJZ2MzUmtPanAwYVdcXFxuMWxPanBUZVhOMFpXMVVhVzFsUGpvNlpHVnpaWEpwWVd4cGVtVTZPbU5vWldOclgyOTJaWEptYkc5M09qcG9aVFZtWTJZNVpUZzVaalJrXFxcbllqZG1NODhKV2p4elpYSmtaVjlxYzI5dU9qcGtaVG82VFdGd1FXTmpaWE56UEZJK0lHRnpJSE5sY21SbE9qcGtaVG82VFdGd1FXTmpaWFxcXG5OelBqbzZibVY0ZEY5MllXeDFaVjl6WldWa09qcG9OMk14WTJabE56SmlabVUyTkRSaE9OQUpXanh6WlhKa1pWOXFjMjl1T2pwa1pUbzZcXFxuVFdGd1FXTmpaWE56UEZJK0lHRnpJSE5sY21SbE9qcGtaVG82VFdGd1FXTmpaWE56UGpvNmJtVjRkRjkyWVd4MVpWOXpaV1ZrT2pwb09EXFxcbkEyTXprNU5HTXpaakExT1Rjd1pkRUpObU52Y21VNk9uTjBjam82UEdsdGNHd2djM1J5UGpvNmMzUnlhWEJmYzNWbVptbDRPanBvTW1abFxcXG5PRFl5WVdReE1UZzRNREJtTWRJSldqeHpaWEprWlY5cWMyOXVPanBrWlRvNlRXRndRV05qWlhOelBGSStJR0Z6SUhObGNtUmxPanBrWlRcXFxubzZUV0Z3UVdOalpYTnpQam82Ym1WNGRGOTJZV3gxWlY5elpXVmtPanBvTVdNeE16VXpaVFkzTkdabFpqRTROOU1KV2p4elpYSmtaVjlxXFxcbmMyOXVPanBrWlRvNlRXRndRV05qWlhOelBGSStJR0Z6SUhObGNtUmxPanBrWlRvNlRXRndRV05qWlhOelBqbzZibVY0ZEY5MllXeDFaVlxcXG45elpXVmtPanBvTkRVM09HSXhZMlExTjJFMU9HTmpadFFKV2p4elpYSmtaVjlxYzI5dU9qcGtaVG82VFdGd1FXTmpaWE56UEZJK0lHRnpcXFxuSUhObGNtUmxPanBrWlRvNlRXRndRV05qWlhOelBqbzZibVY0ZEY5MllXeDFaVjl6WldWa09qcG9Oak0wTm1NMlpUWXhOREE1TnpSbU50XFxcblVKV2p4elpYSmtaVjlxYzI5dU9qcGtaVG82VFdGd1FXTmpaWE56UEZJK0lHRnpJSE5sY21SbE9qcGtaVG82VFdGd1FXTmpaWE56UGpvNlxcXG5ibVY0ZEY5MllXeDFaVjl6WldWa09qcG9ZakZtT1daalkyVTFaVFpsWldVME45WUpXanh6WlhKa1pWOXFjMjl1T2pwa1pUbzZUV0Z3UVdcXFxuTmpaWE56UEZJK0lHRnpJSE5sY21SbE9qcGtaVG82VFdGd1FXTmpaWE56UGpvNmJtVjRkRjkyWVd4MVpWOXpaV1ZrT2pwb1lqWmtNbVptXFxcbllUY3paV0l6WW1NMk50Y0pXanh6WlhKa1pWOXFjMjl1T2pwa1pUbzZUV0Z3UVdOalpYTnpQRkkrSUdGeklITmxjbVJsT2pwa1pUbzZUV1xcXG5Gd1FXTmpaWE56UGpvNmJtVjRkRjkyWVd4MVpWOXpaV1ZrT2pwb1l6RTJPVFpqTW1Wak1URmtNV1JsT2RnSldqeHpaWEprWlY5cWMyOXVcXFxuT2pwa1pUbzZUV0Z3UVdOalpYTnpQRkkrSUdGeklITmxjbVJsT2pwa1pUbzZUV0Z3UVdOalpYTnpQam82Ym1WNGRGOTJZV3gxWlY5elpXXFxcblZrT2pwb1kyTmpZMlkyWlRCbFltWmpaV0V5TTlrSldqeHpaWEprWlY5cWMyOXVPanBrWlRvNlRXRndRV05qWlhOelBGSStJR0Z6SUhObFxcXG5jbVJsT2pwa1pUbzZUV0Z3UVdOalpYTnpQam82Ym1WNGRGOTJZV3gxWlY5elpXVmtPanBvWkRWa09UTXhOREV6TURNeE9XWmhZOW9KTG5cXFxuTjBaRG82Y0dGdWFXTnJhVzVuT2pwaVpXZHBibDl3WVc1cFl6bzZhR1k0TURFek1UVmpaREpoT0RFM1lqSGJDVE5oYkd4dll6bzZZV3hzXFxcbmIyTTZPa2RzYjJKaGJEbzZZV3hzYjJOZmFXMXdiRG82YURCbVlqVmlObVJoWkRZNU5qQTROamZjQ1dFOFkyOXlaVG82YjNCek9qcHlZV1xcXG41blpUbzZVbUZ1WjJVOGRYTnBlbVUrSUdGeklHTnZjbVU2T25Oc2FXTmxPanBwYm1SbGVEbzZVMnhwWTJWSmJtUmxlRHhiVkYwK1BqbzZcXFxuYVc1a1pYZzZPbWc1TnpsbU1UUTJNelZtTURRMVpEWXkzUWxoUEdOdmNtVTZPbTl3Y3pvNmNtRnVaMlU2T2xKaGJtZGxQSFZ6YVhwbFBpXFxcbkJoY3lCamIzSmxPanB6YkdsalpUbzZhVzVrWlhnNk9sTnNhV05sU1c1a1pYZzhXMVJkUGo0Nk9tbHVaR1Y0T2pwb1pUUXdNRFl4WVRFM1xcXG5NR0prT0dVeU45NEpMbk4wWkRvNmNHRnVhV05yYVc1bk9qcGlaV2RwYmw5d1lXNXBZem82YURsall6RTBZV001TlRVMlpETmtPR0xmQ1NcXFxuNXpkR1E2T25CaGJtbGphMmx1WnpvNlltVm5hVzVmY0dGdWFXTTZPbWc1TURSbU1EazRNMlkxWVRZMFpXVm00QWxlWTI5eVpUbzZjSFJ5XFxcbk9qcGtjbTl3WDJsdVgzQnNZV05sUEhOMFpEbzZjR0Z1YVdOcmFXNW5PanBpWldkcGJsOXdZVzVwWTE5b1lXNWtiR1Z5T2pwUVlXNXBZMVxcXG5CaGVXeHZZV1ErT2pwb05UTmhZV0ZsWTJaaE1UUTVNRFZpT2VFSk5XUnNiV0ZzYkc5ak9qcGtiRzFoYkd4dll6bzZVMlZuYldWdWREbzZcXFxuYUc5c1pITTZPbWc0WVRJMVlqa3lZVGxsTURKaVlqQms0Z2t0YzJWeVpHVmZhbk52YmpvNlpHVTZPbVp5YjIxZmMyeHBZMlU2T21oaU1XXFxcbkkxWVdNeU5HWmlNak5oWWpoajR3a3JjMlZ5WkdWZmFuTnZiam82WkdVNk9tWnliMjFmYzNSeU9qcG9NR1JrT0RGaVpEVXlaREkxTVRBM1xcXG5OT1FKWGp4b1lYTm9Zbkp2ZDI0Nk9tMWhjRG82U1hSbGNqeExMRlkrSUdGeklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6bzZhWFJsY21cXFxuRjBiM0k2T2tsMFpYSmhkRzl5UGpvNmJtVjRkRG82YURVM1pXVmlPR0ptT1dRNE1EbG1ZVGZsQ1VOb1lYTm9Zbkp2ZDI0Nk9uSmhkem82XFxcblVtRjNWR0ZpYkdVOFZDeEJQam82Wm1sdVpEbzZlM3RqYkc5emRYSmxmWDA2T21neU5XSmxabVF6TURsaVkyRmhNak5sNWdsRVkyOXlaVFxcXG5vNmNIUnlPanBrY205d1gybHVYM0JzWVdObFBGdGhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWRkUGpvNmFESXhaRGMxTldZMFpqUTVcXFxuWWpReE56UG5DVHRqYjNKbE9qcHpiR2xqWlRvNlBHbHRjR3dnVzFSZFBqbzZZMjl3ZVY5bWNtOXRYM05zYVdObE9qcG9aREptTVdNd1lUXFxcbk13Tm1NME1XWTBOT2dKTVdGc2JHOWpPanB5WVhkZmRtVmpPanBvWVc1a2JHVmZjbVZ6WlhKMlpUbzZhR1ZpWldKbFlXWmtPVEkzTm1ObFxcXG5NR1BwQ1Y4OGFHRnphR0p5YjNkdU9qcHlZWGM2T2xKaGQwbDBaWEk4VkQ0Z1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBwZEdcXFxuVnlZWFJ2Y2pvNlNYUmxjbUYwYjNJK09qcHVaWGgwT2pwb09UTTNZamhrTXpBNU1qRmpaRGMwTWVvSlh6eG9ZWE5vWW5KdmQyNDZPbkpoXFxcbmR6bzZVbUYzU1hSbGNqeFVQaUJoY3lCamIzSmxPanBwZEdWeU9qcDBjbUZwZEhNNk9tbDBaWEpoZEc5eU9qcEpkR1Z5WVhSdmNqNDZPbVxcXG41bGVIUTZPbWhoWWpnM01qVTBORE13TWpjeVkyTTE2d2xCYUdGemFHSnliM2R1T2pwdFlYQTZPa2hoYzJoTllYQThTeXhXTEZNc1FUNDZcXFxuT21OdmJuUmhhVzV6WDJ0bGVUbzZhR1F4WTJGaU5tRTRNR1kwTjJaaE1qRHNDVDVvWVhOb1luSnZkMjQ2T25KaGR6bzZVbUYzVkdGaWJHXFxcblU4VkN4QlBqbzZjbVZ0YjNabFgyVnVkSEo1T2pwb01qa3hOakpqWkRJek9EWTBNRGRqWXUwSk1XRnNiRzlqT2pweVlYZGZkbVZqT2pwb1xcXG5ZVzVrYkdWZmNtVnpaWEoyWlRvNmFHVmlaV0psWVdaa09USTNObU5sTUdQdUNURmhiR3h2WXpvNmNtRjNYM1psWXpvNmFHRnVaR3hsWDNcXFxuSmxjMlZ5ZG1VNk9taGxZbVZpWldGbVpEa3lOelpqWlRCajd3a3hZV3hzYjJNNk9uSmhkMTkyWldNNk9taGhibVJzWlY5eVpYTmxjblpsXFxcbk9qcG9aV0psWW1WaFptUTVNamMyWTJVd1kvQUpRR052Y21VNk9uQjBjam82WkhKdmNGOXBibDl3YkdGalpUeHpkR1E2T25Sb2NtVmhaRFxcXG5vNlZHaHlaV0ZrUGpvNmFEVTJPREpoTWpsbU16UTBPREEwTWpMeENUNWtaVzV2WDIxbFpHbGhYM1I1Y0dVNk9rMWxaR2xoVkhsd1pUbzZcXFxuWVhOZmRITmZaWGgwWlc1emFXOXVPanBvTURRell6QXlZMkpqWmpneU56TXpOUElKTVdGc2JHOWpPanB5WVhkZmRtVmpPanBvWVc1a2JHXFxcblZmY21WelpYSjJaVG82YUdWaVpXSmxZV1prT1RJM05tTmxNR1B6Q1R0amIzSmxPanB6YkdsalpUbzZQR2x0Y0d3Z1cxUmRQam82WTI5d1xcXG5lVjltY205dFgzTnNhV05sT2pwb05XRmpOR0kyT1dRd04ySXpZVGt4WlBRSk1XRnNiRzlqT2pweVlYZGZkbVZqT2pwb1lXNWtiR1ZmY21cXFxuVnpaWEoyWlRvNmFHVmlaV0psWVdaa09USTNObU5sTUdQMUNURmhiR3h2WXpvNmNtRjNYM1psWXpvNmFHRnVaR3hsWDNKbGMyVnlkbVU2XFxcbk9taGxZbVZpWldGbVpEa3lOelpqWlRCajlna1NYMTkzWW1sdVpHZGxibDl5WldGc2JHOWo5d2t4WVd4c2IyTTZPbkpoZDE5MlpXTTZPbVxcXG5oaGJtUnNaVjl5WlhObGNuWmxPanBvWldKbFltVmhabVE1TWpjMlkyVXdZL2dKV0R4aGJHeHZZem82ZG1Wak9qcHBiblJ2WDJsMFpYSTZcXFxuT2tsdWRHOUpkR1Z5UEZRc1FUNGdZWE1nWTI5eVpUbzZiM0J6T2pwa2NtOXdPanBFY205d1BqbzZaSEp2Y0RvNmFEUmpZVEptT1dFNU1EXFxcbmcyWldKbU5qUDVDVlJqYjNKbE9qcHpiR2xqWlRvNmMyOXlkRG82YldWeVoyVmZjMjl5ZERvNlVuVnVWbVZqUEZKMWJrRnNiRzlqUml4U1xcXG5kVzVFWldGc2JHOWpSajQ2T201bGR6bzZhR0ZtTkdSa09ERmxaREEyTVRVNFpUbjZDVEZoYkd4dll6bzZjbUYzWDNabFl6bzZhR0Z1WkdcXFxueGxYM0psYzJWeWRtVTZPbWhsWW1WaVpXRm1aRGt5TnpaalpUQmord2xYWTI5eVpUbzZjMnhwWTJVNk9tbHVaR1Y0T2pvOGFXMXdiQ0JqXFxcbmIzSmxPanB2Y0hNNk9tbHVaR1Y0T2pwSmJtUmxlRHhKUGlCbWIzSWdXMVJkUGpvNmFXNWtaWGc2T21nMVlXSTJPVGd3WW1JelpHVTNPR1xcXG5JMS9Ba3hZV3hzYjJNNk9uSmhkMTkyWldNNk9taGhibVJzWlY5eVpYTmxjblpsT2pwb1pXSmxZbVZoWm1RNU1qYzJZMlV3WS8wSk1XRnNcXFxuYkc5ak9qcHlZWGRmZG1Wak9qcG9ZVzVrYkdWZmNtVnpaWEoyWlRvNmFHVmlaV0psWVdaa09USTNObU5sTUdQK0NWZzhZV3hzYjJNNk9uXFxcblpsWXpvNmFXNTBiMTlwZEdWeU9qcEpiblJ2U1hSbGNqeFVMRUUrSUdGeklHTnZjbVU2T205d2N6bzZaSEp2Y0RvNlJISnZjRDQ2T21SeVxcXG5iM0E2T21neE5XTTFZVEZqWXpJek1XTXhOVFZrL3dsQ1pHeHRZV3hzYjJNNk9tUnNiV0ZzYkc5ak9qcERhSFZ1YXpvNmMyVjBYMlp5WldcXFxuVmZkMmwwYUY5d2FXNTFjMlU2T21neU5HRmhaVFJtWldReVlUazVNamxtZ0FwT1kyOXlaVG82Wm0xME9qcHVkVzA2T21sdGNEbzZQR2x0XFxcbmNHd2dZMjl5WlRvNlptMTBPanBFYVhOd2JHRjVJR1p2Y2lCcE16SStPanBtYlhRNk9tZzBNbVUyTURNME9EWTJNRGs0TVRobWdRcElZMlxcXG45eVpUbzZiM0J6T2pwbWRXNWpkR2x2YmpvNlJtNVBibU5sT2pwallXeHNYMjl1WTJWN2UzWjBZV0pzWlM1emFHbHRmWDA2T21nMU1XTmhcXFxuTldVMU5ERm1PVFl5TkdSaWdncERhR0Z6YUdKeWIzZHVPanB5WVhjNk9sSmhkMVJoWW14bFBGUXNRVDQ2T21acGJtUTZPbnQ3WTJ4dmMzXFxcblZ5WlgxOU9qcG9NelZqTlRjMk1qZzBOek5qWkdZMk9ZTUtRMmhoYzJoaWNtOTNiam82Y21GM09qcFNZWGRVWVdKc1pUeFVMRUUrT2pwbVxcXG5hVzVrT2pwN2UyTnNiM04xY21WOWZUbzZhR015T0RnMVpqUXhObUpoT0RkaFl6ZUVDajVvWVhOb1luSnZkMjQ2T25KaGR6bzZVbUYzVkdcXFxuRmliR1U4VkN4QlBqbzZjbVZ0YjNabFgyVnVkSEo1T2pwb1ltUmxOVEkzTkRZMU9EZzJabVk1TTRVS1EyaGhjMmhpY205M2JqbzZjbUYzXFxcbk9qcFNZWGRVWVdKc1pUeFVMRUUrT2pwbWFXNWtPanA3ZTJOc2IzTjFjbVY5ZlRvNmFETmhaRFpoTVdNMk16UTRPR0l5T1RTR0NpOXpaWFxcXG5Ka1pWOXFjMjl1T2pwbGNuSnZjam82UlhKeWIzSTZPbWx2T2pwb05tVm1PVFpqTVdabE1HSTJOVFZtWW9jS1RtUmxibTlmYldWa2FXRmZcXFxuZEhsd1pUbzZUV1ZrYVdGVWVYQmxPanBtY205dFgzTndaV05wWm1sbGNsOWhibVJmWTI5dWRHVnVkRjkwZVhCbE9qcG9aV1V3TURnMU16XFxcblUxTjJWaE16QXhaWWdLUDNkaGMyMWZZbWx1WkdkbGJqbzZZMjl1ZG1WeWREbzZZMnh2YzNWeVpYTTZPbWx1ZG05clpUUmZiWFYwT2pwb1xcXG5PREpsTjJWa1lXRXpNR1UyTWpBMFpZa0thRHhqYjNKbE9qcHBkR1Z5T2pwaFpHRndkR1Z5Y3pvNmRHRnJaVG82VkdGclpUeEpQaUJoY3lcXFxuQmpiM0psT2pwcGRHVnlPanAwY21GcGRITTZPbWwwWlhKaGRHOXlPanBKZEdWeVlYUnZjajQ2T201bGVIUTZPbWc1TjJOaFpEa3pabVF6XFxcbk5ETTVOakZpaWdwTVBHRnNiRzlqT2pwaWIzSnliM2M2T2tOdmR6eENQaUJoY3lCamIzSmxPanB2Y0hNNk9tUmxjbVZtT2pwRVpYSmxaalxcXG40Nk9tUmxjbVZtT2pwb05HWmpZVGd6TnpKbE1HTTRNbVZoWTRzS1REeGhiR3h2WXpvNlltOXljbTkzT2pwRGIzYzhRajRnWVhNZ1kyOXlcXFxuWlRvNmIzQnpPanBrWlhKbFpqbzZSR1Z5WldZK09qcGtaWEpsWmpvNmFEVmlORFJrTlRZeFpqUTNNMkl5WW1TTUNrNWpiM0psT2pwbWJYXFxcblE2T201MWJUbzZhVzF3T2pvOGFXMXdiQ0JqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGtnWm05eUlHazJORDQ2T21adGREbzZhRFJqT1RsalxcXG5aRGszTVdaa016WTJaVEtOQ2sxb1lYTm9Zbkp2ZDI0Nk9uSmhkem82VW1GM1ZHRmliR1U4VkN4QlBqbzZjbVZ6WlhKMlpWOXlaV2hoYzJcXFxuZzZPbnQ3WTJ4dmMzVnlaWDE5T2pwb1pqQTNaRE5tTjJFd04yVXhOV1JsWkk0S1RXaGhjMmhpY205M2JqbzZjbUYzT2pwU1lYZFVZV0pzXFxcblpUeFVMRUUrT2pweVpYTmxjblpsWDNKbGFHRnphRG82ZTN0amJHOXpkWEpsZlgwNk9taGpaV1JpTm1Jd05USmpOMlk0WXprM2p3b3lZMlxcXG45eVpUbzZiM0IwYVc5dU9qcFBjSFJwYjI0OFZENDZPblZ1ZDNKaGNEbzZhR0l4T0RJeVpqazFOalZrTW1VelltV1FDakJoYkd4dll6bzZcXFxuZG1Wak9qcFdaV004VkN4QlBqbzZjbVZ6WlhKMlpUbzZhRGxsTldGa1pEQmlPVGN5WldVMVpHS1JDdUFCUEdSbGJtOWZZMkZqYUdWZlpHXFxcbmx5T2pwc2IyTmhiRG82YldGdWFXWmxjM1E2T2w4Nk9qeHBiWEJzSUhObGNtUmxPanBrWlRvNlJHVnpaWEpwWVd4cGVtVWdabTl5SUdSbFxcXG5ibTlmWTJGamFHVmZaR2x5T2pwc2IyTmhiRG82YldGdWFXWmxjM1E2T2xObGNtbGhiR2w2WldSTWIyTmhiRU5oWTJobFRXRnVhV1psYzNcXFxuUkVZWFJoVFc5a2RXeGxQam82WkdWelpYSnBZV3hwZW1VNk9sOWZSbWxsYkdSV2FYTnBkRzl5SUdGeklITmxjbVJsT2pwa1pUbzZWbWx6XFxcbmFYUnZjajQ2T25acGMybDBYM04wY2pvNmFHUTNNVEEyWmpKalltTXlNMlV6TXppU0NocGZYM2RpWjE5bmJHOWlZV3hvZEhSd1kyRmphR1xcXG5WZlpuSmxaWk1LTUdGc2JHOWpPanAyWldNNk9sWmxZenhVTEVFK09qcHlaWE5sY25abE9qcG9NMlF5Wm1VMlpqYzJaREUzTm1OaVlaUUtcXFxuTUdGc2JHOWpPanAyWldNNk9sWmxZenhVTEVFK09qcHlaWE5sY25abE9qcG9NbVJoTWpsaE5UWTBORE0zWVdOak1KVUtQbkJoY210cGJtXFxcbmRmYkc5MFgyTnZjbVU2T25kdmNtUmZiRzlqYXpvNlYyOXlaRXh2WTJzNk9teHZZMnM2T21nMk1tSmxNMkk0TURFeE1EVmlPVEV6bGdwQVxcXG5hR0Z6YUdKeWIzZHVPanB5WVhjNk9tbHVibVZ5T2pwR1lXeHNhV0pwYkdsMGVUbzZZV3hzYjJOZlpYSnlPanBvTXprMk16TXpZMlZqT0dcXFxuWXdOVFV6WkpjS01HRnNiRzlqT2pwMlpXTTZPbFpsWXp4VUxFRStPanB5WlhObGNuWmxPanBvWkRreVpUSmhOalZtTnpjd00yVmtNNWdLXFxcblJqeGJRVjBnWVhNZ1kyOXlaVG82YzJ4cFkyVTZPbU50Y0RvNlUyeHBZMlZRWVhKMGFXRnNSWEU4UWo0K09qcGxjWFZoYkRvNmFEa3hOV1xcXG5NNU5qTXlNR0l5Tm1NMk1XYVpDakJoYkd4dll6bzZkbVZqT2pwV1pXTThWQ3hCUGpvNmNtVnpaWEoyWlRvNmFEaGlOVGcwTVdabVltRTVcXFxuWm1WaE9UV2FDajkzWVhOdFgySnBibVJuWlc0Nk9tTnZiblpsY25RNk9tTnNiM04xY21Wek9qcHBiblp2YTJVelgyMTFkRG82YURBME5HXFxcbkkyTkRObE1qTTVaamcyWlRDYkNqOTNZWE50WDJKcGJtUm5aVzQ2T21OdmJuWmxjblE2T21Oc2IzTjFjbVZ6T2pwcGJuWnZhMlV6WDIxMVxcXG5kRG82YURGak5USTRNbVZsTWpoak56TXpaV2FjQ2o5M1lYTnRYMkpwYm1SblpXNDZPbU52Ym5abGNuUTZPbU5zYjNOMWNtVnpPanBwYm5cXFxuWnZhMlV6WDIxMWREbzZhREkwTTJGaE9XRXdOalZrT0dWallXU2RDajkzWVhOdFgySnBibVJuWlc0Nk9tTnZiblpsY25RNk9tTnNiM04xXFxcbmNtVnpPanBwYm5admEyVXpYMjExZERvNmFEVTBZakJpTkdOaU1qVTFOek0wWVRTZUNqOTNZWE50WDJKcGJtUm5aVzQ2T21OdmJuWmxjblxcXG5RNk9tTnNiM04xY21Wek9qcHBiblp2YTJVelgyMTFkRG82YURaalpUVTVZVE5rTmpBM09URTJNVE9mQ2o5M1lYTnRYMkpwYm1SblpXNDZcXFxuT21OdmJuWmxjblE2T21Oc2IzTjFjbVZ6T2pwcGJuWnZhMlV6WDIxMWREbzZhRGN4TW1FME5tSTFZek00TVRaa01UYWdDajkzWVhOdFgyXFxcbkpwYm1SblpXNDZPbU52Ym5abGNuUTZPbU5zYjNOMWNtVnpPanBwYm5admEyVXpYMjExZERvNmFEZG1PREUwTmpVMlpXVTVZVEkyWmpPaFxcXG5DajkzWVhOdFgySnBibVJuWlc0Nk9tTnZiblpsY25RNk9tTnNiM04xY21Wek9qcHBiblp2YTJVelgyMTFkRG82YUdZNE1qQTFaVGc1TUdcXFxuRTVOVEV4WVRlaUNrWThXMEZkSUdGeklHTnZjbVU2T25Oc2FXTmxPanBqYlhBNk9sTnNhV05sVUdGeWRHbGhiRVZ4UEVJK1BqbzZaWEYxXFxcbllXdzZPbWhqTXpVek5tUmtNemMyTldJNU9EaGhvd295WTI5eVpUbzZiM0IwYVc5dU9qcFBjSFJwYjI0OFZENDZPblZ1ZDNKaGNEbzZhRFxcXG5Vd05tWXpaVGM1TVRjNVltWTFaam1rQ2pCaGJHeHZZem82ZG1Wak9qcFdaV004VkN4QlBqbzZjbVZ6WlhKMlpUbzZhREk1TldVd01tSTFcXFxuWkRrM1kyVTBaV09sQ2tVOGRYSnNPanB3WVhKelpYSTZPbEJoY25ObFJYSnliM0lnWVhNZ1kyOXlaVG82Wm0xME9qcEVaV0oxWno0Nk9tXFxcblp0ZERvNmFHWXlaVE14WXpoaE5XTXlNamszWkdXbUNrWThXMEZkSUdGeklHTnZjbVU2T25Oc2FXTmxPanBqYlhBNk9sTnNhV05sVUdGeVxcXG5kR2xoYkVWeFBFSStQam82WlhGMVlXdzZPbWd6WVRrMU1tRmhNekE1TkdFelpXRXhwd293WVd4c2IyTTZPblpsWXpvNlZtVmpQRlFzUVRcXFxuNDZPbkpsYzJWeWRtVTZPbWcxTVRVMlpEWmtNR0kwWWpCbU0yVTFxQW93WVd4c2IyTTZPblpsWXpvNlZtVmpQRlFzUVQ0Nk9uSmxjMlZ5XFxcbmRtVTZPbWhpT0dFME1ERmhZekF5Tm1NM01qTTJxUW93WVd4c2IyTTZPblpsWXpvNlZtVmpQRlFzUVQ0Nk9uSmxjMlZ5ZG1VNk9tZ3hZbVxcXG5Ka05XWXdObVl5TW1ReVpERTFxZ293WVd4c2IyTTZPblpsWXpvNlZtVmpQRlFzUVQ0Nk9uSmxjMlZ5ZG1VNk9taGlaR0k1TVRneVpXWTJcXFxuWm1FMk5qUTJxd3BHUEZ0QlhTQmhjeUJqYjNKbE9qcHpiR2xqWlRvNlkyMXdPanBUYkdsalpWQmhjblJwWVd4RmNUeENQajQ2T21WeGRXXFxcbkZzT2pwb01qWXdPV1UzWmpFeFpEQTROVGM1WnF3S1JqeGJRVjBnWVhNZ1kyOXlaVG82YzJ4cFkyVTZPbU50Y0RvNlUyeHBZMlZRWVhKMFxcXG5hV0ZzUlhFOFFqNCtPanBsY1hWaGJEbzZhRFprWVRRd05HUXdZVFkwTVRSak5tU3RDa2M4YzNSa09qcHBiem82WlhKeWIzSTZPa1Z5Y21cXFxuOXlTMmx1WkNCaGN5QmpiM0psT2pwbWJYUTZPa1JsWW5WblBqbzZabTEwT2pwb05XUXhaalkyTm1ObVpHUmhZV001TjY0S1FtUnNiV0ZzXFxcbmJHOWpPanBrYkcxaGJHeHZZem82UTJoMWJtczZPbk5sZEY5cGJuVnpaVjloYm1SZmNHbHVkWE5sT2pwb1l6TmtaV0l6TnpreE5UazBOelxcXG5nNE9LOEtPV2hoYzJoaWNtOTNiam82Y21GM09qcEdZV3hzYVdKcGJHbDBlVG82WVd4c2IyTmZaWEp5T2pwb04yRTFOVEE1T1RNNVpURmhcXFxuWkdFelliQUtUenhoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDRnWVhNZ1kyOXlaVG82YjNCek9qcGtjbTl3T2pwRWNtXFxcbjl3UGpvNlpISnZjRG82YURrM016aGpOalF4TUdSbFpHRTROMkd4Q2t4emRHUTZPbk41Y3pvNlkyOXRiVzl1T2pwMGFISmxZV1JmYkc5alxcXG5ZV3c2T25OMFlYUnBZMTlzYjJOaGJEbzZTMlY1UEZRK09qcG5aWFE2T21obFltVTRNV05tTVRRd05tTTVZekExc2dwRGFHRnphR0p5YjNcXFxuZHVPanB5WVhjNk9sSmhkMVJoWW14bFBGUXNRVDQ2T21acGJtUTZPbnQ3WTJ4dmMzVnlaWDE5T2pwb1ltWmxZMlJtT1dRNU9XWTNOVGd6XFxcbk43TUtUenhoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDRnWVhNZ1kyOXlaVG82YjNCek9qcGtjbTl3T2pwRWNtOXdQalxcXG5vNlpISnZjRG82YUdVellXSmpaRGhtTXpoak5UZ3pOek8wQ2s4OFlXeHNiMk02T25KaGQxOTJaV002T2xKaGQxWmxZenhVTEVFK0lHRnpcXFxuSUdOdmNtVTZPbTl3Y3pvNlpISnZjRG82UkhKdmNENDZPbVJ5YjNBNk9taGhNVEl6WVdNMk5tVmlaV0V4WTJJMnRRcFBQR0ZzYkc5ak9qXFxcbnB5WVhkZmRtVmpPanBTWVhkV1pXTThWQ3hCUGlCaGN5QmpiM0psT2pwdmNITTZPbVJ5YjNBNk9rUnliM0ErT2pwa2NtOXdPanBvT1dGbVxcXG5ZekEwWm1ZNFpUSXpOV016TTdZS1FXRnVlV2h2ZHpvNlpYSnliM0k2T2p4cGJYQnNJR0Z1ZVdodmR6bzZSWEp5YjNJK09qcGpiMjV6ZEhcXFxuSjFZM1E2T21nME16UmtNall3TW1ZeVpqZzNNamd3dHdwUFBHRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBpQmhjeUJqXFxcbmIzSmxPanB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d09qcG9aV1UwT1dZMU9HTTJNakU1TkRCaU5yZ0tQbU52Y21VNk9uQjBjalxcXG5vNlpISnZjRjlwYmw5d2JHRmpaVHhrWVhSaFgzVnliRG82UkdGMFlWVnliRDQ2T21nM1pEYzJOak0yTldaaE1XWTBZelJrdVFwUFBHRnNcXFxuYkc5ak9qcHlZWGRmZG1Wak9qcFNZWGRXWldNOFZDeEJQaUJoY3lCamIzSmxPanB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d09qXFxcbnBvWWpjek5ETTBZelExWmpNeU56Y3hOYm9LUDNkaGMyMWZZbWx1WkdkbGJqbzZZMjl1ZG1WeWREbzZZMnh2YzNWeVpYTTZPbWx1ZG05clxcXG5aVEpmYlhWME9qcG9ZV1V3WmpreE5tVTFNakkwWkdJME03c0tUenhoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDRnWVhcXFxuTWdZMjl5WlRvNmIzQnpPanBrY205d09qcEVjbTl3UGpvNlpISnZjRG82YURsaVlqazVPVFF3T1RNNE9UQmxNVG04Q2s4OFlXeHNiMk02XFxcbk9uSmhkMTkyWldNNk9sSmhkMVpsWXp4VUxFRStJR0Z6SUdOdmNtVTZPbTl3Y3pvNlpISnZjRG82UkhKdmNENDZPbVJ5YjNBNk9tZ3dZelxcXG5Rd09XWXdNamN4Tnprd04yWmx2UW84UEVZZ1lYTWdkWEpzT2pwd1lYSnpaWEk2T2xCaGRIUmxjbTQrT2pwemNHeHBkRjl3Y21WbWFYZzZcXFxuT21oaU9UWTJNalJqTkdRM01XVTRNamRqdmdwUFBHRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBpQmhjeUJqYjNKbE9qXFxcbnB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d09qcG9ZVEV3T0RFeU5UTmxOalE1TTJabFpyOEtUenhoYkd4dll6bzZjbUYzWDNabFxcXG5Zem82VW1GM1ZtVmpQRlFzUVQ0Z1lYTWdZMjl5WlRvNmIzQnpPanBrY205d09qcEVjbTl3UGpvNlpISnZjRG82YURsa1kyRXhNV1V4WmpcXFxuUTNabU0zTVRMQUNrODhZV3hzYjJNNk9uSmhkMTkyWldNNk9sSmhkMVpsWXp4VUxFRStJR0Z6SUdOdmNtVTZPbTl3Y3pvNlpISnZjRG82XFxcblJISnZjRDQ2T21SeWIzQTZPbWcwTURoa1pHSTRZemcwTnpkaVl6Wm13UXBDWTI5eVpUbzZjSFJ5T2pwa2NtOXdYMmx1WDNCc1lXTmxQR1xcXG5Gc2JHOWpPanB6ZEhKcGJtYzZPbE4wY21sdVp6NDZPbWhqWVRVeVlXWmpaV1F3WmpsaFltRTF3Z3EvQVdOdmNtVTZPbkIwY2pvNlpISnZcXFxuY0Y5cGJsOXdiR0ZqWlR3OFlXeHNiMk02T21KdmVHVmtPanBDYjNnOFpIbHVJR052Y21VNk9tVnljbTl5T2pwRmNuSnZjaXRqYjNKbE9qXFxcbnB0WVhKclpYSTZPbE5sYm1RclkyOXlaVG82YldGeWEyVnlPanBUZVc1alBpQmhjeUJqYjNKbE9qcGpiMjUyWlhKME9qcEdjbTl0UEdGc1xcXG5iRzlqT2pwemRISnBibWM2T2xOMGNtbHVaejQrT2pwbWNtOXRPanBUZEhKcGJtZEZjbkp2Y2o0Nk9tZzFOVFF6TURKa04yWTFOVFpoTXpcXFxuYzV3d28wUEdKdmIyd2dZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPanBvWm1FNU9UbGxaRE5tWTJRd05qWmlNOFFLXFxcbk4yTnZjbVU2T25KbGMzVnNkRG82VW1WemRXeDBQRlFzUlQ0Nk9uVnVkM0poY0Y5dmNqbzZhRFZrWkRjMFpUVmtNamN3WW1NeE5EVEZDa1xcXG4xb1lYTm9Zbkp2ZDI0Nk9uSmhkem82VW1GM1ZHRmliR1U4VkN4QlBqbzZjbVZ6WlhKMlpWOXlaV2hoYzJnNk9udDdZMnh2YzNWeVpYMTlcXFxuT2pwb1pHWTFZalE0WmpkbU5qUXhPRGMwWnNZS1RXaGhjMmhpY205M2JqbzZjbUYzT2pwU1lYZFVZV0pzWlR4VUxFRStPanB5WlhObGNuXFxcblpsWDNKbGFHRnphRG82ZTN0amJHOXpkWEpsZlgwNk9taG1abVE1TUdSa05tRTVaVFl4TkdKanh3cGVhR0Z6YUdKeWIzZHVPanB5WVhjNlxcXG5PbWx1Ym1WeU9qcFNZWGRVWVdKc1pUeFVMRUUrT2pwbWFXNWtYMjl5WDJacGJtUmZhVzV6WlhKMFgzTnNiM1E2T250N1kyeHZjM1Z5WlhcXFxuMTlPanBvWlRsbU9UY3lOalppWW1abFpqVmlaY2dLWG1oaGMyaGljbTkzYmpvNmNtRjNPanBwYm01bGNqbzZVbUYzVkdGaWJHVThWQ3hCXFxcblBqbzZabWx1WkY5dmNsOW1hVzVrWDJsdWMyVnlkRjl6Ykc5ME9qcDdlMk5zYjNOMWNtVjlmVG82YURneU5XTmxORGcxWVdSbE16WXhaVFxcXG5ESkNsNW9ZWE5vWW5KdmQyNDZPbkpoZHpvNmFXNXVaWEk2T2xKaGQxUmhZbXhsUEZRc1FUNDZPbVpwYm1SZmIzSmZabWx1WkY5cGJuTmxcXFxuY25SZmMyeHZkRG82ZTN0amJHOXpkWEpsZlgwNk9taGxNekkxWlRnellqWTJORGxpT1RaanlncGZQSE5sY21SbFgzZGhjMjFmWW1sdVpHXFxcbmRsYmpvNlpHVTZPazFoY0VGalkyVnpjeUJoY3lCelpYSmtaVG82WkdVNk9rMWhjRUZqWTJWemN6NDZPbTVsZUhSZmRtRnNkV1ZmYzJWbFxcXG5aRG82YURBd1l6UTROVGxsTkdKaU1EYzRZVGJMQ2twb1lYTm9Zbkp2ZDI0Nk9uSmhkem82YVc1dVpYSTZPbEpoZDFSaFlteGxQRlFzUVRcXFxuNDZPbVpwYm1RNk9udDdZMnh2YzNWeVpYMTlPanBvTXpBeFltWXhPV1V4TURVNE1tVmlNc3dLU21oaGMyaGljbTkzYmpvNmNtRjNPanBwXFxcbmJtNWxjam82VW1GM1ZHRmliR1U4VkN4QlBqbzZabWx1WkRvNmUzdGpiRzl6ZFhKbGZYMDZPbWd5TkdZeVlqaGhORE14Tm1NelltRml6UVxcXG5wS2FHRnphR0p5YjNkdU9qcHlZWGM2T21sdWJtVnlPanBTWVhkVVlXSnNaVHhVTEVFK09qcG1hVzVrT2pwN2UyTnNiM04xY21WOWZUbzZcXFxuYURsbU5EVTVOak13WmpVelpXRTRPVGpPQ2s1a1pXNXZYMk5oWTJobFgyUnBjam82WjJ4dlltRnNPanBIYkc5aVlXeElkSFJ3UTJGamFHXFxcblU4Ulc1MlBqbzZhMlY1WDJacGJHVmZjR0YwYURvNmFERmhaalJtTXpZeE1EVXpPRGN4T1dIUENqbG9ZWE5vWW5KdmQyNDZPbkpoZHpvNlxcXG5ZV3hzYjJNNk9tbHVibVZ5T2pwa2IxOWhiR3h2WXpvNmFEVm1NVFJsWkROaFlqTXdaRFJqWmpmUUNreHpkR1E2T25ONWN6bzZZMjl0YldcXFxuOXVPanAwYUhKbFlXUmZiRzlqWVd3Nk9uTjBZWFJwWTE5c2IyTmhiRG82UzJWNVBGUStPanBuWlhRNk9taGxNVGRqTVRrd01XUTVaR1l3XFxcbk1ETTUwUXBlUEhOMFpEbzZjR0Z1YVdOcmFXNW5PanBpWldkcGJsOXdZVzVwWXpvNlVHRnVhV05RWVhsc2IyRmtQRUUrSUdGeklHTnZjbVxcXG5VNk9uQmhibWxqT2pwQ2IzaE5aVlZ3UGpvNloyVjBPanBvT0RVM01UUTNOakl4TVRGaVpHSmhNZElLUDNkaGMyMWZZbWx1WkdkbGJqbzZcXFxuWTI5dWRtVnlkRG82WTJ4dmMzVnlaWE02T21sdWRtOXJaVEZmYlhWME9qcG9OakUyTm1abU5HTTRaV05rTkdJMk10TUtKbXB6WDNONWN6XFxcbm82UVhKeVlYazZPbWwwWlhJNk9tZzVOMk0zTURRek5URmxNakZpTmpJMDFBbzNkWEpzT2pwd1lYSnpaWEk2T21selgzZHBibVJ2ZDNOZlxcXG5aSEpwZG1WZmJHVjBkR1Z5T2pwb1lqaGlOelEwWVRsbU5tVm1ZamMzTmRVS1hqeHpkR1E2T25CaGJtbGphMmx1WnpvNlltVm5hVzVmY0dcXFxuRnVhV002T2xCaGJtbGpVR0Y1Ykc5aFpEeEJQaUJoY3lCamIzSmxPanB3WVc1cFl6bzZRbTk0VFdWVmNENDZPbWRsZERvNmFHRXhOalV4XFxcbk5qWTRaV0UzTjJJd00yUFdDbDQ4YzNSa09qcHdZVzVwWTJ0cGJtYzZPbUpsWjJsdVgzQmhibWxqT2pwUVlXNXBZMUJoZVd4dllXUThRVFxcXG40Z1lYTWdZMjl5WlRvNmNHRnVhV002T2tKdmVFMWxWWEErT2pwblpYUTZPbWc1TURSaE9HUTVOV0kwWm1FelpUSTMxd283YzNSa09qcHpcXFxuZVhNNk9uZGhjMjA2T205elgzTjBjam82UW5WbU9qcG1jbTl0WDNOMGNtbHVaem82YURGbU1ESTVNbVUxTlRnMlptWXhPRGpZQ21SamIzXFxcbkpsT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJVOGFXNWtaWGh0WVhBNk9tMWhjRG82U1c1a1pYaE5ZWEE4ZFhKc09qcFZjbXdzWVd4c1xcXG5iMk02T25OMGNtbHVaem82VTNSeWFXNW5QajQ2T21nek5ESXdaV1l3TVdZNU5qSm1PV0kyMlFweFkyOXlaVG82Y0hSeU9qcGtjbTl3WDJcXFxubHVYM0JzWVdObFBHbHVaR1Y0YldGd09qcHRZWEE2T2tsdVpHVjRUV0Z3UEdGc2JHOWpPanB6ZEhKcGJtYzZPbE4wY21sdVp5eGhiR3h2XFxcbll6bzZjM1J5YVc1bk9qcFRkSEpwYm1jK1BqbzZhR0kxWXpBNE1qVmlNbU5oT0RZelptWGFDcFlCWTI5eVpUbzZjSFJ5T2pwa2NtOXdYMlxcXG5sdVgzQnNZV05sUEdsdVpHVjRiV0Z3T2pwdFlYQTZPa2x1WkdWNFRXRndQSFZ5YkRvNlZYSnNMR1JsYm05ZlkyRmphR1ZmWkdseU9qcHNcXFxuYjJOaGJEbzZiV0Z1YVdabGMzUTZPbE5sY21saGJHbDZaV1JNYjJOaGJFTmhZMmhsVFdGdWFXWmxjM1JFWVhSaFRXOWtkV3hsUGo0Nk9tXFxcbmc1TjJZNU1ESmpOV1EyTW1SaFlUVmsyd284YzJWeVpHVTZPbk5sY2pvNlUyVnlhV0ZzYVhwbFRXRndPanB6WlhKcFlXeHBlbVZmWlc1MFxcXG5jbms2T21nNU56WXpaalZrWWpBM1pXSTJZV013M0FwYVBITmxjbVJsWDJwemIyNDZPbVJsT2pwTllYQkJZMk5sYzNNOFVqNGdZWE1nYzJcXFxuVnlaR1U2T21SbE9qcE5ZWEJCWTJObGMzTStPanB1WlhoMFgzWmhiSFZsWDNObFpXUTZPbWd5WXprd01HSmtNREE1T0RjeFpEY3kzUXBhXFxcblBITmxjbVJsWDJwemIyNDZPbVJsT2pwTllYQkJZMk5sYzNNOFVqNGdZWE1nYzJWeVpHVTZPbVJsT2pwTllYQkJZMk5sYzNNK09qcHVaWFxcXG5oMFgzWmhiSFZsWDNObFpXUTZPbWhrT0RSa1ptUXpZMk0yWVRZMk9HWmwzZ3BPUEdGc2JHOWpPanAyWldNNk9sWmxZenhVTEVFK0lHRnpcXFxuSUdOdmNtVTZPbTl3Y3pvNmFXNWtaWGc2T2tsdVpHVjRQRWsrUGpvNmFXNWtaWGc2T21nMU1qVXdaamM1TWpsaU1URXlORE16M3dwQmFHXFxcbkZ6YUdKeWIzZHVPanB0WVhBNk9raGhjMmhOWVhBOFN5eFdMRk1zUVQ0Nk9uSmxiVzkyWlY5bGJuUnllVG82YUdZeFpXUTJZemd6WVdJMFxcXG5ZV1F4TlRiZ0NqbHpaWEprWlY5M1lYTnRYMkpwYm1SblpXNDZPbVJsT2pwTllYQkJZMk5sYzNNNk9tNWxkem82YURNNU5qWXdPVEptWmpcXFxuUTBPV000T1RUaENrODhZV3hzYjJNNk9uSmhkMTkyWldNNk9sSmhkMVpsWXp4VUxFRStJR0Z6SUdOdmNtVTZPbTl3Y3pvNlpISnZjRG82XFxcblJISnZjRDQ2T21SeWIzQTZPbWd3T0ROaFl6aGhPV0UwTkRjMk56Z3o0Z3BPUEdGc2JHOWpPanAyWldNNk9sWmxZenhVTEVFK0lHRnpJR1xcXG5OdmNtVTZPbTl3Y3pvNmFXNWtaWGc2T2tsdVpHVjRQRWsrUGpvNmFXNWtaWGc2T21nMk5HUmpZakJtWkRoaFpXWmhNVFV5NHdwUFBHRnNcXFxuYkc5ak9qcHlZWGRmZG1Wak9qcFNZWGRXWldNOFZDeEJQaUJoY3lCamIzSmxPanB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d09qXFxcbnBvWm1ZMVl6TTVOekptTkdWaE9ESTRZdVFLVHp4aGJHeHZZem82Y21GM1gzWmxZem82VW1GM1ZtVmpQRlFzUVQ0Z1lYTWdZMjl5WlRvNlxcXG5iM0J6T2pwa2NtOXdPanBFY205d1BqbzZaSEp2Y0RvNmFEaG1Nak5pTWpNMll6SmhOamd6WVdYbENtWmhiR3h2WXpvNmRtVmpPanBqYjNcXFxuYzZPanhwYlhCc0lHTnZjbVU2T21OdmJuWmxjblE2T2taeWIyMDhKbHRVWFQ0Z1ptOXlJR0ZzYkc5ak9qcGliM0p5YjNjNk9rTnZkenhiXFxcblZGMCtQam82Wm5KdmJUbzZhRFZrTjJFek5XTmhaalkwTkRRM1ptVG1Dazg4WVd4c2IyTTZPbkpoZDE5MlpXTTZPbEpoZDFabFl6eFVMRVxcXG5FK0lHRnpJR052Y21VNk9tOXdjem82WkhKdmNEbzZSSEp2Y0Q0Nk9tUnliM0E2T21nMlpETTBNekF4TURWbE5tRmxPREZqNXdwUFBHRnNcXFxuYkc5ak9qcHlZWGRmZG1Wak9qcFNZWGRXWldNOFZDeEJQaUJoY3lCamIzSmxPanB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d09qXFxcbnBvTVRBelkyUTNZbU0zWXpKbU1URTROZWdLTUR3bVZDQmhjeUJqYjNKbE9qcG1iWFE2T2tSbFluVm5Qam82Wm0xME9qcG9NV0k0TXpNMlxcXG5PRGd6TTJGbVpEZzJZK2tLQzE5ZmNtUnNYMkZzYkc5ajZncEFaR3h0WVd4c2IyTTZPbVJzYldGc2JHOWpPanBVY21WbFEyaDFibXM2T21cXFxueGxablJ0YjNOMFgyTm9hV3hrT2pwb09XVmlZVEV5WlRNeFpXVXpObVV3WnVzS0tITjBaRG82Y0dGMGFEbzZVR0YwYURvNmFtOXBiam82XFxcbmFEVXpOV00wT0RFNFlUQTFPREpsTnpQc0NrdGpiM0psT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJVOFkyOXlaVG82YjNCMGFXOXVPalxcXG5wUGNIUnBiMjQ4ZFhKc09qcFZjbXcrUGpvNmFHUmpOalV5TXpFNVlqTTFZamt3TjJMdENrRmhibmxvYjNjNk9tVnljbTl5T2pvOGFXMXdcXFxuYkNCaGJubG9iM2M2T2tWeWNtOXlQam82WTI5dWMzUnlkV04wT2pwb05tUTJOVFUxTVROa056RXdOelprWmU0S1FXRnVlV2h2ZHpvNlpYXFxcbkp5YjNJNk9qeHBiWEJzSUdGdWVXaHZkem82UlhKeWIzSStPanBqYjI1emRISjFZM1E2T21nd05EVTVaVFJtTUdSaFpESTVNbU0xN3dwQVxcXG5iMjVqWlY5alpXeHNPanB6ZVc1ak9qcFBibU5sUTJWc2JEeFVQam82WjJWMFgyOXlYM1J5ZVY5cGJtbDBPanBvWmpobU9XTTVaV0UxTkdcXFxuVTFOelV5WmZBS1FHOXVZMlZmWTJWc2JEbzZjM2x1WXpvNlQyNWpaVU5sYkd3OFZENDZPbWRsZEY5dmNsOTBjbmxmYVc1cGREbzZhR1poXFxcbk1tTmhNREZoWmpsbVpEYzJaRER4Q205a1pXNXZYMk5oWTJobFgyUnBjam82Ykc5allXdzZPa3h2WTJGc1EyRmphR1ZOWVc1cFptVnpkRFxcXG54RmJuWStPanBwYm5ObGNuUmZaR0YwWVRvNmMyaHZkV3hrWDJ0bFpYQmZZMjl1ZEdWdWRGOTBlWEJsWDJobFlXUmxjam82YUdZNU5EZGpcXFxuTURsaE1ESmpORGMzWWpIeUNqbGhiR3h2WXpvNmRtVmpPanBXWldNOFZDeEJQam82YVc1MGIxOWliM2hsWkY5emJHbGpaVG82YURjMVpUXFxcbmhqWW1aaE1HVmpOR0kyTXpYekNqbGhiR3h2WXpvNmRtVmpPanBXWldNOFZDeEJQam82YVc1MGIxOWliM2hsWkY5emJHbGpaVG82YURsa1xcXG5NMkUzWm1NMFkyRXhZMlEyTURuMENqbGhiR3h2WXpvNmRtVmpPanBXWldNOFZDeEJQam82YVc1MGIxOWliM2hsWkY5emJHbGpaVG82YUdcXFxuWm1aalE1TnprNU5qazNNR0kzTkRMMUNtcGpiM0psT2pwemJHbGpaVG82YVhSbGNqbzZQR2x0Y0d3Z1kyOXlaVG82YVhSbGNqbzZkSEpoXFxcbmFYUnpPanBqYjJ4c1pXTjBPanBKYm5SdlNYUmxjbUYwYjNJZ1ptOXlJQ1piVkYwK09qcHBiblJ2WDJsMFpYSTZPbWd4WmpReE1XVTRZalxcXG5kbE1qazVPR0pqOWdvNVlXeHNiMk02T25abFl6bzZWbVZqUEZRc1FUNDZPbWx1ZEc5ZlltOTRaV1JmYzJ4cFkyVTZPbWhrTkdWbU1UazRcXFxuWTJKaFpHRmlOR1E1OXdvNVlXeHNiMk02T25abFl6bzZWbVZqUEZRc1FUNDZPbWx1ZEc5ZlltOTRaV1JmYzJ4cFkyVTZPbWc1Tm1JM05EXFxcbkE1WlRVeE56WmtaV1F5K0FwUlkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEhScGJubDJaV002T25ScGJubDJaV002T2xScFxcXG5ibmxXWldNOFcyTm9ZWEk3SURSZFBqNDZPbWhrTVRZelpEUmhNbUk1TnpreE16TXkrUXBXWTI5eVpUbzZjSFJ5T2pwa2NtOXdYMmx1WDNcXFxuQnNZV05sUEhScGJubDJaV002T25ScGJubDJaV002T2xScGJubFdaV004V3loMU9DeGphR0Z5S1RzZ05GMCtQam82YURoaFptRmlaalV6XFxcbllqTXlNV1JqTXpMNkNpZHpkR1E2T25Sb2NtVmhaRG82WTNWeWNtVnVkRG82YURJMU1HTXlNV0ZqTVdFNFpqUm1NMlQ3Q2doZlgzSm5YMlxcXG45dmJmd0tQMlJzYldGc2JHOWpPanBrYkcxaGJHeHZZem82YkdWbWRITm9hV1owWDJadmNsOTBjbVZsWDJsdVpHVjRPanBvTlRVd01qVm1cXFxuWmpjMlpHWm1NVE5sTmYwS1QyUnNiV0ZzYkc5ak9qcGtiRzFoYkd4dll6bzZRMmgxYm1zNk9uTmxkRjl6YVhwbFgyRnVaRjl3YVc1MWMyXFxcblZmYjJaZlpuSmxaVjlqYUhWdWF6bzZhR0pqTVdSa05EWmpNamc1TVRCaE5qVCtDa2c4WTI5eVpUbzZZMlZzYkRvNlFtOXljbTkzVFhWMFxcXG5SWEp5YjNJZ1lYTWdZMjl5WlRvNlptMTBPanBFWldKMVp6NDZPbVp0ZERvNmFHVTBNR1kyT0dFNFl6VXdNbUptWTJIL0NqSmpiM0psT2pcXFxucG1iWFE2T2tadmNtMWhkSFJsY2pvNmQzSnBkR1ZmYzNSeU9qcG9Oek5qTXpGaU1UQTBZbVl6WkdZNVpZQUxQanhqYjNKbE9qcG1iWFE2XFxcbk9rVnljbTl5SUdGeklHTnZjbVU2T21adGREbzZSR1ZpZFdjK09qcG1iWFE2T21obFlqRTNOamsxWW1RME1qUTNOelppZ1F0T1BHTnZjbVxcXG5VNk9tRnNiRzlqT2pwc1lYbHZkWFE2T2t4aGVXOTFkRVZ5Y205eUlHRnpJR052Y21VNk9tWnRkRG82UkdWaWRXYytPanBtYlhRNk9tZzJcXFxuT0RjME4yWTJZak01WVRBelptWmhnZ3RHUEdGc2JHOWpPanB6ZEhKcGJtYzZPbE4wY21sdVp5QmhjeUJqYjNKbE9qcGpiWEE2T2xCaGNuXFxcblJwWVd4RmNUNDZPbVZ4T2pwb01ERTJOemM0WldNM01UWXpZbVV5Tm9NTFQyTnZjbVU2T21OdGNEbzZhVzF3YkhNNk9qeHBiWEJzSUdOdlxcXG5jbVU2T21OdGNEbzZVR0Z5ZEdsaGJFVnhQQ1pDUGlCbWIzSWdKa0UrT2pwbGNUbzZhR0psTVdRMk5qRmpOalJtWVdVeE1UV0VDMEpqYjNcXFxuSmxPanB3ZEhJNk9tUnliM0JmYVc1ZmNHeGhZMlU4ZDJGemJWOWlhVzVrWjJWdU9qcEtjMVpoYkhWbFBqbzZhR1kyWVRJMk5tUXlNR0UzXFxcbk5XUmlNR2FGQzFFOGFHRnphR0p5YjNkdU9qcHlZWGM2T2xKaGQxUmhZbXhsUEZRc1FUNGdZWE1nWTI5eVpUbzZiM0J6T2pwa2NtOXdPalxcXG5wRWNtOXdQam82WkhKdmNEbzZhRE15TkdaaU9UazFZamxoT1daa1lUS0dDMWhqYjNKbE9qcHdkSEk2T21SeWIzQmZhVzVmY0d4aFkyVThcXFxuWTI5eVpUbzZiM0IwYVc5dU9qcFBjSFJwYjI0OGQyRnpiVjlpYVc1a1oyVnVPanBLYzFaaGJIVmxQajQ2T21oalpUYzVNMlJpT0RjM1lUXFxcbll4Wmpnd2h3dFJQR2hoYzJoaWNtOTNiam82Y21GM09qcFNZWGRVWVdKc1pUeFVMRUUrSUdGeklHTnZjbVU2T205d2N6bzZaSEp2Y0RvNlxcXG5SSEp2Y0Q0Nk9tUnliM0E2T21obVpqZG1aakV3T1RCaFpUaGlaRGN6aUF0ZVBIZGhjMjFmWW1sdVpHZGxiam82U25OV1lXeDFaU0JoY3lcXFxuQmpiM0psT2pwamIyNTJaWEowT2pwR2NtOXRQR0ZzYkc5ak9qcHpkSEpwYm1jNk9sTjBjbWx1Wno0K09qcG1jbTl0T2pwb1pEZzBOelZoXFxcbk16Y3dZVFZqTVRRMU1Za0xRV2hoYzJoaWNtOTNiam82YldGd09qcElZWE5vVFdGd1BFc3NWaXhUTEVFK09qcHlaVzF2ZG1WZlpXNTBjblxcXG5rNk9tZ3dZekkwTVRCbU1qRTFOV0prTlRZMGlncy9hR0Z6YUdKeWIzZHVPanB5WVhjNk9sSmhkMVJoWW14bFBGUXNRVDQ2T21WeVlYTmxcXFxuWDI1dlgyUnliM0E2T21nMlltSTVZamxpTkdVM1pUbG1ZbUk1aXdzL2FHRnphR0p5YjNkdU9qcHlZWGM2T2xKaGQxUmhZbXhsUEZRc1FUXFxcbjQ2T21WeVlYTmxYMjV2WDJSeWIzQTZPbWc0WkRjNE9XVmtPV1ZpTjJKa1lURTFqQXRDWTI5eVpUbzZjSFJ5T2pwa2NtOXdYMmx1WDNCc1xcXG5ZV05sUEhkaGMyMWZZbWx1WkdkbGJqbzZTbk5XWVd4MVpUNDZPbWcxWkdZNU1qQTJNVGN4TXpFeFlqZzNqUXRnUEdGc2JHOWpPanAyWldcXFxuTTZPbFpsWXp4VUxFRStJR0Z6SUdOdmNtVTZPbU52Ym5abGNuUTZPa1p5YjIwOFlXeHNiMk02T21KdmVHVmtPanBDYjNnOFcxUmRMRUUrXFxcblBqNDZPbVp5YjIwNk9taGlNR1V6TmpKbU1XWTNOak01TUdWa2pnczRjMlZ5WkdWZmFuTnZiam82YzJWeU9qcFFjbVYwZEhsR2IzSnRZWFxcXG5SMFpYSTZPbTVsZHpvNmFEZ3pObVEyWW1RMFpUQTJabUZoTlRPUEN6TnpaWEprWlY5cWMyOXVPanB5WldGa09qcFRiR2xqWlZKbFlXUTZcXFxuT201bGR6bzZhR014Tmpjd05qazJNbVUwWkdVd09EaVFDekZ6WlhKa1pWOXFjMjl1T2pweVpXRmtPanBUZEhKU1pXRmtPanB1WlhjNk9tXFxcbmcwT1RBMU1HVXpOalpqTkRaaU1HSmtrUXRzWTI5eVpUbzZjSFJ5T2pwa2NtOXdYMmx1WDNCc1lXTmxQR052Y21VNk9tOXdkR2x2YmpvNlxcXG5UM0IwYVc5dVBIQmhjbXRwYm1kZmJHOTBYMk52Y21VNk9uQmhjbXRwYm1kZmJHOTBPanBVYUhKbFlXUkVZWFJoUGo0Nk9tZ3paV1ZtT1RcXFxuSTROMlZtWkRRME56RTRrZ3RQWTI5eVpUbzZZMjF3T2pwcGJYQnNjem82UEdsdGNHd2dZMjl5WlRvNlkyMXdPanBRWVhKMGFXRnNSWEU4XFxcbkprSStJR1p2Y2lBbVFUNDZPbTVsT2pwb05qYzNNbVl5Tm1ReE1HWTBNbUkwT1pNTE1tTnZjbVU2T205d2RHbHZiam82VDNCMGFXOXVQRlxcXG5RK09qcDFibmR5WVhBNk9tZ3dPREUzTURjME1XUTNaalUzTXpFMWxBdGdQR0ZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrSUdGeklHTnZcXFxuY21VNk9tTnZiblpsY25RNk9rWnliMjA4WVd4c2IyTTZPbUp2ZUdWa09qcENiM2c4VzFSZExFRStQajQ2T21aeWIyMDZPbWd4TldNeE5XXFxcblUwTm1ReU5XRTBOREZobFF0TmQyRnpiVjlpYVc1a1oyVnVPanBqYjI1MlpYSjBPanBwYlhCc2N6bzZWMkZ6YlU5d2RHbHZianhCWW1rK1xcXG5PanBwYm5SdlgyOXdkR2x2YmpvNmFESTFaRFZsWVRjM05qazFZbUV6TlRPV0MwSmpiM0psT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJcXFxuVThkMkZ6YlY5aWFXNWtaMlZ1T2pwS2MxWmhiSFZsUGpvNmFESTNPRGcwT1dSaE4ySXlabUppWVRPWEMwOWpiM0psT2pwamJYQTZPbWx0XFxcbmNHeHpPam84YVcxd2JDQmpiM0psT2pwamJYQTZPbEJoY25ScFlXeEZjVHdtUWo0Z1ptOXlJQ1pCUGpvNlpYRTZPbWcyTUdVMVpEQXlNVFxcXG5jM01EWXpPR0ZobUF0UFkyOXlaVG82WTIxd09qcHBiWEJzY3pvNlBHbHRjR3dnWTI5eVpUbzZZMjF3T2pwUVlYSjBhV0ZzUlhFOEprSStcXFxuSUdadmNpQW1RVDQ2T21WeE9qcG9OakJtTWpFek16TmxObVU0WXpBek1aa0xURHhoYkd4dll6bzZjM1J5YVc1bk9qcFRkSEpwYm1jZ1lYXFxcbk1nWTI5eVpUbzZZMjF3T2pwUVlYSjBhV0ZzUlhFOEpuTjBjajQrT2pwdVpUbzZhRFprWkRBell6bG1PRGM0WVdJMU5EbWFDeVIxY213NlxcXG5PbFZ5YkRvNmIzQjBhVzl1Y3pvNmFERXlPV1ZsWW1NNU1qTTJNV1JoWVRDYkN6RmhiR3h2WXpvNmRtVmpPanBXWldNOFZDeEJQam82ZEhcXFxuSjFibU5oZEdVNk9tZzRNbUpsTTJZMU9UZ3hPVE5rT1RrMW5Bc3ZaR3h0WVd4c2IyTTZPbVJzYldGc2JHOWpPanBoYkdsbmJsOTFjRG82XFxcbmFHSTNaakprTUdFNU5UVTVNamMzTWpPZEN6SThKbFFnWVhNZ1kyOXlaVG82Wm0xME9qcEVhWE53YkdGNVBqbzZabTEwT2pwb01EYzBPR1xcXG5FM05XVXlNRFUzTlRabU5KNExTVHhqYjNKbE9qcG1iWFE2T2tadmNtMWhkSFJsY2lCaGN5QmpiM0psT2pwbWJYUTZPbGR5YVhSbFBqbzZcXFxuZDNKcGRHVmZZMmhoY2pvNmFHUmxORFUwTVdaa09HWTFPRE13TURPZkMxVmpiM0psT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJVOFpHXFxcblZ1YjE5allXTm9aVjlrYVhJNk9tTmhZMmhsT2pwRFlXTm9aV1JWY214TlpYUmhaR0YwWVQ0Nk9taGlPREpqTUdObFkyRXhZbVU0TXpCbVxcXG5vQXRPYzNSa09qcHBiem82YVcxd2JITTZPanhwYlhCc0lITjBaRG82YVc4Nk9sZHlhWFJsSUdadmNpQW1iWFYwSUZjK09qcDNjbWwwWlZcXFxuOWhiR3c2T21nd05tUTFOMlpoWWpKbFpXUTFObVV3b1FzOWQyRnpiVjlpYVc1a1oyVnVPanBWYm5keVlYQlVhSEp2ZDBWNGREbzZkVzUzXFxcbmNtRndYM1JvY205M09qcG9OREEyWlRoa1lXVmhNVGd4T1RWa1pxSUxLM04wWkRvNmNHRjBhRG82VUdGMGFFSjFaam82Y0hWemFEbzZhR1xcXG5VNE5tVTVOMk5qTURnMlpUUmlOeldqQzRRQlkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEdOdmNtVTZPbkpsYzNWc2REbzZcXFxuVW1WemRXeDBQR052Y21VNk9tOXdkR2x2YmpvNlQzQjBhVzl1UEhOMFpEbzZkR2x0WlRvNlUzbHpkR1Z0VkdsdFpUNHNjM1JrT2pwcGJ6XFxcbm82WlhKeWIzSTZPa1Z5Y205eVBqNDZPbWd5TkdZME5HSmpNbVpqWlRVeU9HSmhwQXRQUEdGc2JHOWpPanBoYkd4dll6bzZSMnh2WW1Gc1xcXG5JR0Z6SUdOdmNtVTZPbUZzYkc5ak9qcEJiR3h2WTJGMGIzSStPanBrWldGc2JHOWpZWFJsT2pwb1ltUTROVE5oT1RVek9UQTFNamsyWXFcXFxuVUxhMk52Y21VNk9uQjBjam82WkhKdmNGOXBibDl3YkdGalpUeGpiM0psT2pwdmNIUnBiMjQ2T2s5d2RHbHZianhrWlc1dlgyTmhZMmhsXFxcblgyUnBjam82WTJGamFHVTZPa05oWTJobFpGVnliRTFsZEdGa1lYUmhQajQ2T21oaFpUY3laREEzWW1aaU5qQXdOV1ZpcGd0QlBIVnliRFxcXG5vNlZYSnNJR0Z6SUhObGNtUmxPanB6WlhJNk9sTmxjbWxoYkdsNlpUNDZPbk5sY21saGJHbDZaVG82YURSa1pXTXhZemd6WW1Jek5ERmpcXFxuWTJhbkN5MWhibmxvYjNjNk9tVnljbTl5T2pwdlltcGxZM1JmWkhKdmNEbzZhREl5WTJJM1ltWTNNR0poTXpSa05tU29DeTFoYm5sb2IzXFxcbmM2T21WeWNtOXlPanB2WW1wbFkzUmZaSEp2Y0RvNmFETTJNV00xWm1Jek5XRmxOR0l5TkRLcEN5MWhibmxvYjNjNk9tVnljbTl5T2pwdlxcXG5ZbXBsWTNSZlpISnZjRG82YURrMVptUTFaamMzTVRjMU56WmtZemlxQ3kxaGJubG9iM2M2T21WeWNtOXlPanB2WW1wbFkzUmZaSEp2Y0RcXFxubzZhR013T0RSaE5qbGhPR0V6T0Roa1lXYXJDekZoYm5sb2IzYzZPbVZ5Y205eU9qcHZZbXBsWTNSZlpHOTNibU5oYzNRNk9tZ3hNakUwXFxcbllXRTBOakEwTlRZMFpEVTNyQXN4WVc1NWFHOTNPanBsY25KdmNqbzZiMkpxWldOMFgyUnZkMjVqWVhOME9qcG9NakpsWmpneFpHTXpOVFxcXG5SaU9HTmhNYTBMTVdGdWVXaHZkem82WlhKeWIzSTZPbTlpYW1WamRGOWtiM2R1WTJGemREbzZhR0V4WXpFeE16ZGpaRFV4TmpJeFpEbXVcXFxuQ3pGaGJubG9iM2M2T21WeWNtOXlPanB2WW1wbFkzUmZaRzkzYm1OaGMzUTZPbWhsTnpkbU5EUTVNemxoTVRVNFlXRTByd3N4WVc1NWFHXFxcbjkzT2pwbGNuSnZjam82YjJKcVpXTjBYMlJ2ZDI1allYTjBPanBvWm1aaU1qa3lZVEUzT0Rnek1ERTRaTEFMRGw5ZmNuVnpkRjl5WldGc1xcXG5iRzlqc1F0aVBDWnpaWEprWlY5M1lYTnRYMkpwYm1SblpXNDZPbk5sY2pvNlUyVnlhV0ZzYVhwbGNpQmhjeUJ6WlhKa1pUbzZjMlZ5T2pcXFxucFRaWEpwWVd4cGVtVnlQam82YzJWeWFXRnNhWHBsWDNOMGNqbzZhRFJrT0RobVl6VTBOelUxTjJRek1qbXlDMDg4WVd4c2IyTTZPbUZzXFxcbmJHOWpPanBIYkc5aVlXd2dZWE1nWTI5eVpUbzZZV3hzYjJNNk9rRnNiRzlqWVhSdmNqNDZPbVJsWVd4c2IyTmhkR1U2T21oaVpEZzFNMlxcXG5FNU5UTTVNRFV5T1RaaXN3cy9jR0Z5YTJsdVoxOXNiM1JmWTI5eVpUbzZjR0Z5YTJsdVoxOXNiM1E2T21kbGRGOW9ZWE5vZEdGaWJHVTZcXFxuT21oa056WTJNREpoWXpWaVlUZGxNV015dEF0SlBITnRZV3hzZG1Wak9qcEpiblJ2U1hSbGNqeEJQaUJoY3lCamIzSmxPanB2Y0hNNk9tXFxcblJ5YjNBNk9rUnliM0ErT2pwa2NtOXdPanBvWkRZME5ESTJNR0V5TkdVM05tTTRZN1VMVHp4aGJHeHZZem82WVd4c2IyTTZPa2RzYjJKaFxcXG5iQ0JoY3lCamIzSmxPanBoYkd4dll6bzZRV3hzYjJOaGRHOXlQam82WkdWaGJHeHZZMkYwWlRvNmFHSmtPRFV6WVRrMU16a3dOVEk1Tm1cXFxuSzJDekE4SmxRZ1lYTWdZMjl5WlRvNlptMTBPanBFWldKMVp6NDZPbVp0ZERvNmFEaGpObU5tTldZMk0yTmtOMlZpTmpPM0MwODhZV3hzXFxcbmIyTTZPbUZzYkc5ak9qcEhiRzlpWVd3Z1lYTWdZMjl5WlRvNllXeHNiMk02T2tGc2JHOWpZWFJ2Y2o0Nk9tUmxZV3hzYjJOaGRHVTZPbVxcXG5oaVpEZzFNMkU1TlRNNU1EVXlPVFppdUF0cVkyOXlaVG82YzJ4cFkyVTZPbWwwWlhJNk9qeHBiWEJzSUdOdmNtVTZPbWwwWlhJNk9uUnlcXFxuWVdsMGN6bzZZMjlzYkdWamREbzZTVzUwYjBsMFpYSmhkRzl5SUdadmNpQW1XMVJkUGpvNmFXNTBiMTlwZEdWeU9qcG9ZbVJoTVdNek9UXFxcbmhtWldJMk1EZGhOcmtMTG5KcGJtYzZPbVZ1WkdsaGJqbzZZWE5mWW5sMFpWOXpiR2xqWlRvNmFEVmpaakEyWW1abE9HSXdaRGxtTVRlNlxcXG5DMDg4WVd4c2IyTTZPbUZzYkc5ak9qcEhiRzlpWVd3Z1lYTWdZMjl5WlRvNllXeHNiMk02T2tGc2JHOWpZWFJ2Y2o0Nk9tUmxZV3hzYjJcXFxuTmhkR1U2T21oaVpEZzFNMkU1TlRNNU1EVXlPVFppdXd0UFBHRnNiRzlqT2pwaGJHeHZZem82UjJ4dlltRnNJR0Z6SUdOdmNtVTZPbUZzXFxcbmJHOWpPanBCYkd4dlkyRjBiM0krT2pwa1pXRnNiRzlqWVhSbE9qcG9ZbVE0TlROaE9UVXpPVEExTWprMllyd0xEMTlmZDJKcGJtUm5aV1xcXG41ZlpuSmxaYjBMTWp3bVZDQmhjeUJqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGsrT2pwbWJYUTZPbWcyWXpRNFptUm1NamMxTnpKbVlqZzJcXFxudmdzOFkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEhWeWJEbzZhRzl6ZERvNlNHOXpkRDQ2T21nd1ptTmxZVFl4WmpZeE1XXFxcblppTjJZMHZ3dFBQR0ZzYkc5ak9qcGhiR3h2WXpvNlIyeHZZbUZzSUdGeklHTnZjbVU2T21Gc2JHOWpPanBCYkd4dlkyRjBiM0krT2pwa1xcXG5aV0ZzYkc5allYUmxPanBvWW1RNE5UTmhPVFV6T1RBMU1qazJZc0FMYXp4amIzSmxPanB6YkdsalpUbzZjMjl5ZERvNmJXVnlaMlZmYzJcXFxuOXlkRG82UW5WbVIzVmhjbVE4VkN4RmJHVnRSR1ZoYkd4dlkwWStJR0Z6SUdOdmNtVTZPbTl3Y3pvNlpISnZjRG82UkhKdmNENDZPbVJ5XFxcbmIzQTZPbWd6WldZelkyRTROVE0zTkRjMVlqazR3UXM1WVd4c2IyTTZPbk5zYVdObE9qcHpkR0ZpYkdWZmMyOXlkRG82ZTN0amJHOXpkWFxcXG5KbGZYMDZPbWc0Wm1SalptTTFaV00zTWpRd01tWTF3Z3N5WTI5eVpUbzZiM0IwYVc5dU9qcFBjSFJwYjI0OFZENDZPblZ1ZDNKaGNEbzZcXFxuYURObE9EZGlPVFk1TkRWbE16aGlOVG5EQzA4OFlXeHNiMk02T21Gc2JHOWpPanBIYkc5aVlXd2dZWE1nWTI5eVpUbzZZV3hzYjJNNk9rXFxcbkZzYkc5allYUnZjajQ2T21SbFlXeHNiMk5oZEdVNk9taGlaRGcxTTJFNU5UTTVNRFV5T1RaaXhBdFBQR0ZzYkc5ak9qcGhiR3h2WXpvNlxcXG5SMnh2WW1Gc0lHRnpJR052Y21VNk9tRnNiRzlqT2pwQmJHeHZZMkYwYjNJK09qcGtaV0ZzYkc5allYUmxPanBvWW1RNE5UTmhPVFV6T1RcXFxuQTFNamsyWXNVTExXRnVlV2h2ZHpvNlpYSnliM0k2T205aWFtVmpkRjlrY205d09qcG9ZelpqWVRVd1pHUXdNMlJtWkRZeU1NWUxMR0Z1XFxcbmVXaHZkem82WlhKeWIzSTZPbTlpYW1WamRGOXlaV1k2T21nM05qazJPR1F5WW1SbE1UazJaV0pqeHdzeFlXNTVhRzkzT2pwbGNuSnZjalxcXG5vNmIySnFaV04wWDJSdmQyNWpZWE4wT2pwb09UbGlaVEV6Tm1aak1tVmlNMkl3TU1nTE1HUnNiV0ZzYkc5ak9qcGtiRzFoYkd4dll6bzZcXFxuYkdWbWRGOWlhWFJ6T2pwb01qSTNNREF5TTJVNE1qZzBOR0k0WmNrTHlnRThQR0ZzYkc5ak9qcGliM2hsWkRvNlFtOTRQR1I1YmlCamIzXFxcbkpsT2pwbGNuSnZjam82UlhKeWIzSXJZMjl5WlRvNmJXRnlhMlZ5T2pwVFpXNWtLMk52Y21VNk9tMWhjbXRsY2pvNlUzbHVZejRnWVhNZ1xcXG5ZMjl5WlRvNlkyOXVkbVZ5ZERvNlJuSnZiVHhoYkd4dll6bzZjM1J5YVc1bk9qcFRkSEpwYm1jK1BqbzZabkp2YlRvNlUzUnlhVzVuUlhcXFxuSnliM0lnWVhNZ1kyOXlaVG82WlhKeWIzSTZPa1Z5Y205eVBqbzZaR1Z6WTNKcGNIUnBiMjQ2T21nNFptVTVZbUZtT1RBeVlUUTBaVGN3XFxcbnlnc3lQQ1pVSUdGeklHTnZjbVU2T21adGREbzZSR2x6Y0d4aGVUNDZPbVp0ZERvNmFETmhaREl5T1RJeVlUSTBPVEpsTTJITEMwUThZMlxcXG45eVpUbzZabTEwT2pwQmNtZDFiV1Z1ZEhNZ1lYTWdZMjl5WlRvNlptMTBPanBFYVhOd2JHRjVQam82Wm0xME9qcG9ObUk0TVRJM05ERmxcXFxuWkRsa1pEaGxOc3dMUkdOdmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d2JHRmpaVHhoYkd4dll6bzZZbTl5Y205M09qcERiM2M4YzNSeVBqXFxcbjQ2T21nM09ERmtabUZoTXpRelkyRTVNRFF4elF0NVkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEdOdmNtVTZPbTl3ZEdsdlxcXG5iam82VDNCMGFXOXVQR0ZzYkc5ak9qcDJaV002T21sdWRHOWZhWFJsY2pvNlNXNTBiMGwwWlhJOFlXeHNiMk02T25OMGNtbHVaem82VTNcXFxuUnlhVzVuUGo0K09qcG9NbUprTWpka09UZzNNR1prWW1abU04NExwd0ZrWlc1dlgyTmhZMmhsWDJScGNqbzZiRzlqWVd3Nk9tMWhibWxtXFxcblpYTjBPanBmT2pvOGFXMXdiQ0J6WlhKa1pUbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbElHWnZjaUJrWlc1dlgyTmhZMmhsWDJScGNqbzZiR1xcXG45allXdzZPbTFoYm1sbVpYTjBPanBUWlhKcFlXeHBlbVZrVEc5allXeERZV05vWlUxaGJtbG1aWE4wUkdGMFlUNDZPbVJsYzJWeWFXRnNcXFxuYVhwbE9qcG9Zek0wTTJNMk1EZzBOR05qWXpJMU1zOExqZ0ZrWlc1dlgyTmhZMmhsWDJScGNqbzZZMkZqYUdVNk9sODZPanhwYlhCc0lIXFxcbk5sY21SbE9qcGtaVG82UkdWelpYSnBZV3hwZW1VZ1ptOXlJR1JsYm05ZlkyRmphR1ZmWkdseU9qcGpZV05vWlRvNlUyVnlhV0ZzYVhwbFxcXG5aRU5oWTJobFpGVnliRTFsZEdGa1lYUmhQam82WkdWelpYSnBZV3hwZW1VNk9tZzFaakU1TXprelpqSmxNemt3Wm1JMjBBdGVZMjl5WlRcXFxubzZjSFJ5T2pwa2NtOXdYMmx1WDNCc1lXTmxQR052Y21VNk9uSmxjM1ZzZERvNlVtVnpkV3gwUENncExITmxjbVJsWDJwemIyNDZPbVZ5XFxcbmNtOXlPanBGY25KdmNqNCtPanBvWlRJNU1XUTFaV1ppWmpVM056ZGpOOUVMTm5kaGMyMWZZbWx1WkdkbGJqbzZYMTl5ZERvNllYTnpaWFxcXG5KMFgyNXZkRjl1ZFd4c09qcG9Nakk1TXpOa1lUVTNOV0l4WkRBMU45SUxjR052Y21VNk9uQjBjam82WkhKdmNGOXBibDl3YkdGalpUeGpcXFxuYjNKbE9qcHZjSFJwYjI0Nk9rOXdkR2x2Ymp3b1lXeHNiMk02T25OMGNtbHVaem82VTNSeWFXNW5MR0ZzYkc5ak9qcHpkSEpwYm1jNk9sXFxcbk4wY21sdVp5aytQam82YURJMU5UazRZV0U1WlRSa1pqVmlOR0xUQzNwamIzSmxPanB3ZEhJNk9tUnliM0JmYVc1ZmNHeGhZMlU4WTI5eVxcXG5aVG82YjNCMGFXOXVPanBQY0hScGIyNDhhVzVrWlhodFlYQTZPbTFoY0RvNlNXNWtaWGhOWVhBOGRYSnNPanBWY213c1lXeHNiMk02T25cXFxuTjBjbWx1WnpvNlUzUnlhVzVuUGo0K09qcG9ZbVUxTm1KbVlqWmxNVGc1T0dWa010UUxpZ0ZqYjNKbE9qcHdkSEk2T21SeWIzQmZhVzVmXFxcbmNHeGhZMlU4WTI5eVpUbzZiM0IwYVc5dU9qcFBjSFJwYjI0OFpHVnViMTlqWVdOb1pWOWthWEk2T214dlkyRnNPanB0WVc1cFptVnpkRFxcXG5vNlUyVnlhV0ZzYVhwbFpFeHZZMkZzUTJGamFHVk5ZVzVwWm1WemRFUmhkR0ZOYjJSMWJHVStQam82YUdNMk5EWXhObVJoTkdabE1qTXlcXFxuTTJQVkMxZzhhR0Z6YUdKeWIzZHVPanB5WVhjNk9tbHVibVZ5T2pwU1lYZFVZV0pzWlR4VUxFRStJR0Z6SUdOdmNtVTZPbTl3Y3pvNlpIXFxcbkp2Y0RvNlJISnZjRDQ2T21SeWIzQTZPbWd5TUdVNE5EUmtaV1kxWVdOaU1qWmoxZ3VzQVdOdmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d1xcXG5iR0ZqWlR4amIzSmxPanB2Y0hScGIyNDZPazl3ZEdsdmJqeHBibVJsZUcxaGNEbzZiV0Z3T2pwSmJtUmxlRTFoY0R4MWNtdzZPbFZ5YkNcXFxueGtaVzV2WDJOaFkyaGxYMlJwY2pvNmJHOWpZV3c2T20xaGJtbG1aWE4wT2pwVFpYSnBZV3hwZW1Wa1RHOWpZV3hEWVdOb1pVMWhibWxtXFxcblpYTjBSR0YwWVUxdlpIVnNaVDQrUGpvNmFEWTNZV0kxWkRjek1qSmlZalV3TWpiWEN6NDhVU0JoY3lCb1lYTm9Zbkp2ZDI0Nk9rVnhkV1xcXG5sMllXeGxiblE4U3o0K09qcGxjWFZwZG1Gc1pXNTBPanBvTWpWak0yUTJPREZsT0RBMVlXWTRNOWdMclFGa1pXNXZYMk5oWTJobFgyUnBcXFxuY2pvNmJHOWpZV3c2T20xaGJtbG1aWE4wT2pwZk9qbzhhVzF3YkNCelpYSmtaVG82WkdVNk9rUmxjMlZ5YVdGc2FYcGxJR1p2Y2lCa1pXXFxcbjV2WDJOaFkyaGxYMlJwY2pvNmJHOWpZV3c2T20xaGJtbG1aWE4wT2pwVFpYSnBZV3hwZW1Wa1RHOWpZV3hEWVdOb1pVMWhibWxtWlhOMFxcXG5SR0YwWVUxdlpIVnNaVDQ2T21SbGMyVnlhV0ZzYVhwbE9qcG9ZamM1WlRNd09EWmxPRFkxWVRBeE1Oa0xVVHhvWVhOb1luSnZkMjQ2T25cXFxuSmhkem82VW1GM1ZHRmliR1U4VkN4QlBpQmhjeUJqYjNKbE9qcHZjSE02T21SeWIzQTZPa1J5YjNBK09qcGtjbTl3T2pwb1lqRmtNRFpqXFxcbk1XWmhaamc1TjJReU1Ob0xVVHhvWVhOb1luSnZkMjQ2T25KaGR6bzZVbUYzVkdGaWJHVThWQ3hCUGlCaGN5QmpiM0psT2pwdmNITTZPbVxcXG5SeWIzQTZPa1J5YjNBK09qcGtjbTl3T2pwb1ptVTJOR1V4TkdVNE5qYzVPVGcyT2RzTFEyTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdcXFxuYkdGalpUeHZibU5sWDJObGJHdzZPbWx0Y0RvNlYyRnBkR1Z5UGpvNmFEUmhabVJqTkRSbVkyRmlPV0V5TldUY0MxaGpiM0psT2pwd2RIXFxcbkk2T21SeWIzQmZhVzVmY0d4aFkyVThZMjl5WlRvNmIzQjBhVzl1T2pwUGNIUnBiMjQ4WVd4c2IyTTZPbk4wY21sdVp6bzZVM1J5YVc1blxcXG5QajQ2T21nd09XUXlORGczTURJeFpqaGhNVFJoM1FzK1BGRWdZWE1nYUdGemFHSnliM2R1T2pwRmNYVnBkbUZzWlc1MFBFcytQam82WlhcXFxuRjFhWFpoYkdWdWREbzZhR0l4TkRBME1XSTJZalExWkRJellUamVDeU5xYzE5emVYTTZPazFoY0RvNmMyVjBPanBvT0RCalpUQmpNRGt3XFxcbk5qa3hZamt4TWQ4TFJHTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR4aGJHeHZZem82WW05eWNtOTNPanBEYjNjOGMzUnlQalxcXG40Nk9tZzVOREprTm1WbE9XTTJaR0ZpWVdFMDRBc3lQQ1pVSUdGeklHTnZjbVU2T21adGREbzZSR2x6Y0d4aGVUNDZPbVp0ZERvNmFERmhcXFxuWkRreU1UVmxORE01WmpsbVlqbmhDMFpqYjNKbE9qcHdkSEk2T21SeWIzQmZhVzVmY0d4aFkyVThZVzU1YUc5M09qcGphR0ZwYmpvNlEyXFxcbmhoYVc1VGRHRjBaVDQ2T21oa1lqWmtNMkkzTlRnMk1tRTBNMlF4NGd0V1lXNTVhRzkzT2pwbGNuSnZjam82UEdsdGNHd2dZMjl5WlRvNlxcXG5iM0J6T2pwa2NtOXdPanBFY205d0lHWnZjaUJoYm5sb2IzYzZPa1Z5Y205eVBqbzZaSEp2Y0RvNmFESmtNV1ExWmprMk1qZ3dOV0V4WkRcXFxuSGpDekE4SmxRZ1lYTWdZMjl5WlRvNlptMTBPanBFWldKMVp6NDZPbVp0ZERvNmFEQTFOR0ptTTJNNE16UTJZV0UxWXpua0N5NWpiM0psXFxcbk9qcHpkSEk2T25Oc2FXTmxYMlZ5Y205eVgyWmhhV3c2T21nek4ySXlOalEzWTJReE0yWTJNamd4NVF0dVkyOXlaVG82Y0hSeU9qcGtjbVxcXG45d1gybHVYM0JzWVdObFBHUmxibTlmWTJGamFHVmZaR2x5T2pwc2IyTmhiRG82YldGdWFXWmxjM1E2T2xObGNtbGhiR2w2WldSTWIyTmhcXFxuYkVOaFkyaGxUV0Z1YVdabGMzUkVZWFJoUGpvNmFEZGhaakJrTWpneVlXRmxaalE1T1dibUN5dHpkR1E2T25CaGRHZzZPbEJoZEdoQ2RXXFxcblk2T25CMWMyZzZPbWd4WVdVMU16ZGhOemMzTUdJeVpUTTE1d3RGUEdGc2JHOWpPanB6ZEhKcGJtYzZPbE4wY21sdVp5QmhjeUJqYjNKbFxcXG5PanBtYlhRNk9rUnBjM0JzWVhrK09qcG1iWFE2T21oaFl6YzJOell6WmpneU4yTTJZakEzNkF0YVkyOXlaVG82Y0hSeU9qcGtjbTl3WDJcXFxubHVYM0JzWVdObFBDaGhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWNzWVd4c2IyTTZPbk4wY21sdVp6bzZVM1J5YVc1bktUNDZPbWd4XFxcblpqUTBNekZsTlRjd1l6WTJZVGhpNlF0RFkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEdGc2JHOWpPanBpYjNobFpEbzZRbVxcXG45NFBITjBjajQrT2pwb01XVTFZV1kyTkRWaVpqRmlOekpqTmVvTFNtTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR3b2MzUmtcXFxuT2pwd1lYUm9PanBRWVhSb1FuVm1MSFZ5YkRvNlZYSnNLVDQ2T21obU5ETmlZek16TVdZeE1XRTBNelJpNnd0RVBHRnNiRzlqT2pwemRIXFxcbkpwYm1jNk9sTjBjbWx1WnlCaGN5QmpiM0psT2pwb1lYTm9PanBJWVhOb1BqbzZhR0Z6YURvNmFESTBNRGt3TkRjMk5qUmtZMkU0WlRuc1xcXG5DMEU4YzNSa09qcHdZWFJvT2pwUVlYUm9RblZtSUdGeklHTnZjbVU2T21oaGMyZzZPa2hoYzJnK09qcG9ZWE5vT2pwb05USTJOemM0T0RcXFxuUmhOMlk0WVRJMU5PMExNbU52Y21VNk9tVnljbTl5T2pwRmNuSnZjam82WkdWelkzSnBjSFJwYjI0Nk9tZ3dNV1ZqWW1Fd09UQXlZakppXFxcbk1XWTE3Z3N5WTI5eVpUbzZaWEp5YjNJNk9rVnljbTl5T2pwa1pYTmpjbWx3ZEdsdmJqbzZhREF6WlRBMVpUa3paR0ppWmprNE1qZnZDMlxcXG5kelpYSmtaVG82YzJWeU9qcHBiWEJzY3pvNlBHbHRjR3dnYzJWeVpHVTZPbk5sY2pvNlUyVnlhV0ZzYVhwbElHWnZjaUJoYkd4dll6bzZcXFxuYzNSeWFXNW5PanBUZEhKcGJtYytPanB6WlhKcFlXeHBlbVU2T21nME1HTXlZV0l3TURnME1HRXpPR0k1OEFzdVlXNTVhRzkzT2pwbGNuXFxcbkp2Y2pvNmIySnFaV04wWDJKdmVHVmtPanBvTVRNd056UXlZalJoWWpBeU16Z3hOUEVMTG1GdWVXaHZkem82WlhKeWIzSTZPbTlpYW1WalxcXG5kRjlpYjNobFpEbzZhREU1T0dWbU1ESmlaR0UwWkdZeVpEYnlDeTVoYm5sb2IzYzZPbVZ5Y205eU9qcHZZbXBsWTNSZlltOTRaV1E2T21cXFxuZ3pZamsyT1Rjd1pHTmhOamRpWlRRMDh3c3VZVzU1YUc5M09qcGxjbkp2Y2pvNmIySnFaV04wWDJKdmVHVmtPanBvT0dNeU1UVm1ZMlF3XFxcbk16STRZVFJoTWZRTExtRnVlV2h2ZHpvNlpYSnliM0k2T205aWFtVmpkRjlpYjNobFpEbzZhRGhtWVRKbFpXUXpZVGd3TkRoalpXSDFDMFxcXG5Gb1lYTm9Zbkp2ZDI0Nk9tMWhjRG82U0dGemFFMWhjRHhMTEZZc1V5eEJQam82WTI5dWRHRnBibk5mYTJWNU9qcG9ZVEZoWkRGaVlURXpcXFxuWm1Vek9HSmlNL1lMU0dSbGJtOWZZMkZqYUdWZlpHbHlPanBqWVdOb1pUbzZRMkZqYUdWa1ZYSnNUV1YwWVdSaGRHRTZPbWx6WDNKbFpHXFxcbmx5WldOME9qcG9ZVEZqWmpobE5UbGpaVFpsTWpOaFl2Y0xERjlmY25WemRGOWhiR3h2WS9nTEUxOWZjblZ6ZEY5aGJHeHZZMTk2WlhKdlxcXG5aV1Q1Q3pJOEpsUWdZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPanBvTTJGak5EUmhOR0k1TkRjM1ltRmhNUG9MT3pcXFxud21iWFYwSUZjZ1lYTWdZMjl5WlRvNlptMTBPanBYY21sMFpUNDZPbmR5YVhSbFgyTm9ZWEk2T21nek5XUXpZMlF5WTJJeE5tTm1NV0V6XFxcbit3czZQQ1p0ZFhRZ1Z5QmhjeUJqYjNKbE9qcG1iWFE2T2xkeWFYUmxQam82ZDNKcGRHVmZjM1J5T2pwb05UWXdObVJrWmpsaE9HUmlZV1xcXG5ZNFpmd0xPbUZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrT2pwbGVIUmxibVJmWm5KdmJWOXpiR2xqWlRvNmFHTTFPVEJqT0RCaU1EWXlcXFxuTVdFMk1tWDlDekk4SmxRZ1lYTWdZMjl5WlRvNlptMTBPanBFYVhOd2JHRjVQam82Wm0xME9qcG9Nek14WlRrNE5UbGxNRGcxTmpJNE1QXFxcbjRMUldOdmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d2JHRmpaVHh6WlhKa1pWOXFjMjl1T2pwbGNuSnZjam82UlhKeWIzSStPanBvTm1ZM1xcXG5NbUl6WWpKak1tVXhNREpoTS84TE1tTnZjbVU2T21WeWNtOXlPanBGY25KdmNqbzZaR1Z6WTNKcGNIUnBiMjQ2T21oa1l6SXdZekZpWkRcXFxuQXpNVEZpTVRJM2dBdzZQQ1p0ZFhRZ1Z5QmhjeUJqYjNKbE9qcG1iWFE2T2xkeWFYUmxQam82ZDNKcGRHVmZjM1J5T2pwb1pEZzVOREZpXFxcbk1qVTVOR016WXpSaE5JRU1PbUZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrT2pwbGVIUmxibVJmWm5KdmJWOXpiR2xqWlRvNmFEWTFNRFxcXG5VNU5HVmxObVkwTmpOa05XYUNERU04WVd4c2IyTTZPbk4wY21sdVp6bzZVM1J5YVc1bklHRnpJR052Y21VNk9tWnRkRG82UkdWaWRXYytcXFxuT2pwbWJYUTZPbWc1TVRNM1ptVTNOMlJtWTJZME9XSm1nd3c4YzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BqXFxcbm82WldGMFgyTm9ZWEk2T21obFpXUXpOV0psT0RnNU5tRTFZbVkwaEF3MGMyVnlaR1ZmYW5OdmJqbzZaR1U2T2sxaGNFRmpZMlZ6Y3p4U1xcXG5Qam82Ym1WM09qcG9aak13TVRGaVlUVXpZemxtTUdFME1JVU1YVHh3WVhKcmFXNW5YMnh2ZEY5amIzSmxPanB3WVhKcmFXNW5YMnh2ZERcXFxubzZWR2h5WldGa1JHRjBZU0JoY3lCamIzSmxPanB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d09qcG9aR1ZsWVdGaE1tWXhaakprXFxcbk0yRmhZNFlNT21Gc2JHOWpPanAyWldNNk9sWmxZenhVTEVFK09qcGxlSFJsYm1SZlpuSnZiVjl6YkdsalpUbzZhRFV3TXpobE1HRm1NRFxcXG5BM1pHSmlZam1IRERJOEpsUWdZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPanBvTkRobE5EVTBPVGRpWlRGall6SXpcXFxuWm9nTU9tRnNiRzlqT2pwMlpXTTZPbFpsWXp4VUxFRStPanBsZUhSbGJtUmZabkp2YlY5emJHbGpaVG82YURsbVlUZGxNVEk0WmpJNE1EXFxcbkkzT0dLSkRFMTNZWE50WDJKcGJtUm5aVzQ2T21OdmJuWmxjblE2T21sdGNHeHpPanBYWVhOdFQzQjBhVzl1UEVGaWFUNDZPbWx1ZEc5ZlxcXG5iM0IwYVc5dU9qcG9NRFEyTnpnek9ETmhNbU00TWpObVpZb01QMkZzYkc5ak9qcHlZWGRmZG1Wak9qcFNZWGRXWldNOFZDeEJQam82YzJcXFxuVjBYM0IwY2w5aGJtUmZZMkZ3T2pwb01XSTNPRGs0WlRBMFlUUTFOamMxTllzTUttcHpYM041Y3pvNlZXbHVkRGhCY25KaGVUbzZjMlYwXFxcbk9qcG9NakJtTVdOaU5XRTBOV1UwTnpVMlk0d01KbUZzYkc5ak9qcGhiR3h2WXpvNllXeHNiMk02T21oaVpUTmxZMlpsTnpabU5qVmpaRFxcXG5rd2pReEZQR0ZzYkc5ak9qcHpkSEpwYm1jNk9sTjBjbWx1WnlCaGN5QmpiM0psT2pwbWJYUTZPa1JwYzNCc1lYaytPanBtYlhRNk9taGhcXFxuWXpjMk56WXpaamd5TjJNMllqQTNqZ3dVWDE5M1ltbHVaR2RsYmw5bGVHNWZjM1J2Y21XUEREbzhKbTExZENCWElHRnpJR052Y21VNk9tXFxcblp0ZERvNlYzSnBkR1UrT2pwM2NtbDBaVjl6ZEhJNk9taGlaVGM1WW1ZNE1qZGhaVE0wWlRNMWtBdzVZV3hzYjJNNk9uTnNhV05sT2pwelxcXG5kR0ZpYkdWZmMyOXlkRG82ZTN0amJHOXpkWEpsZlgwNk9tZ3hOVE5sWkRNMFpqbGtZelZsWVdKaGtRdytZMjl5WlRvNmNIUnlPanBrY21cXFxuOXdYMmx1WDNCc1lXTmxQR2xrYm1FNk9uVjBjelEyT2pwSlpHNWhQam82YURnNE16VTFNVGt6WmpGbU9EVXlNbVdTREV4MWJtbGpiMlJsXFxcblgyNXZjbTFoYkdsNllYUnBiMjQ2T214dmIydDFjSE02T21OaGJtOXVhV05oYkY5amIyMWlhVzVwYm1kZlkyeGhjM002T21nNE1UUXdOelxcXG5oaE0yWTJPRE5sTURZMmt3dzZZV3hzYjJNNk9uWmxZem82Vm1WalBGUXNRVDQ2T21WNGRHVnVaRjltY205dFgzTnNhV05sT2pwb016Wm1cXFxuTlRKaE9EZGtaRFE0TldOaU5KUU1PbUZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrT2pwbGVIUmxibVJmWm5KdmJWOXpiR2xqWlRvNmFHXFxcbkZqTVdWbE5ETTVNREUxWmpNMU9EbVZEREE4SmxRZ1lYTWdZMjl5WlRvNlptMTBPanBFWldKMVp6NDZPbVp0ZERvNmFHRmtOR1ZpWkRSaVxcXG5OR0U1TW1GbE1tR1dEREk4SmxRZ1lYTWdZMjl5WlRvNlptMTBPanBFYVhOd2JHRjVQam82Wm0xME9qcG9aVEJrTlRoa056UXhZV0V4WXpcXFxuWXhaWmNNTlR3bWMzUnlJR0Z6SUhObGNtUmxPanBrWlRvNlJYaHdaV04wWldRK09qcG1iWFE2T21nMFlXUTFZak0zTWpBMVpXSmxNVFUwXFxcbm1Bd3lZMjl5WlRvNlpYSnliM0k2T2tWeWNtOXlPanBrWlhOamNtbHdkR2x2YmpvNmFEUmhOemM1TlRrell6STRPR1JrTUdXWkRDNWhiblxcXG5sb2IzYzZPbVZ5Y205eU9qcHZZbXBsWTNSZlltOTRaV1E2T21oaU1HWTNORFpsT0dOaFpHTmlaR1JsbWd3dVlXNTVhRzkzT2pwd2RISTZcXFxuT2xKbFpqeFVQam82WW5sZmJYVjBPanBvTjJabVkyWXpNemcwTldRME5tSXpNSnNNVGp4aGJubG9iM2M2T25keVlYQndaWEk2T2sxbGMzXFxcbk5oWjJWRmNuSnZjanhOUGlCaGN5QmpiM0psT2pwbWJYUTZPa1JsWW5WblBqbzZabTEwT2pwb05HRXlNMkZpWlRnME9XUmxNalkyWlp3TVxcXG5VRHhoYm5sb2IzYzZPbmR5WVhCd1pYSTZPazFsYzNOaFoyVkZjbkp2Y2p4TlBpQmhjeUJqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGsrT2pcXFxucG1iWFE2T21oa09UQTNaRFF5TmpBNVpURXhZVFprblF3d1BDWlVJR0Z6SUdOdmNtVTZPbVp0ZERvNlJHVmlkV2MrT2pwbWJYUTZPbWd6XFxcbk5EZzNPVFprTjJVd1pXTTFOVGRtbmd3eVBDWlVJR0Z6SUdOdmNtVTZPbVp0ZERvNlJHbHpjR3hoZVQ0Nk9tWnRkRG82YURka056QXpZMlxcXG5NMlpqYzFZbUZsTVdHZkRFTThZV3hzYjJNNk9uTjBjbWx1WnpvNlUzUnlhVzVuSUdGeklHTnZjbVU2T21adGREbzZSR1ZpZFdjK09qcG1cXFxuYlhRNk9tZzVNVE0zWm1VM04yUm1ZMlkwT1dKbW9BeEZQR0ZzYkc5ak9qcHpkSEpwYm1jNk9sTjBjbWx1WnlCaGN5QmpiM0psT2pwbWJYXFxcblE2T2tScGMzQnNZWGsrT2pwbWJYUTZPbWhoWXpjMk56WXpaamd5TjJNMllqQTNvUXd2YzNSa09qcHdZWFJvT2pwUVlYUm9PanBoYzE5MVxcXG5PRjl6YkdsalpUbzZhRFE1TkRObFpXVmlObVZrTkdVNU5HU2lER1k4YzNSa09qcHdZVzVwWTJ0cGJtYzZPbUpsWjJsdVgzQmhibWxqWDJcXFxuaGhibVJzWlhJNk9sTjBjbEJoYm1salVHRjViRzloWkNCaGN5QmpiM0psT2pwd1lXNXBZem82UW05NFRXVlZjRDQ2T21kbGREbzZhR1kwXFxcbk5qRXpaVGt3TTJNeFlqSmlORGFqREQ1emRHUTZPbk41Y3pvNmQyRnpiVG82WTI5dGJXOXVPanBvWVhOb2JXRndYM0poYm1SdmJWOXJaWFxcXG5sek9qcG9PV0pqTURFelpUYzJPREUyTVRFd01LUU1OR1JzYldGc2JHOWpPanBrYkcxaGJHeHZZem82UTJoMWJtczZPbU5wYm5WelpUbzZcXFxuYURNd05qTmxOak15WmprMU1tTXpOekNsRERwa2JHMWhiR3h2WXpvNlpHeHRZV3hzYjJNNk9rTm9kVzVyT2pwamJHVmhjbDl3YVc1MWMyXFxcblU2T21neE9UUTNNamN5WTJSalpUY3pZVEUxcGd3elpHeHRZV3hzYjJNNk9tUnNiV0ZzYkc5ak9qcERhSFZ1YXpvNmFXNTFjMlU2T21nd1xcXG5NbVk0WkdJeE1EVmhPR1ZsWkdWbXB3ekNBVHc4WVd4c2IyTTZPbUp2ZUdWa09qcENiM2c4WkhsdUlHTnZjbVU2T21WeWNtOXlPanBGY25cXFxuSnZjaXRqYjNKbE9qcHRZWEpyWlhJNk9sTmxibVFyWTI5eVpUbzZiV0Z5YTJWeU9qcFRlVzVqUGlCaGN5QmpiM0psT2pwamIyNTJaWEowXFxcbk9qcEdjbTl0UEdGc2JHOWpPanB6ZEhKcGJtYzZPbE4wY21sdVp6NCtPanBtY205dE9qcFRkSEpwYm1kRmNuSnZjaUJoY3lCamIzSmxPalxcXG5wbWJYUTZPa1JwYzNCc1lYaytPanBtYlhRNk9tZzFZbUkyWXpObU9XRmpNRE5qTmpNenFBekFBVHc4WVd4c2IyTTZPbUp2ZUdWa09qcENcXFxuYjNnOFpIbHVJR052Y21VNk9tVnljbTl5T2pwRmNuSnZjaXRqYjNKbE9qcHRZWEpyWlhJNk9sTmxibVFyWTI5eVpUbzZiV0Z5YTJWeU9qXFxcbnBUZVc1alBpQmhjeUJqYjNKbE9qcGpiMjUyWlhKME9qcEdjbTl0UEdGc2JHOWpPanB6ZEhKcGJtYzZPbE4wY21sdVp6NCtPanBtY205dFxcXG5PanBUZEhKcGJtZEZjbkp2Y2lCaGN5QmpiM0psT2pwbWJYUTZPa1JsWW5WblBqbzZabTEwT2pwb01qSmtNVFU1TXpWaU5qTmtaams0TTZcXFxua01WRHhoYkd4dll6bzZjM1J5YVc1bk9qcEdjbTl0VlhSbU9FVnljbTl5SUdGeklHTnZjbVU2T21WeWNtOXlPanBGY25KdmNqNDZPbVJsXFxcbmMyTnlhWEIwYVc5dU9qcG9ORGN5WWpKbU9ESTFOVGd5Tm1WbFlxb01NandtVkNCaGN5QmpiM0psT2pwbWJYUTZPa1JwYzNCc1lYaytPalxcXG5wbWJYUTZPbWhoTkRRNFltRmxOMll5TVRaaE16STJxd3d5WTI5eVpUbzZabTEwT2pwR2IzSnRZWFIwWlhJNk9tRnNkR1Z5Ym1GMFpUbzZcXFxuYURNeU9EaGtNVE16TlRsbU5tWTFNelNzRERoamIzSmxPanBtYlhRNk9rWnZjbTFoZEhSbGNqbzZaR1ZpZFdkZmJHOTNaWEpmYUdWNE9qXFxcbnBvWWpCbU1qZ3lOR0ptTTJRM1pqRmxOYTBNT0dOdmNtVTZPbVp0ZERvNlJtOXliV0YwZEdWeU9qcGtaV0oxWjE5MWNIQmxjbDlvWlhnNlxcXG5PbWd3TURnNVpqUXlNR1ExT0dJd09EUXhyZ3cwWTI5eVpUbzZjM1J5T2pwc2IzTnplVG82VlhSbU9FTm9kVzVyY3pvNmJtVjNPanBvT0RcXFxuZGtPVFprTlRJNU5UYzJNRGczWTY4TVNEeGhiR3h2WXpvNmRtVmpPanBXWldNOFZDeEJQaUJoY3lCamIzSmxPanB2Y0hNNk9tUnliM0E2XFxcbk9rUnliM0ErT2pwa2NtOXdPanBvWW1RNE5qRXpZekV5WVRFeE1qaG1ON0FNU1R4aGJHeHZZem82YzNSeWFXNW5PanBUZEhKcGJtY2dZWFxcXG5NZ1kyOXlaVG82Wm0xME9qcFhjbWwwWlQ0Nk9uZHlhWFJsWDNOMGNqbzZhR1F3WWpjMk5qazVPVE14TXpNMVkyS3hER2M4YzJWeVpHVmZcXFxuYW5OdmJqbzZjMlZ5T2pwUWNtVjBkSGxHYjNKdFlYUjBaWElnWVhNZ2MyVnlaR1ZmYW5OdmJqbzZjMlZ5T2pwR2IzSnRZWFIwWlhJK09qXFxcbnBpWldkcGJsOXZZbXBsWTNSZmRtRnNkV1U2T21nek9XUmtZV0UwTXpCbE5UWXpOREF4c2d3T1gxOXlkWE4wWDJSbFlXeHNiMk96RERaM1xcXG5ZWE50WDJKcGJtUm5aVzQ2T21OaGMzUTZPa3B6UTJGemREbzZaSGx1WDNKbFpqbzZhR0poTkRFMllqa3pOVEl4TmpFMFl6aTBERFozWVhcXFxuTnRYMkpwYm1SblpXNDZPbU5oYzNRNk9rcHpRMkZ6ZERvNlpIbHVYM0psWmpvNmFHVmxZbU5sT1RrellUaGhNR0k1WW1LMURHSThKbk5sXFxcbmNtUmxYM2RoYzIxZlltbHVaR2RsYmpvNmMyVnlPanBUWlhKcFlXeHBlbVZ5SUdGeklITmxjbVJsT2pwelpYSTZPbE5sY21saGJHbDZaWFxcXG5JK09qcHpaWEpwWVd4cGVtVmZiV0Z3T2pwb1pURm1OMlZoTmpZellUQmtaakJsWkxZTU5YTmxjbVJsWDNkaGMyMWZZbWx1WkdkbGJqbzZcXFxuVDJKcVpXTjBSWGgwT2pwelpYUTZPbWhsTXpkalpHVXhaVGcwTlRNMk5tRmp0d3hKUEdGc2JHOWpPanB6ZEhKcGJtYzZPbE4wY21sdVp5XFxcbkJoY3lCamIzSmxPanBtYlhRNk9sZHlhWFJsUGpvNmQzSnBkR1ZmYzNSeU9qcG9aREJpTnpZMk9UazVNekV6TXpWallyZ01PendtYlhWMFxcXG5JRmNnWVhNZ1kyOXlaVG82Wm0xME9qcFhjbWwwWlQ0Nk9uZHlhWFJsWDJOb1lYSTZPbWc1WWpBM01XTmxZMlU1TVdGak5HWmp1UXhKUEdcXFxuRnNiRzlqT2pwemRISnBibWM2T2xOMGNtbHVaeUJoY3lCamIzSmxPanBtYlhRNk9sZHlhWFJsUGpvNmQzSnBkR1ZmYzNSeU9qcG9aREJpXFxcbk56WTJPVGs1TXpFek16VmpZcm9NaHdFOGNHRnlhMmx1WjE5c2IzUmZZMjl5WlRvNmRHaHlaV0ZrWDNCaGNtdGxjam82YVcxd09qcFVhSFxcXG5KbFlXUlFZWEpyWlhJZ1lYTWdjR0Z5YTJsdVoxOXNiM1JmWTI5eVpUbzZkR2h5WldGa1gzQmhjbXRsY2pvNlZHaHlaV0ZrVUdGeWEyVnlcXFxuVkQ0Nk9uQnlaWEJoY21WZmNHRnlhem82YURabE16UmxPVFl5TjJRMU5EQXpZMkc3RElZQlBIQmhjbXRwYm1kZmJHOTBYMk52Y21VNk9uXFxcblJvY21WaFpGOXdZWEpyWlhJNk9tbHRjRG82VkdoeVpXRmtVR0Z5YTJWeUlHRnpJSEJoY210cGJtZGZiRzkwWDJOdmNtVTZPblJvY21WaFxcXG5aRjl3WVhKclpYSTZPbFJvY21WaFpGQmhjbXRsY2xRK09qcDFibkJoY210ZmJHOWphem82YURBek9URTFZemhtWmpFeE5UUTVZVG04RElcXFxuUUJQSEJoY210cGJtZGZiRzkwWDJOdmNtVTZPblJvY21WaFpGOXdZWEpyWlhJNk9tbHRjRG82VkdoeVpXRmtVR0Z5YTJWeUlHRnpJSEJoXFxcbmNtdHBibWRmYkc5MFgyTnZjbVU2T25Sb2NtVmhaRjl3WVhKclpYSTZPbFJvY21WaFpGQmhjbXRsY2xRK09qcDBhVzFsWkY5dmRYUTZPbVxcXG5nek5EUTFZek5sWkdGaU9HTTVZemxqdlF4L1BIQmhjbXRwYm1kZmJHOTBYMk52Y21VNk9uUm9jbVZoWkY5d1lYSnJaWEk2T21sdGNEbzZcXFxuVkdoeVpXRmtVR0Z5YTJWeUlHRnpJSEJoY210cGJtZGZiRzkwWDJOdmNtVTZPblJvY21WaFpGOXdZWEpyWlhJNk9sUm9jbVZoWkZCaGNtXFxcbnRsY2xRK09qcHdZWEpyT2pwb05UWTRZamRoWTJWaFlqTm1OV0l6WWI0TWhRRThjR0Z5YTJsdVoxOXNiM1JmWTI5eVpUbzZkR2h5WldGa1xcXG5YM0JoY210bGNqbzZhVzF3T2pwVWFISmxZV1JRWVhKclpYSWdZWE1nY0dGeWEybHVaMTlzYjNSZlkyOXlaVG82ZEdoeVpXRmtYM0JoY21cXFxudGxjam82VkdoeVpXRmtVR0Z5YTJWeVZENDZPbkJoY210ZmRXNTBhV3c2T21nd01UaGlOekZpTXpRNE1EUmtaR0V4dnd3elkyOXlaVG82XFxcbmMzUnlPam84YVcxd2JDQnpkSEkrT2pwbGJtUnpYM2RwZEdnNk9tZ3hPRFl5WWpZNE9XSTVPRGN3TkRnd3dBeEpQR0ZzYkc5ak9qcHpkSFxcXG5KcGJtYzZPbE4wY21sdVp5QmhjeUJqYjNKbE9qcG1iWFE2T2xkeWFYUmxQam82ZDNKcGRHVmZjM1J5T2pwb1pEQmlOelkyT1RrNU16RXpcXFxuTXpWallzRU1OWGRoYzIxZlltbHVaR2RsYmpvNlNuTldZV3gxWlRvNmFYTmZablZ1WTNScGIyNDZPbWcwTXpBME5ETmtNVGcxWWpWaE1UXFxcbkJrd2d3M2QyRnpiVjlpYVc1a1oyVnVPanBqWVhOME9qcEtjME5oYzNRNk9taGhjMTkwZVhCbE9qcG9NemM0WkRreU56Wm1OMlF5WTJRMlxcXG5ac01NTTNkaGMyMWZZbWx1WkdkbGJqbzZTbk5XWVd4MVpUbzZhWE5mYjJKcVpXTjBPanBvWXpJMk16UTFaVFJqTWpjelpqZGtOY1FNTFdcXFxucHpYM041Y3pvNlNYUmxjbUYwYjNKT1pYaDBPanBrYjI1bE9qcG9PRGxtT0dOa1pqaGlOamt6TURWbVpzVU1ZMnB6WDNONWN6bzZYem82XFxcblBHbHRjR3dnZDJGemJWOWlhVzVrWjJWdU9qcGpZWE4wT2pwS2MwTmhjM1FnWm05eUlHcHpYM041Y3pvNlFYSnlZWGxDZFdabVpYSStPalxcXG5wcGJuTjBZVzVqWlc5bU9qcG9ZV05qTkRoak5HWXdZMkU0WVRRMFk4WU1ZbXB6WDNONWN6bzZYem82UEdsdGNHd2dkMkZ6YlY5aWFXNWtcXFxuWjJWdU9qcGpZWE4wT2pwS2MwTmhjM1FnWm05eUlHcHpYM041Y3pvNlZXbHVkRGhCY25KaGVUNDZPbWx1YzNSaGJtTmxiMlk2T21obU1EXFxcbkpoT0RnNFlUTmtNV0ptWXpCaHh3eFBZMjl5WlRvNlkyMXdPanBwYlhCc2N6bzZQR2x0Y0d3Z1kyOXlaVG82WTIxd09qcFFZWEowYVdGc1xcXG5SWEU4SmtJK0lHWnZjaUFtUVQ0Nk9tVnhPanBvWmpsbE5USmhORGt6TnpFME5XWTVPTWdNT3p3bWJYVjBJRmNnWVhNZ1kyOXlaVG82Wm1cXFxuMTBPanBYY21sMFpUNDZPbmR5YVhSbFgyTm9ZWEk2T21nd05UUTRZbUl4WldKbVpXRTBZVEpoeVF4SlBHRnNiRzlqT2pwemRISnBibWM2XFxcbk9sTjBjbWx1WnlCaGN5QmpiM0psT2pwbWJYUTZPbGR5YVhSbFBqbzZkM0pwZEdWZmMzUnlPanBvWkRCaU56WTJPVGs1TXpFek16VmpZc1xcXG5vTVRUeGpiM0psT2pwdVpYUTZPbWx3WDJGa1pISTZPa2x3ZGpaQlpHUnlJR0Z6SUdOdmNtVTZPbU50Y0RvNlVHRnlkR2xoYkVWeFBqbzZcXFxuWlhFNk9tZzJNRE14TldObE1UazVaRFV4T0dVMHl3eHdQR052Y21VNk9uTnNhV05sT2pwemIzSjBPanB0WlhKblpWOXpiM0owT2pwU2RXXFxcbjVXWldNOFVuVnVRV3hzYjJOR0xGSjFia1JsWVd4c2IyTkdQaUJoY3lCamIzSmxPanB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d1xcXG5PanBvT1dJMk5HSTBaVEJtT1RFelkyRmhaY3dNaFFFOGRXNXBZMjlrWlY5dWIzSnRZV3hwZW1GMGFXOXVPanBrWldOdmJYQnZjMlU2T2tcXFxuUmxZMjl0Y0c5emFYUnBiMjV6UEVrK0lHRnpJR052Y21VNk9tbDBaWEk2T25SeVlXbDBjem82YVhSbGNtRjBiM0k2T2tsMFpYSmhkRzl5XFxcblBqbzZibVY0ZERvNmUzdGpiRzl6ZFhKbGZYMDZPbWd3TTJZMU4yUmpNRGd3T1dGaFlqVmx6UXlGQVR4MWJtbGpiMlJsWDI1dmNtMWhiR1xcXG5sNllYUnBiMjQ2T21SbFkyOXRjRzl6WlRvNlJHVmpiMjF3YjNOcGRHbHZibk04U1Q0Z1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpcXFxuT2pwcGRHVnlZWFJ2Y2pvNlNYUmxjbUYwYjNJK09qcHVaWGgwT2pwN2UyTnNiM04xY21WOWZUbzZhRE13TVdVd1lUY3dZalZrWVRCak5EXFxcblhPREVkMWJtbGpiMlJsWDI1dmNtMWhiR2w2WVhScGIyNDZPbTV2Y20xaGJHbDZaVG82YVhOZmFHRnVaM1ZzWDNONWJHeGhZbXhsT2pwb1xcXG5OMlU0WkdSa1pERmpNVFk1TVRKaVk4OE1SenhrZVc0Z2MyVnlaR1U2T21SbE9qcEZlSEJsWTNSbFpDQmhjeUJqYjNKbE9qcG1iWFE2T2tcXFxuUnBjM0JzWVhrK09qcG1iWFE2T21nek9UVTNPRFF3TkdNME1EbGxOemxtMEF3NlBDWnRkWFFnVnlCaGN5QmpiM0psT2pwbWJYUTZPbGR5XFxcbmFYUmxQam82ZDNKcGRHVmZjM1J5T2pwb1lqSXlNR1UzTUdKa01qUXdZamM1T2RFTUNuSjFjM1JmY0dGdWFXUFNERms4YzNSa09qcHplWFxcXG5NNk9uZGhjMjA2T205dVkyVTZPa052YlhCc1pYUnBiMjVIZFdGeVpDQmhjeUJqYjNKbE9qcHZjSE02T21SeWIzQTZPa1J5YjNBK09qcGtcXFxuY205d09qcG9NakkxWmpZeU1qRTFNalF5WmpCa1lkTU1NR1JzYldGc2JHOWpPanBrYkcxaGJHeHZZem82YkdWaGMzUmZZbWwwT2pwb05XXFxcbkpsWkRkalpqZGtOV1UxTW1WbU45UU1OV1JzYldGc2JHOWpPanBrYkcxaGJHeHZZem82UTJoMWJtczZPbTF0WVhCd1pXUTZPbWc0WW1WaVxcXG5ZbVk1T1RsbE5HUmlZVGd3MVF4UVpHeHRZV3hzYjJNNk9tUnNiV0ZzYkc5ak9qcERhSFZ1YXpvNmMyVjBYM05wZW1WZllXNWtYM0JwYm5cXFxuVnpaVjl2Wmw5cGJuVnpaVjlqYUhWdWF6bzZhR0UwWTJGbU1tWTVNMlZpWm1ObU1HSFdERE5rYkcxaGJHeHZZem82Wkd4dFlXeHNiMk02XFxcbk9sTmxaMjFsYm5RNk9uUnZjRG82YURjMU16QXpPV0kzTmpSaU5UTmpOVGpYRERzOEptMTFkQ0JYSUdGeklHTnZjbVU2T21adGREbzZWM1xcXG5KcGRHVStPanAzY21sMFpWOWphR0Z5T2pwb1ltWmhObVJrTURFME5EazNabVkyT2RnTVREeGhiR3h2WXpvNmMzUnlhVzVuT2pwR2NtOXRcXFxuVlhSbU9FVnljbTl5SUdGeklHTnZjbVU2T21adGREbzZSR2x6Y0d4aGVUNDZPbVp0ZERvNmFESXhORGMyTkRkaU1EQTBaalk0WkdYWkREXFxcbmxqYjNKbE9qcHZjSE02T21aMWJtTjBhVzl1T2pwR2JrOXVZMlU2T21OaGJHeGZiMjVqWlRvNmFETmpabU0wT0RFek1EZzNORFpsTTJiYVxcXG5ERTVqYjNKbE9qcG1iWFE2T201MWJUbzZhVzF3T2pvOGFXMXdiQ0JqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGtnWm05eUlIVXpNajQ2T21cXFxuWnRkRG82YURNMU1tWmlNR1l4TXpCaU5tSmxZVGpiREUxamIzSmxPanBtYlhRNk9tNTFiVG82YVcxd09qbzhhVzF3YkNCamIzSmxPanBtXFxcbmJYUTZPa1JwYzNCc1lYa2dabTl5SUhVNFBqbzZabTEwT2pwb01URXdaREF5TWpabE5UZzNaV1ExTnR3TVRtTnZjbVU2T21adGREbzZiblxcXG5WdE9qcHBiWEE2T2p4cGJYQnNJR052Y21VNk9tWnRkRG82UkdsemNHeGhlU0JtYjNJZ2RURTJQam82Wm0xME9qcG9OMlkwTWpsaE1UQmlcXFxuTVdRMk16bGhNdDBNTjJOdmNtVTZPbVp0ZERvNlluVnBiR1JsY25NNk9rUmxZblZuVTJWME9qcGxiblJ5ZVRvNmFHRmpaRGhpWkRReE5tXFxcblpsTWpFek5UYmVERG84Sm0xMWRDQlhJR0Z6SUdOdmNtVTZPbVp0ZERvNlYzSnBkR1UrT2pwM2NtbDBaVjl6ZEhJNk9tZzJZek0xWmpVNVxcXG5NMk5oTURVMU0yVTIzd3hPWTI5eVpUbzZabTEwT2pwdWRXMDZPbWx0Y0RvNlBHbHRjR3dnWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1SUdcXFxuWnZjaUIxTmpRK09qcG1iWFE2T21nelpqYzFPVGRtTmpZM1pXSXpOamd5NEF3NFkyOXlaVG82Ym5WdE9qbzhhVzF3YkNCMU16SStPanBtXFxcbmNtOXRYM04wY2w5eVlXUnBlRG82YURZMVl6UmtaREppWXpJek1qSXlOalRoREI5ZlgzZGlhVzVrWjJWdVgyRmtaRjkwYjE5emRHRmphMVxcXG45d2IybHVkR1Z5NGd4VFkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEdGc2JHOWpPanAyWldNNk9sWmxZenhoYkd4dll6bzZcXFxuYzNSeWFXNW5PanBUZEhKcGJtYytQam82YURsbU1XUTBaVGhoTnpnMVpXUXlNelBqREVCamIzSmxPanB3ZEhJNk9tUnliM0JmYVc1ZmNHXFxcbnhoWTJVOFlXeHNiMk02T25abFl6bzZWbVZqUEhVNFBqNDZPbWcxWXpneU5tUTRZemc1WkdZeFlXVTE1QXdwWVd4c2IyTTZPbUZzYkc5alxcXG5PanBpYjNoZlpuSmxaVG82YUdNek1HWTBPR1kzWXpRNE5tWmhZekRsRERGelpYSmtaVjkzWVhOdFgySnBibVJuWlc0Nk9tWnliMjFmZG1cXFxuRnNkV1U2T21nME1HUTJNbUk0TnpSbFlqSmpOR1UwNWd5MUFUeHpaWEprWlRvNlpHVTZPbWx0Y0d4ek9qbzhhVzF3YkNCelpYSmtaVG82XFxcblpHVTZPa1JsYzJWeWFXRnNhWHBsSUdadmNpQnpkR1E2T21OdmJHeGxZM1JwYjI1ek9qcG9ZWE5vT2pwdFlYQTZPa2hoYzJoTllYQThTeVxcXG54V0xGTStQam82WkdWelpYSnBZV3hwZW1VNk9rMWhjRlpwYzJsMGIzSThTeXhXTEZNK0lHRnpJSE5sY21SbE9qcGtaVG82Vm1semFYUnZcXFxuY2o0Nk9tVjRjR1ZqZEdsdVp6bzZhRFpqWlRZMU1tVTNZMlEyWldZeU5USG5ETHdCUEdSbGJtOWZZMkZqYUdWZlpHbHlPanBqWVdOb1pUXFxcbm82WHpvNlBHbHRjR3dnYzJWeVpHVTZPbVJsT2pwRVpYTmxjbWxoYkdsNlpTQm1iM0lnWkdWdWIxOWpZV05vWlY5a2FYSTZPbU5oWTJobFxcXG5PanBUWlhKcFlXeHBlbVZrUTJGamFHVmtWWEpzVFdWMFlXUmhkR0UrT2pwa1pYTmxjbWxoYkdsNlpUbzZYMTlXYVhOcGRHOXlJR0Z6SUhcXFxuTmxjbVJsT2pwa1pUbzZWbWx6YVhSdmNqNDZPbVY0Y0dWamRHbHVaem82YUdNME5HWTFaVEUwTlRFeVlqbGhNMmJvRE5zQlBHUmxibTlmXFxcblkyRmphR1ZmWkdseU9qcHNiMk5oYkRvNmJXRnVhV1psYzNRNk9sODZPanhwYlhCc0lITmxjbVJsT2pwa1pUbzZSR1Z6WlhKcFlXeHBlbVxcXG5VZ1ptOXlJR1JsYm05ZlkyRmphR1ZmWkdseU9qcHNiMk5oYkRvNmJXRnVhV1psYzNRNk9sTmxjbWxoYkdsNlpXUk1iMk5oYkVOaFkyaGxcXFxuVFdGdWFXWmxjM1JFWVhSaFRXOWtkV3hsUGpvNlpHVnpaWEpwWVd4cGVtVTZPbDlmVm1semFYUnZjaUJoY3lCelpYSmtaVG82WkdVNk9sXFxcblpwYzJsMGIzSStPanBsZUhCbFkzUnBibWM2T21obVlqazBZV0ZoWVRNd1pUVXdaamd4NlF6VkFUeGtaVzV2WDJOaFkyaGxYMlJwY2pvNlxcXG5iRzlqWVd3Nk9tMWhibWxtWlhOME9qcGZPam84YVcxd2JDQnpaWEprWlRvNlpHVTZPa1JsYzJWeWFXRnNhWHBsSUdadmNpQmtaVzV2WDJcXFxuTmhZMmhsWDJScGNqbzZiRzlqWVd3Nk9tMWhibWxtWlhOME9qcFRaWEpwWVd4cGVtVmtURzlqWVd4RFlXTm9aVTFoYm1sbVpYTjBSR0YwXFxcbllUNDZPbVJsYzJWeWFXRnNhWHBsT2pwZlgxWnBjMmwwYjNJZ1lYTWdjMlZ5WkdVNk9tUmxPanBXYVhOcGRHOXlQam82Wlhod1pXTjBhV1xcXG41bk9qcG9aakF5WVRRNU9URm1aV1ZsTldNMFpPb01TR052Y21VNk9tOXdjem82Wm5WdVkzUnBiMjQ2T2tadVQyNWpaVG82WTJGc2JGOXZcXFxuYm1ObGUzdDJkR0ZpYkdVdWMyaHBiWDE5T2pwb09EQmpObVE1WWpBNE9HTTFObUU0WnVzTVNHTnZjbVU2T205d2N6bzZablZ1WTNScGIyXFxcbjQ2T2tadVQyNWpaVG82WTJGc2JGOXZibU5sZTN0MmRHRmliR1V1YzJocGJYMTlPanBvWXpGall6Y3dZakExWVRNMVpETmlNT3dNZTJOdlxcXG5jbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR4aGJubG9iM2M2T21WeWNtOXlPanBGY25KdmNrbHRjR3c4WkdWdWIxOWpZV05vWlZcXFxuOWthWEk2T21kc2IySmhiRG82VlhKc1ZHOUdhV3hsYm1GdFpVTnZiblpsY25OcGIyNUZjbkp2Y2o0K09qcG9NVEZpWVRKbFpHSmpPVFV4XFxcbk1XWXpNKzBNWEdOdmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d2JHRmpaVHhoYm5sb2IzYzZPbVZ5Y205eU9qcEZjbkp2Y2tsdGNHdzhjM1xcXG5Sa09qcHBiem82WlhKeWIzSTZPa1Z5Y205eVBqNDZPbWc0WlRBeU1UZGtOVEJsTTJReE9EaG03Z3hmWTI5eVpUbzZjSFJ5T2pwa2NtOXdcXFxuWDJsdVgzQnNZV05sUEdGdWVXaHZkem82WlhKeWIzSTZPa1Z5Y205eVNXMXdiRHh6WlhKa1pWOXFjMjl1T2pwbGNuSnZjam82UlhKeWIzXFxcbkkrUGpvNmFEaGxNakV4TlRFMFlUQmtOemhrTmpIdkRHTmpiM0psT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJVOFlXNTVhRzkzT2pwbFxcXG5jbkp2Y2pvNlJYSnliM0pKYlhCc1BHRnNiRzlqT2pwemRISnBibWM2T2taeWIyMVZkR1k0UlhKeWIzSStQam82YURRM016Qmpaall4WkdcXFxuVTRZamhoTnpid0RENDhVU0JoY3lCb1lYTm9Zbkp2ZDI0Nk9rVnhkV2wyWVd4bGJuUThTejQrT2pwbGNYVnBkbUZzWlc1ME9qcG9ZMlJrXFxcbk9XUmhaR1kwTVdKaE9XRXlPUEVNU2p4aGJHeHZZem82YzNSeWFXNW5PanBUZEhKcGJtY2dZWE1nWTI5eVpUbzZabTEwT2pwWGNtbDBaVFxcXG40Nk9uZHlhWFJsWDJOb1lYSTZPbWhpWXpNd09Ea3dZakJtTkRZMlpUSTI4Z3d0WVc1NWFHOTNPanBsY25KdmNqbzZiMkpxWldOMFgyUnlcXFxuYjNBNk9taGtPVEpqTldFM05UYzVNRGN4TVRkbTh3d3pZVzU1YUc5M09qcGxjbkp2Y2pvNmIySnFaV04wWDJSeWIzQmZabkp2Ym5RNk9tXFxcbmd3TURsaU16STFPR1EyT1RabE1UYzI5QXd6WVc1NWFHOTNPanBsY25KdmNqbzZiMkpxWldOMFgyUnliM0JmWm5KdmJuUTZPbWcyT1RabFxcXG5OREpqTVRFME5tSTFPV1U1OVF3ellXNTVhRzkzT2pwbGNuSnZjam82YjJKcVpXTjBYMlJ5YjNCZlpuSnZiblE2T21oaE1XWTFPRGsxTVRcXFxuVm1NR0k0WXpWaTlnd3pZVzU1YUc5M09qcGxjbkp2Y2pvNmIySnFaV04wWDJSeWIzQmZabkp2Ym5RNk9taGlZVFF4T1Raak56aGtNbVZsXFxcblpqazM5d3hGYUdGemFHSnliM2R1T2pweVlYYzZPbWx1Ym1WeU9qcFNZWGRVWVdKc1pUeFVMRUUrT2pwbWNtVmxYMkoxWTJ0bGRITTZPbVxcXG5oaFl6YzBOREZtTkRReE1HWXlNRGxqK0F4R1pHVnViMTlqWVdOb1pWOWthWEk2T214dlkyRnNPanBNYjJOaGJFTmhZMmhsVFdGdWFXWmxcXFxuYzNROFJXNTJQam82Ym1WM09qcG9aVEEwTkdRM09EWmpPREZrTmpJNU0va01HbDlmY25WemRGOWhiR3h2WTE5bGNuSnZjbDlvWVc1a2JHXFxcblZ5K2d4QVkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEdGc2JHOWpPanAyWldNNk9sWmxZengxT0Q0K09qcG9PRFkxWkdNNVxcXG5ZV015TnpNelptUXlZdnNNUW1OdmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d2JHRmpaVHhoYkd4dll6bzZjM1J5YVc1bk9qcFRkSEpwYm1cXFxuYytPanBvWmpWa1lUSXpaV1kzT1dZek5qYzFOUHdNS1dGc2JHOWpPanBoYkd4dll6bzZZbTk0WDJaeVpXVTZPbWczWlRKallUYzROMlEwXFxcbllUZGpZekUwL1F4S1BHRnNiRzlqT2pwemRISnBibWM2T2xOMGNtbHVaeUJoY3lCamIzSmxPanBtYlhRNk9sZHlhWFJsUGpvNmQzSnBkR1xcXG5WZlkyaGhjam82YUdKak16QTRPVEJpTUdZME5qWmxNamIrREVSelpYSmtaVjlxYzI5dU9qcGtaVG82UkdWelpYSnBZV3hwZW1WeVBGSStcXFxuT2pwd1lYSnpaVjloYm5sZmJuVnRZbVZ5T2pwb05tTTVZVE5qTmpaa05qWTBZV1JpWnY4TVNEeHpaWEprWlY5cWMyOXVPanBsY25KdmNqXFxcbm82UlhKeWIzSWdZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPanBvT0RFNFpURXdaREV4WmpKallqVTVOb0FOd1FGalxcXG5iM0psT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJVOGMyMWhiR3gyWldNNk9rbHVkRzlKZEdWeVBGc29LbU52Ym5OMElIQmhjbXRwYm1cXFxuZGZiRzkwWDJOdmNtVTZPbkJoY210cGJtZGZiRzkwT2pwVWFISmxZV1JFWVhSaExHTnZjbVU2T205d2RHbHZiam82VDNCMGFXOXVQSEJoXFxcbmNtdHBibWRmYkc5MFgyTnZjbVU2T25Sb2NtVmhaRjl3WVhKclpYSTZPbWx0Y0RvNlZXNXdZWEpyU0dGdVpHeGxQaWs3SURoZFBqNDZPbVxcXG5nM1lUSmpOR015TW1WbE16QmtaV0ZoZ1Ewd1BDWlVJR0Z6SUdOdmNtVTZPbVp0ZERvNlJHVmlkV2MrT2pwbWJYUTZPbWd5TWpBeE9XSmxcXFxuTkRBek56SXhNRGhpZ2cxQVkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEdGc2JHOWpPanAyWldNNk9sWmxZengxT0Q0K09qXFxcbnBvT1RobFl6VmhaakZsTWprd09UZzBOb01OUW1OdmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d2JHRmpaVHhoYkd4dll6bzZkbVZqT2pwV1xcXG5aV004Sm5OMGNqNCtPanBvWVdZeU56SXlPRFkyTWpReVpEVTBNNFFOTXp3bVZDQmhjeUJqYjNKbE9qcG1iWFE2T2t4dmQyVnlTR1Y0UGpcXFxubzZabTEwT2pwb09EVTBZelEwWTJOaE5UQTJZemt6WllVTk1Ed21WQ0JoY3lCamIzSmxPanBtYlhRNk9rUmxZblZuUGpvNlptMTBPanBvXFxcbk5Ea3hPVGMxTmpaaFpHWTJZVFl6TklZTkpXcHpYM041Y3pvNlFYSnlZWGs2T21kbGREbzZhRFZtWVdKa1pXVTVPV1UwTWpRM05HYUhEU1xcXG5wM1lYTnRYMkpwYm1SblpXNDZPblJvY205M1gzTjBjam82YUdZd1pHWTNaVEUyTW1ZMlpERTVaam1JRFRGM1lYTnRYMkpwYm1SblpXNDZcXFxuT2w5ZmNuUTZPblJvY205M1gyNTFiR3c2T21nM1pEUTNNemRsTjJZeE5EVmxPRGs0aVEweWQyRnpiVjlpYVc1a1oyVnVPanBmWDNKME9qXFxcbnBpYjNKeWIzZGZabUZwYkRvNmFEQXpOV1k0TnpBNVl6UXdOVEF3TldhS0RVQmpiM0psT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJVOFxcXG5ZV3hzYjJNNk9uWmxZem82Vm1WalBIVTRQajQ2T21nelpqTTVNR05rT1RReE1tUTVNV0ZqaXcxS1BHRnNiRzlqT2pwemRISnBibWM2T2xcXFxuTjBjbWx1WnlCaGN5QmpiM0psT2pwbWJYUTZPbGR5YVhSbFBqbzZkM0pwZEdWZlkyaGhjam82YUdKak16QTRPVEJpTUdZME5qWmxNamFNXFxcbkRUSThKbFFnWVhNZ1kyOXlaVG82Wm0xME9qcEVhWE53YkdGNVBqbzZabTEwT2pwb1lXWTVObVUxTVROaVpHVmlNalJsTVkwTlZUeHpaWFxcXG5Ka1pUbzZaR1U2T21sdGNHeHpPanBUZEhKcGJtZFdhWE5wZEc5eUlHRnpJSE5sY21SbE9qcGtaVG82Vm1semFYUnZjajQ2T21WNGNHVmpcXFxuZEdsdVp6bzZhRGs0WXpJeU1XWXdZVGRqTVRBeU5XR09EWjBCUEhObGNtUmxPanBrWlRvNmFXMXdiSE02T2p4cGJYQnNJSE5sY21SbE9qXFxcbnBrWlRvNlJHVnpaWEpwWVd4cGVtVWdabTl5SUhOMFpEbzZkR2x0WlRvNlUzbHpkR1Z0VkdsdFpUNDZPbVJsYzJWeWFXRnNhWHBsT2pwRVxcXG5kWEpoZEdsdmJsWnBjMmwwYjNJZ1lYTWdjMlZ5WkdVNk9tUmxPanBXYVhOcGRHOXlQam82Wlhod1pXTjBhVzVuT2pwb09EQTBObVk0TVRcXFxuaGtOV0poWkRsa1pJOE5qQUU4YzJWeVpHVTZPbVJsT2pwcGJYQnNjem82UEdsdGNHd2djMlZ5WkdVNk9tUmxPanBFWlhObGNtbGhiR2w2XFxcblpTQm1iM0lnZFRNeVBqbzZaR1Z6WlhKcFlXeHBlbVU2T2xCeWFXMXBkR2wyWlZacGMybDBiM0lnWVhNZ2MyVnlaR1U2T21SbE9qcFdhWFxcXG5OcGRHOXlQam82Wlhod1pXTjBhVzVuT2pwb01qTTNNelEyWlRKbE1UWTBPV1ZrTXBBTmpBRThjMlZ5WkdVNk9tUmxPanBwYlhCc2N6bzZcXFxuUEdsdGNHd2djMlZ5WkdVNk9tUmxPanBFWlhObGNtbGhiR2w2WlNCbWIzSWdkVFkwUGpvNlpHVnpaWEpwWVd4cGVtVTZPbEJ5YVcxcGRHXFxcbmwyWlZacGMybDBiM0lnWVhNZ2MyVnlaR1U2T21SbE9qcFdhWE5wZEc5eVBqbzZaWGh3WldOMGFXNW5PanBvWkRVM05XUTBaV0V4TXpVMlxcXG5OamM0TVpFTmUyTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR4aGJubG9iM2M2T21WeWNtOXlPanBGY25KdmNrbHRjR3c4WVdcXFxuNTVhRzkzT2pwM2NtRndjR1Z5T2pwTlpYTnpZV2RsUlhKeWIzSThZV3hzYjJNNk9uTjBjbWx1WnpvNlUzUnlhVzVuUGo0K09qcG9ZVEJoXFxcbk1HUTVZV0ZoTlRjNVpUWmhaSklOT3p3bWJYVjBJRmNnWVhNZ1kyOXlaVG82Wm0xME9qcFhjbWwwWlQ0Nk9uZHlhWFJsWDJOb1lYSTZPbVxcXG5neE9ERXlPVGt4TnpjeFltWXlZamt5a3cwellXNTVhRzkzT2pwbGNuSnZjam82YjJKcVpXTjBYMlJ5YjNCZlpuSnZiblE2T21nek5tUmlcXFxuTldSbU1qaGpNak5rTVRjd2xBMUJjM1JrT2pwemVYTTZPbmRoYzIwNk9tOXpYM04wY2pvNlUyeHBZMlU2T25SdlgzTjBjbWx1WjE5c2IzXFxcbk56ZVRvNmFESTNObVkyTVRoaU1tVTBOVFpqTWpLVkRUSmtiRzFoYkd4dll6bzZaR3h0WVd4c2IyTTZPa05vZFc1ck9qcHphWHBsT2pwb1xcXG5aVFprWldGbVl6azRZalZpT1dFeE5KWU5OR1JzYldGc2JHOWpPanBrYkcxaGJHeHZZem82UTJoMWJtczZPbkJwYm5WelpUbzZhREl5TTJcXFxuUmpaV1ZrWkRBeU5UTTBZamlYRFRsa2JHMWhiR3h2WXpvNlpHeHRZV3hzYjJNNk9sTmxaMjFsYm5RNk9tbHpYMlY0ZEdWeWJqbzZhR0pqXFxcbk1USmhObVZpTkdZNU5qbGxabU9ZRFRsa2JHMWhiR3h2WXpvNlpHeHRZV3hzYjJNNk9sTmxaMjFsYm5RNk9uTjVjMTltYkdGbmN6bzZhRFxcXG5FNFlUTm1NVFUzWkdGbVpHWmpOaktaRFRBOEpsUWdZWE1nWTI5eVpUbzZabTEwT2pwRVpXSjFaejQ2T21adGREbzZhR1V3TldRMVkyWmxcXFxuTW1ZeE16a3hNVE9hRFROaGJHeHZZem82WVd4c2IyTTZPbWhoYm1Sc1pWOWhiR3h2WTE5bGNuSnZjam82YURjeU4yRTFaalV6TnpNd01HXFxcblk1WlRtYkRUMWhiR3h2WXpvNllXeHNiMk02T21oaGJtUnNaVjloYkd4dlkxOWxjbkp2Y2pvNmNuUmZaWEp5YjNJNk9tZ3pNbUl3WldSbVxcXG5ObUV6WXpGaU5XSTRuQTB6UEhOMGNpQmhjeUJqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGsrT2pwbWJYUTZPbWd5TmpJM1pqTmtOVFV5TTJcXFxuTTVOV1psblEwMVkyOXlaVG82YzNSeU9qcHNiM056ZVRvNlZYUm1PRU5vZFc1ck9qcDJZV3hwWkRvNmFESXpaRFJqTm1WbU5qYzRNR1prXFxcbk1EaWVEVGRqYjNKbE9qcHpkSEk2T214dmMzTjVPanBWZEdZNFEyaDFibXM2T21sdWRtRnNhV1E2T21neU1ETTRObVF5TXpVMk1EQXdNRFxcXG5ZNG53MHdQQ1pVSUdGeklHTnZjbVU2T21adGREbzZSR1ZpZFdjK09qcG1iWFE2T21nellUUmtNRGt5WVdFME5URXpZekExb0Ewd1BDWlVcXFxuSUdGeklHTnZjbVU2T21adGREbzZSR1ZpZFdjK09qcG1iWFE2T21nM1lXUTBNVGRpT1RRMk1qWXlaakl4b1EwR2JXVnRjMlYwb2cwR2JXXFxcblZ0WTIxd293MEhiV1Z0Ylc5MlphUU5CbTFsYldOd2VhVU5RR0Z1ZVdodmR6bzZaWEp5YjNJNk9qeHBiWEJzSUdGdWVXaHZkem82UlhKeVxcXG5iM0krT2pwbWNtOXRYM04wWkRvNmFEZzFaREF4WXprM1lXTmpabVZoWXpPbURVOXpkR1E2T21OdmJHeGxZM1JwYjI1ek9qcG9ZWE5vT2pcXFxucHRZWEE2T2xKaGJtUnZiVk4wWVhSbE9qcHVaWGM2T2t0RldWTTZPbDlmWjJWMGFYUTZPbWhtTVdaaU16SXhPRGcyT1RrMU1XVTVwdzB5XFxcblBGUWdZWE1nYzJWeVpHVTZPbVJsT2pwRmVIQmxZM1JsWkQ0Nk9tWnRkRG82YURJM01UVmxOemN5T0dOa01tVTBZVGFvRFRJOFZDQmhjeVxcXG5CelpYSmtaVG82WkdVNk9rVjRjR1ZqZEdWa1BqbzZabTEwT2pwb00yVmxPVEF6WkRGbFkyUTBaVEJsT2FrTk1qeFVJR0Z6SUhObGNtUmxcXFxuT2pwa1pUbzZSWGh3WldOMFpXUStPanBtYlhRNk9tZzBNak0xTldJNE1UZGpPREptWlRZeXFnMHlQRlFnWVhNZ2MyVnlaR1U2T21SbE9qXFxcbnBGZUhCbFkzUmxaRDQ2T21adGREbzZhRGMzTm1Ga09URmtaVGszWTJFMVpER3JEVEk4VkNCaGN5QnpaWEprWlRvNlpHVTZPa1Y0Y0dWalxcXG5kR1ZrUGpvNlptMTBPanBvWW1ReU4yVXdaRGd3WWpNd05tSXlNS3dOTWp4VUlHRnpJSE5sY21SbE9qcGtaVG82Ulhod1pXTjBaV1ErT2pcXFxucG1iWFE2T21oak5UTXdNekE1WkdZd1kyUTJNR1V5clEweVBGUWdZWE1nYzJWeVpHVTZPbVJsT2pwRmVIQmxZM1JsWkQ0Nk9tWnRkRG82XFxcbmFHUTRPRGsxT0RBeVpXWTBNVGsyWW1HdURUSThWQ0JoY3lCelpYSmtaVG82WkdVNk9rVjRjR1ZqZEdWa1BqbzZabTEwT2pwb1pUY3hZMlxcXG5GaVlqWTRaalJqT1RSbFk2OE5NanhVSUdGeklITmxjbVJsT2pwa1pUbzZSWGh3WldOMFpXUStPanBtYlhRNk9taGxPR1poTnpoaE0yVTJcXFxuWWpKa1lqTXpzQTBzWTI5eVpUbzZaWEp5YjNJNk9rVnljbTl5T2pwallYVnpaVG82YURjeVpqQmpNVEkxTXpsbVptSXhOVFd4RFN4amIzXFxcbkpsT2pwbGNuSnZjam82UlhKeWIzSTZPbU5oZFhObE9qcG9ZV0pqTXpZeFpXTXhNbVZqTUdWaU43SU5RR0Z1ZVdodmR6bzZaWEp5YjNJNlxcXG5PanhwYlhCc0lHRnVlV2h2ZHpvNlJYSnliM0krT2pwbWNtOXRYM04wWkRvNmFESmlPR0UxWmpoallUZzNNV1JoT1RlekRVQmhibmxvYjNcXFxuYzZPbVZ5Y205eU9qbzhhVzF3YkNCaGJubG9iM2M2T2tWeWNtOXlQam82Wm5KdmJWOXpkR1E2T21nellqUTFPVGRsTW1ZMllUbGxOVFUxXFxcbnRBMUFZVzU1YUc5M09qcGxjbkp2Y2pvNlBHbHRjR3dnWVc1NWFHOTNPanBGY25KdmNqNDZPbVp5YjIxZmMzUmtPanBvTkdVM01XWXhZelxcXG5Nd1lUWTBPVGxoTkxVTlFHRnVlV2h2ZHpvNlpYSnliM0k2T2p4cGJYQnNJR0Z1ZVdodmR6bzZSWEp5YjNJK09qcG1jbTl0WDNOMFpEbzZcXFxuYUdGaFltWXdZV0UwTjJKa1pqZ3daV0syRFVrOFlXNTVhRzkzT2pwbGNuSnZjam82UlhKeWIzSkpiWEJzUEVVK0lHRnpJR052Y21VNk9tXFxcblp0ZERvNlJHVmlkV2MrT2pwbWJYUTZPbWhoWkdNeU5qUmxNREV3T0RZellUSmt0dzFKUEdGdWVXaHZkem82WlhKeWIzSTZPa1Z5Y205eVxcXG5TVzF3YkR4RlBpQmhjeUJqYjNKbE9qcG1iWFE2T2tSbFluVm5Qam82Wm0xME9qcG9ZbUZtTVRObVl6WmlaRGRsTkRZeE03Z05TVHhoYm5cXFxubG9iM2M2T21WeWNtOXlPanBGY25KdmNrbHRjR3c4UlQ0Z1lYTWdZMjl5WlRvNlptMTBPanBFWldKMVp6NDZPbVp0ZERvNmFHSm1Oemt5XFxcblpUQTNNekk1WVRJeFlqYTVEVWs4WVc1NWFHOTNPanBsY25KdmNqbzZSWEp5YjNKSmJYQnNQRVUrSUdGeklHTnZjbVU2T21adGREbzZSR1xcXG5WaWRXYytPanBtYlhRNk9taG1PRGt5TnpNek0yUm1NVGN5WldFd3VnMDBiMjVqWlY5alpXeHNPanB6ZVc1ak9qcE1ZWHA1UEZRc1JqNDZcXFxuT21admNtTmxPanBvWlRjMk1HTTFZelkwTW1JNE5EazNOYnNOTkc5dVkyVmZZMlZzYkRvNmMzbHVZem82VEdGNmVUeFVMRVkrT2pwbWIzXFxcbkpqWlRvNmFESTVaV016TldWbFpqY3pNVFEyT1dXOERTeGpiM0psT2pwbGNuSnZjam82UlhKeWIzSTZPbU5oZFhObE9qcG9OVEpqTnpZNFxcXG5ZMk5rTkRJM09ERm1OcjBOUFhObGNtUmxYMnB6YjI0Nk9tUmxPanBFWlhObGNtbGhiR2w2WlhJOFVqNDZPbTVsZUhSZlkyaGhjam82YURcXFxuVXhZV0V5WWpNeU4yRmlNekV5WVRtK0RVQnpaWEprWlY5cWMyOXVPanBrWlRvNlJHVnpaWEpwWVd4cGVtVnlQRkkrT2pwbWFYaGZjRzl6XFxcbmFYUnBiMjQ2T21nMk9HRTNNemRpWXpWaU1tUXpaalUzdncxWWNHRnlhMmx1WjE5c2IzUmZZMjl5WlRvNmNHRnlhMmx1WjE5c2IzUTZPblxcXG5kcGRHaGZkR2h5WldGa1gyUmhkR0U2T2xSSVVrVkJSRjlFUVZSQk9qcGZYMmRsZEdsME9qcG9Nell3WWpjMU9EWXpZek5oTTJRMk9NQU5cXFxuU1hOMFpEbzZjM2x6WDJOdmJXMXZiam82WW1GamEzUnlZV05sT2pwZlgzSjFjM1JmWlc1a1gzTm9iM0owWDJKaFkydDBjbUZqWlRvNmFHXFxcblJsWXpRM09XRmtObVEyTkRBM05XYkJEU2hxYzE5emVYTTZPa0Z5Y21GNU9qcHNaVzVuZEdnNk9tZ3pOVGRsTVdNeFl6TXpZVFEwWkdVMFxcXG53ZzBsYW5OZmMzbHpPanBGY25KdmNqbzZibVYzT2pwb05qUTFOamxpWWpFNFl6Rm1OR1kxTnNNTkttcHpYM041Y3pvNlQySnFaV04wT2pcXFxucGxiblJ5YVdWek9qcG9aak5pWldZME9UUXlPR0k1T1RBME5jUU5MV3B6WDNONWN6bzZWV2x1ZERoQmNuSmhlVG82YkdWdVozUm9PanBvXFxcbk1ERmtORFptTURkbE5ESTNOVGN4T01VTkttcHpYM041Y3pvNlZXbHVkRGhCY25KaGVUbzZibVYzT2pwb09ERmxPR1ZpT0dZMFlqVXpaalxcXG5jeVk4WU5ZenhoYkd4dll6bzZkbVZqT2pwV1pXTThWRDRnWVhNZ1lXeHNiMk02T25abFl6bzZjM0JsWTE5bWNtOXRYMmwwWlhJNk9sTndcXFxuWldOR2NtOXRTWFJsY2p4VUxFaytQam82Wm5KdmJWOXBkR1Z5T2pwb01qZ3laRGd5TUdJMk9UVXdOVEU1TnNjTlNYTjBaRG82YzNselgyXFxcbk52YlcxdmJqbzZZbUZqYTNSeVlXTmxPanBmWDNKMWMzUmZaVzVrWDNOb2IzSjBYMkpoWTJ0MGNtRmpaVG82YUdReE4yWXpZVGxpTlRobVxcXG5NR1EzTmpMSURVbHpkR1E2T25ONWMxOWpiMjF0YjI0Nk9tSmhZMnQwY21GalpUbzZYMTl5ZFhOMFgyVnVaRjl6YUc5eWRGOWlZV05yZEhcXFxuSmhZMlU2T21neE1ESTFaalE1T1ROaFlXUXpOamsweVEwc1kyOXlaVG82WlhKeWIzSTZPa1Z5Y205eU9qcGpZWFZ6WlRvNmFHTTJaV1UyXFxcbk9UTXlOV0kzTkdSbE16ZktEVWs4WVc1NWFHOTNPanBsY25KdmNqbzZSWEp5YjNKSmJYQnNQRVUrSUdGeklHTnZjbVU2T21adGREbzZSR1xcXG5WaWRXYytPanBtYlhRNk9taGhNamcyWmpOak56WTNNRE0zTURNNXl3MUJjM1JrT2pwd1lXNXBZMnRwYm1jNk9uQmhibWxqWDJOdmRXNTBcXFxuT2pwcGMxOTZaWEp2WDNOc2IzZGZjR0YwYURvNmFESTBZamhsTVdObFl6a3paV1pqT0RqTURVTThjM1JrT2pwcGJ6bzZaWEp5YjNJNk9rXFxcblZ5Y205eUlHRnpJR052Y21VNk9tWnRkRG82UkdWaWRXYytPanBtYlhRNk9taGhaamhoWVRBd09XVmxNRFJpT0dVNHpRMUpjM1JrT2pwelxcXG5lWE5mWTI5dGJXOXVPanBpWVdOcmRISmhZMlU2T2w5ZmNuVnpkRjlsYm1SZmMyaHZjblJmWW1GamEzUnlZV05sT2pwb04yWmxOVEZtWWpcXFxuUmtNMkpoTmpBMk1NNE5PV1JzYldGc2JHOWpPanBrYkcxaGJHeHZZem82UTJoMWJtczZPbkJzZFhOZmIyWm1jMlYwT2pwb1lqZzBNMlF6XFxcbk1UY3dZV1V6TVdVNFpzOE5PbVJzYldGc2JHOWpPanBrYkcxaGJHeHZZem82UTJoMWJtczZPbTFwYm5WelgyOW1abk5sZERvNmFHVTBZV1xcXG5FNE5qQm1PRFE0TmpOak16alFEVFJrYkcxaGJHeHZZem82Wkd4dFlXeHNiMk02T2tOb2RXNXJPanAwYjE5dFpXMDZPbWhsTldVMU9USXdcXFxuTWpVMU9XVTVZMkZqMFEwMlpHeHRZV3hzYjJNNk9tUnNiV0ZzYkc5ak9qcERhSFZ1YXpvNlpuSnZiVjl0WlcwNk9tZzBNRFl5Wm1Ga016XFxcbmt6WTJJeE4yTmswZzB3WTI5eVpUbzZiM0J6T2pwbWRXNWpkR2x2YmpvNlJtNDZPbU5oYkd3Nk9taGhNVE14WVdRellUSTJZek5sTVdKaVxcXG4wdzAzWTI5eVpUbzZiM0J6T2pwbWRXNWpkR2x2YmpvNlJtNU5kWFE2T21OaGJHeGZiWFYwT2pwb05XSmtaVE5qWWpBNFlqSTVZMlZsT05cXFxuUU5TR052Y21VNk9tOXdjem82Wm5WdVkzUnBiMjQ2T2tadVQyNWpaVG82WTJGc2JGOXZibU5sZTN0MmRHRmliR1V1YzJocGJYMTlPanBvXFxcbk1EZGpOMkkxWkdReVptVm1OV1UxTjlVTnZ3RmpiM0psT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJVOFBHRnNiRzlqT2pwaWIzaGxaRFxcXG5vNlFtOTRQR1I1YmlCamIzSmxPanBsY25KdmNqbzZSWEp5YjNJclkyOXlaVG82YldGeWEyVnlPanBUWlc1a0syTnZjbVU2T20xaGNtdGxcXFxuY2pvNlUzbHVZejRnWVhNZ1kyOXlaVG82WTI5dWRtVnlkRG82Um5KdmJUeGhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWMrUGpvNlpuXFxcbkp2YlRvNlUzUnlhVzVuUlhKeWIzSStPanBvTldRNE56QmtPR1EyTWpBek4yRmlOOVlOU1dOdmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d1xcXG5iR0ZqWlR4aGJHeHZZem82YzNSeWFXNW5PanBHY205dFZYUm1PRVZ5Y205eVBqbzZhR00yTkRNeE5EZ3laR1V4TjJJNU56YlhEVTFqYjNcXFxuSmxPanB3ZEhJNk9tUnliM0JmYVc1ZmNHeGhZMlU4YzJWeVpHVmZkMkZ6YlY5aWFXNWtaMlZ1T2pwbGNuSnZjam82UlhKeWIzSStPanBvXFxcbk9EZGxPRGxsT0dVMU5USmhNRFV6TjlnTnZ3RmpiM0psT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJVOFBHRnNiRzlqT2pwaWIzaGxaRFxcXG5vNlFtOTRQR1I1YmlCamIzSmxPanBsY25KdmNqbzZSWEp5YjNJclkyOXlaVG82YldGeWEyVnlPanBUWlc1a0syTnZjbVU2T20xaGNtdGxcXFxuY2pvNlUzbHVZejRnWVhNZ1kyOXlaVG82WTI5dWRtVnlkRG82Um5KdmJUeGhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWMrUGpvNlpuXFxcbkp2YlRvNlUzUnlhVzVuUlhKeWIzSStPanBvTkRZM01qRmtZelJtTnpreU5qazBaZGtOVkR4elpYSmtaVjlxYzI5dU9qcHlaV0ZrT2pwVFxcXG5kSEpTWldGa0lHRnpJSE5sY21SbFgycHpiMjQ2T25KbFlXUTZPbEpsWVdRK09qcHBaMjV2Y21WZmMzUnlPanBvTUdFek9XVTNOVFppTXpcXFxuTXpaREl4TXRvTlFtTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR4aGJHeHZZem82YzNSeWFXNW5PanBUZEhKcGJtYytPanBvXFxcbk9XWmtPV0kxWXpZelpqVmxabVptWTlzTk5YZGhjMjFmWW1sdVpHZGxiam82WDE5eWREbzZiV0ZzYkc5algyWmhhV3gxY21VNk9tZ3pOelxcXG5VMVpEUmpPR1k1WmpFMU5qQXczQTFDWTI5eVpUbzZjSFJ5T2pwa2NtOXdYMmx1WDNCc1lXTmxQR0ZzYkc5ak9qcHpkSEpwYm1jNk9sTjBcXFxuY21sdVp6NDZPbWcyTlRKbU1UQXhaRGRrTm1NelpUZGkzUTAyZFc1cFkyOWtaVjlpYVdScE9qcGphR0Z5WDJSaGRHRTZPbUpwWkdsZlkyXFxcbnhoYzNNNk9taGxOek5pTjJFNE5HVXdNamMwT1RsaTNnMWhZMjl5WlRvNmNIUnlPanBrY205d1gybHVYM0JzWVdObFBHRnVlV2h2ZHpvNlxcXG5kM0poY0hCbGNqbzZUV1Z6YzJGblpVVnljbTl5UEdGc2JHOWpPanB6ZEhKcGJtYzZPbE4wY21sdVp6NCtPanBvTVRJMlpEYzRabUZsTm1cXFxuRTNaRE16Tk44Tk8yRnVlV2h2ZHpvNlpYSnliM0k2T2p4cGJYQnNJR0Z1ZVdodmR6bzZSWEp5YjNJK09qcHRjMmM2T21obE9XVmhPV0k0XFxcbllqUmtZakl4T0RSaTRBME5YMTl5Wkd4ZlpHVmhiR3h2WStFTk5tUnNiV0ZzYkc5ak9qcGtiRzFoYkd4dll6bzZWSEpsWlVOb2RXNXJPalxcXG5wdVpYaDBPanBvTlRrek9UazJNVFl3TURGaU5qVXhOZUlOTm1Sc2JXRnNiRzlqT2pwa2JHMWhiR3h2WXpvNlZISmxaVU5vZFc1ck9qcHdcXFxuY21WMk9qcG9ObVUxWmpWbE1tRTVaakZsT1RsaVplTU5QbU52Y21VNk9uQmhibWxqT2pwd1lXNXBZMTlwYm1adk9qcFFZVzVwWTBsdVptXFxcbjg2T20xbGMzTmhaMlU2T21oaE9XRmtNakZsWlRKaVpEbG1NRFV3NUEwL1kyOXlaVG82Y0dGdWFXTTZPbkJoYm1salgybHVabTg2T2xCaFxcXG5ibWxqU1c1bWJ6bzZiRzlqWVhScGIyNDZPbWhrTlRBM05XSXpNamMxWkdJME5HVXk1UTFCWTI5eVpUbzZjR0Z1YVdNNk9uQmhibWxqWDJcXFxubHVabTg2T2xCaGJtbGpTVzVtYnpvNlkyRnVYM1Z1ZDJsdVpEbzZhR0l6TnpFeE1ERmhOams0TjJZMU5tUG1EUzVqYjNKbE9qcGxjbkp2XFxcbmNqbzZSWEp5YjNJNk9uUjVjR1ZmYVdRNk9tZ3hNR001WmpnM1pUTm1aV1F4WWpJejV3MHVZMjl5WlRvNlpYSnliM0k2T2tWeWNtOXlPalxcXG5wMGVYQmxYMmxrT2pwb05URTNOVGcwTUdabVlqZ3haVFptTWVnTkxtTnZjbVU2T21WeWNtOXlPanBGY25KdmNqbzZkSGx3WlY5cFpEbzZcXFxuYURVNU9HUTRaR1ZoTmpGaVpHVTJOR0xwRFM1amIzSmxPanBsY25KdmNqbzZSWEp5YjNJNk9uUjVjR1ZmYVdRNk9tZzJNbVZoT1Raa1l6XFxcbkZtT0daak5XWmk2ZzB1WTI5eVpUbzZaWEp5YjNJNk9rVnljbTl5T2pwMGVYQmxYMmxrT2pwb05qYzJZakpoTWpSaU5Ua3lZekZrTWVzTlxcXG5MbU52Y21VNk9tVnljbTl5T2pwRmNuSnZjam82ZEhsd1pWOXBaRG82YURkaFlqa3hNR00zT1dVME5qVXhaV1BzRFM1amIzSmxPanBsY25cXFxuSnZjam82UlhKeWIzSTZPblI1Y0dWZmFXUTZPbWhpWXpRNFlqQmtOalUyT1RVd05tVTM3UTB1WTI5eVpUbzZaWEp5YjNJNk9rVnljbTl5XFxcbk9qcDBlWEJsWDJsa09qcG9Zems0WW1aa05HTmtPRFV5Wm1RMlp1NE5MbU52Y21VNk9tVnljbTl5T2pwRmNuSnZjam82ZEhsd1pWOXBaRFxcXG5vNmFHTmpZalF5TkRZelpqZzNOelptWXpQdkRXazhjMlZ5WkdWZmQyRnpiVjlpYVc1a1oyVnVPanBsY25KdmNqbzZSWEp5YjNJZ1lYTWdcXFxuWTI5eVpUbzZZMjl1ZG1WeWREbzZSbkp2YlR4M1lYTnRYMkpwYm1SblpXNDZPa3B6Vm1Gc2RXVStQam82Wm5KdmJUbzZhR1ptTURRMU5XXFxcbkV6TlRFMU5HTTNaVG53RFR0elpYSmtaVjkzWVhOdFgySnBibVJuWlc0Nk9uTmxjam82VTJWeWFXRnNhWHBsY2pvNmJtVjNPanBvTXpZd1xcXG5PR00xTURNeE1ESTNPV1ZtWS9FTkxtTnZjbVU2T21WeWNtOXlPanBGY25KdmNqbzZkSGx3WlY5cFpEbzZhRGhtWmpCbE5UY3pNR00zTlRcXFxuVmlPR1R5RFM1amIzSmxPanBsY25KdmNqbzZSWEp5YjNJNk9uUjVjR1ZmYVdRNk9taGxaamhoTldWbU5HRTBNalptTXpJNTh3MDVQRlFnXFxcbllYTWdZMjl5WlRvNlltOXljbTkzT2pwQ2IzSnliM2M4VkQ0K09qcGliM0p5YjNjNk9tZzFZelZrWldRMFl6Z3lPR0l4TkRsazlBMDRQR1xcXG54dlp6bzZUbTl3VEc5bloyVnlJR0Z6SUd4dlp6bzZURzluUGpvNlpXNWhZbXhsWkRvNmFERmpaVEUyTldFMVpHUm1OV1l5TkRmMURURThcXFxuVkNCaGN5QmpiM0psT2pwaGJuazZPa0Z1ZVQ0Nk9uUjVjR1ZmYVdRNk9tZzFNalV5TjJZelptWTJZamRpTWpBNTlnMUZjR0Z5YTJsdVoxXFxcbjlzYjNSZlkyOXlaVG82ZEdoeVpXRmtYM0JoY210bGNqbzZhVzF3T2pwMGFISmxZV1JmZVdsbGJHUTZPbWczTUdKbVlXVXhaRGczTm1WbFxcXG5NV00zOXcwdlpHRjBZVjkxY213Nk9rUmhkR0ZWY213Nk9tMXBiV1ZmZEhsd1pUbzZhRGN4WlRkaFlqRXdOV1kxWkdZellURDREVHgzWVhcXFxuTnRYMkpwYm1SblpXNDZPbU5oYzNRNk9rcHpRMkZ6ZERvNmRXNWphR1ZqYTJWa1gzSmxaam82YURBellUQTVNR1ptTXpJNFptRmhOVEg1XFxcbkRUMTNZWE50WDJKcGJtUm5aVzQ2T21OaGMzUTZPa3B6UTJGemREbzZkVzVqYUdWamEyVmtYMmx1ZEc4Nk9tZ3dOelk1TXpjNU1XUTFZV1xcXG5RMk1tWmwrZzFEUEdwelgzTjVjem82VFdGd0lHRnpJR052Y21VNk9tUmxabUYxYkhRNk9rUmxabUYxYkhRK09qcGtaV1poZFd4ME9qcG9cXFxuWW1SbFpHWmlZakU1TUdFMU5qRTRNUHNOUmp4cWMxOXplWE02T2s5aWFtVmpkQ0JoY3lCamIzSmxPanBrWldaaGRXeDBPanBFWldaaGRXXFxcbngwUGpvNlpHVm1ZWFZzZERvNmFHVXdaR1kxTlRVeFpUTTFaVFV6WVREOERZWUJkMkZ6YlY5aWFXNWtaMlZ1T2pwamIyNTJaWEowT2pwcFxcXG5iWEJzY3pvNlBHbHRjR3dnZDJGemJWOWlhVzVrWjJWdU9qcGpiMjUyWlhKME9qcDBjbUZwZEhNNk9rbHVkRzlYWVhOdFFXSnBJR1p2Y2lcXFxuQjNZWE50WDJKcGJtUm5aVzQ2T2twelJYSnliM0krT2pwcGJuUnZYMkZpYVRvNmFHRTRNVEZrWldNeFptWTFNV1U0WXpqOURTZDNZWE50XFxcblgySnBibVJuWlc0Nk9tMWxiVzl5ZVRvNmFHTXhPRFJrWlRNM016QXpOakkzWldMK0RURThWQ0JoY3lCamIzSmxPanBoYm5rNk9rRnVlVFxcXG40Nk9uUjVjR1ZmYVdRNk9tZzNORGMyTkRZeE5XRXpPVFk0WmpoaS93MUJZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBwZEdWeVlYUnZcXFxuY2pvNlNYUmxjbUYwYjNJNk9tSjVYM0psWmpvNmFEZzRaVEk0WkRNMU9HWmtNVGhrTmpHQURqRThWQ0JoY3lCamIzSmxPanBoYm5rNk9rXFxcbkZ1ZVQ0Nk9uUjVjR1ZmYVdRNk9tZ3daV1EwTTJVMU1XSmhaVGczT0dSaGdRNHVZMjl5WlRvNlpYSnliM0k2T2tWeWNtOXlPanAwZVhCbFxcXG5YMmxrT2pwb09HTmxPV0V4Wm1JNFpUTTJaR1ExTklJT0xtTnZjbVU2T21WeWNtOXlPanBGY25KdmNqbzZkSGx3WlY5cFpEbzZhR0ZpTlRcXFxubGhOVE5sWkdaak1HSXdObUtERGpFOFZDQmhjeUJqYjNKbE9qcGhibms2T2tGdWVUNDZPblI1Y0dWZmFXUTZPbWd4WWprNVpERmpNMk13XFxcbk56RXdNelEwaEE0eFBGUWdZWE1nWTI5eVpUbzZZVzU1T2pwQmJuaytPanAwZVhCbFgybGtPanBvWWpZelpEWTFNbVkwWkRnNFpqUmpNWVxcXG5VT01UeFVJR0Z6SUdOdmNtVTZPbUZ1ZVRvNlFXNTVQam82ZEhsd1pWOXBaRG82YUdZME1UTTJORFJsTURReFpXWmxaamFHRGkxemRHUTZcXFxuT25Sb2NtVmhaRG82U1c1dVpYSTZPbkJoY210bGNqbzZhR1psTWpVeVpUQTJaalJsWVdVek5UV0hEaVp6ZEdRNk9uQnliMk5sYzNNNk9tXFxcbkZpYjNKME9qcG9NbUprTWpRME56Qm1OV1UwTldNeE5JZ09FbDlmY25WemRGOXpkR0Z5ZEY5d1lXNXBZNGtPUEdSc2JXRnNiRzlqT2pwa1xcXG5iRzFoYkd4dll6bzZRMmgxYm1zNk9tWmxibU5sY0c5emRGOW9aV0ZrT2pwb1l6YzNPRGMzTXpVMU1qbG1PVGs1TUlvT09HUnNiV0ZzYkdcXFxuOWpPanBrYkcxaGJHeHZZem82UTJoMWJtczZPbTFsYlY5dlptWnpaWFE2T21nNE5qQmtZMk00TkRJd09UQmxZakEzaXc0M1pHeHRZV3hzXFxcbmIyTTZPbVJzYldGc2JHOWpPanBVY21WbFEyaDFibXM2T21Ob2RXNXJPanBvWWpVMU9XSXhOVFk1WWpJNVlUWXdNWXdPU0R4a2JHMWhiR1xcXG54dll6bzZjM2x6T2pwVGVYTjBaVzBnWVhNZ1pHeHRZV3hzYjJNNk9rRnNiRzlqWVhSdmNqNDZPbkpsYldGd09qcG9NV1F6TlRZNFl6YzJcXFxuTm1ZeFl6UXpObzBPVER4a2JHMWhiR3h2WXpvNmMzbHpPanBUZVhOMFpXMGdZWE1nWkd4dFlXeHNiMk02T2tGc2JHOWpZWFJ2Y2o0Nk9tXFxcblp5WldWZmNHRnlkRG82YUdGbVpEVXlZVEprT0dJNVkyUmpZaktPRGtjOFpHeHRZV3hzYjJNNk9uTjVjem82VTNsemRHVnRJR0Z6SUdSc1xcXG5iV0ZzYkc5ak9qcEJiR3h2WTJGMGIzSStPanBtY21WbE9qcG9NRGt5TkRNelpHTTRaVFJrTURSak9JOE9VenhrYkcxaGJHeHZZem82YzNcXFxubHpPanBUZVhOMFpXMGdZWE1nWkd4dFlXeHNiMk02T2tGc2JHOWpZWFJ2Y2o0Nk9tTmhibDl5Wld4bFlYTmxYM0JoY25RNk9taG1OakJqXFxcbk5ERmpZbU5pTkdVMll6WTBrQTVTUEdSc2JXRnNiRzlqT2pwemVYTTZPbE41YzNSbGJTQmhjeUJrYkcxaGJHeHZZem82UVd4c2IyTmhkR1xcXG45eVBqbzZZV3hzYjJOaGRHVnpYM3BsY205ek9qcG9aRFUxWlRsa09XTXdPVFkzTldNME9KRU9URHhrYkcxaGJHeHZZem82YzNsek9qcFRcXFxuZVhOMFpXMGdZWE1nWkd4dFlXeHNiMk02T2tGc2JHOWpZWFJ2Y2o0Nk9uQmhaMlZmYzJsNlpUbzZhREpqWWpabFlUQXhNemxoWkdObE56XFxcbkdTRGpFOFZDQmhjeUJqYjNKbE9qcGhibms2T2tGdWVUNDZPblI1Y0dWZmFXUTZPbWhqTVdVd01qSXlZVGxqWkdJNVlqSTVrdzV5WTI5eVxcXG5aVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUENacGJtUmxlRzFoY0RvNmJXRndPanBKYm1SbGVFMWhjRHhoYkd4dll6bzZjM1J5YVdcXFxuNW5PanBUZEhKcGJtY3NZV3hzYjJNNk9uTjBjbWx1WnpvNlUzUnlhVzVuUGo0Nk9tZ3laREUzTWpjNFpHSTBNVGd5WkRJeGxBNkRBV052XFxcbmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d2JHRmpaVHh6WlhKa1pUbzZaR1U2T21sdGNHeHpPam84YVcxd2JDQnpaWEprWlRvNlpHVTZPa1xcXG5SbGMyVnlhV0ZzYVhwbElHWnZjaUIxTXpJK09qcGtaWE5sY21saGJHbDZaVG82VUhKcGJXbDBhWFpsVm1semFYUnZjajQ2T21nMU1EaGpcXFxuWTJWbE5XUTRZakkyTVRSbWxRNHhZMjl5WlRvNmNIUnlPanBrY205d1gybHVYM0JzWVdObFBHSnZiMncrT2pwb1lUZG1NekptTm1ReE0yXFxcbk0wTURObE1KWU9MbU52Y21VNk9tVnljbTl5T2pwRmNuSnZjam82Y0hKdmRtbGtaVG82YURBM09USXlZek0zTVdFek9XUXpOakdYRGk1alxcXG5iM0psT2pwbGNuSnZjam82UlhKeWIzSTZPbkJ5YjNacFpHVTZPbWd3WmpobE56TmpNalJoTjJKa01ERTBtQTVEWTI5eVpUbzZjSFJ5T2pcXFxucGtjbTl3WDJsdVgzQnNZV05sUENaM1lYTnRYMkpwYm1SblpXNDZPa3B6Vm1Gc2RXVStPanBvTVdabVpqUTBOall6WkdReU56RTJPSmtPXFxcblBXTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR4amIzSmxPanBtYlhRNk9rVnljbTl5UGpvNmFEZ3lOell3WWpJNE5ERXhPRFxcXG5Bek1UaWFEa2RqYjNKbE9qcHdkSEk2T21SeWIzQmZhVzVmY0d4aFkyVThKbTExZENCaGJHeHZZem82YzNSeWFXNW5PanBUZEhKcGJtYytcXFxuT2pwb1pEWXlOMkUzWVdKbFpUTmxOVGhqTlpzT01tTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR4MWMybDZaVDQ2T21nMU16XFxcblkxT0RNeE9HRXhPV1F5WldabW5BNDlZMjl5WlRvNmNIUnlPanBrY205d1gybHVYM0JzWVdObFBHTnZjbVU2T21adGREbzZSWEp5YjNJK1xcXG5PanBvTkdZek9UbGlaV015TkdaaU1qYzRZWjBPTG1OdmNtVTZPbVZ5Y205eU9qcEZjbkp2Y2pvNmNISnZkbWxrWlRvNmFETXdZbUV6TjJcXFxuTTBZVFprWlRVMU0yS2VEanRqYjNKbE9qcHdkSEk2T21SeWIzQmZhVzVmY0d4aFkyVThiRzluT2pwT2IzQk1iMmRuWlhJK09qcG9PREJrXFxcbk5XWXdNekl3TUdFMk5EaGtZWjhPTkR4c2IyYzZPazV2Y0V4dloyZGxjaUJoY3lCc2IyYzZPa3h2Wno0Nk9teHZaem82YURFNU9XWXhNRFxcXG5Oak1Ea3pOV1psWXppZ0RqWThiRzluT2pwT2IzQk1iMmRuWlhJZ1lYTWdiRzluT2pwTWIyYytPanBtYkhWemFEbzZhR1poT0dNNE1qVTNcXFxuTVdaa05UZzFZaldoRGpKamIzSmxPanB3ZEhJNk9tUnliM0JmYVc1ZmNHeGhZMlU4Sm1KdmIydytPanBvWTJRek5UQmxNRGRoT0dNM1lUXFxcbkU0TktJT01tTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR4MWMybDZaVDQ2T21nNU5HTTFNV1JrWldJd1ptVTJORE00b3c1K1xcXG5QSEJoY210cGJtZGZiRzkwWDJOdmNtVTZPblJvY21WaFpGOXdZWEpyWlhJNk9tbHRjRG82VkdoeVpXRmtVR0Z5YTJWeUlHRnpJSEJoY21cXFxudHBibWRmYkc5MFgyTnZjbVU2T25Sb2NtVmhaRjl3WVhKclpYSTZPbFJvY21WaFpGQmhjbXRsY2xRK09qcHVaWGM2T21nME1ETTROelEwXFxcblltWm1NakU0TTJJeHBBNUpZMjl5WlRvNmNIUnlPanBrY205d1gybHVYM0JzWVdObFBDWmpiM0psT2pwaGJHeHZZem82YkdGNWIzVjBPalxcXG5wTVlYbHZkWFErT2pwb1pqazJPVE0xTUdSaFlXTTJNVFkyTktVT00yTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR3bWRYTnBcXFxuZW1VK09qcG9PREpoT0RFMVpXTXpNMkkxT1RBMVk2WU9QV052Y21VNk9uQjBjam82WkhKdmNGOXBibDl3YkdGalpUeGpiM0psT2pwbWJYXFxcblE2T2tWeWNtOXlQam82YUdKalltRXdPVFUwTm1KaVpHRTNNMmFuRGtnOFlXeHNiMk02T25abFl6bzZWbVZqUEZRc1FUNGdZWE1nWTI5eVxcXG5aVG82YjNCek9qcGtjbTl3T2pwRWNtOXdQam82WkhKdmNEbzZhRE0wTmpOaE1qUXdaRFl4TlRSbVpUV29Eak5qYjNKbE9qcHdkSEk2T21cXFxuUnliM0JmYVc1ZmNHeGhZMlU4Sm5WemFYcGxQam82YUdGa1ptUm1PR015T0dJNVpHVTROMmFwRGtnOFlXeHNiMk02T25abFl6bzZWbVZqXFxcblBGUXNRVDRnWVhNZ1kyOXlaVG82YjNCek9qcGtjbTl3T2pwRWNtOXdQam82WkhKdmNEbzZhREppWVdFelpqTTNNekJtTTJJeFpEV3FEalxcXG5GamIzSmxPanB3ZEhJNk9tUnliM0JmYVc1ZmNHeGhZMlU4WW05dmJENDZPbWhtTkdReE9UZzJZV1kyTjJFek9EQXdxdzR5WTI5eVpUbzZcXFxuY0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEhWemFYcGxQam82YURZMFltWmxNVFF4WmpWaU1tVXdOakNzRGoxamIzSmxPanB3ZEhJNk9tXFxcblJ5YjNCZmFXNWZjR3hoWTJVOFkyOXlaVG82Wm0xME9qcEZjbkp2Y2o0Nk9taG1NMkU0TUdSbFpEUTVOelpsT0RRM3JRNUlQR0ZzYkc5alxcXG5PanAyWldNNk9sWmxZenhVTEVFK0lHRnpJR052Y21VNk9tOXdjem82WkhKdmNEbzZSSEp2Y0Q0Nk9tUnliM0E2T21oak9UaGpOMk14TTJcXFxuTTJNalEyWkRZeHJnNHdZMjl5WlRvNmNIUnlPanBrY205d1gybHVYM0JzWVdObFBDWjFPRDQ2T21oa1pUZGxPVGszWW1Ga01UVXlOelV5XFxcbnJ3NUlQR0ZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrSUdGeklHTnZjbVU2T205d2N6bzZaSEp2Y0RvNlJISnZjRDQ2T21SeWIzQTZPbVxcXG5nMVpXSm1abUl5TjJWbE5XVXhOekUxc0E1OVkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUENZb2MyVnlaR1U2T2w5ZmNISnBcXFxuZG1GMFpUbzZaR1U2T21OdmJuUmxiblE2T2tOdmJuUmxiblFzYzJWeVpHVTZPbDlmY0hKcGRtRjBaVG82WkdVNk9tTnZiblJsYm5RNk9rXFxcbk52Ym5SbGJuUXBQam82YUdJeU0yWmtNakJqWmpobU1tVTFPV0t4RGpOamIzSmxPanB3ZEhJNk9tUnliM0JmYVc1ZmNHeGhZMlU4Sm5WelxcXG5hWHBsUGpvNmFETXdOV0kzWVRVek5qQTBNRE13WmppeURpNWpiM0psT2pwbGNuSnZjam82UlhKeWIzSTZPbkJ5YjNacFpHVTZPbWcwWkRcXFxuaG1OR1kzT0dVMFlUWmhNbVkzc3c1cFkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUENadGRYUWdjM1JrT2pwcGJ6bzZWM0pwXFxcbmRHVTZPbmR5YVhSbFgyWnRkRG82UVdSaGNIUmxjanhoYkd4dll6bzZkbVZqT2pwV1pXTThkVGcrUGo0Nk9tZ3dPRFEyTkdWak5EVTVOVFxcXG5jNU5UUTV0QTR4WTI5eVpUbzZjSFJ5T2pwa2NtOXdYMmx1WDNCc1lXTmxQR0p2YjJ3K09qcG9ZV1F3WTJRelpHUXdNbUk0WmpOaVliVU9cXFxuTDJOdmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d2JHRmpaVHdvS1Q0Nk9tZzNNbUUyWVdRNVlqVTRZVEZsT1RBNHRnNHNjM1JrT2pwbWN6XFxcbm82VDNCbGJrOXdkR2x2Ym5NNk9tNWxkem82YURReFpUQTNaREl6TXprMlpESXhZemUzRGtGemRHUTZPbk41Y3pvNmQyRnpiVG82ZEdoeVxcXG5aV0ZrWDNCaGNtdHBibWM2T2xCaGNtdGxjam82ZFc1d1lYSnJPanBvTWpReE9UZGlZall6WkRZME5UUmhPTGdPTW1OdmNtVTZPbkIwY2pcXFxubzZaSEp2Y0Y5cGJsOXdiR0ZqWlR4MWMybDZaVDQ2T21oalpUZGtaalF3TVRFMk5ETXpOR001dVE0OVkyOXlaVG82Y0hSeU9qcGtjbTl3XFxcblgybHVYM0JzWVdObFBHTnZjbVU2T21adGREbzZSWEp5YjNJK09qcG9NekF4TnpZM1pEQmtOamxsTkRRMk5yb09iMk52Y21VNk9uQjBjalxcXG5vNlpISnZjRjlwYmw5d2JHRmpaVHdtWTI5eVpUbzZhWFJsY2pvNllXUmhjSFJsY25NNk9tTnZjR2xsWkRvNlEyOXdhV1ZrUEdOdmNtVTZcXFxuT25Oc2FXTmxPanBwZEdWeU9qcEpkR1Z5UEhVNFBqNCtPanBvT0RkbU5ESmxOekpsTkRreE5XRTJaTHNPUFdOdmNtVTZPbkIwY2pvNlpIXFxcbkp2Y0Y5cGJsOXdiR0ZqWlR4amIzSmxPanBtYlhRNk9rVnljbTl5UGpvNmFETm1ORE14WVdNeE9UaGlNV0ZrTXpnQTc0Q0FnQUFKY0hKdlxcXG5aSFZqWlhKekFnaHNZVzVuZFdGblpRRUVVblZ6ZEFBTWNISnZZMlZ6YzJWa0xXSjVBd1Z5ZFhOMFl4MHhMamN4TGpFZ0tHVmlNall5T1RcXFxuWmlOU0F5TURJekxUQTRMVEF6S1FaM1lXeHlkWE1HTUM0eE9TNHdESGRoYzIwdFltbHVaR2RsYmdZd0xqSXVPRFlBcklDQWdBQVBkR0Z5XFxcbloyVjBYMlpsWVhSMWNtVnpBaXNQYlhWMFlXSnNaUzFuYkc5aVlXeHpLd2h6YVdkdUxXVjRkQT09XFxcblwiLFxuICApO1xuICBjb25zdCB3YXNtTW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh3YXNtQnl0ZXMpO1xuICByZXR1cm4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKHdhc21Nb2R1bGUsIGltcG9ydHMpO1xufVxuXG5mdW5jdGlvbiBiYXNlNjRkZWNvZGUoYjY0KSB7XG4gIGNvbnN0IGJpblN0cmluZyA9IGF0b2IoYjY0KTtcbiAgY29uc3Qgc2l6ZSA9IGJpblN0cmluZy5sZW5ndGg7XG4gIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgYnl0ZXNbaV0gPSBiaW5TdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgfVxuICByZXR1cm4gYnl0ZXM7XG59XG4iLCAiaW1wb3J0IHtcbiAgZXNidWlsZCxcbiAgZXh0bmFtZSxcbiAgZnJvbUZpbGVVcmwsXG4gIEltcG9ydE1hcCxcbiAgSlNPTkMsXG4gIHRvRmlsZVVybCxcbn0gZnJvbSBcIi4uL2RlcHMudHNcIjtcbmltcG9ydCB7IE1lZGlhVHlwZSB9IGZyb20gXCIuL2Rlbm8udHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMb2FkZXIge1xuICByZXNvbHZlKHNwZWNpZmllcjogVVJMKTogUHJvbWlzZTxMb2FkZXJSZXNvbHV0aW9uPjtcbiAgbG9hZEVzbShzcGVjaWZpZXI6IFVSTCk6IFByb21pc2U8ZXNidWlsZC5PbkxvYWRSZXN1bHQ+O1xuXG4gIHBhY2thZ2VJZEZyb21OYW1lSW5QYWNrYWdlPyhuYW1lOiBzdHJpbmcsIHBhcmVudFBhY2thZ2VJZDogc3RyaW5nKTogc3RyaW5nO1xuICBub2RlTW9kdWxlc0RpckZvclBhY2thZ2U/KG5wbVBhY2thZ2VJZD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPjtcbn1cblxuZXhwb3J0IHR5cGUgTG9hZGVyUmVzb2x1dGlvbiA9XG4gIHwgTG9hZGVyUmVzb2x1dGlvbkVzbVxuICB8IExvYWRlclJlc29sdXRpb25OcG1cbiAgfCBMb2FkZXJSZXNvbHV0aW9uTm9kZTtcblxuZXhwb3J0IGludGVyZmFjZSBMb2FkZXJSZXNvbHV0aW9uRXNtIHtcbiAga2luZDogXCJlc21cIjtcbiAgc3BlY2lmaWVyOiBVUkw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGVyUmVzb2x1dGlvbk5wbSB7XG4gIGtpbmQ6IFwibnBtXCI7XG4gIHBhY2thZ2VJZDogc3RyaW5nO1xuICBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGVyUmVzb2x1dGlvbk5vZGUge1xuICBraW5kOiBcIm5vZGVcIjtcbiAgcGF0aDogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVkaWFUeXBlVG9Mb2FkZXIobWVkaWFUeXBlOiBNZWRpYVR5cGUpOiBlc2J1aWxkLkxvYWRlciB7XG4gIHN3aXRjaCAobWVkaWFUeXBlKSB7XG4gICAgY2FzZSBcIkphdmFTY3JpcHRcIjpcbiAgICBjYXNlIFwiTWpzXCI6XG4gICAgICByZXR1cm4gXCJqc1wiO1xuICAgIGNhc2UgXCJKU1hcIjpcbiAgICAgIHJldHVybiBcImpzeFwiO1xuICAgIGNhc2UgXCJUeXBlU2NyaXB0XCI6XG4gICAgY2FzZSBcIk10c1wiOlxuICAgICAgcmV0dXJuIFwidHNcIjtcbiAgICBjYXNlIFwiVFNYXCI6XG4gICAgICByZXR1cm4gXCJ0c3hcIjtcbiAgICBjYXNlIFwiSnNvblwiOlxuICAgICAgcmV0dXJuIFwianNvblwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCBtZWRpYSB0eXBlICR7bWVkaWFUeXBlfS5gKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVzYnVpbGRSZXNvbHV0aW9uIHtcbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybFRvRXNidWlsZFJlc29sdXRpb24odXJsOiBVUkwpOiBFc2J1aWxkUmVzb2x1dGlvbiB7XG4gIGlmICh1cmwucHJvdG9jb2wgPT09IFwiZmlsZTpcIikge1xuICAgIHJldHVybiB7IHBhdGg6IGZyb21GaWxlVXJsKHVybCksIG5hbWVzcGFjZTogXCJmaWxlXCIgfTtcbiAgfVxuXG4gIGNvbnN0IG5hbWVzcGFjZSA9IHVybC5wcm90b2NvbC5zbGljZSgwLCAtMSk7XG4gIGNvbnN0IHBhdGggPSB1cmwuaHJlZi5zbGljZShuYW1lc3BhY2UubGVuZ3RoICsgMSk7XG4gIHJldHVybiB7IHBhdGgsIG5hbWVzcGFjZSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNidWlsZFJlc29sdXRpb25Ub1VSTChzcGVjaWZpZXI6IEVzYnVpbGRSZXNvbHV0aW9uKTogVVJMIHtcbiAgaWYgKHNwZWNpZmllci5uYW1lc3BhY2UgPT09IFwiZmlsZVwiKSB7XG4gICAgcmV0dXJuIHRvRmlsZVVybChzcGVjaWZpZXIucGF0aCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFVSTChgJHtzcGVjaWZpZXIubmFtZXNwYWNlfToke3NwZWNpZmllci5wYXRofWApO1xufVxuXG5pbnRlcmZhY2UgRGVub0NvbmZpZyB7XG4gIGltcG9ydHM/OiB1bmtub3duO1xuICBzY29wZXM/OiB1bmtub3duO1xuICBsb2NrPzogYm9vbGVhbiB8IHN0cmluZztcbiAgaW1wb3J0TWFwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZERlbm9Db25maWcocGF0aDogc3RyaW5nKTogUHJvbWlzZTxEZW5vQ29uZmlnPiB7XG4gIGNvbnN0IGZpbGUgPSBhd2FpdCBEZW5vLnJlYWRUZXh0RmlsZShwYXRoKTtcbiAgY29uc3QgcmVzID0gSlNPTkMucGFyc2UoZmlsZSk7XG4gIGlmICh0eXBlb2YgcmVzICE9PSBcIm9iamVjdFwiIHx8IHJlcyA9PT0gbnVsbCB8fCBBcnJheS5pc0FycmF5KHJlcykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYERlbm8gY29uZmlnIGF0ICR7cGF0aH0gbXVzdCBiZSBhbiBvYmplY3RgKTtcbiAgfVxuICBpZiAoXG4gICAgXCJpbXBvcnRzXCIgaW4gcmVzICYmXG4gICAgKHR5cGVvZiByZXMuaW1wb3J0cyAhPT0gXCJvYmplY3RcIiB8fCByZXMuaW1wb3J0cyA9PT0gbnVsbCB8fFxuICAgICAgQXJyYXkuaXNBcnJheShyZXMuaW1wb3J0cykpXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGVubyBjb25maWcgYXQgJHtwYXRofSBoYXMgaW52YWxpZCBcImltcG9ydHNcIiBrZXlgKTtcbiAgfVxuICBpZiAoXG4gICAgXCJzY29wZXNcIiBpbiByZXMgJiZcbiAgICAodHlwZW9mIHJlcy5zY29wZXMgIT09IFwib2JqZWN0XCIgfHwgcmVzLnNjb3BlcyA9PT0gbnVsbCB8fFxuICAgICAgQXJyYXkuaXNBcnJheShyZXMuc2NvcGVzKSlcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEZW5vIGNvbmZpZyBhdCAke3BhdGh9IGhhcyBpbnZhbGlkIFwic2NvcGVzXCIga2V5YCk7XG4gIH1cbiAgaWYgKFxuICAgIFwibG9ja1wiIGluIHJlcyAmJlxuICAgIHR5cGVvZiByZXMubG9jayAhPT0gXCJib29sZWFuXCIgJiYgdHlwZW9mIHJlcy5sb2NrICE9PSBcInN0cmluZ1wiXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGVubyBjb25maWcgYXQgJHtwYXRofSBoYXMgaW52YWxpZCBcImxvY2tcIiBrZXlgKTtcbiAgfVxuICBpZiAoXCJpbXBvcnRNYXBcIiBpbiByZXMgJiYgdHlwZW9mIHJlcy5pbXBvcnRNYXAgIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYERlbm8gY29uZmlnIGF0ICR7cGF0aH0gaGFzIGludmFsaWQgXCJpbXBvcnRNYXBcIiBrZXlgKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwQ29udGVudFR5cGUoXG4gIHNwZWNpZmllcjogVVJMLFxuICBjb250ZW50VHlwZTogc3RyaW5nIHwgbnVsbCxcbik6IE1lZGlhVHlwZSB7XG4gIGlmIChjb250ZW50VHlwZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGNvbnRlbnRUeXBlcyA9IGNvbnRlbnRUeXBlLnNwbGl0KFwiO1wiKTtcbiAgICBjb25zdCBtZWRpYVR5cGUgPSBjb250ZW50VHlwZXNbMF0udG9Mb3dlckNhc2UoKTtcbiAgICBzd2l0Y2ggKG1lZGlhVHlwZSkge1xuICAgICAgY2FzZSBcImFwcGxpY2F0aW9uL3R5cGVzY3JpcHRcIjpcbiAgICAgIGNhc2UgXCJ0ZXh0L3R5cGVzY3JpcHRcIjpcbiAgICAgIGNhc2UgXCJ2aWRlby92bmQuZGxuYS5tcGVnLXR0c1wiOlxuICAgICAgY2FzZSBcInZpZGVvL21wMnRcIjpcbiAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi94LXR5cGVzY3JpcHRcIjpcbiAgICAgICAgcmV0dXJuIG1hcEpzTGlrZUV4dGVuc2lvbihzcGVjaWZpZXIsIFwiVHlwZVNjcmlwdFwiKTtcbiAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCI6XG4gICAgICBjYXNlIFwidGV4dC9qYXZhc2NyaXB0XCI6XG4gICAgICBjYXNlIFwiYXBwbGljYXRpb24vZWNtYXNjcmlwdFwiOlxuICAgICAgY2FzZSBcInRleHQvZWNtYXNjcmlwdFwiOlxuICAgICAgY2FzZSBcImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdFwiOlxuICAgICAgY2FzZSBcImFwcGxpY2F0aW9uL25vZGVcIjpcbiAgICAgICAgcmV0dXJuIG1hcEpzTGlrZUV4dGVuc2lvbihzcGVjaWZpZXIsIFwiSmF2YVNjcmlwdFwiKTtcbiAgICAgIGNhc2UgXCJ0ZXh0L2pzeFwiOlxuICAgICAgICByZXR1cm4gXCJKU1hcIjtcbiAgICAgIGNhc2UgXCJ0ZXh0L3RzeFwiOlxuICAgICAgICByZXR1cm4gXCJUU1hcIjtcbiAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi9qc29uXCI6XG4gICAgICBjYXNlIFwidGV4dC9qc29uXCI6XG4gICAgICAgIHJldHVybiBcIkpzb25cIjtcbiAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi93YXNtXCI6XG4gICAgICAgIHJldHVybiBcIldhc21cIjtcbiAgICAgIGNhc2UgXCJ0ZXh0L3BsYWluXCI6XG4gICAgICBjYXNlIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI6XG4gICAgICAgIHJldHVybiBtZWRpYVR5cGVGcm9tU3BlY2lmaWVyKHNwZWNpZmllcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gXCJVbmtub3duXCI7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBtZWRpYVR5cGVGcm9tU3BlY2lmaWVyKHNwZWNpZmllcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFwSnNMaWtlRXh0ZW5zaW9uKFxuICBzcGVjaWZpZXI6IFVSTCxcbiAgZGVmYXVsdFR5cGU6IE1lZGlhVHlwZSxcbik6IE1lZGlhVHlwZSB7XG4gIGNvbnN0IHBhdGggPSBzcGVjaWZpZXIucGF0aG5hbWU7XG4gIHN3aXRjaCAoZXh0bmFtZShwYXRoKSkge1xuICAgIGNhc2UgXCIuanN4XCI6XG4gICAgICByZXR1cm4gXCJKU1hcIjtcbiAgICBjYXNlIFwiLm1qc1wiOlxuICAgICAgcmV0dXJuIFwiTWpzXCI7XG4gICAgY2FzZSBcIi5janNcIjpcbiAgICAgIHJldHVybiBcIkNqc1wiO1xuICAgIGNhc2UgXCIudHN4XCI6XG4gICAgICByZXR1cm4gXCJUU1hcIjtcbiAgICBjYXNlIFwiLnRzXCI6XG4gICAgICBpZiAocGF0aC5lbmRzV2l0aChcIi5kLnRzXCIpKSB7XG4gICAgICAgIHJldHVybiBcIkR0c1wiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRUeXBlO1xuICAgICAgfVxuICAgIGNhc2UgXCIubXRzXCI6IHtcbiAgICAgIGlmIChwYXRoLmVuZHNXaXRoKFwiLmQubXRzXCIpKSB7XG4gICAgICAgIHJldHVybiBcIkRtdHNcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VHlwZSA9PSBcIkphdmFTY3JpcHRcIiA/IFwiTWpzXCIgOiBcIk10c1wiO1xuICAgICAgfVxuICAgIH1cbiAgICBjYXNlIFwiLmN0c1wiOiB7XG4gICAgICBpZiAocGF0aC5lbmRzV2l0aChcIi5kLmN0c1wiKSkge1xuICAgICAgICByZXR1cm4gXCJEY3RzXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFR5cGUgPT0gXCJKYXZhU2NyaXB0XCIgPyBcIkNqc1wiIDogXCJDdHNcIjtcbiAgICAgIH1cbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkZWZhdWx0VHlwZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZWRpYVR5cGVGcm9tU3BlY2lmaWVyKHNwZWNpZmllcjogVVJMKTogTWVkaWFUeXBlIHtcbiAgY29uc3QgcGF0aCA9IHNwZWNpZmllci5wYXRobmFtZTtcbiAgc3dpdGNoIChleHRuYW1lKHBhdGgpKSB7XG4gICAgY2FzZSBcIlwiOlxuICAgICAgaWYgKHBhdGguZW5kc1dpdGgoXCIvLnRzYnVpbGRpbmZvXCIpKSB7XG4gICAgICAgIHJldHVybiBcIlRzQnVpbGRJbmZvXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gXCJVbmtub3duXCI7XG4gICAgICB9XG4gICAgY2FzZSBcIi50c1wiOlxuICAgICAgaWYgKHBhdGguZW5kc1dpdGgoXCIuZC50c1wiKSkge1xuICAgICAgICByZXR1cm4gXCJEdHNcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBcIlR5cGVTY3JpcHRcIjtcbiAgICAgIH1cbiAgICBjYXNlIFwiLm10c1wiOlxuICAgICAgaWYgKHBhdGguZW5kc1dpdGgoXCIuZC5tdHNcIikpIHtcbiAgICAgICAgcmV0dXJuIFwiRG10c1wiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFwiTXRzXCI7XG4gICAgICB9XG4gICAgY2FzZSBcIi5jdHNcIjpcbiAgICAgIGlmIChwYXRoLmVuZHNXaXRoKFwiLmQuY3RzXCIpKSB7XG4gICAgICAgIHJldHVybiBcIkRjdHNcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBcIkN0c1wiO1xuICAgICAgfVxuICAgIGNhc2UgXCIudHN4XCI6XG4gICAgICByZXR1cm4gXCJUU1hcIjtcbiAgICBjYXNlIFwiLmpzXCI6XG4gICAgICByZXR1cm4gXCJKYXZhU2NyaXB0XCI7XG4gICAgY2FzZSBcIi5qc3hcIjpcbiAgICAgIHJldHVybiBcIkpTWFwiO1xuICAgIGNhc2UgXCIubWpzXCI6XG4gICAgICByZXR1cm4gXCJNanNcIjtcbiAgICBjYXNlIFwiLmNqc1wiOlxuICAgICAgcmV0dXJuIFwiQ2pzXCI7XG4gICAgY2FzZSBcIi5qc29uXCI6XG4gICAgICByZXR1cm4gXCJKc29uXCI7XG4gICAgY2FzZSBcIi53YXNtXCI6XG4gICAgICByZXR1cm4gXCJXYXNtXCI7XG4gICAgY2FzZSBcIi50c2J1aWxkaW5mb1wiOlxuICAgICAgcmV0dXJuIFwiVHNCdWlsZEluZm9cIjtcbiAgICBjYXNlIFwiLm1hcFwiOlxuICAgICAgcmV0dXJuIFwiU291cmNlTWFwXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlVua25vd25cIjtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5wbVNwZWNpZmllciB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgcGF0aDogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTnBtU3BlY2lmaWVyKHNwZWNpZmllcjogVVJMKTogTnBtU3BlY2lmaWVyIHtcbiAgaWYgKHNwZWNpZmllci5wcm90b2NvbCAhPT0gXCJucG06XCIpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbnBtIHNwZWNpZmllclwiKTtcbiAgY29uc3QgcGF0aCA9IHNwZWNpZmllci5wYXRobmFtZTtcbiAgY29uc3Qgc3RhcnRJbmRleCA9IHBhdGhbMF0gPT09IFwiL1wiID8gMSA6IDA7XG4gIGxldCBwYXRoU3RhcnRJbmRleDtcbiAgbGV0IHZlcnNpb25TdGFydEluZGV4O1xuICBpZiAocGF0aFtzdGFydEluZGV4XSA9PT0gXCJAXCIpIHtcbiAgICBjb25zdCBmaXJzdFNsYXNoID0gcGF0aC5pbmRleE9mKFwiL1wiLCBzdGFydEluZGV4KTtcbiAgICBpZiAoZmlyc3RTbGFzaCA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBucG0gc3BlY2lmaWVyOiAke3NwZWNpZmllcn1gKTtcbiAgICB9XG4gICAgcGF0aFN0YXJ0SW5kZXggPSBwYXRoLmluZGV4T2YoXCIvXCIsIGZpcnN0U2xhc2ggKyAxKTtcbiAgICB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGguaW5kZXhPZihcIkBcIiwgZmlyc3RTbGFzaCArIDEpO1xuICB9IGVsc2Uge1xuICAgIHBhdGhTdGFydEluZGV4ID0gcGF0aC5pbmRleE9mKFwiL1wiLCBzdGFydEluZGV4KTtcbiAgICB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGguaW5kZXhPZihcIkBcIiwgc3RhcnRJbmRleCk7XG4gIH1cblxuICBpZiAocGF0aFN0YXJ0SW5kZXggPT09IC0xKSBwYXRoU3RhcnRJbmRleCA9IHBhdGgubGVuZ3RoO1xuICBpZiAodmVyc2lvblN0YXJ0SW5kZXggPT09IC0xKSB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGgubGVuZ3RoO1xuXG4gIGlmICh2ZXJzaW9uU3RhcnRJbmRleCA+IHBhdGhTdGFydEluZGV4KSB7XG4gICAgdmVyc2lvblN0YXJ0SW5kZXggPSBwYXRoU3RhcnRJbmRleDtcbiAgfVxuXG4gIGlmIChzdGFydEluZGV4ID09PSB2ZXJzaW9uU3RhcnRJbmRleCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBucG0gc3BlY2lmaWVyOiAke3NwZWNpZmllcn1gKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogcGF0aC5zbGljZShzdGFydEluZGV4LCB2ZXJzaW9uU3RhcnRJbmRleCksXG4gICAgdmVyc2lvbjogdmVyc2lvblN0YXJ0SW5kZXggPT09IHBhdGhTdGFydEluZGV4XG4gICAgICA/IG51bGxcbiAgICAgIDogcGF0aC5zbGljZSh2ZXJzaW9uU3RhcnRJbmRleCArIDEsIHBhdGhTdGFydEluZGV4KSxcbiAgICBwYXRoOiBwYXRoU3RhcnRJbmRleCA9PT0gcGF0aC5sZW5ndGggPyBudWxsIDogcGF0aC5zbGljZShwYXRoU3RhcnRJbmRleCksXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNyU3BlY2lmaWVyIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICBwYXRoOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VKc3JTcGVjaWZpZXIoc3BlY2lmaWVyOiBVUkwpOiBKc3JTcGVjaWZpZXIge1xuICBpZiAoc3BlY2lmaWVyLnByb3RvY29sICE9PSBcImpzcjpcIikgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBqc3Igc3BlY2lmaWVyXCIpO1xuICBjb25zdCBwYXRoID0gc3BlY2lmaWVyLnBhdGhuYW1lO1xuICBjb25zdCBzdGFydEluZGV4ID0gcGF0aFswXSA9PT0gXCIvXCIgPyAxIDogMDtcbiAgaWYgKHBhdGhbc3RhcnRJbmRleF0gIT09IFwiQFwiKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGpzciBzcGVjaWZpZXI6ICR7c3BlY2lmaWVyfWApO1xuICB9XG4gIGNvbnN0IGZpcnN0U2xhc2ggPSBwYXRoLmluZGV4T2YoXCIvXCIsIHN0YXJ0SW5kZXgpO1xuICBpZiAoZmlyc3RTbGFzaCA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQganNyIHNwZWNpZmllcjogJHtzcGVjaWZpZXJ9YCk7XG4gIH1cbiAgbGV0IHBhdGhTdGFydEluZGV4ID0gcGF0aC5pbmRleE9mKFwiL1wiLCBmaXJzdFNsYXNoICsgMSk7XG4gIGxldCB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGguaW5kZXhPZihcIkBcIiwgZmlyc3RTbGFzaCArIDEpO1xuXG4gIGlmIChwYXRoU3RhcnRJbmRleCA9PT0gLTEpIHBhdGhTdGFydEluZGV4ID0gcGF0aC5sZW5ndGg7XG4gIGlmICh2ZXJzaW9uU3RhcnRJbmRleCA9PT0gLTEpIHZlcnNpb25TdGFydEluZGV4ID0gcGF0aC5sZW5ndGg7XG5cbiAgaWYgKHZlcnNpb25TdGFydEluZGV4ID4gcGF0aFN0YXJ0SW5kZXgpIHtcbiAgICB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGhTdGFydEluZGV4O1xuICB9XG5cbiAgaWYgKHN0YXJ0SW5kZXggPT09IHZlcnNpb25TdGFydEluZGV4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGpzciBzcGVjaWZpZXI6ICR7c3BlY2lmaWVyfWApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBwYXRoLnNsaWNlKHN0YXJ0SW5kZXgsIHZlcnNpb25TdGFydEluZGV4KSxcbiAgICB2ZXJzaW9uOiB2ZXJzaW9uU3RhcnRJbmRleCA9PT0gcGF0aFN0YXJ0SW5kZXhcbiAgICAgID8gbnVsbFxuICAgICAgOiBwYXRoLnNsaWNlKHZlcnNpb25TdGFydEluZGV4ICsgMSwgcGF0aFN0YXJ0SW5kZXgpLFxuICAgIHBhdGg6IHBhdGhTdGFydEluZGV4ID09PSBwYXRoLmxlbmd0aCA/IG51bGwgOiBwYXRoLnNsaWNlKHBhdGhTdGFydEluZGV4KSxcbiAgfTtcbn1cblxuLy8gRm9yIGFsbCBwYWlycyBpbiBgaW1wb3J0c2Agd2hlcmUgdGhlIHNwZWNpZmllciBkb2VzIG5vdCBlbmQgaW4gYSAvLCBhbmQgdGhlXG4vLyB0YXJnZXQgc3RhcnRzIHdpdGggYGpzcjpgIG9yIGBucG06YCwgYW5kIG5vIGVudHJ5IGV4aXN0cyBmb3IgYCR7c3BlY2lmaWVyfS9gLFxuLy8gYWRkIGFuIGVudHJ5IGZvciBgJHtzcGVjaWZpZXJ9L2AgcG9pbnRpbmcgdG8gdGhlIHRhcmdldCB3aXRoIGEgLyBhcHBlbmRlZCxcbi8vIGFuZCBhIGAvYCBhcHBlbmRlZCB0byB0aGUgc2NoZW1lLCBpZiBub25lIGlzIHByZXNlbnQgdGhlcmUuXG5leHBvcnQgZnVuY3Rpb24gZXhwYW5kRW1iZWRkZWRJbXBvcnRNYXAoaW1wb3J0TWFwOiBJbXBvcnRNYXApIHtcbiAgaWYgKGltcG9ydE1hcC5pbXBvcnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBuZXdJbXBvcnRzOiBbc3RyaW5nLCBzdHJpbmcgfCBudWxsXVtdID0gW107XG4gICAgZm9yIChjb25zdCBbc3BlY2lmaWVyLCB0YXJnZXRdIG9mIE9iamVjdC5lbnRyaWVzKGltcG9ydE1hcC5pbXBvcnRzKSkge1xuICAgICAgbmV3SW1wb3J0cy5wdXNoKFtzcGVjaWZpZXIsIHRhcmdldF0pO1xuICAgICAgaWYgKFxuICAgICAgICAhc3BlY2lmaWVyLmVuZHNXaXRoKFwiL1wiKSAmJiB0YXJnZXQgJiZcbiAgICAgICAgKHRhcmdldC5zdGFydHNXaXRoKFwianNyOlwiKSB8fCB0YXJnZXQuc3RhcnRzV2l0aChcIm5wbTpcIikpICYmXG4gICAgICAgICFpbXBvcnRNYXAuaW1wb3J0c1tzcGVjaWZpZXIgKyBcIi9cIl1cbiAgICAgICkge1xuICAgICAgICBjb25zdCBuZXdTcGVjaWZpZXIgPSBzcGVjaWZpZXIgKyBcIi9cIjtcbiAgICAgICAgY29uc3QgbmV3VGFyZ2V0ID0gdGFyZ2V0LnNsaWNlKDAsIDQpICsgXCIvXCIgK1xuICAgICAgICAgIHRhcmdldC5zbGljZSh0YXJnZXRbNF0gPT09IFwiL1wiID8gNSA6IDQpICsgXCIvXCI7XG4gICAgICAgIG5ld0ltcG9ydHMucHVzaChbbmV3U3BlY2lmaWVyLCBuZXdUYXJnZXRdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaW1wb3J0TWFwLmltcG9ydHMgPSBPYmplY3QuZnJvbUVudHJpZXMobmV3SW1wb3J0cyk7XG4gIH1cbn1cbiIsICJpbXBvcnQge1xuICBlc2J1aWxkLFxuICBJbXBvcnRNYXAsXG4gIHJlc29sdmVJbXBvcnRNYXAsXG4gIHJlc29sdmVNb2R1bGVTcGVjaWZpZXIsXG4gIFNjb3BlcyxcbiAgU3BlY2lmaWVyTWFwLFxuICB0b0ZpbGVVcmwsXG59IGZyb20gXCIuLi9kZXBzLnRzXCI7XG5pbXBvcnQge1xuICBleHBhbmRFbWJlZGRlZEltcG9ydE1hcCxcbiAgcmVhZERlbm9Db25maWcsXG4gIHVybFRvRXNidWlsZFJlc29sdXRpb24sXG59IGZyb20gXCIuL3NoYXJlZC50c1wiO1xuXG5leHBvcnQgdHlwZSB7IEltcG9ydE1hcCwgU2NvcGVzLCBTcGVjaWZpZXJNYXAgfTtcblxuZXhwb3J0IGludGVyZmFjZSBEZW5vUmVzb2x2ZXJQbHVnaW5PcHRpb25zIHtcbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHBhdGggdG8gYSBkZW5vLmpzb24gY29uZmlnIGZpbGUgdG8gdXNlLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG9cbiAgICogdGhlIGAtLWNvbmZpZ2AgZmxhZyB0byB0aGUgRGVubyBleGVjdXRhYmxlLiBUaGlzIHBhdGggbXVzdCBiZSBhYnNvbHV0ZS5cbiAgICovXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IGEgVVJMIHRvIGFuIGltcG9ydCBtYXAgZmlsZSB0byB1c2Ugd2hlbiByZXNvbHZpbmcgaW1wb3J0XG4gICAqIHNwZWNpZmllcnMuIFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgYC0taW1wb3J0LW1hcGAgZmxhZyB0byB0aGUgRGVub1xuICAgKiBleGVjdXRhYmxlLiBUaGlzIFVSTCBtYXkgYmUgcmVtb3RlIG9yIGEgbG9jYWwgZmlsZSBVUkwuXG4gICAqXG4gICAqIElmIHRoaXMgb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBkZW5vLmpzb24gY29uZmlnIGZpbGUgaXMgY29uc3VsdGVkIHRvXG4gICAqIGRldGVybWluZSB3aGF0IGltcG9ydCBtYXAgdG8gdXNlLCBpZiBhbnkuXG4gICAqL1xuICBpbXBvcnRNYXBVUkw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBJTl9OT0RFX01PRFVMRVMgPSBTeW1ib2woXCJJTl9OT0RFX01PRFVMRVNcIik7XG5leHBvcnQgY29uc3QgSU5fTk9ERV9NT0RVTEVTX1JFU09MVkVEID0gU3ltYm9sKFwiSU5fTk9ERV9NT0RVTEVTX1JFU09MVkVEXCIpO1xuXG4vKipcbiAqIFRoZSBEZW5vIHJlc29sdmVyIHBsdWdpbiBwZXJmb3JtcyByZWxhdGl2ZS0+YWJzb2x1dGUgc3BlY2lmaWVyIHJlc29sdXRpb25cbiAqIGFuZCBpbXBvcnQgbWFwIHJlc29sdXRpb24uXG4gKlxuICogSWYgdXNpbmcgdGhlIHtAbGluayBkZW5vTG9hZGVyUGx1Z2lufSwgdGhpcyBwbHVnaW4gbXVzdCBiZSB1c2VkIGJlZm9yZSB0aGVcbiAqIGxvYWRlciBwbHVnaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZW5vUmVzb2x2ZXJQbHVnaW4oXG4gIG9wdGlvbnM6IERlbm9SZXNvbHZlclBsdWdpbk9wdGlvbnMgPSB7fSxcbik6IGVzYnVpbGQuUGx1Z2luIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBcImRlbm8tcmVzb2x2ZXJcIixcbiAgICBzZXR1cChidWlsZCkge1xuICAgICAgbGV0IGltcG9ydE1hcDogSW1wb3J0TWFwIHwgbnVsbCA9IG51bGw7XG4gICAgICBsZXQgbm9kZU1vZHVsZXNQYXRoczogU2V0PHN0cmluZz47XG5cbiAgICAgIGNvbnN0IGV4dGVybmFsUmVnZXhwczogUmVnRXhwW10gPSAoYnVpbGQuaW5pdGlhbE9wdGlvbnMuZXh0ZXJuYWwgPz8gW10pXG4gICAgICAgIC5tYXAoKGV4dGVybmFsKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgIFwiXlwiICsgZXh0ZXJuYWwucmVwbGFjZSgvWy0vXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCBcIlxcXFwkJlwiKS5yZXBsYWNlKFxuICAgICAgICAgICAgICAvXFwqL2csXG4gICAgICAgICAgICAgIFwiLipcIixcbiAgICAgICAgICAgICkgKyBcIiRcIixcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiByZWdleHA7XG4gICAgICAgIH0pO1xuXG4gICAgICBidWlsZC5vblN0YXJ0KGFzeW5jIGZ1bmN0aW9uIG9uU3RhcnQoKSB7XG4gICAgICAgIG5vZGVNb2R1bGVzUGF0aHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICBsZXQgaW1wb3J0TWFwVVJMOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gSWYgbm8gaW1wb3J0IG1hcCBVUkwgaXMgc3BlY2lmaWVkLCBhbmQgYSBjb25maWcgaXMgc3BlY2lmaWVkLCB3ZSB0cnlcbiAgICAgICAgLy8gdG8gZ2V0IGFuIGltcG9ydCBtYXAgZnJvbSB0aGUgY29uZmlnLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgb3B0aW9ucy5pbXBvcnRNYXBVUkwgPT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLmNvbmZpZ1BhdGggIT09IHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkRGVub0NvbmZpZyhvcHRpb25zLmNvbmZpZ1BhdGgpO1xuICAgICAgICAgIC8vIElmIGBpbXBvcnRzYCBvciBgc2NvcGVzYCBhcmUgc3BlY2lmaWVkLCB1c2UgdGhlIGNvbmZpZyBmaWxlIGFzIHRoZVxuICAgICAgICAgIC8vIGltcG9ydCBtYXAgZGlyZWN0bHkuXG4gICAgICAgICAgaWYgKGNvbmZpZy5pbXBvcnRzICE9PSB1bmRlZmluZWQgfHwgY29uZmlnLnNjb3BlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBjb25maWdJbXBvcnRNYXAgPSB7XG4gICAgICAgICAgICAgIGltcG9ydHM6IGNvbmZpZy5pbXBvcnRzLFxuICAgICAgICAgICAgICBzY29wZXM6IGNvbmZpZy5zY29wZXMsXG4gICAgICAgICAgICB9IGFzIEltcG9ydE1hcDtcbiAgICAgICAgICAgIGV4cGFuZEVtYmVkZGVkSW1wb3J0TWFwKGNvbmZpZ0ltcG9ydE1hcCk7XG4gICAgICAgICAgICBpbXBvcnRNYXAgPSByZXNvbHZlSW1wb3J0TWFwKFxuICAgICAgICAgICAgICBjb25maWdJbXBvcnRNYXAsXG4gICAgICAgICAgICAgIHRvRmlsZVVybChvcHRpb25zLmNvbmZpZ1BhdGgpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy5pbXBvcnRNYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB1c2UgdGhlIGltcG9ydCBtYXAgVVJMIHNwZWNpZmllZCBpbiB0aGUgY29uZmlnIGZpbGVcbiAgICAgICAgICAgIGltcG9ydE1hcFVSTCA9XG4gICAgICAgICAgICAgIG5ldyBVUkwoY29uZmlnLmltcG9ydE1hcCwgdG9GaWxlVXJsKG9wdGlvbnMuY29uZmlnUGF0aCkpLmhyZWY7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuaW1wb3J0TWFwVVJMICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbXBvcnRNYXBVUkwgPSBvcHRpb25zLmltcG9ydE1hcFVSTDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHdlIGhhdmUgYW4gaW1wb3J0IG1hcCBVUkwsIGZldGNoIGl0IGFuZCBwYXJzZSBpdC5cbiAgICAgICAgaWYgKGltcG9ydE1hcFVSTCkge1xuICAgICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaChpbXBvcnRNYXBVUkwpO1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwLmpzb24oKTtcbiAgICAgICAgICBpbXBvcnRNYXAgPSByZXNvbHZlSW1wb3J0TWFwKGRhdGEsIG5ldyBVUkwocmVzcC51cmwpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGJ1aWxkLm9uUmVzb2x2ZSh7IGZpbHRlcjogLy4qLyB9LCBhc3luYyBmdW5jdGlvbiBvblJlc29sdmUoYXJncykge1xuICAgICAgICAvLyBJZiB0aGlzIGlzIGEgbm9kZV9tb2R1bGVzIGludGVybmFsIHJlc29sdXRpb24sIGp1c3QgcGFzcyBpdCB0aHJvdWdoLlxuICAgICAgICAvLyBJbnRlcm5hbCByZXNvbHV0aW9uIGlzIGRldGVjdGVkIGJ5IGVpdGhlciB0aGUgXCJJTl9OT0RFX01PRFVMRVNcIiBmbGFnXG4gICAgICAgIC8vIGJlaW5nIHNldCBvbiB0aGUgcmVzb2x2ZSBhcmdzIHRocm91Z2ggdGhlIHBsdWdpbkRhdGEgZmllbGQsIG9yIGJ5XG4gICAgICAgIC8vIHRoZSBpbXBvcnRlciBiZWluZyBpbiB0aGUgbm9kZU1vZHVsZXNQYXRocyBzZXQuXG4gICAgICAgIGlmIChhcmdzLnBsdWdpbkRhdGEgPT09IElOX05PREVfTU9EVUxFU19SRVNPTFZFRCkgcmV0dXJuIHt9O1xuICAgICAgICBpZiAoYXJncy5wbHVnaW5EYXRhID09PSBJTl9OT0RFX01PRFVMRVMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChub2RlTW9kdWxlc1BhdGhzLmhhcyhhcmdzLmltcG9ydGVyKSkge1xuICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJ1aWxkLnJlc29sdmUoYXJncy5wYXRoLCB7XG4gICAgICAgICAgICBpbXBvcnRlcjogYXJncy5pbXBvcnRlcixcbiAgICAgICAgICAgIG5hbWVzcGFjZTogYXJncy5uYW1lc3BhY2UsXG4gICAgICAgICAgICBraW5kOiBhcmdzLmtpbmQsXG4gICAgICAgICAgICByZXNvbHZlRGlyOiBhcmdzLnJlc29sdmVEaXIsXG4gICAgICAgICAgICBwbHVnaW5EYXRhOiBJTl9OT0RFX01PRFVMRVMsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKCFyZXMuZXh0ZXJuYWwpIG5vZGVNb2R1bGVzUGF0aHMuYWRkKHJlcy5wYXRoKTtcbiAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIGZpcnN0IHBhc3MgcmVzb2x2ZXIgcGVyZm9ybXMgc3luY2hyb25vdXMgcmVzb2x1dGlvbi4gVGhpc1xuICAgICAgICAvLyBpbmNsdWRlcyByZWxhdGl2ZSB0byBhYnNvbHV0ZSBzcGVjaWZpZXIgcmVzb2x1dGlvbiBhbmQgaW1wb3J0IG1hcFxuICAgICAgICAvLyByZXNvbHV0aW9uLlxuXG4gICAgICAgIC8vIFdlIGhhdmUgdG8gZmlyc3QgZGV0ZXJtaW5lIHRoZSByZWZlcnJlciBVUkwgdG8gdXNlIHdoZW4gcmVzb2x2aW5nXG4gICAgICAgIC8vIHRoZSBzcGVjaWZpZXIuIFRoaXMgaXMgZWl0aGVyIHRoZSBpbXBvcnRlciBVUkwsIG9yIHRoZSByZXNvbHZlRGlyXG4gICAgICAgIC8vIFVSTCBpZiB0aGUgaW1wb3J0ZXIgaXMgbm90IHNwZWNpZmllZCAoaWUgaWYgdGhlIHNwZWNpZmllciBpcyBhdCB0aGVcbiAgICAgICAgLy8gcm9vdCkuXG4gICAgICAgIGxldCByZWZlcnJlcjogVVJMO1xuICAgICAgICBpZiAoYXJncy5pbXBvcnRlciAhPT0gXCJcIikge1xuICAgICAgICAgIGlmIChhcmdzLm5hbWVzcGFjZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiW2Fzc2VydF0gbmFtZXNwYWNlIGlzIGVtcHR5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZWZlcnJlciA9IG5ldyBVUkwoYCR7YXJncy5uYW1lc3BhY2V9OiR7YXJncy5pbXBvcnRlcn1gKTtcbiAgICAgICAgfSBlbHNlIGlmIChhcmdzLnJlc29sdmVEaXIgIT09IFwiXCIpIHtcbiAgICAgICAgICByZWZlcnJlciA9IG5ldyBVUkwoYCR7dG9GaWxlVXJsKGFyZ3MucmVzb2x2ZURpcikuaHJlZn0vYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdlIGNhbiB0aGVuIHJlc29sdmUgdGhlIHNwZWNpZmllciByZWxhdGl2ZSB0byB0aGUgcmVmZXJyZXIgVVJMLiBJZlxuICAgICAgICAvLyBhbiBpbXBvcnQgbWFwIGlzIHNwZWNpZmllZCwgd2UgdXNlIHRoYXQgdG8gcmVzb2x2ZSB0aGUgc3BlY2lmaWVyLlxuICAgICAgICBsZXQgcmVzb2x2ZWQ6IFVSTDtcbiAgICAgICAgaWYgKGltcG9ydE1hcCAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHJlcyA9IHJlc29sdmVNb2R1bGVTcGVjaWZpZXIoXG4gICAgICAgICAgICBhcmdzLnBhdGgsXG4gICAgICAgICAgICBpbXBvcnRNYXAsXG4gICAgICAgICAgICBuZXcgVVJMKHJlZmVycmVyKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlc29sdmVkID0gbmV3IFVSTChyZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmVkID0gbmV3IFVSTChhcmdzLnBhdGgsIHJlZmVycmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgZXh0ZXJuYWxSZWdleHAgb2YgZXh0ZXJuYWxSZWdleHBzKSB7XG4gICAgICAgICAgaWYgKGV4dGVybmFsUmVnZXhwLnRlc3QocmVzb2x2ZWQuaHJlZikpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHBhdGg6IHJlc29sdmVkLmhyZWYsXG4gICAgICAgICAgICAgIGV4dGVybmFsOiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOb3cgcGFzcyB0aGUgcmVzb2x2ZWQgc3BlY2lmaWVyIGJhY2sgaW50byB0aGUgcmVzb2x2ZXIsIGZvciBhIHNlY29uZFxuICAgICAgICAvLyBwYXNzLiBOb3cgcGx1Z2lucyBjYW4gcGVyZm9ybSBhbnkgcmVzb2x1dGlvbiB0aGV5IHdhbnQgb24gdGhlIGZ1bGx5XG4gICAgICAgIC8vIHJlc29sdmVkIHNwZWNpZmllci5cbiAgICAgICAgY29uc3QgeyBwYXRoLCBuYW1lc3BhY2UgfSA9IHVybFRvRXNidWlsZFJlc29sdXRpb24ocmVzb2x2ZWQpO1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBidWlsZC5yZXNvbHZlKHBhdGgsIHtcbiAgICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgICAga2luZDogYXJncy5raW5kLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlcy5wbHVnaW5EYXRhID09PSBJTl9OT0RFX01PRFVMRVMpIG5vZGVNb2R1bGVzUGF0aHMuYWRkKHJlcy5wYXRoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0pO1xuICAgIH0sXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgZXNidWlsZCwgZnJvbUZpbGVVcmwgfSBmcm9tIFwiLi4vZGVwcy50c1wiO1xuaW1wb3J0ICogYXMgZGVubyBmcm9tIFwiLi9kZW5vLnRzXCI7XG5pbXBvcnQge1xuICBMb2FkZXIsXG4gIExvYWRlclJlc29sdXRpb24sXG4gIG1hcENvbnRlbnRUeXBlLFxuICBtZWRpYVR5cGVUb0xvYWRlcixcbiAgcGFyc2VKc3JTcGVjaWZpZXIsXG4gIHBhcnNlTnBtU3BlY2lmaWVyLFxufSBmcm9tIFwiLi9zaGFyZWQudHNcIjtcblxuaW50ZXJmYWNlIE1vZHVsZSB7XG4gIHNwZWNpZmllcjogc3RyaW5nO1xuICBtZWRpYVR5cGU6IGRlbm8uTWVkaWFUeXBlO1xuICBkYXRhOiBVaW50OEFycmF5O1xufVxuXG5jb25zdCBKU1JfUkVHSVNUUllfVVJMID0gRGVuby5lbnYuZ2V0KFwiREVOT19SRUdJU1RSWV9VUkxcIikgPz8gXCJodHRwczovL2pzci5pb1wiO1xuXG5hc3luYyBmdW5jdGlvbiByZWFkTG9ja2ZpbGUocGF0aDogc3RyaW5nKTogUHJvbWlzZTxkZW5vLkxvY2tmaWxlIHwgbnVsbD4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBEZW5vLnJlYWRUZXh0RmlsZShwYXRoKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLk5vdEZvdW5kKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbmludGVyZmFjZSBQb3J0YWJsZUxvYWRlck9wdGlvbnMge1xuICBsb2NrPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUG9ydGFibGVMb2FkZXIgaW1wbGVtZW50cyBMb2FkZXIge1xuICAjb3B0aW9uczogUG9ydGFibGVMb2FkZXJPcHRpb25zO1xuICAjZmV0Y2hPbmdvaW5nID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+KCk7XG4gICNsb2NrZmlsZTogUHJvbWlzZTxkZW5vLkxvY2tmaWxlIHwgbnVsbD4gfCBkZW5vLkxvY2tmaWxlIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAjZmV0Y2hNb2R1bGVzID0gbmV3IE1hcDxzdHJpbmcsIE1vZHVsZT4oKTtcbiAgI2ZldGNoUmVkaXJlY3RzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBQb3J0YWJsZUxvYWRlck9wdGlvbnMpIHtcbiAgICB0aGlzLiNvcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIGFzeW5jIHJlc29sdmUoc3BlY2lmaWVyOiBVUkwpOiBQcm9taXNlPExvYWRlclJlc29sdXRpb24+IHtcbiAgICBzd2l0Y2ggKHNwZWNpZmllci5wcm90b2NvbCkge1xuICAgICAgY2FzZSBcImZpbGU6XCI6IHtcbiAgICAgICAgcmV0dXJuIHsga2luZDogXCJlc21cIiwgc3BlY2lmaWVyIH07XG4gICAgICB9XG4gICAgICBjYXNlIFwiaHR0cDpcIjpcbiAgICAgIGNhc2UgXCJodHRwczpcIjpcbiAgICAgIGNhc2UgXCJkYXRhOlwiOiB7XG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IGF3YWl0IHRoaXMuI2xvYWRSZW1vdGUoc3BlY2lmaWVyLmhyZWYpO1xuICAgICAgICByZXR1cm4geyBraW5kOiBcImVzbVwiLCBzcGVjaWZpZXI6IG5ldyBVUkwobW9kdWxlLnNwZWNpZmllcikgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJucG06XCI6IHtcbiAgICAgICAgY29uc3QgbnBtU3BlY2lmaWVyID0gcGFyc2VOcG1TcGVjaWZpZXIoc3BlY2lmaWVyKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBraW5kOiBcIm5wbVwiLFxuICAgICAgICAgIHBhY2thZ2VJZDogXCJcIixcbiAgICAgICAgICBwYWNrYWdlTmFtZTogbnBtU3BlY2lmaWVyLm5hbWUsXG4gICAgICAgICAgcGF0aDogbnBtU3BlY2lmaWVyLnBhdGggPz8gXCJcIixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJub2RlOlwiOiB7XG4gICAgICAgIHJldHVybiB7IGtpbmQ6IFwibm9kZVwiLCBwYXRoOiBzcGVjaWZpZXIucGF0aG5hbWUgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJqc3I6XCI6IHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRTcGVjaWZpZXIgPSBhd2FpdCB0aGlzLiNyZXNvbHZlSnNyU3BlY2lmaWVyKHNwZWNpZmllcik7XG4gICAgICAgIHJldHVybiB7IGtpbmQ6IFwiZXNtXCIsIHNwZWNpZmllcjogcmVzb2x2ZWRTcGVjaWZpZXIgfTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgc2NoZW1lOiAnJHtzcGVjaWZpZXIucHJvdG9jb2x9J2ApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jICNyZXNvbHZlSnNyU3BlY2lmaWVyKHNwZWNpZmllcjogVVJMKTogUHJvbWlzZTxVUkw+IHtcbiAgICAvLyBwYXJzZSB0aGUgSlNSIHNwZWNpZmllci5cbiAgICBjb25zdCBqc3JTcGVjaWZpZXIgPSBwYXJzZUpzclNwZWNpZmllcihzcGVjaWZpZXIpO1xuXG4gICAgLy8gQXR0ZW1wdCB0byBsb2FkIHRoZSBsb2NrZmlsZS5cbiAgICBpZiAodGhpcy4jbG9ja2ZpbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy4jbG9ja2ZpbGUgPSB0eXBlb2YgdGhpcy4jb3B0aW9ucy5sb2NrID09PSBcInN0cmluZ1wiXG4gICAgICAgID8gcmVhZExvY2tmaWxlKHRoaXMuI29wdGlvbnMubG9jaylcbiAgICAgICAgOiBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy4jbG9ja2ZpbGUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICB0aGlzLiNsb2NrZmlsZSA9IGF3YWl0IHRoaXMuI2xvY2tmaWxlO1xuICAgIH1cbiAgICBpZiAodGhpcy4jbG9ja2ZpbGUgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJqc3I6IHNwZWNpZmllcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHBvcnRhYmxlIGxvYWRlciB3aXRob3V0IGEgbG9ja2ZpbGVcIixcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGxvY2tmaWxlID0gdGhpcy4jbG9ja2ZpbGU7XG4gICAgaWYgKGxvY2tmaWxlLnZlcnNpb24gIT09IFwiM1wiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVW5zdXBwb3J0ZWQgbG9ja2ZpbGUgdmVyc2lvbjogXCIgKyBsb2NrZmlsZS52ZXJzaW9uLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBMb29rIHVwIHRoZSBwYWNrYWdlICsgY29uc3RyYWludCBpbiB0aGUgbG9ja2ZpbGUuXG4gICAgY29uc3QgaWQgPSBganNyOiR7anNyU3BlY2lmaWVyLm5hbWV9JHtcbiAgICAgIGpzclNwZWNpZmllci52ZXJzaW9uID8gYEAke2pzclNwZWNpZmllci52ZXJzaW9ufWAgOiBcIlwiXG4gICAgfWA7XG4gICAgY29uc3QgbG9ja2ZpbGVFbnRyeSA9IGxvY2tmaWxlLnBhY2thZ2VzPy5zcGVjaWZpZXJzPy5baWRdO1xuICAgIGlmICghbG9ja2ZpbGVFbnRyeSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTcGVjaWZpZXIgbm90IGZvdW5kIGluIGxvY2tmaWxlOiAke2lkfWApO1xuICAgIH1cbiAgICBjb25zdCBsb2NrZmlsZUVudHJ5UGFyc2VkID0gcGFyc2VKc3JTcGVjaWZpZXIobmV3IFVSTChsb2NrZmlsZUVudHJ5KSk7XG5cbiAgICAvLyBMb2FkIHRoZSBKU1IgbWFuaWZlc3QgdG8gZmluZCB0aGUgZXhwb3J0IHBhdGguXG4gICAgY29uc3QgbWFuaWZlc3RVcmwgPSBuZXcgVVJMKFxuICAgICAgYC4vJHtsb2NrZmlsZUVudHJ5UGFyc2VkLm5hbWV9LyR7bG9ja2ZpbGVFbnRyeVBhcnNlZFxuICAgICAgICAudmVyc2lvbiF9X21ldGEuanNvbmAsXG4gICAgICBKU1JfUkVHSVNUUllfVVJMLFxuICAgICk7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBhd2FpdCB0aGlzLiNsb2FkUmVtb3RlKG1hbmlmZXN0VXJsLmhyZWYpO1xuICAgIGlmIChtYW5pZmVzdC5tZWRpYVR5cGUgIT09IFwiSnNvblwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBFeHBlY3RlZCBKU09OIG1lZGlhIHR5cGUgZm9yIEpTUiBtYW5pZmVzdCwgZ290OiAke21hbmlmZXN0Lm1lZGlhVHlwZX1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgbWFuaWZlc3REYXRhID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKG1hbmlmZXN0LmRhdGEpO1xuICAgIGNvbnN0IG1hbmlmZXN0SnNvbiA9IEpTT04ucGFyc2UobWFuaWZlc3REYXRhKTtcblxuICAgIC8vIExvb2sgdXAgdGhlIGV4cG9ydCBwYXRoIGluIHRoZSBtYW5pZmVzdC5cbiAgICBjb25zdCBleHBvcnRFbnRyeSA9IGAuJHtqc3JTcGVjaWZpZXIucGF0aCA/PyBcIlwifWA7XG4gICAgY29uc3QgZXhwb3J0UGF0aCA9IG1hbmlmZXN0SnNvbi5leHBvcnRzW2V4cG9ydEVudHJ5XTtcbiAgICBpZiAoIWV4cG9ydFBhdGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFBhY2thZ2UgJyR7bG9ja2ZpbGVFbnRyeX0nIGhhcyBubyBleHBvcnQgbmFtZWQgJyR7ZXhwb3J0RW50cnl9J2AsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0aGUgcmVzb2x2ZWQgVVJMLlxuICAgIHJldHVybiBuZXcgVVJMKFxuICAgICAgYC4vJHtsb2NrZmlsZUVudHJ5UGFyc2VkLm5hbWV9LyR7bG9ja2ZpbGVFbnRyeVBhcnNlZFxuICAgICAgICAudmVyc2lvbiF9LyR7ZXhwb3J0UGF0aH1gLFxuICAgICAgSlNSX1JFR0lTVFJZX1VSTCxcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbG9hZEVzbSh1cmw6IFVSTCk6IFByb21pc2U8ZXNidWlsZC5PbkxvYWRSZXN1bHQ+IHtcbiAgICBsZXQgbW9kdWxlOiBNb2R1bGU7XG4gICAgc3dpdGNoICh1cmwucHJvdG9jb2wpIHtcbiAgICAgIGNhc2UgXCJmaWxlOlwiOiB7XG4gICAgICAgIG1vZHVsZSA9IGF3YWl0IHRoaXMuI2xvYWRMb2NhbCh1cmwpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJodHRwOlwiOlxuICAgICAgY2FzZSBcImh0dHBzOlwiOlxuICAgICAgY2FzZSBcImRhdGE6XCI6IHtcbiAgICAgICAgbW9kdWxlID0gYXdhaXQgdGhpcy4jbG9hZFJlbW90ZSh1cmwuaHJlZik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiW3VucmVhY2hhYmxlXSB1bnN1cHBvcnRlZCBlc20gc2NoZW1lIFwiICsgdXJsLnByb3RvY29sKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2FkZXIgPSBtZWRpYVR5cGVUb0xvYWRlcihtb2R1bGUubWVkaWFUeXBlKTtcblxuICAgIGNvbnN0IHJlczogZXNidWlsZC5PbkxvYWRSZXN1bHQgPSB7IGNvbnRlbnRzOiBtb2R1bGUuZGF0YSwgbG9hZGVyIH07XG4gICAgaWYgKHVybC5wcm90b2NvbCA9PT0gXCJmaWxlOlwiKSB7XG4gICAgICByZXMud2F0Y2hGaWxlcyA9IFtmcm9tRmlsZVVybChtb2R1bGUuc3BlY2lmaWVyKV07XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICAjcmVzb2x2ZVJlbW90ZShzcGVjaWZpZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI2ZldGNoUmVkaXJlY3RzLmdldChzcGVjaWZpZXIpID8/IHNwZWNpZmllcjtcbiAgfVxuXG4gIGFzeW5jICNsb2FkUmVtb3RlKHNwZWNpZmllcjogc3RyaW5nKTogUHJvbWlzZTxNb2R1bGU+IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyBpKyspIHtcbiAgICAgIHNwZWNpZmllciA9IHRoaXMuI3Jlc29sdmVSZW1vdGUoc3BlY2lmaWVyKTtcbiAgICAgIGNvbnN0IG1vZHVsZSA9IHRoaXMuI2ZldGNoTW9kdWxlcy5nZXQoc3BlY2lmaWVyKTtcbiAgICAgIGlmIChtb2R1bGUpIHJldHVybiBtb2R1bGU7XG5cbiAgICAgIGxldCBwcm9taXNlID0gdGhpcy4jZmV0Y2hPbmdvaW5nLmdldChzcGVjaWZpZXIpO1xuICAgICAgaWYgKCFwcm9taXNlKSB7XG4gICAgICAgIHByb21pc2UgPSB0aGlzLiNmZXRjaChzcGVjaWZpZXIpO1xuICAgICAgICB0aGlzLiNmZXRjaE9uZ29pbmcuc2V0KHNwZWNpZmllciwgcHJvbWlzZSk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHByb21pc2U7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVG9vIG1hbnkgcmVkaXJlY3RzLiBMYXN0IG9uZTogXCIgKyBzcGVjaWZpZXIpO1xuICB9XG5cbiAgYXN5bmMgI2ZldGNoKHNwZWNpZmllcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IGZldGNoKHNwZWNpZmllciwge1xuICAgICAgcmVkaXJlY3Q6IFwibWFudWFsXCIsXG4gICAgfSk7XG4gICAgaWYgKHJlc3Auc3RhdHVzIDwgMjAwICYmIHJlc3Auc3RhdHVzID49IDQwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRW5jb3VudGVyZWQgc3RhdHVzIGNvZGUgJHtyZXNwLnN0YXR1c30gd2hpbGUgZmV0Y2hpbmcgJHtzcGVjaWZpZXJ9LmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZXNwLnN0YXR1cyA+PSAzMDAgJiYgcmVzcC5zdGF0dXMgPCA0MDApIHtcbiAgICAgIGF3YWl0IHJlc3AuYm9keT8uY2FuY2VsKCk7XG4gICAgICBjb25zdCBsb2NhdGlvbiA9IHJlc3AuaGVhZGVycy5nZXQoXCJsb2NhdGlvblwiKTtcbiAgICAgIGlmICghbG9jYXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBSZWRpcmVjdGVkIHdpdGhvdXQgbG9jYXRpb24gaGVhZGVyIHdoaWxlIGZldGNoaW5nICR7c3BlY2lmaWVyfS5gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKGxvY2F0aW9uLCBzcGVjaWZpZXIpO1xuICAgICAgaWYgKHVybC5wcm90b2NvbCAhPT0gXCJodHRwczpcIiAmJiB1cmwucHJvdG9jb2wgIT09IFwiaHR0cDpcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFJlZGlyZWN0ZWQgdG8gdW5zdXBwb3J0ZWQgcHJvdG9jb2wgJyR7dXJsLnByb3RvY29sfScgd2hpbGUgZmV0Y2hpbmcgJHtzcGVjaWZpZXJ9LmAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI2ZldGNoUmVkaXJlY3RzLnNldChzcGVjaWZpZXIsIHVybC5ocmVmKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZW50VHlwZSA9IHJlc3AuaGVhZGVycy5nZXQoXCJjb250ZW50LXR5cGVcIik7XG4gICAgY29uc3QgbWVkaWFUeXBlID0gbWFwQ29udGVudFR5cGUobmV3IFVSTChzcGVjaWZpZXIpLCBjb250ZW50VHlwZSk7XG5cbiAgICBjb25zdCBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoYXdhaXQgcmVzcC5hcnJheUJ1ZmZlcigpKTtcbiAgICB0aGlzLiNmZXRjaE1vZHVsZXMuc2V0KHNwZWNpZmllciwge1xuICAgICAgc3BlY2lmaWVyLFxuICAgICAgbWVkaWFUeXBlLFxuICAgICAgZGF0YSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jICNsb2FkTG9jYWwoc3BlY2lmaWVyOiBVUkwpOiBQcm9taXNlPE1vZHVsZT4ge1xuICAgIGNvbnN0IHBhdGggPSBmcm9tRmlsZVVybChzcGVjaWZpZXIpO1xuXG4gICAgY29uc3QgbWVkaWFUeXBlID0gbWFwQ29udGVudFR5cGUoc3BlY2lmaWVyLCBudWxsKTtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgRGVuby5yZWFkRmlsZShwYXRoKTtcblxuICAgIHJldHVybiB7IHNwZWNpZmllcjogc3BlY2lmaWVyLmhyZWYsIG1lZGlhVHlwZSwgZGF0YSB9O1xuICB9XG59XG4iLCAiaW1wb3J0IHsgZGlybmFtZSwgZXNidWlsZCwgam9pbiB9IGZyb20gXCIuLi9kZXBzLnRzXCI7XG5pbXBvcnQgeyBOYXRpdmVMb2FkZXIgfSBmcm9tIFwiLi9sb2FkZXJfbmF0aXZlLnRzXCI7XG5pbXBvcnQgeyBQb3J0YWJsZUxvYWRlciB9IGZyb20gXCIuL2xvYWRlcl9wb3J0YWJsZS50c1wiO1xuaW1wb3J0IHtcbiAgSU5fTk9ERV9NT0RVTEVTLFxuICBJTl9OT0RFX01PRFVMRVNfUkVTT0xWRUQsXG59IGZyb20gXCIuL3BsdWdpbl9kZW5vX3Jlc29sdmVyLnRzXCI7XG5pbXBvcnQge1xuICBlc2J1aWxkUmVzb2x1dGlvblRvVVJMLFxuICBMb2FkZXIsXG4gIHJlYWREZW5vQ29uZmlnLFxuICB1cmxUb0VzYnVpbGRSZXNvbHV0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEZW5vTG9hZGVyUGx1Z2luT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IHdoaWNoIGxvYWRlciB0byB1c2UuIEJ5IGRlZmF1bHQgdGhpcyB3aWxsIHVzZSB0aGUgYG5hdGl2ZWAgbG9hZGVyLFxuICAgKiB1bmxlc3MgdGhlIGAtLWFsbG93LXJ1bmAgcGVybWlzc2lvbiBoYXMgbm90IGJlZW4gZ2l2ZW4uXG4gICAqXG4gICAqIFNlZSB7QGxpbmsgZGVub0xvYWRlclBsdWdpbn0gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGRpZmZlcmVudCBsb2FkZXJzLlxuICAgKi9cbiAgbG9hZGVyPzogXCJuYXRpdmVcIiB8IFwicG9ydGFibGVcIjtcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgcGF0aCB0byBhIGRlbm8uanNvbiBjb25maWcgZmlsZSB0byB1c2UuIFRoaXMgaXMgZXF1aXZhbGVudCB0b1xuICAgKiB0aGUgYC0tY29uZmlnYCBmbGFnIHRvIHRoZSBEZW5vIGV4ZWN1dGFibGUuIFRoaXMgcGF0aCBtdXN0IGJlIGFic29sdXRlLlxuICAgKlxuICAgKiBOT1RFOiBJbXBvcnQgbWFwcyBpbiB0aGUgY29uZmlnIGZpbGUgYXJlIG5vdCB1c2VkIHRvIGluZm9ybSByZXNvbHV0aW9uLCBhc1xuICAgKiB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gZG9uZSBieSB0aGUgYGRlbm9SZXNvbHZlclBsdWdpbmAuIFRoaXMgb3B0aW9uIGlzIG9ubHlcbiAgICogdXNlZCB3aGVuIHNwZWNpZnlpbmcgYGxvYWRlcjogXCJuYXRpdmVcImAgdG8gbW9yZSBlZmZpY2llbnRseSBsb2FkIG1vZHVsZXNcbiAgICogZnJvbSB0aGUgY2FjaGUuIFdoZW4gc3BlY2lmeWluZyBgbG9hZGVyOiBcIm5hdGl2ZVwiYCwgdGhpcyBvcHRpb24gbXVzdCBiZSBpblxuICAgKiBzeW5jIHdpdGggdGhlIGBjb25maWdQYXRoYCBvcHRpb24gZm9yIGBkZW5vUmVzb2x2ZXJQbHVnaW5gLlxuICAgKi9cbiAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBVUkwgdG8gYW4gaW1wb3J0IG1hcCBmaWxlIHRvIHVzZSB3aGVuIHJlc29sdmluZyBpbXBvcnRcbiAgICogc3BlY2lmaWVycy4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBgLS1pbXBvcnQtbWFwYCBmbGFnIHRvIHRoZSBEZW5vXG4gICAqIGV4ZWN1dGFibGUuIFRoaXMgVVJMIG1heSBiZSByZW1vdGUgb3IgYSBsb2NhbCBmaWxlIFVSTC5cbiAgICpcbiAgICogSWYgdGhpcyBvcHRpb24gaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlbm8uanNvbiBjb25maWcgZmlsZSBpcyBjb25zdWx0ZWQgdG9cbiAgICogZGV0ZXJtaW5lIHdoYXQgaW1wb3J0IG1hcCB0byB1c2UsIGlmIGFueS5cbiAgICpcbiAgICogTk9URTogSW1wb3J0IG1hcHMgaW4gdGhlIGNvbmZpZyBmaWxlIGFyZSBub3QgdXNlZCB0byBpbmZvcm0gcmVzb2x1dGlvbiwgYXNcbiAgICogdGhpcyBoYXMgYWxyZWFkeSBiZWVuIGRvbmUgYnkgdGhlIGBkZW5vUmVzb2x2ZXJQbHVnaW5gLiBUaGlzIG9wdGlvbiBpcyBvbmx5XG4gICAqIHVzZWQgd2hlbiBzcGVjaWZ5aW5nIGBsb2FkZXI6IFwibmF0aXZlXCJgIHRvIG1vcmUgZWZmaWNpZW50bHkgbG9hZCBtb2R1bGVzXG4gICAqIGZyb20gdGhlIGNhY2hlLiBXaGVuIHNwZWNpZnlpbmcgYGxvYWRlcjogXCJuYXRpdmVcImAsIHRoaXMgb3B0aW9uIG11c3QgYmUgaW5cbiAgICogc3luYyB3aXRoIHRoZSBgaW1wb3J0TWFwVVJMYCBvcHRpb24gZm9yIGBkZW5vUmVzb2x2ZXJQbHVnaW5gLlxuICAgKi9cbiAgaW1wb3J0TWFwVVJMPzogc3RyaW5nO1xuICAvKipcbiAgICogU3BlY2lmeSB0aGUgcGF0aCB0byBhIGxvY2sgZmlsZSB0byB1c2UuIFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgYC0tbG9ja2BcbiAgICogZmxhZyB0byB0aGUgRGVubyBleGVjdXRhYmxlLiBUaGlzIHBhdGggbXVzdCBiZSBhYnNvbHV0ZS5cbiAgICpcbiAgICogSWYgdGhpcyBvcHRpb24gaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlbm8uanNvbiBjb25maWcgZmlsZSBpcyBjb25zdWx0ZWQgdG9cbiAgICogZGV0ZXJtaW5lIHdoYXQgaW1wb3J0IG1hcCB0byB1c2UsIGlmIGFueS5cbiAgICpcbiAgICogQSBsb2NrZmlsZSBtdXN0IGJlIHByZXNlbnQgdG8gcmVzb2x2ZSBganNyOmAgc3BlY2lmaWVycyB3aXRoIHRoZSBgcG9ydGFibGVgXG4gICAqIGxvYWRlci4gV2hlbiB1c2luZyB0aGUgYG5hdGl2ZWAgbG9hZGVyLCBhIGxvY2tmaWxlIGlzIG5vdCByZXF1aXJlZCwgYnV0IHRvXG4gICAqIGVuc3VyZSBkZXBlbmRlbmNpZXMgYXJlIGRlLWR1cGxpY2F0ZWQgY29ycmVjdGx5LCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgYVxuICAgKiBsb2NrZmlsZS5cbiAgICpcbiAgICogTk9URTogd2hlbiB1c2luZyBgbG9hZGVyOiBcInBvcnRhYmxlXCJgLCBpbnRlZ3JpdHkgY2hlY2tzIGFyZSBub3QgcGVyZm9ybWVkXG4gICAqIGZvciBFU00gbW9kdWxlcy5cbiAgICovXG4gIGxvY2tQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogU3BlY2lmeSB3aGV0aGVyIHRvIGdlbmVyYXRlIGFuZCB1c2UgYSBsb2NhbCBgbm9kZV9tb2R1bGVzYCBkaXJlY3Rvcnkgd2hlblxuICAgKiB1c2luZyB0aGUgYG5hdGl2ZWAgbG9hZGVyLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGAtLW5vZGUtbW9kdWxlcy1kaXJgXG4gICAqIGZsYWcgdG8gdGhlIERlbm8gZXhlY3V0YWJsZS5cbiAgICpcbiAgICogVGhpcyBvcHRpb24gaXMgaWdub3JlZCB3aGVuIHVzaW5nIHRoZSBgcG9ydGFibGVgIGxvYWRlciwgYXMgdGhlIHBvcnRhYmxlXG4gICAqIGxvYWRlciBhbHdheXMgdXNlcyBhIGxvY2FsIGBub2RlX21vZHVsZXNgIGRpcmVjdG9yeS5cbiAgICovXG4gIG5vZGVNb2R1bGVzRGlyPzogYm9vbGVhbjtcbn1cblxuY29uc3QgTE9BREVSUyA9IFtcIm5hdGl2ZVwiLCBcInBvcnRhYmxlXCJdIGFzIGNvbnN0O1xuXG4vKiogVGhlIGRlZmF1bHQgbG9hZGVyIHRvIHVzZS4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xPQURFUjogdHlwZW9mIExPQURFUlNbbnVtYmVyXSA9XG4gIGF3YWl0IERlbm8ucGVybWlzc2lvbnMucXVlcnkoeyBuYW1lOiBcInJ1blwiIH0pXG4gICAgICAudGhlbigocmVzKSA9PiByZXMuc3RhdGUgIT09IFwiZ3JhbnRlZFwiKVxuICAgID8gXCJwb3J0YWJsZVwiXG4gICAgOiBcIm5hdGl2ZVwiO1xuXG5jb25zdCBCVUlMVElOX05PREVfTU9EVUxFUyA9IG5ldyBTZXQoW1xuICBcImFzc2VydFwiLFxuICBcImFzc2VydC9zdHJpY3RcIixcbiAgXCJhc3luY19ob29rc1wiLFxuICBcImJ1ZmZlclwiLFxuICBcImNoaWxkX3Byb2Nlc3NcIixcbiAgXCJjbHVzdGVyXCIsXG4gIFwiY29uc29sZVwiLFxuICBcImNvbnN0YW50c1wiLFxuICBcImNyeXB0b1wiLFxuICBcImRncmFtXCIsXG4gIFwiZGlhZ25vc3RpY3NfY2hhbm5lbFwiLFxuICBcImRuc1wiLFxuICBcImRucy9wcm9taXNlc1wiLFxuICBcImRvbWFpblwiLFxuICBcImV2ZW50c1wiLFxuICBcImZzXCIsXG4gIFwiZnMvcHJvbWlzZXNcIixcbiAgXCJodHRwXCIsXG4gIFwiaHR0cDJcIixcbiAgXCJodHRwc1wiLFxuICBcIm1vZHVsZVwiLFxuICBcIm5ldFwiLFxuICBcIm9zXCIsXG4gIFwicGF0aFwiLFxuICBcInBhdGgvcG9zaXhcIixcbiAgXCJwYXRoL3dpbjMyXCIsXG4gIFwicGVyZl9ob29rc1wiLFxuICBcInByb2Nlc3NcIixcbiAgXCJwdW55Y29kZVwiLFxuICBcInF1ZXJ5c3RyaW5nXCIsXG4gIFwicmVwbFwiLFxuICBcInJlYWRsaW5lXCIsXG4gIFwic3RyZWFtXCIsXG4gIFwic3RyZWFtL2NvbnN1bWVyc1wiLFxuICBcInN0cmVhbS9wcm9taXNlc1wiLFxuICBcInN0cmVhbS93ZWJcIixcbiAgXCJzdHJpbmdfZGVjb2RlclwiLFxuICBcInN5c1wiLFxuICBcInRlc3RcIixcbiAgXCJ0aW1lcnNcIixcbiAgXCJ0aW1lcnMvcHJvbWlzZXNcIixcbiAgXCJ0bHNcIixcbiAgXCJ0dHlcIixcbiAgXCJ1cmxcIixcbiAgXCJ1dGlsXCIsXG4gIFwidXRpbC90eXBlc1wiLFxuICBcInY4XCIsXG4gIFwidm1cIixcbiAgXCJ3b3JrZXJfdGhyZWFkc1wiLFxuICBcInpsaWJcIixcbl0pO1xuXG4vKipcbiAqIFRoZSBEZW5vIGxvYWRlciBwbHVnaW4gZm9yIGVzYnVpbGQuIFRoaXMgcGx1Z2luIHdpbGwgbG9hZCBmdWxseSBxdWFsaWZpZWRcbiAqIGBmaWxlYCwgYGh0dHBgLCBgaHR0cHNgLCBhbmQgYGRhdGFgIFVSTHMuXG4gKlxuICogKipOb3RlKiogdGhhdCB0aGlzIHBsdWdpbiBkb2VzIG5vdCBkbyByZWxhdGl2ZS0+YWJzb2x1dGUgc3BlY2lmaWVyXG4gKiByZXNvbHV0aW9uLCBvciBpbXBvcnQgbWFwIHJlc29sdXRpb24uIFlvdSBtdXN0IHVzZSB0aGUgYGRlbm9SZXNvbHZlclBsdWdpbmBcbiAqIF9iZWZvcmVfIHRoZSBgZGVub0xvYWRlclBsdWdpbmAgdG8gZG8gdGhhdC5cbiAqXG4gKiBUaGlzIHBsdWdpbiBjYW4gYmUgYmFja2VkIGJ5IHR3byBkaWZmZXJlbnQgbG9hZGVycywgdGhlIGBuYXRpdmVgIGxvYWRlciBhbmRcbiAqIHRoZSBgcG9ydGFibGVgIGxvYWRlci5cbiAqXG4gKiAjIyMgTmF0aXZlIExvYWRlclxuICpcbiAqIFRoZSBuYXRpdmUgbG9hZGVyIHNoZWxscyBvdXQgdG8gdGhlIERlbm8gZXhlY3V0YWJsZSB1bmRlciB0aGUgaG9vZCB0byBsb2FkXG4gKiBmaWxlcy4gUmVxdWlyZXMgYC0tYWxsb3ctcmVhZGAgYW5kIGAtLWFsbG93LXJ1bmAuIEluIHRoaXMgbW9kZSB0aGUgZG93bmxvYWRcbiAqIGNhY2hlIGlzIHNoYXJlZCB3aXRoIHRoZSBEZW5vIGV4ZWN1dGFibGUuIFRoaXMgbW9kZSByZXNwZWN0cyBkZW5vLmxvY2ssXG4gKiBERU5PX0RJUiwgREVOT19BVVRIX1RPS0VOUywgYW5kIGFsbCBzaW1pbGFyIGxvYWRpbmcgY29uZmlndXJhdGlvbi4gRmlsZXMgYXJlXG4gKiBjYWNoZWQgb24gZGlzayBpbiB0aGUgc2FtZSBEZW5vIGNhY2hlIGFzIHRoZSBEZW5vIGV4ZWN1dGFibGUsIGFuZCB3aWxsIG5vdCBiZVxuICogcmUtZG93bmxvYWRlZCBvbiBzdWJzZXF1ZW50IGJ1aWxkcy5cbiAqXG4gKiBOUE0gc3BlY2lmaWVycyBjYW4gYmUgdXNlZCBpbiB0aGUgbmF0aXZlIGxvYWRlciB3aXRob3V0IHJlcXVpcmluZyBhIGxvY2FsXG4gKiBgbm9kZV9tb2R1bGVzYCBkaXJlY3RvcnkuIE5QTSBwYWNrYWdlcyBhcmUgcmVzb2x2ZWQsIGRvd25sb2FkZWQsIGNhY2hlZCwgYW5kXG4gKiBsb2FkZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBEZW5vIGV4ZWN1dGFibGUgZG9lcy5cbiAqXG4gKiBKU1Igc3BlY2lmaWVycyBjYW4gYmUgdXNlZCB3aXRob3V0IHJlc3RyaWN0aW9ucyBpbiB0aGUgbmF0aXZlIGxvYWRlci4gVG9cbiAqIGVuc3VyZSBkZXBlbmRlbmNpZXMgYXJlIGRlLWR1cGxpY2F0ZWQgY29ycmVjdGx5LCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgYVxuICogbG9ja2ZpbGUuXG4gKlxuICogIyMjIFBvcnRhYmxlIExvYWRlclxuICpcbiAqIFRoZSBwb3J0YWJsZSBsb2FkZXIgZG9lcyBtb2R1bGUgZG93bmxvYWRpbmcgYW5kIGNhY2hpbmcgd2l0aCBvbmx5IFdlYiBBUElzLlxuICogUmVxdWlyZXMgYC0tYWxsb3ctcmVhZGAgYW5kL29yIGAtLWFsbG93LW5ldGAuIFRoaXMgbW9kZSBkb2VzIG5vdCByZXNwZWN0XG4gKiBkZW5vLmxvY2ssIERFTk9fRElSLCBERU5PX0FVVEhfVE9LRU5TLCBvciBhbnkgb3RoZXIgbG9hZGluZyBjb25maWd1cmF0aW9uLiBJdFxuICogZG9lcyBub3QgY2FjaGUgZG93bmxvYWRlZCBmaWxlcy4gSXQgd2lsbCByZS1kb3dubG9hZCBmaWxlcyBvbiBldmVyeSBidWlsZC5cbiAqXG4gKiBOUE0gc3BlY2lmaWVycyBjYW4gYmUgdXNlZCBpbiB0aGUgcG9ydGFibGUgbG9hZGVyLCBidXQgcmVxdWlyZSBhIGxvY2FsXG4gKiBgbm9kZV9tb2R1bGVzYCBkaXJlY3RvcnkuIFRoZSBgbm9kZV9tb2R1bGVzYCBkaXJlY3RvcnkgbXVzdCBiZSBjcmVhdGVkIHByaW9yXG4gKiB1c2luZyBEZW5vJ3MgYC0tbm9kZS1tb2R1bGVzLWRpcmAgZmxhZy5cbiAqXG4gKiBKU1Igc3BlY2lmaWVycyByZXF1aXJlIGEgbG9ja2ZpbGUgdG8gYmUgcHJlc2VudCB0byByZXNvbHZlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVub0xvYWRlclBsdWdpbihcbiAgb3B0aW9uczogRGVub0xvYWRlclBsdWdpbk9wdGlvbnMgPSB7fSxcbik6IGVzYnVpbGQuUGx1Z2luIHtcbiAgY29uc3QgbG9hZGVyID0gb3B0aW9ucy5sb2FkZXIgPz8gREVGQVVMVF9MT0FERVI7XG4gIGlmIChMT0FERVJTLmluZGV4T2YobG9hZGVyKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbG9hZGVyOiAke2xvYWRlcn1gKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwiZGVuby1sb2FkZXJcIixcbiAgICBzZXR1cChidWlsZCkge1xuICAgICAgY29uc3QgY3dkID0gYnVpbGQuaW5pdGlhbE9wdGlvbnMuYWJzV29ya2luZ0RpciA/PyBEZW5vLmN3ZCgpO1xuXG4gICAgICBsZXQgbm9kZU1vZHVsZXNEaXI6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgICAgaWYgKG9wdGlvbnMubm9kZU1vZHVsZXNEaXIpIHtcbiAgICAgICAgbm9kZU1vZHVsZXNEaXIgPSBqb2luKGN3ZCwgXCJub2RlX21vZHVsZXNcIik7XG4gICAgICB9XG5cbiAgICAgIGxldCBsb2FkZXJJbXBsOiBMb2FkZXI7XG5cbiAgICAgIGNvbnN0IHBhY2thZ2VJZE1hcHBpbmcgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gICAgICBidWlsZC5vblN0YXJ0KGFzeW5jIGZ1bmN0aW9uIG9uU3RhcnQoKSB7XG4gICAgICAgIHBhY2thZ2VJZE1hcHBpbmcuY2xlYXIoKTtcbiAgICAgICAgc3dpdGNoIChsb2FkZXIpIHtcbiAgICAgICAgICBjYXNlIFwibmF0aXZlXCI6XG4gICAgICAgICAgICBsb2FkZXJJbXBsID0gbmV3IE5hdGl2ZUxvYWRlcih7XG4gICAgICAgICAgICAgIGluZm9PcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgY3dkLFxuICAgICAgICAgICAgICAgIGNvbmZpZzogb3B0aW9ucy5jb25maWdQYXRoLFxuICAgICAgICAgICAgICAgIGltcG9ydE1hcDogb3B0aW9ucy5pbXBvcnRNYXBVUkwsXG4gICAgICAgICAgICAgICAgbG9jazogb3B0aW9ucy5sb2NrUGF0aCxcbiAgICAgICAgICAgICAgICBub2RlTW9kdWxlc0Rpcjogb3B0aW9ucy5ub2RlTW9kdWxlc0RpcixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcInBvcnRhYmxlXCI6IHtcbiAgICAgICAgICAgIGxldCBsb2NrUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucy5sb2NrUGF0aDtcbiAgICAgICAgICAgIGlmIChsb2NrUGF0aCA9PT0gdW5kZWZpbmVkICYmIG9wdGlvbnMuY29uZmlnUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWREZW5vQ29uZmlnKG9wdGlvbnMuY29uZmlnUGF0aCk7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uZmlnLmxvY2sgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBsb2NrUGF0aCA9IGpvaW4oZGlybmFtZShvcHRpb25zLmNvbmZpZ1BhdGgpLCBjb25maWcubG9jayk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLmxvY2sgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgbG9ja1BhdGggPSBqb2luKGRpcm5hbWUob3B0aW9ucy5jb25maWdQYXRoKSwgXCJkZW5vLmxvY2tcIik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvYWRlckltcGwgPSBuZXcgUG9ydGFibGVMb2FkZXIoe1xuICAgICAgICAgICAgICBsb2NrOiBsb2NrUGF0aCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVJbk5vZGVNb2R1bGVzKFxuICAgICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICAgIHBhY2thZ2VJZDogc3RyaW5nLFxuICAgICAgICBraW5kOiBlc2J1aWxkLkltcG9ydEtpbmQsXG4gICAgICAgIHJlc29sdmVEaXI6IHN0cmluZyxcbiAgICAgICAgaW1wb3J0ZXI6IHN0cmluZyxcbiAgICAgICAgbmFtZXNwYWNlOiBzdHJpbmcsXG4gICAgICApOiBQcm9taXNlPGVzYnVpbGQuT25SZXNvbHZlUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJ1aWxkLnJlc29sdmUocGF0aCwge1xuICAgICAgICAgIGtpbmQsXG4gICAgICAgICAgcmVzb2x2ZURpcixcbiAgICAgICAgICBpbXBvcnRlcixcbiAgICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgICAgcGx1Z2luRGF0YTogSU5fTk9ERV9NT0RVTEVTX1JFU09MVkVELFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0LnBsdWdpbkRhdGEgPSBJTl9OT0RFX01PRFVMRVM7XG4gICAgICAgIHBhY2thZ2VJZE1hcHBpbmcuc2V0KHJlc3VsdC5wYXRoLCBwYWNrYWdlSWQpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBhc3luYyBmdW5jdGlvbiBvblJlc29sdmUoXG4gICAgICAgIGFyZ3M6IGVzYnVpbGQuT25SZXNvbHZlQXJncyxcbiAgICAgICk6IFByb21pc2U8ZXNidWlsZC5PblJlc29sdmVSZXN1bHQgfCBudWxsIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChhcmdzLm5hbWVzcGFjZSA9PT0gXCJmaWxlXCIgJiYgYXJncy5wbHVnaW5EYXRhID09PSBJTl9OT0RFX01PRFVMRVMpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBCVUlMVElOX05PREVfTU9EVUxFUy5oYXMoYXJncy5wYXRoKSB8fFxuICAgICAgICAgICAgQlVJTFRJTl9OT0RFX01PRFVMRVMuaGFzKFwibm9kZTpcIiArIGFyZ3MucGF0aClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHBhdGg6IGFyZ3MucGF0aCxcbiAgICAgICAgICAgICAgZXh0ZXJuYWw6IHRydWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9kZU1vZHVsZXNEaXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJ1aWxkLnJlc29sdmUoYXJncy5wYXRoLCB7XG4gICAgICAgICAgICAgIGtpbmQ6IGFyZ3Mua2luZCxcbiAgICAgICAgICAgICAgcmVzb2x2ZURpcjogYXJncy5yZXNvbHZlRGlyLFxuICAgICAgICAgICAgICBpbXBvcnRlcjogYXJncy5pbXBvcnRlcixcbiAgICAgICAgICAgICAgbmFtZXNwYWNlOiBhcmdzLm5hbWVzcGFjZSxcbiAgICAgICAgICAgICAgcGx1Z2luRGF0YTogSU5fTk9ERV9NT0RVTEVTX1JFU09MVkVELFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXN1bHQucGx1Z2luRGF0YSA9IElOX05PREVfTU9EVUxFUztcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGxvYWRlckltcGwubm9kZU1vZHVsZXNEaXJGb3JQYWNrYWdlICYmXG4gICAgICAgICAgICBsb2FkZXJJbXBsLnBhY2thZ2VJZEZyb21OYW1lSW5QYWNrYWdlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRQYWNrYWdlSWQgPSBwYWNrYWdlSWRNYXBwaW5nLmdldChhcmdzLmltcG9ydGVyKTtcbiAgICAgICAgICAgIGlmICghcGFyZW50UGFja2FnZUlkKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgQ291bGQgbm90IGZpbmQgcGFja2FnZSBJRCBmb3IgaW1wb3J0ZXI6ICR7YXJncy5pbXBvcnRlcn1gLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFyZ3MucGF0aC5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZUluTm9kZU1vZHVsZXMoXG4gICAgICAgICAgICAgICAgYXJncy5wYXRoLFxuICAgICAgICAgICAgICAgIHBhcmVudFBhY2thZ2VJZCxcbiAgICAgICAgICAgICAgICBhcmdzLmtpbmQsXG4gICAgICAgICAgICAgICAgYXJncy5yZXNvbHZlRGlyLFxuICAgICAgICAgICAgICAgIGFyZ3MuaW1wb3J0ZXIsXG4gICAgICAgICAgICAgICAgYXJncy5uYW1lc3BhY2UsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsZXQgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgICAgICAgICAgICAgbGV0IHBhdGhQYXJ0czogc3RyaW5nW107XG4gICAgICAgICAgICAgIGlmIChhcmdzLnBhdGguc3RhcnRzV2l0aChcIkBcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbc2NvcGUsIG5hbWUsIC4uLnJlc3RdID0gYXJncy5wYXRoLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgICAgICAgICBwYWNrYWdlTmFtZSA9IGAke3Njb3BlfS8ke25hbWV9YDtcbiAgICAgICAgICAgICAgICBwYXRoUGFydHMgPSByZXN0O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtuYW1lLCAuLi5yZXN0XSA9IGFyZ3MucGF0aC5zcGxpdChcIi9cIik7XG4gICAgICAgICAgICAgICAgcGFja2FnZU5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBhdGhQYXJ0cyA9IHJlc3Q7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcGFja2FnZUlkID0gbG9hZGVySW1wbC5wYWNrYWdlSWRGcm9tTmFtZUluUGFja2FnZShcbiAgICAgICAgICAgICAgICBwYWNrYWdlTmFtZSxcbiAgICAgICAgICAgICAgICBwYXJlbnRQYWNrYWdlSWQsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVEaXIgPSBhd2FpdCBsb2FkZXJJbXBsLm5vZGVNb2R1bGVzRGlyRm9yUGFja2FnZShcbiAgICAgICAgICAgICAgICBwYWNrYWdlSWQsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBbcGFja2FnZU5hbWUsIC4uLnBhdGhQYXJ0c10uam9pbihcIi9cIik7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlSW5Ob2RlTW9kdWxlcyhcbiAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgIHBhY2thZ2VJZCxcbiAgICAgICAgICAgICAgICBhcmdzLmtpbmQsXG4gICAgICAgICAgICAgICAgcmVzb2x2ZURpcixcbiAgICAgICAgICAgICAgICBhcmdzLmltcG9ydGVyLFxuICAgICAgICAgICAgICAgIGFyZ3MubmFtZXNwYWNlLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBUbyB1c2UgXCJucG06XCIgc3BlY2lmaWVycywgeW91IG11c3Qgc3BlY2lmeSBcIm5vZGVNb2R1bGVzRGlyOiB0cnVlXCIsIG9yIHVzZSBcImxvYWRlcjogbmF0aXZlXCIuYCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNwZWNpZmllciA9IGVzYnVpbGRSZXNvbHV0aW9uVG9VUkwoYXJncyk7XG5cbiAgICAgICAgLy8gT25jZSB3ZSBoYXZlIGFuIGFic29sdXRlIHBhdGgsIGxldCB0aGUgbG9hZGVyIHJlc29sdmVyIGZpZ3VyZSBvdXRcbiAgICAgICAgLy8gd2hhdCB0byBkbyB3aXRoIGl0LlxuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBsb2FkZXJJbXBsLnJlc29sdmUoc3BlY2lmaWVyKTtcblxuICAgICAgICBzd2l0Y2ggKHJlcy5raW5kKSB7XG4gICAgICAgICAgY2FzZSBcImVzbVwiOiB7XG4gICAgICAgICAgICBjb25zdCB7IHNwZWNpZmllciB9ID0gcmVzO1xuICAgICAgICAgICAgcmV0dXJuIHVybFRvRXNidWlsZFJlc29sdXRpb24oc3BlY2lmaWVyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcIm5wbVwiOiB7XG4gICAgICAgICAgICBsZXQgcmVzb2x2ZURpcjogc3RyaW5nO1xuICAgICAgICAgICAgaWYgKG5vZGVNb2R1bGVzRGlyKSB7XG4gICAgICAgICAgICAgIHJlc29sdmVEaXIgPSBub2RlTW9kdWxlc0RpcjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobG9hZGVySW1wbC5ub2RlTW9kdWxlc0RpckZvclBhY2thZ2UpIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZURpciA9IGF3YWl0IGxvYWRlckltcGwubm9kZU1vZHVsZXNEaXJGb3JQYWNrYWdlKFxuICAgICAgICAgICAgICAgIHJlcy5wYWNrYWdlSWQsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFRvIHVzZSBcIm5wbTpcIiBzcGVjaWZpZXJzLCB5b3UgbXVzdCBzcGVjaWZ5IFwibm9kZU1vZHVsZXNEaXI6IHRydWVcIiwgb3IgdXNlIFwibG9hZGVyOiBuYXRpdmVcIi5gLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcGF0aCA9IGAke3Jlcy5wYWNrYWdlTmFtZX0ke3Jlcy5wYXRoID8/IFwiXCJ9YDtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlSW5Ob2RlTW9kdWxlcyhcbiAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgcmVzLnBhY2thZ2VJZCxcbiAgICAgICAgICAgICAgYXJncy5raW5kLFxuICAgICAgICAgICAgICByZXNvbHZlRGlyLFxuICAgICAgICAgICAgICBhcmdzLmltcG9ydGVyLFxuICAgICAgICAgICAgICBhcmdzLm5hbWVzcGFjZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJub2RlXCI6IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHBhdGg6IHJlcy5wYXRoLFxuICAgICAgICAgICAgICBleHRlcm5hbDogdHJ1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBidWlsZC5vblJlc29sdmUoeyBmaWx0ZXI6IC8uKi8sIG5hbWVzcGFjZTogXCJmaWxlXCIgfSwgb25SZXNvbHZlKTtcbiAgICAgIGJ1aWxkLm9uUmVzb2x2ZSh7IGZpbHRlcjogLy4qLywgbmFtZXNwYWNlOiBcImh0dHBcIiB9LCBvblJlc29sdmUpO1xuICAgICAgYnVpbGQub25SZXNvbHZlKHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IFwiaHR0cHNcIiB9LCBvblJlc29sdmUpO1xuICAgICAgYnVpbGQub25SZXNvbHZlKHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IFwiZGF0YVwiIH0sIG9uUmVzb2x2ZSk7XG4gICAgICBidWlsZC5vblJlc29sdmUoeyBmaWx0ZXI6IC8uKi8sIG5hbWVzcGFjZTogXCJucG1cIiB9LCBvblJlc29sdmUpO1xuICAgICAgYnVpbGQub25SZXNvbHZlKHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IFwianNyXCIgfSwgb25SZXNvbHZlKTtcbiAgICAgIGJ1aWxkLm9uUmVzb2x2ZSh7IGZpbHRlcjogLy4qLywgbmFtZXNwYWNlOiBcIm5vZGVcIiB9LCBvblJlc29sdmUpO1xuXG4gICAgICBhc3luYyBmdW5jdGlvbiBvbkxvYWQoXG4gICAgICAgIGFyZ3M6IGVzYnVpbGQuT25Mb2FkQXJncyxcbiAgICAgICk6IFByb21pc2U8ZXNidWlsZC5PbkxvYWRSZXN1bHQgfCBudWxsPiB7XG4gICAgICAgIGlmIChhcmdzLm5hbWVzcGFjZSA9PT0gXCJmaWxlXCIgJiYgYXJncy5wbHVnaW5EYXRhID09PSBJTl9OT0RFX01PRFVMRVMpIHtcbiAgICAgICAgICBjb25zdCBjb250ZW50cyA9IGF3YWl0IERlbm8ucmVhZEZpbGUoYXJncy5wYXRoKTtcbiAgICAgICAgICByZXR1cm4geyBsb2FkZXI6IFwianNcIiwgY29udGVudHMgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzcGVjaWZpZXIgPSBlc2J1aWxkUmVzb2x1dGlvblRvVVJMKGFyZ3MpO1xuICAgICAgICByZXR1cm4gbG9hZGVySW1wbC5sb2FkRXNtKHNwZWNpZmllcik7XG4gICAgICB9XG4gICAgICAvLyBUT0RPKGx1Y2FjYXNvbmF0byk6IG9uY2UgaHR0cHM6Ly9naXRodWIuY29tL2V2YW53L2VzYnVpbGQvcHVsbC8yOTY4IGlzIGZpeGVkLCByZW1vdmUgdGhlIGNhdGNoIGFsbCBcImZpbGVcIiBoYW5kbGVyXG4gICAgICBidWlsZC5vbkxvYWQoeyBmaWx0ZXI6IC8uKi8sIG5hbWVzcGFjZTogXCJmaWxlXCIgfSwgb25Mb2FkKTtcbiAgICAgIGJ1aWxkLm9uTG9hZCh7IGZpbHRlcjogLy4qLywgbmFtZXNwYWNlOiBcImh0dHBcIiB9LCBvbkxvYWQpO1xuICAgICAgYnVpbGQub25Mb2FkKHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IFwiaHR0cHNcIiB9LCBvbkxvYWQpO1xuICAgICAgYnVpbGQub25Mb2FkKHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IFwiZGF0YVwiIH0sIG9uTG9hZCk7XG4gICAgfSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgXCIuL2Rlbm8tbW9jay5qc1wiO1xuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcIi4vZXNidWlsZC13YXNtLnRzXCI7XG5pbXBvcnQgeyBkZW5vUmVzb2x2ZXJQbHVnaW4gfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQveC9lc2J1aWxkX2Rlbm9fbG9hZGVyQDAuOS4wL21vZC50c1wiO1xuXG4vLyBwb3J0ZWQgZnJvbSBodHRwczovL2Rlbm8ubGFuZC94L2VzYnVpbGRfZGVub19sb2FkZXJAMC45LjAvc3JjL3BsdWdpbl9kZW5vX3Jlc29sdmVyLnRzXG5leHBvcnQgaW50ZXJmYWNlIERlbm9SZXNvbHZlclBsdWdpbk9wdGlvbnMge1xuICAvKipcbiAgICogU3BlY2lmeSB0aGUgcGF0aCB0byBhIGRlbm8uanNvbiBjb25maWcgZmlsZSB0byB1c2UuIFRoaXMgaXMgZXF1aXZhbGVudCB0b1xuICAgKiB0aGUgYC0tY29uZmlnYCBmbGFnIHRvIHRoZSBEZW5vIGV4ZWN1dGFibGUuIFRoaXMgcGF0aCBtdXN0IGJlIGFic29sdXRlLlxuICAgKi9cbiAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBVUkwgdG8gYW4gaW1wb3J0IG1hcCBmaWxlIHRvIHVzZSB3aGVuIHJlc29sdmluZyBpbXBvcnRcbiAgICogc3BlY2lmaWVycy4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBgLS1pbXBvcnQtbWFwYCBmbGFnIHRvIHRoZSBEZW5vXG4gICAqIGV4ZWN1dGFibGUuIFRoaXMgVVJMIG1heSBiZSByZW1vdGUgb3IgYSBsb2NhbCBmaWxlIFVSTC5cbiAgICpcbiAgICogSWYgdGhpcyBvcHRpb24gaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlbm8uanNvbiBjb25maWcgZmlsZSBpcyBjb25zdWx0ZWQgdG9cbiAgICogZGV0ZXJtaW5lIHdoYXQgaW1wb3J0IG1hcCB0byB1c2UsIGlmIGFueS5cbiAgICovXG4gIGltcG9ydE1hcFVSTD86IHN0cmluZztcbn1cblxuLyoqICB7QGxpbmsgZGVub1Jlc29sdmVyUGx1Z2lufSBmb3IgYnJvd3NlciAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVyOiAob3B0aW9ucz86IERlbm9SZXNvbHZlclBsdWdpbk9wdGlvbnMpID0+IFBsdWdpbiA9XG4gIGRlbm9SZXNvbHZlclBsdWdpbiBhcyB1bmtub3duIGFzIChcbiAgICBvcHRpb25zPzogRGVub1Jlc29sdmVyUGx1Z2luT3B0aW9ucyxcbiAgKSA9PiBQbHVnaW47XG4iLCAiY29uc3QgRVJSX01TR19NVVNUX05PVF9SRVRVUk4gPSAnIG11c3Qgbm90IHJldHVybiAnO1xuY29uc3QgVFJBTlNGT1JNX0ZVTkNUSU9OX05BTUUgPSAnYHRyYW5zZm9ybWVyYCc7XG5jb25zdCBSRUNPVkVSWV9GVU5DVElPTl9OQU1FID0gJ2ByZWNvdmVyZXJgJztcbmNvbnN0IERFRkFVTFRfVkFMVUVfTkFNRSA9ICdgZGVmYXVsdFZhbHVlYCc7XG5leHBvcnQgY29uc3QgRVJSX01TR19UUkFOU0ZPUk1FUl9NVVNUX05PVF9SRVRVUk4gPSBUUkFOU0ZPUk1fRlVOQ1RJT05fTkFNRSArIEVSUl9NU0dfTVVTVF9OT1RfUkVUVVJOO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfQ0FMTEVEX1dJVEggPSAnY2FsbGVkIHdpdGggJztcbmV4cG9ydCBjb25zdCBFUlJfTVNHX0RFRkFVTFRfVkFMVUVfTVVTVF9OT1RfQkUgPSBERUZBVUxUX1ZBTFVFX05BTUUgKyAnIG11c3Qgbm90IGJlICc7XG5leHBvcnQgY29uc3QgRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOID0gUkVDT1ZFUllfRlVOQ1RJT05fTkFNRSArIEVSUl9NU0dfTVVTVF9OT1RfUkVUVVJOO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfSU5QVVRfSVNfRlJPWkVOX05PVF9DQVNUX1RPX01VVEFCTEUgPSAnaW5wdXQgaXMgZnJvemVuLCBjYW5ub3QgY2FzdCB0byBtdXRhYmxlJztcbiIsICJpbXBvcnQgeyBFUlJfTVNHX0NBTExFRF9XSVRIIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvZXJyb3JfbWVzc2FnZS5qcyc7XG5jb25zdCBPS19UWVBFX1NUUiA9ICdgT2tgJztcbmNvbnN0IEVSUl9UWVBFX1NUUiA9ICdgRXJyYCc7XG5leHBvcnQgY29uc3QgRVJSX01TR19VTldSQVBfT0tfQlVUX0lOUFVUX0lTX0VSUiA9IEVSUl9NU0dfQ0FMTEVEX1dJVEggKyBFUlJfVFlQRV9TVFI7XG5leHBvcnQgY29uc3QgRVJSX01TR19VTldSQVBfRVJSX0JVVF9JTlBVVF9JU19PSyA9IEVSUl9NU0dfQ0FMTEVEX1dJVEggKyBPS19UWVBFX1NUUjtcbmV4cG9ydCBjb25zdCBFUlJfTVNHX0ZPUl9FUlJPUl9PQkpFQ1RfR0VORVJBVEVEX0JZX1VOV1JBUF9PUl9USFJPVyA9ICdDYXJyeWluZyBgRWAgaW4gJyArIEVSUl9UWVBFX1NUUiArICcgaW5zdGVhZCBvZiB0aHJvd2luZyBpdCBkaXJlY3RseS4gU2VlIGAuY2F1c2VgJztcbmNvbnN0IE1TR19CVUlMVElOX0VSUk9SX0lOU1RBTkNFX09GX0NVUlJFTlRfUkVBTE0gPSAnYW4gaW5zdGFuY2Ugb2YgYEVycm9yYCBvZiB0aGUgY3VycmVudCByZWFsbS4nO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfVEhST1dOX1ZBTFVFX0lTX05PVF9CVUlMVElOX0VSUk9SX0lOU1RBTkNFID0gJ1RoZSB0aHJvd24gdmFsdWUgaXMgbm90ICcgKyBNU0dfQlVJTFRJTl9FUlJPUl9JTlNUQU5DRV9PRl9DVVJSRU5UX1JFQUxNO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfQ09OVEFJTkVEX1RZUEVfRV9TSE9VTERfQkVfQlVJTFRJTl9FUlJPUl9JTlNUQU5DRSA9ICdUaGUgY29udGFpbmVkIEUgc2hvdWxkIGJlICcgKyBNU0dfQlVJTFRJTl9FUlJPUl9JTlNUQU5DRV9PRl9DVVJSRU5UX1JFQUxNO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfRE9UX0NBVVNFX1BST1BTX0lTX05PVF9DVVJSRU5UX1JFQUxNX0JVSUxUSU5fRVJST1JfSU5TVEFOQ0UgPSAnVGhpcyBgLmNhdXNlYCBpcyBub3QgJyArIE1TR19CVUlMVElOX0VSUk9SX0lOU1RBTkNFX09GX0NVUlJFTlRfUkVBTE07XG4iLCAiaW1wb3J0IHsgRVJSX01TR19VTldSQVBfRVJSX0JVVF9JTlBVVF9JU19PSywgRVJSX01TR19VTldSQVBfT0tfQlVUX0lOUFVUX0lTX0VSUiwgfSBmcm9tICcuL2ludGVybmFsL2Vycm9yX21lc3NhZ2UuanMnO1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2soaW5wdXQpIHtcbiAgICByZXR1cm4gaW5wdXQub2s7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlT2sodmFsKSB7XG4gICAgY29uc3QgciA9IHtcbiAgICAgICAgb2s6IHRydWUsXG4gICAgICAgIHZhbCxcbiAgICAgICAgLy8gWFhYOlxuICAgICAgICAvLyAgV2UgbmVlZCB0byBmaWxsIHdpdGggYG51bGxgIHRvIGltcHJvdmUgdGhlIGNvbXBhdGliaWxpdHkgd2l0aCBOZXh0LmpzXG4gICAgICAgIC8vICBzZWUgaHR0cHM6Ly9naXRodWIuY29tL29wdGlvbi10L29wdGlvbi10L3B1bGwvMTI1NlxuICAgICAgICBlcnI6IG51bGwsXG4gICAgfTtcbiAgICByZXR1cm4gcjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0VycihpbnB1dCkge1xuICAgIHJldHVybiAhaW5wdXQub2s7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRXJyKGVycikge1xuICAgIGNvbnN0IHIgPSB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgLy8gWFhYOlxuICAgICAgICAvLyAgV2UgbmVlZCB0byBmaWxsIHdpdGggYG51bGxgIHRvIGltcHJvdmUgdGhlIGNvbXBhdGliaWxpdHkgd2l0aCBOZXh0LmpzXG4gICAgICAgIC8vICBzZWUgaHR0cHM6Ly9naXRodWIuY29tL29wdGlvbi10L29wdGlvbi10L3B1bGwvMTI1NlxuICAgICAgICB2YWw6IG51bGwsXG4gICAgICAgIGVycixcbiAgICB9O1xuICAgIHJldHVybiByO1xufVxuLyoqXG4gKiAgUmV0dXJuIHRoZSBpbm5lciBgVGAgb2YgYSBgT2soVClgLlxuICpcbiAqICBAdGhyb3dzIHtUeXBlRXJyb3J9XG4gKiAgICAgIFRocm93cyBpZiB0aGUgc2VsZiBpcyBhIGBFcnJgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwT2soaW5wdXQpIHtcbiAgICByZXR1cm4gZXhwZWN0T2soaW5wdXQsIEVSUl9NU0dfVU5XUkFQX09LX0JVVF9JTlBVVF9JU19FUlIpO1xufVxuLyoqXG4gKiAgUmV0dXJuIHRoZSBpbm5lciBgRWAgb2YgYSBgRXJyKEUpYC5cbiAqXG4gKiAgQHRocm93cyB7VHlwZUVycm9yfVxuICogICAgICBUaHJvd3MgaWYgdGhlIHNlbGYgaXMgYSBgT2tgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwRXJyKGlucHV0KSB7XG4gICAgcmV0dXJuIGV4cGVjdEVycihpbnB1dCwgRVJSX01TR19VTldSQVBfRVJSX0JVVF9JTlBVVF9JU19PSyk7XG59XG4vKipcbiAqICBSZXR1cm4gX2lucHV0XyBhcyBgVGAgaWYgdGhlIHBhc3NlZCBfaW5wdXRfIGlzIGBPayhUKWAuXG4gKiAgT3RoZXJ3aXNlLCB0aHJvdyBgVHlwZUVycm9yYCB3aXRoIHRoZSBwYXNzZWQgYG1zZ2AuXG4gKlxuICogIEB0aHJvd3Mge1R5cGVFcnJvcn1cbiAqICAgICAgVGhyb3dzIGlmIHRoZSBzZWxmIGlzIGEgYEVycmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBlY3RPayhpbnB1dCwgbXNnKSB7XG4gICAgaWYgKCFpbnB1dC5vaykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKG1zZyk7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dC52YWw7XG59XG4vKipcbiAqICBSZXR1cm4gX2lucHV0XyBhcyBgRWAgaWYgdGhlIHBhc3NlZCBfaW5wdXRfIGlzIGBFcnIoRSlgLlxuICogIE90aGVyd2lzZSwgdGhyb3cgYFR5cGVFcnJvcmAgd2l0aCB0aGUgcGFzc2VkIGBtc2dgLlxuICpcbiAqICBAdGhyb3dzIHtUeXBlRXJyb3J9XG4gKiAgICAgIFRocm93cyBpZiB0aGUgc2VsZiBpcyBhIGBPa2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBlY3RFcnIoaW5wdXQsIG1zZykge1xuICAgIGlmIChpbnB1dC5vaykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKG1zZyk7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dC5lcnI7XG59XG4iLCAiLyoqXG4gKiAgUmV0dXJucyBgRXJyKEUpYCBpZiB0aGUgX2lucHV0XyBpcyBgRXJyKEUpYCxcbiAqICBvdGhlcndpc2UgY2FsbHMgX3RyYW5zZm9ybWVyXyB3aXRoIHRoZSB2YWx1ZSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICpcbiAqICBYWFg6XG4gKiAgU29tZSBsYW5ndWFnZXMgY2FsbCB0aGlzIG9wZXJhdGlvbiBmbGF0bWFwLlxuICogIEJ1dCB3ZSBkb24ndCBwcm92aWRlIGBmbGF0TWFwKClgIGFzIGFsaWFzIG9mIHRoaXMgZnVuY3Rpb25cbiAqICB0byBzb3J0IHdpdGggb3RoZXIgQVBJcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFuZFRoZW5Gb3JSZXN1bHQoaW5wdXQsIHRyYW5zZm9ybWVyKSB7XG4gICAgaWYgKCFpbnB1dC5vaykge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IHRyYW5zZm9ybWVyKGlucHV0LnZhbCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsICJpbXBvcnQgeyBpc0VyciwgdW53cmFwT2sgfSBmcm9tICcuL3Jlc3VsdC5qcyc7XG4vKipcbiAqICBSZXR1cm5zIGBQcm9taXNlXHUwMDNjRXJyKEUpXHUwMDNlYCBpZiB0aGUgX2lucHV0XyBpcyBgRXJyKEUpYCxcbiAqICBvdGhlcndpc2UgY2FsbHMgX3RyYW5zZm9ybWVyXyB3aXRoIHRoZSB2YWx1ZSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICpcbiAqICBYWFg6XG4gKiAgU29tZSBsYW5ndWFnZXMgY2FsbCB0aGlzIG9wZXJhdGlvbiBmbGF0bWFwLlxuICogIEJ1dCB3ZSBkb24ndCBwcm92aWRlIGBmbGF0TWFwKClgIGFzIGFsaWFzIG9mIHRoaXMgZnVuY3Rpb25cbiAqICB0byBzb3J0IHdpdGggb3RoZXIgQVBJcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFuZFRoZW5Bc3luY0ZvclJlc3VsdChpbnB1dCwgdHJhbnNmb3JtZXIpIHtcbiAgICBpZiAoaXNFcnIoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG4gICAgY29uc3Qgc291cmNlID0gdW53cmFwT2soaW5wdXQpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybWVyKHNvdXJjZSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsICJpbXBvcnQgeyBhbmRUaGVuRm9yUmVzdWx0IH0gZnJvbSAnLi9hbmRfdGhlbi5qcyc7XG5mdW5jdGlvbiBmbGF0dGVuKGlucHV0KSB7XG4gICAgcmV0dXJuIGlucHV0O1xufVxuLyoqXG4gKiBDb252ZXJ0cyBmcm9tIGBSZXN1bHRcdTAwM2NSZXN1bHRcdTAwM2NULCBFXHUwMDNlLCBFXHUwMDNlYCB0byBgUmVzdWx0XHUwMDNjVCwgRVx1MDAzZWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5Gb3JSZXN1bHQoaW5wdXQpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhbmRUaGVuRm9yUmVzdWx0KGlucHV0LCBmbGF0dGVuKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZU9rLCBjcmVhdGVFcnIgfSBmcm9tICcuL3Jlc3VsdC5qcyc7XG4vKipcbiAqICBDb252ZXJ0IHtAbGluayBQcm9taXNlU2V0dGxlZFJlc3VsdFx1MDAzY1RcdTAwM2V9IHJldHVybmVkIGJ5IHtAbGluayBQcm9taXNlLmFsbFNldHRsZWR9IHRvIHtAbGluayBSZXN1bHR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tUHJvbWlzZVNldHRsZWRSZXN1bHRUb1Jlc3VsdChpbnB1dCkge1xuICAgIGNvbnN0IHN0YXR1cyA9IGlucHV0LnN0YXR1cztcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICBjYXNlICdmdWxmaWxsZWQnOiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGlucHV0LnZhbHVlO1xuICAgICAgICAgICAgY29uc3Qgb2tXcmFwcGVkID0gY3JlYXRlT2sodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIG9rV3JhcHBlZDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdyZWplY3RlZCc6IHtcbiAgICAgICAgICAgIGNvbnN0IHJlYXNvbiA9IGlucHV0LnJlYXNvbjtcbiAgICAgICAgICAgIGNvbnN0IGVycldyYXBwZWQgPSBjcmVhdGVFcnIocmVhc29uKTtcbiAgICAgICAgICAgIHJldHVybiBlcnJXcmFwcGVkO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1c1N0ciA9IFN0cmluZyhzdGF0dXMpO1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBcXGBQcm9taXNlU2V0dGxlZFJlc3VsdC5zdGF0dXM9JHtzdGF0dXNTdHJ9XFxgIGlzIG5vdCBzdXBwb3J0ZWRgO1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBpc0VyciwgaXNPayB9IGZyb20gJy4vcmVzdWx0LmpzJztcbi8qKlxuICogICogUmV0dXJuIF9pbnB1dF8gZGlyZWN0bHkuXG4gKiAgICAgICogVGhpcyB2YWx1ZSBpcyBwYXNzZWQgYXMgdGhlIGlucHV0LiBCdXQgaXQgbWF5YmUgbXV0YXRlZCBieSBjYWxsaW5nIF9lZmZlY3Rvcl8uXG4gKiAgKiBDYWxsIF9lZmZlY3Rvcl8gd2l0aCB0aGUgaW5uZXIgdmFsdWUgb2YgX2lucHV0XyBpZiBfaW5wdXRfIGlzIGBPayhUKWAuXG4gKiAgKiBUaGlzIG1haW4gcHVycG9zZSBpcyB0byBpbnNwZWN0IGFuIGlubmVyIHZhbHVlIGluIGEgY2hhaW5lZCBmdW5jdGlvbiBjYWxsaW5nLlxuICogICAgSWYgeW91IGRvbid0IGhhdmUgdG8gZG8gaXQsIHlvdSBzaG91bGQgbm90IG11dGF0ZSB0aGUgaW5uZXIgdmFsdWUuXG4gKiAgICBpZi1lbHNlIHN0YXRlbWVudCBtaWdodCBiZSBzdWZmaWNpZW50IHRvIG11dGF0ZSB0aGUgaW5uZXIgdmFsdWUgaW5zdGVhZCBvZiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0T2tGb3JSZXN1bHQoaW5wdXQsIGVmZmVjdG9yKSB7XG4gICAgaWYgKGlzT2soaW5wdXQpKSB7XG4gICAgICAgIGVmZmVjdG9yKGlucHV0LnZhbCk7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dDtcbn1cbi8qKlxuICogICogUmV0dXJuIF9pbnB1dF8gZGlyZWN0bHkuXG4gKiAgICAgICogVGhpcyB2YWx1ZSBpcyBwYXNzZWQgYXMgdGhlIGlucHV0LiBCdXQgaXQgbWF5YmUgbXV0YXRlZCBieSBjYWxsaW5nIF9lZmZlY3Rvcl8uXG4gKiAgKiBDYWxsIF9lZmZlY3Rvcl8gd2l0aCB0aGUgaW5uZXIgdmFsdWUgb2YgX2lucHV0XyBpZiBfaW5wdXRfIGlzIGBFcnIoRSlgLlxuICogICogVGhpcyBtYWluIHB1cnBvc2UgaXMgdG8gaW5zcGVjdCBhbiBpbm5lciB2YWx1ZSBpbiBhIGNoYWluZWQgZnVuY3Rpb24gY2FsbGluZy5cbiAqICAgIElmIHlvdSBkb24ndCBoYXZlIHRvIGRvIGl0LCB5b3Ugc2hvdWxkIG5vdCBtdXRhdGUgdGhlIGlubmVyIHZhbHVlLlxuICogICAgaWYtZWxzZSBzdGF0ZW1lbnQgbWlnaHQgYmUgc3VmZmljaWVudCB0byBtdXRhdGUgdGhlIGlubmVyIHZhbHVlIGluc3RlYWQgb2YgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdEVyckZvclJlc3VsdChpbnB1dCwgZWZmZWN0b3IpIHtcbiAgICBpZiAoaXNFcnIoaW5wdXQpKSB7XG4gICAgICAgIGVmZmVjdG9yKGlucHV0LmVycik7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dDtcbn1cbi8qKlxuICogICogUmV0dXJuIF9pbnB1dF8gZGlyZWN0bHkuXG4gKiAgICAgICogVGhpcyB2YWx1ZSBpcyBwYXNzZWQgYXMgdGhlIGlucHV0LiBCdXQgaXQgbWF5YmUgbXV0YXRlZCBieSBjYWxsaW5nIF9lZmZlY3Rvcl8uXG4gKiAgKiBDYWxsIF9va0VmZmVjdG9yXyB3aXRoIHRoZSBpbm5lciB2YWx1ZSBvZiBfaW5wdXRfIGlmIF9pbnB1dF8gaXMgYE9rKFQpYC5cbiAqICAgIE90aGVyd2lzZSwgY2FsbCBfZXJyRWZmZWN0b3JfIHdpdGggdGhlIGlubmVyIHZhbHVlIGlmIF9pbnB1dF8gaXMgYEVycihFKWBcbiAqICAqIFRoaXMgbWFpbiBwdXJwb3NlIGlzIHRvIGluc3BlY3QgYW4gaW5uZXIgdmFsdWUgaW4gYSBjaGFpbmVkIGZ1bmN0aW9uIGNhbGxpbmcuXG4gKiAgICBJZiB5b3UgZG9uJ3QgaGF2ZSB0byBkbyBpdCwgeW91IHNob3VsZCBub3QgbXV0YXRlIHRoZSBpbm5lciB2YWx1ZS5cbiAqICAgIGlmLWVsc2Ugc3RhdGVtZW50IG1pZ2h0IGJlIHN1ZmZpY2llbnQgdG8gbXV0YXRlIHRoZSBpbm5lciB2YWx1ZSBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc3BlY3RCb3RoRm9yUmVzdWx0KGlucHV0LCBva0VmZmVjdG9yLCBlcnJFZmZlY3Rvcikge1xuICAgIGlmIChpbnB1dC5vaykge1xuICAgICAgICBva0VmZmVjdG9yKGlucHV0LnZhbCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBlcnJFZmZlY3RvcihpbnB1dC5lcnIpO1xuICAgIH1cbiAgICByZXR1cm4gaW5wdXQ7XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlT2sgfSBmcm9tICcuL3Jlc3VsdC5qcyc7XG4vKipcbiAqICBNYXBzIGEgYFJlc3VsdFx1MDAzY1QsIEVcdTAwM2VgIHRvIGBSZXN1bHRcdTAwM2NVLCBFXHUwMDNlYCBieSBhcHBseWluZyBhIF90cmFuc2Zvcm1lcl8gZnVuY3Rpb25cbiAqICB0byBhbiBjb250YWluZWQgYE9rKFQpYCB2YWx1ZSwgbGVhdmluZyBhbiBgRXJyKEUpYCB2YWx1ZSB1bnRvdWNoZWQuXG4gKlxuICogIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29tcG9zZSB0aGUgcmVzdWx0cyBvZiB0d28gZnVuY3Rpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwRm9yUmVzdWx0KGlucHV0LCB0cmFuc2Zvcm1lcikge1xuICAgIGlmICghaW5wdXQub2spIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB0cmFuc2Zvcm1lcihpbnB1dC52YWwpO1xuICAgIHJldHVybiBjcmVhdGVPayhyZXN1bHQpO1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZU9rLCBpc0VyciwgdW53cmFwT2sgfSBmcm9tICcuL3Jlc3VsdC5qcyc7XG4vKipcbiAqICBNYXBzIGEgYFJlc3VsdFx1MDAzY1QsIEVcdTAwM2VgIHRvIGBSZXN1bHRcdTAwM2NVLCBFXHUwMDNlYCBieSBhcHBseWluZyBhIF90cmFuc2Zvcm1lcl8gZnVuY3Rpb25cbiAqICB0byBhbiBjb250YWluZWQgYE9rKFQpYCB2YWx1ZSwgbGVhdmluZyBhbiBgRXJyKEUpYCB2YWx1ZSB1bnRvdWNoZWQuXG4gKlxuICogIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29tcG9zZSB0aGUgcmVzdWx0cyBvZiB0d28gZnVuY3Rpb25zLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFwQXN5bmNGb3JSZXN1bHQoaW5wdXQsIHRyYW5zZm9ybWVyKSB7XG4gICAgaWYgKGlzRXJyKGlucHV0KSkge1xuICAgICAgICBjb25zdCBmYWxsYmFjayA9IGlucHV0O1xuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgfVxuICAgIGNvbnN0IGlubmVyID0gdW53cmFwT2soaW5wdXQpO1xuICAgIGNvbnN0IG1hcHBlZCA9IGF3YWl0IHRyYW5zZm9ybWVyKGlubmVyKTtcbiAgICBjb25zdCByZXN1bHQgPSBjcmVhdGVPayhtYXBwZWQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlRXJyIH0gZnJvbSAnLi9yZXN1bHQuanMnO1xuLyoqXG4gKiAgTWFwcyBhIGBSZXN1bHRcdTAwM2NULCBFXHUwMDNlYCB0byBgUmVzdWx0XHUwMDNjVCwgRlx1MDAzZWAgYnkgYXBwbHlpbmcgYSBfdHJhbnNmb3JtZXJfIGZ1bmN0aW9uIGBtYXBGblx1MDAzY0UsIEZcdTAwM2VgXG4gKiAgdG8gYW4gY29udGFpbmVkIGBFcnIoRSlgIHZhbHVlLCBsZWF2aW5nIGFuIGBPayhUKWAgdmFsdWUgdW50b3VjaGVkLlxuICpcbiAqICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHBhc3MgdGhyb3VnaCBhIHN1Y2Nlc3NmdWwgcmVzdWx0IHdoaWxlIGhhbmRsaW5nIGFuIGVycm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwRXJyRm9yUmVzdWx0KGlucHV0LCB0cmFuc2Zvcm1lcikge1xuICAgIGlmIChpbnB1dC5vaykge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IHRyYW5zZm9ybWVyKGlucHV0LmVycik7XG4gICAgcmV0dXJuIGNyZWF0ZUVycihyZXN1bHQpO1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUVyciwgaXNPayB9IGZyb20gJy4vcmVzdWx0LmpzJztcbi8qKlxuICogIE1hcHMgYSBgUmVzdWx0XHUwMDNjVCwgRVx1MDAzZWAgdG8gYFJlc3VsdFx1MDAzY1QsIEZcdTAwM2VgIGJ5IGFwcGx5aW5nIGEgX3RyYW5zZm9ybWVyXyBmdW5jdGlvbiBgbWFwRm5cdTAwM2NFLCBGXHUwMDNlYFxuICogIHRvIGFuIGNvbnRhaW5lZCBgRXJyKEUpYCB2YWx1ZSwgbGVhdmluZyBhbiBgT2soVClgIHZhbHVlIHVudG91Y2hlZC5cbiAqXG4gKiAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBwYXNzIHRocm91Z2ggYSBzdWNjZXNzZnVsIHJlc3VsdCB3aGlsZSBoYW5kbGluZyBhbiBlcnJvci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1hcEVyckFzeW5jRm9yUmVzdWx0KGlucHV0LCB0cmFuc2Zvcm1lcikge1xuICAgIGlmIChpc09rKGlucHV0KSkge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGNvbnN0IGUgPSBhd2FpdCB0cmFuc2Zvcm1lcihpbnB1dC5lcnIpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGNyZWF0ZUVycihlKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuIiwgIi8qKlxuICogIFJldHVybiB0aGUgcmVzdWx0IG9mIF90cmFuc2Zvcm1lcl8gd2l0aCB1c2luZyBfaW5wdXRfIGFzIGFuIGFyZ3VtZW50IGZvciBpdCBpZiBfaW5wdXRfIGlzIGBPayhUKWAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gX2RlZmF1bHRWYWx1ZV8uXG4gKlxuICogIEJhc2ljYWxseSwgdGhpcyBvcGVyYXRpb24gaXMgYSBjb21iaW5hdGlvbiBgbWFwKClgIGFuZCBgdW53cmFwT3IoKWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBPckZvclJlc3VsdChpbnB1dCwgZGVmYXVsdFZhbHVlLCB0cmFuc2Zvcm1lcikge1xuICAgIGlmIChpbnB1dC5vaykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0cmFuc2Zvcm1lcihpbnB1dC52YWwpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xufVxuIiwgImltcG9ydCB7IGlzRXJyLCB1bndyYXBPayB9IGZyb20gJy4vcmVzdWx0LmpzJztcbi8qKlxuICogIFJldHVybiB0aGUgcmVzdWx0IG9mIF90cmFuc2Zvcm1lcl8gd2l0aCB1c2luZyBfaW5wdXRfIGFzIGFuIGFyZ3VtZW50IGZvciBpdCBpZiBfaW5wdXRfIGlzIGBPayhUKWAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gX2RlZmF1bHRWYWx1ZV8uXG4gKlxuICogIEJhc2ljYWxseSwgdGhpcyBvcGVyYXRpb24gaXMgYSBjb21iaW5hdGlvbiBgbWFwQXN5bmMoKWAgYW5kIGB1bndyYXBPcigpYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1hcE9yQXN5bmNGb3JSZXN1bHQoaW5wdXQsIGRlZmF1bHRWYWx1ZSwgdHJhbnNmb3JtZXIpIHtcbiAgICBpZiAoaXNFcnIoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHNvdXJjZSA9IHVud3JhcE9rKGlucHV0KTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmFuc2Zvcm1lcihzb3VyY2UpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4iLCAiLyoqXG4gKiAgTWFwcyBhIGBSZXN1bHRcdTAwM2NULCBFXHUwMDNlYCB0byBgVWAgYnkgYXBwbHlpbmcgX3RyYW5zZm9ybWVyXyB0byBhIGNvbnRhaW5lZCBgT2soVClgIHZhbHVlIGluIF9pbnB1dF8sXG4gKiAgb3IgYSBfcmVjb3ZlcmVyXyBmdW5jdGlvbiB0byBhIGNvbnRhaW5lZCBgRXJyKEUpYCB2YWx1ZSBpbiBfaW5wdXRfLlxuICogIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gdW5wYWNrIGEgc3VjY2Vzc2Z1bCByZXN1bHQgd2hpbGUgaGFuZGxpbmcgYW4gZXJyb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBPckVsc2VGb3JSZXN1bHQoaW5wdXQsIHJlY292ZXJlciwgdHJhbnNmb3JtZXIpIHtcbiAgICBpZiAoaW5wdXQub2spIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdHJhbnNmb3JtZXIoaW5wdXQudmFsKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgZmFsbGJhY2sgPSByZWNvdmVyZXIoaW5wdXQuZXJyKTtcbiAgICByZXR1cm4gZmFsbGJhY2s7XG59XG4iLCAiaW1wb3J0IHsgaXNPaywgdW53cmFwT2ssIHVud3JhcEVyciB9IGZyb20gJy4vcmVzdWx0LmpzJztcbi8qKlxuICogIE1hcHMgYSBgUmVzdWx0XHUwMDNjVCwgRVx1MDAzZWAgdG8gYFVgIGJ5IGFwcGx5aW5nIF90cmFuc2Zvcm1lcl8gdG8gYSBjb250YWluZWQgYE9rKFQpYCB2YWx1ZSBpbiBfaW5wdXRfLFxuICogIG9yIGEgX3JlY292ZXJlcl8gZnVuY3Rpb24gdG8gYSBjb250YWluZWQgYEVycihFKWAgdmFsdWUgaW4gX2lucHV0Xy5cbiAqICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHVucGFjayBhIHN1Y2Nlc3NmdWwgcmVzdWx0IHdoaWxlIGhhbmRsaW5nIGFuIGVycm9yLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFwT3JFbHNlQXN5bmNGb3JSZXN1bHQoaW5wdXQsIHJlY292ZXJlciwgdHJhbnNmb3JtZXIpIHtcbiAgICBpZiAoaXNPayhpbnB1dCkpIHtcbiAgICAgICAgY29uc3QgaW5uZXIgPSB1bndyYXBPayhpbnB1dCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybWVyKGlubmVyKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgZXJyID0gdW53cmFwRXJyKGlucHV0KTtcbiAgICBjb25zdCBmYWxsYmFjayA9IGF3YWl0IHJlY292ZXJlcihlcnIpO1xuICAgIHJldHVybiBmYWxsYmFjaztcbn1cbiIsICIvKipcbiAqICBDYWxscyBfcmVjb3ZlcmVyXyBhbmQgcmV0dXJuIGl0cyByZXR1cm5lZCB2YWx1ZSBpZiBfaW5wdXRfIGlzIGBFcnIoRSlgLFxuICogIG90aGVyd2lzZSByZXR1cm5zIF9pbnB1dF8gYXMgYE9rKFQpYC5cbiAqICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGZvciBjb250cm9sIGZsb3cgYmFzZWQgb24gcmVzdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9yRWxzZUZvclJlc3VsdChpbnB1dCwgcmVjb3ZlcmVyKSB7XG4gICAgaWYgKGlucHV0Lm9rKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG4gICAgY29uc3QgZmFsbGJhY2sgPSByZWNvdmVyZXIoaW5wdXQuZXJyKTtcbiAgICByZXR1cm4gZmFsbGJhY2s7XG59XG4iLCAiaW1wb3J0IHsgaXNPaywgdW53cmFwRXJyIH0gZnJvbSAnLi9yZXN1bHQuanMnO1xuLyoqXG4gKiAgQ2FsbHMgX3JlY292ZXJlcl8gYW5kIHJldHVybiBpdHMgcmV0dXJuZWQgdmFsdWUgaWYgdGhlIHJlc3VsdCBpcyBgRXJyKEUpYCxcbiAqICBvdGhlcndpc2UgcmV0dXJucyB0aGUgYE9rKFQpYCB2YWx1ZSBvZiBzZWxmLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3JFbHNlQXN5bmNGb3JSZXN1bHQoaW5wdXQsIHJlY292ZXJlcikge1xuICAgIGlmIChpc09rKGlucHV0KSkge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGNvbnN0IGlubmVyID0gdW53cmFwRXJyKGlucHV0KTtcbiAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBhd2FpdCByZWNvdmVyZXIoaW5uZXIpO1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG59XG4iLCAiaW1wb3J0IHsgaXNPaywgdW53cmFwRXJyIH0gZnJvbSAnLi4vcmVzdWx0LmpzJztcbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBFcnJPckZvclJlc3VsdChpbnB1dCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgaWYgKGlzT2soaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHZhbCA9IHVud3JhcEVycihpbnB1dCk7XG4gICAgcmV0dXJuIHZhbDtcbn1cbiIsICIvKipcbiAqICBVbndyYXBzIGEgcmVzdWx0IF9pbnB1dF8sIHJldHVybnMgdGhlIGNvbnRlbnQgb2YgYW4gYE9rKFQpYC5cbiAqICBJZiB0aGUgdmFsdWUgaXMgYW4gYEVycihFKWAgdGhlbiByZXR1cm4gX2RlZmF1bHRWYWx1ZV8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBPckZvclJlc3VsdChpbnB1dCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgaWYgKGlucHV0Lm9rKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IGlucHV0LnZhbDtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbn1cbiIsICJpbXBvcnQgeyB1bndyYXBFcnJPckZvclJlc3VsdCB9IGZyb20gJy4vaW50ZXJuYWwvdW53cmFwX2Vycl9vci5qcyc7XG5pbXBvcnQgeyB1bndyYXBPckZvclJlc3VsdCB9IGZyb20gJy4vdW53cmFwX29yLmpzJztcbi8qKlxuICogIFVud3JhcCBgVGAgaWYgX2lucHV0XyBpcyBgT2soVClgLlxuICogIE90aGVyd2lzZSwgcmV0dXJuIGBudWxsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTnVsbGFibGVGcm9tT2soaW5wdXQpIHtcbiAgICBjb25zdCB2YWwgPSB1bndyYXBPckZvclJlc3VsdChpbnB1dCwgbnVsbCk7XG4gICAgcmV0dXJuIHZhbDtcbn1cbi8qKlxuICogIFVud3JhcCBgRWAgaWYgX2lucHV0XyBpcyBgRXJyKEUpYC5cbiAqICBPdGhlcndpc2UsIHJldHVybiBgbnVsbGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b051bGxhYmxlRnJvbUVycihpbnB1dCkge1xuICAgIGNvbnN0IGVyciA9IHVud3JhcEVyck9yRm9yUmVzdWx0KGlucHV0LCBudWxsKTtcbiAgICByZXR1cm4gZXJyO1xufVxuIiwgImltcG9ydCB7IHVud3JhcEVyck9yRm9yUmVzdWx0IH0gZnJvbSAnLi9pbnRlcm5hbC91bndyYXBfZXJyX29yLmpzJztcbmltcG9ydCB7IHVud3JhcE9yRm9yUmVzdWx0IH0gZnJvbSAnLi91bndyYXBfb3IuanMnO1xuLyoqXG4gKiAgVW53cmFwIGBUYCBpZiBfaW5wdXRfIGlzIGBPayhUKWAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1VuZGVmaW5hYmxlRnJvbU9rKGlucHV0KSB7XG4gICAgY29uc3QgdmFsID0gdW53cmFwT3JGb3JSZXN1bHQoaW5wdXQsIHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIHZhbDtcbn1cbi8qKlxuICogIFVud3JhcCBgRWAgaWYgX2lucHV0XyBpcyBgRXJyKEUpYC5cbiAqICBPdGhlcndpc2UsIHJldHVybiBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvVW5kZWZpbmFibGVGcm9tRXJyKGlucHV0KSB7XG4gICAgY29uc3QgZXJyID0gdW53cmFwRXJyT3JGb3JSZXN1bHQoaW5wdXQsIHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIGVycjtcbn1cbiIsICJpbXBvcnQgeyBFUlJfTVNHX1VOV1JBUF9OT19WQUxfRk9SX05VTExBQkxFIH0gZnJvbSAnLi9pbnRlcm5hbC9lcnJvcl9tZXNzYWdlLmpzJztcbmV4cG9ydCBmdW5jdGlvbiBpc05vdE51bGwoaW5wdXQpIHtcbiAgICByZXR1cm4gaW5wdXQgIT09IG51bGw7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsKGlucHV0KSB7XG4gICAgcmV0dXJuIGlucHV0ID09PSBudWxsO1xufVxuLyoqXG4gKiAgUmV0dXJuIF9pbnB1dF8gYXMgYFRgIGlmIHRoZSBwYXNzZWQgX2lucHV0XyBpcyBub3QgYG51bGxgLlxuICogIE90aGVyd2lzZSwgdGhyb3cgYFR5cGVFcnJvcmAgd2l0aCB0aGUgcGFzc2VkIGBtc2dgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwZWN0Tm90TnVsbChpbnB1dCwgbXNnKSB7XG4gICAgaWYgKGlzTm90TnVsbChpbnB1dCkpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKG1zZyk7XG59XG4vKipcbiAqICBSZXR1cm4gX2lucHV0XyBhcyBgVGAgaWYgdGhlIHBhc3NlZCBfaW5wdXRfIGlzIG5vdCBgbnVsbGAuXG4gKiAgT3RoZXJ3aXNlLCB0aHJvdyBgVHlwZUVycm9yYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcE51bGxhYmxlKGlucHV0KSB7XG4gICAgcmV0dXJuIGV4cGVjdE5vdE51bGwoaW5wdXQsIEVSUl9NU0dfVU5XUkFQX05PX1ZBTF9GT1JfTlVMTEFCTEUpO1xufVxuIiwgImltcG9ydCB7IEVSUl9NU0dfVU5XUkFQX05PX1ZBTF9GT1JfVU5ERUZJTkFCTEUgfSBmcm9tICcuL2ludGVybmFsL2Vycm9yX21lc3NhZ2UuanMnO1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm90VW5kZWZpbmVkKGlucHV0KSB7XG4gICAgcmV0dXJuIGlucHV0ICE9PSB1bmRlZmluZWQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNVbmRlZmluZWQoaW5wdXQpIHtcbiAgICByZXR1cm4gaW5wdXQgPT09IHVuZGVmaW5lZDtcbn1cbi8qKlxuICogIFJldHVybiBfaW5wdXRfIGFzIGBUYCBpZiB0aGUgcGFzc2VkIF9pbnB1dF8gaXMgbm90IGB1bmRlZmluZWRgLlxuICogIE90aGVyd2lzZSwgdGhyb3cgYFR5cGVFcnJvcmAgd2l0aCB0aGUgcGFzc2VkIGBtc2dgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwZWN0Tm90VW5kZWZpbmVkKGlucHV0LCBtc2cpIHtcbiAgICBpZiAoaXNOb3RVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihtc2cpO1xufVxuLyoqXG4gKiAgUmV0dXJuIF9pbnB1dF8gYXMgYFRgIGlmIHRoZSBwYXNzZWQgX2lucHV0XyBpcyBub3QgYHVuZGVmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCB0aHJvdyBgVHlwZUVycm9yYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcFVuZGVmaW5hYmxlKGlucHV0KSB7XG4gICAgcmV0dXJuIGV4cGVjdE5vdFVuZGVmaW5lZChpbnB1dCwgRVJSX01TR19VTldSQVBfTk9fVkFMX0ZPUl9VTkRFRklOQUJMRSk7XG59XG4iLCAiaW1wb3J0IHsgaXNOdWxsIH0gZnJvbSAnLi4vbnVsbGFibGUvbnVsbGFibGUuanMnO1xuaW1wb3J0IHsgaXNVbmRlZmluZWQgfSBmcm9tICcuLi91bmRlZmluYWJsZS91bmRlZmluYWJsZS5qcyc7XG5pbXBvcnQgeyBpc0VyciwgY3JlYXRlT2ssIHVud3JhcE9rIH0gZnJvbSAnLi9yZXN1bHQuanMnO1xuLyoqXG4gKiAgVHJhbnNwb3NlcyBhIGBSZXN1bHRgIG9mIGFuIGBOdWxsYWJsZVx1MDAzY1RcdTAwM2VgIGludG8gYW4gYE51bGxhYmxlXHUwMDNjVFx1MDAzZWAgb2YgYSBgUmVzdWx0YC5cbiAqXG4gKiAgLSBgT2soVClgIC1cdTAwM2UgYE9rKFQpYFxuICogIC0gYE9rKG51bGwpYCAtXHUwMDNlIGBudWxsYFxuICogIC0gYEVycihFKWAgLVx1MDAzZSBgRXJyKEUpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNwb3NlUmVzdWx0VG9OdWxsYWJsZShpbnB1dCkge1xuICAgIGlmIChpc0VycihpbnB1dCkpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICBjb25zdCBpbm5lciA9IHVud3JhcE9rKGlucHV0KTtcbiAgICBpZiAoaXNOdWxsKGlubmVyKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZU9rKGlubmVyKTtcbn1cbi8qKlxuICogIFRyYW5zcG9zZXMgYSBgUmVzdWx0YCBvZiBhbiBgVW5kZWZpbmFibGVcdTAwM2NUXHUwMDNlYCBpbnRvIGFuIGBVbmRlZmluYWJsZVx1MDAzY1RcdTAwM2VgIG9mIGEgYFJlc3VsdGAuXG4gKlxuICogIC0gYE9rKFQpYCAtXHUwMDNlIGBPayhUKWBcbiAqICAtIGBPayh1bmRlZmluZWQpYCAtXHUwMDNlIGB1bmRlZmluZWRgXG4gKiAgLSBgRXJyKEUpYCAtXHUwMDNlIGBFcnIoRSlgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2VSZXN1bHRUb1VuZGVmaW5hYmxlKGlucHV0KSB7XG4gICAgaWYgKGlzRXJyKGlucHV0KSkge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGNvbnN0IGlubmVyID0gdW53cmFwT2soaW5wdXQpO1xuICAgIGlmIChpc1VuZGVmaW5lZChpbm5lcikpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZU9rKGlubmVyKTtcbn1cbiIsICJpbXBvcnQgeyBFUlJfTVNHX0lOUFVUX0lTX0ZST1pFTl9OT1RfQ0FTVF9UT19NVVRBQkxFIH0gZnJvbSAnLi9lcnJvcl9tZXNzYWdlLmpzJztcbmV4cG9ydCBmdW5jdGlvbiBpc0N1cnJlbnRSZWFsbUVycm9ySW5zdGFuY2UoaW5wdXQpIHtcbiAgICBjb25zdCBvayA9IGlucHV0IGluc3RhbmNlb2YgRXJyb3I7XG4gICAgcmV0dXJuIG9rO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydElzRXJyb3JJbnN0YW5jZShpbnB1dCwgbWVzc2FnZSkge1xuICAgIGlmIChpc0N1cnJlbnRSZWFsbUVycm9ySW5zdGFuY2UoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gV2UgZG9uJ3QgdGhyb3cgTm9kZSdzIEFzc2VydGlvbkVycm9yIGJlY2F1c2UgdGhlIGNvZGUgc2l6ZSB3aWxsIGJlIGxhcmdlci5cbiAgICBjb25zdCBlID0gbmV3IFR5cGVFcnJvcihtZXNzYWdlLCB7XG4gICAgICAgIGNhdXNlOiBpbnB1dCxcbiAgICB9KTtcbiAgICB0aHJvdyBlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydElzRnJvemVuKGlucHV0KSB7XG4gICAgaWYgKE9iamVjdC5pc0Zyb3plbihpbnB1dCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihFUlJfTVNHX0lOUFVUX0lTX0ZST1pFTl9OT1RfQ0FTVF9UT19NVVRBQkxFKTtcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgaXNDdXJyZW50UmVhbG1FcnJvckluc3RhbmNlIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvYXNzZXJ0LmpzJztcbmltcG9ydCB7IEVSUl9NU0dfRE9UX0NBVVNFX1BST1BTX0lTX05PVF9DVVJSRU5UX1JFQUxNX0JVSUxUSU5fRVJST1JfSU5TVEFOQ0UgfSBmcm9tICcuL2Vycm9yX21lc3NhZ2UuanMnO1xuY29uc3QgV1JBUFBFUl9OQU1FID0gJ1Vua25vd25DYXVzYWxFcnJvcic7XG5leHBvcnQgY2xhc3MgVW5rbm93bkNhdXNhbEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKGNhdXNlKSB7XG4gICAgICAgIHN1cGVyKEVSUl9NU0dfRE9UX0NBVVNFX1BST1BTX0lTX05PVF9DVVJSRU5UX1JFQUxNX0JVSUxUSU5fRVJST1JfSU5TVEFOQ0UsIHtcbiAgICAgICAgICAgIGNhdXNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5uYW1lID0gV1JBUFBFUl9OQU1FO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiB3cmFwV2l0aE5ld0Vycm9ySWZDYXVzYWxJc1Vua25vd24oZSkge1xuICAgIGlmIChpc0N1cnJlbnRSZWFsbUVycm9ySW5zdGFuY2UoZSkpIHtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgfVxuICAgIGNvbnN0IHdyYXBwZXIgPSBuZXcgVW5rbm93bkNhdXNhbEVycm9yKGUpO1xuICAgIHJldHVybiB3cmFwcGVyO1xufVxuIiwgImltcG9ydCB7IHdyYXBXaXRoTmV3RXJyb3JJZkNhdXNhbElzVW5rbm93biB9IGZyb20gJy4vaW50ZXJuYWwvdW5rbm93bl9jYXVzYWxfY2Fycmllci5qcyc7XG5pbXBvcnQgeyBjcmVhdGVPaywgY3JlYXRlRXJyLCBpc09rLCB1bndyYXBFcnIgfSBmcm9tICcuL3Jlc3VsdC5qcyc7XG4vKipcbiAqICBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIHRoZSByZXR1cmVuZCB2YWx1ZSBmcm9tIF9wcm9kdWNlcl8gaW50byBgT2soVClgLlxuICogIElmIF9wcm9kdWNlcl8gdGhyb3cgYSBzb21ldGhpbmcsIHRoaXMgcmV0dXJucyBpdCB3aXRoIHdyYXBwaW5nIGBFcnIodW5rbm93bilgLlxuICpcbiAqICBOT1RFOlxuICogIDEuIEFuIHVzZXIgc2hvdWxkIG5hcnJvdyB0aGUgc2NvcGUgb2YgX3Byb2R1Y2VyXyB0byBtYWtlIGl0IHByZWRpY3RhYmxlIHRoYXQgaXMgaW4gYEVycihFKWAuXG4gKiAgMi4gQmFzaWNhbGx5LCB3ZSBkb24ndCByZWNvbW1lbnQgdG8gdXNlIHRoaXMgdG8gY3JlYXRlIGEgYFJlc3VsdFx1MDAzY1QsIEVcdTAwM2VgLlxuICogICAgIEdlbmVyYWxseSwgeW91IHNob3VsZCBkZWZpbmUgYW4gYEVycihFKWAgYnkgZGVwZW5kaW5nIG9uIGFuIHVzZSBjYXNlIGNvbnRleHRcbiAqICAgICBVc2UgdGhpcyBvcGVyYXRvciBqdXN0IHRvIG1ha2UgYSBicmlkZ2UgdG8gZXhpc3RpbmcgY29kZWJhc2VcbiAqICAgICB0aGF0IHlvdSBjYW5ub3QgaW5zcGVjdCBkZWVwbHkgdG8gZGV0YWlscy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyeUNhdGNoSW50b1Jlc3VsdChwcm9kdWNlcikge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcHJvZHVjZXIoKTtcbiAgICAgICAgY29uc3Qgb2tXcmFwcGVkID0gY3JlYXRlT2sodmFsdWUpO1xuICAgICAgICByZXR1cm4gb2tXcmFwcGVkO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBjb25zdCBlcnJXcmFwcGVkID0gY3JlYXRlRXJyKGUpO1xuICAgICAgICByZXR1cm4gZXJyV3JhcHBlZDtcbiAgICB9XG59XG4vKipcbiAqICAtIFRoaXMgZnVuY3Rpb24gY29udmVydHMgdGhlIHJldHVyZW5kIHZhbHVlIGZyb20gX3Byb2R1Y2VyXyBpbnRvIGBPayhUKWAuXG4gKiAgLSBJZiBfcHJvZHVjZXJfIHRocm93IGEgdmFsdWUgdGhhdCBpcyBhbiBpbnN0YW5jZSBvZiBgRXJyb3JgIG9mICoqY3VycmVudCBbcmVhbG1dW3JlYWxtXSoqLFxuICogICAgdGhpcyByZXR1cm5zIGl0IHdpdGggd3JhcHBpbmcgYEVycihFcnJvcilgLlxuICogIC0gT3RoZXJ3aXNlLCBpZiBfcHJvZHVjZXJfIHRocm93IGEgdmFsdWUgdGhhdCBpcyAqKm5vdCoqIGFuIGluc3RhbmNlIG9mIGN1cnJlbnQgcmVhbG0gaW5jbHVkaW5nXG4gKiAgICBhIG9uZSBjcmVhdGVkIGZyb20gY3Jvc3MtcmVhbSBgRXJyb3JgIGNvbnN0cnVjdG9yIChlLmcuIGBub2RlOnZtYCwgaWZyYW1lKSxcbiAqICAgIHRoZW4gdGhpcyBvcGVyYXRvciBjcmVhdGVzIGEgbmV3IGBFcnJvcmAgb2JqZWN0IGNyZWF0ZWQgZnJvbSB0aGUgY3VycmVudCByZWFsbSdzIGNvbnN0cnVjdG9yXG4gKiAgICBhbmQgdGhlIHRocm93biB2YWx1ZSB0byBpdHMgYEVycm9yLmNhdXNlYCwgbWFrZSBpdCBgRXJyKEVycm9yKWAsIGFuZCByZXR1cm4gaXQgZmluYWxseS5cbiAqXG4gKiAgW3JlYWxtXTogaHR0cHM6Ly8yNjIuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy8xNC4wLyNyZWFsbVxuICpcbiAqIC0tLS0tXG4gKlxuICogIFRoaXMganVzdCByZXR1cm5zIGl0IGRpcmVjdGx5IGlmIHRoZSB0aHJvd24gdmFsdWUgaXMgYW4gYEVycm9yYCBpbnN0YW5jZSBvZiB0aGUgY3VycmVudCByZWFsbS5cbiAqICBXZSBjYW4gZG8gdGhpcyBkdWUgdG8gdGhhdCB3ZSBjYW4gcmVnYXJkIGl0IGlzIGhhcHBlbiBpbiB0aGUgc2FtZSBvcGVyYXRpb24gc3RlcCB0byB0aHJvdyBhIHZhbHVlXG4gKiAgdW5saWtlIHRoZSBjb21iaW5hdGlvbiBvZiBgdHJ5Q2F0Y2hJbnRvUmVzdWx0YCArIGBtYXBFcnJGb3JSZXN1bHRgLlxuICogIFRoaXMgc2hvcnRjdXQgY2FuIHJlZHVjZSBhbiB1bm5lY2Vzc2FyeSBgRXJyb3IuY2F1c2VgIGNoYWluLlxuICpcbiAqIC0tLS0tXG4gKlxuICogIE5PVEU6XG4gKiAgMS4gQW4gdXNlciBzaG91bGQgbmFycm93IHRoZSBzY29wZSBvZiBfcHJvZHVjZXJfIHRvIG1ha2UgaXQgcHJlZGljdGFibGUgdGhhdCBpcyBpbiBgRXJyKEUpYC5cbiAqICAyLiBUaGlzIGZ1bmN0aW9uIHJlcXVpcmVzIEVTMjAyMidzIGBFcnJvci5jYXVzZWAgdG8gZ2V0IGFuIGFjdHVhbCB0aHJvd24gb2JqZWN0LlxuICogIDMuIEJhc2ljYWxseSwgd2UgZG9uJ3QgcmVjb21tZW50IHRvIHVzZSB0aGlzIHRvIGNyZWF0ZSBhIGBSZXN1bHRcdTAwM2NULCBFXHUwMDNlYC5cbiAqICAgICBHZW5lcmFsbHksIHlvdSBzaG91bGQgZGVmaW5lIGFuIGBFcnIoRSlgIGJ5IGRlcGVuZGluZyBvbiBhbiB1c2UgY2FzZSBjb250ZXh0XG4gKiAgICAgVXNlIHRoaXMgb3BlcmF0b3IganVzdCB0byBtYWtlIGEgYnJpZGdlIHRvIGV4aXN0aW5nIGNvZGViYXNlXG4gKiAgICAgdGhhdCB5b3UgY2Fubm90IGluc3BlY3QgZGVlcGx5IHRvIGRldGFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cnlDYXRjaEludG9SZXN1bHRXaXRoRW5zdXJlRXJyb3IocHJvZHVjZXIpIHtcbiAgICBjb25zdCByZXN1bHQgPSB0cnlDYXRjaEludG9SZXN1bHQocHJvZHVjZXIpO1xuICAgIGlmIChpc09rKHJlc3VsdCkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgdGhyb3duID0gdW53cmFwRXJyKHJlc3VsdCk7XG4gICAgY29uc3QgY2F1c2FsID0gd3JhcFdpdGhOZXdFcnJvcklmQ2F1c2FsSXNVbmtub3duKHRocm93bik7XG4gICAgY29uc3QgZXJyV3JhcHBlZCA9IGNyZWF0ZUVycihjYXVzYWwpO1xuICAgIHJldHVybiBlcnJXcmFwcGVkO1xufVxuIiwgImltcG9ydCB7IHdyYXBXaXRoTmV3RXJyb3JJZkNhdXNhbElzVW5rbm93biB9IGZyb20gJy4vaW50ZXJuYWwvdW5rbm93bl9jYXVzYWxfY2Fycmllci5qcyc7XG5pbXBvcnQgeyBjcmVhdGVPaywgY3JlYXRlRXJyLCB1bndyYXBFcnIsIGlzT2sgfSBmcm9tICcuL3Jlc3VsdC5qcyc7XG4vKipcbiAqICBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIHRoZSByZXR1cmVuZCB2YWx1ZSBmcm9tIF9wcm9kdWNlcl8gaW50byBgT2soVClgLlxuICogIElmIF9wcm9kdWNlcl8gdGhyb3cgYSBzb21ldGhpbmcsIHRoaXMgcmV0dXJucyBpdCB3aXRoIHdyYXBwaW5nIGBFcnIodW5rbm93bilgLlxuICpcbiAqICBOT1RFOlxuICogIDEuIEFuIHVzZXIgc2hvdWxkIG5hcnJvdyB0aGUgc2NvcGUgb2YgX3Byb2R1Y2VyXyB0byBtYWtlIGl0IHByZWRpY3RhYmxlIHRoYXQgaXMgaW4gYEVycihFKWAuXG4gKiAgMi4gQmFzaWNhbGx5LCB3ZSBkb24ndCByZWNvbW1lbnQgdG8gdXNlIHRoaXMgdG8gY3JlYXRlIGEgYFJlc3VsdFx1MDAzY1QsIEVcdTAwM2VgLlxuICogICAgIEdlbmVyYWxseSwgeW91IHNob3VsZCBkZWZpbmUgYW4gYEVycihFKWAgYnkgZGVwZW5kaW5nIG9uIGFuIHVzZSBjYXNlIGNvbnRleHRcbiAqICAgICBVc2UgdGhpcyBvcGVyYXRvciBqdXN0IHRvIG1ha2UgYSBicmlkZ2UgdG8gZXhpc3RpbmcgY29kZWJhc2VcbiAqICAgICB0aGF0IHlvdSBjYW5ub3QgaW5zcGVjdCBkZWVwbHkgdG8gZGV0YWlscy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyeUNhdGNoSW50b1Jlc3VsdEFzeW5jKHByb2R1Y2VyKSB7XG4gICAgbGV0IHZhbHVlO1xuICAgIHRyeSB7XG4gICAgICAgIHZhbHVlID0gYXdhaXQgcHJvZHVjZXIoKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc3QgZXJyV3JhcHBlZCA9IGNyZWF0ZUVycihlKTtcbiAgICAgICAgcmV0dXJuIGVycldyYXBwZWQ7XG4gICAgfVxuICAgIGNvbnN0IHdyYXBwZWQgPSBjcmVhdGVPayh2YWx1ZSk7XG4gICAgcmV0dXJuIHdyYXBwZWQ7XG59XG4vKipcbiAqICAtIFRoaXMgZnVuY3Rpb24gY29udmVydHMgdGhlIHJldHVyZW5kIHZhbHVlIGZyb20gX3Byb2R1Y2VyXyBpbnRvIGBPayhUKWAuXG4gKiAgLSBJZiBfcHJvZHVjZXJfIHRocm93IGEgdmFsdWUgdGhhdCBpcyBhbiBpbnN0YW5jZSBvZiBgRXJyb3JgIG9mICoqY3VycmVudCBbcmVhbG1dW3JlYWxtXSoqLFxuICogICAgdGhpcyByZXR1cm5zIGl0IHdpdGggd3JhcHBpbmcgYEVycihFcnJvcilgLlxuICogIC0gT3RoZXJ3aXNlLCBpZiBfcHJvZHVjZXJfIHRocm93IGEgdmFsdWUgdGhhdCBpcyAqKm5vdCoqIGFuIGluc3RhbmNlIG9mIGN1cnJlbnQgcmVhbG0gaW5jbHVkaW5nXG4gKiAgICBhIG9uZSBjcmVhdGVkIGZyb20gY3Jvc3MtcmVhbSBgRXJyb3JgIGNvbnN0cnVjdG9yIChlLmcuIGBub2RlOnZtYCwgaWZyYW1lKSxcbiAqICAgIHRoZW4gdGhpcyBvcGVyYXRvciBjcmVhdGVzIGEgbmV3IGBFcnJvcmAgb2JqZWN0IGNyZWF0ZWQgZnJvbSB0aGUgY3VycmVudCByZWFsbSdzIGNvbnN0cnVjdG9yXG4gKiAgICBhbmQgdGhlIHRocm93biB2YWx1ZSB0byBpdHMgYEVycm9yLmNhdXNlYCwgbWFrZSBpdCBgRXJyKEVycm9yKWAsIGFuZCByZXR1cm4gaXQgZmluYWxseS5cbiAqXG4gKiAgW3JlYWxtXTogaHR0cHM6Ly8yNjIuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy8xNC4wLyNyZWFsbVxuICpcbiAqIC0tLS0tXG4gKlxuICogIFRoaXMganVzdCByZXR1cm5zIGl0IGRpcmVjdGx5IGlmIHRoZSB0aHJvd24gdmFsdWUgaXMgYW4gYEVycm9yYCBpbnN0YW5jZSBvZiB0aGUgY3VycmVudCByZWFsbS5cbiAqICBXZSBjYW4gZG8gdGhpcyBkdWUgdG8gdGhhdCB3ZSBjYW4gcmVnYXJkIGl0IGlzIGhhcHBlbiBpbiB0aGUgc2FtZSBvcGVyYXRpb24gc3RlcCB0byB0aHJvdyBhIHZhbHVlXG4gKiAgdW5saWtlIHRoZSBjb21iaW5hdGlvbiBvZiBgdHJ5Q2F0Y2hJbnRvUmVzdWx0YCArIGBtYXBFcnJGb3JSZXN1bHRgLlxuICogIFRoaXMgc2hvcnRjdXQgY2FuIHJlZHVjZSBhbiB1bm5lY2Vzc2FyeSBgRXJyb3IuY2F1c2VgIGNoYWluLlxuICpcbiAqIC0tLS0tXG4gKlxuICogIE5PVEU6XG4gKiAgMS4gQW4gdXNlciBzaG91bGQgbmFycm93IHRoZSBzY29wZSBvZiBfcHJvZHVjZXJfIHRvIG1ha2UgaXQgcHJlZGljdGFibGUgdGhhdCBpcyBpbiBgRXJyKEUpYC5cbiAqICAyLiBUaGlzIGZ1bmN0aW9uIHJlcXVpcmVzIEVTMjAyMidzIGBFcnJvci5jYXVzZWAgdG8gZ2V0IGFuIGFjdHVhbCB0aHJvd24gb2JqZWN0LlxuICogIDMuIEJhc2ljYWxseSwgd2UgZG9uJ3QgcmVjb21tZW50IHRvIHVzZSB0aGlzIHRvIGNyZWF0ZSBhIGBSZXN1bHRcdTAwM2NULCBFXHUwMDNlYC5cbiAqICAgICBHZW5lcmFsbHksIHlvdSBzaG91bGQgZGVmaW5lIGFuIGBFcnIoRSlgIGJ5IGRlcGVuZGluZyBvbiBhbiB1c2UgY2FzZSBjb250ZXh0XG4gKiAgICAgVXNlIHRoaXMgb3BlcmF0b3IganVzdCB0byBtYWtlIGEgYnJpZGdlIHRvIGV4aXN0aW5nIGNvZGViYXNlXG4gKiAgICAgdGhhdCB5b3UgY2Fubm90IGluc3BlY3QgZGVlcGx5IHRvIGRldGFpbHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlDYXRjaEludG9SZXN1bHRXaXRoRW5zdXJlRXJyb3JBc3luYyhwcm9kdWNlcikge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyeUNhdGNoSW50b1Jlc3VsdEFzeW5jKHByb2R1Y2VyKTtcbiAgICBpZiAoaXNPayhyZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGNvbnN0IHRocm93biA9IHVud3JhcEVycihyZXN1bHQpO1xuICAgIGNvbnN0IGNhdXNhbCA9IHdyYXBXaXRoTmV3RXJyb3JJZkNhdXNhbElzVW5rbm93bih0aHJvd24pO1xuICAgIGNvbnN0IGVycldyYXBwZWQgPSBjcmVhdGVFcnIoY2F1c2FsKTtcbiAgICByZXR1cm4gZXJyV3JhcHBlZDtcbn1cbiIsICIvKipcbiAqICBVbndyYXBzIGEgcmVzdWx0IF9pbnB1dF8sIHJldHVybnMgdGhlIGNvbnRlbnQgb2YgYW4gYE9rKFQpYC5cbiAqICBJZiB0aGUgdmFsdWUgaXMgYW4gYEVycihFKWAgdGhlbiBpdCBjYWxscyBgZGVmYCB3aXRoIGl0cyB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcE9yRWxzZUZvclJlc3VsdChpbnB1dCwgcmVjb3ZlcmVyKSB7XG4gICAgaWYgKGlucHV0Lm9rKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IGlucHV0LnZhbDtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgY29uc3QgZmFsbGJhY2sgPSByZWNvdmVyZXIoaW5wdXQuZXJyKTtcbiAgICByZXR1cm4gZmFsbGJhY2s7XG59XG4iLCAiaW1wb3J0IHsgaXNPaywgdW53cmFwRXJyLCB1bndyYXBPayB9IGZyb20gJy4vcmVzdWx0LmpzJztcbi8qKlxuICogIFVud3JhcHMgX2lucHV0XywgcmV0dXJucyB0aGUgY29udGVudCBvZiBhbiBgT2soVClgLlxuICogIElmIHRoZSB2YWx1ZSBpcyBhbiBgRXJyKEUpYCB0aGVuIGl0IGNhbGxzIGByZWNvdmVyZXJgIHdpdGggaXRzIHZhbHVlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdW53cmFwT3JFbHNlQXN5bmNGb3JSZXN1bHQoaW5wdXQsIHJlY292ZXJlcikge1xuICAgIGlmIChpc09rKGlucHV0KSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHVud3JhcE9rKGlucHV0KTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBlcnJvciA9IHVud3JhcEVycihpbnB1dCk7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gYXdhaXQgcmVjb3ZlcmVyKGVycm9yKTtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xufVxuIiwgImltcG9ydCB7IEVSUl9NU0dfRk9SX0VSUk9SX09CSkVDVF9HRU5FUkFURURfQllfVU5XUkFQX09SX1RIUk9XIH0gZnJvbSAnLi9lcnJvcl9tZXNzYWdlLmpzJztcbmNvbnN0IFdSQVBQRVJfTkFNRSA9ICdDYXVzYWxDYXJyaWVyRXJyb3InO1xuZXhwb3J0IGNsYXNzIENhdXNhbENhcnJpZXJFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihjYXVzZSkge1xuICAgICAgICBzdXBlcihFUlJfTVNHX0ZPUl9FUlJPUl9PQkpFQ1RfR0VORVJBVEVEX0JZX1VOV1JBUF9PUl9USFJPVywge1xuICAgICAgICAgICAgY2F1c2UsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm5hbWUgPSBXUkFQUEVSX05BTUU7XG4gICAgfVxufVxuIiwgImltcG9ydCB7IFxuLy8gV2UgZG9uJ3QgZXhwb3NlIHRoaXMgYXMgYSBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuXG5DYXVzYWxDYXJyaWVyRXJyb3IsIH0gZnJvbSAnLi9pbnRlcm5hbC9jYXVzYWxfY2Fycmllci5qcyc7XG5pbXBvcnQgeyBpc09rLCB1bndyYXBPaywgdW53cmFwRXJyIH0gZnJvbSAnLi9yZXN1bHQuanMnO1xuLyoqXG4gKiAgVW53cmFwcyBfaW5wdXRfLCByZXR1cm5zIHRoZSBjb250ZW50IG9mIGFuIGBPayhUKWAuXG4gKiAgT3RoZXJ3aXNlLCB0aGlzIGZ1bmN0aW9uIHRocm93IGEgbmV3IGBFcnJvcmAgaW5zdGFuY2Ugd2l0aCBzZXR0aW5nIHRoZSBvcmlnaW5hbCBgRWBcbiAqICBpbiBgRXJyKEUpYCB0byBgLmNhdXNlYCBwcm9wZXJ0eSBvZiB0aGUgYEVycm9yYCBpbnN0YW5jZS5cbiAqXG4gKiAgVGhpcyBtYXRjaGVzIHRoZSBjb252ZW50aW9uIHRoYXQgaXMgXCJhIHRocm93biBvYmplY3QgaXMgYWx3YXlzIGFuIGBFcnJvcmAgaW5zdGFuY2VcIi5cbiAqICBUbyBhY2hpdmUgdGhpcywgdGhpcyBmdW5jdGlvbiByZXF1aXJlcyBgRXJyb3IuY2F1c2VgIHRvIGNhcnJ5IHRoZSBmYWlsdXJlIHJlYXNvbi5cbiAqXG4gKiAgX19XZSBETyBOT1QgUkVDQ09NRU5EIFRPIFVTRSBUSElTIGZ1bmN0aW9uIGdlbmVyYWxseV9fLlxuICpcbiAqICBUaGlzIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIG9ubHkgdG8gaW1wcm92ZSBhbiBpbnRlcm9wZXJhYmlsaXR5IHdpdGggdGhlIHdvcmxkIHVzaW5nIFwidGhyb3cgZXJyb3JcIiBjb252ZW50aW9uLlxuICogIF9fV2UgZG8gbm90IHJlY29tbWVuZCB0byB1c2UgdGhpcyBmdW5jdGlvbl9fLlxuICpcbiAqICBAdGhyb3dzIHtFcnJvcn1cbiAqICAgICAgSWYgdGhlIF9pbnB1dF8gaXMgYEVycihFKWAsXG4gKiAgICAgIHRoaXMgdGhyb3cgYW4gbmV3IGBFcnJvcmAgaW5zdGFuY2Ugd2l0aCBzZXR0aW5nIHRoZSBvcmlnaW5hbCBgRWAgdG8gYC5jYXVzZWAgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBPclRocm93Rm9yUmVzdWx0KGlucHV0KSB7XG4gICAgaWYgKGlzT2soaW5wdXQpKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHVud3JhcE9rKGlucHV0KTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgY29uc3QgY2F1c2UgPSB1bndyYXBFcnIoaW5wdXQpO1xuICAgIGNvbnN0IHdyYXBwZXIgPSBuZXcgQ2F1c2FsQ2FycmllckVycm9yKGNhdXNlKTtcbiAgICB0aHJvdyB3cmFwcGVyO1xufVxuIiwgImNvbnN0IEVSUl9NU0dfTVVTVF9OT1RfUkVUVVJOID0gJyBtdXN0IG5vdCByZXR1cm4gJztcbmNvbnN0IFRSQU5TRk9STV9GVU5DVElPTl9OQU1FID0gJ2B0cmFuc2Zvcm1lcmAnO1xuY29uc3QgUkVDT1ZFUllfRlVOQ1RJT05fTkFNRSA9ICdgcmVjb3ZlcmVyYCc7XG5jb25zdCBERUZBVUxUX1ZBTFVFX05BTUUgPSAnYGRlZmF1bHRWYWx1ZWAnO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOID0gVFJBTlNGT1JNX0ZVTkNUSU9OX05BTUUgKyBFUlJfTVNHX01VU1RfTk9UX1JFVFVSTjtcbmV4cG9ydCBjb25zdCBFUlJfTVNHX0NBTExFRF9XSVRIID0gJ2NhbGxlZCB3aXRoICc7XG5leHBvcnQgY29uc3QgRVJSX01TR19ERUZBVUxUX1ZBTFVFX01VU1RfTk9UX0JFID0gREVGQVVMVF9WQUxVRV9OQU1FICsgJyBtdXN0IG5vdCBiZSAnO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfUkVDT1ZFUkVSX01VU1RfTk9UX1JFVFVSTiA9IFJFQ09WRVJZX0ZVTkNUSU9OX05BTUUgKyBFUlJfTVNHX01VU1RfTk9UX1JFVFVSTjtcbmV4cG9ydCBjb25zdCBFUlJfTVNHX0lOUFVUX0lTX0ZST1pFTl9OT1RfQ0FTVF9UT19NVVRBQkxFID0gJ2lucHV0IGlzIGZyb3plbiwgY2Fubm90IGNhc3QgdG8gbXV0YWJsZSc7XG4iLCAiaW1wb3J0IHsgRVJSX01TR19UUkFOU0ZPUk1FUl9NVVNUX05PVF9SRVRVUk4sIEVSUl9NU0dfQ0FMTEVEX1dJVEgsIEVSUl9NU0dfREVGQVVMVF9WQUxVRV9NVVNUX05PVF9CRSwgRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOLCB9IGZyb20gJy4uLy4uL2ludGVybmFsL2Vycm9yX21lc3NhZ2UuanMnO1xuY29uc3QgTk9fVkFMX1ZBTFVFX1RZUEVfU1RSID0gJ2BudWxsYCBvciBgdW5kZWZpbmVkYCc7XG5leHBvcnQgY29uc3QgRVJSX01TR19UUkFOU0ZPUk1FUl9NVVNUX05PVF9SRVRVUk5fTk9fVkFMX0ZPUl9NQVlCRSA9IEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOICsgTk9fVkFMX1ZBTFVFX1RZUEVfU1RSO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfVU5XUkFQX05PX1ZBTF9GT1JfTUFZQkUgPSBFUlJfTVNHX0NBTExFRF9XSVRIICsgTk9fVkFMX1ZBTFVFX1RZUEVfU1RSO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfREVGQVVMVF9WQUxVRV9NVVNUX05PVF9CRV9OT19WQUxfRk9SX01BWUJFID0gRVJSX01TR19ERUZBVUxUX1ZBTFVFX01VU1RfTk9UX0JFICsgTk9fVkFMX1ZBTFVFX1RZUEVfU1RSO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfUkVDT1ZFUkVSX01VU1RfTk9UX1JFVFVSTl9OT19WQUxfRk9SX01BWUJFID0gRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOICsgTk9fVkFMX1ZBTFVFX1RZUEVfU1RSO1xuIiwgImltcG9ydCB7IEVSUl9NU0dfVU5XUkFQX05PX1ZBTF9GT1JfTUFZQkUgfSBmcm9tICcuL2ludGVybmFsL2Vycm9yX21lc3NhZ2UuanMnO1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm90TnVsbE9yVW5kZWZpbmVkKGlucHV0KSB7XG4gICAgcmV0dXJuIGlucHV0ICE9PSB1bmRlZmluZWQgXHUwMDI2XHUwMDI2IGlucHV0ICE9PSBudWxsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKGlucHV0KSB7XG4gICAgcmV0dXJuIGlucHV0ID09PSB1bmRlZmluZWQgfHwgaW5wdXQgPT09IG51bGw7XG59XG4vKipcbiAqICBSZXR1cm4gX2lucHV0XyBhcyBgVGAgaWYgdGhlIHBhc3NlZCBfaW5wdXRfIGlzIG5vdCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgLlxuICogIE90aGVyd2lzZSwgdGhyb3cgYFR5cGVFcnJvcmAgd2l0aCB0aGUgcGFzc2VkIGBtc2dgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwZWN0Tm90TnVsbE9yVW5kZWZpbmVkKGlucHV0LCBtc2cpIHtcbiAgICBpZiAoaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihtc2cpO1xufVxuLyoqXG4gKiAgUmV0dXJuIF92YWx1ZV8gYXMgYFRgIGlmIHRoZSBwYXNzZWQgX3ZhbHVlXyBpcyBub3QgYG51bGxgIGFuZCBgdW5kZWZpbmVkYC5cbiAqICBPdGhlcndpc2UsIHRocm93IGBUeXBlRXJyb3JgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwTWF5YmUodmFsdWUpIHtcbiAgICByZXR1cm4gZXhwZWN0Tm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlLCBFUlJfTVNHX1VOV1JBUF9OT19WQUxfRk9SX01BWUJFKTtcbn1cbiIsICJpbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiAgUmV0dXJucyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIF9pbnB1dF8gaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLFxuICogIG90aGVyd2lzZSBjYWxscyBfdHJhbnNmb3JtZXJfIHdpdGggdGhlIHZhbHVlIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuXG4gKlxuICogIFhYWDpcbiAqICBTb21lIGxhbmd1YWdlcyBjYWxsIHRoaXMgb3BlcmF0aW9uIGZsYXRtYXAuXG4gKiAgQnV0IHdlIGRvbid0IHByb3ZpZGUgYGZsYXRNYXAoKWAgYXMgYWxpYXMgb2YgdGhpcyBmdW5jdGlvbi5cbiAqICBiZWNhdXNlIGl0J3MgdG9vIGhhcmQgdG8gdW5kYXJzdGFuZCB0aGF0IFwiZmxhdE1hcFwiIG9wZXJhdGlvbiBmb3IgYFQgfCBudWxsIHwgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFuZFRoZW5Gb3JNYXliZShpbnB1dCwgdHJhbnNmb3JtZXIpIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gdHJhbnNmb3JtZXIoaW5wdXQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4iLCAiaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICcuL21heWJlLmpzJztcbi8qKlxuICogIFJldHVybnMgYG51bGxgIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBfaW5wdXRfIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYCxcbiAqICBvdGhlcndpc2UgY2FsbHMgX3RyYW5zZm9ybWVyXyB3aXRoIHRoZSB2YWx1ZSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICpcbiAqICBYWFg6XG4gKiAgU29tZSBsYW5ndWFnZXMgY2FsbCB0aGlzIG9wZXJhdGlvbiBmbGF0bWFwLlxuICogIEJ1dCB3ZSBkb24ndCBwcm92aWRlIGBmbGF0TWFwKClgIGFzIGFsaWFzIG9mIHRoaXMgZnVuY3Rpb24uXG4gKiAgYmVjYXVzZSBpdCdzIHRvbyBoYXJkIHRvIHVuZGFyc3RhbmQgdGhhdCBcImZsYXRNYXBcIiBvcGVyYXRpb24gZm9yIGBUIHwgbnVsbCB8IHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhbmRUaGVuQXN5bmNGb3JNYXliZShpbnB1dCwgdHJhbnNmb3JtZXIpIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdHJhbnNmb3JtZXIoaW5wdXQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4iLCAiaW1wb3J0IHsgaXNOb3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICcuL21heWJlLmpzJztcbi8qKlxuICogICogUmV0dXJuIF9pbnB1dF8gZGlyZWN0bHkuXG4gKiAgICAgICogVGhpcyB2YWx1ZSBpcyBwYXNzZWQgYXMgdGhlIGlucHV0LiBCdXQgaXQgbWF5YmUgbXV0YXRlZCBieSBjYWxsaW5nIF9lZmZlY3Rvcl8uXG4gKiAgKiBDYWxsIF9lZmZlY3Rvcl8gd2l0aCBfaW5wdXRfIGlmIF9pbnB1dF8gaXMgbm90IGBudWxsYCBhbmQgYHVuZGVmaW5lZGAuXG4gKlxuICogICogVGhpcyB3YXMgYWRkZWQgdG8gc29ydCB3aXRoIG90aGVycyBvciBmdXR1cmUgZW5oYW5jZW1lbnQgdG8gYWNjZXB0IGNoYWluaW5nIGZ1bmN0aW9ucy5cbiAqICAgIFdlIHJlY29tbWVuZCB0byB1c2Ugc2ltcGxlIGBpZmAgc3RhdGVtZW50IG9yIHNpbWlsYXIgd2F5IGFuZCB0aGV5IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdE1heWJlKGlucHV0LCBlZmZlY3Rvcikge1xuICAgIGlmIChpc05vdE51bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgZWZmZWN0b3IoaW5wdXQpO1xuICAgIH1cbiAgICByZXR1cm4gaW5wdXQ7XG59XG4iLCAiaW1wb3J0IHsgRVJSX01TR19UUkFOU0ZPUk1FUl9NVVNUX05PVF9SRVRVUk5fTk9fVkFMX0ZPUl9NQVlCRSB9IGZyb20gJy4vaW50ZXJuYWwvZXJyb3JfbWVzc2FnZS5qcyc7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCwgZXhwZWN0Tm90TnVsbE9yVW5kZWZpbmVkLCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiAgUmV0dXJuIHRoZSByZXN1bHQgb2YgX3RyYW5zZm9ybWVyXyB3aXRoIHVzaW5nIF9pbnB1dF8gYXMgYW4gYXJndW1lbnQgZm9yIGl0IGlmIF9pbnB1dF8gaXMgbm90IGBudWxsYCBhbmQgYHVuZGVmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gYG51bGxgIG9yIGB1bmRlZmluZWRgIGlucHV0dGVkIGFzIF9pbnB1dF8uXG4gKlxuICogICogYFVgIG11c3Qgbm90IGJlIGBNYXliZVx1MDAzYypcdTAwM2VgLlxuICogICAgICAqIElmIHlvdSdkIGxpa2UgcmV0dXJuIGBNYXliZVx1MDAzYypcdTAwM2VgIGFzIGBVYCwgdXNlIGBhbmRUaGVuKClgLlxuICogICAgICAqIElmIHRoZSByZXN1bHQgb2YgX3RyYW5zZm9ybWVyXyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoaXMgdGhyb3cgYW4gYEVycm9yYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcEZvck1heWJlKGlucHV0LCB0cmFuc2Zvcm1lcikge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB0cmFuc2Zvcm1lcihpbnB1dCk7XG4gICAgLy8gWFhYOlxuICAgIC8vIElmIGBVYCBpcyBgTWF5YmVcdTAwM2NTb21lVHlwZVx1MDAzZWAsIHdlIHRoaW5rIG5hdHVyYWxseSB0aGUgcmV0dXJuZWQgdmFsdWUgb2YgdGhpcyBmdW5jdGlvbiB3b3VsZCBiZVxuICAgIC8vIHRoZSBuZXN0ZWQgdHlwZSBgTWF5YmVcdTAwM2NNYXliZVx1MDAzY1NvbWVUeXBlXHUwMDNlXHUwMDNlYC4gQnV0IHRoaXMgdHlwZSBtZWFucyBgKFNvbWVUeXBlIHwgbnVsbCB8IHVuZGVmaW5lZCkgfCBudWxsIHwgdW5kZWZpbmVkYC5cbiAgICAvLyBTbyBhIHR5cGUgY2hlY2tlciB3b3VsZCByZWNvZ25pemUgdGhpcyB0eXBlIGFzIGBTb21lVHlwZSB8IG51bGwgfCB1bmRlZmluZWRgLiBTbyBpdCdzIGZsYXR0ZW5lZC5cbiAgICAvLyBUaGVuIHRoZSB1c2VyIHNob3VsZCBjYWxsIGBhbmRUaGVuYCAoX2ZsYXRtYXBfKSBvcGVyYXRpb24gaW5zdGVhZCBvZiB0aGlzLlxuICAgIGNvbnN0IHBhc3NlZCA9IGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZChyZXN1bHQsIEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUpO1xuICAgIHJldHVybiBwYXNzZWQ7XG59XG4iLCAiaW1wb3J0IHsgRVJSX01TR19UUkFOU0ZPUk1FUl9NVVNUX05PVF9SRVRVUk5fTk9fVkFMX0ZPUl9NQVlCRSB9IGZyb20gJy4vaW50ZXJuYWwvZXJyb3JfbWVzc2FnZS5qcyc7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCwgZXhwZWN0Tm90TnVsbE9yVW5kZWZpbmVkLCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiAgUmV0dXJuIHRoZSByZXN1bHQgb2YgX3RyYW5zZm9ybWVyXyB3aXRoIHVzaW5nIF9pbnB1dF8gYXMgYW4gYXJndW1lbnQgZm9yIGl0IGlmIF9pbnB1dF8gaXMgbm90IGBudWxsYCBhbmQgYHVuZGVmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gYG51bGxgIG9yIGB1bmRlZmluZWRgIGlucHV0dGVkIGFzIF9pbnB1dF8uXG4gKlxuICogICogYFVgIG11c3Qgbm90IGJlIGBNYXliZVx1MDAzYypcdTAwM2VgLlxuICogICAgICAqIElmIHlvdSdkIGxpa2UgcmV0dXJuIGBNYXliZVx1MDAzYypcdTAwM2VgIGFzIGBVYCwgdXNlIGBhbmRUaGVuKClgLlxuICogICAgICAqIElmIHRoZSByZXN1bHQgb2YgX3RyYW5zZm9ybWVyXyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoaXMgdGhyb3cgYW4gYEVycm9yYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1hcEFzeW5jRm9yTWF5YmUoaW5wdXQsIHRyYW5zZm9ybWVyKSB7XG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybWVyKGlucHV0KTtcbiAgICAvLyBYWFg6XG4gICAgLy8gSWYgYFVgIGlzIGBNYXliZVx1MDAzY1NvbWVUeXBlXHUwMDNlYCwgd2UgdGhpbmsgbmF0dXJhbGx5IHRoZSByZXR1cm5lZCB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uIHdvdWxkIGJlXG4gICAgLy8gdGhlIG5lc3RlZCB0eXBlIGBNYXliZVx1MDAzY01heWJlXHUwMDNjU29tZVR5cGVcdTAwM2VcdTAwM2VgLiBCdXQgdGhpcyB0eXBlIG1lYW5zIGAoU29tZVR5cGUgfCBudWxsIHwgdW5kZWZpbmVkKSB8IG51bGwgfCB1bmRlZmluZWRgLlxuICAgIC8vIFNvIGEgdHlwZSBjaGVja2VyIHdvdWxkIHJlY29nbml6ZSB0aGlzIHR5cGUgYXMgYFNvbWVUeXBlIHwgbnVsbCB8IHVuZGVmaW5lZGAuIFNvIGl0J3MgZmxhdHRlbmVkLlxuICAgIC8vIFRoZW4gdGhlIHVzZXIgc2hvdWxkIGNhbGwgYGFuZFRoZW5gIChfZmxhdG1hcF8pIG9wZXJhdGlvbiBpbnN0ZWFkIG9mIHRoaXMuXG4gICAgY29uc3QgY2hlY2tlZCA9IGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZChyZXN1bHQsIEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUpO1xuICAgIHJldHVybiBjaGVja2VkO1xufVxuIiwgImltcG9ydCB7IEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUsIEVSUl9NU0dfREVGQVVMVF9WQUxVRV9NVVNUX05PVF9CRV9OT19WQUxfRk9SX01BWUJFLCB9IGZyb20gJy4vaW50ZXJuYWwvZXJyb3JfbWVzc2FnZS5qcyc7XG5pbXBvcnQgeyBleHBlY3ROb3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICcuL21heWJlLmpzJztcbi8qKlxuICogIFJldHVybiB0aGUgcmVzdWx0IG9mIF90cmFuc2Zvcm1lcl8gd2l0aCB1c2luZyBfaW5wdXRfIGFzIGFuIGFyZ3VtZW50IGZvciBpdCBpZiBfaW5wdXRfIGlzIG5vdCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgLlxuICogIE90aGVyd2lzZSwgcmV0dXJuIF9kZWZhdWx0VmFsdWVfLlxuICpcbiAqICBCYXNpY2FsbHksIHRoaXMgb3BlcmF0aW9uIGlzIGEgY29tYmluYXRpb24gYG1hcCgpYCBhbmQgYHVud3JhcE9yKClgLlxuICpcbiAqICAqIGBVYCBtdXN0IG5vdCBiZSBgTWF5YmVcdTAwM2MqXHUwMDNlYC5cbiAqICAgICAgKiBJZiB0aGUgcmVzdWx0IG9mIF90cmFuc2Zvcm1lcl8gaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLCB0aGlzIHRocm93IGFuIGBFcnJvcmAuXG4gKiAgICAgICogSWYgdGhlIHJlc3VsdCBvZiBfZGVmYXVsdFZhbHVlXyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoaXMgdGhyb3cgYW4gYEVycm9yYC5cbiAqICAqIElmIHlvdSdkIGxpa2UgdG8gYWNjZXB0IGBNYXliZVx1MDAzYypcdTAwM2VgIGFzIGBVYCwgdXNlIGEgY29tYmluYXRpb24gYGFuZFRoZW4oKWAgYW5kIGBvcigpYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcE9yRm9yTWF5YmUoaW5wdXQsIGRlZmF1bHRWYWx1ZSwgdHJhbnNmb3JtZXIpIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGxldCBtc2cgPSAnJztcbiAgICBpZiAoaW5wdXQgIT09IHVuZGVmaW5lZCBcdTAwMjZcdTAwMjYgaW5wdXQgIT09IG51bGwpIHtcbiAgICAgICAgcmVzdWx0ID0gdHJhbnNmb3JtZXIoaW5wdXQpO1xuICAgICAgICBtc2cgPSBFUlJfTVNHX1RSQU5TRk9STUVSX01VU1RfTk9UX1JFVFVSTl9OT19WQUxfRk9SX01BWUJFO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICBtc2cgPSBFUlJfTVNHX0RFRkFVTFRfVkFMVUVfTVVTVF9OT1RfQkVfTk9fVkFMX0ZPUl9NQVlCRTtcbiAgICB9XG4gICAgY29uc3QgcGFzc2VkID0gZXhwZWN0Tm90TnVsbE9yVW5kZWZpbmVkKHJlc3VsdCwgbXNnKTtcbiAgICByZXR1cm4gcGFzc2VkO1xufVxuIiwgImltcG9ydCB7IEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUsIEVSUl9NU0dfREVGQVVMVF9WQUxVRV9NVVNUX05PVF9CRV9OT19WQUxfRk9SX01BWUJFLCB9IGZyb20gJy4vaW50ZXJuYWwvZXJyb3JfbWVzc2FnZS5qcyc7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCwgZXhwZWN0Tm90TnVsbE9yVW5kZWZpbmVkLCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiAgUmV0dXJuIHRoZSByZXN1bHQgb2YgX3RyYW5zZm9ybWVyXyB3aXRoIHVzaW5nIF9pbnB1dF8gYXMgYW4gYXJndW1lbnQgZm9yIGl0IGlmIF9pbnB1dF8gaXMgbm90IGBudWxsYCBhbmQgYHVuZGVmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gX2RlZmF1bHRWYWx1ZV8uXG4gKlxuICogIEJhc2ljYWxseSwgdGhpcyBvcGVyYXRpb24gaXMgYSBjb21iaW5hdGlvbiBgbWFwKClgIGFuZCBgdW53cmFwT3IoKWAuXG4gKlxuICogICogYFVgIG11c3Qgbm90IGJlIGBNYXliZVx1MDAzYypcdTAwM2VgLlxuICogICAgICAqIElmIHRoZSByZXN1bHQgb2YgX3RyYW5zZm9ybWVyXyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoaXMgdGhyb3cgYW4gYEVycm9yYC5cbiAqICAgICAgKiBJZiB0aGUgcmVzdWx0IG9mIF9kZWZhdWx0VmFsdWVfIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYCwgdGhpcyB0aHJvdyBhbiBgRXJyb3JgLlxuICogICogSWYgeW91J2QgbGlrZSB0byBhY2NlcHQgYE1heWJlXHUwMDNjKlx1MDAzZWAgYXMgYFVgLCB1c2UgYSBjb21iaW5hdGlvbiBgYW5kVGhlbigpYCBhbmQgYG9yKClgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFwT3JBc3luY0Zvck1heWJlKGlucHV0LCBkZWZhdWx0VmFsdWUsIHRyYW5zZm9ybWVyKSB7XG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICBjb25zdCBub25OdWxsRGVmYXVsdCA9IGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZChkZWZhdWx0VmFsdWUsIEVSUl9NU0dfREVGQVVMVF9WQUxVRV9NVVNUX05PVF9CRV9OT19WQUxfRk9SX01BWUJFKTtcbiAgICAgICAgcmV0dXJuIG5vbk51bGxEZWZhdWx0O1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmFuc2Zvcm1lcihpbnB1dCk7XG4gICAgY29uc3QgY2hlY2tlZCA9IGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZChyZXN1bHQsIEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUpO1xuICAgIHJldHVybiBjaGVja2VkO1xufVxuIiwgImltcG9ydCB7IEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUsIEVSUl9NU0dfUkVDT1ZFUkVSX01VU1RfTk9UX1JFVFVSTl9OT19WQUxfRk9SX01BWUJFLCB9IGZyb20gJy4vaW50ZXJuYWwvZXJyb3JfbWVzc2FnZS5qcyc7XG5pbXBvcnQgeyBleHBlY3ROb3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICcuL21heWJlLmpzJztcbi8qKlxuICogIFJldHVybiB0aGUgcmVzdWx0IG9mIF90cmFuc2Zvcm1lcl8gd2l0aCB1c2luZyBfaW5wdXRfIGFzIGFuIGFyZ3VtZW50IGZvciBpdCBpZiBfaW5wdXRfIGlzIG5vdCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgLlxuICogIE90aGVyd2lzZSwgcmV0dXJuIHRoZSByZXN1bHQgb2YgX3JlY292ZXJlcl8uXG4gKlxuICogIEJhc2ljYWxseSwgdGhpcyBvcGVyYXRpb24gaXMgYSBjb21iaW5hdGlvbiBgbWFwKClgIGFuZCBgdW53cmFwT3JFbHNlKClgLlxuICpcbiAqICAqIGBVYCBtdXN0IG5vdCBiZSBgTWF5YmVcdTAwM2MqXHUwMDNlYC5cbiAqICAgICAgKiBJZiB0aGUgcmVzdWx0IG9mIF90cmFuc2Zvcm1lcl8gaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLCB0aGlzIHRocm93IGFuIGBFcnJvcmAuXG4gKiAgICAgICogSWYgdGhlIHJlc3VsdCBvZiBfcmVjb3ZlcmVyXyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoaXMgdGhyb3cgYW4gYEVycm9yYC5cbiAqICAqIElmIHlvdSdkIGxpa2UgdG8gYWNjZXB0IGBNYXliZVx1MDAzYypcdTAwM2VgIGFzIGBVYCwgdXNlIGEgY29tYmluYXRpb24gYGFuZFRoZW4oKWAgYW5kIGBvckVsc2UoKWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBPckVsc2VGb3JNYXliZShpbnB1dCwgcmVjb3ZlcmVyLCB0cmFuc2Zvcm1lcikge1xuICAgIGxldCByZXN1bHQ7XG4gICAgbGV0IG1zZyA9ICcnO1xuICAgIGlmIChpbnB1dCAhPT0gdW5kZWZpbmVkIFx1MDAyNlx1MDAyNiBpbnB1dCAhPT0gbnVsbCkge1xuICAgICAgICByZXN1bHQgPSB0cmFuc2Zvcm1lcihpbnB1dCk7XG4gICAgICAgIG1zZyA9IEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXN1bHQgPSByZWNvdmVyZXIoKTtcbiAgICAgICAgbXNnID0gRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkU7XG4gICAgfVxuICAgIGNvbnN0IHBhc3NlZCA9IGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZChyZXN1bHQsIG1zZyk7XG4gICAgcmV0dXJuIHBhc3NlZDtcbn1cbiIsICJpbXBvcnQgeyBFUlJfTVNHX1RSQU5TRk9STUVSX01VU1RfTk9UX1JFVFVSTl9OT19WQUxfRk9SX01BWUJFLCBFUlJfTVNHX1JFQ09WRVJFUl9NVVNUX05PVF9SRVRVUk5fTk9fVkFMX0ZPUl9NQVlCRSwgfSBmcm9tICcuL2ludGVybmFsL2Vycm9yX21lc3NhZ2UuanMnO1xuaW1wb3J0IHsgaXNOb3ROdWxsT3JVbmRlZmluZWQsIGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZCwgfSBmcm9tICcuL21heWJlLmpzJztcbi8qKlxuICogIFJldHVybiB0aGUgcmVzdWx0IG9mIF90cmFuc2Zvcm1lcl8gd2l0aCB1c2luZyBfaW5wdXRfIGFzIGFuIGFyZ3VtZW50IGZvciBpdCBpZiBfaW5wdXRfIGlzIG5vdCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgLlxuICogIE90aGVyd2lzZSwgcmV0dXJuIHRoZSByZXN1bHQgb2YgX3JlY292ZXJlcl8uXG4gKlxuICogIEJhc2ljYWxseSwgdGhpcyBvcGVyYXRpb24gaXMgYSBjb21iaW5hdGlvbiBgbWFwKClgIGFuZCBgdW53cmFwT3JFbHNlKClgLlxuICpcbiAqICAqIGBVYCBtdXN0IG5vdCBiZSBgTWF5YmVcdTAwM2MqXHUwMDNlYC5cbiAqICAgICAgKiBJZiB0aGUgcmVzdWx0IG9mIF90cmFuc2Zvcm1lcl8gaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLCB0aGlzIHRocm93IGFuIGBFcnJvcmAuXG4gKiAgICAgICogSWYgdGhlIHJlc3VsdCBvZiBfcmVjb3ZlcmVyXyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoaXMgdGhyb3cgYW4gYEVycm9yYC5cbiAqICAqIElmIHlvdSdkIGxpa2UgdG8gYWNjZXB0IGBNYXliZVx1MDAzYypcdTAwM2VgIGFzIGBVYCwgdXNlIGEgY29tYmluYXRpb24gYGFuZFRoZW4oKWAgYW5kIGBvckVsc2UoKWAuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtYXBPckVsc2VBc3luY0Zvck1heWJlKGlucHV0LCByZWNvdmVyZXIsIHRyYW5zZm9ybWVyKSB7XG4gICAgbGV0IHJlc3VsdDtcbiAgICBsZXQgbWVzc2FnZUZvckV4cGVjdCA9ICcnO1xuICAgIGlmIChpc05vdE51bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgdHJhbnNmb3JtZXIoaW5wdXQpO1xuICAgICAgICBtZXNzYWdlRm9yRXhwZWN0ID0gRVJSX01TR19UUkFOU0ZPUk1FUl9NVVNUX05PVF9SRVRVUk5fTk9fVkFMX0ZPUl9NQVlCRTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IHJlY292ZXJlcigpO1xuICAgICAgICBtZXNzYWdlRm9yRXhwZWN0ID0gRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkU7XG4gICAgfVxuICAgIGNvbnN0IGNoZWNrZWQgPSBleHBlY3ROb3ROdWxsT3JVbmRlZmluZWQocmVzdWx0LCBtZXNzYWdlRm9yRXhwZWN0KTtcbiAgICByZXR1cm4gY2hlY2tlZDtcbn1cbiIsICJpbXBvcnQgeyBFUlJfTVNHX1VOV1JBUF9FUlJfQlVUX0lOUFVUX0lTX09LLCBFUlJfTVNHX1VOV1JBUF9PS19CVVRfSU5QVVRfSVNfRVJSLCB9IGZyb20gJy4vaW50ZXJuYWwvZXJyb3JfbWVzc2FnZS5qcyc7XG5leHBvcnQgZnVuY3Rpb24gaXNPayhpbnB1dCkge1xuICAgIHJldHVybiBpbnB1dC5vaztcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVPayh2YWwpIHtcbiAgICBjb25zdCByID0ge1xuICAgICAgICBvazogdHJ1ZSxcbiAgICAgICAgdmFsLFxuICAgICAgICAvLyBYWFg6XG4gICAgICAgIC8vICBXZSBuZWVkIHRvIGZpbGwgd2l0aCBgbnVsbGAgdG8gaW1wcm92ZSB0aGUgY29tcGF0aWJpbGl0eSB3aXRoIE5leHQuanNcbiAgICAgICAgLy8gIHNlZSBodHRwczovL2dpdGh1Yi5jb20vb3B0aW9uLXQvb3B0aW9uLXQvcHVsbC8xMjU2XG4gICAgICAgIGVycjogbnVsbCxcbiAgICB9O1xuICAgIHJldHVybiByO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRXJyKGlucHV0KSB7XG4gICAgcmV0dXJuICFpbnB1dC5vaztcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFcnIoZXJyKSB7XG4gICAgY29uc3QgciA9IHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICAvLyBYWFg6XG4gICAgICAgIC8vICBXZSBuZWVkIHRvIGZpbGwgd2l0aCBgbnVsbGAgdG8gaW1wcm92ZSB0aGUgY29tcGF0aWJpbGl0eSB3aXRoIE5leHQuanNcbiAgICAgICAgLy8gIHNlZSBodHRwczovL2dpdGh1Yi5jb20vb3B0aW9uLXQvb3B0aW9uLXQvcHVsbC8xMjU2XG4gICAgICAgIHZhbDogbnVsbCxcbiAgICAgICAgZXJyLFxuICAgIH07XG4gICAgcmV0dXJuIHI7XG59XG4vKipcbiAqICBSZXR1cm4gdGhlIGlubmVyIGBUYCBvZiBhIGBPayhUKWAuXG4gKlxuICogIEB0aHJvd3Mge1R5cGVFcnJvcn1cbiAqICAgICAgVGhyb3dzIGlmIHRoZSBzZWxmIGlzIGEgYEVycmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBPayhpbnB1dCkge1xuICAgIHJldHVybiBleHBlY3RPayhpbnB1dCwgRVJSX01TR19VTldSQVBfT0tfQlVUX0lOUFVUX0lTX0VSUik7XG59XG4vKipcbiAqICBSZXR1cm4gdGhlIGlubmVyIGBFYCBvZiBhIGBFcnIoRSlgLlxuICpcbiAqICBAdGhyb3dzIHtUeXBlRXJyb3J9XG4gKiAgICAgIFRocm93cyBpZiB0aGUgc2VsZiBpcyBhIGBPa2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBFcnIoaW5wdXQpIHtcbiAgICByZXR1cm4gZXhwZWN0RXJyKGlucHV0LCBFUlJfTVNHX1VOV1JBUF9FUlJfQlVUX0lOUFVUX0lTX09LKTtcbn1cbi8qKlxuICogIFJldHVybiBfaW5wdXRfIGFzIGBUYCBpZiB0aGUgcGFzc2VkIF9pbnB1dF8gaXMgYE9rKFQpYC5cbiAqICBPdGhlcndpc2UsIHRocm93IGBUeXBlRXJyb3JgIHdpdGggdGhlIHBhc3NlZCBgbXNnYC5cbiAqXG4gKiAgQHRocm93cyB7VHlwZUVycm9yfVxuICogICAgICBUaHJvd3MgaWYgdGhlIHNlbGYgaXMgYSBgRXJyYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cGVjdE9rKGlucHV0LCBtc2cpIHtcbiAgICBpZiAoIWlucHV0Lm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IobXNnKTtcbiAgICB9XG4gICAgcmV0dXJuIGlucHV0LnZhbDtcbn1cbi8qKlxuICogIFJldHVybiBfaW5wdXRfIGFzIGBFYCBpZiB0aGUgcGFzc2VkIF9pbnB1dF8gaXMgYEVycihFKWAuXG4gKiAgT3RoZXJ3aXNlLCB0aHJvdyBgVHlwZUVycm9yYCB3aXRoIHRoZSBwYXNzZWQgYG1zZ2AuXG4gKlxuICogIEB0aHJvd3Mge1R5cGVFcnJvcn1cbiAqICAgICAgVGhyb3dzIGlmIHRoZSBzZWxmIGlzIGEgYE9rYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cGVjdEVycihpbnB1dCwgbXNnKSB7XG4gICAgaWYgKGlucHV0Lm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IobXNnKTtcbiAgICB9XG4gICAgcmV0dXJuIGlucHV0LmVycjtcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVFcnIsIGNyZWF0ZU9rIH0gZnJvbSAnLi4vcGxhaW5fcmVzdWx0L3Jlc3VsdC5qcyc7XG5pbXBvcnQgeyBpc05vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSBgTWF5YmVcdTAwM2NUXHUwMDNlYCBpbnRvIGEgYFJlc3VsdFx1MDAzY1QsIEVcdTAwM2VgIGJ5IG1hcHBpbmcgYFRgIHRvIGBPayhUKWAuXG4gKiBJZiBgaW5wdXRgIGlzIGB1bmRlZmluZWRgIG9yIGBudWxsYCwgdGhlbiByZXR1cm4gYEVycihFKWAgd2l0aCBwYXNzZWQgYGVycmAuXG4gKlxuICogQXJndW1lbnRzIHBhc3NlZCB0byB0aGlzIGFyZSBlYWdlcmx5IGV2YWx1YXRlZDtcbiAqIGlmIHlvdSBhcmUgcGFzc2luZyB0aGUgcmVzdWx0IG9mIGEgZnVuY3Rpb24gY2FsbCwgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIG9rT3JFbHNlLFxuICogd2hpY2ggaXMgbGF6aWx5IGV2YWx1YXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9rT3JGb3JNYXliZShpbnB1dCwgZXJyKSB7XG4gICAgaWYgKGlzTm90TnVsbE9yVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICBjb25zdCBva1dyYXBwZWQgPSBjcmVhdGVPayhpbnB1dCk7XG4gICAgICAgIHJldHVybiBva1dyYXBwZWQ7XG4gICAgfVxuICAgIGNvbnN0IGVycldyYXBwZWQgPSBjcmVhdGVFcnIoZXJyKTtcbiAgICByZXR1cm4gZXJyV3JhcHBlZDtcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVFcnIsIGNyZWF0ZU9rIH0gZnJvbSAnLi4vcGxhaW5fcmVzdWx0L3Jlc3VsdC5qcyc7XG5pbXBvcnQgeyBpc05vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSBgTWF5YmVcdTAwM2NUXHUwMDNlYCBpbnRvIGEgYFJlc3VsdFx1MDAzY1QsIEVcdTAwM2VgIGJ5IG1hcHBpbmcgYFRgIHRvIGBPayhUKWAuXG4gKiBJZiBgaW5wdXRgIGlzIGB1bmRlZmluZWRgIG9yIGBudWxsYCwgdGhlbiByZXR1cm5zIGBFcnIoRSlgIHdpdGggdGhlIHJlc3VsdCBvZiBgcmVjb3ZlcmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBva09yRWxzZUZvck1heWJlKGlucHV0LCByZWNvdmVyZXIpIHtcbiAgICBpZiAoaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIGNvbnN0IG9rV3JhcHBlZCA9IGNyZWF0ZU9rKGlucHV0KTtcbiAgICAgICAgcmV0dXJuIG9rV3JhcHBlZDtcbiAgICB9XG4gICAgY29uc3QgZmFsbGJhY2sgPSByZWNvdmVyZXIoKTtcbiAgICBjb25zdCBlcnJXcmFwcGVkID0gY3JlYXRlRXJyKGZhbGxiYWNrKTtcbiAgICByZXR1cm4gZXJyV3JhcHBlZDtcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVFcnIsIGNyZWF0ZU9rIH0gZnJvbSAnLi4vcGxhaW5fcmVzdWx0L3Jlc3VsdC5qcyc7XG5pbXBvcnQgeyBpc05vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSBgTWF5YmVcdTAwM2NUXHUwMDNlYCBpbnRvIGEgYFJlc3VsdFx1MDAzY1QsIEVcdTAwM2VgIGJ5IG1hcHBpbmcgYFRgIHRvIGBPayhUKWAuXG4gKiBJZiBgaW5wdXRgIGlzIGB1bmRlZmluZWRgIG9yIGBudWxsYCwgdGhlbiByZXR1cm5zIGBFcnIoRSlgIHdpdGggdGhlIHJlc3VsdCBvZiBgcmVjb3ZlcmVyKClgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBva09yRWxzZUFzeW5jRm9yTWF5YmUoaW5wdXQsIHJlY292ZXJlcikge1xuICAgIGlmIChpc05vdE51bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgY29uc3Qgb2tXcmFwcGVkID0gY3JlYXRlT2soaW5wdXQpO1xuICAgICAgICByZXR1cm4gb2tXcmFwcGVkO1xuICAgIH1cbiAgICBjb25zdCBmYWxsYmFjayA9IGF3YWl0IHJlY292ZXJlcigpO1xuICAgIGNvbnN0IGVycldyYXBwZWQgPSBjcmVhdGVFcnIoZmFsbGJhY2spO1xuICAgIHJldHVybiBlcnJXcmFwcGVkO1xufVxuIiwgIi8qKlxuICogIFJldHVybiBfaW5wdXRfIGFzIGBUYCBpZiB0aGUgcGFzc2VkIF9pbnB1dF8gaXMgbm90IGBudWxsYCBhbmQgYHVuZGVmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHJlc3VsdCBvZiBfcmVjb3ZlcmVyXy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9yRWxzZUZvck1heWJlKGlucHV0LCByZWNvdmVyZXIpIHtcbiAgICBpZiAoaW5wdXQgIT09IHVuZGVmaW5lZCBcdTAwMjZcdTAwMjYgaW5wdXQgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICBjb25zdCBmYWxsYmFjayA9IHJlY292ZXJlcigpO1xuICAgIHJldHVybiBmYWxsYmFjaztcbn1cbiIsICJpbXBvcnQgeyBpc05vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiAgUmV0dXJuIF9pbnB1dF8gYXMgYFRgIGlmIHRoZSBwYXNzZWQgX2lucHV0XyBpcyBub3QgYG51bGxgIGFuZCBgdW5kZWZpbmVkYC5cbiAqICBPdGhlcndpc2UsIHJldHVybiB0aGUgcmVzdWx0IG9mIF9yZWNvdmVyZXJfLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3JFbHNlQXN5bmNGb3JNYXliZShpbnB1dCwgcmVjb3ZlcmVyKSB7XG4gICAgaWYgKGlzTm90TnVsbE9yVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGNvbnN0IGZhbGxiYWNrID0gYXdhaXQgcmVjb3ZlcmVyKCk7XG4gICAgcmV0dXJuIGZhbGxiYWNrO1xufVxuIiwgImltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnLi9tYXliZS5qcyc7XG4vKipcbiAqICBSZXR1cm4gYG51bGxgIGlmIF9pbnB1dF8gaXMgYG51bGxgIG9yIGB1bmRmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gYFRgIGRpcmVjdGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9OdWxsYWJsZUZyb21NYXliZShpbnB1dCkge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dDtcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVPaywgY3JlYXRlRXJyIH0gZnJvbSAnLi4vcGxhaW5fcmVzdWx0L3Jlc3VsdC5qcyc7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiAgUmV0dXJuIGBFcnJcdTAwM2N2b2lkXHUwMDNlYCBpZiBfaW5wdXRfIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqICBPdGhlcndpc2UsIHJldHVybiBgT2tcdTAwM2NUXHUwMDNlYCBkaXJlY3RseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUmVzdWx0T2tGcm9tTWF5YmUoaW5wdXQpIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFcnIodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gY3JlYXRlT2soaW5wdXQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4vKipcbiAqICBSZXR1cm4gYE9rXHUwMDNjdm9pZFx1MDAzZWAgaWYgX2lucHV0XyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gYEVyclx1MDAzY0VcdTAwM2VgIGRpcmVjdGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9SZXN1bHRFcnJGcm9tTWF5YmUoaW5wdXQpIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVPayh1bmRlZmluZWQpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBjcmVhdGVFcnIoaW5wdXQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4iLCAiaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICcuL21heWJlLmpzJztcbi8qKlxuICogIFJldHVybiBgdW5kZmluZWRgIGlmIF9pbnB1dF8gaXMgYG51bGxgIG9yIGB1bmRmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gYFRgIGRpcmVjdGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9VbmRlZmluYWJsZUZyb21NYXliZShpbnB1dCkge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGlucHV0O1xufVxuIiwgImltcG9ydCB7IEVSUl9NU0dfREVGQVVMVF9WQUxVRV9NVVNUX05PVF9CRV9OT19WQUxfRk9SX01BWUJFIH0gZnJvbSAnLi9pbnRlcm5hbC9lcnJvcl9tZXNzYWdlLmpzJztcbmltcG9ydCB7IGlzTm90TnVsbE9yVW5kZWZpbmVkLCBleHBlY3ROb3ROdWxsT3JVbmRlZmluZWQsIH0gZnJvbSAnLi9tYXliZS5qcyc7XG4vKipcbiAqICBSZXR1cm4gX2lucHV0XyBhcyBgVGAgaWYgdGhlIHBhc3NlZCBfaW5wdXRfIGlzIG5vdCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgLlxuICogIE90aGVyd2lzZSwgcmV0dXJuIF9kZWZhdWx0VmFsdWVfLlxuICpcbiAqICAqIF9kZWZhdWx0VmFsdWVfIG11c3Qgbm90IGJlIGBNYXliZVx1MDAzYypcdTAwM2VgLlxuICogICogSWYgdGhlIF9kZWZhdWx0VmFsdWVfIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYCwgdGhyb3cgYFR5cGVFcnJvcmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBPckZvck1heWJlKGlucHV0LCBkZWZhdWx0VmFsdWUpIHtcbiAgICBpZiAoaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG4gICAgY29uc3QgcGFzc2VkID0gZXhwZWN0Tm90TnVsbE9yVW5kZWZpbmVkKGRlZmF1bHRWYWx1ZSwgRVJSX01TR19ERUZBVUxUX1ZBTFVFX01VU1RfTk9UX0JFX05PX1ZBTF9GT1JfTUFZQkUpO1xuICAgIHJldHVybiBwYXNzZWQ7XG59XG4iLCAiaW1wb3J0IHsgRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUgfSBmcm9tICcuL2ludGVybmFsL2Vycm9yX21lc3NhZ2UuanMnO1xuaW1wb3J0IHsgaXNOb3ROdWxsT3JVbmRlZmluZWQsIGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZCwgfSBmcm9tICcuL21heWJlLmpzJztcbi8qKlxuICogIFJldHVybiBfaW5wdXRfIGFzIGBUYCBpZiB0aGUgcGFzc2VkIF9pbnB1dF8gaXMgbm90IGBudWxsYCBhbmQgYHVuZGVmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHJlc3VsdCBvZiBfcmVjb3ZlcmVyXy5cbiAqXG4gKiAgKiBUaGUgcmVzdWx0IG9mIF9yZWNvdmVyZXJfIG11c3Qgbm90IGJlIGBNYXliZVx1MDAzYypcdTAwM2VgLlxuICogICogSWYgdGhlIHJlc3VsdCBvZiBfcmVjb3ZlcmVyXyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRocm93IGBUeXBlRXJyb3JgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwT3JFbHNlRm9yTWF5YmUoaW5wdXQsIHJlY292ZXJlcikge1xuICAgIGlmIChpc05vdE51bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICBjb25zdCBmYWxsYmFjayA9IHJlY292ZXJlcigpO1xuICAgIGNvbnN0IHBhc3NlZCA9IGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZChmYWxsYmFjaywgRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUpO1xuICAgIHJldHVybiBwYXNzZWQ7XG59XG4iLCAiaW1wb3J0IHsgRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUgfSBmcm9tICcuL2ludGVybmFsL2Vycm9yX21lc3NhZ2UuanMnO1xuaW1wb3J0IHsgaXNOb3ROdWxsT3JVbmRlZmluZWQsIGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZCwgfSBmcm9tICcuL21heWJlLmpzJztcbi8qKlxuICogIFJldHVybiBfaW5wdXRfIGFzIGBUYCBpZiB0aGUgcGFzc2VkIF9pbnB1dF8gaXMgbm90IGBudWxsYCBhbmQgYHVuZGVmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHJlc3VsdCBvZiBfcmVjb3ZlcmVyXy5cbiAqXG4gKiAgKiBUaGUgcmVzdWx0IG9mIF9yZWNvdmVyZXJfIG11c3Qgbm90IGJlIGBNYXliZVx1MDAzYypcdTAwM2VgLlxuICogICogSWYgdGhlIHJlc3VsdCBvZiBfcmVjb3ZlcmVyXyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRocm93IGBUeXBlRXJyb3JgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdW53cmFwT3JFbHNlQXN5bmNGb3JNYXliZShpbnB1dCwgcmVjb3ZlcmVyKSB7XG4gICAgaWYgKGlzTm90TnVsbE9yVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGNvbnN0IGZhbGxiYWNrID0gYXdhaXQgcmVjb3ZlcmVyKCk7XG4gICAgY29uc3QgY2hlY2tlZCA9IGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZChmYWxsYmFjaywgRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUpO1xuICAgIHJldHVybiBjaGVja2VkO1xufVxuIiwgIi8qKiBDU1Djga5jb25uZWN0LXNyY+OBp+ioseWPr+OBleOCjOOBpuOBhOOCi1VSTOOBi+OBqeOBhuOBi+WIpOWumuOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGlzQWxsb3dlZENvbm5lY3RTcmMgPSAodXJsOiBVUkwpOiBib29sZWFuID0+IHtcbiAgaWYgKGNvbm5lY3RTcmMuaW5jbHVkZXModXJsLmhvc3RuYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh1cmwuaG9zdG5hbWUuZW5kc1dpdGgoXCIub3BlbmFpLmF6dXJlLmNvbVwiKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmNvbnN0IGNvbm5lY3RTcmMgPSBbXG4gIFwiaS5neWF6by5jb21cIixcbiAgXCJ0Lmd5YXpvLmNvbVwiLFxuICBcInNjcmFwYm94LmlvXCIsXG4gIFwiYXBpLm9wZW5haS5jb21cIixcbiAgXCIqLm9wZW5haS5henVyZS5jb21cIixcbiAgXCJtYXBzLmdvb2dsZWFwaXMuY29tXCIsXG4gIFwidXBsb2FkLmd5YXpvLmNvbVwiLFxuICBcInN0b3JhZ2UuZ29vZ2xlYXBpcy5jb21cIixcbiAgXCJzZW50cnkuaW9cIixcbl07XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFBhdGgocGF0aD86IHN0cmluZykge1xuICBpZiAodHlwZW9mIHBhdGggIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYFBhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShwYXRoKX1gLFxuICAgICk7XG4gIH1cbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBhc3NlcnRQYXRoIH0gZnJvbSBcIi4vYXNzZXJ0X3BhdGgudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwU3VmZml4KG5hbWU6IHN0cmluZywgc3VmZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoc3VmZml4Lmxlbmd0aCA+PSBuYW1lLmxlbmd0aCkge1xuICAgIHJldHVybiBuYW1lO1xuICB9XG5cbiAgY29uc3QgbGVuRGlmZiA9IG5hbWUubGVuZ3RoIC0gc3VmZml4Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpID0gc3VmZml4Lmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgaWYgKG5hbWUuY2hhckNvZGVBdChsZW5EaWZmICsgaSkgIT09IHN1ZmZpeC5jaGFyQ29kZUF0KGkpKSB7XG4gICAgICByZXR1cm4gbmFtZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmFtZS5zbGljZSgwLCAtc3VmZml4Lmxlbmd0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXN0UGF0aFNlZ21lbnQoXG4gIHBhdGg6IHN0cmluZyxcbiAgaXNTZXA6IChjaGFyOiBudW1iZXIpID0+IGJvb2xlYW4sXG4gIHN0YXJ0ID0gMCxcbik6IHN0cmluZyB7XG4gIGxldCBtYXRjaGVkTm9uU2VwYXJhdG9yID0gZmFsc2U7XG4gIGxldCBlbmQgPSBwYXRoLmxlbmd0aDtcblxuICBmb3IgKGxldCBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyAtLWkpIHtcbiAgICBpZiAoaXNTZXAocGF0aC5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgaWYgKG1hdGNoZWROb25TZXBhcmF0b3IpIHtcbiAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghbWF0Y2hlZE5vblNlcGFyYXRvcikge1xuICAgICAgbWF0Y2hlZE5vblNlcGFyYXRvciA9IHRydWU7XG4gICAgICBlbmQgPSBpICsgMTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFyZ3MocGF0aDogc3RyaW5nLCBzdWZmaXg6IHN0cmluZykge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiBwYXRoO1xuICBpZiAodHlwZW9mIHN1ZmZpeCAhPT0gXCJzdHJpbmdcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBgU3VmZml4IG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkoc3VmZml4KX1gLFxuICAgICk7XG4gIH1cbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IHRoZSBCcm93c2VyaWZ5IGF1dGhvcnMuIE1JVCBMaWNlbnNlLlxuLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Jyb3dzZXJpZnkvcGF0aC1icm93c2VyaWZ5L1xuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBUcmFpbGluZ1NlcGFyYXRvcnMoXG4gIHNlZ21lbnQ6IHN0cmluZyxcbiAgaXNTZXA6IChjaGFyOiBudW1iZXIpID0+IGJvb2xlYW4sXG4pOiBzdHJpbmcge1xuICBpZiAoc2VnbWVudC5sZW5ndGggPD0gMSkge1xuICAgIHJldHVybiBzZWdtZW50O1xuICB9XG5cbiAgbGV0IGVuZCA9IHNlZ21lbnQubGVuZ3RoO1xuXG4gIGZvciAobGV0IGkgPSBzZWdtZW50Lmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICBpZiAoaXNTZXAoc2VnbWVudC5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgZW5kID0gaTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNlZ21lbnQuc2xpY2UoMCwgZW5kKTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IHRoZSBCcm93c2VyaWZ5IGF1dGhvcnMuIE1JVCBMaWNlbnNlLlxuLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Jyb3dzZXJpZnkvcGF0aC1icm93c2VyaWZ5L1xuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQge1xuICBDSEFSX0JBQ0tXQVJEX1NMQVNILFxuICBDSEFSX0ZPUldBUkRfU0xBU0gsXG4gIENIQVJfTE9XRVJDQVNFX0EsXG4gIENIQVJfTE9XRVJDQVNFX1osXG4gIENIQVJfVVBQRVJDQVNFX0EsXG4gIENIQVJfVVBQRVJDQVNFX1osXG59IGZyb20gXCIuLi9fY29tbW9uL2NvbnN0YW50cy50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNQb3NpeFBhdGhTZXBhcmF0b3IoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBjb2RlID09PSBDSEFSX0ZPUldBUkRfU0xBU0g7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1BhdGhTZXBhcmF0b3IoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBjb2RlID09PSBDSEFSX0ZPUldBUkRfU0xBU0ggfHwgY29kZSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2luZG93c0RldmljZVJvb3QoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgKGNvZGUgPj0gQ0hBUl9MT1dFUkNBU0VfQSAmJiBjb2RlIDw9IENIQVJfTE9XRVJDQVNFX1opIHx8XG4gICAgKGNvZGUgPj0gQ0hBUl9VUFBFUkNBU0VfQSAmJiBjb2RlIDw9IENIQVJfVVBQRVJDQVNFX1opXG4gICk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFyZyh1cmw6IFVSTCB8IHN0cmluZykge1xuICB1cmwgPSB1cmwgaW5zdGFuY2VvZiBVUkwgPyB1cmwgOiBuZXcgVVJMKHVybCk7XG4gIGlmICh1cmwucHJvdG9jb2wgIT09IFwiZmlsZTpcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJNdXN0IGJlIGEgZmlsZSBVUkwuXCIpO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgYXNzZXJ0QXJnIH0gZnJvbSBcIi4uL19jb21tb24vZnJvbV9maWxlX3VybC50c1wiO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZmlsZSBVUkwgdG8gYSBwYXRoIHN0cmluZy5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZnJvbUZpbGVVcmwgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9wYXRoL3dpbmRvd3MvZnJvbV9maWxlX3VybC50c1wiO1xuICpcbiAqIGZyb21GaWxlVXJsKFwiZmlsZTovLy9ob21lL2Zvb1wiKTsgLy8gXCJcXFxcaG9tZVxcXFxmb29cIlxuICogZnJvbUZpbGVVcmwoXCJmaWxlOi8vL0M6L1VzZXJzL2Zvb1wiKTsgLy8gXCJDOlxcXFxVc2Vyc1xcXFxmb29cIlxuICogZnJvbUZpbGVVcmwoXCJmaWxlOi8vbG9jYWxob3N0L2hvbWUvZm9vXCIpOyAvLyBcIlxcXFxcXFxcbG9jYWxob3N0XFxcXGhvbWVcXFxcZm9vXCJcbiAqIGBgYFxuICogQHBhcmFtIHVybCBvZiBhIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tRmlsZVVybCh1cmw6IFVSTCB8IHN0cmluZyk6IHN0cmluZyB7XG4gIHVybCA9IGFzc2VydEFyZyh1cmwpO1xuICBsZXQgcGF0aCA9IGRlY29kZVVSSUNvbXBvbmVudChcbiAgICB1cmwucGF0aG5hbWUucmVwbGFjZSgvXFwvL2csIFwiXFxcXFwiKS5yZXBsYWNlKC8lKD8hWzAtOUEtRmEtZl17Mn0pL2csIFwiJTI1XCIpLFxuICApLnJlcGxhY2UoL15cXFxcKihbQS1aYS16XTopKFxcXFx8JCkvLCBcIiQxXFxcXFwiKTtcbiAgaWYgKHVybC5ob3N0bmFtZSAhPT0gXCJcIikge1xuICAgIC8vIE5vdGU6IFRoZSBgVVJMYCBpbXBsZW1lbnRhdGlvbiBndWFyYW50ZWVzIHRoYXQgdGhlIGRyaXZlIGxldHRlciBhbmRcbiAgICAvLyBob3N0bmFtZSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBPdGhlcndpc2UgaXQgd291bGQgbm90IGhhdmUgYmVlbiB2YWxpZFxuICAgIC8vIHRvIGFwcGVuZCB0aGUgaG9zdG5hbWUgYW5kIHBhdGggbGlrZSB0aGlzLlxuICAgIHBhdGggPSBgXFxcXFxcXFwke3VybC5ob3N0bmFtZX0ke3BhdGh9YDtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBDSEFSX0NPTE9OIH0gZnJvbSBcIi4uL19jb21tb24vY29uc3RhbnRzLnRzXCI7XG5pbXBvcnQgeyBhc3NlcnRQYXRoIH0gZnJvbSBcIi4uL19jb21tb24vYXNzZXJ0X3BhdGgudHNcIjtcbmltcG9ydCB7IGlzUGF0aFNlcGFyYXRvciwgaXNXaW5kb3dzRGV2aWNlUm9vdCB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qKlxuICogVmVyaWZpZXMgd2hldGhlciBwcm92aWRlZCBwYXRoIGlzIGFic29sdXRlXG4gKiBAcGFyYW0gcGF0aCB0byBiZSB2ZXJpZmllZCBhcyBhYnNvbHV0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBYnNvbHV0ZShwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoMCk7XG4gIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGNvZGUpKSB7XG4gICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgIGlmIChsZW4gPiAyICYmIHBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTikge1xuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMikpKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmNvbnN0IFdISVRFU1BBQ0VfRU5DT0RJTkdTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBcIlxcdTAwMDlcIjogXCIlMDlcIixcbiAgXCJcXHUwMDBBXCI6IFwiJTBBXCIsXG4gIFwiXFx1MDAwQlwiOiBcIiUwQlwiLFxuICBcIlxcdTAwMENcIjogXCIlMENcIixcbiAgXCJcXHUwMDBEXCI6IFwiJTBEXCIsXG4gIFwiXFx1MDAyMFwiOiBcIiUyMFwiLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVdoaXRlc3BhY2Uoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2VBbGwoL1tcXHNdL2csIChjKSA9PiB7XG4gICAgcmV0dXJuIFdISVRFU1BBQ0VfRU5DT0RJTkdTW2NdID8/IGM7XG4gIH0pO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGVuY29kZVdoaXRlc3BhY2UgfSBmcm9tIFwiLi4vX2NvbW1vbi90b19maWxlX3VybC50c1wiO1xuaW1wb3J0IHsgaXNBYnNvbHV0ZSB9IGZyb20gXCIuL2lzX2Fic29sdXRlLnRzXCI7XG5cbi8qKlxuICogQ29udmVydHMgYSBwYXRoIHN0cmluZyB0byBhIGZpbGUgVVJMLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB0b0ZpbGVVcmwgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9wYXRoL3dpbmRvd3MvdG9fZmlsZV91cmwudHNcIjtcbiAqXG4gKiB0b0ZpbGVVcmwoXCJcXFxcaG9tZVxcXFxmb29cIik7IC8vIG5ldyBVUkwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpXG4gKiB0b0ZpbGVVcmwoXCJDOlxcXFxVc2Vyc1xcXFxmb29cIik7IC8vIG5ldyBVUkwoXCJmaWxlOi8vL0M6L1VzZXJzL2Zvb1wiKVxuICogdG9GaWxlVXJsKFwiXFxcXFxcXFwxMjcuMC4wLjFcXFxcaG9tZVxcXFxmb29cIik7IC8vIG5ldyBVUkwoXCJmaWxlOi8vMTI3LjAuMC4xL2hvbWUvZm9vXCIpXG4gKiBgYGBcbiAqIEBwYXJhbSBwYXRoIHRvIGNvbnZlcnQgdG8gZmlsZSBVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRmlsZVVybChwYXRoOiBzdHJpbmcpOiBVUkwge1xuICBpZiAoIWlzQWJzb2x1dGUocGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLlwiKTtcbiAgfVxuICBjb25zdCBbLCBob3N0bmFtZSwgcGF0aG5hbWVdID0gcGF0aC5tYXRjaChcbiAgICAvXig/OlsvXFxcXF17Mn0oW14vXFxcXF0rKSg/PVsvXFxcXF0oPzpbXi9cXFxcXXwkKSkpPyguKikvLFxuICApITtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChcImZpbGU6Ly8vXCIpO1xuICB1cmwucGF0aG5hbWUgPSBlbmNvZGVXaGl0ZXNwYWNlKHBhdGhuYW1lIS5yZXBsYWNlKC8lL2csIFwiJTI1XCIpKTtcbiAgaWYgKGhvc3RuYW1lICE9PSB1bmRlZmluZWQgJiYgaG9zdG5hbWUgIT09IFwibG9jYWxob3N0XCIpIHtcbiAgICB1cmwuaG9zdG5hbWUgPSBob3N0bmFtZTtcbiAgICBpZiAoIXVybC5ob3N0bmFtZSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgaG9zdG5hbWUuXCIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdXJsO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgdGhlIEJyb3dzZXJpZnkgYXV0aG9ycy4gTUlUIExpY2Vuc2UuXG4vLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYnJvd3NlcmlmeS9wYXRoLWJyb3dzZXJpZnkvXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IENIQVJfRk9SV0FSRF9TTEFTSCB9IGZyb20gXCIuLi9fY29tbW9uL2NvbnN0YW50cy50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNQb3NpeFBhdGhTZXBhcmF0b3IoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBjb2RlID09PSBDSEFSX0ZPUldBUkRfU0xBU0g7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHtcbiAgYXNzZXJ0QXJncyxcbiAgbGFzdFBhdGhTZWdtZW50LFxuICBzdHJpcFN1ZmZpeCxcbn0gZnJvbSBcIi4uL19jb21tb24vYmFzZW5hbWUudHNcIjtcbmltcG9ydCB7IHN0cmlwVHJhaWxpbmdTZXBhcmF0b3JzIH0gZnJvbSBcIi4uL19jb21tb24vc3RyaXBfdHJhaWxpbmdfc2VwYXJhdG9ycy50c1wiO1xuaW1wb3J0IHsgaXNQb3NpeFBhdGhTZXBhcmF0b3IgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG4vKipcbiAqIFJldHVybiB0aGUgbGFzdCBwb3J0aW9uIG9mIGEgYHBhdGhgLlxuICogVHJhaWxpbmcgZGlyZWN0b3J5IHNlcGFyYXRvcnMgYXJlIGlnbm9yZWQsIGFuZCBvcHRpb25hbCBzdWZmaXggaXMgcmVtb3ZlZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vcGF0aC9iYXNlbmFtZS50c1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGJhc2VuYW1lKFwiL2hvbWUvdXNlci9Eb2N1bWVudHMvXCIpKTsgLy8gXCJEb2N1bWVudHNcIlxuICogY29uc29sZS5sb2coYmFzZW5hbWUoXCIvaG9tZS91c2VyL0RvY3VtZW50cy9pbWFnZS5wbmdcIikpOyAvLyBcImltYWdlLnBuZ1wiXG4gKiBjb25zb2xlLmxvZyhiYXNlbmFtZShcIi9ob21lL3VzZXIvRG9jdW1lbnRzL2ltYWdlLnBuZ1wiLCBcIi5wbmdcIikpOyAvLyBcImltYWdlXCJcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBwYXRoIC0gcGF0aCB0byBleHRyYWN0IHRoZSBuYW1lIGZyb20uXG4gKiBAcGFyYW0gW3N1ZmZpeF0gLSBzdWZmaXggdG8gcmVtb3ZlIGZyb20gZXh0cmFjdGVkIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYXNlbmFtZShwYXRoOiBzdHJpbmcsIHN1ZmZpeCA9IFwiXCIpOiBzdHJpbmcge1xuICBhc3NlcnRBcmdzKHBhdGgsIHN1ZmZpeCk7XG5cbiAgY29uc3QgbGFzdFNlZ21lbnQgPSBsYXN0UGF0aFNlZ21lbnQocGF0aCwgaXNQb3NpeFBhdGhTZXBhcmF0b3IpO1xuICBjb25zdCBzdHJpcHBlZFNlZ21lbnQgPSBzdHJpcFRyYWlsaW5nU2VwYXJhdG9ycyhcbiAgICBsYXN0U2VnbWVudCxcbiAgICBpc1Bvc2l4UGF0aFNlcGFyYXRvcixcbiAgKTtcbiAgcmV0dXJuIHN1ZmZpeCA/IHN0cmlwU3VmZml4KHN0cmlwcGVkU2VnbWVudCwgc3VmZml4KSA6IHN0cmlwcGVkU2VnbWVudDtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBDSEFSX0RPVCB9IGZyb20gXCIuLi9fY29tbW9uL2NvbnN0YW50cy50c1wiO1xuaW1wb3J0IHsgYXNzZXJ0UGF0aCB9IGZyb20gXCIuLi9fY29tbW9uL2Fzc2VydF9wYXRoLnRzXCI7XG5pbXBvcnQgeyBpc1Bvc2l4UGF0aFNlcGFyYXRvciB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qKlxuICogUmV0dXJuIHRoZSBleHRlbnNpb24gb2YgdGhlIGBwYXRoYCB3aXRoIGxlYWRpbmcgcGVyaW9kLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZXh0bmFtZSB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL3BhdGgvZXh0bmFtZS50c1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGV4dG5hbWUoXCIvaG9tZS91c2VyL0RvY3VtZW50cy9cIikpOyAvLyBcIlwiXG4gKiBjb25zb2xlLmxvZyhleHRuYW1lKFwiL2hvbWUvdXNlci9Eb2N1bWVudHMvaW1hZ2UucG5nXCIpKTsgLy8gXCIucG5nXCJcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBwYXRoIHdpdGggZXh0ZW5zaW9uXG4gKiBAcmV0dXJucyBleHRlbnNpb24gKGV4LiBmb3IgYGZpbGUudHNgIHJldHVybnMgYC50c2ApXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRuYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgbGV0IHN0YXJ0RG90ID0gLTE7XG4gIGxldCBzdGFydFBhcnQgPSAwO1xuICBsZXQgZW5kID0gLTE7XG4gIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gIC8vIGFmdGVyIGFueSBwYXRoIHNlcGFyYXRvciB3ZSBmaW5kXG4gIGxldCBwcmVEb3RTdGF0ZSA9IDA7XG4gIGZvciAobGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICBpZiAoaXNQb3NpeFBhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgLy8gZXh0ZW5zaW9uXG4gICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgIGVuZCA9IGkgKyAxO1xuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gQ0hBUl9ET1QpIHtcbiAgICAgIC8vIElmIHRoaXMgaXMgb3VyIGZpcnN0IGRvdCwgbWFyayBpdCBhcyB0aGUgc3RhcnQgb2Ygb3VyIGV4dGVuc2lvblxuICAgICAgaWYgKHN0YXJ0RG90ID09PSAtMSkgc3RhcnREb3QgPSBpO1xuICAgICAgZWxzZSBpZiAocHJlRG90U3RhdGUgIT09IDEpIHByZURvdFN0YXRlID0gMTtcbiAgICB9IGVsc2UgaWYgKHN0YXJ0RG90ICE9PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgIC8vIGhhdmUgYSBnb29kIGNoYW5jZSBhdCBoYXZpbmcgYSBub24tZW1wdHkgZXh0ZW5zaW9uXG4gICAgICBwcmVEb3RTdGF0ZSA9IC0xO1xuICAgIH1cbiAgfVxuXG4gIGlmIChcbiAgICBzdGFydERvdCA9PT0gLTEgfHxcbiAgICBlbmQgPT09IC0xIHx8XG4gICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkb3RcbiAgICBwcmVEb3RTdGF0ZSA9PT0gMCB8fFxuICAgIC8vIFRoZSAocmlnaHQtbW9zdCkgdHJpbW1lZCBwYXRoIGNvbXBvbmVudCBpcyBleGFjdGx5ICcuLidcbiAgICAocHJlRG90U3RhdGUgPT09IDEgJiYgc3RhcnREb3QgPT09IGVuZCAtIDEgJiYgc3RhcnREb3QgPT09IHN0YXJ0UGFydCArIDEpXG4gICkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG4gIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGFzc2VydEFyZyB9IGZyb20gXCIuLi9fY29tbW9uL2Zyb21fZmlsZV91cmwudHNcIjtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZpbGUgVVJMIHRvIGEgcGF0aCBzdHJpbmcuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vcGF0aC9wb3NpeC9mcm9tX2ZpbGVfdXJsLnRzXCI7XG4gKlxuICogZnJvbUZpbGVVcmwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpOyAvLyBcIi9ob21lL2Zvb1wiXG4gKiBgYGBcbiAqIEBwYXJhbSB1cmwgb2YgYSBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUZpbGVVcmwodXJsOiBVUkwgfCBzdHJpbmcpOiBzdHJpbmcge1xuICB1cmwgPSBhc3NlcnRBcmcodXJsKTtcbiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChcbiAgICB1cmwucGF0aG5hbWUucmVwbGFjZSgvJSg/IVswLTlBLUZhLWZdezJ9KS9nLCBcIiUyNVwiKSxcbiAgKTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBhc3NlcnRQYXRoIH0gZnJvbSBcIi4uL19jb21tb24vYXNzZXJ0X3BhdGgudHNcIjtcbmltcG9ydCB7IGlzUG9zaXhQYXRoU2VwYXJhdG9yIH0gZnJvbSBcIi4vX3V0aWwudHNcIjtcblxuLyoqXG4gKiBWZXJpZmllcyB3aGV0aGVyIHByb3ZpZGVkIHBhdGggaXMgYWJzb2x1dGVcbiAqIEBwYXJhbSBwYXRoIHRvIGJlIHZlcmlmaWVkIGFzIGFic29sdXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuICByZXR1cm4gcGF0aC5sZW5ndGggPiAwICYmIGlzUG9zaXhQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgwKSk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgZW5jb2RlV2hpdGVzcGFjZSB9IGZyb20gXCIuLi9fY29tbW9uL3RvX2ZpbGVfdXJsLnRzXCI7XG5pbXBvcnQgeyBpc0Fic29sdXRlIH0gZnJvbSBcIi4vaXNfYWJzb2x1dGUudHNcIjtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIHBhdGggc3RyaW5nIHRvIGEgZmlsZSBVUkwuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRvRmlsZVVybCB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL3BhdGgvcG9zaXgvdG9fZmlsZV91cmwudHNcIjtcbiAqXG4gKiB0b0ZpbGVVcmwoXCIvaG9tZS9mb29cIik7IC8vIG5ldyBVUkwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpXG4gKiBgYGBcbiAqIEBwYXJhbSBwYXRoIHRvIGNvbnZlcnQgdG8gZmlsZSBVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRmlsZVVybChwYXRoOiBzdHJpbmcpOiBVUkwge1xuICBpZiAoIWlzQWJzb2x1dGUocGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLlwiKTtcbiAgfVxuXG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoXCJmaWxlOi8vL1wiKTtcbiAgdXJsLnBhdGhuYW1lID0gZW5jb2RlV2hpdGVzcGFjZShcbiAgICBwYXRoLnJlcGxhY2UoLyUvZywgXCIlMjVcIikucmVwbGFjZSgvXFxcXC9nLCBcIiU1Q1wiKSxcbiAgKTtcbiAgcmV0dXJuIHVybDtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vLyBLZWVwIHRoaXMgdXAtdG8tZGF0ZSB3aXRoIERlbm8uYnVpbGQub3NcbmV4cG9ydCB0eXBlIE9TVHlwZSA9XG4gIHwgXCJkYXJ3aW5cIlxuICB8IFwibGludXhcIlxuICB8IFwid2luZG93c1wiXG4gIHwgXCJmcmVlYnNkXCJcbiAgfCBcIm5ldGJzZFwiXG4gIHwgXCJhaXhcIlxuICB8IFwic29sYXJpc1wiXG4gIHwgXCJpbGx1bW9zXCI7XG5cbmV4cG9ydCBjb25zdCBvc1R5cGU6IE9TVHlwZSA9ICgoKSA9PiB7XG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gIGNvbnN0IHsgRGVubyB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gIGlmICh0eXBlb2YgRGVubz8uYnVpbGQ/Lm9zID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIERlbm8uYnVpbGQub3M7XG4gIH1cblxuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICBjb25zdCB7IG5hdmlnYXRvciB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gIGlmIChuYXZpZ2F0b3I/LmFwcFZlcnNpb24/LmluY2x1ZGVzPy4oXCJXaW5cIikpIHtcbiAgICByZXR1cm4gXCJ3aW5kb3dzXCI7XG4gIH1cblxuICByZXR1cm4gXCJsaW51eFwiO1xufSkoKTtcblxuZXhwb3J0IGNvbnN0IGlzV2luZG93cyA9IG9zVHlwZSA9PT0gXCJ3aW5kb3dzXCI7XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgaXNXaW5kb3dzIH0gZnJvbSBcIi4vX29zLnRzXCI7XG5pbXBvcnQgeyBmcm9tRmlsZVVybCBhcyBwb3NpeEZyb21GaWxlVXJsIH0gZnJvbSBcIi4vcG9zaXgvZnJvbV9maWxlX3VybC50c1wiO1xuaW1wb3J0IHsgZnJvbUZpbGVVcmwgYXMgd2luZG93c0Zyb21GaWxlVXJsIH0gZnJvbSBcIi4vd2luZG93cy9mcm9tX2ZpbGVfdXJsLnRzXCI7XG5cbi8qKlxuICogQ29udmVydHMgYSBmaWxlIFVSTCB0byBhIHBhdGggc3RyaW5nLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBmcm9tRmlsZVVybCB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL3BhdGgvZnJvbV9maWxlX3VybC50c1wiO1xuICpcbiAqIC8vIHBvc2l4XG4gKiBmcm9tRmlsZVVybChcImZpbGU6Ly8vaG9tZS9mb29cIik7IC8vIFwiL2hvbWUvZm9vXCJcbiAqXG4gKiAvLyB3aW4zMlxuICogZnJvbUZpbGVVcmwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpOyAvLyBcIlxcXFxob21lXFxcXGZvb1wiXG4gKiBmcm9tRmlsZVVybChcImZpbGU6Ly8vQzovVXNlcnMvZm9vXCIpOyAvLyBcIkM6XFxcXFVzZXJzXFxcXGZvb1wiXG4gKiBmcm9tRmlsZVVybChcImZpbGU6Ly9sb2NhbGhvc3QvaG9tZS9mb29cIik7IC8vIFwiXFxcXFxcXFxsb2NhbGhvc3RcXFxcaG9tZVxcXFxmb29cIlxuICogYGBgXG4gKiBAcGFyYW0gdXJsIG9mIGEgZmlsZSBVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyb21GaWxlVXJsKHVybDogc3RyaW5nIHwgVVJMKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzV2luZG93cyA/IHdpbmRvd3NGcm9tRmlsZVVybCh1cmwpIDogcG9zaXhGcm9tRmlsZVVybCh1cmwpO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuaW1wb3J0IHsgdG9GaWxlVXJsIGFzIHBvc2l4VG9GaWxlVXJsIH0gZnJvbSBcIi4vcG9zaXgvdG9fZmlsZV91cmwudHNcIjtcbmltcG9ydCB7IHRvRmlsZVVybCBhcyB3aW5kb3dzVG9GaWxlVXJsIH0gZnJvbSBcIi4vd2luZG93cy90b19maWxlX3VybC50c1wiO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgcGF0aCBzdHJpbmcgdG8gYSBmaWxlIFVSTC5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdG9GaWxlVXJsIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vcGF0aC90b19maWxlX3VybC50c1wiO1xuICpcbiAqIC8vIHBvc2l4XG4gKiB0b0ZpbGVVcmwoXCIvaG9tZS9mb29cIik7IC8vIG5ldyBVUkwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpXG4gKlxuICogLy8gd2luMzJcbiAqIHRvRmlsZVVybChcIlxcXFxob21lXFxcXGZvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8vaG9tZS9mb29cIilcbiAqIHRvRmlsZVVybChcIkM6XFxcXFVzZXJzXFxcXGZvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8vQzovVXNlcnMvZm9vXCIpXG4gKiB0b0ZpbGVVcmwoXCJcXFxcXFxcXDEyNy4wLjAuMVxcXFxob21lXFxcXGZvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8xMjcuMC4wLjEvaG9tZS9mb29cIilcbiAqIGBgYFxuICogQHBhcmFtIHBhdGggdG8gY29udmVydCB0byBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9GaWxlVXJsKHBhdGg6IHN0cmluZyk6IFVSTCB7XG4gIHJldHVybiBpc1dpbmRvd3MgPyB3aW5kb3dzVG9GaWxlVXJsKHBhdGgpIDogcG9zaXhUb0ZpbGVVcmwocGF0aCk7XG59XG4iLCAiLy8gcG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1Y2FjYXNvbmF0by9lc2J1aWxkX2Rlbm9fbG9hZGVyL2Jsb2IvMC4xMC4zL3NyYy9zaGFyZWQudHNcbi8vIENvcHlyaWdodCAyMDIxIEx1Y2EgQ2Fzb25hdG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuXG5pbXBvcnQgeyBmcm9tRmlsZVVybCwgdG9GaWxlVXJsIH0gZnJvbSBcIi4vZGVwcy9wYXRoLnRzXCI7XG5cbi8qKiBFc2J1aWxkJ3MgcmVwcmVzZW50YXRpb24gb2YgYSBtb2R1bGUgc3BlY2lmaWVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFc2J1aWxkUmVzb2x1dGlvbiB7XG4gIC8qKiBUaGUgbmFtZXNwYWNlLCBsaWtlIGBmaWxlYCwgYGh0dHBzYCwgb3IgYG5wbWAuICovXG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICAvKiogVGhlIHBhdGguIFdoZW4gdGhlIG5hbWVzcGFjZSBpcyBgZmlsZWAsIHRoaXMgaXMgYSBmaWxlIHBhdGguIE90aGVyd2lzZVxuICAgKiB0aGlzIGlzIGV2ZXJ5dGhpbmcgaW4gYSBVUkwgd2l0aCB0aGUgbmFtZXNwYWNlIGFzIHRoZSBzY2hlbWUsIGFmdGVyIHRoZVxuICAgKiBgOmAgb2YgdGhlIHNjaGVtZS4gKi9cbiAgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFR1cm4gYSBVUkwgaW50byBhbiB7QGxpbmsgRXNidWlsZFJlc29sdXRpb259IGJ5IHNwbGl0dGluZyB0aGUgVVJMIGludG8gYVxuICogbmFtZXNwYWNlIGFuZCBwYXRoLlxuICpcbiAqIEZvciBmaWxlIFVSTHMsIHRoZSBwYXRoIHJldHVybmVkIGlzIGEgZmlsZSBwYXRoIG5vdCBhIFVSTCBwYXRoIHJlcHJlc2VudGluZyBhXG4gKiBmaWxlLlxuICovXG5leHBvcnQgY29uc3QgdXJsVG9Fc2J1aWxkUmVzb2x1dGlvbiA9ICh1cmw6IFVSTCk6IEVzYnVpbGRSZXNvbHV0aW9uID0+IHtcbiAgaWYgKHVybC5wcm90b2NvbCA9PT0gXCJmaWxlOlwiKSB7XG4gICAgcmV0dXJuIHsgcGF0aDogZnJvbUZpbGVVcmwodXJsKSwgbmFtZXNwYWNlOiBcImZpbGVcIiB9O1xuICB9XG5cbiAgY29uc3QgbmFtZXNwYWNlID0gdXJsLnByb3RvY29sLnNsaWNlKDAsIC0xKTtcbiAgY29uc3QgcGF0aCA9IHVybC5ocmVmLnNsaWNlKG5hbWVzcGFjZS5sZW5ndGggKyAxKTtcbiAgcmV0dXJuIHsgcGF0aCwgbmFtZXNwYWNlIH07XG59O1xuXG4vKipcbiAqIFR1cm4gYW4ge0BsaW5rIEVzYnVpbGRSZXNvbHV0aW9ufSBpbnRvIGEgVVJMIGJ5IGpvaW5pbmcgdGhlIG5hbWVzcGFjZSBhbmRcbiAqIHBhdGggaW50byBhIFVSTCBzdHJpbmcuXG4gKlxuICogRm9yIGZpbGUgVVJMcywgdGhlIHBhdGggaXMgaW50ZXJwcmV0ZWQgYXMgYSBmaWxlIHBhdGggbm90IGFzIGEgVVJMIHBhdGhcbiAqIHJlcHJlc2VudGluZyBhIGZpbGUuXG4gKi9cbmV4cG9ydCBjb25zdCBlc2J1aWxkUmVzb2x1dGlvblRvVVJMID0gKHNwZWNpZmllcjogRXNidWlsZFJlc29sdXRpb24pOiBVUkwgPT4ge1xuICBpZiAoc3BlY2lmaWVyLm5hbWVzcGFjZSA9PT0gXCJmaWxlXCIpIHtcbiAgICByZXR1cm4gdG9GaWxlVXJsKHNwZWNpZmllci5wYXRoKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgVVJMKGAke3NwZWNpZmllci5uYW1lc3BhY2V9OiR7c3BlY2lmaWVyLnBhdGh9YCk7XG59O1xuIiwgImltcG9ydCB7XG4gIGNyZWF0ZUVycixcbiAgY3JlYXRlT2ssXG4gIGlzRXJyLFxuICBva09yRWxzZUZvck1heWJlLFxuICBSZXN1bHQsXG4gIHVud3JhcE9rLFxufSBmcm9tIFwiLi9kZXBzL29wdGlvbi10LnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW52YWxpZFVSTEVycm9yIHtcbiAgbmFtZTogXCJJbnZhbGlkVVJMRXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBOb3RGb3VuZEVycm9yIHtcbiAgbmFtZTogXCJOb3RGb3VuZEVycm9yXCI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cbi8qKlxuICogRXh0cmFjdHMgdGhlIHNvdXJjZSBtYXAgVVJMIGZyb20gdGhlIGdpdmVuIGNvZGUuXG4gKlxuICogVGhpcyBjb2RlIGlzIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9ldmFudy9zb3VyY2UtbWFwLXZpc3VhbGl6YXRpb24vYmxvYi9mM2U5ZGZlYzIwZTdiZmQ5NjI1ZDAzZGQwZDQyN2FmZmE3NGE5YzQzL2NvZGUuanMjTDEwMy1MMTQ1IHVuZGVyIEBldmFudyAncyBsaWNlbnNlLlxuICpcbiAqIEBwYXJhbSBjb2RlIC0gVGhlIGNvZGUgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBzb3VyY2UgbWFwIFVSTC5cbiAqIEBwYXJhbSBfbGFuZyAtIFRoZSBsYW5ndWFnZSBvZiB0aGUgY29kZSAoY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgYFwianNcImApLlxuICogQHJldHVybnMgVGhlIGV4dHJhY3RlZCBzb3VyY2UgbWFwIFVSTCBhcyBhIGBVUkxgIG9iamVjdCwgb3IgYG51bGxgIGlmIG5vIHNvdXJjZSBtYXAgVVJMIGlzIGZvdW5kLlxuICovXG5leHBvcnQgY29uc3QgZXh0cmFjdFNvdXJjZU1hcFVSTCA9IChcbiAgY29kZTogc3RyaW5nLFxuICBiYXNlOiBzdHJpbmcgfCBVUkwgfCB1bmRlZmluZWQsXG4pOiBSZXN1bHQ8XG4gIHsgdXJsOiBVUkw7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyIH0sXG4gIEludmFsaWRVUkxFcnJvciB8IE5vdEZvdW5kRXJyb3Jcbj4gPT4ge1xuICBjb25zdCByZXN1bHQgPSBva09yRWxzZUZvck1heWJlKFxuICAgIGV4dHJhY3QoY29kZSksXG4gICAgKCkgPT4gKHtcbiAgICAgIG5hbWU6IFwiTm90Rm91bmRFcnJvclwiLFxuICAgICAgbWVzc2FnZTogXCJTb3VyY2UgbWFwIFVSTCBpcyBub3QgZm91bmRcIixcbiAgICB9IGFzIE5vdEZvdW5kRXJyb3IpLFxuICApO1xuICBpZiAoaXNFcnIocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgY29uc3QgeyB1cmwsIHN0YXJ0LCBlbmQgfSA9IHVud3JhcE9rKHJlc3VsdCk7XG4gIHJldHVybiBVUkwuY2FuUGFyc2UodXJsLCBiYXNlKVxuICAgID8gY3JlYXRlT2soeyB1cmw6IG5ldyBVUkwodXJsLCBiYXNlKSwgc3RhcnQsIGVuZCB9KVxuICAgIDogY3JlYXRlRXJyKHtcbiAgICAgIG5hbWU6IFwiSW52YWxpZFVSTEVycm9yXCIsXG4gICAgICBtZXNzYWdlOiBgSW52YWxpZCBVUkw6ICR7dXJsfWAsXG4gICAgfSk7XG59O1xuXG5jb25zdCBleHRyYWN0ID0gKGNvZGU6IHN0cmluZykgPT4ge1xuICAvLyBDaGVjayBmb3IgYm90aCBcIi8vXCIgYW5kIFwiLypcIiBjb21tZW50cy4gVGhpcyBpcyBtb3N0bHkgZG9uZSBtYW51YWxseVxuICAvLyBpbnN0ZWFkIG9mIGRvaW5nIGl0IGFsbCB3aXRoIGEgcmVndWxhciBleHByZXNzaW9uIGJlY2F1c2UgRmlyZWZveCdzXG4gIC8vIHJlZ3VsYXIgZXhwcmVzc2lvbiBlbmdpbmUgY3Jhc2hlcyB3aXRoIGFuIGludGVybmFsIGVycm9yIHdoZW4gdGhlXG4gIC8vIG1hdGNoIGlzIHRvbyBiaWcuXG4gIGZvciAoY29uc3QgbWF0Y2ggb2YgY29kZS5tYXRjaEFsbCgvXFwvKFsqL10pWyNAXSAqc291cmNlTWFwcGluZ1VSTD0vZykpIHtcbiAgICBjb25zdCBzdGFydCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoO1xuICAgIGNvbnN0IG4gPSBjb2RlLmxlbmd0aDtcbiAgICBsZXQgZW5kID0gc3RhcnQ7XG4gICAgd2hpbGUgKGVuZCA8IG4gJiYgY29kZS5jaGFyQ29kZUF0KGVuZCkgPiAzMikge1xuICAgICAgZW5kKys7XG4gICAgfVxuICAgIGlmIChlbmQgPT09IHN0YXJ0KSBjb250aW51ZTtcbiAgICBpZiAobWF0Y2hbMV0gPT09IFwiL1wiIHx8IGNvZGUuaW5kZXhPZihcIiovXCIsIGVuZCkgPiAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB1cmw6IGNvZGUuc2xpY2Uoc3RhcnQsIGVuZCksXG4gICAgICAgIHN0YXJ0LFxuICAgICAgICBlbmQsXG4gICAgICB9O1xuICAgIH1cbiAgfVxufTtcbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIFN0cmlwcyBhbnkgaGFzaCAoZWcuIGAjaGVhZGVyYCkgb3Igc2VhcmNoIHBhcmFtZXRlcnMgKGVnLiBgP2Zvbz1iYXJgKSBmcm9tIHRoZSBwcm92aWRlZCBVUkwuXG4gKlxuICogKE11dGF0ZXMgdGhlIG9yaWdpbmFsIHVybCBwcm92aWRlZClcbiAqIEBwYXJhbSB1cmwgdG8gYmUgc3RyaXBwZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcCh1cmw6IFVSTCkge1xuICB1cmwuaGFzaCA9IFwiXCI7XG4gIHVybC5zZWFyY2ggPSBcIlwiO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGJhc2VuYW1lIGFzIHBvc2l4QmFzZW5hbWUgfSBmcm9tIFwiLi4vcGF0aC9wb3NpeC9iYXNlbmFtZS50c1wiO1xuaW1wb3J0IHsgc3RyaXAgfSBmcm9tIFwiLi9fc3RyaXAudHNcIjtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIG5hbWUgb2YgYSBVUkwgb3IgVVJMIHN0cmluZywgb3B0aW9uYWxseSByZW1vdmluZyBhIHN1ZmZpeC5cbiAqXG4gKiBUcmFpbGluZyBgL2BzIGFyZSBpZ25vcmVkLiBJZiBubyBwYXRoIGlzIHByZXNlbnQsIHRoZSBob3N0IG5hbWUgaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHVybCBUaGUgVVJMIGZyb20gd2hpY2ggdG8gZXh0cmFjdCB0aGUgYmFzZSBuYW1lLlxuICogQHBhcmFtIHN1ZmZpeCBBbiBvcHRpb25hbCBzdWZmaXggdG8gcmVtb3ZlIGZyb20gdGhlIGJhc2UgbmFtZS5cbiAqIEByZXR1cm5zIFRoZSBiYXNlIG5hbWUgb2YgdGhlIFVSTC5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vdXJsL2Jhc2VuYW1lLnRzXCI7XG4gKlxuICogYmFzZW5hbWUoXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvYXNzZXJ0L21vZC50c1wiKTsgLy8gXCJtb2QudHNcIlxuICpcbiAqIGJhc2VuYW1lKG5ldyBVUkwoXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvYXNzZXJ0L21vZC50c1wiKSk7IC8vIFwibW9kLnRzXCJcbiAqXG4gKiBiYXNlbmFtZShcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9hc3NlcnQvbW9kLnRzP2E9YlwiKTsgLy8gXCJtb2QudHNcIlxuICpcbiAqIGJhc2VuYW1lKFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkL2Fzc2VydC9tb2QudHMjaGVhZGVyXCIpOyAvLyBcIm1vZC50c1wiXG4gKlxuICogYmFzZW5hbWUoXCJodHRwczovL2Rlbm8ubGFuZC9cIik7IC8vIFwiZGVuby5sYW5kXCJcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFJlbW92aW5nIGEgc3VmZml4XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi91cmwvYmFzZW5hbWUudHNcIjtcbiAqXG4gKiBiYXNlbmFtZShcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9hc3NlcnQvbW9kLnRzXCIsIFwiLnRzXCIpOyAvLyBcIm1vZFwiXG4gKlxuICogYmFzZW5hbWUobmV3IFVSTChcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9hc3NlcnQvbW9kLnRzXCIpLCBcIi50c1wiKTsgLy8gXCJtb2RcIlxuICpcbiAqIGJhc2VuYW1lKFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkL2Fzc2VydC9tb2QudHM/YT1iXCIsIFwiLnRzXCIpOyAvLyBcIm1vZFwiXG4gKlxuICogYmFzZW5hbWUoXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvYXNzZXJ0L21vZC50cyNoZWFkZXJcIiwgXCIudHNcIik7IC8vIFwibW9kLnRzXCJcbiAqIGBgYFxuICogRGVmaW5pbmcgYSBzdWZmaXggd2lsbCByZW1vdmUgaXQgZnJvbSB0aGUgYmFzZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFzZW5hbWUodXJsOiBzdHJpbmcgfCBVUkwsIHN1ZmZpeD86IHN0cmluZyk6IHN0cmluZyB7XG4gIHVybCA9IG5ldyBVUkwodXJsKTtcbiAgc3RyaXAodXJsKTtcbiAgcmV0dXJuIHBvc2l4QmFzZW5hbWUodXJsLmhyZWYsIHN1ZmZpeCk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgZXh0bmFtZSBhcyBwb3NpeEV4dG5hbWUgfSBmcm9tIFwiLi4vcGF0aC9wb3NpeC9leHRuYW1lLnRzXCI7XG5pbXBvcnQgeyBzdHJpcCB9IGZyb20gXCIuL19zdHJpcC50c1wiO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGZpbGUgZXh0ZW5zaW9uIG9mIGEgZ2l2ZW4gVVJMIG9yIHN0cmluZyB3aXRoIGxlYWRpbmcgcGVyaW9kLlxuICpcbiAqIFRoZSBleHRlbnNpb24gaXMgc291cmNlZCBmcm9tIHRoZSBwYXRoIHBvcnRpb24gb2YgdGhlIFVSTC4gSWYgdGhlcmUgaXMgbm9cbiAqIGV4dGVuc2lvbiwgYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB1cmwgVGhlIFVSTCBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIGV4dGVuc2lvbi5cbiAqIEByZXR1cm5zIFRoZSBleHRlbnNpb24gb2YgdGhlIFVSTC5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGV4dG5hbWUgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi91cmwvZXh0bmFtZS50c1wiO1xuICpcbiAqIGV4dG5hbWUoXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvcGF0aC9tb2QudHNcIik7IC8vIFwiLnRzXCJcbiAqXG4gKiBleHRuYW1lKFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkL3BhdGgvbW9kXCIpOyAvLyBcIlwiXG4gKlxuICogZXh0bmFtZShcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoL21vZC50cz9hPWJcIik7IC8vIFwiLnRzXCJcbiAqXG4gKiBleHRuYW1lKFwiaHR0cHM6Ly9kZW5vLmxhbmQvXCIpOyAvLyBcIlwiXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dG5hbWUodXJsOiBzdHJpbmcgfCBVUkwpOiBzdHJpbmcge1xuICB1cmwgPSBuZXcgVVJMKHVybCk7XG4gIHN0cmlwKHVybCk7XG4gIHJldHVybiBwb3NpeEV4dG5hbWUodXJsLnBhdGhuYW1lKTtcbn1cbiIsICJpbXBvcnQgeyBMb2FkZXIgfSBmcm9tIFwiLi9kZXBzL2VzYnVpbGQtd2FzbS50c1wiO1xuaW1wb3J0IHsgYmFzZW5hbWUsIGV4dG5hbWUgfSBmcm9tIFwiLi9kZXBzL3VybC50c1wiO1xuXG5jb25zdCBsb2FkZXJMaXN0OiBMb2FkZXJbXSA9IFtcbiAgXCJiYXNlNjRcIixcbiAgXCJiaW5hcnlcIixcbiAgXCJjb3B5XCIsXG4gIFwiY3NzXCIsXG4gIFwiZGF0YXVybFwiLFxuICBcImRlZmF1bHRcIixcbiAgXCJlbXB0eVwiLFxuICBcImZpbGVcIixcbiAgXCJqc1wiLFxuICBcImpzb25cIixcbiAgXCJqc3hcIixcbiAgXCJsb2NhbC1jc3NcIixcbiAgXCJ0ZXh0XCIsXG4gIFwidHNcIixcbiAgXCJ0c3hcIixcbl07XG5jb25zdCBpc0xvYWRlciA9IChsb2FkZXI6IHN0cmluZyk6IGxvYWRlciBpcyBMb2FkZXIgPT5cbiAgKGxvYWRlckxpc3QgYXMgc3RyaW5nW10pLmluY2x1ZGVzKGxvYWRlcik7XG5cbmV4cG9ydCBjb25zdCBpc0xvYWRlcldoaWNoQ2FuSW5jbHVkZVNvdXJjZU1hcHBpbmdVUkwgPSAoXG4gIGxvYWRlcjogTG9hZGVyLFxuKTogYm9vbGVhbiA9PiAvXmpzfF50c3xjc3MkLy50ZXN0KGxvYWRlcik7XG5cbmV4cG9ydCBjb25zdCByZXNwb25zZVRvTG9hZGVyID0gKHJlc3BvbnNlOiBSZXNwb25zZSk6IExvYWRlciA9PiB7XG4gIGNvbnN0IHVybCA9IHJlc3BvbnNlLnVybDtcbiAgY29uc3QgZmlsZW5hbWUgPSBiYXNlbmFtZSh1cmwpO1xuICBpZiAoaXNMb2FkZXIoZmlsZW5hbWUpKSByZXR1cm4gZmlsZW5hbWU7XG4gIGlmIChmaWxlbmFtZSA9PT0gXCJtanNcIikgcmV0dXJuIFwianNcIjtcbiAgY29uc3QgZXh0ID0gZXh0bmFtZSh1cmwpLnNsaWNlKDEpO1xuICBpZiAoaXNMb2FkZXIoZXh0KSkgcmV0dXJuIGV4dDtcbiAgaWYgKGV4dCA9PT0gXCJtanNcIikgcmV0dXJuIFwianNcIjtcbiAgY29uc3QgY29udGVudFR5cGUgPSByZXNwb25zZS5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKSA/PyBcInRleHQvcGxhaW5cIjtcbiAgY29uc3QgbWltZVR5cGUgPSBjb250ZW50VHlwZS5zcGxpdChcIjtcIilbMF0/LnRyaW0/LigpID8/IFwidGV4dC9wbGFpblwiO1xuICByZXR1cm4gbWltZVR5cGVUb0xvYWRlcihtaW1lVHlwZSk7XG59O1xuXG5leHBvcnQgY29uc3QgbWltZVR5cGVUb0xvYWRlciA9IChtaW1lVHlwZTogc3RyaW5nKTogTG9hZGVyID0+IHtcbiAgY29uc3Qgc3ViVHlwZSA9IG1pbWVUeXBlLnNwbGl0KFwiL1wiKVsxXSA/PyBcInBsYWluXCI7XG4gIGlmICgvKD86XnBsYWluJHxeeG1sfF5zdmd8Xng/aHRtbCkvLnRlc3Qoc3ViVHlwZSkpIHtcbiAgICByZXR1cm4gXCJ0ZXh0XCI7XG4gIH1cbiAgaWYgKHN1YlR5cGUuc3RhcnRzV2l0aChcImpzb25cIikpIHtcbiAgICByZXR1cm4gXCJqc29uXCI7XG4gIH1cbiAgc3dpdGNoIChzdWJUeXBlKSB7XG4gICAgY2FzZSBcImphdmFzY3JpcHRcIjpcbiAgICAgIHJldHVybiBcImpzXCI7XG4gICAgY2FzZSBcInR5cGVzY3JpcHRcIjpcbiAgICAgIHJldHVybiBcInRzXCI7XG4gICAgY2FzZSBcImNzc1wiOlxuICAgICAgcmV0dXJuIFwiY3NzXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcInRleHRcIjtcbiAgfVxufTtcbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuXG5pbXBvcnQgdHlwZSB7IENvbXBhcmF0b3IgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZU51bWJlcihcbiAgYTogbnVtYmVyLFxuICBiOiBudW1iZXIsXG4pOiAxIHwgMCB8IC0xIHtcbiAgaWYgKGlzTmFOKGEpIHx8IGlzTmFOKGIpKSB0aHJvdyBuZXcgRXJyb3IoXCJDb21wYXJpc29uIGFnYWluc3Qgbm9uLW51bWJlcnNcIik7XG4gIHJldHVybiBhID09PSBiID8gMCA6IGEgPCBiID8gLTEgOiAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJZGVudGlmaWVyKFxuICB2MTogUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXI+ID0gW10sXG4gIHYyOiBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlcj4gPSBbXSxcbik6IDEgfCAwIHwgLTEge1xuICAvLyBOT1QgaGF2aW5nIGEgcHJlcmVsZWFzZSBpcyA+IGhhdmluZyBvbmVcbiAgLy8gQnV0IE5PVCBoYXZpbmcgYSBidWlsZCBpcyA8IGhhdmluZyBvbmVcbiAgaWYgKHYxLmxlbmd0aCAmJiAhdjIubGVuZ3RoKSByZXR1cm4gLTE7XG4gIGlmICghdjEubGVuZ3RoICYmIHYyLmxlbmd0aCkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZUlkZW50aWZpZXIoXG4gIHYxOiBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlcj4gPSBbXSxcbiAgdjI6IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyPiA9IFtdLFxuKTogMSB8IDAgfCAtMSB7XG4gIGNvbnN0IGxlbmd0aCA9IE1hdGgubWF4KHYxLmxlbmd0aCwgdjIubGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGEgPSB2MVtpXTtcbiAgICBjb25zdCBiID0gdjJbaV07XG4gICAgLy8gc2FtZSBsZW5ndGggaXMgZXF1YWxcbiAgICBpZiAoYSA9PT0gdW5kZWZpbmVkICYmIGIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gICAgLy8gbG9uZ2VyID4gc2hvcnRlclxuICAgIGlmIChiID09PSB1bmRlZmluZWQpIHJldHVybiAxO1xuICAgIC8vIHNob3J0ZXIgPCBsb25nZXJcbiAgICBpZiAoYSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gLTE7XG4gICAgLy8gc3RyaW5nID4gbnVtYmVyXG4gICAgaWYgKHR5cGVvZiBhID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiBiID09PSBcIm51bWJlclwiKSByZXR1cm4gMTtcbiAgICAvLyBudW1iZXIgPCBzdHJpbmdcbiAgICBpZiAodHlwZW9mIGEgPT09IFwibnVtYmVyXCIgJiYgdHlwZW9mIGIgPT09IFwic3RyaW5nXCIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgIC8vIElmIHRoZXkncmUgZXF1YWwsIGNvbnRpbnVlIGNvbXBhcmluZyBzZWdtZW50cy5cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLyoqXG4gKiBBIHNpbmdsZSBgMGAsIG9yIGEgbm9uLXplcm8gZGlnaXQgZm9sbG93ZWQgYnkgemVybyBvciBtb3JlIGRpZ2l0cy5cbiAqL1xuY29uc3QgTlVNRVJJQ19JREVOVElGSUVSID0gXCIwfFsxLTldXFxcXGQqXCI7XG5cbi8qKlxuICogWmVybyBvciBtb3JlIGRpZ2l0cywgZm9sbG93ZWQgYnkgYSBsZXR0ZXIgb3IgaHlwaGVuLCBhbmQgdGhlbiB6ZXJvIG9yIG1vcmUgbGV0dGVycywgZGlnaXRzLCBvciBoeXBoZW5zLlxuICovXG5jb25zdCBOT05fTlVNRVJJQ19JREVOVElGSUVSID0gXCJcXFxcZCpbYS16QS1aLV1bYS16QS1aMC05LV0qXCI7XG5cbi8qKlxuICogVGhyZWUgZG90LXNlcGFyYXRlZCBudW1lcmljIGlkZW50aWZpZXJzLlxuICovXG5jb25zdCBWRVJTSU9OX0NPUkUgPVxuICBgKD88bWFqb3I+JHtOVU1FUklDX0lERU5USUZJRVJ9KVxcXFwuKD88bWlub3I+JHtOVU1FUklDX0lERU5USUZJRVJ9KVxcXFwuKD88cGF0Y2g+JHtOVU1FUklDX0lERU5USUZJRVJ9KWA7XG5cbi8qKlxuICogQSBudW1lcmljIGlkZW50aWZpZXIsIG9yIGEgbm9uLW51bWVyaWMgaWRlbnRpZmllci5cbiAqL1xuY29uc3QgUFJFUkVMRUFTRV9JREVOVElGSUVSID1cbiAgYCg/OiR7TlVNRVJJQ19JREVOVElGSUVSfXwke05PTl9OVU1FUklDX0lERU5USUZJRVJ9KWA7XG5cbi8qKlxuICogQSBoeXBoZW4sIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGRvdC1zZXBhcmF0ZWQgcHJlLXJlbGVhc2UgdmVyc2lvbiBpZGVudGlmaWVycy5cbiAqIEBleGFtcGxlIFwiLXByZS5yZWxlYXNlXCJcbiAqL1xuY29uc3QgUFJFUkVMRUFTRSA9XG4gIGAoPzotKD88cHJlcmVsZWFzZT4ke1BSRVJFTEVBU0VfSURFTlRJRklFUn0oPzpcXFxcLiR7UFJFUkVMRUFTRV9JREVOVElGSUVSfSkqKSlgO1xuXG4vKipcbiAqIEFueSBjb21iaW5hdGlvbiBvZiBkaWdpdHMsIGxldHRlcnMsIG9yIGh5cGhlbnMuXG4gKi9cbmNvbnN0IEJVSUxEX0lERU5USUZJRVIgPSBcIlswLTlBLVphLXotXStcIjtcblxuLyoqXG4gKiBBIHBsdXMgc2lnbiwgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgcGVyaW9kLXNlcGFyYXRlZCBidWlsZCBtZXRhZGF0YSBpZGVudGlmaWVycy5cbiAqIEBleGFtcGxlIFwiK2J1aWxkLm1ldGFcIlxuICovXG5jb25zdCBCVUlMRCA9XG4gIGAoPzpcXFxcKyg/PGJ1aWxkbWV0YWRhdGE+JHtCVUlMRF9JREVOVElGSUVSfSg/OlxcXFwuJHtCVUlMRF9JREVOVElGSUVSfSkqKSlgO1xuXG4vKipcbiAqIEEgdmVyc2lvbiwgZm9sbG93ZWQgb3B0aW9uYWxseSBieSBhIHByZS1yZWxlYXNlIHZlcnNpb24gYW5kIGJ1aWxkIG1ldGFkYXRhLlxuICovXG5jb25zdCBGVUxMX1ZFUlNJT04gPSBgdj8ke1ZFUlNJT05fQ09SRX0ke1BSRVJFTEVBU0V9PyR7QlVJTER9P2A7XG5cbmV4cG9ydCBjb25zdCBGVUxMX1JFR0VYUCA9IG5ldyBSZWdFeHAoYF4ke0ZVTExfVkVSU0lPTn0kYCk7XG5cbi8qKlxuICogQSBjb21wYXJhdG9yLlxuICogQGV4YW1wbGUgYD1gLCBgPGAsIGA8PWAsIGA+YCwgYD49YFxuICovXG5jb25zdCBDT01QQVJBVE9SID0gXCIoPzo8fD4pPz0/XCI7XG5cbi8qKlxuICogQSB3aWxkY2FyZCBpZGVudGlmaWVyLlxuICogQGV4YW1wbGUgXCJ4XCIsIFwiWFwiLCBcIipcIlxuICovXG5jb25zdCBXSUxEQ0FSRF9JREVOVElGSUVSID0gYHh8WHxcXFxcKmA7XG5cbmNvbnN0IFhSQU5HRV9JREVOVElGSUVSID0gYCR7TlVNRVJJQ19JREVOVElGSUVSfXwke1dJTERDQVJEX0lERU5USUZJRVJ9YDtcblxuLyoqXG4gKiBBIHZlcnNpb24gdGhhdCBjYW4gY29udGFpbiB3aWxkY2FyZHMuXG4gKiBAZXhhbXBsZSBcInhcIiwgXCIxLnhcIiwgXCIxLngueFwiLCBcIjEuMi54XCIsIFwiKlwiLCBcIjEuKlwiLCBcIjEuKi4qXCIsIFwiMS4yLipcIlxuICovXG5leHBvcnQgY29uc3QgWFJBTkdFID1cbiAgYFt2PVxcXFxzXSooPzxtYWpvcj4ke1hSQU5HRV9JREVOVElGSUVSfSkoPzpcXFxcLig/PG1pbm9yPiR7WFJBTkdFX0lERU5USUZJRVJ9KSg/OlxcXFwuKD88cGF0Y2g+JHtYUkFOR0VfSURFTlRJRklFUn0pJHtQUkVSRUxFQVNFfT8ke0JVSUxEfT8pPyk/YDtcblxuLyoqXG4gKiBBbiBvcGVyYXRvciAoYH5gLCBgfj5gLCBgXmAsIGA9YCwgYDxgLCBgPD1gLCBgPmAsIG9yIGA+PWApLCBmb2xsb3dlZCBieSBhbiB4LXJhbmdlLlxuICogQGV4YW1wbGUgXCJ+MS54LnhcIiwgXCJeMS4yLipcIiwgXCI+PTEuMi4zXCJcbiAqL1xuZXhwb3J0IGNvbnN0IE9QRVJBVE9SX1hSQU5HRV9SRUdFWFAgPSBuZXcgUmVnRXhwKFxuICBgXig/PG9wZXJhdG9yPn4+P3xcXFxcXnwke0NPTVBBUkFUT1J9KVxcXFxzKiR7WFJBTkdFfSRgLFxuKTtcblxuLyoqXG4gKiBBbiBlbXB0eSBzdHJpbmcgb3IgYSBjb21wYXJhdG9yIChgPWAsIGA8YCwgYDw9YCwgYD5gLCBvciBgPj1gKSwgZm9sbG93ZWQgYnkgYSB2ZXJzaW9uLlxuICogQGV4YW1wbGUgXCI+MS4yLjNcIlxuICovXG5leHBvcnQgY29uc3QgQ09NUEFSQVRPUl9SRUdFWFAgPSBuZXcgUmVnRXhwKFxuICBgXig/PG9wZXJhdG9yPiR7Q09NUEFSQVRPUn0pXFxcXHMqKCR7RlVMTF9WRVJTSU9OfSkkfF4kYCxcbik7XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBpcyBhIHZhbGlkIFNlbVZlciBudW1iZXIuXG4gKlxuICogTXVzdCBiZSBhIG51bWJlci4gTXVzdCBub3QgYmUgTmFOLiBDYW4gYmUgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW5maW5pdHkuXG4gKiBDYW4gYmUgYmV0d2VlbiAwIGFuZCBNQVhfU0FGRV9JTlRFR0VSLlxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVja1xuICogQHJldHVybnMgVHJ1ZSBpZiBpdHMgYSB2YWxpZCBzZW12ZXIgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTnVtYmVyKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgbnVtYmVyIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiZcbiAgICAhTnVtYmVyLmlzTmFOKHZhbHVlKSAmJlxuICAgICghTnVtYmVyLmlzRmluaXRlKHZhbHVlKSB8fFxuICAgICAgKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpKVxuICApO1xufVxuXG5leHBvcnQgY29uc3QgTUFYX0xFTkdUSCA9IDI1NjtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIHZhbHVlIGlzIGEgdmFsaWQgc2VtdmVyIHByZS1yZWxlYXNlIG9yIGJ1aWxkIGlkZW50aWZpZXIuXG4gKlxuICogTXVzdCBiZSBhIHN0cmluZy4gTXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDI1NiBjaGFyYWN0ZXJzIGxvbmcuIE11c3QgbWF0Y2hcbiAqIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gL1swLTlBLVphLXotXSsvLlxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVja1xuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYSB2YWxpZCBzZW12ZXIgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFN0cmluZyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHN0cmluZyB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmXG4gICAgdmFsdWUubGVuZ3RoID4gMCAmJlxuICAgIHZhbHVlLmxlbmd0aCA8PSBNQVhfTEVOR1RIICYmXG4gICAgL1swLTlBLVphLXotXSsvLnRlc3QodmFsdWUpXG4gICk7XG59XG5cbmNvbnN0IE5VTUVSSUNfSURFTlRJRklFUl9SRUdFWFAgPSBuZXcgUmVnRXhwKGBeJHtOVU1FUklDX0lERU5USUZJRVJ9JGApO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHJlcmVsZWFzZShwcmVyZWxlYXNlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHByZXJlbGVhc2VcbiAgICAuc3BsaXQoXCIuXCIpXG4gICAgLmZpbHRlcihCb29sZWFuKVxuICAgIC5tYXAoKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChOVU1FUklDX0lERU5USUZJRVJfUkVHRVhQLnRlc3QoaWQpKSB7XG4gICAgICAgIGNvbnN0IG51bWJlciA9IE51bWJlcihpZCk7XG4gICAgICAgIGlmIChpc1ZhbGlkTnVtYmVyKG51bWJlcikpIHJldHVybiBudW1iZXI7XG4gICAgICB9XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUJ1aWxkKGJ1aWxkbWV0YWRhdGE6IHN0cmluZykge1xuICByZXR1cm4gYnVpbGRtZXRhZGF0YS5zcGxpdChcIi5cIikuZmlsdGVyKEJvb2xlYW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VOdW1iZXIoaW5wdXQ6IHN0cmluZywgZXJyb3JNZXNzYWdlOiBzdHJpbmcpIHtcbiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKGlucHV0KTtcbiAgaWYgKCFpc1ZhbGlkTnVtYmVyKG51bWJlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgcmV0dXJuIG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2lsZGNhcmRDb21wYXJhdG9yKGM6IENvbXBhcmF0b3IpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBOdW1iZXIuaXNOYU4oYy5tYWpvcikgJiYgTnVtYmVyLmlzTmFOKGMubWlub3IpICYmIE51bWJlci5pc05hTihjLnBhdGNoKSAmJlxuICAgIChjLnByZXJlbGVhc2UgPT09IHVuZGVmaW5lZCB8fCBjLnByZXJlbGVhc2UubGVuZ3RoID09PSAwKSAmJlxuICAgIChjLmJ1aWxkID09PSB1bmRlZmluZWQgfHwgYy5idWlsZC5sZW5ndGggPT09IDApXG4gICk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cbmltcG9ydCB0eXBlIHsgU2VtVmVyIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7XG4gIGNoZWNrSWRlbnRpZmllcixcbiAgY29tcGFyZUlkZW50aWZpZXIsXG4gIGNvbXBhcmVOdW1iZXIsXG59IGZyb20gXCIuL19zaGFyZWQudHNcIjtcblxuLyoqXG4gKiBDb21wYXJlIHR3byBzZW1hbnRpYyB2ZXJzaW9uIG9iamVjdHMuXG4gKlxuICogUmV0dXJucyBgMGAgaWYgYHMwID09PSBzMWAsIG9yIGAxYCBpZiBgczBgIGlzIGdyZWF0ZXIsIG9yIGAtMWAgaWYgYHMxYCBpc1xuICogZ3JlYXRlci5cbiAqXG4gKiBTb3J0cyBpbiBhc2NlbmRpbmcgb3JkZXIgaWYgcGFzc2VkIHRvIGBBcnJheS5zb3J0KClgLFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZShcbiAgczA6IFNlbVZlcixcbiAgczE6IFNlbVZlcixcbik6IDEgfCAwIHwgLTEge1xuICBpZiAoczAgPT09IHMxKSByZXR1cm4gMDtcbiAgcmV0dXJuIChcbiAgICBjb21wYXJlTnVtYmVyKHMwLm1ham9yLCBzMS5tYWpvcikgfHxcbiAgICBjb21wYXJlTnVtYmVyKHMwLm1pbm9yLCBzMS5taW5vcikgfHxcbiAgICBjb21wYXJlTnVtYmVyKHMwLnBhdGNoLCBzMS5wYXRjaCkgfHxcbiAgICBjaGVja0lkZW50aWZpZXIoczAucHJlcmVsZWFzZSwgczEucHJlcmVsZWFzZSkgfHxcbiAgICBjb21wYXJlSWRlbnRpZmllcihzMC5wcmVyZWxlYXNlLCBzMS5wcmVyZWxlYXNlKVxuICApO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5pbXBvcnQgdHlwZSB7IENvbXBhcmF0b3IsIFNlbVZlciB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5cbi8qKlxuICogTUFYIGlzIGEgc2VudGluZWwgdmFsdWUgdXNlZCBieSBzb21lIHJhbmdlIGNhbGN1bGF0aW9ucy5cbiAqIEl0IGlzIGVxdWl2YWxlbnQgdG8gYOKIni7iiJ4u4oieYC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BWDogU2VtVmVyID0ge1xuICBtYWpvcjogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICBtaW5vcjogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICBwYXRjaDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICBwcmVyZWxlYXNlOiBbXSxcbiAgYnVpbGQ6IFtdLFxufTtcblxuLyoqXG4gKiBUaGUgbWluaW11bSB2YWxpZCBTZW1WZXIgb2JqZWN0LiBFcXVpdmFsZW50IHRvIGAwLjAuMGAuXG4gKi9cbmV4cG9ydCBjb25zdCBNSU46IFNlbVZlciA9IHtcbiAgbWFqb3I6IDAsXG4gIG1pbm9yOiAwLFxuICBwYXRjaDogMCxcbiAgcHJlcmVsZWFzZTogW10sXG4gIGJ1aWxkOiBbXSxcbn07XG5cbi8qKlxuICogQSBzZW50aW5lbCB2YWx1ZSB1c2VkIHRvIGRlbm90ZSBhbiBpbnZhbGlkIFNlbVZlciBvYmplY3RcbiAqIHdoaWNoIG1heSBiZSB0aGUgcmVzdWx0IG9mIGltcG9zc2libGUgcmFuZ2VzIG9yIGNvbXBhcmF0b3Igb3BlcmF0aW9ucy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZXF1YWxzIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vc2VtdmVyL2VxdWFscy50c1wiO1xuICogaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9zZW12ZXIvcGFyc2UudHNcIjtcbiAqIGltcG9ydCB7IElOVkFMSUQgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9zZW12ZXIvY29uc3RhbnRzLnRzXCJcbiAqIGVxdWFscyhwYXJzZShcIjEuMi4zXCIpLCBJTlZBTElEKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgSU5WQUxJRDogU2VtVmVyID0ge1xuICBtYWpvcjogTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLFxuICBtaW5vcjogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICBwYXRjaDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICBwcmVyZWxlYXNlOiBbXSxcbiAgYnVpbGQ6IFtdLFxufTtcblxuLyoqXG4gKiBBTlkgaXMgYSBzZW50aW5lbCB2YWx1ZSB1c2VkIGJ5IHNvbWUgcmFuZ2UgY2FsY3VsYXRpb25zLiBJdCBpcyBub3QgYSB2YWxpZFxuICogU2VtVmVyIG9iamVjdCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5LlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBlcXVhbHMgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9zZW12ZXIvZXF1YWxzLnRzXCI7XG4gKiBpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL3NlbXZlci9wYXJzZS50c1wiO1xuICogaW1wb3J0IHsgQU5ZIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vc2VtdmVyL2NvbnN0YW50cy50c1wiXG4gKiBlcXVhbHMocGFyc2UoXCIxLjIuM1wiKSwgQU5ZKTsgLy8gZmFsc2VcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgQU5ZOiBTZW1WZXIgPSB7XG4gIG1ham9yOiBOdW1iZXIuTmFOLFxuICBtaW5vcjogTnVtYmVyLk5hTixcbiAgcGF0Y2g6IE51bWJlci5OYU4sXG4gIHByZXJlbGVhc2U6IFtdLFxuICBidWlsZDogW10sXG59O1xuXG4vKipcbiAqIEEgY29tcGFyYXRvciB3aGljaCB3aWxsIHNwYW4gYWxsIHZhbGlkIHNlbWFudGljIHZlcnNpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBBTEw6IENvbXBhcmF0b3IgPSB7XG4gIG9wZXJhdG9yOiB1bmRlZmluZWQsXG4gIC4uLkFOWSxcbn07XG5cbi8qKlxuICogQSBjb21wYXJhdG9yIHdoaWNoIHdpbGwgbm90IHNwYW4gYW55IHNlbWFudGljIHZlcnNpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBOT05FOiBDb21wYXJhdG9yID0ge1xuICBvcGVyYXRvcjogXCI8XCIsXG4gIC4uLk1JTixcbn07XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cbmltcG9ydCB0eXBlIHsgU2VtVmVyIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IGlzV2lsZGNhcmRDb21wYXJhdG9yIH0gZnJvbSBcIi4vX3NoYXJlZC50c1wiO1xuXG5mdW5jdGlvbiBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlcikge1xuICBpZiAodmFsdWUgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkge1xuICAgIHJldHVybiBcIuKInlwiO1xuICB9IGVsc2UgaWYgKHZhbHVlID09PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpIHtcbiAgICByZXR1cm4gXCLip55cIjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWUudG9GaXhlZCgwKTtcbiAgfVxufVxuXG4vKipcbiAqIEZvcm1hdCBhIFNlbVZlciBvYmplY3QgaW50byBhIHN0cmluZy5cbiAqXG4gKiBJZiBhbnkgbnVtYmVyIGlzIE5hTiB0aGVuIE5hTiB3aWxsIGJlIHByaW50ZWQuXG4gKlxuICogSWYgYW55IG51bWJlciBpcyBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbmZpbml0eSB0aGVuICfiiJ4nIG9yICfip54nIHdpbGwgYmUgcHJpbnRlZCBpbnN0ZWFkLlxuICpcbiAqIEBwYXJhbSBzZW12ZXIgVGhlIHNlbWFudGljIHZlcnNpb24gdG8gZm9ybWF0XG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgc2VtYW50aWMgdmVyc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdChzZW12ZXI6IFNlbVZlcik6IHN0cmluZyB7XG4gIGlmIChpc1dpbGRjYXJkQ29tcGFyYXRvcihzZW12ZXIpKSB7XG4gICAgcmV0dXJuIFwiKlwiO1xuICB9XG5cbiAgY29uc3QgbWFqb3IgPSBmb3JtYXROdW1iZXIoc2VtdmVyLm1ham9yKTtcbiAgY29uc3QgbWlub3IgPSBmb3JtYXROdW1iZXIoc2VtdmVyLm1pbm9yKTtcbiAgY29uc3QgcGF0Y2ggPSBmb3JtYXROdW1iZXIoc2VtdmVyLnBhdGNoKTtcbiAgY29uc3QgcHJlID0gc2VtdmVyLnByZXJlbGVhc2U/LmpvaW4oXCIuXCIpID8/IFwiXCI7XG4gIGNvbnN0IGJ1aWxkID0gc2VtdmVyLmJ1aWxkPy5qb2luKFwiLlwiKSA/PyBcIlwiO1xuXG4gIGNvbnN0IHByaW1hcnkgPSBgJHttYWpvcn0uJHttaW5vcn0uJHtwYXRjaH1gO1xuICBjb25zdCByZWxlYXNlID0gW3ByaW1hcnksIHByZV0uZmlsdGVyKCh2KSA9PiB2KS5qb2luKFwiLVwiKTtcbiAgcmV0dXJuIFtyZWxlYXNlLCBidWlsZF0uZmlsdGVyKCh2KSA9PiB2KS5qb2luKFwiK1wiKTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuXG5pbXBvcnQgdHlwZSB7IENvbXBhcmF0b3IsIFNlbVZlciB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBpc1dpbGRjYXJkQ29tcGFyYXRvciB9IGZyb20gXCIuL19zaGFyZWQudHNcIjtcbmltcG9ydCB7IGNvbXBhcmUgfSBmcm9tIFwiLi9jb21wYXJlLnRzXCI7XG5cbmZ1bmN0aW9uIHRlc3RDb21wYXJhdG9yKHZlcnNpb246IFNlbVZlciwgY29tcGFyYXRvcjogQ29tcGFyYXRvcik6IGJvb2xlYW4ge1xuICBpZiAoaXNXaWxkY2FyZENvbXBhcmF0b3IoY29tcGFyYXRvcikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zdCBjbXAgPSBjb21wYXJlKHZlcnNpb24sIGNvbXBhcmF0b3IpO1xuICBzd2l0Y2ggKGNvbXBhcmF0b3Iub3BlcmF0b3IpIHtcbiAgICBjYXNlIFwiPVwiOlxuICAgIGNhc2UgdW5kZWZpbmVkOiB7XG4gICAgICByZXR1cm4gY21wID09PSAwO1xuICAgIH1cbiAgICBjYXNlIFwiIT1cIjoge1xuICAgICAgcmV0dXJuIGNtcCAhPT0gMDtcbiAgICB9XG4gICAgY2FzZSBcIj5cIjoge1xuICAgICAgcmV0dXJuIGNtcCA+IDA7XG4gICAgfVxuICAgIGNhc2UgXCI8XCI6IHtcbiAgICAgIHJldHVybiBjbXAgPCAwO1xuICAgIH1cbiAgICBjYXNlIFwiPj1cIjoge1xuICAgICAgcmV0dXJuIGNtcCA+PSAwO1xuICAgIH1cbiAgICBjYXNlIFwiPD1cIjoge1xuICAgICAgcmV0dXJuIGNtcCA8PSAwO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVzdENvbXBhcmF0b3JTZXQoXG4gIHZlcnNpb246IFNlbVZlcixcbiAgc2V0OiBDb21wYXJhdG9yW10sXG4pOiBib29sZWFuIHtcbiAgZm9yIChjb25zdCBjb21wYXJhdG9yIG9mIHNldCkge1xuICAgIGlmICghdGVzdENvbXBhcmF0b3IodmVyc2lvbiwgY29tcGFyYXRvcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKHZlcnNpb24ucHJlcmVsZWFzZSAmJiB2ZXJzaW9uLnByZXJlbGVhc2UubGVuZ3RoID4gMCkge1xuICAgIC8vIEZpbmQgdGhlIGNvbXBhcmF0b3IgdGhhdCBpcyBhbGxvd2VkIHRvIGhhdmUgcHJlcmVsZWFzZXNcbiAgICAvLyBGb3IgZXhhbXBsZSwgXjEuMi4zLXByLjEgZGVzdWdhcnMgdG8gPj0xLjIuMy1wci4xIDwyLjAuMFxuICAgIC8vIFRoYXQgc2hvdWxkIGFsbG93IGAxLjIuMy1wci4yYCB0byBwYXNzLlxuICAgIC8vIEhvd2V2ZXIsIGAxLjIuNC1hbHBoYS5ub3RyZWFkeWAgc2hvdWxkIE5PVCBiZSBhbGxvd2VkLFxuICAgIC8vIGV2ZW4gdGhvdWdoIGl0J3Mgd2l0aGluIHRoZSByYW5nZSBzZXQgYnkgdGhlIGNvbXBhcmF0b3JzLlxuICAgIGZvciAoY29uc3QgY29tcGFyYXRvciBvZiBzZXQpIHtcbiAgICAgIGlmIChpc1dpbGRjYXJkQ29tcGFyYXRvcihjb21wYXJhdG9yKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgbWFqb3IsIG1pbm9yLCBwYXRjaCwgcHJlcmVsZWFzZSB9ID0gY29tcGFyYXRvcjtcbiAgICAgIGlmIChwcmVyZWxlYXNlICYmIHByZXJlbGVhc2UubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdmVyc2lvbi5tYWpvciA9PT0gbWFqb3IgJiYgdmVyc2lvbi5taW5vciA9PT0gbWlub3IgJiZcbiAgICAgICAgICB2ZXJzaW9uLnBhdGNoID09PSBwYXRjaFxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cblxuaW1wb3J0IHR5cGUgeyBSYW5nZSwgU2VtVmVyIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IHRlc3RDb21wYXJhdG9yU2V0IH0gZnJvbSBcIi4vX3Rlc3RfY29tcGFyYXRvcl9zZXQudHNcIjtcblxuLyoqXG4gKiBUZXN0IHRvIHNlZSBpZiB0aGUgdmVyc2lvbiBzYXRpc2ZpZXMgdGhlIHJhbmdlLlxuICogQHBhcmFtIHZlcnNpb24gVGhlIHZlcnNpb24gdG8gdGVzdFxuICogQHBhcmFtIHJhbmdlIFRoZSByYW5nZSB0byBjaGVja1xuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgdmVyc2lvbiBpcyBpbiB0aGUgcmFuZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhdGlzZmllcyhcbiAgdmVyc2lvbjogU2VtVmVyLFxuICByYW5nZTogUmFuZ2UsXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHJhbmdlLnNvbWUoKHNldCkgPT4gdGVzdENvbXBhcmF0b3JTZXQodmVyc2lvbiwgc2V0KSk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHR5cGUgeyBTZW1WZXIgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuaW1wb3J0IHsgY29tcGFyZSB9IGZyb20gXCIuL2NvbXBhcmUudHNcIjtcblxuLyoqXG4gKiBHcmVhdGVyIHRoYW4gY29tcGFyaXNvblxuICpcbiAqIFRoaXMgaXMgZXF1YWwgdG8gYGNvbXBhcmUoczAsIHMxKSA+IDBgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3JlYXRlclRoYW4oczA6IFNlbVZlciwgczE6IFNlbVZlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29tcGFyZShzMCwgczEpID4gMDtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuaW1wb3J0IHR5cGUgeyBSYW5nZSwgU2VtVmVyIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IHNhdGlzZmllcyB9IGZyb20gXCIuL3NhdGlzZmllcy50c1wiO1xuaW1wb3J0IHsgZ3JlYXRlclRoYW4gfSBmcm9tIFwiLi9ncmVhdGVyX3RoYW4udHNcIjtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBoaWdoZXN0IHZlcnNpb24gaW4gdGhlIGxpc3QgdGhhdCBzYXRpc2ZpZXMgdGhlIHJhbmdlLCBvciBgdW5kZWZpbmVkYFxuICogaWYgbm9uZSBvZiB0aGVtIGRvLlxuICogQHBhcmFtIHZlcnNpb25zIFRoZSB2ZXJzaW9ucyB0byBjaGVjay5cbiAqIEBwYXJhbSByYW5nZSBUaGUgcmFuZ2Ugb2YgcG9zc2libGUgdmVyc2lvbnMgdG8gY29tcGFyZSB0by5cbiAqIEByZXR1cm5zIFRoZSBoaWdoZXN0IHZlcnNpb24gaW4gdmVyc2lvbnMgdGhhdCBzYXRpc2ZpZXMgdGhlIHJhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWF4U2F0aXNmeWluZyhcbiAgdmVyc2lvbnM6IFNlbVZlcltdLFxuICByYW5nZTogUmFuZ2UsXG4pOiBTZW1WZXIgfCB1bmRlZmluZWQge1xuICBsZXQgbWF4O1xuICBmb3IgKGNvbnN0IHZlcnNpb24gb2YgdmVyc2lvbnMpIHtcbiAgICBpZiAoIXNhdGlzZmllcyh2ZXJzaW9uLCByYW5nZSkpIGNvbnRpbnVlO1xuICAgIG1heCA9IG1heCAmJiBncmVhdGVyVGhhbihtYXgsIHZlcnNpb24pID8gbWF4IDogdmVyc2lvbjtcbiAgfVxuICByZXR1cm4gbWF4O1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7XG4gIENPTVBBUkFUT1JfUkVHRVhQLFxuICBPUEVSQVRPUl9YUkFOR0VfUkVHRVhQLFxuICBwYXJzZUJ1aWxkLFxuICBwYXJzZU51bWJlcixcbiAgcGFyc2VQcmVyZWxlYXNlLFxuICBYUkFOR0UsXG59IGZyb20gXCIuL19zaGFyZWQudHNcIjtcbmltcG9ydCB7IEFMTCwgQU5ZLCBOT05FIH0gZnJvbSBcIi4vY29uc3RhbnRzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBhcmF0b3IsIE9wZXJhdG9yLCBSYW5nZSB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5cbnR5cGUgQ29tcGFyYXRvclJlZ0V4cEdyb3VwID0ge1xuICBvcGVyYXRvcjogT3BlcmF0b3I7XG4gIG1ham9yOiBzdHJpbmc7XG4gIG1pbm9yOiBzdHJpbmc7XG4gIHBhdGNoOiBzdHJpbmc7XG4gIHByZXJlbGVhc2U6IHN0cmluZztcbiAgYnVpbGRtZXRhZGF0YTogc3RyaW5nO1xufTtcblxuZnVuY3Rpb24gcGFyc2VDb21wYXJhdG9yKGNvbXBhcmF0b3I6IHN0cmluZyk6IENvbXBhcmF0b3Ige1xuICBjb25zdCBtYXRjaCA9IGNvbXBhcmF0b3IubWF0Y2goQ09NUEFSQVRPUl9SRUdFWFApO1xuICBjb25zdCBncm91cHMgPSBtYXRjaD8uZ3JvdXBzO1xuXG4gIGlmICghZ3JvdXBzKSByZXR1cm4gTk9ORTtcblxuICBjb25zdCB7IG9wZXJhdG9yLCBwcmVyZWxlYXNlLCBidWlsZG1ldGFkYXRhIH0gPVxuICAgIGdyb3VwcyBhcyBDb21wYXJhdG9yUmVnRXhwR3JvdXA7XG5cbiAgY29uc3Qgc2VtdmVyID0gZ3JvdXBzLm1ham9yXG4gICAgPyB7XG4gICAgICBtYWpvcjogcGFyc2VOdW1iZXIoZ3JvdXBzLm1ham9yLCBcIkludmFsaWQgbWFqb3IgdmVyc2lvblwiKSxcbiAgICAgIG1pbm9yOiBwYXJzZU51bWJlcihcbiAgICAgICAgZ3JvdXBzLm1pbm9yISxcbiAgICAgICAgXCJJbnZhbGlkIG1pbm9yIHZlcnNpb25cIixcbiAgICAgICksXG4gICAgICBwYXRjaDogcGFyc2VOdW1iZXIoXG4gICAgICAgIGdyb3Vwcy5wYXRjaCEsXG4gICAgICAgIFwiSW52YWxpZCBwYXRjaCB2ZXJzaW9uXCIsXG4gICAgICApLFxuICAgICAgcHJlcmVsZWFzZTogcHJlcmVsZWFzZSA/IHBhcnNlUHJlcmVsZWFzZShwcmVyZWxlYXNlKSA6IFtdLFxuICAgICAgYnVpbGQ6IGJ1aWxkbWV0YWRhdGEgPyBwYXJzZUJ1aWxkKGJ1aWxkbWV0YWRhdGEpIDogW10sXG4gICAgfVxuICAgIDogQU5ZO1xuXG4gIHJldHVybiB7IG9wZXJhdG9yOiBvcGVyYXRvciB8fCB1bmRlZmluZWQsIC4uLnNlbXZlciB9O1xufVxuXG5mdW5jdGlvbiBpc1dpbGRjYXJkKGlkPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAhaWQgfHwgaWQudG9Mb3dlckNhc2UoKSA9PT0gXCJ4XCIgfHwgaWQgPT09IFwiKlwiO1xufVxuXG50eXBlIFJhbmdlUmVnRXhwR3JvdXBzID0ge1xuICBvcGVyYXRvcjogc3RyaW5nO1xuICBtYWpvcjogc3RyaW5nO1xuICBtaW5vcjogc3RyaW5nO1xuICBwYXRjaDogc3RyaW5nO1xuICBwcmVyZWxlYXNlPzogc3RyaW5nO1xuICBidWlsZD86IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIGhhbmRsZUxlZnRIeXBoZW5SYW5nZUdyb3VwcyhcbiAgbGVmdEdyb3VwOiBSYW5nZVJlZ0V4cEdyb3Vwcyxcbik6IENvbXBhcmF0b3IgfCB1bmRlZmluZWQge1xuICBpZiAoaXNXaWxkY2FyZChsZWZ0R3JvdXAubWFqb3IpKSByZXR1cm47XG4gIGlmIChpc1dpbGRjYXJkKGxlZnRHcm91cC5taW5vcikpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb3BlcmF0b3I6IFwiPj1cIixcbiAgICAgIG1ham9yOiArbGVmdEdyb3VwLm1ham9yLFxuICAgICAgbWlub3I6IDAsXG4gICAgICBwYXRjaDogMCxcbiAgICAgIHByZXJlbGVhc2U6IFtdLFxuICAgICAgYnVpbGQ6IFtdLFxuICAgIH07XG4gIH1cbiAgaWYgKGlzV2lsZGNhcmQobGVmdEdyb3VwLnBhdGNoKSkge1xuICAgIHJldHVybiB7XG4gICAgICBvcGVyYXRvcjogXCI+PVwiLFxuICAgICAgbWFqb3I6ICtsZWZ0R3JvdXAubWFqb3IsXG4gICAgICBtaW5vcjogK2xlZnRHcm91cC5taW5vcixcbiAgICAgIHBhdGNoOiAwLFxuICAgICAgcHJlcmVsZWFzZTogW10sXG4gICAgICBidWlsZDogW10sXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG9wZXJhdG9yOiBcIj49XCIsXG4gICAgbWFqb3I6ICtsZWZ0R3JvdXAubWFqb3IsXG4gICAgbWlub3I6ICtsZWZ0R3JvdXAubWlub3IsXG4gICAgcGF0Y2g6ICtsZWZ0R3JvdXAucGF0Y2gsXG4gICAgcHJlcmVsZWFzZTogbGVmdEdyb3VwLnByZXJlbGVhc2VcbiAgICAgID8gcGFyc2VQcmVyZWxlYXNlKGxlZnRHcm91cC5wcmVyZWxlYXNlKVxuICAgICAgOiBbXSxcbiAgICBidWlsZDogW10sXG4gIH07XG59XG5mdW5jdGlvbiBoYW5kbGVSaWdodEh5cGhlblJhbmdlR3JvdXBzKFxuICByaWdodEdyb3VwczogUmFuZ2VSZWdFeHBHcm91cHMsXG4pOiBDb21wYXJhdG9yIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGlzV2lsZGNhcmQocmlnaHRHcm91cHMubWFqb3IpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChpc1dpbGRjYXJkKHJpZ2h0R3JvdXBzLm1pbm9yKSkge1xuICAgIHJldHVybiB7XG4gICAgICBvcGVyYXRvcjogXCI8XCIsXG4gICAgICBtYWpvcjogK3JpZ2h0R3JvdXBzLm1ham9yISArIDEsXG4gICAgICBtaW5vcjogMCxcbiAgICAgIHBhdGNoOiAwLFxuICAgICAgcHJlcmVsZWFzZTogW10sXG4gICAgICBidWlsZDogW10sXG4gICAgfTtcbiAgfVxuICBpZiAoaXNXaWxkY2FyZChyaWdodEdyb3Vwcy5wYXRjaCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb3BlcmF0b3I6IFwiPFwiLFxuICAgICAgbWFqb3I6ICtyaWdodEdyb3Vwcy5tYWpvcixcbiAgICAgIG1pbm9yOiArcmlnaHRHcm91cHMubWlub3IhICsgMSxcbiAgICAgIHBhdGNoOiAwLFxuICAgICAgcHJlcmVsZWFzZTogW10sXG4gICAgICBidWlsZDogW10sXG4gICAgfTtcbiAgfVxuICBpZiAocmlnaHRHcm91cHMucHJlcmVsZWFzZSkge1xuICAgIHJldHVybiB7XG4gICAgICBvcGVyYXRvcjogXCI8PVwiLFxuICAgICAgbWFqb3I6ICtyaWdodEdyb3Vwcy5tYWpvcixcbiAgICAgIG1pbm9yOiArcmlnaHRHcm91cHMubWlub3IsXG4gICAgICBwYXRjaDogK3JpZ2h0R3JvdXBzLnBhdGNoLFxuICAgICAgcHJlcmVsZWFzZTogcGFyc2VQcmVyZWxlYXNlKHJpZ2h0R3JvdXBzLnByZXJlbGVhc2UpLFxuICAgICAgYnVpbGQ6IFtdLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBvcGVyYXRvcjogXCI8PVwiLFxuICAgIG1ham9yOiArcmlnaHRHcm91cHMubWFqb3IsXG4gICAgbWlub3I6ICtyaWdodEdyb3Vwcy5taW5vcixcbiAgICBwYXRjaDogK3JpZ2h0R3JvdXBzLnBhdGNoLFxuICAgIHByZXJlbGVhc2U6IHJpZ2h0R3JvdXBzLnByZXJlbGVhc2VcbiAgICAgID8gcGFyc2VQcmVyZWxlYXNlKHJpZ2h0R3JvdXBzLnByZXJlbGVhc2UpXG4gICAgICA6IFtdLFxuICAgIGJ1aWxkOiBbXSxcbiAgfTtcbn1cbmZ1bmN0aW9uIHBhcnNlSHlwaGVuUmFuZ2UocmFuZ2U6IHN0cmluZyk6IENvbXBhcmF0b3JbXSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGxlZnRNYXRjaCA9IHJhbmdlLm1hdGNoKG5ldyBSZWdFeHAoYF4ke1hSQU5HRX1gKSk7XG4gIGNvbnN0IGxlZnRHcm91cCA9IGxlZnRNYXRjaD8uZ3JvdXBzO1xuICBpZiAoIWxlZnRHcm91cCkgcmV0dXJuO1xuICBjb25zdCBsZWZ0TGVuZ3RoID0gbGVmdE1hdGNoWzBdLmxlbmd0aDtcblxuICBjb25zdCBoeXBoZW5NYXRjaCA9IHJhbmdlLnNsaWNlKGxlZnRMZW5ndGgpLm1hdGNoKC9eXFxzKy1cXHMrLyk7XG4gIGlmICghaHlwaGVuTWF0Y2gpIHJldHVybjtcbiAgY29uc3QgaHlwaGVuTGVuZ3RoID0gaHlwaGVuTWF0Y2hbMF0ubGVuZ3RoO1xuXG4gIGNvbnN0IHJpZ2h0TWF0Y2ggPSByYW5nZS5zbGljZShsZWZ0TGVuZ3RoICsgaHlwaGVuTGVuZ3RoKS5tYXRjaChcbiAgICBuZXcgUmVnRXhwKGBeJHtYUkFOR0V9XFxcXHMqJGApLFxuICApO1xuICBjb25zdCByaWdodEdyb3VwcyA9IHJpZ2h0TWF0Y2g/Lmdyb3VwcztcbiAgaWYgKCFyaWdodEdyb3VwcykgcmV0dXJuO1xuXG4gIGNvbnN0IGZyb20gPSBoYW5kbGVMZWZ0SHlwaGVuUmFuZ2VHcm91cHMobGVmdEdyb3VwIGFzIFJhbmdlUmVnRXhwR3JvdXBzKTtcbiAgY29uc3QgdG8gPSBoYW5kbGVSaWdodEh5cGhlblJhbmdlR3JvdXBzKHJpZ2h0R3JvdXBzIGFzIFJhbmdlUmVnRXhwR3JvdXBzKTtcbiAgcmV0dXJuIFtmcm9tLCB0b10uZmlsdGVyKEJvb2xlYW4pIGFzIENvbXBhcmF0b3JbXTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlQ2FyZXRPcGVyYXRvcihncm91cHM6IFJhbmdlUmVnRXhwR3JvdXBzKTogQ29tcGFyYXRvcltdIHtcbiAgY29uc3QgbWFqb3JJc1dpbGRjYXJkID0gaXNXaWxkY2FyZChncm91cHMubWFqb3IpO1xuICBjb25zdCBtaW5vcklzV2lsZGNhcmQgPSBpc1dpbGRjYXJkKGdyb3Vwcy5taW5vcik7XG4gIGNvbnN0IHBhdGNoSXNXaWxkY2FyZCA9IGlzV2lsZGNhcmQoZ3JvdXBzLnBhdGNoKTtcblxuICBjb25zdCBtYWpvciA9ICtncm91cHMubWFqb3I7XG4gIGNvbnN0IG1pbm9yID0gK2dyb3Vwcy5taW5vcjtcbiAgY29uc3QgcGF0Y2ggPSArZ3JvdXBzLnBhdGNoO1xuXG4gIGlmIChtYWpvcklzV2lsZGNhcmQpIHJldHVybiBbQUxMXTtcbiAgaWYgKG1pbm9ySXNXaWxkY2FyZCkge1xuICAgIHJldHVybiBbXG4gICAgICB7IG9wZXJhdG9yOiBcIj49XCIsIG1ham9yLCBtaW5vcjogMCwgcGF0Y2g6IDAgfSxcbiAgICAgIHsgb3BlcmF0b3I6IFwiPFwiLCBtYWpvcjogbWFqb3IgKyAxLCBtaW5vcjogMCwgcGF0Y2g6IDAgfSxcbiAgICBdO1xuICB9XG4gIGlmIChwYXRjaElzV2lsZGNhcmQpIHtcbiAgICBpZiAobWFqb3IgPT09IDApIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHsgb3BlcmF0b3I6IFwiPj1cIiwgbWFqb3IsIG1pbm9yLCBwYXRjaDogMCB9LFxuICAgICAgICB7IG9wZXJhdG9yOiBcIjxcIiwgbWFqb3IsIG1pbm9yOiBtaW5vciArIDEsIHBhdGNoOiAwIH0sXG4gICAgICBdO1xuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgeyBvcGVyYXRvcjogXCI+PVwiLCBtYWpvciwgbWlub3IsIHBhdGNoOiAwIH0sXG4gICAgICB7IG9wZXJhdG9yOiBcIjxcIiwgbWFqb3I6IG1ham9yICsgMSwgbWlub3I6IDAsIHBhdGNoOiAwIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IHByZXJlbGVhc2UgPSBwYXJzZVByZXJlbGVhc2UoZ3JvdXBzLnByZXJlbGVhc2UgPz8gXCJcIik7XG4gIGlmIChtYWpvciA9PT0gMCkge1xuICAgIGlmIChtaW5vciA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgeyBvcGVyYXRvcjogXCI+PVwiLCBtYWpvciwgbWlub3IsIHBhdGNoLCBwcmVyZWxlYXNlIH0sXG4gICAgICAgIHsgb3BlcmF0b3I6IFwiPFwiLCBtYWpvciwgbWlub3IsIHBhdGNoOiBwYXRjaCArIDEgfSxcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICB7IG9wZXJhdG9yOiBcIj49XCIsIG1ham9yLCBtaW5vciwgcGF0Y2gsIHByZXJlbGVhc2UgfSxcbiAgICAgIHsgb3BlcmF0b3I6IFwiPFwiLCBtYWpvciwgbWlub3I6IG1pbm9yICsgMSwgcGF0Y2g6IDAgfSxcbiAgICBdO1xuICB9XG4gIHJldHVybiBbXG4gICAgeyBvcGVyYXRvcjogXCI+PVwiLCBtYWpvciwgbWlub3IsIHBhdGNoLCBwcmVyZWxlYXNlIH0sXG4gICAgeyBvcGVyYXRvcjogXCI8XCIsIG1ham9yOiBtYWpvciArIDEsIG1pbm9yOiAwLCBwYXRjaDogMCB9LFxuICBdO1xufVxuZnVuY3Rpb24gaGFuZGxlVGlsZGVPcGVyYXRvcihncm91cHM6IFJhbmdlUmVnRXhwR3JvdXBzKTogQ29tcGFyYXRvcltdIHtcbiAgY29uc3QgbWFqb3JJc1dpbGRjYXJkID0gaXNXaWxkY2FyZChncm91cHMubWFqb3IpO1xuICBjb25zdCBtaW5vcklzV2lsZGNhcmQgPSBpc1dpbGRjYXJkKGdyb3Vwcy5taW5vcik7XG4gIGNvbnN0IHBhdGNoSXNXaWxkY2FyZCA9IGlzV2lsZGNhcmQoZ3JvdXBzLnBhdGNoKTtcblxuICBjb25zdCBtYWpvciA9ICtncm91cHMubWFqb3I7XG4gIGNvbnN0IG1pbm9yID0gK2dyb3Vwcy5taW5vcjtcbiAgY29uc3QgcGF0Y2ggPSArZ3JvdXBzLnBhdGNoO1xuXG4gIGlmIChtYWpvcklzV2lsZGNhcmQpIHJldHVybiBbQUxMXTtcbiAgaWYgKG1pbm9ySXNXaWxkY2FyZCkge1xuICAgIHJldHVybiBbXG4gICAgICB7IG9wZXJhdG9yOiBcIj49XCIsIG1ham9yLCBtaW5vcjogMCwgcGF0Y2g6IDAgfSxcbiAgICAgIHsgb3BlcmF0b3I6IFwiPFwiLCBtYWpvcjogbWFqb3IgKyAxLCBtaW5vcjogMCwgcGF0Y2g6IDAgfSxcbiAgICBdO1xuICB9XG4gIGlmIChwYXRjaElzV2lsZGNhcmQpIHtcbiAgICByZXR1cm4gW1xuICAgICAgeyBvcGVyYXRvcjogXCI+PVwiLCBtYWpvciwgbWlub3IsIHBhdGNoOiAwIH0sXG4gICAgICB7IG9wZXJhdG9yOiBcIjxcIiwgbWFqb3IsIG1pbm9yOiBtaW5vciArIDEsIHBhdGNoOiAwIH0sXG4gICAgXTtcbiAgfVxuICBjb25zdCBwcmVyZWxlYXNlID0gcGFyc2VQcmVyZWxlYXNlKGdyb3Vwcy5wcmVyZWxlYXNlID8/IFwiXCIpO1xuICByZXR1cm4gW1xuICAgIHsgb3BlcmF0b3I6IFwiPj1cIiwgbWFqb3IsIG1pbm9yLCBwYXRjaCwgcHJlcmVsZWFzZSB9LFxuICAgIHsgb3BlcmF0b3I6IFwiPFwiLCBtYWpvciwgbWlub3I6IG1pbm9yICsgMSwgcGF0Y2g6IDAgfSxcbiAgXTtcbn1cbmZ1bmN0aW9uIGhhbmRsZUxlc3NUaGFuT3BlcmF0b3IoZ3JvdXBzOiBSYW5nZVJlZ0V4cEdyb3Vwcyk6IENvbXBhcmF0b3JbXSB7XG4gIGNvbnN0IG1ham9ySXNXaWxkY2FyZCA9IGlzV2lsZGNhcmQoZ3JvdXBzLm1ham9yKTtcbiAgY29uc3QgbWlub3JJc1dpbGRjYXJkID0gaXNXaWxkY2FyZChncm91cHMubWlub3IpO1xuICBjb25zdCBwYXRjaElzV2lsZGNhcmQgPSBpc1dpbGRjYXJkKGdyb3Vwcy5wYXRjaCk7XG5cbiAgY29uc3QgbWFqb3IgPSArZ3JvdXBzLm1ham9yO1xuICBjb25zdCBtaW5vciA9ICtncm91cHMubWlub3I7XG4gIGNvbnN0IHBhdGNoID0gK2dyb3Vwcy5wYXRjaDtcblxuICBpZiAobWFqb3JJc1dpbGRjYXJkKSByZXR1cm4gW3sgb3BlcmF0b3I6IFwiPFwiLCBtYWpvcjogMCwgbWlub3I6IDAsIHBhdGNoOiAwIH1dO1xuICBpZiAobWlub3JJc1dpbGRjYXJkKSB7XG4gICAgaWYgKHBhdGNoSXNXaWxkY2FyZCkgcmV0dXJuIFt7IG9wZXJhdG9yOiBcIjxcIiwgbWFqb3IsIG1pbm9yOiAwLCBwYXRjaDogMCB9XTtcbiAgICByZXR1cm4gW3sgb3BlcmF0b3I6IFwiPFwiLCBtYWpvciwgbWlub3IsIHBhdGNoOiAwIH1dO1xuICB9XG4gIGlmIChwYXRjaElzV2lsZGNhcmQpIHJldHVybiBbeyBvcGVyYXRvcjogXCI8XCIsIG1ham9yLCBtaW5vciwgcGF0Y2g6IDAgfV07XG4gIGNvbnN0IHByZXJlbGVhc2UgPSBwYXJzZVByZXJlbGVhc2UoZ3JvdXBzLnByZXJlbGVhc2UgPz8gXCJcIik7XG4gIGNvbnN0IGJ1aWxkID0gcGFyc2VCdWlsZChncm91cHMuYnVpbGQgPz8gXCJcIik7XG4gIHJldHVybiBbeyBvcGVyYXRvcjogXCI8XCIsIG1ham9yLCBtaW5vciwgcGF0Y2gsIHByZXJlbGVhc2UsIGJ1aWxkIH1dO1xufVxuZnVuY3Rpb24gaGFuZGxlTGVzc1RoYW5PckVxdWFsT3BlcmF0b3IoXG4gIGdyb3VwczogUmFuZ2VSZWdFeHBHcm91cHMsXG4pOiBDb21wYXJhdG9yW10ge1xuICBjb25zdCBtaW5vcklzV2lsZGNhcmQgPSBpc1dpbGRjYXJkKGdyb3Vwcy5taW5vcik7XG4gIGNvbnN0IHBhdGNoSXNXaWxkY2FyZCA9IGlzV2lsZGNhcmQoZ3JvdXBzLnBhdGNoKTtcblxuICBjb25zdCBtYWpvciA9ICtncm91cHMubWFqb3I7XG4gIGNvbnN0IG1pbm9yID0gK2dyb3Vwcy5taW5vcjtcbiAgY29uc3QgcGF0Y2ggPSArZ3JvdXBzLnBhdGNoO1xuXG4gIGlmIChtaW5vcklzV2lsZGNhcmQpIHtcbiAgICBpZiAocGF0Y2hJc1dpbGRjYXJkKSB7XG4gICAgICByZXR1cm4gW3sgb3BlcmF0b3I6IFwiPFwiLCBtYWpvcjogbWFqb3IgKyAxLCBtaW5vcjogMCwgcGF0Y2g6IDAgfV07XG4gICAgfVxuICAgIHJldHVybiBbeyBvcGVyYXRvcjogXCI8XCIsIG1ham9yLCBtaW5vcjogbWlub3IgKyAxLCBwYXRjaDogMCB9XTtcbiAgfVxuICBpZiAocGF0Y2hJc1dpbGRjYXJkKSB7XG4gICAgcmV0dXJuIFt7IG9wZXJhdG9yOiBcIjxcIiwgbWFqb3IsIG1pbm9yOiBtaW5vciArIDEsIHBhdGNoOiAwIH1dO1xuICB9XG4gIGNvbnN0IHByZXJlbGVhc2UgPSBwYXJzZVByZXJlbGVhc2UoZ3JvdXBzLnByZXJlbGVhc2UgPz8gXCJcIik7XG4gIGNvbnN0IGJ1aWxkID0gcGFyc2VCdWlsZChncm91cHMuYnVpbGQgPz8gXCJcIik7XG4gIHJldHVybiBbeyBvcGVyYXRvcjogXCI8PVwiLCBtYWpvciwgbWlub3IsIHBhdGNoLCBwcmVyZWxlYXNlLCBidWlsZCB9XTtcbn1cbmZ1bmN0aW9uIGhhbmRsZUdyZWF0ZXJUaGFuT3BlcmF0b3IoZ3JvdXBzOiBSYW5nZVJlZ0V4cEdyb3Vwcyk6IENvbXBhcmF0b3JbXSB7XG4gIGNvbnN0IG1ham9ySXNXaWxkY2FyZCA9IGlzV2lsZGNhcmQoZ3JvdXBzLm1ham9yKTtcbiAgY29uc3QgbWlub3JJc1dpbGRjYXJkID0gaXNXaWxkY2FyZChncm91cHMubWlub3IpO1xuICBjb25zdCBwYXRjaElzV2lsZGNhcmQgPSBpc1dpbGRjYXJkKGdyb3Vwcy5wYXRjaCk7XG5cbiAgY29uc3QgbWFqb3IgPSArZ3JvdXBzLm1ham9yO1xuICBjb25zdCBtaW5vciA9ICtncm91cHMubWlub3I7XG4gIGNvbnN0IHBhdGNoID0gK2dyb3Vwcy5wYXRjaDtcblxuICBpZiAobWFqb3JJc1dpbGRjYXJkKSByZXR1cm4gW3sgb3BlcmF0b3I6IFwiPFwiLCBtYWpvcjogMCwgbWlub3I6IDAsIHBhdGNoOiAwIH1dO1xuXG4gIGlmIChtaW5vcklzV2lsZGNhcmQpIHtcbiAgICByZXR1cm4gW3sgb3BlcmF0b3I6IFwiPj1cIiwgbWFqb3I6IG1ham9yICsgMSwgbWlub3I6IDAsIHBhdGNoOiAwIH1dO1xuICB9XG4gIGlmIChwYXRjaElzV2lsZGNhcmQpIHtcbiAgICByZXR1cm4gW3sgb3BlcmF0b3I6IFwiPj1cIiwgbWFqb3IsIG1pbm9yOiBtaW5vciArIDEsIHBhdGNoOiAwIH1dO1xuICB9XG4gIGNvbnN0IHByZXJlbGVhc2UgPSBwYXJzZVByZXJlbGVhc2UoZ3JvdXBzLnByZXJlbGVhc2UgPz8gXCJcIik7XG4gIGNvbnN0IGJ1aWxkID0gcGFyc2VCdWlsZChncm91cHMuYnVpbGQgPz8gXCJcIik7XG4gIHJldHVybiBbeyBvcGVyYXRvcjogXCI+XCIsIG1ham9yLCBtaW5vciwgcGF0Y2gsIHByZXJlbGVhc2UsIGJ1aWxkIH1dO1xufVxuZnVuY3Rpb24gaGFuZGxlR3JlYXRlck9yRXF1YWxPcGVyYXRvcihncm91cHM6IFJhbmdlUmVnRXhwR3JvdXBzKTogQ29tcGFyYXRvcltdIHtcbiAgY29uc3QgbWFqb3JJc1dpbGRjYXJkID0gaXNXaWxkY2FyZChncm91cHMubWFqb3IpO1xuICBjb25zdCBtaW5vcklzV2lsZGNhcmQgPSBpc1dpbGRjYXJkKGdyb3Vwcy5taW5vcik7XG4gIGNvbnN0IHBhdGNoSXNXaWxkY2FyZCA9IGlzV2lsZGNhcmQoZ3JvdXBzLnBhdGNoKTtcblxuICBjb25zdCBtYWpvciA9ICtncm91cHMubWFqb3I7XG4gIGNvbnN0IG1pbm9yID0gK2dyb3Vwcy5taW5vcjtcbiAgY29uc3QgcGF0Y2ggPSArZ3JvdXBzLnBhdGNoO1xuXG4gIGlmIChtYWpvcklzV2lsZGNhcmQpIHJldHVybiBbQUxMXTtcbiAgaWYgKG1pbm9ySXNXaWxkY2FyZCkge1xuICAgIGlmIChwYXRjaElzV2lsZGNhcmQpIHJldHVybiBbeyBvcGVyYXRvcjogXCI+PVwiLCBtYWpvciwgbWlub3I6IDAsIHBhdGNoOiAwIH1dO1xuICAgIHJldHVybiBbeyBvcGVyYXRvcjogXCI+PVwiLCBtYWpvciwgbWlub3IsIHBhdGNoOiAwIH1dO1xuICB9XG4gIGlmIChwYXRjaElzV2lsZGNhcmQpIHJldHVybiBbeyBvcGVyYXRvcjogXCI+PVwiLCBtYWpvciwgbWlub3IsIHBhdGNoOiAwIH1dO1xuICBjb25zdCBwcmVyZWxlYXNlID0gcGFyc2VQcmVyZWxlYXNlKGdyb3Vwcy5wcmVyZWxlYXNlID8/IFwiXCIpO1xuICBjb25zdCBidWlsZCA9IHBhcnNlQnVpbGQoZ3JvdXBzLmJ1aWxkID8/IFwiXCIpO1xuICByZXR1cm4gW3sgb3BlcmF0b3I6IFwiPj1cIiwgbWFqb3IsIG1pbm9yLCBwYXRjaCwgcHJlcmVsZWFzZSwgYnVpbGQgfV07XG59XG5mdW5jdGlvbiBoYW5kbGVFcXVhbE9wZXJhdG9yKGdyb3VwczogUmFuZ2VSZWdFeHBHcm91cHMpOiBDb21wYXJhdG9yW10ge1xuICBjb25zdCBtYWpvcklzV2lsZGNhcmQgPSBpc1dpbGRjYXJkKGdyb3Vwcy5tYWpvcik7XG4gIGNvbnN0IG1pbm9ySXNXaWxkY2FyZCA9IGlzV2lsZGNhcmQoZ3JvdXBzLm1pbm9yKTtcbiAgY29uc3QgcGF0Y2hJc1dpbGRjYXJkID0gaXNXaWxkY2FyZChncm91cHMucGF0Y2gpO1xuXG4gIGNvbnN0IG1ham9yID0gK2dyb3Vwcy5tYWpvcjtcbiAgY29uc3QgbWlub3IgPSArZ3JvdXBzLm1pbm9yO1xuICBjb25zdCBwYXRjaCA9ICtncm91cHMucGF0Y2g7XG5cbiAgaWYgKG1ham9ySXNXaWxkY2FyZCkgcmV0dXJuIFtBTExdO1xuICBpZiAobWlub3JJc1dpbGRjYXJkKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHsgb3BlcmF0b3I6IFwiPj1cIiwgbWFqb3IsIG1pbm9yOiAwLCBwYXRjaDogMCB9LFxuICAgICAgeyBvcGVyYXRvcjogXCI8XCIsIG1ham9yOiBtYWpvciArIDEsIG1pbm9yOiAwLCBwYXRjaDogMCB9LFxuICAgIF07XG4gIH1cbiAgaWYgKHBhdGNoSXNXaWxkY2FyZCkge1xuICAgIHJldHVybiBbXG4gICAgICB7IG9wZXJhdG9yOiBcIj49XCIsIG1ham9yLCBtaW5vciwgcGF0Y2g6IDAgfSxcbiAgICAgIHsgb3BlcmF0b3I6IFwiPFwiLCBtYWpvciwgbWlub3I6IG1pbm9yICsgMSwgcGF0Y2g6IDAgfSxcbiAgICBdO1xuICB9XG4gIGNvbnN0IHByZXJlbGVhc2UgPSBwYXJzZVByZXJlbGVhc2UoZ3JvdXBzLnByZXJlbGVhc2UgPz8gXCJcIik7XG4gIGNvbnN0IGJ1aWxkID0gcGFyc2VCdWlsZChncm91cHMuYnVpbGQgPz8gXCJcIik7XG4gIHJldHVybiBbeyBvcGVyYXRvcjogdW5kZWZpbmVkLCBtYWpvciwgbWlub3IsIHBhdGNoLCBwcmVyZWxlYXNlLCBidWlsZCB9XTtcbn1cblxuZnVuY3Rpb24gcGFyc2VPcGVyYXRvclJhbmdlKHN0cmluZzogc3RyaW5nKTogQ29tcGFyYXRvciB8IENvbXBhcmF0b3JbXSB7XG4gIGNvbnN0IGdyb3VwcyA9IHN0cmluZy5tYXRjaChPUEVSQVRPUl9YUkFOR0VfUkVHRVhQKVxuICAgID8uZ3JvdXBzIGFzIFJhbmdlUmVnRXhwR3JvdXBzO1xuICBpZiAoIWdyb3VwcykgcmV0dXJuIHBhcnNlQ29tcGFyYXRvcihzdHJpbmcpO1xuXG4gIHN3aXRjaCAoZ3JvdXBzLm9wZXJhdG9yKSB7XG4gICAgY2FzZSBcIl5cIjpcbiAgICAgIHJldHVybiBoYW5kbGVDYXJldE9wZXJhdG9yKGdyb3Vwcyk7XG4gICAgY2FzZSBcIn5cIjpcbiAgICBjYXNlIFwifj5cIjpcbiAgICAgIHJldHVybiBoYW5kbGVUaWxkZU9wZXJhdG9yKGdyb3Vwcyk7XG4gICAgY2FzZSBcIjxcIjpcbiAgICAgIHJldHVybiBoYW5kbGVMZXNzVGhhbk9wZXJhdG9yKGdyb3Vwcyk7XG4gICAgY2FzZSBcIjw9XCI6XG4gICAgICByZXR1cm4gaGFuZGxlTGVzc1RoYW5PckVxdWFsT3BlcmF0b3IoZ3JvdXBzKTtcbiAgICBjYXNlIFwiPlwiOlxuICAgICAgcmV0dXJuIGhhbmRsZUdyZWF0ZXJUaGFuT3BlcmF0b3IoZ3JvdXBzKTtcbiAgICBjYXNlIFwiPj1cIjpcbiAgICAgIHJldHVybiBoYW5kbGVHcmVhdGVyT3JFcXVhbE9wZXJhdG9yKGdyb3Vwcyk7XG4gICAgY2FzZSBcIj1cIjpcbiAgICBjYXNlIFwiXCI6XG4gICAgICByZXR1cm4gaGFuZGxlRXF1YWxPcGVyYXRvcihncm91cHMpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2dyb3Vwcy5vcGVyYXRvcn0nIGlzIG5vdCBhIHZhbGlkIG9wZXJhdG9yLmApO1xuICB9XG59XG5mdW5jdGlvbiBwYXJzZU9wZXJhdG9yUmFuZ2VzKHN0cmluZzogc3RyaW5nKTogQ29tcGFyYXRvcltdIHtcbiAgcmV0dXJuIHN0cmluZy5zcGxpdCgvXFxzKy8pLmZsYXRNYXAocGFyc2VPcGVyYXRvclJhbmdlKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSByYW5nZSBzdHJpbmcgaW50byBhIFJhbmdlIG9iamVjdCBvciB0aHJvd3MgYSBUeXBlRXJyb3IuXG4gKiBAcGFyYW0gcmFuZ2UgVGhlIHJhbmdlIHNldCBzdHJpbmdcbiAqIEByZXR1cm5zIEEgdmFsaWQgc2VtYW50aWMgcmFuZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmFuZ2UocmFuZ2U6IHN0cmluZyk6IFJhbmdlIHtcbiAgcmV0dXJuIHJhbmdlXG4gICAgLy8gcmVtb3ZlIHNwYWNlcyBiZXR3ZWVuIG9wZXJhdG9ycyBhbmQgdmVyc2lvbnNcbiAgICAucmVwbGFjZUFsbCgvKD88PTx8Pnw9KSArL2csIFwiXCIpXG4gICAgLnNwbGl0KC9cXHMqXFx8XFx8XFxzKi8pXG4gICAgLm1hcCgoc3RyaW5nKSA9PiBwYXJzZUh5cGhlblJhbmdlKHN0cmluZykgfHwgcGFyc2VPcGVyYXRvclJhbmdlcyhzdHJpbmcpKTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuaW1wb3J0IHR5cGUgeyBTZW1WZXIgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuaW1wb3J0IHsgcGFyc2VCdWlsZCwgcGFyc2VOdW1iZXIsIHBhcnNlUHJlcmVsZWFzZSB9IGZyb20gXCIuL19zaGFyZWQudHNcIjtcbmltcG9ydCB7IEZVTExfUkVHRVhQLCBNQVhfTEVOR1RIIH0gZnJvbSBcIi4vX3NoYXJlZC50c1wiO1xuXG4vKipcbiAqIEF0dGVtcHQgdG8gcGFyc2UgYSBzdHJpbmcgYXMgYSBzZW1hbnRpYyB2ZXJzaW9uLCByZXR1cm5pbmcgZWl0aGVyIGEgYFNlbVZlcmBcbiAqIG9iamVjdCBvciB0aHJvd3MgYSBUeXBlRXJyb3IuXG4gKiBAcGFyYW0gdmVyc2lvbiBUaGUgdmVyc2lvbiBzdHJpbmcgdG8gcGFyc2VcbiAqIEByZXR1cm5zIEEgdmFsaWQgU2VtVmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZSh2ZXJzaW9uOiBzdHJpbmcpOiBTZW1WZXIge1xuICBpZiAodHlwZW9mIHZlcnNpb24gIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYHZlcnNpb24gbXVzdCBiZSBhIHN0cmluZ2AsXG4gICAgKTtcbiAgfVxuXG4gIGlmICh2ZXJzaW9uLmxlbmd0aCA+IE1BWF9MRU5HVEgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYHZlcnNpb24gaXMgbG9uZ2VyIHRoYW4gJHtNQVhfTEVOR1RIfSBjaGFyYWN0ZXJzYCxcbiAgICApO1xuICB9XG5cbiAgdmVyc2lvbiA9IHZlcnNpb24udHJpbSgpO1xuXG4gIGNvbnN0IGdyb3VwcyA9IHZlcnNpb24ubWF0Y2goRlVMTF9SRUdFWFApPy5ncm91cHM7XG4gIGlmICghZ3JvdXBzKSB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIFZlcnNpb246ICR7dmVyc2lvbn1gKTtcblxuICBjb25zdCBtYWpvciA9IHBhcnNlTnVtYmVyKGdyb3Vwcy5tYWpvciEsIFwiSW52YWxpZCBtYWpvciB2ZXJzaW9uXCIpO1xuICBjb25zdCBtaW5vciA9IHBhcnNlTnVtYmVyKGdyb3Vwcy5taW5vciEsIFwiSW52YWxpZCBtaW5vciB2ZXJzaW9uXCIpO1xuICBjb25zdCBwYXRjaCA9IHBhcnNlTnVtYmVyKGdyb3Vwcy5wYXRjaCEsIFwiSW52YWxpZCBwYXRjaCB2ZXJzaW9uXCIpO1xuXG4gIGNvbnN0IHByZXJlbGVhc2UgPSBncm91cHMucHJlcmVsZWFzZVxuICAgID8gcGFyc2VQcmVyZWxlYXNlKGdyb3Vwcy5wcmVyZWxlYXNlKVxuICAgIDogW107XG4gIGNvbnN0IGJ1aWxkID0gZ3JvdXBzLmJ1aWxkbWV0YWRhdGEgPyBwYXJzZUJ1aWxkKGdyb3Vwcy5idWlsZG1ldGFkYXRhKSA6IFtdO1xuXG4gIHJldHVybiB7XG4gICAgbWFqb3IsXG4gICAgbWlub3IsXG4gICAgcGF0Y2gsXG4gICAgcHJlcmVsZWFzZSxcbiAgICBidWlsZCxcbiAgfTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgdHlwZSB7IFJhbmdlIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IHBhcnNlUmFuZ2UgfSBmcm9tIFwiLi9wYXJzZV9yYW5nZS50c1wiO1xuXG4vKipcbiAqIEEgdHJpZXMgdG8gcGFyc2UgYSB2YWxpZCBSYW5nZSBzdHJpbmcgb3IgcmV0dXJucyB1bmRlZmluZWRcbiAqIEBwYXJhbSByYW5nZSBUaGUgcmFuZ2Ugc3RyaW5nXG4gKiBAcmV0dXJucyBBIFJhbmdlIG9iamVjdCBpZiB2YWxpZCBvdGhlcndpc2UgYHVuZGVmaW5lZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyeVBhcnNlUmFuZ2UoXG4gIHJhbmdlOiBzdHJpbmcsXG4pOiBSYW5nZSB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgLy8gUmV0dXJuICcqJyBpbnN0ZWFkIG9mICcnIHNvIHRoYXQgdHJ1dGhpbmVzcyB3b3Jrcy5cbiAgICAvLyBUaGlzIHdpbGwgdGhyb3cgaWYgaXQncyBpbnZhbGlkIGFueXdheVxuICAgIHJldHVybiBwYXJzZVJhbmdlKHJhbmdlKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5pbXBvcnQgdHlwZSB7IFNlbVZlciB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCIuL3BhcnNlLnRzXCI7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGFyc2VkIHZlcnNpb24sIG9yIHVuZGVmaW5lZCBpZiBpdCdzIG5vdCB2YWxpZC5cbiAqIEBwYXJhbSB2ZXJzaW9uIFRoZSB2ZXJzaW9uIHN0cmluZyB0byBwYXJzZVxuICogQHJldHVybnMgQSB2YWxpZCBTZW1WZXIgb3IgYHVuZGVmaW5lZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyeVBhcnNlKHZlcnNpb24/OiBzdHJpbmcpOiBTZW1WZXIgfCB1bmRlZmluZWQge1xuICBpZiAodmVyc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBwYXJzZSh2ZXJzaW9uKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZUVyciwgY3JlYXRlT2ssIFJlc3VsdCB9IGZyb20gXCIuL2RlcHMvb3B0aW9uLXQudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrRXJyb3Ige1xuICBuYW1lOiBcIk5ldHdvcmtFcnJvclwiO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHJlcXVlc3Q6IFJlcXVlc3Q7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFib3J0RXJyb3Ige1xuICBuYW1lOiBcIkFib3J0RXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICByZXF1ZXN0OiBSZXF1ZXN0O1xufVxuZXhwb3J0IGludGVyZmFjZSBIVFRQRXJyb3Ige1xuICBuYW1lOiBcIkhUVFBFcnJvclwiO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHJlc3BvbnNlOiBSZXNwb25zZTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIHJvYnVzdCBmZXRjaCBvcGVyYXRpb24uXG4gKlxuICogQHBhcmFtIHJlcSAtIFRoZSByZXF1ZXN0IHRvIGJlIGZldGNoZWQuXG4gKiBAcGFyYW0gY2FjaGVGaXJzdCAtIE9wdGlvbmFsIHBhcmFtZXRlciBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gcHJpb3JpdGl6ZSBjYWNoZSBvdmVyIG5ldHdvcmsuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgdHVwbGUgY29udGFpbmluZyB0aGUgcmVzcG9uc2UgYW5kIGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSByZXNwb25zZSB3YXMgcmV0cmlldmVkIGZyb20gY2FjaGUuXG4gKi9cbi8qKlxuICogUmVwcmVzZW50cyBhIGZ1bmN0aW9uIHRoYXQgbWFrZXMgYSByb2J1c3QgSFRUUCByZXF1ZXN0LlxuICpcbiAqIC0gSWYgdGhlIHJlcXVlc3QgaXMgc3VjY2Vzc2Z1bCwgcmV0dXJucyBhIGBSZXN1bHRgIG9iamVjdCB3aXRoIHRoZSBzdWNjZXNzZnVsIHJlc3BvbnNlIGFuZCBhbiBlcnJvciBmbGFnIHNldCB0byBmYWxzZS5cbiAqIC0gSWYgdGhlIHJlcXVlc3QgZmFpbHMgZHVlIHRvIGEgbmV0d29yayBlcnJvciwgcmV0dXJucyBhIGBSZXN1bHRgIG9iamVjdCB3aXRoIGEge0BsaW5rIE5ldHdvcmtFcnJvcn0uXG4gKiAtIElmIHRoZSByZXF1ZXN0IGlzIGFib3J0ZWQsIHJldHVybnMgYSBgUmVzdWx0YCBvYmplY3Qgd2l0aCBhbiB7QGxpbmsgQWJvcnRFcnJvcn0uXG4gKiAtIElmIHRoZSByZXF1ZXN0IGZhaWxzIGR1ZSB0byBhbiBIVFRQIGVycm9yIHN0YXR1cywgcmV0dXJucyBhIGBSZXN1bHRgIG9iamVjdCB3aXRoIGFuIHtAbGluayBIVFRQRXJyb3J9LlxuICpcbiAqIEBwYXJhbSByZXF1ZXN0IC0gVGhlIHJlcXVlc3QgdG8gYmUgc2VudC5cbiAqIEBwYXJhbSBjYWNoZUZpcnN0IC0gT3B0aW9uYWwgcGFyYW1ldGVyIGluZGljYXRpbmcgd2hldGhlciB0byBwcmlvcml0aXplIGNhY2hlIG92ZXIgbmV0d29yay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBgcmVzdWx0YCBvYmplY3QsIHdoaWNrIGNvbnRhaW5zIGVpdGhlciBhIHR1cGxlIGNvbnRhaW5pbmcgYSBzdWNjZXNzZnVsIHJlc3BvbnNlIGFuZCBhIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgcmVzcG9uc2Ugd2FzIHJldHJpZXZlZCBmcm9tIGNhY2hlLCBvciBhbiBlcnJvci5cbiAqL1xuZXhwb3J0IHR5cGUgUm9idXN0RmV0Y2ggPSAoXG4gIHJlcTogUmVxdWVzdCxcbiAgY2FjaGVGaXJzdD86IGJvb2xlYW4sXG4pID0+IFByb21pc2U8XG4gIFJlc3VsdDxbUmVzcG9uc2UsIGJvb2xlYW5dLCBOZXR3b3JrRXJyb3IgfCBBYm9ydEVycm9yIHwgSFRUUEVycm9yPlxuPjtcblxuLyoqXG4gKiBUaGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIGEge0BsaW5rIFJvYnVzdEZldGNofSBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gcmVxdWVzdCAtIFRoZSByZXF1ZXN0IHRvIGJlIHNlbnQuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGByZXN1bHRgIG9iamVjdCwgd2hpY2sgY29udGFpbnMgZWl0aGVyIGEgdHVwbGUgY29udGFpbmluZyBhIHN1Y2Nlc3NmdWwgcmVzcG9uc2UgYW5kIGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSByZXNwb25zZSB3YXMgcmV0cmlldmVkIGZyb20gY2FjaGUsIG9yIGFuIGVycm9yLlxuICovXG5leHBvcnQgY29uc3Qgcm9idXN0RmV0Y2g6IFJvYnVzdEZldGNoID0gYXN5bmMgKHJlcXVlc3QpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChyZXF1ZXN0KTtcbiAgICByZXR1cm4gcmVzLm9rID8gY3JlYXRlT2soW3JlcywgZmFsc2VdKSA6IGNyZWF0ZUVycih7XG4gICAgICBuYW1lOiBcIkhUVFBFcnJvclwiLFxuICAgICAgbWVzc2FnZTogYCR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH1gLFxuICAgICAgcmVzcG9uc2U6IHJlcyxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgIGlmIChlIGluc3RhbmNlb2YgVHlwZUVycm9yKSB7XG4gICAgICByZXR1cm4gY3JlYXRlRXJyKHtcbiAgICAgICAgbmFtZTogXCJOZXR3b3JrRXJyb3JcIixcbiAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChlIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uKSB7XG4gICAgICByZXR1cm4gY3JlYXRlRXJyKHtcbiAgICAgICAgbmFtZTogXCJBYm9ydEVycm9yXCIsXG4gICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG59O1xuIiwgImltcG9ydCB7IG1hcEFzeW5jRm9yUmVzdWx0LCBSZXN1bHQgfSBmcm9tIFwiLi9kZXBzL29wdGlvbi10LnRzXCI7XG5pbXBvcnQge1xuICBBYm9ydEVycm9yLFxuICBIVFRQRXJyb3IsXG4gIE5ldHdvcmtFcnJvcixcbiAgUm9idXN0RmV0Y2gsXG4gIHJvYnVzdEZldGNoLFxufSBmcm9tIFwiLi9yb2J1c3RGZXRjaC50c1wiO1xuXG4vLyBjZi4gaHR0cHM6Ly9naXRodWIuY29tL2pzci1pby9qc3IvYmxvYi9jMmE4YjY2NDQ5YTdhODI5MGIyNDlkZmE3MTQ0NjhjZTc1ZDgzYTg4L2FwaS9zcmMvbWV0YWRhdGEucnMjTDM4LUw2NFxuZXhwb3J0IGludGVyZmFjZSBKc3JQYWNrYWdlTWV0YWRhdGEge1xuICBzY29wZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhdGVzdD86IHN0cmluZztcbiAgdmVyc2lvbnM6IFJlY29yZDxzdHJpbmcsIHsgeWFua2VkPzogdHJ1ZSB9Pjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgR2V0SnNyUGFja2FnZU1ldGFkYXRhT3B0aW9ucyB7XG4gIGVuZHBvaW50Pzogc3RyaW5nO1xuICBmZXRjaD86IFJvYnVzdEZldGNoO1xuICBjYWNoZUZpcnN0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IEpTUl9SRUdJU1RPUllfRU5EUE9JTlQgPSBcImh0dHBzOi8vanNyLmlvXCI7XG5cbi8qKiBHZXQgaHR0cHM6Ly9qc3IuaW8ve3Njb3BlfS97bmFtZX0vbWV0YS5qc29uXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL2pzci5pby9kb2NzL2FwaSNwYWNrYWdlLW1ldGFkYXRhXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRKc3JQYWNrYWdlTWV0YWRhdGEgPSBhc3luYyAoXG4gIG5hbWU6IHN0cmluZyxcbiAgb3B0aW9ucz86IEdldEpzclBhY2thZ2VNZXRhZGF0YU9wdGlvbnMsXG4pOiBQcm9taXNlPFxuICBSZXN1bHQ8SnNyUGFja2FnZU1ldGFkYXRhLCBOZXR3b3JrRXJyb3IgfCBBYm9ydEVycm9yIHwgSFRUUEVycm9yPlxuPiA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IChvcHRpb25zPy5mZXRjaCA/PyByb2J1c3RGZXRjaCkoXG4gICAgbmV3IFJlcXVlc3QoXG4gICAgICBgJHtvcHRpb25zPy5lbmRwb2ludCA/PyBKU1JfUkVHSVNUT1JZX0VORFBPSU5UfS8ke25hbWV9L21ldGEuanNvbmAsXG4gICAgKSxcbiAgICBvcHRpb25zPy5jYWNoZUZpcnN0LFxuICApO1xuICByZXR1cm4gbWFwQXN5bmNGb3JSZXN1bHQoXG4gICAgcmVzdWx0LFxuICAgIChbcmVzXSkgPT4gcmVzLmpzb24oKSBhcyBQcm9taXNlPEpzclBhY2thZ2VNZXRhZGF0YT4sXG4gICk7XG59O1xuIiwgImltcG9ydCB7IG1hcEFzeW5jRm9yUmVzdWx0LCBSZXN1bHQgfSBmcm9tIFwiLi9kZXBzL29wdGlvbi10LnRzXCI7XG5pbXBvcnQge1xuICBHZXRKc3JQYWNrYWdlTWV0YWRhdGFPcHRpb25zLFxuICBKU1JfUkVHSVNUT1JZX0VORFBPSU5ULFxufSBmcm9tIFwiLi9nZXRKc3JQYWNrYWdlTWV0YWRhdGEudHNcIjtcbmltcG9ydCB7XG4gIEFib3J0RXJyb3IsXG4gIEhUVFBFcnJvcixcbiAgTmV0d29ya0Vycm9yLFxuICByb2J1c3RGZXRjaCxcbn0gZnJvbSBcIi4vcm9idXN0RmV0Y2gudHNcIjtcblxuLy8gY2YuIGh0dHBzOi8vZ2l0aHViLmNvbS9qc3ItaW8vanNyL2Jsb2IvYzJhOGI2NjQ0OWE3YTgyOTBiMjQ5ZGZhNzE0NDY4Y2U3NWQ4M2E4OC9hcGkvc3JjL21ldGFkYXRhLnJzI0w3My1MMTE2XG5leHBvcnQgaW50ZXJmYWNlIEpzclBhY2thZ2VWZXJzaW9uTWV0YWRhdGEge1xuICBtYW5pZmVzdDogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RFbnRyeT47XG4gIG1vZHVsZUdyYXBoMT86IFJlY29yZDxzdHJpbmcsIHsgeWFua2VkPzogdHJ1ZSB9PjtcbiAgbW9kdWxlR3JhcGgyPzogUmVjb3JkPHN0cmluZywgeyB5YW5rZWQ/OiB0cnVlIH0+O1xuICBleHBvcnRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vLyBjZi4gaHR0cHM6Ly9naXRodWIuY29tL2pzci1pby9qc3IvYmxvYi9jMmE4YjY2NDQ5YTdhODI5MGIyNDlkZmE3MTQ0NjhjZTc1ZDgzYTg4L2FwaS9zcmMvbWV0YWRhdGEucnMjTDExOC1MMTIyXG5leHBvcnQgaW50ZXJmYWNlIE1hbmlmZXN0RW50cnkge1xuICBzaXplOiBudW1iZXI7XG4gIGNoZWNrc3VtOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEdldEpzclBhY2thZ2VWZXJzaW9uTWV0YWRhdGFPcHRpb25zXG4gIGV4dGVuZHMgR2V0SnNyUGFja2FnZU1ldGFkYXRhT3B0aW9ucyB7fVxuXG4vKiogR2V0IGh0dHBzOi8vanNyLmlvL3tzY29wZX0ve25hbWV9L3t2ZXJzaW9ufV9tZXRhLmpzb25cbiAqXG4gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vanNyLmlvL2RvY3MvYXBpI3BhY2thZ2UtdmVyc2lvbi1tZXRhZGF0YVxuICovXG5leHBvcnQgY29uc3QgZ2V0SnNyUGFja2FnZVZlcnNpb25NZXRhZGF0YSA9IGFzeW5jIChcbiAgbmFtZTogc3RyaW5nLFxuICB2ZXJzaW9uOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBHZXRKc3JQYWNrYWdlVmVyc2lvbk1ldGFkYXRhT3B0aW9ucyxcbik6IFByb21pc2U8XG4gIFJlc3VsdDxKc3JQYWNrYWdlVmVyc2lvbk1ldGFkYXRhLCBOZXR3b3JrRXJyb3IgfCBBYm9ydEVycm9yIHwgSFRUUEVycm9yPlxuPiA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IChvcHRpb25zPy5mZXRjaCA/PyByb2J1c3RGZXRjaCkoXG4gICAgbmV3IFJlcXVlc3QoXG4gICAgICBgJHtcbiAgICAgICAgb3B0aW9ucz8uZW5kcG9pbnQgPz8gSlNSX1JFR0lTVE9SWV9FTkRQT0lOVFxuICAgICAgfS8ke25hbWV9LyR7dmVyc2lvbn1fbWV0YS5qc29uYCxcbiAgICApLFxuICAgIG9wdGlvbnM/LmNhY2hlRmlyc3QsXG4gICk7XG4gIHJldHVybiBtYXBBc3luY0ZvclJlc3VsdChcbiAgICByZXN1bHQsXG4gICAgKFtyZXNdKSA9PiByZXMuanNvbigpIGFzIFByb21pc2U8SnNyUGFja2FnZVZlcnNpb25NZXRhZGF0YT4sXG4gICk7XG59O1xuIiwgImltcG9ydCB7IG1hcEFzeW5jRm9yUmVzdWx0LCBSZXN1bHQgfSBmcm9tIFwiLi9kZXBzL29wdGlvbi10LnRzXCI7XG5pbXBvcnQge1xuICBBYm9ydEVycm9yLFxuICBIVFRQRXJyb3IsXG4gIE5ldHdvcmtFcnJvcixcbiAgUm9idXN0RmV0Y2gsXG4gIHJvYnVzdEZldGNoLFxufSBmcm9tIFwiLi9yb2J1c3RGZXRjaC50c1wiO1xuXG4vKiogUmVwcmVzZW50cyB0aGUgbWV0YWRhdGEgb2YgYW4gTlBNIHBhY2thZ2UgaW4gYWJicmV2aWF0ZWQgZm9ybVxuICpcbiAqIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbnBtL3JlZ2lzdHJ5L2Jsb2IvYzE2NGMxZGRkZDkxMzdiYTJkMGEyNjUxNTlmYjk5NmIzZmEyNGVkNi9kb2NzL3Jlc3BvbnNlcy9wYWNrYWdlLW1ldGFkYXRhLm1kI2FiYnJldmlhdGVkLW1ldGFkYXRhLWZvcm1hdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5wbVBhY2thZ2VNZXRhZGF0YSB7XG4gIC8qKiB0aGUgcGFja2FnZSBuYW1lICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKiogYSBtYXBwaW5nIG9mIGRpc3QgdGFncyB0byB0aGUgdmVyc2lvbnMgdGhleSBwb2ludCB0byAqL1xuICBcImRpc3QtdGFnc1wiOiBEaXN0VGFncztcblxuICAvKiogSVNPIHN0cmluZyBvZiB0aGUgbGFzdCB0aW1lIHRoaXMgcGFja2FnZSB3YXMgbW9kaWZpZWQgKi9cbiAgbW9kaWZpZWQ6IG51bWJlcjtcblxuICAvKiogYSBtYXBwaW5nIG9mIHZlcnNpb24gbnVtYmVycyB0byBvYmplY3RzIGNvbnRhaW5pbmcgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBpbnN0YWxsIHRoYXQgdmVyc2lvbiAqL1xuICB2ZXJzaW9uczogUmVjb3JkPHN0cmluZywgQWJicmV2aWF0ZWRWZXJzaW9uT2JqZWN0Pjtcbn1cblxuLyoqIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gaW5zdGFsbCB0aGF0IHZlcnNpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJicmV2aWF0ZWRWZXJzaW9uT2JqZWN0IHtcbiAgLyoqIHRoZSBwYWNrYWdlIG5hbWUgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKiB0aGUgdmVyc2lvbiBzdHJpbmcgZm9yIHRoaXMgdmVyc2lvbiAqL1xuICB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqIHRoZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBtZXNzYWdlIG9mIHRoaXMgdmVyc2lvbiAqL1xuICBkZXByZWNhdGVkPzogc3RyaW5nO1xuXG4gIC8qKiBhIG1hcHBpbmcgb2Ygb3RoZXIgcGFja2FnZXMgdGhpcyB2ZXJzaW9uIGRlcGVuZHMgb24gdG8gdGhlIHJlcXVpcmVkIHNlbXZlciByYW5nZXMgKi9cbiAgZGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKiogYW4gb2JqZWN0IG1hcHBpbmcgcGFja2FnZSBuYW1lcyB0byB0aGUgcmVxdWlyZWQgc2VtdmVyIHJhbmdlcyBvZiBvcHRpb25hbCBkZXBlbmRlbmNpZXMgKi9cbiAgb3B0aW9uYWxEZXBlbmRlbmNpZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKiBhIG1hcHBpbmcgb2YgcGFja2FnZSBuYW1lcyB0byB0aGUgcmVxdWlyZWQgc2VtdmVyIHJhbmdlcyBvZiBkZXZlbG9wbWVudCBkZXBlbmRlbmNpZXMgKi9cbiAgZGV2RGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKiogYW4gYXJyYXkgb2YgZGVwZW5kZW5jaWVzIGJ1bmRsZWQgd2l0aCB0aGlzIHZlcnNpb24gKi9cbiAgYnVuZGxlRGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgLyoqIGEgbWFwcGluZyBvZiBwYWNrYWdlIG5hbWVzIHRvIHRoZSByZXF1aXJlZCBzZW12ZXIgcmFuZ2VzIG9mIHBlZXIgZGVwZW5kZW5jaWVzICovXG4gIHBlZXJEZXBlbmRlbmNpZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKiBhIG1hcHBpbmcgb2YgcGVlciBwYWNrYWdlIG5hbWVzIHRvIGFkZGl0aW9uYWwgbWV0YSBpbmZvcm1hdGlvbiBmb3IgdGhvc2UgcGVlcnMgKi9cbiAgcGVlckRlcGVuZGVuY2llc01ldGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKiBhIG1hcHBpbmcgb2YgYmluIGNvbW1hbmRzIHRvIHNldCB1cCBmb3IgdGhpcyB2ZXJzaW9uICovXG4gIGJpbj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgZXhwb3J0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIC8qKiBhbiBhcnJheSBvZiBkaXJlY3RvcmllcyBpbmNsdWRlZCBieSB0aGlzIHZlcnNpb24gKi9cbiAgZGlyZWN0b3JpZXM/OiBzdHJpbmdbXTtcblxuICAvKiogYSBkaXN0IG9iamVjdCAqL1xuICBkaXN0OiBEaXN0O1xuXG4gIC8qKiB0aGUgbm9kZSBlbmdpbmVzIHJlcXVpcmVkIGZvciB0aGlzIHZlcnNpb24gdG8gcnVuLCBpZiBzcGVjaWZpZWQgKi9cbiAgZW5naW5lcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqIC0gYHRydWVgIGlmIHRoaXMgdmVyc2lvbiBpcyBrbm93biB0byBoYXZlIGEgc2hyaW5rd3JhcCB0aGF0IG11c3QgYmUgdXNlZCB0byBpbnN0YWxsIGl0O1xuICAgKiAtIGBmYWxzZWAgaWYgdGhpcyB2ZXJzaW9uIGlzIGtub3duIG5vdCB0byBoYXZlIGEgc2hyaW5rd3JhcC5cbiAgICogLSBJZiB0aGlzIGZpZWxkIGlzIGB1bmRlZmluZWRgLCB0aGUgY2xpZW50IG11c3QgZGV0ZXJtaW5lIHRocm91Z2ggb3RoZXIgbWVhbnMgaWYgYSBzaHJpbmt3cmFwIGV4aXN0cy5cbiAgICovXG4gIF9oYXNTaHJpbmt3cmFwPzogYm9vbGVhbjtcbiAgLyoqIGB0cnVlYCBpZiB0aGlzIHZlcnNpb24gaGFzIHRoZSBpbnN0YWxsIHNjcmlwdHMuICovXG4gIGhhc0luc3RhbGxTY3JpcHQ/OiBib29sZWFuO1xuXG4gIC8qKiBhbiBhcnJheSBvZiBDUFUgYXJjaGl0ZWN0dXJlcyBzdXBwb3J0ZWQgYnkgdGhlIHBhY2thZ2UgKi9cbiAgY3B1Pzogc3RyaW5nW107XG5cbiAgLyoqIGFuIGFycmF5IG9mIG9wZXJhdGluZyBzeXN0ZW1zIHN1cHBvcnRlZCBieSB0aGUgcGFja2FnZSAqL1xuICBvcz86IHN0cmluZ1tdO1xufVxuXG4vKiogQSBtYXBwaW5nIG9mIGRpc3QgdGFncyB0byB0aGUgdmVyc2lvbnMgdGhleSBwb2ludCB0by4gKi9cbmV4cG9ydCB0eXBlIERpc3RUYWdzID0gUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiAmIHsgbGF0ZXN0OiBzdHJpbmcgfTtcblxuLyoqIFRoZSBkaXN0IG9iamVjdCBpcyBnZW5lcmF0ZWQgYnkgbnBtIGFuZCBtYXkgYmUgcmVsaWVkIHVwb24uICovXG5leHBvcnQgaW50ZXJmYWNlIERpc3Qge1xuICAvKiogdGhlIHVybCBvZiB0aGUgdGFyYmFsbCBjb250YWluaW5nIHRoZSBwYXlsb2FkIGZvciB0aGlzIHBhY2thZ2UgKi9cbiAgdGFyYmFsbDogc3RyaW5nO1xuXG4gIC8qKiB0aGUgU0hBLTEgc3VtIG9mIHRoZSB0YXJiYWxsICovXG4gIHNoYXN1bTogc3RyaW5nO1xuXG4gIC8qKiBzaW5jZSBBcHIgMjAxNywgc3RyaW5nIGluIHRoZSBmb3JtYXQgYDxoYXNoQWxnb3JpdGhtPi08YmFzZTY0LWhhc2g+YCwgcmVmZXIgdGhlIFtTdWJyZXNvdXJjZSBJbnRlZ3JpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1N1YnJlc291cmNlX0ludGVncml0eSkgYW5kIFtjYWNhY2hlXShodHRwczovL2dpdGh1Yi5jb20vbnBtL2NhY2FjaGUjaW50ZWdyaXR5KSBwYWNrYWdlIGZvciBtb3JlICovXG4gIGludGVncml0eT86IHN0cmluZztcblxuICAvKiogc2luY2UgRmViIDIwMTgsIHRoZSBudW1iZXIgb2YgZmlsZXMgaW4gdGhlIHRhcmJhbGwsIGZvbGRlciBleGNsdWRlZCAqL1xuICBmaWxlQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqIHNpbmNlIEZlYiAyMDE4LCB0aGUgdG90YWwgYnl0ZSBvZiB0aGUgdW5wYWNrZWQgZmlsZXMgaW4gdGhlIHRhcmJhbGwgKi9cbiAgdW5wYWNrZWRTaXplPzogbnVtYmVyO1xuXG4gIC8qKiBzaW5jZSBBcHIgMjAxOCwgYSBQR1Agc2lnbmF0dXJlIG9mIGA8cGFja2FnZT5APHZlcnNpb24+OjxpbnRlZ3JpdHk+YCwgcmVmZXIgdGhlIG5wbSBbYmxvZ10oaHR0cHM6Ly9ibG9nLm5wbWpzLm9yZy9wb3N0LzE3Mjk5OTU0ODM5MC9uZXctcGdwLW1hY2hpbmVyeSkgYW5kIFtkb2NdKGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vYWJvdXQtcGdwLXNpZ25hdHVyZXMtZm9yLXBhY2thZ2VzLWluLXRoZS1wdWJsaWMtcmVnaXN0cnkpIGZvciBtb3JlICovXG4gIFwibnBtLXNpZ25hdHVyZVwiPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldE5wbVBhY2thZ2VNZXRhZGF0YU9wdGlvbnMge1xuICBlbmRwb2ludD86IHN0cmluZztcbiAgZmV0Y2g/OiBSb2J1c3RGZXRjaDtcbiAgY2FjaGVGaXJzdD86IGJvb2xlYW47XG59XG5cbi8qKiBydW4gYGh0dHBzOi8vcmVnaXN0b3J5Lm5wbWpzLm9yZy97cGFja2FnZX1gIHRvIGdldCB0aGUgcGFja2FnZSBtZXRhZGF0YVxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL25wbS9yZWdpc3RyeS9ibG9iL2MxNjRjMWRkZGQ5MTM3YmEyZDBhMjY1MTU5ZmI5OTZiM2ZhMjRlZDYvZG9jcy9SRUdJU1RSWS1BUEkubWQjZ2V0cGFja2FnZVxuICovXG5leHBvcnQgY29uc3QgZ2V0TnBtUGFja2FnZU1ldGFkYXRhID0gYXN5bmMgKFxuICBuYW1lOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBHZXROcG1QYWNrYWdlTWV0YWRhdGFPcHRpb25zLFxuKTogUHJvbWlzZTxcbiAgUmVzdWx0PE5wbVBhY2thZ2VNZXRhZGF0YSwgTmV0d29ya0Vycm9yIHwgQWJvcnRFcnJvciB8IEhUVFBFcnJvcj5cbj4gPT4ge1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCAob3B0aW9ucz8uZmV0Y2ggPz8gcm9idXN0RmV0Y2gpKFxuICAgIG5ldyBSZXF1ZXN0KFxuICAgICAgYCR7b3B0aW9ucz8uZW5kcG9pbnQgPz8gXCJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZ1wifS8ke25hbWV9YCxcbiAgICApLFxuICAgIG9wdGlvbnM/LmNhY2hlRmlyc3QsXG4gICk7XG4gIHJldHVybiBtYXBBc3luY0ZvclJlc3VsdChcbiAgICByZXN1bHQsXG4gICAgKFtyZXNdKSA9PiByZXMuanNvbigpIGFzIFByb21pc2U8TnBtUGFja2FnZU1ldGFkYXRhPixcbiAgKTtcbn07XG4iLCAiaW1wb3J0IHtcbiAgY3JlYXRlRXJyLFxuICBjcmVhdGVPayxcbiAgaXNFcnIsXG4gIFJlc3VsdCxcbiAgdW53cmFwT2ssXG59IGZyb20gXCIuL2RlcHMvb3B0aW9uLXQudHNcIjtcbmltcG9ydCB7XG4gIGZvcm1hdCxcbiAgbWF4U2F0aXNmeWluZyxcbiAgUmFuZ2UsXG4gIFNlbVZlcixcbiAgdHJ5UGFyc2UsXG59IGZyb20gXCIuL2RlcHMvc2VtdmVyLnRzXCI7XG5pbXBvcnQgeyBnZXRKc3JQYWNrYWdlTWV0YWRhdGEgfSBmcm9tIFwiLi9nZXRKc3JQYWNrYWdlTWV0YWRhdGEudHNcIjtcbmltcG9ydCB7IGdldEpzclBhY2thZ2VWZXJzaW9uTWV0YWRhdGEgfSBmcm9tIFwiLi9nZXRKc3JQYWNrYWdlVmVyc2lvbk1ldGFkYXRhLnRzXCI7XG5pbXBvcnQgeyBnZXROcG1QYWNrYWdlTWV0YWRhdGEgfSBmcm9tIFwiLi9nZXROcG1QYWNrYWdlTWV0YWRhdGEudHNcIjtcbmltcG9ydCB7XG4gIEFib3J0RXJyb3IsXG4gIEhUVFBFcnJvcixcbiAgTmV0d29ya0Vycm9yLFxuICBSb2J1c3RGZXRjaCxcbn0gZnJvbSBcIi4vcm9idXN0RmV0Y2gudHNcIjtcbmltcG9ydCB7IEpzclNwZWNpZmllciwgTnBtU3BlY2lmaWVyIH0gZnJvbSBcIi4vc3BlY2lmaWVycy50c1wiO1xuXG5leHBvcnQgdHlwZSBwYWNrYWdlVmVyc2lvbk1hcHBpbmcgPSBNYXA8XG4gIHN0cmluZyxcbiAgW1NlbVZlciwgUmVjb3JkPHN0cmluZywgc3RyaW5nPl1bXVxuPjtcblxuZXhwb3J0IGludGVyZmFjZSBJbnZhbGlkUGFja2FnZVZlcnNpb25FcnJvciB7XG4gIG5hbWU6IFwiSW52YWxpZFBhY2thZ2VWZXJzaW9uRXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICByYW5nZTogUmFuZ2U7XG4gIHRhZz86IHN0cmluZztcbiAgZW50cnlQb2ludDogXCIuXCIgfCBgLi8ke3N0cmluZ31gO1xuICBhdmFpbGFibGVWZXJzaW9uczogc3RyaW5nW107XG59XG5jb25zdCBpbnZhbGlkUGFja2FnZVZlcnNpb25FcnJvciA9IChcbiAgc3BlY2lmaWVyOiBOcG1TcGVjaWZpZXIsXG4gIGF2YWlsYWJsZVZlcnNpb25zOiBzdHJpbmdbXSxcbik6IEludmFsaWRQYWNrYWdlVmVyc2lvbkVycm9yID0+ICh7XG4gIG5hbWU6IFwiSW52YWxpZFBhY2thZ2VWZXJzaW9uRXJyb3JcIixcbiAgbWVzc2FnZTogYE5vIHZlcnNpb24gb2YgJHtzcGVjaWZpZXIubmFtZX0gc2F0aXNmaWVzIFwiJHtcbiAgICBzcGVjaWZpZXIudGFnID8/IFwiKlwiXG4gIH1cIiAoYXZhaWxhYmxlOiAke2F2YWlsYWJsZVZlcnNpb25zLnNsaWNlKDAsIDEwKS5qb2luKFwiLCBcIil9JHtcbiAgICBhdmFpbGFibGVWZXJzaW9ucy5sZW5ndGggPiAxMFxuICAgICAgPyBgLCAuLi4gKCR7YXZhaWxhYmxlVmVyc2lvbnMubGVuZ3RoIC0gMTB9IG1vcmUgdmVyc2lvbnMpYFxuICAgICAgOiBcIlwiXG4gIH0pYCxcbiAgcGFja2FnZU5hbWU6IHNwZWNpZmllci5uYW1lLFxuICByYW5nZTogc3BlY2lmaWVyLnJhbmdlLFxuICB0YWc6IHNwZWNpZmllci50YWcsXG4gIGVudHJ5UG9pbnQ6IHNwZWNpZmllci5lbnRyeVBvaW50LFxuICBhdmFpbGFibGVWZXJzaW9ucyxcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEludmFsaWRFbnRyeVBvaW50RXJyb3Ige1xuICBuYW1lOiBcIkludmFsaWRFbnRyeVBvaW50RXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICByYW5nZTogUmFuZ2U7XG4gIHRhZz86IHN0cmluZztcbiAgZW50cnlQb2ludDogXCIuXCIgfCBgLi8ke3N0cmluZ31gO1xuICBhdmFpbGFibGVFbnRyeVBvaW50czogc3RyaW5nW107XG59XG5jb25zdCBpbnZhbGlkRW50cnlQb2ludEVycm9yID0gKFxuICBzcGVjaWZpZXI6IE5wbVNwZWNpZmllcixcbiAgYXZhaWxhYmxlRW50cnlQb2ludHM6IHN0cmluZ1tdLFxuKTogSW52YWxpZEVudHJ5UG9pbnRFcnJvciA9PiAoe1xuICBuYW1lOiBcIkludmFsaWRFbnRyeVBvaW50RXJyb3JcIixcbiAgbWVzc2FnZTpcbiAgICBgJHtzcGVjaWZpZXIuZW50cnlQb2ludH0gaXMgbm90IGEgdmFsaWQgZW50cnkgcG9pbnQgZm9yICR7c3BlY2lmaWVyLm5hbWV9QCR7XG4gICAgICBzcGVjaWZpZXIudGFnID8/IFwiKlwiXG4gICAgfSAoYXZhaWxhYmxlOiAke2F2YWlsYWJsZUVudHJ5UG9pbnRzLmpvaW4oXCIsIFwiKX0pYCxcbiAgcGFja2FnZU5hbWU6IHNwZWNpZmllci5uYW1lLFxuICByYW5nZTogc3BlY2lmaWVyLnJhbmdlLFxuICB0YWc6IHNwZWNpZmllci50YWcsXG4gIGVudHJ5UG9pbnQ6IHNwZWNpZmllci5lbnRyeVBvaW50LFxuICBhdmFpbGFibGVFbnRyeVBvaW50cyxcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVTcGVjaWZpZXJPcHRpb25zIHtcbiAgcmVzb2x2ZWRWZXJzaW9ucz86IHBhY2thZ2VWZXJzaW9uTWFwcGluZztcbiAgZmV0Y2g/OiBSb2J1c3RGZXRjaDtcbiAgY2FjaGVGaXJzdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlTnBtU3BlY2lmaWVyID0gYXN5bmMgKFxuICBucG06IE5wbVNwZWNpZmllcixcbiAgb3B0aW9ucz86IFJlc29sdmVTcGVjaWZpZXJPcHRpb25zLFxuKTogUHJvbWlzZTxcbiAgUmVzdWx0PFxuICAgIFVSTCxcbiAgICB8IEludmFsaWRQYWNrYWdlVmVyc2lvbkVycm9yXG4gICAgfCBJbnZhbGlkRW50cnlQb2ludEVycm9yXG4gICAgfCBOZXR3b3JrRXJyb3JcbiAgICB8IEFib3J0RXJyb3JcbiAgICB8IEhUVFBFcnJvclxuICA+XG4+ID0+IHtcbiAgaWYgKG9wdGlvbnM/LnJlc29sdmVkVmVyc2lvbnMpIHtcbiAgICBjb25zdCB2ZXJzaW9ucyA9IG5ldyBNYXAob3B0aW9ucy5yZXNvbHZlZFZlcnNpb25zLmdldChucG0ubmFtZSkgPz8gW10pO1xuICAgIGNvbnN0IHZlcnNpb24gPSBtYXhTYXRpc2Z5aW5nKFsuLi52ZXJzaW9ucy5rZXlzKCldLCBucG0ucmFuZ2UpO1xuICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICBjb25zdCBleHBvcnRzID0gdmVyc2lvbnMuZ2V0KHZlcnNpb24pID8/IGRlZmF1bHRFeHBvcnRzO1xuICAgICAgY29uc3QgcGF0aCA9IGV4cG9ydHNbbnBtLmVudHJ5UG9pbnRdO1xuXG4gICAgICBpZiAodHlwZW9mIHBhdGggIT09IFwic3RyaW5nXCIpIGNvbnNvbGUubG9nKHBhdGgpO1xuICAgICAgcmV0dXJuIHBhdGhcbiAgICAgICAgPyBjcmVhdGVPayh0b0VzbVNoVXJsKG5wbS5uYW1lLCBmb3JtYXQodmVyc2lvbiksIHBhdGgpKVxuICAgICAgICA6IGNyZWF0ZUVycihcbiAgICAgICAgICBpbnZhbGlkRW50cnlQb2ludEVycm9yKG5wbSwgT2JqZWN0LmtleXMoZXhwb3J0cykpLFxuICAgICAgICApO1xuICAgIH1cbiAgfVxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXROcG1QYWNrYWdlTWV0YWRhdGEobnBtLm5hbWUsIG9wdGlvbnMpO1xuICBpZiAoaXNFcnIocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgY29uc3QgbWV0YWRhdGEgPSB1bndyYXBPayhyZXN1bHQpO1xuICBjb25zdCB2ZXJzaW9ucyA9IG5ldyBNYXAoXG4gICAgT2JqZWN0LmVudHJpZXMobWV0YWRhdGEudmVyc2lvbnMpLmZsYXRNYXAoKFt2LCB7IGV4cG9ydHMgfV0pID0+IHtcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB0cnlQYXJzZSh2KTtcbiAgICAgIHJldHVybiB2ZXJzaW9uID8gW1t2ZXJzaW9uLCBleHBvcnRzID8/IGRlZmF1bHRFeHBvcnRzXV0gOiBbXTtcbiAgICB9KSxcbiAgKTtcbiAgY29uc3QgdmVyc2lvbiA9IG1heFNhdGlzZnlpbmcoWy4uLnZlcnNpb25zLmtleXMoKV0sIG5wbS5yYW5nZSk7XG4gIGlmICghdmVyc2lvbikge1xuICAgIHJldHVybiBjcmVhdGVFcnIoXG4gICAgICBpbnZhbGlkUGFja2FnZVZlcnNpb25FcnJvcihucG0sIE9iamVjdC5rZXlzKG1ldGFkYXRhLnZlcnNpb25zKSksXG4gICAgKTtcbiAgfVxuICBjb25zdCBleHBvcnRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyAuLi5kZWZhdWx0RXhwb3J0cyB9O1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2ZXJzaW9ucy5nZXQodmVyc2lvbikgPz8gZGVmYXVsdEV4cG9ydHMpKSB7XG4gICAgZXhwb3J0c1trZXldID0ga2V5O1xuICB9XG4gIGNvbnN0IHBhdGggPSBleHBvcnRzW25wbS5lbnRyeVBvaW50XTtcbiAgaWYgKHBhdGgpIHtcbiAgICBvcHRpb25zPy5yZXNvbHZlZFZlcnNpb25zPy5zZXQobnBtLm5hbWUsIFtcbiAgICAgIC4uLihvcHRpb25zLnJlc29sdmVkVmVyc2lvbnMuZ2V0KG5wbS5uYW1lKSA/PyBbXSksXG4gICAgICBbdmVyc2lvbiwgZXhwb3J0c10sXG4gICAgXSk7XG4gICAgcmV0dXJuIGNyZWF0ZU9rKHRvRXNtU2hVcmwobnBtLm5hbWUsIGZvcm1hdCh2ZXJzaW9uKSwgcGF0aCkpO1xuICB9XG4gIHJldHVybiBjcmVhdGVFcnIoaW52YWxpZEVudHJ5UG9pbnRFcnJvcihucG0sIE9iamVjdC5rZXlzKGV4cG9ydHMpKSk7XG59O1xuXG5jb25zdCB0b0VzbVNoVXJsID0gKG5hbWU6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBVUkwgPT5cbiAgbmV3IFVSTChwYXRoLCBgaHR0cHM6Ly9lc20uc2gvJHtuYW1lfUAke3ZlcnNpb259L2ApO1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUpzclNwZWNpZmllciA9IGFzeW5jIChcbiAganNyOiBKc3JTcGVjaWZpZXIsXG4gIG9wdGlvbnM/OiBSZXNvbHZlU3BlY2lmaWVyT3B0aW9ucyxcbik6IFByb21pc2U8XG4gIFJlc3VsdDxcbiAgICBVUkwsXG4gICAgfCBJbnZhbGlkUGFja2FnZVZlcnNpb25FcnJvclxuICAgIHwgSW52YWxpZEVudHJ5UG9pbnRFcnJvclxuICAgIHwgTmV0d29ya0Vycm9yXG4gICAgfCBBYm9ydEVycm9yXG4gICAgfCBIVFRQRXJyb3JcbiAgPlxuPiA9PiB7XG4gIGlmIChvcHRpb25zPy5yZXNvbHZlZFZlcnNpb25zKSB7XG4gICAgY29uc3QgdmVyc2lvbnMgPSBuZXcgTWFwKG9wdGlvbnMucmVzb2x2ZWRWZXJzaW9ucy5nZXQoanNyLm5hbWUpID8/IFtdKTtcbiAgICBjb25zdCB2ZXJzaW9uID0gbWF4U2F0aXNmeWluZyhbLi4udmVyc2lvbnMua2V5cygpXSwganNyLnJhbmdlKTtcbiAgICBpZiAodmVyc2lvbikge1xuICAgICAgY29uc3QgZXhwb3J0cyA9IHZlcnNpb25zLmdldCh2ZXJzaW9uKSA/PyBkZWZhdWx0RXhwb3J0cztcbiAgICAgIGNvbnN0IHBhdGggPSBleHBvcnRzW2pzci5lbnRyeVBvaW50XTtcbiAgICAgIHJldHVybiBwYXRoXG4gICAgICAgID8gY3JlYXRlT2sodG9Kc3JVcmwoanNyLm5hbWUsIGZvcm1hdCh2ZXJzaW9uKSwgcGF0aCkpXG4gICAgICAgIDogY3JlYXRlRXJyKFxuICAgICAgICAgIGludmFsaWRFbnRyeVBvaW50RXJyb3IoanNyLCBPYmplY3Qua2V5cyhleHBvcnRzKSksXG4gICAgICAgICk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc29sdmVKc3JWZXJzaW9uKGpzciwgb3B0aW9ucyk7XG4gIGlmIChpc0VycihyZXN1bHQpKSByZXR1cm4gcmVzdWx0O1xuICBjb25zdCB2ZXJzaW9uID0gdW53cmFwT2socmVzdWx0KTtcbiAgY29uc3QgcmVzdWx0MiA9IGF3YWl0IGdldEpzclBhY2thZ2VWZXJzaW9uTWV0YWRhdGEoXG4gICAganNyLm5hbWUsXG4gICAgZm9ybWF0KHZlcnNpb24pLFxuICAgIG9wdGlvbnMsXG4gICk7XG4gIGlmIChpc0VycihyZXN1bHQyKSkgcmV0dXJuIHJlc3VsdDI7XG4gIGNvbnN0IGV4cG9ydHMgPSB1bndyYXBPayhyZXN1bHQyKS5leHBvcnRzO1xuICBjb25zdCBwYXRoID0gZXhwb3J0c1tqc3IuZW50cnlQb2ludF07XG4gIGlmIChwYXRoKSB7XG4gICAgb3B0aW9ucz8ucmVzb2x2ZWRWZXJzaW9ucz8uc2V0KGpzci5uYW1lLCBbXG4gICAgICAuLi4ob3B0aW9ucy5yZXNvbHZlZFZlcnNpb25zLmdldChqc3IubmFtZSkgPz8gW10pLFxuICAgICAgW3ZlcnNpb24sIGV4cG9ydHNdLFxuICAgIF0pO1xuXG4gICAgcmV0dXJuIGNyZWF0ZU9rKHRvSnNyVXJsKGpzci5uYW1lLCBmb3JtYXQodmVyc2lvbiksIHBhdGgpKTtcbiAgfVxuICByZXR1cm4gY3JlYXRlRXJyKFxuICAgIGludmFsaWRFbnRyeVBvaW50RXJyb3IoanNyLCBPYmplY3Qua2V5cyh1bndyYXBPayhyZXN1bHQyKS5leHBvcnRzKSksXG4gICk7XG59O1xuXG5jb25zdCB0b0pzclVybCA9IChuYW1lOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgcGF0aDogc3RyaW5nKTogVVJMID0+XG4gIG5ldyBVUkwocGF0aCwgYGh0dHBzOi8vanNyLmlvLyR7bmFtZX0vJHt2ZXJzaW9ufS9gKTtcblxuY29uc3QgcmVzb2x2ZUpzclZlcnNpb24gPSBhc3luYyAoXG4gIGpzcjogSnNyU3BlY2lmaWVyLFxuICBvcHRpb25zPzogUmVzb2x2ZVNwZWNpZmllck9wdGlvbnMsXG4pOiBQcm9taXNlPFxuICBSZXN1bHQ8XG4gICAgU2VtVmVyLFxuICAgIEludmFsaWRQYWNrYWdlVmVyc2lvbkVycm9yIHwgTmV0d29ya0Vycm9yIHwgQWJvcnRFcnJvciB8IEhUVFBFcnJvclxuICA+XG4+ID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0SnNyUGFja2FnZU1ldGFkYXRhKGpzci5uYW1lLCBvcHRpb25zKTtcbiAgaWYgKGlzRXJyKHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gIGNvbnN0IG1ldGFkYXRhID0gdW53cmFwT2socmVzdWx0KTtcbiAgY29uc3QgdmVyc2lvbnMgPSBPYmplY3Qua2V5cyhtZXRhZGF0YS52ZXJzaW9ucykuZmxhdE1hcCgodikgPT4ge1xuICAgIGNvbnN0IHZlcnNpb24gPSB0cnlQYXJzZSh2KTtcbiAgICByZXR1cm4gdmVyc2lvbiA/IFt2ZXJzaW9uXSA6IFtdO1xuICB9KTtcbiAgY29uc3QgdmVyc2lvbiA9IG1heFNhdGlzZnlpbmcodmVyc2lvbnMsIGpzci5yYW5nZSk7XG4gIHJldHVybiB2ZXJzaW9uID8gY3JlYXRlT2sodmVyc2lvbikgOiBjcmVhdGVFcnIoXG4gICAgaW52YWxpZFBhY2thZ2VWZXJzaW9uRXJyb3IoanNyLCBPYmplY3Qua2V5cyhtZXRhZGF0YS52ZXJzaW9ucykpLFxuICApO1xufTtcblxuY29uc3QgZGVmYXVsdEV4cG9ydHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IFwiLlwiOiBcIi4vXCIgfTtcbiIsICIvLyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vbHVjYWNhc29uYXRvL2VzYnVpbGRfZGVub19sb2FkZXIvYmxvYi8wLjEwLjMvc3JjL3NoYXJlZC50c1xuLy8gQ29weXJpZ2h0IDIwMjEgTHVjYSBDYXNvbmF0by4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG5cbmltcG9ydCB7IGNyZWF0ZUVyciwgY3JlYXRlT2ssIFJlc3VsdCB9IGZyb20gXCIuL2RlcHMvb3B0aW9uLXQudHNcIjtcbmltcG9ydCB7IEFMTCwgUmFuZ2UsIHRyeVBhcnNlUmFuZ2UgfSBmcm9tIFwiLi9kZXBzL3NlbXZlci50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5wbVNwZWNpZmllciB7XG4gIG5hbWU6IHN0cmluZztcbiAgcmFuZ2U6IFJhbmdlO1xuICAvKiogcmF3IHZlcnNpb24gc3RyaW5nICovXG4gIHRhZz86IHN0cmluZztcbiAgZW50cnlQb2ludDogXCIuXCIgfCBgLi8ke3N0cmluZ31gO1xufVxuZXhwb3J0IGludGVyZmFjZSBOb3ROcG1Qcm90b2NvbEVycm9yIHtcbiAgbmFtZTogXCJOb3ROcG1Qcm90b2NvbEVycm9yXCI7XG4gIHNwZWNpZmllcjogVVJMO1xufVxuZXhwb3J0IGludGVyZmFjZSBPbmx5U2NvcGVQcm92aWRlZEVycm9yIHtcbiAgbmFtZTogXCJPbmx5U2NvcGVQcm92aWRlZEVycm9yXCI7XG4gIHNwZWNpZmllcjogVVJMO1xufVxuY29uc3Qgb25seVNjb3BlUHJvdmlkZWRFcnJvciA9IChzcGVjaWZpZXI6IFVSTCk6IE9ubHlTY29wZVByb3ZpZGVkRXJyb3IgPT4gKHtcbiAgbmFtZTogXCJPbmx5U2NvcGVQcm92aWRlZEVycm9yXCIsXG4gIHNwZWNpZmllcixcbn0pO1xuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlTm90Rm91bmRFcnJvciB7XG4gIG5hbWU6IFwiUGFja2FnZU5vdEZvdW5kRXJyb3JcIjtcbiAgc3BlY2lmaWVyOiBVUkw7XG59XG5jb25zdCBwYWNrYWdlTm90Rm91bmRFcnJvciA9IChzcGVjaWZpZXI6IFVSTCk6IFBhY2thZ2VOb3RGb3VuZEVycm9yID0+ICh7XG4gIG5hbWU6IFwiUGFja2FnZU5vdEZvdW5kRXJyb3JcIixcbiAgc3BlY2lmaWVyLFxufSk7XG5leHBvcnQgaW50ZXJmYWNlIEludmFsaWROcG1TcGVjaWZpZXJFcnJvciB7XG4gIG5hbWU6IFwiSW52YWxpZE5wbVNwZWNpZmllckVycm9yXCI7XG4gIHNwZWNpZmllcjogVVJMO1xufVxuXG5leHBvcnQgY29uc3QgcGFyc2VOcG1TcGVjaWZpZXIgPSAoXG4gIHNwZWNpZmllcjogVVJMLFxuKTogUmVzdWx0PFxuICBOcG1TcGVjaWZpZXIsXG4gIE5vdE5wbVByb3RvY29sRXJyb3IgfCBPbmx5U2NvcGVQcm92aWRlZEVycm9yIHwgUGFja2FnZU5vdEZvdW5kRXJyb3Jcbj4gPT4ge1xuICBpZiAoc3BlY2lmaWVyLnByb3RvY29sICE9PSBcIm5wbTpcIikge1xuICAgIHJldHVybiBjcmVhdGVFcnIoeyBuYW1lOiBcIk5vdE5wbVByb3RvY29sRXJyb3JcIiwgc3BlY2lmaWVyIH0pO1xuICB9XG4gIGNvbnN0IHBhdGggPSBzcGVjaWZpZXIucGF0aG5hbWU7XG4gIGNvbnN0IHN0YXJ0SW5kZXggPSBwYXRoWzBdID09PSBcIi9cIiA/IDEgOiAwO1xuICBsZXQgcGF0aFN0YXJ0SW5kZXg7XG4gIGxldCB2ZXJzaW9uU3RhcnRJbmRleDtcbiAgaWYgKHBhdGhbc3RhcnRJbmRleF0gPT09IFwiQFwiKSB7XG4gICAgY29uc3QgZmlyc3RTbGFzaCA9IHBhdGguaW5kZXhPZihcIi9cIiwgc3RhcnRJbmRleCk7XG4gICAgaWYgKGZpcnN0U2xhc2ggPT09IC0xKSByZXR1cm4gY3JlYXRlRXJyKG9ubHlTY29wZVByb3ZpZGVkRXJyb3Ioc3BlY2lmaWVyKSk7XG4gICAgcGF0aFN0YXJ0SW5kZXggPSBwYXRoLmluZGV4T2YoXCIvXCIsIGZpcnN0U2xhc2ggKyAxKTtcbiAgICB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGguaW5kZXhPZihcIkBcIiwgZmlyc3RTbGFzaCArIDEpO1xuICB9IGVsc2Uge1xuICAgIHBhdGhTdGFydEluZGV4ID0gcGF0aC5pbmRleE9mKFwiL1wiLCBzdGFydEluZGV4KTtcbiAgICB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGguaW5kZXhPZihcIkBcIiwgc3RhcnRJbmRleCk7XG4gIH1cblxuICBpZiAocGF0aFN0YXJ0SW5kZXggPT09IC0xKSBwYXRoU3RhcnRJbmRleCA9IHBhdGgubGVuZ3RoO1xuICBpZiAodmVyc2lvblN0YXJ0SW5kZXggPT09IC0xKSB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGgubGVuZ3RoO1xuXG4gIHZlcnNpb25TdGFydEluZGV4ID0gTWF0aC5taW4odmVyc2lvblN0YXJ0SW5kZXgsIHBhdGhTdGFydEluZGV4KTtcblxuICBpZiAoc3RhcnRJbmRleCA9PT0gdmVyc2lvblN0YXJ0SW5kZXgpIHtcbiAgICByZXR1cm4gY3JlYXRlRXJyKHBhY2thZ2VOb3RGb3VuZEVycm9yKHNwZWNpZmllcikpO1xuICB9XG5cbiAgY29uc3QgbmFtZSA9IHBhdGguc2xpY2Uoc3RhcnRJbmRleCwgdmVyc2lvblN0YXJ0SW5kZXgpO1xuICBjb25zdCB0YWcgPSBwYXRoLnNsaWNlKHZlcnNpb25TdGFydEluZGV4ICsgMSwgcGF0aFN0YXJ0SW5kZXgpO1xuICBjb25zdCByYW5nZSA9IHRhZyA/IHRyeVBhcnNlUmFuZ2UodGFnKSA/PyBbW0FMTF1dIDogW1tBTExdXTtcbiAgY29uc3QgcmF3RW50cnlQb2ludCA9IHBhdGguc2xpY2UocGF0aFN0YXJ0SW5kZXggKyAxKTtcbiAgY29uc3QgZW50cnlQb2ludCA9IHJhd0VudHJ5UG9pbnRcbiAgICA/IGAuLyR7cmF3RW50cnlQb2ludH1gIGFzIGNvbnN0XG4gICAgOiBcIi5cIiBhcyBjb25zdDtcbiAgY29uc3QgbnBtOiBOcG1TcGVjaWZpZXIgPSB7IG5hbWUsIHJhbmdlLCBlbnRyeVBvaW50IH07XG4gIGlmICh0YWcpIG5wbS50YWcgPSB0YWc7XG5cbiAgcmV0dXJuIGNyZWF0ZU9rKG5wbSk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEpzclNwZWNpZmllciBleHRlbmRzIE5wbVNwZWNpZmllciB7fVxuZXhwb3J0IGludGVyZmFjZSBOb3RKc3JQcm90b2NvbEVycm9yIHtcbiAgbmFtZTogXCJOb3RKc3JQcm90b2NvbEVycm9yXCI7XG4gIHNwZWNpZmllcjogVVJMO1xufVxuZXhwb3J0IGludGVyZmFjZSBTY29wZU5vdEZvdW5kRXJyb3Ige1xuICBuYW1lOiBcIlNjb3BlTm90Rm91bmRFcnJvclwiO1xuICBzcGVjaWZpZXI6IFVSTDtcbn1cblxuZXhwb3J0IGNvbnN0IHBhcnNlSnNyU3BlY2lmaWVyID0gKFxuICBzcGVjaWZpZXI6IFVSTCxcbik6IFJlc3VsdDxcbiAgSnNyU3BlY2lmaWVyLFxuICBOb3RKc3JQcm90b2NvbEVycm9yIHwgU2NvcGVOb3RGb3VuZEVycm9yIHwgUGFja2FnZU5vdEZvdW5kRXJyb3Jcbj4gPT4ge1xuICBpZiAoc3BlY2lmaWVyLnByb3RvY29sICE9PSBcImpzcjpcIikge1xuICAgIHJldHVybiBjcmVhdGVFcnIoeyBuYW1lOiBcIk5vdEpzclByb3RvY29sRXJyb3JcIiwgc3BlY2lmaWVyIH0pO1xuICB9XG4gIGNvbnN0IHBhdGggPSBzcGVjaWZpZXIucGF0aG5hbWU7XG4gIGNvbnN0IHN0YXJ0SW5kZXggPSBwYXRoWzBdID09PSBcIi9cIiA/IDEgOiAwO1xuICBpZiAocGF0aFtzdGFydEluZGV4XSAhPT0gXCJAXCIpIHtcbiAgICByZXR1cm4gY3JlYXRlRXJyKHsgbmFtZTogXCJTY29wZU5vdEZvdW5kRXJyb3JcIiwgc3BlY2lmaWVyIH0pO1xuICB9XG4gIGNvbnN0IGZpcnN0U2xhc2ggPSBwYXRoLmluZGV4T2YoXCIvXCIsIHN0YXJ0SW5kZXgpO1xuICBpZiAoZmlyc3RTbGFzaCA9PT0gLTEpIHJldHVybiBjcmVhdGVFcnIocGFja2FnZU5vdEZvdW5kRXJyb3Ioc3BlY2lmaWVyKSk7XG4gIGxldCBwYXRoU3RhcnRJbmRleCA9IHBhdGguaW5kZXhPZihcIi9cIiwgZmlyc3RTbGFzaCArIDEpO1xuICBsZXQgdmVyc2lvblN0YXJ0SW5kZXggPSBwYXRoLmluZGV4T2YoXCJAXCIsIGZpcnN0U2xhc2ggKyAxKTtcblxuICBpZiAocGF0aFN0YXJ0SW5kZXggPT09IC0xKSBwYXRoU3RhcnRJbmRleCA9IHBhdGgubGVuZ3RoO1xuICBpZiAodmVyc2lvblN0YXJ0SW5kZXggPT09IC0xKSB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGgubGVuZ3RoO1xuXG4gIHZlcnNpb25TdGFydEluZGV4ID0gTWF0aC5taW4odmVyc2lvblN0YXJ0SW5kZXgsIHBhdGhTdGFydEluZGV4KTtcbiAgY29uc3QgbmFtZSA9IHBhdGguc2xpY2Uoc3RhcnRJbmRleCwgdmVyc2lvblN0YXJ0SW5kZXgpO1xuICBjb25zdCB0YWcgPSBwYXRoLnNsaWNlKHZlcnNpb25TdGFydEluZGV4ICsgMSwgcGF0aFN0YXJ0SW5kZXgpO1xuICBjb25zdCByYW5nZSA9IHRhZyA/IHRyeVBhcnNlUmFuZ2UodGFnKSA/PyBbW0FMTF1dIDogW1tBTExdXTtcbiAgY29uc3QgcmF3RW50cnlQb2ludCA9IHBhdGguc2xpY2UocGF0aFN0YXJ0SW5kZXggKyAxKTtcbiAgY29uc3QgZW50cnlQb2ludCA9IHJhd0VudHJ5UG9pbnRcbiAgICA/IGAuLyR7cmF3RW50cnlQb2ludH1gIGFzIGNvbnN0XG4gICAgOiBcIi5cIiBhcyBjb25zdDtcbiAgY29uc3QganNyOiBKc3JTcGVjaWZpZXIgPSB7IG5hbWUsIHJhbmdlLCBlbnRyeVBvaW50IH07XG4gIGlmICh0YWcpIGpzci50YWcgPSB0YWc7XG5cbiAgcmV0dXJuIGNyZWF0ZU9rKGpzcik7XG59O1xuIiwgIi8qKlxuICogQ29udmVydHMgYSBCbG9iIG9iamVjdCB0byBhIGRhdGEgVVJMIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gZGF0YSAtIFRoZSBCbG9iIG9iamVjdCB0byBjb252ZXJ0LlxuICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgZGF0YSBVUkwgc3RyaW5nLlxuICovXG5leHBvcnQgY29uc3QgdG9EYXRhVVJMID0gKGRhdGE6IEJsb2IpOiBQcm9taXNlPHN0cmluZz4gPT5cbiAgbmV3IFByb21pc2UoXG4gICAgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICBcImxvYWRcIixcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGFVUkwgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGRhdGFVUkwuaW5kZXhPZihcIjtcIik7XG4gICAgICAgICAgaWYgKGRhdGFVUkwuc3RhcnRzV2l0aChcIjsgY2hhcnNldD11dGYtOFwiLCBpbmRleCkpIHtcbiAgICAgICAgICAgIHJlc29sdmUoYCR7ZGF0YVVSTC5zbGljZSgwLCBpbmRleCl9JHtkYXRhVVJMLnNsaWNlKGluZGV4ICsgMTUpfWApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKGRhdGFVUkwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsICgpID0+IHJlamVjdChyZWFkZXIuZXJyb3IpKTtcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGRhdGEpO1xuICAgIH0sXG4gICk7XG4iLCAiaW1wb3J0IHtcbiAgTG9hZGVyLFxuICBPbkxvYWRSZXN1bHQsXG4gIE9uUmVzb2x2ZUFyZ3MsXG4gIE9uUmVzb2x2ZVJlc3VsdCxcbiAgUGx1Z2luLFxufSBmcm9tIFwiLi9kZXBzL2VzYnVpbGQtd2FzbS50c1wiO1xuaW1wb3J0IHsgaXNFcnIsIGlzT2ssIFJlc3VsdCwgdW53cmFwRXJyLCB1bndyYXBPayB9IGZyb20gXCIuL2RlcHMvb3B0aW9uLXQudHNcIjtcbmltcG9ydCB7XG4gIGVzYnVpbGRSZXNvbHV0aW9uVG9VUkwsXG4gIHVybFRvRXNidWlsZFJlc29sdXRpb24sXG59IGZyb20gXCIuL2VzYnVpbGRSZXNvbHV0aW9uLnRzXCI7XG5pbXBvcnQgeyBleHRyYWN0U291cmNlTWFwVVJMIH0gZnJvbSBcIi4vZXh0cmFjdFNvdXJjZU1hcFVSTC50c1wiO1xuaW1wb3J0IHtcbiAgaXNMb2FkZXJXaGljaENhbkluY2x1ZGVTb3VyY2VNYXBwaW5nVVJMLFxuICByZXNwb25zZVRvTG9hZGVyLFxufSBmcm9tIFwiLi9sb2FkZXIudHNcIjtcbmltcG9ydCB7XG4gIHBhY2thZ2VWZXJzaW9uTWFwcGluZyxcbiAgcmVzb2x2ZUpzclNwZWNpZmllcixcbiAgcmVzb2x2ZU5wbVNwZWNpZmllcixcbn0gZnJvbSBcIi4vcmVzb2x2ZS50c1wiO1xuaW1wb3J0IHsgUm9idXN0RmV0Y2gsIHJvYnVzdEZldGNoIH0gZnJvbSBcIi4vcm9idXN0RmV0Y2gudHNcIjtcbmltcG9ydCB7XG4gIE5vdEpzclByb3RvY29sRXJyb3IsXG4gIE5vdE5wbVByb3RvY29sRXJyb3IsXG4gIE5wbVNwZWNpZmllcixcbiAgT25seVNjb3BlUHJvdmlkZWRFcnJvcixcbiAgUGFja2FnZU5vdEZvdW5kRXJyb3IsXG4gIHBhcnNlSnNyU3BlY2lmaWVyLFxuICBwYXJzZU5wbVNwZWNpZmllcixcbiAgU2NvcGVOb3RGb3VuZEVycm9yLFxufSBmcm9tIFwiLi9zcGVjaWZpZXJzLnRzXCI7XG5pbXBvcnQgeyB0b0RhdGFVUkwgfSBmcm9tIFwiLi90b0RhdGFVUkwudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSZW1vdGVMb2FkZXJJbml0IHtcbiAgaW1wb3J0TWFwVVJMPzogVVJMO1xuICByZWxvYWQ/OiBib29sZWFuIHwgVVJMUGF0dGVybltdO1xuICBmZXRjaD86IFJvYnVzdEZldGNoO1xuXG4gIG9uUHJvZ3Jlc3M/OiAobWVzc2FnZTogTG9hZEV2ZW50KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvYWRFdmVudCB7XG4gIHBhdGg6IFVSTDtcbiAgZG9uZTogUHJvbWlzZTx7IHNpemU6IG51bWJlcjsgbG9hZGVyOiBMb2FkZXI7IGlzQ2FjaGU6IGJvb2xlYW4gfT47XG59XG5leHBvcnQgY29uc3QgcmVtb3RlTG9hZGVyID0gKFxuICBpbml0OiBSZW1vdGVMb2FkZXJJbml0LFxuKTogUGx1Z2luID0+IHtcbiAgY29uc3QgcmVzb2x2ZWRWZXJzaW9uczogcGFja2FnZVZlcnNpb25NYXBwaW5nID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0IHByb3h5ID0gYXN5bmMgKFxuICAgIGFyZ3M6IE9uUmVzb2x2ZUFyZ3MsXG4gICk6IFByb21pc2U8T25SZXNvbHZlUmVzdWx0PiA9PiB7XG4gICAgY29uc3QgaXNOcG0gPSBhcmdzLm5hbWVzcGFjZSA9PT0gXCJucG1cIjtcbiAgICBjb25zdCByZXN1bHQ6IFJlc3VsdDxcbiAgICAgIE5wbVNwZWNpZmllcixcbiAgICAgIHwgTm90TnBtUHJvdG9jb2xFcnJvclxuICAgICAgfCBPbmx5U2NvcGVQcm92aWRlZEVycm9yXG4gICAgICB8IFBhY2thZ2VOb3RGb3VuZEVycm9yXG4gICAgICB8IE5vdEpzclByb3RvY29sRXJyb3JcbiAgICAgIHwgU2NvcGVOb3RGb3VuZEVycm9yXG4gICAgPiA9IChpc05wbSA/IHBhcnNlTnBtU3BlY2lmaWVyIDogcGFyc2VKc3JTcGVjaWZpZXIpKFxuICAgICAgZXNidWlsZFJlc29sdXRpb25Ub1VSTChhcmdzKSxcbiAgICApO1xuICAgIGlmIChpc0VycihyZXN1bHQpKSB7XG4gICAgICBjb25zdCBkZXRhaWwgPSB1bndyYXBFcnIocmVzdWx0KTtcbiAgICAgIHJldHVybiB7IGVycm9yczogW3sgdGV4dDogZGV0YWlsLm5hbWUsIGRldGFpbCB9XSB9O1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQyID0gYXdhaXQgKGlzTnBtID8gcmVzb2x2ZU5wbVNwZWNpZmllciA6IHJlc29sdmVKc3JTcGVjaWZpZXIpKFxuICAgICAgdW53cmFwT2socmVzdWx0KSxcbiAgICAgIHsgcmVzb2x2ZWRWZXJzaW9ucywgLi4uaW5pdCB9LFxuICAgICk7XG5cbiAgICBpZiAoaXNFcnIocmVzdWx0MikpIHtcbiAgICAgIGNvbnN0IGRldGFpbCA9IHVud3JhcEVycihyZXN1bHQyKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVycm9yczogW3sgdGV4dDogYCR7ZGV0YWlsLm5hbWV9ICR7ZGV0YWlsLm1lc3NhZ2V9YCwgZGV0YWlsIH1dLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsVG9Fc2J1aWxkUmVzb2x1dGlvbih1bndyYXBPayhyZXN1bHQyKSk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBcInJlbW90ZS1sb2FkZXJcIixcbiAgICBzZXR1cCh7IG9uTG9hZCwgb25SZXNvbHZlLCBpbml0aWFsT3B0aW9ucyB9KSB7XG4gICAgICBmb3IgKFxuICAgICAgICBjb25zdCBwcm90b2NvbCBvZiBbLi4uc3VwcG9ydGVkUHJvdG9jb2xzLCAuLi5ub3RTdXBwb3J0ZWRQcm90b2NvbHNdXG4gICAgICApIHtcbiAgICAgICAgb25SZXNvbHZlKFxuICAgICAgICAgIHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IHByb3RvY29sLnNsaWNlKDAsIC0xKSB9LFxuICAgICAgICAgIGhhbmRsZVJlc29sdmUsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIG9uUmVzb2x2ZSh7IGZpbHRlcjogLy4qLywgbmFtZXNwYWNlOiBcIm5wbVwiIH0sIHByb3h5KTtcbiAgICAgIG9uUmVzb2x2ZSh7IGZpbHRlcjogLy4qLywgbmFtZXNwYWNlOiBcImpzclwiIH0sIHByb3h5KTtcblxuICAgICAgZm9yIChjb25zdCBwcm90b2NvbCBvZiBzdXBwb3J0ZWRQcm90b2NvbHMpIHtcbiAgICAgICAgb25Mb2FkKFxuICAgICAgICAgIHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IHByb3RvY29sLnNsaWNlKDAsIC0xKSB9LFxuICAgICAgICAgIChhcmdzKSA9PlxuICAgICAgICAgICAgbG9hZChlc2J1aWxkUmVzb2x1dGlvblRvVVJMKGFyZ3MpLCB7XG4gICAgICAgICAgICAgIC4uLmluaXQsXG4gICAgICAgICAgICAgIHNvdXJjZW1hcDogaW5pdGlhbE9wdGlvbnMuc291cmNlbWFwICE9PSBmYWxzZSAmJlxuICAgICAgICAgICAgICAgIGluaXRpYWxPcHRpb25zLnNvdXJjZW1hcCAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IHByb3RvY29sIG9mIG5vdFN1cHBvcnRlZFByb3RvY29scykge1xuICAgICAgICBvbkxvYWQoeyBmaWx0ZXI6IC8uKi8sIG5hbWVzcGFjZTogcHJvdG9jb2wuc2xpY2UoMCwgLTEpIH0sICgpID0+IHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cHJvdG9jb2x9IGltcG9ydCBpcyBub3Qgc3VwcG9ydGVkIHlldC5gKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn07XG5cbmNvbnN0IGhhbmRsZVJlc29sdmUgPSAoXG4gIGFyZ3M6IE9uUmVzb2x2ZUFyZ3MsXG4pOiBPblJlc29sdmVSZXN1bHQgfCBQcm9taXNlPE9uUmVzb2x2ZVJlc3VsdD4gPT4gKHtcbiAgcGF0aDogYXJncy5wYXRoLFxuICBuYW1lc3BhY2U6IGFyZ3MubmFtZXNwYWNlLFxufSk7XG5cbmNvbnN0IHN1cHBvcnRlZFByb3RvY29scyA9IFtcbiAgXCJodHRwOlwiLFxuICBcImh0dHBzOlwiLFxuICBcImRhdGE6XCIsXG5dIGFzIGNvbnN0O1xuY29uc3Qgbm90U3VwcG9ydGVkUHJvdG9jb2xzID0gW1wibm9kZTpcIl0gYXMgY29uc3Q7XG5cbmludGVyZmFjZSBMb2FkSW5pdCBleHRlbmRzIFJlbW90ZUxvYWRlckluaXQge1xuICBzb3VyY2VtYXA6IGJvb2xlYW47XG59XG5jb25zdCBsb2FkID0gYXN5bmMgKFxuICB1cmw6IFVSTCxcbiAgaW5pdDogTG9hZEluaXQsXG4pOiBQcm9taXNlPE9uTG9hZFJlc3VsdD4gPT4ge1xuICBjb25zdCBjYWNoZUZpcnN0ID0gIWluaXQucmVsb2FkXG4gICAgPyB0cnVlXG4gICAgOiBpbml0LnJlbG9hZCA9PT0gdHJ1ZVxuICAgID8gZmFsc2VcbiAgICA6ICFpbml0LnJlbG9hZC5zb21lKChwYXR0ZXJuKSA9PiBwYXR0ZXJuLnRlc3QodXJsKSk7XG4gIGNvbnN0IGZldGNoID0gaW5pdC5mZXRjaCA/PyByb2J1c3RGZXRjaDtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaChuZXcgUmVxdWVzdCh1cmwpLCBjYWNoZUZpcnN0KTtcbiAgaWYgKGlzRXJyKHJlc3VsdCkpIHtcbiAgICBjb25zdCBkZXRhaWwgPSB1bndyYXBFcnIocmVzdWx0KTtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3JzOiBbe1xuICAgICAgICB0ZXh0OiBgWyR7ZGV0YWlsLm1lc3NhZ2V9XSBGYWlsZWQgdG8gZmV0Y2ggJHt1cmx9YCxcbiAgICAgICAgZGV0YWlsOiB1bndyYXBFcnIocmVzdWx0KSxcbiAgICAgIH1dLFxuICAgIH07XG4gIH1cbiAgY29uc3QgW3JlcywgaXNDYWNoZV0gPSB1bndyYXBPayhyZXN1bHQpO1xuICBjb25zdCBsb2FkZXIgPSByZXNwb25zZVRvTG9hZGVyKHJlcyk7XG4gIGluaXQub25Qcm9ncmVzcz8uKHtcbiAgICBwYXRoOiB1cmwsXG4gICAgZG9uZTogcmVzLmNsb25lKCkuYmxvYigpLnRoZW4oKGJsb2IpID0+ICh7XG4gICAgICBzaXplOiBibG9iLnNpemUsXG4gICAgICBsb2FkZXIsXG4gICAgICBpc0NhY2hlLFxuICAgIH0pKSxcbiAgfSk7XG4gIGNvbnN0IGJsb2IgPSBhd2FpdCByZXMuYmxvYigpO1xuICBpZiAoaW5pdC5zb3VyY2VtYXAgJiYgaXNMb2FkZXJXaGljaENhbkluY2x1ZGVTb3VyY2VNYXBwaW5nVVJMKGxvYWRlcikpIHtcbiAgICBjb25zdCBjb250ZW50cyA9IGF3YWl0IGJsb2IudGV4dCgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGV4dHJhY3RTb3VyY2VNYXBVUkwoY29udGVudHMsIHVybCk7XG4gICAgaWYgKGlzT2socmVzdWx0KSkge1xuICAgICAgY29uc3QgeyB1cmw6IHNvdXJjZU1hcHBpbmdVUkwsIHN0YXJ0LCBlbmQgfSA9IHVud3JhcE9rKHJlc3VsdCk7XG4gICAgICBpZiAoc291cmNlTWFwcGluZ1VSTC5wcm90b2NvbCAhPT0gXCJkYXRhOlwiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKG5ldyBSZXF1ZXN0KHNvdXJjZU1hcHBpbmdVUkwpLCBjYWNoZUZpcnN0KTtcbiAgICAgICAgaWYgKGlzRXJyKHJlcykpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29udGVudHMsXG4gICAgICAgICAgICBsb2FkZXIsXG4gICAgICAgICAgICB3YXJuaW5nczogW3tcbiAgICAgICAgICAgICAgdGV4dDogYFske1xuICAgICAgICAgICAgICAgIHVud3JhcEVycihyZXMpLm1lc3NhZ2VcbiAgICAgICAgICAgICAgfV0gRmFpbGVkIHRvIGZldGNoIHRoZSBzb3VyY2UgbWFwIFVSTGAsXG4gICAgICAgICAgICAgIG5vdGVzOiBbe1xuICAgICAgICAgICAgICAgIHRleHQ6IGBTb3VyY2UgbWFwIFVSTDogJHtzb3VyY2VNYXBwaW5nVVJMfWAsXG4gICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBgT3JpZ2luYWwgVVJMOiAke3VybH1gLFxuICAgICAgICAgICAgICB9XSxcbiAgICAgICAgICAgICAgZGV0YWlsOiB1bndyYXBFcnIocmVzKSxcbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YVVSTCA9IGF3YWl0IHVud3JhcE9rKHJlcylbMF0uYmxvYigpLnRoZW4odG9EYXRhVVJMKTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWQgPSBjb250ZW50cy5zbGljZSgwLCBzdGFydCkgKyBkYXRhVVJMICtcbiAgICAgICAgICBjb250ZW50cy5zbGljZShlbmQpO1xuICAgICAgICByZXR1cm4geyBjb250ZW50czogcmVwbGFjZWQsIGxvYWRlciB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGNvbnRlbnRzOiBuZXcgVWludDhBcnJheShhd2FpdCBibG9iLmFycmF5QnVmZmVyKCkpLCBsb2FkZXIgfTtcbn07XG4iLCAidmFyIFI9Y2xhc3N7dHlwZT0zO25hbWU9XCJcIjtwcmVmaXg9XCJcIjt2YWx1ZT1cIlwiO3N1ZmZpeD1cIlwiO21vZGlmaWVyPTM7Y29uc3RydWN0b3IodCxyLG4sbyxjLGwpe3RoaXMudHlwZT10LHRoaXMubmFtZT1yLHRoaXMucHJlZml4PW4sdGhpcy52YWx1ZT1vLHRoaXMuc3VmZml4PWMsdGhpcy5tb2RpZmllcj1sfWhhc0N1c3RvbU5hbWUoKXtyZXR1cm4gdGhpcy5uYW1lIT09XCJcIlx1MDAyNlx1MDAyNnR5cGVvZiB0aGlzLm5hbWUhPVwibnVtYmVyXCJ9fSxiZT0vWyRfXFxwe0lEX1N0YXJ0fV0vdSxQZT0vWyRfXFx1MjAwQ1xcdTIwMERcXHB7SURfQ29udGludWV9XS91LE09XCIuKlwiO2Z1bmN0aW9uIFJlKGUsdCl7cmV0dXJuKHQ/L15bXFx4MDAtXFx4RkZdKiQvOi9eW1xceDAwLVxceDdGXSokLykudGVzdChlKX1mdW5jdGlvbiB2KGUsdD0hMSl7bGV0IHI9W10sbj0wO2Zvcig7blx1MDAzY2UubGVuZ3RoOyl7bGV0IG89ZVtuXSxjPWZ1bmN0aW9uKGwpe2lmKCF0KXRocm93IG5ldyBUeXBlRXJyb3IobCk7ci5wdXNoKHt0eXBlOlwiSU5WQUxJRF9DSEFSXCIsaW5kZXg6bix2YWx1ZTplW24rK119KX07aWYobz09PVwiKlwiKXtyLnB1c2goe3R5cGU6XCJBU1RFUklTS1wiLGluZGV4Om4sdmFsdWU6ZVtuKytdfSk7Y29udGludWV9aWYobz09PVwiK1wifHxvPT09XCI/XCIpe3IucHVzaCh7dHlwZTpcIk9USEVSX01PRElGSUVSXCIsaW5kZXg6bix2YWx1ZTplW24rK119KTtjb250aW51ZX1pZihvPT09XCJcXFxcXCIpe3IucHVzaCh7dHlwZTpcIkVTQ0FQRURfQ0hBUlwiLGluZGV4Om4rKyx2YWx1ZTplW24rK119KTtjb250aW51ZX1pZihvPT09XCJ7XCIpe3IucHVzaCh7dHlwZTpcIk9QRU5cIixpbmRleDpuLHZhbHVlOmVbbisrXX0pO2NvbnRpbnVlfWlmKG89PT1cIn1cIil7ci5wdXNoKHt0eXBlOlwiQ0xPU0VcIixpbmRleDpuLHZhbHVlOmVbbisrXX0pO2NvbnRpbnVlfWlmKG89PT1cIjpcIil7bGV0IGw9XCJcIixzPW4rMTtmb3IoO3NcdTAwM2NlLmxlbmd0aDspe2xldCBpPWUuc3Vic3RyKHMsMSk7aWYocz09PW4rMVx1MDAyNlx1MDAyNmJlLnRlc3QoaSl8fHMhPT1uKzFcdTAwMjZcdTAwMjZQZS50ZXN0KGkpKXtsKz1lW3MrK107Y29udGludWV9YnJlYWt9aWYoIWwpe2MoYE1pc3NpbmcgcGFyYW1ldGVyIG5hbWUgYXQgJHtufWApO2NvbnRpbnVlfXIucHVzaCh7dHlwZTpcIk5BTUVcIixpbmRleDpuLHZhbHVlOmx9KSxuPXM7Y29udGludWV9aWYobz09PVwiKFwiKXtsZXQgbD0xLHM9XCJcIixpPW4rMSxhPSExO2lmKGVbaV09PT1cIj9cIil7YyhgUGF0dGVybiBjYW5ub3Qgc3RhcnQgd2l0aCBcIj9cIiBhdCAke2l9YCk7Y29udGludWV9Zm9yKDtpXHUwMDNjZS5sZW5ndGg7KXtpZighUmUoZVtpXSwhMSkpe2MoYEludmFsaWQgY2hhcmFjdGVyICcke2VbaV19JyBhdCAke2l9LmApLGE9ITA7YnJlYWt9aWYoZVtpXT09PVwiXFxcXFwiKXtzKz1lW2krK10rZVtpKytdO2NvbnRpbnVlfWlmKGVbaV09PT1cIilcIil7aWYobC0tLGw9PT0wKXtpKys7YnJlYWt9fWVsc2UgaWYoZVtpXT09PVwiKFwiXHUwMDI2XHUwMDI2KGwrKyxlW2krMV0hPT1cIj9cIikpe2MoYENhcHR1cmluZyBncm91cHMgYXJlIG5vdCBhbGxvd2VkIGF0ICR7aX1gKSxhPSEwO2JyZWFrfXMrPWVbaSsrXX1pZihhKWNvbnRpbnVlO2lmKGwpe2MoYFVuYmFsYW5jZWQgcGF0dGVybiBhdCAke259YCk7Y29udGludWV9aWYoIXMpe2MoYE1pc3NpbmcgcGF0dGVybiBhdCAke259YCk7Y29udGludWV9ci5wdXNoKHt0eXBlOlwiUkVHRVhcIixpbmRleDpuLHZhbHVlOnN9KSxuPWk7Y29udGludWV9ci5wdXNoKHt0eXBlOlwiQ0hBUlwiLGluZGV4Om4sdmFsdWU6ZVtuKytdfSl9cmV0dXJuIHIucHVzaCh7dHlwZTpcIkVORFwiLGluZGV4Om4sdmFsdWU6XCJcIn0pLHJ9ZnVuY3Rpb24gRChlLHQ9e30pe2xldCByPXYoZSk7dC5kZWxpbWl0ZXI/Pz1cIi8jP1wiLHQucHJlZml4ZXM/Pz1cIi4vXCI7bGV0IG49YFteJHtTKHQuZGVsaW1pdGVyKX1dKz9gLG89W10sYz0wLGw9MCxzPVwiXCIsaT1uZXcgU2V0LGE9aD1cdTAwM2V7aWYobFx1MDAzY3IubGVuZ3RoXHUwMDI2XHUwMDI2cltsXS50eXBlPT09aClyZXR1cm4gcltsKytdLnZhbHVlfSxmPSgpPVx1MDAzZWEoXCJPVEhFUl9NT0RJRklFUlwiKT8/YShcIkFTVEVSSVNLXCIpLGQ9aD1cdTAwM2V7bGV0IHU9YShoKTtpZih1IT09dm9pZCAwKXJldHVybiB1O2xldHt0eXBlOnAsaW5kZXg6QX09cltsXTt0aHJvdyBuZXcgVHlwZUVycm9yKGBVbmV4cGVjdGVkICR7cH0gYXQgJHtBfSwgZXhwZWN0ZWQgJHtofWApfSxUPSgpPVx1MDAzZXtsZXQgaD1cIlwiLHU7Zm9yKDt1PWEoXCJDSEFSXCIpPz9hKFwiRVNDQVBFRF9DSEFSXCIpOyloKz11O3JldHVybiBofSxTZT1oPVx1MDAzZWgsTD10LmVuY29kZVBhcnR8fFNlLEk9XCJcIixVPWg9XHUwMDNle0krPWh9LCQ9KCk9XHUwMDNle0kubGVuZ3RoXHUwMDI2XHUwMDI2KG8ucHVzaChuZXcgUigzLFwiXCIsXCJcIixMKEkpLFwiXCIsMykpLEk9XCJcIil9LFY9KGgsdSxwLEEsWSk9XHUwMDNle2xldCBnPTM7c3dpdGNoKFkpe2Nhc2VcIj9cIjpnPTE7YnJlYWs7Y2FzZVwiKlwiOmc9MDticmVhaztjYXNlXCIrXCI6Zz0yO2JyZWFrfWlmKCF1XHUwMDI2XHUwMDI2IXBcdTAwMjZcdTAwMjZnPT09Myl7VShoKTtyZXR1cm59aWYoJCgpLCF1XHUwMDI2XHUwMDI2IXApe2lmKCFoKXJldHVybjtvLnB1c2gobmV3IFIoMyxcIlwiLFwiXCIsTChoKSxcIlwiLGcpKTtyZXR1cm59bGV0IG07cD9wPT09XCIqXCI/bT1NOm09cDptPW47bGV0IE89MjttPT09bj8oTz0xLG09XCJcIik6bT09PU1cdTAwMjZcdTAwMjYoTz0wLG09XCJcIik7bGV0IFA7aWYodT9QPXU6cFx1MDAyNlx1MDAyNihQPWMrKyksaS5oYXMoUCkpdGhyb3cgbmV3IFR5cGVFcnJvcihgRHVwbGljYXRlIG5hbWUgJyR7UH0nLmApO2kuYWRkKFApLG8ucHVzaChuZXcgUihPLFAsTChoKSxtLEwoQSksZykpfTtmb3IoO2xcdTAwM2NyLmxlbmd0aDspe2xldCBoPWEoXCJDSEFSXCIpLHU9YShcIk5BTUVcIikscD1hKFwiUkVHRVhcIik7aWYoIXVcdTAwMjZcdTAwMjYhcFx1MDAyNlx1MDAyNihwPWEoXCJBU1RFUklTS1wiKSksdXx8cCl7bGV0IGc9aD8/XCJcIjt0LnByZWZpeGVzLmluZGV4T2YoZyk9PT0tMVx1MDAyNlx1MDAyNihVKGcpLGc9XCJcIiksJCgpO2xldCBtPWYoKTtWKGcsdSxwLFwiXCIsbSk7Y29udGludWV9bGV0IEE9aD8/YShcIkVTQ0FQRURfQ0hBUlwiKTtpZihBKXtVKEEpO2NvbnRpbnVlfWlmKGEoXCJPUEVOXCIpKXtsZXQgZz1UKCksbT1hKFwiTkFNRVwiKSxPPWEoXCJSRUdFWFwiKTshbVx1MDAyNlx1MDAyNiFPXHUwMDI2XHUwMDI2KE89YShcIkFTVEVSSVNLXCIpKTtsZXQgUD1UKCk7ZChcIkNMT1NFXCIpO2xldCB4ZT1mKCk7VihnLG0sTyxQLHhlKTtjb250aW51ZX0kKCksZChcIkVORFwiKX1yZXR1cm4gb31mdW5jdGlvbiBTKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbLisqP14ke30oKVtcXF18L1xcXFxdKS9nLFwiXFxcXCQxXCIpfWZ1bmN0aW9uIFgoZSl7cmV0dXJuIGVcdTAwMjZcdTAwMjZlLmlnbm9yZUNhc2U/XCJ1aVwiOlwidVwifWZ1bmN0aW9uIFooZSx0LHIpe3JldHVybiBGKEQoZSxyKSx0LHIpfWZ1bmN0aW9uIGsoZSl7c3dpdGNoKGUpe2Nhc2UgMDpyZXR1cm5cIipcIjtjYXNlIDE6cmV0dXJuXCI/XCI7Y2FzZSAyOnJldHVyblwiK1wiO2Nhc2UgMzpyZXR1cm5cIlwifX1mdW5jdGlvbiBGKGUsdCxyPXt9KXtyLmRlbGltaXRlcj8/PVwiLyM/XCIsci5wcmVmaXhlcz8/PVwiLi9cIixyLnNlbnNpdGl2ZT8/PSExLHIuc3RyaWN0Pz89ITEsci5lbmQ/Pz0hMCxyLnN0YXJ0Pz89ITAsci5lbmRzV2l0aD1cIlwiO2xldCBuPXIuc3RhcnQ/XCJeXCI6XCJcIjtmb3IobGV0IHMgb2YgZSl7aWYocy50eXBlPT09Myl7cy5tb2RpZmllcj09PTM/bis9UyhzLnZhbHVlKTpuKz1gKD86JHtTKHMudmFsdWUpfSkke2socy5tb2RpZmllcil9YDtjb250aW51ZX10XHUwMDI2XHUwMDI2dC5wdXNoKHMubmFtZSk7bGV0IGk9YFteJHtTKHIuZGVsaW1pdGVyKX1dKz9gLGE9cy52YWx1ZTtpZihzLnR5cGU9PT0xP2E9aTpzLnR5cGU9PT0wXHUwMDI2XHUwMDI2KGE9TSksIXMucHJlZml4Lmxlbmd0aFx1MDAyNlx1MDAyNiFzLnN1ZmZpeC5sZW5ndGgpe3MubW9kaWZpZXI9PT0zfHxzLm1vZGlmaWVyPT09MT9uKz1gKCR7YX0pJHtrKHMubW9kaWZpZXIpfWA6bis9YCgoPzoke2F9KSR7ayhzLm1vZGlmaWVyKX0pYDtjb250aW51ZX1pZihzLm1vZGlmaWVyPT09M3x8cy5tb2RpZmllcj09PTEpe24rPWAoPzoke1Mocy5wcmVmaXgpfSgke2F9KSR7UyhzLnN1ZmZpeCl9KWAsbis9ayhzLm1vZGlmaWVyKTtjb250aW51ZX1uKz1gKD86JHtTKHMucHJlZml4KX1gLG4rPWAoKD86JHthfSkoPzpgLG4rPVMocy5zdWZmaXgpLG4rPVMocy5wcmVmaXgpLG4rPWAoPzoke2F9KSkqKSR7UyhzLnN1ZmZpeCl9KWAscy5tb2RpZmllcj09PTBcdTAwMjZcdTAwMjYobis9XCI/XCIpfWxldCBvPWBbJHtTKHIuZW5kc1dpdGgpfV18JGAsYz1gWyR7UyhyLmRlbGltaXRlcil9XWA7aWYoci5lbmQpcmV0dXJuIHIuc3RyaWN0fHwobis9YCR7Y30/YCksci5lbmRzV2l0aC5sZW5ndGg/bis9YCg/PSR7b30pYDpuKz1cIiRcIixuZXcgUmVnRXhwKG4sWChyKSk7ci5zdHJpY3R8fChuKz1gKD86JHtjfSg/PSR7b30pKT9gKTtsZXQgbD0hMTtpZihlLmxlbmd0aCl7bGV0IHM9ZVtlLmxlbmd0aC0xXTtzLnR5cGU9PT0zXHUwMDI2XHUwMDI2cy5tb2RpZmllcj09PTNcdTAwMjZcdTAwMjYobD1yLmRlbGltaXRlci5pbmRleE9mKHMpXHUwMDNlLTEpfXJldHVybiBsfHwobis9YCg/PSR7Y318JHtvfSlgKSxuZXcgUmVnRXhwKG4sWChyKSl9dmFyIHg9e2RlbGltaXRlcjpcIlwiLHByZWZpeGVzOlwiXCIsc2Vuc2l0aXZlOiEwLHN0cmljdDohMH0sQj17ZGVsaW1pdGVyOlwiLlwiLHByZWZpeGVzOlwiXCIsc2Vuc2l0aXZlOiEwLHN0cmljdDohMH0scT17ZGVsaW1pdGVyOlwiL1wiLHByZWZpeGVzOlwiL1wiLHNlbnNpdGl2ZTohMCxzdHJpY3Q6ITB9O2Z1bmN0aW9uIEooZSx0KXtyZXR1cm4gZS5sZW5ndGg/ZVswXT09PVwiL1wiPyEwOiF0fHxlLmxlbmd0aFx1MDAzYzI/ITE6KGVbMF09PVwiXFxcXFwifHxlWzBdPT1cIntcIilcdTAwMjZcdTAwMjZlWzFdPT1cIi9cIjohMX1mdW5jdGlvbiBRKGUsdCl7cmV0dXJuIGUuc3RhcnRzV2l0aCh0KT9lLnN1YnN0cmluZyh0Lmxlbmd0aCxlLmxlbmd0aCk6ZX1mdW5jdGlvbiBFZShlLHQpe3JldHVybiBlLmVuZHNXaXRoKHQpP2Uuc3Vic3RyKDAsZS5sZW5ndGgtdC5sZW5ndGgpOmV9ZnVuY3Rpb24gVyhlKXtyZXR1cm4hZXx8ZS5sZW5ndGhcdTAwM2MyPyExOmVbMF09PT1cIltcInx8KGVbMF09PT1cIlxcXFxcInx8ZVswXT09PVwie1wiKVx1MDAyNlx1MDAyNmVbMV09PT1cIltcIn12YXIgZWU9W1wiZnRwXCIsXCJmaWxlXCIsXCJodHRwXCIsXCJodHRwc1wiLFwid3NcIixcIndzc1wiXTtmdW5jdGlvbiBOKGUpe2lmKCFlKXJldHVybiEwO2ZvcihsZXQgdCBvZiBlZSlpZihlLnRlc3QodCkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gdGUoZSx0KXtpZihlPVEoZSxcIiNcIiksdHx8ZT09PVwiXCIpcmV0dXJuIGU7bGV0IHI9bmV3IFVSTChcImh0dHBzOi8vZXhhbXBsZS5jb21cIik7cmV0dXJuIHIuaGFzaD1lLHIuaGFzaD9yLmhhc2guc3Vic3RyaW5nKDEsci5oYXNoLmxlbmd0aCk6XCJcIn1mdW5jdGlvbiByZShlLHQpe2lmKGU9UShlLFwiP1wiKSx0fHxlPT09XCJcIilyZXR1cm4gZTtsZXQgcj1uZXcgVVJMKFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiKTtyZXR1cm4gci5zZWFyY2g9ZSxyLnNlYXJjaD9yLnNlYXJjaC5zdWJzdHJpbmcoMSxyLnNlYXJjaC5sZW5ndGgpOlwiXCJ9ZnVuY3Rpb24gbmUoZSx0KXtyZXR1cm4gdHx8ZT09PVwiXCI/ZTpXKGUpP2ooZSk6eihlKX1mdW5jdGlvbiBzZShlLHQpe2lmKHR8fGU9PT1cIlwiKXJldHVybiBlO2xldCByPW5ldyBVUkwoXCJodHRwczovL2V4YW1wbGUuY29tXCIpO3JldHVybiByLnBhc3N3b3JkPWUsci5wYXNzd29yZH1mdW5jdGlvbiBpZShlLHQpe2lmKHR8fGU9PT1cIlwiKXJldHVybiBlO2xldCByPW5ldyBVUkwoXCJodHRwczovL2V4YW1wbGUuY29tXCIpO3JldHVybiByLnVzZXJuYW1lPWUsci51c2VybmFtZX1mdW5jdGlvbiBhZShlLHQscil7aWYocnx8ZT09PVwiXCIpcmV0dXJuIGU7aWYodFx1MDAyNlx1MDAyNiFlZS5pbmNsdWRlcyh0KSlyZXR1cm4gbmV3IFVSTChgJHt0fToke2V9YCkucGF0aG5hbWU7bGV0IG49ZVswXT09XCIvXCI7cmV0dXJuIGU9bmV3IFVSTChuP2U6XCIvLVwiK2UsXCJodHRwczovL2V4YW1wbGUuY29tXCIpLnBhdGhuYW1lLG58fChlPWUuc3Vic3RyaW5nKDIsZS5sZW5ndGgpKSxlfWZ1bmN0aW9uIG9lKGUsdCxyKXtyZXR1cm4gXyh0KT09PWVcdTAwMjZcdTAwMjYoZT1cIlwiKSxyfHxlPT09XCJcIj9lOksoZSl9ZnVuY3Rpb24gY2UoZSx0KXtyZXR1cm4gZT1FZShlLFwiOlwiKSx0fHxlPT09XCJcIj9lOnkoZSl9ZnVuY3Rpb24gXyhlKXtzd2l0Y2goZSl7Y2FzZVwid3NcIjpjYXNlXCJodHRwXCI6cmV0dXJuXCI4MFwiO2Nhc2VcInd3c1wiOmNhc2VcImh0dHBzXCI6cmV0dXJuXCI0NDNcIjtjYXNlXCJmdHBcIjpyZXR1cm5cIjIxXCI7ZGVmYXVsdDpyZXR1cm5cIlwifX1mdW5jdGlvbiB5KGUpe2lmKGU9PT1cIlwiKXJldHVybiBlO2lmKC9eWy0rLkEtWmEtejAtOV0qJC8udGVzdChlKSlyZXR1cm4gZS50b0xvd2VyQ2FzZSgpO3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgcHJvdG9jb2wgJyR7ZX0nLmApfWZ1bmN0aW9uIGxlKGUpe2lmKGU9PT1cIlwiKXJldHVybiBlO2xldCB0PW5ldyBVUkwoXCJodHRwczovL2V4YW1wbGUuY29tXCIpO3JldHVybiB0LnVzZXJuYW1lPWUsdC51c2VybmFtZX1mdW5jdGlvbiBmZShlKXtpZihlPT09XCJcIilyZXR1cm4gZTtsZXQgdD1uZXcgVVJMKFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiKTtyZXR1cm4gdC5wYXNzd29yZD1lLHQucGFzc3dvcmR9ZnVuY3Rpb24geihlKXtpZihlPT09XCJcIilyZXR1cm4gZTtpZigvW1xcdFxcblxcciAjJS86XHUwMDNjXHUwMDNlP0BbXFxdXlxcXFx8XS9nLnRlc3QoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBob3N0bmFtZSAnJHtlfSdgKTtsZXQgdD1uZXcgVVJMKFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiKTtyZXR1cm4gdC5ob3N0bmFtZT1lLHQuaG9zdG5hbWV9ZnVuY3Rpb24gaihlKXtpZihlPT09XCJcIilyZXR1cm4gZTtpZigvW14wLTlhLWZBLUZbXFxdOl0vZy50ZXN0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgSVB2NiBob3N0bmFtZSAnJHtlfSdgKTtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIEsoZSl7aWYoZT09PVwiXCJ8fC9eWzAtOV0qJC8udGVzdChlKVx1MDAyNlx1MDAyNnBhcnNlSW50KGUpXHUwMDNjPTY1NTM1KXJldHVybiBlO3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgcG9ydCAnJHtlfScuYCl9ZnVuY3Rpb24gaGUoZSl7aWYoZT09PVwiXCIpcmV0dXJuIGU7bGV0IHQ9bmV3IFVSTChcImh0dHBzOi8vZXhhbXBsZS5jb21cIik7cmV0dXJuIHQucGF0aG5hbWU9ZVswXSE9PVwiL1wiP1wiLy1cIitlOmUsZVswXSE9PVwiL1wiP3QucGF0aG5hbWUuc3Vic3RyaW5nKDIsdC5wYXRobmFtZS5sZW5ndGgpOnQucGF0aG5hbWV9ZnVuY3Rpb24gdWUoZSl7cmV0dXJuIGU9PT1cIlwiP2U6bmV3IFVSTChgZGF0YToke2V9YCkucGF0aG5hbWV9ZnVuY3Rpb24gZGUoZSl7aWYoZT09PVwiXCIpcmV0dXJuIGU7bGV0IHQ9bmV3IFVSTChcImh0dHBzOi8vZXhhbXBsZS5jb21cIik7cmV0dXJuIHQuc2VhcmNoPWUsdC5zZWFyY2guc3Vic3RyaW5nKDEsdC5zZWFyY2gubGVuZ3RoKX1mdW5jdGlvbiBwZShlKXtpZihlPT09XCJcIilyZXR1cm4gZTtsZXQgdD1uZXcgVVJMKFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiKTtyZXR1cm4gdC5oYXNoPWUsdC5oYXNoLnN1YnN0cmluZygxLHQuaGFzaC5sZW5ndGgpfXZhciBIPWNsYXNzeyNpOyNuPVtdOyN0PXt9OyNlPTA7I3M9MTsjbD0wOyNvPTA7I2Q9MDsjcD0wOyNnPSExO2NvbnN0cnVjdG9yKHQpe3RoaXMuI2k9dH1nZXQgcmVzdWx0KCl7cmV0dXJuIHRoaXMuI3R9cGFyc2UoKXtmb3IodGhpcy4jbj12KHRoaXMuI2ksITApO3RoaXMuI2VcdTAwM2N0aGlzLiNuLmxlbmd0aDt0aGlzLiNlKz10aGlzLiNzKXtpZih0aGlzLiNzPTEsdGhpcy4jblt0aGlzLiNlXS50eXBlPT09XCJFTkRcIil7aWYodGhpcy4jbz09PTApe3RoaXMuI2IoKSx0aGlzLiNmKCk/dGhpcy4jcig5LDEpOnRoaXMuI2goKT90aGlzLiNyKDgsMSk6dGhpcy4jcig3LDApO2NvbnRpbnVlfWVsc2UgaWYodGhpcy4jbz09PTIpe3RoaXMuI3UoNSk7Y29udGludWV9dGhpcy4jcigxMCwwKTticmVha31pZih0aGlzLiNkXHUwMDNlMClpZih0aGlzLiNBKCkpdGhpcy4jZC09MTtlbHNlIGNvbnRpbnVlO2lmKHRoaXMuI1QoKSl7dGhpcy4jZCs9MTtjb250aW51ZX1zd2l0Y2godGhpcy4jbyl7Y2FzZSAwOnRoaXMuI1AoKVx1MDAyNlx1MDAyNnRoaXMuI3UoMSk7YnJlYWs7Y2FzZSAxOmlmKHRoaXMuI1AoKSl7dGhpcy4jQygpO2xldCB0PTcscj0xO3RoaXMuI0UoKT8odD0yLHI9Myk6dGhpcy4jZ1x1MDAyNlx1MDAyNih0PTIpLHRoaXMuI3IodCxyKX1icmVhaztjYXNlIDI6dGhpcy4jUygpP3RoaXMuI3UoMyk6KHRoaXMuI3goKXx8dGhpcy4jaCgpfHx0aGlzLiNmKCkpXHUwMDI2XHUwMDI2dGhpcy4jdSg1KTticmVhaztjYXNlIDM6dGhpcy4jTygpP3RoaXMuI3IoNCwxKTp0aGlzLiNTKClcdTAwMjZcdTAwMjZ0aGlzLiNyKDUsMSk7YnJlYWs7Y2FzZSA0OnRoaXMuI1MoKVx1MDAyNlx1MDAyNnRoaXMuI3IoNSwxKTticmVhaztjYXNlIDU6dGhpcy4jeSgpP3RoaXMuI3ArPTE6dGhpcy4jdygpXHUwMDI2XHUwMDI2KHRoaXMuI3AtPTEpLHRoaXMuI2soKVx1MDAyNlx1MDAyNiF0aGlzLiNwP3RoaXMuI3IoNiwxKTp0aGlzLiN4KCk/dGhpcy4jcig3LDApOnRoaXMuI2goKT90aGlzLiNyKDgsMSk6dGhpcy4jZigpXHUwMDI2XHUwMDI2dGhpcy4jcig5LDEpO2JyZWFrO2Nhc2UgNjp0aGlzLiN4KCk/dGhpcy4jcig3LDApOnRoaXMuI2goKT90aGlzLiNyKDgsMSk6dGhpcy4jZigpXHUwMDI2XHUwMDI2dGhpcy4jcig5LDEpO2JyZWFrO2Nhc2UgNzp0aGlzLiNoKCk/dGhpcy4jcig4LDEpOnRoaXMuI2YoKVx1MDAyNlx1MDAyNnRoaXMuI3IoOSwxKTticmVhaztjYXNlIDg6dGhpcy4jZigpXHUwMDI2XHUwMDI2dGhpcy4jcig5LDEpO2JyZWFrO2Nhc2UgOTpicmVhaztjYXNlIDEwOmJyZWFrfX10aGlzLiN0Lmhvc3RuYW1lIT09dm9pZCAwXHUwMDI2XHUwMDI2dGhpcy4jdC5wb3J0PT09dm9pZCAwXHUwMDI2XHUwMDI2KHRoaXMuI3QucG9ydD1cIlwiKX0jcih0LHIpe3N3aXRjaCh0aGlzLiNvKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMuI3QucHJvdG9jb2w9dGhpcy4jYygpO2JyZWFrO2Nhc2UgMjpicmVhaztjYXNlIDM6dGhpcy4jdC51c2VybmFtZT10aGlzLiNjKCk7YnJlYWs7Y2FzZSA0OnRoaXMuI3QucGFzc3dvcmQ9dGhpcy4jYygpO2JyZWFrO2Nhc2UgNTp0aGlzLiN0Lmhvc3RuYW1lPXRoaXMuI2MoKTticmVhaztjYXNlIDY6dGhpcy4jdC5wb3J0PXRoaXMuI2MoKTticmVhaztjYXNlIDc6dGhpcy4jdC5wYXRobmFtZT10aGlzLiNjKCk7YnJlYWs7Y2FzZSA4OnRoaXMuI3Quc2VhcmNoPXRoaXMuI2MoKTticmVhaztjYXNlIDk6dGhpcy4jdC5oYXNoPXRoaXMuI2MoKTticmVhaztjYXNlIDEwOmJyZWFrfXRoaXMuI28hPT0wXHUwMDI2XHUwMDI2dCE9PTEwXHUwMDI2XHUwMDI2KFsxLDIsMyw0XS5pbmNsdWRlcyh0aGlzLiNvKVx1MDAyNlx1MDAyNls2LDcsOCw5XS5pbmNsdWRlcyh0KVx1MDAyNlx1MDAyNih0aGlzLiN0Lmhvc3RuYW1lPz89XCJcIiksWzEsMiwzLDQsNSw2XS5pbmNsdWRlcyh0aGlzLiNvKVx1MDAyNlx1MDAyNls4LDldLmluY2x1ZGVzKHQpXHUwMDI2XHUwMDI2KHRoaXMuI3QucGF0aG5hbWU/Pz10aGlzLiNnP1wiL1wiOlwiXCIpLFsxLDIsMyw0LDUsNiw3XS5pbmNsdWRlcyh0aGlzLiNvKVx1MDAyNlx1MDAyNnQ9PT05XHUwMDI2XHUwMDI2KHRoaXMuI3Quc2VhcmNoPz89XCJcIikpLHRoaXMuI1IodCxyKX0jUih0LHIpe3RoaXMuI289dCx0aGlzLiNsPXRoaXMuI2Urcix0aGlzLiNlKz1yLHRoaXMuI3M9MH0jYigpe3RoaXMuI2U9dGhpcy4jbCx0aGlzLiNzPTB9I3UodCl7dGhpcy4jYigpLHRoaXMuI289dH0jbSh0KXtyZXR1cm4gdFx1MDAzYzBcdTAwMjZcdTAwMjYodD10aGlzLiNuLmxlbmd0aC10KSx0XHUwMDNjdGhpcy4jbi5sZW5ndGg/dGhpcy4jblt0XTp0aGlzLiNuW3RoaXMuI24ubGVuZ3RoLTFdfSNhKHQscil7bGV0IG49dGhpcy4jbSh0KTtyZXR1cm4gbi52YWx1ZT09PXJcdTAwMjZcdTAwMjYobi50eXBlPT09XCJDSEFSXCJ8fG4udHlwZT09PVwiRVNDQVBFRF9DSEFSXCJ8fG4udHlwZT09PVwiSU5WQUxJRF9DSEFSXCIpfSNQKCl7cmV0dXJuIHRoaXMuI2EodGhpcy4jZSxcIjpcIil9I0UoKXtyZXR1cm4gdGhpcy4jYSh0aGlzLiNlKzEsXCIvXCIpXHUwMDI2XHUwMDI2dGhpcy4jYSh0aGlzLiNlKzIsXCIvXCIpfSNTKCl7cmV0dXJuIHRoaXMuI2EodGhpcy4jZSxcIkBcIil9I08oKXtyZXR1cm4gdGhpcy4jYSh0aGlzLiNlLFwiOlwiKX0jaygpe3JldHVybiB0aGlzLiNhKHRoaXMuI2UsXCI6XCIpfSN4KCl7cmV0dXJuIHRoaXMuI2EodGhpcy4jZSxcIi9cIil9I2goKXtpZih0aGlzLiNhKHRoaXMuI2UsXCI/XCIpKXJldHVybiEwO2lmKHRoaXMuI25bdGhpcy4jZV0udmFsdWUhPT1cIj9cIilyZXR1cm4hMTtsZXQgdD10aGlzLiNtKHRoaXMuI2UtMSk7cmV0dXJuIHQudHlwZSE9PVwiTkFNRVwiXHUwMDI2XHUwMDI2dC50eXBlIT09XCJSRUdFWFwiXHUwMDI2XHUwMDI2dC50eXBlIT09XCJDTE9TRVwiXHUwMDI2XHUwMDI2dC50eXBlIT09XCJBU1RFUklTS1wifSNmKCl7cmV0dXJuIHRoaXMuI2EodGhpcy4jZSxcIiNcIil9I1QoKXtyZXR1cm4gdGhpcy4jblt0aGlzLiNlXS50eXBlPT1cIk9QRU5cIn0jQSgpe3JldHVybiB0aGlzLiNuW3RoaXMuI2VdLnR5cGU9PVwiQ0xPU0VcIn0jeSgpe3JldHVybiB0aGlzLiNhKHRoaXMuI2UsXCJbXCIpfSN3KCl7cmV0dXJuIHRoaXMuI2EodGhpcy4jZSxcIl1cIil9I2MoKXtsZXQgdD10aGlzLiNuW3RoaXMuI2VdLHI9dGhpcy4jbSh0aGlzLiNsKS5pbmRleDtyZXR1cm4gdGhpcy4jaS5zdWJzdHJpbmcocix0LmluZGV4KX0jQygpe2xldCB0PXt9O09iamVjdC5hc3NpZ24odCx4KSx0LmVuY29kZVBhcnQ9eTtsZXQgcj1aKHRoaXMuI2MoKSx2b2lkIDAsdCk7dGhpcy4jZz1OKHIpfX07dmFyIEc9W1wicHJvdG9jb2xcIixcInVzZXJuYW1lXCIsXCJwYXNzd29yZFwiLFwiaG9zdG5hbWVcIixcInBvcnRcIixcInBhdGhuYW1lXCIsXCJzZWFyY2hcIixcImhhc2hcIl0sRT1cIipcIjtmdW5jdGlvbiBnZShlLHQpe2lmKHR5cGVvZiBlIT1cInN0cmluZ1wiKXRocm93IG5ldyBUeXBlRXJyb3IoXCJwYXJhbWV0ZXIgMSBpcyBub3Qgb2YgdHlwZSAnc3RyaW5nJy5cIik7bGV0IHI9bmV3IFVSTChlLHQpO3JldHVybntwcm90b2NvbDpyLnByb3RvY29sLnN1YnN0cmluZygwLHIucHJvdG9jb2wubGVuZ3RoLTEpLHVzZXJuYW1lOnIudXNlcm5hbWUscGFzc3dvcmQ6ci5wYXNzd29yZCxob3N0bmFtZTpyLmhvc3RuYW1lLHBvcnQ6ci5wb3J0LHBhdGhuYW1lOnIucGF0aG5hbWUsc2VhcmNoOnIuc2VhcmNoIT09XCJcIj9yLnNlYXJjaC5zdWJzdHJpbmcoMSxyLnNlYXJjaC5sZW5ndGgpOnZvaWQgMCxoYXNoOnIuaGFzaCE9PVwiXCI/ci5oYXNoLnN1YnN0cmluZygxLHIuaGFzaC5sZW5ndGgpOnZvaWQgMH19ZnVuY3Rpb24gYihlLHQpe3JldHVybiB0P0MoZSk6ZX1mdW5jdGlvbiB3KGUsdCxyKXtsZXQgbjtpZih0eXBlb2YgdC5iYXNlVVJMPT1cInN0cmluZ1wiKXRyeXtuPW5ldyBVUkwodC5iYXNlVVJMKSx0LnByb3RvY29sPT09dm9pZCAwXHUwMDI2XHUwMDI2KGUucHJvdG9jb2w9YihuLnByb3RvY29sLnN1YnN0cmluZygwLG4ucHJvdG9jb2wubGVuZ3RoLTEpLHIpKSwhclx1MDAyNlx1MDAyNnQucHJvdG9jb2w9PT12b2lkIDBcdTAwMjZcdTAwMjZ0Lmhvc3RuYW1lPT09dm9pZCAwXHUwMDI2XHUwMDI2dC5wb3J0PT09dm9pZCAwXHUwMDI2XHUwMDI2dC51c2VybmFtZT09PXZvaWQgMFx1MDAyNlx1MDAyNihlLnVzZXJuYW1lPWIobi51c2VybmFtZSxyKSksIXJcdTAwMjZcdTAwMjZ0LnByb3RvY29sPT09dm9pZCAwXHUwMDI2XHUwMDI2dC5ob3N0bmFtZT09PXZvaWQgMFx1MDAyNlx1MDAyNnQucG9ydD09PXZvaWQgMFx1MDAyNlx1MDAyNnQudXNlcm5hbWU9PT12b2lkIDBcdTAwMjZcdTAwMjZ0LnBhc3N3b3JkPT09dm9pZCAwXHUwMDI2XHUwMDI2KGUucGFzc3dvcmQ9YihuLnBhc3N3b3JkLHIpKSx0LnByb3RvY29sPT09dm9pZCAwXHUwMDI2XHUwMDI2dC5ob3N0bmFtZT09PXZvaWQgMFx1MDAyNlx1MDAyNihlLmhvc3RuYW1lPWIobi5ob3N0bmFtZSxyKSksdC5wcm90b2NvbD09PXZvaWQgMFx1MDAyNlx1MDAyNnQuaG9zdG5hbWU9PT12b2lkIDBcdTAwMjZcdTAwMjZ0LnBvcnQ9PT12b2lkIDBcdTAwMjZcdTAwMjYoZS5wb3J0PWIobi5wb3J0LHIpKSx0LnByb3RvY29sPT09dm9pZCAwXHUwMDI2XHUwMDI2dC5ob3N0bmFtZT09PXZvaWQgMFx1MDAyNlx1MDAyNnQucG9ydD09PXZvaWQgMFx1MDAyNlx1MDAyNnQucGF0aG5hbWU9PT12b2lkIDBcdTAwMjZcdTAwMjYoZS5wYXRobmFtZT1iKG4ucGF0aG5hbWUscikpLHQucHJvdG9jb2w9PT12b2lkIDBcdTAwMjZcdTAwMjZ0Lmhvc3RuYW1lPT09dm9pZCAwXHUwMDI2XHUwMDI2dC5wb3J0PT09dm9pZCAwXHUwMDI2XHUwMDI2dC5wYXRobmFtZT09PXZvaWQgMFx1MDAyNlx1MDAyNnQuc2VhcmNoPT09dm9pZCAwXHUwMDI2XHUwMDI2KGUuc2VhcmNoPWIobi5zZWFyY2guc3Vic3RyaW5nKDEsbi5zZWFyY2gubGVuZ3RoKSxyKSksdC5wcm90b2NvbD09PXZvaWQgMFx1MDAyNlx1MDAyNnQuaG9zdG5hbWU9PT12b2lkIDBcdTAwMjZcdTAwMjZ0LnBvcnQ9PT12b2lkIDBcdTAwMjZcdTAwMjZ0LnBhdGhuYW1lPT09dm9pZCAwXHUwMDI2XHUwMDI2dC5zZWFyY2g9PT12b2lkIDBcdTAwMjZcdTAwMjZ0Lmhhc2g9PT12b2lkIDBcdTAwMjZcdTAwMjYoZS5oYXNoPWIobi5oYXNoLnN1YnN0cmluZygxLG4uaGFzaC5sZW5ndGgpLHIpKX1jYXRjaHt0aHJvdyBuZXcgVHlwZUVycm9yKGBpbnZhbGlkIGJhc2VVUkwgJyR7dC5iYXNlVVJMfScuYCl9aWYodHlwZW9mIHQucHJvdG9jb2w9PVwic3RyaW5nXCJcdTAwMjZcdTAwMjYoZS5wcm90b2NvbD1jZSh0LnByb3RvY29sLHIpKSx0eXBlb2YgdC51c2VybmFtZT09XCJzdHJpbmdcIlx1MDAyNlx1MDAyNihlLnVzZXJuYW1lPWllKHQudXNlcm5hbWUscikpLHR5cGVvZiB0LnBhc3N3b3JkPT1cInN0cmluZ1wiXHUwMDI2XHUwMDI2KGUucGFzc3dvcmQ9c2UodC5wYXNzd29yZCxyKSksdHlwZW9mIHQuaG9zdG5hbWU9PVwic3RyaW5nXCJcdTAwMjZcdTAwMjYoZS5ob3N0bmFtZT1uZSh0Lmhvc3RuYW1lLHIpKSx0eXBlb2YgdC5wb3J0PT1cInN0cmluZ1wiXHUwMDI2XHUwMDI2KGUucG9ydD1vZSh0LnBvcnQsZS5wcm90b2NvbCxyKSksdHlwZW9mIHQucGF0aG5hbWU9PVwic3RyaW5nXCIpe2lmKGUucGF0aG5hbWU9dC5wYXRobmFtZSxuXHUwMDI2XHUwMDI2IUooZS5wYXRobmFtZSxyKSl7bGV0IG89bi5wYXRobmFtZS5sYXN0SW5kZXhPZihcIi9cIik7b1x1MDAzZT0wXHUwMDI2XHUwMDI2KGUucGF0aG5hbWU9YihuLnBhdGhuYW1lLnN1YnN0cmluZygwLG8rMSkscikrZS5wYXRobmFtZSl9ZS5wYXRobmFtZT1hZShlLnBhdGhuYW1lLGUucHJvdG9jb2wscil9cmV0dXJuIHR5cGVvZiB0LnNlYXJjaD09XCJzdHJpbmdcIlx1MDAyNlx1MDAyNihlLnNlYXJjaD1yZSh0LnNlYXJjaCxyKSksdHlwZW9mIHQuaGFzaD09XCJzdHJpbmdcIlx1MDAyNlx1MDAyNihlLmhhc2g9dGUodC5oYXNoLHIpKSxlfWZ1bmN0aW9uIEMoZSl7cmV0dXJuIGUucmVwbGFjZSgvKFsrKj86e30oKVxcXFxdKS9nLFwiXFxcXCQxXCIpfWZ1bmN0aW9uIE9lKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbLisqP14ke30oKVtcXF18L1xcXFxdKS9nLFwiXFxcXCQxXCIpfWZ1bmN0aW9uIGtlKGUsdCl7dC5kZWxpbWl0ZXI/Pz1cIi8jP1wiLHQucHJlZml4ZXM/Pz1cIi4vXCIsdC5zZW5zaXRpdmU/Pz0hMSx0LnN0cmljdD8/PSExLHQuZW5kPz89ITAsdC5zdGFydD8/PSEwLHQuZW5kc1dpdGg9XCJcIjtsZXQgcj1cIi4qXCIsbj1gW14ke09lKHQuZGVsaW1pdGVyKX1dKz9gLG89L1skX1xcdTIwMENcXHUyMDBEXFxwe0lEX0NvbnRpbnVlfV0vdSxjPVwiXCI7Zm9yKGxldCBsPTA7bFx1MDAzY2UubGVuZ3RoOysrbCl7bGV0IHM9ZVtsXTtpZihzLnR5cGU9PT0zKXtpZihzLm1vZGlmaWVyPT09Myl7Yys9QyhzLnZhbHVlKTtjb250aW51ZX1jKz1geyR7QyhzLnZhbHVlKX19JHtrKHMubW9kaWZpZXIpfWA7Y29udGludWV9bGV0IGk9cy5oYXNDdXN0b21OYW1lKCksYT0hIXMuc3VmZml4Lmxlbmd0aHx8ISFzLnByZWZpeC5sZW5ndGhcdTAwMjZcdTAwMjYocy5wcmVmaXgubGVuZ3RoIT09MXx8IXQucHJlZml4ZXMuaW5jbHVkZXMocy5wcmVmaXgpKSxmPWxcdTAwM2UwP2VbbC0xXTpudWxsLGQ9bFx1MDAzY2UubGVuZ3RoLTE/ZVtsKzFdOm51bGw7aWYoIWFcdTAwMjZcdTAwMjZpXHUwMDI2XHUwMDI2cy50eXBlPT09MVx1MDAyNlx1MDAyNnMubW9kaWZpZXI9PT0zXHUwMDI2XHUwMDI2ZFx1MDAyNlx1MDAyNiFkLnByZWZpeC5sZW5ndGhcdTAwMjZcdTAwMjYhZC5zdWZmaXgubGVuZ3RoKWlmKGQudHlwZT09PTMpe2xldCBUPWQudmFsdWUubGVuZ3RoXHUwMDNlMD9kLnZhbHVlWzBdOlwiXCI7YT1vLnRlc3QoVCl9ZWxzZSBhPSFkLmhhc0N1c3RvbU5hbWUoKTtpZighYVx1MDAyNlx1MDAyNiFzLnByZWZpeC5sZW5ndGhcdTAwMjZcdTAwMjZmXHUwMDI2XHUwMDI2Zi50eXBlPT09Myl7bGV0IFQ9Zi52YWx1ZVtmLnZhbHVlLmxlbmd0aC0xXTthPXQucHJlZml4ZXMuaW5jbHVkZXMoVCl9YVx1MDAyNlx1MDAyNihjKz1cIntcIiksYys9QyhzLnByZWZpeCksaVx1MDAyNlx1MDAyNihjKz1gOiR7cy5uYW1lfWApLHMudHlwZT09PTI/Yys9YCgke3MudmFsdWV9KWA6cy50eXBlPT09MT9pfHwoYys9YCgke259KWApOnMudHlwZT09PTBcdTAwMjZcdTAwMjYoIWlcdTAwMjZcdTAwMjYoIWZ8fGYudHlwZT09PTN8fGYubW9kaWZpZXIhPT0zfHxhfHxzLnByZWZpeCE9PVwiXCIpP2MrPVwiKlwiOmMrPWAoJHtyfSlgKSxzLnR5cGU9PT0xXHUwMDI2XHUwMDI2aVx1MDAyNlx1MDAyNnMuc3VmZml4Lmxlbmd0aFx1MDAyNlx1MDAyNm8udGVzdChzLnN1ZmZpeFswXSlcdTAwMjZcdTAwMjYoYys9XCJcXFxcXCIpLGMrPUMocy5zdWZmaXgpLGFcdTAwMjZcdTAwMjYoYys9XCJ9XCIpLHMubW9kaWZpZXIhPT0zXHUwMDI2XHUwMDI2KGMrPWsocy5tb2RpZmllcikpfXJldHVybiBjfXZhciBtZT1jbGFzc3sjaTsjbj17fTsjdD17fTsjZT17fTsjcz17fTsjbD0hMTtjb25zdHJ1Y3Rvcih0PXt9LHIsbil7dHJ5e2xldCBvO2lmKHR5cGVvZiByPT1cInN0cmluZ1wiP289cjpuPXIsdHlwZW9mIHQ9PVwic3RyaW5nXCIpe2xldCBpPW5ldyBIKHQpO2lmKGkucGFyc2UoKSx0PWkucmVzdWx0LG89PT12b2lkIDBcdTAwMjZcdTAwMjZ0eXBlb2YgdC5wcm90b2NvbCE9XCJzdHJpbmdcIil0aHJvdyBuZXcgVHlwZUVycm9yKFwiQSBiYXNlIFVSTCBtdXN0IGJlIHByb3ZpZGVkIGZvciBhIHJlbGF0aXZlIGNvbnN0cnVjdG9yIHN0cmluZy5cIik7dC5iYXNlVVJMPW99ZWxzZXtpZighdHx8dHlwZW9mIHQhPVwib2JqZWN0XCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcInBhcmFtZXRlciAxIGlzIG5vdCBvZiB0eXBlICdzdHJpbmcnIGFuZCBjYW5ub3QgY29udmVydCB0byBkaWN0aW9uYXJ5LlwiKTtpZihvKXRocm93IG5ldyBUeXBlRXJyb3IoXCJwYXJhbWV0ZXIgMSBpcyBub3Qgb2YgdHlwZSAnc3RyaW5nJy5cIil9dHlwZW9mIG5cdTAwM2VcInVcIlx1MDAyNlx1MDAyNihuPXtpZ25vcmVDYXNlOiExfSk7bGV0IGM9e2lnbm9yZUNhc2U6bi5pZ25vcmVDYXNlPT09ITB9LGw9e3BhdGhuYW1lOkUscHJvdG9jb2w6RSx1c2VybmFtZTpFLHBhc3N3b3JkOkUsaG9zdG5hbWU6RSxwb3J0OkUsc2VhcmNoOkUsaGFzaDpFfTt0aGlzLiNpPXcobCx0LCEwKSxfKHRoaXMuI2kucHJvdG9jb2wpPT09dGhpcy4jaS5wb3J0XHUwMDI2XHUwMDI2KHRoaXMuI2kucG9ydD1cIlwiKTtsZXQgcztmb3IocyBvZiBHKXtpZighKHMgaW4gdGhpcy4jaSkpY29udGludWU7bGV0IGk9e30sYT10aGlzLiNpW3NdO3N3aXRjaCh0aGlzLiN0W3NdPVtdLHMpe2Nhc2VcInByb3RvY29sXCI6T2JqZWN0LmFzc2lnbihpLHgpLGkuZW5jb2RlUGFydD15O2JyZWFrO2Nhc2VcInVzZXJuYW1lXCI6T2JqZWN0LmFzc2lnbihpLHgpLGkuZW5jb2RlUGFydD1sZTticmVhaztjYXNlXCJwYXNzd29yZFwiOk9iamVjdC5hc3NpZ24oaSx4KSxpLmVuY29kZVBhcnQ9ZmU7YnJlYWs7Y2FzZVwiaG9zdG5hbWVcIjpPYmplY3QuYXNzaWduKGksQiksVyhhKT9pLmVuY29kZVBhcnQ9ajppLmVuY29kZVBhcnQ9ejticmVhaztjYXNlXCJwb3J0XCI6T2JqZWN0LmFzc2lnbihpLHgpLGkuZW5jb2RlUGFydD1LO2JyZWFrO2Nhc2VcInBhdGhuYW1lXCI6Tih0aGlzLiNuLnByb3RvY29sKT8oT2JqZWN0LmFzc2lnbihpLHEsYyksaS5lbmNvZGVQYXJ0PWhlKTooT2JqZWN0LmFzc2lnbihpLHgsYyksaS5lbmNvZGVQYXJ0PXVlKTticmVhaztjYXNlXCJzZWFyY2hcIjpPYmplY3QuYXNzaWduKGkseCxjKSxpLmVuY29kZVBhcnQ9ZGU7YnJlYWs7Y2FzZVwiaGFzaFwiOk9iamVjdC5hc3NpZ24oaSx4LGMpLGkuZW5jb2RlUGFydD1wZTticmVha310cnl7dGhpcy4jc1tzXT1EKGEsaSksdGhpcy4jbltzXT1GKHRoaXMuI3Nbc10sdGhpcy4jdFtzXSxpKSx0aGlzLiNlW3NdPWtlKHRoaXMuI3Nbc10saSksdGhpcy4jbD10aGlzLiNsfHx0aGlzLiNzW3NdLnNvbWUoZj1cdTAwM2VmLnR5cGU9PT0yKX1jYXRjaHt0aHJvdyBuZXcgVHlwZUVycm9yKGBpbnZhbGlkICR7c30gcGF0dGVybiAnJHt0aGlzLiNpW3NdfScuYCl9fX1jYXRjaChvKXt0aHJvdyBuZXcgVHlwZUVycm9yKGBGYWlsZWQgdG8gY29uc3RydWN0ICdVUkxQYXR0ZXJuJzogJHtvLm1lc3NhZ2V9YCl9fXRlc3QodD17fSxyKXtsZXQgbj17cGF0aG5hbWU6XCJcIixwcm90b2NvbDpcIlwiLHVzZXJuYW1lOlwiXCIscGFzc3dvcmQ6XCJcIixob3N0bmFtZTpcIlwiLHBvcnQ6XCJcIixzZWFyY2g6XCJcIixoYXNoOlwiXCJ9O2lmKHR5cGVvZiB0IT1cInN0cmluZ1wiXHUwMDI2XHUwMDI2cil0aHJvdyBuZXcgVHlwZUVycm9yKFwicGFyYW1ldGVyIDEgaXMgbm90IG9mIHR5cGUgJ3N0cmluZycuXCIpO2lmKHR5cGVvZiB0XHUwMDNlXCJ1XCIpcmV0dXJuITE7dHJ5e3R5cGVvZiB0PT1cIm9iamVjdFwiP249dyhuLHQsITEpOm49dyhuLGdlKHQsciksITEpfWNhdGNoe3JldHVybiExfWxldCBvO2ZvcihvIG9mIEcpaWYoIXRoaXMuI25bb10uZXhlYyhuW29dKSlyZXR1cm4hMTtyZXR1cm4hMH1leGVjKHQ9e30scil7bGV0IG49e3BhdGhuYW1lOlwiXCIscHJvdG9jb2w6XCJcIix1c2VybmFtZTpcIlwiLHBhc3N3b3JkOlwiXCIsaG9zdG5hbWU6XCJcIixwb3J0OlwiXCIsc2VhcmNoOlwiXCIsaGFzaDpcIlwifTtpZih0eXBlb2YgdCE9XCJzdHJpbmdcIlx1MDAyNlx1MDAyNnIpdGhyb3cgbmV3IFR5cGVFcnJvcihcInBhcmFtZXRlciAxIGlzIG5vdCBvZiB0eXBlICdzdHJpbmcnLlwiKTtpZih0eXBlb2YgdFx1MDAzZVwidVwiKXJldHVybjt0cnl7dHlwZW9mIHQ9PVwib2JqZWN0XCI/bj13KG4sdCwhMSk6bj13KG4sZ2UodCxyKSwhMSl9Y2F0Y2h7cmV0dXJuIG51bGx9bGV0IG89e307cj9vLmlucHV0cz1bdCxyXTpvLmlucHV0cz1bdF07bGV0IGM7Zm9yKGMgb2YgRyl7bGV0IGw9dGhpcy4jbltjXS5leGVjKG5bY10pO2lmKCFsKXJldHVybiBudWxsO2xldCBzPXt9O2ZvcihsZXRbaSxhXW9mIHRoaXMuI3RbY10uZW50cmllcygpKWlmKHR5cGVvZiBhPT1cInN0cmluZ1wifHx0eXBlb2YgYT09XCJudW1iZXJcIil7bGV0IGY9bFtpKzFdO3NbYV09Zn1vW2NdPXtpbnB1dDpuW2NdPz9cIlwiLGdyb3VwczpzfX1yZXR1cm4gb31zdGF0aWMgY29tcGFyZUNvbXBvbmVudCh0LHIsbil7bGV0IG89KGksYSk9XHUwMDNle2ZvcihsZXQgZiBvZltcInR5cGVcIixcIm1vZGlmaWVyXCIsXCJwcmVmaXhcIixcInZhbHVlXCIsXCJzdWZmaXhcIl0pe2lmKGlbZl1cdTAwM2NhW2ZdKXJldHVybi0xO2lmKGlbZl09PT1hW2ZdKWNvbnRpbnVlO3JldHVybiAxfXJldHVybiAwfSxjPW5ldyBSKDMsXCJcIixcIlwiLFwiXCIsXCJcIiwzKSxsPW5ldyBSKDAsXCJcIixcIlwiLFwiXCIsXCJcIiwzKSxzPShpLGEpPVx1MDAzZXtsZXQgZj0wO2Zvcig7Zlx1MDAzY01hdGgubWluKGkubGVuZ3RoLGEubGVuZ3RoKTsrK2Ype2xldCBkPW8oaVtmXSxhW2ZdKTtpZihkKXJldHVybiBkfXJldHVybiBpLmxlbmd0aD09PWEubGVuZ3RoPzA6byhpW2ZdPz9jLGFbZl0/P2MpfTtyZXR1cm4hci4jZVt0XVx1MDAyNlx1MDAyNiFuLiNlW3RdPzA6ci4jZVt0XVx1MDAyNlx1MDAyNiFuLiNlW3RdP3Moci4jc1t0XSxbbF0pOiFyLiNlW3RdXHUwMDI2XHUwMDI2bi4jZVt0XT9zKFtsXSxuLiNzW3RdKTpzKHIuI3NbdF0sbi4jc1t0XSl9Z2V0IHByb3RvY29sKCl7cmV0dXJuIHRoaXMuI2UucHJvdG9jb2x9Z2V0IHVzZXJuYW1lKCl7cmV0dXJuIHRoaXMuI2UudXNlcm5hbWV9Z2V0IHBhc3N3b3JkKCl7cmV0dXJuIHRoaXMuI2UucGFzc3dvcmR9Z2V0IGhvc3RuYW1lKCl7cmV0dXJuIHRoaXMuI2UuaG9zdG5hbWV9Z2V0IHBvcnQoKXtyZXR1cm4gdGhpcy4jZS5wb3J0fWdldCBwYXRobmFtZSgpe3JldHVybiB0aGlzLiNlLnBhdGhuYW1lfWdldCBzZWFyY2goKXtyZXR1cm4gdGhpcy4jZS5zZWFyY2h9Z2V0IGhhc2goKXtyZXR1cm4gdGhpcy4jZS5oYXNofWdldCBoYXNSZWdFeHBHcm91cHMoKXtyZXR1cm4gdGhpcy4jbH19O2V4cG9ydHttZSBhcyBVUkxQYXR0ZXJufTtcbiIsICJpbXBvcnQgeyBVUkxQYXR0ZXJuIH0gZnJvbSBcIi4vZGlzdC91cmxwYXR0ZXJuLmpzXCI7XG5cbmV4cG9ydCB7IFVSTFBhdHRlcm4gfTtcblxuaWYgKCFnbG9iYWxUaGlzLlVSTFBhdHRlcm4pIHtcbiAgZ2xvYmFsVGhpcy5VUkxQYXR0ZXJuID0gVVJMUGF0dGVybjtcbn1cbiIsICJpbXBvcnQgeyBidWlsZCwgaW5pdGlhbGl6ZSB9IGZyb20gXCIuL2RlcHMvZXNidWlsZC13YXNtLnRzXCI7XG5pbXBvcnQgeyByZXNvbHZlciB9IGZyb20gXCIuL2RlcHMvZXNidWlsZF9kZW5vX2xvYWRlci50c1wiO1xuaW1wb3J0IHsgY3JlYXRlRXJyLCBjcmVhdGVPayB9IGZyb20gXCIuL2RlcHMvb3B0aW9uLXQudHNcIjtcbmltcG9ydCB7IGZpbmRMYXRlc3RDYWNoZSwgc2F2ZUFwaUNhY2hlIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuaW1wb3J0IHsgQXZhaWxhYmxlRXh0ZW5zaW9ucyB9IGZyb20gXCIuL2V4dGVuc2lvbi50c1wiO1xuaW1wb3J0IHsgaXNBbGxvd2VkQ29ubmVjdFNyYyB9IGZyb20gXCIuL2lzQWxsb3dlZENvbm5lY3RTcmMudHNcIjtcbmltcG9ydCB7IHJlbW90ZUxvYWRlciB9IGZyb20gXCIuL3JlbW90ZUxvYWRlci50c1wiO1xuaW1wb3J0IHsgUm9idXN0RmV0Y2ggfSBmcm9tIFwiLi9yb2J1c3RGZXRjaC50c1wiO1xuaW1wb3J0IFwiLi9kZXBzL3VybHBhdHRlcm4tcG9seWZpbGwudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCdW5kbGVPcHRpb25zIHtcbiAgZXh0ZW5zaW9uOiBBdmFpbGFibGVFeHRlbnNpb25zO1xuICBmaWxlTmFtZT86IHN0cmluZztcbiAgZGlyVVJMOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVuZGxlUmVzdWx0IHtcbiAgLyoqIGJ1aWx0IGNvZGUgKi9cbiAgY29udGVudHM6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQnVpbGRlciA9IChlbnRyeVBvaW50OiBzdHJpbmcpID0+IFByb21pc2U8QnVuZGxlUmVzdWx0PjtcblxubGV0IGluaXRpYWxpemVkOiBQcm9taXNlPHZvaWQ+IHwgdW5kZWZpbmVkO1xuXG4vKiogZXNidWlsZOOCkuiqreOBv+i+vOOBv+OAgWJ1aWxkZXLjgpLov5TjgZkgKi9cbmV4cG9ydCBjb25zdCBsb2FkID0gYXN5bmMgKFxuICB3YXNtOiBXZWJBc3NlbWJseS5Nb2R1bGUsXG4gIHdvcmtlclVSTDogc3RyaW5nIHwgVVJMLFxuKTogUHJvbWlzZTxCdWlsZGVyPiA9PiB7XG4gIGluaXRpYWxpemVkID8/PSBpbml0aWFsaXplKHtcbiAgICB3YXNtTW9kdWxlOiB3YXNtLFxuICAgIHdvcmtlclVSTCxcbiAgfSk7XG4gIGF3YWl0IGluaXRpYWxpemVkO1xuXG4gIHJldHVybiBhc3luYyAoZW50cnlQb2ludCkgPT4ge1xuICAgIGNvbnN0IHsgb3V0cHV0RmlsZXMgfSA9IGF3YWl0IGJ1aWxkKHtcbiAgICAgIGVudHJ5UG9pbnRzOiBbZW50cnlQb2ludF0sXG4gICAgICBmb3JtYXQ6IFwiZXNtXCIsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBtaW5pZnk6IHRydWUsXG4gICAgICBjaGFyc2V0OiBcInV0ZjhcIixcbiAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgcmVzb2x2ZXIoKSxcbiAgICAgICAgcmVtb3RlTG9hZGVyKHtcbiAgICAgICAgICBmZXRjaDogZmV0Y2hDT1JTLFxuICAgICAgICAgIHJlbG9hZDogW1xuICAgICAgICAgICAgbmV3IFVSTFBhdHRlcm4oeyBob3N0bmFtZTogbG9jYXRpb24uaG9zdG5hbWUgfSksXG4gICAgICAgICAgICBuZXcgVVJMUGF0dGVybih7IGhvc3RuYW1lOiBcInNjcmFwYm94LmlvXCIgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnRzOiBvdXRwdXRGaWxlc1swXS50ZXh0LFxuICAgIH07XG4gIH07XG59O1xuXG5kZWNsYXJlIGNvbnN0IEdNX2ZldGNoOiAodHlwZW9mIGdsb2JhbFRoaXMuZmV0Y2gpIHwgdW5kZWZpbmVkO1xuY29uc3QgZmV0Y2hDT1JTOiBSb2J1c3RGZXRjaCA9IGFzeW5jIChcbiAgcmVxLFxuICBjYWNoZUZpcnN0LFxuKSA9PiB7XG4gIGNvbnN0IGZldGNoXyA9IGlzQWxsb3dlZENvbm5lY3RTcmMobmV3IFVSTChyZXEudXJsKSkgfHwgIUdNX2ZldGNoXG4gICAgPyBnbG9iYWxUaGlzLmZldGNoXG4gICAgOiBHTV9mZXRjaDtcbiAgaWYgKGNhY2hlRmlyc3QpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhdHRlbXB0RnJvbUNhY2hlKHJlcSk7XG4gICAgaWYgKHJlc3VsdCkgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoXyhyZXEpO1xuICAgIGlmIChyZXMub2spIHtcbiAgICAgIGlmIChmZXRjaF8gPT09IEdNX2ZldGNoICYmICFyZXEudXJsLnN0YXJ0c1dpdGgoXCJkYXRhOlwiKSkge1xuICAgICAgICBhd2FpdCBzYXZlQXBpQ2FjaGUocmVxLCByZXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNyZWF0ZU9rKFtyZXMsIGZhbHNlXSk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF0dGVtcHRGcm9tQ2FjaGUocmVxKTtcbiAgICByZXR1cm4gcmVzdWx0ID8/IGNyZWF0ZUVycih7XG4gICAgICBuYW1lOiBcIkhUVFBFcnJvclwiLFxuICAgICAgbWVzc2FnZTogYCR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH1gLFxuICAgICAgcmVzcG9uc2U6IHJlcyxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF0dGVtcHRGcm9tQ2FjaGUocmVxKTtcbiAgICBpZiAocmVzdWx0KSByZXR1cm4gcmVzdWx0O1xuICAgIGlmIChlIGluc3RhbmNlb2YgVHlwZUVycm9yKSB7XG4gICAgICByZXR1cm4gY3JlYXRlRXJyKHtcbiAgICAgICAgbmFtZTogXCJOZXR3b3JrRXJyb3JcIixcbiAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICByZXF1ZXN0OiByZXEsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBET01FeGNlcHRpb24pIHtcbiAgICAgIHJldHVybiBjcmVhdGVFcnIoe1xuICAgICAgICBuYW1lOiBcIkFib3J0RXJyb3JcIixcbiAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICByZXF1ZXN0OiByZXEsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufTtcblxuY29uc3QgYXR0ZW1wdEZyb21DYWNoZSA9IGFzeW5jIChyZXE6IFJlcXVlc3QpID0+IHtcbiAgaWYgKHJlcS51cmwuc3RhcnRzV2l0aChcImRhdGE6XCIpKSByZXR1cm47XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZpbmRMYXRlc3RDYWNoZShyZXEpO1xuICBpZiAocmVzKSB7XG4gICAgaWYgKCFyZXMudXJsKSBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzLCBcInVybFwiLCB7IHZhbHVlOiByZXEudXJsIH0pO1xuICAgIHJldHVybiBjcmVhdGVPayhbcmVzLCB0cnVlXSBhcyBbUmVzcG9uc2UsIGJvb2xlYW5dKTtcbiAgfVxufTtcbiIsICJpbXBvcnQgeyBMb2FkZXIgfSBmcm9tIFwiLi9kZXBzL2VzYnVpbGQtd2FzbS50c1wiO1xuXG5leHBvcnQgdHlwZSBBdmFpbGFibGVFeHRlbnNpb25zID1cbiAgfCBcInRzXCJcbiAgfCBcImpzXCJcbiAgfCBcInRzeFwiXG4gIHwgXCJqc3hcIlxuICB8IFwibWpzXCJcbiAgfCBcImphdmFzY3JpcHRcIlxuICB8IFwidHlwZXNjcmlwdFwiO1xuZXhwb3J0IGNvbnN0IGlzQXZhaWxhYmxlRXh0ZW5zaW9ucyA9IChcbiAgZXh0ZW5zaW9uOiBzdHJpbmcsXG4pOiBleHRlbnNpb24gaXMgQXZhaWxhYmxlRXh0ZW5zaW9ucyA9PlxuICBbXCJ0c1wiLCBcImpzXCIsIFwidHN4XCIsIFwianN4XCIsIFwibWpzXCIsIFwiamF2YXNjcmlwdFwiLCBcInR5cGVzY3JpcHRcIl0uaW5jbHVkZXMoXG4gICAgZXh0ZW5zaW9uLFxuICApO1xuXG5leHBvcnQgY29uc3QgZXh0ZW5zaW9uVG9Mb2FkZXIgPSAoZXh0ZW5zaW9uOiBBdmFpbGFibGVFeHRlbnNpb25zKTogTG9hZGVyID0+IHtcbiAgc3dpdGNoIChleHRlbnNpb24pIHtcbiAgICBjYXNlIFwiamF2YXNjcmlwdFwiOlxuICAgIGNhc2UgXCJqc1wiOlxuICAgIGNhc2UgXCJtanNcIjpcbiAgICAgIHJldHVybiBcImpzXCIgYXMgY29uc3Q7XG4gICAgY2FzZSBcInR5cGVzY3JpcHRcIjpcbiAgICBjYXNlIFwidHNcIjpcbiAgICAgIHJldHVybiBcInRzXCIgYXMgY29uc3Q7XG4gICAgY2FzZSBcImpzeFwiOlxuICAgICAgcmV0dXJuIFwianN4XCIgYXMgY29uc3Q7XG4gICAgY2FzZSBcInRzeFwiOlxuICAgICAgcmV0dXJuIFwidHN4XCIgYXMgY29uc3Q7XG4gIH1cbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIvPlxuXG5leHBvcnQgY29uc3QgY2hlY2tDaXJjbGVGaWxsID0gKCkgPT4ge1xuICBjb25zdCBpY29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlcIik7XG4gIGljb24uY2xhc3NMaXN0LmFkZChcImthbW9uXCIsIFwia2Ftb24tY2hlY2stY2lyY2xlLWZpbGxcIik7XG4gIGljb24uc3R5bGUuY29sb3IgPSBcImhzbCgxMzMsIDQ2LjElLCA0Ny4zJSlcIjtcbiAgcmV0dXJuIGljb247XG59O1xuXG5leHBvcnQgY29uc3QgY3Jvc3NDaXJjbGUgPSAoKSA9PiB7XG4gIGNvbnN0IGljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaVwiKTtcbiAgaWNvbi5jbGFzc0xpc3QuYWRkKFwia2Ftb25cIiwgXCJrYW1vbi1jcm9zcy1jaXJjbGVcIik7XG4gIGljb24uc3R5bGUuY29sb3IgPSBcImhzbCgxLjcsIDY0LjUlLCA1OCUpXCI7XG4gIHJldHVybiBpY29uO1xufTtcblxuZXhwb3J0IGNvbnN0IHNwaW5uZXIgPSAoKSA9PiB7XG4gIGNvbnN0IGljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaVwiKTtcbiAgaWNvbi5jbGFzc0xpc3QuYWRkKFwiaVwiLCBcImZhXCIsIFwiZmEtc3Bpbm5lclwiKTtcbiAgcmV0dXJuIGljb247XG59O1xuXG5leHBvcnQgY29uc3QgcGxheSA9ICgpID0+IHtcbiAgY29uc3QgaWNvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpXCIpO1xuICBpY29uLmNsYXNzTGlzdC5hZGQoXCJrYW1vblwiLCBcImthbW9uLXBsYXlcIik7XG4gIHJldHVybiBpY29uO1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIi8+XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9zaXRpb24ge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IHRvb2x0aXAgPSAoKSA9PiB7XG4gIGxldCB0b29sdGlwOiBIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICBjb25zdCBzaG93ID0gKHRleHQ6IHN0cmluZywgeyB4LCB5IH06IFBvc2l0aW9uKSA9PiB7XG4gICAgdG9vbHRpcCA9IGNyZWF0ZUNvbnRhaW5lcigpO1xuICAgIHRvb2x0aXAuYXBwZW5kKGlubmVyKHRleHQpKTtcbiAgICAvLyDopovjgYjjgarjgYTnirbmhYvjgadET03jgpLlrp/kvZPljJbjgZXjgZvjgabjgIHluYXjgajpq5jjgZXjgpLoqIjnrpfjgZnjgotcbiAgICB0b29sdGlwLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHRvb2x0aXApO1xuICAgIGNvbnN0IHsgaGVpZ2h0IH0gPSB0b29sdGlwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHRvb2x0aXAuc3R5bGUudG9wID0gYCR7eSAtIGhlaWdodH1weGA7XG4gICAgdG9vbHRpcC5zdHlsZS5sZWZ0ID0gYCR7eH1weGA7XG4gICAgdG9vbHRpcC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcInZpc2liaWxpdHlcIik7XG4gIH07XG4gIGNvbnN0IGhpZGUgPSBhc3luYyAoKSA9PiB7XG4gICAgdG9vbHRpcD8uY2xhc3NMaXN0Py5yZW1vdmU/LihcImluXCIpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDE1MCkpO1xuICAgIHRvb2x0aXA/LnJlbW92ZT8uKCk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBzaG93LFxuICAgIGhpZGUsXG4gIH07XG59O1xuXG5jb25zdCBjcmVhdGVDb250YWluZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHRvb2x0aXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICB0b29sdGlwLnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJ0b29sdGlwXCIpO1xuICB0b29sdGlwLmNsYXNzTGlzdC5hZGQoXCJmYWRlXCIsIFwiaW5cIiwgXCJ0b29sdGlwXCIsIFwidG9wXCIpO1xuICByZXR1cm4gdG9vbHRpcDtcbn07XG5cbmNvbnN0IGlubmVyID0gKHRleHQ6IHN0cmluZykgPT4ge1xuICBjb25zdCBpbm5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJwcmVcIik7XG4gIGlubmVyLmNsYXNzTGlzdC5hZGQoXCJ0b29sdGlwLWlubmVyXCIpO1xuICBpbm5lci5zdHlsZS50ZXh0QWxpZ24gPSBcInVuc2V0XCI7XG4gIGlubmVyLnN0eWxlLm1heFdpZHRoID0gXCI3MHZ3XCI7XG4gIGlubmVyLnN0eWxlLm1hcmdpbiA9IFwidW5zZXRcIjtcbiAgaW5uZXIuaW5uZXJUZXh0ID0gdGV4dDtcbiAgcmV0dXJuIGlubmVyO1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIi8+XG5cbmltcG9ydCB7IGNoZWNrQ2lyY2xlRmlsbCwgY3Jvc3NDaXJjbGUsIHNwaW5uZXIgfSBmcm9tIFwiLi9pY29ucy50c1wiO1xuaW1wb3J0IHsgdG9vbHRpcCB9IGZyb20gXCIuL3Rvb2x0aXAudHNcIjtcbmV4cG9ydCB0eXBlIFN0YXR1cyA9IFwibG9hZGluZ1wiIHwgXCJwYXNzXCIgfCBcImZhaWxcIiB8IFwibm9uZVwiO1xuXG5leHBvcnQgY29uc3Qgc3RhdHVzQnV0dG9uID0gKCkgPT4ge1xuICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gIGEuY2xhc3NMaXN0LmFkZChcInRvb2wtYnRuXCIpO1xuICBhLnR5cGUgPSBcImJ1dHRvblwiO1xuICBhLnNldEF0dHJpYnV0ZShcImFyaWEtaGFzcG9wdXBcIiwgXCJ0cnVlXCIpO1xuICBsZXQgdmlzaWJsZSA9IGZhbHNlO1xuICBjb25zdCB7IHNob3csIGhpZGUgfSA9IHRvb2x0aXAoKTtcblxuICBjb25zdCBzZXRTdGF0dXMgPSBhc3luYyAoc3RhdHVzOiBTdGF0dXMsIG1lc3NhZ2U/OiBzdHJpbmcpID0+IHtcbiAgICBhLnRleHRDb250ZW50ID0gXCJcIjtcbiAgICBhd2FpdCBoaWRlKCk7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgXCJsb2FkaW5nXCI6XG4gICAgICAgIGEuYXBwZW5kKHNwaW5uZXIoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInBhc3NcIjpcbiAgICAgICAgYS5hcHBlbmQoY2hlY2tDaXJjbGVGaWxsKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJmYWlsXCI6XG4gICAgICAgIGEuYXBwZW5kKGNyb3NzQ2lyY2xlKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJub25lXCI6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZSAhPT0gdW5kZWZpbmVkICYmIHN0YXR1cyAhPT0gXCJub25lXCIpIHtcbiAgICAgIGEuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJwb2ludGVyLWV2ZW50c1wiKTtcbiAgICAgIGEub25jbGljayA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKHZpc2libGUpIHtcbiAgICAgICAgICBhd2FpdCBoaWRlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgeyB0b3AsIGxlZnQgfSA9IGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgc2hvdyhtZXNzYWdlLCB7XG4gICAgICAgICAgICB5OiB0b3AgKyBnbG9iYWxUaGlzLnNjcm9sbFksXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZpc2libGUgPSAhdmlzaWJsZTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEuc3R5bGUucG9pbnRlckV2ZW50cyA9IFwibm9uZVwiO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGNvbXBvbmVudDogYSxcbiAgICBzZXRTdGF0dXMsXG4gIH07XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiLz5cblxuaW1wb3J0IHsgcGxheSB9IGZyb20gXCIuL2ljb25zLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBleGVjQnV0dG9uID0gKG9uQ2xpY2s6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZCkgPT4ge1xuICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gIGEuY2xhc3NMaXN0LmFkZChcInRvb2wtYnRuXCIpO1xuICBhLnR5cGUgPSBcImJ1dHRvblwiO1xuICBhLnNldEF0dHJpYnV0ZShcImFyaWEtaGFzcG9wdXBcIiwgXCJ0cnVlXCIpO1xuICBhLmFwcGVuZChwbGF5KCkpO1xuICBhLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBvbkNsaWNrKTtcbiAgcmV0dXJuIGE7XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiLz5cblxuaW1wb3J0IHsgc3RhdHVzQnV0dG9uIH0gZnJvbSBcIi4vc3RhdHVzLnRzXCI7XG5pbXBvcnQgeyBleGVjQnV0dG9uIH0gZnJvbSBcIi4vZXhlY0J1dHRvbi50c1wiO1xuXG5leHBvcnQgY29uc3QgZXhlY01lbnUgPSAob25DbGljazogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkKSA9PiB7XG4gIGNvbnN0IHsgY29tcG9uZW50OiBzdGF0dXMsIHNldFN0YXR1cyB9ID0gc3RhdHVzQnV0dG9uKCk7XG4gIGNvbnN0IG1lbnUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICBtZW51LnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuICBtZW51LnN0eWxlLmxlZnQgPSBcIi0yZW1cIjtcbiAgbWVudS5zdHlsZS56SW5kZXggPSBcIjFcIjtcbiAgbWVudS5zdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XG4gIG1lbnUuc3R5bGUuZmxleEZsb3cgPSBcImNvbHVtblwiO1xuICBtZW51LmFwcGVuZChleGVjQnV0dG9uKG9uQ2xpY2spLCBzdGF0dXMpO1xuICByZXR1cm4geyBtZW51LCBzZXRTdGF0dXMgfTtcbn07XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIHNsZWVwKG1pbGxpc2Vjb25kczogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtaWxsaXNlY29uZHMpKTtcbn1cbiIsICJpbXBvcnQgeyBzbGVlcCB9IGZyb20gXCIuL3NsZWVwLnRzXCI7XG5cbi8qKiBPcHRpb25zIGZvciBgdGhyb3R0bGVgICovXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xuICAvKiogSWYgaXQncyBzZXQgdG8gYHRydWVgIGFuZCBxdWV1ZSBpc24ndCBlbXB0eSwgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGFnYWluIGF0IHRoZSBlbmQuXG4gICAqXG4gICAqIGRlZmF1bHQ6IGBmYWxzZWBcbiAgICovXG4gIHRyYWlsaW5nPzogYm9vbGVhbjtcblxuICBpbnRlcnZhbD86IG51bWJlcjtcbn1cbi8qKiBSZXN1bHQgb2YgYHRocm90dGxlYCAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXN1bHQ8VT4ge1xuICAvKiogd2hldGhlciB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgKi9cbiAgZXhlY3V0ZWQ6IGJvb2xlYW47XG4gIC8qKiB0aGUgcmVzdWx0IG9mIHRoZSBwcm92aWRlZCBmdW5jdGlvblxuICAgKlxuICAgKiBJZiB0aGUgZnVuY3Rpb24gaXMgbm90IGV4ZWN1dGVkLCBpdCBpcyBzZXQgdG8gYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlc3VsdD86IFU7XG59XG5cbnR5cGUgUmVzb2x2ZTxUPiA9IChfdmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPikgPT4gdm9pZDtcbnR5cGUgUmVqZWN0ID0gKHJlYXNvbj86IHVua25vd24pID0+IHZvaWQ7XG50eXBlIFF1ZXVlPFQsIFU+ID0ge1xuICBwYXJhbWV0ZXJzOiBUO1xuICByZXNvbHZlOiBSZXNvbHZlPFJlc3VsdDxVPj47XG4gIHJlamVjdDogUmVqZWN0O1xufTtcblxuLyoqIE1ha2UgdGhlIGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgb25seSBhdCBhIHRpbWVcbiAqXG4gKiBAcGFyYW0gY2FsbGJhY2sgdGhlIGFzeW5jIGZ1bmN0aW9uIG1ha2luZyBleGVjdXRlIG9ubHkgYXQgYSB0aW1lXG4gKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aHJvdHRsZTxUIGV4dGVuZHMgdW5rbm93bltdLCBVPihcbiAgY2FsbGJhY2s6ICguLi5fYXJnczogVCkgPT4gUHJvbWlzZTxVPixcbiAgb3B0aW9ucz86IE9wdGlvbnMsXG4pOiAoLi4ucGFyYW1ldGVyczogVCkgPT4gUHJvbWlzZTxSZXN1bHQ8VT4+IHtcbiAgY29uc3QgeyB0cmFpbGluZyA9IGZhbHNlLCBpbnRlcnZhbCA9IDAgfSA9IG9wdGlvbnMgPz8ge307XG4gIGxldCBxdWV1ZTogUXVldWU8VCwgVT4gfCB1bmRlZmluZWQ7XG4gIGxldCBydW5uaW5nID0gZmFsc2U7XG4gIGNvbnN0IHB1c2ggPSAoZGF0YT86IFF1ZXVlPFQsIFU+KSA9PiB7XG4gICAgcXVldWU/LnJlc29sdmU/Lih7IGV4ZWN1dGVkOiBmYWxzZSB9KTtcbiAgICBxdWV1ZSA9IGRhdGE7XG4gIH07XG4gIGNvbnN0IHBvcCA9ICgpOiBRdWV1ZTxULCBVPiA9PiB7XG4gICAgY29uc3QgeyAuLi5kYXRhIH0gPSBxdWV1ZTtcbiAgICBxdWV1ZSA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gZGF0YTtcbiAgfTtcblxuICBjb25zdCBydW5OZXh0ID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChydW5uaW5nIHx8ICFxdWV1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBydW5uaW5nID0gdHJ1ZTtcbiAgICBpZiAoaW50ZXJ2YWwgPiAwKSB7XG4gICAgICBhd2FpdCBzbGVlcChpbnRlcnZhbCk7XG4gICAgfVxuICAgIGNvbnN0IHsgcGFyYW1ldGVycywgcmVzb2x2ZSwgcmVqZWN0IH0gPSBwb3AoKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2FsbGJhY2soLi4ucGFyYW1ldGVycyk7XG5cbiAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgIHJlc29sdmUoeyByZXN1bHQsIGV4ZWN1dGVkOiB0cnVlIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHRyYWlsaW5nKSB7XG4gICAgICAgIGF3YWl0IHJ1bk5leHQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHB1c2goKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoLi4ucGFyYW1ldGVyczogVCkgPT5cbiAgICBuZXcgUHJvbWlzZTxSZXN1bHQ8VT4+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHB1c2goeyBwYXJhbWV0ZXJzLCByZXNvbHZlLCByZWplY3QgfSk7XG4gICAgICBydW5OZXh0KCk7XG4gICAgfSk7XG59XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tLml0ZXJhYmxlXCIvPlxuaW1wb3J0IHsgZ2V0Q29kZUZpbGVzIH0gZnJvbSBcIi4vY29kZUZpbGUudHNcIjtcbmltcG9ydCB7IEJ1aWxkZXIsIGxvYWQgfSBmcm9tIFwiLi9idW5kbGUudHNcIjtcbmltcG9ydCB7IGlzQXZhaWxhYmxlRXh0ZW5zaW9ucyB9IGZyb20gXCIuL2V4dGVuc2lvbi50c1wiO1xuaW1wb3J0IHsgZXZlbnROYW1lLCBTY3JhcGJveCwgdGFrZUludGVybmFsTGluZXMgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyBleGVjTWVudSB9IGZyb20gXCIuL2NvbXBvbmVudHMvZXhlY01lbnUudHNcIjtcbmltcG9ydCB7IHRocm90dGxlIH0gZnJvbSBcIi4vZGVwcy90aHJvdHRsZS50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmxldCBidW5kbGU6IEJ1aWxkZXIgfCB1bmRlZmluZWQ7XG5cbi8qKiBTY3JhcEp1cHl0ZXLjgpLotbfli5XjgZnjgotcbiAqXG4gKiBAcGFyYW0gd2FzbSBlc2J1aWxkLndhc23jga7jg4fjg7zjgr9cbiAqIEBwYXJhbSB3b3JrZXJVUkwgV2ViV29ya2VyIGNvZGXjgbjjga5VUkxcbiAqIEByZXR1cm4g57WC5LqG5Ye95pWwXG4gKi9cbmV4cG9ydCBjb25zdCBzZXR1cCA9IGFzeW5jIChcbiAgd2FzbTogV2ViQXNzZW1ibHkuTW9kdWxlLFxuICB3b3JrZXJVUkw6IHN0cmluZyB8IFVSTCxcbikgPT4ge1xuICBjb25zdCBtZW51cyA9IFtdIGFzIFJldHVyblR5cGU8dHlwZW9mIGV4ZWNNZW51PltdO1xuXG4gIGNvbnN0IHVwZGF0ZSA9IGFzeW5jICgpID0+IHtcbiAgICAvLyDjg5zjgr/jg7PjgpLlhajpg6jjg6rjgrvjg4Pjg4jjgZnjgotcbiAgICBtZW51cy5mb3JFYWNoKCh7IG1lbnUsIHNldFN0YXR1cyB9KSA9PiB7XG4gICAgICBzZXRTdGF0dXMoXCJub25lXCIpO1xuICAgICAgbWVudS5yZW1vdmUoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZpbGVzID0gZ2V0Q29kZUZpbGVzKFxuICAgICAgc2NyYXBib3guUHJvamVjdC5uYW1lLFxuICAgICAgc2NyYXBib3guUGFnZS50aXRsZSA/PyBcIlwiLFxuICAgICAgdGFrZUludGVybmFsTGluZXMoKSxcbiAgICApO1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZS5sYW5nLnRvTG93ZXJDYXNlKCk7XG4gICAgICAvLyBUUy9KU+S7peWkluOBr+eEoeimllxuICAgICAgaWYgKCFpc0F2YWlsYWJsZUV4dGVuc2lvbnMoZXh0ZW5zaW9uKSkgY29udGludWU7XG4gICAgICBmb3IgKGNvbnN0IGlkIG9mIGZpbGUuc3RhcnRJZHMpIHtcbiAgICAgICAgY29uc3QgbGluZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBMJHtpZH1gKTtcbiAgICAgICAgY29uc3QgeyBtZW51LCBzZXRTdGF0dXMgfSA9IGV4ZWNNZW51KFxuICAgICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHNldFN0YXR1cyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBidW5kbGUgPz89IGF3YWl0IGxvYWQod2FzbSwgd29ya2VyVVJMKTtcbiAgICAgICAgICAgICAgY29uc3QgeyBjb250ZW50cyB9ID0gYXdhaXQgYnVuZGxlKGZpbGUucGF0aCk7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoXCJleGVjdXRlOlwiLCBjb250ZW50cyk7XG4gICAgICAgICAgICAgIGF3YWl0IEZ1bmN0aW9uKGByZXR1cm4gKGFzeW5jKCk9Pnske2NvbnRlbnRzfX0pKClgKSgpO1xuICAgICAgICAgICAgICBhd2FpdCBzZXRTdGF0dXMoXCJwYXNzXCIpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICBhd2FpdCBzZXRTdGF0dXMoXCJmYWlsXCIsIGAke2V9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgbWVudXMucHVzaCh7IG1lbnUsIHNldFN0YXR1cyB9KTtcbiAgICAgICAgbGluZT8uaW5zZXJ0QmVmb3JlPy4obWVudSwgbGluZT8uZmlyc3RFbGVtZW50Q2hpbGQpO1xuICAgICAgfVxuICAgIH1cbiAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcbiAgfTtcbiAgY29uc3QgY2FsbGJhY2sgPSB0aHJvdHRsZSh1cGRhdGUsIHtcbiAgICBpbnRlcnZhbDogMTAwLFxuICAgIHRyYWlsaW5nOiB0cnVlLFxuICB9KTtcbiAgYXdhaXQgY2FsbGJhY2soKTtcbiAgc2NyYXBib3guYWRkTGlzdGVuZXIoXCJsaW5lczpjaGFuZ2VkXCIgYXMgZXZlbnROYW1lLCBjYWxsYmFjayk7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBzY3JhcGJveC5yZW1vdmVMaXN0ZW5lcihcImxpbmVzOmNoYW5nZWRcIiBhcyBldmVudE5hbWUsIGNhbGxiYWNrKTtcbiAgICBtZW51cy5mb3JFYWNoKCh7IG1lbnUsIHNldFN0YXR1cyB9KSA9PiB7XG4gICAgICBzZXRTdGF0dXMoXCJub25lXCIpO1xuICAgICAgbWVudS5yZW1vdmUoKTtcbiAgICB9KTtcbiAgfTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuLyoqIEBqc3hGcmFnIEZyYWdtZW50ICovXG5cbmltcG9ydCB7IEZyYWdtZW50LCBoLCB1c2VDYWxsYmFjayB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgZW5jb2RlVGl0bGVVUkkgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuZGlkYXRlUHJvcHMge1xuICB0aXRsZTogc3RyaW5nO1xuICBwcm9qZWN0czoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBtYXJrOiBzdHJpbmcgfCBVUkw7XG4gICAgY29uZmlybTogKCkgPT4gdm9pZDtcbiAgfVtdO1xuICBjb25maXJtOiAoKSA9PiB2b2lkO1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IENhbmRpZGF0ZSA9IChcbiAgeyB0aXRsZSwgcHJvamVjdHMsIHNlbGVjdGVkLCBjb25maXJtIH06IENhbmRpZGF0ZVByb3BzLFxuKSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2BjYW5kaWRhdGUke3NlbGVjdGVkID8gXCIgc2VsZWN0ZWRcIiA6IFwiXCJ9YH1cbiAgPlxuICAgIDxCdXR0b24gdGl0bGU9e3RpdGxlfSBjb25maXJtPXtjb25maXJtfSAvPlxuICAgIHtwcm9qZWN0cy5tYXAoKHByb2plY3QpID0+IChcbiAgICAgIDxNYXJrXG4gICAgICAgIHByb2plY3Q9e3Byb2plY3QubmFtZX1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBtYXJrPXtwcm9qZWN0Lm1hcmt9XG4gICAgICAgIGNvbmZpcm09e3Byb2plY3QuY29uZmlybX1cbiAgICAgIC8+XG4gICAgKSl9XG4gIDwvZGl2PlxuKTtcblxuaW50ZXJmYWNlIEJ1dHRvblByb3BzIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgY29uZmlybTogKCkgPT4gdm9pZDtcbn1cblxuY29uc3QgQnV0dG9uID0gKFxuICB7IHRpdGxlLCBjb25maXJtIH06IEJ1dHRvblByb3BzLFxuKSA9PiAoXG4gIDxhXG4gICAgY2xhc3NOYW1lPVwiYnV0dG9uXCJcbiAgICB0YWJJbmRleD17MH1cbiAgICByb2xlPVwibWVudWl0ZW1cIlxuICAgIGhyZWY9e2AuLyR7ZW5jb2RlVGl0bGVVUkkodGl0bGUpfWB9XG4gICAgb25DbGljaz17dXNlQ29uZmlybShjb25maXJtKX1cbiAgPlxuICAgIHt0aXRsZX1cbiAgPC9hPlxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBNYXJrUHJvcHMge1xuICBwcm9qZWN0OiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIC8qKiDnqbrmloflrZfjga7loLTlkIjjga/jgIHkvZXjgoLooajnpLrjgZfjgarjgYQgKi9cbiAgbWFyazogc3RyaW5nIHwgVVJMO1xuICBjb25maXJtOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgTWFyayA9IChcbiAgeyBwcm9qZWN0LCB0aXRsZSwgbWFyaywgY29uZmlybSB9OiBNYXJrUHJvcHMsXG4pID0+IChtYXJrID09PSBcIlwiID8gPD48Lz4gOiAoXG4gIDxhXG4gICAgY2xhc3NOYW1lPVwibWFya1wiXG4gICAgdGFiSW5kZXg9ezB9XG4gICAgaHJlZj17YC4uLyR7cHJvamVjdH0vJHtlbmNvZGVUaXRsZVVSSSh0aXRsZSl9YH1cbiAgICBvbkNsaWNrPXt1c2VDb25maXJtKGNvbmZpcm0pfVxuICAgIHRpdGxlPXtgLyR7cHJvamVjdH0vJHtlbmNvZGVUaXRsZVVSSSh0aXRsZSl9YH1cbiAgPlxuICAgIHttYXJrIGluc3RhbmNlb2YgVVJMID8gPGltZyBzcmM9e21hcmsuaHJlZn0gLz4gOiBgWyR7bWFya31dYH1cbiAgPC9hPlxuKSk7XG5cbi8qKiDkv67po77jgq3jg7zjgYzmirzjgZXjgozjgabjgYTjgarjgYTjgajjgY3jga7jgb/norrlrprjgZnjgosgZXZlbnQgaGFuZGxlcuOCkuS9nOOCi2hvb2sgKi9cbmNvbnN0IHVzZUNvbmZpcm0gPSAoY29uZmlybTogKCkgPT4gdm9pZCkgPT5cbiAgdXNlQ2FsbGJhY2soXG4gICAgKGU6IGguSlNYLlRhcmdldGVkTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHtcbiAgICAgIGlmIChlLm1ldGFLZXkgfHwgZS5jdHJsS2V5IHx8IGUuYWx0S2V5IHx8IGUuc2hpZnRLZXkpIHJldHVybjtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBjb25maXJtKCk7XG4gICAgfSxcbiAgICBbY29uZmlybV0sXG4gICk7XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5cbi8qKiB1c2VTZWxlY3Tjga7miLvjgorlgKQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlU2VsZWN0UmVzdWx0IHtcbiAgc2VsZWN0ZWRJZDogc3RyaW5nIHwgbnVsbDtcbiAgbmV4dDogKGluaXQ/OiBTZWxlY3RJbml0KSA9PiB2b2lkO1xuICBwcmV2OiAoaW5pdD86IFNlbGVjdEluaXQpID0+IHZvaWQ7XG4gIHNlbGVjdEZpcnN0OiAoKSA9PiB2b2lkO1xuICBzZWxlY3RMYXN0OiAoKSA9PiB2b2lkO1xufVxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RJbml0IHtcbiAgLyoqIOWFiOmgreOBruWJjeWAmeijnOOCkuacq+WwvuOBq+OAgeacq+WwvuOBruasoeWAmeijnOOCkuWFiOmgreOBq+OBmeOCi+OBi+OBqeOBhuOBi1xuICAgKlxuICAgKiAtIGB0cnVlYDog44GZ44KLXG4gICAqIC0gYGZhbHNlYDog44GX44Gq44GEICjlhYjpoK3jgb7jgZ/jga/mnKvlsL7jga7opoHntKDjgavjgajjganjgb7jgorntprjgZHjgospXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjeWNsaWM/OiBib29sZWFuO1xufVxuXG4vKiog6YG45oqe54q25oWL44KS5YiH44KK5pu/44GI44KLaG9vayAqL1xuZXhwb3J0IGNvbnN0IHVzZVNlbGVjdCA9IDxUPihcbiAgaXRlbXM6IFRbXSxcbiAgc2VsZWN0b3I6IChpdGVtOiBUKSA9PiBzdHJpbmcsXG4pOiBVc2VTZWxlY3RSZXN1bHQgPT4ge1xuICBjb25zdCBbc2VsZWN0ZWRJZCwgc2V0U2VsZWN0ZWRJZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBuZXh0ID0gdXNlQ2FsbGJhY2soKGluaXQ/OiBTZWxlY3RJbml0KSA9PlxuICAgIHNldFNlbGVjdGVkSWQoXG4gICAgICAocHJldikgPT4ge1xuICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgICAgICAgaWYgKHByZXYgPT09IG51bGwpIHJldHVybiBzZWxlY3RvcihpdGVtc1swXSk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBzZWxlY3RvcihpdGVtKSA9PT0gcHJldik7XG4gICAgICAgIHJldHVybiBzZWxlY3RvcihcbiAgICAgICAgICBpbml0Py5jeWNsaWNcbiAgICAgICAgICAgID8gaXRlbXNbKGluZGV4ICsgMSkgJSBpdGVtcy5sZW5ndGhdXG4gICAgICAgICAgICA6IGl0ZW1zLmF0KGluZGV4ICsgMSkgPz8gaXRlbXNbMF0sXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICksIFtpdGVtcywgc2VsZWN0b3JdKTtcbiAgY29uc3QgcHJldiA9IHVzZUNhbGxiYWNrKChpbml0PzogU2VsZWN0SW5pdCkgPT5cbiAgICBzZXRTZWxlY3RlZElkKFxuICAgICAgKHByZXYpID0+IHtcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmIChwcmV2ID09PSBudWxsKSByZXR1cm4gc2VsZWN0b3IoaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV0pO1xuICAgICAgICBjb25zdCBpbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gc2VsZWN0b3IoaXRlbSkgPT09IHByZXYpO1xuICAgICAgICBpZiAoaW5kZXggPCAwKSByZXR1cm4gc2VsZWN0b3IoaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV0pO1xuICAgICAgICByZXR1cm4gc2VsZWN0b3IoXG4gICAgICAgICAgaW5pdD8uY3ljbGljXG4gICAgICAgICAgICA/IGl0ZW1zWyhpbmRleCAtIDEgKyBpdGVtcy5sZW5ndGgpICUgaXRlbXMubGVuZ3RoXVxuICAgICAgICAgICAgOiBpdGVtcy5hdChpbmRleCAtIDEpID8/IGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICApLCBbaXRlbXMsIHNlbGVjdG9yXSk7XG4gIGNvbnN0IHNlbGVjdEZpcnN0ID0gdXNlQ2FsbGJhY2soXG4gICAgKCkgPT4gc2V0U2VsZWN0ZWRJZChpdGVtcy5sZW5ndGggPT09IDAgPyBudWxsIDogc2VsZWN0b3IoaXRlbXNbMF0pKSxcbiAgICBbaXRlbXMsIHNlbGVjdG9yXSxcbiAgKTtcbiAgY29uc3Qgc2VsZWN0TGFzdCA9IHVzZUNhbGxiYWNrKFxuICAgICgpID0+XG4gICAgICBzZXRTZWxlY3RlZElkKFxuICAgICAgICBpdGVtcy5sZW5ndGggPT09IDAgPyBudWxsIDogc2VsZWN0b3IoaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV0pLFxuICAgICAgKSxcbiAgICBbXG4gICAgICBpdGVtcyxcbiAgICAgIHNlbGVjdG9yLFxuICAgIF0sXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBzZWxlY3RlZElkLFxuICAgIG5leHQsXG4gICAgcHJldixcbiAgICBzZWxlY3RGaXJzdCxcbiAgICBzZWxlY3RMYXN0LFxuICB9IGFzIGNvbnN0O1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5pbXBvcnQgeyBoLCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgZ2V0Q2hhckRPTSwgUG9zaXRpb24gfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5cbi8qKiDoo5zlrozjg6rjgrnjg4jjga7ooajnpLrkvY3nva7jgpLoqIjnrpfjgZnjgotob29rICovXG5leHBvcnQgY29uc3QgdXNlUG9zaXRpb24gPSAoXG4gIHBvczogUG9zaXRpb24sXG4pOiBQaWNrPGguSlNYLkNTU1Byb3BlcnRpZXMsIFwidG9wXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIj4gJiB7XG4gIHVwZGF0ZVN0YW5kYXJkRWxlbWVudDogKGVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsKSA9PiB2b2lkO1xufSA9PiB7XG4gIGNvbnN0IFtzdGFuZGFyZEVsZW1lbnQsIHVwZGF0ZVN0YW5kYXJkRWxlbWVudF0gPSB1c2VTdGF0ZTxFbGVtZW50IHwgbnVsbD4oXG4gICAgbnVsbCxcbiAgKTtcblxuICBjb25zdCBzdHlsZSA9IHVzZU1lbW88UGljazxoLkpTWC5DU1NQcm9wZXJ0aWVzLCBcInRvcFwiIHwgXCJsZWZ0XCI+PigoKSA9PiB7XG4gICAgLyoqIOWfuua6luW6p+aomSAqL1xuICAgIGNvbnN0IHBhcmVudFJlY3QgPSBzdGFuZGFyZEVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdD8uKCk7XG4gICAgLyoqIOWQiOOCj+OBm+OBn+OBhERPTeOBruW6p+aomSAqL1xuICAgIGNvbnN0IGNoYXIgPSBnZXRDaGFyRE9NKHBvcy5saW5lLCBwb3MuY2hhcik7XG4gICAgY29uc3QgcmVjdCA9IGNoYXI/LmdldEJvdW5kaW5nQ2xpZW50UmVjdD8uKCk7XG4gICAgaWYgKCFyZWN0IHx8ICFwYXJlbnRSZWN0KSByZXR1cm4ge307XG5cbiAgICByZXR1cm4ge1xuICAgICAgdG9wOiBgJHtyZWN0LmJvdHRvbSAtIHBhcmVudFJlY3QudG9wfXB4YCxcbiAgICAgIGxlZnQ6IGAkeyhyZWN0Py5sZWZ0ID8/IDAgLSBwYXJlbnRSZWN0LmxlZnQpfXB4YCxcbiAgICAgIC8vIOWPs+err+OBi+OCieS9jee9ruWQiOOCj+OBm+OBl+OBn+OBhOOBqOOBjeOBq+S9v+OBhlxuICAgICAgcmlnaHQ6IGAkeyhwYXJlbnRSZWN0LnJpZ2h0IC0gKHJlY3Q/LmxlZnQgPz8gMCkpfXB4YCxcbiAgICB9O1xuICB9LCBbc3RhbmRhcmRFbGVtZW50LCBwb3MubGluZSwgcG9zLmNoYXJdKTtcblxuICByZXR1cm4geyB1cGRhdGVTdGFuZGFyZEVsZW1lbnQsIC4uLnN0eWxlIH07XG59O1xuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBTY3JhcGJveCB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5jb25zdCBrZXkgPSBcImVuYWJsZVByb2plY3RzT25TdWdnZXN0aW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgdXNlUHJvamVjdEZpbHRlck9wdGlvbnMge1xuICAvKiogc2NyaXB044KS5a6f6KGM44GX44Gm44GE44KLcHJvamVjdOOBruOCveODvOOCueOCkuOAgeioreWumuOBq+mWouOCj+OCieOBmueEoeadoeS7tuOBp+acieWKueOBq+OBmeOCi+OBi+OBqeOBhuOBiyAqL1xuICBlbmFibGVTZWxmUHJvamVjdE9uU3RhcnQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlUHJvamVjdEZpbHRlclJlc3VsdCB7XG4gIC8qKiDmpJzntKLlr77osaHjga5wcm9qZWN0c+OBruODquOCueODiCAqL1xuICBwcm9qZWN0czogc3RyaW5nW107XG5cbiAgLyoqIOaMh+WumuOBl+OBn3Byb2plY3Tjga7mnInlirnnhKHlirnjgpLoqK3lrprjgZnjgosgKi9cbiAgc2V0OiAocHJvamVjdDogc3RyaW5nLCBmbGFnOiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG4vKiog5qSc57Si5a++6LGh44GucHJvamVjdHPjga7oqK3lrprjgpLoqq3jgb/ovrzjgoBob29rc1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0cyDoqK3lrprjgpLlj5blvpfjgZfjgZ/jgYRwcm9qZWN0c+OBruODquOCueODiFxuICogQHJldHVybiDmpJzntKLlr77osaHjga5wcm9qZWN0c+OBruODquOCueODiFxuICovXG5leHBvcnQgY29uc3QgdXNlUHJvamVjdEZpbHRlciA9IChcbiAgcHJvamVjdHM6IEl0ZXJhYmxlPHN0cmluZz4sXG4gIG9wdGlvbnM6IHVzZVByb2plY3RGaWx0ZXJPcHRpb25zLFxuKTogVXNlUHJvamVjdEZpbHRlclJlc3VsdCA9PiB7XG4gIGNvbnN0IFtlbmFibGVQcm9qZWN0cywgc2V0RW5hYmxlUHJvamVjdHNdID0gdXNlU3RhdGUoXG4gICAgZ2V0RW5hYmxlcyhbLi4ucHJvamVjdHNdLCBvcHRpb25zKSxcbiAgKTtcbiAgY29uc3Qgc2V0ID0gdXNlQ2FsbGJhY2soKHByb2plY3Q6IHN0cmluZywgZmxhZzogYm9vbGVhbikgPT4ge1xuICAgIHNldEZyYWcocHJvamVjdCwgZmxhZywgcHJvamVjdHMsIG9wdGlvbnMpO1xuICAgIHNldEVuYWJsZVByb2plY3RzKGdldEVuYWJsZXMoWy4uLnByb2plY3RzXSwgb3B0aW9ucykpO1xuICB9LCBbcHJvamVjdHMsIG9wdGlvbnMuZW5hYmxlU2VsZlByb2plY3RPblN0YXJ0XSk7XG5cbiAgLy/mm7TmlrDpgJrnn6XjgpLlj5fjgZHlj5bjgotcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBsaXN0ZW5lciA9IChlOiBTdG9yYWdlRXZlbnQpID0+IHtcbiAgICAgIGlmIChlLmtleSAhPT0ga2V5KSByZXR1cm47XG4gICAgICBzZXRFbmFibGVQcm9qZWN0cyhnZXRFbmFibGVzKFsuLi5wcm9qZWN0c10sIG9wdGlvbnMpKTtcbiAgICB9O1xuICAgIGFkZEV2ZW50TGlzdGVuZXIoXCJzdG9yYWdlXCIsIGxpc3RlbmVyKTtcbiAgICByZXR1cm4gKCkgPT4gcmVtb3ZlRXZlbnRMaXN0ZW5lcihcInN0b3JhZ2VcIiwgbGlzdGVuZXIpO1xuICB9LCBbcHJvamVjdHMsIG9wdGlvbnMuZW5hYmxlU2VsZlByb2plY3RPblN0YXJ0XSk7XG5cbiAgcmV0dXJuIHsgcHJvamVjdHM6IGVuYWJsZVByb2plY3RzLCBzZXQgfTtcbn07XG5cbmxldCBlbmFibGVTZWxmUHJvamVjdCA9IHRydWU7XG5cbi8qKiDmnInlirnljJbjgZXjgozjgabjgYTjgotwcm9qZWN0c+OBruODquOCueODiOOCkuWPluW+l+OBmeOCi1xuICpcbiAqIOWApOOBjOioreWumuOBleOCjOOBpuOBhOOBquOBi+OBo+OBn+OCiuOAgeWei+OBjOmBleOBo+OBpuOBhOOBn+WgtOWQiOOBr+OAgeWIneacn+WApOOCkuWFpeOCjOOCi1xuICovXG5jb25zdCBnZXRFbmFibGVzID0gKFxuICBpbml0OiBzdHJpbmdbXSxcbiAgb3B0aW9uczogdXNlUHJvamVjdEZpbHRlck9wdGlvbnMsXG4pOiBzdHJpbmdbXSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgc2V0RW5hYmxlcyhpbml0KTtcbiAgICAgIHJldHVybiBpbml0O1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSBKU09OLnBhcnNlKHZhbHVlKTtcbiAgICBpZiAoXG4gICAgICBBcnJheS5pc0FycmF5KGxpc3QpICYmXG4gICAgICBsaXN0LmV2ZXJ5KChwcm9qZWN0KSA9PiB0eXBlb2YgcHJvamVjdCA9PT0gXCJzdHJpbmdcIilcbiAgICApIHtcbiAgICAgIGlmICghb3B0aW9ucy5lbmFibGVTZWxmUHJvamVjdE9uU3RhcnQpIHJldHVybiBsaXN0O1xuICAgICAgaWYgKCFpbml0LmluY2x1ZGVzKHNjcmFwYm94LlByb2plY3QubmFtZSkpIHJldHVybiBsaXN0O1xuICAgICAgcmV0dXJuIGxpc3QuaW5jbHVkZXMoc2NyYXBib3guUHJvamVjdC5uYW1lKVxuICAgICAgICA/IGVuYWJsZVNlbGZQcm9qZWN0XG4gICAgICAgICAgPyBsaXN0XG4gICAgICAgICAgOiBsaXN0LmZpbHRlcigocCkgPT4gcCAhPT0gc2NyYXBib3guUHJvamVjdC5uYW1lKVxuICAgICAgICA6IGVuYWJsZVNlbGZQcm9qZWN0XG4gICAgICAgID8gWy4uLmxpc3QsIHNjcmFwYm94LlByb2plY3QubmFtZV1cbiAgICAgICAgOiBsaXN0O1xuICAgIH1cbiAgICBzZXRFbmFibGVzKGluaXQpO1xuICAgIHJldHVybiBpbml0O1xuICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgaWYgKCEoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikpIHRocm93IGU7XG4gICAgc2V0RW5hYmxlcyhpbml0KTtcbiAgICByZXR1cm4gaW5pdDtcbiAgfVxufTtcblxuY29uc3Qgc2V0RnJhZyA9IChcbiAgcHJvamVjdDogc3RyaW5nLFxuICBmbGFnOiBib29sZWFuLFxuICBpbml0OiBJdGVyYWJsZTxzdHJpbmc+LFxuICBvcHRpb25zOiB1c2VQcm9qZWN0RmlsdGVyT3B0aW9ucyxcbik6IHZvaWQgPT4ge1xuICBjb25zdCBvbGQgPSBnZXRFbmFibGVzKFsuLi5pbml0XSwgb3B0aW9ucyk7XG4gIGlmIChvcHRpb25zLmVuYWJsZVNlbGZQcm9qZWN0T25TdGFydCAmJiBwcm9qZWN0ID09PSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUpIHtcbiAgICBlbmFibGVTZWxmUHJvamVjdCA9IGZsYWc7XG4gIH1cbiAgc2V0RW5hYmxlcyhmbGFnID8gWy4uLm9sZCwgcHJvamVjdF0gOiBvbGQuZmlsdGVyKChwKSA9PiBwICE9PSBwcm9qZWN0KSk7XG59O1xuXG5jb25zdCBzZXRFbmFibGVzID0gKHByb2plY3RzOiBzdHJpbmdbXSk6IHZvaWQgPT5cbiAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeShwcm9qZWN0cykpO1xuIiwgImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcblxuLyoqIFVzZXJBZ2VudOWIpOWumiAqL1xuZXhwb3J0IGNvbnN0IHVzZU9TID0gKCkgPT5cbiAgdXNlTWVtbygoKSA9PiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZGF0YXNldC5vcyA/PyBcIlwiLCBbXSk7XG4iLCAiLyoqIFVSTOaWh+Wtl+WIl+OCklVSTOOBq+WkieaPm+OBmeOCiyovXG5leHBvcnQgY29uc3QgZGV0ZWN0VVJMID0gKFxuICB0ZXh0OiBVUkwgfCBzdHJpbmcsXG4gIGJhc2U/OiBVUkwgfCBzdHJpbmcsXG4pOiBVUkwgfCBzdHJpbmcgPT4ge1xuICBpZiAodGV4dCBpbnN0YW5jZW9mIFVSTCkgcmV0dXJuIHRleHQ7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBVUkwodGV4dCk7XG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICBpZiAoIShlIGluc3RhbmNlb2YgVHlwZUVycm9yKSkgdGhyb3cgZTtcbiAgICBpZiAoIWJhc2UpIHJldHVybiB0ZXh0O1xuICAgIC8vIOebuOWvvuODkeOCueOBuOOBruWkieaPm+OCkuippuOBv+OCi1xuICAgIC8vIC4v44KELi4v44KEL+OBp+Wni+OBvuOCieOBquOBhOaWh+Wtl+WIl+OBr+OAgeebuOWvvuODkeOCueaJseOBhOOBl+OBquOBhFxuICAgIGlmICghL15cXC5cXC98XlxcLlxcLlxcL3xeXFwvLy50ZXN0KHRleHQpKSByZXR1cm4gdGV4dDtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBVUkwodGV4dCwgYmFzZSk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikpIHRocm93IGU7XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG4gIH1cbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuaW1wb3J0IHsgRnVuY3Rpb25Db21wb25lbnQsIGggfSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcblxuZXhwb3J0IGNvbnN0IFByb2dyZXNzOiBGdW5jdGlvbkNvbXBvbmVudDx7IHByb2dyZXNzOiBudW1iZXIgfT4gPSAoXG4gIHsgcHJvZ3Jlc3MgfSxcbikgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPVwicHJvZ3Jlc3NcIlxuICAgIHN0eWxlPXtgYmFja2dyb3VuZDogIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdmFyKC0tc2VsZWN0LXN1Z2dlc3QtYm9yZGVyLWNvbG9yLCAjZWVlKSAke1xuICAgICAgKHByb2dyZXNzICogMTAwKS50b1ByZWNpc2lvbigzKVxuICAgIH0lLCB0cmFuc3BhcmVudCAkeyhwcm9ncmVzcyAqIDEwMCkudG9QcmVjaXNpb24oMyl9JSlgfVxuICAvPlxuKTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG4vKiogQGpzeCBoICovXG4vKiogQGpzeEZyYWcgRnJhZ21lbnQgKi9cblxuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIEZ1bmN0aW9uQ29tcG9uZW50LFxuICBoLFxuICBSZWZDYWxsYmFjayxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbn0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBTY3JhcGJveCwgdGV4dElucHV0IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuaW1wb3J0IHtcbiAgQ2FuZGlkYXRlIGFzIENhbmRpZGF0ZUNvbXBvbmVudCxcbiAgQ2FuZGlkYXRlUHJvcHMsXG59IGZyb20gXCIuL0NhbmRpZGF0ZS50c3hcIjtcbmltcG9ydCB7IFNlbGVjdEluaXQsIHVzZVNlbGVjdCB9IGZyb20gXCIuL3VzZVNlbGVjdC50c1wiO1xuaW1wb3J0IHsgdXNlUG9zaXRpb24gfSBmcm9tIFwiLi91c2VQb3NpdGlvbi50c1wiO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0IH0gZnJvbSBcIi4vdXNlU2VhcmNoLnRzXCI7XG5pbXBvcnQge1xuICB1c2VQcm9qZWN0RmlsdGVyLFxuICBVc2VQcm9qZWN0RmlsdGVyUmVzdWx0LFxufSBmcm9tIFwiLi91c2VQcm9qZWN0RmlsdGVyLnRzXCI7XG5pbXBvcnQgeyB1c2VPUyB9IGZyb20gXCIuL3VzZU9TLnRzXCI7XG5pbXBvcnQgeyBVc2VMaWZlY3ljbGVSZXN1bHQgfSBmcm9tIFwiLi91c2VMaWZlY3ljbGUudHNcIjtcbmltcG9ydCB7IENvbXBsZXRpb25TdGF0ZSB9IGZyb20gXCIuL3JlZHVjZXIudHNcIjtcbmltcG9ydCB7IGRldGVjdFVSTCB9IGZyb20gXCIuL2RldGVjdFVSTC50c1wiO1xuaW1wb3J0IHsgUHJvZ3Jlc3MgfSBmcm9tIFwiLi9Qcm9ncmVzcy50c3hcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsZXRpb25Qcm9wcyBleHRlbmRzXG4gIFBpY2s8XG4gICAgVXNlTGlmZWN5Y2xlUmVzdWx0LFxuICAgIFwiY29uZmlybUFmdGVyXCIgfCBcImNhbmNlbFwiIHwgXCJmcmVlemVVbnRpbFwiXG4gID4sXG4gIE9taXQ8Q29tcGxldGlvblN0YXRlLCBcInR5cGVcIj4sXG4gIFNlYXJjaFJlc3VsdCB7XG4gIGxpbWl0OiBudW1iZXI7XG4gIGVuYWJsZVNlbGZQcm9qZWN0T25TdGFydDogYm9vbGVhbjtcbiAgY2FsbGJhY2s6IChvcGVyYXRvcnM/OiBPcGVyYXRvcnMpID0+IHZvaWQ7XG4gIG1hcms6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IFVSTD47XG4gIHByb2plY3RzOiBTZXQ8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcGVyYXRvcnMge1xuICBzZWxlY3ROZXh0OiAoaW5pdD86IFNlbGVjdEluaXQpID0+IGJvb2xlYW47XG4gIHNlbGVjdFByZXY6IChpbml0PzogU2VsZWN0SW5pdCkgPT4gYm9vbGVhbjtcbiAgc2VsZWN0Rmlyc3Q6ICgpID0+IGJvb2xlYW47XG4gIHNlbGVjdExhc3Q6ICgpID0+IGJvb2xlYW47XG4gIGNvbmZpcm06ICgpID0+IGJvb2xlYW47XG4gIGNhbmNlbDogKCkgPT4gYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IENvbXBsZXRpb246IEZ1bmN0aW9uQ29tcG9uZW50PENvbXBsZXRpb25Qcm9wcz4gPSAoXG4gIHtcbiAgICBwb3NpdGlvbixcbiAgICBzdGFydCxcbiAgICBlbmFibGVTZWxmUHJvamVjdE9uU3RhcnQsXG4gICAgcHJvamVjdHMsXG4gICAgLi4ucHJvcHNcbiAgfSxcbikgPT4ge1xuICBjb25zdCB7IHByb2plY3RzOiBlbmFibGVQcm9qZWN0cywgc2V0IH0gPSB1c2VQcm9qZWN0RmlsdGVyKHByb2plY3RzLCB7XG4gICAgZW5hYmxlU2VsZlByb2plY3RPblN0YXJ0LFxuICB9KTtcblxuICBjb25zdCB7IHVwZGF0ZVN0YW5kYXJkRWxlbWVudCwgdG9wLCBsZWZ0LCByaWdodCB9ID0gdXNlUG9zaXRpb24oe1xuICAgIGxpbmU6IHBvc2l0aW9uLmxpbmUsXG4gICAgY2hhcjogc3RhcnQsXG4gIH0pO1xuICBjb25zdCBvcyA9IHVzZU9TKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFNvdXJjZUZpbHRlclxuICAgICAgICBpdGVtQ291bnQ9e3Byb3BzLml0ZW1zLmxlbmd0aH1cbiAgICAgICAgey4uLntcbiAgICAgICAgICBlbmFibGVQcm9qZWN0cyxcbiAgICAgICAgICBwcm9qZWN0cyxcbiAgICAgICAgICB0b3AsXG4gICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgc2V0LFxuICAgICAgICAgIG9zLFxuICAgICAgICB9fVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgICAgPEl0ZW1MaXN0XG4gICAgICAgIHsuLi57XG4gICAgICAgICAgdXBkYXRlU3RhbmRhcmRFbGVtZW50LFxuICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgIGVuYWJsZVByb2plY3RzLFxuICAgICAgICAgIHByb2plY3RzLFxuICAgICAgICAgIHRvcCxcbiAgICAgICAgICBsZWZ0LFxuICAgICAgICAgIG9zLFxuICAgICAgICB9fVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuaW50ZXJmYWNlIEl0ZW1MaXN0UHJvcHMgZXh0ZW5kc1xuICBQaWNrPFxuICAgIENvbXBsZXRpb25Qcm9wcyAmIFNlYXJjaFJlc3VsdCAmIGguSlNYLkNTU1Byb3BlcnRpZXMsXG4gICAgfCBcInN0YXJ0XCJcbiAgICB8IFwiY29uZmlybUFmdGVyXCJcbiAgICB8IFwiY2FuY2VsXCJcbiAgICB8IFwicXVlcnlcIlxuICAgIHwgXCJpdGVtc1wiXG4gICAgfCBcInByb2dyZXNzXCJcbiAgICB8IFwiY2FsbGJhY2tcIlxuICAgIHwgXCJsaW1pdFwiXG4gICAgfCBcIm1hcmtcIlxuICAgIHwgXCJ0b3BcIlxuICAgIHwgXCJsZWZ0XCJcbiAgPiB7XG4gIHVwZGF0ZVN0YW5kYXJkRWxlbWVudDogKGVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsKSA9PiB2b2lkO1xuICBlbmFibGVQcm9qZWN0czogc3RyaW5nW107XG4gIHByb2plY3RzOiBTZXQ8c3RyaW5nPjtcbiAgb3M6IHN0cmluZztcbn1cblxuY29uc3QgSXRlbUxpc3QgPSAoXG4gIHtcbiAgICBzdGFydCxcbiAgICB1cGRhdGVTdGFuZGFyZEVsZW1lbnQsXG4gICAgY29uZmlybUFmdGVyLFxuICAgIGNhbmNlbCxcbiAgICBxdWVyeSxcbiAgICBlbmFibGVQcm9qZWN0cyxcbiAgICBwcm9qZWN0cyxcbiAgICBpdGVtcyxcbiAgICB0b3AsXG4gICAgbGVmdCxcbiAgICBwcm9ncmVzcyxcbiAgICBjYWxsYmFjayxcbiAgICBsaW1pdCxcbiAgICBtYXJrLFxuICAgIG9zLFxuICB9OiBJdGVtTGlzdFByb3BzLFxuKSA9PiB7XG4gIC8qKiDoo5zlrozlgJnoo5zjgpLmjL/lhaXjgZnjgovlh73mlbBcbiAgICpcbiAgICog6LW35YuV44GX44Gm44GE44KL6KOc5a6M44Gu56iu6aGe44Gr5b+c44GY44Gm5oyZ5YuV44KS5aSJ44GI44KLXG4gICAqL1xuICBjb25zdCBjb25maXJtID0gdXNlQ2FsbGJhY2soKHRpdGxlOiBzdHJpbmcsIHByb2plY3Q/OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB0ZXh0ID0gcHJvamVjdCA/IGBbLyR7cHJvamVjdH0vJHt0aXRsZX1dYCA6IGBbJHt0aXRsZX1dYDtcbiAgICAvLyDjg6bjg7zjgrbjg7zjgYzmloflrZfjgpLlhaXlipvjgZfjgZ/jgajoo5zlrozliKTlrprjgafoqqToqo3orZjjgZXjgozjgarjgYTjgojjgYbjgIHkuIDml6boo5zlrozjgpLliIfjgaPjgabjgYvjgonnt6jpm4bjgZnjgotcbiAgICBjb25maXJtQWZ0ZXIoKFxuICAgICAgcHJldixcbiAgICAgIHsgbGluZSB9LFxuICAgICkgPT4gW1xuICAgICAgYCR7Wy4uLnByZXZdLnNsaWNlKDAsIHN0YXJ0KS5qb2luKFwiXCIpfSR7dGV4dH0ke1xuICAgICAgICBbLi4ucHJldl0uc2xpY2Uoc3RhcnQgKyBbLi4ucXVlcnldLmxlbmd0aCkuam9pbihcIlwiKVxuICAgICAgfWAsXG4gICAgICB7IGxpbmUsIGNoYXI6IHN0YXJ0ICsgWy4uLnRleHRdLmxlbmd0aCB9LFxuICAgIF0pO1xuICB9LCBbc3RhcnQsIHF1ZXJ5XSk7XG5cbiAgLyoqIOijnOWujOOCveODvOOCueOBq+WklumDqHByb2plY3TjgYzlkKvjgb7jgozjgabjgYTjgovjgYvjganjgYbjgYtcbiAgICpcbiAgICog5ZCr44G+44KM44Gm44GE44KL5aC05ZCI44GvPE1hcmsgLz7jgpLooajnpLrjgZnjgotcbiAgICovXG4gIGNvbnN0IGlzRXh0ZXJuYWxQcm9qZWN0TW9kZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gcHJvamVjdHMuc2l6ZSA+IDEgfHwgIXByb2plY3RzLmhhcyhzY3JhcGJveC5Qcm9qZWN0Lm5hbWUpLFxuICAgIFtwcm9qZWN0c10sXG4gICk7XG5cbiAgLy8g6KGo56S644GZ44KL5YCZ6KOc44Gu44G/44CBVUnnlKjjg4fjg7zjgr/jgpLkvZzjgotcbiAgY29uc3QgY2FuZGlkYXRlc1Byb3BzID0gdXNlTWVtbzxPbWl0PENhbmRpZGF0ZVByb3BzLCBcInNlbGVjdGVkXCI+W10+KCgpID0+IHtcbiAgICAvLyDntZ7jgorovrzjgb/jgpLjgYvjgZHjgarjgYzjgonlpInmj5vjgZnjgotcbiAgICBjb25zdCByZXN1bHQ6IE9taXQ8Q2FuZGlkYXRlUHJvcHMsIFwic2VsZWN0ZWRcIj5bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IGxpbWl0KSBicmVhaztcbiAgICAgIGlmICghaXRlbS5wcm9qZWN0cy5zb21lKChwcm9qZWN0KSA9PiBlbmFibGVQcm9qZWN0cy5pbmNsdWRlcyhwcm9qZWN0KSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgIHByb2plY3RzOiBpdGVtLnByb2plY3RzLmZsYXRNYXAoKHByb2plY3QpID0+XG4gICAgICAgICAgZW5hYmxlUHJvamVjdHMuaW5jbHVkZXMocHJvamVjdClcbiAgICAgICAgICAgID8gW3tcbiAgICAgICAgICAgICAgbmFtZTogcHJvamVjdCxcbiAgICAgICAgICAgICAgbWFyazogaXNFeHRlcm5hbFByb2plY3RNb2RlXG4gICAgICAgICAgICAgICAgPyBkZXRlY3RVUkwobWFya1twcm9qZWN0XSA/PyBcIlwiLCBpbXBvcnQubWV0YS51cmwpIHx8IHByb2plY3RbMF1cbiAgICAgICAgICAgICAgICA6IFwiXCIsXG4gICAgICAgICAgICAgIGNvbmZpcm06ICgpID0+IGNvbmZpcm0oaXRlbS50aXRsZSwgcHJvamVjdCksXG4gICAgICAgICAgICB9XVxuICAgICAgICAgICAgOiBbXVxuICAgICAgICApLFxuICAgICAgICBjb25maXJtOiAoKSA9PiBjb25maXJtKGl0ZW0udGl0bGUpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwgW2VuYWJsZVByb2plY3RzLCBpc0V4dGVybmFsUHJvamVjdE1vZGUsIGl0ZW1zLCBsaW1pdCwgbWFyaywgY29uZmlybV0pO1xuXG4gIC8vIOWAmeijnOmBuOaKnlxuICBjb25zdCB7IHNlbGVjdGVkSWQsIG5leHQsIHByZXYsIHNlbGVjdExhc3QsIHNlbGVjdEZpcnN0IH0gPSB1c2VTZWxlY3QoXG4gICAgY2FuZGlkYXRlc1Byb3BzLFxuICAgIHNlbGVjdG9yLFxuICApO1xuICBjb25zdCBjb25maXJtU2VsZWN0ZWQgPSB1c2VDYWxsYmFjayhcbiAgICAoKSA9PlxuICAgICAgc2VsZWN0ZWRJZCA9PT0gbnVsbFxuICAgICAgICA/IGZhbHNlXG4gICAgICAgIDogKGNhbmRpZGF0ZXNQcm9wcy5maW5kKChjYW5kaWRhdGUpID0+XG4gICAgICAgICAgc2VsZWN0b3IoY2FuZGlkYXRlKSA9PT0gc2VsZWN0ZWRJZFxuICAgICAgICApPy5jb25maXJtPy4oKSxcbiAgICAgICAgICB0cnVlKSxcbiAgICBbc2VsZWN0ZWRJZCwgY2FuZGlkYXRlc1Byb3BzXSxcbiAgKTtcbiAgdXNlRWZmZWN0KCgpID0+XG4gICAgY2FsbGJhY2soXG4gICAgICBjYW5kaWRhdGVzUHJvcHMubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDoge1xuICAgICAgICBzZWxlY3ROZXh0OiAoaW5pdD86IFNlbGVjdEluaXQpID0+IChuZXh0KGluaXQpLCB0cnVlKSxcbiAgICAgICAgc2VsZWN0UHJldjogKGluaXQ/OiBTZWxlY3RJbml0KSA9PiAocHJldihpbml0KSwgdHJ1ZSksXG4gICAgICAgIHNlbGVjdEZpcnN0OiAoKSA9PiAoc2VsZWN0Rmlyc3QoKSwgdHJ1ZSksXG4gICAgICAgIHNlbGVjdExhc3Q6ICgpID0+IChzZWxlY3RMYXN0KCksIHRydWUpLFxuICAgICAgICBjb25maXJtOiBjb25maXJtU2VsZWN0ZWQsXG4gICAgICAgIGNhbmNlbDogKCkgPT4gKGNhbmNlbCgpLCB0cnVlKSxcbiAgICAgIH0gYXMgY29uc3QsXG4gICAgKSwgW1xuICAgIGNhbGxiYWNrLFxuICAgIGNhbmRpZGF0ZXNQcm9wcy5sZW5ndGgsXG4gICAgbmV4dCxcbiAgICBwcmV2LFxuICAgIHNlbGVjdEZpcnN0LFxuICAgIHNlbGVjdExhc3QsXG4gICAgY29uZmlybVNlbGVjdGVkLFxuICBdKTtcblxuICAvKiog6KOc5a6Md2luZG9344Gu44K544K/44Kk44OrICovXG4gIGNvbnN0IHN0eWxlID0gdXNlTWVtbzxoLkpTWC5DU1NQcm9wZXJ0aWVzPihcbiAgICAoKSA9PlxuICAgICAgLy8gdW5kZWZpbmVk44GobnVsbOOCkuOBvuOBqOOCgeOBpuWIpOWumuOBl+OBn+OBhOOBruOBp+OAgeWOs+WvhuavlOi8gyE9PeOBr+S9v+OCj+OBquOBhFxuICAgICAgY2FuZGlkYXRlc1Byb3BzLmxlbmd0aCA+IDAgJiYgdG9wICE9IG51bGwgJiZcbiAgICAgICAgbGVmdCAhPSBudWxsXG4gICAgICAgID8geyB0b3AsIGxlZnQgfVxuICAgICAgICA6IHsgZGlzcGxheTogXCJub25lXCIgfSxcbiAgICBbY2FuZGlkYXRlc1Byb3BzLmxlbmd0aCwgdG9wLCBsZWZ0XSxcbiAgKTtcblxuICBjb25zdCByZWY6IFJlZkNhbGxiYWNrPEhUTUxEaXZFbGVtZW50PiA9IHVzZUNhbGxiYWNrKChlbGVtZW50KSA9PiB7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICB1cGRhdGVTdGFuZGFyZEVsZW1lbnQoZWxlbWVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8g5qyh44Gu44KI44GG44GqRE9N5qeL6YCg44KS5pyf5b6F44GX44Gm44GE44KLOlxuICAgIC8vXG4gICAgLy8gPGRpdiBkYXRhLXVzZXJzY3JpcHQtbmFtZT1cInNjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uXCI+IOKGkCByb290Lmhvc3RcbiAgICAvLyAgI3NoYWRvdy1yb290IChvcGVuKSDihpAgcm9vdFxuICAgIC8vICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiAvPiDihpAgZWxlbWVudFxuICAgIC8vIDwvZGl2ID5cblxuICAgIGNvbnN0IHJvb3QgPSBlbGVtZW50LnBhcmVudE5vZGU7XG4gICAgaWYgKCEocm9vdCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgVGhlIHBhcmVudCBvZiBcImRpdi5jb250YWluZXJcIiBtdXN0IGJlIFNoYWRvd1Jvb3RgKTtcbiAgICB9XG5cbiAgICAvLyBgPGRpdiAvPmDjgYxyb2906KaB57Sg44Gr44Gq44KL44GT44Go44Gv44Gq44GE44Gu44Gn44CBYHJvb3QuaG9zdC5wYXJlbnRFbGVtZW50YOOBr2BudWxsYOOBq+OBquOCieOBquOBhOOBr+OBmlxuICAgIHVwZGF0ZVN0YW5kYXJkRWxlbWVudChyb290Lmhvc3QucGFyZW50RWxlbWVudCk7XG4gIH0sIFt1cGRhdGVTdGFuZGFyZEVsZW1lbnRdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPVwiY29udGFpbmVyIGNhbmRpZGF0ZXNcIlxuICAgICAgZGF0YS1vcz17b3N9XG4gICAgICBzdHlsZT17c3R5bGV9XG4gICAgPlxuICAgICAge2NhbmRpZGF0ZXNQcm9wcy5tYXAoKHByb3BzKSA9PiAoXG4gICAgICAgIDxDYW5kaWRhdGVDb21wb25lbnRcbiAgICAgICAgICBrZXk9e3Byb3BzLnRpdGxlfVxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWRJZCA9PT0gcHJvcHMudGl0bGV9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHtpdGVtcy5sZW5ndGggPiBsaW1pdCAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY291bnRlclwiPlxuICAgICAgICAgIHtgJHtpdGVtcy5sZW5ndGggLSBsaW1pdH0gbW9yZSBsaW5rc2B9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIDxQcm9ncmVzcyBwcm9ncmVzcz17cHJvZ3Jlc3N9IC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5pbnRlcmZhY2UgU291cmNlRmlsdGVyUHJvcHMgZXh0ZW5kc1xuICBQaWNrPFxuICAgICYgQ29tcGxldGlvblByb3BzXG4gICAgJiBTZWFyY2hSZXN1bHRcbiAgICAmIGguSlNYLkNTU1Byb3BlcnRpZXNcbiAgICAmIFVzZVByb2plY3RGaWx0ZXJSZXN1bHQsXG4gICAgfCBcIm1hcmtcIlxuICAgIHwgXCJ0b3BcIlxuICAgIHwgXCJyaWdodFwiXG4gICAgfCBcInNldFwiXG4gICAgfCBcInByb2plY3RTY29yZVwiXG4gICAgfCBcImZyZWV6ZVVudGlsXCJcbiAgPiB7XG4gIGVuYWJsZVByb2plY3RzOiBzdHJpbmdbXTtcbiAgcHJvamVjdHM6IFNldDxzdHJpbmc+O1xuICBvczogc3RyaW5nO1xuICBpdGVtQ291bnQ6IG51bWJlcjtcbn1cblxuY29uc3QgU291cmNlRmlsdGVyID0gKFxuICB7XG4gICAgZW5hYmxlUHJvamVjdHMsXG4gICAgcHJvamVjdHMsXG4gICAgcHJvamVjdFNjb3JlLFxuICAgIG1hcmssXG4gICAgaXRlbUNvdW50LFxuICAgIHRvcCxcbiAgICByaWdodCxcbiAgICBzZXQsXG4gICAgb3MsXG4gICAgZnJlZXplVW50aWwsXG4gIH06IFNvdXJjZUZpbHRlclByb3BzLFxuKSA9PiB7XG4gIC8vIHByb2plY3Tjga7ntZ7jgorovrzjgb9cbiAgY29uc3QgcHJvamVjdFByb3BzID0gdXNlTWVtbygoKSA9PlxuICAgIC8vIOS6iOOCgeioreWumuOBleOCjOOBn3Byb2plY3Rz44GL44KJ44CB5qSc57Si44Gn6KaL44Gk44GL44Gj44Gf44KC44Gu44Gu44G/6KGo56S644GZ44KLXG4gICAgWy4uLnByb2plY3RzXS5zb3J0KChhLCBiKSA9PlxuICAgICAgKHByb2plY3RTY29yZS5nZXQoYikgPz8gMCkgLSAocHJvamVjdFNjb3JlLmdldChhKSA/PyAwKVxuICAgICkuZmxhdE1hcCgocHJvamVjdCkgPT5cbiAgICAgIHByb2plY3RTY29yZS5oYXMocHJvamVjdClcbiAgICAgICAgPyBbe1xuICAgICAgICAgIG5hbWU6IHByb2plY3QsXG4gICAgICAgICAgZW5hYmxlOiBlbmFibGVQcm9qZWN0cy5pbmNsdWRlcyhwcm9qZWN0KSxcbiAgICAgICAgICBtYXJrOiBkZXRlY3RVUkwobWFya1twcm9qZWN0XSA/PyBcIlwiLCBpbXBvcnQubWV0YS51cmwpIHx8IHByb2plY3RbMF0sXG4gICAgICAgICAgc2NvcmU6IHByb2plY3RTY29yZS5nZXQocHJvamVjdCkhLFxuICAgICAgICAgIG9uQ2xpY2s6ICgpID0+XG4gICAgICAgICAgICBmcmVlemVVbnRpbCgoKSA9PiB7XG4gICAgICAgICAgICAgIHNldChwcm9qZWN0LCAhZW5hYmxlUHJvamVjdHMuaW5jbHVkZXMocHJvamVjdCkpO1xuICAgICAgICAgICAgICB0ZXh0SW5wdXQoKSEuZm9jdXMoKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB9XVxuICAgICAgICA6IFtdXG4gICAgKSwgW3Byb2plY3RzLCBwcm9qZWN0U2NvcmUsIGVuYWJsZVByb2plY3RzLCBtYXJrXSk7XG5cbiAgLyoqIHByb2plY3TntZ7jgorovrzjgb/jg5Hjg43jg6vjga7jgrnjgr/jgqTjg6tcbiAgICpcbiAgICogcHJvamVjdOOBjOS4gOOBpOOBl+OBi+aMh+WumuOBleOCjOOBpuOBhOOBquOBkeOCjOOBsOihqOekuuOBl+OBquOBhFxuICAgKlxuICAgKiDpnZ7ooajnpLrjga7mpJzntKLlgJnoo5zjgYzjgYLjgozjgbDooajnpLrjgZfntprjgZHjgotcbiAgICovXG4gIGNvbnN0IHN0eWxlID0gdXNlTWVtbzxoLkpTWC5DU1NQcm9wZXJ0aWVzPihcbiAgICAoKSA9PlxuICAgICAgLy8gdW5kZWZpbmVk44GobnVsbOOCkuOBvuOBqOOCgeOBpuWIpOWumuOBl+OBn+OBhOOBruOBp+OAgeWOs+WvhuavlOi8gyE9PeOBr+S9v+OCj+OBquOBhFxuICAgICAgaXRlbUNvdW50ID4gMCAmJiB0b3AgIT0gbnVsbCAmJlxuICAgICAgICByaWdodCAhPSBudWxsICYmXG4gICAgICAgIHByb2plY3RzLnNpemUgPiAxXG4gICAgICAgID8geyB0b3AsIHJpZ2h0IH1cbiAgICAgICAgOiB7IGRpc3BsYXk6IFwibm9uZVwiIH0sXG4gICAgW3RvcCwgcmlnaHQsIGl0ZW1Db3VudCwgcHJvamVjdHMuc2l6ZV0sXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJjb250YWluZXIgcHJvamVjdHNcIlxuICAgICAgZGF0YS1vcz17b3N9XG4gICAgICBzdHlsZT17c3R5bGV9XG4gICAgPlxuICAgICAge3Byb2plY3RQcm9wcy5tYXAoKHByb3BzKSA9PiA8TWFyayBrZXk9e3Byb3BzLm5hbWV9IHsuLi5wcm9wc30gLz4pfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgTWFyayA9IChcbiAgcHJvcHM6IHtcbiAgICBlbmFibGU6IGJvb2xlYW47XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHNjb3JlOiBudW1iZXI7XG4gICAgb25DbGljazogaC5KU1guTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xuICAgIG1hcms6IFVSTCB8IHN0cmluZztcbiAgfSxcbikgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtwcm9wcy5lbmFibGUgPyBcIm1hcmtcIiA6IFwibWFyayBkaXNhYmxlZFwifVxuICAgIGRhdGEtc2NvcmU9e3Byb3BzLnNjb3JlLnRvUHJlY2lzaW9uKDMpfVxuICAgIG9uQ2xpY2s9e3Byb3BzLm9uQ2xpY2t9XG4gICAgdGl0bGU9e3Byb3BzLm5hbWV9XG4gID5cbiAgICB7cHJvcHMubWFyayBpbnN0YW5jZW9mIFVSTFxuICAgICAgPyA8aW1nIHNyYz17cHJvcHMubWFyay5ocmVmfSAvPlxuICAgICAgOiBgWyR7cHJvcHMubWFya31dYH1cbiAgPC9kaXY+XG4pO1xuXG5jb25zdCBzZWxlY3RvciA9IDxUIGV4dGVuZHMgeyB0aXRsZTogc3RyaW5nIH0+KGl0ZW06IFQpOiBzdHJpbmcgPT4gaXRlbS50aXRsZTtcbiIsICJsZXQgZGVidWdNb2RlOiBib29sZWFuIHwgU2V0PHN0cmluZz4gPSBmYWxzZTtcblxuLyoqIGNhY2hl5ZGo44KK44GuZGVidWflh7rlipvjga7mnInlirnjg7vnhKHlirnjga7liIfjgormm7/jgYjjgpLooYzjgYZcbiAqXG4gKiBAcGFyYW0gbW9kZSBgdHJ1ZWDvvJrlhajjgabjga5kZWJ1Z+WHuuWKm+OCkuacieWKueOBq+OBmeOCiywgYGZhbHNlYO+8muWFqOOBpuOBrmRlYnVn5Ye65Yqb44KS54Sh5Yq544Gr44GZ44KLLCDjgZ3jgozku6XlpJbvvJrmjIflrprjgZfjgZ/jg5XjgqHjgqTjg6vkuK3jga5kZWJ1Z+WHuuWKm+OBruOBv+acieWKueOBq+OBmeOCi1xuICovXG5leHBvcnQgY29uc3Qgc2V0RGVidWdNb2RlID0gKG1vZGU6IGJvb2xlYW4gfCBJdGVyYWJsZTxzdHJpbmc+KTogdm9pZCA9PiB7XG4gIGRlYnVnTW9kZSA9IHR5cGVvZiBtb2RlID09PSBcImJvb2xlYW5cIiA/IG1vZGUgOiBuZXcgU2V0KG1vZGUpO1xufTtcblxuLyoqIGRlYnVnIG1vZGXjga7jgajjgY3jgaDjgZHmnInlirnjgapjb25zb2xl44KS44OV44Kh44Kk44Or44GU44Go44Gr5L2c44KLXG4gKlxuICogQHBhcmFtIGZpbGVuYW1lIOOCs+ODs+OCveODvOODq+WHuuWKm+OCkuWRvOOBs+WHuuOBl+OBn+ODleOCoeOCpOODq+WQjVxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlRGVidWcgPSAoZmlsZW5hbWU6IHN0cmluZyk6IENvbnNvbGUgPT5cbiAgT2JqZWN0LmZyb21FbnRyaWVzKFsuLi5PYmplY3QuZW50cmllcyhjb25zb2xlKV0ubWFwKFxuICAgIChba2V5LCB2YWx1ZV06IFtzdHJpbmcsIHVua25vd25dKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBba2V5LCB2YWx1ZV07XG4gICAgICBzd2l0Y2ggKGtleSBhcyBrZXlvZiBDb25zb2xlKSB7XG4gICAgICAgIGNhc2UgXCJ3YXJuXCI6XG4gICAgICAgIGNhc2UgXCJlcnJvclwiOlxuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAoLi4uYXJnczogdW5rbm93bltdKSA9PlxuICAgICAgICAgICAgICB2YWx1ZShgJWMke2ZpbGVuYW1lfWAsIFwiY29sb3I6IGdyYXlcIiwgLi4uYXJncyksXG4gICAgICAgICAgXTtcbiAgICAgICAgY2FzZSBcImxvZ1wiOlxuICAgICAgICBjYXNlIFwiaW5mb1wiOlxuICAgICAgICBjYXNlIFwiZGVidWdcIjpcbiAgICAgICAgICByZXR1cm4gW2tleSwgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBkZWJ1Z01vZGUgIT09IHRydWUgJiYgKCFkZWJ1Z01vZGUgfHwgIWRlYnVnTW9kZS5oYXMoZmlsZW5hbWUpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbHVlKGAlYyR7ZmlsZW5hbWV9YCwgXCJjb2xvcjogZ3JheVwiLCAuLi5hcmdzKTtcbiAgICAgICAgICB9XTtcbiAgICAgICAgY2FzZSBcImFzc2VydFwiOlxuICAgICAgICAgIHJldHVybiBba2V5LCAoYXNzZXJ0aW9uOiBib29sZWFuLCAuLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZGVidWdNb2RlICE9PSB0cnVlICYmICghZGVidWdNb2RlIHx8ICFkZWJ1Z01vZGUuaGFzKGZpbGVuYW1lKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWx1ZShhc3NlcnRpb24sIGAlYyR7ZmlsZW5hbWV9YCwgXCJjb2xvcjogZ3JheVwiLCAuLi5hcmdzKTtcbiAgICAgICAgICB9XTtcbiAgICAgICAgY2FzZSBcInRpbWVcIjpcbiAgICAgICAgY2FzZSBcInRpbWVFbmRcIjpcbiAgICAgICAgICByZXR1cm4gW2tleSwgKGxhYmVsOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZGVidWdNb2RlICE9PSB0cnVlICYmICghZGVidWdNb2RlIHx8ICFkZWJ1Z01vZGUuaGFzKGZpbGVuYW1lKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWx1ZShgJHtmaWxlbmFtZX0gJHtsYWJlbH1gKTtcbiAgICAgICAgICB9XTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gW2tleSwgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBkZWJ1Z01vZGUgIT09IHRydWUgJiYgKCFkZWJ1Z01vZGUgfHwgIWRlYnVnTW9kZS5oYXMoZmlsZW5hbWUpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSguLi5hcmdzKTtcbiAgICAgICAgICB9XTtcbiAgICAgIH1cbiAgICB9LFxuICApKSBhcyB1bmtub3duIGFzIENvbnNvbGU7XG4iLCAiLyoqIOWcp+e4ruOBl+OBn+ODquODs+OCr+ODh+ODvOOCv1xuICpcbiAqIHByb3BlcnR5IG5hbWXjgpLnnIHnlaXjgZnjgovjgZPjgajjgafjg4fjg7zjgr/ph4/jgpLmuJvjgonjgZfjgabjgYTjgotcbiAqL1xuZXhwb3J0IHR5cGUgQ29tcHJlc3NlZExpbmsgPSBbXG4gIHN0cmluZywgLy8gdGl0bGU7IHBhZ2UgdGl0bGVcbiAgc3RyaW5nIHwgdW5kZWZpbmVkLCAvLyBpbWFnZSBwYWdlIHRodW1ibmFpbFxuICBudW1iZXIsIC8vIHVwZGF0ZWQ7IOepuuODmuODvOOCuOOBruOBqOOBjeOBry0x44Gr44Gq44KLXG4gIC4uLnN0cmluZ1tdLCAvLyBsaW5rc1xuXTtcblxuLyoqIGxpbmsgZGF0YSAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW5rIHtcbiAgLyoqIHBhZ2UgdGl0bGUgKi9cbiAgdGl0bGU6IHN0cmluZztcblxuICAvKiogbGlua3MgdGhlIHBhZ2UgaGFzICovXG4gIGxpbmtzOiBzdHJpbmdbXTtcblxuICAvKiogcGFnZSB0aHVtYm5haWwgKi9cbiAgaW1hZ2U/OiBzdHJpbmc7XG5cbiAgLyoqIHdoZXRoZXIgdGhlIHBhZ2UgZXhpc3RzICovXG4gIGV4aXN0czogYm9vbGVhbjtcblxuICAvKiogdXBkYXRlZCB0aW1lIChVTklYIHRpbWUpICovXG4gIHVwZGF0ZWQ6IG51bWJlcjtcbn1cblxuLyoqIOWcp+e4ruOBl+OBn+ODquODs+OCr+aDheWgseOCkuimi+OChOOBmeOBj+OBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGRlY29kZSA9IChsaW5rOiBDb21wcmVzc2VkTGluayk6IExpbmsgPT4ge1xuICBjb25zdCBbdGl0bGUsIGltYWdlLCB1cGRhdGVkLCAuLi5saW5rc10gPSBsaW5rO1xuXG4gIHJldHVybiB7XG4gICAgdGl0bGUsXG4gICAgbGlua3MsXG4gICAgaW1hZ2UsXG4gICAgZXhpc3RzOiB1cGRhdGVkID49IDAsXG4gICAgdXBkYXRlZDogTWF0aC5taW4oMCwgdXBkYXRlZCksXG4gIH07XG59O1xuXG4vKiog44Oq44Oz44Kv5oOF5aCx44KSRELnlKjjgavlnKfnuK7jgZnjgosgKi9cbmV4cG9ydCBjb25zdCBlbmNvZGUgPSAoXG4gIGxpbms6IExpbmssXG4pOiBDb21wcmVzc2VkTGluayA9PiBbXG4gIGxpbmsudGl0bGUsXG4gIGxpbmsuaW1hZ2UsXG4gIGxpbmsuZXhpc3RzID8gbGluay51cGRhdGVkIDogLTEsXG4gIC4uLmxpbmsubGlua3MsXG5dO1xuIiwgImltcG9ydCB7IFNlYXJjaGVkVGl0bGUsIHRvVGl0bGVMYyB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmltcG9ydCB7IENvbXByZXNzZWRMaW5rLCBlbmNvZGUsIExpbmsgfSBmcm9tIFwiLi9saW5rLnRzXCI7XG5cbi8qKiBTZWFyY2ggVGl0bGUgQVBJ44GL44KJ5Y+W5b6X44GX44Gf44Oq44Oz44Kv44OH44O844K/44KS44CBRELjgavmoLzntI3jgZnjgovlvaLlvI/jgavlpInmj5vjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBjb252ZXJ0TGlua3MgPSAocGFnZXM6IFNlYXJjaGVkVGl0bGVbXSk6IENvbXByZXNzZWRMaW5rW10gPT4ge1xuICBjb25zdCBsaW5rTWFwID0gbmV3IE1hcDxzdHJpbmcsIExpbms+KCk7XG5cbiAgZm9yIChjb25zdCBwYWdlIG9mIHBhZ2VzKSB7XG4gICAgY29uc3QgdGl0bGVMYyA9IHRvVGl0bGVMYyhwYWdlLnRpdGxlKTtcbiAgICBsaW5rTWFwLnNldCh0aXRsZUxjLCB7XG4gICAgICB0aXRsZTogcGFnZS50aXRsZSxcbiAgICAgIGltYWdlOiBwYWdlLmltYWdlLFxuICAgICAgdXBkYXRlZDogcGFnZS51cGRhdGVkLFxuICAgICAgbGlua3M6IHBhZ2UubGlua3MsXG4gICAgICBleGlzdHM6IHRydWUsXG4gICAgfSk7XG5cbiAgICBmb3IgKGNvbnN0IGxpbmsgb2YgcGFnZS5saW5rcykge1xuICAgICAgY29uc3QgbGlua0xjID0gdG9UaXRsZUxjKGxpbmspO1xuXG4gICAgICBpZiAobGlua01hcC5oYXMobGlua0xjKSkgY29udGludWU7XG5cbiAgICAgIGxpbmtNYXAuc2V0KGxpbmtMYywge1xuICAgICAgICB0aXRsZTogbGluayxcbiAgICAgICAgdXBkYXRlZDogMCxcbiAgICAgICAgbGlua3M6IFtdLFxuICAgICAgICBleGlzdHM6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFsuLi5saW5rTWFwLnZhbHVlcygpXS5tYXAoKGxpbmspID0+IGVuY29kZShsaW5rKSk7XG59O1xuIiwgImltcG9ydCB7XG4gIGdldExpbmtzLFxuICBJbnZhbGlkRm9sbG93aW5nSWRFcnJvcixcbiAgUmVzdWx0LFxufSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IENvbXByZXNzZWRMaW5rIH0gZnJvbSBcIi4vbGluay50c1wiO1xuaW1wb3J0IHsgY3JlYXRlRGVidWcgfSBmcm9tIFwiLi9kZWJ1Zy50c1wiO1xuaW1wb3J0IHtcbiAgTm90Rm91bmRFcnJvcixcbiAgTm90TG9nZ2VkSW5FcnJvcixcbiAgU2VhcmNoZWRUaXRsZSxcbn0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuaW1wb3J0IHsgY29udmVydExpbmtzIH0gZnJvbSBcIi4vY29udmVydExpbmtzLnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZURlYnVnKFwic2NyYXBib3gtc3RvcmFnZTpyZW1vdGUudHNcIik7XG5cbi8qKiByZW1vdGXjgYvjgonjg6rjg7Pjgq/jg4fjg7zjgr/jgpLlj5blvpfjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBkb3dubG9hZExpbmtzID0gYXN5bmMgKFxuICBwcm9qZWN0OiBzdHJpbmcsXG4pOiBQcm9taXNlPFxuICBSZXN1bHQ8XG4gICAgQ29tcHJlc3NlZExpbmtbXSxcbiAgICBOb3RGb3VuZEVycm9yIHwgTm90TG9nZ2VkSW5FcnJvciB8IEludmFsaWRGb2xsb3dpbmdJZEVycm9yXG4gID5cbj4gPT4ge1xuICBsZXQgZm9sbG93aW5nSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY29uc3QgcGFnZXM6IFNlYXJjaGVkVGl0bGVbXSA9IFtdO1xuXG4gIGNvbnN0IHRhZyA9IGBkb3dubG9hZCBhbmQgY3JlYXRlIExpbmtzIG9mIFwiJHtwcm9qZWN0fVwiYDtcbiAgbG9nZ2VyLnRpbWUodGFnKTtcblxuICBkbyB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZ2V0TGlua3MocHJvamVjdCwgeyBmb2xsb3dpbmdJZCB9KTtcbiAgICBpZiAoIXJlcy5vaykgcmV0dXJuIHJlcztcbiAgICBmb2xsb3dpbmdJZCA9IHJlcy52YWx1ZS5mb2xsb3dpbmdJZDtcbiAgICBwYWdlcy5wdXNoKC4uLnJlcy52YWx1ZS5wYWdlcyk7XG4gIH0gd2hpbGUgKGZvbGxvd2luZ0lkKTtcbiAgY29uc3QgcmVzdWx0ID0gY29udmVydExpbmtzKHBhZ2VzKTtcblxuICBsb2dnZXIudGltZUVuZCh0YWcpO1xuXG4gIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogcmVzdWx0IH07XG59O1xuIiwgImltcG9ydCB7IGdldFByb2plY3QsIGxpc3RQcm9qZWN0cywgUmVzdWx0IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1yZXN0LnRzXCI7XG5pbXBvcnQge1xuICBOb3RGb3VuZEVycm9yLFxuICBOb3RMb2dnZWRJbkVycm9yLFxuICBOb3RNZW1iZXJFcnJvcixcbiAgUHJvamVjdCxcbn0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3RTdGF0dXMge1xuICAvKiogcHJvamVjdCBuYW1lIChrZXkpICovXG4gIHByb2plY3Q6IHN0cmluZztcblxuICAvKiogcHJvamVjdCBpZFxuICAgKlxuICAgKiBwcm9qZWN0c+OBruabtOaWsOaXpeaZguOCkuS4gOaLrOWPluW+l+OBmeOCi+OBqOOBjeOBq+S9v+OBhlxuICAgKi9cbiAgaWQ/OiBzdHJpbmc7XG5cbiAgLyoqIOacieWKueOBqnByb2plY3TjgYvjganjgYbjgYtcbiAgICpcbiAgICog44Ki44Kv44K744K55qip44Gu44Gq44GEcHJvamVjdOOBqOWtmOWcqOOBl+OBquOBhHByb2plY3Tjga7loLTlkIjjga9mYWxzZeOBq+OBquOCi1xuICAgKi9cbiAgaXNWYWxpZDogdHJ1ZTtcblxuICAvKiogcHJvamVjdOOBruacgOe1guabtOaWsOaXpeaZglxuICAgKlxuICAgKiDjg6rjg7Pjgq/jg4fjg7zjgr/jga7mm7TmlrDjgpLnorroqo3jgZnjgovjgajjgY3jgavkvb/jgYZcbiAgICovXG4gIHVwZGF0ZWQ6IG51bWJlcjtcblxuICAvKiog44OH44O844K/44Gu5pyA57WC56K66KqN5pel5pmCICovXG4gIGNoZWNrZWQ6IG51bWJlcjtcblxuICAvKiog5pu05paw5Lit44OV44Op44KwICovXG4gIHVwZGF0aW5nOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludmFsaWRQcm9qZWN0U3RhdHVzIHtcbiAgLyoqIHByb2plY3QgbmFtZSAoa2V5KSAqL1xuICBwcm9qZWN0OiBzdHJpbmc7XG5cbiAgLyoqIOacieWKueOBqnByb2plY3TjgYvjganjgYbjgYtcbiAgICpcbiAgICog44Ki44Kv44K744K55qip44Gu44Gq44GEcHJvamVjdOOBqOWtmOWcqOOBl+OBquOBhHByb2plY3Tjga7loLTlkIjjga9mYWxzZeOBq+OBquOCi1xuICAgKi9cbiAgaXNWYWxpZDogZmFsc2U7XG59XG5cbi8qKiBwcm9qZWN044Gu5oOF5aCx44KS5LiA5ous5Y+W5b6X44GZ44KLICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIGZldGNoUHJvamVjdFN0YXR1cyhcbiAgcHJvamVjdHM6IFByb2plY3RTdGF0dXNbXSxcbik6IEFzeW5jR2VuZXJhdG9yPFxuICBSZXN1bHQ8XG4gICAgUHJvamVjdCAmIHsgY2hlY2tlZDogbnVtYmVyIH0sXG4gICAgKE5vdExvZ2dlZEluRXJyb3IgfCBOb3RGb3VuZEVycm9yIHwgTm90TWVtYmVyRXJyb3IpICYgeyBwcm9qZWN0OiBzdHJpbmcgfVxuICA+LFxuICB2b2lkLFxuICB1bmtub3duXG4+IHtcbiAgLy8gaWTjgYzjgYLjgovjgoLjga7jgajjgarjgYTjgoLjga7jgajjgavliIbjgZHjgotcbiAgY29uc3QgcHJvamVjdElkczogc3RyaW5nW10gPSBbXTtcbiAgbGV0IG5ld1Byb2plY3RzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBjaGVja2VkTWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgZm9yIChjb25zdCBwcm9qZWN0IG9mIHByb2plY3RzKSB7XG4gICAgaWYgKHByb2plY3QuaWQpIHtcbiAgICAgIHByb2plY3RJZHMucHVzaChwcm9qZWN0LmlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3UHJvamVjdHMucHVzaChwcm9qZWN0LnByb2plY3QpO1xuICAgIH1cbiAgICBjaGVja2VkTWFwLnNldChwcm9qZWN0LnByb2plY3QsIHByb2plY3QuY2hlY2tlZCk7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbGlzdFByb2plY3RzKHByb2plY3RJZHMpO1xuICBpZiAoIXJlc3VsdC5vaykge1xuICAgIC8vIGxvZyBpbuOBl+OBpuOBhOOBquOBhOOBqOOBjeOBr+OAgWdldFByb2plY3QoKeOBp+WFqOOBpuOBrnByb2plY3Tjga7jg4fjg7zjgr/jgpLlj5blvpfjgZnjgotcbiAgICBuZXdQcm9qZWN0cyA9IHByb2plY3RzLm1hcCgocHJvamVjdCkgPT4gcHJvamVjdC5wcm9qZWN0KTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKGNvbnN0IHByb2plY3Qgb2YgcmVzdWx0LnZhbHVlLnByb2plY3RzKSB7XG4gICAgICBpZiAoIWNoZWNrZWRNYXAuaGFzKHByb2plY3QubmFtZSkpIGNvbnRpbnVlO1xuICAgICAgeWllbGQge1xuICAgICAgICBvazogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IHsgLi4ucHJvamVjdCwgY2hlY2tlZDogY2hlY2tlZE1hcC5nZXQocHJvamVjdC5uYW1lKSA/PyAwIH0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBmb3IgKGNvbnN0IG5hbWUgb2YgbmV3UHJvamVjdHMpIHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBnZXRQcm9qZWN0KG5hbWUpO1xuICAgIHlpZWxkIHJlcy5va1xuICAgICAgPyB7XG4gICAgICAgIG9rOiB0cnVlLFxuICAgICAgICB2YWx1ZTogeyAuLi5yZXMudmFsdWUsIGNoZWNrZWQ6IGNoZWNrZWRNYXAuZ2V0KG5hbWUpID8/IDAgfSxcbiAgICAgIH1cbiAgICAgIDogeyBvazogZmFsc2UsIHZhbHVlOiB7IC4uLnJlcy52YWx1ZSwgcHJvamVjdDogbmFtZSB9IH07XG4gIH1cbn1cbiIsICJjb25zdCBpbnN0YW5jZU9mQW55ID0gKG9iamVjdCwgY29uc3RydWN0b3JzKSA9XHUwMDNlIGNvbnN0cnVjdG9ycy5zb21lKChjKSA9XHUwMDNlIG9iamVjdCBpbnN0YW5jZW9mIGMpO1xuXG5sZXQgaWRiUHJveHlhYmxlVHlwZXM7XG5sZXQgY3Vyc29yQWR2YW5jZU1ldGhvZHM7XG4vLyBUaGlzIGlzIGEgZnVuY3Rpb24gdG8gcHJldmVudCBpdCB0aHJvd2luZyB1cCBpbiBub2RlIGVudmlyb25tZW50cy5cbmZ1bmN0aW9uIGdldElkYlByb3h5YWJsZVR5cGVzKCkge1xuICAgIHJldHVybiAoaWRiUHJveHlhYmxlVHlwZXMgfHxcbiAgICAgICAgKGlkYlByb3h5YWJsZVR5cGVzID0gW1xuICAgICAgICAgICAgSURCRGF0YWJhc2UsXG4gICAgICAgICAgICBJREJPYmplY3RTdG9yZSxcbiAgICAgICAgICAgIElEQkluZGV4LFxuICAgICAgICAgICAgSURCQ3Vyc29yLFxuICAgICAgICAgICAgSURCVHJhbnNhY3Rpb24sXG4gICAgICAgIF0pKTtcbn1cbi8vIFRoaXMgaXMgYSBmdW5jdGlvbiB0byBwcmV2ZW50IGl0IHRocm93aW5nIHVwIGluIG5vZGUgZW52aXJvbm1lbnRzLlxuZnVuY3Rpb24gZ2V0Q3Vyc29yQWR2YW5jZU1ldGhvZHMoKSB7XG4gICAgcmV0dXJuIChjdXJzb3JBZHZhbmNlTWV0aG9kcyB8fFxuICAgICAgICAoY3Vyc29yQWR2YW5jZU1ldGhvZHMgPSBbXG4gICAgICAgICAgICBJREJDdXJzb3IucHJvdG90eXBlLmFkdmFuY2UsXG4gICAgICAgICAgICBJREJDdXJzb3IucHJvdG90eXBlLmNvbnRpbnVlLFxuICAgICAgICAgICAgSURCQ3Vyc29yLnByb3RvdHlwZS5jb250aW51ZVByaW1hcnlLZXksXG4gICAgICAgIF0pKTtcbn1cbmNvbnN0IHRyYW5zYWN0aW9uRG9uZU1hcCA9IG5ldyBXZWFrTWFwKCk7XG5jb25zdCB0cmFuc2Zvcm1DYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG5jb25zdCByZXZlcnNlVHJhbnNmb3JtQ2FjaGUgPSBuZXcgV2Vha01hcCgpO1xuZnVuY3Rpb24gcHJvbWlzaWZ5UmVxdWVzdChyZXF1ZXN0KSB7XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID1cdTAwM2Uge1xuICAgICAgICBjb25zdCB1bmxpc3RlbiA9ICgpID1cdTAwM2Uge1xuICAgICAgICAgICAgcmVxdWVzdC5yZW1vdmVFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgc3VjY2Vzcyk7XG4gICAgICAgICAgICByZXF1ZXN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3IpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBzdWNjZXNzID0gKCkgPVx1MDAzZSB7XG4gICAgICAgICAgICByZXNvbHZlKHdyYXAocmVxdWVzdC5yZXN1bHQpKTtcbiAgICAgICAgICAgIHVubGlzdGVuKCk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGVycm9yID0gKCkgPVx1MDAzZSB7XG4gICAgICAgICAgICByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICAgICAgICB1bmxpc3RlbigpO1xuICAgICAgICB9O1xuICAgICAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBzdWNjZXNzKTtcbiAgICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGVycm9yKTtcbiAgICB9KTtcbiAgICAvLyBUaGlzIG1hcHBpbmcgZXhpc3RzIGluIHJldmVyc2VUcmFuc2Zvcm1DYWNoZSBidXQgZG9lc24ndCBkb2Vzbid0IGV4aXN0IGluIHRyYW5zZm9ybUNhY2hlLiBUaGlzXG4gICAgLy8gaXMgYmVjYXVzZSB3ZSBjcmVhdGUgbWFueSBwcm9taXNlcyBmcm9tIGEgc2luZ2xlIElEQlJlcXVlc3QuXG4gICAgcmV2ZXJzZVRyYW5zZm9ybUNhY2hlLnNldChwcm9taXNlLCByZXF1ZXN0KTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cbmZ1bmN0aW9uIGNhY2hlRG9uZVByb21pc2VGb3JUcmFuc2FjdGlvbih0eCkge1xuICAgIC8vIEVhcmx5IGJhaWwgaWYgd2UndmUgYWxyZWFkeSBjcmVhdGVkIGEgZG9uZSBwcm9taXNlIGZvciB0aGlzIHRyYW5zYWN0aW9uLlxuICAgIGlmICh0cmFuc2FjdGlvbkRvbmVNYXAuaGFzKHR4KSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGRvbmUgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9XHUwMDNlIHtcbiAgICAgICAgY29uc3QgdW5saXN0ZW4gPSAoKSA9XHUwMDNlIHtcbiAgICAgICAgICAgIHR4LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgY29tcGxldGUpO1xuICAgICAgICAgICAgdHgucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3InLCBlcnJvcik7XG4gICAgICAgICAgICB0eC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGVycm9yKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY29tcGxldGUgPSAoKSA9XHUwMDNlIHtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIHVubGlzdGVuKCk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGVycm9yID0gKCkgPVx1MDAzZSB7XG4gICAgICAgICAgICByZWplY3QodHguZXJyb3IgfHwgbmV3IERPTUV4Y2VwdGlvbignQWJvcnRFcnJvcicsICdBYm9ydEVycm9yJykpO1xuICAgICAgICAgICAgdW5saXN0ZW4oKTtcbiAgICAgICAgfTtcbiAgICAgICAgdHguYWRkRXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCBjb21wbGV0ZSk7XG4gICAgICAgIHR4LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3IpO1xuICAgICAgICB0eC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGVycm9yKTtcbiAgICB9KTtcbiAgICAvLyBDYWNoZSBpdCBmb3IgbGF0ZXIgcmV0cmlldmFsLlxuICAgIHRyYW5zYWN0aW9uRG9uZU1hcC5zZXQodHgsIGRvbmUpO1xufVxubGV0IGlkYlByb3h5VHJhcHMgPSB7XG4gICAgZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIElEQlRyYW5zYWN0aW9uKSB7XG4gICAgICAgICAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIGZvciB0cmFuc2FjdGlvbi5kb25lLlxuICAgICAgICAgICAgaWYgKHByb3AgPT09ICdkb25lJylcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb25Eb25lTWFwLmdldCh0YXJnZXQpO1xuICAgICAgICAgICAgLy8gTWFrZSB0eC5zdG9yZSByZXR1cm4gdGhlIG9ubHkgc3RvcmUgaW4gdGhlIHRyYW5zYWN0aW9uLCBvciB1bmRlZmluZWQgaWYgdGhlcmUgYXJlIG1hbnkuXG4gICAgICAgICAgICBpZiAocHJvcCA9PT0gJ3N0b3JlJykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWNlaXZlci5vYmplY3RTdG9yZU5hbWVzWzFdXG4gICAgICAgICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIDogcmVjZWl2ZXIub2JqZWN0U3RvcmUocmVjZWl2ZXIub2JqZWN0U3RvcmVOYW1lc1swXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gRWxzZSB0cmFuc2Zvcm0gd2hhdGV2ZXIgd2UgZ2V0IGJhY2suXG4gICAgICAgIHJldHVybiB3cmFwKHRhcmdldFtwcm9wXSk7XG4gICAgfSxcbiAgICBzZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSkge1xuICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBoYXModGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBJREJUcmFuc2FjdGlvbiBcdTAwMjZcdTAwMjZcbiAgICAgICAgICAgIChwcm9wID09PSAnZG9uZScgfHwgcHJvcCA9PT0gJ3N0b3JlJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9wIGluIHRhcmdldDtcbiAgICB9LFxufTtcbmZ1bmN0aW9uIHJlcGxhY2VUcmFwcyhjYWxsYmFjaykge1xuICAgIGlkYlByb3h5VHJhcHMgPSBjYWxsYmFjayhpZGJQcm94eVRyYXBzKTtcbn1cbmZ1bmN0aW9uIHdyYXBGdW5jdGlvbihmdW5jKSB7XG4gICAgLy8gRHVlIHRvIGV4cGVjdGVkIG9iamVjdCBlcXVhbGl0eSAod2hpY2ggaXMgZW5mb3JjZWQgYnkgdGhlIGNhY2hpbmcgaW4gYHdyYXBgKSwgd2VcbiAgICAvLyBvbmx5IGNyZWF0ZSBvbmUgbmV3IGZ1bmMgcGVyIGZ1bmMuXG4gICAgLy8gQ3Vyc29yIG1ldGhvZHMgYXJlIHNwZWNpYWwsIGFzIHRoZSBiZWhhdmlvdXIgaXMgYSBsaXR0bGUgbW9yZSBkaWZmZXJlbnQgdG8gc3RhbmRhcmQgSURCLiBJblxuICAgIC8vIElEQiwgeW91IGFkdmFuY2UgdGhlIGN1cnNvciBhbmQgd2FpdCBmb3IgYSBuZXcgJ3N1Y2Nlc3MnIG9uIHRoZSBJREJSZXF1ZXN0IHRoYXQgZ2F2ZSB5b3UgdGhlXG4gICAgLy8gY3Vyc29yLiBJdCdzIGtpbmRhIGxpa2UgYSBwcm9taXNlIHRoYXQgY2FuIHJlc29sdmUgd2l0aCBtYW55IHZhbHVlcy4gVGhhdCBkb2Vzbid0IG1ha2Ugc2Vuc2VcbiAgICAvLyB3aXRoIHJlYWwgcHJvbWlzZXMsIHNvIGVhY2ggYWR2YW5jZSBtZXRob2RzIHJldHVybnMgYSBuZXcgcHJvbWlzZSBmb3IgdGhlIGN1cnNvciBvYmplY3QsIG9yXG4gICAgLy8gdW5kZWZpbmVkIGlmIHRoZSBlbmQgb2YgdGhlIGN1cnNvciBoYXMgYmVlbiByZWFjaGVkLlxuICAgIGlmIChnZXRDdXJzb3JBZHZhbmNlTWV0aG9kcygpLmluY2x1ZGVzKGZ1bmMpKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgLy8gQ2FsbGluZyB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gd2l0aCB0aGUgcHJveHkgYXMgJ3RoaXMnIGNhdXNlcyBJTExFR0FMIElOVk9DQVRJT04sIHNvIHdlIHVzZVxuICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIG9iamVjdC5cbiAgICAgICAgICAgIGZ1bmMuYXBwbHkodW53cmFwKHRoaXMpLCBhcmdzKTtcbiAgICAgICAgICAgIHJldHVybiB3cmFwKHRoaXMucmVxdWVzdCk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAvLyBDYWxsaW5nIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiB3aXRoIHRoZSBwcm94eSBhcyAndGhpcycgY2F1c2VzIElMTEVHQUwgSU5WT0NBVElPTiwgc28gd2UgdXNlXG4gICAgICAgIC8vIHRoZSBvcmlnaW5hbCBvYmplY3QuXG4gICAgICAgIHJldHVybiB3cmFwKGZ1bmMuYXBwbHkodW53cmFwKHRoaXMpLCBhcmdzKSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHRyYW5zZm9ybUNhY2hhYmxlVmFsdWUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKVxuICAgICAgICByZXR1cm4gd3JhcEZ1bmN0aW9uKHZhbHVlKTtcbiAgICAvLyBUaGlzIGRvZXNuJ3QgcmV0dXJuLCBpdCBqdXN0IGNyZWF0ZXMgYSAnZG9uZScgcHJvbWlzZSBmb3IgdGhlIHRyYW5zYWN0aW9uLFxuICAgIC8vIHdoaWNoIGlzIGxhdGVyIHJldHVybmVkIGZvciB0cmFuc2FjdGlvbi5kb25lIChzZWUgaWRiT2JqZWN0SGFuZGxlcikuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgSURCVHJhbnNhY3Rpb24pXG4gICAgICAgIGNhY2hlRG9uZVByb21pc2VGb3JUcmFuc2FjdGlvbih2YWx1ZSk7XG4gICAgaWYgKGluc3RhbmNlT2ZBbnkodmFsdWUsIGdldElkYlByb3h5YWJsZVR5cGVzKCkpKVxuICAgICAgICByZXR1cm4gbmV3IFByb3h5KHZhbHVlLCBpZGJQcm94eVRyYXBzKTtcbiAgICAvLyBSZXR1cm4gdGhlIHNhbWUgdmFsdWUgYmFjayBpZiB3ZSdyZSBub3QgZ29pbmcgdG8gdHJhbnNmb3JtIGl0LlxuICAgIHJldHVybiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIHdyYXAodmFsdWUpIHtcbiAgICAvLyBXZSBzb21ldGltZXMgZ2VuZXJhdGUgbXVsdGlwbGUgcHJvbWlzZXMgZnJvbSBhIHNpbmdsZSBJREJSZXF1ZXN0IChlZyB3aGVuIGN1cnNvcmluZyksIGJlY2F1c2VcbiAgICAvLyBJREIgaXMgd2VpcmQgYW5kIGEgc2luZ2xlIElEQlJlcXVlc3QgY2FuIHlpZWxkIG1hbnkgcmVzcG9uc2VzLCBzbyB0aGVzZSBjYW4ndCBiZSBjYWNoZWQuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgSURCUmVxdWVzdClcbiAgICAgICAgcmV0dXJuIHByb21pc2lmeVJlcXVlc3QodmFsdWUpO1xuICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgdHJhbnNmb3JtZWQgdGhpcyB2YWx1ZSBiZWZvcmUsIHJldXNlIHRoZSB0cmFuc2Zvcm1lZCB2YWx1ZS5cbiAgICAvLyBUaGlzIGlzIGZhc3RlciwgYnV0IGl0IGFsc28gcHJvdmlkZXMgb2JqZWN0IGVxdWFsaXR5LlxuICAgIGlmICh0cmFuc2Zvcm1DYWNoZS5oYXModmFsdWUpKVxuICAgICAgICByZXR1cm4gdHJhbnNmb3JtQ2FjaGUuZ2V0KHZhbHVlKTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRyYW5zZm9ybUNhY2hhYmxlVmFsdWUodmFsdWUpO1xuICAgIC8vIE5vdCBhbGwgdHlwZXMgYXJlIHRyYW5zZm9ybWVkLlxuICAgIC8vIFRoZXNlIG1heSBiZSBwcmltaXRpdmUgdHlwZXMsIHNvIHRoZXkgY2FuJ3QgYmUgV2Vha01hcCBrZXlzLlxuICAgIGlmIChuZXdWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgdHJhbnNmb3JtQ2FjaGUuc2V0KHZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgICAgIHJldmVyc2VUcmFuc2Zvcm1DYWNoZS5zZXQobmV3VmFsdWUsIHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld1ZhbHVlO1xufVxuY29uc3QgdW53cmFwID0gKHZhbHVlKSA9XHUwMDNlIHJldmVyc2VUcmFuc2Zvcm1DYWNoZS5nZXQodmFsdWUpO1xuXG4vKipcbiAqIE9wZW4gYSBkYXRhYmFzZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBkYXRhYmFzZS5cbiAqIEBwYXJhbSB2ZXJzaW9uIFNjaGVtYSB2ZXJzaW9uLlxuICogQHBhcmFtIGNhbGxiYWNrcyBBZGRpdGlvbmFsIGNhbGxiYWNrcy5cbiAqL1xuZnVuY3Rpb24gb3BlbkRCKG5hbWUsIHZlcnNpb24sIHsgYmxvY2tlZCwgdXBncmFkZSwgYmxvY2tpbmcsIHRlcm1pbmF0ZWQgfSA9IHt9KSB7XG4gICAgY29uc3QgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKG5hbWUsIHZlcnNpb24pO1xuICAgIGNvbnN0IG9wZW5Qcm9taXNlID0gd3JhcChyZXF1ZXN0KTtcbiAgICBpZiAodXBncmFkZSkge1xuICAgICAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3VwZ3JhZGVuZWVkZWQnLCAoZXZlbnQpID1cdTAwM2Uge1xuICAgICAgICAgICAgdXBncmFkZSh3cmFwKHJlcXVlc3QucmVzdWx0KSwgZXZlbnQub2xkVmVyc2lvbiwgZXZlbnQubmV3VmVyc2lvbiwgd3JhcChyZXF1ZXN0LnRyYW5zYWN0aW9uKSwgZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGJsb2NrZWQpIHtcbiAgICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdibG9ja2VkJywgKGV2ZW50KSA9XHUwMDNlIGJsb2NrZWQoXG4gICAgICAgIC8vIENhc3RpbmcgZHVlIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC1ET00tbGliLWdlbmVyYXRvci9wdWxsLzE0MDVcbiAgICAgICAgZXZlbnQub2xkVmVyc2lvbiwgZXZlbnQubmV3VmVyc2lvbiwgZXZlbnQpKTtcbiAgICB9XG4gICAgb3BlblByb21pc2VcbiAgICAgICAgLnRoZW4oKGRiKSA9XHUwMDNlIHtcbiAgICAgICAgaWYgKHRlcm1pbmF0ZWQpXG4gICAgICAgICAgICBkYi5hZGRFdmVudExpc3RlbmVyKCdjbG9zZScsICgpID1cdTAwM2UgdGVybWluYXRlZCgpKTtcbiAgICAgICAgaWYgKGJsb2NraW5nKSB7XG4gICAgICAgICAgICBkYi5hZGRFdmVudExpc3RlbmVyKCd2ZXJzaW9uY2hhbmdlJywgKGV2ZW50KSA9XHUwMDNlIGJsb2NraW5nKGV2ZW50Lm9sZFZlcnNpb24sIGV2ZW50Lm5ld1ZlcnNpb24sIGV2ZW50KSk7XG4gICAgICAgIH1cbiAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPVx1MDAzZSB7IH0pO1xuICAgIHJldHVybiBvcGVuUHJvbWlzZTtcbn1cbi8qKlxuICogRGVsZXRlIGEgZGF0YWJhc2UuXG4gKlxuICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgZGF0YWJhc2UuXG4gKi9cbmZ1bmN0aW9uIGRlbGV0ZURCKG5hbWUsIHsgYmxvY2tlZCB9ID0ge30pIHtcbiAgICBjb25zdCByZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKG5hbWUpO1xuICAgIGlmIChibG9ja2VkKSB7XG4gICAgICAgIHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcignYmxvY2tlZCcsIChldmVudCkgPVx1MDAzZSBibG9ja2VkKFxuICAgICAgICAvLyBDYXN0aW5nIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQtRE9NLWxpYi1nZW5lcmF0b3IvcHVsbC8xNDA1XG4gICAgICAgIGV2ZW50Lm9sZFZlcnNpb24sIGV2ZW50KSk7XG4gICAgfVxuICAgIHJldHVybiB3cmFwKHJlcXVlc3QpLnRoZW4oKCkgPVx1MDAzZSB1bmRlZmluZWQpO1xufVxuXG5jb25zdCByZWFkTWV0aG9kcyA9IFsnZ2V0JywgJ2dldEtleScsICdnZXRBbGwnLCAnZ2V0QWxsS2V5cycsICdjb3VudCddO1xuY29uc3Qgd3JpdGVNZXRob2RzID0gWydwdXQnLCAnYWRkJywgJ2RlbGV0ZScsICdjbGVhciddO1xuY29uc3QgY2FjaGVkTWV0aG9kcyA9IG5ldyBNYXAoKTtcbmZ1bmN0aW9uIGdldE1ldGhvZCh0YXJnZXQsIHByb3ApIHtcbiAgICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBJREJEYXRhYmFzZSBcdTAwMjZcdTAwMjZcbiAgICAgICAgIShwcm9wIGluIHRhcmdldCkgXHUwMDI2XHUwMDI2XG4gICAgICAgIHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY2FjaGVkTWV0aG9kcy5nZXQocHJvcCkpXG4gICAgICAgIHJldHVybiBjYWNoZWRNZXRob2RzLmdldChwcm9wKTtcbiAgICBjb25zdCB0YXJnZXRGdW5jTmFtZSA9IHByb3AucmVwbGFjZSgvRnJvbUluZGV4JC8sICcnKTtcbiAgICBjb25zdCB1c2VJbmRleCA9IHByb3AgIT09IHRhcmdldEZ1bmNOYW1lO1xuICAgIGNvbnN0IGlzV3JpdGUgPSB3cml0ZU1ldGhvZHMuaW5jbHVkZXModGFyZ2V0RnVuY05hbWUpO1xuICAgIGlmIChcbiAgICAvLyBCYWlsIGlmIHRoZSB0YXJnZXQgZG9lc24ndCBleGlzdCBvbiB0aGUgdGFyZ2V0LiBFZywgZ2V0QWxsIGlzbid0IGluIEVkZ2UuXG4gICAgISh0YXJnZXRGdW5jTmFtZSBpbiAodXNlSW5kZXggPyBJREJJbmRleCA6IElEQk9iamVjdFN0b3JlKS5wcm90b3R5cGUpIHx8XG4gICAgICAgICEoaXNXcml0ZSB8fCByZWFkTWV0aG9kcy5pbmNsdWRlcyh0YXJnZXRGdW5jTmFtZSkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbWV0aG9kID0gYXN5bmMgZnVuY3Rpb24gKHN0b3JlTmFtZSwgLi4uYXJncykge1xuICAgICAgICAvLyBpc1dyaXRlID8gJ3JlYWR3cml0ZScgOiB1bmRlZmluZWQgZ3ppcHBzIGJldHRlciwgYnV0IGZhaWxzIGluIEVkZ2UgOihcbiAgICAgICAgY29uc3QgdHggPSB0aGlzLnRyYW5zYWN0aW9uKHN0b3JlTmFtZSwgaXNXcml0ZSA/ICdyZWFkd3JpdGUnIDogJ3JlYWRvbmx5Jyk7XG4gICAgICAgIGxldCB0YXJnZXQgPSB0eC5zdG9yZTtcbiAgICAgICAgaWYgKHVzZUluZGV4KVxuICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LmluZGV4KGFyZ3Muc2hpZnQoKSk7XG4gICAgICAgIC8vIE11c3QgcmVqZWN0IGlmIG9wIHJlamVjdHMuXG4gICAgICAgIC8vIElmIGl0J3MgYSB3cml0ZSBvcGVyYXRpb24sIG11c3QgcmVqZWN0IGlmIHR4LmRvbmUgcmVqZWN0cy5cbiAgICAgICAgLy8gTXVzdCByZWplY3Qgd2l0aCBvcCByZWplY3Rpb24gZmlyc3QuXG4gICAgICAgIC8vIE11c3QgcmVzb2x2ZSB3aXRoIG9wIHZhbHVlLlxuICAgICAgICAvLyBNdXN0IGhhbmRsZSBib3RoIHByb21pc2VzIChubyB1bmhhbmRsZWQgcmVqZWN0aW9ucylcbiAgICAgICAgcmV0dXJuIChhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICB0YXJnZXRbdGFyZ2V0RnVuY05hbWVdKC4uLmFyZ3MpLFxuICAgICAgICAgICAgaXNXcml0ZSBcdTAwMjZcdTAwMjYgdHguZG9uZSxcbiAgICAgICAgXSkpWzBdO1xuICAgIH07XG4gICAgY2FjaGVkTWV0aG9kcy5zZXQocHJvcCwgbWV0aG9kKTtcbiAgICByZXR1cm4gbWV0aG9kO1xufVxucmVwbGFjZVRyYXBzKChvbGRUcmFwcykgPVx1MDAzZSAoe1xuICAgIC4uLm9sZFRyYXBzLFxuICAgIGdldDogKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpID1cdTAwM2UgZ2V0TWV0aG9kKHRhcmdldCwgcHJvcCkgfHwgb2xkVHJhcHMuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpLFxuICAgIGhhczogKHRhcmdldCwgcHJvcCkgPVx1MDAzZSAhIWdldE1ldGhvZCh0YXJnZXQsIHByb3ApIHx8IG9sZFRyYXBzLmhhcyh0YXJnZXQsIHByb3ApLFxufSkpO1xuXG5jb25zdCBhZHZhbmNlTWV0aG9kUHJvcHMgPSBbJ2NvbnRpbnVlJywgJ2NvbnRpbnVlUHJpbWFyeUtleScsICdhZHZhbmNlJ107XG5jb25zdCBtZXRob2RNYXAgPSB7fTtcbmNvbnN0IGFkdmFuY2VSZXN1bHRzID0gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IGl0dHJQcm94aWVkQ3Vyc29yVG9PcmlnaW5hbFByb3h5ID0gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IGN1cnNvckl0ZXJhdG9yVHJhcHMgPSB7XG4gICAgZ2V0KHRhcmdldCwgcHJvcCkge1xuICAgICAgICBpZiAoIWFkdmFuY2VNZXRob2RQcm9wcy5pbmNsdWRlcyhwcm9wKSlcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXRbcHJvcF07XG4gICAgICAgIGxldCBjYWNoZWRGdW5jID0gbWV0aG9kTWFwW3Byb3BdO1xuICAgICAgICBpZiAoIWNhY2hlZEZ1bmMpIHtcbiAgICAgICAgICAgIGNhY2hlZEZ1bmMgPSBtZXRob2RNYXBbcHJvcF0gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgICAgIGFkdmFuY2VSZXN1bHRzLnNldCh0aGlzLCBpdHRyUHJveGllZEN1cnNvclRvT3JpZ2luYWxQcm94eS5nZXQodGhpcylbcHJvcF0oLi4uYXJncykpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FjaGVkRnVuYztcbiAgICB9LFxufTtcbmFzeW5jIGZ1bmN0aW9uKiBpdGVyYXRlKC4uLmFyZ3MpIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tdGhpcy1hc3NpZ25tZW50XG4gICAgbGV0IGN1cnNvciA9IHRoaXM7XG4gICAgaWYgKCEoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yKSkge1xuICAgICAgICBjdXJzb3IgPSBhd2FpdCBjdXJzb3Iub3BlbkN1cnNvciguLi5hcmdzKTtcbiAgICB9XG4gICAgaWYgKCFjdXJzb3IpXG4gICAgICAgIHJldHVybjtcbiAgICBjdXJzb3IgPSBjdXJzb3I7XG4gICAgY29uc3QgcHJveGllZEN1cnNvciA9IG5ldyBQcm94eShjdXJzb3IsIGN1cnNvckl0ZXJhdG9yVHJhcHMpO1xuICAgIGl0dHJQcm94aWVkQ3Vyc29yVG9PcmlnaW5hbFByb3h5LnNldChwcm94aWVkQ3Vyc29yLCBjdXJzb3IpO1xuICAgIC8vIE1hcCB0aGlzIGRvdWJsZS1wcm94eSBiYWNrIHRvIHRoZSBvcmlnaW5hbCwgc28gb3RoZXIgY3Vyc29yIG1ldGhvZHMgd29yay5cbiAgICByZXZlcnNlVHJhbnNmb3JtQ2FjaGUuc2V0KHByb3hpZWRDdXJzb3IsIHVud3JhcChjdXJzb3IpKTtcbiAgICB3aGlsZSAoY3Vyc29yKSB7XG4gICAgICAgIHlpZWxkIHByb3hpZWRDdXJzb3I7XG4gICAgICAgIC8vIElmIG9uZSBvZiB0aGUgYWR2YW5jaW5nIG1ldGhvZHMgd2FzIG5vdCBjYWxsZWQsIGNhbGwgY29udGludWUoKS5cbiAgICAgICAgY3Vyc29yID0gYXdhaXQgKGFkdmFuY2VSZXN1bHRzLmdldChwcm94aWVkQ3Vyc29yKSB8fCBjdXJzb3IuY29udGludWUoKSk7XG4gICAgICAgIGFkdmFuY2VSZXN1bHRzLmRlbGV0ZShwcm94aWVkQ3Vyc29yKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpc0l0ZXJhdG9yUHJvcCh0YXJnZXQsIHByb3ApIHtcbiAgICByZXR1cm4gKChwcm9wID09PSBTeW1ib2wuYXN5bmNJdGVyYXRvciBcdTAwMjZcdTAwMjZcbiAgICAgICAgaW5zdGFuY2VPZkFueSh0YXJnZXQsIFtJREJJbmRleCwgSURCT2JqZWN0U3RvcmUsIElEQkN1cnNvcl0pKSB8fFxuICAgICAgICAocHJvcCA9PT0gJ2l0ZXJhdGUnIFx1MDAyNlx1MDAyNiBpbnN0YW5jZU9mQW55KHRhcmdldCwgW0lEQkluZGV4LCBJREJPYmplY3RTdG9yZV0pKSk7XG59XG5yZXBsYWNlVHJhcHMoKG9sZFRyYXBzKSA9XHUwMDNlICh7XG4gICAgLi4ub2xkVHJhcHMsXG4gICAgZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgaWYgKGlzSXRlcmF0b3JQcm9wKHRhcmdldCwgcHJvcCkpXG4gICAgICAgICAgICByZXR1cm4gaXRlcmF0ZTtcbiAgICAgICAgcmV0dXJuIG9sZFRyYXBzLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICB9LFxuICAgIGhhcyh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIGlzSXRlcmF0b3JQcm9wKHRhcmdldCwgcHJvcCkgfHwgb2xkVHJhcHMuaGFzKHRhcmdldCwgcHJvcCk7XG4gICAgfSxcbn0pKTtcblxuZXhwb3J0IHsgZGVsZXRlREIsIG9wZW5EQiwgdW53cmFwLCB3cmFwIH07XG4iLCAiaW1wb3J0IHsgREJTY2hlbWEsIElEQlBEYXRhYmFzZSwgb3BlbkRCIH0gZnJvbSBcIi4vZGVwcy9pZGIudHNcIjtcbmltcG9ydCB7IEludmFsaWRQcm9qZWN0U3RhdHVzLCBQcm9qZWN0U3RhdHVzIH0gZnJvbSBcIi4vc3RhdHVzLnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVEZWJ1ZyB9IGZyb20gXCIuL2RlYnVnLnRzXCI7XG5pbXBvcnQgeyBDb21wcmVzc2VkTGluayB9IGZyb20gXCIuL2xpbmsudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlRGVidWcoXCJzY3JhcGJveC1zdG9yYWdlOmRiLnRzXCIpO1xuXG4vKiog44Oq44Oz44Kv44OH44O844K/44Gq44Gp44KS566h55CG44GZ44KLRGF0YWJhc2UgKi9cbmxldCBkYjogSURCUERhdGFiYXNlPExpbmtEQj47XG5cbi8qKiBEQuOCkuWPluW+l+OBmeOCi+OAguOBvuOBoOmWi+OBhOOBpuOBhOOBquOBkeOCjOOBsOS4gOW6puOBoOOBkemWi+OBjyAqL1xuZXhwb3J0IGNvbnN0IG9wZW4gPSBhc3luYyAoKTogUHJvbWlzZTxJREJQRGF0YWJhc2U8TGlua0RCPj4gPT4ge1xuICBkYiA/Pz0gYXdhaXQgb3BlbkRCPExpbmtEQj4oXCJzY3JhcGJveC1zdG9yYWdlXCIsIDEsIHtcbiAgICB1cGdyYWRlKGRiKSB7XG4gICAgICBsb2dnZXIudGltZShcInVwZGF0ZSBEQlwiKTtcblxuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIGRiLm9iamVjdFN0b3JlTmFtZXMpIHtcbiAgICAgICAgZGIuZGVsZXRlT2JqZWN0U3RvcmUobmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKFwibGlua3NcIiwgeyBrZXlQYXRoOiBcInByb2plY3RcIiB9KTtcbiAgICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKFwic3RhdHVzXCIsIHsga2V5UGF0aDogXCJwcm9qZWN0XCIgfSk7XG5cbiAgICAgIGxvZ2dlci50aW1lRW5kKFwidXBkYXRlIERCXCIpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiBkYjtcbn07XG5cbi8qKiBEQuOBruijnOWujOOCveODvOOCueOCkuabtOaWsOOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IHdyaXRlID0gYXN5bmMgKGRhdGE6IFNvdXJjZSkgPT4gKGF3YWl0IG9wZW4oKSkucHV0KFwibGlua3NcIiwgZGF0YSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlIHtcbiAgLyoqIHByb2plY3QgbmFtZSAoa2V5KSAqL1xuICBwcm9qZWN0OiBzdHJpbmc7XG5cbiAgLyoqIGxpbmsgZGF0YSAqL1xuICBsaW5rczogQ29tcHJlc3NlZExpbmtbXTtcbn1cblxuLyoqIOODquODs+OCr+ODh+ODvOOCv0RC44Guc2NoZW1hICovXG5pbnRlcmZhY2UgTGlua0RCIGV4dGVuZHMgREJTY2hlbWEge1xuICAvKiogbGluayBkYXRh44KS5qC857SN44GZ44KLc3RvcmUgKi9cbiAgbGlua3M6IHtcbiAgICB2YWx1ZTogU291cmNlO1xuICAgIGtleTogc3RyaW5nO1xuICB9O1xuXG4gIC8qKiBwcm9qZWN044Gu5pu05paw54q25rOB44KS5qC857SN44GZ44KLc3RvcmUgKi9cbiAgc3RhdHVzOiB7XG4gICAgdmFsdWU6IFNvdXJjZVN0YXR1cztcbiAgICBrZXk6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU291cmNlU3RhdHVzID0gUHJvamVjdFN0YXR1cyB8IEludmFsaWRQcm9qZWN0U3RhdHVzO1xuIiwgImV4cG9ydCB0eXBlIExpc3RlbmVyID0gKG5vdGlmeTogTGlua0V2ZW50KSA9PiB2b2lkO1xuLyoqIHByb2plY3TjgpJrZXksIGxpc3RlbmVy44KSdmFsdWXjgajjgZnjgottYXAgKi9cbmNvbnN0IGxpc3RlbmVycyA9IG5ldyBNYXA8c3RyaW5nLCBTZXQ8TGlzdGVuZXI+PigpO1xuXG4vKiogYnJvYWRjYXN0IGNoYW5uZWzjgafmtYHjgZnjg4fjg7zjgr8gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlua0V2ZW50IHtcbiAgdHlwZTogXCJ1cGRhdGVcIjtcbiAgLyoqIOabtOaWsOOBleOCjOOBn3Byb2plY3QgKi9cbiAgcHJvamVjdHM6IHN0cmluZ1tdO1xufVxuXG4vKiog44Oq44Oz44Kv44OH44O844K/44Gu5pu05paw44KS6YCa55+l44GZ44KLICovXG5leHBvcnQgY29uc3QgZW1pdENoYW5nZSA9IChwcm9qZWN0czogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgZXZlbnQ6IExpbmtFdmVudCA9IHsgdHlwZTogXCJ1cGRhdGVcIiwgcHJvamVjdHMgfTtcbiAgZW1pdENoYW5nZV8oZXZlbnQpO1xuICBjb25zdCBiYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKG5vdGlmeUNoYW5uZWxOYW1lKTtcbiAgYmMucG9zdE1lc3NhZ2UoZXZlbnQpO1xuICBiYy5jbG9zZSgpO1xufTtcblxuY29uc3QgZW1pdENoYW5nZV8gPSAoZXZlbnQ6IExpbmtFdmVudCkgPT4ge1xuICBmb3IgKFxuICAgIGNvbnN0IGxpc3RlbmVyIG9mIG5ldyBTZXQoXG4gICAgICBldmVudC5wcm9qZWN0cy5mbGF0TWFwKChwcm9qZWN0KSA9PiBbLi4uKGxpc3RlbmVycy5nZXQocHJvamVjdCkgPz8gW10pXSksXG4gICAgKVxuICApIHtcbiAgICBsaXN0ZW5lcj8uKGV2ZW50KTtcbiAgfVxufTtcblxuLyoqIOabtOaWsOmAmuefpeeUqGJyb2FkY2FzdCBjaGFubmVs44Gu5ZCN5YmNICovXG5jb25zdCBub3RpZnlDaGFubmVsTmFtZSA9IFwic2NyYXBib3gtc3RvcmFnZS1ub3RpZnlcIjtcbi8vIOS7luOBrnNlc3Npb25z44Gn44Gu5pu05paw44KS6LO86Kqt44GZ44KLXG5jb25zdCBiYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKG5vdGlmeUNoYW5uZWxOYW1lKTtcbmJjLmFkZEV2ZW50TGlzdGVuZXIoXG4gIFwibWVzc2FnZVwiLFxuICAoZTogTWVzc2FnZUV2ZW50PExpbmtFdmVudD4pID0+IGVtaXRDaGFuZ2VfKGUuZGF0YSksXG4pO1xuXG4vKiog44Oq44Oz44Kv44OH44O844K/44Gu5pu05paw44KS6LO86Kqt44GZ44KLXG4gKlxuICogQHBhcmFtIHByb2plY3RzIOOBk+OBk+OBq+aMh+WumuOBleOCjOOBn3Byb2plY3Tjga7mm7TmlrDjga7jgb/jgpLlj5fjgZHlj5bjgotcbiAqIEBwYXJhbSBsaXN0ZW5lciDmm7TmlrDjgpLlj5fjgZHlj5bjgotsaXN0ZW5lclxuICogQHJldHVybSBsaXN0ZW5lcuino+mZpOOBquOBqeOCkuOBmeOCi+W+jOWni+acq+WHveaVsFxuICovXG5leHBvcnQgY29uc3Qgc3Vic2NyaWJlID0gKFxuICBwcm9qZWN0czogcmVhZG9ubHkgc3RyaW5nW10sXG4gIGxpc3RlbmVyOiBMaXN0ZW5lcixcbik6ICgpID0+IHZvaWQgPT4ge1xuICBmb3IgKGNvbnN0IHByb2plY3Qgb2YgcHJvamVjdHMpIHtcbiAgICBjb25zdCBsaXN0ZW5lcnMyID0gbGlzdGVuZXJzLmdldChwcm9qZWN0KSA/PyBuZXcgU2V0KCk7XG4gICAgbGlzdGVuZXJzMi5hZGQobGlzdGVuZXIpO1xuICAgIGxpc3RlbmVycy5zZXQocHJvamVjdCwgbGlzdGVuZXJzMik7XG4gIH1cbiAgcmV0dXJuICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IHByb2plY3Qgb2YgcHJvamVjdHMpIHtcbiAgICAgIGxpc3RlbmVycy5nZXQocHJvamVjdCk/LmRlbGV0ZT8uKGxpc3RlbmVyKTtcbiAgICB9XG4gIH07XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cblxuaW1wb3J0IHsgY3JlYXRlRGVidWcgfSBmcm9tIFwiLi9kZWJ1Zy50c1wiO1xuaW1wb3J0IHsgZG93bmxvYWRMaW5rcyB9IGZyb20gXCIuL3JlbW90ZS50c1wiO1xuaW1wb3J0IHsgZmV0Y2hQcm9qZWN0U3RhdHVzLCBQcm9qZWN0U3RhdHVzIH0gZnJvbSBcIi4vc3RhdHVzLnRzXCI7XG5pbXBvcnQgeyBvcGVuLCBTb3VyY2UsIFNvdXJjZVN0YXR1cywgd3JpdGUgfSBmcm9tIFwiLi9kYi50c1wiO1xuaW1wb3J0IHsgZW1pdENoYW5nZSB9IGZyb20gXCIuL3N1YnNjcmliZS50c1wiO1xuZXhwb3J0IHsgc3Vic2NyaWJlIH0gZnJvbSBcIi4vc3Vic2NyaWJlLnRzXCI7XG5leHBvcnQgdHlwZSB7IExpbmtFdmVudCwgTGlzdGVuZXIgfSBmcm9tIFwiLi9zdWJzY3JpYmUudHNcIjtcbmV4cG9ydCB7IHNldERlYnVnTW9kZSB9IGZyb20gXCIuL2RlYnVnLnRzXCI7XG5leHBvcnQgdHlwZSB7IFNvdXJjZSB9O1xuZXhwb3J0ICogZnJvbSBcIi4vbGluay50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVEZWJ1ZyhcInNjcmFwYm94LXN0b3JhZ2U6bW9kLnRzXCIpO1xuXG4vKiog5omL5YuV44Gn5pu05paw44KS56K66KqN44GZ44KL44CC5pu05paw44GM44GC44KM44GwRELjgavlj43mmKDjgZnjgovjgIJcbiAqXG4gKiBAcGFyYW0gcHJvamVjdHMg5pu05paw44KS56K66KqN44GX44Gf44GE6KOc5a6M44K944O844K544GucHJvamVjdCBuYW1lc1xuICogQHBhcmFtIHVwZGF0ZUludGVydmFsIOacgOW+jOOBq+abtOaWsOOCkueiuuiqjeOBl+OBpuOBi+OCieOBqeOBruOBj+OCieOBhOe1jOmBjuOBl+OBn+ODh+ODvOOCv+OCkuabtOaWsOOBmeOBueOBjeOBiyAo5Y2Y5L2N44Gv56eSKVxuICogQHJldHVybiDmm7TmlrDjgYzjgYLjgaPjgZ9wcm9qZWN044Gu44Oq44Oz44Kv44OH44O844K/XG4gKi9cbmV4cG9ydCBjb25zdCBjaGVjayA9IGFzeW5jIChcbiAgcHJvamVjdHM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICB1cGRhdGVJbnRlcnZhbDogbnVtYmVyLFxuKTogUHJvbWlzZTxTb3VyY2VbXT4gPT4ge1xuICBjb25zdCBkYiA9IGF3YWl0IG9wZW4oKTtcblxuICBjb25zdCBwcm9qZWN0c01heWJlTmVlZGVkVXBncmFkZTogUHJvamVjdFN0YXR1c1tdID0gW107XG4gIGNvbnN0IHByb2plY3RTdGF0dXM6IFNvdXJjZVN0YXR1c1tdID0gW107XG4gIHRyeSB7XG4gICAgLy8g5pu05paw44GZ44KL5b+F6KaB44Gu44GC44KL44OH44O844K/44KS5o6i44GX44CB5pu05paw5Lit44OV44Op44Kw44KS56uL44Gm44KLXG4gICAge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwiY2hlY2sgdXBkYXRlcyBvZiBsaW5rcy4uLlwiKTtcblxuICAgICAgY29uc3QgdHggPSBkYi50cmFuc2FjdGlvbihcInN0YXR1c1wiLCBcInJlYWR3cml0ZVwiKTtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb2plY3RzLm1hcChhc3luYyAocHJvamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0eC5zdG9yZS5nZXQocHJvamVjdCk7XG5cbiAgICAgICAgaWYgKHN0YXR1cz8uaXNWYWxpZCA9PT0gZmFsc2UpIHJldHVybjtcblxuICAgICAgICBjb25zdCBjaGVja2VkID0gc3RhdHVzPy5jaGVja2VkID8/IDA7XG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMDtcbiAgICAgICAgLy8g5pu05paw44GV44KM44Gf44Gw44GL44KK44Gu44OH44O844K/44Gv6aOb44Gw44GZXG4gICAgICAgIGlmIChjaGVja2VkICsgdXBkYXRlSW50ZXJ2YWwgPiBub3cpIHJldHVybjtcbiAgICAgICAgLy8g5pu05paw5Lit44Gr44K/44OW44GM5by35Yi257WC5LqG44GX44Gf5Y+v6IO95oCn44KS6ICD5oWu44GX44Gm44CB5pu05paw5Lit44OV44Op44Kw44GM57WM44Gj44Gf5pmC5Yi744KI44KKMTDliIbntYzpgY7jgZfjgabjgYTjgZ/jgonjg4fjg7zjgr/mm7TmlrDlr77osaHjgavlkKvjgoHjgotcbiAgICAgICAgaWYgKHN0YXR1cz8udXBkYXRpbmcgJiYgY2hlY2tlZCArIDYwMCA+IG5vdykgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHRlbXBTdGF0dXM6IFByb2plY3RTdGF0dXMgPSB7XG4gICAgICAgICAgcHJvamVjdCxcbiAgICAgICAgICBpZDogc3RhdHVzPy5pZCxcbiAgICAgICAgICBpc1ZhbGlkOiB0cnVlLFxuICAgICAgICAgIGNoZWNrZWQsXG4gICAgICAgICAgdXBkYXRlZDogc3RhdHVzPy51cGRhdGVkID8/IDAsXG4gICAgICAgICAgdXBkYXRpbmc6IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgcHJvamVjdHNNYXliZU5lZWRlZFVwZ3JhZGUucHVzaCh0ZW1wU3RhdHVzKTtcbiAgICAgICAgdHguc3RvcmUucHV0KHRlbXBTdGF0dXMpO1xuICAgICAgfSkpO1xuICAgICAgYXdhaXQgdHguZG9uZTtcblxuICAgICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgICBgY2hlY2tlZC4gJHtwcm9qZWN0c01heWJlTmVlZGVkVXBncmFkZS5sZW5ndGh9IHByb2plY3RzIG1heWJlIG5lZWQgdXBncmFkZS5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyDmm7TmlrDjgZnjgotwcm9qZWN0c+OBjOOBquOBkeOCjOOBsOS9leOCguOBl+OBquOBhFxuICAgIGlmIChwcm9qZWN0c01heWJlTmVlZGVkVXBncmFkZS5sZW5ndGggPT09IDApIHJldHVybiBbXTtcblxuICAgIC8qKiDmm7TmlrDjgZXjgozjgZ9wcm9qZWN0cyAqL1xuICAgIGNvbnN0IHVwZGF0ZWRQcm9qZWN0czogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCByZXN1bHQ6IFNvdXJjZVtdID0gW107XG5cbiAgICAvLyDkuIDjgaTjgaXjgaTmm7TmlrDjgZnjgotcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHJlcyBvZiBmZXRjaFByb2plY3RTdGF0dXMocHJvamVjdHNNYXliZU5lZWRlZFVwZ3JhZGUpKSB7XG4gICAgICAvLyBwcm9qZWN0IGRhdGHjgpLlj5blvpfjgafjgY3jgarjgYTjgajjgY3jga/jgIHnhKHlirnjgapwcm9qZWN044Gr5YiG6aGe44GX44Gm44GK44GPXG4gICAgICBpZiAoIXJlcy5vaykge1xuICAgICAgICBwcm9qZWN0U3RhdHVzLnB1c2goeyBwcm9qZWN0OiByZXMudmFsdWUucHJvamVjdCwgaXNWYWxpZDogZmFsc2UgfSk7XG4gICAgICAgIHN3aXRjaCAocmVzLnZhbHVlLm5hbWUpIHtcbiAgICAgICAgICBjYXNlIFwiTm90Rm91bmRFcnJvclwiOlxuICAgICAgICAgICAgbG9nZ2VyLndhcm4oYFwiJHtyZXMudmFsdWUucHJvamVjdH1cIiBpcyBub3QgZm91bmQuYCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICBjYXNlIFwiTm90TWVtYmVyRXJyb3JcIjpcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKGBZb3UgYXJlIG5vdCBhIG1lbWJlciBvZiBcIiR7cmVzLnZhbHVlLnByb2plY3R9XCIuYCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICBjYXNlIFwiTm90TG9nZ2VkSW5FcnJvclwiOlxuICAgICAgICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgICAgICAgIGBZb3UgYXJlIG5vdCBhIG1lbWJlciBvZiBcIiR7cmVzLnZhbHVlLnByb2plY3R9XCIgb3IgWW91IGFyZSBub3QgbG9nZ2VkIGluIHlldC5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHByb2plY3Tjga7mnIDntYLmm7TmlrDml6XmmYLjgYvjgonjgIF1cGRhdGXjga7opoHkuI3opoHjgpLoqr/jgbnjgotcbiAgICAgIGlmIChyZXMudmFsdWUudXBkYXRlZCA8IHJlcy52YWx1ZS5jaGVja2VkKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1Zyhgbm8gdXBkYXRlcyBpbiBcIiR7cmVzLnZhbHVlLm5hbWV9XCJgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlczIgPSBhd2FpdCBkb3dubG9hZExpbmtzKHJlcy52YWx1ZS5uYW1lKTtcbiAgICAgICAgaWYgKCFyZXMyLm9rKSB7XG4gICAgICAgICAgdGhyb3cgRXJyb3IoYCR7cmVzMi52YWx1ZS5uYW1lfSAke3JlczIudmFsdWUubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDjg6rjg7Pjgq/jg4fjg7zjgr/jgpLmm7TmlrDjgZnjgotcbiAgICAgICAgY29uc3QgZGF0YTogU291cmNlID0ge1xuICAgICAgICAgIHByb2plY3Q6IHJlcy52YWx1ZS5uYW1lLFxuICAgICAgICAgIGxpbmtzOiByZXMyLnZhbHVlLFxuICAgICAgICB9O1xuICAgICAgICByZXN1bHQucHVzaChkYXRhKTtcblxuICAgICAgICBsb2dnZXIudGltZShgd3JpdGUgZGF0YSBvZiBcIiR7cmVzLnZhbHVlLm5hbWV9XCJgKTtcbiAgICAgICAgYXdhaXQgd3JpdGUoZGF0YSk7XG4gICAgICAgIHVwZGF0ZWRQcm9qZWN0cy5wdXNoKHJlcy52YWx1ZS5uYW1lKTtcbiAgICAgICAgbG9nZ2VyLnRpbWVFbmQoYHdyaXRlIGRhdGEgb2YgXCIke3Jlcy52YWx1ZS5uYW1lfVwiYCk7XG4gICAgICB9XG5cbiAgICAgIHByb2plY3RTdGF0dXMucHVzaCh7XG4gICAgICAgIHByb2plY3Q6IHJlcy52YWx1ZS5uYW1lLFxuICAgICAgICBpc1ZhbGlkOiB0cnVlLFxuICAgICAgICBpZDogcmVzLnZhbHVlLmlkLFxuICAgICAgICBjaGVja2VkOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDAsXG4gICAgICAgIHVwZGF0ZWQ6IHJlcy52YWx1ZS51cGRhdGVkLFxuICAgICAgICB1cGRhdGluZzogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyDmm7TmlrDpgJrnn6XjgpLlh7rjgZlcbiAgICBpZiAodXBkYXRlZFByb2plY3RzLmxlbmd0aCA+IDApIGVtaXRDaGFuZ2UodXBkYXRlZFByb2plY3RzKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gZmluYWxseSB7XG4gICAgLy8g44Ko44Op44O844GM6LW344GN44Gf5aC05ZCI44KC5ZCr44KB44CB44OV44Op44Kw44KS44KC44Go44Gr5oi744GX44Gm44GK44GPXG4gICAgY29uc3QgdHggPSBkYi50cmFuc2FjdGlvbihcInN0YXR1c1wiLCBcInJlYWR3cml0ZVwiKTtcbiAgICBjb25zdCBzdG9yZSA9IHR4LnN0b3JlO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcHJvamVjdFN0YXR1cy5tYXAoKHN0YXR1cykgPT4gc3RvcmUucHV0KHN0YXR1cykpLFxuICAgICk7XG4gICAgYXdhaXQgdHguZG9uZTtcbiAgfVxufTtcblxuLyoqIOODquODs+OCr+ODh+ODvOOCv+OCkkRC44GL44KJ5Y+W5b6X44GZ44KL44CC44OH44O844K/44Gu5pu05paw44Gv6KGM44KP44Gq44GE44CCXG4gKlxuICogQHBhcmFtIHByb2plY3RzIOWPluW+l+OBl+OBn+OBhOijnOWujOOCveODvOOCueOBrnByb2plY3QgbmFtZeOBruODquOCueODiFxuICogQHJldHVybiDjg6rjg7Pjgq/jg4fjg7zjgr/jga7jg6rjgrnjg4ggcHJvamVjdHPjgajlkIzjgZjpoIbnlarjgafkuKbjgpPjgafjgYTjgotcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWQgPSBhc3luYyAoXG4gIHByb2plY3RzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IFByb21pc2U8U291cmNlW10+ID0+IHtcbiAgY29uc3QgbGlzdDogU291cmNlW10gPSBbXTtcblxuICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7XG4gIHtcbiAgICBjb25zdCB0eCA9IChhd2FpdCBvcGVuKCkpLnRyYW5zYWN0aW9uKFwibGlua3NcIiwgXCJyZWFkb25seVwiKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9qZWN0cy5tYXAoYXN5bmMgKHByb2plY3QpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGF3YWl0IHR4LnN0b3JlLmdldChwcm9qZWN0KTtcbiAgICAgIGxpc3QucHVzaChzb3VyY2UgPz8geyBwcm9qZWN0LCBsaW5rczogW10gfSk7XG4gICAgfSkpO1xuICAgIGF3YWl0IHR4LmRvbmU7XG4gIH1cbiAgY29uc3QgbXMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHN0YXJ0LmdldFRpbWUoKTtcbiAgbG9nZ2VyLmRlYnVnKGBSZWFkIGxpbmtzIG9mICR7cHJvamVjdHMubGVuZ3RofSBwcm9qZWN0cyBpbiAke21zfW1zYCk7XG5cbiAgcmV0dXJuIGxpc3Q7XG59O1xuIiwgImV4cG9ydCAqIGZyb20gXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc3RvcmFnZS8wLjEuMy9tb2QudHNcIjtcblxuaW1wb3J0IHsgZGVsZXRlREIgfSBmcm9tIFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXN0b3JhZ2UvMC4xLjMvZGVwcy9pZGIudHNcIjtcbi8vIOaXp3Zlci7jgafkvb/jgaPjgabjgYTjgZ9EQuOCkuWJiumZpOOBmeOCi1xuZGVsZXRlREIoXCJ1c2Vyc2NyaXB0LWxpbmtzXCIpLmNhdGNoKChlKSA9PiBjb25zb2xlLmVycm9yKGUpKTtcbiIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgY2hlY2ssIGRlY29kZSwgbG9hZCwgU291cmNlLCBzdWJzY3JpYmUgfSBmcm9tIFwiLi9kZXBzL3N0b3JhZ2UudHNcIjtcbmltcG9ydCB7IGNyZWF0ZURlYnVnIH0gZnJvbSBcIi4vZGVwcy9kZWJ1Zy50c1wiO1xuaW1wb3J0IHsgQ2FuZGlkYXRlIH0gZnJvbSBcIi4vc291cmNlLnRzXCI7XG5pbXBvcnQgeyB0b1RpdGxlTGMgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZURlYnVnKFwic2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb246dXNlU291cmNlLnRzXCIpO1xuXG4vKiog6KOc5a6M44K944O844K544KS5o+Q5L6b44GZ44KLaG9vayAqL1xuZXhwb3J0IGNvbnN0IHVzZVNvdXJjZSA9IChcbiAgcHJvamVjdHM6IEl0ZXJhYmxlPHN0cmluZz4sXG4pOiBDYW5kaWRhdGVbXSA9PiB7XG4gIGNvbnN0IFtjYW5kaWRhdGVzLCBzZXRDYW5kaWRhdGVzXSA9IHVzZVN0YXRlPENhbmRpZGF0ZVtdPihbXSk7XG5cbiAgY29uc3QgdXBkYXRlID0gdXNlQ2FsbGJhY2soXG4gICAgKHNvdXJjZXM6IFNvdXJjZVtdKSA9PiB7XG4gICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8c3RyaW5nLCBPbWl0PENhbmRpZGF0ZSwgXCJ0aXRsZUxjXCI+PigpO1xuICAgICAgZm9yIChjb25zdCB7IHByb2plY3QsIGxpbmtzIH0gb2Ygc291cmNlcykge1xuICAgICAgICBmb3IgKGNvbnN0IGNvbXByZXNzZWRMaW5rIG9mIGxpbmtzKSB7XG4gICAgICAgICAgY29uc3QgeyB0aXRsZSwgdXBkYXRlZCwgaW1hZ2UgfSA9IGRlY29kZShjb21wcmVzc2VkTGluayk7XG4gICAgICAgICAgY29uc3QgdGl0bGVMYyA9IHRvVGl0bGVMYyh0aXRsZSk7XG4gICAgICAgICAgY29uc3QgY2FuZGlkYXRlID0gcmVzdWx0LmdldCh0aXRsZUxjKTtcbiAgICAgICAgICByZXN1bHQuc2V0KHRpdGxlTGMsIHtcbiAgICAgICAgICAgIHRpdGxlOiBjYW5kaWRhdGU/LnRpdGxlID8/IHRpdGxlLFxuICAgICAgICAgICAgdXBkYXRlZDogTWF0aC5tYXgoY2FuZGlkYXRlPy51cGRhdGVkID8/IDAsIHVwZGF0ZWQpLFxuICAgICAgICAgICAgbWV0YWRhdGE6IFsuLi4oY2FuZGlkYXRlPy5tZXRhZGF0YSA/PyBbXSksIHsgcHJvamVjdCwgaW1hZ2UgfV0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBbLi4ucmVzdWx0LmVudHJpZXMoKV0ubWFwKChbdGl0bGVMYywgZGF0YV0pID0+ICh7XG4gICAgICAgIHRpdGxlTGMsXG4gICAgICAgIC4uLmRhdGEsXG4gICAgICB9KSk7XG5cbiAgICAgIGNvbnN0IG1zID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLSBzdGFydC5nZXRUaW1lKCk7XG4gICAgICBsb2dnZXIuZGVidWcoYENvbXBpbGVkICR7Y2FuZGlkYXRlcy5sZW5ndGh9IHNvdXJjZSBpbiAke21zfW1zYCk7XG4gICAgICBsb2dnZXIuZGVidWcoXCJEZXRlY3QgY2hhbmdlcyFcIik7XG5cbiAgICAgIHNldENhbmRpZGF0ZXMoY2FuZGlkYXRlcyk7XG4gICAgfSxcbiAgICBbXSxcbiAgKTtcblxuICAvLyDliJ3mnJ/ljJblj4rjgbPmm7TmlrDoqK3lrppcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgdGVybWluYXRlID0gZmFsc2U7XG5cbiAgICBjb25zdCB1cGRhdGVfID0gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGxvYWQoWy4uLnByb2plY3RzXSk7XG4gICAgICBpZiAodGVybWluYXRlKSByZXR1cm47XG5cbiAgICAgIHVwZGF0ZShzb3VyY2VzKTtcbiAgICB9O1xuXG4gICAgLy8g5Yid5pyf5YyWXG4gICAgdXBkYXRlXygpO1xuXG4gICAgLy8g5pu05paw6YCa55+l44KS5Y+X44GR5Y+W44KLXG4gICAgY29uc3QgY2xlYW51cCA9IHN1YnNjcmliZShcbiAgICAgIFsuLi5wcm9qZWN0c10sXG4gICAgICAoeyBwcm9qZWN0cyB9KSA9PiB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgRGV0ZWN0ICR7cHJvamVjdHMubGVuZ3RofSBwcm9qZWN0cycgdXBkYXRlOmAsIHByb2plY3RzKTtcbiAgICAgICAgdXBkYXRlXygpO1xuICAgICAgfSxcbiAgICApO1xuXG4gICAgLy8g5a6a5pyf55qE44Gr5pu05paw44GZ44KLXG4gICAgY29uc3QgY2FsbGJhY2sgPSAoKSA9PiBjaGVjayhbLi4ucHJvamVjdHNdLCA2MDApO1xuICAgIGNhbGxiYWNrKCk7XG4gICAgY29uc3QgaW50ZXJ2YWxUaW1lciA9IHNldEludGVydmFsKGNhbGxiYWNrLCA2MDAgKiAxMDAwKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbFRpbWVyKTtcbiAgICAgIGNsZWFudXAoKTtcbiAgICB9O1xuICB9LCBbcHJvamVjdHNdKTtcblxuICByZXR1cm4gY2FuZGlkYXRlcztcbn07XG4iLCAiLyoqIEBqc3ggaCAqL1xuLyoqIEBqc3hGcmFnIEZyYWdtZW50ICovXG5pbXBvcnQgeyBGcmFnbWVudCwgaCwgdXNlTWVtbyB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgZGV0ZWN0VVJMIH0gZnJvbSBcIi4vZGV0ZWN0VVJMLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckNTU1Byb3BzIHtcbiAgLyoqIENTU+OCguOBl+OBj+OBr0NTU+OBuOOBrlVSTCAqL1xuICBzdHlsZTogc3RyaW5nIHwgVVJMO1xufVxuXG4vKiogVXNlckNTU+OCkuaMv+WFpeOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IFVzZXJDU1MgPSAocHJvcHM6IFVzZXJDU1NQcm9wcykgPT4ge1xuICBjb25zdCB1cmwgPSB1c2VNZW1vKCgpID0+IGRldGVjdFVSTChwcm9wcy5zdHlsZSwgaW1wb3J0Lm1ldGEudXJsKSwgW1xuICAgIHByb3BzLnN0eWxlLFxuICBdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7dXJsICE9PSBcIlwiICYmICh1cmwgaW5zdGFuY2VvZiBVUkxcbiAgICAgICAgPyA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj17dXJsLmhyZWZ9IC8+XG4gICAgICAgIDogPHN0eWxlPnt1cmx9PC9zdHlsZT4pfVxuICAgIDwvPlxuICApO1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG4vKiogQGpzeCBoICovXG5cbmltcG9ydCB7IGggfSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcblxuZXhwb3J0IGNvbnN0IENTUyA9ICgpID0+IChcbiAgPHN0eWxlPlxuICAgIHtgLmNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLXRvcDogMTRweDtcbiAgbWF4LWhlaWdodDogODB2aDtcbiAgei1pbmRleDogMzAxO1xuXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlbGVjdC1zdWdnZXN0LWJnLCAjMTExKTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLXNlbGVjdC1zdWdnZXN0LWZvbnQtZmFtaWx5LCBcIk9wZW4gU2Fuc1wiLCBIZWx2ZXRpY2EsIEFyaWFsLCBcIkhpcmFnaW5vIFNhbnNcIiwgc2Fucy1zZXJpZik7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6IHZhcigtLXNlbGVjdC1zdWdnZXN0LXRleHQtY29sb3IsICNlZWUpO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG4uY2FuZGlkYXRlcyB7XG4gIG1heC13aWR0aDogODB2dztcbn1cbi5jYW5kaWRhdGVzOm5vdChbZGF0YS1vcyo9XCJhbmRyb2lkXCJdKTpub3QoW2RhdGEtb3MqPVwiaW9zXCJdKSB7XG4gIGZvbnQtc2l6ZToxMXB4O1xuXG59XG4ucHJvamVjdHMge1xuICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoNCwgbWluLWNvbnRlbnQpO1xuICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xuICBkaXJlY3Rpb246IHJ0bDtcbn1cbi5wcm9qZWN0czppcyhbZGF0YS1vcyo9XCJhbmRyb2lkXCJdLCBbZGF0YS1vcyo9XCJpb3NcIl0pID4gKiB7XG4gIHBhZGRpbmc6IDZweDtcbn1cblxuLmNhbmRpZGF0ZXMgPiA6bm90KDpmaXJzdC1jaGlsZCkge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc2VsZWN0LXN1Z2dlc3QtYm9yZGVyLWNvbG9yLCAjZWVlKTtcbn1cbi5jYW5kaWRhdGVzID4gKntcbiAgbGluZS1oZWlnaHQ6IDEuMmVtO1xuICBwYWRkaW5nOiAwLjVlbSAxMHB4O1xufVxuXG4uY2FuZGlkYXRlIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuYTpub3QoLm1hcmspIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4uc2VsZWN0ZWQgYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlbGVjdC1zdWdnZXN0LXNlbGVjdGVkLWJnLCAjMjIyKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmVcbn1cbmltZyB7XG4gIGhlaWdodDogMS4zZW07XG4gIHdpZHRoOiAxLjNlbTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgb2JqZWN0LXBvc2l0aW9uOiAwJSAwJTtcbn1cbi5kaXNhYmxlZCB7XG4gIGZpbHRlcjogZ3JheXNjYWxlKDEuMCkgb3BhY2l0eSgwLjUpO1xufVxuLmNvdW50ZXIge1xuICBjb2xvcjogdmFyKC0tc2VsZWN0LXN1Z2dlc3QtaW5mb3JtYXRpb24tdGV4dC1jb2xvciwgI2FhYSk7XG4gIGZvbnQtc2l6ZTogODAlO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG4ucHJvZ3Jlc3Nbc3R5bGVdIHtcbiAgcGFkZGluZzogdW5zZXQ7XG4gIGJvcmRlcjogdW5zZXQ7XG4gIGhlaWdodDogMC41cHg7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xcztcbn1gfVxuICA8L3N0eWxlPlxuKTtcbiIsICJpbXBvcnQgeyBMaW5lLCBOb2RlIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpbmsge1xuICB3aG9sZTogc3RyaW5nO1xuICBzdGFydDogbnVtYmVyO1xufVxuXG4vKiog5oyH5a6a44GX44Gf6KGM44Gr5ZCr44G+44KM44KL44GZ44G544Gm44Gu44Oq44Oz44Kv44KS5L2N572u5LuY44GN44Gn6L+U44GZXG4gKlxuICogQHBhcmFtIGxpbmUg6Kq/44G544KL6KGMXG4gKiBAcmV0dXJuIOihjOS4reOBruODquODs+OCr+OCkumghuasoei/lOOBmVxuICovXG5leHBvcnQgZnVuY3Rpb24qIGNyYXdsTGluayhsaW5lOiBMaW5lKTogR2VuZXJhdG9yPExpbmssIHZvaWQsIHVua25vd24+IHtcbiAgaWYgKCEoXCJub2Rlc1wiIGluIGxpbmUpKSByZXR1cm47XG5cbiAgLyoqIOePvuWcqOiqreOBv+i+vOOCk+OBp+OBhOOCi25vZGXjga7oqp7poK3jga7opoHntKDnlarlj7cgKi9cbiAgbGV0IGNoYXIgPSAwO1xuXG4gIGZ1bmN0aW9uKiBjcmF3bChub2RlczogTm9kZVtdIHwgTm9kZSk6IEdlbmVyYXRvcjxMaW5rLCB2b2lkLCB1bmtub3duPiB7XG4gICAgZm9yIChcbiAgICAgIGNvbnN0IG5vZGUgb2YgQXJyYXkuaXNBcnJheShub2RlcykgPyBub2RlcyA6IFtub2Rlc11cbiAgICApIHtcbiAgICAgIGlmICh0eXBlb2Ygbm9kZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBjaGFyICs9IFsuLi5ub2RlXS5sZW5ndGg7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIFwibGlua1wiOlxuICAgICAgICAgIHlpZWxkIHsgd2hvbGU6IG5vZGUudW5pdC53aG9sZSwgc3RhcnQ6IGNoYXIgfTtcbiAgICAgICAgICBjaGFyICs9IFsuLi5ub2RlLnVuaXQud2hvbGVdLmxlbmd0aDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImluZGVudFwiOlxuICAgICAgICBjYXNlIFwicXVvdGVcIjpcbiAgICAgICAgICBjaGFyICs9IFsuLi5ub2RlLnVuaXQudGFnXS5sZW5ndGg7XG4gICAgICAgICAgeWllbGQqIGNyYXdsKG5vZGUuY2hpbGRyZW4pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiZGVjb1wiOlxuICAgICAgICAgIGNoYXIgKz0gWy4uLm5vZGUudW5pdC5kZWNvXS5sZW5ndGggKyAyO1xuICAgICAgICAgIHlpZWxkKiBjcmF3bChub2RlLmNoaWxkcmVuKTtcbiAgICAgICAgICBjaGFyKys7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJzdHJvbmdcIjpcbiAgICAgICAgICBjaGFyICs9IDI7XG4gICAgICAgICAgeWllbGQqIGNyYXdsKG5vZGUuY2hpbGRyZW4pO1xuICAgICAgICAgIGNoYXIgKz0gMjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjaGFyICs9IFsuLi5ub2RlLnVuaXQud2hvbGVdLmxlbmd0aDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB5aWVsZCogY3Jhd2wobGluZS5ub2Rlcyk7XG59XG4iLCAiaW1wb3J0IHsgY3Jhd2xMaW5rLCBMaW5rIH0gZnJvbSBcIi4vY3Jhd2xMaW5rLnRzXCI7XG5pbXBvcnQgeyBMaW5lLCBQb3NpdGlvbiwgUmFuZ2UgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5cbi8vID86IHVuZGVmaW5lZOOBr+OAgXByb3BlcnR544Gu5pyJ54Sh44Gr44GL44GL44KP44KJ44Ga44Ki44Kv44K744K544Gn44GN44KL44KI44GG44Gr44GZ44KL44Gf44KB44Gr5oyH5a6a44GX44Gm44GC44KLXG5leHBvcnQgdHlwZSBTdGF0ZSA9XG4gIHwge1xuICAgIHR5cGU6IFwicmVhZHlcIjtcbiAgICBsb2NrPzogdHJ1ZTtcbiAgICBpc01hbnVhbGx5RGlzYWJsZWQ/OiB1bmRlZmluZWQ7XG4gICAgY29udGV4dD86IHVuZGVmaW5lZDtcbiAgICBxdWVyeT86IHVuZGVmaW5lZDtcbiAgICBzdGFydD86IHVuZGVmaW5lZDtcbiAgICBwb3NpdGlvbj86IHVuZGVmaW5lZDtcbiAgfVxuICB8IHtcbiAgICB0eXBlOiBcImRpc2FibGVkXCI7XG4gICAgbG9jaz86IHRydWU7XG4gICAgaXNNYW51YWxseURpc2FibGVkPzogdHJ1ZTtcbiAgICBjb250ZXh0PzogdW5kZWZpbmVkO1xuICAgIHF1ZXJ5PzogdW5kZWZpbmVkO1xuICAgIHN0YXJ0PzogdW5kZWZpbmVkO1xuICAgIHBvc2l0aW9uPzogdW5kZWZpbmVkO1xuICB9XG4gIHwgQ29tcGxldGlvblN0YXRlXG4gIHwge1xuICAgIHR5cGU6IFwiY2FuY2VsbGVkXCI7XG4gICAgbG9jaz86IHRydWU7XG4gICAgY29udGV4dDogXCJpbnB1dFwiIHwgXCJzZWxlY3Rpb25cIjtcbiAgICBpc01hbnVhbGx5RGlzYWJsZWQ/OiB1bmRlZmluZWQ7XG4gICAgcXVlcnk/OiB1bmRlZmluZWQ7XG4gICAgc3RhcnQ/OiB1bmRlZmluZWQ7XG4gICAgcG9zaXRpb24/OiB1bmRlZmluZWQ7XG4gIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGxldGlvblN0YXRlIHtcbiAgdHlwZTogXCJjb21wbGV0aW9uXCI7XG4gIGNvbnRleHQ6IFwiaW5wdXRcIiB8IFwic2VsZWN0aW9uXCI7XG4gIGxvY2s/OiB0cnVlO1xuICBxdWVyeTogc3RyaW5nO1xuICBzdGFydDogbnVtYmVyO1xuICBwb3NpdGlvbjogUG9zaXRpb247XG4gIGlzTWFudWFsbHlEaXNhYmxlZD86IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCB0eXBlIEFjdGlvbiA9IHtcbiAgdHlwZTpcbiAgICB8IFwiZW5hYmxlXCJcbiAgICB8IFwiZGlzYWJsZVwiXG4gICAgfCBcImxvY2tcIlxuICAgIHwgXCJ1bmxvY2tcIlxuICAgIHwgXCJjYW5jZWxcIjtcbiAgbGluZXM/OiB1bmRlZmluZWQ7XG59IHwge1xuICB0eXBlOiBcImxpbmVzOmNoYW5nZWRcIiB8IFwiY3Vyc29yOmNoYW5nZWRcIiB8IFwic2VsZWN0aW9uOmNoYW5nZWRcIjtcbiAgLyoqIExheW91dCAhPT0gXCJwYWdlXCIg44Gu44Go44GN44GvdW5kZWZpbmVk44Gr44Gq44KLICovXG4gIGxpbmVzPzogTGluZVtdO1xuICBwb3NpdGlvbjogUG9zaXRpb247XG4gIHJhbmdlOiBSYW5nZTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWR1Y2VyID0gKHN0YXRlOiBTdGF0ZSwgYWN0aW9uOiBBY3Rpb24pOiBTdGF0ZSA9PiB7XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gXCJ1bmxvY2tcIikge1xuICAgIGlmICghc3RhdGUubG9jaykgcmV0dXJuIHN0YXRlO1xuICAgIGNvbnN0IHsgbG9jazogXywgLi4ucHJvcHMgfSA9IHN0YXRlO1xuICAgIHJldHVybiB7IC4uLnByb3BzIH07XG4gIH1cbiAgaWYgKHN0YXRlLmxvY2spIHJldHVybiBzdGF0ZTtcblxuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBcImxvY2tcIjoge1xuICAgICAgY29uc3QgeyBsb2NrOiBfLCAuLi5wcm9wcyB9ID0gc3RhdGU7XG4gICAgICByZXR1cm4geyBsb2NrOiB0cnVlLCAuLi5wcm9wcyB9O1xuICAgIH1cbiAgICBjYXNlIFwiZW5hYmxlXCI6XG4gICAgICByZXR1cm4gc3RhdGUudHlwZSA9PT0gXCJkaXNhYmxlZFwiICYmIHN0YXRlLmlzTWFudWFsbHlEaXNhYmxlZFxuICAgICAgICA/IHsgdHlwZTogXCJyZWFkeVwiIH1cbiAgICAgICAgOiBzdGF0ZTtcbiAgICBjYXNlIFwiZGlzYWJsZVwiOlxuICAgICAgcmV0dXJuIHN0YXRlLnR5cGUgPT09IFwiZGlzYWJsZWRcIiAmJiBzdGF0ZS5pc01hbnVhbGx5RGlzYWJsZWRcbiAgICAgICAgPyBzdGF0ZVxuICAgICAgICA6IHsgdHlwZTogXCJkaXNhYmxlZFwiLCBpc01hbnVhbGx5RGlzYWJsZWQ6IHRydWUgfTtcbiAgfVxuICBpZiAoc3RhdGUudHlwZSA9PT0gXCJkaXNhYmxlZFwiKSB7XG4gICAgaWYgKHN0YXRlLmlzTWFudWFsbHlEaXNhYmxlZCB8fCAhYWN0aW9uLmxpbmVzKSByZXR1cm4gc3RhdGU7XG4gICAgLy8gTGF5b3V044GMXCJwYWdlXCLjgavmiLvjgaPjgZ/jgolyZWFkeeOBq+W+qeW4sOOBmeOCi1xuICAgIHJldHVybiB7IHR5cGU6IFwicmVhZHlcIiB9O1xuICB9XG5cbiAgLy8g6KOc5a6M44KS5Lit5pat44GZ44KLXG4gIGlmIChhY3Rpb24udHlwZSA9PT0gXCJjYW5jZWxcIikge1xuICAgIHJldHVybiBzdGF0ZS50eXBlID09PSBcImNvbXBsZXRpb25cIlxuICAgICAgPyB7IHR5cGU6IFwiY2FuY2VsbGVkXCIsIGNvbnRleHQ6IHN0YXRlLmNvbnRleHQgfVxuICAgICAgOiBzdGF0ZTtcbiAgfVxuXG4gIC8vIExheW91dCAhPT0gXCJwYWdlXCLjga7jgajjgY3jga/nhKHlirlcbiAgaWYgKCFhY3Rpb24ubGluZXMpIHJldHVybiB7IHR5cGU6IFwiZGlzYWJsZWRcIiB9O1xuXG4gIC8vIGxheW91dOOBjHBhZ2Xjga7jgajjgY3jga7lh6bnkIZcblxuICBjb25zdCBzdGFydCA9IE1hdGgubWluKGFjdGlvbi5yYW5nZS5zdGFydC5jaGFyLCBhY3Rpb24ucmFuZ2UuZW5kLmNoYXIpO1xuICBjb25zdCBlbmQgPSBNYXRoLm1heChhY3Rpb24ucmFuZ2Uuc3RhcnQuY2hhciwgYWN0aW9uLnJhbmdlLmVuZC5jaGFyKTtcblxuICAvKiog6YG45oqe44GX44Gm44GE44KL44OG44Kt44K544OIXG4gICAqXG4gICAqIOikh+aVsOihjOmBuOaKnuOBr+ecn+mdouebruOBq+ioiOeul+OBl+OBquOBhOOAguikh+aVsOihjOOBi+OBqeOBhuOBi+OBoOOBkeWIpOWumuOBp+OBjeOCi+OCiOOBhuOAgeaUueihjOaWh+Wtl+OCkuWFpeOCjOOBpuOBiuOBj1xuICAgKi9cbiAgY29uc3Qgc2VsZWN0ZWRUZXh0ID0gIWFjdGlvbi5saW5lc1xuICAgID8gXCJcIlxuICAgIDogYWN0aW9uLnJhbmdlLnN0YXJ0LmxpbmUgIT09IGFjdGlvbi5yYW5nZS5lbmQubGluZVxuICAgID8gXCJcXG5cIlxuICAgIDogWy4uLmFjdGlvbi5saW5lc1thY3Rpb24ucmFuZ2Uuc3RhcnQubGluZV0udGV4dF0uc2xpY2Uoc3RhcnQsIGVuZClcbiAgICAgIC5qb2luKFwiXCIpO1xuXG4gIC8vIOWNmOS4gOihjOOBrumBuOaKnuevhOWbsuOBjOOBguOCjOOBsOOAgemBuOaKnuevhOWbsuijnOWujOOCkuWEquWFiOOBl+OBpui1t+WLleOBmeOCi1xuICBpZiAoXG4gICAgaXNTZWxlY3RNb2RlKGFjdGlvbi5saW5lc1thY3Rpb24ucG9zaXRpb24ubGluZV0sIHNlbGVjdGVkVGV4dClcbiAgKSB7XG4gICAgaWYgKHN0YXRlLnR5cGUgIT09IFwiY2FuY2VsbGVkXCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwiY29tcGxldGlvblwiLFxuICAgICAgICBjb250ZXh0OiBcInNlbGVjdGlvblwiLFxuICAgICAgICBxdWVyeTogc2VsZWN0ZWRUZXh0LFxuICAgICAgICBzdGFydCxcbiAgICAgICAgcG9zaXRpb246IGFjdGlvbi5wb3NpdGlvbixcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8g6YG45oqe56+E5Zuy6KOc5a6M44Gn44GN44Gq44GE54q25oWL44Gn5paH5a2X6YG45oqe44GV44KM44Gm44GE44KL44Go44GN44Gv44CB44Gq44Gr44KC6LW35YuV44GX44Gq44GEXG4gIGlmIChzZWxlY3RlZFRleHQgIT09IFwiXCIpIHtcbiAgICByZXR1cm4gc3RhdGUudHlwZSA9PT0gXCJjb21wbGV0aW9uXCIgPyB7IHR5cGU6IFwicmVhZHlcIiB9IDogc3RhdGU7XG4gIH1cblxuICAvLyDku6XpmY3jgIHmloflrZfpgbjmip7jgZXjgozjgabjgYTjgarjgYTnirbmhYtcblxuICBjb25zdCBsaW5rID0gZGV0ZWN0TGluayhcbiAgICBhY3Rpb24ubGluZXNbYWN0aW9uLnBvc2l0aW9uLmxpbmVdLFxuICAgIGFjdGlvbi5wb3NpdGlvbi5jaGFyLFxuICApO1xuICBpZiAoIWxpbmspIHJldHVybiBzdGF0ZS50eXBlID09PSBcInJlYWR5XCIgPyBzdGF0ZSA6IHsgdHlwZTogXCJyZWFkeVwiIH07XG4gIGlmIChzdGF0ZS50eXBlID09PSBcImNhbmNlbGxlZFwiICYmIHN0YXRlLmNvbnRleHQgPT09IFwiaW5wdXRcIikgcmV0dXJuIHN0YXRlO1xuICBpZiAoc3RhdGUudHlwZSA9PT0gXCJjb21wbGV0aW9uXCIgfHwgYWN0aW9uLnR5cGUgPT09IFwibGluZXM6Y2hhbmdlZFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiY29tcGxldGlvblwiLFxuICAgICAgY29udGV4dDogXCJpbnB1dFwiLFxuICAgICAgcXVlcnk6IGxpbmsud2hvbGUsXG4gICAgICBzdGFydDogbGluay5zdGFydCxcbiAgICAgIHBvc2l0aW9uOiBhY3Rpb24ucG9zaXRpb24sXG4gICAgfTtcbiAgfVxuICByZXR1cm4gc3RhdGUudHlwZSA9PT0gXCJyZWFkeVwiID8gc3RhdGUgOiB7IHR5cGU6IFwicmVhZHlcIiB9O1xufTtcblxuLyoqIGNoYXLjgpLlkKvjgoDjg6rjg7Pjgq/jgpLmjqLjgZkgKi9cbmNvbnN0IGRldGVjdExpbmsgPSAoXG4gIGxpbmU6IExpbmUsXG4gIGNoYXI6IG51bWJlcixcbik6IExpbmsgfCB1bmRlZmluZWQgPT4ge1xuICBmb3IgKGNvbnN0IHsgd2hvbGUsIHN0YXJ0IH0gb2YgY3Jhd2xMaW5rKGxpbmUpKSB7XG4gICAgaWYgKGNoYXIgPD0gc3RhcnQgfHwgc3RhcnQgKyBbLi4ud2hvbGVdLmxlbmd0aCA8PSBjaGFyKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcmV0dXJuIHsgd2hvbGUsIHN0YXJ0IH07XG4gIH1cbn07XG5cbi8qKiDpgbjmip7nr4Tlm7LlhaXlipvoo5zlrozjgpLlrp/ooYzjgafjgY3jgovjgYvjganjgYbjgYvov5TjgZnlh73mlbBcbiAqXG4gKiDoo5zlrozjgZfjgarjgYTmnaHku7ZcbiAqIC0g6YG45oqe56+E5Zuy44GM56m6XG4gKiAtIOikh+aVsOihjOOCkumBuOaKnuOBl+OBpuOBhOOCi1xuICogLSDjgrPjg7zjg4njg5bjg63jg4Pjgq/jgIHjgr/jgqTjg4jjg6vooYzjgIHjg4bjg7zjg5bjg6vjga7jgr/jgqTjg4jjg6vjgavjgYTjgotcbiAqL1xuY29uc3QgaXNTZWxlY3RNb2RlID0gKGN1cnNvckxpbmU6IExpbmUsIHNlbGVjdGVkVGV4dDogc3RyaW5nKSA9PlxuICAhKHNlbGVjdGVkVGV4dC50cmltKCkgPT09IFwiXCIgfHwgc2VsZWN0ZWRUZXh0LmluY2x1ZGVzKFwiXFxuXCIpIHx8XG4gICAgXCJjb2RlQmxvY2tcIiBpbiBjdXJzb3JMaW5lIHx8XG4gICAgXCJ0aXRsZVwiIGluIGN1cnNvckxpbmUgfHxcbiAgICAoXCJ0YWJsZUJsb2NrXCIgaW4gY3Vyc29yTGluZSAmJiBjdXJzb3JMaW5lLnRhYmxlQmxvY2suc3RhcnQpKTtcbiIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IExpbmUsIFNjcmFwYm94IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbi8qKiBzY3JhcGJveC5QYWdlLmxpbmVz44KS6YGF5bu25Y+W5b6X44GZ44KLaG9va3NcbiAqXG4gKiBzY3JhcGJveC5QYWdlLmxpbmVz44Gu55Sf5oiQ44Gr44Gv5pmC6ZaT44GM44GL44GL44KL44Gu44Gn44CB5a6f6Zqb44Gr5b+F6KaB44Gr44Gq44KL44G+44Gn5ZG844Gz5Ye644GV44Gq44GE44KI44GG44Gr44GZ44KLXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VDYWNoZWRMaW5lcyA9ICgpOiAoKSA9PiBMaW5lW10gfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBsaW5lcyA9IHVzZVJlZihzY3JhcGJveC5QYWdlLmxpbmVzKTtcbiAgY29uc3QgaXNVcGRhdGVkWWV0ID0gdXNlUmVmKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgaXNVcGRhdGVkWWV0LmN1cnJlbnQgPSB0cnVlO1xuICAgIH07XG4gICAgc2NyYXBib3guYWRkTGlzdGVuZXIoXCJsaW5lczpjaGFuZ2VkXCIsIGNhbGxiYWNrKTtcbiAgICBzY3JhcGJveC5hZGRMaXN0ZW5lcihcImxheW91dDpjaGFuZ2VkXCIsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgc2NyYXBib3gucmVtb3ZlTGlzdGVuZXIoXCJsaW5lczpjaGFuZ2VkXCIsIGNhbGxiYWNrKTtcbiAgICAgIHNjcmFwYm94LnJlbW92ZUxpc3RlbmVyKFwibGF5b3V0OmNoYW5nZWRcIiwgY2FsbGJhY2spO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICByZXR1cm4gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIOabtOaWsOOBjOOBguOCjOOBsOOAgeaWsOOBl+OBhGxpbmVz44Gr5Y+W44KK5pu/44GI44KLXG4gICAgaWYgKGlzVXBkYXRlZFlldC5jdXJyZW50KSB7XG4gICAgICBsaW5lcy5jdXJyZW50ID0gc2NyYXBib3guUGFnZS5saW5lcztcbiAgICAgIGlzVXBkYXRlZFlldC5jdXJyZW50ID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBsaW5lcy5jdXJyZW50ID8/IHVuZGVmaW5lZDtcbiAgfSwgW10pO1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbmltcG9ydCB7IGNyZWF0ZURlYnVnIH0gZnJvbSBcIi4vZGVwcy9kZWJ1Zy50c1wiO1xuaW1wb3J0IHtcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVkdWNlcixcbiAgdXNlU3RhdGUsXG59IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHtcbiAgaW5zZXJ0VGV4dCxcbiAgUG9zaXRpb24sXG4gIFNjcmFwYm94LFxuICB0YWtlQ3Vyc29yLFxuICB0YWtlU2VsZWN0aW9uLFxuICB0YWtlU3RvcmVzLFxufSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyByZWR1Y2VyLCBTdGF0ZSB9IGZyb20gXCIuL3JlZHVjZXIudHNcIjtcbmltcG9ydCB7IHVzZUNhY2hlZExpbmVzIH0gZnJvbSBcIi4vdXNlQ2FjaGVkTGluZXMudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVEZWJ1ZyhcInNjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uOnVzZUxpZmVjeWNsZS50c1wiKTtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VMaWZlY3ljbGVSZXN1bHQge1xuICAvKiog54++5Zyo44Gu54q25oWLICovXG4gIHN0YXRlOiBTdGF0ZTtcblxuICAvKiog5YWl5Yqb6KOc5a6M44Gu5pyJ5Yq5L+eEoeWKueWIh+OCiuabv+OBiCAqL1xuICBzZXRFbmFibGU6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcblxuICAvKiog54++5Zyo44Gu5YWl5Yqb6KOc5a6M44KS5Lit5q2i44GZ44KLICovXG4gIGNhbmNlbDogKCkgPT4gdm9pZDtcblxuICAvKiog5LiO44GI44KJ44KM44Gf6Zai5pWw44KS5a6f6KGM44GX57WC44GI44KL44G+44Gn54q25oWL6YG356e744KS54Sh5Yq544Gr44GZ44KLICovXG4gIGZyZWV6ZVVudGlsOiB7XG4gICAgKGpvYjogKCkgPT4gdm9pZCk6IHZvaWQ7XG4gICAgKGpvYjogKCkgPT4gUHJvbWlzZTx2b2lkPik6IFByb21pc2U8dm9pZD47XG4gIH07XG5cbiAgLyoqIOePvuWcqOihjOOCkuabuOOBjeaPm+OBiOOBpuOAgeijnOWujOOCkue1guS6huOBmeOCiyAqL1xuICBjb25maXJtQWZ0ZXI6IChcbiAgICB1cGRhdG9yOiAocHJldjogc3RyaW5nLCBwb3NpdGlvbjogUG9zaXRpb24pID0+IFtzdHJpbmcsIFBvc2l0aW9uXSxcbiAgKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKiog5YWl5Yqb6KOc5a6M44Gu54q25oWL566h55CG44KS6KGM44GGaG9va3MgKi9cbmV4cG9ydCBjb25zdCB1c2VMaWZlY3ljbGUgPSAoKTogVXNlTGlmZWN5Y2xlUmVzdWx0ID0+IHtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyKHJlZHVjZXIsIHsgdHlwZTogXCJyZWFkeVwiIH0pO1xuXG4gIGNvbnN0IGdldExpbmVzID0gdXNlQ2FjaGVkTGluZXMoKTtcbiAgLyoqIGRpc3BhdGNo44KSZGVib3VuY2XjgZfjgZ/jgoLjga5cbiAgICpcbiAgICogY3Vyc29yOmNoYW5nZWTjga7jgb8xMDBtc+W+heapn+OBleOBm+OCi1xuICAgKi9cbiAgY29uc3QgZGVib3VuY2VkRGlzcGF0Y2ggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBsZXQgdGltZXI6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKHR5cGU6IFwibGluZXM6Y2hhbmdlZFwiIHwgXCJzZWxlY3Rpb246Y2hhbmdlZFwiIHwgXCJjdXJzb3I6Y2hhbmdlZFwiKSA9PiB7XG4gICAgICBpZiAodGltZXIgIT09IHVuZGVmaW5lZCkgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgIHRpbWVyID0gc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgY3Vyc29yLCBzZWxlY3Rpb24gfSA9IHRha2VTdG9yZXMoKTtcbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgbGluZXM6IGdldExpbmVzKCksXG4gICAgICAgICAgICByYW5nZTogc2VsZWN0aW9uLmdldFJhbmdlKHsgbm9ybWFsaXplT3JkZXI6IHRydWUgfSksXG4gICAgICAgICAgICBwb3NpdGlvbjogY3Vyc29yLmdldFBvc2l0aW9uKCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGUgPT09IFwiY3Vyc29yOmNoYW5nZWRcIiA/IDEwMCA6IHVuZGVmaW5lZCxcbiAgICAgICk7XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlTGluZUNoYW5nZWQgPSAoKSA9PiB7XG4gICAgICBkZWJvdW5jZWREaXNwYXRjaChcImxpbmVzOmNoYW5nZWRcIik7XG4gICAgfTtcbiAgICAvLyDjg4bjgq3jgrnjg4jlhaXlipvnm6PoppZcbiAgICBzY3JhcGJveC5hZGRMaXN0ZW5lcihcImxpbmVzOmNoYW5nZWRcIiwgaGFuZGxlTGluZUNoYW5nZWQpO1xuICAgIHNjcmFwYm94LmFkZExpc3RlbmVyKFwibGF5b3V0OmNoYW5nZWRcIiwgaGFuZGxlTGluZUNoYW5nZWQpO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdGlvbkNoYW5nZWQgPSAoKSA9PiB7XG4gICAgICBkZWJvdW5jZWREaXNwYXRjaChcInNlbGVjdGlvbjpjaGFuZ2VkXCIpO1xuICAgIH07XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGFrZVNlbGVjdGlvbigpO1xuICAgIC8vIOmBuOaKnuevhOWbsuWkieabtOebo+imllxuICAgIHNlbGVjdGlvbi5hZGRDaGFuZ2VMaXN0ZW5lcihoYW5kbGVTZWxlY3Rpb25DaGFuZ2VkKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgc2NyYXBib3gucmVtb3ZlTGlzdGVuZXIoXCJsaW5lczpjaGFuZ2VkXCIsIGhhbmRsZUxpbmVDaGFuZ2VkKTtcbiAgICAgIHNjcmFwYm94LnJlbW92ZUxpc3RlbmVyKFwibGF5b3V0OmNoYW5nZWRcIiwgaGFuZGxlTGluZUNoYW5nZWQpO1xuICAgICAgc2VsZWN0aW9uLnJlbW92ZUNoYW5nZUxpc3RlbmVyKGhhbmRsZVNlbGVjdGlvbkNoYW5nZWQpO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICAvLyDjgqvjg7zjgr3jg6vmk43kvZznm6PoppZcbiAgLy8g5YWl5Yqb6KOc5a6M44GM6LW35YuV44GX44Gm44GE44KL44Go44GN44Gu44G/55uj6KaW44GZ44KLXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXRlLmNvbnRleHQgIT09IFwiaW5wdXRcIikgcmV0dXJuO1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgZGVib3VuY2VkRGlzcGF0Y2goXCJjdXJzb3I6Y2hhbmdlZFwiKTtcbiAgICB9O1xuICAgIGNvbnN0IGN1cnNvciA9IHRha2VDdXJzb3IoKTtcbiAgICBjdXJzb3IuYWRkQ2hhbmdlTGlzdGVuZXIoY2FsbGJhY2spO1xuICAgIHJldHVybiAoKSA9PiBjdXJzb3IucmVtb3ZlQ2hhbmdlTGlzdGVuZXIoY2FsbGJhY2spO1xuICB9LCBbc3RhdGUuY29udGV4dF0pO1xuXG4gIGNvbnN0IFtwcmV2U3RhdGUsIHNldFByZXZTdGF0ZV0gPSB1c2VTdGF0ZTxTdGF0ZT4oc3RhdGUpO1xuICBpZiAocHJldlN0YXRlICE9PSBzdGF0ZSkge1xuICAgIHNldFByZXZTdGF0ZShzdGF0ZSk7XG4gICAgbG9nZ2VyLmRlYnVnKFwiRGV0ZWN0IGNoYW5nZXNcIiwgc3RhdGUpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0ZSxcbiAgICBzZXRFbmFibGU6IHVzZUNhbGxiYWNrKFxuICAgICAgKGZsYWc6IGJvb2xlYW4pID0+IGRpc3BhdGNoKHsgdHlwZTogZmxhZyA/IFwiZW5hYmxlXCIgOiBcImRpc2FibGVcIiB9KSxcbiAgICAgIFtdLFxuICAgICksXG4gICAgY2FuY2VsOiB1c2VDYWxsYmFjaygoKSA9PiBkaXNwYXRjaCh7IHR5cGU6IFwiY2FuY2VsXCIgfSksIFtdKSxcbiAgICBmcmVlemVVbnRpbDogdXNlQ2FsbGJhY2soXG4gICAgICAoKGpvYikgPT4ge1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwibG9ja1wiIH0pO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gam9iKCk7XG4gICAgICAgIGlmIChwcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgIHJldHVybiBwcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcInVubG9ja1wiIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJ1bmxvY2tcIiB9KTtcbiAgICAgICAgfVxuICAgICAgfSkgYXMgVXNlTGlmZWN5Y2xlUmVzdWx0W1wiZnJlZXplVW50aWxcIl0sXG4gICAgICBbXSxcbiAgICApLFxuICAgIGNvbmZpcm1BZnRlcjogdXNlQ2FsbGJhY2soXG4gICAgICBhc3luYyAodXBkYXRvcikgPT4ge1xuICAgICAgICBjb25zdCBsaW5lcyA9IGdldExpbmVzKCk7XG4gICAgICAgIC8vIOijnOWujOOBjOeEoeWKueOBruOBqOOBjeOBr+S9leOCguOBl+OBquOBhFxuICAgICAgICBpZiAoIWxpbmVzKSByZXR1cm47XG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJsb2NrXCIgfSk7XG4gICAgICAgIGNvbnN0IHsgY3Vyc29yLCBzZWxlY3Rpb24gfSA9IHRha2VTdG9yZXMoKTtcbiAgICAgICAgY29uc3QgbGluZSA9IGN1cnNvci5nZXRQb3NpdGlvbigpLmxpbmU7XG4gICAgICAgIGNvbnN0IHByZXYgPSBsaW5lc1tsaW5lXS50ZXh0O1xuICAgICAgICBjb25zdCBbdGV4dCwgcG9zaXRpb25dID0gdXBkYXRvcihwcmV2LCBjdXJzb3IuZ2V0UG9zaXRpb24oKSk7XG5cbiAgICAgICAgLy8g5LiK5pu444GNXG4gICAgICAgIHNlbGVjdGlvbi5zZXRSYW5nZSh7XG4gICAgICAgICAgc3RhcnQ6IHsgbGluZSwgY2hhcjogMCB9LFxuICAgICAgICAgIGVuZDogeyBsaW5lLCBjaGFyOiBbLi4ucHJldl0ubGVuZ3RoIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBpbnNlcnRUZXh0KHRleHQpO1xuICAgICAgICBjdXJzb3Iuc2V0UG9zaXRpb24ocG9zaXRpb24pO1xuICAgICAgICBjdXJzb3IuZm9jdXMoKTtcbiAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcInVubG9ja1wiIH0pO1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiY2FuY2VsXCIgfSk7XG4gICAgICB9LFxuICAgICAgW10sXG4gICAgKSxcbiAgfTtcbn07XG4iLCAiaW1wb3J0IHsgTWF0Y2hJbmZvIH0gZnJvbSBcIi4vc2VhcmNoLnRzXCI7XG5pbXBvcnQgeyBDYW5kaWRhdGUgfSBmcm9tIFwiLi9zb3VyY2UudHNcIjtcblxuLyoqIOWAmeijnOOCkuaYh+mghuOBq+avlOi8g+OBmeOCi+WHveaVsOOCkuS9nOOCi1xuICpcbiAqIOi/lOOCiuWApOOBruaEj+WRs+OBr0FycmF5LnByb3RvdHlwZS5zb3J0KCnjgavjgo/jgZ/jgZnlh73mlbDjgajlkIzjgZhcbiAqXG4gKiBAcGFyYW0gcHJvamVjdHMgcHJvamVjdOOBruWEquWFiOmghuS9jeS7mOOBkeOBq+S9v+OBhumFjeWIl+OAguWEquWFiOW6puOBrumrmOOBhOmghuOBq3Byb2plY3TjgpLkuKbjgbnjgotcbiAqIEByZXR1cm4g5piH6aCG44Gr5q+U6LyD44GZ44KL5Ye95pWwXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wYXJlQXNlID0gKFxuICBhOiBDYW5kaWRhdGUgJiBNYXRjaEluZm8sXG4gIGI6IENhbmRpZGF0ZSAmIE1hdGNoSW5mbyxcbik6IG51bWJlciA9PiB7XG4gIC8vIDEuIOe3qOmbhui3nembouOBjOefreOBhOmghlxuICBjb25zdCBkaWZmID0gYS5kaXN0IC0gYi5kaXN0O1xuICBpZiAoZGlmZiAhPT0gMCkgcmV0dXJuIGRpZmY7XG5cbiAgLy8gMi4g44Oe44OD44OB5L2N572u44GM5pep44GE6aCGXG4gIGNvbnN0IHNhID0gYS5tYXRjaGVzLm1hcCgoW3NdKSA9PiBzKS5zb3J0KCk7XG4gIGNvbnN0IHNiID0gYi5tYXRjaGVzLm1hcCgoW3NdKSA9PiBzKS5zb3J0KCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2EubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBzZGlmZiA9IHNhW2ldIC0gKHNiW2ldID8/IHNiLmxlbmd0aCk7XG4gICAgaWYgKHNkaWZmICE9PSAwKSByZXR1cm4gc2RpZmY7XG4gIH1cblxuICAvLyAzLiDmloflrZfliJfjgYznn63jgYTpoIZcbiAgY29uc3QgbGRpZmYgPSBhLnRpdGxlLmxlbmd0aCAtIGIudGl0bGUubGVuZ3RoO1xuICBpZiAobGRpZmYgIT09IDApIHJldHVybiBsZGlmZjtcblxuICAvLyA0LiDmm7TmlrDml6XmmYLjgYzmlrDjgZfjgYTpoIZcbiAgcmV0dXJuIGIudXBkYXRlZCAtIGEudXBkYXRlZDtcbn07XG4iLCAiLyoqIOaknOe0ouWHveaVsCAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXIge1xuICAvKiog5LiO44GI44Gf5paH5a2X5YiX44Gr5LiA6Ie044GZ44KL57eo6ZuG6Led6Zui44Gu44Oq44K544OI44KS6KiI566X44GZ44KLXG4gICAqXG4gICAqIEBwYXJhbSB0ZXh0IOaknOe0ouWvvuixoeOBruaWh+Wtl+WIl1xuICAgKiBAcmV0dXJuIGnnlarnm67jgavjgIF0ZXh044GuaeeVquebruOBrui/keS8vOaWh+Wtl+WIl+WHuuePvuOBrue3qOmbhui3nembouOCkuagvOe0jeOBl+OBn+mFjeWIl1xuICAgKi9cbiAgKHRleHQ6IHN0cmluZyk6IG51bWJlcltdO1xufVxuXG4vKiog44GC44GE44G+44GE5qSc57Si44GZ44KLXG4gKlxuICogQHBhcmFtIHF1ZXJ5IOaknOe0ouaWh+Wtl+WIl1xuICogQHJldHVybiDmpJzntKLnlKjlh73mlbBcbiAqL1xuZXhwb3J0IGNvbnN0IGJpdERQID0gKHF1ZXJ5OiBzdHJpbmcpOiBGaWx0ZXIgPT4ge1xuICAvLyDmnKvlsL7jgYzmnIDliJ3jga7mloflrZfjga7jg5Pjg4Pjg4jjgpLooajjgZlcbiAgY29uc3QgUGVxID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgY29uc3QgcnF1ZXJ5ID0gWy4uLnF1ZXJ5XS5yZXZlcnNlKCk7IC8vIOabuOiomOe0oOOBq+WIhuWJsuOBl+OBpuOBiuOBj1xuICB7XG4gICAgbGV0IGkgPSAxO1xuICAgIGZvciAoY29uc3QgcSBvZiBycXVlcnkpIHtcbiAgICAgIFBlcS5zZXQocSwgKFBlcS5nZXQocSkgPz8gMCkgfCBpKTtcbiAgICAgIGNvbnN0IHBpbCA9IHEudG9Mb3dlckNhc2UoKTtcbiAgICAgIFBlcS5zZXQocGlsLCAoUGVxLmdldChwaWwpID8/IDApIHwgaSk7XG4gICAgICBjb25zdCBwaXUgPSBxLnRvVXBwZXJDYXNlKCk7XG4gICAgICBQZXEuc2V0KHBpdSwgKFBlcS5nZXQocGl1KSA/PyAwKSB8IGkpO1xuICAgICAgaSA8PD0gMTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBtID0gcnF1ZXJ5Lmxlbmd0aDsgLy/mloflrZfliJfmlbBcbiAgY29uc3QgUHYwID0gfih+KDApIDw8IG0pOyAvLyDlj7PlgbTjgYvjgolt5YCL44GuYml0c+OBjOeri+OBo+OBn+ODk+ODg+ODiOWIl1xuICBjb25zdCBhY2NlcHQgPSAxIDw8IChtIC0gMSk7XG5cbiAgcmV0dXJuICh0ZXh0OiBzdHJpbmcpOiBudW1iZXJbXSA9PiB7XG4gICAgbGV0IE12ID0gMDtcbiAgICBsZXQgUHYgPSBQdjA7XG4gICAgY29uc3QgcnRleHQgPSBbLi4udGV4dF0ucmV2ZXJzZSgpO1xuICAgIGNvbnN0IENtOiBudW1iZXJbXSA9IFtdO1xuICAgIGxldCBqID0gcnRleHQubGVuZ3RoO1xuICAgIENtW2pdID0gbTtcblxuICAgIGZvciAoY29uc3QgdCBvZiBydGV4dCkge1xuICAgICAgY29uc3QgRXEgPSBQZXEuZ2V0KHQpID8/IDA7XG4gICAgICBjb25zdCBYdiA9IEVxIHwgTXY7XG4gICAgICBjb25zdCBYaCA9ICgoKEVxICYgUHYpICsgUHYpIF4gUHYpIHwgRXE7XG4gICAgICBjb25zdCBQaCA9IE12IHwgfihYaCB8IFB2KTtcbiAgICAgIGNvbnN0IE1oID0gUHYgJiBYaDtcbiAgICAgIENtW2ogLSAxXSA9IENtW2pdICtcbiAgICAgICAgKChQaCAmIGFjY2VwdCkgIT09IDAgPyAxIDogKE1oICYgYWNjZXB0KSAhPT0gMCA/IC0xIDogMCk7XG5cbiAgICAgIFB2ID0gKE1oIDw8IDEpIHwgfihYdiB8IChQaCA8PCAxKSk7XG4gICAgICBNdiA9IChQaCA8PCAxKSAmIFh2O1xuICAgICAgai0tO1xuICAgIH1cblxuICAgIHJldHVybiBDbTtcbiAgfTtcbn07XG4iLCAiaW1wb3J0IHsgcmV2ZXJ0VGl0bGVMYyB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmltcG9ydCB7IGJpdERQIH0gZnJvbSBcIi4vYml0RFAudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDYW5kaWRhdGUge1xuICB0aXRsZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBNYXRjaEluZm8ge1xuICAvKiog57eo6ZuG6Led6ZuiICovXG4gIGRpc3Q6IG51bWJlcjtcblxuICAvKiogcXVlcnnjgYzjg57jg4Pjg4HjgZfjgZ/kvY3nva5cbiAgICpcbiAgICogLSAx55Wq55uu77ya6ZaL5aeL5L2N572uXG4gICAqIC0gMueVquebru+8mue1guS6huS9jee9rlxuICAgKi9cbiAgbWF0Y2hlczogW251bWJlciwgbnVtYmVyXVtdO1xufVxuXG4vLyBkZW5vLWZtdC1pZ25vcmVcbmNvbnN0IGdldE1heERpc3RhbmNlID0gW1xuICAwLCAvLyDnqbrmloflrZfjga7jgajjgY1cbiAgMCwgMCxcbiAgMSwgMSxcbiAgMiwgMiwgMiwgMixcbiAgMywgMywgMywgMywgMywgMyxcbiAgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCxcbiAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNixcbl07XG5cbi8qKiDkuIDoh7TjgZnjgovlgJnoo5zjgpLjgZfjgbzjgorjgZPjgoDlh73mlbAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXI8VCBleHRlbmRzIENhbmRpZGF0ZT4ge1xuICAvKiog5LiA6Ie044GZ44KL5YCZ6KOc44KS44GX44G844KK44GT44KA5Ye95pWwXG4gICAqXG4gICAqIEBwYXJhbSBzb3VyY2Ug5qSc57Si5YCZ6KOc44Oq44K544OIXG4gICAqIEByZXR1cm4g5LiA6Ie044GX44Gf5YCZ6KOcXG4gICAqL1xuICAoc291cmNlOiByZWFkb25seSBUW10pOiAoVCAmIE1hdGNoSW5mbylbXTtcbn1cblxuLyoqIGBxdWVyeWDjgavmm5bmmKfkuIDoh7TjgZnjgovlgJnoo5zjgpLntZ7jgorovrzjgoDlh73mlbDjgpLkvZzjgotcbiAqXG4gKiBAcGFyYW0gcXVlcnkg5qSc57Si6Kqe5Y+lXG4gKiBAcmV0dXJuIOaknOe0ouWHveaVsOOAguaknOe0ouS4jeimgeOBquOBqOOBjeOBr2B1bmRlZmluZWRg44KS6L+U44GZXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlRmlsdGVyID0gPFQgZXh0ZW5kcyBDYW5kaWRhdGU+KFxuICBxdWVyeTogc3RyaW5nLFxuKTogRmlsdGVyPFQ+IHwgdW5kZWZpbmVkID0+IHtcbiAgLyoqIOOCreODvOODr+ODvOODieODquOCueODiFxuICAgKlxuICAgKiAtIOepuueZveOBr+WPluOCiumZpOOBj1xuICAgKiAtIGBfYOOBr+epuueZveOBqOOBv+OBquOBmVxuICAgKiAtIOmVt+OBhOmghuOBq+S4puOBs+abv+OBiOOBpuOBiuOBj1xuICAgKiAgIC0g6ZW344GEcXVlcnnjgYvjgonmpJzntKLjgZfjgZ/jgbvjgYbjgYzjgIHlsJHjgarjgY/ntZ7jgorovrzjgoHjgotcbiAgICovXG4gIGNvbnN0IHF1ZXJpZXMgPSByZXZlcnRUaXRsZUxjKHF1ZXJ5LnRyaW0oKSkuc3BsaXQoL1xccysvKVxuICAgIC5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKTtcbiAgaWYgKHF1ZXJpZXMubGVuZ3RoID09PSAwIHx8IHF1ZXJpZXMuZXZlcnkoKHEpID0+IHEgPT09IFwiXCIpKSByZXR1cm47XG5cbiAgcmV0dXJuIChzb3VyY2UpID0+IHtcbiAgICBsZXQgcmVzdWx0ID0gWy4uLnNvdXJjZV07XG4gICAgZm9yIChjb25zdCBxdWVyeSBvZiBxdWVyaWVzKSB7XG4gICAgICByZXN1bHQgPSBmaWx0ZXIocXVlcnksIHJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQgYXMgKFQgJiBNYXRjaEluZm8pW107XG4gIH07XG59O1xuXG5jb25zdCBmaWx0ZXIgPSA8VCBleHRlbmRzIENhbmRpZGF0ZT4oXG4gIHF1ZXJ5OiBzdHJpbmcsXG4gIHNvdXJjZTogKFQgJiBQYXJ0aWFsPE1hdGNoSW5mbz4pW10sXG4pOiAoVCAmIE1hdGNoSW5mbylbXSA9PiB7XG4gIGNvbnN0IG0gPSBbLi4ucXVlcnldLmxlbmd0aDtcbiAgY29uc3QgbWF4RGlzdGFuY2UgPSBnZXRNYXhEaXN0YW5jZVttXTtcbiAgY29uc3QgZmlsdGVyXyA9IGJpdERQKHF1ZXJ5KTtcblxuICByZXR1cm4gc291cmNlLmZsYXRNYXAoXG4gICAgKHsgdGl0bGUsIGRpc3QsIG1hdGNoZXMsIC4uLnByb3BzIH0pID0+IHtcbiAgICAgIG1hdGNoZXMgPz89IFtdO1xuICAgICAgZGlzdCA/Pz0gMDtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gZmlsdGVyXyh0aXRsZSlcbiAgICAgICAgLmZsYXRNYXAoKGQsIGkpID0+XG4gICAgICAgICAgZCA8PSBtYXhEaXN0YW5jZSAmJlxuICAgICAgICAgICAgLy8g5Yil44GucXVlcnnjgafjg57jg4Pjg4HjgZfjgZ/nrofmiYDjga/pmaTjgY9cbiAgICAgICAgICAgIG1hdGNoZXMhLmV2ZXJ5KChbcywgZV0pID0+IGkgKyBtIDw9IHMgfHwgZSA8IGkpXG4gICAgICAgICAgICA/IFtbaSwgZF1dXG4gICAgICAgICAgICA6IFtdXG4gICAgICAgICk7XG4gICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuXG4gICAgICBjb25zdCBuZXdNYXRjaCA9IHJlc3VsdC5yZWR1Y2UoKHByZXYsIFtpLCBkaXN0XSkgPT4ge1xuICAgICAgICBpZiAocHJldi5kaXN0IDw9IGRpc3QpIHJldHVybiBwcmV2O1xuICAgICAgICBwcmV2LmRpc3QgPSBkaXN0O1xuICAgICAgICBwcmV2LnN0YXJ0ID0gaTtcbiAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICB9LCB7IGRpc3Q6IG0sIHN0YXJ0OiAwIH0pO1xuXG4gICAgICBtYXRjaGVzLnB1c2goW25ld01hdGNoLnN0YXJ0LCBuZXdNYXRjaC5zdGFydCArIG0gLSAxXSk7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgZGlzdDogbmV3TWF0Y2guZGlzdCArIGRpc3QsXG4gICAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgfSBhcyAoVCAmIE1hdGNoSW5mbyksXG4gICAgICBdO1xuICAgIH0sXG4gICk7XG59O1xuIiwgImltcG9ydCB7IENhbmRpZGF0ZSwgbWFrZUZpbHRlciwgTWF0Y2hJbmZvIH0gZnJvbSBcIi4vc2VhcmNoLnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVEZWJ1ZyB9IGZyb20gXCIuL2RlcHMvZGVidWcudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlRGVidWcoXCJzY3JhcGJveC1zZWxlY3Qtc3VnZ2VzdGlvbjpjYW5jZWxhYmxlU2VhcmNoLnRzXCIpO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbmNlbGFibGVTZWFyY2hPcHRpb25zIHtcbiAgLyoqIOS4gOW6puOBq+aknOe0ouOBmeOCi+WAmeijnOOBruacgOWkp+aVsFxuICAgKlxuICAgKiBAZGVmYXVsdCAxMDAwXG4gICAqL1xuICBjaHVuaz86IG51bWJlcjtcbn1cblxuLyoqIOS4reaWreWPr+iDveOBquaknOe0oiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBjYW5jZWxhYmxlU2VhcmNoPEl0ZW0gZXh0ZW5kcyBDYW5kaWRhdGU+KFxuICBxdWVyeTogc3RyaW5nLFxuICBzb3VyY2U6IEl0ZW1bXSxcbiAgb3B0aW9ucz86IENhbmNlbGFibGVTZWFyY2hPcHRpb25zLFxuKTogQXN5bmNHZW5lcmF0b3I8WyhJdGVtICYgTWF0Y2hJbmZvKVtdLCBudW1iZXJdLCB2b2lkLCB1bmtub3duPiB7XG4gIGNvbnN0IGZpbHRlciA9IG1ha2VGaWx0ZXI8SXRlbT4ocXVlcnkpO1xuICBpZiAoIWZpbHRlcikgcmV0dXJuO1xuXG4gIGNvbnN0IGNodW5rID0gb3B0aW9ucz8uY2h1bmsgPz8gMTAwMDtcbiAgY29uc3QgdG90YWwgPSBNYXRoLmZsb29yKHNvdXJjZS5sZW5ndGggLyBjaHVuaykgKyAxO1xuICBsZXQgaSA9IDA7XG4gIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTtcbiAgdHJ5IHtcbiAgICBmb3IgKDsgaSA8IHRvdGFsOyBpKyspIHtcbiAgICAgIC8vIOaknOe0ouS4reaWreWRveS7pOOCkuWPl+OBkeS7mOOBkeOCi+OBn+OCgeOBrmludGVydmFsXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlc29sdmUpKTtcbiAgICAgIHlpZWxkIFtmaWx0ZXIoc291cmNlLnNsaWNlKGkgKiBjaHVuaywgKGkgKyAxKSAqIGNodW5rKSksIChpICsgMSkgLyB0b3RhbF07XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgbXMgPSBlbmQuZ2V0VGltZSgpIC0gc3RhcnQuZ2V0VGltZSgpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBzZWFyY2ggJHtcbiAgICAgICAgKGkgLyB0b3RhbCAqIDEwMCkudG9QcmVjaXNpb24oMylcbiAgICAgIH0lIG9mIHRoZSBzb3VyY2UgZm9yIFwiJHtxdWVyeX1cIiBpbiAke21zfW1zYCxcbiAgICApO1xuICB9XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLyoqXG4gKiBBIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgZGVsYXllZCBieSBhIGdpdmVuIGB3YWl0YFxuICogdGltZSBpbiBtaWxsaXNlY29uZHMuIElmIHRoZSBtZXRob2QgaXMgY2FsbGVkIGFnYWluIGJlZm9yZVxuICogdGhlIHRpbWVvdXQgZXhwaXJlcywgdGhlIHByZXZpb3VzIGNhbGwgd2lsbCBiZSBhYm9ydGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlYm91bmNlZEZ1bmN0aW9uPFQgZXh0ZW5kcyBBcnJheTx1bmtub3duPj4ge1xuICAoLi4uYXJnczogVCk6IHZvaWQ7XG4gIC8qKiBDbGVhcnMgdGhlIGRlYm91bmNlIHRpbWVvdXQgYW5kIG9taXRzIGNhbGxpbmcgdGhlIGRlYm91bmNlZCBmdW5jdGlvbi4gKi9cbiAgY2xlYXIoKTogdm9pZDtcbiAgLyoqIENsZWFycyB0aGUgZGVib3VuY2UgdGltZW91dCBhbmQgY2FsbHMgdGhlIGRlYm91bmNlZCBmdW5jdGlvbiBpbW1lZGlhdGVseS4gKi9cbiAgZmx1c2goKTogdm9pZDtcbiAgLyoqIFJldHVybnMgYSBib29sZWFuIHdoZXRoZXIgYSBkZWJvdW5jZSBjYWxsIGlzIHBlbmRpbmcgb3Igbm90LiAqL1xuICByZWFkb25seSBwZW5kaW5nOiBib29sZWFuO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBkZWJvdW5jZWQgZnVuY3Rpb24gdGhhdCBkZWxheXMgdGhlIGdpdmVuIGBmdW5jYFxuICogYnkgYSBnaXZlbiBgd2FpdGAgdGltZSBpbiBtaWxsaXNlY29uZHMuIElmIHRoZSBtZXRob2QgaXMgY2FsbGVkXG4gKiBhZ2FpbiBiZWZvcmUgdGhlIHRpbWVvdXQgZXhwaXJlcywgdGhlIHByZXZpb3VzIGNhbGwgd2lsbCBiZVxuICogYWJvcnRlZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vYXN5bmMvZGVib3VuY2UudHNcIjtcbiAqXG4gKiBhd2FpdCBBcnJheS5mcm9tQXN5bmMoXG4gKiAgIERlbm8ud2F0Y2hGcygnLi8nKSxcbiAqICAgZGVib3VuY2UoKGV2ZW50KSA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coJ1slc10gJXMnLCBldmVudC5raW5kLCBldmVudC5wYXRoc1swXSk7XG4gKiAgIH0sIDIwMCksXG4gKiApO1xuICogLy8gd2FpdCAyMDBtcyAuLi5cbiAqIC8vIG91dHB1dDogRnVuY3Rpb24gZGVib3VuY2VkIGFmdGVyIDIwMG1zIHdpdGggYmF6XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZm4gICAgVGhlIGZ1bmN0aW9uIHRvIGRlYm91bmNlLlxuICogQHBhcmFtIHdhaXQgIFRoZSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byBkZWxheSB0aGUgZnVuY3Rpb24uXG4gKi9cbi8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gZGVib3VuY2U8VCBleHRlbmRzIEFycmF5PGFueT4+KFxuICBmbjogKHRoaXM6IERlYm91bmNlZEZ1bmN0aW9uPFQ+LCAuLi5hcmdzOiBUKSA9PiB2b2lkLFxuICB3YWl0OiBudW1iZXIsXG4pOiBEZWJvdW5jZWRGdW5jdGlvbjxUPiB7XG4gIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgbGV0IGZsdXNoOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICBjb25zdCBkZWJvdW5jZWQ6IERlYm91bmNlZEZ1bmN0aW9uPFQ+ID0gKCguLi5hcmdzOiBUKSA9PiB7XG4gICAgZGVib3VuY2VkLmNsZWFyKCk7XG4gICAgZmx1c2ggPSAoKSA9PiB7XG4gICAgICBkZWJvdW5jZWQuY2xlYXIoKTtcbiAgICAgIGZuLmNhbGwoZGVib3VuY2VkLCAuLi5hcmdzKTtcbiAgICB9O1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGZsdXNoLCB3YWl0KTtcbiAgfSkgYXMgRGVib3VuY2VkRnVuY3Rpb248VD47XG5cbiAgZGVib3VuY2VkLmNsZWFyID0gKCkgPT4ge1xuICAgIGlmICh0eXBlb2YgdGltZW91dCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICBmbHVzaCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGRlYm91bmNlZC5mbHVzaCA9ICgpID0+IHtcbiAgICBmbHVzaD8uKCk7XG4gIH07XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRlYm91bmNlZCwgXCJwZW5kaW5nXCIsIHtcbiAgICBnZXQ6ICgpID0+IHR5cGVvZiB0aW1lb3V0ID09PSBcIm51bWJlclwiLFxuICB9KTtcblxuICByZXR1cm4gZGVib3VuY2VkO1xufVxuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VSZWR1Y2VyIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBjb21wYXJlQXNlIH0gZnJvbSBcIi4vc29ydC50c1wiO1xuaW1wb3J0IHsgQ2FuZGlkYXRlIH0gZnJvbSBcIi4vc291cmNlLnRzXCI7XG5pbXBvcnQgeyBNYXRjaEluZm8gfSBmcm9tIFwiLi9zZWFyY2gudHNcIjtcbmltcG9ydCB7IGNhbmNlbGFibGVTZWFyY2ggfSBmcm9tIFwiLi9jYW5jZWxhYmxlU2VhcmNoLnRzXCI7XG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gXCIuL2RlcHMvYXN5bmMudHNcIjtcbmltcG9ydCB7IGNyZWF0ZURlYnVnIH0gZnJvbSBcIi4vZGVwcy9kZWJ1Zy50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVEZWJ1ZyhcInNjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uOnVzZVNlYXJjaC50c1wiKTtcblxuZXhwb3J0IGludGVyZmFjZSBJdGVtIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGlzdDogbnVtYmVyO1xuICBwcm9qZWN0czogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoUmVzdWx0IHtcbiAgLyoqIOWQhHByb2plY3Tjga7kuKbjgbPpoIbjgpLmsbrjgoHjgovlgKQgKi9cbiAgcHJvamVjdFNjb3JlOiBNYXA8c3RyaW5nLCBudW1iZXI+O1xuICAvKiog5qSc57Si57WQ5p6cICovXG4gIGl0ZW1zOiBJdGVtW107XG4gIC8qKiDmpJzntKLjga7pgLLmjZfnjocgKi9cbiAgcHJvZ3Jlc3M6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hBY3Rpb24ge1xuICAvKiog5qSc57Si44KS5a6f6KGM44GZ44KLXG4gICAqXG4gICAqIEBwYXJhbSBxdWVyeSDmpJzntKLjgq/jgqjjg6pcbiAgICovXG4gIHNlYXJjaDogKHF1ZXJ5OiBzdHJpbmcpID0+IHZvaWQ7XG5cbiAgLyoqIOOCveODvOOCueOCkuabtOaWsOOBl+OAgeWGjeaknOe0ouOBmeOCi1xuICAgKlxuICAgKiBAcGFyYW0gc291cmNlIOaWsOOBl+OBhOOCveODvOOCuVxuICAgKi9cbiAgdXBkYXRlOiAoc291cmNlOiBDYW5kaWRhdGVbXSkgPT4gdm9pZDtcbn1cblxuLyoqIOOBguOBhOOBvuOBhOaknOe0ouOBmeOCi2hvb2tzICovXG5leHBvcnQgY29uc3QgdXNlU2VhcmNoID0gKFxuICBpbml0aWFsU291cmNlOiBDYW5kaWRhdGVbXSxcbik6IFtTZWFyY2hSZXN1bHQgfCB1bmRlZmluZWQsIFNlYXJjaEFjdGlvbl0gPT4ge1xuICBjb25zdCBleGVjdXRlU2VhcmNoOiBTZWFyY2hlciA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIHF1ZXJ5LFxuICAgICAgc291cmNlLFxuICAgICAgZXhlY3V0ZWRCeVNvdXJjZVVwZGF0ZSxcbiAgICApID0+IHtcbiAgICAgIGxldCBhYm9ydGVkID0gZmFsc2U7XG4gICAgICBjb25zdCBpdGVyYXRvciA9IGNhbmNlbGFibGVTZWFyY2gocXVlcnksIHNvdXJjZSwge1xuICAgICAgICBjaHVuazogNTAwMCxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBydW46IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAvLyDjgr3jg7zjgrnmm7TmlrDjgpLjg4jjg6rjgqzjg7zjgavjgZfjgZ/lho3mpJzntKLjga/jgIHjgZnjgbnjgabmpJzntKLjgZfntYLjgo/jgaPjgabjgYvjgonov5TjgZlcbiAgICAgICAgICBpZiAoZXhlY3V0ZWRCeVNvdXJjZVVwZGF0ZSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhY2s6IChDYW5kaWRhdGUgJiBNYXRjaEluZm8pW10gPSBbXTtcbiAgICAgICAgICAgIGZvciBhd2FpdCAoY29uc3QgW2NhbmRpZGF0ZXNdIG9mIGl0ZXJhdG9yKSB7XG4gICAgICAgICAgICAgIGlmIChhYm9ydGVkKSByZXR1cm47XG4gICAgICAgICAgICAgIHN0YWNrLnB1c2goLi4uY2FuZGlkYXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaXNwYXRjaCh7IHByb2dyZXNzOiAxLjAsIGNhbmRpZGF0ZXM6IHN0YWNrIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBkZWJvdW5jZWREaXNwYXRjaCA9IGRlYm91bmNlKGRpc3BhdGNoLCA1MDApO1xuICAgICAgICAgIGxldCByZXR1cm5lZCA9IGZhbHNlO1xuICAgICAgICAgIGxldCBzdGFjazogKENhbmRpZGF0ZSAmIE1hdGNoSW5mbylbXSA9IFtdO1xuICAgICAgICAgIGZvciBhd2FpdCAoY29uc3QgW2NhbmRpZGF0ZXMsIHByb2dyZXNzXSBvZiBpdGVyYXRvcikge1xuICAgICAgICAgICAgaWYgKGFib3J0ZWQpIHtcbiAgICAgICAgICAgICAgZGVib3VuY2VkRGlzcGF0Y2guY2xlYXIoKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g6Z2e56C05aOK55qE44Grc3RhY2vjgavov73liqDjgZnjgovjgZPjgajjgafjgIFgcmVkdWNlcmDlhoXjgafjga5gPT09YOavlOi8g+OBjOWKueOBj+OCiOOBhuOBq+OBmeOCi1xuICAgICAgICAgICAgc3RhY2sgPSBbLi4uc3RhY2ssIC4uLmNhbmRpZGF0ZXNdO1xuXG4gICAgICAgICAgICAvLyDpgLLmjZfnjofjgpLmm7TmlrDjgZnjgotcbiAgICAgICAgICAgIGRpc3BhdGNoKHsgcHJvZ3Jlc3MgfSk7XG5cbiAgICAgICAgICAgIC8vIOimi+OBpOOBi+OCieOBquOBkeOCjOOBsOabtOaWsOOBl+OBquOBhFxuICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXMubGVuZ3RoID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICAgICAgLy8gNTAwbXPjgZTjgajjgavov5TljbTjgZnjgotcbiAgICAgICAgICAgIGRlYm91bmNlZERpc3BhdGNoKHsgcHJvZ3Jlc3MsIGNhbmRpZGF0ZXM6IHN0YWNrIH0pO1xuXG4gICAgICAgICAgICAvLyDliJ3lm57jga/ljbPluqfjgavntZDmnpzjgpLov5TjgZlcbiAgICAgICAgICAgIGlmICghcmV0dXJuZWQpIHtcbiAgICAgICAgICAgICAgZGVib3VuY2VkRGlzcGF0Y2guZmx1c2goKTtcbiAgICAgICAgICAgICAgcmV0dXJuZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyDmnIDkvY7kuIDluqbjga/ov5TljbTjgZnjgotcbiAgICAgICAgICAvLyDjgb7jgZ/jgIF0aW1lcuOBjOe1guS6huOBl+OBpuOBhOOBquOBi+OBo+OBn+WgtOWQiOOBr+OAgeOBneOCjOOCkuatouOCgeOBpuS7o+OCj+OCiuOBq+OBk+OBk+OBp+Wun+ihjOOBmeOCi1xuICAgICAgICAgIGRlYm91bmNlZERpc3BhdGNoKHsgcHJvZ3Jlc3M6IDEuMCwgY2FuZGlkYXRlczogc3RhY2sgfSk7XG4gICAgICAgICAgZGVib3VuY2VkRGlzcGF0Y2guZmx1c2goKTtcbiAgICAgICAgfSxcbiAgICAgICAgYWJvcnQ6ICgpID0+IGFib3J0ZWQgPSB0cnVlLFxuICAgICAgfTtcbiAgICB9LFxuICAgIFtdLFxuICApO1xuICBjb25zdCBbdXNlU2VhcmNoU3RhdGUsIGRpc3BhdGNoXSA9IHVzZVJlZHVjZXIoXG4gICAgdXNlTWVtbygoKSA9PiBjcmVhdGVSZWR1Y2VyKGV4ZWN1dGVTZWFyY2gpLCBbZXhlY3V0ZVNlYXJjaF0pLFxuICAgIHtcbiAgICAgIHNvdXJjZTogaW5pdGlhbFNvdXJjZSxcbiAgICB9LFxuICApO1xuXG4gIHJldHVybiBbXG4gICAgdXNlTWVtbyhcbiAgICAgICgpOiBTZWFyY2hSZXN1bHQgfCB1bmRlZmluZWQgPT4ge1xuICAgICAgICBpZiAoIWlzU2VhcmNoaW5nKHVzZVNlYXJjaFN0YXRlKSkgcmV0dXJuO1xuXG4gICAgICAgIC8vIOS4puOBueabv+OBiCAmIOWKoOW3peOBl+OBpui/lOWNtOOBmeOCi1xuICAgICAgICBjb25zdCBbcHJvamVjdFNjb3JlLCBpdGVtc10gPSBzb3J0QW5kU2NvcmluZyh1c2VTZWFyY2hTdGF0ZS5jYW5kaWRhdGVzKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiRGV0ZWN0IGNoYW5nZXNcIiwge1xuICAgICAgICAgIHByb2dyZXNzOiB1c2VTZWFyY2hTdGF0ZS5wcm9ncmVzcyxcbiAgICAgICAgICBpdGVtcyxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcHJvZ3Jlc3M6IHVzZVNlYXJjaFN0YXRlLnByb2dyZXNzLFxuICAgICAgICAgIHByb2plY3RTY29yZSxcbiAgICAgICAgICBpdGVtcyxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBbdXNlU2VhcmNoU3RhdGVdLFxuICAgICksXG4gICAge1xuICAgICAgc2VhcmNoOiB1c2VDYWxsYmFjaygocXVlcnk6IHN0cmluZykgPT4gZGlzcGF0Y2goeyBxdWVyeSB9KSwgW10pLFxuICAgICAgdXBkYXRlOiB1c2VDYWxsYmFjaygoc291cmNlOiBDYW5kaWRhdGVbXSkgPT4gZGlzcGF0Y2goeyBzb3VyY2UgfSksIFtdKSxcbiAgICB9LFxuICBdO1xufTtcblxudHlwZSBTZWFyY2hlciA9IChcbiAgc3RhdGU6IHN0cmluZyxcbiAgc291cmNlOiBDYW5kaWRhdGVbXSxcbiAgZXhlY3V0ZWRCeVNvdXJjZVVwZGF0ZTogYm9vbGVhbixcbikgPT4ge1xuICBydW46ICgpID0+IFByb21pc2U8dm9pZD47XG4gIGFib3J0OiAoKSA9PiB2b2lkO1xufTtcblxuaW50ZXJmYWNlIEpvYiB7XG4gIGRvbmU6IFByb21pc2U8dm9pZD47XG4gIGFib3J0OiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG5pbnRlcmZhY2UgSWRsZVN0YXRlIHtcbiAgc291cmNlOiBDYW5kaWRhdGVbXTtcbn1cbmludGVyZmFjZSBTZWFyY2hpbmdTdGF0ZSB7XG4gIHNvdXJjZTogQ2FuZGlkYXRlW107XG4gIHF1ZXJ5OiBzdHJpbmc7XG4gIGpvYjogSm9iO1xuICBwcm9ncmVzczogbnVtYmVyO1xuICBjYW5kaWRhdGVzOiAoQ2FuZGlkYXRlICYgTWF0Y2hJbmZvKVtdO1xufVxuY29uc3QgaXNTZWFyY2hpbmcgPSAoc3RhdGU6IFN0YXRlKTogc3RhdGUgaXMgU2VhcmNoaW5nU3RhdGUgPT4gXCJxdWVyeVwiIGluIHN0YXRlO1xudHlwZSBTdGF0ZSA9IElkbGVTdGF0ZSB8IFNlYXJjaGluZ1N0YXRlO1xudHlwZSBBY3Rpb24gPSB7IHNvdXJjZTogQ2FuZGlkYXRlW10gfSB8IHsgcXVlcnk6IHN0cmluZyB9IHwge1xuICBwcm9ncmVzczogbnVtYmVyO1xuICBjYW5kaWRhdGVzPzogKENhbmRpZGF0ZSAmIE1hdGNoSW5mbylbXTtcbn07XG5cbmNvbnN0IGNyZWF0ZVJlZHVjZXIgPSAoXG4gIHNlYXJjaGVyOiBTZWFyY2hlcixcbikgPT5cbihzdGF0ZTogU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogU3RhdGUgPT4ge1xuICBpZiAoXCJxdWVyeVwiIGluIGFjdGlvbikge1xuICAgIGNvbnN0IHByZXZRdWVyeSA9IGlzU2VhcmNoaW5nKHN0YXRlKSA/IHN0YXRlLnF1ZXJ5IDogXCJcIjtcbiAgICBpZiAoYWN0aW9uLnF1ZXJ5ID09PSBwcmV2UXVlcnkpIHJldHVybiBzdGF0ZTtcbiAgICBjb25zdCBwcmV2Sm9iID0gaXNTZWFyY2hpbmcoc3RhdGUpID8gc3RhdGUuam9iIDogdW5kZWZpbmVkO1xuICAgIGlmICghYWN0aW9uLnF1ZXJ5KSB7XG4gICAgICBwcmV2Sm9iPy5hYm9ydD8uKCk7XG4gICAgICByZXR1cm4geyBzb3VyY2U6IHN0YXRlLnNvdXJjZSB9O1xuICAgIH1cbiAgICBjb25zdCB7IHJ1biwgYWJvcnQgfSA9IHNlYXJjaGVyKGFjdGlvbi5xdWVyeSwgc3RhdGUuc291cmNlLCBmYWxzZSk7XG4gICAgLy8g5YmN5Zue44Gu5qSc57Si44KS5Lit5pat44GX44Gm44GL44KJ5paw44GX44GE5qSc57Si44KS5a6f6KGM44GZ44KLXG4gICAgY29uc3QgZG9uZSA9IHByZXZKb2I/LmFib3J0Py4oKT8udGhlbj8uKHJ1bikgPz8gcnVuKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHF1ZXJ5OiBhY3Rpb24ucXVlcnksXG4gICAgICBzb3VyY2U6IHN0YXRlLnNvdXJjZSxcbiAgICAgIGpvYjoge1xuICAgICAgICBkb25lLFxuICAgICAgICBhYm9ydDogKCkgPT4ge1xuICAgICAgICAgIGFib3J0KCk7XG4gICAgICAgICAgcmV0dXJuIGRvbmU7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcHJvZ3Jlc3M6IDAsXG4gICAgICAvLyDmpJzntKLkuK0gKOWJjeWbnuOBrnF1ZXJ544GM56m644Gn44Gq44GEKeOBr+WJjeWbnuOBrue1kOaenOOCkua2iOOBleOBmuOBq+ihqOekuuOBmeOCi1xuICAgICAgLy8g44Gn44Gq44GE44Go5paH5a2X5YWl5Yqb44GZ44KL44Gf44Gz44GrY29tcG9uZW5044GM44Oq44K744OD44OI44GV44KM44Gm44GX44G+44GE44CB5aSn5aSJ44Gh44KJ44Gk44GPXG4gICAgICBjYW5kaWRhdGVzOiAhcHJldlF1ZXJ5IHx8ICFpc1NlYXJjaGluZyhzdGF0ZSkgPyBbXSA6IHN0YXRlLmNhbmRpZGF0ZXMsXG4gICAgfTtcbiAgfVxuICBpZiAoXCJzb3VyY2VcIiBpbiBhY3Rpb24pIHtcbiAgICAvLyDmpJzntKLkuK3jgafjgarjgZHjgozjgbDjgIHjgr3jg7zjgrnjgpLmm7TmlrDjgZnjgovjgaDjgZFcbiAgICBpZiAoIWlzU2VhcmNoaW5nKHN0YXRlKSkge1xuICAgICAgcmV0dXJuIGFjdGlvbi5zb3VyY2UgPT09IHN0YXRlLnNvdXJjZSA/IHN0YXRlIDogYWN0aW9uO1xuICAgIH1cbiAgICBjb25zdCB7IHNvdXJjZTogcHJldlNvdXJjZSwgam9iOiBwcmV2Sm9iLCAuLi5yZXN0IH0gPSBzdGF0ZTtcbiAgICBpZiAoYWN0aW9uLnNvdXJjZSA9PT0gcHJldlNvdXJjZSkgcmV0dXJuIHN0YXRlO1xuICAgIGNvbnN0IHsgcnVuLCBhYm9ydCB9ID0gc2VhcmNoZXIoc3RhdGUucXVlcnksIHByZXZTb3VyY2UsIGZhbHNlKTtcbiAgICAvLyDliY3lm57jga7mpJzntKLjgYzntYLjgo/jgovjgb7jgaflvoXjgaPjgabjgYvjgonmlrDjgZfjgYTmpJzntKLjgpLlrp/ooYzjgZnjgotcbiAgICBjb25zdCBkb25lID0gcHJldkpvYi5kb25lLnRoZW4ocnVuKTtcbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlOiBhY3Rpb24uc291cmNlLFxuICAgICAgam9iOiB7XG4gICAgICAgIGRvbmUsXG4gICAgICAgIGFib3J0OiAoKSA9PlxuICAgICAgICAgIC8vIOWJjeWbnuOBruaknOe0ouOCkuS4reaWreOBl+OBpuOBi+OCieOAgeS7iuWbnuOBruaknOe0ouOCkuS4reaWreOBmeOCi1xuICAgICAgICAgIHByZXZKb2IuYWJvcnQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGFib3J0KCk7XG4gICAgICAgICAgICByZXR1cm4gZG9uZTtcbiAgICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgICAuLi5yZXN0LFxuICAgIH07XG4gIH1cbiAgLy8g5qSc57Si5Lit44Gn44Gq44GE44Go44GN44Gr5p2l44Gf5qSc57Si57WQ5p6c44Gv54Sh6KaW44GZ44KLXG4gIGlmICghaXNTZWFyY2hpbmcoc3RhdGUpKSByZXR1cm4gc3RhdGU7XG5cbiAgaWYgKCFhY3Rpb24uY2FuZGlkYXRlcykge1xuICAgIGNvbnN0IHsgcHJvZ3Jlc3M6IHByZXZQcm9ncmVzcywgLi4ucmVzdCB9ID0gc3RhdGU7XG4gICAgcmV0dXJuIHByZXZQcm9ncmVzcyA9PT0gYWN0aW9uLnByb2dyZXNzXG4gICAgICA/IHN0YXRlXG4gICAgICA6IHsgcHJvZ3Jlc3M6IGFjdGlvbi5wcm9ncmVzcywgLi4ucmVzdCB9O1xuICB9XG5cbiAgY29uc3QgeyBjYW5kaWRhdGVzOiBwcmV2Q2FuZGlkYXRlcywgcHJvZ3Jlc3M6IHByZXZQcm9ncmVzcywgLi4ucmVzdCB9ID0gc3RhdGU7XG5cbiAgcmV0dXJuIHByZXZDYW5kaWRhdGVzID09PSBhY3Rpb24uY2FuZGlkYXRlcyAmJlxuICAgICAgcHJldlByb2dyZXNzID09PSBhY3Rpb24ucHJvZ3Jlc3NcbiAgICA/IHN0YXRlXG4gICAgOiB7XG4gICAgICBjYW5kaWRhdGVzOiBhY3Rpb24uY2FuZGlkYXRlcyA/PyBwcmV2Q2FuZGlkYXRlcyxcbiAgICAgIHByb2dyZXNzOiBhY3Rpb24ucHJvZ3Jlc3MsXG4gICAgICAuLi5yZXN0LFxuICAgIH07XG59O1xuXG4vKiog5qSc57Si57WQ5p6c44KS5Lim44G55pu/44GI44CBcHJvamVjdOOBlOOBqOOBq+OCueOCs+OCouODquODs+OCsOOBmeOCi1xuICpcbiAqIEBwYXJhbSBjYW5kaWRhdGVzIOaknOe0oue1kOaenFxuICogQHJldHVybnMgcHJvamVjdOOBlOOBqOOBruOCueOCs+OCouOBqOOAgeS4puOBs+abv+OBiOOBn+aknOe0oue1kOaenFxuICovXG5jb25zdCBzb3J0QW5kU2NvcmluZyA9IChcbiAgY2FuZGlkYXRlczogKENhbmRpZGF0ZSAmIE1hdGNoSW5mbylbXSxcbik6IFtNYXA8c3RyaW5nLCBudW1iZXI+LCBJdGVtW11dID0+IHtcbiAgY29uc3QgcHJvamVjdFNjb3JlID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgY29uc3QgaXRlbXM6IEl0ZW1bXSA9IFtdO1xuICBmb3IgKGNvbnN0IHBhZ2Ugb2YgY2FuZGlkYXRlcy5zb3J0KGNvbXBhcmVBc2UpKSB7XG4gICAgY29uc3QgcHJvamVjdHMgPSBwYWdlLm1ldGFkYXRhLm1hcCgoeyBwcm9qZWN0IH0pID0+IHByb2plY3QpO1xuXG4gICAgLy8gc2NvcmXoqIjnrpdcbiAgICAvLyDjgZPjga7lgKTjgafjgIFwcm9qZWN057We44KK6L6844G/44OR44ON44Or44Gn44Gu5Lim44Gz6aCG44KS5rG644KB44KLXG4gICAgZm9yIChjb25zdCBwcm9qZWN0IG9mIHByb2plY3RzKSB7XG4gICAgICBwcm9qZWN0U2NvcmUuc2V0KFxuICAgICAgICBwcm9qZWN0LFxuICAgICAgICAocHJvamVjdFNjb3JlLmdldChwcm9qZWN0KSA/PyAwKSArIDAuNSAqKiBwYWdlLmRpc3QsXG4gICAgICApO1xuICAgIH1cblxuICAgIGl0ZW1zLnB1c2goe1xuICAgICAgdGl0bGU6IHBhZ2UudGl0bGUsXG4gICAgICBkaXN0OiBwYWdlLmRpc3QsXG4gICAgICBwcm9qZWN0cyxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBbcHJvamVjdFNjb3JlLCBpdGVtc107XG59O1xuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5cbi8qKiBSZWFjdOOBruWkluOBq+WApOOCkuWFrOmWi+OBmeOCi2hvb2tzICovXG5leHBvcnQgY29uc3QgdXNlRXhwb3J0cyA9IDxcbiAgRXhwb3J0TmFtZXMgZXh0ZW5kcyBzdHJpbmcsXG4gIEV4cG9ydE9iamVjdCBleHRlbmRzIFJlY29yZDxFeHBvcnROYW1lcywgdW5rbm93bj4sXG4+KFxuICBleHBvcnRlcjogKFxuICAgIGV4cG9ydE9iamVjdDogRXhwb3J0T2JqZWN0IHwgUmVjb3JkPEV4cG9ydE5hbWVzLCB1bmRlZmluZWQ+LFxuICApID0+IHZvaWQsXG4gIGV4cG9ydE9iamVjdDogRXhwb3J0T2JqZWN0LFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxFeHBvcnRPYmplY3Q+KHsgLi4uZXhwb3J0T2JqZWN0IH0pO1xuICB1c2VFZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgT2JqZWN0LmFzc2lnbihyZWYuY3VycmVudCwgZXhwb3J0T2JqZWN0KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGV4cG9ydE9iamVjdCkpIHtcbiAgICAgICAgICBkZWxldGUgcmVmLmN1cnJlbnRba2V5IGFzIEV4cG9ydE5hbWVzXTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LFxuICAgIFsuLi5PYmplY3Qua2V5cyhleHBvcnRPYmplY3QpXS5zb3J0KCkubWFwKChrZXkpID0+XG4gICAgICBleHBvcnRPYmplY3Rba2V5IGFzIEV4cG9ydE5hbWVzXVxuICAgICksXG4gICk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZXhwb3J0ZXIocmVmLmN1cnJlbnQpO1xuICB9LCBbZXhwb3J0ZXJdKTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuLyoqIEBqc3hGcmFnIEZyYWdtZW50ICovXG5cbmltcG9ydCB7IEZyYWdtZW50LCBoLCB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IENvbXBsZXRpb24sIE9wZXJhdG9ycyBhcyBPcGVyYXRvcnNCYXNlIH0gZnJvbSBcIi4vQ29tcGxldGlvbi50c3hcIjtcbmltcG9ydCB7IHVzZVNvdXJjZSB9IGZyb20gXCIuL3VzZVNvdXJjZS50c1wiO1xuaW1wb3J0IHsgVXNlckNTUyB9IGZyb20gXCIuL1VzZXJDU1MudHN4XCI7XG5pbXBvcnQgeyBTZWxlY3RJbml0IH0gZnJvbSBcIi4vdXNlU2VsZWN0LnRzXCI7XG5pbXBvcnQgeyBDU1MgfSBmcm9tIFwiLi9DU1MudHN4XCI7XG5pbXBvcnQgeyB1c2VMaWZlY3ljbGUgfSBmcm9tIFwiLi91c2VMaWZlY3ljbGUudHNcIjtcbmltcG9ydCB7IHVzZVNlYXJjaCB9IGZyb20gXCIuL3VzZVNlYXJjaC50c1wiO1xuaW1wb3J0IHsgdXNlRXhwb3J0cyB9IGZyb20gXCIuL3VzZUV4cG9ydHMudHNcIjtcblxuLyoqIOWklumDqOmWi+aUvueUqEFQSSAqL1xuZXhwb3J0IGludGVyZmFjZSBPcGVyYXRvcnMge1xuICAvKiog5qyh5YCZ6KOc44KS6YG45oqe44GZ44KLXG4gICAqXG4gICAqIEByZXR1cm4g6KOc5a6M5YCZ6KOc44GM44Gq44GR44KM44GwYGZhbHNlYFxuICAgKi9cbiAgc2VsZWN0TmV4dDogKGluaXQ/OiBTZWxlY3RJbml0KSA9PiBib29sZWFuO1xuXG4gIC8qKiDliY3lgJnoo5zjgpLpgbjmip7jgZnjgotcbiAgICpcbiAgICogQHJldHVybiDoo5zlrozlgJnoo5zjgYzjgarjgZHjgozjgbBgZmFsc2VgXG4gICAqL1xuICBzZWxlY3RQcmV2OiAoaW5pdD86IFNlbGVjdEluaXQpID0+IGJvb2xlYW47XG5cbiAgLyoqIOacgOWIneOBruWAmeijnOOCkumBuOaKnuOBmeOCi1xuICAgKlxuICAgKiBAcmV0dXJuIOijnOWujOWAmeijnOOBjOOBquOBkeOCjOOBsGBmYWxzZWBcbiAgICovXG4gIHNlbGVjdEZpcnN0OiAoKSA9PiBib29sZWFuO1xuXG4gIC8qKiDmnIDlvozjga7lgJnoo5zjgpLpgbjmip7jgZnjgotcbiAgICpcbiAgICogQHJldHVybiDoo5zlrozlgJnoo5zjgYzjgarjgZHjgozjgbBgZmFsc2VgXG4gICAqL1xuICBzZWxlY3RMYXN0OiAoKSA9PiBib29sZWFuO1xuXG4gIC8qKiDnj77lnKjpgbjmip7jgZfjgabjgYTjgovlgJnoo5zjgafoo5zlrozjgpLlrp/ooYzjgZnjgotcbiAgICpcbiAgICogQHJldHVybiDoo5zlrozjgpLlrp/ooYzjgZfjgarjgYvjgaPjgZ/jgolgZmFsc2VgXG4gICAqL1xuICBjb25maXJtOiAoKSA9PiBib29sZWFuO1xuXG4gIC8qKiDkuIDmmYLnmoTjgavoo5zlrozjgpLkuK3mlq3jgZnjgotcbiAgICpcbiAgICog5LiA5pem6KOc5a6M5p2h5Lu244GL44KJ5oqc44GR44KL44G+44Gn6KOc5a6M44KS5a6f6KGM44GX44Gq44GEXG4gICAqXG4gICAqIEByZXR1cm4g6KOc5a6M44GM6ZaL5aeL44GV44KM44Gm44GE44Gq44GR44KM44GwYGZhbHNlYFxuICAgKi9cbiAgY2FuY2VsOiAoKSA9PiBib29sZWFuO1xuXG4gIC8qKiDjgZPjga5Vc2VyU2NyaXB044KS5pyJ5Yq55YyW44GZ44KLXG4gICAqXG4gICAqIGRlZmF1bHTjgafmnInlirlcbiAgICovXG4gIGVuYWJsZTogKCkgPT4gdm9pZDtcblxuICAvKiog44GT44GuVXNlclNjcmlwdOOCkueEoeWKueWMluOBmeOCiyAqL1xuICBkaXNhYmxlOiAoKSA9PiB2b2lkO1xufVxuXG4vKiog5aSW6YOo6ZaL5pS+55SoQVBJ44Gu5Yid5pyf5YCkICovXG5leHBvcnQgY29uc3Qgb3BJbml0OiBPcGVyYXRvcnNCYXNlID0ge1xuICBzZWxlY3ROZXh0OiAoKSA9PiBmYWxzZSxcbiAgc2VsZWN0UHJldjogKCkgPT4gZmFsc2UsXG4gIHNlbGVjdEZpcnN0OiAoKSA9PiBmYWxzZSxcbiAgc2VsZWN0TGFzdDogKCkgPT4gZmFsc2UsXG4gIGNvbmZpcm06ICgpID0+IGZhbHNlLFxuICBjYW5jZWw6ICgpID0+IGZhbHNlLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGludGVyZmFjZSBBcHBQcm9wcyB7XG4gIC8qKiDooajnpLrjgZnjgovmnIDlpKflgJnoo5zmlbAgKi9cbiAgbGltaXQ6IG51bWJlcjtcbiAgY2FsbGJhY2s6IChvcGVyYXRvcnM6IE9wZXJhdG9ycyB8IFJlY29yZDxrZXlvZiBPcGVyYXRvcnMsIHVuZGVmaW5lZD4pID0+IHZvaWQ7XG4gIHByb2plY3RzOiBTZXQ8c3RyaW5nPjtcbiAgbWFyazogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgVVJMPjtcbiAgc3R5bGU6IHN0cmluZyB8IFVSTDtcbiAgZW5hYmxlU2VsZlByb2plY3RPblN0YXJ0OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgQXBwID0gKHByb3BzOiBBcHBQcm9wcykgPT4ge1xuICBjb25zdCBzb3VyY2UgPSB1c2VTb3VyY2UocHJvcHMucHJvamVjdHMpO1xuICBjb25zdCBbc2VhcmNoUmVzdWx0LCB7IHVwZGF0ZSwgc2VhcmNoIH1dID0gdXNlU2VhcmNoKHNvdXJjZSk7XG4gIGNvbnN0IHsgc3RhdGUsIHNldEVuYWJsZSwgLi4ub3BzIH0gPSB1c2VMaWZlY3ljbGUoKTtcblxuICB1cGRhdGUoc291cmNlKTtcbiAgc2VhcmNoKFxuICAgIHN0YXRlLnR5cGUgPT09IFwiY29tcGxldGlvblwiXG4gICAgICA/IHN0YXRlLmNvbnRleHQgPT09IFwiaW5wdXRcIiA/IHN0YXRlLnF1ZXJ5LnNsaWNlKDEsIC0xKSA6IHN0YXRlLnF1ZXJ5XG4gICAgICA6IFwiXCIsXG4gICk7XG5cbiAgLy8gQVBJ5o+Q5L6bXG4gIGNvbnN0IFtvcGVyYXRvcnMsIHNldE9wZXJhdG9yc10gPSB1c2VTdGF0ZTxPcGVyYXRvcnNCYXNlIHwgdW5kZWZpbmVkPigpO1xuICBjb25zdCB7IGNhbGxiYWNrLCBzdHlsZSwgLi4ub3B0aW9ucyB9ID0gcHJvcHM7XG4gIHVzZUV4cG9ydHMoY2FsbGJhY2ssIHtcbiAgICBlbmFibGU6IHVzZUNhbGxiYWNrKCgpID0+IHNldEVuYWJsZSh0cnVlKSwgW10pLFxuICAgIGRpc2FibGU6IHVzZUNhbGxiYWNrKCgpID0+IHNldEVuYWJsZShmYWxzZSksIFtdKSxcbiAgICAuLi4oKHN0YXRlLnR5cGUgIT09IFwiY29tcGxldGlvblwiKSB8fCAhb3BlcmF0b3JzID8gb3BJbml0IDogb3BlcmF0b3JzKSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPENTUyAvPlxuICAgICAgPFVzZXJDU1Mgc3R5bGU9e3N0eWxlfSAvPlxuICAgICAge3N0YXRlLnR5cGUgPT09IFwiY29tcGxldGlvblwiICYmIHNlYXJjaFJlc3VsdCAmJlxuICAgICAgICAoXG4gICAgICAgICAgPENvbXBsZXRpb25cbiAgICAgICAgICAgIGNhbGxiYWNrPXtzZXRPcGVyYXRvcnN9XG4gICAgICAgICAgICB7Li4uc2VhcmNoUmVzdWx0fVxuICAgICAgICAgICAgey4uLnN0YXRlfVxuICAgICAgICAgICAgey4uLm9wc31cbiAgICAgICAgICAgIHsuLi5vcHRpb25zfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuIiwgIi8qKiBAanN4IGggKi9cblxuaW1wb3J0IHsgaCwgcmVuZGVyIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBTZWxlY3RJbml0IH0gZnJvbSBcIi4vdXNlU2VsZWN0LnRzXCI7XG5pbXBvcnQgeyBBcHAsIE9wZXJhdG9ycyB9IGZyb20gXCIuL0FwcC50c3hcIjtcbmltcG9ydCB7IFNjcmFwYm94IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuZXhwb3J0IHR5cGUgeyBPcGVyYXRvcnMsIFNlbGVjdEluaXQgfTtcbmltcG9ydCB7IHNldERlYnVnTW9kZSB9IGZyb20gXCIuL2RlcHMvZGVidWcudHNcIjtcbmltcG9ydCB7IHNldERlYnVnTW9kZSBhcyBzZXRTdG9yYWdlRGVidWdNb2RlIH0gZnJvbSBcIi4vZGVwcy9zdG9yYWdlLnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuZXhwb3J0IGludGVyZmFjZSBTZXR1cEluaXQge1xuICAvKiog6KGo56S644GZ44KL5pyA5aSn5YCZ6KOc5pWwXG4gICAqXG4gICAqIEBkZWZhdWx0IDVcbiAgICovXG4gIGxpbWl0PzogbnVtYmVyO1xuXG4gIC8qKiBgdHJ1ZWAg44GnZGVidWcgbW9kZeOBq+OBquOCi1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGVidWc/OiBib29sZWFuO1xuXG4gIC8qKiDoo5zlrozjgr3jg7zjgrnjgavlkKvjgoHjgotwcm9qZWN0IG5hbWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbc2NyYXBib3guUHJvamVjdC5uYW1lXWBcbiAgICpcbiAgICogYGVuYWJsZVNlbGZQcm9qZWN0T25TdGFydGDjgpJgdHJ1ZWDjgavjgZnjgovjgajjgIHoh6rli5Xjgadgc2NyYXBib3guUHJvamVjdC5uYW1lYOOBjOi/veWKoOOBleOCjOOCi1xuICAgKi9cbiAgcHJvamVjdHM/OiBJdGVyYWJsZTxzdHJpbmc+O1xuXG4gIC8qKiDlgJnoo5zjga7jgr3jg7zjgrnlhYPjga7orZjliKXlrZDjgavkvb/jgYbmloflrZfliJfjgoLjgZfjgY/jga/jgqLjgqTjgrPjg7Pjga5VUkxcbiAgICpcbiAgICogZGVmYXVsdOOBoOOBqOOAgXByb2plY3QgbmFtZeOBrumgreaWh+Wtl+OBjOihqOekuuOBleOCjOOCi1xuICAgKi9cbiAgbWFyaz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IFVSTD47XG5cbiAgLyoqIOOCq+OCueOCv+ODoENTU1xuICAgKlxuICAgKiBVUkwgb3IgVVJM5paH5a2X5YiX44Gu5aC05ZCI44Gv44CBQ1NT44OV44Kh44Kk44Or44G444GuVVJM44Gg44Go44G/44Gq44GX44GmPGxpbmsgLz7jgafoqq3jgb/ovrzjgoBcbiAgICog44Gd44KM5Lul5aSW44Gu5aC05ZCI44Gv44CB44Kk44Oz44Op44Kk44OzQ1NT44Go44GX44GmPHN0eWxlIC8+44Gn6Kqt44G/6L6844KAXG4gICAqL1xuICBzdHlsZT86IFVSTCB8IHN0cmluZztcblxuICAvKiogc2NyaXB044KS5a6f6KGM44GX44Gm44GE44KLcHJvamVjdOOBruOCveODvOOCueOCkuOAgeioreWumuOBq+mWouOCj+OCieOBmueEoeadoeS7tuOBp+acieWKueOBq+OBmeOCi+OBi+OBqeOBhuOBi1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlICjjgr3jg7zjgrnjgavlkKvjgoHjgospXG4gICAqL1xuICBlbmFibGVTZWxmUHJvamVjdE9uU3RhcnQ/OiBib29sZWFuO1xufVxuXG4vKiogc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb27jgpLotbfli5XjgZnjgotcbiAqXG4gKiBAcGFyYW0gaW5pdCDliJ3mnJ/oqK3lrppcbiAqIEByZXR1cm4g44GT44GuVXNlclNjcmlwdOOBruaTjeS9nOWHveaVsOOBp+ino+axuuOBleOCjOOCi1Byb21pc2VcbiAqL1xuZXhwb3J0IGNvbnN0IHNldHVwID0gKFxuICBpbml0PzogU2V0dXBJbml0LFxuKTogUHJvbWlzZTxPcGVyYXRvcnMgfCBSZWNvcmQ8a2V5b2YgT3BlcmF0b3JzLCB1bmRlZmluZWQ+PiA9PiB7XG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGFwcC5kYXRhc2V0LnVzZXJzY3JpcHROYW1lID0gXCJzY3JhcGJveC1zZWxlY3Qtc3VnZ2VzdGlvblwiO1xuICBjb25zdCBzaGFkb3dSb290ID0gYXBwLmF0dGFjaFNoYWRvdyh7IG1vZGU6IFwib3BlblwiIH0pO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZChhcHApO1xuXG4gIGNvbnN0IHtcbiAgICBsaW1pdCA9IDUsXG4gICAgZGVidWcgPSBmYWxzZSxcbiAgICBtYXJrID0ge30sXG4gICAgc3R5bGUgPSBcIlwiLFxuICAgIGVuYWJsZVNlbGZQcm9qZWN0T25TdGFydCA9IHRydWUsXG4gIH0gPSBpbml0ID8/IHt9O1xuICBjb25zdCBwcm9qZWN0cyA9IG5ldyBTZXQoW1xuICAgIC4uLihlbmFibGVTZWxmUHJvamVjdE9uU3RhcnQgPyBbc2NyYXBib3guUHJvamVjdC5uYW1lXSA6IFtdKSxcbiAgICAuLi4oaW5pdD8ucHJvamVjdHMgPz8gW3NjcmFwYm94LlByb2plY3QubmFtZV0pLFxuICBdKTtcblxuICBzZXREZWJ1Z01vZGUoZGVidWcpO1xuICBzZXRTdG9yYWdlRGVidWdNb2RlKGRlYnVnKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKFxuICAgIChyZXNvbHZlKSA9PlxuICAgICAgcmVuZGVyKFxuICAgICAgICA8QXBwXG4gICAgICAgICAgbGltaXQ9e2xpbWl0fVxuICAgICAgICAgIHByb2plY3RzPXtwcm9qZWN0c31cbiAgICAgICAgICBtYXJrPXttYXJrfVxuICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICBjYWxsYmFjaz17cmVzb2x2ZX1cbiAgICAgICAgICBlbmFibGVTZWxmUHJvamVjdE9uU3RhcnQ9e2VuYWJsZVNlbGZQcm9qZWN0T25TdGFydH1cbiAgICAgICAgLz4sXG4gICAgICAgIHNoYWRvd1Jvb3QsXG4gICAgICApLFxuICApO1xufTtcbiIsICJleHBvcnQgdHlwZSBCbG9ja3M8TGluZSBleHRlbmRzIHsgaWQ6IHN0cmluZzsgdGV4dDogc3RyaW5nIH0+ID1cbiAgcmVhZG9ubHkgTGluZVtdW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZUJsb2NrPExpbmUgZXh0ZW5kcyB7IGlkOiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9PiB7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG4gIGJsb2NrczogQmxvY2tzPExpbmU+O1xufVxuXG5leHBvcnQgY29uc3QgY29udGVudCA9IDxMaW5lIGV4dGVuZHMgeyBpZDogc3RyaW5nOyB0ZXh0OiBzdHJpbmcgfT4oXG4gIGJsb2NrczogQmxvY2tzPExpbmU+LFxuKTogc3RyaW5nID0+XG4gIGJsb2Nrcy5mbGF0TWFwKFxuICAgIChibG9jaykgPT4ge1xuICAgICAgY29uc3QgbGluZXMgPSBibG9jay5zbGljZSgxKTtcbiAgICAgIGNvbnN0IGluZGVudCA9IE1hdGgubWluKFxuICAgICAgICAuLi5saW5lcy5tYXAoKGxpbmUpID0+IGxpbmUudGV4dC5sZW5ndGggLSBsaW5lLnRleHQudHJpbVN0YXJ0KCkubGVuZ3RoKSxcbiAgICAgICk7XG4gICAgICByZXR1cm4gbGluZXMubWFwKChsaW5lKSA9PiBsaW5lLnRleHQuc2xpY2UoaW5kZW50KSk7XG4gICAgfSxcbiAgKS5qb2luKFwiXFxuXCIpLnRyaW0oKTtcbiIsICJpbXBvcnQgeyBCbG9ja3MsIENvZGVCbG9jaywgY29udGVudCB9IGZyb20gXCIuL2NvZGVCbG9jay50c1wiO1xuaW1wb3J0IHsgQmFzZUxpbmUgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlmZiB7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG4gIGNoYW5nZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogZGlmZjxcbiAgTGluZTEgZXh0ZW5kcyBCYXNlTGluZSxcbiAgTGluZTIgZXh0ZW5kcyBCYXNlTGluZSxcbiAgQmxvY2sxIGV4dGVuZHMgQ29kZUJsb2NrPExpbmUxPixcbj4oXG4gIG9sZE1hcDogTWFwPHN0cmluZywgQmxvY2sxPixcbiAgbmV3TWFwOiBNYXA8c3RyaW5nLCBCbG9ja3M8TGluZTI+Pixcbik6IEdlbmVyYXRvcjxEaWZmPiB7XG4gIGZvciAoY29uc3QgW2ZpbGVuYW1lLCBibG9ja3NdIG9mIG5ld01hcC5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBvbGRDb2RlID0gb2xkTWFwLmdldChmaWxlbmFtZSk7XG4gICAgaWYgKG9sZENvZGUgJiYgY29udGVudChvbGRDb2RlLmJsb2NrcykgPT09IGNvbnRlbnQoYmxvY2tzKSkge1xuICAgICAgeWllbGQgeyBjaGFuZ2VkOiBmYWxzZSwgZmlsZW5hbWUgfTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB5aWVsZCB7IGNoYW5nZWQ6IHRydWUsIGZpbGVuYW1lIH07XG4gIH1cbiAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBvbGRNYXAua2V5cygpKSB7XG4gICAgaWYgKG5ld01hcC5oYXMoZmlsZW5hbWUpKSBjb250aW51ZTtcbiAgICB5aWVsZCB7IGNoYW5nZWQ6IHRydWUsIGZpbGVuYW1lIH07XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtcGFyc2VyLnRzXCI7XG5pbXBvcnQgeyBCbG9ja3MgfSBmcm9tIFwiLi9jb2RlQmxvY2sudHNcIjtcblxuZXhwb3J0IGNvbnN0IHJlYWRDb2RlQmxvY2tzID0gPExpbmUgZXh0ZW5kcyB7IGlkOiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9PihcbiAgbGluZXM6IHJlYWRvbmx5IExpbmVbXSxcbik6IE1hcDxzdHJpbmcsIEJsb2NrczxMaW5lPj4gPT4ge1xuICBjb25zdCBjb2RlQmxvY2tzID0gbmV3IE1hcDxzdHJpbmcsIExpbmVbXVtdPigpO1xuICBpZiAobGluZXMubGVuZ3RoID09PSAwKSByZXR1cm4gY29kZUJsb2NrcztcbiAgY29uc3QgcGFja3MgPSBwYXJzZShcbiAgICBsaW5lcy5tYXAoKGxpbmUpID0+IGxpbmUudGV4dCkuam9pbihcIlxcblwiKSxcbiAgICB7IGhhc1RpdGxlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqIOePvuWcqOiqreOCk+OBp+OBhOOCi2BwYWNrLnJvd3Ng44Gu6KGM55Wq5Y+3ICovXG4gIGxldCBjb3VudGVyID0gMDtcblxuICBmb3IgKGNvbnN0IGJsb2NrIG9mIHBhY2tzKSB7XG4gICAgc3dpdGNoIChibG9jay50eXBlKSB7XG4gICAgICBjYXNlIFwidGl0bGVcIjpcbiAgICAgIGNhc2UgXCJsaW5lXCI6XG4gICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidGFibGVcIjpcbiAgICAgICAgY291bnRlciArPSBibG9jay5jZWxscy5sZW5ndGggKyAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJjb2RlQmxvY2tcIjoge1xuICAgICAgICBjb25zdCBibG9ja3MgPSBjb2RlQmxvY2tzLmdldChibG9jay5maWxlTmFtZSkgPz9cbiAgICAgICAgICBbXTtcbiAgICAgICAgY29uc3QgbGluZUNvdW50ID0gYmxvY2suY29udGVudC5zcGxpdChcIlxcblwiKS5sZW5ndGggKyAxO1xuICAgICAgICBibG9ja3MucHVzaChsaW5lcy5zbGljZShjb3VudGVyLCBjb3VudGVyICsgbGluZUNvdW50KSk7XG4gICAgICAgIGNvZGVCbG9ja3Muc2V0KGJsb2NrLmZpbGVOYW1lLCBibG9ja3MpO1xuICAgICAgICBjb3VudGVyICs9IGxpbmVDb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjb2RlQmxvY2tzO1xufTtcbiIsICJleHBvcnQgdHlwZSBSZXN1bHQ8VCwgRSA9IHVua25vd24+ID0geyB0eXBlOiBcInJlc29sdmVcIjsgdmFsdWU6IFQgfSB8IHtcbiAgdHlwZTogXCJyZWplY3RcIjtcbiAgdmFsdWU6IEU7XG59IHwgeyB0eXBlOiBcImNhbmNlbFwiIH07XG5leHBvcnQgY29uc3QgZGVib3VuY2UgPSA8QXJncyBleHRlbmRzIHVua25vd25bXSwgVD4oXG4gIGZ1bmM6ICguLi5hcmdzOiBBcmdzKSA9PiBQcm9taXNlPFQ+LFxuKTogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2U8UmVzdWx0PFQ+PiA9PiB7XG4gIGxldCBqb2I6IFtcbiAgICBBcmdzLFxuICAgICh2YWx1ZTogUmVzdWx0PFQ+IHwgUHJvbWlzZUxpa2U8UmVzdWx0PFQ+PikgPT4gdm9pZCxcbiAgXSB8IHVuZGVmaW5lZDtcbiAgbGV0IHJ1bm5pbmc6IFByb21pc2U8dm9pZD4gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3QgcnVuID0gYXN5bmMgKCkgPT4ge1xuICAgIHdoaWxlIChqb2IpIHtcbiAgICAgIGNvbnN0IFthcmdzLCByZXNvbHZlXSA9IGpvYjtcbiAgICAgIGpvYiA9IHVuZGVmaW5lZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZ1bmMoLi4uYXJncyk7XG4gICAgICAgIHJlc29sdmUoeyB0eXBlOiBcInJlc29sdmVcIiwgdmFsdWU6IHJlc3VsdCB9KTtcbiAgICAgIH0gY2F0Y2ggKHZhbHVlKSB7XG4gICAgICAgIHJlc29sdmUoeyB0eXBlOiBcInJlamVjdFwiLCB2YWx1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcnVubmluZyA9IHVuZGVmaW5lZDtcbiAgfTtcbiAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgY29uc3QgeyByZXNvbHZlLCBwcm9taXNlIH0gPSBQcm9taXNlLndpdGhSZXNvbHZlcnM8UmVzdWx0PFQ+PigpO1xuICAgIGpvYj8uWzFdPy4oeyB0eXBlOiBcImNhbmNlbFwiIH0pO1xuICAgIGpvYiA9IFthcmdzLCByZXNvbHZlXTtcbiAgICBydW5uaW5nID8/PSBydW4oKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfTtcbn07XG4iLCAiaW1wb3J0IHsgQmFzZUxpbmUgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyBCbG9ja3MsIENvZGVCbG9jaywgY29udGVudCB9IGZyb20gXCIuL2NvZGVCbG9jay50c1wiO1xuaW1wb3J0IHsgUHJldmlldyB9IGZyb20gXCIuL3ByZXZpZXcudHNcIjtcbmltcG9ydCB7IGdldExpbmVET00gfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LXN0ZC1icm93c2VyLnRzXCI7XG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gXCIuL2RlYm91bmNlLnRzXCI7XG5pbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi9kZWJvdW5jZS50c1wiO1xuXG5leHBvcnQgY2xhc3MgVmlld2VyPExpbmUgZXh0ZW5kcyBCYXNlTGluZT4gaW1wbGVtZW50cyBDb2RlQmxvY2s8TGluZT4ge1xuICBnZXQgZmlsZW5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZW5hbWU7XG4gIH1cbiAgZ2V0IGJsb2NrcygpOiBCbG9ja3M8TGluZT4ge1xuICAgIHJldHVybiB0aGlzLl9ibG9ja3MgPz8gW107XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9maWxlbmFtZTogc3RyaW5nLFxuICAgIHByZXZpZXc6IFByZXZpZXcsXG4gICkge1xuICAgIHRoaXMuX3ByZXZpZXcgPSBkZWJvdW5jZShhc3luYyAoYmVmb3JlLCBhZnRlciwgYXJlYSkgPT4ge1xuICAgICAgLy8gcHJldmlld2Vy44Gu5a6f6KGMXG4gICAgICB0aGlzLl9kaXNwb3NlID0gYXdhaXQgcHJldmlldyhcbiAgICAgICAgYXJlYVxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgZmlsZW5hbWU6IHRoaXMuZmlsZW5hbWUsXG4gICAgICAgICAgICBiZWZvcmUsXG4gICAgICAgICAgICBhZnRlcixcbiAgICAgICAgICAgIHJlbmRlcjogKC4uLmVsZW1lbnRzOiBOb2RlW10pID0+IHtcbiAgICAgICAgICAgICAgYXJlYS50ZXh0Q29udGVudCA9IFwiXCI7XG4gICAgICAgICAgICAgIGFyZWEuYXBwZW5kKC4uLmVsZW1lbnRzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICAgIDogeyBmaWxlbmFtZTogdGhpcy5maWxlbmFtZSwgYmVmb3JlIH0sXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlKGFmdGVyPzogQmxvY2tzPExpbmU+KTogUHJvbWlzZTxSZXN1bHQ8Ym9vbGVhbj4+IHtcbiAgICBhd2FpdCB0aGlzLl9kaXNwb3NlPy4oKTtcbiAgICBpZiAoIWFmdGVyIHx8IGNvbnRlbnQoYWZ0ZXIpID09PSBcIlwiKSB7XG4gICAgICAvLyDjgrPjg7zjg4njg5bjg63jg4Pjgq/jgYzliYrpmaTjgZXjgozjgZ/jgajjgY3jga7lh6bnkIZcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuX3ByZXZpZXcodGhpcy5ibG9ja3MpO1xuICAgICAgaWYgKHJlc3VsdC50eXBlID09PSBcImNhbmNlbFwiKSByZXR1cm4gcmVzdWx0O1xuICAgICAgaWYgKHJlc3VsdC50eXBlID09PSBcInJlamVjdFwiKSB0aHJvdyByZXN1bHQudmFsdWU7XG4gICAgICB0aGlzLl9hcmVhPy5yZW1vdmU/LigpO1xuICAgICAgdGhpcy5fc3R5bGU/LnJlbW92ZT8uKCk7XG4gICAgICB0aGlzLl9hcmVhID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fc3R5bGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9ibG9ja3MgPSB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiBcInJlc29sdmVcIiwgdmFsdWU6IHRydWUgfTtcbiAgICB9XG4gICAgY29uc3QgYmVmb3JlID0gdGhpcy5ibG9ja3M7XG4gICAgdGhpcy5fYmxvY2tzID0gYWZ0ZXI7XG5cbiAgICAvLyDmj4/nlLvpoJjln5/jga7mp4vnr4lcbiAgICB0aGlzLm1ha2VTdHlsZSgpO1xuICAgIGNvbnN0IGFyZWEgPSB0aGlzLm1ha2VBcmVhKCk7XG5cbiAgICAvLyDmjL/lhaXkvY3nva7jga7nibnlrprjgajmjL/lhaVcbiAgICBjb25zdCBpZCA9IGFmdGVyLmF0KDApPy5hdD8uKC0xKT8uaWQ7XG4gICAgY29uc3QgbGluZURPTSA9IGdldExpbmVET00oaWQpO1xuICAgIGlmICghbGluZURPTSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBcImRpdi5saW5lcyNMJHtpZH1cIiBjb3VsZCBub3QgYmUgZm91bmQuYCk7XG4gICAgfVxuICAgIGxpbmVET00uaW5zZXJ0QWRqYWNlbnRFbGVtZW50KFwiYWZ0ZXJlbmRcIiwgYXJlYSk7XG5cbiAgICAvLyDjgqTjg7Pjg4fjg7Pjg4jjgpLliY3jga7ooYzjgavov73pmo/jgZXjgZvjgotcbiAgICBjb25zdCBmaXhNYXJnaW4gPSAoKSA9PiB7XG4gICAgICBjb25zdCBpbmRlbnQgPSBsaW5lRE9NLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJpbmRlbnRcIilbMF07XG4gICAgICBpZiAoIShpbmRlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHJldHVybjtcbiAgICAgIGFyZWEuc3R5bGUubWFyZ2luTGVmdCA9IGluZGVudC5zdHlsZS5tYXJnaW5MZWZ0O1xuICAgIH07XG4gICAgdGhpcy5fb2JzZXJ2ZXI/LmRpc2Nvbm5lY3Q/LigpO1xuICAgIGZpeE1hcmdpbigpO1xuICAgIHRoaXMuX29ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZml4TWFyZ2luKTtcbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKGxpbmVET00sIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuX3ByZXZpZXcoYmVmb3JlLCBhZnRlciwgYXJlYSk7XG4gIH1cblxuICAvKiogcHJldmlld+OBruihqOekuumgmOWfn+OCkuS9nOaIkOOBmeOCiyAqL1xuICBwcml2YXRlIG1ha2VBcmVhKCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICBpZiAodGhpcy5fYXJlYSkgcmV0dXJuIHRoaXMuX2FyZWE7XG4gICAgY29uc3QgYXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgYXJlYS5jbGFzc0xpc3QuYWRkKFwic2NyYXAtcnVuXCIpO1xuICAgIGFyZWEuZGF0YXNldC5maWxlbmFtZSA9IHRoaXMuZmlsZW5hbWU7XG4gICAgdGhpcy5fYXJlYSA9IGFyZWE7XG4gICAgcmV0dXJuIGFyZWE7XG4gIH1cblxuICBwcml2YXRlIG1ha2VTdHlsZSgpOiB2b2lkIHtcbiAgICBjb25zdCBib2R5SWRzID0gdGhpcy5ibG9ja3MuZmxhdE1hcCgobGluZXMpID0+XG4gICAgICBsaW5lcy5zbGljZSgxKS5tYXAoKHsgaWQgfSkgPT4gYCNMJHtpZH1gKVxuICAgICk7XG4gICAgY29uc3QgaWRzID0gdGhpcy5ibG9ja3MuZmxhdE1hcCgobGluZXMpID0+XG4gICAgICBsaW5lcy5tYXAoKHsgaWQgfSkgPT4gYCNMJHtpZH1gKVxuICAgICk7XG5cbiAgICBpZiAoIXRoaXMuX3N0eWxlKSB7XG4gICAgICB0aGlzLl9zdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kKHRoaXMuX3N0eWxlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdHlsZS50ZXh0Q29udGVudCA9IGAubGluZXM6bm90KDpoYXMoOmlzKCR7XG4gICAgICBbLi4uaWRzXS5qb2luKFwiLFwiKVxuICAgIH0pLmN1cnNvci1saW5lKSkgOmlzKCR7Wy4uLmJvZHlJZHNdLmpvaW4oXCIsXCIpfSl7ZGlzcGxheTpub25lfWA7XG4gIH1cblxuICBwcml2YXRlIF9ibG9ja3M6IEJsb2NrczxMaW5lPiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfZGlzcG9zZTogKCgpID0+IFByb21pc2U8dm9pZD4pIHwgdW5kZWZpbmVkO1xuICAvKiog44Kz44O844OJ44OW44Ot44OD44Kv44Gu5pu05paw44KS5Y+N5pig44GZ44KLXG4gICAqXG4gICAqIEBwYXJhbSBhZnRlciDmm7TmlrDlvozjga7jgrPjg7zjg4njg5bjg63jg4Pjgq9cbiAgICogQHJldHVybnMg5YmK6Zmk44GV44KM44Gf5aC05ZCI44GvdHJ1ZVxuICAgKi9cbiAgcHJpdmF0ZSBfcHJldmlldzogKFxuICAgIGJlZm9yZTogQmxvY2tzPExpbmU+LFxuICAgIGFmdGVyPzogQmxvY2tzPExpbmU+LFxuICAgIGFyZWE/OiBIVE1MRGl2RWxlbWVudCxcbiAgKSA9PiBQcm9taXNlPFJlc3VsdDxib29sZWFuPj47XG4gIHByaXZhdGUgX2FyZWE6IEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9vYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfc3R5bGU6IEhUTUxTdHlsZUVsZW1lbnQgfCB1bmRlZmluZWQ7XG59XG4iLCAiaW1wb3J0IHsgUHJldmlldyB9IGZyb20gXCIuL3ByZXZpZXcudHNcIjtcbmltcG9ydCB7IHRha2VJbnRlcm5hbExpbmVzIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1zdGQtYnJvd3Nlci50c1wiO1xuaW1wb3J0IHsgQmFzZUxpbmUsIFNjcmFwYm94IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuaW1wb3J0IHsgZGlmZiB9IGZyb20gXCIuL2RpZmYudHNcIjtcbmltcG9ydCB7IHJlYWRDb2RlQmxvY2tzIH0gZnJvbSBcIi4vcmVhZENvZGVCbG9ja3MudHNcIjtcbmltcG9ydCB7IFZpZXdlciB9IGZyb20gXCIuL3ZpZXdlci50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJldmlld2VyIHtcbiAgd2hlbjogUmVnRXhwO1xuICBwcmV2aWV3OiBQcmV2aWV3O1xufVxuXG4vKiogU2NyYXBSdW7jgpLotbfli5XjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBzZXR1cCA9IChcbiAgeyBwcmV2aWV3ZXJzIH06IHsgcHJldmlld2VyczogUHJldmlld2VyW10gfSxcbik6ICgpID0+IHZvaWQgPT4ge1xuICBjb25zdCB2aWV3ZXJzID0gbmV3IE1hcDxzdHJpbmcsIFZpZXdlcjxCYXNlTGluZT4+KCk7XG4gIGNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgICBjb25zdCBjb2RlQmxvY2tzID0gcmVhZENvZGVCbG9ja3ModGFrZUludGVybmFsTGluZXMoKSk7XG4gICAgZm9yIChjb25zdCB7IGNoYW5nZWQsIGZpbGVuYW1lIH0gb2YgZGlmZih2aWV3ZXJzLCBjb2RlQmxvY2tzKSkge1xuICAgICAgaWYgKCFjaGFuZ2VkKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IG5ld0Jsb2NrcyA9IGNvZGVCbG9ja3MuZ2V0KGZpbGVuYW1lKTtcbiAgICAgIGxldCB2aWV3ZXIgPSB2aWV3ZXJzLmdldChmaWxlbmFtZSk7XG4gICAgICBpZiAoIXZpZXdlcikge1xuICAgICAgICBpZiAoIW5ld0Jsb2NrcykgY29udGludWU7XG4gICAgICAgIC8vIGNyZWF0ZVxuICAgICAgICBjb25zdCBjb21waWxlID0gcHJldmlld2Vycy5maW5kKCh7IHdoZW4gfSkgPT4gd2hlbi50ZXN0KGZpbGVuYW1lKSlcbiAgICAgICAgICA/LnByZXZpZXc7XG4gICAgICAgIGlmICghY29tcGlsZSkgY29udGludWU7XG4gICAgICAgIHZpZXdlciA9IG5ldyBWaWV3ZXIoZmlsZW5hbWUsIGNvbXBpbGUpO1xuICAgICAgICB2aWV3ZXJzLnNldChmaWxlbmFtZSwgdmlld2VyKTtcbiAgICAgIH1cbiAgICAgIC8vIGNyZWF0ZSBvciB1cGRhdGUgb3IgZGVsZXRlXG4gICAgICB2aWV3ZXIudXBkYXRlKG5ld0Jsb2NrcykudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVzdWx0LnR5cGUpIHtcbiAgICAgICAgICBjYXNlIFwicmVzb2x2ZVwiOlxuICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSkgdmlld2Vycy5kZWxldGUoZmlsZW5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGNhc2UgXCJyZWplY3RcIjpcbiAgICAgICAgICAgIHRocm93IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgICBjYXNlIFwiY2FuY2VsXCI6XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBhZ2VDaGFuZ2VkID0gKCkgPT4ge1xuICAgIGlmIChzY3JhcGJveC5MYXlvdXQgIT09IFwicGFnZVwiKSB7XG4gICAgICBzY3JhcGJveC5vZmYoXCJsaW5lczpjaGFuZ2VkXCIsIHVwZGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHVwZGF0ZSgpO1xuICAgIHNjcmFwYm94Lm9uKFwibGluZXM6Y2hhbmdlZFwiLCB1cGRhdGUpO1xuICB9O1xuXG4gIGhhbmRsZVBhZ2VDaGFuZ2VkKCk7XG4gIHNjcmFwYm94Lm9uKFwicGFnZTpjaGFuZ2VkXCIsIGhhbmRsZVBhZ2VDaGFuZ2VkKTtcblxuICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgc3R5bGUudGV4dENvbnRlbnQgPSBgLnNjcmFwLXJ1bntkaXNwbGF5OmJsb2NrO3dpZHRoOjk1JX1gO1xuICBkb2N1bWVudC5oZWFkLmFwcGVuZChzdHlsZSk7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBzY3JhcGJveC5vZmYoXCJwYWdlOmNoYW5nZWRcIiwgaGFuZGxlUGFnZUNoYW5nZWQpO1xuICAgIHN0eWxlLnJlbW92ZSgpO1xuICB9O1xufTtcbiIsICJleHBvcnQgY29uc3QgdG9EYXRhVVJMID0gKGJsb2I6IEJsb2IpID0+IHtcbiAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlKSA9PlxuICAgIGZpbGVSZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShmaWxlUmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpXG4gICk7XG4gIGZpbGVSZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcbiAgcmV0dXJuIHByb21pc2U7XG59O1xuIiwgImltcG9ydCB7IGNvbnRlbnQgfSBmcm9tIFwiLi4vY29kZUJsb2NrLnRzXCI7XG5pbXBvcnQgeyBQcmV2aWV3IH0gZnJvbSBcIi4uL3ByZXZpZXcudHNcIjtcbmltcG9ydCB7IHRvRGF0YVVSTCB9IGZyb20gXCIuLi9kZXBzL2R2aTJodG1sLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBwcmV2aWV3U1ZHOiBQcmV2aWV3ID0gYXN5bmMgKHByZXZpZXdJbml0KSA9PiB7XG4gIGlmICghKFwiYWZ0ZXJcIiBpbiBwcmV2aWV3SW5pdCkpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHN2ZyA9IGNvbnRlbnQocHJldmlld0luaXQuYWZ0ZXIpO1xuICBjb25zdCBkb20gPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHN2ZywgXCJpbWFnZS9zdmcreG1sXCIpO1xuICBjb25zdCBlcnJvciA9IGRvbS5xdWVyeVNlbGVjdG9yKFwicGFyc2VyZXJyb3JcIik7XG4gIC8vIGlmIGZhaWxlZCB0byBwYXJzZVxuICBpZiAoZXJyb3IpIHtcbiAgICBjb25zdCBwcmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwicHJlXCIpO1xuICAgIGNvbnN0IGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY29kZVwiKTtcbiAgICBjb2RlLmlubmVyVGV4dCA9IGVycm9yLmlubmVySFRNTDtcbiAgICBwcmUuYXBwZW5kKGNvZGUpO1xuICAgIHByZXZpZXdJbml0LnJlbmRlcihwcmUpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHVybCA9IGF3YWl0IHRvRGF0YVVSTChuZXcgQmxvYihbc3ZnXSwgeyB0eXBlOiBcImltYWdlL3N2Zyt4bWxcIiB9KSk7XG4gIGNvbnN0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7XG4gIGltZy5zcmMgPSB1cmw7XG4gIHByZXZpZXdJbml0LnJlbmRlcihpbWcpO1xufTtcbiIsICJ2YXIgd2luO1xuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHdpbiA9IHdpbmRvdztcbn0gZWxzZSBpZiAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHdpbiA9IGdsb2JhbDtcbn0gZWxzZSBpZiAodHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIpe1xuICAgIHdpbiA9IHNlbGY7XG59IGVsc2Uge1xuICAgIHdpbiA9IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdpbjtcbiIsICJpbXBvcnQgKiBhcyBfX21vZHVsZSBmcm9tIFwiZ2xvYmFsL3dpbmRvd1wiO2NvbnN0IHsgZGVmYXVsdDogX19kZWZhdWx0LCAuLi5fX3Jlc3QgfSA9IF9fbW9kdWxlO2V4cG9ydCBkZWZhdWx0IChfX2RlZmF1bHQgIT09IHVuZGVmaW5lZCA/IF9fZGVmYXVsdCA6IF9fcmVzdCk7ZXhwb3J0ICogZnJvbSBcImdsb2JhbC93aW5kb3dcIjsiLCAibW9kdWxlLmV4cG9ydHMgPSBpc0Z1bmN0aW9uXG5cbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdcblxuZnVuY3Rpb24gaXNGdW5jdGlvbiAoZm4pIHtcbiAgaWYgKCFmbikge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHZhciBzdHJpbmcgPSB0b1N0cmluZy5jYWxsKGZuKVxuICByZXR1cm4gc3RyaW5nID09PSAnW29iamVjdCBGdW5jdGlvbl0nIHx8XG4gICAgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyBcdTAwMjZcdTAwMjYgc3RyaW5nICE9PSAnW29iamVjdCBSZWdFeHBdJykgfHxcbiAgICAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgXHUwMDI2XHUwMDI2XG4gICAgIC8vIElFOCBhbmQgYmVsb3dcbiAgICAgKGZuID09PSB3aW5kb3cuc2V0VGltZW91dCB8fFxuICAgICAgZm4gPT09IHdpbmRvdy5hbGVydCB8fFxuICAgICAgZm4gPT09IHdpbmRvdy5jb25maXJtIHx8XG4gICAgICBmbiA9PT0gd2luZG93LnByb21wdCkpXG59O1xuIiwgImltcG9ydCAqIGFzIF9fbW9kdWxlIGZyb20gXCJpcy1mdW5jdGlvblwiO2NvbnN0IHsgZGVmYXVsdDogX19kZWZhdWx0LCAuLi5fX3Jlc3QgfSA9IF9fbW9kdWxlO2V4cG9ydCBkZWZhdWx0IChfX2RlZmF1bHQgIT09IHVuZGVmaW5lZCA/IF9fZGVmYXVsdCA6IF9fcmVzdCk7ZXhwb3J0ICogZnJvbSBcImlzLWZ1bmN0aW9uXCI7IiwgInZhciB0cmltID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpO1xufVxuICAsIGlzQXJyYXkgPSBmdW5jdGlvbihhcmcpIHtcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJnKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbiAgICB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGhlYWRlcnMpIHtcbiAgaWYgKCFoZWFkZXJzKVxuICAgIHJldHVybiB7fVxuXG4gIHZhciByZXN1bHQgPSB7fVxuXG4gIHZhciBoZWFkZXJzQXJyID0gdHJpbShoZWFkZXJzKS5zcGxpdCgnXFxuJylcblxuICBmb3IgKHZhciBpID0gMDsgaSBcdTAwM2MgaGVhZGVyc0Fyci5sZW5ndGg7IGkrKykge1xuICAgIHZhciByb3cgPSBoZWFkZXJzQXJyW2ldXG4gICAgdmFyIGluZGV4ID0gcm93LmluZGV4T2YoJzonKVxuICAgICwga2V5ID0gdHJpbShyb3cuc2xpY2UoMCwgaW5kZXgpKS50b0xvd2VyQ2FzZSgpXG4gICAgLCB2YWx1ZSA9IHRyaW0ocm93LnNsaWNlKGluZGV4ICsgMSkpXG5cbiAgICBpZiAodHlwZW9mKHJlc3VsdFtrZXldKSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsdWVcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkocmVzdWx0W2tleV0pKSB7XG4gICAgICByZXN1bHRba2V5XS5wdXNoKHZhbHVlKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRba2V5XSA9IFsgcmVzdWx0W2tleV0sIHZhbHVlIF1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG4iLCAiaW1wb3J0ICogYXMgX19tb2R1bGUgZnJvbSBcInBhcnNlLWhlYWRlcnNcIjtjb25zdCB7IGRlZmF1bHQ6IF9fZGVmYXVsdCwgLi4uX19yZXN0IH0gPSBfX21vZHVsZTtleHBvcnQgZGVmYXVsdCAoX19kZWZhdWx0ICE9PSB1bmRlZmluZWQgPyBfX2RlZmF1bHQgOiBfX3Jlc3QpO2V4cG9ydCAqIGZyb20gXCJwYXJzZS1oZWFkZXJzXCI7IiwgIm1vZHVsZS5leHBvcnRzID0gZXh0ZW5kXG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIGV4dGVuZCgpIHtcbiAgICB2YXIgdGFyZ2V0ID0ge31cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIFx1MDAzYyBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXVxuXG4gICAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRcbn1cbiIsICJpbXBvcnQgKiBhcyBfX21vZHVsZSBmcm9tIFwieHRlbmRcIjtjb25zdCB7IGRlZmF1bHQ6IF9fZGVmYXVsdCwgLi4uX19yZXN0IH0gPSBfX21vZHVsZTtleHBvcnQgZGVmYXVsdCAoX19kZWZhdWx0ICE9PSB1bmRlZmluZWQgPyBfX2RlZmF1bHQgOiBfX3Jlc3QpO2V4cG9ydCAqIGZyb20gXCJ4dGVuZFwiOyIsICJcInVzZSBzdHJpY3RcIjtcbnZhciB3aW5kb3cgPSByZXF1aXJlKFwiZ2xvYmFsL3dpbmRvd1wiKVxudmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKFwiaXMtZnVuY3Rpb25cIilcbnZhciBwYXJzZUhlYWRlcnMgPSByZXF1aXJlKFwicGFyc2UtaGVhZGVyc1wiKVxudmFyIHh0ZW5kID0gcmVxdWlyZShcInh0ZW5kXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlWEhSXG4vLyBBbGxvdyB1c2Ugb2YgZGVmYXVsdCBpbXBvcnQgc3ludGF4IGluIFR5cGVTY3JpcHRcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBjcmVhdGVYSFI7XG5jcmVhdGVYSFIuWE1MSHR0cFJlcXVlc3QgPSB3aW5kb3cuWE1MSHR0cFJlcXVlc3QgfHwgbm9vcFxuY3JlYXRlWEhSLlhEb21haW5SZXF1ZXN0ID0gXCJ3aXRoQ3JlZGVudGlhbHNcIiBpbiAobmV3IGNyZWF0ZVhIUi5YTUxIdHRwUmVxdWVzdCgpKSA/IGNyZWF0ZVhIUi5YTUxIdHRwUmVxdWVzdCA6IHdpbmRvdy5YRG9tYWluUmVxdWVzdFxuXG5mb3JFYWNoQXJyYXkoW1wiZ2V0XCIsIFwicHV0XCIsIFwicG9zdFwiLCBcInBhdGNoXCIsIFwiaGVhZFwiLCBcImRlbGV0ZVwiXSwgZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgY3JlYXRlWEhSW21ldGhvZCA9PT0gXCJkZWxldGVcIiA/IFwiZGVsXCIgOiBtZXRob2RdID0gZnVuY3Rpb24odXJpLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICAgICAgICBvcHRpb25zID0gaW5pdFBhcmFtcyh1cmksIG9wdGlvbnMsIGNhbGxiYWNrKVxuICAgICAgICBvcHRpb25zLm1ldGhvZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpXG4gICAgICAgIHJldHVybiBfY3JlYXRlWEhSKG9wdGlvbnMpXG4gICAgfVxufSlcblxuZnVuY3Rpb24gZm9yRWFjaEFycmF5KGFycmF5LCBpdGVyYXRvcikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIFx1MDAzYyBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpdGVyYXRvcihhcnJheVtpXSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzRW1wdHkob2JqKXtcbiAgICBmb3IodmFyIGkgaW4gb2JqKXtcbiAgICAgICAgaWYob2JqLmhhc093blByb3BlcnR5KGkpKSByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gaW5pdFBhcmFtcyh1cmksIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHBhcmFtcyA9IHVyaVxuXG4gICAgaWYgKGlzRnVuY3Rpb24ob3B0aW9ucykpIHtcbiAgICAgICAgY2FsbGJhY2sgPSBvcHRpb25zXG4gICAgICAgIGlmICh0eXBlb2YgdXJpID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSB7dXJpOnVyaX1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcmFtcyA9IHh0ZW5kKG9wdGlvbnMsIHt1cmk6IHVyaX0pXG4gICAgfVxuXG4gICAgcGFyYW1zLmNhbGxiYWNrID0gY2FsbGJhY2tcbiAgICByZXR1cm4gcGFyYW1zXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVhIUih1cmksIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgb3B0aW9ucyA9IGluaXRQYXJhbXModXJpLCBvcHRpb25zLCBjYWxsYmFjaylcbiAgICByZXR1cm4gX2NyZWF0ZVhIUihvcHRpb25zKVxufVxuXG5mdW5jdGlvbiBfY3JlYXRlWEhSKG9wdGlvbnMpIHtcbiAgICBpZih0eXBlb2Ygb3B0aW9ucy5jYWxsYmFjayA9PT0gXCJ1bmRlZmluZWRcIil7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImNhbGxiYWNrIGFyZ3VtZW50IG1pc3NpbmdcIilcbiAgICB9XG5cbiAgICB2YXIgY2FsbGVkID0gZmFsc2VcbiAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbiBjYk9uY2UoZXJyLCByZXNwb25zZSwgYm9keSl7XG4gICAgICAgIGlmKCFjYWxsZWQpe1xuICAgICAgICAgICAgY2FsbGVkID0gdHJ1ZVxuICAgICAgICAgICAgb3B0aW9ucy5jYWxsYmFjayhlcnIsIHJlc3BvbnNlLCBib2R5KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVhZHlzdGF0ZWNoYW5nZSgpIHtcbiAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGxvYWRGdW5jLCAwKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Qm9keSgpIHtcbiAgICAgICAgLy8gQ2hyb21lIHdpdGggcmVxdWVzdFR5cGU9YmxvYiB0aHJvd3MgZXJyb3JzIGFycm91bmQgd2hlbiBldmVuIHRlc3RpbmcgYWNjZXNzIHRvIHJlc3BvbnNlVGV4dFxuICAgICAgICB2YXIgYm9keSA9IHVuZGVmaW5lZFxuXG4gICAgICAgIGlmICh4aHIucmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGJvZHkgPSB4aHIucmVzcG9uc2VcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJvZHkgPSB4aHIucmVzcG9uc2VUZXh0IHx8IGdldFhtbCh4aHIpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNKc29uKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGJvZHkgPSBKU09OLnBhcnNlKGJvZHkpXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJvZHlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlcnJvckZ1bmMoZXZ0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0VGltZXIpXG4gICAgICAgIGlmKCEoZXZ0IGluc3RhbmNlb2YgRXJyb3IpKXtcbiAgICAgICAgICAgIGV2dCA9IG5ldyBFcnJvcihcIlwiICsgKGV2dCB8fCBcIlVua25vd24gWE1MSHR0cFJlcXVlc3QgRXJyb3JcIikgKVxuICAgICAgICB9XG4gICAgICAgIGV2dC5zdGF0dXNDb2RlID0gMFxuICAgICAgICByZXR1cm4gY2FsbGJhY2soZXZ0LCBmYWlsdXJlUmVzcG9uc2UpXG4gICAgfVxuXG4gICAgLy8gd2lsbCBsb2FkIHRoZSBkYXRhIFx1MDAyNiBwcm9jZXNzIHRoZSByZXNwb25zZSBpbiBhIHNwZWNpYWwgcmVzcG9uc2Ugb2JqZWN0XG4gICAgZnVuY3Rpb24gbG9hZEZ1bmMoKSB7XG4gICAgICAgIGlmIChhYm9ydGVkKSByZXR1cm5cbiAgICAgICAgdmFyIHN0YXR1c1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dFRpbWVyKVxuICAgICAgICBpZihvcHRpb25zLnVzZVhEUiBcdTAwMjZcdTAwMjYgeGhyLnN0YXR1cz09PXVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy9JRTggQ09SUyBHRVQgc3VjY2Vzc2Z1bCByZXNwb25zZSBkb2Vzbid0IGhhdmUgYSBzdGF0dXMgZmllbGQsIGJ1dCBib2R5IGlzIGZpbmVcbiAgICAgICAgICAgIHN0YXR1cyA9IDIwMFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhdHVzID0gKHhoci5zdGF0dXMgPT09IDEyMjMgPyAyMDQgOiB4aHIuc3RhdHVzKVxuICAgICAgICB9XG4gICAgICAgIHZhciByZXNwb25zZSA9IGZhaWx1cmVSZXNwb25zZVxuICAgICAgICB2YXIgZXJyID0gbnVsbFxuXG4gICAgICAgIGlmIChzdGF0dXMgIT09IDApe1xuICAgICAgICAgICAgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICAgICAgYm9keTogZ2V0Qm9keSgpLFxuICAgICAgICAgICAgICAgIHN0YXR1c0NvZGU6IHN0YXR1cyxcbiAgICAgICAgICAgICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgICAgICAgICB1cmw6IHVyaSxcbiAgICAgICAgICAgICAgICByYXdSZXF1ZXN0OiB4aHJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMpeyAvL3JlbWVtYmVyIHhociBjYW4gaW4gZmFjdCBiZSBYRFIgZm9yIENPUlMgaW4gSUVcbiAgICAgICAgICAgICAgICByZXNwb25zZS5oZWFkZXJzID0gcGFyc2VIZWFkZXJzKHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVyciA9IG5ldyBFcnJvcihcIkludGVybmFsIFhNTEh0dHBSZXF1ZXN0IEVycm9yXCIpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVyciwgcmVzcG9uc2UsIHJlc3BvbnNlLmJvZHkpXG4gICAgfVxuXG4gICAgdmFyIHhociA9IG9wdGlvbnMueGhyIHx8IG51bGxcblxuICAgIGlmICgheGhyKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmNvcnMgfHwgb3B0aW9ucy51c2VYRFIpIHtcbiAgICAgICAgICAgIHhociA9IG5ldyBjcmVhdGVYSFIuWERvbWFpblJlcXVlc3QoKVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHhociA9IG5ldyBjcmVhdGVYSFIuWE1MSHR0cFJlcXVlc3QoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGtleVxuICAgIHZhciBhYm9ydGVkXG4gICAgdmFyIHVyaSA9IHhoci51cmwgPSBvcHRpb25zLnVyaSB8fCBvcHRpb25zLnVybFxuICAgIHZhciBtZXRob2QgPSB4aHIubWV0aG9kID0gb3B0aW9ucy5tZXRob2QgfHwgXCJHRVRcIlxuICAgIHZhciBib2R5ID0gb3B0aW9ucy5ib2R5IHx8IG9wdGlvbnMuZGF0YVxuICAgIHZhciBoZWFkZXJzID0geGhyLmhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgfHwge31cbiAgICB2YXIgc3luYyA9ICEhb3B0aW9ucy5zeW5jXG4gICAgdmFyIGlzSnNvbiA9IGZhbHNlXG4gICAgdmFyIHRpbWVvdXRUaW1lclxuICAgIHZhciBmYWlsdXJlUmVzcG9uc2UgPSB7XG4gICAgICAgIGJvZHk6IHVuZGVmaW5lZCxcbiAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgIHN0YXR1c0NvZGU6IDAsXG4gICAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgICB1cmw6IHVyaSxcbiAgICAgICAgcmF3UmVxdWVzdDogeGhyXG4gICAgfVxuXG4gICAgaWYgKFwianNvblwiIGluIG9wdGlvbnMgXHUwMDI2XHUwMDI2IG9wdGlvbnMuanNvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgaXNKc29uID0gdHJ1ZVxuICAgICAgICBoZWFkZXJzW1wiYWNjZXB0XCJdIHx8IGhlYWRlcnNbXCJBY2NlcHRcIl0gfHwgKGhlYWRlcnNbXCJBY2NlcHRcIl0gPSBcImFwcGxpY2F0aW9uL2pzb25cIikgLy9Eb24ndCBvdmVycmlkZSBleGlzdGluZyBhY2NlcHQgaGVhZGVyIGRlY2xhcmVkIGJ5IHVzZXJcbiAgICAgICAgaWYgKG1ldGhvZCAhPT0gXCJHRVRcIiBcdTAwMjZcdTAwMjYgbWV0aG9kICE9PSBcIkhFQURcIikge1xuICAgICAgICAgICAgaGVhZGVyc1tcImNvbnRlbnQtdHlwZVwiXSB8fCBoZWFkZXJzW1wiQ29udGVudC1UeXBlXCJdIHx8IChoZWFkZXJzW1wiQ29udGVudC1UeXBlXCJdID0gXCJhcHBsaWNhdGlvbi9qc29uXCIpIC8vRG9uJ3Qgb3ZlcnJpZGUgZXhpc3RpbmcgYWNjZXB0IGhlYWRlciBkZWNsYXJlZCBieSB1c2VyXG4gICAgICAgICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5qc29uID09PSB0cnVlID8gYm9keSA6IG9wdGlvbnMuanNvbilcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSByZWFkeXN0YXRlY2hhbmdlXG4gICAgeGhyLm9ubG9hZCA9IGxvYWRGdW5jXG4gICAgeGhyLm9uZXJyb3IgPSBlcnJvckZ1bmNcbiAgICAvLyBJRTkgbXVzdCBoYXZlIG9ucHJvZ3Jlc3MgYmUgc2V0IHRvIGEgdW5pcXVlIGZ1bmN0aW9uLlxuICAgIHhoci5vbnByb2dyZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBJRSBtdXN0IGRpZVxuICAgIH1cbiAgICB4aHIub25hYm9ydCA9IGZ1bmN0aW9uKCl7XG4gICAgICAgIGFib3J0ZWQgPSB0cnVlO1xuICAgIH1cbiAgICB4aHIub250aW1lb3V0ID0gZXJyb3JGdW5jXG4gICAgeGhyLm9wZW4obWV0aG9kLCB1cmksICFzeW5jLCBvcHRpb25zLnVzZXJuYW1lLCBvcHRpb25zLnBhc3N3b3JkKVxuICAgIC8vaGFzIHRvIGJlIGFmdGVyIG9wZW5cbiAgICBpZighc3luYykge1xuICAgICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gISFvcHRpb25zLndpdGhDcmVkZW50aWFsc1xuICAgIH1cbiAgICAvLyBDYW5ub3Qgc2V0IHRpbWVvdXQgd2l0aCBzeW5jIHJlcXVlc3RcbiAgICAvLyBub3Qgc2V0dGluZyB0aW1lb3V0IG9uIHRoZSB4aHIgb2JqZWN0LCBiZWNhdXNlIG9mIG9sZCB3ZWJraXRzIGV0Yy4gbm90IGhhbmRsaW5nIHRoYXQgY29ycmVjdGx5XG4gICAgLy8gYm90aCBucG0ncyByZXF1ZXN0IGFuZCBqcXVlcnkgMS54IHVzZSB0aGlzIGtpbmQgb2YgdGltZW91dCwgc28gdGhpcyBpcyBiZWluZyBjb25zaXN0ZW50XG4gICAgaWYgKCFzeW5jIFx1MDAyNlx1MDAyNiBvcHRpb25zLnRpbWVvdXQgXHUwMDNlIDAgKSB7XG4gICAgICAgIHRpbWVvdXRUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGlmIChhYm9ydGVkKSByZXR1cm5cbiAgICAgICAgICAgIGFib3J0ZWQgPSB0cnVlLy9JRTkgbWF5IHN0aWxsIGNhbGwgcmVhZHlzdGF0ZWNoYW5nZVxuICAgICAgICAgICAgeGhyLmFib3J0KFwidGltZW91dFwiKVxuICAgICAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IoXCJYTUxIdHRwUmVxdWVzdCB0aW1lb3V0XCIpXG4gICAgICAgICAgICBlLmNvZGUgPSBcIkVUSU1FRE9VVFwiXG4gICAgICAgICAgICBlcnJvckZ1bmMoZSlcbiAgICAgICAgfSwgb3B0aW9ucy50aW1lb3V0IClcbiAgICB9XG5cbiAgICBpZiAoeGhyLnNldFJlcXVlc3RIZWFkZXIpIHtcbiAgICAgICAgZm9yKGtleSBpbiBoZWFkZXJzKXtcbiAgICAgICAgICAgIGlmKGhlYWRlcnMuaGFzT3duUHJvcGVydHkoa2V5KSl7XG4gICAgICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoa2V5LCBoZWFkZXJzW2tleV0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuaGVhZGVycyBcdTAwMjZcdTAwMjYgIWlzRW1wdHkob3B0aW9ucy5oZWFkZXJzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJIZWFkZXJzIGNhbm5vdCBiZSBzZXQgb24gYW4gWERvbWFpblJlcXVlc3Qgb2JqZWN0XCIpXG4gICAgfVxuXG4gICAgaWYgKFwicmVzcG9uc2VUeXBlXCIgaW4gb3B0aW9ucykge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gb3B0aW9ucy5yZXNwb25zZVR5cGVcbiAgICB9XG5cbiAgICBpZiAoXCJiZWZvcmVTZW5kXCIgaW4gb3B0aW9ucyBcdTAwMjZcdTAwMjZcbiAgICAgICAgdHlwZW9mIG9wdGlvbnMuYmVmb3JlU2VuZCA9PT0gXCJmdW5jdGlvblwiXG4gICAgKSB7XG4gICAgICAgIG9wdGlvbnMuYmVmb3JlU2VuZCh4aHIpXG4gICAgfVxuXG4gICAgLy8gTWljcm9zb2Z0IEVkZ2UgYnJvd3NlciBzZW5kcyBcInVuZGVmaW5lZFwiIHdoZW4gc2VuZCBpcyBjYWxsZWQgd2l0aCB1bmRlZmluZWQgdmFsdWUuXG4gICAgLy8gWE1MSHR0cFJlcXVlc3Qgc3BlYyBzYXlzIHRvIHBhc3MgbnVsbCBhcyBib2R5IHRvIGluZGljYXRlIG5vIGJvZHlcbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL25hdWd0dXIveGhyL2lzc3Vlcy8xMDAuXG4gICAgeGhyLnNlbmQoYm9keSB8fCBudWxsKVxuXG4gICAgcmV0dXJuIHhoclxuXG5cbn1cblxuZnVuY3Rpb24gZ2V0WG1sKHhocikge1xuICAgIC8vIHhoci5yZXNwb25zZVhNTCB3aWxsIHRocm93IEV4Y2VwdGlvbiBcIkludmFsaWRTdGF0ZUVycm9yXCIgb3IgXCJET01FeGNlcHRpb25cIlxuICAgIC8vIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvcmVzcG9uc2VYTUwuXG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHhoci5yZXNwb25zZVR5cGUgPT09IFwiZG9jdW1lbnRcIikge1xuICAgICAgICAgICAgcmV0dXJuIHhoci5yZXNwb25zZVhNTFxuICAgICAgICB9XG4gICAgICAgIHZhciBmaXJlZm94QnVnVGFrZW5FZmZlY3QgPSB4aHIucmVzcG9uc2VYTUwgXHUwMDI2XHUwMDI2IHhoci5yZXNwb25zZVhNTC5kb2N1bWVudEVsZW1lbnQubm9kZU5hbWUgPT09IFwicGFyc2VyZXJyb3JcIlxuICAgICAgICBpZiAoeGhyLnJlc3BvbnNlVHlwZSA9PT0gXCJcIiBcdTAwMjZcdTAwMjYgIWZpcmVmb3hCdWdUYWtlbkVmZmVjdCkge1xuICAgICAgICAgICAgcmV0dXJuIHhoci5yZXNwb25zZVhNTFxuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge31cblxuICAgIHJldHVybiBudWxsXG59XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuIiwgImltcG9ydCAqIGFzIF9fbW9kdWxlIGZyb20gXCJ4aHJcIjtjb25zdCB7IGRlZmF1bHQ6IF9fZGVmYXVsdCwgLi4uX19yZXN0IH0gPSBfX21vZHVsZTtleHBvcnQgZGVmYXVsdCAoX19kZWZhdWx0ICE9PSB1bmRlZmluZWQgPyBfX2RlZmF1bHQgOiBfX3Jlc3QpO2V4cG9ydCAqIGZyb20gXCJ4aHJcIjsiLCAiaW1wb3J0IHhociBmcm9tICd4aHInO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiBcdTAwMjZcdTAwMjYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmo7XG59IDogZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqIFx1MDAyNlx1MDAyNiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgXHUwMDI2XHUwMDI2IG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sIFx1MDAyNlx1MDAyNiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajtcbn07XG5cblxuXG5cblxudmFyIGFzeW5jR2VuZXJhdG9yID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBBd2FpdFZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZnVuY3Rpb24gQXN5bmNHZW5lcmF0b3IoZ2VuKSB7XG4gICAgdmFyIGZyb250LCBiYWNrO1xuXG4gICAgZnVuY3Rpb24gc2VuZChrZXksIGFyZykge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIHJlcXVlc3QgPSB7XG4gICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgYXJnOiBhcmcsXG4gICAgICAgICAgcmVzb2x2ZTogcmVzb2x2ZSxcbiAgICAgICAgICByZWplY3Q6IHJlamVjdCxcbiAgICAgICAgICBuZXh0OiBudWxsXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGJhY2spIHtcbiAgICAgICAgICBiYWNrID0gYmFjay5uZXh0ID0gcmVxdWVzdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmcm9udCA9IGJhY2sgPSByZXF1ZXN0O1xuICAgICAgICAgIHJlc3VtZShrZXksIGFyZyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc3VtZShrZXksIGFyZykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGdlbltrZXldKGFyZyk7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcblxuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBd2FpdFZhbHVlKSB7XG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlLnZhbHVlKS50aGVuKGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgICAgIHJlc3VtZShcIm5leHRcIiwgYXJnKTtcbiAgICAgICAgICB9LCBmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgICAgICByZXN1bWUoXCJ0aHJvd1wiLCBhcmcpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldHRsZShyZXN1bHQuZG9uZSA/IFwicmV0dXJuXCIgOiBcIm5vcm1hbFwiLCByZXN1bHQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgc2V0dGxlKFwidGhyb3dcIiwgZXJyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXR0bGUodHlwZSwgdmFsdWUpIHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFwicmV0dXJuXCI6XG4gICAgICAgICAgZnJvbnQucmVzb2x2ZSh7XG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICBkb25lOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBcInRocm93XCI6XG4gICAgICAgICAgZnJvbnQucmVqZWN0KHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGZyb250LnJlc29sdmUoe1xuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgZG9uZTogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZnJvbnQgPSBmcm9udC5uZXh0O1xuXG4gICAgICBpZiAoZnJvbnQpIHtcbiAgICAgICAgcmVzdW1lKGZyb250LmtleSwgZnJvbnQuYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJhY2sgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2ludm9rZSA9IHNlbmQ7XG5cbiAgICBpZiAodHlwZW9mIGdlbi5yZXR1cm4gIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhpcy5yZXR1cm4gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiBcdTAwMjZcdTAwMjYgU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHtcbiAgICBBc3luY0dlbmVyYXRvci5wcm90b3R5cGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgfVxuXG4gIEFzeW5jR2VuZXJhdG9yLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiB0aGlzLl9pbnZva2UoXCJuZXh0XCIsIGFyZyk7XG4gIH07XG5cbiAgQXN5bmNHZW5lcmF0b3IucHJvdG90eXBlLnRocm93ID0gZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiB0aGlzLl9pbnZva2UoXCJ0aHJvd1wiLCBhcmcpO1xuICB9O1xuXG4gIEFzeW5jR2VuZXJhdG9yLnByb3RvdHlwZS5yZXR1cm4gPSBmdW5jdGlvbiAoYXJnKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ludm9rZShcInJldHVyblwiLCBhcmcpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgd3JhcDogZnVuY3Rpb24gKGZuKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IEFzeW5jR2VuZXJhdG9yKGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICAgICAgfTtcbiAgICB9LFxuICAgIGF3YWl0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJldHVybiBuZXcgQXdhaXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9O1xufSgpO1xuXG5cblxuXG5cbnZhciBjbGFzc0NhbGxDaGVjayA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59O1xuXG52YXIgY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIFx1MDAzYyBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgICBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICAgIGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfTtcbn0oKTtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG52YXIgdG9Db25zdW1hYmxlQXJyYXkgPSBmdW5jdGlvbiAoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIFx1MDAzYyBhcnIubGVuZ3RoOyBpKyspIGFycjJbaV0gPSBhcnJbaV07XG5cbiAgICByZXR1cm4gYXJyMjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShhcnIpO1xuICB9XG59O1xuXG52YXIgbGFzdEVycm9yID0gJyc7XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgSFRMTSBmb3IgYSBmYWlsdXJlIG1lc3NhZ2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBjYW52YXNDb250YWluZXJJZCBpZCBvZiBjb250YWluZXIgb2YgdGhcbiAqICAgICAgICBjYW52YXMuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBodG1sLlxuICovXG5mdW5jdGlvbiBtYWtlRmFpbEhUTUwobXNnKSB7XG4gICAgcmV0dXJuICdcXG5cdTAwM2N0YWJsZSBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICM4Q0U7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XCJcdTAwM2VcdTAwM2N0clx1MDAzZVxcblx1MDAzY3RkIGFsaWduPVwiY2VudGVyXCJcdTAwM2VcXG5cdTAwM2NkaXYgc3R5bGU9XCJkaXNwbGF5OiB0YWJsZS1jZWxsOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1wiXHUwMDNlXFxuXHUwMDNjZGl2IHN0eWxlPVwiXCJcdTAwM2UnICsgbXNnICsgJ1x1MDAzYy9kaXZcdTAwM2VcXG5cdTAwM2MvZGl2XHUwMDNlXFxuXHUwMDNjL3RkXHUwMDNlXHUwMDNjL3RyXHUwMDNlXHUwMDNjL3RhYmxlXHUwMDNlXFxuJztcbn1cblxuLyoqXG4gKiBNZXNzYWdlIGZvciBnZXR0aW5nIGEgd2ViZ2wgYnJvd3NlclxuICogQHR5cGUge3N0cmluZ31cbiAqL1xudmFyIEdFVF9BX1dFQkdMX0JST1dTRVIgPSAnXFxuXFx0VGhpcyBwYWdlIHJlcXVpcmVzIGEgYnJvd3NlciB0aGF0IHN1cHBvcnRzIFdlYkdMLlx1MDAzY2JyL1x1MDAzZVxcblxcdFx1MDAzY2EgaHJlZj1cImh0dHA6Ly9nZXQud2ViZ2wub3JnXCJcdTAwM2VDbGljayBoZXJlIHRvIHVwZ3JhZGUgeW91ciBicm93c2VyLlx1MDAzYy9hXHUwMDNlXFxuJztcblxuLyoqXG4gKiBNZXNzYWdlIGZvciBuZWVkIGJldHRlciBoYXJkd2FyZVxuICogQHR5cGUge3N0cmluZ31cbiAqL1xudmFyIE9USEVSX1BST0JMRU0gPSAnXFxuXFx0SXQgZG9lcyBub3QgYXBwZWFyIHlvdXIgY29tcHV0ZXIgY2FuIHN1cHBvcnQgV2ViR0wuXHUwMDNjYnIvXHUwMDNlXFxuXFx0XHUwMDNjYSBocmVmPVwiaHR0cDovL2dldC53ZWJnbC5vcmcvdHJvdWJsZXNob290aW5nL1wiXHUwMDNlQ2xpY2sgaGVyZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cdTAwM2MvYVx1MDAzZVxcbic7XG5cbi8qKlxuICogQ29kZSB0byByZXR1cm4gaW4gYG9uRXJyb3JgIGNhbGxiYWNrIHdoZW4gdGhlIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IHdlYmdsXG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG52YXIgRVJST1JfQlJPV1NFUl9TVVBQT1JUID0gMTtcblxuLyoqXG4gKiBDb2RlIHRvIHJldHVybiBpbiBgb25FcnJvcmAgY2FsbGJhY2sgdGhlcmUncyBhbnkgb3RoZXIgcHJvYmxlbSByZWxhdGVkIHRvIHdlYmdsXG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG52YXIgRVJST1JfT1RIRVIgPSAyO1xuXG4vKipcbiAqIENyZWF0ZXMgYSB3ZWJnbCBjb250ZXh0LiBJZiBjcmVhdGlvbiBmYWlscyBpdCB3aWxsXG4gKiBjaGFuZ2UgdGhlIGNvbnRlbnRzIG9mIHRoZSBjb250YWluZXIgb2YgdGhlIFx1MDAzY2NhbnZhc1x1MDAzZVxuICogdGFnIHRvIGFuIGVycm9yIG1lc3NhZ2Ugd2l0aCB0aGUgY29ycmVjdCBsaW5rcyBmb3IgV2ViR0wsXG4gKiB1bmxlc3MgYG9uRXJyb3JgIG9wdGlvbiBpcyBkZWZpbmVkIHRvIGEgY2FsbGJhY2ssXG4gKiB3aGljaCBhbGxvd3MgZm9yIGN1c3RvbSBlcnJvciBoYW5kbGluZy4uXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGNhbnZhcy4gVGhlIGNhbnZhcyBlbGVtZW50IHRvIGNyZWF0ZSBhXG4gKiAgICAgY29udGV4dCBmcm9tLlxuICogQHBhcmFtIHtXZWJHTENvbnRleHRDcmVhdGlvbkF0dHJpYnV0ZXN9IG9wdEF0dHJpYnMgQW55XG4gKiAgICAgY3JlYXRpb24gYXR0cmlidXRlcyB5b3Ugd2FudCB0byBwYXNzIGluLlxuICogQHJldHVybiB7V2ViR0xSZW5kZXJpbmdDb250ZXh0fSBUaGUgY3JlYXRlZCBjb250ZXh0LlxuICovXG5mdW5jdGlvbiBzZXR1cFdlYkdMKGNhbnZhcywgb3B0QXR0cmlicywgb25FcnJvcikge1xuICAgIGZ1bmN0aW9uIHNob3dMaW5rKHN0cikge1xuICAgICAgICB2YXIgY29udGFpbmVyID0gY2FudmFzLnBhcmVudE5vZGU7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBtYWtlRmFpbEhUTUwoc3RyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUVycm9yKGVycm9yQ29kZSwgbXNnKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb25FcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgb25FcnJvcihlcnJvckNvZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2hvd0xpbmsobXNnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICghd2luZG93LldlYkdMUmVuZGVyaW5nQ29udGV4dCkge1xuICAgICAgICBoYW5kbGVFcnJvcihFUlJPUl9CUk9XU0VSX1NVUFBPUlQsIEdFVF9BX1dFQkdMX0JST1dTRVIpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dChjYW52YXMsIG9wdEF0dHJpYnMpO1xuICAgIGlmICghY29udGV4dCkge1xuICAgICAgICBoYW5kbGVFcnJvcihFUlJPUl9PVEhFUiwgT1RIRVJfUFJPQkxFTSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29udGV4dC5nZXRFeHRlbnNpb24oJ09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcycpO1xuICAgIH1cbiAgICByZXR1cm4gY29udGV4dDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgd2ViZ2wgY29udGV4dC5cbiAqIEBwYXJhbSB7IUNhbnZhc30gY2FudmFzIFRoZSBjYW52YXMgdGFnIHRvIGdldCBjb250ZXh0XG4gKiAgICAgZnJvbS4gSWYgb25lIGlzIG5vdCBwYXNzZWQgaW4gb25lIHdpbGwgYmUgY3JlYXRlZC5cbiAqIEByZXR1cm4geyFXZWJHTENvbnRleHR9IFRoZSBjcmVhdGVkIGNvbnRleHQuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZTNEQ29udGV4dChjYW52YXMsIG9wdEF0dHJpYnMpIHtcbiAgICB2YXIgbmFtZXMgPSBbJ3dlYmdsJywgJ2V4cGVyaW1lbnRhbC13ZWJnbCddO1xuICAgIHZhciBjb250ZXh0ID0gbnVsbDtcbiAgICBmb3IgKHZhciBpaSA9IDA7IGlpIFx1MDAzYyBuYW1lcy5sZW5ndGg7ICsraWkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChuYW1lc1tpaV0sIG9wdEF0dHJpYnMpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb250ZXh0O1xufVxuXG4vKlxuICpcdENyZWF0ZSBhIFZlcnRleCBvZiBhIHNwZWNpZmljIHR5cGUgKGdsLlZFUlRFWF9TSEFERVIvKVxuICovXG5mdW5jdGlvbiBjcmVhdGVTaGFkZXIobWFpbiwgc291cmNlLCB0eXBlLCBvZmZzZXQpIHtcbiAgICB2YXIgZ2wgPSBtYWluLmdsO1xuXG4gICAgdmFyIHNoYWRlciA9IGdsLmNyZWF0ZVNoYWRlcih0eXBlKTtcbiAgICBnbC5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzb3VyY2UpO1xuICAgIGdsLmNvbXBpbGVTaGFkZXIoc2hhZGVyKTtcblxuICAgIHZhciBjb21waWxlZCA9IGdsLmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXIsIGdsLkNPTVBJTEVfU1RBVFVTKTtcblxuICAgIGlmICghY29tcGlsZWQpIHtcbiAgICAgICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIGNvbXBpbGF0aW9uOyBnZXQgdGhlIGVycm9yXG4gICAgICAgIGxhc3RFcnJvciA9IGdsLmdldFNoYWRlckluZm9Mb2coc2hhZGVyKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignKioqIEVycm9yIGNvbXBpbGluZyBzaGFkZXIgJyArIHNoYWRlciArICc6JyArIGxhc3RFcnJvcik7XG4gICAgICAgIG1haW4udHJpZ2dlcignZXJyb3InLCB7XG4gICAgICAgICAgICBzaGFkZXI6IHNoYWRlcixcbiAgICAgICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgIGVycm9yOiBsYXN0RXJyb3IsXG4gICAgICAgICAgICBvZmZzZXQ6IG9mZnNldCB8fCAwXG4gICAgICAgIH0pO1xuICAgICAgICBnbC5kZWxldGVTaGFkZXIoc2hhZGVyKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNoYWRlcjtcbn1cblxuLyoqXG4gKiBMb2FkcyBhIHNoYWRlci5cbiAqIEBwYXJhbSB7IVdlYkdMQ29udGV4dH0gZ2wgVGhlIFdlYkdMQ29udGV4dCB0byB1c2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gc2hhZGVyU291cmNlIFRoZSBzaGFkZXIgc291cmNlLlxuICogQHBhcmFtIHtudW1iZXJ9IHNoYWRlclR5cGUgVGhlIHR5cGUgb2Ygc2hhZGVyLlxuICogQHBhcmFtIHtmdW5jdGlvbihzdHJpbmcpOiB2b2lkKSBvcHRfZXJyb3JDYWxsYmFjayBjYWxsYmFjayBmb3IgZXJyb3JzLlxuICogQHJldHVybiB7IVdlYkdMU2hhZGVyfSBUaGUgY3JlYXRlZCBzaGFkZXIuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVByb2dyYW0obWFpbiwgc2hhZGVycywgb3B0QXR0cmlicywgb3B0TG9jYXRpb25zKSB7XG4gICAgdmFyIGdsID0gbWFpbi5nbDtcblxuICAgIHZhciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpO1xuICAgIGZvciAodmFyIGlpID0gMDsgaWkgXHUwMDNjIHNoYWRlcnMubGVuZ3RoOyArK2lpKSB7XG4gICAgICAgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXJzW2lpXSk7XG4gICAgfVxuICAgIGlmIChvcHRBdHRyaWJzKSB7XG4gICAgICAgIGZvciAodmFyIF9paSA9IDA7IF9paSBcdTAwM2Mgb3B0QXR0cmlicy5sZW5ndGg7ICsrX2lpKSB7XG4gICAgICAgICAgICBnbC5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgb3B0TG9jYXRpb25zID8gb3B0TG9jYXRpb25zW19paV0gOiBfaWksIG9wdEF0dHJpYnNbX2lpXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7XG5cbiAgICAvLyBDaGVjayB0aGUgbGluayBzdGF0dXNcbiAgICB2YXIgbGlua2VkID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyk7XG4gICAgaWYgKCFsaW5rZWQpIHtcbiAgICAgICAgLy8gc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgbGlua1xuICAgICAgICBsYXN0RXJyb3IgPSBnbC5nZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtKTtcbiAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHByb2dyYW0gbGlua2luZzonICsgbGFzdEVycm9yKTtcbiAgICAgICAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBwcm9ncmFtO1xufVxuXG4vLyBCeSBCcmV0dCBDYW1iZXIgb25cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YW5ncmFtcy90YW5ncmFtL2Jsb2IvbWFzdGVyL3NyYy9nbC9nbHNsLmpzXG5mdW5jdGlvbiBwYXJzZVVuaWZvcm1zKHVuaWZvcm1zKSB7XG4gICAgdmFyIHByZWZpeCA9IGFyZ3VtZW50cy5sZW5ndGggXHUwMDNlIDEgXHUwMDI2XHUwMDI2IGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogbnVsbDtcblxuICAgIHZhciBwYXJzZWQgPSBbXTtcblxuICAgIGZvciAodmFyIG5hbWUgaW4gdW5pZm9ybXMpIHtcbiAgICAgICAgdmFyIHVuaWZvcm0gPSB1bmlmb3Jtc1tuYW1lXTtcbiAgICAgICAgdmFyIHUgPSB2b2lkIDA7XG5cbiAgICAgICAgaWYgKHByZWZpeCkge1xuICAgICAgICAgICAgbmFtZSA9IHByZWZpeCArICcuJyArIG5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaW5nbGUgZmxvYXRcbiAgICAgICAgaWYgKHR5cGVvZiB1bmlmb3JtID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgcGFyc2VkLnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdmbG9hdCcsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnMWYnLFxuICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHVuaWZvcm1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFycmF5OiB2ZWN0b3IsIGFycmF5IG9mIGZsb2F0cywgYXJyYXkgb2YgdGV4dHVyZXMsIG9yIGFycmF5IG9mIHN0cnVjdHNcbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh1bmlmb3JtKSkge1xuICAgICAgICAgICAgICAgIC8vIE51bWVyaWMgdmFsdWVzXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB1bmlmb3JtWzBdID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBmbG9hdCB2ZWN0b3JzICh2ZWMyLCB2ZWMzLCB2ZWM0KVxuICAgICAgICAgICAgICAgICAgICBpZiAodW5pZm9ybS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZmxvYXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJzFmJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmlmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBmbG9hdCB2ZWN0b3JzICh2ZWMyLCB2ZWMzLCB2ZWM0KVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh1bmlmb3JtLmxlbmd0aCBcdTAwM2U9IDIgXHUwMDI2XHUwMDI2IHVuaWZvcm0ubGVuZ3RoIFx1MDAzYz0gNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3ZlYycgKyB1bmlmb3JtLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiB1bmlmb3JtLmxlbmd0aCArICdmdicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmlmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmbG9hdCBhcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodW5pZm9ybS5sZW5ndGggXHUwMDNlIDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Zsb2F0W10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnMWZ2JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUgKyAnWzBdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmlmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogYXNzdW1lIG1hdHJpeCBmb3IgKHR5cGVvZiA9PSBGbG9hdDMyQXJyYXkgXHUwMDI2XHUwMDI2IGxlbmd0aCA9PSAxNik/XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEFycmF5IG9mIHRleHR1cmVzXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHVuaWZvcm1bMF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3NhbXBsZXIyRCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnMWknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuaWZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIEFycmF5IG9mIGFycmF5cyAtIGJ1dCBvbmx5IGFycmF5cyBvZiB2ZWN0b3JzIGFyZSBhbGxvd2VkIGluIHRoaXMgY2FzZVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHVuaWZvcm1bMF0pIFx1MDAyNlx1MDAyNiB0eXBlb2YgdW5pZm9ybVswXVswXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmbG9hdCB2ZWN0b3JzICh2ZWMyLCB2ZWMzLCB2ZWM0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmlmb3JtWzBdLmxlbmd0aCBcdTAwM2U9IDIgXHUwMDI2XHUwMDI2IHVuaWZvcm1bMF0ubGVuZ3RoIFx1MDAzYz0gNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQgZWFjaCB2ZWN0b3IgaW4gdGhlIGFycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSA9IDA7IHUgXHUwMDNjIHVuaWZvcm0ubGVuZ3RoOyB1KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndmVjJyArIHVuaWZvcm1bMF0ubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogdW5pZm9ybVt1XS5sZW5ndGggKyAnZnYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUgKyAnWycgKyB1ICsgJ10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmlmb3JtW3VdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbHNlIGVycm9yP1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXJyYXkgb2Ygc3RydWN0dXJlc1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoX3R5cGVvZih1bmlmb3JtWzBdKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0gMDsgdSBcdTAwM2MgdW5pZm9ybS5sZW5ndGg7IHUrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGVhY2ggc3RydWN0IGluIHRoZSBhcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnB1c2guYXBwbHkocGFyc2VkLCB0b0NvbnN1bWFibGVBcnJheShwYXJzZVVuaWZvcm1zKHVuaWZvcm1bdV0sIG5hbWUgKyAnWycgKyB1ICsgJ10nKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQm9vbGVhblxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHVuaWZvcm0gPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYm9vbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICcxaScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuaWZvcm1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFRleHR1cmVcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdW5pZm9ybSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2FtcGxlcjJEJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICcxaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5pZm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gU3RydWN0dXJlXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCh0eXBlb2YgdW5pZm9ybSA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YodW5pZm9ybSkpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBlYWNoIGZpZWxkIGluIHRoZSBzdHJ1Y3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQucHVzaC5hcHBseShwYXJzZWQsIHRvQ29uc3VtYWJsZUFycmF5KHBhcnNlVW5pZm9ybXModW5pZm9ybSwgbmFtZSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgLy8gVE9ETzogc3VwcG9ydCBvdGhlciBub24tZmxvYXQgdHlwZXM/IChpbnQsIGV0Yy4pXG4gICAgfVxuICAgIHJldHVybiBwYXJzZWQ7XG59XG5cbmZ1bmN0aW9uIGlzQ2FudmFzVmlzaWJsZShjYW52YXMpIHtcbiAgICB2YXIgYm91bmQgPSBjYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgcmV0dXJuIGJvdW5kLnRvcCArIGJvdW5kLmhlaWdodCBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgYm91bmQudG9wIFx1MDAzYyAod2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpO1xufVxuXG5mdW5jdGlvbiBpc1Bvd2VyT2YyKHZhbHVlKSB7XG4gICAgcmV0dXJuICh2YWx1ZSBcdTAwMjYgdmFsdWUgLSAxKSA9PT0gMDtcbn1cblxuZnVuY3Rpb24gaXNTYWZhcmkoKSB7XG4gICAgcmV0dXJuICgvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpXG4gICAgKTtcbn1cblxuXG5cblxuXG5cblxuZnVuY3Rpb24gaXNEaWZmKGEsIGIpIHtcbiAgICBpZiAoYSBcdTAwMjZcdTAwMjYgYikge1xuICAgICAgICByZXR1cm4gYS50b1N0cmluZygpICE9PSBiLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0RmlsZSh1cmwpIHtcbiAgICB2YXIgaHR0cFJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICBodHRwUmVxdWVzdC5vcGVuKFwiR0VUXCIsIHVybCwgZmFsc2UpO1xuICAgIGh0dHBSZXF1ZXN0LnNlbmQoKTtcbiAgICBpZiAoaHR0cFJlcXVlc3Quc3RhdHVzID09IDIwMCkgcmV0dXJuIGh0dHBSZXF1ZXN0LnJlc3BvbnNlVGV4dDtlbHNlIHJldHVybiBcIlwiO1xufVxuXG5mdW5jdGlvbiBzdWJzY3JpYmVNaXhpbiQxKHRhcmdldCkge1xuICAgIHZhciBsaXN0ZW5lcnMgPSBuZXcgU2V0KCk7XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih0YXJnZXQsIHtcbiAgICAgICAgb246IGZ1bmN0aW9uIG9uKHR5cGUsIGYpIHtcbiAgICAgICAgICAgIHZhciBsaXN0ZW5lciA9IHt9O1xuICAgICAgICAgICAgbGlzdGVuZXJbdHlwZV0gPSBmO1xuICAgICAgICAgICAgbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7XG4gICAgICAgIH0sXG4gICAgICAgIG9mZjogZnVuY3Rpb24gb2ZmKHR5cGUsIGYpIHtcbiAgICAgICAgICAgIGlmIChmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxpc3RlbmVyID0ge307XG4gICAgICAgICAgICAgICAgbGlzdGVuZXJbdHlwZV0gPSBmO1xuICAgICAgICAgICAgICAgIGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdmFyIF9pdGVyYXRvckVycm9yID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gbGlzdGVuZXJzW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBfc3RlcC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IyID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBPYmplY3Qua2V5cyhpdGVtKVtTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMjsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IChfc3RlcDIgPSBfaXRlcmF0b3IyLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gX3N0ZXAyLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IHR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVycy5kZWxldGUoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvckVycm9yMiA9IGVycjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiBcdTAwMjZcdTAwMjYgX2l0ZXJhdG9yMi5yZXR1cm4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIucmV0dXJuKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBfaXRlcmF0b3JFcnJvciA9IGVycjtcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uIFx1MDAyNlx1MDAyNiBfaXRlcmF0b3IucmV0dXJuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yLnJldHVybigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGxpc3RTdWJzY3JpcHRpb25zOiBmdW5jdGlvbiBsaXN0U3Vic2NyaXB0aW9ucygpIHtcbiAgICAgICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IHRydWU7XG4gICAgICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IzID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IzID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSBsaXN0ZW5lcnNbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDM7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgPSAoX3N0ZXAzID0gX2l0ZXJhdG9yMy5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBfc3RlcDMudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3JFcnJvcjMgPSBlcnI7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgXHUwMDI2XHUwMDI2IF9pdGVyYXRvcjMucmV0dXJuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfaXRlcmF0b3IzLnJldHVybigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzdWJzY3JpYmU6IGZ1bmN0aW9uIHN1YnNjcmliZShsaXN0ZW5lcikge1xuICAgICAgICAgICAgbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7XG4gICAgICAgIH0sXG4gICAgICAgIHVuc3Vic2NyaWJlOiBmdW5jdGlvbiB1bnN1YnNjcmliZShsaXN0ZW5lcikge1xuICAgICAgICAgICAgbGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcik7XG4gICAgICAgIH0sXG4gICAgICAgIHVuc3Vic2NyaWJlQWxsOiBmdW5jdGlvbiB1bnN1YnNjcmliZUFsbCgpIHtcbiAgICAgICAgICAgIGxpc3RlbmVycy5jbGVhcigpO1xuICAgICAgICB9LFxuICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbiB0cmlnZ2VyKGV2ZW50KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgZGF0YSA9IEFycmF5KF9sZW4gXHUwMDNlIDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSBcdTAwM2MgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgICAgICAgICAgZGF0YVtfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCA9IHRydWU7XG4gICAgICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3I0ID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3I0ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjQgPSBsaXN0ZW5lcnNbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDQ7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQgPSAoX3N0ZXA0ID0gX2l0ZXJhdG9yNC5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCA9IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxpc3RlbmVyID0gX3N0ZXA0LnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXJbZXZlbnRdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcltldmVudF0uYXBwbHkobGlzdGVuZXIsIHRvQ29uc3VtYWJsZUFycmF5KGRhdGEpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNCA9IHRydWU7XG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yRXJyb3I0ID0gZXJyO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb240IFx1MDAyNlx1MDAyNiBfaXRlcmF0b3I0LnJldHVybikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yNC5yZXR1cm4oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yNDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG4vLyBUZXh0dXJlIG1hbmFnZW1lbnRcbi8vIEdMIHRleHR1cmUgd3JhcHBlciBvYmplY3QgZm9yIGtlZXBpbmcgdHJhY2sgb2YgYSBnbG9iYWwgc2V0IG9mIHRleHR1cmVzLCBrZXllZCBieSBhIHVuaXF1ZSB1c2VyLWRlZmluZWQgbmFtZVxuXG52YXIgVGV4dHVyZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBUZXh0dXJlKGdsLCBuYW1lKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCBcdTAwM2UgMiBcdTAwMjZcdTAwMjYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTtcbiAgICAgICAgY2xhc3NDYWxsQ2hlY2sodGhpcywgVGV4dHVyZSk7XG5cbiAgICAgICAgc3Vic2NyaWJlTWl4aW4kMSh0aGlzKTtcblxuICAgICAgICB0aGlzLmdsID0gZ2w7XG4gICAgICAgIHRoaXMudGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTtcbiAgICAgICAgaWYgKHRoaXMudGV4dHVyZSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iaW5kKCk7XG5cbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICAgICAgICB0aGlzLnNvdXJjZVR5cGUgPSBudWxsO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBudWxsOyAvLyBhIFByb21pc2Ugb2JqZWN0IHRvIHRyYWNrIHRoZSBsb2FkaW5nIHN0YXRlIG9mIHRoaXMgdGV4dHVyZVxuXG4gICAgICAgIC8vIERlZmF1bHQgdG8gYSAxLXBpeGVsIGJsYWNrIHRleHR1cmUgc28gd2UgY2FuIHNhZmVseSByZW5kZXIgd2hpbGUgd2Ugd2FpdCBmb3IgYW4gaW1hZ2UgdG8gbG9hZFxuICAgICAgICAvLyBTZWU6IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTk3MjIyNDcvd2ViZ2wtd2FpdC1mb3ItdGV4dHVyZS10by1sb2FkXG4gICAgICAgIHRoaXMuc2V0RGF0YSgxLCAxLCBuZXcgVWludDhBcnJheShbMCwgMCwgMCwgMjU1XSksIHsgZmlsdGVyaW5nOiAnbGluZWFyJyB9KTtcbiAgICAgICAgdGhpcy5zZXRGaWx0ZXJpbmcob3B0aW9ucy5maWx0ZXJpbmcpO1xuXG4gICAgICAgIHRoaXMubG9hZChvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvLyBEZXN0cm95IGEgc2luZ2xlIHRleHR1cmUgaW5zdGFuY2VcblxuXG4gICAgY3JlYXRlQ2xhc3MoVGV4dHVyZSwgW3tcbiAgICAgICAga2V5OiAnZGVzdHJveScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5nbC5kZWxldGVUZXh0dXJlKHRoaXMudGV4dHVyZSk7XG4gICAgICAgICAgICB0aGlzLnRleHR1cmUgPSBudWxsO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuZGF0YTtcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2JpbmQnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gYmluZCh1bml0KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHVuaXQgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgaWYgKFRleHR1cmUuYWN0aXZlVW5pdCAhPT0gdW5pdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdsLmFjdGl2ZVRleHR1cmUodGhpcy5nbC5URVhUVVJFMCArIHVuaXQpO1xuICAgICAgICAgICAgICAgICAgICBUZXh0dXJlLmFjdGl2ZVVuaXQgPSB1bml0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChUZXh0dXJlLmFjdGl2ZVRleHR1cmUgIT09IHRoaXMudGV4dHVyZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2wuYmluZFRleHR1cmUodGhpcy5nbC5URVhUVVJFXzJELCB0aGlzLnRleHR1cmUpO1xuICAgICAgICAgICAgICAgIFRleHR1cmUuYWN0aXZlVGV4dHVyZSA9IHRoaXMudGV4dHVyZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnbG9hZCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBsb2FkKCkge1xuICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMudXJsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnVybCA9PT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMudXJsICE9PSB0aGlzLnVybCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFVybChvcHRpb25zLnVybCwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEVsZW1lbnQob3B0aW9ucy5lbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhIFx1MDAyNlx1MDAyNiBvcHRpb25zLndpZHRoIFx1MDAyNlx1MDAyNiBvcHRpb25zLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YShvcHRpb25zLndpZHRoLCBvcHRpb25zLmhlaWdodCwgb3B0aW9ucy5kYXRhLCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldHMgdGV4dHVyZSBmcm9tIGFuIHVybFxuXG4gICAgfSwge1xuICAgICAgICBrZXk6ICdzZXRVcmwnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gc2V0VXJsKHVybCkge1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIFx1MDAzZSAxIFx1MDAyNlx1MDAyNiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudXJsID0gdXJsOyAvLyBzYXZlIFVSTCByZWZlcmVuY2UgKHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2hlbiBlbGVtZW50IGlzIGxvYWRlZCBiZWxvdylcbiAgICAgICAgICAgIHRoaXMuc291cmNlID0gdGhpcy51cmw7XG4gICAgICAgICAgICB0aGlzLnNvdXJjZVR5cGUgPSAndXJsJztcblxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgICAgIHZhciBleHQgPSB1cmwuc3BsaXQoJy4nKS5wb3AoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHZhciBpc1ZpZGVvID0gZXh0ID09PSAnb2d2JyB8fCBleHQgPT09ICd3ZWJtJyB8fCBleHQgPT09ICdtcDQnO1xuXG4gICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgaWYgKGlzVmlkZW8pIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYXV0b3BsYXkgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubXV0ZWQgPSB0cnVlOyAvKiByZXF1aXJlZCBmb3IgbW9kZXJuIGJyb3dzZXJzIHRvIGF1dG9wbGF5IHZpZGVvICovXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5wbGF5KCk7IC8qIGRvZXNuJ3QgYmxvY2sgcHJvbWlzZSBidXQgbmVlZHMgYSBtb3JlIGVsZWdhbnQgc29sdXRpb24gKi9cbiAgICAgICAgICAgICAgICAgICAgfSwgMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5maWx0ZXJpbmcgPSAnbmVhcmVzdCc7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQucHJlbG9hZCA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgICAgICAgICAvLyBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlbGVtZW50Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnNldEVsZW1lbnQoZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdUZXh0dXJlIFxcJycgKyBfdGhpcy5uYW1lICsgJ1xcJzogZmFpbGVkIHRvIGxvYWQgdXJsOiBcXCcnICsgX3RoaXMuc291cmNlICsgJ1xcJycsIGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoX3RoaXMpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZWxlbWVudC5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2FybiBhbmQgcmVzb2x2ZSBvbiBlcnJvclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnVGV4dHVyZSBcXCcnICsgX3RoaXMubmFtZSArICdcXCc6IGZhaWxlZCB0byBsb2FkIHVybDogXFwnJyArIF90aGlzLnNvdXJjZSArICdcXCcnLCBlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShfdGhpcyk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIC8vIFNhZmFyaSBoYXMgYSBidWcgbG9hZGluZyBkYXRhLVVSTCBlbGVtZW50cyB3aXRoIENPUlMgZW5hYmxlZCwgc28gaXQgbXVzdCBiZSBkaXNhYmxlZCBpbiB0aGF0IGNhc2VcbiAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzOTc4XG4gICAgICAgICAgICAgICAgaWYgKCEoaXNTYWZhcmkoKSBcdTAwMjZcdTAwMjYgX3RoaXMuc291cmNlLnNsaWNlKDAsIDUpID09PSAnZGF0YTonKSkge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZWxlbWVudC5zcmMgPSBfdGhpcy5zb3VyY2U7XG4gICAgICAgICAgICAgICAgaWYgKGlzVmlkZW8pIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuc2V0RWxlbWVudChlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXRzIHRleHR1cmUgdG8gYSByYXcgaW1hZ2UgYnVmZmVyXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3NldERhdGEnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gc2V0RGF0YSh3aWR0aCwgaGVpZ2h0LCBkYXRhKSB7XG4gICAgICAgICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggXHUwMDNlIDMgXHUwMDI2XHUwMDI2IGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDoge307XG5cbiAgICAgICAgICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuXG4gICAgICAgICAgICB0aGlzLnNvdXJjZSA9IGRhdGE7XG4gICAgICAgICAgICB0aGlzLnNvdXJjZVR5cGUgPSAnZGF0YSc7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlKG9wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJpbmcob3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IFByb21pc2UucmVzb2x2ZSh0aGlzKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXRzIHRoZSB0ZXh0dXJlIHRvIHRyYWNrIGEgZWxlbWVudCAoY2FudmFzL2ltYWdlKVxuXG4gICAgfSwge1xuICAgICAgICBrZXk6ICdzZXRFbGVtZW50JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHNldEVsZW1lbnQoZWxlbWVudCwgb3B0aW9ucykge1xuICAgICAgICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgICAgICAgIHZhciBlbCA9IGVsZW1lbnQ7XG5cbiAgICAgICAgICAgIC8vIGEgc3RyaW5nIGVsZW1lbnQgaXMgaW50ZXJwZXRlZCBhcyBhIENTUyBzZWxlY3RvclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50IHx8IGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50IHx8IGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zb3VyY2UgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIHRoaXMuc291cmNlVHlwZSA9ICdlbGVtZW50JztcblxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTFZpZGVvRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndpZHRoID0gdGhpcy5zb3VyY2UudmlkZW9XaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLnNvdXJjZS52aWRlb0hlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjYW5wbGF5dGhyb3VnaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzMi5pbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzMi51cGRhdGUob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxNSk7XG4gICAgICAgICAgICAgICAgICAgIH0sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5jdXJyZW50VGltZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnBsYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGUob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyaW5nKG9wdGlvbnMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgbXNnID0gJ3RoZSBcXCdlbGVtZW50XFwnIHBhcmFtZXRlciAoYGVsZW1lbnQ6ICcgKyBKU09OLnN0cmluZ2lmeShlbCkgKyAnYCkgbXVzdCBiZSBhIENTUyAnO1xuICAgICAgICAgICAgICAgIG1zZyArPSAnc2VsZWN0b3Igc3RyaW5nLCBvciBhIFx1MDAzY2NhbnZhc1x1MDAzZSwgXHUwMDNjaW1hZ2VcdTAwM2Ugb3IgXHUwMDNjdmlkZW9cdTAwM2Ugb2JqZWN0JztcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnVGV4dHVyZSBcXCcnICsgdGhpcy5uYW1lICsgJ1xcJzogJyArIG1zZywgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IFByb21pc2UucmVzb2x2ZSh0aGlzKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVcGxvYWRzIGN1cnJlbnQgaW1hZ2Ugb3IgYnVmZmVyIHRvIHRoZSBHUFUgKGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSBhbmltYXRlZCB0ZXh0dXJlcyBvbiB0aGUgZmx5KVxuXG4gICAgfSwge1xuICAgICAgICBrZXk6ICd1cGRhdGUnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuYmluZCgpO1xuICAgICAgICAgICAgdGhpcy5nbC5waXhlbFN0b3JlaSh0aGlzLmdsLlVOUEFDS19GTElQX1lfV0VCR0wsIG9wdGlvbnMuVU5QQUNLX0ZMSVBfWV9XRUJHTCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWUpO1xuICAgICAgICAgICAgdGhpcy5nbC5waXhlbFN0b3JlaSh0aGlzLmdsLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCwgb3B0aW9ucy5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wgfHwgZmFsc2UpO1xuXG4gICAgICAgICAgICAvLyBJbWFnZSBvciBDYW52YXMgZWxlbWVudFxuICAgICAgICAgICAgaWYgKHRoaXMuc291cmNlVHlwZSA9PT0gJ2VsZW1lbnQnIFx1MDAyNlx1MDAyNiAodGhpcy5zb3VyY2UgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudCB8fCB0aGlzLnNvdXJjZSBpbnN0YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQgfHwgdGhpcy5zb3VyY2UgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50IFx1MDAyNlx1MDAyNiB0aGlzLnNvdXJjZS5jb21wbGV0ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3VyY2UgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2lkdGggPSB0aGlzLnNvdXJjZS52aWRlb1dpZHRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlaWdodCA9IHRoaXMuc291cmNlLnZpZGVvSGVpZ2h0O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2lkdGggPSB0aGlzLnNvdXJjZS53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLnNvdXJjZS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZ2wudGV4SW1hZ2UyRCh0aGlzLmdsLlRFWFRVUkVfMkQsIDAsIHRoaXMuZ2wuUkdCQSwgdGhpcy5nbC5SR0JBLCB0aGlzLmdsLlVOU0lHTkVEX0JZVEUsIHRoaXMuc291cmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFJhdyBpbWFnZSBidWZmZXJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc291cmNlVHlwZSA9PT0gJ2RhdGEnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2wudGV4SW1hZ2UyRCh0aGlzLmdsLlRFWFRVUkVfMkQsIDAsIHRoaXMuZ2wuUkdCQSwgdGhpcy53aWR0aCwgdGhpcy5oZWlnaHQsIDAsIHRoaXMuZ2wuUkdCQSwgdGhpcy5nbC5VTlNJR05FRF9CWVRFLCB0aGlzLnNvdXJjZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCdsb2FkZWQnLCB0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERldGVybWluZXMgYXBwcm9wcmlhdGUgZmlsdGVyaW5nIG1vZGVcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnc2V0RmlsdGVyaW5nJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHNldEZpbHRlcmluZygpIHtcbiAgICAgICAgICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnBvd2VyT2YyID0gaXNQb3dlck9mMih0aGlzLndpZHRoKSBcdTAwMjZcdTAwMjYgaXNQb3dlck9mMih0aGlzLmhlaWdodCk7XG4gICAgICAgICAgICAvLyBsZXQgZGVmdWFsdEZpbHRlciA9ICh0aGlzLnBvd2VyT2YyID8gJ21pcG1hcCcgOiAnbGluZWFyJyk7XG4gICAgICAgICAgICAvLyB0aGlzLmZpbHRlcmluZyA9IG9wdGlvbnMuZmlsdGVyaW5nIHx8IGRlZnVhbHRGaWx0ZXI7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmluZyA9IG9wdGlvbnMuZmlsdGVyaW5nIHx8ICdsaW5lYXInO1xuXG4gICAgICAgICAgICB2YXIgZ2wgPSB0aGlzLmdsO1xuICAgICAgICAgICAgdGhpcy5iaW5kKCk7XG5cbiAgICAgICAgICAgIC8vIEZvciBwb3dlci1vZi0yIHRleHR1cmVzLCB0aGUgZm9sbG93aW5nIHByZXNldHMgYXJlIGF2YWlsYWJsZTpcbiAgICAgICAgICAgIC8vIG1pcG1hcDogbGluZWFyIGJsZW5kIGZyb20gbmVhcmVzdCBtaXBcbiAgICAgICAgICAgIC8vIGxpbmVhcjogbGluZWFyIGJsZW5kIGZyb20gb3JpZ2luYWwgaW1hZ2UgKG5vIG1pcHMpXG4gICAgICAgICAgICAvLyBuZWFyZXN0OiBuZWFyZXN0IHBpeGVsIGZyb20gb3JpZ2luYWwgaW1hZ2UgKG5vIG1pcHMsICdibG9ja3knIGxvb2spXG4gICAgICAgICAgICBpZiAodGhpcy5wb3dlck9mMikge1xuICAgICAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIG9wdGlvbnMuVEVYVFVSRV9XUkFQX1MgfHwgZ2wuUkVQRUFUKTtcbiAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBvcHRpb25zLlRFWFRVUkVfV1JBUF9UIHx8IGdsLlJFUEVBVCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJpbmcgPT09ICdtaXBtYXAnKSB7XG4gICAgICAgICAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVJfTUlQTUFQX0xJTkVBUik7IC8vIFRPRE86IHVzZSB0cmlsaW5lYXIgZmlsdGVyaW5nIGJ5IGRlZnVhbHQgaW5zdGVhZD9cbiAgICAgICAgICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7XG4gICAgICAgICAgICAgICAgICAgIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5maWx0ZXJpbmcgPT09ICdsaW5lYXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpO1xuICAgICAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyaW5nID09PSAnbmVhcmVzdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpO1xuICAgICAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBXZWJHTCBoYXMgc3RyaWN0IHJlcXVpcmVtZW50cyBvbiBub24tcG93ZXItb2YtMiB0ZXh0dXJlczpcbiAgICAgICAgICAgICAgICAvLyBObyBtaXBtYXBzIGFuZCBtdXN0IGNsYW1wIHRvIGVkZ2VcbiAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTtcbiAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcmluZyA9PT0gJ21pcG1hcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJpbmcgPSAnbGluZWFyJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJpbmcgPT09ICduZWFyZXN0Jykge1xuICAgICAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7XG4gICAgICAgICAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHRvIGxpbmVhciBmb3Igbm9uLXBvd2VyLW9mLTIgdGV4dHVyZXNcbiAgICAgICAgICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7XG4gICAgICAgICAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1dKTtcbiAgICByZXR1cm4gVGV4dHVyZTtcbn0oKTtcblxuVGV4dHVyZS5nZXRNYXhUZXh0dXJlU2l6ZSA9IGZ1bmN0aW9uIChnbCkge1xuICAgIHJldHVybiBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1RFWFRVUkVfU0laRSk7XG59O1xuXG4vLyBHbG9iYWwgc2V0IG9mIHRleHR1cmVzLCBieSBuYW1lXG5UZXh0dXJlLmFjdGl2ZVVuaXQgPSAtMTtcblxuLypcblRoZSBNSVQgTGljZW5zZSAoTUlUKVxuXG5Db3B5cmlnaHQgKGMpIDIwMTUgUGF0cmljaW8gR29uemFsZXogVml2byAoIGh0dHA6Ly93d3cucGF0cmljaW9nb256YWxlenZpdm8uY29tIClcblxuUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZlxudGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgJ1NvZnR3YXJlJyksIHRvIGRlYWwgaW5cbnRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG9cbnVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mXG50aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sXG5zdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG5jb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgJ0FTIElTJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1NcbkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUlxuQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSXG5JTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTlxuQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiovXG5cbnZhciBHbHNsQ2FudmFzID0gZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEdsc2xDYW52YXMoY2FudmFzLCBjb250ZXh0T3B0aW9ucywgb3B0aW9ucykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAgIGNsYXNzQ2FsbENoZWNrKHRoaXMsIEdsc2xDYW52YXMpO1xuXG4gICAgICAgIHN1YnNjcmliZU1peGluJDEodGhpcyk7XG5cbiAgICAgICAgY29udGV4dE9wdGlvbnMgPSBjb250ZXh0T3B0aW9ucyB8fCB7fTtcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgICAgaWYgKGNhbnZhcy5oYXNBdHRyaWJ1dGUoJ2RhdGEtZnVsbHNjcmVlbicpIFx1MDAyNlx1MDAyNiAoY2FudmFzLmdldEF0dHJpYnV0ZSgnZGF0YS1mdWxsc2NyZWVuJykgPT0gXCIxXCIgfHwgY2FudmFzLmdldEF0dHJpYnV0ZSgnZGF0YS1mdWxsc2NyZWVuJykgPT0gXCJ0cnVlXCIpKSB7XG4gICAgICAgICAgICB0aGlzLndpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgICAgICB0aGlzLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMud2lkdGggPSBjYW52YXMuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICB0aGlzLmhlaWdodCA9IGNhbnZhcy5jbGllbnRIZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhbnZhcyA9IGNhbnZhcztcbiAgICAgICAgdGhpcy5nbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5kZXBzID0ge307XG4gICAgICAgIHRoaXMucHJvZ3JhbSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy50ZXh0dXJlcyA9IHt9O1xuICAgICAgICB0aGlzLmJ1ZmZlcnMgPSB7fTtcbiAgICAgICAgdGhpcy51bmlmb3JtcyA9IHt9O1xuICAgICAgICB0aGlzLnZibyA9IHt9O1xuICAgICAgICB0aGlzLmlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hbmltYXRpb25GcmFtZVJlcXVlc3QgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5CVUZGRVJfQ09VTlQgPSAwO1xuICAgICAgICAvLyB0aGlzLlRFWFRVUkVfQ09VTlQgPSAwO1xuXG4gICAgICAgIHRoaXMudmVydGV4U3RyaW5nID0gY29udGV4dE9wdGlvbnMudmVydGV4U3RyaW5nIHx8ICdcXG4jaWZkZWYgR0xfRVNcXG5wcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcXG4jZW5kaWZcXG5cXG5hdHRyaWJ1dGUgdmVjMiBhX3Bvc2l0aW9uO1xcbmF0dHJpYnV0ZSB2ZWMyIGFfdGV4Y29vcmQ7XFxuXFxudmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbiwgMC4wLCAxLjApO1xcbiAgICB2X3RleGNvb3JkID0gYV90ZXhjb29yZDtcXG59XFxuJztcbiAgICAgICAgdGhpcy5mcmFnbWVudFN0cmluZyA9IGNvbnRleHRPcHRpb25zLmZyYWdtZW50U3RyaW5nIHx8ICdcXG4jaWZkZWYgR0xfRVNcXG5wcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcXG4jZW5kaWZcXG5cXG52YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDtcXG5cXG52b2lkIG1haW4oKXtcXG4gICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xcbn1cXG4nO1xuXG4gICAgICAgIC8vIEdMIENvbnRleHRcbiAgICAgICAgdmFyIGdsID0gc2V0dXBXZWJHTChjYW52YXMsIGNvbnRleHRPcHRpb25zLCBvcHRpb25zLm9uRXJyb3IpO1xuICAgICAgICBpZiAoIWdsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nbCA9IGdsO1xuICAgICAgICB0aGlzLnRpbWVMb2FkID0gdGhpcy50aW1lUHJldiA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgICAgICB0aGlzLnRpbWVEZWx0YSA9IDAuMDtcbiAgICAgICAgdGhpcy5mb3JjZVJlbmRlciA9IHRydWU7XG4gICAgICAgIHRoaXMucGF1c2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVhbFRvQ1NTUGl4ZWxzID0gd2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMTtcblxuICAgICAgICAvLyBBbGxvdyBhbHBoYVxuICAgICAgICBjYW52YXMuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gY29udGV4dE9wdGlvbnMuYmFja2dyb3VuZENvbG9yIHx8ICdyZ2JhKDEsMSwxLDApJztcblxuICAgICAgICAvLyBMb2FkIHNoYWRlclxuICAgICAgICBpZiAoY2FudmFzLmhhc0F0dHJpYnV0ZSgnZGF0YS1mcmFnbWVudCcpKSB7XG4gICAgICAgICAgICB0aGlzLmZyYWdtZW50U3RyaW5nID0gY2FudmFzLmdldEF0dHJpYnV0ZSgnZGF0YS1mcmFnbWVudCcpO1xuICAgICAgICB9IGVsc2UgaWYgKGNhbnZhcy5oYXNBdHRyaWJ1dGUoJ2RhdGEtZnJhZ21lbnQtdXJsJykpIHtcbiAgICAgICAgICAgIHZhciBzb3VyY2UgPSBjYW52YXMuZ2V0QXR0cmlidXRlKCdkYXRhLWZyYWdtZW50LXVybCcpO1xuICAgICAgICAgICAgeGhyLmdldChzb3VyY2UsIGZ1bmN0aW9uIChlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5sb2FkKGJvZHksIF90aGlzLnZlcnRleFN0cmluZyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExvYWQgc2hhZGVyXG4gICAgICAgIGlmIChjYW52YXMuaGFzQXR0cmlidXRlKCdkYXRhLXZlcnRleCcpKSB7XG4gICAgICAgICAgICB0aGlzLnZlcnRleFN0cmluZyA9IGNhbnZhcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmVydGV4Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2FudmFzLmhhc0F0dHJpYnV0ZSgnZGF0YS12ZXJ0ZXgtdXJsJykpIHtcbiAgICAgICAgICAgIHZhciBfc291cmNlID0gY2FudmFzLmdldEF0dHJpYnV0ZSgnZGF0YS12ZXJ0ZXgtdXJsJyk7XG4gICAgICAgICAgICB4aHIuZ2V0KF9zb3VyY2UsIGZ1bmN0aW9uIChlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5sb2FkKF90aGlzLmZyYWdtZW50U3RyaW5nLCBib2R5KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2FkKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnByb2dyYW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERlZmluZSBWZXJ0ZXggYnVmZmVyXG4gICAgICAgIHZhciB0ZXhDb29yZHNMb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbih0aGlzLnByb2dyYW0sICdhX3RleGNvb3JkJyk7XG4gICAgICAgIHRoaXMudmJvLnRleENvb3JkcyA9IGdsLmNyZWF0ZUJ1ZmZlcigpO1xuICAgICAgICB0aGlzLmdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB0aGlzLnZiby50ZXhDb29yZHMpO1xuICAgICAgICB0aGlzLmdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFswLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDEuMCwgMS4wLCAwLjAsIDEuMCwgMS4wXSksIGdsLlNUQVRJQ19EUkFXKTtcbiAgICAgICAgdGhpcy5nbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh0ZXhDb29yZHNMb2MpO1xuICAgICAgICB0aGlzLmdsLnZlcnRleEF0dHJpYlBvaW50ZXIodGV4Q29vcmRzTG9jLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApO1xuXG4gICAgICAgIHZhciB2ZXJ0aWNlc0xvYyA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHRoaXMucHJvZ3JhbSwgJ2FfcG9zaXRpb24nKTtcbiAgICAgICAgdGhpcy52Ym8udmVydGljZXMgPSBnbC5jcmVhdGVCdWZmZXIoKTtcbiAgICAgICAgdGhpcy5nbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdGhpcy52Ym8udmVydGljZXMpO1xuICAgICAgICB0aGlzLmdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFstMS4wLCAtMS4wLCAxLjAsIC0xLjAsIC0xLjAsIDEuMCwgLTEuMCwgMS4wLCAxLjAsIC0xLjAsIDEuMCwgMS4wXSksIGdsLlNUQVRJQ19EUkFXKTtcbiAgICAgICAgdGhpcy5nbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh2ZXJ0aWNlc0xvYyk7XG4gICAgICAgIHRoaXMuZ2wudmVydGV4QXR0cmliUG9pbnRlcih2ZXJ0aWNlc0xvYywgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTtcblxuICAgICAgICAvLyBsb2FkIFRFWFRVUkVTXG4gICAgICAgIGlmIChjYW52YXMuaGFzQXR0cmlidXRlKCdkYXRhLXRleHR1cmVzJykpIHtcbiAgICAgICAgICAgIHZhciBpbWdMaXN0ID0gY2FudmFzLmdldEF0dHJpYnV0ZSgnZGF0YS10ZXh0dXJlcycpLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICBmb3IgKHZhciBuSW1nIGluIGltZ0xpc3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFVuaWZvcm0oJ3VfdGV4JyArIG5JbWcsIGltZ0xpc3RbbkltZ10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT0gRVZFTlRTXG4gICAgICAgIHZhciBtb3VzZSA9IHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAwXG4gICAgICAgIH07XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBtb3VzZS54ID0gZS5jbGllbnRYIHx8IGUucGFnZVg7XG4gICAgICAgICAgICBtb3VzZS55ID0gZS5jbGllbnRZIHx8IGUucGFnZVk7XG4gICAgICAgIH0sIGZhbHNlKTtcblxuICAgICAgICB2YXIgc2FuZGJveCA9IHRoaXM7XG4gICAgICAgIGZ1bmN0aW9uIFJlbmRlckxvb3AoKSB7XG4gICAgICAgICAgICBpZiAoc2FuZGJveC5uTW91c2UgXHUwMDNlIDEpIHtcbiAgICAgICAgICAgICAgICBzYW5kYm94LnNldE1vdXNlKG1vdXNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNhbmRib3gucmVzaXplKCkpIHtcbiAgICAgICAgICAgICAgICBzYW5kYm94LmZvcmNlUmVuZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2FuZGJveC5yZW5kZXIoKTtcbiAgICAgICAgICAgIHNhbmRib3guYW5pbWF0aW9uRnJhbWVSZXF1ZXN0ID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShSZW5kZXJMb29wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0YXJ0XG4gICAgICAgIHRoaXMuc2V0TW91c2UoeyB4OiAwLCB5OiAwIH0pO1xuICAgICAgICBSZW5kZXJMb29wKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNyZWF0ZUNsYXNzKEdsc2xDYW52YXMsIFt7XG4gICAgICAgIGtleTogJ2Rlc3Ryb3knLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgICAgIC8vIFN0b3AgdGhlIGFuaW1hdGlvblxuICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRpb25GcmFtZVJlcXVlc3QpO1xuXG4gICAgICAgICAgICB0aGlzLmFuaW1hdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAodmFyIHRleCBpbiB0aGlzLnRleHR1cmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRleC5kZXN0cm95KSB7XG4gICAgICAgICAgICAgICAgICAgIHRleC5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50ZXh0dXJlcyA9IHt9O1xuICAgICAgICAgICAgZm9yICh2YXIgYXR0IGluIHRoaXMuYXR0cmlicykge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2wuZGVsZXRlQnVmZmVyKHRoaXMuYXR0cmlic1thdHRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZ2wudXNlUHJvZ3JhbShudWxsKTtcbiAgICAgICAgICAgIHRoaXMuZ2wuZGVsZXRlUHJvZ3JhbSh0aGlzLnByb2dyYW0pO1xuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuYnVmZmVycykge1xuICAgICAgICAgICAgICAgIHZhciBidWZmZXIgPSB0aGlzLmJ1ZmZlcnNba2V5XTtcbiAgICAgICAgICAgICAgICB0aGlzLmdsLmRlbGV0ZVByb2dyYW0oYnVmZmVyLnByb2dyYW0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnByb2dyYW0gPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5nbCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2xvYWQnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gbG9hZChmcmFnU3RyaW5nLCB2ZXJ0U3RyaW5nKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgICAgICAgLy8gTG9hZCB2ZXJ0ZXggc2hhZGVyIGlmIHRoZXJlIGlzIG9uZVxuICAgICAgICAgICAgaWYgKHZlcnRTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZlcnRleFN0cmluZyA9IHZlcnRTdHJpbmc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIExvYWQgZnJhZ21lbnQgc2hhZGVyIGlmIHRoZXJlIGlzIG9uZVxuICAgICAgICAgICAgaWYgKGZyYWdTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZyYWdtZW50U3RyaW5nID0gZnJhZ1N0cmluZztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGxpbmVzID0gdGhpcy5mcmFnbWVudFN0cmluZy5zcGxpdCgvXFxyP1xcbi8pO1xuICAgICAgICAgICAgdGhpcy5mcmFnbWVudFN0cmluZyA9IFwiI2RlZmluZSBQTEFURk9STV9XRUJHTFxcbiNsaW5lIDBcXG5cIjtcblxuICAgICAgICAgICAgbGluZXMuZm9yRWFjaChmdW5jdGlvbiAobGluZSwgaSkge1xuICAgICAgICAgICAgICAgIHZhciBsaW5lX3RyaW0gPSBsaW5lLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBpZiAobGluZV90cmltLnN0YXJ0c1dpdGgoJyNpbmNsdWRlIFxcXCJseWdpYScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkZXAgPSBsaW5lX3RyaW0uc3Vic3RyaW5nKDE1KS5yZXBsYWNlKC9cXCd8XFxcInxcXDt8XFxzL2csICcnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlcC5lbmRzV2l0aCgnZ2xzbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXMyLmRlcHNbZGVwXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFwiaHR0cHM6Ly9seWdpYS54eXpcIiArIGRlcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczIuZGVwc1tkZXBdID0gZ2V0RmlsZSh1cmwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMyLmZyYWdtZW50U3RyaW5nICs9IF90aGlzMi5kZXBzW2RlcF0gKyAnXFxuI2xpbmUgJyArIChpICsgMSkgKyAnXFxuJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBfdGhpczIuZnJhZ21lbnRTdHJpbmcgKz0gbGluZSArICdcXG4nO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZnJhZ21lbnRTdHJpbmcpO1xuXG4gICAgICAgICAgICB0aGlzLmFuaW1hdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm5EZWx0YSA9ICh0aGlzLmZyYWdtZW50U3RyaW5nLm1hdGNoKC91X2RlbHRhL2cpIHx8IFtdKS5sZW5ndGg7XG4gICAgICAgICAgICB0aGlzLm5UaW1lID0gKHRoaXMuZnJhZ21lbnRTdHJpbmcubWF0Y2goL3VfdGltZS9nKSB8fCBbXSkubGVuZ3RoO1xuICAgICAgICAgICAgdGhpcy5uRGF0ZSA9ICh0aGlzLmZyYWdtZW50U3RyaW5nLm1hdGNoKC91X2RhdGUvZykgfHwgW10pLmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMubk1vdXNlID0gKHRoaXMuZnJhZ21lbnRTdHJpbmcubWF0Y2goL3VfbW91c2UvZykgfHwgW10pLmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMuYW5pbWF0ZWQgPSB0aGlzLm5EYXRlIFx1MDAzZSAxIHx8IHRoaXMublRpbWUgXHUwMDNlIDEgfHwgdGhpcy5uTW91c2UgXHUwMDNlIDE7XG5cbiAgICAgICAgICAgIHZhciBuVGV4dHVyZXMgPSB0aGlzLmZyYWdtZW50U3RyaW5nLnNlYXJjaCgvc2FtcGxlcjJEL2cpO1xuICAgICAgICAgICAgaWYgKG5UZXh0dXJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfbGluZXMgPSB0aGlzLmZyYWdtZW50U3RyaW5nLnNwbGl0KCdcXG4nKTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSBcdTAwM2MgX2xpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IF9saW5lc1tpXS5tYXRjaCgvdW5pZm9ybVxccypzYW1wbGVyMkRcXHMqKFtcXHddKik7XFxzKlxcL1xcL1xccyooW1xcd3xcXDpcXC9cXC98XFwufFxcLXxcXF9dKikvaSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGV4dCA9IG1hdGNoWzJdLnNwbGl0KCcuJykucG9wKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaFsxXSBcdTAwMjZcdTAwMjYgbWF0Y2hbMl0gXHUwMDI2XHUwMDI2IChleHQgPT09ICdqcGcnIHx8IGV4dCA9PT0gJ2pwZWcnIHx8IGV4dCA9PT0gJ3BuZycgfHwgZXh0ID09PSAnb2d2JyB8fCBleHQgPT09ICd3ZWJtJyB8fCBleHQgPT09ICdtcDQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VW5pZm9ybShtYXRjaFsxXSwgbWF0Y2hbMl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYWluID0gX2xpbmVzW2ldLm1hdGNoKC9cXHMqdm9pZFxccyptYWluXFxzKi9nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1haW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgdmVydGV4U2hhZGVyID0gY3JlYXRlU2hhZGVyKHRoaXMsIHRoaXMudmVydGV4U3RyaW5nLCB0aGlzLmdsLlZFUlRFWF9TSEFERVIpO1xuICAgICAgICAgICAgdmFyIGZyYWdtZW50U2hhZGVyID0gY3JlYXRlU2hhZGVyKHRoaXMsIHRoaXMuZnJhZ21lbnRTdHJpbmcsIHRoaXMuZ2wuRlJBR01FTlRfU0hBREVSKTtcblxuICAgICAgICAgICAgLy8gSWYgRnJhZ21lbnQgc2hhZGVyIGZhaWxzIGxvYWQgYSBlbXB0eSBvbmUgdG8gc2lnbiB0aGUgZXJyb3JcbiAgICAgICAgICAgIGlmICghZnJhZ21lbnRTaGFkZXIpIHtcbiAgICAgICAgICAgICAgICBmcmFnbWVudFNoYWRlciA9IGNyZWF0ZVNoYWRlcih0aGlzLCAndm9pZCBtYWluKCl7XFxuXFx0Z2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xcbn0nLCB0aGlzLmdsLkZSQUdNRU5UX1NIQURFUik7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENyZWF0ZSBhbmQgdXNlIHByb2dyYW1cbiAgICAgICAgICAgIHZhciBwcm9ncmFtID0gY3JlYXRlUHJvZ3JhbSh0aGlzLCBbdmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcl0pOyAvLywgWzAsMV0sWydhX3RleGNvb3JkJywnYV9wb3NpdGlvbiddKTtcbiAgICAgICAgICAgIHRoaXMuZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTtcblxuICAgICAgICAgICAgLy8gRGVsZXRlIHNoYWRlcnNcbiAgICAgICAgICAgIC8vIHRoaXMuZ2wuZGV0YWNoU2hhZGVyKHByb2dyYW0sIHZlcnRleFNoYWRlcik7XG4gICAgICAgICAgICAvLyB0aGlzLmdsLmRldGFjaFNoYWRlcihwcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7XG4gICAgICAgICAgICB0aGlzLmdsLmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpO1xuICAgICAgICAgICAgdGhpcy5nbC5kZWxldGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIpO1xuXG4gICAgICAgICAgICB0aGlzLnByb2dyYW0gPSBwcm9ncmFtO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2UgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLkJVRkZFUl9DT1VOVCA9IDA7XG4gICAgICAgICAgICB2YXIgYnVmZmVycyA9IHRoaXMuZ2V0QnVmZmVycyh0aGlzLmZyYWdtZW50U3RyaW5nKTtcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhidWZmZXJzKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRQcm9ncmFtcyhidWZmZXJzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYnVmZmVycyA9IGJ1ZmZlcnM7XG4gICAgICAgICAgICB0aGlzLnRleHVyZUluZGV4ID0gdGhpcy5CVUZGRVJfQ09VTlQ7XG5cbiAgICAgICAgICAgIC8vIFRyaWdnZXIgZXZlbnRcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlcignbG9hZCcsIHt9KTtcblxuICAgICAgICAgICAgdGhpcy5mb3JjZVJlbmRlciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICd0ZXN0JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHRlc3QoY2FsbGJhY2ssIGZyYWdTdHJpbmcsIHZlcnRTdHJpbmcpIHtcbiAgICAgICAgICAgIC8vIFRoYW5rcyB0byBAdGhlc3BpdGUgZm9yIHRoZSBoZWxwIGhlcmVcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL2V4dGVuc2lvbnMvRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5L1xuICAgICAgICAgICAgdmFyIHByZV90ZXN0X3ZlcnQgPSB0aGlzLnZlcnRleFN0cmluZztcbiAgICAgICAgICAgIHZhciBwcmVfdGVzdF9mcmFnID0gdGhpcy5mcmFnbWVudFN0cmluZztcbiAgICAgICAgICAgIHZhciBwcmVfdGVzdF9wYXVzZWQgPSB0aGlzLnBhdXNlZDtcblxuICAgICAgICAgICAgdmFyIGV4dCA9IHRoaXMuZ2wuZ2V0RXh0ZW5zaW9uKCdFWFRfZGlzam9pbnRfdGltZXJfcXVlcnknKTtcbiAgICAgICAgICAgIHZhciBxdWVyeSA9IGV4dC5jcmVhdGVRdWVyeUVYVCgpO1xuICAgICAgICAgICAgdmFyIHdhc1ZhbGlkID0gdGhpcy5pc1ZhbGlkO1xuXG4gICAgICAgICAgICBpZiAoZnJhZ1N0cmluZyB8fCB2ZXJ0U3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkKGZyYWdTdHJpbmcsIHZlcnRTdHJpbmcpO1xuICAgICAgICAgICAgICAgIHdhc1ZhbGlkID0gdGhpcy5pc1ZhbGlkO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9yY2VSZW5kZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGV4dC5iZWdpblF1ZXJ5RVhUKGV4dC5USU1FX0VMQVBTRURfRVhULCBxdWVyeSk7XG4gICAgICAgICAgICB0aGlzLmZvcmNlUmVuZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgICAgICBleHQuZW5kUXVlcnlFWFQoZXh0LlRJTUVfRUxBUFNFRF9FWFQpO1xuXG4gICAgICAgICAgICB2YXIgc2FuZGJveCA9IHRoaXM7XG4gICAgICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkge1xuICAgICAgICAgICAgICAgIC8vIFJldmVydCBjaGFuZ2VzLi4uIGdvIGJhY2sgdG8gbm9ybWFsXG4gICAgICAgICAgICAgICAgc2FuZGJveC5wYXVzZWQgPSBwcmVfdGVzdF9wYXVzZWQ7XG4gICAgICAgICAgICAgICAgaWYgKGZyYWdTdHJpbmcgfHwgdmVydFN0cmluZykge1xuICAgICAgICAgICAgICAgICAgICBzYW5kYm94LmxvYWQocHJlX3Rlc3RfZnJhZywgcHJlX3Rlc3RfdmVydCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gd2FpdEZvclRlc3QoKSB7XG4gICAgICAgICAgICAgICAgc2FuZGJveC5mb3JjZVJlbmRlciA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2FuZGJveC5yZW5kZXIoKTtcbiAgICAgICAgICAgICAgICB2YXIgYXZhaWxhYmxlID0gZXh0LmdldFF1ZXJ5T2JqZWN0RVhUKHF1ZXJ5LCBleHQuUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQpO1xuICAgICAgICAgICAgICAgIHZhciBkaXNqb2ludCA9IHNhbmRib3guZ2wuZ2V0UGFyYW1ldGVyKGV4dC5HUFVfRElTSk9JTlRfRVhUKTtcbiAgICAgICAgICAgICAgICBpZiAoYXZhaWxhYmxlIFx1MDAyNlx1MDAyNiAhZGlzam9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhc1ZhbGlkOiB3YXNWYWxpZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYWc6IGZyYWdTdHJpbmcgfHwgc2FuZGJveC5mcmFnbWVudFN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnQ6IHZlcnRTdHJpbmcgfHwgc2FuZGJveC52ZXJ0ZXhTdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lRWxhcHNlZE1zOiBleHQuZ2V0UXVlcnlPYmplY3RFWFQocXVlcnksIGV4dC5RVUVSWV9SRVNVTFRfRVhUKSAvIDEwMDAwMDAuMFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJldCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh3YWl0Rm9yVGVzdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2FpdEZvclRlc3QoKTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnbG9hZFRleHR1cmUnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gbG9hZFRleHR1cmUobmFtZSwgdXJsRWxlbWVudE9yRGF0YSwgb3B0aW9ucykge1xuICAgICAgICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgICAgICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiB1cmxFbGVtZW50T3JEYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMudXJsID0gdXJsRWxlbWVudE9yRGF0YTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKHR5cGVvZiB1cmxFbGVtZW50T3JEYXRhID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZih1cmxFbGVtZW50T3JEYXRhKSkgPT09ICdvYmplY3QnIFx1MDAyNlx1MDAyNiB1cmxFbGVtZW50T3JEYXRhLmRhdGEgXHUwMDI2XHUwMDI2IHVybEVsZW1lbnRPckRhdGEud2lkdGggXHUwMDI2XHUwMDI2IHVybEVsZW1lbnRPckRhdGEuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhID0gdXJsRWxlbWVudE9yRGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgIG9wdGlvbnMud2lkdGggPSB1cmxFbGVtZW50T3JEYXRhLndpZHRoO1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuaGVpZ2h0ID0gdXJsRWxlbWVudE9yRGF0YS5oZWlnaHQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCh0eXBlb2YgdXJsRWxlbWVudE9yRGF0YSA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YodXJsRWxlbWVudE9yRGF0YSkpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuZWxlbWVudCA9IHVybEVsZW1lbnRPckRhdGE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRleHR1cmVzW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGV4dHVyZXNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0dXJlc1tuYW1lXS5sb2FkKG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHR1cmVzW25hbWVdLm9uKCdsb2FkZWQnLCBmdW5jdGlvbiAoYXJncykge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMzLmZvcmNlUmVuZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRleHR1cmVzW25hbWVdID0gbmV3IFRleHR1cmUodGhpcy5nbCwgbmFtZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgdGhpcy50ZXh0dXJlc1tuYW1lXS5vbignbG9hZGVkJywgZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMzLmZvcmNlUmVuZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAncmVmcmVzaFVuaWZvcm1zJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlZnJlc2hVbmlmb3JtcygpIHtcbiAgICAgICAgICAgIHRoaXMudW5pZm9ybXMgPSB7fTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnc2V0VW5pZm9ybScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRVbmlmb3JtKG5hbWUpIHtcbiAgICAgICAgICAgIHZhciB1ID0ge307XG5cbiAgICAgICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCB2YWx1ZSA9IEFycmF5KF9sZW4gXHUwMDNlIDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSBcdTAwM2MgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB1W25hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLnNldFVuaWZvcm1zKHUpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdzZXRVbmlmb3JtcycsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRVbmlmb3Jtcyh1bmlmb3Jtcykge1xuICAgICAgICAgICAgdmFyIHBhcnNlZCA9IHBhcnNlVW5pZm9ybXModW5pZm9ybXMpO1xuICAgICAgICAgICAgLy8gU2V0IGVhY2ggdW5pZm9ybVxuICAgICAgICAgICAgZm9yICh2YXIgdSBpbiBwYXJzZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFyc2VkW3VdLnR5cGUgPT09ICdzYW1wbGVyMkQnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEZvciB0ZXh0dXJlcywgd2UgbmVlZCB0byB0cmFjayB0ZXh0dXJlIHVuaXRzLCBzbyB3ZSBoYXZlIGEgc3BlY2lhbCBzZXR0ZXJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy51bmlmb3JtVGV4dHVyZShwYXJzZWRbdV0ubmFtZSwgcGFyc2VkW3VdLnZhbHVlWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkVGV4dHVyZShwYXJzZWRbdV0ubmFtZSwgcGFyc2VkW3VdLnZhbHVlWzBdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuaWZvcm0ocGFyc2VkW3VdLm1ldGhvZCwgcGFyc2VkW3VdLnR5cGUsIHBhcnNlZFt1XS5uYW1lLCBwYXJzZWRbdV0udmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZm9yY2VSZW5kZXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdzZXRNb3VzZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRNb3VzZShtb3VzZSkge1xuICAgICAgICAgICAgLy8gc2V0IHRoZSBtb3VzZSB1bmlmb3JtXG4gICAgICAgICAgICB2YXIgcmVjdCA9IHRoaXMuY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgaWYgKG1vdXNlIFx1MDAyNlx1MDAyNiBtb3VzZS54IFx1MDAyNlx1MDAyNiBtb3VzZS54IFx1MDAzZT0gcmVjdC5sZWZ0IFx1MDAyNlx1MDAyNiBtb3VzZS54IFx1MDAzYz0gcmVjdC5yaWdodCBcdTAwMjZcdTAwMjYgbW91c2UueSBcdTAwMjZcdTAwMjYgbW91c2UueSBcdTAwM2U9IHJlY3QudG9wIFx1MDAyNlx1MDAyNiBtb3VzZS55IFx1MDAzYz0gcmVjdC5ib3R0b20pIHtcblxuICAgICAgICAgICAgICAgIHZhciBtb3VzZV94ID0gKG1vdXNlLnggLSByZWN0LmxlZnQpICogdGhpcy5yZWFsVG9DU1NQaXhlbHM7XG4gICAgICAgICAgICAgICAgdmFyIG1vdXNlX3kgPSB0aGlzLmNhbnZhcy5oZWlnaHQgLSAobW91c2UueSAtIHJlY3QudG9wKSAqIHRoaXMucmVhbFRvQ1NTUGl4ZWxzO1xuXG4gICAgICAgICAgICAgICAgdGhpcy51bmlmb3JtKCcyZicsICd2ZWMyJywgJ3VfbW91c2UnLCBtb3VzZV94LCBtb3VzZV95KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGV4OiBwcm9ncmFtLnVuaWZvcm0oJzNmJywgJ3Bvc2l0aW9uJywgeCwgeSwgeik7XG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3VuaWZvcm0nLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdW5pZm9ybShtZXRob2QsIHR5cGUsIG5hbWUpIHtcbiAgICAgICAgICAgIC8vICd2YWx1ZScgaXMgYSBtZXRob2QtYXBwcm9wcmlhdGUgYXJndW1lbnRzIGxpc3RcbiAgICAgICAgICAgIHRoaXMudW5pZm9ybXNbbmFtZV0gPSB0aGlzLnVuaWZvcm1zW25hbWVdIHx8IHt9O1xuICAgICAgICAgICAgdmFyIHVuaWZvcm0gPSB0aGlzLnVuaWZvcm1zW25hbWVdO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIHZhbHVlID0gQXJyYXkoX2xlbjIgXHUwMDNlIDMgPyBfbGVuMiAtIDMgOiAwKSwgX2tleTIgPSAzOyBfa2V5MiBcdTAwM2MgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgICAgICAgICB2YWx1ZVtfa2V5MiAtIDNdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGNoYW5nZSA9IGlzRGlmZih1bmlmb3JtLnZhbHVlLCB2YWx1ZSk7XG5cbiAgICAgICAgICAgIC8vIHJlbWVtYmVyIGFuZCBrZWVwIHRyYWNrIG9mIHVuaWZvcm1zIGxvY2F0aW9uIHRvIHNhdmUgY2FsbHNcbiAgICAgICAgICAgIGlmIChjaGFuZ2UgfHwgdGhpcy5jaGFuZ2UgfHwgIXVuaWZvcm0ubG9jYXRpb24gfHwgIXVuaWZvcm0udmFsdWUpIHtcbiAgICAgICAgICAgICAgICB1bmlmb3JtLm5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHVuaWZvcm0udHlwZSA9IHR5cGU7XG4gICAgICAgICAgICAgICAgdW5pZm9ybS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHVuaWZvcm0ubWV0aG9kID0gJ3VuaWZvcm0nICsgbWV0aG9kO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2wudXNlUHJvZ3JhbSh0aGlzLnByb2dyYW0pO1xuICAgICAgICAgICAgICAgIHVuaWZvcm0ubG9jYXRpb24gPSB0aGlzLmdsLmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0sIG5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2xbdW5pZm9ybS5tZXRob2RdLmFwcGx5KHRoaXMuZ2wsIFt1bmlmb3JtLmxvY2F0aW9uXS5jb25jYXQodW5pZm9ybS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGNoYW5nZSB1cGRhdGUgYW5kIHRoZXJlIGlzIGJ1ZmZlciB1cGRhdGUgbWFudWFsbHkgb25lIGJ5IG9uZVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLmJ1ZmZlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJ1ZmZlciA9IHRoaXMuYnVmZmVyc1trZXldO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdsLnVzZVByb2dyYW0oYnVmZmVyLnByb2dyYW0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb24gPSB0aGlzLmdsLmdldFVuaWZvcm1Mb2NhdGlvbihidWZmZXIucHJvZ3JhbSwgbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2xbdW5pZm9ybS5tZXRob2RdLmFwcGx5KHRoaXMuZ2wsIFtsb2NhdGlvbl0uY29uY2F0KHVuaWZvcm0udmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3VuaWZvcm1UZXh0dXJlJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHVuaWZvcm1UZXh0dXJlKG5hbWUsIHRleHR1cmUsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRleHR1cmVzW25hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRUZXh0dXJlKG5hbWUsIHRleHR1cmUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuaWZvcm0oJzFpJywgJ3NhbXBsZXIyRCcsIG5hbWUsIHRoaXMudGV4dXJlSW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuYnVmZmVycykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYnVmZmVyID0gdGhpcy5idWZmZXJzW2tleV07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2wudXNlUHJvZ3JhbShidWZmZXIucHJvZ3JhbSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2wuYWN0aXZlVGV4dHVyZSh0aGlzLmdsLlRFWFRVUkUwICsgdGhpcy50ZXh1cmVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2wuYmluZFRleHR1cmUodGhpcy5nbC5URVhUVVJFXzJELCB0aGlzLnRleHR1cmVzW25hbWVdLnRleHR1cmUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmdsLnVzZVByb2dyYW0odGhpcy5wcm9ncmFtKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdsLmFjdGl2ZVRleHR1cmUodGhpcy5nbC5URVhUVVJFMCArIHRoaXMudGV4dXJlSW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2wuYmluZFRleHR1cmUodGhpcy5nbC5URVhUVVJFXzJELCB0aGlzLnRleHR1cmVzW25hbWVdLnRleHR1cmUpO1xuICAgICAgICAgICAgICAgIHRoaXMudW5pZm9ybSgnMmYnLCAndmVjMicsIG5hbWUgKyAnUmVzb2x1dGlvbicsIHRoaXMudGV4dHVyZXNbbmFtZV0ud2lkdGgsIHRoaXMudGV4dHVyZXNbbmFtZV0uaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAncmVzaXplJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2l6ZSgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLndpZHRoICE9PSB0aGlzLmNhbnZhcy5jbGllbnRXaWR0aCB8fCB0aGlzLmhlaWdodCAhPT0gdGhpcy5jYW52YXMuY2xpZW50SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFsVG9DU1NQaXhlbHMgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuXG4gICAgICAgICAgICAgICAgLy8gTG9va3VwIHRoZSBzaXplIHRoZSBicm93c2VyIGlzIGRpc3BsYXlpbmcgdGhlIGNhbnZhcyBpbiBDU1MgcGl4ZWxzXG4gICAgICAgICAgICAgICAgLy8gYW5kIGNvbXB1dGUgYSBzaXplIG5lZWRlZCB0byBtYWtlIG91ciBkcmF3aW5nYnVmZmVyIG1hdGNoIGl0IGluXG4gICAgICAgICAgICAgICAgLy8gZGV2aWNlIHBpeGVscy5cbiAgICAgICAgICAgICAgICB2YXIgZGlzcGxheVdpZHRoID0gTWF0aC5mbG9vcih0aGlzLmdsLmNhbnZhcy5jbGllbnRXaWR0aCAqIHRoaXMucmVhbFRvQ1NTUGl4ZWxzKTtcbiAgICAgICAgICAgICAgICB2YXIgZGlzcGxheUhlaWdodCA9IE1hdGguZmxvb3IodGhpcy5nbC5jYW52YXMuY2xpZW50SGVpZ2h0ICogdGhpcy5yZWFsVG9DU1NQaXhlbHMpO1xuXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGNhbnZhcyBpcyBub3QgdGhlIHNhbWUgc2l6ZS5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5nbC5jYW52YXMud2lkdGggIT09IGRpc3BsYXlXaWR0aCB8fCB0aGlzLmdsLmNhbnZhcy5oZWlnaHQgIT09IGRpc3BsYXlIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSB0aGUgY2FudmFzIHRoZSBzYW1lIHNpemVcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nbC5jYW52YXMud2lkdGggPSBkaXNwbGF5V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2wuY2FudmFzLmhlaWdodCA9IGRpc3BsYXlIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgdmlld3BvcnQgdG8gbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nbC52aWV3cG9ydCgwLCAwLCB0aGlzLmdsLmNhbnZhcy53aWR0aCwgdGhpcy5nbC5jYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy53aWR0aCA9IHRoaXMuY2FudmFzLmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5jYW52YXMuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplU3dhcHBhYmxlQnVmZmVycygpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3JlbmRlcicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSBpc0NhbnZhc1Zpc2libGUodGhpcy5jYW52YXMpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9yY2VSZW5kZXIgfHwgdGhpcy5jaGFuZ2UgfHwgdGhpcy5hbmltYXRlZCBcdTAwMjZcdTAwMjYgdGhpcy52aXNpYmxlIFx1MDAyNlx1MDAyNiAhdGhpcy5wYXVzZWQpIHtcblxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBVbmlmb3JtcyB3aGVuIGFyZSBuZWVkXG4gICAgICAgICAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgIHZhciBub3cgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVEZWx0YSA9IChub3cgLSB0aGlzLnRpbWVQcmV2KSAvIDEwMDAuMDtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVQcmV2ID0gbm93O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5EZWx0YSBcdTAwM2UgMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdGhlIGRlbHRhIHRpbWUgdW5pZm9ybVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuaWZvcm0oJzFmJywgJ2Zsb2F0JywgJ3VfZGVsdGEnLCB0aGlzLnRpbWVEZWx0YSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMublRpbWUgXHUwMDNlIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRoZSBlbGFwc2VkIHRpbWUgdW5pZm9ybVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuaWZvcm0oJzFmJywgJ2Zsb2F0JywgJ3VfdGltZScsIChub3cgLSB0aGlzLnRpbWVMb2FkKSAvIDEwMDAuMCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubkRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGRhdGUgdW5pZm9ybTogeWVhci9tb250aC9kYXkvdGltZV9pbl9zZWNcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51bmlmb3JtKCc0ZicsICdmbG9hdCcsICd1X2RhdGUnLCBkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCksIGRhdGUuZ2V0SG91cnMoKSAqIDM2MDAgKyBkYXRlLmdldE1pbnV0ZXMoKSAqIDYwICsgZGF0ZS5nZXRTZWNvbmRzKCkgKyBkYXRlLmdldE1pbGxpc2Vjb25kcygpICogMC4wMDEpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIHNldCB0aGUgcmVzb2x1dGlvbiB1bmlmb3JtXG4gICAgICAgICAgICAgICAgdGhpcy51bmlmb3JtKCcyZicsICd2ZWMyJywgJ3VfcmVzb2x1dGlvbicsIHRoaXMuY2FudmFzLndpZHRoLCB0aGlzLmNhbnZhcy5oZWlnaHQpO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuYnVmZmVycykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYnVmZmVyID0gdGhpcy5idWZmZXJzW2tleV07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5pZm9ybSgnMWknLCAnc2FtcGxlcjJEJywgYnVmZmVyLm5hbWUsIGJ1ZmZlci5idW5kbGUuaW5wdXQuaW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudGV4dXJlSW5kZXggPSB0aGlzLkJVRkZFUl9DT1VOVDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciB0ZXggaW4gdGhpcy50ZXh0dXJlcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuaWZvcm1UZXh0dXJlKHRleCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dXJlSW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclByb2dyYW1zKCk7XG5cbiAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyIGV2ZW50XG4gICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCdyZW5kZXInLCB7fSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcmNlUmVuZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3BhdXNlJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgICAgICAgICAgdGhpcy5wYXVzZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdwbGF5JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHBsYXkoKSB7XG4gICAgICAgICAgICB0aGlzLnBhdXNlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVuZGVyIG1haW4gYW5kIGJ1ZmZlcnMgcHJvZ3JhbXNcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiAncmVuZGVyUHJvZ3JhbXMnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyUHJvZ3JhbXMoKSB7XG4gICAgICAgICAgICB2YXIgZ2wgPSB0aGlzLmdsO1xuICAgICAgICAgICAgdmFyIFcgPSBnbC5jYW52YXMud2lkdGg7XG4gICAgICAgICAgICB2YXIgSCA9IGdsLmNhbnZhcy5oZWlnaHQ7XG5cbiAgICAgICAgICAgIGdsLnZpZXdwb3J0KDAsIDAsIFcsIEgpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5idWZmZXJzKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJ1ZmZlciA9IHRoaXMuYnVmZmVyc1trZXldO1xuICAgICAgICAgICAgICAgIGJ1ZmZlci5idW5kbGUucmVuZGVyKFcsIEgsIGJ1ZmZlci5wcm9ncmFtLCBidWZmZXIubmFtZSk7XG4gICAgICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbSh0aGlzLnByb2dyYW0pO1xuICAgICAgICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcGFyc2UgaW5wdXQgc3RyaW5nc1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6ICdnZXRCdWZmZXJzJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldEJ1ZmZlcnMoZnJhZ1N0cmluZykge1xuICAgICAgICAgICAgdmFyIGJ1ZmZlcnMgPSB7fTtcbiAgICAgICAgICAgIGlmIChmcmFnU3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgZnJhZ1N0cmluZy5yZXBsYWNlKC8oPzpeXFxzKikoKD86I2lmfCNlbGlmKSg/OlxccyopKGRlZmluZWRcXHMqXFwoXFxzKkJVRkZFUl8pKFxcZCspKD86XFxzKlxcKSl8KD86I2lmZGVmKSg/OlxccypCVUZGRVJfKShcXGQrKSg/OlxccyopKS9nbSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50c1szXSB8fCBhcmd1bWVudHNbNF07XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnNbJ3VfYnVmZmVyJyArIGldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQ6ICcjZGVmaW5lIEJVRkZFUl8nICsgaSArICdcXG4nICsgZnJhZ1N0cmluZ1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcnM7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBsb2FkIGJ1ZmZlcnMgcHJvZ3JhbXNcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnbG9hZFByb2dyYW1zJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGxvYWRQcm9ncmFtcyhidWZmZXJzKSB7XG4gICAgICAgICAgICB2YXIgZ2xzbCA9IHRoaXM7XG4gICAgICAgICAgICB2YXIgZ2wgPSB0aGlzLmdsO1xuICAgICAgICAgICAgdmFyIHZlcnRleCA9IGNyZWF0ZVNoYWRlcihnbHNsLCBnbHNsLnZlcnRleFN0cmluZywgZ2wuVkVSVEVYX1NIQURFUik7XG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gYnVmZmVycykge1xuICAgICAgICAgICAgICAgIHZhciBidWZmZXIgPSBidWZmZXJzW2tleV07XG4gICAgICAgICAgICAgICAgdmFyIGZyYWdtZW50ID0gY3JlYXRlU2hhZGVyKGdsc2wsIGJ1ZmZlci5mcmFnbWVudCwgZ2wuRlJBR01FTlRfU0hBREVSLCAxKTtcbiAgICAgICAgICAgICAgICBpZiAoIWZyYWdtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gY3JlYXRlU2hhZGVyKGdsc2wsICd2b2lkIG1haW4oKXtcXG5cXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XFxufScsIGdsLkZSQUdNRU5UX1NIQURFUik7XG4gICAgICAgICAgICAgICAgICAgIGdsc2wuaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGdsc2wuaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBwcm9ncmFtID0gY3JlYXRlUHJvZ3JhbShnbHNsLCBbdmVydGV4LCBmcmFnbWVudF0pO1xuICAgICAgICAgICAgICAgIGJ1ZmZlci5uYW1lID0ga2V5O1xuICAgICAgICAgICAgICAgIGJ1ZmZlci5wcm9ncmFtID0gcHJvZ3JhbTtcbiAgICAgICAgICAgICAgICBidWZmZXIuYnVuZGxlID0gZ2xzbC5jcmVhdGVTd2FwcGFibGVCdWZmZXIoZ2xzbC5jYW52YXMud2lkdGgsIGdsc2wuY2FudmFzLmhlaWdodCwgcHJvZ3JhbSk7XG4gICAgICAgICAgICAgICAgZ2wuZGVsZXRlU2hhZGVyKGZyYWdtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdsLmRlbGV0ZVNoYWRlcih2ZXJ0ZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlIGFuIGlucHV0IC8gb3V0cHV0IHN3YXBwYWJsZSBidWZmZXJcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnY3JlYXRlU3dhcHBhYmxlQnVmZmVyJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVN3YXBwYWJsZUJ1ZmZlcihXLCBILCBwcm9ncmFtKSB7XG4gICAgICAgICAgICB2YXIgaW5wdXQgPSB0aGlzLmNyZWF0ZUJ1ZmZlcihXLCBILCBwcm9ncmFtKTtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSB0aGlzLmNyZWF0ZUJ1ZmZlcihXLCBILCBwcm9ncmFtKTtcbiAgICAgICAgICAgIHZhciBnbCA9IHRoaXMuZ2w7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGlucHV0OiBpbnB1dCxcbiAgICAgICAgICAgICAgICBvdXRwdXQ6IG91dHB1dCxcbiAgICAgICAgICAgICAgICBzd2FwOiBmdW5jdGlvbiBzd2FwKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IGlucHV0O1xuICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IG91dHB1dDtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gdGVtcDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dCA9IGlucHV0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dCA9IG91dHB1dDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKFcsIEgsIHByb2dyYW0sIG5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTtcbiAgICAgICAgICAgICAgICAgICAgZ2wudmlld3BvcnQoMCwgMCwgVywgSCk7XG4gICAgICAgICAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgdGhpcy5pbnB1dC5idWZmZXIpO1xuICAgICAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRoaXMub3V0cHV0LnRleHR1cmUsIDApO1xuICAgICAgICAgICAgICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3dhcCgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVzaXplOiBmdW5jdGlvbiByZXNpemUoVywgSCwgcHJvZ3JhbSwgbmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pO1xuICAgICAgICAgICAgICAgICAgICBnbC52aWV3cG9ydCgwLCAwLCBXLCBIKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5yZXNpemUoVywgSCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3V0cHV0LnJlc2l6ZShXLCBIKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlIGEgYnVmZmVyc1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6ICdjcmVhdGVCdWZmZXInLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlQnVmZmVyKFcsIEgsIHByb2dyYW0pIHtcbiAgICAgICAgICAgIHZhciBnbCA9IHRoaXMuZ2w7XG4gICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLkJVRkZFUl9DT1VOVDtcbiAgICAgICAgICAgIHRoaXMuQlVGRkVSX0NPVU5UICs9IDI7XG4gICAgICAgICAgICBnbC5nZXRFeHRlbnNpb24oJ09FU190ZXh0dXJlX2Zsb2F0Jyk7XG4gICAgICAgICAgICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTtcbiAgICAgICAgICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTAgKyBpbmRleCk7XG4gICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTtcbiAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgVywgSCwgMCwgZ2wuUkdCQSwgZ2wuRkxPQVQsIG51bGwpO1xuICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpO1xuICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpO1xuICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7XG4gICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTtcbiAgICAgICAgICAgIHZhciBidWZmZXIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgdGV4dHVyZTogdGV4dHVyZSxcbiAgICAgICAgICAgICAgICBidWZmZXI6IGJ1ZmZlcixcbiAgICAgICAgICAgICAgICBXOiBXLFxuICAgICAgICAgICAgICAgIEg6IEgsXG4gICAgICAgICAgICAgICAgcmVzaXplOiBmdW5jdGlvbiByZXNpemUoVywgSCkge1xuICAgICAgICAgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtaW5XID0gTWF0aC5taW4oVywgdGhpcy5XKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1pbkggPSBNYXRoLm1pbihILCB0aGlzLkgpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGl4ZWxzID0gbmV3IEZsb2F0MzJBcnJheShtaW5XICogbWluSCAqIDQpO1xuICAgICAgICAgICAgICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIG1pblcsIG1pbkgsIGdsLlJHQkEsIGdsLkZMT0FULCBwaXhlbHMpO1xuICAgICAgICAgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmV3SW5kZXggPSBpbmRleCArIDE7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdUZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpO1xuICAgICAgICAgICAgICAgICAgICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUwICsgbmV3SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBuZXdUZXh0dXJlKTtcbiAgICAgICAgICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBXLCBILCAwLCBnbC5SR0JBLCBnbC5GTE9BVCwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTtcbiAgICAgICAgICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpO1xuICAgICAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTtcbiAgICAgICAgICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7XG4gICAgICAgICAgICAgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgbWluVywgbWluSCwgZ2wuUkdCQSwgZ2wuRkxPQVQsIHBpeGVscyk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdCdWZmZXIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpO1xuICAgICAgICAgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpO1xuICAgICAgICAgICAgICAgICAgICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUwICsgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBuZXdUZXh0dXJlKTtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSB0aGlzLmluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRleHR1cmUgPSB0aGlzLnRleHR1cmUgPSBuZXdUZXh0dXJlO1xuICAgICAgICAgICAgICAgICAgICBidWZmZXIgPSB0aGlzLmJ1ZmZlciA9IG5ld0J1ZmZlcjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5XID0gVztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5IID0gSDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVzaXplIGJ1ZmZlcnMgb24gY2FudmFzIHJlc2l6ZVxuICAgICAgICAvLyBjb25zaWRlciBhcHBseWluZyBhIHRocm90dGxlIG9mIDUwIG1zIG9uIGNhbnZhcyByZXNpemVcbiAgICAgICAgLy8gdG8gYXZvaWQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGFuZCBHbCB2aW9sYXRpb25zXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3Jlc2l6ZVN3YXBwYWJsZUJ1ZmZlcnMnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcmVzaXplU3dhcHBhYmxlQnVmZmVycygpIHtcbiAgICAgICAgICAgIHZhciBnbCA9IHRoaXMuZ2w7XG4gICAgICAgICAgICB2YXIgVyA9IGdsLmNhbnZhcy53aWR0aCxcbiAgICAgICAgICAgICAgICBIID0gZ2wuY2FudmFzLmhlaWdodDtcbiAgICAgICAgICAgIGdsLnZpZXdwb3J0KDAsIDAsIFcsIEgpO1xuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuYnVmZmVycykge1xuICAgICAgICAgICAgICAgIHZhciBidWZmZXIgPSB0aGlzLmJ1ZmZlcnNba2V5XTtcbiAgICAgICAgICAgICAgICBidWZmZXIuYnVuZGxlLnJlc2l6ZShXLCBILCBidWZmZXIucHJvZ3JhbSwgYnVmZmVyLm5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbSh0aGlzLnByb2dyYW0pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICd2ZXJzaW9uJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHZlcnNpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gJzAuMS43JztcbiAgICAgICAgfVxuICAgIH1dKTtcbiAgICByZXR1cm4gR2xzbENhbnZhcztcbn0oKTtcblxuZnVuY3Rpb24gbG9hZEFsbEdsc2xDYW52YXMoKSB7XG4gICAgdmFyIGxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdnbHNsQ2FudmFzJyk7XG4gICAgaWYgKGxpc3QubGVuZ3RoIFx1MDAzZSAwKSB7XG4gICAgICAgIHdpbmRvdy5nbHNsQ2FudmFzZXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgXHUwMDNjIGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBzYW5kYm94ID0gbmV3IEdsc2xDYW52YXMobGlzdFtpXSk7XG4gICAgICAgICAgICBpZiAoc2FuZGJveC5pc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgd2luZG93Lmdsc2xDYW52YXNlcy5wdXNoKHNhbmRib3gpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBsb2FkQWxsR2xzbENhbnZhcygpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IEdsc2xDYW52YXM7XG4iLCAiaW1wb3J0IHsgY29udGVudCB9IGZyb20gXCIuLi9jb2RlQmxvY2sudHNcIjtcbmltcG9ydCB7IFByZXZpZXcgfSBmcm9tIFwiLi4vcHJldmlldy50c1wiO1xuaW1wb3J0IHsgR2xzbENhbnZhcyB9IGZyb20gXCIuLi9kZXBzL2dsc2xDYW52YXMudHNcIjtcblxuZXhwb3J0IGNvbnN0IHByZXZpZXdHTFNMOiBQcmV2aWV3ID0gKHByZXZpZXdJbml0KSA9PiB7XG4gIGlmICghKFwiYWZ0ZXJcIiBpbiBwcmV2aWV3SW5pdCkpIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY29uc3Qgc2FuZGJveCA9IG5ldyBHbHNsQ2FudmFzKGNhbnZhcyk7XG4gIHNhbmRib3gubG9hZChjb250ZW50KHByZXZpZXdJbml0LmFmdGVyKSk7XG4gIHByZXZpZXdJbml0LnJlbmRlcihjYW52YXMpO1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG59O1xuIiwgIi8vIGJhc2VkIG9uIGh0dHA6Ly9wbGFudHVtbC5zb3VyY2Vmb3JnZS5uZXQvY29kZWphdmFzY3JpcHQyLmh0bWxcbmV4cG9ydCBjb25zdCBlbmNvZGU2NCA9IChkYXRhOiBVaW50OEFycmF5KTogc3RyaW5nID0+IHtcbiAgbGV0IHIgPSBcIlwiO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpICs9IDMpIHtcbiAgICBpZiAoaSArIDIgPT09IGRhdGEubGVuZ3RoKSB7XG4gICAgICByICs9IGFwcGVuZDNieXRlcyhkYXRhW2ldLCBkYXRhW2kgKyAxXSwgMCk7XG4gICAgfSBlbHNlIGlmIChpICsgMSA9PT0gZGF0YS5sZW5ndGgpIHtcbiAgICAgIHIgKz0gYXBwZW5kM2J5dGVzKGRhdGFbaV0sIDAsIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICByICs9IGFwcGVuZDNieXRlcyhkYXRhW2ldLCBkYXRhW2kgKyAxXSwgZGF0YVtpICsgMl0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcjtcbn07XG5cbmNvbnN0IGVuY29kZTZiaXQgPSAoYjogbnVtYmVyKSA9PiB7XG4gIGlmIChiIDwgMTApIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDQ4ICsgYik7XG4gIGIgLT0gMTA7XG4gIGlmIChiIDwgMjYpIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY1ICsgYik7XG4gIGIgLT0gMjY7XG4gIGlmIChiIDwgMjYpIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDk3ICsgYik7XG4gIGIgLT0gMjY7XG4gIGlmIChiID09PSAwKSByZXR1cm4gXCItXCI7XG4gIGlmIChiID09PSAxKSByZXR1cm4gXCJfXCI7XG4gIHJldHVybiBcIj9cIjtcbn07XG5cbmNvbnN0IGFwcGVuZDNieXRlcyA9IChiMTogbnVtYmVyLCBiMjogbnVtYmVyLCBiMzogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IGMxID0gYjEgPj4gMjtcbiAgY29uc3QgYzIgPSAoKGIxICYgMHgzKSA8PCA0KSB8IChiMiA+PiA0KTtcbiAgY29uc3QgYzMgPSAoKGIyICYgMHhGKSA8PCAyKSB8IChiMyA+PiA2KTtcbiAgY29uc3QgYzQgPSBiMyAmIDB4M0Y7XG4gIHJldHVybiBlbmNvZGU2Yml0KGMxICYgMHgzRikgK1xuICAgIGVuY29kZTZiaXQoYzIgJiAweDNGKSArXG4gICAgZW5jb2RlNmJpdChjMyAmIDB4M0YpICtcbiAgICBlbmNvZGU2Yml0KGM0ICYgMHgzRik7XG59O1xuXG5leHBvcnQgY29uc3QgdGV4dFRvQnVmZmVyID0gKHRleHQ6IHN0cmluZyk6IFVpbnQ4QXJyYXkgPT4ge1xuICBjb25zdCBhc2NpaV9zdHJpbmcgPSB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodGV4dCkpOyAvLyDplpPjgavjgZPjgozjgpLlmZvjgb7jgZXjgarjgYTjgajmloflrZfljJbjgZHjgZnjgotcbiAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoYXNjaWlfc3RyaW5nLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXNjaWlfc3RyaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgYnVmZmVyW2ldID0gYXNjaWlfc3RyaW5nLmNoYXJDb2RlQXQoaSk7XG4gIH1cblxuICByZXR1cm4gYnVmZmVyO1xufTtcbiIsICJpbXBvcnQgeyBlbmNvZGU2NCB9IGZyb20gXCIuL2VuY29kZS50c1wiO1xuXG5leHBvcnQgY29uc3QgdG9QbGFudFVNTCA9IGFzeW5jIChcbiAgdW1sOiBzdHJpbmcsXG4gIHR5cGU6IFwic3ZnXCIgfCBcInBuZ1wiIHwgXCJkc3ZnXCIgfCBcImRwbmdcIiA9IFwic3ZnXCIsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBzdHJlYW0gPSBuZXcgQmxvYihbbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHVtbCldKS5zdHJlYW0oKVxuICAgIC5waXBlVGhyb3VnaChcbiAgICAgIG5ldyBDb21wcmVzc2lvblN0cmVhbShcImRlZmxhdGVcIiksXG4gICAgKTtcbiAgY29uc3QgY29tcHJlc3NlZCA9IG5ldyBVaW50OEFycmF5KGF3YWl0IG5ldyBSZXNwb25zZShzdHJlYW0pLmFycmF5QnVmZmVyKCkpO1xuXG4gIHJldHVybiBgaHR0cHM6Ly93d3cucGxhbnR1bWwuY29tL3BsYW50dW1sLyR7dHlwZX0vfjEke2VuY29kZTY0KGNvbXByZXNzZWQpfWA7XG59O1xuIiwgImltcG9ydCB7IGNvbnRlbnQgfSBmcm9tIFwiLi4vLi4vY29kZUJsb2NrLnRzXCI7XG5pbXBvcnQgeyBQcmV2aWV3IH0gZnJvbSBcIi4uLy4uL3ByZXZpZXcudHNcIjtcbmltcG9ydCB7IHRvUGxhbnRVTUwgfSBmcm9tIFwiLi90b1BsYW50dW1sVVJMLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBwcmV2aWV3UGxhbnRVTUw6IFByZXZpZXcgPSBhc3luYyAocHJldmlld0luaXQpID0+IHtcbiAgaWYgKCEoXCJhZnRlclwiIGluIHByZXZpZXdJbml0KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKTtcbiAgY29uc3QgdXJsID0gYXdhaXQgdG9QbGFudFVNTChjb250ZW50KHByZXZpZXdJbml0LmFmdGVyKSk7XG4gIGltZy5zcmMgPSB1cmw7XG4gIHByZXZpZXdJbml0LnJlbmRlcihpbWcpO1xuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiIsICJpbXBvcnQgeyBTVkdSZXN1bHQgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuaW1wb3J0IHsgV29ya2VyQ29tbWFuZCwgV29ya2VyUmVzdWx0IH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcblxubGV0IGpvYiA9IFByb21pc2UucmVzb2x2ZTxTVkdSZXN1bHQ+KHsgbG9nOiBuZXcgVWludDhBcnJheSgwKSB9KTtcbmxldCB3b3JrZXI6IFdvcmtlciB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGNvbnN0IHJlbmRlclRvU1ZHID0gKFxuICB0aWt6OiBzdHJpbmcsXG4gIHdvcmtlclVSTDogc3RyaW5nIHwgVVJMLFxuICB6aXBwZWRBc3NldFVSTDogc3RyaW5nIHwgVVJMLFxuICBjb25zb2xlOiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkLFxuKSA9PiB7XG4gIGpvYiA9IChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgam9iO1xuICAgIHdvcmtlciA/Pz0gYXdhaXQgaW5pdCh3b3JrZXJVUkwsIHppcHBlZEFzc2V0VVJMKTtcblxuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxTVkdSZXN1bHQ+KFxuICAgICAgKHJlc29sdmUpID0+IHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSAoZTogTWVzc2FnZUV2ZW50PFdvcmtlclJlc3VsdD4pID0+IHtcbiAgICAgICAgICBpZiAoZS5kYXRhLnR5cGUgPT09IFwic3Rkb3V0XCIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUoZS5kYXRhLm1lc3NhZ2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZS5kYXRhLnR5cGUgIT09IFwiY29tcGlsZVwiKSByZXR1cm47XG4gICAgICAgICAgcmVzb2x2ZShlLmRhdGEpO1xuICAgICAgICAgIHdvcmtlciEucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB3b3JrZXIhLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGNhbGxiYWNrKTtcbiAgICAgIH0sXG4gICAgKTtcbiAgICBjb25zdCBjb21tYW5kOiBXb3JrZXJDb21tYW5kID0geyB0eXBlOiBcImNvbXBpbGVcIiwgaW5wdXQ6IHRpa3ogfTtcbiAgICB3b3JrZXIucG9zdE1lc3NhZ2UoY29tbWFuZCk7XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfSkoKTtcblxuICByZXR1cm4gam9iO1xufTtcblxuY29uc3QgaW5pdCA9IGFzeW5jICh3b3JrZXJVUkw6IHN0cmluZyB8IFVSTCwgemlwcGVkQXNzZXRVUkw6IHN0cmluZyB8IFVSTCkgPT4ge1xuICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKHdvcmtlclVSTCwgeyB0eXBlOiBcIm1vZHVsZVwiIH0pO1xuICBjb25zdCBpbml0aWFsaXplZCA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAoZTogTWVzc2FnZUV2ZW50PFdvcmtlclJlc3VsdD4pID0+IHtcbiAgICAgIGlmIChlLmRhdGEudHlwZSAhPT0gXCJhc3NldC11cmxcIikgcmV0dXJuO1xuICAgICAgcmVzb2x2ZSgpO1xuICAgICAgd29ya2VyIS5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBjYWxsYmFjayk7XG4gICAgfTtcbiAgICB3b3JrZXIhLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGNhbGxiYWNrKTtcbiAgfSk7XG4gIGNvbnN0IGNvbW1hbmQ6IFdvcmtlckNvbW1hbmQgPSB7XG4gICAgdHlwZTogXCJhc3NldC11cmxcIixcbiAgICB1cmw6IGAke3ppcHBlZEFzc2V0VVJMfWAsXG4gIH07XG4gIHdvcmtlci5wb3N0TWVzc2FnZShjb21tYW5kKTtcbiAgYXdhaXQgaW5pdGlhbGl6ZWQ7XG4gIHJldHVybiB3b3JrZXI7XG59O1xuIiwgImltcG9ydCB7IGNvbnRlbnQgfSBmcm9tIFwiLi4vLi4vY29kZUJsb2NrLnRzXCI7XG5pbXBvcnQgeyBQcmV2aWV3IH0gZnJvbSBcIi4uLy4uL3ByZXZpZXcudHNcIjtcbmltcG9ydCB7IHJlbmRlclRvU1ZHIH0gZnJvbSBcIi4vcmVuZGVyVG9TVkcudHNcIjtcbmltcG9ydCB7IHRvRGF0YVVSTCB9IGZyb20gXCIuLi8uLi9kZXBzL2R2aTJodG1sLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBwcmV2aWV3VGlrWiA9IChcbiAgd29ya2VyVVJMOiBzdHJpbmcgfCBVUkwsXG4gIHppcHBlZEFzc2V0VVJMOiBzdHJpbmcgfCBVUkwsXG4pOiBQcmV2aWV3ID0+XG5hc3luYyAocHJldmlld0luaXQpID0+IHtcbiAgaWYgKCEoXCJhZnRlclwiIGluIHByZXZpZXdJbml0KSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBsb2dnZXIgPSBtYWtlTG9nZ2VyKCk7XG4gIGxldCBjb21waWxlTG9nID0gXCJDb21waWxlIGlzIG5vdCBzdGFydGVkIHlldC4gUGxlYXNlIHdhaXQuLi5cIjtcbiAgY29uc3QgbG9nID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgIGNvbXBpbGVMb2cgPSBbLi4uY29tcGlsZUxvZy5zcGxpdChcIlxcblwiKSwgbWVzc2FnZV0uam9pbihcIlxcblwiKTtcbiAgICBsb2dnZXIubG9nKGNvbXBpbGVMb2cpO1xuICB9O1xuICBjb25zdCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW1nXCIpO1xuICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIHByZXZpZXdJbml0LnJlbmRlcihsb2dnZXIuZGl2KTtcbiAgICBsb2dnZXIubG9nKGNvbXBpbGVMb2cpO1xuICB9LCAyMDAwKTtcbiAgY29uc3QgeyBzdmcgfSA9IGF3YWl0IHJlbmRlclRvU1ZHKFxuICAgIGNvbnRlbnQocHJldmlld0luaXQuYWZ0ZXIpLFxuICAgIHdvcmtlclVSTCxcbiAgICB6aXBwZWRBc3NldFVSTCxcbiAgICBsb2csXG4gICk7XG4gIGNsZWFyVGltZW91dCh0aW1lcik7XG5cbiAgaWYgKCFzdmcpIHtcbiAgICBwcmV2aWV3SW5pdC5yZW5kZXIobG9nZ2VyLmRpdik7XG4gICAgbG9nZ2VyLmxvZyhjb21waWxlTG9nKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpbWcuc3JjID0gYXdhaXQgdG9EYXRhVVJMKG5ldyBCbG9iKFtzdmddLCB7IHR5cGU6IFwiaW1hZ2Uvc3ZnK3htbFwiIH0pKTtcbiAgcHJldmlld0luaXQucmVuZGVyKGltZyk7XG59O1xuY29uc3QgbWFrZUxvZ2dlciA9ICgpID0+IHtcbiAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgY29uc3Qgc2hhZG93Um9vdCA9IGRpdi5hdHRhY2hTaGFkb3coeyBtb2RlOiBcIm9wZW5cIiB9KTtcbiAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIHN0eWxlLnRleHRDb250ZW50ID1cbiAgICAnKntib3gtc2l6aW5nOmJvcmRlci1ib3g7fXByZXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6OS41cHg7bWFyZ2luOjAgMCAxMHB4O2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjRweDtoZWlnaHQ6MjBlbTtvdmVyZmxvdzphdXRvO2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDI5O31wcmUgY29kZXtwYWRkaW5nOjA7Zm9udC1mYW1pbHk6TWVubG8sTW9uYWNvLENvbnNvbGFzLFwiQ291cmllciBOZXdcIixtb25vc3BhY2U7Zm9udC1zaXplOmluaGVyaXQ7d29yZC1icmVhazpicmVhay1hbGw7d29yZC13cmFwOmJyZWFrLXdvcmQ7d2hpdGUtc3BhY2U6cHJlLXdyYXA7Y29sb3I6dmFyKC0tY29kZS1jb2xvciwjMzQyZDljKTtiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLDApO2JvcmRlci1yYWRpdXM6MDt9JztcbiAgc2hhZG93Um9vdC5hcHBlbmQoc3R5bGUpO1xuICBjb25zdCBwcmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwicHJlXCIpO1xuICBjb25zdCBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNvZGVcIik7XG4gIHByZS5hcHBlbmQoY29kZSk7XG4gIHNoYWRvd1Jvb3QuYXBwZW5kKHByZSk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXYsXG4gICAgbG9nOiAobWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb2RlLnRleHRDb250ZW50ID0gbWVzc2FnZTtcbiAgICAgIC8vIOacgOS4i+mDqOOBvuOBp+OCueOCr+ODreODvOODq+OBl+OBpuOAgeOCqOODqeODvOmDqOWIhuOBjOOBmeOBkOimi+OBiOOCi+OCiOOBhuOBq+OBmeOCi1xuICAgICAgcHJlLnNjcm9sbCgwLCBwcmUuc2Nyb2xsSGVpZ2h0KTtcbiAgICB9LFxuICB9O1xufTtcbiIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuXG4vKiog6Z2e5ZCM5pyf5Ye95pWw44Gu5oi744KK5YCk44KS5Y+W5b6X44GZ44KLXG4gKlxuICogY2YuIGh0dHBzOi8vbG9nLnBvY2thLmlvL2phL3Bvc3RzL3R5cGVzY3JpcHQtcHJvbWlzZXR5cGUvXG4gKi9cbmV4cG9ydCB0eXBlIEFzeW5jUmV0dXJuVHlwZTxcbiAgVCBleHRlbmRzICguLi5hcmdzOiB1bmtub3duW10pID0+IFByb21pc2VMaWtlPHVua25vd24+LFxuPiA9IFJldHVyblR5cGU8VD4gZXh0ZW5kcyBQcm9taXNlTGlrZTxpbmZlciBQPiA/IFAgOiBuZXZlcjtcblxudHlwZSBSZXN1bHQ8VD4gPSB7IG9rOiB0cnVlOyB2YWx1ZTogVCB9IHwgeyBvazogZmFsc2U7IHZhbHVlOiB1bmtub3duIH07XG5cbmV4cG9ydCB0eXBlIEFzeW5jU3RhdGU8VD4gPSB7XG4gIHN0YXRlOiBcInVuaW5pdGlhbGl6ZWRcIiB8IFwicGVuZGluZ1wiIHwgXCJyZXNvbHZlZFwiO1xuICByZXN1bHQ6IFQ7XG59IHwgeyBzdGF0ZTogXCJyZWplY3RlZFwiOyByZXN1bHQ6IHVua25vd24gfTtcblxuLyoqIOmdnuWQjOacn+WHveaVsOOCkuWun+ihjOOBmeOCi2hvb2tzXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrIOWun+ihjOOBmeOCi+mdnuWQjOacn+WHveaVsCBgdW5kZWZpbmVkYOOCkui/lOOBmeOBqOWJjeWbnuOBrue1kOaenOOCkuS4iuabuOOBjeOBm+OBmuOBneOBruOBvuOBvui/lOOBmVxuICogQHBhcmFtIGluaXRpYWxWYWx1ZSDliJ3mnJ/lgKRcbiAqIEBwYXJhbSBbZGVsYXk9MF0g5a6f6KGM5Lit5Yik5a6a44KS5Ye644GZ44G+44Gn44Gu6Kix5a655pmC6ZaTKG1zKVxuICogQHBhcmFtIFtkZXBzPVtdXSDkvp3lrZjphY3liJdcbiAqL1xuZXhwb3J0IGNvbnN0IHVzZUFzeW5jID0gPFxuICBGbiBleHRlbmRzICgpID0+IFByb21pc2VMaWtlPHVua25vd24+LFxuICBUIGV4dGVuZHMgdW5rbm93bixcbj4oXG4gIGNhbGxiYWNrOiBGbixcbiAgaW5pdGlhbFZhbHVlOiBFeGNsdWRlPEFzeW5jUmV0dXJuVHlwZTxGbj4sIHVuZGVmaW5lZD4sXG4gIGRlbGF5ID0gMCxcbiAgZGVwczogVFtdID0gW10sXG4pOiBBc3luY1N0YXRlPEV4Y2x1ZGU8QXN5bmNSZXR1cm5UeXBlPEZuPiwgdW5kZWZpbmVkPj4gPT4ge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlPFwidW5pbml0aWFsaXplZFwiIHwgXCJwZW5kaW5nXCIgfCBcInJlc29sdmVkXCI+KFxuICAgIFwidW5pbml0aWFsaXplZFwiLFxuICApO1xuICBjb25zdCBbcmVzdWx0LCBzZXRSZXN1bHRdID0gdXNlU3RhdGU8XG4gICAgUmVzdWx0PEV4Y2x1ZGU8QXN5bmNSZXR1cm5UeXBlPEZuPiwgdW5kZWZpbmVkPj5cbiAgPih7IG9rOiB0cnVlLCB2YWx1ZTogaW5pdGlhbFZhbHVlIH0pO1xuICBjb25zdCBjYWNoZWRDYWxsYmFjayA9IHVzZUNhbGxiYWNrKGNhbGxiYWNrLCBkZXBzKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4gc2V0U3RhdGUoXCJwZW5kaW5nXCIpLCBkZWxheSk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSAoYXdhaXQgY2FjaGVkQ2FsbGJhY2soKSkgYXNcbiAgICAgICAgICB8IEV4Y2x1ZGU8QXN5bmNSZXR1cm5UeXBlPEZuPiwgdW5kZWZpbmVkPlxuICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICAgICAgc2V0UmVzdWx0KHsgb2s6IHRydWUsIHZhbHVlOiByZXN1bHQgfSk7XG4gICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgIHNldFJlc3VsdCh7IG9rOiBmYWxzZSwgdmFsdWU6IGUgfSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICBzZXRTdGF0ZShcInJlc29sdmVkXCIpO1xuICAgICAgfVxuICAgIH0pKCk7XG4gIH0sIFtjYWNoZWRDYWxsYmFjaywgZGVsYXksIC4uLmRlcHNdKTtcblxuICByZXR1cm4gcmVzdWx0Lm9rXG4gICAgPyB7IHJlc3VsdDogcmVzdWx0LnZhbHVlLCBzdGF0ZSB9XG4gICAgOiB7IHJlc3VsdDogcmVzdWx0LnZhbHVlLCBzdGF0ZTogXCJyZWplY3RlZFwiIH07XG59O1xuIiwgImltcG9ydCB0eXBlIHtcbiAgQ2hhbmdlLFxuICBDb21taXQsXG4gIExpbmVJZCxcbiAgVW5peFRpbWUsXG4gIFVzZXJJZCxcbn0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNuYXBTaG90IHtcbiAgdGV4dD86IHN0cmluZztcbiAgdHlwZTogXCJpbnNlcnRcIiB8IFwidXBkYXRlXCIgfCBcImRlbGV0ZVwiO1xuICB1c2VySWQ6IFVzZXJJZDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTGluZVNuYXBTaG90IHtcbiAgaWQ6IExpbmVJZDtcbiAgc25hcHNob3RzOiBNYXA8VW5peFRpbWUsIFNuYXBTaG90Pjtcbn1cbi8qKiBjb21taXRz44GL44KJ5bGl5q2044KS5L2c5oiQ44GZ44KLXG4gKlxuICogQHBhcmFtIGNvbW1pdHMg5aSJ5o+b44GX44Gf44GEY29tbWl044GubGlzdFxuICovXG5leHBvcnQgY29uc3QgY29udmVydCA9IChcbiAgY29tbWl0czogQ29tbWl0W10sXG4pOiB7IGhpc3Rvcnk6IExpbmVTbmFwU2hvdFtdOyByYW5nZTogVW5peFRpbWVbXSB9ID0+IHtcbiAgLy8gX2luc2VydCwgX3VwZGF0ZSwgX2RlbGV0ZeS7peWkluOCkueEoeimluOBmeOCi1xuICBjb25zdCBjaGFuZ2VzID0gY29tbWl0cy5mbGF0TWFwKFxuICAgICh7IGNoYW5nZXMsIGNyZWF0ZWQsIHVzZXJJZCB9KSA9PlxuICAgICAgY2hhbmdlcy5mbGF0TWFwKChjaGFuZ2UpID0+IHtcbiAgICAgICAgY29uc3QgY2hhbmdlSW5mbyA9IG1ha2VDaGFuZ2VJbmZvKGNoYW5nZSwgdXNlcklkLCBjcmVhdGVkKTtcbiAgICAgICAgcmV0dXJuIGNoYW5nZUluZm8gPyBbY2hhbmdlSW5mb10gOiBbXTtcbiAgICAgIH0pLFxuICApO1xuXG4gIGNvbnN0IHJhbmdlID0gWy4uLm5ldyBTZXQoY2hhbmdlcy5tYXAoKHsgY3JlYXRlZCB9KSA9PiBjcmVhdGVkKSldLnNvcnQoKTtcblxuICAvLyBMaW5lU25hcHNob3TjgavlpInmj5vjgZnjgotcbiAgY29uc3QgbGluZXMgPSBjaGFuZ2VzLnJlZHVjZSgobGluZXMsIGNoYW5nZSkgPT4ge1xuICAgIGlmIChjaGFuZ2UudHlwZSA9PT0gXCJpbnNlcnRcIikge1xuICAgICAgY29uc3Qgc25hcHNob3RzID0gbmV3IE1hcDxVbml4VGltZSwgU25hcFNob3Q+KCk7XG4gICAgICBzbmFwc2hvdHMuc2V0KGNoYW5nZS5jcmVhdGVkLCB7XG4gICAgICAgIHRleHQ6IGNoYW5nZS50ZXh0LFxuICAgICAgICB0eXBlOiBjaGFuZ2UudHlwZSxcbiAgICAgICAgdXNlcklkOiBjaGFuZ2UudXNlcklkLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBsaW5lOiBMaW5lU25hcFNob3QgPSB7XG4gICAgICAgIGlkOiBjaGFuZ2UuaWQsXG4gICAgICAgIHNuYXBzaG90cyxcbiAgICAgIH07XG4gICAgICBpZiAoY2hhbmdlLnBhcmVudElkID09PSBcIl9lbmRcIikgcmV0dXJuIFsuLi5saW5lcywgbGluZV07XG5cbiAgICAgIC8vIHBhcmVudElk44Gu44OH44O844K/44Gu5YmN44Gr5oy/5YWl44GZ44KLXG4gICAgICBjb25zdCBpbmRleCA9IGxpbmVzLmZpbmRJbmRleCgoeyBpZCB9KSA9PiBpZCA9PT0gY2hhbmdlLnBhcmVudElkKTtcbiAgICAgIC8vIHBhcmVudElk44Gu44OH44O844K/44GM5a2Y5Zyo44GX44Gq44GL44Gj44Gf44KJ44CB44Go44KK44GC44GI44Ga5pyr5bC+44Gr5oy/5YWl44GZ44KLXG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgW3NjcmFwYm94LXNuYXBzaG90QDAuMS4wXSBUaGUgcGFyZW50IGxpbmUgdGhlIHNuYXBzaG90IHdvdWxkIGluc2VydCBiZWZvcmUgaXMgbm90IGZvdW5kLiBjaGFuZ2U6IGAsXG4gICAgICAgICAgY2hhbmdlLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gWy4uLmxpbmVzLCBsaW5lXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbLi4ubGluZXMuc2xpY2UoMCwgaW5kZXgpLCBsaW5lLCAuLi5saW5lcy5zbGljZShpbmRleCldO1xuICAgIH1cblxuICAgIC8vIOihjOODh+ODvOOCv+OCkui/veWKoOOBmeOCi3NuYXBzaG9044KS5o6i44GZXG4gICAgY29uc3QgaW5kZXggPSBsaW5lcy5maW5kSW5kZXgoKHsgaWQgfSkgPT4gaWQgPT09IGNoYW5nZS5pZCk7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW3NjcmFwYm94LXNuYXBzaG90QDAuMS4wXSBUaGUgbGluZSBkYXRhIHRvIGJlIGFwcGVuZCB0aGUgY2hhbmdlIGlzIG5vdCBmb3VuZC4gY2hhbmdlOiBgLFxuICAgICAgICBjaGFuZ2UsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGxpbmVzO1xuICAgIH1cblxuICAgIGxpbmVzW2luZGV4XS5zbmFwc2hvdHMuc2V0KGNoYW5nZS5jcmVhdGVkLCB7XG4gICAgICB0ZXh0OiBjaGFuZ2UudHlwZSA9PT0gXCJ1cGRhdGVcIiA/IGNoYW5nZS50ZXh0IDogdW5kZWZpbmVkLFxuICAgICAgdHlwZTogY2hhbmdlLnR5cGUsXG4gICAgICB1c2VySWQ6IGNoYW5nZS51c2VySWQsXG4gICAgfSk7XG4gICAgcmV0dXJuIGxpbmVzO1xuICB9LCBbXSBhcyBMaW5lU25hcFNob3RbXSk7XG5cbiAgcmV0dXJuIHsgaGlzdG9yeTogbGluZXMsIHJhbmdlIH07XG59O1xuXG5jb25zdCBtYWtlQ2hhbmdlSW5mbyA9IChjaGFuZ2U6IENoYW5nZSwgdXNlcklkOiBVc2VySWQsIGNyZWF0ZWQ6IFVuaXhUaW1lKSA9PiB7XG4gIGlmIChcIl9pbnNlcnRcIiBpbiBjaGFuZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJpbnNlcnRcIixcbiAgICAgIGlkOiBjaGFuZ2UubGluZXMuaWQsXG4gICAgICBwYXJlbnRJZDogY2hhbmdlLl9pbnNlcnQsXG4gICAgICB0ZXh0OiBjaGFuZ2UubGluZXMudGV4dCxcbiAgICAgIHVzZXJJZCxcbiAgICAgIGNyZWF0ZWQsXG4gICAgfSBhcyBjb25zdDtcbiAgfVxuICBpZiAoXCJfdXBkYXRlXCIgaW4gY2hhbmdlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwidXBkYXRlXCIsXG4gICAgICBpZDogY2hhbmdlLl91cGRhdGUsXG4gICAgICB0ZXh0OiBjaGFuZ2UubGluZXMudGV4dCxcbiAgICAgIHVzZXJJZCxcbiAgICAgIGNyZWF0ZWQsXG4gICAgfSBhcyBjb25zdDtcbiAgfVxuICBpZiAoXCJfZGVsZXRlXCIgaW4gY2hhbmdlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZGVsZXRlXCIsXG4gICAgICBpZDogY2hhbmdlLl9kZWxldGUsXG4gICAgICB1c2VySWQsXG4gICAgICBjcmVhdGVkLFxuICAgIH0gYXMgY29uc3Q7XG4gIH1cbiAgcmV0dXJuO1xufTtcbiIsICJpbXBvcnQgeyBjb252ZXJ0LCBMaW5lU25hcFNob3QgfSBmcm9tIFwiLi9jb252ZXJ0LnRzXCI7XG5pbXBvcnQgdHlwZSB7IENvbW1pdHNSZXNwb25zZSwgUGFnZVNuYXBzaG90IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuXG5leHBvcnQgY29uc3QgZ2V0Q29tbWl0SGlzdG9yeSA9IGFzeW5jIChcbiAgcHJvamVjdDogc3RyaW5nLFxuICBwYWdlSWQ6IHN0cmluZyxcbik6IFByb21pc2U8eyByYW5nZTogbnVtYmVyW107IGhpc3Rvcnk6IExpbmVTbmFwU2hvdFtdIH0+ID0+IHtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goXG4gICAgYC9hcGkvY29tbWl0cy8ke3Byb2plY3R9LyR7cGFnZUlkfWAsXG4gICk7XG4gIGNvbnN0IHsgY29tbWl0cyB9ID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIENvbW1pdHNSZXNwb25zZTtcbiAgcmV0dXJuIGNvbnZlcnQoY29tbWl0cyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UGFnZUhpc3RvcnkgPSBhc3luYyAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgcGFnZUlkOiBzdHJpbmcsXG4pID0+IHtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goXG4gICAgYC9hcGkvcGFnZS1zbmFwc2hvdHMvJHtwcm9qZWN0fS8ke3BhZ2VJZH1gLFxuICApO1xuICBjb25zdCB7IHNuYXBzaG90cyB9ID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIFBhZ2VTbmFwc2hvdDtcblxuICBjb25zdCBwYWdlcyA9IG5ldyBNYXAoXG4gICAgc25hcHNob3RzLm1hcCgoeyBsaW5lcywgY3JlYXRlZCB9KSA9PiBbY3JlYXRlZCwgbGluZXNdKSxcbiAgKTtcbiAgY29uc3QgcmFuZ2UgPSBzbmFwc2hvdHMubWFwKCh7IGNyZWF0ZWQgfSkgPT4gY3JlYXRlZCkuc29ydCgpO1xuICByZXR1cm4geyBwYWdlcywgcmFuZ2UgfTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuLyoqIEBqc3hGcmFnIEZyYWdtZW50ICovXG5cbmltcG9ydCB7XG4gIEZyYWdtZW50LFxuICBoLFxuICByZW5kZXIsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IGxpZ2h0Rm9ybWF0IH0gZnJvbSBcIi4vZGVwcy9kYXRlLWZucy50c1wiO1xuaW1wb3J0IHsgdXNlQXN5bmMgfSBmcm9tIFwiLi91c2VBc3luYy50c1wiO1xuaW1wb3J0IHsgZ2V0Q29tbWl0SGlzdG9yeSwgZ2V0UGFnZUhpc3RvcnkgfSBmcm9tIFwiLi9mZXRjaC50c1wiO1xuaW1wb3J0IHR5cGUgeyBTY3JhcGJveCB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyb2xsZXIge1xuICBvcGVuOiAoKSA9PiB2b2lkO1xuICBjbG9zZTogKCkgPT4gdm9pZDtcbiAgdG9nZ2xlOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3Qgc2V0dXAgPSAocHJvamVjdHM6IHN0cmluZ1tdKTogUHJvbWlzZTxDb250cm9sbGVyPiA9PiB7XG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGFwcC5kYXRhc2V0LnVzZXJzY3JpcHROYW1lID0gXCJ0YWtrZXI5OS9zY3JhcGJveC1oaXN0b3J5LXNsaWRlclwiO1xuICBjb25zdCBzaGFkb3dSb290ID0gYXBwLmF0dGFjaFNoYWRvdyh7IG1vZGU6IFwib3BlblwiIH0pO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZChhcHApO1xuICByZXR1cm4gbmV3IFByb21pc2UoXG4gICAgKHJlc29sdmUpID0+XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxBcHAgZ2V0Q29udHJvbGxlcj17KGNvbnRyb2xsZXIpID0+IHJlc29sdmUoY29udHJvbGxlcil9IC8+LFxuICAgICAgICBzaGFkb3dSb290LFxuICAgICAgKSxcbiAgKTtcbn07XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGdldENvbnRyb2xsZXI6IChjb250cm9sbGVyOiBDb250cm9sbGVyKSA9PiB2b2lkO1xufVxuXG5jb25zdCBBcHAgPSAoeyBnZXRDb250cm9sbGVyIH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IFtjbG9zZWQsIHNldENsb3NlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3Qgb3BlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHNldENsb3NlZChmYWxzZSksIFtdKTtcbiAgY29uc3QgY2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiBzZXRDbG9zZWQodHJ1ZSksIFtdKTtcbiAgY29uc3QgdG9nZ2xlID0gdXNlQ2FsbGJhY2soKCkgPT4gc2V0Q2xvc2VkKChwcmV2KSA9PiAhcHJldiksIFtdKTtcbiAgdXNlRWZmZWN0KCgpID0+IGdldENvbnRyb2xsZXIoeyBvcGVuLCBjbG9zZSwgdG9nZ2xlIH0pLCBbZ2V0Q29udHJvbGxlcl0pO1xuICBjb25zdCBoYW5kbGVDbG9zZSA9IHVzZUNhbGxiYWNrKChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCEoZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHJldHVybjtcbiAgICBpZiAoZS50YXJnZXQuaWQgIT09IFwiYmFja2dyb3VuZFwiKSByZXR1cm47XG4gICAgY2xvc2UoKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHsgc3RhdGUsIHJlc3VsdCB9ID0gdXNlQXN5bmMoXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKGNsb3NlZCkgcmV0dXJuO1xuICAgICAgaWYgKHNjcmFwYm94LkxheW91dCAhPT0gXCJwYWdlXCIpIHJldHVybjtcbiAgICAgIGNvbnN0IFtjb21taXQsIHBhZ2VdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICBnZXRDb21taXRIaXN0b3J5KFxuICAgICAgICAgIHNjcmFwYm94LlByb2plY3QubmFtZSxcbiAgICAgICAgICBzY3JhcGJveC5QYWdlLmlkLFxuICAgICAgICApLFxuICAgICAgICBnZXRQYWdlSGlzdG9yeShcbiAgICAgICAgICBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUsXG4gICAgICAgICAgc2NyYXBib3guUGFnZS5pZCxcbiAgICAgICAgKSxcbiAgICAgIF0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLyoqIOWxpeattOmAo+eVqiAqL1xuICAgICAgICByYW5nZTogWy4uLnBhZ2UucmFuZ2UsIC4uLmNvbW1pdC5yYW5nZV0sXG4gICAgICAgIC8qKiDlsaXmrbTpgKPnlarjgavlr77lv5zjgZnjgovjg4bjgq3jgrnjg4jjgpLlvpfjgovplqLmlbAqL1xuICAgICAgICBnZXRTbmFwc2hvdDogKHRpbWU6IG51bWJlcik6IHN0cmluZ1tdID0+IHtcbiAgICAgICAgICAvLyDnr4Tlm7LlpJbjgarjgolwYWdlSGlzdG9yeeOBi+OCieWPluW+l+OBmeOCi1xuICAgICAgICAgIGlmICghY29tbWl0LnJhbmdlLmluY2x1ZGVzKHRpbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFnZS5wYWdlcy5nZXQodGltZSk/Lm1hcD8uKChsaW5lKSA9PiBsaW5lLnRleHQpID8/IFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb21taXQuaGlzdG9yeS5mbGF0TWFwKCh7IHNuYXBzaG90cyB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gc25hcHNob3RzLmdldCh0aW1lKTtcbiAgICAgICAgICAgIC8vIGxpbmXjgYzlrZjlnKjjgZfjgaZ0ZXh044GM56m644Gq44KJ44CB5YmK6Zmk44GV44KM44Gf6KGM44Gn44GC44KLXG4gICAgICAgICAgICBpZiAobGluZSkgcmV0dXJuIGxpbmUudGV4dCA9PT0gdW5kZWZpbmVkID8gW10gOiBbbGluZS50ZXh0XTtcblxuICAgICAgICAgICAgLy8g5LiA44Gk5YmN44Gu5bGl5q2044KS5o6i44GX5Ye644GZXG4gICAgICAgICAgICBjb25zdCBwcmV2VXBkYXRlZCA9IE1hdGgubWF4KFxuICAgICAgICAgICAgICAuLi5bLi4uc25hcHNob3RzLmtleXMoKV0uZmlsdGVyKCh1cGRhdGVkKSA9PiB1cGRhdGVkIDwgdGltZSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHByZXZVcGRhdGVkID09PSB0aW1lKSByZXR1cm4gW107XG4gICAgICAgICAgICBjb25zdCBwcmV2VGV4dCA9IHNuYXBzaG90cy5nZXQocHJldlVwZGF0ZWQpPy50ZXh0O1xuICAgICAgICAgICAgcmV0dXJuIHByZXZUZXh0ID09PSB1bmRlZmluZWQgPyBbXSA6IFtwcmV2VGV4dF07XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0sXG4gICAgeyByYW5nZTogW10sIGdldFNuYXBzaG90OiAoKSA9PiBbXSB9LFxuICAgIDEwMDAsXG4gICAgW2Nsb3NlZF0sXG4gICk7XG5cbiAgLy8gcmFuZ2XjgYzlpInmm7TjgZXjgozjgZ/jgajjgY3jgaDjgZFzbGlkZXLjga7kvY3nva7jgpJyZXNldOOBmeOCi1xuICBjb25zdCBbbWF4LCBzZXRNYXhdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IFtpbmRleCwgc2V0SW5kZXhdID0gdXNlU3RhdGUoMCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXRlICE9PSBcInJlc29sdmVkXCIpIHJldHVybjtcbiAgICBjb25zdCB2YWx1ZSA9IE1hdGgubWF4KDAsIHJlc3VsdC5yYW5nZS5sZW5ndGggLSAxKTtcbiAgICBzZXRNYXgodmFsdWUpO1xuICAgIHNldEluZGV4KHZhbHVlKTtcbiAgfSwgW3Jlc3VsdF0pO1xuXG4gIGNvbnN0IG9uU2xpZGVyQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBoLkpTWC5UYXJnZXRlZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICAgICAgc2V0SW5kZXgocGFyc2VJbnQoZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZSkpLFxuICAgIFtdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxzdHlsZT5cbiAgICAgICAgeycubW9kYWx7cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDt6LWluZGV4OjEwNTA7YmFja2dyb3VuZC1jb2xvcjojMDAwYztkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtyb3ctZ2FwOjEwcHg7cGFkZGluZzoxMHB4fS5jbG9zZWR7ZGlzcGxheTpub25lfS5tb2RhbD4qe2NvbG9yOnZhcigtLXBhZ2UtdGV4dC1jb2xvciwgIzRhNGE0YSk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wYWdlLWJnLCAjZmVmZWZlKTtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWJvZHktYmcsICNkY2RkZTApO2JvcmRlci1yYWRpdXM6NHB4O3BhZGRpbmc6NXB4O3dpZHRoOmNhbGModmFyKC0taXRlbS13aWR0aCwgMTAwJSkgLSAxMHB4KX1AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpey5tb2RhbHtwYWRkaW5nOjMwcHh9fS5jb250cm9sbGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZTtnYXA6LjJlbX1pbnB1dHt3aWR0aDoxMDAlfXRpbWV7d2hpdGUtc3BhY2U6bm93cmFwfS52aWV3ZXJ7b3ZlcmZsb3cteTpzY3JvbGx9cHJle3dpZHRoOjEwMCU7Zm9udC1mYW1pbHk6dmFyKC0taGlzdG9yeS1zbGlkZXItcHJlLWZvbnQsIE1lbmxvLE1vbmFjbyxDb25zb2xhcyxcIkNvdXJpZXIgTmV3XCIsbW9ub3NwYWNlKTt3b3JkLWJyZWFrOmJyZWFrLWFsbDt3b3JkLXdyYXA6YnJlYWstd29yZDt3aGl0ZS1zcGFjZTpwcmUtd3JhcH0nfVxuICAgICAgPC9zdHlsZT5cbiAgICAgIDxkaXZcbiAgICAgICAgaWQ9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgY2xhc3NOYW1lPXtgbW9kYWwke2Nsb3NlZCA/IFwiIGNsb3NlZFwiIDogXCJcIn1gfVxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbG9zZX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250cm9sbGVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJjbG9zZS1idXR0b25cIiBvbkNsaWNrPXtjbG9zZX0+eDwvYnV0dG9uPlxuICAgICAgICAgIHtzdGF0ZSA9PT0gXCJyZXNvbHZlZFwiICYmIHJlc3VsdC5yYW5nZS5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibm90LWZvdW5kXCI+XG4gICAgICAgICAgICAgIG5vIGhpc3RvcnkgZm91bmQuXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7c3RhdGUgIT09IFwicmVqZWN0ZWRcIiAmJiByZXN1bHQucmFuZ2UubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJhbmdlXCJcbiAgICAgICAgICAgICAgICAgIG1heD17bWF4fVxuICAgICAgICAgICAgICAgICAgbWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICB0aXRsZT17bGlnaHRGb3JtYXQoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKHJlc3VsdC5yYW5nZVtpbmRleF0gKiAxMDAwKSxcbiAgICAgICAgICAgICAgICAgICAgXCJ5eXl5LU1NLWRkIEhIOm1tOnNzXCIsXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgb25JbnB1dD17b25TbGlkZXJDaGFuZ2V9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8dGltZVxuICAgICAgICAgICAgICAgICAgZGF0ZVRpbWU9e2xpZ2h0Rm9ybWF0KFxuICAgICAgICAgICAgICAgICAgICBuZXcgRGF0ZShyZXN1bHQucmFuZ2VbaW5kZXhdICogMTAwMCksXG4gICAgICAgICAgICAgICAgICAgIFwieXl5eS1NTS1kZCBISDptbTpzc1wiLFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7bGlnaHRGb3JtYXQoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKHJlc3VsdC5yYW5nZVtpbmRleF0gKiAxMDAwKSxcbiAgICAgICAgICAgICAgICAgICAgXCJ5eXl5LU1NLWRkIEhIOm1tOnNzXCIsXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvdGltZT5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3N0YXRlICE9PSBcInJlamVjdGVkXCJcbiAgICAgICAgICA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidmlld2VyXCI+XG4gICAgICAgICAgICAgIDxwcmU+XG4gICAgICAgICAgICAgICAgICAgIHtyZXN1bHQuZ2V0U25hcHNob3QocmVzdWx0LnJhbmdlW2luZGV4XSkuam9pbihcIlxcblwiKX1cbiAgICAgICAgICAgICAgPC9wcmU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApXG4gICAgICAgICAgOiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImVycm9yIHZpZXdlclwiPlxuICAgICAgICAgICAgICB7YEVycm9yOiAke0pTT04uc3RyaW5naWZ5KHJlc3VsdCl9YH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn07XG4iLCAiZXhwb3J0IGNvbnN0IGlzTW9iaWxlID0gKCkgPT4gL21vYmlsZS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkiLCAiaW1wb3J0IHR5cGUgeyBSZXN1bHQgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24qIHBvb2w8VCwgVSwgRSA9IHVua25vd24+KFxuICB0aHJlc2hvbGQ6IG51bWJlcixcbiAgYXJnczogSXRlcmFibGU8VD4sXG4gIGZ1bmM6ICh2YWx1ZTogVCwgaWQ6IG51bWJlcikgPT4gUHJvbWlzZTxVPixcbik6IEdlbmVyYXRvcjxQcm9taXNlPFJlc3VsdDxVLCBFPj4sIHZvaWQsIHVua25vd24+IHtcbiAgbGV0IHJ1bm5pbmcgPSAwO1xuICBjb25zdCB3YWl0aW5ncyA9IFtdIGFzICgodmFsdWU6IG51bWJlciB8IFByb21pc2VMaWtlPG51bWJlcj4pID0+IHZvaWQpW107XG4gIGNvbnN0IHdhaXRGb3JSZWFkeSA9IGFzeW5jICgpID0+IHtcbiAgICBydW5uaW5nKys7XG4gICAgaWYgKHJ1bm5pbmcgPD0gdGhyZXNob2xkKSByZXR1cm4gcnVubmluZyAtIDE7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPG51bWJlcj4oXG4gICAgICAocmVzb2x2ZSkgPT4gd2FpdGluZ3MucHVzaChyZXNvbHZlKSxcbiAgICApO1xuICB9O1xuICBmb3IgKGNvbnN0IGFyZyBvZiBhcmdzKSB7XG4gICAgeWllbGQgKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gYXdhaXQgd2FpdEZvclJlYWR5KCk7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgdmFsdWU6IGF3YWl0IGZ1bmMoYXJnLCBpZCksXG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgcmVhc29uOiBlIGFzIEUsXG4gICAgICAgIH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBydW5uaW5nLS07XG4gICAgICAgIHdhaXRpbmdzLnNoaWZ0KCk/LihpZCk7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgfVxuICAvLyDlrp/ooYzjgZfjgY3jgozjgarjgYTlj6/og73mgKfjga/jgYLjgovvvJ9cbn1cbiIsICJpbXBvcnQge1xuICBkaXNjb25uZWN0LFxuICBtYWtlU29ja2V0LFxuICBwYXRjaCxcbiAgcmVwbGFjZUxpbmtzLFxuICBTb2NrZXQsXG59IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9tb2QudHNcIjtcbmltcG9ydCB0eXBlIHsgRXJyb3JMaWtlIH0gZnJvbSBcIi4uL3NjcmFwYm94LWpwJTJGdHlwZXMvcmVzdC50c1wiO1xuaW1wb3J0IHsgcG9vbCB9IGZyb20gXCIuLi9hc3luYy1saWIvbW9kLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGluayB7XG4gIGJlZm9yZTogc3RyaW5nO1xuICBhZnRlcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxhY2VTdGF0ZSB7XG4gIGxpbms6IExpbms7XG4gIHByb2plY3RDb3VudDogbnVtYmVyO1xuICByZXBsYWNlZDogbnVtYmVyO1xuICBkb25lOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlcGxhY2UgPSBhc3luYyAoXG4gIGxpbmtzOiBMaW5rW10sXG4gIHByb2plY3RzOiBJdGVyYWJsZTxzdHJpbmc+LFxuICBjYWxsYmFjazogKHN0YXRlOiBSZXBsYWNlU3RhdGUpID0+IHZvaWQsXG4pID0+IHtcbiAgaWYgKGxpbmtzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICBpZiAobGlua3MuZXZlcnkoKHsgYmVmb3JlLCBhZnRlciB9KSA9PiBiZWZvcmUgPT09IGFmdGVyKSlyZXR1cm47XG4gIFxuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBtYWtlU29ja2V0KCk7XG4gIFxuICB0cnkge1xuICAgIGNvbnN0IGl0ZXIxID0gcG9vbChcbiAgICAgIDUsXG4gICAgICBsaW5rcyxcbiAgICAgIGFzeW5jIChsaW5rKSA9PiB7XG4gICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgIGxldCByZXBsYWNlZCA9IDA7XG4gICAgICAgIGlmIChsaW5rLmJlZm9yZSA9PT0gbGluay5hZnRlcikge1xuICAgICAgICAgIGNhbGxiYWNrKHsgbGluaywgcHJvamVjdENvdW50OiAwLCByZXBsYWNlZDogMCwgZG9uZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgaXRlcjIgPSBwb29sKFxuICAgICAgICAgIDIsXG4gICAgICAgICAgWy4uLm5ldyBTZXQocHJvamVjdHMpXSxcbiAgICAgICAgICBhc3luYyAocHJvamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVwbGFjZUFsaW5rKGxpbmssIHByb2plY3QsIHNvY2tldCk7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgICAgICAgICB0aHJvdyB0b0Vycm9yKHJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgcmVwbGFjZWQgKz0gcmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgY2FsbGJhY2soeyBsaW5rLCBwcm9qZWN0Q291bnQ6IGNvdW50LCByZXBsYWNlZCwgZG9uZTogZmFsc2UgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWy4uLml0ZXIyXSk7XG4gICAgICAgIGNhbGxiYWNrKHsgbGluaywgcHJvamVjdENvdW50OiBjb3VudCwgcmVwbGFjZWQsIGRvbmU6IHRydWUgfSk7XG4gICAgICB9LFxuICAgICk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoWy4uLml0ZXIxXSk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZGlzY29ubmVjdChzb2NrZXQpO1xuICB9XG59O1xuXG4vKiog5LiA44Gk44Gu44Oq44Oz44Kv44KS5LiA44Gk44GucHJvamVjdOOBp+e9ruaPm+OBmeOCi1xuICpcbiAqIEByZXR1cm4gcmVwbGFjZUxpbmtz44Go5ZCM44GYXG4gKi9cbmNvbnN0IHJlcGxhY2VBbGluayA9IGFzeW5jIChsaW5rOiBMaW5rLCBwcm9qZWN0OiBzdHJpbmcsIHNvY2tldDogU29ja2V0KSA9PiB7XG4gIGNvbnN0IFtyZXN1bHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgIC8vIOacrOW9k+OBr2hhc0JhY2tMaW5rc09ySWNvbnMgPT09IHRydWXjga7jgajjgY3jga7jgb/nva7mj5vjgZfjgZ/jgYRcbiAgICByZXBsYWNlTGlua3MocHJvamVjdCwgbGluay5iZWZvcmUsIGxpbmsuYWZ0ZXIpLFxuICAgIHBhdGNoKHByb2plY3QsIGxpbmsuYmVmb3JlLCAobGluZXMsIHsgcGVyc2lzdGVudCB9KSA9PiB7XG4gICAgICBpZiAoIXBlcnNpc3RlbnQpIHJldHVybjtcblxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgbGluay5hZnRlcixcbiAgICAgICAgLi4ubGluZXMubWFwKChsaW5lKSA9PiBsaW5lLnRleHQpLnNsaWNlKDEpLFxuICAgICAgXTtcbiAgICB9LCB7IHNvY2tldCB9KSxcbiAgXSk7XG4gIFxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExpbmtzID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZ1tdID0+XG4gIHRleHQuc3BsaXQoXCJcXG5cIilcbiAgLmZsYXRNYXAoXG4gICAgKGxpbmUpID0+IFsuLi5saW5lLm1hdGNoQWxsKC9cXFsoKD86W15cXFshXCIjJSYnKClcXCpcXCssXFwtXFwuXFwvXFx7XFx8XFx9PD5ffl0gfC5bXiBdKilbXlxcW1xcXV0qKVxcXS9nKV1cbiAgKVxuICAubWFwKChbLCBsaW5rXSkgPT4gbGluayk7XG5cbmNvbnN0IHRvRXJyb3IgPSAoZTogRXJyb3JMaWtlKTogRXJyb3IgPT4ge1xuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigpO1xuICBlcnJvci5uYW1lID0gZS5uYW1lO1xuICBlcnJvci5tZXNzYWdlID0gZS5tZXNzYWdlO1xuICByZXR1cm4gZXJyb3I7XG59O1xuIiwgImV4cG9ydCAqIGZyb20gXCJucG06QHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDlcIjsiLCAiaW1wb3J0IHtcbiAgQ29kZUJsb2NrLFxuICBMaW5lLFxuICBOb2RlLFxuICBwYXJzZSxcbiAgVGFibGUsXG59IGZyb20gXCIuLi9zY3JhcGJveC1wYXJzZXIvbW9kLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0ID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGJsb2NrcyA9IHBhcnNlKHRleHQsIHsgaGFzVGl0bGU6IGZhbHNlIH0pO1xuICByZXR1cm4gYmxvY2tzLmZsYXRNYXAoKGJsb2NrKSA9PiB7XG4gICAgc3dpdGNoIChibG9jay50eXBlKSB7XG4gICAgICBjYXNlIFwidGl0bGVcIjpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgY2FzZSBcImNvZGVCbG9ja1wiOlxuICAgICAgICByZXR1cm4gY29udmVydENvZGVCbG9jayhibG9jayk7XG4gICAgICBjYXNlIFwidGFibGVcIjpcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRUYWJsZShibG9jayk7XG4gICAgICBjYXNlIFwibGluZVwiOlxuICAgICAgICByZXR1cm4gY29udmVydExpbmUoYmxvY2spO1xuICAgIH1cbiAgfSlcbiAgICAubWFwKChsaW5lKSA9PiBsaW5lKS5qb2luKFwiXFxuXCIpO1xufTtcblxuLyoqIOOCs+ODvOODieODluODreODg+OCr+OBr+OBneOBruOBvuOBvuW+qeWFg+OBmeOCiyAqL1xuY29uc3QgY29udmVydENvZGVCbG9jayA9IChcbiAgeyBmaWxlTmFtZSwgY29udGVudCwgaW5kZW50IH06IENvZGVCbG9jayxcbikgPT4ge1xuICBjb25zdCB0YWcgPSBcIiBcIi5yZXBlYXQoaW5kZW50KTtcblxuICByZXR1cm4gW1xuICAgIGAke3RhZ31jb2RlOiR7ZmlsZU5hbWV9YCxcbiAgICAuLi5jb250ZW50LnNwbGl0KFwiXFxuXCIpLm1hcCgobGluZSkgPT4gYCR7dGFnfSAke2xpbmV9YCksXG4gIF07XG59O1xuXG4vKiog44OG44O844OW44Or5Lit44Gu44Oq44Oz44Kv44KS5aSW44GZICovXG5jb25zdCBjb252ZXJ0VGFibGUgPSAoeyBmaWxlTmFtZSwgY2VsbHMsIGluZGVudCB9OiBUYWJsZSkgPT4ge1xuICBjb25zdCB0YWcgPSBcIiBcIi5yZXBlYXQoaW5kZW50KTtcblxuICByZXR1cm4gW1xuICAgIGAke3RhZ310YWJsZToke2ZpbGVOYW1lfWAsXG4gICAgLi4uY2VsbHMubWFwKChjZWxsKSA9PlxuICAgICAgYCR7dGFnfSAke1xuICAgICAgICBjZWxsLm1hcCgobm9kZXMpID0+IG5vZGVzLm1hcCgobm9kZSkgPT4gY29udmVydE5vZGUobm9kZSkpLmpvaW4oXCJcIikpLmpvaW4oXCJcXHRcIilcbiAgICAgIH1gXG4gICAgKSxcbiAgXTtcbn07XG5cbi8qKiDooYzlhoXjg6rjg7Pjgq/jgpLlpJbjgZkgKi9cbmNvbnN0IGNvbnZlcnRMaW5lID0gKHsgbm9kZXMsIGluZGVudCB9OiBMaW5lKSA9PiBbXG4gIGAke1wiIFwiLnJlcGVhdChpbmRlbnQpfSR7XG4gICAgbm9kZXMubWFwKChub2RlKSA9PiBgJHtjb252ZXJ0Tm9kZShub2RlKX1gKS5qb2luKFxuICAgICAgXCJcIixcbiAgICApXG4gIH1gLFxuXTtcblxuLyoqIOODquODs+OCr+OCkuWkluOBl+OBn25vZGXjgpLkvZzjgosgKi9cbmNvbnN0IGNvbnZlcnROb2RlID0gKG5vZGU6IE5vZGUpOiBzdHJpbmcgPT4ge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIGNhc2UgXCJxdW90ZVwiOlxuICAgICAgcmV0dXJuIGA+ICR7bm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IGNvbnZlcnROb2RlKG5vZGUpKS5qb2luKFwiXCIpfWA7XG4gICAgY2FzZSBcInN0cm9uZ1wiOlxuICAgICAgcmV0dXJuIGBbWyR7bm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IGNvbnZlcnROb2RlKG5vZGUpKS5qb2luKFwiXCIpfV1dYDtcbiAgICBjYXNlIFwiZGVjb3JhdGlvblwiOiB7XG4gICAgICBjb25zdCBkZWNvID0gbm9kZS5kZWNvcy5tYXAoKGRlY28pID0+IHtcbiAgICAgICAgY29uc3QgbnVtID0gcGFyc2VJbnQoZGVjby5tYXRjaCgvXFwqLShcXGQpLyk/LlsxXSA/PyBcIjBcIik7XG4gICAgICAgIHJldHVybiBudW0gPiAwID8gXCIqXCIucmVwZWF0KG51bSkgOiBkZWNvO1xuICAgICAgfSkuam9pbihcIlwiKTtcblxuICAgICAgcmV0dXJuIGBbJHtkZWNvID8gYCR7ZGVjb30gYCA6IFwiXCJ9JHtcbiAgICAgICAgbm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IGNvbnZlcnROb2RlKG5vZGUpKS5qb2luKFwiXCIpXG4gICAgICB9XWA7XG4gICAgfVxuICAgIGNhc2UgXCJoYXNoVGFnXCI6XG4gICAgICByZXR1cm4gbm9kZS5ocmVmO1xuICAgIC8vIGxpbnRlcuOBruODkOOCsOOBp+OAgeS9leaVheOBi+itpuWRiuOBjOWHuuOCi1xuICAgIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZmFsbHRocm91Z2hcbiAgICBjYXNlIFwibGlua1wiOiBcbiAgICAgIHJldHVybiBub2RlLnBhdGhUeXBlID09PSBcImFic29sdXRlXCIgPyBub2RlLnJhdyA6IG5vZGUuaHJlZjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG5vZGUucmF3O1xuICB9XG59O1xuXG4gIiwgImltcG9ydCB7IFNjcmFwYm94IH0gZnJvbSBcIi4uL3NjcmFwYm94LWpwJTJGdHlwZXMvdXNlcnNjcmlwdC50c1wiO1xuaW1wb3J0IHsgZ2V0TGlua3MgfSBmcm9tICBcIi4uL+ikh+aVsOOBruODquODs+OCr+OCkuOBvuOBqOOCgeOBpue9ruaPm+OBmeOCi1VzZXJTY3JpcHQvbW9kLnRzXCI7XG5pbXBvcnQgeyBjb252ZXJ0IH0gZnJvbSBcIi4vbW9kLnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gIHRpdGxlOiAodGV4dCkgPT4gZ2V0TGlua3ModGV4dCkubGVuZ3RoID4gMCA/IFwiXFx1ZjEyN1wiIDogXCJcIixcbiAgb25DbGljazogKHRleHQpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBjb252ZXJ0KHRleHQpO1xuICAgIC8vIOODhuODreODoeOCouOBjOeEoemnhOOBq+abtOaWsOOBleOCjOOCi+OBruOCkumYsuOBkFxuICAgIGlmKHRleHQgPT0gcmVzdWx0KSByZXR1cm47XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCAiaW1wb3J0IHtcbiAgdXNlU3RhdHVzQmFyLFxuICBzbGVlcCxcbiAgcGF0Y2gsXG59IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9tb2QudHNcIjtcbmltcG9ydCB7IFNjcmFwYm94IH0gZnJvbSBcIi4uL3NjcmFwYm94LWpwJTJGdHlwZXMvdXNlcnNjcmlwdC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmNvbnN0IGVuYWJsZSA9ICh0ZXh0OiBzdHJpbmcpID0+XG4gICF0ZXh0LmluY2x1ZGVzKFwiXFxuXCIpICYmIC9cXFtbXlxcXV0rXFxdLy50ZXN0KHRleHQpO1xuXG5zY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcbiAgdGl0bGU6ICh0ZXh0KSA9PiBlbmFibGUodGV4dCkgPyBcIltdW11cIiA6IFwiXCIsXG4gIG9uQ2xpY2s6ICh0ZXh0KSA9PiB7XG4gICAgaWYgKCFlbmFibGUodGV4dCkpIHJldHVybjtcbiAgICBjb25zdCB0aXRsZSA9IHRleHQucmVwbGFjZUFsbChcIltcIiwgXCJcIikucmVwbGFjZUFsbChcIl1cIiwgXCJcIik7XG4gICAgKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVuZGVyLCBkaXNwb3NlIH0gPSB1c2VTdGF0dXNCYXIoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHByb2plY3QgPSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWU7XG4gICAgICAgIHJlbmRlcihcbiAgICAgICAgICB7IHR5cGU6IFwic3Bpbm5lclwiIH0sXG4gICAgICAgICAgeyB0eXBlOiBcInRleHRcIiwgdGV4dDogYGNyZWF0ZSAvJHtwcm9qZWN0fS8ke3RpdGxlfWAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgcGF0Y2goXG4gICAgICAgICAgcHJvamVjdCxcbiAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAoW3sgdGV4dDogdGl0bGUgfV0sIHsgcGVyc2lzdGVudCB9KSA9PiB7XG4gICAgICAgICAgICAvLyDkuK3ouqvjgYzjgYLjgovjgajjgY3jga/kvZXjgoLjgZfjgarjgYRcbiAgICAgICAgICAgIGlmIChwZXJzaXN0ZW50KSByZXR1cm47XG4gICAgICAgICAgICByZXR1cm4gW3RpdGxlLCB0ZXh0XTtcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgICByZW5kZXIoXG4gICAgICAgICAgeyB0eXBlOiBcImNoZWNrLWNpcmNsZVwiIH0sXG4gICAgICAgICAgeyB0eXBlOiBcInRleHRcIiwgdGV4dDogYGNyZWF0ZSAvJHtwcm9qZWN0fS8ke3RpdGxlfWAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgRXJyb3IpKSB0aHJvdyBlO1xuICAgICAgICByZW5kZXIoXG4gICAgICAgICAgeyB0eXBlOiBcImV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCIgfSxcbiAgICAgICAgICB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBgJHtlLm5hbWV9ICR7ZS5tZXNzYWdlfWAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IHNsZWVwKDIwMDApO1xuICAgICAgICBkaXNwb3NlKCk7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgICBcbiAgICByZXR1cm4gYFske3RpdGxlfV1gO1xuICB9LFxufSk7XG4iLCAiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydChcImh0dHBzOi8vZXNtLnNoL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA3LjIuMFwiKS5CbG9ja30gQmxvY2tcbiAqIEB0eXBlZGVmIHtpbXBvcnQoXCJodHRwczovL2VzbS5zaC9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJANy4yLjBcIikuVGFibGV9IFRhYmxlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KFwiaHR0cHM6Ly9lc20uc2gvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDcuMi4wXCIpLkxpbmV9IExpbmVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoXCJodHRwczovL2VzbS5zaC9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJANy4yLjBcIikuTm9kZX0gTm9kZVR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc2NyYXBib3gtanAvdHlwZXMvMC4zLjQvc2NyYXBib3gudHNcIikuU2NyYXBib3h9IFNjcmFwYm94XG4gKi9cblxuLyoqIFNjcmFwYm946KiY5rOV44KSTWFya2Rvd27oqJjms5XjgavlpInjgYjjgotcbiAqXG4gKiBAcGFyYW0ge0Jsb2NrfSBibG9ja1xuICogQHBhcmFtIHtudW1iZXJ9IHRvcEluZGVudExldmVsXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBjb252ZXJ0U2IyTWQgPSAoYmxvY2ssIHRvcEluZGVudExldmVsKSA9PiB7XG4gIHN3aXRjaCAoYmxvY2sudHlwZSkge1xuICAgIGNhc2UgXCJ0aXRsZVwiOlxuICAgICAgcmV0dXJuIFwiXCI7IC8vIOOCv+OCpOODiOODq+OBr+mBuOaKnuevhOWbsuOBq+WFpeOCieOBquOBhOOBruOBp+eEoeimllxuICAgIGNhc2UgXCJjb2RlQmxvY2tcIjpcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGJsb2NrLmZpbGVOYW1lLFxuICAgICAgICBgXFxuXFxgXFxgXFxgJHtnZXRGaWxlVHlwZShibG9jay5maWxlTmFtZSl9YCxcbiAgICAgICAgYmxvY2suY29udGVudCxcbiAgICAgICAgXCJcXGBcXGBcXGBcXG5cIixcbiAgICAgIF0uam9pbihcIlxcblwiKTtcbiAgICBjYXNlIFwidGFibGVcIjpcbiAgICAgIHJldHVybiBjb252ZXJ0VGFibGUoYmxvY2spO1xuICAgIGNhc2UgXCJsaW5lXCI6XG4gICAgICByZXR1cm4gY29udmVydExpbmUoYmxvY2ssIHRvcEluZGVudExldmVsKTtcbiAgfVxufTtcblxuLyoqIFRhYmxl6KiY5rOV44Gu5aSJ5o+bXG4gKlxuICogQHBhcmFtIHtUYWJsZX0gdGFibGVcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuY29uc3QgY29udmVydFRhYmxlID0gKHRhYmxlKSA9PiB7XG4gIGNvbnN0IGxpbmUgPSBbdGFibGUuZmlsZU5hbWVdO1xuICAvLyBjb2x1bW5z44Gu5pyA5aSn6ZW344KS6KiI566X44GZ44KLXG4gIGNvbnN0IG1heENvbCA9IE1hdGgubWF4KC4uLnRhYmxlLmNlbGxzLm1hcCgocm93KSA9PiByb3cubGVuZ3RoKSk7XG4gIHRhYmxlLmNlbGxzLmZvckVhY2goKHJvdywgaSkgPT4ge1xuICAgIGxpbmUucHVzaChcbiAgICAgIGB8ICR7XG4gICAgICAgIHJvdy5tYXAoKGNvbHVtbikgPT4gY29sdW1uLm1hcCgobm9kZSkgPT4gY29udmVydE5vZGUobm9kZSkpLmpvaW4oXCJcIikpXG4gICAgICAgICAgLmpvaW4oXCIgfCBcIilcbiAgICAgIH0gfGAsXG4gICAgKTtcbiAgICBpZiAoaSA9PT0gMCkgbGluZS5wdXNoKGB8JHtcIiAtLSB8XCIucmVwZWF0KG1heENvbCl9YCk7XG4gIH0pO1xuICByZXR1cm4gbGluZS5qb2luKFwiXFxuXCIpO1xufTtcblxuY29uc3QgSU5ERU5UID0gXCIgICAgXCI7IC8vIOOCpOODs+ODh+ODs+ODiOOBq+S9v+OBhuaWh+Wtl1xuXG4vKiog6KGM44Gu5aSJ5o+bXG4gKlxuICogQHBhcmFtIHtMaW5lfSBsaW5lXG4gKiBAcGFyYW0ge251bWJlcn0gdG9wSW5kZW50TGV2ZWxcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuY29uc3QgY29udmVydExpbmUgPSAobGluZSwgdG9wSW5kZW50TGV2ZWwpID0+IHtcbiAgY29uc3QgY29udGVudCA9IGxpbmUubm9kZXNcbiAgICAubWFwKChub2RlKSA9PlxuICAgICAgY29udmVydE5vZGUobm9kZSwgeyBzZWN0aW9uOiBsaW5lLmluZGVudCA9PT0gdG9wSW5kZW50TGV2ZWwgfSlcbiAgICApLmpvaW4oXCJcIikudHJpbSgpO1xuICBpZiAoY29udGVudCA9PT0gXCJcIikgcmV0dXJuIFwiXCI7IC8vIOepuuihjOOBr+OBneOBruOBvuOBvui/lOOBmVxuXG4gIC8vIOODquOCueODiOOCkuS9nOOCi1xuICBpZiAobGluZS5pbmRlbnQgPT09IHRvcEluZGVudExldmVsKSByZXR1cm4gY29udGVudDsgLy8g44OI44OD44OX44Os44OZ44Or44Gu6KGM44Gv44Kk44Oz44OH44Oz44OI44Gr44GX44Gq44GEXG4gIGxldCByZXN1bHQgPSBJTkRFTlQucmVwZWF0KGxpbmUuaW5kZW50IC0gdG9wSW5kZW50TGV2ZWwgLSAxKTtcbiAgaWYgKCEvXlxcZCtcXC4gLy50ZXN0KGNvbnRlbnQpKSByZXN1bHQgKz0gXCItIFwiOyAvLyDnlarlj7fjgarjgZfjga7ooYzjga9gLWDjgpLlhaXjgozjgotcbiAgcmV0dXJuIHJlc3VsdCArIGNvbnRlbnQ7XG59O1xuXG4vKiogTm9kZeOCkuWkieaPm+OBmeOCi1xuICpcbiAqIEBwYXJhbSB7Tm9kZVR5cGV9IG5vZGVcbiAqIEBwYXJhbSB7e3NlY3Rpb24/OmJvb2xlYW59fSBbaW5pdF1cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuY29uc3QgY29udmVydE5vZGUgPSAobm9kZSwgaW5pdCkgPT4ge1xuICBjb25zdCB7IHNlY3Rpb24gPSBmYWxzZSB9ID0gaW5pdCA/PyB7fTtcbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICBjYXNlIFwicXVvdGVcIjpcbiAgICAgIHJldHVybiBgPiAke25vZGUubm9kZXMubWFwKChub2RlKSA9PiBjb252ZXJ0Tm9kZShub2RlKSkuam9pbihcIlwiKX1gO1xuICAgIGNhc2UgXCJoZWxwZmVlbFwiOlxuICAgICAgcmV0dXJuIGBcXGA/ICR7bm9kZS50ZXh0fVxcYGA7XG4gICAgY2FzZSBcImltYWdlXCI6XG4gICAgY2FzZSBcInN0cm9uZ0ltYWdlXCI6XG4gICAgICByZXR1cm4gYCFbaW1hZ2VdKCR7bm9kZS5zcmN9KWA7XG4gICAgY2FzZSBcImljb25cIjpcbiAgICBjYXNlIFwic3Ryb25nSWNvblwiOlxuICAgICAgLy8g5LuV5YiH44KK57ea44Gg44GR5aSJ5o+b44GZ44KLXG4gICAgICByZXR1cm4gW1wiL2ljb25zL2hyXCIsIFwiL3NjcmFwYm94bGFiL2hyXCJdXG4gICAgICAgICAgLmluY2x1ZGVzKG5vZGUucGF0aClcbiAgICAgICAgPyBcIi0tLVwiXG4gICAgICAgIDogXCJcIjtcbiAgICBjYXNlIFwic3Ryb25nXCI6XG4gICAgICByZXR1cm4gYCoqJHtub2RlLm5vZGVzLm1hcCgobm9kZSkgPT4gY29udmVydE5vZGUobm9kZSkpLmpvaW4oXCJcIil9KipgO1xuICAgIGNhc2UgXCJmb3JtdWxhXCI6XG4gICAgICByZXR1cm4gYCQke25vZGUuZm9ybXVsYX0kYDtcbiAgICBjYXNlIFwiZGVjb3JhdGlvblwiOiB7XG4gICAgICBsZXQgcmVzdWx0ID0gbm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IGNvbnZlcnROb2RlKG5vZGUpKS5qb2luKFwiXCIpO1xuICAgICAgaWYgKG5vZGUuZGVjb3MuaW5jbHVkZXMoXCIvXCIpKSByZXN1bHQgPSBgKiR7cmVzdWx0fSpgO1xuICAgICAgLy8g6KaL5Ye644GX44Gu5aSJ5o+bXG4gICAgICAvLyDjgYrlpb3jgb/jgaflpInjgYjjgabkuIvjgZXjgYRcbiAgICAgIGlmIChzZWN0aW9uKSB7XG4gICAgICAgIGlmIChub2RlLmRlY29zLmluY2x1ZGVzKFwiKi0zXCIpKSByZXN1bHQgPSBgIyAke3Jlc3VsdH1cXG5gO1xuICAgICAgICBpZiAobm9kZS5kZWNvcy5pbmNsdWRlcyhcIiotMlwiKSkgcmVzdWx0ID0gYCMjICR7cmVzdWx0fVxcbmA7XG4gICAgICAgIGlmIChub2RlLmRlY29zLmluY2x1ZGVzKFwiKi0xXCIpKSByZXN1bHQgPSBgIyMjICR7cmVzdWx0fVxcbmA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobm9kZS5kZWNvcy5zb21lKChkZWNvKSA9PiAvXFwqLS8udGVzdChkZWNvWzBdKSkpIHtcbiAgICAgICAgICByZXN1bHQgPSBgKioke3Jlc3VsdH0qKmA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmRlY29zLmluY2x1ZGVzKFwiflwiKSkgcmVzdWx0ID0gYH5+JHtyZXN1bHR9fn5gO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgY2FzZSBcImNvZGVcIjpcbiAgICAgIHJldHVybiBgXFxgJHtub2RlLnRleHR9XFxgYDtcbiAgICBjYXNlIFwiY29tbWFuZExpbmVcIjpcbiAgICAgIHJldHVybiBgXFxgJHtub2RlLnN5bWJvbH0gJHtub2RlLnRleHR9XFxgYDtcbiAgICBjYXNlIFwibGlua1wiOlxuICAgICAgc3dpdGNoIChub2RlLnBhdGhUeXBlKSB7XG4gICAgICAgIGNhc2UgXCJyb290XCI6XG4gICAgICAgICAgcmV0dXJuIGBbJHtub2RlLmhyZWZ9XShodHRwczovL3NjcmFwYm94LmlvJHtub2RlLmhyZWZ9KWA7XG4gICAgICAgIGNhc2UgXCJyZWxhdGl2ZVwiOlxuICAgICAgICAgIC8vQHRzLWlnbm9yZSBkZWNsYXJl5a6j6KiA44GM5L2/44GI44Gq44GE44Gf44KB44CBYHNjcmFwYm94YOOBq+Wei+Wumue+qeOCkuOBpOOBkeOCieOCjOOBquOBhFxuICAgICAgICAgIHJldHVybiBgWyR7bm9kZS5ocmVmfV0oaHR0cHM6Ly9zY3JhcGJveC5pby8ke3NjcmFwYm94LlByb2plY3QubmFtZX0vJHtub2RlLmhyZWZ9KWA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG5vZGUuY29udGVudCA9PT0gXCJcIiA/XG4gICAgICAgICAgICBgICR7bm9kZS5ocmVmfSBgIDpcbiAgICAgICAgICAgIGBbJHtub2RlLmNvbnRlbnR9XSgke25vZGUuaHJlZn0pYDtcbiAgICAgIH1cbiAgICBjYXNlIFwiZ29vZ2xlTWFwXCI6XG4gICAgICByZXR1cm4gYFske25vZGUucGxhY2V9XSgke25vZGUudXJsfSlgO1xuICAgIGNhc2UgXCJoYXNoVGFnXCI6XG4gICAgICAvL0B0cy1pZ25vcmUgZGVjbGFyZeWuo+iogOOBjOS9v+OBiOOBquOBhOOBn+OCgeOAgWBzY3JhcGJveGDjgavlnovlrprnvqnjgpLjgaTjgZHjgonjgozjgarjgYRcbiAgICAgIHJldHVybiBgWyMke25vZGUuaHJlZn1dKGh0dHBzOi8vc2NyYXBib3guaW8vJHtzY3JhcGJveC5Qcm9qZWN0Lm5hbWV9LyR7bm9kZS5ocmVmfSlgO1xuICAgIGNhc2UgXCJudW1iZXJMaXN0XCI6XG4gICAgICByZXR1cm4gYCR7bm9kZS5udW1iZXJ9LiAke25vZGUubm9kZXMubWFwKChub2RlKSA9PiBjb252ZXJ0Tm9kZShub2RlKSkuam9pbihcIlwiKX1gO1xuICAgIGNhc2UgXCJibGFua1wiOlxuICAgIGNhc2UgXCJwbGFpblwiOlxuICAgICAgcmV0dXJuIG5vZGUudGV4dDtcbiAgfVxufTtcblxuY29uc3QgZXh0ZW5zaW9uRGF0YSA9IFtcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcImphdmFzY3JpcHRcIiwgXCJqc1wiXSxcbiAgICBmaWxlVHlwZTogXCJqYXZhc2NyaXB0XCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJ0eXBlc2NyaXB0XCIsIFwidHNcIl0sXG4gICAgZmlsZVR5cGU6IFwidHlwZXNjcmlwdFwiLFxuICB9LFxuICB7XG4gICAgZXh0ZW5zaW9uczogW1wiY3BwXCIsIFwiaHBwXCJdLFxuICAgIGZpbGVUeXBlOiBcImNwcFwiLFxuICB9LFxuICB7XG4gICAgZXh0ZW5zaW9uczogW1wiY1wiLCBcImNjXCIsIFwiaFwiXSxcbiAgICBmaWxlVHlwZTogXCJjXCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJjc1wiLCBcImNzaGFycFwiXSxcbiAgICBmaWxlVHlwZTogXCJjc1wiLFxuICB9LFxuICB7XG4gICAgZXh0ZW5zaW9uczogW1wibWFya2Rvd25cIiwgXCJtZFwiXSxcbiAgICBmaWxlVHlwZTogXCJtYXJrZG93blwiLFxuICB9LFxuICB7XG4gICAgZXh0ZW5zaW9uczogW1wiaHRtXCIsIFwiaHRtbFwiXSxcbiAgICBmaWxlVHlwZTogXCJodG1sXCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJqc29uXCJdLFxuICAgIGZpbGVUeXBlOiBcImpzb25cIixcbiAgfSxcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcInhtbFwiXSxcbiAgICBmaWxlVHlwZTogXCJ4bWxcIixcbiAgfSxcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcInlhbWxcIiwgXCJ5bWxcIl0sXG4gICAgZmlsZVR5cGU6IFwieWFtbFwiLFxuICB9LFxuICB7XG4gICAgZXh0ZW5zaW9uczogW1widG9tbFwiXSxcbiAgICBmaWxlVHlwZTogXCJ0b21sXCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJpbmlcIl0sXG4gICAgZmlsZVR5cGU6IFwiaW5pXCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJ0ZXhcIiwgXCJzdHlcIl0sXG4gICAgZmlsZVR5cGU6IFwidGV4XCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJzdmdcIl0sXG4gICAgZmlsZVR5cGU6IFwic3ZnXCIsXG4gIH0sXG5dO1xuXG4vKiog44OV44Kh44Kk44Or5ZCN44Gu5ouh5by15a2Q44GL44KJ6KiA6Kqe44KS5Y+W5b6X44GZ44KLXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGVuYW1lXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmNvbnN0IGdldEZpbGVUeXBlID0gKGZpbGVuYW1lKSA9PiB7XG4gIGNvbnN0IGZpbGVuYW1lRXh0ZW50aW9uID0gZmlsZW5hbWUucmVwbGFjZSgvXi4qXFwuKFxcdyspJC8sIFwiJDFcIik7XG4gIHJldHVybiBleHRlbnNpb25EYXRhXG4gICAgLmZpbmQoKGRhdGEpID0+IGRhdGEuZXh0ZW5zaW9ucy5pbmNsdWRlcyhmaWxlbmFtZUV4dGVudGlvbikpPy5maWxlVHlwZSA/P1xuICAgIFwiXCI7XG59O1xuIiwgImltcG9ydCB7IGNvbnZlcnRTYjJNZCB9IGZyb20gXCIuL2NvbnZlcnQuanNcIjtcbmltcG9ydCB7IFNjcmFwYm94UGFyc2VyIH0gZnJvbSBcIi4uL3NjcmFwYm94LXBhcnNlci5taW4uanMvcGFyc2VyLmpzXCI7XG5cbi8vIG1hcmtkb3du5aSJ5o+bXG5zY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcbiAgdGl0bGU6IFwiXFx1ZjYwZlwiLFxuICBvbkNsaWNrOiAodGV4dCkgPT4ge1xuICAgIChhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBibG9ja3MgPSBTY3JhcGJveFBhcnNlci5wYXJzZSh0ZXh0LCB7IGhhc1RpdGxlOiBmYWxzZSB9KTtcbiAgICAgICAgLy9jb25zb2xlLmxvZygnUGFyc2VyZCB0ZXh0OicpO1xuICAgICAgICAvL2NvbnNvbGUubG9nKGJsb2Nrcyk7XG5cbiAgICAgICAgLy8g44GT44GuaW5kZW50IGxldmVs44KS5Z+65rqW44Gr44GZ44KLXG4gICAgICAgIGNvbnN0IHRvcEluZGVudExldmVsID0gTWF0aC5taW4oLi4uYmxvY2tzLm1hcCgoYmxvY2spID0+IGJsb2NrLmluZGVudCkpO1xuICAgICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChcbiAgICAgICAgICBibG9ja3MubWFwKChibG9jaykgPT4gY29udmVydFNiMk1kKGJsb2NrLCB0b3BJbmRlbnRMZXZlbCkpLmpvaW4oXCJcXG5cIiksXG4gICAgICAgICk7XG4gICAgICAgIC8vY29uc29sZS5sb2coJ0NvcGllZC4nKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgYWxlcnQoYEZhaWxlZCB0byBjb3B5OlxcbiR7SlNPTi5zdHJpbmdpZnkoZSl9YCk7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgfSxcbn0pO1xuIiwgImV4cG9ydCBjb25zdCBpc1N0cmluZyA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHN0cmluZyA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XG4iLCAiaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tIFwiLi9pcy50c1wiO1xuXG4vKiogVVJM5aSJ5o+b55So6Zai5pWwXG4gKlxuICogQHBhcmFtIHVybCDlpInmj5vjgZnjgotVUkxcbiAqIEByZXR1cm4g5aSJ5o+b5b6M44GuVVJM44CC5aSJ5o+b44GM5LiN6KaB44Gg44Gj44Gf44Go44GN44GvYHVybGDjgpLjgZ3jga7jgb7jgb7ov5TjgZnjgILjgZPjgozku6XkuIrlpInmj5vjgYzkuI3opoHjgarloLTlkIjjga/jgIHmloflrZfliJfjgavjgZfjgabov5TjgZlcbiAqL1xuZXhwb3J0IHR5cGUgTWlkZGxld2FyZSA9ICh1cmw6IFVSTCkgPT4gVVJMIHwgc3RyaW5nIHwgUHJvbWlzZTxVUkwgfCBzdHJpbmc+O1xuXG4vKiogVVJM44KS5aSJ5o+b44GZ44KLXG4gKiBAcGFyYW0gdGV4dCBVUkzjgoLjgZfjgY/jga9VUkzjgpIw5YCL5Lul5LiK5ZCr44KT44Gg44OG44Kt44K544OIXG4gKiBAcGFyYW0gbWlkZGxld2FyZXMgVVJM44KS5aSJ5o+b44GZ44KL6Zai5pWw44CC5pyA5Yid44Gr5oyH5a6a44GX44Gf44KC44Gu44GL44KJ6aCG44Gr6YGp55So44GV44KM44KL44CC5paH5a2X5YiX44KS6L+U44GZ44Go44Gd44GT44Gn5Yem55CG44GM57WC44KP44KK44CB44Gd44Gu5paH5a2X5YiX44GM5YWD44GuVVJM44Gu5aSJ5o+b5b6M44Gu5paH5a2X5YiX44Go44GX44Gm5o6h55So44GV44KM44KLXG4gKiBAcmV0dXJuIOWkieaPm+W+jOOBruaWh+Wtl+WIl+OAguS9v+eUqOOBleOCjOOBn21pZGRsZXdhcmVz44Gu44Gp44KM44GL5LiA44Gk44GM6Z2e5ZCM5pyf5Yem55CG44GX44Gf5aC05ZCI44CBUHJvbWlzZeOBp+i/lOOBleOCjOOCi1xuICovXG5leHBvcnQgY29uc3QgY29udmVydCA9IChcbiAgdXJsOiBVUkwsXG4gIC4uLm1pZGRsZXdhcmVzOiBNaWRkbGV3YXJlW11cbik6IFByb21pc2U8c3RyaW5nPiB8IHN0cmluZyA9PiB7XG4gIGxldCBwcmV2OiBVUkwgfCBQcm9taXNlPFVSTCB8IHN0cmluZz4gPSB1cmw7XG4gIGZvciAoY29uc3QgbWlkZGxld2FyZSBvZiBtaWRkbGV3YXJlcykge1xuICAgIGNvbnN0IG5leHQ6IFVSTCB8IHN0cmluZyB8IFByb21pc2U8VVJMIHwgc3RyaW5nPiA9IHByZXYgaW5zdGFuY2VvZiBQcm9taXNlXG4gICAgICA/IHByZXYudGhlbigodXJsKSA9PiBpc1N0cmluZyh1cmwpID8gdXJsIDogbWlkZGxld2FyZSh1cmwpKVxuICAgICAgOiBtaWRkbGV3YXJlKHByZXYpO1xuICAgIGlmIChpc1N0cmluZyhuZXh0KSkgcmV0dXJuIG5leHQ7XG4gICAgLy8g5paw44GX44GEVVJM44Gr5L2c44KK55u044GZXG4gICAgcHJldiA9IG5leHQgaW5zdGFuY2VvZiBVUkxcbiAgICAgID8gbmV3IFVSTChuZXh0KVxuICAgICAgOiBuZXh0LnRoZW4oKGNvbnZlcnRlZCkgPT5cbiAgICAgICAgaXNTdHJpbmcoY29udmVydGVkKSA/IGNvbnZlcnRlZCA6IG5ldyBVUkwoY29udmVydGVkKVxuICAgICAgKTtcbiAgfVxuICByZXR1cm4gcHJldiBpbnN0YW5jZW9mIFByb21pc2UgPyBwcmV2LnRoZW4oKHVybCkgPT4gYCR7dXJsfWApIDogYCR7dXJsfWA7XG59O1xuIiwgImV4cG9ydCBpbnRlcmZhY2UgSFRUUEVycm9yIHtcbiAgbmFtZTogXCJIVFRQRXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICByZXNwb25zZTogUmVzcG9uc2U7XG59XG5cbmV4cG9ydCBjb25zdCBtYWtlSFRUUEVycm9yID0gKHJlc3BvbnNlOiBSZXNwb25zZSk6IEhUVFBFcnJvciB8IHVuZGVmaW5lZCA9PlxuICByZXNwb25zZS5vayA/IHVuZGVmaW5lZCA6ICh7XG4gICAgbmFtZTogXCJIVFRQRXJyb3JcIixcbiAgICBtZXNzYWdlOiBgJHtyZXNwb25zZS5zdGF0dXN9ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gLFxuICAgIHJlc3BvbnNlLFxuICB9KTtcbiIsICIvLyDoqqzmmI7jga7kuIDpg6jjga8gaHR0cHM6Ly9kZXZlbG9wZXIudHdpdHRlci5jb20vZW4vZG9jcy90d2l0dGVyLWFwaSDjgYvjgonjgrPjg5Tjg5rjgZfjgZ9cbmltcG9ydCB7IEhUVFBFcnJvciwgbWFrZUhUVFBFcnJvciB9IGZyb20gXCIuLi9lcnJvci50c1wiO1xuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBHTV9mZXRjaDogKHR5cGVvZiBmZXRjaCkgfCB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqIHR3ZWV044KS5Y+W5b6X44GZ44KLXG4gKlxuICogQHBhcmFtIHR3ZWV0SWQg5Y+W5b6X44GX44Gf44GEdHdlZXTjga5JRFxuICogQHJldHVybiDmiJDlip/jgZnjgovjgah0d2VldHlwZW9mIGNvbnZlcnRlZCA9PT0gXCJzdHJpbmdcInTjga7lkITnqK7mg4XloLHjgpLov5TjgZnjgIJgR01fZmV0Y2hg44GM44Gq44GE44Go44GN44GvYHVuZGVmaW5lZGDjgpLlkIzmnJ/jgafov5TjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFR3ZWV0ID0gKFxuICB0d2VldElkOiBzdHJpbmcsXG4pOiBQcm9taXNlPFJlc3VsdDxUd2VldCwgSFRUUEVycm9yPj4gfCB1bmRlZmluZWQgPT4ge1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLXdpbmRvd1xuICBpZiAoIXdpbmRvdy5HTV9mZXRjaCkgcmV0dXJuO1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLXdpbmRvd1xuICBjb25zdCBmZXRjaF8gPSB3aW5kb3cuR01fZmV0Y2g7XG5cbiAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2hfKFxuICAgICAgYGh0dHBzOi8vY2RuLnN5bmRpY2F0aW9uLnR3aW1nLmNvbS90d2VldC1yZXN1bHQ/aWQ9JHt0d2VldElkfSZ0b2tlbj14YCxcbiAgICApO1xuICAgIGNvbnN0IGVycm9yID0gbWFrZUhUVFBFcnJvcihyZXMpO1xuICAgIGlmIChlcnJvcikgcmV0dXJuIHsgb2s6IGZhbHNlLCB2YWx1ZTogZXJyb3IgfTtcbiAgICBjb25zdCB0d2VldCA9IChhd2FpdCByZXMuanNvbigpKSBhcyBUd2VldDtcbiAgICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHR3ZWV0IH07XG4gIH0pKCk7XG59O1xuXG4vKiogVGhlIHJlc3BvbnNlIG9mIGBodHRwczovL2Nkbi5zeW5kaWNhdGlvbi50d2ltZy5jb20vdHdlZXQtcmVzdWx0P2lkPTp0d2VldElkYCAqL1xuZXhwb3J0IGludGVyZmFjZSBUd2VldCB7XG4gIF9fdHlwZW5hbWU6IFwiVHdlZXRcIjtcblxuICAvKiogdGhlIHNjcmVlbiBuYW1lIG9mIHRoZSB1c2VyIHRoZSBhdXRob3IgcmVwbHkgdG8gKi9cbiAgaW5fcmVwbHlfdG9fc2NyZWVuX25hbWU/OiBzdHJpbmc7XG4gIC8qKiB0aGUgdXNlciBpZCBvZiB0aGUgdXNlciB0aGUgYXV0aG9yIHJlcGx5IHRvICovXG4gIGluX3JlcGx5X3RvX3VzZXJfaWRfc3RyPzogc3RyaW5nO1xuICAvKiogdGhlIGlkIG9mIHRoZSB0d2VldCB0aGUgYXV0aG9yIHJlcGx5IHRvICovXG4gIGluX3JlcGx5X3RvX3N0YXR1c19pZF9zdHI/OiBzdHJpbmc7XG4gIHNlbGZfdGhyZWFkPzoge1xuICAgIGlkX3N0cjogc3RyaW5nO1xuICB9O1xuXG4gIHBsYWNlPzogUGxhY2U7XG5cbiAgLyoqIHRoZSB0d2VldCBpZCAqL1xuICBpZF9zdHI6IHN0cmluZztcblxuICAvKiogdGhlIGxhbmd1YWdlIG9mIHRoZSB0d2VldCAqL1xuICBsYW5nOiBzdHJpbmc7XG5cbiAgLyoqIHRoZSB0d2VldCBjb250ZW50ICovXG4gIHRleHQ6IHN0cmluZztcblxuICAvKiogdGhlIGF1dGhvciBvZiB0aGUgdHdlZXQgKi9cbiAgdXNlcjogVXNlcjtcblxuICAvKiogdGhlIG51bWJlciBvZiBmYXZvcml0ZSAqL1xuICBmYXZvcml0ZV9jb3VudDogbnVtYmVyO1xuXG4gIC8qKiB0aGUgbnVtYmVyIG9mIHJlcGxpZXMgKi9cbiAgY29udmVyc2F0aW9uX2NvdW50OiBudW1iZXI7XG5cbiAgZGlzcGxheV90ZXh0X3JhbmdlOiBJbmRpY2VzO1xuICBjcmVhdGVkX2F0OiBzdHJpbmc7XG5cbiAgZW50aXRpZXM6IEVudGl0aWVzO1xuICBtZWRpYURldGFpbHM/OiBNZWRpYURldGFpbFtdO1xuICBwaG90b3M/OiBQaG90b1tdO1xuICB2aWRlbz86IFZpZGVvO1xuXG4gIG5ld3NfYWN0aW9uX3R5cGU6IFwiY292aWQxOVwiIHwgXCJjb252ZXJzYXRpb25cIjtcblxuICAvKiogdGhlIHR3ZWV0IHRvIGJlIHJlcGxpZWQgdG8gKi9cbiAgcGFyZW50PzogUmVmVHdlZXQ7XG5cbiAgLyoqIHRoZSB0d2VldCB0byBiZSBxdW90ZWQgKi9cbiAgcXVvdGVkX3R3ZWV0PzogUmVmVHdlZXQ7XG5cbiAgY2FyZD86IENhcmQ7XG5cbiAgcG9zc2libHlfc2Vuc2l0aXZlPzogYm9vbGVhbjtcblxuICBlZGl0X2NvbnRyb2w6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpc0VkaXRlZDogYm9vbGVhbjtcblxuICBpc1N0YWxlRWRpdDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyIHtcbiAgLyoqIHVzZXIgaWQgKi9cbiAgaWRfc3RyOiBzdHJpbmc7XG5cbiAgLyoqIERpc3BsYXkgbmFtZSBvZiB0aGUgcmVmZXJlbmNlZCB1c2VyLlxuICAgKlxuICAgKiBAZXhhbXBsZSBuYW1lOiBcIlR3aXR0ZXIgQVBJXCJcbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKiogU2NyZWVuIG5hbWUgb2YgdGhlIHJlZmVyZW5jZWQgdXNlclxuICAgKlxuICAgKiBAZXhhbXBsZSBzY3JlZW5fbmFtZTogXCJ0d2l0dGVyYXBpXCJcbiAgICovXG4gIHNjcmVlbl9uYW1lOiBzdHJpbmc7XG5cbiAgLyoqIHByb2ZpbGUgaW1hZ2UgVVJMICovXG4gIHByb2ZpbGVfaW1hZ2VfdXJsX2h0dHBzOiBzdHJpbmc7XG5cbiAgLyoqIHdoZXRoZXIgdG8gYSB2ZXJpZmllZCBhY2NvdW50ICovXG4gIHZlcmlmaWVkOiBib29sZWFuO1xuXG4gIHZlcmlmaWVkX3R5cGU/OiBzdHJpbmc7XG5cbiAgLyoqIHdoZXRoZXIgdG8gYSBibHVlLXZlcmlmaWVkIGFjY291bnQgKi9cbiAgaXNfYmx1ZV92ZXJpZmllZDogYm9vbGVhbjtcblxuICBoaWdobGlnaHRlZF9sYWJlbD86IHtcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIHVzZXJfbGFiZWxfdHlwZTogc3RyaW5nO1xuICAgIGJhZGdlOiB7IHVybDogc3RyaW5nIH07XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhY2Uge1xuICAvKiogSUQgcmVwcmVzZW50aW5nIHRoaXMgcGxhY2UgKi9cbiAgaWQ6IHN0cmluZztcblxuICAvKiogRnVsbCBodW1hbi1yZWFkYWJsZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGxhY2XigJlzIG5hbWUgKi9cbiAgZnVsbF9uYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmVHdlZXRcbiAgZXh0ZW5kcyBPbWl0PFR3ZWV0LCBcIl9fdHlwZW5hbWVcIiB8IFwiY29udmVyc2F0aW9uX2NvdW50XCI+IHtcbiAgLyoqIHRoZSBudW1iZXIgb2YgcmVwbGllcyAqL1xuICByZXBseV9jb3VudDogbnVtYmVyO1xuXG4gIC8qKiB0aGUgbnVtYmVyIG9mIHJldHdlZXRzICovXG4gIHJldHdlZXRfY291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdGllcyB7XG4gIGhhc2h0YWdzOiBIYXNodGFnRW50aXR5W107XG4gIHVybHM6IFVybEVudGl0eVtdO1xuICB1c2VyX21lbnRpb25zOiBVc2VyTWVudGlvbkVudGl0eVtdO1xuICBzeW1ib2xzOiBTeW1ib2xFbnRpdHlbXTtcbiAgbWVkaWE/OiBVcmxFbnRpdHlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIYXNodGFnRW50aXR5IGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqIE5hbWUgb2YgdGhlIGhhc2h0YWcsIG1pbnVzIHRoZSBsZWFkaW5nIOKAmCPigJkgY2hhcmFjdGVyICovXG4gIHRleHQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTeW1ib2xFbnRpdHkgZXh0ZW5kcyBFbnRpdHkge1xuICAvKiogTmFtZSBvZiB0aGUgY2FzaHRhZywgbWludXMgdGhlIGxlYWRpbmcg4oCYJOKAmSBjaGFyYWN0ZXIgKi9cbiAgdGV4dDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVybEVudGl0eSBleHRlbmRzIEVudGl0eSB7XG4gIC8qKiBXcmFwcGVkIFVSTCwgY29ycmVzcG9uZGluZyB0byB0aGUgdmFsdWUgZW1iZWRkZWQgZGlyZWN0bHkgaW50byB0aGUgcmF3IFR3ZWV0IHRleHQsIGFuZCB0aGUgdmFsdWVzIGZvciB0aGUgaW5kaWNlcyBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIEBleGFtcGxlIFwidXJsXCI6XCJodHRwczovL3QuY28veXpvY05Gdkp1TFwiXG4gICAqL1xuICB1cmw6IHN0cmluZztcblxuICAvKiogRXhwYW5kZWQgdmVyc2lvbiBvZiBgZGlzcGxheV91cmxgXG4gICAqXG4gICAqIEBleGFtcGxlIFwiZXhwYW5kZWRfdXJsXCI6XCJodHRwOi8vYml0Lmx5LzJzbzQ5bjJcIlxuICAgKi9cbiAgZXhwYW5kZWRfdXJsOiBzdHJpbmc7XG5cbiAgLyoqIFVSTCBwYXN0ZWQvdHlwZWQgaW50byBUd2VldFxuICAgKlxuICAgKiBAZXhhbXBsZSBcImRpc3BsYXlfdXJsXCI6XCJiaXQubHkvMnNvNDluMlwiXG4gICAqL1xuICBkaXNwbGF5X3VybDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJNZW50aW9uRW50aXR5IGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqIHRoZSBtZW50aW9uZWQgdXNlciBpZCAqL1xuICBpZF9zdHI6IHN0cmluZztcblxuICAvKiogRGlzcGxheSBuYW1lIG9mIHRoZSBtZW50aW9uZWQgdXNlciAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIFNjcmVlbiBuYW1lIG9mIHRoZSBtZW50aW9uZWQgdXNlciAqL1xuICBzY3JlZW5fbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eSB7XG4gIC8qKiBBbiBhcnJheSBvZiBpbnRlZ2VycyByZXByZXNlbnRpbmcgb2Zmc2V0cyB3aXRoaW4gdGhlIFR3ZWV0IHRleHQgd2hlcmUgdGhlIGVudGl0eSBiZWdpbnMgYW5kIGVuZHMuXG4gICAqIFRoZSBmaXJzdCBpbnRlZ2VyIHJlcHJlc2VudHMgdGhlIGxvY2F0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGVudGl0eSBpbiB0aGUgVHdlZXQgdGV4dC5cbiAgICogVGhlIHNlY29uZCBpbnRlZ2VyIHJlcHJlc2VudHMgdGhlIGxvY2F0aW9uIG9mIHRoZSBmaXJzdCBub24tZW50aXR5IGNoYXJhY3RlciBhZnRlciB0aGUgZW5kIG9mIHRoZSBlbnRpdHkuXG4gICAqXG4gICAqIEBleGFtcGxlIFwiaW5kaWNlc1wiOlszMCw1M11cbiAgICovXG4gIGluZGljZXM6IEluZGljZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVkaWFEZXRhaWwgZXh0ZW5kcyBVcmxFbnRpdHkge1xuICB0eXBlOiBcInBob3RvXCIgfCBcInZpZGVvXCIgfCBcImFuaW1hdGVkX2dpZlwiO1xuICBleHRfbWVkaWFfYXZhaWxhYmlsaXR5OiBNZWRpYUF2YWlsYWJpbGl0eTtcbiAgZXh0X21lZGlhX3N0YXRzPzoge1xuICAgIHZpZXdfY291bnQ6IG51bWJlcjtcbiAgfTtcbiAgZXh0X2FsdF90ZXh0Pzogc3RyaW5nO1xuICBtZWRpYV91cmxfaHR0cHM6IHN0cmluZztcbiAgb3JpZ2luYWxfaW5mbzoge1xuICAgIGhlaWdodDogbnVtYmVyO1xuICAgIHdpZHRoOiBudW1iZXI7XG4gICAgZm9jdXNfcmVjdHM/OiBDb29yZGluYXRlW107XG4gIH07XG4gIHNpemVzOiBSZWNvcmQ8XG4gICAgXCJsYXJnZVwiIHwgXCJtZWRpdW1cIiB8IFwic21hbGxcIiB8IFwidGh1bWJcIixcbiAgICB7IHc6IG51bWJlcjsgaDogbnVtYmVyOyByZXNpemU6IFwiZml0XCIgfCBcImNyb3BcIiB9XG4gID47XG4gIGFkZGl0aW9uYWxfbWVkaWFfaW5mbz86IHtcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgZW1iZWRkYWJsZTogYm9vbGVhbjtcbiAgfTtcbiAgc2Vuc2l0aXZlX21lZGlhX3dhcm5pbmc/OiB7IHNpemU6IHN0cmluZyB9O1xuICB2aWRlb19pbmZvPzoge1xuICAgIGFzcGVjdF9yYXRpbzogW251bWJlciwgbnVtYmVyXTtcbiAgICBkdXJhdGlvbl9taWxsaXM/OiBudW1iZXI7XG4gICAgdmFyaWFudHM6IHsgYml0cmF0ZT86IG51bWJlcjsgY29udGVudF90eXBlOiBzdHJpbmc7IHVybDogc3RyaW5nIH1bXTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWRlbyB7XG4gIGFzcGVjdFJhdGlvOiBbbnVtYmVyLCBudW1iZXJdO1xuICBwb3N0ZXI6IHN0cmluZztcbiAgY29udGVudFR5cGU/OiBcIm1lZGlhX2VudGl0eVwiIHwgXCJnaWZcIiB8IFwidm1hcFwiIHwgXCJicm9hZGNhc3RcIjtcbiAgZHVyYXRpb25Ncz86IG51bWJlcjtcbiAgbWVkaWFBdmFpbGFiaWxpdHk/OiBNZWRpYUF2YWlsYWJpbGl0eTtcbiAgdmlkZW9JZD86IFZpZGVvSWQ7XG4gIHZpZXdDb3VudD86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTWVkaWFBdmFpbGFiaWxpdHkge1xuICBzdGF0dXM6IFwiQXZhaWxhYmxlXCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFyaWFudCB7XG4gIHR5cGU6IHN0cmluZztcbiAgc3JjOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlkZW9JZCB7XG4gIHR5cGU6IFwidHdlZXRcIiB8IFwiZG1cIiB8IFwiYnJvYWRjYXN0XCIgfCBcInN0YXRpY19icm9hZGNhc3RcIiB8IFwiYXVkaW9fc3BhY2VcIjtcbiAgaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaG90byB7XG4gIGFjY2Vzc2liaWxpdHlMYWJlbD86IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBDb2xvcjtcbiAgY3JvcENvb3JkaW5hdGVzOiBDb29yZGluYXRlW107XG4gIGV4cGFuZGVkVXJsOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2xvciB7XG4gIHJlZDogbnVtYmVyO1xuICBncmVlbjogbnVtYmVyO1xuICBibHVlOiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvb3JkaW5hdGUge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgdzogbnVtYmVyO1xuICBoOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIEluZGljZXMgPSBbbnVtYmVyLCBudW1iZXJdO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhcmQge1xuICBjYXJkX3BsYXRmb3JtOiB7XG4gICAgcGxhdGZvcm06IHtcbiAgICAgIGF1ZGllbmNlOiB7IG5hbWU6IHN0cmluZyB9O1xuICAgICAgZGV2aWNlOiB7XG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgdmVyc2lvbjogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICBuYW1lOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBiaW5kaW5nX3ZhbHVlczogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICBTdHJpbmdWYWx1ZSB8IEJvb2xlYW5WYWx1ZSB8IEltYWdlVmFsdWUgfCBJbWFnZUNvbG9yVmFsdWUgfCBVc2VyVmFsdWVcbiAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdWYWx1ZSB7XG4gIHR5cGU6IFwiU1RSSU5HXCI7XG4gIHN0cmluZ192YWx1ZTogc3RyaW5nO1xuICBzY3JpYmVfa2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5WYWx1ZSB7XG4gIHR5cGU6IFwiQk9PTEVBTlwiO1xuICBib29sZWFuX3ZhbHVlOiBib29sZWFuO1xuICBzY3JpYmVfa2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlVmFsdWUge1xuICB0eXBlOiBcIklNQUdFXCI7XG4gIGltYWdlX3ZhbHVlOiB7XG4gICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICB1cmw6IHN0cmluZztcbiAgfTtcbiAgc2NyaWJlX2tleT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZUNvbG9yVmFsdWUge1xuICB0eXBlOiBcIklNQUdFX0NPTE9SXCI7XG4gIGltYWdlX2NvbG9yX3ZhbHVlOiB7XG4gICAgcGFsZXR0ZToge1xuICAgICAgcmdiOiBDb2xvcjtcbiAgICAgIHBlcmNlbnRhZ2U6IG51bWJlcjtcbiAgICB9W107XG4gIH07XG4gIHNjcmliZV9rZXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclZhbHVlIHtcbiAgdHlwZTogXCJVU0VSXCI7XG4gIHVzZXJfdmFsdWU6IHtcbiAgICBpZF9zdHI6IHN0cmluZztcbiAgICBwYXRoOiB1bmtub3duW107XG4gIH07XG4gIHNjcmliZV9rZXk/OiBzdHJpbmc7XG59XG4iLCAiZXhwb3J0IHR5cGUgVGltZXN0YW1wID0gc3RyaW5nO1xuXG4vKiog5q2j5bi45YCk44Go55Ww5bi45YCk44KS5qC857SN44GZ44KL5Z6LICovXG5leHBvcnQgdHlwZSBSZXN1bHQ8VCwgRT4gPSB7IG9rOiB0cnVlOyB2YWx1ZTogVCB9IHwgeyBvazogZmFsc2U7IHZhbHVlOiBFIH07XG5cbi8qKiBuZXR3b3Jr44GL44KJZGF0YeOCkuOBqOOBo+OBpuOBj+OCi+WHpueQhlxuICpcbiAqIGludGVyZmFjZeOBr2BmZXRjaCgpYOOBqOWQjOOBmFxuICovXG5leHBvcnQgdHlwZSBGZXRjaCA9IChcbiAgaW5wdXQ6IHN0cmluZyB8IFJlcXVlc3QsXG4gIGluaXQ/OiBSZXF1ZXN0SW5pdCxcbikgPT4gUHJvbWlzZTxSZXNwb25zZT47XG5cbi8qKiDlhajjgabjga5SRVNUIEFQSeOBq+WFsemAmuOBmeOCi29waXRvbnMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZU9wdGlvbnMge1xuICAvKiog44OH44O844K/44Gu5Y+W5b6X44Gr5L2/44GG5Yem55CGXG4gICAqXG4gICAqIEBkZWZhdWx0IGZldGNoXG4gICAqL1xuICBmZXRjaD86IEZldGNoO1xufVxuXG4vKiogT0F1dGggQVBJ55Sob3B0aW9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBPQXV0aE9wdGlvbnMgZXh0ZW5kcyBCYXNlT3B0aW9ucyB7XG4gIC8qKiB1c2VyIGFjY291bnTjgavntJDku5jjgYTjgZ9hY2Nlc3MgdG9rZW4gKi9cbiAgYWNjZXNzVG9rZW46IHN0cmluZztcbn1cblxuLyoqIEJhc2VPcHRpb25z44Gu5pei5a6a5YCk44KS5Z+L44KB44KLICovXG5leHBvcnQgY29uc3Qgc2V0RGVmYXVsdHMgPSA8VCBleHRlbmRzIEJhc2VPcHRpb25zID0gQmFzZU9wdGlvbnM+KFxuICBvcHRpb25zOiBULFxuKTogT21pdDxULCBcImZldGNoXCI+ICYgUmVxdWlyZWQ8UGljazxCYXNlT3B0aW9ucywgXCJmZXRjaFwiPj4gPT4ge1xuICBjb25zdCB7IGZldGNoID0gZ2xvYmFsVGhpcy5mZXRjaCwgLi4ucmVzdCB9ID0gb3B0aW9ucztcbiAgcmV0dXJuIHsgZmV0Y2gsIC4uLnJlc3QgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc09iamVjdCA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbDtcbiIsICJpbXBvcnQgeyBpc09iamVjdCwgUmVzdWx0IH0gZnJvbSBcIi4vdXRpbC50c1wiO1xuXG5leHBvcnQgY2xhc3MgVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIG5hbWUgPSBcIlVuZXhwZWN0ZWRSZXNwb25zZUVycm9yXCI7XG4gIHN0YXR1czogbnVtYmVyO1xuICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgcGF0aDogVVJMO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluaXQ6IHsgc3RhdHVzOiBudW1iZXI7IHN0YXR1c1RleHQ6IHN0cmluZzsgYm9keTogc3RyaW5nOyBwYXRoOiBVUkwgfSxcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBgJHtpbml0LnN0YXR1c30gJHtpbml0LnN0YXR1c1RleHR9IHdoZW4gZmV0Y2hpbmcgJHtpbml0LnBhdGgudG9TdHJpbmcoKX1gLFxuICAgICk7XG5cbiAgICB0aGlzLnN0YXR1cyA9IGluaXQuc3RhdHVzO1xuICAgIHRoaXMuc3RhdHVzVGV4dCA9IGluaXQuc3RhdHVzVGV4dDtcbiAgICB0aGlzLmJvZHkgPSBpbml0LmJvZHk7XG4gICAgdGhpcy5wYXRoID0gaW5pdC5wYXRoO1xuXG4gICAgLy8gQHRzLWlnbm9yZSBvbmx5IGF2YWlsYWJsZSBvbiBWOFxuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgICAgLy8gQHRzLWlnbm9yZSBvbmx5IGF2YWlsYWJsZSBvbiBWOFxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgaXNVbmV4cGVjdGVkUmVzcG9uc2VFcnJvciA9IChcbiAgZTogdW5rbm93bixcbik6IGUgaXMgVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IgPT5cbiAgKGUgaW5zdGFuY2VvZiBFcnJvcikgJiYgZS5uYW1lID09PSBcIlVuZXhwZWN0ZWRSZXNwb25zZUVycm9yXCI7XG5cbi8qKiA0MDDjga7jgajjgY3jga5lcnJvciBvYmplY3QgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFkUmVxdWVzdEVycm9yIHtcbiAgbmFtZTogXCJCYWRSZXF1ZXN0RXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuLyoqIDQwMeOBruOBqOOBjeOBrmVycm9yIG9iamVjdCAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmF1dGhvcml6ZWRFcnJvciB7XG4gIG5hbWU6IFwiVW5hdXRob3JpemVkRXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuLyoqIDQwM+OBruOBqOOBjeOBrmVycm9yIG9iamVjdCAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RQcml2aWxlZ2VFcnJvciB7XG4gIG5hbWU6IFwiTm90UHJpdmlsZWdlRXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuLyoqIDQwNOOBruOBqOOBjeOBrmVycm9yIG9iamVjdCAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RGb3VuZEVycm9yIHtcbiAgbmFtZTogXCJOb3RGb3VuZEVycm9yXCI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cbi8qKiA0MjLjga7jgajjgY3jga5lcnJvciBvYmplY3QgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW52YWxpZFBhcmFtZXRlckVycm9yIHtcbiAgbmFtZTogXCJJbnZhbGlkUGFyYW1ldGVyRXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuLyoqIDQyOeOBruOBqOOBjeOBrmVycm9yIG9iamVjdCAqL1xuZXhwb3J0IGludGVyZmFjZSBSYXRlTGltaXRFcnJvciB7XG4gIG5hbWU6IFwiUmF0ZUxpbWl0RXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgR3lhem9BUElFcnJvciA9XG4gIHwgQmFkUmVxdWVzdEVycm9yXG4gIHwgVW5hdXRob3JpemVkRXJyb3JcbiAgfCBOb3RQcml2aWxlZ2VFcnJvclxuICB8IE5vdEZvdW5kRXJyb3JcbiAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgfCBSYXRlTGltaXRFcnJvcjtcblxuLyoqIHJlc3BvbnNl44GM5q2j5bi444GL44Gp44GG44GL44KS56K644GL44KB44KLXG4gKlxuICogQHBhcmFtIHJlc3BvbnNlIOeiuuOBi+OCgeOBn+OBhFJlc3BvbnNlXG4gKiBAcmV0dXJuIOWkieaPm+OBp+OBjeOBn+OCieOBneOBrm9iamVjdOOCkui/lOOBmVxuICogQHRocm93cyB7VW5leHBlY3RlZFJlc3BvbnNlRXJyb3J9XG4gKi9cbmV4cG9ydCBjb25zdCBjaGVja1Jlc3BvbnNlID0gYXN5bmMgKFxuICByZXNwb25zZTogUmVzcG9uc2UsXG4pOiBQcm9taXNlPFxuICBSZXN1bHQ8XG4gICAgc3RyaW5nLFxuICAgIEd5YXpvQVBJRXJyb3JcbiAgPlxuPiA9PiB7XG4gIGNvbnN0IHRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gIGlmIChyZXNwb25zZS5vaykgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiB0ZXh0IH07XG5cbiAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9rOiBmYWxzZSxcbiAgICAgIHZhbHVlOiB7IG5hbWU6IFwiQmFkUmVxdWVzdEVycm9yXCIsIG1lc3NhZ2U6IHRleHQgfSxcbiAgICB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBqc29uOiB1bmtub3duID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICBpZiAoIWlzT2JqZWN0KGpzb24pIHx8IHR5cGVvZiBqc29uLm1lc3NhZ2UgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkUmVzcG9uc2VFcnJvcih7XG4gICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiByZXNwb25zZS5zdGF0dXNUZXh0LFxuICAgICAgICBib2R5OiB0ZXh0LFxuICAgICAgICBwYXRoOiBuZXcgVVJMKHJlc3BvbnNlLnVybCksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICAgIHZhbHVlOiB7IG5hbWU6IFwiVW5hdXRob3JpemVkRXJyb3JcIiwgbWVzc2FnZToganNvbi5tZXNzYWdlIH0sXG4gICAgICAgIH07XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvazogZmFsc2UsXG4gICAgICAgICAgdmFsdWU6IHsgbmFtZTogXCJOb3RQcml2aWxlZ2VFcnJvclwiLCBtZXNzYWdlOiBqc29uLm1lc3NhZ2UgfSxcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgNDA0OlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgICB2YWx1ZTogeyBuYW1lOiBcIk5vdEZvdW5kRXJyb3JcIiwgbWVzc2FnZToganNvbi5tZXNzYWdlIH0sXG4gICAgICAgIH07XG4gICAgICBjYXNlIDQyMjpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvazogZmFsc2UsXG4gICAgICAgICAgdmFsdWU6IHsgbmFtZTogXCJJbnZhbGlkUGFyYW1ldGVyRXJyb3JcIiwgbWVzc2FnZToganNvbi5tZXNzYWdlIH0sXG4gICAgICAgIH07XG4gICAgICBjYXNlIDQyOTpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvazogZmFsc2UsXG4gICAgICAgICAgdmFsdWU6IHsgbmFtZTogXCJSYXRlTGltaXRFcnJvclwiLCBtZXNzYWdlOiBqc29uLm1lc3NhZ2UgfSxcbiAgICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkUmVzcG9uc2VFcnJvcih7XG4gICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcbiAgICAgICAgICBib2R5OiB0ZXh0LFxuICAgICAgICAgIHBhdGg6IG5ldyBVUkwocmVzcG9uc2UudXJsKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICB9IGNhdGNoIChlMjogdW5rbm93bikge1xuICAgIGlmIChlMiBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFJlc3BvbnNlRXJyb3Ioe1xuICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcbiAgICAgICAgYm9keTogdGV4dCxcbiAgICAgICAgcGF0aDogbmV3IFVSTChyZXNwb25zZS51cmwpLFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIEpTT07jga5wYXJzZSBlcnJvcuS7peWkluOBr+OBneOBruOBvuOBvuaKleOBkuOCi1xuICAgIHRocm93IGUyO1xuICB9XG59O1xuIiwgImltcG9ydCB7IE9BdXRoT3B0aW9ucywgUmVzdWx0LCBzZXREZWZhdWx0cywgVGltZXN0YW1wIH0gZnJvbSBcIi4vdXRpbC50c1wiO1xuaW1wb3J0IHsgY2hlY2tSZXNwb25zZSwgR3lhem9BUElFcnJvciB9IGZyb20gXCIuL2Vycm9yLnRzXCI7XG5cbi8qKiBtZXRhZGF0YSBhbmQgYWNjZXNzIHRva2VucyAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRJbml0IGV4dGVuZHMgT0F1dGhPcHRpb25zIHtcbiAgLyoqIHRoZSBpbWFnZSB0aXRsZVxuICAgKlxuICAgKiBHeWF6b+OBrlwiRnJvbSB4eHhcIuashOOBq+ihqOekuuOBleOCjOOCi1xuICAgKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgaW1hZ2VcbiAgICpcbiAgICogR3lhem/jga5oYXNodGFn44KS5pu444GN6L6844KA5aC05omA44Gr6KGo56S644GV44KM44KLXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKiogVW5peCB0aW1lIHdoaWNoIHRoZSBpbWFnZSB3YXMgY3JlYXRlZCBhdCAqL1xuICBjcmVhdGVkPzogbnVtYmVyO1xuXG4gIC8qKiB3aGV0aGVyIHRvIG1ha2UgdGhlIG1ldGFkYXRhIG9mIHRoZSBpbWFnZSBwdWJsaWNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2UgKHByaXZhdGUpXG4gICAqL1xuICBtZXRhZGF0YUlzUHVibGljPzogYm9vbGVhbjtcblxuICAvKiogY29sbGVjdGlvbiBpZCB0aGUgaW1hZ2UgaXMgYWRkZWQgdG8gKi9cbiAgY29sbGVjdGlvbklkPzogc3RyaW5nO1xuXG4gIC8qKiBVUkwgcmVsYXRlZCB0byB0aGUgaW1hZ2UgKi9cbiAgcmVmZXJlclVSTD86IHN0cmluZyB8IFVSTDtcblxuICAvKiogQXBwIG5hbWUgd2hpY2ggY3JlYXRlIHRoZSBpbWFnZSAqL1xuICBhcHA/OiBzdHJpbmc7XG59XG5cbi8qKiB0aGUgcmVzdWx0IG9mIGB1cGxvYWQoKWBcbiAqXG4gKiB0aGlzIGluY2x1ZGVzIFVSTHMgb2YgdGhlIHVwbG9hZGVkIGltYWdlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkUmVzdWx0IHtcbiAgLyoqIGltYWdlIGlkICovXG4gIGltYWdlX2lkOiBzdHJpbmc7XG5cbiAgLyoqIHBlcm1hbGluayB1cmwgKi9cbiAgcGVybWFsaW5rX3VybDogc3RyaW5nO1xuXG4gIC8qKiBpbWFnZSAgdXJsICovXG4gIHVybDogc3RyaW5nO1xuXG4gIC8qKiBmaWxlIGV4dGVuc2lvbiAqL1xuICB0eXBlOiBcInBuZ1wiIHwgXCJqcGdcIjtcblxuICAvKiogdGh1bWJuYWlsIHVybCAqL1xuICB0aHVtYl91cmw6IHN0cmluZztcblxuICAvKiogdGltZXN0YW1wIHdoaWNoIHRoZSBpbWFnZSBpcyBjcmVhdGVkIGF0ICovXG4gIGNyZWF0ZWRfYXQ6IFRpbWVzdGFtcDtcbn1cblxuLyoqIEd5YXpv44G455S75YOP44KSdXBsb2Fk44GZ44KLXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYWlvbiwgc2VlIGh0dHBzOi8vZ3lhem8uY29tL2FwaS9kb2NzL2ltYWdlI3VwbG9hZFxuICpcbiAqIEBwYXJhbSBpbWFnZSB1cGxvYWTjgZnjgovnlLvlg4/jg4fjg7zjgr9cbiAqIEBwYXJhbSBpbml0IHRva2Vu44GobWV0YWRhdGFcbiAqL1xuZXhwb3J0IGNvbnN0IHVwbG9hZCA9IGFzeW5jIChcbiAgaW1hZ2U6IEJsb2IsXG4gIGluaXQ6IFVwbG9hZEluaXQsXG4pOiBQcm9taXNlPFJlc3VsdDxVcGxvYWRSZXN1bHQsIEd5YXpvQVBJRXJyb3I+PiA9PiB7XG4gIGNvbnN0IHtcbiAgICB0aXRsZSxcbiAgICBkZXNjcmlwdGlvbixcbiAgICBtZXRhZGF0YUlzUHVibGljLFxuICAgIGNvbGxlY3Rpb25JZCxcbiAgICByZWZlcmVyVVJMLFxuICAgIGFjY2Vzc1Rva2VuLFxuICAgIGNyZWF0ZWQsXG4gICAgYXBwLFxuICAgIGZldGNoLFxuICB9ID0gc2V0RGVmYXVsdHMoaW5pdCk7XG5cbiAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgZm9ybURhdGEuYXBwZW5kKFwiaW1hZ2VkYXRhXCIsIGltYWdlKTtcbiAgZm9ybURhdGEuYXBwZW5kKFwiYWNjZXNzX3Rva2VuXCIsIGFjY2Vzc1Rva2VuKTtcbiAgaWYgKHJlZmVyZXJVUkwpIGZvcm1EYXRhLmFwcGVuZChcInJlZmVyZXJfdXJsXCIsIHJlZmVyZXJVUkwudG9TdHJpbmcoKSk7XG4gIGlmIChhcHAgIT09IHVuZGVmaW5lZCkgZm9ybURhdGEuYXBwZW5kKFwiYXBwXCIsIGFwcCk7XG4gIGlmICh0aXRsZSAhPT0gdW5kZWZpbmVkKSBmb3JtRGF0YS5hcHBlbmQoXCJ0aXRsZVwiLCB0aXRsZSk7XG4gIGlmIChkZXNjcmlwdGlvbiAhPSB1bmRlZmluZWQpIGZvcm1EYXRhLmFwcGVuZChcImRlc2NcIiwgZGVzY3JpcHRpb24pO1xuICBpZiAoY29sbGVjdGlvbklkKSBmb3JtRGF0YS5hcHBlbmQoXCJjb2xsZWN0aW9uX2lkXCIsIGNvbGxlY3Rpb25JZCk7XG4gIGlmIChtZXRhZGF0YUlzUHVibGljKSBmb3JtRGF0YS5hcHBlbmQoXCJtZXRhZGF0YV9pc19wdWJsaWNcIiwgXCJ0cnVlXCIpO1xuICBpZiAoY3JlYXRlZCAhPT0gdW5kZWZpbmVkKSBmb3JtRGF0YS5hcHBlbmQoXCJjcmVhdGVkX2F0XCIsIGAke2NyZWF0ZWR9YCk7XG5cbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goXG4gICAgXCJodHRwczovL3VwbG9hZC5neWF6by5jb20vYXBpL3VwbG9hZFwiLFxuICAgIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBtb2RlOiBcImNvcnNcIixcbiAgICAgIGNyZWRlbnRpYWxzOiBcIm9taXRcIixcbiAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgY2hlY2tlZCA9IGF3YWl0IGNoZWNrUmVzcG9uc2UocmVzKTtcbiAgaWYgKCFjaGVja2VkLm9rKSByZXR1cm4gY2hlY2tlZDtcbiAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBKU09OLnBhcnNlKGNoZWNrZWQudmFsdWUpIH07XG59O1xuIiwgIi8qKiBUYW1wZXJNb25rZXnjgYvjgonms6jlhaXjgZXjgozjgZ/lh73mlbBcbiAqXG4gKiDjgZPjga5tb2R1bGXjga7lh73mlbDjga/jgIFHTV9mZXRjaOOBjOOBguOCi+adoeS7tuOBp+OBl+OBi+S9v+OCj+OBquOBhOOBruOBp+OAgWB1bmRlZmluZWRg44Gu5Y+v6IO95oCn44KS5o6S6Zmk44GX44Gm44GE44KLXG4gKi9cbmRlY2xhcmUgY29uc3QgR01fZmV0Y2g6IHR5cGVvZiBmZXRjaDtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZFRvR3lhem9HSUYgPSAoXG4gIHZpZGVvOiBGaWxlLFxuICBvcHRpb25zPzogeyB0ZWFtcz86IGJvb2xlYW4gfSxcbik6IFByb21pc2U8UmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgZm9ybURhdGEuYXBwZW5kKFwiZGF0YVwiLCB2aWRlbyk7XG4gIGZvcm1EYXRhLmFwcGVuZChcbiAgICBcIm1ldGFkYXRhXCIsXG4gICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgYXBwOiBcIkd5YXpvXCIsXG4gICAgICB0aXRsZTogdmlkZW8ubmFtZSxcbiAgICB9KSxcbiAgKTtcbiAgcmV0dXJuIEdNX2ZldGNoKFxuICAgIGBodHRwczovL2dpZi5neWF6by5jb20vJHtvcHRpb25zPy50ZWFtcyA/IFwidGVhbXNcIiA6IFwiZ2lmXCJ9L3VwbG9hZGAsXG4gICAge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgY3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBPcmlnaW46IFwiaHR0cHM6Ly9neWF6by5jb21cIixcbiAgICAgICAgXCJzZWMtZmV0Y2gtc2l0ZVwiOiBcInNhbWUtc2l0ZVwiLFxuICAgICAgfSxcbiAgICAgIHJlZmVycmVyOiBcImh0dHBzOi8vZ3lhem8uY29tL1wiLFxuICAgIH0sXG4gICk7XG59O1xuIiwgImltcG9ydCB7IHVwbG9hZCB9IGZyb20gXCIuLi9kZXBzL2Rlbm8tZ3lhem8udHNcIjtcbmltcG9ydCB7IGdldEd5YXpvVG9rZW4sIHVwbG9hZFRvR0NTIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuaW1wb3J0IHsgdXBsb2FkVG9HeWF6b0dJRiB9IGZyb20gXCIuL3VwbG9hZFZpZGVvLnRzXCI7XG4vKiogVGFtcGVyTW9ua2V544GL44KJ5rOo5YWl44GV44KM44Gf5Ye95pWwXG4gKlxuICog44GT44GubW9kdWxl44Gu5Ye95pWw44Gv44CBR01fZmV0Y2jjgYzjgYLjgovmnaHku7bjgafjgZfjgYvkvb/jgo/jgarjgYTjga7jgafjgIFgdW5kZWZpbmVkYOOBruWPr+iDveaAp+OCkuaOkumZpOOBl+OBpuOBhOOCi1xuICovXG5kZWNsYXJlIGNvbnN0IEdNX2ZldGNoOiB0eXBlb2YgZmV0Y2g7XG5cbmxldCB0b2tlbiA9IFwiXCI7XG5sZXQgY2hlY2tlZCA9IGZhbHNlO1xuY29uc3QgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgVVJMPigpO1xuXG5leHBvcnQgY29uc3QgdXBsb2FkVHdpbWcgPSBhc3luYyAoXG4gIHVybDogVVJMLFxuICB0d2VldFVSTDogVVJMLFxuICBwcm9qZWN0SWQ6IHN0cmluZyxcbiAgZGVzY3JpcHRpb246IHN0cmluZyxcbik6IFByb21pc2U8VVJMIHwgdW5kZWZpbmVkPiA9PiB7XG4gIGNvbnN0IGNhY2hlZFVSTCA9IGNhY2hlLmdldCh1cmwuaHJlZik7XG4gIGlmIChjYWNoZWRVUkwpIHJldHVybiBjYWNoZWRVUkw7XG4gIGlmICh1cmwuaG9zdG5hbWUgPT09IFwidmlkZW8udHdpbWcuY29tXCIgfHwgYCR7dXJsfWAuZW5kc1dpdGgoXCIuc3ZnXCIpKSB7XG4gICAgLy8gdXBsb2FkIHRoZSB2aWRlbyB0byBzY3JhcGJveC5pb1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IEdNX2ZldGNoKHVybCk7XG4gICAgaWYgKCFyZXMub2spIHJldHVybjtcbiAgICBjb25zdCB0eXBlID0gcmVzLmhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpPy5zcGxpdD8uKFwiO1wiKT8uWzBdID8/XG4gICAgICAgIGAke3VybH1gLmVuZHNXaXRoKFwiLm1wNFwiKVxuICAgICAgPyBcInZpZGVvL21wNFwiXG4gICAgICA6IFwidmlkZW8vd2VibVwiO1xuICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbYXdhaXQgcmVzLmJsb2IoKV0sIGRlc2NyaXB0aW9uIHx8IGAke3R3ZWV0VVJMfWAsIHtcbiAgICAgIHR5cGUsXG4gICAgfSk7XG4gICAgaWYgKHR5cGUgPT09IFwidmlkZW8vbXA0XCIpIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHVwbG9hZFRvR3lhem9HSUYoZmlsZSk7XG4gICAgICBpZiAocmVzLm9rKSB7XG4gICAgICAgIGNvbnN0IGZpbGVVUkwgPSBuZXcgVVJMKGF3YWl0IHJlcy50ZXh0KCkpO1xuICAgICAgICBjYWNoZS5zZXQodXJsLmhyZWYsIGZpbGVVUkwpO1xuICAgICAgICByZXR1cm4gZmlsZVVSTDtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdXBsb2FkVG9HQ1MoZmlsZSwgcHJvamVjdElkKTtcbiAgICBpZiAoIXJlc3VsdC5vaykgdGhyb3cgRXJyb3IocmVzdWx0LnZhbHVlLm5hbWUpO1xuICAgIGNvbnN0IGZpbGVVUkwgPSBuZXcgVVJMKHJlc3VsdC52YWx1ZS5lbWJlZFVybCk7XG5cbiAgICBjYWNoZS5zZXQodXJsLmhyZWYsIGZpbGVVUkwpO1xuXG4gICAgcmV0dXJuIGZpbGVVUkw7XG4gIH1cbiAgaWYgKHVybC5ob3N0bmFtZSAhPT0gXCJwYnMudHdpbWcuY29tXCIpIHJldHVybjtcbiAgaWYgKCF1cmwucGF0aG5hbWUuc3RhcnRzV2l0aChcIi9tZWRpYVwiKSkgcmV0dXJuO1xuXG4gIGlmICghY2hlY2tlZCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldEd5YXpvVG9rZW4oKTtcbiAgICBjaGVja2VkID0gdHJ1ZTtcbiAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgYWxlcnQoXG4gICAgICAgIFwiWW91IGhhdmVuJ3QgbG9nZ2VkIGluIEd5YXpvIHlldCwgc28geW91IGNhbiBvbmx5IHVwbG9hZCBpbWFnZXMgdG8gc2NyYXBib3guaW8uXCIsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0b2tlbiA9IHJlc3VsdC52YWx1ZSB8fCBcIlwiO1xuICAgIGlmICghdG9rZW4pIHtcbiAgICAgIGFsZXJ0KFxuICAgICAgICBcIllvdSBoYXZlbid0IGNvbm5lY3QgR3lhem8gdG8gc2NyYXBib3guaW8geWV0LlwiLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoIXRva2VuKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzID0gYXdhaXQgR01fZmV0Y2godXJsKTtcbiAgaWYgKCFyZXMub2spIHJldHVybjtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCB1cGxvYWQoYXdhaXQgcmVzLmJsb2IoKSwge1xuICAgIGFjY2Vzc1Rva2VuOiB0b2tlbixcbiAgICByZWZlcmVyVVJMOiB0d2VldFVSTCxcbiAgICBkZXNjcmlwdGlvbixcbiAgfSk7XG4gIGlmICghcmVzdWx0Lm9rKSB0aHJvdyBFcnJvcihyZXN1bHQudmFsdWUubmFtZSk7XG5cbiAgY29uc3QgZ3lhem9VUkwgPSBuZXcgVVJMKHJlc3VsdC52YWx1ZS5wZXJtYWxpbmtfdXJsKTtcblxuICBjYWNoZS5zZXQodXJsLmhyZWYsIGd5YXpvVVJMKTtcblxuICByZXR1cm4gZ3lhem9VUkw7XG59O1xuIiwgImNvbnN0IG1hcCA9IHtcbiAgXCImbHQ7XCI6IFwiPFwiLFxuICBcIiZndDtcIjogXCI+XCIsXG4gIFwiJmFtcDtcIjogXCImXCIsXG4gIFwiJnF1b3Q7XCI6ICdcIicsXG4gIFwiJiN4Mjc7XCI6IFwiJ1wiLFxuICBcIiYjeDYwO1wiOiBcImBcIixcbn07XG5cbi8qKiB1bmVzY2FwZSBub3RhYmxlIEhUTUwgc3BlY2lhbCBjaGFyYWN0ZXJzXG4gKlxuICogY2YuIGh0dHBzOi8vc2hhbmFicmlhbi5jb20vd2ViL2phdmFzY3JpcHQvdW5lc2NhcGUtaHRtbC5waHBcbiAqL1xuZXhwb3J0IGNvbnN0IHVuZXNjYXBlSFRNTCA9ICh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgdGV4dC5yZXBsYWNlKFxuICAgIC8mKGx0fGd0fGFtcHxxdW90fCN4Mjd8I3g2MCk7L2csXG4gICAgKG1hdGNoKSA9PiBtYXBbbWF0Y2ggYXMga2V5b2YgdHlwZW9mIG1hcF0sXG4gICk7XG4iLCAiaW1wb3J0IHR5cGUgeyBSZWZUd2VldCwgVHdlZXQgfSBmcm9tIFwiLi9nZXRUd2VldC50c1wiO1xuaW1wb3J0IHsgdW5lc2NhcGVIVE1MIH0gZnJvbSBcIi4vdW5lc2NhcGVIVE1MLnRzXCI7XG5cbi8qKiBBUEnjgYvjgonlj5blvpfjgZfjgZ9Ud2VldCBvYmplY3TjgpLjgIHkvb/jgYTjgoTjgZnjgYTjgojjgYblpInmj5vjgZfjgabov5TjgZlcbiAqXG4gKiDlhoXlrrlcbiAqIC0gdHdlZXTmnKzmlofkuK3jga5oYXNodGFn44KEVVJM44KS5bGV6ZaL44GZ44KLXG4gKiAtIOefree4rlVSTOOCkuWFg+OBrlVSTOOBq+OBmeOCi1xuICogLSBPR1Djga50aXRsZeOBqGRlc2NyaXB0aW9u44KS5Y+N5pig44GZ44KLXG4gKlxuICogcG9sbOOBr+eEoeimluOBl+OBpuOBhOOCi1xuICpcbiAqIEBwYXJhbSB0d2VldCDlpInmj5vjgZfjgZ/jgYR0d2VldCBvYmplY3RcbiAqIEByZXR1cm4g5aSJ5o+b5b6M44GudHdlZXQgb2JqZWN0XG4gKi9cbmV4cG9ydCBjb25zdCBwcm9jZXNzVHdlZXQgPSAoXG4gIHR3ZWV0OiBUd2VldCB8IFJlZlR3ZWV0LFxuKTogUHJvY2Vzc2VkVHdlZXQgPT4ge1xuICBjb25zdCBhdXRob3IgPSB7XG4gICAgbmFtZTogdHdlZXQudXNlci5uYW1lLFxuICAgIHNjcmVlbk5hbWU6IHR3ZWV0LnVzZXIuc2NyZWVuX25hbWUsXG4gIH07XG5cbiAgY29uc3QgcG9zdGVkID0gbmV3IERhdGUodHdlZXQuY3JlYXRlZF9hdCk7XG5cbiAgY29uc3QgZW50aXRpZXMgPSBbXG4gICAgLi4udHdlZXQuZW50aXRpZXMuaGFzaHRhZ3MubWFwKChoYXNodGFnKSA9PlxuICAgICAgKHtcbiAgICAgICAgdHlwZTogXCJoYXNodGFnXCIsXG4gICAgICAgIC4uLmhhc2h0YWcsXG4gICAgICB9KSBhcyBjb25zdFxuICAgICksXG4gICAgLi4udHdlZXQuZW50aXRpZXMuc3ltYm9scy5tYXAoKHN5bWJvbCkgPT5cbiAgICAgICh7XG4gICAgICAgIHR5cGU6IFwic3ltYm9sXCIsXG4gICAgICAgIC4uLnN5bWJvbCxcbiAgICAgIH0pIGFzIGNvbnN0XG4gICAgKSxcbiAgICAuLi50d2VldC5lbnRpdGllcy51c2VyX21lbnRpb25zLm1hcCgobWVudGlvbikgPT5cbiAgICAgICh7XG4gICAgICAgIHR5cGU6IFwibWVudGlvblwiLFxuICAgICAgICBuYW1lOiBtZW50aW9uLm5hbWUsXG4gICAgICAgIHNjcmVlbk5hbWU6IG1lbnRpb24uc2NyZWVuX25hbWUsXG4gICAgICAgIGluZGljZXM6IG1lbnRpb24uaW5kaWNlcyxcbiAgICAgIH0pIGFzIGNvbnN0XG4gICAgKSxcbiAgICAuLi50d2VldC5lbnRpdGllcy51cmxzLm1hcCgodXJsKSA9PiB7XG4gICAgICBjb25zdCBlbnRpdHkgPSB7XG4gICAgICAgIHR5cGU6IFwidXJsXCIsXG4gICAgICAgIGluZGljZXM6IHVybC5pbmRpY2VzLFxuICAgICAgICB1cmw6IG5ldyBVUkwodXJsLmV4cGFuZGVkX3VybCksXG4gICAgICB9IGFzIHtcbiAgICAgICAgdHlwZTogXCJ1cmxcIjtcbiAgICAgICAgaW5kaWNlczogW251bWJlciwgbnVtYmVyXTtcbiAgICAgICAgdXJsOiBVUkw7XG4gICAgICAgIHRpdGxlPzogc3RyaW5nO1xuICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICAgIH07XG5cbiAgICAgIGlmICh0d2VldC5jYXJkICYmIHR3ZWV0LmNhcmQ/LnVybCA9PT0gdXJsLnVybCkge1xuICAgICAgICBjb25zdCB7IGRlc2NyaXB0aW9uLCB0aXRsZSB9ID0gdHdlZXQuY2FyZC5iaW5kaW5nX3ZhbHVlcztcbiAgICAgICAgY29uc3Qga2V5ID0gXCJTVFJJTkdcIjtcbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uPy50eXBlID09PSBrZXkpIHtcbiAgICAgICAgICBlbnRpdHkuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5zdHJpbmdfdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRpdGxlPy50eXBlID09PSBrZXkpIHtcbiAgICAgICAgICBlbnRpdHkudGl0bGUgPSB0aXRsZS5zdHJpbmdfdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVudGl0eTtcbiAgICB9KSxcbiAgICAuLi50d2VldC5lbnRpdGllcy5tZWRpYT8ubWFwPy4oKG1lZGlhKSA9PlxuICAgICAgKHtcbiAgICAgICAgdHlwZTogXCJtZWRpYVwiLFxuICAgICAgICBpbmRpY2VzOiBtZWRpYS5pbmRpY2VzLFxuICAgICAgICBtZWRpYTogdHdlZXQubWVkaWFEZXRhaWxzPy5mbGF0TWFwPy4oKGRldGFpbCkgPT5cbiAgICAgICAgICBkZXRhaWwudXJsID09PSBtZWRpYS51cmxcbiAgICAgICAgICAgID8gW3tcbiAgICAgICAgICAgICAgdHlwZTogZGV0YWlsLnR5cGUsXG4gICAgICAgICAgICAgIHVybDogbmV3IFVSTChcbiAgICAgICAgICAgICAgICBkZXRhaWwudmlkZW9faW5mbz8udmFyaWFudHM/LnNvcnQ/LigoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgIChiLmJpdHJhdGUgPz8gMCkgLSAoYS5iaXRyYXRlID8/IDApXG4gICAgICAgICAgICAgICAgKT8uWzBdLnVybCA/PyBkZXRhaWwubWVkaWFfdXJsX2h0dHBzLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIDogW11cbiAgICAgICAgKSA/PyBbXSxcbiAgICAgIH0pIGFzIGNvbnN0XG4gICAgKSA/PyBbXSxcbiAgXS5zb3J0KChhLCBiKSA9PiBhLmluZGljZXNbMF0gLSBiLmluZGljZXNbMF0pO1xuXG4gIGNvbnN0IGNvbnRlbnQ6IFR3ZWV0Tm9kZVtdID0gW107XG4gIHtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBsZXQgdGV4dCA9IHR3ZWV0LnRleHQ7XG4gICAgZm9yIChjb25zdCB7IGluZGljZXMsIC4uLmVudGl0eSB9IG9mIGVudGl0aWVzKSB7XG4gICAgICBjb25zdCBiZWZvcmUgPSBbLi4udGV4dF0uc2xpY2UoMCwgaW5kaWNlc1swXSAtIG9mZnNldCkuam9pbihcIlwiKTtcbiAgICAgIGNvbnRlbnQucHVzaCh7IHR5cGU6IFwicGxhaW5cIiwgdGV4dDogdW5lc2NhcGVIVE1MKGJlZm9yZSkgfSk7XG5cbiAgICAgIGNvbnRlbnQucHVzaChlbnRpdHkpO1xuXG4gICAgICB0ZXh0ID0gWy4uLnRleHRdLnNsaWNlKGluZGljZXNbMV0gLSBvZmZzZXQpLmpvaW4oXCJcIik7XG4gICAgICBvZmZzZXQgPSBpbmRpY2VzWzFdO1xuICAgIH1cbiAgICBpZiAodGV4dCkgY29udGVudC5wdXNoKHsgdHlwZTogXCJwbGFpblwiLCB0ZXh0OiB1bmVzY2FwZUhUTUwodGV4dCkgfSk7XG4gIH1cblxuICBjb25zdCBwcm9jZXNzZWQ6IFByb2Nlc3NlZFR3ZWV0ID0ge1xuICAgIGlkOiB0d2VldC5pZF9zdHIsXG4gICAgY29udGVudCxcbiAgICBhdXRob3IsXG4gICAgcG9zdGVkLFxuICAgIHJlcGx5Q291bnQ6IFwicmVwbHlfY291bnRcIiBpbiB0d2VldFxuICAgICAgPyB0d2VldC5yZXBseV9jb3VudFxuICAgICAgOiB0d2VldC5jb252ZXJzYXRpb25fY291bnQsXG4gIH07XG4gIGlmICh0d2VldC5zZWxmX3RocmVhZCkgcHJvY2Vzc2VkLnJvb3RJZCA9IHR3ZWV0LnNlbGZfdGhyZWFkLmlkX3N0cjtcbiAgaWYgKHR3ZWV0LmluX3JlcGx5X3RvX3N0YXR1c19pZF9zdHIpIHtcbiAgICBwcm9jZXNzZWQucmVwbHlJZCA9IHR3ZWV0LmluX3JlcGx5X3RvX3N0YXR1c19pZF9zdHI7XG4gIH1cbiAgaWYgKHR3ZWV0LnBhcmVudCkgcHJvY2Vzc2VkLnJlcGx5VG8gPSBwcm9jZXNzVHdlZXQodHdlZXQucGFyZW50KTtcbiAgaWYgKHR3ZWV0LnF1b3RlZF90d2VldCkgcHJvY2Vzc2VkLnF1b3RlID0gcHJvY2Vzc1R3ZWV0KHR3ZWV0LnF1b3RlZF90d2VldCk7XG5cbiAgcmV0dXJuIHByb2Nlc3NlZDtcbn07XG5cbi8qKiDliqDlt6XjgZfjgZ9Ud2VldCBkYXRhICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NlZFR3ZWV0IHtcbiAgLyoqIHR3ZWV0IGlkICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqIHR3ZWV05pys5paHICovXG4gIGNvbnRlbnQ6IFR3ZWV0Tm9kZVtdO1xuXG4gIC8qKiDmipXnqL/ogIUgKi9cbiAgYXV0aG9yOiBQcm9jZXNzZWRVc2VyO1xuXG4gIC8qKiDmipXnqL/ml6XmmYIgKi9cbiAgcG9zdGVkOiBEYXRlO1xuXG4gIC8qKiBzZWxmIHRocmVhZOOBoOOBo+OBn+WgtOWQiOOBruOAgeacgOWIneOBrnR3ZWV044GuaWQgKi9cbiAgcm9vdElkPzogc3RyaW5nO1xuXG4gIC8qKiDov5Tkv6HlhYh0d2VldOOBrmlkICovXG4gIHJlcGx5SWQ/OiBzdHJpbmc7XG5cbiAgLyoqIOi/lOS/oeWFiHR3ZWV0ICovXG4gIHJlcGx5VG8/OiBQcm9jZXNzZWRUd2VldDtcblxuICAvKiog6L+U5L+h5pWwICovXG4gIHJlcGx5Q291bnQ6IG51bWJlcjtcblxuICAvKiog5byV55So5YWDdHdlZXQgKi9cbiAgcXVvdGU/OiBQcm9jZXNzZWRUd2VldDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzZWRVc2VyIHtcbiAgLyoqIOihqOekuuS4iuOBruWQjeWJjSAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIOS4gOaEj+OBqnVzZXJuYW1lICovXG4gIHNjcmVlbk5hbWU6IHN0cmluZztcbn1cblxuLyoqIHR3ZWV05pys5paH44Gu6Kej5p6Q5oOF5aCxICovXG5leHBvcnQgdHlwZSBUd2VldE5vZGUgPVxuICB8IFBsYWluVGV4dFxuICB8IEhhc2h0YWdcbiAgfCBTeW1ib2xUYWdcbiAgfCBVcmxOb2RlXG4gIHwgTWVudGlvblxuICB8IE1lZGlhTm9kZTtcblxuZXhwb3J0IGludGVyZmFjZSBIYXNodGFnIHtcbiAgdHlwZTogXCJoYXNodGFnXCI7XG4gIHRleHQ6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU3ltYm9sVGFnIHtcbiAgdHlwZTogXCJzeW1ib2xcIjtcbiAgdGV4dDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVybE5vZGUge1xuICB0eXBlOiBcInVybFwiO1xuICB1cmw6IFVSTDtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lZGlhTm9kZSB7XG4gIHR5cGU6IFwibWVkaWFcIjtcbiAgbWVkaWE6IE1lZGlhW107XG59XG5leHBvcnQgaW50ZXJmYWNlIE1lZGlhIHtcbiAgdHlwZTogXCJwaG90b1wiIHwgXCJ2aWRlb1wiIHwgXCJhbmltYXRlZF9naWZcIjtcbiAgdXJsOiBVUkw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVudGlvbiB7XG4gIHR5cGU6IFwibWVudGlvblwiO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNjcmVlbk5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFpblRleHQge1xuICB0eXBlOiBcInBsYWluXCI7XG4gIHRleHQ6IHN0cmluZztcbn1cbiIsICJpbXBvcnQgdHlwZSB7IFNjcmFwYm94IH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5jb25zdCByZXNlcnZlZE5hbWVzID0gW1xuICBcImxhbmRpbmdcIixcbiAgXCJwcm9kdWN0XCIsXG4gIFwiZW50ZXJwcmlzZVwiLFxuICBcInByaWNpbmdcIixcbiAgXCJ0cnktZW50ZXJwcmlzZVwiLFxuICBcImNvbnRhY3RcIixcbiAgXCJ0ZXJtc1wiLFxuICBcInByaXZhY3lcIixcbiAgXCJqcC1jb21tZXJjaWFsLWFjdFwiLFxuICBcInN1cHBvcnRcIixcbiAgXCJjYXNlXCIsXG4gIFwiZmVhdHVyZXNcIixcbiAgXCJidXNpbmVzc1wiLFxuICBcImF1dGhcIixcbiAgXCJsb2dpblwiLFxuICBcImxvZ291dFwiLFxuICBcIm9hdXRoMlwiLFxuICBcIl9cIixcbiAgXCJhcGlcIixcbiAgXCJhcHAuaHRtbFwiLFxuICBcImFzc2V0c1wiLFxuICBcImZpbGVcIixcbiAgXCJmaWxlc1wiLFxuICBcImJpbGxpbmdcIixcbiAgXCJiaWxsaW5nc1wiLFxuICBcImNvbmZpZ1wiLFxuICBcImZlZWRcIixcbiAgXCJpbmRleFwiLFxuICBcImlvXCIsXG4gIFwibmV3XCIsXG4gIFwib3BlbnNlYXJjaFwiLFxuICBcInByb2plY3RcIixcbiAgXCJwcm9qZWN0c1wiLFxuICBcInNlYXJjaFwiLFxuICBcInNldHRpbmdcIixcbiAgXCJzZXR0aW5nc1wiLFxuICBcInNldHVwLXByb2ZpbGVcIixcbiAgXCJzbGlkZVwiLFxuICBcInNvY2tldC5pb1wiLFxuICBcInN0cmVhbVwiLFxuICBcInVzZXJcIixcbiAgXCJ1c2Vyc1wiLFxuXTtcblxuLyoqIHNjcmFwYm9444GuVVJM44KS5YaF6YOo44Oq44Oz44Kv6KiY5rOV44Gr5aSJ44GI44KLXG4gKlxuICogQHBhcmFtIHVybCBVUkxcbiAqIEByZXR1cm4gc2NyYXBib3jjga5VUkzjga7jgajjgY3jgIHlhoXpg6jjg6rjg7Pjgq/oqJjms5XjgavjgZfjgabov5TjgZnjgILjgZ3jgozku6XlpJbjga7loLTlkIjjga/lhYPjga5VUkzjgpLjgZ3jga7jgb7jgb7ov5TjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbnZlcnRTY3JhcGJveFVSTCA9IChcbiAgc2VsZiA9IHNjcmFwYm94LlByb2plY3QubmFtZSxcbiAgaG9zdCA9IGxvY2F0aW9uLmhvc3QsXG4pOiAodXJsOiBVUkwpID0+IHN0cmluZyB8IFVSTCA9PlxuKHVybCkgPT4ge1xuICBpZiAodXJsLmhvc3QgIT09IGhvc3QpIHJldHVybiB1cmw7XG4gIGNvbnN0IFssIHByb2plY3QsIHRpdGxlXSA9XG4gICAgdXJsLnBhdGhuYW1lLm1hdGNoKC9eXFwvKFtcXHdcXGRdW1xcd1xcZC1dezAsMjJ9W1xcd1xcZF0pKD86XFwvP3xcXC8oLispKSQvKSA/PyBbXTtcbiAgaWYgKCFwcm9qZWN0KSByZXR1cm4gdXJsO1xuICBpZiAocmVzZXJ2ZWROYW1lcy5pbmNsdWRlcyhwcm9qZWN0KSkgcmV0dXJuIHVybDtcbiAgaWYgKCF0aXRsZSkgcmV0dXJuIGBbLyR7cHJvamVjdH1dYDtcbiAgcmV0dXJuIHByb2plY3QgPT09IHNlbGZcbiAgICA/IGBbJHtkZWNvZGVVUklDb21wb25lbnQodGl0bGUpfV1gXG4gICAgOiBgWy8ke3Byb2plY3R9LyR7ZGVjb2RlVVJJQ29tcG9uZW50KHRpdGxlKX1dYDtcbn07XG4iLCAiaW1wb3J0IHsgZ2V0VHdlZXQsIFJlZlR3ZWV0LCBUd2VldCB9IGZyb20gXCIuLi9pbnRlcm5hbC9nZXRUd2VldC50c1wiO1xuaW1wb3J0IHsgdXBsb2FkVHdpbWcgfSBmcm9tIFwiLi4vaW50ZXJuYWwvdXBsb2FkVHdpbWcudHNcIjtcbmltcG9ydCB7IGdldFByb2plY3QsIGdldFR3ZWV0SW5mbywgVHdlZXRJbmZvIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuaW1wb3J0IHtcbiAgTWVkaWEsXG4gIFByb2Nlc3NlZFR3ZWV0LFxuICBwcm9jZXNzVHdlZXQsXG59IGZyb20gXCIuLi9pbnRlcm5hbC9wcm9jZXNzVHdlZXQudHNcIjtcbmltcG9ydCB7IGNvbnZlcnRTY3JhcGJveFVSTCB9IGZyb20gXCIuL2NvbnZlcnRTY3JhcGJveFVSTC50c1wiO1xuaW1wb3J0IHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmV4cG9ydCB0eXBlIHsgTWVkaWEsIFByb2Nlc3NlZFR3ZWV0LCBUd2VldCwgVHdlZXRJbmZvIH07XG5leHBvcnQgaW50ZXJmYWNlIFR3ZWV0VmlhUHJveHkgZXh0ZW5kcyBUd2VldEluZm8ge1xuICAvKiogdHdlZXQgaWQgKi9cbiAgaWQ6IHN0cmluZztcbn1cblxuLyoqIHR3ZWV044KSc2NyYXBib3jjgavmm7jjgY3ovrzjgoDpmpvjga7lpInmj5tmb3JtYXQgKi9cbmV4cG9ydCB0eXBlIFR3ZWV0Rm9ybWF0dGVyID0gKFxuICB0d2VldDogVHdlZXQgfCBUd2VldFZpYVByb3h5LFxuICB1cmw6IFVSTCxcbikgPT4gUHJvbWlzZTxzdHJpbmc+O1xuXG4vKiogdHdlZXTjgpLlsZXplovjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBmb3JtYXRUd2VldCA9IChcbiAgZm9ybWF0OiBUd2VldEZvcm1hdHRlciA9IGRlZmF1bHRGb3JtYXQsXG4pOiAodXJsOiBVUkwpID0+IFByb21pc2U8c3RyaW5nPiB8IFVSTCA9PlxuKHVybCkgPT4ge1xuICAvLyBmcm9tIGh0dHBzOi8vc2NyYXBib3guaW8vYXNzZXQvaW5kZXguanNcbiAgY29uc3QgWywgaWRdID0gdXJsLmhyZWYubWF0Y2goXG4gICAgL15odHRwczpcXC9cXC8oPzooPzp3d3dcXC58bW9iaWxlXFwufG1cXC4pP3R3aXR0ZXJ8eClcXC5jb21cXC9bXFx3XFxkX10rXFwvKD86c3RhdHVzfHN0YXR1c2VzKVxcLyhcXGQrKS8sXG4gICkgPz8gW107XG4gIGlmICghaWQpIHJldHVybiB1cmw7XG5cbiAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgKGdldFR3ZWV0KGlkKSA/PyBnZXRUd2VldEluZm8odXJsLmhyZWYpKTtcbiAgICBpZiAoIXJlc3VsdC5vaykgdGhyb3cgcmVzdWx0LnZhbHVlO1xuICAgIHJldHVybiBmb3JtYXQoXG4gICAgICBcImltYWdlc1wiIGluIHJlc3VsdC52YWx1ZSA/IHsgLi4ucmVzdWx0LnZhbHVlLCBpZCB9IDogcmVzdWx0LnZhbHVlLFxuICAgICAgdXJsLFxuICAgICk7XG4gIH0pKCk7XG59O1xuXG4vKiogc2NyYXBib3guaW/jgYzkvb/jgaPjgabjgYTjgotmb3JtYXTjgavjgIHov5Tkv6HlhYjjgajlvJXnlKjlhYN0d2VldOOCkuWKoOOBiOOBn+OCguOBriAqL1xuY29uc3QgZGVmYXVsdEZvcm1hdCA9IGFzeW5jIChcbiAgdHdlZXQ6IFR3ZWV0IHwgUmVmVHdlZXQgfCBUd2VldFZpYVByb3h5LFxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgaWYgKFwiaW1hZ2VzXCIgaW4gdHdlZXQpIHJldHVybiBzdHJpbmdpZnkodHdlZXQpO1xuXG4gIGNvbnN0IHsgcXVvdGUsIHJlcGx5VG8sIC4uLnByb2Nlc3NlZCB9ID0gcHJvY2Vzc1R3ZWV0KHR3ZWV0KTtcblxuICByZXR1cm4gW1xuICAgIC4uLihyZXBseVRvXG4gICAgICA/IFtcbiAgICAgICAgLi4uKGF3YWl0IHN0cmluZ2lmeShyZXBseVRvKSkuc3BsaXQoXCJcXG5cIikubWFwKChsaW5lKSA9PiBgID4gJHtsaW5lfWApLFxuICAgICAgICAuLi4ocmVwbHlUby5xdW90ZVxuICAgICAgICAgID8gKGF3YWl0IHN0cmluZ2lmeShyZXBseVRvLnF1b3RlKSkuc3BsaXQoXCJcXG5cIikubWFwKChsaW5lKSA9PlxuICAgICAgICAgICAgYCAgPiAke2xpbmV9YFxuICAgICAgICAgIClcbiAgICAgICAgICA6IFtdKSxcbiAgICAgIF1cbiAgICAgIDogW10pLFxuICAgIC4uLihhd2FpdCBzdHJpbmdpZnkocHJvY2Vzc2VkKSkuc3BsaXQoXCJcXG5cIikubWFwKChsaW5lKSA9PiBgPiAke2xpbmV9YCksXG4gICAgLi4uKHF1b3RlXG4gICAgICA/IChhd2FpdCBzdHJpbmdpZnkocXVvdGUpKS5zcGxpdChcIlxcblwiKS5tYXAoKGxpbmUpID0+IGA+ID4gJHtsaW5lfWApXG4gICAgICA6IFtdKSxcbiAgXS5qb2luKFwiXFxuXCIpO1xufTtcblxuLyoqIENvbnZlcnRzIGEgcHJvY2Vzc2VkIHR3ZWV0IG9yIGEgdHdlZXQgdmlhIC9hcGkvZW1iZWQtdGV4dC90d2l0dGVyIGludG8gYSBmb3JtYXR0ZWQgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB0d2VldCBUaGUgcHJvY2Vzc2VkIHR3ZWV0IG9yIHR3ZWV0IHZpYSBwcm94eSBvYmplY3QuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZm9ybWF0dGVkIHN0cmluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IHN0cmluZ2lmeSA9IGFzeW5jIChcbiAgdHdlZXQ6IFByb2Nlc3NlZFR3ZWV0IHwgVHdlZXRWaWFQcm94eSxcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoXG4gICAgYGh0dHBzOi8vdHdpdHRlci5jb20vJHtcbiAgICAgIFwiYXV0aG9yXCIgaW4gdHdlZXQgPyB0d2VldC5hdXRob3Iuc2NyZWVuTmFtZSA6IHR3ZWV0LnNjcmVlbk5hbWVcbiAgICB9L3N0YXR1cy8ke3R3ZWV0LmlkfWAsXG4gICk7XG4gIGlmIChcImltYWdlc1wiIGluIHR3ZWV0KSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGA+IFtAJHtlc2NhcGVGb3JFbWJlZCh0d2VldC5zY3JlZW5OYW1lKX0gJHt1cmwub3JpZ2lufSR7dXJsLnBhdGhuYW1lfV1gLFxuICAgICAgLi4uKHR3ZWV0LmRlc2NyaXB0aW9uPy5zcGxpdD8uKFwiXFxuXCIpPy5tYXA/LigobGluZSkgPT5cbiAgICAgICAgYD4gJHtlc2NhcGVGb3JFbWJlZChsaW5lKX1gXG4gICAgICApID8/IFtcIj4gWy8gbm8gZGVzY3JpcHRpb24gcHJvdmlkZWRdXCJdKSxcbiAgICAgIC4uLih0d2VldC5pbWFnZXMubGVuZ3RoID4gMFxuICAgICAgICA/IFtgPiAke3R3ZWV0LmltYWdlcy5tYXAoKGltYWdlKSA9PiBgWyR7aW1hZ2V9XWApfWBdXG4gICAgICAgIDogW10pLFxuICAgIF0uam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIGNvbnN0IGNvbnRlbnQgPSB0d2VldC5jb250ZW50O1xuICBjb25zdCBzY3JlZW5OYW1lID0gdHdlZXQuYXV0aG9yLnNjcmVlbk5hbWU7XG5cbiAgcmV0dXJuIFtcbiAgICBgW0Ake2VzY2FwZUZvckVtYmVkKHNjcmVlbk5hbWUpfSAke3VybH1dYCxcbiAgICAuLi4oYXdhaXQgUHJvbWlzZS5hbGwoY29udGVudC5tYXAoYXN5bmMgKG5vZGUpID0+IHtcbiAgICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJwbGFpblwiOlxuICAgICAgICAgIHJldHVybiBub2RlLnRleHQ7XG4gICAgICAgIGNhc2UgXCJoYXNodGFnXCI6XG4gICAgICAgICAgcmV0dXJuIGAgIyR7bm9kZS50ZXh0fSBgO1xuICAgICAgICBjYXNlIFwic3ltYm9sXCI6XG4gICAgICAgICAgcmV0dXJuIGAgIyQke25vZGUudGV4dH0gYDtcbiAgICAgICAgY2FzZSBcIm1lbnRpb25cIjpcbiAgICAgICAgICByZXR1cm4gYFtAJHtub2RlLnNjcmVlbk5hbWV9IGh0dHBzOi8vdHdpdHRlci5jb20vJHtub2RlLnNjcmVlbk5hbWV9XWA7XG4gICAgICAgIGNhc2UgXCJtZWRpYVwiOiB7XG4gICAgICAgICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG4gICAgICAgICAgbGV0IGkgPSAxO1xuICAgICAgICAgIGZvciAoOyBpIDwgbm9kZS5tZWRpYS5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICAgICAgbGluZXMucHVzaChcbiAgICAgICAgICAgICAgYFske2F3YWl0IHVwbG9hZE1lZGlhKFxuICAgICAgICAgICAgICAgIG5vZGUubWVkaWFbaSAtIDFdLFxuICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgKX1dIFske2F3YWl0IHVwbG9hZE1lZGlhKFxuICAgICAgICAgICAgICAgIG5vZGUubWVkaWFbaV0sXG4gICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICApfV1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGkgPT09IG5vZGUubWVkaWEubGVuZ3RoKSB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGBbJHthd2FpdCB1cGxvYWRNZWRpYShub2RlLm1lZGlhW2kgLSAxXSwgdXJsKX1dYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBgXFxuJHtsaW5lcy5qb2luKFwiXFxuXCIpfVxcbmA7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInVybFwiOlxuICAgICAgICAgIHJldHVybiBgJHtjb252ZXJ0U2NyYXBib3hVUkwoKShub2RlLnVybCl9IGA7XG4gICAgICB9XG4gICAgfSkpKS5qb2luKFwiXCIpLnNwbGl0KFwiXFxuXCIpLFxuICBdLmpvaW4oXCJcXG5cIik7XG59O1xuXG5sZXQgcHJvamVjdElkID0gXCJcIjtcbmNvbnN0IGdldFByb2plY3RJZCA9IGFzeW5jICgpID0+IHtcbiAgaWYgKHByb2plY3RJZCkgcmV0dXJuIHByb2plY3RJZDtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0UHJvamVjdChzY3JhcGJveC5Qcm9qZWN0Lm5hbWUpO1xuICBpZiAoIXJlc3VsdC5vaykgdGhyb3cgbmV3IEVycm9yKHJlc3VsdC52YWx1ZS5uYW1lKTtcbiAgcHJvamVjdElkID0gcmVzdWx0LnZhbHVlLmlkO1xuICByZXR1cm4gcHJvamVjdElkO1xufTtcblxuLyoqIFVwbG9hZHMgbWVkaWEgdG8gR3lhem8gb3Igc2NyYXBib3guaW8gYW5kIHJldHVybnMgdGhlIFVSTCBvZiB0aGUgdXBsb2FkZWQgbWVkaWEuXG4gKiBJZiB0aGUgdXBsb2FkIGZhaWxzLCBpdCByZXR1cm5zIHRoZSBvcmlnaW5hbCBtZWRpYSBVUkwuXG4gKlxuICogQHBhcmFtIG1lZGlhIC0gVGhlIG1lZGlhIHRvIHVwbG9hZC5cbiAqIEBwYXJhbSB0d2VldFVSTCAtIFRoZSBVUkwgb2YgdGhlIHR3ZWV0LlxuICogQHJldHVybnMgVGhlIFVSTCBvZiB0aGUgdXBsb2FkZWQgbWVkaWEgb3IgdGhlIG9yaWdpbmFsIG1lZGlhIFVSTC5cbiAqL1xuZXhwb3J0IGNvbnN0IHVwbG9hZE1lZGlhID0gYXN5bmMgKG1lZGlhOiBNZWRpYSwgdHdlZXRVUkw6IFVSTCk6IFByb21pc2U8VVJMPiA9PlxuICAoYXdhaXQgdXBsb2FkVHdpbWcobWVkaWEudXJsLCB0d2VldFVSTCwgYXdhaXQgZ2V0UHJvamVjdElkKCksIFwiXCIpKSA/P1xuICAgIG1lZGlhLnVybDtcblxuLyoqIHNjcmFwYm9444Gu6KiY5rOV44Go5bmy5riJ44GZ44KL5paH5a2X44KS5Y+W44KK6Zmk44GPXG4gKlxuICogcG9ydGVkIGZyb20gaHR0cHM6Ly9zY3JhcGJveC5pby9hc3NldC9pbmRleC5qc1xuICpcbiAqIEBwYXJhbSB0ZXh0IOWkieaPm+WJjeOBruaWh+Wtl+WIl1xuICogQHJldHVybnMg5aSJ5o+b5b6M44Gu5paH5a2X5YiXXG4gKi9cbmV4cG9ydCBjb25zdCBlc2NhcGVGb3JFbWJlZCA9ICh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgdGV4dFxuICAgIC5yZXBsYWNlKC9cXGIvZ20sIFwiXCIpXG4gICAgLnJlcGxhY2UoL1tcXHNcXHJcXG5cXHUyMDI4XFx1MjAyOV0rL2dtLCBcIiBcIilcbiAgICAucmVwbGFjZSgvXFxzKltbXFxdYF1cXHMqL2csIFwiIFwiKVxuICAgIC50cmltKCk7XG4iLCAiaW1wb3J0IHsgSFRUUEVycm9yLCBtYWtlSFRUUEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yLnRzXCI7XG5pbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1yZXN0LnRzXCI7XG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIEdNX2ZldGNoOiAodHlwZW9mIGZldGNoKSB8IHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKiogdHdpdHRlcuOBrmh0dHBzOi8vdC5jby94eHgg5b2i5byP44Gu55+t57iuVVJM44KS5bGV6ZaL44GZ44KLXG4gKlxuICogQHBhcmFtIHNob3J0SWQg55+t57iuVVJM44GuSUTpg6jliIZcbiAqIEByZXR1cm4g5bGV6ZaL5YWIVVJMLCBHTV9mZXRjaOOBjOOBquOBkeOCjOOBsGB1bmRlZmluZWRg44KS5ZCM5pyf55qE44Gr6L+U44GZXG4gKi9cbmV4cG9ydCBjb25zdCBleHBhbmRUd2l0dGVyU2hvcnRVUkwgPSAoXG4gIHNob3J0SWQ6IHN0cmluZyxcbik6IFByb21pc2U8UmVzdWx0PHN0cmluZywgSFRUUEVycm9yPj4gfCB1bmRlZmluZWQgPT4ge1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLXdpbmRvd1xuICBpZiAoIXdpbmRvdy5HTV9mZXRjaCkgcmV0dXJuO1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLXdpbmRvd1xuICBjb25zdCBmZXRjaF8gPSB3aW5kb3cuR01fZmV0Y2g7XG5cbiAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2hfKGBodHRwczovL3QuY28vJHtzaG9ydElkfWApO1xuICAgIGNvbnN0IGVycm9yID0gbWFrZUhUVFBFcnJvcihyZXMpO1xuICAgIGlmIChlcnJvcikgcmV0dXJuIHsgb2s6IGZhbHNlLCB2YWx1ZTogZXJyb3IgfTtcbiAgICBjb25zdCBkb20gPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGF3YWl0IHJlcy50ZXh0KCksIFwidGV4dC9odG1sXCIpO1xuICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogZG9tLnRpdGxlIH07XG4gIH0pKCk7XG59O1xuIiwgImltcG9ydCB7IGV4cGFuZFR3aXR0ZXJTaG9ydFVSTCB9IGZyb20gXCIuLi9pbnRlcm5hbC9leHBhbmRUd2l0dGVyU2hvcnRVUkwudHNcIjtcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBHTV9mZXRjaDogKHR5cGVvZiBmZXRjaCkgfCB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqIOWQhOeoruOBruefree4rlVSTOOCkuWxlemWi+OBmeOCi1xuICpcbiAqIOWvvuW/nOOBl+OBpuOBhOOCi+efree4rlVSTFxuICogLSBiaXQubHlcbiAqIC0gYW16bi50b1xuICogLSBhbXpuLmFzaWFcbiAqIC0gZ29vLmdsXG4gKiAtIHMubmlra2VpLmNvbVxuICogLSBhcHBsZS5jb1xuICogLSB0LmNvXG4gKiAtIG5pY28ubXNcbiAqIC0gdy53aWtpXG4gKi9cbmV4cG9ydCBjb25zdCBleHBhbmRTaG9ydFVSTCA9ICh1cmw6IFVSTCk6IFByb21pc2U8VVJMPiB8IFVSTCA9PiB7XG4gIGlmIChcbiAgICBbXG4gICAgICBcImJpdC5seVwiLFxuICAgICAgXCJhbXpuLnRvXCIsXG4gICAgICBcImFtem4uYXNpYVwiLFxuICAgICAgXCJnb28uZ2xcIixcbiAgICAgIFwicy5uaWtrZWkuY29tXCIsXG4gICAgICBcImFwcGxlLmNvXCIsXG4gICAgICBcIm5pY28ubXNcIixcbiAgICAgIFwidy53aWtpXCIsXG4gICAgXS5pbmNsdWRlcyhcbiAgICAgIHVybC5ob3N0bmFtZSxcbiAgICAgIC8vIGRlbm8tbGludC1pZ25vcmUgbm8td2luZG93XG4gICAgKSAmJiB3aW5kb3cuR01fZmV0Y2hcbiAgKSB7XG4gICAgLy8gZGVuby1saW50LWlnbm9yZSBuby13aW5kb3dcbiAgICByZXR1cm4gd2luZG93LkdNX2ZldGNoKHVybCkudGhlbigocmVzKSA9PiByZXMub2sgPyBuZXcgVVJMKHJlcy51cmwpIDogdXJsKTtcbiAgfVxuXG4gIGlmICh1cmwuaG9zdG5hbWUgIT09IFwidC5jb1wiKSByZXR1cm4gdXJsO1xuICBjb25zdCBwcm9taXNlID0gZXhwYW5kVHdpdHRlclNob3J0VVJMKHVybC5wYXRobmFtZS5zbGljZSgxKSk7XG4gIGlmICghcHJvbWlzZSkgcmV0dXJuIHVybDtcblxuICByZXR1cm4gKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm9taXNlO1xuICAgIGlmICghcmVzdWx0Lm9rKSB0aHJvdyByZXN1bHQudmFsdWU7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBVUkwocmVzdWx0LnZhbHVlKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikgcmV0dXJuIHVybDtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9KSgpO1xufTtcbiIsICIvKiogd2lraXBlZGlh44Gu44Oq44Oz44Kv44KS5aSJ5o+b44GZ44KLICovXG5leHBvcnQgY29uc3QgZm9ybWF0V2lraXBlZGlhID0gKHVybDogVVJMKTogc3RyaW5nIHwgVVJMID0+IHtcbiAgaWYgKCF1cmwucGF0aG5hbWUuc3RhcnRzV2l0aChcIi93aWtpL1wiKSkgcmV0dXJuIHVybDtcbiAgaWYgKCEvXlxcdytcXC53aWtpcGVkaWFcXC5vcmckLy50ZXN0KHVybC5ob3N0bmFtZSkpIHtcbiAgICBjb25zdCBbLCBsYW5nXSA9IHVybC5ob3N0bmFtZS5tYXRjaCgvXihcXHcrKVxcLm1cXC53aWtpcGVkaWFcXC5vcmckLykgPz8gW107XG4gICAgaWYgKCFsYW5nKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cbiAgICB1cmwuaG9zdG5hbWUgPSBgJHtsYW5nfS53aWtpcGVkaWEub3JnYDtcbiAgfVxuXG4gIGNvbnN0IHRpdGxlID0gZGVjb2RlVVJJQ29tcG9uZW50KHVybC5wYXRobmFtZS5zbGljZSg2KSk7XG4gIGNvbnN0IHNlY3Rpb24gPSB1cmwuaGFzaCA/IGRlY29kZVVSSUNvbXBvbmVudCh1cmwuaGFzaC5zbGljZSgxKSkgOiBcIlwiO1xuXG4gIGNvbnN0IGhyZWYgPSBgJHt1cmwub3JpZ2lufS93aWtpLyR7dGl0bGV9YDtcbiAgcmV0dXJuIHNlY3Rpb25cbiAgICA/IGBbJHtzZWN0aW9ufSB8ICR7dGl0bGV9IC0gV2lraXBlZGlhICR7aHJlZn0jJHtzZWN0aW9ufV1gXG4gICAgOiBgWyR7dGl0bGV9IC0gV2lraXBlZGlhICR7aHJlZn1dYDtcbn07XG4iLCAiLyoqIHdpa2l3YW5k44KSd2lraXBlZGlh44GuVVJM44Gr44GZ44KLICovXG5leHBvcnQgY29uc3QgcmVkaXJlY3RXaWtpd2FuZCA9ICh1cmw6IFVSTCk6IFVSTCA9PiB7XG4gIGlmICh1cmwuaG9zdG5hbWUgIT09IFwid3d3Lndpa2l3YW5kLmNvbVwiKSByZXR1cm4gdXJsO1xuICBjb25zdCBbLCBsYW5nLCBwYWdlTmFtZV0gPSB1cmwucGF0aG5hbWUubWF0Y2goL15cXC8oW15cXC9dKylcXC8oW15cXC9dKykvKSA/P1xuICAgIFtdO1xuICBpZiAoIWxhbmcgfHwgIXBhZ2VOYW1lKSByZXR1cm4gdXJsO1xuICB1cmwuaG9zdG5hbWUgPSBgJHtsYW5nfS53aWtpcGVkaWEub3JnYDtcbiAgdXJsLnBhdGhuYW1lID0gYC93aWtpLyR7cGFnZU5hbWV9YDtcbiAgdXJsLmhhc2ggPSB1cmwuaGFzaC5zdGFydHNXaXRoKFwiIy9cIikgPyBgIyR7dXJsLmhhc2guc2xpY2UoMil9YCA6IHVybC5oYXNoO1xuICByZXR1cm4gdXJsO1xufTtcbiIsICIvKiogR29vZ2xl44Gu5qSc57Si57WQ5p6cVVJM44KS44Oq44OA44Kk44Os44Kv44OI5YWIVVJM44Gr44GZ44KLICovXG5leHBvcnQgY29uc3QgcmVkaXJlY3RHb29nbGVTZWFyY2ggPSAodXJsOiBVUkwpOiBVUkwgPT4ge1xuICBpZiAoIXVybC5ob3N0bmFtZS5zdGFydHNXaXRoKFwid3d3Lmdvb2dsZS5cIikpIHJldHVybiB1cmw7XG4gIGNvbnN0IGVuY29kZWRVUkwgPSB1cmwuc2VhcmNoUGFyYW1zLmdldChcInVybFwiKTtcbiAgcmV0dXJuIGVuY29kZWRVUkwgPyBuZXcgVVJMKGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkVVJMKSkgOiB1cmw7XG59O1xuIiwgImltcG9ydCB7IEhUVFBFcnJvciwgbWFrZUhUVFBFcnJvciB9IGZyb20gXCIuLi9lcnJvci50c1wiO1xuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBHTV9mZXRjaDogKHR5cGVvZiBmZXRjaCkgfCB1bmRlZmluZWQ7XG4gIH1cbn1cblxuY29uc3QgY2hhcnNldFJlZ0V4cCA9IC9jaGFyc2V0PShbXjtdKykvO1xuXG4vKiogd2ViIHBhZ2XjgpLlj5blvpfjgZnjgotcbiAqXG4gKiBAcGFyYW0gdXJsIOWPluW+l+OBl+OBn+OBhHdlYiBwYWdl44GuVVJMXG4gKiBAcmV0dXJuIGh0bWwgdGV4dC4gR01fZmV0Y2jjgYzjgarjgZHjgozjgbBgdW5kZWZpbmVkYOOCkuWQjOacn+eahOOBq+i/lOOBmVxuICovXG5leHBvcnQgY29uc3QgZ2V0V2ViUGFnZSA9IChcbiAgdXJsOiBVUkwsXG4pOiBQcm9taXNlPFJlc3VsdDxzdHJpbmcsIEhUVFBFcnJvcj4+IHwgdW5kZWZpbmVkID0+IHtcbiAgLy8gZGVuby1saW50LWlnbm9yZSBuby13aW5kb3dcbiAgaWYgKCF3aW5kb3cuR01fZmV0Y2gpIHJldHVybjtcbiAgLy8gZGVuby1saW50LWlnbm9yZSBuby13aW5kb3dcbiAgY29uc3QgZmV0Y2hfID0gd2luZG93LkdNX2ZldGNoO1xuXG4gIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoXyhgJHt1cmx9YCk7XG4gICAgY29uc3QgZXJyb3IgPSBtYWtlSFRUUEVycm9yKHJlcyk7XG4gICAgaWYgKGVycm9yKSByZXR1cm4geyBvazogZmFsc2UsIHZhbHVlOiBlcnJvciB9O1xuXG4gICAgY29uc3QgY29udGVudFR5cGUgPVxuICAgICAgcmVzLmhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpPy5tYXRjaD8uKGNoYXJzZXRSZWdFeHApPy5bMV0gPz9cbiAgICAgICAgYXdhaXQgZGV0ZWN0RW5jb2RpbmcocmVzLmNsb25lKCkpO1xuICAgIGNvbnN0IGh0bWwgPSBuZXcgVGV4dERlY29kZXIoY29udGVudFR5cGUpLmRlY29kZShhd2FpdCByZXMuYXJyYXlCdWZmZXIoKSk7XG4gICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBodG1sIH07XG4gIH0pKCk7XG59O1xuXG5jb25zdCBkZXRlY3RFbmNvZGluZyA9IGFzeW5jIChyZXM6IFJlc3BvbnNlKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgY29uc3QgZG9tID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhhd2FpdCByZXMudGV4dCgpLCBcInRleHQvaHRtbFwiKTtcbiAgcmV0dXJuIGRvbS5xdWVyeVNlbGVjdG9yKFwibWV0YVtjaGFyc2V0XVwiKT8uZ2V0QXR0cmlidXRlPy4oXCJjaGFyc2V0XCIpID8/XG4gICAgZG9tLnF1ZXJ5U2VsZWN0b3IoJ21ldGFbaHR0cC1lcXVpdj1cImNvbnRlbnQtdHlwZVwiXScpPy5nZXRBdHRyaWJ1dGU/LihcbiAgICAgIFwiY29udGVudFwiLFxuICAgICk/Lm1hdGNoPy4oY2hhcnNldFJlZ0V4cCk/LlsxXSA/PyBcInV0Zi04XCI7XG59O1xuIiwgImltcG9ydCB7IGdldFdlYlBhZ2VUaXRsZSB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IGdldFdlYlBhZ2UgfSBmcm9tIFwiLi4vaW50ZXJuYWwvZ2V0V2ViUGFnZS50c1wiO1xuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tIFwiLi4vaXMudHNcIjtcblxuLyoqIFVSTOWFiOOBruODh+ODvOOCv+OCkuS9v+OBo+OBpuWklumDqOODquODs+OCr+iomOazleOBq+OBmeOCi+mWouaVsOOCkuS9nOOCi1xuICpcbiAqIOS7u+aEj+OBrlVSTOOCkuWPl+OBkeS7mOOBkeOCi1xuICpcbiAqIOWkieaPm+aWueazleOCkmBmb3JtYXRg44Gn5oyH5a6a44Gn44GN44KLXG4gKiAtIGBHTV9mZXRjaGDjgYzkvb/jgYjjgovjgajjgY3jga93ZWIgcGFnZeOBrkRPTeOCkuOAgeS9v+OBiOOBquOBhOOBqOOBjeOBr+ODmuODvOOCuOOCv+OCpOODiOODq+OCkuWPl+OBkeWPluOCjOOCi1xuICpcbiAqICAgQHBhcmFtIGZvcm1hdCDlpInmj5vplqLmlbDjgIJkZWZhdWx044Gg44Go44Oa44O844K444K/44Kk44OI44Or44GoVVJMIGZyYWdtZW5044KS57WE44G/5ZCI44KP44Gb44Gf5paH5a2X5YiX44KS5L2/44Gj44Gm5aSW6YOo44Oq44Oz44Kv6KiY5rOV44KS5L2c44KLXG4gKiAgIEByZXR1cm4gTWlkZGxld2FyZVxuICovXG5leHBvcnQgY29uc3QgZm9ybWF0VVJMID0gKFxuICBmb3JtYXQ6IChtYXRlcmlhbDogRG9jdW1lbnQgfCBzdHJpbmcsIHVybDogVVJMKSA9PiBzdHJpbmcgPSBkZWZhdWx0Rm9ybWF0LFxuKTogKHVybDogVVJMKSA9PiBQcm9taXNlPHN0cmluZz4gPT5cbmFzeW5jICh1cmwpID0+IGZvcm1hdChhd2FpdCBnZXREb2N1bWVudE9yVGl0bGUodXJsKSwgdXJsKTtcblxuY29uc3QgZGVmYXVsdEZvcm1hdCA9IChtYXRlcmlhbDogRG9jdW1lbnQgfCBzdHJpbmcsIHVybDogVVJMKSA9PiB7XG4gIGNvbnN0IHRpdGxlID0gKGlzU3RyaW5nKG1hdGVyaWFsKSA/IG1hdGVyaWFsIDogbWF0ZXJpYWwudGl0bGUpXG4gICAgLnJlcGxhY2UoL1xccy9nLCBcIiBcIikgLy8g44K544Oa44O844K544Go5pS56KGM44KS5YWo44Gm5Y2K6KeS44K544Oa44O844K544Gr44GZ44KLXG4gICAgLnJlcGxhY2VBbGwoXCJbXCIsIFwi77y7XCIpXG4gICAgLnJlcGxhY2VBbGwoXCJdXCIsIFwi77y9XCIpO1xuICByZXR1cm4gdGl0bGVcbiAgICA/IGBbJHtcbiAgICAgIHVybC5oYXNoID8gYCR7ZGVjb2RlVVJJQ29tcG9uZW50KHVybC5oYXNoLnNsaWNlKDEpKX0gfCBgIDogXCJcIlxuICAgIH0ke3RpdGxlfSAke3VybH1dYFxuICAgIDogYCR7dXJsfWA7XG59O1xuXG5jb25zdCBnZXREb2N1bWVudE9yVGl0bGUgPSBhc3luYyAodXJsOiBVUkwpOiBQcm9taXNlPERvY3VtZW50IHwgc3RyaW5nPiA9PiB7XG4gIGNvbnN0IHByb21pc2UgPSBnZXRXZWJQYWdlKHVybCk7XG4gIGlmICghcHJvbWlzZSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldFdlYlBhZ2VUaXRsZSh1cmwpO1xuICAgIGlmICghcmVzdWx0Lm9rKSB0aHJvdyByZXN1bHQudmFsdWU7XG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb21pc2U7XG4gIGlmICghcmVzdWx0Lm9rKSB0aHJvdyByZXN1bHQudmFsdWU7XG4gIHJldHVybiBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHJlc3VsdC52YWx1ZSwgXCJ0ZXh0L2h0bWxcIik7XG59O1xuIiwgIi8qKiBBbWF6b27jga5VUkzjgpLnn63jgY/jgZnjgotcbiAqXG4gKiBjZi5cbiAqIC0gaHR0cDovL3VyYmFucWVlLmNvbS9odG1sL2FtYXpvbi9hbWF6b24tdXJsLXNob3J0ZW5lZC5odG1sXG4gKiAtIGh0dHBzOi8vcGVucGVuLWRldi5jb20vYmxvZy9hbWEtZG9tYWluL1xuICovXG5leHBvcnQgY29uc3Qgc2hvcnRlbkFtYXpvblVSTCA9ICh1cmw6IFVSTCk6IFVSTCA9PiB7XG4gIGlmIChcbiAgICAhL14oPzp3d3dcXC4pP2FtYXpvbig/OlxcLmNvfGNvbSk/XFwuKD86YXV8YnJ8Y2F8ZnJ8ZGV8aW58aXR8anB8bXh8bmx8c2d8ZXN8dHJ8YWV8dWt8Y24pJC9cbiAgICAgIC50ZXN0KHVybC5ob3N0bmFtZSlcbiAgKSByZXR1cm4gdXJsO1xuICBjb25zdCBbLCBhc2luXSA9IHVybC5wYXRobmFtZS5tYXRjaCgvXFwvZHBcXC8oW1xcd1xcZF0rKS8pID8/XG4gICAgdXJsLnBhdGhuYW1lLm1hdGNoKC9cXC9ncFxcL3Byb2R1Y3RcXC8oW1xcd1xcZF0rKS8pID8/XG4gICAgdXJsLnBhdGhuYW1lLm1hdGNoKC9cXC9leGVjXFwvb2JpZG9zXFwvYXNpblxcLyhbXFx3XFxkXSspLykgPz9cbiAgICB1cmwucGF0aG5hbWUubWF0Y2goL1xcL29cXC9BU0lOXFwvKFtcXHdcXGRdKykvKSA/PyBbXTtcbiAgaWYgKCFhc2luKSByZXR1cm4gdXJsO1xuICB1cmwuaGFzaCA9IFwiXCI7XG4gIHVybC5zZWFyY2ggPSBcIlwiO1xuICB1cmwucGF0aG5hbWUgPSBgL2RwLyR7YXNpbn1gO1xuICByZXR1cm4gdXJsO1xufTtcbiIsICIvKiogR3lhem/jga5VUkzjgpLnlLvlg4/jgavjgZnjgotcbiAqXG4gKiBAcGFyYW0gdXJsIFVSTFxuICogQHJldHVybiBHeWF6b+OBrlVSTOOBruOBqOOBjeOAgeeUu+WDj+iomOazleOBq+OBl+OBpui/lOOBmeOAguOBneOCjOS7peWkluOBruWgtOWQiOOBr+WFg+OBrlVSTOOCkuOBneOBruOBvuOBvui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgY29udmVydEd5YXpvVVJMID0gKHVybDogVVJMKTogc3RyaW5nIHwgVVJMID0+IHtcbiAgaWYgKCEvKD86WzAtOWEtei1dXFwuKT9neWF6b1xcLmNvbS8udGVzdCh1cmwuaG9zdG5hbWUpKSByZXR1cm4gdXJsO1xuICBjb25zdCBbLCBneWF6b0lkXSA9IHVybC5wYXRobmFtZS5tYXRjaCgvXlxcLyhbMC05YS1mXXszMn0pKD86XFwvcmF3KT8kLykgPz8gW107XG4gIGlmICghZ3lhem9JZCkgcmV0dXJuIHVybDtcbiAgcmV0dXJuIGBbaHR0cHM6Ly9neWF6by5jb20vJHtneWF6b0lkfV1gO1xufTtcbiIsICJpbXBvcnQgeyB1c2VTdGF0dXNCYXIgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyBjb252ZXJ0IGFzIGNvbnZlcnRVUkwsIE1pZGRsZXdhcmUgfSBmcm9tIFwiLi9jb252ZXJ0LnRzXCI7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gXCIuL2lzLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1pZGRsZXdhcmUgfTtcbmV4cG9ydCAqIGZyb20gXCIuL21pZGRsZXdhcmVzL21vZC50c1wiO1xuZXhwb3J0IHsgY29udmVydFVSTCB9O1xuXG4vKiogVVJM44KC44GX44GP44GvVVJM44KSMOWAi+S7peS4iuWQq+OCk+OBoOODhuOCreOCueODiOOCkuWkieaPm+OBmeOCi1xuICpcbiAqIEBwYXJhbSB0ZXh0IFVSTOOCguOBl+OBj+OBr1VSTOOCkjDlgIvku6XkuIrlkKvjgpPjgaDjg4bjgq3jgrnjg4hcbiAqIEBwYXJhbSBtaWRkbGV3YXJlcyBVUkzjgpLlpInmj5vjgZnjgovplqLmlbDjgILmnIDliJ3jgavmjIflrprjgZfjgZ/jgoLjga7jgYvjgonpoIbjgavpgannlKjjgZXjgozjgovjgILmloflrZfliJfjgpLov5TjgZnjgajjgZ3jgZPjgaflh6bnkIbjgYzntYLjgo/jgorjgIHjgZ3jga7mloflrZfliJfjgYzlhYPjga5VUkzjga7lpInmj5vlvozjga7mloflrZfliJfjgajjgZfjgabmjqHnlKjjgZXjgozjgotcbiAqIEByZXR1cm4g5aSJ5o+b5b6M44Gu5paH5a2X5YiX44CC5L2/55So44GV44KM44GfbWlkZGxld2FyZXPjga7jganjgozjgYvkuIDjgaTjgYzpnZ7lkIzmnJ/lh6bnkIbjgZfjgZ/loLTlkIjjgIFQcm9taXNl44Gn6L+U44GV44KM44KLXG4gKi9cbmV4cG9ydCBjb25zdCBjb252ZXJ0ID0gKFxuICB0ZXh0OiBzdHJpbmcgfCBVUkwsXG4gIC4uLm1pZGRsZXdhcmVzOiBNaWRkbGV3YXJlW11cbik6IFByb21pc2U8c3RyaW5nPiB8IHN0cmluZyA9PiB7XG4gIGlmICh0ZXh0IGluc3RhbmNlb2YgVVJMKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRVUkwobmV3IFVSTCh0ZXh0KSwgLi4ubWlkZGxld2FyZXMpO1xuICB9XG4gIGxldCB0b3RhbCA9IDA7XG4gIGxldCBkb25lID0gMDtcbiAgbGV0IGZhaWxlZCA9IDA7XG4gIGxldCBoYXNQcm9taXNlID0gZmFsc2U7XG4gIGNvbnN0IG5vZGVzID0gdGV4dC5zcGxpdCgvKGh0dHBzPzpcXC9cXC9cXFMrKS9nKS5tYXAoKG5vZGUpID0+IHtcbiAgICBpZiAoIS9eaHR0cHM/OlxcL1xcL1xcUyskLy50ZXN0KG5vZGUpKSByZXR1cm4gbm9kZTtcbiAgICB0b3RhbCsrO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb252ZXJ0ZWQgPSBjb252ZXJ0VVJMKG5ldyBVUkwobm9kZSksIC4uLm1pZGRsZXdhcmVzKTtcbiAgICAgIC8vIOWQjOacn+OBp+WkieaPm+OBleOCjOOBn+WgtOWQiOOBr+OAgeOBk+OBk+OBp+aIkOWQpuOCkuOCq+OCpuODs+ODiOOBmeOCi1xuICAgICAgaWYgKGlzU3RyaW5nKGNvbnZlcnRlZCkpIHtcbiAgICAgICAgZG9uZSsrO1xuICAgICAgICByZXR1cm4gY29udmVydGVkO1xuICAgICAgfVxuICAgICAgaGFzUHJvbWlzZSA9IHRydWU7XG4gICAgICAvLyB3b3Jkc+OBr+WkieaPm+WkseaVl+aZguOBrmZhbGxiYWNr55So44Gr5L+d5oyB44GX44Gm44GK44GPXG4gICAgICByZXR1cm4gW2NvbnZlcnRlZCwgbm9kZV0gYXMgY29uc3Q7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgLy8g5ZCM5pyf44Gn5aSJ5o+b44GV44KM44Gf5aC05ZCI44Gv44CB44GT44GT44Gn5oiQ5ZCm44KS44Kr44Km44Oz44OI44GZ44KLXG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgZmFpbGVkKys7XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICghaGFzUHJvbWlzZSkgcmV0dXJuIChub2RlcyBhcyBzdHJpbmdbXSkuam9pbihcIlwiKTtcblxuICAvLyDpnZ7lkIzmnJ/lpInmj5vjgYznmbrnlJ/jgZfjgZ/loLTlkIjjga/jgIHpgLLmjZfnirbms4HjgpLooajnpLrjgZnjgotcbiAgY29uc3QgeyByZW5kZXIsIGRpc3Bvc2UgfSA9IHVzZVN0YXR1c0JhcigpO1xuICBjb25zdCByZW5kZXJfID0gKCkgPT5cbiAgICByZW5kZXIoXG4gICAgICB7IHR5cGU6IFwic3Bpbm5lclwiIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgVVJMOiAke2RvbmV9LyR7dG90YWx9IGNvbnZlcnRlZCwgJHtmYWlsZWR9IGZhaWxlZGAsXG4gICAgICB9LFxuICAgICk7XG4gIHJlbmRlcl8oKTtcbiAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgIG5vZGVzLm1hcChhc3luYyAobm9kZSkgPT4ge1xuICAgICAgaWYgKGlzU3RyaW5nKG5vZGUpKSByZXR1cm4gbm9kZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZCA9IGF3YWl0IG5vZGVbMF07XG4gICAgICAgIGRvbmUrKztcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRlZDtcbiAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgLy8g5aSJ5o+b44Gr5aSx5pWX44GX44Gf44Go44GN44Gv44CB5YWD44Gu5paH5a2X5YiX44KS6L+U44GZXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIGZhaWxlZCsrO1xuICAgICAgICByZXR1cm4gbm9kZVsxXTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHJlbmRlcl8oKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgKS50aGVuKChmcmFnbWVudHMpID0+IHtcbiAgICByZW5kZXIoXG4gICAgICB7IHR5cGU6IFwiY2hlY2stY2lyY2xlXCIgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IGBVUkw6ICR7ZG9uZX0vJHt0b3RhbH0gY29udmVydGVkLCAke2ZhaWxlZH0gZmFpbGVkYCxcbiAgICAgIH0sXG4gICAgKTtcbiAgICByZXR1cm4gZnJhZ21lbnRzLmpvaW4oXCJcIik7XG4gIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgIHNldFRpbWVvdXQoZGlzcG9zZSwgMTAwMCk7XG4gIH0pO1xufTtcbiIsICJleHBvcnQgY29uc3QgZm9ybWF0Tmljb25pY28gPSAodXJsOiBVUkwpOiBVUkwgfCBzdHJpbmcgPT4ge1xuICBpZiAoIS9eKD86XFx3K1xcLm5pY292aWRlb1xcLmpwfG5pY29cXC5tcykkLy50ZXN0KHVybC5ob3N0bmFtZSkpIHJldHVybiB1cmw7XG4gIGNvbnN0IGlkID0gdXJsLnBhdGhuYW1lLm1hdGNoKC8oPzpzbXxubXxzb3xjYXxheHx5b3xubHxpZ3xuYXxjd3x6W2EtZV18b218c2t8eWt8bHYpXFxkezEsMTR9JC8pPy5bMF07XG4gIHJldHVybiBpZCA/IGBbaHR0cHM6Ly9uaWNvdGh1bWIyaW1nLnZlcmNlbC5hcHAvaW1hZ2UvJHtpZH0jLnBuZyBodHRwczovL25pY28ubXMvJHtpZH1dYCA6IHVybDtcbn07XG4iLCAiaW1wb3J0IHtcbiAgQ29kZUJsb2NrLFxuICBMaW5lLFxuICBOb2RlLFxuICBwYXJzZSxcbiAgVGFibGUsXG59IGZyb20gXCIuLi9zY3JhcGJveC1wYXJzZXIvbW9kLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0ID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGJsb2NrcyA9IHBhcnNlKHRleHQsIHsgaGFzVGl0bGU6IGZhbHNlIH0pO1xuICByZXR1cm4gYmxvY2tzLmZsYXRNYXAoKGJsb2NrKSA9PiB7XG4gICAgc3dpdGNoIChibG9jay50eXBlKSB7XG4gICAgICBjYXNlIFwidGl0bGVcIjpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgY2FzZSBcImNvZGVCbG9ja1wiOlxuICAgICAgICByZXR1cm4gY29udmVydENvZGVCbG9jayhibG9jayk7XG4gICAgICBjYXNlIFwidGFibGVcIjpcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRUYWJsZShibG9jayk7XG4gICAgICBjYXNlIFwibGluZVwiOlxuICAgICAgICByZXR1cm4gY29udmVydExpbmUoYmxvY2spO1xuICAgIH1cbiAgfSlcbiAgICAubWFwKChsaW5lKSA9PiBsaW5lKS5qb2luKFwiXFxuXCIpO1xufTtcblxuY29uc3QgY29udmVydENvZGVCbG9jayA9IChcbiAgeyBmaWxlTmFtZSwgY29udGVudCwgaW5kZW50IH06IENvZGVCbG9jayxcbikgPT4ge1xuICBjb25zdCB0YWcgPSBcIiBcIi5yZXBlYXQoaW5kZW50KTtcblxuICByZXR1cm4gW1xuICAgIGAke3RhZ31jb2RlOiR7ZmlsZU5hbWV9YCxcbiAgICAuLi5jb250ZW50LnNwbGl0KFwiXFxuXCIpLm1hcCgobGluZSkgPT4gYCR7dGFnfSAke2xpbmV9YCksXG4gIF07XG59O1xuY29uc3QgY29udmVydFRhYmxlID0gKHsgZmlsZU5hbWUsIGNlbGxzLCBpbmRlbnQgfTogVGFibGUpID0+IHtcbiAgY29uc3QgdGFnID0gXCIgXCIucmVwZWF0KGluZGVudCk7XG5cbiAgcmV0dXJuIFtcbiAgICBgJHt0YWd9dGFibGU6JHtmaWxlTmFtZX1gLFxuICAgIC4uLmNlbGxzLm1hcCgoY2VsbCkgPT5cbiAgICAgIGAke3RhZ30gJHtcbiAgICAgICAgY2VsbC5tYXAoKG5vZGVzKSA9PiBub2Rlcy5tYXAoKG5vZGUpID0+IG5vZGUucmF3KS5qb2luKFwiXCIpKS5qb2luKFwiXFx0XCIpXG4gICAgICB9YFxuICAgICksXG4gIF07XG59O1xuY29uc3QgY29udmVydExpbmUgPSAoeyBub2RlcywgaW5kZW50IH06IExpbmUpID0+IFtcbiAgYCR7XCIgXCIucmVwZWF0KGluZGVudCl9JHtcbiAgICBub2Rlcy5tYXAoKG5vZGUpID0+IGAke2NvbnZlcnROb2RlKG5vZGUpfWApLmpvaW4oXG4gICAgICBcIlwiLFxuICAgIClcbiAgfWAsXG5dO1xuXG5jb25zdCBjb252ZXJ0Tm9kZSA9IChub2RlOiBOb2RlKTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICBjYXNlIFwicXVvdGVcIjpcbiAgICAgIHJldHVybiBgPiAke25vZGUubm9kZXMubWFwKChub2RlKSA9PiBjb252ZXJ0Tm9kZShub2RlKSkuam9pbihcIlwiKX1gO1xuICAgIGNhc2UgXCJoZWxwZmVlbFwiOlxuICAgICAgcmV0dXJuIGBbLT8gJHtub2RlLnRleHR9XWA7XG4gICAgY2FzZSBcImNvbW1hbmRMaW5lXCI6XG4gICAgICByZXR1cm4gYFstJHtub2RlLnN5bWJvbH0gJHtub2RlLnRleHR9XWA7XG4gICAgY2FzZSBcImljb25cIjpcbiAgICBjYXNlIFwic3Ryb25nSWNvblwiOlxuICAgIGNhc2UgXCJpbWFnZVwiOlxuICAgIGNhc2UgXCJzdHJvbmdJbWFnZVwiOlxuICAgIGNhc2UgXCJmb3JtdWxhXCI6XG4gICAgY2FzZSBcImNvZGVcIjpcbiAgICBjYXNlIFwiZ29vZ2xlTWFwXCI6XG4gICAgICByZXR1cm4gbm9kZS5yYXc7XG4gICAgY2FzZSBcInN0cm9uZ1wiOlxuICAgICAgcmV0dXJuIGBbWyR7bm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IGNvbnZlcnROb2RlKG5vZGUpKS5qb2luKFwiXCIpfV1dYDtcbiAgICBjYXNlIFwiZGVjb3JhdGlvblwiOiB7XG4gICAgICBpZiAoIW5vZGUuZGVjb3MuaW5jbHVkZXMoXCItXCIpKSBub2RlLmRlY29zLnB1c2goXCItXCIpO1xuICAgICAgY29uc3QgZGVjbyA9IG5vZGUuZGVjb3MubWFwKChkZWNvKSA9PiB7XG4gICAgICAgIGNvbnN0IG51bSA9IHBhcnNlSW50KGRlY28ubWF0Y2goL1xcKi0oXFxkKS8pPy5bMV0gPz8gXCIwXCIpO1xuICAgICAgICByZXR1cm4gbnVtID4gMCA/IFwiKlwiLnJlcGVhdChudW0pIDogZGVjbztcbiAgICAgIH0pLmpvaW4oXCJcIik7XG5cbiAgICAgIHJldHVybiBgWyR7ZGVjbyA/IGAke2RlY299IGAgOiBcIlwifSR7XG4gICAgICAgIG5vZGUubm9kZXMubWFwKChub2RlKSA9PiBjb252ZXJ0Tm9kZShub2RlKSkuam9pbihcIlwiKVxuICAgICAgfV1gO1xuICAgIH1cbiAgICAvLyBsaW50ZXLjga7jg5DjgrDjgafjgIHkvZXmlYXjgYvorablkYrjgYzlh7rjgotcbiAgICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWZhbGx0aHJvdWdoXG4gICAgY2FzZSBcImxpbmtcIjoge1xuICAgICAgc3dpdGNoIChub2RlLnBhdGhUeXBlKSB7XG4gICAgICAgIGNhc2UgXCJyb290XCI6XG4gICAgICAgIGNhc2UgXCJyZWxhdGl2ZVwiOlxuICAgICAgICAgIHJldHVybiBgWy0gWyR7bm9kZS5ocmVmfV1dYDtcbiAgICAgICAgY2FzZSBcImFic29sdXRlXCI6XG4gICAgICAgICAgcmV0dXJuIGBbLSAke25vZGUuY29udGVudCA/IGAke25vZGUuY29udGVudH0gYCA6IFwiXCJ9JHtub2RlLmhyZWZ9XV1gO1xuICAgICAgfVxuICAgIH1cbiAgICBjYXNlIFwiaGFzaFRhZ1wiOlxuICAgICAgcmV0dXJuIGBbLSAjJHtub2RlLmhyZWZ9XWA7XG4gICAgY2FzZSBcIm51bWJlckxpc3RcIjpcbiAgICAgIHJldHVybiBgJHtub2RlLm51bWJlcn0uICR7bm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IGNvbnZlcnROb2RlKG5vZGUpKS5qb2luKFwiXCIpfWA7XG4gICAgY2FzZSBcImJsYW5rXCI6XG4gICAgY2FzZSBcInBsYWluXCI6XG4gICAgICByZXR1cm4gYFstICR7bm9kZS50ZXh0fV1gO1xuICB9XG59O1xuIiwgImltcG9ydCB7IGNvbnZlcnQgfSBmcm9tIFwiLi4v6KSH5pWw6KGM44Gr5omT44Gh5raI44GX57ea44KS5byV44GPVXNlclNjcmlwdC9tb2QudHNcIjtcblxuc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gIHRpdGxlOiAnXFx1ZjBjYycsXG4gIG9uQ2xpY2s6IHRleHQgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnQodGV4dCk7XG4gICAgaWYgKHRleHQgPT09IHJlc3VsdCkgcmV0dXJuOyAvLyDlpInmm7TjgYzjgarjgZHjgozjgbDkvZXjgoLjgZfjgarjgYRcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LFxufSk7XG4iLCAiLy8gQHRzLWNoZWNrXG4vKiogQHBhcmFtIHtzdHJpbmd9IHRleHRcbiAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH0g572u5o+b44GM5a6f6KGM44GV44KM44Gq44GE44Go44GN44GvYHVuZGVmaW5lZGDjgpLov5TjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IGV4ZWMgPSAodGV4dCkgPT4ge1xuICBjb25zdCBzcGxpdFBvcyA9IHRleHQuaW5kZXhPZihcIlxcblxcblwiKTtcbiAgaWYgKHNwbGl0UG9zIDwgMCkgcmV0dXJuO1xuICBjb25zdCBjb21tYW5kcyA9IHRleHQuc2xpY2UoMCwgc3BsaXRQb3MpLnNwbGl0KFwiXFxuXCIpLm1hcChcbiAgICAoY29tbWFuZCkgPT4ge1xuICAgICAgY29uc3QgW2JlZm9yZSA9IFwiXCIsIGFmdGVyID0gXCJcIl0gPSBjb21tYW5kLnNwbGl0KFwiID0+IFwiLCAyKTtcbiAgICAgIHJldHVybiBbYmVmb3JlLCBhZnRlcl07XG4gICAgfVxuICApO1xuICBpZiAoY29tbWFuZHMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gIFxuICBsZXQgbGluZXMgPSB0ZXh0LnNsaWNlKHNwbGl0UG9zICsgMikuc3BsaXQoXCJcXG5cIik7XG4gIGlmIChsaW5lcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgZm9yIChjb25zdCBbYmVmb3JlLCBhZnRlcl0gb2YgY29tbWFuZHMpIHtcbiAgICBjb25zdCBtYXRjaCA9IGJlZm9yZS5tYXRjaCgvXlxcLyguKj8pXFwvKFtnaW15XSopJC8pO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChtYXRjaFsxXSwgbWF0Y2hbMl0pO1xuICAgICAgbGluZXMgPSBsaW5lcy5tYXAoXG4gICAgICAgIChsaW5lKSA9PiBsaW5lLnJlcGxhY2UocmVnLCBhZnRlci5yZXBsYWNlQWxsKFwiXFxcXG5cIiwgXCJcXG5cIikpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaW5lcyA9IGxpbmVzLm1hcChcbiAgICAgICAgKGxpbmUpID0+IGxpbmUucmVwbGFjZUFsbChiZWZvcmUsIGFmdGVyLnJlcGxhY2VBbGwoXCJcXFxcblwiLCBcIlxcblwiKSlcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIFxuICBjb25zdCBuZXdUZXh0ID0gYCR7dGV4dC5zbGljZSgwLCBzcGxpdFBvcyArIDIpfSR7bGluZXMuam9pbihcIlxcblwiKX1gO1xuICBpZiAodGV4dCA9PT0gbmV3VGV4dCkgcmV0dXJuO1xuICByZXR1cm4gbmV3VGV4dDtcbn07XG4iLCAiaW1wb3J0IHsgZXhlYyB9IGZyb20gXCIuL21vZC5qc1wiO1xuXG5zY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcbiAgdGl0bGU6ICh0ZXh0KSA9PiBleGVjKHRleHQpID8gXCJyZXBsYWNlXCIgOiBcIlwiLFxuICBvbkNsaWNrOiAodGV4dCkgPT4ge1xuICAgIGNvbnN0IHJlcGxhY2VkID0gZXhlYyh0ZXh0KTtcbiAgICBpZiAocmVwbGFjZWQgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIHJldHVybiByZXBsYWNlZDtcbiAgfSxcbn0pO1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cblxuZXhwb3J0IGludGVyZmFjZSBMaW5rIHtcbiAgYmVmb3JlOiBzdHJpbmc7XG4gIGFmdGVyOiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBDb252ZXJ0T3JkZXIgPSB7XG4gIGNvbnZlcnQ6IGZhbHNlO1xufSB8IHtcbiAgY29udmVydDogdHJ1ZTtcbiAgbGlua3M6IExpbmtbXTtcbn07XG5cbmV4cG9ydCBjb25zdCB3YWl0Rm9yQ29udmVydE9yZGVyID0gKGxpbmtzOiBzdHJpbmdbXSk6IFByb21pc2U8Q29udmVydE9yZGVyPiA9PiB7XG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICBjb25zdCBzaGFkb3dSb290ID0gcm9vdC5hdHRhY2hTaGFkb3coeyBtb2RlOiBcIm9wZW5cIiB9KTtcbiAgXG4gIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBzdHlsZS50ZXh0Q29udGVudCA9IGBkaWFsb2c6OmJhY2tkcm9we2JhY2tncm91bmQtY29sb3I6IzAwMGN9ZGlhbG9ne2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7cm93LWdhcDoxMHB4O3BhZGRpbmc6MTBweDtiYWNrZ3JvdW5kOnVuc2V0O21hcmdpbi10b3A6dW5zZXQ7bWFyZ2luLWJvdHRvbTp1bnNldDtib3JkZXI6dW5zZXQ7aGVpZ2h0OnVuc2V0fWRpYWxvZ1tvcGVuXXtkaXNwbGF5OmZsZXh9ZGlhbG9nPip7Y29sb3I6dmFyKC0tcGFnZS10ZXh0LWNvbG9yLCAjNGE0YTRhKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRyb3Bkb3duLW1lbnUtYmcsICNmZmYpO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMik7Ym9yZGVyLXJhZGl1czo2cHh9QG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KXtkaWFsb2d7cGFkZGluZzozMHB4IDB9fS5jb250YWluZXJ7ZGlzcGxheTpmbGV4O3BhZGRpbmc6NXB4O2dhcDowLjJlbTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47d2lkdGg6MTAwJTt9LmJ1dHRvbi1jb250YWluZXJ7ZmxleC1kaXJlY3Rpb246dW5zZXQ7fS5idXR0b24tY29udGFpbmVyPip7ZmxleDoxO31gO1xuICBzaGFkb3dSb290LmFwcGVuZChzdHlsZSk7XG4gIGNvbnN0IGRpYWxvZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaWFsb2dcIik7XG4gIGRpYWxvZy5pbnNlcnRBZGphY2VudEhUTUwoXCJiZWZvcmVlbmRcIiwgYFxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgIFJlcGxhY2UgTGlua3M6XG4gICAgICA8dGV4dGFyZWEgY2xhc3M9XCJlZGl0b3JcIj48L3RleHRhcmVhPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lciBidXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWxcIj5jYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlcGxhY2VcIj5yZXBsYWNlPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCk7XG4gIHNoYWRvd1Jvb3QuYXBwZW5kKGRpYWxvZyk7XG4gIFxuICBjb25zdCBlZGl0b3IgPSBkaWFsb2cucXVlcnlTZWxlY3RvcihcIi5lZGl0b3JcIikgYXMgSFRNTFRleHRBcmVhRWxlbWVudDtcbiAgZWRpdG9yLnJvd3MgPSBsaW5rcy5sZW5ndGg7XG4gIGVkaXRvci52YWx1ZSA9IGxpbmtzLmpvaW4oXCJcXG5cIik7XG4gIGNvbnN0IGFkanVzdFdpZHRoID0gKCkgPT4ge1xuICAgIGRpYWxvZy5zdHlsZS5taW5XaWR0aCA9IGAke1xuICAgICAgTWF0aC5tYXgoLi4uZWRpdG9yLnZhbHVlLnNwbGl0KFwiXFxuXCIpLm1hcCgobGluZSkgPT4gWy4uLmxpbmVdLmxlbmd0aCkpICsgNlxuICAgIH1lbWA7XG4gIH07XG4gIGFkanVzdFdpZHRoKCk7XG4gIGVkaXRvci5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgYWRqdXN0V2lkdGgpO1xuICBcbiAgY29uc3QgY2FuY2VsID0gZGlhbG9nLnF1ZXJ5U2VsZWN0b3IoXCIuY2FuY2VsXCIpIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuICBjb25zdCBjb25maXJtID0gZGlhbG9nLnF1ZXJ5U2VsZWN0b3IoXCIucmVwbGFjZVwiKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlPENvbnZlcnRPcmRlcj4oKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBvbkNsb3NlID0gKCkgPT4ge1xuICAgICAgcmVzb2x2ZSh7IGNvbnZlcnQ6IGZhbHNlIH0pO1xuICAgICAgcm9vdC5yZW1vdmUoKTtcbiAgICB9O1xuICAgIGRpYWxvZy5hZGRFdmVudExpc3RlbmVyKFwiY2xvc2VcIiwgb25DbG9zZSk7XG4gICAgZGlhbG9nLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBvbkNsb3NlKTtcbiAgICBjYW5jZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIG9uQ2xvc2UpO1xuICAgIGNvbmZpcm0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IG5ld0xpbmVzID0gZWRpdG9yLnZhbHVlLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIGNvbnZlcnQ6IHRydWUsXG4gICAgICAgIGxpbmtzOiBsaW5rcy5mbGF0TWFwKFxuICAgICAgICAgIChiZWZvcmUsIGkpID0+IHtcbiAgICAgICAgICAgIC8vIOepuuaWh+Wtl+OBruWgtOWQiOOBqOOAgeWkieWMluOBjOOBquOBhOWgtOWQiOOBr+mjm+OBsOOBmVxuICAgICAgICAgICAgaWYgKGJlZm9yZSA9PT0gbmV3TGluZXNbaV0gfHwgYmVmb3JlID09PSBcIlwiIHx8ICFuZXdMaW5lc1tpXSkgcmV0dXJuIFtdO1xuICAgICAgICAgICAgcmV0dXJuIFt7IGJlZm9yZSwgYWZ0ZXI6IG5ld0xpbmVzW2ldID8/IGJlZm9yZSB9XTtcbiAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICAgIHJvb3QucmVtb3ZlKCk7XG4gICAgfSk7XG4gICAgZGlhbG9nLnF1ZXJ5U2VsZWN0b3IoXCIuY29udGFpbmVyXCIpIS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKGUpID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG4gIH0pO1xuICBcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmQocm9vdCk7XG4gIGRpYWxvZy5zaG93TW9kYWwoKTtcbiAgXG4gIHJldHVybiBwcm9taXNlO1xufTsiLCAiaW1wb3J0IHsgdXNlU3RhdHVzQmFyIH0gZnJvbSBcIi4uL3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkL21vZC50c1wiO1xuaW1wb3J0IHsgcmVwbGFjZSwgZ2V0TGlua3MgfSBmcm9tIFwiLi9tb2QudHNcIjtcbmltcG9ydCB7IHdhaXRGb3JDb252ZXJ0T3JkZXIgfSBmcm9tIFwiLi9jb252ZXJ0ZXIudHNcIjtcbmV4cG9ydCB7IGdldExpbmtzIH07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVSZXBsYWNlID0gYXN5bmMgKHRleHQ6IHN0cmluZywgcHJvamVjdHM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGxpbmtzID0gZ2V0TGlua3ModGV4dCk7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHdhaXRGb3JDb252ZXJ0T3JkZXIoWy4uLm5ldyBTZXQobGlua3MpXSk7XG4gIGlmICghcmVzdWx0LmNvbnZlcnQgfHwgcmVzdWx0LmxpbmtzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICBcbiAgY29uc3QgYmFycyA9IG5ldyBNYXAocmVzdWx0LmxpbmtzLm1hcCgobGluaykgPT4gW2xpbmsuYmVmb3JlLCB1c2VTdGF0dXNCYXIoKV0pKTtcbiAgYXdhaXQgcmVwbGFjZShyZXN1bHQubGlua3MsIHByb2plY3RzLCAoc3RhdHVzKSA9PiB7XG4gICAgY29uc3QgeyBsaW5rLCBwcm9qZWN0Q291bnQsIHJlcGxhY2VkLCBkb25lIH0gPSBzdGF0dXM7XG4gICAgY29uc3QgYmFyID0gYmFycy5nZXQobGluay5iZWZvcmUpO1xuICAgIGlmICghYmFyKSByZXR1cm47XG4gICAgaWYgKGRvbmUpIHtcbiAgICAgIGJhci5yZW5kZXIoXG4gICAgICAgIHsgdHlwZTogXCJjaGVjay1jaXJjbGVcIn0sXG4gICAgICAgIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IGBcIiR7bGluay5hZnRlcn1cIiwgJHtyZXBsYWNlZH1sLiAke3Byb2plY3RDb3VudH1wLmAgfSxcbiAgICAgICk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IGJhci5kaXNwb3NlKCksIDEwMDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBiYXIucmVuZGVyKFxuICAgICAgeyB0eXBlOiBcInNwaW5uZXJcIn0sXG4gICAgICB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBgXCIke2xpbmsuYWZ0ZXJ9XCIsICR7cmVwbGFjZWR9bC4gJHtwcm9qZWN0Q291bnR9cC5gIH0sXG4gICAgKTtcbiAgfSk7XG59OyIsICJpbXBvcnQge1xuICBkaXNjb25uZWN0LFxuICBtYWtlU29ja2V0LFxuICBwYXRjaCxcbiAgcmVwbGFjZUxpbmtzLFxuICB1c2VTdGF0dXNCYXIsXG59IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9tb2QudHNcIjtcbmltcG9ydCB0eXBlIHtcbiAgRXJyb3JMaWtlLFxufSBmcm9tIFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NjcmFwYm94LWpwL3R5cGVzLzAuMC44L21vZC50c1wiO1xuaW1wb3J0IHsgZ2V0TGlua3MgfSBmcm9tICBcIi4uL+ikh+aVsOOBruODquODs+OCr+OCkuOBvuOBqOOCgeOBpue9ruaPm+OBmeOCi1VzZXJTY3JpcHQvbW9kLnRzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXBsYWNlKHRleHQ6IHN0cmluZywgcHJvamVjdHM6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IGxpbmsgPSBnZXRMaW5rcyh0ZXh0KVswXTtcbiAgaWYgKCFsaW5rKSByZXR1cm47XG5cbiAgY29uc3QgbmV3TGluayA9IHdpbmRvdy5wcm9tcHQoXG4gICAgYFJlcGxhY2UgXCIke2xpbmt9XCIgdG8gdGhpcyBpbiAke1xuICAgICAgcHJvamVjdHMubWFwKChwcm9qZWN0KSA9PiBgXCIvJHtwcm9qZWN0fVwiYCkuam9pbihcIiwgXCIpXG4gICAgfWAsXG4gICAgbGluayxcbiAgKVxuICAgID8ucmVwbGFjZT8uKC9bXFxbXFxdXFxuXS9nLCBcIiBcIikgPz8gXCJcIjtcbiAgaWYgKG5ld0xpbmsgPT09IFwiXCIpIHJldHVybjtcblxuICBjb25zdCB7IHJlbmRlciwgZGlzcG9zZSB9ID0gdXNlU3RhdHVzQmFyKCk7XG5cbiAgY29uc3Qgc29ja2V0ID0gYXdhaXQgbWFrZVNvY2tldCgpO1xuICB0cnkge1xuICAgIHJlbmRlcihcbiAgICAgIHsgdHlwZTogXCJzcGlubmVyXCIgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IGBSZXBsYWNpbmcgbGlua3MgaW4gJHtwcm9qZWN0cy5sZW5ndGh9IHByb2plY3RzLi4uYCxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGNvbnN0IHJlcGxhY2VkTnVtcyA9IGF3YWl0IFByb21pc2UuYWxsKHByb2plY3RzLm1hcChhc3luYyAocHJvamVjdCkgPT4ge1xuICAgICAgY29uc3QgW3Jlc3VsdF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIC8vIOacrOW9k+OBr2hhc0JhY2tMaW5rc09ySWNvbnMgPT09IHRydWXjga7jgajjgY3jga7jgb/nva7mj5vjgZfjgZ/jgYRcbiAgICAgICAgcmVwbGFjZUxpbmtzKHByb2plY3QsIGxpbmssIG5ld0xpbmspLFxuICAgICAgICBwYXRjaChwcm9qZWN0LCBsaW5rLCAobGluZXMsIHsgcGVyc2lzdGVudCB9KSA9PiB7XG4gICAgICAgICAgaWYgKCFwZXJzaXN0ZW50KSByZXR1cm47XG5cbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3TGluayxcbiAgICAgICAgICAgIC4uLmxpbmVzLm1hcCgobGluZSkgPT4gbGluZS50ZXh0KS5zbGljZSgxKSxcbiAgICAgICAgICBdO1xuICAgICAgICB9LCB7IHNvY2tldCB9KSxcbiAgICAgIF0pO1xuICAgICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgICAgcmVuZGVyKFxuICAgICAgICAgIHsgdHlwZTogXCJleGNsYW1hdGlvbi10cmlhbmdsZVwiIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICB0ZXh0OiBgJHtyZXN1bHQudmFsdWUubmFtZX0gJHtyZXN1bHQudmFsdWUubWVzc2FnZX1gLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICAgIHRocm93IHRvRXJyb3IocmVzdWx0LnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGNvdW50Kys7XG4gICAgICByZW5kZXIoXG4gICAgICAgIHsgdHlwZTogXCJzcGlubmVyXCIgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IGBSZXBsYWNpbmcgbGlua3MgaW4gJHtwcm9qZWN0cy5sZW5ndGggLSBjb3VudH0gcHJvamVjdHMuLi5gLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gICAgfSkpO1xuXG4gICAgY29uc3QgcmVwbGFjZWQgPSByZXBsYWNlZE51bXMucmVkdWNlKChhY2MsIGN1cikgPT4gYWNjICsgY3VyLCAwKTtcbiAgICByZW5kZXIoXG4gICAgICB7IHR5cGU6IFwiY2hlY2stY2lyY2xlXCIgfSxcbiAgICAgIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IGBTdWNjZXNzZnVsbHkgcmVwbGFjZWQgJHtyZXBsYWNlZH0gbGlua3MuYCB9LFxuICAgICk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZGlzY29ubmVjdChzb2NrZXQpO1xuICAgIHNldFRpbWVvdXQoZGlzcG9zZSwgMTAwMCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9FcnJvcihlOiBFcnJvckxpa2UpIHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoKTtcbiAgZXJyb3IubmFtZSA9IGUubmFtZTtcbiAgZXJyb3IubWVzc2FnZSA9IGUubWVzc2FnZTtcbiAgcmV0dXJuIGVycm9yO1xufVxuIiwgImltcG9ydCB7IGhhbmRsZVJlcGxhY2UsIGdldExpbmtzIH0gZnJvbSBcIi4vbWFpbi50c1wiO1xuaW1wb3J0IHsgcmVwbGFjZSB9IGZyb20gXCIuLi9Qcm9qZWN044KS5qiq5pat44GX44Gm44Oq44Oz44Kv44KS572u5o+b44GZ44KLVXNlclNjcmlwdC9tb2QudHNcIjtcbmltcG9ydCB0eXBlIHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vc2NyYXBib3gtanAlMkZ0eXBlcy91c2Vyc2NyaXB0LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKHByb2plY3RzOiBJdGVyYWJsZTxzdHJpbmc+KTogdm9pZCA9PiB7XG4gIGNvbnN0IHAgPSBbc2NyYXBib3guUHJvamVjdC5uYW1lLCAuLi5wcm9qZWN0c107XG4gIHNjcmFwYm94LlBvcHVwTWVudS5hZGRCdXR0b24oe1xuICAgIHRpdGxlOiAodGV4dCkgPT4ge1xuICAgICAgY29uc3QgbGlua0NvdW50ID0gZ2V0TGlua3ModGV4dCkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxpbmtDb3VudCA+IDEgPyBcInVwZGF0ZSBsaW5rc1wiIDogbGlua0NvdW50ID09PSAxID8gXCJ1cGRhdGUgYSBsaW5rXCIgOiBcIlwiO1xuICAgIH0sXG4gICAgb25DbGljazogKHRleHQpOiB1bmRlZmluZWQgPT4ge1xuICAgICAgY29uc3QgbGlua0NvdW50ID0gZ2V0TGlua3ModGV4dCkubGVuZ3RoO1xuICAgICAgaWYgKGxpbmtDb3VudCA+IDEpIHtcbiAgICAgICAgaGFuZGxlUmVwbGFjZSh0ZXh0LCBwKTtcbiAgICAgIH0gZWxzZSBpZiAobGlua0NvdW50ID09PSAxKSB7XG4gICAgICAgIHJlcGxhY2UodGV4dCwgcCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0sXG4gIH0pO1xufTtcbiIsICJzY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcbiAgdGl0bGU6ICh0ZXh0KSA9PiAvW1xcbu+8ji7jgIJdLy50ZXN0KHRleHQpID8gXCJcXFxcblwiIDogXCJcIixcbiAgb25DbGljazogKHRleHQpID0+IHRleHRcbiAgICAucmVwbGFjZSgvKFxcdylcXG4oXFx3KS9nLCBcIiQxICQyXCIpXG4gICAgLnJlcGxhY2VBbGwoXCJcXG5cIiwgXCJcIilcbiAgICAucmVwbGFjZUFsbChcIu+8jlwiLCBcIu+8jlxcblwiKVxuICAgIC5yZXBsYWNlQWxsKFwiLlwiLCBcIi5cXG5cIilcbiAgICAucmVwbGFjZUFsbChcIuOAglwiLCBcIuOAglxcblwiKSxcbn0pOyIsICJzY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcbiAgdGl0bGU6ICh0ZXh0KSA9PiAvaHR0cHM6XFwvXFwvKD86dGh1bWJcXC58aVxcLik/Z3lhem9cXC5jb21cXC9bYS16MC05XSsvLnRlc3QodGV4dClcbiAgICA/IGdsb2JhbFRoaXMuR01fZmV0Y2hcbiAgICA/IFwiY29weSBHeWF6byBPQ1JcIlxuICAgIDogXCJvcGVuIEd5YXpvXCJcbiAgICA6IFwiXCIsXG4gIG9uQ2xpY2s6IGFzeW5jICh0ZXh0KSA9PiB7XG4gICAgY29uc3QgaWQgPSB0ZXh0Lm1hdGNoKC9odHRwczpcXC9cXC8oPzp0aHVtYlxcLnxpXFwuKT9neWF6b1xcLmNvbVxcLyhbYS16MC05XSspLyk/LlsxXTtcbiAgICBpZiAoIWlkKSByZXR1cm47XG4gICAgaWYgKCFnbG9iYWxUaGlzLkdNX2ZldGNoKSB7XG4gICAgICB3aW5kb3cub3BlbihgaHR0cHM6Ly9neWF6by5jb20vJHtpZH1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVzID0gYXdhaXQgR01fZmV0Y2goYGh0dHBzOi8vZ3lhem8uY29tLyR7aWR9Lmpzb25gKTtcbiAgICBjb25zdCBvY3IgPSAoYXdhaXQgcmVzLmpzb24oKSkubWV0YWRhdGE/Lm9jcj8uZGVzY3JpcHRpb247XG4gICAgaWYgKCFvY3IpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQob2NyKTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICBhbGVydChgJHtlLm5hbWV9ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfSxcbn0pO1xuIiwgInNjcmFwYm94LlBvcHVwTWVudS5hZGRCdXR0b24oe1xuICB0aXRsZTogKHRleHQpID0+IC9odHRwczpcXC9cXC9neWF6b1xcLmNvbVxcL1thLXowLTldKy8udGVzdCh0ZXh0KSA/IFwiXFx1ZjU2NVwiIDogXCJcIixcbiAgb25DbGljazogKHRleHQpID0+IHtcbiAgICBjb25zdCBpZCA9IHRleHQubWF0Y2goL2h0dHBzOlxcL1xcL2d5YXpvXFwuY29tXFwvKFthLXowLTldKykvKT8uWzFdO1xuICAgIGlmICghaWQpIHJldHVybjtcbiAgICB3aW5kb3cub3BlbihgaHR0cHM6Ly9neWF6by5jb20vJHtpZH0vdHJhbnNmb3JtYCk7XG4gIH0sXG59KTsiLCAiaW1wb3J0IHR5cGUgeyBCbG9jaywgQ29kZUJsb2NrLCBUYWJsZSwgTGluZSwgTm9kZSBhcyBOb2RlVHlwZSB9IGZyb20gXCIuLi9zY3JhcGJveC1wYXJzZXIvbW9kLnRzXCI7XG5cbi8qKiBTY3JhcGJveOiomOazleOCkk1hcmtkb3du6KiY5rOV44Gr5aSJ44GI44KLICovXG5leHBvcnQgY29uc3QgY29udmVydCA9IChibG9ja3M6IEJsb2NrW10pOiBzdHJpbmcgPT4ge1xuICAvKiog5aSJ5o+b5b6M44Gu5paH5a2X5YiXICovXG4gIGxldCBsYXRleCA9IFwiXCI7XG4gIC8qKiDnj77lnKjop6PmnpDjgZfjgabjgYTjgovooYzjga7jgqTjg7Pjg4fjg7Pjg4jjga7mt7HjgZVcbiAgICpcbiAgICog44GT44Gu5pa55rOV44Gg44Go55Wq5Y+344Gk44GN566H5p2h5pu444GN44KS44KS5Yy65Yil44Gn44GN44Gq44GE44GM44CB5oiR5oWi44GZ44KLXG4gICAqL1xuICBsZXQgbGV2ZWwgPSAwO1xuICBmb3IgKGNvbnN0IGJsb2NrIG9mIGJsb2Nrcykge1xuICAgIC8vIOOCv+OCpOODiOODq+OBr+S7iuOBruOBqOOBk+OCjeeEoeimluOBl+OBpuOBiuOBj1xuICAgIGlmIChibG9jay50eXBlID09PSBcInRpdGxlXCIpIGNvbnRpbnVlO1xuICAgIC8vIOOCpOODs+ODh+ODs+ODiOOCkuS4i+OBkuOCi1xuICAgIGlmIChibG9jay5pbmRlbnQgPiBsZXZlbCkge1xuICAgICAgZm9yIChsZXQgaSA9IGxldmVsOyBpIDwgYmxvY2suaW5kZW50OyBpKyspIHtcbiAgICAgICAgbGF0ZXggKz0gaW5kZW50KGAkeyBpICE9PSBsZXZlbCA/IFwiXFxcXGl0ZW1cIiA6IFwiXCJ9XFxcXGJlZ2lue2l0ZW1pemV9YCwgaSAqIDIpICsgXCJcXG5cIjtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8g44Kk44Oz44OH44Oz44OI44KS5LiK44GS44KLXG4gICAgaWYgKGJsb2NrLmluZGVudCA8IGxldmVsKSB7XG4gICAgICBmb3IgKGxldCBpID0gbGV2ZWw7IGkgPiBibG9jay5pbmRlbnQ7IGktLSkge1xuICAgICAgICBsYXRleCArPSBpbmRlbnQoXCJcXFxcZW5ke2l0ZW1pemV9XCIsIChpIC0gMSkgKiAyKSArIFwiXFxuXCI7XG4gICAgICB9XG4gICAgfVxuICAgIGxldmVsID0gYmxvY2suaW5kZW50O1xuICAgIGxhdGV4ICs9IGluZGVudChgJHtsZXZlbCA+IDAgPyBcIlxcXFxpdGVtIFwiIDogXCJcIn0ke2Zyb21CbG9jayhibG9jayl9YCwgbGV2ZWwgKiAyKSArIFwiXFxuXCI7XG4gIH1cbiAgLy8g5YWo44Gm44Gu44Kk44Oz44OH44Oz44OI44KS6ZaJ44GY44KLXG4gIGZvciAobGV0IGkgPSBsZXZlbDsgaSA+IDA7IGktLSkge1xuICAgIGxhdGV4ICs9IGluZGVudChcIlxcXFxlbmR7aXRlbWl6ZX1cIiwgKGkgLSAxKSAqIDIpICsgXCJcXG5cIjtcbiAgfVxuICByZXR1cm4gbGF0ZXg7XG59O1xuXG4vKiogQmxvY2vjga7lpInmj5sgKi9cbmNvbnN0IGZyb21CbG9jayA9IChibG9jazogQ29kZUJsb2NrIHwgVGFibGUgfCBMaW5lKTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChibG9jay50eXBlKSB7XG4gICAgY2FzZSBcImNvZGVCbG9ja1wiOlxuICAgICAgcmV0dXJuIGZyb21Db2RlQmxvY2soYmxvY2spO1xuICAgIGNhc2UgXCJ0YWJsZVwiOlxuICAgICAgcmV0dXJuIGZyb21UYWJsZShibG9jayk7XG4gICAgY2FzZSBcImxpbmVcIjpcbiAgICAgIHJldHVybiBmcm9tTGluZShibG9jayk7XG4gIH1cbn1cblxuLyoqIENvZGVCbG9ja+iomOazleOBruWkieaPm1xuICpcbiAqIGluZGVudOOBr+eEoeimluOBmeOCi1xuICovXG5jb25zdCBmcm9tQ29kZUJsb2NrID0gKGJsb2NrOiBDb2RlQmxvY2spOiBzdHJpbmcgPT4gXG5gXFxcXGJlZ2lue2xzdGxpc3Rpbmd9W2xhbmd1YWdlPSR7ZXNjYXBlKGdldEZpbGVUeXBlKGJsb2NrLmZpbGVOYW1lKSl9LGNhcHRpb249JHtlc2NhcGUoYmxvY2suZmlsZU5hbWUpfSxsYWJlbD1sYW5nOiR7YmxvY2suZmlsZU5hbWV9LG51bWJlcnM9bGVmdF1cbiR7YmxvY2suY29udGVudH1cblxcXFxlbmR7bHN0bGlzdGluZ31gO1xuXG4vKiogVGFibGXoqJjms5Xjga7lpInmj5tcbiAqXG4gKiBpbmRlbnTjga/nhKHoppbjgZnjgotcbiAqL1xuY29uc3QgZnJvbVRhYmxlID0gKHRhYmxlOiBUYWJsZSk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGNhcHRpb24gPSBgXFxcXGNhcHRpb257JHtlc2NhcGUodGFibGUuZmlsZU5hbWUpfX1cXFxcbGFiZWx7dGFibGU6JHtlc2NhcGUodGFibGUuZmlsZU5hbWUpfX1gO1xuICAvLyBjb2x1bW5z44Gu5pyA5aSn6ZW344KS6KiI566X44GZ44KLXG4gIGNvbnN0IG1heENvbCA9IE1hdGgubWF4KC4uLnRhYmxlLmNlbGxzLm1hcCgocm93KSA9PiByb3cubGVuZ3RoKSk7XG4gIFxuICAvLyDooYzjgpLlpInmj5vjgZnjgotcbiAgY29uc3Qgcm93cyA9IHRhYmxlLmNlbGxzXG4gICAgLm1hcChcbiAgICAgIChyb3cpID0+IGAgICAgICR7cm93Lm1hcChcbiAgICAgICAgKGNvbHVtbikgPT4gY29sdW1uLm1hcCgobm9kZSkgPT4gZnJvbU5vZGUobm9kZSkpLmpvaW4oXCJcIilcbiAgICAgICkuam9pbihcIiAmIFwiKX1cXFxcXFxcXGBcbiAgICApO1xuICBcbiAgcmV0dXJuIGBcXFxcYmVnaW57dGFibGV9W2h0YnBdXG4gICR7Y2FwdGlvbn1cbiAgXFxcXGNlbnRlcmluZ1xuICBcXFxcYmVnaW57dGFidWxhcn17JHtcImNcIi5yZXBlYXQobWF4Q29sKX19XG4gICAgJHtyb3dzLmxlbmd0aCA9PT0gMCA/XG4gICAgICAgIC8vIOepuuOBruWgtOWQiFxuICAgICAgICBcIlwiIDpcbiAgICAgICAgcm93cy5sZW5ndGggPT09IDEgP1xuICAgICAgICAgIC8vIOS4gOihjOOBruOBv+OBruWgtOWQiOOBr1xcbWlkcnVsZeOCkuWFpeOCjOOBquOBhFxuICAgICAgICAgIGAgICAgXFxcXHRvcHJ1bGVcbiR7cm93cy5qb2luKFwiXFxuXCIpfVxuICAgIFxcXFxib3R0b21ydWxlYCA6XG4gICAgICAgICBgICAgIFxcXFx0b3BydWxlXG4ke3Jvd3NbMF19XG4gICAgXFxcXG1pZHJ1bGVcbiR7cm93cy5zbGljZSgxKS5qb2luKFwiXFxuXCIpfVxuICAgIFxcXFxib3R0b21ydWxlYFxuICAgIH1cbiAgXFxcXGVuZHt0YWJ1bGFyfVxuXFxcXGVuZHt0YWJsZX1gO1xufTtcblxuLyoqIOihjOOBruWkieaPmyAqL1xuY29uc3QgZnJvbUxpbmUgPSAobGluZTogTGluZSk6IHN0cmluZyA9PlxuICBsaW5lLm5vZGVzLm1hcCgobm9kZSkgPT4gZnJvbU5vZGUobm9kZSkpLmpvaW4oXCJcIik7XG4gIFxuLyoqIE5vZGXjgpLlpInmj5vjgZnjgosgKi9cbmNvbnN0IGZyb21Ob2RlID0gKG5vZGU6IE5vZGVUeXBlKTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICBjYXNlIFwicXVvdGVcIjpcbiAgICAgIHJldHVybiBgXFxcXGJlZ2lue3F1b3RlfVxuJHtpbmRlbnQobm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IGZyb21Ob2RlKG5vZGUpKS5qb2luKFwiXCIpLCAyKX1cblxcXFxlbmR7cXVvdGV9YDtcbiAgICBjYXNlIFwiaW1hZ2VcIjpcbiAgICBjYXNlIFwic3Ryb25nSW1hZ2VcIjpcbiAgICAgIHJldHVybiBgXFxcXGJlZ2lue2ZpZ3VyZX1baGJ0cF1cbiAgaWFtZ2U6XFxcXHVybHske25vZGUuc3JjfX1cblxcXFxlbmR7ZmlndXJlfWA7XG4gICAgY2FzZSBcImljb25cIjpcbiAgICBjYXNlIFwic3Ryb25nSWNvblwiOlxuICAgICAgcmV0dXJuIGBcXFxcdGV4dGl0eyR7ZXNjYXBlKG5vZGUucGF0aCl9fWA7XG4gICAgY2FzZSBcInN0cm9uZ1wiOlxuICAgICByZXR1cm4gYFxcXFx0ZXh0YmZ7JHtub2RlLm5vZGVzLm1hcCgobm9kZSkgPT4gZnJvbU5vZGUobm9kZSkpLmpvaW4oXCJcIil9fWA7XG4gICAgY2FzZSBcImZvcm11bGFcIjpcbiAgICAgIHJldHVybiBgJCR7bm9kZS5mb3JtdWxhfSRgO1xuICAgIGNhc2UgXCJkZWNvcmF0aW9uXCI6IHtcbiAgICAgIGxldCByZXN1bHQgPSBub2RlLm5vZGVzLm1hcCgobm9kZSkgPT4gZnJvbU5vZGUobm9kZSkpLmpvaW4oXCJcIik7XG4gICAgICBpZiAobm9kZS5kZWNvcy5pbmNsdWRlcyhcIi9cIikpIHJlc3VsdCA9IGBcXFxcdGV4dGl0eyR7cmVzdWx0fX1gO1xuICAgICAgaWYgKG5vZGUuZGVjb3Muc29tZSgoZGVjbykgPT4gL1xcKi0vLnRlc3QoZGVjb1swXSkpKSB7XG4gICAgICAgIHJlc3VsdCA9IGBcXFxcdGV4dGJmeyR7cmVzdWx0fX1gO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUuZGVjb3MuaW5jbHVkZXMoXCJfXCIpKSByZXN1bHQgPSBgXFxcXHVsaW5leyR7cmVzdWx0fX1gO1xuICAgICAgaWYgKG5vZGUuZGVjb3MuaW5jbHVkZXMoXCItXCIpKSByZXN1bHQgPSBgXFxcXHNvdXR7JHtyZXN1bHR9fWA7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBjYXNlIFwibnVtYmVyTGlzdFwiOlxuICAgICAgcmV0dXJuIGAke25vZGUubnVtYmVyfS4gJHtub2RlLm5vZGVzLm1hcCgobm9kZSkgPT4gZnJvbU5vZGUobm9kZSkpLmpvaW4oXCJcIil9YDtcbiAgICBjYXNlIFwiaGVscGZlZWxcIjpcbiAgICAgIHJldHVybiBgXFxcXGxzdGlubGluZSE/ICR7ZXNjYXBlKG5vZGUudGV4dCl9IWA7XG4gICAgY2FzZSBcImNvZGVcIjpcbiAgICAgIHJldHVybiBgXFxcXGxzdGlubGluZSEke2VzY2FwZShub2RlLnRleHQpfSFgO1xuICAgIGNhc2UgXCJjb21tYW5kTGluZVwiOlxuICAgICAgcmV0dXJuIGBcXFxcbHN0aW5saW5lISR7ZXNjYXBlKG5vZGUuc3ltYm9sKX0gJHtlc2NhcGUobm9kZS50ZXh0KX0hYDtcbiAgICBjYXNlIFwibGlua1wiOlxuICAgICAgcmV0dXJuIG5vZGUucGF0aFR5cGUgPT09IFwiYWJzb2x1dGVcIiA/XG4gICAgICAgIG5vZGUuY29udGVudCA9PT0gXCJcIiA/XG4gICAgICAgICAgYFxcXFx1cmx7JHtub2RlLmhyZWZ9fWAgOlxuICAgICAgICAgIGBcXFxcaHJlZnske25vZGUuaHJlZn19eyR7ZXNjYXBlKG5vZGUuY29udGVudCl9fWAgOlxuICAgICAgICBlc2NhcGUobm9kZS5ocmVmKTtcbiAgICBjYXNlIFwiZ29vZ2xlTWFwXCI6XG4gICAgICByZXR1cm4gYFxcXFxocmVmeyR7bm9kZS51cmx9fXske2VzY2FwZShub2RlLnBsYWNlKX19YDtcbiAgICBjYXNlIFwiaGFzaFRhZ1wiOlxuICAgICAgcmV0dXJuIGVzY2FwZShgIyR7bm9kZS5ocmVmfWApO1xuICAgIGNhc2UgXCJibGFua1wiOlxuICAgIGNhc2UgXCJwbGFpblwiOlxuICAgICAgcmV0dXJuIGVzY2FwZShub2RlLnRleHQpO1xuICB9XG59O1xuXG5jb25zdCBleHRlbnNpb25EYXRhID0gW1xuICB7XG4gICAgZXh0ZW5zaW9uczogW1wiamF2YXNjcmlwdFwiLCBcImpzXCJdLFxuICAgIGZpbGVUeXBlOiBcImphdmFzY3JpcHRcIixcbiAgfSxcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcInR5cGVzY3JpcHRcIiwgXCJ0c1wiXSxcbiAgICBmaWxlVHlwZTogXCJ0eXBlc2NyaXB0XCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJjcHBcIiwgXCJocHBcIl0sXG4gICAgZmlsZVR5cGU6IFwiQysrXCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJjXCIsIFwiY2NcIiwgXCJoXCJdLFxuICAgIGZpbGVUeXBlOiBcIkNcIixcbiAgfSxcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcImNzXCIsIFwiY3NoYXJwXCJdLFxuICAgIGZpbGVUeXBlOiBcImNzXCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJtYXJrZG93blwiLCBcIm1kXCJdLFxuICAgIGZpbGVUeXBlOiBcIm1hcmtkb3duXCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJodG1cIiwgXCJodG1sXCJdLFxuICAgIGZpbGVUeXBlOiBcImh0bWxcIixcbiAgfSxcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcImpzb25cIl0sXG4gICAgZmlsZVR5cGU6IFwianNvblwiLFxuICB9LFxuICB7XG4gICAgZXh0ZW5zaW9uczogW1wieG1sXCJdLFxuICAgIGZpbGVUeXBlOiBcInhtbFwiLFxuICB9LFxuICB7XG4gICAgZXh0ZW5zaW9uczogW1wieWFtbFwiLCBcInltbFwiXSxcbiAgICBmaWxlVHlwZTogXCJ5YW1sXCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJ0b21sXCJdLFxuICAgIGZpbGVUeXBlOiBcInRvbWxcIixcbiAgfSxcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcImluaVwiXSxcbiAgICBmaWxlVHlwZTogXCJpbmlcIixcbiAgfSxcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcInRleFwiLCBcInN0eVwiXSxcbiAgICBmaWxlVHlwZTogXCJ0ZXhcIixcbiAgfSxcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcInN2Z1wiXSxcbiAgICBmaWxlVHlwZTogXCJzdmdcIixcbiAgfSxcbl07XG5cbi8qKiDjg5XjgqHjgqTjg6vlkI3jga7mi6HlvLXlrZDjgYvjgonoqIDoqp7jgpLlj5blvpfjgZnjgosgKi9cbmNvbnN0IGdldEZpbGVUeXBlID0gKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBmaWxlbmFtZUV4dGVudGlvbiA9IGZpbGVuYW1lLnJlcGxhY2UoL14uKlxcLihcXHcrKSQvLCBcIiQxXCIpO1xuICByZXR1cm4gZXh0ZW5zaW9uRGF0YVxuICAgIC5maW5kKChkYXRhKSA9PiBkYXRhLmV4dGVuc2lvbnMuaW5jbHVkZXMoZmlsZW5hbWVFeHRlbnRpb24pKT8uZmlsZVR5cGUgPz9cbiAgICBcIlwiO1xufTtcblxuY29uc3QgZXNjYXBlID0odGV4dDogc3RyaW5nKTogc3RyaW5nID0+IHRleHRcbiAgLnJlcGxhY2VBbGwoXCJcXFxcXCIsIFwiXFxcXHRleHRiYWNrc2xhc2ggXCIpXG4gIC5yZXBsYWNlQWxsKFwiI1wiLCBcIlxcXFwjXCIpXG4gIC5yZXBsYWNlQWxsKFwiJVwiLCBcIlxcXFwlXCIpXG4gIC5yZXBsYWNlQWxsKFwiJFwiLCBcIlxcXFwkXCIpXG4gIC5yZXBsYWNlQWxsKFwiJlwiLCBcIlxcXFwmXCIpXG4gIC5yZXBsYWNlQWxsKFwiflwiLCBcIlxcXFx0ZXh0YXNjaWl0aWxkZSBcIilcbiAgLnJlcGxhY2VBbGwoXCJeXCIsIFwiXFxcXHRleHRhc2NpaWNpcmN1bSBcIilcbiAgLnJlcGxhY2VBbGwoXCJfXCIsIFwiXFxcXF9cIilcbiAgLnJlcGxhY2VBbGwoXCJ7XCIsIFwiXFxcXHtcIilcbiAgLnJlcGxhY2VBbGwoXCJ9XCIsIFwiXFxcXH1cIilcbiAgLnJlcGxhY2VBbGwoXCJ8XCIsIFwiXFxcXHRleHRiYXIgXCIpXG4gIC5yZXBsYWNlQWxsKFwiPFwiLCBcIlxcXFx0ZXh0bGVzcyBcIilcbiAgLnJlcGxhY2VBbGwoXCI+XCIsIFwiXFxcXHRleHRncmVhdGVyIFwiKTtcbiAgIFx0XG5jb25zdCBpbmRlbnQgPSAodGV4dDogc3RyaW5nLCBpbmRlbnROdW06IG51bWJlcik6IHN0cmluZyA9PlxuICB0ZXh0LnNwbGl0KFwiXFxuXCIpLm1hcCgobGluZSkgPT5gJHtcIiBcIi5yZXBlYXQoaW5kZW50TnVtKX0ke2xpbmV9YCkuam9pbihcIlxcblwiKTtcbiIsICJpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCIuLi9zY3JhcGJveC1wYXJzZXIvbW9kLnRzXCI7XG5pbXBvcnQgeyBjb252ZXJ0IH0gZnJvbSBcIi4uL1NjcmFwYm946KiY5rOV44KSVGVY6KiY5rOV44Gr5aSJ5o+b44GZ44KLU2NyaXB0L21vZC50c1wiO1xuaW1wb3J0IHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vc2NyYXBib3gtanAlMkZ0eXBlcy91c2Vyc2NyaXB0LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gIHRpdGxlOiBcIlRlWFwiLFxuICBvbkNsaWNrOiAodGV4dCkgPT4ge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbnZlcnQocGFyc2UodGV4dCkpKVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIGFsZXJ0KGAke2UubmFtZX0gJHtlLm1lc3NhZ2V9XFxuXFxuJHtlLnN0YWNrfWApO1xuICAgICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSxcbn0pO1xuIiwgImV4cG9ydCBjb25zdCBBUElST09UID0gXCJodHRwczovL2tlaWNoby5oZXJva3VhcHAuY29tL2FwaS9cIjtcbiIsICJpbXBvcnQgeyBBUElST09UIH0gZnJvbSBcIi4vQVBJUk9PVC50c1wiO1xuaW1wb3J0IHsgR01GZXRjaE5vdEF2YWlsYWJsZUVycm9yLCBSZXNwb25zZUVycm9yLCBSZXN1bHQgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIEdNX2ZldGNoOiAodHlwZW9mIGZldGNoKSB8IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFuc3dlciB7XG4gIHRleHQ6IHN0cmluZztcbiAgYnV0dG9uczogc3RyaW5nW107XG4gIGNhbklucHV0OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgYXNrID0gYXN5bmMgKFxuICB0ZXh0OiBzdHJpbmcsXG4gIHRhbGtJZDogc3RyaW5nLFxuKTogUHJvbWlzZTxSZXN1bHQ8QW5zd2VyLCBSZXNwb25zZUVycm9yIHwgR01GZXRjaE5vdEF2YWlsYWJsZUVycm9yPj4gPT4ge1xuICBpZiAoIXdpbmRvdy5HTV9mZXRjaCkge1xuICAgIHJldHVybiB7IG9rOiBmYWxzZSwgdmFsdWU6IHsgbmFtZTogXCJHTUZldGNoTm90QXZhaWxhYmxlRXJyb3JcIiB9IH07XG4gIH1cblxuICBjb25zdCByZXMgPSBhd2FpdCB3aW5kb3cuR01fZmV0Y2goYCR7QVBJUk9PVH13ZWIvYCwge1xuICAgIG1vZGU6IFwiY29yc1wiLFxuICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyB1c2VyOiBcIm5vYm9keVwiLCB0YWxrOiB0YWxrSWQsIHRleHQgfSksXG4gICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICB9KTtcblxuICBpZiAoIXJlcy5vaykgcmV0dXJuIHsgb2s6IGZhbHNlLCB2YWx1ZTogeyBuYW1lOiBcIlJlc3BvbnNlRXJyb3JcIiwgcmVzIH0gfTtcblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgcmV0dXJuIHtcbiAgICBvazogdHJ1ZSxcbiAgICB2YWx1ZTogeyB0ZXh0OiBkYXRhLnRleHQsIGJ1dHRvbnM6IGRhdGEuYnV0dG9ucywgY2FuSW5wdXQ6IGRhdGEuY2FuX2lucHV0IH0sXG4gIH07XG59O1xuIiwgImltcG9ydCB7IGVkaXRvciwgdGFrZUN1cnNvciB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtZG9tLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uIHtcbiAgdGV4dDogc3RyaW5nO1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3B1cE1lbnVCYXIge1xuICByZW5kZXI6ICguLi5idXR0b25zOiBCdXR0b25bXSkgPT4gdm9pZDtcbiAgdmlzaWJsZTogKCkgPT4gYm9vbGVhbjtcbiAgb3BlbjogKCkgPT4gdm9pZDtcbiAgY2xvc2U6ICgpID0+IHZvaWQ7XG4gIHRvZ2dsZTogKCkgPT4gdm9pZDtcbiAgZGlzcG9zZTogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBQb3B1cE1lbnXjgYvjgonkuInop5LlvaLjgpLlj5bjgorpmaTjgYTjgZ/jgojjgYbjgarjgoLjga7jgpLjgqvjg7zjgr3jg6vjga7jgZnjgZDkuIvjgavooajnpLrjgZnjgotcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVBvcHVwTWVudUJhciA9ICgpID0+IHtcbiAgY29uc3QgeyBwb3B1cE1lbnUsIHJlbmRlciB9ID0gY3JlYXRlUG9wdXBDb250YWluZXIoKTtcbiAgZWRpdG9yKCk/LmFwcGVuZD8uKHBvcHVwTWVudSk7XG5cbiAgY29uc3QgY3Vyc29yID0gdGFrZUN1cnNvcigpO1xuICBjb25zdCBjYWxsYmFjayA9ICgpID0+IHtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgY29uc3QgY3Vyc29yRE9NID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcbiAgICAgICAgXCJjdXJzb3JcIixcbiAgICAgIClbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBwb3B1cE1lbnUuc3R5bGUudG9wID0gYCR7XG4gICAgICAgIHBhcnNlSW50KGN1cnNvckRPTS5zdHlsZS50b3ApICtcbiAgICAgICAgcGFyc2VJbnQoY3Vyc29yRE9NLnN0eWxlLmhlaWdodCkgKyA0XG4gICAgICB9cHhgO1xuICAgIH0pO1xuICB9O1xuICBjdXJzb3IuYWRkQ2hhbmdlTGlzdGVuZXIoY2FsbGJhY2spO1xuXG4gIHJldHVybiB7XG4gICAgcmVuZGVyLFxuICAgIHZpc2libGU6ICgpID0+ICFwb3B1cE1lbnUuaGlkZGVuLFxuICAgIG9wZW46ICgpID0+IHBvcHVwTWVudS5oaWRkZW4gPSBmYWxzZSxcbiAgICBjbG9zZTogKCkgPT4gcG9wdXBNZW51LmhpZGRlbiA9IHRydWUsXG4gICAgdG9nZ2xlOiAoKSA9PiBwb3B1cE1lbnUuaGlkZGVuID0gIXBvcHVwTWVudS5oaWRkZW4sXG4gICAgZGlzcG9zZTogKCkgPT4ge1xuICAgICAgcG9wdXBNZW51LnJlbW92ZSgpO1xuICAgICAgY3Vyc29yLnJlbW92ZUNoYW5nZUxpc3RlbmVyKGNhbGxiYWNrKTtcbiAgICB9LFxuICB9O1xufTtcblxuY29uc3QgY3JlYXRlUG9wdXBDb250YWluZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHBvcHVwTWVudSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGNvbnN0IHNoYWRvd1Jvb3QgPSBwb3B1cE1lbnUuYXR0YWNoU2hhZG93KHsgbW9kZTogXCJvcGVuXCIgfSk7XG4gIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gYFxuICAgIDxzdHlsZT5cbiAgICAgIDpob3N0IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiAwcHg7XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgIHotaW5kZXg6MzAwO1xuICAgICAgICB1c2VyLXNlbGVjdDpub25lO1xuICAgICAgICBmb250LWZhbWlseTpcIk9wZW4gU2Fuc1wiLEhlbHZldGljYSxBcmlhbCxcIkhpcmFnaW5vIFNhbnNcIixzYW5zLXNlcmlmO1xuICAgICAgICBwb2ludGVyLWV2ZW50czpub25lXG4gICAgICB9XG4gICAgICAuYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIG1heC13aWR0aDo3MHZ3O1xuICAgICAgICBtaW4td2lkdGg6ODBweDtcbiAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IzExMTtcbiAgICAgICAgcGFkZGluZzowIDFweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czo0cHg7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOmF1dG9cbiAgICAgIH1cbiAgICAgIGh0bWxbZGF0YS1vcyo9J2FuZHJvaWQnXSAuYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDo5MHZ3XG4gICAgICB9XG4gICAgICBodG1sW2RhdGEtb3MqPSdpb3MnXSAuYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDo5MHZ3XG4gICAgICB9XG4gICAgICAuYnV0dG9uIHtcbiAgICAgICAgZm9udC1zaXplOjExcHg7XG4gICAgICAgIGNvbG9yOiNlZWU7XG4gICAgICAgIGN1cnNvcjpwb2ludGVyO1xuICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgcGFkZGluZzowIDVweFxuICAgICAgfVxuICAgICAgLmJ1dHRvbjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgYm9yZGVyOjA7XG4gICAgICAgIGJvcmRlci1sZWZ0OjFweCBzb2xpZCAjZWVlXG4gICAgICB9XG4gICAgICAuYnV0dG9uLnNlbGVjdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjojMjIyO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lXG4gICAgICB9XG4gICAgICBodG1sW2RhdGEtb3MqPSdhbmRyb2lkJ10gLmJ1dHRvbiB7XG4gICAgICAgIGZvbnQtc2l6ZToxM3B4O1xuICAgICAgICBwYWRkaW5nOjZweDtcbiAgICAgICAgbWluLXdpZHRoOjEydndcbiAgICAgIH1cbiAgICAgIGh0bWxbZGF0YS1vcyo9J2lvcyddIC5idXR0b257XG4gICAgICAgIGZvbnQtc2l6ZToxM3B4O1xuICAgICAgICBwYWRkaW5nOjZweDtcbiAgICAgICAgbWluLXdpZHRoOjEydndcbiAgICAgIH1cbiAgICAgIC5idXR0b24gZGl2Lmljb24ge1xuICAgICAgICBoZWlnaHQ6MmVtO1xuICAgICAgICBtYXgtd2lkdGg6MTBlbTtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIG92ZXJmbG93OmhpZGRlbjtcbiAgICAgICAgbWFyZ2luLWxlZnQ6MXB4O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjp0b3BcbiAgICAgIH1cbiAgICAgIC5idXR0b24gZGl2Lmljb24gaW1nIHtcbiAgICAgICAgbWF4LWhlaWdodDoxMDAlO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjp1bnNldFxuICAgICAgfVxuICAgIDwvc3R5bGU+XG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250YWluZXJcIj48L2Rpdj5cbiAgYDtcbiAgY29uc3QgYnV0dG9uQ29udGFpbmVyID0gc2hhZG93Um9vdC5sYXN0RWxlbWVudENoaWxkITtcbiAgcmV0dXJuIHtcbiAgICBwb3B1cE1lbnUsXG4gICAgcmVuZGVyOiAoLi4uYnV0dG9uczogQnV0dG9uW10pID0+IHtcbiAgICAgIGJ1dHRvbkNvbnRhaW5lci50ZXh0Q29udGVudCA9IFwiXCI7XG4gICAgICBidXR0b25Db250YWluZXIuYXBwZW5kKC4uLmJ1dHRvbnMubWFwKCh7IHRleHQsIG9uQ2xpY2sgfSkgPT4ge1xuICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBkaXYuY2xhc3NMaXN0LmFkZChcImJ1dHRvblwiKTtcbiAgICAgICAgZGl2LnRleHRDb250ZW50ID0gdGV4dDtcbiAgICAgICAgaWYgKG9uQ2xpY2spIGRpdi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4gb25DbGljaygpKTtcbiAgICAgICAgcmV0dXJuIGRpdjtcbiAgICAgIH0pKTtcbiAgICB9LFxuICB9O1xufTtcbiIsICJpbXBvcnQgeyBBUElST09UIH0gZnJvbSBcIi4vQVBJUk9PVC50c1wiO1xuaW1wb3J0IHsgR01GZXRjaE5vdEF2YWlsYWJsZUVycm9yLCBSZXNwb25zZUVycm9yLCBSZXN1bHQgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIEdNX2ZldGNoOiAodHlwZW9mIGZldGNoKSB8IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBNb2RlID0gXCJub3JtYWxcIiB8IFwiZW1wYXRoeV93cml0aW5nXCIgfCBcIktQVFwiIHwgXCJ2YWx1ZV9oeXBvdGhlc2lzXCI7XG5cbmV4cG9ydCBjb25zdCBnZXROZXdUYWxrSWQgPSBhc3luYyAoXG4gIG1vZGU6IE1vZGUgPSBcIm5vcm1hbFwiLFxuKTogUHJvbWlzZTxSZXN1bHQ8c3RyaW5nLCBSZXNwb25zZUVycm9yIHwgR01GZXRjaE5vdEF2YWlsYWJsZUVycm9yPj4gPT4ge1xuICBpZiAoIXdpbmRvdy5HTV9mZXRjaCkge1xuICAgIHJldHVybiB7IG9rOiBmYWxzZSwgdmFsdWU6IHsgbmFtZTogXCJHTUZldGNoTm90QXZhaWxhYmxlRXJyb3JcIiB9IH07XG4gIH1cblxuICBjb25zdCByZXMgPSBhd2FpdCB3aW5kb3cuR01fZmV0Y2goYCR7QVBJUk9PVH13ZWIvY3JlYXRlLz9tb2RlPSR7bW9kZX1gLCB7XG4gICAgbW9kZTogXCJjb3JzXCIsXG4gIH0pO1xuXG4gIHJldHVybiByZXMub2tcbiAgICA/IHsgb2s6IHRydWUsIHZhbHVlOiBhd2FpdCByZXMudGV4dCgpIH1cbiAgICA6IHsgb2s6IGZhbHNlLCB2YWx1ZTogeyBuYW1lOiBcIlJlc3BvbnNlRXJyb3JcIiwgcmVzIH0gfTtcbn07XG4iLCAiZXhwb3J0IGNvbnN0IG1ha2VTaGFyZVVSTCA9ICh0YWxrSWQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICBgaHR0cHM6Ly9rZWljaG8ubmV0bGlmeS5hcHAvI3RhbGs9JHt0YWxrSWR9YDtcbiIsICIvKiogcGFyc2UgYSByZXBseSBieSBrZWljaG9ib3QgYW5kIGNvbnZlcnQgaXQgdG8gU2NyYXBib3ggc3ludGF4LlxuICpcbiAqIEBwYXJhbSByZXBseSByZXBseSBieSBrZWljaG9ib3RcbiAqIEByZXR1cm4gU2NyYXBib3ggc3ludGF4XG4gKi9cbmV4cG9ydCBjb25zdCBxdWVzdGlvblRvU2NyYXBib3ggPSAocXVlc3Rpb246IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHNwbGl0dGVkID0gcXVlc3Rpb24uc3BsaXQoXCJcXG5cXG5cIik7XG4gIGNvbnN0IHEgPSBzcGxpdHRlZFsxXSA/PyBzcGxpdHRlZFswXTtcbiAgY29uc3QgcXVvdGUgPSBxdWVzdGlvbiA9PT0gc3BsaXR0ZWRbMF0gPyBcIlwiIDogc3BsaXR0ZWRbMF07XG4gIHJldHVybiBxdW90ZSA/IFtxdW90ZS50cmltKCksIHFdLmpvaW4oXCJcXG5cIikgOiBxO1xufTtcbiIsICJpbXBvcnQgeyBpbnNlcnRUZXh0LCB0YWtlQ3Vyc29yLCB0YWtlU2VsZWN0aW9uIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1kb20udHNcIjtcbmltcG9ydCB7IEJhc2VMaW5lIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1zdGQudHNcIjtcblxuLyoqIGBiYXNlYOOBruS4i+OBq+abuOOBjei+vOOCgCAqL1xuZXhwb3J0IGNvbnN0IHdyaXRlQWZ0ZXIgPSBhc3luYyAoXG4gIHRleHQ6IHN0cmluZyxcbiAgYmFzZTogQmFzZUxpbmUsXG4gIGxpbmVObzogbnVtYmVyLFxuKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3QgY3Vyc29yID0gdGFrZUN1cnNvcigpO1xuXG4gIC8vIOaMv+WFpeS9jee9ruOCkuaOouOBmVxuXG4gIC8vIDEuIGJhc2Xjga5pZOOBqOS4gOiHtOOBmeOCi+ihjFxuICBsZXQgaW5zZXJ0Tm8gPSBjdXJzb3IubGluZXMuZmluZEluZGV4KChsaW5lKSA9PiBsaW5lLmlkID09PSBiYXNlLmlkKTtcbiAgaWYgKGluc2VydE5vIDwgMCkge1xuICAgIC8vIDIuIGJhc2Xjga50ZXh044Go5LiA6Ie044GZ44KL6KGMXG4gICAgaW5zZXJ0Tm8gPSBjdXJzb3IubGluZXMuZmluZEluZGV4KChsaW5lKSA9PiBsaW5lLnRleHQgPT09IGJhc2UudGV4dCk7XG4gIH1cbiAgaWYgKGluc2VydE5vIDwgMCkge1xuICAgIC8vIDMuIGJhc2Xjga7ooYznlarlj7fjgYvjgonmjqjlrprjgZnjgotcbiAgICBpbnNlcnRObyA9IE1hdGgubWluKGxpbmVObywgTWF0aC5tYXgoMCwgY3Vyc29yLmxpbmVzLmxlbmd0aCAtIDEpKTtcbiAgfVxuXG4gIC8v5pu444GN6L6844KAXG4gIGNvbnN0IHByZXZUZXh0ID0gY3Vyc29yLmxpbmVzW2luc2VydE5vXS50ZXh0O1xuICB0YWtlU2VsZWN0aW9uKCkuY2xlYXIoKTtcbiAgY3Vyc29yLnNldFBvc2l0aW9uKHsgbGluZTogaW5zZXJ0Tm8sIGNoYXI6IFsuLi5wcmV2VGV4dF0ubGVuZ3RoIH0pO1xuICBhd2FpdCBpbnNlcnRUZXh0KGBcXG4ke3RleHR9YCk7XG5cbiAgcmV0dXJuIGN1cnNvci5nZXRQb3NpdGlvbigpLmxpbmU7XG59O1xuIiwgImltcG9ydCB7IE5vZGUsIHBhcnNlIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1wYXJzZXIudHNcIjtcblxuLyoqIHB1cmdlIHNjcmFwYm94IHN5bnRheFxuICpcbiAqIEBwYXJhbSB0ZXh0IHRleHQgdG8gcHVyZ2VcbiAqIEByZXR1cm4gcGxhaW4gdGV4dFxuICovXG5leHBvcnQgY29uc3QgbWFrZVBsYWluID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICBwYXJzZSh0ZXh0LCB7IGhhc1RpdGxlOiBmYWxzZSB9KVxuICAgIC5tYXAoKGJsb2NrKSA9PiB7XG4gICAgICBpZiAoYmxvY2sudHlwZSA9PT0gXCJ0aXRsZVwiKSByZXR1cm4gYmxvY2sudGV4dC50cmltRW5kKCk7XG4gICAgICBjb25zdCBpbmRlbnQgPSBcIiBcIi5yZXBlYXQoYmxvY2suaW5kZW50KTtcbiAgICAgIHN3aXRjaCAoYmxvY2sudHlwZSkge1xuICAgICAgICBjYXNlIFwiY29kZUJsb2NrXCI6XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIGAke2luZGVudH0ke2Jsb2NrLmZpbGVOYW1lfWAsXG4gICAgICAgICAgICAuLi5ibG9jay5jb250ZW50LnNwbGl0KFwiXFxuXCIpLm1hcCgobGluZSkgPT4gYCR7aW5kZW50fSAke2xpbmV9YCksXG4gICAgICAgICAgXS5qb2luKFwiXFxuXCIpLnRyaW1FbmQoKTtcbiAgICAgICAgY2FzZSBcInRhYmxlXCI6XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIGAke2luZGVudH0ke2Jsb2NrLmZpbGVOYW1lfWAsXG4gICAgICAgICAgICAuLi5ibG9jay5jZWxscy5tYXAoKHJvdykgPT5cbiAgICAgICAgICAgICAgYCR7aW5kZW50fSAke1xuICAgICAgICAgICAgICAgIHJvdy5mbGF0TWFwKChjZWxsKSA9PiBjZWxsLm1hcCgobm9kZSkgPT4gcGxhaW5Ob2RlKG5vZGUpKSkuam9pbihcbiAgICAgICAgICAgICAgICAgIFwiXFx0XCIsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdLmpvaW4oXCJcXG5cIikudHJpbUVuZCgpO1xuICAgICAgICBjYXNlIFwibGluZVwiOlxuICAgICAgICAgIHJldHVybiBgJHtpbmRlbnR9JHtcbiAgICAgICAgICAgIGJsb2NrLm5vZGVzLm1hcCgobm9kZSkgPT4gcGxhaW5Ob2RlKG5vZGUpKS5qb2luKFwiXCIpXG4gICAgICAgICAgfWAudHJpbUVuZCgpO1xuICAgICAgfVxuICAgIH0pLmpvaW4oXCJcXG5cIik7XG5cbmNvbnN0IHBsYWluTm9kZSA9IChub2RlOiBOb2RlKTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICBjYXNlIFwicXVvdGVcIjpcbiAgICAgIHJldHVybiBgPiAke25vZGUubm9kZXMubWFwKChub2RlKSA9PiBwbGFpbk5vZGUobm9kZSkpLmpvaW4oXCJcIil9YDtcbiAgICBjYXNlIFwiaGVscGZlZWxcIjpcbiAgICBjYXNlIFwiY29tbWFuZExpbmVcIjpcbiAgICAgIHJldHVybiBub2RlLnJhdztcbiAgICBjYXNlIFwic3Ryb25nSW1hZ2VcIjpcbiAgICBjYXNlIFwiaW1hZ2VcIjpcbiAgICBjYXNlIFwic3Ryb25nSWNvblwiOlxuICAgIGNhc2UgXCJpY29uXCI6XG4gICAgY2FzZSBcImdvb2dsZU1hcFwiOlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgY2FzZSBcInN0cm9uZ1wiOlxuICAgIGNhc2UgXCJkZWNvcmF0aW9uXCI6XG4gICAgY2FzZSBcIm51bWJlckxpc3RcIjpcbiAgICAgIHJldHVybiBub2RlLm5vZGVzLm1hcCgobm9kZSkgPT4gcGxhaW5Ob2RlKG5vZGUpKS5qb2luKFwiXCIpO1xuICAgIGNhc2UgXCJmb3JtdWxhXCI6XG4gICAgICByZXR1cm4gYFxcXFwoJHtub2RlLmZvcm11bGF9XFxcXClgO1xuICAgIGNhc2UgXCJjb2RlXCI6XG4gICAgICByZXR1cm4gYCAke25vZGUudGV4dH0gYDtcbiAgICBjYXNlIFwiYmxhbmtcIjpcbiAgICBjYXNlIFwicGxhaW5cIjpcbiAgICAgIHJldHVybiBub2RlLnJhdztcbiAgICBjYXNlIFwiaGFzaFRhZ1wiOlxuICAgICAgcmV0dXJuIG5vZGUuaHJlZjtcbiAgICBjYXNlIFwibGlua1wiOlxuICAgICAgc3dpdGNoIChub2RlLnBhdGhUeXBlKSB7XG4gICAgICAgIGNhc2UgXCJhYnNvbHV0ZVwiOlxuICAgICAgICAgIHJldHVybiBub2RlLmNvbnRlbnQgPyBgICR7bm9kZS5jb250ZW50fSBgIDogXCJcIjtcbiAgICAgICAgY2FzZSBcInJvb3RcIjpcbiAgICAgICAgICByZXR1cm4gbm9kZS5ocmVmLnNwbGl0KFwiL1wiKS5wb3AoKSA/PyBcIlwiO1xuICAgICAgICBjYXNlIFwicmVsYXRpdmVcIjpcbiAgICAgICAgICByZXR1cm4gbm9kZS5ocmVmO1xuICAgICAgfVxuICB9XG59O1xuIiwgIi8qKiBEZXRlY3Qgd2hldGhlciBgdGV4dGAgaXMgYSBjb21tZW50IG9yIG5vdCAqL1xuZXhwb3J0IGNvbnN0IGlzQ29tbWVudCA9ICh0ZXh0OiBzdHJpbmcpOiBib29sZWFuID0+IC9eWyjvvIhdLy50ZXN0KHRleHQpO1xuIiwgImltcG9ydCB7IEFuc3dlciwgYXNrIH0gZnJvbSBcIi4vYXNrLnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3B1cE1lbnVCYXIgfSBmcm9tIFwiLi9wb3B1cEJhci50c1wiO1xuaW1wb3J0IHsgaW5zZXJ0VGV4dCwgU2NyYXBib3gsIHRha2VTdG9yZXMgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LWRvbS50c1wiO1xuaW1wb3J0IHtcbiAgQmFzZUxpbmUsXG4gIGdldEluZGVudENvdW50LFxuICBnZXRJbmRlbnRMaW5lQ291bnQsXG59IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5pbXBvcnQgeyBnZXROZXdUYWxrSWQsIE1vZGUgfSBmcm9tIFwiLi9nZXROZXdUYWxrSWQudHNcIjtcbmltcG9ydCB7IG1ha2VTaGFyZVVSTCB9IGZyb20gXCIuL21ha2VTaGFyZVVSTC50c1wiO1xuaW1wb3J0IHsgcXVlc3Rpb25Ub1NjcmFwYm94IH0gZnJvbSBcIi4vcXVlc3Rpb25Ub1NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyB3cml0ZUFmdGVyIH0gZnJvbSBcIi4vd3JpdGVBZnRlci50c1wiO1xuaW1wb3J0IHsgbWFrZVBsYWluIH0gZnJvbSBcIi4vbWFrZVBsYWluLnRzXCI7XG5pbXBvcnQgeyBpc0NvbW1lbnQgfSBmcm9tIFwiLi9pc0NvbW1lbnQudHNcIjtcbmltcG9ydCB7IEdNRmV0Y2hOb3RBdmFpbGFibGVFcnJvciwgUmVzcG9uc2VFcnJvciwgUmVzdWx0IH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0VGFsa0luaXQge1xuICB0YWxrSWQ/OiBzdHJpbmc7XG4gIGJvdEljb24/OiBzdHJpbmc7XG4gIG1vZGU/OiBNb2RlO1xuICBlbnRpcmU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0VGFsa1Jlc3VsdCB7XG4gIGFzazogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgb3BlbjogKCkgPT4gdm9pZDtcbiAgY2xvc2U6ICgpID0+IHZvaWQ7XG4gIHZpc2libGU6ICgpID0+IGJvb2xlYW47XG4gIGV4aXQ6ICgpID0+IHZvaWQ7XG4gIG9uRXhpdDogKGxpc3RlbmVyOiAoKSA9PiB2b2lkKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3Qgc3RhcnRUYWxrID0gYXN5bmMgKFxuICBpbml0PzogU3RhcnRUYWxrSW5pdCxcbik6IFByb21pc2U8U3RhcnRUYWxrUmVzdWx0IHwgdW5kZWZpbmVkPiA9PiB7XG4gIGNvbnN0IGxpbmVzID0gc2NyYXBib3guUGFnZS5saW5lcztcbiAgaWYgKCFsaW5lcykgcmV0dXJuO1xuICBjb25zdCB7IGN1cnNvciwgc2VsZWN0aW9uIH0gPSB0YWtlU3RvcmVzKCk7XG4gIGNvbnN0IHNlbGVjdEFsbCA9IGluaXQ/LmVudGlyZSB8fCBzZWxlY3Rpb24uaGFzU2VsZWN0aW9uQWxsKCk7XG4gIGNvbnN0IGluaXRpYWxUZXh0ID0gc2VsZWN0QWxsXG4gICAgPyBsaW5lcy5tYXAoKGxpbmUpID0+IGxpbmUudGV4dCkuam9pbihcIlxcblwiKVxuICAgIDogc2VsZWN0aW9uLmdldFNlbGVjdGVkVGV4dCgpO1xuXG4gIGNvbnN0IGJvdEljb24gPSBpbml0Py5ib3RJY29uID8/IFwiWy9uaXNoaW8vbmlzYm90Lmljb25dXCI7XG5cbiAgY29uc3QgeyByZW5kZXIsIHZpc2libGUsIG9wZW4sIGNsb3NlLCBkaXNwb3NlIH0gPSBjcmVhdGVQb3B1cE1lbnVCYXIoKTtcbiAgY2xvc2UoKTtcblxuICBjb25zdCBsaXN0ZW5lcnMgPSBuZXcgU2V0PCgpID0+IHZvaWQ+KCk7XG4gIGNvbnN0IGV4aXQgPSAoKSA9PiB7XG4gICAgZGlzcG9zZSgpO1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgbGlzdGVuZXJzKSBsaXN0ZW5lcigpO1xuICB9O1xuICBjb25zdCBvbkV4aXQgPSAobGlzdGVuZXI6ICgpID0+IHZvaWQpID0+IGxpc3RlbmVycy5hZGQobGlzdGVuZXIpO1xuXG4gIGNvbnN0IEV4aXQgPSB7XG4gICAgdGV4dDogXCJFeGl0XCIsXG4gICAgb25DbGljazogZXhpdCxcbiAgfTtcblxuICBsZXQgdGFsa0lkXyA9IGluaXQ/LnRhbGtJZCB8fCBmaW5kVGFsa0lkKGluaXRpYWxUZXh0KSB8fFxuICAgIChzZWxlY3RBbGwgPyBcIlwiIDogZmluZFRhbGtJZChcbiAgICAgIGxpbmVzLnNsaWNlKDAsIDEgKyBjdXJzb3IuZ2V0UG9zaXRpb24oKS5saW5lKS5tYXAoKGxpbmUpID0+IGxpbmUudGV4dClcbiAgICAgICAgLmpvaW4oXCJcXG5cIiksXG4gICAgKSk7XG4gIGNvbnN0IG5ld1RhbGtJZCA9ICF0YWxrSWRfO1xuICBpZiAoIXRhbGtJZF8pIHtcbiAgICBjb25zdCBwZW5kaW5nID0gZ2V0TmV3VGFsa0lkKGluaXQ/Lm1vZGUpO1xuICAgIGxldCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgcmVuZGVyKHsgdGV4dDogXCJTdGFydCB0YWxraW5nLi4uXCIgfSk7XG4gICAgICBvcGVuKCk7XG4gICAgICBsZXQgaSA9IDA7XG4gICAgICB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgcmVuZGVyKHsgdGV4dDogYFN0YXJ0IHRhbGtpbmcke1wiLlwiLnJlcGVhdChpICUgMyl9YCB9KTtcbiAgICAgICAgaSsrO1xuICAgICAgfSwgMTAwMCk7XG4gICAgfSwgMTAwMCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGVuZGluZztcbiAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuXG4gICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgIGlmIChyZXN1bHQudmFsdWUubmFtZSA9PT0gXCJHTUZldGNoTm90QXZhaWxhYmxlRXJyb3JcIikge1xuICAgICAgICBhbGVydChcbiAgICAgICAgICBcImBHTV9mZXRjaGAgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIHVzZSBUYW1wZXJtb25rZXkgYW5kIGluc3RhbGwgYEdNX2ZldGhjYC5cIixcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdC52YWx1ZS5uYW1lID09PSBcIlJlc3BvbnNlRXJyb3JcIikge1xuICAgICAgICByZW5kZXIoe1xuICAgICAgICAgIHRleHQ6XG4gICAgICAgICAgICBgRXJyb3I6ICR7cmVzdWx0LnZhbHVlLnJlcy5zdGF0dXN9ICR7cmVzdWx0LnZhbHVlLnJlcy5zdGF0dXNUZXh0fWAsXG4gICAgICAgIH0sIEV4aXQpO1xuICAgICAgICBvcGVuKCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYEVycm9yOiAke3Jlc3VsdC52YWx1ZS5yZXMuc3RhdHVzfSAke3Jlc3VsdC52YWx1ZS5yZXMuc3RhdHVzVGV4dH1gLFxuICAgICAgICAgIGF3YWl0IHJlc3VsdC52YWx1ZS5yZXMudGV4dCgpLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGFsa0lkXyA9IHJlc3VsdC52YWx1ZTtcbiAgfVxuXG4gIC8qKiB0YWxrIElEICovXG4gIGNvbnN0IHRhbGtJZCA9IHRhbGtJZF87XG4gIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLm5vcm1hbGl6ZU9yZGVyKHNlbGVjdGlvbi5nZXRSYW5nZSgpKTtcbiAgbGV0IGxhc3RJbnNlcnRlZE5vID0gc2VsZWN0QWxsID8gbGluZXMubGVuZ3RoIC0gMSA6IHJhbmdlLmVuZC5saW5lO1xuICBsZXQgbGFzdEluc2VydGVkTGluZTogQmFzZUxpbmUgPSBsaW5lc1tsYXN0SW5zZXJ0ZWROb107XG4gIGxldCBpbmRlbnQgPSBzZWxlY3RBbGwgPyBcIlwiIDogXCIgXCIucmVwZWF0KFxuICAgIE1hdGgubWluKFxuICAgICAgLi4ubGluZXMuc2xpY2UocmFuZ2Uuc3RhcnQubGluZSwgcmFuZ2UuZW5kLmxpbmUgKyAxKS5tYXAoKGxpbmUpID0+XG4gICAgICAgIGdldEluZGVudENvdW50KGxpbmUudGV4dClcbiAgICAgICksXG4gICAgKSxcbiAgKTtcblxuICBjb25zdCBzZW5kID0gYXN5bmMgKGFuc3dlcjogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXNrKGFuc3dlciwgdGFsa0lkKTtcbiAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgc3dpdGNoIChyZXN1bHQudmFsdWUubmFtZSkge1xuICAgICAgICBjYXNlIFwiUmVzcG9uc2VFcnJvclwiOlxuICAgICAgICAgIHJlbmRlcih7XG4gICAgICAgICAgICB0ZXh0OlxuICAgICAgICAgICAgICBgRXJyb3I6ICR7cmVzdWx0LnZhbHVlLnJlcy5zdGF0dXN9ICR7cmVzdWx0LnZhbHVlLnJlcy5zdGF0dXNUZXh0fWAsXG4gICAgICAgICAgfSwgRXhpdCk7XG4gICAgICAgICAgb3BlbigpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgRXJyb3I6ICR7cmVzdWx0LnZhbHVlLnJlcy5zdGF0dXN9ICR7cmVzdWx0LnZhbHVlLnJlcy5zdGF0dXNUZXh0fWAsXG4gICAgICAgICAgICBhd2FpdCByZXN1bHQudmFsdWUucmVzLnRleHQoKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIGNhc2UgXCJHTUZldGNoTm90QXZhaWxhYmxlRXJyb3JcIjpcbiAgICAgICAgICBhbGVydChcbiAgICAgICAgICAgIFwiYEdNX2ZldGNoYCBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgdXNlIFRhbXBlcm1vbmtleSBhbmQgaW5zdGFsbCBgR01fZmV0aGNgLlwiLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvKiog5YmN5Zue6YCB5L+h44GX44Gf5Zue562U44GM44Kz44Oh44Oz44OI44Gu44G/44Gu5aC05ZCI44Gv44CB6YeN6KSH6YCB5L+h44KS6Ziy44GQ44Gf44KB44Gd44KM44KS6Kaa44GI44Gm44GK44GPICovXG4gIGxldCBjb21tZW50TGFzdFNlbnQgPSBcIlwiO1xuICBjb25zdCBzZW5kTXVsdGlwbGUgPSBhc3luYyAoYW5zd2VyOiBzdHJpbmcpID0+IHtcbiAgICBsZXQgcGxhaW4gPSBtYWtlUGxhaW4oYW5zd2VyKVxuICAgICAgLy8g56m655m944Go56m66KGM44KS5YmK6Zmk44GZ44KLXG4gICAgICAuc3BsaXQoXCJcXG5cIikubWFwKChsaW5lKSA9PiBsaW5lLnRyaW0oKSkuam9pbihcIlxcblwiKS50cmltKCk7XG4gICAgLy8g6YCB5L+h5riI44G/44GuY29tbWVudHPjgpLliYrpmaRcbiAgICBpZiAocGxhaW4uc3RhcnRzV2l0aChjb21tZW50TGFzdFNlbnQpKSB7XG4gICAgICBwbGFpbiA9IHBsYWluLnNsaWNlKGNvbW1lbnRMYXN0U2VudC5sZW5ndGgpO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmVzID0gcGxhaW4uc3BsaXQoXCJcXG5cIik7XG4gICAgaWYgKGxpbmVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGlmIChsaW5lcy5ldmVyeSgobGluZSkgPT4gaXNDb21tZW50KGxpbmUpKSkge1xuICAgICAgY29tbWVudExhc3RTZW50ID0gcGxhaW47XG4gICAgfVxuXG4gICAgLy8g5YWo44Gm44Kz44Oh44Oz44OI44GL44CBMeihjOOBoOOBkeWbnuetlOOBjOOBguOCi+WgtOWQiOOBr+OAgeOBneOBruOBvuOBvumAgeS/oeOBmeOCi1xuICAgIGNvbnN0IGFuc3dlckxpbmVzID0gbGluZXMuZmlsdGVyKChsaW5lKSA9PiAhaXNDb21tZW50KGxpbmUpKTtcbiAgICBpZiAoYW5zd2VyTGluZXMubGVuZ3RoIDwgMikge1xuICAgICAgbGV0IHF1ZXN0aW9uOlxuICAgICAgICB8IFJlc3VsdDxBbnN3ZXIsIFJlc3BvbnNlRXJyb3IgfCBHTUZldGNoTm90QXZhaWxhYmxlRXJyb3I+XG4gICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IHJlc3VsdDogUmVzdWx0PEFuc3dlciwgUmVzcG9uc2VFcnJvciB8IEdNRmV0Y2hOb3RBdmFpbGFibGVFcnJvcj47XG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgc2VuZChsaW5lKTtcbiAgICAgICAgaWYgKCFyZXN1bHQub2spIHJldHVybiByZXN1bHQ7XG4gICAgICAgIGlmICghaXNDb21tZW50KGxpbmUpKSBxdWVzdGlvbiA9IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBxdWVzdGlvbiA/PyByZXN1bHQhO1xuICAgIH1cblxuICAgIC8vIOWbnuetlOOBjDLooYzku6XkuIrjgYLjgovloLTlkIjjga/nm7jmp4zjg6Ljg7zjg4njgpLkvb/jgYZcbiAgICBsZXQgaW5kZXggPSAwO1xuICAgIHtcbiAgICAgIGxldCByZXN1bHQ6IFJlc3VsdDxBbnN3ZXIsIFJlc3BvbnNlRXJyb3IgfCBHTUZldGNoTm90QXZhaWxhYmxlRXJyb3I+O1xuICAgICAgLy8g5YWI6aCt44GuY29tbWVudHPjga/jgZ3jga7jgb7jgb7pgIHkv6HjgZnjgotcbiAgICAgIGZvciAoOyBpbmRleCA8IGxpbmVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBpZiAoIWlzQ29tbWVudChsaW5lc1tpbmRleF0pKSBicmVhaztcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgc2VuZChsaW5lc1tpbmRleF0pO1xuICAgICAgICBpZiAoIXJlc3VsdC5vaykgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2VuZChcIuOBvuOBmuiBnuOBhOOBplwiKTtcbiAgICAgIGlmICghcmVzdWx0Lm9rKSByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBmb3IgKDsgaW5kZXggPCBsaW5lcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGlmIChpc0NvbW1lbnQobGluZXNbaW5kZXhdKSkgYnJlYWs7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZW5kKGxpbmVzW2luZGV4XSk7XG4gICAgICBpZiAoIXJlc3VsdC5vaykgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHNlbmQoXCLjgYrjgZfjgb7jgYRcIik7XG4gIH07XG5cbiAgY29uc3Qgc2VuZEFuZFdyaXRlID0gYXN5bmMgKGFuc3dlcjogc3RyaW5nKSA9PiB7XG4gICAgaWYgKHNjcmFwYm94LkxheW91dCAhPT0gXCJwYWdlXCIpIHJldHVybjtcbiAgICBpZiAoYW5zd2VyID09PSBcIlwiKSByZXR1cm47XG4gICAgY29uc3QgcGVuZGluZyA9IHNlbmRNdWx0aXBsZShhbnN3ZXIpO1xuICAgIC8vIOaZgumWk+OBjOOBi+OBi+OCi+OCiOOBhuOBp+OBguOCjOOBsOiqreOBv+i+vOOBv+S4reihqOekuuOCkuOBmeOCi1xuICAgIGxldCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgcmVuZGVyKHsgdGV4dDogXCJBc2tpbmcuLi5cIiB9KTtcbiAgICAgIG9wZW4oKTtcbiAgICAgIGxldCBpID0gMDtcbiAgICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICByZW5kZXIoeyB0ZXh0OiBgQXNraW5nJHtcIi5cIi5yZXBlYXQoaSAlIDMpfWAgfSk7XG4gICAgICAgIGkrKztcbiAgICAgIH0sIDEwMDApO1xuICAgIH0sIDEwMDApO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBlbmRpbmc7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICBpZiAoIXJlc3VsdCkgcmV0dXJuO1xuICAgIGlmICghcmVzdWx0Lm9rKSByZXR1cm47XG5cbiAgICBjb25zdCB7IHRleHQ6IHF1ZXN0aW9uLCBidXR0b25zIH0gPSByZXN1bHQudmFsdWU7XG4gICAgY29uc3QgZm9ybWF0dGVkID0gcXVlc3Rpb25Ub1NjcmFwYm94KHF1ZXN0aW9uKTtcbiAgICBpZiAoZm9ybWF0dGVkLnRyaW0oKSkge1xuICAgICAgY29uc3QgYm90VGFsayA9IGAke2luZGVudH0ke2JvdEljb259JHtcbiAgICAgICAgZm9ybWF0dGVkLmluY2x1ZGVzKFwiXFxuXCIpXG4gICAgICAgICAgPyBgXFxuJHtcbiAgICAgICAgICAgIGZvcm1hdHRlZC5zcGxpdChcIlxcblwiKS5tYXAoKGxpbmUpID0+IGAgJHtpbmRlbnR9JHtsaW5lfWApLmpvaW4oXCJcXG5cIilcbiAgICAgICAgICB9YFxuICAgICAgICAgIDogZm9ybWF0dGVkXG4gICAgICB9XFxuJHtpbmRlbnR9YDtcblxuICAgICAgbGFzdEluc2VydGVkTm8gPSBhd2FpdCB3cml0ZUFmdGVyKFxuICAgICAgICBib3RUYWxrLFxuICAgICAgICBsYXN0SW5zZXJ0ZWRMaW5lLFxuICAgICAgICBsYXN0SW5zZXJ0ZWRObyxcbiAgICAgICk7XG4gICAgICBsYXN0SW5zZXJ0ZWRMaW5lID0gbGluZXNbbGFzdEluc2VydGVkTm9dO1xuICAgIH1cblxuICAgIHJlbmRlcihcbiAgICAgIHtcbiAgICAgICAgdGV4dDogXCJTZW5kXCIsXG4gICAgICAgIG9uQ2xpY2s6IGFza18sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0ZXh0OiBcIvCfmYJcIixcbiAgICAgICAgb25DbGljazogKCkgPT4gaW5zZXJ0VGV4dChcIvCfmYJcIiksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0ZXh0OiBcIvCfmYFcIixcbiAgICAgICAgb25DbGljazogKCkgPT4gaW5zZXJ0VGV4dChcIvCfmYFcIiksXG4gICAgICB9LFxuICAgICAgLi4uYnV0dG9ucy5tYXAoKGJ1dHRvbikgPT4gKHtcbiAgICAgICAgdGV4dDogYnV0dG9uLFxuICAgICAgICBvbkNsaWNrOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgbGFzdEluc2VydGVkTm8gPSBhd2FpdCB3cml0ZUFmdGVyKFxuICAgICAgICAgICAgYnV0dG9uLFxuICAgICAgICAgICAgbGFzdEluc2VydGVkTGluZSxcbiAgICAgICAgICAgIGxhc3RJbnNlcnRlZE5vLFxuICAgICAgICAgICk7XG4gICAgICAgICAgbGFzdEluc2VydGVkTGluZSA9IGxpbmVzW2xhc3RJbnNlcnRlZE5vXTtcblxuICAgICAgICAgIGF3YWl0IHNlbmRBbmRXcml0ZShidXR0b24pO1xuICAgICAgICB9LFxuICAgICAgfSkpLFxuICAgICAgRXhpdFxuICAgICk7XG4gICAgb3BlbigpO1xuICB9O1xuXG4gIGNvbnN0IGFza18gPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKHNjcmFwYm94LkxheW91dCAhPT0gXCJwYWdlXCIpIHJldHVybjtcbiAgICBjb25zdCBsaW5lcyA9IHNjcmFwYm94LlBhZ2UubGluZXM7XG4gICAgY29uc3QgY3Vyc29yTGluZU5vID0gY3Vyc29yLmdldFBvc2l0aW9uKCkubGluZTtcbiAgICBjb25zdCBbYW5zd2VyLCBzdGFydExpbmVObywgZW5kTGluZU5vXSA9IHJlYWRBbnN3ZXIoXG4gICAgICBsaW5lcyxcbiAgICAgIGN1cnNvckxpbmVObyxcbiAgICAgIGJvdEljb24sXG4gICAgKTtcbiAgICBpZiAoYW5zd2VyID09PSBcIlwiKSByZXR1cm47XG5cbiAgICBsYXN0SW5zZXJ0ZWRObyA9IGVuZExpbmVObztcbiAgICBsYXN0SW5zZXJ0ZWRMaW5lID0gbGluZXNbbGFzdEluc2VydGVkTm9dO1xuICAgIGluZGVudCA9IFwiIFwiLnJlcGVhdChcbiAgICAgIE1hdGgubWluKFxuICAgICAgICAuLi5saW5lcy5zbGljZShzdGFydExpbmVObywgZW5kTGluZU5vICsgMSkubWFwKChsaW5lKSA9PlxuICAgICAgICAgIGdldEluZGVudENvdW50KGxpbmUudGV4dClcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKTtcblxuICAgIGF3YWl0IHNlbmRBbmRXcml0ZShhbnN3ZXIpO1xuICB9O1xuXG4gIGlmIChuZXdUYWxrSWQpIHtcbiAgICBsYXN0SW5zZXJ0ZWRObyA9IGF3YWl0IHdyaXRlQWZ0ZXIoXG4gICAgICBtYWtlU2hhcmVVUkwodGFsa0lkKSxcbiAgICAgIGxhc3RJbnNlcnRlZExpbmUsXG4gICAgICBsYXN0SW5zZXJ0ZWRObyxcbiAgICApO1xuICAgIGxhc3RJbnNlcnRlZExpbmUgPSBsaW5lc1tsYXN0SW5zZXJ0ZWROb107XG4gIH1cbiAgYXdhaXQgc2VuZEFuZFdyaXRlKGluaXRpYWxUZXh0KTtcblxuICByZXR1cm4geyBhc2s6IGFza18sIG9wZW4sIGNsb3NlLCB2aXNpYmxlLCBleGl0LCBvbkV4aXQgfTtcbn07XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSB0YWxrIElEIGZyb20gdGhlIHNlbGVjdGVkIHN0cmluZy4gVGhlIGxhc3QgdGFsayBJRCBpcyBzZWxlY3RlZC5cbiAqIEBwYXJhbSBzZWxlY3RlZCAtIFRoZSBzZWxlY3RlZCBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgdGFsayBJRC5cbiAqL1xuY29uc3QgZmluZFRhbGtJZCA9IChzZWxlY3RlZDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgZm9yIChjb25zdCBsaW5lIG9mIHNlbGVjdGVkLnNwbGl0KFwiXFxuXCIpLnJldmVyc2UoKSkge1xuICAgIGNvbnN0IHRhbGtJZCA9IGxpbmUubWF0Y2goL2h0dHBzPzpcXC9cXC9rZWljaG9cXC5uZXRsaWZ5XFwuYXBwXFwvI3RhbGs9KFxcdyspLylcbiAgICAgID8uWzFdO1xuICAgIGlmICh0YWxrSWQpIHJldHVybiB0YWxrSWQ7XG4gIH1cbn07XG5cbmNvbnN0IHJlYWRBbnN3ZXIgPSA8TGluZSBleHRlbmRzIEJhc2VMaW5lPihcbiAgbGluZXM6IExpbmVbXSxcbiAgZW5kTGluZU5vOiBudW1iZXIsXG4gIGJvdEljb246IHN0cmluZyxcbik6IFtzdHJpbmcsIG51bWJlciwgbnVtYmVyXSA9PiB7XG4gIGNvbnN0IGljb25MaW5lTm8gPSBNYXRoLm1heChcbiAgICBsaW5lcy5maW5kTGFzdEluZGV4KChsaW5lLCBpbmRleCkgPT5cbiAgICAgIGluZGV4IDwgZW5kTGluZU5vICYmIGxpbmUudGV4dC50cmltKCkuc3RhcnRzV2l0aChib3RJY29uKVxuICAgICksXG4gICAgLy8g44Ki44Kk44Kz44Oz6KGM44GM44Gq44GR44KM44Gw44CB44K/44Kk44OI44Or44Gu5qyh44Gu6KGM44GL44KJ44OG44Kt44K544OI44KS5Y+W5b6X44GZ44KLXG4gICAgMSxcbiAgKTtcbiAgLy8g44G244KJ5LiL44GM44Gj44Gm44GE44KL6KGM44Gv5ZCr44KB44Gq44GEXG4gIGNvbnN0IHN0YXJ0TGluZU5vID0gaWNvbkxpbmVObyArIGdldEluZGVudExpbmVDb3VudChpY29uTGluZU5vLCBsaW5lcykgK1xuICAgIC8vIOOCouOCpOOCs+ODs+ihjOOCkumZpOOBj1xuICAgIDE7XG5cbiAgcmV0dXJuIFtcbiAgICBsaW5lcy5zbGljZShzdGFydExpbmVObywgZW5kTGluZU5vICsgMSkubWFwKChsaW5lKSA9PiBsaW5lLnRleHQudHJpbSgpKVxuICAgICAgLmpvaW4oXCJcXG5cIikudHJpbSgpLFxuICAgIHN0YXJ0TGluZU5vLFxuICAgIGVuZExpbmVObyxcbiAgXTtcbn07XG4iLCAiaW1wb3J0IFwiLi4vdW5saW5rX1BvcHVwX21lbnUvc2NyaXB0LnRzXCI7XG5cbmltcG9ydCB0eXBlIHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vc2NyYXBib3gtanAlMkZ0eXBlcy91c2Vyc2NyaXB0LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuLy8g6YG45oqe56+E5Zuy44Gr5LiL57ea44KS5byV44GPXG5zY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcblx0dGl0bGU6ICdcXHVmMGNkJyxcbiBcdG9uQ2xpY2s6IHRleHQgPT4gYFtfICR7dGV4dH1dYFxufSk7XG4gXG5zY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcblx0dGl0bGU6IFwiXFx1ZjY5OFwiLFxuIFx0b25DbGljazogdGV4dCA9PiBgWyQgJHt0ZXh0fV1gXG59KTtcbiBcbmltcG9ydCBcIi4uL+mVt+OBhOOCv+OCpOODiOODq+OCkuWIu+OCgOODmuODvOOCuOOCkuewoeWNmOOBq+S9nOOCjOOCi1VzZXJTY3JpcHQvbWFpbi50c1wiO1xuaW1wb3J0IHsgbWFrZU5ld1BhZ2UgfSBmcm9tIFwiLi4vY3VzdG9tLW5ldy1wYWdlL21vZC50c1wiO1xuaW1wb3J0IHtcbiAgbmV3UGFnZUhvb2ssXG4gIHNwbGl0dGVkTGlua0hvb2ssXG4gIHRhc2tMaW5lSG9vayxcbn0gZnJvbSBcIi4uL2Zvci1jdXN0b20tbmV3LXBhZ2UvbW9kLnRzXCI7XG5cbmNvbnN0IGhvb2tzID0gW3Rhc2tMaW5lSG9vaywgbmV3UGFnZUhvb2ssIHNwbGl0dGVkTGlua0hvb2tdO1xuc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gIHRpdGxlOiAodGV4dCkgPT4ge1xuICAgIGNvbnN0IGhvb2sgPSBtYWtlTmV3UGFnZSh7IHByb2plY3Q6IHNjcmFwYm94LlByb2plY3QubmFtZSwgbW9kZTogXCJub29wZW5cIiwgaG9va3MgfSk7XG4gICAgaWYgKCFob29rIHx8IGhvb2suaG9va05hbWUuaW5jbHVkZXMoXCJkZWZhdWx0XCIpKSByZXR1cm4gXCJcIjtcbiAgICBpZiAoaG9vay5ob29rTmFtZS5pbmNsdWRlcyhcInRhc2tcIikpIHJldHVybiBcIlxcdWYwYzRcXHVmNDZkXCI7XG4gICAgaWYgKGhvb2suaG9va05hbWUuaW5jbHVkZXMoXCJzcGxpdFwiKSkgcmV0dXJuIFwiXFx1ZjBjNFxcdWY1OTVcIjtcbiAgICByZXR1cm4gXCJcXHVmMGM0XCI7XG4gIH0sXG4gIG9uQ2xpY2s6ICgpID0+IHtcbiAgICBjb25zdCBwcm9qZWN0ID0gd2luZG93LnByb21wdChcIkNyZWF0ZSBhIG5ldyBwYWdlIGF0XCIsIHNjcmFwYm94LlByb2plY3QubmFtZSk7XG4gICAgaWYgKCFwcm9qZWN0KSByZXR1cm47XG4gICAgbWFrZU5ld1BhZ2UoeyBwcm9qZWN0LCBtb2RlOiBcIm5vb3BlblwiLCBob29rcyB9KT8uKCk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSxcbn0pO1xuXG57XG4gIC8qKiBmcm9tIHNjcmFwYm94LXBhcnNlciAqL1xuICBzY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcbiAgICB0aXRsZTogKHRleHQpID0+IC8oaHR0cHM/OlxcL1xcL1teXFxzXSspL2cudGVzdCh0ZXh0KSA/IFwiXFx1ZjAzZVwiIDogXCJcIixcbiAgICBvbkNsaWNrOiAodGV4dCkgPT4ge1xuICAgICAgY29uc3QgbmV3VGV4dCA9IHRleHQucmVwbGFjZSgvKGh0dHBzPzpcXC9cXC9bXlxcc10rKS9nLCBcIlskMSMuanBnXVwiKTtcbiAgXHQgIFxuICAgICAgaWYgKHRleHQgPT09IG5ld1RleHQpIHJldHVybjtcbiAgICAgIHJldHVybiBuZXdUZXh0O1xuICAgIH0sXG4gIH0pO1xufVxuXG4vL2ltcG9ydCAnL2FwaS9jb2RlL3NjcmFwYm94bGFiL+OBhOOBhOaEn+OBmOOBq+ODquODs+OCr+OBmeOCi29tYWthc2UtbGlua3Mvc2NyaXB0LmpzJztcblxuLy8g6YG45oqe44GV44KM44Gf5paH5a2X5YiX44KSU2NyYXBib3jjg5fjg63jgrjjgqfjgq/jg4jlhoXjgafmpJzntKLjgZnjgotcbi8vIFNjYXBib3jmpJzntKLjg5zjg4Pjgq/jgrnjgpLkvb/jgaPjgZ/jgajjgY3jgajlkIzjgZjntZDmnpzjg5rjg7zjgrjjgpLplovjgY9cbnNjcmFwYm94LlBvcHVwTWVudS5hZGRCdXR0b24oe1xuICB0aXRsZTogXCJTXCIsXG4gIG9uQ2xpY2s6ICh0ZXh0KSA9PiB7XG4gICAgd2luZG93Lm9wZW4oYGh0dHBzOi8vc2NyYXBib3guaW8vJHtzY3JhcGJveC5Qcm9qZWN0Lm5hbWV9L3NlYXJjaC9wYWdlP3E9JHt0ZXh0fWApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sXG59KTtcblxuc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gIHRpdGxlOiAnXFx1ZjFhMCcsXG4gIG9uQ2xpY2s6IHRleHQgPT4ge1xuICAgIC8vIOiomOazleOCkuino+mZpOOBmeOCi1xuICAgIGNvbnN0IGtleXdvcmQgPSB0ZXh0LnNwbGl0KC9cXG4vKVxuICAgICAgLm1hcChsaW5lID0+IGxpbmUucmVwbGFjZSgvXFxbKC4qKVxcXS9nLCckMScpKS5qb2luKCdcXG4nKTtcbiAgICB3aW5kb3cub3BlbihgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0ke2VuY29kZVVSSUNvbXBvbmVudChrZXl3b3JkKX1gKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59KTtcbnNjcmFwYm94LlBvcHVwTWVudS5hZGRCdXR0b24oe1xuXHR0aXRsZTogXCJcXHVmMWFiXCIsXG5cdG9uQ2xpY2s6IHRleHQgPT4ge1xuXHRcdGNvbnN0IGlzSmFwYW5lc2UgPSAoc3RyOiBzdHJpbmcpID0+IFsuLi5zdHJdLnNvbWUoY2hhciA9PiBjaGFyLmNoYXJDb2RlQXQoMCkgPiAyNTUpO1xuXHRcdFxuXHRcdC8vIOiomOazleOCkuino+mZpOOBmeOCi1xuXHRcdGNvbnN0IGtleXdvcmQgPSB0ZXh0LnNwbGl0KC9cXG4vKVxuICAgICAgICBcdC5tYXAobGluZSA9PiBsaW5lLnJlcGxhY2UoL1xcWyguKilcXF0vZywnJDEnKSkuam9pbignXFxuJykudHJpbSgpLnJlcGxhY2UoL1xccysvZywnKycpO1xuIFx0XHRpZiAoaXNKYXBhbmVzZShrZXl3b3JkKSkge1xuIFx0XHRcdHdpbmRvdy5vcGVuKGBodHRwczovL3d3dy5sZG9jZW9ubGluZS5jb20vc2VhcmNoL2phcGFuZXNlLWVuZ2xpc2gvZGlyZWN0Lz9xPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleXdvcmQpfWApO1xuIFx0XHR9IGVsc2Uge1xuICAgICAgICBcdFx0d2luZG93Lm9wZW4oYGh0dHBzOi8vd3d3Lm94Zm9yZGxlYXJuZXJzZGljdGlvbmFyaWVzLmNvbS9zZWFyY2gvZW5nbGlzaC8/cT0ke2VuY29kZVVSSUNvbXBvbmVudChrZXl3b3JkKX1gKTtcbiAgICAgICAgfVxuICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICBcdH1cbn0pO1xuc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gICAgdGl0bGU6ICdcXHVmMDAyJyxcbiAgICBvbkNsaWNrOiB0ZXh0ID0+IHtcbiAgICAgIFx0XHQvLyDoqJjms5XjgpLop6PpmaTjgZnjgotcbiAgICAgIFx0XHRjb25zdCBrZXl3b3JkID0gdGV4dC5zcGxpdCgvXFxuLylcbiAgICAgICAgICAgICAgXHQubWFwKGxpbmUgPT4gbGluZS5yZXBsYWNlKC9cXFsoLiopXFxdL2csJyQxJykpLmpvaW4oJ1xcbicpO1xuICAgICAgICAgICAgd2luZG93Lm9wZW4oYGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9JHtlbmNvZGVVUklDb21wb25lbnQoa2V5d29yZCl9K3NpdGU6c2NyYXBib3guaW9gKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICBcdH1cbn0pO1xuXG4vLyDjgqTjg7Pjg6njgqTjg7PlvJXnlKhcbnNjcmFwYm94LlBvcHVwTWVudS5hZGRCdXR0b24oe1xuICAgIHRpdGxlOiAnXFx1ZjEwZScsXG4gICAgb25DbGljazogdGV4dCA9PiBgW1wiICR7dGV4dH1dYFxufSk7XG4gLy8g5ouh5by16KiY5rOVXG4gLy8g6YG45oqe44GX44Gf5paH5a2X5YiX44Gr44Oe44O844Kr44O8XG4gc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gICAgIHRpdGxlOiAn8J+WjScsXG4gICAgIG9uQ2xpY2s6IHRleHQgPT4gYFtbJHt0ZXh0fV1dYFxuIH0pO1xuaW1wb3J0ICcuLi/pgbjmip7nr4Tlm7LjgpJNYXJrZG93buiomOazleOBq+WkieaPm+OBl+OBpmNsaXBfYm9hcmTjgatjb3B544GZ44KLUG9wdXBNZW51L3NjcmlwdC5qcyc7XG5zY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcbiAgICB0aXRsZTogdGV4dCA9PiAvXFwkKFteJF0rKVxcJC8udGVzdCh0ZXh0KSA/ICdMJyA6ICcnLFxuICAgIG9uQ2xpY2s6IHRleHQgPT4ge1xuXHRcdGNvbnN0IHJlc3VsdCA9IHRleHQuc3BsaXQoL1xcbi8pXG4gICAgIFx0XHQubWFwKGxpbmUgPT4gbGluZS5yZXBsYWNlKC9cXCQoW14kXSspXFwkL2csYFskICQxXWApKS5qb2luKCdcXG4nKTtcbiAgICAgXHQvLyDjg4bjg63jg6HjgqLjgYznhKHpp4Tjgavmm7TmlrDjgZXjgozjgovjga7jgpLpmLLjgZBcbiAgICAgXHRpZih0ZXh0ID09IHJlc3VsdCkgcmV0dXJuO1xuICAgICBcdHJldHVybiByZXN1bHQ7XG5cdH1cbn0pO1xuaW1wb3J0IHtcbiAgY29udmVydCxcbiAgY29udmVydEd5YXpvVVJMLFxuICBjb252ZXJ0U2NyYXBib3hVUkwsXG4gIGV4cGFuZFNob3J0VVJMLFxuICBmb3JtYXRUd2VldCxcbiAgZm9ybWF0VVJMLFxuICBmb3JtYXRXaWtpcGVkaWEsXG4gIE1pZGRsZXdhcmUsXG4gIHJlZGlyZWN0R29vZ2xlU2VhcmNoLFxuICByZWRpcmVjdFdpa2l3YW5kLFxuICBzaG9ydGVuQW1hem9uVVJMLFxufSBmcm9tIFwiLi4vdGFra2VyOTklMkZzY3JhcGJveC11cmwtY3VzdG9taXplci9tb2QudHNcIjtcbmltcG9ydCB7IGZvcm1hdE5pY29uaWNvIH0gZnJvbSBcIi4uL25pY290aHVtYjJpbWcvbWlkZGxld2FyZS50c1wiO1xuaW1wb3J0IHsgaW5zZXJ0VGV4dCB9IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcblxuLy8g5q+O5ZueZnVuY3Rpb25z44KS5L2c44KL44Gu44Gv54Sh6aeE44Gq44Gu44Gn44CBZ2xvYmFs44Gr5L+d5oyB44GX44Gm44GK44GPXG5jb25zdCBtaWRkbGV3YXJlczogTWlkZGxld2FyZVtdID0gW1xuICByZWRpcmVjdEdvb2dsZVNlYXJjaCxcbiAgZXhwYW5kU2hvcnRVUkwsXG4gIHJlZGlyZWN0R29vZ2xlU2VhcmNoLFxuICByZWRpcmVjdFdpa2l3YW5kLFxuICBzaG9ydGVuQW1hem9uVVJMLFxuICBjb252ZXJ0U2NyYXBib3hVUkwoKSxcbiAgY29udmVydEd5YXpvVVJMLFxuICBmb3JtYXRUd2VldCgpLFxuICBmb3JtYXRXaWtpcGVkaWEsXG4gICh1cmwpID0+IHtcbiAgICBpZiAodXJsLmhvc3RuYW1lICE9PSBcImVraXRhbi5jb21cIikgcmV0dXJuIHVybDtcbiAgICBpZiAoIS9eXFwvdHJhbnNpdFxcLyg/OnJvdXRlfGZpcnN0fGxhc3QpXFwvLy50ZXN0KHVybC5wYXRobmFtZSkpIHJldHVybiB1cmw7XG4gICAgY29uc3QgZHQgPSB1cmwuc2VhcmNoUGFyYW1zLmdldChcImR0XCIpO1xuICAgIGNvbnN0IHRtID0gdXJsLnNlYXJjaFBhcmFtcy5nZXQoXCJ0bVwiKTtcbiAgICBjb25zdCBzciA9IHVybC5zZWFyY2hQYXJhbXMuZ2V0KFwic3JcIik7XG4gICAgLy8gVVJMLnNlYXJjaFBhcmFtc+OBr3NldHRlcuOBjOOBquOBhOOBruOBp3Jlc2V044Gn44GN44Gq44GE44CC5Luj44KP44KK44GrVVJMLnNlYXJjaOe1jOeUseOBp3Jlc2V044GZ44KLXG4gICAgdXJsLnNlYXJjaCA9IFwiXCI7XG4gICAgaWYgKGR0KSB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcImR0XCIsIGR0KTtcbiAgICBpZiAodXJsLnBhdGhuYW1lLnN0YXJ0c1dpdGgoXCIvdHJhbnNpdC9yb3V0ZS9cIikpIHtcbiAgICAgIGlmICh0bSkgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJ0bVwiLCB0bSk7XG4gICAgICBpZiAoc3IpIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKFwic3JcIiwgc3IpO1xuICAgIH1cbiAgICByZXR1cm4gdXJsO1xuICB9LFxuICAodXJsKSA9PiB7XG4gICAgaWYgKHVybC5ob3N0ICE9PSBsb2NhdGlvbi5ob3N0KSByZXR1cm4gdXJsO1xuICAgIGlmICghdXJsLnBhdGhuYW1lLnN0YXJ0c1dpdGgoXCIvYXBpL2NvZGUvXCIpKSByZXR1cm4gdXJsO1xuICAgIGNvbnN0IHBhdGggPSBlbmNvZGVVUklDb21wb25lbnQoYCR7dXJsLm9yaWdpbn0ke3VybC5wYXRobmFtZX1gKTtcbiAgICByZXR1cm4gYCR7dXJsfWAuZW5kc1dpdGgoXCIuc3ZnXCIpXG4gICAgICA/IGBbaHR0cHM6Ly9zdmctaG9zdGluZy52ZXJjZWwuYXBwL2FwaS9zdmc/dXJsPSR7cGF0aH0gJHt1cmx9XWBcbiAgICAgIDogYCR7dXJsfWAuZW5kc1dpdGgoXCIubWx0XCIpXG4gICAgICA/IGBbaHR0cHM6Ly9hYTJzdmcudmVyY2VsLmFwcC9zdmcvJHtwYXRofT93aWR0aD0xMDAwICR7dXJsfV1gIDogdXJsO1xuICB9LFxuICAodXJsKSA9PiB7XG4gICAgaWYgKHVybC5ob3N0bmFtZSA9PT0gXCJyYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tXCIpIHtcbiAgICAgIHJldHVybiBgW2h0dHBzOi8vY29kZTJzdmcudmVyY2VsLmFwcC9zdmcvJHt1cmwub3JpZ2lufSR7dXJsLnBhdGhuYW1lfSMuc3ZnICR7dXJsfV1gO1xuICAgIH1cbiAgICBpZiAodXJsLmhvc3RuYW1lICE9PSBcImdpdGh1Yi5jb21cIikgcmV0dXJuIHVybDtcbiAgICBjb25zdCBbdXNlciwgcmVwbywgZmlsZXBhdGhdID1cbiAgICAgIHVybC5wYXRobmFtZS5tYXRjaCgvXlxcLyhbXlxcXFxdKylcXC8oW15cXFxcXSspXFwvYmxvYlxcLyguKykkLyk/LnNsaWNlPy4oMSkgPz9cbiAgICAgICAgW107XG4gICAgaWYgKCF1c2VyIHx8ICFyZXBvIHx8ICFmaWxlcGF0aCkgcmV0dXJuIHVybDtcbiAgICBjb25zdCBbLCBzdGFydCwgZW5kXSA9IHVybC5oYXNoLm1hdGNoKC9MKFxcZCspLUwoXFxkKykvKSA/P1xuICAgICAgdXJsLmhhc2gubWF0Y2goL0woXFxkKykvKSA/PyBbXTtcbiAgICByZXR1cm4gYFtodHRwczovL2NvZGUyc3ZnLnZlcmNlbC5hcHAvc3ZnLyR7XG4gICAgICBzdGFydCAmJiBlbmQgPyBgTCR7c3RhcnR9LSR7ZW5kfS9gIDogc3RhcnQgPyBgTCR7c3RhcnR9L2AgOiBcIlwiXG4gICAgfWh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS8ke3VzZXJ9LyR7cmVwb30vJHtmaWxlcGF0aH0jLnN2ZyAke3VybH1dYDtcbiAgfSxcbiAgLy8gZ2l0aHVi44Gv44Gd44Gu44G+44G+6L+U44GZXG4gICh1cmwpID0+IHVybC5ob3N0bmFtZSA9PT0gXCJnaXRodWIuY29tXCIgPyBgJHt1cmx9YCA6IHVybCxcbiAgZm9ybWF0Tmljb25pY28sXG4gIGZvcm1hdFVSTCgpLFxuXTtcblxuc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gIHRpdGxlOiAodGV4dCkgPT4gL2h0dHBzPzpcXC9cXC9cXFMrLy50ZXN0KHRleHQpID8gXCJVUkxcIiA6IFwiXCIsXG4gIG9uQ2xpY2s6ICh0ZXh0KSA9PiB7XG4gICAgY29uc3QgcHJvbWlzZSA9IGNvbnZlcnQodGV4dCwgLi4ubWlkZGxld2FyZXMpO1xuICAgIGlmICh0eXBlb2YgcHJvbWlzZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgLy8g5paH5a2X5YiX44Gr6YGV44GE44GM44GC44KL44Go44GN44Gu44G/5pu05pawXG4gICAgICByZXR1cm4gdGV4dCA9PT0gcHJvbWlzZSA/IHVuZGVmaW5lZCA6IHByb21pc2U7XG4gICAgfVxuICAgIFxuICAgIC8vIOmBuOaKnuevhOWbsuOBq+WkieaPm+W+jOOBruaWh+Wtl+WIl+OCkuS4iuabuOOBjeOBmeOCi1xuICAgIC8vIOWkieaPm+S4reOBq+mBuOaKnuevhOWbsuOBjOWkieOCj+OCi+OBqOOAgeOBmuOCjOOBn+S9jee9ruOBq+aMv+WFpeOBleOCjOOCi+OBruOBp+azqOaEj1xuICAgIHByb21pc2UudGhlbigoY29udmVydGVkKSA9PiB7XG4gICAgICBpZiAodGV4dCA9PT0gY29udmVydGVkKSByZXR1cm47XG4gICAgICByZXR1cm4gaW5zZXJ0VGV4dChjb252ZXJ0ZWQpO1xuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sXG59KTtcblxuaW1wb3J0ICcuLi/opIfmlbDooYzjgavmiZPjgaHmtojjgZfnt5rjgpLlvJXjgY9Qb3B1cCBNZW51QDAuMy4wL3NjcmlwdC5qcyc7XG5pbXBvcnQgXCIuLi9yZXBsYWNlX3RleHRfVXNlclNjcmlwdOWGjeWun+ijheeJiC9zY3JpcHQuanNcIjtcbmltcG9ydCB7IHNldHVwIH0gZnJvbSAgXCIuLi/opIfmlbDjga7jg6rjg7Pjgq/jgpLjgb7jgajjgoHjgabnva7mj5vjgZnjgotVc2VyU2NyaXB0L2V4YW1wbGUudHNcIjtcblxuc2V0dXAoW1widGFra2VyXCIsIFwidGFra2VyLW1lbWV4XCIsIFwidGFra2VyLXByaXZhdGVcIiwgXCJ0YWtrZXItYm9va3NcIl0pO1xuaW1wb3J0IFwiLi4v5LiA5pem5pS56KGM44KS5raI44GX44Gm5Y+l54K544Gn5pS56KGM44GX55u044GZUG9wdXBNZW51L3NjcmlwdC5qc1wiO1xuaW1wb3J0IFwiLi4v6YG45oqe44GX44GfR3lhem/jga5PQ1Ljg4bjgq3jgrnjg4jjgpLjgrPjg5Tjg7zjgZnjgotVc2VyU2NyaXB0L3BvcHVwTWVudS5qc1wiO1xuaW1wb3J0IFwiLi4v6YG45oqe44GX44GfR3lhem/nlLvlg4/jga50cmltbWluZ+ODmuODvOOCuOOCkumWi+OBj1BvcHVwX01lbnUvc2NyaXB0LmpzXCI7XG5pbXBvcnQgXCIuLi9TY3JhcGJveOiomOazleOCklRlWOiomOazleOBq+WkieaPm+OBmeOCi1BvcHVwTWVudS9zY3JpcHQudHNcIjtcblxuaW1wb3J0IHsgc3RhcnRUYWxrIH0gZnJvbSBcIi4uL3NjcmFwYm94LWtlaWNob2JvdC9tb2QudHNcIjtcbmltcG9ydCB7IHRleHRJbnB1dCB9IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcblxuaWYgKCEvbW9iaWxlL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSkge1xuICBjb25zdCB0YWxrID0gKHRleHQ6IHN0cmluZywgbW9kZT86IFwibm9ybWFsXCIgfCBcImVtcGF0aHlfd3JpdGluZ1wiIHwgXCJLUFRcIiB8IFwidmFsdWVfaHlwb3RoZXNpc1wiKSA9PiB7XG4gICAgaWYgKHRleHQudHJpbSgpID09PSBcIlwiKSByZXR1cm4gdW5kZWZpbmVkO1xuICBcbiAgICBzdGFydFRhbGsoeyBtb2RlIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKCFyZXN1bHQpIHJldHVybjtcbiAgICAgIGNvbnN0IHsgYXNrLCB2aXNpYmxlLCBvbkV4aXQgfSA9IHJlc3VsdDtcbiAgICAgIGNvbnN0IGhhbmRsZUtleWRvd24gPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIXZpc2libGUoKSB8fCBlLmtleSAhPT0gXCJFbnRlclwiIHx8ICFlLmN0cmxLZXkgfHwgZS5hbHRLZXkgfHxcbiAgICAgICAgICBlLnNoaWZ0S2V5XG4gICAgICAgICkgcmV0dXJuO1xuICBcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBhc2soKTtcbiAgICAgIH07XG4gICAgICB0ZXh0SW5wdXQoKSEuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5ZG93bik7XG4gICAgICBvbkV4aXQoKCkgPT4gdGV4dElucHV0KCkhLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleWRvd24pKTtcbiAgICB9KTtcbiAgfTtcbiAgc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gICAgdGl0bGU6ICgpID0+IFwi8J+kllwiLFxuICAgIG9uQ2xpY2s6ICh0ZXh0KSA9PiB0YWxrKHRleHQpLFxuICB9KTtcbiAgLypcbiAgc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gICAgdGl0bGU6ICgpID0+IFwi8J+kluKcje+4j1wiLFxuICAgIG9uQ2xpY2s6ICh0ZXh0KSA9PiB0YWxrKHRleHQsIFwiZW1wYXRoeV93cml0aW5nXCIpLFxuICB9KTtcbiAgc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gICAgdGl0bGU6ICgpID0+IFwi8J+klvCfkqFcIixcbiAgICBvbkNsaWNrOiAodGV4dCkgPT4gdGFsayh0ZXh0LCBcInZhbHVlX2h5cG90aGVzaXNcIiksXG4gIH0pOyovXG59IiwgImltcG9ydCB7XG4gIGFkZERheXMsXG4gIGdldFdlZWssXG4gIGdldFllYXIsXG4gIGxpZ2h0Rm9ybWF0LFxuICBzdGFydE9mV2VlayxcbiAgc3ViRGF5cyxcbn0gZnJvbSBcIi4uL2RlcHMvZGF0ZS1mbnMudHNcIjtcblxuLyoqXG4gKiBSZXBsYWNlcyBwbGFjZWhvbGRlcnMgaW4gdGhlIHRlbXBsYXRlIHdpdGggZm9ybWF0dGVkIGRhdGUgdmFsdWVzLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgdXNlZCBmb3IgcmVwbGFjZW1lbnQuXG4gKiBAcGFyYW0gdGVtcGxhdGUgLSBUaGUgdGVtcGxhdGUgY29udGFpbmluZyBwbGFjZWhvbGRlcnMgdG8gYmUgcmVwbGFjZWQuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHJpbmdzIHdpdGggdGhlIHJlcGxhY2VkIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlbXBsYXRlID0gKGRhdGU6IERhdGUsIHRlbXBsYXRlOiBzdHJpbmdbXSk6IHN0cmluZ1tdID0+XG4gIHRlbXBsYXRlLm1hcCgobGluZSkgPT5cbiAgICBsaW5lLnJlcGxhY2UoXG4gICAgICAvQHl5eXktTU0tZGQgSEg6bW06c3NAL2csXG4gICAgICBsaWdodEZvcm1hdChkYXRlLCBcInl5eXktTU0tZGQgSEg6bW06c3NcIiksXG4gICAgKVxuICAgICAgLnJlcGxhY2UoL0B5eXl5LU1NLWRkQC9nLCBsaWdodEZvcm1hdChkYXRlLCBcInl5eXktTU0tZGRcIikpXG4gICAgICAucmVwbGFjZShcbiAgICAgICAgL0B5eXl5LU1NLWRkKD86KFsrLV0pKFxcZCspKHc/KSk/KD86XFwoKFN1bnxNb258VHVlfFdlZHxUaHV8RnJpfFNhdClcXCkpP0AvZyxcbiAgICAgICAgKF8sIHBtLCBkYXlzLCBpc1dlZWssIGRheSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0RhdGUgPSAhcG1cbiAgICAgICAgICAgID8gZGF0ZVxuICAgICAgICAgICAgOiBwbSA9PT0gXCIrXCJcbiAgICAgICAgICAgID8gYWRkRGF5cyhkYXRlLCBwYXJzZUludChkYXlzKSAqIChpc1dlZWsgPT09IFwid1wiID8gNyA6IDEpKVxuICAgICAgICAgICAgOiBzdWJEYXlzKGRhdGUsIHBhcnNlSW50KGRheXMpICogKGlzV2VlayA9PT0gXCJ3XCIgPyA3IDogMSkpO1xuICAgICAgICAgIHJldHVybiBsaWdodEZvcm1hdChcbiAgICAgICAgICAgICFkYXkgPyBuZXdEYXRlIDogYWRkRGF5cyhzdGFydE9mV2VlayhuZXdEYXRlKSwgZGF5VG9OdW1iZXIoZGF5KSksXG4gICAgICAgICAgICBcInl5eXktTU0tZGRcIixcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgKVxuICAgICAgLnJlcGxhY2UoXG4gICAgICAgIC9AeXl5eS13d0AvZyxcbiAgICAgICAgYCR7Z2V0WWVhcihkYXRlKX0tdyR7YCR7Z2V0V2VlayhkYXRlKX1gLnBhZFN0YXJ0KDIsIFwiMFwiKX1gLFxuICAgICAgKVxuICAgICAgLnJlcGxhY2UoXG4gICAgICAgIC9AeXl5eS13dyhbKy1dKShcXGQrKSh3PylAL2csXG4gICAgICAgIChfLCBwbSwgd2Vla3MsIGlzV2VlaykgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0RhdGUgPSBwbSA9PT0gXCIrXCJcbiAgICAgICAgICAgID8gYWRkRGF5cyhkYXRlLCBwYXJzZUludCh3ZWVrcykgKiAoaXNXZWVrID09PSBcIndcIiA/IDcgOiAxKSlcbiAgICAgICAgICAgIDogc3ViRGF5cyhkYXRlLCBwYXJzZUludCh3ZWVrcykgKiAoaXNXZWVrID09PSBcIndcIiA/IDcgOiAxKSk7XG4gICAgICAgICAgcmV0dXJuIGAke2dldFllYXIobmV3RGF0ZSl9LXcke1xuICAgICAgICAgICAgYCR7Z2V0V2VlayhuZXdEYXRlKX1gLnBhZFN0YXJ0KDIsIFwiMFwiKVxuICAgICAgICAgIH1gO1xuICAgICAgICB9LFxuICAgICAgKVxuICApO1xuXG5jb25zdCBkYXlUb051bWJlciA9IChkYXk6IHN0cmluZyk6IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDYgPT4ge1xuICBzd2l0Y2ggKGRheSkge1xuICAgIGNhc2UgXCJTdW5cIjpcbiAgICAgIHJldHVybiAwO1xuICAgIGNhc2UgXCJNb25cIjpcbiAgICAgIHJldHVybiAxO1xuICAgIGNhc2UgXCJUdWVcIjpcbiAgICAgIHJldHVybiAyO1xuICAgIGNhc2UgXCJXZWRcIjpcbiAgICAgIHJldHVybiAzO1xuICAgIGNhc2UgXCJUaHVcIjpcbiAgICAgIHJldHVybiA0O1xuICAgIGNhc2UgXCJGcmlcIjpcbiAgICAgIHJldHVybiA1O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gNjtcbiAgfVxufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIi8+XG5pbXBvcnQgeyBTY3JhcGJveCwgdXNlU3RhdHVzQmFyIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtc3RkLWRvbS50c1wiO1xuaW1wb3J0IHsgZ2V0Q29kZUJsb2NrLCBzbGVlcCB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXN0ZC50c1wiO1xuaW1wb3J0IHtcbiAgZGlzY29ubmVjdCxcbiAgbWFrZVNvY2tldCxcbiAgcGF0Y2gsXG4gIFNvY2tldCxcbn0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtd2Vic29ja2V0LnRzXCI7XG5pbXBvcnQge1xuICBhZGREYXlzLFxuICBlYWNoRGF5T2ZJbnRlcnZhbCxcbiAgZWFjaFdlZWtPZkludGVydmFsLFxuICBpc1NhbWVEYXksXG59IGZyb20gXCIuLi9kZXBzL2RhdGUtZm5zLnRzXCI7XG5pbXBvcnQgeyB0ZW1wbGF0ZSB9IGZyb20gXCIuL3RlbXBsYXRlLnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuLyoqXG4gKiBDcmVhdGUgZGFpbHkgYW5kIHJldmlldyBwYWdlcy5cbiAqXG4gKiBAcGFyYW0gcHJvamVjdCAtIFRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0LlxuICogQHBhcmFtIGRhaWx5VGVtcGxhdGUgLSBUaGUgZGFpbHkgdGVtcGxhdGUgZm9yIHJldmlldyBwYWdlcy5cbiAqIEBwYXJhbSB3ZWVrbHlUZW1wbGF0ZSAtIFRoZSB3ZWVrbHkgdGVtcGxhdGUgZm9yIHJldmlldyBwYWdlcy5cbiAqIEByZXR1cm5zIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHJldmlldyBwYWdlcyBhcmUgY3JlYXRlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1haW4gPSBhc3luYyAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgZGFpbHlUZW1wbGF0ZTogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddLFxuICB3ZWVrbHlUZW1wbGF0ZTogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddLFxuKTogUHJvbWlzZTwoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPj4gPT4ge1xuICBpZiAoc2NyYXBib3guUHJvamVjdC5uYW1lICE9PSBwcm9qZWN0KSByZXR1cm4gKCkgPT4ge307XG5cbiAgLy8gc2NyYXBib3guUHJvamVjdC5wYWdlc+OBjOeUn+aIkOOBleOCjOOCi+OBvuOBp+W+heOBpFxuICAvLyDnlJ/miJDjgZfjgZ9wYWdlc+OBr2NhY2hl44GX44Gm44GK44GPXG4gIGxldCBwYWdlcyA9IHNjcmFwYm94LlByb2plY3QucGFnZXM7XG4gIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgdGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAocGFnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHBhZ2VzID0gc2NyYXBib3guUHJvamVjdC5wYWdlcztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSwgMjAwMCk7XG4gIH0pO1xuXG4gIGxldCBzdGFydCA9IG5ldyBEYXRlKDIwMjMsIDEsIDMpO1xuICBjb25zdCBjYWxsYmFjayA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGludGVydmFsID0geyBzdGFydCwgZW5kOiBhZGREYXlzKG5vdywgMSkgfTtcblxuICAgIGNvbnN0IHsgcmVuZGVyLCBkaXNwb3NlIH0gPSB1c2VTdGF0dXNCYXIoKTtcbiAgICBsZXQgc29ja2V0OiBTb2NrZXQgfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIC8vIOODhuODs+ODl+ODrOODvOODiOOCkuWPluW+l1xuICAgICAgY29uc3QgZGFpbHlUZW1wbGF0ZVRleHQgPSBhd2FpdCBmZXRjaFRlbXBsYXRlKGRhaWx5VGVtcGxhdGUpO1xuICAgICAgY29uc3Qgd2Vla2x5VGVtcGxhdGVUZXh0ID0gYXdhaXQgZmV0Y2hUZW1wbGF0ZSh3ZWVrbHlUZW1wbGF0ZSk7XG5cbiAgICAgIC8qIOeUn+aIkOOBmeOCi+aMr+OCiui/lOOCiuODmuODvOOCuOOBruaXpeS7mOODquOCueODiCAqL1xuICAgICAgY29uc3QgZGF0ZXMgPSBlYWNoRGF5T2ZJbnRlcnZhbChpbnRlcnZhbCkuZmlsdGVyKChkYXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gdGVtcGxhdGUoZGF0ZSwgZGFpbHlUZW1wbGF0ZVRleHQpWzBdO1xuICAgICAgICBjb25zdCBwYWdlID0gcGFnZXMuZmluZCgocGFnZSkgPT4gcGFnZS50aXRsZSA9PT0gdGl0bGUpO1xuICAgICAgICByZXR1cm4gIXBhZ2UgfHwgIXBhZ2UuZXhpc3RzO1xuICAgICAgfSk7XG4gICAgICAvKiDnlJ/miJDjgZnjgosx6YCx6ZaT44Gu5oyv44KK6L+U44KK44Oa44O844K444Gu5pel5LuY44Oq44K544OIICovXG4gICAgICBjb25zdCB3ZWVrbHlEYXRlcyA9IGVhY2hXZWVrT2ZJbnRlcnZhbChpbnRlcnZhbCkuZmlsdGVyKChkYXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gdGVtcGxhdGUoZGF0ZSwgd2Vla2x5VGVtcGxhdGVUZXh0KVswXTtcbiAgICAgICAgY29uc3QgcGFnZSA9IHBhZ2VzLmZpbmQoKHBhZ2UpID0+IHBhZ2UudGl0bGUgPT09IHRpdGxlKTtcbiAgICAgICAgcmV0dXJuICFwYWdlIHx8ICFwYWdlLmV4aXN0cztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZGF0ZXMubGVuZ3RoID09PSAwICYmIHdlZWtseURhdGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgICAvLyDku4rml6Xku6XlpJbjga7ml6Xku5jjg5rjg7zjgrjjgpLlpJbjgZlcbiAgICAgIGxldCBjb3VudGVyID0gZGF0ZXMubGVuZ3RoICsgd2Vla2x5RGF0ZXMubGVuZ3RoO1xuICAgICAgcmVuZGVyKFxuICAgICAgICB7IHR5cGU6IFwic3Bpbm5lclwiIH0sXG4gICAgICAgIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IGBjcmVhdGUgJHtjb3VudGVyfSByZXZpZXcgcGFnZXMuLi5gIH0sXG4gICAgICApO1xuXG4gICAgICBzb2NrZXQgPSBhd2FpdCBtYWtlU29ja2V0KCk7XG4gICAgICBmb3IgKFxuICAgICAgICBjb25zdCBsaW5lcyBvZiBbXG4gICAgICAgICAgLi4uZGF0ZXMubWFwKChkYXRlKSA9PiB0ZW1wbGF0ZShkYXRlLCBkYWlseVRlbXBsYXRlVGV4dCkpLFxuICAgICAgICAgIC4uLndlZWtseURhdGVzLm1hcCgoZGF0ZSkgPT4gdGVtcGxhdGUoZGF0ZSwgd2Vla2x5VGVtcGxhdGVUZXh0KSksXG4gICAgICAgIF1cbiAgICAgICkge1xuICAgICAgICBhd2FpdCBwYXRjaChcbiAgICAgICAgICBwcm9qZWN0LFxuICAgICAgICAgIGxpbmVzWzBdLFxuICAgICAgICAgIChfLCBtZXRhZGF0YSkgPT4gbWV0YWRhdGEucGVyc2lzdGVudCA/IHVuZGVmaW5lZCA6IGxpbmVzLFxuICAgICAgICAgIHNvY2tldCA/IHsgc29ja2V0IH0gOiB7fSxcbiAgICAgICAgKTtcbiAgICAgICAgY291bnRlci0tO1xuICAgICAgICByZW5kZXIoXG4gICAgICAgICAgeyB0eXBlOiBcInNwaW5uZXJcIiB9LFxuICAgICAgICAgIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IGBjcmVhdGUgJHtjb3VudGVyfSByZXZpZXcgcGFnZXMuLi5gIH0sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZW5kZXIoXG4gICAgICAgIHsgdHlwZTogXCJjaGVjay1jaXJjbGVcIiB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYGNyZWF0ZWQgJHtkYXRlcy5sZW5ndGggKyB3ZWVrbHlEYXRlcy5sZW5ndGh9IHJldmlldyBwYWdlcy5gLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIHN0YXJ0ID0gbm93O1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgeyB0eXBlOiBcImV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCIgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IGUgaW5zdGFuY2VvZiBFcnJvclxuICAgICAgICAgICAgPyBgJHtlLm5hbWV9ICR7ZS5tZXNzYWdlfWBcbiAgICAgICAgICAgIDogYFVua25vd24gZXJyb3IhIChzZWUgZGV2ZWxvcHBlciBjb25zb2xlKWAsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHNvY2tldCkgYXdhaXQgZGlzY29ubmVjdChzb2NrZXQpO1xuICAgICAgYXdhaXQgc2xlZXAoMTAwMCk7XG4gICAgICBkaXNwb3NlKCk7XG4gICAgfVxuICB9O1xuXG4gIGxldCBkb25lID0gY2FsbGJhY2soKTtcblxuICAvLyDml6Xku5jlpInmm7Tnt5rjgpLotorjgYjjgovjgZ/jgbPjgavlrp/ooYxcbiAgLy8g56uv5pyr44GM44K544Oq44O844OX44GZ44KL44Go44K/44Kk44Oe44O844GM5q2i44G+44KL44Gu44Gn44CBMTDnp5LjgZTjgajjgavjg4Hjgqfjg4Pjgq/jgZnjgotcbiAgbGV0IGNoZWNrZWQgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGlmIChpc1NhbWVEYXkoY2hlY2tlZCwgbm93KSkgcmV0dXJuO1xuICAgIGNoZWNrZWQgPSBub3c7XG4gICAgZG9uZS50aGVuKCgpID0+IGRvbmUgPSBjYWxsYmFjaygpKTtcbiAgfSwgMTAwMDApO1xuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICByZXR1cm4gZG9uZTtcbiAgfTtcbn07XG5cbmNvbnN0IGZldGNoVGVtcGxhdGUgPSBhc3luYyAocGF0aDogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldENvZGVCbG9jayhwYXRoWzBdLCBwYXRoWzFdLCBwYXRoWzJdKTtcbiAgaWYgKCFyZXN1bHQub2spIHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigpO1xuICAgIGVycm9yLm5hbWUgPSByZXN1bHQudmFsdWUubmFtZTtcbiAgICBlcnJvci5tZXNzYWdlID0gYCR7cmVzdWx0LnZhbHVlLm1lc3NhZ2V9IGF0IGZldGNoaW5nIC8ke3BhdGhbMF19LyR7XG4gICAgICBwYXRoWzFdXG4gICAgfS8ke3BhdGhbMl19YDtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIGNvbnN0IHRlbXBsYXRlID0gcmVzdWx0LnZhbHVlLnNwbGl0KFwiXFxuXCIpO1xuICBpZiAodGVtcGxhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0ZW1wbGF0ZSBcIi8ke3BhdGhbMF19LyR7cGF0aFsxXX0vJHtwYXRoWzJdfVwiIGlzIGVtcHR5IWApO1xuICB9XG4gIHJldHVybiB0ZW1wbGF0ZTtcbn07XG4iLCAiZXhwb3J0IGludGVyZmFjZSBJdGVtR3JvdXAge1xuICB0eXBlOiBcImdyb3VwXCI7XG4gIGl0ZW1zOiBJdGVtW107XG59XG5leHBvcnQgdHlwZSBJY29uID1cbiAgfCBcInNwaW5uZXJcIlxuICB8IFwiY2hlY2stY2lyY2xlXCJcbiAgfCBcImd5YXpvXCJcbiAgfCBcIm9jclwiXG4gIHwgXCJjYWxlbmRhclwiXG4gIHwgXCJ0cmltXCJcbiAgfCBcImV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCJcbiAgfCBgY2FyZXQtJHtcInVwXCIgfCBcImRvd25cIiB8IFwibGVmdFwiIHwgXCJyaWdodFwifWBcbiAgfCBgYWxpZ24tJHtcImxlZnRcIiB8IFwiY2VudGVyXCIgfCBcImp1c3RpZnlcIiB8IFwicmlnaHRcIn1gXG4gIHwgXCJjb3B5XCJcbiAgfCBcImN1dFwiXG4gIHwgXCJjbGlwYm9hcmRcIlxuICB8IFwiZXhwYW5kXCJcbiAgfCBcInN0cmlrZXRocm91Z2hcIlxuICB8IFwiaS1jdXJzb3JcIlxuICB8IFwidW5kb1wiXG4gIHwgXCJyZWRvXCJcbiAgfCBcInRpbWVzXCJcbiAgfCBcInNsYXNoXCJcbiAgfCBcImJhblwiXG4gIHwgXCJtYXJrZG93blwiXG4gIHwgXCJsaW5rXCJcbiAgfCBcInVubGlua1wiXG4gIHwgXCJib2xkXCJcbiAgfCBcInN0cmlrZXRocm91Z2hcIlxuICB8IFwiaGlnaGxpZ2h0ZXJcIlxuICB8IFwicmVtb3ZlLWZvcm1hdFwiXG4gIHwgXCJpdGFsaWNcIlxuICB8IFwibWFya2VyXCJcbiAgfCBcImdvb2dsZVwiXG4gIHwgXCJjb2RlXCJcbiAgfCBcInNlYXJjaFwiXG4gIHwgXCJsYW5ndWFnZVwiXG4gIHwgXCJ1bmRlcmxpbmVcIjtcbmV4cG9ydCB0eXBlIEl0ZW0gPVxuICB8IHN0cmluZ1xuICB8IHtcbiAgICB0eXBlOiBJY29uIHwgW0ljb24sIEljb25dO1xuICB9XG4gIHwgeyB0eXBlOiBcInRleHRcIjsgdGV4dDogc3RyaW5nIH1cbiAgfCBJdGVtR3JvdXA7XG5cbmV4cG9ydCBjb25zdCBtYWtlR3JvdXAgPSAoLi4uaXRlbXM6IEl0ZW1bXSk6IEhUTUxTcGFuRWxlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IG5vZGVzID0gaXRlbXMuZmxhdE1hcCgoaXRlbSkgPT4ge1xuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIFttYWtlSXRlbShpdGVtKV07XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0udHlwZSkpIHtcbiAgICAgIHJldHVybiBbbWFrZUljb24oaXRlbS50eXBlKV07XG4gICAgfVxuICAgIHN3aXRjaCAoaXRlbS50eXBlKSB7XG4gICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgICByZXR1cm4gW21ha2VJdGVtKGl0ZW0udGV4dCldO1xuICAgICAgY2FzZSBcImdyb3VwXCI6IHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBtYWtlR3JvdXAoLi4uaXRlbS5pdGVtcyk7XG4gICAgICAgIHJldHVybiBncm91cCA/IFtncm91cF0gOiBbXTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBbbWFrZUljb24oaXRlbS50eXBlKV07XG4gICAgfVxuICB9KTtcbiAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICBpZiAobm9kZXMubGVuZ3RoID09PSAxKSByZXR1cm4gbm9kZXNbMF07XG5cbiAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICBzcGFuLmNsYXNzTGlzdC5hZGQoXCJpdGVtLWdyb3VwXCIpO1xuICBzcGFuLmFwcGVuZCguLi5ub2Rlcyk7XG4gIHJldHVybiBzcGFuO1xufTtcblxuY29uc3QgbWFrZUl0ZW0gPSAoY2hpbGQ6IHN0cmluZyB8IE5vZGUpOiBIVE1MU3BhbkVsZW1lbnQgPT4ge1xuICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gIHNwYW4uY2xhc3NMaXN0LmFkZChcIml0ZW1cIik7XG4gIHNwYW4uYXBwZW5kKGNoaWxkKTtcbiAgcmV0dXJuIHNwYW47XG59O1xuXG5jb25zdCBtYWtlSWNvbiA9IChpY29uOiBJY29uIHwgW0ljb24sIEljb25dKTogSFRNTFNwYW5FbGVtZW50ID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoaWNvbikpIHtcbiAgICBjb25zdCBzdGFjayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgIHN0YWNrLmNsYXNzTGlzdC5hZGQoXCJmYS1zdGFja1wiKTtcbiAgICBjb25zdCBpY29uMSA9IG1ha2VJY29uQmFzZShpY29uWzBdKTtcbiAgICBpY29uMS5jbGFzc0xpc3QuYWRkKFwiZmEtc3RhY2stMXhcIik7XG4gICAgY29uc3QgaWNvbjIgPSBtYWtlSWNvbkJhc2UoaWNvblsxXSk7XG4gICAgaWNvbjIuY2xhc3NMaXN0LmFkZChcImZhLXN0YWNrLTF4XCIpO1xuICAgIHN0YWNrLmFwcGVuZChpY29uMSwgaWNvbjIpO1xuICAgIHJldHVybiBtYWtlSXRlbShzdGFjayk7XG4gIH1cbiAgcmV0dXJuIG1ha2VJdGVtKG1ha2VJY29uQmFzZShpY29uKSk7XG59O1xuXG5jb25zdCBtYWtlSWNvbkJhc2UgPSAoaWNvbjogSWNvbik6IEhUTUxFbGVtZW50ID0+IHtcbiAgY29uc3QgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpXCIpO1xuICBzd2l0Y2ggKGljb24pIHtcbiAgICBjYXNlIFwic3Bpbm5lclwiOlxuICAgICAgaS5jbGFzc0xpc3QuYWRkKFwiZmFcIiwgXCJmYS1zcGlubmVyXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNoZWNrLWNpcmNsZVwiOlxuICAgIGNhc2UgXCJneWF6b1wiOlxuICAgIGNhc2UgXCJvY3JcIjpcbiAgICBjYXNlIFwiY2FsZW5kYXJcIjpcbiAgICBjYXNlIFwidHJpbVwiOlxuICAgICAgaS5jbGFzc0xpc3QuYWRkKFwia2Ftb25cIiwgYGthbW9uLSR7aWNvbn1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJtYXJrZG93blwiOlxuICAgIGNhc2UgXCJnb29nbGVcIjpcbiAgICAgIGkuY2xhc3NMaXN0LmFkZChcImZhYlwiLCBgZmEtJHtpY29ufWApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNvcHlcIjpcbiAgICBjYXNlIFwiY2xpcGJvYXJkXCI6XG4gICAgICBpLmNsYXNzTGlzdC5hZGQoXCJmYXJcIiwgYGZhLSR7aWNvbn1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBpLmNsYXNzTGlzdC5hZGQoXCJmYXNcIiwgYGZhLSR7aWNvbn1gKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBpO1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5pbXBvcnQgeyBJdGVtLCBtYWtlR3JvdXAgfSBmcm9tIFwiLi9pdGVtLnRzXCI7XG5pbXBvcnQgeyBDdXJzb3IsIFNlbGVjdGlvbiwgdGFrZVN0b3JlcyB9IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcbmltcG9ydCB0eXBlIHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vc2NyYXBib3gtanAlMkZ0eXBlcy91c2Vyc2NyaXB0LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuY29uc3QgeyBjdXJzb3IsIHNlbGVjdGlvbiB9ID0gdGFrZVN0b3JlcygpO1xuXG4vKiog44Oc44K/44Oz44Gu6Kit5a6aICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvbiB7XG4gIC8qKiAuc3RhdHVzLWJhciA+IGRpdiDjgavjgaTjgZHjgotjbGFzcyBuYW1lICovXG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgLyoqIOODnOOCv+ODs+OBq+ihqOekuuOBmeOCi+OCouOCpOODhuODoFxuICAgKlxuICAgKiDnqbrmloflrZfjgpLmuKHjgZnjgajpnZ7ooajnpLrjgavjgarjgotcbiAgICpcbiAgICog5Ye95pWw57O744Gv44CB44Kr44O844K944Or44GM5YuV44GP44Gf44Gz44Gr5ZG844Gz5Ye644GV44KM44KLXG4gICAqL1xuICBkaXNwbGF5OiBJdGVtIHwgSXRlbVtdIHwgKChwcm9wczogT21pdDxDbGlja1Byb3BzLCBcInNldERpc3BsYXlcIj4pID0+IEl0ZW0gfCBJdGVtW10pO1xuICBvbkNsaWNrOiAocHJvcHM6IENsaWNrUHJvcHMpID0+IHZvaWQ7XG4gIC8qKiDjg5zjgr/jg7PjgpLooajnpLrjgZnjgovjg5rjg7zjgrjjga7nqK7poZ5cbiAgICpcbiAgICog44OI44OD44OX44Oa44O844K444KEc3RyZWFt44Gq44Gp44CB54m55q6K44Gq44Oa44O844K444Gn5L2/44GE44Gf44GE44Oc44K/44Oz44GM44GC44KM44Gw5oyH5a6a44GZ44KLXG4gICAqXG4gICAqIEBkZWZhdWx0IFwicGFnZVwiXG4gICAqL1xuICBjb250ZXh0PzogQ29udGV4dDtcbn07XG5leHBvcnQgaW50ZXJmYWNlIENsaWNrUHJvcHMge1xuICBjdXJzb3I6IEN1cnNvcjtcbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb247IFxuICBzZXREaXNwbGF5OiAoLi4uaXRlbXM6IEl0ZW1bXSkgPT4gdm9pZDtcbn1cbmV4cG9ydCB0eXBlIENvbnRleHQgPSBcInBhZ2VcIiB8IFwic3RyZWFtXCIgfCBcImxpc3RcIjtcblxuLyoqIOODnOOCv+ODs+OBruaPj+eUu+aDheWgsSAqL1xuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Db21wb25lbnQge1xuICBzdGF0dXM6IEhUTUxEaXZFbGVtZW50O1xuICBjb250ZXh0OiBDb250ZXh0O1xuICB1cGRhdGU6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBtYWtlQnV0dG9uID0gKGluaXQ6IEJ1dHRvbik6IEJ1dHRvbkNvbXBvbmVudCA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lLCBkaXNwbGF5LCBvbkNsaWNrLCBjb250ZXh0ID0gXCJwYWdlXCIgfSA9IGluaXQ7XG4gIGNvbnN0IHN0YXR1cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGlmIChjbGFzc05hbWUpIHN0YXR1cy5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7XG4gIGlmICghaXNDb250ZXh0KGNvbnRleHQpKSBzdGF0dXMuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICBcbiAgY29uc3Qgc2V0RGlzcGxheSA9ICguLi5pdGVtczogSXRlbVtdKSA9PiB7XG4gICAgLy8g56m65paH5a2X44Gu5aC05ZCI44Gv6Z2e6KGo56S644Gr44GZ44KLXG4gICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMSAmJiBpdGVtc1swXSA9PT0gXCJcIikge1xuICAgICAgc3RhdHVzLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3RhdHVzLnRleHRDb250ZW50ID0gXCJcIjtcbiAgICBjb25zdCBncm91cCA9IG1ha2VHcm91cCguLi5pdGVtcyk7XG4gICAgaWYgKGdyb3VwKSBzdGF0dXMuYXBwZW5kKGdyb3VwKTtcbiAgfTtcbiAgY29uc3QgaXRlbUxpc3QgPSB0eXBlb2YgZGlzcGxheSA9PT0gXCJmdW5jdGlvblwiID8gZGlzcGxheSh7IGN1cnNvciwgc2VsZWN0aW9uIH0pIDogZGlzcGxheTtcbiAgc2V0RGlzcGxheSguLi4oQXJyYXkuaXNBcnJheShpdGVtTGlzdCkgPyBpdGVtTGlzdCA6IFtpdGVtTGlzdF0pKTtcbiAgc3RhdHVzLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIG9uQ2xpY2soeyBjdXJzb3IsIHNlbGVjdGlvbiwgc2V0RGlzcGxheSB9KTtcbiAgfSk7XG4gIFxuICBjb25zdCB1cGRhdGUgPSAoKSA9PiB7XG4gICAgaWYgKGlzQ29udGV4dChjb250ZXh0KSkge1xuICAgICAgc3RhdHVzLnJlbW92ZUF0dHJpYnV0ZShcInN0eWxlXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0dXMuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRpc3BsYXkgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgY29uc3QgaXRlbUxpc3QgPSBkaXNwbGF5KHsgY3Vyc29yLCBzZWxlY3Rpb24gfSk7XG4gICAgICBzZXREaXNwbGF5KC4uLihBcnJheS5pc0FycmF5KGl0ZW1MaXN0KSA/IGl0ZW1MaXN0IDogW2l0ZW1MaXN0XSkpO1xuICAgIH1cbiAgfTtcbiAgXG4gIHJldHVybiB7IHN0YXR1cywgY29udGV4dCwgdXBkYXRlIH07XG59O1xuXG5jb25zdCBpc0NvbnRleHQgPSAoY29udGV4dDogQ29udGV4dCk6IGJvb2xlYW4gPT4gXG4gIGNvbnRleHQgIT09IFwic3RyZWFtXCIgP1xuICAgIHNjcmFwYm94LkxheW91dCA9PT0gY29udGV4dCA6XG4gICAgc2NyYXBib3guTGF5b3V0ID09PSBcImxpc3RcIiAmJiBsb2NhdGlvbi5wYXRobmFtZS5zdGFydHNXaXRoKFwiL3N0cmVhbVwiKTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbmV4cG9ydCBjb25zdCBtYWtlTGVmdFN0YXR1c0JhciA9ICgpOiBIVE1MRGl2RWxlbWVudCA9PiB7XG4gIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBzdHlsZS50ZXh0Q29udGVudCA9IGAuc3RhdHVzLWJhci5sZWZ0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIG1heC13aWR0aDogODB2dztcbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xufVxuLnN0YXR1cy1iYXIubGVmdDplbXB0eSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uc3RhdHVzLWJhci5sZWZ0ID4gZGl2IHtcbiAgYm9yZGVyLWxlZnQ6IHVuc2V0O1xufVxuLnN0YXR1cy1iYXIubGVmdCA+IGRpdiB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLXRvb2wtbGlnaHQtY29sb3IsICNhOWFhYWYpO1xufVxuLnN0YXR1cy1iYXIubGVmdCA+IGRpdjpmaXJzdC1vZi10eXBlIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogdW5zZXQ7XG59XG4uc3RhdHVzLWJhci5sZWZ0ID4gZGl2Omxhc3Qtb2YtdHlwZSB7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7XG59YDtcbiAgZG9jdW1lbnQuaGVhZC5hcHBlbmQoc3R5bGUpO1xuXG4gIGNvbnN0IHN0YXR1c0JhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIHN0YXR1c0Jhci5jbGFzc0xpc3QuYWRkKFwic3RhdHVzLWJhclwiLCBcImxlZnRcIik7XG5cbiAgY29uc3QgZm9vdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImZvb3RlclwiKVswXSE7XG4gIGZvb3Rlci5hcHBlbmQoc3RhdHVzQmFyKTtcblxuICByZXR1cm4gc3RhdHVzQmFyO1xufTsiLCAiaW1wb3J0IHsgQnV0dG9uLCBCdXR0b25Db21wb25lbnQsIENvbnRleHQsIG1ha2VCdXR0b24gfSBmcm9tIFwiLi9idXR0b24udHNcIjtcbmltcG9ydCB7IG1ha2VMZWZ0U3RhdHVzQmFyIH0gZnJvbSBcIi4vc3RhdHVzQmFyLnRzXCI7XG5pbXBvcnQgeyB0YWtlU3RvcmVzIH0gZnJvbSBcIi4uL3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkL2RvbS50c1wiO1xuaW1wb3J0IHR5cGUgeyBTY3JhcGJveCB9IGZyb20gXCIuLi9zY3JhcGJveC1qcCUyRnR5cGVzL3VzZXJzY3JpcHQudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuZXhwb3J0IHR5cGUgeyBCdXR0b24sIENvbnRleHQgfTtcblxubGV0IGFuaW1hdGlvbklkOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4vKiog54++5Zyo55m76Yyy44GV44KM44Gm44GE44KL44Oc44K/44Oz44Gu5o+P55S75oOF5aCxICovXG5jb25zdCBidXR0b25zID0gbmV3IFNldDxCdXR0b25Db21wb25lbnQ+KCk7XG5jb25zdCB7IGN1cnNvciwgc2VsZWN0aW9uIH0gPSB0YWtlU3RvcmVzKCk7XG5jb25zdCBzdGF0dXNCYXIgPSBtYWtlTGVmdFN0YXR1c0JhcigpO1xuXG4vKiog5YWo44Gm44Gu44Oc44K/44Oz44KS5YmK6Zmk44GZ44KLXG4gKlxuICogQHBhcmFtIFtjb250ZXh0XSDjgZPjgZPjgavmjIflrprjgZXjgozjgZ/jg5rjg7zjgrjjga7nqK7poZ7jgafooajnpLrjgZnjgovjg5zjgr/jg7Pjga7jgb/liYrpmaTjgZnjgovjgILkvZXjgoLmjIflrprjgZfjgarjgYTjgajjgY3jga/lhajjgabjga7jg5zjgr/jg7PjgpLliYrpmaTjgZnjgotcbiAqL1xuZXhwb3J0IGNvbnN0IHJlbW92ZUFsbEJ1dHRvbnMgPSAoY29udGV4dD86IENvbnRleHQpOiB2b2lkID0+IHtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgc3RhdHVzQmFyLnRleHRDb250ZW50ID0gXCJcIjtcbiAgICBidXR0b25zLmNsZWFyKCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGZvciAoY29uc3QgYnV0dG9uIG9mIGJ1dHRvbnMpIHtcbiAgICBpZiAoYnV0dG9uLmNvbnRleHQgIT09IGNvbnRleHQpIGNvbnRpbnVlO1xuICAgIGJ1dHRvbi5zdGF0dXMucmVtb3ZlKCk7XG4gICAgYnV0dG9ucy5kZWxldGUoYnV0dG9uKTtcbiAgfVxufTtcblxuLyoqIOODnOOCv+ODs+OCkui/veWKoOOBmeOCi1xuICpcbiAqIEBwYXJhbSBpbml0IOODnOOCv+ODs+OBruioreWumlxuICogQHJldHVybiDliYrpmaTnlKjlh73mlbBcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEJ1dHRvbiA9IChpbml0OiBCdXR0b24pOiAoKSA9PiB2b2lkID0+IHtcbiAgY29uc3QgYnV0dG9uID0gbWFrZUJ1dHRvbihpbml0KTtcbiAgYnV0dG9ucy5hZGQoYnV0dG9uKTtcbiAgc3RhdHVzQmFyLmFwcGVuZChidXR0b24uc3RhdHVzKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBidXR0b24uc3RhdHVzLnJlbW92ZSgpO1xuICAgIGJ1dHRvbnMuZGVsZXRlKGJ1dHRvbik7XG4gIH07XG59O1xuXG4vLyDjgqvjg7zjgr3jg6vkvY3nva7jgajpgbjmip7nr4Tlm7Ljga7lpInljJbjgafmj4/nlLvjgZfnm7TjgZlcbmNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgZm9yIChjb25zdCB7IHVwZGF0ZSB9IG9mIGJ1dHRvbnMpIHtcbiAgICB1cGRhdGUoKTtcbiAgfVxufTtcblxuY3Vyc29yLmFkZENoYW5nZUxpc3RlbmVyKCgpID0+IHVwZGF0ZSgpKTtcbnNlbGVjdGlvbi5hZGRDaGFuZ2VMaXN0ZW5lcigoKSA9PiB1cGRhdGUoKSk7XG5zY3JhcGJveC5hZGRMaXN0ZW5lcihcImxheW91dDpjaGFuZ2VkXCIsIHVwZGF0ZSk7XG4iLCAiaW1wb3J0IHR5cGUgeyBDdXJzb3IsIFNlbGVjdGlvbiB9IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcbmltcG9ydCB7XG4gIGdldFRleHQsXG4gIGluc2VydFRleHQsXG4gIHByZXNzLFxufSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvZG9tLnRzXCI7XG5cbi8qKiBwb3J0ZXLjga7mjJnli5XjgavlkIjjgo/jgZvjgZ9jb3B5IGNvbW1hbmQgKi9cbmV4cG9ydCBjb25zdCBwb3J0ZXJDb3B5ID0gYXN5bmMgKGN1cnNvcjogQ3Vyc29yLCBzZWxlY3Rpb246IFNlbGVjdGlvbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHRleHQgPSBzZWxlY3Rpb24uZ2V0U2VsZWN0ZWRUZXh0KCkgfHwgZ2V0VGV4dChjdXJzb3IuZ2V0UG9zaXRpb24oKS5saW5lKTtcbiAgICBpZiAoIXRleHQpIHJldHVybjtcbiAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTtcbiAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgYWxlcnQoYEZhaWxkIHRvIGNvcHk6XFxuJHtKU09OLnN0cmluZ2lmeShlKX1gKTtcbiAgfVxufTtcblxuLyoqIHBvcnRlcuOBruaMmeWLleOBq+WQiOOCj+OBm+OBn2N1dCBjb21tYW5kICovXG5leHBvcnQgY29uc3QgcG9ydGVyQ3V0ID0gYXN5bmMgKGN1cnNvcjogQ3Vyc29yLCBzZWxlY3Rpb246IFNlbGVjdGlvbik6IFByb21pc2U8dm9pZD4gPT4ge1xuIHRyeSB7XG4gICBjb25zdCBoYXNTZWxlY3Rpb24gPSBzZWxlY3Rpb24uaGFzU2VsZWN0aW9uKCk7XG4gICBjb25zdCBzdGFydCA9IGhhc1NlbGVjdGlvbiA/XG4gICAgIHNlbGVjdGlvbi5nZXRSYW5nZSgpLnN0YXJ0LmxpbmUgOlxuICAgICBjdXJzb3IuZ2V0UG9zaXRpb24oKS5saW5lO1xuICAgY29uc3QgdGV4dCA9IGhhc1NlbGVjdGlvblxuICAgICA/IHNlbGVjdGlvbi5nZXRTZWxlY3RlZFRleHQoKVxuICAgICA6IGdldFRleHQoc3RhcnQpO1xuICAgaWYgKCF0ZXh0KSByZXR1cm47XG4gICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTtcbiAgIGlmICghaGFzU2VsZWN0aW9uKSB7XG4gICAgIHNlbGVjdGlvbi5zZXRSYW5nZSh7XG4gICAgICAgc3RhcnQ6IHsgbGluZTogc3RhcnQsIGNoYXI6IDAgfSxcbiAgICAgICBlbmQ6IHsgbGluZTogc3RhcnQsIGNoYXI6IHRleHQubGVuZ3RoIH0sXG4gICAgIH0pO1xuICAgfVxuICAgY3Vyc29yLmZvY3VzKCk7XG4gICBwcmVzcyhcIkRlbGV0ZVwiKTtcbiB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICBjb25zb2xlLmVycm9yKGUpO1xuICAgYWxlcnQoYEZhaWxkIHRvIGN1dDpcXG4ke0pTT04uc3RyaW5naWZ5KGUpfWApO1xuIH1cbn07XG5cbi8qKiBwb3J0ZXLjga7mjJnli5XjgavlkIjjgo/jgZvjgZ9wYXN0ZSBjb21tYW5kICovXG5leHBvcnQgY29uc3QgcG9ydGVyUGFzdGUgPSBhc3luYyAoY3Vyc29yOiBDdXJzb3IpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB0ZXh0ID0gYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkVGV4dCgpO1xuICAgIGlmICghdGV4dCkgcmV0dXJuO1xuICAgIGN1cnNvci5mb2N1cygpO1xuICAgIGF3YWl0IGluc2VydFRleHQodGV4dCk7XG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIGFsZXJ0KGBGYWlsZCB0byBwYXN0ZTpcXG4ke0pTT04uc3RyaW5naWZ5KGUpfWApO1xuICB9XG59O1xuXG4vKiogY3Vyc29y44KS6KGo56S644KS5YiH44KK5pu/44GI44KLXG4gKlxuICogbW9iaWxl44Gg44GocG9wdXAgbWVudeOCkuihqOekuuOBmeOCi2NvbW1hbmTjgajjgZfjgabjgoLkvb/jgYjjgotcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZUNhcmV0ID0gKGN1cnNvcjogQ3Vyc29yKSA9PiB7XG4gIFxuICBpZiAoY3Vyc29yLmdldFZpc2libGUoKSAmJiBjdXJzb3IuaGFzRm9jdXNcbiAgICAvLyBAdHMtaWdub3JlIHByaXZhdGXmibHjgYTjgaDjgZHjganjgIHjgZPjgozjgZfjgYvjgqLjgq/jgrvjgrnmlrnms5XjgYzjgarjgYTjgZ/jgoHkvb/jgo/jgZvjgabjgYTjgZ/jgaDjgY9cbiAgICAmJiBjdXJzb3IudmlzaWJsZVBvcHVwTWVudSkge1xuICAgIGN1cnNvci5oaWRlKCk7XG4gIH0gZWxzZSB7XG4gICAgY3Vyc29yLmZvY3VzKCk7XG4gICAgY3Vyc29yLnNob3dFZGl0UG9wdXBNZW51KCk7XG4gIH1cbn07XG4iLCAiaW1wb3J0IHsgdGFrZUN1cnNvciB9IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcbmdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgKGUpID0+IHtcbiAgaWYgKGUua2V5ICE9PSBcImlcIiB8fCBlLnNoaWZ0S2V5IHx8IGUuYWx0S2V5IHx8IGUubWV0YUtleSB8fCAhZS5jdHJsS2V5KSByZXR1cm47XG4gIGlmIChlLmlzQ29tcG9zaW5nKSByZXR1cm47XG4gIGNvbnN0IGN1cnNvciA9IHRha2VDdXJzb3IoKTtcbiAgaWYgKGN1cnNvci5oYXNGb2N1cykgcmV0dXJuO1xuICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIGN1cnNvci5mb2N1cygpO1xufSk7IiwgImNsYXNzIFNjcmFwYm94RE9NIHtcbiAgZ2V0IGVkaXRvcigpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpO1xuICB9XG4gIGdldCBsaW5lcygpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluZXMnKT8uWzBdO1xuICB9XG4gIGdldCBjb21wdXRlTGluZSgpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbXB1dGUtbGluZScpO1xuICB9XG4gIGdldCBncmlkKCkge1xuICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyZWxhdGVkLXBhZ2UtbGlzdCBjbGVhcmZpeCcpPy5bMF1cbiAgICAgID8uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ3JpZCcpPy5bMF07XG4gIH1cbiAgZ2V0IGN1cnNvckxpbmUoKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2N1cnNvci1saW5lJyk/LlswXTtcbiAgfVxuICBnZXQgdGV4dElucHV0KCkge1xuICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dC1pbnB1dCcpO1xuICB9XG4gIGdldCBjdXJzb3IoKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2N1cnNvcicpPy5bMF07XG4gIH1cbiAgZ2V0IHNlbGVjdGlvbnMoKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3NlbGVjdGlvbnMnKT8uWzBdO1xuICB9XG4gIGdldCBwb3B1cE1lbnUoKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3BvcHVwLW1lbnUnKT8uWzBdO1xuICB9XG4gIGdldCBwYWdlTWVudXMoKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3BhZ2UtbWVudScpPy5bMF07XG4gIH1cbiAgZ2V0IHBhZ2VJbmZvTWVudSgpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtaW5mby1tZW51Jyk7XG4gIH1cbiAgZ2V0IHBhZ2VFZGl0TWVudSgpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtZWRpdC1tZW51Jyk7XG4gIH1cbiAgZ2V0IHBhZ2VFZGl0QnV0dG9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlRWRpdE1lbnUubmV4dEVsZW1lbnRTaWJsaW5nLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhJyk7XG4gIH1cbiAgZ2V0IHJhbmRvbUp1bXBCdXR0b24oKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3JhbmRvbS1qdW1wLWJ1dHRvbicpPy5bMF07XG4gIH1cbiAgZ2V0IHBhZ2VDdXN0b21CdXR0b25zKCkge1xuICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwYWdlLW1lbnUtZXh0ZW5zaW9uJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNjcmFwYm94RE9NID0gbmV3IFNjcmFwYm94RE9NKCk7IiwgImV4cG9ydCBjb25zdCBzbGVlcCA9IChtaWxsaXNlY29uZHMpID0+IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtaWxsaXNlY29uZHMpKTsiLCAiaW1wb3J0IHtzY3JhcGJveERPTX0gZnJvbSAnLi4vc2NyYXBib3gtZG9tLWFjY2Vzc29yL3NjcmlwdC5qcyc7XG5pbXBvcnQge3NsZWVwfSBmcm9tICcuLi9zbGVlcC9zY3JpcHQuanMnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5zZXJ0VGV4dCh0ZXh0LCB7d2FpdCA9IDF9ID0ge30pIHtcbiAgY29uc3QgY3Vyc29yID0gc2NyYXBib3hET00udGV4dElucHV0O1xuICBjdXJzb3IuZm9jdXMoKTtcbiAgY3Vyc29yLnZhbHVlID0gdGV4dDtcbiAgXG4gIGNvbnN0IHVpRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnVUlFdmVudCcpO1xuICB1aUV2ZW50LmluaXRFdmVudCgnaW5wdXQnLCB0cnVlLCBmYWxzZSk7XG4gIGN1cnNvci5kaXNwYXRjaEV2ZW50KHVpRXZlbnQpO1xuICBhd2FpdCBzbGVlcCh3YWl0KTtcbn0iLCAiaW1wb3J0IHtsaWdodEZvcm1hdH0gZnJvbSAnLi4vZGF0ZS1mbnMubWluLmpzL3NjcmlwdC5qcyc7XG5pbXBvcnQge2luc2VydFRleHR9IGZyb20gJy9hcGkvY29kZS90YWtrZXIvc2NyYXBib3gtaW5zZXJ0LXRleHQtMi9zY3JpcHQuanMnO1xuaW1wb3J0IHtpc01vYmlsZX0gZnJvbSAnLi4vbW9iaWxl54mIc2NyYXBib3jjga7liKTlrpovc2NyaXB0LmpzJztcblxuaWYgKGlzTW9iaWxlKCkpIHtcbiAgY29uc3QgaWQgPSAnVGltZXN0YW1wJztcbiAgc2NyYXBib3guUGFnZU1lbnUuYWRkTWVudSh7XG4gICAgdGl0bGU6IGlkLFxuICAgIGltYWdlOiAnaHR0cHM6Ly9pbWcuaWNvbnM4LmNvbS9pb3MvMTgwL0ZGRkZGRi9hZGQtdGltZS5wbmcnLFxuICAgIC8vIGxpZ2h0IHRoZW1l44Gu44Go44GN44Gv4oaT44KS5L2/44GGXG4gICAgLy9pbWFnZTogJ2h0dHBzOi8vaW1nLmljb25zOC5jb20vaW9zLzE4MC9hZGQtdGltZS5wbmcnLFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiAnI1lZWVktTU0tREQgSEg6bW06c3MgJyxcbiAgICBvbkNsaWNrOiAoKSA9PiBpbnNlcnRUZXh0KGxpZ2h0Rm9ybWF0KG5ldyBEYXRlKCksICcjeXl5eS1NTS1kZCBISDptbTpzcyAnKSksXG4gIH0pO1xuICBzY3JhcGJveC5QYWdlTWVudShpZCkuYWRkSXRlbSh7XG4gICAgdGl0bGU6ICdZWVlZLU1NLUREIEhIOm1tOnNzICcsXG4gICAgb25DbGljazogKCkgPT4gaW5zZXJ0VGV4dChsaWdodEZvcm1hdChuZXcgRGF0ZSgpLCAneXl5eS1NTS1kZCBISDptbTpzcyAnKSksXG4gIH0pO1xuICBzY3JhcGJveC5QYWdlTWVudShpZCkuYWRkSXRlbSh7XG4gICAgdGl0bGU6ICdZWVlZLU1NLUREJyxcbiAgICBvbkNsaWNrOiAoKSA9PiBpbnNlcnRUZXh0KGxpZ2h0Rm9ybWF0KG5ldyBEYXRlKCksICd5eXl5LU1NLWRkJykpLFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiAnSEg6bW06c3MgJyxcbiAgICBvbkNsaWNrOiAoKSA9PiBpbnNlcnRUZXh0KGxpZ2h0Rm9ybWF0KG5ldyBEYXRlKCksICdISDptbTpzcyAnKSksXG4gIH0pO1xuICBzY3JhcGJveC5QYWdlTWVudShpZCkuYWRkSXRlbSh7XG4gICAgdGl0bGU6ICfirJwnLFxuICAgIG9uQ2xpY2s6ICgpID0+IGluc2VydFRleHQoJ+KsnCcpLFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiAn8J+apycsXG4gICAgb25DbGljazogKCkgPT4gaW5zZXJ0VGV4dCgn8J+apycpLFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiAn4oybJyxcbiAgICBvbkNsaWNrOiAoKSA9PiBpbnNlcnRUZXh0KCfijJsnKSxcbiAgfSk7XG4gIHNjcmFwYm94LlBhZ2VNZW51KGlkKS5hZGRJdGVtKHtcbiAgICB0aXRsZTogJ/Cfk50nLFxuICAgIG9uQ2xpY2s6ICgpID0+IGluc2VydFRleHQoJ/Cfk50nKSxcbiAgfSk7XG4gIHNjcmFwYm94LlBhZ2VNZW51KGlkKS5hZGRJdGVtKHtcbiAgICB0aXRsZTogJ+KchScsXG4gICAgb25DbGljazogKCkgPT4gaW5zZXJ0VGV4dCgn4pyFJyksXG4gIH0pO1xuICBzY3JhcGJveC5QYWdlTWVudShpZCkuYWRkSXRlbSh7XG4gICAgdGl0bGU6ICfinYwnLFxuICAgIG9uQ2xpY2s6ICgpID0+IGluc2VydFRleHQoJ+KdjCcpLFxuICB9KTtcbn0iLCAic2NyYXBib3guUGFnZU1lbnUuYWRkSXRlbSh7XG4gIHRpdGxlOiBcIk9wZW4ga2FrZXJ1XCIsXG4gIGltYWdlOiBcImh0dHBzOi8vaS5rYWtlcnUuYXBwLzE1YzNiMWE0MGI2YjNjMmViZDY4ZjMzZjRjODZiM2Y2LW9wYXF1ZS5wbmdcIixcbiAgb25DbGljazogKCkgPT4gd2luZG93Lm9wZW4oXCJodHRwczovL2tha2VydS5hcHBcIiksXG59KTsiLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuaW1wb3J0IHsgZGVsZXRlUGFnZSwgZ2V0UGFnZSwgcGF0Y2ggfSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvbW9kLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNwb3J0SW5pdCB7XG4gIC8qKiDou6LpgIHlhYNwcm9qZWN0ICovXG4gIGZyb206IHN0cmluZztcbiAgLyoqIOi7oumAgeWFiHByb2plY3QgKi9cbiAgdG86IHN0cmluZztcbiAgLyoqIOi7oumAgeWFiOOBq+WQjOOBmOOCv+OCpOODiOODq+OBruODmuODvOOCuOOBjOOBguOBo+OBn+OBqOOBjeOBruaMmeWLlVxuICAgKlxuICAgKiAtIGB0cnVlYDog5pyr5bC+44Gr6L+96KiY44GZ44KLXG4gICAqIC0gYGZhbHNlYDog5L2V44KC44GX44Gq44GEXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBtZXJnZT86IGJvb2xlYW47XG59XG5leHBvcnQgdHlwZSBUcmFuc3BvcnRSZXN1bHQgPSB7XG4gIHN1Y2Nlc3M6IHRydWU7XG4gIC8qKiDlkIzlkI3jga7jg5rjg7zjgrjjgYzou6LpgIHlhYjjgavjgYLjgaPjgZ/jgol0cnVlICovXG4gIGR1cDogYm9vbGVhbjtcbn0gfCB7XG4gIHN1Y2Nlc3M6IGZhbHNlO1xuICBhdDogXCJmcm9tXCIgfCBcInRvXCI7XG4gIG5hbWU6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufTtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cmFuc3BvcnQodGl0bGU6IHN0cmluZywge1xuICBmcm9tLFxuICB0byxcbiAgbWVyZ2UsXG59OiBUcmFuc3BvcnRJbml0KTogUHJvbWlzZTxUcmFuc3BvcnRSZXN1bHQ+IHtcbiAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBkdXA6IGZhbHNlIH07XG5cbiAgLy8g6Lui6YCB44GZ44KL44Oa44O844K444KS5Y+W5b6XXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGdldFBhZ2UoZnJvbSwgdGl0bGUpO1xuICBpZiAoIXJlcy5vaykge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGF0OiBcImZyb21cIixcbiAgICAgIG5hbWU6IHJlcy52YWx1ZS5uYW1lLFxuICAgICAgbWVzc2FnZTogcmVzLnZhbHVlLm1lc3NhZ2UsXG4gICAgfTtcbiAgfVxuICBjb25zdCBwYWdlID0gcmVzLnZhbHVlO1xuICBpZiAoIXBhZ2UucGVyc2lzdGVudCkge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGF0OiBcImZyb21cIixcbiAgICAgIG5hbWU6IFwiRW1wdHlQYWdlRXJyb3JcIixcbiAgICAgIG1lc3NhZ2U6IFwiVGhlIHJlcXVlc3QgcGFnZSBpcyBlbXB0eS5cIixcbiAgICB9O1xuICB9XG5cbiAgLy8g6Lui6YCB5YWI44Oa44O844K444GM44GC44KL44GL44Gp44GG44GL44KS6Kq/44G544KLXG4gIGNvbnN0IHJlczIgPSBhd2FpdCBnZXRQYWdlKHRvLCB0aXRsZSk7XG4gIGlmICghcmVzMi5vaykge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGF0OiBcInRvXCIsXG4gICAgICBuYW1lOiByZXMyLnZhbHVlLm5hbWUsXG4gICAgICBtZXNzYWdlOiByZXMyLnZhbHVlLm1lc3NhZ2UsXG4gICAgfTtcbiAgfVxuICBjb25zdCBwYWdlMiA9IHJlcy52YWx1ZTtcbiAgaWYgKHBhZ2UyLnBlcnNpc3RlbnQgJiYgIW1lcmdlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgYXQ6IFwidG9cIixcbiAgICAgIG5hbWU6IFwiTm9FbXB0eVBhZ2VFcnJvclwiLFxuICAgICAgbWVzc2FnZTogYFRoZSBzYW1lIHBhZ2UgYWxyZWFkeSBleGlzdHMgaW4gXCIvJHt0b31cImAsXG4gICAgfTtcbiAgfVxuXG4gIC8vIOi7oumAgeOBmeOCi1xuICBhd2FpdCBwYXRjaChcbiAgICB0byxcbiAgICB0aXRsZSxcbiAgICAobGluZXMpID0+IFsuLi5saW5lcywgLi4ucGFnZS5saW5lcy5zbGljZSgxKV0ubWFwKChsaW5lKSA9PiBsaW5lLnRleHQpLFxuICApO1xuICBhd2FpdCBkZWxldGVQYWdlKGZyb20sIHRpdGxlKTtcbiAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgZHVwOiBwYWdlMi5wZXJzaXN0ZW50IH07XG59IiwgImltcG9ydCB7IHRyYW5zcG9ydCB9IGZyb20gXCIuL21vZC50c1wiO1xuaW1wb3J0IHtcbiAgdXNlU3RhdHVzQmFyLFxuICBlbmNvZGVUaXRsZVVSSSxcbn0gZnJvbSBcIi4uL3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkL2RvbS50c1wiO1xuaW1wb3J0IHR5cGUge1xuICBTY3JhcGJveFxufSBmcm9tIFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NjcmFwYm94LWpwL3R5cGVzLzAuMC44L21vZC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmV4cG9ydCBjb25zdCB0cmFuc3BvcnRQYWdlID0gYXN5bmMgKCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiA9PiB7XG4gIGNvbnN0IHRpdGxlID0gc2NyYXBib3guUGFnZS50aXRsZSE7XG4gIGNvbnN0IGZyb20gPSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWU7XG4gIGNvbnN0IHRvID0gd2luZG93LnByb21wdChcbiAgICBgVGFrZSBcIi8ke2Zyb219LyR7dGl0bGV9XCIgZnJvbSBcIiR7ZnJvbX1cIiB0bzpgLFxuICAgIFwidGFra2VyXCIsXG4gICk7XG4gIGlmICghdG8pIHJldHVybjtcbiAgXG4gIGNvbnN0IHsgcmVuZGVyLCBkaXNwb3NlIH0gPSB1c2VTdGF0dXNCYXIoKTtcbiAgcmVuZGVyKFxuICAgIHsgdHlwZTogXCJzcGlubmVyXCIgfSxcbiAgICB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBgLyR7ZnJvbX0vJHt0aXRsZX0g4oaSIC8ke3RvfS8ke3RpdGxlfWAgfVxuICApO1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zcG9ydCh0aXRsZSwgeyBmcm9tLCB0bywgbWVyZ2U6IHRydWUgfSk7XG4gICAgaWYgKCFyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgcmVuZGVyKFxuICAgICAgICB7IHR5cGU6IFwiZXhjbGFtYXRpb24tdHJpYW5nbGVcIiB9LFxuICAgICAgICB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBgJHtyZXN1bHQubmFtZX0gJHtyZXN1bHQubWVzc2FnZX1gLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgcmVuZGVyKFxuICAgICAgeyB0eXBlOiBcImNoZWNrLWNpcmNsZVwiIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgTW92ZWQgJHtyZXN1bHQuZHVwID8gXCJhbmQgbWVyZ2VkIFwiIDogXCJcIn10byBcIi8ke3RvfS8ke3RpdGxlfVwiLmBcbiAgICAgIH0sXG4gICAgKTtcbiAgICByZXR1cm4gYGh0dHBzOi8vc2NyYXBib3guaW8vJHt0b30vJHtlbmNvZGVUaXRsZVVSSSh0aXRsZSl9YDtcbiAgfSBjYXRjaChlOiB1bmtub3duKSB7XG4gICAgcmVuZGVyKFxuICAgICAgeyB0eXBlOiBcImV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCIgfSxcbiAgICAgIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IGUgaW5zdGFuY2VvZiBFcnJvciA/XG4gICAgICAgIGAke2UubmFtZX0gJHtlLm1lc3NhZ2V9YCA6XG4gICAgICAgIGBVbmtub3duIGVycm9yISAoc2VlIGRldmVsb3BwZXIgY29uc29sZSlgLFxuICAgICAgfSxcbiAgICApO1xuICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gIH0gZmluYWxseSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiBkaXNwb3NlKCksIDEwMDApO1xuICB9XG59O1xuIiwgImltcG9ydCB7IHRyYW5zcG9ydFBhZ2UgfSBmcm9tIFwiLi90cmFuc3BvcnRQYWdlLnRzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIFNjcmFwYm94XG59IGZyb20gXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc2NyYXBib3gtanAvdHlwZXMvMC4wLjgvbW9kLnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuc2NyYXBib3guUGFnZU1lbnUuYWRkSXRlbSh7XG4gIHRpdGxlOiBcIlRyYW5zcG9ydFwiLFxuICBvbkNsaWNrOiBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdHJhbnNwb3J0UGFnZSgpO1xuICB9LFxufSk7XG5zY3JhcGJveC5QYWdlTWVudS5hZGRJdGVtKHtcbiAgdGl0bGU6IFwiVHJhbnNwb3J0IGFuZCBPcGVuXCIsXG4gIG9uQ2xpY2s6IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1cmwgPSBhd2FpdCB0cmFuc3BvcnRQYWdlKCk7XG4gICAgaWYgKCF1cmwpIHJldHVybjtcbiAgICB3aW5kb3cub3Blbih1cmwpO1xuICB9LFxufSk7XG4gICAiLCAiZXhwb3J0IGNvbnN0IGZvcm1hdFRpdGxlID0gKHRpdGxlOiBzdHJpbmcpID0+IHRpdGxlXG4gIC5yZXBsYWNlKC9bXFxbXFxdXS9nLCBcIlwiKVxuICAucmVwbGFjZSgvXFxzL2csIFwiIFwiKTtcblxuY29uc3QgemVybyA9IChuOiBudW1iZXIpID0+IGAke259YC5wYWRTdGFydCgyLCBcIjBcIik7XG5leHBvcnQgY29uc3QgdG9ZWVlZTU1ERF9ISE1NU1MgPSAoZGF0ZTogRGF0ZSkgPT5cbiAgYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0ke3plcm8oZGF0ZS5nZXRNb250aCgpICsgMSl9LSR7XG4gICAgemVybyhkYXRlLmdldERhdGUoKSlcbiAgfSAke3plcm8oZGF0ZS5nZXRIb3VycygpKX06JHtcbiAgICB6ZXJvKGRhdGUuZ2V0TWludXRlcygpKVxuICB9OiR7emVybyhkYXRlLmdldFNlY29uZHMoKSl9YDtcbmV4cG9ydCBjb25zdCB0b1lZWVlNTUREID0gKGRhdGU6IERhdGUpID0+XG4gIGAke2RhdGUuZ2V0RnVsbFllYXIoKX0tJHt6ZXJvKGRhdGUuZ2V0TW9udGgoKSArIDEpfS0ke1xuICAgIHplcm8oZGF0ZS5nZXREYXRlKCkpXG4gIH1gO1xuIiwgImltcG9ydCB7XG4gIHBhdGNoLFxuICB1c2VTdGF0dXNCYXIsXG4gIG9wZW5JblRoZVNhbWVUYWIsXG4gIFNvY2tldCxcbiAgbWFrZVNvY2tldCxcbiAgZGlzY29ubmVjdCxcbiAgc2xlZXAsXG4gIGNhcmV0LFxufSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvbW9kLnRzXCI7XG5pbXBvcnQge1xuICBnZXRJbmRlbnRMaW5lQ291bnQsXG4gIGdldEluZGVudENvdW50LFxufSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvdGV4dC50c1wiO1xuaW1wb3J0IHsgZm9ybWF0VGl0bGUsIHRvWVlZWU1NRERfSEhNTVNTLCB0b1lZWVlNTUREIH0gZnJvbSBcIi4vdXRpbC50c1wiO1xuXG50eXBlIFBhZ2UgPSBzdHJpbmdbXTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZFRvSW5ib3goXG4gIHByb2plY3Q6IHN0cmluZywgdGl0bGU6IHN0cmluZywgbGluZXM6IHN0cmluZ1tdLFxuICBvcHRpb25zPzogeyBzb2NrZXQ6IFNvY2tldCB9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgcmVuZGVyLCBkaXNwb3NlIH0gPSB1c2VTdGF0dXNCYXIoKTtcbiAgXG4gIGNvbnN0IGl0ZW1zOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBwYWdlczogUGFnZVtdID0gW107XG4gIGZvciAoY29uc3QgYmxvY2sgb2YgcGFyc2UobGluZXMpKSB7XG4gICAgaWYgKGJsb2NrLnR5cGUgPT09IFwibGluZVwiKSB7XG4gICAgICBpdGVtcy5wdXNoKGBbJHtmb3JtYXRUaXRsZShibG9jay50ZXh0KX1+QCR7dG9ZWVlZTU1ERChuZXcgRGF0ZSgpKX1dYCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgdGl0bGUgPSBgJHtmb3JtYXRUaXRsZShibG9jay5saW5lc1swXSl9fkAke3RvWVlZWU1NREQobmV3IERhdGUoKSl9YDtcbiAgICBwYWdlcy5wdXNoKFtcbiAgICAgIHRpdGxlLFxuICAgICAgLi4uYmxvY2subGluZXMuc2xpY2UoMSksXG4gICAgICBcIlwiLFxuICAgICAgYCMke3RvWVlZWU1NRERfSEhNTVNTKG5ldyBEYXRlKCkpfWAsXG4gICAgXSk7XG4gICAgaXRlbXMucHVzaChgWyR7dGl0bGV9XWApO1xuICB9XG5cbiAgbGV0IHNvY2tldCA9IG9wdGlvbnM/LnNvY2tldDtcbiAgdHJ5IHtcbiAgICBzb2NrZXQgPz89IGF3YWl0IG1ha2VTb2NrZXQoKTtcbiAgICByZW5kZXIoXG4gICAgICB7IHR5cGU6IFwic3Bpbm5lclwiIH0sXG4gICAgICB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBgQWRkaW5nICR7aXRlbXMubGVuZ3RofSBpdGVtcy4uLmAgfSxcbiAgICApO1xuICAgIGF3YWl0IHBhdGNoKHByb2plY3QsIHRpdGxlLCAoX2xpbmVzKSA9PiB7XG4gICAgICBjb25zdCBsaW5lcyA9IF9saW5lcy5tYXAoKGxpbmUpID0+IGxpbmUudGV4dCk7XG4gICAgICBjb25zdCBsYXN0U2VwYXJhdG9ySW5kZXggPSBsaW5lcy5mbGF0TWFwKFxuICAgICAgICAobGluZSwgaSkgPT4gbGluZS50cmltKCkgPT09IFwiWy9pY29ucy9oci5pY29uXVwiID8gW2ldIDogW11cbiAgICAgICkucG9wKCkgPz8gLTE7XG4gICAgICAvLyDku5XliIfjgornt5rjgYzopovjgaTjgYvjgonjgarjgZHjgozjgbDjgIHmnKvlsL7jgavov73oqJjjgZnjgotcbiAgICAgIGlmIChsYXN0U2VwYXJhdG9ySW5kZXggPCAwKSByZXR1cm4gWy4uLmxpbmVzLCAuLi5pdGVtc107XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi5saW5lcy5zbGljZSgwLCBsYXN0U2VwYXJhdG9ySW5kZXgpLFxuICAgICAgICAuLi5pdGVtcyxcbiAgICAgICAgLi4ubGluZXMuc2xpY2UobGFzdFNlcGFyYXRvckluZGV4KSxcbiAgICAgIF07XG4gICAgfSwgeyBzb2NrZXQgfSk7XG4gICAgcmVuZGVyKFxuICAgICAgeyB0eXBlOiBcInNwaW5uZXJcIiB9LFxuICAgICAgeyB0eXBlOiBcInRleHRcIiwgdGV4dDogYENyZWF0ZSAke3BhZ2VzLmxlbmd0aH0gcGFnZXMuLi5gIH0sXG4gICAgKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChwYWdlcy5tYXAoXG4gICAgICAocGFnZSkgPT4gcGF0Y2gocHJvamVjdCwgcGFnZVswXSwgKGxpbmVzKSA9PiBbXG4gICAgICAgIGxpbmVzWzBdLnRleHQsXG4gICAgICAgIC4uLmxpbmVzLnNsaWNlKDEpLm1hcCgobGluZSkgPT4gbGluZS50ZXh0KSxcbiAgICAgICAgLi4ucGFnZS5zbGljZSgxKSxcbiAgICAgIF0sIHsgc29ja2V0IH0pXG4gICAgKSk7XG4gICAgcmVuZGVyKFxuICAgICAgeyB0eXBlOiBcImNoZWNrLWNpcmNsZVwiIH0sXG4gICAgICB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBcIkFkZGVkIHRvIHRoZSBpbmJveC5cIiB9LFxuICAgICk7XG4gIH0gY2F0Y2goZTogdW5rbm93bikge1xuICAgIHJlbmRlcihcbiAgICAgIHsgdHlwZTogXCJleGNsYW1hdGlvbi10cmlhbmdsZVwiIH0sXG4gICAgICB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBcIkZhaWxlZCB0byBhZGQgKHNlZSBjb25zb2xlKS4gV3JpdGUgZGlyZWN0b3J5IGluc3RlYWQuXCIgfSxcbiAgICApO1xuICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgb3BlbkluVGhlU2FtZVRhYihwcm9qZWN0LCB0aXRsZSwgWy4uLml0ZW1zLCAuLi5wYWdlc10uam9pbihcIlxcblwiKSk7XG4gIH0gZmluYWxseSB7XG4gICAgY29uc3Qgd2FpdGluZyA9IHNsZWVwKDEwMDApO1xuICAgIGlmIChzb2NrZXQpIGF3YWl0IGRpc2Nvbm5lY3Qoc29ja2V0KTtcbiAgICBhd2FpdCB3YWl0aW5nO1xuICAgIGRpc3Bvc2UoKTtcbiAgfVxufVxuXG50eXBlIEJsb2NrID0geyB0eXBlOiBcImxpbmVcIjsgdGV4dDogc3RyaW5nOyB9IHwgeyB0eXBlOiBcImJsb2NrXCI7IGxpbmVzOiBzdHJpbmdbXTsgfTtcbmZ1bmN0aW9uKiBwYXJzZShsaW5lczogc3RyaW5nW10pOiBHZW5lcmF0b3I8QmxvY2ssIHZvaWQsIHVua25vd24+IHtcbiAgbGV0IGluZGV4ID0gMDtcbiAgd2hpbGUgKGluZGV4IDwgbGluZXMubGVuZ3RoKSB7XG4gICAgY29uc3QgY291bnQgPSBnZXRJbmRlbnRMaW5lQ291bnQoaW5kZXgsIGxpbmVzKTtcbiAgICBpZiAoY291bnQgPT09IDApIHtcbiAgICAgIHlpZWxkIHsgdHlwZTogXCJsaW5lXCIsIHRleHQ6IGxpbmVzW2luZGV4XS50cmltKCkgfTtcbiAgICAgIGluZGV4Kys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgaW5kZW50TnVtID0gZ2V0SW5kZW50Q291bnQobGluZXNbaW5kZXhdKTtcbiAgICB5aWVsZCB7XG4gICAgICB0eXBlOiBcImJsb2NrXCIsXG4gICAgICBsaW5lczogbGluZXMuc2xpY2UoaW5kZXgsIGluZGV4ICsgY291bnQgKyAxKVxuICAgICAgICAubWFwKGxpbmUgPT4gbGluZS5zbGljZShpbmRlbnROdW0pKSxcbiAgICB9O1xuICAgIGluZGV4ICs9IGNvdW50ICsgMTtcbiAgfVxufVxuIiwgImltcG9ydCB7IGFkZFRvSW5ib3ggfSBmcm9tIFwiLi9hZGRUb0luYm94LnRzXCI7XG5pbXBvcnQge1xuICBjYXJldCxcbiAgcGF0Y2gsXG4gIGdldExpbmVzLFxuICBtYWtlU29ja2V0LFxufSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvbW9kLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFNjcmFwYm94IH0gZnJvbSBcImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9zY3JhcGJveC1qcC90eXBlcy8wLjAuOC9tb2QudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG4vKiogUHJvbXB044GL44KJaW5ib3jjgavmipXlhaXjgZnjgotcbiAgKlxuICAqIEBwYXJhbSBwcm9qZWN0IOaKleWFpeWFiGluYm9444Oa44O844K444GM44GC44KLcHJvamVjdFxuICAqIEBwYXJhbSB0aXRsZSDmipXlhaXlhYhpbmJveOODmuODvOOCuOOBruOCv+OCpOODiOODq1xuICAqL1xuZXhwb3J0IGNvbnN0IGFkZFRvSW5ib3hGcm9tUHJvbXB0ID0gYXN5bmMgKFxuICBwcm9qZWN0OiBzdHJpbmcsXG4gIHRpdGxlOiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgdGV4dCA9IHdpbmRvdy5wcm9tcHQoXCJUeXBlIGFsbCB5b3UgdGhpbmsgb2ZcIiwgXCJcIik7XG4gIGlmICghdGV4dCB8fCB0ZXh0LnRyaW0oKSA9PT0gXCJcIikgcmV0dXJuO1xuICBjb25zdCBpdGVtcyA9IHRleHQudHJpbSgpLnNwbGl0KC9cXHMrLyk7XG4gIFxuICBhd2FpdCBhZGRUb0luYm94KHByb2plY3QsIHRpdGxlLCBpdGVtcyk7XG59O1xuXG4vKiog6YG45oqe56+E5Zuy44Gr44GL44GL44Gj44Gm44GE44KL6KGM44KSaW5ib3jjgavmipXlhaXjgZnjgotcbiAgKlxuICAqIEBwYXJhbSBwcm9qZWN0IOaKleWFpeWFiGluYm9444Oa44O844K444GM44GC44KLcHJvamVjdFxuICAqIEBwYXJhbSB0aXRsZSDmipXlhaXlhYhpbmJveOODmuODvOOCuOOBruOCv+OCpOODiOODq1xuICAqIEBwYXJhbSBvcHRpb24gYGZhbGxiYWNrVG9Qcm9tcHRg44KSYHRydWVg44Gr44GZ44KL44Go44CB6YG45oqe56+E5Zuy44GM44Gq44GE44Go44GrYGFkZFRvSW5ib3hGcm9tUHJvbXB0KClg44KS6LW35YuV44GZ44KL44KI44GG44Gr44Gq44KLXG4gICovXG5leHBvcnQgY29uc3QgYWRkVG9JbmJveEZyb21TZWxlY3Rpb24gPSBhc3luYyAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgdGl0bGU6IHN0cmluZyxcbiAgb3B0aW9uPzogeyBmYWxsYmFja1RvUHJvbXB0PzogYm9vbGVhbiB9LFxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIC8vIHNjcmFwYm94LlBhZ2UudGl0bGUg44GMbnVsbOOBp+OBquOBhOadoeS7tlxuICBpZiAoc2NyYXBib3guTGF5b3V0ICE9PSBcInBhZ2VcIikgcmV0dXJuO1xuICBjb25zdCB7IHNlbGVjdGlvblJhbmdlLCBzZWxlY3RlZFRleHQgfSA9IGNhcmV0KCk7XG4gIGlmIChzZWxlY3RlZFRleHQgPT09IFwiXCIpIHtcbiAgICBpZiAoIW9wdGlvbj8uZmFsbGJhY2tUb1Byb21wdCkgcmV0dXJuO1xuICAgIHJldHVybiBhZGRUb0luYm94RnJvbVByb21wdChwcm9qZWN0LCB0aXRsZSk7IFxuICB9XG4gIFxuICBjb25zdCBzdGFydCA9IE1hdGgubWluKFxuICAgIHNlbGVjdGlvblJhbmdlLnN0YXJ0LmxpbmUsXG4gICAgc2VsZWN0aW9uUmFuZ2UuZW5kLmxpbmUsXG4gICk7XG4gIGNvbnN0IGVuZCA9IE1hdGgubWF4KFxuICAgIHNlbGVjdGlvblJhbmdlLnN0YXJ0LmxpbmUsXG4gICAgc2VsZWN0aW9uUmFuZ2UuZW5kLmxpbmUsXG4gICk7XG4gIGNvbnN0IGxpbmVzID0gZ2V0TGluZXMoKS5zbGljZShzdGFydCwgZW5kICsgMSk7XG4gIGNvbnN0IHNvY2tldCA9IGF3YWl0IG1ha2VTb2NrZXQoKTtcbiAgYXdhaXQgYWRkVG9JbmJveChwcm9qZWN0LCB0aXRsZSwgbGluZXMubWFwKChsaW5lKSA9PiBsaW5lLnRleHQpLCB7IHNvY2tldCB9KTtcbiAgXG4gIGF3YWl0IHBhdGNoKFxuICAgIHNjcmFwYm94LlByb2plY3QubmFtZSxcbiAgICBzY3JhcGJveC5QYWdlLnRpdGxlLFxuICAgIChsaW5lc18pID0+IHtcbiAgICAgIGNvbnN0IGxpbmVzMiA9IGxpbmVzXy5tYXAoKGxpbmUpID0+IGxpbmUudGV4dCk7XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi5saW5lczIuc2xpY2UoMCwgc3RhcnQpLFxuICAgICAgICAuLi5saW5lczIuc2xpY2UoZW5kICsgMSksXG4gICAgICBdO1xuICAgIH0sXG4gICAgeyBzb2NrZXQgfSxcbiAgKTtcbn07IiwgImNvbnN0IGJ1dHRvbkZpbGVOYW1lID0gJ2J1dHRvbi4nO1xuXG5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBhc3luYyBlID0+IHtcbiAgY29uc3QgdCA9IGUudGFyZ2V0O1xuICBpZiAoISh0LnRhZ05hbWUgPT09ICdJTUcnICYmIHQuY2xhc3NMaXN0LmNvbnRhaW5zKCdpY29uJykgJiYgdC50aXRsZS5lbmRzV2l0aCgnLWJ1dHRvbicpKSlyZXR1cm47IFxuXHRcbiAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICB0cnkge1xuICAgIGNvbnN0IHBhdGggPSBgLi4vJHtlbmNvZGVVUklDb21wb25lbnQodC50aXRsZSl9LyR7YnV0dG9uRmlsZU5hbWV9YFxuICAgIGNvbnN0IHtleGVjdXRlfSA9IGF3YWl0IGltcG9ydChwYXRoKTtcbiAgICBleGVjdXRlKCk7XG4gIH0gY2F0Y2goZSkge1xuICAgIGNvbnNvbGUubG9nKGUpO1xuICB9XG59KTsiLCAic2NyYXBib3guUGFnZU1lbnUuYWRkSXRlbSh7XG4gIHRpdGxlOiBcIkNvcHkgbGluayBmb3IgTWFya2Rvd25cIixcbiAgb25DbGljazogKCkgPT4ge1xuICAgIGNvbnN0IHRpdGxlID0gc2NyYXBib3guUGFnZS50aXRsZVxuICAgICAgLnJlcGxhY2VBbGwoXCIgXCIsIFwiX1wiKVxuICAgICAgLnJlcGxhY2UoL1svPyNcXHt9Xnw8Pl0vZywgKGNoYXIpID0+IGVuY29kZVVSSUNvbXBvbmVudChjaGFyKSk7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZFxuICAgICAgLndyaXRlVGV4dChgWyR7c2NyYXBib3guUGFnZS50aXRsZX1dKGh0dHBzOi8vJHtsb2NhdGlvbi5ob3N0bmFtZX0vJHtzY3JhcGJveC5Qcm9qZWN0Lm5hbWV9LyR7dGl0bGV9JHtsb2NhdGlvbi5oYXNofSlgKVxuICAgICAgLmNhdGNoKGU9PmFsZXJ0KGAke2UubmFtZX06ICR7ZS5tZXNzYWdlfWApKTtcbiAgfSxcbn0pOyIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCIuLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7XG4gIEludmFsaWREYXRlRXJyb3IsXG4gIHBhcnNlLFxuICBUYXNrIGFzIFRhc2tCYXNlLFxuICBUYXNrUmFuZ2VFcnJvcixcbn0gZnJvbSBcIi4uL2hvd20vcGFyc2UudHNcIjtcbmltcG9ydCB7XG4gIGNoZWNrLFxuICBkZWNvZGUsXG4gIGxvYWQgYXMgbG9hZExpbmtzLFxuICBzdWJzY3JpYmUsXG59IGZyb20gXCIuLi9kZXBzL3N0b3JhZ2UudHNcIjtcbmltcG9ydCB7IHRvVGl0bGVMYyB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXN0ZC50c1wiO1xuaW1wb3J0IHsgUGF0aCB9IGZyb20gXCIuL3BhdGgudHNcIjtcblxuZXhwb3J0IHR5cGUgeyBJbnZhbGlkRGF0ZUVycm9yLCBUYXNrQmFzZSwgVGFza1JhbmdlRXJyb3IgfTtcbmV4cG9ydCB0eXBlIFRhc2sgPSBUYXNrQmFzZSAmIFBhdGg7XG5cbmV4cG9ydCB0eXBlIFRhc2tFcnJvciA9IFBhdGggJiAoSW52YWxpZERhdGVFcnJvciB8IFRhc2tSYW5nZUVycm9yKTtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VUYXNrQ3Jhd2xlclJlc3VsdCB7XG4gIC8qKiDoqq3jgb/ovrzjgpPjgaDkuojlrprjgajjgr/jgrnjgq8gKi9cbiAgdGFza3M6IFRhc2tbXTtcbiAgLyoqIOani+aWh+OCqOODqeODvOOBjOeUn+OBmOOBn+OCv+OCueOCr+OBruOCqOODqeODvOaDheWgsSAqL1xuICBlcnJvcnM6IFRhc2tFcnJvcltdO1xuICAvKiog44K/44K544Kv44KS6Kqt44G/6L6844KAICovXG4gIGxvYWQ6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIC8qKiDkuojlrprjg7vjgr/jgrnjgq/jgpLoqq3jgb/ovrzjgb/kuK3jgarjgolgdHJ1ZWAgKi9cbiAgbG9hZGluZzogYm9vbGVhbjtcbn1cblxuLyoqIOaMh+WumuOBleOCjOOBn3Byb2plY3Rz44GL44KJ5LqI5a6a44Go44K/44K544Kv44KS44GZ44G544Gm6Kqt44G/6L6844KAaG9va1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0cyDoqq3jgb/ovrzjgoDjg5fjg63jgrjjgqfjgq/jg4jlkI3jga7phY3liJdcbiAqIEByZXR1cm4g6Kqt44G/6L6844KT44Gg44OH44O844K/44Go5pON5L2c5Ye95pWwXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VUYXNrQ3Jhd2xlciA9IChwcm9qZWN0czogc3RyaW5nW10pOiBVc2VUYXNrQ3Jhd2xlclJlc3VsdCA9PiB7XG4gIGNvbnN0IFt0YXNrcywgc2V0VGFza3NdID0gdXNlU3RhdGU8VGFza1tdPihbXSk7XG4gIGNvbnN0IFtlcnJvcnMsIHNldEVycm9yc10gPSB1c2VTdGF0ZTxcbiAgICBUYXNrRXJyb3JbXVxuICA+KFtdKTtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIC8qKiDjgr/jgrnjgq/jgpLlhajjgabmi77jgYTkuIrjgZLjgosgKi9cbiAgY29uc3QgY3Jhd2wgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGl0bGVMY3MgPSBuZXcgU2V0PHN0cmluZz4oKTsgLy8g6YeN6KSH6Zmk5aSW55SoXG5cbiAgICBzZXRMb2FkaW5nKHRydWUpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbG9hZExpbmtzKHByb2plY3RzKTtcbiAgICBjb25zdCBlcnJvcnM6IFRhc2tFcnJvcltdID0gW107XG4gICAgY29uc3QgdGFza3MgPSByZXN1bHQuZmxhdE1hcCgoeyBsaW5rcywgcHJvamVjdCB9KSA9PlxuICAgICAgbGlua3MuZmxhdE1hcCgobGluaykgPT4ge1xuICAgICAgICBjb25zdCB7IHRpdGxlIH0gPSBkZWNvZGUobGluayk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlKHRpdGxlKTtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiBbXTtcbiAgICAgICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgICAgICBlcnJvcnMucHVzaCh7IHByb2plY3QsIHRpdGxlLCAuLi5yZXN1bHQudmFsdWUgfSk7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g6YeN6KSH6Zmk5Y67XG4gICAgICAgIGNvbnN0IHRpdGxlTGMgPSB0b1RpdGxlTGModGl0bGUpO1xuICAgICAgICBpZiAodGl0bGVMY3MuaGFzKHRpdGxlTGMpKSByZXR1cm4gW107XG4gICAgICAgIHRpdGxlTGNzLmFkZCh0aXRsZUxjKTtcblxuICAgICAgICByZXR1cm4gW3sgcHJvamVjdCwgdGl0bGUsIC4uLnJlc3VsdC52YWx1ZSB9XTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICBzZXRUYXNrcyh0YXNrcyk7XG4gICAgc2V0RXJyb3JzKGVycm9ycyk7XG5cbiAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgfSwgW3Byb2plY3RzXSk7XG5cbiAgLyoqIOOCv+OCueOCr+ODh+ODvOOCv+OCkk5ldHdvcmvjgYvjgonoqq3jgb/ovrzjgoAgKi9cbiAgY29uc3QgbG9hZCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgIGF3YWl0IGNoZWNrKHByb2plY3RzLCA2MCk7XG4gICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gIH0sIFtwcm9qZWN0c10pO1xuXG4gIC8qKiDmm7TmlrDjgYzjgYLjgozjgbDlho3oqq3ovrzjgZnjgosgKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjcmF3bCgpO1xuICAgIHJldHVybiBzdWJzY3JpYmUocHJvamVjdHMsIGNyYXdsKTtcbiAgfSwgW3Byb2plY3RzLCBjcmF3bF0pO1xuXG4gIHJldHVybiB7IHRhc2tzLCBlcnJvcnMsIGxvYWQsIGxvYWRpbmcgfTtcbn07XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tIFwiLi4vZGVwcy9wcmVhY3QudHN4XCI7XG5cbi8qKiBIb29rcyBmb3Igc3RvcHBpbmcgZXZlbnQgcHJvcGFnYXRpb24gKi9cbmV4cG9ydCBjb25zdCB1c2VTdG9wUHJvcGFnYXRpb24gPSAoKTogKGU6IEV2ZW50KSA9PiB2b2lkID0+XG4gIHVzZUNhbGxiYWNrKFxuICAgIChlOiBnbG9iYWxUaGlzLkV2ZW50KSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpLFxuICAgIFtdLFxuICApO1xuIiwgIi8qKiBAanN4IGggKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50Q2hpbGRyZW4sXG4gIEZ1bmN0aW9uQ29tcG9uZW50LFxuICBoLFxuICBSZWZDYWxsYmFjayxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG4gIHVzZVJlZHVjZXIsXG59IGZyb20gXCIuLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IHVzZVN0b3BQcm9wYWdhdGlvbiB9IGZyb20gXCIuL3VzZVN0b3BQcm9wYWdhdGlvbi50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZURpYWxvZ1Jlc3VsdCB7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgb3BlbjogVm9pZEZ1bmN0aW9uO1xuICBjbG9zZTogVm9pZEZ1bmN0aW9uO1xuICBEaWFsb2c6IEZ1bmN0aW9uQ29tcG9uZW50PHsgY2hpbGRyZW4/OiBDb21wb25lbnRDaGlsZHJlbiB9Pjtcbn1cblxuZXhwb3J0IGNvbnN0IHVzZURpYWxvZyA9ICgpOiBVc2VEaWFsb2dSZXN1bHQgPT4ge1xuICBjb25zdCBbZGlhbG9nU3RhdGUsIGNoYW5nZURpYWxvZ1N0YXRlXSA9IHVzZVJlZHVjZXIoZGlhbG9nU3RhdGVSZWR1Y2VyLCB7XG4gICAgaXNPcGVuOiBmYWxzZSxcbiAgICBwcmV2T3ZlcmZsb3dZOiBcIlwiLFxuICB9KTtcblxuICBjb25zdCBvcGVuID0gdXNlQ2FsbGJhY2soKCkgPT4gY2hhbmdlRGlhbG9nU3RhdGUodHJ1ZSksIFtdKTtcbiAgY29uc3QgY2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiBjaGFuZ2VEaWFsb2dTdGF0ZShmYWxzZSksIFtdKTtcblxuICBjb25zdCBEaWFsb2c6IEZ1bmN0aW9uQ29tcG9uZW50PHsgY2hpbGRyZW4/OiBDb21wb25lbnRDaGlsZHJlbiB9PiA9XG4gICAgdXNlQ2FsbGJhY2soKFxuICAgICAgeyBjaGlsZHJlbiB9LFxuICAgICkgPT4ge1xuICAgICAgLyoqIGRpYWxvZ+OCr+ODquODg+OCr+OBp+OBr21vZGFs44KS6ZaJ44GY44Gq44GE44KI44GG44Gr44GZ44KLICovXG4gICAgICBjb25zdCBzdG9wUHJvcGFnYXRpb24gPSB1c2VTdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgY29uc3QgcmVmOiBSZWZDYWxsYmFjazxIVE1MRGlhbG9nRWxlbWVudD4gPSB1c2VNZW1vKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgbGV0IGNsZWFudXA6IFZvaWRGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXR1cm4gKGRpYWxvZykgPT4ge1xuICAgICAgICAgICAgaWYgKCFkaWFsb2cpIHtcbiAgICAgICAgICAgICAgY2xlYW51cD8uKCk7XG4gICAgICAgICAgICAgIGNoYW5nZURpYWxvZ1N0YXRlKGRpYWxvZyk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgICAgIGRpYWxvZy5hZGRFdmVudExpc3RlbmVyKFwiY2FuY2VsXCIsICgpID0+IGNoYW5nZURpYWxvZ1N0YXRlKGZhbHNlKSwge1xuICAgICAgICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjaGFuZ2VEaWFsb2dTdGF0ZShkaWFsb2cpO1xuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIFtdLFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpYWxvZyByZWY9e3JlZn0gb25DbGljaz17Y2xvc2V9PlxuICAgICAgICAgIHtjaGlsZHJlbiAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRpYWxvZy1pbm5lclwiIG9uQ2xpY2s9e3N0b3BQcm9wYWdhdGlvbn0+XG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGlhbG9nPlxuICAgICAgKTtcbiAgICB9LCBbXSk7XG5cbiAgcmV0dXJuIHsgaXNPcGVuOiBkaWFsb2dTdGF0ZS5pc09wZW4sIG9wZW4sIGNsb3NlLCBEaWFsb2cgfTtcbn07XG5cbmludGVyZmFjZSBEaWFsb2dTdGF0ZSB7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgZGlhbG9nPzogSFRNTERpYWxvZ0VsZW1lbnQgfCBudWxsO1xuICBwcmV2T3ZlcmZsb3dZOiBzdHJpbmc7XG59XG5cbmNvbnN0IGRpYWxvZ1N0YXRlUmVkdWNlciA9IChcbiAgc3RhdGU6IERpYWxvZ1N0YXRlLFxuICBpc09wZW46IGJvb2xlYW4gfCBIVE1MRGlhbG9nRWxlbWVudCB8IG51bGwsXG4pOiBEaWFsb2dTdGF0ZSA9PiB7XG4gIGNvbnN0IGlzT3Blbk5vdyA9IHN0YXRlLmRpYWxvZz8ub3BlbiA/PyBmYWxzZTtcbiAgaWYgKGlzT3BlbiBpbnN0YW5jZW9mIEhUTUxEaWFsb2dFbGVtZW50IHx8IGlzT3BlbiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBpc09wZW5Ob3cgPT09IHN0YXRlLmlzT3BlbiAmJiBpc09wZW4gPT09IHN0YXRlLmRpYWxvZyA/IHN0YXRlIDoge1xuICAgICAgaXNPcGVuOiBpc09wZW5Ob3csXG4gICAgICBkaWFsb2c6IGlzT3BlbixcbiAgICAgIHByZXZPdmVyZmxvd1k6IHN0YXRlLnByZXZPdmVyZmxvd1ksXG4gICAgfTtcbiAgfVxuICBpZiAoaXNPcGVuKSB7XG4gICAgc3RhdGUuZGlhbG9nPy5zaG93TW9kYWw/LigpO1xuICAgIGNvbnN0IHByZXZPdmVyZmxvd1kgPSAhc3RhdGUuaXNPcGVuXG4gICAgICA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvd1lcbiAgICAgIDogc3RhdGUucHJldk92ZXJmbG93WTtcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3dZID0gXCJoaWRkZW5cIjtcbiAgICByZXR1cm4gc3RhdGUuaXNPcGVuICYmIGlzT3Blbk5vd1xuICAgICAgPyBzdGF0ZVxuICAgICAgOiB7IGlzT3BlbjogdHJ1ZSwgcHJldk92ZXJmbG93WSwgZGlhbG9nOiBzdGF0ZS5kaWFsb2cgfTtcbiAgfVxuICBzdGF0ZS5kaWFsb2c/LmNsb3NlPy4oKTtcbiAgaWYgKHN0YXRlLnByZXZPdmVyZmxvd1kgPT09IFwiXCIpIHtcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJvdmVyZmxvdy15XCIpO1xuICB9IGVsc2Uge1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvd1kgPSBzdGF0ZS5wcmV2T3ZlcmZsb3dZO1xuICB9XG4gIHJldHVybiAhc3RhdGUuaXNPcGVuICYmICFpc09wZW5Ob3dcbiAgICA/IHN0YXRlXG4gICAgOiB7IGlzT3BlbjogZmFsc2UsIHByZXZPdmVyZmxvd1k6IFwiXCIsIGRpYWxvZzogc3RhdGUuZGlhbG9nIH07XG59O1xuIiwgIi8vIGRlbm8tZm10LWlnbm9yZS1maWxlXG5leHBvcnQgY29uc3QgQ1NTID0gU3RyaW5nLnJhd2AuZmEsLmZhcntmb250LXdlaWdodDo5MDA7Zm9udC1mYW1pbHk6XCJGb250IEF3ZXNvbWUgNSBGcmVlXCI7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDt0ZXh0LXJlbmRlcmluZzphdXRvO2xpbmUtaGVpZ2h0OjF9LmZhcntmb250LXdlaWdodDo0MDB9LmZhLXNwaW5uZXJ7YW5pbWF0aW9uOnNwaW4gMnMgaW5maW5pdGUgbGluZWFyfUBrZXlmcmFtZXMgc3BpbnswJXt0cmFuc2Zvcm06cm90YXRlKDApfXRve3RyYW5zZm9ybTpyb3RhdGUoMzU5ZGVnKX19LmZhLXNwaW5uZXI6YmVmb3Jle2NvbnRlbnQ6XCJcXGYxMTBcIn0uZmEtc3luYzpiZWZvcmV7Y29udGVudDpcIlxcZjAyMVwifS5mYS1ib29rbWFyazpiZWZvcmV7Y29udGVudDpcIlxcZjAyZVwifS5mYS1md3t0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxLjI1ZW19LmthbW9uOmJlZm9yZXtmb250LWZhbWlseTpBcHBJY29uczstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZTtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LXRyYW5zZm9ybTpub25lfS5rYW1vbi1jaGVjay1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwMThcIn0udGltZWxpbmUtd3JhcHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlO292ZXJmbG93LXk6aGlkZGVuOy0tdGltZWxpbmUtYmc6IHZhcigtLWRyb3Bkb3duLW1lbnUtYmcsICNmZmYpOy0tdGltZWxpbmUtdGV4dC1jb2xvcjogdmFyKC0tcGFnZS10ZXh0LWNvbG9yLCAjNGE0YTRhKTstLXRpbWVsaW5lLWxpbmstY29sb3I6IHZhcigtLXBhZ2UtbGluay1jb2xvciwgIzVlOGFmNyk7LS1yb3ctaGVhZGVyLXdpZHRoOiA0MHB4Oy0tdGltZWxpbmUtYm9yZGVyLWNvbG9yOiAjODg4Oy0tdGltZWxpbmUtYm9yZGVyOiBzb2xpZCAxcHggdmFyKC0tdGltZWxpbmUtYm9yZGVyLWNvbG9yKTstLXRpbWVsaW5lLWhvdXItaGVpZ2h0OiA0MHB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tdGltZWxpbmUtYmcpO2NvbG9yOnZhcigtLXRpbWVsaW5lLXRleHQtY29sb3IpOy5jb2x1bW4taGVhZGVye2ZsZXg6bm9uZTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93Oy5jZWxse2ZsZXg6MSAxIDFweDtoMntmb250LXdlaWdodDo0MDA7bWFyZ2luOjA7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MTAwJX19fS53ZWVrLWNvbnRhaW5lcntwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MTAwJTtvdmVyZmxvdy15OmF1dG87c2Nyb2xsYmFyLXdpZHRoOm5vbmU7LndlZWt7ZmxleDphdXRvO2Rpc3BsYXk6ZmxleDt3aWR0aDoxMDAlOy5ib3JkZXJzey5ib3JkZXJ7aGVpZ2h0OnZhcigtLXRpbWVsaW5lLWhvdXItaGVpZ2h0KX0uYm9yZGVyOmFmdGVye2NvbnRlbnQ6YXR0cihkYXRhLXRpbWUpO2ZvbnQtc2l6ZToxMHB4O3RleHQtYWxpZ246cmlnaHQ7Ym9yZGVyLXRvcDp2YXIoLS10aW1lbGluZS1ib3JkZXIpO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDotMXB4O3BvaW50ZXItZXZlbnRzOm5vbmV9fS50aW1lbGluZXtmbGV4OmF1dG87Ym9yZGVyLWxlZnQ6dmFyKC0tdGltZWxpbmUtYm9yZGVyKTtwb3NpdGlvbjpyZWxhdGl2ZTsuaW5kaWNhdG9ye3Bvc2l0aW9uOmFic29sdXRlO3RvcDpjYWxjKHZhcigtLXN0YXJ0KSAqIDQwcHggLSAuNXB4KTt3aWR0aDoxMDAlO2hlaWdodDoxcHg7YmFja2dyb3VuZC1jb2xvcjpyZWR9LmNvcHl7cG9zaXRpb246YWJzb2x1dGU7dG9wOjEuNWVtfS5ldmVudHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6Y2FsYyh2YXIoLS1zdGFydCkgKiA0MHB4IC0gMXB4KTtoZWlnaHQ6Y2FsYyg0MHB4ICogdmFyKC0tZHVyYXRpb24pIC8gNjApO291dGxpbmU6bm9uZTstLWV2ZW50LWJnMjogdmFyKC0tdGltZWxpbmUtdGV4dC1jb2xvcik7LS1ldmVudC1iZzogdmFyKC0tdGltZWxpbmUtYmcpOy0tZXZlbnQtYmctcmF0aW86IDUwJTstLWV2ZW50LWNvbG9yLXJhdGlvOiAwJTstLWV2ZW50LWJvcmRlci1jb2xvci1yYXRpbzogMCU7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gc3JnYix2YXIoLS1ldmVudC1iZykgdmFyKC0tZXZlbnQtYmctcmF0aW8pLHZhcigtLWV2ZW50LWJnMikpO2NvbG9yOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWV2ZW50LWJnKSB2YXIoLS1ldmVudC1jb2xvci1yYXRpbyksdmFyKC0tdGltZWxpbmUtdGV4dC1jb2xvcikpO2JvcmRlcjp2YXIoLS10aW1lbGluZS1ib3JkZXIpO2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gc3JnYix2YXIoLS1ldmVudC1iZykgdmFyKC0tZXZlbnQtYm9yZGVyLWNvbG9yLXJhdGlvKSx2YXIoLS10aW1lbGluZS1ib3JkZXItY29sb3IpKTtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzpoaWRkZW47dGV4dC13cmFwOm5vd3JhcDttYXgtd2lkdGg6MTAwJTt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5ldmVudFtkYXRhLXN0YXR1cz1kb25lXXstLWV2ZW50LWJnLXJhdGlvOiA5MCU7LS1ldmVudC1jb2xvci1yYXRpbzogNTAlOy0tZXZlbnQtYm9yZGVyLWNvbG9yLXJhdGlvOiA1MCV9LmV2ZW50W2RhdGEtc3RhdHVzPWV4cGlyZWRde2ZvbnQtd2VpZ2h0OjcwMH1hLmV2ZW50ey0tZXZlbnQtYmcyOiB2YXIoLS10aW1lbGluZS1saW5rLWNvbG9yKTt0ZXh0LWRlY29yYXRpb246bm9uZX19LnRpbWVsaW5lOmZpcnN0LWNoaWxke2JvcmRlci1yaWdodDp2YXIoLS10aW1lbGluZS1ib3JkZXIpfX19fS53ZWRnZXR7cG9zaXRpb246Zml4ZWQ7dG9wOjYwcHg7bGVmdDoxMHB4O21heC1oZWlnaHQ6Y2FsYyg5MHZoIC0gNjBweCk7bWF4LXdpZHRoOjEwMHB4O3dpZHRoOmNhbGMoMTAwdncgLyA3NjcgKiAxMDAgLSAxMHB4KTttaW4td2lkdGg6NjBweDtib3JkZXI6c29saWQgMXB4ICM4ODg7Ym9yZGVyLXJhZGl1czo0cHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRyb3Bkb3duLW1lbnUtYmcsICNmZmYpO2NvbG9yOnZhcigtLXBhZ2UtdGV4dC1jb2xvciwgIzRhNGE0YSk7Jjpub3QoLm9wZW4pe2Rpc3BsYXk6bm9uZX19ZGlhbG9neyY6OmJhY2tkcm9we2JhY2tncm91bmQtY29sb3I6IzAwMGN9cGFkZGluZzoxMHB4O2JhY2tncm91bmQ6dW5zZXQ7bWFyZ2luLXRvcDp1bnNldDttYXJnaW4tYm90dG9tOnVuc2V0O2JvcmRlcjp1bnNldDtoZWlnaHQ6dW5zZXQ7b3ZlcmZsb3cteTpoaWRkZW47JltvcGVuXT4uZGlhbG9nLWlubmVye2Rpc3BsYXk6ZmxleH0+LmRpYWxvZy1pbm5lcntmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO3Jvdy1nYXA6MTBweDtoZWlnaHQ6MTAwJTs+Kntjb2xvcjp2YXIoLS1wYWdlLXRleHQtY29sb3IsICM0YTRhNGEpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHJvcGRvd24tbWVudS1iZywgI2ZmZik7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4yKTtib3JkZXItcmFkaXVzOjZweH19fUBtZWRpYSAobWluLXdpZHRoOiA3NjhweCl7ZGlhbG9ne3BhZGRpbmc6MzBweCAwOy0taXRlbS13aWR0aDogNjAwcHh9fS5yZXN1bHR7cGFkZGluZzoxNXB4O3dpZHRoOmNhbGModmFyKC0taXRlbS13aWR0aCwgMTAwJSkgLSAzMHB4KTtvdmVyZmxvdy15OnNjcm9sbH0uY29udHJvbGxlcntwYWRkaW5nOjVweDt3aWR0aDpjYWxjKHZhcigtLWl0ZW0td2lkdGgsIDEwMCUpIC0gMTBweCk7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2ZsZXg6bm9uZTtnYXA6LjJlbX0ucHJvZ3Jlc3N7ZmxleC1ncm93OjE7Pip7cGFkZGluZzowIDJweH19YXt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjp2YXIoLS1wYWdlLWxpbmstY29sb3IsICM1ZThhZjcpOyY6aG92ZXJ7Y29sb3I6dmFyKC0tcGFnZS1saW5rLWhvdmVyLWNvbG9yLCAjMmQ2N2Y1KX19YnV0dG9ue2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6dW5zZXQ7Y29sb3I6dW5zZXQ7Ym9yZGVyOnVuc2V0fS5jb3B5LC5jbG9zZSwudG9kYXl7Zm9udC1mYW1pbHk6XCJGb250IEF3ZXNvbWUgNSBGcmVlXCJ9Lm5hdml7Zm9udC1mYW1pbHk6QXBwSWNvbnM7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGU7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDo0MDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC10cmFuc2Zvcm06bm9uZX0uY2xvc2UsLnRvZGF5e2ZvbnQtd2VpZ2h0OjkwMH11bHtsaXN0LXN0eWxlLXR5cGU6bm9uZTt3b3JkLWJyZWFrOmJyZWFrLWFsbH0udGFzay1saXN0IGxpOm5vdChbZGF0YS1mcmVzaG5lc3NePVwiLVwiXSk6bm90KFtkYXRhLWZyZXNobmVzcz1cIjBcIl0pe2ZvbnQtd2VpZ2h0OjcwMH0uc2NoZWR1bGVyIGRldGFpbHMgbGl7JltkYXRhLXN0YXR1cz1kb25lXXtvcGFjaXR5Oi40fSZbZGF0YS1zdGF0dXM9ZXhwaXJlZF17Zm9udC13ZWlnaHQ6NzAwfX0udGFzay1saXN0IGxpeyZbZGF0YS10eXBlPWRlYWRsaW5lXSAubGFiZWwudHlwZXtjb2xvcjp2YXIoLS10YWtrZXItc2NoZWR1bGVyLWxhYmVsLWRlYWRsaW5lLWNvbG9yLCByZ2IoMjU1LCA3NSwgMCkpfSZbZGF0YS10eXBlPXRvZG9dIC5sYWJlbC50eXBle2NvbG9yOnZhcigtLXRha2tlci1zY2hlZHVsZXItbGFiZWwtdG9kby1jb2xvciwgcmdiKDI0NiwgMTcwLCAwKSl9JltkYXRhLXR5cGU9bm90ZV0gLmxhYmVsLnR5cGV7Y29sb3I6dmFyKC0tdGFra2VyLXNjaGVkdWxlci1sYWJlbC1ub3RlLWNvbG9yLCByZ2IoMjAwLCAyMDAsIDIwMykpfSZbZGF0YS10eXBlPXVwLWRvd25dIC5sYWJlbC50eXBle2NvbG9yOnZhcigtLXRha2tlci1zY2hlZHVsZXItbGFiZWwtdXAtZG93bi1jb2xvciwgcmdiKDc3LCAxOTYsIDI1NSkpfX06aXMoW2RhdGEtcGFnZS1ubz1leHBpcmVkXSxbZGF0YS1wYWdlLW5vPWVycm9yc10pIGxpe29wYWNpdHk6MSFpbXBvcnRhbnR9LnNjaGVkdWxlcnstLXRha2tlci1zY2hlZHVsZXItc3VtbWFyeS1tZXRlci13aWR0aDogMTBlbTtvdmVyZmxvdy15OmhpZGRlbn0ubGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjkwJTtwYWRkaW5nOjAgM3B4fS50eXBle3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjIuNWVtO2JvcmRlcjoxcHggc29saWQ7Ym9yZGVyLXJhZGl1czozcHh9LmZyZXNobmVzc3t0ZXh0LWFsaWduOnJpZ2h0O3dpZHRoOjIuNWVtfS5zdGFydCwuZHVyYXRpb257dGV4dC1hbGlnbjpyaWdodDt3aWR0aDozZW19XG5gOyIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG4vKiogQGpzeCBoICovXG5cbmltcG9ydCB7XG4gIEZ1bmN0aW9uQ29tcG9uZW50LFxuICBoLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlU3RhdGUsXG59IGZyb20gXCIuLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IHNsZWVwIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5cbi8qKiDjgrPjg5Tjg7zjg5zjgr/jg7MgKi9cbmV4cG9ydCBjb25zdCBDb3B5OiBGdW5jdGlvbkNvbXBvbmVudDx7IHRleHQ6IHN0cmluZzsgdGl0bGU/OiBzdHJpbmcgfT4gPSAoXG4gIHsgdGV4dCwgdGl0bGUgfSxcbikgPT4ge1xuICBjb25zdCBbYnV0dG9uTGFiZWwsIHNldEJ1dHRvbkxhYmVsXSA9IHVzZVN0YXRlKFwiXFx1ZjBjNVwiKTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoZTogaC5KU1guVGFyZ2V0ZWRNb3VzZUV2ZW50PEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTtcbiAgICAgICAgc2V0QnV0dG9uTGFiZWwoXCJDb3BpZWRcIik7XG4gICAgICAgIGF3YWl0IHNsZWVwKDEwMDApO1xuICAgICAgICBzZXRCdXR0b25MYWJlbChcIlxcdWYwYzVcIik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGFsZXJ0KGBGYWlsZWQgdG8gY29weSB0aGUgY29kZSBibG9ja1xcbkVycm9yOiR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3RleHRdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJjb3B5XCIgdGl0bGU9e3RpdGxlID8/IFwiQ29weVwifSBvbkNsaWNrPXtoYW5kbGVDbGlja30+XG4gICAgICB7YnV0dG9uTGFiZWx9XG4gICAgPC9idXR0b24+XG4gICk7XG59O1xuIiwgImltcG9ydCB7IExvY2FsRGF0ZSwgTG9jYWxEYXRlVGltZSwgdG9EYXRlIH0gZnJvbSBcIi4vbG9jYWxEYXRlLnRzXCI7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tIFwiLi9zdGF0dXMudHNcIjtcblxuLyoqIDHml6XjgpLjg5/jg6rnp5LljZjkvY3jgafooajjgZfjgZ/jgoLjga4gKi9cbmNvbnN0IG9uZWRheSA9IDYwICogNjAgKiAyNCAqIDEwMDA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnJlc2huZXNzIHtcbiAgLyoqIGhvd23oqJjlj7cgKi9cbiAgc3RhdHVzOiBTdGF0dXM7XG5cbiAgLyoqIGhvd27oqJjlj7fjga7jgqrjg5fjgrfjg6fjg7MgKi9cbiAgc3BlZWQ/OiBudW1iZXI7XG5cbiAgLyoqIOaXrOW6puioiOeul+eUqOOBrui1t+eCueOBqOOBquOCi+aXpeaZgiAqL1xuICByZWZEYXRlOiBMb2NhbERhdGUgfCBMb2NhbERhdGVUaW1lO1xufVxuXG4vKiog44K/44K544Kv44Gu5pes5bqm44KS6KiI566X44GZ44KLXG4gKlxuICogIOiHquWIhihAdGFra2VyKeeUqOOBq3R1bmluZ+OBl+OBpuOBguOCi+OAguS7luOBruioiOeul+OCouODq+OCtOODquOCuuODoOOBq+OBl+OBn+OBhOOBqOOBjeOBr+OAgeWQhOiHquOBp+WIpemAlOS9nOOCi+OBk+OBqFxuICpcbiAqICBAcGFyYW0gZnJlc2huZXNzIHRhc2tcbiAqICBAcGFyYW0gbm93IOePvuWcqOaXpeaZglxuICogIEByZXR1cm4gdGFza+OBruaXrOW6plxuICovXG5leHBvcnQgY29uc3QgY2FsY0ZyZXNobmVzcyA9IChmcmVzaG5lc3M6IEZyZXNobmVzcywgbm93OiBEYXRlKTogbnVtYmVyID0+IHtcbiAgY29uc3Qgc3RhcnQgPSB0b0RhdGUoZnJlc2huZXNzLnJlZkRhdGUpO1xuICBjb25zdCBwcmlvcml0eSA9IChub3cuZ2V0VGltZSgpIC0gc3RhcnQuZ2V0VGltZSgpKSAvIG9uZWRheTtcbiAgc3RhcnQuc2V0SG91cnMoMCk7XG4gIHN0YXJ0LnNldE1pbnV0ZXMoMCk7XG5cbiAgc3dpdGNoIChmcmVzaG5lc3Muc3RhdHVzKSB7XG4gICAgY2FzZSBcImRvbmVcIjpcbiAgICAgIC8vIOW4uOOBq+acgOS9jlxuICAgICAgcmV0dXJuIC1JbmZpbml0eTtcbiAgICBjYXNlIFwiZGVhZGxpbmVcIjpcbiAgICAgIC8vIOW9k+aXpTDjgavjgarjgovjgojjgYbkuIrmmIdcbiAgICAgIHJldHVybiBwcmlvcml0eSAvIChmcmVzaG5lc3Muc3BlZWQgPz8gMSk7XG4gICAgY2FzZSBcInRvZG9cIjpcbiAgICAgIC8vIOW9k+aXpeOBvuOBp+S4iuaYh1xuICAgICAgcmV0dXJuIE1hdGgubWluKHByaW9yaXR5IC8gKGZyZXNobmVzcy5zcGVlZCA/PyAxKSwgMCk7XG4gICAgY2FzZSBcIm5vdGVcIjpcbiAgICAgIC8vIOW9k+aXpeOBi+OCieS4i+mZjVxuICAgICAgcmV0dXJuIG5vdy5nZXRUaW1lKCkgPCBzdGFydC5nZXRUaW1lKClcbiAgICAgICAgPyAtSW5maW5pdHlcbiAgICAgICAgOiAtcHJpb3JpdHkgLyAoZnJlc2huZXNzLnNwZWVkID8/IDEpO1xuICAgIGNhc2UgXCJ1cC1kb3duXCI6IHtcbiAgICAgIGNvbnN0IHBlcmlvZCA9IGZyZXNobmVzcy5zcGVlZCA/PyAzMDtcbiAgICAgIC8vIOW9k+aXpeOBi+OCieS4i+mZjeOBqOS4iuaYh+OCkue5sOOCiui/lOOBmVxuICAgICAgcmV0dXJuIHBlcmlvZCAqICgtMSArIE1hdGguY29zKE1hdGguUEkgKiAyICogcHJpb3JpdHkgLyBwZXJpb2QpKTtcbiAgICB9XG4gIH1cbn07XG4iLCAiaW1wb3J0IHsgRnJlc2huZXNzIH0gZnJvbSBcIi4vZnJlc2huZXNzLnRzXCI7XG5pbXBvcnQgeyBpc0JlZm9yZSB9IGZyb20gXCIuL2xvY2FsRGF0ZS50c1wiO1xuaW1wb3J0IHsgRXZlbnQsIGdldFN0YXJ0LCBSZW1pbmRlciB9IGZyb20gXCIuL3BhcnNlLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjb21wYXJlRm4gPSAoXG4gIGE6XG4gICAgJiAoXG4gICAgICB8IFJlbWluZGVyXG4gICAgICB8IChPbWl0PEV2ZW50LCBcImZyZXNobmVzc1wiPiAmIFJlcXVpcmVkPFBpY2s8RXZlbnQsIFwiZnJlc2huZXNzXCI+PilcbiAgICApXG4gICAgJiB7IHNjb3JlOiBudW1iZXIgfSxcbiAgYjpcbiAgICAmIChcbiAgICAgIHwgUmVtaW5kZXJcbiAgICAgIHwgKE9taXQ8RXZlbnQsIFwiZnJlc2huZXNzXCI+ICYgUmVxdWlyZWQ8UGljazxFdmVudCwgXCJmcmVzaG5lc3NcIj4+KVxuICAgIClcbiAgICAmIHsgc2NvcmU6IG51bWJlciB9LFxuKTogbnVtYmVyID0+IHtcbiAgaWYgKGIuc2NvcmUgIT09IGEuc2NvcmUpIHJldHVybiBiLnNjb3JlIC0gYS5zY29yZTtcbiAgY29uc3Qgc2EgPSBzb3J0VHlwZShhLmZyZXNobmVzcyk7XG4gIGNvbnN0IHNiID0gc29ydFR5cGUoYi5mcmVzaG5lc3MpO1xuICBpZiAoc2EgIT09IHNiKSByZXR1cm4gc2IgLSBzYTtcblxuICByZXR1cm4gaXNCZWZvcmUoZ2V0U3RhcnQoYSksIGdldFN0YXJ0KGIpKSA/IC0xIDogMTtcbn07XG5cbmNvbnN0IHNvcnRUeXBlID0gKGZyZXNobmVzczogRnJlc2huZXNzKTogbnVtYmVyID0+IHtcbiAgc3dpdGNoIChmcmVzaG5lc3Muc3RhdHVzKSB7XG4gICAgY2FzZSBcInRvZG9cIjpcbiAgICAgIHJldHVybiAzO1xuICAgIGNhc2UgXCJub3RlXCI6XG4gICAgICByZXR1cm4gMjtcbiAgICBjYXNlIFwiZGVhZGxpbmVcIjpcbiAgICAgIHJldHVybiA1O1xuICAgIGNhc2UgXCJ1cC1kb3duXCI6XG4gICAgICByZXR1cm4gMTtcbiAgICBjYXNlIFwiZG9uZVwiOlxuICAgICAgcmV0dXJuIDA7XG4gIH1cbn07XG4iLCAiaW1wb3J0IHtcbiAgZ2V0V2VlayxcbiAgZ2V0V2Vla1llYXIsXG4gIHNldFdlZWssXG4gIHN0YXJ0T2ZXZWVrLFxufSBmcm9tIFwiLi4vZGVwcy9kYXRlLWZucy50c1wiO1xuaW1wb3J0IHsgTG9jYWxEYXRlIH0gZnJvbSBcIi4uL2hvd20vbG9jYWxEYXRlLnRzXCI7XG5pbXBvcnQgeyB6ZXJvIH0gZnJvbSBcIi4uL3plcm8udHNcIjtcblxuZXhwb3J0IHR5cGUgS2V5ID0gYCR7bnVtYmVyfS0ke3N0cmluZ30tJHtzdHJpbmd9YDtcbmV4cG9ydCB0eXBlIFdlZWtLZXkgPSBgJHtudW1iZXJ9LXcke3N0cmluZ31gO1xuXG4vKiog5pel5LuY44GU44Go44Gr5LiA5oSP44Gqa2V544KS55Sf5oiQ44GZ44KLICovXG5leHBvcnQgY29uc3QgdG9LZXkgPSAoZGF0ZTogRGF0ZSk6IEtleSA9PlxuICBgJHtkYXRlLmdldEZ1bGxZZWFyKCl9LSR7emVybyhkYXRlLmdldE1vbnRoKCkgKyAxKX0tJHt6ZXJvKGRhdGUuZ2V0RGF0ZSgpKX1gO1xuZXhwb3J0IGNvbnN0IHRvTG9jYWxEYXRlID0gKGtleTogS2V5KTogTG9jYWxEYXRlID0+IHtcbiAgY29uc3QgW3llYXIsIG1vbnRoLCBkYXRlXSA9IGtleS5zcGxpdChcIi1cIikubWFwKChzKSA9PiBwYXJzZUludChzLCAxMCkpO1xuICByZXR1cm4geyB5ZWFyLCBtb250aCwgZGF0ZSB9O1xufTtcblxuLyoqIOaXpeS7mOOBjOWxnuOBmeOCi+mAseOBlOOBqOOBq+S4gOaEj+OBqmtleeOCkueUn+aIkOOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IHRvV2Vla0tleSA9IChkYXRlOiBEYXRlKTogV2Vla0tleSA9PlxuICBgJHtnZXRXZWVrWWVhcihkYXRlKX0tdyR7emVybyhnZXRXZWVrKGRhdGUpKX1gO1xuZXhwb3J0IGNvbnN0IHRvU3RhcnRPZldlZWsgPSAoa2V5OiBXZWVrS2V5KTogRGF0ZSA9PiB7XG4gIGNvbnN0IFt5ZWFyLCB3ZWVrXSA9IGtleS5zcGxpdChcIi13XCIpLm1hcCgocykgPT4gcGFyc2VJbnQocywgMTApKTtcbiAgcmV0dXJuIHN0YXJ0T2ZXZWVrKHNldFdlZWsobmV3IERhdGUoeWVhciwgMCwgMSksIHdlZWspKTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuXG5pbXBvcnQgeyBGdW5jdGlvbkNvbXBvbmVudCwgaCB9IGZyb20gXCIuLi9kZXBzL3ByZWFjdC50c3hcIjtcblxuLyoqIOiqrei+vOS4reOBr+aKvOOBm+OBquOBj+OBquOCi+ODnOOCv+ODsyAqL1xuZXhwb3J0IGNvbnN0IExvYWRCdXR0b246IEZ1bmN0aW9uQ29tcG9uZW50PFxuICB7IGxvYWRpbmc6IGJvb2xlYW47IG9uQ2xpY2s/OiBoLkpTWC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MQnV0dG9uRWxlbWVudD4gfVxuPiA9IChcbiAgeyBsb2FkaW5nLCBvbkNsaWNrIH0sXG4pID0+IChsb2FkaW5nXG4gID8gKFxuICAgIDxkaXY+XG4gICAgICA8aSBjbGFzc05hbWU9XCJmYSBmYS1zcGlubmVyXCIgLz5cbiAgICA8L2Rpdj5cbiAgKVxuICA6IDxidXR0b24gY2xhc3NOYW1lPVwibmF2aSByZWxvYWRcIiBvbkNsaWNrPXtvbkNsaWNrfT57XCJcXHVlMDZkXCJ9PC9idXR0b24+KTtcbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcIi4uL2RlcHMvcHJlYWN0LnRzeFwiO1xuLyoqIDHliIbjgZTjgajjgatEYXRl44KS55Sf5oiQ44GX44Gm6L+U44GZaG9va3MgKi9cbmV4cG9ydCBjb25zdCB1c2VNaW51dGVzID0gKCk6IERhdGUgPT4ge1xuICBjb25zdCBbZGF0ZSwgc2V0RGF0ZV0gPSB1c2VTdGF0ZShuZXcgRGF0ZSgpKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHNldERhdGUobmV3IERhdGUoKSksIDEwMDAgKiA2MCk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgcmV0dXJuIGRhdGU7XG59O1xuIiwgImltcG9ydCB7IFN0YXR1cyB9IGZyb20gXCIuLi8uLi9ob3dtL3N0YXR1cy50c1wiO1xuXG5leHBvcnQgY29uc3QgdG9TdGF0dXNMYWJlbCA9IChcbiAgc3RhdHVzOiBTdGF0dXMsXG4pOiBcIlRvRG9cIiB8IFwi6Kaa5pu4XCIgfCBcIue3oOWIh1wiIHwgXCLmta7pgYpcIiB8IFwi5a6M5LqGXCIgPT4ge1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgXCJ0b2RvXCI6XG4gICAgICByZXR1cm4gXCJUb0RvXCI7XG4gICAgY2FzZSBcIm5vdGVcIjpcbiAgICAgIHJldHVybiBcIuimmuabuFwiO1xuICAgIGNhc2UgXCJkZWFkbGluZVwiOlxuICAgICAgcmV0dXJuIFwi57eg5YiHXCI7XG4gICAgY2FzZSBcInVwLWRvd25cIjpcbiAgICAgIHJldHVybiBcIua1rumBilwiO1xuICAgIGNhc2UgXCJkb25lXCI6XG4gICAgICByZXR1cm4gXCLlrozkuoZcIjtcbiAgfVxufTtcbiIsICJpbXBvcnQgeyBlbmNvZGVUaXRsZVVSSSB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXN0ZC50c1wiO1xuXG4vKiogU2NyYXBib3jjga7jg6rjg7Pjgq/jgpLooajjgZkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF0aCB7XG4gIHByb2plY3Q6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbn1cblxuLyoqIFBhdGjjgYvjgolVUkzjgpLkvZzjgosgKi9cbmV4cG9ydCBjb25zdCBtYWtlTGluayA9IChwYXRoOiBQYXRoLCBiYXNlPzogc3RyaW5nIHwgVVJMKTogVVJMID0+XG4gIG5ldyBVUkwoXG4gICAgYC8ke3BhdGgucHJvamVjdH0vJHtlbmNvZGVUaXRsZVVSSShwYXRoLnRpdGxlKX1gLFxuICAgIGJhc2UgPz8gbG9jYXRpb24uaHJlZixcbiAgKTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG4vKiogQGpzeCBoICovXG5cbmltcG9ydCB7IEZ1bmN0aW9uQ29tcG9uZW50LCBoIH0gZnJvbSBcIi4uL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHR5cGUgeyBTY3JhcGJveCB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXN0ZC1kb20udHNcIjtcbmltcG9ydCB7IG1ha2VMaW5rLCBQYXRoIH0gZnJvbSBcIi4vcGF0aC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbi8qKiDlhoXpg6hwcm9qZWN044Gn44GvU1BB44KS57at5oyB44GX44Gm6YG356e744GZ44KL44Oq44Oz44KvICovXG5leHBvcnQgY29uc3QgU2NyYXBib3hMaW5rOiBGdW5jdGlvbkNvbXBvbmVudDxcbiAgJiBQYXRoXG4gICYgT21pdDxcbiAgICBoLkpTWC5IVE1MQXR0cmlidXRlczxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgXCJyZWxcIiB8IFwidGFyZ2V0XCIgfCBcInR5cGVcIiB8IFwiaHJlZlwiXG4gID5cbj4gPSAoXG4gIHsgY2hpbGRyZW4sIHByb2plY3QsIHRpdGxlLCBjbGFzc05hbWUsIC4uLmF0cmlidXRlcyB9LFxuKSA9PiAoXG4gIDxhXG4gICAgey4uLmF0cmlidXRlc31cbiAgICBjbGFzc05hbWU9e1tjbGFzc05hbWUgPz8gXCJcIiwgXCJwYWdlLWxpbmtcIl0uam9pbihcIiBcIil9XG4gICAgdHlwZT1cImxpbmtcIlxuICAgIGhyZWY9e21ha2VMaW5rKHsgcHJvamVjdCwgdGl0bGUgfSkucGF0aG5hbWV9XG4gICAgey4uLihwcm9qZWN0ID09PSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWVcbiAgICAgID8gKHsgcmVsOiBcInJvdXRlXCIgfSlcbiAgICAgIDogKHsgcmVsOiBcIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiwgdGFyZ2V0OiBcIl9ibGFua1wiIH0pKX1cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9hPlxuKTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG4vKiogQGpzeCBoICovXG5cbmltcG9ydCB7IEZ1bmN0aW9uQ29tcG9uZW50LCBoLCB1c2VNZW1vIH0gZnJvbSBcIi4uLy4uL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgQ29weSB9IGZyb20gXCIuLi9Db3B5LnRzeFwiO1xuaW1wb3J0IHsgYWRkTWludXRlcywgaXNBZnRlciB9IGZyb20gXCIuLi8uLi9kZXBzL2RhdGUtZm5zLnRzXCI7XG5pbXBvcnQgeyBmb3JtYXQsIHRvRGF0ZSB9IGZyb20gXCIuLi8uLi9ob3dtL2xvY2FsRGF0ZS50c1wiO1xuaW1wb3J0IHsgZ2V0RHVyYXRpb24sIGdldFN0YXJ0IH0gZnJvbSBcIi4uLy4uL2hvd20vcGFyc2UudHNcIjtcbmltcG9ydCB7IHVzZU1pbnV0ZXMgfSBmcm9tIFwiLi4vdXNlTWludXRlcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBTY3JhcGJveCB9IGZyb20gXCIuLi8uLi9kZXBzL3NjcmFwYm94LXN0ZC1kb20udHNcIjtcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gXCIuL21vZC50c3hcIjtcbmltcG9ydCB7IHRvU3RhdHVzTGFiZWwgfSBmcm9tIFwiLi90b1N0YXR1c0xhYmVsLnRzXCI7XG5pbXBvcnQgeyBTY3JhcGJveExpbmsgfSBmcm9tIFwiLi4vU2NyYXBib3hMaW5rLnRzeFwiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbi8qKiDjgr/jgrnjgq/jga7mg4XloLHjgpIx6KGM44Gr6KGo56S644GZ44KL6YOo5ZOBXG4gKlxuICogQHBhcmFtIGFjdGlvbiDooajnpLrjgZnjgovjgr/jgrnjgq9cbiAqIEBwYXJhbSBwQWN0aW9ucyDjgZ3jga7ku5bjga7jgr/jgrnjgq8g44Kz44OU44O855So44OG44Kt44K544OI44KS5L2c5oiQ44GZ44KL5pmC44Gr5L2/44GGXG4gKi9cbmV4cG9ydCBjb25zdCBUYXNrSXRlbTogRnVuY3Rpb25Db21wb25lbnQ8XG4gIHsgYWN0aW9uOiBBY3Rpb247IHBBY3Rpb25zOiBBY3Rpb25bXSB9XG4+ID0gKFxuICB7IGFjdGlvbiwgcEFjdGlvbnMgfSxcbikgPT4ge1xuICBjb25zdCB0eXBlID0gdXNlTWVtbygoKSA9PiB0b1N0YXR1c0xhYmVsKGFjdGlvbi5mcmVzaG5lc3Muc3RhdHVzKSwgW1xuICAgIGFjdGlvbi5mcmVzaG5lc3Muc3RhdHVzLFxuICBdKTtcbiAgY29uc3Qgc3RhcnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB0aW1lID0gZm9ybWF0KGdldFN0YXJ0KGFjdGlvbikpLnNsaWNlKDExKTtcbiAgICByZXR1cm4gdGltZSB8fCBcIiAgICAgXCI7XG4gIH0sIFtnZXRTdGFydChhY3Rpb24pXSk7XG4gIGNvbnN0IGR1cmF0aW9uID0gdXNlTWVtbygoKSA9PiBnZXREdXJhdGlvbihhY3Rpb24pLCBbYWN0aW9uXSk7XG4gIGNvbnN0IGZyZXNobmVzc0xldmVsID0gTWF0aC5mbG9vcihNYXRoLnJvdW5kKGFjdGlvbi5zY29yZSkgLyA3KTtcblxuICBjb25zdCBub3cgPSB1c2VNaW51dGVzKCk7XG4gIC8qKiDnj77lnKjmmYLliLvku6XpmY3jgavlrp/ooYzml6XmmYLjgYzoqK3lrprjgZXjgozjgabjgYTjgozjgbBgdHJ1ZWBcbiAgICpcbiAgICog5YaN6YWN572u44GX44Gf44K/44K544Kv44GL44Gp44GG44GL44KS6KGo44GX44Gm44GE44KLXG4gICAqL1xuICBjb25zdCBzY2hlZHVsZWQgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBhY3Rpb24uZXhlY3V0ZWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgaXNBZnRlcihcbiAgICAgICAgYWRkTWludXRlcyh0b0RhdGUoYWN0aW9uLmV4ZWN1dGVkLnN0YXJ0KSwgYWN0aW9uLmV4ZWN1dGVkLmR1cmF0aW9uKSxcbiAgICAgICAgbm93LFxuICAgICAgKSxcbiAgICBbYWN0aW9uLmV4ZWN1dGVkPy5zdGFydCwgYWN0aW9uLmV4ZWN1dGVkPy5kdXJhdGlvbiwgbm93XSxcbiAgKTtcblxuICAvKiog44Kz44OU44O855So44OG44Kt44K544OIICovXG4gIGNvbnN0IHRleHQgPSB1c2VNZW1vKFxuICAgICgpID0+IFsuLi5wQWN0aW9ucywgYWN0aW9uXS5tYXAoKGFjdGlvbikgPT4gYFske2FjdGlvbi5yYXd9XWApLmpvaW4oXCJcXG5cIiksXG4gICAgW3BBY3Rpb25zLCBhY3Rpb25dLFxuICApO1xuICByZXR1cm4gKFxuICAgIDxsaVxuICAgICAgZGF0YS10eXBlPXthY3Rpb24uZnJlc2huZXNzLnN0YXR1c31cbiAgICAgIGRhdGEtZnJlc2huZXNzPXthY3Rpb24uc2NvcmUudG9GaXhlZCgwKX1cbiAgICAgIGRhdGEtbGV2ZWw9e2ZyZXNobmVzc0xldmVsfVxuICAgICAgey4uLihmcmVzaG5lc3NMZXZlbCA8IDBcbiAgICAgICAgPyB7XG4gICAgICAgICAgc3R5bGU6IHsgb3BhY2l0eTogdGFza09wYWNpdHkoYWN0aW9uKS50b0ZpeGVkKDIpIH0sXG4gICAgICAgIH1cbiAgICAgICAgOiB7fSl9XG4gICAgPlxuICAgICAgPENvcHkgdGV4dD17dGV4dH0gdGl0bGU9XCLjgZPjgZPjgb7jgafjgrPjg5Tjg7xcIiAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibGFiZWwgdHlwZVwiPnt0eXBlfTwvc3Bhbj5cbiAgICAgIDxpIGNsYXNzTmFtZT17YGxhYmVsIGZhciBmYS1mdyR7c2NoZWR1bGVkID8gXCIgZmEtYm9va21hcmtcIiA6IFwiXCJ9YH0gLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImxhYmVsIGZyZXNobmVzc1wiPnthY3Rpb24uc2NvcmUudG9GaXhlZCgwKX08L3NwYW4+XG4gICAgICA8dGltZSBjbGFzc05hbWU9XCJsYWJlbCBzdGFydFwiPntzdGFydH08L3RpbWU+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJsYWJlbCBkdXJhdGlvblwiPntkdXJhdGlvbn1tPC9zcGFuPlxuICAgICAgPFNjcmFwYm94TGluayBwcm9qZWN0PXthY3Rpb24ucHJvamVjdH0gdGl0bGU9e2FjdGlvbi5yYXd9PlxuICAgICAgICB7YWN0aW9uLm5hbWV9XG4gICAgICA8L1NjcmFwYm94TGluaz5cbiAgICA8L2xpPlxuICApO1xufTtcblxuLyoqIOaXrOW6puOBq+W/nOOBmOOBpuihqOekuuOBmeOCi+OCv+OCueOCr+OBrumAj+aYjuW6puOCkuWkieOBiOOCi1xuICpcbiAqIOaXrOW6pjDjgac3MCUsIOaXrOW6pi0344GnNjAl44Gr44Gq44KL44KI44GG6Kq/56+A44GX44GfXG4gKi9cbmNvbnN0IHRhc2tPcGFjaXR5ID0gKGFjdGlvbjogQWN0aW9uKTogbnVtYmVyID0+XG4gIE1hdGgubWF4KFxuICAgIDAuOCAqIE1hdGguZXhwKE1hdGgubG9nKDggLyA3KSAvIDcgKiBhY3Rpb24uc2NvcmUpLFxuICAgIDAuMDUsXG4gICk7XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcIi4uLy4uL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4uLy4uL2hvd20vbG9jYWxEYXRlLnRzXCI7XG5pbXBvcnQgeyBLZXksIHRvS2V5LCB0b0xvY2FsRGF0ZSB9IGZyb20gXCIuLi9rZXkudHNcIjtcblxuZXhwb3J0IHR5cGUgUGFnZU5vID0gS2V5IHwgXCJleHBpcmVkXCIgfCBcImVycm9yc1wiO1xuXG5leHBvcnQgY29uc3QgdXNlTmF2aWdhdGlvbiA9IChcbiAgZGVmYXVsdFBhZ2VObzogUGFnZU5vID0gdG9LZXkobmV3IERhdGUoKSksXG4pID0+IHtcbiAgLyoqIOaXpeS7mOOBruWgtOWQiOOBr+ePvuWcqOihqOekuuOBl+OBpuOBhOOCi+OCv+OCueOCr+ODquOCueODiOOBruWfuua6lueCueOCkuihqOOBmVxuICAgKiBgZXhwaXJlZGDjga7jgajjgY3jga/jgoTjgormrovjgZfjgZ/kuojlrprjgpLooajnpLrjgZnjgotcbiAgICogYGVycm9yYOOBruOBqOOBjeOBr+OCqOODqeODvOOCkuihqOekuuOBmeOCi1xuICAgKi9cbiAgY29uc3QgW3BhZ2VObywgc2V0UGFnZU5vXSA9IHVzZVN0YXRlPFBhZ2VObz4oZGVmYXVsdFBhZ2VObyk7XG5cbiAgY29uc3QgbmV4dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRQYWdlTm8oKHBhZ2VObykgPT4ge1xuICAgICAgc3dpdGNoIChwYWdlTm8pIHtcbiAgICAgICAgY2FzZSBcImVycm9yc1wiOlxuICAgICAgICAgIHJldHVybiBcImV4cGlyZWRcIjtcbiAgICAgICAgY2FzZSBcImV4cGlyZWRcIjpcbiAgICAgICAgICByZXR1cm4gdG9LZXkobmV3IERhdGUoKSk7XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBjb25zdCBkYXRlID0gdG9EYXRlKHRvTG9jYWxEYXRlKHBhZ2VObykpO1xuICAgICAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIDEpO1xuICAgICAgICAgIHJldHVybiB0b0tleShkYXRlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHByZXYgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0UGFnZU5vKChwYWdlTm8pID0+IHtcbiAgICAgIGNvbnN0IG5vd0tleSA9IHRvS2V5KG5ldyBEYXRlKCkpO1xuICAgICAgc3dpdGNoIChwYWdlTm8pIHtcbiAgICAgICAgY2FzZSBcImVycm9yc1wiOlxuICAgICAgICAgIHJldHVybiBcImVycm9yc1wiO1xuICAgICAgICBjYXNlIFwiZXhwaXJlZFwiOlxuICAgICAgICAgIHJldHVybiBcImVycm9yc1wiO1xuICAgICAgICBjYXNlIG5vd0tleTpcbiAgICAgICAgICByZXR1cm4gXCJleHBpcmVkXCI7XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBjb25zdCBkYXRlID0gdG9EYXRlKHRvTG9jYWxEYXRlKHBhZ2VObykpO1xuICAgICAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSAtIDEpO1xuICAgICAgICAgIHJldHVybiB0b0tleShkYXRlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHsgcGFnZU5vLCBuZXh0LCBwcmV2IH07XG59O1xuIiwgImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCIuLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnROYW1lLCBTY3JhcGJveCB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXN0ZC1kb20udHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5leHBvcnQgY29uc3QgdXNlVXNlclNjcmlwdEV2ZW50ID0gKFxuICBldmVudE5hbWU6IEV2ZW50TmFtZSxcbiAgY2FsbGJhY2s6ICgpID0+IHZvaWQsXG4pOiB2b2lkID0+XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2NyYXBib3gub24oZXZlbnROYW1lLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuICgpID0+IHNjcmFwYm94Lm9mZihldmVudE5hbWUsIGNhbGxiYWNrKTtcbiAgfSwgW10pO1xuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSBcIi4uL2RlcHMvcHJlYWN0LnRzeFwiO1xuXG5leHBvcnQgY29uc3QgdXNlRXhwb3J0cyA9IDxcbiAgRXhwb3J0TmFtZXMgZXh0ZW5kcyBzdHJpbmcsXG4gIEV4cG9ydE9iamVjdCBleHRlbmRzIFJlY29yZDxFeHBvcnROYW1lcywgdW5rbm93bj4sXG4+KFxuICBleHBvcnRlcjogKFxuICAgIGV4cG9ydE9iamVjdDogRXhwb3J0T2JqZWN0IHwgUmVjb3JkPEV4cG9ydE5hbWVzLCB1bmRlZmluZWQ+LFxuICApID0+IHZvaWQsXG4gIGV4cG9ydE9iamVjdDogRXhwb3J0T2JqZWN0LFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxFeHBvcnRPYmplY3Q+KHsgLi4uZXhwb3J0T2JqZWN0IH0pO1xuICB1c2VFZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgT2JqZWN0LmFzc2lnbihyZWYuY3VycmVudCwgZXhwb3J0T2JqZWN0KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGV4cG9ydE9iamVjdCkpIHtcbiAgICAgICAgICBkZWxldGUgcmVmLmN1cnJlbnRba2V5IGFzIEV4cG9ydE5hbWVzXTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LFxuICAgIFsuLi5PYmplY3Qua2V5cyhleHBvcnRPYmplY3QpXS5zb3J0KCkubWFwKChrZXkpID0+XG4gICAgICBleHBvcnRPYmplY3Rba2V5IGFzIEV4cG9ydE5hbWVzXVxuICAgICksXG4gICk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZXhwb3J0ZXIocmVmLmN1cnJlbnQpO1xuICB9LCBbZXhwb3J0ZXJdKTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuLyoqIEBqc3hGcmFnIEZyYWdtZW50ICovXG5cbmltcG9ydCB7IEZyYWdtZW50LCBoLCByZW5kZXIsIHVzZU1lbW8gfSBmcm9tIFwiLi4vLi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyB1c2VUYXNrQ3Jhd2xlciB9IGZyb20gXCIuLi91c2VUYXNrQ3Jhd2xlci50c1wiO1xuaW1wb3J0IHsgdXNlRGlhbG9nIH0gZnJvbSBcIi4uL3VzZURpYWxvZy50c3hcIjtcbmltcG9ydCB7IENTUyB9IGZyb20gXCIuLi92aWV3ZXIubWluLmNzcy50c1wiO1xuaW1wb3J0IHsgQ29weSB9IGZyb20gXCIuLi9Db3B5LnRzeFwiO1xuaW1wb3J0IHsgZnJvbURhdGUsIGlzQmVmb3JlLCB0b0RhdGUgfSBmcm9tIFwiLi4vLi4vaG93bS9sb2NhbERhdGUudHNcIjtcbmltcG9ydCB7IGNhbGNGcmVzaG5lc3MgfSBmcm9tIFwiLi4vLi4vaG93bS9mcmVzaG5lc3MudHNcIjtcbmltcG9ydCB7XG4gIGdldEVuZCxcbiAgZ2V0U3RhcnQsXG4gIGlzUmVjdXJyZW5jZSxcbiAgaXNSZW1pbmRlcixcbiAgUmVtaW5kZXIsXG59IGZyb20gXCIuLi8uLi9ob3dtL3BhcnNlLnRzXCI7XG5pbXBvcnQgeyBQZXJpb2QgfSBmcm9tIFwiLi4vLi4vaG93bS9QZXJpb2QudHNcIjtcbmltcG9ydCB7IGNvbXBhcmVGbiB9IGZyb20gXCIuLi8uLi9ob3dtL3NvcnQudHNcIjtcbmltcG9ydCB7IFN0YXR1cyB9IGZyb20gXCIuLi8uLi9ob3dtL3N0YXR1cy50c1wiO1xuaW1wb3J0IHsgdG9Mb2NhbERhdGUgfSBmcm9tIFwiLi4va2V5LnRzXCI7XG5pbXBvcnQgeyBMb2FkQnV0dG9uIH0gZnJvbSBcIi4uL0xvYWRCdXR0b24udHN4XCI7XG5pbXBvcnQgeyBUYXNrSXRlbSB9IGZyb20gXCIuL1Rhc2tJdGVtLnRzeFwiO1xuaW1wb3J0IHsgdXNlTmF2aWdhdGlvbiB9IGZyb20gXCIuL3VzZU5hdmlnYXRpb24udHN4XCI7XG5pbXBvcnQgeyB1c2VVc2VyU2NyaXB0RXZlbnQgfSBmcm9tIFwiLi4vdXNlVXNlclNjcmlwdEV2ZW50LnRzXCI7XG5pbXBvcnQgeyB1c2VFeHBvcnRzIH0gZnJvbSBcIi4uL3VzZUV4cG9ydHMudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZENvbnRyb2xsZXIge1xuICAvKiogY2FsZW5kYXLjgpLplovjgY8gKi9cbiAgb3BlbjogKCkgPT4gdm9pZDtcbiAgLyoqIGNhbGVuZGFy44KS6ZaJ44GY44KLICovXG4gIGNsb3NlOiAoKSA9PiB2b2lkO1xufVxuZXhwb3J0IHR5cGUgSW52YWxpZENvbnRyb2xsZXIgPSBSZWNvcmQ8a2V5b2YgVmFsaWRDb250cm9sbGVyLCB1bmRlZmluZWQ+O1xuLyoqIGNhbGVuZWRhcuOBrmNvbnRyb2xsZXJcbiAqXG4gKiBtZXRob2Rz44Gve0BsaW5rIFZhbGlkQ29udHJvbGxlcn3jgpLlj4LnhadcbiAqXG4gKiBjYWxlbmRhcuOBjHVtb3VudOOBleOCjOOBn+W+jOOBr3tAbGluayBJbnZhbGlkQ29udHJvbGxlcn0o5YWo44Gm44GubWV0aG9kc+OBjGB1bmRlZmluZWRgKeOBq+OBquOCi1xuICovXG5leHBvcnQgdHlwZSBDb250cm9sbGVyID0gVmFsaWRDb250cm9sbGVyIHwgSW52YWxpZENvbnRyb2xsZXI7XG5cbmV4cG9ydCBjb25zdCBzZXR1cCA9IChwcm9qZWN0czogc3RyaW5nW10pOiBQcm9taXNlPENvbnRyb2xsZXI+ID0+IHtcbiAgY29uc3QgYXBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgYXBwLmRhdGFzZXQudXNlcnNjcmlwdE5hbWUgPSBcInRha2tlci13b3JrZmxvd0AwLjAuMS9uZXh0LWFjdGlvbi12aWV3ZXJcIjtcbiAgY29uc3Qgc2hhZG93Um9vdCA9IGFwcC5hdHRhY2hTaGFkb3coeyBtb2RlOiBcIm9wZW5cIiB9KTtcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmQoYXBwKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKFxuICAgIChyZXNvbHZlKSA9PlxuICAgICAgcmVuZGVyKDxBcHAgZ2V0Q29udHJvbGxlcj17cmVzb2x2ZX0gcHJvamVjdHM9e3Byb2plY3RzfSAvPiwgc2hhZG93Um9vdCksXG4gICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbiBleHRlbmRzIFJlbWluZGVyIHtcbiAgZXhlY3V0ZWQ/OiBQZXJpb2Q7XG4gIHByb2plY3Q6IHN0cmluZztcbiAgc2NvcmU6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgZ2V0Q29udHJvbGxlcjogKGNvbnRyb2xsZXI6IENvbnRyb2xsZXIpID0+IHZvaWQ7XG4gIHByb2plY3RzOiBzdHJpbmdbXTtcbn1cbmNvbnN0IEFwcCA9ICh7IGdldENvbnRyb2xsZXIsIHByb2plY3RzIH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdGFza3MsIGVycm9ycywgbG9hZCwgbG9hZGluZyB9ID0gdXNlVGFza0NyYXdsZXIocHJvamVjdHMpO1xuICBjb25zdCB7IHBhZ2VObywgbmV4dCwgcHJldiB9ID0gdXNlTmF2aWdhdGlvbigpO1xuXG4gIC8qKiDooajnpLrjgZnjgovjgr/jgrnjgq8gKi9cbiAgY29uc3QgYWN0aW9uczogQWN0aW9uW10gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAocGFnZU5vID09PSBcImVycm9yc1wiKSB7XG4gICAgICAvLyDjgqjjg6njg7zjgavjgarjgaPjgZ/jgr/jgrnjgq/jgpLooajnpLpcbiAgICAgIHJldHVybiBlcnJvcnMubWFwKChlcnJvcikgPT4gKHtcbiAgICAgICAgbmFtZTogYCR7ZXJyb3IudGl0bGV9XFxubmFtZToke2Vycm9yLm5hbWV9XFxubWVzc2FnZToke2Vycm9yLm1lc3NhZ2V9YCxcbiAgICAgICAgcmF3OiBlcnJvci50aXRsZSxcbiAgICAgICAgZnJlc2huZXNzOiB7XG4gICAgICAgICAgcmVmRGF0ZTogeyB5ZWFyOiA5OTk5LCBtb250aDogMSwgZGF0ZTogMSB9LFxuICAgICAgICAgIHN0YXR1czogXCJ0b2RvXCIgYXMgU3RhdHVzLFxuICAgICAgICB9LFxuICAgICAgICBwcm9qZWN0OiBlcnJvci5wcm9qZWN0LFxuICAgICAgICBnZW5lcmF0ZWQ6IHRydWUsXG4gICAgICAgIHNjb3JlOiAwLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmIChwYWdlTm8gPT09IFwiZXhwaXJlZFwiKSB7XG4gICAgICAvLyDmnJ/pmZDliIfjgozjga7kuojlrprjgpLooajnpLpcbiAgICAgIC8vIOOCv+OCueOCr+OBr+ihqOekuuOBl+OBquOBhFxuICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgIHJldHVybiB0YXNrcy5mbGF0TWFwPEFjdGlvbj4oKHRhc2spID0+XG4gICAgICAgICFpc1JlbWluZGVyKHRhc2spICYmIGlzQmVmb3JlKGdldEVuZCh0YXNrKSwgZnJvbURhdGUobm93KSkgJiZcbiAgICAgICAgICB0YXNrLmZyZXNobmVzcyA9PT0gdW5kZWZpbmVkICYmIHRhc2sucmVjdXJyZW5jZSA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC4uLnRhc2ssXG4gICAgICAgICAgICAgIHNjb3JlOiAwLFxuICAgICAgICAgICAgICBmcmVzaG5lc3M6IHsgcmVmRGF0ZTogdGFzay5leGVjdXRlZC5zdGFydCwgc3RhdHVzOiBcInRvZG9cIiB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgICAgOiBbXVxuICAgICAgKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gaXNCZWZvcmUoZ2V0U3RhcnQoYSksIGdldFN0YXJ0KGIpKSA/IC0xIDogMCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZSA9IHRvRGF0ZSh0b0xvY2FsRGF0ZShwYWdlTm8pKSE7XG4gICAgLy8g5oyH5a6a44GV44KM44Gf5pel5LuY44KS6LW354K544Gr6KiI566X44GX44Gf5pes5bqm44Gr5Z+644Gl44GE44Gm44K944O844OI44GZ44KLXG4gICAgLy8g5LiA5b+c44CB5LiA5a6a5pyq5rqA44Gu5pes5bqm44Gu44K/44K544Kv44Gv6KGo56S644GX44Gq44GE44GM44CB5q2j55u044GT44Gu5Yi26ZmQ44Gv44GE44KJ44Gq44GE44KI44GG44Gr5oCd44GGXG4gICAgcmV0dXJuIHRhc2tzLmZsYXRNYXAoKHRhc2spID0+IHtcbiAgICAgIGlmICghdGFzay5mcmVzaG5lc3MpIHJldHVybiBbXTtcbiAgICAgIGlmIChpc1JlY3VycmVuY2UodGFzaykpIHJldHVybiBbXTtcbiAgICAgIGNvbnN0IHNjb3JlID0gY2FsY0ZyZXNobmVzcyh0YXNrLmZyZXNobmVzcywgZGF0ZSk7XG4gICAgICByZXR1cm4gc2NvcmUgPiAtOTk5ID8gW3sgLi4udGFzaywgc2NvcmUgfSBhcyBBY3Rpb25dIDogW107XG4gICAgfSkuc29ydChjb21wYXJlRm4pO1xuICB9LCBbdGFza3MsIGVycm9ycywgcGFnZU5vXSk7XG5cbiAgLy8gVUnjga7plovplolcbiAgY29uc3QgeyBEaWFsb2csIG9wZW4sIGNsb3NlIH0gPSB1c2VEaWFsb2coKTtcbiAgdXNlRXhwb3J0cyhnZXRDb250cm9sbGVyLCB7IG9wZW4sIGNsb3NlIH0pO1xuXG4gIC8qKiDjgrPjg5Tjg7znlKjjg4bjgq3jgrnjg4ggKi9cbiAgY29uc3QgdGV4dCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gW3BhZ2VObywgLi4uYWN0aW9ucy5tYXAoKGFjdGlvbikgPT4gYCBbJHthY3Rpb24ucmF3fV1gKV0uam9pbihcIlxcblwiKSxcbiAgICBbYWN0aW9ucywgcGFnZU5vXSxcbiAgKTtcblxuICAvLyDlkIzjgZjjgr/jg5bjgafliKXjga7jg5rjg7zjgrjjgavpgbfnp7vjgZfjgZ/jgajjgY3jga9tb2RhbOOCkumWieOBmOOCi1xuICB1c2VVc2VyU2NyaXB0RXZlbnQoXCJwYWdlOmNoYW5nZWRcIiwgY2xvc2UpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxzdHlsZT57Q1NTfTwvc3R5bGU+XG4gICAgICA8RGlhbG9nPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRyb2xsZXJcIj5cbiAgICAgICAgICA8Q29weSB0ZXh0PXt0ZXh0fSB0aXRsZT1cIkNvcHkgQWxsIFRhc2tzXCIgLz5cbiAgICAgICAgICA8c3Bhbj57cGFnZU5vfTwvc3Bhbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cIm5hdmkgbGVmdFwiIG9uQ2xpY2s9e3ByZXZ9PntcIlxcdWUwMmNcIn08L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cIm5hdmkgcmlnaHRcIiBvbkNsaWNrPXtuZXh0fT57XCJcXHVlMDJkXCJ9PC9idXR0b24+XG4gICAgICAgICAgPExvYWRCdXR0b24gbG9hZGluZz17bG9hZGluZ30gb25DbGljaz17bG9hZH0gLz5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImNsb3NlXCIgb25DbGljaz17Y2xvc2V9PntcIlxcdWYwMGRcIn08L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx1bCBjbGFzc05hbWU9XCJyZXN1bHQgdGFzay1saXN0XCIgZGF0YS1wYWdlLW5vPXtwYWdlTm99PlxuICAgICAgICAgIHthY3Rpb25zLm1hcCgoYWN0aW9uLCBpKSA9PiAoXG4gICAgICAgICAgICA8VGFza0l0ZW1cbiAgICAgICAgICAgICAga2V5PXthY3Rpb24ucmF3fVxuICAgICAgICAgICAgICBhY3Rpb249e2FjdGlvbn1cbiAgICAgICAgICAgICAgcEFjdGlvbnM9e2FjdGlvbnMuc2xpY2UoMCwgaSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L3VsPlxuICAgICAgPC9EaWFsb2c+XG4gICAgPC8+XG4gICk7XG59O1xuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwiLi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBnZXRQYWdlLCB0b1RpdGxlTGMgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1zdGQudHNcIjtcbmltcG9ydCB7IFNjcmFwYm94LCB0YWtlSW50ZXJuYWxMaW5lcyB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXN0ZC1kb20udHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG50eXBlIEtleSA9IGAvJHtzdHJpbmd9LyR7c3RyaW5nfWA7XG5jb25zdCB0b0tleSA9IChwcm9qZWN0OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBLZXkgPT5cbiAgYC8ke3Byb2plY3R9LyR7dG9UaXRsZUxjKHRpdGxlKX1gO1xuY29uc3QgcGFnZXMgPSBuZXcgTWFwPEtleSwgc3RyaW5nW10+KCk7XG50eXBlIExpc3RlbmVyID0gKGxpbmVzOiBzdHJpbmdbXSkgPT4gdm9pZDtcbmNvbnN0IGxpc3RlbmVycyA9IG5ldyBNYXA8S2V5LCBTZXQ8TGlzdGVuZXI+PigpO1xuY29uc3QgZW1pdENoYW5nZSA9IChrZXk6IEtleSwgbGluZXM6IHN0cmluZ1tdKSA9PiB7XG4gIHBhZ2VzLnNldChrZXksIGxpbmVzKTtcbiAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMuZ2V0KGtleSkgPz8gW10pIHtcbiAgICBsaXN0ZW5lcihsaW5lcyk7XG4gIH1cbn07XG4vLyDlhaXlipvjgZnjgovjgZ/jgbPjgavmm7TmlrDjgZnjgotcbi8vIOabtOaWsOOBr2BnZXQoKWDjgacx5Zue5Lul5LiK5ZG844Gz5Ye644GV44KM44GfcGFnZXPjga7jgb/jgpLlr77osaHjgajjgZnjgotcbmNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgaWYgKHRpbWVyICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICB0aW1lciA9IHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBwcm9qZWN0ID0gc2NyYXBib3guUHJvamVjdC5uYW1lO1xuICBjb25zdCB0aXRsZSA9IHNjcmFwYm94LlBhZ2UudGl0bGUgPz8gXCJcIjtcbiAgY29uc3Qga2V5ID0gdG9LZXkocHJvamVjdCwgdGl0bGUpO1xuICBpZiAoIXBhZ2VzLmhhcyhrZXkpKSByZXR1cm47XG5cbiAgY29uc3QgbGluZXMgPSB0YWtlSW50ZXJuYWxMaW5lcygpLm1hcCgobGluZSkgPT4gbGluZS50ZXh0KTtcbiAgLy8g5pu05paw44Gu44K/44Kk44Of44Oz44Kw44Gu5b2x6Z+/44Gn44CB5pys5paH44GM44G+44Gg5pu05paw44GV44KM44Gm44GE44Gq44GE5Y+v6IO95oCn44GM44GC44KLXG4gIC8vIOOBneOBruWgtOWQiOOBr2B0aXRsZWDjgajmnKzmloflhYjpoK3jga7mloflrZfliJfjgYzkuIDoh7TjgZnjgovjgb7jgaflvoXmqZ/jgZnjgotcbiAgdGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgaWYgKHRvVGl0bGVMYyh0aXRsZSkgIT09IHRvVGl0bGVMYyhsaW5lc1swXSkpIHJldHVybjtcbiAgICBlbWl0Q2hhbmdlKGtleSwgbGluZXMpO1xuICAgIGlmICh0aW1lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICAgIHRpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSwgMTAwMCk7XG59O1xubGV0IHRpbWVyOiB1bmRlZmluZWQgfCBudW1iZXI7XG57XG4gIHNjcmFwYm94Lm9uKFwicGFnZTpjaGFuZ2VkXCIsICgpID0+IHtcbiAgICBzY3JhcGJveC5vZmYoXCJsaW5lczpjaGFuZ2VkXCIsIHVwZGF0ZSk7XG5cbiAgICBjb25zdCBwcm9qZWN0ID0gc2NyYXBib3guUHJvamVjdC5uYW1lO1xuICAgIGNvbnN0IHRpdGxlID0gc2NyYXBib3guUGFnZS50aXRsZSA/PyBcIlwiO1xuICAgIGNvbnN0IGtleSA9IHRvS2V5KHByb2plY3QsIHRpdGxlKTtcbiAgICBpZiAoIXBhZ2VzLmhhcyhrZXkpKSByZXR1cm47XG5cbiAgICBzY3JhcGJveC5vbihcImxpbmVzOmNoYW5nZWRcIiwgdXBkYXRlKTtcbiAgfSk7XG59XG5cbmNvbnN0IGdldCA9IChwcm9qZWN0OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IGtleSA9IHRvS2V5KHByb2plY3QsIHRpdGxlKTtcbiAgY29uc3QgcmVzdWx0ID0gcGFnZXMuZ2V0KGtleSk7XG4gIGlmICghcmVzdWx0KSB7XG4gICAgLy8g5LiA5bqm44GX44GL5Yid5pyf5YyW5Yem55CG44GM6LWw44KJ44Gq44GE44KI44GG44Gr44GZ44KLXG4gICAgLy8gZHVtbXnjga7jgYvjgonphY3liJfjgpLlhaXjgozjgovjgaDjgZHjgarjga7jgafjgIEgYGVtaXRDaGFuZ2Vg44GnbGlzdGVuZXJz44Gv5ZG844Gz5Ye644GV44Gq44GP44Gm44GE44GEXG4gICAgcGFnZXMuc2V0KGtleSwgW10pO1xuXG4gICAgZ2V0UGFnZShwcm9qZWN0LCB0aXRsZSlcbiAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKCFyZXN1bHQub2spIHJldHVybiBbXTtcbiAgICAgICAgY29uc3QgbGluZXMgPSByZXN1bHQudmFsdWUubGluZXMubWFwKChsaW5lKSA9PiBsaW5lLnRleHQpO1xuICAgICAgICBlbWl0Q2hhbmdlKGtleSwgbGluZXMpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0bGUgPT09IHNjcmFwYm94LlBhZ2UudGl0bGUgJiZcbiAgICAgICAgICAhc2NyYXBib3gubGlzdGVuZXJzKFwibGluZXM6Y2hhbmdlZFwiKS5pbmNsdWRlcyh1cGRhdGUpXG4gICAgICAgICkge1xuICAgICAgICAgIHNjcmFwYm94Lm9uKFwibGluZXM6Y2hhbmdlZFwiLCB1cGRhdGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0ID8/IFtdO1xufTtcblxuLyoqIHNjcmFwYm9444Gu44Oa44O844K444OG44Kt44K544OI44KS5qC857SN44O75Y+C54Wn44GZ44KLaG9va3MgKi9cbmV4cG9ydCBjb25zdCB1c2VMaW5lcyA9IChwcm9qZWN0OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IFtsaW5lcywgc2V0TGluZXNdID0gdXNlU3RhdGU8c3RyaW5nW10+KGdldChwcm9qZWN0LCB0aXRsZSkpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gdG9LZXkocHJvamVjdCwgdGl0bGUpO1xuICAgIGNvbnN0IHNldCA9IGxpc3RlbmVycy5nZXQoa2V5KSA/PyBuZXcgU2V0KCk7XG4gICAgc2V0LmFkZChzZXRMaW5lcyk7XG4gICAgbGlzdGVuZXJzLnNldChrZXksIHNldCk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHNldC5kZWxldGUoc2V0TGluZXMpO1xuICAgIH07XG4gIH0sIFtwcm9qZWN0LCB0aXRsZV0pO1xuXG4gIHJldHVybiBsaW5lcztcbn07XG4iLCAiaW1wb3J0IHsgYWRkTWludXRlcyB9IGZyb20gXCIuLi9kZXBzL2RhdGUtZm5zLnRzXCI7XG5pbXBvcnQgeyBmcm9tRGF0ZSwgTG9jYWxEYXRlVGltZSwgdG9EYXRlIH0gZnJvbSBcIi4vbG9jYWxEYXRlLnRzXCI7XG5cbi8qIOOBhOOBmuOCjOWun+ijheOBmeOCi1xuLyoqIOabnOaXpeaMh+WumuaDheWgseOCkuWKoOOBiOOBn0RhdGUgKlxuZXhwb3J0IGludGVyZmFjZSBFeERhdGUge1xuICBiYXNlOiBEYXRlO1xuICBzdGFydE9mRGF5OiAwIHwgMSB8IDIgfCAzIHwgNCB8IDUgfCA2O1xuICB3ZWVrTnVtOiBudW1iZXI7XG59XG4qL1xuXG4vKiog54m55a6a44Gu5pmC6ZaT5bivICovXG5leHBvcnQgaW50ZXJmYWNlIFBlcmlvZCB7XG4gIC8qKiDplovlp4vml6XmmYIgKi9cbiAgc3RhcnQ6IExvY2FsRGF0ZVRpbWU7XG5cbiAgLyoqIOaJgOimgeaZgumWkyAobWluKSAqL1xuICBkdXJhdGlvbjogbnVtYmVyO1xufVxuXG4vKiog57WC5LqG5pmC5Yi744GM5pyq5a6a44Gu6KiY6YyyICovXG5leHBvcnQgaW50ZXJmYWNlIExvZyB7XG4gIC8qKiDplovlp4vml6XmmYIgKi9cbiAgc3RhcnQ6IExvY2FsRGF0ZVRpbWU7XG5cbiAgLyoqIOa2iOiyu+aZgumWkyAobWluKSAqL1xuICBkdXJhdGlvbj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEVuZCA9IDxUIGV4dGVuZHMgTG9nPihcbiAgcGVyaW9kOiBULFxuKTogVCBleHRlbmRzIHsgZHVyYXRpb246IG51bWJlciB9ID8gTG9jYWxEYXRlVGltZSA6IExvY2FsRGF0ZVRpbWUgfCB1bmRlZmluZWQgPT5cbiAgcGVyaW9kLmR1cmF0aW9uID09PSB1bmRlZmluZWRcbiAgICA/ICh1bmRlZmluZWQgYXMgVCBleHRlbmRzIHsgZHVyYXRpb246IG51bWJlciB9ID8gTG9jYWxEYXRlVGltZSA6IHVuZGVmaW5lZClcbiAgICA6IGZyb21EYXRlKGFkZE1pbnV0ZXModG9EYXRlKHBlcmlvZC5zdGFydCksIHBlcmlvZC5kdXJhdGlvbikpO1xuXG4vKiog54m55a6a5pel5pmC44Gn5YiG5Ymy44GZ44KLICovXG5leHBvcnQgY29uc3Qgc3BsaXQgPSAoXG4gIHBlcmlvZDogUGVyaW9kLFxuICBkYXRlOiBEYXRlLFxuKTogW1BlcmlvZCwgdW5kZWZpbmVkXSB8IFtQZXJpb2QsIFBlcmlvZF0gfCBbdW5kZWZpbmVkLCBQZXJpb2RdID0+IHtcbiAgY29uc3Qgc3RhcnQgPSB0b0RhdGUocGVyaW9kLnN0YXJ0KTtcbiAgY29uc3QgcGFydGl0aW9uID0gZGF0ZS5nZXRUaW1lKCk7XG4gIGNvbnN0IGZvcndvcmRNaW4gPSBNYXRoLnJvdW5kKChwYXJ0aXRpb24gLSBzdGFydC5nZXRUaW1lKCkpIC8gKDYwICogMTAwMCkpO1xuXG4gIGlmIChmb3J3b3JkTWluIDw9IDApIHJldHVybiBbdW5kZWZpbmVkLCBwZXJpb2RdO1xuICBpZiAocGVyaW9kLmR1cmF0aW9uIDw9IGZvcndvcmRNaW4pIHJldHVybiBbcGVyaW9kLCB1bmRlZmluZWRdO1xuICBjb25zdCBmb3J3YXJkID0geyBzdGFydDogcGVyaW9kLnN0YXJ0LCBkdXJhdGlvbjogZm9yd29yZE1pbiB9O1xuICByZXR1cm4gW2ZvcndhcmQsIHtcbiAgICBzdGFydDogZ2V0RW5kKGZvcndhcmQpLFxuICAgIGR1cmF0aW9uOiBwZXJpb2QuZHVyYXRpb24gLSBmb3J3b3JkTWluLFxuICB9XTtcbn07XG4iLCAiaW1wb3J0IHsgZGlmZmVyZW5jZUluTWludXRlcyB9IGZyb20gXCIuLi8uLi9kZXBzL2RhdGUtZm5zLnRzXCI7XG5pbXBvcnQgeyBQZXJpb2QgfSBmcm9tIFwiLi4vLi4vaG93bS9QZXJpb2QudHNcIjtcbmltcG9ydCB7IGdldEVuZCwgTG9nIH0gZnJvbSBcIi4uLy4uL2hvd20vUGVyaW9kLnRzXCI7XG5pbXBvcnQgeyBmcm9tRGF0ZSwgaXNCZWZvcmUgfSBmcm9tIFwiLi4vLi4vaG93bS9sb2NhbERhdGUudHNcIjtcbmltcG9ydCB7XG4gIEV2ZW50IGFzIEhvd21FdmVudCxcbiAgZ2V0TGlua1RpdGxlLFxuICBpc1JlbWluZGVyLFxuICBwYXJzZSxcbn0gZnJvbSBcIi4uLy4uL2hvd20vcGFyc2UudHNcIjtcbmltcG9ydCB7IFN0YXR1cyB9IGZyb20gXCIuLi8uLi9ob3dtL3N0YXR1cy50c1wiO1xuaW1wb3J0IHsgVGFzayBhcyBUYXNrTGluZSB9IGZyb20gXCIuLi8uLi90YXNrLnRzXCI7XG5pbXBvcnQgeyBQYXRoIH0gZnJvbSBcIi4uL3BhdGgudHNcIjtcblxuLyoqIOS6iOWumuihqOeUqOOBq+S/ruato+OBl+OBn0V2ZW50IG9iamVjdCAqL1xuZXhwb3J0IHR5cGUgRXZlbnQgPSBQbGFpbkV2ZW50IHwgRXZlbnRXaXRoTGluaztcblxuLyoqIHRhc2sgbmFtZeOBjOOCv+OCueOCr+ODquODs+OCr+OBp+OBquOBhOOBqOOBjeOBrkV2ZW50ICovXG5leHBvcnQgaW50ZXJmYWNlIFBsYWluRXZlbnQge1xuICAvKiogZXZlbnQgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIOOCv+OCueOCr+ODqeOCpOODs+OBq+WNsOWtl+OBleOCjOOBn+S6iOWumumWi+Wni+aXpeaZgiAqL1xuICBwbGFuOiBQZXJpb2Q7XG5cbiAgLyoqIOWun+e4vumWi+Wni+aXpeaZguOBqOa2iOiyu+aZgumWkyAqL1xuICByZWNvcmQ/OiBMb2c7XG59XG5cbi8qKiB0YXNrIG5hbWXjgYzjgr/jgrnjgq/jg6rjg7Pjgq/jgaDjgaPjgZ/jgajjgY3jga5FdmVudCAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudFdpdGhMaW5rIGV4dGVuZHMgUGxhaW5FdmVudCwgUGF0aCB7XG4gIC8qKiDlrp/ooYzml6XmmYIgKi9cbiAgZXhlY3V0ZWQ/OiBQZXJpb2Q7XG5cbiAgLyoqIOOCv+OCueOCr+OBrueKtuaFiyAqL1xuICBzdGF0dXM/OiBTdGF0dXM7XG59XG5cbi8qKiDjgr/jgrnjgq/jg6rjg7Pjgq/jgarjgolgdHJ1ZWAgKi9cbmV4cG9ydCBjb25zdCBpc0xpbmsgPSAoXG4gIGV2ZW50OiBFdmVudCxcbik6IGV2ZW50IGlzIEV2ZW50V2l0aExpbmsgPT4gXCJ0aXRsZVwiIGluIGV2ZW50O1xuXG4vKiog6KiY6Yyy44GM57WC5LqG44GX44Gf44K/44K544Kv44Gq44KJYHRydWVgICovXG5leHBvcnQgY29uc3QgaXNMb2dnZWQgPSAoZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiA9PlxuICBldmVudC5yZWNvcmQ/LmR1cmF0aW9uICE9PSB1bmRlZmluZWQ7XG5cbi8qKiDnj77lnKjmmYLliLvjgYvjgonmsbrlrprjgZXjgozjgovjgr/jgrnjgq/jga7nirbmhYtcbiAqXG4gKiAtIGRvbmU6IOWujOS6hlxuICogLSBleHBpcmVkOiDmmYLplpPliIfjgoxcbiAqIC0gbW92ZWQ6IOacquadpeOBq+S6iOWumuOCkuOBmuOCieOBl+OBn1xuICogLSB1bmRvbmU6IOacquWujOS6hlxuICovXG5leHBvcnQgdHlwZSBFdmVudFN0YXR1cyA9IFwiZG9uZVwiIHwgXCJtb3ZlZFwiIHwgXCJ1bmRvbmVcIiB8IFwiZXhwaXJlZFwiO1xuXG4vKiog54++5Zyo5pmC5Yi744KS44KC44Go44Gr44K/44K544Kv44Gu54q25oWL44KS5rG644KB44KLICovXG5leHBvcnQgY29uc3QgZ2V0RXZlbnRTdGF0dXMgPSAoXG4gIGV2ZW50OiBFdmVudCxcbiAgbm93OiBEYXRlLFxuKTogRXZlbnRTdGF0dXMgPT4ge1xuICBpZiAoaXNMaW5rKGV2ZW50KSAmJiBldmVudC5zdGF0dXMgPT09IFwiZG9uZVwiKSByZXR1cm4gZXZlbnQuc3RhdHVzO1xuICBpZiAoaXNMb2dnZWQoZXZlbnQpKSB7XG4gICAgcmV0dXJuIGlzTGluayhldmVudCkgJiYgZXZlbnQuZXhlY3V0ZWRcbiAgICAgIC8vIOODquODs+OCr+OBjOacquWujOS6hueKtuaFi+OBruOCv+OCueOCr+ODquODs+OCr+OBr+OAgeePvuWcqOaZguWIu+S7pemZjeOBq+mWi+Wni+aXpeaZguOBjOOBmuOCieOBleOCjOOBpuOBhOOCi+OBquOCiW1vdmVk44Go44GZ44KLXG4gICAgICA/IGlzQmVmb3JlKGZyb21EYXRlKG5vdyksIGV2ZW50LmV4ZWN1dGVkLnN0YXJ0KSA/IFwibW92ZWRcIiA6IFwiZXhwaXJlZFwiXG4gICAgICA6IFwiZG9uZVwiO1xuICB9XG4gIHJldHVybiBpc0JlZm9yZShnZXRFbmQoZXZlbnQucGxhbiksIGZyb21EYXRlKG5vdykpXG4gICAgLy8g44Oq44Oz44Kv44Gq44GX44K/44K544Kv44Gv44CB5a6f6KGM44GX44Gf44GL44Gp44GG44GL44Gr6Zai44KP44KJ44Ga44CB57WC5LqG5pel5pmC44GM6YGO44GO44Gm44GE44KM44GwZG9uZeOBqOOBmeOCi1xuICAgID8gaXNMaW5rKGV2ZW50KSA/IFwiZXhwaXJlZFwiIDogXCJkb25lXCJcbiAgICA6IFwidW5kb25lXCI7XG59O1xuXG4vKiog54++5Zyo5pmC5Yi744GL44KJRXZlbnTjga7jgoTjgormrovjgZfmmYLplpPjgpLmsYLjgoHjgosgKi9cbmV4cG9ydCBjb25zdCBnZXRSZW1haW5zID0gKGV2ZW50OiBFdmVudCwgbm93OiBEYXRlKTogbnVtYmVyID0+IHtcbiAgY29uc3Qgc3RhdHVzID0gZ2V0RXZlbnRTdGF0dXMoZXZlbnQsIG5vdyk7XG4gIGlmIChzdGF0dXMgPT09IFwiZG9uZVwiIHx8IHN0YXR1cyA9PT0gXCJtb3ZlZFwiKSByZXR1cm4gMDtcbiAgcmV0dXJuIGV2ZW50LnBsYW4uZHVyYXRpb247XG59O1xuXG4vKiogVGFza0xpbmXjgYvjgolFdmVudOOCkueUn+aIkOOBmeOCi1xuICpcbiAqIC0g5LqI5a6a6ZaL5aeL5pel5pmC44Gu44Gq44GEVGFza0xpbmXjga/lpInmj5vlr77osaHlpJZcbiAqIC0gdGFzayBuYW1l44GM44K/44K544Kv44Oq44Oz44Kv44Gu5aC05ZCI44Gn44KC44CBVGFza0xpbmXjgYvjgonlvpfjgZ/kuojlrprplovlp4vml6XmmYLjgpLkvb/jgaPjgaZFdmVudOOCkueUn+aIkOOBmeOCi1xuICpcbiAqIEBwYXJhbSB0YXNrIFRhc2tMaW5lXG4gKiBAcGFyYW0gcHJvamVjdCBwcm9qZWN0IG5hbWUsIOOCv+OCueOCr+ODquODs+OCr+OBruODkeOCueOCkuS9nOOCi+OBqOOBjeOBq+S9v+OBhlxuICogQHJldHVybiBgRXZlbnRgLCDkuojlrprplovlp4vml6XmmYLjgYzjgarjgYRUYXNrTGluZeOBruOBqOOBjeOBr2B1bmRlZmluZWRgXG4gKi9cbmV4cG9ydCBjb25zdCBmcm9tVGFza0xpbmUgPSAoXG4gIHRhc2s6IFRhc2tMaW5lLFxuICBwcm9qZWN0OiBzdHJpbmcsXG4pOiBFdmVudCB8IHVuZGVmaW5lZCA9PiB7XG4gIC8vIOOCv+OCueOCr+ODquODs+OCr+OBoOOBo+OBn+WgtOWQiOOCkuiAg+aFruOBl+OBpuOAgVtd5YiG44KS5aSW44GX44Gm6Kej5p6Q44GZ44KLXG4gIC8vIOino+aekOOBp+OBjeOBquOBi+OBo+OBn+WgtOWQiOOBr1td44KS5aSW44GZ5YmN44Gu44KS5L2/44GG44Gu44Gn5ZWP6aGM44Gq44GEXG4gIGNvbnN0IHJlc3VsdCA9IHBhcnNlKHRhc2sudGl0bGUuc2xpY2UoMSwgLTEpKTtcblxuICAvLyDkuojlrprplovlp4vml6XmmYLjgYzjgYLjgovjgoLjga7jga7jgb/lr77osaHjgajjgZnjgotcbiAgaWYgKCF0YXNrLnBsYW4uc3RhcnQpIHJldHVybjtcblxuICBjb25zdCBldmVudDogUGxhaW5FdmVudCA9IHtcbiAgICBuYW1lOiByZXN1bHQ/Lm9rID8gcmVzdWx0LnZhbHVlLm5hbWUgOiB0YXNrLnRpdGxlLFxuICAgIHBsYW46IHtcbiAgICAgIHN0YXJ0OiBmcm9tRGF0ZSh0YXNrLnBsYW4uc3RhcnQpLFxuICAgICAgZHVyYXRpb246ICh0YXNrLnBsYW4uZHVyYXRpb24gPz8gMCkgLyA2MCxcbiAgICB9LFxuICB9O1xuICAvLyBvcHRpb25hbCBwYXJhbWV0ZXJz44KS5Z+L44KB44Gm44GE44GPXG4gIGlmICh0YXNrLnJlY29yZC5zdGFydCkge1xuICAgIGV2ZW50LnJlY29yZCA9IHtcbiAgICAgIHN0YXJ0OiBmcm9tRGF0ZSh0YXNrLnJlY29yZC5zdGFydCksXG4gICAgfTtcbiAgICBpZiAodGFzay5yZWNvcmQuZW5kKSB7XG4gICAgICBldmVudC5yZWNvcmQuZHVyYXRpb24gPSBkaWZmZXJlbmNlSW5NaW51dGVzKFxuICAgICAgICB0YXNrLnJlY29yZC5lbmQsXG4gICAgICAgIHRhc2sucmVjb3JkLnN0YXJ0LFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFyZXN1bHQ/Lm9rKSByZXR1cm4gZXZlbnQ7XG5cbiAgY29uc3QgZXZlbnRXaXRoTGluazogRXZlbnRXaXRoTGluayA9IHtcbiAgICAuLi5ldmVudCxcbiAgICB0aXRsZTogcmVzdWx0LnZhbHVlLnJhdyxcbiAgICBwcm9qZWN0LFxuICB9O1xuICBpZiAocmVzdWx0LnZhbHVlLmZyZXNobmVzcykge1xuICAgIGV2ZW50V2l0aExpbmsuc3RhdHVzID0gcmVzdWx0Py52YWx1ZS5mcmVzaG5lc3Muc3RhdHVzO1xuICB9XG4gIGlmICghaXNSZW1pbmRlcihyZXN1bHQudmFsdWUpKSB7XG4gICAgZXZlbnRXaXRoTGluay5leGVjdXRlZCA9IHJlc3VsdC52YWx1ZS5leGVjdXRlZDtcbiAgfVxuICByZXR1cm4gZXZlbnRXaXRoTGluaztcbn07XG5cbi8qKiBob3dt44GuRXZlbnTjgYvjgolFdmVudOOCkueUn+aIkOOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGZyb21Ib3dtRXZlbnQgPSAoXG4gIGV2ZW50OiBIb3dtRXZlbnQsXG4gIHByb2plY3Q6IHN0cmluZyxcbik6IEV2ZW50ID0+IHtcbiAgY29uc3QgdGl0bGUgPSBnZXRMaW5rVGl0bGUoZXZlbnQpO1xuXG4gIHJldHVybiB0aXRsZSAhPT0gdW5kZWZpbmVkXG4gICAgPyB7XG4gICAgICBuYW1lOiBldmVudC5uYW1lLFxuICAgICAgcHJvamVjdCxcbiAgICAgIHRpdGxlLFxuICAgICAgZXhlY3V0ZWQ6IGV2ZW50LmV4ZWN1dGVkLFxuICAgICAgcGxhbjogZXZlbnQuZXhlY3V0ZWQsXG4gICAgICBzdGF0dXM6IGV2ZW50LmZyZXNobmVzcz8uc3RhdHVzLFxuICAgIH1cbiAgICA6IHtcbiAgICAgIG5hbWU6IGV2ZW50Lm5hbWUsXG4gICAgICBwbGFuOiBldmVudC5leGVjdXRlZCxcbiAgICB9O1xufTtcbiIsICJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcIi4uLy4uL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gXCIuLi91c2VUYXNrQ3Jhd2xlci50c1wiO1xuaW1wb3J0IHsgcGFyc2VMaW5lcyB9IGZyb20gXCIuLi8uLi90YXNrLnRzXCI7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gXCIuLi8uLi91dGlscy50c1wiO1xuaW1wb3J0IHtcbiAgYWRkRGF5cyxcbiAgZW5kT2ZEYXksXG4gIGlzU2FtZURheSxcbiAgc3RhcnRPZkRheSxcbiAgc3ViRGF5cyxcbn0gZnJvbSBcIi4uLy4uL2RlcHMvZGF0ZS1mbnMudHNcIjtcbmltcG9ydCB7IGlzQmVmb3JlLCB0b0RhdGUgfSBmcm9tIFwiLi4vLi4vaG93bS9sb2NhbERhdGUudHNcIjtcbmltcG9ydCB7IGlzUmVjdXJyZW5jZSwgaXNSZW1pbmRlciwgbWFrZVJlcGVhdCB9IGZyb20gXCIuLi8uLi9ob3dtL3BhcnNlLnRzXCI7XG5pbXBvcnQgeyB0b1RpdGxlIH0gZnJvbSBcIi4uLy4uL2RpYXJ5LnRzXCI7XG5pbXBvcnQgeyB1c2VMaW5lcyB9IGZyb20gXCIuLi91c2VMaW5lcy50c1wiO1xuaW1wb3J0IHsgRXZlbnQsIGZyb21Ib3dtRXZlbnQsIGZyb21UYXNrTGluZSB9IGZyb20gXCIuL2V2ZW50LnRzXCI7XG5pbXBvcnQgeyBzcGxpdCB9IGZyb20gXCIuLi8uLi9ob3dtL1BlcmlvZC50c1wiO1xuXG4vKiog5oyH5a6a44GX44Gf5pel5LuY44Gu5LqI5a6a44KS5Y+W5b6X44GZ44KLXG4gKlxuICog5pel5LuY44KS44G+44Gf44GQ5LqI5a6a44Gv44CB5oyH5a6a44GX44Gf5pel5LuY44Gr44GL44G244KL6ZW344GV44Gr5YmK44Gj44Gm5Y+W5b6X44GZ44KLXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VFdmVudHMgPSAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgZGF0ZTogRGF0ZSxcbiAgdGFza3M6IFRhc2tbXSxcbik6IEV2ZW50W10gPT4ge1xuICAvLyDml6XliIroqJjpjLJzaGVldOOBi+OCieOAgeWJjeaXpeODu+W9k+aXpeODu+e/jOaXpeOBruS6iOWumuOCkuWPluW+l+OBmeOCi1xuICAvLyDml6XjgpLjgb7jgZ/jgZDkuojlrprjgavlr77lv5zjgZnjgovjgZ/jgoHjgIHliY3lvozml6Xjga7kuojlrprjgoLlj5blvpfjgZnjgotcbiAgLy8g5b2T5pel44Gu5LqI5a6a5YCL5pWw5Yik5a6a44KS5b6M44Gn44KE44KL44Gu44Gn44CB5Yil44CF44Gr5LqI5a6a44KS5Y+W44KK5Ye644GX44Gm44GK44GPXG4gIGNvbnN0IGV2ZW50c18gPSBbXG4gICAgdXNlRXZlbnRzXyhwcm9qZWN0LCBzdWJEYXlzKGRhdGUsIDEpLCB0YXNrcyksXG4gICAgdXNlRXZlbnRzXyhwcm9qZWN0LCBkYXRlLCB0YXNrcyksXG4gICAgdXNlRXZlbnRzXyhwcm9qZWN0LCBhZGREYXlzKGRhdGUsIDEpLCB0YXNrcyksXG4gIF07XG4gIGNvbnN0IGV2ZW50cyA9IHVzZU1lbW8oKCkgPT4gZXZlbnRzXy5mbGF0KCksIGV2ZW50c18pO1xuXG4gIC8vIOaXpeS7mOOCkuOBvuOBn+OBkOS6iOWumuOBr+OAgeaMh+WumuOBl+OBn+aXpeS7mOOBq+OBi+OBtuOCi+mVt+OBleOBq+WJiuOBo+OBpuWPluW+l+OBmeOCi1xuICByZXR1cm4gdXNlTWVtbygoKSA9PiB7XG4gICAgLyoqIOOBk+OBruaZguWIu+S7pemZjeOBruS6iOWumuOBoOOBkeihqOekuuOBmeOCiyAqL1xuICAgIGNvbnN0IHNQYXJ0aXRpb24gPSBzdGFydE9mRGF5KGRhdGUpO1xuICAgIC8qKiDjgZPjga7mmYLliLvku6XliY3jga7kuojlrprjgaDjgZHooajnpLrjgZnjgosgKi9cbiAgICBjb25zdCBlUGFydGl0aW9uID0gZW5kT2ZEYXkoZGF0ZSk7XG5cbiAgICAvLyDlvZPml6XlhoXjga7kuojlrprjgaDjgZHliIfjgorlh7rjgZlcbiAgICByZXR1cm4gZXZlbnRzLmZsYXRNYXAoXG4gICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgWywgYmFja3dhcmRdID0gc3BsaXQoZXZlbnQucGxhbiwgc1BhcnRpdGlvbik7XG4gICAgICAgIGlmICghYmFja3dhcmQpIHJldHVybiBbXTtcbiAgICAgICAgY29uc3QgW2ZvcndhcmRdID0gc3BsaXQoYmFja3dhcmQsIGVQYXJ0aXRpb24pO1xuICAgICAgICBpZiAoIWZvcndhcmQpIHJldHVybiBbXTtcbiAgICAgICAgY29uc3QgeyBwbGFuOiBfLCAuLi5yZXN0IH0gPSBldmVudDtcbiAgICAgICAgcmV0dXJuIFt7IHBsYW46IGZvcndhcmQsIC4uLnJlc3QgfV07XG4gICAgICB9LFxuICAgICkuc29ydCgoYSwgYikgPT4gaXNCZWZvcmUoYS5wbGFuLnN0YXJ0LCBiLnBsYW4uc3RhcnQpID8gLTEgOiAwKTtcbiAgfSwgW2V2ZW50cywgZGF0ZV0pO1xufTtcblxuY29uc3QgdXNlRXZlbnRzXyA9IChwcm9qZWN0OiBzdHJpbmcsIGRhdGU6IERhdGUsIHRhc2tzOiBUYXNrW10pID0+IHtcbiAgY29uc3QgbGluZXMgPSB1c2VMaW5lcyhwcm9qZWN0LCB0b1RpdGxlKGRhdGUpKTtcbiAgLyoqIOaXpeWIiuiomOmMsnNoZWV044GL44KJ5Y+W44KK5Ye644GX44GfZXZlbnRzICovXG4gIGNvbnN0IGV2ZW50c0Zyb21MaW5lcyA9IHVzZU1lbW8oKCkgPT4gZ2V0RXZlbnRzRnJvbUxpbmVzKGxpbmVzLCBwcm9qZWN0KSwgW1xuICAgIGxpbmVzLFxuICAgIHByb2plY3QsXG4gIF0pO1xuXG4gIHJldHVybiB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBldmVudHNGcm9tTGluZXMubGVuZ3RoICE9PSAwXG4gICAgICAgID8gZXZlbnRzRnJvbUxpbmVzXG4gICAgICAgIC8v5b2T5pel44Gu5pel5YiK6KiY6Yyyc2hlZXTjgYvjgonkuIDjgaTjgoLlj5blvpfjgafjgY3jgarjgYvjgaPjgZ/loLTlkIjjga/jgIHjgr/jgrnjgq/jg6rjg7Pjgq/jgYvjgonnlJ/miJDjgZnjgotcbiAgICAgICAgOiBnZXRFdmVudHNGcm9tTGlua3MoZGF0ZSwgdGFza3MpLFxuICAgIFtldmVudHNGcm9tTGluZXMsIGRhdGUsIHRhc2tzXSxcbiAgKTtcbn07XG5cbi8qKiDjgr/jgrnjgq/jg6rjg7Pjgq/jgYvjgonjgIFFdmVudHPjgpLnlJ/miJDjgZnjgotcbiAqXG4gKiDkuojlrprplovlp4vml6XmmYLjgYzjgYLjgaPjgabjgIHjgb7jgaDntYLjgo/jgaPjgabjgYTjgarjgYTjgr/jgrnjgq/jgpLlr77osaHjgajjgZnjgovjgIJcbiAqL1xuY29uc3QgZ2V0RXZlbnRzRnJvbUxpbmtzID0gKGRhdGU6IERhdGUsIHRhc2tzOiBUYXNrW10pOiBFdmVudFtdID0+XG4gIHRhc2tzLmZsYXRNYXAoKHRhc2spID0+IHtcbiAgICBpZiAodGFzay5mcmVzaG5lc3M/LnN0YXR1cyA9PT0gXCJkb25lXCIpIHJldHVybiBbXTtcbiAgICBpZiAoaXNSZW1pbmRlcih0YXNrKSkgcmV0dXJuIFtdO1xuICAgIGlmIChpc1JlY3VycmVuY2UodGFzaykpIHtcbiAgICAgIGNvbnN0IGdlbmVyYXRlZCA9IG1ha2VSZXBlYXQodGFzaywgZGF0ZSk7XG4gICAgICByZXR1cm4gZ2VuZXJhdGVkID8gW2Zyb21Ib3dtRXZlbnQoZ2VuZXJhdGVkLCB0YXNrLnByb2plY3QpXSA6IFtdO1xuICAgIH1cbiAgICBjb25zdCBzdGFydCA9IHRvRGF0ZSh0YXNrLmV4ZWN1dGVkLnN0YXJ0KTtcbiAgICByZXR1cm4gaXNTYW1lRGF5KHN0YXJ0LCBkYXRlKSA/IFtmcm9tSG93bUV2ZW50KHRhc2ssIHRhc2sucHJvamVjdCldIDogW107XG4gIH0pO1xuXG4vKiog5pel5YiK6KiY6Yyyc2hlZXTjgYvjgonjgIFFdmVudHPjgpLnlJ/miJDjgZnjgotcbiAqXG4gKiDkuojlrprplovlp4vml6XmmYLjgYzjgYLjgovjgoLjga7jga7jgb/lr77osaHjgajjgZnjgovjgILlrozkuoYv5pyq5a6M5LqG44Gv6ICD5oWu44GX44Gq44GEXG4gKi9cbmNvbnN0IGdldEV2ZW50c0Zyb21MaW5lcyA9IChcbiAgbGluZXM6IHN0cmluZ1tdLFxuICBwcm9qZWN0OiBzdHJpbmcsXG4pOiBFdmVudFtdID0+IHtcbiAgY29uc3QgZXZlbnRzOiBFdmVudFtdID0gW107XG4gIGZvciAoY29uc3QgdGFzayBvZiBwYXJzZUxpbmVzKGxpbmVzKSkge1xuICAgIGlmIChpc1N0cmluZyh0YXNrKSkgY29udGludWU7XG5cbiAgICBjb25zdCBldmVudCA9IGZyb21UYXNrTGluZSh0YXNrLCBwcm9qZWN0KTtcbiAgICBpZiAoIWV2ZW50KSBjb250aW51ZTtcblxuICAgIGV2ZW50cy5wdXNoKGV2ZW50KTtcbiAgfVxuICByZXR1cm4gZXZlbnRzO1xufTtcbiIsICIvKiogQGpzeCBoICovXG5cbmltcG9ydCB7IEZ1bmN0aW9uQ29tcG9uZW50LCBoLCB1c2VNZW1vIH0gZnJvbSBcIi4uLy4uL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgRXZlbnQsIGdldEV2ZW50U3RhdHVzLCBpc0xpbmsgfSBmcm9tIFwiLi4vc2NoZWR1bGVyL2V2ZW50LnRzXCI7XG5pbXBvcnQgeyBTY3JhcGJveExpbmsgfSBmcm9tIFwiLi4vU2NyYXBib3hMaW5rLnRzeFwiO1xuaW1wb3J0IHsgdXNlTWludXRlcyB9IGZyb20gXCIuLi91c2VNaW51dGVzLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBFdmVudEl0ZW06IEZ1bmN0aW9uQ29tcG9uZW50PHsgZXZlbnQ6IEV2ZW50IH0+ID0gKHsgZXZlbnQgfSkgPT4ge1xuICBjb25zdCBzdGFydCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZXZlbnQucGxhbi5zdGFydC5ob3VycyArIGV2ZW50LnBsYW4uc3RhcnQubWludXRlcyAvIDYwLFxuICAgIFtldmVudC5wbGFuLnN0YXJ0XSxcbiAgKTtcbiAgY29uc3Qgc3R5bGUgPSB1c2VNZW1vKFxuICAgICgpID0+IGAtLXN0YXJ0OiAke3N0YXJ0fTsgLS1kdXJhdGlvbjogJHtldmVudC5wbGFuLmR1cmF0aW9ufTtgLFxuICAgIFtzdGFydCwgZXZlbnQucGxhbi5kdXJhdGlvbl0sXG4gICk7XG5cbiAgY29uc3Qgbm93ID0gdXNlTWludXRlcygpO1xuICBjb25zdCB0eXBlID0gdXNlTWVtbygoKSA9PiBnZXRFdmVudFN0YXR1cyhldmVudCwgbm93KSwgW2V2ZW50LCBub3ddKTtcblxuICByZXR1cm4gIWlzTGluayhldmVudClcbiAgICA/IChcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwiZXZlbnRcIlxuICAgICAgICBkYXRhLXN0YXR1cz17dHlwZX1cbiAgICAgICAgdGl0bGU9e2V2ZW50Lm5hbWV9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgID5cbiAgICAgICAge2V2ZW50Lm5hbWV9XG4gICAgICA8L2Rpdj5cbiAgICApXG4gICAgOiAoXG4gICAgICA8U2NyYXBib3hMaW5rXG4gICAgICAgIGNsYXNzTmFtZT1cImV2ZW50XCJcbiAgICAgICAgZGF0YS1zdGF0dXM9e3R5cGV9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgdGl0bGU9e2V2ZW50LnRpdGxlfVxuICAgICAgICBwcm9qZWN0PXtldmVudC5wcm9qZWN0fVxuICAgICAgPlxuICAgICAgICB7ZXZlbnQubmFtZX1cbiAgICAgIDwvU2NyYXBib3hMaW5rPlxuICAgICk7XG59O1xuIiwgIi8qKiBAanN4IGggKi9cbi8qKiBAanN4RnJhZyBGcmFnbWVudCAqL1xuXG5pbXBvcnQgeyBGcmFnbWVudCwgRnVuY3Rpb25Db21wb25lbnQsIGgsIHVzZU1lbW8gfSBmcm9tIFwiLi4vLi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBUYXNrIH0gZnJvbSBcIi4uL3VzZVRhc2tDcmF3bGVyLnRzXCI7XG5pbXBvcnQgeyB1c2VFdmVudHMgfSBmcm9tIFwiLi4vc2NoZWR1bGVyL3VzZUV2ZW50cy50c1wiO1xuaW1wb3J0IHsgaXNTYW1lRGF5IH0gZnJvbSBcIi4uLy4uL2RlcHMvZGF0ZS1mbnMudHNcIjtcbmltcG9ydCB7IHVzZU1pbnV0ZXMgfSBmcm9tIFwiLi4vdXNlTWludXRlcy50c1wiO1xuaW1wb3J0IHsgZ2V0SG91cnMgfSBmcm9tIFwiLi4vLi4vZGVwcy9kYXRlLWZucy50c1wiO1xuaW1wb3J0IHsgZ2V0TWludXRlcyB9IGZyb20gXCIuLi8uLi9kZXBzL2RhdGUtZm5zLnRzXCI7XG5pbXBvcnQgeyBFdmVudEl0ZW0gfSBmcm9tIFwiLi9FdmVudEl0ZW0udHN4XCI7XG5pbXBvcnQgeyBpc0xpbmsgfSBmcm9tIFwiLi4vc2NoZWR1bGVyL2V2ZW50LnRzXCI7XG5pbXBvcnQgeyBDb3B5IH0gZnJvbSBcIi4uL0NvcHkudHN4XCI7XG5cbmV4cG9ydCBjb25zdCBUaW1lTGluZTogRnVuY3Rpb25Db21wb25lbnQ8XG4gIHsgcHJvamVjdDogc3RyaW5nOyBkYXRlOiBEYXRlOyB0YXNrczogVGFza1tdIH1cbj4gPSAoeyBwcm9qZWN0LCBkYXRlLCB0YXNrcyB9KSA9PiB7XG4gIGNvbnN0IGV2ZW50cyA9IHVzZUV2ZW50cyhwcm9qZWN0LCBkYXRlLCB0YXNrcyk7XG4gIGNvbnN0IGxpbmtMaXN0ID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgZXZlbnRzLmZsYXRNYXAoKGV2ZW50KSA9PiBpc0xpbmsoZXZlbnQpID8gW2BbJHtldmVudC50aXRsZX1dYF0gOiBbXSkuam9pbihcbiAgICAgICAgXCJcXG5cIixcbiAgICAgICksXG4gICAgW2V2ZW50c10sXG4gICk7XG4gIGNvbnN0IG5vdyA9IHVzZU1pbnV0ZXMoKTtcbiAgY29uc3QgaW5kaWNhdG9yID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgaXNTYW1lRGF5KG5vdywgZGF0ZSlcbiAgICAgICAgPyAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5kaWNhdG9yXCJcbiAgICAgICAgICAgIHN0eWxlPXtgLS1zdGFydDogJHtnZXRIb3Vycyhub3cpICsgZ2V0TWludXRlcyhub3cpIC8gNjB9YH1cbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICAgIDogPD48Lz4sXG4gICAgW25vdywgZGF0ZV0sXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInRpbWVsaW5lXCIgcm9sZT1cImdyaWRjZWxsXCI+XG4gICAgICB7ZXZlbnRzLm1hcCgoZXZlbnQpID0+IDxFdmVudEl0ZW0ga2V5PXtldmVudC5uYW1lfSBldmVudD17ZXZlbnR9IC8+KX1cbiAgICAgIHtpbmRpY2F0b3J9XG4gICAgICA8Q29weSB0ZXh0PXtsaW5rTGlzdH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuXG5pbXBvcnQgeyBGdW5jdGlvbkNvbXBvbmVudCwgaCB9IGZyb20gXCIuLi8uLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IFRhc2sgfSBmcm9tIFwiLi4vdXNlVGFza0NyYXdsZXIudHNcIjtcbmltcG9ydCB7IGdldERhdGUgfSBmcm9tIFwiLi4vLi4vZGVwcy9kYXRlLWZucy50c1wiO1xuaW1wb3J0IHsgVGltZUxpbmUgfSBmcm9tIFwiLi9UaW1lTGluZS50c3hcIjtcbmltcG9ydCB7IHplcm8gfSBmcm9tIFwiLi4vLi4vemVyby50c1wiO1xuaW1wb3J0IHsgdG9LZXkgfSBmcm9tIFwiLi4va2V5LnRzXCI7XG5cbi8qKiDnibnlrprjga7ml6Xku5jjga7jgr/jgrnjgq/jgpLkuIDopqfjgZnjgotDb21wb25lbnRcbiAqXG4gKiBAcGFyYW0gZGF0ZSDooajnpLrjgZnjgovml6Xku5hcbiAqIEBwYXJhbSB0YXNrcyDjgZ3jga7ml6Xjga7jgr/jgrnjgq9cbiAqIEBwYXJhbSBwcm9qZWN0IOOBneOBruaXpeOBruOCv+OCueOCr+OBjOWxnuOBmeOCi3Byb2plY3RcbiAqL1xuZXhwb3J0IGNvbnN0IFRpbWVHcmlkOiBGdW5jdGlvbkNvbXBvbmVudDxcbiAgeyBkYXRlTGlzdDogRGF0ZVtdOyB0YXNrczogVGFza1tdOyBwcm9qZWN0OiBzdHJpbmc7IGhhc0NvbHVtbj86IGJvb2xlYW4gfVxuPiA9IChcbiAgeyBkYXRlTGlzdCwgdGFza3MsIHByb2plY3QsIGhhc0NvbHVtbiB9LFxuKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwidGltZWxpbmUtd3JhcFwiIHJvbGU9XCJncmlkXCI+XG4gICAgeyhoYXNDb2x1bW4gPz8gdHJ1ZSkgJiYgKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2x1bW4taGVhZGVyXCIgcm9sZT1cInJvd1wiPlxuICAgICAgICB7ZGF0ZUxpc3QubWFwKChkYXRlKSA9PiAoXG4gICAgICAgICAgPGRpdiBrZXk9e3RvS2V5KGRhdGUpfSBjbGFzc05hbWU9XCJjZWxsXCIgcm9sZT1cImNvbHVtbmhlYWRlclwiPlxuICAgICAgICAgICAgPGgyPntnZXREYXRlKGRhdGUpfTwvaDI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkpfVxuICAgICAgPC9kaXY+XG4gICAgKX1cblxuICAgIDxkaXYgY2xhc3NOYW1lPVwid2Vlay1jb250YWluZXJcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIndlZWtcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyc1wiPlxuICAgICAgICAgIHtbLi4uQXJyYXkoMjQpLmtleXMoKV0ubWFwKChpKSA9PiAoXG4gICAgICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPVwiYm9yZGVyXCIgZGF0YS10aW1lPXtgJHt6ZXJvKGkpfTowMGB9IC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7ZGF0ZUxpc3QubWFwKFxuICAgICAgICAgIChkYXRlKSA9PiAoXG4gICAgICAgICAgICA8VGltZUxpbmVcbiAgICAgICAgICAgICAga2V5PXt0b0tleShkYXRlKX1cbiAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgZGF0ZT17ZGF0ZX1cbiAgICAgICAgICAgICAgdGFza3M9e3Rhc2tzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApLFxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuKTtcbiIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tIFwiLi4vLi4vZGVwcy9wcmVhY3QudHN4XCI7XG5cbmV4cG9ydCBjb25zdCB1c2VOYXZpZ2F0aW9uID0gPFBhZ2VObywgVCA9IFBhZ2VObz4oXG4gIGRlZmF1bHRQYWdlTm86IFBhZ2VObyxcbiAgbmV4dEZuOiAocGFnZU5vOiBQYWdlTm8pID0+IFBhZ2VObyxcbiAgcHJldkZuOiAocGFnZU5vOiBQYWdlTm8pID0+IFBhZ2VObyxcbikgPT4ge1xuICAvKiog54++5Zyo6KGo56S644GZ44KL6YCx55Wq5Y+344KS5qC857SN44GZ44KLICovXG4gIGNvbnN0IFtwYWdlTm8sIHNldFBhZ2VOb10gPSB1c2VTdGF0ZTxQYWdlTm8+KGRlZmF1bHRQYWdlTm8pO1xuXG4gIGNvbnN0IG5leHQgPSB1c2VDYWxsYmFjaygoKSA9PiBzZXRQYWdlTm8obmV4dEZuKSwgW25leHRGbl0pO1xuICBjb25zdCBwcmV2ID0gdXNlQ2FsbGJhY2soKCkgPT4gc2V0UGFnZU5vKHByZXZGbiksIFtuZXh0Rm5dKTtcblxuICBjb25zdCBqdW1wID0gdXNlQ2FsbGJhY2soKHBhZ2VObzogUGFnZU5vKSA9PiBzZXRQYWdlTm8ocGFnZU5vKSwgW10pO1xuICByZXR1cm4geyBwYWdlTm8sIG5leHQsIHByZXYsIGp1bXAgfTtcbn07XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwiLi4vZGVwcy9wcmVhY3QudHN4XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlT3BlblJlc3VsdCB7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgb3BlbjogVm9pZEZ1bmN0aW9uO1xuICBjbG9zZTogVm9pZEZ1bmN0aW9uO1xuICB0b2dnbGU6IFZvaWRGdW5jdGlvbjtcbiAgb25PcGVuOiAobGlzdGVuZXI6ICgpID0+IHZvaWQpID0+ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCB1c2VPcGVuID0gKGluaXRpYWxTdGF0ZTogYm9vbGVhbik6IFVzZU9wZW5SZXN1bHQgPT4ge1xuICBjb25zdCBsaXN0ZW5lcnMgPSB1c2VSZWY8U2V0PCgpID0+IHZvaWQ+PihuZXcgU2V0KCkpO1xuICBjb25zdCBbaXNPcGVuLCBzZXRPcGVuZF0gPSB1c2VTdGF0ZShpbml0aWFsU3RhdGUpO1xuXG4gIGNvbnN0IGVtaXRDaGFuZ2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMuY3VycmVudCkge1xuICAgICAgbGlzdGVuZXIoKTtcbiAgICB9XG4gIH0sIFtdKTtcbiAgY29uc3Qgb3BlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRPcGVuZCh0cnVlKTtcbiAgICBlbWl0Q2hhbmdlKCk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBjbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHNldE9wZW5kKGZhbHNlKSwgW10pO1xuICBjb25zdCB0b2dnbGUgPSB1c2VDYWxsYmFjaygoKSA9PlxuICAgIHNldE9wZW5kKChzdGF0ZSkgPT4ge1xuICAgICAgaWYgKCFzdGF0ZSkgZW1pdENoYW5nZSgpO1xuICAgICAgcmV0dXJuICFzdGF0ZTtcbiAgICB9KSwgW10pO1xuXG4gIGNvbnN0IG9uT3BlbiA9IHVzZUNhbGxiYWNrKChsaXN0ZW5lcjogKCkgPT4gdm9pZCkgPT4ge1xuICAgIGxpc3RlbmVycy5jdXJyZW50LmFkZChsaXN0ZW5lcik7XG4gICAgcmV0dXJuICgpID0+IGxpc3RlbmVycy5jdXJyZW50LmRlbGV0ZShsaXN0ZW5lcik7XG4gIH0sIFtdKTtcblxuICByZXR1cm4geyBpc09wZW4sIG9wZW4sIGNsb3NlLCB0b2dnbGUsIG9uT3BlbiB9O1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG4vKiogQGpzeCBoICovXG4vKiogQGpzeEZyYWcgRnJhZ21lbnQgKi9cblxuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIEZ1bmN0aW9uQ29tcG9uZW50LFxuICBoLFxuICBSZWZDYWxsYmFjayxcbiAgcmVuZGVyLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlTWVtbyxcbn0gZnJvbSBcIi4uLy4uL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgdXNlVGFza0NyYXdsZXIgfSBmcm9tIFwiLi4vdXNlVGFza0NyYXdsZXIudHNcIjtcbmltcG9ydCB7IHVzZURpYWxvZyB9IGZyb20gXCIuLi91c2VEaWFsb2cudHN4XCI7XG5pbXBvcnQgeyBDU1MgfSBmcm9tIFwiLi4vdmlld2VyLm1pbi5jc3MudHNcIjtcbmltcG9ydCB7IGFkZERheXMsIGFkZFdlZWtzLCBzdWJEYXlzLCBzdWJXZWVrcyB9IGZyb20gXCIuLi8uLi9kZXBzL2RhdGUtZm5zLnRzXCI7XG5pbXBvcnQgeyB0b0tleSwgdG9TdGFydE9mV2VlaywgdG9XZWVrS2V5LCBXZWVrS2V5IH0gZnJvbSBcIi4uL2tleS50c1wiO1xuaW1wb3J0IHsgTG9hZEJ1dHRvbiB9IGZyb20gXCIuLi9Mb2FkQnV0dG9uLnRzeFwiO1xuaW1wb3J0IHsgdXNlVXNlclNjcmlwdEV2ZW50IH0gZnJvbSBcIi4uL3VzZVVzZXJTY3JpcHRFdmVudC50c1wiO1xuaW1wb3J0IHsgVGltZUdyaWQgfSBmcm9tIFwiLi9UaW1lR3JpZC50c3hcIjtcbmltcG9ydCB7IHVzZU5hdmlnYXRpb24gfSBmcm9tIFwiLi4vc2NoZWR1bGVyL3VzZU5hdmlnYXRpb24udHNcIjtcbmltcG9ydCB7IHVzZU9wZW4gfSBmcm9tIFwiLi4vdXNlT3Blbi50c1wiO1xuaW1wb3J0IHsgdXNlRXhwb3J0cyB9IGZyb20gXCIuLi91c2VFeHBvcnRzLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRDb250cm9sbGVyIHtcbiAgLyoqIGNhbGVuZGFy44KS6ZaL44GPICovXG4gIG9wZW46ICgpID0+IHZvaWQ7XG4gIC8qKiBjYWxlbmRhcuOCkumWieOBmOOCiyAqL1xuICBjbG9zZTogKCkgPT4gdm9pZDtcblxuICBpc09wZW46IGJvb2xlYW47XG59XG5leHBvcnQgdHlwZSBJbnZhbGlkQ29udHJvbGxlciA9IFJlY29yZDxrZXlvZiBWYWxpZENvbnRyb2xsZXIsIHVuZGVmaW5lZD47XG4vKiogY2FsZW5lZGFy44GuY29udHJvbGxlclxuICpcbiAqIG1ldGhvZHPjga97QGxpbmsgVmFsaWRDb250cm9sbGVyfeOCkuWPgueFp1xuICpcbiAqIGNhbGVuZGFy44GMdW1vdW5044GV44KM44Gf5b6M44Gve0BsaW5rIEludmFsaWRDb250cm9sbGVyfSjlhajjgabjga5tZXRob2Rz44GMYHVuZGVmaW5lZGAp44Gr44Gq44KLXG4gKi9cbmV4cG9ydCB0eXBlIENvbnRyb2xsZXIgPSBWYWxpZENvbnRyb2xsZXIgfCBJbnZhbGlkQ29udHJvbGxlcjtcblxuLyoqIOmAseWNmOS9jeOBruOCq+ODrOODs+ODgOODvOOCkui1t+WLleOBmeOCi1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0cyDjgr/jgrnjgq/jga7lj5blvpflhYhwcm9qZWN044Gu44Oq44K544OIXG4gKiBAcmV0dXJuIHZpZXdlcuOBrmNvbnRyb2xsZXJcbiAqL1xuZXhwb3J0IGNvbnN0IHNldHVwID0gKFxuICBwcm9qZWN0czogc3RyaW5nW10sXG4pOiBQcm9taXNlPENvbnRyb2xsZXI+ID0+IHtcbiAgY29uc3QgYXBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgYXBwLmRhdGFzZXQudXNlcnNjcmlwdE5hbWUgPSBcInRha2tlci1zY2hlZHVsZXIvd2Vla2x5LXNjaGVkdWxlclwiO1xuICBjb25zdCBzaGFkb3dSb290ID0gYXBwLmF0dGFjaFNoYWRvdyh7IG1vZGU6IFwib3BlblwiIH0pO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZChhcHApO1xuICByZXR1cm4gbmV3IFByb21pc2UoXG4gICAgKHJlc29sdmUpID0+XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxBcHBcbiAgICAgICAgICBnZXRDb250cm9sbGVyPXtyZXNvbHZlfVxuICAgICAgICAgIHByb2plY3RzPXtwcm9qZWN0c31cbiAgICAgICAgICBtYWluUHJvamVjdD17cHJvamVjdHNbMF19XG4gICAgICAgIC8+LFxuICAgICAgICBzaGFkb3dSb290LFxuICAgICAgKSxcbiAgKTtcbn07XG5cbi8qKiDlvZPml6Xjga50aW1lbGluZeOCkuW3pumaheOBq+ihqOekuuOBmeOCi1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0cyDjgr/jgrnjgq/jga7lj5blvpflhYhwcm9qZWN044Gu44Oq44K544OIXG4gKiBAcmV0dXJuIHZpZXdlcuOBrmNvbnRyb2xsZXJcbiAqL1xuZXhwb3J0IGNvbnN0IHNldHVwV2VkZ2V0ID0gKFxuICBwcm9qZWN0czogc3RyaW5nW10sXG4gIG9wZW46IGJvb2xlYW4sXG4pOiBQcm9taXNlPENvbnRyb2xsZXI+ID0+IHtcbiAgY29uc3QgYXBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgYXBwLmRhdGFzZXQudXNlcnNjcmlwdE5hbWUgPSBcInRha2tlci1zY2hlZHVsZXIvdGltZWxpbmUtd2VkZ2V0XCI7XG4gIGNvbnN0IHNoYWRvd1Jvb3QgPSBhcHAuYXR0YWNoU2hhZG93KHsgbW9kZTogXCJvcGVuXCIgfSk7XG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kKGFwcCk7XG4gIHJldHVybiBuZXcgUHJvbWlzZShcbiAgICAocmVzb2x2ZSkgPT5cbiAgICAgIHJlbmRlcihcbiAgICAgICAgPFdlZGdldFxuICAgICAgICAgIGdldENvbnRyb2xsZXI9e3Jlc29sdmV9XG4gICAgICAgICAgcHJvamVjdHM9e3Byb2plY3RzfVxuICAgICAgICAgIG1haW5Qcm9qZWN0PXtwcm9qZWN0c1swXX1cbiAgICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICAvPixcbiAgICAgICAgc2hhZG93Um9vdCxcbiAgICAgICksXG4gICk7XG59O1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICBnZXRDb250cm9sbGVyOiAoY29udHJvbGxlcjogQ29udHJvbGxlcikgPT4gdm9pZDtcbiAgcHJvamVjdHM6IHN0cmluZ1tdO1xuXG4gIC8qKiDml6XliIroqJjpjLJzaGVldOOBjOe9ruOBhOOBpuOBguOCi3Byb2plY3QgKi9cbiAgbWFpblByb2plY3Q6IHN0cmluZztcbn1cblxuLyoqIHtAbGluayBBcHB944KSMeWbnuS7peS4iumWi+OBhOOBn+OBi+OBqeOBhuOBi+OCkuS/neaMgeOBmeOCi+ODleODqeOCsCAqL1xubGV0IHNjcm9sbGVkVG9JbmRpY2F0b3JJbkFwcCA9IGZhbHNlO1xuY29uc3QgQXBwOiBGdW5jdGlvbkNvbXBvbmVudDxQcm9wcz4gPSAoXG4gIHsgZ2V0Q29udHJvbGxlciwgcHJvamVjdHMsIG1haW5Qcm9qZWN0IH0sXG4pID0+IHtcbiAgY29uc3QgeyB0YXNrcywgbG9hZCwgbG9hZGluZyB9ID0gdXNlVGFza0NyYXdsZXIocHJvamVjdHMpO1xuICBjb25zdCB7IHBhZ2VObywgbmV4dCwgcHJldiwganVtcCB9ID0gdXNlTmF2aWdhdGlvbihcbiAgICB0b1dlZWtLZXkobmV3IERhdGUoKSksXG4gICAgbmV4dFdlZWtLZXksXG4gICAgcHJldldlZWtLZXksXG4gICk7XG5cbiAgLyoqIOihqOekuuWvvuixoeOBruaXpeS7mFxuICAgKlxuICAgKiDmjIflrprjgZfjgZ/pgLHjga7ml6Xmm5zml6XjgYvjgonlnJ/mm5zml6Xjgb7jgafjga7ml6Xku5jjgpLmoLzntI3jgZnjgotcbiAgICovXG4gIGNvbnN0IGRhdGVMaXN0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3Qgc3RhcnQgPSB0b1N0YXJ0T2ZXZWVrKHBhZ2VObyk7XG4gICAgcmV0dXJuIFswLCAxLCAyLCAzLCA0LCA1LCA2XS5tYXAoKGkpID0+IGFkZERheXMoc3RhcnQsIGkpKTtcbiAgfSwgW3BhZ2VOb10pO1xuXG4gIC8vIFVJ44Gu6ZaL6ZaJXG4gIGNvbnN0IHsgb3BlbiwgY2xvc2UsIERpYWxvZywgaXNPcGVuIH0gPSB1c2VEaWFsb2coKTtcbiAgc2Nyb2xsZWRUb0luZGljYXRvckluQXBwIHx8PSBpc09wZW47XG4gIHVzZUV4cG9ydHMoZ2V0Q29udHJvbGxlciwgeyBvcGVuLCBjbG9zZSwgaXNPcGVuIH0pO1xuXG4gIC8vIOWQjOOBmOOCv+ODluOBp+WIpeOBruODmuODvOOCuOOBq+mBt+enu+OBl+OBn+OBqOOBjeOBr21vZGFs44KS6ZaJ44GY44KLXG4gIHVzZVVzZXJTY3JpcHRFdmVudChcInBhZ2U6Y2hhbmdlZFwiLCBjbG9zZSk7XG5cbiAgY29uc3QgZ29Ub2RheSA9IHVzZUNhbGxiYWNrKCgpID0+IGp1bXAodG9XZWVrS2V5KG5ldyBEYXRlKCkpKSwgW2p1bXBdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8c3R5bGU+e0NTU308L3N0eWxlPlxuICAgICAgPERpYWxvZz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250cm9sbGVyXCI+XG4gICAgICAgICAgPHNwYW4+e3BhZ2VOb308L3NwYW4+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJuYXZpIGxlZnRcIiBvbkNsaWNrPXtwcmV2fT57XCJcXHVlMDJjXCJ9PC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJuYXZpIHJpZ2h0XCIgb25DbGljaz17bmV4dH0+e1wiXFx1ZTAyZFwifTwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwidG9kYXlcIiBvbkNsaWNrPXtnb1RvZGF5fT57XCJcXHVmNzgzXCJ9PC9idXR0b24+XG4gICAgICAgICAgPExvYWRCdXR0b24gbG9hZGluZz17bG9hZGluZ30gb25DbGljaz17bG9hZH0gLz5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImNsb3NlXCIgb25DbGljaz17Y2xvc2V9PntcIlxcdWYwMGRcIn08L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAge3Njcm9sbGVkVG9JbmRpY2F0b3JJbkFwcCAmJiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgcmVmPXtzY3JvbGxUb0luZGljYXRvcn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInJlc3VsdCBzY2hlZHVsZXJcIlxuICAgICAgICAgICAgZGF0YS1wYWdlLW5vPXtwYWdlTm99XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRpbWVHcmlkIGRhdGVMaXN0PXtkYXRlTGlzdH0gdGFza3M9e3Rhc2tzfSBwcm9qZWN0PXttYWluUHJvamVjdH0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvRGlhbG9nPlxuICAgIDwvPlxuICApO1xufTtcblxuLyoqIHtAbGluayBXZWRnZXR944KSMeWbnuS7peS4iumWi+OBhOOBn+OBi+OBqeOBhuOBi+OCkuS/neaMgeOBmeOCi+ODleODqeOCsCAqL1xubGV0IHNjcm9sbGVkVG9JbmRpY2F0b3JJbldlZGdldCA9IGZhbHNlO1xuY29uc3QgV2VkZ2V0OiBGdW5jdGlvbkNvbXBvbmVudDxQcm9wcyAmIHsgb3BlbjogYm9vbGVhbiB9PiA9IChcbiAgeyBwcm9qZWN0cywgbWFpblByb2plY3QsIGdldENvbnRyb2xsZXIsIG9wZW46IG9wZW5fIH0sXG4pID0+IHtcbiAgY29uc3QgeyB0YXNrcywgbG9hZCwgbG9hZGluZyB9ID0gdXNlVGFza0NyYXdsZXIocHJvamVjdHMpO1xuXG4gIGNvbnN0IHsgcGFnZU5vLCBuZXh0LCBwcmV2LCBqdW1wIH0gPSB1c2VOYXZpZ2F0aW9uKFxuICAgIG5ldyBEYXRlKCksXG4gICAgbmV4dERhdGUsXG4gICAgcHJldkRhdGUsXG4gICk7XG4gIGNvbnN0IGRhdGVzID0gdXNlTWVtbygoKSA9PiBbcGFnZU5vXSwgW3BhZ2VOb10pO1xuXG4gIGNvbnN0IGdvVG9kYXkgPSB1c2VDYWxsYmFjaygoKSA9PiBqdW1wKG5ldyBEYXRlKCkpLCBbanVtcF0pO1xuXG4gIC8vIFVJ44Gu6ZaL6ZaJXG4gIGNvbnN0IHsgaXNPcGVuLCBvcGVuLCBjbG9zZSB9ID0gdXNlT3BlbihvcGVuXyk7XG4gIHNjcm9sbGVkVG9JbmRpY2F0b3JJbldlZGdldCB8fD0gaXNPcGVuO1xuXG4gIHVzZUV4cG9ydHMoZ2V0Q29udHJvbGxlciwgeyBvcGVuLCBjbG9zZSwgaXNPcGVuIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxzdHlsZT57Q1NTfTwvc3R5bGU+XG4gICAgICB7Lyog5LiA5bqmcmVuZGVyaW5n44GV44KM44Gf5b6M44Gv44CBdW5tb3VudOOBleOCjOOCi+OBvuOBp0RPTeOCkuihqOekuuOBl+e2muOBkeOCiyAqL31cbiAgICAgIHtzY3JvbGxlZFRvSW5kaWNhdG9ySW5XZWRnZXQgJiYgKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtgd2VkZ2V0JHtpc09wZW4gPyBcIiBvcGVuXCIgOiBcIlwifWB9XG4gICAgICAgICAgcmVmPXtzY3JvbGxUb0luZGljYXRvcn1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udHJvbGxlclwiPlxuICAgICAgICAgICAgPHNwYW4+e3RvS2V5KHBhZ2VObyl9PC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJuYXZpIGxlZnRcIiBvbkNsaWNrPXtwcmV2fT57XCJcXHVlMDJjXCJ9PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cIm5hdmkgcmlnaHRcIiBvbkNsaWNrPXtuZXh0fT5cbiAgICAgICAgICAgICAge1wiXFx1ZTAyZFwifVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInRvZGF5XCIgb25DbGljaz17Z29Ub2RheX0+e1wiXFx1Zjc4M1wifTwvYnV0dG9uPlxuICAgICAgICAgICAgPExvYWRCdXR0b24gbG9hZGluZz17bG9hZGluZ30gb25DbGljaz17bG9hZH0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8VGltZUdyaWRcbiAgICAgICAgICAgIGRhdGVMaXN0PXtkYXRlc31cbiAgICAgICAgICAgIHRhc2tzPXt0YXNrc31cbiAgICAgICAgICAgIHByb2plY3Q9e21haW5Qcm9qZWN0fVxuICAgICAgICAgICAgaGFzQ29sdW1uPXtmYWxzZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5jb25zdCBuZXh0V2Vla0tleSA9IChwYWdlTm86IFdlZWtLZXkpID0+XG4gIHRvV2Vla0tleShhZGRXZWVrcyh0b1N0YXJ0T2ZXZWVrKHBhZ2VObyksIDEpKTtcbmNvbnN0IHByZXZXZWVrS2V5ID0gKHBhZ2VObzogV2Vla0tleSkgPT5cbiAgdG9XZWVrS2V5KHN1YldlZWtzKHRvU3RhcnRPZldlZWsocGFnZU5vKSwgMSkpO1xuXG5jb25zdCBuZXh0RGF0ZSA9IChkYXRlOiBEYXRlKSA9PiBhZGREYXlzKGRhdGUsIDEpO1xuY29uc3QgcHJldkRhdGUgPSAoZGF0ZTogRGF0ZSkgPT4gc3ViRGF5cyhkYXRlLCAxKTtcblxuLyoqIOWIneWbnnJlbmRlcmluZ+OBruOBv+OAgWAuaW5kaWNhdG9yYOOCkuS4reWkruOBq+OCueOCr+ODreODvOODq+OBmeOCiyAqL1xuY29uc3Qgc2Nyb2xsVG9JbmRpY2F0b3I6IFJlZkNhbGxiYWNrPEhUTUxEaXZFbGVtZW50PiA9IChhbmNlc3RlcikgPT4ge1xuICBjb25zdCBlbCA9IGFuY2VzdGVyPy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPy4oXCJpbmRpY2F0b3JcIik/LlswXTtcbiAgaWYgKCFlbCkgcmV0dXJuO1xuICBjb25zdCBzY3JvbGxZID0gZ2xvYmFsVGhpcy5zY3JvbGxZO1xuICBlbC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiBcImNlbnRlclwiIH0pO1xuICBnbG9iYWxUaGlzLnNjcm9sbCgwLCBzY3JvbGxZKTtcbn07XG4iLCAiaW1wb3J0IHsgc3luYyB9IGZyb20gXCIuLi9zY3JhcGJveC13YXRjaGxpc3Qtc3luYy9zY3JpcHQudHNcIjtcblxuc3luYyh7IHByb2plY3Q6IFwidGFra2VyLWRpc3RcIiB9KTtcblxuaW1wb3J0IFwiLi4vT3Blbl9HeWF6b19wYWdlX21lbnUvc2NyaXB0LmpzXCI7XG5cbmltcG9ydCB7IHNldHVwIGFzIHNldHVwU2VhcmNoIH0gZnJvbSBcIi4uL3Rha2tlcjk5JTJGc2NyYXBib3gtaW5jcmVtZW50YWwtZnVsbHRleHQtc2VhcmNoL21vZC50c3hcIjtcblxuc2V0dXBTZWFyY2goKS50aGVuKChvcHMpID0+IHtcbiAgc2NyYXBib3guUGFnZU1lbnUuYWRkSXRlbSh7XG4gICAgdGl0bGU6IFwiRnVsbHRleHQgU2VhcmNoXCIsXG4gICAgb25DbGljazogKCkgPT4ge1xuICAgICAgb3BzLnRvZ2dsZSgpO1xuICAgIH0sXG4gIH0pO1xufSk7XG5cbmltcG9ydCB7IHNjcmFwQmluZGluZ3MgfSBmcm9tIFwiLi9iaW5kaW5ncy50c1wiO1xuZXhwb3J0IHsgc2NyYXBCaW5kaW5ncyB9O1xuaW1wb3J0IFwiLi9zY3JhcEJ1YmJsZS50c1wiO1xuaW1wb3J0IHtcbiAgc2V0dXAgYXMgc2V0dXBKdXB5dGVyXG59IGZyb20gXCIuLi9AdGFra2VyJTJGU2NyYXBKdXB5dGVyL21vZC50c1wiO1xuaW1wb3J0IHsgZmluZExhdGVzdENhY2hlLCBzYXZlQXBpQ2FjaGUgfSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvZG9tLnRzXCI7XG5cbi8vIHYwLjIxLjVcbmNvbnN0IFdBU01fVVJMID0gXCJodHRwczovL3NjcmFwYm94LmlvL2ZpbGVzLzY2NmFjOTc3MjY0ZjdkMDAxY2U5ZDEyNS53YXNtXCI7XG5jb25zdCBXT1JLRVJfVVJMID0gXCIvYXBpL2NvZGUvdGFra2VyLWRpc3QvZm9yLWFueS1wcm9qZWN0LW1pbi9lc2J1aWxkLXdvcmtlci5qc1wiO1xuXG4oYXN5bmMgKCkgPT4ge1xuICBjb25zdCByZXEgPSBuZXcgUmVxdWVzdChXQVNNX1VSTCk7XG4gIGxldCByZXMgPSBhd2FpdCBmaW5kTGF0ZXN0Q2FjaGUocmVxKTtcbiAgaWYgKCFyZXMpIHtcbiAgICByZXMgPSBhd2FpdCBmZXRjaChyZXEpO1xuICAgIGF3YWl0IHNhdmVBcGlDYWNoZShyZXEsIHJlcyk7XG4gIH1cbiAgYXdhaXQgc2V0dXBKdXB5dGVyKFxuICAgIGF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGVTdHJlYW1pbmcocmVzKSxcbiAgICBXT1JLRVJfVVJMLFxuICApO1xufSkoKTtcblxuaW1wb3J0IHsgc2V0dXAgYXMgc2V0dXBTZWxlY3RTdWdnZXN0aW9uIH0gZnJvbSBcIi4uL+mBuOaKnuevhOWbsuOBq+S8vOOBpuOBhOOCi+ODquODs+OCr+OCkuWFpeWKm+ijnOWujOOBmeOCi1VzZXJTY3JpcHQvbW9kLnRzeFwiO1xuaW1wb3J0IHsgYWRkVGV4dElucHV0RXZlbnRMaXN0ZW5lciB9IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcbmltcG9ydCB7IFNjcmFwYm94IH0gZnJvbSBcIi4uL3NjcmFwYm94LWpwJTJGdHlwZXMvdXNlcnNjcmlwdC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbihhc3luYyAoKSA9PiB7XG5cbiBjb25zdCBwcm9qZWN0cyA9IFtcbiAgc2NyYXBib3guUHJvamVjdC5uYW1lLFxuICBcInRha2tlclwiLCBcInRha2tlci1tZW1leFwiLCBcInRha2tlci1ib29rc1wiLCBcInRha2tlci1wcml2YXRlXCIsXG4gIFwidmlsbGFnZXB1bXBcIiwgXCJodWJcIiwgXCJhcnBsYVwiLFxuICBcInVubmFtZWRjYW1wXCIsIFwidW5uYW1lZC1wcm9qZWN0XCIsXG4gIFwibmlzaGlvXCIsIFwiZW5jaGlcIiwgXCJyYXNoaXRhbWVtb1wiLCBcIm1vdG9zb1wiLFxuICBcInNob2thaVwiLCBcIm1hc3VpXCIsIFwicmFrdXNhaVwiLCBcInl1aXNla2lcIiwgXCJha2lyb29tXCIsXG4gIFwiYzRqXCIsIFwibWl5YW1vbnpcIiwgXCJtcnNla3V0LXBcIiwgXCJtYXN1aWxhYlwiLFxuICBcImtpZGFhYW0tOTIwMjIyODRcIiwgXCJud3RnY2tcIiwgXCJqdW5lYm9rdVwiLFxuICBcIm1hcnNobWFsbG93LXJtXCIsIFwic3VzaGl0ZWN0dXJlXCIsIFwic25vMndtYW5cIiwgXCJpbnRlbHRhbmtcIixcbiAgXCJpc3NhYy0zNzc2NTY3OVwiLCBcImJsdTNtb1wiLCBcInlvc2lkZXJcIiwgXCJNaWppbmtvXCIsIFwiTWlqaW5rby1vdGhlclwiLFxuICBcInNjcmFwYm94LWRyaW5rdXBcIiwgXCJub3RhLXRlY2hjb25mXCIsXG4gIFwiY3VzdG9taXplXCIsIFwic2NyYXBib3hsYWJcIiwgXCJzY3Jhc29ib3hcIiwgXCJwcm9ncmFtbWluZy1ub3Rlc1wiLFxuICBcInR1cy1hbHBpbmVcIiwgXCJ0dXMtYWxwaW5lLXByaXZhdGVcIixcbiAgXCJndWlsYW5kXCIsXG5dO1xuXG5jb25zdCBvcHMgPSBhd2FpdCBzZXR1cFNlbGVjdFN1Z2dlc3Rpb24oe1xuICBwcm9qZWN0cyxcbiAgbWFyazoge1xuICAgIC4uLk9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIFtcbiAgICAgICAgW1widGFra2VyXCIsIFwidGFra2VyXCJdLFxuICAgICAgICBbXCJ0YWtrZXItbWVtZXhcIiwgXCJ0YWtrZXJcIl0sXG4gICAgICAgIFtcInRha2tlci1ib29rc1wiLCBcInRha2tlci1ib29rc1wiXSxcbiAgICAgICAgW1widGFra2VyLXByaXZhdGVcIiwgXCJ0YWtrZXItcHJpdmF0ZVwiXSxcbiAgICAgICAgW1wibmlzaGlvXCIsIFwibmlzaGlvXCJdLFxuICAgICAgICBbXCJyYXNoaXRhbWVtb1wiLCBcInJhc2hpdGFcIl0sXG4gICAgICAgIFtcImVuY2hpXCIsIFwi6ZuR6KuHXzIwMjItMDQtMTJ+XCJdLFxuICAgICAgICBbXCJyYWt1c2FpXCIsIFwicmFrdXNhaVwiXSxcbiAgICAgICAgW1wibWFzdWlcIiwgXCLmpoLopoFcIl0sXG4gICAgICAgIFtcInNob2thaVwiLCBcInNob2thaVwiXSxcbiAgICAgICAgW1wieXVpc2VraVwiLCBcInl1aXNla2lcIl0sXG4gICAgICAgIFtcImFraXJvb21cIiwgXCLjga/jgZjjgoHjgatcIl0sXG4gICAgICAgIFtcImludGVsdGFua1wiLCBcInNhd2FjaGluXCJdLFxuICAgICAgICBbXCJtb3Rvc29cIiwgXCLjgoLjgajjgZ3jga7jgoLjgahcIl0sXG4gICAgICAgIFtcInZpbGxhZ2VwdW1wXCIsIFwi5LqV5oi456uvXCJdLFxuICAgICAgICBbXCJodWJcIiwgXCJzY3JhcGJveC5pbyUyRmh1Yl/jgavjgaTjgYTjgaZcIl0sXG4gICAgICAgIFtcIm1hc3VpbGFiXCIsIFwi5aKX5LqV56CU44Gr5YWl44Gj44Gf44KJ44G+44Ga44KE44KL44GT44GoXCJdLFxuICAgICAgICBbXCJtYXJzaG1hbGxvdy1ybVwiLCBcIuiqreabuOeMv+ODnuOCt+ODpeODnuODreWFqOizquWVj+WbnuetlFwiXSxcbiAgICAgICAgW1wibWl5YW1vbnpcIiwgXCJtaXlhbW9uelwiXSxcbiAgICAgICAgW1wibXJzZWt1dC1wXCIsIFwibXJzZWt1dFwiXSxcbiAgICAgICAgW1wia2lkYWFhbS05MjAyMjI4NFwiLCBcImtpZG9vb21cIl0sXG4gICAgICAgIFtcImM0alwiLCBcIkNvZGVfZm9yX0phcGFuXCJdLFxuICAgICAgICBbXCJzdXRvM1wiLCBcInN1dG8zXCJdLFxuICAgICAgICBbXCJibHUzbW9cIiwgXCJibHUzbW9cIl0sXG4gICAgICAgIFtcIm53dGdja1wiLCBcIm53dGdja1wiXSxcbiAgICAgICAgW1wianVuZWJva3VcIiwgXCJqdW5lYm9rdVwiXSxcbiAgICAgICAgW1wiamlnc2F3XCIsIFwiamdzXCJdLFxuICAgICAgICBbXCJzbm8yd21hblwiLCBcIlNuTzJXTWFOXCJdLFxuICAgICAgICBbXCJzdXNoaXRlY3R1cmVcIiwgXCJoYXNocm9ja1wiXSxcbiAgICAgICAgW1widW5uYW1lZGNhbXBcIiwgXCLnn6XjgpLllrbjgoBcIl0sXG4gICAgICAgIFtcInVubmFtZWQtcHJvamVjdFwiLCBcInVubmFtZWQtcHJvamVjdFwiXSxcbiAgICAgICAgW1wiaXNzYWMtMzc3NjU2NzlcIiwgXCJjRlEyZjdMUnVMWVBcIl0sXG4gICAgICAgIFtcImJsdTNtb1wiLCBcImJsdTNtb1wiXSxcbiAgICAgICAgW1wieW9zaWRlclwiLCBcInlvc2lkZXJcIl0sXG4gICAgICAgIFtcIk1pamlua29cIiwgXCJNaWppbmtvX1NEXCJdLFxuICAgICAgICBbXCJNaWppbmtvLW90aGVyXCIsIFwiTWlqaW5rb19TRFwiXSxcbiAgICAgICAgW1wiY3VzdG9taXplXCIsIFwi44G/44KT44Gq44Gu44Kr44K544K/44Oe44Kk44K6XCJdLFxuICAgICAgICBbXCJzY3JhcGJveGxhYlwiLCBcIuWFpeS8muaJi+e2muOBjVwiXSxcbiAgICAgICAgW1wic2NyYXNvYm94XCIsIFwiU2NyYXBib3jjgajjgYLjgZ3jgbZcIl0sXG4gICAgICAgIFtcInByb2dyYW1taW5nLW5vdGVzXCIsIFwi5Y+C5Yqg44GZ44KLXCJdLFxuICAgICAgICBbXCJndWlsYW5kXCIsIFwi5qaC6KaB44Go5Y+C5Yqg5pa55rOVXCJdLFxuICAgICAgXS5tYXAoKFtwLCB0XSkgPT4gW3AsIGBodHRwczovL3NjcmFwYm94LmlvL2FwaS9wYWdlcy8ke3B9LyR7dH0vaWNvbmBdKVxuICAgICksXG4gICAgXCJORExTSC1TQlwiOiBcIvCfk5pcIixcbiAgICBcInNjcmFwYm94LWRyaW5rdXBcIjogXCJodHRwczovL3NjcmFwYm94LmlvL2Fzc2V0cy9pbWcvcGFnZS1pY29uL3NjcmFwYm94X2JlYXZlci5wbmdcIixcbiAgICBcIm5vdGEtdGVjaGNvbmZcIjogXCJodHRwczovL2kuZ3lhem8uY29tLzcyN2Y0MmJiZDllMjUzNGQ5OWQ3MGU2ZWE5MDcwNWIzLmpwZ1wiLFxuICAgIFwicGx1cmFsaXR5LWphcGFuZXNlXCI6IFwi4r+7XCIsXG4gIH0sXG4gIGVuYWJsZVNlbGZQcm9qZWN0T25TdGFydDogdHJ1ZSxcbn0pO1xuXG5jb25zdCBwdnNwID0gKGU6IEV2ZW50KTogdm9pZCA9PiB7XG4gIGUucHJldmVudERlZmF1bHQoKTtcbiAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbn07XG5jb25zdCBoYXNQb3B1cCA9ICgpOiBib29sZWFuID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIubGluZSAucG9wdXAtbWVudVwiKSAhPT0gbnVsbDtcbnNjcmFwQmluZGluZ3MuYmluZCh7XG4gIFwiPFRhYj5cIjogICAoZSkgPT4geyBpZihoYXNQb3B1cCgpKSByZXR1cm47IGlmKCFvcHMuc2VsZWN0TmV4dD8uKHsgY3ljbGljOiB0cnVlIH0pKSByZXR1cm47IHB2c3AoZSk7IH0sXG4gIFwiPFMtVGFiPlwiOiAoZSkgPT4geyBpZihoYXNQb3B1cCgpKSByZXR1cm47IGlmKCFvcHMuc2VsZWN0UHJldj8uKHsgY3ljbGljOiB0cnVlIH0pKSByZXR1cm47IHB2c3AoZSk7IH0sXG4gIFwiPEVudGVyPlwiOiAoZSkgPT4geyBpZihoYXNQb3B1cCgpKSByZXR1cm47IGlmKCFvcHMuY29uZmlybT8uKCkpIHJldHVybjsgcHZzcChlKTsgfSxcbiAgXCI8RXNjPlwiOiAgIChlKSA9PiB7IGlmKGhhc1BvcHVwKCkpIHJldHVybjsgaWYoIW9wcy5jYW5jZWw/LigpKSByZXR1cm47IHB2c3AoZSk7IH0sXG59KTtcbn0pKCk7XG5cbmltcG9ydCB7IHNldHVwIGFzIHNldFVwUnVuLCBwcmV2aWV3U1ZHLCBwcmV2aWV3R0xTTCwgcHJldmlld1BsYW50VU1MLCBwcmV2aWV3VGlrWiB9IGZyb20gXCIuLi9TY3JhcFJ1bi9tb2QudHNcIjtcblxuc2V0VXBSdW4oeyBwcmV2aWV3ZXJzOiBbXG4gIHsgd2hlbjogLyg/Ol58XFwuKXN2ZyQvLCBwcmV2aWV3OiBwcmV2aWV3U1ZHIH0sXG4gIHsgd2hlbjogLyg/Ol58XFwuKWdsc2wkLywgcHJldmlldzogcHJldmlld0dMU0wgfSxcbiAgeyB3aGVuOiAvKD86XnxcXC4pKD86cGxhbnR1bWx8cHVtbHxwdSkkLywgcHJldmlldzogcHJldmlld1BsYW50VU1MIH0sXG4gIHsgd2hlbjogLyg/Ol58XFwuKXRpa3pcXCh0ZXhcXCkkLywgcHJldmlldzogcHJldmlld1Rpa1ooXG4gICAgXCIvYXBpL2NvZGUvdGFra2VyLWRpc3QvZm9yLWFueS1wcm9qZWN0LW1pbi90ZXgtd29ya2VyLmpzXCIsXG4gICAgXCJodHRwczovL3NjcmFwYm94LmlvL2ZpbGVzLzY1ZDE2NDVjMTljZDhlMDAyNDMzYzNkZlwiLFxuICApIH0sXG5dfSk7XG5cbmltcG9ydCB7IHNldHVwIGFzIHNldHVwU2xpZGVyIH0gZnJvbSBcImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1oaXN0b3J5LXNsaWRlci8wLjIuMS9BcHAudHN4XCI7XG5cbihhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHsgdG9nZ2xlIH0gPSBhd2FpdCBzZXR1cFNsaWRlcihbXSk7XG4gIHNjcmFwYm94LlBhZ2VNZW51LmFkZEl0ZW0oe1xuICAgIHRpdGxlOiBcIuWxpeattOOCueODqeOCpOODgOODvFwiLFxuICAgIGltYWdlOiBcImh0dHBzOi8vMS5icC5ibG9nc3BvdC5jb20vLVVadGtTRVgwd2g0L1U1bDVfZE5jRXNJL0FBQUFBQUFBaFdzL1V6SkdWenlpWDhZL3M4MDAva2FpY2h1X2Rva2VpLnBuZ1wiLFxuICAgIG9uQ2xpY2s6IHRvZ2dsZSxcbiAgfSk7XG59KSgpO1xuXG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gXCIuLi9tb2JpbGXniYhzY3JhcGJveOOBruWIpOWumi9zY3JpcHQuanNcIjtcbiAgXG5pbXBvcnQgXCIuLi9wb3B1cC9zY3JpcHQudHNcIjtcbmltcG9ydCB7IG1haW4gfSBmcm9tIFwiLi4vdGFra2VyOTklMkZ0YWtrZXItc2NoZWR1bGVyL2F1dG8tcmV2aWV3LnRzXCI7XG5cbm1haW4oXG4gIFwidGFra2VyXCIsXG4gIFtcInRha2tlclwiLCBcIuaMr+OCiui/lOOCiih0YWtrZXItd29ya2Zsb3dAMC4wLjEp44GudGVtcGxhdGVcIiwgXCJ0eHRcIl0sXG4gIFtcInRha2tlclwiLCBcIjHpgLHplpPjga7mjK/jgorov5TjgooodGFra2VyLXdvcmtmbG93QDAuMC4xKeOBrnRlbXBsYXRlXCIsIFwidHh0XCJdXG4pO1xuXG5pbXBvcnQgeyBhZGRCdXR0b24gfSBmcm9tIFwiLi4vUG9ydGVy44Gj44G944GE57eo6ZuG44OQ44O844KS55Sf44KE44GZVXNlclNjcmlwdEAxLjAuMC9tb2QudHNcIjtcbmltcG9ydCB7XG4gIHBvcnRlckNvcHksIHBvcnRlckN1dCwgcG9ydGVyUGFzdGUsIHRvZ2dsZUNhcmV0XG59IGZyb20gXCIuLi9Qb3J0ZXLjgaPjgb3jgYTnt6jpm4bjg5Djg7zjgpLnlJ/jgoTjgZlVc2VyU2NyaXB0QDEuMC4wL2NvbW1hbmRzLnRzXCI7XG5pbXBvcnQge1xuICBkb3duQmxvY2tzLFxuICBkb3duTGluZXMsXG4gIGluZGVudEJsb2NrcyxcbiAgaW5kZW50TGluZXMsXG4gIGluc2VydFRleHQsXG4gIG91dGRlbnRCbG9ja3MsXG4gIG91dGRlbnRMaW5lcyxcbiAgdXBCbG9ja3MsXG4gIHVwTGluZXMsXG4gIHJlZG8sXG4gIHVuZG8sXG59IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcblxuaWYgKGlzTW9iaWxlKCkpIHtcbiAgYWRkQnV0dG9uKHtcbiAgICBkaXNwbGF5OiB7IHR5cGU6IFwiY2FyZXQtbGVmdFwiIH0sXG4gICAgb25DbGljazogKHsgY3Vyc29yLCBzZWxlY3Rpb24gfSkgPT4ge1xuICAgICAgY3Vyc29yLmZvY3VzKCk7XG4gICAgICBzZWxlY3Rpb24uZ2V0U2VsZWN0ZWRUZXh0KCkgPT09IFwiXCIgPyBvdXRkZW50QmxvY2tzKCkgOiBvdXRkZW50TGluZXMoKTtcbiAgICB9LFxuICB9KTtcbiAgYWRkQnV0dG9uKHtcbiAgICBkaXNwbGF5OiB7IHR5cGU6IFwiY2FyZXQtcmlnaHRcIiB9LFxuICAgIG9uQ2xpY2s6ICh7IGN1cnNvciwgc2VsZWN0aW9uIH0pID0+IHtcbiAgICAgIGN1cnNvci5mb2N1cygpO1xuICAgICAgc2VsZWN0aW9uLmdldFNlbGVjdGVkVGV4dCgpID09PSBcIlwiID8gaW5kZW50QmxvY2tzKCkgOiBpbmRlbnRMaW5lcygpO1xuICAgIH0sXG4gIH0pO1xuICBhZGRCdXR0b24oe1xuICAgIGRpc3BsYXk6IHsgdHlwZTogXCJjYXJldC11cFwiIH0sXG4gICAgb25DbGljazogKHsgY3Vyc29yLCBzZWxlY3Rpb24gfSkgPT4ge1xuICAgICAgY3Vyc29yLmZvY3VzKCk7XG4gICAgICBzZWxlY3Rpb24uZ2V0U2VsZWN0ZWRUZXh0KCkgPT09IFwiXCIgPyB1cEJsb2NrcygpIDogdXBMaW5lcygpO1xuICAgIH0sXG4gIH0pO1xuICBhZGRCdXR0b24oe1xuICAgIGRpc3BsYXk6IHsgdHlwZTogXCJjYXJldC1kb3duXCIgfSxcbiAgICBvbkNsaWNrOiAoeyBjdXJzb3IsIHNlbGVjdGlvbiB9KSA9PiB7XG4gICAgICBjdXJzb3IuZm9jdXMoKTtcbiAgICAgIHNlbGVjdGlvbi5nZXRTZWxlY3RlZFRleHQoKSA9PT0gXCJcIiA/IGRvd25CbG9ja3MoKSA6IGRvd25MaW5lcygpXG4gICAgfSxcbiAgfSk7XG4gIGFkZEJ1dHRvbih7XG4gICAgZGlzcGxheTogeyB0eXBlOiBcImNvcHlcIiB9LFxuICAgIG9uQ2xpY2s6IGFzeW5jICh7IGN1cnNvciwgc2VsZWN0aW9uIH0pID0+IGF3YWl0IHBvcnRlckNvcHkoY3Vyc29yLCBzZWxlY3Rpb24pLFxuICB9KTtcbiAgYWRkQnV0dG9uKHtcbiAgICBkaXNwbGF5OiB7IHR5cGU6IFwiY3V0XCIgfSxcbiAgICBvbkNsaWNrOiBhc3luYyAoeyBjdXJzb3IsIHNlbGVjdGlvbiB9KSA9PiBhd2FpdCBwb3J0ZXJDdXQoY3Vyc29yLCBzZWxlY3Rpb24pLFxuICB9KTtcbiAgYWRkQnV0dG9uKHtcbiAgICBkaXNwbGF5OiB7IHR5cGU6IFwiY2xpcGJvYXJkXCIgfSxcbiAgICBvbkNsaWNrOiBhc3luYyAoeyBjdXJzb3IgfSkgPT4gYXdhaXQgcG9ydGVyUGFzdGUoY3Vyc29yKSxcbiAgfSk7XG4gIGFkZEJ1dHRvbih7XG4gICAgZGlzcGxheTogeyB0eXBlOiBcInVuZG9cIiB9LFxuICAgIG9uQ2xpY2s6ICgpID0+IHVuZG8oKSxcbiAgfSk7XG4gIGFkZEJ1dHRvbih7XG4gICAgZGlzcGxheTogeyB0eXBlOiBcInJlZG9cIiB9LFxuICAgIG9uQ2xpY2s6ICgpID0+IHJlZG8oKSxcbiAgfSk7XG4gIGFkZEJ1dHRvbih7XG4gICAgZGlzcGxheTogKHsgY3Vyc29yIH0pID0+IGN1cnNvci5nZXRWaXNpYmxlKCkgJiYgY3Vyc29yLmhhc0ZvY3VzXG4gICAgIC8vIEB0cy1pZ25vcmUgcHJpdmF0ZeaJseOBhOOBoOOBkeOBqeOAgeOBk+OCjOOBl+OBi+OCouOCr+OCu+OCueaWueazleOBjOOBquOBhOOBn+OCgeS9v+OCj+OBm+OBpuOBhOOBn+OBoOOBj1xuICAgICAmJiBjdXJzb3IudmlzaWJsZVBvcHVwTWVudSA/XG4gICAgICB7IHR5cGU6IFtcImktY3Vyc29yXCIsIFwic2xhc2hcIl0gfSA6XG4gICAgICB7IHR5cGU6IFwiaS1jdXJzb3JcIiB9LFxuICAgIG9uQ2xpY2s6ICh7IGN1cnNvciB9KSA9PiB0b2dnbGVDYXJldChjdXJzb3IpLFxuICB9KTtcbn1cblxuaW1wb3J0IFwiLi4vc2NyYXBib3gtZWRpdG9yLWJlZ2luLWVkaXQvc2NyaXB0LnRzXCI7XG5pbXBvcnQgXCIuLi9tb2JpbGXjgYvjgol0aW1lc3RhbXDjgpLooYzpoK3jgavmjL/lhaXjgZnjgotVc2VyU2NyaXB0L3NjcmlwdC5qc1wiO1xuaW1wb3J0IFwiLi4vS2FrZXJ144KS6ZaL44GPUGFnZV9NZW51L3NjcmlwdC5qc1wiO1xuaW1wb3J0IHtcbiAgdHJhbnNwb3J0LCBjcmVhdGVUYXNrLFxufSBmcm9tIFwiLi4vdGFra2VyOTklMkZ0YWtrZXItc2NoZWR1bGVyL2RlcHMudHNcIjtcblxuaWYgKGlzTW9iaWxlKCkgJiYgc2NyYXBib3guUHJvamVjdC5uYW1lICE9PSBcInRha2tlci1tZW1leFwiKSB7XG4gIGNvbnN0IGlkID0gXCJ0YXNrXCI7XG4gIHNjcmFwYm94LlBhZ2VNZW51LmFkZE1lbnUoe1xuICAgIHRpdGxlOiBpZCxcbiAgICBpbWFnZTogJ2h0dHBzOi8vaW1nLmljb25zOC5jb20vaW9zLzE4MC9GRkZGRkYvdG9kby1saXN0LS12Mi5wbmcnLFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiAnQm9vayBzdGFydGluZycsXG4gICAgaW1hZ2U6ICdodHRwczovL2ltZy5pY29uczguY29tL2lvcy8xODAvRkZGRkZGL3BsdXMtMWRheS5wbmcnLFxuICAgIG9uQ2xpY2s6IGNyZWF0ZVRhc2ssXG4gIH0pO1xuICBzY3JhcGJveC5QYWdlTWVudShpZCkuYWRkSXRlbSh7XG4gICAgdGl0bGU6ICdUcmFuc3BvcnQnLFxuICAgIG9uQ2xpY2s6ICgpID0+IHRyYW5zcG9ydCh7XG4gICAgICBmcm9tOiB7XG4gICAgICAgIHByb2plY3Q6IHNjcmFwYm94LlByb2plY3QubmFtZSxcbiAgICAgICAgdGl0bGU6IHNjcmFwYm94LlBhZ2UudGl0bGUhLFxuICAgICAgfSxcbiAgICAgIHRvOiBcInRha2tlci1tZW1leFwiLFxuICAgIH0pLFxuICB9KTtcbn1cblxuaW1wb3J0IHsgbWFrZU5ld1BhZ2UgfSBmcm9tIFwiLi4vY3VzdG9tLW5ldy1wYWdlL21vZC50c1wiO1xuaW1wb3J0IHtcbiAgbmV3UGFnZUhvb2ssXG4gIHNwbGl0dGVkTGlua0hvb2ssXG4gIHRhc2tMaW5lSG9vayxcbn0gZnJvbSBcIi4uL2Zvci1jdXN0b20tbmV3LXBhZ2UvbW9kLnRzXCI7XG5cbmlmIChpc01vYmlsZSgpKSB7XG4gIGNvbnN0IGlkID0gXCJOZXcgUGFnZVwiO1xuICBjb25zdCBob29rcyA9IFt0YXNrTGluZUhvb2ssIG5ld1BhZ2VIb29rLCBzcGxpdHRlZExpbmtIb29rXTtcbiAgc2NyYXBib3guUGFnZU1lbnUuYWRkTWVudSh7XG4gICAgdGl0bGU6IGlkLFxuICAgIGltYWdlOiBcImh0dHBzOi8vaW1nLmljb25zOC5jb20vaW9zLzE4MC9GRkZGRkYvY3V0LXBhcGVyLnBuZ1wiLFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiBcIk5ldyBQYWdlXCIsXG4gICAgb25DbGljazogKCkgPT4ge1xuICAgICAgY29uc3QgcHJvamVjdCA9IHdpbmRvdy5wcm9tcHQoXCJDcmVhdGUgYSBuZXcgcGFnZSBhdFwiLCBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUpO1xuICAgICAgaWYgKCFwcm9qZWN0KSByZXR1cm47XG4gICAgICBtYWtlTmV3UGFnZSh7IHByb2plY3QsIG1vZGU6IFwibm9vcGVuXCIsIGhvb2tzIH0pPy4oKTtcbiAgICB9LFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiBcIk5ldyBQYWdlIGFuZCBPcGVuXCIsXG4gICAgb25DbGljazogKCkgPT4ge1xuICAgICAgY29uc3QgcHJvamVjdCA9IHdpbmRvdy5wcm9tcHQoXCJDcmVhdGUgYSBuZXcgcGFnZSBhdFwiLCBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUpO1xuICAgICAgaWYgKCFwcm9qZWN0KSByZXR1cm47XG4gICAgICBtYWtlTmV3UGFnZSh7IHByb2plY3QsIG1vZGU6IFwic2VsZlwiLCBob29rcyB9KT8uKCk7XG4gICAgfSxcbiAgfSk7XG59XG5cbmltcG9ydCBcIi4uL+ODmuODvOOCuOOCkui7oumAgeOBmeOCi1VzZXJTY3JpcHQvcGFnZU1lbnUudHNcIjtcbmltcG9ydCB7IGFkZFRvSW5ib3hGcm9tUHJvbXB0IH0gZnJvbSBcIi4uL0luYm9444Gr57Sg5pep44GP5YWl44KM44KLVXNlclNjcmlwdC9tb2QudHNcIjtcblxuc2NyYXBib3guUGFnZU1lbnUuYWRkTWVudSh7XG4gIHRpdGxlOiBcIkFkZCB0byBpbmJveFwiLFxuICBpbWFnZTogXCJodHRwczovL2ltZy5pY29uczguY29tL2lvcy8xODAvRkZGRkZGL2luYm94LnBuZ1wiLFxuICBvbkNsaWNrOiAoKSA9PiAgYWRkVG9JbmJveEZyb21Qcm9tcHQoXG4gICAgXCJ0YWtrZXItbWVtZXhcIixcbiAgICBcIuODoeODouW4s1wiLFxuICApLFxufSk7XG5cbmltcG9ydCBcIi4uL3NjcmFwYm94LWljb24tYnV0dG9uL3NjcmlwdC5qc1wiO1xuaW1wb3J0IFwiLi4vTWFya2Rvd27lvaLlvI/jgafjg5rjg7zjgrjjga5VUkzjgpLjgrPjg5Tjg7zjgZnjgotQYWdlTWVudS9zY3JpcHQuanNcIjtcbmltcG9ydCB7XG4gIHNldHVwIGFzIHNldHVwQWN0aW9uc1xufSBmcm9tIFwiLi4vdGFra2VyOTklMkZ0YWtrZXItc2NoZWR1bGVyL3ZpZXdlci50c3hcIjtcbmltcG9ydCB7XG4gIHNldHVwIGFzIHNldHVwU2NoZWR1bGVyLFxuICBzZXR1cFdlZGdldFxufSBmcm9tIFwiLi4vdGFra2VyOTklMkZ0YWtrZXItc2NoZWR1bGVyL3dlZWtseS1zY2hlZHVsZXIudHN4XCI7XG5cbihhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGlkID0gXCJuZXh0LWFjdGlvblwiO1xuICBjb25zdCBzZWxlY3RvciA9IGBoZWFkIHN0eWxlW2RhdGEtdXNlcnNjcmlwdC1uYW1lPVwiJHtpZH1cIl1gO1xuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKT8ucmVtb3ZlPy4oKTtcbiAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIHN0eWxlLmRhdGFzZXQudXNlcnNjcmlwdE5hbWUgPSBpZDtcbiAgc3R5bGUudGV4dENvbnRlbnQgPSBgXG5idXR0b246aXMoIyR7aWR9LCAjc2NoZWR1bGVyKS50b29sLWJ0bjo6YmVmb3JlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBmb250OiA5MDAgMjBweC80NnB4IFwiRm9udCBBd2Vzb21lIDUgRnJlZVwiO1xufVxuYnV0dG9uIyR7aWR9LnRvb2wtYnRuOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcXFxmMGFlXCI7XG59XG5idXR0b24jc2NoZWR1bGVyLnRvb2wtYnRuOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcXFxmMDczXCI7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5idXR0b246aXMoIyR7aWR9LCAjc2NoZWR1bGVyKS50b29sLWJ0biBpbWcge1xuICBvcGFjaXR5OiAwO1xufWA7XG4gIGRvY3VtZW50LmhlYWQuYXBwZW5kKHN0eWxlKTtcbiAgY29uc3QgcHJvamVjdHMgPSBbXCJ0YWtrZXItbWVtZXhcIiwgXCJ0YWtrZXJcIl07XG4gIGNvbnN0IHsgb3BlbiB9ID0gYXdhaXQgc2V0dXBBY3Rpb25zKHByb2plY3RzKTtcbiAgc2NyYXBib3guUGFnZU1lbnUuYWRkTWVudSh7XG4gICAgdGl0bGU6IGlkLFxuICAgIGltYWdlOiBcIi9hc3NldHMvaW1nL2Zhdmljb24vYXBwbGUtdG91Y2gtaWNvbi5wbmdcIixcbiAgICBvbkNsaWNrOiBvcGVuLFxuICB9KTtcbiAgY29uc3Qgc2NoZWR1bGVyID0gYXdhaXQgc2V0dXBTY2hlZHVsZXIocHJvamVjdHMpO1xuICBzY3JhcGJveC5QYWdlTWVudS5hZGRNZW51KHtcbiAgICB0aXRsZTogXCJzY2hlZHVsZXJcIixcbiAgICBpbWFnZTogXCIvYXNzZXRzL2ltZy9mYXZpY29uL2FwcGxlLXRvdWNoLWljb24ucG5nXCIsXG4gICAgb25DbGljazogc2NoZWR1bGVyLm9wZW4sXG4gIH0pO1xuICB7XG4gICAgY29uc3Qga2V5ID0gXCJ0YWtrZXItc2NoZWR1bGVyL3dlZGdldFwiO1xuICAgIGxldCBzZXR0aW5ncyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSA/PyBcInt9XCIpO1xuICAgIGNvbnN0IHByb2plY3QgPSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWU7XG4gICAgc2V0dGluZ3NbcHJvamVjdF0gPz89IGZhbHNlO1xuICAgIGNvbnN0IHdlZGdldCA9IGF3YWl0IHNldHVwV2VkZ2V0KHByb2plY3RzLCBzZXR0aW5nc1twcm9qZWN0XSk7XG4gICAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgICAgc2V0dGluZ3NbcHJvamVjdF0gPSAhd2VkZ2V0LmlzT3BlbjtcbiAgICAgIGlmICh3ZWRnZXQuaXNPcGVuKSB7IHdlZGdldC5jbG9zZSgpOyB9IGVsc2UgeyB3ZWRnZXQub3BlbigpOyB9XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KHNldHRpbmdzKSk7XG4gICAgfTtcbiAgICBpZiAoIWlzTW9iaWxlKCkpIHtcbiAgICAgIHNjcmFwYm94LlBhZ2VNZW51LmFkZEl0ZW0oe1xuICAgICAgICB0aXRsZTogXCJ0b2dnbGUgd2VkZ2V0XCIsXG4gICAgICAgIG9uQ2xpY2s6IHRvZ2dsZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhZGRCdXR0b24oe1xuICAgICAgICBkaXNwbGF5OiB7IHR5cGU6IFwiY2FsZW5kYXJcIiB9LFxuICAgICAgICBvbkNsaWNrOiB0b2dnbGUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn0pKCk7XG5cbmV4cG9ydCB7IGFkZEJ1dHRvbiwgaW5zZXJ0VGV4dCwgIH07Il0sCiAgIm1hcHBpbmdzIjogIjZGQWlKTyxJQUFNQSxHQUFxQkMsR0FDaENDLEdBQXFCLFNBQVNELEVBQU0sSUFBSSxFQUVwQ0MsR0FBdUIsQ0FDM0IsZ0JBQ0Esc0JBQ0EscUJBQ0YsRUM1SU8sSUFBTUMsR0FBVyxTQUE2QixDQUVuRCxJQUFNQyxHQURLLE1BQU1DLEdBQWUsR0FDZCxzQkFBdUIsQ0FDdkMsa0JBQW1CLElBQ25CLFdBQVksQ0FBQyxXQUFXLENBQzFCLENBQUMsRUFFRCxhQUFNLElBQUksUUFBYyxDQUFDQyxFQUFTQyxJQUFXLENBQzNDLElBQU1DLEVBQWdCQyxHQUFvQ0YsRUFBT0UsQ0FBTSxFQUN2RUwsRUFBTyxLQUFLLFVBQVcsSUFBTSxDQUMzQkEsRUFBTyxJQUFJLGFBQWNJLENBQVksRUFDckNGLEVBQVEsQ0FDVixDQUFDLEVBQ0RGLEVBQU8sS0FBSyxhQUFjSSxDQUFZLENBQ3hDLENBQUMsRUFDTUosQ0FDVCxFQU9NTSxHQUFVLFFBQ1ZDLEdBQ0osb0RBQW9ERCxFQUFPLG9CQUN6REUsR0FFRVAsR0FBaUIsU0FBeUIsQ0FDOUMsR0FBSU8sR0FBTyxNQUFNQSxHQUNqQixHQUFJLENBQUMsU0FBUyxjQUFjLGVBQWVELEVBQUcsSUFBSSxFQUFHLENBQ25ELElBQU1FLEVBQVMsU0FBUyxjQUFjLFFBQVEsRUFDOUNBLEVBQU8sSUFBTUYsR0FDYixNQUFNLElBQUksUUFBYyxDQUFDTCxFQUFTQyxJQUFXLENBQzNDTSxFQUFPLE9BQVMsSUFBTVAsRUFBUSxFQUM5Qk8sRUFBTyxRQUFXQyxHQUFNLENBQ3RCRixHQUFRRSxFQUNSUCxFQUFPTyxDQUFDLENBQ1YsRUFDQSxTQUFTLEtBQUssT0FBT0QsQ0FBTSxDQUM3QixDQUFDLENBQ0gsQ0FFQSxPQUFPLElBQUksUUFBU1AsR0FBWSxDQUM5QixJQUFNUyxFQUFLLFlBQVksSUFBTSxDQUN0QixLQUNMLGNBQWNBLENB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LEVBQUUsTUFBTVEsRUFBRVIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUdDLElBQUksSUFBSSxDQUFDRixFQUFFLEtBQUssQ0FBQyxLQUFLLFdBQVcsTUFBTUMsRUFBRSxNQUFNUSxFQUFFUixHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHQyxJQUFJLEtBQUtBLElBQUksSUFBSSxDQUFDRixFQUFFLEtBQUssQ0FBQyxLQUFLLGlCQUFpQixNQUFNQyxFQUFFLE1BQU1RLEVBQUVSLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUdDLElBQUksS0FBSyxDQUFDRixFQUFFLEtBQUssQ0FBQyxLQUFLLGVBQWUsTUFBTUMsSUFBSSxNQUFNUSxFQUFFUixHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHQyxJQUFJLElBQUksQ0FBQ0YsRUFBRSxLQUFLLENBQUMsS0FBSyxPQUFPLE1BQU1DLEVBQUUsTUFBTVEsRUFBRVIsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsR0FBR0MsSUFBSSxJQUFJLENBQUNGLEVBQUUsS0FBSyxDQUFDLEtBQUssUUFBUSxNQUFNQyxFQUFFLE1BQU1RLEVBQUVSLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUdDLElBQUksSUFBSSxDQUFDLElBQUlFLEVBQUUsR0FBR08sRUFBRVYsRUFBRSxFQUFFLEtBQUtVLEVBQUVGLEVBQUUsUUFBUSxDQUFDLElBQUlHLEVBQUVILEVBQUUsT0FBT0UsRUFBRSxDQUFDLEVBQUUsR0FBR0EsSUFBSVYsRUFBRSxHQUFHSSxHQUFHLEtBQUtPLENBQUMsR0FBR0QsSUFBSVYsRUFBRSxHQUFHSyxHQUFHLEtBQUtNLENBQUMsRUFBRSxDQUFDUixHQUFHSyxFQUFFRSxHQUFHLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUNQLEVBQUUsQ0FBQ0QsRUFBRSw2QkFBNkJGLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQ0QsRUFBRSxLQUFLLENBQUMsS0FBSyxPQUFPLE1BQU1DLEVB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LEVBQUUsSUFBSSxJQUFJLHFCQUFxQixFQUFFLE9BQU9BLEVBQUUsS0FBS1UsRUFBRVYsRUFBRSxLQUFLLFVBQVUsRUFBRUEsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDLElBQUlvRSxHQUFFLEtBQUssQ0FBQ0MsR0FBR0MsR0FBRyxDQUFDLEVBQUVDLEdBQUcsQ0FBQyxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEdBQUcsWUFBWTlFLEVBQUUsQ0FBQyxLQUFLcUUsR0FBR3JFLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEtBQUt1RSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksS0FBS0QsR0FBRzNELEdBQUUsS0FBSzBELEdBQUcsRUFBRSxFQUFFLEtBQUtHLEdBQUcsS0FBS0YsR0FBRyxPQUFPLEtBQUtFLElBQUksS0FBS0MsR0FBRyxDQUFDLEdBQUcsS0FBS0EsR0FBRyxFQUFFLEtBQUtILEdBQUcsS0FBS0UsRUFBRSxFQUFFLE9BQU8sTUFBTSxDQUFDLEdBQUcsS0FBS0csS0FBSyxFQUFFLENBQUMsS0FBS0ksR0FBRyxFQUFFLEtBQUtDLEdBQUcsRUFBRSxLQUFLQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUtDLEdBQUcsRUFBRSxLQUFLRCxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUtBLEdBQUcsRUFBRSxDQUFDLEVBQUUsUUFBUSxTQUFTLEtBQUtOLEtBQUssRUFBRSxDQUFDLEtBQUtRLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLRixHQUFHLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLEtBQUtMLEdBQUcsRUFBRSxHQUFHLEtBQUtRLEdBQUcsRUFBRSxLQUFLUixJQUFJLE1BQU8sVUFBUyxHQUFHLEtBQUtTLEdBQUcsRUFBRSxDQUFDLEtBQUtULElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxLQUFLRCxHQUFHLENBQUMsSUFBSyxHQUFFLEtBQUtXLEdBQUcsR0FBRyxLQUFLSCxHQUFHLENBQUMsRUFBRSxNQUFNLElBQUssR0FBRSxHQUFHLEtBQUtHLEdBQUcsRUFBRSxDQUFDLEtBQUtDLEdBQUcsRUFBRSxJQUFJdkYsRUFBRSxFQUFFQyxFQUFFLEVBQUUsS0FBS3VGLEdBQUcsR0FBR3hGLEVBQUUsRUFBRUMsRUFBRSxHQUFHLEtBQUs2RSxLQUFLOUUsRUFBRSxHQUFHLEtBQUtpRixHQUFHakYsRUFBRUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFLLEdBQUUsS0FBS3dGLEdBQUcsRUFBRSxLQUFLTixHQUFHLENBQUMsR0FBRyxLQUFLTyxHQUFHLEdBQUcsS0FBS1IsR0FBRyxHQUFHLEtBQUtGLEdBQUcsSUFBSSxLQUFLRyxHQUFHLENBQUMsRUFBRSxNQUFNLElBQUssR0FBRSxLQUFLUSxHQUFHLEVBQUUsS0FBS1YsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLUSxHQUFHLEdBQUcsS0FBS1IsR0FBRyxFQUFFLENBQUMsRUFBRSxNQUFNLElBQUssR0FBRSxLQUFLUSxHQUFHLEdBQUcsS0FBS1IsR0FBRyxFQUFFLENBQUMsRUFBRSxNQUFNLElBQUssR0FBRSxLQUFLVyxHQUFHLEVBQUUsS0FBS2YsSUFBSSxFQUFFLEtBQUtnQixHQUFHLElBQUksS0FBS2hCLElBQUksR0FBRyxLQUFLaUIsR0FBRyxHQUFHLENBQUMsS0FBS2pCLEdBQUcsS0FBS0ksR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLUyxHQUFHLEVBQUUsS0FBS1QsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLQyxHQUFHLEVBQUUsS0FBS0QsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLRCxHQUFHLEdBQUcsS0FBS0MsR0FBRyxFQUFFLENBQUMsRUFBRSxNQUFNLElBQUssR0FBRSxLQUFLUyxHQUFHLEVBQUUsS0FBS1QsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLQyxHQUFHLEVBQUUsS0FBS0QsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLRCxHQUFHLEdBQUcsS0FBS0MsR0FBRyxFQUFFLENBQUMsRUFBRSxNQUFNLElBQUssR0FBRSxLQUFLQyxHQUFHLEVBQUUsS0FBS0QsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLRCxHQUFHLEdBQUcsS0FBS0MsR0FBRyxFQUFFLENBQUMsRUFBRSxNQUFNLElBQUssR0FBRSxLQUFLRCxHQUFHLEdBQUcsS0FBS0MsR0FBRyxFQUFFLENBQUMsRUFBRSxNQUFNLElBQUssR0FBRSxNQUFNLElBQUssSUFBRyxLQUFLLENBQUMsQ0FBQyxLQUFLVixHQUFHLFdBQVcsUUFBUSxLQUFLQSxHQUFHLE9BQU8sU0FBUyxLQUFLQSxHQUFHLEtBQUssR0FBRyxDQUFDVSxHQUFHakYsRUFBRUMsRUFBRSxDQUFDLE9BQU8sS0FBSzBFLEdBQUcsQ0FBQyxJQUFLLEdBQUUsTUFBTSxJQUFLLEdBQUUsS0FBS0osR0FBRyxTQUFTLEtBQUt3QixHQUFHLEVBQUUsTUFBTSxJQUFLLEdBQUUsTUFBTSxJQUFLLEdBQUUsS0FBS3hCLEdBQUcsU0FBUyxLQUFLd0IsR0FBRyxFQUFFLE1BQU0sSUFBSyxHQUFFLEtBQUt4QixHQUFHLFNBQVMsS0FBS3dCLEdBQUcsRUFBRSxNQUFNLElBQUssR0FBRSxLQUFLeEIsR0FBRyxTQUFTLEtBQUt3QixHQUFHLEVBQUUsTUFBTSxJQUFLLEdBQUUsS0FBS3hCLEdBQUcsS0FBSyxLQUFLd0IsR0FBRyxFQUFFLE1BQU0sSUFBSyxHQUFFLEtBQUt4QixHQUFHLFNBQVMsS0FBS3dCLEdBQUcsRUFBRSxNQUFNLElBQUssR0FBRSxLQUFLeEIsR0FBRyxPQUFPLEtBQUt3QixHQUFHLEVBQUUsTUFBTSxJQUFLLEdBQUUsS0FBS3hCLEdBQUcsS0FBSyxLQUFLd0IsR0FBRyxFQUFFLE1BQU0sSUFBSyxJQUFHLEtBQUssQ0FBQyxLQUFLcEIsS0FBSyxHQUFHM0UsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsS0FBSzJFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxTQUFTM0UsQ0FBQyxJQUFJLEtBQUt1RSxHQUFHLFdBQVcsSUFBSSxDQUFDLEVB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QSxFQUFFLFNBQVMsT0FBTyxDQUFDLEVBQUVELENBQUMsR0FBRyxDQUFDQSxHQUFHRCxFQUFFLFdBQVcsUUFBUUEsRUFBRSxXQUFXLFFBQVFBLEVBQUUsT0FBTyxRQUFRQSxFQUFFLFdBQVcsU0FBU1UsRUFBRSxTQUFTNEYsR0FBRXBHLEVBQUUsU0FBU0QsQ0FBQyxHQUFHLENBQUNBLEdBQUdELEVBQUUsV0FBVyxRQUFRQSxFQUFFLFdBQVcsUUFBUUEsRUFBRSxPQUFPLFFBQVFBLEVBQUUsV0FBVyxRQUFRQSxFQUFFLFdBQVcsU0FBU1UsRUFBRSxTQUFTNEYsR0FBRXBHLEVBQUUsU0FBU0QsQ0FBQyxHQUFHRCxFQUFFLFdBQVcsUUFBUUEsRUFBRSxXQUFXLFNBQVNVLEVBQUUsU0FBUzRGLEdBQUVwRyxFQUFFLFNBQVNELENBQUMsR0FBR0QsRUFBRSxXQUFXLFFBQVFBLEVBQUUsV0FBVyxRQUFRQSxFQUFFLE9BQU8sU0FBU1UsRUFBRSxLQUFLNEYsR0FBRXBHLEVBQUUsS0FBS0QsQ0FBQyxHQUFHRCxFQUFFLFdBQVcsUUFBUUEsRUFBRSxXQUFXLFFBQVFBLEVBQUUsT0FBTyxRQUFRQSxFQUFFLFdBQVcsU0FBU1UsRUFBRSxTQUFTNEYsR0FBRXBHLEVBQUUsU0FBU0QsQ0FBQyxHQUFHRCxFQUFFLFdBQVcsUUFBUUEsRUFBRSxXQUFXLFFBQVFBLEVBQUUsT0FBTyxRQUFRQSxFQUFFLFdBQVcsUUFBUUEsRUFBRSxTQUFTLFNBQVNVLEVBQUUsT0FBTzRGLEdBQUVwRyxFQUFFLE9BQU8sVUFBVSxFQUFFQSxFQUFFLE9BQU8sTUFBTSxFQUFFRCxDQUFDLEdBQUdELEVBQUUsV0FBVyxRQUFRQSxFQUFFLFdBQVcsUUFBUUEsRUFBRSxPQUFPLFFBQVFBLEVBQUUsV0FBVyxRQUFRQSxFQUFFLFNBQVMsUUFBUUEsRUFBRSxPQUFPLFNBQVNVLEVBQUUsS0FBSzRGLEdBQUVwRyxFQUFFLEtBQUssVUFBVSxFQUFFQSxFQUFFLEtBQUssTUFBTSxFQUFFRCxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxVQUFVLG9C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cEMsQ0FBRSxLQUFBNEMsQ0FBSyxFQUFJLE1BQU03QyxHQUFhQyxDQUFRLEVBQzVDLFNBQVMsU0FBUyxRQUFRLENBQ3hCLE1BQU9nQyxFQUNQLE1BQU8sMkNBQ1AsUUFBU1ksQ0FDWCxDQUFDLEVBQ0QsSUFBTUMsRUFBWSxNQUFNOUMsR0FBZUMsQ0FBUSxFQUMvQyxTQUFTLFNBQVMsUUFBUSxDQUN4QixNQUFPLFlBQ1AsTUFBTywyQ0FDUCxRQUFTNkMsRUFBVSxJQUNyQixDQUFDLEVBQ0QsQ0FDRSxJQUFNQyxFQUFNLDBCQUNSQyxFQUFXLEtBQUssTUFBTSxhQUFhLFFBQVFELENBQUcsR0FBSyxJQUFJLEVBQ3JEUCxFQUFVLFNBQVMsUUFBUSxLQUNqQ1EsRUFBU1IsQ0FBTyxJQUFNLEdBQ3RCLElBQU1TLEVBQVMsTUFBTUMsR0FBWWpELEVBQVUrQyxFQUFTUixDQUFPLENBQUMsRUFDdEQzQixFQUFTLElBQU0sQ0FDbkJtQyxFQUFTUixDQUFPLEVBQUksQ0FBQ1MsRUFBTyxPQUN4QkEsRUFBTyxPQUFVQSxFQUFPLE1BQU0sRUFBWUEsRUFBTyxLQUFLLEVBQzFELGFBQWEsUUFBUUYsRUFBSyxLQUFLLFVBQVVDLENBQVEsQ0FBQyxDQUNwRCxFQUNLakMsR0FBUyxFQU1aQyxHQUFVLENBQ1IsUUFBUyxDQUFFLEtBQU0sVUFBVyxFQUM1QixRQUFTSCxDQUNYLENBQUMsRUFSRCxTQUFTLFNBQVMsUUFBUSxDQUN4QixNQUFPLGdCQUNQLFFBQVNBLENBQ1gsQ0FBQyxDQU9MLENBQ0YsR0FBRyIsCiAgIm5hbWVzIjogWyJpc1BhZ2VDb21taXRFcnJvciIsICJlcnJvciIsICJwYWdlQ29tbWl0RXJyb3JOYW1lcyIsICJzb2NrZXRJTyIsICJzb2NrZXQiLCAiaW1wb3J0U29ja2V0SU8iLCAicmVzb2x2ZSIsICJyZWplY3QiLCAib25EaXNjb25uZWN0IiwgInJlYXNvbiIsICJ2ZXJzaW9uIiwgInVybCIsICJlcnJvciIsICJzY3JpcHQiLCAiZSIsICJpZCIsICJ3cmFwIiwgInNvY2tldCIsICJ0aW1lb3V0IiwgInJlcXVlc3QiLCAiZXZlbnQiLCAiZGF0YSIsICJpZCIsICJyZXNvbHZlIiwgInJlamVjdCIsICJvbkRpc2Nvbm5lY3QiLCAibWVzc2FnZSIsICJyZXNwb25zZSIsICJpc1BhZ2VDb21taXRFcnJvciIsICJldmVudHMiLCAiX3Jlc29sdmUiLCAid2FpdEZvckV2ZW50IiwgInJlcyIsICJtYWtlU29ja2V0IiwgInNvY2tldElPIiwgImNvbm5lY3QiLCAic29ja2V0IiwgIndhaXRpbmciLCAicmVzb2x2ZSIsICJkaXNjb25uZWN0IiwgIm9uRGlzY29ubmVjdCIsICJyZWFzb24iLCAiZGlmZiIsICJsZWZ0IiwgInJpZ2h0IiwgInJldmVyc2VkIiwgImEiLCAiYiIsICJvZmZzZXQiLCAiTUFYU0laRSIsICJwYXRoIiwgInBhdGhwb3MiLCAic25ha2UiLCAiayIsICJwIiwgInBwIiwgInkiLCAieCIsICJmcCIsICJkZWx0YSIsICJlcGMiLCAiciIsICJ4SW5kZXgiLCAieUluZGV4IiwgInJldmVyc2UiLCAidG9FeHRlbmRlZENoYW5nZXMiLCAiY2hhbmdlcyIsICJhZGRlZExpc3QiLCAiZGVsZXRlZExpc3QiLCAiZmx1c2giLCAiaSIsICJtYWtlUmVwbGFjZWQiLCAiY2hhbmdlIiwgImxpc3QiLCAic2V0RGVmYXVsdHMiLCAib3B0aW9ucyIsICJmZXRjaCIsICJob3N0TmFtZSIsICJyZXN0IiwgImlzTm9uZSIsICJ2YWx1ZSIsICJpc1N0cmluZyIsICJpc051bWJlciIsICJpc09iamVjdCIsICJ2YWx1ZSIsICJpc0Vycm9yTGlrZSIsICJlIiwgInRyeVRvRXJyb3JMaWtlIiwgImpzb24iLCAiZTIiLCAiVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IiLCAiX1VuZXhwZWN0ZWRSZXNwb25zZUVycm9yIiwgInJlc3BvbnNlIiwgIm1ha2VFcnJvciIsICJyZXMiLCAidGV4dCIsICJ2YWx1ZSIsICJ0cnlUb0Vycm9yTGlrZSIsICJnZXRQcm9maWxlIiwgImluaXQiLCAic2lkIiwgImhvc3ROYW1lIiwgImZldGNoIiwgInNldERlZmF1bHRzIiwgInJlcXVlc3QiLCAiY29va2llIiwgInJlc3BvbnNlIiwgIlVuZXhwZWN0ZWRSZXNwb25zZUVycm9yIiwgImNvb2tpZSIsICJzaWQiLCAiZ2V0Q1NSRlRva2VuIiwgImluaXQiLCAiZ2V0UHJvZmlsZSIsICJnZXRQcm9qZWN0X3RvUmVxdWVzdCIsICJwcm9qZWN0IiwgImluaXQiLCAic2lkIiwgImhvc3ROYW1lIiwgInNldERlZmF1bHRzIiwgImNvb2tpZSIsICJnZXRQcm9qZWN0X2Zyb21SZXNwb25zZSIsICJyZXMiLCAibWFrZUVycm9yIiwgImdldFByb2plY3QiLCAiZmV0Y2giLCAicmVxIiwgIkxpc3RQcm9qZWN0X3RvUmVxdWVzdCIsICJwcm9qZWN0SWRzIiwgInBhcmFtIiwgImlkIiwgIkxpc3RQcm9qZWN0X2Zyb21SZXNwb25zZSIsICJsaXN0UHJvamVjdHMiLCAidXNlcklkIiwgImdldFVzZXJJZCIsICJ1c2VyIiwgImdldFByb2ZpbGUiLCAicHJvamVjdE1hcCIsICJnZXRQcm9qZWN0SWQiLCAicHJvamVjdCIsICJjYWNoZWRJZCIsICJyZXN1bHQiLCAiZ2V0UHJvamVjdCIsICJuYW1lIiwgIm1lc3NhZ2UiLCAiaWQiLCAiemVybyIsICJuIiwgImNyZWF0ZU5ld0xpbmVJZCIsICJ0aW1lIiwgInJhbmQiLCAiZGlmZlRvQ2hhbmdlcyIsICJsZWZ0IiwgInJpZ2h0IiwgInVzZXJJZCIsICJidWlsZFNFUyIsICJkaWZmIiwgInRleHQiLCAibGluZU5vIiwgImxpbmVJZCIsICJjaGFuZ2UiLCAidG9FeHRlbmRlZENoYW5nZXMiLCAiY3JlYXRlTmV3TGluZUlkIiwgImNvbnZlcnRUb1RpdGxlIiwgInBhY2siLCAiY29udmVydFRvQ29kZUJsb2NrIiwgImhlYWQiLCAiYm9keSIsICJpbmRlbnQiLCAidGV4dCIsICJmaWxlTmFtZSIsICJyb3ciLCAiY3JlYXRlTm9kZVBhcnNlciIsICJub2RlQ3JlYXRvciIsICJwYXJzZU9uTmVzdGVkIiwgInBhcnNlT25RdW90ZWQiLCAicGF0dGVybnMiLCAib3B0cyIsICJuZXh0IiwgInAiLCAibCIsICJtIiwgInUiLCAiZiIsICJOIiwgIl9hIiwgIl9iIiwgInBhdHRlcm4iLCAibWF0Y2giLCAibGVmdCIsICJyaWdodCIsICJfZCIsICJfYyIsICJub2RlIiwgIl9lIiwgImNvbnZlcnRUb05vZGVzIiwgIl9mIiwgImNyZWF0ZVBsYWluTm9kZSIsICJyYXciLCAiUGxhaW5Ob2RlUGFyc2VyIiwgInF1b3RlUmVnRXhwIiwgImNyZWF0ZVF1b3RlTm9kZSIsICJRdW90ZU5vZGVQYXJzZXIiLCAiaGVscGZlZWxSZWdFeHAiLCAiY3JlYXRlSGVscGZlZWxOb2RlIiwgIkhlbHBmZWVsTm9kZVBhcnNlciIsICJzdHJvbmdJbWFnZVJlZ0V4cCIsICJzdHJvbmdHeWF6b0ltYWdlUmVnRXhwIiwgImNyZWF0ZVN0cm9uZ0ltYWdlTm9kZSIsICJzcmMiLCAiaXNHeWF6b0ltYWdlIiwgIlN0cm9uZ0ltYWdlTm9kZVBhcnNlciIsICJpY29uUmVnRXhwIiwgImdlbmVyYXRlSWNvbk5vZGVDcmVhdG9yIiwgInR5cGUiLCAidGFyZ2V0IiwgImluZGV4IiwgInBhdGgiLCAicGF0aFR5cGUiLCAibnVtU3RyIiwgIm51bSIsICJjcmVhdGVJY29uTm9kZSIsICJJY29uTm9kZVBhcnNlciIsICJzdHJvbmdJY29uUmVnRXhwIiwgImNyZWF0ZVN0cm9uZ0ljb25Ob2RlIiwgIlN0cm9uZ0ljb25Ob2RlUGFyc2VyIiwgInN0cm9uZ1JlZ0V4cCIsICJjcmVhdGVTdHJvbmdOb2RlIiwgIlN0cm9uZ05vZGVQYXJzZXIiLCAiZm9ybXVsYVdpdGhUYWlsSGFsZlNwYWNlUmVnRXhwIiwgImZvcm11bGFSZWdFeHAiLCAiY3JlYXRlRm9ybXVsYU5vZGUiLCAiRm9ybXVsYU5vZGVQYXJzZXIiLCAiZGVjb3JhdGlvblJlZ0V4cCIsICJjcmVhdGVEZWNvcmF0aW9uTm9kZSIsICJzZXBhcmF0b3JJbmRleCIsICJyYXdEZWNvcyIsICJkZWNvU2V0IiwgImFzdGVyaXNrQ291bnQiLCAiRGVjb3JhdGlvbk5vZGVQYXJzZXIiLCAiY29kZVJlZ0V4cCIsICJjcmVhdGVDb2RlTm9kZSIsICJDb2RlTm9kZVBhcnNlciIsICJjb21tYW5kTGluZVJlZ0V4cCIsICJjcmVhdGVDb21tYW5kTGluZU5vZGUiLCAibyIsICJzeW1ib2wiLCAiQ29tbWFuZExpbmVOb2RlUGFyc2VyIiwgImJsYW5rUmVnRXhwIiwgImNyZWF0ZUJsYW5rTm9kZSIsICJCbGFua05vZGVQYXJzZXIiLCAic3JjRmlyc3RTdHJvbmdJbWFnZVJlZ0V4cCIsICJsaW5rRmlyc3RTdHJvbmdJbWFnZVJlZ0V4cCIsICJzcmNGaXJzdFN0cm9uZ0d5YXpvSW1hZ2VSZWdFeHAiLCAibGlua0ZpcnN0U3Ryb25nR3lhem9JbWFnZVJlZ0V4cCIsICJpc0ltYWdlVXJsIiwgImlzR3lhem9JbWFnZVVybCIsICJjcmVhdGVJbWFnZU5vZGUiLCAiZmlyc3QiLCAic2Vjb25kIiwgImxpbmsiLCAiSW1hZ2VOb2RlUGFyc2VyIiwgImhyZWZGaXJzdFVybFJlZ0V4cCIsICJjb250ZW50Rmlyc3RVcmxSZWdFeHAiLCAiYnJhY2tldGVkVXJsUmVnRXhwIiwgImh0dHBSZWdFeHAiLCAiY3JlYXRlRXh0ZXJuYWxMaW5rTm9kZSIsICJpbm5lciIsICJpc0hyZWZGaXJzdCIsICJjb250ZW50IiwgIkV4dGVybmFsTGlua05vZGVQYXJzZXIiLCAicGxhY2VGaXJzdEdvb2dsZU1hcFJlZ0V4cCIsICJjb29yZEZpcnN0R29vZ2xlTWFwUmVnRXhwIiwgInBhcnNlQ29vcmRpbmF0ZSIsICJmb3JtYXQiLCAibGF0IiwgImxuZyIsICJ6IiwgImxhdGl0dWRlIiwgImxvbmdpdHVkZSIsICJ6b29tIiwgImNyZWF0ZUdvb2dsZU1hcE5vZGUiLCAiaXNDb29yZEZpcnN0IiwgImNvb3JkIiwgInBsYWNlIiwgInVybCIsICJHb29nbGVNYXBOb2RlUGFyc2VyIiwgImludGVybmFsTGlua1JlZ0V4cCIsICJjcmVhdGVJbnRlcm5hbExpbmtOb2RlIiwgImhyZWYiLCAiSW50ZXJuYWxMaW5rTm9kZVBhcnNlciIsICJoYXNoVGFnUmVnRXhwIiwgImNyZWF0ZUhhc2hUYWdOb2RlIiwgInNwYWNlIiwgInRhZyIsICJIYXNoVGFnTm9kZVBhcnNlciIsICJudW1iZXJMaXN0UmVnRXhwIiwgImNyZWF0ZU51bWJlckxpc3ROb2RlIiwgInJhd051bWJlciIsICJudW1iZXIiLCAiTnVtYmVyTGlzdE5vZGVQYXJzZXIiLCAiRmFsc3lFbGltaW5hdG9yIiwgIl8iLCAiciIsICJjb21iaW5lTm9kZVBhcnNlcnMiLCAicGFyc2VycyIsICJhY2MiLCAicGFyc2VyIiwgImNvbnZlcnRUb1RhYmxlIiwgImJsb2NrIiwgImNvbnZlcnRUb0xpbmUiLCAiY29udmVydFRvQmxvY2siLCAicGFyc2VUb1Jvd3MiLCAiaW5wdXQiLCAibiIsICJpc0NoaWxkUm93T2ZQYWNrIiwgInBhY2tpbmciLCAicGFja3MiLCAibGFzdFBhY2siLCAicGFja1Jvd3MiLCAicm93cyIsICJ0aXRsZSIsICJwYXJzZSIsICJnZXRUaXRsZSIsICJ0IiwgInRvVGl0bGVMYyIsICJ0ZXh0IiwgInJldmVydFRpdGxlTGMiLCAiZW5jb2RlVGl0bGVVUkkiLCAidGl0bGUiLCAiY2hhciIsICJpbmRleCIsICJub0VuY29kZUNoYXJzIiwgIm5vVGFpbENoYXJzIiwgInlvdXR1YmVSZWdFeHAiLCAieW91dHViZURvdEJlUmVnRXhwIiwgInlvdXR1YmVTaG9ydFJlZ0V4cCIsICJ5b3V0dWJlTGlzdFJlZ0V4cCIsICJwYXJzZVlvdXR1YmUiLCAidXJsIiwgInBhcmFtcyIsICJ2aWRlb0lkIiwgIm1hdGNoZXMiLCAibGlzdElkIiwgImZpbmRNZXRhZGF0YSIsICJ0ZXh0IiwgImJsb2NrcyIsICJxZSIsICJibG9jayIsICJsaW5rc0xjIiwgImxpbmtzIiwgInByb2plY3RMaW5rc0xjIiwgInByb2plY3RMaW5rcyIsICJpY29uc0xjIiwgImljb25zIiwgImltYWdlIiwgImZpbGVzIiwgImhlbHBmZWVscyIsICJmaWxlVXJsUGF0dGVybiIsICJsb29rdXAiLCAibm9kZSIsICJ0b1RpdGxlTGMiLCAibGluayIsICJjdXRJZCIsICJwcm9wcyIsICJwYXJzZVlvdXR1YmUiLCAiZmlsZUlkIiwgIm4iLCAiaW5mb2JveERlZmluaXRpb24iLCAicm93IiwgIm5vZGVzIiwgImNlbGwiLCAiZ2V0SGVscGZlZWxzIiwgImxpbmVzIiwgImlzU2FtZUFycmF5IiwgImEiLCAiYiIsICJ4IiwgIm1ha2VDaGFuZ2VzIiwgImJlZm9yZSIsICJhZnRlciIsICJ1c2VySWQiLCAiYWZ0ZXJfIiwgInRleHQiLCAiY2hhbmdlIiwgImRpZmZUb0NoYW5nZXMiLCAibGVmdERlc2NyaXB0aW9ucyIsICJsaW5lIiwgInJpZ2h0RGVzY3JpcHRpb25zIiwgImxpbmtzIiwgInByb2plY3RMaW5rcyIsICJpY29ucyIsICJpbWFnZSIsICJmaWxlcyIsICJoZWxwZmVlbHMiLCAiaW5mb2JveERlZmluaXRpb24iLCAiZmluZE1ldGFkYXRhIiwgImlzU2FtZUFycmF5IiwgImdldEhlbHBmZWVscyIsICJnZXRQYWdlX3RvUmVxdWVzdCIsICJwcm9qZWN0IiwgInRpdGxlIiwgIm9wdGlvbnMiLCAic2lkIiwgImhvc3ROYW1lIiwgImZvbGxvd1JlbmFtZSIsICJwcm9qZWN0cyIsICJzZXREZWZhdWx0cyIsICJwYXJhbXMiLCAiaWQiLCAicGF0aCIsICJlbmNvZGVUaXRsZVVSSSIsICJjb29raWUiLCAiZ2V0UGFnZV9mcm9tUmVzcG9uc2UiLCAicmVzIiwgIm1ha2VFcnJvciIsICJnZXRQYWdlIiwgImZldGNoIiwgInJlcSIsICJsaXN0UGFnZXNfdG9SZXF1ZXN0IiwgInNvcnQiLCAibGltaXQiLCAic2tpcCIsICJsaXN0UGFnZXNfZnJvbVJlc3BvbnNlIiwgImxpc3RQYWdlcyIsICJwdWxsIiwgInByb2plY3QiLCAidGl0bGUiLCAicmVzdWx0IiwgImdldFBhZ2UiLCAic2xlZXAiLCAibWlsbGlzZWNvbmRzIiwgInJlc29sdmUiLCAicHVzaCIsICJwcm9qZWN0IiwgInRpdGxlIiwgIm1ha2VDb21taXQiLCAib3B0aW9ucyIsICJpbmplY3RlZFNvY2tldCIsICJzb2NrZXQiLCAic29ja2V0SU8iLCAiY29ubmVjdCIsICJwYWdlIiwgInB1bGwiLCAiZ2V0UHJvamVjdElkIiwgImdldFVzZXJJZCIsICJwYWdlXyIsICJwcm9qZWN0SWQiLCAidXNlcklkIiwgInJlcXVlc3QiLCAid3JhcCIsICJhdHRlbXB0cyIsICJjaGFuZ2VzIiwgInJlYXNvbiIsICJwZW5kaW5nIiwgImRhdGEiLCAicmVzdWx0IiwgIm5hbWUiLCAiZXJyb3IiLCAic2xlZXAiLCAiZGlzY29ubmVjdCIsICJzdWdnZXN0VW5EdXBUaXRsZSIsICJ0aXRsZSIsICJtYXRjaGVkIiwgInRpdGxlXyIsICJudW0iLCAicGF0Y2giLCAicHJvamVjdCIsICJ0aXRsZSIsICJ1cGRhdGUiLCAib3B0aW9ucyIsICJwdXNoIiwgInBhZ2UiLCAiYXR0ZW1wdHMiLCAicHJldiIsICJyZWFzb24iLCAiZmFsbGJhY2tUaXRsZSIsICJzdWdnZXN0VW5EdXBUaXRsZSIsICJjaGFuZ2UiLCAicGVuZGluZyIsICJuZXdMaW5lcyIsICJtYWtlQ2hhbmdlcyIsICJkZWxldGVQYWdlIiwgInByb2plY3QiLCAidGl0bGUiLCAib3B0aW9ucyIsICJwdXNoIiwgInBhZ2UiLCAiZ2V0VGFibGVfdG9SZXF1ZXN0IiwgInByb2plY3QiLCAidGl0bGUiLCAiZmlsZW5hbWUiLCAib3B0aW9ucyIsICJzaWQiLCAiaG9zdE5hbWUiLCAic2V0RGVmYXVsdHMiLCAicGF0aCIsICJlbmNvZGVUaXRsZVVSSSIsICJjb29raWUiLCAiZ2V0VGFibGVfZnJvbVJlc3BvbnNlIiwgInJlcyIsICJtYWtlRXJyb3IiLCAiZ2V0VGFibGUiLCAiZmV0Y2giLCAicmVxIiwgInJlcGxhY2VMaW5rcyIsICJwcm9qZWN0IiwgImZyb20iLCAidG8iLCAiaW5pdCIsICJzaWQiLCAiaG9zdE5hbWUiLCAiZmV0Y2giLCAiY3NyZiIsICJzZXREZWZhdWx0cyIsICJyZXEiLCAiZ2V0Q1NSRlRva2VuIiwgImNvb2tpZSIsICJyZXMiLCAibWFrZUVycm9yIiwgIm1lc3NhZ2UiLCAiZ2V0TGlua3MiLCAicHJvamVjdCIsICJvcHRpb25zIiwgInNpZCIsICJob3N0TmFtZSIsICJmZXRjaCIsICJmb2xsb3dpbmdJZCIsICJzZXREZWZhdWx0cyIsICJyZXEiLCAiY29va2llIiwgInJlcyIsICJtYWtlRXJyb3IiLCAic2VhcmNoRm9yUGFnZXMiLCAicXVlcnkiLCAicHJvamVjdCIsICJpbml0IiwgInNpZCIsICJob3N0TmFtZSIsICJmZXRjaCIsICJzZXREZWZhdWx0cyIsICJyZXEiLCAiY29va2llIiwgInJlcyIsICJtYWtlRXJyb3IiLCAiZ2V0V2ViUGFnZVRpdGxlIiwgInVybCIsICJpbml0IiwgInNpZCIsICJob3N0TmFtZSIsICJmZXRjaCIsICJjc3JmIiwgInNldERlZmF1bHRzIiwgInJlcSIsICJnZXRDU1JGVG9rZW4iLCAiY29va2llIiwgInJlcyIsICJtYWtlRXJyb3IiLCAidGl0bGUiLCAiZ2V0VHdlZXRJbmZvIiwgInVybCIsICJpbml0IiwgInNpZCIsICJob3N0TmFtZSIsICJmZXRjaCIsICJjc3JmIiwgInNldERlZmF1bHRzIiwgInJlcSIsICJnZXRDU1JGVG9rZW4iLCAiY29va2llIiwgInJlcyIsICJtYWtlRXJyb3IiLCAiZ2V0R3lhem9Ub2tlbiIsICJpbml0IiwgInNpZCIsICJob3N0TmFtZSIsICJneWF6b1RlYW1zTmFtZSIsICJzZXREZWZhdWx0cyIsICJyZXEiLCAiY29va2llIiwgInJlcyIsICJtYWtlRXJyb3IiLCAidG9rZW4iLCAiZ2V0Q29kZUJsb2NrX3RvUmVxdWVzdCIsICJwcm9qZWN0IiwgInRpdGxlIiwgImZpbGVuYW1lIiwgIm9wdGlvbnMiLCAic2lkIiwgImhvc3ROYW1lIiwgInNldERlZmF1bHRzIiwgInBhdGgiLCAiZW5jb2RlVGl0bGVVUkkiLCAiY29va2llIiwgImdldENvZGVCbG9ja19mcm9tUmVzcG9uc2UiLCAicmVzIiwgIm1ha2VFcnJvciIsICJnZXRDb2RlQmxvY2siLCAiZmV0Y2giLCAicmVxIiwgImhleFRhYmxlIiwgImVuY29kZSIsICJzcmMiLCAiZHN0IiwgImkiLCAidiIsICJoZXhUYWJsZSIsICJUWVBFX0VSUk9SX01TRyIsICJCTE9DS19TSVpFIiwgIk1kNSIsICIjYSIsICIjYiIsICIjYyIsICIjZCIsICIjYmxvY2siLCAiI3BvcyIsICIjbjAiLCAiI24xIiwgIiNhZGRMZW5ndGgiLCAibGVuIiwgIm4wIiwgIiNoYXNoIiwgImJsb2NrIiwgImEiLCAiYiIsICJjIiwgImQiLCAiYmxrIiwgImkiLCAicm9sMzIiLCAieCIsICJuIiwgIngwIiwgIngxIiwgIngyIiwgIngzIiwgIng0IiwgIng1IiwgIng2IiwgIng3IiwgIng4IiwgIng5IiwgInhhIiwgInhiIiwgInhjIiwgInhkIiwgInhlIiwgInhmIiwgImRhdGEiLCAibXNnIiwgInBvcyIsICJmcmVlIiwgInBhZExlbiIsICJwYWQiLCAibjEiLCAiaGFzaCIsICJoYXNoVmlldyIsICJmb3JtYXQiLCAiZW5jb2RlIiwgImRhdGFTdHJpbmciLCAidXBsb2FkVG9HQ1MiLCAiZmlsZSIsICJwcm9qZWN0SWQiLCAib3B0aW9ucyIsICJtZDUiLCAiTWQ1IiwgInJlcyIsICJ1cGxvYWRSZXF1ZXN0IiwgInJlczIiLCAidXBsb2FkIiwgInZlcmlmeSIsICJpbml0IiwgInNpZCIsICJob3N0TmFtZSIsICJmZXRjaCIsICJjc3JmIiwgInNldERlZmF1bHRzIiwgImJvZHkiLCAidG9rZW4iLCAiZ2V0Q1NSRlRva2VuIiwgInJlcSIsICJjb29raWUiLCAibWFrZUVycm9yIiwgInNpZ25lZFVybCIsICJVbmV4cGVjdGVkUmVzcG9uc2VFcnJvciIsICJmaWxlSWQiLCAic3luYyIsICJpbml0IiwgInRpdGxlIiwgImZpbGVuYW1lIiwgInJlcyIsICJnZXRDb2RlQmxvY2siLCAianNvbiIsICJwcmV2IiwgImtleXMiLCAibmV3RGF0YSIsICJrZXkiLCAiYSIsICJiIiwgIm5ld1RleHQiLCAicGF0Y2giLCAic2xpY2UiLCAib3B0aW9ucyIsICJ2bm9kZUlkIiwgImlzVmFsaWRFbGVtZW50IiwgInJlcmVuZGVyUXVldWUiLCAicHJldkRlYm91bmNlIiwgImRlZmVyIiwgImRlcHRoU29ydCIsICJldmVudENsb2NrIiwgImV2ZW50UHJveHkiLCAiZXZlbnRQcm94eUNhcHR1cmUiLCAiaSIsICJFTVBUWV9PQkoiLCAiRU1QVFlfQVJSIiwgIklTX05PTl9ESU1FTlNJT05BTCIsICJpc0FycmF5IiwgIkFycmF5IiwgImFzc2lnbiIsICJvYmoiLCAicHJvcHMiLCAicmVtb3ZlTm9kZSIsICJub2RlIiwgInBhcmVudE5vZGUiLCAicmVtb3ZlQ2hpbGQiLCAiY3JlYXRlRWxlbWVudCIsICJ0eXBlIiwgImNoaWxkcmVuIiwgImtleSIsICJyZWYiLCAibm9ybWFsaXplZFByb3BzIiwgImFyZ3VtZW50cyIsICJsZW5ndGgiLCAiY2FsbCIsICJkZWZhdWx0UHJvcHMiLCAiY3JlYXRlVk5vZGUiLCAib3JpZ2luYWwiLCAidm5vZGUiLCAiX19rIiwgIl9fIiwgIl9fYiIsICJfX2UiLCAiX19kIiwgIl9fYyIsICJjb25zdHJ1Y3RvciIsICJfX3YiLCAiX19pIiwgIl9fdSIsICJGcmFnbWVudCIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJCYXNlQ29tcG9uZW50IiwgImNvbnRleHQiLCAidGhpcyIsICJnZXREb21TaWJsaW5nIiwgInZub2RlIiwgImNoaWxkSW5kZXgiLCAiX18iLCAiX19pIiwgInNpYmxpbmciLCAiX19rIiwgImxlbmd0aCIsICJfX2UiLCAidHlwZSIsICJ1cGRhdGVQYXJlbnREb21Qb2ludGVycyIsICJpIiwgImNoaWxkIiwgIl9fYyIsICJiYXNlIiwgImVucXVldWVSZW5kZXIiLCAiYyIsICJfX2QiLCAicmVyZW5kZXJRdWV1ZSIsICJwdXNoIiwgInByb2Nlc3MiLCAiX19yIiwgInByZXZEZWJvdW5jZSIsICJvcHRpb25zIiwgImRlYm91bmNlUmVuZGVyaW5nIiwgImRlZmVyIiwgInJlbmRlclF1ZXVlTGVuZ3RoIiwgImNvbXBvbmVudCIsICJuZXdWTm9kZSIsICJvbGRWTm9kZSIsICJvbGREb20iLCAiY29tbWl0UXVldWUiLCAicmVmUXVldWUiLCAic29ydCIsICJkZXB0aFNvcnQiLCAic2hpZnQiLCAiX192IiwgIl9fUCIsICJhc3NpZ24iLCAiZGlmZiIsICJfX24iLCAibmFtZXNwYWNlVVJJIiwgIl9fdSIsICJjb21taXRSb290IiwgImRpZmZDaGlsZHJlbiIsICJwYXJlbnREb20iLCAicmVuZGVyUmVzdWx0IiwgIm5ld1BhcmVudFZOb2RlIiwgIm9sZFBhcmVudFZOb2RlIiwgImdsb2JhbENvbnRleHQiLCAibmFtZXNwYWNlIiwgImV4Y2Vzc0RvbUNoaWxkcmVuIiwgImlzSHlkcmF0aW5nIiwgImNoaWxkVk5vZGUiLCAibmV3RG9tIiwgImZpcnN0Q2hpbGREb20iLCAib2xkQ2hpbGRyZW4iLCAiRU1QVFlfQVJSIiwgIm5ld0NoaWxkcmVuTGVuZ3RoIiwgImNvbnN0cnVjdE5ld0NoaWxkcmVuQXJyYXkiLCAiRU1QVFlfT0JKIiwgInJlZiIsICJhcHBseVJlZiIsICJpbnNlcnQiLCAibmV4dFNpYmxpbmciLCAic2tld2VkSW5kZXgiLCAibWF0Y2hpbmdJbmRleCIsICJvbGRDaGlsZHJlbkxlbmd0aCIsICJyZW1haW5pbmdPbGRDaGlsZHJlbiIsICJza2V3IiwgImNvbnN0cnVjdG9yIiwgIlN0cmluZyIsICJjcmVhdGVWTm9kZSIsICJpc0FycmF5IiwgIl9fYiIsICJrZXkiLCAiZmluZE1hdGNoaW5nSW5kZXgiLCAidW5tb3VudCIsICJwYXJlbnRWTm9kZSIsICJjb250YWlucyIsICJpbnNlcnRCZWZvcmUiLCAibm9kZVR5cGUiLCAiZmluZE1hdGNoaW5nSW5kZXgiLCAiY2hpbGRWTm9kZSIsICJvbGRDaGlsZHJlbiIsICJza2V3ZWRJbmRleCIsICJyZW1haW5pbmdPbGRDaGlsZHJlbiIsICJrZXkiLCAidHlwZSIsICJ4IiwgInkiLCAib2xkVk5vZGUiLCAiX191IiwgImxlbmd0aCIsICJzZXRTdHlsZSIsICJzdHlsZSIsICJ2YWx1ZSIsICJzZXRQcm9wZXJ0eSIsICJJU19OT05fRElNRU5TSU9OQUwiLCAidGVzdCIsICJkb20iLCAibmFtZSIsICJvbGRWYWx1ZSIsICJuYW1lc3BhY2UiLCAidXNlQ2FwdHVyZSIsICJvIiwgImNzc1RleHQiLCAicmVwbGFjZSIsICJ0b0xvd2VyQ2FzZSIsICJzbGljZSIsICJsIiwgIl9hdHRhY2hlZCIsICJldmVudENsb2NrIiwgImFkZEV2ZW50TGlzdGVuZXIiLCAiZXZlbnRQcm94eUNhcHR1cmUiLCAiZXZlbnRQcm94eSIsICJyZW1vdmVFdmVudExpc3RlbmVyIiwgImUiLCAicmVtb3ZlQXR0cmlidXRlIiwgInNldEF0dHJpYnV0ZSIsICJjcmVhdGVFdmVudFByb3h5IiwgInRoaXMiLCAiZXZlbnRIYW5kbGVyIiwgIl9kaXNwYXRjaGVkIiwgIm9wdGlvbnMiLCAiZXZlbnQiLCAiZGlmZiIsICJwYXJlbnREb20iLCAibmV3Vk5vZGUiLCAiZ2xvYmFsQ29udGV4dCIsICJleGNlc3NEb21DaGlsZHJlbiIsICJjb21taXRRdWV1ZSIsICJvbGREb20iLCAiaXNIeWRyYXRpbmciLCAicmVmUXVldWUiLCAidG1wIiwgImMiLCAiaXNOZXciLCAib2xkUHJvcHMiLCAib2xkU3RhdGUiLCAic25hcHNob3QiLCAiY2xlYXJQcm9jZXNzaW5nRXhjZXB0aW9uIiwgIm5ld1Byb3BzIiwgImlzQ2xhc3NDb21wb25lbnQiLCAicHJvdmlkZXIiLCAiY29tcG9uZW50Q29udGV4dCIsICJpIiwgInJlbmRlckhvb2siLCAiY291bnQiLCAicmVuZGVyUmVzdWx0IiwgIm5ld1R5cGUiLCAiY29uc3RydWN0b3IiLCAiX19lIiwgIl9fYiIsICJvdXRlciIsICJwcm9wcyIsICJwcm90b3R5cGUiLCAicmVuZGVyIiwgImNvbnRleHRUeXBlIiwgIl9fYyIsICJfXyIsICJfX0UiLCAiQmFzZUNvbXBvbmVudCIsICJkb1JlbmRlciIsICJzdWIiLCAic3RhdGUiLCAiY29udGV4dCIsICJfX24iLCAiX19kIiwgIl9faCIsICJfc2IiLCAiX19zIiwgImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsICJhc3NpZ24iLCAiX192IiwgImNvbXBvbmVudFdpbGxNb3VudCIsICJjb21wb25lbnREaWRNb3VudCIsICJwdXNoIiwgImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCAic2hvdWxkQ29tcG9uZW50VXBkYXRlIiwgIl9fayIsICJmb3JFYWNoIiwgInZub2RlIiwgImNvbXBvbmVudFdpbGxVcGRhdGUiLCAiY29tcG9uZW50RGlkVXBkYXRlIiwgIl9fUCIsICJfX3IiLCAiZ2V0Q2hpbGRDb250ZXh0IiwgImdldFNuYXBzaG90QmVmb3JlVXBkYXRlIiwgImRpZmZDaGlsZHJlbiIsICJpc0FycmF5IiwgIkZyYWdtZW50IiwgImNoaWxkcmVuIiwgImJhc2UiLCAiTU9ERV9IWURSQVRFIiwgIm5vZGVUeXBlIiwgIm5leHRTaWJsaW5nIiwgImluZGV4T2YiLCAiZGlmZkVsZW1lbnROb2RlcyIsICJkaWZmZWQiLCAiY29tbWl0Um9vdCIsICJyb290IiwgImFwcGx5UmVmIiwgInNvbWUiLCAiY2IiLCAiY2FsbCIsICJuZXdIdG1sIiwgIm9sZEh0bWwiLCAibmV3Q2hpbGRyZW4iLCAiaW5wdXRWYWx1ZSIsICJjaGVja2VkIiwgImxvY2FsTmFtZSIsICJkb2N1bWVudCIsICJjcmVhdGVUZXh0Tm9kZSIsICJjcmVhdGVFbGVtZW50TlMiLCAiaXMiLCAiZGF0YSIsICJjaGlsZE5vZGVzIiwgIkVNUFRZX09CSiIsICJhdHRyaWJ1dGVzIiwgIl9faHRtbCIsICJpbm5lckhUTUwiLCAiZ2V0RG9tU2libGluZyIsICJyZW1vdmVOb2RlIiwgInJlZiIsICJoYXNSZWZVbm1vdW50IiwgImN1cnJlbnQiLCAidW5tb3VudCIsICJwYXJlbnRWTm9kZSIsICJza2lwUmVtb3ZlIiwgInIiLCAiY29tcG9uZW50V2lsbFVubW91bnQiLCAicmVwbGFjZU5vZGUiLCAiY3JlYXRlRWxlbWVudCIsICJuYW1lc3BhY2VVUkkiLCAiZmlyc3RDaGlsZCIsICJjcmVhdGVDb250ZXh0IiwgImRlZmF1bHRWYWx1ZSIsICJjb250ZXh0SWQiLCAiY29udGV4dCIsICJfX2MiLCAiaSIsICJfXyIsICJDb25zdW1lciIsICJwcm9wcyIsICJjb250ZXh0VmFsdWUiLCAiY2hpbGRyZW4iLCAiUHJvdmlkZXIiLCAic3VicyIsICJjdHgiLCAidGhpcyIsICJnZXRDaGlsZENvbnRleHQiLCAiY29tcG9uZW50V2lsbFVubW91bnQiLCAic2hvdWxkQ29tcG9uZW50VXBkYXRlIiwgIl9wcm9wcyIsICJ2YWx1ZSIsICJzb21lIiwgImMiLCAiX19lIiwgImVucXVldWVSZW5kZXIiLCAic3ViIiwgInB1c2giLCAib2xkIiwgInNwbGljZSIsICJpbmRleE9mIiwgImNhbGwiLCAiY29udGV4dFR5cGUiLCAic2xpY2UiLCAiRU1QVFlfQVJSIiwgIm9wdGlvbnMiLCAiZXJyb3IiLCAidm5vZGUiLCAib2xkVk5vZGUiLCAiZXJyb3JJbmZvIiwgImNvbXBvbmVudCIsICJjdG9yIiwgImhhbmRsZWQiLCAiY29uc3RydWN0b3IiLCAiZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yIiwgInNldFN0YXRlIiwgIl9fZCIsICJjb21wb25lbnREaWRDYXRjaCIsICJfX0UiLCAiZSIsICJ2bm9kZUlkIiwgImlzVmFsaWRFbGVtZW50IiwgInVuZGVmaW5lZCIsICJCYXNlQ29tcG9uZW50IiwgInByb3RvdHlwZSIsICJ1cGRhdGUiLCAiY2FsbGJhY2siLCAicyIsICJfX3MiLCAic3RhdGUiLCAiYXNzaWduIiwgIl9fdiIsICJfc2IiLCAiZm9yY2VVcGRhdGUiLCAiX19oIiwgInJlbmRlciIsICJGcmFnbWVudCIsICJyZXJlbmRlclF1ZXVlIiwgImRlZmVyIiwgIlByb21pc2UiLCAidGhlbiIsICJiaW5kIiwgInJlc29sdmUiLCAic2V0VGltZW91dCIsICJkZXB0aFNvcnQiLCAiYSIsICJiIiwgIl9fYiIsICJwcm9jZXNzIiwgIl9fciIsICJldmVudENsb2NrIiwgImV2ZW50UHJveHkiLCAiY3JlYXRlRXZlbnRQcm94eSIsICJldmVudFByb3h5Q2FwdHVyZSIsICJjdXJyZW50SW5kZXgiLCAiY3VycmVudENvbXBvbmVudCIsICJwcmV2aW91c0NvbXBvbmVudCIsICJwcmV2UmFmIiwgImN1cnJlbnRIb29rIiwgImFmdGVyUGFpbnRFZmZlY3RzIiwgIm9wdGlvbnMiLCAiX29wdGlvbnMiLCAib2xkQmVmb3JlRGlmZiIsICJfX2IiLCAib2xkQmVmb3JlUmVuZGVyIiwgIl9fciIsICJvbGRBZnRlckRpZmYiLCAiZGlmZmVkIiwgIm9sZENvbW1pdCIsICJfX2MiLCAib2xkQmVmb3JlVW5tb3VudCIsICJ1bm1vdW50IiwgIm9sZFJvb3QiLCAiX18iLCAiZ2V0SG9va1N0YXRlIiwgImluZGV4IiwgInR5cGUiLCAiX19oIiwgImhvb2tzIiwgIl9fSCIsICJsZW5ndGgiLCAicHVzaCIsICJ1c2VTdGF0ZSIsICJpbml0aWFsU3RhdGUiLCAidXNlUmVkdWNlciIsICJpbnZva2VPclJldHVybiIsICJyZWR1Y2VyIiwgImluaXQiLCAiaG9va1N0YXRlIiwgIl9yZWR1Y2VyIiwgImFjdGlvbiIsICJjdXJyZW50VmFsdWUiLCAiX19OIiwgIm5leHRWYWx1ZSIsICJzZXRTdGF0ZSIsICJfaGFzU2N1RnJvbUhvb2tzIiwgInVwZGF0ZUhvb2tTdGF0ZSIsICJwIiwgInMiLCAiYyIsICJzdGF0ZUhvb2tzIiwgImZpbHRlciIsICJ4IiwgImV2ZXJ5IiwgInByZXZTY3UiLCAiY2FsbCIsICJ0aGlzIiwgInNob3VsZFVwZGF0ZSIsICJmb3JFYWNoIiwgImhvb2tJdGVtIiwgInByb3BzIiwgInNob3VsZENvbXBvbmVudFVwZGF0ZSIsICJwcmV2Q1dVIiwgImNvbXBvbmVudFdpbGxVcGRhdGUiLCAiX19lIiwgInRtcCIsICJ1c2VFZmZlY3QiLCAiY2FsbGJhY2siLCAiYXJncyIsICJzdGF0ZSIsICJfX3MiLCAiYXJnc0NoYW5nZWQiLCAiX3BlbmRpbmdBcmdzIiwgInVzZUxheW91dEVmZmVjdCIsICJ1c2VSZWYiLCAiaW5pdGlhbFZhbHVlIiwgInVzZU1lbW8iLCAiY3VycmVudCIsICJ1c2VNZW1vIiwgImZhY3RvcnkiLCAiYXJncyIsICJzdGF0ZSIsICJnZXRIb29rU3RhdGUiLCAiY3VycmVudEluZGV4IiwgImFyZ3NDaGFuZ2VkIiwgIl9fSCIsICJfXyIsICJfX2giLCAidXNlQ2FsbGJhY2siLCAiY2FsbGJhY2siLCAiY3VycmVudEhvb2siLCAidXNlQ29udGV4dCIsICJjb250ZXh0IiwgInByb3ZpZGVyIiwgImN1cnJlbnRDb21wb25lbnQiLCAiX19jIiwgImMiLCAic3ViIiwgInByb3BzIiwgInZhbHVlIiwgImZsdXNoQWZ0ZXJQYWludEVmZmVjdHMiLCAiY29tcG9uZW50IiwgImFmdGVyUGFpbnRFZmZlY3RzIiwgInNoaWZ0IiwgIl9fUCIsICJfX0giLCAiX19oIiwgImZvckVhY2giLCAiaW52b2tlQ2xlYW51cCIsICJpbnZva2VFZmZlY3QiLCAiZSIsICJvcHRpb25zIiwgIl9fZSIsICJfX3YiLCAiX19iIiwgInZub2RlIiwgImN1cnJlbnRDb21wb25lbnQiLCAib2xkQmVmb3JlRGlmZiIsICJfXyIsICJwYXJlbnREb20iLCAiX19rIiwgIl9fbSIsICJvbGRSb290IiwgIl9fciIsICJvbGRCZWZvcmVSZW5kZXIiLCAiY3VycmVudEluZGV4IiwgImhvb2tzIiwgIl9fYyIsICJwcmV2aW91c0NvbXBvbmVudCIsICJob29rSXRlbSIsICJfX04iLCAiX3BlbmRpbmdBcmdzIiwgImRpZmZlZCIsICJvbGRBZnRlckRpZmYiLCAiYyIsICJsZW5ndGgiLCAicHVzaCIsICJwcmV2UmFmIiwgInJlcXVlc3RBbmltYXRpb25GcmFtZSIsICJhZnRlck5leHRGcmFtZSIsICJjb21taXRRdWV1ZSIsICJzb21lIiwgImZpbHRlciIsICJjYiIsICJvbGRDb21taXQiLCAidW5tb3VudCIsICJvbGRCZWZvcmVVbm1vdW50IiwgImhhc0Vycm9yZWQiLCAicyIsICJIQVNfUkFGIiwgImNhbGxiYWNrIiwgInJhZiIsICJkb25lIiwgImNsZWFyVGltZW91dCIsICJ0aW1lb3V0IiwgImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwgInNldFRpbWVvdXQiLCAiaG9vayIsICJjb21wIiwgImNsZWFudXAiLCAiYXJnc0NoYW5nZWQiLCAib2xkQXJncyIsICJuZXdBcmdzIiwgImFyZyIsICJpbmRleCIsICJpbnZva2VPclJldHVybiIsICJmIiwgImVuc3VyZUFycmF5IiwgInZhbHVlIiwgIm5hbWUiLCAiaXNMYXRlc3REYXRhIiwgImxpbmVzIiwgImdldENhY2hlZExpbmVzIiwgImVuc3VyZUhUTUxEaXZFbGVtZW50IiwgInZhbHVlIiwgIm5hbWUiLCAiZW5zdXJlSFRNTFRleHRBcmVhRWxlbWVudCIsICJ2YWx1ZSIsICJuYW1lIiwgImVkaXRvciIsICJjaGVja0RpdiIsICJsaW5lcyIsICJ0ZXh0SW5wdXQiLCAidGV4dGFyZWEiLCAiZW5zdXJlSFRNTFRleHRBcmVhRWxlbWVudCIsICJwb3B1cE1lbnUiLCAiY2hlY2tEaXYiLCAic3RhdHVzQmFyIiwgImNoZWNrRGl2IiwgImRpdiIsICJuYW1lIiwgImVuc3VyZUhUTUxEaXZFbGVtZW50IiwgInRha2VJbnRlcm5hbExpbmVzIiwgImxpbmVzRWwiLCAibGluZXMiLCAicmVhY3RLZXkiLCAia2V5IiwgImdldEluZGVudENvdW50IiwgInRleHQiLCAiZ2V0SW5kZW50TGluZUNvdW50IiwgImluZGV4IiwgImxpbmVzIiwgImJhc2UiLCAiZ2V0VGV4dCIsICJjb3VudCIsICJsaW5lIiwgImlzU3RyaW5nIiwgImdldExpbmVJZCIsICJ2YWx1ZSIsICJpc05vbmUiLCAiaXNOdW1iZXIiLCAiZ2V0QmFzZUxpbmUiLCAiaXNTdHJpbmciLCAibGluZSIsICJnZXRMaW5lTm8iLCAiaWQiLCAidGFrZUludGVybmFsTGluZXMiLCAiZ2V0QmFzZUxpbmUiLCAidmFsdWUiLCAiaXNOb25lIiwgImlzTnVtYmVyIiwgInRha2VJbnRlcm5hbExpbmVzIiwgImlkIiwgImdldExpbmVJZCIsICJsaW5lIiwgImdldExpbmVET00iLCAiaXNMaW5lRE9NIiwgImRvbSIsICJnZXRMaW5lcyIsICJsaW5lcyIsICJnZXRDYWNoZWRMaW5lcyIsICJlbnN1cmVBcnJheSIsICJnZXRUZXh0IiwgInZhbHVlIiwgImlzTm9uZSIsICJpc051bWJlciIsICJpc1N0cmluZyIsICJnZXRCYXNlTGluZSIsICJpc0xpbmVET00iLCAidGFrZUludGVybmFsTGluZXMiLCAidGV4dCIsICJjaGFycyIsICJsaW5lIiwgImRvbSIsICJnZXRDaGFycyIsICJnZXRJbmRleCIsICJnZXRIZWFkTGluZURPTSIsICJsaW5lIiwgImxpbmVzIiwgImlzTm9uZSIsICJnZXRUYWlsTGluZURPTSIsICJnZXRJbmRlbnRMaW5lQ291bnQiLCAidmFsdWUiLCAiaW5kZXgiLCAiZ2V0TGluZU5vIiwgImlzTm9uZSIsICJnZXRMaW5lcyIsICJnZXRDaGFycyIsICJjaGFycyIsICJpIiwgImlzQ2hhckRPTSIsICJkb20iLCAiZ2V0SW5kZXgiLCAiZ2V0SGVhZENoYXJET00iLCAiY2hhciIsICJnZXRDaGFyRE9NIiwgImxpbmUiLCAicG9zIiwgImNoYXIiLCAiZ2V0TGluZURPTSIsICJpc0NoYXJET00iLCAicHJlc3MiLCAia2V5IiwgInByZXNzT3B0aW9ucyIsICJub01vZGlmaWVkS2V5cyIsICJyZXN0IiwgIm9wdGlvbnMiLCAiS0VZQ09ERV9NQVAiLCAidGV4dGFyZWEiLCAidGV4dElucHV0IiwgImNsaWNrIiwgImVsZW1lbnQiLCAib3B0aW9ucyIsICJtb3VzZU9wdGlvbnMiLCAic2xlZXAiLCAiY2FyZXQiLCAidGV4dGFyZWEiLCAidGV4dElucHV0IiwgInJlYWN0S2V5IiwgImtleSIsICJpc0hlaWdodFZpZXdhYmxlIiwgImVsZW1lbnQiLCAidG9wIiwgImJvdHRvbSIsICJyYW5nZSIsICJzdGFydCIsICJlbmQiLCAiaSIsICJnb0hlYWQiLCAicHJlc3MiLCAiZ29IZWFkTGluZSIsICJ0YXJnZXQiLCAiZ2V0SGVhZExpbmVET00iLCAiaXNIZWlnaHRWaWV3YWJsZSIsICJjaGFyRE9NIiwgImdldEhlYWRDaGFyRE9NIiwgImxlZnQiLCAidG9wIiwgImNsaWNrIiwgImdvTGFzdExpbmUiLCAiX2dvTGluZSIsICJnZXRUYWlsTGluZURPTSIsICJnb0xpbmUiLCAidmFsdWUiLCAiZ2V0TGluZURPTSIsICJyaWdodCIsICJoZWlnaHQiLCAidW5kbyIsICJjb3VudCIsICJfIiwgInJhbmdlIiwgInByZXNzIiwgInJlZG8iLCAiaW5zZXJ0TGluZSIsICJsaW5lTm8iLCAidGV4dCIsICJnb0xpbmUiLCAiZ29IZWFkIiwgInByZXNzIiwgImluc2VydFRleHQiLCAicmVwbGFjZUxpbmVzIiwgInN0YXJ0IiwgImVuZCIsICJfIiwgInJhbmdlIiwgImluZGVudExpbmVzIiwgImNvdW50IiwgIl8iLCAicmFuZ2UiLCAicHJlc3MiLCAib3V0ZGVudExpbmVzIiwgInVwTGluZXMiLCAiY291bnQiLCAiXyIsICJyYW5nZSIsICJwcmVzcyIsICJkb3duTGluZXMiLCAiaW5kZW50QmxvY2tzIiwgIm91dGRlbnRCbG9ja3MiLCAidXBCbG9ja3MiLCAiY291bnQiLCAiXyIsICJyYW5nZSIsICJwcmVzcyIsICJkb3duQmxvY2tzIiwgImluc2VydFRleHQiLCAidGV4dCIsICJjdXJzb3IiLCAidGV4dElucHV0IiwgImV2ZW50IiwgInNsZWVwIiwgInVzZVN0YXR1c0JhciIsICJiYXIiLCAic3RhdHVzQmFyIiwgInN0YXR1cyIsICJpdGVtcyIsICJjaGlsZCIsICJtYWtlR3JvdXAiLCAibm9kZXMiLCAiaXRlbSIsICJtYWtlU3Bpbm5lciIsICJtYWtlQ2hlY2tDaXJjbGUiLCAibWFrZUV4Y2xhbWF0aW9uVHJpYW5nbGUiLCAibWFrZUl0ZW0iLCAiZ3JvdXAiLCAic3BhbiIsICJpIiwgInB1c2hQYWdlVHJhbnNpdGlvbiIsICJjb250ZXh0IiwgInBhZ2VUcmFuc2l0aW9uQ29udGV4dCIsICJ2YWx1ZSIsICJ0b1RpdGxlTGMiLCAib3BlbiIsICJwcm9qZWN0IiwgInRpdGxlIiwgIm9wdGlvbnMiLCAidXJsIiwgImVuY29kZVRpdGxlVVJJIiwgInB1c2hQYWdlVHJhbnNpdGlvbiIsICJhIiwgIm9wZW5JblRoZVNhbWVUYWIiLCAiYm9keSIsICJmaW5kTGF0ZXN0Q2FjaGUiLCAicmVxdWVzdCIsICJvcHRpb25zIiwgImNhY2hlTmFtZXMiLCAiZGF0ZSIsICJyZXMiLCAic2F2ZUFwaUNhY2hlIiwgInJlc3BvbnNlIiwgImdlbmVyYXRlQ2FjaGVOYW1lIiwgInRha2VTdG9yZXMiLCAidGV4dGFyZWEiLCAidGV4dElucHV0IiwgInJlYWN0S2V5IiwgImtleSIsICJzdG9yZXMiLCAiY3Vyc29yIiwgInN0b3JlIiwgInNlbGVjdGlvbiIsICJ0YWtlQ3Vyc29yIiwgInRha2VTdG9yZXMiLCAidGFrZVNlbGVjdGlvbiIsICJ0YWtlU3RvcmVzIiwgImVuY29kZSIsICJvcHRpb25zIiwgImRlY29kZSIsICJlbmNvZGVkIiwgImxpc3RlbmVyTWFwIiwgIm9uY2VMaXN0ZW5lck1hcCIsICJhZGRUZXh0SW5wdXRFdmVudExpc3RlbmVyIiwgIm5hbWUiLCAibGlzdGVuZXIiLCAib3B0aW9ucyIsICJhcmdNYXAiLCAiZW5jb2RlZE9wdGlvbnMiLCAiZW5jb2RlIiwgIm9uY2VNYXAiLCAiZW5jb2RlZCIsICJvbmNlTGlzdGVuZXIiLCAiZXZlbnQiLCAicmVtb3ZlVGV4dElucHV0RXZlbnRMaXN0ZW5lciIsICJ0ZXh0aW5wdXQiLCAidGV4dElucHV0IiwgImRlY29kZSIsICJlc2NhcGVSZWdFeHAiLCAidGV4dCIsICJDYXJkIiwgInByb2plY3QiLCAidGl0bGUiLCAid29yZHMiLCAibGluZXMiLCAicXVlcnkiLCAiY2xvc2UiLCAiaGFuZGxlQ2xpY2siLCAiTSIsICJlIiwgInB1c2hQYWdlVHJhbnNpdGlvbiIsICJoaWdobGlnaHRlZExpbmVzIiwgIlQiLCAicmVnRXhwIiwgIndvcmQiLCAiZXNjYXBlUmVnRXhwIiwgImxpbmUiLCAic2UiLCAiaSIsICJlbmNvZGVUaXRsZVVSSSIsICJ1c2VPcGVuIiwgImZsYWciLCAiaXNPcGVuIiwgInNldE9wZW4iLCAiQiIsICJvcGVuIiwgIk0iLCAiY2xvc2UiLCAidG9nZ2xlIiwgInByZXYiLCAidXNlU2VhcmNoIiwgInByb2plY3QiLCAicXVlcnkiLCAicmVzdWx0IiwgInNldEl0ZW1zIiwgIkIiLCAibG9hZGluZyIsICJzZXRMb2FkaW5nIiwgImRvbmUiLCAieiIsICJ3IiwgInRlcm1pbmF0ZSIsICJzZWFyY2hGb3JQYWdlcyIsICJDU1MiLCAic2UiLCAiU3Bpbm5lciIsICJzZSIsICJBcHAiLCAiZXhwb3J0T3BzIiwgInF1ZXJ5IiwgInNldFF1ZXJ5IiwgIkIiLCAicHJvamVjdCIsICJsb2FkaW5nIiwgInJlc3VsdCIsICJ1c2VTZWFyY2giLCAiaGFuZGxlSW5wdXQiLCAiTSIsICJlIiwgImlzT3BlbiIsICJvcGVuIiwgImNsb3NlIiwgInRvZ2dsZSIsICJ1c2VPcGVuIiwgImV4cG9ydFJlZiIsICJ6IiwgInciLCAiaGFuZGxlQ2xvc2UiLCAiTiIsICJDU1MiLCAiaXRlbSIsICJDYXJkIiwgInNldHVwIiwgImFwcCIsICJzaGFkb3dSb290IiwgInJlc29sdmUiLCAiZGUiLCAic2UiLCAiQXBwIiwgImhhcyIsICJvYmoiLCAia2V5IiwgImFsaWFzZXMiLCAiYWxpYXMiLCAia2V5TG93ZXIiLCAiZW5Vc1RyYW5zbGF0aW9ucyIsICJjb2RlVG9FblVzUXdlcnR5IiwgImNvZGUiLCAic2hpZnQiLCAic3BlY2lhbENhc2VzIiwgImlnbm9yZWQiLCAic3RyaW5naWZ5IiwgImV2ZW50IiwgIm1vZGlmaWVycyIsICJtb2RpZmllck1hcCIsICJwYXJzZSIsICJrZXlTdHJpbmciLCAibWF0Y2giLCAibW9kaWZpZXIiLCAibW9kaWZpZXJMb3dlciIsICJtb2RpZmllck5hbWUiLCAibm9ybWFsaXplIiwgInJlc3VsdCIsICJwYXJzZVNlcXVlbmNlIiwgImtleVNlcXVlbmNlIiwgImRlYnVnTW9kZSIsICJzZXREZWJ1Z01vZGUiLCAibW9kZSIsICJjcmVhdGVEZWJ1ZyIsICJmaWxlbmFtZSIsICJrZXkiLCAidmFsdWUiLCAiYXJncyIsICJhc3NlcnRpb24iLCAibGFiZWwiLCAibG9nZ2VyIiwgImNyZWF0ZURlYnVnIiwgIk1vdXNldHJhcCIsICJ0YXJnZXQiLCAib3B0aW9ucyIsICJzZXF1ZW5jZSIsICJjb21tYW5kIiwgImVycm9yTWFwIiwgInNlcXVlbmNlcyIsICJzZXEiLCAiY21kIiwgInJlc3VsdCIsICJub3JtYWxpemVTZXF1ZW5jZSIsICJlcnJvciIsICJub3JtYWxpemVkIiwgImNoYW5nZWQiLCAidmltS2V5IiwgInN0cmluZ2lmeSIsICJiZXN0TWF0Y2hDb21tYW5kIiwgImtleSIsICJzaXplIiwgImludmFsaWRTZXF1ZW5jZUVycm9yIiwgImtleXMiLCAicGFyc2VTZXF1ZW5jZSIsICJub3JtYWxpemVkU2VxdWVuY2UiLCAiZXJyb3JzIiwgIm5vcm1hbGl6ZSIsICJ2aW1lb1JlZ0V4cCIsICJwYXJzZVZpbWVvIiwgInVybCIsICJtYXRjaGVzIiwgInNwb3RpZnlSZWdFeHAiLCAicGFyc2VTcG90aWZ5IiwgInVybCIsICJtYXRjaGVzIiwgInBhdGhUeXBlIiwgInZpZGVvSWQiLCAiQW5jaG9yRk1SZWdFeHAiLCAicGFyc2VBbmNob3JGTSIsICJ1cmwiLCAibWF0Y2hlcyIsICJ2aWRlb0lkIiwgInBhcnNlQWJzb2x1dGVMaW5rIiwgImxpbmsiLCAiXyIsICJfXyIsICJjb250ZW50IiwgImhyZWYiLCAiYmFzZUxpbmsiLCAieW91dHViZSIsICJwYXJzZVlvdXR1YmUiLCAidmltZW9JZCIsICJwYXJzZVZpbWVvIiwgInNwb3RpZnkiLCAicGFyc2VTcG90aWZ5IiwgImFuY2hvckZNSWQiLCAicGFyc2VBbmNob3JGTSIsICJpc1ZpZGVvVVJMIiwgImlzQXVkaW9VUkwiLCAidXJsIiwgImdldFNlbGVjdGlvbiIsICJzZWxlY3Rpb25SYW5nZSIsICJzZWxlY3RlZFRleHQiLCAicG9zaXRpb24iLCAiY2FyZXQiLCAiY291bnQiLCAiZ2V0SW5kZW50TGluZUNvdW50IiwgImdldFRleHQiLCAibGluZSIsICJzdGFydCIsICJlbmQiLCAibGFyZ2VyIiwgInN0YXJ0TGluZSIsICJzdGFydENoYXIiLCAiZW5kTGluZSIsICJlbmRDaGFyIiwgImRlZmF1bHRIb29rIiwgInRleHQiLCAidGl0bGUiLCAicHJvamVjdFRvIiwgIm1vZGUiLCAicmF3VGl0bGUiLCAibGluZXMiLCAibmV3VGl0bGUiLCAibWluSW5kZW50TnVtIiwgImxpbmUiLCAiZ2V0SW5kZW50Q291bnQiLCAibmV3TGluZXMiLCAibWFrZU5ld1BhZ2UiLCAiaW5pdCIsICJwcm9qZWN0IiwgIm1vZGUiLCAiaG9va3MiLCAiZGVmYXVsdEhvb2siLCAic3RhcnQiLCAiZW5kIiwgInNlbGVjdGVkVGV4dCIsICJnZXRTZWxlY3Rpb24iLCAicmVzdWx0IiwgImhvb2siLCAidGFrZUludGVybmFsTGluZXMiLCAiaG9va05hbWUiLCAicHJvbWlzZSIsICJjdXQiLCAic29ja2V0IiwgInJlbmRlciIsICJkaXNwb3NlIiwgInVzZVN0YXR1c0JhciIsICJsZW5ndGgiLCAibWFrZVNvY2tldCIsICJjb3VudGVyIiwgInBhZ2UiLCAidXBkYXRlciIsICJsaW5lcyIsICJsaW5lIiwgInBhdGNoIiwgInRleHQiLCAibGluZXNfIiwgIm9wZW5JblRoZVNhbWVUYWIiLCAiZW5jb2RlVGl0bGVVUkkiLCAiZSIsICJ3YWl0aW5nIiwgInNsZWVwIiwgImRpc2Nvbm5lY3QiLCAidG9EYXRlIiwgImFyZ3VtZW50IiwgImFyZ1N0ciIsICJkZWZhdWx0T3B0aW9ucyIsICJnZXREZWZhdWx0T3B0aW9ucyIsICJzdGFydE9mV2VlayIsICJkYXRlIiwgIm9wdGlvbnMiLCAid2Vla1N0YXJ0c09uIiwgIl9kYXRlIiwgImRheSIsICJkaWZmIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAic3RhcnRPZkRheSIsICJkYXRlIiwgIl9kYXRlIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiZWFjaERheU9mSW50ZXJ2YWwiLCAiaW50ZXJ2YWwiLCAib3B0aW9ucyIsICJzdGFydERhdGUiLCAiZW5kRGF0ZSIsICJyZXZlcnNlZCIsICJlbmRUaW1lIiwgImN1cnJlbnREYXRlIiwgInN0ZXAiLCAiZGF0ZXMiLCAiaXNEYXRlIiwgInZhbHVlIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiaXNWYWxpZCIsICJkYXRlIiwgIl9kYXRlIiwgImFkZExlYWRpbmdaZXJvcyIsICJudW1iZXIiLCAidGFyZ2V0TGVuZ3RoIiwgInNpZ24iLCAib3V0cHV0IiwgImxpZ2h0Rm9ybWF0dGVycyIsICJ0b2tlbiIsICJzaWduZWRZZWFyIiwgInllYXIiLCAibW9udGgiLCAiZGF5UGVyaW9kRW51bVZhbHVlIiwgIm51bWJlck9mRGlnaXRzIiwgIm1pbGxpc2Vjb25kcyIsICJmcmFjdGlvbmFsU2Vjb25kcyIsICJmb3JtYXR0aW5nVG9rZW5zUmVnRXhwIiwgImVzY2FwZWRTdHJpbmdSZWdFeHAiLCAiZG91YmxlUXVvdGVSZWdFeHAiLCAidW5lc2NhcGVkTGF0aW5DaGFyYWN0ZXJSZWdFeHAiLCAibGlnaHRGb3JtYXQiLCAiZm9ybWF0U3RyIiwgInRva2VucyIsICJzdWJzdHJpbmciLCAiZmlyc3RDaGFyYWN0ZXIiLCAiY2xlYW5Fc2NhcGVkU3RyaW5nIiwgImZvcm1hdHRlciIsICJpbnB1dCIsICJtYXRjaGVzIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiY29uc3RydWN0RnJvbSIsICJkYXRlIiwgInZhbHVlIiwgImFkZERheXMiLCAiYW1vdW50IiwgIl9kYXRlIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiY29uc3RydWN0RnJvbSIsICJkYXRlIiwgInZhbHVlIiwgImFkZERheXMiLCAiYW1vdW50IiwgIl9kYXRlIiwgInN1YkRheXMiLCAidG9EYXRlIiwgImFyZ3VtZW50IiwgImFyZ1N0ciIsICJjb25zdHJ1Y3RGcm9tIiwgImRhdGUiLCAidmFsdWUiLCAiYWRkTWlsbGlzZWNvbmRzIiwgImFtb3VudCIsICJ0aW1lc3RhbXAiLCAiYWRkU2Vjb25kcyIsICJ0b0RhdGUiLCAiYXJndW1lbnQiLCAiYXJnU3RyIiwgImNvbnN0cnVjdEZyb20iLCAiZGF0ZSIsICJ2YWx1ZSIsICJhZGREYXlzIiwgImFtb3VudCIsICJfZGF0ZSIsICJhZGRXZWVrcyIsICJkYXlzIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiZ2V0RGF0ZSIsICJkYXRlIiwgIm1heFRpbWUiLCAibWluVGltZSIsICJtaWxsaXNlY29uZHNJbldlZWsiLCAic2Vjb25kc0luSG91ciIsICJzZWNvbmRzSW5EYXkiLCAic2Vjb25kc0luV2VlayIsICJzZWNvbmRzSW5ZZWFyIiwgInNlY29uZHNJbk1vbnRoIiwgInNlY29uZHNJblF1YXJ0ZXIiLCAidG9EYXRlIiwgImFyZ3VtZW50IiwgImFyZ1N0ciIsICJkZWZhdWx0T3B0aW9ucyIsICJnZXREZWZhdWx0T3B0aW9ucyIsICJzdGFydE9mV2VlayIsICJkYXRlIiwgIm9wdGlvbnMiLCAid2Vla1N0YXJ0c09uIiwgIl9kYXRlIiwgImRheSIsICJkaWZmIiwgImNvbnN0cnVjdEZyb20iLCAidmFsdWUiLCAiZ2V0V2Vla1llYXIiLCAieWVhciIsICJmaXJzdFdlZWtDb250YWluc0RhdGUiLCAiZmlyc3RXZWVrT2ZOZXh0WWVhciIsICJzdGFydE9mTmV4dFllYXIiLCAiZmlyc3RXZWVrT2ZUaGlzWWVhciIsICJzdGFydE9mVGhpc1llYXIiLCAic3RhcnRPZldlZWtZZWFyIiwgImZpcnN0V2VlayIsICJnZXRXZWVrIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiZ2V0TW9udGgiLCAiZGF0ZSIsICJ0b0RhdGUiLCAiYXJndW1lbnQiLCAiYXJnU3RyIiwgImdldFllYXIiLCAiZGF0ZSIsICJ0b0RhdGUiLCAiYXJndW1lbnQiLCAiYXJnU3RyIiwgInN0YXJ0T2ZEYXkiLCAiZGF0ZSIsICJfZGF0ZSIsICJpc1NhbWVEYXkiLCAiZGF0ZUxlZnQiLCAiZGF0ZVJpZ2h0IiwgImRhdGVMZWZ0U3RhcnRPZkRheSIsICJkYXRlUmlnaHRTdGFydE9mRGF5IiwgImdldEVhY2hMYXRlc3REYXRlIiwgImRhdGVzIiwgIm1hcCIsICJkYXRlIiwgImtleSIsICJyIiwgIm4iLCAic2FtZURhdGUiLCAidG9EYXRlIiwgImFyZ3VtZW50IiwgImFyZ1N0ciIsICJjb25zdHJ1Y3RGcm9tIiwgImRhdGUiLCAidmFsdWUiLCAiYWRkRGF5cyIsICJhbW91bnQiLCAiX2RhdGUiLCAiYWRkTW9udGhzIiwgImRheU9mTW9udGgiLCAiZW5kT2ZEZXNpcmVkTW9udGgiLCAiZGF5c0luTW9udGgiLCAiYWRkIiwgImR1cmF0aW9uIiwgInllYXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJkYXRlV2l0aE1vbnRocyIsICJkYXRlV2l0aERheXMiLCAibWludXRlc1RvQWRkIiwgIm1zVG9BZGQiLCAidG9EYXRlIiwgImFyZ3VtZW50IiwgImFyZ1N0ciIsICJjb25zdHJ1Y3RGcm9tIiwgImRhdGUiLCAidmFsdWUiLCAiYWRkTWlsbGlzZWNvbmRzIiwgImFtb3VudCIsICJ0aW1lc3RhbXAiLCAibWF4VGltZSIsICJtaW5UaW1lIiwgIm1pbGxpc2Vjb25kc0luSG91ciIsICJzZWNvbmRzSW5Ib3VyIiwgInNlY29uZHNJbkRheSIsICJzZWNvbmRzSW5XZWVrIiwgInNlY29uZHNJblllYXIiLCAic2Vjb25kc0luTW9udGgiLCAic2Vjb25kc0luUXVhcnRlciIsICJhZGRIb3VycyIsICJ0b0RhdGUiLCAiYXJndW1lbnQiLCAiYXJnU3RyIiwgImNvbnN0cnVjdEZyb20iLCAiZGF0ZSIsICJ2YWx1ZSIsICJhZGRNaWxsaXNlY29uZHMiLCAiYW1vdW50IiwgInRpbWVzdGFtcCIsICJtYXhUaW1lIiwgIm1pblRpbWUiLCAibWlsbGlzZWNvbmRzSW5NaW51dGUiLCAic2Vjb25kc0luSG91ciIsICJzZWNvbmRzSW5EYXkiLCAic2Vjb25kc0luV2VlayIsICJzZWNvbmRzSW5ZZWFyIiwgInNlY29uZHNJbk1vbnRoIiwgInNlY29uZHNJblF1YXJ0ZXIiLCAiYWRkTWludXRlcyIsICJ0b0RhdGUiLCAiYXJndW1lbnQiLCAiYXJnU3RyIiwgImNvbXBhcmVBc2MiLCAiZGF0ZUxlZnQiLCAiZGF0ZVJpZ2h0IiwgIl9kYXRlTGVmdCIsICJfZGF0ZVJpZ2h0IiwgImRpZmYiLCAibWF4VGltZSIsICJtaW5UaW1lIiwgIm1pbGxpc2Vjb25kc0luRGF5IiwgInNlY29uZHNJbkhvdXIiLCAic2Vjb25kc0luRGF5IiwgInNlY29uZHNJbldlZWsiLCAic2Vjb25kc0luWWVhciIsICJzZWNvbmRzSW5Nb250aCIsICJzZWNvbmRzSW5RdWFydGVyIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAic3RhcnRPZkRheSIsICJkYXRlIiwgIl9kYXRlIiwgImdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMiLCAidXRjRGF0ZSIsICJkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMiLCAiZGF0ZUxlZnQiLCAiZGF0ZVJpZ2h0IiwgInN0YXJ0T2ZEYXlMZWZ0IiwgInN0YXJ0T2ZEYXlSaWdodCIsICJ0aW1lc3RhbXBMZWZ0IiwgInRpbWVzdGFtcFJpZ2h0IiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMiLCAiZGF0ZUxlZnQiLCAiZGF0ZVJpZ2h0IiwgIl9kYXRlTGVmdCIsICJfZGF0ZVJpZ2h0IiwgInllYXJEaWZmIiwgIm1vbnRoRGlmZiIsICJnZXRSb3VuZGluZ01ldGhvZCIsICJtZXRob2QiLCAibnVtYmVyIiwgInJlc3VsdCIsICJtYXhUaW1lIiwgIm1pblRpbWUiLCAibWlsbGlzZWNvbmRzSW5NaW51dGUiLCAic2Vjb25kc0luSG91ciIsICJzZWNvbmRzSW5EYXkiLCAic2Vjb25kc0luV2VlayIsICJzZWNvbmRzSW5ZZWFyIiwgInNlY29uZHNJbk1vbnRoIiwgInNlY29uZHNJblF1YXJ0ZXIiLCAidG9EYXRlIiwgImFyZ3VtZW50IiwgImFyZ1N0ciIsICJkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMiLCAiZGF0ZUxlZnQiLCAiZGF0ZVJpZ2h0IiwgImRpZmZlcmVuY2VJbk1pbnV0ZXMiLCAib3B0aW9ucyIsICJkaWZmIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiY29uc3RydWN0RnJvbSIsICJkYXRlIiwgInZhbHVlIiwgImFkZERheXMiLCAiYW1vdW50IiwgIl9kYXRlIiwgImFkZFdlZWtzIiwgImRheXMiLCAiZGVmYXVsdE9wdGlvbnMiLCAiZ2V0RGVmYXVsdE9wdGlvbnMiLCAic3RhcnRPZldlZWsiLCAib3B0aW9ucyIsICJ3ZWVrU3RhcnRzT24iLCAiZGF5IiwgImRpZmYiLCAiZWFjaFdlZWtPZkludGVydmFsIiwgImludGVydmFsIiwgInN0YXJ0RGF0ZSIsICJlbmREYXRlIiwgInJldmVyc2VkIiwgInN0YXJ0RGF0ZVdlZWsiLCAiZW5kRGF0ZVdlZWsiLCAiZW5kVGltZSIsICJjdXJyZW50RGF0ZSIsICJzdGVwIiwgImRhdGVzIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiZW5kT2ZEYXkiLCAiZGF0ZSIsICJfZGF0ZSIsICJ0b0RhdGUiLCAiYXJndW1lbnQiLCAiYXJnU3RyIiwgImdldEhvdXJzIiwgImRhdGUiLCAidG9EYXRlIiwgImFyZ3VtZW50IiwgImFyZ1N0ciIsICJnZXRNaW51dGVzIiwgImRhdGUiLCAiY29uc3RydWN0RnJvbSIsICJkYXRlIiwgInZhbHVlIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiZGVmYXVsdE9wdGlvbnMiLCAiZ2V0RGVmYXVsdE9wdGlvbnMiLCAic3RhcnRPZldlZWsiLCAib3B0aW9ucyIsICJ3ZWVrU3RhcnRzT24iLCAiX2RhdGUiLCAiZGF5IiwgImRpZmYiLCAiZ2V0V2Vla1llYXIiLCAieWVhciIsICJmaXJzdFdlZWtDb250YWluc0RhdGUiLCAiZmlyc3RXZWVrT2ZOZXh0WWVhciIsICJzdGFydE9mTmV4dFllYXIiLCAiZmlyc3RXZWVrT2ZUaGlzWWVhciIsICJzdGFydE9mVGhpc1llYXIiLCAibWF4VGltZSIsICJtaW5UaW1lIiwgInNlY29uZHNJbkhvdXIiLCAic2Vjb25kc0luRGF5IiwgInNlY29uZHNJbldlZWsiLCAic2Vjb25kc0luWWVhciIsICJzZWNvbmRzSW5Nb250aCIsICJzZWNvbmRzSW5RdWFydGVyIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiaXNBZnRlciIsICJkYXRlIiwgImRhdGVUb0NvbXBhcmUiLCAiX2RhdGUiLCAiX2RhdGVUb0NvbXBhcmUiLCAiaXNEYXRlIiwgInZhbHVlIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiaXNWYWxpZCIsICJkYXRlIiwgIl9kYXRlIiwgImNvbnN0cnVjdEZyb20iLCAiZGF0ZSIsICJ2YWx1ZSIsICJ0b0RhdGUiLCAiYXJndW1lbnQiLCAiYXJnU3RyIiwgImdldERheXNJbk1vbnRoIiwgIl9kYXRlIiwgInllYXIiLCAibW9udGhJbmRleCIsICJsYXN0RGF5T2ZNb250aCIsICJzZXRNb250aCIsICJtb250aCIsICJkYXkiLCAiZGF0ZVdpdGhEZXNpcmVkTW9udGgiLCAiZGF5c0luTW9udGgiLCAic2V0IiwgInZhbHVlcyIsICJtYXhUaW1lIiwgIm1pblRpbWUiLCAibWlsbGlzZWNvbmRzSW5XZWVrIiwgInNlY29uZHNJbkhvdXIiLCAic2Vjb25kc0luRGF5IiwgInNlY29uZHNJbldlZWsiLCAic2Vjb25kc0luWWVhciIsICJzZWNvbmRzSW5Nb250aCIsICJzZWNvbmRzSW5RdWFydGVyIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiZGVmYXVsdE9wdGlvbnMiLCAiZ2V0RGVmYXVsdE9wdGlvbnMiLCAic3RhcnRPZldlZWsiLCAiZGF0ZSIsICJvcHRpb25zIiwgIndlZWtTdGFydHNPbiIsICJfZGF0ZSIsICJkYXkiLCAiZGlmZiIsICJjb25zdHJ1Y3RGcm9tIiwgInZhbHVlIiwgImdldFdlZWtZZWFyIiwgInllYXIiLCAiZmlyc3RXZWVrQ29udGFpbnNEYXRlIiwgImZpcnN0V2Vla09mTmV4dFllYXIiLCAic3RhcnRPZk5leHRZZWFyIiwgImZpcnN0V2Vla09mVGhpc1llYXIiLCAic3RhcnRPZlRoaXNZZWFyIiwgInN0YXJ0T2ZXZWVrWWVhciIsICJmaXJzdFdlZWsiLCAiZ2V0V2VlayIsICJzZXRXZWVrIiwgIndlZWsiLCAibWF4VGltZSIsICJtaW5UaW1lIiwgInNlY29uZHNJbkhvdXIiLCAic2Vjb25kc0luRGF5IiwgInNlY29uZHNJbldlZWsiLCAic2Vjb25kc0luWWVhciIsICJzZWNvbmRzSW5Nb250aCIsICJzZWNvbmRzSW5RdWFydGVyIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiY29uc3RydWN0RnJvbSIsICJkYXRlIiwgInZhbHVlIiwgImFkZERheXMiLCAiYW1vdW50IiwgIl9kYXRlIiwgImFkZFdlZWtzIiwgImRheXMiLCAic3ViV2Vla3MiLCAiaXNOb25lIiwgInZhbHVlIiwgImlzU3RyaW5nIiwgIm9uZUJ5T25lIiwgInByb21pc2VzIiwgInF1ZXVlIiwgInJlc29sdmUiLCAicHVzaCIsICJpdGVtIiwgInBvcCIsICJyZXMiLCAiY291bnQiLCAicHJvbWlzZSIsICJyZWFzb24iLCAiaSIsICJwYXJzZVRhc2siLCAidGV4dCIsICJtYXRjaGVkIiwgInllYXIiLCAibW9udGgiLCAiZGF0ZSIsICJwaG91cnMiLCAicG1pbnV0ZXMiLCAiZHVyYXRpb24iLCAic2hvdXJzIiwgInNtaW51dGVzIiwgInNzZWNvbmRzIiwgImVob3VycyIsICJlbWludXRlcyIsICJlc2Vjb25kcyIsICJ0aXRsZSIsICJ0YXNrIiwgInN0YXJ0IiwgImVuZCIsICJuIiwgInN0YXJ0RGF0ZSIsICJ0YXNrIiwgImVuZERhdGUiLCAiaXNOb25lIiwgImkiLCAidG9TdHJpbmciLCAidGl0bGUiLCAiYmFzZSIsICJwbGFuIiwgInJlY29yZCIsICJ4IiwgInBhcnNlQmxvY2siLCAibGluZXMiLCAiZGF0YSIsICJwYXJzZUxpbmVzIiwgImlzU3RyaW5nIiwgImkiLCAibGluZV8iLCAibGluZSIsICJjb3VudCIsICJnZXRJbmRlbnRMaW5lQ291bnQiLCAidGFzayIsICJwYXJzZVRhc2siLCAiaW50ZXJ2YWwiLCAiYWRkVGFzayIsICJsaW5lUG9zIiwgImNhcmV0IiwgInRhc2tMaW5lIiwgInBhcnNlVGFzayIsICJnZXRUZXh0IiwgImJhc2UiLCAicGxhbiIsICJpIiwgImluc2VydExpbmUiLCAidG9TdHJpbmciLCAic3RhcnRUYXNrIiwgImxpbmVQb3MiLCAiY2FyZXQiLCAidGFza0xpbmUiLCAicGFyc2VUYXNrIiwgImdldFRleHQiLCAic3RhcnQiLCAiZW5kIiwgInJlc3QiLCAicmVwbGFjZUxpbmVzIiwgInRvU3RyaW5nIiwgImVuZFRhc2siLCAibGluZVBvcyIsICJjYXJldCIsICJ0YXNrTGluZSIsICJwYXJzZVRhc2siLCAiZ2V0VGV4dCIsICJzdGFydCIsICJlbmQiLCAicmVzdCIsICJyZXBsYWNlTGluZXMiLCAidG9TdHJpbmciLCAicG9zdGVyaW9yaUVuZFRhc2siLCAibGluZVBvcyIsICJjYXJldCIsICJ0YXNrTGluZSIsICJwYXJzZVRhc2siLCAiZ2V0VGV4dCIsICJzdGFydCIsICJlbmQiLCAicmVzdCIsICJlbmRUYXNrIiwgInByZXZFbmQiLCAidGV4dCIsICJnZXRMaW5lcyIsICJyZWNvcmQiLCAibm93IiwgInJlcGxhY2VMaW5lcyIsICJ0b1N0cmluZyIsICJnZXRMaW5lUmFuZ2UiLCAic3RhcnQiLCAiZW5kIiwgInNlbGVjdGVkVGV4dCIsICJwb3NpdGlvbiIsICJjYXJldCIsICJjYWxjU3RhcnQiLCAiaGFwcGVuIiwgImR1cmF0aW9uIiwgInBhcnNlU3BlY2lmaWVyIiwgInRleHQiLCAiYmFzZSIsICJkdXJhdGlvbiIsICJuYW1lIiwgInBhcmFtIiwgInR5cGUiLCAicGFydHMiLCAidGVzdCIsICJwYXJzZSIsICJwYXJzZXJzIiwgIm1hdGNoZXMiLCAiZGF0YSIsICJkYXRlIiwgIk4iLCAicCIsICJjYWxjU3RhcnQiLCAibWF0Y2giLCAiY3JlYXRlVGFzayIsICJiYXNlIiwgInN0YXJ0IiwgImVuZCIsICJnZXRMaW5lUmFuZ2UiLCAibGluZXMiLCAiZ2V0TGluZXMiLCAibGluZSIsICJ0ZXh0IiwgIm5hbWUiLCAiZHVyYXRpb24iLCAicGFyc2VTcGVjaWZpZXIiLCAidG9TdHJpbmciLCAicmVwbGFjZUxpbmVzIiwgIm1vZGlmeVRhc2tzIiwgInN0YXJ0IiwgImVuZCIsICJjaGFuZ2UiLCAibGluZXMiLCAiaSIsICJ0ZXh0IiwgImdldFRleHQiLCAidGFzayIsICJwYXJzZVRhc2siLCAidG9TdHJpbmciLCAicmVwbGFjZUxpbmVzIiwgIndhbGtEYXkiLCAiY291bnQiLCAic3RhcnQiLCAiZW5kIiwgImdldExpbmVSYW5nZSIsICJtb2RpZnlUYXNrcyIsICJ0YXNrIiwgImMiLCAibW92ZVRvZGF5IiwgInN0YXJ0IiwgImVuZCIsICJnZXRMaW5lUmFuZ2UiLCAibm93IiwgIm1vZGlmeVRhc2tzIiwgInRhc2siLCAibiIsICJiYXNlVGl0bGUiLCAiZGlhcnlSZWdFeHAiLCAic2VjdGlvbnMiLCAidG9EYXRlIiwgInRpdGxlIiwgIm1hdGNoZWQiLCAiZGlhcnlSZWdFeHAiLCAieWVhciIsICJtb250aCIsICJkYXRlIiwgImQiLCAibiIsICJ0b1RpdGxlIiwgIngiLCAiYmFzZVRpdGxlIiwgImZvcm1hdCIsICJsaW5lcyIsICJ0b2RheSIsICJsYWJlbCIsICJtYWtlQmFja0xhYmVsIiwgInRhc2tCbG9ja3MiLCAib3RoZXJMaW5lcyIsICJpdGVtIiwgInBhcnNlTGluZXMiLCAic2VjdGlvbnMiLCAic29ydGVkVGFza0Jsb2NrcyIsICJhIiwgImIiLCAiZiIsICJzdGFydERhdGUiLCAiaW5zZXJ0UG9pbnQiLCAiaSIsICJzdGFydCIsICJ1IiwgImxvd2VyVGFza0luZGV4IiwgInRhc2siLCAicyIsICJlIiwgImVuZERhdGUiLCAiYmxvY2siLCAiaiIsICJrIiwgInRvU3RyaW5nIiwgImZvcm1hdCIsICJwcm9qZWN0IiwgInRpdGxlIiwgInJlbW92ZSIsICJ0aW1lciIsICJyZW5kZXIiLCAiZGlzcG9zZSIsICJ1c2VTdGF0dXNCYXIiLCAicGF0Y2giLCAibGluZXMiLCAibGluZSIsICJwdXNoVGFza3MiLCAicHJvamVjdCIsICJ0YXNrcyIsICJpbml0IiwgInN0YWNrcyIsICJwcm9taXNlcyIsICJ0YXNrIiwgImRhdGUiLCAidGFza3NfIiwgImkiLCAibiIsICJwYXRjaCIsICJ0b1RpdGxlIiwgImxpbmVzIiwgImZvcm1hdCIsICJsaW5lIiwgInRvU3RyaW5nIiwgIm9uZUJ5T25lIiwgInRyYW5zcG9ydCIsICJwcm9qZWN0IiwgInRpdGxlIiwgInRvIiwgInJlc3VsdCIsICJnZXRQYWdlIiwgImRhdGUiLCAidG9EYXRlIiwgImxpbmVzIiwgInRhc2tzIiwgInRhc2siLCAicGFyc2VCbG9jayIsICJuIiwgInJlbmRlciIsICJkaXNwb3NlIiwgInVzZVN0YXR1c0JhciIsICJzb2NrZXQiLCAibWFrZVNvY2tldCIsICJjb3VudCIsICJmYWlsZWQiLCAicHVzaFRhc2tzIiwgInBhdGNoIiwgIm5ld0xpbmVzIiwgImxpbmUiLCAicGFyc2VMaW5lcyIsICJpc1N0cmluZyIsICJ0b1N0cmluZyIsICJkaXNjb25uZWN0IiwgInNsZWVwIiwgInplcm8iLCAibiIsICJpc0xvY2FsRGF0ZVRpbWUiLCAiZGF0ZSIsICJpc0JlZm9yZSIsICJmaXJzdCIsICJzZWNvbmQiLCAiZm9ybWF0IiwgInplcm8iLCAidG9EYXRlIiwgInN0ciIsICJmcm9tRGF0ZSIsICJ0b0ZyZXF1ZW5jeSIsICJzeW1ib2wiLCAidG9TdGF0dXMiLCAic3ltYm9sIiwgImZyb21TdGF0dXMiLCAic3RhdHVzIiwgInBhcnNlIiwgInRleHQiLCAibWF0Y2hlZCIsICJtYXRjaGVkVGV4dCIsICJzdGF0dXNTeW0iLCAic3BlZWRTdHIiLCAic3llYXIiLCAic21vbnRoIiwgInNkYXRlIiwgInNob3VycyIsICJzbWludXRlcyIsICJlaG91cnMyIiwgImVtaW51dGVzMiIsICJleWVhciIsICJlbW9udGgiLCAiZWRhdGUiLCAiZWhvdXJzIiwgImVtaW51dGVzIiwgImR1cmF0aW9uU3RyIiwgInN5bWJvbCIsICJjb3VudFN0ciIsICJzc2hvdXJzMiIsICJzc21pbnV0ZXMyIiwgInNzeWVhciIsICJzc21vbnRoIiwgInNzZGF0ZSIsICJzc2hvdXJzIiwgInNzbWludXRlcyIsICJlZWhvdXJzMiIsICJlZW1pbnV0ZXMyIiwgImVleWVhciIsICJlZW1vbnRoIiwgImVlZGF0ZSIsICJlZWhvdXJzIiwgImVlbWludXRlcyIsICJkdXJhdGlvblN0cjIiLCAibmFtZSIsICJyZWZEYXRlIiwgImZpeFN0YXJ0IiwgIm4iLCAidG9EYXRlIiwgImZvcm1hdCIsICJlc3RpbWF0ZWQiLCAiZml4RW5kIiwgImlzTnVtYmVyIiwgImlzQmVmb3JlIiwgImZyb21EYXRlIiwgInUiLCAic3RhdHVzIiwgInRvU3RhdHVzIiwgImZyZXNobmVzcyIsICJzdGFydCIsICJkdXJhdGlvbiIsICJleGVjdXRlZCIsICJpc0xvY2FsRGF0ZVRpbWUiLCAiZXZlbnQiLCAidG9GcmVxdWVuY3kiLCAidGFzayIsICJpc1JlbWluZGVyIiwgImlzUmVjdXJyZW5jZSIsICJpc0FsbERheSIsICJnZXREdXJhdGlvbiIsICJnZXRTdGFydCIsICJnZXRFbmQiLCAiZW5kIiwgImMiLCAidG9TdHJpbmciLCAiZnJvbVN0YXR1cyIsICJiYXNlIiwgIm1ha2VSZXBlYXQiLCAiZGF0ZSIsICJsb2NhbERhdGUiLCAicmVjdXJyZW5jZSIsICJpIiwgImludGVydmFsIiwgIm0iLCAiZ2VuZXJhdGVkIiwgImdldExpbmtUaXRsZSIsICJ5ZWFyIiwgIm1vbnRoIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAiYmFzZVN0YXJ0IiwgInRvVGFza0xpbmUiLCAidGFzayIsICJkYXRlIiwgImlzUmVjdXJyZW5jZSIsICJnZW5lcmF0ZWQiLCAibWFrZVJlcGVhdCIsICJzdGFydCIsICJ0b0RhdGUiLCAiaXNSZW1pbmRlciIsICJkdXJhdGlvbk1pbiIsICJnZXREdXJhdGlvbiIsICJ0aXRsZSIsICJnZXRMaW5rVGl0bGUiLCAiaXNBbGxEYXkiLCAiZm9vZFR5cGUiLCAidGFza0xpbmVIb29rIiwgInRleHQiLCAidGl0bGUiLCAicHJvamVjdFRvIiwgIm1vZGUiLCAidGFza0xpbmUiLCAibGluZXMiLCAicGFyc2VkIiwgInBhcnNlVGFzayIsICJ0YXNrTmFtZSIsICJiYXNlIiwgInJlY29yZCIsICJyZXN0IiwgIm5ld1RpdGxlIiwgIm1ha2VUYXNrVGl0bGUiLCAibmV3VGFza0xpbmUiLCAidG9TdHJpbmciLCAibWluSW5kZW50TnVtIiwgImxpbmUiLCAiZ2V0SW5kZW50Q291bnQiLCAibmV3TGluZXMiLCAibWFrZVVwZGF0ZXIiLCAiZGF0ZSIsICJ4IiwgInBhcnNlIiwgImZpcnN0IiwgIm5ld1BhZ2VIb29rIiwgInRpdGxlRnJvbSIsICJtZXRhTGluZXMiLCAicmF3VGl0bGUiLCAiZGF0ZXMiLCAiZ2V0RWFjaExhdGVzdERhdGUiLCAidXBkYXRlZCIsICJhIiwgImIiLCAic3BsaXR0ZWRMaW5rSG9vayIsICJpbmRlbnQiLCAic3RyIiwgImxpbmtzTGNJblRleHQiLCAibWF0Y2giLCAidG9UaXRsZUxjIiwgInByZXYiLCAibGlua3MiLCAibGlua3NMYyIsICJsaW5rIiwgImxpbmtMYyIsICJmcm9tTGluZSIsICJkYXRlVGFncyIsICJ5eXl5TU1kZCIsICJISG1tc3MiLCAicHJldkxpbmVzIiwgImluZGV4IiwgImluc2VydEJlZm9yZSIsICJwZCIsICJlIiwgInNwIiwgInRhc2tDb21tb24iLCAic3RhcnQiLCAiZW5kIiwgImdldExpbmVSYW5nZSIsICJ0ZXh0IiwgImdldExpbmVzIiwgImxpbmUiLCAibGluayIsICJyZXN1bHQiLCAicGFyc2UiLCAidGFzayIsICJ0YXNrTGluZSIsICJ0b1Rhc2tMaW5lIiwgInRvU3RyaW5nIiwgInJlcGxhY2VMaW5lcyIsICJjcmVhdGVUYXNrIiwgInRyYW5zcG9ydCIsICJzZWxlY3RlZFRleHQiLCAicG9zaXRpb24iLCAiY2FyZXQiLCAicGQiLCAiZSIsICJzcCIsICJ0YXNrIiwgImFkZFRhc2siLCAic3RhcnRUYXNrIiwgImVuZFRhc2siLCAicG9zdGVyaW9yaUVuZFRhc2siLCAid2Fsa0RheSIsICJtb3ZlVG9kYXkiLCAiZm9ybWF0IiwgInBkIiwgImUiLCAic3AiLCAiY2xpY2tQb3B1cCIsICJidXR0b25OYW1lIiwgImJ1dHRvbnMiLCAicG9wdXBNZW51IiwgImJ1dHRvbiIsICJwb3B1cCIsICJuYXZpZ2F0aW9uIiwgImxpbmUiLCAiY2hhciIsICJjYXJldCIsICJhIiwgImdldENoYXJET00iLCAiZ2V0TGluZURPTSIsICJtb3Rpb24iLCAiZ29IZWFkTGluZSIsICJnb0xhc3RMaW5lIiwgImhvb2tzIiwgInRhc2tMaW5lSG9vayIsICJuZXdQYWdlSG9vayIsICJzcGxpdHRlZExpbmtIb29rIiwgImVkaXQiLCAicHJvamVjdCIsICJtYWtlTmV3UGFnZSIsICJvdXRkZW50TGluZXMiLCAiZG93bkxpbmVzIiwgInVwTGluZXMiLCAiaW5kZW50TGluZXMiLCAib3V0ZGVudEJsb2NrcyIsICJkb3duQmxvY2tzIiwgInVwQmxvY2tzIiwgImluZGVudEJsb2NrcyIsICJ0aW1lc3RhbXAiLCAiaW5zZXJ0VGV4dCIsICJ4IiwgImNvbmZpZyIsICJ0YXNrQ29tbW9uIiwgInJlbmRlciIsICJ1c2VTdGF0dXNCYXIiLCAiYW5pbWF0aW9uSWQiLCAib25TZXF1ZW5jZVVwZGF0ZSIsICJ0ZXh0IiwgInNjcmFwQmluZGluZ3MiLCAiTW91c2V0cmFwIiwgImFkZFRleHRJbnB1dEV2ZW50TGlzdGVuZXIiLCAicmVtb3ZlVGV4dElucHV0RXZlbnRMaXN0ZW5lciIsICJlcnJvcnMiLCAiY29uZmlnIiwgInRhc2siLCAic2VxIiwgIm1lc3NhZ2VzIiwgIm1lc3NhZ2UiLCAiZ2V0V2F0Y2hMaXN0IiwgInZhbHVlIiwgImxpc3QiLCAiaWRzIiwgImEiLCAiYiIsICJwcm9qZWN0SWQiLCAicmVzdWx0IiwgImxpc3RQcm9qZWN0cyIsICJqb2luZWRJZHMiLCAicHJvamVjdCIsICJpZCIsICJrYXRleCIsICJkZWZhdWx0VmVyc2lvbiIsICJpbml0aWFsaXplZCIsICJpbXBvcnRLYVRlWCIsICJ2ZXJzaW9uIiwgInVybCIsICJyZXNvbHZlIiwgInRpbWVyIiwgInNjcmlwdCIsICJyZWplY3QiLCAiZSIsICJ1c2VLYVRlWCIsICJfZm9ybXVsYSIsICJvcHRpb25zIiwgInJlZiIsICJ6IiwgImZvcm11bGEiLCAic2V0Rm9ybXVsYSIsICJCIiwgImVycm9yIiwgInNldEVycm9yIiwgInciLCAicmVuZGVyIiwgImltcG9ydEthVGVYIiwgImUiLCAibWFrZVRocm90dGxlIiwgIm1heCIsICJxdWV1ZSIsICJwZW5kaW5ncyIsICJydW5OZXh0IiwgInByZXYiLCAidGFzayIsICJwcm9taXNlIiwgInJlc3VsdCIsICJlcnJvciIsICJqb2IiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAiY2FjaGVWZXJzaW9uIiwgImNhY2hlTmFtZSIsICJjYWNoZSIsICJuYW1lIiwgInRocm90dGxlIiwgIm1ha2VUaHJvdHRsZSIsICJjYWNoZUZpcnN0RmV0Y2giLCAicmVxIiwgIm9wdGlvbnMiLCAiY2FjaGVQcm9taXNlIiwgImZpbmRMYXRlc3RDYWNoZSIsICJyZXMiLCAidGltZXIiLCAic2xlZXAiLCAiZmlyc3QiLCAibmV0d29ya1Byb21pc2UiLCAidHlwZSIsICJpc0V4cGlyZWQiLCAicmVzcG9uc2UiLCAibWF4QWdlIiwgIm1ha2VFbWl0dGVyIiwgImxpc3RlbmVyc01hcCIsICJldmVudE5hbWUiLCAidmFsdWUiLCAibGlzdGVuZXJzIiwgImxpc3RlbmVyIiwgImRlYnVnTW9kZSIsICJzZXREZWJ1Z01vZGUiLCAibW9kZSIsICJjcmVhdGVEZWJ1ZyIsICJmaWxlbmFtZSIsICJrZXkiLCAidmFsdWUiLCAiYXJncyIsICJhc3NlcnRpb24iLCAibGFiZWwiLCAiZW1pdHRlciIsICJtYWtlRW1pdHRlciIsICJwcm9qZWN0TWFwIiwgImxvZ2dlciIsICJjcmVhdGVEZWJ1ZyIsICJ1c2VQcm9qZWN0IiwgInByb2plY3QiLCAicHJvamVjdFJlc3VsdCIsICJzZXRQcm9qZWN0UmVzdWx0IiwgIkIiLCAidyIsICJzdGF0ZSIsICJyZXEiLCAiZ2V0UHJvamVjdCIsICJyZXMiLCAiY2FjaGVGaXJzdEZldGNoIiwgInJlc3VsdCIsICJlIiwgImRlZmF1bHRzIiwgInBhcGVycyIsICJzdGF0aW9uYXJpZXMiLCAiaGFja2VycyIsICJzZWFzb25zIiwgInRyb3BpY2FscyIsICJjaXRpZXMiLCAiZ2FtZXMiLCAibGlnaHRUaGVtZXMiLCAidGhlbWVzIiwgImRlZmF1bHRzIiwgInBhcGVycyIsICJzdGF0aW9uYXJpZXMiLCAiaGFja2VycyIsICJzZWFzb25zIiwgInRyb3BpY2FscyIsICJjaXRpZXMiLCAiZ2FtZXMiLCAiaXNUaGVtZSIsICJ0aGVtZSIsICJkZWZhdWx0VGhlbWUiLCAidXNlVGhlbWUiLCAicHJvamVjdCIsICJyZXMiLCAidXNlUHJvamVjdCIsICJUIiwgInRoZW1lIiwgImlzVGhlbWUiLCAic3RheUhvdmVyaW5nIiwgImVsZW1lbnQiLCAiaW50ZXJ2YWwiLCAicmVzb2x2ZSIsICJjYW5jZWxlZCIsICJoYW5kbGVDYW5jZWwiLCAiY2FsY0J1YmJsZVBvc2l0aW9uIiwgInRhcmdldCIsICJ0b3AiLCAicmlnaHQiLCAibGVmdCIsICJib3R0b20iLCAicm9vdCIsICJhZGp1c3RSaWdodCIsICJDYXJkIiwgInByb2plY3QiLCAidGl0bGUiLCAiZGVzY3JpcHRpb25zIiwgInRodW1ibmFpbCIsICJsaW5rVG8iLCAiYnViYmxlIiwgImRlbGF5IiwgInByZWZldGNoIiwgImJsb2NrcyIsICJUIiwgInFlIiwgInRoZW1lIiwgInVzZVRoZW1lIiwgImhhbmRsZUVudGVyIiwgIk0iLCAiYSIsICJzdGF5SG92ZXJpbmciLCAiY2FsY0J1YmJsZVBvc2l0aW9uIiwgImhhbmRsZUNsaWNrIiwgInB1c2hQYWdlVHJhbnNpdGlvbiIsICJzZSIsICJlbmNvZGVUaXRsZVVSSSIsICJibG9jayIsICJpbmRleCIsICJub2RlIiwgIlN1bW1hcnlOb2RlIiwgIkZvcm11bGEiLCAiTiIsICJJY29uIiwgIkhhc2hUYWciLCAiTGluayIsICJmb3JtdWxhIiwgInJlZiIsICJlcnJvciIsICJzZXRGb3JtdWxhIiwgInVzZUthVGVYIiwgInBhdGhUeXBlIiwgInBhdGgiLCAiX3Byb2plY3QiLCAiaHJlZiIsICJjb250ZW50IiwgInRvSWQiLCAicHJvamVjdCIsICJ0aXRsZSIsICJ0b1RpdGxlTGMiLCAiZnJvbUlkIiwgImlkIiwgIm1hdGNoZXMiLCAiTk9USElORyIsICJEUkFGVEFCTEUiLCAiRFJBRlRfU1RBVEUiLCAiZGllIiwgImVycm9yIiwgImFyZ3MiLCAiZ2V0UHJvdG90eXBlT2YiLCAiaXNEcmFmdCIsICJ2YWx1ZSIsICJpc0RyYWZ0YWJsZSIsICJpc1BsYWluT2JqZWN0IiwgImlzTWFwIiwgImlzU2V0IiwgIm9iamVjdEN0b3JTdHJpbmciLCAicHJvdG8iLCAiQ3RvciIsICJlYWNoIiwgIm9iaiIsICJpdGVyIiwgImdldEFyY2h0eXBlIiwgImtleSIsICJlbnRyeSIsICJpbmRleCIsICJ0aGluZyIsICJzdGF0ZSIsICJEUkFGVF9TVEFURSIsICJpc01hcCIsICJpc1NldCIsICJoYXMiLCAicHJvcCIsICJzZXQiLCAidGhpbmciLCAicHJvcE9yT2xkVmFsdWUiLCAidmFsdWUiLCAidCIsICJnZXRBcmNodHlwZSIsICJpcyIsICJ4IiwgInkiLCAiaXNNYXAiLCAidGFyZ2V0IiwgImlzU2V0IiwgImxhdGVzdCIsICJzdGF0ZSIsICJzaGFsbG93Q29weSIsICJiYXNlIiwgInN0cmljdCIsICJpc1BsYWluIiwgImlzUGxhaW5PYmplY3QiLCAiZGVzY3JpcHRvcnMiLCAiRFJBRlRfU1RBVEUiLCAia2V5cyIsICJpIiwgImtleSIsICJkZXNjIiwgImdldFByb3RvdHlwZU9mIiwgInByb3RvIiwgIm9iaiIsICJmcmVlemUiLCAiZGVlcCIsICJpc0Zyb3plbiIsICJpc0RyYWZ0IiwgImlzRHJhZnRhYmxlIiwgImRvbnRNdXRhdGVGcm96ZW5Db2xsZWN0aW9ucyIsICJkaWUiLCAicGx1Z2lucyIsICJnZXRQbHVnaW4iLCAicGx1Z2luS2V5IiwgInBsdWdpbiIsICJsb2FkUGx1Z2luIiwgImltcGxlbWVudGF0aW9uIiwgImN1cnJlbnRTY29wZSIsICJnZXRDdXJyZW50U2NvcGUiLCAiY3JlYXRlU2NvcGUiLCAicGFyZW50XyIsICJpbW1lcl8iLCAidXNlUGF0Y2hlc0luU2NvcGUiLCAic2NvcGUiLCAicGF0Y2hMaXN0ZW5lciIsICJyZXZva2VTY29wZSIsICJsZWF2ZVNjb3BlIiwgInJldm9rZURyYWZ0IiwgImVudGVyU2NvcGUiLCAiaW1tZXIiLCAiZHJhZnQiLCAicHJvY2Vzc1Jlc3VsdCIsICJyZXN1bHQiLCAiYmFzZURyYWZ0IiwgImZpbmFsaXplIiwgIm1heWJlRnJlZXplIiwgIk5PVEhJTkciLCAicm9vdFNjb3BlIiwgInBhdGgiLCAiZWFjaCIsICJjaGlsZFZhbHVlIiwgImZpbmFsaXplUHJvcGVydHkiLCAicmVzdWx0RWFjaCIsICJwYXJlbnRTdGF0ZSIsICJ0YXJnZXRPYmplY3QiLCAicHJvcCIsICJyb290UGF0aCIsICJ0YXJnZXRJc1NldCIsICJoYXMiLCAicmVzIiwgImNyZWF0ZVByb3h5UHJveHkiLCAicGFyZW50IiwgImlzQXJyYXkiLCAidHJhcHMiLCAib2JqZWN0VHJhcHMiLCAiYXJyYXlUcmFwcyIsICJyZXZva2UiLCAicHJveHkiLCAic291cmNlIiwgInJlYWRQcm9wRnJvbVByb3RvIiwgInBlZWsiLCAicHJlcGFyZUNvcHkiLCAiY3JlYXRlUHJveHkiLCAiZ2V0RGVzY3JpcHRvckZyb21Qcm90byIsICJjdXJyZW50IiwgImN1cnJlbnRTdGF0ZSIsICJtYXJrQ2hhbmdlZCIsICJvd25lciIsICJmbiIsICJJbW1lciIsICJjb25maWciLCAicmVjaXBlIiwgImRlZmF1bHRCYXNlIiwgInNlbGYiLCAiYXJncyIsICJoYXNFcnJvciIsICJwIiwgImlwIiwgInBhdGNoZXMiLCAiaW52ZXJzZVBhdGNoZXMiLCAicGF0Y2giLCAiYXBwbHlQYXRjaGVzSW1wbCIsICJjdXJyZW50SW1wbCIsICJjb3B5IiwgImVuYWJsZU1hcFNldCIsICJEcmFmdE1hcCIsICJ0YXJnZXQiLCAicGFyZW50IiwgIkRSQUZUX1NUQVRFIiwgImdldEN1cnJlbnRTY29wZSIsICJsYXRlc3QiLCAia2V5IiwgInZhbHVlIiwgInN0YXRlIiwgImFzc2VydFVucmV2b2tlZCIsICJwcmVwYXJlTWFwQ29weSIsICJtYXJrQ2hhbmdlZCIsICJlYWNoIiwgImNiIiwgInRoaXNBcmciLCAiX3ZhbHVlIiwgIl9tYXAiLCAiaXNEcmFmdGFibGUiLCAiZHJhZnQiLCAiY3JlYXRlUHJveHkiLCAiaXRlcmF0b3IiLCAiciIsICJwcm94eU1hcF8iLCAiRHJhZnRTZXQiLCAicHJlcGFyZVNldENvcHkiLCAicmVzdWx0IiwgInByb3h5U2V0XyIsICJkaWUiLCAibG9hZFBsdWdpbiIsICJpbW1lciIsICJJbW1lciIsICJwcm9kdWNlIiwgInByb2R1Y2VXaXRoUGF0Y2hlcyIsICJzZXRBdXRvRnJlZXplIiwgInNldFVzZVN0cmljdFNoYWxsb3dDb3B5IiwgImFwcGx5UGF0Y2hlcyIsICJjcmVhdGVEcmFmdCIsICJmaW5pc2hEcmFmdCIsICJ2ZSIsICJpc0VtcHR5TGluayIsICJidWJibGVzIiwgImxpbmtlZCIsICJidWJibGUiLCAidXBkYXRlIiwgInByZXYiLCAiY3VycmVudCIsICJ6ZSIsICJkcmFmdCIsICJsaW5lcyIsICJwcm9qZWN0TGlua2VkIiwgInJlc3QiLCAiaXNEdW1teSIsICJjb252ZXJ0IiwgInByb2plY3QiLCAicGFnZSIsICJzdG9yYWdlIiwgInRpdGxlTGMiLCAidG9UaXRsZUxjIiwgImxpbmsiLCAiYnViYmxlIiwgIm1ha2VEdW1teSIsICJ0b0lkIiwgInBhZ2VJZCIsICJwcm9qZWN0TGlua3NMYyIsICJpZCIsICJmcm9tSWQiLCAicGFnZUJ1YmJsZSIsICJ0b0J1YmJsZSIsICJsaW5rc0xjIiwgImNhcmQiLCAibGlua0xjIiwgImNhcmRJZCIsICJsaW5rZWQiLCAicHJvamVjdExpbmtlZCIsICJ0ZXh0IiwgInRpdGxlIiwgImxvZ2dlciIsICJjcmVhdGVEZWJ1ZyIsICJzdG9yYWdlIiwgImxvYWRpbmdJZHMiLCAiZW1pdHRlciIsICJtYWtlRW1pdHRlciIsICJsb2FkIiwgInBhZ2VJZHMiLCAicGFnZUlkIiwgInN1YnNjcmliZSIsICJsaXN0ZW5lciIsICJ1bnN1YnNjcmliZSIsICJwcmVmZXRjaCIsICJ0aXRsZSIsICJwcm9qZWN0cyIsICJ3YXRjaExpc3QiLCAib3B0aW9ucyIsICJwcm9taXNlcyIsICJwcm9qZWN0IiwgImlkIiwgInRvSWQiLCAidXBkYXRlQXBpQ2FjaGUiLCAiY291bnRlciIsICJpIiwgInRpbWVUYWciLCAicmVxIiwgImdldFBhZ2UiLCAidHlwZSIsICJyZXMiLCAiY2FjaGVGaXJzdEZldGNoIiwgInJlc3VsdCIsICJjb252ZXJ0ZWQiLCAiY29udmVydCIsICJidWJibGVJZCIsICJidWJibGUiLCAicHJldiIsICJ1cGRhdGVkQnViYmxlIiwgInVwZGF0ZSIsICJpc0V4cGlyZWQiLCAiZSIsICJsb2dnZXIiLCAiY3JlYXRlRGVidWciLCAidXNlQnViYmxlRGF0YSIsICJwYWdlSWRzIiwgImJ1YmJsZXMiLCAic2V0QnViYmxlcyIsICJCIiwgIm1ha2VCdWJibGVzIiwgInciLCAidGltZXIiLCAidXBkYXRlRGF0YSIsICJpZCIsICJzdWJzY3JpYmUiLCAidW5zdWJzY3JpYmUiLCAibG9hZCIsICJidWJibGUiLCAiQ2FyZExpc3QiLCAic291cmNlIiwgImxpbmtlZCIsICJleHRlcm5hbExpbmtlZCIsICJwcm9qZWN0c0ZvclNvcnRfIiwgInByb3BzIiwgImlkcyIsICJUIiwgImNhcmRzIiwgInVzZUJ1YmJsZURhdGEiLCAicHJvamVjdHNGb3JTb3J0IiwgInNvcnRlZENhcmRzIiwgImNvbXBhcmUiLCAiYSIsICJiIiwgImFJbmRleCIsICJiSW5kZXgiLCAiY2FyZFN0eWxlIiwgInNlIiwgInByb2plY3QiLCAidGl0bGVMYyIsICJ0aXRsZSIsICJkZXNjcmlwdGlvbnMiLCAiaW1hZ2UiLCAia2V5IiwgInRvSWQiLCAibGlua1RvIiwgIkNhcmQiLCAicGFyc2VMaW5rIiwgImxpbmsiLCAicHJvamVjdCIsICJ0aXRsZSIsICJoYXNoIiwgImhhc0xpbmsiLCAibGluayIsICJub2RlcyIsICJub2RlIiwgImlzUmVsYXRpdmUiLCAidG9UaXRsZUxjIiwgInByb2plY3QiLCAidGl0bGUiLCAicGFyc2VMaW5rIiwgImNvbnRleHQiLCAibWUiLCAiUGFnZSIsICJsaW5lcyIsICJwcm9qZWN0IiwgInRpdGxlIiwgIndoaXRlTGlzdCIsICJub0luZGVudCIsICJoYXNoIiwgImxpbmtUbyIsICJwcm9wcyIsICJsaW5lSWRzIiwgIlQiLCAibGluZSIsICJibG9ja3MiLCAiY291bnRlciIsICJxZSIsICJibG9jayIsICJzdGFydCIsICJzY3JvbGxJZCIsICJoYXNMaW5rIiwgInJlZiIsICJ6IiwgInciLCAidGFyZ2V0TGluZSIsICJzY3JvbGxZIiwgInRoZW1lIiwgInVzZVRoZW1lIiwgInNlIiwgIk4iLCAiTGluZSIsICJlbmNvZGVUaXRsZVVSSSIsICJDb2RlQmxvY2siLCAiVGFibGUiLCAibm9kZSIsICJOb2RlIiwgImluZGV4IiwgImluZGVudCIsICJjaGlsZHJlbiIsICJwZXJtYWxpbmsiLCAiZmlsZU5hbWUiLCAiY29udGVudCIsICJpZHMiLCAiRyIsICJidXR0b25MYWJlbCIsICJzZXRCdXR0b25MYWJlbCIsICJCIiwgImhhbmRsZUNsaWNrIiwgIk0iLCAiZSIsICJzbGVlcCIsICJjZWxscyIsICJjZWxsIiwgImkiLCAicm93IiwgIkZvcm11bGEiLCAiQ29tbWFuZExpbmUiLCAiRGVjb3JhdGlvbiIsICJIYXNoVGFnIiwgIkxpbmsiLCAiR29vZ2xlTWFwIiwgIkljb24iLCAiSW1hZ2UiLCAiZm9ybXVsYSIsICJlcnJvciIsICJzZXRGb3JtdWxhIiwgInVzZUthVGVYIiwgImRlY29zIiwgIm5vZGVzIiwgImRlY28iLCAicGxhY2UiLCAibGF0aXR1ZGUiLCAibG9uZ2l0dWRlIiwgInpvb20iLCAicGF0aFR5cGUiLCAicGF0aCIsICJzdHJvbmciLCAiX3Byb2plY3QiLCAidGl0bGVMYyIsICJsaW5rIiwgInNyYyIsICJocmVmIiwgImVtcHR5TGluayIsICJ1c2VFbXB0eUxpbmsiLCAiaGFuZGxlSG92ZXIiLCAidXNlSG92ZXIiLCAiU2NyYXBib3hMaW5rIiwgImxpbmtOb2RlIiwgInBhcnNlQWJzb2x1dGVMaW5rIiwgIllvdXR1YmUiLCAiVmltZW8iLCAiU3BvdGlmeSIsICJBbmNob3JGTSIsICJBdWRpbyIsICJWaWRlbyIsICJwcm9qZWN0XyIsICJwYXJzZUxpbmsiLCAidmlkZW9JZCIsICJBdWRpb0xpbmsiLCAidG9nZ2xlUGxheSIsICJwYWdlSWRzIiwgInRvSWQiLCAiYnViYmxlcyIsICJ1c2VCdWJibGVEYXRhIiwgImlzRW1wdHlMaW5rIiwgInR5cGUiLCAiZGVsYXkiLCAiYnViYmxlIiwgInByZWZldGNoIiwgImEiLCAic3RheUhvdmVyaW5nIiwgImNhbGNCdWJibGVQb3NpdGlvbiIsICJUZXh0QnViYmxlIiwgInBhZ2VzIiwgIm9uQ2xpY2siLCAic291cmNlIiwgIndoaXRlTGlzdCIsICJyZXN0IiwgImFjdGl2ZVRhYiIsICJzZXRBY3RpdmVUYWIiLCAiQiIsICJ0b0lkIiwgInBhZ2VTdHlsZSIsICJUIiwgInNlIiwgInBhZ2UiLCAiVGFiIiwgIlRhYlBhbmVsIiwgInByb2plY3QiLCAidGl0bGVMYyIsICJ0YWJTZWxlY3RvciIsICJzZWxlY3RlZCIsICJoYW5kbGVDbGljayIsICJNIiwgInRoZW1lIiwgInVzZVRoZW1lIiwgIlBhZ2UiLCAibG9nZ2VyIiwgImNyZWF0ZURlYnVnIiwgIkJ1YmJsZSIsICJzb3VyY2UiLCAicGFyZW50VGl0bGVzIiwgIndoaXRlTGlzdCIsICJwcm9wcyIsICJwcm9qZWN0cyIsICJUIiwgImxpbmtlZCIsICJleHRlcm5hbExpbmtlZCIsICJwYWdlcyIsICJ1c2VCdWJibGVGaWx0ZXIiLCAic2UiLCAiTiIsICJoYXNPbmVCdWJibGUiLCAiVGV4dEJ1YmJsZSIsICJDYXJkTGlzdCIsICJzZXRCdWJibGVEYXRhIiwgIkIiLCAicGFnZUlkcyIsICJwcm9qZWN0IiwgInRvSWQiLCAiYnViYmxlcyIsICJ1c2VCdWJibGVEYXRhIiwgInBhcmVudHNMYyIsICJ0aXRsZSIsICJ0b1RpdGxlTGMiLCAiUiIsICJidWJibGUiLCAiZUxpbmtUbyIsICJpZCIsICJ0aXRsZUxjIiwgImZyb21JZCIsICJsaW5rVG8iLCAibGlua0xjIiwgInplIiwgImRyYWZ0IiwgImtleSIsICJ2YWx1ZSIsICJkZXRlY3RVUkwiLCAidGV4dCIsICJiYXNlIiwgImUiLCAiVXNlckNTUyIsICJwcm9wcyIsICJ1cmwiLCAiVCIsICJkZXRlY3RVUkwiLCAic2UiLCAiTiIsICJDU1MiLCAidXNlQnViYmxlcyIsICJidWJibGVzIiwgInNldEJ1YmJsZXMiLCAiQiIsICJzb3VyY2UiLCAiY2hhbmdlIiwgIk0iLCAiZGVwdGgiLCAiZmlyc3QiLCAicHJldiIsICJidWJibGUiLCAidXNlRXZlbnRMaXN0ZW5lciIsICJlbGVtZW50IiwgInR5cGUiLCAibGlzdGVuZXIiLCAib3B0aW9ucyIsICJkZXBzIiwgInciLCAiaXNUaXRsZSIsICJlbGVtZW50IiwgImlzUGFnZUxpbmsiLCAidXNlcnNjcmlwdE5hbWUiLCAiQXBwIiwgImRlbGF5IiwgIndoaXRlTGlzdCIsICJ3YXRjaExpc3QiLCAic3R5bGUiLCAiYnViYmxlIiwgImhpZGUiLCAiYnViYmxlcyIsICJ1c2VCdWJibGVzIiwgInByZWZldGNoIiwgIk0iLCAicHJvamVjdCIsICJ0aXRsZSIsICJ1c2VFdmVudExpc3RlbmVyIiwgImV2ZW50IiwgImxpbmsiLCAiaXNQYWdlTGluayIsICJpc1RpdGxlIiwgImVuY29kZWRUaXRsZSIsICJoYXNoIiwgInBhcnNlTGluayIsICJzdGF5SG92ZXJpbmciLCAiY2FsY0J1YmJsZVBvc2l0aW9uIiwgImdldExpbmtUeXBlIiwgImUiLCAidyIsICJzZSIsICJOIiwgIkNTUyIsICJVc2VyQ1NTIiwgIkJ1YmJsZSIsICJ0b0lkIiwgImVsZW1lbnQiLCAibW91bnQiLCAiaW5pdCIsICJkZWxheSIsICJ3aGl0ZUxpc3QiLCAid2F0Y2hMaXN0IiwgImdldFdhdGNoTGlzdCIsICJzdHlsZSIsICJkZWJ1ZyIsICJzZXREZWJ1Z01vZGUiLCAiYXBwIiwgInVzZXJzY3JpcHROYW1lIiwgInNoYWRvd1Jvb3QiLCAiZGUiLCAic2UiLCAiQXBwIiwgInRha2tlcl9saXN0IiwgImFkZGl0aW9uYWxfbGlzdCIsICJtb3VudCIsICJwYXJzZUNvZGVUaXRsZSIsICJ0aXRsZSIsICJtYXRjaCIsICJsYW5nIiwgImdldENvZGVGaWxlcyIsICJwcm9qZWN0IiwgInRpdGxlIiwgImxpbmVzIiwgImlucHV0IiwgImxpbmUiLCAiYmxvY2tzIiwgInFlIiwgImNvZGVzIiwgImNvdW50ZXIiLCAiYmxvY2siLCAiZmlsZU5hbWUiLCAibGFuZyIsICJwYXJzZUNvZGVUaXRsZSIsICJwcmV2IiwgImVuY29kZVRpdGxlVVJJIiwgImVuY29kZVBhY2tldCIsICJwYWNrZXQiLCAidmlzaXQiLCAidmFsdWUiLCAiYmIiLCAiZW5jb2RlVVRGOCIsICJpdGVtIiwgImtleXMiLCAia2V5IiwgIkJ5dGVCdWZmZXIiLCAid3JpdGVVSW50MzJMRSIsICJkZWNvZGVQYWNrZXQiLCAiYnl0ZXMiLCAiZGVjb2RlVVRGOCIsICJjb3VudCIsICJpIiwgImlkIiwgImlzUmVxdWVzdCIsICJidWYiLCAiZGVsdGEiLCAiY2xvbmUiLCAib2Zmc2V0IiwgInJlYWRVSW50MzJMRSIsICJsZW5ndGgiLCAicHRyIiwgImVuY29kZUludmFyaWFudCIsICJlbmNvZGVyIiwgImRlY29kZXIiLCAidGV4dCIsICJidWZmZXIiLCAiRVNCVUlMRF9WRVJTSU9OIiwgInF1b3RlIiwgImJ1aWxkTG9nTGV2ZWxEZWZhdWx0IiwgInRyYW5zZm9ybUxvZ0xldmVsRGVmYXVsdCIsICJ2YWxpZGF0ZVRhcmdldCIsICJ0YXJnZXQiLCAidmFsaWRhdGVTdHJpbmdWYWx1ZSIsICJjYW5CZUFueXRoaW5nIiwgIm11c3RCZUJvb2xlYW4iLCAidmFsdWUiLCAibXVzdEJlU3RyaW5nIiwgIm11c3RCZVJlZ0V4cCIsICJtdXN0QmVJbnRlZ2VyIiwgIm11c3RCZUZ1bmN0aW9uIiwgIm11c3RCZUFycmF5IiwgIm11c3RCZU9iamVjdCIsICJtdXN0QmVFbnRyeVBvaW50cyIsICJtdXN0QmVXZWJBc3NlbWJseU1vZHVsZSIsICJtdXN0QmVPYmplY3RPck51bGwiLCAibXVzdEJlU3RyaW5nT3JCb29sZWFuIiwgIm11c3RCZVN0cmluZ09yT2JqZWN0IiwgIm11c3RCZVN0cmluZ09yQXJyYXkiLCAibXVzdEJlU3RyaW5nT3JVaW50OEFycmF5IiwgIm11c3RCZVN0cmluZ09yVVJMIiwgImdldEZsYWciLCAib2JqZWN0IiwgImtleXMiLCAia2V5IiwgIm11c3RCZUZuIiwgIm11c3RCZSIsICJjaGVja0ZvckludmFsaWRGbGFncyIsICJ3aGVyZSIsICJ2YWxpZGF0ZUluaXRpYWxpemVPcHRpb25zIiwgIm9wdGlvbnMiLCAid2FzbU1vZHVsZSIsICJ3b3JrZXJVUkwiLCAidmFsaWRhdGVNYW5nbGVDYWNoZSIsICJtYW5nbGVDYWNoZSIsICJ2YWxpZGF0ZWQiLCAicHVzaExvZ0ZsYWdzIiwgImZsYWdzIiwgImlzVFRZIiwgImxvZ0xldmVsRGVmYXVsdCIsICJjb2xvciIsICJsb2dMZXZlbCIsICJsb2dMaW1pdCIsICJ3aGF0IiwgInB1c2hDb21tb25GbGFncyIsICJsZWdhbENvbW1lbnRzIiwgInNvdXJjZVJvb3QiLCAic291cmNlc0NvbnRlbnQiLCAiZm9ybWF0IiwgImdsb2JhbE5hbWUiLCAibWFuZ2xlUHJvcHMiLCAicmVzZXJ2ZVByb3BzIiwgIm1hbmdsZVF1b3RlZCIsICJtaW5pZnkiLCAibWluaWZ5U3ludGF4IiwgIm1pbmlmeVdoaXRlc3BhY2UiLCAibWluaWZ5SWRlbnRpZmllcnMiLCAibGluZUxpbWl0IiwgImRyb3AiLCAiZHJvcExhYmVscyIsICJjaGFyc2V0IiwgInRyZWVTaGFraW5nIiwgImlnbm9yZUFubm90YXRpb25zIiwgImpzeCIsICJqc3hGYWN0b3J5IiwgImpzeEZyYWdtZW50IiwgImpzeEltcG9ydFNvdXJjZSIsICJqc3hEZXYiLCAianN4U2lkZUVmZmVjdHMiLCAiZGVmaW5lIiwgImxvZ092ZXJyaWRlIiwgInN1cHBvcnRlZCIsICJwdXJlIiwgImtlZXBOYW1lcyIsICJwbGF0Zm9ybSIsICJ0c2NvbmZpZ1JhdyIsICJmbiIsICJmbGFnc0ZvckJ1aWxkT3B0aW9ucyIsICJjYWxsTmFtZSIsICJ3cml0ZURlZmF1bHQiLCAiZW50cmllcyIsICJzdGRpbkNvbnRlbnRzIiwgInN0ZGluUmVzb2x2ZURpciIsICJzb3VyY2VtYXAiLCAiYnVuZGxlIiwgInNwbGl0dGluZyIsICJwcmVzZXJ2ZVN5bWxpbmtzIiwgIm1ldGFmaWxlIiwgIm91dGZpbGUiLCAib3V0ZGlyIiwgIm91dGJhc2UiLCAidHNjb25maWciLCAicmVzb2x2ZUV4dGVuc2lvbnMiLCAibm9kZVBhdGhzSW5wdXQiLCAibWFpbkZpZWxkcyIsICJjb25kaXRpb25zIiwgImV4dGVybmFsIiwgInBhY2thZ2VzIiwgImFsaWFzIiwgImxvYWRlciIsICJvdXRFeHRlbnNpb24iLCAicHVibGljUGF0aCIsICJlbnRyeU5hbWVzIiwgImNodW5rTmFtZXMiLCAiYXNzZXROYW1lcyIsICJpbmplY3QiLCAiYmFubmVyIiwgImZvb3RlciIsICJlbnRyeVBvaW50cyIsICJhYnNXb3JraW5nRGlyIiwgInN0ZGluIiwgIndyaXRlIiwgImFsbG93T3ZlcndyaXRlIiwgInZhbHVlcyIsICJuYW1lIiwgIm9sZCIsICJ0eXBlIiwgInBhdGgiLCAiZXh0IiwgImkiLCAibiIsICJlbnRyeVBvaW50IiwgImVudHJ5UG9pbnRLZXlzIiwgImlucHV0IiwgIm91dHB1dCIsICJzdGRpbktleXMiLCAiY29udGVudHMiLCAicmVzb2x2ZURpciIsICJzb3VyY2VmaWxlIiwgImVuY29kZVVURjgiLCAibm9kZVBhdGhzIiwgImZsYWdzRm9yVHJhbnNmb3JtT3B0aW9ucyIsICJjcmVhdGVDaGFubmVsIiwgInN0cmVhbUluIiwgInJlcXVlc3RDYWxsYmFja3NCeUtleSIsICJjbG9zZURhdGEiLCAicmVzcG9uc2VDYWxsYmFja3MiLCAibmV4dFJlcXVlc3RJRCIsICJuZXh0QnVpbGRLZXkiLCAic3Rkb3V0IiwgInN0ZG91dFVzZWQiLCAicmVhZEZyb21TdGRvdXQiLCAiY2h1bmsiLCAibGltaXQiLCAic3dhcCIsICJvZmZzZXQiLCAibGVuZ3RoIiwgInJlYWRVSW50MzJMRSIsICJoYW5kbGVJbmNvbWluZ1BhY2tldCIsICJhZnRlckNsb3NlIiwgImVycm9yIiwgInRleHQiLCAiaWQiLCAic2VuZFJlcXVlc3QiLCAicmVmcyIsICJjYWxsYmFjayIsICJyZXNwb25zZSIsICJlbmNvZGVQYWNrZXQiLCAic2VuZFJlc3BvbnNlIiwgImhhbmRsZVJlcXVlc3QiLCAicmVxdWVzdCIsICJyZXF1ZXN0Q2FsbGJhY2tzIiwgImUiLCAiZXJyb3JzIiwgImV4dHJhY3RFcnJvck1lc3NhZ2VWOCIsICJpc0ZpcnN0UGFja2V0IiwgImJ5dGVzIiwgImJpbmFyeVZlcnNpb24iLCAiRVNCVUlMRF9WRVJTSU9OIiwgInBhY2tldCIsICJkZWNvZGVQYWNrZXQiLCAiZGVmYXVsdFdEIiwgInJlZkNvdW50IiwgImJ1aWxkS2V5IiwgImJ1aWxkUmVmcyIsICJidWlsZE9yQ29udGV4dEltcGwiLCAiZXJyIiwgInJlcyIsICJmcyIsICJkZXRhaWxzIiwgImNyZWF0ZU9iamVjdFN0YXNoIiwgInN0YXJ0IiwgImlucHV0UGF0aCIsICJyZXBsYWNlRGV0YWlsc0luTWVzc2FnZXMiLCAid2FybmluZ3MiLCAib3V0c3RhbmRpbmciLCAibmV4dCIsICJyZXN1bHQiLCAiZmFpbHVyZUVycm9yV2l0aExvZyIsICJtZXNzYWdlcyIsICJraW5kIiwgInRlcm1pbmFsV2lkdGgiLCAic2FuaXRpemVNZXNzYWdlcyIsICJ2ZXJib3NlIiwgImlzQ29udGV4dCIsICJoYW5kbGVFcnJvciIsICJwbHVnaW5OYW1lIiwgIm1lc3NhZ2UiLCAicGx1Z2lucyIsICJoYW5kbGVQbHVnaW5zIiwgImJ1aWxkT3JDb250ZXh0Q29udGludWUiLCAiZG9uZSIsICJyZXF1ZXN0UGx1Z2lucyIsICJydW5PbkVuZENhbGxiYWNrcyIsICJzY2hlZHVsZU9uRGlzcG9zZUNhbGxiYWNrcyIsICJidWlsZFJlc3BvbnNlVG9SZXN1bHQiLCAib3JpZ2luYWxFcnJvcnMiLCAib3JpZ2luYWxXYXJuaW5ncyIsICJjb252ZXJ0T3V0cHV0RmlsZXMiLCAiZGVjb2RlVVRGOCIsICJvbkVuZEVycm9ycyIsICJvbkVuZFdhcm5pbmdzIiwgImxhdGVzdFJlc3VsdFByb21pc2UiLCAicHJvdmlkZUxhdGVzdFJlc3VsdCIsICJyZXNvbHZlIiwgImRpZERpc3Bvc2UiLCAicmVqZWN0IiwgInNldHRsZVByb21pc2UiLCAidHJpZ2dlckFub3RoZXJCdWlsZCIsICJwb3J0IiwgImhvc3QiLCAic2VydmVkaXIiLCAia2V5ZmlsZSIsICJjZXJ0ZmlsZSIsICJmYWxsYmFjayIsICJvblJlcXVlc3QiLCAiaW5pdGlhbE9wdGlvbnMiLCAib25TdGFydENhbGxiYWNrcyIsICJvbkVuZENhbGxiYWNrcyIsICJvblJlc29sdmVDYWxsYmFja3MiLCAib25Mb2FkQ2FsbGJhY2tzIiwgIm9uRGlzcG9zZUNhbGxiYWNrcyIsICJuZXh0Q2FsbGJhY2tJRCIsICJpc1NldHVwRG9uZSIsICJpdGVtIiwgInNldHVwIiwgInBsdWdpbiIsICJwcm9taXNlIiwgImltcG9ydGVyIiwgIm5hbWVzcGFjZSIsICJwbHVnaW5EYXRhIiwgImltcG9ydEF0dHJpYnV0ZXMiLCAic2FuaXRpemVTdHJpbmdNYXAiLCAicmVnaXN0ZXJlZFRleHQiLCAicmVnaXN0ZXJlZE5vdGUiLCAiZXh0cmFjdENhbGxlclY4IiwgImZpbHRlciIsICJub3RlIiwgInN1ZmZpeCIsICJzaWRlRWZmZWN0cyIsICJ3YXRjaEZpbGVzIiwgIndhdGNoRGlycyIsICJzYW5pdGl6ZVN0cmluZ0FycmF5IiwgIm5ld0Vycm9ycyIsICJuZXdXYXJuaW5ncyIsICJjYiIsICJtYXAiLCAibmV4dElEIiwgImlkZW50IiwgInRyaWVkIiwgImxpbmVzIiwgImxvY2F0aW9uIiwgInBhcnNlU3RhY2tMaW5lc1Y4IiwgInN0YXNoIiwgImF0IiwgImxpbmUiLCAibWF0Y2giLCAibGluZVRleHQiLCAiY29sdW1uIiwgImZpbGUiLCAicGx1Z2luVGV4dCIsICJzYW5pdGl6ZUxvY2F0aW9uIiwgInN1Z2dlc3Rpb24iLCAicmVsZXZhbnRBU0NJSSIsICJwcm9wZXJ0eSIsICJmYWxsYmFja1BsdWdpbk5hbWUiLCAibWVzc2FnZXNDbG9uZSIsICJpbmRleCIsICJub3RlcyIsICJkZXRhaWwiLCAibm90ZXNDbG9uZSIsICJub3RlS2V5cyIsICJub3RlVGV4dCIsICJub3RlTG9jYXRpb24iLCAiaGFzaCIsICJiaW5hcnkiLCAidmVyc2lvbiIsICJFU0JVSUxEX1ZFUlNJT04iLCAiYnVpbGQiLCAib3B0aW9ucyIsICJlbnN1cmVTZXJ2aWNlSXNSdW5uaW5nIiwgInRyYW5zZm9ybSIsICJpbnB1dCIsICJmb3JtYXRNZXNzYWdlcyIsICJtZXNzYWdlcyIsICJhbmFseXplTWV0YWZpbGUiLCAibWV0YWZpbGUiLCAiaW5pdGlhbGl6ZVByb21pc2UiLCAic3RvcFNlcnZpY2UiLCAibG9uZ0xpdmVkU2VydmljZSIsICJlbnN1cmVTZXJ2aWNlSXNSdW5uaW5nIiwgImluaXRpYWxpemUiLCAib3B0aW9ucyIsICJ2YWxpZGF0ZUluaXRpYWxpemVPcHRpb25zIiwgIndhc21Nb2R1bGUiLCAid29ya2VyVVJMIiwgInN0YXJ0UnVubmluZ1NlcnZpY2UiLCAid29ya2VyIiwgImZpcnN0TWVzc2FnZVJlc29sdmUiLCAiZmlyc3RNZXNzYWdlUmVqZWN0IiwgImZpcnN0TWVzc2FnZVByb21pc2UiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAiZXJyb3IiLCAiZGF0YSIsICJyZWFkRnJvbVN0ZG91dCIsICJzZXJ2aWNlIiwgImNyZWF0ZUNoYW5uZWwiLCAiYnl0ZXMiLCAiYnVpbGQiLCAidHJhbnNmb3JtIiwgImZvcm1hdE1lc3NhZ2VzIiwgImFuYWx5emVNZXRhZmlsZSIsICJ2ZXJzaW9uIiwgImVyciIsICJyZXMiLCAiaW5wdXQiLCAiXyIsICJjYWxsYmFjayIsICJtZXNzYWdlcyIsICJtZXRhZmlsZSIsICJhc3NlcnRQYXRoIiwgInBhdGgiLCAiaXNQYXRoU2VwYXJhdG9yIiwgImNvZGUiLCAiaXNXaW5kb3dzRGV2aWNlUm9vdCIsICJhc3NlcnRBcmciLCAidXJsIiwgImZyb21GaWxlVXJsIiwgInVybCIsICJhc3NlcnRBcmciLCAicGF0aCIsICJpc0Fic29sdXRlIiwgInBhdGgiLCAiYXNzZXJ0UGF0aCIsICJsZW4iLCAiY29kZSIsICJpc1BhdGhTZXBhcmF0b3IiLCAiaXNXaW5kb3dzRGV2aWNlUm9vdCIsICJBc3NlcnRpb25FcnJvciIsICJtZXNzYWdlIiwgImFzc2VydCIsICJleHByIiwgIm1zZyIsICJBc3NlcnRpb25FcnJvciIsICJXSElURVNQQUNFX0VOQ09ESU5HUyIsICJlbmNvZGVXaGl0ZXNwYWNlIiwgInN0cmluZyIsICJjIiwgInRvRmlsZVVybCIsICJwYXRoIiwgImlzQWJzb2x1dGUiLCAiaG9zdG5hbWUiLCAicGF0aG5hbWUiLCAidXJsIiwgImVuY29kZVdoaXRlc3BhY2UiLCAiaXNQb3NpeFBhdGhTZXBhcmF0b3IiLCAiY29kZSIsICJmcm9tRmlsZVVybCIsICJ1cmwiLCAiYXNzZXJ0QXJnIiwgImlzQWJzb2x1dGUiLCAicGF0aCIsICJhc3NlcnRQYXRoIiwgImlzUG9zaXhQYXRoU2VwYXJhdG9yIiwgInRvRmlsZVVybCIsICJwYXRoIiwgImlzQWJzb2x1dGUiLCAidXJsIiwgImVuY29kZVdoaXRlc3BhY2UiLCAib3NUeXBlIiwgIkRlbm8iLCAibmF2aWdhdG9yIiwgImlzV2luZG93cyIsICJmcm9tRmlsZVVybCIsICJ1cmwiLCAiaXNXaW5kb3dzIiwgInRvRmlsZVVybCIsICJwYXRoIiwgImlzV2luZG93cyIsICJpc1dpbmRvd3MiLCAiaXNXaW5kb3dzIiwgIkVYSVNUU19FUlJPUiIsICJpc1dpbmRvd3MiLCAiTEYiLCAiQ1JMRiIsICJFT0wiLCAibW9kX2V4cG9ydHMiLCAiX19leHBvcnQiLCAicGFyc2UiLCAicGFyc2UiLCAidGV4dCIsICJhbGxvd1RyYWlsaW5nQ29tbWEiLCAiSlNPTkNQYXJzZXIiLCAib3JpZ2luYWxKU09OUGFyc2UiLCAiI3doaXRlc3BhY2UiLCAiI251bWJlckVuZFRva2VuIiwgIiN0ZXh0IiwgIiNsZW5ndGgiLCAiI3Rva2VuaXplZCIsICIjb3B0aW9ucyIsICJvcHRpb25zIiwgIiN0b2tlbml6ZSIsICJ0b2tlbiIsICIjZ2V0TmV4dCIsICJyZXMiLCAiI3BhcnNlSnNvblZhbHVlIiwgImRvbmUiLCAidmFsdWUiLCAiYnVpbGRFcnJvck1lc3NhZ2UiLCAiaSIsICJoYXNFbmRPZkNvbW1lbnQiLCAic3RhcnRJbmRleCIsICJzaG91bGRFc2NhcGVOZXh0IiwgIiNwYXJzZU9iamVjdCIsICIjcGFyc2VBcnJheSIsICIjcGFyc2VOdWxsT3JUcnVlT3JGYWxzZU9yTnVtYmVyIiwgIiNwYXJzZVN0cmluZyIsICJ0YXJnZXQiLCAiaXNGaXJzdCIsICJ0b2tlbjEiLCAia2V5IiwgInRva2VuMiIsICJ0b2tlbjMiLCAidG9rZW40IiwgInBhcnNlZCIsICJhc3NlcnQiLCAidHlwZSIsICJzb3VyY2VUZXh0IiwgInBvc2l0aW9uIiwgImVuY29kZXIiLCAibG9va3VwIiwgInJldkxvb2t1cCIsICJjb2RlIiwgImkiLCAibGVuIiwgImlzT2JqZWN0IiwgIm9iamVjdCIsICJzb3J0T2JqZWN0IiwgIm5vcm1hbGl6ZWQiLCAic29ydGVkIiwgInNvcnRlZEtleXMiLCAiYSIsICJiIiwgImtleSIsICJpc0ltcG9ydE1hcCIsICJpbXBvcnRNYXAiLCAiaXNJbXBvcnRzIiwgImlzU2NvcGVzIiwgImltcG9ydHNNYXAiLCAic2NvcGVzIiwgInZhbHVlIiwgImlzU3BlY2lmaWVyTWFwIiwgInNwZWNpZmllck1hcCIsICJpc1VSTCIsICJ1cmwiLCAic29ydEFuZE5vcm1hbGl6ZVNwZWNpZmllck1hcCIsICJvcmlnaW5hbE1hcCIsICJiYXNlVVJMIiwgIm5vcm1hbGl6ZWQiLCAic3BlY2lmaWVyS2V5IiwgInZhbHVlIiwgIm5vcm1hbGl6ZWRTcGVjaWZpZXJLZXkiLCAibm9ybWFsaXplU3BlY2lmaWVyS2V5IiwgImFkZHJlc3NVUkwiLCAicGFyc2VVcmxMaWtlSW1wb3J0U3BlY2lmaWVyIiwgInNlcmlhbGl6ZVVSTCIsICJzb3J0T2JqZWN0IiwgInVybCIsICJzb3J0QW5kTm9ybWFsaXplU2NvcGVzIiwgInNjb3BlUHJlZml4IiwgInBvdGVudGlhbFNwZWNpZmllck1hcCIsICJpc1NwZWNpZmllck1hcCIsICJzY29wZVByZWZpeFVSTCIsICJub3JtYWxpemVkU2NvcGVQcmVmaXgiLCAic29ydGVkIiwgImtleSIsICJzcGVjaWZpZXIiLCAic3BlY2lhbFNjaGVtZXMiLCAiaXNTcGVjaWFsIiwgImFzVVJMIiwgInNjaGVtZSIsICJyZXNvbHZlSW1wb3J0c01hdGNoIiwgIm5vcm1hbGl6ZWRTcGVjaWZpZXIiLCAic3BlY2lmaWVyTWFwIiwgInJlc29sdXRpb25SZXN1bHQiLCAiaXNVUkwiLCAiYWZ0ZXJQcmVmaXgiLCAicmVzb2x2ZUltcG9ydE1hcCIsICJpbXBvcnRNYXAiLCAic29ydGVkQW5kTm9ybWFsaXplZEltcG9ydHMiLCAiaXNJbXBvcnRNYXAiLCAiaW1wb3J0cyIsICJzY29wZXMiLCAiaXNJbXBvcnRzIiwgInNvcnRlZEFuZE5vcm1hbGl6ZWRTY29wZXMiLCAiaXNTY29wZXMiLCAicmVzb2x2ZU1vZHVsZVNwZWNpZmllciIsICJiYXNlVVJMU3RyaW5nIiwgInNjb3BlSW1wb3J0cyIsICJzY29wZUltcG9ydHNNYXRjaCIsICJ0b3BMZXZlbEltcG9ydHNNYXRjaCIsICJvc1R5cGUiLCAiRGVubyIsICJuYXZpZ2F0b3IiLCAiaXNXaW5kb3dzIiwgIndpbjMyX2V4cG9ydHMiLCAiX19leHBvcnQiLCAiYmFzZW5hbWUiLCAiZGVsaW1pdGVyIiwgImRpcm5hbWUiLCAiZXh0bmFtZSIsICJmb3JtYXQiLCAiZnJvbUZpbGVVcmwiLCAiaXNBYnNvbHV0ZSIsICJqb2luIiwgIm5vcm1hbGl6ZSIsICJwYXJzZSIsICJyZWxhdGl2ZSIsICJyZXNvbHZlIiwgInNlcCIsICJ0b0ZpbGVVcmwiLCAidG9OYW1lc3BhY2VkUGF0aCIsICJhc3NlcnRQYXRoIiwgInBhdGgiLCAiaXNQb3NpeFBhdGhTZXBhcmF0b3IiLCAiY29kZSIsICJpc1BhdGhTZXBhcmF0b3IiLCAiaXNXaW5kb3dzRGV2aWNlUm9vdCIsICJub3JtYWxpemVTdHJpbmciLCAiYWxsb3dBYm92ZVJvb3QiLCAic2VwYXJhdG9yIiwgInJlcyIsICJsYXN0U2VnbWVudExlbmd0aCIsICJsYXN0U2xhc2giLCAiZG90cyIsICJpIiwgImxlbiIsICJsYXN0U2xhc2hJbmRleCIsICJfZm9ybWF0IiwgInNlcCIsICJwYXRoT2JqZWN0IiwgImRpciIsICJiYXNlIiwgIldISVRFU1BBQ0VfRU5DT0RJTkdTIiwgImVuY29kZVdoaXRlc3BhY2UiLCAic3RyaW5nIiwgImMiLCAiRGVub1N0ZEludGVybmFsRXJyb3IiLCAibWVzc2FnZSIsICJhc3NlcnQiLCAiZXhwciIsICJtc2ciLCAic2VwIiwgImRlbGltaXRlciIsICJyZXNvbHZlIiwgInBhdGhTZWdtZW50cyIsICJyZXNvbHZlZERldmljZSIsICJyZXNvbHZlZFRhaWwiLCAicmVzb2x2ZWRBYnNvbHV0ZSIsICJpIiwgInBhdGgiLCAiRGVubyIsICJhc3NlcnRQYXRoIiwgImxlbiIsICJyb290RW5kIiwgImRldmljZSIsICJpc0Fic29sdXRlIiwgImNvZGUiLCAiaXNQYXRoU2VwYXJhdG9yIiwgImoiLCAibGFzdCIsICJmaXJzdFBhcnQiLCAiaXNXaW5kb3dzRGV2aWNlUm9vdCIsICJub3JtYWxpemVTdHJpbmciLCAibm9ybWFsaXplIiwgInRhaWwiLCAiam9pbiIsICJwYXRocyIsICJwYXRoc0NvdW50IiwgImpvaW5lZCIsICJuZWVkc1JlcGxhY2UiLCAic2xhc2hDb3VudCIsICJhc3NlcnQiLCAiZmlyc3RMZW4iLCAicmVsYXRpdmUiLCAiZnJvbSIsICJ0byIsICJmcm9tT3JpZyIsICJ0b09yaWciLCAiZnJvbVN0YXJ0IiwgImZyb21FbmQiLCAiZnJvbUxlbiIsICJ0b1N0YXJ0IiwgInRvRW5kIiwgInRvTGVuIiwgImxlbmd0aCIsICJsYXN0Q29tbW9uU2VwIiwgImZyb21Db2RlIiwgInRvQ29kZSIsICJvdXQiLCAidG9OYW1lc3BhY2VkUGF0aCIsICJyZXNvbHZlZFBhdGgiLCAiZGlybmFtZSIsICJlbmQiLCAibWF0Y2hlZFNsYXNoIiwgIm9mZnNldCIsICJiYXNlbmFtZSIsICJleHQiLCAic3RhcnQiLCAiZHJpdmUiLCAiZXh0SWR4IiwgImZpcnN0Tm9uU2xhc2hFbmQiLCAiZXh0bmFtZSIsICJzdGFydERvdCIsICJzdGFydFBhcnQiLCAicHJlRG90U3RhdGUiLCAiZm9ybWF0IiwgInBhdGhPYmplY3QiLCAiX2Zvcm1hdCIsICJwYXJzZSIsICJyZXQiLCAiZnJvbUZpbGVVcmwiLCAidXJsIiwgInRvRmlsZVVybCIsICJob3N0bmFtZSIsICJwYXRobmFtZSIsICJlbmNvZGVXaGl0ZXNwYWNlIiwgInBvc2l4X2V4cG9ydHMiLCAiX19leHBvcnQiLCAiYmFzZW5hbWUiLCAiZGVsaW1pdGVyIiwgImRpcm5hbWUiLCAiZXh0bmFtZSIsICJmb3JtYXQiLCAiZnJvbUZpbGVVcmwiLCAiaXNBYnNvbHV0ZSIsICJqb2luIiwgIm5vcm1hbGl6ZSIsICJwYXJzZSIsICJyZWxhdGl2ZSIsICJyZXNvbHZlIiwgInNlcCIsICJ0b0ZpbGVVcmwiLCAidG9OYW1lc3BhY2VkUGF0aCIsICJzZXAiLCAiZGVsaW1pdGVyIiwgInJlc29sdmUiLCAicGF0aFNlZ21lbnRzIiwgInJlc29sdmVkUGF0aCIsICJyZXNvbHZlZEFic29sdXRlIiwgImkiLCAicGF0aCIsICJEZW5vIiwgImFzc2VydFBhdGgiLCAibm9ybWFsaXplU3RyaW5nIiwgImlzUG9zaXhQYXRoU2VwYXJhdG9yIiwgIm5vcm1hbGl6ZSIsICJpc0Fic29sdXRlIiwgInRyYWlsaW5nU2VwYXJhdG9yIiwgImpvaW4iLCAicGF0aHMiLCAiam9pbmVkIiwgImxlbiIsICJyZWxhdGl2ZSIsICJmcm9tIiwgInRvIiwgImZyb21TdGFydCIsICJmcm9tRW5kIiwgImZyb21MZW4iLCAidG9TdGFydCIsICJ0b0VuZCIsICJ0b0xlbiIsICJsZW5ndGgiLCAibGFzdENvbW1vblNlcCIsICJmcm9tQ29kZSIsICJ0b0NvZGUiLCAib3V0IiwgInRvTmFtZXNwYWNlZFBhdGgiLCAiZGlybmFtZSIsICJoYXNSb290IiwgImVuZCIsICJtYXRjaGVkU2xhc2giLCAiYmFzZW5hbWUiLCAiZXh0IiwgInN0YXJ0IiwgImV4dElkeCIsICJmaXJzdE5vblNsYXNoRW5kIiwgImNvZGUiLCAiZXh0bmFtZSIsICJzdGFydERvdCIsICJzdGFydFBhcnQiLCAicHJlRG90U3RhdGUiLCAiZm9ybWF0IiwgInBhdGhPYmplY3QiLCAiX2Zvcm1hdCIsICJwYXJzZSIsICJyZXQiLCAiZnJvbUZpbGVVcmwiLCAidXJsIiwgInRvRmlsZVVybCIsICJlbmNvZGVXaGl0ZXNwYWNlIiwgInBhdGgiLCAiaXNXaW5kb3dzIiwgIndpbjMyX2V4cG9ydHMiLCAicG9zaXhfZXhwb3J0cyIsICJqb2luIiwgIm5vcm1hbGl6ZSIsICJwYXRoIiwgImlzV2luZG93cyIsICJ3aW4zMl9leHBvcnRzIiwgInBvc2l4X2V4cG9ydHMiLCAiYmFzZW5hbWUiLCAiZGVsaW1pdGVyIiwgImRpcm5hbWUiLCAiZXh0bmFtZSIsICJmb3JtYXQiLCAiZnJvbUZpbGVVcmwiLCAiaXNBYnNvbHV0ZSIsICJqb2luIiwgIm5vcm1hbGl6ZSIsICJwYXJzZSIsICJyZWxhdGl2ZSIsICJyZXNvbHZlIiwgInNlcCIsICJ0b0ZpbGVVcmwiLCAidG9OYW1lc3BhY2VkUGF0aCIsICJwYXRoIiwgIkRlbm8iLCAibm9Db2xvciIsICJBTlNJX1BBVFRFUk4iLCAiTUlOX1JFQUQiLCAiTUFYX1NJWkUiLCAiREVGQVVMVF9CVUZGRVJfU0laRSIsICJ3YXNtIiwgImNhY2hlZFRleHREZWNvZGVyIiwgImhlYXAiLCAiaGVhcF9uZXh0IiwgImNhY2hlZFRleHRFbmNvZGVyIiwgIkdsb2JhbEh0dHBDYWNoZUZpbmFsaXphdGlvbiIsICJwdHIiLCAid2FzbSIsICJMb2NhbEh0dHBDYWNoZUZpbmFsaXphdGlvbiIsICJwdHIiLCAid2FzbSIsICJ1cmxUb0VzYnVpbGRSZXNvbHV0aW9uIiwgInVybCIsICJmcm9tRmlsZVVybCIsICJuYW1lc3BhY2UiLCAicmVhZERlbm9Db25maWciLCAicGF0aCIsICJmaWxlIiwgInJlcyIsICJtb2RfZXhwb3J0cyIsICJleHBhbmRFbWJlZGRlZEltcG9ydE1hcCIsICJpbXBvcnRNYXAiLCAibmV3SW1wb3J0cyIsICJzcGVjaWZpZXIiLCAidGFyZ2V0IiwgIm5ld1NwZWNpZmllciIsICJuZXdUYXJnZXQiLCAiSU5fTk9ERV9NT0RVTEVTIiwgIklOX05PREVfTU9EVUxFU19SRVNPTFZFRCIsICJkZW5vUmVzb2x2ZXJQbHVnaW4iLCAib3B0aW9ucyIsICJidWlsZCIsICJpbXBvcnRNYXAiLCAibm9kZU1vZHVsZXNQYXRocyIsICJleHRlcm5hbFJlZ2V4cHMiLCAiZXh0ZXJuYWwiLCAiaW1wb3J0TWFwVVJMIiwgImNvbmZpZyIsICJyZWFkRGVub0NvbmZpZyIsICJjb25maWdJbXBvcnRNYXAiLCAiZXhwYW5kRW1iZWRkZWRJbXBvcnRNYXAiLCAicmVzb2x2ZUltcG9ydE1hcCIsICJ0b0ZpbGVVcmwiLCAicmVzcCIsICJkYXRhIiwgImFyZ3MiLCAicmVzIiwgInJlZmVycmVyIiwgInJlc29sdmVkIiwgInJlc29sdmVNb2R1bGVTcGVjaWZpZXIiLCAiZXh0ZXJuYWxSZWdleHAiLCAicGF0aCIsICJuYW1lc3BhY2UiLCAidXJsVG9Fc2J1aWxkUmVzb2x1dGlvbiIsICJKU1JfUkVHSVNUUllfVVJMIiwgIkRFRkFVTFRfTE9BREVSIiwgInJlcyIsICJyZXNvbHZlciIsICJkZW5vUmVzb2x2ZXJQbHVnaW4iLCAiRVJSX01TR19NVVNUX05PVF9SRVRVUk4iLCAiVFJBTlNGT1JNX0ZVTkNUSU9OX05BTUUiLCAiUkVDT1ZFUllfRlVOQ1RJT05fTkFNRSIsICJERUZBVUxUX1ZBTFVFX05BTUUiLCAiRVJSX01TR19UUkFOU0ZPUk1FUl9NVVNUX05PVF9SRVRVUk4iLCAiRVJSX01TR19DQUxMRURfV0lUSCIsICJFUlJfTVNHX0RFRkFVTFRfVkFMVUVfTVVTVF9OT1RfQkUiLCAiRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOIiwgIk9LX1RZUEVfU1RSIiwgIkVSUl9UWVBFX1NUUiIsICJFUlJfTVNHX1VOV1JBUF9PS19CVVRfSU5QVVRfSVNfRVJSIiwgIkVSUl9NU0dfVU5XUkFQX0VSUl9CVVRfSU5QVVRfSVNfT0siLCAiRVJSX01TR19GT1JfRVJST1JfT0JKRUNUX0dFTkVSQVRFRF9CWV9VTldSQVBfT1JfVEhST1ciLCAiTVNHX0JVSUxUSU5fRVJST1JfSU5TVEFOQ0VfT0ZfQ1VSUkVOVF9SRUFMTSIsICJFUlJfTVNHX1RIUk9XTl9WQUxVRV9JU19OT1RfQlVJTFRJTl9FUlJPUl9JTlNUQU5DRSIsICJFUlJfTVNHX0NPTlRBSU5FRF9UWVBFX0VfU0hPVUxEX0JFX0JVSUxUSU5fRVJST1JfSU5TVEFOQ0UiLCAiRVJSX01TR19ET1RfQ0FVU0VfUFJPUFNfSVNfTk9UX0NVUlJFTlRfUkVBTE1fQlVJTFRJTl9FUlJPUl9JTlNUQU5DRSIsICJpc09rIiwgImlucHV0IiwgImNyZWF0ZU9rIiwgInZhbCIsICJpc0VyciIsICJjcmVhdGVFcnIiLCAiZXJyIiwgInVud3JhcE9rIiwgImV4cGVjdE9rIiwgInVud3JhcEVyciIsICJleHBlY3RFcnIiLCAibXNnIiwgIm1hcEFzeW5jRm9yUmVzdWx0IiwgImlucHV0IiwgInRyYW5zZm9ybWVyIiwgImlzRXJyIiwgImlubmVyIiwgInVud3JhcE9rIiwgIm1hcHBlZCIsICJjcmVhdGVPayIsICJFUlJfTVNHX01VU1RfTk9UX1JFVFVSTiIsICJUUkFOU0ZPUk1fRlVOQ1RJT05fTkFNRSIsICJSRUNPVkVSWV9GVU5DVElPTl9OQU1FIiwgIkRFRkFVTFRfVkFMVUVfTkFNRSIsICJFUlJfTVNHX1RSQU5TRk9STUVSX01VU1RfTk9UX1JFVFVSTiIsICJFUlJfTVNHX0NBTExFRF9XSVRIIiwgIkVSUl9NU0dfREVGQVVMVF9WQUxVRV9NVVNUX05PVF9CRSIsICJFUlJfTVNHX1JFQ09WRVJFUl9NVVNUX05PVF9SRVRVUk4iLCAiTk9fVkFMX1ZBTFVFX1RZUEVfU1RSIiwgIkVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUiLCAiRVJSX01TR19VTldSQVBfTk9fVkFMX0ZPUl9NQVlCRSIsICJFUlJfTVNHX0RFRkFVTFRfVkFMVUVfTVVTVF9OT1RfQkVfTk9fVkFMX0ZPUl9NQVlCRSIsICJFUlJfTVNHX1JFQ09WRVJFUl9NVVNUX05PVF9SRVRVUk5fTk9fVkFMX0ZPUl9NQVlCRSIsICJpc05vdE51bGxPclVuZGVmaW5lZCIsICJpbnB1dCIsICJjcmVhdGVPayIsICJ2YWwiLCAiY3JlYXRlRXJyIiwgImVyciIsICJva09yRWxzZUZvck1heWJlIiwgImlucHV0IiwgInJlY292ZXJlciIsICJpc05vdE51bGxPclVuZGVmaW5lZCIsICJjcmVhdGVPayIsICJmYWxsYmFjayIsICJjcmVhdGVFcnIiLCAiaXNBbGxvd2VkQ29ubmVjdFNyYyIsICJ1cmwiLCAiY29ubmVjdFNyYyIsICJhc3NlcnRQYXRoIiwgInBhdGgiLCAic3RyaXBTdWZmaXgiLCAibmFtZSIsICJzdWZmaXgiLCAibGVuRGlmZiIsICJpIiwgImxhc3RQYXRoU2VnbWVudCIsICJwYXRoIiwgImlzU2VwIiwgInN0YXJ0IiwgIm1hdGNoZWROb25TZXBhcmF0b3IiLCAiZW5kIiwgImFzc2VydEFyZ3MiLCAiYXNzZXJ0UGF0aCIsICJzdHJpcFRyYWlsaW5nU2VwYXJhdG9ycyIsICJzZWdtZW50IiwgImlzU2VwIiwgImVuZCIsICJpIiwgImlzUGF0aFNlcGFyYXRvciIsICJjb2RlIiwgImlzV2luZG93c0RldmljZVJvb3QiLCAiYXNzZXJ0QXJnIiwgInVybCIsICJmcm9tRmlsZVVybCIsICJ1cmwiLCAiYXNzZXJ0QXJnIiwgInBhdGgiLCAiaXNBYnNvbHV0ZSIsICJwYXRoIiwgImFzc2VydFBhdGgiLCAibGVuIiwgImNvZGUiLCAiaXNQYXRoU2VwYXJhdG9yIiwgImlzV2luZG93c0RldmljZVJvb3QiLCAiV0hJVEVTUEFDRV9FTkNPRElOR1MiLCAiZW5jb2RlV2hpdGVzcGFjZSIsICJzdHJpbmciLCAiYyIsICJ0b0ZpbGVVcmwiLCAicGF0aCIsICJpc0Fic29sdXRlIiwgImhvc3RuYW1lIiwgInBhdGhuYW1lIiwgInVybCIsICJlbmNvZGVXaGl0ZXNwYWNlIiwgImlzUG9zaXhQYXRoU2VwYXJhdG9yIiwgImNvZGUiLCAiYmFzZW5hbWUiLCAicGF0aCIsICJzdWZmaXgiLCAiYXNzZXJ0QXJncyIsICJsYXN0U2VnbWVudCIsICJsYXN0UGF0aFNlZ21lbnQiLCAiaXNQb3NpeFBhdGhTZXBhcmF0b3IiLCAic3RyaXBwZWRTZWdtZW50IiwgInN0cmlwVHJhaWxpbmdTZXBhcmF0b3JzIiwgInN0cmlwU3VmZml4IiwgImV4dG5hbWUiLCAicGF0aCIsICJhc3NlcnRQYXRoIiwgInN0YXJ0RG90IiwgInN0YXJ0UGFydCIsICJlbmQiLCAibWF0Y2hlZFNsYXNoIiwgInByZURvdFN0YXRlIiwgImkiLCAiY29kZSIsICJpc1Bvc2l4UGF0aFNlcGFyYXRvciIsICJmcm9tRmlsZVVybCIsICJ1cmwiLCAiYXNzZXJ0QXJnIiwgImlzQWJzb2x1dGUiLCAicGF0aCIsICJhc3NlcnRQYXRoIiwgImlzUG9zaXhQYXRoU2VwYXJhdG9yIiwgInRvRmlsZVVybCIsICJwYXRoIiwgImlzQWJzb2x1dGUiLCAidXJsIiwgImVuY29kZVdoaXRlc3BhY2UiLCAib3NUeXBlIiwgIkRlbm8iLCAibmF2aWdhdG9yIiwgImlzV2luZG93cyIsICJmcm9tRmlsZVVybCIsICJ1cmwiLCAiaXNXaW5kb3dzIiwgInRvRmlsZVVybCIsICJwYXRoIiwgImlzV2luZG93cyIsICJ1cmxUb0VzYnVpbGRSZXNvbHV0aW9uIiwgInVybCIsICJmcm9tRmlsZVVybCIsICJuYW1lc3BhY2UiLCAiZXNidWlsZFJlc29sdXRpb25Ub1VSTCIsICJzcGVjaWZpZXIiLCAidG9GaWxlVXJsIiwgImV4dHJhY3RTb3VyY2VNYXBVUkwiLCAiY29kZSIsICJiYXNlIiwgInJlc3VsdCIsICJZIiwgImV4dHJhY3QiLCAibCIsICJ1cmwiLCAic3RhcnQiLCAiZW5kIiwgInMiLCAiYSIsICJjIiwgIm1hdGNoIiwgIm4iLCAic3RyaXAiLCAidXJsIiwgImJhc2VuYW1lIiwgInVybCIsICJzdWZmaXgiLCAic3RyaXAiLCAiZXh0bmFtZSIsICJ1cmwiLCAic3RyaXAiLCAibG9hZGVyTGlzdCIsICJpc0xvYWRlciIsICJsb2FkZXIiLCAiaXNMb2FkZXJXaGljaENhbkluY2x1ZGVTb3VyY2VNYXBwaW5nVVJMIiwgInJlc3BvbnNlVG9Mb2FkZXIiLCAicmVzcG9uc2UiLCAidXJsIiwgImZpbGVuYW1lIiwgImJhc2VuYW1lIiwgImV4dCIsICJleHRuYW1lIiwgIm1pbWVUeXBlIiwgIm1pbWVUeXBlVG9Mb2FkZXIiLCAic3ViVHlwZSIsICJjb21wYXJlTnVtYmVyIiwgImEiLCAiYiIsICJjaGVja0lkZW50aWZpZXIiLCAidjEiLCAidjIiLCAiY29tcGFyZUlkZW50aWZpZXIiLCAibGVuZ3RoIiwgImkiLCAiTlVNRVJJQ19JREVOVElGSUVSIiwgIk5PTl9OVU1FUklDX0lERU5USUZJRVIiLCAiVkVSU0lPTl9DT1JFIiwgIlBSRVJFTEVBU0VfSURFTlRJRklFUiIsICJQUkVSRUxFQVNFIiwgIkJVSUxEX0lERU5USUZJRVIiLCAiQlVJTEQiLCAiRlVMTF9WRVJTSU9OIiwgIkZVTExfUkVHRVhQIiwgIkNPTVBBUkFUT1IiLCAiV0lMRENBUkRfSURFTlRJRklFUiIsICJYUkFOR0VfSURFTlRJRklFUiIsICJYUkFOR0UiLCAiT1BFUkFUT1JfWFJBTkdFX1JFR0VYUCIsICJDT01QQVJBVE9SX1JFR0VYUCIsICJpc1ZhbGlkTnVtYmVyIiwgInZhbHVlIiwgIk1BWF9MRU5HVEgiLCAiTlVNRVJJQ19JREVOVElGSUVSX1JFR0VYUCIsICJOVU1FUklDX0lERU5USUZJRVIiLCAicGFyc2VQcmVyZWxlYXNlIiwgInByZXJlbGVhc2UiLCAiaWQiLCAibnVtYmVyIiwgImlzVmFsaWROdW1iZXIiLCAicGFyc2VCdWlsZCIsICJidWlsZG1ldGFkYXRhIiwgInBhcnNlTnVtYmVyIiwgImlucHV0IiwgImVycm9yTWVzc2FnZSIsICJpc1dpbGRjYXJkQ29tcGFyYXRvciIsICJjIiwgImNvbXBhcmUiLCAiczAiLCAiczEiLCAiY29tcGFyZU51bWJlciIsICJjaGVja0lkZW50aWZpZXIiLCAiY29tcGFyZUlkZW50aWZpZXIiLCAiTUFYIiwgIk1JTiIsICJJTlZBTElEIiwgIkFOWSIsICJBTEwiLCAiTk9ORSIsICJmb3JtYXROdW1iZXIiLCAidmFsdWUiLCAiZm9ybWF0IiwgInNlbXZlciIsICJpc1dpbGRjYXJkQ29tcGFyYXRvciIsICJtYWpvciIsICJtaW5vciIsICJwYXRjaCIsICJwcmUiLCAiYnVpbGQiLCAidiIsICJ0ZXN0Q29tcGFyYXRvciIsICJ2ZXJzaW9uIiwgImNvbXBhcmF0b3IiLCAiaXNXaWxkY2FyZENvbXBhcmF0b3IiLCAiY21wIiwgImNvbXBhcmUiLCAidGVzdENvbXBhcmF0b3JTZXQiLCAic2V0IiwgIm1ham9yIiwgIm1pbm9yIiwgInBhdGNoIiwgInByZXJlbGVhc2UiLCAic2F0aXNmaWVzIiwgInZlcnNpb24iLCAicmFuZ2UiLCAic2V0IiwgInRlc3RDb21wYXJhdG9yU2V0IiwgImdyZWF0ZXJUaGFuIiwgInMwIiwgInMxIiwgImNvbXBhcmUiLCAibWF4U2F0aXNmeWluZyIsICJ2ZXJzaW9ucyIsICJyYW5nZSIsICJtYXgiLCAidmVyc2lvbiIsICJzYXRpc2ZpZXMiLCAiZ3JlYXRlclRoYW4iLCAicGFyc2VDb21wYXJhdG9yIiwgImNvbXBhcmF0b3IiLCAiZ3JvdXBzIiwgIkNPTVBBUkFUT1JfUkVHRVhQIiwgIk5PTkUiLCAib3BlcmF0b3IiLCAicHJlcmVsZWFzZSIsICJidWlsZG1ldGFkYXRhIiwgInNlbXZlciIsICJwYXJzZU51bWJlciIsICJwYXJzZVByZXJlbGVhc2UiLCAicGFyc2VCdWlsZCIsICJBTlkiLCAiaXNXaWxkY2FyZCIsICJpZCIsICJoYW5kbGVMZWZ0SHlwaGVuUmFuZ2VHcm91cHMiLCAibGVmdEdyb3VwIiwgImhhbmRsZVJpZ2h0SHlwaGVuUmFuZ2VHcm91cHMiLCAicmlnaHRHcm91cHMiLCAicGFyc2VIeXBoZW5SYW5nZSIsICJyYW5nZSIsICJsZWZ0TWF0Y2giLCAiWFJBTkdFIiwgImxlZnRMZW5ndGgiLCAiaHlwaGVuTWF0Y2giLCAiaHlwaGVuTGVuZ3RoIiwgImZyb20iLCAidG8iLCAiaGFuZGxlQ2FyZXRPcGVyYXRvciIsICJtYWpvcklzV2lsZGNhcmQiLCAibWlub3JJc1dpbGRjYXJkIiwgInBhdGNoSXNXaWxkY2FyZCIsICJtYWpvciIsICJtaW5vciIsICJwYXRjaCIsICJBTEwiLCAiaGFuZGxlVGlsZGVPcGVyYXRvciIsICJoYW5kbGVMZXNzVGhhbk9wZXJhdG9yIiwgImJ1aWxkIiwgImhhbmRsZUxlc3NUaGFuT3JFcXVhbE9wZXJhdG9yIiwgImhhbmRsZUdyZWF0ZXJUaGFuT3BlcmF0b3IiLCAiaGFuZGxlR3JlYXRlck9yRXF1YWxPcGVyYXRvciIsICJoYW5kbGVFcXVhbE9wZXJhdG9yIiwgInBhcnNlT3BlcmF0b3JSYW5nZSIsICJzdHJpbmciLCAiT1BFUkFUT1JfWFJBTkdFX1JFR0VYUCIsICJwYXJzZU9wZXJhdG9yUmFuZ2VzIiwgInBhcnNlUmFuZ2UiLCAicGFyc2UiLCAidmVyc2lvbiIsICJNQVhfTEVOR1RIIiwgImdyb3VwcyIsICJGVUxMX1JFR0VYUCIsICJtYWpvciIsICJwYXJzZU51bWJlciIsICJtaW5vciIsICJwYXRjaCIsICJwcmVyZWxlYXNlIiwgInBhcnNlUHJlcmVsZWFzZSIsICJidWlsZCIsICJwYXJzZUJ1aWxkIiwgInRyeVBhcnNlUmFuZ2UiLCAicmFuZ2UiLCAicGFyc2VSYW5nZSIsICJ0cnlQYXJzZSIsICJ2ZXJzaW9uIiwgInBhcnNlIiwgInJvYnVzdEZldGNoIiwgInJlcXVlc3QiLCAicmVzIiwgImEiLCAiYyIsICJKU1JfUkVHSVNUT1JZX0VORFBPSU5UIiwgImdldEpzclBhY2thZ2VNZXRhZGF0YSIsICJuYW1lIiwgIm9wdGlvbnMiLCAicmVzdWx0IiwgInJvYnVzdEZldGNoIiwgImciLCAicmVzIiwgImdldEpzclBhY2thZ2VWZXJzaW9uTWV0YWRhdGEiLCAibmFtZSIsICJ2ZXJzaW9uIiwgIm9wdGlvbnMiLCAicmVzdWx0IiwgInJvYnVzdEZldGNoIiwgIkpTUl9SRUdJU1RPUllfRU5EUE9JTlQiLCAiZyIsICJyZXMiLCAiZ2V0TnBtUGFja2FnZU1ldGFkYXRhIiwgIm5hbWUiLCAib3B0aW9ucyIsICJyZXN1bHQiLCAicm9idXN0RmV0Y2giLCAiZyIsICJyZXMiLCAiaW52YWxpZFBhY2thZ2VWZXJzaW9uRXJyb3IiLCAic3BlY2lmaWVyIiwgImF2YWlsYWJsZVZlcnNpb25zIiwgImludmFsaWRFbnRyeVBvaW50RXJyb3IiLCAiYXZhaWxhYmxlRW50cnlQb2ludHMiLCAicmVzb2x2ZU5wbVNwZWNpZmllciIsICJucG0iLCAib3B0aW9ucyIsICJ2ZXJzaW9ucyIsICJ2ZXJzaW9uIiwgIm1heFNhdGlzZnlpbmciLCAiZXhwb3J0cyIsICJkZWZhdWx0RXhwb3J0cyIsICJwYXRoIiwgImEiLCAidG9Fc21TaFVybCIsICJmb3JtYXQiLCAiYyIsICJyZXN1bHQiLCAiZ2V0TnBtUGFja2FnZU1ldGFkYXRhIiwgImwiLCAibWV0YWRhdGEiLCAicyIsICJ2IiwgInRyeVBhcnNlIiwgImtleSIsICJuYW1lIiwgInJlc29sdmVKc3JTcGVjaWZpZXIiLCAianNyIiwgInRvSnNyVXJsIiwgInJlc29sdmVKc3JWZXJzaW9uIiwgInJlc3VsdDIiLCAiZ2V0SnNyUGFja2FnZVZlcnNpb25NZXRhZGF0YSIsICJnZXRKc3JQYWNrYWdlTWV0YWRhdGEiLCAib25seVNjb3BlUHJvdmlkZWRFcnJvciIsICJzcGVjaWZpZXIiLCAicGFja2FnZU5vdEZvdW5kRXJyb3IiLCAicGFyc2VOcG1TcGVjaWZpZXIiLCAiYyIsICJwYXRoIiwgInN0YXJ0SW5kZXgiLCAicGF0aFN0YXJ0SW5kZXgiLCAidmVyc2lvblN0YXJ0SW5kZXgiLCAiZmlyc3RTbGFzaCIsICJuYW1lIiwgInRhZyIsICJyYW5nZSIsICJ0cnlQYXJzZVJhbmdlIiwgIkFMTCIsICJyYXdFbnRyeVBvaW50IiwgImVudHJ5UG9pbnQiLCAibnBtIiwgImEiLCAicGFyc2VKc3JTcGVjaWZpZXIiLCAianNyIiwgInRvRGF0YVVSTCIsICJkYXRhIiwgInJlc29sdmUiLCAicmVqZWN0IiwgInJlYWRlciIsICJkYXRhVVJMIiwgImluZGV4IiwgInJlbW90ZUxvYWRlciIsICJpbml0IiwgInJlc29sdmVkVmVyc2lvbnMiLCAicHJveHkiLCAiYXJncyIsICJpc05wbSIsICJyZXN1bHQiLCAicGFyc2VOcG1TcGVjaWZpZXIiLCAicGFyc2VKc3JTcGVjaWZpZXIiLCAiZXNidWlsZFJlc29sdXRpb25Ub1VSTCIsICJsIiwgImRldGFpbCIsICJ1IiwgInJlc3VsdDIiLCAicmVzb2x2ZU5wbVNwZWNpZmllciIsICJyZXNvbHZlSnNyU3BlY2lmaWVyIiwgInMiLCAidXJsVG9Fc2J1aWxkUmVzb2x1dGlvbiIsICJvbkxvYWQiLCAib25SZXNvbHZlIiwgImluaXRpYWxPcHRpb25zIiwgInByb3RvY29sIiwgInN1cHBvcnRlZFByb3RvY29scyIsICJub3RTdXBwb3J0ZWRQcm90b2NvbHMiLCAiaGFuZGxlUmVzb2x2ZSIsICJsb2FkIiwgInVybCIsICJjYWNoZUZpcnN0IiwgInBhdHRlcm4iLCAiZmV0Y2giLCAicm9idXN0RmV0Y2giLCAicmVzIiwgImlzQ2FjaGUiLCAibG9hZGVyIiwgInJlc3BvbnNlVG9Mb2FkZXIiLCAiYmxvYiIsICJpc0xvYWRlcldoaWNoQ2FuSW5jbHVkZVNvdXJjZU1hcHBpbmdVUkwiLCAiY29udGVudHMiLCAiZXh0cmFjdFNvdXJjZU1hcFVSTCIsICJuIiwgInNvdXJjZU1hcHBpbmdVUkwiLCAic3RhcnQiLCAiZW5kIiwgImRhdGFVUkwiLCAidG9EYXRhVVJMIiwgIlIiLCAidCIsICJyIiwgIm4iLCAibyIsICJjIiwgImwiLCAiYmUiLCAiUGUiLCAiTSIsICJSZSIsICJlIiwgInYiLCAicyIsICJpIiwgImEiLCAiRCIsICJTIiwgImgiLCAiZiIsICJkIiwgInUiLCAicCIsICJBIiwgIlQiLCAiU2UiLCAiTCIsICJJIiwgIlUiLCAiJCIsICJWIiwgIlkiLCAiZyIsICJtIiwgIk8iLCAiUCIsICJ4ZSIsICJYIiwgIloiLCAiRiIsICJrIiwgIngiLCAiQiIsICJxIiwgIkoiLCAiUSIsICJFZSIsICJXIiwgImVlIiwgIk4iLCAidGUiLCAicmUiLCAibmUiLCAiaiIsICJ6IiwgInNlIiwgImllIiwgImFlIiwgIm9lIiwgIl8iLCAiSyIsICJjZSIsICJ5IiwgImxlIiwgImZlIiwgImhlIiwgInVlIiwgImRlIiwgInBlIiwgIkgiLCAiI2kiLCAiI24iLCAiI3QiLCAiI2UiLCAiI3MiLCAiI2wiLCAiI28iLCAiI2QiLCAiI3AiLCAiI2ciLCAiI2IiLCAiI2YiLCAiI3IiLCAiI2giLCAiI3UiLCAiI0EiLCAiI1QiLCAiI1AiLCAiI0MiLCAiI0UiLCAiI1MiLCAiI3giLCAiI08iLCAiI3kiLCAiI3ciLCAiI2siLCAiI2MiLCAiI1IiLCAiI20iLCAiI2EiLCAiRyIsICJFIiwgImdlIiwgImIiLCAiQyIsICJ3IiwgIk9lIiwgImtlIiwgIm1lIiwgIlVSTFBhdHRlcm4iLCAiaW5pdGlhbGl6ZWQiLCAibG9hZCIsICJ3YXNtIiwgIndvcmtlclVSTCIsICJpbml0aWFsaXplIiwgImVudHJ5UG9pbnQiLCAib3V0cHV0RmlsZXMiLCAiYnVpbGQiLCAicmVzb2x2ZXIiLCAicmVtb3RlTG9hZGVyIiwgImZldGNoQ09SUyIsICJyZXEiLCAiY2FjaGVGaXJzdCIsICJmZXRjaF8iLCAiaXNBbGxvd2VkQ29ubmVjdFNyYyIsICJyZXN1bHQiLCAiYXR0ZW1wdEZyb21DYWNoZSIsICJyZXMiLCAic2F2ZUFwaUNhY2hlIiwgImEiLCAiYyIsICJlIiwgImZpbmRMYXRlc3RDYWNoZSIsICJpc0F2YWlsYWJsZUV4dGVuc2lvbnMiLCAiZXh0ZW5zaW9uIiwgImNoZWNrQ2lyY2xlRmlsbCIsICJpY29uIiwgImNyb3NzQ2lyY2xlIiwgInNwaW5uZXIiLCAicGxheSIsICJ0b29sdGlwIiwgInRleHQiLCAieCIsICJ5IiwgImNyZWF0ZUNvbnRhaW5lciIsICJpbm5lciIsICJoZWlnaHQiLCAicmVzb2x2ZSIsICJzdGF0dXNCdXR0b24iLCAiYSIsICJ2aXNpYmxlIiwgInNob3ciLCAiaGlkZSIsICJ0b29sdGlwIiwgInN0YXR1cyIsICJtZXNzYWdlIiwgInNwaW5uZXIiLCAiY2hlY2tDaXJjbGVGaWxsIiwgImNyb3NzQ2lyY2xlIiwgInRvcCIsICJsZWZ0IiwgImV4ZWNCdXR0b24iLCAib25DbGljayIsICJhIiwgInBsYXkiLCAiZXhlY01lbnUiLCAib25DbGljayIsICJzdGF0dXMiLCAic2V0U3RhdHVzIiwgInN0YXR1c0J1dHRvbiIsICJtZW51IiwgImV4ZWNCdXR0b24iLCAic2xlZXAiLCAibWlsbGlzZWNvbmRzIiwgInJlc29sdmUiLCAidGhyb3R0bGUiLCAiY2FsbGJhY2siLCAib3B0aW9ucyIsICJ0cmFpbGluZyIsICJpbnRlcnZhbCIsICJxdWV1ZSIsICJydW5uaW5nIiwgInB1c2giLCAiZGF0YSIsICJwb3AiLCAicnVuTmV4dCIsICJzbGVlcCIsICJwYXJhbWV0ZXJzIiwgInJlc29sdmUiLCAicmVqZWN0IiwgInJlc3VsdCIsICJlIiwgImJ1bmRsZSIsICJzZXR1cCIsICJ3YXNtIiwgIndvcmtlclVSTCIsICJtZW51cyIsICJjYWxsYmFjayIsICJ0aHJvdHRsZSIsICJtZW51IiwgInNldFN0YXR1cyIsICJmaWxlcyIsICJnZXRDb2RlRmlsZXMiLCAidGFrZUludGVybmFsTGluZXMiLCAiZmlsZSIsICJleHRlbnNpb24iLCAiaXNBdmFpbGFibGVFeHRlbnNpb25zIiwgImlkIiwgImxpbmUiLCAiZXhlY01lbnUiLCAibG9hZCIsICJjb250ZW50cyIsICJlIiwgIkNhbmRpZGF0ZSIsICJ0aXRsZSIsICJwcm9qZWN0cyIsICJzZWxlY3RlZCIsICJjb25maXJtIiwgInNlIiwgIkJ1dHRvbiIsICJwcm9qZWN0IiwgIk1hcmsiLCAiZW5jb2RlVGl0bGVVUkkiLCAidXNlQ29uZmlybSIsICJtYXJrIiwgIk4iLCAiTSIsICJ1c2VTZWxlY3QiLCAiaXRlbXMiLCAic2VsZWN0b3IiLCAic2VsZWN0ZWRJZCIsICJzZXRTZWxlY3RlZElkIiwgIkIiLCAibmV4dCIsICJNIiwgImluaXQiLCAicHJldiIsICJpbmRleCIsICJpdGVtIiwgInNlbGVjdEZpcnN0IiwgInNlbGVjdExhc3QiLCAidXNlUG9zaXRpb24iLCAicG9zIiwgInN0YW5kYXJkRWxlbWVudCIsICJ1cGRhdGVTdGFuZGFyZEVsZW1lbnQiLCAiQiIsICJzdHlsZSIsICJUIiwgInBhcmVudFJlY3QiLCAicmVjdCIsICJnZXRDaGFyRE9NIiwgImtleSIsICJ1c2VQcm9qZWN0RmlsdGVyIiwgInByb2plY3RzIiwgIm9wdGlvbnMiLCAiZW5hYmxlUHJvamVjdHMiLCAic2V0RW5hYmxlUHJvamVjdHMiLCAiQiIsICJnZXRFbmFibGVzIiwgInNldCIsICJNIiwgInByb2plY3QiLCAiZmxhZyIsICJzZXRGcmFnIiwgInciLCAibGlzdGVuZXIiLCAiZSIsICJlbmFibGVTZWxmUHJvamVjdCIsICJpbml0IiwgInZhbHVlIiwgInNldEVuYWJsZXMiLCAibGlzdCIsICJwIiwgIm9sZCIsICJ1c2VPUyIsICJUIiwgImRldGVjdFVSTCIsICJ0ZXh0IiwgImJhc2UiLCAiZSIsICJQcm9ncmVzcyIsICJwcm9ncmVzcyIsICJzZSIsICJDb21wbGV0aW9uIiwgInBvc2l0aW9uIiwgInN0YXJ0IiwgImVuYWJsZVNlbGZQcm9qZWN0T25TdGFydCIsICJwcm9qZWN0cyIsICJwcm9wcyIsICJlbmFibGVQcm9qZWN0cyIsICJzZXQiLCAidXNlUHJvamVjdEZpbHRlciIsICJ1cGRhdGVTdGFuZGFyZEVsZW1lbnQiLCAidG9wIiwgImxlZnQiLCAicmlnaHQiLCAidXNlUG9zaXRpb24iLCAib3MiLCAidXNlT1MiLCAic2UiLCAiTiIsICJTb3VyY2VGaWx0ZXIiLCAiSXRlbUxpc3QiLCAiY29uZmlybUFmdGVyIiwgImNhbmNlbCIsICJxdWVyeSIsICJpdGVtcyIsICJwcm9ncmVzcyIsICJjYWxsYmFjayIsICJsaW1pdCIsICJtYXJrIiwgImNvbmZpcm0iLCAiTSIsICJ0aXRsZSIsICJwcm9qZWN0IiwgInRleHQiLCAicHJldiIsICJsaW5lIiwgImlzRXh0ZXJuYWxQcm9qZWN0TW9kZSIsICJUIiwgImNhbmRpZGF0ZXNQcm9wcyIsICJyZXN1bHQiLCAiaXRlbSIsICJkZXRlY3RVUkwiLCAic2VsZWN0ZWRJZCIsICJuZXh0IiwgInNlbGVjdExhc3QiLCAic2VsZWN0Rmlyc3QiLCAidXNlU2VsZWN0IiwgInNlbGVjdG9yIiwgImNvbmZpcm1TZWxlY3RlZCIsICJjYW5kaWRhdGUiLCAidyIsICJpbml0IiwgInN0eWxlIiwgInJlZiIsICJlbGVtZW50IiwgInJvb3QiLCAiQ2FuZGlkYXRlIiwgIlByb2dyZXNzIiwgInByb2plY3RTY29yZSIsICJpdGVtQ291bnQiLCAiZnJlZXplVW50aWwiLCAicHJvamVjdFByb3BzIiwgImEiLCAiYiIsICJ0ZXh0SW5wdXQiLCAiTWFyayIsICJkZWJ1Z01vZGUiLCAic2V0RGVidWdNb2RlIiwgIm1vZGUiLCAiY3JlYXRlRGVidWciLCAiZmlsZW5hbWUiLCAia2V5IiwgInZhbHVlIiwgImFyZ3MiLCAiYXNzZXJ0aW9uIiwgImxhYmVsIiwgImRlY29kZSIsICJsaW5rIiwgInRpdGxlIiwgImltYWdlIiwgInVwZGF0ZWQiLCAibGlua3MiLCAiZW5jb2RlIiwgImNvbnZlcnRMaW5rcyIsICJwYWdlcyIsICJsaW5rTWFwIiwgInBhZ2UiLCAidGl0bGVMYyIsICJ0b1RpdGxlTGMiLCAibGluayIsICJsaW5rTGMiLCAiZW5jb2RlIiwgImxvZ2dlciIsICJjcmVhdGVEZWJ1ZyIsICJkb3dubG9hZExpbmtzIiwgInByb2plY3QiLCAiZm9sbG93aW5nSWQiLCAicGFnZXMiLCAidGFnIiwgInJlcyIsICJnZXRMaW5rcyIsICJyZXN1bHQiLCAiY29udmVydExpbmtzIiwgImZldGNoUHJvamVjdFN0YXR1cyIsICJwcm9qZWN0cyIsICJwcm9qZWN0SWRzIiwgIm5ld1Byb2plY3RzIiwgImNoZWNrZWRNYXAiLCAicHJvamVjdCIsICJyZXN1bHQiLCAibGlzdFByb2plY3RzIiwgIm5hbWUiLCAicmVzIiwgImdldFByb2plY3QiLCAiaW5zdGFuY2VPZkFueSIsICJvYmplY3QiLCAiY29uc3RydWN0b3JzIiwgImMiLCAiaWRiUHJveHlhYmxlVHlwZXMiLCAiY3Vyc29yQWR2YW5jZU1ldGhvZHMiLCAiZ2V0SWRiUHJveHlhYmxlVHlwZXMiLCAiZ2V0Q3Vyc29yQWR2YW5jZU1ldGhvZHMiLCAidHJhbnNhY3Rpb25Eb25lTWFwIiwgInRyYW5zZm9ybUNhY2hlIiwgInJldmVyc2VUcmFuc2Zvcm1DYWNoZSIsICJwcm9taXNpZnlSZXF1ZXN0IiwgInJlcXVlc3QiLCAicHJvbWlzZSIsICJyZXNvbHZlIiwgInJlamVjdCIsICJ1bmxpc3RlbiIsICJzdWNjZXNzIiwgImVycm9yIiwgIndyYXAiLCAiY2FjaGVEb25lUHJvbWlzZUZvclRyYW5zYWN0aW9uIiwgInR4IiwgImRvbmUiLCAiY29tcGxldGUiLCAiaWRiUHJveHlUcmFwcyIsICJ0YXJnZXQiLCAicHJvcCIsICJyZWNlaXZlciIsICJ2YWx1ZSIsICJyZXBsYWNlVHJhcHMiLCAiY2FsbGJhY2siLCAid3JhcEZ1bmN0aW9uIiwgImZ1bmMiLCAiYXJncyIsICJ1bndyYXAiLCAidHJhbnNmb3JtQ2FjaGFibGVWYWx1ZSIsICJuZXdWYWx1ZSIsICJvcGVuREIiLCAibmFtZSIsICJ2ZXJzaW9uIiwgImJsb2NrZWQiLCAidXBncmFkZSIsICJibG9ja2luZyIsICJ0ZXJtaW5hdGVkIiwgIm9wZW5Qcm9taXNlIiwgImV2ZW50IiwgImRiIiwgImRlbGV0ZURCIiwgInJlYWRNZXRob2RzIiwgIndyaXRlTWV0aG9kcyIsICJjYWNoZWRNZXRob2RzIiwgImdldE1ldGhvZCIsICJ0YXJnZXRGdW5jTmFtZSIsICJ1c2VJbmRleCIsICJpc1dyaXRlIiwgIm1ldGhvZCIsICJzdG9yZU5hbWUiLCAib2xkVHJhcHMiLCAiYWR2YW5jZU1ldGhvZFByb3BzIiwgIm1ldGhvZE1hcCIsICJhZHZhbmNlUmVzdWx0cyIsICJpdHRyUHJveGllZEN1cnNvclRvT3JpZ2luYWxQcm94eSIsICJjdXJzb3JJdGVyYXRvclRyYXBzIiwgImNhY2hlZEZ1bmMiLCAiaXRlcmF0ZSIsICJjdXJzb3IiLCAicHJveGllZEN1cnNvciIsICJpc0l0ZXJhdG9yUHJvcCIsICJsb2dnZXIiLCAiY3JlYXRlRGVidWciLCAiZGIiLCAib3BlbiIsICJGIiwgIm5hbWUiLCAid3JpdGUiLCAiZGF0YSIsICJsaXN0ZW5lcnMiLCAiZW1pdENoYW5nZSIsICJwcm9qZWN0cyIsICJldmVudCIsICJlbWl0Q2hhbmdlXyIsICJiYyIsICJub3RpZnlDaGFubmVsTmFtZSIsICJsaXN0ZW5lciIsICJwcm9qZWN0IiwgImUiLCAic3Vic2NyaWJlIiwgImxpc3RlbmVyczIiLCAibG9nZ2VyIiwgImNyZWF0ZURlYnVnIiwgImNoZWNrIiwgInByb2plY3RzIiwgInVwZGF0ZUludGVydmFsIiwgImRiIiwgIm9wZW4iLCAicHJvamVjdHNNYXliZU5lZWRlZFVwZ3JhZGUiLCAicHJvamVjdFN0YXR1cyIsICJ0eCIsICJwcm9qZWN0IiwgInN0YXR1cyIsICJjaGVja2VkIiwgIm5vdyIsICJ0ZW1wU3RhdHVzIiwgInVwZGF0ZWRQcm9qZWN0cyIsICJyZXN1bHQiLCAicmVzIiwgImZldGNoUHJvamVjdFN0YXR1cyIsICJyZXMyIiwgImRvd25sb2FkTGlua3MiLCAiZGF0YSIsICJ3cml0ZSIsICJlbWl0Q2hhbmdlIiwgInN0b3JlIiwgImxvYWQiLCAibGlzdCIsICJzdGFydCIsICJzb3VyY2UiLCAibXMiLCAiayIsICJlIiwgImxvZ2dlciIsICJjcmVhdGVEZWJ1ZyIsICJ1c2VTb3VyY2UiLCAicHJvamVjdHMiLCAiY2FuZGlkYXRlcyIsICJzZXRDYW5kaWRhdGVzIiwgIkIiLCAidXBkYXRlIiwgIk0iLCAic291cmNlcyIsICJzdGFydCIsICJyZXN1bHQiLCAicHJvamVjdCIsICJsaW5rcyIsICJjb21wcmVzc2VkTGluayIsICJ0aXRsZSIsICJ1cGRhdGVkIiwgImltYWdlIiwgImRlY29kZSIsICJ0aXRsZUxjIiwgInRvVGl0bGVMYyIsICJjYW5kaWRhdGUiLCAiZGF0YSIsICJtcyIsICJ3IiwgInRlcm1pbmF0ZSIsICJ1cGRhdGVfIiwgImxvYWQiLCAiY2xlYW51cCIsICJzdWJzY3JpYmUiLCAiY2FsbGJhY2siLCAiY2hlY2siLCAiaW50ZXJ2YWxUaW1lciIsICJVc2VyQ1NTIiwgInByb3BzIiwgInVybCIsICJUIiwgImRldGVjdFVSTCIsICJzZSIsICJOIiwgIkNTUyIsICJzZSIsICJjcmF3bExpbmsiLCAibGluZSIsICJjaGFyIiwgImNyYXdsIiwgIm5vZGVzIiwgIm5vZGUiLCAicmVkdWNlciIsICJzdGF0ZSIsICJhY3Rpb24iLCAiXyIsICJwcm9wcyIsICJzdGFydCIsICJlbmQiLCAic2VsZWN0ZWRUZXh0IiwgImlzU2VsZWN0TW9kZSIsICJsaW5rIiwgImRldGVjdExpbmsiLCAibGluZSIsICJjaGFyIiwgIndob2xlIiwgImNyYXdsTGluayIsICJjdXJzb3JMaW5lIiwgInVzZUNhY2hlZExpbmVzIiwgImxpbmVzIiwgInoiLCAiaXNVcGRhdGVkWWV0IiwgInciLCAiY2FsbGJhY2siLCAiTSIsICJsb2dnZXIiLCAiY3JlYXRlRGVidWciLCAidXNlTGlmZWN5Y2xlIiwgInN0YXRlIiwgImRpc3BhdGNoIiwgIkkiLCAicmVkdWNlciIsICJnZXRMaW5lcyIsICJ1c2VDYWNoZWRMaW5lcyIsICJkZWJvdW5jZWREaXNwYXRjaCIsICJUIiwgInRpbWVyIiwgInR5cGUiLCAiY3Vyc29yIiwgInNlbGVjdGlvbiIsICJ0YWtlU3RvcmVzIiwgInciLCAiaGFuZGxlTGluZUNoYW5nZWQiLCAiaGFuZGxlU2VsZWN0aW9uQ2hhbmdlZCIsICJ0YWtlU2VsZWN0aW9uIiwgImNhbGxiYWNrIiwgInRha2VDdXJzb3IiLCAicHJldlN0YXRlIiwgInNldFByZXZTdGF0ZSIsICJCIiwgIk0iLCAiZmxhZyIsICJqb2IiLCAicHJvbWlzZSIsICJ1cGRhdG9yIiwgImxpbmVzIiwgImxpbmUiLCAicHJldiIsICJ0ZXh0IiwgInBvc2l0aW9uIiwgImluc2VydFRleHQiLCAiY29tcGFyZUFzZSIsICJhIiwgImIiLCAiZGlmZiIsICJzYSIsICJzIiwgInNiIiwgImkiLCAic2RpZmYiLCAibGRpZmYiLCAiYml0RFAiLCAicXVlcnkiLCAiUGVxIiwgInJxdWVyeSIsICJpIiwgInEiLCAicGlsIiwgInBpdSIsICJtIiwgIlB2MCIsICJhY2NlcHQiLCAidGV4dCIsICJNdiIsICJQdiIsICJydGV4dCIsICJDbSIsICJqIiwgInQiLCAiRXEiLCAiWHYiLCAiWGgiLCAiUGgiLCAiTWgiLCAiZ2V0TWF4RGlzdGFuY2UiLCAibWFrZUZpbHRlciIsICJxdWVyeSIsICJxdWVyaWVzIiwgInJldmVydFRpdGxlTGMiLCAiYSIsICJiIiwgInEiLCAic291cmNlIiwgInJlc3VsdCIsICJmaWx0ZXIiLCAibSIsICJtYXhEaXN0YW5jZSIsICJmaWx0ZXJfIiwgImJpdERQIiwgInRpdGxlIiwgImRpc3QiLCAibWF0Y2hlcyIsICJwcm9wcyIsICJkIiwgImkiLCAicyIsICJlIiwgIm5ld01hdGNoIiwgInByZXYiLCAibG9nZ2VyIiwgImNyZWF0ZURlYnVnIiwgImNhbmNlbGFibGVTZWFyY2giLCAicXVlcnkiLCAic291cmNlIiwgIm9wdGlvbnMiLCAiZmlsdGVyIiwgIm1ha2VGaWx0ZXIiLCAiY2h1bmsiLCAidG90YWwiLCAiaSIsICJzdGFydCIsICJyZXNvbHZlIiwgIm1zIiwgImRlYm91bmNlIiwgImZuIiwgIndhaXQiLCAidGltZW91dCIsICJmbHVzaCIsICJkZWJvdW5jZWQiLCAiYXJncyIsICJsb2dnZXIiLCAiY3JlYXRlRGVidWciLCAidXNlU2VhcmNoIiwgImluaXRpYWxTb3VyY2UiLCAiZXhlY3V0ZVNlYXJjaCIsICJNIiwgInF1ZXJ5IiwgInNvdXJjZSIsICJleGVjdXRlZEJ5U291cmNlVXBkYXRlIiwgImFib3J0ZWQiLCAiaXRlcmF0b3IiLCAiY2FuY2VsYWJsZVNlYXJjaCIsICJzdGFjayIsICJjYW5kaWRhdGVzIiwgImRpc3BhdGNoIiwgImRlYm91bmNlZERpc3BhdGNoIiwgImRlYm91bmNlIiwgInJldHVybmVkIiwgInByb2dyZXNzIiwgInVzZVNlYXJjaFN0YXRlIiwgIkkiLCAiVCIsICJjcmVhdGVSZWR1Y2VyIiwgImlzU2VhcmNoaW5nIiwgInByb2plY3RTY29yZSIsICJpdGVtcyIsICJzb3J0QW5kU2NvcmluZyIsICJzdGF0ZSIsICJzZWFyY2hlciIsICJhY3Rpb24iLCAicHJldlF1ZXJ5IiwgInByZXZKb2IiLCAicnVuIiwgImFib3J0IiwgImRvbmUiLCAicHJldlNvdXJjZSIsICJyZXN0IiwgInByZXZQcm9ncmVzcyIsICJwcmV2Q2FuZGlkYXRlcyIsICJwYWdlIiwgImNvbXBhcmVBc2UiLCAicHJvamVjdHMiLCAicHJvamVjdCIsICJ1c2VFeHBvcnRzIiwgImV4cG9ydGVyIiwgImV4cG9ydE9iamVjdCIsICJyZWYiLCAieiIsICJ3IiwgImtleSIsICJvcEluaXQiLCAiQXBwIiwgInByb3BzIiwgInNvdXJjZSIsICJ1c2VTb3VyY2UiLCAic2VhcmNoUmVzdWx0IiwgInVwZGF0ZSIsICJzZWFyY2giLCAidXNlU2VhcmNoIiwgInN0YXRlIiwgInNldEVuYWJsZSIsICJvcHMiLCAidXNlTGlmZWN5Y2xlIiwgIm9wZXJhdG9ycyIsICJzZXRPcGVyYXRvcnMiLCAiQiIsICJjYWxsYmFjayIsICJzdHlsZSIsICJvcHRpb25zIiwgInVzZUV4cG9ydHMiLCAiTSIsICJzZSIsICJOIiwgIkNTUyIsICJVc2VyQ1NTIiwgIkNvbXBsZXRpb24iLCAic2V0dXAiLCAiaW5pdCIsICJhcHAiLCAic2hhZG93Um9vdCIsICJsaW1pdCIsICJkZWJ1ZyIsICJtYXJrIiwgInN0eWxlIiwgImVuYWJsZVNlbGZQcm9qZWN0T25TdGFydCIsICJwcm9qZWN0cyIsICJzZXREZWJ1Z01vZGUiLCAicmVzb2x2ZSIsICJkZSIsICJzZSIsICJBcHAiLCAiY29udGVudCIsICJibG9ja3MiLCAiYmxvY2siLCAibGluZXMiLCAiaW5kZW50IiwgImxpbmUiLCAiZGlmZiIsICJvbGRNYXAiLCAibmV3TWFwIiwgImZpbGVuYW1lIiwgImJsb2NrcyIsICJvbGRDb2RlIiwgImNvbnRlbnQiLCAicmVhZENvZGVCbG9ja3MiLCAibGluZXMiLCAiY29kZUJsb2NrcyIsICJwYWNrcyIsICJxZSIsICJsaW5lIiwgImNvdW50ZXIiLCAiYmxvY2siLCAiYmxvY2tzIiwgImxpbmVDb3VudCIsICJkZWJvdW5jZSIsICJmdW5jIiwgImpvYiIsICJydW5uaW5nIiwgInJ1biIsICJhcmdzIiwgInJlc29sdmUiLCAicmVzdWx0IiwgInZhbHVlIiwgInByb21pc2UiLCAiVmlld2VyIiwgIl9maWxlbmFtZSIsICJwcmV2aWV3IiwgImRlYm91bmNlIiwgImJlZm9yZSIsICJhZnRlciIsICJhcmVhIiwgImVsZW1lbnRzIiwgImNvbnRlbnQiLCAicmVzdWx0IiwgImlkIiwgImxpbmVET00iLCAiZ2V0TGluZURPTSIsICJmaXhNYXJnaW4iLCAiaW5kZW50IiwgImJvZHlJZHMiLCAibGluZXMiLCAiaWRzIiwgInNldHVwIiwgInByZXZpZXdlcnMiLCAidmlld2VycyIsICJ1cGRhdGUiLCAiY29kZUJsb2NrcyIsICJyZWFkQ29kZUJsb2NrcyIsICJ0YWtlSW50ZXJuYWxMaW5lcyIsICJjaGFuZ2VkIiwgImZpbGVuYW1lIiwgImRpZmYiLCAibmV3QmxvY2tzIiwgInZpZXdlciIsICJjb21waWxlIiwgIndoZW4iLCAiVmlld2VyIiwgInJlc3VsdCIsICJoYW5kbGVQYWdlQ2hhbmdlZCIsICJzdHlsZSIsICJ0b0RhdGFVUkwiLCAiYmxvYiIsICJmaWxlUmVhZGVyIiwgInByb21pc2UiLCAicmVzb2x2ZSIsICJwcmV2aWV3U1ZHIiwgInByZXZpZXdJbml0IiwgInN2ZyIsICJjb250ZW50IiwgImVycm9yIiwgInByZSIsICJjb2RlIiwgInVybCIsICJ0b0RhdGFVUkwiLCAiaW1nIiwgInJlcXVpcmVfd2luZG93IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAid2luIiwgIl9fZ2xvYmFsJCIsICJidWlsZF9leHBvcnRzIiwgIl9fZXhwb3J0IiwgImJ1aWxkX2RlZmF1bHQiLCAiX19tb2R1bGUiLCAiYSIsICJyIiwgIl9fcmVFeHBvcnQiLCAiX19kZWZhdWx0IiwgIl9fcmVzdCIsICJyZXF1aXJlX2lzX2Z1bmN0aW9uIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaXNGdW5jdGlvbiIsICJ0b1N0cmluZyIsICJmbiIsICJzdHJpbmciLCAiYnVpbGRfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJidWlsZF9kZWZhdWx0IiwgIl9fbW9kdWxlIiwgInciLCAicCIsICJfX3JlRXhwb3J0IiwgIl9fZGVmYXVsdCIsICJfX3Jlc3QiLCAicmVxdWlyZV9wYXJzZV9oZWFkZXJzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAidHJpbSIsICJzdHJpbmciLCAiaXNBcnJheSIsICJhcmciLCAiaGVhZGVycyIsICJyZXN1bHQiLCAiaGVhZGVyc0FyciIsICJpIiwgInJvdyIsICJpbmRleCIsICJrZXkiLCAidmFsdWUiLCAiYnVpbGRfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJidWlsZF9kZWZhdWx0IiwgIl9fbW9kdWxlIiwgIl8iLCAicCIsICJfX3JlRXhwb3J0IiwgIl9fZGVmYXVsdCIsICJfX3Jlc3QiLCAicmVxdWlyZV9pbW11dGFibGUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHRlbmQiLCAiaGFzT3duUHJvcGVydHkiLCAidGFyZ2V0IiwgImkiLCAic291cmNlIiwgImtleSIsICJidWlsZF9leHBvcnRzIiwgIl9fZXhwb3J0IiwgImJ1aWxkX2RlZmF1bHQiLCAiX19tb2R1bGUiLCAidSIsICJsIiwgIl9fcmVFeHBvcnQiLCAiX19kZWZhdWx0IiwgIl9fcmVzdCIsICJyZXF1aXJlX3hociIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIndpbmRvdyIsICJoIiwgImlzRnVuY3Rpb24iLCAicGFyc2VIZWFkZXJzIiwgInh0ZW5kIiwgImNyZWF0ZVhIUiIsICJub29wIiwgImZvckVhY2hBcnJheSIsICJtZXRob2QiLCAidXJpIiwgIm9wdGlvbnMiLCAiY2FsbGJhY2siLCAiaW5pdFBhcmFtcyIsICJfY3JlYXRlWEhSIiwgImFycmF5IiwgIml0ZXJhdG9yIiwgImkiLCAiaXNFbXB0eSIsICJvYmoiLCAicGFyYW1zIiwgImNhbGxlZCIsICJlcnIiLCAicmVzcG9uc2UiLCAiYm9keSIsICJyZWFkeXN0YXRlY2hhbmdlIiwgInhociIsICJsb2FkRnVuYyIsICJnZXRCb2R5IiwgImdldFhtbCIsICJpc0pzb24iLCAiZXJyb3JGdW5jIiwgImV2dCIsICJ0aW1lb3V0VGltZXIiLCAiZmFpbHVyZVJlc3BvbnNlIiwgImFib3J0ZWQiLCAic3RhdHVzIiwgImtleSIsICJoZWFkZXJzIiwgInN5bmMiLCAiZSIsICJmaXJlZm94QnVnVGFrZW5FZmZlY3QiLCAiYnVpbGRfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJidWlsZF9kZWZhdWx0IiwgIl9fbW9kdWxlIiwgIkMiLCAiRSIsICJfX3JlRXhwb3J0IiwgIl9fZGVmYXVsdCIsICJfX3Jlc3QiLCAiX3R5cGVvZiIsICJvYmoiLCAiYXN5bmNHZW5lcmF0b3IiLCAiQXdhaXRWYWx1ZSIsICJ2YWx1ZSIsICJBc3luY0dlbmVyYXRvciIsICJnZW4iLCAiZnJvbnQiLCAiYmFjayIsICJzZW5kIiwgImtleSIsICJhcmciLCAicmVzb2x2ZSIsICJyZWplY3QiLCAicmVxdWVzdCIsICJyZXN1bWUiLCAicmVzdWx0IiwgInNldHRsZSIsICJlcnIiLCAidHlwZSIsICJmbiIsICJjbGFzc0NhbGxDaGVjayIsICJpbnN0YW5jZSIsICJDb25zdHJ1Y3RvciIsICJjcmVhdGVDbGFzcyIsICJkZWZpbmVQcm9wZXJ0aWVzIiwgInRhcmdldCIsICJwcm9wcyIsICJpIiwgImRlc2NyaXB0b3IiLCAicHJvdG9Qcm9wcyIsICJzdGF0aWNQcm9wcyIsICJ0b0NvbnN1bWFibGVBcnJheSIsICJhcnIiLCAiYXJyMiIsICJsYXN0RXJyb3IiLCAibWFrZUZhaWxIVE1MIiwgIm1zZyIsICJHRVRfQV9XRUJHTF9CUk9XU0VSIiwgIk9USEVSX1BST0JMRU0iLCAiRVJST1JfQlJPV1NFUl9TVVBQT1JUIiwgIkVSUk9SX09USEVSIiwgInNldHVwV2ViR0wiLCAiY2FudmFzIiwgIm9wdEF0dHJpYnMiLCAib25FcnJvciIsICJzaG93TGluayIsICJzdHIiLCAiY29udGFpbmVyIiwgImhhbmRsZUVycm9yIiwgImVycm9yQ29kZSIsICJjb250ZXh0IiwgImNyZWF0ZTNEQ29udGV4dCIsICJuYW1lcyIsICJpaSIsICJjcmVhdGVTaGFkZXIiLCAibWFpbiIsICJzb3VyY2UiLCAib2Zmc2V0IiwgImdsIiwgInNoYWRlciIsICJjb21waWxlZCIsICJjcmVhdGVQcm9ncmFtIiwgInNoYWRlcnMiLCAib3B0TG9jYXRpb25zIiwgInByb2dyYW0iLCAiX2lpIiwgImxpbmtlZCIsICJwYXJzZVVuaWZvcm1zIiwgInVuaWZvcm1zIiwgInByZWZpeCIsICJwYXJzZWQiLCAibmFtZSIsICJ1bmlmb3JtIiwgInUiLCAiaXNDYW52YXNWaXNpYmxlIiwgImJvdW5kIiwgImlzUG93ZXJPZjIiLCAiaXNTYWZhcmkiLCAiaXNEaWZmIiwgImEiLCAiYiIsICJnZXRGaWxlIiwgInVybCIsICJodHRwUmVxdWVzdCIsICJzdWJzY3JpYmVNaXhpbiQxIiwgImxpc3RlbmVycyIsICJmIiwgImxpc3RlbmVyIiwgIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24iLCAiX2RpZEl0ZXJhdG9yRXJyb3IiLCAiX2l0ZXJhdG9yRXJyb3IiLCAiX2l0ZXJhdG9yIiwgIl9zdGVwIiwgIml0ZW0iLCAiX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIiLCAiX2RpZEl0ZXJhdG9yRXJyb3IyIiwgIl9pdGVyYXRvckVycm9yMiIsICJfaXRlcmF0b3IyIiwgIl9zdGVwMiIsICJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyIsICJfZGlkSXRlcmF0b3JFcnJvcjMiLCAiX2l0ZXJhdG9yRXJyb3IzIiwgIl9pdGVyYXRvcjMiLCAiX3N0ZXAzIiwgImV2ZW50IiwgIl9sZW4iLCAiZGF0YSIsICJfa2V5IiwgIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb240IiwgIl9kaWRJdGVyYXRvckVycm9yNCIsICJfaXRlcmF0b3JFcnJvcjQiLCAiX2l0ZXJhdG9yNCIsICJfc3RlcDQiLCAiVGV4dHVyZSIsICJvcHRpb25zIiwgInVuaXQiLCAiX3RoaXMiLCAiZXh0IiwgImlzVmlkZW8iLCAiZWxlbWVudCIsICJlIiwgIndpZHRoIiwgImhlaWdodCIsICJfdGhpczIiLCAiZWwiLCAiR2xzbENhbnZhcyIsICJjb250ZXh0T3B0aW9ucyIsICJ4aHIiLCAiZXJyb3IiLCAicmVzcG9uc2UiLCAiYm9keSIsICJfc291cmNlIiwgInRleENvb3Jkc0xvYyIsICJ2ZXJ0aWNlc0xvYyIsICJpbWdMaXN0IiwgIm5JbWciLCAibW91c2UiLCAic2FuZGJveCIsICJSZW5kZXJMb29wIiwgInRleCIsICJhdHQiLCAiYnVmZmVyIiwgImZyYWdTdHJpbmciLCAidmVydFN0cmluZyIsICJsaW5lcyIsICJsaW5lIiwgImxpbmVfdHJpbSIsICJkZXAiLCAiblRleHR1cmVzIiwgIl9saW5lcyIsICJtYXRjaCIsICJ2ZXJ0ZXhTaGFkZXIiLCAiZnJhZ21lbnRTaGFkZXIiLCAiYnVmZmVycyIsICJjYWxsYmFjayIsICJwcmVfdGVzdF92ZXJ0IiwgInByZV90ZXN0X2ZyYWciLCAicHJlX3Rlc3RfcGF1c2VkIiwgInF1ZXJ5IiwgIndhc1ZhbGlkIiwgImZpbmlzaFRlc3QiLCAid2FpdEZvclRlc3QiLCAiYXZhaWxhYmxlIiwgImRpc2pvaW50IiwgInJldCIsICJ1cmxFbGVtZW50T3JEYXRhIiwgIl90aGlzMyIsICJhcmdzIiwgInJlY3QiLCAibW91c2VfeCIsICJtb3VzZV95IiwgIm1ldGhvZCIsICJfbGVuMiIsICJfa2V5MiIsICJjaGFuZ2UiLCAibG9jYXRpb24iLCAidGV4dHVyZSIsICJkaXNwbGF5V2lkdGgiLCAiZGlzcGxheUhlaWdodCIsICJkYXRlIiwgIm5vdyIsICJXIiwgIkgiLCAiZ2xzbCIsICJ2ZXJ0ZXgiLCAiZnJhZ21lbnQiLCAiaW5wdXQiLCAib3V0cHV0IiwgInRlbXAiLCAiaW5kZXgiLCAibWluVyIsICJtaW5IIiwgInBpeGVscyIsICJuZXdJbmRleCIsICJuZXdUZXh0dXJlIiwgIm5ld0J1ZmZlciIsICJsb2FkQWxsR2xzbENhbnZhcyIsICJsaXN0IiwgIkdsc2xDYW52YXNfZXNfZGVmYXVsdCIsICJwcmV2aWV3R0xTTCIsICJwcmV2aWV3SW5pdCIsICJjYW52YXMiLCAicSIsICJjb250ZW50IiwgImVuY29kZTY0IiwgImRhdGEiLCAiciIsICJpIiwgImFwcGVuZDNieXRlcyIsICJlbmNvZGU2Yml0IiwgImIiLCAiYjEiLCAiYjIiLCAiYjMiLCAiYzEiLCAiYzIiLCAiYzMiLCAiYzQiLCAidG9QbGFudFVNTCIsICJ1bWwiLCAidHlwZSIsICJzdHJlYW0iLCAiY29tcHJlc3NlZCIsICJlbmNvZGU2NCIsICJwcmV2aWV3UGxhbnRVTUwiLCAicHJldmlld0luaXQiLCAiaW1nIiwgInVybCIsICJ0b1BsYW50VU1MIiwgImNvbnRlbnQiLCAiam9iIiwgIndvcmtlciIsICJyZW5kZXJUb1NWRyIsICJ0aWt6IiwgIndvcmtlclVSTCIsICJ6aXBwZWRBc3NldFVSTCIsICJjb25zb2xlIiwgImluaXQiLCAicHJvbWlzZSIsICJyZXNvbHZlIiwgImNhbGxiYWNrIiwgImUiLCAiY29tbWFuZCIsICJpbml0aWFsaXplZCIsICJwcmV2aWV3VGlrWiIsICJ3b3JrZXJVUkwiLCAiemlwcGVkQXNzZXRVUkwiLCAicHJldmlld0luaXQiLCAibG9nZ2VyIiwgIm1ha2VMb2dnZXIiLCAiY29tcGlsZUxvZyIsICJsb2ciLCAibWVzc2FnZSIsICJpbWciLCAidGltZXIiLCAic3ZnIiwgInJlbmRlclRvU1ZHIiwgImNvbnRlbnQiLCAidG9EYXRhVVJMIiwgImRpdiIsICJzaGFkb3dSb290IiwgInN0eWxlIiwgInByZSIsICJjb2RlIiwgInVzZUFzeW5jIiwgImNhbGxiYWNrIiwgImluaXRpYWxWYWx1ZSIsICJkZWxheSIsICJkZXBzIiwgInN0YXRlIiwgInNldFN0YXRlIiwgIkIiLCAicmVzdWx0IiwgInNldFJlc3VsdCIsICJjYWNoZWRDYWxsYmFjayIsICJNIiwgInciLCAidGltZXIiLCAiZSIsICJjb252ZXJ0IiwgImNvbW1pdHMiLCAiY2hhbmdlcyIsICJjcmVhdGVkIiwgInVzZXJJZCIsICJjaGFuZ2UiLCAiY2hhbmdlSW5mbyIsICJtYWtlQ2hhbmdlSW5mbyIsICJyYW5nZSIsICJsaW5lcyIsICJzbmFwc2hvdHMiLCAibGluZSIsICJpbmRleCIsICJpZCIsICJnZXRDb21taXRIaXN0b3J5IiwgInByb2plY3QiLCAicGFnZUlkIiwgInJlcyIsICJjb21taXRzIiwgImNvbnZlcnQiLCAiZ2V0UGFnZUhpc3RvcnkiLCAic25hcHNob3RzIiwgInBhZ2VzIiwgImxpbmVzIiwgImNyZWF0ZWQiLCAicmFuZ2UiLCAic2V0dXAiLCAicHJvamVjdHMiLCAiYXBwIiwgInNoYWRvd1Jvb3QiLCAicmVzb2x2ZSIsICJkZSIsICJzZSIsICJBcHAiLCAiY29udHJvbGxlciIsICJnZXRDb250cm9sbGVyIiwgImNsb3NlZCIsICJzZXRDbG9zZWQiLCAiQiIsICJvcGVuIiwgIk0iLCAiY2xvc2UiLCAidG9nZ2xlIiwgInByZXYiLCAidyIsICJoYW5kbGVDbG9zZSIsICJlIiwgInN0YXRlIiwgInJlc3VsdCIsICJ1c2VBc3luYyIsICJjb21taXQiLCAicGFnZSIsICJnZXRDb21taXRIaXN0b3J5IiwgImdldFBhZ2VIaXN0b3J5IiwgInRpbWUiLCAic25hcHNob3RzIiwgImxpbmUiLCAicHJldlVwZGF0ZWQiLCAidXBkYXRlZCIsICJwcmV2VGV4dCIsICJtYXgiLCAic2V0TWF4IiwgImluZGV4IiwgInNldEluZGV4IiwgInZhbHVlIiwgIm9uU2xpZGVyQ2hhbmdlIiwgImV2ZW50IiwgIk4iLCAieCIsICJpc01vYmlsZSIsICJwb29sIiwgInRocmVzaG9sZCIsICJhcmdzIiwgImZ1bmMiLCAicnVubmluZyIsICJ3YWl0aW5ncyIsICJ3YWl0Rm9yUmVhZHkiLCAicmVzb2x2ZSIsICJhcmciLCAiaWQiLCAiZSIsICJyZXBsYWNlIiwgImxpbmtzIiwgInByb2plY3RzIiwgImNhbGxiYWNrIiwgImJlZm9yZSIsICJhZnRlciIsICJzb2NrZXQiLCAibWFrZVNvY2tldCIsICJpdGVyMSIsICJwb29sIiwgImxpbmsiLCAiY291bnQiLCAicmVwbGFjZWQiLCAiaXRlcjIiLCAicHJvamVjdCIsICJyZXN1bHQiLCAicmVwbGFjZUFsaW5rIiwgInRvRXJyb3IiLCAiZGlzY29ubmVjdCIsICJyZXBsYWNlTGlua3MiLCAicGF0Y2giLCAibGluZXMiLCAicGVyc2lzdGVudCIsICJsaW5lIiwgImdldExpbmtzIiwgInRleHQiLCAiZSIsICJlcnJvciIsICJtb2RfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJqZSIsICJxZSIsICJjb252ZXJ0IiwgInRleHQiLCAicWUiLCAiYmxvY2siLCAiY29udmVydENvZGVCbG9jayIsICJjb252ZXJ0VGFibGUiLCAiY29udmVydExpbmUiLCAibGluZSIsICJmaWxlTmFtZSIsICJjb250ZW50IiwgImluZGVudCIsICJ0YWciLCAiY2VsbHMiLCAiY2VsbCIsICJub2RlcyIsICJub2RlIiwgImNvbnZlcnROb2RlIiwgImRlY28iLCAibnVtIiwgInRleHQiLCAiZ2V0TGlua3MiLCAicmVzdWx0IiwgImNvbnZlcnQiLCAiZW5hYmxlIiwgInRleHQiLCAidGl0bGUiLCAicmVuZGVyIiwgImRpc3Bvc2UiLCAidXNlU3RhdHVzQmFyIiwgInByb2plY3QiLCAicGF0Y2giLCAicGVyc2lzdGVudCIsICJlIiwgInNsZWVwIiwgImNvbnZlcnRTYjJNZCIsICJibG9jayIsICJ0b3BJbmRlbnRMZXZlbCIsICJnZXRGaWxlVHlwZSIsICJjb252ZXJ0VGFibGUiLCAiY29udmVydExpbmUiLCAidGFibGUiLCAibGluZSIsICJtYXhDb2wiLCAicm93IiwgImkiLCAiY29sdW1uIiwgIm5vZGUiLCAiY29udmVydE5vZGUiLCAiSU5ERU5UIiwgImNvbnRlbnQiLCAicmVzdWx0IiwgImluaXQiLCAic2VjdGlvbiIsICJkZWNvIiwgImV4dGVuc2lvbkRhdGEiLCAiZmlsZW5hbWUiLCAiZmlsZW5hbWVFeHRlbnRpb24iLCAiZGF0YSIsICJ0ZXh0IiwgImJsb2NrcyIsICJtb2RfZXhwb3J0cyIsICJ0b3BJbmRlbnRMZXZlbCIsICJibG9jayIsICJjb252ZXJ0U2IyTWQiLCAiaXNTdHJpbmciLCAidmFsdWUiLCAiY29udmVydCIsICJ1cmwiLCAibWlkZGxld2FyZXMiLCAicHJldiIsICJtaWRkbGV3YXJlIiwgIm5leHQiLCAiaXNTdHJpbmciLCAiY29udmVydGVkIiwgIm1ha2VIVFRQRXJyb3IiLCAicmVzcG9uc2UiLCAiZ2V0VHdlZXQiLCAidHdlZXRJZCIsICJmZXRjaF8iLCAicmVzIiwgImVycm9yIiwgIm1ha2VIVFRQRXJyb3IiLCAic2V0RGVmYXVsdHMiLCAib3B0aW9ucyIsICJmZXRjaCIsICJyZXN0IiwgImlzT2JqZWN0IiwgInZhbHVlIiwgIlVuZXhwZWN0ZWRSZXNwb25zZUVycm9yIiwgIl9VbmV4cGVjdGVkUmVzcG9uc2VFcnJvciIsICJpbml0IiwgImNoZWNrUmVzcG9uc2UiLCAicmVzcG9uc2UiLCAidGV4dCIsICJqc29uIiwgImlzT2JqZWN0IiwgIlVuZXhwZWN0ZWRSZXNwb25zZUVycm9yIiwgImUyIiwgInVwbG9hZCIsICJpbWFnZSIsICJpbml0IiwgInRpdGxlIiwgImRlc2NyaXB0aW9uIiwgIm1ldGFkYXRhSXNQdWJsaWMiLCAiY29sbGVjdGlvbklkIiwgInJlZmVyZXJVUkwiLCAiYWNjZXNzVG9rZW4iLCAiY3JlYXRlZCIsICJhcHAiLCAiZmV0Y2giLCAic2V0RGVmYXVsdHMiLCAiZm9ybURhdGEiLCAicmVzIiwgImNoZWNrZWQiLCAiY2hlY2tSZXNwb25zZSIsICJ1cGxvYWRUb0d5YXpvR0lGIiwgInZpZGVvIiwgIm9wdGlvbnMiLCAiZm9ybURhdGEiLCAidG9rZW4iLCAiY2hlY2tlZCIsICJjYWNoZSIsICJ1cGxvYWRUd2ltZyIsICJ1cmwiLCAidHdlZXRVUkwiLCAicHJvamVjdElkIiwgImRlc2NyaXB0aW9uIiwgImNhY2hlZFVSTCIsICJyZXMiLCAidHlwZSIsICJmaWxlIiwgInVwbG9hZFRvR3lhem9HSUYiLCAiZmlsZVVSTCIsICJyZXN1bHQiLCAidXBsb2FkVG9HQ1MiLCAiZ2V0R3lhem9Ub2tlbiIsICJ1cGxvYWQiLCAiZ3lhem9VUkwiLCAibWFwIiwgInVuZXNjYXBlSFRNTCIsICJ0ZXh0IiwgIm1hdGNoIiwgInByb2Nlc3NUd2VldCIsICJ0d2VldCIsICJhdXRob3IiLCAicG9zdGVkIiwgImVudGl0aWVzIiwgImhhc2h0YWciLCAic3ltYm9sIiwgIm1lbnRpb24iLCAidXJsIiwgImVudGl0eSIsICJkZXNjcmlwdGlvbiIsICJ0aXRsZSIsICJrZXkiLCAibWVkaWEiLCAiZGV0YWlsIiwgImEiLCAiYiIsICJjb250ZW50IiwgIm9mZnNldCIsICJ0ZXh0IiwgImluZGljZXMiLCAiYmVmb3JlIiwgInVuZXNjYXBlSFRNTCIsICJwcm9jZXNzZWQiLCAicmVzZXJ2ZWROYW1lcyIsICJjb252ZXJ0U2NyYXBib3hVUkwiLCAic2VsZiIsICJob3N0IiwgInVybCIsICJwcm9qZWN0IiwgInRpdGxlIiwgImZvcm1hdFR3ZWV0IiwgImZvcm1hdCIsICJkZWZhdWx0Rm9ybWF0IiwgInVybCIsICJpZCIsICJyZXN1bHQiLCAiZ2V0VHdlZXQiLCAiZ2V0VHdlZXRJbmZvIiwgInR3ZWV0IiwgInN0cmluZ2lmeSIsICJxdW90ZSIsICJyZXBseVRvIiwgInByb2Nlc3NlZCIsICJwcm9jZXNzVHdlZXQiLCAibGluZSIsICJlc2NhcGVGb3JFbWJlZCIsICJpbWFnZSIsICJjb250ZW50IiwgInNjcmVlbk5hbWUiLCAibm9kZSIsICJsaW5lcyIsICJpIiwgInVwbG9hZE1lZGlhIiwgImNvbnZlcnRTY3JhcGJveFVSTCIsICJwcm9qZWN0SWQiLCAiZ2V0UHJvamVjdElkIiwgImdldFByb2plY3QiLCAibWVkaWEiLCAidHdlZXRVUkwiLCAidXBsb2FkVHdpbWciLCAidGV4dCIsICJleHBhbmRUd2l0dGVyU2hvcnRVUkwiLCAic2hvcnRJZCIsICJmZXRjaF8iLCAicmVzIiwgImVycm9yIiwgIm1ha2VIVFRQRXJyb3IiLCAiZXhwYW5kU2hvcnRVUkwiLCAidXJsIiwgInJlcyIsICJwcm9taXNlIiwgImV4cGFuZFR3aXR0ZXJTaG9ydFVSTCIsICJyZXN1bHQiLCAiZSIsICJmb3JtYXRXaWtpcGVkaWEiLCAidXJsIiwgImxhbmciLCAidGl0bGUiLCAic2VjdGlvbiIsICJocmVmIiwgInJlZGlyZWN0V2lraXdhbmQiLCAidXJsIiwgImxhbmciLCAicGFnZU5hbWUiLCAicmVkaXJlY3RHb29nbGVTZWFyY2giLCAidXJsIiwgImVuY29kZWRVUkwiLCAiY2hhcnNldFJlZ0V4cCIsICJnZXRXZWJQYWdlIiwgInVybCIsICJmZXRjaF8iLCAicmVzIiwgImVycm9yIiwgIm1ha2VIVFRQRXJyb3IiLCAiY29udGVudFR5cGUiLCAiZGV0ZWN0RW5jb2RpbmciLCAiZG9tIiwgImZvcm1hdFVSTCIsICJmb3JtYXQiLCAiZGVmYXVsdEZvcm1hdCIsICJ1cmwiLCAiZ2V0RG9jdW1lbnRPclRpdGxlIiwgIm1hdGVyaWFsIiwgInRpdGxlIiwgImlzU3RyaW5nIiwgInByb21pc2UiLCAiZ2V0V2ViUGFnZSIsICJyZXN1bHQiLCAiZ2V0V2ViUGFnZVRpdGxlIiwgInNob3J0ZW5BbWF6b25VUkwiLCAidXJsIiwgImFzaW4iLCAiY29udmVydEd5YXpvVVJMIiwgInVybCIsICJneWF6b0lkIiwgImNvbnZlcnQiLCAidGV4dCIsICJtaWRkbGV3YXJlcyIsICJ0b3RhbCIsICJkb25lIiwgImZhaWxlZCIsICJoYXNQcm9taXNlIiwgIm5vZGVzIiwgIm5vZGUiLCAiY29udmVydGVkIiwgImlzU3RyaW5nIiwgImUiLCAicmVuZGVyIiwgImRpc3Bvc2UiLCAidXNlU3RhdHVzQmFyIiwgInJlbmRlcl8iLCAiZnJhZ21lbnRzIiwgImZvcm1hdE5pY29uaWNvIiwgInVybCIsICJpZCIsICJjb252ZXJ0IiwgInRleHQiLCAicWUiLCAiYmxvY2siLCAiY29udmVydENvZGVCbG9jayIsICJjb252ZXJ0VGFibGUiLCAiY29udmVydExpbmUiLCAibGluZSIsICJmaWxlTmFtZSIsICJjb250ZW50IiwgImluZGVudCIsICJ0YWciLCAiY2VsbHMiLCAiY2VsbCIsICJub2RlcyIsICJub2RlIiwgImNvbnZlcnROb2RlIiwgImRlY28iLCAibnVtIiwgInRleHQiLCAicmVzdWx0IiwgImNvbnZlcnQiLCAiZXhlYyIsICJ0ZXh0IiwgInNwbGl0UG9zIiwgImNvbW1hbmRzIiwgImNvbW1hbmQiLCAiYmVmb3JlIiwgImFmdGVyIiwgImxpbmVzIiwgIm1hdGNoIiwgInJlZyIsICJsaW5lIiwgIm5ld1RleHQiLCAidGV4dCIsICJleGVjIiwgInJlcGxhY2VkIiwgIndhaXRGb3JDb252ZXJ0T3JkZXIiLCAibGlua3MiLCAicm9vdCIsICJzaGFkb3dSb290IiwgInN0eWxlIiwgImRpYWxvZyIsICJlZGl0b3IiLCAiYWRqdXN0V2lkdGgiLCAibGluZSIsICJjYW5jZWwiLCAiY29uZmlybSIsICJwcm9taXNlIiwgInJlc29sdmUiLCAib25DbG9zZSIsICJuZXdMaW5lcyIsICJiZWZvcmUiLCAiaSIsICJlIiwgImhhbmRsZVJlcGxhY2UiLCAidGV4dCIsICJwcm9qZWN0cyIsICJsaW5rcyIsICJnZXRMaW5rcyIsICJyZXN1bHQiLCAid2FpdEZvckNvbnZlcnRPcmRlciIsICJiYXJzIiwgImxpbmsiLCAidXNlU3RhdHVzQmFyIiwgInJlcGxhY2UiLCAic3RhdHVzIiwgInByb2plY3RDb3VudCIsICJyZXBsYWNlZCIsICJkb25lIiwgImJhciIsICJyZXBsYWNlIiwgInRleHQiLCAicHJvamVjdHMiLCAibGluayIsICJnZXRMaW5rcyIsICJuZXdMaW5rIiwgInByb2plY3QiLCAicmVuZGVyIiwgImRpc3Bvc2UiLCAidXNlU3RhdHVzQmFyIiwgInNvY2tldCIsICJtYWtlU29ja2V0IiwgImNvdW50IiwgInJlcGxhY2VkIiwgInJlc3VsdCIsICJyZXBsYWNlTGlua3MiLCAicGF0Y2giLCAibGluZXMiLCAicGVyc2lzdGVudCIsICJsaW5lIiwgInRvRXJyb3IiLCAiYWNjIiwgImN1ciIsICJkaXNjb25uZWN0IiwgImUiLCAiZXJyb3IiLCAic2V0dXAiLCAicHJvamVjdHMiLCAicCIsICJ0ZXh0IiwgImxpbmtDb3VudCIsICJnZXRMaW5rcyIsICJoYW5kbGVSZXBsYWNlIiwgInJlcGxhY2UiLCAidGV4dCIsICJ0ZXh0IiwgImlkIiwgIm9jciIsICJlIiwgInRleHQiLCAiaWQiLCAiY29udmVydCIsICJibG9ja3MiLCAibGF0ZXgiLCAibGV2ZWwiLCAiYmxvY2siLCAiaSIsICJpbmRlbnQiLCAiZnJvbUJsb2NrIiwgImZyb21Db2RlQmxvY2siLCAiZnJvbVRhYmxlIiwgImZyb21MaW5lIiwgImVzY2FwZSIsICJnZXRGaWxlVHlwZSIsICJ0YWJsZSIsICJjYXB0aW9uIiwgIm1heENvbCIsICJyb3ciLCAicm93cyIsICJjb2x1bW4iLCAibm9kZSIsICJmcm9tTm9kZSIsICJsaW5lIiwgInJlc3VsdCIsICJkZWNvIiwgImV4dGVuc2lvbkRhdGEiLCAiZmlsZW5hbWUiLCAiZmlsZW5hbWVFeHRlbnRpb24iLCAiZGF0YSIsICJ0ZXh0IiwgImluZGVudE51bSIsICJ0ZXh0IiwgImNvbnZlcnQiLCAicWUiLCAiQVBJUk9PVCIsICJhc2siLCAidGV4dCIsICJ0YWxrSWQiLCAicmVzIiwgIkFQSVJPT1QiLCAiZGF0YSIsICJjcmVhdGVQb3B1cE1lbnVCYXIiLCAicG9wdXBNZW51IiwgInJlbmRlciIsICJjcmVhdGVQb3B1cENvbnRhaW5lciIsICJlZGl0b3IiLCAiY3Vyc29yIiwgInRha2VDdXJzb3IiLCAiY2FsbGJhY2siLCAiY3Vyc29yRE9NIiwgInNoYWRvd1Jvb3QiLCAiYnV0dG9uQ29udGFpbmVyIiwgImJ1dHRvbnMiLCAidGV4dCIsICJvbkNsaWNrIiwgImRpdiIsICJnZXROZXdUYWxrSWQiLCAibW9kZSIsICJyZXMiLCAiQVBJUk9PVCIsICJtYWtlU2hhcmVVUkwiLCAidGFsa0lkIiwgInF1ZXN0aW9uVG9TY3JhcGJveCIsICJxdWVzdGlvbiIsICJzcGxpdHRlZCIsICJxIiwgInF1b3RlIiwgIndyaXRlQWZ0ZXIiLCAidGV4dCIsICJiYXNlIiwgImxpbmVObyIsICJjdXJzb3IiLCAidGFrZUN1cnNvciIsICJpbnNlcnRObyIsICJsaW5lIiwgInByZXZUZXh0IiwgInRha2VTZWxlY3Rpb24iLCAiaW5zZXJ0VGV4dCIsICJtYWtlUGxhaW4iLCAidGV4dCIsICJxZSIsICJibG9jayIsICJpbmRlbnQiLCAibGluZSIsICJyb3ciLCAiY2VsbCIsICJub2RlIiwgInBsYWluTm9kZSIsICJpc0NvbW1lbnQiLCAidGV4dCIsICJzdGFydFRhbGsiLCAiaW5pdCIsICJsaW5lcyIsICJjdXJzb3IiLCAic2VsZWN0aW9uIiwgInRha2VTdG9yZXMiLCAic2VsZWN0QWxsIiwgImluaXRpYWxUZXh0IiwgImxpbmUiLCAiYm90SWNvbiIsICJyZW5kZXIiLCAidmlzaWJsZSIsICJvcGVuIiwgImNsb3NlIiwgImRpc3Bvc2UiLCAiY3JlYXRlUG9wdXBNZW51QmFyIiwgImxpc3RlbmVycyIsICJleGl0IiwgImxpc3RlbmVyIiwgIm9uRXhpdCIsICJFeGl0IiwgInRhbGtJZF8iLCAiZmluZFRhbGtJZCIsICJuZXdUYWxrSWQiLCAicGVuZGluZyIsICJnZXROZXdUYWxrSWQiLCAidGltZXIiLCAiaSIsICJyZXN1bHQiLCAidGFsa0lkIiwgInJhbmdlIiwgImxhc3RJbnNlcnRlZE5vIiwgImxhc3RJbnNlcnRlZExpbmUiLCAiaW5kZW50IiwgImdldEluZGVudENvdW50IiwgInNlbmQiLCAiYW5zd2VyIiwgImFzayIsICJjb21tZW50TGFzdFNlbnQiLCAic2VuZE11bHRpcGxlIiwgInBsYWluIiwgIm1ha2VQbGFpbiIsICJpc0NvbW1lbnQiLCAicXVlc3Rpb24iLCAiaW5kZXgiLCAic2VuZEFuZFdyaXRlIiwgImJ1dHRvbnMiLCAiZm9ybWF0dGVkIiwgInF1ZXN0aW9uVG9TY3JhcGJveCIsICJib3RUYWxrIiwgIndyaXRlQWZ0ZXIiLCAiYXNrXyIsICJpbnNlcnRUZXh0IiwgImJ1dHRvbiIsICJjdXJzb3JMaW5lTm8iLCAic3RhcnRMaW5lTm8iLCAiZW5kTGluZU5vIiwgInJlYWRBbnN3ZXIiLCAibWFrZVNoYXJlVVJMIiwgInNlbGVjdGVkIiwgImljb25MaW5lTm8iLCAiZ2V0SW5kZW50TGluZUNvdW50IiwgInRleHQiLCAiaG9va3MiLCAidGFza0xpbmVIb29rIiwgIm5ld1BhZ2VIb29rIiwgInNwbGl0dGVkTGlua0hvb2siLCAiaG9vayIsICJtYWtlTmV3UGFnZSIsICJwcm9qZWN0IiwgIm5ld1RleHQiLCAia2V5d29yZCIsICJsaW5lIiwgImlzSmFwYW5lc2UiLCAic3RyIiwgImNoYXIiLCAicmVzdWx0IiwgIm1pZGRsZXdhcmVzIiwgInJlZGlyZWN0R29vZ2xlU2VhcmNoIiwgImV4cGFuZFNob3J0VVJMIiwgInJlZGlyZWN0V2lraXdhbmQiLCAic2hvcnRlbkFtYXpvblVSTCIsICJjb252ZXJ0U2NyYXBib3hVUkwiLCAiY29udmVydEd5YXpvVVJMIiwgImZvcm1hdFR3ZWV0IiwgImZvcm1hdFdpa2lwZWRpYSIsICJ1cmwiLCAiZHQiLCAidG0iLCAic3IiLCAicGF0aCIsICJ1c2VyIiwgInJlcG8iLCAiZmlsZXBhdGgiLCAic3RhcnQiLCAiZW5kIiwgImZvcm1hdE5pY29uaWNvIiwgImZvcm1hdFVSTCIsICJwcm9taXNlIiwgImNvbnZlcnQiLCAiY29udmVydGVkIiwgImluc2VydFRleHQiLCAic2V0dXAiLCAidGFsayIsICJtb2RlIiwgInN0YXJ0VGFsayIsICJhc2siLCAidmlzaWJsZSIsICJvbkV4aXQiLCAiaGFuZGxlS2V5ZG93biIsICJlIiwgInRleHRJbnB1dCIsICJ0ZW1wbGF0ZSIsICJkYXRlIiwgImxpbmUiLCAieCIsICJfIiwgInBtIiwgImRheXMiLCAiaXNXZWVrIiwgImRheSIsICJuZXdEYXRlIiwgImMiLCAiZiIsICJwIiwgImRheVRvTnVtYmVyIiwgInIiLCAiZyIsICJ3ZWVrcyIsICJtYWluIiwgInByb2plY3QiLCAiZGFpbHlUZW1wbGF0ZSIsICJ3ZWVrbHlUZW1wbGF0ZSIsICJwYWdlcyIsICJyZXNvbHZlIiwgInRpbWVyIiwgInN0YXJ0IiwgImNhbGxiYWNrIiwgIm5vdyIsICJpbnRlcnZhbCIsICJjIiwgInJlbmRlciIsICJkaXNwb3NlIiwgInVzZVN0YXR1c0JhciIsICJzb2NrZXQiLCAiZGFpbHlUZW1wbGF0ZVRleHQiLCAiZmV0Y2hUZW1wbGF0ZSIsICJ3ZWVrbHlUZW1wbGF0ZVRleHQiLCAiZGF0ZXMiLCAiaSIsICJkYXRlIiwgInRpdGxlIiwgInRlbXBsYXRlIiwgInBhZ2UiLCAid2Vla2x5RGF0ZXMiLCAiayIsICJjb3VudGVyIiwgIm1ha2VTb2NrZXQiLCAibGluZXMiLCAicGF0Y2giLCAiXyIsICJtZXRhZGF0YSIsICJlIiwgImRpc2Nvbm5lY3QiLCAic2xlZXAiLCAiZG9uZSIsICJjaGVja2VkIiwgIm4iLCAicGF0aCIsICJyZXN1bHQiLCAiZ2V0Q29kZUJsb2NrIiwgImVycm9yIiwgIm1ha2VHcm91cCIsICJpdGVtcyIsICJub2RlcyIsICJpdGVtIiwgIm1ha2VJdGVtIiwgIm1ha2VJY29uIiwgImdyb3VwIiwgInNwYW4iLCAiY2hpbGQiLCAiaWNvbiIsICJzdGFjayIsICJpY29uMSIsICJtYWtlSWNvbkJhc2UiLCAiaWNvbjIiLCAiaSIsICJjdXJzb3IiLCAic2VsZWN0aW9uIiwgInRha2VTdG9yZXMiLCAibWFrZUJ1dHRvbiIsICJpbml0IiwgImNsYXNzTmFtZSIsICJkaXNwbGF5IiwgIm9uQ2xpY2siLCAiY29udGV4dCIsICJzdGF0dXMiLCAiaXNDb250ZXh0IiwgInNldERpc3BsYXkiLCAiaXRlbXMiLCAiZ3JvdXAiLCAibWFrZUdyb3VwIiwgIml0ZW1MaXN0IiwgImUiLCAibWFrZUxlZnRTdGF0dXNCYXIiLCAic3R5bGUiLCAic3RhdHVzQmFyIiwgImJ1dHRvbnMiLCAiY3Vyc29yIiwgInNlbGVjdGlvbiIsICJ0YWtlU3RvcmVzIiwgInN0YXR1c0JhciIsICJtYWtlTGVmdFN0YXR1c0JhciIsICJhZGRCdXR0b24iLCAiaW5pdCIsICJidXR0b24iLCAibWFrZUJ1dHRvbiIsICJidXR0b25zIiwgInN0YXR1c0JhciIsICJ1cGRhdGUiLCAiY3Vyc29yIiwgInNlbGVjdGlvbiIsICJwb3J0ZXJDb3B5IiwgImN1cnNvciIsICJzZWxlY3Rpb24iLCAidGV4dCIsICJnZXRUZXh0IiwgImUiLCAicG9ydGVyQ3V0IiwgImhhc1NlbGVjdGlvbiIsICJzdGFydCIsICJwcmVzcyIsICJwb3J0ZXJQYXN0ZSIsICJpbnNlcnRUZXh0IiwgInRvZ2dsZUNhcmV0IiwgImUiLCAiY3Vyc29yIiwgInRha2VDdXJzb3IiLCAiU2NyYXBib3hET00iLCAic2NyYXBib3hET00iLCAic2xlZXAiLCAibWlsbGlzZWNvbmRzIiwgInJlc29sdmUiLCAiaW5zZXJ0VGV4dCIsICJ0ZXh0IiwgIndhaXQiLCAiY3Vyc29yIiwgInNjcmFwYm94RE9NIiwgInVpRXZlbnQiLCAic2xlZXAiLCAiaXNNb2JpbGUiLCAiaWQiLCAiaW5zZXJ0VGV4dCIsICJ4IiwgInRyYW5zcG9ydCIsICJ0aXRsZSIsICJmcm9tIiwgInRvIiwgIm1lcmdlIiwgInJlcyIsICJnZXRQYWdlIiwgInBhZ2UiLCAicmVzMiIsICJwYWdlMiIsICJwYXRjaCIsICJsaW5lcyIsICJsaW5lIiwgImRlbGV0ZVBhZ2UiLCAidHJhbnNwb3J0UGFnZSIsICJ0aXRsZSIsICJmcm9tIiwgInRvIiwgInJlbmRlciIsICJkaXNwb3NlIiwgInVzZVN0YXR1c0JhciIsICJyZXN1bHQiLCAidHJhbnNwb3J0IiwgImVuY29kZVRpdGxlVVJJIiwgImUiLCAidHJhbnNwb3J0UGFnZSIsICJ1cmwiLCAiZm9ybWF0VGl0bGUiLCAidGl0bGUiLCAiemVybyIsICJuIiwgInRvWVlZWU1NRERfSEhNTVNTIiwgImRhdGUiLCAidG9ZWVlZTU1ERCIsICJhZGRUb0luYm94IiwgInByb2plY3QiLCAidGl0bGUiLCAibGluZXMiLCAib3B0aW9ucyIsICJyZW5kZXIiLCAiZGlzcG9zZSIsICJ1c2VTdGF0dXNCYXIiLCAiaXRlbXMiLCAicGFnZXMiLCAiYmxvY2siLCAicGFyc2UiLCAiZm9ybWF0VGl0bGUiLCAidG9ZWVlZTU1ERCIsICJ0b1lZWVlNTUREX0hITU1TUyIsICJzb2NrZXQiLCAibWFrZVNvY2tldCIsICJwYXRjaCIsICJfbGluZXMiLCAibGluZSIsICJsYXN0U2VwYXJhdG9ySW5kZXgiLCAiaSIsICJwYWdlIiwgImUiLCAib3BlbkluVGhlU2FtZVRhYiIsICJ3YWl0aW5nIiwgInNsZWVwIiwgImRpc2Nvbm5lY3QiLCAiaW5kZXgiLCAiY291bnQiLCAiZ2V0SW5kZW50TGluZUNvdW50IiwgImluZGVudE51bSIsICJnZXRJbmRlbnRDb3VudCIsICJhZGRUb0luYm94RnJvbVByb21wdCIsICJwcm9qZWN0IiwgInRpdGxlIiwgInRleHQiLCAiaXRlbXMiLCAiYWRkVG9JbmJveCIsICJidXR0b25GaWxlTmFtZSIsICJlIiwgInQiLCAicGF0aCIsICJleGVjdXRlIiwgInRpdGxlIiwgImNoYXIiLCAidXNlVGFza0NyYXdsZXIiLCAicHJvamVjdHMiLCAidGFza3MiLCAic2V0VGFza3MiLCAiQiIsICJlcnJvcnMiLCAic2V0RXJyb3JzIiwgImxvYWRpbmciLCAic2V0TG9hZGluZyIsICJjcmF3bCIsICJNIiwgInRpdGxlTGNzIiwgInJlc3VsdCIsICJsb2FkIiwgImxpbmtzIiwgInByb2plY3QiLCAibGluayIsICJ0aXRsZSIsICJkZWNvZGUiLCAicGFyc2UiLCAidGl0bGVMYyIsICJ0b1RpdGxlTGMiLCAiY2hlY2siLCAidyIsICJzdWJzY3JpYmUiLCAidXNlU3RvcFByb3BhZ2F0aW9uIiwgIk0iLCAiZSIsICJ1c2VEaWFsb2ciLCAiZGlhbG9nU3RhdGUiLCAiY2hhbmdlRGlhbG9nU3RhdGUiLCAiSSIsICJkaWFsb2dTdGF0ZVJlZHVjZXIiLCAib3BlbiIsICJNIiwgImNsb3NlIiwgIkRpYWxvZyIsICJjaGlsZHJlbiIsICJzdG9wUHJvcGFnYXRpb24iLCAidXNlU3RvcFByb3BhZ2F0aW9uIiwgInJlZiIsICJUIiwgImNsZWFudXAiLCAiZGlhbG9nIiwgImNvbnRyb2xsZXIiLCAic2UiLCAic3RhdGUiLCAiaXNPcGVuIiwgImlzT3Blbk5vdyIsICJwcmV2T3ZlcmZsb3dZIiwgIkNTUyIsICJDb3B5IiwgInRleHQiLCAidGl0bGUiLCAiYnV0dG9uTGFiZWwiLCAic2V0QnV0dG9uTGFiZWwiLCAiQiIsICJoYW5kbGVDbGljayIsICJNIiwgImUiLCAic2xlZXAiLCAic2UiLCAib25lZGF5IiwgImNhbGNGcmVzaG5lc3MiLCAiZnJlc2huZXNzIiwgIm5vdyIsICJzdGFydCIsICJ0b0RhdGUiLCAicHJpb3JpdHkiLCAicGVyaW9kIiwgImNvbXBhcmVGbiIsICJhIiwgImIiLCAic2EiLCAic29ydFR5cGUiLCAic2IiLCAiaXNCZWZvcmUiLCAiZ2V0U3RhcnQiLCAiZnJlc2huZXNzIiwgInRvS2V5IiwgImRhdGUiLCAiemVybyIsICJ0b0xvY2FsRGF0ZSIsICJrZXkiLCAieWVhciIsICJtb250aCIsICJzIiwgInRvV2Vla0tleSIsICJrIiwgImciLCAidG9TdGFydE9mV2VlayIsICJ3ZWVrIiwgInAiLCAidyIsICJMb2FkQnV0dG9uIiwgImxvYWRpbmciLCAib25DbGljayIsICJzZSIsICJ1c2VNaW51dGVzIiwgImRhdGUiLCAic2V0RGF0ZSIsICJCIiwgInciLCAidGltZXIiLCAidG9TdGF0dXNMYWJlbCIsICJzdGF0dXMiLCAibWFrZUxpbmsiLCAicGF0aCIsICJiYXNlIiwgImVuY29kZVRpdGxlVVJJIiwgIlNjcmFwYm94TGluayIsICJjaGlsZHJlbiIsICJwcm9qZWN0IiwgInRpdGxlIiwgImNsYXNzTmFtZSIsICJhdHJpYnV0ZXMiLCAic2UiLCAibWFrZUxpbmsiLCAiVGFza0l0ZW0iLCAiYWN0aW9uIiwgInBBY3Rpb25zIiwgInR5cGUiLCAiVCIsICJ0b1N0YXR1c0xhYmVsIiwgInN0YXJ0IiwgImZvcm1hdCIsICJnZXRTdGFydCIsICJkdXJhdGlvbiIsICJnZXREdXJhdGlvbiIsICJmcmVzaG5lc3NMZXZlbCIsICJub3ciLCAidXNlTWludXRlcyIsICJzY2hlZHVsZWQiLCAibiIsICJ1IiwgInRvRGF0ZSIsICJ0ZXh0IiwgInNlIiwgInRhc2tPcGFjaXR5IiwgIkNvcHkiLCAiU2NyYXBib3hMaW5rIiwgInVzZU5hdmlnYXRpb24iLCAiZGVmYXVsdFBhZ2VObyIsICJ0b0tleSIsICJwYWdlTm8iLCAic2V0UGFnZU5vIiwgIkIiLCAibmV4dCIsICJNIiwgImRhdGUiLCAidG9EYXRlIiwgInRvTG9jYWxEYXRlIiwgInByZXYiLCAibm93S2V5IiwgInVzZVVzZXJTY3JpcHRFdmVudCIsICJldmVudE5hbWUiLCAiY2FsbGJhY2siLCAidyIsICJ1c2VFeHBvcnRzIiwgImV4cG9ydGVyIiwgImV4cG9ydE9iamVjdCIsICJyZWYiLCAieiIsICJ3IiwgImtleSIsICJzZXR1cCIsICJwcm9qZWN0cyIsICJhcHAiLCAic2hhZG93Um9vdCIsICJyZXNvbHZlIiwgImRlIiwgInNlIiwgIkFwcCIsICJnZXRDb250cm9sbGVyIiwgInRhc2tzIiwgImVycm9ycyIsICJsb2FkIiwgImxvYWRpbmciLCAidXNlVGFza0NyYXdsZXIiLCAicGFnZU5vIiwgIm5leHQiLCAicHJldiIsICJ1c2VOYXZpZ2F0aW9uIiwgImFjdGlvbnMiLCAiVCIsICJlcnJvciIsICJub3ciLCAidGFzayIsICJpc1JlbWluZGVyIiwgImlzQmVmb3JlIiwgImdldEVuZCIsICJmcm9tRGF0ZSIsICJhIiwgImIiLCAiZ2V0U3RhcnQiLCAiZGF0ZSIsICJ0b0RhdGUiLCAidG9Mb2NhbERhdGUiLCAiaXNSZWN1cnJlbmNlIiwgInNjb3JlIiwgImNhbGNGcmVzaG5lc3MiLCAiY29tcGFyZUZuIiwgIkRpYWxvZyIsICJvcGVuIiwgImNsb3NlIiwgInVzZURpYWxvZyIsICJ1c2VFeHBvcnRzIiwgInRleHQiLCAiYWN0aW9uIiwgInVzZVVzZXJTY3JpcHRFdmVudCIsICJOIiwgIkNTUyIsICJDb3B5IiwgIkxvYWRCdXR0b24iLCAiaSIsICJUYXNrSXRlbSIsICJ0b0tleSIsICJwcm9qZWN0IiwgInRpdGxlIiwgInRvVGl0bGVMYyIsICJwYWdlcyIsICJsaXN0ZW5lcnMiLCAiZW1pdENoYW5nZSIsICJrZXkiLCAibGluZXMiLCAibGlzdGVuZXIiLCAidXBkYXRlIiwgInRpbWVyIiwgInRha2VJbnRlcm5hbExpbmVzIiwgImxpbmUiLCAiZ2V0IiwgInJlc3VsdCIsICJnZXRQYWdlIiwgInVzZUxpbmVzIiwgInNldExpbmVzIiwgIkIiLCAidyIsICJzZXQiLCAiZ2V0RW5kIiwgInBlcmlvZCIsICJmcm9tRGF0ZSIsICJ1IiwgInRvRGF0ZSIsICJzcGxpdCIsICJkYXRlIiwgInN0YXJ0IiwgInBhcnRpdGlvbiIsICJmb3J3b3JkTWluIiwgImZvcndhcmQiLCAiaXNMaW5rIiwgImV2ZW50IiwgImlzTG9nZ2VkIiwgImdldEV2ZW50U3RhdHVzIiwgIm5vdyIsICJpc0JlZm9yZSIsICJmcm9tRGF0ZSIsICJnZXRFbmQiLCAiZnJvbVRhc2tMaW5lIiwgInRhc2siLCAicHJvamVjdCIsICJyZXN1bHQiLCAicGFyc2UiLCAiZXZlbnQiLCAiZnJvbURhdGUiLCAiYSIsICJldmVudFdpdGhMaW5rIiwgImlzUmVtaW5kZXIiLCAiZnJvbUhvd21FdmVudCIsICJ0aXRsZSIsICJnZXRMaW5rVGl0bGUiLCAidXNlRXZlbnRzIiwgInByb2plY3QiLCAiZGF0ZSIsICJ0YXNrcyIsICJldmVudHNfIiwgInVzZUV2ZW50c18iLCAiZiIsICJjIiwgImV2ZW50cyIsICJUIiwgInNQYXJ0aXRpb24iLCAiciIsICJlUGFydGl0aW9uIiwgImV2ZW50IiwgImJhY2t3YXJkIiwgInNwbGl0IiwgImZvcndhcmQiLCAiXyIsICJyZXN0IiwgImEiLCAiYiIsICJpc0JlZm9yZSIsICJsaW5lcyIsICJ1c2VMaW5lcyIsICJ0b1RpdGxlIiwgImV2ZW50c0Zyb21MaW5lcyIsICJnZXRFdmVudHNGcm9tTGluZXMiLCAiZ2V0RXZlbnRzRnJvbUxpbmtzIiwgInRhc2siLCAiaXNSZW1pbmRlciIsICJpc1JlY3VycmVuY2UiLCAiZ2VuZXJhdGVkIiwgIm1ha2VSZXBlYXQiLCAiZnJvbUhvd21FdmVudCIsICJzdGFydCIsICJ0b0RhdGUiLCAibiIsICJwYXJzZUxpbmVzIiwgImlzU3RyaW5nIiwgImZyb21UYXNrTGluZSIsICJFdmVudEl0ZW0iLCAiZXZlbnQiLCAic3RhcnQiLCAiVCIsICJzdHlsZSIsICJub3ciLCAidXNlTWludXRlcyIsICJ0eXBlIiwgImdldEV2ZW50U3RhdHVzIiwgImlzTGluayIsICJzZSIsICJTY3JhcGJveExpbmsiLCAiVGltZUxpbmUiLCAicHJvamVjdCIsICJkYXRlIiwgInRhc2tzIiwgImV2ZW50cyIsICJ1c2VFdmVudHMiLCAibGlua0xpc3QiLCAiVCIsICJldmVudCIsICJpc0xpbmsiLCAibm93IiwgInVzZU1pbnV0ZXMiLCAiaW5kaWNhdG9yIiwgIm4iLCAic2UiLCAiciIsICJOIiwgIkV2ZW50SXRlbSIsICJDb3B5IiwgIlRpbWVHcmlkIiwgImRhdGVMaXN0IiwgInRhc2tzIiwgInByb2plY3QiLCAiaGFzQ29sdW1uIiwgInNlIiwgImRhdGUiLCAidG9LZXkiLCAiciIsICJpIiwgInplcm8iLCAiVGltZUxpbmUiLCAidXNlTmF2aWdhdGlvbiIsICJkZWZhdWx0UGFnZU5vIiwgIm5leHRGbiIsICJwcmV2Rm4iLCAicGFnZU5vIiwgInNldFBhZ2VObyIsICJCIiwgIm5leHQiLCAiTSIsICJwcmV2IiwgImp1bXAiLCAidXNlT3BlbiIsICJpbml0aWFsU3RhdGUiLCAibGlzdGVuZXJzIiwgInoiLCAiaXNPcGVuIiwgInNldE9wZW5kIiwgIkIiLCAiZW1pdENoYW5nZSIsICJNIiwgImxpc3RlbmVyIiwgIm9wZW4iLCAiY2xvc2UiLCAidG9nZ2xlIiwgInN0YXRlIiwgIm9uT3BlbiIsICJzZXR1cCIsICJwcm9qZWN0cyIsICJhcHAiLCAic2hhZG93Um9vdCIsICJyZXNvbHZlIiwgImRlIiwgInNlIiwgIkFwcCIsICJzZXR1cFdlZGdldCIsICJvcGVuIiwgIldlZGdldCIsICJzY3JvbGxlZFRvSW5kaWNhdG9ySW5BcHAiLCAiZ2V0Q29udHJvbGxlciIsICJtYWluUHJvamVjdCIsICJ0YXNrcyIsICJsb2FkIiwgImxvYWRpbmciLCAidXNlVGFza0NyYXdsZXIiLCAicGFnZU5vIiwgIm5leHQiLCAicHJldiIsICJqdW1wIiwgInVzZU5hdmlnYXRpb24iLCAidG9XZWVrS2V5IiwgIm5leHRXZWVrS2V5IiwgInByZXZXZWVrS2V5IiwgImRhdGVMaXN0IiwgIlQiLCAic3RhcnQiLCAidG9TdGFydE9mV2VlayIsICJpIiwgImMiLCAiY2xvc2UiLCAiRGlhbG9nIiwgImlzT3BlbiIsICJ1c2VEaWFsb2ciLCAidXNlRXhwb3J0cyIsICJ1c2VVc2VyU2NyaXB0RXZlbnQiLCAiZ29Ub2RheSIsICJNIiwgIk4iLCAiQ1NTIiwgIkxvYWRCdXR0b24iLCAic2Nyb2xsVG9JbmRpY2F0b3IiLCAiVGltZUdyaWQiLCAic2Nyb2xsZWRUb0luZGljYXRvckluV2VkZ2V0IiwgIm9wZW5fIiwgIm5leHREYXRlIiwgInByZXZEYXRlIiwgImRhdGVzIiwgInVzZU9wZW4iLCAidG9LZXkiLCAiZiIsICJzIiwgImRhdGUiLCAiYW5jZXN0ZXIiLCAiZWwiLCAic2Nyb2xsWSIsICJzeW5jIiwgInNldHVwIiwgIm9wcyIsICJXQVNNX1VSTCIsICJXT1JLRVJfVVJMIiwgInJlcSIsICJyZXMiLCAiZmluZExhdGVzdENhY2hlIiwgInNhdmVBcGlDYWNoZSIsICJzZXR1cCIsICJwcm9qZWN0cyIsICJvcHMiLCAicCIsICJ0IiwgInB2c3AiLCAiZSIsICJoYXNQb3B1cCIsICJzY3JhcEJpbmRpbmdzIiwgInByZXZpZXdTVkciLCAicHJldmlld0dMU0wiLCAicHJldmlld1BsYW50VU1MIiwgInByZXZpZXdUaWtaIiwgInRvZ2dsZSIsICJtYWluIiwgImlzTW9iaWxlIiwgImFkZEJ1dHRvbiIsICJjdXJzb3IiLCAic2VsZWN0aW9uIiwgIm91dGRlbnRCbG9ja3MiLCAib3V0ZGVudExpbmVzIiwgImluZGVudEJsb2NrcyIsICJpbmRlbnRMaW5lcyIsICJ1cEJsb2NrcyIsICJ1cExpbmVzIiwgImRvd25CbG9ja3MiLCAiZG93bkxpbmVzIiwgInBvcnRlckNvcHkiLCAicG9ydGVyQ3V0IiwgInBvcnRlclBhc3RlIiwgInVuZG8iLCAicmVkbyIsICJ0b2dnbGVDYXJldCIsICJpZCIsICJjcmVhdGVUYXNrIiwgInRyYW5zcG9ydCIsICJob29rcyIsICJ0YXNrTGluZUhvb2siLCAibmV3UGFnZUhvb2siLCAic3BsaXR0ZWRMaW5rSG9vayIsICJwcm9qZWN0IiwgIm1ha2VOZXdQYWdlIiwgImFkZFRvSW5ib3hGcm9tUHJvbXB0IiwgInNlbGVjdG9yIiwgInN0eWxlIiwgIm9wZW4iLCAic2NoZWR1bGVyIiwgImtleSIsICJzZXR0aW5ncyIsICJ3ZWRnZXQiLCAic2V0dXBXZWRnZXQiXQp9Cg==
code:takker-memex.js
var hm=Object.defineProperty;var Qt=(A,e)=>{for(var t in e)hm(A,t,{get:et,enumerable:!0})};var bi=A=>dm.includes(A.name),dm="SocketIOError","DuplicateTitleError","NotFastForwardError";var qo=async()=>{let e=(await fm())("https://scrapbox.io",{reconnectionDelay:5e3,transports:["websocket"]});return await new Promise((t,o)=>{let g=r=>o(r);e.once("connect",()=>{e.off("disconnect",g),t()}),e.once("disconnect",g)}),e},um="4.2.0",ji=https://cdnjs.cloudflare.com/ajax/libs/socket.io/${um}/socket.io.min.js,Dn,fm=async()=>{if(Dn)throw Dn;if(!document.querySelector(script[src="${ji}"])){let A=document.createElement("script");A.src=ji,await new Promise((e,t)=>{A.onload=()=>e(),A.onerror=o=>{Dn=o,t(o)},document.head.append(A)})}return new Promise(A=>{let e=setInterval(()=>{io&&(clearInterval(e),A(io))},500)})};var pn=(A,e=9e4)=>{let t=(g,r)=>{let n;return new Promise((Q,B)=>{let C=i=>{clearTimeout(n),B(new Error(i))};A.emit(g,r,i=>{switch(clearTimeout(n),A.off("disconnect",C),g){case"socket.io-request":"error"in i?typeof i.error=="object"&&i.error&&"name"in i.error&&typeof i.error.name=="string"&&bi({name:i.error.name})?Q({ok:!1,value:i.error}):Q({ok:!1,value:{name:"UnexpectedError",value:i.error}}):"data"in i&&Q({ok:!0,value:i.data});break;case"cursor":"error"in i?Q({ok:!1,value:{name:"UnexpectedError",value:i.error}}):"data"in i&&Q({ok:!0,value:i.data});break}B(new Error('Invalid response: missing "data" or "error" field'))}),n=setTimeout(()=>{A.off("disconnect",C),Q({ok:!1,value:{name:"TimeoutError",message:Timeout: exceeded ${e}ms}})},e),A.once("disconnect",C)})};async function*o(...g){let r,n=()=>new Promise(B=>r=B),Q=B=>{r?.(B)};for(let B of g)A.on(B,Q);try{for(;;)yield await n()}finally{for(let B of g)A.off(B,Q)}}return{request:t,response:o}};var SA=()=>qo(),wn=async A=>{if(A.connected)return;let e=new Promise(t=>A.once("connect",()=>t()));A.connect(),await e},yA=async A=>{if(A.disconnected)return;let e=new Promise(t=>{let o=g=>{g==="io client disconnect"&&(t(),A.off("disconnect",o))};A.on("disconnect",o)});A.disconnect(),await e};var mn=(A,e)=>{let t=A.length>e.length,o=t?e:A,g=t?A:e,r=o.length+1,n=o.length+g.length+3,Q=new Array(n);Q.fill(-1);let B=[];function C(l,D,m){let N=Math.max(D,m),u=N-l;for(;u<o.length&&N<g.length&&ou===gN;)++u,++N;return Ql+r=B.length,B.push([{x:u,y:N},Ql+(D>m?-1:1)+r]),N}let i=new Array(n);i.fill(-1);let I=-1,s=g.length-o.length;do{++I;for(let l=-I;l<=s-1;++l)il+r=C(l,il-1+r+1,il+1+r);for(let l=s+I;l>=s+1;--l)il+r=C(l,il-1+r+1,il+1+r);is+r=C(s,is-1+r+1,is+1+r)}while(is+r!==g.length);let a=[],c=Qs+r;for(;c!==-1;)a.push(Bc0),c=Bc1;return{from:A,to:e,editDistance:s+I*2,buildSES:function*(){let l=0,D=0;for(let{x:m,y:N}of Mm(a))for(;l<m||D<N;)N-m>D-l?(yield{value:gD,type:t?"deleted":"added"},++D):N-m<D-l?(yield{value:ol,type:t?"added":"deleted"},++l):(yield{value:ol,type:"common"},++l,++D)}}};function*hn(A){let e=[],t=[];function*o(){if(e.length>t.length){for(let g=0;g<t.length;g++)yield Oi(eg,tg);for(let g=t.length;g<e.length;g++)yield eg}else{for(let g=0;g<e.length;g++)yield Oi(eg,tg);for(let g=e.length;g<t.length;g++)yield tg}e=[],t=[]}for(let g of A)switch(g.type){case"added":e.push(g);break;case"deleted":t.push(g);break;case"common":yield*o(),yield g;break}yield*o()}var Oi=(A,e)=>({value:A.value,oldValue:e.value,type:"replaced"});function*Mm(A){for(let e=A.length-1;e>=0;e--)yield Ae}var q=A=>{let{fetch:e=globalThis.fetch,hostName:t="scrapbox.io",...o}=A;return{fetch:e,hostName:t,...o}};var ae=A=>A==null,Bo=A=>typeof A=="string",JA=A=>typeof A=="number";var Nm=A=>typeof A=="object"&&A!==null,ym=A=>Nm(A)?(A.name===void 0||typeof A.name=="string")&&typeof A.message=="string":!1,Fi=A=>{try{let e=typeof A=="string"?JSON.parse(A):A;return ym(e)?e:!1}catch(e){if(e instanceof SyntaxError)return!1;throw e}};var Se=class A extends Error{constructor(t){super(${t.status} ${t.statusText} when fetching ${t.url});this.response=t;Error.captureStackTrace&&Error.captureStackTrace(this,A)}name="UnexpectedResponseError"},BA=async A=>{let e=A.clone(),t=await e.text(),o=Fi(t);if(!o)throw new Se(e);return{ok:!1,value:o}};var qg=async A=>{let{sid:e,hostName:t,fetch:o}=q(A??{}),g=new Request(https://${t}/api/users/me,e?{headers:{Cookie:AA(e)}}:void 0),r=await o(g);if(!r.ok)throw new Se(r);return await r.json()};var AA=A=>connect.sid=${A},ke=async A=>globalThis._csrf?globalThis._csrf:(await qg(A)).csrfToken;var xi=(A,e)=>{let{sid:t,hostName:o}=q(e??{});return new Request(https://${o}/api/projects/${A},t?{headers:{Cookie:AA(t)}}:void 0)},Ji=async A=>A.ok?{ok:!0,value:await A.json()}:BA(A),ue=async(A,e)=>{let{fetch:t}=q(e??{}),o=xi(A,e),g=await t(o);return Ji(g)};ue.toRequest=xi;ue.fromResponse=Ji;var Ri=(A,e)=>{let{sid:t,hostName:o}=q(e??{}),g=new URLSearchParams;for(let r of A)g.append("ids",r);return new Request(https://${o}/api/projects?${g.toString()},t?{headers:{Cookie:AA(t)}}:void 0)},Zi=async A=>A.ok?{ok:!0,value:await A.json()}:BA(A),Co=async(A,e)=>{let{fetch:t}=q(e??{}),o=await t(Ri(A,e));return Zi(o)};Co.toRequest=Ri;Co.fromResponse=Zi;var _g,Ti=async()=>{if(_g!==void 0)return _g;let A=await qg();if(A.isGuest)throw new Error("this script can only be executed by Logged in users");return _g=A.id,_g},Ui=new Map,dn=async A=>{let e=Ui.get(A);if(e!==void 0)return e;let t=await ue(A);if(!t.ok){let{name:g,message:r}=t.value;throw new Error(${g} ${r})}let{id:o}=t.value;return Ui.set(A,o),o},Li=A=>A.padStart(8,"0"),un=A=>{let e=Math.floor(new Date().getTime()/1e3).toString(16),t=Math.floor(16777214*Math.random()).toString(16);return${Li(e).slice(-8)}${A.slice(-6)}0000${Li(t)}};function*fn(A,e,{userId:t}){let{buildSES:o}=mn(A.map(({text:n})=>n),e),g=0,r=A0.id;for(let n of hn(o())){switch(n.type){case"added":yield{_insert:r,lines:{id:un(t),text:n.value}};continue;case"deleted":yield{_delete:r,lines:-1};break;case"replaced":yield{_update:r,lines:{text:n.value}};break}g++,r=Ag?.id??"_end"}}var Gm=A=>({type:"title",text:A.rows0.text}),km=A=>{let{rows:e,...t}=A,{indent:o=0,text:g=""}=e??{},r=g.replace(/^\s*code:/,"");return{indent:o,type:"codeBlock",fileName:r,content:t.map(n=>n.text.substring(o+1)).join(` )}},RA=(A,{parseOnNested:e,parseOnQuoted:t,patterns:o})=>(g,r,n)=>{var Q,B,C,i,I,s;if(!e&&r.nested)return(Q=n?.())!==null&&Q!==void 0?Q:[];if(!t&&r.quoted)return(B=n?.())!==null&&B!==void 0?B:[];for(let a of o){let c=a.exec(g);if(c===null)continue;let l=g.substring(0,c.index),D=g.substring(c.index+((i=(C=c[0])===null||C===void 0?void 0:C.length)!==null&&i!==void 0?i:0)),m=A((I=c[0])!==null&&I!==void 0?I:"",r);return[...nt(l,r),...m,...nt(D,r)]}return(s=n?.())!==null&&s!==void 0?s:[]},vA=A=>[{type:"plain",raw:A,text:A}],Ym=RA(vA,{parseOnNested:!0,parseOnQuoted:!0,patterns:[/^()(.*)()$/]}),bm=/^>.*$/,jm=(A,e)=>e.context==="table"?vA(A,e):[{type:"quote",raw:A,nodes:nt(A.substring(1),{...e,quoted:!0})}],Om=RA(jm,{parseOnNested:!1,parseOnQuoted:!1,patterns:[bm]}),Fm=/^\? .+$/,xm=(A,e)=>e.context==="table"?vA(A,e):[{type:"helpfeel",raw:A,text:A.substring(2)}],Jm=RA(xm,{parseOnNested:!1,parseOnQuoted:!1,patterns:[Fm]}),Rm=/\[\[https?:\/\/[^\s\]]+\.(?:png|jpe?g|gif|svg)\]\]/i,Zm=/\[\[https?:\/\/(?:[0-9a-z-]+\.)?gyazo\.com\/[0-9a-f]{32}\]\]/,Um=(A,e)=>{if(e.context==="table")return vA(A,e);let t=A.substring(2,A.length-2),o=/^https?:\/\/([0-9a-z-]\.)?gyazo\.com\/[0-9a-f]{32}$/.test(t);return[{type:"strongImage",raw:A,src:o?${t}/thumb/1000:t}]},Lm=RA(Um,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Rm,Zm]}),Tm=/\[[^[\]]*\.icon(?:\*[1-9]\d*)?\]/;function vi(A){return(e,t)=>{if(A==="strongIcon"&&t.context==="table")return vA(e,t);let o=A==="icon"?e.substring(1,e.length-1):e.substring(2,e.length-2),g=o.lastIndexOf(".icon"),r=o.substring(0,g),n=r.startsWith("/")?"root":"relative",Q=o.substring(g+5,o.length),B=Q.startsWith("*")?parseInt(Q.substring(1),10):1;return new Array(B).fill({}).map(()=>({path:r,pathType:n,type:A,raw:e}))}}var Sm=vi("icon"),vm=RA(Sm,{parseOnNested:!0,parseOnQuoted:!0,patterns:[Tm]}),Hm=/\[\[[^[\]]*\.icon(?:\*\d+)?\]\]/,Wm=vi("strongIcon"),Xm=RA(Wm,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Hm]}),zm=/\[\[(?:[^[]|\[[^[]).*?\]*\]\]/,Km=(A,e)=>e.context==="table"?vA(A,e):[{type:"strong",raw:A,nodes:nt(A.substring(2,A.length-2),{...e,nested:!0})}],Pm=RA(Km,{parseOnNested:!1,parseOnQuoted:!0,patterns:[zm]}),Vm=/\[\$ .+? \]/,qm=/\[\$ [^\]]+\]/,_m=(A,e)=>e.context==="table"?vA(A,e):[{type:"formula",raw:A,formula:A.substring(3,A.length-(A.endsWith(" ]")?2:1))}],$m=RA(_m,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Vm,qm]}),Ah=/\[[!"#%&'()*+,\-./{|}<>_~]+ (?:\[[^[\]]+\]|[^\]])+\]/,eh=(A,e)=>{if(e.context==="table")return vA(A,e);let t=A.indexOf(" "),o=A.substring(1,t),g=A.substring(t+1,A.length-1),r=new Set(o);if(r.has("*")){let n=o.split("*").length-1;r.delete("*"),r.add(*-${Math.min(n,10)})}return[{type:"decoration",raw:A,rawDecos:o,decos:Array.from(r),nodes:nt(g,{...e,nested:!0})}]},th=RA(eh,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Ah]}),oh=/.*?/,gh=(A,e)=>e.context==="table"?vA(A,e):[{type:"code",raw:A,text:A.substring(1,A.length-1)}],rh=RA(gh,{parseOnNested:!1,parseOnQuoted:!0,patterns:[oh]}),Qh=/^[$%] .+$/,nh=(A,e)=>{var t;if(e.context==="table")return vA(A,e);let o=(t=A[0])!==null&&t!==void 0?t:"",g=A.substring(2);return[{type:"commandLine",raw:A,symbol:o,text:g}]},Bh=RA(nh,{parseOnNested:!1,parseOnQuoted:!1,patterns:[Qh]}),Ch=/\[\s+\]/,ih=(A,e)=>e.context==="table"?vA(A,e):[{type:"blank",raw:A,text:A.substring(1,A.length-1)}],Ih=RA(ih,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Ch]}),sh=/\[https?:\/\/[^\s\]]+\.(?:png|jpe?g|gif|svg)(?:\?[^\]\s]+)?(?:\s+https?:\/\/[^\s\]]+)?\]/i,ah=/\[https?:\/\/[^\s\]]+\s+https?:\/\/[^\s\]]+\.(?:png|jpe?g|gif|svg)(?:\?[^\]\s]+)?\]/i,Eh=/\[https?:\/\/(?:[0-9a-z-]+\.)?gyazo\.com\/[0-9a-f]{32}(?:\/raw)?(?:\s+https?:\/\/[^\s\]]+)?\]/,ch=/\[https?:\/\/[^\s\]]+\s+https?:\/\/(?:[0-9a-z-]+\.)?gyazo\.com\/[0-9a-f]{32}(?:\/raw)?\]/,lh=A=>/^https?:\/\/[^\s\]]+\.(png|jpe?g|gif|svg)(\?[^\]\s]+)?$/i.test(A)||Dh(A),Dh=A=>/^https?:\/\/([0-9a-z-]\.)?gyazo\.com\/[0-9a-f]{32}(\/raw)?$/.test(A),ph=(A,e)=>{if(e.context==="table")return vA(A,e);let t=A.search(/\s/),o=t!==-1?A.substring(1,t):A.substring(1,A.length-1),g=t!==-1?A.substring(t,A.length-1).trimLeft():"",[r,n]=lh(g)?[g,o]:[o,g];return[{type:"image",raw:A,src:/^https?:\/\/([0-9a-z-]\.)?gyazo\.com\/[0-9a-f]{32}$/.test(r)?${r}/thumb/1000:r,link:n}]},wh=RA(ph,{parseOnNested:!0,parseOnQuoted:!0,patterns:[sh,ah,Eh,ch]}),mh=/\[https?:\/\/[^\s\]]+\s+[^\]]*[^\s]\]/,hh=/\[[^[\]]*[^\s]\s+https?:\/\/[^\s\]]+\]/,dh=/\[https?:\/\/[^\s\]]+\]/,uh=/https?:\/\/[^\s]+/,fh=(A,e)=>{if(e.context==="table")return vA(A,e);let t=A.startsWith("[")&&A.endsWith("]")?A.substring(1,A.length-1):A,o=/^https?:\/\/[^\s\]]/.test(t),g=(o?/^https?:\/\/[^\s\]]+/:/https?:\/\/[^\s\]]+$/).exec(t);if(g?.[0]===void 0)return[];let r=o?t.substring(g[0].length):t.substring(0,g.index-1);return[{type:"link",raw:A,pathType:"absolute",href:g[0],content:r.trim()}]},Mh=RA(fh,{parseOnNested:!0,parseOnQuoted:!0,patterns:[mh,hh,dh,uh]}),Hi=/\[([^\]]*[^\s])\s+([NS]\d+(?:\.\d+)?,[EW]\d+(?:\.\d+)?(?:,Z\d+)?)\]/,Wi=/\[([NS]\d+(?:\.\d+)?,[EW]\d+(?:\.\d+)?(?:,Z\d+)?)(?:\s+([^\]]*[^\s]))?\]/,Nh=A=>{let[e="",t="",o=""]=A.split(","),g=parseFloat(e.replace(/^N/,"").replace(/^S/,"-")),r=parseFloat(t.replace(/^E/,"").replace(/^W/,"-")),n=/^Z\d+$/.test(o)?parseInt(o.replace(/^Z/,""),10):14;return{latitude:g,longitude:r,zoom:n}},yh=(A,e)=>{var t;if(e.context==="table")return vA(A,e);let o=(t=A.match(Hi))!==null&&t!==void 0?t:A.match(Wi);if(o===null)return[];let g=A.startsWith("[N")||A.startsWith("[S"),[,r="",n=""]=g?o:[o[0],o[2],o[1]],{latitude:Q,longitude:B,zoom:C}=Nh(r),i=n!==""?https://www.google.com/maps/place/${encodeURIComponent(n)}/@${Q},${B},${C}z:https://www.google.com/maps/@${Q},${B},${C}z;return[{type:"googleMap",raw:A,latitude:Q,longitude:B,zoom:C,place:n,url:i}]},Gh=RA(yh,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Hi,Wi]}),kh=/\[\/?[^[\]]+\]/,Yh=A=>{let e=A.substring(1,A.length-1);return[{type:"link",raw:A,pathType:e.startsWith("/")?"root":"relative",href:e,content:""}]},bh=RA(Yh,{parseOnNested:!0,parseOnQuoted:!0,patterns:[kh]}),jh=/(?:^|\s)#\S+/,Oh=(A,e)=>{if(e.context==="table")return vA(A,e);if(A.startsWith("#"))return[{type:"hashTag",raw:A,href:A.substring(1)}];let t=A.substring(0,1),o=A.substring(1);return[...vA(t,e),{type:"hashTag",raw:o,href:o.substring(1)}]},Fh=RA(Oh,{parseOnNested:!0,parseOnQuoted:!0,patterns:[jh]}),xh=/^[0-9]+\. .*$/,Jh=(A,e)=>{if(e.context==="table")return vA(A,e);let t=A.indexOf(" "),o=A.substring(0,t-1),g=parseInt(o,10),r=A.substring(t+1,A.length);return[{type:"numberList",raw:A,rawNumber:o,number:g,nodes:nt(r,{...e,nested:!0})}]},Rh=RA(Jh,{parseOnNested:!1,parseOnQuoted:!1,patterns:[xh]}),Zh=(A,e,t)=>{var o;return A===""?[]:(o=t?.())!==null&&o!==void 0?o:[]},Uh=(...A)=>(e,t)=>A.reduceRight((o,g)=>()=>g(e,t,o),()=>Ym(e,t))(),nt=Uh(Zh,Om,Jm,rh,Bh,$m,Ih,th,Lm,Xm,Pm,wh,Mh,vm,Gh,bh,Fh,Rh),Lh=A=>{let{rows:[e,...t]}=A,{indent:o=0,text:g=""}=e??{},r=g.replace(/^\s*table:/,"");return{indent:o,type:"table",fileName:r,cells:t.map(n=>n.text.substring(o+1)).map(n=>n.split(" ").map(Q=>nt(Q,{nested:!1,quoted:!1,context:"table"})))}},Th=A=>{let{indent:e,text:t}=A.rows[0];return{indent:e,type:"line",nodes:nt(t.substring(e),{nested:!1,quoted:!1,context:"line"})}},Sh=A=>{switch(A.type){case"title":return Gm(A);case"codeBlock":return km(A);case"table":return Lh(A);case"line":return Th(A)}},vh=A=>A.split( ).map(e=>{var t,o,g;return{indent:(g=(o=(t=/^\s+/.exec(e))===null||t===void 0?void 0:t[0])===null||o===void 0?void 0:o.length)!==null&&g!==void 0?g:0,text:e}}),Hh=(A,e)=>{var t,o;return(A.type==="codeBlock"||A.type==="table")&&e.indent>((o=(t=A.rows[0])===null||t===void 0?void 0:t.indent)!==null&&o!==void 0?o:0)},Si=(A,e)=>{let t=A[A.length-1];return t!==void 0&&Hh(t,e)?(t.rows.push(e),A):(A.push({type:/^\s*code:/.test(e.text)?"codeBlock":/^\s*table:/.test(e.text)?"table":"line",rows:[e]}),A)},Wh=(A,e)=>{var t;if(!((t=e.hasTitle)!==null&&t!==void 0)||t){let[o,...g]=A;return o===void 0?[]:[{type:"title",rows:[o]},...g.reduce(Si,[])]}return A.reduce(Si,[])},hA=(A,e)=>{var t;let o=vh(A);return Wh(o,{hasTitle:(t=e?.hasTitle)!==null&&t!==void 0?t:!0}).map(Sh)},Xh=A=>{var e,t;return(t=(e=/^\s*\S.*$/m.exec(A)?.[0])===null||e===void 0?void 0:e.trim())!==null&&t!==void 0?t:"Untitled"};var z=A=>A.replaceAll(" ","_").toLowerCase(),Xi=A=>A.replaceAll("_"," "),V=A=>[...A].map((e,t)=>e===" "?"_":!zh.includes(e)||t===A.length-1&&Kh.includes(e)?encodeURIComponent(e):e).join(""),zh='@$&+=:;",',Kh=':;",';var Ph=/https?:\/\/(?:www\.|music\.|)youtube\.com\/watch/,Vh=/https?:\/\/youtu\.be\/([a-zA-Z\d_-]+)(?:\?([^\s]{0,100})|)/,qh=/https?:\/\/(?:www\.|)youtube\.com\/shorts\/([a-zA-Z\d_-]+)(?:\?([^\s]+)|)/,_h=/https?:\/\/(?:www\.|music\.|)youtube\.com\/playlist\?((?:[^\s]+&|)list=([a-zA-Z\d_-]+)(?:&[^\s]+|))/,$g=A=>{if(Ph.test(A)){let e=new URL(A).searchParams,t=e.get("v");if(t)return{pathType:"com",videoId:t,params:e}}{let e=A.match(Vh);if(e){let[,t,o]=e;return{videoId:t,params:new URLSearchParams(o),pathType:"dotbe"}}}{let e=A.match(qh);if(e){let[,t,o]=e;return{videoId:t,params:new URLSearchParams(o),pathType:"short"}}}{let e=A.match(_h);if(e){let[,t,o]=e;return{listId:o,params:new URLSearchParams(t),pathType:"list"}}}};var Ki=A=>{let e=hA(A,{hasTitle:!0}).flatMap(c=>{switch(c.type){case"codeBlock":case"title":return[];case"line":case"table":return c}}),t=new Map,o=[],g=new Set,r=[],n=new Set,Q=[],B=null,C=new Set,i=new Set,I=new RegExp(${location?.origin??"https://scrapbox.io"}/files/([a-z0-9]{24})(?:|\\.[a-zA-Z0-9]+)(?:|\\?[^\\s]*)$),s=c=>{switch(c.type){case"hashTag":if(t.has(z(c.href)))return;t.set(z(c.href),!1),o.push(c.href);return;case"link":switch(c.pathType){case"relative":{let l=zi(c.href);if(t.get(z(l)))return;t.set(z(l),!0),o.push(l);return}case"root":{let l=zi(c.href);if(/^\/[\w\d-]+\/?$/.test(l)||g.has(z(l)))return;g.add(z(l)),r.push(l);return}case"absolute":{if(c.content)return;let l=$g(c.href);if(l&&l.pathType!=="list"){B??=https://i.ytimg.com/vi/${l.videoId}/mqdefault.jpg;return}let D=c.href.match(I)?.[1];D&&C.add(D);return}default:return}case"icon":case"strongIcon":{if(c.pathType==="root"||n.has(z(c.path)))return;n.add(z(c.path)),Q.push(c.path);return}case"image":case"strongImage":{B??=c.src.endsWith("/thumb/1000")?c.src.replace(/\/thumb\/1000$/,"/raw"):c.src;{let l=c.src.match(I)?.[1];l&&C.add(l)}if(c.type==="image"){let l=c.link.match(I)?.[1];l&&C.add(l)}return}case"helpfeel":i.add(c.text);return;case"numberList":case"strong":case"quote":case"decoration":{for(let l of c.nodes)s(l);return}default:return}},a=[];for(let c of e)switch(c.type){case"line":for(let l of c.nodes)s(l);continue;case"table":{for(let l of c.cells)for(let D of l)for(let m of D)s(m);if(!["infobox","cosense"].includes(c.fileName))continue;a.push(...c.cells.map(l=>l.map(D=>D.map(m=>m.raw).join("")).join(" ").trim()));continue}}return[o,r,Q,B,[...C],[...i],a]},zi=A=>A.replace(/#[a-f\d]{24,32}$/,""),Pi=A=>A.flatMap(({text:e})=>/^\s*\? .*$/.test(e)?[e.trimStart().slice(2)]:[]);var yt=(A,e)=>A.length===e.length&&A.every(t=>e.includes(t));function*Vi(A,e,t){let o=e.flatMap(a=>a.split( ));for(let a of fn(A.lines,o,{userId:t}))yield a;(A.lines[0].text!==o[0]||!A.persistent)&&(yield{title:o[0]});let g=A.lines.slice(1,6).map(a=>a.text),r=o.slice(1,6);g.join("")!==r.join("")&&(yield{descriptions:r});let[n,Q,B,C,i,I,s]=Ki(o.join(
));yt(A.links,n)||(yield{links:n}),yt(A.projectLinks,Q)||(yield{projectLinks:Q}),yt(A.icons,B)||(yield{icons:B}),A.image!==C&&(yield{image:C}),yt(A.files,i)||(yield{files:i}),yt(Pi(A.lines),I)||(yield{helpfeels:I}),yt(A.infoboxDefinition,s)||(yield{infoboxDefinition:s})}var qi=(A,e,t)=>{let{sid:o,hostName:g,followRename:r,projects:n}=q(t??{}),Q=new URLSearchParams;Q.append("followRename",${r??!0});for(let C of n??[])Q.append("projects",C);let B=https://${g}/api/pages/${A}/${V(e)}?${Q.toString()};return new Request(B,o?{headers:{Cookie:AA(o)}}:void 0)},_i=async A=>A.ok?{ok:!0,value:await A.json()}:A.status===414?{ok:!1,value:{name:"TooLongURIError",message:"project ids may be too much."}}:BA(A),ee=async(A,e,t)=>{let{fetch:o}=q(t??{}),g=qi(A,e,t),r=await o(g);return await _i(r)};ee.toRequest=qi;ee.fromResponse=_i;var $i=(A,e)=>{let{sid:t,hostName:o,sort:g,limit:r,skip:n}=q(e??{}),Q=new URLSearchParams;g!==void 0&&Q.append("sort",g),r!==void 0&&Q.append("limit",${r}),n!==void 0&&Q.append("skip",${n});let B=https://${o}/api/pages/${A}?${Q.toString()};return new Request(B,t?{headers:{Cookie:AA(t)}}:void 0)},AI=async A=>A.ok?{ok:!0,value:await A.json()}:BA(A),eI=async(A,e)=>{let{fetch:t}=q(e??{}),o=await t($i(A,e));return await AI(o)};eI.toRequest=$i;eI.fromResponse=AI;var Ar=async(A,e)=>{let t=await ee(A,e);if(!t.ok)throw new Error(You have no privilege of editing "/${A}/${e}".);return t.value};var nA=A=>new Promise(e=>setTimeout(()=>e(),A));var Gt=async(A,e,t,o)=>{let g=o?.socket,r=g??await qo();await wn(r);try{let n=await Promise.all([Ar(A,e),dn(A),Ti()]).then(([I,s,a])=>({...I,projectId:s,userId:a})),{request:Q}=pn(r),B=0,C=[],i;for(;o?.maxAttempts===void 0||B<o.maxAttempts;){let I=t(n,B,C,i);if(C=I instanceof Promise?await I:I,B++,C.length===0)return{ok:!0,value:n.commitId};let s={kind:"page",projectId:n.projectId,pageId:n.id,parentId:n.commitId,userId:n.userId,changes:C,cursor:null,freeze:!0};for(;;){let a=await Q("socket.io-request",{method:"commit",data:s});if(a.ok)return n.commitId=a.value.commitId,{ok:!0,value:n.commitId};let c=a.value.name;if(c==="UnexpectedError"){let l=new Error;throw l.name=a.value.name,l.message=JSON.stringify(a.value),l}if(c==="TimeoutError"||c==="SocketIOError"){await nA(3e3);continue}c==="NotFastForwardError"&&(await nA(1e3),n={...await Ar(A,e),projectId:n.projectId,userId:n.userId}),i=c;break}}return{ok:!1,value:{name:"RetryError",attempts:B,message:Retrying exceeded the maxAttempts (${B}).}}}finally{g||await yA(r)}};var tI=A=>{let e=A.match(/(.+?)(?:_(\d+))?$/),t=e?.[1]??A,o=e?.[2]?parseInt(e[2])+1:2;return${t}_${o}};var oA=(A,e,t,o)=>Gt(A,e,async(g,r,n,Q)=>{if(Q==="DuplicateTitleError"){let i=tI(e);return n.map(I=>("title"in I&&(I.title=i),I))}let B=t(g.lines,{...g,attempts:r}),C=B instanceof Promise?await B:B;return C===void 0?[]:C.length===0?[{deleted:!0}]:[...Vi(g,C,g.userId)]},o);var oI=(A,e,t)=>Gt(A,e,o=>o.persistent?[{deleted:!0}]:[],t);var gI=(A,e,t,o)=>{let{sid:g,hostName:r}=q(o??{}),n=https://${r}/api/table/${A}/${V(e)}/${encodeURIComponent(t)}.csv;return new Request(n,g?{headers:{Cookie:AA(g)}}:void 0)},rI=async A=>A.ok?{ok:!0,value:await A.text()}:A.status===404?{ok:!1,value:{name:"NotFoundError",message:"Table not found."}}:BA(A),QI=async(A,e,t,o)=>{let{fetch:g}=q(o??{}),r=gI(A,e,t,o),n=await g(r);return await rI(n)};QI.toRequest=gI;QI.fromResponse=rI;var er=async(A,e,t,o)=>{let{sid:g,hostName:r,fetch:n,csrf:Q}=q(o??{}),B=new Request(https://${r}/api/pages/${A}/replace/links,{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":Q??await ke(o),...g?{Cookie:AA(g)}:{}},body:JSON.stringify({from:e,to:t})}),C=await n(B);if(!C.ok)return BA(C);let{message:i}=await C.json();return{ok:!0,value:parseInt(i.match(/\d+/)?.[0]??"0")}};var nI=async(A,e)=>{let{sid:t,hostName:o,fetch:g,followingId:r}=q(e??{}),n=new Request(https://${o}/api/pages/${A}/search/titles${r??followingId=${r}:""},t?{headers:{Cookie:AA(t)}}:void 0),Q=await g(n);return Q.ok?{ok:!0,value:{pages:await Q.json(),followingId:Q.headers.get("X-following-id")??""}}:Q.status===422?{ok:!1,value:{name:"InvalidFollowingIdError",message:await Q.text()}}:BA(Q)};var BI=async(A,e,t)=>{let{sid:o,hostName:g,fetch:r}=q(t??{}),n=new Request(https://${g}/api/pages/${e}/search/query?q=${encodeURIComponent(A)},o?{headers:{Cookie:AA(o)}}:void 0),Q=await r(n);return Q.ok?{ok:!0,value:await Q.json()}:Q.status===422?{ok:!1,value:{name:"NoQueryError",message:(await Q.json()).message}}:BA(Q)};var CI=async(A,e)=>{let{sid:t,hostName:o,fetch:g,csrf:r}=q(e??{}),n=new Request(https://${o}/api/embed-text/url?url=${encodeURIComponent(A.toString())},{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":r??await ke(e),...t?{Cookie:AA(t)}:{}},body:JSON.stringify({timeout:3e3})}),Q=await g(n);if(!Q.ok)return Q.status===422?{ok:!1,value:{name:"InvalidURLError",message:(await Q.json()).message}}:BA(Q);let{title:B}=await Q.json();return{ok:!0,value:B}};var iI=async(A,e)=>{let{sid:t,hostName:o,fetch:g,csrf:r}=q(e??{}),n=new Request(https://${o}/api/embed-text/twitter?url=${encodeURIComponent(A.toString())},{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":r??await ke(e),...t?{Cookie:AA(t)}:{}},body:JSON.stringify({timeout:3e3})}),Q=await g(n);return Q.ok?{ok:!0,value:await Q.json()}:Q.status===422?{ok:!1,value:{name:"InvalidURLError",message:(await Q.json()).message}}:BA(Q)};var II=async A=>{let{sid:e,hostName:t,gyazoTeamsName:o}=q(A??{}),g=new Request(https://${t}/api/login/gyazo/oauth-upload/token${o??gyazoTeamsName=${o}:""},e?{headers:{Cookie:AA(e)}}:void 0),r=await fetch(g);if(!r.ok)return BA(r);let{token:n}=await r.json();return{ok:!0,value:n}};var sI=(A,e,t,o)=>{let{sid:g,hostName:r}=q(o??{}),n=https://${r}/api/code/${A}/${V(e)}/${V(t)};return new Request(n,g?{headers:{Cookie:AA(g)}}:void 0)},aI=async A=>A.ok?{ok:!0,value:await A.text()}:A.status===404&&A.headers.get("Content-Type")?.includes?.("text/plain")?{ok:!1,value:{name:"NotFoundError",message:"Code block is not found"}}:BA(A),Io=async(A,e,t,o)=>{let{fetch:g}=q(o??{}),r=sI(A,e,t,o),n=await g(r);return await aI(n)};Io.toRequest=sI;Io.fromResponse=aI;var EI=new TextEncoder().encode("0123456789abcdef");function cI(A){let e=new Uint8Array(A.length*2);for(let t=0;t<e.length;t++){let o=A[t];e[t*2]=EI[o>>4],e[t*2+1]=EI[o&15]}return e}var lI="md5: data is invalid type",kt=64,_o=class{#r;#t;#e;#A;#g;#n;#o;#C;constructor(){this.#r=1732584193,this.#t=4023233417,this.#e=2562383102,this.#A=271733878,this.#g=new Uint8Array(kt),this.#n=0,this.#o=0,this.#C=0}#i(e){let t=this.#o;t+=e,t>4294967295&&(this.#C+=1),this.#o=t>>>0}#s(e){let t=this.#r,o=this.#t,g=this.#e,r=this.#A,n=G=>e[G]|e[G+1]<<8|e[G+2]<<16|e[G+3]<<24,Q=(G,R)=>G<<R|G>>>32-R,B=n(0),C=n(4),i=n(8),I=n(12),s=n(16),a=n(20),c=n(24),l=n(28),D=n(32),m=n(36),N=n(40),u=n(44),p=n(48),h=n(52),d=n(56),k=n(60);t=o+Q(((g^r)&o^r)+t+B+3614090360,7),r=t+Q(((o^g)&t^g)+r+C+3905402710,12),g=r+Q(((t^o)&r^o)+g+i+606105819,17),o=g+Q(((r^t)&g^t)+o+I+3250441966,22),t=o+Q(((g^r)&o^r)+t+s+4118548399,7),r=t+Q(((o^g)&t^g)+r+a+1200080426,12),g=r+Q(((t^o)&r^o)+g+c+2821735955,17),o=g+Q(((r^t)&g^t)+o+l+4249261313,22),t=o+Q(((g^r)&o^r)+t+D+1770035416,7),r=t+Q(((o^g)&t^g)+r+m+2336552879,12),g=r+Q(((t^o)&r^o)+g+N+4294925233,17),o=g+Q(((r^t)&g^t)+o+u+2304563134,22),t=o+Q(((g^r)&o^r)+t+p+1804603682,7),r=t+Q(((o^g)&t^g)+r+h+4254626195,12),g=r+Q(((t^o)&r^o)+g+d+2792965006,17),o=g+Q(((r^t)&g^t)+o+k+1236535329,22),t=o+Q(((o^g)&r^g)+t+C+4129170786,5),r=t+Q(((t^o)&g^o)+r+c+3225465664,9),g=r+Q(((r^t)&o^t)+g+u+643717713,14),o=g+Q(((g^r)&t^r)+o+B+3921069994,20),t=o+Q(((o^g)&r^g)+t+a+3593408605,5),r=t+Q(((t^o)&g^o)+r+N+38016083,9),g=r+Q(((r^t)&o^t)+g+k+3634488961,14),o=g+Q(((g^r)&t^r)+o+s+3889429448,20),t=o+Q(((o^g)&r^g)+t+m+568446438,5),r=t+Q(((t^o)&g^o)+r+d+3275163606,9),g=r+Q(((r^t)&o^t)+g+I+4107603335,14),o=g+Q(((g^r)&t^r)+o+D+1163531501,20),t=o+Q(((o^g)&r^g)+t+h+2850285829,5),r=t+Q(((t^o)&g^o)+r+i+4243563512,9),g=r+Q(((r^t)&o^t)+g+l+1735328473,14),o=g+Q(((g^r)&t^r)+o+p+2368359562,20),t=o+Q((o^g^r)+t+a+4294588738,4),r=t+Q((t^o^g)+r+D+2272392833,11),g=r+Q((r^t^o)+g+u+1839030562,16),o=g+Q((g^r^t)+o+d+4259657740,23),t=o+Q((o^g^r)+t+C+2763975236,4),r=t+Q((t^o^g)+r+s+1272893353,11),g=r+Q((r^t^o)+g+l+4139469664,16),o=g+Q((g^r^t)+o+N+3200236656,23),t=o+Q((o^g^r)+t+h+681279174,4),r=t+Q((t^o^g)+r+B+3936430074,11),g=r+Q((r^t^o)+g+I+3572445317,16),o=g+Q((g^r^t)+o+c+76029189,23),t=o+Q((o^g^r)+t+m+3654602809,4),r=t+Q((t^o^g)+r+p+3873151461,11),g=r+Q((r^t^o)+g+k+530742520,16),o=g+Q((g^r^t)+o+i+3299628645,23),t=o+Q((g^(o|~r))+t+B+4096336452,6),r=t+Q((o^(t|~g))+r+l+1126891415,10),g=r+Q((t^(r|~o))+g+d+2878612391,15),o=g+Q((r^(g|~t))+o+a+4237533241,21),t=o+Q((g^(o|~r))+t+p+1700485571,6),r=t+Q((o^(t|~g))+r+I+2399980690,10),g=r+Q((t^(r|~o))+g+N+4293915773,15),o=g+Q((r^(g|~t))+o+C+2240044497,21),t=o+Q((g^(o|~r))+t+D+1873313359,6),r=t+Q((o^(t|~g))+r+k+4264355552,10),g=r+Q((t^(r|~o))+g+c+2734768916,15),o=g+Q((r^(g|~t))+o+h+1309151649,21),t=o+Q((g^(o|~r))+t+s+4149444226,6),r=t+Q((o^(t|~g))+r+u+3174756917,10),g=r+Q((t^(r|~o))+g+i+718787259,15),o=g+Q((r^(g|~t))+o+m+3951481745,21),this.#r=this.#r+t>>>0,this.#t=this.#t+o>>>0,this.#e=this.#e+g>>>0,this.#A=this.#A+r>>>0}update(e){let t;if(typeof e=="string")t=new TextEncoder().encode(e);else if(typeof e=="object")if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))t=new Uint8Array(e);else throw new TypeError(lI);else throw new TypeError(lI);let o=this.#n,g=kt-o;if(t.length<g)this.#g.set(t,o),o+=t.length;else{this.#g.set(t.slice(0,g),o),this.#s(this.#g);let r=g;for(;r+kt<=t.length;)this.#s(t.slice(r,r+kt)),r+=kt;this.#g.fill(0).set(t.slice(r),0),o=t.length-r}return this.#n=o,this.#i(t.length),this}digest(){let e=kt-this.#n;e<9&&(e+=kt);let t=new Uint8Array(e);t[0]=128;let o=this.#o<<3,g=this.#C<<3|this.#o>>>29;t[t.length-8]=o&255,t[t.length-7]=o>>>8&255,t[t.length-6]=o>>>16&255,t[t.length-5]=o>>>24&255,t[t.length-4]=g&255,t[t.length-3]=g>>>8&255,t[t.length-2]=g>>>16&255,t[t.length-1]=g>>>24&255,this.update(t.buffer);let r=new ArrayBuffer(16),n=new DataView(r);return n.setUint32(0,this.#r,!0),n.setUint32(4,this.#t,!0),n.setUint32(8,this.#e,!0),n.setUint32(12,this.#A,!0),r}toString(e="hex"){let t=this.digest();switch(e){case"hex":return new TextDecoder().decode(cI(new Uint8Array(t)));case"base64":{let o=new Uint8Array(t),g="";for(let r=0;r<o.length;++r)g+=String.fromCharCode(o[r]);return btoa(g)}default:throw new Error("md5: invalid format")}}};var DI=async(A,e,t)=>{let o=new _o().update(await A.arrayBuffer()).toString(),g=await td(A,e,o,t);if(!g.ok)return g;if("embedUrl"in g.value)return{ok:!0,value:g.value};let r=await od(g.value.signedUrl,A,t);return r.ok?gd(e,g.value.fileId,o,t):r},td=async(A,e,t,o)=>{let{sid:g,hostName:r,fetch:n,csrf:Q}=q(o??{}),B={md5:t,size:A.size,contentType:A.type,name:A.name},C=Q??await ke(),i=new Request(https://${r}/api/gcs/${e}/upload-request,{method:"POST",body:JSON.stringify(B),headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":C,...g?{Cookie:AA(g)}:{}}}),I=await n(i);return I.ok?{ok:!0,value:await I.json()}:BA(I)},od=async(A,e,t)=>{let{sid:o,fetch:g}=q(t??{}),r=await g(A,{method:"PUT",body:e,headers:{"Content-Type":e.type,...o?{Cookie:AA(o)}:{}}});if(!r.ok){if(r.headers.get("Content-Type")?.includes?.("/xml"))return{ok:!1,value:{name:"GCSError",message:await r.text()}};throw new Se(r)}return{ok:!0,value:void 0}},gd=async(A,e,t,o)=>{let{sid:g,hostName:r,fetch:n,csrf:Q}=q(o??{}),B=Q??await ke(),C=new Request(https://${r}/api/gcs/${A}/verify,{method:"POST",body:JSON.stringify({md5:t,fileId:e}),headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":B,...g?{Cookie:AA(g)}:{}}}),i=await n(C);if(!i.ok){try{if(i.status===404)return{ok:!1,value:{name:"NotFoundError",message:(await i.json()).message}}}catch{throw new Se(i)}throw new Se(i)}return{ok:!0,value:await i.json()}};var pI=async A=>{let e=A.title??".watchlistrc",t="projectsLastAccessed.json",o=await Io(A.project,e,t),g=o.ok?JSON.parse(o.value||"{}"):{},r=JSON.parse(localStorage.getItem("projectsLastAccessed")??"{}"),n=new Set([...Object.keys(g),...Object.keys(r)]),Q=Object.fromEntries([...n].map(C=>[C,Math.max(g[C]??0,r[C]??0)]).sort((C,i)=>i[1]-C[1])),B=JSON.stringify(Q);localStorage.setItem("projectsLastAccessed",B),await oA(A.project,e,()=>[e,"This page is automatically generated. DO NOT EDIT ANYTHING, WHITCH WILL BE OVERWRITTEN.","",code:${t}, ${B},""])};scrapbox.PageMenu.addMenu({title:"Gyazo",image:"https://i.gyazo.com/503a911fea542532aa5aba0a88eb7b60.png",onClick:()=>window.open("https://gyazo.com/captures")});var Qr,sA,dI,rd,Yt,wI,uI,Mn,Yn,Nn,yn,fI,$o={},MI=[],Qd=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,bn=Array.isArray;function Bt(A,e){for(var t in e)A[t]=e[t];return A}function NI(A){var e=A.parentNode;e&&e.removeChild(A)}function E(A,e,t){var o,g,r,n={};for(r in e)r=="key"?o=e[r]:r=="ref"?g=e[r]:n[r]=e[r];if(arguments.length>2&&(n.children=arguments.length>3?Qr.call(arguments,2):t),typeof A=="function"&&A.defaultProps!=null)for(r in A.defaultProps)n[r]===void 0&&(n[r]=A.defaultProps[r]);return or(A,n,o,g,null)}function or(A,e,t,o,g){var r={type:A,props:e,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:g??++dI,__i:-1,__u:0};return g==null&&sA.vnode!=null&&sA.vnode(r),r}function W(A){return A.children}function gr(A,e){this.props=A,this.context=e}function bt(A,e){if(e==null)return A.__?bt(A.__,A.__i+1):null;for(var t;e<A.__k.length;e++)if((t=A.__k[e])!=null&&t.__e!=null)return t.__e;return typeof A.type=="function"?bt(A):null}function yI(A){var e,t;if((A=A.__)!=null&&A.__c!=null){for(A.__e=A.__c.base=null,e=0;e<A.__k.length;e++)if((t=A.__k[e])!=null&&t.__e!=null){A.__e=A.__c.base=t.__e;break}return yI(A)}}function Gn(A){(!A.__d&&(A.__d=!0)&&Yt.push(A)&&!rr.__r++||wI!==sA.debounceRendering)&&((wI=sA.debounceRendering)||uI)(rr)}function rr(){var A,e,t,o,g,r,n,Q;for(Yt.sort(Mn);A=Yt.shift();)A.__d&&(e=Yt.length,o=void 0,r=(g=(t=A).__v).__e,n=[],Q=[],t.__P&&((o=Bt({},g)).__v=g.__v+1,sA.vnode&&sA.vnode(o),jn(t.__P,o,g,t.__n,t.__P.namespaceURI,32&g.__u?[r]:null,n,r??bt(g),!!(32&g.__u),Q),o.__v=g.__v,o.__.__k[o.__i]=o,YI(n,o,Q),o.__e!=r&&yI(o)),Yt.length>e&&Yt.sort(Mn));rr.__r=0}function GI(A,e,t,o,g,r,n,Q,B,C,i){var I,s,a,c,l,D=o&&o.__k||MI,m=e.length;for(t.__d=B,nd(t,e,D),B=t.__d,I=0;I<m;I++)(a=t.__k[I])!=null&&typeof a!="boolean"&&typeof a!="function"&&(s=a.__i===-1?$o:D[a.__i]||$o,a.__i=I,jn(A,a,s,g,r,n,Q,B,C,i),c=a.__e,a.ref&&s.ref!=a.ref&&(s.ref&&On(s.ref,null,a),i.push(a.ref,a.__c||c,a)),l==null&&c!=null&&(l=c),65536&a.__u||s.__k===a.__k?B=kI(a,B,A):typeof a.type=="function"&&a.__d!==void 0?B=a.__d:c&&(B=c.nextSibling),a.__d=void 0,a.__u&=-196609);t.__d=B,t.__e=l}function nd(A,e,t){var o,g,r,n,Q,B=e.length,C=t.length,i=C,I=0;for(A.__k=[],o=0;o<B;o++)n=o+I,(g=A.__k[o]=(g=e[o])==null||typeof g=="boolean"||typeof g=="function"?null:typeof g=="string"||typeof g=="number"||typeof g=="bigint"||g.constructor==String?or(null,g,null,null,null):bn(g)?or(W,{children:g},null,null,null):g.constructor===void 0&&g.__b>0?or(g.type,g.props,g.key,g.ref?g.ref:null,g.__v):g)!=null?(g.__=A,g.__b=A.__b+1,Q=Bd(g,t,n,i),g.__i=Q,r=null,Q!==-1&&(i--,(r=t[Q])&&(r.__u|=131072)),r==null||r.__v===null?(Q==-1&&I--,typeof g.type!="function"&&(g.__u|=65536)):Q!==n&&(Q==n-1?I=Q-n:Q==n+1?I++:Q>n?i>B-n?I+=Q-n:I--:Q<n&&I++,Q!==o+I&&(g.__u|=65536))):(r=t[n])&&r.key==null&&r.__e&&!(131072&r.__u)&&(r.__e==A.__d&&(A.__d=bt(r)),kn(r,r,!1),t[n]=null,i--);if(i)for(o=0;o<C;o++)(r=t[o])!=null&&!(131072&r.__u)&&(r.__e==A.__d&&(A.__d=bt(r)),kn(r,r))}function kI(A,e,t){var o,g;if(typeof A.type=="function"){for(o=A.__k,g=0;o&&g<o.length;g++)o[g]&&(o[g].__=A,e=kI(o[g],e,t));return e}A.__e!=e&&(e&&A.type&&!t.contains(e)&&(e=bt(A)),t.insertBefore(A.__e,e||null),e=A.__e);do e=e&&e.nextSibling;while(e!=null&&e.nodeType===8);return e}function Bd(A,e,t,o){var g=A.key,r=A.type,n=t-1,Q=t+1,B=e[t];if(B===null||B&&g==B.key&&r===B.type&&!(131072&B.__u))return t;if(o>(B!=null&&!(131072&B.__u)?1:0))for(;n>=0||Q<e.length;){if(n>=0){if((B=e[n])&&!(131072&B.__u)&&g==B.key&&r===B.type)return n;n--}if(Q<e.length){if((B=e[Q])&&!(131072&B.__u)&&g==B.key&&r===B.type)return Q;Q++}}return-1}function mI(A,e,t){e[0]==="-"?A.setProperty(e,t??""):A[e]=t==null?"":typeof t!="number"||Qd.test(e)?t:t+"px"}function tr(A,e,t,o,g){var r;A:if(e==="style")if(typeof t=="string")A.style.cssText=t;else{if(typeof o=="string"&&(A.style.cssText=o=""),o)for(e in o)t&&e in t||mI(A.style,e,"");if(t)for(e in t)o&&t[e]===o[e]||mI(A.style,e,t[e])}else if(e[0]==="o"&&e[1]==="n")r=e!==(e=e.replace(/(PointerCapture)$|Capture$/i,"$1")),e=e.toLowerCase()in A||e==="onFocusOut"||e==="onFocusIn"?e.toLowerCase().slice(2):e.slice(2),A.l||(A.l={}),A.l[e+r]=t,t?o?t.u=o.u:(t.u=Yn,A.addEventListener(e,r?yn:Nn,r)):A.removeEventListener(e,r?yn:Nn,r);else{if(g=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in A)try{A[e]=t??"";break A}catch{}typeof t=="function"||(t==null||t===!1&&e[4]!=="-"?A.removeAttribute(e):A.setAttribute(e,e=="popover"&&t==1?"":t))}}function hI(A){return function(e){if(this.l){var t=this.l[e.type+A];if(e.t==null)e.t=Yn++;else if(e.t<t.u)return;return t(sA.event?sA.event(e):e)}}}function jn(A,e,t,o,g,r,n,Q,B,C){var i,I,s,a,c,l,D,m,N,u,p,h,d,k,G,R,y=e.type;if(e.constructor!==void 0)return null;128&t.__u&&(B=!!(32&t.__u),r=[Q=e.__e=t.__e]),(i=sA.__b)&&i(e);A:if(typeof y=="function")try{if(m=e.props,N="prototype"in y&&y.prototype.render,u=(i=y.contextType)&&o[i.__c],p=i?u?u.props.value:i.__:o,t.__c?D=(I=e.__c=t.__c).__=I.__E:(N?e.__c=I=new y(m,p):(e.__c=I=new gr(m,p),I.constructor=y,I.render=id),u&&u.sub(I),I.props=m,I.state||(I.state={}),I.context=p,I.__n=o,s=I.__d=!0,I.__h=[],I._sb=[]),N&&I.__s==null&&(I.__s=I.state),N&&y.getDerivedStateFromProps!=null&&(I.__s==I.state&&(I.__s=Bt({},I.__s)),Bt(I.__s,y.getDerivedStateFromProps(m,I.__s))),a=I.props,c=I.state,I.__v=e,s)N&&y.getDerivedStateFromProps==null&&I.componentWillMount!=null&&I.componentWillMount(),N&&I.componentDidMount!=null&&I.__h.push(I.componentDidMount);else{if(N&&y.getDerivedStateFromProps==null&&m!==a&&I.componentWillReceiveProps!=null&&I.componentWillReceiveProps(m,p),!I.__e&&(I.shouldComponentUpdate!=null&&I.shouldComponentUpdate(m,I.__s,p)===!1||e.__v===t.__v)){for(e.__v!==t.__v&&(I.props=m,I.state=I.__s,I.__d=!1),e.__e=t.__e,e.__k=t.__k,e.__k.forEach(function(f){f&&(f.__=e)}),h=0;h<I._sb.length;h++)I.__h.push(I._sb[h]);I._sb=[],I.__h.length&&n.push(I);break A}I.componentWillUpdate!=null&&I.componentWillUpdate(m,I.__s,p),N&&I.componentDidUpdate!=null&&I.__h.push(function(){I.componentDidUpdate(a,c,l)})}if(I.context=p,I.props=m,I.__P=A,I.__e=!1,d=sA.__r,k=0,N){for(I.state=I.__s,I.__d=!1,d&&d(e),i=I.render(I.props,I.state,I.context),G=0;G<I._sb.length;G++)I.__h.push(I._sb[G]);I._sb=[]}else do I.__d=!1,d&&d(e),i=I.render(I.props,I.state,I.context),I.state=I.__s;while(I.__d&&++k<25);I.state=I.__s,I.getChildContext!=null&&(o=Bt(Bt({},o),I.getChildContext())),N&&!s&&I.getSnapshotBeforeUpdate!=null&&(l=I.getSnapshotBeforeUpdate(a,c)),GI(A,bn(R=i!=null&&i.type===W&&i.key==null?i.props.children:i)?R:[R],e,t,o,g,r,n,Q,B,C),I.base=e.__e,e.__u&=-161,I.__h.length&&n.push(I),D&&(I.__E=I.__=null)}catch(f){if(e.__v=null,B||r!=null){for(e.__u|=B?160:32;Q&&Q.nodeType===8&&Q.nextSibling;)Q=Q.nextSibling;r[r.indexOf(Q)]=null,e.__e=Q}else e.__e=t.__e,e.__k=t.__k;sA.__e(f,e,t)}else r==null&&e.__v===t.__v?(e.__k=t.__k,e.__e=t.__e):e.__e=Cd(t.__e,e,t,o,g,r,n,B,C);(i=sA.diffed)&&i(e)}function YI(A,e,t){e.__d=void 0;for(var o=0;o<t.length;o++)On(t[o],t[++o],t[++o]);sA.__c&&sA.__c(e,A),A.some(function(g){try{A=g.__h,g.__h=[],A.some(function(r){r.call(g)})}catch(r){sA.__e(r,g.__v)}})}function Cd(A,e,t,o,g,r,n,Q,B){var C,i,I,s,a,c,l,D=t.props,m=e.props,N=e.type;if(N==="svg"?g="http://www.w3.org/2000/svg":N==="math"?g="http://www.w3.org/1998/Math/MathML":g||(g="http://www.w3.org/1999/xhtml"),r!=null){for(C=0;C<r.length;C++)if((a=r[C])&&"setAttribute"in a==!!N&&(N?a.localName===N:a.nodeType===3)){A=a,r[C]=null;break}}if(A==null){if(N===null)return document.createTextNode(m);A=document.createElementNS(g,N,m.is&&m),r=null,Q=!1}if(N===null)D===m||Q&&A.data===m||(A.data=m);else{if(r=r&&Qr.call(A.childNodes),D=t.props||$o,!Q&&r!=null)for(D={},C=0;C<A.attributes.length;C++)D[(a=A.attributes[C]).name]=a.value;for(C in D)if(a=D[C],C!="children"){if(C=="dangerouslySetInnerHTML")I=a;else if(C!=="key"&&!(C in m)){if(C=="value"&&"defaultValue"in m||C=="checked"&&"defaultChecked"in m)continue;tr(A,C,null,a,g)}}for(C in m)a=m[C],C=="children"?s=a:C=="dangerouslySetInnerHTML"?i=a:C=="value"?c=a:C=="checked"?l=a:C==="key"||Q&&typeof a!="function"||D[C]===a||tr(A,C,a,D[C],g);if(i)Q||I&&(i.__html===I.__html||i.__html===A.innerHTML)||(A.innerHTML=i.__html),e.__k=[];else if(I&&(A.innerHTML=""),GI(A,bn(s)?s:[s],e,t,o,N==="foreignObject"?"http://www.w3.org/1999/xhtml":g,r,n,r?r[0]:t.__k&&bt(t,0),Q,B),r!=null)for(C=r.length;C--;)r[C]!=null&&NI(r[C]);Q||(C="value",c!==void 0&&(c!==A[C]||N==="progress"&&!c||N==="option"&&c!==D[C])&&tr(A,C,c,D[C],g),C="checked",l!==void 0&&l!==A[C]&&tr(A,C,l,D[C],g))}return A}function On(A,e,t){try{if(typeof A=="function"){var o=typeof A.__u=="function";o&&A.__u(),o&&e==null||(A.__u=A(e))}else A.current=e}catch(g){sA.__e(g,t)}}function kn(A,e,t){var o,g;if(sA.unmount&&sA.unmount(A),(o=A.ref)&&(o.current&&o.current!==A.__e||On(o,null,e)),(o=A.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(r){sA.__e(r,e)}o.base=o.__P=null}if(o=A.__k)for(g=0;g<o.length;g++)o[g]&&kn(o[g],e,t||typeof A.type!="function");t||A.__e==null||NI(A.__e),A.__c=A.__=A.__e=A.__d=void 0}function id(A,e,t){return this.constructor(A,t)}function GA(A,e,t){var o,g,r,n;sA.__&&sA.__(A,e),g=(o=typeof t=="function")?null:t&&t.__k||e.__k,r=[],n=[],jn(e,A=(!o&&t||e).__k=E(W,null,[A]),g||$o,$o,e.namespaceURI,!o&&t?[t]:g?null:e.firstChild?Qr.call(e.childNodes):null,r,!o&&t?t:g?g.__e:e.firstChild,o,n),YI(r,A,n)}function Fn(A,e){var t={__c:e="__cC"+fI++,__:A,Consumer:function(o,g){return o.children(g)},Provider:function(o){var g,r;return this.getChildContext||(g=[],(r={})[e]=this,this.getChildContext=function(){return r},this.componentWillUnmount=function(){g=null},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&g.some(function(Q){Q.__e=!0,Gn(Q)})},this.sub=function(n){g.push(n);var Q=n.componentWillUnmount;n.componentWillUnmount=function(){g&&g.splice(g.indexOf(n),1),Q&&Q.call(n)}}),o.children}};return t.Provider.__=t.Consumer.contextType=t}Qr=MI.slice,sA={__e:function(A,e,t,o){for(var g,r,n;e=e.__;)if((g=e.__c)&&!g.__)try{if((r=g.constructor)&&r.getDerivedStateFromError!=null&&(g.setState(r.getDerivedStateFromError(A)),n=g.__d),g.componentDidCatch!=null&&(g.componentDidCatch(A,o||{}),n=g.__d),n)return g.__E=g}catch(Q){A=Q}throw A}},dI=0,rd=function(A){return A!=null&&A.constructor==null},gr.prototype.setState=function(A,e){var t;t=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=Bt({},this.state),typeof A=="function"&&(A=A(Bt({},t),this.props)),A&&Bt(t,A),A!=null&&this.__v&&(e&&this._sb.push(e),Gn(this))},gr.prototype.forceUpdate=function(A){this.__v&&(this.__e=!0,A&&this.__h.push(A),Gn(this))},gr.prototype.render=W,Yt=[],uI=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Mn=function(A,e){return A.__v.__b-e.__v.__b},rr.__r=0,Yn=0,Nn=hI(!1),yn=hI(!0),fI=0;var jt,aA,xn,bI,Ag=0,UI=[],wA=sA,jI=wA.__b,OI=wA.__r,FI=wA.diffed,xI=wA.__c,JI=wA.unmount,RI=wA.__;function eg(A,e){wA.__h&&wA.__h(aA,A,Ag||e),Ag=0;var t=aA.__H||(aA.__H={__:[],__h:[]});return A>=t.__.length&&t.__.push({}),t.__[A]}function L(A){return Ag=1,Ot(TI,A)}function Ot(A,e,t){var o=eg(jt++,2);if(o.t=A,!o.__c&&(o.__=[t?t(e):TI(void 0,e),function(Q){var B=o.__N?o.__N[0]:o.__[0],C=o.t(B,Q);B!==C&&(o.__N=[C,o.__[1]],o.__c.setState({}))}],o.__c=aA,!aA.u)){var g=function(Q,B,C){if(!o.__c.__H)return!0;var i=o.__c.__H.__.filter(function(s){return!!s.__c});if(i.every(function(s){return!s.__N}))return!r||r.call(this,Q,B,C);var I=!1;return i.forEach(function(s){if(s.__N){var a=s.__[0];s.__=s.__N,s.__N=void 0,a!==s.__[0]&&(I=!0)}}),!(!I&&o.__c.props===Q)&&(!r||r.call(this,Q,B,C))};aA.u=!0;var r=aA.shouldComponentUpdate,n=aA.componentWillUpdate;aA.componentWillUpdate=function(Q,B,C){if(this.__e){var i=r;r=void 0,g(Q,B,C),r=i}n&&n.call(this,Q,B,C)},aA.shouldComponentUpdate=g}return o.__N||o.__}function X(A,e){var t=eg(jt++,3);!wA.__s&&Rn(t.__H,e)&&(t.__=A,t.i=e,aA.__H.__h.push(t))}function LI(A,e){var t=eg(jt++,4);!wA.__s&&Rn(t.__H,e)&&(t.__=A,t.i=e,aA.__h.push(t))}function kA(A){return Ag=5,J(function(){return{current:A}},[])}function J(A,e){var t=eg(jt++,7);return Rn(t.__H,e)&&(t.__=A(),t.__H=e,t.__h=A),t.__}function b(A,e){return Ag=8,J(function(){return A},e)}function Ct(A){var e=aA.context[A.__c],t=eg(jt++,9);return t.c=A,e?(t.__==null&&(t.__=!0,e.sub(aA)),e.props.value):A.__}function Id(){for(var A;A=UI.shift();)if(A.__P&&A.__H)try{A.__H.__h.forEach(nr),A.__H.__h.forEach(Jn),A.__H.__h=[]}catch(e){A.__H.__h=[],wA.__e(e,A.__v)}}wA.__b=function(A){aA=null,jI&&jI(A)},wA.__=function(A,e){A&&e.__k&&e.__k.__m&&(A.__m=e.__k.__m),RI&&RI(A,e)},wA.__r=function(A){OI&&OI(A),jt=0;var e=(aA=A.__c).__H;e&&(xn===aA?(e.__h=[],aA.__h=[],e.__.forEach(function(t){t.__N&&(t.__=t.__N),t.i=t.__N=void 0})):(e.__h.forEach(nr),e.__h.forEach(Jn),e.__h=[],jt=0)),xn=aA},wA.diffed=function(A){FI&&FI(A);var e=A.__c;e&&e.__H&&(e.__H.__h.length&&(UI.push(e)!==1&&bI===wA.requestAnimationFrame||((bI=wA.requestAnimationFrame)||sd)(Id)),e.__H.__.forEach(function(t){t.i&&(t.__H=t.i),t.i=void 0})),xn=aA=null},wA.__c=function(A,e){e.some(function(t){try{t.__h.forEach(nr),t.__h=t.__h.filter(function(o){return!o.__||Jn(o)})}catch(o){e.some(function(g){g.__h&&(g.__h=[])}),e=[],wA.__e(o,t.__v)}}),xI&&xI(A,e)},wA.unmount=function(A){JI&&JI(A);var e,t=A.__c;t&&t.__H&&(t.__H.__.forEach(function(o){try{nr(o)}catch(g){e=g}}),t.__H=void 0,e&&wA.__e(e,t.__v))};var ZI=typeof requestAnimationFrame=="function";function sd(A){var e,t=function(){clearTimeout(o),ZI&&cancelAnimationFrame(e),setTimeout(A)},o=setTimeout(t,100);ZI&&(e=requestAnimationFrame(t))}function nr(A){var e=aA,t=A.__c;typeof t=="function"&&(A.__c=void 0,t()),aA=e}function Jn(A){var e=aA;A.__c=A.__(),aA=e}function Rn(A,e){return!A||A.length!==e.length||e.some(function(t,o){return t!==A[o]})}function TI(A,e){return typeof e=="function"?e(A):e}var SI=(A,e)=>{if(!Array.isArray(A))throw new TypeError("${e}" must be an array but actual is "${A}")};var Br=!1,vI=null;scrapbox.addListener("lines:changed",()=>Br=!1);scrapbox.addListener("layout:changed",()=>Br=!1);var HI=()=>(Br||(vI=scrapbox.Page.lines,Br=!0),vI);var WI=(A,e)=>{if(!(A instanceof HTMLDivElement))throw new TypeError("${e}" must be HTMLDivElememt but actual is "${A}")};var XI=(A,e)=>{if(!(A instanceof HTMLTextAreaElement))throw new TypeError("${e}" must be HTMLTextAreaElement but actual is "${A}")};var zI=()=>Cr(document.getElementById("editor"),"div#editor"),tg=()=>Cr(document.getElementsByClassName("lines").item(0),"div.lines");var YA=()=>{let A=document.getElementById("text-input");if(A)return XI(A,"textarea#text-input"),A};var KI=()=>Cr(document.getElementsByClassName("popup-menu")?.[0],"div.popup-menu");var PI=()=>Cr(document.getElementsByClassName("status-bar")?.[0],"div.status-bar"),Cr=(A,e)=>{if(A)return WI(A,e),A};var KA=()=>{let A=tg();if(!A)throw Error("div.lines is not found.");let e=Object.keys(A).find(t=>t.startsWith("__reactFiber"));if(!e)throw Error('div.lines must has the property whose name starts with "__reactFiber"');return A[e].return.stateNode.props.lines};var PA=A=>A.match(/^(\s*)/)?.[1]?.length??0,ve=(A,e)=>{let t=PA(VI(A,e)),o=0;for(;A+o+1<e.length&&PA(VI(A+o+1,e))>t;)o++;return o},VI=(A,e)=>{let t=e[A];return Bo(t)?t:t.text};var Un=A=>{if(ae(A))return;if(JA(A))return ir(A)?.id;if(Bo(A))return A.startsWith("L")?A.slice(1):A;if(A.classList.contains("line"))return A.id.slice(1);let e=A.closest(".line");if(e)return e.id.slice(1)},qI=A=>{if(ae(A))return;if(JA(A))return A;let e=Un(A);return e?KA().findIndex(t=>t.id===e):-1};var ir=A=>{if(ae(A))return;if(JA(A))return KA()[A];let e=Un(A);return e?KA().find(t=>t.id===e):void 0},Ft=A=>{if(_I(A))return A;let e=Un(A);if(ae(e))return e;let t=document.getElementById(L${e});if(!ae(t))return t},_I=A=>A instanceof HTMLDivElement&&A.classList.contains("line");var Ee=()=>{let A=HI();return SI(A,"scrapbox.Page.lines"),A},dA=A=>{if(ae(A))return;if(JA(A)||Bo(A))return ir(A)?.text;if(!(A instanceof HTMLElement))return;if(_I(A))return ir(A)?.text;if(A.classList.contains("char-index"))return A.textContent??void 0;if(A.classList.contains("line")||A.getElementsByClassName("lines")?.[0])return KA().map(({text:o})=>o).join( );let e=[],t=ir(A);if(!ae(t)){for(let o of Ed(A))e.push(cd(o));return t.text.slice(Math.min(...e),Math.max(...e)+1)}};var $I=()=>{let A=tg()?.firstElementChild;if(!ae(A))return A},As=()=>{let A=tg()?.lastElementChild;if(!ae(A))return A};var Ln=A=>{let e=qI(A);if(!ae(e))return ve(e,Ee())};function*Ed(A){let e=A.getElementsByClassName("char-index");for(let t=0;t<e.length;t++)yield e[0]}var Tn=A=>A instanceof HTMLSpanElement&&A.classList.contains("char-index"),cd=A=>{if(!Tn(A))throw Error("A char DOM is required.");let e=A.className.match(/c-(\d+)/)?.[1];if(ae(e))throw Error('.char-index must have ".c-{\\d}"');return parseInt(e)},es=A=>{let e=A?.getElementsByClassName?.("c-0")?.[0];return Tn(e)?e:void 0};var og=(A,e)=>{let t=Ft(A)?.getElementsByClassName?.(c-${e})?.[0];return Tn(t)?t:void 0};var uA=(A,e)=>{let{noModifiedKeys:t=!1,...o}=e??{},g={bubbles:!0,cancelable:!0,keyCode:ld[A],...t?{}:{...o}},r=YA();if(!r)throw Error("#text-input must exist.");r.dispatchEvent(new KeyboardEvent("keydown",g)),r.dispatchEvent(new KeyboardEvent("keyup",g))},ld={Backspace:8,Tab:9,Enter:13,Delete:46,Escape:27," ":32,PageUp:33,PageDown:34,End:35,Home:36,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,a:65,A:65,b:66,B:66,c:67,C:67,d:68,D:68,e:69,E:69,f:70,F:70,g:71,G:71,h:72,H:72,i:73,I:73,j:74,J:74,k:75,K:75,l:76,L:76,m:77,M:77,n:78,N:78,o:79,O:79,p:80,P:80,q:81,Q:81,r:82,R:82,s:83,S:83,t:84,T:84,u:85,U:85,v:86,V:86,w:87,W:87,x:88,X:88,y:89,Y:89,z:90,Z:90,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,F1:113,F2:114,F3:115,F4:116,F5:117,F6:118,F7:119,F8:120,F9:121,F10:122,F11:123,F12:124,":":186,"*":186,";":187,"+":187,"-":189,"=":189,".":190,">":190,"/":191,"?":191,"@":192,"":192,"":219,"{":219,"\\":220,"|":220,"":221,"}":221,"^":222,"~":222,_:226};var Sn=async(A,e)=>{let t={button:e.button??0,clientX:e.X,clientY:e.Y,bubbles:!0,cancelable:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,view:window};A.dispatchEvent(new MouseEvent("mousedown",t)),A.dispatchEvent(new MouseEvent("mouseup",t)),A.dispatchEvent(new MouseEvent("click",t)),await nA(10)};var EA=()=>{let A=YA();if(!A)throw Error("#text-input is not found.");let e=Object.keys(A).find(t=>t.startsWith("__reactFiber"));if(!e)throw Error('div.cursor must has the property whose name starts with "__reactFiber"');return Ae.return.return.stateNode.props};var vn=A=>{let{top:e,bottom:t}=A.getBoundingClientRect();return e>=0&&t<=globalThis.innerHeight};function*re(A,e){for(let t=A;t<e;t++)yield t}var Hn=()=>{uA("Home"),uA("Home")};var ts=async()=>{let A=$I();if(!A)throw Error(".line:first-of-type can't be found.");vn(A)||A.scrollIntoView({block:"center"});let e=es(A);if(!e)throw Error(".line:first-of-type .c-0 can't be found.");let{left:t,top:o}=e.getBoundingClientRect();await Sn(A,{X:t,Y:o})},os=async()=>{await gs(As())},Wn=async A=>{await gs(Ft(A))},gs=async A=>{if(!A)throw Error("The target line DOM is failed to find.");vn(A)||A.scrollIntoView({block:"center"});let{right:e,top:t,height:o}=A.getElementsByClassName("text")0.getBoundingClientRect();await Sn(A,{X:e+1,Y:t+o/2})};var rs=(A=1)=>{for(let e of re(0,A))uA("z",{ctrlKey:!0})},Qs=(A=1)=>{for(let e of re(0,A))uA("z",{shiftKey:!0,ctrlKey:!0})};var Xn=async(A,e)=>{await Wn(A),Hn(),uA("Enter"),uA("ArrowUp"),await bA(e)},ZA=async(A,e,t)=>{await Wn(A),Hn();for(let o of re(A,e))uA("ArrowDown",{shiftKey:!0});uA("End",{shiftKey:!0}),await bA(t)};var Ir=(A=1)=>{for(let e of re(0,A))uA("ArrowRight",{ctrlKey:!0})},sr=(A=1)=>{for(let e of re(0,A))uA("ArrowLeft",{ctrlKey:!0})};var ar=(A=1)=>{for(let e of re(0,A))uA("ArrowUp",{ctrlKey:!0})},Er=(A=1)=>{for(let e of re(0,A))uA("ArrowDown",{ctrlKey:!0})},cr=(A=1)=>{for(let e of re(0,A))uA("ArrowRight",{altKey:!0})},lr=(A=1)=>{for(let e of re(0,A))uA("ArrowLeft",{altKey:!0})};var Dr=(A=1)=>{for(let e of re(0,A))uA("ArrowUp",{altKey:!0})},pr=(A=1)=>{for(let e of re(0,A))uA("ArrowDown",{altKey:!0})},bA=async A=>{let e=YA();if(!e)throw Error("#text-input is not ditected.");e.focus(),e.value=A;let t=new InputEvent("input",{bubbles:!0});e.dispatchEvent(t),await nA(1)};var CA=()=>{let A=PI();if(!A)throw new Error("div.status-bar can't be found");let e=document.createElement("div");return A.append(e),{render:(...t)=>{e.textContent="";let o=ns(...t);o&&e.append(o)},dispose:()=>e.remove()}},ns=(...A)=>{let e=A.flatMap(o=>{switch(o.type){case"spinner":returnpd();case"check-circle":returnwd();case"exclamation-triangle":returnmd();case"text":returnwr(o.text);case"group":{let g=ns(...o.items);return g?g:[]}}});if(e.length===0)return;if(e.length===1)return e0;let t=document.createElement("span");return t.classList.add("item-group"),t.append(...e),t},wr=A=>{let e=document.createElement("span");return e.classList.add("item"),e.append(A),e},pd=()=>{let A=document.createElement("i");return A.classList.add("fa","fa-spinner"),wr(A)},wd=()=>{let A=document.createElement("i");return A.classList.add("kamon","kamon-check-circle"),wr(A)},md=()=>{let A=document.createElement("i");return A.classList.add("fas","fa-exclamation-triangle"),wr(A)};var so=A=>{let e=JSON.parse(localStorage.getItem("pageTransitionContext")??""),t=A.type==="page"?A.from.project===A.to.project?A.from.title===A.to.title?{titleHint:A.to.title}:{linkFrom:A.from.title}:{linkFrom:/${A.from.project}/${A.from.title}}:{searchQuery:A.query};e[page_${z(A.to.title)}]=t,localStorage.setItem("pageTransitionContext",JSON.stringify(e))};var hd=(A,e,t)=>{let o=new URL(/${A}/${V(e)},location.href);if(t?.body&&(o.search=?body=${encodeURIComponent(t.body)}),t?.id&&(o.hash=#${t.id}),t?.context&&so({...t?.context,to:{project:A,title:e}}),t?.newTab!==!1&&(t?.newTab===!0||A!==scrapbox.Project.name)){globalThis.open(o);return}if(t?.reload!==!1&&(t?.reload===!0||A!==scrapbox.Project.name)){globalThis.open(o,"_self");return}let g=document.createElement("a");g.href=o.toString(),document.body.append(g),g.click(),g.remove()},ao=(A,e,t)=>hd(A,e,{newTab:!1,reload:!1,body:t});var Eo=async(A,e)=>{let t=await globalThis.caches.keys();for(let o of t.sort().reverse()){let r=await(await caches.open(o)).match(A,e);if(r)return r}},mr=async(A,e)=>{let t=e.clone();return await(await caches.open(dd(new Date))).put(A,t)},dd=A=>api-${A.getFullYear()}-${${A.getMonth()+1}.padStart(2,"0")}-${${A.getDate()}.padStart(2,"0")};var Qe=()=>{let A=YA();if(!A)throw Error("#text-input is not found.");let e=Object.keys(A).find(r=>r.startsWith("__reactFiber"));if(!e)throw Error('#text-input must has the property whose name starts with "__reactFiber"');let t=Ae.return.return.stateNode._stores,o=t.find(r=>r.constructor.name==="Cursor");if(!o)throw Error('#text-input must has a "Cursor" store.');let g=t.find(r=>r.constructor.name==="Selection");if(!g)throw Error('#text-input must has a "Selection" store.');return{cursor:o,selection:g}};var it=()=>Qe().cursor;var hr=()=>Qe().selection;var gg=A=>A===void 0?0:typeof A=="boolean"?Number(A):(A.capture?1:0)|(A.once?2:0)|(A.passive?4:0),Bs=A=>{if(A===0)return;let e={};return A&1&&(e.capture=!0),A&2&&(e.once=!0),A&4&&(e.passive=!0),e};var dr=new Map,zn=new Map,Cs=(A,e,t)=>{let o=dr.get(A)??new Map,g=o.get(e)??new Set;if(g.has(gg(t)))return;if(g.add(gg(t)),o.set(e,g),dr.set(A,o),typeof t=="object"&&t?.once){let n=zn.get(e)??new Map,Q=gg(t),B=function(i){return Kn(A,e,t),n.delete(Q),e.call(this,i)};n.set(Q,B),zn.set(e,n);let C=YA();if(!C)return;C.addEventListener(A,B,t)}let r=YA();r&&r.addEventListener(A,e,t)};scrapbox.on("layout:changed",()=>{let A=YA();if(A)for(lete,tof dr)for(leto,gof t)for(let r of g)A.addEventListener(e,o,Bs(r))});var Kn=(A,e,t)=>{let o=dr.get(A);if(!o)return;let g=o.get(e);if(!g)return;let r=gg(t);if(g.delete(r),typeof t=="object"&&t?.once){let Q=zn.get(e);if(!Q)return;let B=Q.get(r);if(!B)return;let C=YA();if(!C)return;C.removeEventListener(A,B,t),Q.delete(r);return}let n=YA();n&&n.removeEventListener(A,e,t)};var is=A=>A.replace(/[.*+?^=!:${}()|\\/\\]/g,"\\$&");var Is=({project:A,title:e,words:t,lines:o,query:g,close:r})=>{let n=b(B=>{so({type:"search",query:g,to:{project:A,title:e}}),!(B.metaKey||B.ctrlKey||B.altKey||B.shiftKey)&&r()},A,e,g,r),Q=J(()=>{let B=new RegExp((${t.map(C=>is(C)).join("|")}),"i");return o.flatMap(C=>{let i=C.split(B);return E("span",null,i.map((I,s)=>s%2===0?I:E("strong",null,I)))})},o,t);return E("a",{href:/${A}/${V(e)},target:${A===scrapbox.Project.name?"":"_blank"},rel:${A===scrapbox.Project.name?"route":"noopener noreferrer"},onClick:n},e,E("div",{className:"description"},Q))};var ss=A=>{lete,t=L(A),o=b(()=>t(!0),[]),g=b(()=>t(!1),[]),r=b(()=>t(n=>!n),[]);returne,{open:o,close:g,toggle:r}};var as=(A,e)=>{lett,o=L(),g,r=L(!1),n=kA(Promise.resolve());return X(()=>{if(e===""){o(void 0);return}let Q=!1;return n.current=(async()=>{if(await n.current,!Q){r(!0);try{let B=await BI(e,A);if(Q)return;o(B.ok?B.value:void 0)}finally{r(!1)}}})(),()=>Q=!0},e,A),{loading:g,result:t}};var Es=()=>E("style",null,`.modal { position:fixed;
inset:0;
z-index:1050;
background-color:#000c;
display: flex;
flex-direction: column;
align-items: center;
row-gap: 10px;
padding: 10px;
}
.closed {
display: none;
}
.modal > * {
border-radius: 4px;
padding: 5px;
width: calc(var(--item-width, 100%) - 10px);
}
@media (min-width: 768px) {
.modal {
padding: 30px;
}
}
.controller {
display: flex;
gap: 0.2em;
flex-direction: column;
}
input {
border-radius: 5px;
padding: 0 10px;
height: 32px;
border: transparent;
box-shadow: none;
color: var(--search-form-text-color, rgba(255, 255, 255, 0.35));
background-color: var(--search-form-bg, rgba(255, 255, 255, 0.15))
}
.result {
flex-direction: column;
width: 100%;
padding: 5px 0;
margin: 2px 0 0;
list-style: none;
font-size: 14px;
font-weight: normal;
line-height: 28px;
text-align: left;
border: 1px solid rgba(0,0,0,0.15);
border-radius: 4px;
background-clip: padding-box;
white-space: nowrap;
overflow-x: hidden;
overflow-y: auto;
}
a {
display: block;
padding: 3px 20px;
clear: both;
align-items: center;
user-select: none;
text-decoration: none;
overflow: hidden;
text-overflow: ellipsis;
color: inherit;
}
.description {
margin-top: 0.5em;
color: var(--incremental-fulltext-search-description-text-color, #c4c4c4); font-size: 12px;
line-height: 14px;
max-height: 28px;
overflow: hidden;
text-overflow: ellipsis;
}
.description strong {
}
.spinner::before {
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
content: "\f110";
font-family: "Font Awesome 5 Free";
font-weight: 900;
margin: 0;
padding: 0;
box-sizing: border-box;
animation: fa-spin 2s linear infinite;
});var ud=()=>E("i",{className:"spinner"}),cs=({exportOps:A})=>{let[e,t]=L(""),o=scrapbox.Project.name,{loading:g,result:r}=as(o,e),n=b(a=>{t(a.currentTarget.value)},[]),[Q,{open:B,close:C,toggle:i}]=ss(!1),I=kA({open:B,close:C,toggle:i});X(()=>{Object.assign(I.current,{open:B,close:C,toggle:i})},[]),X(()=>A(I.current),[A]);let s=b(a=>{a.target instanceof HTMLElement&&a.target.id==="background"&&C()},[]);return E(W,null,E(Es,null),E("div",{id:"background",className:modal${Q?"":" closed"},onClick:s},E("div",{className:"controller"},E("input",{type:"text",value:e,onInput:n}),E("div",{className:"info"},g&&E(ud,null),${r?.pages?.length??0} pages)),r?.pages&&r.pages.length>0&&E("ul",{className:"result"},r.pages.map(a=>E("li",{key:a.title},E(Is,{...a,project:o,query:e,close:C}))))))};var ls=()=>{let A=document.createElement("div"),e=A.attachShadow({mode:"open"});return document.body.append(A),new Promise(t=>{GA(E(cs,{exportOps:t}),e)})};var ur=(A,e)=>Object.hasOwn(A,e),Ds={left:"ArrowLeft",right:"ArrowRight",up:"ArrowUp",down:"ArrowDown",bs:"Backspace",menu:"ContextMenu",apps:"ContextMenu",del:"Delete",return:"Enter",cr:"Enter",esc:"Escape",pgup:"PageUp",pgdn:"PageDown",lt:"<",less:"<",lesser:"<",gt:">",greater:">"},hs=A=>{let e=A.toLowerCase();return ur(Ds,e)?Ds[e]:A},ps={Backquote:["","~"],Digit1:"1","!",Digit2:"2","@",Digit3:"3","#",Digit4:"4","$",Digit5:"5","%",Digit6:"6","^",Digit7:"7","&",Digit8:"8","*",Digit9:"9","(",Digit0:"0",")",Minus:"-","_",Equal:"=","+",Backslash:"\\","|",BracketLeft:["","{",BracketRight:"","}"],Semicolon:";",":",Quote:"'",'"',Comma:",","<",Period:".",">",Slash:"/","?"},fd=(A,e)=>{if(A.startsWith("Key")){let t=A.slice(3);return e||(t=t.toLowerCase()),t}return ur(ps,A)?psAe?1:0:A},ws={"<":"lt",">":"gt"},Md=/^($|Unidentified$|Process$|Dead$|Alt|Control|Hyper|Meta|Shift|Super|OS)/,Pn=A=>{let e=A.shiftKey,t=A.key||"Unidentified";if(t==="Unidentified"?t=fd(A.code||"",e):(t=hs(t),t===" "&&(t="Space")),Md.test(t))return"";t.length===1?e=!1:t=t.toLowerCase();let o="";return A.altKey&&(o+="a-"),A.ctrlKey&&(o+="c-"),A.metaKey&&(o+="m-"),e&&(o+="s-"),ur(ws,t)&&(t=wst),o||t.length>1?<${o}${t}>:t},ms={a:"altKey",c:"ctrlKey",m:"metaKey",s:"shiftKey"},Nd=A=>{if(A.length===1)return/\s/.test(A)?{ok:!1,value:{name:"InvalidKeyError",key:A,message:Invalid key: ${A}}}:{ok:!0,value:{key:A}};let e=A.match(/^<((?:a-z-)*)(a-z\d+|^<>\s)>$/i);if(!e)return{ok:!1,value:{name:"InvalidKeyError",key:A,message:Invalid key: ${A}}};let,t,o=e,g={key:hs(o)};for(let r of t.split("-").slice(0,-1)){let n=r.toLowerCase();if(!ur(ms,n))return{ok:!1,value:{name:"UnknownModifierError",modifier:r,context:A,message:${A}: Unknown modifier: ${r}}};let Q=msn;if(gQ!==void 0)return{ok:!1,value:{name:"DuplicateModifierError",modifier:r,context:A,message:${A}: Duplicate modifier: ${r}}};if(gQ=!0,g.key.length===1&&g.shiftKey)return{ok:!1,value:{name:"DisallowedModifierError",modifier:r,context:A,message:${A}: Unusable modifier with single-character keys: ${r}}}}return{ok:!0,value:g}},ds=A=>{let e=Nd(A);return e.ok?{ok:!0,value:Pn(e.value)}:e},us=A=>A.match(/<^<>\s+>|\s\S|^$/g);var ne=!1,Vn=A=>{ne=typeof A=="boolean"?A:new Set(A)},Ye=A=>Object.fromEntries(...Object.entries(console).map((e,t)=>{if(typeof t!="function")returne,t;switch(e){case"warn":case"error":return[e,(...o)=>t(%c${A},"color: gray",...o)];case"log":case"info":case"debug":return[e,(...o)=>{ne!==!0&&(!ne||!ne.has(A))||t(%c${A},"color: gray",...o)}];case"assert":return[e,(o,...g)=>{ne!==!0&&(!ne||!ne.has(A))||t(o,%c${A},"color: gray",...g)}];case"time":case"timeEnd":return[e,o=>{ne!==!0&&(!ne||!ne.has(A))||t(${A} ${o})}];default:returne,(...o)=>{if(!(ne!==!0&&(!ne||!ne.has(A))))return t(...o)}}}));var xt=Ye("ScrapBindings:mod.ts"),fr=class{constructor(e,t){this.target=e;this.onSequenceUpdate=t?.onSequenceUpdate,this.flushInterval=t?.flushInterval??1e3}bind(e,t){let o=new Map,g=[];for(letr,nof e instanceof Map?e.entries():typeof e=="string"?e,t:Object.entries(e)){let Q=fs(r);if(!Q.ok){for(let C of Q.value)xt.error(${r}: ${C.message});o.set(r,Q.value);continue}let B=Q.value;this.bindings.set(B,n),B.startsWith(this.currentSequence)&&this.filtered.add(B),g.push(B)}return xt.debug("Binded the following commands:",g),this.emitChange(),o}unbind(...e){for(let t of e){let o=fs(t);if(!o.ok)continue;let g=o.value;this.bindings.delete(g),this.filtered.delete(g)}this.emitChange()}reset(){this.bindings.clear(),this.emitChange()}bindings=new Map;onSequenceUpdate;flushInterval;_sequence="";set currentSequence(e){let t=this._sequence!==e;this._sequence=e,t&&this.onSequenceUpdate?.(e)}get currentSequence(){return this._sequence}prevBestMatchCommand;filtered=new Set;timer;backToInitial=()=>{clearTimeout(this.timer),this.currentSequence="",this.prevBestMatchCommand=void 0,this.filtered=new Set(this.bindings.keys()),xt.debug("reset the sequence")};handleKeydown=e=>{if(!e.isTrusted)return;let t=Pn(e);if(!t)return;if(clearTimeout(this.timer),e.isComposing){this.backToInitial();return}this.currentSequence+=t,xt.debug("sequence",this.currentSequence);let o;for(let r of this.filtered){if(r.startsWith(this.currentSequence)||this.filtered.delete(r),this.currentSequence!==r)continue;let n=this.bindings.get(r);if(!n){this.filtered.delete(r);continue}o=()=>{xt.debug(run ${r});try{n(e)}catch(Q){xt.error(Q)}finally{this.backToInitial()}}}let g=this.filtered.size;if(xt.debug(${g} candidates: ${[...this.filtered.keys()].join(", ")}),g>0&&(this.prevBestMatchCommand=o),this.prevBestMatchCommand&&g<2){if(this.prevBestMatchCommand(),g===0){this.handleKeydown(e);return}return}if(g===0){this.backToInitial();return}e.preventDefault(),e.stopPropagation(),this.timer=setTimeout(this.prevBestMatchCommand??this.backToInitial,this.flushInterval)};emitChange=()=>{if(this.bindings.size===0){this.backToInitial(),this.target.removeEventListener("keydown",this.handleKeydown);return}this.target.addEventListener("keydown",this.handleKeydown)}},yd={name:"InvalidSequenceError",message:"cannot parse the sequence"},fs=A=>{let e=us(A);if(!e)return{ok:!1,value:yd};let t="",o=[];for(let g of e){let r=ds(g);if(!r.ok){o.push(r.value);continue}t+=r.value}return o.length>0?{ok:!1,value:o}:{ok:!0,value:t}};var Gd=/https?:\/\/vimeo\.com\/(0-9+)/i,Ms=A=>{let e=A.match(Gd);if(e)return e1};var kd=/https?:\/\/open\.spotify\.com\/(track|artist|playlist|album|episode|show)\/(a-zA-Z\d_-+)(?:\?^\s{0,100}|)/,Ns=A=>{let e=A.match(kd);if(!e)return;let,t,o=e;return{videoId:o,pathType:t}};var Yd=/https?:\/\/anchor\.fm\/a-zA-Z\d_-+\/episodes\/(a-zA-Z\d_-+(?:\/a-zA-Z\d_-+)?)(?:\?^\s{0,100}|)/,ys=A=>{let e=A.match(Yd);if(!e)return;let,t=e;return t};var Gs=A=>{let{type:e,pathType:t,content:o,href:g,...r}=A;if(o===""){let n=$g(g);if(n)return{type:"youtube",href:g,...n,...r};let Q=Ms(g);if(Q)return{type:"vimeo",videoId:Q,href:g,...r};let B=Ns(g);if(B)return{type:"spotify",href:g,...B,...r};let C=ys(g);if(C)return{type:"anchor-fm",videoId:C,href:g,...r};if(jd(g))return{type:"video",href:g,...r}}return bd(g)?{type:"audio",content:o,href:g,...r}:{type:"absoluteLink",content:o,href:g,...r}},bd=A=>/\.(?:mp3|ogg|wav|aac)$/.test(A),jd=A=>/\.(?:mp4|webm)$/.test(A);var ks=()=>{if(scrapbox.Layout!=="page")return{selectionRange:{start:{line:0,char:0},end:{line:0,char:0}},selectedText:""};let{selectionRange:A,selectedText:e,position:t}=EA();if(!e){let i=Ln(t.line)??0,I={start:{line:t.line,char:0},end:{line:t.line+i,char:dA(t.line+i)?.length??0}};return{selectionRange:I,selectedText:scrapbox.Page.lines.slice(I.start.line,I.end.line+1).map(s=>s.text).join(` )}}let{start:o,end:g}=A,r=o.line>g.line,n=r?g.line:o.line,Q=r?g.char:o.char,B=r?o.line:g.line,C=r?o.char:g.char;return{selectedText:e,selectionRange:{start:{line:n,char:Q},end:{line:B,char:C}}}};var qn=(A,{title:e,projectTo:t,mode:o})=>{let[g,...r]=A.split(
),n=g.replaceAll("[","").replaceAll("]","").trim(),Q=Math.min(...[g,...r].map(C=>PA(C))),B=[from ${e},g.slice(Q),...r.map(C=>C.slice(Q))];return{text:${n},pages:[{project:t,title:n,lines:B,mode:o}]}};qn.hookName="default-hook";var He=A=>{let{project:e=scrapbox.Project.name,mode:t="newtab"}=A??{},o=[...A?.hooks??[],qn],{selectionRange:{start:g,end:r},selectedText:n}=ks();if(!n||scrapbox.Layout!=="page")return;let Q=(()=>{for(let I of o){let s=I(n,{title:scrapbox.Page.title,projectFrom:scrapbox.Project.name,projectTo:e,lines:KA().slice(g.line,r.line+1),mode:t});if(s)return[I.hookName,s]}})();if(!Q)return;let[B,C]=Q,i=async()=>{let I=C instanceof Promise?await C:C;if(I.pages.length===0&&I.text===n)return;let s,{render:a,dispose:c}=CA();try{if(I.pages.length>0){let D=I.pages.length;a({type:"spinner"},{type:"text",text:Create new ${D} pages...}),s=await SA();let m=0;await Promise.all(I.pages.map(async N=>{let u=Array.isArray(N.lines)?p=>[...p.map(h=>h.text),...N.lines]:N.lines;await oA(N.project,N.title,u,{socket:s}),a({type:"spinner"},{type:"text",text:Create ${D-++m} pages...})}))}a({type:"spinner"},{type:"text",text:${I.pages.length>0?"Created. ":""}Removing cut text...});let l=I.text;if(n===l)return;await oA(scrapbox.Project.name,scrapbox.Page.title,D=>{let m=D.map(N=>N.text);return[...m.slice(0,g.line),...${mg.line.slice(0,g.char)}${l}${m.slice(r.line).join(` ).slice(r.char)}.split(`
)]}),a({type:"check-circle"},{type:"text",text:"Removed."});for(let D of I.pages)switch(D.mode){case"self":D.project===scrapbox.Project.name?ao(D.project,D.title):window.open(https://scrapbox.io/${D.project}/${V(D.title)},"_self");break;case"newtab":window.open(https://scrapbox.io/${D.project}/${V(D.title)});break}}catch(l){a({type:"exclamation-triangle"},{type:"text",text:"Failed to create new pages (see console)."}),console.error(l)}finally{let l=nA(1e3);s&&await yA(s),await l,c()}};return i.hookName=B,i};function Od(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}var Fd={};function xd(){return Fd}function Mr(A,e){let t=xd(),o=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??t.weekStartsOn??t.locale?.options?.weekStartsOn??0,g=Od(A),r=g.getDay(),n=(r<o?7:0)+r-o;return g.setDate(g.getDate()-n),g.setHours(0,0,0,0),g}function Jd(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Ys(A){let e=Jd(A);return e.setHours(0,0,0,0),e}function _n(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Nr(A,e){let t=_n(A.start),o=_n(A.end),g=+t>+o,r=g?+t:+o,n=g?o:t;n.setHours(0,0,0,0);let Q=e?.step??1;if(!Q)return[];Q<0&&(Q=-Q,g=!g);let B=[];for(;+n<=r;)B.push(_n(n)),n.setDate(n.getDate()+Q),n.setHours(0,0,0,0);return g?B.reverse():B}function Rd(A){return A instanceof Date||typeof A=="object"&&Object.prototype.toString.call(A)==="[object Date]"}function bs(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Zd(A){if(!Rd(A)&&typeof A!="number")return!1;let e=bs(A);return!isNaN(Number(e))}function It(A,e){let t=A<0?"-":"",o=Math.abs(A).toString().padStart(e,"0");return t+o}var Ud={y(A,e){let t=A.getFullYear(),o=t>0?t:1-t;return It(e==="yy"?o%100:o,e.length)},M(A,e){let t=A.getMonth();return e==="M"?String(t+1):It(t+1,2)},d(A,e){return It(A.getDate(),e.length)},a(A,e){let t=A.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return t.toUpperCase();case"aaa":return t;case"aaaaa":return t[0];case"aaaa":default:return t==="am"?"a.m.":"p.m."}},h(A,e){return It(A.getHours()%12||12,e.length)},H(A,e){return It(A.getHours(),e.length)},m(A,e){return It(A.getMinutes(),e.length)},s(A,e){return It(A.getSeconds(),e.length)},S(A,e){let t=e.length,o=A.getMilliseconds(),g=Math.trunc(o*Math.pow(10,t-3));return It(g,e.length)}},Ld=/(\w)\1*|''|'(''|[^'])+('|$)|./g,Td=/^'([^]*?)'?$/,Sd=/''/g,vd=/[a-zA-Z]/;function _(A,e){let t=bs(A);if(!Zd(t))throw new RangeError("Invalid time value");let o=e.match(Ld);return o?o.map(g=>{if(g==="''")return"'";let r=g[0];if(r==="'")return Hd(g);let n=Ud[r];if(n)return n(t,g);if(r.match(vd))throw new RangeError("Format string contains an unescaped latin alphabet character "+r+"");return g}).join(""):""}function Hd(A){let e=A.match(Td);return e?e[1].replace(Sd,"'"):A}function Wd(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Xd(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function VA(A,e){let t=Wd(A);return isNaN(e)?Xd(A,NaN):(e&&t.setDate(t.getDate()+e),t)}function zd(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Kd(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function Pd(A,e){let t=zd(A);return isNaN(e)?Kd(A,NaN):(e&&t.setDate(t.getDate()+e),t)}function We(A,e){return Pd(A,-e)}function Vd(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function qd(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function _d(A,e){let t=+Vd(A);return qd(A,t+e)}function yr(A,e){return _d(A,e*1e3)}function $d(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Au(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function eu(A,e){let t=$d(A);return isNaN(e)?Au(A,NaN):(e&&t.setDate(t.getDate()+e),t)}function js(A,e){let t=e*7;return eu(A,t)}function tu(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Gr(A){return tu(A).getDate()}var ou=Math.pow(10,8)*24*60*60*1e3,iL=-ou,gu=6048e5,ru=3600,Os=ru*24,IL=Os*7,Qu=Os*365.2425,nu=Qu/12,sL=nu*3;function AB(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}var Bu={};function eB(){return Bu}function kr(A,e){let t=eB(),o=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??t.weekStartsOn??t.locale?.options?.weekStartsOn??0,g=AB(A),r=g.getDay(),n=(r<o?7:0)+r-o;return g.setDate(g.getDate()-n),g.setHours(0,0,0,0),g}function $n(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function Cu(A,e){let t=AB(A),o=t.getFullYear(),g=eB(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??g.firstWeekContainsDate??g.locale?.options?.firstWeekContainsDate??1,n=$n(A,0);n.setFullYear(o+1,0,r),n.setHours(0,0,0,0);let Q=kr(n,e),B=$n(A,0);B.setFullYear(o,0,r),B.setHours(0,0,0,0);let C=kr(B,e);return t.getTime()>=Q.getTime()?o+1:t.getTime()>=C.getTime()?o:o-1}function iu(A,e){let t=eB(),o=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??t.firstWeekContainsDate??t.locale?.options?.firstWeekContainsDate??1,g=Cu(A,e),r=$n(A,0);return r.setFullYear(g,0,o),r.setHours(0,0,0,0),kr(r,e)}function rg(A,e){let t=AB(A),o=+kr(t,e)-+iu(t,e);return Math.round(o/gu)+1}function Iu(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Fs(A){return Iu(A).getMonth()}function su(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Qg(A){return su(A).getFullYear()}function au(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function xs(A){let e=au(A);return e.setHours(0,0,0,0),e}function qA(A,e){let t=xs(A),o=xs(e);return+t==+o}var Js=A=>{let e=new Map;for(let t of A){let o=${Qg(t)}-${Fs(t)}-${Gr(t)},g=e.get(o);g&&g.getTime()>t.getTime()||e.set(o,t)}return[...e.values()]};function tB(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Yr(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function Eu(A,e){let t=tB(A);return isNaN(e)?Yr(A,NaN):(e&&t.setDate(t.getDate()+e),t)}function cu(A,e){let t=tB(A);if(isNaN(e))return Yr(A,NaN);if(!e)return t;let o=t.getDate(),g=Yr(A,t.getTime());g.setMonth(t.getMonth()+e+1,0);let r=g.getDate();return o>=r?g:(t.setFullYear(g.getFullYear(),g.getMonth(),o),t)}function Rs(A,e){let{years:t=0,months:o=0,weeks:g=0,days:r=0,hours:n=0,minutes:Q=0,seconds:B=0}=e,C=tB(A),i=o||t?cu(C,o+t*12):C,I=r||g?Eu(i,r+g*7):i,s=Q+n*60,a=(B+s*60)*1e3;return Yr(A,I.getTime()+a)}function lu(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Du(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function pu(A,e){let t=+lu(A);return Du(A,t+e)}var wu=Math.pow(10,8)*24*60*60*1e3,iT=-wu,mu=36e5,hu=3600,Zs=hu*24,IT=Zs*7,du=Zs*365.2425,uu=du/12,sT=uu*3;function Us(A,e){return pu(A,e*mu)}function fu(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Mu(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function Nu(A,e){let t=+fu(A);return Mu(A,t+e)}var yu=Math.pow(10,8)*24*60*60*1e3,pT=-yu,Gu=6e4,ku=3600,Ls=ku*24,wT=Ls*7,Yu=Ls*365.2425,bu=Yu/12,mT=bu*3;function st(A,e){return Nu(A,e*Gu)}function Ts(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Ss(A,e){let t=Ts(A),o=Ts(e),g=t.getTime()-o.getTime();return g<0?-1:g>0?1:g}var ju=Math.pow(10,8)*24*60*60*1e3,XT=-ju,Ou=864e5,Fu=3600,Ws=Fu*24,zT=Ws*7,xu=Ws*365.2425,Ju=xu/12,KT=Ju*3;function Xs(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function vs(A){let e=Xs(A);return e.setHours(0,0,0,0),e}function Hs(A){let e=Xs(A),t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),+A-+t}function zs(A,e){let t=vs(A),o=vs(e),g=+t-Hs(t),r=+o-Hs(o);return Math.round((g-r)/Ou)}function Ks(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Ps(A,e){let t=Ks(A),o=Ks(e),g=t.getFullYear()-o.getFullYear(),r=t.getMonth()-o.getMonth();return g*12+r}function Ru(A){return e=>{let t=(A?Math[A]:Math.trunc)(e);return t===0?0:t}}var Zu=Math.pow(10,8)*24*60*60*1e3,rS=-Zu,Uu=6e4,Lu=3600,qs=Lu*24,QS=qs*7,Tu=qs*365.2425,Su=Tu/12,nS=Su*3;function Vs(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function vu(A,e){return+Vs(A)-+Vs(e)}function oB(A,e,t){let o=vu(A,e)/Uu;return Ru(t?.roundingMethod)(o)}function ng(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Hu(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function Wu(A,e){let t=ng(A);return isNaN(e)?Hu(A,NaN):(e&&t.setDate(t.getDate()+e),t)}function Xu(A,e){let t=e*7;return Wu(A,t)}var zu={};function Ku(){return zu}function br(A,e){let t=Ku(),o=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??t.weekStartsOn??t.locale?.options?.weekStartsOn??0,g=ng(A),r=g.getDay(),n=(r<o?7:0)+r-o;return g.setDate(g.getDate()-n),g.setHours(0,0,0,0),g}function _s(A,e){let t=ng(A.start),o=ng(A.end),g=+t>+o,r=br(g?o:t,e),n=br(g?t:o,e);r.setHours(15),n.setHours(15);let Q=+n.getTime(),B=r,C=e?.step??1;if(!C)return[];C<0&&(C=-C,g=!g);let i=[];for(;+B<=Q;)B.setHours(0),i.push(ng(B)),B=Xu(B,C),B.setHours(15);return g?i.reverse():i}function Pu(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function $s(A){let e=Pu(A);return e.setHours(23,59,59,999),e}function Vu(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Aa(A){return Vu(A).getHours()}function qu(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function ea(A){return qu(A).getMinutes()}function ta(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function ga(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}var _u={};function ra(){return _u}function oa(A,e){let t=ra(),o=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??t.weekStartsOn??t.locale?.options?.weekStartsOn??0,g=ga(A),r=g.getDay(),n=(r<o?7:0)+r-o;return g.setDate(g.getDate()-n),g.setHours(0,0,0,0),g}function Qa(A,e){let t=ga(A),o=t.getFullYear(),g=ra(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??g.firstWeekContainsDate??g.locale?.options?.firstWeekContainsDate??1,n=ta(A,0);n.setFullYear(o+1,0,r),n.setHours(0,0,0,0);let Q=oa(n,e),B=ta(A,0);B.setFullYear(o,0,r),B.setHours(0,0,0,0);let C=oa(B,e);return t.getTime()>=Q.getTime()?o+1:t.getTime()>=C.getTime()?o:o-1}var $u=Math.pow(10,8)*24*60*60*1e3,KS=-$u;var Af=3600,na=Af*24,PS=na*7,ef=na*365.2425,tf=ef/12,VS=tf*3;function Ba(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function Jt(A,e){let t=Ba(A),o=Ba(e);return t.getTime()>o.getTime()}function of(A){return A instanceof Date||typeof A=="object"&&Object.prototype.toString.call(A)==="[object Date]"}function gf(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function co(A){if(!of(A)&&typeof A!="number")return!1;let e=gf(A);return!isNaN(Number(e))}function gB(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function rB(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function rf(A){let e=rB(A),t=e.getFullYear(),o=e.getMonth(),g=gB(A,0);return g.setFullYear(t,o+1,0),g.setHours(0,0,0,0),g.getDate()}function Qf(A,e){let t=rB(A),o=t.getFullYear(),g=t.getDate(),r=gB(A,0);r.setFullYear(o,e,15),r.setHours(0,0,0,0);let n=rf(r);return t.setMonth(e,Math.min(g,n)),t}function Ca(A,e){let t=rB(A);return isNaN(+t)?gB(A,NaN):(e.year!=null&&t.setFullYear(e.year),e.month!=null&&(t=Qf(t,e.month)),e.date!=null&&t.setDate(e.date),e.hours!=null&&t.setHours(e.hours),e.minutes!=null&&t.setMinutes(e.minutes),e.seconds!=null&&t.setSeconds(e.seconds),e.milliseconds!=null&&t.setMilliseconds(e.milliseconds),t)}var nf=Math.pow(10,8)*24*60*60*1e3,j6=-nf,Bf=6048e5,Cf=3600,ia=Cf*24,O6=ia*7,If=ia*365.2425,sf=If/12,F6=sf*3;function Or(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}var af={};function nB(){return af}function jr(A,e){let t=nB(),o=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??t.weekStartsOn??t.locale?.options?.weekStartsOn??0,g=Or(A),r=g.getDay(),n=(r<o?7:0)+r-o;return g.setDate(g.getDate()-n),g.setHours(0,0,0,0),g}function QB(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function Ef(A,e){let t=Or(A),o=t.getFullYear(),g=nB(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??g.firstWeekContainsDate??g.locale?.options?.firstWeekContainsDate??1,n=QB(A,0);n.setFullYear(o+1,0,r),n.setHours(0,0,0,0);let Q=jr(n,e),B=QB(A,0);B.setFullYear(o,0,r),B.setHours(0,0,0,0);let C=jr(B,e);return t.getTime()>=Q.getTime()?o+1:t.getTime()>=C.getTime()?o:o-1}function cf(A,e){let t=nB(),o=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??t.firstWeekContainsDate??t.locale?.options?.firstWeekContainsDate??1,g=Ef(A,e),r=QB(A,0);return r.setFullYear(g,0,o),r.setHours(0,0,0,0),jr(r,e)}function lf(A,e){let t=Or(A),o=+jr(t,e)-+cf(t,e);return Math.round(o/Bf)+1}function Ia(A,e,t){let o=Or(A),g=lf(o,t)-e;return o.setDate(o.getDate()-g*7),o}var Df=Math.pow(10,8)*24*60*60*1e3,L6=-Df;var pf=3600,sa=pf*24,T6=sa*7,wf=sa*365.2425,mf=wf/12,S6=mf*3;function hf(A){let e=Object.prototype.toString.call(A);return A instanceof Date||typeof A=="object"&&e==="[object Date]"?new A.constructor(+A):typeof A=="number"||e==="[object Number]"||typeof A=="string"||e==="[object String]"?new Date(A):new Date(NaN)}function df(A,e){return A instanceof Date?new A.constructor(e):new Date(e)}function uf(A,e){let t=hf(A);return isNaN(e)?df(A,NaN):(e&&t.setDate(t.getDate()+e),t)}function ff(A,e){let t=e*7;return uf(A,t)}function aa(A,e){return ff(A,-e)}var Ea=A=>A==null,at=A=>typeof A=="string";async function*ca(A){let e=[],t,o=n=>{if(!t){e.push(n);return}t(n),t=void 0},g=()=>e.length>0?Promise.resolve(e.pop()):new Promise(n=>t=n),r=0;for(let n of A)n.then(Q=>o({state:"fulfilled",value:Q})).catch(Q=>o({state:"rejected",reason:Q})),r++;for(let n=0;n<r;n++)yield await g()}var XA=A=>{let e=A.match(/^(\d{4})-(\d{2})-(\d{2}) (?: {5}|(\d{2}):(\d{2})) (?: {4}|(\d{4})) (?: {8}|(\d{2}):(\d{2}):(\d{2})) (?: {8}|(\d{2}):(\d{2}):(\d{2}))([^\n]*)$/);if(!e)return;let[,t,o,g,r,n,Q,B,C,i,I,s,a,c]=e,l={title:c,base:new Date(parseInt(t),parseInt(o)-1,parseInt(g)),plan:{},record:{}};if(r){let D=new Date(l.base);D.setHours(parseInt(r)),D.setMinutes(parseInt(n)),l.plan.start=D}if(Q&&(l.plan.duration=parseInt(Q)*60),B){let D=new Date(l.base);D.setHours(parseInt(B)),D.setMinutes(parseInt(C)),D.setSeconds(parseInt(i)),l.record.start=D}if(I){let D=new Date(l.base);D.setHours(parseInt(I)),D.setMinutes(parseInt(s)),D.setSeconds(parseInt(a)),l.record.start&&Jt(l.record.start,D)&&D.setDate(D.getDate()+1),l.record.end=D}return l};var lo=A=>A.record?.start??A.plan?.start??A.base,la=A=>A.record?.end??(Ea(A.plan?.duration)?A.base:yr(lo(A),A.plan.duration));var gA=({title:A,base:e,plan:t,record:o})=>["",_(e,"yyyy-MM-dd")," ",t?.start?_(t.start,"HH:mm"):" ".repeat(5)," ",t?.duration?${t.duration/60}.padStart(4,"0"):" ".repeat(4)," ",o?.start?_(o?.start,"HH:mm:ss"):" ".repeat(8)," ",o?.end?_(o?.end,"HH:mm:ss"):" ".repeat(8),"",A].join("");function*Da(A){for(let e of Rt(A))at(e)||(yield e)}function*Rt(A){for(let e=0;e<A.length;e++){let t=A[e],o=at(t)?t:t.text,g=ve(e,A),r=XA(o);if(!r){yield o;continue}yield{...r,lines:A.slice(e+1,e+1+g).map(n=>at(n)?n:n.text)},e+=g}}var Mf=5*60,Bg=async()=>{let A=EA().position.line,e=XA(dA(A)??""),t=e?.base??new Date,o={start:e?.plan?.start?yr(e.plan.start,Mf+(e.plan.duration??0)):void 0,duration:e?.plan?.duration};await Xn(A+1,gA({title:"",base:t,plan:o,record:{}}))};var Zt=async()=>{let A=EA().position.line,e=XA(dA(A)??"");if(!e)return;let{record:{start:t,end:o},...g}=e;o||await ZA(A,A,gA({record:{start:t?void 0:new Date},...g}))};var Xe=async()=>{let A=EA().position.line,e=XA(dA(A)??"");if(!e)return;let{record:{start:t,end:o},...g}=e;t&&await ZA(A,A,gA({record:{start:t,end:o?void 0:new Date},...g}))};var BB=async()=>{let A=EA().position.line,e=XA(dA(A)??"");if(!e)return;let{record:{start:t,end:o},...g}=e;if(!t){await Zt();return}if(!o){await Xe();return}await ZA(A,A,gA({record:{},...g}))};var Cg=async()=>{let A=EA().position.line,e=XA(dA(A)??"");if(!e)return;let{record:{start:t,end:o},...g}=e;if(t){if(o)return;await Xe();return}if(o)return;let r;for(let{text:Q}of Ee().slice(0,(A??0)+1).reverse()){let{record:B}=XA(Q)??{};if(B?.end){r=B.end;break}}let n=new Date;await ZA(A,A,gA({record:{start:r??n,end:n},...g}))};var Ut=()=>{let{selectionRange:{start:A,end:e},selectedText:t,position:o}=EA();return t===""?[o.line,o.line]:A.line>e.line?[e.line,A.line]:[A.line,e.line]};var CB=(A,e=7)=>new Date((A+2592e3*((e+1)**1.5-1)/5221.154823442138)*1e3);var iB=(A,e)=>{let t,o,g,r,n=null;if(n=A.match(/^(.*?)(s|e):([^\s]+)\s+d:(\d+)/))[,o,r,g,t]=n;else if(n=A.match(/^(.*?)d:(\d+)\s+(s|e):([^\s]+)/))[,o,t,r,g]=n;else if(n=A.match(/^(.*?)(s|e):([^\s]+)/))[,o,r,g]=n;else return(n=A.match(/^(.*?)d:(\d+)/))?([,o,t]=n,{name:o.trimEnd(),duration:parseInt(t)*60}):void 0;for(let{test:Q,parse:B}of Nf){let C=g.match(Q);if(!C)continue;let i=B(C),I=i.isDuration?Rs(e,i):Ca(e,i);return r==="s"?{name:o.trimEnd(),start:I,...t!==void 0?{duration:parseInt(t)*60}:{}}:{name:o.trimEnd(),start:CB(e.getTime()/1e3,(I.getTime()-e.getTime())/(24*60*60*1e3)),...t!==void 0?{duration:parseInt(t)*60}:{}}}},Nf=[{test:/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})$/i,parse:A=>({isDuration:!1,year:parseInt(A[1]),month:parseInt(A[2])-1,date:parseInt(A[3]),hours:parseInt(A[4]),minutes:parseInt(A[5])})},{test:/(\d{4})-(\d{2})-(\d{2})T(\d{2})$/i,parse:A=>({isDuration:!1,year:parseInt(A[1]),month:parseInt(A[2])-1,date:parseInt(A[3]),hours:parseInt(A[4])})},{test:/(\d{4})-(\d{2})-(\d{2})T?$/i,parse:A=>({isDuration:!1,year:parseInt(A[1]),month:parseInt(A[2])-1,date:parseInt(A[3])})},{test:/(\d{2})-(\d{2})T(\d{2}):(\d{2})$/i,parse:A=>({isDuration:!1,month:parseInt(A[1])-1,date:parseInt(A[2]),hours:parseInt(A[3]),minutes:parseInt(A[4])})},{test:/(\d{2})-(\d{2})T(\d{2})$/i,parse:A=>({isDuration:!1,month:parseInt(A[1])-1,date:parseInt(A[2]),hours:parseInt(A[3])})},{test:/(\d{2})-(\d{2})T?$/i,parse:A=>({isDuration:!1,month:parseInt(A[1])-1,date:parseInt(A[2])})},{test:/(\d{2})T(\d{2}):(\d{2})$/i,parse:A=>({isDuration:!1,date:parseInt(A[1]),hours:parseInt(A[2]),minutes:parseInt(A[3])})},{test:/(\d{2})T(\d{2})$/i,parse:A=>({isDuration:!1,date:parseInt(A[1]),hours:parseInt(A[2])})},{test:/T?(\d{2}):(\d{2})$/i,parse:A=>({isDuration:!1,hours:parseInt(A[1]),minutes:parseInt(A[2])})},{test:/T?(\d{2})$/i,parse:A=>({isDuration:!1,hours:parseInt(A[1])})},{test:/P(\d+)Y(\d+)M(\d+)DT(\d+)H(\d+)M$/i,parse:A=>({isDuration:!0,year:parseInt(A[1]),month:parseInt(A[2])-1,days:parseInt(A[3]),hours:parseInt(A[4]),minutes:parseInt(A[5])})},{test:/P(\d+)Y(\d+)M(\d+)DT(\d+)H$/i,parse:A=>({isDuration:!0,year:parseInt(A[1]),month:parseInt(A[2])-1,days:parseInt(A[3]),hours:parseInt(A[4])})},{test:/P(\d+)Y(\d+)M(\d+)D$/i,parse:A=>({isDuration:!0,year:parseInt(A[1]),month:parseInt(A[2])-1,days:parseInt(A[3])})},{test:/P(\d+)M(\d+)DT(\d+)H(\d+)M$/i,parse:A=>({isDuration:!0,month:parseInt(A[1])-1,days:parseInt(A[2]),hours:parseInt(A[3]),minutes:parseInt(A[4])})},{test:/P(\d+)M(\d+)DT(\d+)H$/i,parse:A=>({isDuration:!0,month:parseInt(A[1])-1,days:parseInt(A[2]),hours:parseInt(A[3])})},{test:/P(\d+)M(\d+)D$/i,parse:A=>({isDuration:!0,month:parseInt(A[1])-1,days:parseInt(A[2])})},{test:/P(\d+)DT(\d+)H(\d+)M$/i,parse:A=>({isDuration:!0,days:parseInt(A[1]),hours:parseInt(A[2]),minutes:parseInt(A[3])})},{test:/P(\d+)DT(\d+)H$/i,parse:A=>({isDuration:!0,days:parseInt(A[1]),hours:parseInt(A[2])})},{test:/P(\d+)D$/i,parse:A=>({isDuration:!0,days:parseInt(A[1])})},{test:/PT?(\d+)H(\d+)M$/i,parse:A=>({isDuration:!0,hours:parseInt(A[1]),minutes:parseInt(A[2])})},{test:/PT?(\d+)H$/i,parse:A=>({isDuration:!0,hours:parseInt(A[1])})},{test:/PT?(\d+)M$/i,parse:A=>({isDuration:!0,minutes:parseInt(A[1])})},{test:/P(\d+)W$/i,parse:A=>({isDuration:!0,weeks:parseInt(A[1])})}];var Lt=async()=>{let A=new Date,[e,t]=Ut(),o=Ee().slice(e,t+1).map(r=>r.text),g=o.flatMap(r=>{let n=r.trimEnd();if(n==="")return r;let{name:Q,start:B,duration:C}=iB(n,A)??{};return!Q||!B&&!C?r:[gA({title:Q.trim(),base:B??A,plan:{start:B,duration:C},record:{}})]}).join( );o.join(
)!==g&&await ZA(e,t,g)};var Fr=async(A,e,t)=>{let o=[];for(let g=A;g<=e;g++){let r=dA(g)??"",n=XA(r);if(!n){o.push(r);continue}o.push(gA(t(n,g)))}await ZA(A,e,o.join(
))};var ig=async(A=1)=>{let[e,t]=Ut();await Fr(e,t,o=>(o.base=VA(o.base,A),o))};var Ig=async()=>{let[A,e]=Ut(),t=new Date;await Fr(A,e,o=>(qA(o.base,t)||(o.base=t),o))};var yf="日刊記録sheet",Gf=/日刊記録sheet (\d{4})-(\d{2})-(\d{2})/,sg=["[** 00:00 - 03:00] 未明","[** 03:00 - 06:00] 明け方","[** 06:00 - 09:00] 朝","[** 09:00 - 12:00] 昼前","[** 12:00 - 15:00] 昼過ぎ","[** 15:00 - 18:00] 夕方","[** 18:00 - 21:00] 夜のはじめ頃","[** 21:00 - 00:00] 夜遅く"];var IB=A=>{let e=A.match(Gf);if(!e)return;let[,t,o,g]=e,r=new Date(parseInt(t),parseInt(o)-1,parseInt(g));return co(r)?r:void 0},Et=A=>_(A,'${yf}' yyyy-MM-dd),Tt=A=>{let e=IB(A[0]);if(!e)return A;let t=kf(e),o=[],g=[];for(let Q of Rt(A.slice(1))){if(typeof Q=="string"){if(sg.includes(Q)||t!==""&&t===Q)continue;g.push(Q);continue}o.push(Q)}let r=o.sort((Q,B)=>Ss(lo(Q),lo(B)));if(r.length===0)return[A[0],t,...sg,...g];let n=[0,0,0,0,0,0,0,0];for(let Q=1;Q<sg.length;Q++){let B=Us(new Date(e.getFullYear(),e.getMonth(),e.getDate()),3*Q),C=r.findIndex(a=>Jt(lo(a),B));if(C<0){n[Q]=-1;continue}if(C===0)continue;let i=r[C-1],I=lo(i),s=la(i);n[Q]=(s.getTime()-I.getTime())/2<B.getTime()-I.getTime()?C:C-1}return[A[0],t,...r.flatMap((Q,B)=>[...n.flatMap((C,i)=>C===B?[sg[i]]:[]),gA(Q),...Q.lines]),...n.flatMap((Q,B)=>Q===-1?[sg[B]]:[]),...g]},kf=A=>yesterday: ${Et(We(A,1))};var ag=async(A,e)=>{let t=()=>{},o=setTimeout(()=>{let{render:g,dispose:r}=CA();t=r,g({type:"spinner"},{type:"text",text:"formatting..."})},500);await oA(A,e,g=>Tt(g.map(r=>r.text))),clearTimeout(o),t()};async function*sB(A,e,t){let o=[...e],g=[];for(;o.length>0;){let r=o.shift();if(!r)break;let n=r.base,Q=[r];for(let B=0;B<o.length;B++)qA(o[B].base,n)&&(Q.push(...o.splice(B,1)),B--);g.push((async()=>(await oA(A,Et(n),B=>Tt([...B.map(C=>C.text),...Q.flatMap(C=>[gA(C),...C.lines??[]])]),t),{date:n,size:Q.length}))())}yield*ca(g)}var St=async({from:{project:A,title:e},to:t})=>{let o=await ee(A,e);if(!o.ok)throw o.value;let g=IB(e),{lines:r}=o.value,n=[];for(let i of Da(r))g&&qA(i.base,g)||n.push(i);let{render:Q,dispose:B}=CA();Q({type:"spinner"},{type:"text",text:copying ${n.length} tasks...});let C=await SA();try{let i=0,I=!1;for await(let s of sB(t,n,{socket:C})){if(s.state!=="fulfilled"){console.error(s.reason),I=!0;continue}i+=s.value.size,Q({type:"spinner"},{type:"text",text:copying ${n.length-i} tasks...})}if(I){Q({type:"exclamation-triangle"},{type:"text",text:"Some tasks failed to be written"});return}Q({type:"spinner"},{type:"text",text:Copied. removing ${n.length} original tasks...}),await oA(A,e,s=>{let a=[];for(let c of Rt(s)){if(at(c)){a.push(c);continue}g&&qA(c.base,g)&&a.push(gA(c),...c.lines)}return a},{socket:C}),Q({type:"check-circle"},{type:"text",text:"Moved"})}finally{await yA(C),await nA(1e3),B()}};var fe=A=>${A}.padStart(2,"0");var vt=A=>"hours"in A,ce=(A,e)=>A.year!==e.year?A.year<e.year:A.month!==e.month?A.month<e.month:A.date!==e.date?A.date<e.date:"hours"in e?"hours"in A?A.hours*60+A.minutes<e.hours*60+e.minutes:0<e.hours*60+e.minutes:!1,be=A=>${${A.year}.padStart(4,"0")}-${fe(A.month)}-${fe(A.date)}${"hours"in A?T${fe(A.hours)}:${fe(A.minutes)}:""},eA=A=>{let e=be(A);return new Date(e.includes("T")?e:${e}T00:00)},_A=A=>({year:A.getFullYear(),month:A.getMonth()+1,date:A.getDate(),hours:A.getHours(),minutes:A.getMinutes()});var pa=A=>{switch(A.toLowerCase()){case"y":return"yearly";case"m":return"monthly";case"w":return"weekly";case"d":return"daily";default:return}};var wa=A=>{switch(A){case"+":return"todo";case"-":return"note";case"!":return"deadline";case".":return"done";case"~":return"up-down";default:return}},ma=A=>{switch(A){case"todo":return"+";case"note":return"-";case"deadline":return"!";case"done":return".";case"up-down":return"~"}};var le=A=>{let e=A.match(/(?:([\+\-!~.])(\d+)?)?@(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2}))?(?:\/(\d{2}):(\d{2})|\/(?:(?:(?:(\d{4})-)?(\d{2})-)?(\d{2})(?:T(\d{2}):(\d{2}))?)|D(\d+))?(?:R([YMWD])?(\d+))?(?:@(?:(\d{2}):(\d{2})|(?:(?:(\d{4})-)?(\d{2})-)?(\d{2})(?:T(\d{2}):(\d{2}))?)?(?:\/(\d{2}):(\d{2})|\/(?:(?:(?:(\d{4})-)?(\d{2})-)?(\d{2})(?:T(\d{2}):(\d{2}))?)|D(\d+))?)?/i);if(!e)return;let[t,o,g,r,n,Q,B,C,i,I,s,a,c,l,D,m,N,u,p,h,d,k,G,R,y,f,M,Y,j,F,Z,O,S]=e,U=${A.slice(0,e.index).trim()}${A.slice((e.index??0)+t.length).trim()},v=ha(r,n,Q,B,C);if(!co(eA(v)))return{ok:!1,value:{name:"InvalidDateError",message:The reference point of the task "${be(v)}" is an invalid date.}};let H=da(v,s,a,c,i||l,I||D,m);if(H!==void 0){if(JA(H)&&isNaN(H)||!JA(H)&&!co(eA(H)))return{ok:!1,value:{name:"InvalidDateError",message:The estimated end of the task${JA(H)?"": "${be(H)}"} is an invalid date.}};if(JA(H)&&H<0||!JA(H)&&ce(H,v))return{ok:!1,value:{name:"TaskRangeError",message:The reference point of an task cannot be after its estimated end. reference point:${be(v)}
estimated end:${be(JA(H)?_A(st(eA(v),H)):H)}}}}let $=/^[\uFE00-\uFE0F]*[✅❌]/.test(A)?"done":wa(o),P=$?{status:$,refDate:v}:void 0;P&&g&&(P.speed=parseInt(g));let xA=ha(d||r,k||n,G||Q,p||R||B,h||y||C);if(!co(eA(xA)))return{ok:!1,value:{name:"InvalidDateError",message:The start of the task/event "${be(xA)}" is an invalid date.}};let IA=da(xA,Y||s,j||a,F||c,f||Z||i||l,M||O||I||D,S||m),x=vt(xA)&&JA(IA)?{start:xA,duration:IA}:void 0;if(x){let WA={name:U,executed:x,generated:!1,raw:A};return P&&(WA.freshness=P),(N||u)&&(WA.recurrence={frequency:pa(N??"D")??"daily",count:u?parseInt(u):1}),{ok:!0,value:WA}}if(!P)return{ok:!1,value:{name:"InvalidDateError",message:"Task requires freshness to be spec"}};let QA={name:U,freshness:P,generated:!1,raw:A};return H&&(QA.estimated=H),{ok:!0,value:x?{...QA,executed:x}:QA}},je=A=>!("executed"in A),ct=A=>"recurrence"in A,ua=A=>!("executed"in A||"freshness"in A&&vt(A.freshness.refDate)&&A.estimated&&(JA(A.estimated)||vt(A.estimated))),Eg=A=>"executed"in A?A.executed.duration:JA(A.estimated)?A.estimated:void 0,Oe=A=>je(A)?A.freshness.refDate:A.executed.start,fa=A=>{if(!je(A)){let t=eA(A.executed.start);return _A(st(t,A.executed.duration))}if(JA(A.estimated)&&vt(A.freshness.refDate)){let t=eA(A.freshness.refDate);return _A(st(t,A.estimated))}let e=eA(JA(A.estimated)?A.freshness.refDate:A.estimated??A.freshness.refDate);return e.setHours(0),e.setMinutes(0),_A(VA(e,1))},Yf=A=>{let e=A.freshness?${ma(A.freshness.status)}${A.freshness.speed??""}:"",t=${be(Oe(A))},o=Eg(A);return${e}@${t}${o===void 0?"":D${o}}${A.name}},xr=(A,e)=>{let t=_A(e),{recurrence:o,executed:g}=A;switch(o.frequency){case"yearly":{if(Math.abs(t.year-g.start.year)%(o.count??1)!==0||g.start.month!==t.month||g.start.date!==t.date)return;break}case"monthly":{if(Ps(eA(t),eA(g.start))%(o.count??1)!==0)return;break}case"weekly":case"daily":{let Q=o.frequency==="weekly"?7:1;if(zs(eA(t),eA(g.start))%((o.count??1)*Q)!==0)return;break}}let r={...g.start};r.year=t.year,r.month=t.month,r.date=t.date;let n={name:A.name,executed:{start:r,duration:g.duration},generated:!0,raw:A.raw};return A.freshness&&(n.freshness=A.freshness),n},Jr=A=>A.freshness?A.generated?Yf(A):A.raw:A.generated?void 0:A.raw,ha=(A,e,t,o,g)=>{let r=parseInt(A),n=parseInt(e),Q=parseInt(t),B=o?parseInt(o):void 0,C=g?parseInt(g):void 0;return B!==void 0&&C!==void 0?{year:r,month:n,date:Q,hours:B,minutes:C}:{year:r,month:n,date:Q}},da=(A,e,t,o,g,r,n)=>{if(!e&&!t&&!o&&!g&&!r&&!n)return;if(n)return parseInt(n);let Q=e?parseInt(e):A.year,B=t?parseInt(t):A.month,C=o?parseInt(o):A.date,i=g?parseInt(g):void 0,I=r?parseInt(r):void 0,s=i!==void 0&&I!==void 0?{year:Q,month:B,date:C,hours:i,minutes:I}:{year:Q,month:B,date:C};return!vt(A)||!vt(s)?s:Math.round((eA(s).getTime()-eA(A).getTime())/(60*1e3))};var Ht=(A,e)=>{if(!A.generated&&ct(A)){let r=xr(A,e);return r?Ht(r,e):void 0}let t=eA(je(A)?A.freshness.refDate:A.executed.start),o=Eg(A),g=Jr(A);return{title:g!==void 0?${g}:A.name,base:t,plan:{start:ua(A)?void 0:t,duration:o!==void 0?o*60:void 0},record:{}}};var aB={あさごはん:"#log-breakfast",ひるごはん:"#log-lunch",よるごはん:"#log-dinner"},Wt=(A,{title:e,projectTo:t,mode:o})=>{let[g,...r]=A.split( ),n=XA(g);if(!n)return;if(r.length===0)return{text:A,pages:[]};let{title:Q,base:B,record:C,...i}=n,I=bf(Q,B,C),s=gA({title:${I},base:B,record:C,...i}),a=Math.min(...r.map(l=>PA(l))),c=[.../[\[\]]/.test(Q)&&Q!==${I}?[Q]:[],...e in aB?[...r.map(l=>l.slice(a)),"",aB[e],"#log-eatenfood"]:[...r.map(l=> ${l.slice(a)}),""]];return{text:s,pages:[{project:t,title:I,lines:Ma(e,c,[C.start??B]),mode:o}]}};Wt.hookName="task-hook";var bf=(A,e,t)=>{let o=_(t.start??e,"yyyy-MM-dd");if(A in aB)return${o} ${A};if(le(A.slice(1,-1)))return A.slice(1,-1);let g=A.replace(/[\[\]]/g,"").trim();return${g}${g.endsWith(o)?"": ${o}}},Xt=(A,{title:e,projectTo:t,mode:o,lines:g})=>{let[r,...n]=A.split( );if(n.length===0)return;let Q=r.replace(/[\[\]]/g,"").trim(),B=Math.min(...n.map(I=>PA(I))),C=t.startsWith("takker")?Js([new Date,...g.map(({updated:I})=>new Date(I*1e3))]).sort((I,s)=>s.getTime()-I.getTime()):[],i=["",.../[\[\]]/.test(r)?[r.trimStart()]:[],...n.map(I=>I.slice(B))];return{text:${" ".repeat(PA(r))}${Q},pages:[{project:t,title:Q,lines:Ma(e,i,C),mode:o}]}};Xt.hookName="new-page-hook";var zt=(A,{projectTo:e,mode:t})=>{if(A.includes( )||!/\[[^\]]+\]/.test(A))return;let[o,g]=A.match(/^(\s*)(.*)$/)?.slice?.(1)??["",A],r=[...g.matchAll(/\[([^\]])\]/g)].map(Q=>z(Q[1])),n=g.replaceAll("[","").replaceAll("]","");return{text:${o}${n},pages:[{project:e,title:n,lines:(Q,{links:B})=>{let C=B.map(i=>z(i));if(!r.every(i=>C.includes(i)))return[...Q.map(i=>i.text),g]},mode:t}]}};zt.hookName="splitted-link-hook";var Ma=(A,e,t)=>(o,{links:g})=>{let r=g.map(I=>z(I)),n=r.includes(z(A))?[]:[from ${A}],Q=t.flatMap(I=>{let s=_(I,"yyyy-MM-dd");if(r.includes(s))return[];let a=_(I,"HH:mm:ss");return[#${s} ${a}]}),B=o.map(I=>I.text),C=B.findIndex(I=>/^#\d{4}-\d{2}-\d{2}/.test(I)),i=C<0?B.length:C;return[...B.slice(0,i),...n,...e,"",...Q,...B.slice(i)]};var Na=A=>A.preventDefault(),ya=A=>A.stopPropagation(),Ga={"<A-a><A-c>":async A=>{Na(A),ya(A);let[e,t]=jf(),o=Ee().slice(e,t+1).map(g=>{let r=g.text,n=g.text.match(/\[([^\]]+)\]/)?.[1];if(!n)return r;let Q=le(n);if(!Q||!Q.ok)return r;let B=Q.value;if(B.freshness?.status==="done")return r;let C=Ht(B,new Date);return C?(C.title=${n},gA(C)):r}).join( );await ZA(e,t,o),await Lt()},"<A-a><A-m>":A=>{scrapbox.Layout==="page"&&(Na(A),ya(A),St({from:{project:scrapbox.Project.name,title:scrapbox.Page.title},to:"takker-memex"}))}},jf=()=>{let{selectionRange:{start:A,end:e},selectedText:t,position:o}=EA();return t===""?[o.line,o.line]:A.line>e.line?[e.line,A.line]:[A.line,e.line]};var Kt=A=>A.preventDefault(),Pt=A=>A.stopPropagation(),EB={"<A-a><A-a>":A=>{Kt(A),Pt(A),Bg()},"<A-a><A-s>":A=>{Kt(A),Pt(A),Zt()},"<A-a><A-e>":A=>{Kt(A),Pt(A),Xe()},"<A-a><A-0>":A=>{Kt(A),Pt(A),Cg()},"<A-a><A-1>":A=>{Kt(A),Pt(A),ig(1)},"<A-a><A-t>":A=>{Kt(A),Pt(A),Ig()},"<A-a><A-S>":A=>{scrapbox.Layout==="page"&&(Kt(A),Pt(A),ag(scrapbox.Project.name,scrapbox.Page.title))}};var jA=A=>A.preventDefault(),OA=A=>A.stopPropagation(),Vt=(A,e)=>{let t=KI()?.getElementsByClassName?.("button");if(!t)return;let o=[...t].find(g=>e instanceof RegExp?e.test(g.textContent??""):g.textContent===e);o instanceof HTMLDivElement&&A.target===document.activeElement&&(jA(A),OA(A),o.click())},Of={"-":A=>Vt(A,""),"]":A=>Vt(A,""),c:A=>Vt(A,"Copy plain"),$:A=>Vt(A,""),"{":A=>Vt(A,/{{c\d+}}/),"}":A=>Vt(A,"reset cloze"),n:A=>Vt(A,"make note")},Ff={"<C-]>":A=>{let{position:{line:e,char:t}}=EA(),o=og(e,t)?.closest("a.page-link")??Ft(e)?.querySelector?.("a.page-link");o instanceof HTMLAnchorElement&&(jA(A),OA(A),o.click())},"<C-o>":A=>{jA(A),OA(A),history.back()}},xf={"<C-home>":A=>{jA(A),OA(A),ts()},"<C-end>":A=>{jA(A),OA(A),os()}},ka=[Wt,Xt,zt],Jf={"<C-X>":A=>{let e=window.prompt("Create a new page at",scrapbox.Project.name);e&&(jA(A),OA(A),He({project:e,mode:"self",hooks:ka})?.())},"<C-D>":A=>{let e=window.prompt("Create a new page at",scrapbox.Project.name);e&&(jA(A),OA(A),He({project:e,mode:"noopen",hooks:ka})?.())},"<C-h>":A=>{jA(A),OA(A),sr()},"<C-j>":A=>{jA(A),OA(A),Er()},"<C-k>":A=>{jA(A),OA(A),ar()},"<C-l>":A=>{jA(A),OA(A),Ir()},"<A-h>":A=>{jA(A),OA(A),lr()},"<A-j>":A=>{jA(A),OA(A),pr()},"<A-k>":A=>{jA(A),OA(A),Dr()},"<A-l>":A=>{jA(A),OA(A),cr()}};scrapbox.TimeStamp.removeAllFormats();var Rf={"<A-t><A-t>":A=>{jA(A),OA(A),bA(_(new Date,"#yyyy-MM-dd HH:mm:ss "))},"<A-t><A-j>":A=>{jA(A),OA(A),bA(_(new Date,"yyyy-MM-dd HH:mm:ss "))},"<A-t><A-k>":A=>{jA(A),OA(A),bA(_(new Date,"HH:mm:ss "))},"<A-t><A-l>":A=>{jA(A),OA(A),bA(_(new Date,"yyyy-MM-dd"))}},Ya={...Of,...Ff,...xf,...Jf,...Rf,...Ga};var{render:Zf}=CA(),cB,Uf=A=>{cB!==void 0&&cancelAnimationFrame(cB),cB=requestAnimationFrame(()=>Zf({type:"text",text:A}))},lB=new fr({addEventListener:Cs,removeEventListener:Kn},{onSequenceUpdate:Uf}),ba=lB.bind({...Ya,...scrapbox.Project.name==="takker-memex"?EB:{}});ba.size>0&&alert([...ba.entries()].map(([A,e])=>${A}:
${e.map(t=>- ${t}).join(`
)}).join(`
));var ja=async()=>{let A=localStorage.getItem("projectsLastAccessed");if(!A)return[];try{let e=JSON.parse(A),t=Object.entries(e).sort(([,r],[,n])=>n-r).map(([r])=>r),o=await Co([]);if(!o.ok)return t;let g=o.value.projects.map(r=>r.id);return t.filter(r=>!g.includes(r))}catch(e){if(!(e instanceof SyntaxError))throw e;return[]}};var Lf;(A=>{})(Lf||={});var Tf="0.13.3",Oa,Fa=async(A=Tf)=>{let e=https://cdnjs.cloudflare.com/ajax/libs/KaTeX/${A}/katex.min.js;if(document.querySelector(scriptsrc="${e}"))return window.katex!==void 0?Promise.resolve(window.katex):await new Promise(o=>{let g=setInterval(()=>{window.katex!==void 0&&(clearInterval(g),o(window.katex))},500)});let t=document.createElement("script");return t.src=e,Oa??=new Promise((o,g)=>{t.onload=()=>o(window.katex),t.onerror=r=>g(r),document.head.append(t)}),Oa};var cg=(A,e={})=>{let t=kA(null),[o,g]=L(A),[r,n]=L("");return X(()=>{(async()=>{let{render:Q}=await Fa();if(t.current)try{Q(o,t.current,e),n("")}catch(B){if(B instanceof Error&&B.name==="ParseError")n(B.message.slice(19));else throw B}})()},[o]),{ref:t,error:r,setFormula:g}};var xa=A=>{let e=[],t=new Set,o=g=>{t.delete(g);let r=e.pop();if(!r)return;let n=r[0]().finally(()=>o(n)).then(Q=>r[1](Q)).catch(Q=>r[2](Q));t.add(n)};return g=>{if(t.size<A){let r=g().finally(()=>o(r));return t.add(r),r}return new Promise((r,n)=>{e.push([g,r,n])})}};var Sf="0.6.5",Za=ScrapBubble-${Sf},Ja=await globalThis.caches.open(Za);(async()=>{for(let A of await globalThis.caches.keys())A.startsWith("ScrapBubble-")&&A!==Za&&(await globalThis.caches.delete(A),console.log(ScrapBubble deleted old cache :"${A}"))})();var Ra=xa(3);async function*Rr(A,e){let t=((e?.saveFailedResponse?Ja.match(A):void 0)??Eo(A,e)).then(n=>["cache",n]);{let n=nA(1e3).then(()=>"timeout"),Q=await Promise.race([t,n]);if(Q!=="timeout"){Q[1]&&(yield["cache",Q[1]]);let B=await Ra(()=>fetch(A));!B.ok&&e?.saveFailedResponse&&await Ja.put(A,B.clone()),yield["network",B]}}let o=Ra(()=>fetch(A)).then(n=>["network",n]),[g,r]=await Promise.race([t,o]);if(g==="network"){yield[g,r];return}r&&(yield[g,r]),yield await o}var Ua=(A,e)=>new Date(A.headers.get("Date")??0).getTime()/1e3+e<new Date().getTime()/1e3;var Zr=()=>{let A=new Map;return{dispatch:(e,t)=>{let o=A.get(e);if(o)for(let g of o)g(t)},on:(e,t)=>{let o=A.get(e)??new Set;o.add(t),A.set(e,o)},off:(e,t)=>{let o=A.get(e);o&&o.delete(t)}}};var Be=!1,La=A=>{Be=typeof A=="boolean"?A:new Set(A)},lt=A=>Object.fromEntries([...Object.entries(console)].map(([e,t])=>{if(typeof t!="function")return[e,t];switch(e){case"warn":case"error":return[e,(...o)=>t(%c${A},"color: gray",...o)];case"log":case"info":case"debug":return[e,(...o)=>{Be!==!0&&(!Be||!Be.has(A))||t(%c${A},"color: gray",...o)}];case"assert":return[e,(o,...g)=>{Be!==!0&&(!Be||!Be.has(A))||t(o,%c${A},"color: gray",...g)}];case"time":case"timeEnd":return[e,o=>{Be!==!0&&(!Be||!Be.has(A))||t(${A} ${o})}];default:return[e,(...o)=>{if(!(Be!==!0&&(!Be||!Be.has(A))))return t(...o)}]}}));var DB=Zr(),Ur=new Map,vf=lt("ScrapBubble:useProject.ts"),Ta=A=>{let[e,t]=L();return X(()=>{DB.on(A,t);let o=Ur.get(A);return o?t(o.loading?void 0:o.value):(Ur.set(A,{loading:!0}),t(void 0),(async()=>{try{let g=ue.toRequest(A);for await(let[,r]of Rr(g)){let n=await ue.fromResponse(r);Ur.set(A,{loading:!1,value:n}),DB.dispatch(A,n);break}}catch(g){vf.error(g),Ur.delete(A)}})()),()=>DB.off(A,t)},[A]),e};var Hf=["default-light","default-dark","default-minimal"],Wf=["paper-light","paper-dark-dark","paper-dark"],Sa=["blue","purple","green","orange","red"],Xf=["hacker1","hacker2"],va=["winter","spring","summer","automn"],Ha=["tropical"],Wa=["kyoto","newyork","paris"],Xa=["mred","lgreen"],Oz=["default-light","default-minimal","paper-light",...Sa,...va,...Ha,...Wa,...Xa];var zf=[...Hf,...Wf,...Sa,...Xf,...va,...Ha,...Wa,...Xa];function za(A){return zf.includes(A)}var Ka="default-light",qt=A=>{let e=Ta(A);return J(()=>{if(!e||!e.ok)return Ka;let t=e.value.theme;return za(t)?t:Ka},[e])};var Do=(A,e)=>new Promise(t=>{let o=!1,g=()=>{o=!0,t(!1)};A.addEventListener("click",g),A.addEventListener("pointerleave",g),setTimeout(()=>{o||t(!0),A.removeEventListener("click",g),A.removeEventListener("pointerleave",g),t(!1)},e)});var po=A=>{let{top:e,right:t,left:o,bottom:g}=A.getBoundingClientRect(),r=document.body.getBoundingClientRect(),n=(o-r.left)/r.width>.5;return{top:Math.round(g-r.top),bottom:Math.round(globalThis.innerHeight-globalThis.scrollY-e),...n?{right:Math.round(r.right-t)}:{left:Math.round(o-r.left)},maxWidth:n?t-10:document.documentElement.clientWidth-o-10}};var Pa=({project:A,title:e,descriptions:t,thumbnail:o,linkTo:g,bubble:r,delay:n,prefetch:Q})=>{let B=J(()=>o?[]:hA(t.join( ),{hasTitle:!1}),[o,t]),C=qt(A),i=b(async({currentTarget:s})=>{Q(A,e),await Do(s,n)&&r({project:A,title:e,linkTo:g,type:"link",position:po(s)})},[A,e,n,g?.project,g?.titleLc]),I=J(()=>g?()=>{so({type:"page",from:{project:g.project??A,title:g.titleLc},to:{project:A,title:e}})}:()=>{},[A,e,g?.project,g?.titleLc]);return E("a",{className:"related-page-card page-link",type:"link","data-theme":C,href:/${A}/${V(e)},rel:A===scrapbox.Project.name?"route":"noopner noreferrer",target:A!==scrapbox.Project.name?"_blank":"",onPointerEnter:i,onClick:I},E("div",{class:"hover"}),E("div",{class:"content"},E("div",{class:"header"},E("div",{class:"title"},e)),o?E("div",{class:"thumbnail"},E("img",{src:o})):E("div",{class:"description"},B.flatMap((s,a)=>s.type==="line"?[E("p",{key:a},s.nodes.map(c=>E(Va,{node:c,project:A})))]:[]))))},Va=({node:A,project:e})=>{switch(A.type){case"code":return E("code",null,A.text);case"formula":return E(Kf,{node:A});case"commandLine":return E("code",null,A.symbol," $",A.text);case"helpfeel":return E("code",null,"? ",A.text);case"quote":case"strong":case"decoration":return E(W,null,A.nodes.map(t=>E(Va,{node:t,project:e})));case"icon":case"strongIcon":return E(Pf,{node:A,project:e});case"hashTag":return E(Vf,{node:A});case"link":return E(qf,{node:A});case"plain":case"blank":return E(W,null,A.text);default:return E(W,null)}},Kf=({node:{formula:A}})=>{let{ref:e,error:t,setFormula:o}=cg("");return o(A),E("span",{className:formula ${t?" error":""}},t?E("code",null,A):E("span",{className:"katex-display",ref:e}))},Pf=({node:{pathType:A,path:e},project:t})=>{let[o,g]=A==="relative"?[t,e]:e.match(/\/([\w\-]+)\/(.+)$/)?.slice?.(1)??[t,e];return E("img",{class:"icon",src:/api/pages/${o}/${V(g)}/icon})},Vf=({node:{href:A}})=>E("span",{class:"page-link"},"#",A),qf=({node:{pathType:A,href:e,content:t}})=>A!=="absolute"?E("span",{class:"page-link"},e):E("span",{class:"link"},t||e);var rA=(A,e)=>/${A}/${z(e)},Lr=A=>{let e=A.match("/([^/]+)/(.+)");if(!e)throw SyntaxError("${A}" cannnot match "/(^/+)/(.+)");return{project:e[1],titleLc:e[2]}};var tE=Symbol.for("immer-nothing"),qa=Symbol.for("immer-draftable"),tA=Symbol.for("immer-state");function De(A,...e){throw new Error(Immer minified error nr: ${A}. Full error at: https://bit.ly/3cXEKWf)}var wo=Object.getPrototypeOf;function mo(A){return!!A&&!!A[tA]}function Ke(A){return A?oE(A)||Array.isArray(A)||!!A[qa]||!!A.constructor?.[qa]||Wr(A)||Xr(A):!1}var _f=Object.prototype.constructor.toString();function oE(A){if(!A||typeof A!="object")return!1;let e=wo(A);if(e===null)return!0;let t=Object.hasOwnProperty.call(e,"constructor")&&e.constructor;return t===Object?!0:typeof t=="function"&&Function.toString.call(t)===_f}function lg(A,e){Hr(A)===0?Reflect.ownKeys(A).forEach(t=>{e(t,A[t],A)}):A.forEach((t,o)=>e(o,t,A))}function Hr(A){let e=A[tA];return e?e.type_:Array.isArray(A)?1:Wr(A)?2:Xr(A)?3:0}function mB(A,e){return Hr(A)===2?A.has(e):Object.prototype.hasOwnProperty.call(A,e)}function gE(A,e,t){let o=Hr(A);o===2?A.set(e,t):o===3?A.add(t):A[e]=t}function $f(A,e){return A===e?A!==0||1/A===1/e:A!==A&&e!==e}function Wr(A){return A instanceof Map}function Xr(A){return A instanceof Set}function UA(A){return A.copy_||A.base_}function hB(A,e){if(Wr(A))return new Map(A);if(Xr(A))return new Set(A);if(Array.isArray(A))return Array.prototype.slice.call(A);let t=oE(A);if(e===!0||e==="class_only"&&!t){let o=Object.getOwnPropertyDescriptors(A);delete o[tA];let g=Reflect.ownKeys(o);for(let r=0;r<g.length;r++){let n=g[r],Q=o[n];Q.writable===!1&&(Q.writable=!0,Q.configurable=!0),(Q.get||Q.set)&&(o[n]={configurable:!0,writable:!0,enumerable:Q.enumerable,value:A[n]})}return Object.create(wo(A),o)}else{let o=wo(A);if(o!==null&&t)return{...A};let g=Object.create(o);return Object.assign(g,A)}}function MB(A,e=!1){return zr(A)||mo(A)||!Ke(A)||(Hr(A)>1&&(A.set=A.add=A.clear=A.delete=AM),Object.freeze(A),e&&Object.entries(A).forEach(([t,o])=>MB(o,!0))),A}function AM(){De(2)}function zr(A){return Object.isFrozen(A)}var dB={};function _t(A){let e=dB[A];return e||De(0,A),e}function eM(A,e){dB[A]||(dB[A]=e)}var Dg;function Tr(){return Dg}function tM(A,e){return{drafts_:[],parent_:A,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function _a(A,e){e&&(_t("Patches"),A.patches_=[],A.inversePatches_=[],A.patchListener_=e)}function uB(A){fB(A),A.drafts_.forEach(oM),A.drafts_=null}function fB(A){A===Dg&&(Dg=A.parent_)}function $a(A){return Dg=tM(Dg,A)}function oM(A){let e=A[tA];e.type_===0||e.type_===1?e.revoke_():e.revoked_=!0}function AE(A,e){e.unfinalizedDrafts_=e.drafts_.length;let t=e.drafts_[0];return A!==void 0&&A!==t?(t[tA].modified_&&(uB(e),De(4)),Ke(A)&&(A=Sr(e,A),e.parent_||vr(e,A)),e.patches_&&_t("Patches").generateReplacementPatches_(t[tA].base_,A,e.patches_,e.inversePatches_)):A=Sr(e,t,[]),uB(e),e.patches_&&e.patchListener_(e.patches_,e.inversePatches_),A!==tE?A:void 0}function Sr(A,e,t){if(zr(e))return e;let o=e[tA];if(!o)return lg(e,(g,r)=>eE(A,o,e,g,r,t)),e;if(o.scope_!==A)return e;if(!o.modified_)return vr(A,o.base_,!0),o.base_;if(!o.finalized_){o.finalized_=!0,o.scope_.unfinalizedDrafts_--;let g=o.copy_,r=g,n=!1;o.type_===3&&(r=new Set(g),g.clear(),n=!0),lg(r,(Q,B)=>eE(A,o,g,Q,B,t,n)),vr(A,g,!1),t&&A.patches_&&_t("Patches").generatePatches_(o,t,A.patches_,A.inversePatches_)}return o.copy_}function eE(A,e,t,o,g,r,n){if(mo(g)){let Q=r&&e&&e.type_!==3&&!mB(e.assigned_,o)?r.concat(o):void 0,B=Sr(A,g,Q);if(gE(t,o,B),mo(B))A.canAutoFreeze_=!1;else return}else n&&t.add(g);if(Ke(g)&&!zr(g)){if(!A.immer_.autoFreeze_&&A.unfinalizedDrafts_<1)return;Sr(A,g),(!e||!e.scope_.parent_)&&typeof o!="symbol"&&Object.prototype.propertyIsEnumerable.call(t,o)&&vr(A,g)}}function vr(A,e,t=!1){!A.parent_&&A.immer_.autoFreeze_&&A.canAutoFreeze_&&MB(e,t)}function gM(A,e){let t=Array.isArray(A),o={type_:t?1:0,scope_:e?e.scope_:Tr(),modified_:!1,finalized_:!1,assigned_:{},parent_:e,base_:A,draft_:null,copy_:null,revoke_:null,isManual_:!1},g=o,r=NB;t&&(g=[o],r=pg);let{revoke:n,proxy:Q}=Proxy.revocable(g,r);return o.draft_=Q,o.revoke_=n,Q}var NB={get(A,e){if(e===tA)return A;let t=UA(A);if(!mB(t,e))return rM(A,t,e);let o=t[e];return A.finalized_||!Ke(o)?o:o===pB(A.base_,e)?(wB(A),A.copy_[e]=wg(o,A)):o},has(A,e){return e in UA(A)},ownKeys(A){return Reflect.ownKeys(UA(A))},set(A,e,t){let o=rE(UA(A),e);if(o?.set)return o.set.call(A.draft_,t),!0;if(!A.modified_){let g=pB(UA(A),e),r=g?.[tA];if(r&&r.base_===t)return A.copy_[e]=t,A.assigned_[e]=!1,!0;if($f(t,g)&&(t!==void 0||mB(A.base_,e)))return!0;wB(A),ze(A)}return A.copy_[e]===t&&(t!==void 0||e in A.copy_)||Number.isNaN(t)&&Number.isNaN(A.copy_[e])||(A.copy_[e]=t,A.assigned_[e]=!0),!0},deleteProperty(A,e){return pB(A.base_,e)!==void 0||e in A.base_?(A.assigned_[e]=!1,wB(A),ze(A)):delete A.assigned_[e],A.copy_&&delete A.copy_[e],!0},getOwnPropertyDescriptor(A,e){let t=UA(A),o=Reflect.getOwnPropertyDescriptor(t,e);return o&&{writable:!0,configurable:A.type_!==1||e!=="length",enumerable:o.enumerable,value:t[e]}},defineProperty(){De(11)},getPrototypeOf(A){return wo(A.base_)},setPrototypeOf(){De(12)}},pg={};lg(NB,(A,e)=>{pg[A]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}});pg.deleteProperty=function(A,e){return pg.set.call(this,A,e,void 0)};pg.set=function(A,e,t){return NB.set.call(this,A[0],e,t,A[0])};function pB(A,e){let t=A[tA];return(t?UA(t):A)[e]}function rM(A,e,t){let o=rE(e,t);return o?"value"in o?o.value:o.get?.call(A.draft_):void 0}function rE(A,e){if(!(e in A))return;let t=wo(A);for(;t;){let o=Object.getOwnPropertyDescriptor(t,e);if(o)return o;t=wo(t)}}function ze(A){A.modified_||(A.modified_=!0,A.parent_&&ze(A.parent_))}function wB(A){A.copy_||(A.copy_=hB(A.base_,A.scope_.immer_.useStrictShallowCopy_))}var QM=class{constructor(A){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,t,o)=>{if(typeof e=="function"&&typeof t!="function"){let r=t;t=e;let n=this;return function(Q=r,...B){return n.produce(Q,C=>t.call(this,C,...B))}}typeof t!="function"&&De(6),o!==void 0&&typeof o!="function"&&De(7);let g;if(Ke(e)){let r=$a(this),n=wg(e,void 0),Q=!0;try{g=t(n),Q=!1}finally{Q?uB(r):fB(r)}return _a(r,o),AE(g,r)}else if(!e||typeof e!="object"){if(g=t(e),g===void 0&&(g=e),g===tE&&(g=void 0),this.autoFreeze_&&MB(g,!0),o){let r=[],n=[];_t("Patches").generateReplacementPatches_(e,g,r,n),o(r,n)}return g}else De(1,e)},this.produceWithPatches=(e,t)=>{if(typeof e=="function")return(r,...n)=>this.produceWithPatches(r,Q=>e(Q,...n));let o,g;return[this.produce(e,t,(r,n)=>{o=r,g=n}),o,g]},typeof A?.autoFreeze=="boolean"&&this.setAutoFreeze(A.autoFreeze),typeof A?.useStrictShallowCopy=="boolean"&&this.setUseStrictShallowCopy(A.useStrictShallowCopy)}createDraft(A){Ke(A)||De(8),mo(A)&&(A=nM(A));let e=$a(this),t=wg(A,void 0);return t[tA].isManual_=!0,fB(e),t}finishDraft(A,e){let t=A&&A[tA];(!t||!t.isManual_)&&De(9);let{scope_:o}=t;return _a(o,e),AE(void 0,o)}setAutoFreeze(A){this.autoFreeze_=A}setUseStrictShallowCopy(A){this.useStrictShallowCopy_=A}applyPatches(A,e){let t;for(t=e.length-1;t>=0;t--){let g=e[t];if(g.path.length===0&&g.op==="replace"){A=g.value;break}}t>-1&&(e=e.slice(t+1));let o=_t("Patches").applyPatches_;return mo(A)?o(A,e):this.produce(A,g=>o(g,e))}};function wg(A,e){let t=Wr(A)?_t("MapSet").proxyMap_(A,e):Xr(A)?_t("MapSet").proxySet_(A,e):gM(A,e);return(e?e.scope_:Tr()).drafts_.push(t),t}function nM(A){return mo(A)||De(10,A),QE(A)}function QE(A){if(!Ke(A)||zr(A))return A;let e=A[tA],t;if(e){if(!e.modified_)return e.base_;e.finalized_=!0,t=hB(A,e.scope_.immer_.useStrictShallowCopy_)}else t=hB(A,!0);return lg(t,(o,g)=>{gE(t,o,QE(g))}),e&&(e.finalized_=!1),t}function nE(){class A extends Map{constructor(B,C){super(),this[tA]={type_:2,parent_:C,scope_:C?C.scope_:Tr(),modified_:!1,finalized_:!1,copy_:void 0,assigned_:void 0,base_:B,draft_:this,isManual_:!1,revoked_:!1}}get size(){return UA(this[tA]).size}has(B){return UA(this[tA]).has(B)}set(B,C){let i=this[tA];return n(i),(!UA(i).has(B)||UA(i).get(B)!==C)&&(t(i),ze(i),i.assigned_.set(B,!0),i.copy_.set(B,C),i.assigned_.set(B,!0)),this}delete(B){if(!this.has(B))return!1;let C=this[tA];return n(C),t(C),ze(C),C.base_.has(B)?C.assigned_.set(B,!1):C.assigned_.delete(B),C.copy_.delete(B),!0}clear(){let B=this[tA];n(B),UA(B).size&&(t(B),ze(B),B.assigned_=new Map,lg(B.base_,C=>{B.assigned_.set(C,!1)}),B.copy_.clear())}forEach(B,C){let i=this[tA];UA(i).forEach((I,s,a)=>{B.call(C,this.get(s),s,this)})}get(B){let C=this[tA];n(C);let i=UA(C).get(B);if(C.finalized_||!Ke(i)||i!==C.base_.get(B))return i;let I=wg(i,C);return t(C),C.copy_.set(B,I),I}keys(){return UA(this[tA]).keys()}values(){let B=this.keys();return{[Symbol.iterator]:()=>this.values(),next:()=>{let C=B.next();return C.done?C:{done:!1,value:this.get(C.value)}}}}entries(){let B=this.keys();return{[Symbol.iterator]:()=>this.entries(),next:()=>{let C=B.next();if(C.done)return C;let i=this.get(C.value);return{done:!1,value:[C.value,i]}}}}[Symbol.iterator](){return this.entries()}}function e(Q,B){return new A(Q,B)}function t(Q){Q.copy_||(Q.assigned_=new Map,Q.copy_=new Map(Q.base_))}class o extends Set{constructor(B,C){super(),this[tA]={type_:3,parent_:C,scope_:C?C.scope_:Tr(),modified_:!1,finalized_:!1,copy_:void 0,base_:B,draft_:this,drafts_:new Map,revoked_:!1,isManual_:!1}}get size(){return UA(this[tA]).size}has(B){let C=this[tA];return n(C),C.copy_?!!(C.copy_.has(B)||C.drafts_.has(B)&&C.copy_.has(C.drafts_.get(B))):C.base_.has(B)}add(B){let C=this[tA];return n(C),this.has(B)||(r(C),ze(C),C.copy_.add(B)),this}delete(B){if(!this.has(B))return!1;let C=this[tA];return n(C),r(C),ze(C),C.copy_.delete(B)||(C.drafts_.has(B)?C.copy_.delete(C.drafts_.get(B)):!1)}clear(){let B=this[tA];n(B),UA(B).size&&(r(B),ze(B),B.copy_.clear())}values(){let B=this[tA];return n(B),r(B),B.copy_.values()}entries(){let B=this[tA];return n(B),r(B),B.copy_.entries()}keys(){return this.values()}[Symbol.iterator](){return this.values()}forEach(B,C){let i=this.values(),I=i.next();for(;!I.done;)B.call(C,I.value,I.value,this),I=i.next()}}function g(Q,B){return new o(Q,B)}function r(Q){Q.copy_||(Q.copy_=new Set,Q.base_.forEach(B=>{if(Ke(B)){let C=wg(B,Q);Q.drafts_.set(B,C),Q.copy_.add(C)}else Q.copy_.add(B)}))}function n(Q){Q.revoked_&&De(3,JSON.stringify(UA(Q)))}eM("MapSet",{proxyMap_:e,proxySet_:g})}var Ce=new QM,Kr=Ce.produce,$z=Ce.produceWithPatches.bind(Ce),AK=Ce.setAutoFreeze.bind(Ce),eK=Ce.setUseStrictShallowCopy.bind(Ce),tK=Ce.applyPatches.bind(Ce),oK=Ce.createDraft.bind(Ce),gK=Ce.finishDraft.bind(Ce);nE();var BE=A=>{let e=0;for(let t of A)if(t&&(t.exists||(e+=(t.linked?.length??0)+(t.projectLinked?.length??0),e>1)))return!1;return e<2},CE=(A,e)=>Kr(A,t=>{if(!t)return e;if(t.updated<e.updated){let{lines:o,linked:g,projectLinked:r,...n}=e;Object.assign(t,n),yB(e)||(t.lines=o),g&&(t.linked??=g),r&&(t.projectLinked??=r);return}yB(t)&&!yB(e)&&(t.lines=e.lines),e.linked&&(e.isLinkedCorrect||!t.isLinkedCorrect&&(t.linked?.length??0)<=e.linked.length)&&(t.linked=e.linked),e.projectLinked&&(t.projectLinked=e.projectLinked)}),yB=A=>A.lines[0].id==="dummy";var iE=(A,e)=>{let t=new Map,o=z(e.title);for(let B of e.links){let C=BM(A,B);C.linked=[o],t.set(rA(A,B),C)}let g=rA(A,o),r=e.projectLinks.map(B=>{let C=Lr(B);return rA(C.project,C.titleLc)}),n={...Pr(A,e),linked:[],projectLinked:[]};t.set(g,n);let Q=e.links.map(B=>z(B));for(let B of e.relatedPages.links1hop){B.linksLc.includes(o)&&n.linked.push(B.titleLc);for(let s of B.linksLc.filter(a=>Q.includes(a))){let a=rA(A,s),c=t.get(a);if(!c)throw Error(storage already must have "${a}");if(!c.linked){c.linked=[B.titleLc];continue}c.linked.push(B.titleLc)}let C=rA(A,B.titleLc),i=Pr(A,B),I=t.get(C)?.linked;I&&(i.linked=I),t.set(C,i)}for(let B of e.relatedPages.projectLinks1hop){let C=rA(B.projectName,B.titleLc);r.includes(C)||n.projectLinked.push(C);let i=Pr(B.projectName,B),I=t.get(C)?.projectLinked;I&&(i.projectLinked=I),t.set(C,i)}n.isLinkedCorrect=!0;for(let B of e.relatedPages.links2hop){for(let s of B.linksLc){let a=rA(A,s),c=t.get(a);if(!c)throw Error(storage already must have "${a}");if(!c.linked){c.linked=[B.titleLc];continue}c.linked.push(B.titleLc)}let C=rA(A,B.titleLc),i=Pr(A,B),I=t.get(C)?.linked;I&&(i.linked=I),t.set(C,i)}return t},Pr=(A,e)=>({project:A,titleLc:"titleLc"in e?e.titleLc:z(e.title),exists:"persistent"in e?e.persistent:!0,descriptions:e.descriptions,image:e.image,lines:"lines"in e?e.lines:[e.title,...e.descriptions].map(t=>({text:t,id:"dummy",userId:"dummy",updated:e.updated,created:e.updated})),updated:e.updated,isLinkedCorrect:!1}),BM=(A,e)=>({project:A,titleLc:z(e),exists:!1,descriptions:[],image:null,lines:[{text:e,id:"dummy",userId:"dummy",updated:0,created:0}],updated:0,isLinkedCorrect:!1});var Vr=lt("ScrapBubble:bubble.ts"),GB=new Map,qr=new Set,kB=Zr();function*sE(A){for(let e of A)yield GB.get(e)}var aE=(A,e)=>kB.on(A,e),EE=(A,e)=>kB.off(A,e),cE=async(A,e,t,o)=>{let g=[];for(let r of[...e].reverse()){let n=rA(r,A);qr.has(n)||g.push(CM(r,A,t,o))}await Promise.all(g)},IE=0,CM=async(A,e,t,o)=>{let g=rA(A,e);if(qr.has(g))return;qr.add(g);let r=IE++,n=${r} Check update ${g};Vr.time(n);try{let Q=ee.toRequest(A,e,{followRename:!0,projects:[...t]});for await(let[B,C]of Rr(Q,{ignoreSearch:!0,saveFailedResponse:!0})){Vr.debug(${r}${B} ${g});let i=await ee.fromResponse(C);if(i.ok){let I=iE(A,i.value);for(let[s,a]of I){let c=GB.get(s),l=CE(c,a);l&&c!==l&&(GB.set(s,l),kB.dispatch(s,a))}}if(o?.ignoreFetch===!0||B==="cache"&&!Ua(C,o?.maxAge??60))break}}catch(Q){Vr.error(Q)}finally{qr.delete(g),Vr.timeEnd(n),IE--}};var lE=lt("ScrapBubble:useBubbleData.ts"),ho=A=>{let[e,t]=L(YB(A));return X(()=>{t(YB(A));let o,g=()=>{clearTimeout(o),o=setTimeout(()=>{lE.debug(Update ${A.length} pages),t(YB(A))},10)};return A.forEach(r=>aE(r,g)),()=>A.forEach(r=>EE(r,g))},A),e},YB=A=>{let e=[...sE(A)].flatMap(t=>t?[t]:[]);return lE.debug(Required: ${A.length} pages, ${e.length} found,e),e};var DE=({source:A,linked:e,externalLinked:t,projectsForSort:o,...g})=>{let r=J(()=>[...e.keys(),...t.keys()],[e,t]),n=ho(r),Q=J(()=>[...o],[o]),B=J(()=>{let i=(I,s)=>{let a=Q.indexOf(I.project),c=Q.indexOf(s.project);return a===c?s.updated-I.updated:a<0?1:c<0?-1:a-c};return[...n].sort(i)},[n,Q]),C=J(()=>({bottom:${A.position.bottom}px,maxWidth:${A.position.maxWidth}px,..."left"in A.position?{left:${A.position.left}px}:{right:${A.position.right}px}}),[A.position]);return E("ul",{className:"card-bubble",style:C,onClick:g.onClick},B.map(({project:i,titleLc:I,lines:[{text:s}],descriptions:a,image:c})=>{let l=rA(i,I),D=e.get(l)??t.get(l);return E("li",{key:l},E(Pa,{project:i,title:s,linkTo:D,descriptions:a,thumbnail:c??"",...g}))}))};var uo=A=>{if(A.pathType==="root"){let[,e="",t=""]=A.href.match(/\/([\w\-]+)(?:\/?|\/(.*))$/)??["","",""];if(e==="")throw SyntaxError(Failed to get a project name from "${A.href}");let[,o]=t?.match?.(/#([a-f\d]{24,32})$/)??["",""];return t===""?{project:e}:o===""?{project:e,title:t}:{project:e,title:t.slice(0,-1-o.length),hash:o}}else{let[,e]=A.href.match(/#([a-f\d]{24,32})$/)??["",""];return e===""?{title:A.href}:{title:A.href.slice(0,-1-e.length),hash:e}}};var bB=(A,e)=>e.some(t=>{let o=!A.project;switch(t.type){case"hashTag":return o&&z(t.href)===A.titleLc;case"link":{if(t.pathType=="absolute"||t.pathType==="relative"!==o)return!1;let{project:g,title:r=""}=uo({pathType:t.pathType,href:t.href});return o?!g&&z(r)===A.titleLc:g===A.project&&z(r)===A.titleLc}case"quote":case"strong":case"decoration":return bB(A,t.nodes)}});var Dt=Fn({title:"",project:"",whiteList:new Set,bubble:()=>{},hide:()=>{},delay:0,prefetch:()=>{}}),wE=({lines:A,project:e,title:t,whiteList:o,noIndent:g,hash:r,linkTo:n,...Q})=>{let B=J(()=>A.flatMap(a=>typeof a=="string"?[]:[a.id]),[A]),C=J(()=>{let a=0;return hA(A.map(c=>typeof c=="string"?c:c.text).join( ),{hasTitle:!0}).map(c=>{switch(c.type){case"title":case"line":return{...c,id:B[a++]};case"codeBlock":{let l=a;return a+=c.content.split(
).length+1,{...c,ids:B.slice(l,a)}}case"table":{let l=a;return a+=c.cells.length+1,{...c,ids:B.slice(l,a)}}}})},[A,B]),i=J(()=>{if(r&&B.includes(r))return r;if(n)return C.find(a=>a.type!=="line"?!1:bB(n,a.nodes))?.id},[C,B,r,n?.project,n?.titleLc]),I=kA(null);X(()=>{if(!i)return;let a=I.current?.querySelector(data-id="${i}"),c=globalThis.scrollY;a?.scrollIntoView?.({block:"center"}),globalThis.scroll(0,c)},[i]);let s=qt(e);return E("div",{className:"lines","data-theme":s,ref:I},E(Dt.Provider,{value:{project:e,title:t,whiteList:o,...Q}},C.map(a=>{switch(a.type){case"title":return E(W,null,E(Mo,{key:a.id,index:a.id,indent:0,noIndent:g,permalink:a.id===i},E("a",{className:"page-link",type:"link",href:/${e}/${V(a.text)},rel:e===scrapbox.Project.name?"route":"noopener noreferrer",target:e===scrapbox.Project.name?"":"_blank"},a.text)),E("hr",null));case"codeBlock":return E(iM,{key:a.ids[0],block:a,noIndent:g,ids:a.ids,scrollId:i});case"table":return E(IM,{key:a.ids[0],block:a,noIndent:g,ids:a.ids,scrollId:i});case"line":return E(Mo,{key:a.id,index:a.id,indent:a.indent,noIndent:g,permalink:a.id===i},a.nodes.length>0?a.nodes.map(c=>E(fo,{node:c})):E("br",null))}})))},Mo=({index:A,indent:e,noIndent:t,children:o,permalink:g})=>E("div",{className:line${g?" permalink":""},"data-id":A,"data-indent":e,style:{"margin-left":t?"":${1*e}em}},o),iM=({block:{fileName:A,content:e,indent:t},ids:o,scrollId:g})=>{let{project:r,title:n}=Ct(Dt),[Q,B]=L(""),C=b(async i=>{i.preventDefault(),i.stopPropagation();try{await navigator.clipboard.writeText(e),B("Copied"),await nA(1e3),B("")}catch(I){alert(Failed to copy the code block Error:${I.message})}},[e]);return E(W,null,E(Mo,{index:o[0],indent:t,permalink:o[0]===g},E("span",{className:"code-block"},E("span",{className:"code-block-start"},E("a",{href:/api/code/${r}/${V(n)}/${A},target:"_blank"},A)),E("span",{className:"copy",title:"Copy",onClick:C},Q))),E(W,null,e.split(
).map((i,I)=>E(Mo,{index:o[I+1],indent:t,permalink:o[I+1]===g},E("code",{className:"code-block"},i)))))},IM=({block:{fileName:A,cells:e,indent:t},ids:o,scrollId:g})=>{let{project:r,title:n}=Ct(Dt);return E(W,null,E(Mo,{index:o[0],indent:t,permalink:o[0]===g},E("span",{className:"table-block"},E("span",{className:"table-block-start"},E("a",{href:/api/table/${r}/${V(n)}/${A}.csv,target:"_blank"},A)))),E(W,null,e.map((Q,B)=>E(Mo,{index:o[B+1],indent:t,permalink:o[B+1]===g},E("span",{className:"table-block table-block-row"},Q.map((C,i)=>E("span",{className:cell col-${i}},C.map(I=>E(fo,{node:I})))))))))},fo=({node:A})=>{switch(A.type){case"code":return E("code",{className:"code"},A.text);case"formula":return E(sM,{node:A});case"commandLine":return E(EM,{node:A});case"helpfeel":return E("code",{className:"helpfeel"},E("span",{className:"prefix"},"?")," ",E("span",{className:"entry"},A.text));case"quote":return E("blockquote",{className:"quote"},A.nodes.map(e=>E(fo,{node:e})));case"strong":return E("strong",null,A.nodes.map(e=>E(fo,{node:e})));case"decoration":return E(aM,{node:A});case"plain":case"blank":return E(W,null,A.text);case"hashTag":return E(DM,{node:A});case"link":return E(pM,{node:A});case"googleMap":return E(cM,{node:A});case"icon":return E(pE,{node:A});case"strongIcon":return E(pE,{node:A,strong:!0});case"image":return E(lM,{node:A});case"strongImage":return E("img",{className:"image strong-image",src:A.src});case"numberList":return E(W,null,${A.number}. ,A.nodes.map(e=>E(fo,{node:e})))}},sM=({node:{formula:A}})=>{let{ref:e,error:t,setFormula:o}=cg("");return o(A),E("span",{className:formula ${t?" error":""}},t?E("code",null,A):E("span",{className:"katex-display",ref:e}))},aM=({node:{decos:A,nodes:e}})=>E("span",{className:A.map(t=>deco-${t}).join(" ")},e.map(t=>E(fo,{node:t}))),EM=({node:A})=>{let[e,t]=L(""),o=b(async g=>{g.preventDefault(),g.stopPropagation();try{await navigator.clipboard.writeText(A.text),t("Copied"),await nA(1e3),t("")}catch(r){alert(Failed to copy the code block
Error:${r.message})}},[A.text]);return E(W,null,E("code",{className:"cli"},E("span",{className:"prefix"},A.symbol)," ",E("span",{className:"command"},A.text)),E("span",{className:"tool-buttons"},E("span",{title:"Copy",className:"copy",onClick:o},e)))},cM=({node:{place:A,latitude:e,longitude:t,zoom:o}})=>E("span",{className:"pointing-device-map"},E("a",{href:https://www.google.com/maps/search/${A}/@${e},${t},${o}z,rel:"noopner noreferrer",target:"_blank"},E("img",{className:"google-map",src:/api/google-map/static-map?center=${e}%2C${t}&markers=${A}&zoom=${o}&_csrf=${globalThis._csrf}}))),pE=({node:{pathType:A,path:e},strong:t})=>{let{project:o}=Ct(Dt),[g,r]=A==="relative"?[o,e]:e.match(/\/([\w\-]+)\/(.+)$/)?.slice?.(1)??[o,e],n=V(r);return E("a",{href:/${g}/${n},rel:g===scrapbox.Project.name?"route":"noopener noreferrer",target:g===scrapbox.Project.name?"":"_blank"},E("img",{className:t?"icon strong-icon":"icon",alt:r,src:/api/pages/${g}/${n}/icon},r))},lM=({node:{link:A,src:e}})=>{let t=A||(/https:\/\/gyazo\.com\/[^\/]+\/thumb\/1000/.test(e)?e.slice(0,-11):e);return E("a",{className:A?"link":"",href:t,rel:"noopner noreferrer",target:"_blank"},E("img",{className:"image",src:e}))},DM=({node:{href:A}})=>{let{project:e}=Ct(Dt),t=mE(e,A),o=hE(e,A,"hashtag");return E("a",{href:/${e}/${V(A)},className:page-link${t?" empty-page-link":""},type:"hashTag",rel:e===scrapbox.Project.name?"route":"noopener noreferrer",target:e===scrapbox.Project.name?"":"_blank",onPointerEnter:o},"#",A)},pM=({node:{pathType:A,...e}})=>{switch(A){case"relative":case"root":return E(wM,{pathType:A,href:e.href});case"absolute":{let t=Gs({pathType:A,...e});switch(t.type){case"youtube":return E(mM,{...t});case"vimeo":return E(hM,{...t});case"spotify":return E(dM,{...t});case"anchor-fm":return E(uM,{...t});case"audio":return E(fM,{...t});case"video":return E(NM,{...t});case"absoluteLink":return E("a",{className:"link",href:t.href,rel:"noopener noreferrer",target:"_blank"},t.content||t.href)}}}},wM=({pathType:A,href:e})=>{let{project:t}=Ct(Dt),{project:o=t,title:g,hash:r=""}=uo({pathType:A,href:e}),n=hE(o,g,"link",r),Q=mE(o,g??"");return E("a",{className:page-link${g!==void 0&&Q?" empty-page-link":""},type:"link",href:/${o}${g===void 0?"":/${V(g)}${r===""?"":#${r}}},rel:o===scrapbox.Project.name?"route":"noopener noreferrer",target:o===scrapbox.Project.name?"":"_blank",onPointerEnter:n},e)},mM=A=>{A.params.append("autoplay","0");let e=A.pathType==="list"?https://www.youtube.com/embed/?${A.params.toString()}&list=${A.listId}:https://www.youtube.com/embed/${A.videoId}?${A.params.toString()};return E("div",{className:"iframe-video-player"},E("iframe",{src:e,allowFullScreen:!0,type:"text/html"}))},hM=({videoId:A})=>E("div",{className:"iframe-video-player"},E("iframe",{src:https://player.vimeo.com/video/${A},allowFullScreen:!0,type:"text/html"})),dM=A=>E("div",{className:"iframe-video-player"},E("iframe",{className:spotify type-${A.pathType},src:https://open.spotify.com/embed/${A.pathType}/${A.videoId},allowFullScreen:!0,type:"text/html",scrolling:"no"})),uM=A=>E("div",{className:"iframe-video-player"},E("iframe",{className:"anchor-fm",src:A.href.replace("/episodes/","/embed/episodes/"),allowFullScreen:!0,type:"text/html",scrolling:"no"})),fM=A=>A.content===""?E("audio",{className:"audio-player",preload:"none",controls:!0,src:A.href}):E(MM,{...A}),MM=({href:A,content:e})=>{let t=kA(null),o=b(()=>{t.current?.paused?(t.current.currentTime=0,t.current.play()):t.current?.pause?.()},[]);return E("span",{className:"audio-link"},E("a",{href:A,rel:"noopener noreferrer",target:"_blank"},e),E("span",{className:"play",onClick:o},"♬"),E("audio",{preload:"none",src:A,ref:t}))},NM=({href:A})=>E("div",{className:"video-player"},E("video",{class:"video",style:{display:"inline-block"},controls:!0,loop:!0,src:A})),mE=(A,e)=>{let{whiteList:t}=Ct(Dt),o=J(()=>(t.has(A)?[...t]:[A,...t]).map(r=>rA(r,e)),[t,A]),g=ho(o);return J(()=>BE(g),g)},hE=(A,e,t,o)=>{let{delay:g,bubble:r,prefetch:n}=Ct(Dt);return b(async({currentTarget:Q})=>{e&&(n(A,e),await Do(Q,g)&&r({project:A,title:e,hash:o,type:t,position:po(Q)}))},[A,e,o,t,g,n,r])};var dE=({pages:A,onClick:e,source:t,whiteList:o,...g})=>{let[r,n]=L(rA(A[0].project,A[0].titleLc)),Q=J(()=>({top:${t.position.top}px,maxWidth:${t.position.maxWidth}px,..."left"in t.position?{left:${t.position.left}px}:{right:${t.position.right}px}}),[t.position]);return E("div",{className:"text-bubble",style:Q,onClick:e},A.length>1&&E("div",{role:"tablist"},A.map(B=>E(yM,{key:rA(B.project,B.titleLc),project:B.project,titleLc:B.titleLc,selected:r===rA(B.project,B.titleLc),tabSelector:n}))),A.map(B=>E(GM,{key:rA(B.project,B.titleLc),selected:r===rA(B.project,B.titleLc),...B,title:B.lines[0].text,hash:t.hash,linkTo:t.linkTo,whiteList:o,...g})))},yM=({project:A,titleLc:e,tabSelector:t,selected:o})=>{let g=b(()=>t(rA(A,e)),[A,e]),r=qt(A);return E("button",{role:"tab","aria-selected":o,"data-theme":r,tabIndex:-1,onClick:g},A)},GM=({selected:A,...e})=>{let t=qt(e.project);return E("div",{role:"tabpanel","data-theme":t,hidden:!A},E(wE,{...e}))};var uE=lt("ScrapBubble:Bubble.tsx"),fE=({source:A,parentTitles:e,whiteList:t,...o})=>{let g=J(()=>t.has(A.project)?new Set([A.project,...t]):new Set([A.project]),[t,A.project]),[r,n,Q]=YM(A,g,t,e);return E(W,null,kM(Q)&&E(dE,{pages:Q,source:A,whiteList:t,onClick:o.hide,...o}),E(DE,{linked:r,externalLinked:n,onClick:o.hide,source:A,projectsForSort:g,...o}))},kM=A=>A.length>0,YM=(A,e,t,o)=>{let[[g,r,n],Q]=L([new Map,new Map,[]]),B=J(()=>{let I=[...e].map(s=>rA(s,A.title));return uE.debug("projects",I),I},[e,A.title]),C=ho(B),i=J(()=>o.map(I=>z(I)),[o]);return LI(()=>{let I=new Map,s=new Map,a=[];for(let c of C){let l={project:c.project,titleLc:c.titleLc};for(let m of c.projectLinked??[]){let{project:N,titleLc:u}=Lr(m);i.includes(u)&&t.has(N)||s.has(m)||s.set(m,l)}if(!t.has(c.project))continue;let D={titleLc:c.titleLc};for(let m of c.linked??[]){if(i.includes(m))continue;let N=rA(c.project,m);I.has(N)||I.set(N,D)}i.includes(c.titleLc)||c.exists&&a.push(c)}Q(Kr(c=>{uE.debug(depth: ${i.length}, bubbled from ${rA(A.project,A.title)}, bubbles,,C,"before",c[0],"internal cards,",I,"external cards",s);for(let l of c[0].keys())I.has(l)||c[0].delete(l);for(let[l,D]of I)c[0].set(l,D);for(let l of c[1].keys())s.has(l)||c[1].delete(l);for(let[l,D]of s)c[1].set(l,D);c[2]=a}))},[C,t,i]),[g,r,n]};var ME=(A,e)=>{if(A instanceof URL)return A;try{return new URL(A)}catch(t){if(!(t instanceof TypeError))throw t;if(!e||!/^\.\/|^\.\.\/|^\//.test(A))return A;try{return new URL(A,e)}catch(o){if(!(o instanceof TypeError))throw o;return A}}};var NE=A=>{let e=J(()=>ME(A.style,import.meta.url),[A.style]);return E(W,null,e!==""&&(e instanceof URL?E("link",{rel:"stylesheet",href:e.href}):E("style",null,e)))};var yE=String.raw*{box-sizing:border-box}a{background-color:transparent;text-decoration:none;cursor:pointer}img{display:inline-block;max-width:100%;max-height:100px}code{font-family:var(--code-text-font, Menlo, Monaco, Consolas, "Courier New", monospace);font-size:90%;color:var(--code-color, #342d9c);background-color:var(--code-bg, rgba(0,0,0,.04));padding:0;white-space:pre-wrap;word-wrap:break-word}blockquote{background-color:var(--quote-bg-color, rgba(0,0,0,.05));display:block;border-left:solid 4px #a0a0a0;padding-left:4px;margin:0}strong{font-weight:700}iframe{display:inline-block;margin:3px 0;vertical-align:middle;max-width:100%;width:640px;height:360px;border:0}audio{display:inline-block;vertical-align:middle;white-space:initial;max-width:100%}.formula{margin:auto 6px}.formula.error code{color:#fd7373}.katex-display{display:inline-block!important;margin:0!important;text-align:inherit!important}.error .katex-display{display:none}.cli{border-radius:4px}.cli .prefix{color:#9c6248}.helpfeel{background-color:#fbebdd;border-radius:4px;padding:3px!important}.helpfeel .prefix{color:#f17c00}.helpfeel .entry{color:#cc5020}.code-block{display:block;line-height:1.7em;background-color:var(--code-bg, rgba(0,0,0,.04))}.code-block-start{font-family:Menlo,Monaco,Consolas,Courier New,monospace;color:#342d9c;background-color:#ffcfc6;font-size:.9em;padding:1px 2px}.code-block-start a{color:#342d9c;text-decoration:underline}code.code-block,.table-block.table-block-row{padding-left:1em}.copy{font-family:"Font Awesome 5 Free";cursor:pointer}.table-block{white-space:nowrap}.table-block-start{padding:1px 2px;font-size:.9em;background-color:#ffcfc6}.table-block-start a{color:#342d9c;text-decoration:underline}.cell{margin:0;padding:0 2px 0 8px;box-sizing:content-box;display:inline-block;white-space:pre}.cell:nth-child(odd){background-color:#0000000a}.cell:nth-child(2n){background-color:#0000000f}.strong-image{max-height:100%}.icon{height:11px;vertical-align:middle}.strong-icon{height:13.2px}.tool-button{margin-left:1em;cursor:pointer;font-size:.9em}.deco-\/{font-style:italic}.deco-\*-1{font-weight:700}.deco-\*-2{font-weight:700;font-size:1.2em}.deco-\*-3{font-weight:700;font-size:1.44em}.deco-\*-4{font-weight:700;font-size:1.73em}.deco-\*-5{font-weight:700;font-size:2.07em}.deco-\*-6{font-weight:700;font-size:2.49em}.deco-\*-7{font-weight:700;font-size:3em}.deco-\*-8{font-weight:700;font-size:3.58em}.deco-\*-9{font-weight:700;font-size:4.3em}.deco-\*-10{font-weight:700;font-size:5.16em}.deco--{text-decoration:line-through}.deco-_{text-decoration:underline}.page-link{color:var(--page-link-color, #5e8af7)}a.page-link:hover{color:var(--page-link-hover-color, #2d67f5)}.empty-page-link{color:var(--empty-page-link-color, #fd7373)}a.empty-page-link:hover{color:var(--empty-page-link-hover-color, #fd7373)}.link{color:var(--page-link-color, #5e8af7);text-decoration:underline}a.link:hover{color:var(--page-link-color-hover-color, #2d67f5)}.link img{padding-bottom:3px;border-style:none none solid;border-width:1.5px;border-color:#8fadf9}.permalink{background-color:var(--line-permalink-color, rgba(234,218,74,.75))}.status-bar{display:inline-block;position:absolute;background-color:var(--page-bg, #fefefe);cursor:default}.status-bar>*{border:1px solid var(--status-bar-border-color, #a9aaaf)}.status-bar.top-left{top:0;left:0}.status-bar.top-left>*{border-top:none;border-left:none}.status-bar.top-left :last-of-type{border-bottom-right-radius:3px}.status-bar.top-right{top:0;right:0}.status-bar.top-right>*{border-top:none;border-right:none}.status-bar.top-right :last-of-type{border-bottom-left-radius:3px}.status-bar.bottom-right{bottom:0;right:0}.status-bar.bottom-right>*{border-bottom:none;border-right:none}.status-bar.bottom-right :last-of-type{border-top-left-radius:3px}.status-bar.bottom-left{bottom:0;left:0}.status-bar.bottom-left>*{border-bottom:none;border-left:none}.status-bar.bottom-left :last-of-type{border-top-right-radius:3px}.text-bubble{font-size:11px;line-height:1.42857;user-select:text;position:absolute;color:var(--page-text-color, #4a4a4a);box-shadow:0 6px 12px #0000002d;display:flex;flex-direction:column;z-index:9000;&.no-scroll{overflow-y:hidden}data-theme=default-dark{--text-bubble-border-color: hsl(0, 0%, 39%)}data-theme=default-minimal{--text-bubble-border-color: hsl(0, 0%, 89%)}data-theme=paper-light{--text-bubble-border-color: hsl(53, 8%, 58%)}data-theme=paper-dark-dark{--text-bubble-border-color: hsl(203, 42%, 17%)}data-theme=blue{--text-bubble-border-color: hsl(227, 68%, 62%)}data-theme=purple{--text-bubble-border-color: hsl(267, 39%, 60%)}data-theme=green{--text-bubble-border-color: hsl(136, 29%, 50%)}data-theme=orange{--text-bubble-border-color: hsl(43, 71%, 51%)}data-theme=red{--text-bubble-border-color: hsl(4, 58%, 56%)}data-theme=spring{--text-bubble-border-color: hsl(72, 64%, 57%)}data-theme=kyoto{--text-bubble-border-color: hsl(331, 21%, 26%)}data-theme=newyork{--text-bubble-border-color: hsl(176, 29%, 67%)}role=tabpanel{padding:5px 0 5px 5px;border-radius:4px;background-color:var(--page-bg, #fefefe);max-height:80vh;overflow-y:auto}role=tabpanel,button{border:1px solid var(--text-bubble-border-color, hsl(221, 15%, 25%))}button{cursor:default;color:inherit;font-size:inherit;line-height:inherit;background-color:var(--page-bg, #fefefe);border-radius:4px 4px 0 0}buttonaria-selected=true{background-color:var(--text-bubble-border-color, hsl(221, 15%, 25%))}}.project-badge{text-decoration:none;color:var(--tool-text-color, #363c49)}.related-page-carddata-theme=default-dark{--card-title-bg: hsl(0, 0%, 39%)}.related-page-carddata-theme=default-minimal{--card-title-bg: hsl(0, 0%, 89%)}.related-page-carddata-theme=paper-light{--card-title-bg: hsl(53, 8%, 58%)}.related-page-carddata-theme=paper-dark-dark{--card-title-bg: hsl(203, 42%, 17%)}.related-page-carddata-theme=blue{--card-title-bg: hsl(227, 68%, 62%)}.related-page-carddata-theme=purple{--card-title-bg: hsl(267, 39%, 60%)}.text-bubbledata-theme=green{--card-title-bg: hsl(136, 29%, 50%)}.related-page-carddata-theme=orange{--card-title-bg: hsl(43, 71%, 51%)}.related-page-carddata-theme=red{--card-title-bg: hsl(4, 58%, 56%)}.related-page-carddata-theme=spring{--card-title-bg: hsl(72, 64%, 57%)}.related-page-carddata-theme=kyoto{--card-title-bg: hsl(331, 21%, 26%)}.related-page-carddata-theme=newyork{--card-title-bg: hsl(176, 29%, 67%)}.related-page-card{display:block;position:relative;height:inherit;width:inherit;overflow:hidden;text-overflow:ellipsis;font-family:Roboto,Helvetica,Arial,Hiragino Sans,sans-serif;background-color:var(--card-bg, #fff);color:var(--card-title-color, #555);word-break:break-word;text-decoration:none}.related-page-card:hover{box-shadow:var(--card-box-hover-shadow, 0 2px 0 rgba(0,0,0,.23))}.related-page-card:focus{outline:0;box-shadow:0 0 0 3px #66afe999;border-color:#66afe9;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.related-page-card.hover{opacity:0;position:absolute;width:100%;height:100%;top:0;left:0;background-color:var(--card-hover-bg, rgba(0,0,0,.05));mix-blend-mode:multiply;z-index:1;transition:background-color .1s}.related-page-card:hover .hover{opacity:1}.related-page-card:active .hover{opacity:1;background-color:var(--card-active-bg, rgba(0,0,0,.1))}.related-page-card .content{height:calc(100% - 5px);width:inherit;display:flex;flex-direction:column;overflow:hidden}.related-page-card .content .header{width:100%;color:#396bdd;text-overflow:ellipsis;border-top:var(--card-title-bg, #f2f2f3) solid 10px;padding:8px 10px}.related-page-card .content .header .title{font-size:11px;line-height:16px;font-weight:700;max-height:48px;color:var(--card-title-color, #363c49);margin:0;overflow:hidden;display:block;-webkit-line-clamp:3;-webkit-box-orient:vertical;text-overflow:ellipsis}.related-page-card .content .description{line-height:16px;padding:8px 10px 0;font-size:10px;white-space:pre-line;column-count:1;column-gap:2em;column-width:10em;height:inherit;color:var(--card-description-color, gray);flex-shrink:16;overflow:hidden}.related-page-card .content .thumbnail{display:block;width:100%;margin:0 auto;padding:0 5px}.related-page-card .content .description p{margin:0;display:block}.related-page-card .content .description code{font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-size:90%;color:var(--code-color, #342d9c);background-color:var(--code-bg, rgba(0,0,0,.04));padding:0;white-space:pre-wrap;word-wrap:break-word}.related-page-card .content .description .icon{height:9px;vertical-align:middle}.related-page-card .content .description .page-link{background-color:transparent;text-decoration:none;cursor:pointer;color:var(--page-link-color, #5e8af7)}.card-bubble{background-color:var(--page-bg, #FFF);box-shadow:0 2px 2px #00000024,0 3px 1px -2px #0003,0 1px 5px #0000001f;position:absolute;max-width:80vw;box-sizing:content-box;z-index:9000;font-size:11px;line-height:1.42857;display:flex;padding:0;margin:0;list-style:none;overflow-x:auto;overflow-y:visible}.card-bubble li{display:block;position:relative;float:none;margin:5px;box-sizing:border-box;box-shadow:var(--card-box-shadow, 0 2px 0 rgba(0,0,0,.12));border-radius:2px;width:120px;height:120px} ;var GE=()=>{let[A,e]=L([{bubble:o=>t(0,o),hide:()=>t(0)}]),t=b((o,g)=>{e(([r,...n])=>[r,...g?[...n.slice(0,o),g===n.at(o)?.source?n.at(o):{source:g,parentTitles:[scrapbox.Page.title??"",...n.slice(0,o).map(Q=>Q.source.title)],bubble:Q=>t(o+1,Q),hide:()=>t(o+1)}]:[...n.slice(0,o)]])},[]);return A};var jB=(A,e,t,o,g)=>{X(()=>(A.addEventListener(e,t,o),()=>A.removeEventListener(e,t,o)),[A,e,o,...g??[]])};var kE=A=>A instanceof HTMLSpanElement&&A.matches(".line-title .text"),_r=A=>A instanceof HTMLAnchorElement&&A.classList.contains("page-link");var OB="scrap-bubble",YE=({delay:A,whiteList:e,watchList:t,style:o})=>{let[{bubble:g,hide:r},...n]=GE(),Q=b((B,C)=>cE(C,e.has(B)?e:new Set([B]),t),[e,t]);return jB(document,"pointerenter",async B=>{let C=B.target;if(!_r(C)&&!kE(C))return;let{project:i=scrapbox.Project.name,title:I,hash:s=""}=_r(C)?uo({pathType:"root",href:${new URL(C.href).pathname}${new URL(C.href).hash}}):{project:scrapbox.Project.name,title:scrapbox.Page.title};if(i==="")return;let a=decodeURIComponent(I??"");Q(i,a),await Do(C,A)&&g({project:i,title:a,hash:s,position:po(C),type:bM(C)})},{capture:!0},[A,e,t]),jB(document,"click",B=>{B.target.dataset.userscriptName!==OB&&r()},{capture:!0},[r]),X(()=>(scrapbox.addListener("page:changed",r),()=>scrapbox.removeListener("page:changed",r)),[r]),E(W,null,E("link",{rel:"stylesheet",href:"https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.12.0/katex.min.css"}),E("style",null,yE),E(NE,{style:o}),n.map(B=>E(fE,{key:rA(B.source.project,B.source.title),...B,whiteList:e,delay:A,prefetch:Q})))},bM=A=>_r(A)?A.type==="link"?"link":"hashtag":"title";var bE=async A=>{let{delay:e=500,whiteList:t=[],watchList:o=(await ja()).slice(0,100),style:g="",debug:r=!1}=A??{};La(r);let n=document.createElement("div");n.dataset.userscriptName=OB,document.body.append(n);let Q=n.attachShadow({mode:"open"});GA(E(YE,{delay:e,whiteList:new Set([scrapbox.Project.name,...t]),watchList:new Set(o),style:g}),Q)};var jM=["takker-memex","takker-private","takker","takker-books","villagepump"],No=[];switch(scrapbox.Project.name){case"hub":case"villagepump":case"verbalizing-community":No.push("villagepump","hub","verbalizing-community");break;case"programming-notes":case"customize":case"scrapboxlab":No.push("programming-notes","customize","scrapboxlab");break;case"sta":No.push("sta-taskmanagement");break;case"sta-taskmanagement":case"taskmanagement":No.push("sta-taskmanagement","taskmanagement");break;case"plurality-japanese":No.push("nishio","tkgshn");break}bE({delay:/mobile/i.test(navigator.userAgent)?300:500,whiteList:[...jM,...No],style:@import "/api/code/takker/kakeruの背景を白にするUserCSS/style.css";
@import "/api/code/takker/アイコン記法を画像記法っぽくするUserCSS/style2.css";});var jE=A=>{{let t=A.match(/^([^(]+)\(([^)]+)\)$/);if(t)return{fileName:t[1],lang:t[2]}}let e=A.split(".").pop();return e===void 0?{fileName:A,lang:A}:{fileName:A,lang:e}};var OE=(A,e,t)=>{if(t.length===0)return[];let o=t.map(Q=>Q.text).join(
),g=hA(o,{hasTitle:!0}),r=new Map,n=0;for(let Q of g)switch(Q.type){case"title":case"line":{n++;break}case"table":n+=Q.cells.length+1;break;case"codeBlock":{let{fileName:B,lang:C}=jE(Q.fileName),i=r.get(B);r.set(B,{path:i?.path??https://scrapbox.io/api/code/${A}/${V(e)}/${V(B)},lang:i?.lang??C,startIds:[...i?.startIds??[],t[n].id]}),n+=Q.content.split( ).length+1;break}}return r.values()};function xB(A){let e=o=>{if(o===null)t.write8(0);else if(typeof o=="boolean")t.write8(1),t.write8(+o);else if(typeof o=="number")t.write8(2),t.write32(o|0);else if(typeof o=="string")t.write8(3),t.write(Me(o));else if(o instanceof Uint8Array)t.write8(4),t.write(o);else if(o instanceof Array){t.write8(5),t.write32(o.length);for(let g of o)e(g)}else{let g=Object.keys(o);t.write8(6),t.write32(g.length);for(let r of g)t.write(Me(r)),e(o[r])}},t=new $r;return t.write32(0),t.write32(A.id<<1|+!A.isRequest),e(A.value),FB(t.buf,t.len-4,0),t.buf.subarray(0,t.len)}function FE(A){let e=()=>{switch(t.read8()){case 0:return null;case 1:return!!t.read8();case 2:return t.read32();case 3:return yo(t.read());case 4:return t.read();case 5:{let n=t.read32(),Q=[];for(let B=0;B<n;B++)Q.push(e());return Q}case 6:{let n=t.read32(),Q={};for(let B=0;B<n;B++)Q[yo(t.read())]=e();return Q}default:throw new Error("Invalid packet")}},t=new $r(A),o=t.read32(),g=(o&1)===0;o>>>=1;let r=e();if(t.ptr!==A.length)throw new Error("Invalid packet");return{id:o,isRequest:g,value:r}}var $r=class{constructor(e=new Uint8Array(1024)){this.buf=e}len=0;ptr=0;_write(e){if(this.len+e>this.buf.length){let t=new Uint8Array((this.len+e)*2);t.set(this.buf),this.buf=t}return this.len+=e,this.len-e}write8(e){let t=this._write(1);this.buf[t]=e}write32(e){let t=this._write(4);FB(this.buf,e,t)}write(e){let t=this._write(4+e.length);FB(this.buf,e.length,t),this.buf.set(e,t+4)}_read(e){if(this.ptr+e>this.buf.length)throw new Error("Invalid packet");return this.ptr+=e,this.ptr-e}read8(){return this.buf[this._read(1)]}read32(){return JB(this.buf,this._read(4))}read(){let e=this.read32(),t=new Uint8Array(e),o=this._read(t.length);return t.set(this.buf.subarray(o,o+e)),t}},Me,yo,xE;if(typeof TextEncoder<"u"&&typeof TextDecoder<"u"){let A=new TextEncoder,e=new TextDecoder;Me=t=>A.encode(t),yo=t=>e.decode(t),xE='new TextEncoder().encode("")'}else throw new Error("No UTF-8 codec found");if(!(Me("")instanceof Uint8Array))throw new Error(Invariant violation: "${xE} instanceof Uint8Array" is incorrectly false
This indicates that your JavaScript environment is broken. You cannot use
esbuild in this environment because esbuild relies on this invariant. This
is not a problem with esbuild. You need to fix your environment instead.
);function JB(A,e){return A[e++]|A[e++]<<8|A[e++]<<16|A[e++]<<24}function FB(A,e,t){A[t++]=e,A[t++]=e>>8,A[t++]=e>>16,A[t++]=e>>24}var mg="0.21.5";var fA=JSON.stringify,JE="warning",RE="silent";function ZE(A){if(LA(A,"target"),A.indexOf(",")>=0)throw new Error(Invalid target: ${A});return A}var tQ=()=>null,lA=A=>typeof A=="boolean"?null:"a boolean",T=A=>typeof A=="string"?null:"a string",oQ=A=>A instanceof RegExp?null:"a RegExp object",Ao=A=>typeof A=="number"&&A===(A|0)?null:"an integer",TE=A=>typeof A=="function"?null:"a function",DA=A=>Array.isArray(A)?null:"an array",pe=A=>typeof A=="object"&&A!==null&&!Array.isArray(A)?null:"an object",FM=A=>typeof A=="object"&&A!==null?null:"an array or an object",xM=A=>A instanceof WebAssembly.Module?null:"a WebAssembly.Module",UE=A=>typeof A=="object"&&!Array.isArray(A)?null:"an object or null",SE=A=>typeof A=="string"||typeof A=="boolean"?null:"a string or a boolean",JM=A=>typeof A=="string"||typeof A=="object"&&A!==null&&!Array.isArray(A)?null:"a string or an object",RM=A=>typeof A=="string"||Array.isArray(A)?null:"a string or an array",vE=A=>typeof A=="string"||A instanceof Uint8Array?null:"a string or a Uint8Array",ZM=A=>typeof A=="string"||A instanceof URL?null:"a string or a URL";function w(A,e,t,o){let g=A[t];if(e[t+""]=!0,g===void 0)return;let r=o(g);if(r!==null)throw new Error(${fA(t)} must be ${r});return g}function MA(A,e,t){for(let o in A)if(!(o in e))throw new Error(Invalid option ${t}: ${fA(o)})}function HE(A){let e=Object.create(null),t=w(A,e,"wasmModule",xM),o=w(A,e,"workerURL",ZM);return MA(A,e,"in initialize() call"),{wasmModule:t,workerURL:o}}function WE(A){let e;if(A!==void 0){e=Object.create(null);for(let t in A){let o=A[t];if(typeof o=="string"||o===!1)e[t]=o;else throw new Error(Expected ${fA(t)} in mangle cache to map to either a string or false)}}return e}function gQ(A,e,t,o,g){let r=w(e,t,"color",lA),n=w(e,t,"logLevel",T),Q=w(e,t,"logLimit",Ao);r!==void 0?A.push(--color=${r}):o&&A.push("--color=true"),A.push(--log-level=${n||g}),A.push(--log-limit=${Q||0})}function LA(A,e,t){if(typeof A!="string")throw new Error(Expected value for ${e}${t!==void 0?" "+fA(t):""} to be a string, got ${typeof A} instead);return A}function XE(A,e,t){let o=w(e,t,"legalComments",T),g=w(e,t,"sourceRoot",T),r=w(e,t,"sourcesContent",lA),n=w(e,t,"target",RM),Q=w(e,t,"format",T),B=w(e,t,"globalName",T),C=w(e,t,"mangleProps",oQ),i=w(e,t,"reserveProps",oQ),I=w(e,t,"mangleQuoted",lA),s=w(e,t,"minify",lA),a=w(e,t,"minifySyntax",lA),c=w(e,t,"minifyWhitespace",lA),l=w(e,t,"minifyIdentifiers",lA),D=w(e,t,"lineLimit",Ao),m=w(e,t,"drop",DA),N=w(e,t,"dropLabels",DA),u=w(e,t,"charset",T),p=w(e,t,"treeShaking",lA),h=w(e,t,"ignoreAnnotations",lA),d=w(e,t,"jsx",T),k=w(e,t,"jsxFactory",T),G=w(e,t,"jsxFragment",T),R=w(e,t,"jsxImportSource",T),y=w(e,t,"jsxDev",lA),f=w(e,t,"jsxSideEffects",lA),M=w(e,t,"define",pe),Y=w(e,t,"logOverride",pe),j=w(e,t,"supported",pe),F=w(e,t,"pure",DA),Z=w(e,t,"keepNames",lA),O=w(e,t,"platform",T),S=w(e,t,"tsconfigRaw",JM);if(o&&A.push(--legal-comments=${o}),g!==void 0&&A.push(--source-root=${g}),r!==void 0&&A.push(--sources-content=${r}),n&&(Array.isArray(n)?A.push(--target=${Array.from(n).map(ZE).join(",")}):A.push(--target=${ZE(n)})),Q&&A.push(--format=${Q}),B&&A.push(--global-name=${B}),O&&A.push(--platform=${O}),S&&A.push(--tsconfig-raw=${typeof S=="string"?S:JSON.stringify(S)}),s&&A.push("--minify"),a&&A.push("--minify-syntax"),c&&A.push("--minify-whitespace"),l&&A.push("--minify-identifiers"),D&&A.push(--line-limit=${D}),u&&A.push(--charset=${u}),p!==void 0&&A.push(--tree-shaking=${p}),h&&A.push("--ignore-annotations"),m)for(let U of m)A.push(--drop:${LA(U,"drop")});if(N&&A.push(--drop-labels=${Array.from(N).map(U=>LA(U,"dropLabels")).join(",")}),C&&A.push(--mangle-props=${C.source}),i&&A.push(--reserve-props=${i.source}),I!==void 0&&A.push(--mangle-quoted=${I}),d&&A.push(--jsx=${d}),k&&A.push(--jsx-factory=${k}),G&&A.push(--jsx-fragment=${G}),R&&A.push(--jsx-import-source=${R}),y&&A.push("--jsx-dev"),f&&A.push("--jsx-side-effects"),M)for(let U in M){if(U.indexOf("=")>=0)throw new Error(Invalid define: ${U});A.push(--define:${U}=${LA(MU,"define",U)})}if(Y)for(let U in Y){if(U.indexOf("=")>=0)throw new Error(Invalid log override: ${U});A.push(--log-override:${U}=${LA(YU,"log override",U)})}if(j)for(let U in j){if(U.indexOf("=")>=0)throw new Error(Invalid supported: ${U});let v=j[U];if(typeof v!="boolean")throw new Error(Expected value for supported ${fA(U)} to be a boolean, got ${typeof v} instead);A.push(--supported:${U}=${v})}if(F)for(let U of F)A.push(--pure:${LA(U,"pure")});Z&&A.push("--keep-names")}function UM(A,e,t,o,g){let r=[],n=[],Q=Object.create(null),B=null,C=null;gQ(r,e,Q,t,o),XE(r,e,Q);let i=w(e,Q,"sourcemap",SE),I=w(e,Q,"bundle",lA),s=w(e,Q,"splitting",lA),a=w(e,Q,"preserveSymlinks",lA),c=w(e,Q,"metafile",lA),l=w(e,Q,"outfile",T),D=w(e,Q,"outdir",T),m=w(e,Q,"outbase",T),N=w(e,Q,"tsconfig",T),u=w(e,Q,"resolveExtensions",DA),p=w(e,Q,"nodePaths",DA),h=w(e,Q,"mainFields",DA),d=w(e,Q,"conditions",DA),k=w(e,Q,"external",DA),G=w(e,Q,"packages",T),R=w(e,Q,"alias",pe),y=w(e,Q,"loader",pe),f=w(e,Q,"outExtension",pe),M=w(e,Q,"publicPath",T),Y=w(e,Q,"entryNames",T),j=w(e,Q,"chunkNames",T),F=w(e,Q,"assetNames",T),Z=w(e,Q,"inject",DA),O=w(e,Q,"banner",pe),S=w(e,Q,"footer",pe),U=w(e,Q,"entryPoints",FM),v=w(e,Q,"absWorkingDir",T),H=w(e,Q,"stdin",pe),$=w(e,Q,"write",lA)??g,P=w(e,Q,"allowOverwrite",lA),xA=w(e,Q,"mangleCache",pe);if(Q.plugins=!0,MA(e,Q,in ${A}() call),i&&r.push(--sourcemap${i===!0?"":=${i}}),I&&r.push("--bundle"),P&&r.push("--allow-overwrite"),s&&r.push("--splitting"),a&&r.push("--preserve-symlinks"),c&&r.push("--metafile"),l&&r.push(--outfile=${l}),D&&r.push(--outdir=${D}),m&&r.push(--outbase=${m}),N&&r.push(--tsconfig=${N}),G&&r.push(--packages=${G}),u){let x=[];for(let QA of u){if(LA(QA,"resolve extension"),QA.indexOf(",")>=0)throw new Error(Invalid resolve extension: ${QA});x.push(QA)}r.push(--resolve-extensions=${x.join(",")})}if(M&&r.push(--public-path=${M}),Y&&r.push(--entry-names=${Y}),j&&r.push(--chunk-names=${j}),F&&r.push(--asset-names=${F}),h){let x=[];for(let QA of h){if(LA(QA,"main field"),QA.indexOf(",")>=0)throw new Error(Invalid main field: ${QA});x.push(QA)}r.push(--main-fields=${x.join(",")})}if(d){let x=[];for(let QA of d){if(LA(QA,"condition"),QA.indexOf(",")>=0)throw new Error(Invalid condition: ${QA});x.push(QA)}r.push(--conditions=${x.join(",")})}if(k)for(let x of k)r.push(--external:${LA(x,"external")});if(R)for(let x in R){if(x.indexOf("=")>=0)throw new Error(Invalid package name in alias: ${x});r.push(--alias:${x}=${LA(Rx,"alias",x)})}if(O)for(let x in O){if(x.indexOf("=")>=0)throw new Error(Invalid banner file type: ${x});r.push(--banner:${x}=${LA(Ox,"banner",x)})}if(S)for(let x in S){if(x.indexOf("=")>=0)throw new Error(Invalid footer file type: ${x});r.push(--footer:${x}=${LA(Sx,"footer",x)})}if(Z)for(let x of Z)r.push(--inject:${LA(x,"inject")});if(y)for(let x in y){if(x.indexOf("=")>=0)throw new Error(Invalid loader extension: ${x});r.push(--loader:${x}=${LA(yx,"loader",x)})}if(f)for(let x in f){if(x.indexOf("=")>=0)throw new Error(Invalid out extension: ${x});r.push(--out-extension:${x}=${LA(fx,"out extension",x)})}if(U)if(Array.isArray(U))for(let x=0,QA=U.length;x<QA;x++){let WA=U[x];if(typeof WA=="object"&&WA!==null){let Le=Object.create(null),Te=w(WA,Le,"in",T),Ge=w(WA,Le,"out",T);if(MA(WA,Le,"in entry point at index "+x),Te===void 0)throw new Error('Missing property "in" for entry point at index '+x);if(Ge===void 0)throw new Error('Missing property "out" for entry point at index '+x);n.push([Ge,Te])}else n.push(["",LA(WA,"entry point at index "+x)])}else for(let x in U)n.push([x,LA(U[x],"entry point",x)]);if(H){let x=Object.create(null),QA=w(H,x,"contents",vE),WA=w(H,x,"resolveDir",T),Le=w(H,x,"sourcefile",T),Te=w(H,x,"loader",T);MA(H,x,'in "stdin" object'),Le&&r.push(--sourcefile=${Le}),Te&&r.push(--loader=${Te}),WA&&(C=WA),typeof QA=="string"?B=Me(QA):QA instanceof Uint8Array&&(B=QA)}let IA=[];if(p)for(let x of p)x+="",IA.push(x);return{entries:n,flags:r,write:$,stdinContents:B,stdinResolveDir:C,absWorkingDir:v,nodePaths:IA,mangleCache:WE(xA)}}function LM(A,e,t,o){let g=[],r=Object.create(null);gQ(g,e,r,t,o),XE(g,e,r);let n=w(e,r,"sourcemap",SE),Q=w(e,r,"sourcefile",T),B=w(e,r,"loader",T),C=w(e,r,"banner",T),i=w(e,r,"footer",T),I=w(e,r,"mangleCache",pe);return MA(e,r,in ${A}() call),n&&g.push(--sourcemap=${n===!0?"external":n}),Q&&g.push(--sourcefile=${Q}),B&&g.push(--loader=${B}),C&&g.push(--banner=${C}),i&&g.push(--footer=${i}),{flags:g,mangleCache:WE(I)}}function zE(A){let e={},t={didClose:!1,reason:""},o={},g=0,r=0,n=new Uint8Array(16*1024),Q=0,B=u=>{let p=Q+u.length;if(p>n.length){let d=new Uint8Array(p*2);d.set(n),n=d}n.set(u,Q),Q+=u.length;let h=0;for(;h+4<=Q;){let d=JB(n,h);if(h+4+d>Q)break;h+=4,c(n.subarray(h,h+d)),h+=d}h>0&&(n.copyWithin(0,h,Q),Q-=h)},C=u=>{t.didClose=!0,u&&(t.reason=": "+(u.message||u));let p="The service was stopped"+t.reason;for(let h in o)o[h](p,null);o={}},i=(u,p,h)=>{if(t.didClose)return h("The service is no longer running"+t.reason,null);let d=g++;o[d]=(k,G)=>{try{h(k,G)}finally{u&&u.unref()}},u&&u.ref(),A.writeToStdin(xB({id:d,isRequest:!0,value:p}))},I=(u,p)=>{if(t.didClose)throw new Error("The service is no longer running"+t.reason);A.writeToStdin(xB({id:u,isRequest:!1,value:p}))},s=async(u,p)=>{try{if(p.command==="ping"){I(u,{});return}if(typeof p.key=="number"){let h=e[p.key];if(!h)return;let d=h[p.command];if(d){await d(u,p);return}}throw new Error("Invalid command: "+p.command)}catch(h){let d=[$t(h,A,null,void 0,"")];try{I(u,{errors:d})}catch{}}},a=!0,c=u=>{if(a){a=!1;let h=String.fromCharCode(...u);if(h!==mg)throw new Error(Cannot start service: Host version "${mg}" does not match binary version ${fA(h)});return}let p=FE(u);if(p.isRequest)s(p.id,p.value);else{let h=o[p.id];delete o[p.id],p.value.error?h(p.value.error,{}):h(null,p.value)}};return{readFromStdout:B,afterClose:C,service:{buildOrContext:({callName:u,refs:p,options:h,isTTY:d,defaultWD:k,callback:G})=>{let R=0,y=r++,f={},M={ref(){++R===1&&p&&p.ref()},unref(){--R===0&&(delete e[y],p&&p.unref())}};e[y]=f,M.ref(),TM(u,y,i,I,M,A,f,h,d,k,(Y,j)=>{try{G(Y,j)}finally{M.unref()}})},transform:({callName:u,refs:p,input:h,options:d,isTTY:k,fs:G,callback:R})=>{let y=KE(),f=M=>{try{if(typeof h!="string"&&!(h instanceof Uint8Array))throw new Error('The input to "transform" must be a string or a Uint8Array');let{flags:Y,mangleCache:j}=LM(u,d,k,RE),F={command:"transform",flags:Y,inputFS:M!==null,input:M!==null?Me(M):typeof h=="string"?Me(h):h};j&&(F.mangleCache=j),i(p,F,(Z,O)=>{if(Z)return R(new Error(Z),null);let S=Go(O.errors,y),U=Go(O.warnings,y),v=1,H=()=>{if(--v===0){let $={warnings:U,code:O.code,map:O.map,mangleCache:void 0,legalComments:void 0};"legalComments"in O&&($.legalComments=O?.legalComments),O.mangleCache&&($.mangleCache=O?.mangleCache),R(null,$)}};if(S.length>0)return R(hg("Transform failed",S,U),null);O.codeFS&&(v++,G.readFile(O.code,($,P)=>{$!==null?R($,null):(O.code=P,H())})),O.mapFS&&(v++,G.readFile(O.map,($,P)=>{$!==null?R($,null):(O.map=P,H())})),H()})}catch(Y){let j=[];try{gQ(j,d,{},k,RE)}catch{}let F=$t(Y,A,y,void 0,"");i(p,{command:"error",flags:j,error:F},()=>{F.detail=y.load(F.detail),R(hg("Transform failed",[F],[]),null)})}};if((typeof h=="string"||h instanceof Uint8Array)&&h.length>1024*1024){let M=f;f=()=>G.writeFile(h,M)}f(null)},formatMessages:({callName:u,refs:p,messages:h,options:d,callback:k})=>{if(!d)throw new Error(Missing second argument in ${u}() call);let G={},R=w(d,G,"kind",T),y=w(d,G,"color",lA),f=w(d,G,"terminalWidth",Ao);if(MA(d,G,in ${u}() call),R===void 0)throw new Error(Missing "kind" in ${u}() call);if(R!=="error"&&R!=="warning")throw new Error(Expected "kind" to be "error" or "warning" in ${u}() call);let M={command:"format-msgs",messages:Pe(h,"messages",null,"",f),isWarning:R==="warning"};y!==void 0&&(M.color=y),f!==void 0&&(M.terminalWidth=f),i(p,M,(Y,j)=>{if(Y)return k(new Error(Y),null);k(null,j.messages)})},analyzeMetafile:({callName:u,refs:p,metafile:h,options:d,callback:k})=>{d===void 0&&(d={});let G={},R=w(d,G,"color",lA),y=w(d,G,"verbose",lA);MA(d,G,in ${u}() call);let f={command:"analyze-metafile",metafile:h};R!==void 0&&(f.color=R),y!==void 0&&(f.verbose=y),i(p,f,(M,Y)=>{if(M)return k(new Error(M),null);k(null,Y.result)})}}}}function TM(A,e,t,o,g,r,n,Q,B,C,i){let I=KE(),s=A==="context",a=(D,m)=>{let N=[];try{gQ(N,Q,{},B,JE)}catch{}let u=$t(D,r,I,void 0,m);t(g,{command:"error",flags:N,error:u},()=>{u.detail=I.load(u.detail),i(hg(s?"Context failed":"Build failed",[u],[]),null)})},c;if(typeof Q=="object"){let D=Q.plugins;if(D!==void 0){if(!Array.isArray(D))return a(new Error('"plugins" must be an array'),"");c=D}}if(c&&c.length>0){if(r.isSync)return a(new Error("Cannot use plugins in synchronous API calls"),"");SM(e,t,o,g,r,n,Q,c,I).then(D=>{if(!D.ok)return a(D.error,D.pluginName);try{l(D.requestPlugins,D.runOnEndCallbacks,D.scheduleOnDisposeCallbacks)}catch(m){a(m,"")}},D=>a(D,""));return}try{l(null,(D,m)=>m([],[]),()=>{})}catch(D){a(D,"")}function l(D,m,N){let u=r.hasFS,{entries:p,flags:h,write:d,stdinContents:k,stdinResolveDir:G,absWorkingDir:R,nodePaths:y,mangleCache:f}=UM(A,Q,B,JE,u);if(d&&!r.hasFS)throw new Error('The "write" option is unavailable in this environment');let M={command:"build",key:e,entries:p,flags:h,write:d,stdinContents:k,stdinResolveDir:G,absWorkingDir:R||C,nodePaths:y,context:s};D&&(M.plugins=D),f&&(M.mangleCache=f);let Y=(Z,O)=>{let S={errors:Go(Z.errors,I),warnings:Go(Z.warnings,I),outputFiles:void 0,metafile:void 0,mangleCache:void 0},U=S.errors.slice(),v=S.warnings.slice();Z.outputFiles&&(S.outputFiles=Z.outputFiles.map(HM)),Z.metafile&&(S.metafile=JSON.parse(Z.metafile)),Z.mangleCache&&(S.mangleCache=Z.mangleCache),Z.writeToStdout!==void 0&&console.log(yo(Z.writeToStdout).replace(/\n$/,"")),m(S,(H,$)=>{if(U.length>0||H.length>0){let P=hg("Build failed",U.concat(H),v.concat($));return O(P,null,H,$)}O(null,S,H,$)})},j,F;s&&(n["on-end"]=(Z,O)=>new Promise(S=>{Y(O,(U,v,H,$)=>{let P={errors:H,warnings:$};F&&F(U,v),j=void 0,F=void 0,o(Z,P),S()})})),t(g,M,(Z,O)=>{if(Z)return i(new Error(Z),null);if(!s)return Y(O,(v,H)=>(N(),i(v,H)));if(O.errors.length>0)return i(hg("Context failed",O.errors,O.warnings),null);let S=!1,U={rebuild:()=>(j||(j=new Promise((v,H)=>{let $;F=(xA,IA)=>{$||($=()=>xA?H(xA):v(IA))};let P=()=>{t(g,{command:"rebuild",key:e},(IA,x)=>{IA?H(new Error(IA)):$?$():P()})};P()})),j),watch:(v={})=>new Promise((H,$)=>{if(!r.hasFS)throw new Error('Cannot use the "watch" API in this environment');MA(v,{},"in watch() call"),t(g,{command:"watch",key:e},IA=>{IA?$(new Error(IA)):H(void 0)})}),serve:(v={})=>new Promise((H,$)=>{if(!r.hasFS)throw new Error('Cannot use the "serve" API in this environment');let P={},xA=w(v,P,"port",Ao),IA=w(v,P,"host",T),x=w(v,P,"servedir",T),QA=w(v,P,"keyfile",T),WA=w(v,P,"certfile",T),Le=w(v,P,"fallback",T),Te=w(v,P,"onRequest",TE);MA(v,P,"in serve() call");let Ge={command:"serve",key:e,onRequest:!!Te};xA!==void 0&&(Ge.port=xA),IA!==void 0&&(Ge.host=IA),x!==void 0&&(Ge.servedir=x),QA!==void 0&&(Ge.keyfile=QA),WA!==void 0&&(Ge.certfile=WA),Le!==void 0&&(Ge.fallback=Le),t(g,Ge,(Yi,pm)=>{if(Yi)return $(new Error(Yi));Te&&(n["serve-request"]=(wm,mm)=>{Te(mm.args),o(wm,{})}),H(pm)})}),cancel:()=>new Promise(v=>{if(S)return v();t(g,{command:"cancel",key:e},()=>{v()})}),dispose:()=>new Promise(v=>{if(S)return v();S=!0,t(g,{command:"dispose",key:e},()=>{v(),N(),g.unref()})})};g.ref(),i(null,U)})}}var SM=async(A,e,t,o,g,r,n,Q,B)=>{let C=[],i=[],I={},s={},a=[],c=0,l=0,D=[],m=!1;Q=[...Q];for(let p of Q){let h={};if(typeof p!="object")throw new Error(Plugin at index ${l} must be an object);let d=w(p,h,"name",T);if(typeof d!="string"||d==="")throw new Error(Plugin at index ${l} is missing a name);try{let k=w(p,h,"setup",TE);if(typeof k!="function")throw new Error("Plugin is missing a setup function");MA(p,h,on plugin ${fA(d)});let G={name:d,onStart:!1,onEnd:!1,onResolve:[],onLoad:[]};l++;let y=k({initialOptions:n,resolve:(f,M={})=>{if(!m)throw new Error('Cannot call "resolve" before plugin setup has completed');if(typeof f!="string")throw new Error("The path to resolve must be a string");let Y=Object.create(null),j=w(M,Y,"pluginName",T),F=w(M,Y,"importer",T),Z=w(M,Y,"namespace",T),O=w(M,Y,"resolveDir",T),S=w(M,Y,"kind",T),U=w(M,Y,"pluginData",tQ),v=w(M,Y,"with",pe);return MA(M,Y,"in resolve() call"),new Promise((H,$)=>{let P={command:"resolve",path:f,key:A,pluginName:d};if(j!=null&&(P.pluginName=j),F!=null&&(P.importer=F),Z!=null&&(P.namespace=Z),O!=null&&(P.resolveDir=O),S!=null)P.kind=S;else throw new Error('Must specify "kind" when calling "resolve"');U!=null&&(P.pluginData=B.store(U)),v!=null&&(P.with=vM(v,"with")),e(o,P,(xA,IA)=>{xA!==null?$(new Error(xA)):H({errors:Go(IA.errors,B),warnings:Go(IA.warnings,B),path:IA.path,external:IA.external,sideEffects:IA.sideEffects,namespace:IA.namespace,suffix:IA.suffix,pluginData:B.load(IA.pluginData)})})})},onStart(f){let M='This error came from the "onStart" callback registered here:',Y=AQ(new Error(M),g,"onStart");C.push({name:d,callback:f,note:Y}),G.onStart=!0},onEnd(f){let M='This error came from the "onEnd" callback registered here:',Y=AQ(new Error(M),g,"onEnd");i.push({name:d,callback:f,note:Y}),G.onEnd=!0},onResolve(f,M){let Y='This error came from the "onResolve" callback registered here:',j=AQ(new Error(Y),g,"onResolve"),F={},Z=w(f,F,"filter",oQ),O=w(f,F,"namespace",T);if(MA(f,F,in onResolve() call for plugin ${fA(d)}),Z==null)throw new Error("onResolve() call is missing a filter");let S=c++;I[S]={name:d,callback:M,note:j},G.onResolve.push({id:S,filter:Z.source,namespace:O||""})},onLoad(f,M){let Y='This error came from the "onLoad" callback registered here:',j=AQ(new Error(Y),g,"onLoad"),F={},Z=w(f,F,"filter",oQ),O=w(f,F,"namespace",T);if(MA(f,F,in onLoad() call for plugin ${fA(d)}),Z==null)throw new Error("onLoad() call is missing a filter");let S=c++;s[S]={name:d,callback:M,note:j},G.onLoad.push({id:S,filter:Z.source,namespace:O||""})},onDispose(f){a.push(f)},esbuild:g.esbuild});y&&await y,D.push(G)}catch(k){return{ok:!1,error:k,pluginName:d}}}r["on-start"]=async(p,h)=>{let d={errors:[],warnings:[]};await Promise.all(C.map(async({name:k,callback:G,note:R})=>{try{let y=await G();if(y!=null){if(typeof y!="object")throw new Error(Expected onStart() callback in plugin ${fA(k)} to return an object);let f={},M=w(y,f,"errors",DA),Y=w(y,f,"warnings",DA);MA(y,f,from onStart() callback in plugin ${fA(k)}),M!=null&&d.errors.push(...Pe(M,"errors",B,k,void 0)),Y!=null&&d.warnings.push(...Pe(Y,"warnings",B,k,void 0))}}catch(y){d.errors.push($t(y,g,B,R&&R(),k))}})),t(p,d)},r["on-resolve"]=async(p,h)=>{let d={},k="",G,R;for(let y of h.ids)try{({name:k,callback:G,note:R}=I[y]);let f=await G({path:h.path,importer:h.importer,namespace:h.namespace,resolveDir:h.resolveDir,kind:h.kind,pluginData:B.load(h.pluginData),with:h.with});if(f!=null){if(typeof f!="object")throw new Error(Expected onResolve() callback in plugin ${fA(k)} to return an object);let M={},Y=w(f,M,"pluginName",T),j=w(f,M,"path",T),F=w(f,M,"namespace",T),Z=w(f,M,"suffix",T),O=w(f,M,"external",lA),S=w(f,M,"sideEffects",lA),U=w(f,M,"pluginData",tQ),v=w(f,M,"errors",DA),H=w(f,M,"warnings",DA),$=w(f,M,"watchFiles",DA),P=w(f,M,"watchDirs",DA);MA(f,M,from onResolve() callback in plugin ${fA(k)}),d.id=y,Y!=null&&(d.pluginName=Y),j!=null&&(d.path=j),F!=null&&(d.namespace=F),Z!=null&&(d.suffix=Z),O!=null&&(d.external=O),S!=null&&(d.sideEffects=S),U!=null&&(d.pluginData=B.store(U)),v!=null&&(d.errors=Pe(v,"errors",B,k,void 0)),H!=null&&(d.warnings=Pe(H,"warnings",B,k,void 0)),$!=null&&(d.watchFiles=eQ($,"watchFiles")),P!=null&&(d.watchDirs=eQ(P,"watchDirs"));break}}catch(f){d={id:y,errors:[$t(f,g,B,R&&R(),k)]};break}t(p,d)},r["on-load"]=async(p,h)=>{let d={},k="",G,R;for(let y of h.ids)try{({name:k,callback:G,note:R}=s[y]);let f=await G({path:h.path,namespace:h.namespace,suffix:h.suffix,pluginData:B.load(h.pluginData),with:h.with});if(f!=null){if(typeof f!="object")throw new Error(Expected onLoad() callback in plugin ${fA(k)} to return an object);let M={},Y=w(f,M,"pluginName",T),j=w(f,M,"contents",vE),F=w(f,M,"resolveDir",T),Z=w(f,M,"pluginData",tQ),O=w(f,M,"loader",T),S=w(f,M,"errors",DA),U=w(f,M,"warnings",DA),v=w(f,M,"watchFiles",DA),H=w(f,M,"watchDirs",DA);MA(f,M,from onLoad() callback in plugin ${fA(k)}),d.id=y,Y!=null&&(d.pluginName=Y),j instanceof Uint8Array?d.contents=j:j!=null&&(d.contents=Me(j)),F!=null&&(d.resolveDir=F),Z!=null&&(d.pluginData=B.store(Z)),O!=null&&(d.loader=O),S!=null&&(d.errors=Pe(S,"errors",B,k,void 0)),U!=null&&(d.warnings=Pe(U,"warnings",B,k,void 0)),v!=null&&(d.watchFiles=eQ(v,"watchFiles")),H!=null&&(d.watchDirs=eQ(H,"watchDirs"));break}}catch(f){d={id:y,errors:[$t(f,g,B,R&&R(),k)]};break}t(p,d)};let N=(p,h)=>h([],[]);i.length>0&&(N=(p,h)=>{(async()=>{let d=[],k=[];for(let{name:G,callback:R,note:y}of i){let f,M;try{let Y=await R(p);if(Y!=null){if(typeof Y!="object")throw new Error(Expected onEnd() callback in plugin ${fA(G)} to return an object);let j={},F=w(Y,j,"errors",DA),Z=w(Y,j,"warnings",DA);MA(Y,j,from onEnd() callback in plugin ${fA(G)}),F!=null&&(f=Pe(F,"errors",B,G,void 0)),Z!=null&&(M=Pe(Z,"warnings",B,G,void 0))}}catch(Y){f=[$t(Y,g,B,y&&y(),G)]}if(f){d.push(...f);try{p.errors.push(...f)}catch{}}if(M){k.push(...M);try{p.warnings.push(...M)}catch{}}}h(d,k)})()});let u=()=>{for(let p of a)setTimeout(()=>p(),0)};return m=!0,{ok:!0,requestPlugins:D,runOnEndCallbacks:N,scheduleOnDisposeCallbacks:u}};function KE(){let A=new Map,e=0;return{load(t){return A.get(t)},store(t){if(t===void 0)return-1;let o=e++;return A.set(o,t),o}}}function AQ(A,e,t){let o,g=!1;return()=>{if(g)return o;g=!0;try{let r=(A.stack+"").split( );r.splice(1,1);let n=PE(e,r,t);if(n)return o={text:A.message,location:n},o}catch{}}}function $t(A,e,t,o,g){let r="Internal error",n=null;try{r=(A&&A.message||A)+""}catch{}try{n=PE(e,(A.stack+"").split(
),"")}catch{}return{id:"",pluginName:g,text:r,location:n,notes:o?[o]:[],detail:t?t.store(A):-1}}function PE(A,e,t){let o=" at ";if(A.readFileSync&&!e[0].startsWith(o)&&e[1].startsWith(o))for(let g=1;g<e.length;g++){let r=e[g];if(r.startsWith(o))for(r=r.slice(o.length);;){let n=/^(?:new |async )?\S+ \((.*)\)$/.exec(r);if(n){r=n[1];continue}if(n=/^eval at \S+ \((.*)\)(?:, \S+:\d+:\d+)?$/.exec(r),n){r=n[1];continue}if(n=/^(\S+):(\d+):(\d+)$/.exec(r),n){let Q;try{Q=A.readFileSync(n[1],"utf8")}catch{break}let B=Q.split(/\r\n|\r|\n|\u2028|\u2029/)[+n[2]-1]||"",C=+n[3]-1,i=B.slice(C,C+t.length)===t?t.length:0;return{file:n[1],namespace:"file",line:+n[2],column:Me(B.slice(0,C)).length,length:Me(B.slice(C,C+i)).length,lineText:B+
+e.slice(1).join(
),suggestion:""}}break}}return null}function hg(A,e,t){let o=5;A+=e.length<1?"": with ${e.length} error${e.length<2?"":"s"}:+e.slice(0,o+1).map((r,n)=>{if(n===o)return
...;if(!r.location)return
${Q}:${B}:${C}: ERROR: ${i}${r.text}}).join("");let g=new Error(A);for(let[r,n]of[["errors",e],["warnings",t]])Object.defineProperty(g,r,{configurable:!0,enumerable:!0,get:()=>n,set:Q=>Object.defineProperty(g,r,{configurable:!0,enumerable:!0,value:Q})});return g}function Go(A,e){for(let t of A)t.detail=e.load(t.detail);return A}function LE(A,e,t){if(A==null)return null;let o={},g=w(A,o,"file",T),r=w(A,o,"namespace",T),n=w(A,o,"line",Ao),Q=w(A,o,"column",Ao),B=w(A,o,"length",Ao),C=w(A,o,"lineText",T),i=w(A,o,"suggestion",T);if(MA(A,o,e),C){let I=C.slice(0,(Q&&Q>0?Q:0)+(B&&B>0?B:0)+(t&&t>0?t:80));!/[\x7F-\uFFFF]/.test(I)&&!/\n/.test(C)&&(C=I)}return{file:g||"",namespace:r||"",line:n||0,column:Q||0,length:B||0,lineText:C||"",suggestion:i||""}}function Pe(A,e,t,o,g){let r=[],n=0;for(let Q of A){let B={},C=w(Q,B,"id",T),i=w(Q,B,"pluginName",T),I=w(Q,B,"text",T),s=w(Q,B,"location",UE),a=w(Q,B,"notes",DA),c=w(Q,B,"detail",tQ),l=in element ${n} of "${e}";MA(Q,B,l);let D=[];if(a)for(let m of a){let N={},u=w(m,N,"text",T),p=w(m,N,"location",UE);MA(m,N,l),D.push({text:u||"",location:LE(p,l,g)})}r.push({id:C||"",pluginName:i||o,text:I||"",location:LE(s,l,g),notes:D,detail:t?t.store(c):-1}),n++}return r}function eQ(A,e){let t=[];for(let o of A){if(typeof o!="string")throw new Error(${fA(e)} must be an array of strings);t.push(o)}return t}function vM(A,e){let t=Object.create(null);for(let o in A){let g=A[o];if(typeof g!="string")throw new Error(key ${fA(o)} in object ${fA(e)} must be a string);t[o]=g}return t}function HM({path:A,contents:e,hash:t}){let o=null;return{path:A,contents:e,hash:t,get text(){let g=this.contents;return(o===null||g!==e)&&(e=g,o=yo(g)),o}}}var qE=mg,QQ=A=>nQ().build(A),_E=(A,e)=>nQ().transform(A,e),$E=(A,e)=>nQ().formatMessages(A,e),Ac=(A,e)=>nQ().analyzeMetafile(A,e);var eo,VE,rQ,nQ=()=>{if(rQ)return rQ;throw eo?new Error('You need to wait for the promise returned from "initialize" to be resolved before calling this'):new Error('You need to call "initialize" before calling this')},BQ=A=>{A=HE(A||{});let e=A.wasmModule,t=A.workerURL;if(!e)throw new Error('Must provide the "wasmModule" option');if(eo)throw new Error('Cannot call "initialize" more than once');return eo=XM(e,t),eo.catch(()=>{eo=void 0}),eo},XM=async(A,e)=>{let t=new Worker(e.toString(),{type:"module"}),o,g,r=new Promise((B,C)=>{o=B,g=C});t.onmessage=({data:B})=>{t.onmessage=({data:C})=>n(C),B?g(B):o()},t.postMessage(A);let{readFromStdout:n,service:Q}=zE({writeToStdin(B){t.postMessage(B)},isSync:!1,hasFS:!1,esbuild:{build:QQ,transform:_E,formatMessages:$E,analyzeMetafile:Ac,version:qE,initialize:BQ}});await r,VE=()=>{t.terminate(),eo=void 0,VE=void 0,rQ=void 0},rQ={build:B=>new Promise((C,i)=>Q.buildOrContext({callName:"build",refs:null,options:B,isTTY:!1,defaultWD:"/",callback:(I,s)=>I?i(I):C(s)})),transform:(B,C)=>new Promise((i,I)=>Q.transform({callName:"transform",refs:null,input:B,options:C||{},isTTY:!1,fs:{readFile(s,a){a(new Error("Internal error"),null)},writeFile(s,a){a(null)}},callback:(s,a)=>s?I(s):i(a)})),formatMessages:(B,C)=>new Promise((i,I)=>Q.formatMessages({callName:"formatMessages",refs:null,messages:B,options:C,callback:(s,a)=>s?I(s):i(a)})),analyzeMetafile:(B,C)=>new Promise((i,I)=>Q.analyzeMetafile({callName:"analyzeMetafile",refs:null,metafile:typeof B=="string"?B:JSON.stringify(B),options:C,callback:(s,a)=>s?I(s):i(a)}))}};self.Deno||(self.Deno={build:{os:"linux"},errors:{AlreadyExists:Error},env:{get:()=>{}},permissions:{query:()=>Promise.resolve("denied")},cwd:()=>location.href});function zA(A){if(typeof A!="string")throw new TypeError(Path must be a string. Received ${JSON.stringify(A)})}function Fe(A){return A===47||A===92}function Ve(A){return A>=97&&A<=122||A>=65&&A<=90}function IQ(A){if(A=A instanceof URL?A:new URL(A),A.protocol!=="file:")throw new TypeError("Must be a file URL.");return A}function ec(A){A=IQ(A);let e=decodeURIComponent(A.pathname.replace(/\//g,"\\").replace(/%(?![0-9A-Fa-f]{2})/g,"%25")).replace(/^\\*([A-Za-z]:)(\\|$)/,"$1\\");return A.hostname!==""&&(e=\\\\${A.hostname}${e}),e}function ZB(A){zA(A);let e=A.length;if(e===0)return!1;let t=A.charCodeAt(0);return Fe(t)?!0:!!(Ve(t)&&e>2&&A.charCodeAt(1)===58&&Fe(A.charCodeAt(2)))}var sQ=class extends Error{constructor(e){super(e),this.name="AssertionError"}};function ko(A,e=""){if(!A)throw new sQ(e)}var rN={" ":"%09","\n":"%0A","\v":"%0B","\f":"%0C","\r":"%0D"," ":"%20"};function aQ(A){return A.replaceAll(/[\s]/g,e=>rN[e]??e)}function gc(A){if(!ZB(A))throw new TypeError("Must be an absolute path.");let[,e,t]=A.match(/^(?:[/\\]{2}([^/\\]+)(?=[/\\](?:[^/\\]|$)))?(.*)/),o=new URL("file:///");if(o.pathname=aQ(t.replace(/%/g,"%25")),e!==void 0&&e!=="localhost"&&(o.hostname=e,!o.hostname))throw new TypeError("Invalid hostname.");return o}function qe(A){return A===47}function nc(A){return A=IQ(A),decodeURIComponent(A.pathname.replace(/%(?![0-9A-Fa-f]{2})/g,"%25"))}function LB(A){return zA(A),A.length>0&&qe(A.charCodeAt(0))}function Cc(A){if(!LB(A))throw new TypeError("Must be an absolute path.");let e=new URL("file:///");return e.pathname=aQ(A.replace(/%/g,"%25").replace(/\\/g,"%5C")),e}var lN=(()=>{let{Deno:A}=globalThis;if(typeof A?.build?.os=="string")return A.build.os;let{navigator:e}=globalThis;return e?.appVersion?.includes?.("Win")?"windows":"linux"})(),NA=lN==="windows";function Yo(A){return NA?ec(A):nc(A)}function bo(A){return NA?gc(A):Cc(A)}var L8=Deno.build.os==="windows";var E5=Deno.build.os==="windows";var M5=new Deno.errors.AlreadyExists("dest already exists.");var x5=Deno.build.os==="windows";var hN=
,dN=\r
,R5=Deno?.build.os==="windows"?dN:hN;var cQ={};Qt(cQ,{parse:()=>uN});function uN(A,{allowTrailingComma:e=!0}={}){if(new.target)throw new TypeError("parse is not a constructor");return new HB(A,{allowTrailingComma:e}).parse()}var sc=globalThis.JSON.parse,HB=class{#r=new Set( \r
);#t=new Set([..."[]{}:,/",...this.#r]);#e;#A;#g;#n;constructor(e,t){this.#e=${e},this.#A=this.#e.length,this.#g=this.#C(),this.#n=t}parse(){let e=this.#o(),t=this.#i(e),{done:o,value:g}=this.#g.next();if(!o)throw new SyntaxError(wt(g));return t}#o(){let{done:e,value:t}=this.#g.next();if(e)throw new SyntaxError("Unexpected end of JSONC input");return t}*#C(){for(let e=0;e<this.#A;e++)if(!this.#r.has(this.#e[e])){if(this.#e[e]==="/"&&this.#e[e+1]==="*"){e+=2;let t=!1;for(;e<this.#A;e++)if(this.#e[e]==="*"&&this.#e[e+1]==="/"){t=!0;break}if(!t)throw new SyntaxError("Unexpected end of JSONC input");e++;continue}if(this.#e[e]==="/"&&this.#e[e+1]==="/"){for(e+=2;e<this.#A&&!(this.#e[e]===
||this.#e[e]==="\r");e++);continue}switch(this.#e[e]){case"{":yield{type:"BeginObject",position:e};break;case"}":yield{type:"EndObject",position:e};break;case"[":yield{type:"BeginArray",position:e};break;case"]":yield{type:"EndArray",position:e};break;case":":yield{type:"NameSeparator",position:e};break;case",":yield{type:"ValueSeparator",position:e};break;case'"':{let t=e,o=!1;for(e++;e<this.#A&&!(this.#e[e]==='"'&&!o);e++)o=this.#e[e]==="\\"&&!o;yield{type:"String",sourceText:this.#e.substring(t,e+1),position:t};break}default:{let t=e;for(;e<this.#A&&!this.#t.has(this.#e[e]);e++);e--,yield{type:"NullOrTrueOrFalseOrNumber",sourceText:this.#e.substring(t,e+1),position:t}}}}}#i(e){switch(e.type){case"BeginObject":return this.#s();case"BeginArray":return this.#Q();case"NullOrTrueOrFalseOrNumber":return this.#l(e);case"String":return this.#c(e);default:throw new SyntaxError(wt(e))}}#s(){let e={};for(let t=!0;;t=!1){let o=this.#o();if((t||this.#n.allowTrailingComma)&&o.type==="EndObject")return e;if(o.type!=="String")throw new SyntaxError(wt(o));let g=this.#c(o),r=this.#o();if(r.type!=="NameSeparator")throw new SyntaxError(wt(r));let n=this.#o();Object.defineProperty(e,g,{value:this.#i(n),writable:!0,enumerable:!0,configurable:!0});let Q=this.#o();if(Q.type==="EndObject")return e;if(Q.type!=="ValueSeparator")throw new SyntaxError(wt(Q))}}#Q(){let e=[];for(let t=!0;;t=!1){let o=this.#o();if((t||this.#n.allowTrailingComma)&&o.type==="EndArray")return e;e.push(this.#i(o));let g=this.#o();if(g.type==="EndArray")return e;if(g.type!=="ValueSeparator")throw new SyntaxError(wt(g))}}#c(e){let t;try{t=sc(e.sourceText)}catch{throw new SyntaxError(wt(e))}return ko(typeof t=="string"),t}#l(e){if(e.sourceText==="null")return null;if(e.sourceText==="true")return!0;if(e.sourceText==="false")return!1;let t;try{t=sc(e.sourceText)}catch{throw new SyntaxError(wt(e))}return ko(typeof t=="number"),t}};function wt({type:A,sourceText:e,position:t}){let o="";switch(A){case"BeginObject":o="{";break;case"EndObject":o="}";break;case"BeginArray":o="[";break;case"EndArray":o="]";break;case"NameSeparator":o=":";break;case"ValueSeparator":o=",";break;case"NullOrTrueOrFalseOrNumber":case"String":o=30<e.length?${e.slice(0,30)}...:e;break;default:throw new Error("unreachable")}returnUnexpected token ${o} in JSONC at position ${t}}var A_=new TextEncoder;var fN=[],MN=[],WB="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";for(let A=0,e=WB.length;A<e;++A)fN[A]=WB[A],MN[WB.charCodeAt(A)]=A;function lQ(A){return typeof A=="object"&&A!==null&&A.constructor===Object}function DQ(A){let e={},t=Object.keys(A).sort((o,g)=>g.length-o.length);for(let o of t)e[o]=A[o];return e}function ac(A){return lQ(A)&&(A.imports!==void 0?XB(A.imports):!0)&&(A.scopes!==void 0?zB(A.scopes):!0)}function XB(A){return lQ(A)}function zB(A){return lQ(A)&&Object.values(A).every(e=>KB(e))}function KB(A){return lQ(A)}function pQ(A){try{return new URL(A),!0}catch{return!1}}function cc(A,e){let t={};for(let[o,g]of Object.entries(A)){let r=yN(o,e);if(r===null)continue;if(typeof g!="string"){console.warn("addresses need to be strings."),t[r]=null;continue}let n=PB(g,e);if(n===null){console.warn("the address was invalid."),t[r]=null;continue}if(o.endsWith("/")&&!xe(n).endsWith("/")){console.warn("an invalid address was given for the specifier key specifierKey; since specifierKey ended in a slash, the address needs to as well."),t[r]=null;continue}t[r]=xe(n)}return DQ(t)}function xe(A){return A.href}function NN(A,e){let t={};for(let[g,r]of Object.entries(A)){if(!KB(r))throw new TypeError("the value of the scope with prefix scopePrefix needs to be an object.");let n;try{n=new URL(g,e)}catch{console.warn("the scope prefix URL was not parseable.");continue}let Q=xe(n);t[Q]=cc(r,e)}let o={};for(let g of Object.keys(t))o[g]=DQ(t[g]);return DQ(o)}function yN(A,e){if(!A.length)return console.warn("specifier key cannot be an empty string."),null;let t=PB(A,e);return t!==null?xe(t):A}function PB(A,e){if(e&&(A.startsWith("/")||A.startsWith("./")||A.startsWith("../")))try{return new URL(A,e)}catch{return null}try{return new URL(A)}catch{return null}}var GN=["ftp","file","http","https","ws","wss"];function kN(A){return GN.some(e=>xe(A).startsWith(e))}function Ec(A,e,t){for(let[o,g]of Object.entries(t))if(o===A){if(g===null)throw new TypeError("resolution of specifierKey was blocked by a null entry.");if(!pQ(g))throw new TypeError("resolutionResult must be an URL.");return g}else if(o.endsWith("/")&&A.startsWith(o)&&(e===null||kN(e))){if(g===null)throw new TypeError("resolution of specifierKey was blocked by a null entry.");if(!pQ(g))throw new TypeError("resolutionResult must be an URL.");let r=A.slice(o.length);if(!g.endsWith("/"))throw new TypeError('resolutionResult does not end with "/"');try{let n=new URL(r,g);if(!pQ(n))throw new TypeError("url must be an URL.");if(!xe(n).startsWith(g))throw new TypeError("resolution of normalizedSpecifier was blocked due to it backtracking above its prefix specifierKey.");return xe(n)}catch{throw new TypeError("resolution of normalizedSpecifier was blocked since the afterPrefix portion could not be URL-parsed relative to the resolutionResult mapped to by the specifierKey prefix.")}}return null}function wQ(A,e){let t={};if(!ac(A))throw new TypeError("the top-level value needs to be a JSON object.");let{imports:o,scopes:g}=A;if(o!==void 0){if(!XB(o))throw new TypeError('"imports" top-level key needs to be an object.');t=cc(o,e)}let r={};if(g!==void 0){if(!zB(g))throw new TypeError('"scopes" top-level key needs to be an object.');r=NN(g,e)}return Object.keys(A).find(n=>n!=="imports"&&n!=="scopes")&&console.warn("an invalid top-level key was present in the import map."),{imports:t,scopes:r}}function VB(A,{imports:e={},scopes:t={}},o){let g=xe(o),r=PB(A,o),n=r!==null?xe(r):A;for(let[B,C]of Object.entries(t))if(B===g||B.endsWith("/")&&g.startsWith(B)){let i=Ec(n,r,C);if(i!==null)return i}let Q=Ec(n,r,e);if(Q!==null)return Q;if(r!==null)return xe(r);throw new TypeError("specifier was a bare specifier, but was not remapped to anything by importMap.")}var lc=(()=>{let{Deno:A}=globalThis;if(typeof A?.build?.os=="string")return A.build.os;let{navigator:e}=globalThis;return e?.appVersion?.includes?.("Win")?"windows":"linux"})(),Mg=lc==="windows";var Ng={};Qt(Ng,{basename:()=>SN,delimiter:()=>RN,dirname:()=>TN,extname:()=>vN,format:()=>HN,fromFileUrl:()=>XN,isAbsolute:()=>pc,join:()=>ZN,normalize:()=>Dc,parse:()=>WN,relative:()=>UN,resolve:()=>uQ,sep:()=>JN,toFileUrl:()=>zN,toNamespacedPath:()=>LN});function pA(A){if(typeof A!="string")throw new TypeError(Path must be a string. Received ${JSON.stringify(A)})}function mQ(A){return A===47}function K(A){return mQ(A)||A===92}function $e(A){return A>=97&&A<=122||A>=65&&A<=90}function jo(A,e,t,o){let g="",r=0,n=-1,Q=0,B;for(let C=0,i=A.length;C<=i;++C){if(C<i)B=A.charCodeAt(C);else{if(o(B))break;B=47}if(o(B)){if(!(n===C-1||Q===1))if(n!==C-1&&Q===2){if(g.length<2||r!==2||g.charCodeAt(g.length-1)!==46||g.charCodeAt(g.length-2)!==46){if(g.length>2){let I=g.lastIndexOf(t);I===-1?(g="",r=0):(g=g.slice(0,I),r=g.length-1-g.lastIndexOf(t)),n=C,Q=0;continue}else if(g.length===2||g.length===1){g="",r=0,n=C,Q=0;continue}}e&&(g.length>0?g+=${t}..:g="..",r=2)}else g.length>0?g+=t+A.slice(n+1,C):g=A.slice(n+1,C),r=C-n-1;n=C,Q=0}else B===46&&Q!==-1?++Q:Q=-1}return g}function hQ(A,e){let t=e.dir||e.root,o=e.base||(e.name||"")+(e.ext||"");return t?t===e.root?t+o:t+A+o:o}var FN={" ":"%09","\n":"%0A","\v":"%0B","\f":"%0C","\r":"%0D"," ":"%20"};function dQ(A){return A.replaceAll(/[\s]/g,e=>FN[e]??e)}var qB=class extends Error{constructor(e){super(e),this.name="DenoStdInternalError"}};function _B(A,e=""){if(!A)throw new qB(e)}var JN="\\",RN=";";function uQ(...A){let e="",t="",o=!1;for(let g=A.length-1;g>=-1;g--){let r,{Deno:n}=globalThis;if(g>=0)r=A[g];else if(e){if(typeof n?.env?.get!="function"||typeof n?.cwd!="function")throw new TypeError("Resolved a relative path without a CWD.");r=n.cwd(),(r===void 0||r.slice(0,3).toLowerCase()!==${e.toLowerCase()}\\)&&(r=${e}\\)}else{if(typeof n?.cwd!="function")throw new TypeError("Resolved a drive-letter-less path without a CWD.");r=n.cwd()}pA(r);let Q=r.length;if(Q===0)continue;let B=0,C="",i=!1,I=r.charCodeAt(0);if(Q>1)if(K(I))if(i=!0,K(r.charCodeAt(1))){let s=2,a=s;for(;s<Q&&!K(r.charCodeAt(s));++s);if(s<Q&&s!==a){let c=r.slice(a,s);for(a=s;s<Q&&K(r.charCodeAt(s));++s);if(s<Q&&s!==a){for(a=s;s<Q&&!K(r.charCodeAt(s));++s);s===Q?(C=\\\\${c}\\${r.slice(a)},B=s):s!==a&&(C=\\\\${c}\\${r.slice(a,s)},B=s)}}}else B=1;else $e(I)&&r.charCodeAt(1)===58&&(C=r.slice(0,2),B=2,Q>2&&K(r.charCodeAt(2))&&(i=!0,B=3));else K(I)&&(B=1,i=!0);if(!(C.length>0&&e.length>0&&C.toLowerCase()!==e.toLowerCase())&&(e.length===0&&C.length>0&&(e=C),o||(t=${r.slice(B)}\\${t},o=i),o&&e.length>0))break}return t=jo(t,!o,"\\",K),e+(o?"\\":"")+t||"."}function Dc(A){pA(A);let e=A.length;if(e===0)return".";let t=0,o,g=!1,r=A.charCodeAt(0);if(e>1)if(K(r))if(g=!0,K(A.charCodeAt(1))){let Q=2,B=Q;for(;Q<e&&!K(A.charCodeAt(Q));++Q);if(Q<e&&Q!==B){let C=A.slice(B,Q);for(B=Q;Q<e&&K(A.charCodeAt(Q));++Q);if(Q<e&&Q!==B){for(B=Q;Q<e&&!K(A.charCodeAt(Q));++Q);if(Q===e)return\\\\${C}\\${A.slice(B)}\\;Q!==B&&(o=\\\\${C}\\${A.slice(B,Q)},t=Q)}}}else t=1;else $e(r)&&A.charCodeAt(1)===58&&(o=A.slice(0,2),t=2,e>2&&K(A.charCodeAt(2))&&(g=!0,t=3));else if(K(r))return"\\";let n;return t<e?n=jo(A.slice(t),!g,"\\",K):n="",n.length===0&&!g&&(n="."),n.length>0&&K(A.charCodeAt(e-1))&&(n+="\\"),o===void 0?g?n.length>0?\\${n}:"\\":n.length>0?n:"":g?n.length>0?${o}\\${n}:${o}\\:n.length>0?o+n:o}function pc(A){pA(A);let e=A.length;if(e===0)return!1;let t=A.charCodeAt(0);return K(t)?!0:!!($e(t)&&e>2&&A.charCodeAt(1)===58&&K(A.charCodeAt(2)))}function ZN(...A){let e=A.length;if(e===0)return".";let t,o=null;for(let n=0;n<e;++n){let Q=A[n];pA(Q),Q.length>0&&(t===void 0?t=o=Q:t+=\\${Q})}if(t===void 0)return".";let g=!0,r=0;if(_B(o!=null),K(o.charCodeAt(0))){++r;let n=o.length;n>1&&K(o.charCodeAt(1))&&(++r,n>2&&(K(o.charCodeAt(2))?++r:g=!1))}if(g){for(;r<t.length&&K(t.charCodeAt(r));++r);r>=2&&(t=\\${t.slice(r)})}return Dc(t)}function UN(A,e){if(pA(A),pA(e),A===e)return"";let t=uQ(A),o=uQ(e);if(t===o||(A=t.toLowerCase(),e=o.toLowerCase(),A===e))return"";let g=0,r=A.length;for(;g<r&&A.charCodeAt(g)===92;++g);for(;r-1>g&&A.charCodeAt(r-1)===92;--r);let n=r-g,Q=0,B=e.length;for(;Q<B&&e.charCodeAt(Q)===92;++Q);for(;B-1>Q&&e.charCodeAt(B-1)===92;--B);let C=B-Q,i=n<C?n:C,I=-1,s=0;for(;s<=i;++s){if(s===i){if(C>i){if(e.charCodeAt(Q+s)===92)return o.slice(Q+s+1);if(s===2)return o.slice(Q+s)}n>i&&(A.charCodeAt(g+s)===92?I=s:s===2&&(I=3));break}let c=A.charCodeAt(g+s),l=e.charCodeAt(Q+s);if(c!==l)break;c===92&&(I=s)}if(s!==i&&I===-1)return o;let a="";for(I===-1&&(I=0),s=g+I+1;s<=r;++s)(s===r||A.charCodeAt(s)===92)&&(a.length===0?a+="..":a+="\\..");return a.length>0?a+o.slice(Q+I,B):(Q+=I,o.charCodeAt(Q)===92&&++Q,o.slice(Q,B))}function LN(A){if(typeof A!="string")return A;if(A.length===0)return"";let e=uQ(A);if(e.length>=3){if(e.charCodeAt(0)===92){if(e.charCodeAt(1)===92){let t=e.charCodeAt(2);if(t!==63&&t!==46)return\\\\?\\UNC\\${e.slice(2)}}}else if($e(e.charCodeAt(0))&&e.charCodeAt(1)===58&&e.charCodeAt(2)===92)return\\\\?\\${e}}return A}function TN(A){pA(A);let e=A.length;if(e===0)return".";let t=-1,o=-1,g=!0,r=0,n=A.charCodeAt(0);if(e>1)if(K(n)){if(t=r=1,K(A.charCodeAt(1))){let Q=2,B=Q;for(;Q<e&&!K(A.charCodeAt(Q));++Q);if(Q<e&&Q!==B){for(B=Q;Q<e&&K(A.charCodeAt(Q));++Q);if(Q<e&&Q!==B){for(B=Q;Q<e&&!K(A.charCodeAt(Q));++Q);if(Q===e)return A;Q!==B&&(t=r=Q+1)}}}}else $e(n)&&A.charCodeAt(1)===58&&(t=r=2,e>2&&K(A.charCodeAt(2))&&(t=r=3));else if(K(n))return A;for(let Q=e-1;Q>=r;--Q)if(K(A.charCodeAt(Q))){if(!g){o=Q;break}}else g=!1;if(o===-1){if(t===-1)return".";o=t}return A.slice(0,o)}function SN(A,e=""){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');pA(A);let t=0,o=-1,g=!0,r;if(A.length>=2){let n=A.charCodeAt(0);$e(n)&&A.charCodeAt(1)===58&&(t=2)}if(e!==void 0&&e.length>0&&e.length<=A.length){if(e.length===A.length&&e===A)return"";let n=e.length-1,Q=-1;for(r=A.length-1;r>=t;--r){let B=A.charCodeAt(r);if(K(B)){if(!g){t=r+1;break}}else Q===-1&&(g=!1,Q=r+1),n>=0&&(B===e.charCodeAt(n)?--n===-1&&(o=r):(n=-1,o=Q))}return t===o?o=Q:o===-1&&(o=A.length),A.slice(t,o)}else{for(r=A.length-1;r>=t;--r)if(K(A.charCodeAt(r))){if(!g){t=r+1;break}}else o===-1&&(g=!1,o=r+1);return o===-1?"":A.slice(t,o)}}function vN(A){pA(A);let e=0,t=-1,o=0,g=-1,r=!0,n=0;A.length>=2&&A.charCodeAt(1)===58&&$e(A.charCodeAt(0))&&(e=o=2);for(let Q=A.length-1;Q>=e;--Q){let B=A.charCodeAt(Q);if(K(B)){if(!r){o=Q+1;break}continue}g===-1&&(r=!1,g=Q+1),B===46?t===-1?t=Q:n!==1&&(n=1):t!==-1&&(n=-1)}return t===-1||g===-1||n===0||n===1&&t===g-1&&t===o+1?"":A.slice(t,g)}function HN(A){if(A===null||typeof A!="object")throw new TypeError(The "pathObject" argument must be of type Object. Received type ${typeof A});return hQ("\\",A)}function WN(A){pA(A);let e={root:"",dir:"",base:"",ext:"",name:""},t=A.length;if(t===0)return e;let o=0,g=A.charCodeAt(0);if(t>1){if(K(g)){if(o=1,K(A.charCodeAt(1))){let I=2,s=I;for(;I<t&&!K(A.charCodeAt(I));++I);if(I<t&&I!==s){for(s=I;I<t&&K(A.charCodeAt(I));++I);if(I<t&&I!==s){for(s=I;I<t&&!K(A.charCodeAt(I));++I);I===t?o=I:I!==s&&(o=I+1)}}}}else if($e(g)&&A.charCodeAt(1)===58)if(o=2,t>2){if(K(A.charCodeAt(2))){if(t===3)return e.root=e.dir=A,e;o=3}}else return e.root=e.dir=A,e}else if(K(g))return e.root=e.dir=A,e;o>0&&(e.root=A.slice(0,o));let r=-1,n=o,Q=-1,B=!0,C=A.length-1,i=0;for(;C>=o;--C){if(g=A.charCodeAt(C),K(g)){if(!B){n=C+1;break}continue}Q===-1&&(B=!1,Q=C+1),g===46?r===-1?r=C:i!==1&&(i=1):r!==-1&&(i=-1)}return r===-1||Q===-1||i===0||i===1&&r===Q-1&&r===n+1?Q!==-1&&(e.base=e.name=A.slice(n,Q)):(e.name=A.slice(n,r),e.base=A.slice(n,Q),e.ext=A.slice(r,Q)),n>0&&n!==o?e.dir=A.slice(0,n-1):e.dir=e.root,e}function XN(A){if(A=A instanceof URL?A:new URL(A),A.protocol!="file:")throw new TypeError("Must be a file URL.");let e=decodeURIComponent(A.pathname.replace(/\//g,"\\").replace(/%(?![0-9A-Fa-f]{2})/g,"%25")).replace(/^\\*([A-Za-z]:)(\\|$)/,"$1\\");return A.hostname!=""&&(e=\\\\${A.hostname}${e}),e}function zN(A){if(!pc(A))throw new TypeError("Must be an absolute path.");let[,e,t]=A.match(/^(?:[/\\]{2}([^/\\]+)(?=[/\\](?:[^/\\]|$)))?(.*)/),o=new URL("file:///");if(o.pathname=dQ(t.replace(/%/g,"%25")),e!=null&&e!="localhost"&&(o.hostname=e,!o.hostname))throw new TypeError("Invalid hostname.");return o}var yg={};Qt(yg,{basename:()=>Ay,delimiter:()=>PN,dirname:()=>$N,extname:()=>ey,format:()=>ty,fromFileUrl:()=>gy,isAbsolute:()=>mc,join:()=>VN,normalize:()=>wc,parse:()=>oy,relative:()=>qN,resolve:()=>$B,sep:()=>KN,toFileUrl:()=>ry,toNamespacedPath:()=>_N});var KN="/",PN=":";function $B(...A){let e="",t=!1;for(let o=A.length-1;o>=-1&&!t;o--){let g;if(o>=0)g=A[o];else{let{Deno:r}=globalThis;if(typeof r?.cwd!="function")throw new TypeError("Resolved a relative path without a CWD.");g=r.cwd()}pA(g),g.length!==0&&(e=${g}/${e},t=g.charCodeAt(0)===47)}return e=jo(e,!t,"/",mQ),t?e.length>0?/${e}:"/":e.length>0?e:"."}function wc(A){if(pA(A),A.length===0)return".";let e=A.charCodeAt(0)===47,t=A.charCodeAt(A.length-1)===47;return A=jo(A,!e,"/",mQ),A.length===0&&!e&&(A="."),A.length>0&&t&&(A+="/"),e?/${A}:A}function mc(A){return pA(A),A.length>0&&A.charCodeAt(0)===47}function VN(...A){if(A.length===0)return".";let e;for(let t=0,o=A.length;t<o;++t){let g=A[t];pA(g),g.length>0&&(e?e+=/${g}:e=g)}return e?wc(e):"."}function qN(A,e){if(pA(A),pA(e),A===e||(A=$B(A),e=$B(e),A===e))return"";let t=1,o=A.length;for(;t<o&&A.charCodeAt(t)===47;++t);let g=o-t,r=1,n=e.length;for(;r<n&&e.charCodeAt(r)===47;++r);let Q=n-r,B=g<Q?g:Q,C=-1,i=0;for(;i<=B;++i){if(i===B){if(Q>B){if(e.charCodeAt(r+i)===47)return e.slice(r+i+1);if(i===0)return e.slice(r+i)}else g>B&&(A.charCodeAt(t+i)===47?C=i:i===0&&(C=0));break}let s=A.charCodeAt(t+i),a=e.charCodeAt(r+i);if(s!==a)break;s===47&&(C=i)}let I="";for(i=t+C+1;i<=o;++i)(i===o||A.charCodeAt(i)===47)&&(I.length===0?I+="..":I+="/..");return I.length>0?I+e.slice(r+C):(r+=C,e.charCodeAt(r)===47&&++r,e.slice(r))}function _N(A){return A}function $N(A){if(pA(A),A.length===0)return".";let e=A.charCodeAt(0)===47,t=-1,o=!0;for(let g=A.length-1;g>=1;--g)if(A.charCodeAt(g)===47){if(!o){t=g;break}}else o=!1;return t===-1?e?"/":".":e&&t===1?"//":A.slice(0,t)}function Ay(A,e=""){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');pA(A);let t=0,o=-1,g=!0,r;if(e!==void 0&&e.length>0&&e.length<=A.length){if(e.length===A.length&&e===A)return"";let n=e.length-1,Q=-1;for(r=A.length-1;r>=0;--r){let B=A.charCodeAt(r);if(B===47){if(!g){t=r+1;break}}else Q===-1&&(g=!1,Q=r+1),n>=0&&(B===e.charCodeAt(n)?--n===-1&&(o=r):(n=-1,o=Q))}return t===o?o=Q:o===-1&&(o=A.length),A.slice(t,o)}else{for(r=A.length-1;r>=0;--r)if(A.charCodeAt(r)===47){if(!g){t=r+1;break}}else o===-1&&(g=!1,o=r+1);return o===-1?"":A.slice(t,o)}}function ey(A){pA(A);let e=-1,t=0,o=-1,g=!0,r=0;for(let n=A.length-1;n>=0;--n){let Q=A.charCodeAt(n);if(Q===47){if(!g){t=n+1;break}continue}o===-1&&(g=!1,o=n+1),Q===46?e===-1?e=n:r!==1&&(r=1):e!==-1&&(r=-1)}return e===-1||o===-1||r===0||r===1&&e===o-1&&e===t+1?"":A.slice(e,o)}function ty(A){if(A===null||typeof A!="object")throw new TypeError(The "pathObject" argument must be of type Object. Received type ${typeof A});return hQ("/",A)}function oy(A){pA(A);let e={root:"",dir:"",base:"",ext:"",name:""};if(A.length===0)return e;let t=A.charCodeAt(0)===47,o;t?(e.root="/",o=1):o=0;let g=-1,r=0,n=-1,Q=!0,B=A.length-1,C=0;for(;B>=o;--B){let i=A.charCodeAt(B);if(i===47){if(!Q){r=B+1;break}continue}n===-1&&(Q=!1,n=B+1),i===46?g===-1?g=B:C!==1&&(C=1):g!==-1&&(C=-1)}return g===-1||n===-1||C===0||C===1&&g===n-1&&g===r+1?n!==-1&&(r===0&&t?e.base=e.name=A.slice(1,n):e.base=e.name=A.slice(r,n)):(r===0&&t?(e.name=A.slice(1,g),e.base=A.slice(1,n)):(e.name=A.slice(r,g),e.base=A.slice(r,n)),e.ext=A.slice(g,n)),r>0?e.dir=A.slice(0,r-1):t&&(e.dir="/"),e}function gy(A){if(A=A instanceof URL?A:new URL(A),A.protocol!="file:")throw new TypeError("Must be a file URL.");return decodeURIComponent(A.pathname.replace(/%(?![0-9A-Fa-f]{2})/g,"%25"))}function ry(A){if(!mc(A))throw new TypeError("Must be an absolute path.");let e=new URL("file:///");return e.pathname=dQ(A.replace(/%/g,"%25").replace(/\\/g,"%5C")),e}var ny=Mg?Ng:yg,{join:G_,normalize:k_}=ny;var By=Mg?Ng:yg;var{basename:j_,delimiter:O_,dirname:dc,extname:Cy,format:F_,fromFileUrl:uc,isAbsolute:fQ,join:MQ,normalize:fc,parse:x_,relative:J_,resolve:Mc,sep:Nc,toFileUrl:R_,toNamespacedPath:Z_}=By;var{Deno:yc}=globalThis,z_=typeof yc?.noColor=="boolean"?yc.noColor:!0;var K_=new RegExp(["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|"),"g");var Q7=32*1024,n7=2**32-2;var I7=32*1024;var kc,cy=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&cy.decode();var Yc=new Array(128).fill(void 0);Yc.push(void 0,null,!0,!1);var d7=Yc.length;var u7=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}};var f7=new FinalizationRegistry(A=>kc.__wbg_globalhttpcache_free(A>>>0));var M7=new FinalizationRegistry(A=>kc.__wbg_localhttpcache_free(A>>>0));function NQ(A){if(A.protocol==="file:")return{path:Yo(A),namespace:"file"};let e=A.protocol.slice(0,-1);return{path:A.href.slice(e.length+1),namespace:e}}async function eC(A){let e=await Deno.readTextFile(A),t=cQ.parse(e);if(typeof t!="object"||t===null||Array.isArray(t))throw new Error(Deno config at ${A} must be an object);if("imports"in t&&(typeof t.imports!="object"||t.imports===null||Array.isArray(t.imports)))throw new Error(Deno config at ${A} has invalid "imports" key);if("scopes"in t&&(typeof t.scopes!="object"||t.scopes===null||Array.isArray(t.scopes)))throw new Error(Deno config at ${A} has invalid "scopes" key);if("lock"in t&&typeof t.lock!="boolean"&&typeof t.lock!="string")throw new Error(Deno config at ${A} has invalid "lock" key);if("importMap"in t&&typeof t.importMap!="string")throw new Error(Deno config at ${A} has invalid "importMap" key);return t}function jc(A){if(A.imports!==void 0){let e=[];for(let[t,o]of Object.entries(A.imports))if(e.push([t,o]),!t.endsWith("/")&&o&&(o.startsWith("jsr:")||o.startsWith("npm:"))&&!A.imports[t+"/"]){let g=t+"/",r=o.slice(0,4)+"/"+o.slice(o[4]==="/"?5:4)+"/";e.push([g,r])}A.imports=Object.fromEntries(e)}}var yQ=Symbol("IN_NODE_MODULES"),Oc=Symbol("IN_NODE_MODULES_RESOLVED");function tC(A={}){return{name:"deno-resolver",setup(e){let t=null,o,g=(e.initialOptions.external??[]).map(r=>new RegExp("^"+r.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*")+"$"));e.onStart(async function(){o=new Set;let n;if(A.importMapURL===void 0&&A.configPath!==void 0){let Q=await eC(A.configPath);if(Q.imports!==void 0||Q.scopes!==void 0){let B={imports:Q.imports,scopes:Q.scopes};jc(B),t=wQ(B,bo(A.configPath))}else Q.importMap!==void 0&&(n=new URL(Q.importMap,bo(A.configPath)).href)}else A.importMapURL!==void 0&&(n=A.importMapURL);if(n){let Q=await fetch(n),B=await Q.json();t=wQ(B,new URL(Q.url))}}),e.onResolve({filter:/.*/},async function(n){if(n.pluginData===Oc)return{};if(n.pluginData===yQ)return;if(o.has(n.importer)){let s=await e.resolve(n.path,{importer:n.importer,namespace:n.namespace,kind:n.kind,resolveDir:n.resolveDir,pluginData:yQ});return s.external||o.add(s.path),s}let Q;if(n.importer!==""){if(n.namespace==="")throw new Error("[assert] namespace is empty");Q=new URL(${n.namespace}:${n.importer})}else if(n.resolveDir!=="")Q=new URL(${bo(n.resolveDir).href}/);else return;let B;if(t!==null){let s=VB(n.path,t,new URL(Q));B=new URL(s)}else B=new URL(n.path,Q);for(let s of g)if(s.test(B.href))return{path:B.href,external:!0};let{path:C,namespace:i}=NQ(B),I=await e.resolve(C,{namespace:i,kind:n.kind});return I.pluginData===yQ&&o.add(I.path),I})}}}var L$=Deno.env.get("DENO_REGISTRY_URL")??"https://jsr.io";var Ny=await Deno.permissions.query({name:"run"}).then(A=>A.state!=="granted")?"portable":"native";var Fc=tC;var xc=" must not return ",yy="transformer",Gy="recoverer",ky="defaultValue",QAA=yy+xc,Jc="called with ",nAA=ky+" must not be ",BAA=Gy+xc,Yy="Ok",Rc="Err",by=Jc+Rc,jy=Jc+Yy,CAA="Carrying E in "+Rc+" instead of throwing it directly. See .cause",oC="an instance of Error of the current realm.",iAA="The thrown value is not "+oC,IAA="The contained E should be "+oC,sAA="This .cause is not "+oC;function Zc(A){return A.ok}function HA(A){return{ok:!0,val:A,err:null}}function ie(A){return!A.ok}function cA(A){return{ok:!1,val:null,err:A}}function $A(A){return Oy(A,by)}function to(A){return Fy(A,jy)}function Oy(A,e){if(!A.ok)throw new TypeError(e);return A.val}function Fy(A,e){if(A.ok)throw new TypeError(e);return A.err}async function Oo(A,e){if(ie(A))return A;let t=$A(A),o=await e(t);return HA(o)}var Uc=" must not return ",xy="transformer",Jy="recoverer",Ry="defaultValue",Zy=xy+Uc,Uy="called with ",Ly=Ry+" must not be ",Ty=Jy+Uc,GQ="null or undefined",lAA=Zy+GQ,DAA=Uy+GQ,pAA=Ly+GQ,wAA=Ty+GQ;function Sy(A){return A!=null}function vy(A){return{ok:!0,val:A,err:null}}function Hy(A){return{ok:!1,val:null,err:A}}function Lc(A,e){if(Sy(A))return vy(A);let t=e();return Hy(t)}var Tc=A=>!!(Wy.includes(A.hostname)||A.hostname.endsWith(".openai.azure.com")),Wy=["i.gyazo.com","t.gyazo.com","scrapbox.io","api.openai.com","*.openai.azure.com","maps.googleapis.com","upload.gyazo.com","storage.googleapis.com","sentry.io"];function TA(A){if(typeof A!="string")throw new TypeError(Path must be a string. Received ${JSON.stringify(A)})}function gC(A,e){if(e.length>=A.length)return A;let t=A.length-e.length;for(let o=e.length-1;o>=0;--o)if(A.charCodeAt(t+o)!==e.charCodeAt(o))return A;return A.slice(0,-e.length)}function rC(A,e,t=0){let o=!1,g=A.length;for(let r=A.length-1;r>=t;--r)if(e(A.charCodeAt(r))){if(o){t=r+1;break}}else o||(o=!0,g=r+1);return A.slice(t,g)}function QC(A,e){if(TA(A),A.length===0)return A;if(typeof e!="string")throw new TypeError(Suffix must be a string. Received ${JSON.stringify(e)})}function Fo(A,e){if(A.length<=1)return A;let t=A.length;for(let o=A.length-1;o>0&&e(A.charCodeAt(o));o--)t=o;return A.slice(0,t)}function Re(A){return A===47||A===92}function At(A){return A>=97&&A<=122||A>=65&&A<=90}function YQ(A){if(A=A instanceof URL?A:new URL(A),A.protocol!=="file:")throw new TypeError("Must be a file URL.");return A}function Sc(A){A=YQ(A);let e=decodeURIComponent(A.pathname.replace(/\//g,"\\").replace(/%(?![0-9A-Fa-f]{2})/g,"%25")).replace(/^\\*([A-Za-z]:)(\\|$)/,"$1\\");return A.hostname!==""&&(e=\\\\${A.hostname}${e}),e}function BC(A){TA(A);let e=A.length;if(e===0)return!1;let t=A.charCodeAt(0);return Re(t)?!0:!!(At(t)&&e>2&&A.charCodeAt(1)===58&&Re(A.charCodeAt(2)))}var tG={" ":"%09","\n":"%0A","\v":"%0B","\f":"%0C","\r":"%0D"," ":"%20"};function bQ(A){return A.replaceAll(/[\s]/g,e=>tG[e]??e)}function Wc(A){if(!BC(A))throw new TypeError("Must be an absolute path.");let[,e,t]=A.match(/^(?:[/\\]{2}([^/\\]+)(?=[/\\](?:[^/\\]|$)))?(.*)/),o=new URL("file:///");if(o.pathname=bQ(t.replace(/%/g,"%25")),e!==void 0&&e!=="localhost"&&(o.hostname=e,!o.hostname))throw new TypeError("Invalid hostname.");return o}function we(A){return A===47}function iC(A,e=""){QC(A,e);let t=rC(A,we),o=Fo(t,we);return e?gC(o,e):o}function IC(A){TA(A);let e=-1,t=0,o=-1,g=!0,r=0;for(let n=A.length-1;n>=0;--n){let Q=A.charCodeAt(n);if(we(Q)){if(!g){t=n+1;break}continue}o===-1&&(g=!1,o=n+1),Q===46?e===-1?e=n:r!==1&&(r=1):e!==-1&&(r=-1)}return e===-1||o===-1||r===0||r===1&&e===o-1&&e===t+1?"":A.slice(e,o)}function zc(A){return A=YQ(A),decodeURIComponent(A.pathname.replace(/%(?![0-9A-Fa-f]{2})/g,"%25"))}function sC(A){return TA(A),A.length>0&&we(A.charCodeAt(0))}function Kc(A){if(!sC(A))throw new TypeError("Must be an absolute path.");let e=new URL("file:///");return e.pathname=bQ(A.replace(/%/g,"%25").replace(/\\/g,"%5C")),e}var aG=(()=>{let{Deno:A}=globalThis;if(typeof A?.build?.os=="string")return A.build.os;let{navigator:e}=globalThis;return e?.appVersion?.includes?.("Win")?"windows":"linux"})(),FA=aG==="windows";function Vc(A){return FA?Sc(A):zc(A)}function qc(A){return FA?Wc(A):Kc(A)}var _c=A=>{if(A.protocol==="file:")return{path:Vc(A),namespace:"file"};let e=A.protocol.slice(0,-1);return{path:A.href.slice(e.length+1),namespace:e}},EC=A=>A.namespace==="file"?qc(A.path):new URL(${A.namespace}:${A.path});var $c=(A,e)=>{let t=Lc(cG(A),()=>({name:"NotFoundError",message:"Source map URL is not found"}));if(ie(t))return t;let{url:o,start:g,end:r}=$A(t);return URL.canParse(o,e)?HA({url:new URL(o,e),start:g,end:r}):cA({name:"InvalidURLError",message:Invalid URL: ${o}})},cG=A=>{for(let e of A.matchAll(/\/([*/])[#@] *sourceMappingURL=/g)){let t=e.index+e[0].length,o=A.length,g=t;for(;g<o&&A.charCodeAt(g)>32;)g++;if(g!==t&&(e[1]==="/"||A.indexOf("*/",g)>0))return{url:A.slice(t,g),start:t,end:g}}};function Gg(A){A.hash="",A.search=""}function Al(A,e){return A=new URL(A),Gg(A),iC(A.href,e)}function el(A){return A=new URL(A),Gg(A),IC(A.pathname)}var lG=["base64","binary","copy","css","dataurl","default","empty","file","js","json","jsx","local-css","text","ts","tsx"],tl=A=>lG.includes(A),ol=A=>/^js|^ts|css$/.test(A),gl=A=>{let e=A.url,t=Al(e);if(tl(t))return t;if(t==="mjs")return"js";let o=el(e).slice(1);if(tl(o))return o;if(o==="mjs")return"js";let r=(A.headers.get("Content-Type")??"text/plain").split(";")[0]?.trim?.()??"text/plain";return DG(r)},DG=A=>{let e=A.split("/")[1]??"plain";if(/(?:^plain$|^xml|^svg|^x?html)/.test(e))return"text";if(e.startsWith("json"))return"json";switch(e){case"javascript":return"js";case"typescript":return"ts";case"css":return"css";default:return"text"}};function jQ(A,e){if(isNaN(A)||isNaN(e))throw new Error("Comparison against non-numbers");return A===e?0:A<e?-1:1}function nl(A=[],e=[]){return A.length&&!e.length?-1:!A.length&&e.length?1:0}function lC(A=[],e=[]){let t=Math.max(A.length,e.length);for(let o=0;o<t;o++){let g=A[o],r=e[o];if(g===void 0&&r===void 0)return 0;if(r===void 0)return 1;if(g===void 0)return-1;if(typeof g=="string"&&typeof r=="number")return 1;if(typeof g=="number"&&typeof r=="string"||g<r)return-1;if(g>r)return 1}return 0}var Jo="0|[1-9]\\d*",pG="\\d*[a-zA-Z-][a-zA-Z0-9-]*",wG=(?<major>${Jo})\\.(?<minor>${Jo})\\.(?<patch>${Jo}),rl=(?:${Jo}|${pG}),Bl=(?:-(?<prerelease>${rl}(?:\\.${rl})*)),Ql="[0-9A-Za-z-]+",Cl=(?:\\+(?<buildmetadata>${Ql}(?:\\.${Ql})*)),il=v?${wG}${Bl}?${Cl}?,Il=new RegExp(^${il}$),sl="(?:<|>)?=?",mG="x|X|\\*",cC=${Jo}|${mG},OQ=v=\\s*(?<major>${cC})(?:\\.(?<minor>${cC})(?:\\.(?<patch>${cC})${Bl}?${Cl}?)?)?,al=new RegExp(^(?<operator>~>?|\\^|${sl})\\s*${OQ}$),El=new RegExp(^(?<operator>${sl})\\s*(${il})$|^$);function DC(A){return typeof A=="number"&&!Number.isNaN(A)&&(!Number.isFinite(A)||0<=A&&A<=Number.MAX_SAFE_INTEGER)}var pC=256;var hG=new RegExp(^${Jo}$);function oe(A){return A.split(".").filter(Boolean).map(e=>{if(hG.test(e)){let t=Number(e);if(DC(t))return t}return e})}function Ze(A){return A.split(".").filter(Boolean)}function dt(A,e){let t=Number(A);if(!DC(t))throw new TypeError(e);return t}function Ue(A){return Number.isNaN(A.major)&&Number.isNaN(A.minor)&&Number.isNaN(A.patch)&&(A.prerelease===void 0||A.prerelease.length===0)&&(A.build===void 0||A.build.length===0)}function me(A,e){return A===e?0:jQ(A.major,e.major)||jQ(A.minor,e.minor)||jQ(A.patch,e.patch)||nl(A.prerelease,e.prerelease)||lC(A.prerelease,e.prerelease)}var cl={major:Number.POSITIVE_INFINITY,minor:Number.POSITIVE_INFINITY,patch:Number.POSITIVE_INFINITY,prerelease:[],build:[]},ll={major:0,minor:0,patch:0,prerelease:[],build:[]},wC={major:Number.NEGATIVE_INFINITY,minor:Number.POSITIVE_INFINITY,patch:Number.POSITIVE_INFINITY,prerelease:[],build:[]},FQ={major:Number.NaN,minor:Number.NaN,patch:Number.NaN,prerelease:[],build:[]},Ne={operator:void 0,...FQ},mC={operator:"<",...ll};function hC(A){return A===Number.POSITIVE_INFINITY?"∞":A===Number.NEGATIVE_INFINITY?"⧞":A.toFixed(0)}function oo(A){if(Ue(A))return"*";let e=hC(A.major),t=hC(A.minor),o=hC(A.patch),g=A.prerelease?.join(".")??"",r=A.build?.join(".")??"";return[[${e}.${t}.${o},g].filter(B=>B).join("-"),r].filter(B=>B).join("+")}function dG(A,e){if(Ue(e))return!0;let t=me(A,e);switch(e.operator){case"=":case void 0:return t===0;case"!=":return t!==0;case">":return t>0;case"<":return t<0;case">=":return t>=0;case"<=":return t<=0}}function xQ(A,e){for(let t of e)if(!dG(A,t))return!1;if(A.prerelease&&A.prerelease.length>0){for(let t of e){if(Ue(t))continue;let{major:o,minor:g,patch:r,prerelease:n}=t;if(n&&n.length>0&&A.major===o&&A.minor===g&&A.patch===r)return!0}return!1}return!0}function go(A,e){return e.some(t=>xQ(A,t))}function JQ(A,e){return me(A,e)>0}function kg(A,e){let t;for(let o of A)go(o,e)&&(t=t&&JQ(t,o)?t:o);return t}function fG(A){let t=A.match(El)?.groups;if(!t)return mC;let{operator:o,prerelease:g,buildmetadata:r}=t,n=t.major?{major:dt(t.major,"Invalid major version"),minor:dt(t.minor,"Invalid minor version"),patch:dt(t.patch,"Invalid patch version"),prerelease:g?oe(g):[],build:r?Ze(r):[]}:FQ;return{operator:o||void 0,...n}}function iA(A){return!A||A.toLowerCase()==="x"||A==="*"}function MG(A){if(!iA(A.major))return iA(A.minor)?{operator:">=",major:+A.major,minor:0,patch:0,prerelease:[],build:[]}:iA(A.patch)?{operator:">=",major:+A.major,minor:+A.minor,patch:0,prerelease:[],build:[]}:{operator:">=",major:+A.major,minor:+A.minor,patch:+A.patch,prerelease:A.prerelease?oe(A.prerelease):[],build:[]}}function NG(A){if(!iA(A.major))return iA(A.minor)?{operator:"<",major:+A.major+1,minor:0,patch:0,prerelease:[],build:[]}:iA(A.patch)?{operator:"<",major:+A.major,minor:+A.minor+1,patch:0,prerelease:[],build:[]}:A.prerelease?{operator:"<=",major:+A.major,minor:+A.minor,patch:+A.patch,prerelease:oe(A.prerelease),build:[]}:{operator:"<=",major:+A.major,minor:+A.minor,patch:+A.patch,prerelease:A.prerelease?oe(A.prerelease):[],build:[]}}function yG(A){let e=A.match(new RegExp(^${OQ})),t=e?.groups;if(!t)return;let o=e[0].length,g=A.slice(o).match(/^\s+-\s+/);if(!g)return;let r=g[0].length,Q=A.slice(o+r).match(new RegExp(^${OQ}\\s*$))?.groups;if(!Q)return;let B=MG(t),C=NG(Q);return[B,C].filter(Boolean)}function GG(A){let e=iA(A.major),t=iA(A.minor),o=iA(A.patch),g=+A.major,r=+A.minor,n=+A.patch;if(e)return[Ne];if(t)return[{operator:">=",major:g,minor:0,patch:0},{operator:"<",major:g+1,minor:0,patch:0}];if(o)return g===0?[{operator:">=",major:g,minor:r,patch:0},{operator:"<",major:g,minor:r+1,patch:0}]:[{operator:">=",major:g,minor:r,patch:0},{operator:"<",major:g+1,minor:0,patch:0}];let Q=oe(A.prerelease??"");return g===0?r===0?[{operator:">=",major:g,minor:r,patch:n,prerelease:Q},{operator:"<",major:g,minor:r,patch:n+1}]:[{operator:">=",major:g,minor:r,patch:n,prerelease:Q},{operator:"<",major:g,minor:r+1,patch:0}]:[{operator:">=",major:g,minor:r,patch:n,prerelease:Q},{operator:"<",major:g+1,minor:0,patch:0}]}function kG(A){let e=iA(A.major),t=iA(A.minor),o=iA(A.patch),g=+A.major,r=+A.minor,n=+A.patch;if(e)return[Ne];if(t)return[{operator:">=",major:g,minor:0,patch:0},{operator:"<",major:g+1,minor:0,patch:0}];if(o)return[{operator:">=",major:g,minor:r,patch:0},{operator:"<",major:g,minor:r+1,patch:0}];let Q=oe(A.prerelease??"");return[{operator:">=",major:g,minor:r,patch:n,prerelease:Q},{operator:"<",major:g,minor:r+1,patch:0}]}function YG(A){let e=iA(A.major),t=iA(A.minor),o=iA(A.patch),g=+A.major,r=+A.minor,n=+A.patch;if(e)return[{operator:"<",major:0,minor:0,patch:0}];if(t)return o?[{operator:"<",major:g,minor:0,patch:0}]:[{operator:"<",major:g,minor:r,patch:0}];if(o)return[{operator:"<",major:g,minor:r,patch:0}];let Q=oe(A.prerelease??""),B=Ze(A.build??"");return[{operator:"<",major:g,minor:r,patch:n,prerelease:Q,build:B}]}function bG(A){let e=iA(A.minor),t=iA(A.patch),o=+A.major,g=+A.minor,r=+A.patch;if(e)return t?[{operator:"<",major:o+1,minor:0,patch:0}]:[{operator:"<",major:o,minor:g+1,patch:0}];if(t)return[{operator:"<",major:o,minor:g+1,patch:0}];let n=oe(A.prerelease??""),Q=Ze(A.build??"");return[{operator:"<=",major:o,minor:g,patch:r,prerelease:n,build:Q}]}function jG(A){let e=iA(A.major),t=iA(A.minor),o=iA(A.patch),g=+A.major,r=+A.minor,n=+A.patch;if(e)return[{operator:"<",major:0,minor:0,patch:0}];if(t)return[{operator:">=",major:g+1,minor:0,patch:0}];if(o)return[{operator:">=",major:g,minor:r+1,patch:0}];let Q=oe(A.prerelease??""),B=Ze(A.build??"");return[{operator:">",major:g,minor:r,patch:n,prerelease:Q,build:B}]}function OG(A){let e=iA(A.major),t=iA(A.minor),o=iA(A.patch),g=+A.major,r=+A.minor,n=+A.patch;if(e)return[Ne];if(t)return o?[{operator:">=",major:g,minor:0,patch:0}]:[{operator:">=",major:g,minor:r,patch:0}];if(o)return[{operator:">=",major:g,minor:r,patch:0}];let Q=oe(A.prerelease??""),B=Ze(A.build??"");return[{operator:">=",major:g,minor:r,patch:n,prerelease:Q,build:B}]}function FG(A){let e=iA(A.major),t=iA(A.minor),o=iA(A.patch),g=+A.major,r=+A.minor,n=+A.patch;if(e)return[Ne];if(t)return[{operator:">=",major:g,minor:0,patch:0},{operator:"<",major:g+1,minor:0,patch:0}];if(o)return[{operator:">=",major:g,minor:r,patch:0},{operator:"<",major:g,minor:r+1,patch:0}];let Q=oe(A.prerelease??""),B=Ze(A.build??"");return[{operator:void 0,major:g,minor:r,patch:n,prerelease:Q,build:B}]}function xG(A){let e=A.match(al)?.groups;if(!e)return fG(A);switch(e.operator){case"^":return GG(e);case"~":case"~>":return kG(e);case"<":return YG(e);case"<=":return bG(e);case">":return jG(e);case">=":return OG(e);case"=":case"":return FG(e);default:throw new Error('${e.operator}' is not a valid operator.)}}function JG(A){return A.split(/\s+/).flatMap(xG)}function Dl(A){return A.replaceAll(/(?<=<|>|=) +/g,"").split(/\s*\|\|\s*/).map(e=>yG(e)||JG(e))}function dC(A){if(typeof A!="string")throw new TypeError("version must be a string");if(A.length>pC)throw new TypeError(version is longer than ${pC} characters);A=A.trim();let e=A.match(Il)?.groups;if(!e)throw new TypeError(Invalid Version: ${A});let t=dt(e.major,"Invalid major version"),o=dt(e.minor,"Invalid minor version"),g=dt(e.patch,"Invalid patch version"),r=e.prerelease?oe(e.prerelease):[],n=e.buildmetadata?Ze(e.buildmetadata):[];return{major:t,minor:o,patch:g,prerelease:r,build:n}}function uC(A){try{return Dl(A)}catch{return}}function fC(A){if(A!==void 0)try{return dC(A)}catch{return}}var ut=async A=>{try{let e=await fetch(A);return e.ok?HA([e,!1]):cA({name:"HTTPError",message:${e.status} ${e.statusText},response:e})}catch(e){if(e instanceof TypeError)return cA({name:"NetworkError",message:e.message,request:A});if(e instanceof DOMException)return cA({name:"AbortError",message:e.message,request:A});throw e}};var MC="https://jsr.io",pl=async(A,e)=>{let t=await(e?.fetch??ut)(new Request(${e?.endpoint??MC}/${A}/meta.json),e?.cacheFirst);return Oo(t,([o])=>o.json())};var wl=async(A,e,t)=>{let o=await(t?.fetch??ut)(new Request(${t?.endpoint??MC}/${A}/${e}_meta.json),t?.cacheFirst);return Oo(o,([g])=>g.json())};var ml=async(A,e)=>{let t=await(e?.fetch??ut)(new Request(${e?.endpoint??"https://registry.npmjs.org"}/${A}),e?.cacheFirst);return Oo(t,([o])=>o.json())};var ul=(A,e)=>({name:"InvalidPackageVersionError",message:No version of ${A.name} satisfies "${A.tag??"*"}" (available: ${e.slice(0,10).join(", ")}${e.length>10?, ... (${e.length-10} more versions):""}),packageName:A.name,range:A.range,tag:A.tag,entryPoint:A.entryPoint,availableVersions:e}),RQ=(A,e)=>({name:"InvalidEntryPointError",message:${A.entryPoint} is not a valid entry point for ${A.name}@${A.tag??"*"} (available: ${e.join(", ")}),packageName:A.name,range:A.range,tag:A.tag,entryPoint:A.entryPoint,availableEntryPoints:e}),fl=async(A,e)=>{if(e?.resolvedVersions){let B=new Map(e.resolvedVersions.get(A.name)??[]),C=kg([...B.keys()],A.range);if(C){let i=B.get(C)??Yg,I=i[A.entryPoint];return typeof I!="string"&&console.log(I),I?HA(hl(A.name,oo(C),I)):cA(RQ(A,Object.keys(i)))}}let t=await ml(A.name,e);if(ie(t))return t;let o=$A(t),g=new Map(Object.entries(o.versions).flatMap(([B,{exports:C}])=>{let i=fC(B);return i?[[i,C??Yg]]:[]})),r=kg([...g.keys()],A.range);if(!r)return cA(ul(A,Object.keys(o.versions)));let n={...Yg};for(let B of Object.keys(g.get(r)??Yg))n[B]=B;let Q=n[A.entryPoint];return Q?(e?.resolvedVersions?.set(A.name,[...e.resolvedVersions.get(A.name)??[],[r,n]]),HA(hl(A.name,oo(r),Q))):cA(RQ(A,Object.keys(n)))},hl=(A,e,t)=>new URL(t,https://esm.sh/${A}@${e}/),Ml=async(A,e)=>{if(e?.resolvedVersions){let Q=new Map(e.resolvedVersions.get(A.name)??[]),B=kg([...Q.keys()],A.range);if(B){let C=Q.get(B)??Yg,i=C[A.entryPoint];return i?HA(dl(A.name,oo(B),i)):cA(RQ(A,Object.keys(C)))}}let t=await RG(A,e);if(ie(t))return t;let o=$A(t),g=await wl(A.name,oo(o),e);if(ie(g))return g;let r=$A(g).exports,n=r[A.entryPoint];return n?(e?.resolvedVersions?.set(A.name,[...e.resolvedVersions.get(A.name)??[],[o,r]]),HA(dl(A.name,oo(o),n))):cA(RQ(A,Object.keys($A(g).exports)))},dl=(A,e,t)=>new URL(t,https://jsr.io/${A}/${e}/),RG=async(A,e)=>{let t=await pl(A.name,e);if(ie(t))return t;let o=$A(t),g=Object.keys(o.versions).flatMap(n=>{let Q=fC(n);return Q?[Q]:[]}),r=kg(g,A.range);return r?HA(r):cA(ul(A,Object.keys(o.versions)))},Yg={".":"./"};var ZG=A=>({name:"OnlyScopeProvidedError",specifier:A}),Nl=A=>({name:"PackageNotFoundError",specifier:A}),yl=A=>{if(A.protocol!=="npm:")return cA({name:"NotNpmProtocolError",specifier:A});let e=A.pathname,t=e[0]==="/"?1:0,o,g;if(e[t]==="@"){let I=e.indexOf("/",t);if(I===-1)return cA(ZG(A));o=e.indexOf("/",I+1),g=e.indexOf("@",I+1)}else o=e.indexOf("/",t),g=e.indexOf("@",t);if(o===-1&&(o=e.length),g===-1&&(g=e.length),g=Math.min(g,o),t===g)return cA(Nl(A));let r=e.slice(t,g),n=e.slice(g+1,o),Q=n?uC(n)??[[Ne]]:[[Ne]],B=e.slice(o+1),C=B?./${B}:".",i={name:r,range:Q,entryPoint:C};return n&&(i.tag=n),HA(i)},Gl=A=>{if(A.protocol!=="jsr:")return cA({name:"NotJsrProtocolError",specifier:A});let e=A.pathname,t=e[0]==="/"?1:0;if(e[t]!=="@")return cA({name:"ScopeNotFoundError",specifier:A});let o=e.indexOf("/",t);if(o===-1)return cA(Nl(A));let g=e.indexOf("/",o+1),r=e.indexOf("@",o+1);g===-1&&(g=e.length),r===-1&&(r=e.length),r=Math.min(r,g);let n=e.slice(t,r),Q=e.slice(r+1,g),B=Q?uC(Q)??[[Ne]]:[[Ne]],C=e.slice(g+1),i=C?./${C}:".",I={name:n,range:B,entryPoint:i};return Q&&(I.tag=Q),HA(I)};var kl=A=>new Promise((e,t)=>{let o=new FileReader;o.addEventListener("load",()=>{let g=o.result,r=g.indexOf(";");g.startsWith("; charset=utf-8",r)?e(${g.slice(0,r)}${g.slice(r+15)}):e(g)}),o.addEventListener("error",()=>t(o.error)),o.readAsDataURL(A)});var jl=A=>{let e=new Map,t=async o=>{let g=o.namespace==="npm",r=(g?yl:Gl)(EC(o));if(ie(r)){let Q=to(r);return{errors:[{text:Q.name,detail:Q}]}}let n=await(g?fl:Ml)($A(r),{resolvedVersions:e,...A});if(ie(n)){let Q=to(n);return{errors:[{text:${Q.name} ${Q.message},detail:Q}]}}return _c($A(n))};return{name:"remote-loader",setup({onLoad:o,onResolve:g,initialOptions:r}){for(let n of[...Yl,...bl])g({filter:/.*/,namespace:n.slice(0,-1)},UG);g({filter:/.*/,namespace:"npm"},t),g({filter:/.*/,namespace:"jsr"},t);for(let n of Yl)o({filter:/.*/,namespace:n.slice(0,-1)},Q=>LG(EC(Q),{...A,sourcemap:r.sourcemap!==!1&&r.sourcemap!==void 0}));for(let n of bl)o({filter:/.*/,namespace:n.slice(0,-1)},()=>{throw new Error(${n} import is not supported yet.)})}}},UG=A=>({path:A.path,namespace:A.namespace}),Yl=["http:","https:","data:"],bl=["node:"],LG=async(A,e)=>{let t=e.reload?e.reload===!0?!1:!e.reload.some(C=>C.test(A)):!0,o=e.fetch??ut,g=await o(new Request(A),t);if(ie(g))return{errors:[{text:${to(g).message} Failed to fetch ${A},detail:to(g)}]};let[r,n]=$A(g),Q=gl(r);e.onProgress?.({path:A,done:r.clone().blob().then(C=>({size:C.size,loader:Q,isCache:n}))});let B=await r.blob();if(e.sourcemap&&ol(Q)){let C=await B.text(),i=$c(C,A);if(Zc(i)){let{url:I,start:s,end:a}=$A(i);if(I.protocol!=="data:"){let c=await o(new Request(I),t);if(ie(c))return{contents:C,loader:Q,warnings:[{text:${to(c).message} Failed to fetch the source map URL,notes:[{text:Source map URL: ${I}},{text:Original URL: ${A}}],detail:to(c)}]};let l=await $A(c)[0].blob().then(kl);return{contents:C.slice(0,s)+l+C.slice(a),loader:Q}}}}return{contents:new Uint8Array(await B.arrayBuffer()),loader:Q}};var Og=class{type=3;name="";prefix="";value="";suffix="";modifier=3;constructor(A,e,t,o,g,r){this.type=A,this.name=e,this.prefix=t,this.value=o,this.suffix=g,this.modifier=r}hasCustomName(){return this.name!==""&&typeof this.name!="number"}},TG=/[$_\p{ID_Start}]/u,SG=/[$_\u200C\u200D\p{ID_Continue}]/u,yC=".*";function vG(A,e){return(e?/^[\x00-\xFF]*$/:/^[\x00-\x7F]*$/).test(A)}function xl(A,e=!1){let t=[],o=0;for(;o<A.length;){let g=A[o],r=function(n){if(!e)throw new TypeError(n);t.push({type:"INVALID_CHAR",index:o,value:A[o++]})};if(g==="*"){t.push({type:"ASTERISK",index:o,value:A[o++]});continue}if(g==="+"||g==="?"){t.push({type:"OTHER_MODIFIER",index:o,value:A[o++]});continue}if(g==="\\"){t.push({type:"ESCAPED_CHAR",index:o++,value:A[o++]});continue}if(g==="{"){t.push({type:"OPEN",index:o,value:A[o++]});continue}if(g==="}"){t.push({type:"CLOSE",index:o,value:A[o++]});continue}if(g===":"){let n="",Q=o+1;for(;Q<A.length;){let B=A.substr(Q,1);if(Q===o+1&&TG.test(B)||Q!==o+1&&SG.test(B)){n+=A[Q++];continue}break}if(!n){r(Missing parameter name at ${o});continue}t.push({type:"NAME",index:o,value:n}),o=Q;continue}if(g==="("){let n=1,Q="",B=o+1,C=!1;if(A[B]==="?"){r(Pattern cannot start with "?" at ${B});continue}for(;B<A.length;){if(!vG(A[B],!1)){r(Invalid character '${AB}' at ${B}.),C=!0;break}if(A[B]==="\\"){Q+=A[B++]+A[B++];continue}if(A[B]===")"){if(n--,n===0){B++;break}}else if(A[B]==="("&&(n++,A[B+1]!=="?")){r(Capturing groups are not allowed at ${B}),C=!0;break}Q+=A[B++]}if(C)continue;if(n){r(Unbalanced pattern at ${o});continue}if(!Q){r(Missing pattern at ${o});continue}t.push({type:"REGEX",index:o,value:Q}),o=B;continue}t.push({type:"CHAR",index:o,value:A[o++]})}return t.push({type:"END",index:o,value:""}),t}function Jl(A,e={}){let t=xl(A);e.delimiter??="/#?",e.prefixes??="./";let o=^${he(e.delimiter)}+?,g=[],r=0,n=0,Q="",B=new Set,C=u=>{if(n<t.length&&t[n].type===u)return t[n++].value},i=()=>C("OTHER_MODIFIER")??C("ASTERISK"),I=u=>{let p=C(u);if(p!==void 0)return p;let{type:h,index:d}=t[n];throw new TypeError(Unexpected ${h} at ${d}, expected ${u})},s=()=>{let u="",p;for(;p=C("CHAR")??C("ESCAPED_CHAR");)u+=p;return u},a=u=>u,c=e.encodePart||a,l="",D=u=>{l+=u},m=()=>{l.length&&(g.push(new Og(3,"","",c(l),"",3)),l="")},N=(u,p,h,d,k)=>{let G=3;switch(k){case"?":G=1;break;case"*":G=0;break;case"+":G=2;break}if(!p&&!h&&G===3){D(u);return}if(m(),!p&&!h){if(!u)return;g.push(new Og(3,"","",c(u),"",G));return}let R;h?h==="*"?R=yC:R=h:R=o;let y=2;R===o?(y=1,R=""):R===yC&&(y=0,R="");let f;if(p?f=p:h&&(f=r++),B.has(f))throw new TypeError(Duplicate name '${f}'.);B.add(f),g.push(new Og(y,f,c(u),R,c(d),G))};for(;n<t.length;){let u=C("CHAR"),p=C("NAME"),h=C("REGEX");if(!p&&!h&&(h=C("ASTERISK")),p||h){let k=u??"";e.prefixes.indexOf(k)===-1&&(D(k),k=""),m();let G=i();N(k,p,h,"",G);continue}let d=u??C("ESCAPED_CHAR");if(d){D(d);continue}if(C("OPEN")){let k=s(),G=C("NAME"),R=C("REGEX");!G&&!R&&(R=C("ASTERISK"));let y=s();I("CLOSE");let f=i();N(k,G,R,y,f);continue}m(),I("END")}return g}function he(A){return A.replace(/([.+*?^${}()[\]|/\\])/g,"\\$1")}function Ol(A){return A&&A.ignoreCase?"ui":"u"}function HG(A,e,t){return Rl(Jl(A,t),e,t)}function Ro(A){switch(A){case 0:return"*";case 1:return"?";case 2:return"+";case 3:return""}}function Rl(A,e,t={}){t.delimiter??="/#?",t.prefixes??="./",t.sensitive??=!1,t.strict??=!1,t.end??=!0,t.start??=!0,t.endsWith="";let o=t.start?"^":"";for(let Q of A){if(Q.type===3){Q.modifier===3?o+=he(Q.value):o+=(?:${he(Q.value)})${Ro(Q.modifier)};continue}e&&e.push(Q.name);let B=^${he(t.delimiter)}+?,C=Q.value;if(Q.type===1?C=B:Q.type===0&&(C=yC),!Q.prefix.length&&!Q.suffix.length){Q.modifier===3||Q.modifier===1?o+=(${C})${Ro(Q.modifier)}:o+=((?:${C})${Ro(Q.modifier)});continue}if(Q.modifier===3||Q.modifier===1){o+=(?:${he(Q.prefix)}(${C})${he(Q.suffix)}),o+=Ro(Q.modifier);continue}o+=(?:${he(Q.prefix)},o+=((?:${C})(?:,o+=he(Q.suffix),o+=he(Q.prefix),o+=(?:${C}))*)${he(Q.suffix)}),Q.modifier===0&&(o+="?")}let g=${he(t.endsWith)}|$,r=${he(t.delimiter)};if(t.end)return t.strict||(o+=${r}?),t.endsWith.length?o+=(?=${g}):o+="$",new RegExp(o,Ol(t));t.strict||(o+=(?:${r}(?=${g}))?);let n=!1;if(A.length){let Q=A[A.length-1];Q.type===3&&Q.modifier===3&&(n=t.delimiter.indexOf(Q)>-1)}return n||(o+=(?=${r}|${g})),new RegExp(o,Ol(t))}var Mt={delimiter:"",prefixes:"",sensitive:!0,strict:!0},WG={delimiter:".",prefixes:"",sensitive:!0,strict:!0},XG={delimiter:"/",prefixes:"/",sensitive:!0,strict:!0};function zG(A,e){return A.length?A[0]==="/"?!0:!e||A.length<2?!1:(A[0]=="\\"||A[0]=="{")&&A[1]=="/":!1}function Zl(A,e){return A.startsWith(e)?A.substring(e.length,A.length):A}function KG(A,e){return A.endsWith(e)?A.substr(0,A.length-e.length):A}function Ul(A){return!A||A.length<2?!1:A[0]==="["||(A[0]==="\\"||A[0]==="{")&&A[1]==="["}var Ll=["ftp","file","http","https","ws","wss"];function Tl(A){if(!A)return!0;for(let e of Ll)if(A.test(e))return!0;return!1}function PG(A,e){if(A=Zl(A,"#"),e||A==="")return A;let t=new URL("https://example.com");return t.hash=A,t.hash?t.hash.substring(1,t.hash.length):""}function VG(A,e){if(A=Zl(A,"?"),e||A==="")return A;let t=new URL("https://example.com");return t.search=A,t.search?t.search.substring(1,t.search.length):""}function qG(A,e){return e||A===""?A:Ul(A)?Hl(A):vl(A)}function _G(A,e){if(e||A==="")return A;let t=new URL("https://example.com");return t.password=A,t.password}function $G(A,e){if(e||A==="")return A;let t=new URL("https://example.com");return t.username=A,t.username}function Ak(A,e,t){if(t||A==="")return A;if(e&&!Ll.includes(e))return new URL(${e}:${A}).pathname;let o=A[0]=="/";return A=new URL(o?A:"/-"+A,"https://example.com").pathname,o||(A=A.substring(2,A.length)),A}function ek(A,e,t){return Sl(e)===A&&(A=""),t||A===""?A:Wl(A)}function tk(A,e){return A=KG(A,":"),e||A===""?A:GC(A)}function Sl(A){switch(A){case"ws":case"http":return"80";case"wws":case"https":return"443";case"ftp":return"21";default:return""}}function GC(A){if(A==="")return A;if(/^[-+.A-Za-z0-9]*$/.test(A))return A.toLowerCase();throw new TypeError(Invalid protocol '${A}'.)}function ok(A){if(A==="")return A;let e=new URL("https://example.com");return e.username=A,e.username}function gk(A){if(A==="")return A;let e=new URL("https://example.com");return e.password=A,e.password}function vl(A){if(A==="")return A;if(/[\t\n\r #%/:<>?@[\]^\\|]/g.test(A))throw new TypeError(Invalid hostname '${A}');let e=new URL("https://example.com");return e.hostname=A,e.hostname}function Hl(A){if(A==="")return A;if(/[^0-9a-fA-F[\]:]/g.test(A))throw new TypeError(Invalid IPv6 hostname '${A}');return A.toLowerCase()}function Wl(A){if(A===""||/^[0-9]*$/.test(A)&&parseInt(A)<=65535)return A;throw new TypeError(Invalid port '${A}'.)}function rk(A){if(A==="")return A;let e=new URL("https://example.com");return e.pathname=A[0]!=="/"?"/-"+A:A,A[0]!=="/"?e.pathname.substring(2,e.pathname.length):e.pathname}function Qk(A){return A===""?A:new URL(data:${A}).pathname}function nk(A){if(A==="")return A;let e=new URL("https://example.com");return e.search=A,e.search.substring(1,e.search.length)}function Bk(A){if(A==="")return A;let e=new URL("https://example.com");return e.hash=A,e.hash.substring(1,e.hash.length)}var Ck=class{#r;#t=[];#e={};#A=0;#g=1;#n=0;#o=0;#C=0;#i=0;#s=!1;constructor(A){this.#r=A}get result(){return this.#e}parse(){for(this.#t=xl(this.#r,!0);this.#A<this.#t.length;this.#A+=this.#g){if(this.#g=1,this.#t[this.#A].type==="END"){if(this.#o===0){this.#l(),this.#a()?this.#Q(9,1):this.#E()?this.#Q(8,1):this.#Q(7,0);continue}else if(this.#o===2){this.#D(5);continue}this.#Q(10,0);break}if(this.#C>0)if(this.#N())this.#C-=1;else continue;if(this.#M()){this.#C+=1;continue}switch(this.#o){case 0:this.#h()&&this.#D(1);break;case 1:if(this.#h()){this.#k();let A=7,e=1;this.#d()?(A=2,e=3):this.#s&&(A=2),this.#Q(A,e)}break;case 2:this.#w()?this.#D(3):(this.#m()||this.#E()||this.#a())&&this.#D(5);break;case 3:this.#u()?this.#Q(4,1):this.#w()&&this.#Q(5,1);break;case 4:this.#w()&&this.#Q(5,1);break;case 5:this.#y()?this.#i+=1:this.#G()&&(this.#i-=1),this.#f()&&!this.#i?this.#Q(6,1):this.#m()?this.#Q(7,0):this.#E()?this.#Q(8,1):this.#a()&&this.#Q(9,1);break;case 6:this.#m()?this.#Q(7,0):this.#E()?this.#Q(8,1):this.#a()&&this.#Q(9,1);break;case 7:this.#E()?this.#Q(8,1):this.#a()&&this.#Q(9,1);break;case 8:this.#a()&&this.#Q(9,1);break;case 9:break;case 10:break}}this.#e.hostname!==void 0&&this.#e.port===void 0&&(this.#e.port="")}#Q(A,e){switch(this.#o){case 0:break;case 1:this.#e.protocol=this.#I();break;case 2:break;case 3:this.#e.username=this.#I();break;case 4:this.#e.password=this.#I();break;case 5:this.#e.hostname=this.#I();break;case 6:this.#e.port=this.#I();break;case 7:this.#e.pathname=this.#I();break;case 8:this.#e.search=this.#I();break;case 9:this.#e.hash=this.#I();break;case 10:break}this.#o!==0&&A!==10&&([1,2,3,4].includes(this.#o)&&[6,7,8,9].includes(A)&&(this.#e.hostname??=""),[1,2,3,4,5,6].includes(this.#o)&&[8,9].includes(A)&&(this.#e.pathname??=this.#s?"/":""),[1,2,3,4,5,6,7].includes(this.#o)&&A===9&&(this.#e.search??="")),this.#c(A,e)}#c(A,e){this.#o=A,this.#n=this.#A+e,this.#A+=e,this.#g=0}#l(){this.#A=this.#n,this.#g=0}#D(A){this.#l(),this.#o=A}#p(A){return A<0&&(A=this.#t.length-A),A<this.#t.length?this.#t[A]:this.#t[this.#t.length-1]}#B(A,e){let t=this.#p(A);return t.value===e&&(t.type==="CHAR"||t.type==="ESCAPED_CHAR"||t.type==="INVALID_CHAR")}#h(){return this.#B(this.#A,":")}#d(){return this.#B(this.#A+1,"/")&&this.#B(this.#A+2,"/")}#w(){return this.#B(this.#A,"@")}#u(){return this.#B(this.#A,":")}#f(){return this.#B(this.#A,":")}#m(){return this.#B(this.#A,"/")}#E(){if(this.#B(this.#A,"?"))return!0;if(this.#t[this.#A].value!=="?")return!1;let A=this.#p(this.#A-1);return A.type!=="NAME"&&A.type!=="REGEX"&&A.type!=="CLOSE"&&A.type!=="ASTERISK"}#a(){return this.#B(this.#A,"#")}#M(){return this.#t[this.#A].type=="OPEN"}#N(){return this.#t[this.#A].type=="CLOSE"}#y(){return this.#B(this.#A,"[")}#G(){return this.#B(this.#A,"]")}#I(){let A=this.#t[this.#A],e=this.#p(this.#n).index;return this.#r.substring(e,A.index)}#k(){let A={};Object.assign(A,Mt),A.encodePart=GC;let e=HG(this.#I(),void 0,A);this.#s=Tl(e)}},NC=["protocol","username","password","hostname","port","pathname","search","hash"],ft="*";function Fl(A,e){if(typeof A!="string")throw new TypeError("parameter 1 is not of type 'string'.");let t=new URL(A,e);return{protocol:t.protocol.substring(0,t.protocol.length-1),username:t.username,password:t.password,hostname:t.hostname,port:t.port,pathname:t.pathname,search:t.search!==""?t.search.substring(1,t.search.length):void 0,hash:t.hash!==""?t.hash.substring(1,t.hash.length):void 0}}function et(A,e){return e?jg(A):A}function bg(A,e,t){let o;if(typeof e.baseURL=="string")try{o=new URL(e.baseURL),e.protocol===void 0&&(A.protocol=et(o.protocol.substring(0,o.protocol.length-1),t)),!t&&e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&e.username===void 0&&(A.username=et(o.username,t)),!t&&e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&e.username===void 0&&e.password===void 0&&(A.password=et(o.password,t)),e.protocol===void 0&&e.hostname===void 0&&(A.hostname=et(o.hostname,t)),e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&(A.port=et(o.port,t)),e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&e.pathname===void 0&&(A.pathname=et(o.pathname,t)),e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&e.pathname===void 0&&e.search===void 0&&(A.search=et(o.search.substring(1,o.search.length),t)),e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&e.pathname===void 0&&e.search===void 0&&e.hash===void 0&&(A.hash=et(o.hash.substring(1,o.hash.length),t))}catch{throw new TypeError(invalid baseURL '${e.baseURL}'.)}if(typeof e.protocol=="string"&&(A.protocol=tk(e.protocol,t)),typeof e.username=="string"&&(A.username=$G(e.username,t)),typeof e.password=="string"&&(A.password=_G(e.password,t)),typeof e.hostname=="string"&&(A.hostname=qG(e.hostname,t)),typeof e.port=="string"&&(A.port=ek(e.port,A.protocol,t)),typeof e.pathname=="string"){if(A.pathname=e.pathname,o&&!zG(A.pathname,t)){let g=o.pathname.lastIndexOf("/");g>=0&&(A.pathname=et(o.pathname.substring(0,g+1),t)+A.pathname)}A.pathname=Ak(A.pathname,A.protocol,t)}return typeof e.search=="string"&&(A.search=VG(e.search,t)),typeof e.hash=="string"&&(A.hash=PG(e.hash,t)),A}function jg(A){return A.replace(/([+*?:{}()\\])/g,"\\$1")}function ik(A){return A.replace(/([.+*?^${}()[\]|/\\])/g,"\\$1")}function Ik(A,e){e.delimiter??="/#?",e.prefixes??="./",e.sensitive??=!1,e.strict??=!1,e.end??=!0,e.start??=!0,e.endsWith="";let t=".*",o=^${ik(e.delimiter)}+?,g=/[$_\u200C\u200D\p{ID_Continue}]/u,r="";for(let n=0;n<A.length;++n){let Q=A[n];if(Q.type===3){if(Q.modifier===3){r+=jg(Q.value);continue}r+={${jg(Q.value)}}${Ro(Q.modifier)};continue}let B=Q.hasCustomName(),C=!!Q.suffix.length||!!Q.prefix.length&&(Q.prefix.length!==1||!e.prefixes.includes(Q.prefix)),i=n>0?A[n-1]:null,I=n<A.length-1?A[n+1]:null;if(!C&&B&&Q.type===1&&Q.modifier===3&&I&&!I.prefix.length&&!I.suffix.length)if(I.type===3){let s=I.value.length>0?I.value[0]:"";C=g.test(s)}else C=!I.hasCustomName();if(!C&&!Q.prefix.length&&i&&i.type===3){let s=i.value[i.value.length-1];C=e.prefixes.includes(s)}C&&(r+="{"),r+=jg(Q.prefix),B&&(r+=:${Q.name}),Q.type===2?r+=(${Q.value}):Q.type===1?B||(r+=(${o})):Q.type===0&&(!B&&(!i||i.type===3||i.modifier!==3||C||Q.prefix!=="")?r+="*":r+=(${t})),Q.type===1&&B&&Q.suffix.length&&g.test(Q.suffix[0])&&(r+="\\"),r+=jg(Q.suffix),C&&(r+="}"),Q.modifier!==3&&(r+=Ro(Q.modifier))}return r}var Xl=class{#r;#t={};#e={};#A={};#g={};#n=!1;constructor(A={},e,t){try{let o;if(typeof e=="string"?o=e:t=e,typeof A=="string"){let Q=new Ck(A);if(Q.parse(),A=Q.result,o===void 0&&typeof A.protocol!="string")throw new TypeError("A base URL must be provided for a relative constructor string.");A.baseURL=o}else{if(!A||typeof A!="object")throw new TypeError("parameter 1 is not of type 'string' and cannot convert to dictionary.");if(o)throw new TypeError("parameter 1 is not of type 'string'.")}typeof t>"u"&&(t={ignoreCase:!1});let g={ignoreCase:t.ignoreCase===!0},r={pathname:ft,protocol:ft,username:ft,password:ft,hostname:ft,port:ft,search:ft,hash:ft};this.#r=bg(r,A,!0),Sl(this.#r.protocol)===this.#r.port&&(this.#r.port="");let n;for(n of NC){if(!(n in this.#r))continue;let Q={},B=this.#r[n];switch(this.#e[n]=[],n){case"protocol":Object.assign(Q,Mt),Q.encodePart=GC;break;case"username":Object.assign(Q,Mt),Q.encodePart=ok;break;case"password":Object.assign(Q,Mt),Q.encodePart=gk;break;case"hostname":Object.assign(Q,WG),Ul(B)?Q.encodePart=Hl:Q.encodePart=vl;break;case"port":Object.assign(Q,Mt),Q.encodePart=Wl;break;case"pathname":Tl(this.#t.protocol)?(Object.assign(Q,XG,g),Q.encodePart=rk):(Object.assign(Q,Mt,g),Q.encodePart=Qk);break;case"search":Object.assign(Q,Mt,g),Q.encodePart=nk;break;case"hash":Object.assign(Q,Mt,g),Q.encodePart=Bk;break}try{this.#g[n]=Jl(B,Q),this.#t[n]=Rl(this.#g[n],this.#e[n],Q),this.#A[n]=Ik(this.#g[n],Q),this.#n=this.#n||this.#g[n].some(C=>C.type===2)}catch{throw new TypeError(invalid ${n} pattern '${this.#rn}'.)}}}catch(o){throw new TypeError(Failed to construct 'URLPattern': ${o.message})}}test(A={},e){let t={pathname:"",protocol:"",username:"",password:"",hostname:"",port:"",search:"",hash:""};if(typeof A!="string"&&e)throw new TypeError("parameter 1 is not of type 'string'.");if(typeof A>"u")return!1;try{typeof A=="object"?t=bg(t,A,!1):t=bg(t,Fl(A,e),!1)}catch{return!1}let o;for(o of NC)if(!this.#t[o].exec(t[o]))return!1;return!0}exec(A={},e){let t={pathname:"",protocol:"",username:"",password:"",hostname:"",port:"",search:"",hash:""};if(typeof A!="string"&&e)throw new TypeError("parameter 1 is not of type 'string'.");if(typeof A>"u")return;try{typeof A=="object"?t=bg(t,A,!1):t=bg(t,Fl(A,e),!1)}catch{return null}let o={};e?o.inputs=[A,e]:o.inputs=[A];let g;for(g of NC){let r=this.#t[g].exec(t[g]);if(!r)return null;let n={};for(let[Q,B]of this.#e[g].entries())if(typeof B=="string"||typeof B=="number"){let C=r[Q+1];n[B]=C}o[g]={input:t[g]??"",groups:n}}return o}static compareComponent(A,e,t){let o=(Q,B)=>{for(let C of["type","modifier","prefix","value","suffix"]){if(Q[C]<B[C])return-1;if(Q[C]!==B[C])return 1}return 0},g=new Og(3,"","","","",3),r=new Og(0,"","","","",3),n=(Q,B)=>{let C=0;for(;C<Math.min(Q.length,B.length);++C){let i=o(Q[C],B[C]);if(i)return i}return Q.length===B.length?0:o(Q[C]??g,B[C]??g)};return!e.#A[A]&&!t.#A[A]?0:e.#A[A]&&!t.#A[A]?n(e.#g[A],[r]):!e.#A[A]&&t.#A[A]?n([r],t.#g[A]):n(e.#g[A],t.#g[A])}get protocol(){return this.#A.protocol}get username(){return this.#A.username}get password(){return this.#A.password}get hostname(){return this.#A.hostname}get port(){return this.#A.port}get pathname(){return this.#A.pathname}get search(){return this.#A.search}get hash(){return this.#A.hash}get hasRegExpGroups(){return this.#n}};globalThis.URLPattern||(globalThis.URLPattern=Xl);var zl,Kl=async(A,e)=>(zl??=BQ({wasmModule:A,workerURL:e}),await zl,async t=>{let{outputFiles:o}=await QQ({entryPoints:[t],format:"esm",bundle:!0,minify:!0,charset:"utf8",plugins:[Fc(),jl({fetch:sk,reload:[new URLPattern({hostname:location.hostname}),new URLPattern({hostname:"scrapbox.io"})]})],write:!1});return{contents:o[0].text}}),sk=async(A,e)=>{let t=Tc(new URL(A.url))||!GM_fetch?globalThis.fetch:GM_fetch;if(e){let o=await kC(A);if(o)return o}try{let o=await t(A);return o.ok?(t===GM_fetch&&!A.url.startsWith("data:")&&await mr(A,o),HA([o,!1])):await kC(A)??cA({name:"HTTPError",message:${o.status} ${o.statusText},response:o})}catch(o){let g=await kC(A);if(g)return g;if(o instanceof TypeError)return cA({name:"NetworkError",message:o.message,request:A});if(o instanceof DOMException)return cA({name:"AbortError",message:o.message,request:A});throw o}},kC=async A=>{if(A.url.startsWith("data:"))return;let e=await Eo(A);if(e)return e.url||Object.defineProperty(e,"url",{value:A.url}),HA([e,!0])};var Pl=A=>["ts","js","tsx","jsx","mjs","javascript","typescript"].includes(A);var Vl=()=>{let A=document.createElement("i");return A.classList.add("kamon","kamon-check-circle-fill"),A.style.color="hsl(133, 46.1%, 47.3%)",A},ql=()=>{let A=document.createElement("i");return A.classList.add("kamon","kamon-cross-circle"),A.style.color="hsl(1.7, 64.5%, 58%)",A},_l=()=>{let A=document.createElement("i");return A.classList.add("i","fa","fa-spinner"),A},$l=()=>{let A=document.createElement("i");return A.classList.add("kamon","kamon-play"),A};var AD=()=>{let A;return{show:(o,{x:g,y:r})=>{A=ak(),A.append(Ek(o)),A.style.visibility="hidden",document.body.append(A);let{height:n}=A.getBoundingClientRect();A.style.top=${r-n}px,A.style.left=${g}px,A.style.removeProperty("visibility")},hide:async()=>{A?.classList?.remove?.("in"),await new Promise(o=>setTimeout(o,150)),A?.remove?.()}}},ak=()=>{let A=document.createElement("div");return A.setAttribute("role","tooltip"),A.classList.add("fade","in","tooltip","top"),A},Ek=A=>{let e=document.createElement("pre");return e.classList.add("tooltip-inner"),e.style.textAlign="unset",e.style.maxWidth="70vw",e.style.margin="unset",e.innerText=A,e};var eD=()=>{let A=document.createElement("a");A.classList.add("tool-btn"),A.type="button",A.setAttribute("aria-haspopup","true");let e=!1,{show:t,hide:o}=AD();return{component:A,setStatus:async(r,n)=>{switch(A.textContent="",await o(),r){case"loading":A.append(_l());break;case"pass":A.append(Vl());break;case"fail":A.append(ql());break;case"none":break}n!==void 0&&r!=="none"?(A.style.removeProperty("pointer-events"),A.onclick=async()=>{if(e)await o();else{let{top:Q,left:B}=A.getBoundingClientRect();t(n,{y:Q+globalThis.scrollY,x:B})}e=!e}):A.style.pointerEvents="none"}}};var tD=A=>{let e=document.createElement("a");return e.classList.add("tool-btn"),e.type="button",e.setAttribute("aria-haspopup","true"),e.append($l()),e.addEventListener("click",A),e};var oD=A=>{let{component:e,setStatus:t}=eD(),o=document.createElement("div");return o.style.position="absolute",o.style.left="-2em",o.style.zIndex="1",o.style.display="flex",o.style.flexFlow="column",o.append(tD(A),e),{menu:o,setStatus:t}};function gD(A){return new Promise(e=>setTimeout(e,A))}function rD(A,e){let{trailing:t=!1,interval:o=0}=e??{},g,r=!1,n=C=>{g?.resolve?.({executed:!1}),g=C},Q=()=>{let{...C}=g;return g=void 0,C},B=async()=>{if(r||!g)return;r=!0,o>0&&await gD(o);let{parameters:C,resolve:i,reject:I}=Q();try{let s=await A(...C);r=!1,i({result:s,executed:!0})}catch(s){r=!1,I(s)}finally{t?await B():(n(),await Promise.resolve())}};return(...C)=>new Promise((i,I)=>{n({parameters:C,resolve:i,reject:I}),B()})}var QD,nD=async(A,e)=>{let t=[],g=rD(async()=>{t.forEach(({menu:n,setStatus:Q})=>{Q("none"),n.remove()});let r=OE(scrapbox.Project.name,scrapbox.Page.title??"",KA());for(let n of r){let Q=n.lang.toLowerCase();if(Pl(Q))for(let B of n.startIds){let C=document.getElementById(L${B}),{menu:i,setStatus:I}=oD(async()=>{await I("loading");try{QD??=await Kl(A,e);let{contents:s}=await QD(n.path);console.debug("execute:",s),await Function(return (async()=>{${s}})())(),await I("pass")}catch(s){console.error(s),await I("fail",${s})}});t.push({menu:i,setStatus:I}),C?.insertBefore?.(i,C?.firstElementChild)}}await Promise.resolve()},{interval:100,trailing:!0});return await g(),scrapbox.addListener("lines:changed",g),()=>{scrapbox.removeListener("lines:changed",g),t.forEach(({menu:r,setStatus:n})=>{n("none"),r.remove()})}};var BD=({title:A,projects:e,selected:t,confirm:o})=>E("div",{className:candidate${t?" selected":""}},E(ck,{title:A,confirm:o}),e.map(g=>E(lk,{project:g.name,title:A,mark:g.mark,confirm:g.confirm}))),ck=({title:A,confirm:e})=>E("a",{className:"button",tabIndex:0,role:"menuitem",href:./${V(A)},onClick:CD(e)},A),lk=({project:A,title:e,mark:t,confirm:o})=>t===""?E(W,null):E("a",{className:"mark",tabIndex:0,href:../${A}/${V(e)},onClick:CD(o),title:/${A}/${V(e)}},t instanceof URL?E("img",{src:t.href}):${t}),CD=A=>b(e=>{e.metaKey||e.ctrlKey||e.altKey||e.shiftKey||(e.preventDefault(),e.stopPropagation(),A())},[A]);var iD=(A,e)=>{let[t,o]=L(null),g=b(B=>o(C=>{if(A.length===0)return null;if(C===null)return e(A[0]);let i=A.findIndex(I=>e(I)===C);return e(B?.cyclic?A[(i+1)%A.length]:A.at(i+1)??A[0])}),[A,e]),r=b(B=>o(C=>{if(A.length===0)return null;if(C===null)return e(A[A.length-1]);let i=A.findIndex(I=>e(I)===C);return i<0?e(A[A.length-1]):e(B?.cyclic?A[(i-1+A.length)%A.length]:A.at(i-1)??A[A.length-1])}),[A,e]),n=b(()=>o(A.length===0?null:e(A[0])),[A,e]),Q=b(()=>o(A.length===0?null:e(A[A.length-1])),[A,e]);return{selectedId:t,next:g,prev:r,selectFirst:n,selectLast:Q}};var ID=A=>{let[e,t]=L(null),o=J(()=>{let g=e?.getBoundingClientRect?.(),n=og(A.line,A.char)?.getBoundingClientRect?.();return!n||!g?{}:{top:${n.bottom-g.top}px,left:${n?.left??0-g.left}px,right:${g.right-(n?.left??0)}px}},[e,A.line,A.char]);return{updateStandardElement:t,...o}};var bC="enableProjectsOnSuggestion",sD=(A,e)=>{let[t,o]=L(ZQ([...A],e)),g=b((r,n)=>{Dk(r,n,A,e),o(ZQ([...A],e))},[A,e.enableSelfProjectOnStart]);return X(()=>{let r=n=>{n.key===bC&&o(ZQ([...A],e))};return addEventListener("storage",r),()=>removeEventListener("storage",r)},[A,e.enableSelfProjectOnStart]),{projects:t,set:g}},YC=!0,ZQ=(A,e)=>{try{let t=localStorage.getItem(bC);if(t===null)return UQ(A),A;let o=JSON.parse(t);return Array.isArray(o)&&o.every(g=>typeof g=="string")?!e.enableSelfProjectOnStart||!A.includes(scrapbox.Project.name)?o:o.includes(scrapbox.Project.name)?YC?o:o.filter(g=>g!==scrapbox.Project.name):YC?[...o,scrapbox.Project.name]:o:(UQ(A),A)}catch(t){if(!(t instanceof TypeError))throw t;return UQ(A),A}},Dk=(A,e,t,o)=>{let g=ZQ([...t],o);o.enableSelfProjectOnStart&&A===scrapbox.Project.name&&(YC=e),UQ(e?[...g,A]:g.filter(r=>r!==A))},UQ=A=>localStorage.setItem(bC,JSON.stringify(A));var aD=()=>J(()=>document.documentElement.dataset.os??"",[]);var Fg=(A,e)=>{if(A instanceof URL)return A;try{return new URL(A)}catch(t){if(!(t instanceof TypeError))throw t;if(!e||!/^\.\/|^\.\.\/|^\//.test(A))return A;try{return new URL(A,e)}catch(o){if(!(o instanceof TypeError))throw o;return A}}};var ED=({progress:A})=>E("div",{className:"progress",style:background: linear-gradient(to right, var(--select-suggest-border-color, #eee) ${(A*100).toPrecision(3)}%, transparent ${(A*100).toPrecision(3)}%)});var lD=({position:A,start:e,enableSelfProjectOnStart:t,projects:o,...g})=>{let{projects:r,set:n}=sD(o,{enableSelfProjectOnStart:t}),{updateStandardElement:Q,top:B,left:C,right:i}=ID({line:A.line,char:e}),I=aD();return E(W,null,E(wk,{itemCount:g.items.length,enableProjects:r,projects:o,top:B,right:i,set:n,os:I,...g}),E(pk,{updateStandardElement:Q,start:e,enableProjects:r,projects:o,top:B,left:C,os:I,...g}))},pk=({start:A,updateStandardElement:e,confirmAfter:t,cancel:o,query:g,enableProjects:r,projects:n,items:Q,top:B,left:C,progress:i,callback:I,limit:s,mark:a,os:c})=>{let l=b((y,f)=>{let M=f?/${f}/${y}:${y};t((Y,{line:j})=>[${...Y.slice(0,A).join("")}${M}${...Y.slice(A+...g.length).join("")},{line:j,char:A+[...M].length}])},[A,g]),D=J(()=>n.size>1||!n.has(scrapbox.Project.name),[n]),m=J(()=>{let y=[];for(let f of Q){if(y.length===s)break;f.projects.some(M=>r.includes(M))&&y.push({title:f.title,projects:f.projects.flatMap(M=>r.includes(M)?[{name:M,mark:D?Fg(a[M]??"",import.meta.url)||M[0]:"",confirm:()=>l(f.title,M)}]:[]),confirm:()=>l(f.title)})}return y},[r,D,Q,s,a,l]),{selectedId:N,next:u,prev:p,selectLast:h,selectFirst:d}=iD(m,cD),k=b(()=>N===null?!1:(m.find(y=>cD(y)===N)?.confirm?.(),!0),[N,m]);X(()=>I(m.length===0?void 0:{selectNext:y=>(u(y),!0),selectPrev:y=>(p(y),!0),selectFirst:()=>(d(),!0),selectLast:()=>(h(),!0),confirm:k,cancel:()=>(o(),!0)}),[I,m.length,u,p,d,h,k]);let G=J(()=>m.length>0&&B!=null&&C!=null?{top:B,left:C}:{display:"none"},[m.length,B,C]),R=b(y=>{if(!y){e(y);return}let f=y.parentNode;if(!(f instanceof ShadowRoot))throw Error('The parent of "div.container" must be ShadowRoot');e(f.host.parentElement)},[e]);return E("div",{ref:R,className:"container candidates","data-os":c,style:G},m.map(y=>E(BD,{key:y.title,...y,selected:N===y.title})),Q.length>s&&E("div",{className:"counter"},${Q.length-s} more links),E(ED,{progress:i}))},wk=({enableProjects:A,projects:e,projectScore:t,mark:o,itemCount:g,top:r,right:n,set:Q,os:B,freezeUntil:C})=>{let i=J(()=>[...e].sort((s,a)=>(t.get(a)??0)-(t.get(s)??0)).flatMap(s=>t.has(s)?[{name:s,enable:A.includes(s),mark:Fg(o[s]??"",import.meta.url)||s[0],score:t.get(s),onClick:()=>C(()=>{Q(s,!A.includes(s)),YA().focus()})}]:[]),[e,t,A,o]),I=J(()=>g>0&&r!=null&&n!=null&&e.size>1?{top:r,right:n}:{display:"none"},[r,n,g,e.size]);return E("div",{className:"container projects","data-os":B,style:I},i.map(s=>E(mk,{key:s.name,...s})))},mk=A=>E("div",{className:A.enable?"mark":"mark disabled","data-score":A.score.toPrecision(3),onClick:A.onClick,title:A.name},A.mark instanceof URL?E("img",{src:A.mark.href}):${A.mark}),cD=A=>A.title;var Ie=!1,jC=A=>{Ie=typeof A=="boolean"?A:new Set(A)},Zo=A=>Object.fromEntries([...Object.entries(console)].map(([e,t])=>{if(typeof t!="function")return[e,t];switch(e){case"warn":case"error":return[e,(...o)=>t(%c${A},"color: gray",...o)];case"log":case"info":case"debug":return[e,(...o)=>{Ie!==!0&&(!Ie||!Ie.has(A))||t(%c${A},"color: gray",...o)}];case"assert":return[e,(o,...g)=>{Ie!==!0&&(!Ie||!Ie.has(A))||t(o,%c${A},"color: gray",...g)}];case"time":case"timeEnd":return[e,o=>{Ie!==!0&&(!Ie||!Ie.has(A))||t(${A} ${o})}];default:return[e,(...o)=>{if(!(Ie!==!0&&(!Ie||!Ie.has(A))))return t(...o)}]}}));var Uo=A=>{let[e,t,o,...g]=A;return{title:e,links:g,image:t,exists:o>=0,updated:Math.min(0,o)}},DD=A=>[A.title,A.image,A.exists?A.updated:-1,...A.links];var pD=A=>{let e=new Map;for(let t of A){let o=z(t.title);e.set(o,{title:t.title,image:t.image,updated:t.updated,links:t.links,exists:!0});for(let g of t.links){let r=z(g);e.has(r)||e.set(r,{title:g,updated:0,links:[],exists:!1})}}return[...e.values()].map(t=>DD(t))};var wD=Zo("scrapbox-storage:remote.ts"),mD=async A=>{let e,t=[],o=download and create Links of "${A}";wD.time(o);do{let r=await nI(A,{followingId:e});if(!r.ok)return r;e=r.value.followingId,t.push(...r.value.pages)}while(e);let g=pD(t);return wD.timeEnd(o),{ok:!0,value:g}};async function*hD(A){let e=[],t=[],o=new Map;for(let r of A)r.id?e.push(r.id):t.push(r.project),o.set(r.project,r.checked);let g=await Co(e);if(!g.ok)t=A.map(r=>r.project);else for(let r of g.value.projects)o.has(r.name)&&(yield{ok:!0,value:{...r,checked:o.get(r.name)??0}});for(let r of t){let n=await ue(r);yield n.ok?{ok:!0,value:{...n.value,checked:o.get(r)??0}}:{ok:!1,value:{...n.value,project:r}}}}var xC=(A,e)=>e.some(t=>A instanceof t),dD,uD;function hk(){return dD||(dD=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function dk(){return uD||(uD=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}var JC=new WeakMap,OC=new WeakMap,LQ=new WeakMap;function uk(A){let e=new Promise((t,o)=>{let g=()=>{A.removeEventListener("success",r),A.removeEventListener("error",n)},r=()=>{t(Nt(A.result)),g()},n=()=>{o(A.error),g()};A.addEventListener("success",r),A.addEventListener("error",n)});return LQ.set(e,A),e}function fk(A){if(JC.has(A))return;let e=new Promise((t,o)=>{let g=()=>{A.removeEventListener("complete",r),A.removeEventListener("error",n),A.removeEventListener("abort",n)},r=()=>{t(),g()},n=()=>{o(A.error||new DOMException("AbortError","AbortError")),g()};A.addEventListener("complete",r),A.addEventListener("error",n),A.addEventListener("abort",n)});JC.set(A,e)}var RC={get(A,e,t){if(A instanceof IDBTransaction){if(e==="done")return JC.get(A);if(e==="store")return t.objectStoreNames[1]?void 0:t.objectStore(t.objectStoreNames[0])}return Nt(A[e])},set(A,e,t){return A[e]=t,!0},has(A,e){return A instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in A}};function yD(A){RC=A(RC)}function Mk(A){return dk().includes(A)?function(...e){return A.apply(ZC(this),e),Nt(this.request)}:function(...e){return Nt(A.apply(ZC(this),e))}}function Nk(A){return typeof A=="function"?Mk(A):(A instanceof IDBTransaction&&fk(A),xC(A,hk())?new Proxy(A,RC):A)}function Nt(A){if(A instanceof IDBRequest)return uk(A);if(OC.has(A))return OC.get(A);let e=Nk(A);return e!==A&&(OC.set(A,e),LQ.set(e,A)),e}var ZC=A=>LQ.get(A);function GD(A,e,{blocked:t,upgrade:o,blocking:g,terminated:r}={}){let n=indexedDB.open(A,e),Q=Nt(n);return o&&n.addEventListener("upgradeneeded",B=>{o(Nt(n.result),B.oldVersion,B.newVersion,Nt(n.transaction),B)}),t&&n.addEventListener("blocked",B=>t(B.oldVersion,B.newVersion,B)),Q.then(B=>{r&&B.addEventListener("close",()=>r()),g&&B.addEventListener("versionchange",C=>g(C.oldVersion,C.newVersion,C))}).catch(()=>{}),Q}function kD(A,{blocked:e}={}){let t=indexedDB.deleteDatabase(A);return e&&t.addEventListener("blocked",o=>e(o.oldVersion,o)),Nt(t).then(()=>{})}var yk=["get","getKey","getAll","getAllKeys","count"],Gk=["put","add","delete","clear"],FC=new Map;function fD(A,e){if(!(A instanceof IDBDatabase&&!(e in A)&&typeof e=="string"))return;if(FC.get(e))return FC.get(e);let t=e.replace(/FromIndex$/,""),o=e!==t,g=Gk.includes(t);if(!(t in(o?IDBIndex:IDBObjectStore).prototype)||!(g||yk.includes(t)))return;let r=async function(n,...Q){let B=this.transaction(n,g?"readwrite":"readonly"),C=B.store;return o&&(C=C.index(Q.shift())),(await Promise.all([C[t](...Q),g&&B.done]))[0]};return FC.set(e,r),r}yD(A=>({...A,get:(e,t,o)=>fD(e,t)||A.get(e,t,o),has:(e,t)=>!!fD(e,t)||A.has(e,t)}));var kk=["continue","continuePrimaryKey","advance"],MD={},UC=new WeakMap,YD=new WeakMap,Yk={get(A,e){if(!kk.includes(e))return A[e];let t=MD[e];return t||(t=MD[e]=function(...o){UC.set(this,YD.get(this)[e](...o))}),t}};async function*bk(...A){let e=this;if(e instanceof IDBCursor||(e=await e.openCursor(...A)),!e)return;e=e;let t=new Proxy(e,Yk);for(YD.set(t,e),LQ.set(t,ZC(e));e;)yield t,e=await(UC.get(t)||e.continue()),UC.delete(t)}function ND(A,e){return e===Symbol.asyncIterator&&xC(A,[IDBIndex,IDBObjectStore,IDBCursor])||e==="iterate"&&xC(A,[IDBIndex,IDBObjectStore])}yD(A=>({...A,get(e,t,o){return ND(e,t)?bk:A.get(e,t,o)},has(e,t){return ND(e,t)||A.has(e,t)}}));var bD=Zo("scrapbox-storage:db.ts"),jD,TQ=async()=>(jD??=await GD("scrapbox-storage",1,{upgrade(A){bD.time("update DB");for(let e of A.objectStoreNames)A.deleteObjectStore(e);A.createObjectStore("links",{keyPath:"project"}),A.createObjectStore("status",{keyPath:"project"}),bD.timeEnd("update DB")}}),jD),OD=async A=>(await TQ()).put("links",A);var SQ=new Map,FD=A=>{let e={type:"update",projects:A};xD(e);let t=new BroadcastChannel(JD);t.postMessage(e),t.close()},xD=A=>{for(let e of new Set(A.projects.flatMap(t=>[...SQ.get(t)??[]])))e?.(A)},JD="scrapbox-storage-notify",jk=new BroadcastChannel(JD);jk.addEventListener("message",A=>xD(A.data));var xg=(A,e)=>{for(let t of A){let o=SQ.get(t)??new Set;o.add(e),SQ.set(t,o)}return()=>{for(let t of A)SQ.get(t)?.delete?.(e)}};var tt=Zo("scrapbox-storage:mod.ts"),vQ=async(A,e)=>{let t=await TQ(),o=[],g=[];try{{tt.debug("check updates of links...");let Q=t.transaction("status","readwrite");await Promise.all(A.map(async B=>{let C=await Q.store.get(B);if(C?.isValid===!1)return;let i=C?.checked??0,I=new Date().getTime()/1e3;if(i+e>I||C?.updating&&i+600>I)return;let s={project:B,id:C?.id,isValid:!0,checked:i,updated:C?.updated??0,updating:!0};o.push(s),Q.store.put(s)})),await Q.done,tt.debug(checked. ${o.length} projects maybe need upgrade.)}if(o.length===0)return[];let r=[],n=[];for await(let Q of hD(o)){if(!Q.ok)switch(g.push({project:Q.value.project,isValid:!1}),Q.value.name){case"NotFoundError":tt.warn("${Q.value.project}" is not found.);continue;case"NotMemberError":tt.warn(You are not a member of "${Q.value.project}".);continue;case"NotLoggedInError":tt.warn(You are not a member of "${Q.value.project}" or You are not logged in yet.);continue}if(Q.value.updated<Q.value.checked)tt.debug(no updates in "${Q.value.name}");else{let B=await mD(Q.value.name);if(!B.ok)throw Error(${B.value.name} ${B.value.message});let C={project:Q.value.name,links:B.value};n.push(C),tt.time(write data of "${Q.value.name}"),await OD(C),r.push(Q.value.name),tt.timeEnd(write data of "${Q.value.name}")}g.push({project:Q.value.name,isValid:!0,id:Q.value.id,checked:new Date().getTime()/1e3,updated:Q.value.updated,updating:!1})}return r.length>0&&FD(r),n}finally{let r=t.transaction("status","readwrite"),n=r.store;await Promise.all(g.map(Q=>n.put(Q))),await r.done}},Lo=async A=>{let e=[],t=new Date;{let g=(await TQ()).transaction("links","readonly");await Promise.all(A.map(async r=>{let n=await g.store.get(r);e.push(n??{project:r,links:[]})})),await g.done}let o=new Date().getTime()-t.getTime();return tt.debug(Read links of ${A.length} projects in ${o}ms),e};kD("userscript-links").catch(A=>console.error(A));var LC=Ye("scrapbox-select-suggestion:useSource.ts"),RD=A=>{let[e,t]=L([]),o=b(g=>{let r=new Date,n=new Map;for(let{project:C,links:i}of g)for(let I of i){let{title:s,updated:a,image:c}=Uo(I),l=z(s),D=n.get(l);n.set(l,{title:D?.title??s,updated:Math.max(D?.updated??0,a),metadata:[...D?.metadata??[],{project:C,image:c}]})}let Q=[...n.entries()].map(([C,i])=>({titleLc:C,...i})),B=new Date().getTime()-r.getTime();LC.debug(Compiled ${Q.length} source in ${B}ms),LC.debug("Detect changes!"),t(Q)},[]);return X(()=>{let g=!1,r=async()=>{let C=await Lo([...A]);g||o(C)};r();let n=xg([...A],({projects:C})=>{LC.debug(Detect ${C.length} projects' update:,C),r()}),Q=()=>vQ([...A],600);Q();let B=setInterval(Q,600*1e3);return()=>{g=!0,clearInterval(B),n()}},[A]),e};var ZD=A=>{let e=J(()=>Fg(A.style,import.meta.url),[A.style]);return E(W,null,e!==""&&(e instanceof URL?E("link",{rel:"stylesheet",href:e.href}):E("style",null,e)))};var UD=()=>E("style",null,.container { position: absolute;
margin-top: 14px;
max-height: 80vh;
z-index: 301;
background-color: var(--select-suggest-bg, #111); font-family: var(--select-suggest-font-family, "Open Sans", Helvetica, Arial, "Hiragino Sans", sans-serif);
font-size: 14px;
color: var(--select-suggest-text-color, #eee); border-radius: 4px;
}
.candidates {
max-width: 80vw;
}
font-size:11px;
}
.projects {
margin-right: 4px;
display: grid;
grid-template-rows: repeat(4, min-content);
grid-auto-flow: column;
direction: rtl;
}
padding: 6px;
}
.candidates > :not(:first-child) {
border-top: 1px solid var(--select-suggest-border-color, #eee); }
.candidates > *{
line-height: 1.2em;
padding: 0.5em 10px;
}
.candidate {
display: flex;
}
a {
display: block;
text-decoration: none;
color: inherit;
}
a:not(.mark) {
width: 100%;
}
.selected a {
background-color: var(--select-suggest-selected-bg, #222); text-decoration: underline
}
img {
height: 1.3em;
width: 1.3em;
position: relative;
object-fit: cover;
object-position: 0% 0%;
}
.disabled {
filter: grayscale(1.0) opacity(0.5);
}
.counter {
color: var(--select-suggest-information-text-color, #aaa); font-size: 80%;
font-style: italic;
}
padding: unset;
border: unset;
height: 0.5px;
transition: background 0.1s;
});function*LD(A){if(!("nodes"in A))return;let e=0;function*t(o){for(let g of Array.isArray(o)?o:[o]){if(typeof g=="string"){e+=[...g].length;continue}switch(g.type){case"link":yield{whole:g.unit.whole,start:e},e+=[...g.unit.whole].length;break;case"indent":case"quote":e+=[...g.unit.tag].length,yield*t(g.children);break;case"deco":e+=[...g.unit.deco].length+2,yield*t(g.children),e++;break;case"strong":e+=2,yield*t(g.children),e+=2;break;default:e+=[...g.unit.whole].length;break}}}yield*t(A.nodes)}var TD=(A,e)=>{if(e.type==="unlock"){if(!A.lock)return A;let{lock:n,...Q}=A;return{...Q}}if(A.lock)return A;switch(e.type){case"lock":{let{lock:n,...Q}=A;return{lock:!0,...Q}}case"enable":return A.type==="disabled"&&A.isManuallyDisabled?{type:"ready"}:A;case"disable":return A.type==="disabled"&&A.isManuallyDisabled?A:{type:"disabled",isManuallyDisabled:!0}}if(A.type==="disabled")return A.isManuallyDisabled||!e.lines?A:{type:"ready"};if(e.type==="cancel")return A.type==="completion"?{type:"cancelled",context:A.context}:A;if(!e.lines)return{type:"disabled"};let t=Math.min(e.range.start.char,e.range.end.char),o=Math.max(e.range.start.char,e.range.end.char),g=e.lines?e.range.start.line!==e.range.end.line?
:[...e.lines[e.range.start.line].text].slice(t,o).join(""):"";if(Fk(e.lines[e.position.line],g)&&A.type!=="cancelled")return{type:"completion",context:"selection",query:g,start:t,position:e.position};if(g!=="")return A.type==="completion"?{type:"ready"}:A;let r=Ok(e.lines[e.position.line],e.position.char);return r?A.type==="cancelled"&&A.context==="input"?A:A.type==="completion"||e.type==="lines:changed"?{type:"completion",context:"input",query:r.whole,start:r.start,position:e.position}:A.type==="ready"?A:{type:"ready"}:A.type==="ready"?A:{type:"ready"}},Ok=(A,e)=>{for(let{whole:t,start:o}of LD(A))if(!(e<=o||o+[...t].length<=e))return{whole:t,start:o}},Fk=(A,e)=>!(e.trim()===""||e.includes(
)||"codeBlock"in A||"title"in A||"tableBlock"in A&&A.tableBlock.start);var SD=()=>{let A=kA(scrapbox.Page.lines),e=kA(!1);return X(()=>{let t=()=>{e.current=!0};return scrapbox.addListener("lines:changed",t),scrapbox.addListener("layout:changed",t),()=>{scrapbox.removeListener("lines:changed",t),scrapbox.removeListener("layout:changed",t)}},[]),b(()=>(e.current&&(A.current=scrapbox.Page.lines,e.current=!1),A.current??void 0),[])};var xk=Ye("scrapbox-select-suggestion:useLifecycle.ts"),vD=()=>{let[A,e]=Ot(TD,{type:"ready"}),t=SD(),o=J(()=>{let n;return Q=>{n!==void 0&&clearTimeout(n),n=setTimeout(()=>{let{cursor:B,selection:C}=Qe();e({type:Q,lines:t(),range:C.getRange({normalizeOrder:!0}),position:B.getPosition()})},Q==="cursor:changed"?100:void 0)}},[]);X(()=>{let n=()=>{o("lines:changed")};scrapbox.addListener("lines:changed",n),scrapbox.addListener("layout:changed",n);let Q=()=>{o("selection:changed")},B=hr();return B.addChangeListener(Q),()=>{scrapbox.removeListener("lines:changed",n),scrapbox.removeListener("layout:changed",n),B.removeChangeListener(Q)}},[]),X(()=>{if(A.context!=="input")return;let n=()=>{o("cursor:changed")},Q=it();return Q.addChangeListener(n),()=>Q.removeChangeListener(n)},[A.context]);let[g,r]=L(A);return g!==A&&(r(A),xk.debug("Detect changes",A)),{state:A,setEnable:b(n=>e({type:n?"enable":"disable"}),[]),cancel:b(()=>e({type:"cancel"}),[]),freezeUntil:b(n=>{e({type:"lock"});let Q=n();if(Q instanceof Promise)return Q.then(()=>{e({type:"unlock"})});e({type:"unlock"})},[]),confirmAfter:b(async n=>{let Q=t();if(!Q)return;e({type:"lock"});let{cursor:B,selection:C}=Qe(),i=B.getPosition().line,I=Q[i].text,[s,a]=n(I,B.getPosition());C.setRange({start:{line:i,char:0},end:{line:i,char:[...I].length}}),await bA(s),B.setPosition(a),B.focus(),e({type:"unlock"}),e({type:"cancel"})},[])}};var HD=(A,e)=>{let t=A.dist-e.dist;if(t!==0)return t;let o=A.matches.map(([n])=>n).sort(),g=e.matches.map(([n])=>n).sort();for(let n=0;n<o.length;n++){let Q=o[n]-(g[n]??g.length);if(Q!==0)return Q}let r=A.title.length-e.title.length;return r!==0?r:e.updated-A.updated};var WD=A=>{let e=new Map,t=[...A].reverse();{let n=1;for(let Q of t){e.set(Q,(e.get(Q)??0)|n);let B=Q.toLowerCase();e.set(B,(e.get(B)??0)|n);let C=Q.toUpperCase();e.set(C,(e.get(C)??0)|n),n<<=1}}let o=t.length,g=~(-1<<o),r=1<<o-1;return n=>{let Q=0,B=g,C=[...n].reverse(),i=[],I=C.length;i[I]=o;for(let s of C){let a=e.get(s)??0,c=a|Q,l=(a&B)+B^B|a,D=Q|~(l|B),m=B&l;i[I-1]=i[I]+(D&r?1:m&r?-1:0),B=m<<1|~(c|D<<1),Q=D<<1&c,I--}return i}};var Jk=[0,0,0,1,1,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],XD=A=>{let e=Xi(A.trim()).split(/\s+/).sort((t,o)=>o.length-t.length);if(!(e.length===0||e.every(t=>t==="")))return t=>{let o=[...t];for(let g of e)o=Rk(g,o);return o}},Rk=(A,e)=>{let t=[...A].length,o=Jk[t],g=WD(A);return e.flatMap(({title:r,dist:n,matches:Q,...B})=>{Q??=[],n??=0;let C=g(r).flatMap((I,s)=>I<=o&&Q.every(([a,c])=>s+t<=a||c<s)?[[s,I]]:[]);if(C.length===0)return[];let i=C.reduce((I,[s,a])=>(I.dist<=a||(I.dist=a,I.start=s),I),{dist:t,start:0});return Q.push([i.start,i.start+t-1]),[{title:r,dist:i.dist+n,matches:Q,...B}]})};var Zk=Ye("scrapbox-select-suggestion:cancelableSearch.ts");async function*zD(A,e,t){let o=XD(A);if(!o)return;let g=t?.chunk??1e3,r=Math.floor(e.length/g)+1,n=0,Q=new Date;try{for(;n<r;n++)await new Promise(B=>requestAnimationFrame(B)),yield[o(e.slice(n*g,(n+1)*g)),(n+1)/r]}finally{let C=new Date().getTime()-Q.getTime();Zk.debug(search ${(n/r*100).toPrecision(3)}% of the source for "${A}" in ${C}ms)}}function KD(A,e){let t=null,o=null,g=(...r)=>{g.clear(),o=()=>{g.clear(),A.call(g,...r)},t=setTimeout(o,e)};return g.clear=()=>{typeof t=="number"&&(clearTimeout(t),t=null,o=null)},g.flush=()=>{o?.()},Object.defineProperty(g,"pending",{get:()=>typeof t=="number"}),g}var Uk=Ye("scrapbox-select-suggestion:useSearch.ts"),PD=A=>{let e=b((g,r,n)=>{let Q=!1,B=zD(g,r,{chunk:5e3});return{run:async()=>{if(n){let s=[];for await(let[a]of B){if(Q)return;s.push(...a)}o({progress:1,candidates:s});return}let C=KD(o,500),i=!1,I=[];for await(let[s,a]of B){if(Q){C.clear();return}I=[...I,...s],o({progress:a}),s.length!==0&&(C({progress:a,candidates:I}),i||(C.flush(),i=!0))}C({progress:1,candidates:I}),C.flush()},abort:()=>Q=!0}},[]),[t,o]=Ot(J(()=>Lk(e),[e]),{source:A});return[J(()=>{if(!To(t))return;let[g,r]=Tk(t.candidates);return Uk.debug("Detect changes",{progress:t.progress,items:r}),{progress:t.progress,projectScore:g,items:r}},[t]),{search:b(g=>o({query:g}),[]),update:b(g=>o({source:g}),[])}]},To=A=>"query"in A,Lk=A=>(e,t)=>{if("query"in t){let n=To(e)?e.query:"";if(t.query===n)return e;let Q=To(e)?e.job:void 0;if(!t.query)return Q?.abort?.(),{source:e.source};let{run:B,abort:C}=A(t.query,e.source,!1),i=Q?.abort?.()?.then?.(B)??B();return{query:t.query,source:e.source,job:{done:i,abort:()=>(C(),i)},progress:0,candidates:!n||!To(e)?[]:e.candidates}}if("source"in t){if(!To(e))return t.source===e.source?e:t;let{source:n,job:Q,...B}=e;if(t.source===n)return e;let{run:C,abort:i}=A(e.query,n,!1),I=Q.done.then(C);return{source:t.source,job:{done:I,abort:()=>Q.abort().then(()=>(i(),I))},...B}}if(!To(e))return e;if(!t.candidates){let{progress:n,...Q}=e;return n===t.progress?e:{progress:t.progress,...Q}}let{candidates:o,progress:g,...r}=e;return o===t.candidates&&g===t.progress?e:{candidates:t.candidates??o,progress:t.progress,...r}},Tk=A=>{let e=new Map,t=[];for(let o of A.sort(HD)){let g=o.metadata.map(({project:r})=>r);for(let r of g)e.set(r,(e.get(r)??0)+.5**o.dist);t.push({title:o.title,dist:o.dist,projects:g})}return[e,t]};var VD=(A,e)=>{let t=kA({...e});X(()=>(Object.assign(t.current,e),()=>{for(let o of Object.keys(e))delete t.current[o]}),[...Object.keys(e)].sort().map(o=>e[o])),X(()=>{A(t.current)},[A])};var Sk={selectNext:()=>!1,selectPrev:()=>!1,selectFirst:()=>!1,selectLast:()=>!1,confirm:()=>!1,cancel:()=>!1},qD=A=>{let e=RD(A.projects),[t,{update:o,search:g}]=PD(e),{state:r,setEnable:n,...Q}=vD();o(e),g(r.type==="completion"?r.context==="input"?r.query.slice(1,-1):r.query:"");let[B,C]=L(),{callback:i,style:I,...s}=A;return VD(i,{enable:b(()=>n(!0),[]),disable:b(()=>n(!1),[]),...r.type!=="completion"||!B?Sk:B}),E(W,null,E(UD,null),E(ZD,{style:I}),r.type==="completion"&&t&&E(lD,{callback:C,...t,...r,...Q,...s}))};var _D=A=>{let e=document.createElement("div");e.dataset.userscriptName="scrapbox-select-suggestion";let t=e.attachShadow({mode:"open"});document.body.append(e);let{limit:o=5,debug:g=!1,mark:r={},style:n="",enableSelfProjectOnStart:Q=!0}=A??{},B=new Set([...Q?[scrapbox.Project.name]:[],...A?.projects??[scrapbox.Project.name]]);return Vn(g),jC(g),new Promise(C=>GA(E(qD,{limit:o,projects:B,mark:r,style:n,callback:C,enableSelfProjectOnStart:Q}),t))};var se=A=>A.flatMap(e=>{let t=e.slice(1),o=Math.min(...t.map(g=>g.text.length-g.text.trimStart().length));return t.map(g=>g.text.slice(o))}).join(
).trim();function*$D(A,e){for(let[t,o]of e.entries()){let g=A.get(t);if(g&&se(g.blocks)===se(o)){yield{changed:!1,filename:t};continue}yield{changed:!0,filename:t}}for(let t of A.keys())e.has(t)||(yield{changed:!0,filename:t})}var Ap=A=>{let e=new Map;if(A.length===0)return e;let t=hA(A.map(g=>g.text).join(
),{hasTitle:!0}),o=0;for(let g of t)switch(g.type){case"title":case"line":o++;break;case"table":o+=g.cells.length+1;break;case"codeBlock":{let r=e.get(g.fileName)??[],n=g.content.split(
).length+1;r.push(A.slice(o,o+n)),e.set(g.fileName,r),o+=n;break}}return e};var ep=A=>{let e,t,o=async()=>{for(;e;){let[g,r]=e;e=void 0;try{let n=await A(...g);r({type:"resolve",value:n})}catch(n){r({type:"reject",value:n})}}t=void 0};return(...g)=>{let{resolve:r,promise:n}=Promise.withResolvers();return e?.[1]?.({type:"cancel"}),e=[g,r],t??=o(),n}};var HQ=class{constructor(e,t){this._filename=e;this._preview=ep(async(o,g,r)=>(this._dispose=await t(r?{filename:this.filename,before:o,after:g,render:(...n)=>{r.textContent="",r.append(...n)}}:{filename:this.filename,before:o}),!1))}get filename(){return this._filename}get blocks(){return this._blocks??[]}async update(e){if(await this._dispose?.(),!e||se(e)===""){let Q=await this._preview(this.blocks);if(Q.type==="cancel")return Q;if(Q.type==="reject")throw Q.value;return this._area?.remove?.(),this._style?.remove?.(),this._area=void 0,this._style=void 0,this._blocks=void 0,{type:"resolve",value:!0}}let t=this.blocks;this._blocks=e,this.makeStyle();let o=this.makeArea(),g=e.at(0)?.at?.(-1)?.id,r=Ft(g);if(!r)throw new Error("div.lines#L${g}" could not be found.);r.insertAdjacentElement("afterend",o);let n=()=>{let Q=r.getElementsByClassName("indent")[0];Q instanceof HTMLElement&&(o.style.marginLeft=Q.style.marginLeft)};return this._observer?.disconnect?.(),n(),this._observer=new MutationObserver(n),this._observer.observe(r,{childList:!0,subtree:!0}),this._preview(t,e,o)}makeArea(){if(this._area)return this._area;let e=document.createElement("div");return e.classList.add("scrap-run"),e.dataset.filename=this.filename,this._area=e,e}makeStyle(){let e=this.blocks.flatMap(o=>o.slice(1).map(({id:g})=>#L${g})),t=this.blocks.flatMap(o=>o.map(({id:g})=>#L${g}));this._style||(this._style=document.createElement("style"),document.head.append(this._style)),this._style.textContent=.lines:not(:has(:is(${...t.join(",")}).cursor-line)) :is(${...e.join(",")}){display:none}}_blocks;_dispose;_preview;_area;_observer;_style};var tp=({previewers:A})=>{let e=new Map,t=()=>{let r=Ap(KA());for(let{changed:n,filename:Q}of $D(e,r)){if(!n)continue;let B=r.get(Q),C=e.get(Q);if(!C){if(!B)continue;let i=A.find(({when:I})=>I.test(Q))?.preview;if(!i)continue;C=new HQ(Q,i),e.set(Q,C)}C.update(B).then(i=>{switch(i.type){case"resolve":i.value&&e.delete(Q);return;case"reject":throw i.value;case"cancel":return}})}},o=()=>{if(scrapbox.Layout!=="page"){scrapbox.off("lines:changed",t);return}t(),scrapbox.on("lines:changed",t)};o(),scrapbox.on("page:changed",o);let g=document.createElement("style");return g.textContent=".scrap-run{display:block;width:95%}",document.head.append(g),()=>{scrapbox.off("page:changed",o),g.remove()}};var Jg=A=>{let e=new FileReader,t=new Promise(o=>e.onload=()=>o(e.result));return e.readAsDataURL(A),t};var op=async A=>{if(!("after"in A))return;let e=se(A.after),o=new DOMParser().parseFromString(e,"image/svg+xml").querySelector("parsererror");if(o){let n=document.createElement("pre"),Q=document.createElement("code");Q.innerText=o.innerHTML,n.append(Q),A.render(n);return}let g=await Jg(new Blob([e],{type:"image/svg+xml"})),r=document.createElement("img");r.src=g,A.render(r)};var vC={};Qt(vC,{default:()=>Cp});var gp=globalThis||(typeof window<"u"?window:self),pY=Object.create,SC=Object.defineProperty,wY=Object.getOwnPropertyDescriptor,mY=Object.getOwnPropertyNames,hY=Object.getPrototypeOf,dY=Object.prototype.hasOwnProperty,uY=(A,e)=>()=>(e||A((e={exports:{}}).exports,e),e.exports),fY=(A,e)=>{for(var t in e)SC(A,t,{get:e[t],enumerable:!0})},TC=(A,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let g of mY(e))!dY.call(A,g)&&g!==t&&SC(A,g,{get:()=>e[g],enumerable:!(o=wY(e,g))||o.enumerable});return A},MY=(A,e,t)=>(TC(A,e,"default"),t&&TC(t,e,"default")),Qp=(A,e,t)=>(t=A!=null?pY(hY(A)):{},TC(e||!A||!A.__esModule?SC(t,"default",{value:A,enumerable:!0}):t,A)),np=uY((A,e)=>{var t;typeof window<"u"?t=window:typeof gp<"u"?t=gp:typeof self<"u"?t=self:t={},e.exports=t}),Bp={};fY(Bp,{default:()=>Cp});var NY=Qp(np());MY(Bp,Qp(np()));var{default:rp,...yY}=NY,Cp=rp!==void 0?rp:yY;var XC={};Qt(XC,{default:()=>Ep});var GY=Object.create,WC=Object.defineProperty,kY=Object.getOwnPropertyDescriptor,YY=Object.getOwnPropertyNames,bY=Object.getPrototypeOf,jY=Object.prototype.hasOwnProperty,OY=(A,e)=>()=>(e||A((e={exports:{}}).exports,e),e.exports),FY=(A,e)=>{for(var t in e)WC(A,t,{get:e[t],enumerable:!0})},HC=(A,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let g of YY(e))!jY.call(A,g)&&g!==t&&WC(A,g,{get:()=>e[g],enumerable:!(o=kY(e,g))||o.enumerable});return A},xY=(A,e,t)=>(HC(A,e,"default"),t&&HC(t,e,"default")),Ip=(A,e,t)=>(t=A!=null?GY(bY(A)):{},HC(e||!A||!A.__esModule?WC(t,"default",{value:A,enumerable:!0}):t,A)),sp=OY((A,e)=>{e.exports=o;var t=Object.prototype.toString;function o(g){if(!g)return!1;var r=t.call(g);return r==="[object Function]"||typeof g=="function"&&r!=="[object RegExp]"||typeof window<"u"&&(g===window.setTimeout||g===window.alert||g===window.confirm||g===window.prompt)}}),ap={};FY(ap,{default:()=>Ep});var JY=Ip(sp());xY(ap,Ip(sp()));var{default:ip,...RY}=JY,Ep=ip!==void 0?ip:RY;var PC={};Qt(PC,{default:()=>wp});var ZY=Object.create,KC=Object.defineProperty,UY=Object.getOwnPropertyDescriptor,LY=Object.getOwnPropertyNames,TY=Object.getPrototypeOf,SY=Object.prototype.hasOwnProperty,vY=(A,e)=>()=>(e||A((e={exports:{}}).exports,e),e.exports),HY=(A,e)=>{for(var t in e)KC(A,t,{get:e[t],enumerable:!0})},zC=(A,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let g of LY(e))!SY.call(A,g)&&g!==t&&KC(A,g,{get:()=>e[g],enumerable:!(o=UY(e,g))||o.enumerable});return A},WY=(A,e,t)=>(zC(A,e,"default"),t&&zC(t,e,"default")),lp=(A,e,t)=>(t=A!=null?ZY(TY(A)):{},zC(e||!A||!A.__esModule?KC(t,"default",{value:A,enumerable:!0}):t,A)),Dp=vY((A,e)=>{var t=function(g){return g.replace(/^\s+|\s+$/g,"")},o=function(g){return Object.prototype.toString.call(g)==="[object Array]"};e.exports=function(g){if(!g)return{};for(var r={},n=t(g).split( ),Q=0;Q<n.length;Q++){var B=n[Q],C=B.indexOf(":"),i=t(B.slice(0,C)).toLowerCase(),I=t(B.slice(C+1));typeof r[i]>"u"?r[i]=I:o(r[i])?r[i].push(I):r[i]=[r[i],I]}return r}}),pp={};HY(pp,{default:()=>wp});var XY=lp(Dp());WY(pp,lp(Dp()));var{default:cp,...zY}=XY,wp=cp!==void 0?cp:zY;var _C={};Qt(_C,{default:()=>fp});var KY=Object.create,qC=Object.defineProperty,PY=Object.getOwnPropertyDescriptor,VY=Object.getOwnPropertyNames,qY=Object.getPrototypeOf,_Y=Object.prototype.hasOwnProperty,$Y=(A,e)=>()=>(e||A((e={exports:{}}).exports,e),e.exports),Ab=(A,e)=>{for(var t in e)qC(A,t,{get:e[t],enumerable:!0})},VC=(A,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let g of VY(e))!_Y.call(A,g)&&g!==t&&qC(A,g,{get:()=>e[g],enumerable:!(o=PY(e,g))||o.enumerable});return A},eb=(A,e,t)=>(VC(A,e,"default"),t&&VC(t,e,"default")),hp=(A,e,t)=>(t=A!=null?KY(qY(A)):{},VC(e||!A||!A.__esModule?qC(t,"default",{value:A,enumerable:!0}):t,A)),dp=$Y((A,e)=>{e.exports=o;var t=Object.prototype.hasOwnProperty;function o(){for(var g={},r=0;r<arguments.length;r++){var n=arguments[r];for(var Q in n)t.call(n,Q)&&(g[Q]=n[Q])}return g}}),up={};Ab(up,{default:()=>fp});var tb=hp(dp());eb(up,hp(dp()));var{default:mp,...ob}=tb,fp=mp!==void 0?mp:ob;var So=A=>{let e=o=>typeof o.default<"u"?o.default:o,t=o=>Object.assign({},o);switch(A){case"global/window":return e(vC);case"is-function":return e(XC);case"parse-headers":return e(PC);case"xtend":return e(_C);default:throw new Error('module "'+A+'" not found')}},gb=Object.create,Ai=Object.defineProperty,rb=Object.getOwnPropertyDescriptor,Qb=Object.getOwnPropertyNames,nb=Object.getPrototypeOf,Bb=Object.prototype.hasOwnProperty,WQ=(A=>typeof So<"u"?So:typeof Proxy<"u"?new Proxy(A,{get:(e,t)=>(typeof So<"u"?So:e)[t]}):A)(function(A){if(typeof So<"u")return So.apply(this,arguments);throw Error('Dynamic require of "'+A+'" is not supported')}),Cb=(A,e)=>()=>(e||A((e={exports:{}}).exports,e),e.exports),ib=(A,e)=>{for(var t in e)Ai(A,t,{get:e[t],enumerable:!0})},$C=(A,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let g of Qb(e))!Bb.call(A,g)&&g!==t&&Ai(A,g,{get:()=>e[g],enumerable:!(o=rb(e,g))||o.enumerable});return A},Ib=(A,e,t)=>($C(A,e,"default"),t&&$C(t,e,"default")),Np=(A,e,t)=>(t=A!=null?gb(nb(A)):{},$C(e||!A||!A.__esModule?Ai(t,"default",{value:A,enumerable:!0}):t,A)),yp=Cb((A,e)=>{"use strict";var t=WQ("global/window"),o=WQ("is-function"),g=WQ("parse-headers"),r=WQ("xtend");e.exports=C,e.exports.default=C,C.XMLHttpRequest=t.XMLHttpRequest||s,C.XDomainRequest="withCredentials"in new C.XMLHttpRequest?C.XMLHttpRequest:t.XDomainRequest,n(["get","put","post","patch","head","delete"],function(a){C[a==="delete"?"del":a]=function(c,l,D){return l=B(c,l,D),l.method=a.toUpperCase(),i(l)}});function n(a,c){for(var l=0;l<a.length;l++)c(a[l])}function Q(a){for(var c in a)if(a.hasOwnProperty(c))return!1;return!0}function B(a,c,l){var D=a;return o(c)?(l=c,typeof a=="string"&&(D={uri:a})):D=r(c,{uri:a}),D.callback=l,D}function C(a,c,l){return c=B(a,c,l),i(c)}function i(a){if(typeof a.callback>"u")throw new Error("callback argument missing");var c=!1,l=function(F,Z,O){c||(c=!0,a.callback(F,Z,O))};function D(){p.readyState===4&&setTimeout(u,0)}function m(){var F=void 0;if(p.response?F=p.response:F=p.responseText||I(p),M)try{F=JSON.parse(F)}catch{}return F}function N(F){return clearTimeout(Y),F instanceof Error||(F=new Error(""+(F||"Unknown XMLHttpRequest Error"))),F.statusCode=0,l(F,j)}function u(){if(!d){var F;clearTimeout(Y),a.useXDR&&p.status===void 0?F=200:F=p.status===1223?204:p.status;var Z=j,O=null;return F!==0?(Z={body:m(),statusCode:F,method:G,headers:{},url:k,rawRequest:p},p.getAllResponseHeaders&&(Z.headers=g(p.getAllResponseHeaders()))):O=new Error("Internal XMLHttpRequest Error"),l(O,Z,Z.body)}}var p=a.xhr||null;p||(a.cors||a.useXDR?p=new C.XDomainRequest:p=new C.XMLHttpRequest);var h,d,k=p.url=a.uri||a.url,G=p.method=a.method||"GET",R=a.body||a.data,y=p.headers=a.headers||{},f=!!a.sync,M=!1,Y,j={body:void 0,headers:{},statusCode:0,method:G,url:k,rawRequest:p};if("json"in a&&a.json!==!1&&(M=!0,y.accept||y.Accept||(y.Accept="application/json"),G!=="GET"&&G!=="HEAD"&&(y["content-type"]||y["Content-Type"]||(y["Content-Type"]="application/json"),R=JSON.stringify(a.json===!0?R:a.json))),p.onreadystatechange=D,p.onload=u,p.onerror=N,p.onprogress=function(){},p.onabort=function(){d=!0},p.ontimeout=N,p.open(G,k,!f,a.username,a.password),f||(p.withCredentials=!!a.withCredentials),!f&&a.timeout>0&&(Y=setTimeout(function(){if(!d){d=!0,p.abort("timeout");var F=new Error("XMLHttpRequest timeout");F.code="ETIMEDOUT",N(F)}},a.timeout)),p.setRequestHeader)for(h in y)y.hasOwnProperty(h)&&p.setRequestHeader(h,y[h]);else if(a.headers&&!Q(a.headers))throw new Error("Headers cannot be set on an XDomainRequest object");return"responseType"in a&&(p.responseType=a.responseType),"beforeSend"in a&&typeof a.beforeSend=="function"&&a.beforeSend(p),p.send(R||null),p}function I(a){try{if(a.responseType==="document")return a.responseXML;var c=a.responseXML&&a.responseXML.documentElement.nodeName==="parsererror";if(a.responseType===""&&!c)return a.responseXML}catch{}return null}function s(){}}),Gp={};ib(Gp,{default:()=>XQ});var sb=Np(yp());Ib(Gp,Np(yp()));var{default:Mp,...ab}=sb,XQ=Mp!==void 0?Mp:ab;var zQ=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(A){return typeof A}:function(A){return A&&typeof Symbol=="function"&&A.constructor===Symbol&&A!==Symbol.prototype?"symbol":typeof A},slA=function(){function A(t){this.value=t}function e(t){var o,g;function r(B,C){return new Promise(function(i,I){var s={key:B,arg:C,resolve:i,reject:I,next:null};g?g=g.next=s:(o=g=s,n(B,C))})}function n(B,C){try{var i=t[B](C),I=i.value;I instanceof A?Promise.resolve(I.value).then(function(s){n("next",s)},function(s){n("throw",s)}):Q(i.done?"return":"normal",i.value)}catch(s){Q("throw",s)}}function Q(B,C){switch(B){case"return":o.resolve({value:C,done:!0});break;case"throw":o.reject(C);break;default:o.resolve({value:C,done:!1});break}o=o.next,o?n(o.key,o.arg):g=null}this._invoke=r,typeof t.return!="function"&&(this.return=void 0)}return typeof Symbol=="function"&&Symbol.asyncIterator&&(e.prototype[Symbol.asyncIterator]=function(){return this}),e.prototype.next=function(t){return this._invoke("next",t)},e.prototype.throw=function(t){return this._invoke("throw",t)},e.prototype.return=function(t){return this._invoke("return",t)},{wrap:function(t){return function(){return new e(t.apply(this,arguments))}},await:function(t){return new A(t)}}}(),bp=function(A,e){if(!(A instanceof e))throw new TypeError("Cannot call a class as a function")},jp=function(){function A(e,t){for(var o=0;o<t.length;o++){var g=t[o];g.enumerable=g.enumerable||!1,g.configurable=!0,"value"in g&&(g.writable=!0),Object.defineProperty(e,g.key,g)}}return function(e,t,o){return t&&A(e.prototype,t),o&&A(e,o),e}}(),ei=function(A){if(Array.isArray(A)){for(var e=0,t=Array(A.length);e<A.length;e++)t[e]=A[e];return t}else return Array.from(A)},Rg="";function Eb(A){return
<table style="background-color: #8CE; width: 100%; height: 100%;"><tr> <td align="center">
<div style="display: table-cell; vertical-align: middle;">
<div style="">+A+</div>
</div>
</td></tr></table>
}var cb=
This page requires a browser that supports WebGL.<br/>
,lb=
It does not appear your computer can support WebGL.<br/>
,Db=1,pb=2;function wb(A,e,t){function o(n){var Q=A.parentNode;Q&&(Q.innerHTML=Eb(n))}function g(n,Q){typeof t=="function"?t(n):o(Q)}if(!window.WebGLRenderingContext)return g(Db,cb),null;var r=mb(A,e);return r?r.getExtension("OES_standard_derivatives"):g(pb,lb),r}function mb(A,e){for(var t=["webgl","experimental-webgl"],o=null,g=0;g<t.length;++g)try{o=A.getContext(t[g],e)}catch{if(o)break}return o}function vo(A,e,t,o){var g=A.gl,r=g.createShader(t);g.shaderSource(r,e),g.compileShader(r);var n=g.getShaderParameter(r,g.COMPILE_STATUS);return n?r:(Rg=g.getShaderInfoLog(r),console.error("*** Error compiling shader "+r+":"+Rg),A.trigger("error",{shader:r,source:e,type:t,error:Rg,offset:o||0}),g.deleteShader(r),null)}function kp(A,e,t,o){for(var g=A.gl,r=g.createProgram(),n=0;n<e.length;++n)g.attachShader(r,e[n]);if(t)for(var Q=0;Q<t.length;++Q)g.bindAttribLocation(r,o?o[Q]:Q,t[Q]);g.linkProgram(r);var B=g.getProgramParameter(r,g.LINK_STATUS);return B?r:(Rg=g.getProgramInfoLog(r),console.log("Error in program linking:"+Rg),g.deleteProgram(r),null)}function ti(A){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,t=[];for(var o in A){var g=A[o],r=void 0;if(e&&(o=e+"."+o),typeof g=="number")t.push({type:"float",method:"1f",name:o,value:g});else if(Array.isArray(g)){if(typeof g[0]=="number")g.length===1?t.push({type:"float",method:"1f",name:o,value:g}):g.length>=2&&g.length<=4?t.push({type:"vec"+g.length,method:g.length+"fv",name:o,value:g}):g.length>4&&t.push({type:"float[]",method:"1fv",name:o+"[0]",value:g});else if(typeof g[0]=="string")t.push({type:"sampler2D",method:"1i",name:o,value:g});else if(Array.isArray(g[0])&&typeof g[0][0]=="number"){if(g[0].length>=2&&g[0].length<=4)for(r=0;r<g.length;r++)t.push({type:"vec"+g[0].length,method:g[r].length+"fv",name:o+"["+r+"]",value:g[r]})}else if(zQ(g[0])==="object")for(r=0;r<g.length;r++)t.push.apply(t,ei(ti(g[r],o+"["+r+"]")))}else typeof g=="boolean"?t.push({type:"bool",method:"1i",name:o,value:g}):typeof g=="string"?t.push({type:"sampler2D",method:"1i",name:o,value:g}):(typeof g>"u"?"undefined":zQ(g))==="object"&&t.push.apply(t,ei(ti(g,o)))}return t}function hb(A){var e=A.getBoundingClientRect();return e.top+e.height>0&&e.top<(window.innerHeight||document.documentElement.clientHeight)}function Yp(A){return(A&A-1)===0}function db(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function ub(A,e){return A&&e?A.toString()!==e.toString():!1}function fb(A){var e=new XMLHttpRequest;return e.open("GET",A,!1),e.send(),e.status==200?e.responseText:""}function Op(A){var e=new Set;return Object.assign(A,{on:function(t,o){var g={};g[t]=o,e.add(g)},off:function(t,o){if(o){var g={};g[t]=o,e.delete(g)}else{var r=!0,n=!1,Q=void 0;try{for(var B=e[Symbol.iterator](),C;!(r=(C=B.next()).done);r=!0){var i=C.value,I=!0,s=!1,a=void 0;try{for(var c=Object.keys(i)[Symbol.iterator](),l;!(I=(l=c.next()).done);I=!0){var D=l.value;if(D===t){e.delete(i);return}}}catch(m){s=!0,a=m}finally{try{!I&&c.return&&c.return()}finally{if(s)throw a}}}}catch(m){n=!0,Q=m}finally{try{!r&&B.return&&B.return()}finally{if(n)throw Q}}}},listSubscriptions:function(){var t=!0,o=!1,g=void 0;try{for(var r=e[Symbol.iterator](),n;!(t=(n=r.next()).done);t=!0){var Q=n.value;console.log(Q)}}catch(B){o=!0,g=B}finally{try{!t&&r.return&&r.return()}finally{if(o)throw g}}},subscribe:function(t){e.add(t)},unsubscribe:function(t){e.delete(t)},unsubscribeAll:function(){e.clear()},trigger:function(t){for(var o=arguments.length,g=Array(o>1?o-1:0),r=1;r<o;r++)g[r-1]=arguments[r];var n=!0,Q=!1,B=void 0;try{for(var C=e[Symbol.iterator](),i;!(n=(i=C.next()).done);n=!0){var I=i.value;typeof I[t]=="function"&&I[t].apply(I,ei(g))}}catch(s){Q=!0,B=s}finally{try{!n&&C.return&&C.return()}finally{if(Q)throw B}}}})}var oi=function(){function A(e,t){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};bp(this,A),Op(this),this.gl=e,this.texture=e.createTexture(),this.texture&&(this.valid=!0),this.bind(),this.name=t,this.source=null,this.sourceType=null,this.loading=null,this.setData(1,1,new Uint8Array([0,0,0,255]),{filtering:"linear"}),this.setFiltering(o.filtering),this.load(o)}return jp(A,[{key:"destroy",value:function(){this.valid&&(this.gl.deleteTexture(this.texture),this.texture=null,delete this.data,this.data=null,this.valid=!1)}},{key:"bind",value:function(e){this.valid&&(typeof e=="number"&&A.activeUnit!==e&&(this.gl.activeTexture(this.gl.TEXTURE0+e),A.activeUnit=e),A.activeTexture!==this.texture&&(this.gl.bindTexture(this.gl.TEXTURE_2D,this.texture),A.activeTexture=this.texture))}},{key:"load",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.loading=null,typeof e.url=="string"?(this.url===void 0||e.url!==this.url)&&this.setUrl(e.url,e):e.element?this.setElement(e.element,e):e.data&&e.width&&e.height&&this.setData(e.width,e.height,e.data,e)}},{key:"setUrl",value:function(e){var t=this,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.valid)return this.url=e,this.source=this.url,this.sourceType="url",this.loading=new Promise(function(g,r){var n=e.split(".").pop().toLowerCase(),Q=n==="ogv"||n==="webm"||n==="mp4",B=void 0;Q?(B=document.createElement("video"),B.autoplay=!0,B.muted=!0,setTimeout(function(){B.play()},1),o.filtering="nearest"):B=new Image,B.onload=function(){try{t.setElement(B,o)}catch(C){console.log("Texture '"+t.name+"': failed to load url: '"+t.source+"'",C,o)}g(t)},B.onerror=function(C){console.log("Texture '"+t.name+"': failed to load url: '"+t.source+"'",C,o),g(t)},db()&&t.source.slice(0,5)==="data:"||(B.crossOrigin="anonymous"),B.src=t.source,Q&&t.setElement(B,o)}),this.loading}},{key:"setData",value:function(e,t,o){var g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.width=e,this.height=t,this.source=o,this.sourceType="data",this.update(g),this.setFiltering(g),this.loading=Promise.resolve(this),this.loading}},{key:"setElement",value:function(e,t){var o=this,g=e;if(typeof e=="string"&&(e=document.querySelector(e)),e instanceof HTMLCanvasElement||e instanceof HTMLImageElement||e instanceof HTMLVideoElement)this.source=e,this.sourceType="element",e instanceof HTMLVideoElement?(this.width=this.source.videoWidth,this.height=this.source.videoHeight,e.addEventListener("canplaythrough",function(){o.intervalID=setInterval(function(){o.update(t)},15)},!0),e.addEventListener("ended",function(){e.currentTime=0,e.play()},!0)):this.update(t),this.setFiltering(t);else{var r="the 'element' parameter (element: "+JSON.stringify(g)+") must be a CSS ";r+="selector string, or a <canvas>, <image> or <video> object",console.log("Texture '"+this.name+"': "+r,t)}return this.loading=Promise.resolve(this),this.loading}},{key:"update",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.valid&&(this.bind(),this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,e.UNPACK_FLIP_Y_WEBGL!==!1),this.gl.pixelStorei(this.gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.UNPACK_PREMULTIPLY_ALPHA_WEBGL||!1),this.sourceType==="element"&&(this.source instanceof HTMLCanvasElement||this.source instanceof HTMLVideoElement||this.source instanceof HTMLImageElement&&this.source.complete)?(this.source instanceof HTMLVideoElement?(this.width=this.source.videoWidth,this.height=this.source.videoHeight):(this.width=this.source.width,this.height=this.source.height),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.source)):this.sourceType==="data"&&this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.width,this.height,0,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.source),this.trigger("loaded",this))}},{key:"setFiltering",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(this.valid){this.powerOf2=Yp(this.width)&&Yp(this.height),this.filtering=e.filtering||"linear";var t=this.gl;this.bind(),this.powerOf2?(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,e.TEXTURE_WRAP_S||t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,e.TEXTURE_WRAP_T||t.REPEAT),this.filtering==="mipmap"?(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.generateMipmap(t.TEXTURE_2D)):this.filtering==="linear"?(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR)):this.filtering==="nearest"&&(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST))):(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.filtering==="mipmap"&&(this.filtering="linear"),this.filtering==="nearest"?(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST)):(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR)))}}}]),A}();oi.getMaxTextureSize=function(A){return A.getParameter(A.MAX_TEXTURE_SIZE)};oi.activeUnit=-1;var Fp=function(){function A(e,t,o){var g=this;bp(this,A),Op(this),t=t||{},o=o||{},e.hasAttribute("data-fullscreen")&&(e.getAttribute("data-fullscreen")=="1"||e.getAttribute("data-fullscreen")=="true")?(this.width=window.innerWidth,this.height=window.innerHeight,e.width=window.innerWidth,e.height=window.innerHeight):(this.width=e.clientWidth,this.height=e.clientHeight),this.canvas=e,this.gl=void 0,this.deps={},this.program=void 0,this.textures={},this.buffers={},this.uniforms={},this.vbo={},this.isValid=!1,this.animationFrameRequest=void 0,this.BUFFER_COUNT=0,this.vertexString=t.vertexString||
precision mediump float;
attribute vec2 a_position;
attribute vec2 a_texcoord;
varying vec2 v_texcoord;
void main() {
gl_Position = vec4(a_position, 0.0, 1.0);
v_texcoord = a_texcoord;
}
,this.fragmentString=t.fragmentString||
precision mediump float;
varying vec2 v_texcoord;
void main(){
gl_FragColor = vec4(0.0);
}
;var r=wb(e,t,o.onError);if(!r)return;if(this.gl=r,this.timeLoad=this.timePrev=performance.now(),this.timeDelta=0,this.forceRender=!0,this.paused=!1,this.realToCSSPixels=window.devicePixelRatio||1,e.style.backgroundColor=t.backgroundColor||"rgba(1,1,1,0)",e.hasAttribute("data-fragment"))this.fragmentString=e.getAttribute("data-fragment");else if(e.hasAttribute("data-fragment-url")){var n=e.getAttribute("data-fragment-url");XQ.get(n,function(l,D,m){g.load(m,g.vertexString)})}if(e.hasAttribute("data-vertex"))this.vertexString=e.getAttribute("data-vertex");else if(e.hasAttribute("data-vertex-url")){var Q=e.getAttribute("data-vertex-url");XQ.get(Q,function(l,D,m){g.load(g.fragmentString,m)})}if(this.load(),!this.program)return;var B=r.getAttribLocation(this.program,"a_texcoord");this.vbo.texCoords=r.createBuffer(),this.gl.bindBuffer(r.ARRAY_BUFFER,this.vbo.texCoords),this.gl.bufferData(r.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),r.STATIC_DRAW),this.gl.enableVertexAttribArray(B),this.gl.vertexAttribPointer(B,2,r.FLOAT,!1,0,0);var C=r.getAttribLocation(this.program,"a_position");if(this.vbo.vertices=r.createBuffer(),this.gl.bindBuffer(r.ARRAY_BUFFER,this.vbo.vertices),this.gl.bufferData(r.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),r.STATIC_DRAW),this.gl.enableVertexAttribArray(C),this.gl.vertexAttribPointer(C,2,r.FLOAT,!1,0,0),e.hasAttribute("data-textures")){var i=e.getAttribute("data-textures").split(",");for(var I in i)this.setUniform("u_tex"+I,i[I])}var s={x:0,y:0};document.addEventListener("mousemove",function(l){s.x=l.clientX||l.pageX,s.y=l.clientY||l.pageY},!1);var a=this;function c(){a.nMouse>1&&a.setMouse(s),a.resize()&&(a.forceRender=!0),a.render(),a.animationFrameRequest=window.requestAnimationFrame(c)}return this.setMouse({x:0,y:0}),c(),this}return jp(A,[{key:"destroy",value:function(){cancelAnimationFrame(this.animationFrameRequest),this.animated=!1,this.isValid=!1;for(var e in this.textures)e.destroy&&e.destroy();this.textures={};for(var t in this.attribs)this.gl.deleteBuffer(this.attribs[t]);this.gl.useProgram(null),this.gl.deleteProgram(this.program);for(var o in this.buffers){var g=this.buffers[o];this.gl.deleteProgram(g.program)}this.program=null,this.gl=null}},{key:"load",value:function(e,t){var o=this;t&&(this.vertexString=t),e&&(this.fragmentString=e);var g=this.fragmentString.split(/\r?\n/);this.fragmentString=#define PLATFORM_WEBGL ,g.forEach(function(l,D){var m=l.trim();if(m.startsWith('#include "lygia')){var N=m.substring(15).replace(/\'|\"|\;|\s/g,"");if(N.endsWith("glsl")){if(o.deps[N]===void 0){var u="https://lygia.xyz"+N;o.deps[N]=fb(u)}o.fragmentString+=o.deps[N]+
}}else o.fragmentString+=l+
}),this.animated=!1,this.nDelta=(this.fragmentString.match(/u_delta/g)||[]).length,this.nTime=(this.fragmentString.match(/u_time/g)||[]).length,this.nDate=(this.fragmentString.match(/u_date/g)||[]).length,this.nMouse=(this.fragmentString.match(/u_mouse/g)||[]).length,this.animated=this.nDate>1||this.nTime>1||this.nMouse>1;var r=this.fragmentString.search(/sampler2D/g);if(r)for(var n=this.fragmentString.split(
),Q=0;Q<n.length;Q++){var B=n[Q].match(/uniform\s*sampler2D\s*([\w]*);\s*\/\/\s*([\w|\:\/\/|\.|\-|\_]*)/i);if(B){var C=B[2].split(".").pop().toLowerCase();B[1]&&B[2]&&(C==="jpg"||C==="jpeg"||C==="png"||C==="ogv"||C==="webm"||C==="mp4")&&this.setUniform(B[1],B[2])}var i=n[Q].match(/\s*void\s*main\s*/g);if(i)break}var I=vo(this,this.vertexString,this.gl.VERTEX_SHADER),s=vo(this,this.fragmentString,this.gl.FRAGMENT_SHADER);s?this.isValid=!0:(s=vo(this,void main(){
gl_FragColor = vec4(1.0);
},this.gl.FRAGMENT_SHADER),this.isValid=!1);var a=kp(this,[I,s]);this.gl.useProgram(a),this.gl.deleteShader(I),this.gl.deleteShader(s),this.program=a,this.change=!0,this.BUFFER_COUNT=0;var c=this.getBuffers(this.fragmentString);Object.keys(c).length&&this.loadPrograms(c),this.buffers=c,this.texureIndex=this.BUFFER_COUNT,this.trigger("load",{}),this.forceRender=!0,this.render()}},{key:"test",value:function(e,t,o){var g=this.vertexString,r=this.fragmentString,n=this.paused,Q=this.gl.getExtension("EXT_disjoint_timer_query"),B=Q.createQueryEXT(),C=this.isValid;(t||o)&&(this.load(t,o),C=this.isValid,this.forceRender=!0,this.render()),this.paused=!0,Q.beginQueryEXT(Q.TIME_ELAPSED_EXT,B),this.forceRender=!0,this.render(),Q.endQueryEXT(Q.TIME_ELAPSED_EXT);var i=this;function I(){i.paused=n,(t||o)&&i.load(r,g)}function s(){i.forceRender=!0,i.render();var a=Q.getQueryObjectEXT(B,Q.QUERY_RESULT_AVAILABLE_EXT),c=i.gl.getParameter(Q.GPU_DISJOINT_EXT);if(a&&!c){var l={wasValid:C,frag:t||i.fragmentString,vert:o||i.vertexString,timeElapsedMs:Q.getQueryObjectEXT(B,Q.QUERY_RESULT_EXT)/1e6};I(),e(l)}else window.requestAnimationFrame(s)}s()}},{key:"loadTexture",value:function(e,t,o){var g=this;o||(o={}),typeof t=="string"?o.url=t:(typeof t>"u"?"undefined":zQ(t))==="object"&&t.data&&t.width&&t.height?(o.data=t.data,o.width=t.width,o.height=t.height):(typeof t>"u"?"undefined":zQ(t))==="object"&&(o.element=t),this.textures[e]?this.textures[e]&&(this.textures[e].load(o),this.textures[e].on("loaded",function(r){g.forceRender=!0})):(this.textures[e]=new oi(this.gl,e,o),this.textures[e].on("loaded",function(r){g.forceRender=!0}))}},{key:"refreshUniforms",value:function(){this.uniforms={}}},{key:"setUniform",value:function(e){for(var t={},o=arguments.length,g=Array(o>1?o-1:0),r=1;r<o;r++)g[r-1]=arguments[r];t[e]=g,this.setUniforms(t)}},{key:"setUniforms",value:function(e){var t=ti(e);for(var o in t)t[o].type==="sampler2D"?this.loadTexture(t[o].name,t[o].value[0]):this.uniform(t[o].method,t[o].type,t[o].name,t[o].value);this.forceRender=!0}},{key:"setMouse",value:function(e){var t=this.canvas.getBoundingClientRect();if(e&&e.x&&e.x>=t.left&&e.x<=t.right&&e.y&&e.y>=t.top&&e.y<=t.bottom){var o=(e.x-t.left)*this.realToCSSPixels,g=this.canvas.height-(e.y-t.top)*this.realToCSSPixels;this.uniform("2f","vec2","u_mouse",o,g)}}},{key:"uniform",value:function(e,t,o){this.uniforms[o]=this.uniforms[o]||{};for(var g=this.uniforms[o],r=arguments.length,n=Array(r>3?r-3:0),Q=3;Q<r;Q++)n[Q-3]=arguments[Q];var B=ub(g.value,n);if(B||this.change||!g.location||!g.value){g.name=o,g.type=t,g.value=n,g.method="uniform"+e,this.gl.useProgram(this.program),g.location=this.gl.getUniformLocation(this.program,o),this.gl[g.method].apply(this.gl,[g.location].concat(g.value));for(var C in this.buffers){var i=this.buffers[C];this.gl.useProgram(i.program);var I=this.gl.getUniformLocation(i.program,o);this.gl[g.method].apply(this.gl,[I].concat(g.value))}}}},{key:"uniformTexture",value:function(e,t,o){if(this.textures[e]===void 0)this.loadTexture(e,t,o);else{this.uniform("1i","sampler2D",e,this.texureIndex);for(var g in this.buffers){var r=this.buffers[g];this.gl.useProgram(r.program),this.gl.activeTexture(this.gl.TEXTURE0+this.texureIndex),this.gl.bindTexture(this.gl.TEXTURE_2D,this.textures[e].texture)}this.gl.useProgram(this.program),this.gl.activeTexture(this.gl.TEXTURE0+this.texureIndex),this.gl.bindTexture(this.gl.TEXTURE_2D,this.textures[e].texture),this.uniform("2f","vec2",e+"Resolution",this.textures[e].width,this.textures[e].height)}}},{key:"resize",value:function(){if(this.width!==this.canvas.clientWidth||this.height!==this.canvas.clientHeight){this.realToCSSPixels=window.devicePixelRatio||1;var e=Math.floor(this.gl.canvas.clientWidth*this.realToCSSPixels),t=Math.floor(this.gl.canvas.clientHeight*this.realToCSSPixels);return(this.gl.canvas.width!==e||this.gl.canvas.height!==t)&&(this.gl.canvas.width=e,this.gl.canvas.height=t,this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height)),this.width=this.canvas.clientWidth,this.height=this.canvas.clientHeight,this.resizeSwappableBuffers(),!0}else return!1}},{key:"render",value:function(){if(this.visible=hb(this.canvas),this.forceRender||this.change||this.animated&&this.visible&&!this.paused){var e=new Date,t=performance.now();this.timeDelta=(t-this.timePrev)/1e3,this.timePrev=t,this.nDelta>1&&this.uniform("1f","float","u_delta",this.timeDelta),this.nTime>1&&this.uniform("1f","float","u_time",(t-this.timeLoad)/1e3),this.nDate&&this.uniform("4f","float","u_date",e.getFullYear(),e.getMonth(),e.getDate(),e.getHours()*3600+e.getMinutes()*60+e.getSeconds()+e.getMilliseconds()*.001),this.uniform("2f","vec2","u_resolution",this.canvas.width,this.canvas.height);for(var o in this.buffers){var g=this.buffers[o];this.uniform("1i","sampler2D",g.name,g.bundle.input.index)}this.texureIndex=this.BUFFER_COUNT;for(var r in this.textures)this.uniformTexture(r),this.texureIndex++;this.renderPrograms(),this.trigger("render",{}),this.change=!1,this.forceRender=!1}}},{key:"pause",value:function(){this.paused=!0}},{key:"play",value:function(){this.paused=!1}},{key:"renderPrograms",value:function(){var e=this.gl,t=e.canvas.width,o=e.canvas.height;e.viewport(0,0,t,o);for(var g in this.buffers){var r=this.buffers[g];r.bundle.render(t,o,r.program,r.name),e.bindFramebuffer(e.FRAMEBUFFER,null)}e.useProgram(this.program),e.drawArrays(e.TRIANGLES,0,6)}},{key:"getBuffers",value:function(e){var t={};return e&&e.replace(/(?:^\s*)((?:#if|#elif)(?:\s*)(defined\s*\(\s*BUFFER_)(\d+)(?:\s*\))|(?:#ifdef)(?:\s*BUFFER_)(\d+)(?:\s*))/gm,function(){var o=arguments[3]||arguments[4];t["u_buffer"+o]={fragment:"#define BUFFER_"+o+
+e}}),t}},{key:"loadPrograms",value:function(e){var t=this,o=this.gl,g=vo(t,t.vertexString,o.VERTEX_SHADER);for(var r in e){var n=e[r],Q=vo(t,n.fragment,o.FRAGMENT_SHADER,1);Q?t.isValid=!0:(Q=vo(t,void main(){
gl_FragColor = vec4(1.0);
},o.FRAGMENT_SHADER),t.isValid=!1);var B=kp(t,[g,Q]);n.name=r,n.program=B,n.bundle=t.createSwappableBuffer(t.canvas.width,t.canvas.height,B),o.deleteShader(Q)}o.deleteShader(g)}},{key:"createSwappableBuffer",value:function(e,t,o){var g=this.createBuffer(e,t,o),r=this.createBuffer(e,t,o),n=this.gl;return{input:g,output:r,swap:function(){var Q=g;g=r,r=Q,this.input=g,this.output=r},render:function(Q,B,C,i){n.useProgram(C),n.viewport(0,0,Q,B),n.bindFramebuffer(n.FRAMEBUFFER,this.input.buffer),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,this.output.texture,0),n.drawArrays(n.TRIANGLES,0,6),this.swap()},resize:function(Q,B,C,i){n.useProgram(C),n.viewport(0,0,Q,B),this.input.resize(Q,B),this.output.resize(Q,B)}}}},{key:"createBuffer",value:function(e,t,o){var g=this.gl,r=this.BUFFER_COUNT;this.BUFFER_COUNT+=2,g.getExtension("OES_texture_float");var n=g.createTexture();g.activeTexture(g.TEXTURE0+r),g.bindTexture(g.TEXTURE_2D,n),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,e,t,0,g.RGBA,g.FLOAT,null),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,g.NEAREST),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,g.NEAREST),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_S,g.CLAMP_TO_EDGE),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_T,g.CLAMP_TO_EDGE);var Q=g.createFramebuffer();return{index:r,texture:n,buffer:Q,W:e,H:t,resize:function(B,C){g.bindFramebuffer(g.FRAMEBUFFER,Q);var i=Math.min(B,this.W),I=Math.min(C,this.H),s=new Float32Array(i*I*4);g.readPixels(0,0,i,I,g.RGBA,g.FLOAT,s),g.bindFramebuffer(g.FRAMEBUFFER,null);var a=r+1,c=g.createTexture();g.activeTexture(g.TEXTURE0+a),g.bindTexture(g.TEXTURE_2D,c),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,B,C,0,g.RGBA,g.FLOAT,null),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,g.NEAREST),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,g.NEAREST),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_S,g.CLAMP_TO_EDGE),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_T,g.CLAMP_TO_EDGE),g.texSubImage2D(g.TEXTURE_2D,0,0,0,i,I,g.RGBA,g.FLOAT,s);var l=g.createFramebuffer();g.bindFramebuffer(g.FRAMEBUFFER,null),g.deleteTexture(n),g.activeTexture(g.TEXTURE0+r),g.bindTexture(g.TEXTURE_2D,c),r=this.index=r,n=this.texture=c,Q=this.buffer=l,this.W=B,this.H=C}}}},{key:"resizeSwappableBuffers",value:function(){var e=this.gl,t=e.canvas.width,o=e.canvas.height;e.viewport(0,0,t,o);for(var g in this.buffers){var r=this.buffers[g];r.bundle.resize(t,o,r.program,r.name)}e.useProgram(this.program)}},{key:"version",value:function(){return"0.1.7"}}]),A}();function Mb(){var A=document.getElementsByClassName("glslCanvas");if(A.length>0){window.glslCanvases=[];for(var e=0;e<A.length;e++){var t=new Fp(A[e]);t.isValid&&window.glslCanvases.push(t)}}}window.addEventListener("load",function(){Mb()});var KQ=Fp;var xp=A=>{if(!("after"in A))return Promise.resolve(void 0);let e=document.createElement("canvas");return new KQ(e).load(se(A.after)),A.render(e),Promise.resolve(void 0)};var Jp=A=>{let e="";for(let t=0;t<A.length;t+=3)t+2===A.length?e+=gi(A[t],A[t+1],0):t+1===A.length?e+=gi(A[t],0,0):e+=gi(A[t],A[t+1],A[t+2]);return e},PQ=A=>A<10?String.fromCharCode(48+A):(A-=10,A<26?String.fromCharCode(65+A):(A-=26,A<26?String.fromCharCode(97+A):(A-=26,A===0?"-":A===1?"_":"?"))),gi=(A,e,t)=>{let o=A>>2,g=(A&3)<<4|e>>4,r=(e&15)<<2|t>>6,n=t&63;return PQ(o&63)+PQ(g&63)+PQ(r&63)+PQ(n&63)};var Rp=async(A,e="svg")=>{let t=new Blob([new TextEncoder().encode(A)]).stream().pipeThrough(new CompressionStream("deflate")),o=new Uint8Array(await new Response(t).arrayBuffer());returnhttps://www.plantuml.com/plantuml/${e}/~1${Jp(o)}};var Zp=async A=>{if(!("after"in A))return;let e=document.createElement("img"),t=await Rp(se(A.after));e.src=t,A.render(e)};var ri=Promise.resolve({log:new Uint8Array(0)}),VQ,Up=(A,e,t,o)=>(ri=(async()=>{await ri,VQ??=await Nb(e,t);let g=new Promise(n=>{let Q=B=>{if(B.data.type==="stdout"){o(B.data.message);return}B.data.type==="compile"&&(n(B.data),VQ.removeEventListener("message",Q))};VQ.addEventListener("message",Q)}),r={type:"compile",input:A};return VQ.postMessage(r),g})(),ri),Nb=async(A,e)=>{let t=new Worker(A,{type:"module"}),o=new Promise(r=>{let n=Q=>{Q.data.type==="asset-url"&&(r(),t.removeEventListener("message",n))};t.addEventListener("message",n)}),g={type:"asset-url",url:${e}};return t.postMessage(g),await o,t};var Lp=(A,e)=>async t=>{if(!("after"in t))return;let o=yb(),g="Compile is not started yet. Please wait...",r=C=>{g=[...g.split( ),C].join(
),o.log(g)},n=document.createElement("img"),Q=setTimeout(()=>{t.render(o.div),o.log(g)},2e3),{svg:B}=await Up(se(t.after),A,e,r);if(clearTimeout(Q),!B){t.render(o.div),o.log(g);return}n.src=await Jg(new Blob([B],{type:"image/svg+xml"})),t.render(n)},yb=()=>{let A=document.createElement("div"),e=A.attachShadow({mode:"open"}),t=document.createElement("style");t.textContent='*{box-sizing:border-box;}pre{display:block;padding:9.5px;margin:0 0 10px;border:1px solid #ccc;border-radius:4px;height:20em;overflow:auto;font-size:13px;line-height:1.428571429;}pre code{padding:0;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:inherit;word-break:break-all;word-wrap:break-word;white-space:pre-wrap;color:var(--code-color,#342d9c);background-color: rgba(0,0,0,0);border-radius:0;}',e.append(t);let o=document.createElement("pre"),g=document.createElement("code");return o.append(g),e.append(o),{div:A,log:r=>{g.textContent=r,o.scroll(0,o.scrollHeight)}}};var Tp=(A,e,t=0,o=[])=>{let[g,r]=L("uninitialized"),[n,Q]=L({ok:!0,value:e}),B=b(A,o);return X(()=>{(async()=>{let C=setTimeout(()=>r("pending"),t);try{let i=await B();if(i===void 0)return;Q({ok:!0,value:i})}catch(i){Q({ok:!1,value:i})}finally{clearTimeout(C),r("resolved")}})()},[B,t,...o]),n.ok?{result:n.value,state:g}:{result:n.value,state:"rejected"}};var Sp=A=>{let e=A.flatMap(({changes:g,created:r,userId:n})=>g.flatMap(Q=>{let B=Gb(Q,n,r);return B?[B]:[]})),t=[...new Set(e.map(({created:g})=>g))].sort();return{history:e.reduce((g,r)=>{if(r.type==="insert"){let Q=new Map;Q.set(r.created,{text:r.text,type:r.type,userId:r.userId});let B={id:r.id,snapshots:Q};if(r.parentId==="_end")return[...g,B];let C=g.findIndex(({id:i})=>i===r.parentId);return C<0?(console.warn("[scrapbox-snapshot@0.1.0] The parent line the snapshot would insert before is not found. change: ",r),[...g,B]):[...g.slice(0,C),B,...g.slice(C)]}let n=g.findIndex(({id:Q})=>Q===r.id);return n<0?(console.warn("[scrapbox-snapshot@0.1.0] The line data to be append the change is not found. change: ",r),g):(g[n].snapshots.set(r.created,{text:r.type==="update"?r.text:void 0,type:r.type,userId:r.userId}),g)},[]),range:t}},Gb=(A,e,t)=>{if("_insert"in A)return{type:"insert",id:A.lines.id,parentId:A._insert,text:A.lines.text,userId:e,created:t};if("_update"in A)return{type:"update",id:A._update,text:A.lines.text,userId:e,created:t};if("_delete"in A)return{type:"delete",id:A._delete,userId:e,created:t}};var vp=async(A,e)=>{let t=await fetch(/api/commits/${A}/${e}),{commits:o}=await t.json();return Sp(o)},Hp=async(A,e)=>{let t=await fetch(/api/page-snapshots/${A}/${e}),{snapshots:o}=await t.json(),g=new Map(o.map(({lines:n,created:Q})=>[Q,n])),r=o.map(({created:n})=>n).sort();return{pages:g,range:r}};var Wp=A=>{let e=document.createElement("div");e.dataset.userscriptName="takker99/scrapbox-history-slider";let t=e.attachShadow({mode:"open"});return document.body.append(e),new Promise(o=>GA(E(kb,{getController:g=>o(g)}),t))},kb=({getController:A})=>{let[e,t]=L(!0),o=b(()=>t(!1),[]),g=b(()=>t(!0),[]),r=b(()=>t(c=>!c),[]);X(()=>A({open:o,close:g,toggle:r}),[A]);let n=b(c=>{c.target instanceof HTMLElement&&c.target.id==="background"&&g()},[]),{state:Q,result:B}=Tp(async()=>{if(e||scrapbox.Layout!=="page")return;let[c,l]=await Promise.all([vp(scrapbox.Project.name,scrapbox.Page.id),Hp(scrapbox.Project.name,scrapbox.Page.id)]);return{range:[...l.range,...c.range],getSnapshot:D=>c.range.includes(D)?c.history.flatMap(({snapshots:m})=>{let N=m.get(D);if(N)return N.text===void 0?[]:[N.text];let u=Math.max(...[...m.keys()].filter(h=>h<D));if(u===D)return[];let p=m.get(u)?.text;return p===void 0?[]:[p]}):l.pages.get(D)?.map?.(m=>m.text)??[]}},{range:[],getSnapshot:()=>[]},1e3,[e]),[C,i]=L(0),[I,s]=L(0);X(()=>{if(Q!=="resolved")return;let c=Math.max(0,B.range.length-1);i(c),s(c)},[B]);let a=b(c=>s(parseInt(c.currentTarget.value)),[]);return E(W,null,E("style",null,'.modal{position:fixed;inset:0;z-index:1050;background-color:#000c;display:flex;flex-direction:column;align-items:center;row-gap:10px;padding:10px}.closed{display:none}.modal>*{color:var(--page-text-color, #4a4a4a);background-color:var(--page-bg, #fefefe);border:2px solid var(--body-bg, #dcdde0);border-radius:4px;padding:5px;width:calc(var(--item-width, 100%) - 10px)}@media (min-width: 768px){.modal{padding:30px}}.controller{display:flex;flex-direction:row-reverse;gap:.2em}input{width:100%}time{white-space:nowrap}.viewer{overflow-y:scroll}pre{width:100%;font-family:var(--history-slider-pre-font, Menlo,Monaco,Consolas,"Courier New",monospace);word-break:break-all;word-wrap:break-word;white-space:pre-wrap}'),E("div",{id:"background",className:modal${e?" closed":""},onClick:n},E("div",{className:"controller"},E("button",{className:"close-button",onClick:g},"x"),Q==="resolved"&&B.range.length===0&&E("span",{className:"not-found"},"no history found."),Q!=="rejected"&&B.range.length>0&&E(W,null,E("input",{type:"range",max:C,min:"0",step:"1",value:I,title:_(new Date(B.range[I]*1e3),"yyyy-MM-dd HH:mm:ss"),onInput:a}),E("time",{dateTime:_(new Date(B.range[I]*1e3),"yyyy-MM-dd HH:mm:ss")},_(new Date(B.range[I]*1e3),"yyyy-MM-dd HH:mm:ss")))),Q!=="rejected"?E("div",{className:"viewer"},E("pre",null,B.getSnapshot(B.range[I]).join(
))):E("div",{className:"error viewer"},Error: ${JSON.stringify(B)})))};var ot=()=>/mobile/i.test(navigator.userAgent);function*Qi(A,e,t){let o=0,g=[],r=async()=>(o++,o<=A?o-1:await new Promise(n=>g.push(n)));for(let n of e)yield(async()=>{let Q=await r();try{return{success:!0,value:await t(n,Q)}}catch(B){return{success:!1,reason:B}}finally{o--,g.shift()?.(Q)}})()}var Xp=async(A,e,t)=>{if(A.length===0||A.every(({before:g,after:r})=>g===r))return;let o=await SA();try{let g=Qi(5,A,async r=>{let n=0,Q=0;r.before===r.after&&t({link:r,projectCount:0,replaced:0,done:!0});let B=Qi(2,[...new Set(e)],async C=>{let i=await Yb(r,C,o);if(!i.ok)throw bb(i.value);n++,Q+=i.value,t({link:r,projectCount:n,replaced:Q,done:!1})});await Promise.all([...B]),t({link:r,projectCount:n,replaced:Q,done:!0})});await Promise.all([...g])}finally{await yA(o)}},Yb=async(A,e,t)=>{let[o]=await Promise.all([er(e,A.before,A.after),oA(e,A.before,(g,{persistent:r})=>{if(r)return[A.after,...g.map(n=>n.text).slice(1)]},{socket:t})]);return o},gt=A=>A.split(
).flatMap(e=>[...e.matchAll(/\[((?:[^\[!"#%&'()\*\+,\-\.\/\{\|\}<>_~] |.[^ ]*)[^\[\]]*)\]/g)]).map(([,e])=>e),bb=A=>{let e=new Error;return e.name=A.name,e.message=A.message,e};var Ho={};Qt(Ho,{getTitle:()=>Xh,parse:()=>hA});var zp=A=>hA(A,{hasTitle:!1}).flatMap(t=>{switch(t.type){case"title":return[];case"codeBlock":return jb(t);case"table":return Ob(t);case"line":return Fb(t)}}).map(t=>t).join(
),jb=({fileName:A,content:e,indent:t})=>{let o=" ".repeat(t);return[${o}code:${A},...e.split(
).map(g=>${o} ${g})]},Ob=({fileName:A,cells:e,indent:t})=>{let o=" ".repeat(t);return[${o}table:${A},...e.map(g=>${o} ${g.map(r=>r.map(n=>Zg(n)).join("")).join(" ")})]},Fb=({nodes:A,indent:e})=>[${" ".repeat(e)}${A.map(t=>${Zg(t)}).join("")}],Zg=A=>{switch(A.type){case"quote":return> ${A.nodes.map(e=>Zg(e)).join("")};case"strong":return${A.nodes.map(e=>Zg(e)).join("")};case"decoration":{let e=A.decos.map(t=>{let o=parseInt(t.match(/\*-(\d)/)?.[1]??"0");return o>0?"*".repeat(o):t}).join("");return[${e?${e} :""}${A.nodes.map(t=>Zg(t)).join("")}]}case"hashTag":return A.href;case"link":return A.pathType==="absolute"?A.raw:A.href;default:return A.raw}};scrapbox.PopupMenu.addButton({title:A=>gt(A).length>0?"":"",onClick:A=>{let e=zp(A);if(A!=e)return e}});var Kp=A=>!A.includes(
)&&/\[[^\]]+\]/.test(A);scrapbox.PopupMenu.addButton({title:A=>Kp(A)?"[][]":"",onClick:A=>{if(!Kp(A))return;let e=A.replaceAll("[","").replaceAll("]","");return(async()=>{let{render:t,dispose:o}=CA();try{let g=scrapbox.Project.name;t({type:"spinner"},{type:"text",text:create /${g}/${e}}),await oA(g,e,([{text:r}],{persistent:n})=>{if(!n)return[r,A]}),t({type:"check-circle"},{type:"text",text:create /${g}/${e}})}catch(g){if(console.error(g),!(g instanceof Error))throw g;t({type:"exclamation-triangle"},{type:"text",text:${g.name} ${g.message}})}finally{await nA(2e3),o()}})(),${e}}});var Pp=(A,e)=>{switch(A.type){case"title":return"";case"codeBlock":return[A.fileName, \\`\`${Ub(A.fileName)},A.content,"\n"].join(
);case"table":return xb(A);case"line":return Rb(A,e)}},xb=A=>{let e=[A.fileName],t=Math.max(...A.cells.map(o=>o.length));return A.cells.forEach((o,g)=>{e.push(| ${o.map(r=>r.map(n=>Wo(n)).join("")).join(" | ")} |),g===0&&e.push(|${" -- |".repeat(t)})}),e.join(
)},Jb=" ",Rb=(A,e)=>{let t=A.nodes.map(g=>Wo(g,{section:A.indent===e})).join("").trim();if(t==="")return"";if(A.indent===e)return t;let o=Jb.repeat(A.indent-e-1);return/^\d+\. /.test(t)||(o+="- "),o+t},Wo=(A,e)=>{let{section:t=!1}=e??{};switch(A.type){case"quote":return> ${A.nodes.map(o=>Wo(o)).join("")};case"helpfeel":return\? ${A.text}\`;case"image":case"strongImage":return![image](${A.src});case"icon":case"strongIcon":return"/icons/hr","/scrapboxlab/hr".includes(A.path)?"---":"";case"strong":return**${A.nodes.map(o=>Wo(o)).join("")}**;case"formula":return$${A.formula}$;case"decoration":{let o=A.nodes.map(g=>Wo(g)).join("");return A.decos.includes("/")&&(o=*${o}*),t?(A.decos.includes("*-3")&&(o=`# ${o} ),A.decos.includes("*-2")&&(o=## ${o}
),A.decos.includes("*-1")&&(o=### ${o}
)):A.decos.some(g=>/\*-/.test(g[0]))&&(o=**${o}**),A.decos.includes("~")&&(o=~~${o}~~),o}case"code":return\${A.text}\`;case"commandLine":return\`${A.symbol} ${A.text}\`;case"link":switch(A.pathType){case"root":return[${A.href}](https://scrapbox.io${A.href});case"relative":return[${A.href}](https://scrapbox.io/${scrapbox.Project.name}/${A.href});default:return A.content===""? ${A.href} :[${A.content}](${A.href})}case"googleMap":return[${A.place}](${A.url});case"hashTag":return[#${A.href}](https://scrapbox.io/${scrapbox.Project.name}/${A.href});case"numberList":return${A.number}. ${A.nodes.map(o=>Wo(o)).join("")};case"blank":case"plain":return A.text}},Zb=[{extensions:"javascript","js",fileType:"javascript"},{extensions:"typescript","ts",fileType:"typescript"},{extensions:"cpp","hpp",fileType:"cpp"},{extensions:"c","cc","h",fileType:"c"},{extensions:"cs","csharp",fileType:"cs"},{extensions:"markdown","md",fileType:"markdown"},{extensions:"htm","html",fileType:"html"},{extensions:"json",fileType:"json"},{extensions:"xml",fileType:"xml"},{extensions:"yaml","yml",fileType:"yaml"},{extensions:"toml",fileType:"toml"},{extensions:"ini",fileType:"ini"},{extensions:"tex","sty",fileType:"tex"},{extensions:"svg",fileType:"svg"}],Ub=A=>{let e=A.replace(/^.*\.(\w+)$/,"$1");return Zb.find(t=>t.extensions.includes(e))?.fileType??""};scrapbox.PopupMenu.addButton({title:"",onClick:A=>{(async()=>{try{let e=Ho.parse(A,{hasTitle:!1}),t=Math.min(...e.map(o=>o.indent));await navigator.clipboard.writeText(e.map(o=>Pp(o,t)).join(` ))}catch(e){alert(Failed to copy:
${JSON.stringify(e)})}})()}});var rt=A=>typeof A=="string";var ni=(A,...e)=>{let t=A;for(let o of e){let g=t instanceof Promise?t.then(r=>rt(r)?r:o(r)):o(t);if(rt(g))return g;t=g instanceof URL?new URL(g):g.then(r=>rt(r)?r:new URL(r))}return t instanceof Promise?t.then(o=>${o}):${A}};var Xo=A=>A.ok?void 0:{name:"HTTPError",message:${A.status} ${A.statusText},response:A};var Vp=A=>{if(!window.GM_fetch)return;let e=window.GM_fetch;return(async()=>{let t=await e(https://cdn.syndication.twimg.com/tweet-result?id=${A}&token=x),o=Xo(t);return o?{ok:!1,value:o}:{ok:!0,value:await t.json()}})()};var qQ=A=>{let{fetch:e=globalThis.fetch,...t}=A;return{fetch:e,...t}},qp=A=>typeof A=="object"&&A!==null;var Ug=class A extends Error{name="UnexpectedResponseError";status;statusText;body;path;constructor(e){super(${e.status} ${e.statusText} when fetching ${e.path.toString()}),this.status=e.status,this.statusText=e.statusText,this.body=e.body,this.path=e.path,Error.captureStackTrace&&Error.captureStackTrace(this,A)}};var _Q=async A=>{let e=await A.text();if(A.ok)return{ok:!0,value:e};if(A.status===400)return{ok:!1,value:{name:"BadRequestError",message:e}};try{let t=JSON.parse(e);if(!qp(t)||typeof t.message!="string")throw new Ug({status:A.status,statusText:A.statusText,body:e,path:new URL(A.url)});switch(A.status){case 401:return{ok:!1,value:{name:"UnauthorizedError",message:t.message}};case 403:return{ok:!1,value:{name:"NotPrivilegeError",message:t.message}};case 404:return{ok:!1,value:{name:"NotFoundError",message:t.message}};case 422:return{ok:!1,value:{name:"InvalidParameterError",message:t.message}};case 429:return{ok:!1,value:{name:"RateLimitError",message:t.message}};default:throw new Ug({status:A.status,statusText:A.statusText,body:e,path:new URL(A.url)})}}catch(t){throw t instanceof SyntaxError?new Ug({status:A.status,statusText:A.statusText,body:e,path:new URL(A.url)}):t}};var _p=async(A,e)=>{let{title:t,description:o,metadataIsPublic:g,collectionId:r,refererURL:n,accessToken:Q,created:B,app:C,fetch:i}=qQ(e),I=new FormData;I.append("imagedata",A),I.append("access_token",Q),n&&I.append("referer_url",n.toString()),C!==void 0&&I.append("app",C),t!==void 0&&I.append("title",t),o!=null&&I.append("desc",o),r&&I.append("collection_id",r),g&&I.append("metadata_is_public","true"),B!==void 0&&I.append("created_at",${B});let s=await i("https://upload.gyazo.com/api/upload",{method:"POST",mode:"cors",credentials:"omit",body:I}),a=await _Q(s);return a.ok?{ok:!0,value:JSON.parse(a.value)}:a};var $p=(A,e)=>{let t=new FormData;return t.append("data",A),t.append("metadata",JSON.stringify({app:"Gyazo",title:A.name})),GM_fetch(https://gif.gyazo.com/${e?.teams?"teams":"gif"}/upload,{method:"POST",body:t,credentials:"include",headers:{Origin:"https://gyazo.com","sec-fetch-site":"same-site"},referrer:"https://gyazo.com/"})};var $Q="",Aw=!1,An=new Map,ew=async(A,e,t,o)=>{let g=An.get(A.href);if(g)return g;if(A.hostname==="video.twimg.com"||${A}.endsWith(".svg")){let B=await GM_fetch(A);if(!B.ok)return;let C=B.headers.get("content-type")?.split?.(";")?.[0]??${A}.endsWith(".mp4")?"video/mp4":"video/webm",i=new File([await B.blob()],o||${e},{type:C});if(C==="video/mp4"){let a=await $p(i);if(a.ok){let c=new URL(await a.text());return An.set(A.href,c),c}}let I=await DI(i,t);if(!I.ok)throw Error(I.value.name);let s=new URL(I.value.embedUrl);return An.set(A.href,s),s}if(A.hostname!=="pbs.twimg.com"||!A.pathname.startsWith("/media"))return;if(Aw){if(!$Q)return}else{let B=await II();if(Aw=!0,!B.ok){alert("You haven't logged in Gyazo yet, so you can only upload images to scrapbox.io.");return}if($Q=B.value||"",!$Q){alert("You haven't connect Gyazo to scrapbox.io yet.");return}}let r=await GM_fetch(A);if(!r.ok)return;let n=await _p(await r.blob(),{accessToken:$Q,refererURL:e,description:o});if(!n.ok)throw Error(n.value.name);let Q=new URL(n.value.permalink_url);return An.set(A.href,Q),Q};var Lb={"<":"<",">":">","&":"&",""":'"',"'":"'","`":""},Bi=A=>A.replace(/&(lt|gt|amp|quot|#x27|#x60);/g,e=>Lbe);var en=A=>{let e={name:A.user.name,screenName:A.user.screen_name},t=new Date(A.created_at),o=[...A.entities.hashtags.map(n=>({type:"hashtag",...n})),...A.entities.symbols.map(n=>({type:"symbol",...n})),...A.entities.user_mentions.map(n=>({type:"mention",name:n.name,screenName:n.screen_name,indices:n.indices})),...A.entities.urls.map(n=>{let Q={type:"url",indices:n.indices,url:new URL(n.expanded_url)};if(A.card&&A.card?.url===n.url){let{description:B,title:C}=A.card.binding_values,i="STRING";B?.type===i&&(Q.description=B.string_value),C?.type===i&&(Q.title=C.string_value)}return Q}),...A.entities.media?.map?.(n=>({type:"media",indices:n.indices,media:A.mediaDetails?.flatMap?.(Q=>Q.url===n.url?[{type:Q.type,url:new URL(Q.video_info?.variants?.sort?.((B,C)=>(C.bitrate??0)-(B.bitrate??0))?.0.url??Q.media_url_https)}]:[])??[]}))??[]].sort((n,Q)=>n.indices0-Q.indices0),g=[];{let n=0,Q=A.text;for(let{indices:B,...C}of o){let i=...Q.slice(0,B0-n).join("");g.push({type:"plain",text:Bi(i)}),g.push(C),Q=...Q.slice(B1-n).join(""),n=B1}Q&&g.push({type:"plain",text:Bi(Q)})}let r={id:A.id_str,content:g,author:e,posted:t,replyCount:"reply_count"in A?A.reply_count:A.conversation_count};return A.self_thread&&(r.rootId=A.self_thread.id_str),A.in_reply_to_status_id_str&&(r.replyId=A.in_reply_to_status_id_str),A.parent&&(r.replyTo=en(A.parent)),A.quoted_tweet&&(r.quote=en(A.quoted_tweet)),r};var Tb="landing","product","enterprise","pricing","try-enterprise","contact","terms","privacy","jp-commercial-act","support","case","features","business","auth","login","logout","oauth2","_","api","app.html","assets","file","files","billing","billings","config","feed","index","io","new","opensearch","project","projects","search","setting","settings","setup-profile","slide","socket.io","stream","user","users",tn=(A=scrapbox.Project.name,e=location.host)=>t=>{if(t.host!==e)return t;let,o,g=t.pathname.match(/^\/(\w\d\w\d-{0,22}\w\d)(?:\/?|\/(.+))$/)??[];return!o||Tb.includes(o)?t:g?o===A?[${decodeURIComponent(g)}]:[/${o}/${decodeURIComponent(g)}]:[/${o}]};var tw=(A=Sb)=>e=>{let,t=e.href.match(/^https:\/\/(?:(?:www\.|mobile\.|m\.)?twitter|x)\.com\/\w\d_+\/(?:status|statuses)\/(\d+)/)??[];return t?(async()=>{let o=await(Vp(t)??iI(e.href));if(!o.ok)throw o.value;return A("images"in o.value?{...o.value,id:t}:o.value,e)})():e},Sb=async A=>{if("images"in A)return Lg(A);let{quote:e,replyTo:t,...o}=en(A);return[...t?[...(await Lg(t)).split(` ).map(g=> > ${g}),...t.quote?(await Lg(t.quote)).split(
).map(g=> > ${g}):[]]:[],...(await Lg(o)).split(
).map(g=>> ${g}),...e?(await Lg(e)).split(
).map(g=>> > ${g}):[]].join(
)?.map?.(g=>> ${ii(g)})??["> [/ no description provided]"],...A.images.length>0?[> ${A.images.map(g=>[${g}])}]:[]].join(
);let t=A.content,o=A.author.screenName;return[@${ii(o)} ${e},...(await Promise.all(t.map(async g=>{switch(g.type){case"plain":return g.text;case"hashtag":return #${g.text} ;case"symbol":return #$${g.text} ;case"mention":return@${g.screenName};case"media":{let r=[],n=1;for(;n<g.media.length;n+=2)r.push([${await Ci(g.median-1,e)}] [${await Ci(g.median,e)}]);return n===g.media.length&&r.push([${await Ci(g.median-1,e)}]), ${r.join(`
`)}
}case"url":return${tn()(g.url)} }}))).join("").split(
)].join(
)},on="",vb=async()=>{if(on)return on;let A=await ue(scrapbox.Project.name);if(!A.ok)throw new Error(A.value.name);return on=A.value.id,on},Ci=async(A,e)=>await ew(A.url,e,await vb(),"")??A.url,ii=A=>A.replace(/\b/gm,"").replace(/[\s\r\n\u2028\u2029]+/gm," ").replace(/\s*[[\]]\s*/g," ").trim();var ow=A=>{if(!window.GM_fetch)return;let e=window.GM_fetch;return(async()=>{let t=await e(https://t.co/${A}),o=Xo(t);return o?{ok:!1,value:o}:{ok:!0,value:new DOMParser().parseFromString(await t.text(),"text/html").title}})()};var gw=A=>{if("bit.ly","amzn.to","amzn.asia","goo.gl","s.nikkei.com","apple.co","nico.ms","w.wiki".includes(A.hostname)&&window.GM_fetch)return window.GM_fetch(A).then(t=>t.ok?new URL(t.url):A);if(A.hostname!=="t.co")return A;let e=ow(A.pathname.slice(1));return e?(async()=>{let t=await e;if(!t.ok)throw t.value;try{return new URL(t.value)}catch(o){if(o instanceof TypeError)return A;throw o}})():A};var rw=A=>{if(!A.pathname.startsWith("/wiki/"))return A;if(!/^\w+\.wikipedia\.org$/.test(A.hostname)){let,g=A.hostname.match(/^(\w+)\.m\.wikipedia\.org$/)??[];if(!g)return A;A.hostname=${g}.wikipedia.org}let e=decodeURIComponent(A.pathname.slice(6)),t=A.hash?decodeURIComponent(A.hash.slice(1)):"",o=${A.origin}/wiki/${e};return t?[${t} | ${e} - Wikipedia ${o}#${t}]:[${e} - Wikipedia ${o}]};var Qw=A=>{if(A.hostname!=="www.wikiwand.com")return A;let,e,t=A.pathname.match(/^\/(^\/+)\/(^\/+)/)??[];return!e||!t||(A.hostname=${e}.wikipedia.org,A.pathname=/wiki/${t},A.hash=A.hash.startsWith("#/")?#${A.hash.slice(2)}:A.hash),A};var Ii=A=>{if(!A.hostname.startsWith("www.google."))return A;let e=A.searchParams.get("url");return e?new URL(decodeURIComponent(e)):A};var nw=/charset=(^;+)/,Bw=A=>{if(!window.GM_fetch)return;let e=window.GM_fetch;return(async()=>{let t=await e(${A}),o=Xo(t);if(o)return{ok:!1,value:o};let g=t.headers.get("content-type")?.match?.(nw)?.1??await Hb(t.clone());return{ok:!0,value:new TextDecoder(g).decode(await t.arrayBuffer())}})()},Hb=async A=>{let e=new DOMParser().parseFromString(await A.text(),"text/html");return e.querySelector("metacharset")?.getAttribute?.("charset")??e.querySelector('metahttp-equiv="content-type"')?.getAttribute?.("content")?.match?.(nw)?.1??"utf-8"};var Cw=(A=Wb)=>async e=>A(await Xb(e),e),Wb=(A,e)=>{let t=(rt(A)?A:A.title).replace(/\s/g," ").replaceAll("","[").replaceAll("","]");return t?[${e.hash?${decodeURIComponent(e.hash.slice(1))} | :""}${t} ${e}]:${e}},Xb=async A=>{let e=Bw(A);if(!e){let o=await CI(A);if(!o.ok)throw o.value;return o.value}let t=await e;if(!t.ok)throw t.value;return new DOMParser().parseFromString(t.value,"text/html")};var iw=A=>{if(!/^(?:www\.)?amazon(?:\.co|com)?\.(?:au|br|ca|fr|de|in|it|jp|mx|nl|sg|es|tr|ae|uk|cn)$/.test(A.hostname))return A;let,e=A.pathname.match(/\/dp\/(\w\d+)/)??A.pathname.match(/\/gp\/product\/(\w\d+)/)??A.pathname.match(/\/exec\/obidos\/asin\/(\w\d+)/)??A.pathname.match(/\/o\/ASIN\/(\w\d+)/)??[];return e&&(A.hash="",A.search="",A.pathname=/dp/${e}),A};var Iw=A=>{if(!/(?:0-9a-z-\.)?gyazo\.com/.test(A.hostname))return A;let,e=A.pathname.match(/^\/(0-9a-f{32})(?:\/raw)?$/)??[];return e?[https://gyazo.com/${e}]:A};var sw=(A,...e)=>{if(A instanceof URL)return ni(new URL(A),...e);let t=0,o=0,g=0,r=!1,n=A.split(/(https?:\/\/\S+)/g).map(i=>{if(!/^https?:\/\/\S+$/.test(i))return i;t++;try{let I=ni(new URL(i),...e);return rt(I)?(o++,I):(r=!0,I,i)}catch(I){return console.error(I),g++,i}});if(!r)return n.join("");let{render:Q,dispose:B}=CA(),C=()=>Q({type:"spinner"},{type:"text",text:URL: ${o}/${t} converted, ${g} failed});return C(),Promise.all(n.map(async i=>{if(rt(i))return i;try{let I=await i0;return o++,I}catch(I){return console.error(I),g++,i1}finally{C()}})).then(i=>(Q({type:"check-circle"},{type:"text",text:URL: ${o}/${t} converted, ${g} failed}),i.join(""))).finally(()=>{setTimeout(B,1e3)})};var aw=A=>{if(!/^(?:\w+\.nicovideo\.jp|nico\.ms)$/.test(A.hostname))return A;let e=A.pathname.match(/(?:sm|nm|so|ca|ax|yo|nl|ig|na|cw|za-e|om|sk|yk|lv)\d{1,14}$/)?.0;return e?[https://nicothumb2img.vercel.app/image/${e}#.png https://nico.ms/${e}]:A};var Ew=A=>hA(A,{hasTitle:!1}).flatMap(t=>{switch(t.type){case"title":return[];case"codeBlock":return zb(t);case"table":return Kb(t);case"line":return Pb(t)}}).map(t=>t).join(` ),zb=({fileName:A,content:e,indent:t})=>{let o=" ".repeat(t);return[${o}code:${A},...e.split(
).map(g=>${o} ${g})]},Kb=({fileName:A,cells:e,indent:t})=>{let o=" ".repeat(t);return[${o}table:${A},...e.map(g=>${o} ${g.map(r=>r.map(n=>n.raw).join("")).join(" ")})]},Pb=({nodes:A,indent:e})=>[${" ".repeat(e)}${A.map(t=>${Tg(t)}).join("")}],Tg=A=>{switch(A.type){case"quote":return> ${A.nodes.map(e=>Tg(e)).join("")};case"helpfeel":return-? ${A.text};case"commandLine":return-${A.symbol} ${A.text};case"icon":case"strongIcon":case"image":case"strongImage":case"formula":case"code":case"googleMap":return A.raw;case"strong":return${A.nodes.map(e=>Tg(e)).join("")};case"decoration":{A.decos.includes("-")||A.decos.push("-");let e=A.decos.map(t=>{let o=parseInt(t.match(/\*-(\d)/)?.[1]??"0");return o>0?"*".repeat(o):t}).join("");return[${e?${e} :""}${A.nodes.map(t=>Tg(t)).join("")}]}case"link":switch(A.pathType){case"root":case"relative":return${A.href};case"absolute":return[- ${A.content?${A.content} :""}${A.href}]]}case"hashTag":return#${A.href};case"numberList":return${A.number}. ${A.nodes.map(e=>Tg(e)).join("")};case"blank":case"plain":return${A.text}}};scrapbox.PopupMenu.addButton({title:"",onClick:A=>{let e=Ew(A);if(A!==e)return e}});var si=A=>{let e=A.indexOf( );if(e<0)return;let t=A.slice(0,e).split(
).map(r=>{let[n="",Q=""]=r.split(" => ",2);return[n,Q]});if(t.length===0)return;let o=A.slice(e+2).split(
);if(o.length===0)return;for(let[r,n]of t){let Q=r.match(/^\/(.*?)\/([gimy]*)$/);if(Q){let B=new RegExp(Q[1],Q[2]);o=o.map(C=>C.replace(B,n.replaceAll("\\n",
)))}else o=o.map(B=>B.replaceAll(r,n.replaceAll("\\n",
)))}let g=${A.slice(0,e+2)}${o.join(`
)};if(A!==g)return g};scrapbox.PopupMenu.addButton({title:A=>si(A)?"replace":"",onClick:A=>{let e=si(A);if(e!==void 0)return e}});var cw=A=>{let e=document.createElement("div"),t=e.attachShadow({mode:"open"}),o=document.createElement("style");o.textContent="dialog::backdrop{background-color:#000c}dialog{flex-direction:column;align-items:center;row-gap:10px;padding:10px;background:unset;margin-top:unset;margin-bottom:unset;border:unset;height:unset}dialogopen{display:flex}dialog>*{color:var(--page-text-color, #4a4a4a);background-color:var(--dropdown-menu-bg, #fff);border:1px solid rgba(0,0,0,.2);border-radius:6px}@media (min-width: 768px){dialog{padding:30px 0}}.container{display:flex;padding:5px;gap:0.2em;flex-direction:column;width:100%;}.button-container{flex-direction:unset;}.button-container>*{flex:1;}",t.append(o);let g=document.createElement("dialog");g.insertAdjacentHTML("beforeend",` <div class="container">
Replace Links:
<textarea class="editor"></textarea>
<div class="container button-container">
<button class="cancel">cancel</button>
<button class="replace">replace</button>
</div>
</div>
),t.append(g);let r=g.querySelector(".editor");r.rows=A.length,r.value=A.join(
);let n=()=>{g.style.minWidth=${Math.max(...r.value.split(`
).map(i=>[...i].length))+6}em};n(),r.addEventListener("input",n);let Q=g.querySelector(".cancel"),B=g.querySelector(".replace"),C=new Promise(i=>{let I=()=>{i({convert:!1}),e.remove()};g.addEventListener("close",I),g.addEventListener("click",I),Q.addEventListener("click",I),B.addEventListener("click",()=>{let s=r.value.split(`
);i({convert:!0,links:A.flatMap((a,c)=>a===s[c]||a===""||!s[c]?[]:[{before:a,after:s[c]??a}])}),e.remove()}),g.querySelector(".container").addEventListener("click",s=>{s.stopPropagation()})});return document.body.append(e),g.showModal(),C};var lw=async(A,e)=>{let t=gt(A),o=await cw([...new Set(t)]);if(!o.convert||o.links.length===0)return;let g=new Map(o.links.map(r=>[r.before,CA()]));await Xp(o.links,e,r=>{let{link:n,projectCount:Q,replaced:B,done:C}=r,i=g.get(n.before);if(i){if(C){i.render({type:"check-circle"},{type:"text",text:"${n.after}", ${B}l. ${Q}p.}),setTimeout(()=>i.dispose(),1e3);return}i.render({type:"spinner"},{type:"text",text:"${n.after}", ${B}l. ${Q}p.})}})};async function Dw(A,e){let t=gt(A)[0];if(!t)return;let o=window.prompt(Replace "${t}" to this in ${e.map(Q=>"/${Q}").join(", ")},t)?.replace?.(/[\[\]\n]/g," ")??"";if(o==="")return;let{render:g,dispose:r}=CA(),n=await SA();try{g({type:"spinner"},{type:"text",text:Replacing links in ${e.length} projects...});let Q=0,C=(await Promise.all(e.map(async i=>{let[I]=await Promise.all([er(i,t,o),oA(i,t,(s,{persistent:a})=>{if(a)return[o,...s.map(c=>c.text).slice(1)]},{socket:n})]);if(!I.ok)throw g({type:"exclamation-triangle"},{type:"text",text:${I.value.name} ${I.value.message}}),Vb(I.value);return Q++,g({type:"spinner"},{type:"text",text:Replacing links in ${e.length-Q} projects...}),I.value}))).reduce((i,I)=>i+I,0);g({type:"check-circle"},{type:"text",text:Successfully replaced ${C} links.})}finally{await yA(n),setTimeout(r,1e3)}}function Vb(A){let e=new Error;return e.name=A.name,e.message=A.message,e}var pw=A=>{let e=[scrapbox.Project.name,...A];scrapbox.PopupMenu.addButton({title:t=>{let o=gt(t).length;return o>1?"update links":o===1?"update a link":""},onClick:t=>{let o=gt(t).length;o>1?lw(t,e):o===1&&Dw(t,e)}})};scrapbox.PopupMenu.addButton({title:A=>/[\n..。]/.test(A)?"\\n":"",onClick:A=>A.replace(/(\w)\n(\w)/g,"$1 $2").replaceAll(
,"").replaceAll(".",.
).replaceAll(".",.
).replaceAll("。",。
)});scrapbox.PopupMenu.addButton({title:A=>/https:\/\/(?:thumb\.|i\.)?gyazo\.com\/[a-z0-9]+/.test(A)?globalThis.GM_fetch?"copy Gyazo OCR":"open Gyazo":"",onClick:async A=>{let e=A.match(/https:\/\/(?:thumb\.|i\.)?gyazo\.com\/([a-z0-9]+)/)?.[1];if(!e)return;if(!globalThis.GM_fetch){window.open(https://gyazo.com/${e});return}let o=(await(await GM_fetch(https://gyazo.com/${e}.json)).json()).metadata?.ocr?.description;if(o)try{await navigator.clipboard.writeText(o)}catch(g){console.error(g),alert(${g.name} ${g.message})}}});scrapbox.PopupMenu.addButton({title:A=>/https:\/\/gyazo\.com\/[a-z0-9]+/.test(A)?"":"",onClick:A=>{let e=A.match(/https:\/\/gyazo\.com\/([a-z0-9]+)/)?.[1];e&&window.open(https://gyazo.com/${e}/transform)}});var ww=A=>{let e="",t=0;for(let o of A)if(o.type!=="title"){if(o.indent>t)for(let g=t;g<o.indent;g++)e+=Sg(${g!==t?"\\item":""}\\begin{itemize},g*2)+ ;if(o.indent<t)for(let g=t;g>o.indent;g--)e+=Sg("\\end{itemize}",(g-1)*2)+
;t=o.indent,e+=Sg(${t>0?"\\item ":""}${qb(o)},t*2)+
}for(let o=t;o>0;o--)e+=Sg("\\end{itemize}",(o-1)*2)+
${A.content}
\\end{lstlisting},$b=A=>{let e=\\caption{${ge(A.fileName)}}\\label{table:${ge(A.fileName)}},t=Math.max(...A.cells.map(g=>g.length)),o=A.cells.map(g=> ${g.map(r=>r.map(n=>zo(n)).join("")).join(" & ")}\\\\);return\\begin{table}htbp ${e}
\\centering
\\begin{tabular}{${"c".repeat(t)}}
${o.length===0?"":o.length===1?` \\toprule
${o.join(`
`)}
\\bottomrule: \\toprule
\\midrule
${o.slice(1).join(`
`)}
\\bottomrule`}
\\end{tabular}
\\end{table}},A0=A=>A.nodes.map(e=>zo(e)).join(""),zo=A=>{switch(A.type){case"quote":return\\begin{quote}
${Sg(A.nodes.map(e=>zo(e)).join(""),2)}
\\end{quote};case"image":case"strongImage":return\\begin{figure}hbtp iamge:\\url{${A.src}}
\\end{figure};case"icon":case"strongIcon":return\\textit{${ge(A.path)}};case"strong":return\\textbf{${A.nodes.map(e=>zo(e)).join("")}};case"formula":return$${A.formula}$;case"decoration":{let e=A.nodes.map(t=>zo(t)).join("");return A.decos.includes("/")&&(e=\\textit{${e}}),A.decos.some(t=>/\*-/.test(t[0]))&&(e=\\textbf{${e}}),A.decos.includes("_")&&(e=\\uline{${e}}),A.decos.includes("-")&&(e=\\sout{${e}}),e}case"numberList":return${A.number}. ${A.nodes.map(e=>zo(e)).join("")};case"helpfeel":return\\lstinline!? ${ge(A.text)}!;case"code":return\\lstinline!${ge(A.text)}!;case"commandLine":return\\lstinline!${ge(A.symbol)} ${ge(A.text)}!;case"link":return A.pathType==="absolute"?A.content===""?\\url{${A.href}}:\\href{${A.href}}{${ge(A.content)}}:ge(A.href);case"googleMap":return\\href{${A.url}}{${ge(A.place)}};case"hashTag":return ge(#${A.href});case"blank":case"plain":return ge(A.text)}},e0=[{extensions:["javascript","js"],fileType:"javascript"},{extensions:["typescript","ts"],fileType:"typescript"},{extensions:["cpp","hpp"],fileType:"C++"},{extensions:["c","cc","h"],fileType:"C"},{extensions:["cs","csharp"],fileType:"cs"},{extensions:["markdown","md"],fileType:"markdown"},{extensions:["htm","html"],fileType:"html"},{extensions:["json"],fileType:"json"},{extensions:["xml"],fileType:"xml"},{extensions:["yaml","yml"],fileType:"yaml"},{extensions:["toml"],fileType:"toml"},{extensions:["ini"],fileType:"ini"},{extensions:["tex","sty"],fileType:"tex"},{extensions:["svg"],fileType:"svg"}],t0=A=>{let e=A.replace(/^.*\.(\w+)$/,"$1");return e0.find(t=>t.extensions.includes(e))?.fileType??""},ge=A=>A.replaceAll("\\","\\textbackslash ").replaceAll("#","\\#").replaceAll("%","\\%").replaceAll("$","\\$").replaceAll("&","\\&").replaceAll("~","\\textasciitilde ").replaceAll("^","\\textasciicircum ").replaceAll("_","\\_").replaceAll("{","\\{").replaceAll("}","\\}").replaceAll("|","\\textbar ").replaceAll("<","\\textless ").replaceAll(">","\\textgreater "),Sg=(A,e)=>A.split( ).map(t=>${" ".repeat(e)}${t}).join(
);scrapbox.PopupMenu.addButton({title:"TeX",onClick:A=>{navigator.clipboard.writeText(ww(hA(A))).catch(e=>{console.error(e),alert(${e.name} ${e.message}
${e.stack})})}});var gn="https://keicho.herokuapp.com/api/";var mw=async(A,e)=>{if(!window.GM_fetch)return{ok:!1,value:{name:"GMFetchNotAvailableError"}};let t=await window.GM_fetch(${gn}web/,{mode:"cors",method:"POST",body:JSON.stringify({user:"nobody",talk:e,text:A}),headers:{"Content-Type":"application/json"}});if(!t.ok)return{ok:!1,value:{name:"ResponseError",res:t}};let o=await t.json();return{ok:!0,value:{text:o.text,buttons:o.buttons,canInput:o.can_input}}};var hw=()=>{let{popupMenu:A,render:e}=o0();zI()?.append?.(A);let t=it(),o=()=>{requestAnimationFrame(()=>{let g=document.getElementsByClassName("cursor")[0];A.style.top=${parseInt(g.style.top)+parseInt(g.style.height)+4}px})};return t.addChangeListener(o),{render:e,visible:()=>!A.hidden,open:()=>A.hidden=!1,close:()=>A.hidden=!0,toggle:()=>A.hidden=!A.hidden,dispose:()=>{A.remove(),t.removeChangeListener(o)}}},o0=()=>{let A=document.createElement("div"),e=A.attachShadow({mode:"open"});e.innerHTML=
<style>
:host {
position: absolute;
left: 0px;
width:100%;
z-index:300;
user-select:none;
font-family:"Open Sans",Helvetica,Arial,"Hiragino Sans",sans-serif;
pointer-events:none
}
.button-container {
position: relative;
display:inline-block;
max-width:70vw;
min-width:80px;
text-align:center;
background-color:#111;
padding:0 1px;
border-radius:4px;
pointer-events:auto
}
max-width:90vw
}
max-width:90vw
}
.button {
font-size:11px;
color:#eee;
cursor:pointer;
display:inline-block;
padding:0 5px
}
.button:not(:first-of-type) {
border:0;
border-left:1px solid #eee }
.button.selected {
background-color:#222;
text-decoration:underline
}
font-size:13px;
padding:6px;
min-width:12vw
}
font-size:13px;
padding:6px;
min-width:12vw
}
.button div.icon {
height:2em;
max-width:10em;
display:inline-block;
overflow:hidden;
margin-left:1px;
vertical-align:top
}
.button div.icon img {
max-height:100%;
vertical-align:unset
}
</style>
<div class="button-container"></div>
;let t=e.lastElementChild;return{popupMenu:A,render:(...o)=>{t.textContent="",t.append(...o.map(({text:g,onClick:r})=>{let n=document.createElement("div");return n.classList.add("button"),n.textContent=g,r&&n.addEventListener("click",()=>r()),n}))}}};var dw=async(A="normal")=>{if(!window.GM_fetch)return{ok:!1,value:{name:"GMFetchNotAvailableError"}};let e=await window.GM_fetch(${gn}web/create/?mode=${A},{mode:"cors"});return e.ok?{ok:!0,value:await e.text()}:{ok:!1,value:{name:"ResponseError",res:e}}};var uw=A=>https://keicho.netlify.app/#talk=${A};var fw=A=>{let e=A.split( ),t=e[1]??e[0],o=A===e[0]?"":e[0];return o?[o.trim(),t].join(
):t};var rn=async(A,e,t)=>{let o=it(),g=o.lines.findIndex(n=>n.id===e.id);g<0&&(g=o.lines.findIndex(n=>n.text===e.text)),g<0&&(g=Math.min(t,Math.max(0,o.lines.length-1)));let r=o.lines[g].text;return hr().clear(),o.setPosition({line:g,char:[...r].length}),await bA(
${A}),o.getPosition().line};var Mw=A=>hA(A,{hasTitle:!1}).map(e=>{if(e.type==="title")return e.text.trimEnd();let t=" ".repeat(e.indent);switch(e.type){case"codeBlock":return[${t}${e.fileName},...e.content.split(
).map(o=>${t} ${o})].join(
).trimEnd();case"table":return[${t}${e.fileName},...e.cells.map(o=>${t} ${o.flatMap(g=>g.map(r=>Qn(r))).join(" ")})].join(
).trimEnd();case"line":return${t}${e.nodes.map(o=>Qn(o)).join("")}.trimEnd()}}).join(
),Qn=A=>{switch(A.type){case"quote":return> ${A.nodes.map(e=>Qn(e)).join("")};case"helpfeel":case"commandLine":return A.raw;case"strongImage":case"image":case"strongIcon":case"icon":case"googleMap":return"";case"strong":case"decoration":case"numberList":return A.nodes.map(e=>Qn(e)).join("");case"formula":return\\(${A.formula}\\);case"code":return ${A.text} ;case"blank":case"plain":return A.raw;case"hashTag":return A.href;case"link":switch(A.pathType){case"absolute":return A.content? ${A.content} :"";case"root":return A.href.split("/").pop()??"";case"relative":return A.href}}};var Ko=A=>/^[((]/.test(A);var yw=async A=>{let e=scrapbox.Page.lines;if(!e)return;let{cursor:t,selection:o}=Qe(),g=A?.entire||o.hasSelectionAll(),r=g?e.map(M=>M.text).join(
):o.getSelectedText(),n=A?.botIcon??"[/nishio/nisbot.icon]",{render:Q,visible:B,open:C,close:i,dispose:I}=hw();i();let s=new Set,a=()=>{I();for(let M of s)M()},c=M=>s.add(M),l={text:"Exit",onClick:a},D=A?.talkId||Nw(r)||(g?"":Nw(e.slice(0,1+t.getPosition().line).map(M=>M.text).join(
))),m=!D;if(!D){let M=dw(A?.mode),Y=setTimeout(()=>{Q({text:"Start talking..."}),C();let F=0;Y=setInterval(()=>{Q({text:Start talking${".".repeat(F%3)}}),F++},1e3)},1e3),j=await M;if(clearTimeout(Y),!j.ok){if(j.value.name==="GMFetchNotAvailableError"){alert("GM_fetch is not available. Please use Tampermonkey and install GM_fethc.");return}if(j.value.name==="ResponseError"){Q({text:Error: ${j.value.res.status} ${j.value.res.statusText}},l),C(),console.error(Error: ${j.value.res.status} ${j.value.res.statusText},await j.value.res.text());return}return}D=j.value}let N=D,u=o.normalizeOrder(o.getRange()),p=g?e.length-1:u.end.line,h=e[p],d=g?"":" ".repeat(Math.min(...e.slice(u.start.line,u.end.line+1).map(M=>PA(M.text)))),k=async M=>{let Y=await mw(M,N);if(!Y.ok)switch(Y.value.name){case"ResponseError":return Q({text:Error: ${Y.value.res.status} ${Y.value.res.statusText}},l),C(),console.error(Error: ${Y.value.res.status} ${Y.value.res.statusText},await Y.value.res.text()),Y;case"GMFetchNotAvailableError":return alert("GM_fetch is not available. Please use Tampermonkey and install GM_fethc."),Y}return Y},G="",R=async M=>{let Y=Mw(M).split(
).map(O=>O.trim()).join(
).trim();Y.startsWith(G)&&(Y=Y.slice(G.length));let j=Y.split(
);if(j.length===0)return;if(j.every(O=>Ko(O))&&(G=Y),j.filter(O=>!Ko(O)).length<2){let O,S;for(let U of j){if(S=await k(U),!S.ok)return S;Ko(U)||(O=S)}return O??S}let Z=0;{let O;for(;Z<j.length&&Ko(j[Z]);Z++)if(O=await k(j[Z]),!O.ok)return O}{let O=await k("まず聞いて");if(!O.ok)return O}for(;Z<j.length&&!Ko(j[Z]);Z++){let O=await k(j[Z]);if(!O.ok)return O}return await k("おしまい")},y=async M=>{if(scrapbox.Layout!=="page"||M==="")return;let Y=R(M),j=setTimeout(()=>{Q({text:"Asking..."}),C();let U=0;j=setInterval(()=>{Q({text:Asking${".".repeat(U%3)}}),U++},1e3)},1e3),F=await Y;if(clearTimeout(j),!F||!F.ok)return;let{text:Z,buttons:O}=F.value,S=fw(Z);if(S.trim()){let U=${d}${n}${S.includes(`
)?
${S.split(`
).map(v=> ${d}${v}).join(
)}:S}
${d};p=await rn(U,h,p),h=e[p]}Q({text:"Send",onClick:f},{text:"🙂",onClick:()=>bA("🙂")},{text:"🙁",onClick:()=>bA("🙁")},...O.map(U=>({text:U,onClick:async()=>{p=await rn(U,h,p),h=e[p],await y(U)}})),l),C()},f=async()=>{if(scrapbox.Layout!=="page")return;let M=scrapbox.Page.lines,Y=t.getPosition().line,[j,F,Z]=g0(M,Y,n);j!==""&&(p=Z,h=M[p],d=" ".repeat(Math.min(...M.slice(F,Z+1).map(O=>PA(O.text)))),await y(j))};return m&&(p=await rn(uw(N),h,p),h=e[p]),await y(r),{ask:f,open:C,close:i,visible:B,exit:a,onExit:c}},Nw=A=>{for(let e of A.split(
).reverse()){let t=e.match(/https?:\/\/keicho\.netlify\.app\/#talk=(\w+)/)?.[1];if(t)return t}},g0=(A,e,t)=>{let o=Math.max(A.findLastIndex((r,n)=>n<e&&r.text.trim().startsWith(t)),1),g=o+ve(o,A)+1;return[A.slice(g,e+1).map(r=>r.text.trim()).join(
).trim(),g,e]};scrapbox.PopupMenu.addButton({title:"",onClick:A=>${A}});scrapbox.PopupMenu.addButton({title:"",onClick:A=>$ ${A}});var Gw=[Wt,Xt,zt];scrapbox.PopupMenu.addButton({title:A=>{let e=He({project:scrapbox.Project.name,mode:"noopen",hooks:Gw});return!e||e.hookName.includes("default")?"":e.hookName.includes("task")?"":e.hookName.includes("split")?"":""},onClick:()=>{let A=window.prompt("Create a new page at",scrapbox.Project.name);A&&He({project:A,mode:"noopen",hooks:Gw})?.()}});scrapbox.PopupMenu.addButton({title:A=>/(https?:\/\/[^\s]+)/g.test(A)?"":"",onClick:A=>{let e=A.replace(/(https?:\/\/[^\s]+)/g,"[$1#.jpg]");if(A!==e)return e}});scrapbox.PopupMenu.addButton({title:"S",onClick:A=>{window.open(https://scrapbox.io/${scrapbox.Project.name}/search/page?q=${A})}});scrapbox.PopupMenu.addButton({title:"",onClick:A=>{let e=A.split(/\n/).map(t=>t.replace(/\[(.*)\]/g,"$1")).join( );if(A!=e)return e}});var r0=[Ii,gw,Ii,Qw,iw,tn(),Iw,tw(),rw,A=>{if(A.hostname!=="ekitan.com"||!/^\/transit\/(?:route|first|last)\//.test(A.pathname))return A;let e=A.searchParams.get("dt"),t=A.searchParams.get("tm"),o=A.searchParams.get("sr");return A.search="",e&&A.searchParams.append("dt",e),A.pathname.startsWith("/transit/route/")&&(t&&A.searchParams.append("tm",t),o&&A.searchParams.append("sr",o)),A},A=>{if(A.host!==location.host||!A.pathname.startsWith("/api/code/"))return A;let e=encodeURIComponent(${A.origin}${A.pathname});return${A}.endsWith(".svg")?${A}:${A}.endsWith(".mlt")?${A}:A},A=>{if(A.hostname==="raw.githubusercontent.com")return${A};if(A.hostname!=="github.com")return A;let[e,t,o]=A.pathname.match(/^\/([^\\]+)\/([^\\]+)\/blob\/(.+)$/)?.slice?.(1)??[];if(!e||!t||!o)return A;let[,g,r]=A.hash.match(/L(\d+)-L(\d+)/)??A.hash.match(/L(\d+)/)??[];return[https://code2svg.vercel.app/svg/${g&&r?L${g}-${r}/:g?L${g}/:""}https://raw.githubusercontent.com/${e}/${t}/${o}#.svg ${A}]},A=>A.hostname==="github.com"?${A}:A,aw,Cw()];scrapbox.PopupMenu.addButton({title:A=>/https?:\/\/\S+/.test(A)?"URL":"",onClick:A=>{let e=sw(A,...r0);if(typeof e=="string")return A===e?void 0:e;e.then(t=>{if(A!==t)return bA(t)})}});pw(["takker","takker-memex","takker-private","takker-books"]);if(!/mobile/i.test(navigator.userAgent)){let A=(e,t)=>{e.trim()!==""&&yw({mode:t}).then(o=>{if(!o)return;let{ask:g,visible:r,onExit:n}=o,Q=B=>{!r()||B.key!=="Enter"||!B.ctrlKey||B.altKey||B.shiftKey||(B.preventDefault(),B.stopPropagation(),g())};YA().addEventListener("keydown",Q),n(()=>YA().removeEventListener("keydown",Q))})};scrapbox.PopupMenu.addButton({title:()=>"🤖",onClick:e=>A(e)})}var vg=(A,e)=>e.map(t=>t.replace(/@yyyy-MM-dd HH:mm:ss@/g,_(A,"yyyy-MM-dd HH:mm:ss")).replace(/@yyyy-MM-dd@/g,_(A,"yyyy-MM-dd")).replace(/@yyyy-MM-dd(?:([+-])(\d+)(w?))?(?:\((Sun|Mon|Tue|Wed|Thu|Fri|Sat)\))?@/g,(o,g,r,n,Q)=>{let B=g?g==="+"?VA(A,parseInt(r)*(n==="w"?7:1)):We(A,parseInt(r)*(n==="w"?7:1)):A;return _(Q?VA(Mr(B),Q0(Q)):B,"yyyy-MM-dd")}).replace(/@yyyy-ww@/g,${Qg(A)}-w${${rg(A)}.padStart(2,"0")}).replace(/@yyyy-ww([+-])(\d+)(w?)@/g,(o,g,r,n)=>{let Q=g==="+"?VA(A,parseInt(r)*(n==="w"?7:1)):We(A,parseInt(r)*(n==="w"?7:1));return${Qg(Q)}-w${${rg(Q)}.padStart(2,"0")}})),Q0=A=>{switch(A){case"Sun":return 0;case"Mon":return 1;case"Tue":return 2;case"Wed":return 3;case"Thu":return 4;case"Fri":return 5;default:return 6}};var Yw=async(A,e,t)=>{if(scrapbox.Project.name!==A)return()=>{};let o=scrapbox.Project.pages;await new Promise(C=>{let i=setInterval(()=>{if(o.length===0){o=scrapbox.Project.pages;return}clearInterval(i),C()},2e3)});let g=new Date(2023,1,3),r=async()=>{let C=new Date,i={start:g,end:VA(C,1)},{render:I,dispose:s}=CA(),a;try{let c=await kw(e),l=await kw(t),D=Nr(i).filter(u=>{let p=vg(u,c)[0],h=o.find(d=>d.title===p);return!h||!h.exists}),m=_s(i).filter(u=>{let p=vg(u,l)[0],h=o.find(d=>d.title===p);return!h||!h.exists});if(D.length===0&&m.length===0)return;let N=D.length+m.length;I({type:"spinner"},{type:"text",text:create ${N} review pages...}),a=await SA();for(let u of[...D.map(p=>vg(p,c)),...m.map(p=>vg(p,l))])await oA(A,u[0],(p,h)=>h.persistent?void 0:u,a?{socket:a}:{}),N--,I({type:"spinner"},{type:"text",text:create ${N} review pages...});I({type:"check-circle"},{type:"text",text:created ${D.length+m.length} review pages.}),g=C}catch(c){I({type:"exclamation-triangle"},{type:"text",text:c instanceof Error?${c.name} ${c.message}:"Unknown error! (see developper console)"}),console.error(c)}finally{a&&await yA(a),await nA(1e3),s()}},n=r(),Q=new Date,B=setInterval(()=>{let C=new Date;qA(Q,C)||(Q=C,n.then(()=>n=r()))},1e4);return()=>(clearTimeout(B),n)},kw=async A=>{let e=await Io(A[0],A[1],A[2]);if(!e.ok){let o=new Error;throw o.name=e.value.name,o.message=${e.value.message} at fetching /${A0}/${A1}/${A2},o}let t=e.value.split( );if(t.length===0)throw new Error(template "/${A0}/${A1}/${A2}" is empty!);return t};var Ei=(...A)=>{let e=A.flatMap(o=>{if(typeof o=="string")return[nn(o)];if(Array.isArray(o.type))return[bw(o.type)];switch(o.type){case"text":return[nn(o.text)];case"group":{let g=Ei(...o.items);return g?[g]:[]}default:return[bw(o.type)]}});if(e.length===0)return;if(e.length===1)return e[0];let t=document.createElement("span");return t.classList.add("item-group"),t.append(...e),t},nn=A=>{let e=document.createElement("span");return e.classList.add("item"),e.append(A),e},bw=A=>{if(Array.isArray(A)){let e=document.createElement("span");e.classList.add("fa-stack");let t=ai(A[0]);t.classList.add("fa-stack-1x");let o=ai(A[1]);return o.classList.add("fa-stack-1x"),e.append(t,o),nn(e)}return nn(ai(A))},ai=A=>{let e=document.createElement("i");switch(A){case"spinner":e.classList.add("fa","fa-spinner");break;case"check-circle":case"gyazo":case"ocr":case"calendar":case"trim":e.classList.add("kamon",kamon-${A});break;case"markdown":case"google":e.classList.add("fab",fa-${A});break;case"copy":case"clipboard":e.classList.add("far",fa-${A});break;default:e.classList.add("fas",fa-${A});break}return e};var{cursor:ci,selection:li}=Qe(),Ow=A=>{let{className:e,display:t,onClick:o,context:g="page"}=A,r=document.createElement("div");e&&r.classList.add(e),jw(g)||(r.style.display="none");let n=(...C)=>{if(C.length===1&&C[0]===""){r.style.display="none";return}r.textContent="";let i=Ei(...C);i&&r.append(i)},Q=typeof t=="function"?t({cursor:ci,selection:li}):t;return n(...Array.isArray(Q)?Q:[Q]),r.addEventListener("click",C=>{C.preventDefault(),C.stopPropagation(),o({cursor:ci,selection:li,setDisplay:n})}),{status:r,context:g,update:()=>{if(jw(g)?r.removeAttribute("style"):r.style.display="none",typeof t=="function"){let C=t({cursor:ci,selection:li});n(...Array.isArray(C)?C:[C])}}}},jw=A=>A!=="stream"?scrapbox.Layout===A:scrapbox.Layout==="list"&&location.pathname.startsWith("/stream");var Fw=()=>{let A=document.createElement("style");A.textContent=.status-bar.left { position: absolute;
top: 0;
left: 0;
max-width: 80vw;
overflow-x: auto;
overflow-y: hidden;
}
.status-bar.left:empty {
display: none;
}
.status-bar.left > div {
border-left: unset;
}
.status-bar.left > div {
border-right: 1px solid var(--tool-light-color, #a9aaaf); }
.status-bar.left > div:first-of-type {
border-top-left-radius: unset;
}
.status-bar.left > div:last-of-type {
border-top-right-radius: 3px;
},document.head.append(A);let e=document.createElement("div");return e.classList.add("status-bar","left"),document.getElementsByClassName("footer")[0].append(e),e};var Di=new Set,{cursor:n0,selection:B0}=Qe(),C0=Fw();var de=A=>{let e=Ow(A);return Di.add(e),C0.append(e.status),()=>{e.status.remove(),Di.delete(e)}},pi=()=>{for(let{update:A}of Di)A()};n0.addChangeListener(()=>pi());B0.addChangeListener(()=>pi());scrapbox.addListener("layout:changed",pi);var xw=async(A,e)=>{try{let t=e.getSelectedText()||dA(A.getPosition().line);if(!t)return;await navigator.clipboard.writeText(t)}catch(t){console.error(t),alert(Faild to copy:
${JSON.stringify(t)})}},Jw=async(A,e)=>{try{let t=e.hasSelection(),o=t?e.getRange().start.line:A.getPosition().line,g=t?e.getSelectedText():dA(o);if(!g)return;await navigator.clipboard.writeText(g),t||e.setRange({start:{line:o,char:0},end:{line:o,char:g.length}}),A.focus(),uA("Delete")}catch(t){console.error(t),alert(Faild to cut:
${JSON.stringify(t)})}},Rw=async A=>{try{let e=await navigator.clipboard.readText();if(!e)return;A.focus(),await bA(e)}catch(e){console.error(e),alert(Faild to paste:
${JSON.stringify(e)})}},Zw=A=>{A.getVisible()&&A.hasFocus&&A.visiblePopupMenu?A.hide():(A.focus(),A.showEditPopupMenu())};globalThis.addEventListener("keydown",A=>{if(A.key!=="i"||A.shiftKey||A.altKey||A.metaKey||!A.ctrlKey||A.isComposing)return;let e=it();e.hasFocus||(A.preventDefault(),e.focus())});var wi=class{get editor(){return document.getElementById("editor")}get lines(){return document.getElementsByClassName("lines")?.[0]}get computeLine(){return document.getElementById("compute-line")}get grid(){return document.getElementsByClassName("related-page-list clearfix")?.[0]?.getElementsByClassName("grid")?.[0]}get cursorLine(){return document.getElementsByClassName("cursor-line")?.[0]}get textInput(){return document.getElementById("text-input")}get cursor(){return document.getElementsByClassName("cursor")?.[0]}get selections(){return document.getElementsByClassName("selections")?.[0]}get popupMenu(){return document.getElementsByClassName("popup-menu")?.[0]}get pageMenus(){return document.getElementsByClassName("page-menu")?.[0]}get pageInfoMenu(){return document.getElementById("page-info-menu")}get pageEditMenu(){return document.getElementById("page-edit-menu")}get pageEditButtons(){return this.pageEditMenu.nextElementSibling.getElementsByTagName("a")}get randomJumpButton(){return document.getElementsByClassName("random-jump-button")?.[0]}get pageCustomButtons(){return document.getElementsByClassName("page-menu-extension")}},Uw=new wi;var Lw=A=>new Promise(e=>setTimeout(e,A));async function ye(A,{wait:e=1}={}){let t=Uw.textInput;t.focus(),t.value=A;let o=document.createEvent("UIEvent");o.initEvent("input",!0,!1),t.dispatchEvent(o),await Lw(e)}if(ot()){let A="Timestamp";scrapbox.PageMenu.addMenu({title:A,image:"https://img.icons8.com/ios/180/FFFFFF/add-time.png"}),scrapbox.PageMenu(A).addItem({title:"#YYYY-MM-DD HH:mm:ss ",onClick:()=>ye(_(new Date,"#yyyy-MM-dd HH:mm:ss "))}),scrapbox.PageMenu(A).addItem({title:"YYYY-MM-DD HH:mm:ss ",onClick:()=>ye(_(new Date,"yyyy-MM-dd HH:mm:ss "))}),scrapbox.PageMenu(A).addItem({title:"YYYY-MM-DD",onClick:()=>ye(_(new Date,"yyyy-MM-dd"))}),scrapbox.PageMenu(A).addItem({title:"HH:mm:ss ",onClick:()=>ye(_(new Date,"HH:mm:ss "))}),scrapbox.PageMenu(A).addItem({title:"⬜",onClick:()=>ye("⬜")}),scrapbox.PageMenu(A).addItem({title:"🚧",onClick:()=>ye("🚧")}),scrapbox.PageMenu(A).addItem({title:"⌛",onClick:()=>ye("⌛")}),scrapbox.PageMenu(A).addItem({title:"📝",onClick:()=>ye("📝")}),scrapbox.PageMenu(A).addItem({title:"✅",onClick:()=>ye("✅")}),scrapbox.PageMenu(A).addItem({title:"❌",onClick:()=>ye("❌")})}scrapbox.PageMenu.addItem({title:"Open kakeru",image:"https://i.kakeru.app/15c3b1a40b6b3c2ebd68f33f4c86b3f6-opaque.png",onClick:()=>window.open("https://kakeru.app")});async function Tw(A,{from:e,to:t,merge:o}){if(e===t)return{success:!0,dup:!1};let g=await ee(e,A);if(!g.ok)return{success:!1,at:"from",name:g.value.name,message:g.value.message};let r=g.value;if(!r.persistent)return{success:!1,at:"from",name:"EmptyPageError",message:"The request page is empty."};let n=await ee(t,A);if(!n.ok)return{success:!1,at:"to",name:n.value.name,message:n.value.message};let Q=g.value;return Q.persistent&&!o?{success:!1,at:"to",name:"NoEmptyPageError",message:The same page already exists in "/${t}"}:(await oA(t,A,B=>[...B,...r.lines.slice(1)].map(C=>C.text)),await oI(e,A),{success:!0,dup:Q.persistent})}var mi=async()=>{let A=scrapbox.Page.title,e=scrapbox.Project.name,t=window.prompt(Take "/${e}/${A}" from "${e}" to:,"takker");if(!t)return;let{render:o,dispose:g}=CA();o({type:"spinner"},{type:"text",text:/${e}/${A} → /${t}/${A}});try{let r=await Tw(A,{from:e,to:t,merge:!0});if(!r.success){o({type:"exclamation-triangle"},{type:"text",text:${r.name} ${r.message}});return}return o({type:"check-circle"},{type:"text",text:Moved ${r.dup?"and merged ":""}to "/${t}/${A}".}),https://scrapbox.io/${t}/${V(A)}}catch(r){o({type:"exclamation-triangle"},{type:"text",text:r instanceof Error?${r.name} ${r.message}:"Unknown error! (see developper console)"}),console.error(r)}finally{setTimeout(()=>g(),1e3)}};scrapbox.PageMenu.addItem({title:"Transport",onClick:async()=>{await mi()}});scrapbox.PageMenu.addItem({title:"Transport and Open",onClick:async()=>{let A=await mi();A&&window.open(A)}});var hi=A=>A.replace(/[\[\]]/g,"").replace(/\s/g," "),ro=A=>${A}.padStart(2,"0"),Sw=A=>${A.getFullYear()}-${ro(A.getMonth()+1)}-${ro(A.getDate())} ${ro(A.getHours())}:${ro(A.getMinutes())}:${ro(A.getSeconds())},di=A=>${A.getFullYear()}-${ro(A.getMonth()+1)}-${ro(A.getDate())};async function vw(A,e,t,o){let{render:g,dispose:r}=CA(),n=[],Q=[];for(let C of i0(t)){if(C.type==="line"){n.push(${hi(C.text)}~@${di(new Date)});continue}let i=${hi(C.lines0)}~@${di(new Date)};Q.push([i,...C.lines.slice(1),"",#${Sw(new Date)}]),n.push(${i})}let B=o?.socket;try{B??=await SA(),g({type:"spinner"},{type:"text",text:Adding ${n.length} items...}),await oA(A,e,C=>{let i=C.map(s=>s.text),I=i.flatMap((s,a)=>s.trim()==="[/icons/hr.icon]"?[a]:[]).pop()??-1;return I<0?[...i,...n]:[...i.slice(0,I),...n,...i.slice(I)]},{socket:B}),g({type:"spinner"},{type:"text",text:Create ${Q.length} pages...}),await Promise.all(Q.map(C=>oA(A,C[0],i=>[i[0].text,...i.slice(1).map(I=>I.text),...C.slice(1)],{socket:B}))),g({type:"check-circle"},{type:"text",text:"Added to the inbox."})}catch(C){g({type:"exclamation-triangle"},{type:"text",text:"Failed to add (see console). Write directory instead."}),console.error(C),ao(A,e,[...n,...Q].join( ))}finally{let C=nA(1e3);B&&await yA(B),await C,r()}}function*i0(A){let e=0;for(;e<A.length;){let t=ve(e,A);if(t===0){yield{type:"line",text:A[e].trim()},e++;continue}let o=PA(A[e]);yield{type:"block",lines:A.slice(e,e+t+1).map(g=>g.slice(o))},e+=t+1}}var Hw=async(A,e)=>{let t=window.prompt("Type all you think of","");if(!t||t.trim()==="")return;let o=t.trim().split(/\s+/);await vw(A,e,o)};var I0="button.";document.getElementById("editor").addEventListener("click",async A=>{let e=A.target;if(e.tagName==="IMG"&&e.classList.contains("icon")&&e.title.endsWith("-button")){A.preventDefault(),A.stopImmediatePropagation();try{let t=../${encodeURIComponent(e.title)}/${I0},{execute:o}=await import(t);o()}catch(t){console.log(t)}}});scrapbox.PageMenu.addItem({title:"Copy link for Markdown",onClick:()=>{let A=scrapbox.Page.title.replaceAll(" ","_").replace(/[/?#\{}^|<>]/g,e=>encodeURIComponent(e));navigator.clipboard.writeText(${scrapbox.Page.title}(https://${location.hostname}/${scrapbox.Project.name}/${A}${location.hash})).catch(e=>alert(${e.name}: ${e.message}))}});var Hg=A=>{let[e,t]=L([]),[o,g]=L([]),[r,n]=L(!1),Q=b(async()=>{let C=new Set;n(!0);let i=await Lo(A),I=[],s=i.flatMap(({links:a,project:c})=>a.flatMap(l=>{let{title:D}=Uo(l),m=le(D);if(!m)return[];if(!m.ok)return I.push({project:c,title:D,...m.value}),[];let N=z(D);return C.has(N)?[]:(C.add(N),[{project:c,title:D,...m.value}])}));t(s),g(I),n(!1)},[A]),B=b(async()=>{n(!0),await vQ(A,60),n(!1)},[A]);return X(()=>(Q(),xg(A,Q)),[A,Q]),{tasks:e,errors:o,load:B,loading:r}};var Ww=()=>b(A=>A.stopPropagation(),[]);var Bn=()=>{let[A,e]=Ot(s0,{isOpen:!1,prevOverflowY:""}),t=b(()=>e(!0),[]),o=b(()=>e(!1),[]),g=b(({children:r})=>{let n=Ww(),Q=J(()=>{let B;return C=>{if(!C){B?.(),e(C);return}let i=new AbortController;C.addEventListener("cancel",()=>e(!1),{signal:i.signal}),B=()=>{i.abort()},e(C)}},[]);return E("dialog",{ref:Q,onClick:o},r&&E("div",{className:"dialog-inner",onClick:n},r))},[]);return{isOpen:A.isOpen,open:t,close:o,Dialog:g}},s0=(A,e)=>{let t=A.dialog?.open??!1;if(e instanceof HTMLDialogElement||e===null)return t===A.isOpen&&e===A.dialog?A:{isOpen:t,dialog:e,prevOverflowY:A.prevOverflowY};if(e){A.dialog?.showModal?.();let o=A.isOpen?A.prevOverflowY:document.documentElement.style.overflowY;return document.documentElement.style.overflowY="hidden",A.isOpen&&t?A:{isOpen:!0,prevOverflowY:o,dialog:A.dialog}}return A.dialog?.close?.(),A.prevOverflowY===""?document.documentElement.style.removeProperty("overflow-y"):document.documentElement.style.overflowY=A.prevOverflowY,!A.isOpen&&!t?A:{isOpen:!1,prevOverflowY:"",dialog:A.dialog}};var Wg=String.raw.fa,.far{font-weight:900;font-family:"Font Awesome 5 Free";-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.far{font-weight:400}.fa-spinner{animation:spin 2s infinite linear}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}.fa-spinner:before{content:"\f110"}.fa-sync:before{content:"\f021"}.fa-bookmark:before{content:"\f02e"}.fa-fw{text-align:center;width:1.25em}.kamon:before{font-family:AppIcons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-variant:normal;font-weight:400;text-decoration:none;text-transform:none}.kamon-check-circle:before{content:"\e018"}.timeline-wrap{display:flex;flex-direction:column;height:100%;overflow-y:hidden;--timeline-bg: var(--dropdown-menu-bg, #fff);--timeline-text-color: var(--page-text-color, #4a4a4a);--timeline-link-color: var(--page-link-color, #5e8af7);--row-header-width: 40px;--timeline-border-color: #888;--timeline-border: solid 1px var(--timeline-border-color);--timeline-hour-height: 40px;background-color:var(--timeline-bg);color:var(--timeline-text-color);.column-header{flex:none;display:flex;flex-direction:row;.cell{flex:1 1 1px;h2{font-weight:400;margin:0;text-align:center;width:100%}}}.week-container{position:relative;height:100%;overflow-y:auto;scrollbar-width:none;.week{flex:auto;display:flex;width:100%;.borders{.border{height:var(--timeline-hour-height)}.border:after{content:attr(data-time);font-size:10px;text-align:right;border-top:var(--timeline-border);position:absolute;width:100%;margin-top:-1px;pointer-events:none}}.timeline{flex:auto;border-left:var(--timeline-border);position:relative;.indicator{position:absolute;top:calc(var(--start) * 40px - .5px);width:100%;height:1px;background-color:red}.copy{position:absolute;top:1.5em}.event{position:absolute;top:calc(var(--start) * 40px - 1px);height:calc(40px * var(--duration) / 60);outline:none;--event-bg2: var(--timeline-text-color);--event-bg: var(--timeline-bg);--event-bg-ratio: 50%;--event-color-ratio: 0%;--event-border-color-ratio: 0%;background-color:color-mix(in srgb,var(--event-bg) var(--event-bg-ratio),var(--event-bg2));color:color-mix(in srgb,var(--event-bg) var(--event-color-ratio),var(--timeline-text-color));border:var(--timeline-border);border-color:color-mix(in srgb,var(--event-bg) var(--event-border-color-ratio),var(--timeline-border-color));border-radius:4px;overflow:hidden;text-wrap:nowrap;max-width:100%;text-overflow:ellipsis}.eventdata-status=done{--event-bg-ratio: 90%;--event-color-ratio: 50%;--event-border-color-ratio: 50%}.eventdata-status=expired{font-weight:700}a.event{--event-bg2: var(--timeline-link-color);text-decoration:none}}.timeline:first-child{border-right:var(--timeline-border)}}}}.wedget{position:fixed;top:60px;left:10px;max-height:calc(90vh - 60px);max-width:100px;width:calc(100vw / 767 * 100 - 10px);min-width:60px;border:solid 1px #888;border-radius:4px;display:flex;flex-direction:column;background-color:var(--dropdown-menu-bg, #fff);color:var(--page-text-color, #4a4a4a);&:not(.open){display:none}}dialog{&::backdrop{background-color:#000c}padding:10px;background:unset;margin-top:unset;margin-bottom:unset;border:unset;height:unset;overflow-y:hidden;&open>.dialog-inner{display:flex}>.dialog-inner{flex-direction:column;align-items:center;row-gap:10px;height:100%;>*{color:var(--page-text-color, #4a4a4a);background-color:var(--dropdown-menu-bg, #fff);border:1px solid rgba(0,0,0,.2);border-radius:6px}}}@media (min-width: 768px){dialog{padding:30px 0;--item-width: 600px}}.result{padding:15px;width:calc(var(--item-width, 100%) - 30px);overflow-y:scroll}.controller{padding:5px;width:calc(var(--item-width, 100%) - 10px);display:flex;flex-wrap:wrap;flex:none;gap:.2em}.progress{flex-grow:1;>*{padding:0 2px}}a{text-decoration:none;color:var(--page-link-color, #5e8af7);&:hover{color:var(--page-link-hover-color, #2d67f5)}}button{cursor:pointer;background:unset;color:unset;border:unset}.copy,.close,.today{font-family:"Font Awesome 5 Free"}.navi{font-family:AppIcons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-variant:normal;font-weight:400;text-decoration:none;text-transform:none}.close,.today{font-weight:900}ul{list-style-type:none;word-break:break-all}.task-list li:not(data-freshness^="-"):not(data-freshness="0"){font-weight:700}.scheduler details li{&data-status=done{opacity:.4}&data-status=expired{font-weight:700}}.task-list li{&data-type=deadline .label.type{color:var(--takker-scheduler-label-deadline-color, rgb(255, 75, 0))}&data-type=todo .label.type{color:var(--takker-scheduler-label-todo-color, rgb(246, 170, 0))}&data-type=note .label.type{color:var(--takker-scheduler-label-note-color, rgb(200, 200, 203))}&data-type=up-down .label.type{color:var(--takker-scheduler-label-up-down-color, rgb(77, 196, 255))}}:is(data-page-no=expired,data-page-no=errors) li{opacity:1!important}.scheduler{--takker-scheduler-summary-meter-width: 10em;overflow-y:hidden}.label{display:inline-block;font-size:90%;padding:0 3px}.type{text-align:center;width:2.5em;border:1px solid;border-radius:3px}.freshness{text-align:right;width:2.5em}.start,.duration{text-align:right;width:3em} ;var Po=({text:A,title:e})=>{let[t,o]=L(""),g=b(async r=>{r.preventDefault(),r.stopPropagation();try{await navigator.clipboard.writeText(A),o("Copied"),await nA(1e3),o("")}catch(n){alert(Failed to copy the code block
Error:${n.message})}},[A]);return E("button",{className:"copy",title:e??"Copy",onClick:g},t)};var a0=60*60*24*1e3,Xw=(A,e)=>{let t=eA(A.refDate),o=(e.getTime()-t.getTime())/a0;switch(t.setHours(0),t.setMinutes(0),A.status){case"done":return-1/0;case"deadline":return o/(A.speed??1);case"todo":return Math.min(o/(A.speed??1),0);case"note":return e.getTime()<t.getTime()?-1/0:-o/(A.speed??1);case"up-down":{let g=A.speed??30;return g*(-1+Math.cos(Math.PI*2*o/g))}}};var Kw=(A,e)=>{if(e.score!==A.score)return e.score-A.score;let t=zw(A.freshness),o=zw(e.freshness);return t!==o?o-t:ce(Oe(A),Oe(e))?-1:1},zw=A=>{switch(A.status){case"todo":return 3;case"note":return 2;case"deadline":return 5;case"up-down":return 1;case"done":return 0}};var Ae=A=>${A.getFullYear()}-${fe(A.getMonth()+1)}-${fe(A.getDate())},Xg=A=>{let[e,t,o]=A.split("-").map(g=>parseInt(g,10));return{year:e,month:t,date:o}},zg=A=>${Qa(A)}-w${fe(rg(A))},Cn=A=>{let[e,t]=A.split("-w").map(o=>parseInt(o,10));return Mr(Ia(new Date(e,0,1),t))};var Kg=({loading:A,onClick:e})=>A?E("div",null,E("i",{className:"fa fa-spinner"})):E("button",{className:"navi reload",onClick:e},"");var Vo=()=>{let[A,e]=L(new Date);return X(()=>{let t=setInterval(()=>e(new Date),6e4);return()=>{clearInterval(t)}},[]),A};var Pw=A=>{switch(A){case"todo":return"ToDo";case"note":return"覚書";case"deadline":return"締切";case"up-down":return"浮遊";case"done":return"完了"}};var Vw=(A,e)=>new URL(/${A.project}/${V(A.title)},e??location.href);var In=({children:A,project:e,title:t,className:o,...g})=>E("a",{...g,className:[o??"","page-link"].join(" "),type:"link",href:Vw({project:e,title:t}).pathname,...e===scrapbox.Project.name?{rel:"route"}:{rel:"noopener noreferrer",target:"_blank"}},A);var qw=({action:A,pActions:e})=>{let t=J(()=>Pw(A.freshness.status),[A.freshness.status]),o=J(()=>be(Oe(A)).slice(11)||" ",[Oe(A)]),g=J(()=>Eg(A),[A]),r=Math.floor(Math.round(A.score)/7),n=Vo(),Q=J(()=>A.executed!==void 0&&Jt(st(eA(A.executed.start),A.executed.duration),n),[A.executed?.start,A.executed?.duration,n]),B=J(()=>[...e,A].map(C=>${C.raw}).join( ),[e,A]);return E("li",{"data-type":A.freshness.status,"data-freshness":A.score.toFixed(0),"data-level":r,...r<0?{style:{opacity:E0(A).toFixed(2)}}:{}},E(Po,{text:B,title:"ここまでコピー"}),E("span",{className:"label type"},t),E("i",{className:label far fa-fw${Q?" fa-bookmark":""}}),E("span",{className:"label freshness"},A.score.toFixed(0)),E("time",{className:"label start"},o),E("span",{className:"label duration"},g,"m"),E(In,{project:A.project,title:A.raw},A.name))},E0=A=>Math.max(.8*Math.exp(Math.log(8/7)/7*A.score),.05);var _w=(A=Ae(new Date))=>{let[e,t]=L(A),o=b(()=>{t(r=>{switch(r){case"errors":return"expired";case"expired":return Ae(new Date);default:{let n=eA(Xg(r));return n.setDate(n.getDate()+1),Ae(n)}}})},[]),g=b(()=>{t(r=>{let n=Ae(new Date);switch(r){case"errors":return"errors";case"expired":return"errors";case n:return"expired";default:{let Q=eA(Xg(r));return Q.setDate(Q.getDate()-1),Ae(Q)}}})},[]);return{pageNo:e,next:o,prev:g}};var sn=(A,e)=>X(()=>(scrapbox.on(A,e),()=>scrapbox.off(A,e)),[]);var Pg=(A,e)=>{let t=kA({...e});X(()=>(Object.assign(t.current,e),()=>{for(let o of Object.keys(e))delete t.current[o]}),[...Object.keys(e)].sort().map(o=>e[o])),X(()=>{A(t.current)},[A])};var $w=A=>{let e=document.createElement("div");e.dataset.userscriptName="takker-workflow@0.0.1/next-action-viewer";let t=e.attachShadow({mode:"open"});return document.body.append(e),new Promise(o=>GA(E(c0,{getController:o,projects:A}),t))},c0=({getController:A,projects:e})=>{let{tasks:t,errors:o,load:g,loading:r}=Hg(e),{pageNo:n,next:Q,prev:B}=_w(),C=J(()=>{if(n==="errors")return o.map(l=>({name:${l.title}
name:${l.name}
message:${l.message},raw:l.title,freshness:{refDate:{year:9999,month:1,date:1},status:"todo"},project:l.project,generated:!0,score:0}));if(n==="expired"){let l=new Date;return t.flatMap(D=>!je(D)&&ce(fa(D),_A(l))&&D.freshness===void 0&&D.recurrence===void 0?[{...D,score:0,freshness:{refDate:D.executed.start,status:"todo"}}]:[]).sort((D,m)=>ce(Oe(D),Oe(m))?-1:0)}let c=eA(Xg(n));return t.flatMap(l=>{if(!l.freshness)return[];if(ct(l))return[];let D=Xw(l.freshness,c);return D>-999?[{...l,score:D}]:[]}).sort(Kw)},[t,o,n]),{Dialog:i,open:I,close:s}=Bn();Pg(A,{open:I,close:s});let a=J(()=>[n,...C.map(c=> ${c.raw})].join( ),[C,n]);return sn("page:changed",s),E(W,null,E("style",null,Wg),E(i,null,E("div",{className:"controller"},E(Po,{text:a,title:"Copy All Tasks"}),E("span",null,n),E("button",{className:"navi left",onClick:B},""),E("button",{className:"navi right",onClick:Q},""),E(Kg,{loading:r,onClick:g}),E("button",{className:"close",onClick:s},"")),E("ul",{className:"result task-list","data-page-no":n},C.map((c,l)=>E(qw,{key:c.raw,action:c,pActions:C.slice(0,l)})))))};var En=(A,e)=>/${A}/${z(e)},Vg=new Map,ui=new Map,Am=(A,e)=>{Vg.set(A,e);for(let t of ui.get(A)??[])t(e)},an=()=>{Qo!==void 0&&(clearInterval(Qo),Qo=void 0);let A=scrapbox.Project.name,e=scrapbox.Page.title??"",t=En(A,e);if(!Vg.has(t))return;let o=KA().map(g=>g.text);Qo=setInterval(()=>{z(e)===z(o[0])&&(Am(t,o),Qo!==void 0&&(clearInterval(Qo),Qo=void 0))},1e3)},Qo;scrapbox.on("page:changed",()=>{scrapbox.off("lines:changed",an);let A=scrapbox.Project.name,e=scrapbox.Page.title??"",t=En(A,e);Vg.has(t)&&scrapbox.on("lines:changed",an)});var l0=(A,e)=>{let t=En(A,e),o=Vg.get(t);return o||(Vg.set(t,[]),ee(A,e).then(g=>{if(!g.ok)return[];let r=g.value.lines.map(n=>n.text);Am(t,r),e===scrapbox.Page.title&&!scrapbox.listeners("lines:changed").includes(an)&&scrapbox.on("lines:changed",an)})),o??[]},em=(A,e)=>{let[t,o]=L(l0(A,e));return X(()=>{let g=En(A,e),r=ui.get(g)??new Set;return r.add(o),ui.set(g,r),()=>{r.delete(o)}},[A,e]),t};var fi=A=>A.duration===void 0?void 0:_A(st(eA(A.start),A.duration)),Mi=(A,e)=>{let t=eA(A.start),o=e.getTime(),g=Math.round((o-t.getTime())/(60*1e3));if(g<=0)return[void 0,A];if(A.duration<=g)return[A,void 0];let r={start:A.start,duration:g};return[r,{start:fi(r),duration:A.duration-g}]};var no=A=>"title"in A,D0=A=>A.record?.duration!==void 0,tm=(A,e)=>no(A)&&A.status==="done"?A.status:D0(A)?no(A)&&A.executed?ce(_A(e),A.executed.start)?"moved":"expired":"done":ce(fi(A.plan),_A(e))?no(A)?"expired":"done":"undone";var om=(A,e)=>{let t=le(A.title.slice(1,-1));if(!A.plan.start)return;let o={name:t?.ok?t.value.name:A.title,plan:{start:_A(A.plan.start),duration:(A.plan.duration??0)/60}};if(A.record.start&&(o.record={start:_A(A.record.start)},A.record.end&&(o.record.duration=oB(A.record.end,A.record.start))),!t?.ok)return o;let g={...o,title:t.value.raw,project:e};return t.value.freshness&&(g.status=t?.value.freshness.status),je(t.value)||(g.executed=t.value.executed),g},Ni=(A,e)=>{let t=Jr(A);return t!==void 0?{name:A.name,project:e,title:t,executed:A.executed,plan:A.executed,status:A.freshness?.status}:{name:A.name,plan:A.executed}};var gm=(A,e,t)=>{let o=[yi(A,We(e,1),t),yi(A,e,t),yi(A,VA(e,1),t)],g=J(()=>o.flat(),o);return J(()=>{let r=Ys(e),n=$s(e);return g.flatMap(Q=>{let[,B]=Mi(Q.plan,r);if(!B)return[];let[C]=Mi(B,n);if(!C)return[];let{plan:i,...I}=Q;return[{plan:C,...I}]}).sort((Q,B)=>ce(Q.plan.start,B.plan.start)?-1:0)},[g,e])},yi=(A,e,t)=>{let o=em(A,Et(e)),g=J(()=>w0(o,A),[o,A]);return J(()=>g.length!==0?g:p0(e,t),[g,e,t])},p0=(A,e)=>e.flatMap(t=>{if(t.freshness?.status==="done")return[];if(je(t))return[];if(ct(t)){let g=xr(t,A);return g?[Ni(g,t.project)]:[]}let o=eA(t.executed.start);return qA(o,A)?[Ni(t,t.project)]:[]}),w0=(A,e)=>{let t=[];for(let o of Rt(A)){if(at(o))continue;let g=om(o,e);g&&t.push(g)}return t};var rm=({event:A})=>{let e=J(()=>A.plan.start.hours+A.plan.start.minutes/60,[A.plan.start]),t=J(()=>--start: ${e}; --duration: ${A.plan.duration};,[e,A.plan.duration]),o=Vo(),g=J(()=>tm(A,o),[A,o]);return no(A)?E(In,{className:"event","data-status":g,style:t,title:A.title,project:A.project},A.name):E("div",{className:"event","data-status":g,title:A.name,style:t},A.name)};var Qm=({project:A,date:e,tasks:t})=>{let o=gm(A,e,t),g=J(()=>o.flatMap(Q=>no(Q)?[${Q.title}]:[]).join( ),[o]),r=Vo(),n=J(()=>qA(r,e)?E("div",{className:"indicator",style:--start: ${Aa(r)+ea(r)/60}}):E(W,null),[r,e]);return E("div",{className:"timeline",role:"gridcell"},o.map(Q=>E(rm,{key:Q.name,event:Q})),n,E(Po,{text:g}))};var Gi=({dateList:A,tasks:e,project:t,hasColumn:o})=>E("div",{className:"timeline-wrap",role:"grid"},(o??!0)&&E("div",{className:"column-header",role:"row"},A.map(g=>E("div",{key:Ae(g),className:"cell",role:"columnheader"},E("h2",null,Gr(g))))),E("div",{className:"week-container",role:"presentation"},E("div",{className:"week",role:"presentation"},E("div",{className:"borders"},[...Array(24).keys()].map(g=>E("div",{key:g,className:"border","data-time":${fe(g)}:00}))),A.map(g=>E(Qm,{key:Ae(g),project:t,date:g,tasks:e})))));var ki=(A,e,t)=>{let[o,g]=L(A),r=b(()=>g(e),[e]),n=b(()=>g(t),[e]),Q=b(B=>g(B),[]);return{pageNo:o,next:r,prev:n,jump:Q}};var nm=A=>{let e=kA(new Set),[t,o]=L(A),g=b(()=>{for(let C of e.current)C()},[]),r=b(()=>{o(!0),g()},[]),n=b(()=>o(!1),[]),Q=b(()=>o(C=>(C||g(),!C)),[]),B=b(C=>(e.current.add(C),()=>e.current.delete(C)),[]);return{isOpen:t,open:r,close:n,toggle:Q,onOpen:B}};var im=A=>{let e=document.createElement("div");e.dataset.userscriptName="takker-scheduler/weekly-scheduler";let t=e.attachShadow({mode:"open"});return document.body.append(e),new Promise(o=>GA(E(m0,{getController:o,projects:A,mainProject:A[0]}),t))},Im=(A,e)=>{let t=document.createElement("div");t.dataset.userscriptName="takker-scheduler/timeline-wedget";let o=t.attachShadow({mode:"open"});return document.body.append(t),new Promise(g=>GA(E(h0,{getController:g,projects:A,mainProject:A[0],open:e}),o))},Bm=!1,m0=({getController:A,projects:e,mainProject:t})=>{let{tasks:o,load:g,loading:r}=Hg(e),{pageNo:n,next:Q,prev:B,jump:C}=ki(zg(new Date),d0,u0),i=J(()=>{let D=Cn(n);return[0,1,2,3,4,5,6].map(m=>VA(D,m))},[n]),{open:I,close:s,Dialog:a,isOpen:c}=Bn();Bm||=c,Pg(A,{open:I,close:s,isOpen:c}),sn("page:changed",s);let l=b(()=>C(zg(new Date)),[C]);return E(W,null,E("style",null,Wg),E(a,null,E("div",{className:"controller"},E("span",null,n),E("button",{className:"navi left",onClick:B},""),E("button",{className:"navi right",onClick:Q},""),E("button",{className:"today",onClick:l},""),E(Kg,{loading:r,onClick:g}),E("button",{className:"close",onClick:s},"")),Bm&&E("div",{ref:sm,className:"result scheduler","data-page-no":n},E(Gi,{dateList:i,tasks:o,project:t}))))},Cm=!1,h0=({projects:A,mainProject:e,getController:t,open:o})=>{let{tasks:g,load:r,loading:n}=Hg(A),{pageNo:Q,next:B,prev:C,jump:i}=ki(new Date,f0,M0),I=J(()=>[Q],[Q]),s=b(()=>i(new Date),[i]),{isOpen:a,open:c,close:l}=nm(o);return Cm||=a,Pg(t,{open:c,close:l,isOpen:a}),E(W,null,E("style",null,Wg),Cm&&E("div",{className:wedget${a?" open":""},ref:sm},E("div",{className:"controller"},E("span",null,Ae(Q)),E("button",{className:"navi left",onClick:C},""),E("button",{className:"navi right",onClick:B},""),E("button",{className:"today",onClick:s},""),E(Kg,{loading:n,onClick:r})),E(Gi,{dateList:I,tasks:g,project:e,hasColumn:!1})))},d0=A=>zg(js(Cn(A),1)),u0=A=>zg(aa(Cn(A),1)),f0=A=>VA(A,1),M0=A=>We(A,1),sm=A=>{let e=A?.getElementsByClassName?.("indicator")?.[0];if(!e)return;let t=globalThis.scrollY;e.scrollIntoView({block:"center"}),globalThis.scroll(0,t)};pI({project:"takker-dist"});ls().then(A=>{scrapbox.PageMenu.addItem({title:"Fulltext Search",onClick:()=>{A.toggle()}})});var N0="https://scrapbox.io/files/666ac977264f7d001ce9d125.wasm",y0="/api/code/takker-dist/for-any-project-min/esbuild-worker.js";(async()=>{let A=new Request(N0),e=await Eo(A);e||(e=await fetch(A),await mr(A,e)),await nD(await WebAssembly.compileStreaming(e),y0)})();(async()=>{let A=[scrapbox.Project.name,"takker","takker-memex","takker-books","takker-private","villagepump","hub","arpla","unnamedcamp","unnamed-project","nishio","enchi","rashitamemo","motoso","shokai","masui","rakusai","yuiseki","akiroom","c4j","miyamonz","mrsekut-p","masuilab","kidaaam-92022284","nwtgck","juneboku","marshmallow-rm","sushitecture","sno2wman","inteltank","issac-37765679","blu3mo","yosider","Mijinko","Mijinko-other","scrapbox-drinkup","nota-techconf","customize","scrapboxlab","scrasobox","programming-notes","tus-alpine","tus-alpine-private","guiland"],e=await _D({projects:A,mark:{...Object.fromEntries([["takker","takker"],["takker-memex","takker"],["takker-books","takker-books"],["takker-private","takker-private"],["nishio","nishio"],["rashitamemo","rashita"],["enchi","雑談_2022-04-12~"],["rakusai","rakusai"],["masui","概要"],["shokai","shokai"],["yuiseki","yuiseki"],["akiroom","はじめに"],["inteltank","sawachin"],["motoso","もとそのもと"],["villagepump","井戸端"],["hub","scrapbox.io%2Fhub_について"],["masuilab","増井研に入ったらまずやること"],["marshmallow-rm","読書猿マシュマロ全質問回答"],["miyamonz","miyamonz"],["mrsekut-p","mrsekut"],["kidaaam-92022284","kidooom"],["c4j","Code_for_Japan"],["suto3","suto3"],["blu3mo","blu3mo"],["nwtgck","nwtgck"],["juneboku","juneboku"],["jigsaw","jgs"],["sno2wman","SnO2WMaN"],["sushitecture","hashrock"],["unnamedcamp","知を営む"],["unnamed-project","unnamed-project"],["issac-37765679","cFQ2f7LRuLYP"],["blu3mo","blu3mo"],["yosider","yosider"],["Mijinko","Mijinko_SD"],["Mijinko-other","Mijinko_SD"],["customize","みんなのカスタマイズ"],["scrapboxlab","入会手続き"],["scrasobox","Scrapboxとあそぶ"],["programming-notes","参加する"],["guiland","概要と参加方法"]].map(([g,r])=>[g,https://scrapbox.io/api/pages/${g}/${r}/icon])),"NDLSH-SB":"📚","scrapbox-drinkup":"https://scrapbox.io/assets/img/page-icon/scrapbox_beaver.png","nota-techconf":"https://i.gyazo.com/727f42bbd9e2534d99d70e6ea90705b3.jpg","plurality-japanese":"⿻"},enableSelfProjectOnStart:!0}),t=g=>{g.preventDefault(),g.stopPropagation()},o=()=>document.querySelector(".line .popup-menu")!==null;lB.bind({"<Tab>":g=>{o()||e.selectNext?.({cyclic:!0})&&t(g)},"<S-Tab>":g=>{o()||e.selectPrev?.({cyclic:!0})&&t(g)},"<Enter>":g=>{o()||e.confirm?.()&&t(g)},"<Esc>":g=>{o()||e.cancel?.()&&t(g)}})})();tp({previewers:[{when:/(?:^|\.)svg$/,preview:op},{when:/(?:^|\.)glsl$/,preview:xp},{when:/(?:^|\.)(?:plantuml|puml|pu)$/,preview:Zp},{when:/(?:^|\.)tikz\(tex\)$/,preview:Lp("/api/code/takker-dist/for-any-project-min/tex-worker.js","https://scrapbox.io/files/65d1645c19cd8e002433c3df")}]});(async()=>{let{toggle:A}=await Wp([]);scrapbox.PageMenu.addItem({title:"履歴スライダー",image:"https://1.bp.blogspot.com/-UZtkSEX0wh4/U5l5_dNcEsI/AAAAAAAAhWs/UzJGVzyiX8Y/s800/kaichu_dokei.png",onClick:A})})();Yw("takker",["takker","振り返り(takker-workflow@0.0.1)のtemplate","txt"],["takker","1週間の振り返り(takker-workflow@0.0.1)のtemplate","txt"]);ot()&&(de({display:{type:"caret-left"},onClick:({cursor:A,selection:e})=>{A.focus(),e.getSelectedText()===""?lr():sr()}}),de({display:{type:"caret-right"},onClick:({cursor:A,selection:e})=>{A.focus(),e.getSelectedText()===""?cr():Ir()}}),de({display:{type:"caret-up"},onClick:({cursor:A,selection:e})=>{A.focus(),e.getSelectedText()===""?Dr():ar()}}),de({display:{type:"caret-down"},onClick:({cursor:A,selection:e})=>{A.focus(),e.getSelectedText()===""?pr():Er()}}),de({display:{type:"copy"},onClick:async({cursor:A,selection:e})=>await xw(A,e)}),de({display:{type:"cut"},onClick:async({cursor:A,selection:e})=>await Jw(A,e)}),de({display:{type:"clipboard"},onClick:async({cursor:A})=>await Rw(A)}),de({display:{type:"undo"},onClick:()=>rs()}),de({display:{type:"redo"},onClick:()=>Qs()}),de({display:({cursor:A})=>A.getVisible()&&A.hasFocus&&A.visiblePopupMenu?{type:["i-cursor","slash"]}:{type:"i-cursor"},onClick:({cursor:A})=>Zw(A)}));if(ot()&&scrapbox.Project.name!=="takker-memex"){let A="task";scrapbox.PageMenu.addMenu({title:A,image:"https://img.icons8.com/ios/180/FFFFFF/todo-list--v2.png"}),scrapbox.PageMenu(A).addItem({title:"Book starting",image:"https://img.icons8.com/ios/180/FFFFFF/plus-1day.png",onClick:Lt}),scrapbox.PageMenu(A).addItem({title:"Transport",onClick:()=>St({from:{project:scrapbox.Project.name,title:scrapbox.Page.title},to:"takker-memex"})})}if(ot()){let A="New Page",e=[Wt,Xt,zt];scrapbox.PageMenu.addMenu({title:A,image:"https://img.icons8.com/ios/180/FFFFFF/cut-paper.png"}),scrapbox.PageMenu(A).addItem({title:"New Page",onClick:()=>{let t=window.prompt("Create a new page at",scrapbox.Project.name);t&&He({project:t,mode:"noopen",hooks:e})?.()}}),scrapbox.PageMenu(A).addItem({title:"New Page and Open",onClick:()=>{let t=window.prompt("Create a new page at",scrapbox.Project.name);t&&He({project:t,mode:"self",hooks:e})?.()}})}scrapbox.PageMenu.addMenu({title:"Add to inbox",image:"https://img.icons8.com/ios/180/FFFFFF/inbox.png",onClick:()=>Hw("takker-memex","メモ帳")});(async()=>{let A="next-action",e=head styledata-userscript-name="${A}";document.querySelector(e)?.remove?.();let t=document.createElement("style");t.dataset.userscriptName=A,t.textContent= position: absolute;
font: 900 20px/46px "Font Awesome 5 Free";
}
button#${A}.tool-btn::before {
content: "\\f0ae";
}
button#scheduler.tool-btn::before {
content: "\\f073";
font-weight: 400;
}
opacity: 0;
},document.head.append(t);let o=["takker-memex","takker"],{open:g}=await $w(o);scrapbox.PageMenu.addMenu({title:A,image:"/assets/img/favicon/apple-touch-icon.png",onClick:g});let r=await im(o);scrapbox.PageMenu.addMenu({title:"scheduler",image:"/assets/img/favicon/apple-touch-icon.png",onClick:r.open});{let n="takker-scheduler/wedget",Q=JSON.parse(localStorage.getItem(n)??"{}"),B=scrapbox.Project.name;Q[B]??=!1;let C=await Im(o,Q[B]),i=()=>{Q[B]=!C.isOpen,C.isOpen?C.close():C.open(),localStorage.setItem(n,JSON.stringify(Q))};ot()?de({display:{type:"calendar"},onClick:i}):scrapbox.PageMenu.addItem({title:"toggle wedget",onClick:i})}})();var am=A=>String(A).padStart(2,"0"),Em=A=>${A.getFullYear()}-${am(A.getMonth()+1)}-${am(A.getDate())};for(let A of document.getElementsByClassName("new-button")){let e=#${Em(new Date)};A.href=/${scrapbox.Project.name}/new?body=${encodeURIComponent(` +e)}}console.log('The hrefs of "New Button" have been changed.');scrapbox.PopupMenu.addButton({title:"",onClick:A=>{let e=Ho.parse(A,{hasTitle:!1});if(console.log("Parserd text:"),console.log(e),navigator.clipboard){let t=G0(e).join(`
);console.log(t),navigator.clipboard.writeText(t).catch(o=>console.log(o)),console.log("Copied.")}}});function G0(A){let e=Math.min(...A.map(g=>g.indent)),t=e,o=["<p>"];for(let g of A.filter(r=>r.type==="line")){let r=g.indent-t;r<0&&o.push(...[...Array(-r)].map(Q=>"</ul>")),r>0&&o.push(...[...Array(r)].map(Q=>'<ul style="margin-top: 5px;margin-bottom: 5px;">'));let n=g.nodes.map(Q=>cn(Q)).join("");g.indent>e?o.push(<li>${n}</li>):o.push(${n}<br/>),t=g.indent}return o.push(...[...Array(t-e)].map(g=>"</ul>")),o.push("</p>"),o}function cn(A){switch(A.type){case"quote":return<span style="
font-style: italic;
background-color: rgba(128,128,128,0.1);
display: block;
height: 1.3em;
vertical-align: top;" src="${e}" alt="${o}" /></a>;case"strongIcon":return"";case"formula":return\\( ${A.formula} \\);case"helpfeel":return"";case"decoration":let g=A.nodes.map(r=>cn(r)).join("");return A.decos.includes("*-4")&&(g=<h4>${g}</h4>),A.decos.includes("*-3")&&(g=<h5>${g}</h5>),A.decos.includes("*-2")&&(g=<h6>${g}</h6>),A.decos.includes("*-1")&&(g=<strong>${g}</strong>),A.decos.includes("/")&&(g=<i>${g}</i>),A.decos.includes("-")&&(g=<strike>${g}</strike>),A.decos.includes("!")&&(g=<pre>${g}</pre>),g;case"strong":return<strong>${A.nodes.map(r=>cn(r)).join("")}</strong>;case"code":return<code>${A.text}</code>;case"commandLine":case"googleMap":return"";case"blank":return<span>${A.text}</span>;case"link":switch(A.pathType){case"root":return<a target="_blank" href="https://scrapbox.io${A.href}">${A.href}</a>;case"relative":return<a target="_blank" href="https://scrapbox.io/${scrapbox.Project.name}/${A.href}">${A.href}</a>;case"absolute":return<a target="_blank" href="${A.href}">${A.content||A.href}</a>}case"hashTag":return<a href="https://scrapbox.io/${scrapbox.Project.name}/${A.href}">#${A.href}</a>;case"plain":return<span>${A.text}</span>}}scrapbox.PopupMenu.addButton({title:"",onClick:A=>{let e=window.open();e.document.write(<html> <body>
<textarea spellcheck="true">${A}</textarea>
</body>
</html>),e.document.close()}});scrapbox.PopupMenu.addButton({title:A=>{let e=A.replace(/[\r\n]/g,"").length,t=A.trim().split(/[\r\n\s]+/).length;return${e}c ${t}w},onClick:()=>null});if(ot()){let A="task";scrapbox.PageMenu.addMenu({title:A,image:"https://img.icons8.com/ios/180/FFFFFF/todo-list--v2.png"}),scrapbox.PageMenu.addMenu({title:"Toggle task",image:"https://img.icons8.com/ios/180/FFFFFF/repeat.png",onClick:BB}),scrapbox.PageMenu(A).addItem({title:"Add task",image:"https://img.icons8.com/ios/180/FFFFFF/plus-math.png",onClick:Bg}),scrapbox.PageMenu(A).addItem({title:"Start task",image:"https://img.icons8.com/ios/180/FFFFFF/start--v1.png",onClick:Zt}),scrapbox.PageMenu(A).addItem({title:"End task",image:"https://img.icons8.com/ios/180/FFFFFF/stop-squared.png",onClick:Xe}),scrapbox.PageMenu(A).addItem({title:"Posteriori end task",image:"https://img.icons8.com/ios/180/FFFFFF/end--v1.png",onClick:Cg}),scrapbox.PageMenu(A).addItem({title:"Book starting",image:"https://img.icons8.com/ios/180/FFFFFF/plus-1day.png",onClick:async()=>{let[e,t]=k0(),o=Ee().slice(e,t+1).map(g=>{let r=g.text,n=g.text.match(/\[([^\]]+)\]/)?.[1];if(!n)return r;let Q=le(n);if(!Q||!Q.ok)return r;let B=Q.value;if(B.freshness?.status==="done")return r;let C=Ht(B);return C.title=${n},C?gA(C):r}).join( );await ZA(e,t,o),await Lt()}}),scrapbox.PageMenu(A).addItem({title:"Walk a day",image:"https://img.icons8.com/ios/180/FFFFFF/plus-1day.png",onClick:()=>ig()}),scrapbox.PageMenu(A).addItem({title:"Move today",image:"https://img.icons8.com/ios/180/FFFFFF/date-to.png",onClick:()=>Ig()}),scrapbox.PageMenu(A).addItem({title:"Format",image:"https://img.icons8.com/ios/180/FFFFFF/sort-by-start-date.png",onClick:()=>ag(scrapbox.Project.name,scrapbox.Page.title)}),scrapbox.PageMenu(A).addItem({title:"Transport",onClick:()=>St({from:{project:scrapbox.Project.name,title:scrapbox.Page.title},to:"takker-memex"})}),scrapbox.PageMenu(A).addItem({title:"Sync",onClick:()=>window.open("https://script.google.com/macros/s/AKfycbyAgN8nmUXjVXL_tahDzVyyrMzFaI4CJVmIapk8G0GuxxVN-7oUbuDJOf31fP7SFjx9/exec")})}var k0=()=>{let{selectionRange:{start:A,end:e},selectedText:t,position:o}=EA();return t===""?[o.line,o.line]:A.line>e.line?[e.line,A.line]:[A.line,e.line]};var cm="scrapbox-episopass",ln=!1;scrapbox.PopupMenu.addButton({title:A=>ln?"remove EP":/https:\/\/scrapbox\.io\/files\/\w+\.html/.test(A)?"run EP":"",onClick:async A=>{if(document.getElementById(cm)?.remove(),ln){ln=!1;return}if(!/https:\/\/scrapbox\.io\/files\/\w+\.html/.test(A))return;let e=A.match(/https:\/\/scrapbox\.io(\/files\/\w+\.html)/)[1];try{let o=await(await fetch(e)).text();if(!o.includes("<title>EpisoPass</title>"))return;let g=new Blob([o],{type:"text/html"}),r=URL.createObjectURL(g);document.getElementsByClassName("cursor-line")[0].insertAdjacentHTML("beforeend",<iframe id="${cm}" src="${r}" width="800" height="400"></iframe>),ln=!0;return}catch(t){console.error("Failed to load an EpisoPass html: ",t)}}});var lm="takker-memex",Dm=async()=>{if(scrapbox.Project.name!==lm)return()=>{};let A=scrapbox.Project.pages;await new Promise(n=>{let Q=setInterval(()=>{if(A.length===0){A=scrapbox.Project.pages;return}clearInterval(Q),n()},2e3)});let e=new Date(2023,0,24),t=async()=>{let n=new Date,B=Nr({start:e,end:n}).filter(s=>{let a=Et(s),c=A.find(l=>l.title===a);return!c||!c.exists});if(B.length===0)return;let{render:C,dispose:i}=CA(),I;try{C({type:"spinner"},{type:"text",text:load tasks for ${B.length} diary pages});let s=new Map,a=new Set,c=B.map(D=>Ae(D));for(let{links:D,project:m}of await Lo(["takker","takker-memex"]))for(let N of D){let{title:u}=Uo(N),p=le(u);if(!p)continue;if(!p.ok){console.error(/${m}/${u}: ${p.value.name} ${p.value.message});continue}let h=z(u);if(!a.has(h)&&(a.add(h),p.value.freshness?.status!=="done"))for(let d of B){let k=Ht(p.value,d);if(!k)continue;let G=Ae(k.base);c.includes(G)&&(s.set(G,[...s.get(G)??[],k]),ct(p.value))}}I=await SA();let l=0;C({type:"spinner"},{type:"text",text:create 0/${B.length} diary pages...});for(let D of B){let m=Et(D),N=s.get(Ae(D))?.map?.(h=>gA(h))??[],u=#${_(D,"yyyy-MM-dd")},p=#${_(D,"yyyy-MM-dd HH:mm:ss")};await oA(lm,m,(h,{persistent:d})=>{if(d)return;let k=[...h.map(G=>G.text),...N];return k.some(G=>G.includes(u))?Tt(k):Tt([...k,p])},{socket:I}),l++,C({type:"spinner"},{type:"text",text:create ${l}/${B.length} diary pages...})}C({type:"check-circle"},{type:"text",text:created ${B.length} diary pages.}),e=n}catch(s){C({type:"exclamation-triangle"},{type:"text",text:s instanceof Error?${s.name} ${s.message}`:"Unknown error! (see developper console)"}),console.error(s)}finally{I&&await yA(I),await nA(1e3),i()}},o=t(),g=new Date,r=setInterval(()=>{let n=new Date;qA(g,n)||(g=n,o.then(()=>o=t()))},1e4);return()=>(clearTimeout(r),o)};Dm();export{de as addButton,bA as insertText,lB as scrapBindings}; /** @license
* esbuild-wasm@v0.21.5
*
* MIT License
*
* Copyright (c) 2020 Evan Wallace
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtd2Vic29ja2V0LzAuMi40L3R5cGVzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXdlYnNvY2tldC8wLjIuNC9zb2NrZXQudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtd2Vic29ja2V0LzAuMi40L21vZC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvd2Vic29ja2V0L3NvY2tldC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvb25wLzAuMC4xL21vZC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3QvdXRpbC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2lzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvcmVzdC9lcnJvci50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3QvcHJvZmlsZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3QvYXV0aC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3QvcHJvamVjdC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvd2Vic29ja2V0L2lkLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvYnJvd3Nlci93ZWJzb2NrZXQvZGlmZlRvQ2hhbmdlcy50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9ibG9jay9UaXRsZS50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9ibG9jay9Db2RlQmxvY2sudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svbm9kZS9jcmVhdG9yLnRzIiwgIi4uL2VzbWQvbnBtL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vQHByb2dmYXkrc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXIvc3JjL2Jsb2NrL25vZGUvUGxhaW5Ob2RlLnRzIiwgIi4uL2VzbWQvbnBtL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vQHByb2dmYXkrc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXIvc3JjL2Jsb2NrL25vZGUvUXVvdGVOb2RlLnRzIiwgIi4uL2VzbWQvbnBtL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vQHByb2dmYXkrc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXIvc3JjL2Jsb2NrL25vZGUvSGVscGZlZWxOb2RlLnRzIiwgIi4uL2VzbWQvbnBtL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vQHByb2dmYXkrc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXIvc3JjL2Jsb2NrL25vZGUvU3Ryb25nSW1hZ2VOb2RlLnRzIiwgIi4uL2VzbWQvbnBtL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vQHByb2dmYXkrc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXIvc3JjL2Jsb2NrL25vZGUvSWNvbk5vZGUudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svbm9kZS9TdHJvbmdJY29uTm9kZS50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9ibG9jay9ub2RlL1N0cm9uZ05vZGUudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svbm9kZS9Gb3JtdWxhTm9kZS50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9ibG9jay9ub2RlL0RlY29yYXRpb25Ob2RlLnRzIiwgIi4uL2VzbWQvbnBtL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vQHByb2dmYXkrc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXIvc3JjL2Jsb2NrL25vZGUvQ29kZU5vZGUudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svbm9kZS9Db21tYW5kTGluZU5vZGUudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svbm9kZS9CbGFua05vZGUudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svbm9kZS9JbWFnZU5vZGUudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svbm9kZS9FeHRlcm5hbExpbmtOb2RlLnRzIiwgIi4uL2VzbWQvbnBtL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vQHByb2dmYXkrc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXIvc3JjL2Jsb2NrL25vZGUvR29vZ2xlTWFwTm9kZS50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9ibG9jay9ub2RlL0ludGVybmFsTGlua05vZGUudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svbm9kZS9IYXNoVGFnTm9kZS50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9ibG9jay9ub2RlL051bWJlckxpc3ROb2RlLnRzIiwgIi4uL2VzbWQvbnBtL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vQHByb2dmYXkrc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXIvc3JjL2Jsb2NrL25vZGUvaW5kZXgudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svVGFibGUudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svTGluZS50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9ibG9jay9pbmRleC50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9ibG9jay9Sb3cudHMiLCAiLi4vZXNtZC9ucG0vQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDkuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS9AcHJvZ2ZheStzY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlci9zcmMvYmxvY2svUGFjay50cyIsICIuLi9lc21kL25wbS9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJAOS4wLjAvbm9kZV9tb2R1bGVzLy5wbnBtL0Bwcm9nZmF5K3NjcmFwYm94LXBhcnNlckA5LjAuMC9ub2RlX21vZHVsZXMvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyL3NyYy9wYXJzZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3RpdGxlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvcGFyc2VyL3lvdXR1YmUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL3dlYnNvY2tldC9maW5kTWV0YWRhdGEudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL3dlYnNvY2tldC9pc1NhbWVBcnJheS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvd2Vic29ja2V0L21ha2VDaGFuZ2VzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvcmVzdC9wYWdlcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvd2Vic29ja2V0L3B1bGwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9zbGVlcC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvd2Vic29ja2V0L3B1c2gudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL3dlYnNvY2tldC9zdWdnZXN0VW5EdXBUaXRsZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvd2Vic29ja2V0L3BhdGNoLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvYnJvd3Nlci93ZWJzb2NrZXQvZGVsZXRlUGFnZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3QvdGFibGUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9yZXN0L3JlcGxhY2VMaW5rcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3QvbGluay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3Qvc2VhcmNoLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvcmVzdC9nZXRXZWJQYWdlVGl0bGUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9yZXN0L2dldFR3ZWV0SW5mby50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3QvZ2V0R3lhem9Ub2tlbi50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3Jlc3QvZ2V0Q29kZUJsb2NrLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE2MC4wL2VuY29kaW5nL2hleC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xNjAuMC9oYXNoL21kNS50cyM9IiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvcmVzdC91cGxvYWRUb0dDUy50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9zY3JhcGJveC13YXRjaGxpc3Qtc3luYy9zY3JpcHQudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvT3Blbl9HeWF6b19wYWdlX21lbnUvc2NyaXB0LmpzIiwgIi4uL2VzbWQvbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuMjMuMS9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jb25zdGFudHMuanMiLCAiLi4vZXNtZC9ucG0vcHJlYWN0QDEwLjIzLjEvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL3V0aWwuanMiLCAiLi4vZXNtZC9ucG0vcHJlYWN0QDEwLjIzLjEvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL29wdGlvbnMuanMiLCAiLi4vZXNtZC9ucG0vcHJlYWN0QDEwLjIzLjEvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2NyZWF0ZS1lbGVtZW50LmpzIiwgIi4uL2VzbWQvbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuMjMuMS9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jb21wb25lbnQuanMiLCAiLi4vZXNtZC9ucG0vcHJlYWN0QDEwLjIzLjEvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2RpZmYvcHJvcHMuanMiLCAiLi4vZXNtZC9ucG0vcHJlYWN0QDEwLjIzLjEvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2NyZWF0ZS1jb250ZXh0LmpzIiwgIi4uL2VzbWQvbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuMjMuMS9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9kaWZmL2NoaWxkcmVuLmpzIiwgIi4uL2VzbWQvbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuMjMuMS9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9kaWZmL2luZGV4LmpzIiwgIi4uL2VzbWQvbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuMjMuMS9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9yZW5kZXIuanMiLCAiLi4vZXNtZC9ucG0vcHJlYWN0QDEwLjIzLjEvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2Nsb25lLWVsZW1lbnQuanMiLCAiLi4vZXNtZC9ucG0vcHJlYWN0QDEwLjIzLjEvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2RpZmYvY2F0Y2gtZXJyb3IuanMiLCAiLi4vZXNtZC9ucG0vcHJlYWN0QDEwLjIzLjEvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC4yMy4xL25vZGVfbW9kdWxlcy9wcmVhY3QvaG9va3Mvc3JjL2luZGV4LmpzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvZW5zdXJlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvYnJvd3Nlci9kb20vZ2V0Q2FjaGVkTGluZXMudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL2RvbS9lbnN1cmUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL2RvbS9kb20udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL2RvbS90YWtlSW50ZXJuYWxMaW5lcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3RleHQudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL2RvbS9ub2RlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvYnJvd3Nlci9kb20vcHJlc3MudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL2RvbS9jbGljay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL2NhcmV0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvYnJvd3Nlci9kb20vaXNIZWlnaHRWaWV3YWJsZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3JhbmdlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvYnJvd3Nlci9kb20vbW90aW9uLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvYnJvd3Nlci9kb20vZWRpdC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL3N0YXR1c0Jhci50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL3B1c2hQYWdlVHJhbnNpdGlvbi50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL29wZW4udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkLzAuMjcuMS9icm93c2VyL2RvbS9jYWNoZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL3N0b3Jlcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL2N1cnNvci50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL3NlbGVjdGlvbi50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL19pbnRlcm5hbC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL2Jyb3dzZXIvZG9tL3RleHRJbnB1dEV2ZW50TGlzdGVuZXIudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LWluY3JlbWVudGFsLWZ1bGx0ZXh0LXNlYXJjaC1mb3JtLzAuMS4wL2VzY2FwZVJlZ0V4cC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtaW5jcmVtZW50YWwtZnVsbHRleHQtc2VhcmNoLWZvcm0vMC4xLjAvQ2FyZC50c3giLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LWluY3JlbWVudGFsLWZ1bGx0ZXh0LXNlYXJjaC1mb3JtLzAuMS4wL3VzZU9wZW4udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LWluY3JlbWVudGFsLWZ1bGx0ZXh0LXNlYXJjaC1mb3JtLzAuMS4wL3VzZVNlYXJjaC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtaW5jcmVtZW50YWwtZnVsbHRleHQtc2VhcmNoLWZvcm0vMC4xLjAvQ1NTLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtaW5jcmVtZW50YWwtZnVsbHRleHQtc2VhcmNoLWZvcm0vMC4xLjAvQXBwLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtaW5jcmVtZW50YWwtZnVsbHRleHQtc2VhcmNoLWZvcm0vMC4xLjAvbW9kLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdmltLWxpa2Uta2V5LW5vdGF0aW9uLzAuMS4xL21vZC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvZGVidWctanMvMC4xLjAvbW9kLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJpbmRpbmdzLzAuMy4yL21vZC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3BhcnNlci92aW1lby50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3BhcnNlci9zcG90aWZ5LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC8wLjI3LjEvcGFyc2VyL2FuY2hvci1mbS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvMC4yNy4xL3BhcnNlQWJzb2x1dGVMaW5rLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9jdXN0b20tbmV3LXBhZ2UvMC41LjAvc2VsZWN0aW9uLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9jdXN0b20tbmV3LXBhZ2UvMC41LjAvaG9vay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvY3VzdG9tLW5ldy1wYWdlLzAuNS4wL21vZC50cyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL2RlZmF1bHRPcHRpb25zLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N0YXJ0T2ZXZWVrLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zdGFydE9mRGF5Lm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lYWNoRGF5T2ZJbnRlcnZhbC5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9pc0RhdGUubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2lzVmFsaWQubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvX2xpYi9hZGRMZWFkaW5nWmVyb3MubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvX2xpYi9mb3JtYXQvbGlnaHRGb3JtYXR0ZXJzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2xpZ2h0Rm9ybWF0Lm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb25zdHJ1Y3RGcm9tLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2FkZERheXMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkRGF5cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zdWJEYXlzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb25zdHJ1Y3RGcm9tLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2FkZE1pbGxpc2Vjb25kcy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGRTZWNvbmRzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb25zdHJ1Y3RGcm9tLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2FkZERheXMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkV2Vla3MubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldERhdGUubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvY29uc3RhbnRzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL2RlZmF1bHRPcHRpb25zLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N0YXJ0T2ZXZWVrLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZ2V0V2Vla1llYXIubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3RhcnRPZldlZWtZZWFyLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldFdlZWsubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldE1vbnRoLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9nZXRZZWFyLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zdGFydE9mRGF5Lm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2lzU2FtZURheS5tanMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvZ2V0RWFjaExhdGVzdERhdGUvbW9kLnRzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkRGF5cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGRNb250aHMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb25zdHJ1Y3RGcm9tLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2FkZE1pbGxpc2Vjb25kcy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb25zdGFudHMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkSG91cnMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkTWlsbGlzZWNvbmRzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0YW50cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGRNaW51dGVzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb21wYXJlQXNjLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0YW50cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy90b0RhdGUubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3RhcnRPZkRheS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9kaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL2dldFJvdW5kaW5nTWV0aG9kLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0YW50cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy90b0RhdGUubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2RpZmZlcmVuY2VJbk1pbnV0ZXMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkRGF5cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGRXZWVrcy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL2RlZmF1bHRPcHRpb25zLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N0YXJ0T2ZXZWVrLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VhY2hXZWVrT2ZJbnRlcnZhbC5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy90b0RhdGUubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZW5kT2ZEYXkubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldEhvdXJzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9nZXRNaW51dGVzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL19saWIvZGVmYXVsdE9wdGlvbnMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3RhcnRPZldlZWsubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZ2V0V2Vla1llYXIubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkRGF5cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGRNb250aHMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0YW50cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zdGFydE9mRGF5Lm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZGlmZmVyZW5jZUluRGF5cy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL2dldFJvdW5kaW5nTWV0aG9kLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2RpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9kaWZmZXJlbmNlSW5Ib3Vycy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9kaWZmZXJlbmNlSW5NaW51dGVzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbXBhcmVBc2MubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZW5kT2ZEYXkubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZW5kT2ZNb250aC5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9pc0xhc3REYXlPZk1vbnRoLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2RpZmZlcmVuY2VJbk1vbnRocy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9kaWZmZXJlbmNlSW5TZWNvbmRzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2RpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZGlmZmVyZW5jZUluWWVhcnMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvaW50ZXJ2YWxUb0R1cmF0aW9uLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9pc0FmdGVyLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2lzRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy90b0RhdGUubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvaXNWYWxpZC5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb25zdHJ1Y3RGcm9tLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9nZXREYXlzSW5Nb250aC5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zZXRNb250aC5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zZXQubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvY29uc3RhbnRzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL2RlZmF1bHRPcHRpb25zLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N0YXJ0T2ZXZWVrLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZ2V0V2Vla1llYXIubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3RhcnRPZldlZWtZZWFyLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldFdlZWsubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc2V0V2Vlay5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy90b0RhdGUubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvY29uc3RydWN0RnJvbS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGRNaWxsaXNlY29uZHMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvY29uc3RhbnRzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2FkZE1pbnV0ZXMubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3ViTWludXRlcy5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy90b0RhdGUubWpzIiwgIi4uL2VzbWQvbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy8ucG5wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvY29uc3RydWN0RnJvbS5tanMiLCAiLi4vZXNtZC9ucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzLy5wbnBtL2RhdGUtZm5zQDMuNi4wL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGREYXlzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2FkZFdlZWtzLm1qcyIsICIuLi9lc21kL25wbS9kYXRlLWZuc0AzLjYuMC9ub2RlX21vZHVsZXMvLnBucG0vZGF0ZS1mbnNAMy42LjAvbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N1YldlZWtzLm1qcyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvdXRpbHMudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3Rhc2sudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL2NvbW1hbmRzL2FkZFRhc2sudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL2NvbW1hbmRzL3N0YXJ0VGFzay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvY29tbWFuZHMvZW5kVGFzay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvY29tbWFuZHMvdG9nZ2xlVGFzay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvY29tbWFuZHMvcG9zdGVyaW9yaUVuZFRhc2sudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL2NvbW1hbmRzL2dldExpbmVSYW5nZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvY2FsY1N0YXJ0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy9wYXJzZVNwZWNpZmllci50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvY29tbWFuZHMvY3JlYXRlVGFzay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvY29tbWFuZHMvbW9kaWZ5VGFza3MudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL2NvbW1hbmRzL3dhbGtEYXkudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL2NvbW1hbmRzL21vdmVUb2RheS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvZGlhcnkudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL2NvbW1hbmRzL2Zvcm1hdC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvcHVzaFRhc2tzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy9jb21tYW5kcy90cmFuc3BvcnQudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3plcm8udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL2hvd20vbG9jYWxEYXRlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy9ob3dtL3JlY3VycmVuY2UudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL2hvd20vc3RhdHVzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy9ob3dtL3BhcnNlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy9ob3dtL3RvVGFza0xpbmUudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvZm9yLWN1c3RvbS1uZXctcGFnZS9tb2QudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvdGFra2VyOTklMkZTY3JhcEJpbmRpbmdzLXNldHRpbmdzL3Rhc2stY29tbW9uLnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3Rha2tlcjk5JTJGU2NyYXBCaW5kaW5ncy1zZXR0aW5ncy90YXNrLnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3Rha2tlcjk5JTJGU2NyYXBCaW5kaW5ncy1zZXR0aW5ncy9jb25maWcudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvZm9yLWFueS1wcm9qZWN0L2JpbmRpbmdzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS93YXRjaExpc3QudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LWthdGV4LXByZXZpZXdlci8wLjMuMi9kZXBzL2thdGV4LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1rYXRleC1wcmV2aWV3ZXIvMC4zLjIvdXNlS2FUZVgudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlLzAuOS41L3Rocm90dGxlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9jYWNoZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvZXZlbnRFbWl0dGVyLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9kZWJ1Zy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvdXNlUHJvamVjdC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvZGVwcy9zY3JhcGJveC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvdXNlVGhlbWUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlLzAuOS41L3N0YXlIb3ZlcmluZy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvcG9zaXRpb24udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlLzAuOS41L0NhcmQudHN4IiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9pZC50cyIsICIuLi9lc21kL25wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDEwLjEuMS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL3V0aWxzL2Vudi50cyIsICIuLi9lc21kL25wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDEwLjEuMS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL3V0aWxzL2Vycm9ycy50cyIsICIuLi9lc21kL25wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDEwLjEuMS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL3V0aWxzL2NvbW1vbi50cyIsICIuLi9lc21kL25wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDEwLjEuMS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL3V0aWxzL3BsdWdpbnMudHMiLCAiLi4vZXNtZC9ucG0vaW1tZXJAMTAuMS4xL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy9jb3JlL3Njb3BlLnRzIiwgIi4uL2VzbWQvbnBtL2ltbWVyQDEwLjEuMS9ub2RlX21vZHVsZXMvLnBucG0vaW1tZXJAMTAuMS4xL25vZGVfbW9kdWxlcy9pbW1lci9zcmMvY29yZS9maW5hbGl6ZS50cyIsICIuLi9lc21kL25wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDEwLjEuMS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL2NvcmUvcHJveHkudHMiLCAiLi4vZXNtZC9ucG0vaW1tZXJAMTAuMS4xL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy9jb3JlL2ltbWVyQ2xhc3MudHMiLCAiLi4vZXNtZC9ucG0vaW1tZXJAMTAuMS4xL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy9jb3JlL2N1cnJlbnQudHMiLCAiLi4vZXNtZC9ucG0vaW1tZXJAMTAuMS4xL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy9wbHVnaW5zL3BhdGNoZXMudHMiLCAiLi4vZXNtZC9ucG0vaW1tZXJAMTAuMS4xL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy9wbHVnaW5zL21hcHNldC50cyIsICIuLi9lc21kL25wbS9pbW1lckAxMC4xLjEvbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDEwLjEuMS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL2ltbWVyLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9kZXBzL2ltbWVyLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9zdG9yYWdlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9jb252ZXJ0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9idWJibGUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlLzAuOS41L3VzZUJ1YmJsZURhdGEudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlLzAuOS41L0NhcmRMaXN0LnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvcGFyc2VMaW5rLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9oYXNMaW5rLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9QYWdlLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvVGV4dEJ1YmJsZS50c3giLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlLzAuOS41L0J1YmJsZS50c3giLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlLzAuOS41L2RldGVjdFVSTC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvVXNlckNTUy50c3giLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwQnViYmxlLzAuOS41L2FwcC5taW4uY3NzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS91c2VCdWJibGVzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS91c2VFdmVudExpc3RlbmVyLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS8wLjkuNS9pcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvQXBwLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBCdWJibGUvMC45LjUvbW9kLnRzeCIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9mb3ItYW55LXByb2plY3Qvc2NyYXBCdWJibGUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwSnVweXRlci92MS43LjIvY29kZVRpdGxlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL2NvZGVGaWxlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9lc2J1aWxkLXdhc20tbm8tYmxvYi8wLjIxLjUvc3RkaW9fcHJvdG9jb2wudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L2VzYnVpbGQtd2FzbS1uby1ibG9iLzAuMjEuNS92ZXJzaW9uLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9lc2J1aWxkLXdhc20tbm8tYmxvYi8wLjIxLjUvY29tbW9uLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9lc2J1aWxkLXdhc20tbm8tYmxvYi8wLjIxLjUvbW9kLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL2RlcHMvZGVuby1tb2NrLmpzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIxMy4wL3BhdGgvX2NvbW1vbi9hc3NlcnRfcGF0aC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9wYXRoL3dpbmRvd3MvX3V0aWwudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvcGF0aC9fY29tbW9uL2Zyb21fZmlsZV91cmwudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvcGF0aC93aW5kb3dzL2Zyb21fZmlsZV91cmwudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvcGF0aC93aW5kb3dzL2lzX2Fic29sdXRlLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIxMy4wL2Fzc2VydC9hc3NlcnRpb25fZXJyb3IudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvYXNzZXJ0L2Fzc2VydC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9wYXRoL19jb21tb24vdG9fZmlsZV91cmwudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvcGF0aC93aW5kb3dzL3RvX2ZpbGVfdXJsLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIxMy4wL3BhdGgvcG9zaXgvX3V0aWwudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvcGF0aC9wb3NpeC9mcm9tX2ZpbGVfdXJsLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIxMy4wL3BhdGgvcG9zaXgvaXNfYWJzb2x1dGUudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvcGF0aC9wb3NpeC90b19maWxlX3VybC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9wYXRoL19vcy50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9wYXRoL2Zyb21fZmlsZV91cmwudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvcGF0aC90b19maWxlX3VybC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9mcy9lbnN1cmVfc3ltbGluay50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9mcy9leHBhbmRfZ2xvYi50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9mcy9tb3ZlLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIxMy4wL2ZzL2NvcHkudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjEzLjAvZnMvZW9sLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIxMy4wL2pzb25jL21vZC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9qc29uYy9wYXJzZS50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9lbmNvZGluZy9fdXRpbC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMTMuMC9lbmNvZGluZy9iYXNlMzIudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQveC9pbXBvcnRtYXBAMC4yLjEvX3V0aWwudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQveC9pbXBvcnRtYXBAMC4yLjEvbW9kLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE0MC4wL191dGlsL29zLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE0MC4wL3BhdGgvd2luMzIudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTQwLjAvcGF0aC9fdXRpbC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xNDAuMC9fdXRpbC9hc3NlcnQudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTQwLjAvcGF0aC9wb3NpeC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xNDAuMC9wYXRoL2dsb2IudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTQwLjAvcGF0aC9tb2QudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTQwLjAvZm10L2NvbG9ycy50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xNDAuMC9pby9idWZmZXIudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTQwLjAvc3RyZWFtcy9jb252ZXJzaW9uLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19jYWNoZUAwLjYuMi9saWIvZGVub19jYWNoZV9kaXIuZ2VuZXJhdGVkLmpzIiwgImh0dHBzOi8vZGVuby5sYW5kL3gvZXNidWlsZF9kZW5vX2xvYWRlckAwLjkuMC9zcmMvc2hhcmVkLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3gvZXNidWlsZF9kZW5vX2xvYWRlckAwLjkuMC9zcmMvcGx1Z2luX2Rlbm9fcmVzb2x2ZXIudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQveC9lc2J1aWxkX2Rlbm9fbG9hZGVyQDAuOS4wL3NyYy9sb2FkZXJfcG9ydGFibGUudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQveC9lc2J1aWxkX2Rlbm9fbG9hZGVyQDAuOS4wL3NyYy9wbHVnaW5fZGVub19sb2FkZXIudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwSnVweXRlci92MS43LjIvZGVwcy9lc2J1aWxkX2Rlbm9fbG9hZGVyLnRzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vaW50ZXJuYWwvZXJyb3JfbWVzc2FnZS5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9pbnRlcm5hbC9lcnJvcl9tZXNzYWdlLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L3Jlc3VsdC5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9hbmRfdGhlbi5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9hbmRfdGhlbl9hc3luYy5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9mbGF0dGVuLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L2Zyb21fcHJvbWlzZV9zZXR0bGVkX3Jlc3VsdC5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9pbnNwZWN0LmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L21hcC5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9tYXBfYXN5bmMuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9wbGFpbl9yZXN1bHQvbWFwX2Vyci5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9tYXBfZXJyX2FzeW5jLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L21hcF9vci5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9tYXBfb3JfYXN5bmMuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9wbGFpbl9yZXN1bHQvbWFwX29yX2Vsc2UuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9wbGFpbl9yZXN1bHQvbWFwX29yX2Vsc2VfYXN5bmMuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9wbGFpbl9yZXN1bHQvb3JfZWxzZS5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC9vcl9lbHNlX2FzeW5jLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L2ludGVybmFsL3Vud3JhcF9lcnJfb3IuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9wbGFpbl9yZXN1bHQvdW53cmFwX29yLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L3RvX251bGxhYmxlLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L3RvX3VuZGVmaW5hYmxlLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vbnVsbGFibGUvbnVsbGFibGUuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS91bmRlZmluYWJsZS91bmRlZmluYWJsZS5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC90cmFuc3Bvc2UuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9pbnRlcm5hbC9hc3NlcnQuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9wbGFpbl9yZXN1bHQvaW50ZXJuYWwvdW5rbm93bl9jYXVzYWxfY2Fycmllci5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL3BsYWluX3Jlc3VsdC90cnlfY2F0Y2guanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9wbGFpbl9yZXN1bHQvdHJ5X2NhdGNoX2FzeW5jLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L3Vud3JhcF9vcl9lbHNlLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L3Vud3JhcF9vcl9lbHNlX2FzeW5jLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L2ludGVybmFsL2NhdXNhbF9jYXJyaWVyLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vcGxhaW5fcmVzdWx0L3Vud3JhcF9vcl90aHJvdy5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL2ludGVybmFsL2Vycm9yX21lc3NhZ2UuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9tYXliZS9pbnRlcm5hbC9lcnJvcl9tZXNzYWdlLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vbWF5YmUvbWF5YmUuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9tYXliZS9hbmRfdGhlbi5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL2FuZF90aGVuX2FzeW5jLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vbWF5YmUvaW5zcGVjdC5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL21hcC5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL21hcF9hc3luYy5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL21hcF9vci5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL21hcF9vcl9hc3luYy5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL21hcF9vcl9lbHNlLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vbWF5YmUvbWFwX29yX2Vsc2VfYXN5bmMuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9wbGFpbl9yZXN1bHQvcmVzdWx0LmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vbWF5YmUvb2tfb3IuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9tYXliZS9va19vcl9lbHNlLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vbWF5YmUvb2tfb3JfZWxzZV9hc3luYy5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL29yX2Vsc2UuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9tYXliZS9vcl9lbHNlX2FzeW5jLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vbWF5YmUvdG9fbnVsbGFibGUuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9tYXliZS90b19wbGFpbl9yZXN1bHQuanMiLCAiLi4vZXNtZC9ucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy8ucG5wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzL29wdGlvbi10L2VzbS9tYXliZS90b191bmRlZmluYWJsZS5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL3Vud3JhcF9vci5qcyIsICIuLi9lc21kL25wbS9vcHRpb24tdEA0OS4xLjAvbm9kZV9tb2R1bGVzLy5wbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvb3B0aW9uLXQvZXNtL21heWJlL3Vud3JhcF9vcl9lbHNlLmpzIiwgIi4uL2VzbWQvbnBtL29wdGlvbi10QDQ5LjEuMC9ub2RlX21vZHVsZXMvLnBucG0vb3B0aW9uLXRANDkuMS4wL25vZGVfbW9kdWxlcy9vcHRpb24tdC9lc20vbWF5YmUvdW53cmFwX29yX2Vsc2VfYXN5bmMuanMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwSnVweXRlci92MS43LjIvaXNBbGxvd2VkQ29ubmVjdFNyYy50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9wYXRoL19jb21tb24vYXNzZXJ0X3BhdGgudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvcGF0aC9fY29tbW9uL2Jhc2VuYW1lLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3BhdGgvX2NvbW1vbi9zdHJpcF90cmFpbGluZ19zZXBhcmF0b3JzLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3BhdGgvd2luZG93cy9fdXRpbC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9wYXRoL19jb21tb24vZnJvbV9maWxlX3VybC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9wYXRoL3dpbmRvd3MvZnJvbV9maWxlX3VybC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9wYXRoL3dpbmRvd3MvaXNfYWJzb2x1dGUudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvcGF0aC9fY29tbW9uL3RvX2ZpbGVfdXJsLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3BhdGgvd2luZG93cy90b19maWxlX3VybC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9wYXRoL3Bvc2l4L191dGlsLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3BhdGgvcG9zaXgvYmFzZW5hbWUudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvcGF0aC9wb3NpeC9leHRuYW1lLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3BhdGgvcG9zaXgvZnJvbV9maWxlX3VybC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9wYXRoL3Bvc2l4L2lzX2Fic29sdXRlLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3BhdGgvcG9zaXgvdG9fZmlsZV91cmwudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvcGF0aC9fb3MudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvcGF0aC9mcm9tX2ZpbGVfdXJsLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3BhdGgvdG9fZmlsZV91cmwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwSnVweXRlci92MS43LjIvZXNidWlsZFJlc29sdXRpb24udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwSnVweXRlci92MS43LjIvZXh0cmFjdFNvdXJjZU1hcFVSTC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC91cmwvX3N0cmlwLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3VybC9iYXNlbmFtZS50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC91cmwvZXh0bmFtZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBKdXB5dGVyL3YxLjcuMi9sb2FkZXIudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvc2VtdmVyL19zaGFyZWQudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvc2VtdmVyL2NvbXBhcmUudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvc2VtdmVyL2NvbnN0YW50cy50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9zZW12ZXIvZm9ybWF0LnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3NlbXZlci9fdGVzdF9jb21wYXJhdG9yX3NldC50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9zZW12ZXIvc2F0aXNmaWVzLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3NlbXZlci9ncmVhdGVyX3RoYW4udHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvc2VtdmVyL21heF9zYXRpc2Z5aW5nLnRzIiwgImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjIyNC4wL3NlbXZlci9wYXJzZV9yYW5nZS50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9zZW12ZXIvcGFyc2UudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvc2VtdmVyL3RyeV9wYXJzZV9yYW5nZS50cyIsICJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4yMjQuMC9zZW12ZXIvdHJ5X3BhcnNlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL3JvYnVzdEZldGNoLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL2dldEpzclBhY2thZ2VNZXRhZGF0YS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBKdXB5dGVyL3YxLjcuMi9nZXRKc3JQYWNrYWdlVmVyc2lvbk1ldGFkYXRhLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL2dldE5wbVBhY2thZ2VNZXRhZGF0YS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBKdXB5dGVyL3YxLjcuMi9yZXNvbHZlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL3NwZWNpZmllcnMudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwSnVweXRlci92MS43LjIvdG9EYXRhVVJMLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL3JlbW90ZUxvYWRlci50cyIsICIuLi9lc21kL25wbS91cmxwYXR0ZXJuLXBvbHlmaWxsQDEwLjAuMC9ub2RlX21vZHVsZXMvLnBucG0vdXJscGF0dGVybi1wb2x5ZmlsbEAxMC4wLjAvbm9kZV9tb2R1bGVzL3VybHBhdHRlcm4tcG9seWZpbGwvZGlzdC91cmxwYXR0ZXJuLmpzIiwgIi4uL2VzbWQvbnBtL3VybHBhdHRlcm4tcG9seWZpbGxAMTAuMC4wL25vZGVfbW9kdWxlcy8ucG5wbS91cmxwYXR0ZXJuLXBvbHlmaWxsQDEwLjAuMC9ub2RlX21vZHVsZXMvdXJscGF0dGVybi1wb2x5ZmlsbC9pbmRleC5qcyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBKdXB5dGVyL3YxLjcuMi9idW5kbGUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwSnVweXRlci92MS43LjIvZXh0ZW5zaW9uLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL2NvbXBvbmVudHMvaWNvbnMudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwSnVweXRlci92MS43LjIvY29tcG9uZW50cy90b29sdGlwLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL2NvbXBvbmVudHMvc3RhdHVzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcEp1cHl0ZXIvdjEuNy4yL2NvbXBvbmVudHMvZXhlY0J1dHRvbi50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBKdXB5dGVyL3YxLjcuMi9jb21wb25lbnRzL2V4ZWNNZW51LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9kZW5vLWFzeW5jLXRocm90dGxlLzAuMi4wL3NsZWVwLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9kZW5vLWFzeW5jLXRocm90dGxlLzAuMi4wL21vZC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBKdXB5dGVyL3YxLjcuMi9hcHAudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC9DYW5kaWRhdGUudHN4IiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1zZWxlY3Qtc3VnZ2VzdGlvbi8wLjEwLjgvdXNlU2VsZWN0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1zZWxlY3Qtc3VnZ2VzdGlvbi8wLjEwLjgvdXNlUG9zaXRpb24udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC91c2VQcm9qZWN0RmlsdGVyLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1zZWxlY3Qtc3VnZ2VzdGlvbi8wLjEwLjgvdXNlT1MudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC9kZXRlY3RVUkwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC9Qcm9ncmVzcy50c3giLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC9Db21wbGV0aW9uLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc3RvcmFnZS8wLjEuNC9kZWJ1Zy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc3RvcmFnZS8wLjEuNC9saW5rLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1zdG9yYWdlLzAuMS40L2NvbnZlcnRMaW5rcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc3RvcmFnZS8wLjEuNC9yZW1vdGUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXN0b3JhZ2UvMC4xLjQvc3RhdHVzLnRzIiwgIi4uL2VzbWQvbnBtL2lkYkA4LjAuMC9ub2RlX21vZHVsZXMvLnBucG0vaWRiQDguMC4wL25vZGVfbW9kdWxlcy9pZGIvYnVpbGQvaW5kZXguanMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXN0b3JhZ2UvMC4xLjQvZGIudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXN0b3JhZ2UvMC4xLjQvc3Vic2NyaWJlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1zdG9yYWdlLzAuMS40L21vZC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L2RlcHMvc3RvcmFnZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L3VzZVNvdXJjZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L1VzZXJDU1MudHN4IiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1zZWxlY3Qtc3VnZ2VzdGlvbi8wLjEwLjgvQ1NTLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L2NyYXdsTGluay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L3JlZHVjZXIudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC91c2VDYWNoZWRMaW5lcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L3VzZUxpZmVjeWNsZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L3NvcnQudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC9iaXREUC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L3NlYXJjaC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L2NhbmNlbGFibGVTZWFyY2gudHMiLCAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMjI0LjAvYXN5bmMvZGVib3VuY2UudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC91c2VTZWFyY2gudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uLzAuMTAuOC91c2VFeHBvcnRzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1zZWxlY3Qtc3VnZ2VzdGlvbi8wLjEwLjgvQXBwLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb24vMC4xMC44L21vZC50c3giLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwUnVuLzAuNC4xL2NvZGVCbG9jay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBSdW4vMC40LjEvZGlmZi50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBSdW4vMC40LjEvcmVhZENvZGVCbG9ja3MudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwUnVuLzAuNC4xL2RlYm91bmNlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcFJ1bi8wLjQuMS92aWV3ZXIudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwUnVuLzAuNC4xL3NldHVwLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9kdmkyaHRtbC8wLjQuMi90b0RhdGFVUkwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwUnVuLzAuNC4xL3ByZXZpZXdlcnMvc3ZnLnRzIiwgIi4uL2VzbWQvbnBtL2dsb2JhbEA0LjQuMC9ub2RlX21vZHVsZXMvLnBucG0vZ2xvYmFsQDQuNC4wL25vZGVfbW9kdWxlcy9nbG9iYWwvd2luZG93LmpzIiwgIi4uL2VzbWQvbnBtL2dsb2JhbEA0LjQuMC9idWlsZC5qcyIsICIuLi9lc21kL25wbS9pcy1mdW5jdGlvbkAxLjAuMi9ub2RlX21vZHVsZXMvLnBucG0vaXMtZnVuY3Rpb25AMS4wLjIvbm9kZV9tb2R1bGVzL2lzLWZ1bmN0aW9uL2luZGV4LmpzIiwgIi4uL2VzbWQvbnBtL2lzLWZ1bmN0aW9uQDEuMC4yL2J1aWxkLmpzIiwgIi4uL2VzbWQvbnBtL3BhcnNlLWhlYWRlcnNAMi4wLjUvbm9kZV9tb2R1bGVzLy5wbnBtL3BhcnNlLWhlYWRlcnNAMi4wLjUvbm9kZV9tb2R1bGVzL3BhcnNlLWhlYWRlcnMvcGFyc2UtaGVhZGVycy5qcyIsICIuLi9lc21kL25wbS9wYXJzZS1oZWFkZXJzQDIuMC41L2J1aWxkLmpzIiwgIi4uL2VzbWQvbnBtL3h0ZW5kQDQuMC4yL25vZGVfbW9kdWxlcy8ucG5wbS94dGVuZEA0LjAuMi9ub2RlX21vZHVsZXMveHRlbmQvaW1tdXRhYmxlLmpzIiwgIi4uL2VzbWQvbnBtL3h0ZW5kQDQuMC4yL2J1aWxkLmpzIiwgIi4uL2VzbWQvbnBtL3hockAyLjYuMC9ub2RlX21vZHVsZXMvLnBucG0veGhyQDIuNi4wL25vZGVfbW9kdWxlcy94aHIvaW5kZXguanMiLCAiLi4vZXNtZC9ucG0veGhyQDIuNi4wL2J1aWxkLmpzIiwgIi4uL2VzbWQvbnBtL2dsc2xDYW52YXNAMC4yLjYvbm9kZV9tb2R1bGVzLy5wbnBtL2dsc2xDYW52YXNAMC4yLjZfbTNxN3ZzZHJmdHd6aGt3azNyanJ6bnF0amEvbm9kZV9tb2R1bGVzL2dsc2xDYW52YXMvZGlzdC9HbHNsQ2FudmFzLmVzLmpzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcFJ1bi8wLjQuMS9wcmV2aWV3ZXJzL2dsc2wudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwUnVuLzAuNC4xL3ByZXZpZXdlcnMvcGxhbnRVTUwvZW5jb2RlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcFJ1bi8wLjQuMS9wcmV2aWV3ZXJzL3BsYW50VU1ML3RvUGxhbnR1bWxVUkwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwUnVuLzAuNC4xL3ByZXZpZXdlcnMvcGxhbnRVTUwvbW9kLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcFJ1bi8wLjQuMS9wcmV2aWV3ZXJzL1Rpa1ovcmVuZGVyVG9TVkcudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L1NjcmFwUnVuLzAuNC4xL3ByZXZpZXdlcnMvVGlrWi9tb2QudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LWhpc3Rvcnktc2xpZGVyLzAuMi4xL3VzZUFzeW5jLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1oaXN0b3J5LXNsaWRlci8wLjIuMS9jb252ZXJ0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1oaXN0b3J5LXNsaWRlci8wLjIuMS9mZXRjaC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtaGlzdG9yeS1zbGlkZXIvMC4yLjEvQXBwLnRzeCIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9tb2JpbGUlRTclODklODhzY3JhcGJveCVFMyU4MSVBRSVFNSU4OCVBNCVFNSVBRSU5QS9zY3JpcHQuanMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L2FzeW5jLWxpYi8wLjIuMC9wb29sLnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFOCVBNCU4NyVFNiU5NSVCMCVFMyU4MSVBRSVFMyU4MyVBQSVFMyU4MyVCMyVFMyU4MiVBRiVFMyU4MiU5MiVFMyU4MSVCRSVFMyU4MSVBOCVFMyU4MiU4MSVFMyU4MSVBNiVFNyVCRCVBRSVFNiU4RiU5QiVFMyU4MSU5OSVFMyU4MiU4QlVzZXJTY3JpcHQvbW9kLnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3NjcmFwYm94LXBhcnNlci9tb2QudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvdW5saW5rX1BvcHVwX21lbnUvbW9kLnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3VubGlua19Qb3B1cF9tZW51L3NjcmlwdC50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTklOTUlQjclRTMlODElODQlRTMlODIlQkYlRTMlODIlQTQlRTMlODMlODglRTMlODMlQUIlRTMlODIlOTIlRTUlODglQkIlRTMlODIlODAlRTMlODMlOUElRTMlODMlQkMlRTMlODIlQjglRTMlODIlOTIlRTclQjAlQTElRTUlOEQlOTglRTMlODElQUIlRTQlQkQlOUMlRTMlODIlOEMlRTMlODIlOEJVc2VyU2NyaXB0L21haW4udHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUU5JTgxJUI4JUU2JThBJTlFJUU3JUFGJTg0JUU1JTlCJUIyJUUzJTgyJTkyTWFya2Rvd24lRTglQTglOTglRTYlQjMlOTUlRTMlODElQUIlRTUlQTQlODklRTYlOEYlOUIlRTMlODElOTclRTMlODElQTZjbGlwX2JvYXJkJUUzJTgxJUFCY29weSVFMyU4MSU5OSVFMyU4MiU4QlBvcHVwTWVudS9jb252ZXJ0LmpzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFOSU4MSVCOCVFNiU4QSU5RSVFNyVBRiU4NCVFNSU5QiVCMiVFMyU4MiU5Mk1hcmtkb3duJUU4JUE4JTk4JUU2JUIzJTk1JUUzJTgxJUFCJUU1JUE0JTg5JUU2JThGJTlCJUUzJTgxJTk3JUUzJTgxJUE2Y2xpcF9ib2FyZCVFMyU4MSVBQmNvcHklRTMlODElOTklRTMlODIlOEJQb3B1cE1lbnUvc2NyaXB0LmpzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11cmwtY3VzdG9taXplci8wLjQuMy9pcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXJsLWN1c3RvbWl6ZXIvMC40LjMvY29udmVydC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXJsLWN1c3RvbWl6ZXIvMC40LjMvZXJyb3IudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVybC1jdXN0b21pemVyLzAuNC4zL2ludGVybmFsL2dldFR3ZWV0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9kZW5vLWd5YXpvLzAuMi4wL3V0aWwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L2Rlbm8tZ3lhem8vMC4yLjAvZXJyb3IudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L2Rlbm8tZ3lhem8vMC4yLjAvdXBsb2FkLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11cmwtY3VzdG9taXplci8wLjQuMy9pbnRlcm5hbC91cGxvYWRWaWRlby50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXJsLWN1c3RvbWl6ZXIvMC40LjMvaW50ZXJuYWwvdXBsb2FkVHdpbWcudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVybC1jdXN0b21pemVyLzAuNC4zL2ludGVybmFsL3VuZXNjYXBlSFRNTC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXJsLWN1c3RvbWl6ZXIvMC40LjMvaW50ZXJuYWwvcHJvY2Vzc1R3ZWV0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11cmwtY3VzdG9taXplci8wLjQuMy9taWRkbGV3YXJlcy9jb252ZXJ0U2NyYXBib3hVUkwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVybC1jdXN0b21pemVyLzAuNC4zL21pZGRsZXdhcmVzL2Zvcm1hdFR3ZWV0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11cmwtY3VzdG9taXplci8wLjQuMy9pbnRlcm5hbC9leHBhbmRUd2l0dGVyU2hvcnRVUkwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVybC1jdXN0b21pemVyLzAuNC4zL21pZGRsZXdhcmVzL2V4cGFuZFNob3J0VVJMLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11cmwtY3VzdG9taXplci8wLjQuMy9taWRkbGV3YXJlcy9mb3JtYXRXaWtpcGVkaWEudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVybC1jdXN0b21pemVyLzAuNC4zL21pZGRsZXdhcmVzL3JlZGlyZWN0V2lraXdhbmQudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVybC1jdXN0b21pemVyLzAuNC4zL21pZGRsZXdhcmVzL3JlZGlyZWN0R29vZ2xlU2VhcmNoLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11cmwtY3VzdG9taXplci8wLjQuMy9pbnRlcm5hbC9nZXRXZWJQYWdlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC11cmwtY3VzdG9taXplci8wLjQuMy9taWRkbGV3YXJlcy9mb3JtYXRVUkwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVybC1jdXN0b21pemVyLzAuNC4zL21pZGRsZXdhcmVzL3Nob3J0ZW5BbWF6b25VUkwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXVybC1jdXN0b21pemVyLzAuNC4zL21pZGRsZXdhcmVzL2NvbnZlcnRHeWF6b1VSTC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtdXJsLWN1c3RvbWl6ZXIvMC40LjMvbW9kLnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL25pY290aHVtYjJpbWcvbWlkZGxld2FyZS50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTglQTQlODclRTYlOTUlQjAlRTglQTElOEMlRTMlODElQUIlRTYlODklOTMlRTMlODElQTElRTYlQjYlODglRTMlODElOTclRTclQjclOUElRTMlODIlOTIlRTUlQkMlOTUlRTMlODElOEZVc2VyU2NyaXB0L21vZC50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTglQTQlODclRTYlOTUlQjAlRTglQTElOEMlRTMlODElQUIlRTYlODklOTMlRTMlODElQTElRTYlQjYlODglRTMlODElOTclRTclQjclOUElRTMlODIlOTIlRTUlQkMlOTUlRTMlODElOEZQb3B1cCUyME1lbnVAMC4zLjAvc2NyaXB0LmpzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3JlcGxhY2VfdGV4dF9Vc2VyU2NyaXB0JUU1JTg2JThEJUU1JUFFJTlGJUU4JUEzJTg1JUU3JTg5JTg4L21vZC5qcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9yZXBsYWNlX3RleHRfVXNlclNjcmlwdCVFNSU4NiU4RCVFNSVBRSU5RiVFOCVBMyU4NSVFNyU4OSU4OC9zY3JpcHQuanMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUU4JUE0JTg3JUU2JTk1JUIwJUUzJTgxJUFFJUUzJTgzJUFBJUUzJTgzJUIzJUUzJTgyJUFGJUUzJTgyJTkyJUUzJTgxJUJFJUUzJTgxJUE4JUUzJTgyJTgxJUUzJTgxJUE2JUU3JUJEJUFFJUU2JThGJTlCJUUzJTgxJTk5JUUzJTgyJThCVXNlclNjcmlwdC9jb252ZXJ0ZXIudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUU4JUE0JTg3JUU2JTk1JUIwJUUzJTgxJUFFJUUzJTgzJUFBJUUzJTgzJUIzJUUzJTgyJUFGJUUzJTgyJTkyJUUzJTgxJUJFJUUzJTgxJUE4JUUzJTgyJTgxJUUzJTgxJUE2JUU3JUJEJUFFJUU2JThGJTlCJUUzJTgxJTk5JUUzJTgyJThCVXNlclNjcmlwdC9tYWluLnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL1Byb2plY3QlRTMlODIlOTIlRTYlQTglQUElRTYlOTYlQUQlRTMlODElOTclRTMlODElQTYlRTMlODMlQUElRTMlODMlQjMlRTMlODIlQUYlRTMlODIlOTIlRTclQkQlQUUlRTYlOEYlOUIlRTMlODElOTklRTMlODIlOEJVc2VyU2NyaXB0L21vZC50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTglQTQlODclRTYlOTUlQjAlRTMlODElQUUlRTMlODMlQUElRTMlODMlQjMlRTMlODIlQUYlRTMlODIlOTIlRTMlODElQkUlRTMlODElQTglRTMlODIlODElRTMlODElQTYlRTclQkQlQUUlRTYlOEYlOUIlRTMlODElOTklRTMlODIlOEJVc2VyU2NyaXB0L2V4YW1wbGUudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUU0JUI4JTgwJUU2JTk3JUE2JUU2JTk0JUI5JUU4JUExJThDJUUzJTgyJTkyJUU2JUI2JTg4JUUzJTgxJTk3JUUzJTgxJUE2JUU1JThGJUE1JUU3JTgyJUI5JUUzJTgxJUE3JUU2JTk0JUI5JUU4JUExJThDJUUzJTgxJTk3JUU3JTlCJUI0JUUzJTgxJTk5UG9wdXBNZW51L3NjcmlwdC5qcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTklODElQjglRTYlOEElOUUlRTMlODElOTclRTMlODElOUZHeWF6byVFMyU4MSVBRU9DUiVFMyU4MyU4NiVFMyU4MiVBRCVFMyU4MiVCOSVFMyU4MyU4OCVFMyU4MiU5MiVFMyU4MiVCMyVFMyU4MyU5NCVFMyU4MyVCQyVFMyU4MSU5OSVFMyU4MiU4QlVzZXJTY3JpcHQvcG9wdXBNZW51LmpzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFOSU4MSVCOCVFNiU4QSU5RSVFMyU4MSU5NyVFMyU4MSU5Rkd5YXpvJUU3JTk0JUJCJUU1JTgzJThGJUUzJTgxJUFFdHJpbW1pbmclRTMlODMlOUElRTMlODMlQkMlRTMlODIlQjglRTMlODIlOTIlRTklOTYlOEIlRTMlODElOEZQb3B1cF9NZW51L3NjcmlwdC5qcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9TY3JhcGJveCVFOCVBOCU5OCVFNiVCMyU5NSVFMyU4MiU5MlRlWCVFOCVBOCU5OCVFNiVCMyU5NSVFMyU4MSVBQiVFNSVBNCU4OSVFNiU4RiU5QiVFMyU4MSU5OSVFMyU4MiU4QlNjcmlwdC9tb2QudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvU2NyYXBib3glRTglQTglOTglRTYlQjMlOTUlRTMlODIlOTJUZVglRTglQTglOTglRTYlQjMlOTUlRTMlODElQUIlRTUlQTQlODklRTYlOEYlOUIlRTMlODElOTklRTMlODIlOEJQb3B1cE1lbnUvc2NyaXB0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1rZWljaG9ib3QvMC4xLjAvQVBJUk9PVC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gta2VpY2hvYm90LzAuMS4wL2Fzay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gta2VpY2hvYm90LzAuMS4wL3BvcHVwQmFyLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1rZWljaG9ib3QvMC4xLjAvZ2V0TmV3VGFsa0lkLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1rZWljaG9ib3QvMC4xLjAvbWFrZVNoYXJlVVJMLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1rZWljaG9ib3QvMC4xLjAvcXVlc3Rpb25Ub1NjcmFwYm94LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1rZWljaG9ib3QvMC4xLjAvd3JpdGVBZnRlci50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gta2VpY2hvYm90LzAuMS4wL21ha2VQbGFpbi50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gta2VpY2hvYm90LzAuMS4wL2lzQ29tbWVudC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gta2VpY2hvYm90LzAuMS4wL21vZC50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9wb3B1cC9zY3JpcHQudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L3RlbXBsYXRlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy9hdXRvLXJldmlldy50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9Qb3J0ZXIlRTMlODElQTMlRTMlODElQkQlRTMlODElODQlRTclQjclQTglRTklOUIlODYlRTMlODMlOTAlRTMlODMlQkMlRTMlODIlOTIlRTclOTQlOUYlRTMlODIlODQlRTMlODElOTlVc2VyU2NyaXB0QDEuMC4wL2l0ZW0udHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvUG9ydGVyJUUzJTgxJUEzJUUzJTgxJUJEJUUzJTgxJTg0JUU3JUI3JUE4JUU5JTlCJTg2JUUzJTgzJTkwJUUzJTgzJUJDJUUzJTgyJTkyJUU3JTk0JTlGJUUzJTgyJTg0JUUzJTgxJTk5VXNlclNjcmlwdEAxLjAuMC9idXR0b24udHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvUG9ydGVyJUUzJTgxJUEzJUUzJTgxJUJEJUUzJTgxJTg0JUU3JUI3JUE4JUU5JTlCJTg2JUUzJTgzJTkwJUUzJTgzJUJDJUUzJTgyJTkyJUU3JTk0JTlGJUUzJTgyJTg0JUUzJTgxJTk5VXNlclNjcmlwdEAxLjAuMC9zdGF0dXNCYXIudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvUG9ydGVyJUUzJTgxJUEzJUUzJTgxJUJEJUUzJTgxJTg0JUU3JUI3JUE4JUU5JTlCJTg2JUUzJTgzJTkwJUUzJTgzJUJDJUUzJTgyJTkyJUU3JTk0JTlGJUUzJTgyJTg0JUUzJTgxJTk5VXNlclNjcmlwdEAxLjAuMC9tb2QudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvUG9ydGVyJUUzJTgxJUEzJUUzJTgxJUJEJUUzJTgxJTg0JUU3JUI3JUE4JUU5JTlCJTg2JUUzJTgzJTkwJUUzJTgzJUJDJUUzJTgyJTkyJUU3JTk0JTlGJUUzJTgyJTg0JUUzJTgxJTk5VXNlclNjcmlwdEAxLjAuMC9jb21tYW5kcy50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9zY3JhcGJveC1lZGl0b3ItYmVnaW4tZWRpdC9zY3JpcHQudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvc2NyYXBib3gtZG9tLWFjY2Vzc29yL3NjcmlwdC5qcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9zbGVlcC9zY3JpcHQuanMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvc2NyYXBib3gtaW5zZXJ0LXRleHQtMi9zY3JpcHQuanMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvbW9iaWxlJUUzJTgxJThCJUUzJTgyJTg5dGltZXN0YW1wJUUzJTgyJTkyJUU4JUExJThDJUU5JUEwJUFEJUUzJTgxJUFCJUU2JThDJUJGJUU1JTg1JUE1JUUzJTgxJTk5JUUzJTgyJThCVXNlclNjcmlwdC9zY3JpcHQuanMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvS2FrZXJ1JUUzJTgyJTkyJUU5JTk2JThCJUUzJTgxJThGUGFnZV9NZW51L3NjcmlwdC5qcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTMlODMlOUElRTMlODMlQkMlRTMlODIlQjglRTMlODIlOTIlRTglQkIlQTIlRTklODAlODElRTMlODElOTklRTMlODIlOEJVc2VyU2NyaXB0L21vZC50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTMlODMlOUElRTMlODMlQkMlRTMlODIlQjglRTMlODIlOTIlRTglQkIlQTIlRTklODAlODElRTMlODElOTklRTMlODIlOEJVc2VyU2NyaXB0L3RyYW5zcG9ydFBhZ2UudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUUzJTgzJTlBJUUzJTgzJUJDJUUzJTgyJUI4JUUzJTgyJTkyJUU4JUJCJUEyJUU5JTgwJTgxJUUzJTgxJTk5JUUzJTgyJThCVXNlclNjcmlwdC9wYWdlTWVudS50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9JbmJveCVFMyU4MSVBQiVFNyVCNCVBMCVFNiU5NyVBOSVFMyU4MSU4RiVFNSU4NSVBNSVFMyU4MiU4QyVFMyU4MiU4QlVzZXJTY3JpcHQvdXRpbC50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9JbmJveCVFMyU4MSVBQiVFNyVCNCVBMCVFNiU5NyVBOSVFMyU4MSU4RiVFNSU4NSVBNSVFMyU4MiU4QyVFMyU4MiU4QlVzZXJTY3JpcHQvYWRkVG9JbmJveC50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9JbmJveCVFMyU4MSVBQiVFNyVCNCVBMCVFNiU5NyVBOSVFMyU4MSU4RiVFNSU4NSVBNSVFMyU4MiU4QyVFMyU4MiU4QlVzZXJTY3JpcHQvbW9kLnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3NjcmFwYm94LWljb24tYnV0dG9uL3NjcmlwdC5qcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9NYXJrZG93biVFNSVCRCVBMiVFNSVCQyU4RiVFMyU4MSVBNyVFMyU4MyU5QSVFMyU4MyVCQyVFMyU4MiVCOCVFMyU4MSVBRVVSTCVFMyU4MiU5MiVFMyU4MiVCMyVFMyU4MyU5NCVFMyU4MyVCQyVFMyU4MSU5OSVFMyU4MiU4QlBhZ2VNZW51L3NjcmlwdC5qcyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvd29ya2Zsb3cvdXNlVGFza0NyYXdsZXIudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L3VzZVN0b3BQcm9wYWdhdGlvbi50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvd29ya2Zsb3cvdXNlRGlhbG9nLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvd29ya2Zsb3cvdmlld2VyLm1pbi5jc3MudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L0NvcHkudHN4IiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy9ob3dtL2ZyZXNobmVzcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvaG93bS9zb3J0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy9rZXkudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L0xvYWRCdXR0b24udHN4IiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy91c2VNaW51dGVzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy90YXNrLXZpZXdlci90b1N0YXR1c0xhYmVsLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy9wYXRoLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy9TY3JhcGJveExpbmsudHN4IiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy90YXNrLXZpZXdlci9UYXNrSXRlbS50c3giLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L3Rhc2stdmlld2VyL3VzZU5hdmlnYXRpb24udHN4IiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy91c2VVc2VyU2NyaXB0RXZlbnQudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L3VzZUV4cG9ydHMudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L3Rhc2stdmlld2VyL21vZC50c3giLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L3VzZUxpbmVzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy9ob3dtL1BlcmlvZC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvd29ya2Zsb3cvc2NoZWR1bGVyL2V2ZW50LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy9zY2hlZHVsZXIvdXNlRXZlbnRzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS90YWtrZXItc2NoZWR1bGVyLzAuMTQuMy93b3JrZmxvdy93ZWVrbHktY2FsZW5kYXIvRXZlbnRJdGVtLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvd29ya2Zsb3cvd2Vla2x5LWNhbGVuZGFyL1RpbWVMaW5lLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvd29ya2Zsb3cvd2Vla2x5LWNhbGVuZGFyL1RpbWVHcmlkLnRzeCIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvd29ya2Zsb3cvc2NoZWR1bGVyL3VzZU5hdmlnYXRpb24udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L3VzZU9wZW4udHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvMC4xNC4zL3dvcmtmbG93L3dlZWtseS1jYWxlbmRhci9tb2QudHN4IiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL2Zvci1hbnktcHJvamVjdC9zY3JpcHQudHMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvU2NyYXBib3hfdGVtcGxhdGVfdXRpbGl0aWVzL3V0aWxpdGllcy5qcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9OZXdfQnV0dG9uJUUzJTgxJUE3JUU5JTk2JThCJUUzJTgxJThGJUUzJTgzJTlBJUUzJTgzJUJDJUUzJTgyJUI4JUUzJTgyJTkyJUU1JUE0JTg5JUU2JTlCJUI0JUUzJTgxJTk5JUUzJTgyJThCL3NjcmlwdC5qcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9MRVRVU19vbmxpbmVfZWRpdG9yJUU1JUJEJUEyJUU1JUJDJThGJUUzJTgxJUFCJUU1JUE0JTg5JUU2JThGJTlCJUUzJTgxJTk3JUUzJTgxJUE2Y29weSVFMyU4MSU5OSVFMyU4MiU4QlBvcHVwTWVudS9zY3JpcHQuanMiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUU5JTgxJUI4JUU2JThBJTlFJUU3JUFGJTg0JUU1JTlCJUIyJUUzJTgyJTkyc3BlbGxfY2hlY2slRTMlODElOTklRTMlODIlOEJQb3B1cE1lbnUvc2NyaXB0LmpzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFNiU5NiU4NyVFNSVBRCU5NyVFMyU4MiVBQiVFMyU4MiVBNiVFMyU4MyVCMyVFMyU4MyU4OF8oc2NyYXBib3gpL3NjcmlwdC5qcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci90YWtrZXI5OSUyRnRha2tlci1zY2hlZHVsZXIlMkZtb2JpbGUvc2NyaXB0LnRzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3NjcmFwYm94LW9wZW4tZXBpc29wYXNzL3NjcmlwdC5qcyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci8wLjE0LjMvd29ya2Zsb3cvYXV0by1kaWFyeS50cyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9pbXBvcnQvdGFra2VyLW1lbWV4LmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgdHlwZSBKb2luUm9vbVJlcXVlc3QgPVxuICB8IEpvaW5QYWdlUm9vbVJlcXVlc3RcbiAgfCBKb2luUHJvamVjdFJvb21SZXF1ZXN0XG4gIHwgSm9pblN0cmVhbVJvb21SZXF1ZXN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIEpvaW5Qcm9qZWN0Um9vbVJlcXVlc3Qge1xuICBwYWdlSWQ6IG51bGw7XG4gIHByb2plY3RJZDogc3RyaW5nO1xuICBwcm9qZWN0VXBkYXRlc1N0cmVhbTogZmFsc2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSm9pblBhZ2VSb29tUmVxdWVzdCB7XG4gIHBhZ2VJZDogc3RyaW5nO1xuICBwcm9qZWN0SWQ6IHN0cmluZztcbiAgcHJvamVjdFVwZGF0ZXNTdHJlYW06IGZhbHNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpvaW5TdHJlYW1Sb29tUmVxdWVzdCB7XG4gIHBhZ2VJZDogbnVsbDtcbiAgcHJvamVjdElkOiBzdHJpbmc7XG4gIHByb2plY3RVcGRhdGVzU3RyZWFtOiB0cnVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpvaW5Sb29tUmVzcG9uc2Uge1xuICBzdWNjZXNzOiB0cnVlO1xuICBwYWdlSWQ6IHN0cmluZyB8IG51bGw7XG4gIHByb2plY3RJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3RVcGRhdGVzU3RyZWFtQ29tbWl0IHtcbiAga2luZDogXCJwYWdlXCI7XG4gIGlkOiBzdHJpbmc7XG4gIHBhcmVudElkOiBzdHJpbmc7XG4gIHByb2plY3RJZDogc3RyaW5nO1xuICBwYWdlSWQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGNoYW5nZXM6XG4gICAgfCAoXG4gICAgICB8IEluc2VydENoYW5nZVxuICAgICAgfCBVcGRhdGVDaGFuZ2VcbiAgICAgIHwgRGVsZXRlQ2hhbmdlXG4gICAgICB8IFRpdGxlQ2hhbmdlXG4gICAgICB8IExpbmtzQ2hhbmdlXG4gICAgICB8IEljb25zQ2hhbmdlXG4gICAgKVtdXG4gICAgfCBbRGVsZXRlUGFnZUNoYW5nZV07XG4gIGN1cnNvcjogbnVsbDtcbiAgZnJlZXplOiB0cnVlO1xufVxuXG5leHBvcnQgdHlwZSBQcm9qZWN0VXBkYXRlc1N0cmVhbUV2ZW50ID1cbiAgfCBNZW1iZXJKb2luRXZlbnRcbiAgfCBJbnZpdGF0aW9uUmVzZXRFdmVudFxuICB8IFBhZ2VEZWxldGVFdmVudFxuICB8IEFkbWluQWRkRXZlbnRcbiAgfCBBZG1pbkRlbGV0ZUV2ZW50XG4gIHwgT3duZXJTZXRFdmVudDtcblxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0RXZlbnQge1xuICBpZDogc3RyaW5nO1xuICBwYWdlSWQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIHByb2plY3RJZDogc3RyaW5nO1xuICBjcmVhdGVkOiBudW1iZXI7XG4gIHVwZGF0ZWQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlRGVsZXRlRXZlbnQgZXh0ZW5kcyBQcm9qZWN0RXZlbnQge1xuICB0eXBlOiBcInBhZ2UuZGVsZXRlXCI7XG4gIGRhdGE6IHtcbiAgICB0aXRsZUxjOiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVtYmVySm9pbkV2ZW50IGV4dGVuZHMgUHJvamVjdEV2ZW50IHtcbiAgdHlwZTogXCJtZW1iZXIuam9pblwiO1xufVxuZXhwb3J0IGludGVyZmFjZSBJbnZpdGF0aW9uUmVzZXRFdmVudCBleHRlbmRzIFByb2plY3RFdmVudCB7XG4gIHR5cGU6IFwiaW52aXRhdGlvbi5yZXNldFwiO1xufVxuZXhwb3J0IGludGVyZmFjZSBBZG1pbkFkZEV2ZW50IGV4dGVuZHMgUHJvamVjdEV2ZW50IHtcbiAgdHlwZTogXCJhZG1pbi5hZGRcIjtcbiAgdGFyZ2V0VXNlcklkOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFkbWluRGVsZXRlRXZlbnQgZXh0ZW5kcyBQcm9qZWN0RXZlbnQge1xuICB0eXBlOiBcImFkbWluLmRlbGV0ZVwiO1xuICB0YXJnZXRVc2VySWQ6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgT3duZXJTZXRFdmVudCBleHRlbmRzIFByb2plY3RFdmVudCB7XG4gIHR5cGU6IFwib3duZXIuc2V0XCI7XG4gIHRhcmdldFVzZXJJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1pdE5vdGlmaWNhdGlvbiBleHRlbmRzIFBhZ2VDb21taXQge1xuICBpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VDb21taXQge1xuICBraW5kOiBcInBhZ2VcIjtcbiAgcGFyZW50SWQ6IHN0cmluZztcbiAgcHJvamVjdElkOiBzdHJpbmc7XG4gIHBhZ2VJZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgY2hhbmdlczogQ2hhbmdlW10gfCBbUGluQ2hhbmdlXSB8IFtEZWxldGVQYWdlQ2hhbmdlXTtcbiAgY3Vyc29yPzogbnVsbDtcbiAgZnJlZXplOiB0cnVlO1xufVxuZXhwb3J0IGludGVyZmFjZSBQYWdlQ29tbWl0UmVzcG9uc2Uge1xuICBjb21taXRJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTGlrZSB7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVbmV4cGVjdGVkRXJyb3Ige1xuICBuYW1lOiBcIlVuZXhwZWN0ZWRFcnJvclwiO1xuICB2YWx1ZTogdW5rbm93bjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVGltZW91dEVycm9yIHtcbiAgbmFtZTogXCJUaW1lb3V0RXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBQYWdlQ29tbWl0RXJyb3IgPVxuICB8IFNvY2tldElPRXJyb3JcbiAgfCBEdXBsaWNhdGVUaXRsZUVycm9yXG4gIHwgTm90RmFzdEZvcndhcmRFcnJvcjtcblxuLyogdGhlIGVycm9yIHRoYXQgb2NjdXJzIHdoZW4gdGhlIHNvY2tldC5pbyBjYXVzZXMgYW4gZXJyb3Jcbipcbiogd2hlbiB0aGlzIGVycm9yIG9jY3Vycywgd2FpdCBmb3IgYSB3aGlsZSBhbmQgcmV0cnkgdGhlIHJlcXVlc3RcbiovXG5leHBvcnQgaW50ZXJmYWNlIFNvY2tldElPRXJyb3Ige1xuICBuYW1lOiBcIlNvY2tldElPRXJyb3JcIjtcbn1cbi8qKiB0aGUgZXJyb3IgdGhhdCBvY2N1cnMgd2hlbiB0aGUgdGl0bGUgaXMgYWxyZWFkeSBpbiB1c2UgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRHVwbGljYXRlVGl0bGVFcnJvciB7XG4gIG5hbWU6IFwiRHVwbGljYXRlVGl0bGVFcnJvclwiO1xufVxuLyoqIHRoZSBlcnJvciBjYXVzZWQgd2hlbiBjb21taXRJZCBpcyBub3QgbGF0ZXN0ICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdEZhc3RGb3J3YXJkRXJyb3Ige1xuICBuYW1lOiBcIk5vdEZhc3RGb3J3YXJkRXJyb3JcIjtcbn1cblxuZXhwb3J0IGNvbnN0IGlzUGFnZUNvbW1pdEVycm9yID0gKGVycm9yOiBFcnJvckxpa2UpOiBlcnJvciBpcyBQYWdlQ29tbWl0RXJyb3IgPT5cbiAgcGFnZUNvbW1pdEVycm9yTmFtZXMuaW5jbHVkZXMoZXJyb3IubmFtZSk7XG5cbmNvbnN0IHBhZ2VDb21taXRFcnJvck5hbWVzID0gW1xuICBcIlNvY2tldElPRXJyb3JcIixcbiAgXCJEdXBsaWNhdGVUaXRsZUVycm9yXCIsXG4gIFwiTm90RmFzdEZvcndhcmRFcnJvclwiLFxuXTtcblxuZXhwb3J0IHR5cGUgUmVzdWx0PFQsIEUgPSB1bmtub3duPiA9XG4gIHwgeyBvazogdHJ1ZTsgdmFsdWU6IFQgfVxuICB8IHsgb2s6IGZhbHNlOyB2YWx1ZTogRSB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50TWFwIHtcbiAgXCJzb2NrZXQuaW8tcmVxdWVzdFwiOiAoXG4gICAgcmVxOiB7IG1ldGhvZDogXCJjb21taXRcIjsgZGF0YTogUGFnZUNvbW1pdCB9IHwge1xuICAgICAgbWV0aG9kOiBcInJvb206am9pblwiO1xuICAgICAgZGF0YTogSm9pblJvb21SZXF1ZXN0O1xuICAgIH0sXG4gICAgc3VjY2VzczogUGFnZUNvbW1pdFJlc3BvbnNlIHwgSm9pblJvb21SZXNwb25zZSxcbiAgICBmYWlsZWQ6IFBhZ2VDb21taXRFcnJvcixcbiAgKSA9PiB2b2lkO1xuICBjdXJzb3I6IChcbiAgICByZXE6IE9taXQ8TW92ZUN1cnNvckRhdGEsIFwic29ja2V0SWRcIj4sXG4gICAgc3VjY2VzczogdW5kZWZpbmVkLFxuICAgIGZhaWxlZDogdW5rbm93bixcbiAgKSA9PiB2b2lkO1xufVxuZXhwb3J0IGludGVyZmFjZSBMaXN0ZW5FdmVudE1hcCB7XG4gIFwicHJvamVjdFVwZGF0ZXNTdHJlYW06Y29tbWl0XCI6IFByb2plY3RVcGRhdGVzU3RyZWFtQ29tbWl0O1xuICBcInByb2plY3RVcGRhdGVzU3RyZWFtOmV2ZW50XCI6IFByb2plY3RVcGRhdGVzU3RyZWFtRXZlbnQ7XG4gIGNvbW1pdDogQ29tbWl0Tm90aWZpY2F0aW9uO1xuICBjdXJzb3I6IE1vdmVDdXJzb3JEYXRhO1xuICBcInF1aWNrLXNlYXJjaDpjb21taXRcIjogUXVpY2tTZWFyY2hDb21taXQ7XG4gIFwicXVpY2stc2VhcmNoOnJlcGxhY2UtbGlua1wiOiBRdWlja1NlYXJjaFJlcGxhY2VMaW5rO1xuICBcImluZm9ib3g6dXBkYXRpbmdcIjogYm9vbGVhbjtcbiAgXCJpbmZvYm94OnJlbG9hZFwiOiB2b2lkO1xuICBcImxpdGVyYWwtZGF0YWJhc2U6cmVsb2FkXCI6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVpY2tTZWFyY2hDb21taXQgZXh0ZW5kcyBPbWl0PENvbW1pdE5vdGlmaWNhdGlvbiwgXCJjaGFuZ2VzXCI+IHtcbiAgY2hhbmdlczpcbiAgICB8IChUaXRsZUNoYW5nZSB8IExpbmtzQ2hhbmdlIHwgRGVzY3JpcHRpb25zQ2hhbmdlIHwgSW1hZ2VDaGFuZ2UpW11cbiAgICB8IFtEZWxldGVQYWdlQ2hhbmdlXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWlja1NlYXJjaFJlcGxhY2VMaW5rIHtcbiAgZnJvbTogc3RyaW5nO1xuICB0bzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBEYXRhT2Y8RXZlbnQgZXh0ZW5kcyBrZXlvZiBFdmVudE1hcD4gPSBQYXJhbWV0ZXJzPFxuICBFdmVudE1hcFtFdmVudF1cbj5bMF07XG5leHBvcnQgdHlwZSBTdWNjZXNzUmVzT2Y8RXZlbnQgZXh0ZW5kcyBrZXlvZiBFdmVudE1hcD4gPSBQYXJhbWV0ZXJzPFxuICBFdmVudE1hcFtFdmVudF1cbj5bMV07XG5leHBvcnQgdHlwZSBGYWlsZWRSZXNPZjxFdmVudCBleHRlbmRzIGtleW9mIEV2ZW50TWFwPiA9IFBhcmFtZXRlcnM8XG4gIEV2ZW50TWFwW0V2ZW50XVxuPlsyXTtcblxuZXhwb3J0IGludGVyZmFjZSBNb3ZlQ3Vyc29yRGF0YSB7XG4gIHVzZXI6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICB9O1xuICBwYWdlSWQ6IHN0cmluZztcbiAgcG9zaXRpb246IHtcbiAgICBsaW5lOiBudW1iZXI7XG4gICAgY2hhcjogbnVtYmVyO1xuICB9O1xuICB2aXNpYmxlOiBib29sZWFuO1xuICBzb2NrZXRJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBDaGFuZ2UgPVxuICB8IEluc2VydENoYW5nZVxuICB8IFVwZGF0ZUNoYW5nZVxuICB8IERlbGV0ZUNoYW5nZVxuICB8IExpbmtzQ2hhbmdlXG4gIHwgUHJvamVjdExpbmtzQ2hhbmdlXG4gIHwgSWNvbnNDaGFuZ2VcbiAgfCBEZXNjcmlwdGlvbnNDaGFuZ2VcbiAgfCBJbWFnZUNoYW5nZVxuICB8IEZpbGVzQ2hhbmdlXG4gIHwgSGVscEZlZWxzQ2hhbmdlXG4gIHwgaW5mb2JveERlZmluaXRpb25DaGFuZ2VcbiAgfCBUaXRsZUNoYW5nZTtcbmV4cG9ydCBpbnRlcmZhY2UgSW5zZXJ0Q2hhbmdlIHtcbiAgX2luc2VydDogc3RyaW5nO1xuICBsaW5lczoge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdGV4dDogc3RyaW5nO1xuICB9O1xufVxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVDaGFuZ2Uge1xuICBfdXBkYXRlOiBzdHJpbmc7XG4gIGxpbmVzOiB7XG4gICAgdGV4dDogc3RyaW5nO1xuICB9O1xuICBub1RpbWVzdGFtcFVwZGF0ZT86IHVua25vd247XG59XG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZUNoYW5nZSB7XG4gIF9kZWxldGU6IHN0cmluZztcbiAgbGluZXM6IC0xO1xufVxuZXhwb3J0IGludGVyZmFjZSBMaW5rc0NoYW5nZSB7XG4gIGxpbmtzOiBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdExpbmtzQ2hhbmdlIHtcbiAgcHJvamVjdExpbmtzOiBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSWNvbnNDaGFuZ2Uge1xuICBpY29uczogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaXB0aW9uc0NoYW5nZSB7XG4gIGRlc2NyaXB0aW9uczogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIEltYWdlQ2hhbmdlIHtcbiAgaW1hZ2U6IHN0cmluZyB8IG51bGw7XG59XG5leHBvcnQgaW50ZXJmYWNlIFRpdGxlQ2hhbmdlIHtcbiAgdGl0bGU6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZXNDaGFuZ2Uge1xuICAvKiogZmlsZSBpZCAqL1xuICBmaWxlczogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIEhlbHBGZWVsc0NoYW5nZSB7XG4gIC8qKiBIZWxwZmVlbOiomOazleOBruWFiOmgreOBrmA/IGDjgpLjgajjgaPjgZ/jgoLjga4gKi9cbiAgaGVscGZlZWxzOiBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgaW5mb2JveERlZmluaXRpb25DaGFuZ2Uge1xuICAvKiogYHRhYmxlOmluZm9ib3hg44G+44Gf44GvYHRhYmxlOmNvc2Vuc2Vg44Gu5ZCE6KGM44KSdHJpbeOBl+OBn+OCguOBriAqL1xuICBpbmZvYm94RGVmaW5pdGlvbjogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIFBpbkNoYW5nZSB7XG4gIHBpbjogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBEZWxldGVQYWdlQ2hhbmdlIHtcbiAgZGVsZXRlZDogdHJ1ZTtcbiAgbWVyZ2VkPzogdHJ1ZTtcbn1cbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbmltcG9ydCB0eXBlIHtcbiAgTWFuYWdlcixcbiAgTWFuYWdlck9wdGlvbnMsXG4gIFNvY2tldCxcbiAgU29ja2V0T3B0aW9ucyxcbn0gZnJvbSBcIi4vdHlwZXMvc29ja2V0SU8vaW5kZXgudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFuYWdlciwgTWFuYWdlck9wdGlvbnMsIFNvY2tldCwgU29ja2V0T3B0aW9ucyB9O1xuXG5leHBvcnQgY29uc3Qgc29ja2V0SU8gPSBhc3luYyAoKTogUHJvbWlzZTxTb2NrZXQ+ID0+IHtcbiAgY29uc3QgaW8gPSBhd2FpdCBpbXBvcnRTb2NrZXRJTygpO1xuICBjb25zdCBzb2NrZXQgPSBpbyhcImh0dHBzOi8vc2NyYXBib3guaW9cIiwge1xuICAgIHJlY29ubmVjdGlvbkRlbGF5OiA1MDAwLFxuICAgIHRyYW5zcG9ydHM6IFtcIndlYnNvY2tldFwiXSxcbiAgfSk7XG5cbiAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IG9uRGlzY29ubmVjdCA9IChyZWFzb246IFNvY2tldC5EaXNjb25uZWN0UmVhc29uKSA9PiByZWplY3QocmVhc29uKTtcbiAgICBzb2NrZXQub25jZShcImNvbm5lY3RcIiwgKCkgPT4ge1xuICAgICAgc29ja2V0Lm9mZihcImRpc2Nvbm5lY3RcIiwgb25EaXNjb25uZWN0KTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgICBzb2NrZXQub25jZShcImRpc2Nvbm5lY3RcIiwgb25EaXNjb25uZWN0KTtcbiAgfSk7XG4gIHJldHVybiBzb2NrZXQ7XG59O1xuXG50eXBlIElPID0gKFxuICB1cmk6IHN0cmluZyxcbiAgb3B0cz86IFBhcnRpYWw8TWFuYWdlck9wdGlvbnMgJiBTb2NrZXRPcHRpb25zPixcbikgPT4gU29ja2V0O1xuZGVjbGFyZSBjb25zdCBpbzogSU8gfCB1bmRlZmluZWQ7XG5jb25zdCB2ZXJzaW9uID0gXCI0LjIuMFwiO1xuY29uc3QgdXJsID1cbiAgYGh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3NvY2tldC5pby8ke3ZlcnNpb259L3NvY2tldC5pby5taW4uanNgO1xubGV0IGVycm9yOiBzdHJpbmcgfCBFdmVudCB8IHVuZGVmaW5lZDtcblxuY29uc3QgaW1wb3J0U29ja2V0SU8gPSBhc3luYyAoKTogUHJvbWlzZTxJTz4gPT4ge1xuICBpZiAoZXJyb3IpIHRocm93IGVycm9yO1xuICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtzcmM9XCIke3VybH1cIl1gKSkge1xuICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gICAgc2NyaXB0LnNyYyA9IHVybDtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBzY3JpcHQub25sb2FkID0gKCkgPT4gcmVzb2x2ZSgpO1xuICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoZSkgPT4ge1xuICAgICAgICBlcnJvciA9IGU7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH07XG4gICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZChzY3JpcHQpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgaWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAoIWlvKSByZXR1cm47XG4gICAgICBjbGVhckludGVydmFsKGlkKTtcbiAgICAgIHJlc29sdmUoaW8pO1xuICAgIH0sIDUwMCk7XG4gIH0pO1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbmltcG9ydCB0eXBlIHsgU29ja2V0IH0gZnJvbSBcIi4vc29ja2V0LnRzXCI7XG5pbXBvcnQge1xuICBEYXRhT2YsXG4gIEV2ZW50TWFwLFxuICBGYWlsZWRSZXNPZixcbiAgaXNQYWdlQ29tbWl0RXJyb3IsXG4gIExpc3RlbkV2ZW50TWFwLFxuICBSZXN1bHQsXG4gIFN1Y2Nlc3NSZXNPZixcbiAgVGltZW91dEVycm9yLFxuICBVbmV4cGVjdGVkRXJyb3IsXG59IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc29ja2V0LnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ja2V0T3BlcmF0b3Ige1xuICByZXF1ZXN0OiA8RXZlbnROYW1lIGV4dGVuZHMga2V5b2YgRXZlbnRNYXA+KFxuICAgIGV2ZW50OiBFdmVudE5hbWUsXG4gICAgZGF0YTogRGF0YU9mPEV2ZW50TmFtZT4sXG4gICkgPT4gUHJvbWlzZTxcbiAgICBSZXN1bHQ8XG4gICAgICBTdWNjZXNzUmVzT2Y8RXZlbnROYW1lPixcbiAgICAgIEZhaWxlZFJlc09mPEV2ZW50TmFtZT4gfCBVbmV4cGVjdGVkRXJyb3IgfCBUaW1lb3V0RXJyb3JcbiAgICA+XG4gID47XG4gIHJlc3BvbnNlOiA8RXZlbnROYW1lIGV4dGVuZHMga2V5b2YgTGlzdGVuRXZlbnRNYXA+KFxuICAgIC4uLmV2ZW50czogRXZlbnROYW1lW11cbiAgKSA9PiBBc3luY0dlbmVyYXRvcjxMaXN0ZW5FdmVudE1hcFtFdmVudE5hbWVdLCB2b2lkLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGNvbnN0IHdyYXAgPSAoXG4gIHNvY2tldDogU29ja2V0LFxuICB0aW1lb3V0ID0gOTAwMDAsXG4pOiBTb2NrZXRPcGVyYXRvciA9PiB7XG4gIGNvbnN0IHJlcXVlc3QgPSA8RXZlbnROYW1lIGV4dGVuZHMga2V5b2YgRXZlbnRNYXA+KFxuICAgIGV2ZW50OiBFdmVudE5hbWUsXG4gICAgZGF0YTogRGF0YU9mPEV2ZW50TmFtZT4sXG4gICk6IFByb21pc2U8XG4gICAgUmVzdWx0PFxuICAgICAgU3VjY2Vzc1Jlc09mPEV2ZW50TmFtZT4sXG4gICAgICBGYWlsZWRSZXNPZjxFdmVudE5hbWU+IHwgVW5leHBlY3RlZEVycm9yIHwgVGltZW91dEVycm9yXG4gICAgPlxuICA+ID0+IHtcbiAgICBsZXQgaWQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgb25EaXNjb25uZWN0ID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQoaWQpO1xuICAgICAgICByZWplY3QobmV3IEVycm9yKG1lc3NhZ2UpKTtcbiAgICAgIH07XG4gICAgICBzb2NrZXQuZW1pdChcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIChyZXNwb25zZTogeyBkYXRhOiBTdWNjZXNzUmVzT2Y8RXZlbnROYW1lPiB9IHwgeyBlcnJvcjogdW5rbm93biB9KSA9PiB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KGlkKTtcbiAgICAgICAgICBzb2NrZXQub2ZmKFwiZGlzY29ubmVjdFwiLCBvbkRpc2Nvbm5lY3QpO1xuICAgICAgICAgIHN3aXRjaCAoZXZlbnQpIHtcbiAgICAgICAgICAgIGNhc2UgXCJzb2NrZXQuaW8tcmVxdWVzdFwiOlxuICAgICAgICAgICAgICBpZiAoXCJlcnJvclwiIGluIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgdHlwZW9mIHJlc3BvbnNlLmVycm9yID09PSBcIm9iamVjdFwiICYmIHJlc3BvbnNlLmVycm9yICYmXG4gICAgICAgICAgICAgICAgICBcIm5hbWVcIiBpbiByZXNwb25zZS5lcnJvciAmJlxuICAgICAgICAgICAgICAgICAgdHlwZW9mIHJlc3BvbnNlLmVycm9yLm5hbWUgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICAgIGlzUGFnZUNvbW1pdEVycm9yKHsgbmFtZTogcmVzcG9uc2UuZXJyb3IubmFtZSB9KVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7IG9rOiBmYWxzZSwgdmFsdWU6IHJlc3BvbnNlLmVycm9yIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogeyBuYW1lOiBcIlVuZXhwZWN0ZWRFcnJvclwiLCB2YWx1ZTogcmVzcG9uc2UuZXJyb3IgfSxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChcImRhdGFcIiBpbiByZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoeyBvazogdHJ1ZSwgdmFsdWU6IHJlc3BvbnNlLmRhdGEgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiY3Vyc29yXCI6XG4gICAgICAgICAgICAgIGlmIChcImVycm9yXCIgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiB7IG5hbWU6IFwiVW5leHBlY3RlZEVycm9yXCIsIHZhbHVlOiByZXNwb25zZS5lcnJvciB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKFwiZGF0YVwiIGluIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IG9rOiB0cnVlLCB2YWx1ZTogcmVzcG9uc2UuZGF0YSB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAnSW52YWxpZCByZXNwb25zZTogbWlzc2luZyBcImRhdGFcIiBvciBcImVycm9yXCIgZmllbGQnLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIGlkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHNvY2tldC5vZmYoXCJkaXNjb25uZWN0XCIsIG9uRGlzY29ubmVjdCk7XG4gICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgbmFtZTogXCJUaW1lb3V0RXJyb3JcIixcbiAgICAgICAgICAgIG1lc3NhZ2U6IGBUaW1lb3V0OiBleGNlZWRlZCAke3RpbWVvdXR9bXNgLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSwgdGltZW91dCk7XG4gICAgICBzb2NrZXQub25jZShcImRpc2Nvbm5lY3RcIiwgb25EaXNjb25uZWN0KTtcbiAgICB9KTtcbiAgfTtcblxuICBhc3luYyBmdW5jdGlvbiogcmVzcG9uc2U8RXZlbnROYW1lIGV4dGVuZHMga2V5b2YgTGlzdGVuRXZlbnRNYXA+KFxuICAgIC4uLmV2ZW50czogRXZlbnROYW1lW11cbiAgKSB7XG4gICAgdHlwZSBEYXRhID0gTGlzdGVuRXZlbnRNYXBbRXZlbnROYW1lXTtcbiAgICBsZXQgX3Jlc29sdmU6ICgoZGF0YTogRGF0YSkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgY29uc3Qgd2FpdEZvckV2ZW50ID0gKCkgPT4gbmV3IFByb21pc2U8RGF0YT4oKHJlcykgPT4gX3Jlc29sdmUgPSByZXMpO1xuICAgIGNvbnN0IHJlc29sdmUgPSAoZGF0YTogRGF0YSkgPT4ge1xuICAgICAgX3Jlc29sdmU/LihkYXRhKTtcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHMpIHtcbiAgICAgIHNvY2tldC5vbihcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIC8vIEB0cy1pZ25vcmUg5L2V5pWF44GL5Z6L5o6o6KuW44Gr5aSx5pWX44GZ44KLXG4gICAgICAgIHJlc29sdmUsXG4gICAgICApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgeWllbGQgYXdhaXQgd2FpdEZvckV2ZW50KCk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGZvciAoY29uc3QgZXZlbnQgb2YgZXZlbnRzKSB7XG4gICAgICAgIHNvY2tldC5vZmYoZXZlbnQsIHJlc29sdmUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IHJlcXVlc3QsIHJlc3BvbnNlIH07XG59O1xuIiwgImltcG9ydCB7IFNvY2tldCwgc29ja2V0SU8gfSBmcm9tIFwiLi4vLi4vZGVwcy9zb2NrZXQudHNcIjtcbmV4cG9ydCB0eXBlIHsgU29ja2V0IH0gZnJvbSBcIi4uLy4uL2RlcHMvc29ja2V0LnRzXCI7XG5cbi8qKiDmlrDjgZfjgYRzb2NrZXTjgpLkvZzjgosgKi9cbmV4cG9ydCBjb25zdCBtYWtlU29ja2V0ID0gKCk6IFByb21pc2U8U29ja2V0PiA9PiBzb2NrZXRJTygpO1xuXG4vKiogd2Vic29ja2V044GrKOWGjSnmjqXntprjgZnjgotcbiAqXG4gKiBAcGFyYW0gc29ja2V0IOaOpee2muOBl+OBn+OBhHNvY2tldFxuICovXG5leHBvcnQgY29uc3QgY29ubmVjdCA9IGFzeW5jIChzb2NrZXQ6IFNvY2tldCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoc29ja2V0LmNvbm5lY3RlZCkgcmV0dXJuO1xuXG4gIGNvbnN0IHdhaXRpbmcgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT5cbiAgICBzb2NrZXQub25jZShcImNvbm5lY3RcIiwgKCkgPT4gcmVzb2x2ZSgpKVxuICApO1xuICBzb2NrZXQuY29ubmVjdCgpO1xuICBhd2FpdCB3YWl0aW5nO1xufTtcblxuLyoqIHdlYnNvY2tldOOCkuWIh+aWreOBmeOCi1xuICpcbiAqIEBwYXJhbSBzb2NrZXQg5YiH5pat44GX44Gf44GEc29ja2V0XG4gKi9cbmV4cG9ydCBjb25zdCBkaXNjb25uZWN0ID0gYXN5bmMgKHNvY2tldDogU29ja2V0KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGlmIChzb2NrZXQuZGlzY29ubmVjdGVkKSByZXR1cm47XG5cbiAgY29uc3Qgd2FpdGluZyA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3Qgb25EaXNjb25uZWN0ID0gKHJlYXNvbjogU29ja2V0LkRpc2Nvbm5lY3RSZWFzb24pID0+IHtcbiAgICAgIGlmIChyZWFzb24gIT09IFwiaW8gY2xpZW50IGRpc2Nvbm5lY3RcIikgcmV0dXJuO1xuICAgICAgcmVzb2x2ZSgpO1xuICAgICAgc29ja2V0Lm9mZihcImRpc2Nvbm5lY3RcIiwgb25EaXNjb25uZWN0KTtcbiAgICB9O1xuICAgIHNvY2tldC5vbihcImRpc2Nvbm5lY3RcIiwgb25EaXNjb25uZWN0KTtcbiAgfSk7XG4gIHNvY2tldC5kaXNjb25uZWN0KCk7XG4gIGF3YWl0IHdhaXRpbmc7XG59O1xuIiwgIi8qKlxuICogVGhlIGFsZ29yaXRobSBpbXBsZW1lbnRlZCBoZXJlIGlzIGJhc2VkIG9uIFwiQW4gTyhOUCkgU2VxdWVuY2UgQ29tcGFyaXNvbiBBbGdvcml0aG1cIlxuICogYnkgZGVzY3JpYmVkIGJ5IFN1biBXdSwgVWRpIE1hbmJlciBhbmQgR2VuZSBNeWVycyAqL1xuXG4vKiogTElDRU5TRTogaHR0cHM6Ly9naXRodWIuY29tL2N1YmljZGFpeWEvb25wL2Jsb2IvbWFzdGVyL0NPUFlJTkcgKi9cblxudHlwZSBQb3NpdGlvbiA9IHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZGVkPFQ+IHtcbiAgdmFsdWU6IFQ7XG4gIHR5cGU6IFwiYWRkZWRcIjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlZDxUPiB7XG4gIHZhbHVlOiBUO1xuICB0eXBlOiBcImRlbGV0ZWRcIjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uPFQ+IHtcbiAgdmFsdWU6IFQ7XG4gIHR5cGU6IFwiY29tbW9uXCI7XG59XG5leHBvcnQgdHlwZSBDaGFuZ2U8VD4gPSBBZGRlZDxUPiB8IERlbGV0ZWQ8VD4gfCBDb21tb248VD47XG5leHBvcnQgaW50ZXJmYWNlIFJlcGxhY2VkPFQ+IHtcbiAgdmFsdWU6IFQ7XG4gIG9sZFZhbHVlOiBUO1xuICB0eXBlOiBcInJlcGxhY2VkXCI7XG59XG5leHBvcnQgdHlwZSBFeHRlbmRlZENoYW5nZTxUPiA9IENoYW5nZTxUPiB8IFJlcGxhY2VkPFQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERpZmZSZXN1bHQ8VD4ge1xuICBmcm9tOiBBcnJheUxpa2U8VD47XG4gIHRvOiBBcnJheUxpa2U8VD47XG4gIGVkaXREaXN0YW5jZTogbnVtYmVyO1xuICBidWlsZFNFUygpOiBHZW5lcmF0b3I8Q2hhbmdlPFQ+LCB2b2lkLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGNvbnN0IGRpZmYgPSA8VD4oXG4gIGxlZnQ6IEFycmF5TGlrZTxUPixcbiAgcmlnaHQ6IEFycmF5TGlrZTxUPixcbik6IERpZmZSZXN1bHQ8VD4gPT4ge1xuICBjb25zdCByZXZlcnNlZCA9IGxlZnQubGVuZ3RoID4gcmlnaHQubGVuZ3RoO1xuICBjb25zdCBhID0gcmV2ZXJzZWQgPyByaWdodCA6IGxlZnQ7XG4gIGNvbnN0IGIgPSByZXZlcnNlZCA/IGxlZnQgOiByaWdodDtcblxuICBjb25zdCBvZmZzZXQgPSBhLmxlbmd0aCArIDE7XG4gIGNvbnN0IE1BWFNJWkUgPSBhLmxlbmd0aCArIGIubGVuZ3RoICsgMztcbiAgY29uc3QgcGF0aCA9IG5ldyBBcnJheTxudW1iZXI+KE1BWFNJWkUpO1xuICBwYXRoLmZpbGwoLTEpO1xuICBjb25zdCBwYXRocG9zID0gW10gYXMgW1Bvc2l0aW9uLCBudW1iZXJdW107XG5cbiAgZnVuY3Rpb24gc25ha2UoazogbnVtYmVyLCBwOiBudW1iZXIsIHBwOiBudW1iZXIpIHtcbiAgICBsZXQgeSA9IE1hdGgubWF4KHAsIHBwKTtcbiAgICBsZXQgeCA9IHkgLSBrO1xuXG4gICAgd2hpbGUgKHggPCBhLmxlbmd0aCAmJiB5IDwgYi5sZW5ndGggJiYgYVt4XSA9PT0gYlt5XSkge1xuICAgICAgKyt4O1xuICAgICAgKyt5O1xuICAgIH1cblxuICAgIHBhdGhbayArIG9mZnNldF0gPSBwYXRocG9zLmxlbmd0aDtcbiAgICBwYXRocG9zLnB1c2goW3sgeCwgeSB9LCBwYXRoW2sgKyAocCA+IHBwID8gLTEgOiArMSkgKyBvZmZzZXRdXSk7XG4gICAgcmV0dXJuIHk7XG4gIH1cblxuICBjb25zdCBmcCA9IG5ldyBBcnJheTxudW1iZXI+KE1BWFNJWkUpO1xuICBmcC5maWxsKC0xKTtcbiAgbGV0IHAgPSAtMTtcbiAgY29uc3QgZGVsdGEgPSBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICBkbyB7XG4gICAgKytwO1xuICAgIGZvciAobGV0IGsgPSAtcDsgayA8PSBkZWx0YSAtIDE7ICsraykge1xuICAgICAgZnBbayArIG9mZnNldF0gPSBzbmFrZShrLCBmcFtrIC0gMSArIG9mZnNldF0gKyAxLCBmcFtrICsgMSArIG9mZnNldF0pO1xuICAgIH1cbiAgICBmb3IgKGxldCBrID0gZGVsdGEgKyBwOyBrID49IGRlbHRhICsgMTsgLS1rKSB7XG4gICAgICBmcFtrICsgb2Zmc2V0XSA9IHNuYWtlKGssIGZwW2sgLSAxICsgb2Zmc2V0XSArIDEsIGZwW2sgKyAxICsgb2Zmc2V0XSk7XG4gICAgfVxuICAgIGZwW2RlbHRhICsgb2Zmc2V0XSA9IHNuYWtlKFxuICAgICAgZGVsdGEsXG4gICAgICBmcFtkZWx0YSAtIDEgKyBvZmZzZXRdICsgMSxcbiAgICAgIGZwW2RlbHRhICsgMSArIG9mZnNldF0sXG4gICAgKTtcbiAgfSB3aGlsZSAoZnBbZGVsdGEgKyBvZmZzZXRdICE9PSBiLmxlbmd0aCk7XG5cbiAgY29uc3QgZXBjID0gW10gYXMgUG9zaXRpb25bXTtcbiAgbGV0IHIgPSBwYXRoW2RlbHRhICsgb2Zmc2V0XTtcbiAgd2hpbGUgKHIgIT09IC0xKSB7XG4gICAgZXBjLnB1c2gocGF0aHBvc1tyXVswXSk7XG4gICAgciA9IHBhdGhwb3Nbcl1bMV07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZyb206IGxlZnQsXG4gICAgdG86IHJpZ2h0LFxuICAgIGVkaXREaXN0YW5jZTogZGVsdGEgKyBwICogMixcbiAgICBidWlsZFNFUzogZnVuY3Rpb24qICgpIHtcbiAgICAgIGxldCB4SW5kZXggPSAwO1xuICAgICAgbGV0IHlJbmRleCA9IDA7XG4gICAgICBmb3IgKGNvbnN0IHsgeCwgeSB9IG9mIHJldmVyc2UoZXBjKSkge1xuICAgICAgICB3aGlsZSAoeEluZGV4IDwgeCB8fCB5SW5kZXggPCB5KSB7XG4gICAgICAgICAgaWYgKHkgLSB4ID4geUluZGV4IC0geEluZGV4KSB7XG4gICAgICAgICAgICB5aWVsZCB7IHZhbHVlOiBiW3lJbmRleF0sIHR5cGU6IHJldmVyc2VkID8gXCJkZWxldGVkXCIgOiBcImFkZGVkXCIgfTtcbiAgICAgICAgICAgICsreUluZGV4O1xuICAgICAgICAgIH0gZWxzZSBpZiAoeSAtIHggPCB5SW5kZXggLSB4SW5kZXgpIHtcbiAgICAgICAgICAgIHlpZWxkIHsgdmFsdWU6IGFbeEluZGV4XSwgdHlwZTogcmV2ZXJzZWQgPyBcImFkZGVkXCIgOiBcImRlbGV0ZWRcIiB9O1xuICAgICAgICAgICAgKyt4SW5kZXg7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHlpZWxkIHsgdmFsdWU6IGFbeEluZGV4XSwgdHlwZTogXCJjb21tb25cIiB9O1xuICAgICAgICAgICAgKyt4SW5kZXg7XG4gICAgICAgICAgICArK3lJbmRleDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uKiB0b0V4dGVuZGVkQ2hhbmdlczxUPihcbiAgY2hhbmdlczogSXRlcmFibGU8Q2hhbmdlPFQ+Pixcbik6IEdlbmVyYXRvcjxFeHRlbmRlZENoYW5nZTxUPiwgdm9pZCwgdW5rbm93bj4ge1xuICBsZXQgYWRkZWRMaXN0ID0gW10gYXMgQWRkZWQ8VD5bXTtcbiAgbGV0IGRlbGV0ZWRMaXN0ID0gW10gYXMgRGVsZXRlZDxUPltdO1xuXG4gIGZ1bmN0aW9uKiBmbHVzaCgpIHtcbiAgICBpZiAoYWRkZWRMaXN0Lmxlbmd0aCA+IGRlbGV0ZWRMaXN0Lmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZWxldGVkTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICB5aWVsZCBtYWtlUmVwbGFjZWQoXG4gICAgICAgICAgYWRkZWRMaXN0W2ldLFxuICAgICAgICAgIGRlbGV0ZWRMaXN0W2ldLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQgaSA9IGRlbGV0ZWRMaXN0Lmxlbmd0aDsgaSA8IGFkZGVkTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICB5aWVsZCBhZGRlZExpc3RbaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWRkZWRMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHlpZWxkIG1ha2VSZXBsYWNlZChcbiAgICAgICAgICBhZGRlZExpc3RbaV0sXG4gICAgICAgICAgZGVsZXRlZExpc3RbaV0sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBpID0gYWRkZWRMaXN0Lmxlbmd0aDsgaSA8IGRlbGV0ZWRMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHlpZWxkIGRlbGV0ZWRMaXN0W2ldO1xuICAgICAgfVxuICAgIH1cbiAgICBhZGRlZExpc3QgPSBbXTtcbiAgICBkZWxldGVkTGlzdCA9IFtdO1xuICB9XG5cbiAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgIHN3aXRjaCAoY2hhbmdlLnR5cGUpIHtcbiAgICAgIGNhc2UgXCJhZGRlZFwiOlxuICAgICAgICBhZGRlZExpc3QucHVzaChjaGFuZ2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJkZWxldGVkXCI6XG4gICAgICAgIGRlbGV0ZWRMaXN0LnB1c2goY2hhbmdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiY29tbW9uXCI6XG4gICAgICAgIHlpZWxkKiBmbHVzaCgpO1xuICAgICAgICB5aWVsZCBjaGFuZ2U7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICB5aWVsZCogZmx1c2goKTtcbn1cblxuY29uc3QgbWFrZVJlcGxhY2VkID0gPFQ+KFxuICBsZWZ0OiBBZGRlZDxUPixcbiAgcmlnaHQ6IERlbGV0ZWQ8VD4sXG4pOiBSZXBsYWNlZDxUPiA9PiAoe1xuICB2YWx1ZTogbGVmdC52YWx1ZSxcbiAgb2xkVmFsdWU6IHJpZ2h0LnZhbHVlLFxuICB0eXBlOiBcInJlcGxhY2VkXCIsXG59KTtcblxuZnVuY3Rpb24qIHJldmVyc2U8VD4obGlzdDogQXJyYXlMaWtlPFQ+KSB7XG4gIGZvciAobGV0IGkgPSBsaXN0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgeWllbGQgbGlzdFtpXTtcbiAgfVxufVxuIiwgIi8qKiDmraPluLjlgKTjgajnlbDluLjlgKTjgpLmoLzntI3jgZnjgovlnosgKi9cbmV4cG9ydCB0eXBlIFJlc3VsdDxULCBFPiA9IHsgb2s6IHRydWU7IHZhbHVlOiBUIH0gfCB7IG9rOiBmYWxzZTsgdmFsdWU6IEUgfTtcblxuLyoqIG5ldHdvcmvjgYvjgolkYXRh44KS44Go44Gj44Gm44GP44KL5Yem55CGXG4gKlxuICogaW50ZXJmYWNl44GvYGZldGNoKClg44Go5ZCM44GYXG4gKi9cbmV4cG9ydCB0eXBlIEZldGNoID0gKFxuICBpbnB1dDogc3RyaW5nIHwgUmVxdWVzdCxcbiAgaW5pdD86IFJlcXVlc3RJbml0LFxuKSA9PiBQcm9taXNlPFJlc3BvbnNlPjtcblxuLyoqIOWFqOOBpuOBrlJFU1QgQVBJ44Gr5YWx6YCa44GZ44KLb3BpdG9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlT3B0aW9ucyB7XG4gIC8qKiBjb25uZWN0LnNpZFxuICAgKlxuICAgKiBwcml2YXRlIHByb2plY3Tjga7jg4fjg7zjgr/jgoRzY3JhcGJveCBhY2NvdW5044Gr57SQ5LuY44GE44Gf44OH44O844K/44KS5Y+W5b6X44GZ44KL6Zqb44Gr5b+F6KaB44Gq6KqN6Ki85oOF5aCxXG4gICAqL1xuICBzaWQ/OiBzdHJpbmc7XG5cbiAgLyoqIOODh+ODvOOCv+OBruWPluW+l+OBq+S9v+OBhuWHpueQhlxuICAgKlxuICAgKiBAZGVmYXVsdCBmZXRjaFxuICAgKi9cbiAgZmV0Y2g/OiBGZXRjaDtcblxuICAvKiogUkVTVCBBUEnjga5kb21haW5cbiAgICpcbiAgICog44Kq44Oz44OX44Os54mIc2NyYXBib3jjgarjganjgaDjgajjgIFzY3JhcGJveC5pb+S7peWkluOBrmhvc3QgbmFtZeOBq+OBquOCi+OBruOBp+OAgeS6iOOCgeWkieOBiOOCieOCjOOCi+OCiOOBhuOBq+OBl+OBpuOBiuOBj1xuICAgKlxuICAgKiBAZGVmYXVsdCBcInNjcmFwYm94LmlvXCJcbiAgICovXG4gIGhvc3ROYW1lPzogc3RyaW5nO1xufVxuLyoqIEJhc2VlT3B0aW9uc+OBq0NTUkbmg4XloLHjgpLlhaXjgozjgZ/jgoLjga4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5kZWRPcHRpb25zIGV4dGVuZHMgQmFzZU9wdGlvbnMge1xuICAvKiogQ1NSRiB0b2tlblxuICAgKlxuICAgKiBJZiBpdCBpc24ndCBzZXQsIGF1dG9tYXRpY2FsbHkgZ2V0IENTUkYgdG9rZW4gZnJvbSBzY3JhcGJveC5pbyBzZXJ2ZXIuXG4gICAqL1xuICBjc3JmPzogc3RyaW5nO1xufVxuXG4vKiogQmFzZU9wdGlvbnPjga7ml6LlrprlgKTjgpLln4vjgoHjgosgKi9cbmV4cG9ydCBjb25zdCBzZXREZWZhdWx0cyA9IDxUIGV4dGVuZHMgQmFzZU9wdGlvbnMgPSBCYXNlT3B0aW9ucz4oXG4gIG9wdGlvbnM6IFQsXG4pOiBPbWl0PFQsIFwiZmV0Y2hcIiB8IFwiaG9zdE5hbWVcIj4gJiBSZXF1aXJlZDxPbWl0PEJhc2VPcHRpb25zLCBcInNpZFwiPj4gPT4ge1xuICBjb25zdCB7IGZldGNoID0gZ2xvYmFsVGhpcy5mZXRjaCwgaG9zdE5hbWUgPSBcInNjcmFwYm94LmlvXCIsIC4uLnJlc3QgfSA9XG4gICAgb3B0aW9ucztcbiAgcmV0dXJuIHsgZmV0Y2gsIGhvc3ROYW1lLCAuLi5yZXN0IH07XG59O1xuIiwgImltcG9ydCB0eXBlIHsgRXJyb3JMaWtlIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1yZXN0LnRzXCI7XG4vLyBUaGVzZSBjb2RlIGFyZSBiYXNlZCBvbiBodHRwczovL2Rlbm8ubGFuZC94L3Vua25vd251dGlsQHYxLjEuMC9pcy50c1xuXG5leHBvcnQgY29uc3QgaXNOb25lID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgdW5kZWZpbmVkIHwgbnVsbCA9PlxuICB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuZXhwb3J0IGNvbnN0IGlzU3RyaW5nID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgc3RyaW5nID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIjtcbmV4cG9ydCBjb25zdCBpc051bWJlciA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIG51bWJlciA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCI7XG5leHBvcnQgY29uc3QgaXNBcnJheSA9IDxUPih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFRbXSA9PlxuICBBcnJheS5pc0FycmF5KHZhbHVlKTtcbmV4cG9ydCBjb25zdCBpc09iamVjdCA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbDtcblxuZXhwb3J0IGNvbnN0IGlzRXJyb3JMaWtlID0gKGU6IHVua25vd24pOiBlIGlzIEVycm9yTGlrZSA9PiB7XG4gIGlmICghaXNPYmplY3QoZSkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIChlLm5hbWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgZS5uYW1lID09PSBcInN0cmluZ1wiKSAmJlxuICAgIHR5cGVvZiBlLm1lc3NhZ2UgPT09IFwic3RyaW5nXCI7XG59O1xuXG4vKiog5LiO44GI44KJ44KM44Gfb2JqZWN044KC44GX44GP44GvSlNPTuODhuOCreOCueODiOOCkkVycm9yTGlrZeOBq+WkieaPm+OBp+OBjeOCi+OBi+OBqeOBhuOBi+ippuOBmVxuICpcbiAqIEBwYXJhbSBlIOippuOBl+OBn+OBhG9iamVjdOOCguOBl+OBj+OBr+ODhuOCreOCueODiFxuICogQHJldHVybiDlpInmj5vjgafjgY3jgarjgYvjgaPjgZ/jgolgZmFsc2Vg44KS6L+U44GZ44CC5aSJ5o+b44Gn44GN44Gf44KJ44Gd44Gub2JqZWN044KS6L+U44GZXG4gKi9cbmV4cG9ydCBjb25zdCB0cnlUb0Vycm9yTGlrZSA9IChlOiB1bmtub3duKTogZmFsc2UgfCBFcnJvckxpa2UgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlb2YgZSA9PT0gXCJzdHJpbmdcIiA/IEpTT04ucGFyc2UoZSkgOiBlO1xuICAgIGlmICghaXNFcnJvckxpa2UoanNvbikpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4ganNvbjtcbiAgfSBjYXRjaCAoZTI6IHVua25vd24pIHtcbiAgICBpZiAoZTIgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikgcmV0dXJuIGZhbHNlO1xuICAgIC8vIEpTT07jga5wYXJzZSBlcnJvcuS7peWkluOBr+OBneOBruOBvuOBvuaKleOBkuOCi1xuICAgIHRocm93IGUyO1xuICB9XG59O1xuIiwgImltcG9ydCB0eXBlIHsgRXJyb3JMaWtlIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuaW1wb3J0IHsgdHJ5VG9FcnJvckxpa2UgfSBmcm9tIFwiLi4vaXMudHNcIjtcblxuLyoqIOaDs+WumuOBleOCjOOBquOBhOW/nOetlOOBjOW4sOOBo+OBpuOBjeOBn+OBqOOBjeOBq+aKleOBkuOCi+S+i+WkliAqL1xuZXhwb3J0IGNsYXNzIFVuZXhwZWN0ZWRSZXNwb25zZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBuYW1lID0gXCJVbmV4cGVjdGVkUmVzcG9uc2VFcnJvclwiO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZXNwb25zZTogUmVzcG9uc2UsXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgYCR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9IHdoZW4gZmV0Y2hpbmcgJHtyZXNwb25zZS51cmx9YCxcbiAgICApO1xuXG4gICAgLy8gQHRzLWlnbm9yZSBvbmx5IGF2YWlsYWJsZSBvbiBWOFxuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgICAgLy8gQHRzLWlnbm9yZSBvbmx5IGF2YWlsYWJsZSBvbiBWOFxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IpO1xuICAgIH1cbiAgfVxufVxuXG4vKiog5aSx5pWX44GX44Gf6KaB5rGC44GL44KJ44Ko44Op44O85oOF5aCx44KS5Y+W44KK5Ye644GZICovXG5leHBvcnQgY29uc3QgbWFrZUVycm9yID0gYXN5bmMgPFQgZXh0ZW5kcyBFcnJvckxpa2U+KFxuICByZXM6IFJlc3BvbnNlLFxuKTogUHJvbWlzZTx7IG9rOiBmYWxzZTsgdmFsdWU6IFQgfT4gPT4ge1xuICBjb25zdCByZXNwb25zZSA9IHJlcy5jbG9uZSgpO1xuICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICBjb25zdCB2YWx1ZSA9IHRyeVRvRXJyb3JMaWtlKHRleHQpO1xuICBpZiAoIXZhbHVlKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRSZXNwb25zZUVycm9yKHJlc3BvbnNlKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG9rOiBmYWxzZSxcbiAgICB2YWx1ZTogdmFsdWUgYXMgVCxcbiAgfTtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBHdWVzdFVzZXIsIE1lbWJlclVzZXIgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1yZXN0LnRzXCI7XG5pbXBvcnQgeyBjb29raWUgfSBmcm9tIFwiLi9hdXRoLnRzXCI7XG5pbXBvcnQgeyBCYXNlT3B0aW9ucywgc2V0RGVmYXVsdHMgfSBmcm9tIFwiLi91dGlsLnRzXCI7XG5pbXBvcnQgeyBVbmV4cGVjdGVkUmVzcG9uc2VFcnJvciB9IGZyb20gXCIuL2Vycm9yLnRzXCI7XG5cbi8qKiBnZXQgdXNlciBwcm9maWxlXG4gKlxuICogQHBhcmFtIGluaXQgY29ubmVjdC5zaWQgZXRjLlxuICovXG5leHBvcnQgY29uc3QgZ2V0UHJvZmlsZSA9IGFzeW5jIChcbiAgaW5pdD86IEJhc2VPcHRpb25zLFxuKTogUHJvbWlzZTxNZW1iZXJVc2VyIHwgR3Vlc3RVc2VyPiA9PiB7XG4gIGNvbnN0IHsgc2lkLCBob3N0TmFtZSwgZmV0Y2ggfSA9IHNldERlZmF1bHRzKGluaXQgPz8ge30pO1xuICBjb25zdCByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoXG4gICAgYGh0dHBzOi8vJHtob3N0TmFtZX0vYXBpL3VzZXJzL21lYCxcbiAgICBzaWQgPyB7IGhlYWRlcnM6IHsgQ29va2llOiBjb29raWUoc2lkKSB9IH0gOiB1bmRlZmluZWQsXG4gICk7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2gocmVxdWVzdCk7XG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IocmVzcG9uc2UpO1xuICB9XG4gIHJldHVybiAoYXdhaXQgcmVzcG9uc2UuanNvbigpKSBhcyBNZW1iZXJVc2VyIHwgR3Vlc3RVc2VyO1xufTtcbiIsICJpbXBvcnQgeyBnZXRQcm9maWxlIH0gZnJvbSBcIi4vcHJvZmlsZS50c1wiO1xuaW1wb3J0IHsgQmFzZU9wdGlvbnMgfSBmcm9tIFwiLi91dGlsLnRzXCI7XG5cbi8vIHNjcmFwYm94Lmlv5YaF44Gq44KJYHdpbmRvdy5fY3NyZmDjgatDU1JGIHRva2Vu44GM5YWl44Gj44Gm44GE44KLXG5kZWNsYXJlIGdsb2JhbCB7XG4gIC8vIGdsb2JhbFRoaXPjgavlpInmlbDjgpLlrqPoqIDjgZnjgovjgavjga/jgIFgdmFyYOOCkuS9v+OBhuOBl+OBi+OBquOBhFxuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLXZhclxuICB2YXIgX2NzcmY6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqIEhUVFAgaGVhZGVy44GuQ29va2ll44Gr5YWl44KM44KL5paH5a2X5YiX44KS5L2c44KLXG4gKlxuICogQHBhcmFtIHNpZCBjb25uZWN0LnNpZOOBq+WFpeOBo+OBpuOBhOOCi+aWh+Wtl+WIl1xuICovXG5leHBvcnQgY29uc3QgY29va2llID0gKHNpZDogc3RyaW5nKTogc3RyaW5nID0+IGBjb25uZWN0LnNpZD0ke3NpZH1gO1xuXG4vKiogQ1NSRiB0b2tlbuOCkuWPluW+l+OBmeOCi1xuICpcbiAqIEBwYXJhbSBpbml0IOiqjeiovOaDheWgseOBquOBqVxuICovXG5leHBvcnQgY29uc3QgZ2V0Q1NSRlRva2VuID0gYXN5bmMgKFxuICBpbml0PzogQmFzZU9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBpZiAoZ2xvYmFsVGhpcy5fY3NyZikgcmV0dXJuIGdsb2JhbFRoaXMuX2NzcmY7XG5cbiAgY29uc3QgdXNlciA9IGF3YWl0IGdldFByb2ZpbGUoaW5pdCk7XG4gIHJldHVybiB1c2VyLmNzcmZUb2tlbjtcbn07XG4iLCAiaW1wb3J0IHR5cGUge1xuICBNZW1iZXJQcm9qZWN0LFxuICBOb3RGb3VuZEVycm9yLFxuICBOb3RMb2dnZWRJbkVycm9yLFxuICBOb3RNZW1iZXJFcnJvcixcbiAgTm90TWVtYmVyUHJvamVjdCxcbiAgUHJvamVjdElkLFxuICBQcm9qZWN0UmVzcG9uc2UsXG59IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IGNvb2tpZSB9IGZyb20gXCIuL2F1dGgudHNcIjtcbmltcG9ydCB7IG1ha2VFcnJvciB9IGZyb20gXCIuL2Vycm9yLnRzXCI7XG5pbXBvcnQgeyBCYXNlT3B0aW9ucywgUmVzdWx0LCBzZXREZWZhdWx0cyB9IGZyb20gXCIuL3V0aWwudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHZXRQcm9qZWN0IHtcbiAgLyoqIC9hcGkvcHJvamVjdC86cHJvamVjdCDjga7opoHmsYLjgpLntYTjgb/nq4vjgabjgotcbiAgICpcbiAgICogQHBhcmFtIHByb2plY3QgcHJvamVjdCBuYW1lIHRvIGdldFxuICAgKiBAcGFyYW0gaW5pdCBjb25uZWN0LnNpZCBldGMuXG4gICAqIEByZXR1cm4gcmVxdWVzdFxuICAgKi9cbiAgdG9SZXF1ZXN0OiAoXG4gICAgcHJvamVjdDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBCYXNlT3B0aW9ucyxcbiAgKSA9PiBSZXF1ZXN0O1xuXG4gIC8qKiDluLDjgaPjgabjgY3jgZ/lv5znrZTjgYvjgolwcm9qZWN044GuSlNPTuODh+ODvOOCv+OCkuWPluW+l+OBmeOCi1xuICAgKlxuICAgKiBAcGFyYW0gcmVzIOW/nOetlFxuICAgKiBAcmV0dXJuIHByb2plY3Tjga5KU09O44OH44O844K/XG4gICAqL1xuICBmcm9tUmVzcG9uc2U6IChyZXM6IFJlc3BvbnNlKSA9PiBQcm9taXNlPFxuICAgIFJlc3VsdDxcbiAgICAgIE1lbWJlclByb2plY3QgfCBOb3RNZW1iZXJQcm9qZWN0LFxuICAgICAgTm90Rm91bmRFcnJvciB8IE5vdE1lbWJlckVycm9yIHwgTm90TG9nZ2VkSW5FcnJvclxuICAgID5cbiAgPjtcblxuICAocHJvamVjdDogc3RyaW5nLCBvcHRpb25zPzogQmFzZU9wdGlvbnMpOiBQcm9taXNlPFxuICAgIFJlc3VsdDxcbiAgICAgIE1lbWJlclByb2plY3QgfCBOb3RNZW1iZXJQcm9qZWN0LFxuICAgICAgTm90Rm91bmRFcnJvciB8IE5vdE1lbWJlckVycm9yIHwgTm90TG9nZ2VkSW5FcnJvclxuICAgID5cbiAgPjtcbn1cblxuY29uc3QgZ2V0UHJvamVjdF90b1JlcXVlc3Q6IEdldFByb2plY3RbXCJ0b1JlcXVlc3RcIl0gPSAocHJvamVjdCwgaW5pdCkgPT4ge1xuICBjb25zdCB7IHNpZCwgaG9zdE5hbWUgfSA9IHNldERlZmF1bHRzKGluaXQgPz8ge30pO1xuXG4gIHJldHVybiBuZXcgUmVxdWVzdChcbiAgICBgaHR0cHM6Ly8ke2hvc3ROYW1lfS9hcGkvcHJvamVjdHMvJHtwcm9qZWN0fWAsXG4gICAgc2lkID8geyBoZWFkZXJzOiB7IENvb2tpZTogY29va2llKHNpZCkgfSB9IDogdW5kZWZpbmVkLFxuICApO1xufTtcblxuY29uc3QgZ2V0UHJvamVjdF9mcm9tUmVzcG9uc2U6IEdldFByb2plY3RbXCJmcm9tUmVzcG9uc2VcIl0gPSBhc3luYyAocmVzKSA9PiB7XG4gIGlmICghcmVzLm9rKSB7XG4gICAgcmV0dXJuIG1ha2VFcnJvcjxOb3RGb3VuZEVycm9yIHwgTm90TWVtYmVyRXJyb3IgfCBOb3RMb2dnZWRJbkVycm9yPihyZXMpO1xuICB9XG5cbiAgY29uc3QgdmFsdWUgPSAoYXdhaXQgcmVzLmpzb24oKSkgYXMgTWVtYmVyUHJvamVjdCB8IE5vdE1lbWJlclByb2plY3Q7XG4gIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZSB9O1xufTtcblxuLyoqIGdldCB0aGUgcHJvamVjdCBpbmZvcm1hdGlvblxuICpcbiAqIEBwYXJhbSBwcm9qZWN0IHByb2plY3QgbmFtZSB0byBnZXRcbiAqIEBwYXJhbSBpbml0IGNvbm5lY3Quc2lkIGV0Yy5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFByb2plY3Q6IEdldFByb2plY3QgPSBhc3luYyAoXG4gIHByb2plY3QsXG4gIGluaXQsXG4pID0+IHtcbiAgY29uc3QgeyBmZXRjaCB9ID0gc2V0RGVmYXVsdHMoaW5pdCA/PyB7fSk7XG5cbiAgY29uc3QgcmVxID0gZ2V0UHJvamVjdF90b1JlcXVlc3QocHJvamVjdCwgaW5pdCk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHJlcSk7XG5cbiAgcmV0dXJuIGdldFByb2plY3RfZnJvbVJlc3BvbnNlKHJlcyk7XG59O1xuXG5nZXRQcm9qZWN0LnRvUmVxdWVzdCA9IGdldFByb2plY3RfdG9SZXF1ZXN0O1xuZ2V0UHJvamVjdC5mcm9tUmVzcG9uc2UgPSBnZXRQcm9qZWN0X2Zyb21SZXNwb25zZTtcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0UHJvamVjdHMge1xuICAvKiogL2FwaS9wcm9qZWN0IOOBruimgeaxguOCkue1hOOBv+eri+OBpuOCi1xuICAgKlxuICAgKiBAcGFyYW0gcHJvamVjdElkcyBwcm9qZWN0IGlkcy4gVGhpcyBtdXN0IGhhdmUgbW9yZSB0aGFuIDEgaWRcbiAgICogQHBhcmFtIGluaXQgY29ubmVjdC5zaWQgZXRjLlxuICAgKiBAcmV0dXJuIHJlcXVlc3RcbiAgICovXG4gIHRvUmVxdWVzdDogKFxuICAgIHByb2plY3RJZHM6IFByb2plY3RJZFtdLFxuICAgIGluaXQ/OiBCYXNlT3B0aW9ucyxcbiAgKSA9PiBSZXF1ZXN0O1xuXG4gIC8qKiDluLDjgaPjgabjgY3jgZ/lv5znrZTjgYvjgolwcm9qZWN044GuSlNPTuODh+ODvOOCv+OCkuWPluW+l+OBmeOCi1xuICAgKlxuICAgKiBAcGFyYW0gcmVzIOW/nOetlFxuICAgKiBAcmV0dXJuIHByb2plY3Tjga5KU09O44OH44O844K/XG4gICAqL1xuICBmcm9tUmVzcG9uc2U6IChcbiAgICByZXM6IFJlc3BvbnNlLFxuICApID0+IFByb21pc2U8UmVzdWx0PFByb2plY3RSZXNwb25zZSwgTm90TG9nZ2VkSW5FcnJvcj4+O1xuXG4gIChcbiAgICBwcm9qZWN0SWRzOiBQcm9qZWN0SWRbXSxcbiAgICBpbml0PzogQmFzZU9wdGlvbnMsXG4gICk6IFByb21pc2U8UmVzdWx0PFByb2plY3RSZXNwb25zZSwgTm90TG9nZ2VkSW5FcnJvcj4+O1xufVxuXG5jb25zdCBMaXN0UHJvamVjdF90b1JlcXVlc3Q6IExpc3RQcm9qZWN0c1tcInRvUmVxdWVzdFwiXSA9IChwcm9qZWN0SWRzLCBpbml0KSA9PiB7XG4gIGNvbnN0IHsgc2lkLCBob3N0TmFtZSB9ID0gc2V0RGVmYXVsdHMoaW5pdCA/PyB7fSk7XG4gIGNvbnN0IHBhcmFtID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICBmb3IgKGNvbnN0IGlkIG9mIHByb2plY3RJZHMpIHtcbiAgICBwYXJhbS5hcHBlbmQoXCJpZHNcIiwgaWQpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KFxuICAgIGBodHRwczovLyR7aG9zdE5hbWV9L2FwaS9wcm9qZWN0cz8ke3BhcmFtLnRvU3RyaW5nKCl9YCxcbiAgICBzaWQgPyB7IGhlYWRlcnM6IHsgQ29va2llOiBjb29raWUoc2lkKSB9IH0gOiB1bmRlZmluZWQsXG4gICk7XG59O1xuXG5jb25zdCBMaXN0UHJvamVjdF9mcm9tUmVzcG9uc2U6IExpc3RQcm9qZWN0c1tcImZyb21SZXNwb25zZVwiXSA9IGFzeW5jIChyZXMpID0+IHtcbiAgaWYgKCFyZXMub2spIHtcbiAgICByZXR1cm4gbWFrZUVycm9yPE5vdExvZ2dlZEluRXJyb3I+KHJlcyk7XG4gIH1cblxuICBjb25zdCB2YWx1ZSA9IChhd2FpdCByZXMuanNvbigpKSBhcyBQcm9qZWN0UmVzcG9uc2U7XG4gIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZSB9O1xufTtcblxuLyoqIGxpc3QgdGhlIHByb2plY3RzJyBpbmZvcm1hdGlvblxuICpcbiAqIEBwYXJhbSBwcm9qZWN0SWRzIHByb2plY3QgaWRzLiBUaGlzIG11c3QgaGF2ZSBtb3JlIHRoYW4gMSBpZFxuICogQHBhcmFtIGluaXQgY29ubmVjdC5zaWQgZXRjLlxuICovXG5leHBvcnQgY29uc3QgbGlzdFByb2plY3RzOiBMaXN0UHJvamVjdHMgPSBhc3luYyAoXG4gIHByb2plY3RJZHMsXG4gIGluaXQsXG4pID0+IHtcbiAgY29uc3QgeyBmZXRjaCB9ID0gc2V0RGVmYXVsdHMoaW5pdCA/PyB7fSk7XG5cbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goTGlzdFByb2plY3RfdG9SZXF1ZXN0KHByb2plY3RJZHMsIGluaXQpKTtcblxuICByZXR1cm4gTGlzdFByb2plY3RfZnJvbVJlc3BvbnNlKHJlcyk7XG59O1xuXG5saXN0UHJvamVjdHMudG9SZXF1ZXN0ID0gTGlzdFByb2plY3RfdG9SZXF1ZXN0O1xubGlzdFByb2plY3RzLmZyb21SZXNwb25zZSA9IExpc3RQcm9qZWN0X2Zyb21SZXNwb25zZTtcbiIsICJpbXBvcnQgeyBnZXRQcm9qZWN0IH0gZnJvbSBcIi4uLy4uL3Jlc3QvcHJvamVjdC50c1wiO1xuaW1wb3J0IHsgZ2V0UHJvZmlsZSB9IGZyb20gXCIuLi8uLi9yZXN0L3Byb2ZpbGUudHNcIjtcblxuLyoqIGNhY2hlZCB1c2VyIElEICovXG5sZXQgdXNlcklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5leHBvcnQgY29uc3QgZ2V0VXNlcklkID0gYXN5bmMgKCk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGlmICh1c2VySWQgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHVzZXJJZDtcblxuICBjb25zdCB1c2VyID0gYXdhaXQgZ2V0UHJvZmlsZSgpO1xuICBpZiAodXNlci5pc0d1ZXN0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidGhpcyBzY3JpcHQgY2FuIG9ubHkgYmUgZXhlY3V0ZWQgYnkgTG9nZ2VkIGluIHVzZXJzXCIpO1xuICB9XG4gIHVzZXJJZCA9IHVzZXIuaWQ7XG4gIHJldHVybiB1c2VySWQ7XG59O1xuXG4vKiogY2FjaGVkIHBhaXJzIG9mIHByb2plY3QgbmFtZSBhbmQgcHJvamVjdCBpZCAqL1xuY29uc3QgcHJvamVjdE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5leHBvcnQgY29uc3QgZ2V0UHJvamVjdElkID0gYXN5bmMgKHByb2plY3Q6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IGNhY2hlZElkID0gcHJvamVjdE1hcC5nZXQocHJvamVjdCk7XG4gIGlmIChjYWNoZWRJZCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gY2FjaGVkSWQ7XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0UHJvamVjdChwcm9qZWN0KTtcbiAgaWYgKCFyZXN1bHQub2spIHtcbiAgICBjb25zdCB7IG5hbWUsIG1lc3NhZ2UgfSA9IHJlc3VsdC52YWx1ZTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gJHttZXNzYWdlfWApO1xuICB9XG4gIGNvbnN0IHsgaWQgfSA9IHJlc3VsdC52YWx1ZTtcbiAgcHJvamVjdE1hcC5zZXQocHJvamVjdCwgaWQpO1xuICByZXR1cm4gaWQ7XG59O1xuXG5jb25zdCB6ZXJvID0gKG46IHN0cmluZykgPT4gbi5wYWRTdGFydCg4LCBcIjBcIik7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVOZXdMaW5lSWQgPSAodXNlcklkOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB0aW1lID0gTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLnRvU3RyaW5nKDE2KTtcbiAgY29uc3QgcmFuZCA9IE1hdGguZmxvb3IoMHhGRkZGRkUgKiBNYXRoLnJhbmRvbSgpKS50b1N0cmluZygxNik7XG4gIHJldHVybiBgJHt6ZXJvKHRpbWUpLnNsaWNlKC04KX0ke3VzZXJJZC5zbGljZSgtNil9MDAwMCR7emVybyhyYW5kKX1gO1xufTtcbmV4cG9ydCBjb25zdCBnZXRVbml4VGltZUZyb21JZCA9IChpZDogc3RyaW5nKTogbnVtYmVyID0+IHtcbiAgaWYgKCFpc0lkKGlkKSkgdGhyb3cgU3ludGF4RXJyb3IoYFwiJHtpZH1cIiBpcyBhbiBpbnZhbGlkIGlkLmApO1xuXG4gIHJldHVybiBwYXJzZUludChgMHgke2lkLnNsaWNlKDAsIDgpfWAsIDE2KTtcbn07XG5leHBvcnQgY29uc3QgaXNJZCA9IChpZDogc3RyaW5nKTogYm9vbGVhbiA9PiAvXlthLWZcXGRdezI0LDMyfSQvLnRlc3QoaWQpO1xuIiwgImltcG9ydCB7IGRpZmYsIHRvRXh0ZW5kZWRDaGFuZ2VzIH0gZnJvbSBcIi4uLy4uL2RlcHMvb25wLnRzXCI7XG5pbXBvcnQgdHlwZSB7IExpbmUgfSBmcm9tIFwiLi4vLi4vZGVwcy9zY3JhcGJveC50c1wiO1xuaW1wb3J0IHR5cGUge1xuICBEZWxldGVDaGFuZ2UsXG4gIEluc2VydENoYW5nZSxcbiAgVXBkYXRlQ2hhbmdlLFxufSBmcm9tIFwiLi4vLi4vZGVwcy9zb2NrZXQudHNcIjtcbmltcG9ydCB7IGNyZWF0ZU5ld0xpbmVJZCB9IGZyb20gXCIuL2lkLnRzXCI7XG5cbnR5cGUgT3B0aW9ucyA9IHtcbiAgdXNlcklkOiBzdHJpbmc7XG59O1xuZXhwb3J0IGZ1bmN0aW9uKiBkaWZmVG9DaGFuZ2VzKFxuICBsZWZ0OiBQaWNrPExpbmUsIFwidGV4dFwiIHwgXCJpZFwiPltdLFxuICByaWdodDogc3RyaW5nW10sXG4gIHsgdXNlcklkIH06IE9wdGlvbnMsXG4pOiBHZW5lcmF0b3I8RGVsZXRlQ2hhbmdlIHwgSW5zZXJ0Q2hhbmdlIHwgVXBkYXRlQ2hhbmdlLCB2b2lkLCB1bmtub3duPiB7XG4gIGNvbnN0IHsgYnVpbGRTRVMgfSA9IGRpZmYoXG4gICAgbGVmdC5tYXAoKHsgdGV4dCB9KSA9PiB0ZXh0KSxcbiAgICByaWdodCxcbiAgKTtcbiAgbGV0IGxpbmVObyA9IDA7XG4gIGxldCBsaW5lSWQgPSBsZWZ0WzBdLmlkO1xuICBmb3IgKGNvbnN0IGNoYW5nZSBvZiB0b0V4dGVuZGVkQ2hhbmdlcyhidWlsZFNFUygpKSkge1xuICAgIHN3aXRjaCAoY2hhbmdlLnR5cGUpIHtcbiAgICAgIGNhc2UgXCJhZGRlZFwiOlxuICAgICAgICB5aWVsZCB7XG4gICAgICAgICAgX2luc2VydDogbGluZUlkLFxuICAgICAgICAgIGxpbmVzOiB7XG4gICAgICAgICAgICBpZDogY3JlYXRlTmV3TGluZUlkKHVzZXJJZCksXG4gICAgICAgICAgICB0ZXh0OiBjaGFuZ2UudmFsdWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgY29udGludWU7XG4gICAgICBjYXNlIFwiZGVsZXRlZFwiOlxuICAgICAgICB5aWVsZCB7XG4gICAgICAgICAgX2RlbGV0ZTogbGluZUlkLFxuICAgICAgICAgIGxpbmVzOiAtMSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwicmVwbGFjZWRcIjpcbiAgICAgICAgeWllbGQge1xuICAgICAgICAgIF91cGRhdGU6IGxpbmVJZCxcbiAgICAgICAgICBsaW5lczogeyB0ZXh0OiBjaGFuZ2UudmFsdWUgfSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGxpbmVObysrO1xuICAgIGxpbmVJZCA9IGxlZnRbbGluZU5vXT8uaWQgPz8gXCJfZW5kXCI7XG4gIH1cbn1cbiIsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsICIvKiog5paH5a2X5YiX44KSdGl0bGVMY+W9ouW8j+OBq+WkieaPm+OBmeOCi1xuICpcbiAqIC0gYCBgIC0+IGBfYFxuICpcbiAqIC0g5aSn5paH5a2XIC0+IOWwj+aWh+Wtl1xuICpcbiAqIOODquODs+OCr+OBruetieWApOavlOi8g+OCkuOBmeOCi+mam+OBq+S4u+OBq+S9v+OCj+OCjOOCi1xuICpcbiAqIEBwYXJhbSB0ZXh0IOWkieaPm+OBmeOCi+aWh+Wtl+WIl1xuICogQHJldHVybiDlpInmj5vlvozjga7mloflrZfliJdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvVGl0bGVMYyA9ICh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgdGV4dC5yZXBsYWNlQWxsKFwiIFwiLCBcIl9cIikudG9Mb3dlckNhc2UoKTtcblxuLyoqIGBfYOOCkuWNiuinkuOCueODmuODvOOCueOBq+WkieaPm+OBmeOCi1xuICpcbiAqIEBwYXJhbSB0ZXh0IOWkieaPm+OBmeOCi+aWh+Wtl+WIl1xuICogQHJldHVybiDlpInmj5vlvozjga7mloflrZfliJdcbiAqL1xuZXhwb3J0IGNvbnN0IHJldmVydFRpdGxlTGMgPSAodGV4dDogc3RyaW5nKTogc3RyaW5nID0+XG4gIHRleHQucmVwbGFjZUFsbChcIl9cIiwgXCIgXCIpO1xuXG4vKiogdGl0bGXjgpJVUknjgafkvb/jgYjjgovlvaLlvI/jgatFbmNvZGXjgZnjgotcbiAqXG4gKiBAcGFyYW0gdGl0bGUg5aSJ5o+b44GZ44KLdGl0bGVcbiAqIEByZXR1cm4g5aSJ5o+b5b6M44Gu5paH5a2X5YiXXG4gKi9cbmV4cG9ydCBjb25zdCBlbmNvZGVUaXRsZVVSSSA9ICh0aXRsZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIFsuLi50aXRsZV0ubWFwKChjaGFyLCBpbmRleCkgPT4ge1xuICAgIGlmIChjaGFyID09PSBcIiBcIikgcmV0dXJuIFwiX1wiO1xuICAgIGlmIChcbiAgICAgICFub0VuY29kZUNoYXJzLmluY2x1ZGVzKGNoYXIpIHx8XG4gICAgICAoaW5kZXggPT09IHRpdGxlLmxlbmd0aCAtIDEgJiYgbm9UYWlsQ2hhcnMuaW5jbHVkZXMoY2hhcikpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGNoYXIpO1xuICAgIH1cbiAgICByZXR1cm4gY2hhcjtcbiAgfSkuam9pbihcIlwiKTtcbn07XG5cbmNvbnN0IG5vRW5jb2RlQ2hhcnMgPSAnQCQmKz06O1wiLCc7XG5jb25zdCBub1RhaWxDaGFycyA9ICc6O1wiLCc7XG5cbi8qKiB0aXRsZeOCkuOBp+OBjeOCi+OBoOOBkXBlcmNlbnQgZW5jb2RpbmfjgZvjgZrjgatVUknjgafkvb/jgYjjgovlvaLlvI/jgavjgZnjgotcbiAqXG4gKiBAcGFyYW0gdGl0bGUg5aSJ5o+b44GZ44KLdGl0bGVcbiAqIEByZXR1cm4g5aSJ5o+b5b6M44Gu5paH5a2X5YiXXG4gKi9cbmV4cG9ydCBjb25zdCB0b1JlYWRhYmxlVGl0bGVVUkkgPSAodGl0bGU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiB0aXRsZS5yZXBsYWNlQWxsKFwiIFwiLCBcIl9cIilcbiAgICAucmVwbGFjZSgvWy8/I1xce31efDw+JV0vZywgKGNoYXIpID0+IGVuY29kZVVSSUNvbXBvbmVudChjaGFyKSk7XG59O1xuIiwgIi8vIHBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS90YWtrZXI5OS9TY3JhcEJ1YmJsZS9ibG9iLzAuNC4wL1BhZ2UudHN4I0w2NjJcblxuY29uc3QgeW91dHViZVJlZ0V4cCA9IC9odHRwcz86XFwvXFwvKD86d3d3XFwufG11c2ljXFwufCl5b3V0dWJlXFwuY29tXFwvd2F0Y2gvO1xuY29uc3QgeW91dHViZURvdEJlUmVnRXhwID1cbiAgL2h0dHBzPzpcXC9cXC95b3V0dVxcLmJlXFwvKFthLXpBLVpcXGRfLV0rKSg/OlxcPyhbXlxcc117MCwxMDB9KXwpLztcbmNvbnN0IHlvdXR1YmVTaG9ydFJlZ0V4cCA9XG4gIC9odHRwcz86XFwvXFwvKD86d3d3XFwufCl5b3V0dWJlXFwuY29tXFwvc2hvcnRzXFwvKFthLXpBLVpcXGRfLV0rKSg/OlxcPyhbXlxcc10rKXwpLztcbmNvbnN0IHlvdXR1YmVMaXN0UmVnRXhwID1cbiAgL2h0dHBzPzpcXC9cXC8oPzp3d3dcXC58bXVzaWNcXC58KXlvdXR1YmVcXC5jb21cXC9wbGF5bGlzdFxcPygoPzpbXlxcc10rJnwpbGlzdD0oW2EtekEtWlxcZF8tXSspKD86JlteXFxzXSt8KSkvO1xuXG5leHBvcnQgdHlwZSBZb3V0dWJlUHJvcHMgPSB7XG4gIHBhcmFtczogVVJMU2VhcmNoUGFyYW1zO1xuICB2aWRlb0lkOiBzdHJpbmc7XG4gIHBhdGhUeXBlOiBcImNvbVwiIHwgXCJkb3RiZVwiIHwgXCJzaG9ydFwiO1xufSB8IHtcbiAgcGFyYW1zOiBVUkxTZWFyY2hQYXJhbXM7XG4gIGxpc3RJZDogc3RyaW5nO1xuICBwYXRoVHlwZTogXCJsaXN0XCI7XG59O1xuXG4vKiogWW91dHViZeOBrlVSTOOCkuino+aekOOBl+OBplZpZGVvIElE44Gq44Gp44KS5Y+W44KK5Ye644GZXG4gKlxuICogQHBhcmFtIHVybCBZb3V0dWJl44GuVVJMXG4gKiBAcmV0dXJuIOino+aekOe1kOaenCBZb3V0dWJl44GuVVJM44Gn44Gq44GL44Gj44Gf44Go44GN44GvYHVuZGVmaW5lZGDjgpLov5TjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlWW91dHViZSA9ICh1cmw6IHN0cmluZyk6IFlvdXR1YmVQcm9wcyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICh5b3V0dWJlUmVnRXhwLnRlc3QodXJsKSkge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkwodXJsKS5zZWFyY2hQYXJhbXM7XG4gICAgY29uc3QgdmlkZW9JZCA9IHBhcmFtcy5nZXQoXCJ2XCIpO1xuICAgIGlmICh2aWRlb0lkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRoVHlwZTogXCJjb21cIixcbiAgICAgICAgdmlkZW9JZCxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHVybC5tYXRjaCh5b3V0dWJlRG90QmVSZWdFeHApO1xuICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICBjb25zdCBbLCB2aWRlb0lkLCBwYXJhbXNdID0gbWF0Y2hlcztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZpZGVvSWQsXG4gICAgICAgIHBhcmFtczogbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpLFxuICAgICAgICBwYXRoVHlwZTogXCJkb3RiZVwiLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHVybC5tYXRjaCh5b3V0dWJlU2hvcnRSZWdFeHApO1xuICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICBjb25zdCBbLCB2aWRlb0lkLCBwYXJhbXNdID0gbWF0Y2hlcztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZpZGVvSWQsXG4gICAgICAgIHBhcmFtczogbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpLFxuICAgICAgICBwYXRoVHlwZTogXCJzaG9ydFwiLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHVybC5tYXRjaCh5b3V0dWJlTGlzdFJlZ0V4cCk7XG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIGNvbnN0IFssIHBhcmFtcywgbGlzdElkXSA9IG1hdGNoZXM7XG5cbiAgICAgIHJldHVybiB7IGxpc3RJZCwgcGFyYW1zOiBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcmFtcyksIHBhdGhUeXBlOiBcImxpc3RcIiB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuIiwgImltcG9ydCB7IEJhc2VMaW5lLCBOb2RlLCBwYXJzZSB9IGZyb20gXCIuLi8uLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyB0b1RpdGxlTGMgfSBmcm9tIFwiLi4vLi4vdGl0bGUudHNcIjtcbmltcG9ydCB7IHBhcnNlWW91dHViZSB9IGZyb20gXCIuLi8uLi9wYXJzZXIveW91dHViZS50c1wiO1xuXG4vKiog44OG44Kt44K544OI44Gr5ZCr44G+44KM44Gm44GE44KL44Oh44K/44OH44O844K/44KS5Y+W44KK5Ye644GZXG4gKlxuICogQHBhcmFtIHRleHQgU2NyYXBib3jjga7jg4bjgq3jgrnjg4hcbiAqIEByZXR1cm4g6aCG44Gr44CBbGlua3MsIHByb2plY3RMaW5rcywgaWNvbnMsIGltYWdlLCBmaWxlcywgaGVscGZlZWxzLCBpbmZvYm94RGVmaW5pdGlvblxuICovXG5leHBvcnQgY29uc3QgZmluZE1ldGFkYXRhID0gKFxuICB0ZXh0OiBzdHJpbmcsXG4pOiBbXG4gIHN0cmluZ1tdLFxuICBzdHJpbmdbXSxcbiAgc3RyaW5nW10sXG4gIHN0cmluZyB8IG51bGwsXG4gIHN0cmluZ1tdLFxuICBzdHJpbmdbXSxcbiAgc3RyaW5nW10sXG5dID0+IHtcbiAgY29uc3QgYmxvY2tzID0gcGFyc2UodGV4dCwgeyBoYXNUaXRsZTogdHJ1ZSB9KS5mbGF0TWFwKChibG9jaykgPT4ge1xuICAgIHN3aXRjaCAoYmxvY2sudHlwZSkge1xuICAgICAgY2FzZSBcImNvZGVCbG9ja1wiOlxuICAgICAgY2FzZSBcInRpdGxlXCI6XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIGNhc2UgXCJsaW5lXCI6XG4gICAgICBjYXNlIFwidGFibGVcIjpcbiAgICAgICAgcmV0dXJuIGJsb2NrO1xuICAgIH1cbiAgfSk7XG5cbiAgLyoqIOmHjeikh+WIpOWumueUqG1hcFxuICAgKlxuICAgKiBicmFja2V0IGxpbmsg44GoaGFzaHRhZ+OCkuWMuuWIpeOBp+OBjeOCi+OCiOOBhuOBq+OBl+OBpuOBhOOCi1xuICAgKiAtIGJyYWNrZXQgbGlua+OBquOCiXRydWVcbiAgICpcbiAgICogbGlua+OBruW9oueKtuOBr2JyYWNrZXQgbGlua+OCkuWEquWFiOOBl+OBpuOBhOOCi1xuICAgKi9cbiAgY29uc3QgbGlua3NMYyA9IG5ldyBNYXA8c3RyaW5nLCBib29sZWFuPigpO1xuICBjb25zdCBsaW5rcyA9IFtdIGFzIHN0cmluZ1tdO1xuICBjb25zdCBwcm9qZWN0TGlua3NMYyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBwcm9qZWN0TGlua3MgPSBbXSBhcyBzdHJpbmdbXTtcbiAgY29uc3QgaWNvbnNMYyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBpY29ucyA9IFtdIGFzIHN0cmluZ1tdO1xuICBsZXQgaW1hZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBjb25zdCBmaWxlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBoZWxwZmVlbHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBjb25zdCBmaWxlVXJsUGF0dGVybiA9IG5ldyBSZWdFeHAoXG4gICAgYCR7XG4gICAgICBsb2NhdGlvbj8ub3JpZ2luID8/IFwiaHR0cHM6Ly9zY3JhcGJveC5pb1wiXG4gICAgfS9maWxlcy8oW2EtejAtOV17MjR9KSg/OnxcXFxcLlthLXpBLVowLTldKykoPzp8XFxcXD9bXlxcXFxzXSopJGAsXG4gICk7XG5cbiAgY29uc3QgbG9va3VwID0gKG5vZGU6IE5vZGUpID0+IHtcbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgY2FzZSBcImhhc2hUYWdcIjpcbiAgICAgICAgaWYgKGxpbmtzTGMuaGFzKHRvVGl0bGVMYyhub2RlLmhyZWYpKSkgcmV0dXJuO1xuICAgICAgICBsaW5rc0xjLnNldCh0b1RpdGxlTGMobm9kZS5ocmVmKSwgZmFsc2UpO1xuICAgICAgICBsaW5rcy5wdXNoKG5vZGUuaHJlZik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgIHN3aXRjaCAobm9kZS5wYXRoVHlwZSkge1xuICAgICAgICAgIGNhc2UgXCJyZWxhdGl2ZVwiOiB7XG4gICAgICAgICAgICBjb25zdCBsaW5rID0gY3V0SWQobm9kZS5ocmVmKTtcbiAgICAgICAgICAgIGlmIChsaW5rc0xjLmdldCh0b1RpdGxlTGMobGluaykpKSByZXR1cm47XG4gICAgICAgICAgICBsaW5rc0xjLnNldCh0b1RpdGxlTGMobGluayksIHRydWUpO1xuICAgICAgICAgICAgbGlua3MucHVzaChsaW5rKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcInJvb3RcIjoge1xuICAgICAgICAgICAgY29uc3QgbGluayA9IGN1dElkKG5vZGUuaHJlZik7XG4gICAgICAgICAgICAvLyBpZ25vcmUgYC9wcm9qZWN0YCBvciBgL3Byb2plY3QvYFxuICAgICAgICAgICAgaWYgKC9eXFwvW1xcd1xcZC1dK1xcLz8kLy50ZXN0KGxpbmspKSByZXR1cm47XG4gICAgICAgICAgICBpZiAocHJvamVjdExpbmtzTGMuaGFzKHRvVGl0bGVMYyhsaW5rKSkpIHJldHVybjtcbiAgICAgICAgICAgIHByb2plY3RMaW5rc0xjLmFkZCh0b1RpdGxlTGMobGluaykpO1xuICAgICAgICAgICAgcHJvamVjdExpbmtzLnB1c2gobGluayk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJhYnNvbHV0ZVwiOiB7XG4gICAgICAgICAgICBpZiAobm9kZS5jb250ZW50KSByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBwcm9wcyA9IHBhcnNlWW91dHViZShub2RlLmhyZWYpO1xuICAgICAgICAgICAgaWYgKHByb3BzICYmIHByb3BzLnBhdGhUeXBlICE9PSBcImxpc3RcIikge1xuICAgICAgICAgICAgICBpbWFnZSA/Pz0gYGh0dHBzOi8vaS55dGltZy5jb20vdmkvJHtwcm9wcy52aWRlb0lkfS9tcWRlZmF1bHQuanBnYDtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZmlsZUlkID0gbm9kZS5ocmVmLm1hdGNoKGZpbGVVcmxQYXR0ZXJuKT8uWzFdO1xuICAgICAgICAgICAgaWYgKGZpbGVJZCkgZmlsZXMuYWRkKGZpbGVJZCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIGNhc2UgXCJpY29uXCI6XG4gICAgICBjYXNlIFwic3Ryb25nSWNvblwiOiB7XG4gICAgICAgIGlmIChub2RlLnBhdGhUeXBlID09PSBcInJvb3RcIikgcmV0dXJuO1xuICAgICAgICBpZiAoaWNvbnNMYy5oYXModG9UaXRsZUxjKG5vZGUucGF0aCkpKSByZXR1cm47XG4gICAgICAgIGljb25zTGMuYWRkKHRvVGl0bGVMYyhub2RlLnBhdGgpKTtcbiAgICAgICAgaWNvbnMucHVzaChub2RlLnBhdGgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjYXNlIFwiaW1hZ2VcIjpcbiAgICAgIGNhc2UgXCJzdHJvbmdJbWFnZVwiOiB7XG4gICAgICAgIGltYWdlID8/PSBub2RlLnNyYy5lbmRzV2l0aChcIi90aHVtYi8xMDAwXCIpXG4gICAgICAgICAgPyBub2RlLnNyYy5yZXBsYWNlKC9cXC90aHVtYlxcLzEwMDAkLywgXCIvcmF3XCIpXG4gICAgICAgICAgOiBub2RlLnNyYztcbiAgICAgICAge1xuICAgICAgICAgIGNvbnN0IGZpbGVJZCA9IG5vZGUuc3JjLm1hdGNoKGZpbGVVcmxQYXR0ZXJuKT8uWzFdO1xuICAgICAgICAgIGlmIChmaWxlSWQpIGZpbGVzLmFkZChmaWxlSWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiaW1hZ2VcIikge1xuICAgICAgICAgIGNvbnN0IGZpbGVJZCA9IG5vZGUubGluay5tYXRjaChmaWxlVXJsUGF0dGVybik/LlsxXTtcbiAgICAgICAgICBpZiAoZmlsZUlkKSBmaWxlcy5hZGQoZmlsZUlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjYXNlIFwiaGVscGZlZWxcIjpcbiAgICAgICAgaGVscGZlZWxzLmFkZChub2RlLnRleHQpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFwibnVtYmVyTGlzdFwiOlxuICAgICAgY2FzZSBcInN0cm9uZ1wiOlxuICAgICAgY2FzZSBcInF1b3RlXCI6XG4gICAgICBjYXNlIFwiZGVjb3JhdGlvblwiOiB7XG4gICAgICAgIGZvciAoY29uc3QgbiBvZiBub2RlLm5vZGVzKSB7XG4gICAgICAgICAgbG9va3VwKG4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaW5mb2JveERlZmluaXRpb24gPSBbXSBhcyBzdHJpbmdbXTtcblxuICBmb3IgKGNvbnN0IGJsb2NrIG9mIGJsb2Nrcykge1xuICAgIHN3aXRjaCAoYmxvY2sudHlwZSkge1xuICAgICAgY2FzZSBcImxpbmVcIjpcbiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIGJsb2NrLm5vZGVzKSB7XG4gICAgICAgICAgbG9va3VwKG5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgY2FzZSBcInRhYmxlXCI6IHtcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2YgYmxvY2suY2VsbHMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IG5vZGVzIG9mIHJvdykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgICAgIGxvb2t1cChub2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFbXCJpbmZvYm94XCIsIFwiY29zZW5zZVwiXS5pbmNsdWRlcyhibG9jay5maWxlTmFtZSkpIGNvbnRpbnVlO1xuICAgICAgICBpbmZvYm94RGVmaW5pdGlvbi5wdXNoKFxuICAgICAgICAgIC4uLmJsb2NrLmNlbGxzLm1hcCgocm93KSA9PlxuICAgICAgICAgICAgcm93Lm1hcCgoY2VsbCkgPT4gY2VsbC5tYXAoKG5vZGUpID0+IG5vZGUucmF3KS5qb2luKFwiXCIpKS5qb2luKFwiXFx0XCIpXG4gICAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gW1xuICAgIGxpbmtzLFxuICAgIHByb2plY3RMaW5rcyxcbiAgICBpY29ucyxcbiAgICBpbWFnZSxcbiAgICBbLi4uZmlsZXNdLFxuICAgIFsuLi5oZWxwZmVlbHNdLFxuICAgIGluZm9ib3hEZWZpbml0aW9uLFxuICBdO1xufTtcblxuY29uc3QgY3V0SWQgPSAobGluazogc3RyaW5nKTogc3RyaW5nID0+IGxpbmsucmVwbGFjZSgvI1thLWZcXGRdezI0LDMyfSQvLCBcIlwiKTtcblxuLyoqIOODhuOCreOCueODiOOBi+OCiUhlbHBmZWVs6KiY5rOV44GuZW50cnnjgaDjgZHlj5bjgorlh7rjgZkgKi9cbmV4cG9ydCBjb25zdCBnZXRIZWxwZmVlbHMgPSAobGluZXM6IFBpY2s8QmFzZUxpbmUsIFwidGV4dFwiPltdKTogc3RyaW5nW10gPT5cbiAgbGluZXMuZmxhdE1hcCgoeyB0ZXh0IH0pID0+XG4gICAgL15cXHMqXFw/IC4qJC8udGVzdCh0ZXh0KSA/IFt0ZXh0LnRyaW1TdGFydCgpLnNsaWNlKDIpXSA6IFtdXG4gICk7XG4iLCAiZXhwb3J0IGNvbnN0IGlzU2FtZUFycmF5ID0gPFQ+KGE6IFRbXSwgYjogVFtdKTogYm9vbGVhbiA9PlxuICBhLmxlbmd0aCA9PT0gYi5sZW5ndGggJiYgYS5ldmVyeSgoeCkgPT4gYi5pbmNsdWRlcyh4KSk7XG4iLCAiaW1wb3J0IHsgZGlmZlRvQ2hhbmdlcyB9IGZyb20gXCIuL2RpZmZUb0NoYW5nZXMudHNcIjtcbmltcG9ydCB7IFBhZ2UgfSBmcm9tIFwiLi4vLi4vZGVwcy9zY3JhcGJveC1yZXN0LnRzXCI7XG5pbXBvcnQgdHlwZSB7IENoYW5nZSB9IGZyb20gXCIuLi8uLi9kZXBzL3NvY2tldC50c1wiO1xuaW1wb3J0IHsgZmluZE1ldGFkYXRhLCBnZXRIZWxwZmVlbHMgfSBmcm9tIFwiLi9maW5kTWV0YWRhdGEudHNcIjtcbmltcG9ydCB7IGlzU2FtZUFycmF5IH0gZnJvbSBcIi4vaXNTYW1lQXJyYXkudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uKiBtYWtlQ2hhbmdlcyhcbiAgYmVmb3JlOiBQYWdlLFxuICBhZnRlcjogc3RyaW5nW10sXG4gIHVzZXJJZDogc3RyaW5nLFxuKTogR2VuZXJhdG9yPENoYW5nZSwgdm9pZCwgdW5rbm93bj4ge1xuICAvLyDmlLnooYzmloflrZfjgYzlhaXjgovjga7jgpLpmLLjgZBcbiAgY29uc3QgYWZ0ZXJfID0gYWZ0ZXIuZmxhdE1hcCgodGV4dCkgPT4gdGV4dC5zcGxpdChcIlxcblwiKSk7XG4gIC8vIOacrOaWh+OBruW3ruWIhuOCkuWFiOOBq+i/lOOBmVxuICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBkaWZmVG9DaGFuZ2VzKGJlZm9yZS5saW5lcywgYWZ0ZXJfLCB7IHVzZXJJZCB9KSkge1xuICAgIHlpZWxkIGNoYW5nZTtcbiAgfVxuXG4gIC8vIHRpdGxl44Gu5beu5YiG44KS5YWl44KM44KLXG4gIC8vIOepuuODmuODvOOCuOOBruWgtOWQiOOCguOCv+OCpOODiOODq+WkieabtGNvbW1pdOOCkuWFpeOCjOOCi1xuICBpZiAoYmVmb3JlLmxpbmVzWzBdLnRleHQgIT09IGFmdGVyX1swXSB8fCAhYmVmb3JlLnBlcnNpc3RlbnQpIHtcbiAgICB5aWVsZCB7IHRpdGxlOiBhZnRlcl9bMF0gfTtcbiAgfVxuXG4gIC8vIGRlc2NyaXB0aW9uc+OBruW3ruWIhuOCkuWFpeOCjOOCi1xuICBjb25zdCBsZWZ0RGVzY3JpcHRpb25zID0gYmVmb3JlLmxpbmVzLnNsaWNlKDEsIDYpLm1hcCgobGluZSkgPT4gbGluZS50ZXh0KTtcbiAgY29uc3QgcmlnaHREZXNjcmlwdGlvbnMgPSBhZnRlcl8uc2xpY2UoMSwgNik7XG4gIGlmIChsZWZ0RGVzY3JpcHRpb25zLmpvaW4oXCJcIikgIT09IHJpZ2h0RGVzY3JpcHRpb25zLmpvaW4oXCJcIikpIHtcbiAgICB5aWVsZCB7IGRlc2NyaXB0aW9uczogcmlnaHREZXNjcmlwdGlvbnMgfTtcbiAgfVxuXG4gIC8vIOWQhOeoruODoeOCv+ODh+ODvOOCv+OBruW3ruWIhuOCkuWFpeOCjOOCi1xuICBjb25zdCBbXG4gICAgbGlua3MsXG4gICAgcHJvamVjdExpbmtzLFxuICAgIGljb25zLFxuICAgIGltYWdlLFxuICAgIGZpbGVzLFxuICAgIGhlbHBmZWVscyxcbiAgICBpbmZvYm94RGVmaW5pdGlvbixcbiAgXSA9IGZpbmRNZXRhZGF0YShhZnRlcl8uam9pbihcIlxcblwiKSk7XG4gIGlmICghaXNTYW1lQXJyYXkoYmVmb3JlLmxpbmtzLCBsaW5rcykpIHlpZWxkIHsgbGlua3MgfTtcbiAgaWYgKCFpc1NhbWVBcnJheShiZWZvcmUucHJvamVjdExpbmtzLCBwcm9qZWN0TGlua3MpKSB5aWVsZCB7IHByb2plY3RMaW5rcyB9O1xuICBpZiAoIWlzU2FtZUFycmF5KGJlZm9yZS5pY29ucywgaWNvbnMpKSB5aWVsZCB7IGljb25zIH07XG4gIGlmIChiZWZvcmUuaW1hZ2UgIT09IGltYWdlKSB5aWVsZCB7IGltYWdlIH07XG4gIGlmICghaXNTYW1lQXJyYXkoYmVmb3JlLmZpbGVzLCBmaWxlcykpIHlpZWxkIHsgZmlsZXMgfTtcbiAgaWYgKCFpc1NhbWVBcnJheShnZXRIZWxwZmVlbHMoYmVmb3JlLmxpbmVzKSwgaGVscGZlZWxzKSkgeWllbGQgeyBoZWxwZmVlbHMgfTtcbiAgaWYgKCFpc1NhbWVBcnJheShiZWZvcmUuaW5mb2JveERlZmluaXRpb24sIGluZm9ib3hEZWZpbml0aW9uKSkge1xuICAgIHlpZWxkIHsgaW5mb2JveERlZmluaXRpb24gfTtcbiAgfVxufVxuIiwgImltcG9ydCB0eXBlIHtcbiAgRXJyb3JMaWtlLFxuICBOb3RGb3VuZEVycm9yLFxuICBOb3RMb2dnZWRJbkVycm9yLFxuICBOb3RNZW1iZXJFcnJvcixcbiAgUGFnZSxcbiAgUGFnZUxpc3QsXG59IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IGNvb2tpZSB9IGZyb20gXCIuL2F1dGgudHNcIjtcbmltcG9ydCB7IG1ha2VFcnJvciB9IGZyb20gXCIuL2Vycm9yLnRzXCI7XG5pbXBvcnQgeyBlbmNvZGVUaXRsZVVSSSB9IGZyb20gXCIuLi90aXRsZS50c1wiO1xuaW1wb3J0IHsgQmFzZU9wdGlvbnMsIFJlc3VsdCwgc2V0RGVmYXVsdHMgfSBmcm9tIFwiLi91dGlsLnRzXCI7XG5cbi8qKiBPcHRpb25zIGZvciBgZ2V0UGFnZSgpYCAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRQYWdlT3B0aW9uIGV4dGVuZHMgQmFzZU9wdGlvbnMge1xuICAvKiogdXNlIGBmb2xsb3dSZW5hbWVgICovXG4gIGZvbGxvd1JlbmFtZT86IGJvb2xlYW47XG5cbiAgLyoqIHByb2plY3QgaWRzIHRvIGdldCBFeHRlcm5hbCBsaW5rcyAqL1xuICBwcm9qZWN0cz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvb0xvbmdVUklFcnJvciBleHRlbmRzIEVycm9yTGlrZSB7XG4gIG5hbWU6IFwiVG9vTG9uZ1VSSUVycm9yXCI7XG59XG5cbmNvbnN0IGdldFBhZ2VfdG9SZXF1ZXN0OiBHZXRQYWdlW1widG9SZXF1ZXN0XCJdID0gKFxuICBwcm9qZWN0LFxuICB0aXRsZSxcbiAgb3B0aW9ucyxcbikgPT4ge1xuICBjb25zdCB7IHNpZCwgaG9zdE5hbWUsIGZvbGxvd1JlbmFtZSwgcHJvamVjdHMgfSA9IHNldERlZmF1bHRzKG9wdGlvbnMgPz8ge30pO1xuICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gIHBhcmFtcy5hcHBlbmQoXCJmb2xsb3dSZW5hbWVcIiwgYCR7Zm9sbG93UmVuYW1lID8/IHRydWV9YCk7XG4gIGZvciAoY29uc3QgaWQgb2YgcHJvamVjdHMgPz8gW10pIHtcbiAgICBwYXJhbXMuYXBwZW5kKFwicHJvamVjdHNcIiwgaWQpO1xuICB9XG4gIGNvbnN0IHBhdGggPSBgaHR0cHM6Ly8ke2hvc3ROYW1lfS9hcGkvcGFnZXMvJHtwcm9qZWN0fS8ke1xuICAgIGVuY29kZVRpdGxlVVJJKHRpdGxlKVxuICB9PyR7cGFyYW1zLnRvU3RyaW5nKCl9YDtcblxuICByZXR1cm4gbmV3IFJlcXVlc3QoXG4gICAgcGF0aCxcbiAgICBzaWQgPyB7IGhlYWRlcnM6IHsgQ29va2llOiBjb29raWUoc2lkKSB9IH0gOiB1bmRlZmluZWQsXG4gICk7XG59O1xuXG5jb25zdCBnZXRQYWdlX2Zyb21SZXNwb25zZTogR2V0UGFnZVtcImZyb21SZXNwb25zZVwiXSA9IGFzeW5jIChyZXMpID0+IHtcbiAgaWYgKCFyZXMub2spIHtcbiAgICBpZiAocmVzLnN0YXR1cyA9PT0gNDE0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvazogZmFsc2UsXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgbmFtZTogXCJUb29Mb25nVVJJRXJyb3JcIixcbiAgICAgICAgICBtZXNzYWdlOiBcInByb2plY3QgaWRzIG1heSBiZSB0b28gbXVjaC5cIixcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBtYWtlRXJyb3I8Tm90Rm91bmRFcnJvciB8IE5vdExvZ2dlZEluRXJyb3IgfCBOb3RNZW1iZXJFcnJvcj4ocmVzKTtcbiAgfVxuICBjb25zdCB2YWx1ZSA9IChhd2FpdCByZXMuanNvbigpKSBhcyBQYWdlO1xuICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWUgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0UGFnZSB7XG4gIC8qKiAvYXBpL3BhZ2VzLzpwcm9qZWN0Lzp0aXRsZSDjga7opoHmsYLjgpLntYTjgb/nq4vjgabjgotcbiAgICpcbiAgICogQHBhcmFtIHByb2plY3Qg5Y+W5b6X44GX44Gf44GE44Oa44O844K444GucHJvamVjdOWQjVxuICAgKiBAcGFyYW0gdGl0bGUg5Y+W5b6X44GX44Gf44GE44Oa44O844K444GudGl0bGUg5aSn5paH5a2X5bCP5paH5a2X44Gv5ZWP44KP44Gq44GEXG4gICAqIEBwYXJhbSBvcHRpb25zIOOCquODl+OCt+ODp+ODs1xuICAgKiBAcmV0dXJuIHJlcXVlc3RcbiAgICovXG4gIHRvUmVxdWVzdDogKFxuICAgIHByb2plY3Q6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBHZXRQYWdlT3B0aW9uLFxuICApID0+IFJlcXVlc3Q7XG5cbiAgLyoqIOW4sOOBo+OBpuOBjeOBn+W/nOetlOOBi+OCieODmuODvOOCuOOBrkpTT07jg4fjg7zjgr/jgpLlj5blvpfjgZnjgotcbiAgICpcbiAgICogQHBhcmFtIHJlcyDlv5znrZRcbiAgICogQHJldHVybiDjg5rjg7zjgrjjga5KU09O44OH44O844K/XG4gICAqL1xuICBmcm9tUmVzcG9uc2U6IChyZXM6IFJlc3BvbnNlKSA9PiBQcm9taXNlPFxuICAgIFJlc3VsdDxcbiAgICAgIFBhZ2UsXG4gICAgICBOb3RGb3VuZEVycm9yIHwgTm90TG9nZ2VkSW5FcnJvciB8IE5vdE1lbWJlckVycm9yIHwgVG9vTG9uZ1VSSUVycm9yXG4gICAgPlxuICA+O1xuXG4gIChwcm9qZWN0OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIG9wdGlvbnM/OiBHZXRQYWdlT3B0aW9uKTogUHJvbWlzZTxcbiAgICBSZXN1bHQ8XG4gICAgICBQYWdlLFxuICAgICAgTm90Rm91bmRFcnJvciB8IE5vdExvZ2dlZEluRXJyb3IgfCBOb3RNZW1iZXJFcnJvciB8IFRvb0xvbmdVUklFcnJvclxuICAgID5cbiAgPjtcbn1cblxuLyoqIOaMh+WumuOBl+OBn+ODmuODvOOCuOOBrkpTT07jg4fjg7zjgr/jgpLlj5blvpfjgZnjgotcbiAqXG4gKiBAcGFyYW0gcHJvamVjdCDlj5blvpfjgZfjgZ/jgYTjg5rjg7zjgrjjga5wcm9qZWN05ZCNXG4gKiBAcGFyYW0gdGl0bGUg5Y+W5b6X44GX44Gf44GE44Oa44O844K444GudGl0bGUg5aSn5paH5a2X5bCP5paH5a2X44Gv5ZWP44KP44Gq44GEXG4gKiBAcGFyYW0gb3B0aW9ucyDjgqrjg5fjgrfjg6fjg7NcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFBhZ2U6IEdldFBhZ2UgPSBhc3luYyAoXG4gIHByb2plY3QsXG4gIHRpdGxlLFxuICBvcHRpb25zLFxuKSA9PiB7XG4gIGNvbnN0IHsgZmV0Y2ggfSA9IHNldERlZmF1bHRzKG9wdGlvbnMgPz8ge30pO1xuICBjb25zdCByZXEgPSBnZXRQYWdlX3RvUmVxdWVzdChwcm9qZWN0LCB0aXRsZSwgb3B0aW9ucyk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHJlcSk7XG4gIHJldHVybiBhd2FpdCBnZXRQYWdlX2Zyb21SZXNwb25zZShyZXMpO1xufTtcblxuZ2V0UGFnZS50b1JlcXVlc3QgPSBnZXRQYWdlX3RvUmVxdWVzdDtcbmdldFBhZ2UuZnJvbVJlc3BvbnNlID0gZ2V0UGFnZV9mcm9tUmVzcG9uc2U7XG5cbi8qKiBPcHRpb25zIGZvciBgbGlzdFBhZ2VzKClgICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RQYWdlc09wdGlvbiBleHRlbmRzIEJhc2VPcHRpb25zIHtcbiAgLyoqIHRoZSBzb3J0IG9mIHBhZ2UgbGlzdCB0byByZXR1cm5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ1cGRhdGVkXCJcbiAgICovXG4gIHNvcnQ/OlxuICAgIHwgXCJ1cGRhdGVkV2l0aE1lXCJcbiAgICB8IFwidXBkYXRlZFwiXG4gICAgfCBcImNyZWF0ZWRcIlxuICAgIHwgXCJhY2Nlc3NlZFwiXG4gICAgfCBcInBhZ2VSYW5rXCJcbiAgICB8IFwibGlua2VkXCJcbiAgICB8IFwidmlld3NcIlxuICAgIHwgXCJ0aXRsZVwiO1xuICAvKiogdGhlIGluZGV4IGdldHRpbmcgcGFnZSBsaXN0IGZyb21cbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgc2tpcD86IG51bWJlcjtcbiAgLyoqIHRocmVzaG9sZCBvZiB0aGUgbGVuZ3RoIG9mIHBhZ2UgbGlzdFxuICAgKlxuICAgKiBAZGVmYXVsdCAxMDBcbiAgICovXG4gIGxpbWl0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RQYWdlcyB7XG4gIC8qKiAvYXBpL3BhZ2VzLzpwcm9qZWN0IOOBruimgeaxguOCkue1hOOBv+eri+OBpuOCi1xuICAgKlxuICAgKiBAcGFyYW0gcHJvamVjdCDlj5blvpfjgZfjgZ/jgYTjg5rjg7zjgrjjga5wcm9qZWN05ZCNXG4gICAqIEBwYXJhbSBvcHRpb25zIOOCquODl+OCt+ODp+ODs1xuICAgKiBAcmV0dXJuIHJlcXVlc3RcbiAgICovXG4gIHRvUmVxdWVzdDogKFxuICAgIHByb2plY3Q6IHN0cmluZyxcbiAgICBvcHRpb25zPzogTGlzdFBhZ2VzT3B0aW9uLFxuICApID0+IFJlcXVlc3Q7XG5cbiAgLyoqIOW4sOOBo+OBpuOBjeOBn+W/nOetlOOBi+OCieODmuODvOOCuOOBrkpTT07jg4fjg7zjgr/jgpLlj5blvpfjgZnjgotcbiAgICpcbiAgICogQHBhcmFtIHJlcyDlv5znrZRcbiAgICogQHJldHVybiDjg5rjg7zjgrjjga5KU09O44OH44O844K/XG4gICAqL1xuICBmcm9tUmVzcG9uc2U6IChyZXM6IFJlc3BvbnNlKSA9PiBQcm9taXNlPFxuICAgIFJlc3VsdDxcbiAgICAgIFBhZ2VMaXN0LFxuICAgICAgTm90Rm91bmRFcnJvciB8IE5vdExvZ2dlZEluRXJyb3IgfCBOb3RNZW1iZXJFcnJvclxuICAgID5cbiAgPjtcblxuICAocHJvamVjdDogc3RyaW5nLCBvcHRpb25zPzogTGlzdFBhZ2VzT3B0aW9uKTogUHJvbWlzZTxcbiAgICBSZXN1bHQ8XG4gICAgICBQYWdlTGlzdCxcbiAgICAgIE5vdEZvdW5kRXJyb3IgfCBOb3RMb2dnZWRJbkVycm9yIHwgTm90TWVtYmVyRXJyb3JcbiAgICA+XG4gID47XG59XG5cbmNvbnN0IGxpc3RQYWdlc190b1JlcXVlc3Q6IExpc3RQYWdlc1tcInRvUmVxdWVzdFwiXSA9IChwcm9qZWN0LCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHsgc2lkLCBob3N0TmFtZSwgc29ydCwgbGltaXQsIHNraXAgfSA9IHNldERlZmF1bHRzKFxuICAgIG9wdGlvbnMgPz8ge30sXG4gICk7XG4gIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgaWYgKHNvcnQgIT09IHVuZGVmaW5lZCkgcGFyYW1zLmFwcGVuZChcInNvcnRcIiwgc29ydCk7XG4gIGlmIChsaW1pdCAhPT0gdW5kZWZpbmVkKSBwYXJhbXMuYXBwZW5kKFwibGltaXRcIiwgYCR7bGltaXR9YCk7XG4gIGlmIChza2lwICE9PSB1bmRlZmluZWQpIHBhcmFtcy5hcHBlbmQoXCJza2lwXCIsIGAke3NraXB9YCk7XG4gIGNvbnN0IHBhdGggPSBgaHR0cHM6Ly8ke2hvc3ROYW1lfS9hcGkvcGFnZXMvJHtwcm9qZWN0fT8ke3BhcmFtcy50b1N0cmluZygpfWA7XG5cbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KFxuICAgIHBhdGgsXG4gICAgc2lkID8geyBoZWFkZXJzOiB7IENvb2tpZTogY29va2llKHNpZCkgfSB9IDogdW5kZWZpbmVkLFxuICApO1xufTtcblxuY29uc3QgbGlzdFBhZ2VzX2Zyb21SZXNwb25zZTogTGlzdFBhZ2VzW1wiZnJvbVJlc3BvbnNlXCJdID0gYXN5bmMgKHJlcykgPT4ge1xuICBpZiAoIXJlcy5vaykge1xuICAgIHJldHVybiBtYWtlRXJyb3I8Tm90Rm91bmRFcnJvciB8IE5vdExvZ2dlZEluRXJyb3IgfCBOb3RNZW1iZXJFcnJvcj4ocmVzKTtcbiAgfVxuICBjb25zdCB2YWx1ZSA9IChhd2FpdCByZXMuanNvbigpKSBhcyBQYWdlTGlzdDtcbiAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlIH07XG59O1xuXG4vKiog5oyH5a6a44GX44GfcHJvamVjdOOBruODmuODvOOCuOOCkuS4gOimp+OBmeOCi1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0IOS4gOimp+OBl+OBn+OBhHByb2plY3RcbiAqIEBwYXJhbSBvcHRpb25zIOOCquODl+OCt+ODp+ODsyDlj5blvpfnr4Tlm7LjgoTkuKbjgbPpoIbjgpLmsbrjgoHjgotcbiAqL1xuZXhwb3J0IGNvbnN0IGxpc3RQYWdlczogTGlzdFBhZ2VzID0gYXN5bmMgKFxuICBwcm9qZWN0LFxuICBvcHRpb25zPyxcbikgPT4ge1xuICBjb25zdCB7IGZldGNoIH0gPSBzZXREZWZhdWx0cyhvcHRpb25zID8/IHt9KTtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gobGlzdFBhZ2VzX3RvUmVxdWVzdChwcm9qZWN0LCBvcHRpb25zKSk7XG4gIHJldHVybiBhd2FpdCBsaXN0UGFnZXNfZnJvbVJlc3BvbnNlKHJlcyk7XG59O1xuXG5saXN0UGFnZXMudG9SZXF1ZXN0ID0gbGlzdFBhZ2VzX3RvUmVxdWVzdDtcbmxpc3RQYWdlcy5mcm9tUmVzcG9uc2UgPSBsaXN0UGFnZXNfZnJvbVJlc3BvbnNlO1xuIiwgImltcG9ydCB7IFBhZ2UgfSBmcm9tIFwiLi4vLi4vZGVwcy9zY3JhcGJveC1yZXN0LnRzXCI7XG5pbXBvcnQgeyBnZXRQYWdlIH0gZnJvbSBcIi4uLy4uL3Jlc3QvcGFnZXMudHNcIjtcblxuZXhwb3J0IGNvbnN0IHB1bGwgPSBhc3luYyAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgdGl0bGU6IHN0cmluZyxcbik6IFByb21pc2U8UGFnZT4gPT4ge1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRQYWdlKHByb2plY3QsIHRpdGxlKTtcblxuICAvLyBUT0RPOiDnt6jpm4bkuI3lj6/jgarjg5rjg7zjgrjjga9TdHJlYW3os7zoqq3jgaDjgZHmj5DkvpvjgZnjgotcbiAgaWYgKCFyZXN1bHQub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBoYXZlIG5vIHByaXZpbGVnZSBvZiBlZGl0aW5nIFwiLyR7cHJvamVjdH0vJHt0aXRsZX1cIi5gKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQudmFsdWU7XG59O1xuIiwgIi8qKiDjg5/jg6rnp5LljZjkvY3jgaflvoXjgaRcbiAqXG4gKiBAcGFyYW0gbWlsbGlzZWNvbmRzIOW+heOBoeaZgumWkyAo44Of44Oq56eSKVxuICovXG5leHBvcnQgY29uc3Qgc2xlZXAgPSAobWlsbGlzZWNvbmRzOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+ID0+XG4gIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUoKSwgbWlsbGlzZWNvbmRzKSk7XG4iLCAiaW1wb3J0IHtcbiAgQ2hhbmdlLFxuICBEZWxldGVQYWdlQ2hhbmdlLFxuICBQYWdlQ29tbWl0LFxuICBQYWdlQ29tbWl0RXJyb3IsXG4gIFBhZ2VDb21taXRSZXNwb25zZSxcbiAgUGluQ2hhbmdlLFxuICBTb2NrZXQsXG4gIHNvY2tldElPLFxuICBUaW1lb3V0RXJyb3IsXG4gIFVuZXhwZWN0ZWRFcnJvcixcbiAgd3JhcCxcbn0gZnJvbSBcIi4uLy4uL2RlcHMvc29ja2V0LnRzXCI7XG5pbXBvcnQgeyBjb25uZWN0LCBkaXNjb25uZWN0IH0gZnJvbSBcIi4vc29ja2V0LnRzXCI7XG5pbXBvcnQgeyBnZXRQcm9qZWN0SWQsIGdldFVzZXJJZCB9IGZyb20gXCIuL2lkLnRzXCI7XG5pbXBvcnQgeyBwdWxsIH0gZnJvbSBcIi4vcHVsbC50c1wiO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gXCIuLi8uLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IHNsZWVwIH0gZnJvbSBcIi4uLy4uL3NsZWVwLnRzXCI7XG5pbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi4vLi4vcmVzdC91dGlsLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVzaE9wdGlvbnMge1xuICAvKiog5aSW6YOo44GL44KJU29ja2V044KS5oyH5a6a44GX44Gf44GE44Go44GN44Gr5L2/44GGICovXG4gIHNvY2tldD86IFNvY2tldDtcblxuICAvKiogcHVzaOOBruWGjeippuihjOWbnuaVsFxuICAgKlxuICAgKiDjgZPjgozjgpLkuIrlm57jgaPjgZ/jgonjgIFgUmV0cnlFcnJvcmDjgpLov5TjgZlcbiAgICovXG4gIG1heEF0dGVtcHRzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5RXJyb3Ige1xuICBuYW1lOiBcIlJldHJ5RXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBhdHRlbXB0czogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1c2hNZXRhZGF0YSBleHRlbmRzIFBhZ2Uge1xuICBwcm9qZWN0SWQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG59XG5cbi8qKiDnibnlrprjga7jg5rjg7zjgrjjga5jb21taXTjgpJwdXNo44GZ44KLXG4gKlxuICogc2VydmVy44GL44KJcHVzaCBlcnJvcuOBjOi/lOOBo+OBpuOBjeOBn+WgtOWQiOOAgeOCqOODqeODvOOBq+W/nOOBmOOBpnB1c2jjgpLlho3oqabooYzjgZnjgotcbiAqXG4gKiBAcGFyYW0gcHJvamVjdCBwcm9qZWN0IG5hbWVcbiAqIEBwYXJhbSB0aXRsZSBwYWdlIHRpdGxlXG4gKiBAcGFyYW0gbWFrZUNvbW1pdCBwdXNo44GX44Gf44GEY29tbWl044KS5L2c44KL6Zai5pWw44CC56m66YWN5YiX44KS6L+U44GZ44GocHVzaOOCkuS4reaWreOBmeOCi1xuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXRydW4g5oiQ5YqfIG9yIOOCreODo+ODs+OCu+ODq+OBruOBqOOBjeOBr2Bjb21taXRJZGDjgpLov5TjgZnjgILlho3oqabooYzlm57mlbDjgYzkuIrpmZDjgavpgZTjgZfjgZ/jgajjgY3jga9gUmV0cnlFcnJvcmDjgpLov5TjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IHB1c2ggPSBhc3luYyAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgdGl0bGU6IHN0cmluZyxcbiAgbWFrZUNvbW1pdDogKFxuICAgIHBhZ2U6IFB1c2hNZXRhZGF0YSxcbiAgICBhdHRlbXB0czogbnVtYmVyLFxuICAgIHByZXY6IENoYW5nZVtdIHwgW0RlbGV0ZVBhZ2VDaGFuZ2VdIHwgW1BpbkNoYW5nZV0sXG4gICAgcmVhc29uPzogXCJOb3RGYXN0Rm9yd2FyZEVycm9yXCIgfCBcIkR1cGxpY2F0ZVRpdGxlRXJyb3JcIixcbiAgKSA9PlxuICAgIHwgUHJvbWlzZTxDaGFuZ2VbXSB8IFtEZWxldGVQYWdlQ2hhbmdlXSB8IFtQaW5DaGFuZ2VdPlxuICAgIHwgQ2hhbmdlW11cbiAgICB8IFtEZWxldGVQYWdlQ2hhbmdlXVxuICAgIHwgW1BpbkNoYW5nZV0sXG4gIG9wdGlvbnM/OiBQdXNoT3B0aW9ucyxcbik6IFByb21pc2U8UmVzdWx0PHN0cmluZywgUmV0cnlFcnJvcj4+ID0+IHtcbiAgY29uc3QgaW5qZWN0ZWRTb2NrZXQgPSBvcHRpb25zPy5zb2NrZXQ7XG4gIGNvbnN0IHNvY2tldCA9IGluamVjdGVkU29ja2V0ID8/IGF3YWl0IHNvY2tldElPKCk7XG4gIGF3YWl0IGNvbm5lY3Qoc29ja2V0KTtcblxuICB0cnkge1xuICAgIGxldCBwYWdlOiBQdXNoTWV0YWRhdGEgPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICBwdWxsKHByb2plY3QsIHRpdGxlKSxcbiAgICAgIGdldFByb2plY3RJZChwcm9qZWN0KSxcbiAgICAgIGdldFVzZXJJZCgpLFxuICAgIF0pLnRoZW4oKFtwYWdlXywgcHJvamVjdElkLCB1c2VySWRdKSA9PiAoeyAuLi5wYWdlXywgcHJvamVjdElkLCB1c2VySWQgfSkpO1xuXG4gICAgY29uc3QgeyByZXF1ZXN0IH0gPSB3cmFwKHNvY2tldCk7XG4gICAgbGV0IGF0dGVtcHRzID0gMDtcbiAgICBsZXQgY2hhbmdlczogQ2hhbmdlW10gfCBbRGVsZXRlUGFnZUNoYW5nZV0gfCBbUGluQ2hhbmdlXSA9IFtdO1xuICAgIGxldCByZWFzb246IFwiTm90RmFzdEZvcndhcmRFcnJvclwiIHwgXCJEdXBsaWNhdGVUaXRsZUVycm9yXCIgfCB1bmRlZmluZWQ7XG5cbiAgICAvLyBsb29wIGZvciBjcmVhdGUgRGlmZlxuICAgIHdoaWxlIChcbiAgICAgIG9wdGlvbnM/Lm1heEF0dGVtcHRzID09PSB1bmRlZmluZWQgfHwgYXR0ZW1wdHMgPCBvcHRpb25zLm1heEF0dGVtcHRzXG4gICAgKSB7XG4gICAgICBjb25zdCBwZW5kaW5nID0gbWFrZUNvbW1pdChwYWdlLCBhdHRlbXB0cywgY2hhbmdlcywgcmVhc29uKTtcbiAgICAgIGNoYW5nZXMgPSBwZW5kaW5nIGluc3RhbmNlb2YgUHJvbWlzZSA/IGF3YWl0IHBlbmRpbmcgOiBwZW5kaW5nO1xuICAgICAgYXR0ZW1wdHMrKztcbiAgICAgIGlmIChjaGFuZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHBhZ2UuY29tbWl0SWQgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YTogUGFnZUNvbW1pdCA9IHtcbiAgICAgICAga2luZDogXCJwYWdlXCIsXG4gICAgICAgIHByb2plY3RJZDogcGFnZS5wcm9qZWN0SWQsXG4gICAgICAgIHBhZ2VJZDogcGFnZS5pZCxcbiAgICAgICAgcGFyZW50SWQ6IHBhZ2UuY29tbWl0SWQsXG4gICAgICAgIHVzZXJJZDogcGFnZS51c2VySWQsXG4gICAgICAgIGNoYW5nZXMsXG4gICAgICAgIGN1cnNvcjogbnVsbCxcbiAgICAgICAgZnJlZXplOiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgLy8gbG9vcCBmb3IgcHVzaCBjaGFuZ2VzXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSAoYXdhaXQgcmVxdWVzdChcInNvY2tldC5pby1yZXF1ZXN0XCIsIHtcbiAgICAgICAgICBtZXRob2Q6IFwiY29tbWl0XCIsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgfSkpIGFzIFJlc3VsdDxcbiAgICAgICAgICBQYWdlQ29tbWl0UmVzcG9uc2UsXG4gICAgICAgICAgVW5leHBlY3RlZEVycm9yIHwgVGltZW91dEVycm9yIHwgUGFnZUNvbW1pdEVycm9yXG4gICAgICAgID47XG5cbiAgICAgICAgaWYgKHJlc3VsdC5vaykge1xuICAgICAgICAgIHBhZ2UuY29tbWl0SWQgPSByZXN1bHQudmFsdWUuY29tbWl0SWQ7XG4gICAgICAgICAgLy8gc3VjY2Vzc1xuICAgICAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogcGFnZS5jb21taXRJZCB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5hbWUgPSByZXN1bHQudmFsdWUubmFtZTtcbiAgICAgICAgaWYgKG5hbWUgPT09IFwiVW5leHBlY3RlZEVycm9yXCIpIHtcbiAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigpO1xuICAgICAgICAgIGVycm9yLm5hbWUgPSByZXN1bHQudmFsdWUubmFtZTtcbiAgICAgICAgICBlcnJvci5tZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmFtZSA9PT0gXCJUaW1lb3V0RXJyb3JcIiB8fCBuYW1lID09PSBcIlNvY2tldElPRXJyb3JcIikge1xuICAgICAgICAgIGF3YWl0IHNsZWVwKDMwMDApO1xuICAgICAgICAgIC8vIGdvIGJhY2sgdG8gdGhlIHB1c2ggbG9vcFxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYW1lID09PSBcIk5vdEZhc3RGb3J3YXJkRXJyb3JcIikge1xuICAgICAgICAgIGF3YWl0IHNsZWVwKDEwMDApO1xuICAgICAgICAgIHBhZ2UgPSB7XG4gICAgICAgICAgICAuLi5hd2FpdCBwdWxsKHByb2plY3QsIHRpdGxlKSxcbiAgICAgICAgICAgIHByb2plY3RJZDogcGFnZS5wcm9qZWN0SWQsXG4gICAgICAgICAgICB1c2VySWQ6IHBhZ2UudXNlcklkLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmVhc29uID0gbmFtZTtcbiAgICAgICAgLy8gZ28gYmFjayB0byB0aGUgZGlmZiBsb29wXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgb2s6IGZhbHNlLFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgbmFtZTogXCJSZXRyeUVycm9yXCIsXG4gICAgICAgIGF0dGVtcHRzLFxuICAgICAgICAvLyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9kZW5vbGFuZC9kZW5vX3N0ZC9ibG9iLzAuMjIzLjAvYXN5bmMvcmV0cnkudHMjTDIzXG4gICAgICAgIG1lc3NhZ2U6IGBSZXRyeWluZyBleGNlZWRlZCB0aGUgbWF4QXR0ZW1wdHMgKCR7YXR0ZW1wdHN9KS5gLFxuICAgICAgfSxcbiAgICB9O1xuICB9IGZpbmFsbHkge1xuICAgIGlmICghaW5qZWN0ZWRTb2NrZXQpIGF3YWl0IGRpc2Nvbm5lY3Qoc29ja2V0KTtcbiAgfVxufTtcbiIsICJleHBvcnQgY29uc3Qgc3VnZ2VzdFVuRHVwVGl0bGUgPSAodGl0bGU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG1hdGNoZWQgPSB0aXRsZS5tYXRjaCgvKC4rPykoPzpfKFxcZCspKT8kLyk7XG4gIGNvbnN0IHRpdGxlXyA9IG1hdGNoZWQ/LlsxXSA/PyB0aXRsZTtcbiAgY29uc3QgbnVtID0gbWF0Y2hlZD8uWzJdID8gcGFyc2VJbnQobWF0Y2hlZFsyXSkgKyAxIDogMjtcbiAgcmV0dXJuIGAke3RpdGxlX31fJHtudW19YDtcbn07XG4iLCAiaW1wb3J0IHsgQ2hhbmdlLCBEZWxldGVQYWdlQ2hhbmdlLCBQaW5DaGFuZ2UgfSBmcm9tIFwiLi4vLi4vZGVwcy9zb2NrZXQudHNcIjtcbmltcG9ydCB7IG1ha2VDaGFuZ2VzIH0gZnJvbSBcIi4vbWFrZUNoYW5nZXMudHNcIjtcbmltcG9ydCB7IExpbmUsIFBhZ2UgfSBmcm9tIFwiLi4vLi4vZGVwcy9zY3JhcGJveC1yZXN0LnRzXCI7XG5pbXBvcnQgeyBwdXNoLCBQdXNoT3B0aW9ucywgUmV0cnlFcnJvciB9IGZyb20gXCIuL3B1c2gudHNcIjtcbmltcG9ydCB7IHN1Z2dlc3RVbkR1cFRpdGxlIH0gZnJvbSBcIi4vc3VnZ2VzdFVuRHVwVGl0bGUudHNcIjtcbmltcG9ydCB7IFJlc3VsdCB9IGZyb20gXCIuLi8uLi9yZXN0L3V0aWwudHNcIjtcblxuZXhwb3J0IHR5cGUgUGF0Y2hPcHRpb25zID0gUHVzaE9wdGlvbnM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0Y2hNZXRhZGF0YSBleHRlbmRzIFBhZ2Uge1xuICAvKiog5pu444GN5o+b44GI44KS5YaN6Kmm6KGM44GX44Gf5Zue5pWwXG4gICAqXG4gICAqIOWIneWbnuOBr2AwYOOBp+OAgeWGjeippuihjOOBmeOCi+OBn+OBs+OBq+Wil+OBiOOCi1xuICAgKi9cbiAgYXR0ZW1wdHM6IG51bWJlcjtcbn1cblxuLyoqIOODmuODvOOCuOWFqOS9k+OCkuabuOOBjeaPm+OBiOOCi1xuICpcbiAqIHNlcnZlcuOBq+OBr+abuOOBjeaPm+OBiOWJjeW+jOOBruW3ruWIhuOBoOOBkeOCkumAgeS/oeOBmeOCi1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0IOabuOOBjeaPm+OBiOOBn+OBhOODmuODvOOCuOOBrnByb2plY3RcbiAqIEBwYXJhbSB0aXRsZSDmm7jjgY3mj5vjgYjjgZ/jgYTjg5rjg7zjgrjjga7jgr/jgqTjg4jjg6tcbiAqIEBwYXJhbSB1cGRhdGUg5pu444GN5o+b44GI5b6M44Gu5pys5paH44KS5L2c5oiQ44GZ44KL5Ye95pWw44CC5byV5pWw44Gr44Gv54++5Zyo44Gu5pys5paH44GM5rih44GV44KM44KL44CC56m66YWN5YiX44KS6L+U44GZ44Go44Oa44O844K444GM5YmK6Zmk44GV44KM44KL44CCdW5kZWZpbmVk44KS6L+U44GZ44Go5pu444GN5o+b44GI44KS5Lit5pat44GZ44KLXG4gKiBAcGFyYW0gb3B0aW9ucyDkvb/nlKjjgZfjgZ/jgYRTb2NrZXTjgYzjgYLjgozjgbDmjIflrprjgZnjgotcbiAqL1xuZXhwb3J0IGNvbnN0IHBhdGNoID0gKFxuICBwcm9qZWN0OiBzdHJpbmcsXG4gIHRpdGxlOiBzdHJpbmcsXG4gIHVwZGF0ZTogKFxuICAgIGxpbmVzOiBMaW5lW10sXG4gICAgbWV0YWRhdGE6IFBhdGNoTWV0YWRhdGEsXG4gICkgPT4gc3RyaW5nW10gfCB1bmRlZmluZWQgfCBQcm9taXNlPHN0cmluZ1tdIHwgdW5kZWZpbmVkPixcbiAgb3B0aW9ucz86IFBhdGNoT3B0aW9ucyxcbik6IFByb21pc2U8UmVzdWx0PHN0cmluZywgUmV0cnlFcnJvcj4+ID0+XG4gIHB1c2goXG4gICAgcHJvamVjdCxcbiAgICB0aXRsZSxcbiAgICBhc3luYyAocGFnZSwgYXR0ZW1wdHMsIHByZXYsIHJlYXNvbikgPT4ge1xuICAgICAgaWYgKHJlYXNvbiA9PT0gXCJEdXBsaWNhdGVUaXRsZUVycm9yXCIpIHtcbiAgICAgICAgY29uc3QgZmFsbGJhY2tUaXRsZSA9IHN1Z2dlc3RVbkR1cFRpdGxlKHRpdGxlKTtcbiAgICAgICAgcmV0dXJuIHByZXYubWFwKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICBpZiAoXCJ0aXRsZVwiIGluIGNoYW5nZSkgY2hhbmdlLnRpdGxlID0gZmFsbGJhY2tUaXRsZTtcbiAgICAgICAgICByZXR1cm4gY2hhbmdlO1xuICAgICAgICB9KSBhcyBDaGFuZ2VbXSB8IFtEZWxldGVQYWdlQ2hhbmdlXSB8IFtQaW5DaGFuZ2VdO1xuICAgICAgfVxuICAgICAgY29uc3QgcGVuZGluZyA9IHVwZGF0ZShwYWdlLmxpbmVzLCB7IC4uLnBhZ2UsIGF0dGVtcHRzIH0pO1xuICAgICAgY29uc3QgbmV3TGluZXMgPSBwZW5kaW5nIGluc3RhbmNlb2YgUHJvbWlzZSA/IGF3YWl0IHBlbmRpbmcgOiBwZW5kaW5nO1xuICAgICAgaWYgKG5ld0xpbmVzID09PSB1bmRlZmluZWQpIHJldHVybiBbXTtcbiAgICAgIGlmIChuZXdMaW5lcy5sZW5ndGggPT09IDApIHJldHVybiBbeyBkZWxldGVkOiB0cnVlIH1dO1xuICAgICAgcmV0dXJuIFsuLi5tYWtlQ2hhbmdlcyhwYWdlLCBuZXdMaW5lcywgcGFnZS51c2VySWQpXTtcbiAgICB9LFxuICAgIG9wdGlvbnMsXG4gICk7XG4iLCAiaW1wb3J0IHsgcHVzaCwgUHVzaE9wdGlvbnMsIFJldHJ5RXJyb3IgfSBmcm9tIFwiLi9wdXNoLnRzXCI7XG5pbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi4vLi4vcmVzdC91dGlsLnRzXCI7XG5cbmV4cG9ydCB0eXBlIERlbGV0ZVBhZ2VPcHRpb25zID0gUHVzaE9wdGlvbnM7XG5cbi8qKiDmjIflrprjgZfjgZ/jg5rjg7zjgrjjgpLliYrpmaTjgZnjgotcbiAqXG4gKiBAcGFyYW0gcHJvamVjdCDliYrpmaTjgZfjgZ/jgYTjg5rjg7zjgrjjga5wcm9qZWN0XG4gKiBAcGFyYW0gdGl0bGUg5YmK6Zmk44GX44Gf44GE44Oa44O844K444Gu44K/44Kk44OI44OrXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5leHBvcnQgY29uc3QgZGVsZXRlUGFnZSA9IChcbiAgcHJvamVjdDogc3RyaW5nLFxuICB0aXRsZTogc3RyaW5nLFxuICBvcHRpb25zPzogRGVsZXRlUGFnZU9wdGlvbnMsXG4pOiBQcm9taXNlPFJlc3VsdDxzdHJpbmcsIFJldHJ5RXJyb3I+PiA9PlxuICBwdXNoKFxuICAgIHByb2plY3QsXG4gICAgdGl0bGUsXG4gICAgKHBhZ2UpID0+IHBhZ2UucGVyc2lzdGVudCA/IFt7IGRlbGV0ZWQ6IHRydWUgfV0gOiBbXSxcbiAgICBvcHRpb25zLFxuICApO1xuIiwgImltcG9ydCB0eXBlIHtcbiAgTm90Rm91bmRFcnJvcixcbiAgTm90TG9nZ2VkSW5FcnJvcixcbiAgTm90TWVtYmVyRXJyb3IsXG59IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IGNvb2tpZSB9IGZyb20gXCIuL2F1dGgudHNcIjtcbmltcG9ydCB7IG1ha2VFcnJvciB9IGZyb20gXCIuL2Vycm9yLnRzXCI7XG5pbXBvcnQgeyBlbmNvZGVUaXRsZVVSSSB9IGZyb20gXCIuLi90aXRsZS50c1wiO1xuaW1wb3J0IHsgQmFzZU9wdGlvbnMsIFJlc3VsdCwgc2V0RGVmYXVsdHMgfSBmcm9tIFwiLi91dGlsLnRzXCI7XG5cbmNvbnN0IGdldFRhYmxlX3RvUmVxdWVzdDogR2V0VGFibGVbXCJ0b1JlcXVlc3RcIl0gPSAoXG4gIHByb2plY3QsXG4gIHRpdGxlLFxuICBmaWxlbmFtZSxcbiAgb3B0aW9ucyxcbikgPT4ge1xuICBjb25zdCB7IHNpZCwgaG9zdE5hbWUgfSA9IHNldERlZmF1bHRzKG9wdGlvbnMgPz8ge30pO1xuICBjb25zdCBwYXRoID0gYGh0dHBzOi8vJHtob3N0TmFtZX0vYXBpL3RhYmxlLyR7cHJvamVjdH0vJHtcbiAgICBlbmNvZGVUaXRsZVVSSSh0aXRsZSlcbiAgfS8ke2VuY29kZVVSSUNvbXBvbmVudChmaWxlbmFtZSl9LmNzdmA7XG5cbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KFxuICAgIHBhdGgsXG4gICAgc2lkID8geyBoZWFkZXJzOiB7IENvb2tpZTogY29va2llKHNpZCkgfSB9IDogdW5kZWZpbmVkLFxuICApO1xufTtcblxuY29uc3QgZ2V0VGFibGVfZnJvbVJlc3BvbnNlOiBHZXRUYWJsZVtcImZyb21SZXNwb25zZVwiXSA9IGFzeW5jIChyZXMpID0+IHtcbiAgaWYgKCFyZXMub2spIHtcbiAgICBpZiAocmVzLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAvLyByZXNwb25zZeOBjOepuuaWh+Wtl+OBruaZguOBjOOBguOCi+OBruOBp+OAgeiHquWJjeOBp+e1hOOBv+eri+OBpuOCi1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIG5hbWU6IFwiTm90Rm91bmRFcnJvclwiLFxuICAgICAgICAgIG1lc3NhZ2U6IFwiVGFibGUgbm90IGZvdW5kLlwiLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG1ha2VFcnJvcjxOb3RMb2dnZWRJbkVycm9yIHwgTm90TWVtYmVyRXJyb3I+KHJlcyk7XG4gIH1cbiAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBhd2FpdCByZXMudGV4dCgpIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEdldFRhYmxlIHtcbiAgLyoqIC9hcGkvdGFibGUvOnByb2plY3QvOnRpdGxlLzpmaWxlbmFtZS5jc3Yg44Gu6KaB5rGC44KS57WE44G/56uL44Gm44KLXG4gICAqXG4gICAqIEBwYXJhbSBwcm9qZWN0IOWPluW+l+OBl+OBn+OBhOODmuODvOOCuOOBrnByb2plY3TlkI1cbiAgICogQHBhcmFtIHRpdGxlIOWPluW+l+OBl+OBn+OBhOODmuODvOOCuOOBrnRpdGxlIOWkp+aWh+Wtl+Wwj+aWh+Wtl+OBr+WVj+OCj+OBquOBhFxuICAgKiBAcGFyYW0gZmlsZW5hbWUg44OG44O844OW44Or44Gu5ZCN5YmNXG4gICAqIEBwYXJhbSBvcHRpb25zIOOCquODl+OCt+ODp+ODs1xuICAgKiBAcmV0dXJuIHJlcXVlc3RcbiAgICovXG4gIHRvUmVxdWVzdDogKFxuICAgIHByb2plY3Q6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGZpbGVuYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IEJhc2VPcHRpb25zLFxuICApID0+IFJlcXVlc3Q7XG5cbiAgLyoqIOW4sOOBo+OBpuOBjeOBn+W/nOetlOOBi+OCieODmuODvOOCuOOBrkpTT07jg4fjg7zjgr/jgpLlj5blvpfjgZnjgotcbiAgICpcbiAgICogQHBhcmFtIHJlcyDlv5znrZRcbiAgICogQHJldHVybiDjg5rjg7zjgrjjga5KU09O44OH44O844K/XG4gICAqL1xuICBmcm9tUmVzcG9uc2U6IChyZXM6IFJlc3BvbnNlKSA9PiBQcm9taXNlPFxuICAgIFJlc3VsdDxcbiAgICAgIHN0cmluZyxcbiAgICAgIE5vdEZvdW5kRXJyb3IgfCBOb3RMb2dnZWRJbkVycm9yIHwgTm90TWVtYmVyRXJyb3JcbiAgICA+XG4gID47XG5cbiAgKFxuICAgIHByb2plY3Q6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGZpbGVuYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IEJhc2VPcHRpb25zLFxuICApOiBQcm9taXNlPFxuICAgIFJlc3VsdDxcbiAgICAgIHN0cmluZyxcbiAgICAgIE5vdEZvdW5kRXJyb3IgfCBOb3RMb2dnZWRJbkVycm9yIHwgTm90TWVtYmVyRXJyb3JcbiAgICA+XG4gID47XG59XG5cbi8qKiDmjIflrprjgZfjgZ/jg4bjg7zjg5bjg6vjgpJDU1blvaLlvI/jgaflvpfjgotcbiAqXG4gKiBAcGFyYW0gcHJvamVjdCDlj5blvpfjgZfjgZ/jgYTjg5rjg7zjgrjjga5wcm9qZWN05ZCNXG4gKiBAcGFyYW0gdGl0bGUg5Y+W5b6X44GX44Gf44GE44Oa44O844K444GudGl0bGUg5aSn5paH5a2X5bCP5paH5a2X44Gv5ZWP44KP44Gq44GEXG4gKiBAcGFyYW0gZmlsZW5hbWUg44OG44O844OW44Or44Gu5ZCN5YmNXG4gKiBAcGFyYW0gb3B0aW9ucyDjgqrjg5fjgrfjg6fjg7NcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFRhYmxlOiBHZXRUYWJsZSA9IGFzeW5jIChcbiAgcHJvamVjdCxcbiAgdGl0bGUsXG4gIGZpbGVuYW1lLFxuICBvcHRpb25zLFxuKSA9PiB7XG4gIGNvbnN0IHsgZmV0Y2ggfSA9IHNldERlZmF1bHRzKG9wdGlvbnMgPz8ge30pO1xuICBjb25zdCByZXEgPSBnZXRUYWJsZV90b1JlcXVlc3QocHJvamVjdCwgdGl0bGUsIGZpbGVuYW1lLCBvcHRpb25zKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gocmVxKTtcbiAgcmV0dXJuIGF3YWl0IGdldFRhYmxlX2Zyb21SZXNwb25zZShyZXMpO1xufTtcblxuZ2V0VGFibGUudG9SZXF1ZXN0ID0gZ2V0VGFibGVfdG9SZXF1ZXN0O1xuZ2V0VGFibGUuZnJvbVJlc3BvbnNlID0gZ2V0VGFibGVfZnJvbVJlc3BvbnNlO1xuIiwgImltcG9ydCB0eXBlIHtcbiAgTm90Rm91bmRFcnJvcixcbiAgTm90TG9nZ2VkSW5FcnJvcixcbiAgTm90TWVtYmVyRXJyb3IsXG59IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IGNvb2tpZSwgZ2V0Q1NSRlRva2VuIH0gZnJvbSBcIi4vYXV0aC50c1wiO1xuaW1wb3J0IHsgbWFrZUVycm9yIH0gZnJvbSBcIi4vZXJyb3IudHNcIjtcbmltcG9ydCB7IEV4dGVuZGVkT3B0aW9ucywgUmVzdWx0LCBzZXREZWZhdWx0cyB9IGZyb20gXCIuL3V0aWwudHNcIjtcblxuLyoqIOaMh+WumuOBl+OBn3Byb2plY3TlhoXjga7lhajjgabjga7jg6rjg7Pjgq/jgpLmm7jjgY3mj5vjgYjjgotcbiAqXG4gKiDjg6rjg7Pjgq/jgajlkIzkuIDjga7jgr/jgqTjg4jjg6vjga/mm7jjgY3mj5vjgo/jgonjgarjgYTjga7jgafms6jmhI9cbiAqIC0g44K/44Kk44OI44Or44KC5pu444GN5o+b44GI44Gf44GE44Go44GN44GvL2Jyb3dzZXIvbW9kLnRz44GuYHBhdGNoKClg44Gq44Gp44Gn5pu444GN5o+b44GI44KL44GT44GoXG4gKlxuICogQHBhcmFtIHByb2plY3Qg44GT44KM44Gn5oyH5a6a44GX44GfcHJvamVjdOWGheOBruWFqOOBpuOBruODquODs+OCr+OBjOe9ruaPm+WvvuixoeOBqOOBquOCi1xuICogQHBhcmFtIGZyb20g572u5o+b5YmN44Gu44Oq44Oz44KvXG4gKiBAcGFyYW0gdG8g572u5o+b5b6M44Gu44Oq44Oz44KvXG4gKiBAcGFyYW0gaW5pdCBjb25uZWN0LnNpZOOBquOBqVxuICogQHJldHVybiDnva7mj5vjgZXjgozjgZ/jg6rjg7Pjgq/jgYzjgYLjgaPjgZ/jg5rjg7zjgrjjga7mlbBcbiAqL1xuZXhwb3J0IGNvbnN0IHJlcGxhY2VMaW5rcyA9IGFzeW5jIChcbiAgcHJvamVjdDogc3RyaW5nLFxuICBmcm9tOiBzdHJpbmcsXG4gIHRvOiBzdHJpbmcsXG4gIGluaXQ/OiBFeHRlbmRlZE9wdGlvbnMsXG4pOiBQcm9taXNlPFxuICBSZXN1bHQ8XG4gICAgbnVtYmVyLFxuICAgIE5vdEZvdW5kRXJyb3IgfCBOb3RMb2dnZWRJbkVycm9yIHwgTm90TWVtYmVyRXJyb3JcbiAgPlxuPiA9PiB7XG4gIGNvbnN0IHsgc2lkLCBob3N0TmFtZSwgZmV0Y2gsIGNzcmYgfSA9IHNldERlZmF1bHRzKGluaXQgPz8ge30pO1xuXG4gIGNvbnN0IHJlcSA9IG5ldyBSZXF1ZXN0KFxuICAgIGBodHRwczovLyR7aG9zdE5hbWV9L2FwaS9wYWdlcy8ke3Byb2plY3R9L3JlcGxhY2UvbGlua3NgLFxuICAgIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04XCIsXG4gICAgICAgIFwiWC1DU1JGLVRPS0VOXCI6IGNzcmYgPz8gYXdhaXQgZ2V0Q1NSRlRva2VuKGluaXQpLFxuICAgICAgICAuLi4oc2lkID8geyBDb29raWU6IGNvb2tpZShzaWQpIH0gOiB7fSksXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBmcm9tLCB0byB9KSxcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHJlcSk7XG5cbiAgaWYgKCFyZXMub2spIHtcbiAgICByZXR1cm4gbWFrZUVycm9yPE5vdEZvdW5kRXJyb3IgfCBOb3RMb2dnZWRJbkVycm9yIHwgTm90TWVtYmVyRXJyb3I+KHJlcyk7XG4gIH1cblxuICAvLyBtZXNzYWdl44Gr44GvXCIyIHBhZ2VzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgdXBkYXRlZCFcIuOBqOOBhOOBhuOCiOOBhuOBquaWh+Wtl+WIl+OBjOWFpeOBo+OBpuOBhOOCi+OBr+OBmlxuICBjb25zdCB7IG1lc3NhZ2UgfSA9IChhd2FpdCByZXMuanNvbigpKSBhcyB7IG1lc3NhZ2U6IHN0cmluZyB9O1xuICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHBhcnNlSW50KG1lc3NhZ2UubWF0Y2goL1xcZCsvKT8uWzBdID8/IFwiMFwiKSB9O1xufTtcbiIsICJpbXBvcnQgdHlwZSB7XG4gIEVycm9yTGlrZSxcbiAgTm90Rm91bmRFcnJvcixcbiAgTm90TG9nZ2VkSW5FcnJvcixcbiAgU2VhcmNoZWRUaXRsZSxcbn0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuaW1wb3J0IHsgY29va2llIH0gZnJvbSBcIi4vYXV0aC50c1wiO1xuaW1wb3J0IHsgbWFrZUVycm9yIH0gZnJvbSBcIi4vZXJyb3IudHNcIjtcbmltcG9ydCB7IEJhc2VPcHRpb25zLCBSZXN1bHQsIHNldERlZmF1bHRzIH0gZnJvbSBcIi4vdXRpbC50c1wiO1xuXG4vKiog5LiN5q2j44GqZm9sbG93aW5nSWTjgpLmuKHjgZXjgozjgZ/jgajjgY3jgavnmbrnlJ/jgZnjgovjgqjjg6njg7wgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW52YWxpZEZvbGxvd2luZ0lkRXJyb3IgZXh0ZW5kcyBFcnJvckxpa2Uge1xuICBuYW1lOiBcIkludmFsaWRGb2xsb3dpbmdJZEVycm9yXCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0TGlua3NPcHRpb25zIGV4dGVuZHMgQmFzZU9wdGlvbnMge1xuICAvKiog5qyh44Gu44Oq44Oz44Kv44Oq44K544OI44KS56S644GZSUQgKi9cbiAgZm9sbG93aW5nSWQ/OiBzdHJpbmc7XG59XG5cbi8qKiDmjIflrprjgZfjgZ9wcm9qZWN044Gu44Oq44Oz44Kv44OH44O844K/44KS5Y+W5b6X44GZ44KLXG4gKlxuICogQHBhcmFtIHByb2plY3Qg44OH44O844K/44KS5Y+W5b6X44GX44Gf44GEcHJvamVjdFxuICovXG5leHBvcnQgY29uc3QgZ2V0TGlua3MgPSBhc3luYyAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgb3B0aW9ucz86IEdldExpbmtzT3B0aW9ucyxcbik6IFByb21pc2U8XG4gIFJlc3VsdDx7XG4gICAgcGFnZXM6IFNlYXJjaGVkVGl0bGVbXTtcbiAgICBmb2xsb3dpbmdJZDogc3RyaW5nO1xuICB9LCBOb3RGb3VuZEVycm9yIHwgTm90TG9nZ2VkSW5FcnJvciB8IEludmFsaWRGb2xsb3dpbmdJZEVycm9yPlxuPiA9PiB7XG4gIGNvbnN0IHsgc2lkLCBob3N0TmFtZSwgZmV0Y2gsIGZvbGxvd2luZ0lkIH0gPSBzZXREZWZhdWx0cyhvcHRpb25zID8/IHt9KTtcblxuICBjb25zdCByZXEgPSBuZXcgUmVxdWVzdChcbiAgICBgaHR0cHM6Ly8ke2hvc3ROYW1lfS9hcGkvcGFnZXMvJHtwcm9qZWN0fS9zZWFyY2gvdGl0bGVzJHtcbiAgICAgIGZvbGxvd2luZ0lkID8gYD9mb2xsb3dpbmdJZD0ke2ZvbGxvd2luZ0lkfWAgOiBcIlwiXG4gICAgfWAsXG4gICAgc2lkID8geyBoZWFkZXJzOiB7IENvb2tpZTogY29va2llKHNpZCkgfSB9IDogdW5kZWZpbmVkLFxuICApO1xuXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHJlcSk7XG5cbiAgaWYgKCFyZXMub2spIHtcbiAgICBpZiAocmVzLnN0YXR1cyA9PT0gNDIyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvazogZmFsc2UsXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgbmFtZTogXCJJbnZhbGlkRm9sbG93aW5nSWRFcnJvclwiLFxuICAgICAgICAgIG1lc3NhZ2U6IGF3YWl0IHJlcy50ZXh0KCksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBtYWtlRXJyb3I8Tm90Rm91bmRFcnJvciB8IE5vdExvZ2dlZEluRXJyb3I+KHJlcyk7XG4gIH1cblxuICBjb25zdCBwYWdlcyA9IChhd2FpdCByZXMuanNvbigpKSBhcyBTZWFyY2hlZFRpdGxlW107XG4gIHJldHVybiB7XG4gICAgb2s6IHRydWUsXG4gICAgdmFsdWU6IHsgcGFnZXMsIGZvbGxvd2luZ0lkOiByZXMuaGVhZGVycy5nZXQoXCJYLWZvbGxvd2luZy1pZFwiKSA/PyBcIlwiIH0sXG4gIH07XG59O1xuXG4vKiog5oyH5a6a44GX44GfcHJvamVjdOOBruWFqOOBpuOBruODquODs+OCr+ODh+ODvOOCv+OCkuWPluW+l+OBmeOCi1xuICpcbiAqIHJlc3BvbnNl44Gn6L+U44Gj44Gm44GN44Gf44Oq44Oz44Kv44OH44O844K/44Gu5aGK44GU44Go44Gr6L+U44GZXG4gKlxuICogQHBhcmFtIHByb2plY3Qg44OH44O844K/44KS5Y+W5b6X44GX44Gf44GEcHJvamVjdFxuICogQHJldHVybiDoqo3oqLzjgYzpgJrjgonjgarjgYvjgaPjgZ/jgonjgqjjg6njg7zjgpLjgIHpgJrjgaPjgZ/jgolhc3luYyBnZW5lcmF0b3LjgpLov5TjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IHJlYWRMaW5rc0J1bGsgPSBhc3luYyAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgb3B0aW9ucz86IEJhc2VPcHRpb25zLFxuKTogUHJvbWlzZTxcbiAgfCBOb3RGb3VuZEVycm9yXG4gIHwgTm90TG9nZ2VkSW5FcnJvclxuICB8IEludmFsaWRGb2xsb3dpbmdJZEVycm9yXG4gIHwgQXN5bmNHZW5lcmF0b3I8U2VhcmNoZWRUaXRsZVtdLCB2b2lkLCB1bmtub3duPlxuPiA9PiB7XG4gIGNvbnN0IGZpcnN0ID0gYXdhaXQgZ2V0TGlua3MocHJvamVjdCwgb3B0aW9ucyk7XG4gIGlmICghZmlyc3Qub2spIHJldHVybiBmaXJzdC52YWx1ZTtcblxuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24qICgpIHtcbiAgICB5aWVsZCBmaXJzdC52YWx1ZS5wYWdlcztcbiAgICBsZXQgZm9sbG93aW5nSWQgPSBmaXJzdC52YWx1ZS5mb2xsb3dpbmdJZDtcblxuICAgIHdoaWxlIChmb2xsb3dpbmdJZCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0TGlua3MocHJvamVjdCwgeyBmb2xsb3dpbmdJZCwgLi4ub3B0aW9ucyB9KTtcblxuICAgICAgLy8g44GZ44Gn44Gr6KqN6Ki844Gv6YCa44Gj44Gm44GE44KL44Gu44Gn44CB44GT44GT44Gn44Ko44Op44O844Gr44Gq44KL44Gv44Ga44GM44Gq44GEXG4gICAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgYXV0aG9yaXphdGlvbiBjYW5ub3QgYmUgdW5hdmFpbGFibGVcIik7XG4gICAgICB9XG4gICAgICB5aWVsZCByZXN1bHQudmFsdWUucGFnZXM7XG4gICAgICBmb2xsb3dpbmdJZCA9IHJlc3VsdC52YWx1ZS5mb2xsb3dpbmdJZDtcbiAgICB9XG4gIH0oKTtcbn07XG5cbi8qKiDmjIflrprjgZfjgZ9wcm9qZWN044Gu5YWo44Gm44Gu44Oq44Oz44Kv44OH44O844K/44KS5Y+W5b6X44GX44CB5LiA44Gk44Gl44Gk6L+U44GZXG4gKlxuICogQHBhcmFtIHByb2plY3Qg44OH44O844K/44KS5Y+W5b6X44GX44Gf44GEcHJvamVjdFxuICogQHJldHVybiDoqo3oqLzjgYzpgJrjgonjgarjgYvjgaPjgZ/jgonjgqjjg6njg7zjgpLjgIHpgJrjgaPjgZ/jgolhc3luYyBnZW5lcmF0b3LjgpLov5TjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IHJlYWRMaW5rcyA9IGFzeW5jIChcbiAgcHJvamVjdDogc3RyaW5nLFxuICBvcHRpb25zPzogQmFzZU9wdGlvbnMsXG4pOiBQcm9taXNlPFxuICB8IE5vdEZvdW5kRXJyb3JcbiAgfCBOb3RMb2dnZWRJbkVycm9yXG4gIHwgSW52YWxpZEZvbGxvd2luZ0lkRXJyb3JcbiAgfCBBc3luY0dlbmVyYXRvcjxTZWFyY2hlZFRpdGxlLCB2b2lkLCB1bmtub3duPlxuPiA9PiB7XG4gIGNvbnN0IHJlYWRlciA9IGF3YWl0IHJlYWRMaW5rc0J1bGsocHJvamVjdCwgb3B0aW9ucyk7XG4gIGlmIChcIm5hbWVcIiBpbiByZWFkZXIpIHJldHVybiByZWFkZXI7XG5cbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uKiAoKSB7XG4gICAgZm9yIGF3YWl0IChjb25zdCB0aXRsZXMgb2YgcmVhZGVyKSB7XG4gICAgICBmb3IgKGNvbnN0IHRpdGxlIG9mIHRpdGxlcykge1xuICAgICAgICB5aWVsZCB0aXRsZTtcbiAgICAgIH1cbiAgICB9XG4gIH0oKTtcbn07XG4iLCAiaW1wb3J0IHR5cGUge1xuICBOb1F1ZXJ5RXJyb3IsXG4gIE5vdEZvdW5kRXJyb3IsXG4gIE5vdExvZ2dlZEluRXJyb3IsXG4gIE5vdE1lbWJlckVycm9yLFxuICBQcm9qZWN0U2VhcmNoUmVzdWx0LFxuICBTZWFyY2hSZXN1bHQsXG59IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IGNvb2tpZSB9IGZyb20gXCIuL2F1dGgudHNcIjtcbmltcG9ydCB7IG1ha2VFcnJvciB9IGZyb20gXCIuL2Vycm9yLnRzXCI7XG5pbXBvcnQgeyBCYXNlT3B0aW9ucywgUmVzdWx0LCBzZXREZWZhdWx0cyB9IGZyb20gXCIuL3V0aWwudHNcIjtcblxuLyoqIHNlYXJjaCBhIHByb2plY3QgZm9yIHBhZ2VzXG4gKlxuICogQHBhcmFtIHF1ZXJ5IOaknOe0ouiqnuWPpVxuICogQHBhcmFtIHByb2plY3Qg5qSc57Si56+E5Zuy44Go44GZ44KLcHJvamVjdOOBruWQjeWJjVxuICogQHBhcmFtIGluaXQgY29ubmVjdC5zaWQgZXRjLlxuICovXG5leHBvcnQgY29uc3Qgc2VhcmNoRm9yUGFnZXMgPSBhc3luYyAoXG4gIHF1ZXJ5OiBzdHJpbmcsXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgaW5pdD86IEJhc2VPcHRpb25zLFxuKTogUHJvbWlzZTxcbiAgUmVzdWx0PFxuICAgIFNlYXJjaFJlc3VsdCxcbiAgICBOb3RGb3VuZEVycm9yIHwgTm90TWVtYmVyRXJyb3IgfCBOb3RMb2dnZWRJbkVycm9yIHwgTm9RdWVyeUVycm9yXG4gID5cbj4gPT4ge1xuICBjb25zdCB7IHNpZCwgaG9zdE5hbWUsIGZldGNoIH0gPSBzZXREZWZhdWx0cyhpbml0ID8/IHt9KTtcblxuICBjb25zdCByZXEgPSBuZXcgUmVxdWVzdChcbiAgICBgaHR0cHM6Ly8ke2hvc3ROYW1lfS9hcGkvcGFnZXMvJHtwcm9qZWN0fS9zZWFyY2gvcXVlcnk/cT0ke1xuICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5KVxuICAgIH1gLFxuICAgIHNpZCA/IHsgaGVhZGVyczogeyBDb29raWU6IGNvb2tpZShzaWQpIH0gfSA6IHVuZGVmaW5lZCxcbiAgKTtcblxuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChyZXEpO1xuXG4gIGlmICghcmVzLm9rKSB7XG4gICAgaWYgKHJlcy5zdGF0dXMgPT09IDQyMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIG5hbWU6IFwiTm9RdWVyeUVycm9yXCIsXG4gICAgICAgICAgbWVzc2FnZTogKGF3YWl0IHJlcy5qc29uKCkpLm1lc3NhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbWFrZUVycm9yPE5vdEZvdW5kRXJyb3IgfCBOb3RMb2dnZWRJbkVycm9yIHwgTm90TWVtYmVyRXJyb3I+KHJlcyk7XG4gIH1cblxuICBjb25zdCB2YWx1ZSA9IChhd2FpdCByZXMuanNvbigpKSBhcyBTZWFyY2hSZXN1bHQ7XG4gIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZSB9O1xufTtcblxuLyoqIHNlYXJjaCBmb3Igam9pbmVkIHByb2plY3RzXG4gKlxuICogQHBhcmFtIHF1ZXJ5IOaknOe0ouiqnuWPpVxuICogQHBhcmFtIGluaXQgY29ubmVjdC5zaWQgZXRjLlxuICovXG5leHBvcnQgY29uc3Qgc2VhcmNoRm9ySm9pbmVkUHJvamVjdHMgPSBhc3luYyAoXG4gIHF1ZXJ5OiBzdHJpbmcsXG4gIGluaXQ/OiBCYXNlT3B0aW9ucyxcbik6IFByb21pc2U8XG4gIFJlc3VsdDxcbiAgICBQcm9qZWN0U2VhcmNoUmVzdWx0LFxuICAgIE5vdExvZ2dlZEluRXJyb3IgfCBOb1F1ZXJ5RXJyb3JcbiAgPlxuPiA9PiB7XG4gIGNvbnN0IHsgc2lkLCBob3N0TmFtZSwgZmV0Y2ggfSA9IHNldERlZmF1bHRzKGluaXQgPz8ge30pO1xuXG4gIGNvbnN0IHJlcSA9IG5ldyBSZXF1ZXN0KFxuICAgIGBodHRwczovLyR7aG9zdE5hbWV9L2FwaS9wcm9qZWN0cy9zZWFyY2gvcXVlcnk/cT0ke1xuICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5KVxuICAgIH1gLFxuICAgIHNpZCA/IHsgaGVhZGVyczogeyBDb29raWU6IGNvb2tpZShzaWQpIH0gfSA6IHVuZGVmaW5lZCxcbiAgKTtcblxuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChyZXEpO1xuXG4gIGlmICghcmVzLm9rKSB7XG4gICAgaWYgKHJlcy5zdGF0dXMgPT09IDQyMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIG5hbWU6IFwiTm9RdWVyeUVycm9yXCIsXG4gICAgICAgICAgbWVzc2FnZTogKGF3YWl0IHJlcy5qc29uKCkpLm1lc3NhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbWFrZUVycm9yPE5vdExvZ2dlZEluRXJyb3I+KHJlcyk7XG4gIH1cblxuICBjb25zdCB2YWx1ZSA9IChhd2FpdCByZXMuanNvbigpKSBhcyBQcm9qZWN0U2VhcmNoUmVzdWx0O1xuICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWUgfTtcbn07XG5cbi8qKiBzZWFyY2ggZm9yIHdhdGNoIGxpc3RcbiAqXG4gKiB3YXRjaCBsaXN044Go6YqY5omT44Gj44Gm44GE44KL44GM44CB5a6f6Zqb44Gr44Gv5Y+C5Yqg44GX44Gm44GE44Gq44GEcHVibGljIHByb2plY3TjgarjgonjganjgozjgafjgoLmpJzntKLjgafjgY3jgotcbiAqXG4gKiDlj4LliqDjgZfjgabjgYTjgotwcm9qZWN044GuaWTjga/mjIflrprjgZfjgabjgoLnhKHoppbjgZXjgozjgovjgaDjgZFcbiAqXG4gKiBAcGFyYW0gcXVlcnkg5qSc57Si6Kqe5Y+lXG4gKiBAcGFyYW0gcHJvamVjdElkcyDmpJzntKLlgJnoo5zjga5wcm9qZWN044GuaWTjga7jg6rjgrnjg4hcbiAqIEBwYXJhbSBpbml0IGNvbm5lY3Quc2lkIGV0Yy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlYXJjaEZvcldhdGNoTGlzdCA9IGFzeW5jIChcbiAgcXVlcnk6IHN0cmluZyxcbiAgcHJvamVjdElkczogc3RyaW5nW10sXG4gIGluaXQ/OiBCYXNlT3B0aW9ucyxcbik6IFByb21pc2U8XG4gIFJlc3VsdDxcbiAgICBQcm9qZWN0U2VhcmNoUmVzdWx0LFxuICAgIE5vdExvZ2dlZEluRXJyb3IgfCBOb1F1ZXJ5RXJyb3JcbiAgPlxuPiA9PiB7XG4gIGNvbnN0IHsgc2lkLCBob3N0TmFtZSwgZmV0Y2ggfSA9IHNldERlZmF1bHRzKGluaXQgPz8ge30pO1xuXG4gIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgcGFyYW1zLmFwcGVuZChcInFcIiwgZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5KSk7XG4gIGZvciAoY29uc3QgcHJvamVjdElkIG9mIHByb2plY3RJZHMpIHtcbiAgICBwYXJhbXMuYXBwZW5kKFwiaWRzXCIsIHByb2plY3RJZCk7XG4gIH1cblxuICBjb25zdCByZXEgPSBuZXcgUmVxdWVzdChcbiAgICBgaHR0cHM6Ly8ke2hvc3ROYW1lfS9hcGkvcHJvamVjdHMvc2VhcmNoL3dhdGNoLWxpc3Q/JHtwYXJhbXMudG9TdHJpbmcoKX1gLFxuICAgIHNpZCA/IHsgaGVhZGVyczogeyBDb29raWU6IGNvb2tpZShzaWQpIH0gfSA6IHVuZGVmaW5lZCxcbiAgKTtcblxuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChyZXEpO1xuXG4gIGlmICghcmVzLm9rKSB7XG4gICAgaWYgKHJlcy5zdGF0dXMgPT09IDQyMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIC8vIOacrOW9k+OBr3Byb2plY3QgaWTjgYzkuI3mraPjgarjgajjgY3jgoI0MjIgZXJyb3LjgavjgarjgotcbiAgICAgICAgICBuYW1lOiBcIk5vUXVlcnlFcnJvclwiLFxuICAgICAgICAgIG1lc3NhZ2U6IChhd2FpdCByZXMuanNvbigpKS5tZXNzYWdlLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG1ha2VFcnJvcjxOb3RMb2dnZWRJbkVycm9yPihyZXMpO1xuICB9XG5cbiAgY29uc3QgdmFsdWUgPSAoYXdhaXQgcmVzLmpzb24oKSkgYXMgUHJvamVjdFNlYXJjaFJlc3VsdDtcbiAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlIH07XG59O1xuIiwgImltcG9ydCB0eXBlIHtcbiAgQmFkUmVxdWVzdEVycm9yLFxuICBJbnZhbGlkVVJMRXJyb3IsXG4gIFNlc3Npb25FcnJvcixcbn0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuaW1wb3J0IHsgY29va2llLCBnZXRDU1JGVG9rZW4gfSBmcm9tIFwiLi9hdXRoLnRzXCI7XG5pbXBvcnQgeyBtYWtlRXJyb3IgfSBmcm9tIFwiLi9lcnJvci50c1wiO1xuaW1wb3J0IHsgRXh0ZW5kZWRPcHRpb25zLCBSZXN1bHQsIHNldERlZmF1bHRzIH0gZnJvbSBcIi4vdXRpbC50c1wiO1xuXG4vKiog5oyH5a6a44GX44GfVVJM44Gud2ViIHBhZ2Xjga50aXRsZeOCknNjcmFwYm9444Guc2VydmVy57WM55Sx44Gn5Y+W5b6X44GZ44KLXG4gKlxuICogQHBhcmFtIHVybCDlj5blvpfjgZfjgZ/jgYRVUkxcbiAqIEBwYXJhbSBpbml0IGNvbm5lY3Quc2lk44Gq44GpXG4gKiBAcmV0dXJuIHdlYiBwYWdl44GudGlsdGVcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFdlYlBhZ2VUaXRsZSA9IGFzeW5jIChcbiAgdXJsOiBzdHJpbmcgfCBVUkwsXG4gIGluaXQ/OiBFeHRlbmRlZE9wdGlvbnMsXG4pOiBQcm9taXNlPFxuICBSZXN1bHQ8XG4gICAgc3RyaW5nLFxuICAgIHwgU2Vzc2lvbkVycm9yXG4gICAgfCBJbnZhbGlkVVJMRXJyb3JcbiAgICB8IEJhZFJlcXVlc3RFcnJvclxuICA+XG4+ID0+IHtcbiAgY29uc3QgeyBzaWQsIGhvc3ROYW1lLCBmZXRjaCwgY3NyZiB9ID0gc2V0RGVmYXVsdHMoaW5pdCA/PyB7fSk7XG5cbiAgY29uc3QgcmVxID0gbmV3IFJlcXVlc3QoXG4gICAgYGh0dHBzOi8vJHtob3N0TmFtZX0vYXBpL2VtYmVkLXRleHQvdXJsP3VybD0ke1xuICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHVybC50b1N0cmluZygpKVxuICAgIH1gLFxuICAgIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04XCIsXG4gICAgICAgIFwiWC1DU1JGLVRPS0VOXCI6IGNzcmYgPz8gYXdhaXQgZ2V0Q1NSRlRva2VuKGluaXQpLFxuICAgICAgICAuLi4oc2lkID8geyBDb29raWU6IGNvb2tpZShzaWQpIH0gOiB7fSksXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyB0aW1lb3V0OiAzMDAwIH0pLFxuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gocmVxKTtcblxuICBpZiAoIXJlcy5vaykge1xuICAgIGlmIChyZXMuc3RhdHVzID09PSA0MjIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBuYW1lOiBcIkludmFsaWRVUkxFcnJvclwiLFxuICAgICAgICAgIG1lc3NhZ2U6IChhd2FpdCByZXMuanNvbigpKS5tZXNzYWdlIGFzIHN0cmluZyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBtYWtlRXJyb3I8U2Vzc2lvbkVycm9yIHwgQmFkUmVxdWVzdEVycm9yPihyZXMpO1xuICB9XG5cbiAgY29uc3QgeyB0aXRsZSB9ID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIHsgdGl0bGU6IHN0cmluZyB9O1xuICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHRpdGxlIH07XG59O1xuIiwgImltcG9ydCB0eXBlIHtcbiAgQmFkUmVxdWVzdEVycm9yLFxuICBJbnZhbGlkVVJMRXJyb3IsXG4gIFNlc3Npb25FcnJvcixcbiAgVHdlZXRJbmZvLFxufSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1yZXN0LnRzXCI7XG5pbXBvcnQgeyBjb29raWUsIGdldENTUkZUb2tlbiB9IGZyb20gXCIuL2F1dGgudHNcIjtcbmltcG9ydCB7IG1ha2VFcnJvciB9IGZyb20gXCIuL2Vycm9yLnRzXCI7XG5pbXBvcnQgeyBFeHRlbmRlZE9wdGlvbnMsIFJlc3VsdCwgc2V0RGVmYXVsdHMgfSBmcm9tIFwiLi91dGlsLnRzXCI7XG5cbi8qKiDmjIflrprjgZfjgZ9Ud2VldOOBruaDheWgseOCkuWPluW+l+OBmeOCi1xuICpcbiAqIEBwYXJhbSB1cmwg5Y+W5b6X44GX44Gf44GEVHdlZXTjga5VUkxcbiAqIEBwYXJhbSBpbml0IGNvbm5lY3Quc2lk44Gq44GpXG4gKiBAcmV0dXJuIHR3ZWV044Gu5Lit6Lqr44Go44GLXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRUd2VldEluZm8gPSBhc3luYyAoXG4gIHVybDogc3RyaW5nIHwgVVJMLFxuICBpbml0PzogRXh0ZW5kZWRPcHRpb25zLFxuKTogUHJvbWlzZTxcbiAgUmVzdWx0PFxuICAgIFR3ZWV0SW5mbyxcbiAgICB8IFNlc3Npb25FcnJvclxuICAgIHwgSW52YWxpZFVSTEVycm9yXG4gICAgfCBCYWRSZXF1ZXN0RXJyb3JcbiAgPlxuPiA9PiB7XG4gIGNvbnN0IHsgc2lkLCBob3N0TmFtZSwgZmV0Y2gsIGNzcmYgfSA9IHNldERlZmF1bHRzKGluaXQgPz8ge30pO1xuICBjb25zdCByZXEgPSBuZXcgUmVxdWVzdChcbiAgICBgaHR0cHM6Ly8ke2hvc3ROYW1lfS9hcGkvZW1iZWQtdGV4dC90d2l0dGVyP3VybD0ke1xuICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHVybC50b1N0cmluZygpKVxuICAgIH1gLFxuICAgIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04XCIsXG4gICAgICAgIFwiWC1DU1JGLVRPS0VOXCI6IGNzcmYgPz8gYXdhaXQgZ2V0Q1NSRlRva2VuKGluaXQpLFxuICAgICAgICAuLi4oc2lkID8geyBDb29raWU6IGNvb2tpZShzaWQpIH0gOiB7fSksXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyB0aW1lb3V0OiAzMDAwIH0pLFxuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gocmVxKTtcblxuICBpZiAoIXJlcy5vaykge1xuICAgIGlmIChyZXMuc3RhdHVzID09PSA0MjIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBuYW1lOiBcIkludmFsaWRVUkxFcnJvclwiLFxuICAgICAgICAgIG1lc3NhZ2U6IChhd2FpdCByZXMuanNvbigpKS5tZXNzYWdlIGFzIHN0cmluZyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBtYWtlRXJyb3I8U2Vzc2lvbkVycm9yIHwgQmFkUmVxdWVzdEVycm9yPihyZXMpO1xuICB9XG5cbiAgY29uc3QgdHdlZXQgPSAoYXdhaXQgcmVzLmpzb24oKSkgYXMgVHdlZXRJbmZvO1xuICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHR3ZWV0IH07XG59O1xuIiwgImltcG9ydCB0eXBlIHsgTm90TG9nZ2VkSW5FcnJvciB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IGNvb2tpZSB9IGZyb20gXCIuL2F1dGgudHNcIjtcbmltcG9ydCB7IG1ha2VFcnJvciB9IGZyb20gXCIuL2Vycm9yLnRzXCI7XG5pbXBvcnQgeyBCYXNlT3B0aW9ucywgUmVzdWx0LCBzZXREZWZhdWx0cyB9IGZyb20gXCIuL3V0aWwudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHZXRHeWF6b1Rva2VuT3B0aW9ucyBleHRlbmRzIEJhc2VPcHRpb25zIHtcbiAgLyoqIEd5YXpvIFRlYW1z44Gu44OB44O844Og5ZCNXG4gICAqXG4gICAqIEd5YXpvIFRlYW1z44GndXBsb2Fk44GX44Gf44GE44Go44GN44Gr5L2/44GGXG4gICAqL1xuICBneWF6b1RlYW1zTmFtZT86IHN0cmluZztcbn1cblxuLyoqIEd5YXpvIE9BdXRoIHVwbG9hZOOBp+S9v+OBhmFjY2VzcyB0b2tlbuOCkuWPluW+l+OBmeOCi1xuICpcbiAqIEBwYXJhbSBpbml0IGNvbm5lY3Quc2lk44Gq44GpXG4gKiBAcmV0dXJuIGFjY2VzcyB0b2tlblxuICovXG5leHBvcnQgY29uc3QgZ2V0R3lhem9Ub2tlbiA9IGFzeW5jIChcbiAgaW5pdD86IEdldEd5YXpvVG9rZW5PcHRpb25zLFxuKTogUHJvbWlzZTxcbiAgUmVzdWx0PFxuICAgIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBOb3RMb2dnZWRJbkVycm9yXG4gID5cbj4gPT4ge1xuICBjb25zdCB7IHNpZCwgaG9zdE5hbWUsIGd5YXpvVGVhbXNOYW1lIH0gPSBzZXREZWZhdWx0cyhpbml0ID8/IHt9KTtcbiAgY29uc3QgcmVxID0gbmV3IFJlcXVlc3QoXG4gICAgYGh0dHBzOi8vJHtob3N0TmFtZX0vYXBpL2xvZ2luL2d5YXpvL29hdXRoLXVwbG9hZC90b2tlbiR7XG4gICAgICBneWF6b1RlYW1zTmFtZSA/IGA/Z3lhem9UZWFtc05hbWU9JHtneWF6b1RlYW1zTmFtZX1gIDogXCJcIlxuICAgIH1gLFxuICAgIHNpZCA/IHsgaGVhZGVyczogeyBDb29raWU6IGNvb2tpZShzaWQpIH0gfSA6IHVuZGVmaW5lZCxcbiAgKTtcblxuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChyZXEpO1xuICBpZiAoIXJlcy5vaykge1xuICAgIHJldHVybiBtYWtlRXJyb3I8Tm90TG9nZ2VkSW5FcnJvcj4ocmVzKTtcbiAgfVxuXG4gIGNvbnN0IHsgdG9rZW4gfSA9IChhd2FpdCByZXMuanNvbigpKSBhcyB7IHRva2VuPzogc3RyaW5nIH07XG4gIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogdG9rZW4gfTtcbn07XG4iLCAiaW1wb3J0IHR5cGUge1xuICBOb3RGb3VuZEVycm9yLFxuICBOb3RMb2dnZWRJbkVycm9yLFxuICBOb3RNZW1iZXJFcnJvcixcbn0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuaW1wb3J0IHsgY29va2llIH0gZnJvbSBcIi4vYXV0aC50c1wiO1xuaW1wb3J0IHsgbWFrZUVycm9yIH0gZnJvbSBcIi4vZXJyb3IudHNcIjtcbmltcG9ydCB7IGVuY29kZVRpdGxlVVJJIH0gZnJvbSBcIi4uL3RpdGxlLnRzXCI7XG5pbXBvcnQgeyBCYXNlT3B0aW9ucywgUmVzdWx0LCBzZXREZWZhdWx0cyB9IGZyb20gXCIuL3V0aWwudHNcIjtcblxuY29uc3QgZ2V0Q29kZUJsb2NrX3RvUmVxdWVzdDogR2V0Q29kZUJsb2NrW1widG9SZXF1ZXN0XCJdID0gKFxuICBwcm9qZWN0LFxuICB0aXRsZSxcbiAgZmlsZW5hbWUsXG4gIG9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgeyBzaWQsIGhvc3ROYW1lIH0gPSBzZXREZWZhdWx0cyhvcHRpb25zID8/IHt9KTtcbiAgY29uc3QgcGF0aCA9IGBodHRwczovLyR7aG9zdE5hbWV9L2FwaS9jb2RlLyR7cHJvamVjdH0vJHtcbiAgICBlbmNvZGVUaXRsZVVSSSh0aXRsZSlcbiAgfS8ke2VuY29kZVRpdGxlVVJJKGZpbGVuYW1lKX1gO1xuXG4gIHJldHVybiBuZXcgUmVxdWVzdChcbiAgICBwYXRoLFxuICAgIHNpZCA/IHsgaGVhZGVyczogeyBDb29raWU6IGNvb2tpZShzaWQpIH0gfSA6IHVuZGVmaW5lZCxcbiAgKTtcbn07XG5cbmNvbnN0IGdldENvZGVCbG9ja19mcm9tUmVzcG9uc2U6IEdldENvZGVCbG9ja1tcImZyb21SZXNwb25zZVwiXSA9IGFzeW5jIChyZXMpID0+IHtcbiAgaWYgKCFyZXMub2spIHtcbiAgICByZXR1cm4gcmVzLnN0YXR1cyA9PT0gNDA0ICYmXG4gICAgICAgIHJlcy5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKT8uaW5jbHVkZXM/LihcInRleHQvcGxhaW5cIilcbiAgICAgID8ge1xuICAgICAgICBvazogZmFsc2UsXG4gICAgICAgIHZhbHVlOiB7IG5hbWU6IFwiTm90Rm91bmRFcnJvclwiLCBtZXNzYWdlOiBcIkNvZGUgYmxvY2sgaXMgbm90IGZvdW5kXCIgfSxcbiAgICAgIH1cbiAgICAgIDogbWFrZUVycm9yPE5vdEZvdW5kRXJyb3IgfCBOb3RMb2dnZWRJbkVycm9yIHwgTm90TWVtYmVyRXJyb3I+KHJlcyk7XG4gIH1cbiAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBhd2FpdCByZXMudGV4dCgpIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEdldENvZGVCbG9jayB7XG4gIC8qKiAvYXBpL2NvZGUvOnByb2plY3QvOnRpdGxlLzpmaWxlbmFtZSDjga7opoHmsYLjgpLntYTjgb/nq4vjgabjgotcbiAgICpcbiAgICogQHBhcmFtIHByb2plY3Qg5Y+W5b6X44GX44Gf44GE44Oa44O844K444GucHJvamVjdOWQjVxuICAgKiBAcGFyYW0gdGl0bGUg5Y+W5b6X44GX44Gf44GE44Oa44O844K444GudGl0bGUg5aSn5paH5a2X5bCP5paH5a2X44Gv5ZWP44KP44Gq44GEXG4gICAqIEBwYXJhbSBmaWxlbmFtZSDlj5blvpfjgZfjgZ/jgYTjgrPjg7zjg4njg5bjg63jg4Pjgq/jga7jg5XjgqHjgqTjg6vlkI1cbiAgICogQHBhcmFtIG9wdGlvbnMg44Kq44OX44K344On44OzXG4gICAqIEByZXR1cm4gcmVxdWVzdFxuICAgKi9cbiAgdG9SZXF1ZXN0OiAoXG4gICAgcHJvamVjdDogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogQmFzZU9wdGlvbnMsXG4gICkgPT4gUmVxdWVzdDtcblxuICAvKiog5biw44Gj44Gm44GN44Gf5b+c562U44GL44KJ44Kz44O844OJ44KS5Y+W5b6X44GZ44KLXG4gICAqXG4gICAqIEBwYXJhbSByZXMg5b+c562UXG4gICAqIEByZXR1cm4g44Kz44O844OJXG4gICAqL1xuICBmcm9tUmVzcG9uc2U6IChyZXM6IFJlc3BvbnNlKSA9PiBQcm9taXNlPFxuICAgIFJlc3VsdDxcbiAgICAgIHN0cmluZyxcbiAgICAgIE5vdEZvdW5kRXJyb3IgfCBOb3RMb2dnZWRJbkVycm9yIHwgTm90TWVtYmVyRXJyb3JcbiAgICA+XG4gID47XG5cbiAgKFxuICAgIHByb2plY3Q6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGZpbGVuYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IEJhc2VPcHRpb25zLFxuICApOiBQcm9taXNlPFxuICAgIFJlc3VsdDxcbiAgICAgIHN0cmluZyxcbiAgICAgIE5vdEZvdW5kRXJyb3IgfCBOb3RMb2dnZWRJbkVycm9yIHwgTm90TWVtYmVyRXJyb3JcbiAgICA+XG4gID47XG59XG5cbi8qKiDmjIflrprjgZfjgZ/jgrPjg7zjg4njg5bjg63jg4Pjgq/kuK3jga7jg4bjgq3jgrnjg4jjgpLlj5blvpfjgZnjgotcbiAqXG4gKiBAcGFyYW0gcHJvamVjdCDlj5blvpfjgZfjgZ/jgYTjg5rjg7zjgrjjga5wcm9qZWN05ZCNXG4gKiBAcGFyYW0gdGl0bGUg5Y+W5b6X44GX44Gf44GE44Oa44O844K444GudGl0bGUg5aSn5paH5a2X5bCP5paH5a2X44Gv5ZWP44KP44Gq44GEXG4gKiBAcGFyYW0gZmlsZW5hbWUg5Y+W5b6X44GX44Gf44GE44Kz44O844OJ44OW44Ot44OD44Kv44Gu44OV44Kh44Kk44Or5ZCNXG4gKiBAcGFyYW0gb3B0aW9ucyDjgqrjg5fjgrfjg6fjg7NcbiAqL1xuZXhwb3J0IGNvbnN0IGdldENvZGVCbG9jazogR2V0Q29kZUJsb2NrID0gYXN5bmMgKFxuICBwcm9qZWN0LFxuICB0aXRsZSxcbiAgZmlsZW5hbWUsXG4gIG9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgeyBmZXRjaCB9ID0gc2V0RGVmYXVsdHMob3B0aW9ucyA/PyB7fSk7XG4gIGNvbnN0IHJlcSA9IGdldENvZGVCbG9ja190b1JlcXVlc3QocHJvamVjdCwgdGl0bGUsIGZpbGVuYW1lLCBvcHRpb25zKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gocmVxKTtcbiAgcmV0dXJuIGF3YWl0IGdldENvZGVCbG9ja19mcm9tUmVzcG9uc2UocmVzKTtcbn07XG5cbmdldENvZGVCbG9jay50b1JlcXVlc3QgPSBnZXRDb2RlQmxvY2tfdG9SZXF1ZXN0O1xuZ2V0Q29kZUJsb2NrLmZyb21SZXNwb25zZSA9IGdldENvZGVCbG9ja19mcm9tUmVzcG9uc2U7XG4iLCAiLy8gQ29weXJpZ2h0IDIwMDkgVGhlIEdvIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZ29sYW5nL2dvL2Jsb2IvbWFzdGVyL0xJQ0VOU0Vcbi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG5cbi8qKiBQb3J0IG9mIHRoZSBHb1xuICogW2VuY29kaW5nL2hleF0oaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nby9ibG9iL2dvMS4xMi41L3NyYy9lbmNvZGluZy9oZXgvaGV4LmdvKVxuICogbGlicmFyeS5cbiAqXG4gKiBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmNvbnN0IGhleFRhYmxlID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKFwiMDEyMzQ1Njc4OWFiY2RlZlwiKTtcblxuZnVuY3Rpb24gZXJySW52YWxpZEJ5dGUoYnl0ZTogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGJ5dGUgJyR7U3RyaW5nLmZyb21DaGFyQ29kZShieXRlKX0nYCk7XG59XG5cbmZ1bmN0aW9uIGVyckxlbmd0aCgpIHtcbiAgcmV0dXJuIG5ldyBSYW5nZUVycm9yKFwiT2RkIGxlbmd0aCBoZXggc3RyaW5nXCIpO1xufVxuXG4vKiogQ29udmVydHMgYSBoZXggY2hhcmFjdGVyIGludG8gaXRzIHZhbHVlLiAqL1xuZnVuY3Rpb24gZnJvbUhleENoYXIoYnl0ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgLy8gJzAnIDw9IGJ5dGUgJiYgYnl0ZSA8PSAnOSdcbiAgaWYgKDQ4IDw9IGJ5dGUgJiYgYnl0ZSA8PSA1NykgcmV0dXJuIGJ5dGUgLSA0ODtcbiAgLy8gJ2EnIDw9IGJ5dGUgJiYgYnl0ZSA8PSAnZidcbiAgaWYgKDk3IDw9IGJ5dGUgJiYgYnl0ZSA8PSAxMDIpIHJldHVybiBieXRlIC0gOTcgKyAxMDtcbiAgLy8gJ0EnIDw9IGJ5dGUgJiYgYnl0ZSA8PSAnRidcbiAgaWYgKDY1IDw9IGJ5dGUgJiYgYnl0ZSA8PSA3MCkgcmV0dXJuIGJ5dGUgLSA2NSArIDEwO1xuXG4gIHRocm93IGVyckludmFsaWRCeXRlKGJ5dGUpO1xufVxuXG4vKiogRW5jb2RlcyBgc3JjYCBpbnRvIGBzcmMubGVuZ3RoICogMmAgYnl0ZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlKHNyYzogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCBkc3QgPSBuZXcgVWludDhBcnJheShzcmMubGVuZ3RoICogMik7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZHN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgdiA9IHNyY1tpXTtcbiAgICBkc3RbaSAqIDJdID0gaGV4VGFibGVbdiA+PiA0XTtcbiAgICBkc3RbaSAqIDIgKyAxXSA9IGhleFRhYmxlW3YgJiAweDBmXTtcbiAgfVxuICByZXR1cm4gZHN0O1xufVxuXG4vKipcbiAqIERlY29kZXMgYHNyY2AgaW50byBgc3JjLmxlbmd0aCAvIDJgIGJ5dGVzLlxuICogSWYgdGhlIGlucHV0IGlzIG1hbGZvcm1lZCwgYW4gZXJyb3Igd2lsbCBiZSB0aHJvd24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGUoc3JjOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XG4gIGNvbnN0IGRzdCA9IG5ldyBVaW50OEFycmF5KHNyYy5sZW5ndGggLyAyKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkc3QubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBhID0gZnJvbUhleENoYXIoc3JjW2kgKiAyXSk7XG4gICAgY29uc3QgYiA9IGZyb21IZXhDaGFyKHNyY1tpICogMiArIDFdKTtcbiAgICBkc3RbaV0gPSAoYSA8PCA0KSB8IGI7XG4gIH1cblxuICBpZiAoc3JjLmxlbmd0aCAlIDIgPT0gMSkge1xuICAgIC8vIENoZWNrIGZvciBpbnZhbGlkIGNoYXIgYmVmb3JlIHJlcG9ydGluZyBiYWQgbGVuZ3RoLFxuICAgIC8vIHNpbmNlIHRoZSBpbnZhbGlkIGNoYXIgKGlmIHByZXNlbnQpIGlzIGFuIGVhcmxpZXIgcHJvYmxlbS5cbiAgICBmcm9tSGV4Q2hhcihzcmNbZHN0Lmxlbmd0aCAqIDJdKTtcbiAgICB0aHJvdyBlcnJMZW5ndGgoKTtcbiAgfVxuXG4gIHJldHVybiBkc3Q7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0ICogYXMgaGV4IGZyb20gXCIuLi9lbmNvZGluZy9oZXgudHNcIjtcblxuY29uc3QgVFlQRV9FUlJPUl9NU0cgPSBcIm1kNTogYGRhdGFgIGlzIGludmFsaWQgdHlwZVwiO1xuY29uc3QgQkxPQ0tfU0laRSA9IDY0O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlID0gc3RyaW5nIHwgQXJyYXlCdWZmZXI7XG5cbi8qKiBNZDUgaGFzaCAqL1xuZXhwb3J0IGNsYXNzIE1kNSB7XG4gICNhOiBudW1iZXI7XG4gICNiOiBudW1iZXI7XG4gICNjOiBudW1iZXI7XG4gICNkOiBudW1iZXI7XG4gICNibG9jazogVWludDhBcnJheTtcbiAgI3BvczogbnVtYmVyO1xuICAjbjA6IG51bWJlcjtcbiAgI24xOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy4jYSA9IDB4Njc0NTIzMDE7XG4gICAgdGhpcy4jYiA9IDB4ZWZjZGFiODk7XG4gICAgdGhpcy4jYyA9IDB4OThiYWRjZmU7XG4gICAgdGhpcy4jZCA9IDB4MTAzMjU0NzY7XG4gICAgdGhpcy4jYmxvY2sgPSBuZXcgVWludDhBcnJheShCTE9DS19TSVpFKTtcbiAgICB0aGlzLiNwb3MgPSAwO1xuICAgIHRoaXMuI24wID0gMDtcbiAgICB0aGlzLiNuMSA9IDA7XG4gIH1cblxuICAjYWRkTGVuZ3RoKGxlbjogbnVtYmVyKSB7XG4gICAgbGV0IG4wID0gdGhpcy4jbjA7XG4gICAgbjAgKz0gbGVuO1xuICAgIGlmIChuMCA+IDB4ZmZmZmZmZmYpIHRoaXMuI24xICs9IDE7XG4gICAgdGhpcy4jbjAgPSBuMCA+Pj4gMDtcbiAgfVxuXG4gICNoYXNoKGJsb2NrOiBVaW50OEFycmF5KSB7XG4gICAgbGV0IGEgPSB0aGlzLiNhO1xuICAgIGxldCBiID0gdGhpcy4jYjtcbiAgICBsZXQgYyA9IHRoaXMuI2M7XG4gICAgbGV0IGQgPSB0aGlzLiNkO1xuXG4gICAgY29uc3QgYmxrID0gKGk6IG51bWJlcik6IG51bWJlciA9PlxuICAgICAgYmxvY2tbaV0gfFxuICAgICAgKGJsb2NrW2kgKyAxXSA8PCA4KSB8XG4gICAgICAoYmxvY2tbaSArIDJdIDw8IDE2KSB8XG4gICAgICAoYmxvY2tbaSArIDNdIDw8IDI0KTtcblxuICAgIGNvbnN0IHJvbDMyID0gKHg6IG51bWJlciwgbjogbnVtYmVyKTogbnVtYmVyID0+ICh4IDw8IG4pIHwgKHggPj4+ICgzMiAtIG4pKTtcblxuICAgIGNvbnN0IHgwID0gYmxrKDApO1xuICAgIGNvbnN0IHgxID0gYmxrKDQpO1xuICAgIGNvbnN0IHgyID0gYmxrKDgpO1xuICAgIGNvbnN0IHgzID0gYmxrKDEyKTtcbiAgICBjb25zdCB4NCA9IGJsaygxNik7XG4gICAgY29uc3QgeDUgPSBibGsoMjApO1xuICAgIGNvbnN0IHg2ID0gYmxrKDI0KTtcbiAgICBjb25zdCB4NyA9IGJsaygyOCk7XG4gICAgY29uc3QgeDggPSBibGsoMzIpO1xuICAgIGNvbnN0IHg5ID0gYmxrKDM2KTtcbiAgICBjb25zdCB4YSA9IGJsayg0MCk7XG4gICAgY29uc3QgeGIgPSBibGsoNDQpO1xuICAgIGNvbnN0IHhjID0gYmxrKDQ4KTtcbiAgICBjb25zdCB4ZCA9IGJsayg1Mik7XG4gICAgY29uc3QgeGUgPSBibGsoNTYpO1xuICAgIGNvbnN0IHhmID0gYmxrKDYwKTtcblxuICAgIC8vIHJvdW5kIDFcbiAgICBhID0gYiArIHJvbDMyKCgoKGMgXiBkKSAmIGIpIF4gZCkgKyBhICsgeDAgKyAweGQ3NmFhNDc4LCA3KTtcbiAgICBkID0gYSArIHJvbDMyKCgoKGIgXiBjKSAmIGEpIF4gYykgKyBkICsgeDEgKyAweGU4YzdiNzU2LCAxMik7XG4gICAgYyA9IGQgKyByb2wzMigoKChhIF4gYikgJiBkKSBeIGIpICsgYyArIHgyICsgMHgyNDIwNzBkYiwgMTcpO1xuICAgIGIgPSBjICsgcm9sMzIoKCgoZCBeIGEpICYgYykgXiBhKSArIGIgKyB4MyArIDB4YzFiZGNlZWUsIDIyKTtcbiAgICBhID0gYiArIHJvbDMyKCgoKGMgXiBkKSAmIGIpIF4gZCkgKyBhICsgeDQgKyAweGY1N2MwZmFmLCA3KTtcbiAgICBkID0gYSArIHJvbDMyKCgoKGIgXiBjKSAmIGEpIF4gYykgKyBkICsgeDUgKyAweDQ3ODdjNjJhLCAxMik7XG4gICAgYyA9IGQgKyByb2wzMigoKChhIF4gYikgJiBkKSBeIGIpICsgYyArIHg2ICsgMHhhODMwNDYxMywgMTcpO1xuICAgIGIgPSBjICsgcm9sMzIoKCgoZCBeIGEpICYgYykgXiBhKSArIGIgKyB4NyArIDB4ZmQ0Njk1MDEsIDIyKTtcbiAgICBhID0gYiArIHJvbDMyKCgoKGMgXiBkKSAmIGIpIF4gZCkgKyBhICsgeDggKyAweDY5ODA5OGQ4LCA3KTtcbiAgICBkID0gYSArIHJvbDMyKCgoKGIgXiBjKSAmIGEpIF4gYykgKyBkICsgeDkgKyAweDhiNDRmN2FmLCAxMik7XG4gICAgYyA9IGQgKyByb2wzMigoKChhIF4gYikgJiBkKSBeIGIpICsgYyArIHhhICsgMHhmZmZmNWJiMSwgMTcpO1xuICAgIGIgPSBjICsgcm9sMzIoKCgoZCBeIGEpICYgYykgXiBhKSArIGIgKyB4YiArIDB4ODk1Y2Q3YmUsIDIyKTtcbiAgICBhID0gYiArIHJvbDMyKCgoKGMgXiBkKSAmIGIpIF4gZCkgKyBhICsgeGMgKyAweDZiOTAxMTIyLCA3KTtcbiAgICBkID0gYSArIHJvbDMyKCgoKGIgXiBjKSAmIGEpIF4gYykgKyBkICsgeGQgKyAweGZkOTg3MTkzLCAxMik7XG4gICAgYyA9IGQgKyByb2wzMigoKChhIF4gYikgJiBkKSBeIGIpICsgYyArIHhlICsgMHhhNjc5NDM4ZSwgMTcpO1xuICAgIGIgPSBjICsgcm9sMzIoKCgoZCBeIGEpICYgYykgXiBhKSArIGIgKyB4ZiArIDB4NDliNDA4MjEsIDIyKTtcblxuICAgIC8vIHJvdW5kIDJcbiAgICBhID0gYiArIHJvbDMyKCgoKGIgXiBjKSAmIGQpIF4gYykgKyBhICsgeDEgKyAweGY2MWUyNTYyLCA1KTtcbiAgICBkID0gYSArIHJvbDMyKCgoKGEgXiBiKSAmIGMpIF4gYikgKyBkICsgeDYgKyAweGMwNDBiMzQwLCA5KTtcbiAgICBjID0gZCArIHJvbDMyKCgoKGQgXiBhKSAmIGIpIF4gYSkgKyBjICsgeGIgKyAweDI2NWU1YTUxLCAxNCk7XG4gICAgYiA9IGMgKyByb2wzMigoKChjIF4gZCkgJiBhKSBeIGQpICsgYiArIHgwICsgMHhlOWI2YzdhYSwgMjApO1xuICAgIGEgPSBiICsgcm9sMzIoKCgoYiBeIGMpICYgZCkgXiBjKSArIGEgKyB4NSArIDB4ZDYyZjEwNWQsIDUpO1xuICAgIGQgPSBhICsgcm9sMzIoKCgoYSBeIGIpICYgYykgXiBiKSArIGQgKyB4YSArIDB4MDI0NDE0NTMsIDkpO1xuICAgIGMgPSBkICsgcm9sMzIoKCgoZCBeIGEpICYgYikgXiBhKSArIGMgKyB4ZiArIDB4ZDhhMWU2ODEsIDE0KTtcbiAgICBiID0gYyArIHJvbDMyKCgoKGMgXiBkKSAmIGEpIF4gZCkgKyBiICsgeDQgKyAweGU3ZDNmYmM4LCAyMCk7XG4gICAgYSA9IGIgKyByb2wzMigoKChiIF4gYykgJiBkKSBeIGMpICsgYSArIHg5ICsgMHgyMWUxY2RlNiwgNSk7XG4gICAgZCA9IGEgKyByb2wzMigoKChhIF4gYikgJiBjKSBeIGIpICsgZCArIHhlICsgMHhjMzM3MDdkNiwgOSk7XG4gICAgYyA9IGQgKyByb2wzMigoKChkIF4gYSkgJiBiKSBeIGEpICsgYyArIHgzICsgMHhmNGQ1MGQ4NywgMTQpO1xuICAgIGIgPSBjICsgcm9sMzIoKCgoYyBeIGQpICYgYSkgXiBkKSArIGIgKyB4OCArIDB4NDU1YTE0ZWQsIDIwKTtcbiAgICBhID0gYiArIHJvbDMyKCgoKGIgXiBjKSAmIGQpIF4gYykgKyBhICsgeGQgKyAweGE5ZTNlOTA1LCA1KTtcbiAgICBkID0gYSArIHJvbDMyKCgoKGEgXiBiKSAmIGMpIF4gYikgKyBkICsgeDIgKyAweGZjZWZhM2Y4LCA5KTtcbiAgICBjID0gZCArIHJvbDMyKCgoKGQgXiBhKSAmIGIpIF4gYSkgKyBjICsgeDcgKyAweDY3NmYwMmQ5LCAxNCk7XG4gICAgYiA9IGMgKyByb2wzMigoKChjIF4gZCkgJiBhKSBeIGQpICsgYiArIHhjICsgMHg4ZDJhNGM4YSwgMjApO1xuXG4gICAgLy8gcm91bmQgM1xuICAgIGEgPSBiICsgcm9sMzIoKGIgXiBjIF4gZCkgKyBhICsgeDUgKyAweGZmZmEzOTQyLCA0KTtcbiAgICBkID0gYSArIHJvbDMyKChhIF4gYiBeIGMpICsgZCArIHg4ICsgMHg4NzcxZjY4MSwgMTEpO1xuICAgIGMgPSBkICsgcm9sMzIoKGQgXiBhIF4gYikgKyBjICsgeGIgKyAweDZkOWQ2MTIyLCAxNik7XG4gICAgYiA9IGMgKyByb2wzMigoYyBeIGQgXiBhKSArIGIgKyB4ZSArIDB4ZmRlNTM4MGMsIDIzKTtcbiAgICBhID0gYiArIHJvbDMyKChiIF4gYyBeIGQpICsgYSArIHgxICsgMHhhNGJlZWE0NCwgNCk7XG4gICAgZCA9IGEgKyByb2wzMigoYSBeIGIgXiBjKSArIGQgKyB4NCArIDB4NGJkZWNmYTksIDExKTtcbiAgICBjID0gZCArIHJvbDMyKChkIF4gYSBeIGIpICsgYyArIHg3ICsgMHhmNmJiNGI2MCwgMTYpO1xuICAgIGIgPSBjICsgcm9sMzIoKGMgXiBkIF4gYSkgKyBiICsgeGEgKyAweGJlYmZiYzcwLCAyMyk7XG4gICAgYSA9IGIgKyByb2wzMigoYiBeIGMgXiBkKSArIGEgKyB4ZCArIDB4Mjg5YjdlYzYsIDQpO1xuICAgIGQgPSBhICsgcm9sMzIoKGEgXiBiIF4gYykgKyBkICsgeDAgKyAweGVhYTEyN2ZhLCAxMSk7XG4gICAgYyA9IGQgKyByb2wzMigoZCBeIGEgXiBiKSArIGMgKyB4MyArIDB4ZDRlZjMwODUsIDE2KTtcbiAgICBiID0gYyArIHJvbDMyKChjIF4gZCBeIGEpICsgYiArIHg2ICsgMHgwNDg4MWQwNSwgMjMpO1xuICAgIGEgPSBiICsgcm9sMzIoKGIgXiBjIF4gZCkgKyBhICsgeDkgKyAweGQ5ZDRkMDM5LCA0KTtcbiAgICBkID0gYSArIHJvbDMyKChhIF4gYiBeIGMpICsgZCArIHhjICsgMHhlNmRiOTllNSwgMTEpO1xuICAgIGMgPSBkICsgcm9sMzIoKGQgXiBhIF4gYikgKyBjICsgeGYgKyAweDFmYTI3Y2Y4LCAxNik7XG4gICAgYiA9IGMgKyByb2wzMigoYyBeIGQgXiBhKSArIGIgKyB4MiArIDB4YzRhYzU2NjUsIDIzKTtcblxuICAgIC8vIHJvdW5kIDRcbiAgICBhID0gYiArIHJvbDMyKChjIF4gKGIgfCB+ZCkpICsgYSArIHgwICsgMHhmNDI5MjI0NCwgNik7XG4gICAgZCA9IGEgKyByb2wzMigoYiBeIChhIHwgfmMpKSArIGQgKyB4NyArIDB4NDMyYWZmOTcsIDEwKTtcbiAgICBjID0gZCArIHJvbDMyKChhIF4gKGQgfCB+YikpICsgYyArIHhlICsgMHhhYjk0MjNhNywgMTUpO1xuICAgIGIgPSBjICsgcm9sMzIoKGQgXiAoYyB8IH5hKSkgKyBiICsgeDUgKyAweGZjOTNhMDM5LCAyMSk7XG4gICAgYSA9IGIgKyByb2wzMigoYyBeIChiIHwgfmQpKSArIGEgKyB4YyArIDB4NjU1YjU5YzMsIDYpO1xuICAgIGQgPSBhICsgcm9sMzIoKGIgXiAoYSB8IH5jKSkgKyBkICsgeDMgKyAweDhmMGNjYzkyLCAxMCk7XG4gICAgYyA9IGQgKyByb2wzMigoYSBeIChkIHwgfmIpKSArIGMgKyB4YSArIDB4ZmZlZmY0N2QsIDE1KTtcbiAgICBiID0gYyArIHJvbDMyKChkIF4gKGMgfCB+YSkpICsgYiArIHgxICsgMHg4NTg0NWRkMSwgMjEpO1xuICAgIGEgPSBiICsgcm9sMzIoKGMgXiAoYiB8IH5kKSkgKyBhICsgeDggKyAweDZmYTg3ZTRmLCA2KTtcbiAgICBkID0gYSArIHJvbDMyKChiIF4gKGEgfCB+YykpICsgZCArIHhmICsgMHhmZTJjZTZlMCwgMTApO1xuICAgIGMgPSBkICsgcm9sMzIoKGEgXiAoZCB8IH5iKSkgKyBjICsgeDYgKyAweGEzMDE0MzE0LCAxNSk7XG4gICAgYiA9IGMgKyByb2wzMigoZCBeIChjIHwgfmEpKSArIGIgKyB4ZCArIDB4NGUwODExYTEsIDIxKTtcbiAgICBhID0gYiArIHJvbDMyKChjIF4gKGIgfCB+ZCkpICsgYSArIHg0ICsgMHhmNzUzN2U4MiwgNik7XG4gICAgZCA9IGEgKyByb2wzMigoYiBeIChhIHwgfmMpKSArIGQgKyB4YiArIDB4YmQzYWYyMzUsIDEwKTtcbiAgICBjID0gZCArIHJvbDMyKChhIF4gKGQgfCB+YikpICsgYyArIHgyICsgMHgyYWQ3ZDJiYiwgMTUpO1xuICAgIGIgPSBjICsgcm9sMzIoKGQgXiAoYyB8IH5hKSkgKyBiICsgeDkgKyAweGViODZkMzkxLCAyMSk7XG5cbiAgICB0aGlzLiNhID0gKHRoaXMuI2EgKyBhKSA+Pj4gMDtcbiAgICB0aGlzLiNiID0gKHRoaXMuI2IgKyBiKSA+Pj4gMDtcbiAgICB0aGlzLiNjID0gKHRoaXMuI2MgKyBjKSA+Pj4gMDtcbiAgICB0aGlzLiNkID0gKHRoaXMuI2QgKyBkKSA+Pj4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgaW50ZXJuYWwgc3RhdGVcbiAgICogQHBhcmFtIGRhdGEgZGF0YSB0byB1cGRhdGUsIGRhdGEgY2Fubm90IGV4Y2VlZCAyXjMyIGJ5dGVzXG4gICAqL1xuICB1cGRhdGUoZGF0YTogTWVzc2FnZSk6IHRoaXMge1xuICAgIGxldCBtc2c6IFVpbnQ4QXJyYXk7XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIG1zZyA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShkYXRhIGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciB8fCBBcnJheUJ1ZmZlci5pc1ZpZXcoZGF0YSkpIHtcbiAgICAgICAgbXNnID0gbmV3IFVpbnQ4QXJyYXkoZGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFRZUEVfRVJST1JfTVNHKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihUWVBFX0VSUk9SX01TRyk7XG4gICAgfVxuXG4gICAgbGV0IHBvcyA9IHRoaXMuI3BvcztcbiAgICBjb25zdCBmcmVlID0gQkxPQ0tfU0laRSAtIHBvcztcblxuICAgIGlmIChtc2cubGVuZ3RoIDwgZnJlZSkge1xuICAgICAgdGhpcy4jYmxvY2suc2V0KG1zZywgcG9zKTtcbiAgICAgIHBvcyArPSBtc2cubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBoYXNoIGZpcnN0IGJsb2NrXG4gICAgICB0aGlzLiNibG9jay5zZXQobXNnLnNsaWNlKDAsIGZyZWUpLCBwb3MpO1xuICAgICAgdGhpcy4jaGFzaCh0aGlzLiNibG9jayk7XG5cbiAgICAgIC8vIGhhc2ggYXMgbWFueSBibG9ja3MgYXMgcG9zc2libGVcbiAgICAgIGxldCBpID0gZnJlZTtcbiAgICAgIHdoaWxlIChpICsgQkxPQ0tfU0laRSA8PSBtc2cubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuI2hhc2gobXNnLnNsaWNlKGksIGkgKyBCTE9DS19TSVpFKSk7XG4gICAgICAgIGkgKz0gQkxPQ0tfU0laRTtcbiAgICAgIH1cblxuICAgICAgLy8gc3RvcmUgbGVmdG92ZXJcbiAgICAgIHRoaXMuI2Jsb2NrLmZpbGwoMCkuc2V0KG1zZy5zbGljZShpKSwgMCk7XG4gICAgICBwb3MgPSBtc2cubGVuZ3RoIC0gaTtcbiAgICB9XG5cbiAgICB0aGlzLiNwb3MgPSBwb3M7XG4gICAgdGhpcy4jYWRkTGVuZ3RoKG1zZy5sZW5ndGgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogUmV0dXJucyBmaW5hbCBoYXNoICovXG4gIGRpZ2VzdCgpOiBBcnJheUJ1ZmZlciB7XG4gICAgbGV0IHBhZExlbiA9IEJMT0NLX1NJWkUgLSB0aGlzLiNwb3M7XG4gICAgaWYgKHBhZExlbiA8IDkpIHBhZExlbiArPSBCTE9DS19TSVpFO1xuXG4gICAgY29uc3QgcGFkID0gbmV3IFVpbnQ4QXJyYXkocGFkTGVuKTtcblxuICAgIHBhZFswXSA9IDB4ODA7XG5cbiAgICBjb25zdCBuMCA9IHRoaXMuI24wIDw8IDM7XG4gICAgY29uc3QgbjEgPSAodGhpcy4jbjEgPDwgMykgfCAodGhpcy4jbjAgPj4+IDI5KTtcbiAgICBwYWRbcGFkLmxlbmd0aCAtIDhdID0gbjAgJiAweGZmO1xuICAgIHBhZFtwYWQubGVuZ3RoIC0gN10gPSAobjAgPj4+IDgpICYgMHhmZjtcbiAgICBwYWRbcGFkLmxlbmd0aCAtIDZdID0gKG4wID4+PiAxNikgJiAweGZmO1xuICAgIHBhZFtwYWQubGVuZ3RoIC0gNV0gPSAobjAgPj4+IDI0KSAmIDB4ZmY7XG4gICAgcGFkW3BhZC5sZW5ndGggLSA0XSA9IG4xICYgMHhmZjtcbiAgICBwYWRbcGFkLmxlbmd0aCAtIDNdID0gKG4xID4+PiA4KSAmIDB4ZmY7XG4gICAgcGFkW3BhZC5sZW5ndGggLSAyXSA9IChuMSA+Pj4gMTYpICYgMHhmZjtcbiAgICBwYWRbcGFkLmxlbmd0aCAtIDFdID0gKG4xID4+PiAyNCkgJiAweGZmO1xuXG4gICAgdGhpcy51cGRhdGUocGFkLmJ1ZmZlcik7XG5cbiAgICBjb25zdCBoYXNoID0gbmV3IEFycmF5QnVmZmVyKDE2KTtcbiAgICBjb25zdCBoYXNoVmlldyA9IG5ldyBEYXRhVmlldyhoYXNoKTtcbiAgICBoYXNoVmlldy5zZXRVaW50MzIoMCwgdGhpcy4jYSwgdHJ1ZSk7XG4gICAgaGFzaFZpZXcuc2V0VWludDMyKDQsIHRoaXMuI2IsIHRydWUpO1xuICAgIGhhc2hWaWV3LnNldFVpbnQzMig4LCB0aGlzLiNjLCB0cnVlKTtcbiAgICBoYXNoVmlldy5zZXRVaW50MzIoMTIsIHRoaXMuI2QsIHRydWUpO1xuXG4gICAgcmV0dXJuIGhhc2g7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBoYXNoIGFzIGEgc3RyaW5nIG9mIGdpdmVuIGZvcm1hdFxuICAgKiBAcGFyYW0gZm9ybWF0IGZvcm1hdCBvZiBvdXRwdXQgc3RyaW5nIChoZXggb3IgYmFzZTY0KS4gRGVmYXVsdCBpcyBoZXhcbiAgICovXG4gIHRvU3RyaW5nKGZvcm1hdDogXCJoZXhcIiB8IFwiYmFzZTY0XCIgPSBcImhleFwiKTogc3RyaW5nIHtcbiAgICBjb25zdCBoYXNoID0gdGhpcy5kaWdlc3QoKTtcblxuICAgIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgICBjYXNlIFwiaGV4XCI6XG4gICAgICAgIHJldHVybiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoaGV4LmVuY29kZShuZXcgVWludDhBcnJheShoYXNoKSkpO1xuICAgICAgY2FzZSBcImJhc2U2NFwiOiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgVWludDhBcnJheShoYXNoKTtcbiAgICAgICAgbGV0IGRhdGFTdHJpbmcgPSBcIlwiO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBkYXRhU3RyaW5nICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0YVtpXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ0b2EoZGF0YVN0cmluZyk7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJtZDU6IGludmFsaWQgZm9ybWF0XCIpO1xuICAgIH1cbiAgfVxufVxuIiwgImltcG9ydCB7IGNvb2tpZSwgZ2V0Q1NSRlRva2VuIH0gZnJvbSBcIi4vYXV0aC50c1wiO1xuaW1wb3J0IHsgQmFzZU9wdGlvbnMsIEV4dGVuZGVkT3B0aW9ucywgUmVzdWx0LCBzZXREZWZhdWx0cyB9IGZyb20gXCIuL3V0aWwudHNcIjtcbmltcG9ydCB7IG1ha2VFcnJvciwgVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IgfSBmcm9tIFwiLi9lcnJvci50c1wiO1xuaW1wb3J0IHR5cGUgeyBFcnJvckxpa2UsIE5vdEZvdW5kRXJyb3IgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1yZXN0LnRzXCI7XG5pbXBvcnQgeyBNZDUgfSBmcm9tIFwiLi4vZGVwcy9oYXNoLnRzXCI7XG5cbi8qKiB1cGxvYWTjgZfjgZ/jg5XjgqHjgqTjg6vjga7jg6Hjgr/jg4fjg7zjgr8gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR0NTRmlsZSB7XG4gIC8qKiB1cGxvYWTjgZfjgZ/jg5XjgqHjgqTjg6vjga5VUkwgKi9cbiAgZW1iZWRVcmw6IHN0cmluZztcblxuICAvKiogdXBsb2Fk44GX44Gf44OV44Kh44Kk44Or44Gu5ZCN5YmNICovXG4gIG9yaWdpbmFsTmFtZTogc3RyaW5nO1xufVxuXG4vKiog5Lu75oSP44Gu44OV44Kh44Kk44Or44KSc2NyYXBib3guaW/jgat1cGxvYWTjgZnjgotcbiAqXG4gKiBAcGFyYW0gZmlsZSB1cGxvYWTjgZfjgZ/jgYTjg5XjgqHjgqTjg6tcbiAqIEBwYXJhbSBwcm9qZWN0SWQgdXBsb2Fk5YWIcHJvamVjdOOBrmlkXG4gKiBAcmV0dXJuIOaIkOWKn+OBl+OBn+OCieOAgeODleOCoeOCpOODq+OBruOCr+ODqeOCpuODieS4iuOBrlVSTOOBquOBqeOBjOi/lOOBo+OBpuOBj+OCi1xuICovXG5leHBvcnQgY29uc3QgdXBsb2FkVG9HQ1MgPSBhc3luYyAoXG4gIGZpbGU6IEZpbGUsXG4gIHByb2plY3RJZDogc3RyaW5nLFxuICBvcHRpb25zPzogRXh0ZW5kZWRPcHRpb25zLFxuKTogUHJvbWlzZTxcbiAgUmVzdWx0PEdDU0ZpbGUsIEdDU0Vycm9yIHwgTm90Rm91bmRFcnJvciB8IEZpbGVDYXBhY2l0eUVycm9yIHwgRXJyb3JMaWtlPlxuPiA9PiB7XG4gIGNvbnN0IG1kNSA9IG5ldyBNZDUoKS51cGRhdGUoYXdhaXQgZmlsZS5hcnJheUJ1ZmZlcigpKS50b1N0cmluZygpO1xuICBjb25zdCByZXMgPSBhd2FpdCB1cGxvYWRSZXF1ZXN0KGZpbGUsIHByb2plY3RJZCwgbWQ1LCBvcHRpb25zKTtcbiAgaWYgKCFyZXMub2spIHJldHVybiByZXM7XG4gIGlmIChcImVtYmVkVXJsXCIgaW4gcmVzLnZhbHVlKSByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHJlcy52YWx1ZSB9O1xuICBjb25zdCByZXMyID0gYXdhaXQgdXBsb2FkKHJlcy52YWx1ZS5zaWduZWRVcmwsIGZpbGUsIG9wdGlvbnMpO1xuICBpZiAoIXJlczIub2spIHJldHVybiByZXMyO1xuICByZXR1cm4gdmVyaWZ5KHByb2plY3RJZCwgcmVzLnZhbHVlLmZpbGVJZCwgbWQ1LCBvcHRpb25zKTtcbn07XG5cbi8qKiDlrrnph4/jgpLkvb/jgYTliIfjgaPjgZ/jgajjgY3jgavnmbrnlJ/jgZnjgotlcnJvciAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlQ2FwYWNpdHlFcnJvciBleHRlbmRzIEVycm9yTGlrZSB7XG4gIG5hbWU6IFwiRmlsZUNhcGFjaXR5RXJyb3JcIjtcbn1cblxuaW50ZXJmYWNlIFVwbG9hZFJlcXVlc3Qge1xuICAvKiogdXBsb2Fk5YWIVVJMICovXG4gIHNpZ25lZFVybDogc3RyaW5nO1xuXG4gIC8qKiB1cGxvYWTjgZfjgZ/jg5XjgqHjgqTjg6vjgavntJDku5jjgZHjgonjgozjgovkuojlrprjga5maWxlIGlkICovXG4gIGZpbGVJZDogc3RyaW5nO1xufVxuXG4vKiog44OV44Kh44Kk44Or44GudXBsb2Fk44KS6KaB5rGC44GZ44KLXG4gKlxuICogQHBhcmFtIGZpbGUgdXBsb2Fk44GX44Gf44GE44OV44Kh44Kk44OrXG4gKiBAcGFyYW0gcHJvamVjdElkIHVwbG9hZOWFiHByb2plY3Tjga5pZFxuICogQHBhcmFtIG1kNSB1cGxvYWTjgZfjgZ/jgYTjg5XjgqHjgqTjg6vjga5NRDUgaGFzaCAoMTbpgLLmlbApXG4gKiBAcmV0dXJuIOOBmeOBp+OBq3VwbG9hZOOBleOCjOOBpuOBhOOCjOOBsOODleOCoeOCpOODq+OBrlVSTOOCkuOAgeOBvuOBoOOBruWgtOWQiOOBr3VwbG9hZOWFiFVSTOOCkui/lOOBmVxuICovXG5jb25zdCB1cGxvYWRSZXF1ZXN0ID0gYXN5bmMgKFxuICBmaWxlOiBGaWxlLFxuICBwcm9qZWN0SWQ6IHN0cmluZyxcbiAgbWQ1OiBzdHJpbmcsXG4gIGluaXQ/OiBFeHRlbmRlZE9wdGlvbnMsXG4pOiBQcm9taXNlPFJlc3VsdDxHQ1NGaWxlIHwgVXBsb2FkUmVxdWVzdCwgRmlsZUNhcGFjaXR5RXJyb3IgfCBFcnJvckxpa2U+PiA9PiB7XG4gIGNvbnN0IHsgc2lkLCBob3N0TmFtZSwgZmV0Y2gsIGNzcmYgfSA9IHNldERlZmF1bHRzKGluaXQgPz8ge30pO1xuICBjb25zdCBib2R5ID0ge1xuICAgIG1kNSxcbiAgICBzaXplOiBmaWxlLnNpemUsXG4gICAgY29udGVudFR5cGU6IGZpbGUudHlwZSxcbiAgICBuYW1lOiBmaWxlLm5hbWUsXG4gIH07XG4gIGNvbnN0IHRva2VuID0gY3NyZiA/PyBhd2FpdCBnZXRDU1JGVG9rZW4oKTtcbiAgY29uc3QgcmVxID0gbmV3IFJlcXVlc3QoXG4gICAgYGh0dHBzOi8vJHtob3N0TmFtZX0vYXBpL2djcy8ke3Byb2plY3RJZH0vdXBsb2FkLXJlcXVlc3RgLFxuICAgIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLThcIixcbiAgICAgICAgXCJYLUNTUkYtVE9LRU5cIjogdG9rZW4sXG4gICAgICAgIC4uLihzaWQgPyB7IENvb2tpZTogY29va2llKHNpZCkgfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgfSxcbiAgKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gocmVxKTtcbiAgaWYgKCFyZXMub2spIHtcbiAgICByZXR1cm4gbWFrZUVycm9yKHJlcyk7XG4gIH1cbiAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBhd2FpdCByZXMuanNvbigpIH07XG59O1xuXG4vKiogR29vZ2xlIENsb3VkIFN0b3JhZ2UgWE1MIEFQSeOBrmVycm9yXG4gKlxuICogYG1lc3NhZ2Vg44Gr44GvW+OBk+OBruW9ouW8j10oaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL3N0b3JhZ2UvZG9jcy94bWwtYXBpL3JlZmVyZW5jZS1zdGF0dXMjaHR0cC1zdGF0dXMtYW5kLWVycm9yLWNvZGVzKeOBrlhNTOOBjOWFpeOCi1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEdDU0Vycm9yIGV4dGVuZHMgRXJyb3JMaWtlIHtcbiAgbmFtZTogXCJHQ1NFcnJvclwiO1xufVxuXG4vKiog44OV44Kh44Kk44Or44KSdXBsb2Fk44GZ44KLICovXG5jb25zdCB1cGxvYWQgPSBhc3luYyAoXG4gIHNpZ25lZFVybDogc3RyaW5nLFxuICBmaWxlOiBGaWxlLFxuICBpbml0PzogQmFzZU9wdGlvbnMsXG4pOiBQcm9taXNlPFJlc3VsdDx1bmRlZmluZWQsIEdDU0Vycm9yPj4gPT4ge1xuICBjb25zdCB7IHNpZCwgZmV0Y2ggfSA9IHNldERlZmF1bHRzKGluaXQgPz8ge30pO1xuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChcbiAgICBzaWduZWRVcmwsXG4gICAge1xuICAgICAgbWV0aG9kOiBcIlBVVFwiLFxuICAgICAgYm9keTogZmlsZSxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogZmlsZS50eXBlLFxuICAgICAgICAuLi4oc2lkID8geyBDb29raWU6IGNvb2tpZShzaWQpIH0gOiB7fSksXG4gICAgICB9LFxuICAgIH0sXG4gICk7XG4gIGlmICghcmVzLm9rKSB7XG4gICAgaWYgKHJlcy5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKT8uaW5jbHVkZXM/LihcIi94bWxcIikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBuYW1lOiBcIkdDU0Vycm9yXCIsXG4gICAgICAgICAgbWVzc2FnZTogYXdhaXQgcmVzLnRleHQoKSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkUmVzcG9uc2VFcnJvcihyZXMpO1xuICB9XG4gIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogdW5kZWZpbmVkIH07XG59O1xuXG4vKiogdXBsb2Fk44GX44Gf44OV44Kh44Kk44Or44Gu5pW05ZCI5oCn44KS56K66KqN44GZ44KLICovXG5jb25zdCB2ZXJpZnkgPSBhc3luYyAoXG4gIHByb2plY3RJZDogc3RyaW5nLFxuICBmaWxlSWQ6IHN0cmluZyxcbiAgbWQ1OiBzdHJpbmcsXG4gIGluaXQ/OiBFeHRlbmRlZE9wdGlvbnMsXG4pOiBQcm9taXNlPFJlc3VsdDxHQ1NGaWxlLCBOb3RGb3VuZEVycm9yPj4gPT4ge1xuICBjb25zdCB7IHNpZCwgaG9zdE5hbWUsIGZldGNoLCBjc3JmIH0gPSBzZXREZWZhdWx0cyhpbml0ID8/IHt9KTtcbiAgY29uc3QgdG9rZW4gPSBjc3JmID8/IGF3YWl0IGdldENTUkZUb2tlbigpO1xuICBjb25zdCByZXEgPSBuZXcgUmVxdWVzdChcbiAgICBgaHR0cHM6Ly8ke2hvc3ROYW1lfS9hcGkvZ2NzLyR7cHJvamVjdElkfS92ZXJpZnlgLFxuICAgIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IG1kNSwgZmlsZUlkIH0pLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtOFwiLFxuICAgICAgICBcIlgtQ1NSRi1UT0tFTlwiOiB0b2tlbixcbiAgICAgICAgLi4uKHNpZCA/IHsgQ29va2llOiBjb29raWUoc2lkKSB9IDoge30pLFxuICAgICAgfSxcbiAgICB9LFxuICApO1xuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChyZXEpO1xuICBpZiAoIXJlcy5vaykge1xuICAgIHRyeSB7XG4gICAgICBpZiAocmVzLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICAgIHZhbHVlOiB7IG5hbWU6IFwiTm90Rm91bmRFcnJvclwiLCBtZXNzYWdlOiAoYXdhaXQgcmVzLmpzb24oKSkubWVzc2FnZSB9LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkUmVzcG9uc2VFcnJvcihyZXMpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IocmVzKTtcbiAgfVxuICBjb25zdCBnY3MgPSBhd2FpdCByZXMuanNvbigpO1xuICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IGdjcyB9O1xufTtcbiIsICJpbXBvcnQgeyBwYXRjaCB9IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC93ZWJzb2NrZXQudHNcIjtcbmltcG9ydCB7IGdldENvZGVCbG9jayB9IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9yZXN0LnRzXCI7XG5cbi8qKiDlkIzmnJ/oqK3lrpogKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3luY0luaXQge1xuICAvKiogcHJvamVjdExhc3RBY2Nlc3NlZOOCkuabuOOBjeWHuuOBmeODmuODvOOCuOOBrnByb2plY3QgbmFtZSAqL1xuICBwcm9qZWN0OiBzdHJpbmc7XG4gIC8qKiBwcm9qZWN0TGFzdEFjY2Vzc2Vk44KS5pu444GN5Ye644GZ44Oa44O844K444GucGFnZSB0aXRsZVxuICAgKlxuICAgKiBAZGVmYXVsdCBcIi53YXRjaGxpc3RyY1wiXG4gICAqL1xuICB0aXRsZT86IHN0cmluZztcbn1cblxuLyoqIHdhdGNoTGlzdOOCkuWFqOOBpuOBruODh+ODkOOCpOOCueOBp+WQjOacn+OBmeOCi1xuICpcbiAqIEBwYXJhbSBpbml0IHdhdGNoTGlzdOOBruS/neWtmOWFiOODmuODvOOCuOOCkuaxuuOCgeOCi1xuICovXG5leHBvcnQgY29uc3Qgc3luYyA9IGFzeW5jIChpbml0OiBTeW5jSW5pdCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCB0aXRsZSA9IGluaXQudGl0bGUgPz8gXCIud2F0Y2hsaXN0cmNcIjtcbiAgY29uc3QgZmlsZW5hbWUgPSBcInByb2plY3RzTGFzdEFjY2Vzc2VkLmpzb25cIjtcbiAgXG4gIC8vIHNjcmFwYm94Lmlv44Gr5L+d5a2Y44GX44Gfd2F0Y2hMaXN044KS5Y+W5b6X44GZ44KLXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGdldENvZGVCbG9jayhpbml0LnByb2plY3QsIHRpdGxlLCBmaWxlbmFtZSk7XG4gIGNvbnN0IGpzb24gPSAhcmVzLm9rID8ge30gOiBKU09OLnBhcnNlKHJlcy52YWx1ZSB8fCBcInt9XCIpO1xuICBcbiAgLyoqIOerr+acq+OBq+S/neWtmOOBleOCjOOBn3dhdGNoTGlzdCAqL1xuICBjb25zdCBwcmV2ID0gSlNPTi5wYXJzZShcbiAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInByb2plY3RzTGFzdEFjY2Vzc2VkXCIpID8/IFwie31cIlxuICApO1xuICBcbiAgLy8gcHJvamVjdOOBiuOCiOOBs+OBneOBruOCouOCr+OCu+OCueaXpeaZguOCkuabtOaWsOOBmeOCi1xuICBjb25zdCBrZXlzID0gbmV3IFNldChbLi4uT2JqZWN0LmtleXMoanNvbiksIC4uLk9iamVjdC5rZXlzKHByZXYpXSk7XG4gIC8vIOS4gOeVquaWsOOBl+OBhOOCouOCr+OCu+OCueaXpeaZguOCkuaOoeeUqOOBmeOCi1xuICBjb25zdCBuZXdEYXRhID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIFsuLi5rZXlzXVxuICAgICAgLm1hcCgoa2V5KSA9PiBba2V5LCBNYXRoLm1heChqc29uW2tleV0gPz8gMCwgcHJldltrZXldID8/IDApXSBhcyBjb25zdClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBiWzFdIC0gYVsxXSlcbiAgKTtcbiAgXG4gIC8vIOerr+acq+OBqHNjcmFwYm94Lmlv44Gr5paw44GX44GEd2F0Y2hMaXN044OH44O844K/44KS5L+d5a2Y44GZ44KLXG4gIGNvbnN0IG5ld1RleHQgPSBKU09OLnN0cmluZ2lmeShuZXdEYXRhKTtcbiAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJwcm9qZWN0c0xhc3RBY2Nlc3NlZFwiLCBuZXdUZXh0KTtcbiAgYXdhaXQgcGF0Y2goaW5pdC5wcm9qZWN0LCB0aXRsZSwgKCkgPT4gW1xuICAgIHRpdGxlLFxuICAgIFwiVGhpcyBwYWdlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLiBETyBOT1QgRURJVCBBTllUSElORywgV0hJVENIIFdJTEwgQkUgT1ZFUldSSVRURU4uXCIsXG4gICAgXCJcIixcbiAgICBgY29kZToke2ZpbGVuYW1lfWAsXG4gICAgYCAke25ld1RleHR9YCxcbiAgICBcIlwiLFxuICBdKTtcbn07XG4iLCAic2NyYXBib3guUGFnZU1lbnUuYWRkTWVudSh7XG4gIHRpdGxlOiAnR3lhem8nLCBcbiAgaW1hZ2U6ICdodHRwczovL2kuZ3lhem8uY29tLzUwM2E5MTFmZWE1NDI1MzJhYTVhYmEwYTg4ZWI3YjYwLnBuZycsXG4gIG9uQ2xpY2s6ICgpPT4gd2luZG93Lm9wZW4oJ2h0dHBzOi8vZ3lhem8uY29tL2NhcHR1cmVzJyksXG59KTsiLCAiLyoqIE5vcm1hbCBoeWRyYXRpb24gdGhhdCBhdHRhY2hlcyB0byBhIERPTSB0cmVlIGJ1dCBkb2VzIG5vdCBkaWZmIGl0LiAqL1xuZXhwb3J0IGNvbnN0IE1PREVfSFlEUkFURSA9IDEgXHUwMDNjXHUwMDNjIDU7XG4vKiogU2lnbmlmaWVzIHRoaXMgVk5vZGUgc3VzcGVuZGVkIG9uIHRoZSBwcmV2aW91cyByZW5kZXIgKi9cbmV4cG9ydCBjb25zdCBNT0RFX1NVU1BFTkRFRCA9IDEgXHUwMDNjXHUwMDNjIDc7XG4vKiogSW5kaWNhdGVzIHRoYXQgdGhpcyBub2RlIG5lZWRzIHRvIGJlIGluc2VydGVkIHdoaWxlIHBhdGNoaW5nIGNoaWxkcmVuICovXG5leHBvcnQgY29uc3QgSU5TRVJUX1ZOT0RFID0gMSBcdTAwM2NcdTAwM2MgMTY7XG4vKiogSW5kaWNhdGVzIGEgVk5vZGUgaGFzIGJlZW4gbWF0Y2hlZCB3aXRoIGFub3RoZXIgVk5vZGUgaW4gdGhlIGRpZmYgKi9cbmV4cG9ydCBjb25zdCBNQVRDSEVEID0gMSBcdTAwM2NcdTAwM2MgMTc7XG5cbi8qKiBSZXNldCBhbGwgbW9kZSBmbGFncyAqL1xuZXhwb3J0IGNvbnN0IFJFU0VUX01PREUgPSB+KE1PREVfSFlEUkFURSB8IE1PREVfU1VTUEVOREVEKTtcblxuZXhwb3J0IGNvbnN0IEVNUFRZX09CSiA9IC8qKiBAdHlwZSB7YW55fSAqLyAoe30pO1xuZXhwb3J0IGNvbnN0IEVNUFRZX0FSUiA9IFtdO1xuZXhwb3J0IGNvbnN0IElTX05PTl9ESU1FTlNJT05BTCA9XG5cdC9hY2l0fGV4KD86c3xnfG58cHwkKXxycGh8Z3JpZHxvd3N8bW5jfG50d3xpbmVbY2hdfHpvb3xeb3JkfGl0ZXJhL2k7XG4iLCAiaW1wb3J0IHsgRU1QVFlfQVJSIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbi8qKlxuICogQXNzaWduIHByb3BlcnRpZXMgZnJvbSBgcHJvcHNgIHRvIGBvYmpgXG4gKiBAdGVtcGxhdGUgTywgUCBUaGUgb2JqIGFuZCBwcm9wcyB0eXBlc1xuICogQHBhcmFtIHtPfSBvYmogVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG9cbiAqIEBwYXJhbSB7UH0gcHJvcHMgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbVxuICogQHJldHVybnMge08gXHUwMDI2IFB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ24ob2JqLCBwcm9wcykge1xuXHQvLyBAdHMtZXhwZWN0LWVycm9yIFdlIGNoYW5nZSB0aGUgdHlwZSBvZiBgb2JqYCB0byBiZSBgTyBcdTAwMjYgUGBcblx0Zm9yIChsZXQgaSBpbiBwcm9wcykgb2JqW2ldID0gcHJvcHNbaV07XG5cdHJldHVybiAvKiogQHR5cGUge08gXHUwMDI2IFB9ICovIChvYmopO1xufVxuXG4vKipcbiAqIFJlbW92ZSBhIGNoaWxkIG5vZGUgZnJvbSBpdHMgcGFyZW50IGlmIGF0dGFjaGVkLiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3JcbiAqIElFMTEgd2hpY2ggZG9lc24ndCBzdXBwb3J0IGBFbGVtZW50LnByb3RvdHlwZS5yZW1vdmUoKWAuIFVzaW5nIHRoaXMgZnVuY3Rpb25cbiAqIGlzIHNtYWxsZXIgdGhhbiBpbmNsdWRpbmcgYSBkZWRpY2F0ZWQgcG9seWZpbGwuXG4gKiBAcGFyYW0ge3ByZWFjdC5Db250YWluZXJOb2RlfSBub2RlIFRoZSBub2RlIHRvIHJlbW92ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTm9kZShub2RlKSB7XG5cdGxldCBwYXJlbnROb2RlID0gbm9kZS5wYXJlbnROb2RlO1xuXHRpZiAocGFyZW50Tm9kZSkgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbn1cblxuZXhwb3J0IGNvbnN0IHNsaWNlID0gRU1QVFlfQVJSLnNsaWNlO1xuIiwgImltcG9ydCB7IF9jYXRjaEVycm9yIH0gZnJvbSAnLi9kaWZmL2NhdGNoLWVycm9yJztcblxuLyoqXG4gKiBUaGUgYG9wdGlvbmAgb2JqZWN0IGNhbiBwb3RlbnRpYWxseSBjb250YWluIGNhbGxiYWNrIGZ1bmN0aW9uc1xuICogdGhhdCBhcmUgY2FsbGVkIGR1cmluZyB2YXJpb3VzIHN0YWdlcyBvZiBvdXIgcmVuZGVyZXIuIFRoaXMgaXMgdGhlXG4gKiBmb3VuZGF0aW9uIG9uIHdoaWNoIGFsbCBvdXIgYWRkb25zIGxpa2UgYHByZWFjdC9kZWJ1Z2AsIGBwcmVhY3QvY29tcGF0YCxcbiAqIGFuZCBgcHJlYWN0L2hvb2tzYCBhcmUgYmFzZWQgb24uIFNlZSB0aGUgYE9wdGlvbnNgIHR5cGUgaW4gYGludGVybmFsLmQudHNgXG4gKiBmb3IgYSBmdWxsIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbiBob29rcyAobW9zdCBlZGl0b3JzL0lERXMgYWxsb3cgeW91IHRvXG4gKiBjdHJsK2NsaWNrIG9yIGNtZCtjbGljayBvbiBtYWMgdGhlIHR5cGUgZGVmaW5pdGlvbiBiZWxvdykuXG4gKiBAdHlwZSB7T3B0aW9uc31cbiAqL1xuY29uc3Qgb3B0aW9ucyA9IHtcblx0X2NhdGNoRXJyb3Jcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG9wdGlvbnM7XG4iLCAiaW1wb3J0IHsgc2xpY2UgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IG9wdGlvbnMgZnJvbSAnLi9vcHRpb25zJztcblxubGV0IHZub2RlSWQgPSAwO1xuXG4vKipcbiAqIENyZWF0ZSBhbiB2aXJ0dWFsIG5vZGUgKHVzZWQgZm9yIEpTWClcbiAqIEBwYXJhbSB7Vk5vZGVbXCJ0eXBlXCJdfSB0eXBlIFRoZSBub2RlIG5hbWUgb3IgQ29tcG9uZW50IGNvbnN0cnVjdG9yIGZvciB0aGlzXG4gKiB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbCB8IHVuZGVmaW5lZH0gW3Byb3BzXSBUaGUgcHJvcGVydGllcyBvZiB0aGUgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge0FycmF5XHUwMDNjaW1wb3J0KCcuJykuQ29tcG9uZW50Q2hpbGRyZW5cdTAwM2V9IFtjaGlsZHJlbl0gVGhlIGNoaWxkcmVuIG9mIHRoZVxuICogdmlydHVhbCBub2RlXG4gKiBAcmV0dXJucyB7Vk5vZGV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbGVtZW50KHR5cGUsIHByb3BzLCBjaGlsZHJlbikge1xuXHRsZXQgbm9ybWFsaXplZFByb3BzID0ge30sXG5cdFx0a2V5LFxuXHRcdHJlZixcblx0XHRpO1xuXHRmb3IgKGkgaW4gcHJvcHMpIHtcblx0XHRpZiAoaSA9PSAna2V5Jykga2V5ID0gcHJvcHNbaV07XG5cdFx0ZWxzZSBpZiAoaSA9PSAncmVmJykgcmVmID0gcHJvcHNbaV07XG5cdFx0ZWxzZSBub3JtYWxpemVkUHJvcHNbaV0gPSBwcm9wc1tpXTtcblx0fVxuXG5cdGlmIChhcmd1bWVudHMubGVuZ3RoIFx1MDAzZSAyKSB7XG5cdFx0bm9ybWFsaXplZFByb3BzLmNoaWxkcmVuID1cblx0XHRcdGFyZ3VtZW50cy5sZW5ndGggXHUwMDNlIDMgPyBzbGljZS5jYWxsKGFyZ3VtZW50cywgMikgOiBjaGlsZHJlbjtcblx0fVxuXG5cdC8vIElmIGEgQ29tcG9uZW50IFZOb2RlLCBjaGVjayBmb3IgYW5kIGFwcGx5IGRlZmF1bHRQcm9wc1xuXHQvLyBOb3RlOiB0eXBlIG1heSBiZSB1bmRlZmluZWQgaW4gZGV2ZWxvcG1lbnQsIG11c3QgbmV2ZXIgZXJyb3IgaGVyZS5cblx0aWYgKHR5cGVvZiB0eXBlID09ICdmdW5jdGlvbicgXHUwMDI2XHUwMDI2IHR5cGUuZGVmYXVsdFByb3BzICE9IG51bGwpIHtcblx0XHRmb3IgKGkgaW4gdHlwZS5kZWZhdWx0UHJvcHMpIHtcblx0XHRcdGlmIChub3JtYWxpemVkUHJvcHNbaV0gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRub3JtYWxpemVkUHJvcHNbaV0gPSB0eXBlLmRlZmF1bHRQcm9wc1tpXTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gY3JlYXRlVk5vZGUodHlwZSwgbm9ybWFsaXplZFByb3BzLCBrZXksIHJlZiwgbnVsbCk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgVk5vZGUgKHVzZWQgaW50ZXJuYWxseSBieSBQcmVhY3QpXG4gKiBAcGFyYW0ge1ZOb2RlW1widHlwZVwiXX0gdHlwZSBUaGUgbm9kZSBuYW1lIG9yIENvbXBvbmVudFxuICogQ29uc3RydWN0b3IgZm9yIHRoaXMgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge29iamVjdCB8IHN0cmluZyB8IG51bWJlciB8IG51bGx9IHByb3BzIFRoZSBwcm9wZXJ0aWVzIG9mIHRoaXMgdmlydHVhbCBub2RlLlxuICogSWYgdGhpcyB2aXJ0dWFsIG5vZGUgcmVwcmVzZW50cyBhIHRleHQgbm9kZSwgdGhpcyBpcyB0aGUgdGV4dCBvZiB0aGUgbm9kZSAoc3RyaW5nIG9yIG51bWJlcikuXG4gKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlciB8IG51bGx9IGtleSBUaGUga2V5IGZvciB0aGlzIHZpcnR1YWwgbm9kZSwgdXNlZCB3aGVuXG4gKiBkaWZmaW5nIGl0IGFnYWluc3QgaXRzIGNoaWxkcmVuXG4gKiBAcGFyYW0ge1ZOb2RlW1wicmVmXCJdfSByZWYgVGhlIHJlZiBwcm9wZXJ0eSB0aGF0IHdpbGxcbiAqIHJlY2VpdmUgYSByZWZlcmVuY2UgdG8gaXRzIGNyZWF0ZWQgY2hpbGRcbiAqIEByZXR1cm5zIHtWTm9kZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVZOb2RlKHR5cGUsIHByb3BzLCBrZXksIHJlZiwgb3JpZ2luYWwpIHtcblx0Ly8gVjggc2VlbXMgdG8gYmUgYmV0dGVyIGF0IGRldGVjdGluZyB0eXBlIHNoYXBlcyBpZiB0aGUgb2JqZWN0IGlzIGFsbG9jYXRlZCBmcm9tIHRoZSBzYW1lIGNhbGwgc2l0ZVxuXHQvLyBEbyBub3QgaW5saW5lIGludG8gY3JlYXRlRWxlbWVudCBhbmQgY29lcmNlVG9WTm9kZSFcblx0LyoqIEB0eXBlIHtWTm9kZX0gKi9cblx0Y29uc3Qgdm5vZGUgPSB7XG5cdFx0dHlwZSxcblx0XHRwcm9wcyxcblx0XHRrZXksXG5cdFx0cmVmLFxuXHRcdF9jaGlsZHJlbjogbnVsbCxcblx0XHRfcGFyZW50OiBudWxsLFxuXHRcdF9kZXB0aDogMCxcblx0XHRfZG9tOiBudWxsLFxuXHRcdC8vIF9uZXh0RG9tIG11c3QgYmUgaW5pdGlhbGl6ZWQgdG8gdW5kZWZpbmVkIGIvYyBpdCB3aWxsIGV2ZW50dWFsbHlcblx0XHQvLyBiZSBzZXQgdG8gZG9tLm5leHRTaWJsaW5nIHdoaWNoIGNhbiByZXR1cm4gYG51bGxgIGFuZCBpdCBpcyBpbXBvcnRhbnRcblx0XHQvLyB0byBiZSBhYmxlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gYW4gdW5pbml0aWFsaXplZCBfbmV4dERvbSBhbmRcblx0XHQvLyBhIF9uZXh0RG9tIHRoYXQgaGFzIGJlZW4gc2V0IHRvIGBudWxsYFxuXHRcdF9uZXh0RG9tOiB1bmRlZmluZWQsXG5cdFx0X2NvbXBvbmVudDogbnVsbCxcblx0XHRjb25zdHJ1Y3RvcjogdW5kZWZpbmVkLFxuXHRcdF9vcmlnaW5hbDogb3JpZ2luYWwgPT0gbnVsbCA/ICsrdm5vZGVJZCA6IG9yaWdpbmFsLFxuXHRcdF9pbmRleDogLTEsXG5cdFx0X2ZsYWdzOiAwXG5cdH07XG5cblx0Ly8gT25seSBpbnZva2UgdGhlIHZub2RlIGhvb2sgaWYgdGhpcyB3YXMgKm5vdCogYSBkaXJlY3QgY29weTpcblx0aWYgKG9yaWdpbmFsID09IG51bGwgXHUwMDI2XHUwMDI2IG9wdGlvbnMudm5vZGUgIT0gbnVsbCkgb3B0aW9ucy52bm9kZSh2bm9kZSk7XG5cblx0cmV0dXJuIHZub2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVmKCkge1xuXHRyZXR1cm4geyBjdXJyZW50OiBudWxsIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBGcmFnbWVudChwcm9wcykge1xuXHRyZXR1cm4gcHJvcHMuY2hpbGRyZW47XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB0aGUgYXJndW1lbnQgaXMgYSB2YWxpZCBQcmVhY3QgVk5vZGUuXG4gKiBAcGFyYW0geyp9IHZub2RlXG4gKiBAcmV0dXJucyB7dm5vZGUgaXMgVk5vZGV9XG4gKi9cbmV4cG9ydCBjb25zdCBpc1ZhbGlkRWxlbWVudCA9IHZub2RlID1cdTAwM2Vcblx0dm5vZGUgIT0gbnVsbCBcdTAwMjZcdTAwMjYgdm5vZGUuY29uc3RydWN0b3IgPT0gdW5kZWZpbmVkO1xuIiwgImltcG9ydCB7IGFzc2lnbiB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBkaWZmLCBjb21taXRSb290IH0gZnJvbSAnLi9kaWZmL2luZGV4JztcbmltcG9ydCBvcHRpb25zIGZyb20gJy4vb3B0aW9ucyc7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gJy4vY3JlYXRlLWVsZW1lbnQnO1xuaW1wb3J0IHsgTU9ERV9IWURSQVRFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG4vKipcbiAqIEJhc2UgQ29tcG9uZW50IGNsYXNzLiBQcm92aWRlcyBgc2V0U3RhdGUoKWAgYW5kIGBmb3JjZVVwZGF0ZSgpYCwgd2hpY2hcbiAqIHRyaWdnZXIgcmVuZGVyaW5nXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgVGhlIGluaXRpYWwgY29tcG9uZW50IHByb3BzXG4gKiBAcGFyYW0ge29iamVjdH0gY29udGV4dCBUaGUgaW5pdGlhbCBjb250ZXh0IGZyb20gcGFyZW50IGNvbXBvbmVudHMnXG4gKiBnZXRDaGlsZENvbnRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJhc2VDb21wb25lbnQocHJvcHMsIGNvbnRleHQpIHtcblx0dGhpcy5wcm9wcyA9IHByb3BzO1xuXHR0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xufVxuXG4vKipcbiAqIFVwZGF0ZSBjb21wb25lbnQgc3RhdGUgYW5kIHNjaGVkdWxlIGEgcmUtcmVuZGVyLlxuICogQHRoaXMge0NvbXBvbmVudH1cbiAqIEBwYXJhbSB7b2JqZWN0IHwgKChzOiBvYmplY3QsIHA6IG9iamVjdCkgPVx1MDAzZSBvYmplY3QpfSB1cGRhdGUgQSBoYXNoIG9mIHN0YXRlXG4gKiBwcm9wZXJ0aWVzIHRvIHVwZGF0ZSB3aXRoIG5ldyB2YWx1ZXMgb3IgYSBmdW5jdGlvbiB0aGF0IGdpdmVuIHRoZSBjdXJyZW50XG4gKiBzdGF0ZSBhbmQgcHJvcHMgcmV0dXJucyBhIG5ldyBwYXJ0aWFsIHN0YXRlXG4gKiBAcGFyYW0geygpID1cdTAwM2Ugdm9pZH0gW2NhbGxiYWNrXSBBIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBvbmNlIGNvbXBvbmVudCBzdGF0ZSBpc1xuICogdXBkYXRlZFxuICovXG5CYXNlQ29tcG9uZW50LnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uICh1cGRhdGUsIGNhbGxiYWNrKSB7XG5cdC8vIG9ubHkgY2xvbmUgc3RhdGUgd2hlbiBjb3B5aW5nIHRvIG5leHRTdGF0ZSB0aGUgZmlyc3QgdGltZS5cblx0bGV0IHM7XG5cdGlmICh0aGlzLl9uZXh0U3RhdGUgIT0gbnVsbCBcdTAwMjZcdTAwMjYgdGhpcy5fbmV4dFN0YXRlICE9PSB0aGlzLnN0YXRlKSB7XG5cdFx0cyA9IHRoaXMuX25leHRTdGF0ZTtcblx0fSBlbHNlIHtcblx0XHRzID0gdGhpcy5fbmV4dFN0YXRlID0gYXNzaWduKHt9LCB0aGlzLnN0YXRlKTtcblx0fVxuXG5cdGlmICh0eXBlb2YgdXBkYXRlID09ICdmdW5jdGlvbicpIHtcblx0XHQvLyBTb21lIGxpYnJhcmllcyBsaWtlIGBpbW1lcmAgbWFyayB0aGUgY3VycmVudCBzdGF0ZSBhcyByZWFkb25seSxcblx0XHQvLyBwcmV2ZW50aW5nIHVzIGZyb20gbXV0YXRpbmcgaXQsIHNvIHdlIG5lZWQgdG8gY2xvbmUgaXQuIFNlZSAjMjcxNlxuXHRcdHVwZGF0ZSA9IHVwZGF0ZShhc3NpZ24oe30sIHMpLCB0aGlzLnByb3BzKTtcblx0fVxuXG5cdGlmICh1cGRhdGUpIHtcblx0XHRhc3NpZ24ocywgdXBkYXRlKTtcblx0fVxuXG5cdC8vIFNraXAgdXBkYXRlIGlmIHVwZGF0ZXIgZnVuY3Rpb24gcmV0dXJuZWQgbnVsbFxuXHRpZiAodXBkYXRlID09IG51bGwpIHJldHVybjtcblxuXHRpZiAodGhpcy5fdm5vZGUpIHtcblx0XHRpZiAoY2FsbGJhY2spIHtcblx0XHRcdHRoaXMuX3N0YXRlQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuXHRcdH1cblx0XHRlbnF1ZXVlUmVuZGVyKHRoaXMpO1xuXHR9XG59O1xuXG4vKipcbiAqIEltbWVkaWF0ZWx5IHBlcmZvcm0gYSBzeW5jaHJvbm91cyByZS1yZW5kZXIgb2YgdGhlIGNvbXBvbmVudFxuICogQHRoaXMge0NvbXBvbmVudH1cbiAqIEBwYXJhbSB7KCkgPVx1MDAzZSB2b2lkfSBbY2FsbGJhY2tdIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIGNvbXBvbmVudCBpc1xuICogcmUtcmVuZGVyZWRcbiAqL1xuQmFzZUNvbXBvbmVudC5wcm90b3R5cGUuZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcblx0aWYgKHRoaXMuX3Zub2RlKSB7XG5cdFx0Ly8gU2V0IHJlbmRlciBtb2RlIHNvIHRoYXQgd2UgY2FuIGRpZmZlcmVudGlhdGUgd2hlcmUgdGhlIHJlbmRlciByZXF1ZXN0XG5cdFx0Ly8gaXMgY29taW5nIGZyb20uIFdlIG5lZWQgdGhpcyBiZWNhdXNlIGZvcmNlVXBkYXRlIHNob3VsZCBuZXZlciBjYWxsXG5cdFx0Ly8gc2hvdWxkQ29tcG9uZW50VXBkYXRlXG5cdFx0dGhpcy5fZm9yY2UgPSB0cnVlO1xuXHRcdGlmIChjYWxsYmFjaykgdGhpcy5fcmVuZGVyQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuXHRcdGVucXVldWVSZW5kZXIodGhpcyk7XG5cdH1cbn07XG5cbi8qKlxuICogQWNjZXB0cyBgcHJvcHNgIGFuZCBgc3RhdGVgLCBhbmQgcmV0dXJucyBhIG5ldyBWaXJ0dWFsIERPTSB0cmVlIHRvIGJ1aWxkLlxuICogVmlydHVhbCBET00gaXMgZ2VuZXJhbGx5IGNvbnN0cnVjdGVkIHZpYSBbSlNYXShodHRwOi8vamFzb25mb3JtYXQuY29tL3d0Zi1pcy1qc3gpLlxuICogQHBhcmFtIHtvYmplY3R9IHByb3BzIFByb3BzIChlZzogSlNYIGF0dHJpYnV0ZXMpIHJlY2VpdmVkIGZyb20gcGFyZW50XG4gKiBlbGVtZW50L2NvbXBvbmVudFxuICogQHBhcmFtIHtvYmplY3R9IHN0YXRlIFRoZSBjb21wb25lbnQncyBjdXJyZW50IHN0YXRlXG4gKiBAcGFyYW0ge29iamVjdH0gY29udGV4dCBDb250ZXh0IG9iamVjdCwgYXMgcmV0dXJuZWQgYnkgdGhlIG5lYXJlc3RcbiAqIGFuY2VzdG9yJ3MgYGdldENoaWxkQ29udGV4dCgpYFxuICogQHJldHVybnMge0NvbXBvbmVudENoaWxkcmVuIHwgdm9pZH1cbiAqL1xuQmFzZUNvbXBvbmVudC5wcm90b3R5cGUucmVuZGVyID0gRnJhZ21lbnQ7XG5cbi8qKlxuICogQHBhcmFtIHtWTm9kZX0gdm5vZGVcbiAqIEBwYXJhbSB7bnVtYmVyIHwgbnVsbH0gW2NoaWxkSW5kZXhdXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREb21TaWJsaW5nKHZub2RlLCBjaGlsZEluZGV4KSB7XG5cdGlmIChjaGlsZEluZGV4ID09IG51bGwpIHtcblx0XHQvLyBVc2UgY2hpbGRJbmRleD09bnVsbCBhcyBhIHNpZ25hbCB0byByZXN1bWUgdGhlIHNlYXJjaCBmcm9tIHRoZSB2bm9kZSdzIHNpYmxpbmdcblx0XHRyZXR1cm4gdm5vZGUuX3BhcmVudFxuXHRcdFx0PyBnZXREb21TaWJsaW5nKHZub2RlLl9wYXJlbnQsIHZub2RlLl9pbmRleCArIDEpXG5cdFx0XHQ6IG51bGw7XG5cdH1cblxuXHRsZXQgc2libGluZztcblx0Zm9yICg7IGNoaWxkSW5kZXggXHUwMDNjIHZub2RlLl9jaGlsZHJlbi5sZW5ndGg7IGNoaWxkSW5kZXgrKykge1xuXHRcdHNpYmxpbmcgPSB2bm9kZS5fY2hpbGRyZW5bY2hpbGRJbmRleF07XG5cblx0XHRpZiAoc2libGluZyAhPSBudWxsIFx1MDAyNlx1MDAyNiBzaWJsaW5nLl9kb20gIT0gbnVsbCkge1xuXHRcdFx0Ly8gU2luY2UgdXBkYXRlUGFyZW50RG9tUG9pbnRlcnMga2VlcHMgX2RvbSBwb2ludGVyIGNvcnJlY3QsXG5cdFx0XHQvLyB3ZSBjYW4gcmVseSBvbiBfZG9tIHRvIHRlbGwgdXMgaWYgdGhpcyBzdWJ0cmVlIGNvbnRhaW5zIGFcblx0XHRcdC8vIHJlbmRlcmVkIERPTSBub2RlLCBhbmQgd2hhdCB0aGUgZmlyc3QgcmVuZGVyZWQgRE9NIG5vZGUgaXNcblx0XHRcdHJldHVybiBzaWJsaW5nLl9kb207XG5cdFx0fVxuXHR9XG5cblx0Ly8gSWYgd2UgZ2V0IGhlcmUsIHdlIGhhdmUgbm90IGZvdW5kIGEgRE9NIG5vZGUgaW4gdGhpcyB2bm9kZSdzIGNoaWxkcmVuLlxuXHQvLyBXZSBtdXN0IHJlc3VtZSBmcm9tIHRoaXMgdm5vZGUncyBzaWJsaW5nIChpbiBpdCdzIHBhcmVudCBfY2hpbGRyZW4gYXJyYXkpXG5cdC8vIE9ubHkgY2xpbWIgdXAgYW5kIHNlYXJjaCB0aGUgcGFyZW50IGlmIHdlIGFyZW4ndCBzZWFyY2hpbmcgdGhyb3VnaCBhIERPTVxuXHQvLyBWTm9kZSAobWVhbmluZyB3ZSByZWFjaGVkIHRoZSBET00gcGFyZW50IG9mIHRoZSBvcmlnaW5hbCB2bm9kZSB0aGF0IGJlZ2FuXG5cdC8vIHRoZSBzZWFyY2gpXG5cdHJldHVybiB0eXBlb2Ygdm5vZGUudHlwZSA9PSAnZnVuY3Rpb24nID8gZ2V0RG9tU2libGluZyh2bm9kZSkgOiBudWxsO1xufVxuXG4vKipcbiAqIFRyaWdnZXIgaW4tcGxhY2UgcmUtcmVuZGVyaW5nIG9mIGEgY29tcG9uZW50LlxuICogQHBhcmFtIHtDb21wb25lbnR9IGNvbXBvbmVudCBUaGUgY29tcG9uZW50IHRvIHJlcmVuZGVyXG4gKi9cbmZ1bmN0aW9uIHJlbmRlckNvbXBvbmVudChjb21wb25lbnQpIHtcblx0bGV0IG9sZFZOb2RlID0gY29tcG9uZW50Ll92bm9kZSxcblx0XHRvbGREb20gPSBvbGRWTm9kZS5fZG9tLFxuXHRcdGNvbW1pdFF1ZXVlID0gW10sXG5cdFx0cmVmUXVldWUgPSBbXTtcblxuXHRpZiAoY29tcG9uZW50Ll9wYXJlbnREb20pIHtcblx0XHRjb25zdCBuZXdWTm9kZSA9IGFzc2lnbih7fSwgb2xkVk5vZGUpO1xuXHRcdG5ld1ZOb2RlLl9vcmlnaW5hbCA9IG9sZFZOb2RlLl9vcmlnaW5hbCArIDE7XG5cdFx0aWYgKG9wdGlvbnMudm5vZGUpIG9wdGlvbnMudm5vZGUobmV3Vk5vZGUpO1xuXG5cdFx0ZGlmZihcblx0XHRcdGNvbXBvbmVudC5fcGFyZW50RG9tLFxuXHRcdFx0bmV3Vk5vZGUsXG5cdFx0XHRvbGRWTm9kZSxcblx0XHRcdGNvbXBvbmVudC5fZ2xvYmFsQ29udGV4dCxcblx0XHRcdGNvbXBvbmVudC5fcGFyZW50RG9tLm5hbWVzcGFjZVVSSSxcblx0XHRcdG9sZFZOb2RlLl9mbGFncyBcdTAwMjYgTU9ERV9IWURSQVRFID8gW29sZERvbV0gOiBudWxsLFxuXHRcdFx0Y29tbWl0UXVldWUsXG5cdFx0XHRvbGREb20gPT0gbnVsbCA/IGdldERvbVNpYmxpbmcob2xkVk5vZGUpIDogb2xkRG9tLFxuXHRcdFx0ISEob2xkVk5vZGUuX2ZsYWdzIFx1MDAyNiBNT0RFX0hZRFJBVEUpLFxuXHRcdFx0cmVmUXVldWVcblx0XHQpO1xuXG5cdFx0bmV3Vk5vZGUuX29yaWdpbmFsID0gb2xkVk5vZGUuX29yaWdpbmFsO1xuXHRcdG5ld1ZOb2RlLl9wYXJlbnQuX2NoaWxkcmVuW25ld1ZOb2RlLl9pbmRleF0gPSBuZXdWTm9kZTtcblx0XHRjb21taXRSb290KGNvbW1pdFF1ZXVlLCBuZXdWTm9kZSwgcmVmUXVldWUpO1xuXG5cdFx0aWYgKG5ld1ZOb2RlLl9kb20gIT0gb2xkRG9tKSB7XG5cdFx0XHR1cGRhdGVQYXJlbnREb21Qb2ludGVycyhuZXdWTm9kZSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtWTm9kZX0gdm5vZGVcbiAqL1xuZnVuY3Rpb24gdXBkYXRlUGFyZW50RG9tUG9pbnRlcnModm5vZGUpIHtcblx0aWYgKCh2bm9kZSA9IHZub2RlLl9wYXJlbnQpICE9IG51bGwgXHUwMDI2XHUwMDI2IHZub2RlLl9jb21wb25lbnQgIT0gbnVsbCkge1xuXHRcdHZub2RlLl9kb20gPSB2bm9kZS5fY29tcG9uZW50LmJhc2UgPSBudWxsO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIFx1MDAzYyB2bm9kZS5fY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCBjaGlsZCA9IHZub2RlLl9jaGlsZHJlbltpXTtcblx0XHRcdGlmIChjaGlsZCAhPSBudWxsIFx1MDAyNlx1MDAyNiBjaGlsZC5fZG9tICE9IG51bGwpIHtcblx0XHRcdFx0dm5vZGUuX2RvbSA9IHZub2RlLl9jb21wb25lbnQuYmFzZSA9IGNoaWxkLl9kb207XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB1cGRhdGVQYXJlbnREb21Qb2ludGVycyh2bm9kZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBUaGUgcmVuZGVyIHF1ZXVlXG4gKiBAdHlwZSB7QXJyYXlcdTAwM2NDb21wb25lbnRcdTAwM2V9XG4gKi9cbmxldCByZXJlbmRlclF1ZXVlID0gW107XG5cbi8qXG4gKiBUaGUgdmFsdWUgb2YgYENvbXBvbmVudC5kZWJvdW5jZWAgbXVzdCBhc3luY2hyb25vdXNseSBpbnZva2UgdGhlIHBhc3NlZCBpbiBjYWxsYmFjay4gSXQgaXNcbiAqIGltcG9ydGFudCB0aGF0IGNvbnRyaWJ1dG9ycyB0byBQcmVhY3QgY2FuIGNvbnNpc3RlbnRseSByZWFzb24gYWJvdXQgd2hhdCBjYWxscyB0byBgc2V0U3RhdGVgLCBldGMuXG4gKiBkbywgYW5kIHdoZW4gdGhlaXIgZWZmZWN0cyB3aWxsIGJlIGFwcGxpZWQuIFNlZSB0aGUgbGlua3MgYmVsb3cgZm9yIHNvbWUgZnVydGhlciByZWFkaW5nIG9uIGRlc2lnbmluZ1xuICogYXN5bmNocm9ub3VzIEFQSXMuXG4gKiAqIFtEZXNpZ25pbmcgQVBJcyBmb3IgQXN5bmNocm9ueV0oaHR0cHM6Ly9ibG9nLml6cy5tZS8yMDEzLzA4L2Rlc2lnbmluZy1hcGlzLWZvci1hc3luY2hyb255KVxuICogKiBbQ2FsbGJhY2tzIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXNdKGh0dHBzOi8vYmxvZy5vbWV0ZXIuY29tLzIwMTEvMDcvMjQvY2FsbGJhY2tzLXN5bmNocm9ub3VzLWFuZC1hc3luY2hyb25vdXMvKVxuICovXG5cbmxldCBwcmV2RGVib3VuY2U7XG5cbmNvbnN0IGRlZmVyID1cblx0dHlwZW9mIFByb21pc2UgPT0gJ2Z1bmN0aW9uJ1xuXHRcdD8gUHJvbWlzZS5wcm90b3R5cGUudGhlbi5iaW5kKFByb21pc2UucmVzb2x2ZSgpKVxuXHRcdDogc2V0VGltZW91dDtcblxuLyoqXG4gKiBFbnF1ZXVlIGEgcmVyZW5kZXIgb2YgYSBjb21wb25lbnRcbiAqIEBwYXJhbSB7Q29tcG9uZW50fSBjIFRoZSBjb21wb25lbnQgdG8gcmVyZW5kZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVucXVldWVSZW5kZXIoYykge1xuXHRpZiAoXG5cdFx0KCFjLl9kaXJ0eSBcdTAwMjZcdTAwMjZcblx0XHRcdChjLl9kaXJ0eSA9IHRydWUpIFx1MDAyNlx1MDAyNlxuXHRcdFx0cmVyZW5kZXJRdWV1ZS5wdXNoKGMpIFx1MDAyNlx1MDAyNlxuXHRcdFx0IXByb2Nlc3MuX3JlcmVuZGVyQ291bnQrKykgfHxcblx0XHRwcmV2RGVib3VuY2UgIT09IG9wdGlvbnMuZGVib3VuY2VSZW5kZXJpbmdcblx0KSB7XG5cdFx0cHJldkRlYm91bmNlID0gb3B0aW9ucy5kZWJvdW5jZVJlbmRlcmluZztcblx0XHQocHJldkRlYm91bmNlIHx8IGRlZmVyKShwcm9jZXNzKTtcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7Q29tcG9uZW50fSBhXG4gKiBAcGFyYW0ge0NvbXBvbmVudH0gYlxuICovXG5jb25zdCBkZXB0aFNvcnQgPSAoYSwgYikgPVx1MDAzZSBhLl92bm9kZS5fZGVwdGggLSBiLl92bm9kZS5fZGVwdGg7XG5cbi8qKiBGbHVzaCB0aGUgcmVuZGVyIHF1ZXVlIGJ5IHJlcmVuZGVyaW5nIGFsbCBxdWV1ZWQgY29tcG9uZW50cyAqL1xuZnVuY3Rpb24gcHJvY2VzcygpIHtcblx0bGV0IGM7XG5cdHJlcmVuZGVyUXVldWUuc29ydChkZXB0aFNvcnQpO1xuXHQvLyBEb24ndCB1cGRhdGUgYHJlbmRlckNvdW50YCB5ZXQuIEtlZXAgaXRzIHZhbHVlIG5vbi16ZXJvIHRvIHByZXZlbnQgdW5uZWNlc3Nhcnlcblx0Ly8gcHJvY2VzcygpIGNhbGxzIGZyb20gZ2V0dGluZyBzY2hlZHVsZWQgd2hpbGUgYHF1ZXVlYCBpcyBzdGlsbCBiZWluZyBjb25zdW1lZC5cblx0d2hpbGUgKChjID0gcmVyZW5kZXJRdWV1ZS5zaGlmdCgpKSkge1xuXHRcdGlmIChjLl9kaXJ0eSkge1xuXHRcdFx0bGV0IHJlbmRlclF1ZXVlTGVuZ3RoID0gcmVyZW5kZXJRdWV1ZS5sZW5ndGg7XG5cdFx0XHRyZW5kZXJDb21wb25lbnQoYyk7XG5cdFx0XHRpZiAocmVyZW5kZXJRdWV1ZS5sZW5ndGggXHUwMDNlIHJlbmRlclF1ZXVlTGVuZ3RoKSB7XG5cdFx0XHRcdC8vIFdoZW4gaS5lLiByZXJlbmRlcmluZyBhIHByb3ZpZGVyIGFkZGl0aW9uYWwgbmV3IGl0ZW1zIGNhbiBiZSBpbmplY3RlZCwgd2Ugd2FudCB0b1xuXHRcdFx0XHQvLyBrZWVwIHRoZSBvcmRlciBmcm9tIHRvcCB0byBib3R0b20gd2l0aCB0aG9zZSBuZXcgaXRlbXMgc28gd2UgY2FuIGhhbmRsZSB0aGVtIGluIGFcblx0XHRcdFx0Ly8gc2luZ2xlIHBhc3Ncblx0XHRcdFx0cmVyZW5kZXJRdWV1ZS5zb3J0KGRlcHRoU29ydCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHByb2Nlc3MuX3JlcmVuZGVyQ291bnQgPSAwO1xufVxuXG5wcm9jZXNzLl9yZXJlbmRlckNvdW50ID0gMDtcbiIsICJpbXBvcnQgeyBJU19OT05fRElNRU5TSU9OQUwgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IG9wdGlvbnMgZnJvbSAnLi4vb3B0aW9ucyc7XG5cbmZ1bmN0aW9uIHNldFN0eWxlKHN0eWxlLCBrZXksIHZhbHVlKSB7XG5cdGlmIChrZXlbMF0gPT09ICctJykge1xuXHRcdHN0eWxlLnNldFByb3BlcnR5KGtleSwgdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWUpO1xuXHR9IGVsc2UgaWYgKHZhbHVlID09IG51bGwpIHtcblx0XHRzdHlsZVtrZXldID0gJyc7XG5cdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlICE9ICdudW1iZXInIHx8IElTX05PTl9ESU1FTlNJT05BTC50ZXN0KGtleSkpIHtcblx0XHRzdHlsZVtrZXldID0gdmFsdWU7XG5cdH0gZWxzZSB7XG5cdFx0c3R5bGVba2V5XSA9IHZhbHVlICsgJ3B4Jztcblx0fVxufVxuXG4vLyBBIGxvZ2ljYWwgY2xvY2sgdG8gc29sdmUgaXNzdWVzIGxpa2UgaHR0cHM6Ly9naXRodWIuY29tL3ByZWFjdGpzL3ByZWFjdC9pc3N1ZXMvMzkyNy5cbi8vIFdoZW4gdGhlIERPTSBwZXJmb3JtcyBhbiBldmVudCBpdCBsZWF2ZXMgbWljcm8tdGlja3MgaW4gYmV0d2VlbiBidWJibGluZyB1cCB3aGljaCBtZWFucyB0aGF0XG4vLyBhbiBldmVudCBjYW4gdHJpZ2dlciBvbiBhIG5ld2x5IHJlYXRlZCBET00tbm9kZSB3aGlsZSB0aGUgZXZlbnQgYnViYmxlcyB1cC5cbi8vXG4vLyBPcmlnaW5hbGx5IGluc3BpcmVkIGJ5IFZ1ZVxuLy8gKGh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy9jb3JlL2Jsb2IvY2FlYjhhNjg4MTFhMWIwZjc5L3BhY2thZ2VzL3J1bnRpbWUtZG9tL3NyYy9tb2R1bGVzL2V2ZW50cy50cyNMOTAtTDEwMSksXG4vLyBidXQgbW9kaWZpZWQgdG8gdXNlIGEgbG9naWNhbCBjbG9jayBpbnN0ZWFkIG9mIERhdGUubm93KCkgaW4gY2FzZSBldmVudCBoYW5kbGVycyBnZXQgYXR0YWNoZWRcbi8vIGFuZCBldmVudHMgZ2V0IGRpc3BhdGNoZWQgZHVyaW5nIHRoZSBzYW1lIG1pbGxpc2Vjb25kLlxuLy9cbi8vIFRoZSBjbG9jayBpcyBpbmNyZW1lbnRlZCBhZnRlciBlYWNoIG5ldyBldmVudCBkaXNwYXRjaC4gVGhpcyBhbGxvd3MgMSAwMDAgMDAwIG5ldyBldmVudHNcbi8vIHBlciBzZWNvbmQgZm9yIG92ZXIgMjgwIHllYXJzIGJlZm9yZSB0aGUgdmFsdWUgcmVhY2hlcyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiAoMioqNTMgLSAxKS5cbmxldCBldmVudENsb2NrID0gMDtcblxuLyoqXG4gKiBTZXQgYSBwcm9wZXJ0eSB2YWx1ZSBvbiBhIERPTSBub2RlXG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IGRvbSBUaGUgRE9NIG5vZGUgdG8gbW9kaWZ5XG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gc2V0XG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQgdGhlIHByb3BlcnR5IHRvXG4gKiBAcGFyYW0geyp9IG9sZFZhbHVlIFRoZSBvbGQgdmFsdWUgdGhlIHByb3BlcnR5IGhhZFxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVzcGFjZSBXaGV0aGVyIG9yIG5vdCB0aGlzIERPTSBub2RlIGlzIGFuIFNWRyBub2RlIG9yIG5vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UHJvcGVydHkoZG9tLCBuYW1lLCB2YWx1ZSwgb2xkVmFsdWUsIG5hbWVzcGFjZSkge1xuXHRsZXQgdXNlQ2FwdHVyZTtcblxuXHRvOiBpZiAobmFtZSA9PT0gJ3N0eWxlJykge1xuXHRcdGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcblx0XHRcdGRvbS5zdHlsZS5jc3NUZXh0ID0gdmFsdWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICh0eXBlb2Ygb2xkVmFsdWUgPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0ZG9tLnN0eWxlLmNzc1RleHQgPSBvbGRWYWx1ZSA9ICcnO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAob2xkVmFsdWUpIHtcblx0XHRcdFx0Zm9yIChuYW1lIGluIG9sZFZhbHVlKSB7XG5cdFx0XHRcdFx0aWYgKCEodmFsdWUgXHUwMDI2XHUwMDI2IG5hbWUgaW4gdmFsdWUpKSB7XG5cdFx0XHRcdFx0XHRzZXRTdHlsZShkb20uc3R5bGUsIG5hbWUsICcnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRcdGZvciAobmFtZSBpbiB2YWx1ZSkge1xuXHRcdFx0XHRcdGlmICghb2xkVmFsdWUgfHwgdmFsdWVbbmFtZV0gIT09IG9sZFZhbHVlW25hbWVdKSB7XG5cdFx0XHRcdFx0XHRzZXRTdHlsZShkb20uc3R5bGUsIG5hbWUsIHZhbHVlW25hbWVdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0Ly8gQmVuY2htYXJrIGZvciBjb21wYXJpc29uOiBodHRwczovL2VzYmVuY2guY29tL2JlbmNoLzU3NGM5NTRiZGI5NjViOWEwMDk2NWFjNlxuXHRlbHNlIGlmIChuYW1lWzBdID09PSAnbycgXHUwMDI2XHUwMDI2IG5hbWVbMV0gPT09ICduJykge1xuXHRcdHVzZUNhcHR1cmUgPVxuXHRcdFx0bmFtZSAhPT0gKG5hbWUgPSBuYW1lLnJlcGxhY2UoLyhQb2ludGVyQ2FwdHVyZSkkfENhcHR1cmUkL2ksICckMScpKTtcblxuXHRcdC8vIEluZmVyIGNvcnJlY3QgY2FzaW5nIGZvciBET00gYnVpbHQtaW4gZXZlbnRzOlxuXHRcdGlmIChcblx0XHRcdG5hbWUudG9Mb3dlckNhc2UoKSBpbiBkb20gfHxcblx0XHRcdG5hbWUgPT09ICdvbkZvY3VzT3V0JyB8fFxuXHRcdFx0bmFtZSA9PT0gJ29uRm9jdXNJbidcblx0XHQpXG5cdFx0XHRuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpLnNsaWNlKDIpO1xuXHRcdGVsc2UgbmFtZSA9IG5hbWUuc2xpY2UoMik7XG5cblx0XHRpZiAoIWRvbS5fbGlzdGVuZXJzKSBkb20uX2xpc3RlbmVycyA9IHt9O1xuXHRcdGRvbS5fbGlzdGVuZXJzW25hbWUgKyB1c2VDYXB0dXJlXSA9IHZhbHVlO1xuXG5cdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRpZiAoIW9sZFZhbHVlKSB7XG5cdFx0XHRcdHZhbHVlLl9hdHRhY2hlZCA9IGV2ZW50Q2xvY2s7XG5cdFx0XHRcdGRvbS5hZGRFdmVudExpc3RlbmVyKFxuXHRcdFx0XHRcdG5hbWUsXG5cdFx0XHRcdFx0dXNlQ2FwdHVyZSA/IGV2ZW50UHJveHlDYXB0dXJlIDogZXZlbnRQcm94eSxcblx0XHRcdFx0XHR1c2VDYXB0dXJlXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2YWx1ZS5fYXR0YWNoZWQgPSBvbGRWYWx1ZS5fYXR0YWNoZWQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRvbS5yZW1vdmVFdmVudExpc3RlbmVyKFxuXHRcdFx0XHRuYW1lLFxuXHRcdFx0XHR1c2VDYXB0dXJlID8gZXZlbnRQcm94eUNhcHR1cmUgOiBldmVudFByb3h5LFxuXHRcdFx0XHR1c2VDYXB0dXJlXG5cdFx0XHQpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRpZiAobmFtZXNwYWNlID09ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycpIHtcblx0XHRcdC8vIE5vcm1hbGl6ZSBpbmNvcnJlY3QgcHJvcCB1c2FnZSBmb3IgU1ZHOlxuXHRcdFx0Ly8gLSB4bGluazpocmVmIC8geGxpbmtIcmVmIC0tXHUwMDNlIGhyZWYgKHhsaW5rOmhyZWYgd2FzIHJlbW92ZWQgZnJvbSBTVkcgYW5kIGlzbid0IG5lZWRlZClcblx0XHRcdC8vIC0gY2xhc3NOYW1lIC0tXHUwMDNlIGNsYXNzXG5cdFx0XHRuYW1lID0gbmFtZS5yZXBsYWNlKC94bGluayhIfDpoKS8sICdoJykucmVwbGFjZSgvc05hbWUkLywgJ3MnKTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0bmFtZSAhPSAnd2lkdGgnIFx1MDAyNlx1MDAyNlxuXHRcdFx0bmFtZSAhPSAnaGVpZ2h0JyBcdTAwMjZcdTAwMjZcblx0XHRcdG5hbWUgIT0gJ2hyZWYnIFx1MDAyNlx1MDAyNlxuXHRcdFx0bmFtZSAhPSAnbGlzdCcgXHUwMDI2XHUwMDI2XG5cdFx0XHRuYW1lICE9ICdmb3JtJyBcdTAwMjZcdTAwMjZcblx0XHRcdC8vIERlZmF1bHQgdmFsdWUgaW4gYnJvd3NlcnMgaXMgYC0xYCBhbmQgYW4gZW1wdHkgc3RyaW5nIGlzXG5cdFx0XHQvLyBjYXN0IHRvIGAwYCBpbnN0ZWFkXG5cdFx0XHRuYW1lICE9ICd0YWJJbmRleCcgXHUwMDI2XHUwMDI2XG5cdFx0XHRuYW1lICE9ICdkb3dubG9hZCcgXHUwMDI2XHUwMDI2XG5cdFx0XHRuYW1lICE9ICdyb3dTcGFuJyBcdTAwMjZcdTAwMjZcblx0XHRcdG5hbWUgIT0gJ2NvbFNwYW4nIFx1MDAyNlx1MDAyNlxuXHRcdFx0bmFtZSAhPSAncm9sZScgXHUwMDI2XHUwMDI2XG5cdFx0XHRuYW1lICE9ICdwb3BvdmVyJyBcdTAwMjZcdTAwMjZcblx0XHRcdG5hbWUgaW4gZG9tXG5cdFx0KSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRkb21bbmFtZV0gPSB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcblx0XHRcdFx0Ly8gbGFiZWxsZWQgYnJlYWsgaXMgMWIgc21hbGxlciBoZXJlIHRoYW4gYSByZXR1cm4gc3RhdGVtZW50IChzb3JyeSlcblx0XHRcdFx0YnJlYWsgbztcblx0XHRcdH0gY2F0Y2ggKGUpIHt9XG5cdFx0fVxuXG5cdFx0Ly8gYXJpYS0gYW5kIGRhdGEtIGF0dHJpYnV0ZXMgaGF2ZSBubyBib29sZWFuIHJlcHJlc2VudGF0aW9uLlxuXHRcdC8vIEEgYGZhbHNlYCB2YWx1ZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgYXR0cmlidXRlIG5vdCBiZWluZ1xuXHRcdC8vIHByZXNlbnQsIHNvIHdlIGNhbid0IHJlbW92ZSBpdC4gRm9yIG5vbi1ib29sZWFuIGFyaWFcblx0XHQvLyBhdHRyaWJ1dGVzIHdlIGNvdWxkIHRyZWF0IGZhbHNlIGFzIGEgcmVtb3ZhbCwgYnV0IHRoZVxuXHRcdC8vIGFtb3VudCBvZiBleGNlcHRpb25zIHdvdWxkIGNvc3QgdG9vIG1hbnkgYnl0ZXMuIE9uIHRvcCBvZlxuXHRcdC8vIHRoYXQgb3RoZXIgZnJhbWV3b3JrcyBnZW5lcmFsbHkgc3RyaW5naWZ5IGBmYWxzZWAuXG5cblx0XHRpZiAodHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicpIHtcblx0XHRcdC8vIG5ldmVyIHNlcmlhbGl6ZSBmdW5jdGlvbnMgYXMgYXR0cmlidXRlIHZhbHVlc1xuXHRcdH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCBcdTAwMjZcdTAwMjYgKHZhbHVlICE9PSBmYWxzZSB8fCBuYW1lWzRdID09PSAnLScpKSB7XG5cdFx0XHRkb20uc2V0QXR0cmlidXRlKG5hbWUsIG5hbWUgPT0gJ3BvcG92ZXInIFx1MDAyNlx1MDAyNiB2YWx1ZSA9PSB0cnVlID8gJycgOiB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRvbS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIGV2ZW50IHByb3h5IGZ1bmN0aW9uLlxuICogQHBhcmFtIHtib29sZWFufSB1c2VDYXB0dXJlIElzIHRoZSBldmVudCBoYW5kbGVyIGZvciB0aGUgY2FwdHVyZSBwaGFzZS5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUV2ZW50UHJveHkodXNlQ2FwdHVyZSkge1xuXHQvKipcblx0ICogUHJveHkgYW4gZXZlbnQgdG8gaG9va2VkIGV2ZW50IGhhbmRsZXJzXG5cdCAqIEBwYXJhbSB7UHJlYWN0RXZlbnR9IGUgVGhlIGV2ZW50IG9iamVjdCBmcm9tIHRoZSBicm93c2VyXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRyZXR1cm4gZnVuY3Rpb24gKGUpIHtcblx0XHRpZiAodGhpcy5fbGlzdGVuZXJzKSB7XG5cdFx0XHRjb25zdCBldmVudEhhbmRsZXIgPSB0aGlzLl9saXN0ZW5lcnNbZS50eXBlICsgdXNlQ2FwdHVyZV07XG5cdFx0XHRpZiAoZS5fZGlzcGF0Y2hlZCA9PSBudWxsKSB7XG5cdFx0XHRcdGUuX2Rpc3BhdGNoZWQgPSBldmVudENsb2NrKys7XG5cblx0XHRcdFx0Ly8gV2hlbiBgZS5fZGlzcGF0Y2hlZGAgaXMgc21hbGxlciB0aGFuIHRoZSB0aW1lIHdoZW4gdGhlIHRhcmdldGVkIGV2ZW50XG5cdFx0XHRcdC8vIGhhbmRsZXIgd2FzIGF0dGFjaGVkIHdlIGtub3cgd2UgaGF2ZSBidWJibGVkIHVwIHRvIGFuIGVsZW1lbnQgdGhhdCB3YXMgYWRkZWRcblx0XHRcdFx0Ly8gZHVyaW5nIHBhdGNoaW5nIHRoZSBET00uXG5cdFx0XHR9IGVsc2UgaWYgKGUuX2Rpc3BhdGNoZWQgXHUwMDNjIGV2ZW50SGFuZGxlci5fYXR0YWNoZWQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGV2ZW50SGFuZGxlcihvcHRpb25zLmV2ZW50ID8gb3B0aW9ucy5ldmVudChlKSA6IGUpO1xuXHRcdH1cblx0fTtcbn1cblxuY29uc3QgZXZlbnRQcm94eSA9IGNyZWF0ZUV2ZW50UHJveHkoZmFsc2UpO1xuY29uc3QgZXZlbnRQcm94eUNhcHR1cmUgPSBjcmVhdGVFdmVudFByb3h5KHRydWUpO1xuIiwgImltcG9ydCB7IGVucXVldWVSZW5kZXIgfSBmcm9tICcuL2NvbXBvbmVudCc7XG5cbmV4cG9ydCBsZXQgaSA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZXh0KGRlZmF1bHRWYWx1ZSwgY29udGV4dElkKSB7XG5cdGNvbnRleHRJZCA9ICdfX2NDJyArIGkrKztcblxuXHRjb25zdCBjb250ZXh0ID0ge1xuXHRcdF9pZDogY29udGV4dElkLFxuXHRcdF9kZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSxcblx0XHQvKiogQHR5cGUge0Z1bmN0aW9uQ29tcG9uZW50fSAqL1xuXHRcdENvbnN1bWVyKHByb3BzLCBjb250ZXh0VmFsdWUpIHtcblx0XHRcdC8vIHJldHVybiBwcm9wcy5jaGlsZHJlbihcblx0XHRcdC8vIFx0Y29udGV4dFtjb250ZXh0SWRdID8gY29udGV4dFtjb250ZXh0SWRdLnByb3BzLnZhbHVlIDogZGVmYXVsdFZhbHVlXG5cdFx0XHQvLyApO1xuXHRcdFx0cmV0dXJuIHByb3BzLmNoaWxkcmVuKGNvbnRleHRWYWx1ZSk7XG5cdFx0fSxcblx0XHQvKiogQHR5cGUge0Z1bmN0aW9uQ29tcG9uZW50fSAqL1xuXHRcdFByb3ZpZGVyKHByb3BzKSB7XG5cdFx0XHRpZiAoIXRoaXMuZ2V0Q2hpbGRDb250ZXh0KSB7XG5cdFx0XHRcdC8qKiBAdHlwZSB7Q29tcG9uZW50W10gfCBudWxsfSAqL1xuXHRcdFx0XHRsZXQgc3VicyA9IFtdO1xuXHRcdFx0XHRsZXQgY3R4ID0ge307XG5cdFx0XHRcdGN0eFtjb250ZXh0SWRdID0gdGhpcztcblxuXHRcdFx0XHR0aGlzLmdldENoaWxkQ29udGV4dCA9ICgpID1cdTAwM2UgY3R4O1xuXG5cdFx0XHRcdHRoaXMuY29tcG9uZW50V2lsbFVubW91bnQgPSAoKSA9XHUwMDNlIHtcblx0XHRcdFx0XHRzdWJzID0gbnVsbDtcblx0XHRcdFx0fTtcblxuXHRcdFx0XHR0aGlzLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IGZ1bmN0aW9uIChfcHJvcHMpIHtcblx0XHRcdFx0XHRpZiAodGhpcy5wcm9wcy52YWx1ZSAhPT0gX3Byb3BzLnZhbHVlKSB7XG5cdFx0XHRcdFx0XHRzdWJzLnNvbWUoYyA9XHUwMDNlIHtcblx0XHRcdFx0XHRcdFx0Yy5fZm9yY2UgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRlbnF1ZXVlUmVuZGVyKGMpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdHRoaXMuc3ViID0gYyA9XHUwMDNlIHtcblx0XHRcdFx0XHRzdWJzLnB1c2goYyk7XG5cdFx0XHRcdFx0bGV0IG9sZCA9IGMuY29tcG9uZW50V2lsbFVubW91bnQ7XG5cdFx0XHRcdFx0Yy5jb21wb25lbnRXaWxsVW5tb3VudCA9ICgpID1cdTAwM2Uge1xuXHRcdFx0XHRcdFx0aWYgKHN1YnMpIHtcblx0XHRcdFx0XHRcdFx0c3Vicy5zcGxpY2Uoc3Vicy5pbmRleE9mKGMpLCAxKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChvbGQpIG9sZC5jYWxsKGMpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBwcm9wcy5jaGlsZHJlbjtcblx0XHR9XG5cdH07XG5cblx0Ly8gRGV2dG9vbHMgbmVlZHMgYWNjZXNzIHRvIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIGl0XG5cdC8vIGVuY291bnRlcnMgYSBQcm92aWRlci4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gc3VwcG9ydFxuXHQvLyBzZXR0aW5nIGBkaXNwbGF5TmFtZWAgb24gdGhlIGNvbnRleHQgb2JqZWN0IGluc3RlYWRcblx0Ly8gb2Ygb24gdGhlIGNvbXBvbmVudCBpdHNlbGYuIFNlZTpcblx0Ly8gaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2NvbnRleHQuaHRtbCNjb250ZXh0ZGlzcGxheW5hbWVcblxuXHRyZXR1cm4gKGNvbnRleHQuUHJvdmlkZXIuX2NvbnRleHRSZWYgPSBjb250ZXh0LkNvbnN1bWVyLmNvbnRleHRUeXBlID1cblx0XHRjb250ZXh0KTtcbn1cbiIsICJpbXBvcnQgeyBkaWZmLCB1bm1vdW50LCBhcHBseVJlZiB9IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHsgY3JlYXRlVk5vZGUsIEZyYWdtZW50IH0gZnJvbSAnLi4vY3JlYXRlLWVsZW1lbnQnO1xuaW1wb3J0IHsgRU1QVFlfT0JKLCBFTVBUWV9BUlIsIElOU0VSVF9WTk9ERSwgTUFUQ0hFRCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgeyBnZXREb21TaWJsaW5nIH0gZnJvbSAnLi4vY29tcG9uZW50JztcblxuLyoqXG4gKiBEaWZmIHRoZSBjaGlsZHJlbiBvZiBhIHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50fSBwYXJlbnREb20gVGhlIERPTSBlbGVtZW50IHdob3NlIGNoaWxkcmVuIGFyZSBiZWluZ1xuICogZGlmZmVkXG4gKiBAcGFyYW0ge0NvbXBvbmVudENoaWxkcmVuW119IHJlbmRlclJlc3VsdFxuICogQHBhcmFtIHtWTm9kZX0gbmV3UGFyZW50Vk5vZGUgVGhlIG5ldyB2aXJ0dWFsIG5vZGUgd2hvc2UgY2hpbGRyZW4gc2hvdWxkIGJlXG4gKiBkaWZmJ2VkIGFnYWluc3Qgb2xkUGFyZW50Vk5vZGVcbiAqIEBwYXJhbSB7Vk5vZGV9IG9sZFBhcmVudFZOb2RlIFRoZSBvbGQgdmlydHVhbCBub2RlIHdob3NlIGNoaWxkcmVuIHNob3VsZCBiZVxuICogZGlmZidlZCBhZ2FpbnN0IG5ld1BhcmVudFZOb2RlXG4gKiBAcGFyYW0ge29iamVjdH0gZ2xvYmFsQ29udGV4dCBUaGUgY3VycmVudCBjb250ZXh0IG9iamVjdCAtIG1vZGlmaWVkIGJ5XG4gKiBnZXRDaGlsZENvbnRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lc3BhY2UgQ3VycmVudCBuYW1lc3BhY2Ugb2YgdGhlIERPTSBub2RlIChIVE1MLCBTVkcsIG9yIE1hdGhNTClcbiAqIEBwYXJhbSB7QXJyYXlcdTAwM2NQcmVhY3RFbGVtZW50XHUwMDNlfSBleGNlc3NEb21DaGlsZHJlblxuICogQHBhcmFtIHtBcnJheVx1MDAzY0NvbXBvbmVudFx1MDAzZX0gY29tbWl0UXVldWUgTGlzdCBvZiBjb21wb25lbnRzIHdoaWNoIGhhdmUgY2FsbGJhY2tzXG4gKiB0byBpbnZva2UgaW4gY29tbWl0Um9vdFxuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50fSBvbGREb20gVGhlIGN1cnJlbnQgYXR0YWNoZWQgRE9NIGVsZW1lbnQgYW55IG5ldyBkb21cbiAqIGVsZW1lbnRzIHNob3VsZCBiZSBwbGFjZWQgYXJvdW5kLiBMaWtlbHkgYG51bGxgIG9uIGZpcnN0IHJlbmRlciAoZXhjZXB0IHdoZW5cbiAqIGh5ZHJhdGluZykuIENhbiBiZSBhIHNpYmxpbmcgRE9NIGVsZW1lbnQgd2hlbiBkaWZmaW5nIEZyYWdtZW50cyB0aGF0IGhhdmVcbiAqIHNpYmxpbmdzLiBJbiBtb3N0IGNhc2VzLCBpdCBzdGFydHMgb3V0IGFzIGBvbGRDaGlsZHJlblswXS5fZG9tYC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNIeWRyYXRpbmcgV2hldGhlciBvciBub3Qgd2UgYXJlIGluIGh5ZHJhdGlvblxuICogQHBhcmFtIHthbnlbXX0gcmVmUXVldWUgYW4gYXJyYXkgb2YgZWxlbWVudHMgbmVlZGVkIHRvIGludm9rZSByZWZzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQ2hpbGRyZW4oXG5cdHBhcmVudERvbSxcblx0cmVuZGVyUmVzdWx0LFxuXHRuZXdQYXJlbnRWTm9kZSxcblx0b2xkUGFyZW50Vk5vZGUsXG5cdGdsb2JhbENvbnRleHQsXG5cdG5hbWVzcGFjZSxcblx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdGNvbW1pdFF1ZXVlLFxuXHRvbGREb20sXG5cdGlzSHlkcmF0aW5nLFxuXHRyZWZRdWV1ZVxuKSB7XG5cdGxldCBpLFxuXHRcdC8qKiBAdHlwZSB7Vk5vZGV9ICovXG5cdFx0b2xkVk5vZGUsXG5cdFx0LyoqIEB0eXBlIHtWTm9kZX0gKi9cblx0XHRjaGlsZFZOb2RlLFxuXHRcdC8qKiBAdHlwZSB7UHJlYWN0RWxlbWVudH0gKi9cblx0XHRuZXdEb20sXG5cdFx0LyoqIEB0eXBlIHtQcmVhY3RFbGVtZW50fSAqL1xuXHRcdGZpcnN0Q2hpbGREb207XG5cblx0Ly8gVGhpcyBpcyBhIGNvbXByZXNzaW9uIG9mIG9sZFBhcmVudFZOb2RlIT1udWxsIFx1MDAyNlx1MDAyNiBvbGRQYXJlbnRWTm9kZSAhPSBFTVBUWV9PQkogXHUwMDI2XHUwMDI2IG9sZFBhcmVudFZOb2RlLl9jaGlsZHJlbiB8fCBFTVBUWV9BUlJcblx0Ly8gYXMgRU1QVFlfT0JKLl9jaGlsZHJlbiBzaG91bGQgYmUgYHVuZGVmaW5lZGAuXG5cdC8qKiBAdHlwZSB7Vk5vZGVbXX0gKi9cblx0bGV0IG9sZENoaWxkcmVuID0gKG9sZFBhcmVudFZOb2RlIFx1MDAyNlx1MDAyNiBvbGRQYXJlbnRWTm9kZS5fY2hpbGRyZW4pIHx8IEVNUFRZX0FSUjtcblxuXHRsZXQgbmV3Q2hpbGRyZW5MZW5ndGggPSByZW5kZXJSZXN1bHQubGVuZ3RoO1xuXG5cdG5ld1BhcmVudFZOb2RlLl9uZXh0RG9tID0gb2xkRG9tO1xuXHRjb25zdHJ1Y3ROZXdDaGlsZHJlbkFycmF5KG5ld1BhcmVudFZOb2RlLCByZW5kZXJSZXN1bHQsIG9sZENoaWxkcmVuKTtcblx0b2xkRG9tID0gbmV3UGFyZW50Vk5vZGUuX25leHREb207XG5cblx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbmV3Q2hpbGRyZW5MZW5ndGg7IGkrKykge1xuXHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV07XG5cdFx0aWYgKFxuXHRcdFx0Y2hpbGRWTm9kZSA9PSBudWxsIHx8XG5cdFx0XHR0eXBlb2YgY2hpbGRWTm9kZSA9PSAnYm9vbGVhbicgfHxcblx0XHRcdHR5cGVvZiBjaGlsZFZOb2RlID09ICdmdW5jdGlvbidcblx0XHQpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdC8vIEF0IHRoaXMgcG9pbnQsIGNvbnN0cnVjdE5ld0NoaWxkcmVuQXJyYXkgaGFzIGFzc2lnbmVkIF9pbmRleCB0byBiZSB0aGVcblx0XHQvLyBtYXRjaGluZ0luZGV4IGZvciB0aGlzIFZOb2RlJ3Mgb2xkVk5vZGUgKG9yIC0xIGlmIHRoZXJlIGlzIG5vIG9sZFZOb2RlKS5cblx0XHRpZiAoY2hpbGRWTm9kZS5faW5kZXggPT09IC0xKSB7XG5cdFx0XHRvbGRWTm9kZSA9IEVNUFRZX09CSjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b2xkVk5vZGUgPSBvbGRDaGlsZHJlbltjaGlsZFZOb2RlLl9pbmRleF0gfHwgRU1QVFlfT0JKO1xuXHRcdH1cblxuXHRcdC8vIFVwZGF0ZSBjaGlsZFZOb2RlLl9pbmRleCB0byBpdHMgZmluYWwgaW5kZXhcblx0XHRjaGlsZFZOb2RlLl9pbmRleCA9IGk7XG5cblx0XHQvLyBNb3JwaCB0aGUgb2xkIGVsZW1lbnQgaW50byB0aGUgbmV3IG9uZSwgYnV0IGRvbid0IGFwcGVuZCBpdCB0byB0aGUgZG9tIHlldFxuXHRcdGRpZmYoXG5cdFx0XHRwYXJlbnREb20sXG5cdFx0XHRjaGlsZFZOb2RlLFxuXHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRnbG9iYWxDb250ZXh0LFxuXHRcdFx0bmFtZXNwYWNlLFxuXHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdFx0XHRjb21taXRRdWV1ZSxcblx0XHRcdG9sZERvbSxcblx0XHRcdGlzSHlkcmF0aW5nLFxuXHRcdFx0cmVmUXVldWVcblx0XHQpO1xuXG5cdFx0Ly8gQWRqdXN0IERPTSBub2Rlc1xuXHRcdG5ld0RvbSA9IGNoaWxkVk5vZGUuX2RvbTtcblx0XHRpZiAoY2hpbGRWTm9kZS5yZWYgXHUwMDI2XHUwMDI2IG9sZFZOb2RlLnJlZiAhPSBjaGlsZFZOb2RlLnJlZikge1xuXHRcdFx0aWYgKG9sZFZOb2RlLnJlZikge1xuXHRcdFx0XHRhcHBseVJlZihvbGRWTm9kZS5yZWYsIG51bGwsIGNoaWxkVk5vZGUpO1xuXHRcdFx0fVxuXHRcdFx0cmVmUXVldWUucHVzaChcblx0XHRcdFx0Y2hpbGRWTm9kZS5yZWYsXG5cdFx0XHRcdGNoaWxkVk5vZGUuX2NvbXBvbmVudCB8fCBuZXdEb20sXG5cdFx0XHRcdGNoaWxkVk5vZGVcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0aWYgKGZpcnN0Q2hpbGREb20gPT0gbnVsbCBcdTAwMjZcdTAwMjYgbmV3RG9tICE9IG51bGwpIHtcblx0XHRcdGZpcnN0Q2hpbGREb20gPSBuZXdEb207XG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0Y2hpbGRWTm9kZS5fZmxhZ3MgXHUwMDI2IElOU0VSVF9WTk9ERSB8fFxuXHRcdFx0b2xkVk5vZGUuX2NoaWxkcmVuID09PSBjaGlsZFZOb2RlLl9jaGlsZHJlblxuXHRcdCkge1xuXHRcdFx0b2xkRG9tID0gaW5zZXJ0KGNoaWxkVk5vZGUsIG9sZERvbSwgcGFyZW50RG9tKTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0dHlwZW9mIGNoaWxkVk5vZGUudHlwZSA9PSAnZnVuY3Rpb24nIFx1MDAyNlx1MDAyNlxuXHRcdFx0Y2hpbGRWTm9kZS5fbmV4dERvbSAhPT0gdW5kZWZpbmVkXG5cdFx0KSB7XG5cdFx0XHQvLyBTaW5jZSBGcmFnbWVudHMgb3IgY29tcG9uZW50cyB0aGF0IHJldHVybiBGcmFnbWVudCBsaWtlIFZOb2RlcyBjYW5cblx0XHRcdC8vIGNvbnRhaW4gbXVsdGlwbGUgRE9NIG5vZGVzIGFzIHRoZSBzYW1lIGxldmVsLCBjb250aW51ZSB0aGUgZGlmZiBmcm9tXG5cdFx0XHQvLyB0aGUgc2libGluZyBvZiBsYXN0IERPTSBjaGlsZCBvZiB0aGlzIGNoaWxkIFZOb2RlXG5cdFx0XHRvbGREb20gPSBjaGlsZFZOb2RlLl9uZXh0RG9tO1xuXHRcdH0gZWxzZSBpZiAobmV3RG9tKSB7XG5cdFx0XHRvbGREb20gPSBuZXdEb20ubmV4dFNpYmxpbmc7XG5cdFx0fVxuXG5cdFx0Ly8gRWFnZXJseSBjbGVhbnVwIF9uZXh0RG9tLiBXZSBkb24ndCBuZWVkIHRvIHBlcnNpc3QgdGhlIHZhbHVlIGJlY2F1c2UgaXRcblx0XHQvLyBpcyBvbmx5IHVzZWQgYnkgYGRpZmZDaGlsZHJlbmAgdG8gZGV0ZXJtaW5lIHdoZXJlIHRvIHJlc3VtZSB0aGUgZGlmZlxuXHRcdC8vIGFmdGVyIGRpZmZpbmcgQ29tcG9uZW50cyBhbmQgRnJhZ21lbnRzLiBPbmNlIHdlIHN0b3JlIGl0IHRoZSBuZXh0RE9NXG5cdFx0Ly8gbG9jYWwgdmFyLCB3ZSBjYW4gY2xlYW4gdXAgdGhlIHByb3BlcnR5LiBBbHNvIHByZXZlbnRzIHVzIGhhbmdpbmcgb24gdG9cblx0XHQvLyBET00gbm9kZXMgdGhhdCBtYXkgaGF2ZSBiZWVuIHVubW91bnRlZC5cblx0XHRjaGlsZFZOb2RlLl9uZXh0RG9tID0gdW5kZWZpbmVkO1xuXG5cdFx0Ly8gVW5zZXQgZGlmZmluZyBmbGFnc1xuXHRcdGNoaWxkVk5vZGUuX2ZsYWdzIFx1MDAyNj0gfihJTlNFUlRfVk5PREUgfCBNQVRDSEVEKTtcblx0fVxuXG5cdC8vIFRPRE86IFdpdGggbmV3IGNoaWxkIGRpZmZpbmcgYWxnbywgY29uc2lkZXIgYWx0IHdheXMgdG8gZGlmZiBGcmFnbWVudHMuXG5cdC8vIFN1Y2ggYXMgZHJvcHBpbmcgb2xkRG9tIGFuZCBtb3ZpbmcgZnJhZ21lbnRzIGluIHBsYWNlXG5cdC8vXG5cdC8vIEJlY2F1c2UgdGhlIG5ld1BhcmVudFZOb2RlIGlzIEZyYWdtZW50LWxpa2UsIHdlIG5lZWQgdG8gc2V0IGl0J3Ncblx0Ly8gX25leHREb20gcHJvcGVydHkgdG8gdGhlIG5leHRTaWJsaW5nIG9mIGl0cyBsYXN0IGNoaWxkIERPTSBub2RlLlxuXHQvL1xuXHQvLyBgb2xkRG9tYCBjb250YWlucyB0aGUgY29ycmVjdCB2YWx1ZSBoZXJlIGJlY2F1c2UgaWYgdGhlIGxhc3QgY2hpbGRcblx0Ly8gaXMgYSBGcmFnbWVudC1saWtlLCB0aGVuIG9sZERvbSBoYXMgYWxyZWFkeSBiZWVuIHNldCB0byB0aGF0IGNoaWxkJ3MgX25leHREb20uXG5cdC8vIElmIHRoZSBsYXN0IGNoaWxkIGlzIGEgRE9NIFZOb2RlLCB0aGVuIG9sZERvbSB3aWxsIGJlIHNldCB0byB0aGF0IERPTVxuXHQvLyBub2RlJ3MgbmV4dFNpYmxpbmcuXG5cdG5ld1BhcmVudFZOb2RlLl9uZXh0RG9tID0gb2xkRG9tO1xuXHRuZXdQYXJlbnRWTm9kZS5fZG9tID0gZmlyc3RDaGlsZERvbTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1ZOb2RlfSBuZXdQYXJlbnRWTm9kZVxuICogQHBhcmFtIHtDb21wb25lbnRDaGlsZHJlbltdfSByZW5kZXJSZXN1bHRcbiAqIEBwYXJhbSB7Vk5vZGVbXX0gb2xkQ2hpbGRyZW5cbiAqL1xuZnVuY3Rpb24gY29uc3RydWN0TmV3Q2hpbGRyZW5BcnJheShuZXdQYXJlbnRWTm9kZSwgcmVuZGVyUmVzdWx0LCBvbGRDaGlsZHJlbikge1xuXHQvKiogQHR5cGUge251bWJlcn0gKi9cblx0bGV0IGk7XG5cdC8qKiBAdHlwZSB7Vk5vZGV9ICovXG5cdGxldCBjaGlsZFZOb2RlO1xuXHQvKiogQHR5cGUge1ZOb2RlfSAqL1xuXHRsZXQgb2xkVk5vZGU7XG5cblx0Y29uc3QgbmV3Q2hpbGRyZW5MZW5ndGggPSByZW5kZXJSZXN1bHQubGVuZ3RoO1xuXHRsZXQgb2xkQ2hpbGRyZW5MZW5ndGggPSBvbGRDaGlsZHJlbi5sZW5ndGgsXG5cdFx0cmVtYWluaW5nT2xkQ2hpbGRyZW4gPSBvbGRDaGlsZHJlbkxlbmd0aDtcblxuXHRsZXQgc2tldyA9IDA7XG5cblx0bmV3UGFyZW50Vk5vZGUuX2NoaWxkcmVuID0gW107XG5cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5ld0NoaWxkcmVuTGVuZ3RoOyBpKyspIHtcblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIFdlIGFyZSByZXVzaW5nIHRoZSBjaGlsZFZOb2RlIHZhcmlhYmxlIHRvIGhvbGQgYm90aCB0aGVcblx0XHQvLyBwcmUgYW5kIHBvc3Qgbm9ybWFsaXplZCBjaGlsZFZOb2RlXG5cdFx0Y2hpbGRWTm9kZSA9IHJlbmRlclJlc3VsdFtpXTtcblxuXHRcdGlmIChcblx0XHRcdGNoaWxkVk5vZGUgPT0gbnVsbCB8fFxuXHRcdFx0dHlwZW9mIGNoaWxkVk5vZGUgPT0gJ2Jvb2xlYW4nIHx8XG5cdFx0XHR0eXBlb2YgY2hpbGRWTm9kZSA9PSAnZnVuY3Rpb24nXG5cdFx0KSB7XG5cdFx0XHRjaGlsZFZOb2RlID0gbmV3UGFyZW50Vk5vZGUuX2NoaWxkcmVuW2ldID0gbnVsbDtcblx0XHR9XG5cdFx0Ly8gSWYgdGhpcyBuZXdWTm9kZSBpcyBiZWluZyByZXVzZWQgKGUuZy4gXHUwMDNjZGl2XHUwMDNle3JldXNlfXtyZXVzZX1cdTAwM2MvZGl2XHUwMDNlKSBpbiB0aGUgc2FtZSBkaWZmLFxuXHRcdC8vIG9yIHdlIGFyZSByZW5kZXJpbmcgYSBjb21wb25lbnQgKGUuZy4gc2V0U3RhdGUpIGNvcHkgdGhlIG9sZFZOb2RlcyBzbyBpdCBjYW4gaGF2ZVxuXHRcdC8vIGl0J3Mgb3duIERPTSBcdTAwMjYgZXRjLiBwb2ludGVyc1xuXHRcdGVsc2UgaWYgKFxuXHRcdFx0dHlwZW9mIGNoaWxkVk5vZGUgPT0gJ3N0cmluZycgfHxcblx0XHRcdHR5cGVvZiBjaGlsZFZOb2RlID09ICdudW1iZXInIHx8XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdmFsaWQtdHlwZW9mXG5cdFx0XHR0eXBlb2YgY2hpbGRWTm9kZSA9PSAnYmlnaW50JyB8fFxuXHRcdFx0Y2hpbGRWTm9kZS5jb25zdHJ1Y3RvciA9PSBTdHJpbmdcblx0XHQpIHtcblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBjcmVhdGVWTm9kZShcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0Y2hpbGRWTm9kZSxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0bnVsbFxuXHRcdFx0KTtcblx0XHR9IGVsc2UgaWYgKGlzQXJyYXkoY2hpbGRWTm9kZSkpIHtcblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBjcmVhdGVWTm9kZShcblx0XHRcdFx0RnJhZ21lbnQsXG5cdFx0XHRcdHsgY2hpbGRyZW46IGNoaWxkVk5vZGUgfSxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0bnVsbFxuXHRcdFx0KTtcblx0XHR9IGVsc2UgaWYgKGNoaWxkVk5vZGUuY29uc3RydWN0b3IgPT09IHVuZGVmaW5lZCBcdTAwMjZcdTAwMjYgY2hpbGRWTm9kZS5fZGVwdGggXHUwMDNlIDApIHtcblx0XHRcdC8vIFZOb2RlIGlzIGFscmVhZHkgaW4gdXNlLCBjbG9uZSBpdC4gVGhpcyBjYW4gaGFwcGVuIGluIHRoZSBmb2xsb3dpbmdcblx0XHRcdC8vIHNjZW5hcmlvOlxuXHRcdFx0Ly8gICBjb25zdCByZXVzZSA9IFx1MDAzY2RpdiAvXHUwMDNlXG5cdFx0XHQvLyAgIFx1MDAzY2Rpdlx1MDAzZXtyZXVzZX1cdTAwM2NzcGFuIC9cdTAwM2V7cmV1c2V9XHUwMDNjL2Rpdlx1MDAzZVxuXHRcdFx0Y2hpbGRWTm9kZSA9IG5ld1BhcmVudFZOb2RlLl9jaGlsZHJlbltpXSA9IGNyZWF0ZVZOb2RlKFxuXHRcdFx0XHRjaGlsZFZOb2RlLnR5cGUsXG5cdFx0XHRcdGNoaWxkVk5vZGUucHJvcHMsXG5cdFx0XHRcdGNoaWxkVk5vZGUua2V5LFxuXHRcdFx0XHRjaGlsZFZOb2RlLnJlZiA/IGNoaWxkVk5vZGUucmVmIDogbnVsbCxcblx0XHRcdFx0Y2hpbGRWTm9kZS5fb3JpZ2luYWxcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBjaGlsZFZOb2RlO1xuXHRcdH1cblxuXHRcdGNvbnN0IHNrZXdlZEluZGV4ID0gaSArIHNrZXc7XG5cblx0XHQvLyBIYW5kbGUgdW5tb3VudGluZyBudWxsIHBsYWNlaG9sZGVycywgaS5lLiBWTm9kZSA9XHUwMDNlIG51bGwgaW4gdW5rZXllZCBjaGlsZHJlblxuXHRcdGlmIChjaGlsZFZOb2RlID09IG51bGwpIHtcblx0XHRcdG9sZFZOb2RlID0gb2xkQ2hpbGRyZW5bc2tld2VkSW5kZXhdO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRvbGRWTm9kZSBcdTAwMjZcdTAwMjZcblx0XHRcdFx0b2xkVk5vZGUua2V5ID09IG51bGwgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdG9sZFZOb2RlLl9kb20gXHUwMDI2XHUwMDI2XG5cdFx0XHRcdChvbGRWTm9kZS5fZmxhZ3MgXHUwMDI2IE1BVENIRUQpID09PSAwXG5cdFx0XHQpIHtcblx0XHRcdFx0aWYgKG9sZFZOb2RlLl9kb20gPT0gbmV3UGFyZW50Vk5vZGUuX25leHREb20pIHtcblx0XHRcdFx0XHRuZXdQYXJlbnRWTm9kZS5fbmV4dERvbSA9IGdldERvbVNpYmxpbmcob2xkVk5vZGUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dW5tb3VudChvbGRWTm9kZSwgb2xkVk5vZGUsIGZhbHNlKTtcblxuXHRcdFx0XHQvLyBFeHBsaWNpdGx5IG51bGxpZnkgdGhpcyBwb3NpdGlvbiBpbiBvbGRDaGlsZHJlbiBpbnN0ZWFkIG9mIGp1c3Rcblx0XHRcdFx0Ly8gc2V0dGluZyBgX21hdGNoPXRydWVgIHRvIHByZXZlbnQgb3RoZXIgcm91dGluZXMgKGUuZy5cblx0XHRcdFx0Ly8gYGZpbmRNYXRjaGluZ0luZGV4YCBvciBgZ2V0RG9tU2libGluZ2ApIGZyb20gdGhpbmtpbmcgVk5vZGVzIG9yIERPTVxuXHRcdFx0XHQvLyBub2RlcyBpbiB0aGlzIHBvc2l0aW9uIGFyZSBzdGlsbCBhdmFpbGFibGUgdG8gYmUgdXNlZCBpbiBkaWZmaW5nIHdoZW5cblx0XHRcdFx0Ly8gdGhleSBoYXZlIGFjdHVhbGx5IGFscmVhZHkgYmVlbiB1bm1vdW50ZWQuIEZvciBleGFtcGxlLCBieSBvbmx5XG5cdFx0XHRcdC8vIHNldHRpbmcgYF9tYXRjaD10cnVlYCBoZXJlLCB0aGUgdW5tb3VudGluZyBsb29wIGxhdGVyIHdvdWxkIGF0dGVtcHRcblx0XHRcdFx0Ly8gdG8gdW5tb3VudCB0aGlzIFZOb2RlIGFnYWluIHNlZWluZyBgX21hdGNoPT10cnVlYC4gIEZ1cnRoZXIsXG5cdFx0XHRcdC8vIGdldERvbVNpYmxpbmcgZG9lc24ndCBrbm93IGFib3V0IF9tYXRjaCBhbmQgc28gd291bGQgaW5jb3JyZWN0bHlcblx0XHRcdFx0Ly8gYXNzdW1lIERPTSBub2RlcyBpbiB0aGlzIHN1YnRyZWUgYXJlIG1vdW50ZWQgYW5kIHVzYWJsZS5cblx0XHRcdFx0b2xkQ2hpbGRyZW5bc2tld2VkSW5kZXhdID0gbnVsbDtcblx0XHRcdFx0cmVtYWluaW5nT2xkQ2hpbGRyZW4tLTtcblx0XHRcdH1cblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGNoaWxkVk5vZGUuX3BhcmVudCA9IG5ld1BhcmVudFZOb2RlO1xuXHRcdGNoaWxkVk5vZGUuX2RlcHRoID0gbmV3UGFyZW50Vk5vZGUuX2RlcHRoICsgMTtcblxuXHRcdGNvbnN0IG1hdGNoaW5nSW5kZXggPSBmaW5kTWF0Y2hpbmdJbmRleChcblx0XHRcdGNoaWxkVk5vZGUsXG5cdFx0XHRvbGRDaGlsZHJlbixcblx0XHRcdHNrZXdlZEluZGV4LFxuXHRcdFx0cmVtYWluaW5nT2xkQ2hpbGRyZW5cblx0XHQpO1xuXG5cdFx0Ly8gVGVtcG9yYXJpbHkgc3RvcmUgdGhlIG1hdGNoaW5nSW5kZXggb24gdGhlIF9pbmRleCBwcm9wZXJ0eSBzbyB3ZSBjYW4gcHVsbFxuXHRcdC8vIG91dCB0aGUgb2xkVk5vZGUgaW4gZGlmZkNoaWxkcmVuLiBXZSdsbCBvdmVycmlkZSB0aGlzIHRvIHRoZSBWTm9kZSdzXG5cdFx0Ly8gZmluYWwgaW5kZXggYWZ0ZXIgdXNpbmcgdGhpcyBwcm9wZXJ0eSB0byBnZXQgdGhlIG9sZFZOb2RlXG5cdFx0Y2hpbGRWTm9kZS5faW5kZXggPSBtYXRjaGluZ0luZGV4O1xuXG5cdFx0b2xkVk5vZGUgPSBudWxsO1xuXHRcdGlmIChtYXRjaGluZ0luZGV4ICE9PSAtMSkge1xuXHRcdFx0b2xkVk5vZGUgPSBvbGRDaGlsZHJlblttYXRjaGluZ0luZGV4XTtcblx0XHRcdHJlbWFpbmluZ09sZENoaWxkcmVuLS07XG5cdFx0XHRpZiAob2xkVk5vZGUpIHtcblx0XHRcdFx0b2xkVk5vZGUuX2ZsYWdzIHw9IE1BVENIRUQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gSGVyZSwgd2UgZGVmaW5lIGlzTW91bnRpbmcgZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGUgc2tldyBkaWZmaW5nXG5cdFx0Ly8gYWxnb3JpdGhtLiBOb2RlcyB0aGF0IGFyZSB1bnN1c3BlbmRpbmcgYXJlIGNvbnNpZGVyZWQgbW91bnRpbmcgYW5kIHdlIGRldGVjdFxuXHRcdC8vIHRoaXMgYnkgY2hlY2tpbmcgaWYgb2xkVk5vZGUuX29yaWdpbmFsID09PSBudWxsXG5cdFx0Y29uc3QgaXNNb3VudGluZyA9IG9sZFZOb2RlID09IG51bGwgfHwgb2xkVk5vZGUuX29yaWdpbmFsID09PSBudWxsO1xuXG5cdFx0aWYgKGlzTW91bnRpbmcpIHtcblx0XHRcdGlmIChtYXRjaGluZ0luZGV4ID09IC0xKSB7XG5cdFx0XHRcdHNrZXctLTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgd2UgYXJlIG1vdW50aW5nIGEgRE9NIFZOb2RlLCBtYXJrIGl0IGZvciBpbnNlcnRpb25cblx0XHRcdGlmICh0eXBlb2YgY2hpbGRWTm9kZS50eXBlICE9ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0Y2hpbGRWTm9kZS5fZmxhZ3MgfD0gSU5TRVJUX1ZOT0RFO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAobWF0Y2hpbmdJbmRleCAhPT0gc2tld2VkSW5kZXgpIHtcblx0XHRcdGlmIChtYXRjaGluZ0luZGV4ID09IHNrZXdlZEluZGV4IC0gMSkge1xuXHRcdFx0XHRza2V3ID0gbWF0Y2hpbmdJbmRleCAtIHNrZXdlZEluZGV4O1xuXHRcdFx0fSBlbHNlIGlmIChtYXRjaGluZ0luZGV4ID09IHNrZXdlZEluZGV4ICsgMSkge1xuXHRcdFx0XHRza2V3Kys7XG5cdFx0XHR9IGVsc2UgaWYgKG1hdGNoaW5nSW5kZXggXHUwMDNlIHNrZXdlZEluZGV4KSB7XG5cdFx0XHRcdC8vIE91ciBtYXRjaGVkIERPTS1ub2RlIGlzIGZ1cnRoZXIgaW4gdGhlIGxpc3Qgb2YgY2hpbGRyZW4gdGhhblxuXHRcdFx0XHQvLyB3aGVyZSBpdCdzIGF0IG5vdy5cblxuXHRcdFx0XHQvLyBXaGVuIHRoZSByZW1haW5pbmcgb2xkIGNoaWxkcmVuIGlzIGJpZ2dlciB0aGFuIHRoZSBuZXctY2hpbGRyZW5cblx0XHRcdFx0Ly8gbWludXMgb3VyIHNrZXdlZCBpbmRleCB3ZSBrbm93IHdlIGFyZSBkZWFsaW5nIHdpdGggYSBzaHJpbmtpbmcgbGlzdFxuXHRcdFx0XHQvLyB3ZSBoYXZlIHRvIGluY3JlYXNlIG91ciBza2V3IHdpdGggdGhlIG1hdGNoZWRJbmRleCAtIHRoZSBza2V3ZWQgaW5kZXhcblx0XHRcdFx0aWYgKHJlbWFpbmluZ09sZENoaWxkcmVuIFx1MDAzZSBuZXdDaGlsZHJlbkxlbmd0aCAtIHNrZXdlZEluZGV4KSB7XG5cdFx0XHRcdFx0c2tldyArPSBtYXRjaGluZ0luZGV4IC0gc2tld2VkSW5kZXg7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBtYXRjaGVkIGFsbCB0aGUgY2hpbGRyZW4ganVzdCBkZWNyZWFzZSB0aGUgc2tld1xuXHRcdFx0XHRcdHNrZXctLTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChtYXRjaGluZ0luZGV4IFx1MDAzYyBza2V3ZWRJbmRleCkge1xuXHRcdFx0XHQvLyBXaGVuIG91ciBuZXcgcG9zaXRpb24gaXMgaW4gZnJvbnQgb2Ygb3VyIG9sZCBwb3NpdGlvbiB0aGFuIHdlIGluY3JlYXNlIHRoZSBza2V3XG5cdFx0XHRcdHNrZXcrKztcblx0XHRcdH1cblxuXHRcdFx0Ly8gTW92ZSB0aGlzIFZOb2RlJ3MgRE9NIGlmIHRoZSBvcmlnaW5hbCBpbmRleCAobWF0Y2hpbmdJbmRleCkgZG9lc24ndFxuXHRcdFx0Ly8gbWF0Y2ggdGhlIG5ldyBza2V3IGluZGV4IChpICsgbmV3IHNrZXcpXG5cdFx0XHRpZiAobWF0Y2hpbmdJbmRleCAhPT0gaSArIHNrZXcpIHtcblx0XHRcdFx0Y2hpbGRWTm9kZS5fZmxhZ3MgfD0gSU5TRVJUX1ZOT0RFO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFJlbW92ZSByZW1haW5pbmcgb2xkQ2hpbGRyZW4gaWYgdGhlcmUgYXJlIGFueS4gTG9vcCBmb3J3YXJkcyBzbyB0aGF0IGFzIHdlXG5cdC8vIHVubW91bnQgRE9NIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgb2xkQ2hpbGRyZW4sIHdlIGNhbiBhZGp1c3Qgb2xkRG9tIHRvXG5cdC8vIHBvaW50IHRvIHRoZSBuZXh0IGNoaWxkLCB3aGljaCBuZWVkcyB0byBiZSB0aGUgZmlyc3QgRE9NIG5vZGUgdGhhdCB3b24ndCBiZVxuXHQvLyB1bm1vdW50ZWQuXG5cdGlmIChyZW1haW5pbmdPbGRDaGlsZHJlbikge1xuXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG9sZENoaWxkcmVuTGVuZ3RoOyBpKyspIHtcblx0XHRcdG9sZFZOb2RlID0gb2xkQ2hpbGRyZW5baV07XG5cdFx0XHRpZiAob2xkVk5vZGUgIT0gbnVsbCBcdTAwMjZcdTAwMjYgKG9sZFZOb2RlLl9mbGFncyBcdTAwMjYgTUFUQ0hFRCkgPT09IDApIHtcblx0XHRcdFx0aWYgKG9sZFZOb2RlLl9kb20gPT0gbmV3UGFyZW50Vk5vZGUuX25leHREb20pIHtcblx0XHRcdFx0XHRuZXdQYXJlbnRWTm9kZS5fbmV4dERvbSA9IGdldERvbVNpYmxpbmcob2xkVk5vZGUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dW5tb3VudChvbGRWTm9kZSwgb2xkVk5vZGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7Vk5vZGV9IHBhcmVudFZOb2RlXG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IG9sZERvbVxuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50fSBwYXJlbnREb21cbiAqIEByZXR1cm5zIHtQcmVhY3RFbGVtZW50fVxuICovXG5mdW5jdGlvbiBpbnNlcnQocGFyZW50Vk5vZGUsIG9sZERvbSwgcGFyZW50RG9tKSB7XG5cdC8vIE5vdGU6IFZOb2RlcyBpbiBuZXN0ZWQgc3VzcGVuZGVkIHRyZWVzIG1heSBiZSBtaXNzaW5nIF9jaGlsZHJlbi5cblxuXHRpZiAodHlwZW9mIHBhcmVudFZOb2RlLnR5cGUgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdGxldCBjaGlsZHJlbiA9IHBhcmVudFZOb2RlLl9jaGlsZHJlbjtcblx0XHRmb3IgKGxldCBpID0gMDsgY2hpbGRyZW4gXHUwMDI2XHUwMDI2IGkgXHUwMDNjIGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAoY2hpbGRyZW5baV0pIHtcblx0XHRcdFx0Ly8gSWYgd2UgZW50ZXIgdGhpcyBjb2RlIHBhdGggb24gc0NVIGJhaWxvdXQsIHdoZXJlIHdlIGNvcHlcblx0XHRcdFx0Ly8gb2xkVk5vZGUuX2NoaWxkcmVuIHRvIG5ld1ZOb2RlLl9jaGlsZHJlbiwgd2UgbmVlZCB0byB1cGRhdGUgdGhlIG9sZFxuXHRcdFx0XHQvLyBjaGlsZHJlbidzIF9wYXJlbnQgcG9pbnRlciB0byBwb2ludCB0byB0aGUgbmV3Vk5vZGUgKHBhcmVudFZOb2RlXG5cdFx0XHRcdC8vIGhlcmUpLlxuXHRcdFx0XHRjaGlsZHJlbltpXS5fcGFyZW50ID0gcGFyZW50Vk5vZGU7XG5cdFx0XHRcdG9sZERvbSA9IGluc2VydChjaGlsZHJlbltpXSwgb2xkRG9tLCBwYXJlbnREb20pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBvbGREb207XG5cdH0gZWxzZSBpZiAocGFyZW50Vk5vZGUuX2RvbSAhPSBvbGREb20pIHtcblx0XHRpZiAoXG5cdFx0XHRvbGREb20gXHUwMDI2XHUwMDI2XG5cdFx0XHRwYXJlbnRWTm9kZS50eXBlIFx1MDAyNlx1MDAyNlxuXHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciBvbERvbSBzaG91bGQgYmUgcHJlc2VudCBvbiBhIERPTSBub2RlXG5cdFx0XHQhcGFyZW50RG9tLmNvbnRhaW5zKG9sZERvbSlcblx0XHQpIHtcblx0XHRcdG9sZERvbSA9IGdldERvbVNpYmxpbmcocGFyZW50Vk5vZGUpO1xuXHRcdH1cblx0XHRwYXJlbnREb20uaW5zZXJ0QmVmb3JlKHBhcmVudFZOb2RlLl9kb20sIG9sZERvbSB8fCBudWxsKTtcblx0XHRvbGREb20gPSBwYXJlbnRWTm9kZS5fZG9tO1xuXHR9XG5cblx0ZG8ge1xuXHRcdG9sZERvbSA9IG9sZERvbSBcdTAwMjZcdTAwMjYgb2xkRG9tLm5leHRTaWJsaW5nO1xuXHR9IHdoaWxlIChvbGREb20gIT0gbnVsbCBcdTAwMjZcdTAwMjYgb2xkRG9tLm5vZGVUeXBlID09PSA4KTtcblxuXHRyZXR1cm4gb2xkRG9tO1xufVxuXG4vKipcbiAqIEZsYXR0ZW4gYW5kIGxvb3AgdGhyb3VnaCB0aGUgY2hpbGRyZW4gb2YgYSB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7Q29tcG9uZW50Q2hpbGRyZW59IGNoaWxkcmVuIFRoZSB1bmZsYXR0ZW5lZCBjaGlsZHJlbiBvZiBhIHZpcnR1YWxcbiAqIG5vZGVcbiAqIEByZXR1cm5zIHtWTm9kZVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DaGlsZEFycmF5KGNoaWxkcmVuLCBvdXQpIHtcblx0b3V0ID0gb3V0IHx8IFtdO1xuXHRpZiAoY2hpbGRyZW4gPT0gbnVsbCB8fCB0eXBlb2YgY2hpbGRyZW4gPT0gJ2Jvb2xlYW4nKSB7XG5cdH0gZWxzZSBpZiAoaXNBcnJheShjaGlsZHJlbikpIHtcblx0XHRjaGlsZHJlbi5zb21lKGNoaWxkID1cdTAwM2Uge1xuXHRcdFx0dG9DaGlsZEFycmF5KGNoaWxkLCBvdXQpO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdG91dC5wdXNoKGNoaWxkcmVuKTtcblx0fVxuXHRyZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Vk5vZGV9IGNoaWxkVk5vZGVcbiAqIEBwYXJhbSB7Vk5vZGVbXX0gb2xkQ2hpbGRyZW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBza2V3ZWRJbmRleFxuICogQHBhcmFtIHtudW1iZXJ9IHJlbWFpbmluZ09sZENoaWxkcmVuXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBmaW5kTWF0Y2hpbmdJbmRleChcblx0Y2hpbGRWTm9kZSxcblx0b2xkQ2hpbGRyZW4sXG5cdHNrZXdlZEluZGV4LFxuXHRyZW1haW5pbmdPbGRDaGlsZHJlblxuKSB7XG5cdGNvbnN0IGtleSA9IGNoaWxkVk5vZGUua2V5O1xuXHRjb25zdCB0eXBlID0gY2hpbGRWTm9kZS50eXBlO1xuXHRsZXQgeCA9IHNrZXdlZEluZGV4IC0gMTtcblx0bGV0IHkgPSBza2V3ZWRJbmRleCArIDE7XG5cdGxldCBvbGRWTm9kZSA9IG9sZENoaWxkcmVuW3NrZXdlZEluZGV4XTtcblxuXHQvLyBXZSBvbmx5IG5lZWQgdG8gcGVyZm9ybSBhIHNlYXJjaCBpZiB0aGVyZSBhcmUgbW9yZSBjaGlsZHJlblxuXHQvLyAocmVtYWluaW5nT2xkQ2hpbGRyZW4pIHRvIHNlYXJjaC4gSG93ZXZlciwgaWYgdGhlIG9sZFZOb2RlIHdlIGp1c3QgbG9va2VkXG5cdC8vIGF0IHNrZXdlZEluZGV4IHdhcyBub3QgYWxyZWFkeSB1c2VkIGluIHRoaXMgZGlmZiwgdGhlbiB0aGVyZSBtdXN0IGJlIGF0XG5cdC8vIGxlYXN0IDEgb3RoZXIgKHNvIGdyZWF0ZXIgdGhhbiAxKSByZW1haW5pbmdPbGRDaGlsZHJlbiB0byBhdHRlbXB0IHRvIG1hdGNoXG5cdC8vIGFnYWluc3QuIFNvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uIGNoZWNrcyB0aGF0IGVuc3VyaW5nXG5cdC8vIHJlbWFpbmluZ09sZENoaWxkcmVuIFx1MDAzZSAxIGlmIHRoZSBvbGRWTm9kZSBpcyBub3QgYWxyZWFkeSB1c2VkL21hdGNoZWQuIEVsc2Vcblx0Ly8gaWYgdGhlIG9sZFZOb2RlIHdhcyBudWxsIG9yIG1hdGNoZWQsIHRoZW4gdGhlcmUgY291bGQgbmVlZHMgdG8gYmUgYXQgbGVhc3Rcblx0Ly8gMSAoYWthIGByZW1haW5pbmdPbGRDaGlsZHJlbiBcdTAwM2UgMGApIGNoaWxkcmVuIHRvIGZpbmQgYW5kIGNvbXBhcmUgYWdhaW5zdC5cblx0bGV0IHNob3VsZFNlYXJjaCA9XG5cdFx0cmVtYWluaW5nT2xkQ2hpbGRyZW4gXHUwMDNlXG5cdFx0KG9sZFZOb2RlICE9IG51bGwgXHUwMDI2XHUwMDI2IChvbGRWTm9kZS5fZmxhZ3MgXHUwMDI2IE1BVENIRUQpID09PSAwID8gMSA6IDApO1xuXG5cdGlmIChcblx0XHRvbGRWTm9kZSA9PT0gbnVsbCB8fFxuXHRcdChvbGRWTm9kZSBcdTAwMjZcdTAwMjZcblx0XHRcdGtleSA9PSBvbGRWTm9kZS5rZXkgXHUwMDI2XHUwMDI2XG5cdFx0XHR0eXBlID09PSBvbGRWTm9kZS50eXBlIFx1MDAyNlx1MDAyNlxuXHRcdFx0KG9sZFZOb2RlLl9mbGFncyBcdTAwMjYgTUFUQ0hFRCkgPT09IDApXG5cdCkge1xuXHRcdHJldHVybiBza2V3ZWRJbmRleDtcblx0fSBlbHNlIGlmIChzaG91bGRTZWFyY2gpIHtcblx0XHR3aGlsZSAoeCBcdTAwM2U9IDAgfHwgeSBcdTAwM2Mgb2xkQ2hpbGRyZW4ubGVuZ3RoKSB7XG5cdFx0XHRpZiAoeCBcdTAwM2U9IDApIHtcblx0XHRcdFx0b2xkVk5vZGUgPSBvbGRDaGlsZHJlblt4XTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdG9sZFZOb2RlIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHRcdChvbGRWTm9kZS5fZmxhZ3MgXHUwMDI2IE1BVENIRUQpID09PSAwIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHRcdGtleSA9PSBvbGRWTm9kZS5rZXkgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdFx0dHlwZSA9PT0gb2xkVk5vZGUudHlwZVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4geDtcblx0XHRcdFx0fVxuXHRcdFx0XHR4LS07XG5cdFx0XHR9XG5cblx0XHRcdGlmICh5IFx1MDAzYyBvbGRDaGlsZHJlbi5sZW5ndGgpIHtcblx0XHRcdFx0b2xkVk5vZGUgPSBvbGRDaGlsZHJlblt5XTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdG9sZFZOb2RlIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHRcdChvbGRWTm9kZS5fZmxhZ3MgXHUwMDI2IE1BVENIRUQpID09PSAwIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHRcdGtleSA9PSBvbGRWTm9kZS5rZXkgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdFx0dHlwZSA9PT0gb2xkVk5vZGUudHlwZVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4geTtcblx0XHRcdFx0fVxuXHRcdFx0XHR5Kys7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIC0xO1xufVxuIiwgImltcG9ydCB7XG5cdEVNUFRZX09CSixcblx0TU9ERV9IWURSQVRFLFxuXHRNT0RFX1NVU1BFTkRFRCxcblx0UkVTRVRfTU9ERVxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgZ2V0RG9tU2libGluZyB9IGZyb20gJy4uL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gJy4uL2NyZWF0ZS1lbGVtZW50JztcbmltcG9ydCB7IGRpZmZDaGlsZHJlbiB9IGZyb20gJy4vY2hpbGRyZW4nO1xuaW1wb3J0IHsgc2V0UHJvcGVydHkgfSBmcm9tICcuL3Byb3BzJztcbmltcG9ydCB7IGFzc2lnbiwgaXNBcnJheSwgcmVtb3ZlTm9kZSwgc2xpY2UgfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCBvcHRpb25zIGZyb20gJy4uL29wdGlvbnMnO1xuXG4vKipcbiAqIERpZmYgdHdvIHZpcnR1YWwgbm9kZXMgYW5kIGFwcGx5IHByb3BlciBjaGFuZ2VzIHRvIHRoZSBET01cbiAqIEBwYXJhbSB7UHJlYWN0RWxlbWVudH0gcGFyZW50RG9tIFRoZSBwYXJlbnQgb2YgdGhlIERPTSBlbGVtZW50XG4gKiBAcGFyYW0ge1ZOb2RlfSBuZXdWTm9kZSBUaGUgbmV3IHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtWTm9kZX0gb2xkVk5vZGUgVGhlIG9sZCB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBnbG9iYWxDb250ZXh0IFRoZSBjdXJyZW50IGNvbnRleHQgb2JqZWN0LiBNb2RpZmllZCBieVxuICogZ2V0Q2hpbGRDb250ZXh0XG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZXNwYWNlIEN1cnJlbnQgbmFtZXNwYWNlIG9mIHRoZSBET00gbm9kZSAoSFRNTCwgU1ZHLCBvciBNYXRoTUwpXG4gKiBAcGFyYW0ge0FycmF5XHUwMDNjUHJlYWN0RWxlbWVudFx1MDAzZX0gZXhjZXNzRG9tQ2hpbGRyZW5cbiAqIEBwYXJhbSB7QXJyYXlcdTAwM2NDb21wb25lbnRcdTAwM2V9IGNvbW1pdFF1ZXVlIExpc3Qgb2YgY29tcG9uZW50cyB3aGljaCBoYXZlIGNhbGxiYWNrc1xuICogdG8gaW52b2tlIGluIGNvbW1pdFJvb3RcbiAqIEBwYXJhbSB7UHJlYWN0RWxlbWVudH0gb2xkRG9tIFRoZSBjdXJyZW50IGF0dGFjaGVkIERPTSBlbGVtZW50IGFueSBuZXcgZG9tXG4gKiBlbGVtZW50cyBzaG91bGQgYmUgcGxhY2VkIGFyb3VuZC4gTGlrZWx5IGBudWxsYCBvbiBmaXJzdCByZW5kZXIgKGV4Y2VwdCB3aGVuXG4gKiBoeWRyYXRpbmcpLiBDYW4gYmUgYSBzaWJsaW5nIERPTSBlbGVtZW50IHdoZW4gZGlmZmluZyBGcmFnbWVudHMgdGhhdCBoYXZlXG4gKiBzaWJsaW5ncy4gSW4gbW9zdCBjYXNlcywgaXQgc3RhcnRzIG91dCBhcyBgb2xkQ2hpbGRyZW5bMF0uX2RvbWAuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzSHlkcmF0aW5nIFdoZXRoZXIgb3Igbm90IHdlIGFyZSBpbiBoeWRyYXRpb25cbiAqIEBwYXJhbSB7YW55W119IHJlZlF1ZXVlIGFuIGFycmF5IG9mIGVsZW1lbnRzIG5lZWRlZCB0byBpbnZva2UgcmVmc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZihcblx0cGFyZW50RG9tLFxuXHRuZXdWTm9kZSxcblx0b2xkVk5vZGUsXG5cdGdsb2JhbENvbnRleHQsXG5cdG5hbWVzcGFjZSxcblx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdGNvbW1pdFF1ZXVlLFxuXHRvbGREb20sXG5cdGlzSHlkcmF0aW5nLFxuXHRyZWZRdWV1ZVxuKSB7XG5cdC8qKiBAdHlwZSB7YW55fSAqL1xuXHRsZXQgdG1wLFxuXHRcdG5ld1R5cGUgPSBuZXdWTm9kZS50eXBlO1xuXG5cdC8vIFdoZW4gcGFzc2luZyB0aHJvdWdoIGNyZWF0ZUVsZW1lbnQgaXQgYXNzaWducyB0aGUgb2JqZWN0XG5cdC8vIGNvbnN0cnVjdG9yIGFzIHVuZGVmaW5lZC4gVGhpcyB0byBwcmV2ZW50IEpTT04taW5qZWN0aW9uLlxuXHRpZiAobmV3Vk5vZGUuY29uc3RydWN0b3IgIT09IHVuZGVmaW5lZCkgcmV0dXJuIG51bGw7XG5cblx0Ly8gSWYgdGhlIHByZXZpb3VzIGRpZmYgYmFpbGVkIG91dCwgcmVzdW1lIGNyZWF0aW5nL2h5ZHJhdGluZy5cblx0aWYgKG9sZFZOb2RlLl9mbGFncyBcdTAwMjYgTU9ERV9TVVNQRU5ERUQpIHtcblx0XHRpc0h5ZHJhdGluZyA9ICEhKG9sZFZOb2RlLl9mbGFncyBcdTAwMjYgTU9ERV9IWURSQVRFKTtcblx0XHRvbGREb20gPSBuZXdWTm9kZS5fZG9tID0gb2xkVk5vZGUuX2RvbTtcblx0XHRleGNlc3NEb21DaGlsZHJlbiA9IFtvbGREb21dO1xuXHR9XG5cblx0aWYgKCh0bXAgPSBvcHRpb25zLl9kaWZmKSkgdG1wKG5ld1ZOb2RlKTtcblxuXHRvdXRlcjogaWYgKHR5cGVvZiBuZXdUeXBlID09ICdmdW5jdGlvbicpIHtcblx0XHR0cnkge1xuXHRcdFx0bGV0IGMsIGlzTmV3LCBvbGRQcm9wcywgb2xkU3RhdGUsIHNuYXBzaG90LCBjbGVhclByb2Nlc3NpbmdFeGNlcHRpb247XG5cdFx0XHRsZXQgbmV3UHJvcHMgPSBuZXdWTm9kZS5wcm9wcztcblx0XHRcdGNvbnN0IGlzQ2xhc3NDb21wb25lbnQgPVxuXHRcdFx0XHQncHJvdG90eXBlJyBpbiBuZXdUeXBlIFx1MDAyNlx1MDAyNiBuZXdUeXBlLnByb3RvdHlwZS5yZW5kZXI7XG5cblx0XHRcdC8vIE5lY2Vzc2FyeSBmb3IgY3JlYXRlQ29udGV4dCBhcGkuIFNldHRpbmcgdGhpcyBwcm9wZXJ0eSB3aWxsIHBhc3Ncblx0XHRcdC8vIHRoZSBjb250ZXh0IHZhbHVlIGFzIGB0aGlzLmNvbnRleHRgIGp1c3QgZm9yIHRoaXMgY29tcG9uZW50LlxuXHRcdFx0dG1wID0gbmV3VHlwZS5jb250ZXh0VHlwZTtcblx0XHRcdGxldCBwcm92aWRlciA9IHRtcCBcdTAwMjZcdTAwMjYgZ2xvYmFsQ29udGV4dFt0bXAuX2lkXTtcblx0XHRcdGxldCBjb21wb25lbnRDb250ZXh0ID0gdG1wXG5cdFx0XHRcdD8gcHJvdmlkZXJcblx0XHRcdFx0XHQ/IHByb3ZpZGVyLnByb3BzLnZhbHVlXG5cdFx0XHRcdFx0OiB0bXAuX2RlZmF1bHRWYWx1ZVxuXHRcdFx0XHQ6IGdsb2JhbENvbnRleHQ7XG5cblx0XHRcdC8vIEdldCBjb21wb25lbnQgYW5kIHNldCBpdCB0byBgY2Bcblx0XHRcdGlmIChvbGRWTm9kZS5fY29tcG9uZW50KSB7XG5cdFx0XHRcdGMgPSBuZXdWTm9kZS5fY29tcG9uZW50ID0gb2xkVk5vZGUuX2NvbXBvbmVudDtcblx0XHRcdFx0Y2xlYXJQcm9jZXNzaW5nRXhjZXB0aW9uID0gYy5fcHJvY2Vzc2luZ0V4Y2VwdGlvbiA9IGMuX3BlbmRpbmdFcnJvcjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEluc3RhbnRpYXRlIHRoZSBuZXcgY29tcG9uZW50XG5cdFx0XHRcdGlmIChpc0NsYXNzQ29tcG9uZW50KSB7XG5cdFx0XHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciBUaGUgY2hlY2sgYWJvdmUgdmVyaWZpZXMgdGhhdCBuZXdUeXBlIGlzIHN1cHBvc2UgdG8gYmUgY29uc3RydWN0ZWRcblx0XHRcdFx0XHRuZXdWTm9kZS5fY29tcG9uZW50ID0gYyA9IG5ldyBuZXdUeXBlKG5ld1Byb3BzLCBjb21wb25lbnRDb250ZXh0KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciBUcnVzdCBtZSwgQ29tcG9uZW50IGltcGxlbWVudHMgdGhlIGludGVyZmFjZSB3ZSB3YW50XG5cdFx0XHRcdFx0bmV3Vk5vZGUuX2NvbXBvbmVudCA9IGMgPSBuZXcgQmFzZUNvbXBvbmVudChcblx0XHRcdFx0XHRcdG5ld1Byb3BzLFxuXHRcdFx0XHRcdFx0Y29tcG9uZW50Q29udGV4dFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0Yy5jb25zdHJ1Y3RvciA9IG5ld1R5cGU7XG5cdFx0XHRcdFx0Yy5yZW5kZXIgPSBkb1JlbmRlcjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocHJvdmlkZXIpIHByb3ZpZGVyLnN1YihjKTtcblxuXHRcdFx0XHRjLnByb3BzID0gbmV3UHJvcHM7XG5cdFx0XHRcdGlmICghYy5zdGF0ZSkgYy5zdGF0ZSA9IHt9O1xuXHRcdFx0XHRjLmNvbnRleHQgPSBjb21wb25lbnRDb250ZXh0O1xuXHRcdFx0XHRjLl9nbG9iYWxDb250ZXh0ID0gZ2xvYmFsQ29udGV4dDtcblx0XHRcdFx0aXNOZXcgPSBjLl9kaXJ0eSA9IHRydWU7XG5cdFx0XHRcdGMuX3JlbmRlckNhbGxiYWNrcyA9IFtdO1xuXHRcdFx0XHRjLl9zdGF0ZUNhbGxiYWNrcyA9IFtdO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJbnZva2UgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXG5cdFx0XHRpZiAoaXNDbGFzc0NvbXBvbmVudCBcdTAwMjZcdTAwMjYgYy5fbmV4dFN0YXRlID09IG51bGwpIHtcblx0XHRcdFx0Yy5fbmV4dFN0YXRlID0gYy5zdGF0ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGlzQ2xhc3NDb21wb25lbnQgXHUwMDI2XHUwMDI2IG5ld1R5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzICE9IG51bGwpIHtcblx0XHRcdFx0aWYgKGMuX25leHRTdGF0ZSA9PSBjLnN0YXRlKSB7XG5cdFx0XHRcdFx0Yy5fbmV4dFN0YXRlID0gYXNzaWduKHt9LCBjLl9uZXh0U3RhdGUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0YXNzaWduKFxuXHRcdFx0XHRcdGMuX25leHRTdGF0ZSxcblx0XHRcdFx0XHRuZXdUeXBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhuZXdQcm9wcywgYy5fbmV4dFN0YXRlKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHRvbGRQcm9wcyA9IGMucHJvcHM7XG5cdFx0XHRvbGRTdGF0ZSA9IGMuc3RhdGU7XG5cdFx0XHRjLl92bm9kZSA9IG5ld1ZOb2RlO1xuXG5cdFx0XHQvLyBJbnZva2UgcHJlLXJlbmRlciBsaWZlY3ljbGUgbWV0aG9kc1xuXHRcdFx0aWYgKGlzTmV3KSB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRpc0NsYXNzQ29tcG9uZW50IFx1MDAyNlx1MDAyNlxuXHRcdFx0XHRcdG5ld1R5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID09IG51bGwgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdFx0Yy5jb21wb25lbnRXaWxsTW91bnQgIT0gbnVsbFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxNb3VudCgpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGlzQ2xhc3NDb21wb25lbnQgXHUwMDI2XHUwMDI2IGMuY29tcG9uZW50RGlkTW91bnQgIT0gbnVsbCkge1xuXHRcdFx0XHRcdGMuX3JlbmRlckNhbGxiYWNrcy5wdXNoKGMuY29tcG9uZW50RGlkTW91bnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0aXNDbGFzc0NvbXBvbmVudCBcdTAwMjZcdTAwMjZcblx0XHRcdFx0XHRuZXdUeXBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyA9PSBudWxsIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHRcdG5ld1Byb3BzICE9PSBvbGRQcm9wcyBcdTAwMjZcdTAwMjZcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgIT0gbnVsbFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV3UHJvcHMsIGNvbXBvbmVudENvbnRleHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdCFjLl9mb3JjZSBcdTAwMjZcdTAwMjZcblx0XHRcdFx0XHQoKGMuc2hvdWxkQ29tcG9uZW50VXBkYXRlICE9IG51bGwgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdFx0XHRjLnNob3VsZENvbXBvbmVudFVwZGF0ZShcblx0XHRcdFx0XHRcdFx0bmV3UHJvcHMsXG5cdFx0XHRcdFx0XHRcdGMuX25leHRTdGF0ZSxcblx0XHRcdFx0XHRcdFx0Y29tcG9uZW50Q29udGV4dFxuXHRcdFx0XHRcdFx0KSA9PT0gZmFsc2UpIHx8XG5cdFx0XHRcdFx0XHRuZXdWTm9kZS5fb3JpZ2luYWwgPT09IG9sZFZOb2RlLl9vcmlnaW5hbClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Ly8gTW9yZSBpbmZvIGFib3V0IHRoaXMgaGVyZTogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vSm92aURlQ3Jvb2NrL2JlYzVmMmNlOTM1NDRkMmU2MDcwZWY4ZTAwMzZlNGU4XG5cdFx0XHRcdFx0aWYgKG5ld1ZOb2RlLl9vcmlnaW5hbCAhPT0gb2xkVk5vZGUuX29yaWdpbmFsKSB7XG5cdFx0XHRcdFx0XHQvLyBXaGVuIHdlIGFyZSBkZWFsaW5nIHdpdGggYSBiYWlsIGJlY2F1c2Ugb2Ygc0NVIHdlIGhhdmUgdG8gdXBkYXRlXG5cdFx0XHRcdFx0XHQvLyB0aGUgcHJvcHMsIHN0YXRlIGFuZCBkaXJ0eS1zdGF0ZS5cblx0XHRcdFx0XHRcdC8vIHdoZW4gd2UgYXJlIGRlYWxpbmcgd2l0aCBzdHJpY3QtZXF1YWxpdHkgd2UgZG9uJ3QgYXMgdGhlIGNoaWxkIGNvdWxkIHN0aWxsXG5cdFx0XHRcdFx0XHQvLyBiZSBkaXJ0aWVkIHNlZSAjMzg4M1xuXHRcdFx0XHRcdFx0Yy5wcm9wcyA9IG5ld1Byb3BzO1xuXHRcdFx0XHRcdFx0Yy5zdGF0ZSA9IGMuX25leHRTdGF0ZTtcblx0XHRcdFx0XHRcdGMuX2RpcnR5ID0gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0bmV3Vk5vZGUuX2RvbSA9IG9sZFZOb2RlLl9kb207XG5cdFx0XHRcdFx0bmV3Vk5vZGUuX2NoaWxkcmVuID0gb2xkVk5vZGUuX2NoaWxkcmVuO1xuXHRcdFx0XHRcdG5ld1ZOb2RlLl9jaGlsZHJlbi5mb3JFYWNoKHZub2RlID1cdTAwM2Uge1xuXHRcdFx0XHRcdFx0aWYgKHZub2RlKSB2bm9kZS5fcGFyZW50ID0gbmV3Vk5vZGU7XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSBcdTAwM2MgYy5fc3RhdGVDYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdGMuX3JlbmRlckNhbGxiYWNrcy5wdXNoKGMuX3N0YXRlQ2FsbGJhY2tzW2ldKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Yy5fc3RhdGVDYWxsYmFja3MgPSBbXTtcblxuXHRcdFx0XHRcdGlmIChjLl9yZW5kZXJDYWxsYmFja3MubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRjb21taXRRdWV1ZS5wdXNoKGMpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGJyZWFrIG91dGVyO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGMuY29tcG9uZW50V2lsbFVwZGF0ZSAhPSBudWxsKSB7XG5cdFx0XHRcdFx0Yy5jb21wb25lbnRXaWxsVXBkYXRlKG5ld1Byb3BzLCBjLl9uZXh0U3RhdGUsIGNvbXBvbmVudENvbnRleHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGlzQ2xhc3NDb21wb25lbnQgXHUwMDI2XHUwMDI2IGMuY29tcG9uZW50RGlkVXBkYXRlICE9IG51bGwpIHtcblx0XHRcdFx0XHRjLl9yZW5kZXJDYWxsYmFja3MucHVzaCgoKSA9XHUwMDNlIHtcblx0XHRcdFx0XHRcdGMuY29tcG9uZW50RGlkVXBkYXRlKG9sZFByb3BzLCBvbGRTdGF0ZSwgc25hcHNob3QpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGMuY29udGV4dCA9IGNvbXBvbmVudENvbnRleHQ7XG5cdFx0XHRjLnByb3BzID0gbmV3UHJvcHM7XG5cdFx0XHRjLl9wYXJlbnREb20gPSBwYXJlbnREb207XG5cdFx0XHRjLl9mb3JjZSA9IGZhbHNlO1xuXG5cdFx0XHRsZXQgcmVuZGVySG9vayA9IG9wdGlvbnMuX3JlbmRlcixcblx0XHRcdFx0Y291bnQgPSAwO1xuXHRcdFx0aWYgKGlzQ2xhc3NDb21wb25lbnQpIHtcblx0XHRcdFx0Yy5zdGF0ZSA9IGMuX25leHRTdGF0ZTtcblx0XHRcdFx0Yy5fZGlydHkgPSBmYWxzZTtcblxuXHRcdFx0XHRpZiAocmVuZGVySG9vaykgcmVuZGVySG9vayhuZXdWTm9kZSk7XG5cblx0XHRcdFx0dG1wID0gYy5yZW5kZXIoYy5wcm9wcywgYy5zdGF0ZSwgYy5jb250ZXh0KTtcblxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSBcdTAwM2MgYy5fc3RhdGVDYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRjLl9yZW5kZXJDYWxsYmFja3MucHVzaChjLl9zdGF0ZUNhbGxiYWNrc1tpXSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Yy5fc3RhdGVDYWxsYmFja3MgPSBbXTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRvIHtcblx0XHRcdFx0XHRjLl9kaXJ0eSA9IGZhbHNlO1xuXHRcdFx0XHRcdGlmIChyZW5kZXJIb29rKSByZW5kZXJIb29rKG5ld1ZOb2RlKTtcblxuXHRcdFx0XHRcdHRtcCA9IGMucmVuZGVyKGMucHJvcHMsIGMuc3RhdGUsIGMuY29udGV4dCk7XG5cblx0XHRcdFx0XHQvLyBIYW5kbGUgc2V0U3RhdGUgY2FsbGVkIGluIHJlbmRlciwgc2VlICMyNTUzXG5cdFx0XHRcdFx0Yy5zdGF0ZSA9IGMuX25leHRTdGF0ZTtcblx0XHRcdFx0fSB3aGlsZSAoYy5fZGlydHkgXHUwMDI2XHUwMDI2ICsrY291bnQgXHUwMDNjIDI1KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSGFuZGxlIHNldFN0YXRlIGNhbGxlZCBpbiByZW5kZXIsIHNlZSAjMjU1M1xuXHRcdFx0Yy5zdGF0ZSA9IGMuX25leHRTdGF0ZTtcblxuXHRcdFx0aWYgKGMuZ2V0Q2hpbGRDb250ZXh0ICE9IG51bGwpIHtcblx0XHRcdFx0Z2xvYmFsQ29udGV4dCA9IGFzc2lnbihhc3NpZ24oe30sIGdsb2JhbENvbnRleHQpLCBjLmdldENoaWxkQ29udGV4dCgpKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGlzQ2xhc3NDb21wb25lbnQgXHUwMDI2XHUwMDI2ICFpc05ldyBcdTAwMjZcdTAwMjYgYy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSAhPSBudWxsKSB7XG5cdFx0XHRcdHNuYXBzaG90ID0gYy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShvbGRQcm9wcywgb2xkU3RhdGUpO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgaXNUb3BMZXZlbEZyYWdtZW50ID1cblx0XHRcdFx0dG1wICE9IG51bGwgXHUwMDI2XHUwMDI2IHRtcC50eXBlID09PSBGcmFnbWVudCBcdTAwMjZcdTAwMjYgdG1wLmtleSA9PSBudWxsO1xuXHRcdFx0bGV0IHJlbmRlclJlc3VsdCA9IGlzVG9wTGV2ZWxGcmFnbWVudCA/IHRtcC5wcm9wcy5jaGlsZHJlbiA6IHRtcDtcblxuXHRcdFx0ZGlmZkNoaWxkcmVuKFxuXHRcdFx0XHRwYXJlbnREb20sXG5cdFx0XHRcdGlzQXJyYXkocmVuZGVyUmVzdWx0KSA/IHJlbmRlclJlc3VsdCA6IFtyZW5kZXJSZXN1bHRdLFxuXHRcdFx0XHRuZXdWTm9kZSxcblx0XHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRcdGdsb2JhbENvbnRleHQsXG5cdFx0XHRcdG5hbWVzcGFjZSxcblx0XHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdFx0XHRcdGNvbW1pdFF1ZXVlLFxuXHRcdFx0XHRvbGREb20sXG5cdFx0XHRcdGlzSHlkcmF0aW5nLFxuXHRcdFx0XHRyZWZRdWV1ZVxuXHRcdFx0KTtcblxuXHRcdFx0Yy5iYXNlID0gbmV3Vk5vZGUuX2RvbTtcblxuXHRcdFx0Ly8gV2Ugc3VjY2Vzc2Z1bGx5IHJlbmRlcmVkIHRoaXMgVk5vZGUsIHVuc2V0IGFueSBzdG9yZWQgaHlkcmF0aW9uL2JhaWxvdXQgc3RhdGU6XG5cdFx0XHRuZXdWTm9kZS5fZmxhZ3MgXHUwMDI2PSBSRVNFVF9NT0RFO1xuXG5cdFx0XHRpZiAoYy5fcmVuZGVyQ2FsbGJhY2tzLmxlbmd0aCkge1xuXHRcdFx0XHRjb21taXRRdWV1ZS5wdXNoKGMpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoY2xlYXJQcm9jZXNzaW5nRXhjZXB0aW9uKSB7XG5cdFx0XHRcdGMuX3BlbmRpbmdFcnJvciA9IGMuX3Byb2Nlc3NpbmdFeGNlcHRpb24gPSBudWxsO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdG5ld1ZOb2RlLl9vcmlnaW5hbCA9IG51bGw7XG5cdFx0XHQvLyBpZiBoeWRyYXRpbmcgb3IgY3JlYXRpbmcgaW5pdGlhbCB0cmVlLCBiYWlsb3V0IHByZXNlcnZlcyBET006XG5cdFx0XHRpZiAoaXNIeWRyYXRpbmcgfHwgZXhjZXNzRG9tQ2hpbGRyZW4gIT0gbnVsbCkge1xuXHRcdFx0XHRuZXdWTm9kZS5fZmxhZ3MgfD0gaXNIeWRyYXRpbmdcblx0XHRcdFx0XHQ/IE1PREVfSFlEUkFURSB8IE1PREVfU1VTUEVOREVEXG5cdFx0XHRcdFx0OiBNT0RFX0hZRFJBVEU7XG5cblx0XHRcdFx0d2hpbGUgKG9sZERvbSBcdTAwMjZcdTAwMjYgb2xkRG9tLm5vZGVUeXBlID09PSA4IFx1MDAyNlx1MDAyNiBvbGREb20ubmV4dFNpYmxpbmcpIHtcblx0XHRcdFx0XHRvbGREb20gPSBvbGREb20ubmV4dFNpYmxpbmc7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW5bZXhjZXNzRG9tQ2hpbGRyZW4uaW5kZXhPZihvbGREb20pXSA9IG51bGw7XG5cdFx0XHRcdG5ld1ZOb2RlLl9kb20gPSBvbGREb207XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRuZXdWTm9kZS5fZG9tID0gb2xkVk5vZGUuX2RvbTtcblx0XHRcdFx0bmV3Vk5vZGUuX2NoaWxkcmVuID0gb2xkVk5vZGUuX2NoaWxkcmVuO1xuXHRcdFx0fVxuXHRcdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCBuZXdWTm9kZSwgb2xkVk5vZGUpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChcblx0XHRleGNlc3NEb21DaGlsZHJlbiA9PSBudWxsIFx1MDAyNlx1MDAyNlxuXHRcdG5ld1ZOb2RlLl9vcmlnaW5hbCA9PT0gb2xkVk5vZGUuX29yaWdpbmFsXG5cdCkge1xuXHRcdG5ld1ZOb2RlLl9jaGlsZHJlbiA9IG9sZFZOb2RlLl9jaGlsZHJlbjtcblx0XHRuZXdWTm9kZS5fZG9tID0gb2xkVk5vZGUuX2RvbTtcblx0fSBlbHNlIHtcblx0XHRuZXdWTm9kZS5fZG9tID0gZGlmZkVsZW1lbnROb2Rlcyhcblx0XHRcdG9sZFZOb2RlLl9kb20sXG5cdFx0XHRuZXdWTm9kZSxcblx0XHRcdG9sZFZOb2RlLFxuXHRcdFx0Z2xvYmFsQ29udGV4dCxcblx0XHRcdG5hbWVzcGFjZSxcblx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRcdFx0Y29tbWl0UXVldWUsXG5cdFx0XHRpc0h5ZHJhdGluZyxcblx0XHRcdHJlZlF1ZXVlXG5cdFx0KTtcblx0fVxuXG5cdGlmICgodG1wID0gb3B0aW9ucy5kaWZmZWQpKSB0bXAobmV3Vk5vZGUpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXlcdTAwM2NDb21wb25lbnRcdTAwM2V9IGNvbW1pdFF1ZXVlIExpc3Qgb2YgY29tcG9uZW50c1xuICogd2hpY2ggaGF2ZSBjYWxsYmFja3MgdG8gaW52b2tlIGluIGNvbW1pdFJvb3RcbiAqIEBwYXJhbSB7Vk5vZGV9IHJvb3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbW1pdFJvb3QoY29tbWl0UXVldWUsIHJvb3QsIHJlZlF1ZXVlKSB7XG5cdHJvb3QuX25leHREb20gPSB1bmRlZmluZWQ7XG5cblx0Zm9yIChsZXQgaSA9IDA7IGkgXHUwMDNjIHJlZlF1ZXVlLmxlbmd0aDsgaSsrKSB7XG5cdFx0YXBwbHlSZWYocmVmUXVldWVbaV0sIHJlZlF1ZXVlWysraV0sIHJlZlF1ZXVlWysraV0pO1xuXHR9XG5cblx0aWYgKG9wdGlvbnMuX2NvbW1pdCkgb3B0aW9ucy5fY29tbWl0KHJvb3QsIGNvbW1pdFF1ZXVlKTtcblxuXHRjb21taXRRdWV1ZS5zb21lKGMgPVx1MDAzZSB7XG5cdFx0dHJ5IHtcblx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgUmV1c2UgdGhlIGNvbW1pdFF1ZXVlIHZhcmlhYmxlIGhlcmUgc28gdGhlIHR5cGUgY2hhbmdlc1xuXHRcdFx0Y29tbWl0UXVldWUgPSBjLl9yZW5kZXJDYWxsYmFja3M7XG5cdFx0XHRjLl9yZW5kZXJDYWxsYmFja3MgPSBbXTtcblx0XHRcdGNvbW1pdFF1ZXVlLnNvbWUoY2IgPVx1MDAzZSB7XG5cdFx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgU2VlIGFib3ZlIGNvbW1lbnQgb24gY29tbWl0UXVldWVcblx0XHRcdFx0Y2IuY2FsbChjKTtcblx0XHRcdH0pO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdG9wdGlvbnMuX2NhdGNoRXJyb3IoZSwgYy5fdm5vZGUpO1xuXHRcdH1cblx0fSk7XG59XG5cbi8qKlxuICogRGlmZiB0d28gdmlydHVhbCBub2RlcyByZXByZXNlbnRpbmcgRE9NIGVsZW1lbnRcbiAqIEBwYXJhbSB7UHJlYWN0RWxlbWVudH0gZG9tIFRoZSBET00gZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIHZpcnR1YWwgbm9kZXNcbiAqIGJlaW5nIGRpZmZlZFxuICogQHBhcmFtIHtWTm9kZX0gbmV3Vk5vZGUgVGhlIG5ldyB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7Vk5vZGV9IG9sZFZOb2RlIFRoZSBvbGQgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge29iamVjdH0gZ2xvYmFsQ29udGV4dCBUaGUgY3VycmVudCBjb250ZXh0IG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVzcGFjZSBDdXJyZW50IG5hbWVzcGFjZSBvZiB0aGUgRE9NIG5vZGUgKEhUTUwsIFNWRywgb3IgTWF0aE1MKVxuICogQHBhcmFtIHtBcnJheVx1MDAzY1ByZWFjdEVsZW1lbnRcdTAwM2V9IGV4Y2Vzc0RvbUNoaWxkcmVuXG4gKiBAcGFyYW0ge0FycmF5XHUwMDNjQ29tcG9uZW50XHUwMDNlfSBjb21taXRRdWV1ZSBMaXN0IG9mIGNvbXBvbmVudHMgd2hpY2ggaGF2ZSBjYWxsYmFja3NcbiAqIHRvIGludm9rZSBpbiBjb21taXRSb290XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzSHlkcmF0aW5nIFdoZXRoZXIgb3Igbm90IHdlIGFyZSBpbiBoeWRyYXRpb25cbiAqIEBwYXJhbSB7YW55W119IHJlZlF1ZXVlIGFuIGFycmF5IG9mIGVsZW1lbnRzIG5lZWRlZCB0byBpbnZva2UgcmVmc1xuICogQHJldHVybnMge1ByZWFjdEVsZW1lbnR9XG4gKi9cbmZ1bmN0aW9uIGRpZmZFbGVtZW50Tm9kZXMoXG5cdGRvbSxcblx0bmV3Vk5vZGUsXG5cdG9sZFZOb2RlLFxuXHRnbG9iYWxDb250ZXh0LFxuXHRuYW1lc3BhY2UsXG5cdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRjb21taXRRdWV1ZSxcblx0aXNIeWRyYXRpbmcsXG5cdHJlZlF1ZXVlXG4pIHtcblx0bGV0IG9sZFByb3BzID0gb2xkVk5vZGUucHJvcHM7XG5cdGxldCBuZXdQcm9wcyA9IG5ld1ZOb2RlLnByb3BzO1xuXHRsZXQgbm9kZVR5cGUgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKG5ld1ZOb2RlLnR5cGUpO1xuXHQvKiogQHR5cGUge2FueX0gKi9cblx0bGV0IGk7XG5cdC8qKiBAdHlwZSB7eyBfX2h0bWw/OiBzdHJpbmcgfX0gKi9cblx0bGV0IG5ld0h0bWw7XG5cdC8qKiBAdHlwZSB7eyBfX2h0bWw/OiBzdHJpbmcgfX0gKi9cblx0bGV0IG9sZEh0bWw7XG5cdC8qKiBAdHlwZSB7Q29tcG9uZW50Q2hpbGRyZW59ICovXG5cdGxldCBuZXdDaGlsZHJlbjtcblx0bGV0IHZhbHVlO1xuXHRsZXQgaW5wdXRWYWx1ZTtcblx0bGV0IGNoZWNrZWQ7XG5cblx0Ly8gVHJhY2tzIGVudGVyaW5nIGFuZCBleGl0aW5nIG5hbWVzcGFjZXMgd2hlbiBkZXNjZW5kaW5nIHRocm91Z2ggdGhlIHRyZWUuXG5cdGlmIChub2RlVHlwZSA9PT0gJ3N2ZycpIG5hbWVzcGFjZSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cdGVsc2UgaWYgKG5vZGVUeXBlID09PSAnbWF0aCcpXG5cdFx0bmFtZXNwYWNlID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnO1xuXHRlbHNlIGlmICghbmFtZXNwYWNlKSBuYW1lc3BhY2UgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc7XG5cblx0aWYgKGV4Y2Vzc0RvbUNoaWxkcmVuICE9IG51bGwpIHtcblx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBleGNlc3NEb21DaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFsdWUgPSBleGNlc3NEb21DaGlsZHJlbltpXTtcblxuXHRcdFx0Ly8gaWYgbmV3Vk5vZGUgbWF0Y2hlcyBhbiBlbGVtZW50IGluIGV4Y2Vzc0RvbUNoaWxkcmVuIG9yIHRoZSBgZG9tYFxuXHRcdFx0Ly8gYXJndW1lbnQgbWF0Y2hlcyBhbiBlbGVtZW50IGluIGV4Y2Vzc0RvbUNoaWxkcmVuLCByZW1vdmUgaXQgZnJvbVxuXHRcdFx0Ly8gZXhjZXNzRG9tQ2hpbGRyZW4gc28gaXQgaXNuJ3QgbGF0ZXIgcmVtb3ZlZCBpbiBkaWZmQ2hpbGRyZW5cblx0XHRcdGlmIChcblx0XHRcdFx0dmFsdWUgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdCdzZXRBdHRyaWJ1dGUnIGluIHZhbHVlID09PSAhIW5vZGVUeXBlIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHQobm9kZVR5cGUgPyB2YWx1ZS5sb2NhbE5hbWUgPT09IG5vZGVUeXBlIDogdmFsdWUubm9kZVR5cGUgPT09IDMpXG5cdFx0XHQpIHtcblx0XHRcdFx0ZG9tID0gdmFsdWU7XG5cdFx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuW2ldID0gbnVsbDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKGRvbSA9PSBudWxsKSB7XG5cdFx0aWYgKG5vZGVUeXBlID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobmV3UHJvcHMpO1xuXHRcdH1cblxuXHRcdGRvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcblx0XHRcdG5hbWVzcGFjZSxcblx0XHRcdG5vZGVUeXBlLFxuXHRcdFx0bmV3UHJvcHMuaXMgXHUwMDI2XHUwMDI2IG5ld1Byb3BzXG5cdFx0KTtcblxuXHRcdC8vIHdlIGNyZWF0ZWQgYSBuZXcgcGFyZW50LCBzbyBub25lIG9mIHRoZSBwcmV2aW91c2x5IGF0dGFjaGVkIGNoaWxkcmVuIGNhbiBiZSByZXVzZWQ6XG5cdFx0ZXhjZXNzRG9tQ2hpbGRyZW4gPSBudWxsO1xuXHRcdC8vIHdlIGFyZSBjcmVhdGluZyBhIG5ldyBub2RlLCBzbyB3ZSBjYW4gYXNzdW1lIHRoaXMgaXMgYSBuZXcgc3VidHJlZSAoaW5cblx0XHQvLyBjYXNlIHdlIGFyZSBoeWRyYXRpbmcpLCB0aGlzIGRlb3B0cyB0aGUgaHlkcmF0ZVxuXHRcdGlzSHlkcmF0aW5nID0gZmFsc2U7XG5cdH1cblxuXHRpZiAobm9kZVR5cGUgPT09IG51bGwpIHtcblx0XHQvLyBEdXJpbmcgaHlkcmF0aW9uLCB3ZSBzdGlsbCBoYXZlIHRvIHNwbGl0IG1lcmdlZCB0ZXh0IGZyb20gU1NSJ2QgSFRNTC5cblx0XHRpZiAob2xkUHJvcHMgIT09IG5ld1Byb3BzIFx1MDAyNlx1MDAyNiAoIWlzSHlkcmF0aW5nIHx8IGRvbS5kYXRhICE9PSBuZXdQcm9wcykpIHtcblx0XHRcdGRvbS5kYXRhID0gbmV3UHJvcHM7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdC8vIElmIGV4Y2Vzc0RvbUNoaWxkcmVuIHdhcyBub3QgbnVsbCwgcmVwb3B1bGF0ZSBpdCB3aXRoIHRoZSBjdXJyZW50IGVsZW1lbnQncyBjaGlsZHJlbjpcblx0XHRleGNlc3NEb21DaGlsZHJlbiA9IGV4Y2Vzc0RvbUNoaWxkcmVuIFx1MDAyNlx1MDAyNiBzbGljZS5jYWxsKGRvbS5jaGlsZE5vZGVzKTtcblxuXHRcdG9sZFByb3BzID0gb2xkVk5vZGUucHJvcHMgfHwgRU1QVFlfT0JKO1xuXG5cdFx0Ly8gSWYgd2UgYXJlIGluIGEgc2l0dWF0aW9uIHdoZXJlIHdlIGFyZSBub3QgaHlkcmF0aW5nIGJ1dCBhcmUgdXNpbmdcblx0XHQvLyBleGlzdGluZyBET00gKGUuZy4gcmVwbGFjZU5vZGUpIHdlIHNob3VsZCByZWFkIHRoZSBleGlzdGluZyBET01cblx0XHQvLyBhdHRyaWJ1dGVzIHRvIGRpZmYgdGhlbVxuXHRcdGlmICghaXNIeWRyYXRpbmcgXHUwMDI2XHUwMDI2IGV4Y2Vzc0RvbUNoaWxkcmVuICE9IG51bGwpIHtcblx0XHRcdG9sZFByb3BzID0ge307XG5cdFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkb20uYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR2YWx1ZSA9IGRvbS5hdHRyaWJ1dGVzW2ldO1xuXHRcdFx0XHRvbGRQcm9wc1t2YWx1ZS5uYW1lXSA9IHZhbHVlLnZhbHVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZvciAoaSBpbiBvbGRQcm9wcykge1xuXHRcdFx0dmFsdWUgPSBvbGRQcm9wc1tpXTtcblx0XHRcdGlmIChpID09ICdjaGlsZHJlbicpIHtcblx0XHRcdH0gZWxzZSBpZiAoaSA9PSAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnKSB7XG5cdFx0XHRcdG9sZEh0bWwgPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSBpZiAoaSAhPT0gJ2tleScgXHUwMDI2XHUwMDI2ICEoaSBpbiBuZXdQcm9wcykpIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdChpID09ICd2YWx1ZScgXHUwMDI2XHUwMDI2ICdkZWZhdWx0VmFsdWUnIGluIG5ld1Byb3BzKSB8fFxuXHRcdFx0XHRcdChpID09ICdjaGVja2VkJyBcdTAwMjZcdTAwMjYgJ2RlZmF1bHRDaGVja2VkJyBpbiBuZXdQcm9wcylcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0c2V0UHJvcGVydHkoZG9tLCBpLCBudWxsLCB2YWx1ZSwgbmFtZXNwYWNlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBEdXJpbmcgaHlkcmF0aW9uLCBwcm9wcyBhcmUgbm90IGRpZmZlZCBhdCBhbGwgKGluY2x1ZGluZyBkYW5nZXJvdXNseVNldElubmVySFRNTClcblx0XHQvLyBAVE9ETyB3ZSBzaG91bGQgd2FybiBpbiBkZWJ1ZyBtb2RlIHdoZW4gcHJvcHMgZG9uJ3QgbWF0Y2ggaGVyZS5cblx0XHRmb3IgKGkgaW4gbmV3UHJvcHMpIHtcblx0XHRcdHZhbHVlID0gbmV3UHJvcHNbaV07XG5cdFx0XHRpZiAoaSA9PSAnY2hpbGRyZW4nKSB7XG5cdFx0XHRcdG5ld0NoaWxkcmVuID0gdmFsdWU7XG5cdFx0XHR9IGVsc2UgaWYgKGkgPT0gJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJykge1xuXHRcdFx0XHRuZXdIdG1sID0gdmFsdWU7XG5cdFx0XHR9IGVsc2UgaWYgKGkgPT0gJ3ZhbHVlJykge1xuXHRcdFx0XHRpbnB1dFZhbHVlID0gdmFsdWU7XG5cdFx0XHR9IGVsc2UgaWYgKGkgPT0gJ2NoZWNrZWQnKSB7XG5cdFx0XHRcdGNoZWNrZWQgPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdGkgIT09ICdrZXknIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHQoIWlzSHlkcmF0aW5nIHx8IHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSBcdTAwMjZcdTAwMjZcblx0XHRcdFx0b2xkUHJvcHNbaV0gIT09IHZhbHVlXG5cdFx0XHQpIHtcblx0XHRcdFx0c2V0UHJvcGVydHkoZG9tLCBpLCB2YWx1ZSwgb2xkUHJvcHNbaV0sIG5hbWVzcGFjZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlIG5ldyB2bm9kZSBkaWRuJ3QgaGF2ZSBkYW5nZXJvdXNseVNldElubmVySFRNTCwgZGlmZiBpdHMgY2hpbGRyZW5cblx0XHRpZiAobmV3SHRtbCkge1xuXHRcdFx0Ly8gQXZvaWQgcmUtYXBwbHlpbmcgdGhlIHNhbWUgJ19faHRtbCcgaWYgaXQgZGlkIG5vdCBjaGFuZ2VkIGJldHdlZW4gcmUtcmVuZGVyXG5cdFx0XHRpZiAoXG5cdFx0XHRcdCFpc0h5ZHJhdGluZyBcdTAwMjZcdTAwMjZcblx0XHRcdFx0KCFvbGRIdG1sIHx8XG5cdFx0XHRcdFx0KG5ld0h0bWwuX19odG1sICE9PSBvbGRIdG1sLl9faHRtbCBcdTAwMjZcdTAwMjZcblx0XHRcdFx0XHRcdG5ld0h0bWwuX19odG1sICE9PSBkb20uaW5uZXJIVE1MKSlcblx0XHRcdCkge1xuXHRcdFx0XHRkb20uaW5uZXJIVE1MID0gbmV3SHRtbC5fX2h0bWw7XG5cdFx0XHR9XG5cblx0XHRcdG5ld1ZOb2RlLl9jaGlsZHJlbiA9IFtdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAob2xkSHRtbCkgZG9tLmlubmVySFRNTCA9ICcnO1xuXG5cdFx0XHRkaWZmQ2hpbGRyZW4oXG5cdFx0XHRcdGRvbSxcblx0XHRcdFx0aXNBcnJheShuZXdDaGlsZHJlbikgPyBuZXdDaGlsZHJlbiA6IFtuZXdDaGlsZHJlbl0sXG5cdFx0XHRcdG5ld1ZOb2RlLFxuXHRcdFx0XHRvbGRWTm9kZSxcblx0XHRcdFx0Z2xvYmFsQ29udGV4dCxcblx0XHRcdFx0bm9kZVR5cGUgPT09ICdmb3JlaWduT2JqZWN0J1xuXHRcdFx0XHRcdD8gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnXG5cdFx0XHRcdFx0OiBuYW1lc3BhY2UsXG5cdFx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRcdFx0XHRjb21taXRRdWV1ZSxcblx0XHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW5cblx0XHRcdFx0XHQ/IGV4Y2Vzc0RvbUNoaWxkcmVuWzBdXG5cdFx0XHRcdFx0OiBvbGRWTm9kZS5fY2hpbGRyZW4gXHUwMDI2XHUwMDI2IGdldERvbVNpYmxpbmcob2xkVk5vZGUsIDApLFxuXHRcdFx0XHRpc0h5ZHJhdGluZyxcblx0XHRcdFx0cmVmUXVldWVcblx0XHRcdCk7XG5cblx0XHRcdC8vIFJlbW92ZSBjaGlsZHJlbiB0aGF0IGFyZSBub3QgcGFydCBvZiBhbnkgdm5vZGUuXG5cdFx0XHRpZiAoZXhjZXNzRG9tQ2hpbGRyZW4gIT0gbnVsbCkge1xuXHRcdFx0XHRmb3IgKGkgPSBleGNlc3NEb21DaGlsZHJlbi5sZW5ndGg7IGktLTsgKSB7XG5cdFx0XHRcdFx0aWYgKGV4Y2Vzc0RvbUNoaWxkcmVuW2ldICE9IG51bGwpIHJlbW92ZU5vZGUoZXhjZXNzRG9tQ2hpbGRyZW5baV0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQXMgYWJvdmUsIGRvbid0IGRpZmYgcHJvcHMgZHVyaW5nIGh5ZHJhdGlvblxuXHRcdGlmICghaXNIeWRyYXRpbmcpIHtcblx0XHRcdGkgPSAndmFsdWUnO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRpbnB1dFZhbHVlICE9PSB1bmRlZmluZWQgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdC8vICMyNzU2IEZvciB0aGUgXHUwMDNjcHJvZ3Jlc3NcdTAwM2UtZWxlbWVudCB0aGUgaW5pdGlhbCB2YWx1ZSBpcyAwLFxuXHRcdFx0XHQvLyBkZXNwaXRlIHRoZSBhdHRyaWJ1dGUgbm90IGJlaW5nIHByZXNlbnQuIFdoZW4gdGhlIGF0dHJpYnV0ZVxuXHRcdFx0XHQvLyBpcyBtaXNzaW5nIHRoZSBwcm9ncmVzcyBiYXIgaXMgdHJlYXRlZCBhcyBpbmRldGVybWluYXRlLlxuXHRcdFx0XHQvLyBUbyBmaXggdGhhdCB3ZSdsbCBhbHdheXMgdXBkYXRlIGl0IHdoZW4gaXQgaXMgMCBmb3IgcHJvZ3Jlc3MgZWxlbWVudHNcblx0XHRcdFx0KGlucHV0VmFsdWUgIT09IGRvbVtpXSB8fFxuXHRcdFx0XHRcdChub2RlVHlwZSA9PT0gJ3Byb2dyZXNzJyBcdTAwMjZcdTAwMjYgIWlucHV0VmFsdWUpIHx8XG5cdFx0XHRcdFx0Ly8gVGhpcyBpcyBvbmx5IGZvciBJRSAxMSB0byBmaXggXHUwMDNjc2VsZWN0XHUwMDNlIHZhbHVlIG5vdCBiZWluZyB1cGRhdGVkLlxuXHRcdFx0XHRcdC8vIFRvIGF2b2lkIGEgc3RhbGUgc2VsZWN0IHZhbHVlIHdlIG5lZWQgdG8gc2V0IHRoZSBvcHRpb24udmFsdWVcblx0XHRcdFx0XHQvLyBhZ2Fpbiwgd2hpY2ggdHJpZ2dlcnMgSUUxMSB0byByZS1ldmFsdWF0ZSB0aGUgc2VsZWN0IHZhbHVlXG5cdFx0XHRcdFx0KG5vZGVUeXBlID09PSAnb3B0aW9uJyBcdTAwMjZcdTAwMjYgaW5wdXRWYWx1ZSAhPT0gb2xkUHJvcHNbaV0pKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHNldFByb3BlcnR5KGRvbSwgaSwgaW5wdXRWYWx1ZSwgb2xkUHJvcHNbaV0sIG5hbWVzcGFjZSk7XG5cdFx0XHR9XG5cblx0XHRcdGkgPSAnY2hlY2tlZCc7XG5cdFx0XHRpZiAoY2hlY2tlZCAhPT0gdW5kZWZpbmVkIFx1MDAyNlx1MDAyNiBjaGVja2VkICE9PSBkb21baV0pIHtcblx0XHRcdFx0c2V0UHJvcGVydHkoZG9tLCBpLCBjaGVja2VkLCBvbGRQcm9wc1tpXSwgbmFtZXNwYWNlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZG9tO1xufVxuXG4vKipcbiAqIEludm9rZSBvciB1cGRhdGUgYSByZWYsIGRlcGVuZGluZyBvbiB3aGV0aGVyIGl0IGlzIGEgZnVuY3Rpb24gb3Igb2JqZWN0IHJlZi5cbiAqIEBwYXJhbSB7UmVmXHUwMDNjYW55XHUwMDNlIFx1MDAyNiB7IF91bm1vdW50PzogdW5rbm93biB9fSByZWZcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHBhcmFtIHtWTm9kZX0gdm5vZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UmVmKHJlZiwgdmFsdWUsIHZub2RlKSB7XG5cdHRyeSB7XG5cdFx0aWYgKHR5cGVvZiByZWYgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0bGV0IGhhc1JlZlVubW91bnQgPSB0eXBlb2YgcmVmLl91bm1vdW50ID09ICdmdW5jdGlvbic7XG5cdFx0XHRpZiAoaGFzUmVmVW5tb3VudCkge1xuXHRcdFx0XHQvLyBAdHMtaWdub3JlIFRTIGRvZXNuJ3QgbGlrZSBtb3ZpbmcgbmFycm93aW5nIGNoZWNrcyBpbnRvIHZhcmlhYmxlc1xuXHRcdFx0XHRyZWYuX3VubW91bnQoKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCFoYXNSZWZVbm1vdW50IHx8IHZhbHVlICE9IG51bGwpIHtcblx0XHRcdFx0Ly8gU3RvcmUgdGhlIGNsZWFudXAgZnVuY3Rpb24gb24gdGhlIGZ1bmN0aW9uXG5cdFx0XHRcdC8vIGluc3RhbmNlIG9iamVjdCBpdHNlbGYgdG8gYXZvaWQgc2hhcGVcblx0XHRcdFx0Ly8gdHJhbnNpdGlvbmluZyB2bm9kZVxuXHRcdFx0XHRyZWYuX3VubW91bnQgPSByZWYodmFsdWUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSByZWYuY3VycmVudCA9IHZhbHVlO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCB2bm9kZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBVbm1vdW50IGEgdmlydHVhbCBub2RlIGZyb20gdGhlIHRyZWUgYW5kIGFwcGx5IERPTSBjaGFuZ2VzXG4gKiBAcGFyYW0ge1ZOb2RlfSB2bm9kZSBUaGUgdmlydHVhbCBub2RlIHRvIHVubW91bnRcbiAqIEBwYXJhbSB7Vk5vZGV9IHBhcmVudFZOb2RlIFRoZSBwYXJlbnQgb2YgdGhlIFZOb2RlIHRoYXQgaW5pdGlhdGVkIHRoZSB1bm1vdW50XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtza2lwUmVtb3ZlXSBGbGFnIHRoYXQgaW5kaWNhdGVzIHRoYXQgYSBwYXJlbnQgbm9kZSBvZiB0aGVcbiAqIGN1cnJlbnQgZWxlbWVudCBpcyBhbHJlYWR5IGRldGFjaGVkIGZyb20gdGhlIERPTS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVubW91bnQodm5vZGUsIHBhcmVudFZOb2RlLCBza2lwUmVtb3ZlKSB7XG5cdGxldCByO1xuXHRpZiAob3B0aW9ucy51bm1vdW50KSBvcHRpb25zLnVubW91bnQodm5vZGUpO1xuXG5cdGlmICgociA9IHZub2RlLnJlZikpIHtcblx0XHRpZiAoIXIuY3VycmVudCB8fCByLmN1cnJlbnQgPT09IHZub2RlLl9kb20pIHtcblx0XHRcdGFwcGx5UmVmKHIsIG51bGwsIHBhcmVudFZOb2RlKTtcblx0XHR9XG5cdH1cblxuXHRpZiAoKHIgPSB2bm9kZS5fY29tcG9uZW50KSAhPSBudWxsKSB7XG5cdFx0aWYgKHIuY29tcG9uZW50V2lsbFVubW91bnQpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHIuY29tcG9uZW50V2lsbFVubW91bnQoKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCBwYXJlbnRWTm9kZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0ci5iYXNlID0gci5fcGFyZW50RG9tID0gbnVsbDtcblx0fVxuXG5cdGlmICgociA9IHZub2RlLl9jaGlsZHJlbikpIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSBcdTAwM2Mgci5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKHJbaV0pIHtcblx0XHRcdFx0dW5tb3VudChcblx0XHRcdFx0XHRyW2ldLFxuXHRcdFx0XHRcdHBhcmVudFZOb2RlLFxuXHRcdFx0XHRcdHNraXBSZW1vdmUgfHwgdHlwZW9mIHZub2RlLnR5cGUgIT0gJ2Z1bmN0aW9uJ1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmICghc2tpcFJlbW92ZSBcdTAwMjZcdTAwMjYgdm5vZGUuX2RvbSAhPSBudWxsKSB7XG5cdFx0cmVtb3ZlTm9kZSh2bm9kZS5fZG9tKTtcblx0fVxuXG5cdC8vIE11c3QgYmUgc2V0IHRvIGB1bmRlZmluZWRgIHRvIHByb3Blcmx5IGNsZWFuIHVwIGBfbmV4dERvbWBcblx0Ly8gZm9yIHdoaWNoIGBudWxsYCBpcyBhIHZhbGlkIHZhbHVlLiBTZWUgY29tbWVudCBpbiBgY3JlYXRlLWVsZW1lbnQuanNgXG5cdHZub2RlLl9jb21wb25lbnQgPSB2bm9kZS5fcGFyZW50ID0gdm5vZGUuX2RvbSA9IHZub2RlLl9uZXh0RG9tID0gdW5kZWZpbmVkO1xufVxuXG4vKiogVGhlIGAucmVuZGVyKClgIG1ldGhvZCBmb3IgYSBQRkMgYmFja2luZyBpbnN0YW5jZS4gKi9cbmZ1bmN0aW9uIGRvUmVuZGVyKHByb3BzLCBzdGF0ZSwgY29udGV4dCkge1xuXHRyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvcihwcm9wcywgY29udGV4dCk7XG59XG4iLCAiaW1wb3J0IHsgRU1QVFlfT0JKIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY29tbWl0Um9vdCwgZGlmZiB9IGZyb20gJy4vZGlmZi9pbmRleCc7XG5pbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBGcmFnbWVudCB9IGZyb20gJy4vY3JlYXRlLWVsZW1lbnQnO1xuaW1wb3J0IG9wdGlvbnMgZnJvbSAnLi9vcHRpb25zJztcbmltcG9ydCB7IHNsaWNlIH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBSZW5kZXIgYSBQcmVhY3QgdmlydHVhbCBub2RlIGludG8gYSBET00gZWxlbWVudFxuICogQHBhcmFtIHtDb21wb25lbnRDaGlsZH0gdm5vZGUgVGhlIHZpcnR1YWwgbm9kZSB0byByZW5kZXJcbiAqIEBwYXJhbSB7UHJlYWN0RWxlbWVudH0gcGFyZW50RG9tIFRoZSBET00gZWxlbWVudCB0byByZW5kZXIgaW50b1xuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50IHwgb2JqZWN0fSBbcmVwbGFjZU5vZGVdIE9wdGlvbmFsOiBBdHRlbXB0IHRvIHJlLXVzZSBhblxuICogZXhpc3RpbmcgRE9NIHRyZWUgcm9vdGVkIGF0IGByZXBsYWNlTm9kZWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlcih2bm9kZSwgcGFyZW50RG9tLCByZXBsYWNlTm9kZSkge1xuXHRpZiAob3B0aW9ucy5fcm9vdCkgb3B0aW9ucy5fcm9vdCh2bm9kZSwgcGFyZW50RG9tKTtcblxuXHQvLyBXZSBhYnVzZSB0aGUgYHJlcGxhY2VOb2RlYCBwYXJhbWV0ZXIgaW4gYGh5ZHJhdGUoKWAgdG8gc2lnbmFsIGlmIHdlIGFyZSBpblxuXHQvLyBoeWRyYXRpb24gbW9kZSBvciBub3QgYnkgcGFzc2luZyB0aGUgYGh5ZHJhdGVgIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBET01cblx0Ly8gZWxlbWVudC4uXG5cdGxldCBpc0h5ZHJhdGluZyA9IHR5cGVvZiByZXBsYWNlTm9kZSA9PSAnZnVuY3Rpb24nO1xuXG5cdC8vIFRvIGJlIGFibGUgdG8gc3VwcG9ydCBjYWxsaW5nIGByZW5kZXIoKWAgbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWVcblx0Ly8gRE9NIG5vZGUsIHdlIG5lZWQgdG8gb2J0YWluIGEgcmVmZXJlbmNlIHRvIHRoZSBwcmV2aW91cyB0cmVlLiBXZSBkb1xuXHQvLyB0aGlzIGJ5IGFzc2lnbmluZyBhIG5ldyBgX2NoaWxkcmVuYCBwcm9wZXJ0eSB0byBET00gbm9kZXMgd2hpY2ggcG9pbnRzXG5cdC8vIHRvIHRoZSBsYXN0IHJlbmRlcmVkIHRyZWUuIEJ5IGRlZmF1bHQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgcHJlc2VudCwgd2hpY2hcblx0Ly8gbWVhbnMgdGhhdCB3ZSBhcmUgbW91bnRpbmcgYSBuZXcgdHJlZSBmb3IgdGhlIGZpcnN0IHRpbWUuXG5cdGxldCBvbGRWTm9kZSA9IGlzSHlkcmF0aW5nXG5cdFx0PyBudWxsXG5cdFx0OiAocmVwbGFjZU5vZGUgXHUwMDI2XHUwMDI2IHJlcGxhY2VOb2RlLl9jaGlsZHJlbikgfHwgcGFyZW50RG9tLl9jaGlsZHJlbjtcblxuXHR2bm9kZSA9ICgoIWlzSHlkcmF0aW5nIFx1MDAyNlx1MDAyNiByZXBsYWNlTm9kZSkgfHwgcGFyZW50RG9tKS5fY2hpbGRyZW4gPVxuXHRcdGNyZWF0ZUVsZW1lbnQoRnJhZ21lbnQsIG51bGwsIFt2bm9kZV0pO1xuXG5cdC8vIExpc3Qgb2YgZWZmZWN0cyB0aGF0IG5lZWQgdG8gYmUgY2FsbGVkIGFmdGVyIGRpZmZpbmcuXG5cdGxldCBjb21taXRRdWV1ZSA9IFtdLFxuXHRcdHJlZlF1ZXVlID0gW107XG5cdGRpZmYoXG5cdFx0cGFyZW50RG9tLFxuXHRcdC8vIERldGVybWluZSB0aGUgbmV3IHZub2RlIHRyZWUgYW5kIHN0b3JlIGl0IG9uIHRoZSBET00gZWxlbWVudCBvblxuXHRcdC8vIG91ciBjdXN0b20gYF9jaGlsZHJlbmAgcHJvcGVydHkuXG5cdFx0dm5vZGUsXG5cdFx0b2xkVk5vZGUgfHwgRU1QVFlfT0JKLFxuXHRcdEVNUFRZX09CSixcblx0XHRwYXJlbnREb20ubmFtZXNwYWNlVVJJLFxuXHRcdCFpc0h5ZHJhdGluZyBcdTAwMjZcdTAwMjYgcmVwbGFjZU5vZGVcblx0XHRcdD8gW3JlcGxhY2VOb2RlXVxuXHRcdFx0OiBvbGRWTm9kZVxuXHRcdFx0XHQ/IG51bGxcblx0XHRcdFx0OiBwYXJlbnREb20uZmlyc3RDaGlsZFxuXHRcdFx0XHRcdD8gc2xpY2UuY2FsbChwYXJlbnREb20uY2hpbGROb2Rlcylcblx0XHRcdFx0XHQ6IG51bGwsXG5cdFx0Y29tbWl0UXVldWUsXG5cdFx0IWlzSHlkcmF0aW5nIFx1MDAyNlx1MDAyNiByZXBsYWNlTm9kZVxuXHRcdFx0PyByZXBsYWNlTm9kZVxuXHRcdFx0OiBvbGRWTm9kZVxuXHRcdFx0XHQ/IG9sZFZOb2RlLl9kb21cblx0XHRcdFx0OiBwYXJlbnREb20uZmlyc3RDaGlsZCxcblx0XHRpc0h5ZHJhdGluZyxcblx0XHRyZWZRdWV1ZVxuXHQpO1xuXG5cdC8vIEZsdXNoIGFsbCBxdWV1ZWQgZWZmZWN0c1xuXHRjb21taXRSb290KGNvbW1pdFF1ZXVlLCB2bm9kZSwgcmVmUXVldWUpO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBhbiBleGlzdGluZyBET00gZWxlbWVudCB3aXRoIGRhdGEgZnJvbSBhIFByZWFjdCB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7Q29tcG9uZW50Q2hpbGR9IHZub2RlIFRoZSB2aXJ0dWFsIG5vZGUgdG8gcmVuZGVyXG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IHBhcmVudERvbSBUaGUgRE9NIGVsZW1lbnQgdG8gdXBkYXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoeWRyYXRlKHZub2RlLCBwYXJlbnREb20pIHtcblx0cmVuZGVyKHZub2RlLCBwYXJlbnREb20sIGh5ZHJhdGUpO1xufVxuIiwgImltcG9ydCB7IGFzc2lnbiwgc2xpY2UgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgY3JlYXRlVk5vZGUgfSBmcm9tICcuL2NyZWF0ZS1lbGVtZW50JztcblxuLyoqXG4gKiBDbG9uZXMgdGhlIGdpdmVuIFZOb2RlLCBvcHRpb25hbGx5IGFkZGluZyBhdHRyaWJ1dGVzL3Byb3BzIGFuZCByZXBsYWNpbmcgaXRzXG4gKiBjaGlsZHJlbi5cbiAqIEBwYXJhbSB7Vk5vZGV9IHZub2RlIFRoZSB2aXJ0dWFsIERPTSBlbGVtZW50IHRvIGNsb25lXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgQXR0cmlidXRlcy9wcm9wcyB0byBhZGQgd2hlbiBjbG9uaW5nXG4gKiBAcGFyYW0ge0FycmF5XHUwMDNjQ29tcG9uZW50Q2hpbGRyZW5cdTAwM2V9IHJlc3QgQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIHdpbGwgYmUgdXNlZFxuICogYXMgcmVwbGFjZW1lbnQgY2hpbGRyZW4uXG4gKiBAcmV0dXJucyB7Vk5vZGV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZUVsZW1lbnQodm5vZGUsIHByb3BzLCBjaGlsZHJlbikge1xuXHRsZXQgbm9ybWFsaXplZFByb3BzID0gYXNzaWduKHt9LCB2bm9kZS5wcm9wcyksXG5cdFx0a2V5LFxuXHRcdHJlZixcblx0XHRpO1xuXG5cdGxldCBkZWZhdWx0UHJvcHM7XG5cblx0aWYgKHZub2RlLnR5cGUgXHUwMDI2XHUwMDI2IHZub2RlLnR5cGUuZGVmYXVsdFByb3BzKSB7XG5cdFx0ZGVmYXVsdFByb3BzID0gdm5vZGUudHlwZS5kZWZhdWx0UHJvcHM7XG5cdH1cblxuXHRmb3IgKGkgaW4gcHJvcHMpIHtcblx0XHRpZiAoaSA9PSAna2V5Jykga2V5ID0gcHJvcHNbaV07XG5cdFx0ZWxzZSBpZiAoaSA9PSAncmVmJykgcmVmID0gcHJvcHNbaV07XG5cdFx0ZWxzZSBpZiAocHJvcHNbaV0gPT09IHVuZGVmaW5lZCBcdTAwMjZcdTAwMjYgZGVmYXVsdFByb3BzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdG5vcm1hbGl6ZWRQcm9wc1tpXSA9IGRlZmF1bHRQcm9wc1tpXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bm9ybWFsaXplZFByb3BzW2ldID0gcHJvcHNbaV07XG5cdFx0fVxuXHR9XG5cblx0aWYgKGFyZ3VtZW50cy5sZW5ndGggXHUwMDNlIDIpIHtcblx0XHRub3JtYWxpemVkUHJvcHMuY2hpbGRyZW4gPVxuXHRcdFx0YXJndW1lbnRzLmxlbmd0aCBcdTAwM2UgMyA/IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKSA6IGNoaWxkcmVuO1xuXHR9XG5cblx0cmV0dXJuIGNyZWF0ZVZOb2RlKFxuXHRcdHZub2RlLnR5cGUsXG5cdFx0bm9ybWFsaXplZFByb3BzLFxuXHRcdGtleSB8fCB2bm9kZS5rZXksXG5cdFx0cmVmIHx8IHZub2RlLnJlZixcblx0XHRudWxsXG5cdCk7XG59XG4iLCAiLyoqXG4gKiBGaW5kIHRoZSBjbG9zZXN0IGVycm9yIGJvdW5kYXJ5IHRvIGEgdGhyb3duIGVycm9yIGFuZCBjYWxsIGl0XG4gKiBAcGFyYW0ge29iamVjdH0gZXJyb3IgVGhlIHRocm93biB2YWx1ZVxuICogQHBhcmFtIHtWTm9kZX0gdm5vZGUgVGhlIHZub2RlIHRoYXQgdGhyZXcgdGhlIGVycm9yIHRoYXQgd2FzIGNhdWdodCAoZXhjZXB0XG4gKiBmb3IgdW5tb3VudGluZyB3aGVuIHRoaXMgcGFyYW1ldGVyIGlzIHRoZSBoaWdoZXN0IHBhcmVudCB0aGF0IHdhcyBiZWluZ1xuICogdW5tb3VudGVkKVxuICogQHBhcmFtIHtWTm9kZX0gW29sZFZOb2RlXVxuICogQHBhcmFtIHtFcnJvckluZm99IFtlcnJvckluZm9dXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBfY2F0Y2hFcnJvcihlcnJvciwgdm5vZGUsIG9sZFZOb2RlLCBlcnJvckluZm8pIHtcblx0LyoqIEB0eXBlIHtDb21wb25lbnR9ICovXG5cdGxldCBjb21wb25lbnQsXG5cdFx0LyoqIEB0eXBlIHtDb21wb25lbnRUeXBlfSAqL1xuXHRcdGN0b3IsXG5cdFx0LyoqIEB0eXBlIHtib29sZWFufSAqL1xuXHRcdGhhbmRsZWQ7XG5cblx0Zm9yICg7ICh2bm9kZSA9IHZub2RlLl9wYXJlbnQpOyApIHtcblx0XHRpZiAoKGNvbXBvbmVudCA9IHZub2RlLl9jb21wb25lbnQpIFx1MDAyNlx1MDAyNiAhY29tcG9uZW50Ll9wcm9jZXNzaW5nRXhjZXB0aW9uKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjdG9yID0gY29tcG9uZW50LmNvbnN0cnVjdG9yO1xuXG5cdFx0XHRcdGlmIChjdG9yIFx1MDAyNlx1MDAyNiBjdG9yLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvciAhPSBudWxsKSB7XG5cdFx0XHRcdFx0Y29tcG9uZW50LnNldFN0YXRlKGN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGVycm9yKSk7XG5cdFx0XHRcdFx0aGFuZGxlZCA9IGNvbXBvbmVudC5fZGlydHk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoY29tcG9uZW50LmNvbXBvbmVudERpZENhdGNoICE9IG51bGwpIHtcblx0XHRcdFx0XHRjb21wb25lbnQuY29tcG9uZW50RGlkQ2F0Y2goZXJyb3IsIGVycm9ySW5mbyB8fCB7fSk7XG5cdFx0XHRcdFx0aGFuZGxlZCA9IGNvbXBvbmVudC5fZGlydHk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBUaGlzIGlzIGFuIGVycm9yIGJvdW5kYXJ5LiBNYXJrIGl0IGFzIGhhdmluZyBiYWlsZWQgb3V0LCBhbmQgd2hldGhlciBpdCB3YXMgbWlkLWh5ZHJhdGlvbi5cblx0XHRcdFx0aWYgKGhhbmRsZWQpIHtcblx0XHRcdFx0XHRyZXR1cm4gKGNvbXBvbmVudC5fcGVuZGluZ0Vycm9yID0gY29tcG9uZW50KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRlcnJvciA9IGU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0dGhyb3cgZXJyb3I7XG59XG4iLCAiaW1wb3J0IHsgb3B0aW9ucyBhcyBfb3B0aW9ucyB9IGZyb20gJ3ByZWFjdCc7XG5cbi8qKiBAdHlwZSB7bnVtYmVyfSAqL1xubGV0IGN1cnJlbnRJbmRleDtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnR9ICovXG5sZXQgY3VycmVudENvbXBvbmVudDtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnR9ICovXG5sZXQgcHJldmlvdXNDb21wb25lbnQ7XG5cbi8qKiBAdHlwZSB7bnVtYmVyfSAqL1xubGV0IGN1cnJlbnRIb29rID0gMDtcblxuLyoqIEB0eXBlIHtBcnJheVx1MDAzY2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudFx1MDAzZX0gKi9cbmxldCBhZnRlclBhaW50RWZmZWN0cyA9IFtdO1xuXG4vLyBDYXN0IHRvIHVzZSBpbnRlcm5hbCBPcHRpb25zIHR5cGVcbmNvbnN0IG9wdGlvbnMgPSAvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLk9wdGlvbnN9ICovIChfb3B0aW9ucyk7XG5cbmxldCBvbGRCZWZvcmVEaWZmID0gb3B0aW9ucy5fZGlmZjtcbmxldCBvbGRCZWZvcmVSZW5kZXIgPSBvcHRpb25zLl9yZW5kZXI7XG5sZXQgb2xkQWZ0ZXJEaWZmID0gb3B0aW9ucy5kaWZmZWQ7XG5sZXQgb2xkQ29tbWl0ID0gb3B0aW9ucy5fY29tbWl0O1xubGV0IG9sZEJlZm9yZVVubW91bnQgPSBvcHRpb25zLnVubW91bnQ7XG5sZXQgb2xkUm9vdCA9IG9wdGlvbnMuX3Jvb3Q7XG5cbmNvbnN0IFJBRl9USU1FT1VUID0gMTAwO1xubGV0IHByZXZSYWY7XG5cbi8qKiBAdHlwZSB7KHZub2RlOiBpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZSkgPVx1MDAzZSB2b2lkfSAqL1xub3B0aW9ucy5fZGlmZiA9IHZub2RlID1cdTAwM2Uge1xuXHRjdXJyZW50Q29tcG9uZW50ID0gbnVsbDtcblx0aWYgKG9sZEJlZm9yZURpZmYpIG9sZEJlZm9yZURpZmYodm5vZGUpO1xufTtcblxub3B0aW9ucy5fcm9vdCA9ICh2bm9kZSwgcGFyZW50RG9tKSA9XHUwMDNlIHtcblx0aWYgKHZub2RlIFx1MDAyNlx1MDAyNiBwYXJlbnREb20uX2NoaWxkcmVuIFx1MDAyNlx1MDAyNiBwYXJlbnREb20uX2NoaWxkcmVuLl9tYXNrKSB7XG5cdFx0dm5vZGUuX21hc2sgPSBwYXJlbnREb20uX2NoaWxkcmVuLl9tYXNrO1xuXHR9XG5cblx0aWYgKG9sZFJvb3QpIG9sZFJvb3Qodm5vZGUsIHBhcmVudERvbSk7XG59O1xuXG4vKiogQHR5cGUgeyh2bm9kZTogaW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGUpID1cdTAwM2Ugdm9pZH0gKi9cbm9wdGlvbnMuX3JlbmRlciA9IHZub2RlID1cdTAwM2Uge1xuXHRpZiAob2xkQmVmb3JlUmVuZGVyKSBvbGRCZWZvcmVSZW5kZXIodm5vZGUpO1xuXG5cdGN1cnJlbnRDb21wb25lbnQgPSB2bm9kZS5fY29tcG9uZW50O1xuXHRjdXJyZW50SW5kZXggPSAwO1xuXG5cdGNvbnN0IGhvb2tzID0gY3VycmVudENvbXBvbmVudC5fX2hvb2tzO1xuXHRpZiAoaG9va3MpIHtcblx0XHRpZiAocHJldmlvdXNDb21wb25lbnQgPT09IGN1cnJlbnRDb21wb25lbnQpIHtcblx0XHRcdGhvb2tzLl9wZW5kaW5nRWZmZWN0cyA9IFtdO1xuXHRcdFx0Y3VycmVudENvbXBvbmVudC5fcmVuZGVyQ2FsbGJhY2tzID0gW107XG5cdFx0XHRob29rcy5fbGlzdC5mb3JFYWNoKGhvb2tJdGVtID1cdTAwM2Uge1xuXHRcdFx0XHRpZiAoaG9va0l0ZW0uX25leHRWYWx1ZSkge1xuXHRcdFx0XHRcdGhvb2tJdGVtLl92YWx1ZSA9IGhvb2tJdGVtLl9uZXh0VmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aG9va0l0ZW0uX3BlbmRpbmdBcmdzID0gaG9va0l0ZW0uX25leHRWYWx1ZSA9IHVuZGVmaW5lZDtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRob29rcy5fcGVuZGluZ0VmZmVjdHMuZm9yRWFjaChpbnZva2VDbGVhbnVwKTtcblx0XHRcdGhvb2tzLl9wZW5kaW5nRWZmZWN0cy5mb3JFYWNoKGludm9rZUVmZmVjdCk7XG5cdFx0XHRob29rcy5fcGVuZGluZ0VmZmVjdHMgPSBbXTtcblx0XHRcdGN1cnJlbnRJbmRleCA9IDA7XG5cdFx0fVxuXHR9XG5cdHByZXZpb3VzQ29tcG9uZW50ID0gY3VycmVudENvbXBvbmVudDtcbn07XG5cbi8qKiBAdHlwZSB7KHZub2RlOiBpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZSkgPVx1MDAzZSB2b2lkfSAqL1xub3B0aW9ucy5kaWZmZWQgPSB2bm9kZSA9XHUwMDNlIHtcblx0aWYgKG9sZEFmdGVyRGlmZikgb2xkQWZ0ZXJEaWZmKHZub2RlKTtcblxuXHRjb25zdCBjID0gdm5vZGUuX2NvbXBvbmVudDtcblx0aWYgKGMgXHUwMDI2XHUwMDI2IGMuX19ob29rcykge1xuXHRcdGlmIChjLl9faG9va3MuX3BlbmRpbmdFZmZlY3RzLmxlbmd0aCkgYWZ0ZXJQYWludChhZnRlclBhaW50RWZmZWN0cy5wdXNoKGMpKTtcblx0XHRjLl9faG9va3MuX2xpc3QuZm9yRWFjaChob29rSXRlbSA9XHUwMDNlIHtcblx0XHRcdGlmIChob29rSXRlbS5fcGVuZGluZ0FyZ3MpIHtcblx0XHRcdFx0aG9va0l0ZW0uX2FyZ3MgPSBob29rSXRlbS5fcGVuZGluZ0FyZ3M7XG5cdFx0XHR9XG5cdFx0XHRob29rSXRlbS5fcGVuZGluZ0FyZ3MgPSB1bmRlZmluZWQ7XG5cdFx0fSk7XG5cdH1cblx0cHJldmlvdXNDb21wb25lbnQgPSBjdXJyZW50Q29tcG9uZW50ID0gbnVsbDtcbn07XG5cbi8vIFRPRE86IEltcHJvdmUgdHlwaW5nIG9mIGNvbW1pdFF1ZXVlIHBhcmFtZXRlclxuLyoqIEB0eXBlIHsodm5vZGU6IGltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlLCBjb21taXRRdWV1ZTogYW55KSA9XHUwMDNlIHZvaWR9ICovXG5vcHRpb25zLl9jb21taXQgPSAodm5vZGUsIGNvbW1pdFF1ZXVlKSA9XHUwMDNlIHtcblx0Y29tbWl0UXVldWUuc29tZShjb21wb25lbnQgPVx1MDAzZSB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbXBvbmVudC5fcmVuZGVyQ2FsbGJhY2tzLmZvckVhY2goaW52b2tlQ2xlYW51cCk7XG5cdFx0XHRjb21wb25lbnQuX3JlbmRlckNhbGxiYWNrcyA9IGNvbXBvbmVudC5fcmVuZGVyQ2FsbGJhY2tzLmZpbHRlcihjYiA9XHUwMDNlXG5cdFx0XHRcdGNiLl92YWx1ZSA/IGludm9rZUVmZmVjdChjYikgOiB0cnVlXG5cdFx0XHQpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdGNvbW1pdFF1ZXVlLnNvbWUoYyA9XHUwMDNlIHtcblx0XHRcdFx0aWYgKGMuX3JlbmRlckNhbGxiYWNrcykgYy5fcmVuZGVyQ2FsbGJhY2tzID0gW107XG5cdFx0XHR9KTtcblx0XHRcdGNvbW1pdFF1ZXVlID0gW107XG5cdFx0XHRvcHRpb25zLl9jYXRjaEVycm9yKGUsIGNvbXBvbmVudC5fdm5vZGUpO1xuXHRcdH1cblx0fSk7XG5cblx0aWYgKG9sZENvbW1pdCkgb2xkQ29tbWl0KHZub2RlLCBjb21taXRRdWV1ZSk7XG59O1xuXG4vKiogQHR5cGUgeyh2bm9kZTogaW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGUpID1cdTAwM2Ugdm9pZH0gKi9cbm9wdGlvbnMudW5tb3VudCA9IHZub2RlID1cdTAwM2Uge1xuXHRpZiAob2xkQmVmb3JlVW5tb3VudCkgb2xkQmVmb3JlVW5tb3VudCh2bm9kZSk7XG5cblx0Y29uc3QgYyA9IHZub2RlLl9jb21wb25lbnQ7XG5cdGlmIChjIFx1MDAyNlx1MDAyNiBjLl9faG9va3MpIHtcblx0XHRsZXQgaGFzRXJyb3JlZDtcblx0XHRjLl9faG9va3MuX2xpc3QuZm9yRWFjaChzID1cdTAwM2Uge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aW52b2tlQ2xlYW51cChzKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0aGFzRXJyb3JlZCA9IGU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0Yy5fX2hvb2tzID0gdW5kZWZpbmVkO1xuXHRcdGlmIChoYXNFcnJvcmVkKSBvcHRpb25zLl9jYXRjaEVycm9yKGhhc0Vycm9yZWQsIGMuX3Zub2RlKTtcblx0fVxufTtcblxuLyoqXG4gKiBHZXQgYSBob29rJ3Mgc3RhdGUgZnJvbSB0aGUgY3VycmVudENvbXBvbmVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IFRoZSBpbmRleCBvZiB0aGUgaG9vayB0byBnZXRcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlIFRoZSBpbmRleCBvZiB0aGUgaG9vayB0byBnZXRcbiAqIEByZXR1cm5zIHthbnl9XG4gKi9cbmZ1bmN0aW9uIGdldEhvb2tTdGF0ZShpbmRleCwgdHlwZSkge1xuXHRpZiAob3B0aW9ucy5faG9vaykge1xuXHRcdG9wdGlvbnMuX2hvb2soY3VycmVudENvbXBvbmVudCwgaW5kZXgsIGN1cnJlbnRIb29rIHx8IHR5cGUpO1xuXHR9XG5cdGN1cnJlbnRIb29rID0gMDtcblxuXHQvLyBMYXJnZWx5IGluc3BpcmVkIGJ5OlxuXHQvLyAqIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNoYWVsLWtsZWluL2Z1bmN5LmpzL2Jsb2IvZjZiZTczNDY4ZTZlYzQ2YjBmZjVhYTNjYzRjOWJhZjcyYTI5MDI1YS9zcmMvaG9va3MvY29yZV9ob29rcy5tanNcblx0Ly8gKiBodHRwczovL2dpdGh1Yi5jb20vbWljaGFlbC1rbGVpbi9mdW5jeS5qcy9ibG9iLzY1MGJlYWE1OGM0M2MzM2E3NDgyMGEzYzk4YjNjNzA3OWNmMmUzMzMvc3JjL3JlbmRlcmVyLm1qc1xuXHQvLyBPdGhlciBpbXBsZW1lbnRhdGlvbnMgdG8gbG9vayBhdDpcblx0Ly8gKiBodHRwczovL2NvZGVzYW5kYm94LmlvL3MvbW5veDA1cXA4XG5cdGNvbnN0IGhvb2tzID1cblx0XHRjdXJyZW50Q29tcG9uZW50Ll9faG9va3MgfHxcblx0XHQoY3VycmVudENvbXBvbmVudC5fX2hvb2tzID0ge1xuXHRcdFx0X2xpc3Q6IFtdLFxuXHRcdFx0X3BlbmRpbmdFZmZlY3RzOiBbXVxuXHRcdH0pO1xuXG5cdGlmIChpbmRleCBcdTAwM2U9IGhvb2tzLl9saXN0Lmxlbmd0aCkge1xuXHRcdGhvb2tzLl9saXN0LnB1c2goe30pO1xuXHR9XG5cblx0cmV0dXJuIGhvb2tzLl9saXN0W2luZGV4XTtcbn1cblxuLyoqXG4gKiBAdGVtcGxhdGUge3Vua25vd259IFNcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2luZGV4JykuRGlzcGF0Y2hcdTAwM2NpbXBvcnQoJy4vaW5kZXgnKS5TdGF0ZVVwZGF0ZXJcdTAwM2NTXHUwMDNlXHUwMDNlfSBbaW5pdGlhbFN0YXRlXVxuICogQHJldHVybnMge1tTLCAoc3RhdGU6IFMpID1cdTAwM2Ugdm9pZF19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdGF0ZShpbml0aWFsU3RhdGUpIHtcblx0Y3VycmVudEhvb2sgPSAxO1xuXHRyZXR1cm4gdXNlUmVkdWNlcihpbnZva2VPclJldHVybiwgaW5pdGlhbFN0YXRlKTtcbn1cblxuLyoqXG4gKiBAdGVtcGxhdGUge3Vua25vd259IFNcbiAqIEB0ZW1wbGF0ZSB7dW5rbm93bn0gQVxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW5kZXgnKS5SZWR1Y2VyXHUwMDNjUywgQVx1MDAzZX0gcmVkdWNlclxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW5kZXgnKS5EaXNwYXRjaFx1MDAzY2ltcG9ydCgnLi9pbmRleCcpLlN0YXRlVXBkYXRlclx1MDAzY1NcdTAwM2VcdTAwM2V9IGluaXRpYWxTdGF0ZVxuICogQHBhcmFtIHsoaW5pdGlhbFN0YXRlOiBhbnkpID1cdTAwM2Ugdm9pZH0gW2luaXRdXG4gKiBAcmV0dXJucyB7WyBTLCAoc3RhdGU6IFMpID1cdTAwM2Ugdm9pZCBdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVkdWNlcihyZWR1Y2VyLCBpbml0aWFsU3RhdGUsIGluaXQpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5SZWR1Y2VySG9va1N0YXRlfSAqL1xuXHRjb25zdCBob29rU3RhdGUgPSBnZXRIb29rU3RhdGUoY3VycmVudEluZGV4KyssIDIpO1xuXHRob29rU3RhdGUuX3JlZHVjZXIgPSByZWR1Y2VyO1xuXHRpZiAoIWhvb2tTdGF0ZS5fY29tcG9uZW50KSB7XG5cdFx0aG9va1N0YXRlLl92YWx1ZSA9IFtcblx0XHRcdCFpbml0ID8gaW52b2tlT3JSZXR1cm4odW5kZWZpbmVkLCBpbml0aWFsU3RhdGUpIDogaW5pdChpbml0aWFsU3RhdGUpLFxuXG5cdFx0XHRhY3Rpb24gPVx1MDAzZSB7XG5cdFx0XHRcdGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGhvb2tTdGF0ZS5fbmV4dFZhbHVlXG5cdFx0XHRcdFx0PyBob29rU3RhdGUuX25leHRWYWx1ZVswXVxuXHRcdFx0XHRcdDogaG9va1N0YXRlLl92YWx1ZVswXTtcblx0XHRcdFx0Y29uc3QgbmV4dFZhbHVlID0gaG9va1N0YXRlLl9yZWR1Y2VyKGN1cnJlbnRWYWx1ZSwgYWN0aW9uKTtcblxuXHRcdFx0XHRpZiAoY3VycmVudFZhbHVlICE9PSBuZXh0VmFsdWUpIHtcblx0XHRcdFx0XHRob29rU3RhdGUuX25leHRWYWx1ZSA9IFtuZXh0VmFsdWUsIGhvb2tTdGF0ZS5fdmFsdWVbMV1dO1xuXHRcdFx0XHRcdGhvb2tTdGF0ZS5fY29tcG9uZW50LnNldFN0YXRlKHt9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdF07XG5cblx0XHRob29rU3RhdGUuX2NvbXBvbmVudCA9IGN1cnJlbnRDb21wb25lbnQ7XG5cblx0XHRpZiAoIWN1cnJlbnRDb21wb25lbnQuX2hhc1NjdUZyb21Ib29rcykge1xuXHRcdFx0Y3VycmVudENvbXBvbmVudC5faGFzU2N1RnJvbUhvb2tzID0gdHJ1ZTtcblx0XHRcdGxldCBwcmV2U2N1ID0gY3VycmVudENvbXBvbmVudC5zaG91bGRDb21wb25lbnRVcGRhdGU7XG5cdFx0XHRjb25zdCBwcmV2Q1dVID0gY3VycmVudENvbXBvbmVudC5jb21wb25lbnRXaWxsVXBkYXRlO1xuXG5cdFx0XHQvLyBJZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBmb3JjZWQgdXBkYXRlIGBzaG91bGRDb21wb25lbnRVcGRhdGVgIHdpbGxcblx0XHRcdC8vIG5vdCBiZSBjYWxsZWQuIEJ1dCB3ZSB1c2UgdGhhdCB0byB1cGRhdGUgdGhlIGhvb2sgdmFsdWVzLCBzbyB3ZVxuXHRcdFx0Ly8gbmVlZCB0byBjYWxsIGl0LlxuXHRcdFx0Y3VycmVudENvbXBvbmVudC5jb21wb25lbnRXaWxsVXBkYXRlID0gZnVuY3Rpb24gKHAsIHMsIGMpIHtcblx0XHRcdFx0aWYgKHRoaXMuX2ZvcmNlKSB7XG5cdFx0XHRcdFx0bGV0IHRtcCA9IHByZXZTY3U7XG5cdFx0XHRcdFx0Ly8gQ2xlYXIgdG8gYXZvaWQgb3RoZXIgc0NVIGhvb2tzIGZyb20gYmVpbmcgY2FsbGVkXG5cdFx0XHRcdFx0cHJldlNjdSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHR1cGRhdGVIb29rU3RhdGUocCwgcywgYyk7XG5cdFx0XHRcdFx0cHJldlNjdSA9IHRtcDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChwcmV2Q1dVKSBwcmV2Q1dVLmNhbGwodGhpcywgcCwgcywgYyk7XG5cdFx0XHR9O1xuXG5cdFx0XHQvLyBUaGlzIFNDVSBoYXMgdGhlIHB1cnBvc2Ugb2YgYmFpbGluZyBvdXQgYWZ0ZXIgcmVwZWF0ZWQgdXBkYXRlc1xuXHRcdFx0Ly8gdG8gc3RhdGVmdWwgaG9va3MuXG5cdFx0XHQvLyB3ZSBzdG9yZSB0aGUgbmV4dCB2YWx1ZSBpbiBfbmV4dFZhbHVlWzBdIGFuZCBrZWVwIGRvaW5nIHRoYXQgZm9yIGFsbFxuXHRcdFx0Ly8gc3RhdGUgc2V0dGVycywgaWYgd2UgaGF2ZSBuZXh0IHN0YXRlcyBhbmRcblx0XHRcdC8vIGFsbCBuZXh0IHN0YXRlcyB3aXRoaW4gYSBjb21wb25lbnQgZW5kIHVwIGJlaW5nIGVxdWFsIHRvIHRoZWlyIG9yaWdpbmFsIHN0YXRlXG5cdFx0XHQvLyB3ZSBhcmUgc2FmZSB0byBiYWlsIG91dCBmb3IgdGhpcyBzcGVjaWZpYyBjb21wb25lbnQuXG5cdFx0XHQvKipcblx0XHRcdCAqXG5cdFx0XHQgKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50W1wic2hvdWxkQ29tcG9uZW50VXBkYXRlXCJdfVxuXHRcdFx0ICovXG5cdFx0XHQvLyBAdHMtaWdub3JlIC0gV2UgZG9uJ3QgdXNlIFRTIHRvIGRvd250cmFuc3BpbGVcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1pbm5lci1kZWNsYXJhdGlvbnNcblx0XHRcdGZ1bmN0aW9uIHVwZGF0ZUhvb2tTdGF0ZShwLCBzLCBjKSB7XG5cdFx0XHRcdGlmICghaG9va1N0YXRlLl9jb21wb25lbnQuX19ob29rcykgcmV0dXJuIHRydWU7XG5cblx0XHRcdFx0LyoqIEB0eXBlIHsoeDogaW1wb3J0KCcuL2ludGVybmFsJykuSG9va1N0YXRlKSA9XHUwMDNlIHggaXMgaW1wb3J0KCcuL2ludGVybmFsJykuUmVkdWNlckhvb2tTdGF0ZX0gKi9cblx0XHRcdFx0Y29uc3QgaXNTdGF0ZUhvb2sgPSB4ID1cdTAwM2UgISF4Ll9jb21wb25lbnQ7XG5cdFx0XHRcdGNvbnN0IHN0YXRlSG9va3MgPVxuXHRcdFx0XHRcdGhvb2tTdGF0ZS5fY29tcG9uZW50Ll9faG9va3MuX2xpc3QuZmlsdGVyKGlzU3RhdGVIb29rKTtcblxuXHRcdFx0XHRjb25zdCBhbGxIb29rc0VtcHR5ID0gc3RhdGVIb29rcy5ldmVyeSh4ID1cdTAwM2UgIXguX25leHRWYWx1ZSk7XG5cdFx0XHRcdC8vIFdoZW4gd2UgaGF2ZSBubyB1cGRhdGVkIGhvb2tzIGluIHRoZSBjb21wb25lbnQgd2UgaW52b2tlIHRoZSBwcmV2aW91cyBTQ1Ugb3Jcblx0XHRcdFx0Ly8gdHJhdmVyc2UgdGhlIFZET00gdHJlZSBmdXJ0aGVyLlxuXHRcdFx0XHRpZiAoYWxsSG9va3NFbXB0eSkge1xuXHRcdFx0XHRcdHJldHVybiBwcmV2U2N1ID8gcHJldlNjdS5jYWxsKHRoaXMsIHAsIHMsIGMpIDogdHJ1ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFdlIGNoZWNrIHdoZXRoZXIgd2UgaGF2ZSBjb21wb25lbnRzIHdpdGggYSBuZXh0VmFsdWUgc2V0IHRoYXRcblx0XHRcdFx0Ly8gaGF2ZSB2YWx1ZXMgdGhhdCBhcmVuJ3QgZXF1YWwgdG8gb25lIGFub3RoZXIgdGhpcyBwdXNoZXNcblx0XHRcdFx0Ly8gdXMgdG8gdXBkYXRlIGZ1cnRoZXIgZG93biB0aGUgdHJlZVxuXHRcdFx0XHRsZXQgc2hvdWxkVXBkYXRlID0gZmFsc2U7XG5cdFx0XHRcdHN0YXRlSG9va3MuZm9yRWFjaChob29rSXRlbSA9XHUwMDNlIHtcblx0XHRcdFx0XHRpZiAoaG9va0l0ZW0uX25leHRWYWx1ZSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgY3VycmVudFZhbHVlID0gaG9va0l0ZW0uX3ZhbHVlWzBdO1xuXHRcdFx0XHRcdFx0aG9va0l0ZW0uX3ZhbHVlID0gaG9va0l0ZW0uX25leHRWYWx1ZTtcblx0XHRcdFx0XHRcdGhvb2tJdGVtLl9uZXh0VmFsdWUgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRpZiAoY3VycmVudFZhbHVlICE9PSBob29rSXRlbS5fdmFsdWVbMF0pIHNob3VsZFVwZGF0ZSA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRyZXR1cm4gc2hvdWxkVXBkYXRlIHx8IGhvb2tTdGF0ZS5fY29tcG9uZW50LnByb3BzICE9PSBwXG5cdFx0XHRcdFx0PyBwcmV2U2N1XG5cdFx0XHRcdFx0XHQ/IHByZXZTY3UuY2FsbCh0aGlzLCBwLCBzLCBjKVxuXHRcdFx0XHRcdFx0OiB0cnVlXG5cdFx0XHRcdFx0OiBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0Y3VycmVudENvbXBvbmVudC5zaG91bGRDb21wb25lbnRVcGRhdGUgPSB1cGRhdGVIb29rU3RhdGU7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGhvb2tTdGF0ZS5fbmV4dFZhbHVlIHx8IGhvb2tTdGF0ZS5fdmFsdWU7XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FZmZlY3R9IGNhbGxiYWNrXG4gKiBAcGFyYW0ge3Vua25vd25bXX0gYXJnc1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VFZmZlY3QoY2FsbGJhY2ssIGFyZ3MpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FZmZlY3RIb29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCAzKTtcblx0aWYgKCFvcHRpb25zLl9za2lwRWZmZWN0cyBcdTAwMjZcdTAwMjYgYXJnc0NoYW5nZWQoc3RhdGUuX2FyZ3MsIGFyZ3MpKSB7XG5cdFx0c3RhdGUuX3ZhbHVlID0gY2FsbGJhY2s7XG5cdFx0c3RhdGUuX3BlbmRpbmdBcmdzID0gYXJncztcblxuXHRcdGN1cnJlbnRDb21wb25lbnQuX19ob29rcy5fcGVuZGluZ0VmZmVjdHMucHVzaChzdGF0ZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkVmZmVjdH0gY2FsbGJhY2tcbiAqIEBwYXJhbSB7dW5rbm93bltdfSBhcmdzXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUxheW91dEVmZmVjdChjYWxsYmFjaywgYXJncykge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkVmZmVjdEhvb2tTdGF0ZX0gKi9cblx0Y29uc3Qgc3RhdGUgPSBnZXRIb29rU3RhdGUoY3VycmVudEluZGV4KyssIDQpO1xuXHRpZiAoIW9wdGlvbnMuX3NraXBFZmZlY3RzIFx1MDAyNlx1MDAyNiBhcmdzQ2hhbmdlZChzdGF0ZS5fYXJncywgYXJncykpIHtcblx0XHRzdGF0ZS5fdmFsdWUgPSBjYWxsYmFjaztcblx0XHRzdGF0ZS5fcGVuZGluZ0FyZ3MgPSBhcmdzO1xuXG5cdFx0Y3VycmVudENvbXBvbmVudC5fcmVuZGVyQ2FsbGJhY2tzLnB1c2goc3RhdGUpO1xuXHR9XG59XG5cbi8qKiBAdHlwZSB7KGluaXRpYWxWYWx1ZTogdW5rbm93bikgPVx1MDAzZSB1bmtub3dufSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVJlZihpbml0aWFsVmFsdWUpIHtcblx0Y3VycmVudEhvb2sgPSA1O1xuXHRyZXR1cm4gdXNlTWVtbygoKSA9XHUwMDNlICh7IGN1cnJlbnQ6IGluaXRpYWxWYWx1ZSB9KSwgW10pO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSByZWZcbiAqIEBwYXJhbSB7KCkgPVx1MDAzZSBvYmplY3R9IGNyZWF0ZUhhbmRsZVxuICogQHBhcmFtIHt1bmtub3duW119IGFyZ3NcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGNyZWF0ZUhhbmRsZSwgYXJncykge1xuXHRjdXJyZW50SG9vayA9IDY7XG5cdHVzZUxheW91dEVmZmVjdChcblx0XHQoKSA9XHUwMDNlIHtcblx0XHRcdGlmICh0eXBlb2YgcmVmID09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0cmVmKGNyZWF0ZUhhbmRsZSgpKTtcblx0XHRcdFx0cmV0dXJuICgpID1cdTAwM2UgcmVmKG51bGwpO1xuXHRcdFx0fSBlbHNlIGlmIChyZWYpIHtcblx0XHRcdFx0cmVmLmN1cnJlbnQgPSBjcmVhdGVIYW5kbGUoKTtcblx0XHRcdFx0cmV0dXJuICgpID1cdTAwM2UgKHJlZi5jdXJyZW50ID0gbnVsbCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRhcmdzID09IG51bGwgPyBhcmdzIDogYXJncy5jb25jYXQocmVmKVxuXHQpO1xufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7dW5rbm93bn0gVFxuICogQHBhcmFtIHsoKSA9XHUwMDNlIFR9IGZhY3RvcnlcbiAqIEBwYXJhbSB7dW5rbm93bltdfSBhcmdzXG4gKiBAcmV0dXJucyB7VH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lbW8oZmFjdG9yeSwgYXJncykge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLk1lbW9Ib29rU3RhdGVcdTAwM2NUXHUwMDNlfSAqL1xuXHRjb25zdCBzdGF0ZSA9IGdldEhvb2tTdGF0ZShjdXJyZW50SW5kZXgrKywgNyk7XG5cdGlmIChhcmdzQ2hhbmdlZChzdGF0ZS5fYXJncywgYXJncykpIHtcblx0XHRzdGF0ZS5fdmFsdWUgPSBmYWN0b3J5KCk7XG5cdFx0c3RhdGUuX2FyZ3MgPSBhcmdzO1xuXHRcdHN0YXRlLl9mYWN0b3J5ID0gZmFjdG9yeTtcblx0fVxuXG5cdHJldHVybiBzdGF0ZS5fdmFsdWU7XG59XG5cbi8qKlxuICogQHBhcmFtIHsoKSA9XHUwMDNlIHZvaWR9IGNhbGxiYWNrXG4gKiBAcGFyYW0ge3Vua25vd25bXX0gYXJnc1xuICogQHJldHVybnMgeygpID1cdTAwM2Ugdm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNhbGxiYWNrKGNhbGxiYWNrLCBhcmdzKSB7XG5cdGN1cnJlbnRIb29rID0gODtcblx0cmV0dXJuIHVzZU1lbW8oKCkgPVx1MDAzZSBjYWxsYmFjaywgYXJncyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5QcmVhY3RDb250ZXh0fSBjb250ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDb250ZXh0KGNvbnRleHQpIHtcblx0Y29uc3QgcHJvdmlkZXIgPSBjdXJyZW50Q29tcG9uZW50LmNvbnRleHRbY29udGV4dC5faWRdO1xuXHQvLyBXZSBjb3VsZCBza2lwIHRoaXMgY2FsbCBoZXJlLCBidXQgdGhhbiB3ZSdkIG5vdCBjYWxsXG5cdC8vIGBvcHRpb25zLl9ob29rYC4gV2UgbmVlZCB0byBkbyB0aGF0IGluIG9yZGVyIHRvIG1ha2Vcblx0Ly8gdGhlIGRldnRvb2xzIGF3YXJlIG9mIHRoaXMgaG9vay5cblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db250ZXh0SG9va1N0YXRlfSAqL1xuXHRjb25zdCBzdGF0ZSA9IGdldEhvb2tTdGF0ZShjdXJyZW50SW5kZXgrKywgOSk7XG5cdC8vIFRoZSBkZXZ0b29scyBuZWVkcyBhY2Nlc3MgdG8gdGhlIGNvbnRleHQgb2JqZWN0IHRvXG5cdC8vIGJlIGFibGUgdG8gcHVsbCBvZiB0aGUgZGVmYXVsdCB2YWx1ZSB3aGVuIG5vIHByb3ZpZGVyXG5cdC8vIGlzIHByZXNlbnQgaW4gdGhlIHRyZWUuXG5cdHN0YXRlLl9jb250ZXh0ID0gY29udGV4dDtcblx0aWYgKCFwcm92aWRlcikgcmV0dXJuIGNvbnRleHQuX2RlZmF1bHRWYWx1ZTtcblx0Ly8gVGhpcyBpcyBwcm9iYWJseSBub3Qgc2FmZSB0byBjb252ZXJ0IHRvIFwiIVwiXG5cdGlmIChzdGF0ZS5fdmFsdWUgPT0gbnVsbCkge1xuXHRcdHN0YXRlLl92YWx1ZSA9IHRydWU7XG5cdFx0cHJvdmlkZXIuc3ViKGN1cnJlbnRDb21wb25lbnQpO1xuXHR9XG5cdHJldHVybiBwcm92aWRlci5wcm9wcy52YWx1ZTtcbn1cblxuLyoqXG4gKiBEaXNwbGF5IGEgY3VzdG9tIGxhYmVsIGZvciBhIGN1c3RvbSBob29rIGZvciB0aGUgZGV2dG9vbHMgcGFuZWxcbiAqIEB0eXBlIHtcdTAwM2NUXHUwMDNlKHZhbHVlOiBULCBjYj86ICh2YWx1ZTogVCkgPVx1MDAzZSBzdHJpbmcgfCBudW1iZXIpID1cdTAwM2Ugdm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZURlYnVnVmFsdWUodmFsdWUsIGZvcm1hdHRlcikge1xuXHRpZiAob3B0aW9ucy51c2VEZWJ1Z1ZhbHVlKSB7XG5cdFx0b3B0aW9ucy51c2VEZWJ1Z1ZhbHVlKFxuXHRcdFx0Zm9ybWF0dGVyID8gZm9ybWF0dGVyKHZhbHVlKSA6IC8qKiBAdHlwZSB7YW55fSovICh2YWx1ZSlcblx0XHQpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHsoZXJyb3I6IHVua25vd24sIGVycm9ySW5mbzogaW1wb3J0KCdwcmVhY3QnKS5FcnJvckluZm8pID1cdTAwM2Ugdm9pZH0gY2JcbiAqIEByZXR1cm5zIHtbdW5rbm93biwgKCkgPVx1MDAzZSB2b2lkXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUVycm9yQm91bmRhcnkoY2IpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FcnJvckJvdW5kYXJ5SG9va1N0YXRlfSAqL1xuXHRjb25zdCBzdGF0ZSA9IGdldEhvb2tTdGF0ZShjdXJyZW50SW5kZXgrKywgMTApO1xuXHRjb25zdCBlcnJTdGF0ZSA9IHVzZVN0YXRlKCk7XG5cdHN0YXRlLl92YWx1ZSA9IGNiO1xuXHRpZiAoIWN1cnJlbnRDb21wb25lbnQuY29tcG9uZW50RGlkQ2F0Y2gpIHtcblx0XHRjdXJyZW50Q29tcG9uZW50LmNvbXBvbmVudERpZENhdGNoID0gKGVyciwgZXJyb3JJbmZvKSA9XHUwMDNlIHtcblx0XHRcdGlmIChzdGF0ZS5fdmFsdWUpIHN0YXRlLl92YWx1ZShlcnIsIGVycm9ySW5mbyk7XG5cdFx0XHRlcnJTdGF0ZVsxXShlcnIpO1xuXHRcdH07XG5cdH1cblx0cmV0dXJuIFtcblx0XHRlcnJTdGF0ZVswXSxcblx0XHQoKSA9XHUwMDNlIHtcblx0XHRcdGVyclN0YXRlWzFdKHVuZGVmaW5lZCk7XG5cdFx0fVxuXHRdO1xufVxuXG4vKiogQHR5cGUgeygpID1cdTAwM2Ugc3RyaW5nfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUlkKCkge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLklkSG9va1N0YXRlfSAqL1xuXHRjb25zdCBzdGF0ZSA9IGdldEhvb2tTdGF0ZShjdXJyZW50SW5kZXgrKywgMTEpO1xuXHRpZiAoIXN0YXRlLl92YWx1ZSkge1xuXHRcdC8vIEdyYWIgZWl0aGVyIHRoZSByb290IG5vZGUgb3IgdGhlIG5lYXJlc3QgYXN5bmMgYm91bmRhcnkgbm9kZS5cblx0XHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbC5kJykuVk5vZGV9ICovXG5cdFx0bGV0IHJvb3QgPSBjdXJyZW50Q29tcG9uZW50Ll92bm9kZTtcblx0XHR3aGlsZSAocm9vdCAhPT0gbnVsbCBcdTAwMjZcdTAwMjYgIXJvb3QuX21hc2sgXHUwMDI2XHUwMDI2IHJvb3QuX3BhcmVudCAhPT0gbnVsbCkge1xuXHRcdFx0cm9vdCA9IHJvb3QuX3BhcmVudDtcblx0XHR9XG5cblx0XHRsZXQgbWFzayA9IHJvb3QuX21hc2sgfHwgKHJvb3QuX21hc2sgPSBbMCwgMF0pO1xuXHRcdHN0YXRlLl92YWx1ZSA9ICdQJyArIG1hc2tbMF0gKyAnLScgKyBtYXNrWzFdKys7XG5cdH1cblxuXHRyZXR1cm4gc3RhdGUuX3ZhbHVlO1xufVxuXG4vKipcbiAqIEFmdGVyIHBhaW50IGVmZmVjdHMgY29uc3VtZXIuXG4gKi9cbmZ1bmN0aW9uIGZsdXNoQWZ0ZXJQYWludEVmZmVjdHMoKSB7XG5cdGxldCBjb21wb25lbnQ7XG5cdHdoaWxlICgoY29tcG9uZW50ID0gYWZ0ZXJQYWludEVmZmVjdHMuc2hpZnQoKSkpIHtcblx0XHRpZiAoIWNvbXBvbmVudC5fcGFyZW50RG9tIHx8ICFjb21wb25lbnQuX19ob29rcykgY29udGludWU7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbXBvbmVudC5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cy5mb3JFYWNoKGludm9rZUNsZWFudXApO1xuXHRcdFx0Y29tcG9uZW50Ll9faG9va3MuX3BlbmRpbmdFZmZlY3RzLmZvckVhY2goaW52b2tlRWZmZWN0KTtcblx0XHRcdGNvbXBvbmVudC5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cyA9IFtdO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdGNvbXBvbmVudC5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cyA9IFtdO1xuXHRcdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCBjb21wb25lbnQuX3Zub2RlKTtcblx0XHR9XG5cdH1cbn1cblxubGV0IEhBU19SQUYgPSB0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09ICdmdW5jdGlvbic7XG5cbi8qKlxuICogU2NoZWR1bGUgYSBjYWxsYmFjayB0byBiZSBpbnZva2VkIGFmdGVyIHRoZSBicm93c2VyIGhhcyBhIGNoYW5jZSB0byBwYWludCBhIG5ldyBmcmFtZS5cbiAqIERvIHRoaXMgYnkgY29tYmluaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZSAockFGKSArIHNldFRpbWVvdXQgdG8gaW52b2tlIGEgY2FsbGJhY2sgYWZ0ZXJcbiAqIHRoZSBuZXh0IGJyb3dzZXIgZnJhbWUuXG4gKlxuICogQWxzbywgc2NoZWR1bGUgYSB0aW1lb3V0IGluIHBhcmFsbGVsIHRvIHRoZSB0aGUgckFGIHRvIGVuc3VyZSB0aGUgY2FsbGJhY2sgaXMgaW52b2tlZFxuICogZXZlbiBpZiBSQUYgZG9lc24ndCBmaXJlIChmb3IgZXhhbXBsZSBpZiB0aGUgYnJvd3NlciB0YWIgaXMgbm90IHZpc2libGUpXG4gKlxuICogQHBhcmFtIHsoKSA9XHUwMDNlIHZvaWR9IGNhbGxiYWNrXG4gKi9cbmZ1bmN0aW9uIGFmdGVyTmV4dEZyYW1lKGNhbGxiYWNrKSB7XG5cdGNvbnN0IGRvbmUgPSAoKSA9XHUwMDNlIHtcblx0XHRjbGVhclRpbWVvdXQodGltZW91dCk7XG5cdFx0aWYgKEhBU19SQUYpIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZik7XG5cdFx0c2V0VGltZW91dChjYWxsYmFjayk7XG5cdH07XG5cdGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KGRvbmUsIFJBRl9USU1FT1VUKTtcblxuXHRsZXQgcmFmO1xuXHRpZiAoSEFTX1JBRikge1xuXHRcdHJhZiA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShkb25lKTtcblx0fVxufVxuXG4vLyBOb3RlOiBpZiBzb21lb25lIHVzZWQgb3B0aW9ucy5kZWJvdW5jZVJlbmRlcmluZyA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSxcbi8vIHRoZW4gZWZmZWN0cyB3aWxsIEFMV0FZUyBydW4gb24gdGhlIE5FWFQgZnJhbWUgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBvbmUsIGluY3VycmluZyBhIH4xNm1zIGRlbGF5LlxuLy8gUGVyaGFwcyB0aGlzIGlzIG5vdCBzdWNoIGEgYmlnIGRlYWwuXG4vKipcbiAqIFNjaGVkdWxlIGFmdGVyUGFpbnRFZmZlY3RzIGZsdXNoIGFmdGVyIHRoZSBicm93c2VyIHBhaW50c1xuICogQHBhcmFtIHtudW1iZXJ9IG5ld1F1ZXVlTGVuZ3RoXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gYWZ0ZXJQYWludChuZXdRdWV1ZUxlbmd0aCkge1xuXHRpZiAobmV3UXVldWVMZW5ndGggPT09IDEgfHwgcHJldlJhZiAhPT0gb3B0aW9ucy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIHtcblx0XHRwcmV2UmFmID0gb3B0aW9ucy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU7XG5cdFx0KHByZXZSYWYgfHwgYWZ0ZXJOZXh0RnJhbWUpKGZsdXNoQWZ0ZXJQYWludEVmZmVjdHMpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Ib29rU3RhdGV9IGhvb2tcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBpbnZva2VDbGVhbnVwKGhvb2spIHtcblx0Ly8gQSBob29rIGNsZWFudXAgY2FuIGludHJvZHVjZSBhIGNhbGwgdG8gcmVuZGVyIHdoaWNoIGNyZWF0ZXMgYSBuZXcgcm9vdCwgdGhpcyB3aWxsIGNhbGwgb3B0aW9ucy52bm9kZVxuXHQvLyBhbmQgbW92ZSB0aGUgY3VycmVudENvbXBvbmVudCBhd2F5LlxuXHRjb25zdCBjb21wID0gY3VycmVudENvbXBvbmVudDtcblx0bGV0IGNsZWFudXAgPSBob29rLl9jbGVhbnVwO1xuXHRpZiAodHlwZW9mIGNsZWFudXAgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdGhvb2suX2NsZWFudXAgPSB1bmRlZmluZWQ7XG5cdFx0Y2xlYW51cCgpO1xuXHR9XG5cblx0Y3VycmVudENvbXBvbmVudCA9IGNvbXA7XG59XG5cbi8qKlxuICogSW52b2tlIGEgSG9vaydzIGVmZmVjdFxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FZmZlY3RIb29rU3RhdGV9IGhvb2tcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBpbnZva2VFZmZlY3QoaG9vaykge1xuXHQvLyBBIGhvb2sgY2FsbCBjYW4gaW50cm9kdWNlIGEgY2FsbCB0byByZW5kZXIgd2hpY2ggY3JlYXRlcyBhIG5ldyByb290LCB0aGlzIHdpbGwgY2FsbCBvcHRpb25zLnZub2RlXG5cdC8vIGFuZCBtb3ZlIHRoZSBjdXJyZW50Q29tcG9uZW50IGF3YXkuXG5cdGNvbnN0IGNvbXAgPSBjdXJyZW50Q29tcG9uZW50O1xuXHRob29rLl9jbGVhbnVwID0gaG9vay5fdmFsdWUoKTtcblx0Y3VycmVudENvbXBvbmVudCA9IGNvbXA7XG59XG5cbi8qKlxuICogQHBhcmFtIHt1bmtub3duW119IG9sZEFyZ3NcbiAqIEBwYXJhbSB7dW5rbm93bltdfSBuZXdBcmdzXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gYXJnc0NoYW5nZWQob2xkQXJncywgbmV3QXJncykge1xuXHRyZXR1cm4gKFxuXHRcdCFvbGRBcmdzIHx8XG5cdFx0b2xkQXJncy5sZW5ndGggIT09IG5ld0FyZ3MubGVuZ3RoIHx8XG5cdFx0bmV3QXJncy5zb21lKChhcmcsIGluZGV4KSA9XHUwMDNlIGFyZyAhPT0gb2xkQXJnc1tpbmRleF0pXG5cdCk7XG59XG5cbi8qKlxuICogQHRlbXBsYXRlIEFyZ1xuICogQHBhcmFtIHtBcmd9IGFyZ1xuICogQHBhcmFtIHsoYXJnOiBBcmcpID1cdTAwM2UgYW55fSBmXG4gKiBAcmV0dXJucyB7YW55fVxuICovXG5mdW5jdGlvbiBpbnZva2VPclJldHVybihhcmcsIGYpIHtcblx0cmV0dXJuIHR5cGVvZiBmID09ICdmdW5jdGlvbicgPyBmKGFyZykgOiBmO1xufVxuIiwgImV4cG9ydCBjb25zdCBlbnN1cmVBcnJheTogPFQ+KFxuICB2YWx1ZTogdW5rbm93bixcbiAgbmFtZTogc3RyaW5nLFxuKSA9PiBhc3NlcnRzIHZhbHVlIGlzIFRbXSA9ICh2YWx1ZSwgbmFtZSkgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybjtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihgXCIke25hbWV9XCIgbXVzdCBiZSBhbiBhcnJheSBidXQgYWN0dWFsIGlzIFwiJHt2YWx1ZX1cImApO1xufTtcbiIsICJpbXBvcnQgeyBMaW5lLCBTY3JhcGJveCB9IGZyb20gXCIuLi8uLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxubGV0IGlzTGF0ZXN0RGF0YSA9IGZhbHNlO1xubGV0IGxpbmVzOiB0eXBlb2Ygc2NyYXBib3guUGFnZS5saW5lcyA9IG51bGw7XG5cbnNjcmFwYm94LmFkZExpc3RlbmVyKFwibGluZXM6Y2hhbmdlZFwiLCAoKSA9PiBpc0xhdGVzdERhdGEgPSBmYWxzZSk7XG5zY3JhcGJveC5hZGRMaXN0ZW5lcihcImxheW91dDpjaGFuZ2VkXCIsICgpID0+IGlzTGF0ZXN0RGF0YSA9IGZhbHNlKTtcblxuLyoqIHNjcmFwYm94LlBhZ2UubGluZXPjgpJjYWNoZeOBl+OBpuWPluW+l+OBmeOCi1xuICpcbiAqIHNjcmFwYm94LlBhZ2UubGluZXPjga7nlJ/miJDjgavjga/mmYLplpPjgYzjgYvjgYvjgovjga7jgafjgIHlrp/pmpvjgavlv4XopoHjgavjgarjgovjgb7jgaflkbzjgbPlh7rjgZXjgarjgYTjgojjgYbjgavjgZnjgotcbiAqXG4gKiBAcmV0dXJuIGBzY3JhcGJveC5QYWdlLmxpbmVzYOOBqOWQjOOBmOOAguW4uOOBq+acgOaWsOOBruOCguOBruOBjOi/lOOBleOCjOOCi1xuICovXG5leHBvcnQgY29uc3QgZ2V0Q2FjaGVkTGluZXMgPSAoKTogcmVhZG9ubHkgTGluZVtdIHwgbnVsbCA9PiB7XG4gIGlmICghaXNMYXRlc3REYXRhKSB7XG4gICAgbGluZXMgPSBzY3JhcGJveC5QYWdlLmxpbmVzO1xuICAgIGlzTGF0ZXN0RGF0YSA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIGxpbmVzO1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLy8gVGhlc2UgY29kZSBhcmUgYmFzZWQgb24gaHR0cHM6Ly9kZW5vLmxhbmQveC91bmtub3dudXRpbEB2MS4xLjAvZW5zdXJlLnRzXG5cbmV4cG9ydCBjb25zdCBlbnN1cmVIVE1MRGl2RWxlbWVudDogKFxuICB2YWx1ZTogdW5rbm93bixcbiAgbmFtZTogc3RyaW5nLFxuKSA9PiBhc3NlcnRzIHZhbHVlIGlzIEhUTUxEaXZFbGVtZW50ID0gKFxuICB2YWx1ZSxcbiAgbmFtZSxcbikgPT4ge1xuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCkgcmV0dXJuO1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgIGBcIiR7bmFtZX1cIiBtdXN0IGJlIEhUTUxEaXZFbGVtZW10IGJ1dCBhY3R1YWwgaXMgXCIke3ZhbHVlfVwiYCxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBlbnN1cmVIVE1MQW5jaG9yRWxlbWVudDogKFxuICB2YWx1ZTogdW5rbm93bixcbiAgbmFtZTogc3RyaW5nLFxuKSA9PiBhc3NlcnRzIHZhbHVlIGlzIEhUTUxBbmNob3JFbGVtZW50ID0gKFxuICB2YWx1ZSxcbiAgbmFtZSxcbikgPT4ge1xuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBIVE1MQW5jaG9yRWxlbWVudCkgcmV0dXJuO1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgIGBcIiR7bmFtZX1cIiBtdXN0IGJlIEhUTUxBbmNob3JFbGVtZW10IGJ1dCBhY3R1YWwgaXMgXCIke3ZhbHVlfVwiYCxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBlbnN1cmVIVE1MVGV4dEFyZWFFbGVtZW50OiAoXG4gIHZhbHVlOiB1bmtub3duLFxuICBuYW1lOiBzdHJpbmcsXG4pID0+IGFzc2VydHMgdmFsdWUgaXMgSFRNTFRleHRBcmVhRWxlbWVudCA9IChcbiAgdmFsdWUsXG4gIG5hbWUsXG4pID0+IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgSFRNTFRleHRBcmVhRWxlbWVudCkgcmV0dXJuO1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgIGBcIiR7bmFtZX1cIiBtdXN0IGJlIEhUTUxUZXh0QXJlYUVsZW1lbnQgYnV0IGFjdHVhbCBpcyBcIiR7dmFsdWV9XCJgLFxuICApO1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuaW1wb3J0IHtcbiAgZW5zdXJlSFRNTEFuY2hvckVsZW1lbnQsXG4gIGVuc3VyZUhUTUxEaXZFbGVtZW50LFxuICBlbnN1cmVIVE1MVGV4dEFyZWFFbGVtZW50LFxufSBmcm9tIFwiLi9lbnN1cmUudHNcIjtcblxuZXhwb3J0IGNvbnN0IGVkaXRvciA9ICgpOiBIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZCA9PlxuICBjaGVja0Rpdihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImVkaXRvclwiKSwgXCJkaXYjZWRpdG9yXCIpO1xuZXhwb3J0IGNvbnN0IGxpbmVzID0gKCk6IEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkID0+XG4gIGNoZWNrRGl2KFxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsaW5lc1wiKS5pdGVtKDApLFxuICAgIFwiZGl2LmxpbmVzXCIsXG4gICk7XG5leHBvcnQgY29uc3QgY29tcHV0ZUxpbmUgPSAoKTogSFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQgPT5cbiAgY2hlY2tEaXYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb21wdXRlLWxpbmVcIiksIFwiZGl2I2NvbXB1dGUtbGluZVwiKTtcbmV4cG9ydCBjb25zdCBjdXJzb3JMaW5lID0gKCk6IEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkID0+XG4gIGNoZWNrRGl2KFxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJjdXJzb3ItbGluZVwiKS5pdGVtKDApLFxuICAgIFwiZGl2LmN1cnNvci1saW5lXCIsXG4gICk7XG5leHBvcnQgY29uc3QgdGV4dElucHV0ID0gKCk6IEhUTUxUZXh0QXJlYUVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCB0ZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGV4dC1pbnB1dFwiKTtcbiAgaWYgKCF0ZXh0YXJlYSkgcmV0dXJuO1xuICBlbnN1cmVIVE1MVGV4dEFyZWFFbGVtZW50KHRleHRhcmVhLCBcInRleHRhcmVhI3RleHQtaW5wdXRcIik7XG4gIHJldHVybiB0ZXh0YXJlYTtcbn07XG5leHBvcnQgY29uc3QgY3Vyc29yID0gKCk6IEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkID0+XG4gIGNoZWNrRGl2KFxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJjdXJzb3JcIikuaXRlbSgwKSxcbiAgICBcImRpdi5jdXJzb3JcIixcbiAgKTtcbmV4cG9ydCBjb25zdCBzZWxlY3Rpb25zID0gKCk6IEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkID0+XG4gIGNoZWNrRGl2KFxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJzZWxlY3Rpb25zXCIpPy5bMF0sXG4gICAgXCJkaXYuc2VsZWN0aW9uc1wiLFxuICApO1xuZXhwb3J0IGNvbnN0IGdyaWQgPSAoKTogSFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQgPT5cbiAgY2hlY2tEaXYoXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInJlbGF0ZWQtcGFnZS1saXN0IGNsZWFyZml4XCIpWzBdXG4gICAgICA/LmdldEVsZW1lbnRzQnlDbGFzc05hbWU/LihcImdyaWRcIik/Lml0ZW0oMCksXG4gICAgXCIucmVsYXRlZC1wYWdlLWxpc3QuY2xlYXJmaXggZGl2LmdyaWRcIixcbiAgKTtcbmV4cG9ydCBjb25zdCBwb3B1cE1lbnUgPSAoKTogSFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQgPT5cbiAgY2hlY2tEaXYoXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInBvcHVwLW1lbnVcIik/LlswXSxcbiAgICBcImRpdi5wb3B1cC1tZW51XCIsXG4gICk7XG5leHBvcnQgY29uc3QgcGFnZU1lbnUgPSAoKTogSFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQgPT5cbiAgY2hlY2tEaXYoXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInBhZ2UtbWVudVwiKT8uWzBdLFxuICAgIFwiZGl2LnBhZ2UtbWVudVwiLFxuICApO1xuZXhwb3J0IGNvbnN0IHBhZ2VJbmZvTWVudSA9ICgpOiBIVE1MQW5jaG9yRWxlbWVudCB8IHVuZGVmaW5lZCA9PlxuICBjaGVja0FuY2hvcihcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInBhZ2UtaW5mby1tZW51XCIpLFxuICAgIFwiYSNwYWdlLWluZm8tbWVudVwiLFxuICApO1xuZXhwb3J0IGNvbnN0IHBhZ2VFZGl0TWVudSA9ICgpOiBIVE1MQW5jaG9yRWxlbWVudCB8IHVuZGVmaW5lZCA9PlxuICBjaGVja0FuY2hvcihcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInBhZ2UtZWRpdC1tZW51XCIpLFxuICAgIFwiYSNwYWdlLWVkaXQtbWVudVwiLFxuICApO1xuZXhwb3J0IGNvbnN0IHBhZ2VFZGl0QnV0dG9ucyA9ICgpOiBIVE1MQW5jaG9yRWxlbWVudFtdID0+XG4gIEFycmF5LmZyb20oXG4gICAgcGFnZUVkaXRNZW51KCk/Lm5leHRFbGVtZW50U2libGluZz8uZ2V0RWxlbWVudHNCeVRhZ05hbWU/LihcImFcIikgPz8gW10sXG4gICk7XG5leHBvcnQgY29uc3QgcmFuZG9tSnVtcEJ1dHRvbiA9ICgpOiBIVE1MQW5jaG9yRWxlbWVudCB8IHVuZGVmaW5lZCA9PlxuICBjaGVja0FuY2hvcihcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicmFuZG9tLWp1bXAtYnV0dG9uXCIpLml0ZW0oMCksXG4gICAgXCJhI3JhbmRvbS1qdW1wLWJ1dHRvblwiLFxuICApO1xuZXhwb3J0IGNvbnN0IHBhZ2VDdXN0b21CdXR0b25zID0gKCk6IEhUTUxBbmNob3JFbGVtZW50W10gPT5cbiAgQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicGFnZS1tZW51LWV4dGVuc2lvblwiKSkuZmxhdE1hcChcbiAgICAoZGl2KSA9PiB7XG4gICAgICBjb25zdCBhID0gZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYVwiKS5pdGVtKDApO1xuICAgICAgcmV0dXJuIGEgPyBbYV0gOiBbXTtcbiAgICB9LFxuICApO1xuZXhwb3J0IGNvbnN0IHN0YXR1c0JhciA9ICgpOiBIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZCA9PlxuICBjaGVja0RpdihcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwic3RhdHVzLWJhclwiKT8uWzBdLFxuICAgIFwiZGl2LnN0YXR1cy1iYXJcIixcbiAgKTtcblxuY29uc3QgY2hlY2tEaXYgPSAoZGl2OiBFbGVtZW50IHwgbnVsbCwgbmFtZTogc3RyaW5nKSA9PiB7XG4gIGlmICghZGl2KSByZXR1cm47XG4gIGVuc3VyZUhUTUxEaXZFbGVtZW50KGRpdiwgbmFtZSk7XG4gIHJldHVybiBkaXY7XG59O1xuXG5jb25zdCBjaGVja0FuY2hvciA9IChhOiBFbGVtZW50IHwgbnVsbCwgbmFtZTogc3RyaW5nKSA9PiB7XG4gIGlmICghYSkgcmV0dXJuO1xuICBlbnN1cmVIVE1MQW5jaG9yRWxlbWVudChhLCBuYW1lKTtcbiAgcmV0dXJuIGE7XG59O1xuIiwgImltcG9ydCB7IGxpbmVzIH0gZnJvbSBcIi4vZG9tLnRzXCI7XG5pbXBvcnQgeyBCYXNlTGluZSB9IGZyb20gXCIuLi8uLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5cbi8qKiBTY3JhcGJveOWGhemDqOOBruacrOaWh+ODh+ODvOOCv+OBruWPgueFp+OCkuWPluW+l+OBmeOCi1xuICpcbiAqIGBzY3JhcGJveC5QYWdlLmxpbmVzYOOBr2RlZXAgY2xvbmXjgZXjgozjgabjgZfjgb7jgYbjga7jgafjgIFwZXJmb3JtYW5jZeOBruWVj+mhjOOBjOeZuueUn+OBmeOCi+WgtOWQiOOBjOOBguOCi1xuICpcbiAqIOOBquOCi+OBueOBj+ODh+ODvOOCv+OBrmNsb25l44KS55m655Sf44GV44Gb44Gf44GP44Gq44GE5aC05ZCI44Gr44GT44Gh44KJ44KS5L2/44GGXG4gKlxuICog5rOo5oSPXG4gKiAtIOWPgueFp+OCkuOBneOBruOBvuOBvui/lOOBl+OBpuOBhOOCi+OBoOOBkeOBquOBruOBp+OAgeS4rei6q+OCkuabuOOBjeaPm+OBiOOCieOCjOOBpuOBl+OBvuOBhuOAguWei+Wumue+qeOBp+WkieabtOS4jeiDveOBq+OBr+OBl+OBpuOBguOCi+OBjOOAgUpT57WM55Sx44Gq44KJ44GE44GP44KJ44Gn44KC5pON5L2c44Gn44GN44KLXG4gKiAtIGBzY3JhcGJveC5QYWdlLmxpbmVzYOOBqOOBr+mBleOBo+OBpuani+aWh+ino+aekOaDheWgseOBjOS7mOS4juOBleOCjOOBquOBhFxuICovXG5leHBvcnQgY29uc3QgdGFrZUludGVybmFsTGluZXMgPSAoKTogcmVhZG9ubHkgQmFzZUxpbmVbXSA9PiB7XG4gIGNvbnN0IGxpbmVzRWwgPSBsaW5lcygpO1xuICBpZiAoIWxpbmVzRWwpIHtcbiAgICB0aHJvdyBFcnJvcihgZGl2LmxpbmVzIGlzIG5vdCBmb3VuZC5gKTtcbiAgfVxuXG4gIGNvbnN0IHJlYWN0S2V5ID0gT2JqZWN0LmtleXMobGluZXNFbClcbiAgICAuZmluZCgoa2V5KSA9PiBrZXkuc3RhcnRzV2l0aChcIl9fcmVhY3RGaWJlclwiKSk7XG4gIGlmICghcmVhY3RLZXkpIHtcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgICdkaXYubGluZXMgbXVzdCBoYXMgdGhlIHByb3BlcnR5IHdob3NlIG5hbWUgc3RhcnRzIHdpdGggXCJfX3JlYWN0RmliZXJcIicsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmUgRE9N44KS54Sh55CG55+i55CGb2JqZWN044Go44GX44Gm5omx44Gj44Gm44GE44KLXG4gIHJldHVybiAobGluZXNFbFtyZWFjdEtleV0gYXMgUmVhY3RGaWJlcikucmV0dXJuLnN0YXRlTm9kZS5wcm9wc1xuICAgIC5saW5lcyBhcyBjb25zdDtcbn07XG5cbmludGVyZmFjZSBSZWFjdEZpYmVyIHtcbiAgcmV0dXJuOiB7XG4gICAgc3RhdGVOb2RlOiB7XG4gICAgICBwcm9wczoge1xuICAgICAgICBsaW5lczogQmFzZUxpbmVbXTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gXCIuL2lzLnRzXCI7XG5cbi8qKiDjgqTjg7Pjg4fjg7Pjg4jmlbDjgpLmlbDjgYjjgosgKi9cbmV4cG9ydCBjb25zdCBnZXRJbmRlbnRDb3VudCA9ICh0ZXh0OiBzdHJpbmcpOiBudW1iZXIgPT5cbiAgdGV4dC5tYXRjaCgvXihcXHMqKS8pPy5bMV0/Lmxlbmd0aCA/PyAwO1xuXG4vKiog5oyH5a6a44GX44Gf6KGM44Gu6YWN5LiL44Gr44GC44KL6KGM44Gu5pWw44KS6L+U44GZXG4gKlxuICogQHBhcmFtIGluZGV4IOaMh+WumuOBl+OBn+OBhOihjOOBruihjOeVquWPt1xuICogQHBhcmFtIGxpbmVzIOihjOOBruODquOCueODiFxuICovXG5leHBvcnQgY29uc3QgZ2V0SW5kZW50TGluZUNvdW50ID0gKFxuICBpbmRleDogbnVtYmVyLFxuICBsaW5lczogcmVhZG9ubHkgc3RyaW5nW10gfCByZWFkb25seSB7IHRleHQ6IHN0cmluZyB9W10sXG4pOiBudW1iZXIgPT4ge1xuICBjb25zdCBiYXNlID0gZ2V0SW5kZW50Q291bnQoZ2V0VGV4dChpbmRleCwgbGluZXMpKTtcbiAgbGV0IGNvdW50ID0gMDtcbiAgd2hpbGUgKFxuICAgIGluZGV4ICsgY291bnQgKyAxIDwgbGluZXMubGVuZ3RoICYmXG4gICAgKGdldEluZGVudENvdW50KGdldFRleHQoaW5kZXggKyBjb3VudCArIDEsIGxpbmVzKSkpID4gYmFzZVxuICApIHtcbiAgICBjb3VudCsrO1xuICB9XG4gIHJldHVybiBjb3VudDtcbn07XG5cbmNvbnN0IGdldFRleHQgPSAoXG4gIGluZGV4OiBudW1iZXIsXG4gIGxpbmVzOiByZWFkb25seSBzdHJpbmdbXSB8IHJlYWRvbmx5IHsgdGV4dDogc3RyaW5nIH1bXSxcbikgPT4ge1xuICBjb25zdCBsaW5lID0gbGluZXNbaW5kZXhdO1xuICByZXR1cm4gaXNTdHJpbmcobGluZSkgPyBsaW5lIDogbGluZS50ZXh0O1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuaW1wb3J0IHsgaXNOb25lLCBpc051bWJlciwgaXNTdHJpbmcgfSBmcm9tIFwiLi4vLi4vaXMudHNcIjtcbmltcG9ydCB7IGVuc3VyZUFycmF5IH0gZnJvbSBcIi4uLy4uL2Vuc3VyZS50c1wiO1xuaW1wb3J0IHsgZ2V0Q2FjaGVkTGluZXMgfSBmcm9tIFwiLi9nZXRDYWNoZWRMaW5lcy50c1wiO1xuaW1wb3J0IHsgdGFrZUludGVybmFsTGluZXMgfSBmcm9tIFwiLi90YWtlSW50ZXJuYWxMaW5lcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBCYXNlTGluZSwgTGluZSB9IGZyb20gXCIuLi8uLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyBsaW5lcyB9IGZyb20gXCIuL2RvbS50c1wiO1xuaW1wb3J0ICogYXMgVGV4dCBmcm9tIFwiLi4vLi4vdGV4dC50c1wiO1xuXG4vKiogR2V0IHRoZSBsaW5lIGlkIGZyb20gdmFsdWVcbiAqXG4gKiBJZiB0aGUgbGluZSBpZCBjYW4ndCBiZSBmb3VuZCwgcmV0dXJuIGB1bmRlZmluZWRgXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gdmFsdWUgdGhlIGxpbmUgaWQgb2Ygd2hpY2ggeW91IHdhbnQgdG8gZ2V0XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRMaW5lSWQgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PihcbiAgdmFsdWU/OiBudW1iZXIgfCBzdHJpbmcgfCBULFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGlzTm9uZSh2YWx1ZSkpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgLy8g6KGM55Wq5Y+344Gu44Go44GNXG4gIGlmIChpc051bWJlcih2YWx1ZSkpIHJldHVybiBnZXRCYXNlTGluZSh2YWx1ZSk/LmlkO1xuICAvLyDooYxJROOBruOBqOOBjVxuICBpZiAoaXNTdHJpbmcodmFsdWUpKSByZXR1cm4gdmFsdWUuc3RhcnRzV2l0aChcIkxcIikgPyB2YWx1ZS5zbGljZSgxKSA6IHZhbHVlO1xuXG4gIC8vIOihjOOBrkRPTeOBoOOBo+OBn+OBqOOBjVxuICBpZiAodmFsdWUuY2xhc3NMaXN0LmNvbnRhaW5zKFwibGluZVwiKSkgcmV0dXJuIHZhbHVlLmlkLnNsaWNlKDEpO1xuICAvLyDooYzjga7lrZDopoHntKDjgaDjgaPjgZ/jgajjgY1cbiAgY29uc3QgbGluZSA9IHZhbHVlLmNsb3Nlc3QoXCIubGluZVwiKTtcbiAgaWYgKGxpbmUpIHJldHVybiBsaW5lLmlkLnNsaWNlKDEpO1xuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG4vKiogR2V0IHRoZSBsaW5lIG51bWJlciBmcm9tIHZhbHVlXG4gKlxuICogSWYgdGhlIGxpbmUgbnVtYmVyIGNhbid0IGJlIGZvdW5kLCByZXR1cm4gYHVuZGVmaW5lZGBcbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSB2YWx1ZSB0aGUgbGluZSBudW1iZXIgb2Ygd2hpY2ggeW91IHdhbnQgdG8gZ2V0XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRMaW5lTm8gPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PihcbiAgdmFsdWU/OiBudW1iZXIgfCBzdHJpbmcgfCBULFxuKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGlzTm9uZSh2YWx1ZSkpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgLy8g6KGM55Wq5Y+344Gu44Go44GNXG4gIGlmIChpc051bWJlcih2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgLy8g6KGMSUQgb3IgRE9N44Gu44Go44GNXG4gIGNvbnN0IGlkID0gZ2V0TGluZUlkKHZhbHVlKTtcbiAgcmV0dXJuIGlkID8gdGFrZUludGVybmFsTGluZXMoKS5maW5kSW5kZXgoKGxpbmUpID0+IGxpbmUuaWQgPT09IGlkKSA6IC0xO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExpbmUgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PihcbiAgdmFsdWU/OiBudW1iZXIgfCBzdHJpbmcgfCBULFxuKTogTGluZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChpc05vbmUodmFsdWUpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIC8vIOihjOeVquWPt+OBruOBqOOBjVxuICBpZiAoaXNOdW1iZXIodmFsdWUpKSByZXR1cm4gZ2V0TGluZXMoKVt2YWx1ZV07XG4gIC8vIOihjElEIG9yIERPTeOBruOBqOOBjVxuICBjb25zdCBpZCA9IGdldExpbmVJZCh2YWx1ZSk7XG4gIHJldHVybiBpZCA/IGdldExpbmVzKCkuZmluZCgobGluZSkgPT4gbGluZS5pZCA9PT0gaWQpIDogdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEJhc2VMaW5lID0gPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oXG4gIHZhbHVlPzogbnVtYmVyIHwgc3RyaW5nIHwgVCxcbik6IEJhc2VMaW5lIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGlzTm9uZSh2YWx1ZSkpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgLy8g6KGM55Wq5Y+344Gu44Go44GNXG4gIGlmIChpc051bWJlcih2YWx1ZSkpIHJldHVybiB0YWtlSW50ZXJuYWxMaW5lcygpW3ZhbHVlXTtcbiAgLy8g6KGMSUQgb3IgRE9N44Gu44Go44GNXG4gIGNvbnN0IGlkID0gZ2V0TGluZUlkKHZhbHVlKTtcbiAgcmV0dXJuIGlkID8gdGFrZUludGVybmFsTGluZXMoKS5maW5kKChsaW5lKSA9PiBsaW5lLmlkID09PSBpZCkgOiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGluZURPTSA9IDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KFxuICB2YWx1ZT86IG51bWJlciB8IHN0cmluZyB8IFQsXG4pOiBIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChpc0xpbmVET00odmFsdWUpKSByZXR1cm4gdmFsdWU7XG5cbiAgY29uc3QgaWQgPSBnZXRMaW5lSWQodmFsdWUpO1xuICBpZiAoaXNOb25lKGlkKSkgcmV0dXJuIGlkO1xuICBjb25zdCBsaW5lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYEwke2lkfWApO1xuICBpZiAoaXNOb25lKGxpbmUpKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gbGluZSBhcyBIVE1MRGl2RWxlbWVudDtcbn07XG5leHBvcnQgY29uc3QgaXNMaW5lRE9NID0gKGRvbTogdW5rbm93bik6IGRvbSBpcyBIVE1MRGl2RWxlbWVudCA9PlxuICBkb20gaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCAmJiBkb20uY2xhc3NMaXN0LmNvbnRhaW5zKFwibGluZVwiKTtcblxuZXhwb3J0IGNvbnN0IGdldExpbmVDb3VudCA9ICgpOiBudW1iZXIgPT4gdGFrZUludGVybmFsTGluZXMoKS5sZW5ndGg7XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5lcyA9ICgpOiByZWFkb25seSBMaW5lW10gPT4ge1xuICBjb25zdCBsaW5lcyA9IGdldENhY2hlZExpbmVzKCk7XG4gIGVuc3VyZUFycmF5PExpbmU+KGxpbmVzLCBcInNjcmFwYm94LlBhZ2UubGluZXNcIik7XG4gIHJldHVybiBsaW5lcztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0ID0gPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oXG4gIHZhbHVlPzogbnVtYmVyIHwgc3RyaW5nIHwgVCxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChpc05vbmUodmFsdWUpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIC8vIOaVsOWtl+OBqOaWh+Wtl+WIl+OBr+ihjOOBqOOBl+OBpuaJseOBhlxuICBpZiAoaXNOdW1iZXIodmFsdWUpIHx8IGlzU3RyaW5nKHZhbHVlKSkgcmV0dXJuIGdldEJhc2VMaW5lKHZhbHVlKT8udGV4dDtcbiAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHJldHVybjtcbiAgaWYgKGlzTGluZURPTSh2YWx1ZSkpIHJldHVybiBnZXRCYXNlTGluZSh2YWx1ZSk/LnRleHQ7XG4gIC8vIOaWh+Wtl+OBrkRPTeOBoOOBo+OBn+OBqOOBjVxuICBpZiAodmFsdWUuY2xhc3NMaXN0LmNvbnRhaW5zKFwiY2hhci1pbmRleFwiKSkge1xuICAgIHJldHVybiB2YWx1ZS50ZXh0Q29udGVudCA/PyB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gZGl2LmxpbmVz44KS5ZCr44KAKOikh+aVsOOBrmRpdi5saW5l44KS5ZCr44KAKeWgtOWQiOOBr+WFqOOBpuOBruaWh+Wtl+WIl+OCkui/lOOBmVxuICBpZiAoXG4gICAgdmFsdWUuY2xhc3NMaXN0LmNvbnRhaW5zKFwibGluZVwiKSB8fFxuICAgIHZhbHVlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJsaW5lc1wiKT8uWzBdXG4gICkge1xuICAgIHJldHVybiB0YWtlSW50ZXJuYWxMaW5lcygpLm1hcCgoeyB0ZXh0IH0pID0+IHRleHQpLmpvaW4oXCJcXG5cIik7XG4gIH1cbiAgLy/kuK3jgavlkKvjgb7jgozjgabjgYTjgovmloflrZfjga7liJfnlarlj7fjgpLlhajjgablj5blvpfjgZfjgIHjgZ3jgozjgavlr77lv5zjgZnjgovmloflrZfliJfjgpLov5TjgZlcbiAgY29uc3QgY2hhcnMgPSBbXSBhcyBudW1iZXJbXTtcbiAgY29uc3QgbGluZSA9IGdldEJhc2VMaW5lKHZhbHVlKTtcbiAgaWYgKGlzTm9uZShsaW5lKSkgcmV0dXJuO1xuICBmb3IgKGNvbnN0IGRvbSBvZiBnZXRDaGFycyh2YWx1ZSkpIHtcbiAgICBjaGFycy5wdXNoKGdldEluZGV4KGRvbSkpO1xuICB9XG4gIHJldHVybiBsaW5lLnRleHQuc2xpY2UoTWF0aC5taW4oLi4uY2hhcnMpLCBNYXRoLm1heCguLi5jaGFycykgKyAxKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFeHRlcm5hbExpbmsgPSAoZG9tOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgbGluayA9IGRvbS5jbG9zZXN0KFwiLmxpbmtcIik7XG4gIGlmIChpc05vbmUobGluaykpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiBsaW5rIGFzIEhUTUxFbGVtZW50O1xufTtcbmV4cG9ydCBjb25zdCBnZXRJbnRlcm5hbExpbmsgPSAoZG9tOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgbGluayA9IGRvbS5jbG9zZXN0KFwiLnBhZ2UtbGlua1wiKTtcbiAgaWYgKGlzTm9uZShsaW5rKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIGxpbmsgYXMgSFRNTEVsZW1lbnQ7XG59O1xuZXhwb3J0IGNvbnN0IGdldExpbmsgPSAoZG9tOiBIVE1MRWxlbWVudCkgPT4ge1xuICBjb25zdCBsaW5rID0gZG9tLmNsb3Nlc3QoXCIubGluaywgLnBhZ2UtbGlua1wiKTtcbiAgaWYgKGlzTm9uZShsaW5rKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIGxpbmsgYXMgSFRNTEVsZW1lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybXVsYSA9IChkb206IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBmb3JtdWxhID0gZG9tLmNsb3Nlc3QoXCIuZm9ybXVsYVwiKTtcbiAgaWYgKGlzTm9uZShmb3JtdWxhKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIGZvcm11bGEgYXMgSFRNTEVsZW1lbnQ7XG59O1xuZXhwb3J0IGNvbnN0IGdldE5leHRMaW5lID0gPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oXG4gIHZhbHVlPzogbnVtYmVyIHwgc3RyaW5nIHwgVCxcbik6IExpbmUgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBpbmRleCA9IGdldExpbmVObyh2YWx1ZSk7XG4gIGlmIChpc05vbmUoaW5kZXgpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIHJldHVybiBnZXRMaW5lKGluZGV4ICsgMSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UHJldkxpbmUgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PihcbiAgdmFsdWU/OiBudW1iZXIgfCBzdHJpbmcgfCBULFxuKTogTGluZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGluZGV4ID0gZ2V0TGluZU5vKHZhbHVlKTtcbiAgaWYgKGlzTm9uZShpbmRleCkpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIGdldExpbmUoaW5kZXggLSAxKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIZWFkTGluZURPTSA9ICgpOiBIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGxpbmUgPSBsaW5lcygpPy5maXJzdEVsZW1lbnRDaGlsZDtcbiAgaWYgKGlzTm9uZShsaW5lKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIGxpbmUgYXMgSFRNTERpdkVsZW1lbnQ7XG59O1xuZXhwb3J0IGNvbnN0IGdldFRhaWxMaW5lRE9NID0gKCk6IEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgbGluZSA9IGxpbmVzKCk/Lmxhc3RFbGVtZW50Q2hpbGQ7XG4gIGlmIChpc05vbmUobGluZSkpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiBsaW5lIGFzIEhUTUxEaXZFbGVtZW50O1xufTtcbmV4cG9ydCBjb25zdCBnZXRJbmRlbnRDb3VudCA9IDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KFxuICB2YWx1ZT86IG51bWJlciB8IHN0cmluZyB8IFQsXG4pOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCB0ZXh0ID0gZ2V0VGV4dCh2YWx1ZSk7XG4gIGlmIChpc05vbmUodGV4dCkpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiBUZXh0LmdldEluZGVudENvdW50KHRleHQpO1xufTtcbi8qKiDmjIflrprjgZfjgZ/ooYzjga7phY3kuIvjgavjgYLjgovooYzjga7mlbDjgpLov5TjgZlcbiAqXG4gKiBAcGFyYW0gdmFsdWUg5oyH5a6a44GX44Gf44GE6KGM44Gu6KGM55Wq5Y+344GL6KGMSUTjgYtET01cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEluZGVudExpbmVDb3VudCA9IDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KFxuICB2YWx1ZT86IG51bWJlciB8IHN0cmluZyB8IFQsXG4pOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBpbmRleCA9IGdldExpbmVObyh2YWx1ZSk7XG4gIGlmIChpc05vbmUoaW5kZXgpKSByZXR1cm47XG4gIHJldHVybiBUZXh0LmdldEluZGVudExpbmVDb3VudChpbmRleCwgZ2V0TGluZXMoKSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24qIGdldENoYXJzPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oXG4gIHZhbHVlOiBULFxuKTogR2VuZXJhdG9yPEhUTUxTcGFuRWxlbWVudCwgdm9pZCwgdW5rbm93bj4ge1xuICBjb25zdCBjaGFycyA9IHZhbHVlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJjaGFyLWluZGV4XCIpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgeWllbGQgY2hhcnNbMF0gYXMgSFRNTFNwYW5FbGVtZW50O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBpc0NoYXJET00gPSAoZG9tOiB1bmtub3duKTogZG9tIGlzIEhUTUxTcGFuRWxlbWVudCA9PiB7XG4gIHJldHVybiBkb20gaW5zdGFuY2VvZiBIVE1MU3BhbkVsZW1lbnQgJiYgZG9tLmNsYXNzTGlzdC5jb250YWlucyhcImNoYXItaW5kZXhcIik7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW5kZXggPSAoZG9tOiBIVE1MU3BhbkVsZW1lbnQpOiBudW1iZXIgPT4ge1xuICBpZiAoIWlzQ2hhckRPTShkb20pKSB0aHJvdyBFcnJvcihcIkEgY2hhciBET00gaXMgcmVxdWlyZWQuXCIpO1xuXG4gIGNvbnN0IGluZGV4ID0gZG9tLmNsYXNzTmFtZS5tYXRjaCgvYy0oXFxkKykvKT8uWzFdO1xuICBpZiAoaXNOb25lKGluZGV4KSkgdGhyb3cgRXJyb3IoJy5jaGFyLWluZGV4IG11c3QgaGF2ZSBcIi5jLXtcXFxcZH1cIicpO1xuICByZXR1cm4gcGFyc2VJbnQoaW5kZXgpO1xufTtcbmV4cG9ydCBjb25zdCBnZXRIZWFkQ2hhckRPTSA9IChcbiAgZG9tPzogSFRNTEVsZW1lbnQsXG4pOiBIVE1MU3BhbkVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBjaGFyID0gZG9tPy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPy4oXCJjLTBcIik/LlswXTtcbiAgcmV0dXJuIGlzQ2hhckRPTShjaGFyKSA/IGNoYXIgOiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGFpbENoYXJET00gPSAoXG4gIGRvbT86IEhUTUxFbGVtZW50LFxuKTogSFRNTFNwYW5FbGVtZW50IHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgY2hhciA9IGRvbT8ucXVlcnlTZWxlY3RvcihcIi5jaGFyLWluZGV4Omxhc3Qtb2YtdHlwZVwiKTtcbiAgcmV0dXJuIGlzQ2hhckRPTShjaGFyKSA/IGNoYXIgOiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q2hhckRPTSA9IDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KFxuICBsaW5lOiBzdHJpbmcgfCBudW1iZXIgfCBULFxuICBwb3M6IG51bWJlcixcbik6IEhUTUxTcGFuRWxlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGNoYXIgPSBnZXRMaW5lRE9NKGxpbmUpPy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPy4oYGMtJHtwb3N9YCk/LlswXTtcbiAgcmV0dXJuIGlzQ2hhckRPTShjaGFyKSA/IGNoYXIgOiB1bmRlZmluZWQ7XG59O1xuZXhwb3J0IGNvbnN0IGdldERPTUZyb21Qb2ludCA9IChcbiAgeDogbnVtYmVyLFxuICB5OiBudW1iZXIsXG4pOiB7IGNoYXI/OiBIVE1MU3BhbkVsZW1lbnQ7IGxpbmU/OiBIVE1MRGl2RWxlbWVudCB9ID0+IHtcbiAgY29uc3QgdGFyZ2V0cyA9IGRvY3VtZW50LmVsZW1lbnRzRnJvbVBvaW50KHgsIHkpO1xuICBjb25zdCBjaGFyID0gdGFyZ2V0cy5maW5kKCh0YXJnZXQpID0+IGlzQ2hhckRPTSh0YXJnZXQpKTtcbiAgY29uc3QgbGluZSA9IHRhcmdldHMuZmluZCgodGFyZ2V0KSA9PiBpc0xpbmVET00odGFyZ2V0KSk7XG4gIHJldHVybiB7XG4gICAgY2hhcjogaXNOb25lKGNoYXIpID8gdW5kZWZpbmVkIDogY2hhciBhcyBIVE1MU3BhbkVsZW1lbnQsXG4gICAgbGluZTogaXNOb25lKGxpbmUpID8gdW5kZWZpbmVkIDogbGluZSBhcyBIVE1MRGl2RWxlbWVudCxcbiAgfTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cblxuaW1wb3J0IHsgdGV4dElucHV0IH0gZnJvbSBcIi4vZG9tLnRzXCI7XG5cbi8qKiB0aGUgb3B0aW9ucyBmb3IgYHByZXNzKClgICovXG5leHBvcnQgaW50ZXJmYWNlIFByZXNzT3B0aW9ucyB7XG4gIHNoaWZ0S2V5PzogYm9vbGVhbjtcbiAgY3RybEtleT86IGJvb2xlYW47XG4gIGFsdEtleT86IGJvb2xlYW47XG4gIG1ldGFLZXk/OiBib29sZWFuO1xuICBub01vZGlmaWVkS2V5cz86IGJvb2xlYW47XG59XG5cbi8qKiBKYXZhU2NyaXB044GL44KJ5Lu75oSP44Gu44Kt44O85oq85LiLZXZlbnTjgpLnmbrooYzjgZnjgotcbiAqXG4gKiBTY3JhcGJveOOBq+OCreODvOWFpeWKm+WRveS7pOOCkumAgeOCi+mam+OBq+S9v+OBhuOAglxuICog44GT44Gu6Zai5pWw44Gv44Kt44O85YWl5YqbZXZlbnTjgaflkbzjgbPlh7rjgZXjgozjgZ9zY3JhcGJveOOBrmV2ZW50IGxpc3RlbmVy44Gu5Yem55CG44GM57WC44KP44KL44G+44Gn5ZCM5pyf55qE44Gr44OW44Ot44OD44Kv44GV44KM44KL44KI44GG44GgXG4gKlxuICogQHBhcmFtIGtleSDmirzjgZfjgZ/jgYTjgq3jg7zjga7lkI3liY1cbiAqIEBwYXJhbSBwcmVzc09wdGlvbnMgb3B0aW9uc1xuICovXG5leHBvcnQgY29uc3QgcHJlc3MgPSAoXG4gIGtleTogS2V5TmFtZSxcbiAgcHJlc3NPcHRpb25zPzogUHJlc3NPcHRpb25zLFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHsgbm9Nb2RpZmllZEtleXMgPSBmYWxzZSwgLi4ucmVzdCB9ID0gcHJlc3NPcHRpb25zID8/IHt9O1xuICBjb25zdCBvcHRpb25zID0ge1xuICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICBrZXlDb2RlOiBLRVlDT0RFX01BUFtrZXldLFxuICAgIC4uLihub01vZGlmaWVkS2V5cyA/IHt9IDogeyAuLi5yZXN0IH0pLFxuICB9O1xuICBjb25zdCB0ZXh0YXJlYSA9IHRleHRJbnB1dCgpO1xuICBpZiAoIXRleHRhcmVhKSB0aHJvdyBFcnJvcihcIiN0ZXh0LWlucHV0IG11c3QgZXhpc3QuXCIpO1xuICB0ZXh0YXJlYS5kaXNwYXRjaEV2ZW50KG5ldyBLZXlib2FyZEV2ZW50KFwia2V5ZG93blwiLCBvcHRpb25zKSk7XG4gIHRleHRhcmVhLmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoXCJrZXl1cFwiLCBvcHRpb25zKSk7XG59O1xuXG5leHBvcnQgdHlwZSBLZXlOYW1lID0ga2V5b2YgdHlwZW9mIEtFWUNPREVfTUFQO1xuY29uc3QgS0VZQ09ERV9NQVAgPSB7XG4gIEJhY2tzcGFjZTogOCxcbiAgVGFiOiA5LFxuICBFbnRlcjogMTMsXG4gIERlbGV0ZTogNDYsXG4gIEVzY2FwZTogMjcsXG4gIFwiIFwiOiAzMixcbiAgUGFnZVVwOiAzMyxcbiAgUGFnZURvd246IDM0LFxuICBFbmQ6IDM1LFxuICBIb21lOiAzNixcbiAgQXJyb3dMZWZ0OiAzNyxcbiAgQXJyb3dVcDogMzgsXG4gIEFycm93UmlnaHQ6IDM5LFxuICBBcnJvd0Rvd246IDQwLFxuICAvLyBhbHBoYWJldHNcbiAgYTogNjUsXG4gIEE6IDY1LFxuICBiOiA2NixcbiAgQjogNjYsXG4gIGM6IDY3LFxuICBDOiA2NyxcbiAgZDogNjgsXG4gIEQ6IDY4LFxuICBlOiA2OSxcbiAgRTogNjksXG4gIGY6IDcwLFxuICBGOiA3MCxcbiAgZzogNzEsXG4gIEc6IDcxLFxuICBoOiA3MixcbiAgSDogNzIsXG4gIGk6IDczLFxuICBJOiA3MyxcbiAgajogNzQsXG4gIEo6IDc0LFxuICBrOiA3NSxcbiAgSzogNzUsXG4gIGw6IDc2LFxuICBMOiA3NixcbiAgbTogNzcsXG4gIE06IDc3LFxuICBuOiA3OCxcbiAgTjogNzgsXG4gIG86IDc5LFxuICBPOiA3OSxcbiAgcDogODAsXG4gIFA6IDgwLFxuICBxOiA4MSxcbiAgUTogODEsXG4gIHI6IDgyLFxuICBSOiA4MixcbiAgczogODMsXG4gIFM6IDgzLFxuICB0OiA4NCxcbiAgVDogODQsXG4gIHU6IDg1LFxuICBVOiA4NSxcbiAgdjogODYsXG4gIFY6IDg2LFxuICB3OiA4NyxcbiAgVzogODcsXG4gIHg6IDg4LFxuICBYOiA4OCxcbiAgeTogODksXG4gIFk6IDg5LFxuICB6OiA5MCxcbiAgWjogOTAsXG4gIC8vIG51bWJlclxuICAwOiA0OCxcbiAgMTogNDksXG4gIDI6IDUwLFxuICAzOiA1MSxcbiAgNDogNTIsXG4gIDU6IDUzLFxuICA2OiA1NCxcbiAgNzogNTUsXG4gIDg6IDU2LFxuICA5OiA1NyxcbiAgLy8gZnVuY3Rpb24ga2V5c1xuICBGMTogMTEzLFxuICBGMjogMTE0LFxuICBGMzogMTE1LFxuICBGNDogMTE2LFxuICBGNTogMTE3LFxuICBGNjogMTE4LFxuICBGNzogMTE5LFxuICBGODogMTIwLFxuICBGOTogMTIxLFxuICBGMTA6IDEyMixcbiAgRjExOiAxMjMsXG4gIEYxMjogMTI0LFxuICAvLyDoqJjlj7dcbiAgXCI6XCI6IDE4NixcbiAgXCIqXCI6IDE4NixcbiAgXCI7XCI6IDE4NyxcbiAgXCIrXCI6IDE4NyxcbiAgXCItXCI6IDE4OSxcbiAgXCI9XCI6IDE4OSxcbiAgXCIuXCI6IDE5MCxcbiAgXCI+XCI6IDE5MCxcbiAgXCIvXCI6IDE5MSxcbiAgXCI/XCI6IDE5MSxcbiAgXCJAXCI6IDE5MixcbiAgXCJgXCI6IDE5MixcbiAgXCJbXCI6IDIxOSxcbiAgXCJ7XCI6IDIxOSxcbiAgXCJcXFxcXCI6IDIyMCxcbiAgXCJ8XCI6IDIyMCxcbiAgXCJdXCI6IDIyMSxcbiAgXCJ9XCI6IDIyMSxcbiAgXCJeXCI6IDIyMixcbiAgXCJ+XCI6IDIyMixcbiAgXCJfXCI6IDIyNiwgLy8gU2hpZnTjgarjgZfjga4yMjbjga9cXOOBp+OAgVxc44Go5Yy65Yil44GM44Gk44GL44Gq44GEXG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbmltcG9ydCB7IHNsZWVwIH0gZnJvbSBcIi4uLy4uL3NsZWVwLnRzXCI7XG5cbi8qKiB0aGUgb3B0aW9ucyBmb3IgYGNsaWNrKClgICovXG5leHBvcnQgaW50ZXJmYWNlIENsaWNrT3B0aW9ucyB7XG4gIGJ1dHRvbj86IG51bWJlcjtcbiAgWDogbnVtYmVyO1xuICBZOiBudW1iZXI7XG4gIHNoaWZ0S2V5PzogYm9vbGVhbjtcbiAgY3RybEtleT86IGJvb2xlYW47XG4gIGFsdEtleT86IGJvb2xlYW47XG59XG5cbi8qKiBFbXVsYXRlIGNsaWNrIGV2ZW50IHNlcXVlbmNlcyAqL1xuZXhwb3J0IGNvbnN0IGNsaWNrID0gYXN5bmMgKFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgb3B0aW9uczogQ2xpY2tPcHRpb25zLFxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IG1vdXNlT3B0aW9uczogTW91c2VFdmVudEluaXQgPSB7XG4gICAgYnV0dG9uOiBvcHRpb25zLmJ1dHRvbiA/PyAwLFxuICAgIGNsaWVudFg6IG9wdGlvbnMuWCxcbiAgICBjbGllbnRZOiBvcHRpb25zLlksXG4gICAgYnViYmxlczogdHJ1ZSxcbiAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgIHNoaWZ0S2V5OiBvcHRpb25zLnNoaWZ0S2V5LFxuICAgIGN0cmxLZXk6IG9wdGlvbnMuY3RybEtleSxcbiAgICBhbHRLZXk6IG9wdGlvbnMuYWx0S2V5LFxuICAgIHZpZXc6IHdpbmRvdyxcbiAgfTtcbiAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwibW91c2Vkb3duXCIsIG1vdXNlT3B0aW9ucykpO1xuICBlbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJtb3VzZXVwXCIsIG1vdXNlT3B0aW9ucykpO1xuICBlbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiLCBtb3VzZU9wdGlvbnMpKTtcblxuICAvLyBTY3JhcGJveOOBrlJlYWN044Gu5Yem55CG44GM57WC44KP44KL44G+44Gn5bCR44GX5b6F44GkXG4gIC8vIOW+heOBoeaZgumWk+OBr+aEn+immuOBp+axuuOCgeOBn1xuICBhd2FpdCBzbGVlcCgxMCk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEhvbGREb3duT3B0aW9ucyBleHRlbmRzIENsaWNrT3B0aW9ucyB7XG4gIGhvbGRpbmc/OiBudW1iZXI7XG59XG5cbi8qKiBFbXVsYXRlIGxvbmcgdGFwIGV2ZW50IHNlcXVlbmNlICovXG5leHBvcnQgY29uc3QgaG9sZERvd24gPSBhc3luYyAoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBvcHRpb25zOiBIb2xkRG93bk9wdGlvbnMsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgdG91Y2ggPSBuZXcgVG91Y2goe1xuICAgIGlkZW50aWZpZXI6IDAsXG4gICAgdGFyZ2V0OiBlbGVtZW50LFxuICAgIGNsaWVudFg6IG9wdGlvbnMuWCxcbiAgICBjbGllbnRZOiBvcHRpb25zLlksXG4gICAgcGFnZVg6IG9wdGlvbnMuWCArIGdsb2JhbFRoaXMuc2Nyb2xsWCxcbiAgICBwYWdlWTogb3B0aW9ucy5ZICsgZ2xvYmFsVGhpcy5zY3JvbGxZLFxuICB9KTtcbiAgY29uc3QgbW91c2VPcHRpb25zID0ge1xuICAgIGJ1dHRvbjogb3B0aW9ucy5idXR0b24gPz8gMCxcbiAgICBjbGllbnRYOiBvcHRpb25zLlgsXG4gICAgY2xpZW50WTogb3B0aW9ucy5ZLFxuICAgIGNoYW5nZWRUb3VjaGVzOiBbdG91Y2hdLFxuICAgIHRvdWNoZXM6IFt0b3VjaF0sXG4gICAgYnViYmxlczogdHJ1ZSxcbiAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgIHNoaWZ0S2V5OiBvcHRpb25zLnNoaWZ0S2V5LFxuICAgIGN0cmxLZXk6IG9wdGlvbnMuY3RybEtleSxcbiAgICBhbHRLZXk6IG9wdGlvbnMuYWx0S2V5LFxuICAgIHZpZXc6IHdpbmRvdyxcbiAgfTtcbiAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBUb3VjaEV2ZW50KFwidG91Y2hzdGFydFwiLCBtb3VzZU9wdGlvbnMpKTtcbiAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwibW91c2Vkb3duXCIsIG1vdXNlT3B0aW9ucykpO1xuICBhd2FpdCBzbGVlcChvcHRpb25zLmhvbGRpbmcgPz8gMTAwMCk7XG4gIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudChcIm1vdXNldXBcIiwgbW91c2VPcHRpb25zKSk7XG4gIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgVG91Y2hFdmVudChcInRvdWNoZW5kXCIsIG1vdXNlT3B0aW9ucykpO1xuICBlbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiLCBtb3VzZU9wdGlvbnMpKTtcblxuICAvLyBTY3JhcGJveOOBrlJlYWN044Gu5Yem55CG44GM57WC44KP44KL44G+44Gn5bCR44GX5b6F44GkXG4gIC8vIOW+heOBoeaZgumWk+OBr+aEn+immuOBp+axuuOCgeOBn1xuICBhd2FpdCBzbGVlcCgxMCk7XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbmltcG9ydCB7IHRleHRJbnB1dCB9IGZyb20gXCIuL2RvbS50c1wiO1xuXG4vKiogZWRpdG9y5LiK44Gu5L2N572u5oOF5aCxICovXG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uIHtcbiAgLyoqIOihjOaVsCAqLyBsaW5lOiBudW1iZXI7XG4gIC8qKiDkvZXmloflrZfnm67jga7lvozjgo3jgavjgYTjgovjgYsgKi8gY2hhcjogbnVtYmVyO1xufVxuXG4vKiog6YG45oqe56+E5Zuy44KS6KGo44GZ44OH44O844K/XG4gKlxuICog6YG45oqe56+E5Zuy44GM44Gq44GE44Go44GN44Gv44CB6ZaL5aeL44Go57WC5LqG44GM5ZCM44GY5L2N572u44Gr44Gq44KLXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmFuZ2Uge1xuICAvKiog6YG45oqe56+E5Zuy44Gu6ZaL5aeL5L2N572uICovIHN0YXJ0OiBQb3NpdGlvbjtcbiAgLyoqIOmBuOaKnuevhOWbsuOBrue1guS6huS9jee9riAqLyBlbmQ6IFBvc2l0aW9uO1xufVxuXG4vKiogI3RleHQtaW5wdXTjgpLmp4vnr4njgZfjgabjgYTjgotSZWFjdCBDb21wb25lbnTjgavlkKvjgb7jgozjgovjgqvjg7zjgr3jg6vjga7mg4XloLEgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZXRJbmZvIHtcbiAgLyoqIOOCq+ODvOOCveODq+OBruS9jee9riAqLyBwb3NpdGlvbjogUG9zaXRpb247XG4gIC8qKiDpgbjmip7nr4Tlm7LkuK3jga7mloflrZfliJcgKi8gc2VsZWN0ZWRUZXh0OiBzdHJpbmc7XG4gIC8qKiDpgbjmip7nr4Tlm7Ljga7kvY3nva4gKi8gc2VsZWN0aW9uUmFuZ2U6IFJhbmdlO1xufVxuXG5pbnRlcmZhY2UgUmVhY3RGaWJlciB7XG4gIHJldHVybjoge1xuICAgIHJldHVybjoge1xuICAgICAgc3RhdGVOb2RlOiB7XG4gICAgICAgIHByb3BzOiBDYXJldEluZm87XG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG5cbi8qKiDnj77lnKjjga7jgqvjg7zjgr3jg6vjgajpgbjmip7nr4Tlm7Ljga7kvY3nva7mg4XloLHjgpLlj5blvpfjgZnjgotcbiAqXG4gKiBAcmV0dXJuIOOCq+ODvOOCveODq+OBqOmBuOaKnuevhOWbsuOBruaDheWgsVxuICogQHRocm93cyB7RXJyb3J9ICN0ZXh0LWlucHV044GoUmVhY3QgQ29tcG9uZW5044Gu6Zqg44GXcHJvcGVydHnjgYzopovjgaTjgYvjgonjgarjgYvjgaPjgZ9cbiAqL1xuZXhwb3J0IGNvbnN0IGNhcmV0ID0gKCk6IENhcmV0SW5mbyA9PiB7XG4gIGNvbnN0IHRleHRhcmVhID0gdGV4dElucHV0KCk7XG4gIGlmICghdGV4dGFyZWEpIHtcbiAgICB0aHJvdyBFcnJvcihgI3RleHQtaW5wdXQgaXMgbm90IGZvdW5kLmApO1xuICB9XG5cbiAgY29uc3QgcmVhY3RLZXkgPSBPYmplY3Qua2V5cyh0ZXh0YXJlYSlcbiAgICAuZmluZCgoa2V5KSA9PiBrZXkuc3RhcnRzV2l0aChcIl9fcmVhY3RGaWJlclwiKSk7XG4gIGlmICghcmVhY3RLZXkpIHtcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgICdkaXYuY3Vyc29yIG11c3QgaGFzIHRoZSBwcm9wZXJ0eSB3aG9zZSBuYW1lIHN0YXJ0cyB3aXRoIFwiX19yZWFjdEZpYmVyXCInLFxuICAgICk7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlIERPTeOCkueEoeeQhuefoueQhm9iamVjdOOBqOOBl+OBpuaJseOBo+OBpuOBhOOCi1xuICByZXR1cm4gKHRleHRhcmVhW1xuICAgIHJlYWN0S2V5XG4gIF0gYXMgUmVhY3RGaWJlcikucmV0dXJuLnJldHVybi5zdGF0ZU5vZGUucHJvcHM7XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbmV4cG9ydCBjb25zdCBpc0hlaWdodFZpZXdhYmxlID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHsgdG9wLCBib3R0b20gfSA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHJldHVybiB0b3AgPj0gMCAmJiBib3R0b20gPD0gZ2xvYmFsVGhpcy5pbm5lckhlaWdodDtcbn07XG4iLCAiZXhwb3J0IGZ1bmN0aW9uKiByYW5nZShzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikge1xuICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xuICAgIHlpZWxkIGk7XG4gIH1cbn1cbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuXG5pbXBvcnQgeyBwcmVzcyB9IGZyb20gXCIuL3ByZXNzLnRzXCI7XG5pbXBvcnQgeyBjbGljaywgaG9sZERvd24gfSBmcm9tIFwiLi9jbGljay50c1wiO1xuaW1wb3J0IHtcbiAgZ2V0Q2hhckRPTSxcbiAgZ2V0SGVhZENoYXJET00sXG4gIGdldEhlYWRMaW5lRE9NLFxuICBnZXRMaW5lQ291bnQsXG4gIGdldExpbmVET00sXG4gIGdldExpbmVObyxcbiAgZ2V0VGFpbExpbmVET00sXG4gIGdldFRleHQsXG59IGZyb20gXCIuL25vZGUudHNcIjtcbmltcG9ydCB7IGNhcmV0IH0gZnJvbSBcIi4vY2FyZXQudHNcIjtcbmltcG9ydCB7IGlzSGVpZ2h0Vmlld2FibGUgfSBmcm9tIFwiLi9pc0hlaWdodFZpZXdhYmxlLnRzXCI7XG5pbXBvcnQgeyByYW5nZSB9IGZyb20gXCIuLi8uLi9yYW5nZS50c1wiO1xuXG4vKiogQGRlcHJlY2F0ZWRcbiAqIOOCq+ODvOOCveODq+ihjOOBruihjOacq+OCkumVt+aKvOOBl+OBl+OBpmZvY3Vz44KS5b6X44KLXG4gKlxuICogbW9iaWxl54mIc2NyYXBib3jnlKhcbiAqXG4gKiBAcGFyYW0gW2hvbGRpbmc9MTAwMF0g6ZW35oq844GX44GZ44KL5pmC6ZaTKOODn+ODquenkuWNmOS9jSlcbiAqL1xuZXhwb3J0IGNvbnN0IGZvY3VzRW5kID0gYXN5bmMgKGhvbGRpbmcgPSAxMDAwKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHRhcmdldCA9IGdldExpbmVET00oY2FyZXQoKS5wb3NpdGlvbi5saW5lKVxuICAgID8uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcbiAgICAgIFwidGV4dFwiLFxuICAgICk/LlswXSBhcyAoSFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQpO1xuICBpZiAoIXRhcmdldCkgdGhyb3cgRXJyb3IoXCIubGluZSAudGFyZ2V0IGNhbid0IGJlIGZvdW5kLlwiKTtcbiAgaWYgKCFpc0hlaWdodFZpZXdhYmxlKHRhcmdldCkpIHRhcmdldC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiBcImNlbnRlclwiIH0pO1xuXG4gIGNvbnN0IHsgcmlnaHQsIHRvcCwgaGVpZ2h0IH0gPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGF3YWl0IGhvbGREb3duKHRhcmdldCwgeyBYOiByaWdodCArIDEsIFk6IHRvcCArIGhlaWdodCAvIDIsIGhvbGRpbmcgfSk7XG59O1xuXG4vKiog44Kr44O844K944Or44KS5bem44Gr5YuV44GL44GZXG4gKlxuICogQHBhcmFtIFtjb3VudD0xXSDli5XjgYvjgZnlm57mlbBcbiAqL1xuZXhwb3J0IGNvbnN0IG1vdmVMZWZ0ID0gKGNvdW50ID0gMSk6IHZvaWQgPT4ge1xuICBmb3IgKGNvbnN0IF8gb2YgcmFuZ2UoMCwgY291bnQpKSB7XG4gICAgcHJlc3MoXCJBcnJvd0xlZnRcIik7XG4gIH1cbn07XG4vKiog44Kr44O844K944Or44KS5LiK44Gr5YuV44GL44GZXG4gKlxuICogQHBhcmFtIFtjb3VudD0xXSDli5XjgYvjgZnlm57mlbBcbiAqL1xuZXhwb3J0IGNvbnN0IG1vdmVVcCA9IChjb3VudCA9IDEpOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCBfIG9mIHJhbmdlKDAsIGNvdW50KSkge1xuICAgIHByZXNzKFwiQXJyb3dVcFwiKTtcbiAgfVxufTtcbi8qKiDjgqvjg7zjgr3jg6vjgpLkuIvjgavli5XjgYvjgZlcbiAqXG4gKiBAcGFyYW0gW2NvdW50PTFdIOWLleOBi+OBmeWbnuaVsFxuICovXG5leHBvcnQgY29uc3QgbW92ZURvd24gPSAoY291bnQgPSAxKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgXyBvZiByYW5nZSgwLCBjb3VudCkpIHtcbiAgICBwcmVzcyhcIkFycm93RG93blwiKTtcbiAgfVxufTtcbi8qKiDjgqvjg7zjgr3jg6vjgpLlj7Pjgavli5XjgYvjgZlcbiAqXG4gKiBAcGFyYW0gW2NvdW50PTFdIOWLleOBi+OBmeWbnuaVsFxuICovXG5leHBvcnQgY29uc3QgbW92ZVJpZ2h0ID0gKGNvdW50ID0gMSk6IHZvaWQgPT4ge1xuICBmb3IgKGNvbnN0IF8gb2YgcmFuZ2UoMCwgY291bnQpKSB7XG4gICAgcHJlc3MoXCJBcnJvd1JpZ2h0XCIpO1xuICB9XG59O1xuXG4vKiog44Kk44Oz44OH44Oz44OI44KS6Zmk44GE44Gf6KGM6aCt44Gr56e75YuV44GZ44KLICovXG5leHBvcnQgY29uc3QgZ29IZWFkV2l0aG91dEJsYW5rID0gKCk6IHZvaWQgPT4ge1xuICBwcmVzcyhcIkVuZFwiKTtcbiAgcHJlc3MoXCJIb21lXCIpO1xufTtcbi8qKiDmnIDlvozjga7pnZ7nqbrnmb3mloflrZfjgavnp7vli5XjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBnb0VuZFdpdGhvdXRCbGFuayA9ICgpOiB2b2lkID0+IHtcbiAgcHJlc3MoXCJFbmRcIik7XG4gIG1vdmVMZWZ0KFxuICAgIGdldFRleHQoY2FyZXQoKS5wb3NpdGlvbi5saW5lKT8ubWF0Y2g/LigvKFxccyopJC8pPy5bMV0/Lmxlbmd0aCA/PyAwLFxuICApO1xufTtcbi8qKiDooYzpoK3jgavnp7vli5XjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBnb0hlYWQgPSAoKTogdm9pZCA9PiB7XG4gIHByZXNzKFwiSG9tZVwiKTtcbiAgcHJlc3MoXCJIb21lXCIpO1xufTtcbi8qKiDooYzmnKvjgavnp7vli5XjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBnb0VuZCA9ICgpOiB2b2lkID0+IHtcbiAgcHJlc3MoXCJFbmRcIik7XG59O1xuXG4vKiog5pyA5Yid44Gu6KGM44Gu6KGM6aCt44Gr56e75YuV44GZ44KLICovXG5leHBvcnQgY29uc3QgZ29IZWFkTGluZSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgdGFyZ2V0ID0gZ2V0SGVhZExpbmVET00oKTtcbiAgaWYgKCF0YXJnZXQpIHRocm93IEVycm9yKFwiLmxpbmU6Zmlyc3Qtb2YtdHlwZSBjYW4ndCBiZSBmb3VuZC5cIik7XG4gIGlmICghaXNIZWlnaHRWaWV3YWJsZSh0YXJnZXQpKSB0YXJnZXQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogXCJjZW50ZXJcIiB9KTtcblxuICBjb25zdCBjaGFyRE9NID0gZ2V0SGVhZENoYXJET00odGFyZ2V0KTtcbiAgaWYgKCFjaGFyRE9NKSB0aHJvdyBFcnJvcihcIi5saW5lOmZpcnN0LW9mLXR5cGUgLmMtMCBjYW4ndCBiZSBmb3VuZC5cIik7XG4gIGNvbnN0IHsgbGVmdCwgdG9wIH0gPSBjaGFyRE9NLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBhd2FpdCBjbGljayh0YXJnZXQsIHsgWDogbGVmdCwgWTogdG9wIH0pO1xufTtcbi8qKiDmnIDlvozjga7ooYzjga7ooYzmnKvjgavnp7vli5XjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBnb0xhc3RMaW5lID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBhd2FpdCBfZ29MaW5lKGdldFRhaWxMaW5lRE9NKCkpO1xufTtcbi8qKiDku7vmhI/jga7ooYzjga7ooYzmnKvjgavnp7vli5XjgZnjgotcbiAqXG4gKiBAcGFyYW0gdmFsdWUg56e75YuV44GX44Gf44GE6KGM44Gu6KGM55Wq5Y+3IG9yIOihjElEIG9yIOihjOOBrkRPTVxuICovXG5leHBvcnQgY29uc3QgZ29MaW5lID0gYXN5bmMgKFxuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgYXdhaXQgX2dvTGluZShnZXRMaW5lRE9NKHZhbHVlKSk7XG59O1xuY29uc3QgX2dvTGluZSA9IGFzeW5jICh0YXJnZXQ6IEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkKSA9PiB7XG4gIGlmICghdGFyZ2V0KSB0aHJvdyBFcnJvcihcIlRoZSB0YXJnZXQgbGluZSBET00gaXMgZmFpbGVkIHRvIGZpbmQuXCIpO1xuICBpZiAoIWlzSGVpZ2h0Vmlld2FibGUodGFyZ2V0KSkgdGFyZ2V0LnNjcm9sbEludG9WaWV3KHsgYmxvY2s6IFwiY2VudGVyXCIgfSk7XG5cbiAgY29uc3QgeyByaWdodCwgdG9wLCBoZWlnaHQgfSA9IHRhcmdldC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidGV4dFwiKVswXVxuICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgYXdhaXQgY2xpY2sodGFyZ2V0LCB7IFg6IHJpZ2h0ICsgMSwgWTogdG9wICsgaGVpZ2h0IC8gMiB9KTtcbn07XG5cbi8qKiDku7vmhI/jga7mloflrZfjgavnp7vli5XjgZnjgotcbiAqXG4gKiDjgq/jg6rjg4Pjgq/jgafnp7vli5XjgafjgY3jgarjgYTmloflrZfjgavnp7vli5XjgZfjgojjgYbjgajjgZnjgovjgajlpLHmlZfjgZnjgovjga7jgafms6jmhI9cbiAqXG4gKiBAcGFyYW0gbGluZSDnp7vli5XjgZfjgZ/jgYTmloflrZfjgYzjgYLjgovooYxcbiAqIEBwYXJhbSBwb3Mg56e75YuV44GX44Gf44GE5paH5a2X44Gu5YiXXG4gKi9cbmV4cG9ydCBjb25zdCBnb0NoYXIgPSBhc3luYyAoXG4gIGxpbmU6IHN0cmluZyB8IG51bWJlciB8IEhUTUxFbGVtZW50LFxuICBwb3M6IG51bWJlcixcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBjaGFyRE9NID0gZ2V0Q2hhckRPTShsaW5lLCBwb3MpO1xuICBpZiAoIWNoYXJET00pIHtcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgIGBDb3VsZCBub3QgZmluZCB0aGUgY2hhciBET00gYXQgbGluZTogJHtnZXRMaW5lTm8obGluZSl9LCBjb2x1bW46ICR7cG9zfWAsXG4gICAgKTtcbiAgfVxuICBpZiAoIWlzSGVpZ2h0Vmlld2FibGUoY2hhckRPTSkpIGNoYXJET00uc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogXCJjZW50ZXJcIiB9KTtcblxuICBjb25zdCB7IGxlZnQsIHRvcCB9ID0gY2hhckRPTS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgYXdhaXQgY2xpY2soY2hhckRPTSwgeyBYOiBsZWZ0LCBZOiB0b3AgfSk7XG59O1xuXG4vKiog55S76Z2i44Gr5Y+O44G+44KL5pyA5aSn6KGM5pWw44KS6KiI566X44GZ44KLXG4gKlxuICog6KGM44Gu6auY44GV44Gv5pyA5b6M44Gu6KGM44KS5Z+65rqW44Go44GZ44KLXG4gKi9cbmNvbnN0IGdldFZpc2libGVMaW5lQ291bnQgPSAoKTogbnVtYmVyID0+IHtcbiAgY29uc3QgY2xpZW50SGVpZ2h0ID0gZ2V0VGFpbExpbmVET00oKT8uY2xpZW50SGVpZ2h0O1xuICBpZiAoY2xpZW50SGVpZ2h0ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBFcnJvcihcIkNvdWxkIG5vdCBmaW5kIC5saW5lOmxhc3Qtb2YtdHlwZVwiKTtcbiAgfVxuICByZXR1cm4gTWF0aC5yb3VuZChnbG9iYWxUaGlzLmlubmVySGVpZ2h0IC8gY2xpZW50SGVpZ2h0KTtcbn07XG5cbi8qKiDljYrjg5rjg7zjgrjkuIrjgavjgrnjgq/jg63jg7zjg6vjgZnjgotcbiAqXG4gKiBAcGFyYW0gW2NvdW50PTFdIOOCueOCr+ODreODvOODq+WbnuaVsFxuICovXG5leHBvcnQgY29uc3Qgc2Nyb2xsSGFsZlVwID0gYXN5bmMgKGNvdW50ID0gMSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBsaW5lTm8gPSBnZXRMaW5lTm8oY2FyZXQoKS5wb3NpdGlvbi5saW5lKTtcbiAgaWYgKGxpbmVObyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgRXJyb3IoXCJDb3VsZCBub3QgZGV0ZWN0IHRoZSBwcmVzZW50IGN1cnNvciBsaW5lIE5vLlwiKTtcbiAgfVxuICBjb25zdCBpbmRleCA9IE1hdGgucm91bmQoXG4gICAgKGxpbmVObyAtIGdldFZpc2libGVMaW5lQ291bnQoKSAvIDIpICogY291bnQsXG4gICk7XG4gIGF3YWl0IGdvTGluZShNYXRoLm1heChpbmRleCwgMCkpO1xufTtcbi8qKiDljYrjg5rjg7zjgrjkuIvjgavjgrnjgq/jg63jg7zjg6vjgZnjgotcbiAqXG4gKiBAcGFyYW0gW2NvdW50PTFdIOOCueOCr+ODreODvOODq+WbnuaVsFxuICovXG5leHBvcnQgY29uc3Qgc2Nyb2xsSGFsZkRvd24gPSBhc3luYyAoY291bnQgPSAxKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGxpbmVObyA9IGdldExpbmVObyhjYXJldCgpLnBvc2l0aW9uLmxpbmUpO1xuICBpZiAobGluZU5vID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBFcnJvcihcIkNvdWxkIG5vdCBkZXRlY3QgdGhlIHByZXNlbnQgY3Vyc29yIGxpbmUgTm8uXCIpO1xuICB9XG4gIGNvbnN0IGluZGV4ID0gTWF0aC5yb3VuZChcbiAgICAobGluZU5vICsgZ2V0VmlzaWJsZUxpbmVDb3VudCgpIC8gMikgKiBjb3VudCxcbiAgKTtcbiAgYXdhaXQgZ29MaW5lKE1hdGgubWluKGluZGV4LCBnZXRMaW5lQ291bnQoKSAtIDEpKTtcbn07XG4vKiogMeODmuODvOOCuOS4iuOBq+OCueOCr+ODreODvOODq+OBmeOCi1xuICpcbiAqIEBwYXJhbSBbY291bnQ9MV0g44K544Kv44Ot44O844Or5Zue5pWwXG4gKi9cbmV4cG9ydCBjb25zdCBzY3JvbGxVcCA9IChjb3VudCA9IDEpOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCBfIG9mIHJhbmdlKDAsIGNvdW50KSkge1xuICAgIHByZXNzKFwiUGFnZVVwXCIpO1xuICB9XG59O1xuLyoqIDHjg5rjg7zjgrjkuIvjgavjgrnjgq/jg63jg7zjg6vjgZnjgotcbiAqXG4gKiBAcGFyYW0gW2NvdW50PTFdIOOCueOCr+ODreODvOODq+WbnuaVsFxuICovXG5leHBvcnQgY29uc3Qgc2Nyb2xsRG93biA9IChjb3VudCA9IDEpOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCBfIG9mIHJhbmdlKDAsIGNvdW50KSkge1xuICAgIHByZXNzKFwiUGFnZURvd25cIik7XG4gIH1cbn07XG4iLCAiaW1wb3J0IHsgZ29IZWFkLCBnb0xpbmUgfSBmcm9tIFwiLi9tb3Rpb24udHNcIjtcbmltcG9ydCB7IHByZXNzIH0gZnJvbSBcIi4vcHJlc3MudHNcIjtcbmltcG9ydCB7IGdldExpbmVDb3VudCB9IGZyb20gXCIuL25vZGUudHNcIjtcbmltcG9ydCB7IHJhbmdlIH0gZnJvbSBcIi4uLy4uL3JhbmdlLnRzXCI7XG5pbXBvcnQgeyB0ZXh0SW5wdXQgfSBmcm9tIFwiLi9kb20udHNcIjtcbmltcG9ydCB7IGlzQXJyYXksIGlzTnVtYmVyLCBpc1N0cmluZyB9IGZyb20gXCIuLi8uLi9pcy50c1wiO1xuaW1wb3J0IHsgc2xlZXAgfSBmcm9tIFwiLi4vLi4vc2xlZXAudHNcIjtcblxuZXhwb3J0IGNvbnN0IHVuZG8gPSAoY291bnQgPSAxKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgXyBvZiByYW5nZSgwLCBjb3VudCkpIHtcbiAgICBwcmVzcyhcInpcIiwgeyBjdHJsS2V5OiB0cnVlIH0pO1xuICB9XG59O1xuZXhwb3J0IGNvbnN0IHJlZG8gPSAoY291bnQgPSAxKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgXyBvZiByYW5nZSgwLCBjb3VudCkpIHtcbiAgICBwcmVzcyhcInpcIiwgeyBzaGlmdEtleTogdHJ1ZSwgY3RybEtleTogdHJ1ZSB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydEljb24gPSAoY291bnQgPSAxKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgXyBvZiByYW5nZSgwLCBjb3VudCkpIHtcbiAgICBwcmVzcyhcImlcIiwgeyBjdHJsS2V5OiB0cnVlIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0VGltZXN0YW1wID0gKGluZGV4ID0gMSk6IHZvaWQgPT4ge1xuICBmb3IgKGNvbnN0IF8gb2YgcmFuZ2UoMCwgaW5kZXgpKSB7XG4gICAgcHJlc3MoXCJ0XCIsIHsgYWx0S2V5OiB0cnVlIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0TGluZSA9IGFzeW5jIChcbiAgbGluZU5vOiBudW1iZXIsXG4gIHRleHQ6IHN0cmluZyxcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBhd2FpdCBnb0xpbmUobGluZU5vKTtcbiAgZ29IZWFkKCk7XG4gIHByZXNzKFwiRW50ZXJcIik7XG4gIHByZXNzKFwiQXJyb3dVcFwiKTtcbiAgYXdhaXQgaW5zZXJ0VGV4dCh0ZXh0KTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXBsYWNlTGluZXMgPSBhc3luYyAoXG4gIHN0YXJ0OiBudW1iZXIsXG4gIGVuZDogbnVtYmVyLFxuICB0ZXh0OiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgYXdhaXQgZ29MaW5lKHN0YXJ0KTtcbiAgZ29IZWFkKCk7XG4gIGZvciAoY29uc3QgXyBvZiByYW5nZShzdGFydCwgZW5kKSkge1xuICAgIHByZXNzKFwiQXJyb3dEb3duXCIsIHsgc2hpZnRLZXk6IHRydWUgfSk7XG4gIH1cbiAgcHJlc3MoXCJFbmRcIiwgeyBzaGlmdEtleTogdHJ1ZSB9KTtcbiAgYXdhaXQgaW5zZXJ0VGV4dCh0ZXh0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVMaW5lcyA9IGFzeW5jIChcbiAgZnJvbTogbnVtYmVyIHwgc3RyaW5nIHwgc3RyaW5nW10sXG4gIGNvdW50ID0gMSxcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoaXNOdW1iZXIoZnJvbSkpIHtcbiAgICBpZiAoZ2V0TGluZUNvdW50KCkgPT09IGZyb20gKyBjb3VudCkge1xuICAgICAgYXdhaXQgZ29MaW5lKGZyb20gLSAxKTtcbiAgICAgIHByZXNzKFwiQXJyb3dSaWdodFwiLCB7IHNoaWZ0S2V5OiB0cnVlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBnb0xpbmUoZnJvbSk7XG4gICAgICBnb0hlYWQoKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICBwcmVzcyhcIkFycm93UmlnaHRcIiwgeyBzaGlmdEtleTogdHJ1ZSB9KTtcbiAgICAgIHByZXNzKFwiRW5kXCIsIHsgc2hpZnRLZXk6IHRydWUgfSk7XG4gICAgfVxuICAgIHByZXNzKFwiQXJyb3dSaWdodFwiLCB7IHNoaWZ0S2V5OiB0cnVlIH0pO1xuICAgIHByZXNzKFwiRGVsZXRlXCIpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoaXNTdHJpbmcoZnJvbSkgfHwgaXNBcnJheShmcm9tKSkge1xuICAgIGNvbnN0IGlkcyA9IEFycmF5LmlzQXJyYXkoZnJvbSkgPyBmcm9tIDogW2Zyb21dO1xuICAgIGZvciAoY29uc3QgaWQgb2YgaWRzKSB7XG4gICAgICBhd2FpdCBnb0xpbmUoaWQpO1xuICAgICAgcHJlc3MoXCJIb21lXCIsIHsgc2hpZnRLZXk6IHRydWUgfSk7XG4gICAgICBwcmVzcyhcIkhvbWVcIiwgeyBzaGlmdEtleTogdHJ1ZSB9KTtcbiAgICAgIHByZXNzKFwiQmFja3NwYWNlXCIpO1xuICAgICAgcHJlc3MoXCJCYWNrc3BhY2VcIik7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgIGBUaGUgdHlwZSBvZiB2YWx1ZSBtdXN0IGJlIG51bWJlciB8IHN0cmluZyB8IHN0cmluZ1tdIGJ1dCBhY3R1YWwgaXMgXCIke3R5cGVvZiBmcm9tfVwiYCxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbmRlbnRMaW5lcyA9IChjb3VudCA9IDEpOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCBfIG9mIHJhbmdlKDAsIGNvdW50KSkge1xuICAgIHByZXNzKFwiQXJyb3dSaWdodFwiLCB7IGN0cmxLZXk6IHRydWUgfSk7XG4gIH1cbn07XG5leHBvcnQgY29uc3Qgb3V0ZGVudExpbmVzID0gKGNvdW50ID0gMSk6IHZvaWQgPT4ge1xuICBmb3IgKGNvbnN0IF8gb2YgcmFuZ2UoMCwgY291bnQpKSB7XG4gICAgcHJlc3MoXCJBcnJvd0xlZnRcIiwgeyBjdHJsS2V5OiB0cnVlIH0pO1xuICB9XG59O1xuZXhwb3J0IGNvbnN0IG1vdmVMaW5lcyA9IChjb3VudDogbnVtYmVyKTogdm9pZCA9PiB7XG4gIGlmIChjb3VudCA+IDApIHtcbiAgICBkb3duTGluZXMoY291bnQpO1xuICB9IGVsc2Uge1xuICAgIHVwTGluZXMoLWNvdW50KTtcbiAgfVxufTtcbi8vIHRv6KGM55uu44Gu5b6M44KN44Gr56e75YuV44GV44Gb44KLXG5leHBvcnQgY29uc3QgbW92ZUxpbmVzQmVmb3JlID0gKGZyb206IG51bWJlciwgdG86IG51bWJlcik6IHZvaWQgPT4ge1xuICBjb25zdCBjb3VudCA9IHRvIC0gZnJvbTtcbiAgaWYgKGNvdW50ID49IDApIHtcbiAgICBkb3duTGluZXMoY291bnQpO1xuICB9IGVsc2Uge1xuICAgIHVwTGluZXMoLWNvdW50IC0gMSk7XG4gIH1cbn07XG5leHBvcnQgY29uc3QgdXBMaW5lcyA9IChjb3VudCA9IDEpOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCBfIG9mIHJhbmdlKDAsIGNvdW50KSkge1xuICAgIHByZXNzKFwiQXJyb3dVcFwiLCB7IGN0cmxLZXk6IHRydWUgfSk7XG4gIH1cbn07XG5leHBvcnQgY29uc3QgZG93bkxpbmVzID0gKGNvdW50ID0gMSk6IHZvaWQgPT4ge1xuICBmb3IgKGNvbnN0IF8gb2YgcmFuZ2UoMCwgY291bnQpKSB7XG4gICAgcHJlc3MoXCJBcnJvd0Rvd25cIiwgeyBjdHJsS2V5OiB0cnVlIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaW5kZW50QmxvY2tzID0gKGNvdW50ID0gMSk6IHZvaWQgPT4ge1xuICBmb3IgKGNvbnN0IF8gb2YgcmFuZ2UoMCwgY291bnQpKSB7XG4gICAgcHJlc3MoXCJBcnJvd1JpZ2h0XCIsIHsgYWx0S2V5OiB0cnVlIH0pO1xuICB9XG59O1xuZXhwb3J0IGNvbnN0IG91dGRlbnRCbG9ja3MgPSAoY291bnQgPSAxKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgXyBvZiByYW5nZSgwLCBjb3VudCkpIHtcbiAgICBwcmVzcyhcIkFycm93TGVmdFwiLCB7IGFsdEtleTogdHJ1ZSB9KTtcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBtb3ZlQmxvY2tzID0gKGNvdW50OiBudW1iZXIpOiB2b2lkID0+IHtcbiAgaWYgKGNvdW50ID4gMCkge1xuICAgIGRvd25CbG9ja3MoY291bnQpO1xuICB9IGVsc2Uge1xuICAgIHVwQmxvY2tzKC1jb3VudCk7XG4gIH1cbn07XG5leHBvcnQgY29uc3QgdXBCbG9ja3MgPSAoY291bnQgPSAxKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgXyBvZiByYW5nZSgwLCBjb3VudCkpIHtcbiAgICBwcmVzcyhcIkFycm93VXBcIiwgeyBhbHRLZXk6IHRydWUgfSk7XG4gIH1cbn07XG5leHBvcnQgY29uc3QgZG93bkJsb2NrcyA9IChjb3VudCA9IDEpOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCBfIG9mIHJhbmdlKDAsIGNvdW50KSkge1xuICAgIHByZXNzKFwiQXJyb3dEb3duXCIsIHsgYWx0S2V5OiB0cnVlIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0VGV4dCA9IGFzeW5jICh0ZXh0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgY3Vyc29yID0gdGV4dElucHV0KCk7XG4gIGlmICghY3Vyc29yKSB7XG4gICAgdGhyb3cgRXJyb3IoXCIjdGV4dC1pbnB1dCBpcyBub3QgZGl0ZWN0ZWQuXCIpO1xuICB9XG4gIGN1cnNvci5mb2N1cygpO1xuICBjdXJzb3IudmFsdWUgPSB0ZXh0O1xuXG4gIGNvbnN0IGV2ZW50ID0gbmV3IElucHV0RXZlbnQoXCJpbnB1dFwiLCB7IGJ1YmJsZXM6IHRydWUgfSk7XG4gIGN1cnNvci5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgYXdhaXQgc2xlZXAoMSk7IC8vIOW+heOBoeaZgumWk+OBr+aEn+immuOBp+axuuOCgeOBn1xufTtcbiIsICJpbXBvcnQgeyBzdGF0dXNCYXIgfSBmcm9tIFwiLi9kb20udHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VTdGF0dXNCYXJSZXN1bHQge1xuICAvKiog5Y+W5b6X44GX44GfLnN0YXR1cy1iYXLjga7poJjln5/jgavmg4XloLHjgpLooajnpLrjgZnjgosgKi9cbiAgcmVuZGVyOiAoLi4uaXRlbXM6IEl0ZW1bXSkgPT4gdm9pZDtcbiAgLyoqIOWPluW+l+OBl+OBny5zdGF0dXNiLWJhcuOBrumgmOWfn+OCkuWJiumZpOOBmeOCiyAqL1xuICBkaXNwb3NlOiAoKSA9PiB2b2lkO1xufVxuXG4vKiogLnN0YXR1cy1iYXLjga7kuIDljLrnlLvjgpLlj5blvpfjgZfjgIHlkITnqK7mk43kvZzlh73mlbDjgpLov5TjgZkgKi9cbmV4cG9ydCBjb25zdCB1c2VTdGF0dXNCYXIgPSAoKTogVXNlU3RhdHVzQmFyUmVzdWx0ID0+IHtcbiAgY29uc3QgYmFyID0gc3RhdHVzQmFyKCk7XG4gIGlmICghYmFyKSB0aHJvdyBuZXcgRXJyb3IoYGRpdi5zdGF0dXMtYmFyIGNhbid0IGJlIGZvdW5kYCk7XG5cbiAgY29uc3Qgc3RhdHVzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgYmFyLmFwcGVuZChzdGF0dXMpO1xuXG4gIHJldHVybiB7XG4gICAgcmVuZGVyOiAoLi4uaXRlbXM6IEl0ZW1bXSkgPT4ge1xuICAgICAgc3RhdHVzLnRleHRDb250ZW50ID0gXCJcIjtcbiAgICAgIGNvbnN0IGNoaWxkID0gbWFrZUdyb3VwKC4uLml0ZW1zKTtcbiAgICAgIGlmIChjaGlsZCkgc3RhdHVzLmFwcGVuZChjaGlsZCk7XG4gICAgfSxcbiAgICBkaXNwb3NlOiAoKSA9PiBzdGF0dXMucmVtb3ZlKCksXG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1Hcm91cCB7XG4gIHR5cGU6IFwiZ3JvdXBcIjtcbiAgaXRlbXM6IEl0ZW1bXTtcbn1cbmV4cG9ydCB0eXBlIEl0ZW0gPVxuICB8IHtcbiAgICB0eXBlOiBcInNwaW5uZXJcIiB8IFwiY2hlY2stY2lyY2xlXCIgfCBcImV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCI7XG4gIH1cbiAgfCB7IHR5cGU6IFwidGV4dFwiOyB0ZXh0OiBzdHJpbmcgfVxuICB8IEl0ZW1Hcm91cDtcblxuY29uc3QgbWFrZUdyb3VwID0gKC4uLml0ZW1zOiBJdGVtW10pOiBIVE1MU3BhbkVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBub2RlcyA9IGl0ZW1zLmZsYXRNYXAoKGl0ZW0pID0+IHtcbiAgICBzd2l0Y2ggKGl0ZW0udHlwZSkge1xuICAgICAgY2FzZSBcInNwaW5uZXJcIjpcbiAgICAgICAgcmV0dXJuIFttYWtlU3Bpbm5lcigpXTtcbiAgICAgIGNhc2UgXCJjaGVjay1jaXJjbGVcIjpcbiAgICAgICAgcmV0dXJuIFttYWtlQ2hlY2tDaXJjbGUoKV07XG4gICAgICBjYXNlIFwiZXhjbGFtYXRpb24tdHJpYW5nbGVcIjpcbiAgICAgICAgcmV0dXJuIFttYWtlRXhjbGFtYXRpb25UcmlhbmdsZSgpXTtcbiAgICAgIGNhc2UgXCJ0ZXh0XCI6XG4gICAgICAgIHJldHVybiBbbWFrZUl0ZW0oaXRlbS50ZXh0KV07XG4gICAgICBjYXNlIFwiZ3JvdXBcIjoge1xuICAgICAgICBjb25zdCBncm91cCA9IG1ha2VHcm91cCguLi5pdGVtLml0ZW1zKTtcbiAgICAgICAgcmV0dXJuIGdyb3VwID8gW2dyb3VwXSA6IFtdO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGlmIChub2Rlcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIG5vZGVzWzBdO1xuICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gIHNwYW4uY2xhc3NMaXN0LmFkZChcIml0ZW0tZ3JvdXBcIik7XG4gIHNwYW4uYXBwZW5kKC4uLm5vZGVzKTtcbiAgcmV0dXJuIHNwYW47XG59O1xuY29uc3QgbWFrZUl0ZW0gPSAoY2hpbGQ6IHN0cmluZyB8IE5vZGUpID0+IHtcbiAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICBzcGFuLmNsYXNzTGlzdC5hZGQoXCJpdGVtXCIpO1xuICBzcGFuLmFwcGVuZChjaGlsZCk7XG4gIHJldHVybiBzcGFuO1xufTtcblxuLyoqIOOCueODlOODiuODvOOCkuS9nOOCiyAqL1xuY29uc3QgbWFrZVNwaW5uZXIgPSAoKSA9PiB7XG4gIGNvbnN0IGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaVwiKTtcbiAgaS5jbGFzc0xpc3QuYWRkKFwiZmFcIiwgXCJmYS1zcGlubmVyXCIpO1xuICByZXR1cm4gbWFrZUl0ZW0oaSk7XG59O1xuXG4vKiog44OB44Kn44OD44Kv44Oe44O844Kv44KS5L2c44KLICovXG5jb25zdCBtYWtlQ2hlY2tDaXJjbGUgPSAoKSA9PiB7XG4gIGNvbnN0IGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaVwiKTtcbiAgaS5jbGFzc0xpc3QuYWRkKFwia2Ftb25cIiwgXCJrYW1vbi1jaGVjay1jaXJjbGVcIik7XG4gIHJldHVybiBtYWtlSXRlbShpKTtcbn07XG5cbi8qKiDorablkYrjgqLjgqTjgrPjg7PjgpLkvZzjgosgKi9cbmNvbnN0IG1ha2VFeGNsYW1hdGlvblRyaWFuZ2xlID0gKCkgPT4ge1xuICBjb25zdCBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlcIik7XG4gIGkuY2xhc3NMaXN0LmFkZChcImZhc1wiLCBcImZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCIpO1xuICByZXR1cm4gbWFrZUl0ZW0oaSk7XG59O1xuIiwgImltcG9ydCB7IHRvVGl0bGVMYyB9IGZyb20gXCIuLi8uLi90aXRsZS50c1wiO1xuXG4vKiog44Oa44O844K444Oq44Oz44KvICovXG5leHBvcnQgaW50ZXJmYWNlIExpbmsge1xuICAvKiog44Oq44Oz44Kv5YWI44GucHJvamVjdCBuYW1lICovXG4gIHByb2plY3Q6IHN0cmluZztcblxuICAvKiog44Oq44Oz44Kv5YWI44GucGFnZSB0aXRsZSAqL1xuICB0aXRsZTogc3RyaW5nO1xufVxuXG4vKiog44Oa44O844K444GL44KJ5Yil44Gu44Oa44O844K444Gr6YG356e744GZ44KL44Go44GN44Gu54q25oWL44KS6KGo44GZICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VUcmFuc2l0aW9uQ29udGV4dExpbmsge1xuICB0eXBlOiBcInBhZ2VcIjtcblxuICAvKiog6YG356e75YWD44Oa44O844K444Gu44Oq44Oz44KvICovXG4gIGZyb206IExpbms7XG5cbiAgLyoqIOmBt+enu+WFiOODmuODvOOCuOOBruODquODs+OCryAqL1xuICB0bzogTGluaztcbn1cblxuLyoqIOWFqOaWh+aknOe0oue1kOaenOOBi+OCieWIpeOBruODmuODvOOCuOOBq+mBt+enu+OBmeOCi+OBqOOBjeOBrueKtuaFi+OCkuihqOOBmSAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdlVHJhbnNpdGlvbkNvbnRleHRRdWVyeSB7XG4gIHR5cGU6IFwic2VhcmNoXCI7XG5cbiAgLyoqIOWFqOaWh+aknOe0ouOBp+OBruaknOe0ouiqnuWPpSAqL1xuICBxdWVyeTogc3RyaW5nO1xuXG4gIC8qKiDpgbfnp7vlhYjjg5rjg7zjgrjjga7jg6rjg7Pjgq8gKi9cbiAgdG86IExpbms7XG59XG5cbmV4cG9ydCB0eXBlIFBhZ2VUcmFuc2l0aW9uQ29udGV4dCA9XG4gIHwgUGFnZVRyYW5zaXRpb25Db250ZXh0TGlua1xuICB8IFBhZ2VUcmFuc2l0aW9uQ29udGV4dFF1ZXJ5O1xuXG4vKiog44Oa44O844K46YG356e754q25oWL44KS55m76Yyy44GX44CB5qyh5Zue44Gu44Oa44O844K46YG356e75pmC44Gr44Oq44Oz44Kv5YWI44G444K544Kv44Ot44O844Or44GZ44KLXG4gKlxuICogQHBhcmFtIGNvbnRleHQg6YG356e754q25oWLXG4gKi9cbmV4cG9ydCBjb25zdCBwdXNoUGFnZVRyYW5zaXRpb24gPSAoY29udGV4dDogUGFnZVRyYW5zaXRpb25Db250ZXh0KTogdm9pZCA9PiB7XG4gIGNvbnN0IHBhZ2VUcmFuc2l0aW9uQ29udGV4dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBKU09OLnBhcnNlKFxuICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicGFnZVRyYW5zaXRpb25Db250ZXh0XCIpID8/IFwiXCIsXG4gICk7XG4gIGNvbnN0IHZhbHVlID0gY29udGV4dC50eXBlID09PSBcInBhZ2VcIlxuICAgID8gY29udGV4dC5mcm9tLnByb2plY3QgPT09IGNvbnRleHQudG8ucHJvamVjdFxuICAgICAgPyBjb250ZXh0LmZyb20udGl0bGUgPT09IGNvbnRleHQudG8udGl0bGVcbiAgICAgICAgPyB7XG4gICAgICAgICAgdGl0bGVIaW50OiBjb250ZXh0LnRvLnRpdGxlLFxuICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgIGxpbmtGcm9tOiBjb250ZXh0LmZyb20udGl0bGUsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICBsaW5rRnJvbTogYC8ke2NvbnRleHQuZnJvbS5wcm9qZWN0fS8ke2NvbnRleHQuZnJvbS50aXRsZX1gLFxuICAgICAgfVxuICAgIDoge1xuICAgICAgc2VhcmNoUXVlcnk6IGNvbnRleHQucXVlcnksXG4gICAgfTtcbiAgcGFnZVRyYW5zaXRpb25Db250ZXh0W2BwYWdlXyR7dG9UaXRsZUxjKGNvbnRleHQudG8udGl0bGUpfWBdID0gdmFsdWU7XG4gIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgIFwicGFnZVRyYW5zaXRpb25Db250ZXh0XCIsXG4gICAgSlNPTi5zdHJpbmdpZnkocGFnZVRyYW5zaXRpb25Db250ZXh0KSxcbiAgKTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cblxuaW1wb3J0IHsgZW5jb2RlVGl0bGVVUkkgfSBmcm9tIFwiLi4vLi4vdGl0bGUudHNcIjtcbmltcG9ydCB7XG4gIFBhZ2VUcmFuc2l0aW9uQ29udGV4dCxcbiAgcHVzaFBhZ2VUcmFuc2l0aW9uLFxufSBmcm9tIFwiLi9wdXNoUGFnZVRyYW5zaXRpb24udHNcIjtcbmltcG9ydCB0eXBlIHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vLi4vZGVwcy9zY3JhcGJveC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3Blbk9wdGlvbnMge1xuICAvKiogbGluZSBpZCAqL1xuICBpZD86IHN0cmluZztcblxuICAvKiog44Oa44O844K444Gr6L+96KiY44GZ44KL44OG44Kt44K544OIICovXG4gIGJvZHk/OiBzdHJpbmc7XG5cbiAgLyoqIOaWsOOBl+OBhOOCv+ODluOBp+mWi+OBj+OBi+OBqeOBhuOBi1xuICAgKlxuICAgKiBAZGVmYXVsdCDlkIzjgZjjgr/jg5bjgafplovjgY9cbiAgICovXG4gIG5ld1RhYj86IGJvb2xlYW47XG5cbiAgLyoqIOWQjOOBmOOCv+ODluOBp+ODmuODvOOCuOOCkumWi+OBj+WgtOWQiOOAgeODmuODvOOCuOOCkuWGjeiqrei+vOOBmeOCi+OBi+OBqeOBhuOBi1xuICAgKlxuICAgKiBAZGVmYXVsdCDlkIzjgZhwcm9qZWN044Gu5aC05ZCI44Gv5YaN6Kqt44G/6L6844G/44Gb44Ga44CB6YGV44GGcHJvamVjdOOBruWgtOWQiOOBr+WGjeiqrei+vOOBmeOCi1xuICAgKi9cbiAgcmVsb2FkPzogYm9vbGVhbjtcblxuICAvKiog44Oq44Oz44Kv5YWI44G444K544Kv44Ot44O844Or44GZ44KL5qmf6IO944KS5L2/44GG44Gf44KB44Gr5b+F6KaB44Gq5oOF5aCxICovXG4gIGNvbnRleHQ/OiBPbWl0PFBhZ2VUcmFuc2l0aW9uQ29udGV4dCwgXCJ0b1wiPjtcbn1cblxuLyoqIOODmuODvOOCuOOCkumWi+OBj1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0IOmWi+OBj+ODmuODvOOCuOOBrnByb2plY3TlkI1cbiAqIEBwYXJhbSB0aXRsZSDplovjgY/jg5rjg7zjgrjjga7jgr/jgqTjg4jjg6tcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuID0gKFxuICBwcm9qZWN0OiBzdHJpbmcsXG4gIHRpdGxlOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPcGVuT3B0aW9ucyxcbikgPT4ge1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKGAvJHtwcm9qZWN0fS8ke2VuY29kZVRpdGxlVVJJKHRpdGxlKX1gLCBsb2NhdGlvbi5ocmVmKTtcbiAgaWYgKG9wdGlvbnM/LmJvZHkpIHVybC5zZWFyY2ggPSBgP2JvZHk9JHtlbmNvZGVVUklDb21wb25lbnQob3B0aW9ucy5ib2R5KX1gO1xuICBpZiAob3B0aW9ucz8uaWQpIHVybC5oYXNoID0gYCMke29wdGlvbnMuaWR9YDtcblxuICBpZiAob3B0aW9ucz8uY29udGV4dCkge1xuICAgIHB1c2hQYWdlVHJhbnNpdGlvbihcbiAgICAgIHsgLi4ub3B0aW9ucz8uY29udGV4dCwgdG86IHsgcHJvamVjdCwgdGl0bGUgfSB9IGFzIFBhZ2VUcmFuc2l0aW9uQ29udGV4dCxcbiAgICApO1xuICB9XG5cbiAgaWYgKFxuICAgIG9wdGlvbnM/Lm5ld1RhYiAhPT0gZmFsc2UgJiZcbiAgICAob3B0aW9ucz8ubmV3VGFiID09PSB0cnVlIHx8IHByb2plY3QgIT09IHNjcmFwYm94LlByb2plY3QubmFtZSlcbiAgKSB7XG4gICAgZ2xvYmFsVGhpcy5vcGVuKHVybCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChcbiAgICBvcHRpb25zPy5yZWxvYWQgIT09IGZhbHNlICYmXG4gICAgKG9wdGlvbnM/LnJlbG9hZCA9PT0gdHJ1ZSB8fCBwcm9qZWN0ICE9PSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUpXG4gICkge1xuICAgIGdsb2JhbFRoaXMub3Blbih1cmwsIFwiX3NlbGZcIik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICBhLmhyZWYgPSB1cmwudG9TdHJpbmcoKTtcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmQoYSk7XG4gIGEuY2xpY2soKTtcbiAgYS5yZW1vdmUoKTtcbn07XG5cbi8qKiDlkIzjgZjjgr/jg5bjgafjg5rjg7zjgrjjgpLplovjgY9cbiAqXG4gKiDjgZPjga7jgajjgY3jgIHjg5rjg7zjgrjjga/lho3oqq3jgb/ovrzjgb/jgZXjgozjgarjgYRcbiAqXG4gKiBAcGFyYW0gcHJvamVjdCDplovjgY/jg5rjg7zjgrjjga5wcm9qZWN05ZCNXG4gKiBAcGFyYW0gdGl0bGUg6ZaL44GP44Oa44O844K444Gu44K/44Kk44OI44OrXG4gKiBAcGFyYW0gW2JvZHldIOODmuODvOOCuOOBq+i/veiomOOBmeOCi+ODhuOCreOCueODiFxuICovXG5leHBvcnQgY29uc3Qgb3BlbkluVGhlU2FtZVRhYiA9IChcbiAgcHJvamVjdDogc3RyaW5nLFxuICB0aXRsZTogc3RyaW5nLFxuICBib2R5Pzogc3RyaW5nLFxuKSA9PiBvcGVuKHByb2plY3QsIHRpdGxlLCB7IG5ld1RhYjogZmFsc2UsIHJlbG9hZDogZmFsc2UsIGJvZHkgfSk7XG4iLCAiLyoqIHNjcmFwYm94Lmlv44GM566h55CG44GX44Gm44GE44KLY2FjaGUgc3RvcmFnZeOBi+OCieOAgeacgOaWsOOBrnJlc3BvbnNl44KS5Y+W5b6X44GZ44KLXG4gKlxuICog44G744G8IGh0dHBzOi8vc2NyYXBib3guaW8vZGFpaXovU2NyYXBib3jjgafjga5TZXJ2aWNlV29ya2Vy44GoQ2FjaGXjga7mtLvnlKgjNWQyZWZhZmZhZGY0ZTcwMDAwNjUxMTczIOOBruODkeOCr+ODqlxuICpcbiAqIEBwYXJhbSByZXF1ZXN0IOOBk+OBrnJlcXVlc3Tjgavlr77lv5zjgZnjgotyZXNwb25zZeOBjOassuOBl+OBhFxuICogQHBhcmFtIG9wdGlvbnMgc2VhcmNoIHBhcmFtc+OCkueEoeimluOBl+OBn+OBhOOBqOOBjeOBqOOBi+OBq+S9v+OBhlxuICogQHJldHVybiBjYWNoZeOBjOOBguOCjOOBsOOBneOBrnJlc3BvbnNl44KS44CB44Gq44GR44KM44GwYHVuZGVmaW5lZGDjgpLov5TjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IGZpbmRMYXRlc3RDYWNoZSA9IGFzeW5jIChcbiAgcmVxdWVzdDogUmVxdWVzdCxcbiAgb3B0aW9ucz86IENhY2hlUXVlcnlPcHRpb25zLFxuKTogUHJvbWlzZTxSZXNwb25zZSB8IHVuZGVmaW5lZD4gPT4ge1xuICBjb25zdCBjYWNoZU5hbWVzID0gYXdhaXQgZ2xvYmFsVGhpcy5jYWNoZXMua2V5cygpO1xuXG4gIGZvciAoY29uc3QgZGF0ZSBvZiBjYWNoZU5hbWVzLnNvcnQoKS5yZXZlcnNlKCkpIHtcbiAgICBjb25zdCBjYWNoZSA9IGF3YWl0IGNhY2hlcy5vcGVuKGRhdGUpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGNhY2hlLm1hdGNoKHJlcXVlc3QsIG9wdGlvbnMpO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gIH1cbn07XG5cbi8qKiBzY3JhcGJveC5pb+OBjOeuoeeQhuOBl+OBpuOBhOOCi1JFU1QgQVBJ57O744GuY2FjaGUgc3RvcmFnZeOBq3Jlc3BvbnNl44KS5L+d5a2Y44GZ44KLXG4gKlxuICogQHBhcmFtIHJlcXVlc3Qg44GT44GucmVxdWVzdOOBq+WvvuW/nOOBmeOCi3Jlc3BvbnNl44KS5L+d5a2Y44GZ44KLXG4gKiBAcGFyYW0gcmVzcG9uc2Ug5L+d5a2Y44GZ44KLcmVzcG9uc2VcbiAqL1xuZXhwb3J0IGNvbnN0IHNhdmVBcGlDYWNoZSA9IGFzeW5jIChcbiAgcmVxdWVzdDogUmVxdWVzdCxcbiAgcmVzcG9uc2U6IFJlc3BvbnNlLFxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHJlcyA9IHJlc3BvbnNlLmNsb25lKCk7XG4gIGNvbnN0IGNhY2hlID0gYXdhaXQgY2FjaGVzLm9wZW4oZ2VuZXJhdGVDYWNoZU5hbWUobmV3IERhdGUoKSkpO1xuICByZXR1cm4gYXdhaXQgY2FjaGUucHV0KHJlcXVlc3QsIHJlcyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVDYWNoZU5hbWUgPSAoZGF0ZTogRGF0ZSk6IHN0cmluZyA9PlxuICBgYXBpLSR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0ke2Ake2RhdGUuZ2V0TW9udGgoKSArIDF9YC5wYWRTdGFydCgyLCBcIjBcIil9LSR7XG4gICAgYCR7ZGF0ZS5nZXREYXRlKCl9YC5wYWRTdGFydCgyLCBcIjBcIilcbiAgfWA7XG5cbi8qKiBwcmVmZXRjaOOCkuWun+ihjOOBmeOCi1xuICpcbiAqIHByZWZldGNo44GX44Gf44OH44O844K/44GvYFwicHJlZmV0Y2hcImDjgahgXCJhcGkteXl5eS1NTS1kZFwiYOOBq+agvOe0jeOBleOCjOOCi1xuICpcbiAqIGBcInByZWZldGNoXCJg44Gr5qC857SN44GV44KM44Gf44OH44O844K/44Gv44CB5qyh5Zue44Gu44Oq44Kv44Ko44K544OI44Gn6L+U5Y2044GV44KM44Gf44Go44GN44Gr5YmK6Zmk44GV44KM44KLXG4gKlxuICog5Zue57ea44GM6YGF44GE44Go44GN44Gv5L6L5aSW44KS5oqV44GS44KLXG4gKlxuICogQHBhcmFtIHVybHMgcHJlZmV0Y2jjgZfjgZ/jgYRBUEnjga5VUkzjga7jg6rjgrnjg4hcbiAqL1xuZXhwb3J0IGNvbnN0IHByZWZldGNoID0gKHVybHM6IChzdHJpbmcgfCBVUkwpW10pOiBQcm9taXNlPHZvaWQ+ID0+XG4gIHBvc3RNZXNzYWdlKHtcbiAgICB0aXRsZTogXCJwcmVmZXRjaFwiLFxuICAgIGJvZHk6IHsgdXJsczogdXJscy5tYXAoKHVybCkgPT4gdXJsLnRvU3RyaW5nKCkpIH0sXG4gIH0pO1xuXG4vKiog5oyH5a6a44GX44GfQVBJ44GuY2FjaGXjga7mm7TmlrDjgpLkvp3poLzjgZnjgotcbiAqXG4gKiDmm7TmlrDjga8xMOenkuOBlOOBqOOBqzHjgaTjgZrjgaTlrp/ooYzjgZXjgozjgotcbiAqXG4gKiBAcGFyYW0gY2FjaGXjgZfjgZ/jgYRBUEnjga5VUkxcbiAqL1xuZXhwb3J0IGNvbnN0IGZldGNoQXBpQ2FjaGUgPSAodXJsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+XG4gIHBvc3RNZXNzYWdlKHsgdGl0bGU6IFwiZmV0Y2hBcGlDYWNoZVwiLCBib2R5OiB7IHVybCB9IH0pO1xuXG5jb25zdCBwb3N0TWVzc2FnZSA9IDxULCBVID0gdW5rbm93bj4oXG4gIGRhdGE6IHsgdGl0bGU6IHN0cmluZzsgYm9keTogVCB9LFxuKTogUHJvbWlzZTxVPiA9PiB7XG4gIGNvbnN0IHsgY29udHJvbGxlciB9ID0gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXI7XG4gIGlmICghY29udHJvbGxlcikge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCk7XG4gICAgZXJyb3IubmFtZSA9IFwiU2VydmljZVdvcmtlck5vdEFjdGl2ZVlldEVycm9yXCI7XG4gICAgZXJyb3IubWVzc2FnZSA9IFwiU2VydmljZSB3b3JrZXIgaXMgbm90IGFjdGl2ZSB5ZXRcIjtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZTxVPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgIGNoYW5uZWwucG9ydDEuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgIFwibWVzc2FnZVwiLFxuICAgICAgKGV2ZW50KSA9PlxuICAgICAgICBldmVudC5kYXRhPy5lcnJvciA/IHJlamVjdChldmVudC5kYXRhLmVycm9yKSA6IHJlc29sdmUoZXZlbnQuZGF0YSksXG4gICAgKTtcbiAgICBjb250cm9sbGVyLnBvc3RNZXNzYWdlKGRhdGEsIFtjaGFubmVsLnBvcnQyXSk7XG4gIH0pO1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuXG5pbXBvcnQgeyB0ZXh0SW5wdXQgfSBmcm9tIFwiLi9kb20udHNcIjtcbmltcG9ydCB7IEN1cnNvciB9IGZyb20gXCIuL2N1cnNvci5kLnRzXCI7XG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tIFwiLi9zZWxlY3Rpb24uZC50c1wiO1xuZXhwb3J0IHR5cGUgeyBDdXJzb3IsIFNlbGVjdGlvbiB9O1xuXG5leHBvcnQgY29uc3QgdGFrZVN0b3JlcyA9ICgpOiB7IGN1cnNvcjogQ3Vyc29yOyBzZWxlY3Rpb246IFNlbGVjdGlvbiB9ID0+IHtcbiAgY29uc3QgdGV4dGFyZWEgPSB0ZXh0SW5wdXQoKTtcbiAgaWYgKCF0ZXh0YXJlYSkge1xuICAgIHRocm93IEVycm9yKGAjdGV4dC1pbnB1dCBpcyBub3QgZm91bmQuYCk7XG4gIH1cblxuICBjb25zdCByZWFjdEtleSA9IE9iamVjdC5rZXlzKHRleHRhcmVhKVxuICAgIC5maW5kKChrZXkpID0+IGtleS5zdGFydHNXaXRoKFwiX19yZWFjdEZpYmVyXCIpKTtcbiAgaWYgKCFyZWFjdEtleSkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgJyN0ZXh0LWlucHV0IG11c3QgaGFzIHRoZSBwcm9wZXJ0eSB3aG9zZSBuYW1lIHN0YXJ0cyB3aXRoIFwiX19yZWFjdEZpYmVyXCInLFxuICAgICk7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlIERPTeOCkueEoeeQhuefoueQhm9iamVjdOOBqOOBl+OBpuaJseOBo+OBpuOBhOOCi1xuICBjb25zdCBzdG9yZXMgPSAodGV4dGFyZWFbXG4gICAgcmVhY3RLZXlcbiAgXSBhcyBSZWFjdEZpYmVyKS5yZXR1cm4ucmV0dXJuLnN0YXRlTm9kZS5fc3RvcmVzIGFzIChDdXJzb3IgfCBTZWxlY3Rpb24pW107XG5cbiAgY29uc3QgY3Vyc29yID0gc3RvcmVzLmZpbmQoKHN0b3JlKSA9PlxuICAgIHN0b3JlLmNvbnN0cnVjdG9yLm5hbWUgPT09IFwiQ3Vyc29yXCJcbiAgKSBhcyAoQ3Vyc29yIHwgdW5kZWZpbmVkKTtcbiAgaWYgKCFjdXJzb3IpIHtcbiAgICB0aHJvdyBFcnJvcignI3RleHQtaW5wdXQgbXVzdCBoYXMgYSBcIkN1cnNvclwiIHN0b3JlLicpO1xuICB9XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHN0b3Jlcy5maW5kKChzdG9yZSkgPT5cbiAgICBzdG9yZS5jb25zdHJ1Y3Rvci5uYW1lID09PSBcIlNlbGVjdGlvblwiXG4gICkgYXMgKFNlbGVjdGlvbiB8IHVuZGVmaW5lZCk7XG4gIGlmICghc2VsZWN0aW9uKSB7XG4gICAgdGhyb3cgRXJyb3IoJyN0ZXh0LWlucHV0IG11c3QgaGFzIGEgXCJTZWxlY3Rpb25cIiBzdG9yZS4nKTtcbiAgfVxuXG4gIHJldHVybiB7IGN1cnNvciwgc2VsZWN0aW9uIH07XG59O1xuXG5pbnRlcmZhY2UgUmVhY3RGaWJlciB7XG4gIHJldHVybjoge1xuICAgIHJldHVybjoge1xuICAgICAgc3RhdGVOb2RlOiB7XG4gICAgICAgIF9zdG9yZXM6IChDdXJzb3IgfCBTZWxlY3Rpb24pW107XG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cblxuaW1wb3J0IHsgdGFrZVN0b3JlcyB9IGZyb20gXCIuL3N0b3Jlcy50c1wiO1xuaW1wb3J0IHsgQ3Vyc29yIH0gZnJvbSBcIi4vY3Vyc29yLmQudHNcIjtcbmV4cG9ydCB0eXBlIHsgQ3Vyc29yIH07XG5cbmV4cG9ydCBjb25zdCB0YWtlQ3Vyc29yID0gKCk6IEN1cnNvciA9PiB0YWtlU3RvcmVzKCkuY3Vyc29yO1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbmltcG9ydCB7IHRha2VTdG9yZXMgfSBmcm9tIFwiLi9zdG9yZXMudHNcIjtcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gXCIuL3NlbGVjdGlvbi5kLnRzXCI7XG5leHBvcnQgdHlwZSB7IFNlbGVjdGlvbiB9O1xuXG5leHBvcnQgY29uc3QgdGFrZVNlbGVjdGlvbiA9ICgpOiBTZWxlY3Rpb24gPT4gdGFrZVN0b3JlcygpLnNlbGVjdGlvbjtcbiIsICIvKiog562J5YCk5q+U6LyD55So44GrYEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zYOOCkmVuY29kZeOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGVuY29kZSA9IChcbiAgb3B0aW9uczogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgfCBib29sZWFuIHwgdW5kZWZpbmVkLFxuKTogbnVtYmVyID0+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJib29sZWFuXCIpIHJldHVybiBOdW1iZXIob3B0aW9ucyk7XG4gIC8vIOWQhOODleODqeOCsOOCkuODk+ODg+ODiOOBq+OCqOODs+OCs+ODvOODieOBmeOCi1xuICByZXR1cm4gKFxuICAgIChvcHRpb25zLmNhcHR1cmUgPyAxIDogMCkgfFxuICAgIChvcHRpb25zLm9uY2UgPyAyIDogMCkgfFxuICAgIChvcHRpb25zLnBhc3NpdmUgPyA0IDogMClcbiAgKTtcbn07XG4vKiog562J5YCk5q+U6LyD55So44GrZW5jb2Rl44GX44GfYEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zYOOCkmRlY29kZeOBmeOCi1xuICpcbiAqIC0gYGNhcHR1cmVgOiBgMGIwMDFgXG4gKiAtIGBvbmNlYDogYDBiMDEwYFxuICogLSBgcGFzc2l2ZWA6IGAwYjEwMGBcbiAqIC0gYDBgOiBgdW5kZWZpbmVkYFxuICpcbiAqIEBwYXJhbSBlbmNvZGVkIGBBZGRFdmVudExpc3RlbmVyT3B0aW9uc2DjgpJlbmNvZGXjgZfjgZ/lgKRcbiAqIEByZXR1cm5zIGBBZGRFdmVudExpc3RlbmVyT3B0aW9uc2Djgb7jgZ/jga9gdW5kZWZpbmVkYFxuICovXG5leHBvcnQgY29uc3QgZGVjb2RlID0gKFxuICBlbmNvZGVkOiBudW1iZXIsXG4pOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChlbmNvZGVkID09PSAwKSByZXR1cm47XG4gIGNvbnN0IG9wdGlvbnM6IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zID0ge307XG4gIGlmIChlbmNvZGVkICYgMSkgb3B0aW9ucy5jYXB0dXJlID0gdHJ1ZTtcbiAgaWYgKGVuY29kZWQgJiAyKSBvcHRpb25zLm9uY2UgPSB0cnVlO1xuICBpZiAoZW5jb2RlZCAmIDQpIG9wdGlvbnMucGFzc2l2ZSA9IHRydWU7XG5cbiAgcmV0dXJuIG9wdGlvbnM7XG59O1xuIiwgImltcG9ydCB7IFNjcmFwYm94IH0gZnJvbSBcIi4uLy4uL2RlcHMvc2NyYXBib3gudHNcIjtcbmltcG9ydCB7IHRleHRJbnB1dCB9IGZyb20gXCIuL2RvbS50c1wiO1xuaW1wb3J0IHsgZGVjb2RlLCBlbmNvZGUgfSBmcm9tIFwiLi9faW50ZXJuYWwudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG4vKiogLSBmaXJzdCBrZXk6IGV2ZW50IG5hbWVcbiAqIC0gc2Vjb25kIGtleTogbGlzdGVuZXJcbiAqIC0gdmFsdWU6IGVuY29kZWQgb3B0aW9uc1xuICovXG5jb25zdCBsaXN0ZW5lck1hcCA9IG5ldyBNYXA8XG4gIGtleW9mIEhUTUxFbGVtZW50RXZlbnRNYXAsXG4gIE1hcDxFdmVudExpc3RlbmVyLCBTZXQ8bnVtYmVyPj5cbj4oKTtcbmNvbnN0IG9uY2VMaXN0ZW5lck1hcCA9IG5ldyBNYXA8RXZlbnRMaXN0ZW5lciwgTWFwPG51bWJlciwgRXZlbnRMaXN0ZW5lcj4+KCk7XG5cbi8qKiBgI3RleHQtaW5wdXRg44Gr5a++44GX44Gm44Kk44OZ44Oz44OI44Oq44K544OK44O844KS6L+95Yqg44GZ44KLXG4gKlxuICogYCN0ZXh0LWlucHV0YOOBr+ODmuODvOOCuOODrOOCpOOCouOCpuODiOOBjOWkieOCj+OCi+OBqOWJiumZpOOBleOCjOOCi+OBn+OCgeOAgeeZu+mMsuOBl+OBn+OCpOODmeODs+ODiOODquOCueODiuODvOOBruiomOaGtuOBqOWGjeeZu+mMsuOCkuOBk+OBrumWouaVsOOBp+ihjOOBo+OBpuOBhOOCi1xuICpcbiAqIEBwYXJhbSBuYW1lIGV2ZW50IG5hbWVcbiAqIEBwYXJhbSBsaXN0ZW5lciBldmVudCBsaXN0ZW5lclxuICogQHBhcmFtIG9wdGlvbnMgZXZlbnQgbGlzdGVuZXIgb3B0aW9uc1xuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZFRleHRJbnB1dEV2ZW50TGlzdGVuZXIgPSA8SyBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50RXZlbnRNYXA+KFxuICBuYW1lOiBLLFxuICBsaXN0ZW5lcjogKFxuICAgIHRoaXM6IEhUTUxUZXh0QXJlYUVsZW1lbnQsXG4gICAgZXZlbnQ6IEhUTUxFbGVtZW50RXZlbnRNYXBbS10sXG4gICkgPT4gdW5rbm93bixcbiAgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyxcbik6IHZvaWQgPT4ge1xuICBjb25zdCBhcmdNYXAgPSBsaXN0ZW5lck1hcC5nZXQobmFtZSkgPz8gbmV3IE1hcDxFdmVudExpc3RlbmVyLCBTZXQ8bnVtYmVyPj4oKTtcbiAgY29uc3QgZW5jb2RlZE9wdGlvbnMgPSBhcmdNYXAuZ2V0KGxpc3RlbmVyIGFzIEV2ZW50TGlzdGVuZXIpID8/IG5ldyBTZXQoKTtcbiAgaWYgKGVuY29kZWRPcHRpb25zLmhhcyhlbmNvZGUob3B0aW9ucykpKSByZXR1cm47XG4gIGVuY29kZWRPcHRpb25zLmFkZChlbmNvZGUob3B0aW9ucykpO1xuICBhcmdNYXAuc2V0KGxpc3RlbmVyIGFzIEV2ZW50TGlzdGVuZXIsIGVuY29kZWRPcHRpb25zKTtcbiAgbGlzdGVuZXJNYXAuc2V0KG5hbWUsIGFyZ01hcCk7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJvYmplY3RcIiAmJiBvcHRpb25zPy5vbmNlKSB7XG4gICAgY29uc3Qgb25jZU1hcCA9IG9uY2VMaXN0ZW5lck1hcC5nZXQobGlzdGVuZXIgYXMgRXZlbnRMaXN0ZW5lcikgPz9cbiAgICAgIG5ldyBNYXA8bnVtYmVyLCBFdmVudExpc3RlbmVyPigpO1xuICAgIGNvbnN0IGVuY29kZWQgPSBlbmNvZGUob3B0aW9ucyk7XG5cbiAgICAvKiog5ZG844Gz5Ye644GX5pmC44Gr44CBYGxpc3RlbmVyTWFwYOOBi+OCieOBrueZu+mMsuOCguino+mZpOOBmeOCi3dyYXBwZXIgbGlzdGVuZXIgKi9cbiAgICBjb25zdCBvbmNlTGlzdGVuZXIgPSBmdW5jdGlvbiAoXG4gICAgICB0aGlzOiBIVE1MVGV4dEFyZWFFbGVtZW50LFxuICAgICAgZXZlbnQ6IEhUTUxFbGVtZW50RXZlbnRNYXBbS10sXG4gICAgKSB7XG4gICAgICByZW1vdmVUZXh0SW5wdXRFdmVudExpc3RlbmVyKG5hbWUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgICAgIG9uY2VNYXAuZGVsZXRlKGVuY29kZWQpO1xuICAgICAgcmV0dXJuIGxpc3RlbmVyLmNhbGwodGhpcywgZXZlbnQpO1xuICAgIH07XG4gICAgb25jZU1hcC5zZXQoZW5jb2RlZCwgb25jZUxpc3RlbmVyIGFzIEV2ZW50TGlzdGVuZXIpO1xuICAgIG9uY2VMaXN0ZW5lck1hcC5zZXQobGlzdGVuZXIgYXMgRXZlbnRMaXN0ZW5lciwgb25jZU1hcCk7XG5cbiAgICBjb25zdCB0ZXh0aW5wdXQgPSB0ZXh0SW5wdXQoKTtcbiAgICBpZiAoIXRleHRpbnB1dCkgcmV0dXJuO1xuICAgIHRleHRpbnB1dC5hZGRFdmVudExpc3RlbmVyPEs+KG5hbWUsIG9uY2VMaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cbiAgY29uc3QgdGV4dGlucHV0ID0gdGV4dElucHV0KCk7XG4gIGlmICghdGV4dGlucHV0KSByZXR1cm47XG4gIHRleHRpbnB1dC5hZGRFdmVudExpc3RlbmVyPEs+KG5hbWUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbn07XG5cbi8vIHJlLXJlZ2lzdGVyIGV2ZW50IGxpc3RlbmVycyB3aGVuIHRoZSBsYXlvdXQgY2hhbmdlc1xuc2NyYXBib3gub24oXCJsYXlvdXQ6Y2hhbmdlZFwiLCAoKSA9PiB7XG4gIGNvbnN0IHRleHRpbnB1dCA9IHRleHRJbnB1dCgpO1xuICBpZiAoIXRleHRpbnB1dCkgcmV0dXJuO1xuICBmb3IgKGNvbnN0IFtuYW1lLCBhcmdNYXBdIG9mIGxpc3RlbmVyTWFwKSB7XG4gICAgZm9yIChjb25zdCBbbGlzdGVuZXIsIGVuY29kZWRPcHRpb25zXSBvZiBhcmdNYXApIHtcbiAgICAgIGZvciAoY29uc3QgZW5jb2RlZCBvZiBlbmNvZGVkT3B0aW9ucykge1xuICAgICAgICB0ZXh0aW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGxpc3RlbmVyIGFzIEV2ZW50TGlzdGVuZXIsXG4gICAgICAgICAgZGVjb2RlKGVuY29kZWQpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCByZW1vdmVUZXh0SW5wdXRFdmVudExpc3RlbmVyID0gPFxuICBLIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRFdmVudE1hcCxcbj4oXG4gIG5hbWU6IEssXG4gIGxpc3RlbmVyOiAoZXZlbnQ6IEhUTUxFbGVtZW50RXZlbnRNYXBbS10pID0+IHVua25vd24sXG4gIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMsXG4pOiB2b2lkID0+IHtcbiAgY29uc3QgYXJnTWFwID0gbGlzdGVuZXJNYXAuZ2V0KG5hbWUpO1xuICBpZiAoIWFyZ01hcCkgcmV0dXJuO1xuICBjb25zdCBlbmNvZGVkT3B0aW9ucyA9IGFyZ01hcC5nZXQobGlzdGVuZXIgYXMgRXZlbnRMaXN0ZW5lcik7XG4gIGlmICghZW5jb2RlZE9wdGlvbnMpIHJldHVybjtcbiAgY29uc3QgZW5jb2RlZCA9IGVuY29kZShvcHRpb25zKTtcbiAgZW5jb2RlZE9wdGlvbnMuZGVsZXRlKGVuY29kZWQpO1xuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09IFwib2JqZWN0XCIgJiYgb3B0aW9ucz8ub25jZSkge1xuICAgIGNvbnN0IG9uY2VNYXAgPSBvbmNlTGlzdGVuZXJNYXAuZ2V0KGxpc3RlbmVyIGFzIEV2ZW50TGlzdGVuZXIpO1xuICAgIGlmICghb25jZU1hcCkgcmV0dXJuO1xuICAgIGNvbnN0IG9uY2VMaXN0ZW5lciA9IG9uY2VNYXAuZ2V0KGVuY29kZWQpO1xuICAgIGlmICghb25jZUxpc3RlbmVyKSByZXR1cm47XG5cbiAgICBjb25zdCB0ZXh0aW5wdXQgPSB0ZXh0SW5wdXQoKTtcbiAgICBpZiAoIXRleHRpbnB1dCkgcmV0dXJuO1xuICAgIHRleHRpbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIG9uY2VMaXN0ZW5lciwgb3B0aW9ucyk7XG4gICAgb25jZU1hcC5kZWxldGUoZW5jb2RlZCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHRleHRpbnB1dCA9IHRleHRJbnB1dCgpO1xuICBpZiAoIXRleHRpbnB1dCkgcmV0dXJuO1xuICB0ZXh0aW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG59O1xuIiwgIi8qKiDmraPopo/ooajnj77jgpJlc2NhcGXjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBlc2NhcGVSZWdFeHAgPSAodGV4dDogc3RyaW5nKTogc3RyaW5nID0+XG4gIHRleHQucmVwbGFjZSgvWy4qKz9ePSE6JHt9KCl8W1xcXVxcL1xcXFxdL2csIFwiXFxcXCQmXCIpO1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwibGliXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuaW1wb3J0IHsgaCwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7XG4gIGVuY29kZVRpdGxlVVJJLFxuICBwdXNoUGFnZVRyYW5zaXRpb24sXG4gIFNjcmFwYm94LFxufSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyBTZWFyY2hSZXN1bHQgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IGVzY2FwZVJlZ0V4cCB9IGZyb20gXCIuL2VzY2FwZVJlZ0V4cC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmV4cG9ydCB0eXBlIFBhZ2UgPSBTZWFyY2hSZXN1bHRbXCJwYWdlc1wiXVswXTtcblxuZXhwb3J0IGludGVyZmFjZSBDYXJkUHJvcHMgZXh0ZW5kcyBQYWdlIHtcbiAgcHJvamVjdDogc3RyaW5nO1xuICBxdWVyeTogc3RyaW5nO1xuICBjbG9zZTogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IENhcmQgPSAoXG4gIHsgcHJvamVjdCwgdGl0bGUsIHdvcmRzLCBsaW5lcywgcXVlcnksIGNsb3NlIH06IENhcmRQcm9wcyxcbikgPT4ge1xuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBoLkpTWC5UYXJnZXRlZE1vdXNlRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB7XG4gICAgICBwdXNoUGFnZVRyYW5zaXRpb24oeyB0eXBlOiBcInNlYXJjaFwiLCBxdWVyeSwgdG86IHsgcHJvamVjdCwgdGl0bGUgfSB9KTtcbiAgICAgIGlmIChlLm1ldGFLZXkgfHwgZS5jdHJsS2V5IHx8IGUuYWx0S2V5IHx8IGUuc2hpZnRLZXkpIHJldHVybjtcbiAgICAgIGNsb3NlKCk7XG4gICAgfSxcbiAgICBbcHJvamVjdCwgdGl0bGUsIHF1ZXJ5LCBjbG9zZV0sXG4gICk7XG5cbiAgY29uc3QgaGlnaGxpZ2h0ZWRMaW5lcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHJlZ0V4cCA9IG5ldyBSZWdFeHAoXG4gICAgICBgKCR7d29yZHMubWFwKCh3b3JkKSA9PiBlc2NhcGVSZWdFeHAod29yZCkpLmpvaW4oXCJ8XCIpfSlgLFxuICAgICAgXCJpXCIsXG4gICAgKTtcbiAgICByZXR1cm4gbGluZXMuZmxhdE1hcCgobGluZSkgPT4ge1xuICAgICAgY29uc3Qgd29yZHMgPSBsaW5lLnNwbGl0KHJlZ0V4cCk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICB7d29yZHMubWFwKCh3b3JkLCBpKSA9PiBpICUgMiA9PT0gMCA/IHdvcmQgOiA8c3Ryb25nPnt3b3JkfTwvc3Ryb25nPil9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICk7XG4gICAgfSk7XG4gIH0sIFtsaW5lcywgd29yZHNdKTtcblxuICByZXR1cm4gKFxuICAgIDxhXG4gICAgICBocmVmPXtgLyR7cHJvamVjdH0vJHtlbmNvZGVUaXRsZVVSSSh0aXRsZSl9YH1cbiAgICAgIHRhcmdldD17YCR7cHJvamVjdCA9PT0gc2NyYXBib3guUHJvamVjdC5uYW1lID8gXCJcIiA6IFwiX2JsYW5rXCJ9YH1cbiAgICAgIHJlbD17YCR7XG4gICAgICAgIHByb2plY3QgPT09IHNjcmFwYm94LlByb2plY3QubmFtZSA/IFwicm91dGVcIiA6IFwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICB9YH1cbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgID5cbiAgICAgIHt0aXRsZX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAge2hpZ2hsaWdodGVkTGluZXN9XG4gICAgICA8L2Rpdj5cbiAgICA8L2E+XG4gICk7XG59O1xuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZU9wZW5PcGVyYXRvcnMge1xuICBvcGVuOiAoKSA9PiB2b2lkO1xuICBjbG9zZTogKCkgPT4gdm9pZDtcbiAgdG9nZ2xlOiAoKSA9PiB2b2lkO1xufVxuZXhwb3J0IGNvbnN0IHVzZU9wZW4gPSAoXG4gIGZsYWc6IGJvb2xlYW4sXG4pOiByZWFkb25seSBbYm9vbGVhbiwgVXNlT3Blbk9wZXJhdG9yc10gPT4ge1xuICBjb25zdCBbaXNPcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZsYWcpO1xuXG4gIGNvbnN0IG9wZW4gPSB1c2VDYWxsYmFjaygoKSA9PiBzZXRPcGVuKHRydWUpLCBbXSk7XG4gIGNvbnN0IGNsb3NlID0gdXNlQ2FsbGJhY2soKCkgPT4gc2V0T3BlbihmYWxzZSksIFtdKTtcbiAgY29uc3QgdG9nZ2xlID0gdXNlQ2FsbGJhY2soKCkgPT4gc2V0T3BlbigocHJldikgPT4gIXByZXYpLCBbXSk7XG5cbiAgcmV0dXJuIFtpc09wZW4sIHsgb3BlbiwgY2xvc2UsIHRvZ2dsZSB9XSBhcyBjb25zdDtcbn07XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBzZWFyY2hGb3JQYWdlcywgU2VhcmNoUmVzdWx0IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1yZXN0LnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm91bmRQYWdlIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgd29yZHM6IHN0cmluZ1tdO1xuICBsaW5lczogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIFVzZXJTZWFyY2hSZXN1bHQge1xuICBsb2FkaW5nOiBib29sZWFuO1xuICByZXN1bHQ/OiBTZWFyY2hSZXN1bHQ7XG59XG5cbmV4cG9ydCBjb25zdCB1c2VTZWFyY2ggPSAocHJvamVjdDogc3RyaW5nLCBxdWVyeTogc3RyaW5nKTogVXNlclNlYXJjaFJlc3VsdCA9PiB7XG4gIGNvbnN0IFtyZXN1bHQsIHNldEl0ZW1zXSA9IHVzZVN0YXRlPFNlYXJjaFJlc3VsdCB8IHVuZGVmaW5lZD4oKTtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGRvbmUgPSB1c2VSZWY8UHJvbWlzZTx2b2lkPj4oUHJvbWlzZS5yZXNvbHZlKCkpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChxdWVyeSA9PT0gXCJcIikge1xuICAgICAgc2V0SXRlbXModW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdGVybWluYXRlID0gZmFsc2U7XG4gICAgZG9uZS5jdXJyZW50ID0gKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGRvbmUuY3VycmVudDtcbiAgICAgIGlmICh0ZXJtaW5hdGUpIHJldHVybjtcblxuICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNlYXJjaEZvclBhZ2VzKHF1ZXJ5LCBwcm9qZWN0KTtcbiAgICAgICAgaWYgKHRlcm1pbmF0ZSkgcmV0dXJuO1xuICAgICAgICBzZXRJdGVtcyhyZXN1bHQub2sgPyByZXN1bHQudmFsdWUgOiB1bmRlZmluZWQpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfSkoKTtcblxuICAgIHJldHVybiAoKSA9PiB0ZXJtaW5hdGUgPSB0cnVlO1xuICB9LCBbcXVlcnksIHByb2plY3RdKTtcblxuICByZXR1cm4geyBsb2FkaW5nLCByZXN1bHQgfTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuXG5pbXBvcnQgeyBoIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5cbmV4cG9ydCBjb25zdCBDU1MgPSAoKSA9PiAoXG4gIDxzdHlsZT5cbiAgICB7YC5tb2RhbCB7XG4gIHBvc2l0aW9uOmZpeGVkO1xuICBpbnNldDowO1xuICB6LWluZGV4OjEwNTA7XG4gIFxuICBiYWNrZ3JvdW5kLWNvbG9yOiMwMDBjO1xuICBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcm93LWdhcDogMTBweDtcbiAgcGFkZGluZzogMTBweDtcbn1cbi5jbG9zZWQge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm1vZGFsID4gKiB7XG4gIGNvbG9yOiB2YXIoLS1wYWdlLXRleHQtY29sb3IsICM0YTRhNGEpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYWdlLWJnLCAjZmVmZWZlKTtcbiAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tYm9keS1iZywgI2RjZGRlMCk7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcblxuICBwYWRkaW5nOiA1cHg7XG4gIHdpZHRoOiBjYWxjKHZhcigtLWl0ZW0td2lkdGgsIDEwMCUpIC0gMTBweCk7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLm1vZGFsIHtcbiAgICBwYWRkaW5nOiAzMHB4O1xuICB9XG59XG5cbi5jb250cm9sbGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAwLjJlbTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cbmlucHV0IHtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBwYWRkaW5nOiAwIDEwcHg7XG4gIGhlaWdodDogMzJweDtcbiAgYm9yZGVyOiB0cmFuc3BhcmVudDtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgY29sb3I6IHZhcigtLXNlYXJjaC1mb3JtLXRleHQtY29sb3IsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNSkpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWFyY2gtZm9ybS1iZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSlcbn1cblxuLnJlc3VsdCB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiA1cHggMDtcbiAgbWFyZ2luOiAycHggMCAwO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAyOHB4O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTUpO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAzcHggMjBweDtcbiAgY2xlYXI6IGJvdGg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBjb2xvcjogaW5oZXJpdDtcbn1cbi5kZXNjcmlwdGlvbiB7XG4gIG1hcmdpbi10b3A6IDAuNWVtO1xuICBjb2xvcjogdmFyKC0taW5jcmVtZW50YWwtZnVsbHRleHQtc2VhcmNoLWRlc2NyaXB0aW9uLXRleHQtY29sb3IsICNjNGM0YzQpO1xuICBmb250LXNpemU6IDEycHg7XG4gIGxpbmUtaGVpZ2h0OiAxNHB4O1xuICBtYXgtaGVpZ2h0OiAyOHB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cbi5kZXNjcmlwdGlvbiBzdHJvbmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwO1xuICBjb2xvcjogIzY2Njtcbn1cblxuLnNwaW5uZXI6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgdGV4dC1yZW5kZXJpbmc6IGF1dG87XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjb250ZW50OiBcIlxcZjExMFwiO1xuICBmb250LWZhbWlseTogXCJGb250IEF3ZXNvbWUgNSBGcmVlXCI7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYW5pbWF0aW9uOiBmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTtcbn1gfVxuICA8L3N0eWxlPlxuKTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cImxpYlwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cbi8qKiBAanN4IGggKi9cbi8qKiBAanN4RnJhZyBGcmFnbWVudCAqL1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIGgsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgQ2FyZCB9IGZyb20gXCIuL0NhcmQudHN4XCI7XG5pbXBvcnQgeyB1c2VPcGVuLCBVc2VPcGVuT3BlcmF0b3JzIH0gZnJvbSBcIi4vdXNlT3Blbi50c1wiO1xuaW1wb3J0IHsgdXNlU2VhcmNoIH0gZnJvbSBcIi4vdXNlU2VhcmNoLnRzXCI7XG5pbXBvcnQgeyBDU1MgfSBmcm9tIFwiLi9DU1MudHN4XCI7XG5pbXBvcnQgdHlwZSB7IFNjcmFwYm94IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmNvbnN0IFNwaW5uZXIgPSAoKSA9PiA8aSBjbGFzc05hbWU9XCJzcGlubmVyXCIgLz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwUHJvcHMge1xuICBleHBvcnRPcHM6IChpbml0OiBVc2VPcGVuT3BlcmF0b3JzKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgQXBwID0gKHsgZXhwb3J0T3BzIH06IEFwcFByb3BzKSA9PiB7XG4gIGNvbnN0IFtxdWVyeSwgc2V0UXVlcnldID0gdXNlU3RhdGUoXCJcIik7XG5cbiAgY29uc3QgcHJvamVjdCA9IHNjcmFwYm94LlByb2plY3QubmFtZTtcbiAgLy8g5YWo5paH5qSc57Si44GZ44KLXG4gIGNvbnN0IHsgbG9hZGluZywgcmVzdWx0IH0gPSB1c2VTZWFyY2gocHJvamVjdCwgcXVlcnkpO1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IGguSlNYLlRhcmdldGVkRXZlbnQ8SFRNTElucHV0RWxlbWVudCwgRXZlbnQ+KSA9PiB7XG4gICAgICBzZXRRdWVyeShlLmN1cnJlbnRUYXJnZXQudmFsdWUpO1xuICAgIH0sXG4gICAgW10sXG4gICk7XG4gIGNvbnN0IFtpc09wZW4sIHsgb3BlbiwgY2xvc2UsIHRvZ2dsZSB9XSA9IHVzZU9wZW4oZmFsc2UpO1xuICBjb25zdCBleHBvcnRSZWYgPSB1c2VSZWY8VXNlT3Blbk9wZXJhdG9ycz4oeyBvcGVuLCBjbG9zZSwgdG9nZ2xlIH0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIE9iamVjdC5hc3NpZ24oZXhwb3J0UmVmLmN1cnJlbnQsIHsgb3BlbiwgY2xvc2UsIHRvZ2dsZSB9KTtcbiAgfSwgW10pO1xuICB1c2VFZmZlY3QoKCkgPT4gZXhwb3J0T3BzKGV4cG9ydFJlZi5jdXJyZW50KSwgW2V4cG9ydE9wc10pO1xuICBjb25zdCBoYW5kbGVDbG9zZSA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBoLkpTWC5UYXJnZXRlZE1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAoIShlLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkgcmV0dXJuO1xuICAgICAgaWYgKGUudGFyZ2V0LmlkICE9PSBcImJhY2tncm91bmRcIikgcmV0dXJuO1xuICAgICAgY2xvc2UoKTtcbiAgICB9LFxuICAgIFtdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxDU1MgLz5cbiAgICAgIDxkaXZcbiAgICAgICAgaWQ9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgY2xhc3NOYW1lPXtgbW9kYWwkeyFpc09wZW4gPyBcIiBjbG9zZWRcIiA6IFwiXCJ9YH1cbiAgICAgICAgb25DbGljaz17aGFuZGxlQ2xvc2V9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udHJvbGxlclwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPXtxdWVyeX0gb25JbnB1dD17aGFuZGxlSW5wdXR9IC8+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbmZvXCI+XG4gICAgICAgICAgICB7bG9hZGluZyAmJiA8U3Bpbm5lciAvPn1cbiAgICAgICAgICAgIHtgJHtyZXN1bHQ/LnBhZ2VzPy5sZW5ndGggPz8gMH0gcGFnZXNgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3Jlc3VsdD8ucGFnZXMgJiYgcmVzdWx0LnBhZ2VzLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAoXG4gICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwicmVzdWx0XCI+XG4gICAgICAgICAgICAgIHtyZXN1bHQucGFnZXMubWFwKChpdGVtKSA9PiAoXG4gICAgICAgICAgICAgICAgPGxpIGtleT17aXRlbS50aXRsZX0+XG4gICAgICAgICAgICAgICAgICA8Q2FyZFxuICAgICAgICAgICAgICAgICAgICB7Li4uaXRlbX1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgcXVlcnk9e3F1ZXJ5fVxuICAgICAgICAgICAgICAgICAgICBjbG9zZT17Y2xvc2V9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwibGliXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuaW1wb3J0IHsgaCwgcmVuZGVyIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi9BcHAudHN4XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3BlcmF0b3JzIHtcbiAgLyoqIGZvcm3jgpLplovjgY8gKi9cbiAgb3BlbjogKCkgPT4gdm9pZDtcblxuICAvKiogZm9ybeOCkumWieOBmOOCiyAqL1xuICBjbG9zZTogKCkgPT4gdm9pZDtcblxuICAvKiog6ZaL6ZaJ5YiH44KK5pu/44GIICovXG4gIHRvZ2dsZTogKCkgPT4gdm9pZDtcbn1cblxuLyoqIHNlYXJjaCBmb3Jt44KS6LW35YuV44GZ44KLXG4gKlxuICogQHJldHVybiBmb3Jt44Gu6ZaL6ZaJ5pON5L2c6Zai5pWwXG4gKi9cbmV4cG9ydCBjb25zdCBzZXR1cCA9ICgpOiBQcm9taXNlPE9wZXJhdG9ycz4gPT4ge1xuICBjb25zdCBhcHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICBjb25zdCBzaGFkb3dSb290ID0gYXBwLmF0dGFjaFNoYWRvdyh7IG1vZGU6IFwib3BlblwiIH0pO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZChhcHApO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZTxPcGVyYXRvcnM+KChyZXNvbHZlKSA9PiB7XG4gICAgcmVuZGVyKDxBcHAgZXhwb3J0T3BzPXtyZXNvbHZlfSAvPiwgc2hhZG93Um9vdCk7XG4gIH0pO1xufTtcbiIsICJjb25zdCBoYXMgPSA8VCBleHRlbmRzIG9iamVjdCwgSyBleHRlbmRzIGtleW9mIFQ+KFxuICBvYmo6IFQsXG4gIGtleTogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sLFxuKToga2V5IGlzIEsgPT4gT2JqZWN0Lmhhc093bihvYmosIGtleSk7XG5cbmNvbnN0IGFsaWFzZXMgPSB7XG4gIFwibGVmdFwiOiBcIkFycm93TGVmdFwiLFxuICBcInJpZ2h0XCI6IFwiQXJyb3dSaWdodFwiLFxuICBcInVwXCI6IFwiQXJyb3dVcFwiLFxuICBcImRvd25cIjogXCJBcnJvd0Rvd25cIixcbiAgXCJic1wiOiBcIkJhY2tzcGFjZVwiLFxuICBcIm1lbnVcIjogXCJDb250ZXh0TWVudVwiLFxuICBcImFwcHNcIjogXCJDb250ZXh0TWVudVwiLFxuICBcImRlbFwiOiBcIkRlbGV0ZVwiLFxuICBcInJldHVyblwiOiBcIkVudGVyXCIsXG4gIFwiY3JcIjogXCJFbnRlclwiLFxuICBcImVzY1wiOiBcIkVzY2FwZVwiLFxuICBcInBndXBcIjogXCJQYWdlVXBcIixcbiAgXCJwZ2RuXCI6IFwiUGFnZURvd25cIixcbiAgXCJsdFwiOiBcIjxcIixcbiAgXCJsZXNzXCI6IFwiPFwiLFxuICBcImxlc3NlclwiOiBcIjxcIixcbiAgXCJndFwiOiBcIj5cIixcbiAgXCJncmVhdGVyXCI6IFwiPlwiLFxufTtcblxuY29uc3QgYWxpYXMgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3Qga2V5TG93ZXIgPSBrZXkudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGhhcyhhbGlhc2VzLCBrZXlMb3dlcikgPyBhbGlhc2VzW2tleUxvd2VyXSA6IGtleTtcbn07XG5cbmNvbnN0IGVuVXNUcmFuc2xhdGlvbnMgPSB7XG4gIFwiQmFja3F1b3RlXCI6IFtcImBcIiwgXCJ+XCJdLFxuICBcIkRpZ2l0MVwiOiBbXCIxXCIsIFwiIVwiXSxcbiAgXCJEaWdpdDJcIjogW1wiMlwiLCBcIkBcIl0sXG4gIFwiRGlnaXQzXCI6IFtcIjNcIiwgXCIjXCJdLFxuICBcIkRpZ2l0NFwiOiBbXCI0XCIsIFwiJFwiXSxcbiAgXCJEaWdpdDVcIjogW1wiNVwiLCBcIiVcIl0sXG4gIFwiRGlnaXQ2XCI6IFtcIjZcIiwgXCJeXCJdLFxuICBcIkRpZ2l0N1wiOiBbXCI3XCIsIFwiJlwiXSxcbiAgXCJEaWdpdDhcIjogW1wiOFwiLCBcIipcIl0sXG4gIFwiRGlnaXQ5XCI6IFtcIjlcIiwgXCIoXCJdLFxuICBcIkRpZ2l0MFwiOiBbXCIwXCIsIFwiKVwiXSxcbiAgXCJNaW51c1wiOiBbXCItXCIsIFwiX1wiXSxcbiAgXCJFcXVhbFwiOiBbXCI9XCIsIFwiK1wiXSxcbiAgXCJCYWNrc2xhc2hcIjogW1wiXFxcXFwiLCBcInxcIl0sXG4gIFwiQnJhY2tldExlZnRcIjogW1wiW1wiLCBcIntcIl0sXG4gIFwiQnJhY2tldFJpZ2h0XCI6IFtcIl1cIiwgXCJ9XCJdLFxuICBcIlNlbWljb2xvblwiOiBbXCI7XCIsIFwiOlwiXSxcbiAgXCJRdW90ZVwiOiBbXCInXCIsICdcIiddLFxuICBcIkNvbW1hXCI6IFtcIixcIiwgXCI8XCJdLFxuICBcIlBlcmlvZFwiOiBbXCIuXCIsIFwiPlwiXSxcbiAgXCJTbGFzaFwiOiBbXCIvXCIsIFwiP1wiXSxcbn07XG5cbmNvbnN0IGNvZGVUb0VuVXNRd2VydHkgPSAoY29kZTogc3RyaW5nLCBzaGlmdD86IGJvb2xlYW4pID0+IHtcbiAgaWYgKGNvZGUuc3RhcnRzV2l0aChcIktleVwiKSkge1xuICAgIGxldCBrZXkgPSBjb2RlLnNsaWNlKDMpO1xuICAgIGlmICghc2hpZnQpIGtleSA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBrZXk7XG4gIH1cblxuICByZXR1cm4gaGFzKGVuVXNUcmFuc2xhdGlvbnMsIGNvZGUpXG4gICAgPyBlblVzVHJhbnNsYXRpb25zW2NvZGVdW3NoaWZ0ID8gMSA6IDBdXG4gICAgOiBjb2RlO1xufTtcblxuLyoqIFJlcHJlc2VudHMgYW4gZXJyb3IgdGhhdCBvY2N1cnMgd2hlbiBhbiBpbnZhbGlkIGtleSBpcyBlbmNvdW50ZXJlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW52YWxpZEtleUVycm9yIHtcbiAgbmFtZTogXCJJbnZhbGlkS2V5RXJyb3JcIjtcbiAga2V5OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IGBJbnZhbGlkIGtleTogJHtzdHJpbmd9YDtcbn1cbi8qKiBSZXByZXNlbnRzIGFuIGVycm9yIHRoYXQgb2NjdXJzIHdoZW4gYW4gdW5rbm93biBtb2RpZmllciBpcyBlbmNvdW50ZXJlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5rbm93bk1vZGlmaWVyRXJyb3Ige1xuICBuYW1lOiBcIlVua25vd25Nb2RpZmllckVycm9yXCI7XG4gIG1vZGlmaWVyOiBzdHJpbmc7XG4gIGNvbnRleHQ6IHN0cmluZztcbiAgbWVzc2FnZTogYCR7c3RyaW5nfTogVW5rbm93biBtb2RpZmllcjogJHtzdHJpbmd9YDtcbn1cbi8qKiBSZXByZXNlbnRzIGFuIGVycm9yIHRoYXQgb2NjdXJzIHdoZW4gYSBkdXBsaWNhdGUgbW9kaWZpZXIgaXMgZW5jb3VudGVyZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIER1cGxpY2F0ZU1vZGlmaWVyRXJyb3Ige1xuICBuYW1lOiBcIkR1cGxpY2F0ZU1vZGlmaWVyRXJyb3JcIjtcbiAgbW9kaWZpZXI6IHN0cmluZztcbiAgY29udGV4dDogc3RyaW5nO1xuICBtZXNzYWdlOiBgJHtzdHJpbmd9OiBEdXBsaWNhdGUgbW9kaWZpZXI6ICR7c3RyaW5nfWA7XG59XG4vKiogUmVwcmVzZW50cyBhbiBlcnJvciB0aGF0IG9jY3VycyB3aGVuIGEgZGlzYWxsb3dlZCBtb2RpZmllciBpcyB1c2VkIHdpdGggc2luZ2xlLWNoYXJhY3RlciBrZXlzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXNhbGxvd2VkTW9kaWZpZXJFcnJvciB7XG4gIG5hbWU6IFwiRGlzYWxsb3dlZE1vZGlmaWVyRXJyb3JcIjtcbiAgbW9kaWZpZXI6IHN0cmluZztcbiAgY29udGV4dDogc3RyaW5nO1xuICBtZXNzYWdlOiBgJHtzdHJpbmd9OiBVbnVzYWJsZSBtb2RpZmllciB3aXRoIHNpbmdsZS1jaGFyYWN0ZXIga2V5czogJHtzdHJpbmd9YDtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEga2V5IHdpdGggb3B0aW9uYWwgbW9kaWZpZXJzLlxuICpcbiAqIFRoaXMgaXMgYSBzdXBlcnNldCBvZiB0aGUgV2ViIEFQSSdzIFtgS2V5Ym9hcmRFdmVudGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50KS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLZXkge1xuICAvKiogdGhlIHNhbWUgYXMgW2BLZXlib2FyZEV2ZW50LmtleWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L2tleSkgKi9cbiAga2V5OiBzdHJpbmc7XG5cbiAgLyoqICB0aGUgc2FtZSBhcyBbYEtleWJvYXJkRXZlbnQuY29kZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L2NvZGUpICovXG4gIGNvZGU/OiBzdHJpbmc7XG5cbiAgLyoqICB0aGUgc2FtZSBhcyBbYEtleWJvYXJkRXZlbnQuc2hpZnRLZXlgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9zaGlmdEtleSkgKi9cbiAgc2hpZnRLZXk/OiBib29sZWFuO1xuXG4gIC8qKiAgdGhlIHNhbWUgYXMgW2BLZXlib2FyZEV2ZW50LmN0cmxLZXlgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9jdHJsS2V5KSAqL1xuICBjdHJsS2V5PzogYm9vbGVhbjtcblxuICAvKiogIHRoZSBzYW1lIGFzIFtgS2V5Ym9hcmRFdmVudC5hbHRLZXlgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9hbHRLZXkpICovXG4gIGFsdEtleT86IGJvb2xlYW47XG5cbiAgLyoqICB0aGUgc2FtZSBhcyBbYEtleWJvYXJkRXZlbnQubWV0YUtleWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L21ldGFLZXkpICovXG4gIG1ldGFLZXk/OiBib29sZWFuO1xufVxuXG5jb25zdCBzcGVjaWFsQ2FzZXMgPSB7XG4gIFwiPFwiOiBcImx0XCIsXG4gIFwiPlwiOiBcImd0XCIsXG59O1xuXG5jb25zdCBpZ25vcmVkID1cbiAgL14oJHxVbmlkZW50aWZpZWQkfFByb2Nlc3MkfERlYWQkfEFsdHxDb250cm9sfEh5cGVyfE1ldGF8U2hpZnR8U3VwZXJ8T1MpLztcblxuLyoqXG4gKiBDb252ZXJ0cyBhIEtleSBldmVudCBpbnRvIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uLlxuICpcbiAqIEBwYXJhbSBldmVudCAtIFRoZSBLZXkgZXZlbnQgdG8gc3RyaW5naWZ5LlxuICogQHJldHVybnMgVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgS2V5IGV2ZW50LlxuICovXG5leHBvcnQgY29uc3Qgc3RyaW5naWZ5ID0gKFxuICBldmVudDogS2V5LFxuKTogc3RyaW5nID0+IHtcbiAgbGV0IHNoaWZ0ID0gZXZlbnQuc2hpZnRLZXk7XG4gIGxldCBrZXkgPSBldmVudC5rZXkgfHwgXCJVbmlkZW50aWZpZWRcIjtcbiAgaWYgKGtleSA9PT0gXCJVbmlkZW50aWZpZWRcIikge1xuICAgIGtleSA9IGNvZGVUb0VuVXNRd2VydHkoZXZlbnQuY29kZSB8fCBcIlwiLCBzaGlmdCk7XG4gIH0gZWxzZSB7XG4gICAga2V5ID0gYWxpYXMoa2V5KTtcbiAgICBpZiAoa2V5ID09PSBcIiBcIikga2V5ID0gXCJTcGFjZVwiO1xuICB9XG5cbiAgaWYgKGlnbm9yZWQudGVzdChrZXkpKSByZXR1cm4gXCJcIjtcblxuICBpZiAoa2V5Lmxlbmd0aCA9PT0gMSkge1xuICAgIHNoaWZ0ID0gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAga2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBsZXQgbW9kaWZpZXJzID0gXCJcIjtcbiAgaWYgKGV2ZW50LmFsdEtleSkgbW9kaWZpZXJzICs9IFwiYS1cIjtcbiAgaWYgKGV2ZW50LmN0cmxLZXkpIG1vZGlmaWVycyArPSBcImMtXCI7XG4gIGlmIChldmVudC5tZXRhS2V5KSBtb2RpZmllcnMgKz0gXCJtLVwiO1xuICBpZiAoc2hpZnQpIG1vZGlmaWVycyArPSBcInMtXCI7XG5cbiAgaWYgKGhhcyhzcGVjaWFsQ2FzZXMsIGtleSkpIGtleSA9IHNwZWNpYWxDYXNlc1trZXldO1xuXG4gIHJldHVybiBtb2RpZmllcnMgfHwga2V5Lmxlbmd0aCA+IDEgPyBgPCR7bW9kaWZpZXJzfSR7a2V5fT5gIDoga2V5O1xufTtcblxuLyoqIFJlcHJlc2VudHMgYSByZXN1bHQgdGhhdCBjYW4gZWl0aGVyIGJlIHN1Y2Nlc3NmdWwgKGBva2AgaXMgYHRydWVgKSB3aXRoIGEgdmFsdWUgb2YgdHlwZSBgVGAsXG4gKiBvciBhIGZhaWx1cmUgKGBva2AgaXMgYGZhbHNlYCkgd2l0aCBhIHZhbHVlIG9mIHR5cGUgYEVgLlxuICovXG5leHBvcnQgdHlwZSBSZXN1bHQ8VCwgRT4gPSB7IG9rOiB0cnVlOyB2YWx1ZTogVCB9IHwgeyBvazogZmFsc2U7IHZhbHVlOiBFIH07XG5cbmNvbnN0IG1vZGlmaWVyTWFwID0ge1xuICBcImFcIjogXCJhbHRLZXlcIixcbiAgXCJjXCI6IFwiY3RybEtleVwiLFxuICBcIm1cIjogXCJtZXRhS2V5XCIsXG4gIFwic1wiOiBcInNoaWZ0S2V5XCIsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIFBhcnNlcyBhIGtleSBzdHJpbmcgYW5kIHJldHVybnMgYSBSZXN1bHQgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHBhcnNlZCBrZXkgb3IgYW4gZXJyb3IuXG4gKlxuICogQHBhcmFtIGtleVN0cmluZyAtIFRoZSBrZXkgc3RyaW5nIHRvIHBhcnNlLlxuICogQHJldHVybnMgQSBSZXN1bHQgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHBhcnNlZCBrZXkgb3IgYW4gZXJyb3IuXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZSA9IChcbiAga2V5U3RyaW5nOiBzdHJpbmcsXG4pOiBSZXN1bHQ8XG4gIEtleSxcbiAgfCBJbnZhbGlkS2V5RXJyb3JcbiAgfCBVbmtub3duTW9kaWZpZXJFcnJvclxuICB8IER1cGxpY2F0ZU1vZGlmaWVyRXJyb3JcbiAgfCBEaXNhbGxvd2VkTW9kaWZpZXJFcnJvclxuPiA9PiB7XG4gIGlmIChrZXlTdHJpbmcubGVuZ3RoID09PSAxKSB7XG4gICAgaWYgKC9cXHMvLnRlc3Qoa2V5U3RyaW5nKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIG5hbWU6IFwiSW52YWxpZEtleUVycm9yXCIsXG4gICAgICAgICAga2V5OiBrZXlTdHJpbmcsXG4gICAgICAgICAgbWVzc2FnZTogYEludmFsaWQga2V5OiAke2tleVN0cmluZ31gLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiB7IGtleToga2V5U3RyaW5nIH0gfTtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoID0ga2V5U3RyaW5nLm1hdGNoKC9ePCgoPzpbYS16XS0pKikoW2EtelxcZF0rfFtePD5cXHNdKT4kL2kpO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9rOiBmYWxzZSxcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIG5hbWU6IFwiSW52YWxpZEtleUVycm9yXCIsXG4gICAgICAgIGtleToga2V5U3RyaW5nLFxuICAgICAgICBtZXNzYWdlOiBgSW52YWxpZCBrZXk6ICR7a2V5U3RyaW5nfWAsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgY29uc3QgWywgbW9kaWZpZXJzLCBrZXldID0gbWF0Y2g7XG5cbiAgY29uc3Qgb2JqOiBLZXkgPSB7XG4gICAga2V5OiBhbGlhcyhrZXkpLFxuICB9O1xuXG4gIGZvciAoY29uc3QgbW9kaWZpZXIgb2YgbW9kaWZpZXJzLnNwbGl0KFwiLVwiKS5zbGljZSgwLCAtMSkpIHtcbiAgICBjb25zdCBtb2RpZmllckxvd2VyID0gbW9kaWZpZXIudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoIWhhcyhtb2RpZmllck1hcCwgbW9kaWZpZXJMb3dlcikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBuYW1lOiBcIlVua25vd25Nb2RpZmllckVycm9yXCIsXG4gICAgICAgICAgbW9kaWZpZXIsXG4gICAgICAgICAgY29udGV4dDoga2V5U3RyaW5nLFxuICAgICAgICAgIG1lc3NhZ2U6IGAke2tleVN0cmluZ306IFVua25vd24gbW9kaWZpZXI6ICR7bW9kaWZpZXJ9YCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IG1vZGlmaWVyTmFtZSA9IG1vZGlmaWVyTWFwW21vZGlmaWVyTG93ZXJdO1xuXG4gICAgaWYgKG9ialttb2RpZmllck5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBuYW1lOiBcIkR1cGxpY2F0ZU1vZGlmaWVyRXJyb3JcIixcbiAgICAgICAgICBtb2RpZmllcixcbiAgICAgICAgICBjb250ZXh0OiBrZXlTdHJpbmcsXG4gICAgICAgICAgbWVzc2FnZTogYCR7a2V5U3RyaW5nfTogRHVwbGljYXRlIG1vZGlmaWVyOiAke21vZGlmaWVyfWAsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIG9ialttb2RpZmllck5hbWVdID0gdHJ1ZTtcblxuICAgIGlmIChvYmoua2V5Lmxlbmd0aCA9PT0gMSAmJiBvYmouc2hpZnRLZXkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBuYW1lOiBcIkRpc2FsbG93ZWRNb2RpZmllckVycm9yXCIsXG4gICAgICAgICAgbW9kaWZpZXIsXG4gICAgICAgICAgY29udGV4dDoga2V5U3RyaW5nLFxuICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICBgJHtrZXlTdHJpbmd9OiBVbnVzYWJsZSBtb2RpZmllciB3aXRoIHNpbmdsZS1jaGFyYWN0ZXIga2V5czogJHttb2RpZmllcn1gLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IG9iaiB9O1xufTtcblxuLyoqXG4gKiBOb3JtYWxpemVzIGEga2V5IHN0cmluZyBieSBwYXJzaW5nIGFuZCBzdHJpbmdpZnlpbmcgaXQuXG4gKlxuICogQHBhcmFtIGtleVN0cmluZyAtIFRoZSBrZXkgc3RyaW5nIHRvIG5vcm1hbGl6ZS5cbiAqIEByZXR1cm5zIEEgUmVzdWx0IG9iamVjdCBjb250YWluaW5nIHRoZSBub3JtYWxpemVkIGtleSBzdHJpbmcgb3IgYW4gZXJyb3IuXG4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemUgPSAoa2V5U3RyaW5nOiBzdHJpbmcpOiBSZXN1bHQ8XG4gIHN0cmluZyxcbiAgfCBJbnZhbGlkS2V5RXJyb3JcbiAgfCBVbmtub3duTW9kaWZpZXJFcnJvclxuICB8IER1cGxpY2F0ZU1vZGlmaWVyRXJyb3JcbiAgfCBEaXNhbGxvd2VkTW9kaWZpZXJFcnJvclxuPiA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHBhcnNlKGtleVN0cmluZyk7XG4gIHJldHVybiByZXN1bHQub2sgPyB7IG9rOiB0cnVlLCB2YWx1ZTogc3RyaW5naWZ5KHJlc3VsdC52YWx1ZSkgfSA6IHJlc3VsdDtcbn07XG5cbi8qKlxuICogUGFyc2VzIGEga2V5IHNlcXVlbmNlIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKlxuICogQHBhcmFtIHNlcXVlbmNlIFRoZSBrZXkgc2VxdWVuY2UgdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgcGFyc2VkIGtleSBzZXF1ZW5jZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlU2VxdWVuY2UgPSAoa2V5U2VxdWVuY2U6IHN0cmluZyk6IHN0cmluZ1tdIHwgbnVsbCA9PlxuICBrZXlTZXF1ZW5jZS5tYXRjaCgvPFtePD5cXHNdKz58W1xcc1xcU118XiQvZyk7XG4iLCAibGV0IGRlYnVnTW9kZTogYm9vbGVhbiB8IFNldDxzdHJpbmc+ID0gZmFsc2U7XG5cbi8qKiBjYWNoZeWRqOOCiuOBrmRlYnVn5Ye65Yqb44Gu5pyJ5Yq544O754Sh5Yq544Gu5YiH44KK5pu/44GI44KS6KGM44GGXG4gKlxuICogQHBhcmFtIG1vZGUgYHRydWVg77ya5YWo44Gm44GuZGVidWflh7rlipvjgpLmnInlirnjgavjgZnjgossIGBmYWxzZWDvvJrlhajjgabjga5kZWJ1Z+WHuuWKm+OCkueEoeWKueOBq+OBmeOCiywg44Gd44KM5Lul5aSW77ya5oyH5a6a44GX44Gf44OV44Kh44Kk44Or5Lit44GuZGVidWflh7rlipvjga7jgb/mnInlirnjgavjgZnjgotcbiAqL1xuZXhwb3J0IGNvbnN0IHNldERlYnVnTW9kZSA9IChtb2RlOiBib29sZWFuIHwgSXRlcmFibGU8c3RyaW5nPik6IHZvaWQgPT4ge1xuICBkZWJ1Z01vZGUgPSB0eXBlb2YgbW9kZSA9PT0gXCJib29sZWFuXCIgPyBtb2RlIDogbmV3IFNldChtb2RlKTtcbn07XG5cbi8qKiBkZWJ1ZyBtb2Rl44Gu44Go44GN44Gg44GR5pyJ5Yq544GqY29uc29sZeOCkuODleOCoeOCpOODq+OBlOOBqOOBq+S9nOOCi1xuICpcbiAqIEBwYXJhbSBmaWxlbmFtZSDjgrPjg7Pjgr3jg7zjg6vlh7rlipvjgpLlkbzjgbPlh7rjgZfjgZ/jg5XjgqHjgqTjg6vlkI1cbiAqIEByZXR1cm4gY29uc29sZVxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlRGVidWcgPSAoZmlsZW5hbWU6IHN0cmluZyk6IENvbnNvbGUgPT5cbiAgT2JqZWN0LmZyb21FbnRyaWVzKFsuLi5PYmplY3QuZW50cmllcyhjb25zb2xlKV0ubWFwKFxuICAgIChba2V5LCB2YWx1ZV06IFtzdHJpbmcsIHVua25vd25dKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBba2V5LCB2YWx1ZV07XG4gICAgICBzd2l0Y2ggKGtleSBhcyBrZXlvZiBDb25zb2xlKSB7XG4gICAgICAgIGNhc2UgXCJ3YXJuXCI6XG4gICAgICAgIGNhc2UgXCJlcnJvclwiOlxuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAoLi4uYXJnczogdW5rbm93bltdKSA9PlxuICAgICAgICAgICAgICB2YWx1ZShgJWMke2ZpbGVuYW1lfWAsIFwiY29sb3I6IGdyYXlcIiwgLi4uYXJncyksXG4gICAgICAgICAgXTtcbiAgICAgICAgY2FzZSBcImxvZ1wiOlxuICAgICAgICBjYXNlIFwiaW5mb1wiOlxuICAgICAgICBjYXNlIFwiZGVidWdcIjpcbiAgICAgICAgICByZXR1cm4gW2tleSwgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBkZWJ1Z01vZGUgIT09IHRydWUgJiYgKCFkZWJ1Z01vZGUgfHwgIWRlYnVnTW9kZS5oYXMoZmlsZW5hbWUpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbHVlKGAlYyR7ZmlsZW5hbWV9YCwgXCJjb2xvcjogZ3JheVwiLCAuLi5hcmdzKTtcbiAgICAgICAgICB9XTtcbiAgICAgICAgY2FzZSBcImFzc2VydFwiOlxuICAgICAgICAgIHJldHVybiBba2V5LCAoYXNzZXJ0aW9uOiBib29sZWFuLCAuLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZGVidWdNb2RlICE9PSB0cnVlICYmICghZGVidWdNb2RlIHx8ICFkZWJ1Z01vZGUuaGFzKGZpbGVuYW1lKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWx1ZShhc3NlcnRpb24sIGAlYyR7ZmlsZW5hbWV9YCwgXCJjb2xvcjogZ3JheVwiLCAuLi5hcmdzKTtcbiAgICAgICAgICB9XTtcbiAgICAgICAgY2FzZSBcInRpbWVcIjpcbiAgICAgICAgY2FzZSBcInRpbWVFbmRcIjpcbiAgICAgICAgICByZXR1cm4gW2tleSwgKGxhYmVsOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZGVidWdNb2RlICE9PSB0cnVlICYmICghZGVidWdNb2RlIHx8ICFkZWJ1Z01vZGUuaGFzKGZpbGVuYW1lKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWx1ZShgJHtmaWxlbmFtZX0gJHtsYWJlbH1gKTtcbiAgICAgICAgICB9XTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gW2tleSwgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBkZWJ1Z01vZGUgIT09IHRydWUgJiYgKCFkZWJ1Z01vZGUgfHwgIWRlYnVnTW9kZS5oYXMoZmlsZW5hbWUpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSguLi5hcmdzKTtcbiAgICAgICAgICB9XTtcbiAgICAgIH1cbiAgICB9LFxuICApKSBhcyB1bmtub3duIGFzIENvbnNvbGU7XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuXG5pbXBvcnQge1xuICBEaXNhbGxvd2VkTW9kaWZpZXJFcnJvcixcbiAgRHVwbGljYXRlTW9kaWZpZXJFcnJvcixcbiAgSW52YWxpZEtleUVycm9yLFxuICBub3JtYWxpemUsXG4gIHBhcnNlU2VxdWVuY2UsXG4gIFJlc3VsdCxcbiAgc3RyaW5naWZ5LFxuICBVbmtub3duTW9kaWZpZXJFcnJvcixcbn0gZnJvbSBcIi4vZGVwcy92aW0tbGlrZS1rZXktbm90YXRpb24udHNcIjtcbmltcG9ydCB7IGNyZWF0ZURlYnVnIH0gZnJvbSBcIi4vZGVwcy9kZWJ1Zy1qcy50c1wiO1xuZXhwb3J0IHsgc2V0RGVidWdNb2RlIH0gZnJvbSBcIi4vZGVwcy9kZWJ1Zy1qcy50c1wiO1xuZXhwb3J0IHR5cGUgeyBSZXN1bHQgfTtcbmV4cG9ydCB0eXBlIHtcbiAgRGlzYWxsb3dlZE1vZGlmaWVyRXJyb3IsXG4gIER1cGxpY2F0ZU1vZGlmaWVyRXJyb3IsXG4gIEludmFsaWRLZXlFcnJvcixcbiAgVW5rbm93bk1vZGlmaWVyRXJyb3IsXG59O1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVEZWJ1ZyhcIlNjcmFwQmluZGluZ3M6bW9kLnRzXCIpO1xuXG5leHBvcnQgdHlwZSBDb21tYW5kID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBLZXlCaW5kaW5ncyA9IFJlY29yZDxzdHJpbmcsIENvbW1hbmQ+IHwgTWFwPHN0cmluZywgQ29tbWFuZD47XG5leHBvcnQgaW50ZXJmYWNlIEludmFsaWRTZXF1ZW5jZUVycm9yIHtcbiAgbmFtZTogXCJJbnZhbGlkU2VxdWVuY2VFcnJvclwiO1xuICBtZXNzYWdlOiBcImNhbm5vdCBwYXJzZSB0aGUgc2VxdWVuY2VcIjtcbn1cbmV4cG9ydCB0eXBlIEJpbmRpbmdFcnJvciA9XG4gIHwgSW52YWxpZFNlcXVlbmNlRXJyb3JcbiAgfCBJbnZhbGlkS2V5RXJyb3JcbiAgfCBEaXNhbGxvd2VkTW9kaWZpZXJFcnJvclxuICB8IER1cGxpY2F0ZU1vZGlmaWVyRXJyb3JcbiAgfCBVbmtub3duTW9kaWZpZXJFcnJvcjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHtAbGluayBNb3VzZXRyYXB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vdXNldHJhcE9wdGlvbnMge1xuICAvKiogQSBjYWxsYmFjayBjYWxsZWQgd2hlbmV2ZXIgdGhlIHNlcXVlbmNlIGlzIHVwZGF0ZWQuICovXG4gIG9uU2VxdWVuY2VVcGRhdGU/OiAoc2VxdWVuY2U6IHN0cmluZykgPT4gdm9pZDtcbiAgLyoqIFRoZSBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgdG8gZmx1c2ggdGhlIHNlcXVlbmNlLiAqL1xuICBmbHVzaEludGVydmFsPzogbnVtYmVyO1xufVxuXG4vKiogQSBrZXkgYmluZGluZyBtYW5hZ2VyIHRoYXQgYmluZHMga2V5IHNlcXVlbmNlcyB0byBjb21tYW5kcy5cbiAqXG4gKiBUaGUga2V5IHNlcXVlbmNlcyBhcmUgaW4gdGhlIFZpbS1saWtlIGtleSBub3RhdGlvbiBmb3JtYXQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjb25zdCBiaW5kaW5ncyA9IG5ldyBNb3VzZXRyYXAod2luZG93LCB7XG4gKiAgb25TZXF1ZW5jZVVwZGF0ZTogKHNlcXVlbmNlKSA9PiBjb25zb2xlLmxvZyhzZXF1ZW5jZSksXG4gKiBmbHVzaEludGVydmFsOiAxMDAwLFxuICogfSk7XG4gKiBiaW5kaW5ncy5iaW5kKFwiZ2dcIiwgKCkgPT4gY29uc29sZS5sb2coXCJnbyB0byB0aGUgdG9wXCIpKTtcbiAqIGJpbmRpbmdzLmJpbmQoXCJHXCIsICgpID0+IGNvbnNvbGUubG9nKFwiZ28gdG8gdGhlIGJvdHRvbVwiKSk7XG4gKiBiaW5kaW5ncy5iaW5kKFwiZFwiLCAoZSkgPT4ge1xuICogIGUucHJldmVudERlZmF1bHQoKTtcbiAqIGNvbnNvbGUubG9nKFwiZGVsZXRlXCIpO1xuICogfSk7XG4gKiBiaW5kaW5ncy5iaW5kKFwiZGRcIiwgKCkgPT4gY29uc29sZS5sb2coXCJkZWxldGUgdGhlIGxpbmVcIikpO1xuICogYmluZGluZ3MuYmluZChcInl5XCIsICgpID0+IGNvbnNvbGUubG9nKFwiY29weSB0aGUgbGluZVwiKSk7XG4gKiBiaW5kaW5ncy5iaW5kKFwicFwiLCAoKSA9PiBjb25zb2xlLmxvZyhcInBhc3RlXCIpKTtcbiAqIGJpbmRpbmdzLmJpbmQoXCJ1XCIsICgpID0+IGNvbnNvbGUubG9nKFwidW5kb1wiKSk7XG4gKiBiaW5kaW5ncy5iaW5kKFwiPEMtcj5cIiwgKCkgPT4gY29uc29sZS5sb2coXCJyZWRvXCIpKTtcbiAqICBgYGBcbiAqL1xuLyoqXG4gKiBSZXByZXNlbnRzIGEgTW91c2V0cmFwIG9iamVjdCB0aGF0IGJpbmRzIGtleSBzZXF1ZW5jZXMgdG8gY29tbWFuZHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBNb3VzZXRyYXAge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBNb3VzZXRyYXAgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBlbGVtZW50IHRvIGJpbmQgdGhlIGtleSBzZXF1ZW5jZXMgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgTW91c2V0cmFwIGluc3RhbmNlLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0YXJnZXQ6IE9taXQ8RXZlbnRUYXJnZXQsIFwiZGlzcGF0Y2hFdmVudFwiPixcbiAgICBvcHRpb25zPzogTW91c2V0cmFwT3B0aW9ucyxcbiAgKSB7XG4gICAgdGhpcy5vblNlcXVlbmNlVXBkYXRlID0gb3B0aW9ucz8ub25TZXF1ZW5jZVVwZGF0ZTtcbiAgICB0aGlzLmZsdXNoSW50ZXJ2YWwgPSBvcHRpb25zPy5mbHVzaEludGVydmFsID8/IDEwMDA7XG4gIH1cblxuICAvKiogQmluZHMgYSBzZXQgb2Yga2V5IGJpbmRpbmdzIHRvIGNvbW1hbmRzLlxuICAgKlxuICAgKiBUaGUga2V5IHNlcXVlbmNlcyBhcmUgaW4gdGhlIFZpbS1saWtlIGtleSBub3RhdGlvbiBmb3JtYXQuXG4gICAqXG4gICAqIEBwYXJhbSBrZXlCaW5kaW5ncyBBIG1hcCBvZiBrZXkgYmluZGluZ3MgdG8gY29tbWFuZHMuXG4gICAqIEByZXR1cm5zIEEgbWFwIG9mIGVycm9yIG1lc3NhZ2VzIGZvciBlYWNoIGtleSBiaW5kaW5nLlxuICAgKi9cbiAgYmluZChrZXlCaW5kaW5nczogS2V5QmluZGluZ3MpOiBNYXA8c3RyaW5nLCBCaW5kaW5nRXJyb3JbXT47XG5cbiAgLyoqIEJpbmRzIGEga2V5IHNlcXVlbmNlIHRvIGEgY29tbWFuZC5cbiAgICpcbiAgICogQHBhcmFtIHNlcXVlbmNlIEEga2V5IHNlcXVlbmNlLlxuICAgKiBAcGFyYW0gY29tbWFuZCBBIGNvbW1hbmQgdG8gYmluZC5cbiAgICogQHJldHVybnMgQSBtYXAgb2YgZXJyb3IgbWVzc2FnZXMgZm9yIHRoZSBrZXkgYmluZGluZy5cbiAgICovXG4gIGJpbmQoc2VxdWVuY2U6IHN0cmluZywgY29tbWFuZDogQ29tbWFuZCk6IE1hcDxzdHJpbmcsIEJpbmRpbmdFcnJvcltdPjtcblxuICBiaW5kKFxuICAgIHNlcXVlbmNlOiBzdHJpbmcgfCBLZXlCaW5kaW5ncyxcbiAgICBjb21tYW5kPzogQ29tbWFuZCxcbiAgKTogTWFwPHN0cmluZywgQmluZGluZ0Vycm9yW10+IHtcbiAgICBjb25zdCBlcnJvck1hcCA9IG5ldyBNYXA8c3RyaW5nLCBCaW5kaW5nRXJyb3JbXT4oKTtcbiAgICBjb25zdCBzZXF1ZW5jZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBmb3IgKFxuICAgICAgY29uc3QgW3NlcSwgY21kXSBvZiBzZXF1ZW5jZSBpbnN0YW5jZW9mIE1hcFxuICAgICAgICA/IHNlcXVlbmNlLmVudHJpZXMoKVxuICAgICAgICA6IHR5cGVvZiBzZXF1ZW5jZSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IFtbc2VxdWVuY2UsIGNvbW1hbmQhXSBhcyBjb25zdF1cbiAgICAgICAgOiBPYmplY3QuZW50cmllcyhzZXF1ZW5jZSlcbiAgICApIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG5vcm1hbGl6ZVNlcXVlbmNlKHNlcSk7XG4gICAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgICBmb3IgKGNvbnN0IGVycm9yIG9mIHJlc3VsdC52YWx1ZSkge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcihgJHtzZXF9OiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgZXJyb3JNYXAuc2V0KHNlcSwgcmVzdWx0LnZhbHVlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSByZXN1bHQudmFsdWU7XG4gICAgICB0aGlzLmJpbmRpbmdzLnNldChub3JtYWxpemVkLCBjbWQpO1xuICAgICAgaWYgKG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCh0aGlzLmN1cnJlbnRTZXF1ZW5jZSkpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZC5hZGQobm9ybWFsaXplZCk7XG4gICAgICB9XG4gICAgICBzZXF1ZW5jZXMucHVzaChub3JtYWxpemVkKTtcbiAgICB9XG5cbiAgICBsb2dnZXIuZGVidWcoXCJCaW5kZWQgdGhlIGZvbGxvd2luZyBjb21tYW5kczpcIiwgc2VxdWVuY2VzKTtcbiAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICByZXR1cm4gZXJyb3JNYXA7XG4gIH1cblxuICAvKipcbiAgICogVW5iaW5kcyB0aGUgc3BlY2lmaWVkIGtleSBzZXF1ZW5jZXMuXG4gICAqIEBwYXJhbSBzZXF1ZW5jZXMgVGhlIGtleSBzZXF1ZW5jZXMgdG8gdW5iaW5kLlxuICAgKi9cbiAgdW5iaW5kKC4uLnNlcXVlbmNlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHNlcXVlbmNlIG9mIHNlcXVlbmNlcykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gbm9ybWFsaXplU2VxdWVuY2Uoc2VxdWVuY2UpO1xuICAgICAgaWYgKCFyZXN1bHQub2spIGNvbnRpbnVlO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IHJlc3VsdC52YWx1ZTtcbiAgICAgIHRoaXMuYmluZGluZ3MuZGVsZXRlKG5vcm1hbGl6ZWQpO1xuICAgICAgdGhpcy5maWx0ZXJlZC5kZWxldGUobm9ybWFsaXplZCk7XG4gICAgfVxuICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgTW91c2V0cmFwIGluc3RhbmNlIGJ5IGNsZWFyaW5nIGFsbCBrZXkgYmluZGluZ3MuXG4gICAqL1xuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmJpbmRpbmdzLmNsZWFyKCk7XG4gICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gIH1cblxuICBwcml2YXRlIGJpbmRpbmdzID0gbmV3IE1hcDxzdHJpbmcsIENvbW1hbmQ+KCk7XG5cbiAgLyoqIEEgY2FsbGJhY2sgY2FsbGVkIHdoZW5ldmVyIHRoZSBzZXF1ZW5jZSBpcyB1cGRhdGVkLiAqL1xuICBwcml2YXRlIG9uU2VxdWVuY2VVcGRhdGU/OiAoc2VxdWVuY2U6IHN0cmluZykgPT4gdm9pZDtcblxuICAvKiogVGhlIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyB0byBmbHVzaCB0aGUgc2VxdWVuY2UuICovXG4gIHByaXZhdGUgZmx1c2hJbnRlcnZhbDogbnVtYmVyO1xuXG4gIHByaXZhdGUgX3NlcXVlbmNlID0gXCJcIjtcbiAgcHJpdmF0ZSBzZXQgY3VycmVudFNlcXVlbmNlKHNlcXVlbmNlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5fc2VxdWVuY2UgIT09IHNlcXVlbmNlO1xuICAgIHRoaXMuX3NlcXVlbmNlID0gc2VxdWVuY2U7XG4gICAgaWYgKGNoYW5nZWQpIHRoaXMub25TZXF1ZW5jZVVwZGF0ZT8uKHNlcXVlbmNlKTtcbiAgfVxuICBnZXQgY3VycmVudFNlcXVlbmNlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcXVlbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmV2QmVzdE1hdGNoQ29tbWFuZDogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGZpbHRlcmVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgdGltZXI6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGJhY2tUb0luaXRpYWwgPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgIHRoaXMuY3VycmVudFNlcXVlbmNlID0gXCJcIjtcbiAgICB0aGlzLnByZXZCZXN0TWF0Y2hDb21tYW5kID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZmlsdGVyZWQgPSBuZXcgU2V0KHRoaXMuYmluZGluZ3Mua2V5cygpKTtcbiAgICBsb2dnZXIuZGVidWcoXCJyZXNldCB0aGUgc2VxdWVuY2VcIik7XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVLZXlkb3duID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoIWUuaXNUcnVzdGVkKSByZXR1cm47XG4gICAgY29uc3QgdmltS2V5ID0gc3RyaW5naWZ5KGUpO1xuICAgIGlmICghdmltS2V5KSByZXR1cm47XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgIGlmIChlLmlzQ29tcG9zaW5nKSB7XG4gICAgICB0aGlzLmJhY2tUb0luaXRpYWwoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50U2VxdWVuY2UgKz0gdmltS2V5O1xuICAgIGxvZ2dlci5kZWJ1ZyhcInNlcXVlbmNlXCIsIHRoaXMuY3VycmVudFNlcXVlbmNlKTtcbiAgICBsZXQgYmVzdE1hdGNoQ29tbWFuZDogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuZmlsdGVyZWQpIHtcbiAgICAgIGlmICgha2V5LnN0YXJ0c1dpdGgodGhpcy5jdXJyZW50U2VxdWVuY2UpKSB0aGlzLmZpbHRlcmVkLmRlbGV0ZShrZXkpO1xuICAgICAgaWYgKHRoaXMuY3VycmVudFNlcXVlbmNlICE9PSBrZXkpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgY29tbWFuZCA9IHRoaXMuYmluZGluZ3MuZ2V0KGtleSk7XG4gICAgICBpZiAoIWNvbW1hbmQpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZC5kZWxldGUoa2V5KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBiZXN0TWF0Y2hDb21tYW5kID0gKCkgPT4ge1xuICAgICAgICBsb2dnZXIuZGVidWcoYHJ1biAke2tleX1gKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb21tYW5kKGUpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcihlcnJvcik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdGhpcy5iYWNrVG9Jbml0aWFsKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IHNpemUgPSB0aGlzLmZpbHRlcmVkLnNpemU7XG4gICAgbG9nZ2VyLmRlYnVnKGAke3NpemV9IGNhbmRpZGF0ZXM6ICR7Wy4uLnRoaXMuZmlsdGVyZWQua2V5cygpXS5qb2luKFwiLCBcIil9YCk7XG4gICAgaWYgKHNpemUgPiAwKSB0aGlzLnByZXZCZXN0TWF0Y2hDb21tYW5kID0gYmVzdE1hdGNoQ29tbWFuZDtcbiAgICBpZiAodGhpcy5wcmV2QmVzdE1hdGNoQ29tbWFuZCAmJiBzaXplIDwgMikge1xuICAgICAgLy8gRXhlY3V0ZSB0aGUgYmVzdCBtYXRjaCBjb21tYW5kIGlmIHRoZXJlIGlzIG9ubHkgb25lIGNvbW1hbmQgdGhhdCBtYXRjaGVzIGNvbXBsZXRlbHkuXG4gICAgICAvLyBJZiB0aGVyZSB3YXMgYSBjb21tYW5kIHRoYXQgbWF0Y2hlZCBjb21wbGV0ZWx5IGluIHRoZSBwcmV2aW91cyB0dXJuIGFuZCBhIGNvbW1hbmQgdGhhdCBtYXRjaGVkIHBhcnRpYWxseSBpbiB0aGUgcHJldmlvdXMgdHVybiwgYW5kIGluIHRoaXMgdHVybiBhbGwgdGhlIGNvbW1hbmRzIHRoYXQgbWF0Y2hlZCBwYXJ0aWFsbHkgaW4gdGhlIHByZXZpb3VzIHR1cm4gYXJlIG5vIGxvbmdlciBtYXRjaGVkLCBleGVjdXRlIHRoZSBjb21tYW5kIHRoYXQgbWF0Y2hlZCBjb21wbGV0ZWx5IGluIHRoZSBwcmV2aW91cyB0dXJuIChgdGhpcy5wcmV2QmVzdE1hdGNoQ29tbWFuZGApLlxuICAgICAgLy8gSW4gdGhpcyBjYXNlLCB0aGUgYEtleWJvYXJkRXZlbnRgIG9mIHRoaXMgdHVybiB3aWxsIGJlIHJldXNlZCBpbiB0aGUgbmV4dCB0dXJuLlxuICAgICAgLy8gRXhhbXBsZTpcbiAgICAgIC8vIDEuIFByZXZpb3VzIHR1cm46XG4gICAgICAvLyAgIC0gc2VxdWVuY2U6IFwiZFwiXG4gICAgICAvLyAgIC0gZmlsdGVyZWQ6IFtcImRcIixcImRkXCJdXG4gICAgICAvLyAyLiBDdXJyZW50IHR1cm46XG4gICAgICAvLyAgIC0gc2VxdWVuY2U6IFwiZGFcIlxuICAgICAgLy8gICAtIGZpbHRlcmVkOiBbXVxuICAgICAgLy8gSW4gdGhpcyBjYXNlLCBleGVjdXRlIFwiZFwiLCByZXNldCB0aGUgc3RhdGUsIGFuZCBwcmV0ZW5kIHRoYXQgXCJhXCIgd2FzIGVudGVyZWQgaW4gdGhlIG5leHQgdHVybi5cbiAgICAgIHRoaXMucHJldkJlc3RNYXRjaENvbW1hbmQoKTtcbiAgICAgIGlmIChzaXplID09PSAwKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlS2V5ZG93bihlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc2l6ZSA9PT0gMCkge1xuICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGNhbmRpZGF0ZXMsIGdvIGJhY2sgdG8gdGhlIGluaXRpYWwgc3RhdGUuXG4gICAgICB0aGlzLmJhY2tUb0luaXRpYWwoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gQWx3YXlzIHByZXZlbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaWYgdGhlIGNvbW1hbmQgY2Fubm90IGJlIG5hcnJvd2VkIGRvd24sIGFuZCBzdG9wIHRoZSBldmVudCBwcm9wYWdhdGlvbi5cbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dChcbiAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGlucHV0IGZvciBhIGNlcnRhaW4gcGVyaW9kIG9mIHRpbWUsIGdvIGJhY2sgdG8gdGhlIGluaXRpYWwgc3RhdGUuXG4gICAgICAvLyBJZiB0aGVyZSBpcyBhIGNvbW1hbmQgdGhhdCBtYXRjaGVzIGNvbXBsZXRlbHksIGV4ZWN1dGUgdGhhdCBjb21tYW5kLlxuICAgICAgdGhpcy5wcmV2QmVzdE1hdGNoQ29tbWFuZCA/PyB0aGlzLmJhY2tUb0luaXRpYWwsXG4gICAgICB0aGlzLmZsdXNoSW50ZXJ2YWwsXG4gICAgKTtcbiAgfTtcblxuICBwcml2YXRlIGVtaXRDaGFuZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuYmluZGluZ3Muc2l6ZSA9PT0gMCkge1xuICAgICAgdGhpcy5iYWNrVG9Jbml0aWFsKCk7XG4gICAgICB0aGlzLnRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICBcImtleWRvd25cIixcbiAgICAgICAgdGhpcy5oYW5kbGVLZXlkb3duIGFzIEV2ZW50TGlzdGVuZXIsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBcImtleWRvd25cIixcbiAgICAgIHRoaXMuaGFuZGxlS2V5ZG93biBhcyBFdmVudExpc3RlbmVyLFxuICAgICk7XG4gIH07XG59XG5cbmNvbnN0IGludmFsaWRTZXF1ZW5jZUVycm9yOiBJbnZhbGlkU2VxdWVuY2VFcnJvciA9IHtcbiAgbmFtZTogXCJJbnZhbGlkU2VxdWVuY2VFcnJvclwiLFxuICBtZXNzYWdlOiBcImNhbm5vdCBwYXJzZSB0aGUgc2VxdWVuY2VcIixcbn07XG5cbmNvbnN0IG5vcm1hbGl6ZVNlcXVlbmNlID0gKFxuICBzZXF1ZW5jZTogc3RyaW5nLFxuKTogUmVzdWx0PHN0cmluZywgQmluZGluZ0Vycm9yW10+ID0+IHtcbiAgY29uc3Qga2V5cyA9IHBhcnNlU2VxdWVuY2Uoc2VxdWVuY2UpO1xuICBpZiAoIWtleXMpIHJldHVybiB7IG9rOiBmYWxzZSwgdmFsdWU6IFtpbnZhbGlkU2VxdWVuY2VFcnJvcl0gfTtcbiAgbGV0IG5vcm1hbGl6ZWRTZXF1ZW5jZSA9IFwiXCI7XG4gIGNvbnN0IGVycm9yczogQmluZGluZ0Vycm9yW10gPSBbXTtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5vcm1hbGl6ZShrZXkpO1xuICAgIGlmICghcmVzdWx0Lm9rKSB7XG4gICAgICBlcnJvcnMucHVzaChyZXN1bHQudmFsdWUpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIG5vcm1hbGl6ZWRTZXF1ZW5jZSArPSByZXN1bHQudmFsdWU7XG4gIH1cblxuICByZXR1cm4gZXJyb3JzLmxlbmd0aCA+IDBcbiAgICA/IHsgb2s6IGZhbHNlLCB2YWx1ZTogZXJyb3JzIH1cbiAgICA6IHsgb2s6IHRydWUsIHZhbHVlOiBub3JtYWxpemVkU2VxdWVuY2UgfTtcbn07XG4iLCAiY29uc3QgdmltZW9SZWdFeHAgPSAvaHR0cHM/OlxcL1xcL3ZpbWVvXFwuY29tXFwvKFswLTldKykvaTtcblxuLyoqIHZpbWVv44GuVVJM44GL44KJdmlkZW8gSUTjgpLlj5blvpfjgZnjgotcbiAqXG4gKiBAcGFyYW0gdXJsXG4gKiBAcmV0dXJuIHZpZGVvIElEIHZpbWVv44GuVVJM44Gn44Gq44GR44KM44GwYHVuZGVmaW5lZGDjgpLov5TjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlVmltZW8gPSAodXJsOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBtYXRjaGVzID0gdXJsLm1hdGNoKHZpbWVvUmVnRXhwKTtcbiAgaWYgKCFtYXRjaGVzKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gbWF0Y2hlc1sxXTtcbn07XG4iLCAiY29uc3Qgc3BvdGlmeVJlZ0V4cCA9XG4gIC9odHRwcz86XFwvXFwvb3BlblxcLnNwb3RpZnlcXC5jb21cXC8odHJhY2t8YXJ0aXN0fHBsYXlsaXN0fGFsYnVtfGVwaXNvZGV8c2hvdylcXC8oW2EtekEtWlxcZF8tXSspKD86XFw/W15cXHNdezAsMTAwfXwpLztcbmV4cG9ydCBpbnRlcmZhY2UgU3BvdGlmeVByb3BzIHtcbiAgdmlkZW9JZDogc3RyaW5nO1xuICBwYXRoVHlwZTogXCJ0cmFja1wiIHwgXCJhcnRpc3RcIiB8IFwicGxheWxpc3RcIiB8IFwiYWxidW1cIiB8IFwiZXBpc29kZVwiIHwgXCJzaG93XCI7XG59XG5cbi8qKiBTcG90aWZ544GuVVJM44KS6Kej5p6Q44GX44GmYXVkaW8gSUTjgarjganjgpLlj5bjgorlh7rjgZlcbiAqXG4gKiBAcGFyYW0gdXJsIFNwb3RpZnnjga5VUkxcbiAqIEByZXR1cm4g6Kej5p6Q57WQ5p6cIFNwb3RpZnnjga5VUkzjgafjgarjgYvjgaPjgZ/jgajjgY3jga9gdW5kZWZpbmVkYOOCkui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgcGFyc2VTcG90aWZ5ID0gKHVybDogc3RyaW5nKTogU3BvdGlmeVByb3BzIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgbWF0Y2hlcyA9IHVybC5tYXRjaChzcG90aWZ5UmVnRXhwKTtcbiAgaWYgKCFtYXRjaGVzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IFssIHBhdGhUeXBlLCB2aWRlb0lkXSA9IG1hdGNoZXM7XG4gIHJldHVybiB7XG4gICAgdmlkZW9JZCxcbiAgICBwYXRoVHlwZSxcbiAgfSBhcyBTcG90aWZ5UHJvcHM7XG59O1xuIiwgImNvbnN0IEFuY2hvckZNUmVnRXhwID1cbiAgL2h0dHBzPzpcXC9cXC9hbmNob3JcXC5mbVxcL1thLXpBLVpcXGRfLV0rXFwvZXBpc29kZXNcXC8oW2EtekEtWlxcZF8tXSsoPzpcXC9bYS16QS1aXFxkXy1dKyk/KSg/OlxcP1teXFxzXXswLDEwMH18KS87XG5cbi8qKiBhbmNob3JGTeOBrlVSTOOBi+OCiUlE44KS5Y+W5b6X44GZ44KLXG4gKlxuICogQHBhcmFtIHVybFxuICogQHJldHVybiBJRCBhbmNob3JGTeOBrlVSTOOBp+OBquOBkeOCjOOBsGB1bmRlZmluZWRg44KS6L+U44GZXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZUFuY2hvckZNID0gKHVybDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgbWF0Y2hlcyA9IHVybC5tYXRjaChBbmNob3JGTVJlZ0V4cCk7XG4gIGlmICghbWF0Y2hlcykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBbLCB2aWRlb0lkXSA9IG1hdGNoZXM7XG4gIHJldHVybiB2aWRlb0lkO1xufTtcbiIsICJpbXBvcnQgdHlwZSB7IExpbmtOb2RlIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuaW1wb3J0IHsgcGFyc2VZb3V0dWJlIH0gZnJvbSBcIi4vcGFyc2VyL3lvdXR1YmUudHNcIjtcbmltcG9ydCB7IHBhcnNlVmltZW8gfSBmcm9tIFwiLi9wYXJzZXIvdmltZW8udHNcIjtcbmltcG9ydCB7IHBhcnNlU3BvdGlmeSB9IGZyb20gXCIuL3BhcnNlci9zcG90aWZ5LnRzXCI7XG5pbXBvcnQgeyBwYXJzZUFuY2hvckZNIH0gZnJvbSBcIi4vcGFyc2VyL2FuY2hvci1mbS50c1wiO1xuXG5leHBvcnQgdHlwZSB7IExpbmtOb2RlIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWJzb2x1dGVMaW5rTm9kZSB7XG4gIHR5cGU6IFwiYWJzb2x1dGVMaW5rXCI7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgaHJlZjogc3RyaW5nO1xuICByYXc6IHN0cmluZztcbn1cblxuLyoqIFlvdXR1YmXln4vjgoHovrzjgb8gKi9cbmV4cG9ydCBpbnRlcmZhY2UgWW91dHViZU5vZGUge1xuICB0eXBlOiBcInlvdXR1YmVcIjtcbiAgdmlkZW9JZDogc3RyaW5nO1xuICBwYXRoVHlwZTogXCJjb21cIiB8IFwiZG90YmVcIiB8IFwic2hvcnRcIjtcbiAgcGFyYW1zOiBVUkxTZWFyY2hQYXJhbXM7XG4gIGhyZWY6IHN0cmluZztcbiAgcmF3OiBzdHJpbmc7XG59XG5cbi8qKiBZb3V0dWJlIExpc3Tln4vjgoHovrzjgb8gKi9cbmV4cG9ydCBpbnRlcmZhY2UgWW91dHViZUxpc3ROb2RlIHtcbiAgdHlwZTogXCJ5b3V0dWJlXCI7XG4gIGxpc3RJZDogc3RyaW5nO1xuICBwYXRoVHlwZTogXCJsaXN0XCI7XG4gIHBhcmFtczogVVJMU2VhcmNoUGFyYW1zO1xuICBocmVmOiBzdHJpbmc7XG4gIHJhdzogc3RyaW5nO1xufVxuXG4vKiogVmltZW/ln4vjgoHovrzjgb8gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmltZW9Ob2RlIHtcbiAgdHlwZTogXCJ2aW1lb1wiO1xuICB2aWRlb0lkOiBzdHJpbmc7XG4gIGhyZWY6IHN0cmluZztcbiAgcmF3OiBzdHJpbmc7XG59XG5cbi8qKiBTcG90aWZ55Z+L44KB6L6844G/ICovXG5leHBvcnQgaW50ZXJmYWNlIFNwb3RpZnlOb2RlIHtcbiAgdHlwZTogXCJzcG90aWZ5XCI7XG4gIHZpZGVvSWQ6IHN0cmluZztcbiAgcGF0aFR5cGU6IFwidHJhY2tcIiB8IFwiYXJ0aXN0XCIgfCBcInBsYXlsaXN0XCIgfCBcImFsYnVtXCIgfCBcImVwaXNvZGVcIiB8IFwic2hvd1wiO1xuICBocmVmOiBzdHJpbmc7XG4gIHJhdzogc3RyaW5nO1xufVxuXG4vKiogQW5jaG9yIEZN5Z+L44KB6L6844G/ICovXG5leHBvcnQgaW50ZXJmYWNlIEFuY2hvckZNTm9kZSB7XG4gIHR5cGU6IFwiYW5jaG9yLWZtXCI7XG4gIHZpZGVvSWQ6IHN0cmluZztcbiAgaHJlZjogc3RyaW5nO1xuICByYXc6IHN0cmluZztcbn1cblxuLyoqIOWLleeUu+Wfi+OCgei+vOOBvyAqL1xuZXhwb3J0IGludGVyZmFjZSBWaWRlb05vZGUge1xuICB0eXBlOiBcInZpZGVvXCI7XG4gIGhyZWY6IFZpZGVvVVJMO1xuICByYXc6IHN0cmluZztcbn1cblxuLyoqIOmfs+WjsOWfi+OCgei+vOOBvyAqL1xuZXhwb3J0IGludGVyZmFjZSBBdWRpb05vZGUge1xuICB0eXBlOiBcImF1ZGlvXCI7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgaHJlZjogQXVkaW9VUkw7XG4gIHJhdzogc3RyaW5nO1xufVxuXG4vKiogc2NyYXBib3gtcGFyc2Vy44Gn6Kej5p6Q44GX44Gf5aSW6YOo44Oq44Oz44Kv6KiY5rOV44KS44CB5Z+L44KB6L6844G/5b2i5byP44GU44Go44Gr57Sw44GL44GP6Kej5p6Q44GZ44KLXG4gKlxuICogQHBhcmFtIGxpbmsgc2NyYXBib3gtcGFyc2Vy44Gn6Kej5p6Q44GX44Gf5aSW6YOo44Oq44Oz44Kv6KiY5rOV44Gub2JqZWN0XG4gKiBAcmV0dXJuIOino+aekOOBl+OBn+iomOazleOBrm9iamVjdFxuICovXG5leHBvcnQgY29uc3QgcGFyc2VBYnNvbHV0ZUxpbmsgPSAoXG4gIGxpbms6IExpbmtOb2RlICYgeyBwYXRoVHlwZTogXCJhYnNvbHV0ZVwiIH0sXG4pOlxuICB8IEFic29sdXRlTGlua05vZGVcbiAgfCBWaWRlb05vZGVcbiAgfCBBdWRpb05vZGVcbiAgfCBZb3V0dWJlTm9kZVxuICB8IFlvdXR1YmVMaXN0Tm9kZVxuICB8IFZpbWVvTm9kZVxuICB8IFNwb3RpZnlOb2RlXG4gIHwgQW5jaG9yRk1Ob2RlID0+IHtcbiAgY29uc3QgeyB0eXBlOiBfLCBwYXRoVHlwZTogX18sIGNvbnRlbnQsIGhyZWYsIC4uLmJhc2VMaW5rIH0gPSBsaW5rO1xuICBpZiAoY29udGVudCA9PT0gXCJcIikge1xuICAgIGNvbnN0IHlvdXR1YmUgPSBwYXJzZVlvdXR1YmUoaHJlZik7XG4gICAgaWYgKHlvdXR1YmUpIHJldHVybiB7IHR5cGU6IFwieW91dHViZVwiLCBocmVmLCAuLi55b3V0dWJlLCAuLi5iYXNlTGluayB9O1xuXG4gICAgY29uc3QgdmltZW9JZCA9IHBhcnNlVmltZW8oaHJlZik7XG4gICAgaWYgKHZpbWVvSWQpIHJldHVybiB7IHR5cGU6IFwidmltZW9cIiwgdmlkZW9JZDogdmltZW9JZCwgaHJlZiwgLi4uYmFzZUxpbmsgfTtcblxuICAgIGNvbnN0IHNwb3RpZnkgPSBwYXJzZVNwb3RpZnkoaHJlZik7XG4gICAgaWYgKHNwb3RpZnkpIHJldHVybiB7IHR5cGU6IFwic3BvdGlmeVwiLCBocmVmLCAuLi5zcG90aWZ5LCAuLi5iYXNlTGluayB9O1xuXG4gICAgY29uc3QgYW5jaG9yRk1JZCA9IHBhcnNlQW5jaG9yRk0oaHJlZik7XG4gICAgaWYgKGFuY2hvckZNSWQpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwiYW5jaG9yLWZtXCIsIHZpZGVvSWQ6IGFuY2hvckZNSWQsIGhyZWYsIC4uLmJhc2VMaW5rIH07XG4gICAgfVxuXG4gICAgaWYgKGlzVmlkZW9VUkwoaHJlZikpIHJldHVybiB7IHR5cGU6IFwidmlkZW9cIiwgaHJlZiwgLi4uYmFzZUxpbmsgfTtcbiAgfVxuICBpZiAoaXNBdWRpb1VSTChocmVmKSkgcmV0dXJuIHsgdHlwZTogXCJhdWRpb1wiLCBjb250ZW50LCBocmVmLCAuLi5iYXNlTGluayB9O1xuXG4gIHJldHVybiB7IHR5cGU6IFwiYWJzb2x1dGVMaW5rXCIsIGNvbnRlbnQsIGhyZWYsIC4uLmJhc2VMaW5rIH07XG59O1xuXG50eXBlIEF1ZGlvVVJMID0gYCR7c3RyaW5nfS4ke1wibXAzXCIgfCBcIm9nZ1wiIHwgXCJ3YXZcIiB8IFwiYWNjXCJ9YDtcbmNvbnN0IGlzQXVkaW9VUkwgPSAodXJsOiBzdHJpbmcpOiB1cmwgaXMgQXVkaW9VUkwgPT5cbiAgL1xcLig/Om1wM3xvZ2d8d2F2fGFhYykkLy50ZXN0KHVybCk7XG5cbnR5cGUgVmlkZW9VUkwgPSBgJHtzdHJpbmd9LiR7XCJtcDRcIiB8IFwid2VibVwifWA7XG5jb25zdCBpc1ZpZGVvVVJMID0gKHVybDogc3RyaW5nKTogdXJsIGlzIFZpZGVvVVJMID0+XG4gIC9cXC4oPzptcDR8d2VibSkkLy50ZXN0KHVybCk7XG4iLCAiLy8gcG9ydGVkIGZyb20gaHR0cHM6Ly9zY3JhcGJveC5pby90YWtrZXIvY3VzdG9tLW5ldy1wYWdlLTNcbmltcG9ydCB7XG4gIGNhcmV0LFxuICBDYXJldEluZm8sXG4gIGdldEluZGVudExpbmVDb3VudCxcbiAgZ2V0VGV4dCxcbiAgU2NyYXBib3gsXG59IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG4vKiog6YG45oqe56+E5Zuy44GM44GC44KM44Gw44Gd44KM44KS6L+U44GX44CB44Gq44GR44KM44Gw44Gd44Gu6KGM44Gr44G244KJ5LiL44GM44KL44Kk44Oz44OH44Oz44OI44Gu5aGK44KS6L+U44GZXG4gKlxuICog6YG45oqe56+E5Zuy44Gu6KGM55Wq5Y+344Gv44CB5LqI44KB6Iul44GE44G744GG44GMYHN0YXJ0YOOBq+OBquOCi+OCiOOBhuiqv+aVtOOBl+OBpuOBiuOBj1xuICovXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0aW9uID0gKCk6IE9taXQ8Q2FyZXRJbmZvLCBcInBvc2l0aW9uXCI+ID0+IHtcbiAgaWYgKHNjcmFwYm94LkxheW91dCAhPT0gXCJwYWdlXCIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0aW9uUmFuZ2U6IHtcbiAgICAgICAgc3RhcnQ6IHsgbGluZTogMCwgY2hhcjogMCB9LFxuICAgICAgICBlbmQ6IHsgbGluZTogMCwgY2hhcjogMCB9LFxuICAgICAgfSxcbiAgICAgIHNlbGVjdGVkVGV4dDogXCJcIixcbiAgICB9O1xuICB9XG4gIGNvbnN0IHsgc2VsZWN0aW9uUmFuZ2UsIHNlbGVjdGVkVGV4dCwgcG9zaXRpb24gfSA9IGNhcmV0KCk7XG4gIGlmICghc2VsZWN0ZWRUZXh0KSB7XG4gICAgY29uc3QgY291bnQgPSBnZXRJbmRlbnRMaW5lQ291bnQocG9zaXRpb24ubGluZSkgPz8gMDtcbiAgICBjb25zdCBzZWxlY3Rpb25SYW5nZSA9IHtcbiAgICAgIHN0YXJ0OiB7XG4gICAgICAgIGxpbmU6IHBvc2l0aW9uLmxpbmUsXG4gICAgICAgIGNoYXI6IDAsXG4gICAgICB9LFxuICAgICAgZW5kOiB7XG4gICAgICAgIGxpbmU6IHBvc2l0aW9uLmxpbmUgKyBjb3VudCxcbiAgICAgICAgY2hhcjogZ2V0VGV4dChwb3NpdGlvbi5saW5lICsgY291bnQpPy5sZW5ndGggPz8gMCxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBzZWxlY3Rpb25SYW5nZSxcbiAgICAgIHNlbGVjdGVkVGV4dDogc2NyYXBib3guUGFnZS5saW5lcy5zbGljZShcbiAgICAgICAgc2VsZWN0aW9uUmFuZ2Uuc3RhcnQubGluZSxcbiAgICAgICAgc2VsZWN0aW9uUmFuZ2UuZW5kLmxpbmUgKyAxLFxuICAgICAgKS5tYXAoKGxpbmUpID0+IGxpbmUudGV4dCkuam9pbihcIlxcblwiKSxcbiAgICB9O1xuICB9XG4gIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gc2VsZWN0aW9uUmFuZ2U7XG4gIGNvbnN0IGxhcmdlciA9IHN0YXJ0LmxpbmUgPiBlbmQubGluZTtcbiAgY29uc3Qgc3RhcnRMaW5lID0gbGFyZ2VyID8gZW5kLmxpbmUgOiBzdGFydC5saW5lO1xuICBjb25zdCBzdGFydENoYXIgPSBsYXJnZXIgPyBlbmQuY2hhciA6IHN0YXJ0LmNoYXI7IC8vIOOBk+OBrueVquWPt+OBruaWh+Wtl+OBi+OCieWQq+OCgFxuICBjb25zdCBlbmRMaW5lID0gbGFyZ2VyID8gc3RhcnQubGluZSA6IGVuZC5saW5lO1xuICBjb25zdCBlbmRDaGFyID0gbGFyZ2VyID8gc3RhcnQuY2hhciA6IGVuZC5jaGFyOyAvLyDjgZPjga7nlarlj7fku6XpmY3jga7mloflrZfjga/lkKvjgb7jgarjgYRcblxuICByZXR1cm4ge1xuICAgIHNlbGVjdGVkVGV4dCxcbiAgICBzZWxlY3Rpb25SYW5nZToge1xuICAgICAgc3RhcnQ6IHtcbiAgICAgICAgbGluZTogc3RhcnRMaW5lLFxuICAgICAgICBjaGFyOiBzdGFydENoYXIsXG4gICAgICB9LFxuICAgICAgZW5kOiB7XG4gICAgICAgIGxpbmU6IGVuZExpbmUsXG4gICAgICAgIGNoYXI6IGVuZENoYXIsXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59O1xuIiwgIi8vIHBvcnRlZCBmcm9tIGh0dHBzOi8vc2NyYXBib3guaW8vdGFra2VyL2N1c3RvbS1uZXctcGFnZS0zXG5pbXBvcnQgdHlwZSB7IEJhc2VMaW5lLCBwYXRjaCB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmltcG9ydCB7IGdldEluZGVudENvdW50IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuXG5leHBvcnQgdHlwZSBVcGRhdGVyID0gUGFyYW1ldGVyczx0eXBlb2YgcGF0Y2g+WzJdO1xuXG4vKiog5YiH44KK5Ye644GX44Gf44Oa44O844K444KS6ZaL44GP5pa55rOVXG4gKlxuICogLSBcInNlbGZcIjog5ZCM44GY44Oa44O844K444Gn6ZaL44GPXG4gKiAtIFwibmV3dGFiXCI6IOaWsOOBl+OBhOODmuODvOOCuOOBp+mWi+OBj1xuICogLSBcIm5vb3BlblwiOiDplovjgYvjgarjgYRcbiAqL1xuZXhwb3J0IHR5cGUgT3Blbk1vZGUgPSBcInNlbGZcIiB8IFwibmV3dGFiXCIgfCBcIm5vb3BlblwiO1xuXG4vKiog5LiA44Gk44Gu44Oa44O844K444KS6KGo44GZ44OH44O844K/ICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2Uge1xuICAvKiog44Oa44O844K444GucHJvamVjdCAqL1xuICBwcm9qZWN0OiBzdHJpbmc7XG5cbiAgLyoqIOODmuODvOOCuOOCv+OCpOODiOODqyAqL1xuICB0aXRsZTogc3RyaW5nO1xuXG4gIC8qKiDphY3liJfjga7jgajjgY3vvJrjgr/jgqTjg4jjg6vjgpIgKirlkKvjgb7jgarjgYQqKiDjg5rjg7zjgrjmnKzmlodcbiAgICpcbiAgICogIC0g44GZ44Gn44Gr5pys5paH44GM44GC44KL44Go44GN44Gv44CB5pyr5bC+44Gr6L+96KiY44GV44KM44KLXG4gICAqXG4gICAqICDplqLmlbDjga7jgajjgY3vvJrjgr/jgqTjg4jjg6vjgpIgKirlkKvjgoAqKiDmnKzmlofjgpLov5TjgZnplqLmlbBcbiAgICovXG4gIGxpbmVzOiBzdHJpbmdbXSB8IFVwZGF0ZXI7XG5cbiAgLyoqIOWIh+OCiuWHuuOBl+OBn+ODmuODvOOCuOOCkumWi+OBj+aWueazlVxuICAgKlxuICAgKiBgbmV3UGFnZSgpYOOBq+a4oeOBleOCjOOBn+ioreWumuOCkuOBk+OCjOOBp+S4iuabuOOBjeOBp+OBjeOCi1xuICAgKi9cbiAgbW9kZTogT3Blbk1vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV3UGFnZUhvb2sge1xuICAvKiogaG9vaydzIG5hbWVcbiAgICpcbiAgICogbXVzdCBiZSB1bmlxdWVcbiAgICovXG4gIGhvb2tOYW1lOiBzdHJpbmc7XG5cbiAgLyoqIOWIh+OCiuWHuuOBl+aZguOBruabuOW8j+ioreWumuOCkuihjOOBhumWouaVsFxuICAgKlxuICAgKiBAcGFyYW0gdGV4dCDliIfjgorlh7rjgZnmloflrZfliJdcbiAgICogQHBhcmFtIG9wdGlvbnMgYG5ld1BhZ2UoKWDjgafmuKHjgZXjgozjgZ9ob29rc+S7peWkluOBruaDheWgsVxuICAgKiBAcmV0dXJuIOaWsOimj+S9nOaIkOOBmeOCi+ODmuODvOOCuOaDheWgseOBqOOBi+OCkui/lOOBmeOAguOCguOBl+adoeS7tuOBq+S4gOiHtOOBl+OBquOBhOOBquOBqeOBp+WIh+OCiuWHuuOBleOBquOBhOWgtOWQiOOBr2B1bmRlZmluZWRg44KS6L+U44GZXG4gICAqL1xuICAoXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IE5ld1BhZ2VIb29rT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxOZXdQYWdlSG9va1Jlc3VsdD4gfCBOZXdQYWdlSG9va1Jlc3VsdCB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXdQYWdlSG9va09wdGlvbnMge1xuICAvKiog5YiH44KK5Ye644GX5YWD44Oa44O844K444GudGl0bGUgKi9cbiAgdGl0bGU6IHN0cmluZztcblxuICAvKiog5YiH44KK5Ye644GX5YWDcHJvamVjdCAqL1xuICBwcm9qZWN0RnJvbTogc3RyaW5nO1xuXG4gIC8qKiDliIfjgorlh7rjgZflhYhwcm9qZWN0ICovXG4gIHByb2plY3RUbzogc3RyaW5nO1xuXG4gIC8qKiDliIfjgorlh7rjgZfnr4Tlm7LjgpLlkKvjgoDooYwgKi9cbiAgbGluZXM6IEJhc2VMaW5lW107XG5cbiAgLyoqIOWIh+OCiuWHuuOBl+OBn+ODmuODvOOCuOOCkumWi+OBj+aWueazlSAqL1xuICBtb2RlOiBPcGVuTW9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXdQYWdlSG9va1Jlc3VsdCB7XG4gIC8qKiDlhYPjga7jg5rjg7zjgrjjgavmrovjgZnjg4bjgq3jgrnjg4ggKi9cbiAgdGV4dDogc3RyaW5nO1xuXG4gIC8qKiDliIfjgorlh7rjgZnjg5rjg7zjgrggKi9cbiAgcGFnZXM6IFBhZ2VbXTtcbn1cblxuLyoqIOS9leOCguioreWumuOBleOCjOOBpuOBhOOBquOBhOOBqOOBjeOBq+S9v+OCj+OCjOOCi2hvb2tcbiAqXG4gKiDku5Xmp5jjga9TY3JhcGJveOOBruOBqOOBu+OBvOWQjOOBmFxuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdEhvb2s6IE5ld1BhZ2VIb29rID0gKFxuICB0ZXh0LFxuICB7IHRpdGxlLCBwcm9qZWN0VG8sIG1vZGUgfSxcbikgPT4ge1xuICBjb25zdCBbcmF3VGl0bGUsIC4uLmxpbmVzXSA9IHRleHQuc3BsaXQoXCJcXG5cIik7XG4gIGNvbnN0IG5ld1RpdGxlID0gcmF3VGl0bGUucmVwbGFjZUFsbChcIltcIiwgXCJcIikucmVwbGFjZUFsbChcIl1cIiwgXCJcIikudHJpbSgpO1xuXG4gIC8vIOS9meioiOOBquOCpOODs+ODh+ODs+ODiOOCkuWJiuOCi1xuICBjb25zdCBtaW5JbmRlbnROdW0gPSBNYXRoLm1pbihcbiAgICAuLi5bcmF3VGl0bGUsIC4uLmxpbmVzXS5tYXAoKGxpbmUpID0+IGdldEluZGVudENvdW50KGxpbmUpKSxcbiAgKTtcbiAgY29uc3QgbmV3TGluZXMgPSBbXG4gICAgYGZyb20gWyR7dGl0bGV9XWAsXG4gICAgcmF3VGl0bGUuc2xpY2UobWluSW5kZW50TnVtKSxcbiAgICAuLi5saW5lcy5tYXAoXG4gICAgICAobGluZSkgPT4gbGluZS5zbGljZShtaW5JbmRlbnROdW0pLFxuICAgICksXG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICB0ZXh0OiBgWyR7bmV3VGl0bGV9XWAsXG4gICAgcGFnZXM6IFt7IHByb2plY3Q6IHByb2plY3RUbywgdGl0bGU6IG5ld1RpdGxlLCBsaW5lczogbmV3TGluZXMsIG1vZGUgfV0sXG4gIH07XG59O1xuXG5kZWZhdWx0SG9vay5ob29rTmFtZSA9IFwiZGVmYXVsdC1ob29rXCI7XG4iLCAiLy8gcG9ydGVkIGZyb20gaHR0cHM6Ly9zY3JhcGJveC5pby90YWtrZXIvY3VzdG9tLW5ldy1wYWdlLTNcbmltcG9ydCB7XG4gIGRpc2Nvbm5lY3QsXG4gIGVuY29kZVRpdGxlVVJJLFxuICBtYWtlU29ja2V0LFxuICBvcGVuSW5UaGVTYW1lVGFiLFxuICBwYXRjaCxcbiAgU2NyYXBib3gsXG4gIHNsZWVwLFxuICBTb2NrZXQsXG4gIHRha2VJbnRlcm5hbExpbmVzLFxuICB1c2VTdGF0dXNCYXIsXG59IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmltcG9ydCB7IGdldFNlbGVjdGlvbiB9IGZyb20gXCIuL3NlbGVjdGlvbi50c1wiO1xuaW1wb3J0IHsgZGVmYXVsdEhvb2ssIFVwZGF0ZXIgfSBmcm9tIFwiLi9ob29rLnRzXCI7XG5pbXBvcnQgdHlwZSB7IE5ld1BhZ2VIb29rLCBPcGVuTW9kZSB9IGZyb20gXCIuL2hvb2sudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuZXhwb3J0IHR5cGUge1xuICBOZXdQYWdlSG9vayxcbiAgTmV3UGFnZUhvb2tPcHRpb25zLFxuICBOZXdQYWdlSG9va1Jlc3VsdCxcbiAgT3Blbk1vZGUsXG4gIFBhZ2UsXG4gIFVwZGF0ZXIsXG59IGZyb20gXCIuL2hvb2sudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBNYWtlTmV3UGFnZUluaXQge1xuICAvKiog5YiH44KK5Ye644GX5YWIcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCDnj77lnKjjga5wcm9qZWN044Go5ZCM44GYXG4gICAqL1xuICBwcm9qZWN0Pzogc3RyaW5nO1xuICAvKiog5YiH44KK5Ye644GX44Gf44Oa44O844K444KS6ZaL44GP5pa55rOVXG4gICAqXG4gICAqIEBkZWZhdWx0OiBcIm5ld3RhYlwiXG4gICAqL1xuICBtb2RlPzogT3Blbk1vZGU7XG4gIC8qKiDliIfjgorlh7rjgZfjgZ/jg5rjg7zjgrjjgarjganjgpLkvZzmiJDjgZnjgovplqLmlbBcbiAgICpcbiAgICog5pyA5Yid44GrYHVuZGVmaW5lZGDku6XlpJbjgpLov5TjgZfjgZ9ob29r44Gg44GR44KS5o6h55So44GZ44KLXG4gICAqL1xuICBob29rcz86IE5ld1BhZ2VIb29rW107XG59XG5cbi8qKiDliIfjgorlh7rjgZfjgpLlrp/ooYzjgZnjgovplqLmlbAgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFrZU5ld1BhZ2VSZXN1bHQge1xuICAvKiog5L2/55So44GZ44KLaG9va+OBruWQjeWJjSAqL1xuICBob29rTmFtZTogc3RyaW5nO1xuXG4gICgpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgY29uc3QgbWFrZU5ld1BhZ2UgPSAoXG4gIGluaXQ/OiBNYWtlTmV3UGFnZUluaXQsXG4pOiBNYWtlTmV3UGFnZVJlc3VsdCB8IHVuZGVmaW5lZCA9PiB7XG4gIC8vIOioreWumuOBqOOBi1xuICBjb25zdCB7XG4gICAgcHJvamVjdCA9IHNjcmFwYm94LlByb2plY3QubmFtZSxcbiAgICBtb2RlID0gXCJuZXd0YWJcIixcbiAgfSA9IGluaXQgPz8ge307XG4gIGNvbnN0IGhvb2tzID0gWy4uLihpbml0Py5ob29rcyA/PyBbXSksIGRlZmF1bHRIb29rXTtcblxuICAvLyDliIfjgorlh7rjgZnnr4Tlm7Ljgajjg4bjgq3jgrnjg4jjgpLlj5blvpfjgZnjgotcbiAgY29uc3QgeyBzZWxlY3Rpb25SYW5nZTogeyBzdGFydCwgZW5kIH0sIHNlbGVjdGVkVGV4dCB9ID0gZ2V0U2VsZWN0aW9uKCk7XG4gIGlmICghc2VsZWN0ZWRUZXh0KSByZXR1cm47XG4gIGlmIChzY3JhcGJveC5MYXlvdXQgIT09IFwicGFnZVwiKSByZXR1cm47XG5cbiAgLy8g5YiH44KK5Ye644GZ44Oa44O844K444KS5L2c44KLXG4gIGNvbnN0IHJlc3VsdCA9ICgoKSA9PiB7XG4gICAgZm9yIChjb25zdCBob29rIG9mIGhvb2tzKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBob29rKHNlbGVjdGVkVGV4dCwge1xuICAgICAgICB0aXRsZTogc2NyYXBib3guUGFnZS50aXRsZSxcbiAgICAgICAgcHJvamVjdEZyb206IHNjcmFwYm94LlByb2plY3QubmFtZSxcbiAgICAgICAgcHJvamVjdFRvOiBwcm9qZWN0LFxuICAgICAgICBsaW5lczogdGFrZUludGVybmFsTGluZXMoKS5zbGljZShzdGFydC5saW5lLCBlbmQubGluZSArIDEpLFxuICAgICAgICBtb2RlLFxuICAgICAgfSk7XG4gICAgICBpZiAocmVzdWx0KSByZXR1cm4gW2hvb2suaG9va05hbWUsIHJlc3VsdF0gYXMgY29uc3Q7XG4gICAgfVxuICB9KSgpO1xuXG4gIC8vIOWIh+OCiuWHuuOBm+OCi+eKtuaFi+OBp+OBquOBkeOCjOOBsOS9leOCguOBl+OBquOBhFxuICBpZiAoIXJlc3VsdCkgcmV0dXJuO1xuICBjb25zdCBbaG9va05hbWUsIHByb21pc2VdID0gcmVzdWx0O1xuXG4gIGNvbnN0IGN1dCA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBwcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSA/IGF3YWl0IHByb21pc2UgOiBwcm9taXNlO1xuXG4gICAgLy8g5YiH44KK5Ye644GZ5paH56ug44KC5YWD44Gu44Oa44O844K444KS5pu444GN5o+b44GI44KL44GT44Go44KC44Gq44GR44KM44Gw44Gq44Gr44KC44GX44Gq44GEXG4gICAgaWYgKHJlc3VsdC5wYWdlcy5sZW5ndGggPT09IDAgJiYgcmVzdWx0LnRleHQgPT09IHNlbGVjdGVkVGV4dCkgcmV0dXJuO1xuXG4gICAgLy8g5YCL5Yil44GucGFnZeOBq+WIh+OCiuWHuuOBmVxuICAgIGxldCBzb2NrZXQ6IFNvY2tldCB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCB7IHJlbmRlciwgZGlzcG9zZSB9ID0gdXNlU3RhdHVzQmFyKCk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChyZXN1bHQucGFnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBsZW5ndGggPSByZXN1bHQucGFnZXMubGVuZ3RoO1xuICAgICAgICByZW5kZXIoXG4gICAgICAgICAgeyB0eXBlOiBcInNwaW5uZXJcIiB9LFxuICAgICAgICAgIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IGBDcmVhdGUgbmV3ICR7bGVuZ3RofSBwYWdlcy4uLmAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgc29ja2V0ID0gYXdhaXQgbWFrZVNvY2tldCgpO1xuICAgICAgICBsZXQgY291bnRlciA9IDA7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHJlc3VsdC5wYWdlcy5tYXAoXG4gICAgICAgICAgYXN5bmMgKHBhZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZXI6IFVwZGF0ZXIgPSBBcnJheS5pc0FycmF5KHBhZ2UubGluZXMpXG4gICAgICAgICAgICAgID8gKFxuICAgICAgICAgICAgICAgIGxpbmVzLFxuICAgICAgICAgICAgICApID0+IFtcbiAgICAgICAgICAgICAgICAuLi5saW5lcy5tYXAoKGxpbmUpID0+IGxpbmUudGV4dCksXG4gICAgICAgICAgICAgICAgLi4uKHBhZ2UubGluZXMgYXMgc3RyaW5nW10pLFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIDogcGFnZS5saW5lcztcbiAgICAgICAgICAgIGF3YWl0IHBhdGNoKHBhZ2UucHJvamVjdCwgcGFnZS50aXRsZSwgdXBkYXRlciwgeyBzb2NrZXQgfSk7XG5cbiAgICAgICAgICAgIHJlbmRlcihcbiAgICAgICAgICAgICAgeyB0eXBlOiBcInNwaW5uZXJcIiB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgdGV4dDogYENyZWF0ZSAke2xlbmd0aCAtICgrK2NvdW50ZXIpfSBwYWdlcy4uLmAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICkpO1xuICAgICAgfVxuICAgICAgcmVuZGVyKFxuICAgICAgICB7IHR5cGU6IFwic3Bpbm5lclwiIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICB0ZXh0OiBgJHtcbiAgICAgICAgICAgIHJlc3VsdC5wYWdlcy5sZW5ndGggPiAwID8gXCJDcmVhdGVkLiBcIiA6IFwiXCJcbiAgICAgICAgICB9UmVtb3ZpbmcgY3V0IHRleHQuLi5gLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgLy8g5pu444GN6L6844G/44Gr5oiQ5Yqf44GX44Gf44KJ44KC44Go44Gu44OG44Kt44K544OI44KS5raI44GZXG4gICAgICBjb25zdCB0ZXh0ID0gcmVzdWx0LnRleHQ7XG4gICAgICBpZiAoc2VsZWN0ZWRUZXh0ID09PSB0ZXh0KSByZXR1cm47XG4gICAgICBhd2FpdCBwYXRjaChzY3JhcGJveC5Qcm9qZWN0Lm5hbWUsIHNjcmFwYm94LlBhZ2UudGl0bGUsIChsaW5lcykgPT4ge1xuICAgICAgICBjb25zdCBsaW5lc18gPSBsaW5lcy5tYXAoKGxpbmUpID0+IGxpbmUudGV4dCk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgLi4ubGluZXNfLnNsaWNlKDAsIHN0YXJ0LmxpbmUpLFxuICAgICAgICAgIC4uLmAke2xpbmVzX1tzdGFydC5saW5lXS5zbGljZSgwLCBzdGFydC5jaGFyKX0ke3RleHR9JHtcbiAgICAgICAgICAgIC8vIGVuZC5jaGFy44GM6KGM5pyrKzHjgb7jgafjgYLjgaPjgZ/loLTlkIjjga/jgIFlbmQubGluZeOBruebtOW+jOOBruaUueihjOOBvuOBp+WPluOCiumZpOOBi+OCjOOCi1xuICAgICAgICAgICAgbGluZXNfLnNsaWNlKGVuZC5saW5lKS5qb2luKFwiXFxuXCIpLnNsaWNlKGVuZC5jaGFyKX1gLnNwbGl0KFwiXFxuXCIpLFxuICAgICAgICBdO1xuICAgICAgfSk7XG5cbiAgICAgIHJlbmRlcihcbiAgICAgICAgeyB0eXBlOiBcImNoZWNrLWNpcmNsZVwiIH0sXG4gICAgICAgIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IFwiUmVtb3ZlZC5cIiB9LFxuICAgICAgKTtcblxuICAgICAgLy8g44Oa44O844K444KS6ZaL44GPXG4gICAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgcmVzdWx0LnBhZ2VzKSB7XG4gICAgICAgIHN3aXRjaCAocGFnZS5tb2RlKSB7XG4gICAgICAgICAgY2FzZSBcInNlbGZcIjpcbiAgICAgICAgICAgIGlmIChwYWdlLnByb2plY3QgPT09IHNjcmFwYm94LlByb2plY3QubmFtZSkge1xuICAgICAgICAgICAgICBvcGVuSW5UaGVTYW1lVGFiKHBhZ2UucHJvamVjdCwgcGFnZS50aXRsZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBVc2VyU2NyaXB044KS5YaN6Kqt6L6844GV44Gb44KLXG4gICAgICAgICAgICAgIHdpbmRvdy5vcGVuKFxuICAgICAgICAgICAgICAgIGBodHRwczovL3NjcmFwYm94LmlvLyR7cGFnZS5wcm9qZWN0fS8ke1xuICAgICAgICAgICAgICAgICAgZW5jb2RlVGl0bGVVUkkocGFnZS50aXRsZSlcbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBcIl9zZWxmXCIsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwibmV3dGFiXCI6XG4gICAgICAgICAgICB3aW5kb3cub3BlbihcbiAgICAgICAgICAgICAgYGh0dHBzOi8vc2NyYXBib3guaW8vJHtwYWdlLnByb2plY3R9LyR7XG4gICAgICAgICAgICAgICAgZW5jb2RlVGl0bGVVUkkocGFnZS50aXRsZSlcbiAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIHsgdHlwZTogXCJleGNsYW1hdGlvbi10cmlhbmdsZVwiIH0sXG4gICAgICAgIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IFwiRmFpbGVkIHRvIGNyZWF0ZSBuZXcgcGFnZXMgKHNlZSBjb25zb2xlKS5cIiB9LFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGNvbnN0IHdhaXRpbmcgPSBzbGVlcCgxMDAwKTtcbiAgICAgIGlmIChzb2NrZXQpIGF3YWl0IGRpc2Nvbm5lY3Qoc29ja2V0KTtcbiAgICAgIGF3YWl0IHdhaXRpbmc7XG4gICAgICBkaXNwb3NlKCk7XG4gICAgfVxuICB9O1xuXG4gIGN1dC5ob29rTmFtZSA9IGhvb2tOYW1lO1xuXG4gIHJldHVybiBjdXQ7XG59O1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICJsZXQgZGVmYXVsdE9wdGlvbnMgPSB7fTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRPcHRpb25zKCkge1xuICByZXR1cm4gZGVmYXVsdE9wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXREZWZhdWx0T3B0aW9ucyhuZXdPcHRpb25zKSB7XG4gIGRlZmF1bHRPcHRpb25zID0gbmV3T3B0aW9ucztcbn1cbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuL19saWIvZGVmYXVsdE9wdGlvbnMubWpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBzdGFydE9mV2Vla30gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZXZWVrXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIFRoZSBzdGFydCBvZiBhIHdlZWtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz1cdTAwM2UgU3VuIEF1ZyAzMSAyMDE0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRoZSB3ZWVrIHN0YXJ0cyBvbiBNb25kYXksIHRoZSBzdGFydCBvZiB0aGUgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCksIHsgd2Vla1N0YXJ0c09uOiAxIH0pXG4gKiAvLz1cdTAwM2UgTW9uIFNlcCAwMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydE9mV2VlayhkYXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgY29uc3Qgd2Vla1N0YXJ0c09uID1cbiAgICBvcHRpb25zPy53ZWVrU3RhcnRzT24gPz9cbiAgICBvcHRpb25zPy5sb2NhbGU/Lm9wdGlvbnM/LndlZWtTdGFydHNPbiA/P1xuICAgIGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbiA/P1xuICAgIGRlZmF1bHRPcHRpb25zLmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uID8/XG4gICAgMDtcblxuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgY29uc3QgZGF5ID0gX2RhdGUuZ2V0RGF5KCk7XG4gIGNvbnN0IGRpZmYgPSAoZGF5IFx1MDAzYyB3ZWVrU3RhcnRzT24gPyA3IDogMCkgKyBkYXkgLSB3ZWVrU3RhcnRzT247XG5cbiAgX2RhdGUuc2V0RGF0ZShfZGF0ZS5nZXREYXRlKCkgLSBkaWZmKTtcbiAgX2RhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBzdGFydE9mV2VlaztcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZEYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIGRheSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgZGF5IGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgb3JpZ2luYWwgZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSBzdGFydCBvZiBhIGRheVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSBkYXkgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz1cdTAwM2UgVHVlIFNlcCAwMiAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydE9mRGF5KGRhdGUpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIF9kYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3RhcnRPZkRheTtcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgZWFjaERheU9mSW50ZXJ2YWx9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBlYWNoRGF5T2ZJbnRlcnZhbFxuICogQGNhdGVnb3J5IEludGVydmFsIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgYXJyYXkgb2YgZGF0ZXMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgYXJyYXkgb2YgZGF0ZXMgd2l0aGluIHRoZSBzcGVjaWZpZWQgdGltZSBpbnRlcnZhbC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gaW50ZXJ2YWwgLSBUaGUgaW50ZXJ2YWwuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKlxuICogQHJldHVybnMgVGhlIGFycmF5IHdpdGggc3RhcnRzIG9mIGRheXMgZnJvbSB0aGUgZGF5IG9mIHRoZSBpbnRlcnZhbCBzdGFydCB0byB0aGUgZGF5IG9mIHRoZSBpbnRlcnZhbCBlbmRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRWFjaCBkYXkgYmV0d2VlbiA2IE9jdG9iZXIgMjAxNCBhbmQgMTAgT2N0b2JlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gZWFjaERheU9mSW50ZXJ2YWwoe1xuICogICBzdGFydDogbmV3IERhdGUoMjAxNCwgOSwgNiksXG4gKiAgIGVuZDogbmV3IERhdGUoMjAxNCwgOSwgMTApXG4gKiB9KVxuICogLy89XHUwMDNlIFtcbiAqIC8vICAgTW9uIE9jdCAwNiAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBUdWUgT2N0IDA3IDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFdlZCBPY3QgMDggMjAxNCAwMDowMDowMCxcbiAqIC8vICAgVGh1IE9jdCAwOSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBGcmkgT2N0IDEwIDIwMTQgMDA6MDA6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVhY2hEYXlPZkludGVydmFsKGludGVydmFsLCBvcHRpb25zKSB7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHRvRGF0ZShpbnRlcnZhbC5zdGFydCk7XG4gIGNvbnN0IGVuZERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuZW5kKTtcblxuICBsZXQgcmV2ZXJzZWQgPSArc3RhcnREYXRlIFx1MDAzZSArZW5kRGF0ZTtcbiAgY29uc3QgZW5kVGltZSA9IHJldmVyc2VkID8gK3N0YXJ0RGF0ZSA6ICtlbmREYXRlO1xuICBjb25zdCBjdXJyZW50RGF0ZSA9IHJldmVyc2VkID8gZW5kRGF0ZSA6IHN0YXJ0RGF0ZTtcbiAgY3VycmVudERhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cbiAgbGV0IHN0ZXAgPSBvcHRpb25zPy5zdGVwID8/IDE7XG4gIGlmICghc3RlcCkgcmV0dXJuIFtdO1xuICBpZiAoc3RlcCBcdTAwM2MgMCkge1xuICAgIHN0ZXAgPSAtc3RlcDtcbiAgICByZXZlcnNlZCA9ICFyZXZlcnNlZDtcbiAgfVxuXG4gIGNvbnN0IGRhdGVzID0gW107XG5cbiAgd2hpbGUgKCtjdXJyZW50RGF0ZSBcdTAwM2M9IGVuZFRpbWUpIHtcbiAgICBkYXRlcy5wdXNoKHRvRGF0ZShjdXJyZW50RGF0ZSkpO1xuICAgIGN1cnJlbnREYXRlLnNldERhdGUoY3VycmVudERhdGUuZ2V0RGF0ZSgpICsgc3RlcCk7XG4gICAgY3VycmVudERhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIH1cblxuICByZXR1cm4gcmV2ZXJzZWQgPyBkYXRlcy5yZXZlcnNlKCkgOiBkYXRlcztcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBlYWNoRGF5T2ZJbnRlcnZhbDtcbiIsICIvKipcbiAqIEBuYW1lIGlzRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gdmFsdWUgYSBkYXRlP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLiBUaGUgZnVuY3Rpb24gd29ya3MgZm9yIGRhdGVzIHRyYW5zZmVycmVkIGFjcm9zcyBpZnJhbWVzLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVja1xuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgZGF0ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgYSB2YWxpZCBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNEYXRlKG5ldyBEYXRlKCkpXG4gKiAvLz1cdTAwM2UgdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgYW4gaW52YWxpZCBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNEYXRlKG5ldyBEYXRlKE5hTikpXG4gKiAvLz1cdTAwM2UgdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3Igc29tZSB2YWx1ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzRGF0ZSgnMjAxNC0wMi0zMScpXG4gKiAvLz1cdTAwM2UgZmFsc2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIGFuIG9iamVjdDpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzRGF0ZSh7fSlcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlKHZhbHVlKSB7XG4gIHJldHVybiAoXG4gICAgdmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjZcbiAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGlzRGF0ZTtcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiaW1wb3J0IHsgaXNEYXRlIH0gZnJvbSBcIi4vaXNEYXRlLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGlzVmFsaWRcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgdmFsaWQ/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm5zIGZhbHNlIGlmIGFyZ3VtZW50IGlzIEludmFsaWQgRGF0ZSBhbmQgdHJ1ZSBvdGhlcndpc2UuXG4gKiBBcmd1bWVudCBpcyBjb252ZXJ0ZWQgdG8gRGF0ZSB1c2luZyBgdG9EYXRlYC4gU2VlIFt0b0RhdGVdKGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvdG9EYXRlKVxuICogSW52YWxpZCBEYXRlIGlzIGEgRGF0ZSwgd2hvc2UgdGltZSB2YWx1ZSBpcyBOYU4uXG4gKlxuICogVGltZSB2YWx1ZSBvZiBEYXRlOiBodHRwOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjkuMS4xXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBjaGVja1xuICpcbiAqIEByZXR1cm5zIFRoZSBkYXRlIGlzIHZhbGlkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciB0aGUgdmFsaWQgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzVmFsaWQobmV3IERhdGUoMjAxNCwgMSwgMzEpKVxuICogLy89XHUwMDNlIHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHRoZSB2YWx1ZSwgY29udmVydGFibGUgaW50byBhIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc1ZhbGlkKDEzOTM4MDQ4MDAwMDApXG4gKiAvLz1cdTAwM2UgdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIGludmFsaWQgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzVmFsaWQobmV3IERhdGUoJycpKVxuICogLy89XHUwMDNlIGZhbHNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkKGRhdGUpIHtcbiAgaWYgKCFpc0RhdGUoZGF0ZSkgXHUwMDI2XHUwMDI2IHR5cGVvZiBkYXRlICE9PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICByZXR1cm4gIWlzTmFOKE51bWJlcihfZGF0ZSkpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGlzVmFsaWQ7XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGFkZExlYWRpbmdaZXJvcyhudW1iZXIsIHRhcmdldExlbmd0aCkge1xuICBjb25zdCBzaWduID0gbnVtYmVyIFx1MDAzYyAwID8gXCItXCIgOiBcIlwiO1xuICBjb25zdCBvdXRwdXQgPSBNYXRoLmFicyhudW1iZXIpLnRvU3RyaW5nKCkucGFkU3RhcnQodGFyZ2V0TGVuZ3RoLCBcIjBcIik7XG4gIHJldHVybiBzaWduICsgb3V0cHV0O1xufVxuIiwgImltcG9ydCB7IGFkZExlYWRpbmdaZXJvcyB9IGZyb20gXCIuLi9hZGRMZWFkaW5nWmVyb3MubWpzXCI7XG5cbi8qXG4gKiB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICBhICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBBKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBkICB8IERheSBvZiBtb250aCAgICAgICAgICAgICAgICAgICB8ICBEICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBoICB8IEhvdXIgWzEtMTJdICAgICAgICAgICAgICAgICAgICB8ICBIICB8IEhvdXIgWzAtMjNdICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBtICB8IE1pbnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBNICB8IE1vbnRoICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBzICB8IFNlY29uZCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBTICB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICB8XG4gKiB8ICB5ICB8IFllYXIgKGFicykgICAgICAgICAgICAgICAgICAgICB8ICBZICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKlxuICogTGV0dGVycyBtYXJrZWQgYnkgKiBhcmUgbm90IGltcGxlbWVudGVkIGJ1dCByZXNlcnZlZCBieSBVbmljb2RlIHN0YW5kYXJkLlxuICovXG5cbmV4cG9ydCBjb25zdCBsaWdodEZvcm1hdHRlcnMgPSB7XG4gIC8vIFllYXJcbiAgeShkYXRlLCB0b2tlbikge1xuICAgIC8vIEZyb20gaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS0zMS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9Gb3JtYXRfdG9rZW5zXG4gICAgLy8gfCBZZWFyICAgICB8ICAgICB5IHwgeXkgfCAgIHl5eSB8ICB5eXl5IHwgeXl5eXkgfFxuICAgIC8vIHwtLS0tLS0tLS0tfC0tLS0tLS18LS0tLXwtLS0tLS0tfC0tLS0tLS18LS0tLS0tLXxcbiAgICAvLyB8IEFEIDEgICAgIHwgICAgIDEgfCAwMSB8ICAgMDAxIHwgIDAwMDEgfCAwMDAwMSB8XG4gICAgLy8gfCBBRCAxMiAgICB8ICAgIDEyIHwgMTIgfCAgIDAxMiB8ICAwMDEyIHwgMDAwMTIgfFxuICAgIC8vIHwgQUQgMTIzICAgfCAgIDEyMyB8IDIzIHwgICAxMjMgfCAgMDEyMyB8IDAwMTIzIHxcbiAgICAvLyB8IEFEIDEyMzQgIHwgIDEyMzQgfCAzNCB8ICAxMjM0IHwgIDEyMzQgfCAwMTIzNCB8XG4gICAgLy8gfCBBRCAxMjM0NSB8IDEyMzQ1IHwgNDUgfCAxMjM0NSB8IDEyMzQ1IHwgMTIzNDUgfFxuXG4gICAgY29uc3Qgc2lnbmVkWWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAvLyBSZXR1cm5zIDEgZm9yIDEgQkMgKHdoaWNoIGlzIHllYXIgMCBpbiBKYXZhU2NyaXB0KVxuICAgIGNvbnN0IHllYXIgPSBzaWduZWRZZWFyIFx1MDAzZSAwID8gc2lnbmVkWWVhciA6IDEgLSBzaWduZWRZZWFyO1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3ModG9rZW4gPT09IFwieXlcIiA/IHllYXIgJSAxMDAgOiB5ZWFyLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuXG4gIC8vIE1vbnRoXG4gIE0oZGF0ZSwgdG9rZW4pIHtcbiAgICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgICByZXR1cm4gdG9rZW4gPT09IFwiTVwiID8gU3RyaW5nKG1vbnRoICsgMSkgOiBhZGRMZWFkaW5nWmVyb3MobW9udGggKyAxLCAyKTtcbiAgfSxcblxuICAvLyBEYXkgb2YgdGhlIG1vbnRoXG4gIGQoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGRhdGUuZ2V0RGF0ZSgpLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuXG4gIC8vIEFNIG9yIFBNXG4gIGEoZGF0ZSwgdG9rZW4pIHtcbiAgICBjb25zdCBkYXlQZXJpb2RFbnVtVmFsdWUgPSBkYXRlLmdldEhvdXJzKCkgLyAxMiBcdTAwM2U9IDEgPyBcInBtXCIgOiBcImFtXCI7XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlIFwiYVwiOlxuICAgICAgY2FzZSBcImFhXCI6XG4gICAgICAgIHJldHVybiBkYXlQZXJpb2RFbnVtVmFsdWUudG9VcHBlckNhc2UoKTtcbiAgICAgIGNhc2UgXCJhYWFcIjpcbiAgICAgICAgcmV0dXJuIGRheVBlcmlvZEVudW1WYWx1ZTtcbiAgICAgIGNhc2UgXCJhYWFhYVwiOlxuICAgICAgICByZXR1cm4gZGF5UGVyaW9kRW51bVZhbHVlWzBdO1xuICAgICAgY2FzZSBcImFhYWFcIjpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBkYXlQZXJpb2RFbnVtVmFsdWUgPT09IFwiYW1cIiA/IFwiYS5tLlwiIDogXCJwLm0uXCI7XG4gICAgfVxuICB9LFxuXG4gIC8vIEhvdXIgWzEtMTJdXG4gIGgoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGRhdGUuZ2V0SG91cnMoKSAlIDEyIHx8IDEyLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuXG4gIC8vIEhvdXIgWzAtMjNdXG4gIEgoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGRhdGUuZ2V0SG91cnMoKSwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcblxuICAvLyBNaW51dGVcbiAgbShkYXRlLCB0b2tlbikge1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZGF0ZS5nZXRNaW51dGVzKCksIHRva2VuLmxlbmd0aCk7XG4gIH0sXG5cbiAgLy8gU2Vjb25kXG4gIHMoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGRhdGUuZ2V0U2Vjb25kcygpLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuXG4gIC8vIEZyYWN0aW9uIG9mIHNlY29uZFxuICBTKGRhdGUsIHRva2VuKSB7XG4gICAgY29uc3QgbnVtYmVyT2ZEaWdpdHMgPSB0b2tlbi5sZW5ndGg7XG4gICAgY29uc3QgbWlsbGlzZWNvbmRzID0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKTtcbiAgICBjb25zdCBmcmFjdGlvbmFsU2Vjb25kcyA9IE1hdGgudHJ1bmMoXG4gICAgICBtaWxsaXNlY29uZHMgKiBNYXRoLnBvdygxMCwgbnVtYmVyT2ZEaWdpdHMgLSAzKSxcbiAgICApO1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZnJhY3Rpb25hbFNlY29uZHMsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG59O1xuIiwgImltcG9ydCB7IGlzVmFsaWQgfSBmcm9tIFwiLi9pc1ZhbGlkLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgbGlnaHRGb3JtYXR0ZXJzIH0gZnJvbSBcIi4vX2xpYi9mb3JtYXQvbGlnaHRGb3JtYXR0ZXJzLm1qc1wiO1xuXG4vLyBSZXhwb3J0cyBvZiBpbnRlcm5hbCBmb3IgbGlicmFyaWVzIHRvIHVzZS5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2lzc3Vlcy8zNjM4I2lzc3VlY29tbWVudC0xODc3MDgyODc0XG5leHBvcnQgeyBsaWdodEZvcm1hdHRlcnMgfTtcblxuLy8gVGhpcyBSZWdFeHAgY29uc2lzdHMgb2YgdGhyZWUgcGFydHMgc2VwYXJhdGVkIGJ5IGB8YDpcbi8vIC0gKFxcdylcXDEqIG1hdGNoZXMgYW55IHNlcXVlbmNlcyBvZiB0aGUgc2FtZSBsZXR0ZXJcbi8vIC0gJycgbWF0Y2hlcyB0d28gcXVvdGUgY2hhcmFjdGVycyBpbiBhIHJvd1xuLy8gLSAnKCcnfFteJ10pKygnfCQpIG1hdGNoZXMgYW55dGhpbmcgc3Vycm91bmRlZCBieSB0d28gcXVvdGUgY2hhcmFjdGVycyAoJyksXG4vLyAgIGV4Y2VwdCBhIHNpbmdsZSBxdW90ZSBzeW1ib2wsIHdoaWNoIGVuZHMgdGhlIHNlcXVlbmNlLlxuLy8gICBUd28gcXVvdGUgY2hhcmFjdGVycyBkbyBub3QgZW5kIHRoZSBzZXF1ZW5jZS5cbi8vICAgSWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc2luZ2xlIHF1b3RlXG4vLyAgIHRoZW4gdGhlIHNlcXVlbmNlIHdpbGwgY29udGludWUgdW50aWwgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLlxuLy8gLSAuIG1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIgdW5tYXRjaGVkIGJ5IHByZXZpb3VzIHBhcnRzIG9mIHRoZSBSZWdFeHBzXG5jb25zdCBmb3JtYXR0aW5nVG9rZW5zUmVnRXhwID0gLyhcXHcpXFwxKnwnJ3wnKCcnfFteJ10pKygnfCQpfC4vZztcblxuY29uc3QgZXNjYXBlZFN0cmluZ1JlZ0V4cCA9IC9eJyhbXl0qPyknPyQvO1xuY29uc3QgZG91YmxlUXVvdGVSZWdFeHAgPSAvJycvZztcbmNvbnN0IHVuZXNjYXBlZExhdGluQ2hhcmFjdGVyUmVnRXhwID0gL1thLXpBLVpdLztcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbi8qKlxuICogQG5hbWUgbGlnaHRGb3JtYXRcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgRm9ybWF0IHRoZSBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gdGhlIGdpdmVuIGZvcm1hdC4gVW5saWtlIGBmb3JtYXRgLFxuICogYGxpZ2h0Rm9ybWF0YCBkb2Vzbid0IHVzZSBsb2NhbGVzIGFuZCBvdXRwdXRzIGRhdGUgdXNpbmcgdGhlIG1vc3QgcG9wdWxhciB0b2tlbnMuXG4gKlxuICogXHUwMDNlIOKaoO+4jyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBgbGlnaHRGb3JtYXRgIHRva2VucyBkaWZmZXIgZnJvbSBNb21lbnQuanMgYW5kIG90aGVyIGxpYnJhcmllcy5cbiAqIFx1MDAzZSBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqXG4gKiBUaGUgY2hhcmFjdGVycyB3cmFwcGVkIGJldHdlZW4gdHdvIHNpbmdsZSBxdW90ZXMgY2hhcmFjdGVycyAoJykgYXJlIGVzY2FwZWQuXG4gKiBUd28gc2luZ2xlIHF1b3RlcyBpbiBhIHJvdywgd2hldGhlciBpbnNpZGUgb3Igb3V0c2lkZSBhIHF1b3RlZCBzZXF1ZW5jZSwgcmVwcmVzZW50IGEgJ3JlYWwnIHNpbmdsZSBxdW90ZS5cbiAqXG4gKiBGb3JtYXQgb2YgdGhlIHN0cmluZyBpcyBiYXNlZCBvbiBVbmljb2RlIFRlY2huaWNhbCBTdGFuZGFyZCAjMzU6XG4gKiBodHRwczovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS1kYXRlcy5odG1sI0RhdGVfRmllbGRfU3ltYm9sX1RhYmxlXG4gKlxuICogQWNjZXB0ZWQgcGF0dGVybnM6XG4gKiB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXR0ZXJuIHwgUmVzdWx0IGV4YW1wbGVzICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgYS4uYWFhICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWFhICAgIHwgYS5tLiwgcC5tLiAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWFhICAgfCBhLCBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBDYWxlbmRhciB5ZWFyICAgICAgICAgICAgICAgICAgIHwgeSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5eSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHl5eSAgICAgfCAwNDQsIDAwMSwgMDAwLCAwMTcgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeXl5eSAgICB8IDAwNDQsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICB8XG4gKiB8IE1vbnRoIChmb3JtYXR0aW5nKSAgICAgICAgICAgICAgfCBNICAgICAgIHwgMSwgMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1NICAgICAgfCAwMSwgMDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgfFxuICogfCBEYXkgb2YgbW9udGggICAgICAgICAgICAgICAgICAgIHwgZCAgICAgICB8IDEsIDIsIC4uLiwgMzEgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZCAgICAgIHwgMDEsIDAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgSG91ciBbMS0xMl0gICAgICAgICAgICAgICAgICAgICB8IGggICAgICAgfCAxLCAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaGggICAgICB8IDAxLCAwMiwgLi4uLCAxMSwgMTIgICAgICAgICAgICAgICB8XG4gKiB8IEhvdXIgWzAtMjNdICAgICAgICAgICAgICAgICAgICAgfCBIICAgICAgIHwgMCwgMSwgMiwgLi4uLCAyMyAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhIICAgICAgfCAwMCwgMDEsIDAyLCAuLi4sIDIzICAgICAgICAgICAgICAgfFxuICogfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbSAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtbSAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgU2Vjb25kICAgICAgICAgICAgICAgICAgICAgICAgICB8IHMgICAgICAgfCAwLCAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3MgICAgICB8IDAwLCAwMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICB8XG4gKiB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICAgfCBTICAgICAgIHwgMCwgMSwgLi4uLCA5ICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNTICAgICAgfCAwMCwgMDEsIC4uLiwgOTkgICAgICAgICAgICAgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU1NTICAgICB8IDAwMCwgMDAxLCAuLi4sIDk5OSAgICAgICAgICAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTU1NTICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0gZm9ybWF0IC0gVGhlIHN0cmluZyBvZiB0b2tlbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nXG4gKlxuICogQHRocm93cyBgSW52YWxpZCB0aW1lIHZhbHVlYCBpZiB0aGUgZGF0ZSBpcyBpbnZhbGlkXG4gKiBAdGhyb3dzIGZvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gdW5lc2NhcGVkIGxhdGluIGFscGhhYmV0IGNoYXJhY3RlclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZXN1bHQgPSBsaWdodEZvcm1hdChuZXcgRGF0ZSgyMDE0LCAxLCAxMSksICd5eXl5LU1NLWRkJylcbiAqIC8vPVx1MDAzZSAnMjAxNC0wMi0xMSdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpZ2h0Rm9ybWF0KGRhdGUsIGZvcm1hdFN0cikge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcblxuICBpZiAoIWlzVmFsaWQoX2RhdGUpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbnZhbGlkIHRpbWUgdmFsdWVcIik7XG4gIH1cblxuICBjb25zdCB0b2tlbnMgPSBmb3JtYXRTdHIubWF0Y2goZm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCk7XG5cbiAgLy8gVGhlIG9ubHkgY2FzZSB3aGVuIGZvcm1hdHRpbmdUb2tlbnNSZWdFeHAgZG9lc24ndCBtYXRjaCB0aGUgc3RyaW5nIGlzIHdoZW4gaXQncyBlbXB0eVxuICBpZiAoIXRva2VucykgcmV0dXJuIFwiXCI7XG5cbiAgY29uc3QgcmVzdWx0ID0gdG9rZW5zXG4gICAgLm1hcCgoc3Vic3RyaW5nKSA9XHUwMDNlIHtcbiAgICAgIC8vIFJlcGxhY2UgdHdvIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIHdpdGggb25lIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJcbiAgICAgIGlmIChzdWJzdHJpbmcgPT09IFwiJydcIikge1xuICAgICAgICByZXR1cm4gXCInXCI7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpcnN0Q2hhcmFjdGVyID0gc3Vic3RyaW5nWzBdO1xuICAgICAgaWYgKGZpcnN0Q2hhcmFjdGVyID09PSBcIidcIikge1xuICAgICAgICByZXR1cm4gY2xlYW5Fc2NhcGVkU3RyaW5nKHN1YnN0cmluZyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvcm1hdHRlciA9IGxpZ2h0Rm9ybWF0dGVyc1tmaXJzdENoYXJhY3Rlcl07XG4gICAgICBpZiAoZm9ybWF0dGVyKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZXIoX2RhdGUsIHN1YnN0cmluZyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmaXJzdENoYXJhY3Rlci5tYXRjaCh1bmVzY2FwZWRMYXRpbkNoYXJhY3RlclJlZ0V4cCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXG4gICAgICAgICAgXCJGb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIHVuZXNjYXBlZCBsYXRpbiBhbHBoYWJldCBjaGFyYWN0ZXIgYFwiICtcbiAgICAgICAgICAgIGZpcnN0Q2hhcmFjdGVyICtcbiAgICAgICAgICAgIFwiYFwiLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3Vic3RyaW5nO1xuICAgIH0pXG4gICAgLmpvaW4oXCJcIik7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY2xlYW5Fc2NhcGVkU3RyaW5nKGlucHV0KSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBpbnB1dC5tYXRjaChlc2NhcGVkU3RyaW5nUmVnRXhwKTtcblxuICBpZiAoIW1hdGNoZXMpIHtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH1cblxuICByZXR1cm4gbWF0Y2hlc1sxXS5yZXBsYWNlKGRvdWJsZVF1b3RlUmVnRXhwLCBcIidcIik7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgbGlnaHRGb3JtYXQ7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgIi8qKlxuICogQG5hbWUgY29uc3RydWN0RnJvbVxuICogQGNhdGVnb3J5IEdlbmVyaWMgSGVscGVyc1xuICogQHN1bW1hcnkgQ29uc3RydWN0cyBhIGRhdGUgdXNpbmcgdGhlIHJlZmVyZW5jZSBkYXRlIGFuZCB0aGUgdmFsdWVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBmdW5jdGlvbiBjb25zdHJ1Y3RzIGEgbmV3IGRhdGUgdXNpbmcgdGhlIGNvbnN0cnVjdG9yIGZyb20gdGhlIHJlZmVyZW5jZVxuICogZGF0ZSBhbmQgdGhlIGdpdmVuIHZhbHVlLiBJdCBoZWxwcyB0byBidWlsZCBnZW5lcmljIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdFxuICogZGF0ZSBleHRlbnNpb25zLlxuICpcbiAqIEl0IGRlZmF1bHRzIHRvIGBEYXRlYCBpZiB0aGUgcGFzc2VkIHJlZmVyZW5jZSBkYXRlIGlzIGEgbnVtYmVyIG9yIGEgc3RyaW5nLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIHJlZmVyZW5jZSBkYXRlIHRvIHRha2UgY29uc3RydWN0b3IgZnJvbVxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNyZWF0ZSB0aGUgZGF0ZVxuICpcbiAqIEByZXR1cm5zIERhdGUgaW5pdGlhbGl6ZWQgdXNpbmcgdGhlIGdpdmVuIGRhdGUgYW5kIHZhbHVlXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tICdkYXRlLWZucydcbiAqXG4gKiAvLyBBIGZ1bmN0aW9uIHRoYXQgY2xvbmVzIGEgZGF0ZSBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCB0eXBlXG4gKiBmdW5jdGlvbiBjbG9uZURhdGVcdTAwM2NEYXRlVHlwZSBleHRlbmRzIERhdGUoZGF0ZTogRGF0ZVR5cGUpOiBEYXRlVHlwZSB7XG4gKiAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKFxuICogICAgIGRhdGUsIC8vIFVzZSBjb250cnVzdG9yIGZyb20gdGhlIGdpdmVuIGRhdGVcbiAqICAgICBkYXRlLmdldFRpbWUoKSAvLyBVc2UgdGhlIGRhdGUgdmFsdWUgdG8gY3JlYXRlIGEgbmV3IGRhdGVcbiAqICAgKVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RnJvbShkYXRlLCB2YWx1ZSkge1xuICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gbmV3IGRhdGUuY29uc3RydWN0b3IodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBjb25zdHJ1Y3RGcm9tO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZERheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIGRheXMgdG8gYmUgYWRkZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheXMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDEwIGRheXMgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZERheXMobmV3IERhdGUoMjAxNCwgOCwgMSksIDEwKVxuICogLy89XHUwMDNlIFRodSBTZXAgMTEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkRGF5cyhkYXRlLCBhbW91bnQpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGlmIChpc05hTihhbW91bnQpKSByZXR1cm4gY29uc3RydWN0RnJvbShkYXRlLCBOYU4pO1xuICBpZiAoIWFtb3VudCkge1xuICAgIC8vIElmIDAgZGF5cywgbm8tb3AgdG8gYXZvaWQgY2hhbmdpbmcgdGltZXMgaW4gdGhlIGhvdXIgYmVmb3JlIGVuZCBvZiBEU1RcbiAgICByZXR1cm4gX2RhdGU7XG4gIH1cbiAgX2RhdGUuc2V0RGF0ZShfZGF0ZS5nZXREYXRlKCkgKyBhbW91bnQpO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkRGF5cztcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiLyoqXG4gKiBAbmFtZSBjb25zdHJ1Y3RGcm9tXG4gKiBAY2F0ZWdvcnkgR2VuZXJpYyBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb25zdHJ1Y3RzIGEgZGF0ZSB1c2luZyB0aGUgcmVmZXJlbmNlIGRhdGUgYW5kIHRoZSB2YWx1ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGZ1bmN0aW9uIGNvbnN0cnVjdHMgYSBuZXcgZGF0ZSB1c2luZyB0aGUgY29uc3RydWN0b3IgZnJvbSB0aGUgcmVmZXJlbmNlXG4gKiBkYXRlIGFuZCB0aGUgZ2l2ZW4gdmFsdWUuIEl0IGhlbHBzIHRvIGJ1aWxkIGdlbmVyaWMgZnVuY3Rpb25zIHRoYXQgYWNjZXB0XG4gKiBkYXRlIGV4dGVuc2lvbnMuXG4gKlxuICogSXQgZGVmYXVsdHMgdG8gYERhdGVgIGlmIHRoZSBwYXNzZWQgcmVmZXJlbmNlIGRhdGUgaXMgYSBudW1iZXIgb3IgYSBzdHJpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgcmVmZXJlbmNlIGRhdGUgdG8gdGFrZSBjb25zdHJ1Y3RvciBmcm9tXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY3JlYXRlIHRoZSBkYXRlXG4gKlxuICogQHJldHVybnMgRGF0ZSBpbml0aWFsaXplZCB1c2luZyB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdmFsdWVcbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gJ2RhdGUtZm5zJ1xuICpcbiAqIC8vIEEgZnVuY3Rpb24gdGhhdCBjbG9uZXMgYSBkYXRlIHByZXNlcnZpbmcgdGhlIG9yaWdpbmFsIHR5cGVcbiAqIGZ1bmN0aW9uIGNsb25lRGF0ZVx1MDAzY0RhdGVUeXBlIGV4dGVuZHMgRGF0ZShkYXRlOiBEYXRlVHlwZSk6IERhdGVUeXBlIHtcbiAqICAgcmV0dXJuIGNvbnN0cnVjdEZyb20oXG4gKiAgICAgZGF0ZSwgLy8gVXNlIGNvbnRydXN0b3IgZnJvbSB0aGUgZ2l2ZW4gZGF0ZVxuICogICAgIGRhdGUuZ2V0VGltZSgpIC8vIFVzZSB0aGUgZGF0ZSB2YWx1ZSB0byBjcmVhdGUgYSBuZXcgZGF0ZVxuICogICApXG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHZhbHVlKSB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgZGF0ZS5jb25zdHJ1Y3Rvcih2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGNvbnN0cnVjdEZyb207XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgYWRkRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgZGF5cyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5cyBhZGRlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMTAgZGF5cyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz1cdTAwM2UgVGh1IFNlcCAxMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGREYXlzKGRhdGUsIGFtb3VudCkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgaWYgKGlzTmFOKGFtb3VudCkpIHJldHVybiBjb25zdHJ1Y3RGcm9tKGRhdGUsIE5hTik7XG4gIGlmICghYW1vdW50KSB7XG4gICAgLy8gSWYgMCBkYXlzLCBuby1vcCB0byBhdm9pZCBjaGFuZ2luZyB0aW1lcyBpbiB0aGUgaG91ciBiZWZvcmUgZW5kIG9mIERTVFxuICAgIHJldHVybiBfZGF0ZTtcbiAgfVxuICBfZGF0ZS5zZXREYXRlKF9kYXRlLmdldERhdGUoKSArIGFtb3VudCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGREYXlzO1xuIiwgImltcG9ydCB7IGFkZERheXMgfSBmcm9tIFwiLi9hZGREYXlzLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIHN1YkRheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgZGF5cyB0byBiZSBzdWJ0cmFjdGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBkYXlzIHN1YnRyYWN0ZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgMTAgZGF5cyBmcm9tIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJEYXlzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAxMClcbiAqIC8vPVx1MDAzZSBGcmkgQXVnIDIyIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YkRheXMoZGF0ZSwgYW1vdW50KSB7XG4gIHJldHVybiBhZGREYXlzKGRhdGUsIC1hbW91bnQpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHN1YkRheXM7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgIi8qKlxuICogQG5hbWUgY29uc3RydWN0RnJvbVxuICogQGNhdGVnb3J5IEdlbmVyaWMgSGVscGVyc1xuICogQHN1bW1hcnkgQ29uc3RydWN0cyBhIGRhdGUgdXNpbmcgdGhlIHJlZmVyZW5jZSBkYXRlIGFuZCB0aGUgdmFsdWVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBmdW5jdGlvbiBjb25zdHJ1Y3RzIGEgbmV3IGRhdGUgdXNpbmcgdGhlIGNvbnN0cnVjdG9yIGZyb20gdGhlIHJlZmVyZW5jZVxuICogZGF0ZSBhbmQgdGhlIGdpdmVuIHZhbHVlLiBJdCBoZWxwcyB0byBidWlsZCBnZW5lcmljIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdFxuICogZGF0ZSBleHRlbnNpb25zLlxuICpcbiAqIEl0IGRlZmF1bHRzIHRvIGBEYXRlYCBpZiB0aGUgcGFzc2VkIHJlZmVyZW5jZSBkYXRlIGlzIGEgbnVtYmVyIG9yIGEgc3RyaW5nLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIHJlZmVyZW5jZSBkYXRlIHRvIHRha2UgY29uc3RydWN0b3IgZnJvbVxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNyZWF0ZSB0aGUgZGF0ZVxuICpcbiAqIEByZXR1cm5zIERhdGUgaW5pdGlhbGl6ZWQgdXNpbmcgdGhlIGdpdmVuIGRhdGUgYW5kIHZhbHVlXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tICdkYXRlLWZucydcbiAqXG4gKiAvLyBBIGZ1bmN0aW9uIHRoYXQgY2xvbmVzIGEgZGF0ZSBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCB0eXBlXG4gKiBmdW5jdGlvbiBjbG9uZURhdGVcdTAwM2NEYXRlVHlwZSBleHRlbmRzIERhdGUoZGF0ZTogRGF0ZVR5cGUpOiBEYXRlVHlwZSB7XG4gKiAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKFxuICogICAgIGRhdGUsIC8vIFVzZSBjb250cnVzdG9yIGZyb20gdGhlIGdpdmVuIGRhdGVcbiAqICAgICBkYXRlLmdldFRpbWUoKSAvLyBVc2UgdGhlIGRhdGUgdmFsdWUgdG8gY3JlYXRlIGEgbmV3IGRhdGVcbiAqICAgKVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RnJvbShkYXRlLCB2YWx1ZSkge1xuICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gbmV3IGRhdGUuY29uc3RydWN0b3IodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBjb25zdHJ1Y3RGcm9tO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZE1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRvIGJlIGFkZGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtaWxsaXNlY29uZHMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDc1MCBtaWxsaXNlY29uZHMgdG8gMTAgSnVseSAyMDE0IDEyOjQ1OjMwLjAwMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZE1pbGxpc2Vjb25kcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDQ1LCAzMCwgMCksIDc1MClcbiAqIC8vPVx1MDAzZSBUaHUgSnVsIDEwIDIwMTQgMTI6NDU6MzAuNzUwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRNaWxsaXNlY29uZHMoZGF0ZSwgYW1vdW50KSB7XG4gIGNvbnN0IHRpbWVzdGFtcCA9ICt0b0RhdGUoZGF0ZSk7XG4gIHJldHVybiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHRpbWVzdGFtcCArIGFtb3VudCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkTWlsbGlzZWNvbmRzO1xuIiwgImltcG9ydCB7IGFkZE1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL2FkZE1pbGxpc2Vjb25kcy5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBhZGRTZWNvbmRzXG4gKiBAY2F0ZWdvcnkgU2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiBzZWNvbmRzIHRvIGJlIGFkZGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBzZWNvbmRzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAzMCBzZWNvbmRzIHRvIDEwIEp1bHkgMjAxNCAxMjo0NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZFNlY29uZHMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCA0NSwgMCksIDMwKVxuICogLy89XHUwMDNlIFRodSBKdWwgMTAgMjAxNCAxMjo0NTozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkU2Vjb25kcyhkYXRlLCBhbW91bnQpIHtcbiAgcmV0dXJuIGFkZE1pbGxpc2Vjb25kcyhkYXRlLCBhbW91bnQgKiAxMDAwKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGRTZWNvbmRzO1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICIvKipcbiAqIEBuYW1lIGNvbnN0cnVjdEZyb21cbiAqIEBjYXRlZ29yeSBHZW5lcmljIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnN0cnVjdHMgYSBkYXRlIHVzaW5nIHRoZSByZWZlcmVuY2UgZGF0ZSBhbmQgdGhlIHZhbHVlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGUgZnVuY3Rpb24gY29uc3RydWN0cyBhIG5ldyBkYXRlIHVzaW5nIHRoZSBjb25zdHJ1Y3RvciBmcm9tIHRoZSByZWZlcmVuY2VcbiAqIGRhdGUgYW5kIHRoZSBnaXZlbiB2YWx1ZS4gSXQgaGVscHMgdG8gYnVpbGQgZ2VuZXJpYyBmdW5jdGlvbnMgdGhhdCBhY2NlcHRcbiAqIGRhdGUgZXh0ZW5zaW9ucy5cbiAqXG4gKiBJdCBkZWZhdWx0cyB0byBgRGF0ZWAgaWYgdGhlIHBhc3NlZCByZWZlcmVuY2UgZGF0ZSBpcyBhIG51bWJlciBvciBhIHN0cmluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSByZWZlcmVuY2UgZGF0ZSB0byB0YWtlIGNvbnN0cnVjdG9yIGZyb21cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjcmVhdGUgdGhlIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBEYXRlIGluaXRpYWxpemVkIHVzaW5nIHRoZSBnaXZlbiBkYXRlIGFuZCB2YWx1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSAnZGF0ZS1mbnMnXG4gKlxuICogLy8gQSBmdW5jdGlvbiB0aGF0IGNsb25lcyBhIGRhdGUgcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgdHlwZVxuICogZnVuY3Rpb24gY2xvbmVEYXRlXHUwMDNjRGF0ZVR5cGUgZXh0ZW5kcyBEYXRlKGRhdGU6IERhdGVUeXBlKTogRGF0ZVR5cGUge1xuICogICByZXR1cm4gY29uc3RydWN0RnJvbShcbiAqICAgICBkYXRlLCAvLyBVc2UgY29udHJ1c3RvciBmcm9tIHRoZSBnaXZlbiBkYXRlXG4gKiAgICAgZGF0ZS5nZXRUaW1lKCkgLy8gVXNlIHRoZSBkYXRlIHZhbHVlIHRvIGNyZWF0ZSBhIG5ldyBkYXRlXG4gKiAgIClcbiAqIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdEZyb20oZGF0ZSwgdmFsdWUpIHtcbiAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBkYXRlLmNvbnN0cnVjdG9yKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgY29uc3RydWN0RnJvbTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5pbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBhZGREYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiBkYXlzIHRvIGJlIGFkZGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBkYXlzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAxMCBkYXlzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGREYXlzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAxMClcbiAqIC8vPVx1MDAzZSBUaHUgU2VwIDExIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZERheXMoZGF0ZSwgYW1vdW50KSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBpZiAoaXNOYU4oYW1vdW50KSkgcmV0dXJuIGNvbnN0cnVjdEZyb20oZGF0ZSwgTmFOKTtcbiAgaWYgKCFhbW91bnQpIHtcbiAgICAvLyBJZiAwIGRheXMsIG5vLW9wIHRvIGF2b2lkIGNoYW5naW5nIHRpbWVzIGluIHRoZSBob3VyIGJlZm9yZSBlbmQgb2YgRFNUXG4gICAgcmV0dXJuIF9kYXRlO1xuICB9XG4gIF9kYXRlLnNldERhdGUoX2RhdGUuZ2V0RGF0ZSgpICsgYW1vdW50KTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGFkZERheXM7XG4iLCAiaW1wb3J0IHsgYWRkRGF5cyB9IGZyb20gXCIuL2FkZERheXMubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgYWRkV2Vla3NcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB3ZWVrcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB3ZWVrIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2Ygd2Vla3MgdG8gYmUgYWRkZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIHdlZWtzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCA0IHdlZWtzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRXZWVrcyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgNClcbiAqIC8vPVx1MDAzZSBNb24gU2VwIDI5IDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFdlZWtzKGRhdGUsIGFtb3VudCkge1xuICBjb25zdCBkYXlzID0gYW1vdW50ICogNztcbiAgcmV0dXJuIGFkZERheXMoZGF0ZSwgZGF5cyk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkV2Vla3M7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBnZXREYXRlXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgZGF5IG9mIHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgZGF5IG9mIHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBnaXZlbiBkYXRlXG4gKlxuICogQHJldHVybnMgVGhlIGRheSBvZiBtb250aFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBkYXkgb2YgdGhlIG1vbnRoIGlzIDI5IEZlYnJ1YXJ5IDIwMTI/XG4gKiBjb25zdCByZXN1bHQgPSBnZXREYXRlKG5ldyBEYXRlKDIwMTIsIDEsIDI5KSlcbiAqIC8vPVx1MDAzZSAyOVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0ZShkYXRlKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCBkYXlPZk1vbnRoID0gX2RhdGUuZ2V0RGF0ZSgpO1xuICByZXR1cm4gZGF5T2ZNb250aDtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBnZXREYXRlO1xuIiwgIi8qKlxuICogQG1vZHVsZSBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IFVzZWZ1bCBjb25zdGFudHNcbiAqIEBkZXNjcmlwdGlvblxuICogQ29sbGVjdGlvbiBvZiB1c2VmdWwgZGF0ZSBjb25zdGFudHMuXG4gKlxuICogVGhlIGNvbnN0YW50cyBjb3VsZCBiZSBpbXBvcnRlZCBmcm9tIGBkYXRlLWZucy9jb25zdGFudHNgOlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBtYXhUaW1lLCBtaW5UaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGZ1bmN0aW9uIGlzQWxsb3dlZFRpbWUodGltZSkge1xuICogICByZXR1cm4gdGltZSBcdTAwM2M9IG1heFRpbWUgXHUwMDI2XHUwMDI2IHRpbWUgXHUwMDNlPSBtaW5UaW1lO1xuICogfVxuICogYGBgXG4gKi9cblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIGRheXNJbldlZWtcbiAqIEBzdW1tYXJ5IERheXMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3QgZGF5c0luV2VlayA9IDc7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBkYXlzSW5ZZWFyXG4gKiBAc3VtbWFyeSBEYXlzIGluIDEgeWVhci5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEhvdyBtYW55IGRheXMgaW4gYSB5ZWFyLlxuICpcbiAqIE9uZSB5ZWFycyBlcXVhbHMgMzY1LjI0MjUgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6XG4gKlxuICogXHUwMDNlIExlYXAgeWVhciBvY2N1cmVzIGV2ZXJ5IDQgeWVhcnMsIGV4Y2VwdCBmb3IgeWVhcnMgdGhhdCBhcmUgZGl2aXNhYmxlIGJ5IDEwMCBhbmQgbm90IGRpdmlzYWJsZSBieSA0MDAuXG4gKiBcdTAwM2UgMSBtZWFuIHllYXIgPSAoMzY1KzEvNC0xLzEwMCsxLzQwMCkgZGF5cyA9IDM2NS4yNDI1IGRheXNcbiAqL1xuZXhwb3J0IGNvbnN0IGRheXNJblllYXIgPSAzNjUuMjQyNTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1heFRpbWVcbiAqIEBzdW1tYXJ5IE1heGltdW0gYWxsb3dlZCB0aW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBtYXhUaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGNvbnN0IGlzVmFsaWQgPSA4NjQwMDAwMDAwMDAwMDAxIFx1MDAzYz0gbWF4VGltZTtcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICpcbiAqIG5ldyBEYXRlKDg2NDAwMDAwMDAwMDAwMDEpO1xuICogLy89XHUwMDNlIEludmFsaWQgRGF0ZVxuICovXG5leHBvcnQgY29uc3QgbWF4VGltZSA9IE1hdGgucG93KDEwLCA4KSAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW5UaW1lXG4gKiBAc3VtbWFyeSBNaW5pbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBjb25zdCBpc1ZhbGlkID0gLTg2NDAwMDAwMDAwMDAwMDEgXHUwMDNlPSBtaW5UaW1lO1xuICogLy89XHUwMDNlIGZhbHNlXG4gKlxuICogbmV3IERhdGUoLTg2NDAwMDAwMDAwMDAwMDEpXG4gKiAvLz1cdTAwM2UgSW52YWxpZCBEYXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtaW5UaW1lID0gLW1heFRpbWU7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbldlZWtcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbldlZWsgPSA2MDQ4MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkRheVxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5EYXkgPSA4NjQwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luTWludXRlXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBtaW51dGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luTWludXRlID0gNjAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkhvdXJcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIGhvdXJcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luSG91ciA9IDM2MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJblNlY29uZFxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgc2Vjb25kXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJblNlY29uZCA9IDEwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5ZZWFyXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJblllYXIgPSA1MjU2MDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5Nb250aFxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIG1vbnRoLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luTW9udGggPSA0MzIwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbkRheVxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbkRheSA9IDE0NDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5Ib3VyXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgaG91ci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbkhvdXIgPSA2MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1vbnRoc0luUXVhcnRlclxuICogQHN1bW1hcnkgTW9udGhzIGluIDEgcXVhcnRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1vbnRoc0luUXVhcnRlciA9IDM7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtb250aHNJblllYXJcbiAqIEBzdW1tYXJ5IE1vbnRocyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aHNJblllYXIgPSAxMjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHF1YXJ0ZXJzSW5ZZWFyXG4gKiBAc3VtbWFyeSBRdWFydGVycyBpbiAxIHllYXJcbiAqL1xuZXhwb3J0IGNvbnN0IHF1YXJ0ZXJzSW5ZZWFyID0gNDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbkhvdXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBob3VyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luSG91ciA9IDM2MDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5NaW51dGVcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBtaW51dGUuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5NaW51dGUgPSA2MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbkRheVxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbkRheSA9IHNlY29uZHNJbkhvdXIgKiAyNDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbldlZWtcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luV2VlayA9IHNlY29uZHNJbkRheSAqIDc7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5ZZWFyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJblllYXIgPSBzZWNvbmRzSW5EYXkgKiBkYXlzSW5ZZWFyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luTW9udGhcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBtb250aFxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luTW9udGggPSBzZWNvbmRzSW5ZZWFyIC8gMTI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5RdWFydGVyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgcXVhcnRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJblF1YXJ0ZXIgPSBzZWNvbmRzSW5Nb250aCAqIDM7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgImxldCBkZWZhdWx0T3B0aW9ucyA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdE9wdGlvbnMoKSB7XG4gIHJldHVybiBkZWZhdWx0T3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldERlZmF1bHRPcHRpb25zKG5ld09wdGlvbnMpIHtcbiAgZGVmYXVsdE9wdGlvbnMgPSBuZXdPcHRpb25zO1xufVxuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4vX2xpYi9kZWZhdWx0T3B0aW9ucy5tanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIHN0YXJ0T2ZXZWVrfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgc3RhcnRPZldlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIHN0YXJ0IG9mIGEgd2Vla1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPVx1MDAzZSBTdW4gQXVnIDMxIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdGhlIHdlZWsgc3RhcnRzIG9uIE1vbmRheSwgdGhlIHN0YXJ0IG9mIHRoZSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSwgeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIC8vPVx1MDAzZSBNb24gU2VwIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0T2ZXZWVrKGRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICBjb25zdCB3ZWVrU3RhcnRzT24gPVxuICAgIG9wdGlvbnM/LndlZWtTdGFydHNPbiA/P1xuICAgIG9wdGlvbnM/LmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uID8/XG4gICAgZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uID8/XG4gICAgZGVmYXVsdE9wdGlvbnMubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24gPz9cbiAgICAwO1xuXG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCBkYXkgPSBfZGF0ZS5nZXREYXkoKTtcbiAgY29uc3QgZGlmZiA9IChkYXkgXHUwMDNjIHdlZWtTdGFydHNPbiA/IDcgOiAwKSArIGRheSAtIHdlZWtTdGFydHNPbjtcblxuICBfZGF0ZS5zZXREYXRlKF9kYXRlLmdldERhdGUoKSAtIGRpZmYpO1xuICBfZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHN0YXJ0T2ZXZWVrO1xuIiwgIi8qKlxuICogQG5hbWUgY29uc3RydWN0RnJvbVxuICogQGNhdGVnb3J5IEdlbmVyaWMgSGVscGVyc1xuICogQHN1bW1hcnkgQ29uc3RydWN0cyBhIGRhdGUgdXNpbmcgdGhlIHJlZmVyZW5jZSBkYXRlIGFuZCB0aGUgdmFsdWVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBmdW5jdGlvbiBjb25zdHJ1Y3RzIGEgbmV3IGRhdGUgdXNpbmcgdGhlIGNvbnN0cnVjdG9yIGZyb20gdGhlIHJlZmVyZW5jZVxuICogZGF0ZSBhbmQgdGhlIGdpdmVuIHZhbHVlLiBJdCBoZWxwcyB0byBidWlsZCBnZW5lcmljIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdFxuICogZGF0ZSBleHRlbnNpb25zLlxuICpcbiAqIEl0IGRlZmF1bHRzIHRvIGBEYXRlYCBpZiB0aGUgcGFzc2VkIHJlZmVyZW5jZSBkYXRlIGlzIGEgbnVtYmVyIG9yIGEgc3RyaW5nLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIHJlZmVyZW5jZSBkYXRlIHRvIHRha2UgY29uc3RydWN0b3IgZnJvbVxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNyZWF0ZSB0aGUgZGF0ZVxuICpcbiAqIEByZXR1cm5zIERhdGUgaW5pdGlhbGl6ZWQgdXNpbmcgdGhlIGdpdmVuIGRhdGUgYW5kIHZhbHVlXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tICdkYXRlLWZucydcbiAqXG4gKiAvLyBBIGZ1bmN0aW9uIHRoYXQgY2xvbmVzIGEgZGF0ZSBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCB0eXBlXG4gKiBmdW5jdGlvbiBjbG9uZURhdGVcdTAwM2NEYXRlVHlwZSBleHRlbmRzIERhdGUoZGF0ZTogRGF0ZVR5cGUpOiBEYXRlVHlwZSB7XG4gKiAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKFxuICogICAgIGRhdGUsIC8vIFVzZSBjb250cnVzdG9yIGZyb20gdGhlIGdpdmVuIGRhdGVcbiAqICAgICBkYXRlLmdldFRpbWUoKSAvLyBVc2UgdGhlIGRhdGUgdmFsdWUgdG8gY3JlYXRlIGEgbmV3IGRhdGVcbiAqICAgKVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RnJvbShkYXRlLCB2YWx1ZSkge1xuICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gbmV3IGRhdGUuY29uc3RydWN0b3IodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBjb25zdHJ1Y3RGcm9tO1xuIiwgImltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuaW1wb3J0IHsgc3RhcnRPZldlZWsgfSBmcm9tIFwiLi9zdGFydE9mV2Vlay5tanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4vX2xpYi9kZWZhdWx0T3B0aW9ucy5tanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIGdldFdlZWtZZWFyfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgZ2V0V2Vla1llYXJcbiAqIEBjYXRlZ29yeSBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSBleGFjdCBjYWxjdWxhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2ZcbiAqIGBvcHRpb25zLndlZWtTdGFydHNPbmAgKHdoaWNoIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrKVxuICogYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKHdoaWNoIGlzIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluXG4gKiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhcilcbiAqXG4gKiBXZWVrIG51bWJlcmluZzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VlayNUaGVfSVNPX3dlZWtfZGF0ZV9zeXN0ZW1cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBnaXZlbiBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKlxuICogQHJldHVybnMgVGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggd2VlayBudW1iZXJpbmcgeWVhciBpcyAyNiBEZWNlbWJlciAyMDA0IHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3M/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrWWVhcihuZXcgRGF0ZSgyMDA0LCAxMSwgMjYpKVxuICogLy89XHUwMDNlIDIwMDVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggd2VlayBudW1iZXJpbmcgeWVhciBpcyAyNiBEZWNlbWJlciAyMDA0IGlmIHdlZWsgc3RhcnRzIG9uIFNhdHVyZGF5P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2Vla1llYXIobmV3IERhdGUoMjAwNCwgMTEsIDI2KSwgeyB3ZWVrU3RhcnRzT246IDYgfSlcbiAqIC8vPVx1MDAzZSAyMDA0XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMjYgRGVjZW1iZXIgMjAwNCBpZiB0aGUgZmlyc3Qgd2VlayBjb250YWlucyA0IEphbnVhcnk/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrWWVhcihuZXcgRGF0ZSgyMDA0LCAxMSwgMjYpLCB7IGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNCB9KVxuICogLy89XHUwMDNlIDIwMDRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdlZWtZZWFyKGRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGNvbnN0IHllYXIgPSBfZGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgY29uc3QgZmlyc3RXZWVrQ29udGFpbnNEYXRlID1cbiAgICBvcHRpb25zPy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICBvcHRpb25zPy5sb2NhbGU/Lm9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIGRlZmF1bHRPcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIGRlZmF1bHRPcHRpb25zLmxvY2FsZT8ub3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgMTtcblxuICBjb25zdCBmaXJzdFdlZWtPZk5leHRZZWFyID0gY29uc3RydWN0RnJvbShkYXRlLCAwKTtcbiAgZmlyc3RXZWVrT2ZOZXh0WWVhci5zZXRGdWxsWWVhcih5ZWFyICsgMSwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrT2ZOZXh0WWVhci5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgY29uc3Qgc3RhcnRPZk5leHRZZWFyID0gc3RhcnRPZldlZWsoZmlyc3RXZWVrT2ZOZXh0WWVhciwgb3B0aW9ucyk7XG5cbiAgY29uc3QgZmlyc3RXZWVrT2ZUaGlzWWVhciA9IGNvbnN0cnVjdEZyb20oZGF0ZSwgMCk7XG4gIGZpcnN0V2Vla09mVGhpc1llYXIuc2V0RnVsbFllYXIoeWVhciwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrT2ZUaGlzWWVhci5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgY29uc3Qgc3RhcnRPZlRoaXNZZWFyID0gc3RhcnRPZldlZWsoZmlyc3RXZWVrT2ZUaGlzWWVhciwgb3B0aW9ucyk7XG5cbiAgaWYgKF9kYXRlLmdldFRpbWUoKSBcdTAwM2U9IHN0YXJ0T2ZOZXh0WWVhci5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4geWVhciArIDE7XG4gIH0gZWxzZSBpZiAoX2RhdGUuZ2V0VGltZSgpIFx1MDAzZT0gc3RhcnRPZlRoaXNZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB5ZWFyIC0gMTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGdldFdlZWtZZWFyO1xuIiwgImltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuaW1wb3J0IHsgZ2V0V2Vla1llYXIgfSBmcm9tIFwiLi9nZXRXZWVrWWVhci5tanNcIjtcbmltcG9ydCB7IHN0YXJ0T2ZXZWVrIH0gZnJvbSBcIi4vc3RhcnRPZldlZWsubWpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuL19saWIvZGVmYXVsdE9wdGlvbnMubWpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBzdGFydE9mV2Vla1llYXJ9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBzdGFydE9mV2Vla1llYXJcbiAqIEBjYXRlZ29yeSBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyLlxuICogVGhlIGV4YWN0IGNhbGN1bGF0aW9uIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZlxuICogYG9wdGlvbnMud2Vla1N0YXJ0c09uYCAod2hpY2ggaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWspXG4gKiBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAod2hpY2ggaXMgdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW5cbiAqIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB3ZWVrLW51bWJlcmluZyB5ZWFyKVxuICpcbiAqIFdlZWsgbnVtYmVyaW5nOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZWVrI1RoZV9JU09fd2Vla19kYXRlX3N5c3RlbVxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIFRoZSBzdGFydCBvZiBhIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGFuIGEgd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgMiBKdWx5IDIwMDUgd2l0aCBkZWZhdWx0IHNldHRpbmdzOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWtZZWFyKG5ldyBEYXRlKDIwMDUsIDYsIDIpKVxuICogLy89XHUwMDNlIFN1biBEZWMgMjYgMjAwNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciAyIEp1bHkgMjAwNVxuICogLy8gaWYgTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2Ygd2Vla1xuICogLy8gYW5kIDQgSmFudWFyeSBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXI6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2Vla1llYXIobmV3IERhdGUoMjAwNSwgNiwgMiksIHtcbiAqICAgd2Vla1N0YXJ0c09uOiAxLFxuICogICBmaXJzdFdlZWtDb250YWluc0RhdGU6IDRcbiAqIH0pXG4gKiAvLz1cdTAwM2UgTW9uIEphbiAwMyAyMDA1IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydE9mV2Vla1llYXIoZGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIGNvbnN0IGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9XG4gICAgb3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgb3B0aW9ucz8ubG9jYWxlPy5vcHRpb25zPy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICBkZWZhdWx0T3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICBkZWZhdWx0T3B0aW9ucy5sb2NhbGU/Lm9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIDE7XG5cbiAgY29uc3QgeWVhciA9IGdldFdlZWtZZWFyKGRhdGUsIG9wdGlvbnMpO1xuICBjb25zdCBmaXJzdFdlZWsgPSBjb25zdHJ1Y3RGcm9tKGRhdGUsIDApO1xuICBmaXJzdFdlZWsuc2V0RnVsbFllYXIoeWVhciwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBjb25zdCBfZGF0ZSA9IHN0YXJ0T2ZXZWVrKGZpcnN0V2Vlaywgb3B0aW9ucyk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBzdGFydE9mV2Vla1llYXI7XG4iLCAiaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5XZWVrIH0gZnJvbSBcIi4vY29uc3RhbnRzLm1qc1wiO1xuaW1wb3J0IHsgc3RhcnRPZldlZWsgfSBmcm9tIFwiLi9zdGFydE9mV2Vlay5tanNcIjtcbmltcG9ydCB7IHN0YXJ0T2ZXZWVrWWVhciB9IGZyb20gXCIuL3N0YXJ0T2ZXZWVrWWVhci5tanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIGdldFdlZWt9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBnZXRXZWVrXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIGxvY2FsIHdlZWsgaW5kZXggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIGxvY2FsIHdlZWsgaW5kZXggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgZXhhY3QgY2FsY3VsYXRpb24gZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mXG4gKiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gICh3aGljaCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlaylcbiAqIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgICh3aGljaCBpcyB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpblxuICogdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIpXG4gKlxuICogV2VlayBudW1iZXJpbmc6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlZWsjVGhlX0lTT193ZWVrX2RhdGVfc3lzdGVtXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZ2l2ZW4gZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIHdlZWtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggd2VlayBvZiB0aGUgbG9jYWwgd2VlayBudW1iZXJpbmcgeWVhciBpcyAyIEphbnVhcnkgMjAwNSB3aXRoIGRlZmF1bHQgb3B0aW9ucz9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWsobmV3IERhdGUoMjAwNSwgMCwgMikpXG4gKiAvLz1cdTAwM2UgMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG9mIHRoZSBsb2NhbCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDIgSmFudWFyeSAyMDA1LFxuICogLy8gaWYgTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWssXG4gKiAvLyBhbmQgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIgYWx3YXlzIGNvbnRhaW5zIDQgSmFudWFyeT9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWsobmV3IERhdGUoMjAwNSwgMCwgMiksIHtcbiAqICAgd2Vla1N0YXJ0c09uOiAxLFxuICogICBmaXJzdFdlZWtDb250YWluc0RhdGU6IDRcbiAqIH0pXG4gKiAvLz1cdTAwM2UgNTNcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2VlayhkYXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCBkaWZmID0gK3N0YXJ0T2ZXZWVrKF9kYXRlLCBvcHRpb25zKSAtICtzdGFydE9mV2Vla1llYXIoX2RhdGUsIG9wdGlvbnMpO1xuXG4gIC8vIFJvdW5kIHRoZSBudW1iZXIgb2Ygd2Vla3MgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciBiZWNhdXNlIHRoZSBudW1iZXIgb2ZcbiAgLy8gbWlsbGlzZWNvbmRzIGluIGEgd2VlayBpcyBub3QgY29uc3RhbnQgKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2ZcbiAgLy8gdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KS5cbiAgcmV0dXJuIE1hdGgucm91bmQoZGlmZiAvIG1pbGxpc2Vjb25kc0luV2VlaykgKyAxO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGdldFdlZWs7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBnZXRNb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGdpdmVuIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgbW9udGggaW5kZXggKDAtMTEpXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIG1vbnRoIGlzIDI5IEZlYnJ1YXJ5IDIwMTI/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRNb250aChuZXcgRGF0ZSgyMDEyLCAxLCAyOSkpXG4gKiAvLz1cdTAwM2UgMVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9udGgoZGF0ZSkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgY29uc3QgbW9udGggPSBfZGF0ZS5nZXRNb250aCgpO1xuICByZXR1cm4gbW9udGg7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZ2V0TW9udGg7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBnZXRZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZ2l2ZW4gZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSB5ZWFyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHllYXIgaXMgMiBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRZZWFyKG5ldyBEYXRlKDIwMTQsIDYsIDIpKVxuICogLy89XHUwMDNlIDIwMTRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFllYXIoZGF0ZSkge1xuICByZXR1cm4gdG9EYXRlKGRhdGUpLmdldEZ1bGxZZWFyKCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZ2V0WWVhcjtcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZEYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIGRheSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgZGF5IGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgb3JpZ2luYWwgZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSBzdGFydCBvZiBhIGRheVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSBkYXkgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz1cdTAwM2UgVHVlIFNlcCAwMiAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydE9mRGF5KGRhdGUpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIF9kYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3RhcnRPZkRheTtcbiIsICJpbXBvcnQgeyBzdGFydE9mRGF5IH0gZnJvbSBcIi4vc3RhcnRPZkRheS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBpc1NhbWVEYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgQXJlIHRoZSBnaXZlbiBkYXRlcyBpbiB0aGUgc2FtZSBkYXkgKGFuZCB5ZWFyIGFuZCBtb250aCk/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBcmUgdGhlIGdpdmVuIGRhdGVzIGluIHRoZSBzYW1lIGRheSAoYW5kIHllYXIgYW5kIG1vbnRoKT9cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgZmlyc3QgZGF0ZSB0byBjaGVja1xuICogQHBhcmFtIGRhdGVSaWdodCAtIFRoZSBzZWNvbmQgZGF0ZSB0byBjaGVja1xuXG4gKiBAcmV0dXJucyBUaGUgZGF0ZXMgYXJlIGluIHRoZSBzYW1lIGRheSAoYW5kIHllYXIgYW5kIG1vbnRoKVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIgMDY6MDA6MDAgYW5kIDQgU2VwdGVtYmVyIDE4OjAwOjAwIGluIHRoZSBzYW1lIGRheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZURheShuZXcgRGF0ZSgyMDE0LCA4LCA0LCA2LCAwKSwgbmV3IERhdGUoMjAxNCwgOCwgNCwgMTgsIDApKVxuICogLy89XHUwMDNlIHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXJlIDQgU2VwdGVtYmVyIGFuZCA0IE9jdG9iZXIgaW4gdGhlIHNhbWUgZGF5P1xuICogY29uc3QgcmVzdWx0ID0gaXNTYW1lRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDQpLCBuZXcgRGF0ZSgyMDE0LCA5LCA0KSlcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBcmUgNCBTZXB0ZW1iZXIsIDIwMTQgYW5kIDQgU2VwdGVtYmVyLCAyMDE1IGluIHRoZSBzYW1lIGRheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzU2FtZURheShuZXcgRGF0ZSgyMDE0LCA4LCA0KSwgbmV3IERhdGUoMjAxNSwgOCwgNCkpXG4gKiAvLz1cdTAwM2UgZmFsc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2FtZURheShkYXRlTGVmdCwgZGF0ZVJpZ2h0KSB7XG4gIGNvbnN0IGRhdGVMZWZ0U3RhcnRPZkRheSA9IHN0YXJ0T2ZEYXkoZGF0ZUxlZnQpO1xuICBjb25zdCBkYXRlUmlnaHRTdGFydE9mRGF5ID0gc3RhcnRPZkRheShkYXRlUmlnaHQpO1xuXG4gIHJldHVybiArZGF0ZUxlZnRTdGFydE9mRGF5ID09PSArZGF0ZVJpZ2h0U3RhcnRPZkRheTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBpc1NhbWVEYXk7XG4iLCAiaW1wb3J0IHsgaXNTYW1lRGF5LCBnZXRZZWFyLCBnZXRNb250aCwgZ2V0RGF0ZSB9IGZyb20gXCIuLi9kYXRlLWZucy9tb2QudHNcIjtcblxuZXhwb3J0IGNvbnN0IGdldEVhY2hMYXRlc3REYXRlID0gKGRhdGVzOiBEYXRlW10pOiBEYXRlW10gPT4ge1xuICBjb25zdCBtYXAgPSBuZXcgTWFwPGAke251bWJlcn0tJHtudW1iZXJ9LSR7bnVtYmVyfWAsIERhdGU+KCk7XG4gIFxuICBmb3IgKGNvbnN0IGRhdGUgb2YgZGF0ZXMpIHtcbiAgICBjb25zdCBrZXkgPSBgJHtnZXRZZWFyKGRhdGUpfS0ke2dldE1vbnRoKGRhdGUpfS0ke2dldERhdGUoZGF0ZSl9YCBhcyBjb25zdDtcbiAgICBjb25zdCBzYW1lRGF0ZSA9IG1hcC5nZXQoa2V5KTtcbiAgICBpZiAoc2FtZURhdGUgJiYgc2FtZURhdGUuZ2V0VGltZSgpID4gZGF0ZS5nZXRUaW1lKCkpIGNvbnRpbnVlO1xuICAgIG1hcC5zZXQoa2V5LCBkYXRlKTtcbiAgfVxuICBcbiAgcmV0dXJuIFsuLi5tYXAudmFsdWVzKCldO1xufTtcbiAiLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgIi8qKlxuICogQG5hbWUgY29uc3RydWN0RnJvbVxuICogQGNhdGVnb3J5IEdlbmVyaWMgSGVscGVyc1xuICogQHN1bW1hcnkgQ29uc3RydWN0cyBhIGRhdGUgdXNpbmcgdGhlIHJlZmVyZW5jZSBkYXRlIGFuZCB0aGUgdmFsdWVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBmdW5jdGlvbiBjb25zdHJ1Y3RzIGEgbmV3IGRhdGUgdXNpbmcgdGhlIGNvbnN0cnVjdG9yIGZyb20gdGhlIHJlZmVyZW5jZVxuICogZGF0ZSBhbmQgdGhlIGdpdmVuIHZhbHVlLiBJdCBoZWxwcyB0byBidWlsZCBnZW5lcmljIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdFxuICogZGF0ZSBleHRlbnNpb25zLlxuICpcbiAqIEl0IGRlZmF1bHRzIHRvIGBEYXRlYCBpZiB0aGUgcGFzc2VkIHJlZmVyZW5jZSBkYXRlIGlzIGEgbnVtYmVyIG9yIGEgc3RyaW5nLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIHJlZmVyZW5jZSBkYXRlIHRvIHRha2UgY29uc3RydWN0b3IgZnJvbVxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNyZWF0ZSB0aGUgZGF0ZVxuICpcbiAqIEByZXR1cm5zIERhdGUgaW5pdGlhbGl6ZWQgdXNpbmcgdGhlIGdpdmVuIGRhdGUgYW5kIHZhbHVlXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tICdkYXRlLWZucydcbiAqXG4gKiAvLyBBIGZ1bmN0aW9uIHRoYXQgY2xvbmVzIGEgZGF0ZSBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCB0eXBlXG4gKiBmdW5jdGlvbiBjbG9uZURhdGVcdTAwM2NEYXRlVHlwZSBleHRlbmRzIERhdGUoZGF0ZTogRGF0ZVR5cGUpOiBEYXRlVHlwZSB7XG4gKiAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKFxuICogICAgIGRhdGUsIC8vIFVzZSBjb250cnVzdG9yIGZyb20gdGhlIGdpdmVuIGRhdGVcbiAqICAgICBkYXRlLmdldFRpbWUoKSAvLyBVc2UgdGhlIGRhdGUgdmFsdWUgdG8gY3JlYXRlIGEgbmV3IGRhdGVcbiAqICAgKVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RnJvbShkYXRlLCB2YWx1ZSkge1xuICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gbmV3IGRhdGUuY29uc3RydWN0b3IodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBjb25zdHJ1Y3RGcm9tO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZERheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIGRheXMgdG8gYmUgYWRkZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheXMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDEwIGRheXMgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZERheXMobmV3IERhdGUoMjAxNCwgOCwgMSksIDEwKVxuICogLy89XHUwMDNlIFRodSBTZXAgMTEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkRGF5cyhkYXRlLCBhbW91bnQpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGlmIChpc05hTihhbW91bnQpKSByZXR1cm4gY29uc3RydWN0RnJvbShkYXRlLCBOYU4pO1xuICBpZiAoIWFtb3VudCkge1xuICAgIC8vIElmIDAgZGF5cywgbm8tb3AgdG8gYXZvaWQgY2hhbmdpbmcgdGltZXMgaW4gdGhlIGhvdXIgYmVmb3JlIGVuZCBvZiBEU1RcbiAgICByZXR1cm4gX2RhdGU7XG4gIH1cbiAgX2RhdGUuc2V0RGF0ZShfZGF0ZS5nZXREYXRlKCkgKyBhbW91bnQpO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkRGF5cztcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5pbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBhZGRNb250aHNcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbW9udGhzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1vbnRocyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIG1vbnRocyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgbW9udGhzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCA1IG1vbnRocyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkTW9udGhzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCA1KVxuICogLy89XHUwMDNlIFN1biBGZWIgMDEgMjAxNSAwMDowMDowMFxuICpcbiAqIC8vIEFkZCBvbmUgbW9udGggdG8gMzAgSmFudWFyeSAyMDIzOlxuICogY29uc3QgcmVzdWx0ID0gYWRkTW9udGhzKG5ldyBEYXRlKDIwMjMsIDAsIDMwKSwgMSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDI4IDIwMjMgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZE1vbnRocyhkYXRlLCBhbW91bnQpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGlmIChpc05hTihhbW91bnQpKSByZXR1cm4gY29uc3RydWN0RnJvbShkYXRlLCBOYU4pO1xuICBpZiAoIWFtb3VudCkge1xuICAgIC8vIElmIDAgbW9udGhzLCBuby1vcCB0byBhdm9pZCBjaGFuZ2luZyB0aW1lcyBpbiB0aGUgaG91ciBiZWZvcmUgZW5kIG9mIERTVFxuICAgIHJldHVybiBfZGF0ZTtcbiAgfVxuICBjb25zdCBkYXlPZk1vbnRoID0gX2RhdGUuZ2V0RGF0ZSgpO1xuXG4gIC8vIFRoZSBKUyBEYXRlIG9iamVjdCBzdXBwb3J0cyBkYXRlIG1hdGggYnkgYWNjZXB0aW5nIG91dC1vZi1ib3VuZHMgdmFsdWVzIGZvclxuICAvLyBtb250aCwgZGF5LCBldGMuIEZvciBleGFtcGxlLCBuZXcgRGF0ZSgyMDIwLCAwLCAwKSByZXR1cm5zIDMxIERlYyAyMDE5IGFuZFxuICAvLyBuZXcgRGF0ZSgyMDIwLCAxMywgMSkgcmV0dXJucyAxIEZlYiAyMDIxLiAgVGhpcyBpcyAqYWxtb3N0KiB0aGUgYmVoYXZpb3Igd2VcbiAgLy8gd2FudCBleGNlcHQgdGhhdCBkYXRlcyB3aWxsIHdyYXAgYXJvdW5kIHRoZSBlbmQgb2YgYSBtb250aCwgbWVhbmluZyB0aGF0XG4gIC8vIG5ldyBEYXRlKDIwMjAsIDEzLCAzMSkgd2lsbCByZXR1cm4gMyBNYXIgMjAyMSBub3QgMjggRmViIDIwMjEgYXMgZGVzaXJlZC4gU29cbiAgLy8gd2UnbGwgZGVmYXVsdCB0byB0aGUgZW5kIG9mIHRoZSBkZXNpcmVkIG1vbnRoIGJ5IGFkZGluZyAxIHRvIHRoZSBkZXNpcmVkXG4gIC8vIG1vbnRoIGFuZCB1c2luZyBhIGRhdGUgb2YgMCB0byBiYWNrIHVwIG9uZSBkYXkgdG8gdGhlIGVuZCBvZiB0aGUgZGVzaXJlZFxuICAvLyBtb250aC5cbiAgY29uc3QgZW5kT2ZEZXNpcmVkTW9udGggPSBjb25zdHJ1Y3RGcm9tKGRhdGUsIF9kYXRlLmdldFRpbWUoKSk7XG4gIGVuZE9mRGVzaXJlZE1vbnRoLnNldE1vbnRoKF9kYXRlLmdldE1vbnRoKCkgKyBhbW91bnQgKyAxLCAwKTtcbiAgY29uc3QgZGF5c0luTW9udGggPSBlbmRPZkRlc2lyZWRNb250aC5nZXREYXRlKCk7XG4gIGlmIChkYXlPZk1vbnRoIFx1MDAzZT0gZGF5c0luTW9udGgpIHtcbiAgICAvLyBJZiB3ZSdyZSBhbHJlYWR5IGF0IHRoZSBlbmQgb2YgdGhlIG1vbnRoLCB0aGVuIHRoaXMgaXMgdGhlIGNvcnJlY3QgZGF0ZVxuICAgIC8vIGFuZCB3ZSdyZSBkb25lLlxuICAgIHJldHVybiBlbmRPZkRlc2lyZWRNb250aDtcbiAgfSBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIHdlIG5vdyBrbm93IHRoYXQgc2V0dGluZyB0aGUgb3JpZ2luYWwgZGF5LW9mLW1vbnRoIHZhbHVlIHdvbid0XG4gICAgLy8gY2F1c2UgYW4gb3ZlcmZsb3csIHNvIHNldCB0aGUgZGVzaXJlZCBkYXktb2YtbW9udGguIE5vdGUgdGhhdCB3ZSBjYW4ndFxuICAgIC8vIGp1c3Qgc2V0IHRoZSBkYXRlIG9mIGBlbmRPZkRlc2lyZWRNb250aGAgYmVjYXVzZSB0aGF0IG9iamVjdCBtYXkgaGF2ZSBoYWRcbiAgICAvLyBpdHMgdGltZSBjaGFuZ2VkIGluIHRoZSB1bnVzdWFsIGNhc2Ugd2hlcmUgd2hlcmUgYSBEU1QgdHJhbnNpdGlvbiB3YXMgb25cbiAgICAvLyB0aGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoIGFuZCBpdHMgbG9jYWwgdGltZSB3YXMgaW4gdGhlIGhvdXIgc2tpcHBlZCBvclxuICAgIC8vIHJlcGVhdGVkIG5leHQgdG8gYSBEU1QgdHJhbnNpdGlvbi4gIFNvIHdlIHVzZSBgZGF0ZWAgaW5zdGVhZCB3aGljaCBpc1xuICAgIC8vIGd1YXJhbnRlZWQgdG8gc3RpbGwgaGF2ZSB0aGUgb3JpZ2luYWwgdGltZS5cbiAgICBfZGF0ZS5zZXRGdWxsWWVhcihcbiAgICAgIGVuZE9mRGVzaXJlZE1vbnRoLmdldEZ1bGxZZWFyKCksXG4gICAgICBlbmRPZkRlc2lyZWRNb250aC5nZXRNb250aCgpLFxuICAgICAgZGF5T2ZNb250aCxcbiAgICApO1xuICAgIHJldHVybiBfZGF0ZTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGFkZE1vbnRocztcbiIsICJpbXBvcnQgeyBhZGREYXlzIH0gZnJvbSBcIi4vYWRkRGF5cy5tanNcIjtcbmltcG9ydCB7IGFkZE1vbnRocyB9IGZyb20gXCIuL2FkZE1vbnRocy5tanNcIjtcbmltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gZHVyYXRpb24gLSBUaGUgb2JqZWN0IHdpdGggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzIHRvIGJlIGFkZGVkLlxuICpcbiAqIHwgS2V5ICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgeWVhcnMgICAgICAgICAgfCBBbW91bnQgb2YgeWVhcnMgdG8gYmUgYWRkZWQgICAgICAgIHxcbiAqIHwgbW9udGhzICAgICAgICAgfCBBbW91bnQgb2YgbW9udGhzIHRvIGJlIGFkZGVkICAgICAgIHxcbiAqIHwgd2Vla3MgICAgICAgICAgfCBBbW91bnQgb2Ygd2Vla3MgdG8gYmUgYWRkZWQgICAgICAgIHxcbiAqIHwgZGF5cyAgICAgICAgICAgfCBBbW91bnQgb2YgZGF5cyB0byBiZSBhZGRlZCAgICAgICAgIHxcbiAqIHwgaG91cnMgICAgICAgICAgfCBBbW91bnQgb2YgaG91cnMgdG8gYmUgYWRkZWQgICAgICAgIHxcbiAqIHwgbWludXRlcyAgICAgICAgfCBBbW91bnQgb2YgbWludXRlcyB0byBiZSBhZGRlZCAgICAgIHxcbiAqIHwgc2Vjb25kcyAgICAgICAgfCBBbW91bnQgb2Ygc2Vjb25kcyB0byBiZSBhZGRlZCAgICAgIHxcbiAqXG4gKiBBbGwgdmFsdWVzIGRlZmF1bHQgdG8gMFxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBzZWNvbmRzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCB0aGUgZm9sbG93aW5nIGR1cmF0aW9uIHRvIDEgU2VwdGVtYmVyIDIwMTQsIDEwOjE5OjUwXG4gKiBjb25zdCByZXN1bHQgPSBhZGQobmV3IERhdGUoMjAxNCwgOCwgMSwgMTAsIDE5LCA1MCksIHtcbiAqICAgeWVhcnM6IDIsXG4gKiAgIG1vbnRoczogOSxcbiAqICAgd2Vla3M6IDEsXG4gKiAgIGRheXM6IDcsXG4gKiAgIGhvdXJzOiA1LFxcXFwtN1xuICogICBtaW51dGVzOiA5LFxuICogICBzZWNvbmRzOiAzMCxcbiAqIH0pXG4gKiAvLz1cdTAwM2UgVGh1IEp1biAxNSAyMDE3IDE1OjI5OjIwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGQoZGF0ZSwgZHVyYXRpb24pIHtcbiAgY29uc3Qge1xuICAgIHllYXJzID0gMCxcbiAgICBtb250aHMgPSAwLFxuICAgIHdlZWtzID0gMCxcbiAgICBkYXlzID0gMCxcbiAgICBob3VycyA9IDAsXG4gICAgbWludXRlcyA9IDAsXG4gICAgc2Vjb25kcyA9IDAsXG4gIH0gPSBkdXJhdGlvbjtcblxuICAvLyBBZGQgeWVhcnMgYW5kIG1vbnRoc1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgY29uc3QgZGF0ZVdpdGhNb250aHMgPVxuICAgIG1vbnRocyB8fCB5ZWFycyA/IGFkZE1vbnRocyhfZGF0ZSwgbW9udGhzICsgeWVhcnMgKiAxMikgOiBfZGF0ZTtcblxuICAvLyBBZGQgd2Vla3MgYW5kIGRheXNcbiAgY29uc3QgZGF0ZVdpdGhEYXlzID1cbiAgICBkYXlzIHx8IHdlZWtzID8gYWRkRGF5cyhkYXRlV2l0aE1vbnRocywgZGF5cyArIHdlZWtzICogNykgOiBkYXRlV2l0aE1vbnRocztcblxuICAvLyBBZGQgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHNcbiAgY29uc3QgbWludXRlc1RvQWRkID0gbWludXRlcyArIGhvdXJzICogNjA7XG4gIGNvbnN0IHNlY29uZHNUb0FkZCA9IHNlY29uZHMgKyBtaW51dGVzVG9BZGQgKiA2MDtcbiAgY29uc3QgbXNUb0FkZCA9IHNlY29uZHNUb0FkZCAqIDEwMDA7XG4gIGNvbnN0IGZpbmFsRGF0ZSA9IGNvbnN0cnVjdEZyb20oZGF0ZSwgZGF0ZVdpdGhEYXlzLmdldFRpbWUoKSArIG1zVG9BZGQpO1xuXG4gIHJldHVybiBmaW5hbERhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkO1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICIvKipcbiAqIEBuYW1lIGNvbnN0cnVjdEZyb21cbiAqIEBjYXRlZ29yeSBHZW5lcmljIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnN0cnVjdHMgYSBkYXRlIHVzaW5nIHRoZSByZWZlcmVuY2UgZGF0ZSBhbmQgdGhlIHZhbHVlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGUgZnVuY3Rpb24gY29uc3RydWN0cyBhIG5ldyBkYXRlIHVzaW5nIHRoZSBjb25zdHJ1Y3RvciBmcm9tIHRoZSByZWZlcmVuY2VcbiAqIGRhdGUgYW5kIHRoZSBnaXZlbiB2YWx1ZS4gSXQgaGVscHMgdG8gYnVpbGQgZ2VuZXJpYyBmdW5jdGlvbnMgdGhhdCBhY2NlcHRcbiAqIGRhdGUgZXh0ZW5zaW9ucy5cbiAqXG4gKiBJdCBkZWZhdWx0cyB0byBgRGF0ZWAgaWYgdGhlIHBhc3NlZCByZWZlcmVuY2UgZGF0ZSBpcyBhIG51bWJlciBvciBhIHN0cmluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSByZWZlcmVuY2UgZGF0ZSB0byB0YWtlIGNvbnN0cnVjdG9yIGZyb21cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjcmVhdGUgdGhlIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBEYXRlIGluaXRpYWxpemVkIHVzaW5nIHRoZSBnaXZlbiBkYXRlIGFuZCB2YWx1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSAnZGF0ZS1mbnMnXG4gKlxuICogLy8gQSBmdW5jdGlvbiB0aGF0IGNsb25lcyBhIGRhdGUgcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgdHlwZVxuICogZnVuY3Rpb24gY2xvbmVEYXRlXHUwMDNjRGF0ZVR5cGUgZXh0ZW5kcyBEYXRlKGRhdGU6IERhdGVUeXBlKTogRGF0ZVR5cGUge1xuICogICByZXR1cm4gY29uc3RydWN0RnJvbShcbiAqICAgICBkYXRlLCAvLyBVc2UgY29udHJ1c3RvciBmcm9tIHRoZSBnaXZlbiBkYXRlXG4gKiAgICAgZGF0ZS5nZXRUaW1lKCkgLy8gVXNlIHRoZSBkYXRlIHZhbHVlIHRvIGNyZWF0ZSBhIG5ldyBkYXRlXG4gKiAgIClcbiAqIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdEZyb20oZGF0ZSwgdmFsdWUpIHtcbiAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBkYXRlLmNvbnN0cnVjdG9yKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgY29uc3RydWN0RnJvbTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5pbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBhZGRNaWxsaXNlY29uZHNcbiAqIEBjYXRlZ29yeSBNaWxsaXNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIG1pbGxpc2Vjb25kcyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgbWlsbGlzZWNvbmRzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCA3NTAgbWlsbGlzZWNvbmRzIHRvIDEwIEp1bHkgMjAxNCAxMjo0NTozMC4wMDA6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRNaWxsaXNlY29uZHMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCA0NSwgMzAsIDApLCA3NTApXG4gKiAvLz1cdTAwM2UgVGh1IEp1bCAxMCAyMDE0IDEyOjQ1OjMwLjc1MFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkTWlsbGlzZWNvbmRzKGRhdGUsIGFtb3VudCkge1xuICBjb25zdCB0aW1lc3RhbXAgPSArdG9EYXRlKGRhdGUpO1xuICByZXR1cm4gY29uc3RydWN0RnJvbShkYXRlLCB0aW1lc3RhbXAgKyBhbW91bnQpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGFkZE1pbGxpc2Vjb25kcztcbiIsICIvKipcbiAqIEBtb2R1bGUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBVc2VmdWwgY29uc3RhbnRzXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbGxlY3Rpb24gb2YgdXNlZnVsIGRhdGUgY29uc3RhbnRzLlxuICpcbiAqIFRoZSBjb25zdGFudHMgY291bGQgYmUgaW1wb3J0ZWQgZnJvbSBgZGF0ZS1mbnMvY29uc3RhbnRzYDpcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbWF4VGltZSwgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBmdW5jdGlvbiBpc0FsbG93ZWRUaW1lKHRpbWUpIHtcbiAqICAgcmV0dXJuIHRpbWUgXHUwMDNjPSBtYXhUaW1lIFx1MDAyNlx1MDAyNiB0aW1lIFx1MDAzZT0gbWluVGltZTtcbiAqIH1cbiAqIGBgYFxuICovXG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBkYXlzSW5XZWVrXG4gKiBAc3VtbWFyeSBEYXlzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IGRheXNJbldlZWsgPSA3O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgZGF5c0luWWVhclxuICogQHN1bW1hcnkgRGF5cyBpbiAxIHllYXIuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBIb3cgbWFueSBkYXlzIGluIGEgeWVhci5cbiAqXG4gKiBPbmUgeWVhcnMgZXF1YWxzIDM2NS4yNDI1IGRheXMgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlxuICpcbiAqIFx1MDAzZSBMZWFwIHllYXIgb2NjdXJlcyBldmVyeSA0IHllYXJzLCBleGNlcHQgZm9yIHllYXJzIHRoYXQgYXJlIGRpdmlzYWJsZSBieSAxMDAgYW5kIG5vdCBkaXZpc2FibGUgYnkgNDAwLlxuICogXHUwMDNlIDEgbWVhbiB5ZWFyID0gKDM2NSsxLzQtMS8xMDArMS80MDApIGRheXMgPSAzNjUuMjQyNSBkYXlzXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5ZZWFyID0gMzY1LjI0MjU7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtYXhUaW1lXG4gKiBAc3VtbWFyeSBNYXhpbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgbWF4VGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBjb25zdCBpc1ZhbGlkID0gODY0MDAwMDAwMDAwMDAwMSBcdTAwM2M9IG1heFRpbWU7XG4gKiAvLz1cdTAwM2UgZmFsc2VcbiAqXG4gKiBuZXcgRGF0ZSg4NjQwMDAwMDAwMDAwMDAxKTtcbiAqIC8vPVx1MDAzZSBJbnZhbGlkIERhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1heFRpbWUgPSBNYXRoLnBvdygxMCwgOCkgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWluVGltZVxuICogQHN1bW1hcnkgTWluaW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IG1pblRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogY29uc3QgaXNWYWxpZCA9IC04NjQwMDAwMDAwMDAwMDAxIFx1MDAzZT0gbWluVGltZTtcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICpcbiAqIG5ldyBEYXRlKC04NjQwMDAwMDAwMDAwMDAxKVxuICogLy89XHUwMDNlIEludmFsaWQgRGF0ZVxuICovXG5leHBvcnQgY29uc3QgbWluVGltZSA9IC1tYXhUaW1lO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5XZWVrID0gNjA0ODAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luRGF5ID0gODY0MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbk1pbnV0ZVxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgbWludXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbk1pbnV0ZSA9IDYwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBob3VyXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbkhvdXIgPSAzNjAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5TZWNvbmRcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIHNlY29uZFxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5TZWNvbmQgPSAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luWWVhclxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5ZZWFyID0gNTI1NjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luTW9udGhcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBtb250aC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbk1vbnRoID0gNDMyMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5EYXkgPSAxNDQwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luSG91clxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIGhvdXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5Ib3VyID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtb250aHNJblF1YXJ0ZXJcbiAqIEBzdW1tYXJ5IE1vbnRocyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aHNJblF1YXJ0ZXIgPSAzO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbW9udGhzSW5ZZWFyXG4gKiBAc3VtbWFyeSBNb250aHMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3QgbW9udGhzSW5ZZWFyID0gMTI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBxdWFydGVyc0luWWVhclxuICogQHN1bW1hcnkgUXVhcnRlcnMgaW4gMSB5ZWFyXG4gKi9cbmV4cG9ydCBjb25zdCBxdWFydGVyc0luWWVhciA9IDQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgaG91ci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbkhvdXIgPSAzNjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luTWludXRlXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbWludXRlLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luTWludXRlID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5EYXkgPSBzZWNvbmRzSW5Ib3VyICogMjQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbldlZWsgPSBzZWNvbmRzSW5EYXkgKiA3O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luWWVhclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5ZZWFyID0gc2Vjb25kc0luRGF5ICogZGF5c0luWWVhcjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbk1vbnRoXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbW9udGhcbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbk1vbnRoID0gc2Vjb25kc0luWWVhciAvIDEyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luUXVhcnRlclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5RdWFydGVyID0gc2Vjb25kc0luTW9udGggKiAzO1xuIiwgImltcG9ydCB7IGFkZE1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL2FkZE1pbGxpc2Vjb25kcy5tanNcIjtcbmltcG9ydCB7IG1pbGxpc2Vjb25kc0luSG91ciB9IGZyb20gXCIuL2NvbnN0YW50cy5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBhZGRIb3Vyc1xuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGhvdXJzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGhvdXJzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgaG91cnMgdG8gYmUgYWRkZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGhvdXJzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAyIGhvdXJzIHRvIDEwIEp1bHkgMjAxNCAyMzowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZEhvdXJzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAyMywgMCksIDIpXG4gKiAvLz1cdTAwM2UgRnJpIEp1bCAxMSAyMDE0IDAxOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRIb3VycyhkYXRlLCBhbW91bnQpIHtcbiAgcmV0dXJuIGFkZE1pbGxpc2Vjb25kcyhkYXRlLCBhbW91bnQgKiBtaWxsaXNlY29uZHNJbkhvdXIpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGFkZEhvdXJzO1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICIvKipcbiAqIEBuYW1lIGNvbnN0cnVjdEZyb21cbiAqIEBjYXRlZ29yeSBHZW5lcmljIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnN0cnVjdHMgYSBkYXRlIHVzaW5nIHRoZSByZWZlcmVuY2UgZGF0ZSBhbmQgdGhlIHZhbHVlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGUgZnVuY3Rpb24gY29uc3RydWN0cyBhIG5ldyBkYXRlIHVzaW5nIHRoZSBjb25zdHJ1Y3RvciBmcm9tIHRoZSByZWZlcmVuY2VcbiAqIGRhdGUgYW5kIHRoZSBnaXZlbiB2YWx1ZS4gSXQgaGVscHMgdG8gYnVpbGQgZ2VuZXJpYyBmdW5jdGlvbnMgdGhhdCBhY2NlcHRcbiAqIGRhdGUgZXh0ZW5zaW9ucy5cbiAqXG4gKiBJdCBkZWZhdWx0cyB0byBgRGF0ZWAgaWYgdGhlIHBhc3NlZCByZWZlcmVuY2UgZGF0ZSBpcyBhIG51bWJlciBvciBhIHN0cmluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSByZWZlcmVuY2UgZGF0ZSB0byB0YWtlIGNvbnN0cnVjdG9yIGZyb21cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjcmVhdGUgdGhlIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBEYXRlIGluaXRpYWxpemVkIHVzaW5nIHRoZSBnaXZlbiBkYXRlIGFuZCB2YWx1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSAnZGF0ZS1mbnMnXG4gKlxuICogLy8gQSBmdW5jdGlvbiB0aGF0IGNsb25lcyBhIGRhdGUgcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgdHlwZVxuICogZnVuY3Rpb24gY2xvbmVEYXRlXHUwMDNjRGF0ZVR5cGUgZXh0ZW5kcyBEYXRlKGRhdGU6IERhdGVUeXBlKTogRGF0ZVR5cGUge1xuICogICByZXR1cm4gY29uc3RydWN0RnJvbShcbiAqICAgICBkYXRlLCAvLyBVc2UgY29udHJ1c3RvciBmcm9tIHRoZSBnaXZlbiBkYXRlXG4gKiAgICAgZGF0ZS5nZXRUaW1lKCkgLy8gVXNlIHRoZSBkYXRlIHZhbHVlIHRvIGNyZWF0ZSBhIG5ldyBkYXRlXG4gKiAgIClcbiAqIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdEZyb20oZGF0ZSwgdmFsdWUpIHtcbiAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBkYXRlLmNvbnN0cnVjdG9yKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgY29uc3RydWN0RnJvbTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5pbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBhZGRNaWxsaXNlY29uZHNcbiAqIEBjYXRlZ29yeSBNaWxsaXNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIG1pbGxpc2Vjb25kcyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgbWlsbGlzZWNvbmRzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCA3NTAgbWlsbGlzZWNvbmRzIHRvIDEwIEp1bHkgMjAxNCAxMjo0NTozMC4wMDA6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRNaWxsaXNlY29uZHMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCA0NSwgMzAsIDApLCA3NTApXG4gKiAvLz1cdTAwM2UgVGh1IEp1bCAxMCAyMDE0IDEyOjQ1OjMwLjc1MFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkTWlsbGlzZWNvbmRzKGRhdGUsIGFtb3VudCkge1xuICBjb25zdCB0aW1lc3RhbXAgPSArdG9EYXRlKGRhdGUpO1xuICByZXR1cm4gY29uc3RydWN0RnJvbShkYXRlLCB0aW1lc3RhbXAgKyBhbW91bnQpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGFkZE1pbGxpc2Vjb25kcztcbiIsICIvKipcbiAqIEBtb2R1bGUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBVc2VmdWwgY29uc3RhbnRzXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbGxlY3Rpb24gb2YgdXNlZnVsIGRhdGUgY29uc3RhbnRzLlxuICpcbiAqIFRoZSBjb25zdGFudHMgY291bGQgYmUgaW1wb3J0ZWQgZnJvbSBgZGF0ZS1mbnMvY29uc3RhbnRzYDpcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbWF4VGltZSwgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBmdW5jdGlvbiBpc0FsbG93ZWRUaW1lKHRpbWUpIHtcbiAqICAgcmV0dXJuIHRpbWUgXHUwMDNjPSBtYXhUaW1lIFx1MDAyNlx1MDAyNiB0aW1lIFx1MDAzZT0gbWluVGltZTtcbiAqIH1cbiAqIGBgYFxuICovXG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBkYXlzSW5XZWVrXG4gKiBAc3VtbWFyeSBEYXlzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IGRheXNJbldlZWsgPSA3O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgZGF5c0luWWVhclxuICogQHN1bW1hcnkgRGF5cyBpbiAxIHllYXIuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBIb3cgbWFueSBkYXlzIGluIGEgeWVhci5cbiAqXG4gKiBPbmUgeWVhcnMgZXF1YWxzIDM2NS4yNDI1IGRheXMgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlxuICpcbiAqIFx1MDAzZSBMZWFwIHllYXIgb2NjdXJlcyBldmVyeSA0IHllYXJzLCBleGNlcHQgZm9yIHllYXJzIHRoYXQgYXJlIGRpdmlzYWJsZSBieSAxMDAgYW5kIG5vdCBkaXZpc2FibGUgYnkgNDAwLlxuICogXHUwMDNlIDEgbWVhbiB5ZWFyID0gKDM2NSsxLzQtMS8xMDArMS80MDApIGRheXMgPSAzNjUuMjQyNSBkYXlzXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5ZZWFyID0gMzY1LjI0MjU7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtYXhUaW1lXG4gKiBAc3VtbWFyeSBNYXhpbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgbWF4VGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBjb25zdCBpc1ZhbGlkID0gODY0MDAwMDAwMDAwMDAwMSBcdTAwM2M9IG1heFRpbWU7XG4gKiAvLz1cdTAwM2UgZmFsc2VcbiAqXG4gKiBuZXcgRGF0ZSg4NjQwMDAwMDAwMDAwMDAxKTtcbiAqIC8vPVx1MDAzZSBJbnZhbGlkIERhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1heFRpbWUgPSBNYXRoLnBvdygxMCwgOCkgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWluVGltZVxuICogQHN1bW1hcnkgTWluaW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IG1pblRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogY29uc3QgaXNWYWxpZCA9IC04NjQwMDAwMDAwMDAwMDAxIFx1MDAzZT0gbWluVGltZTtcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICpcbiAqIG5ldyBEYXRlKC04NjQwMDAwMDAwMDAwMDAxKVxuICogLy89XHUwMDNlIEludmFsaWQgRGF0ZVxuICovXG5leHBvcnQgY29uc3QgbWluVGltZSA9IC1tYXhUaW1lO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5XZWVrID0gNjA0ODAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luRGF5ID0gODY0MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbk1pbnV0ZVxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgbWludXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbk1pbnV0ZSA9IDYwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBob3VyXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbkhvdXIgPSAzNjAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5TZWNvbmRcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIHNlY29uZFxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5TZWNvbmQgPSAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luWWVhclxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5ZZWFyID0gNTI1NjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luTW9udGhcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBtb250aC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbk1vbnRoID0gNDMyMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5EYXkgPSAxNDQwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luSG91clxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIGhvdXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5Ib3VyID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtb250aHNJblF1YXJ0ZXJcbiAqIEBzdW1tYXJ5IE1vbnRocyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aHNJblF1YXJ0ZXIgPSAzO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbW9udGhzSW5ZZWFyXG4gKiBAc3VtbWFyeSBNb250aHMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3QgbW9udGhzSW5ZZWFyID0gMTI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBxdWFydGVyc0luWWVhclxuICogQHN1bW1hcnkgUXVhcnRlcnMgaW4gMSB5ZWFyXG4gKi9cbmV4cG9ydCBjb25zdCBxdWFydGVyc0luWWVhciA9IDQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgaG91ci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbkhvdXIgPSAzNjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luTWludXRlXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbWludXRlLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luTWludXRlID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5EYXkgPSBzZWNvbmRzSW5Ib3VyICogMjQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbldlZWsgPSBzZWNvbmRzSW5EYXkgKiA3O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luWWVhclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5ZZWFyID0gc2Vjb25kc0luRGF5ICogZGF5c0luWWVhcjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbk1vbnRoXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbW9udGhcbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbk1vbnRoID0gc2Vjb25kc0luWWVhciAvIDEyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luUXVhcnRlclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5RdWFydGVyID0gc2Vjb25kc0luTW9udGggKiAzO1xuIiwgImltcG9ydCB7IGFkZE1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL2FkZE1pbGxpc2Vjb25kcy5tanNcIjtcbmltcG9ydCB7IG1pbGxpc2Vjb25kc0luTWludXRlIH0gZnJvbSBcIi4vY29uc3RhbnRzLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZE1pbnV0ZXNcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbnV0ZXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWludXRlcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIG1pbnV0ZXMgdG8gYmUgYWRkZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIG1pbnV0ZXMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDMwIG1pbnV0ZXMgdG8gMTAgSnVseSAyMDE0IDEyOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gYWRkTWludXRlcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDApLCAzMClcbiAqIC8vPVx1MDAzZSBUaHUgSnVsIDEwIDIwMTQgMTI6MzA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZE1pbnV0ZXMoZGF0ZSwgYW1vdW50KSB7XG4gIHJldHVybiBhZGRNaWxsaXNlY29uZHMoZGF0ZSwgYW1vdW50ICogbWlsbGlzZWNvbmRzSW5NaW51dGUpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGFkZE1pbnV0ZXM7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBjb21wYXJlQXNjXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbXBhcmUgdGhlIHR3byBkYXRlcyBhbmQgcmV0dXJuIC0xLCAwIG9yIDEuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb21wYXJlIHRoZSB0d28gZGF0ZXMgYW5kIHJldHVybiAxIGlmIHRoZSBmaXJzdCBkYXRlIGlzIGFmdGVyIHRoZSBzZWNvbmQsXG4gKiAtMSBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBiZWZvcmUgdGhlIHNlY29uZCBvciAwIGlmIGRhdGVzIGFyZSBlcXVhbC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgZmlyc3QgZGF0ZSB0byBjb21wYXJlXG4gKiBAcGFyYW0gZGF0ZVJpZ2h0IC0gVGhlIHNlY29uZCBkYXRlIHRvIGNvbXBhcmVcbiAqXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbXBhcmUgMTEgRmVicnVhcnkgMTk4NyBhbmQgMTAgSnVseSAxOTg5OlxuICogY29uc3QgcmVzdWx0ID0gY29tcGFyZUFzYyhuZXcgRGF0ZSgxOTg3LCAxLCAxMSksIG5ldyBEYXRlKDE5ODksIDYsIDEwKSlcbiAqIC8vPVx1MDAzZSAtMVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTb3J0IHRoZSBhcnJheSBvZiBkYXRlczpcbiAqIGNvbnN0IHJlc3VsdCA9IFtcbiAqICAgbmV3IERhdGUoMTk5NSwgNiwgMiksXG4gKiAgIG5ldyBEYXRlKDE5ODcsIDEsIDExKSxcbiAqICAgbmV3IERhdGUoMTk4OSwgNiwgMTApXG4gKiBdLnNvcnQoY29tcGFyZUFzYylcbiAqIC8vPVx1MDAzZSBbXG4gKiAvLyAgIFdlZCBGZWIgMTEgMTk4NyAwMDowMDowMCxcbiAqIC8vICAgTW9uIEp1bCAxMCAxOTg5IDAwOjAwOjAwLFxuICogLy8gICBTdW4gSnVsIDAyIDE5OTUgMDA6MDA6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVBc2MoZGF0ZUxlZnQsIGRhdGVSaWdodCkge1xuICBjb25zdCBfZGF0ZUxlZnQgPSB0b0RhdGUoZGF0ZUxlZnQpO1xuICBjb25zdCBfZGF0ZVJpZ2h0ID0gdG9EYXRlKGRhdGVSaWdodCk7XG5cbiAgY29uc3QgZGlmZiA9IF9kYXRlTGVmdC5nZXRUaW1lKCkgLSBfZGF0ZVJpZ2h0LmdldFRpbWUoKTtcblxuICBpZiAoZGlmZiBcdTAwM2MgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfSBlbHNlIGlmIChkaWZmIFx1MDAzZSAwKSB7XG4gICAgcmV0dXJuIDE7XG4gICAgLy8gUmV0dXJuIDAgaWYgZGlmZiBpcyAwOyByZXR1cm4gTmFOIGlmIGRpZmYgaXMgTmFOXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGRpZmY7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBjb21wYXJlQXNjO1xuIiwgIi8qKlxuICogQG1vZHVsZSBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IFVzZWZ1bCBjb25zdGFudHNcbiAqIEBkZXNjcmlwdGlvblxuICogQ29sbGVjdGlvbiBvZiB1c2VmdWwgZGF0ZSBjb25zdGFudHMuXG4gKlxuICogVGhlIGNvbnN0YW50cyBjb3VsZCBiZSBpbXBvcnRlZCBmcm9tIGBkYXRlLWZucy9jb25zdGFudHNgOlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBtYXhUaW1lLCBtaW5UaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGZ1bmN0aW9uIGlzQWxsb3dlZFRpbWUodGltZSkge1xuICogICByZXR1cm4gdGltZSBcdTAwM2M9IG1heFRpbWUgXHUwMDI2XHUwMDI2IHRpbWUgXHUwMDNlPSBtaW5UaW1lO1xuICogfVxuICogYGBgXG4gKi9cblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIGRheXNJbldlZWtcbiAqIEBzdW1tYXJ5IERheXMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3QgZGF5c0luV2VlayA9IDc7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBkYXlzSW5ZZWFyXG4gKiBAc3VtbWFyeSBEYXlzIGluIDEgeWVhci5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEhvdyBtYW55IGRheXMgaW4gYSB5ZWFyLlxuICpcbiAqIE9uZSB5ZWFycyBlcXVhbHMgMzY1LjI0MjUgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6XG4gKlxuICogXHUwMDNlIExlYXAgeWVhciBvY2N1cmVzIGV2ZXJ5IDQgeWVhcnMsIGV4Y2VwdCBmb3IgeWVhcnMgdGhhdCBhcmUgZGl2aXNhYmxlIGJ5IDEwMCBhbmQgbm90IGRpdmlzYWJsZSBieSA0MDAuXG4gKiBcdTAwM2UgMSBtZWFuIHllYXIgPSAoMzY1KzEvNC0xLzEwMCsxLzQwMCkgZGF5cyA9IDM2NS4yNDI1IGRheXNcbiAqL1xuZXhwb3J0IGNvbnN0IGRheXNJblllYXIgPSAzNjUuMjQyNTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1heFRpbWVcbiAqIEBzdW1tYXJ5IE1heGltdW0gYWxsb3dlZCB0aW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBtYXhUaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGNvbnN0IGlzVmFsaWQgPSA4NjQwMDAwMDAwMDAwMDAxIFx1MDAzYz0gbWF4VGltZTtcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICpcbiAqIG5ldyBEYXRlKDg2NDAwMDAwMDAwMDAwMDEpO1xuICogLy89XHUwMDNlIEludmFsaWQgRGF0ZVxuICovXG5leHBvcnQgY29uc3QgbWF4VGltZSA9IE1hdGgucG93KDEwLCA4KSAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW5UaW1lXG4gKiBAc3VtbWFyeSBNaW5pbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBjb25zdCBpc1ZhbGlkID0gLTg2NDAwMDAwMDAwMDAwMDEgXHUwMDNlPSBtaW5UaW1lO1xuICogLy89XHUwMDNlIGZhbHNlXG4gKlxuICogbmV3IERhdGUoLTg2NDAwMDAwMDAwMDAwMDEpXG4gKiAvLz1cdTAwM2UgSW52YWxpZCBEYXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtaW5UaW1lID0gLW1heFRpbWU7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbldlZWtcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbldlZWsgPSA2MDQ4MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkRheVxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5EYXkgPSA4NjQwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luTWludXRlXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBtaW51dGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luTWludXRlID0gNjAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkhvdXJcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIGhvdXJcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luSG91ciA9IDM2MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJblNlY29uZFxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgc2Vjb25kXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJblNlY29uZCA9IDEwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5ZZWFyXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJblllYXIgPSA1MjU2MDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5Nb250aFxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIG1vbnRoLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luTW9udGggPSA0MzIwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbkRheVxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbkRheSA9IDE0NDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5Ib3VyXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgaG91ci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbkhvdXIgPSA2MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1vbnRoc0luUXVhcnRlclxuICogQHN1bW1hcnkgTW9udGhzIGluIDEgcXVhcnRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1vbnRoc0luUXVhcnRlciA9IDM7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtb250aHNJblllYXJcbiAqIEBzdW1tYXJ5IE1vbnRocyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aHNJblllYXIgPSAxMjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHF1YXJ0ZXJzSW5ZZWFyXG4gKiBAc3VtbWFyeSBRdWFydGVycyBpbiAxIHllYXJcbiAqL1xuZXhwb3J0IGNvbnN0IHF1YXJ0ZXJzSW5ZZWFyID0gNDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbkhvdXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBob3VyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luSG91ciA9IDM2MDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5NaW51dGVcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBtaW51dGUuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5NaW51dGUgPSA2MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbkRheVxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbkRheSA9IHNlY29uZHNJbkhvdXIgKiAyNDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbldlZWtcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luV2VlayA9IHNlY29uZHNJbkRheSAqIDc7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5ZZWFyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJblllYXIgPSBzZWNvbmRzSW5EYXkgKiBkYXlzSW5ZZWFyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luTW9udGhcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBtb250aFxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luTW9udGggPSBzZWNvbmRzSW5ZZWFyIC8gMTI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5RdWFydGVyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgcXVhcnRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJblF1YXJ0ZXIgPSBzZWNvbmRzSW5Nb250aCAqIDM7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBzdGFydE9mRGF5XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSBkYXkgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIGRheSBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIG9yaWdpbmFsIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgc3RhcnQgb2YgYSBkYXlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgZGF5IGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZkRheShuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89XHUwMDNlIFR1ZSBTZXAgMDIgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRPZkRheShkYXRlKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBfZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHN0YXJ0T2ZEYXk7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4uL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBHb29nbGUgQ2hyb21lIGFzIG9mIDY3LjAuMzM5Ni44NyBpbnRyb2R1Y2VkIHRpbWV6b25lcyB3aXRoIG9mZnNldCB0aGF0IGluY2x1ZGVzIHNlY29uZHMuXG4gKiBUaGV5IHVzdWFsbHkgYXBwZWFyIGZvciBkYXRlcyB0aGF0IGRlbm90ZSB0aW1lIGJlZm9yZSB0aGUgdGltZXpvbmVzIHdlcmUgaW50cm9kdWNlZFxuICogKGUuZy4gZm9yICdFdXJvcGUvUHJhZ3VlJyB0aW1lem9uZSB0aGUgb2Zmc2V0IGlzIEdNVCswMDo1Nzo0NCBiZWZvcmUgMSBPY3RvYmVyIDE4OTFcbiAqIGFuZCBHTVQrMDE6MDA6MDAgYWZ0ZXIgdGhhdCBkYXRlKVxuICpcbiAqIERhdGUjZ2V0VGltZXpvbmVPZmZzZXQgcmV0dXJucyB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgYW5kIHdvdWxkIHJldHVybiA1NyBmb3IgdGhlIGV4YW1wbGUgYWJvdmUsXG4gKiB3aGljaCB3b3VsZCBsZWFkIHRvIGluY29ycmVjdCBjYWxjdWxhdGlvbnMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB0aW1lem9uZSBvZmZzZXQgaW4gbWlsbGlzZWNvbmRzIHRoYXQgdGFrZXMgc2Vjb25kcyBpbiBhY2NvdW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCB1dGNEYXRlID0gbmV3IERhdGUoXG4gICAgRGF0ZS5VVEMoXG4gICAgICBfZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgX2RhdGUuZ2V0TW9udGgoKSxcbiAgICAgIF9kYXRlLmdldERhdGUoKSxcbiAgICAgIF9kYXRlLmdldEhvdXJzKCksXG4gICAgICBfZGF0ZS5nZXRNaW51dGVzKCksXG4gICAgICBfZGF0ZS5nZXRTZWNvbmRzKCksXG4gICAgICBfZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSxcbiAgICApLFxuICApO1xuICB1dGNEYXRlLnNldFVUQ0Z1bGxZZWFyKF9kYXRlLmdldEZ1bGxZZWFyKCkpO1xuICByZXR1cm4gK2RhdGUgLSArdXRjRGF0ZTtcbn1cbiIsICJpbXBvcnQgeyBtaWxsaXNlY29uZHNJbkRheSB9IGZyb20gXCIuL2NvbnN0YW50cy5tanNcIjtcbmltcG9ydCB7IHN0YXJ0T2ZEYXkgfSBmcm9tIFwiLi9zdGFydE9mRGF5Lm1qc1wiO1xuaW1wb3J0IHsgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgZGF5cyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIGRheXMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgdGltZXMgYXJlIHJlbW92ZWRcbiAqIGZyb20gdGhlIGRhdGVzIGFuZCB0aGVuIHRoZSBkaWZmZXJlbmNlIGluIGRheXMgaXMgY2FsY3VsYXRlZC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIGRhdGVSaWdodCAtIFRoZSBlYXJsaWVyIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGNhbGVuZGFyIGRheXNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6MDA6MDAgYW5kIDIgSnVseSAyMDEyIDAwOjAwOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKFxuICogICBuZXcgRGF0ZSgyMDEyLCA2LCAyLCAwLCAwKSxcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMiwgMjMsIDApXG4gKiApXG4gKiAvLz1cdTAwM2UgMzY2XG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxMSAyMzo1OTowMCBhbmQgMyBKdWx5IDIwMTEgMDA6MDE6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDMsIDAsIDEpLFxuICogICBuZXcgRGF0ZSgyMDExLCA2LCAyLCAyMywgNTkpXG4gKiApXG4gKiAvLz1cdTAwM2UgMVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIHtcbiAgY29uc3Qgc3RhcnRPZkRheUxlZnQgPSBzdGFydE9mRGF5KGRhdGVMZWZ0KTtcbiAgY29uc3Qgc3RhcnRPZkRheVJpZ2h0ID0gc3RhcnRPZkRheShkYXRlUmlnaHQpO1xuXG4gIGNvbnN0IHRpbWVzdGFtcExlZnQgPVxuICAgICtzdGFydE9mRGF5TGVmdCAtIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoc3RhcnRPZkRheUxlZnQpO1xuICBjb25zdCB0aW1lc3RhbXBSaWdodCA9XG4gICAgK3N0YXJ0T2ZEYXlSaWdodCAtIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoc3RhcnRPZkRheVJpZ2h0KTtcblxuICAvLyBSb3VuZCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciBiZWNhdXNlIHRoZSBudW1iZXIgb2ZcbiAgLy8gbWlsbGlzZWNvbmRzIGluIGEgZGF5IGlzIG5vdCBjb25zdGFudCAoZS5nLiBpdCdzIGRpZmZlcmVudCBpbiB0aGUgd2VlayBvZlxuICAvLyB0aGUgZGF5bGlnaHQgc2F2aW5nIHRpbWUgY2xvY2sgc2hpZnQpLlxuICByZXR1cm4gTWF0aC5yb3VuZCgodGltZXN0YW1wTGVmdCAtIHRpbWVzdGFtcFJpZ2h0KSAvIG1pbGxpc2Vjb25kc0luRGF5KTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXM7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRoc1xuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIG1vbnRocyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIG1vbnRocyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIGRhdGVSaWdodCAtIFRoZSBlYXJsaWVyIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGNhbGVuZGFyIG1vbnRoc1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciBtb250aHMgYXJlIGJldHdlZW4gMzEgSmFudWFyeSAyMDE0IGFuZCAxIFNlcHRlbWJlciAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDEpLFxuICogICBuZXcgRGF0ZSgyMDE0LCAwLCAzMSlcbiAqIClcbiAqIC8vPVx1MDAzZSA4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSB7XG4gIGNvbnN0IF9kYXRlTGVmdCA9IHRvRGF0ZShkYXRlTGVmdCk7XG4gIGNvbnN0IF9kYXRlUmlnaHQgPSB0b0RhdGUoZGF0ZVJpZ2h0KTtcblxuICBjb25zdCB5ZWFyRGlmZiA9IF9kYXRlTGVmdC5nZXRGdWxsWWVhcigpIC0gX2RhdGVSaWdodC5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aERpZmYgPSBfZGF0ZUxlZnQuZ2V0TW9udGgoKSAtIF9kYXRlUmlnaHQuZ2V0TW9udGgoKTtcblxuICByZXR1cm4geWVhckRpZmYgKiAxMiArIG1vbnRoRGlmZjtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocztcbiIsICJleHBvcnQgZnVuY3Rpb24gZ2V0Um91bmRpbmdNZXRob2QobWV0aG9kKSB7XG4gIHJldHVybiAobnVtYmVyKSA9XHUwMDNlIHtcbiAgICBjb25zdCByb3VuZCA9IG1ldGhvZCA/IE1hdGhbbWV0aG9kXSA6IE1hdGgudHJ1bmM7XG4gICAgY29uc3QgcmVzdWx0ID0gcm91bmQobnVtYmVyKTtcbiAgICAvLyBQcmV2ZW50IG5lZ2F0aXZlIHplcm9cbiAgICByZXR1cm4gcmVzdWx0ID09PSAwID8gMCA6IHJlc3VsdDtcbiAgfTtcbn1cbiIsICIvKipcbiAqIEBtb2R1bGUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBVc2VmdWwgY29uc3RhbnRzXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbGxlY3Rpb24gb2YgdXNlZnVsIGRhdGUgY29uc3RhbnRzLlxuICpcbiAqIFRoZSBjb25zdGFudHMgY291bGQgYmUgaW1wb3J0ZWQgZnJvbSBgZGF0ZS1mbnMvY29uc3RhbnRzYDpcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbWF4VGltZSwgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBmdW5jdGlvbiBpc0FsbG93ZWRUaW1lKHRpbWUpIHtcbiAqICAgcmV0dXJuIHRpbWUgXHUwMDNjPSBtYXhUaW1lIFx1MDAyNlx1MDAyNiB0aW1lIFx1MDAzZT0gbWluVGltZTtcbiAqIH1cbiAqIGBgYFxuICovXG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBkYXlzSW5XZWVrXG4gKiBAc3VtbWFyeSBEYXlzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IGRheXNJbldlZWsgPSA3O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgZGF5c0luWWVhclxuICogQHN1bW1hcnkgRGF5cyBpbiAxIHllYXIuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBIb3cgbWFueSBkYXlzIGluIGEgeWVhci5cbiAqXG4gKiBPbmUgeWVhcnMgZXF1YWxzIDM2NS4yNDI1IGRheXMgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlxuICpcbiAqIFx1MDAzZSBMZWFwIHllYXIgb2NjdXJlcyBldmVyeSA0IHllYXJzLCBleGNlcHQgZm9yIHllYXJzIHRoYXQgYXJlIGRpdmlzYWJsZSBieSAxMDAgYW5kIG5vdCBkaXZpc2FibGUgYnkgNDAwLlxuICogXHUwMDNlIDEgbWVhbiB5ZWFyID0gKDM2NSsxLzQtMS8xMDArMS80MDApIGRheXMgPSAzNjUuMjQyNSBkYXlzXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5ZZWFyID0gMzY1LjI0MjU7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtYXhUaW1lXG4gKiBAc3VtbWFyeSBNYXhpbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgbWF4VGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBjb25zdCBpc1ZhbGlkID0gODY0MDAwMDAwMDAwMDAwMSBcdTAwM2M9IG1heFRpbWU7XG4gKiAvLz1cdTAwM2UgZmFsc2VcbiAqXG4gKiBuZXcgRGF0ZSg4NjQwMDAwMDAwMDAwMDAxKTtcbiAqIC8vPVx1MDAzZSBJbnZhbGlkIERhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1heFRpbWUgPSBNYXRoLnBvdygxMCwgOCkgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWluVGltZVxuICogQHN1bW1hcnkgTWluaW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IG1pblRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogY29uc3QgaXNWYWxpZCA9IC04NjQwMDAwMDAwMDAwMDAxIFx1MDAzZT0gbWluVGltZTtcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICpcbiAqIG5ldyBEYXRlKC04NjQwMDAwMDAwMDAwMDAxKVxuICogLy89XHUwMDNlIEludmFsaWQgRGF0ZVxuICovXG5leHBvcnQgY29uc3QgbWluVGltZSA9IC1tYXhUaW1lO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5XZWVrID0gNjA0ODAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luRGF5ID0gODY0MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbk1pbnV0ZVxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgbWludXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbk1pbnV0ZSA9IDYwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBob3VyXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbkhvdXIgPSAzNjAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5TZWNvbmRcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIHNlY29uZFxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5TZWNvbmQgPSAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luWWVhclxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5ZZWFyID0gNTI1NjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luTW9udGhcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBtb250aC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbk1vbnRoID0gNDMyMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5EYXkgPSAxNDQwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luSG91clxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIGhvdXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5Ib3VyID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtb250aHNJblF1YXJ0ZXJcbiAqIEBzdW1tYXJ5IE1vbnRocyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aHNJblF1YXJ0ZXIgPSAzO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbW9udGhzSW5ZZWFyXG4gKiBAc3VtbWFyeSBNb250aHMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3QgbW9udGhzSW5ZZWFyID0gMTI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBxdWFydGVyc0luWWVhclxuICogQHN1bW1hcnkgUXVhcnRlcnMgaW4gMSB5ZWFyXG4gKi9cbmV4cG9ydCBjb25zdCBxdWFydGVyc0luWWVhciA9IDQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgaG91ci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbkhvdXIgPSAzNjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luTWludXRlXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbWludXRlLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luTWludXRlID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5EYXkgPSBzZWNvbmRzSW5Ib3VyICogMjQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbldlZWsgPSBzZWNvbmRzSW5EYXkgKiA3O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luWWVhclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5ZZWFyID0gc2Vjb25kc0luRGF5ICogZGF5c0luWWVhcjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbk1vbnRoXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbW9udGhcbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbk1vbnRoID0gc2Vjb25kc0luWWVhciAvIDEyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luUXVhcnRlclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5RdWFydGVyID0gc2Vjb25kc0luTW9udGggKiAzO1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgTWlsbGlzZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlTGVmdCAtIFRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0gZGF0ZVJpZ2h0IC0gVGhlIGVhcmxpZXIgZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IG1pbGxpc2Vjb25kcyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTQgMTI6MzA6MjAuNjAwIGFuZCAyIEp1bHkgMjAxNCAxMjozMDoyMS43MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCAzMCwgMjEsIDcwMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCAzMCwgMjAsIDYwMClcbiAqIClcbiAqIC8vPVx1MDAzZSAxMTAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkge1xuICByZXR1cm4gK3RvRGF0ZShkYXRlTGVmdCkgLSArdG9EYXRlKGRhdGVSaWdodCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzO1xuIiwgImltcG9ydCB7IGdldFJvdW5kaW5nTWV0aG9kIH0gZnJvbSBcIi4vX2xpYi9nZXRSb3VuZGluZ01ldGhvZC5tanNcIjtcbmltcG9ydCB7IG1pbGxpc2Vjb25kc0luTWludXRlIH0gZnJvbSBcIi4vY29uc3RhbnRzLm1qc1wiO1xuaW1wb3J0IHsgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgZGlmZmVyZW5jZUluTWludXRlc30gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbk1pbnV0ZXNcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgbWludXRlcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgc2lnbmVkIG51bWJlciBvZiBmdWxsIChyb3VuZGVkIHRvd2FyZHMgMCkgbWludXRlcyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIGRhdGVSaWdodCAtIFRoZSBlYXJsaWVyIGRhdGVcbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIG1pbnV0ZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgbWludXRlcyBhcmUgYmV0d2VlbiAyIEp1bHkgMjAxNCAxMjowNzo1OSBhbmQgMiBKdWx5IDIwMTQgMTI6MjA6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5NaW51dGVzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCAxMiwgMjAsIDApLFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCAxMiwgNywgNTkpXG4gKiApXG4gKiAvLz1cdTAwM2UgMTJcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgbWludXRlcyBhcmUgYmV0d2VlbiAxMDowMTo1OSBhbmQgMTA6MDA6MDBcbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbk1pbnV0ZXMoXG4gKiAgIG5ldyBEYXRlKDIwMDAsIDAsIDEsIDEwLCAwLCAwKSxcbiAqICAgbmV3IERhdGUoMjAwMCwgMCwgMSwgMTAsIDEsIDU5KVxuICogKVxuICogLy89XHUwMDNlIC0xXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5NaW51dGVzKGRhdGVMZWZ0LCBkYXRlUmlnaHQsIG9wdGlvbnMpIHtcbiAgY29uc3QgZGlmZiA9XG4gICAgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIC8gbWlsbGlzZWNvbmRzSW5NaW51dGU7XG4gIHJldHVybiBnZXRSb3VuZGluZ01ldGhvZChvcHRpb25zPy5yb3VuZGluZ01ldGhvZCkoZGlmZik7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZGlmZmVyZW5jZUluTWludXRlcztcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiLyoqXG4gKiBAbmFtZSBjb25zdHJ1Y3RGcm9tXG4gKiBAY2F0ZWdvcnkgR2VuZXJpYyBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb25zdHJ1Y3RzIGEgZGF0ZSB1c2luZyB0aGUgcmVmZXJlbmNlIGRhdGUgYW5kIHRoZSB2YWx1ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGZ1bmN0aW9uIGNvbnN0cnVjdHMgYSBuZXcgZGF0ZSB1c2luZyB0aGUgY29uc3RydWN0b3IgZnJvbSB0aGUgcmVmZXJlbmNlXG4gKiBkYXRlIGFuZCB0aGUgZ2l2ZW4gdmFsdWUuIEl0IGhlbHBzIHRvIGJ1aWxkIGdlbmVyaWMgZnVuY3Rpb25zIHRoYXQgYWNjZXB0XG4gKiBkYXRlIGV4dGVuc2lvbnMuXG4gKlxuICogSXQgZGVmYXVsdHMgdG8gYERhdGVgIGlmIHRoZSBwYXNzZWQgcmVmZXJlbmNlIGRhdGUgaXMgYSBudW1iZXIgb3IgYSBzdHJpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgcmVmZXJlbmNlIGRhdGUgdG8gdGFrZSBjb25zdHJ1Y3RvciBmcm9tXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY3JlYXRlIHRoZSBkYXRlXG4gKlxuICogQHJldHVybnMgRGF0ZSBpbml0aWFsaXplZCB1c2luZyB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdmFsdWVcbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gJ2RhdGUtZm5zJ1xuICpcbiAqIC8vIEEgZnVuY3Rpb24gdGhhdCBjbG9uZXMgYSBkYXRlIHByZXNlcnZpbmcgdGhlIG9yaWdpbmFsIHR5cGVcbiAqIGZ1bmN0aW9uIGNsb25lRGF0ZVx1MDAzY0RhdGVUeXBlIGV4dGVuZHMgRGF0ZShkYXRlOiBEYXRlVHlwZSk6IERhdGVUeXBlIHtcbiAqICAgcmV0dXJuIGNvbnN0cnVjdEZyb20oXG4gKiAgICAgZGF0ZSwgLy8gVXNlIGNvbnRydXN0b3IgZnJvbSB0aGUgZ2l2ZW4gZGF0ZVxuICogICAgIGRhdGUuZ2V0VGltZSgpIC8vIFVzZSB0aGUgZGF0ZSB2YWx1ZSB0byBjcmVhdGUgYSBuZXcgZGF0ZVxuICogICApXG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHZhbHVlKSB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgZGF0ZS5jb25zdHJ1Y3Rvcih2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGNvbnN0cnVjdEZyb207XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgYWRkRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgZGF5cyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5cyBhZGRlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMTAgZGF5cyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz1cdTAwM2UgVGh1IFNlcCAxMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGREYXlzKGRhdGUsIGFtb3VudCkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgaWYgKGlzTmFOKGFtb3VudCkpIHJldHVybiBjb25zdHJ1Y3RGcm9tKGRhdGUsIE5hTik7XG4gIGlmICghYW1vdW50KSB7XG4gICAgLy8gSWYgMCBkYXlzLCBuby1vcCB0byBhdm9pZCBjaGFuZ2luZyB0aW1lcyBpbiB0aGUgaG91ciBiZWZvcmUgZW5kIG9mIERTVFxuICAgIHJldHVybiBfZGF0ZTtcbiAgfVxuICBfZGF0ZS5zZXREYXRlKF9kYXRlLmdldERhdGUoKSArIGFtb3VudCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGREYXlzO1xuIiwgImltcG9ydCB7IGFkZERheXMgfSBmcm9tIFwiLi9hZGREYXlzLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZFdlZWtzXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygd2Vla3MgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIHdlZWtzIHRvIGJlIGFkZGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSB3ZWVrcyBhZGRlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgNCB3ZWVrcyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkV2Vla3MobmV3IERhdGUoMjAxNCwgOCwgMSksIDQpXG4gKiAvLz1cdTAwM2UgTW9uIFNlcCAyOSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRXZWVrcyhkYXRlLCBhbW91bnQpIHtcbiAgY29uc3QgZGF5cyA9IGFtb3VudCAqIDc7XG4gIHJldHVybiBhZGREYXlzKGRhdGUsIGRheXMpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGFkZFdlZWtzO1xuIiwgImxldCBkZWZhdWx0T3B0aW9ucyA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdE9wdGlvbnMoKSB7XG4gIHJldHVybiBkZWZhdWx0T3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldERlZmF1bHRPcHRpb25zKG5ld09wdGlvbnMpIHtcbiAgZGVmYXVsdE9wdGlvbnMgPSBuZXdPcHRpb25zO1xufVxuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4vX2xpYi9kZWZhdWx0T3B0aW9ucy5tanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIHN0YXJ0T2ZXZWVrfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgc3RhcnRPZldlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIHN0YXJ0IG9mIGEgd2Vla1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPVx1MDAzZSBTdW4gQXVnIDMxIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdGhlIHdlZWsgc3RhcnRzIG9uIE1vbmRheSwgdGhlIHN0YXJ0IG9mIHRoZSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSwgeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIC8vPVx1MDAzZSBNb24gU2VwIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0T2ZXZWVrKGRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICBjb25zdCB3ZWVrU3RhcnRzT24gPVxuICAgIG9wdGlvbnM/LndlZWtTdGFydHNPbiA/P1xuICAgIG9wdGlvbnM/LmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uID8/XG4gICAgZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uID8/XG4gICAgZGVmYXVsdE9wdGlvbnMubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24gPz9cbiAgICAwO1xuXG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCBkYXkgPSBfZGF0ZS5nZXREYXkoKTtcbiAgY29uc3QgZGlmZiA9IChkYXkgXHUwMDNjIHdlZWtTdGFydHNPbiA/IDcgOiAwKSArIGRheSAtIHdlZWtTdGFydHNPbjtcblxuICBfZGF0ZS5zZXREYXRlKF9kYXRlLmdldERhdGUoKSAtIGRpZmYpO1xuICBfZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHN0YXJ0T2ZXZWVrO1xuIiwgImltcG9ydCB7IGFkZFdlZWtzIH0gZnJvbSBcIi4vYWRkV2Vla3MubWpzXCI7XG5pbXBvcnQgeyBzdGFydE9mV2VlayB9IGZyb20gXCIuL3N0YXJ0T2ZXZWVrLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgZWFjaFdlZWtPZkludGVydmFsfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgZWFjaFdlZWtPZkludGVydmFsXG4gKiBAY2F0ZWdvcnkgSW50ZXJ2YWwgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBhcnJheSBvZiB3ZWVrcyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBhcnJheSBvZiB3ZWVrcyB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBpbnRlcnZhbCAtIFRoZSBpbnRlcnZhbC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgYXJyYXkgd2l0aCBzdGFydHMgb2Ygd2Vla3MgZnJvbSB0aGUgd2VlayBvZiB0aGUgaW50ZXJ2YWwgc3RhcnQgdG8gdGhlIHdlZWsgb2YgdGhlIGludGVydmFsIGVuZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFYWNoIHdlZWsgd2l0aGluIGludGVydmFsIDYgT2N0b2JlciAyMDE0IC0gMjMgTm92ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVhY2hXZWVrT2ZJbnRlcnZhbCh7XG4gKiAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE0LCA5LCA2KSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgyMDE0LCAxMCwgMjMpXG4gKiB9KVxuICogLy89XHUwMDNlIFtcbiAqIC8vICAgU3VuIE9jdCAwNSAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTdW4gT2N0IDEyIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBPY3QgMTkgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgU3VuIE9jdCAyNiAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTdW4gTm92IDAyIDIwMTQgMDA6MDA6MDAsXG4gKiAvLyAgIFN1biBOb3YgMDkgMjAxNCAwMDowMDowMCxcbiAqIC8vICAgU3VuIE5vdiAxNiAyMDE0IDAwOjAwOjAwLFxuICogLy8gICBTdW4gTm92IDIzIDIwMTQgMDA6MDA6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVhY2hXZWVrT2ZJbnRlcnZhbChpbnRlcnZhbCwgb3B0aW9ucykge1xuICBjb25zdCBzdGFydERhdGUgPSB0b0RhdGUoaW50ZXJ2YWwuc3RhcnQpO1xuICBjb25zdCBlbmREYXRlID0gdG9EYXRlKGludGVydmFsLmVuZCk7XG5cbiAgbGV0IHJldmVyc2VkID0gK3N0YXJ0RGF0ZSBcdTAwM2UgK2VuZERhdGU7XG4gIGNvbnN0IHN0YXJ0RGF0ZVdlZWsgPSByZXZlcnNlZFxuICAgID8gc3RhcnRPZldlZWsoZW5kRGF0ZSwgb3B0aW9ucylcbiAgICA6IHN0YXJ0T2ZXZWVrKHN0YXJ0RGF0ZSwgb3B0aW9ucyk7XG4gIGNvbnN0IGVuZERhdGVXZWVrID0gcmV2ZXJzZWRcbiAgICA/IHN0YXJ0T2ZXZWVrKHN0YXJ0RGF0ZSwgb3B0aW9ucylcbiAgICA6IHN0YXJ0T2ZXZWVrKGVuZERhdGUsIG9wdGlvbnMpO1xuXG4gIC8vIFNvbWUgdGltZXpvbmVzIHN3aXRjaCBEU1QgYXQgbWlkbmlnaHQsIG1ha2luZyBzdGFydCBvZiBkYXkgdW5yZWxpYWJsZSBpbiB0aGVzZSB0aW1lem9uZXMsIDNwbSBpcyBhIHNhZmUgYmV0XG4gIHN0YXJ0RGF0ZVdlZWsuc2V0SG91cnMoMTUpO1xuICBlbmREYXRlV2Vlay5zZXRIb3VycygxNSk7XG5cbiAgY29uc3QgZW5kVGltZSA9ICtlbmREYXRlV2Vlay5nZXRUaW1lKCk7XG4gIGxldCBjdXJyZW50RGF0ZSA9IHN0YXJ0RGF0ZVdlZWs7XG5cbiAgbGV0IHN0ZXAgPSBvcHRpb25zPy5zdGVwID8/IDE7XG4gIGlmICghc3RlcCkgcmV0dXJuIFtdO1xuICBpZiAoc3RlcCBcdTAwM2MgMCkge1xuICAgIHN0ZXAgPSAtc3RlcDtcbiAgICByZXZlcnNlZCA9ICFyZXZlcnNlZDtcbiAgfVxuXG4gIGNvbnN0IGRhdGVzID0gW107XG5cbiAgd2hpbGUgKCtjdXJyZW50RGF0ZSBcdTAwM2M9IGVuZFRpbWUpIHtcbiAgICBjdXJyZW50RGF0ZS5zZXRIb3VycygwKTtcbiAgICBkYXRlcy5wdXNoKHRvRGF0ZShjdXJyZW50RGF0ZSkpO1xuICAgIGN1cnJlbnREYXRlID0gYWRkV2Vla3MoY3VycmVudERhdGUsIHN0ZXApO1xuICAgIGN1cnJlbnREYXRlLnNldEhvdXJzKDE1KTtcbiAgfVxuXG4gIHJldHVybiByZXZlcnNlZCA/IGRhdGVzLnJldmVyc2UoKSA6IGRhdGVzO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGVhY2hXZWVrT2ZJbnRlcnZhbDtcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGVuZE9mRGF5XG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgZW5kIG9mIGEgZGF5IGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGEgZGF5IGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgb3JpZ2luYWwgZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSBlbmQgb2YgYSBkYXlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGVuZCBvZiBhIGRheSBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz1cdTAwM2UgVHVlIFNlcCAwMiAyMDE0IDIzOjU5OjU5Ljk5OVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5kT2ZEYXkoZGF0ZSkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgX2RhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGVuZE9mRGF5O1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgZ2V0SG91cnNcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgaG91cnMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIGhvdXJzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGdpdmVuIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgaG91cnNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gR2V0IHRoZSBob3VycyBvZiAyOSBGZWJydWFyeSAyMDEyIDExOjQ1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gZ2V0SG91cnMobmV3IERhdGUoMjAxMiwgMSwgMjksIDExLCA0NSkpXG4gKiAvLz1cdTAwM2UgMTFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhvdXJzKGRhdGUpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGNvbnN0IGhvdXJzID0gX2RhdGUuZ2V0SG91cnMoKTtcbiAgcmV0dXJuIGhvdXJzO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGdldEhvdXJzO1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgZ2V0TWludXRlc1xuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG1pbnV0ZXMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG1pbnV0ZXMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZ2l2ZW4gZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSBtaW51dGVzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEdldCB0aGUgbWludXRlcyBvZiAyOSBGZWJydWFyeSAyMDEyIDExOjQ1OjA1OlxuICogY29uc3QgcmVzdWx0ID0gZ2V0TWludXRlcyhuZXcgRGF0ZSgyMDEyLCAxLCAyOSwgMTEsIDQ1LCA1KSlcbiAqIC8vPVx1MDAzZSA0NVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWludXRlcyhkYXRlKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCBtaW51dGVzID0gX2RhdGUuZ2V0TWludXRlcygpO1xuICByZXR1cm4gbWludXRlcztcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBnZXRNaW51dGVzO1xuIiwgIi8qKlxuICogQG5hbWUgY29uc3RydWN0RnJvbVxuICogQGNhdGVnb3J5IEdlbmVyaWMgSGVscGVyc1xuICogQHN1bW1hcnkgQ29uc3RydWN0cyBhIGRhdGUgdXNpbmcgdGhlIHJlZmVyZW5jZSBkYXRlIGFuZCB0aGUgdmFsdWVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBmdW5jdGlvbiBjb25zdHJ1Y3RzIGEgbmV3IGRhdGUgdXNpbmcgdGhlIGNvbnN0cnVjdG9yIGZyb20gdGhlIHJlZmVyZW5jZVxuICogZGF0ZSBhbmQgdGhlIGdpdmVuIHZhbHVlLiBJdCBoZWxwcyB0byBidWlsZCBnZW5lcmljIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdFxuICogZGF0ZSBleHRlbnNpb25zLlxuICpcbiAqIEl0IGRlZmF1bHRzIHRvIGBEYXRlYCBpZiB0aGUgcGFzc2VkIHJlZmVyZW5jZSBkYXRlIGlzIGEgbnVtYmVyIG9yIGEgc3RyaW5nLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIHJlZmVyZW5jZSBkYXRlIHRvIHRha2UgY29uc3RydWN0b3IgZnJvbVxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNyZWF0ZSB0aGUgZGF0ZVxuICpcbiAqIEByZXR1cm5zIERhdGUgaW5pdGlhbGl6ZWQgdXNpbmcgdGhlIGdpdmVuIGRhdGUgYW5kIHZhbHVlXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tICdkYXRlLWZucydcbiAqXG4gKiAvLyBBIGZ1bmN0aW9uIHRoYXQgY2xvbmVzIGEgZGF0ZSBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCB0eXBlXG4gKiBmdW5jdGlvbiBjbG9uZURhdGVcdTAwM2NEYXRlVHlwZSBleHRlbmRzIERhdGUoZGF0ZTogRGF0ZVR5cGUpOiBEYXRlVHlwZSB7XG4gKiAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKFxuICogICAgIGRhdGUsIC8vIFVzZSBjb250cnVzdG9yIGZyb20gdGhlIGdpdmVuIGRhdGVcbiAqICAgICBkYXRlLmdldFRpbWUoKSAvLyBVc2UgdGhlIGRhdGUgdmFsdWUgdG8gY3JlYXRlIGEgbmV3IGRhdGVcbiAqICAgKVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RnJvbShkYXRlLCB2YWx1ZSkge1xuICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gbmV3IGRhdGUuY29uc3RydWN0b3IodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBjb25zdHJ1Y3RGcm9tO1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICJsZXQgZGVmYXVsdE9wdGlvbnMgPSB7fTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRPcHRpb25zKCkge1xuICByZXR1cm4gZGVmYXVsdE9wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXREZWZhdWx0T3B0aW9ucyhuZXdPcHRpb25zKSB7XG4gIGRlZmF1bHRPcHRpb25zID0gbmV3T3B0aW9ucztcbn1cbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuL19saWIvZGVmYXVsdE9wdGlvbnMubWpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBzdGFydE9mV2Vla30gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZXZWVrXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIFRoZSBzdGFydCBvZiBhIHdlZWtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz1cdTAwM2UgU3VuIEF1ZyAzMSAyMDE0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIElmIHRoZSB3ZWVrIHN0YXJ0cyBvbiBNb25kYXksIHRoZSBzdGFydCBvZiB0aGUgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCksIHsgd2Vla1N0YXJ0c09uOiAxIH0pXG4gKiAvLz1cdTAwM2UgTW9uIFNlcCAwMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydE9mV2VlayhkYXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgY29uc3Qgd2Vla1N0YXJ0c09uID1cbiAgICBvcHRpb25zPy53ZWVrU3RhcnRzT24gPz9cbiAgICBvcHRpb25zPy5sb2NhbGU/Lm9wdGlvbnM/LndlZWtTdGFydHNPbiA/P1xuICAgIGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbiA/P1xuICAgIGRlZmF1bHRPcHRpb25zLmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uID8/XG4gICAgMDtcblxuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgY29uc3QgZGF5ID0gX2RhdGUuZ2V0RGF5KCk7XG4gIGNvbnN0IGRpZmYgPSAoZGF5IFx1MDAzYyB3ZWVrU3RhcnRzT24gPyA3IDogMCkgKyBkYXkgLSB3ZWVrU3RhcnRzT247XG5cbiAgX2RhdGUuc2V0RGF0ZShfZGF0ZS5nZXREYXRlKCkgLSBkaWZmKTtcbiAgX2RhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBzdGFydE9mV2VlaztcbiIsICJpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5tanNcIjtcbmltcG9ydCB7IHN0YXJ0T2ZXZWVrIH0gZnJvbSBcIi4vc3RhcnRPZldlZWsubWpzXCI7XG5pbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuL19saWIvZGVmYXVsdE9wdGlvbnMubWpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBnZXRXZWVrWWVhcn0gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIGdldFdlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgZXhhY3QgY2FsY3VsYXRpb24gZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mXG4gKiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gICh3aGljaCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlaylcbiAqIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgICh3aGljaCBpcyB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpblxuICogdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIpXG4gKlxuICogV2VlayBudW1iZXJpbmc6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlZWsjVGhlX0lTT193ZWVrX2RhdGVfc3lzdGVtXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZ2l2ZW4gZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICpcbiAqIEByZXR1cm5zIFRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMjYgRGVjZW1iZXIgMjAwNCB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmdzP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2Vla1llYXIobmV3IERhdGUoMjAwNCwgMTEsIDI2KSlcbiAqIC8vPVx1MDAzZSAyMDA1XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMjYgRGVjZW1iZXIgMjAwNCBpZiB3ZWVrIHN0YXJ0cyBvbiBTYXR1cmRheT9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWtZZWFyKG5ldyBEYXRlKDIwMDQsIDExLCAyNiksIHsgd2Vla1N0YXJ0c09uOiA2IH0pXG4gKiAvLz1cdTAwM2UgMjAwNFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDI2IERlY2VtYmVyIDIwMDQgaWYgdGhlIGZpcnN0IHdlZWsgY29udGFpbnMgNCBKYW51YXJ5P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2Vla1llYXIobmV3IERhdGUoMjAwNCwgMTEsIDI2KSwgeyBmaXJzdFdlZWtDb250YWluc0RhdGU6IDQgfSlcbiAqIC8vPVx1MDAzZSAyMDA0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXZWVrWWVhcihkYXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCB5ZWFyID0gX2RhdGUuZ2V0RnVsbFllYXIoKTtcblxuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIGNvbnN0IGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9XG4gICAgb3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgb3B0aW9ucz8ubG9jYWxlPy5vcHRpb25zPy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICBkZWZhdWx0T3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICBkZWZhdWx0T3B0aW9ucy5sb2NhbGU/Lm9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIDE7XG5cbiAgY29uc3QgZmlyc3RXZWVrT2ZOZXh0WWVhciA9IGNvbnN0cnVjdEZyb20oZGF0ZSwgMCk7XG4gIGZpcnN0V2Vla09mTmV4dFllYXIuc2V0RnVsbFllYXIoeWVhciArIDEsIDAsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIGZpcnN0V2Vla09mTmV4dFllYXIuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIGNvbnN0IHN0YXJ0T2ZOZXh0WWVhciA9IHN0YXJ0T2ZXZWVrKGZpcnN0V2Vla09mTmV4dFllYXIsIG9wdGlvbnMpO1xuXG4gIGNvbnN0IGZpcnN0V2Vla09mVGhpc1llYXIgPSBjb25zdHJ1Y3RGcm9tKGRhdGUsIDApO1xuICBmaXJzdFdlZWtPZlRoaXNZZWFyLnNldEZ1bGxZZWFyKHllYXIsIDAsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gIGZpcnN0V2Vla09mVGhpc1llYXIuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIGNvbnN0IHN0YXJ0T2ZUaGlzWWVhciA9IHN0YXJ0T2ZXZWVrKGZpcnN0V2Vla09mVGhpc1llYXIsIG9wdGlvbnMpO1xuXG4gIGlmIChfZGF0ZS5nZXRUaW1lKCkgXHUwMDNlPSBzdGFydE9mTmV4dFllYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXIgKyAxO1xuICB9IGVsc2UgaWYgKF9kYXRlLmdldFRpbWUoKSBcdTAwM2U9IHN0YXJ0T2ZUaGlzWWVhci5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4geWVhcjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geWVhciAtIDE7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBnZXRXZWVrWWVhcjtcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAiLyoqXG4gKiBAbmFtZSBjb25zdHJ1Y3RGcm9tXG4gKiBAY2F0ZWdvcnkgR2VuZXJpYyBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb25zdHJ1Y3RzIGEgZGF0ZSB1c2luZyB0aGUgcmVmZXJlbmNlIGRhdGUgYW5kIHRoZSB2YWx1ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGZ1bmN0aW9uIGNvbnN0cnVjdHMgYSBuZXcgZGF0ZSB1c2luZyB0aGUgY29uc3RydWN0b3IgZnJvbSB0aGUgcmVmZXJlbmNlXG4gKiBkYXRlIGFuZCB0aGUgZ2l2ZW4gdmFsdWUuIEl0IGhlbHBzIHRvIGJ1aWxkIGdlbmVyaWMgZnVuY3Rpb25zIHRoYXQgYWNjZXB0XG4gKiBkYXRlIGV4dGVuc2lvbnMuXG4gKlxuICogSXQgZGVmYXVsdHMgdG8gYERhdGVgIGlmIHRoZSBwYXNzZWQgcmVmZXJlbmNlIGRhdGUgaXMgYSBudW1iZXIgb3IgYSBzdHJpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgcmVmZXJlbmNlIGRhdGUgdG8gdGFrZSBjb25zdHJ1Y3RvciBmcm9tXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY3JlYXRlIHRoZSBkYXRlXG4gKlxuICogQHJldHVybnMgRGF0ZSBpbml0aWFsaXplZCB1c2luZyB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdmFsdWVcbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gJ2RhdGUtZm5zJ1xuICpcbiAqIC8vIEEgZnVuY3Rpb24gdGhhdCBjbG9uZXMgYSBkYXRlIHByZXNlcnZpbmcgdGhlIG9yaWdpbmFsIHR5cGVcbiAqIGZ1bmN0aW9uIGNsb25lRGF0ZVx1MDAzY0RhdGVUeXBlIGV4dGVuZHMgRGF0ZShkYXRlOiBEYXRlVHlwZSk6IERhdGVUeXBlIHtcbiAqICAgcmV0dXJuIGNvbnN0cnVjdEZyb20oXG4gKiAgICAgZGF0ZSwgLy8gVXNlIGNvbnRydXN0b3IgZnJvbSB0aGUgZ2l2ZW4gZGF0ZVxuICogICAgIGRhdGUuZ2V0VGltZSgpIC8vIFVzZSB0aGUgZGF0ZSB2YWx1ZSB0byBjcmVhdGUgYSBuZXcgZGF0ZVxuICogICApXG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHZhbHVlKSB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgZGF0ZS5jb25zdHJ1Y3Rvcih2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGNvbnN0cnVjdEZyb207XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgYWRkRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgZGF5cyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5cyBhZGRlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMTAgZGF5cyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz1cdTAwM2UgVGh1IFNlcCAxMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGREYXlzKGRhdGUsIGFtb3VudCkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgaWYgKGlzTmFOKGFtb3VudCkpIHJldHVybiBjb25zdHJ1Y3RGcm9tKGRhdGUsIE5hTik7XG4gIGlmICghYW1vdW50KSB7XG4gICAgLy8gSWYgMCBkYXlzLCBuby1vcCB0byBhdm9pZCBjaGFuZ2luZyB0aW1lcyBpbiB0aGUgaG91ciBiZWZvcmUgZW5kIG9mIERTVFxuICAgIHJldHVybiBfZGF0ZTtcbiAgfVxuICBfZGF0ZS5zZXREYXRlKF9kYXRlLmdldERhdGUoKSArIGFtb3VudCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGREYXlzO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZE1vbnRoc1xuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtb250aHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbW9udGhzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgbW9udGhzIHRvIGJlIGFkZGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBtb250aHMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDUgbW9udGhzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRNb250aHMobmV3IERhdGUoMjAxNCwgOCwgMSksIDUpXG4gKiAvLz1cdTAwM2UgU3VuIEZlYiAwMSAyMDE1IDAwOjAwOjAwXG4gKlxuICogLy8gQWRkIG9uZSBtb250aCB0byAzMCBKYW51YXJ5IDIwMjM6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRNb250aHMobmV3IERhdGUoMjAyMywgMCwgMzApLCAxKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMjggMjAyMyAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkTW9udGhzKGRhdGUsIGFtb3VudCkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgaWYgKGlzTmFOKGFtb3VudCkpIHJldHVybiBjb25zdHJ1Y3RGcm9tKGRhdGUsIE5hTik7XG4gIGlmICghYW1vdW50KSB7XG4gICAgLy8gSWYgMCBtb250aHMsIG5vLW9wIHRvIGF2b2lkIGNoYW5naW5nIHRpbWVzIGluIHRoZSBob3VyIGJlZm9yZSBlbmQgb2YgRFNUXG4gICAgcmV0dXJuIF9kYXRlO1xuICB9XG4gIGNvbnN0IGRheU9mTW9udGggPSBfZGF0ZS5nZXREYXRlKCk7XG5cbiAgLy8gVGhlIEpTIERhdGUgb2JqZWN0IHN1cHBvcnRzIGRhdGUgbWF0aCBieSBhY2NlcHRpbmcgb3V0LW9mLWJvdW5kcyB2YWx1ZXMgZm9yXG4gIC8vIG1vbnRoLCBkYXksIGV0Yy4gRm9yIGV4YW1wbGUsIG5ldyBEYXRlKDIwMjAsIDAsIDApIHJldHVybnMgMzEgRGVjIDIwMTkgYW5kXG4gIC8vIG5ldyBEYXRlKDIwMjAsIDEzLCAxKSByZXR1cm5zIDEgRmViIDIwMjEuICBUaGlzIGlzICphbG1vc3QqIHRoZSBiZWhhdmlvciB3ZVxuICAvLyB3YW50IGV4Y2VwdCB0aGF0IGRhdGVzIHdpbGwgd3JhcCBhcm91bmQgdGhlIGVuZCBvZiBhIG1vbnRoLCBtZWFuaW5nIHRoYXRcbiAgLy8gbmV3IERhdGUoMjAyMCwgMTMsIDMxKSB3aWxsIHJldHVybiAzIE1hciAyMDIxIG5vdCAyOCBGZWIgMjAyMSBhcyBkZXNpcmVkLiBTb1xuICAvLyB3ZSdsbCBkZWZhdWx0IHRvIHRoZSBlbmQgb2YgdGhlIGRlc2lyZWQgbW9udGggYnkgYWRkaW5nIDEgdG8gdGhlIGRlc2lyZWRcbiAgLy8gbW9udGggYW5kIHVzaW5nIGEgZGF0ZSBvZiAwIHRvIGJhY2sgdXAgb25lIGRheSB0byB0aGUgZW5kIG9mIHRoZSBkZXNpcmVkXG4gIC8vIG1vbnRoLlxuICBjb25zdCBlbmRPZkRlc2lyZWRNb250aCA9IGNvbnN0cnVjdEZyb20oZGF0ZSwgX2RhdGUuZ2V0VGltZSgpKTtcbiAgZW5kT2ZEZXNpcmVkTW9udGguc2V0TW9udGgoX2RhdGUuZ2V0TW9udGgoKSArIGFtb3VudCArIDEsIDApO1xuICBjb25zdCBkYXlzSW5Nb250aCA9IGVuZE9mRGVzaXJlZE1vbnRoLmdldERhdGUoKTtcbiAgaWYgKGRheU9mTW9udGggXHUwMDNlPSBkYXlzSW5Nb250aCkge1xuICAgIC8vIElmIHdlJ3JlIGFscmVhZHkgYXQgdGhlIGVuZCBvZiB0aGUgbW9udGgsIHRoZW4gdGhpcyBpcyB0aGUgY29ycmVjdCBkYXRlXG4gICAgLy8gYW5kIHdlJ3JlIGRvbmUuXG4gICAgcmV0dXJuIGVuZE9mRGVzaXJlZE1vbnRoO1xuICB9IGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSwgd2Ugbm93IGtub3cgdGhhdCBzZXR0aW5nIHRoZSBvcmlnaW5hbCBkYXktb2YtbW9udGggdmFsdWUgd29uJ3RcbiAgICAvLyBjYXVzZSBhbiBvdmVyZmxvdywgc28gc2V0IHRoZSBkZXNpcmVkIGRheS1vZi1tb250aC4gTm90ZSB0aGF0IHdlIGNhbid0XG4gICAgLy8ganVzdCBzZXQgdGhlIGRhdGUgb2YgYGVuZE9mRGVzaXJlZE1vbnRoYCBiZWNhdXNlIHRoYXQgb2JqZWN0IG1heSBoYXZlIGhhZFxuICAgIC8vIGl0cyB0aW1lIGNoYW5nZWQgaW4gdGhlIHVudXN1YWwgY2FzZSB3aGVyZSB3aGVyZSBhIERTVCB0cmFuc2l0aW9uIHdhcyBvblxuICAgIC8vIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGggYW5kIGl0cyBsb2NhbCB0aW1lIHdhcyBpbiB0aGUgaG91ciBza2lwcGVkIG9yXG4gICAgLy8gcmVwZWF0ZWQgbmV4dCB0byBhIERTVCB0cmFuc2l0aW9uLiAgU28gd2UgdXNlIGBkYXRlYCBpbnN0ZWFkIHdoaWNoIGlzXG4gICAgLy8gZ3VhcmFudGVlZCB0byBzdGlsbCBoYXZlIHRoZSBvcmlnaW5hbCB0aW1lLlxuICAgIF9kYXRlLnNldEZ1bGxZZWFyKFxuICAgICAgZW5kT2ZEZXNpcmVkTW9udGguZ2V0RnVsbFllYXIoKSxcbiAgICAgIGVuZE9mRGVzaXJlZE1vbnRoLmdldE1vbnRoKCksXG4gICAgICBkYXlPZk1vbnRoLFxuICAgICk7XG4gICAgcmV0dXJuIF9kYXRlO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkTW9udGhzO1xuIiwgImltcG9ydCB7IGFkZERheXMgfSBmcm9tIFwiLi9hZGREYXlzLm1qc1wiO1xuaW1wb3J0IHsgYWRkTW9udGhzIH0gZnJvbSBcIi4vYWRkTW9udGhzLm1qc1wiO1xuaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5pbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgYWRkXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBkdXJhdGlvbiAtIFRoZSBvYmplY3Qgd2l0aCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMgdG8gYmUgYWRkZWQuXG4gKlxuICogfCBLZXkgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCB5ZWFycyAgICAgICAgICB8IEFtb3VudCBvZiB5ZWFycyB0byBiZSBhZGRlZCAgICAgICAgfFxuICogfCBtb250aHMgICAgICAgICB8IEFtb3VudCBvZiBtb250aHMgdG8gYmUgYWRkZWQgICAgICAgfFxuICogfCB3ZWVrcyAgICAgICAgICB8IEFtb3VudCBvZiB3ZWVrcyB0byBiZSBhZGRlZCAgICAgICAgfFxuICogfCBkYXlzICAgICAgICAgICB8IEFtb3VudCBvZiBkYXlzIHRvIGJlIGFkZGVkICAgICAgICAgfFxuICogfCBob3VycyAgICAgICAgICB8IEFtb3VudCBvZiBob3VycyB0byBiZSBhZGRlZCAgICAgICAgfFxuICogfCBtaW51dGVzICAgICAgICB8IEFtb3VudCBvZiBtaW51dGVzIHRvIGJlIGFkZGVkICAgICAgfFxuICogfCBzZWNvbmRzICAgICAgICB8IEFtb3VudCBvZiBzZWNvbmRzIHRvIGJlIGFkZGVkICAgICAgfFxuICpcbiAqIEFsbCB2YWx1ZXMgZGVmYXVsdCB0byAwXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIHNlY29uZHMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIHRoZSBmb2xsb3dpbmcgZHVyYXRpb24gdG8gMSBTZXB0ZW1iZXIgMjAxNCwgMTA6MTk6NTBcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZChuZXcgRGF0ZSgyMDE0LCA4LCAxLCAxMCwgMTksIDUwKSwge1xuICogICB5ZWFyczogMixcbiAqICAgbW9udGhzOiA5LFxuICogICB3ZWVrczogMSxcbiAqICAgZGF5czogNyxcbiAqICAgaG91cnM6IDUsXFxcXC03XG4gKiAgIG1pbnV0ZXM6IDksXG4gKiAgIHNlY29uZHM6IDMwLFxuICogfSlcbiAqIC8vPVx1MDAzZSBUaHUgSnVuIDE1IDIwMTcgMTU6Mjk6MjBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZChkYXRlLCBkdXJhdGlvbikge1xuICBjb25zdCB7XG4gICAgeWVhcnMgPSAwLFxuICAgIG1vbnRocyA9IDAsXG4gICAgd2Vla3MgPSAwLFxuICAgIGRheXMgPSAwLFxuICAgIGhvdXJzID0gMCxcbiAgICBtaW51dGVzID0gMCxcbiAgICBzZWNvbmRzID0gMCxcbiAgfSA9IGR1cmF0aW9uO1xuXG4gIC8vIEFkZCB5ZWFycyBhbmQgbW9udGhzXG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCBkYXRlV2l0aE1vbnRocyA9XG4gICAgbW9udGhzIHx8IHllYXJzID8gYWRkTW9udGhzKF9kYXRlLCBtb250aHMgKyB5ZWFycyAqIDEyKSA6IF9kYXRlO1xuXG4gIC8vIEFkZCB3ZWVrcyBhbmQgZGF5c1xuICBjb25zdCBkYXRlV2l0aERheXMgPVxuICAgIGRheXMgfHwgd2Vla3MgPyBhZGREYXlzKGRhdGVXaXRoTW9udGhzLCBkYXlzICsgd2Vla3MgKiA3KSA6IGRhdGVXaXRoTW9udGhzO1xuXG4gIC8vIEFkZCBkYXlzLCBob3VycywgbWludXRlcyBhbmQgc2Vjb25kc1xuICBjb25zdCBtaW51dGVzVG9BZGQgPSBtaW51dGVzICsgaG91cnMgKiA2MDtcbiAgY29uc3Qgc2Vjb25kc1RvQWRkID0gc2Vjb25kcyArIG1pbnV0ZXNUb0FkZCAqIDYwO1xuICBjb25zdCBtc1RvQWRkID0gc2Vjb25kc1RvQWRkICogMTAwMDtcbiAgY29uc3QgZmluYWxEYXRlID0gY29uc3RydWN0RnJvbShkYXRlLCBkYXRlV2l0aERheXMuZ2V0VGltZSgpICsgbXNUb0FkZCk7XG5cbiAgcmV0dXJuIGZpbmFsRGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGQ7XG4iLCAiLyoqXG4gKiBAbW9kdWxlIGNvbnN0YW50c1xuICogQHN1bW1hcnkgVXNlZnVsIGNvbnN0YW50c1xuICogQGRlc2NyaXB0aW9uXG4gKiBDb2xsZWN0aW9uIG9mIHVzZWZ1bCBkYXRlIGNvbnN0YW50cy5cbiAqXG4gKiBUaGUgY29uc3RhbnRzIGNvdWxkIGJlIGltcG9ydGVkIGZyb20gYGRhdGUtZm5zL2NvbnN0YW50c2A6XG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IG1heFRpbWUsIG1pblRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogZnVuY3Rpb24gaXNBbGxvd2VkVGltZSh0aW1lKSB7XG4gKiAgIHJldHVybiB0aW1lIFx1MDAzYz0gbWF4VGltZSBcdTAwMjZcdTAwMjYgdGltZSBcdTAwM2U9IG1pblRpbWU7XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgZGF5c0luV2Vla1xuICogQHN1bW1hcnkgRGF5cyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5XZWVrID0gNztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIGRheXNJblllYXJcbiAqIEBzdW1tYXJ5IERheXMgaW4gMSB5ZWFyLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSG93IG1hbnkgZGF5cyBpbiBhIHllYXIuXG4gKlxuICogT25lIHllYXJzIGVxdWFscyAzNjUuMjQyNSBkYXlzIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpcbiAqXG4gKiBcdTAwM2UgTGVhcCB5ZWFyIG9jY3VyZXMgZXZlcnkgNCB5ZWFycywgZXhjZXB0IGZvciB5ZWFycyB0aGF0IGFyZSBkaXZpc2FibGUgYnkgMTAwIGFuZCBub3QgZGl2aXNhYmxlIGJ5IDQwMC5cbiAqIFx1MDAzZSAxIG1lYW4geWVhciA9ICgzNjUrMS80LTEvMTAwKzEvNDAwKSBkYXlzID0gMzY1LjI0MjUgZGF5c1xuICovXG5leHBvcnQgY29uc3QgZGF5c0luWWVhciA9IDM2NS4yNDI1O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWF4VGltZVxuICogQHN1bW1hcnkgTWF4aW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IG1heFRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogY29uc3QgaXNWYWxpZCA9IDg2NDAwMDAwMDAwMDAwMDEgXHUwMDNjPSBtYXhUaW1lO1xuICogLy89XHUwMDNlIGZhbHNlXG4gKlxuICogbmV3IERhdGUoODY0MDAwMDAwMDAwMDAwMSk7XG4gKiAvLz1cdTAwM2UgSW52YWxpZCBEYXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtYXhUaW1lID0gTWF0aC5wb3coMTAsIDgpICogMjQgKiA2MCAqIDYwICogMTAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pblRpbWVcbiAqIEBzdW1tYXJ5IE1pbmltdW0gYWxsb3dlZCB0aW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBtaW5UaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGNvbnN0IGlzVmFsaWQgPSAtODY0MDAwMDAwMDAwMDAwMSBcdTAwM2U9IG1pblRpbWU7XG4gKiAvLz1cdTAwM2UgZmFsc2VcbiAqXG4gKiBuZXcgRGF0ZSgtODY0MDAwMDAwMDAwMDAwMSlcbiAqIC8vPVx1MDAzZSBJbnZhbGlkIERhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1pblRpbWUgPSAtbWF4VGltZTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luV2Vla1xuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luV2VlayA9IDYwNDgwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luRGF5XG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbkRheSA9IDg2NDAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5NaW51dGVcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIG1pbnV0ZVxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5NaW51dGUgPSA2MDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luSG91clxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgaG91clxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5Ib3VyID0gMzYwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luU2Vjb25kXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBzZWNvbmRcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luU2Vjb25kID0gMTAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJblllYXJcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luWWVhciA9IDUyNTYwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbk1vbnRoXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgbW9udGguXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5Nb250aCA9IDQzMjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luRGF5XG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luRGF5ID0gMTQ0MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbkhvdXJcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBob3VyLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luSG91ciA9IDYwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbW9udGhzSW5RdWFydGVyXG4gKiBAc3VtbWFyeSBNb250aHMgaW4gMSBxdWFydGVyLlxuICovXG5leHBvcnQgY29uc3QgbW9udGhzSW5RdWFydGVyID0gMztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1vbnRoc0luWWVhclxuICogQHN1bW1hcnkgTW9udGhzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1vbnRoc0luWWVhciA9IDEyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgcXVhcnRlcnNJblllYXJcbiAqIEBzdW1tYXJ5IFF1YXJ0ZXJzIGluIDEgeWVhclxuICovXG5leHBvcnQgY29uc3QgcXVhcnRlcnNJblllYXIgPSA0O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luSG91clxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIGhvdXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5Ib3VyID0gMzYwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbk1pbnV0ZVxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIG1pbnV0ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbk1pbnV0ZSA9IDYwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luRGF5XG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luRGF5ID0gc2Vjb25kc0luSG91ciAqIDI0O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luV2Vla1xuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5XZWVrID0gc2Vjb25kc0luRGF5ICogNztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJblllYXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luWWVhciA9IHNlY29uZHNJbkRheSAqIGRheXNJblllYXI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5Nb250aFxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIG1vbnRoXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5Nb250aCA9IHNlY29uZHNJblllYXIgLyAxMjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJblF1YXJ0ZXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBxdWFydGVyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luUXVhcnRlciA9IHNlY29uZHNJbk1vbnRoICogMztcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgc3RhcnRPZkRheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgZGF5IGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSBkYXkgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBvcmlnaW5hbCBkYXRlXG4gKlxuICogQHJldHVybnMgVGhlIHN0YXJ0IG9mIGEgZGF5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIGRheSBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZEYXkobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPVx1MDAzZSBUdWUgU2VwIDAyIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0T2ZEYXkoZGF0ZSkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgX2RhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBzdGFydE9mRGF5O1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogR29vZ2xlIENocm9tZSBhcyBvZiA2Ny4wLjMzOTYuODcgaW50cm9kdWNlZCB0aW1lem9uZXMgd2l0aCBvZmZzZXQgdGhhdCBpbmNsdWRlcyBzZWNvbmRzLlxuICogVGhleSB1c3VhbGx5IGFwcGVhciBmb3IgZGF0ZXMgdGhhdCBkZW5vdGUgdGltZSBiZWZvcmUgdGhlIHRpbWV6b25lcyB3ZXJlIGludHJvZHVjZWRcbiAqIChlLmcuIGZvciAnRXVyb3BlL1ByYWd1ZScgdGltZXpvbmUgdGhlIG9mZnNldCBpcyBHTVQrMDA6NTc6NDQgYmVmb3JlIDEgT2N0b2JlciAxODkxXG4gKiBhbmQgR01UKzAxOjAwOjAwIGFmdGVyIHRoYXQgZGF0ZSlcbiAqXG4gKiBEYXRlI2dldFRpbWV6b25lT2Zmc2V0IHJldHVybnMgdGhlIG9mZnNldCBpbiBtaW51dGVzIGFuZCB3b3VsZCByZXR1cm4gNTcgZm9yIHRoZSBleGFtcGxlIGFib3ZlLFxuICogd2hpY2ggd291bGQgbGVhZCB0byBpbmNvcnJlY3QgY2FsY3VsYXRpb25zLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdGltZXpvbmUgb2Zmc2V0IGluIG1pbGxpc2Vjb25kcyB0aGF0IHRha2VzIHNlY29uZHMgaW4gYWNjb3VudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoZGF0ZSkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgY29uc3QgdXRjRGF0ZSA9IG5ldyBEYXRlKFxuICAgIERhdGUuVVRDKFxuICAgICAgX2RhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIF9kYXRlLmdldE1vbnRoKCksXG4gICAgICBfZGF0ZS5nZXREYXRlKCksXG4gICAgICBfZGF0ZS5nZXRIb3VycygpLFxuICAgICAgX2RhdGUuZ2V0TWludXRlcygpLFxuICAgICAgX2RhdGUuZ2V0U2Vjb25kcygpLFxuICAgICAgX2RhdGUuZ2V0TWlsbGlzZWNvbmRzKCksXG4gICAgKSxcbiAgKTtcbiAgdXRjRGF0ZS5zZXRVVENGdWxsWWVhcihfZGF0ZS5nZXRGdWxsWWVhcigpKTtcbiAgcmV0dXJuICtkYXRlIC0gK3V0Y0RhdGU7XG59XG4iLCAiaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5EYXkgfSBmcm9tIFwiLi9jb25zdGFudHMubWpzXCI7XG5pbXBvcnQgeyBzdGFydE9mRGF5IH0gZnJvbSBcIi4vc3RhcnRPZkRheS5tanNcIjtcbmltcG9ydCB7IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIGRheXMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciBkYXlzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHRpbWVzIGFyZSByZW1vdmVkXG4gKiBmcm9tIHRoZSBkYXRlcyBhbmQgdGhlbiB0aGUgZGlmZmVyZW5jZSBpbiBkYXlzIGlzIGNhbGN1bGF0ZWQuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGVMZWZ0IC0gVGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSBkYXRlUmlnaHQgLSBUaGUgZWFybGllciBkYXRlXG4gKlxuICogQHJldHVybnMgVGhlIG51bWJlciBvZiBjYWxlbmRhciBkYXlzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGNhbGVuZGFyIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDIgSnVseSAyMDExIDIzOjAwOjAwIGFuZCAyIEp1bHkgMjAxMiAwMDowMDowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxMiwgNiwgMiwgMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDIsIDIzLCAwKVxuICogKVxuICogLy89XHUwMDNlIDM2NlxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6NTk6MDAgYW5kIDMgSnVseSAyMDExIDAwOjAxOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKFxuICogICBuZXcgRGF0ZSgyMDExLCA2LCAzLCAwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMiwgMjMsIDU5KVxuICogKVxuICogLy89XHUwMDNlIDFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSB7XG4gIGNvbnN0IHN0YXJ0T2ZEYXlMZWZ0ID0gc3RhcnRPZkRheShkYXRlTGVmdCk7XG4gIGNvbnN0IHN0YXJ0T2ZEYXlSaWdodCA9IHN0YXJ0T2ZEYXkoZGF0ZVJpZ2h0KTtcblxuICBjb25zdCB0aW1lc3RhbXBMZWZ0ID1cbiAgICArc3RhcnRPZkRheUxlZnQgLSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKHN0YXJ0T2ZEYXlMZWZ0KTtcbiAgY29uc3QgdGltZXN0YW1wUmlnaHQgPVxuICAgICtzdGFydE9mRGF5UmlnaHQgLSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKHN0YXJ0T2ZEYXlSaWdodCk7XG5cbiAgLy8gUm91bmQgdGhlIG51bWJlciBvZiBkYXlzIHRvIHRoZSBuZWFyZXN0IGludGVnZXIgYmVjYXVzZSB0aGUgbnVtYmVyIG9mXG4gIC8vIG1pbGxpc2Vjb25kcyBpbiBhIGRheSBpcyBub3QgY29uc3RhbnQgKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2ZcbiAgLy8gdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KS5cbiAgcmV0dXJuIE1hdGgucm91bmQoKHRpbWVzdGFtcExlZnQgLSB0aW1lc3RhbXBSaWdodCkgLyBtaWxsaXNlY29uZHNJbkRheSk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzO1xuIiwgImltcG9ydCB7IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy5tanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5EYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgZGF5cyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgZGF5IHBlcmlvZHMgYmV0d2VlbiB0d28gZGF0ZXMuIEZyYWN0aW9uYWwgZGF5cyBhcmVcbiAqIHRydW5jYXRlZCB0b3dhcmRzIHplcm8uXG4gKlxuICogT25lIFwiZnVsbCBkYXlcIiBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiBhIGxvY2FsIHRpbWUgaW4gb25lIGRheSB0byB0aGUgc2FtZVxuICogbG9jYWwgdGltZSBvbiB0aGUgbmV4dCBvciBwcmV2aW91cyBkYXkuIEEgZnVsbCBkYXkgY2FuIHNvbWV0aW1lcyBiZSBsZXNzIHRoYW5cbiAqIG9yIG1vcmUgdGhhbiAyNCBob3VycyBpZiBhIGRheWxpZ2h0IHNhdmluZ3MgY2hhbmdlIGhhcHBlbnMgYmV0d2VlbiB0d28gZGF0ZXMuXG4gKlxuICogVG8gaWdub3JlIERTVCBhbmQgb25seSBtZWFzdXJlIGV4YWN0IDI0LWhvdXIgcGVyaW9kcywgdXNlIHRoaXMgaW5zdGVhZDpcbiAqIGBNYXRoLnRydW5jKGRpZmZlcmVuY2VJbkhvdXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpLzI0KXwwYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIGRhdGVSaWdodCAtIFRoZSBlYXJsaWVyIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGZ1bGwgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsIHRpbWV6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6MDA6MDAgYW5kIDIgSnVseSAyMDEyIDAwOjAwOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxMiwgNiwgMiwgMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDIsIDIzLCAwKVxuICogKVxuICogLy89XHUwMDNlIDM2NVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBmdWxsIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDIgSnVseSAyMDExIDIzOjU5OjAwIGFuZCAzIEp1bHkgMjAxMSAwMDowMTowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkRheXMoXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDMsIDAsIDEpLFxuICogICBuZXcgRGF0ZSgyMDExLCA2LCAyLCAyMywgNTkpXG4gKiApXG4gKiAvLz1cdTAwM2UgMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBmdWxsIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDEgTWFyY2ggMjAyMCAwOjAwIGFuZCAxIEp1bmUgMjAyMCAwOjAwID9cbiAqIC8vIE5vdGU6IGJlY2F1c2UgbG9jYWwgdGltZSBpcyB1c2VkLCB0aGVcbiAqIC8vIHJlc3VsdCB3aWxsIGFsd2F5cyBiZSA5MiBkYXlzLCBldmVuIGluXG4gKiAvLyB0aW1lIHpvbmVzIHdoZXJlIERTVCBzdGFydHMgYW5kIHRoZVxuICogLy8gcGVyaW9kIGhhcyBvbmx5IDkyKjI0LTEgaG91cnMuXG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5EYXlzKFxuICogICBuZXcgRGF0ZSgyMDIwLCA1LCAxKSxcbiAqICAgbmV3IERhdGUoMjAyMCwgMiwgMSlcbiAqIClcbiAqIC8vPVx1MDAzZSA5MlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZUluRGF5cyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSB7XG4gIGNvbnN0IF9kYXRlTGVmdCA9IHRvRGF0ZShkYXRlTGVmdCk7XG4gIGNvbnN0IF9kYXRlUmlnaHQgPSB0b0RhdGUoZGF0ZVJpZ2h0KTtcblxuICBjb25zdCBzaWduID0gY29tcGFyZUxvY2FsQXNjKF9kYXRlTGVmdCwgX2RhdGVSaWdodCk7XG4gIGNvbnN0IGRpZmZlcmVuY2UgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoX2RhdGVMZWZ0LCBfZGF0ZVJpZ2h0KSk7XG5cbiAgX2RhdGVMZWZ0LnNldERhdGUoX2RhdGVMZWZ0LmdldERhdGUoKSAtIHNpZ24gKiBkaWZmZXJlbmNlKTtcblxuICAvLyBNYXRoLmFicyhkaWZmIGluIGZ1bGwgZGF5cyAtIGRpZmYgaW4gY2FsZW5kYXIgZGF5cykgPT09IDEgaWYgbGFzdCBjYWxlbmRhciBkYXkgaXMgbm90IGZ1bGxcbiAgLy8gSWYgc28sIHJlc3VsdCBtdXN0IGJlIGRlY3JlYXNlZCBieSAxIGluIGFic29sdXRlIHZhbHVlXG4gIGNvbnN0IGlzTGFzdERheU5vdEZ1bGwgPSBOdW1iZXIoXG4gICAgY29tcGFyZUxvY2FsQXNjKF9kYXRlTGVmdCwgX2RhdGVSaWdodCkgPT09IC1zaWduLFxuICApO1xuICBjb25zdCByZXN1bHQgPSBzaWduICogKGRpZmZlcmVuY2UgLSBpc0xhc3REYXlOb3RGdWxsKTtcbiAgLy8gUHJldmVudCBuZWdhdGl2ZSB6ZXJvXG4gIHJldHVybiByZXN1bHQgPT09IDAgPyAwIDogcmVzdWx0O1xufVxuXG4vLyBMaWtlIGBjb21wYXJlQXNjYCBidXQgdXNlcyBsb2NhbCB0aW1lIG5vdCBVVEMsIHdoaWNoIGlzIG5lZWRlZFxuLy8gZm9yIGFjY3VyYXRlIGVxdWFsaXR5IGNvbXBhcmlzb25zIG9mIFVUQyB0aW1lc3RhbXBzIHRoYXQgZW5kIHVwXG4vLyBoYXZpbmcgdGhlIHNhbWUgcmVwcmVzZW50YXRpb24gaW4gbG9jYWwgdGltZSwgZS5nLiBvbmUgaG91ciBiZWZvcmVcbi8vIERTVCBlbmRzIHZzLiB0aGUgaW5zdGFudCB0aGF0IERTVCBlbmRzLlxuZnVuY3Rpb24gY29tcGFyZUxvY2FsQXNjKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIHtcbiAgY29uc3QgZGlmZiA9XG4gICAgZGF0ZUxlZnQuZ2V0RnVsbFllYXIoKSAtIGRhdGVSaWdodC5nZXRGdWxsWWVhcigpIHx8XG4gICAgZGF0ZUxlZnQuZ2V0TW9udGgoKSAtIGRhdGVSaWdodC5nZXRNb250aCgpIHx8XG4gICAgZGF0ZUxlZnQuZ2V0RGF0ZSgpIC0gZGF0ZVJpZ2h0LmdldERhdGUoKSB8fFxuICAgIGRhdGVMZWZ0LmdldEhvdXJzKCkgLSBkYXRlUmlnaHQuZ2V0SG91cnMoKSB8fFxuICAgIGRhdGVMZWZ0LmdldE1pbnV0ZXMoKSAtIGRhdGVSaWdodC5nZXRNaW51dGVzKCkgfHxcbiAgICBkYXRlTGVmdC5nZXRTZWNvbmRzKCkgLSBkYXRlUmlnaHQuZ2V0U2Vjb25kcygpIHx8XG4gICAgZGF0ZUxlZnQuZ2V0TWlsbGlzZWNvbmRzKCkgLSBkYXRlUmlnaHQuZ2V0TWlsbGlzZWNvbmRzKCk7XG5cbiAgaWYgKGRpZmYgXHUwMDNjIDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH0gZWxzZSBpZiAoZGlmZiBcdTAwM2UgMCkge1xuICAgIHJldHVybiAxO1xuICAgIC8vIFJldHVybiAwIGlmIGRpZmYgaXMgMDsgcmV0dXJuIE5hTiBpZiBkaWZmIGlzIE5hTlxuICB9IGVsc2Uge1xuICAgIHJldHVybiBkaWZmO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZGlmZmVyZW5jZUluRGF5cztcbiIsICJleHBvcnQgZnVuY3Rpb24gZ2V0Um91bmRpbmdNZXRob2QobWV0aG9kKSB7XG4gIHJldHVybiAobnVtYmVyKSA9XHUwMDNlIHtcbiAgICBjb25zdCByb3VuZCA9IG1ldGhvZCA/IE1hdGhbbWV0aG9kXSA6IE1hdGgudHJ1bmM7XG4gICAgY29uc3QgcmVzdWx0ID0gcm91bmQobnVtYmVyKTtcbiAgICAvLyBQcmV2ZW50IG5lZ2F0aXZlIHplcm9cbiAgICByZXR1cm4gcmVzdWx0ID09PSAwID8gMCA6IHJlc3VsdDtcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzXG4gKiBAY2F0ZWdvcnkgTWlsbGlzZWNvbmQgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlTGVmdCAtIFRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0gZGF0ZVJpZ2h0IC0gVGhlIGVhcmxpZXIgZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IG1pbGxpc2Vjb25kcyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTQgMTI6MzA6MjAuNjAwIGFuZCAyIEp1bHkgMjAxNCAxMjozMDoyMS43MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCAzMCwgMjEsIDcwMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCAzMCwgMjAsIDYwMClcbiAqIClcbiAqIC8vPVx1MDAzZSAxMTAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkge1xuICByZXR1cm4gK3RvRGF0ZShkYXRlTGVmdCkgLSArdG9EYXRlKGRhdGVSaWdodCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzO1xuIiwgImltcG9ydCB7IGdldFJvdW5kaW5nTWV0aG9kIH0gZnJvbSBcIi4vX2xpYi9nZXRSb3VuZGluZ01ldGhvZC5tanNcIjtcbmltcG9ydCB7IG1pbGxpc2Vjb25kc0luSG91ciB9IGZyb20gXCIuL2NvbnN0YW50cy5tanNcIjtcbmltcG9ydCB7IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcy5tanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIGRpZmZlcmVuY2VJbkhvdXJzfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluSG91cnNcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGhvdXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgaG91cnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGVMZWZ0IC0gVGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSBkYXRlUmlnaHQgLSBUaGUgZWFybGllciBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKlxuICogQHJldHVybnMgVGhlIG51bWJlciBvZiBob3Vyc1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBob3VycyBhcmUgYmV0d2VlbiAyIEp1bHkgMjAxNCAwNjo1MDowMCBhbmQgMiBKdWx5IDIwMTQgMTk6MDA6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5Ib3VycyhcbiAqICAgbmV3IERhdGUoMjAxNCwgNiwgMiwgMTksIDApLFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCA2LCA1MClcbiAqIClcbiAqIC8vPVx1MDAzZSAxMlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZUluSG91cnMoZGF0ZUxlZnQsIGRhdGVSaWdodCwgb3B0aW9ucykge1xuICBjb25zdCBkaWZmID1cbiAgICBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkgLyBtaWxsaXNlY29uZHNJbkhvdXI7XG4gIHJldHVybiBnZXRSb3VuZGluZ01ldGhvZChvcHRpb25zPy5yb3VuZGluZ01ldGhvZCkoZGlmZik7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZGlmZmVyZW5jZUluSG91cnM7XG4iLCAiaW1wb3J0IHsgZ2V0Um91bmRpbmdNZXRob2QgfSBmcm9tIFwiLi9fbGliL2dldFJvdW5kaW5nTWV0aG9kLm1qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5NaW51dGUgfSBmcm9tIFwiLi9jb25zdGFudHMubWpzXCI7XG5pbXBvcnQgeyBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMubWpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBkaWZmZXJlbmNlSW5NaW51dGVzfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgZGlmZmVyZW5jZUluTWludXRlc1xuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIG51bWJlciBvZiBtaW51dGVzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBzaWduZWQgbnVtYmVyIG9mIGZ1bGwgKHJvdW5kZWQgdG93YXJkcyAwKSBtaW51dGVzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlTGVmdCAtIFRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0gZGF0ZVJpZ2h0IC0gVGhlIGVhcmxpZXIgZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICpcbiAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgbWludXRlc1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBtaW51dGVzIGFyZSBiZXR3ZWVuIDIgSnVseSAyMDE0IDEyOjA3OjU5IGFuZCAyIEp1bHkgMjAxNCAxMjoyMDowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbk1pbnV0ZXMoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCAyMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCA3LCA1OSlcbiAqIClcbiAqIC8vPVx1MDAzZSAxMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBtaW51dGVzIGFyZSBiZXR3ZWVuIDEwOjAxOjU5IGFuZCAxMDowMDowMFxuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluTWludXRlcyhcbiAqICAgbmV3IERhdGUoMjAwMCwgMCwgMSwgMTAsIDAsIDApLFxuICogICBuZXcgRGF0ZSgyMDAwLCAwLCAxLCAxMCwgMSwgNTkpXG4gKiApXG4gKiAvLz1cdTAwM2UgLTFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbk1pbnV0ZXMoZGF0ZUxlZnQsIGRhdGVSaWdodCwgb3B0aW9ucykge1xuICBjb25zdCBkaWZmID1cbiAgICBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkgLyBtaWxsaXNlY29uZHNJbk1pbnV0ZTtcbiAgcmV0dXJuIGdldFJvdW5kaW5nTWV0aG9kKG9wdGlvbnM/LnJvdW5kaW5nTWV0aG9kKShkaWZmKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBkaWZmZXJlbmNlSW5NaW51dGVzO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBjb21wYXJlQXNjXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbXBhcmUgdGhlIHR3byBkYXRlcyBhbmQgcmV0dXJuIC0xLCAwIG9yIDEuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb21wYXJlIHRoZSB0d28gZGF0ZXMgYW5kIHJldHVybiAxIGlmIHRoZSBmaXJzdCBkYXRlIGlzIGFmdGVyIHRoZSBzZWNvbmQsXG4gKiAtMSBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBiZWZvcmUgdGhlIHNlY29uZCBvciAwIGlmIGRhdGVzIGFyZSBlcXVhbC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgZmlyc3QgZGF0ZSB0byBjb21wYXJlXG4gKiBAcGFyYW0gZGF0ZVJpZ2h0IC0gVGhlIHNlY29uZCBkYXRlIHRvIGNvbXBhcmVcbiAqXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbXBhcmUgMTEgRmVicnVhcnkgMTk4NyBhbmQgMTAgSnVseSAxOTg5OlxuICogY29uc3QgcmVzdWx0ID0gY29tcGFyZUFzYyhuZXcgRGF0ZSgxOTg3LCAxLCAxMSksIG5ldyBEYXRlKDE5ODksIDYsIDEwKSlcbiAqIC8vPVx1MDAzZSAtMVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTb3J0IHRoZSBhcnJheSBvZiBkYXRlczpcbiAqIGNvbnN0IHJlc3VsdCA9IFtcbiAqICAgbmV3IERhdGUoMTk5NSwgNiwgMiksXG4gKiAgIG5ldyBEYXRlKDE5ODcsIDEsIDExKSxcbiAqICAgbmV3IERhdGUoMTk4OSwgNiwgMTApXG4gKiBdLnNvcnQoY29tcGFyZUFzYylcbiAqIC8vPVx1MDAzZSBbXG4gKiAvLyAgIFdlZCBGZWIgMTEgMTk4NyAwMDowMDowMCxcbiAqIC8vICAgTW9uIEp1bCAxMCAxOTg5IDAwOjAwOjAwLFxuICogLy8gICBTdW4gSnVsIDAyIDE5OTUgMDA6MDA6MDBcbiAqIC8vIF1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVBc2MoZGF0ZUxlZnQsIGRhdGVSaWdodCkge1xuICBjb25zdCBfZGF0ZUxlZnQgPSB0b0RhdGUoZGF0ZUxlZnQpO1xuICBjb25zdCBfZGF0ZVJpZ2h0ID0gdG9EYXRlKGRhdGVSaWdodCk7XG5cbiAgY29uc3QgZGlmZiA9IF9kYXRlTGVmdC5nZXRUaW1lKCkgLSBfZGF0ZVJpZ2h0LmdldFRpbWUoKTtcblxuICBpZiAoZGlmZiBcdTAwM2MgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfSBlbHNlIGlmIChkaWZmIFx1MDAzZSAwKSB7XG4gICAgcmV0dXJuIDE7XG4gICAgLy8gUmV0dXJuIDAgaWYgZGlmZiBpcyAwOyByZXR1cm4gTmFOIGlmIGRpZmYgaXMgTmFOXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGRpZmY7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBjb21wYXJlQXNjO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRoc1xuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIG1vbnRocyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIG1vbnRocyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIGRhdGVSaWdodCAtIFRoZSBlYXJsaWVyIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGNhbGVuZGFyIG1vbnRoc1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBjYWxlbmRhciBtb250aHMgYXJlIGJldHdlZW4gMzEgSmFudWFyeSAyMDE0IGFuZCAxIFNlcHRlbWJlciAyMDE0P1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDgsIDEpLFxuICogICBuZXcgRGF0ZSgyMDE0LCAwLCAzMSlcbiAqIClcbiAqIC8vPVx1MDAzZSA4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSB7XG4gIGNvbnN0IF9kYXRlTGVmdCA9IHRvRGF0ZShkYXRlTGVmdCk7XG4gIGNvbnN0IF9kYXRlUmlnaHQgPSB0b0RhdGUoZGF0ZVJpZ2h0KTtcblxuICBjb25zdCB5ZWFyRGlmZiA9IF9kYXRlTGVmdC5nZXRGdWxsWWVhcigpIC0gX2RhdGVSaWdodC5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aERpZmYgPSBfZGF0ZUxlZnQuZ2V0TW9udGgoKSAtIF9kYXRlUmlnaHQuZ2V0TW9udGgoKTtcblxuICByZXR1cm4geWVhckRpZmYgKiAxMiArIG1vbnRoRGlmZjtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocztcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgZW5kT2ZEYXlcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBlbmQgb2YgYSBkYXkgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBlbmQgb2YgYSBkYXkgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBvcmlnaW5hbCBkYXRlXG4gKlxuICogQHJldHVybnMgVGhlIGVuZCBvZiBhIGRheVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZW5kIG9mIGEgZGF5IGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gZW5kT2ZEYXkobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPVx1MDAzZSBUdWUgU2VwIDAyIDIwMTQgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmRPZkRheShkYXRlKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBfZGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZW5kT2ZEYXk7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGVuZE9mTW9udGhcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIGVuZCBvZiBhIG1vbnRoIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZW5kIG9mIGEgbW9udGggZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBvcmlnaW5hbCBkYXRlXG4gKlxuICogQHJldHVybnMgVGhlIGVuZCBvZiBhIG1vbnRoXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBlbmQgb2YgYSBtb250aCBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGVuZE9mTW9udGgobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPVx1MDAzZSBUdWUgU2VwIDMwIDIwMTQgMjM6NTk6NTkuOTk5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmRPZk1vbnRoKGRhdGUpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGNvbnN0IG1vbnRoID0gX2RhdGUuZ2V0TW9udGgoKTtcbiAgX2RhdGUuc2V0RnVsbFllYXIoX2RhdGUuZ2V0RnVsbFllYXIoKSwgbW9udGggKyAxLCAwKTtcbiAgX2RhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGVuZE9mTW9udGg7XG4iLCAiaW1wb3J0IHsgZW5kT2ZEYXkgfSBmcm9tIFwiLi9lbmRPZkRheS5tanNcIjtcbmltcG9ydCB7IGVuZE9mTW9udGggfSBmcm9tIFwiLi9lbmRPZk1vbnRoLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGlzTGFzdERheU9mTW9udGhcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSB0aGUgbGFzdCBkYXkgb2YgYSBtb250aD9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIElzIHRoZSBnaXZlbiBkYXRlIHRoZSBsYXN0IGRheSBvZiBhIG1vbnRoP1xuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gY2hlY2tcblxuICogQHJldHVybnMgVGhlIGRhdGUgaXMgdGhlIGxhc3QgZGF5IG9mIGEgbW9udGhcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSXMgMjggRmVicnVhcnkgMjAxNCB0aGUgbGFzdCBkYXkgb2YgYSBtb250aD9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzTGFzdERheU9mTW9udGgobmV3IERhdGUoMjAxNCwgMSwgMjgpKVxuICogLy89XHUwMDNlIHRydWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTGFzdERheU9mTW9udGgoZGF0ZSkge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgcmV0dXJuICtlbmRPZkRheShfZGF0ZSkgPT09ICtlbmRPZk1vbnRoKF9kYXRlKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBpc0xhc3REYXlPZk1vbnRoO1xuIiwgImltcG9ydCB7IGNvbXBhcmVBc2MgfSBmcm9tIFwiLi9jb21wYXJlQXNjLm1qc1wiO1xuaW1wb3J0IHsgZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocy5tanNcIjtcbmltcG9ydCB7IGlzTGFzdERheU9mTW9udGggfSBmcm9tIFwiLi9pc0xhc3REYXlPZk1vbnRoLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbk1vbnRoc1xuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgbW9udGhzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgZnVsbCBtb250aHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMgdXNpbmcgdHJ1bmMgYXMgYSBkZWZhdWx0IHJvdW5kaW5nIG1ldGhvZC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIGRhdGVSaWdodCAtIFRoZSBlYXJsaWVyIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGZ1bGwgbW9udGhzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgbW9udGhzIGFyZSBiZXR3ZWVuIDMxIEphbnVhcnkgMjAxNCBhbmQgMSBTZXB0ZW1iZXIgMjAxND9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbk1vbnRocyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgbmV3IERhdGUoMjAxNCwgMCwgMzEpKVxuICogLy89XHUwMDNlIDdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbk1vbnRocyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSB7XG4gIGNvbnN0IF9kYXRlTGVmdCA9IHRvRGF0ZShkYXRlTGVmdCk7XG4gIGNvbnN0IF9kYXRlUmlnaHQgPSB0b0RhdGUoZGF0ZVJpZ2h0KTtcblxuICBjb25zdCBzaWduID0gY29tcGFyZUFzYyhfZGF0ZUxlZnQsIF9kYXRlUmlnaHQpO1xuICBjb25zdCBkaWZmZXJlbmNlID0gTWF0aC5hYnMoXG4gICAgZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMoX2RhdGVMZWZ0LCBfZGF0ZVJpZ2h0KSxcbiAgKTtcbiAgbGV0IHJlc3VsdDtcblxuICAvLyBDaGVjayBmb3IgdGhlIGRpZmZlcmVuY2Ugb2YgbGVzcyB0aGFuIG1vbnRoXG4gIGlmIChkaWZmZXJlbmNlIFx1MDAzYyAxKSB7XG4gICAgcmVzdWx0ID0gMDtcbiAgfSBlbHNlIHtcbiAgICBpZiAoX2RhdGVMZWZ0LmdldE1vbnRoKCkgPT09IDEgXHUwMDI2XHUwMDI2IF9kYXRlTGVmdC5nZXREYXRlKCkgXHUwMDNlIDI3KSB7XG4gICAgICAvLyBUaGlzIHdpbGwgY2hlY2sgaWYgdGhlIGRhdGUgaXMgZW5kIG9mIEZlYiBhbmQgYXNzaWduIGEgaGlnaGVyIGVuZCBvZiBtb250aCBkYXRlXG4gICAgICAvLyB0byBjb21wYXJlIGl0IHdpdGggSmFuXG4gICAgICBfZGF0ZUxlZnQuc2V0RGF0ZSgzMCk7XG4gICAgfVxuXG4gICAgX2RhdGVMZWZ0LnNldE1vbnRoKF9kYXRlTGVmdC5nZXRNb250aCgpIC0gc2lnbiAqIGRpZmZlcmVuY2UpO1xuXG4gICAgLy8gTWF0aC5hYnMoZGlmZiBpbiBmdWxsIG1vbnRocyAtIGRpZmYgaW4gY2FsZW5kYXIgbW9udGhzKSA9PT0gMSBpZiBsYXN0IGNhbGVuZGFyIG1vbnRoIGlzIG5vdCBmdWxsXG4gICAgLy8gSWYgc28sIHJlc3VsdCBtdXN0IGJlIGRlY3JlYXNlZCBieSAxIGluIGFic29sdXRlIHZhbHVlXG4gICAgbGV0IGlzTGFzdE1vbnRoTm90RnVsbCA9IGNvbXBhcmVBc2MoX2RhdGVMZWZ0LCBfZGF0ZVJpZ2h0KSA9PT0gLXNpZ247XG5cbiAgICAvLyBDaGVjayBmb3IgY2FzZXMgb2Ygb25lIGZ1bGwgY2FsZW5kYXIgbW9udGhcbiAgICBpZiAoXG4gICAgICBpc0xhc3REYXlPZk1vbnRoKHRvRGF0ZShkYXRlTGVmdCkpIFx1MDAyNlx1MDAyNlxuICAgICAgZGlmZmVyZW5jZSA9PT0gMSBcdTAwMjZcdTAwMjZcbiAgICAgIGNvbXBhcmVBc2MoZGF0ZUxlZnQsIF9kYXRlUmlnaHQpID09PSAxXG4gICAgKSB7XG4gICAgICBpc0xhc3RNb250aE5vdEZ1bGwgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXN1bHQgPSBzaWduICogKGRpZmZlcmVuY2UgLSBOdW1iZXIoaXNMYXN0TW9udGhOb3RGdWxsKSk7XG4gIH1cblxuICAvLyBQcmV2ZW50IG5lZ2F0aXZlIHplcm9cbiAgcmV0dXJuIHJlc3VsdCA9PT0gMCA/IDAgOiByZXN1bHQ7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZGlmZmVyZW5jZUluTW9udGhzO1xuIiwgImltcG9ydCB7IGdldFJvdW5kaW5nTWV0aG9kIH0gZnJvbSBcIi4vX2xpYi9nZXRSb3VuZGluZ01ldGhvZC5tanNcIjtcbmltcG9ydCB7IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcy5tanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIGRpZmZlcmVuY2VJblNlY29uZHN9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5TZWNvbmRzXG4gKiBAY2F0ZWdvcnkgU2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBzZWNvbmRzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlTGVmdCAtIFRoZSBsYXRlciBkYXRlXG4gKiBAcGFyYW0gZGF0ZVJpZ2h0IC0gVGhlIGVhcmxpZXIgZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICpcbiAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2Ygc2Vjb25kc1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIb3cgbWFueSBzZWNvbmRzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxNCAxMjozMDowNy45OTkgYW5kIDIgSnVseSAyMDE0IDEyOjMwOjIwLjAwMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJblNlY29uZHMoXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDEyLCAzMCwgMjAsIDApLFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCAxMiwgMzAsIDcsIDk5OSlcbiAqIClcbiAqIC8vPVx1MDAzZSAxMlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZUluU2Vjb25kcyhkYXRlTGVmdCwgZGF0ZVJpZ2h0LCBvcHRpb25zKSB7XG4gIGNvbnN0IGRpZmYgPSBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkgLyAxMDAwO1xuICByZXR1cm4gZ2V0Um91bmRpbmdNZXRob2Qob3B0aW9ucz8ucm91bmRpbmdNZXRob2QpKGRpZmYpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGRpZmZlcmVuY2VJblNlY29uZHM7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnNcbiAqIEBjYXRlZ29yeSBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIHllYXJzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgeWVhcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGVMZWZ0IC0gVGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSBkYXRlUmlnaHQgLSBUaGUgZWFybGllciBkYXRlXG5cbiAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgY2FsZW5kYXIgeWVhcnNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgY2FsZW5kYXIgeWVhcnMgYXJlIGJldHdlZW4gMzEgRGVjZW1iZXIgMjAxMyBhbmQgMTEgRmVicnVhcnkgMjAxNT9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMoXG4gKiAgIG5ldyBEYXRlKDIwMTUsIDEsIDExKSxcbiAqICAgbmV3IERhdGUoMjAxMywgMTEsIDMxKVxuICogKVxuICogLy89XHUwMDNlIDJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnMoZGF0ZUxlZnQsIGRhdGVSaWdodCkge1xuICBjb25zdCBfZGF0ZUxlZnQgPSB0b0RhdGUoZGF0ZUxlZnQpO1xuICBjb25zdCBfZGF0ZVJpZ2h0ID0gdG9EYXRlKGRhdGVSaWdodCk7XG5cbiAgcmV0dXJuIF9kYXRlTGVmdC5nZXRGdWxsWWVhcigpIC0gX2RhdGVSaWdodC5nZXRGdWxsWWVhcigpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGRpZmZlcmVuY2VJbkNhbGVuZGFyWWVhcnM7XG4iLCAiaW1wb3J0IHsgY29tcGFyZUFzYyB9IGZyb20gXCIuL2NvbXBhcmVBc2MubWpzXCI7XG5pbXBvcnQgeyBkaWZmZXJlbmNlSW5DYWxlbmRhclllYXJzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycy5tanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5ZZWFyc1xuICogQGNhdGVnb3J5IFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgZnVsbCB5ZWFycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgeWVhcnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGVMZWZ0IC0gVGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSBkYXRlUmlnaHQgLSBUaGUgZWFybGllciBkYXRlXG4gKlxuICogQHJldHVybnMgVGhlIG51bWJlciBvZiBmdWxsIHllYXJzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgeWVhcnMgYXJlIGJldHdlZW4gMzEgRGVjZW1iZXIgMjAxMyBhbmQgMTEgRmVicnVhcnkgMjAxNT9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJblllYXJzKG5ldyBEYXRlKDIwMTUsIDEsIDExKSwgbmV3IERhdGUoMjAxMywgMTEsIDMxKSlcbiAqIC8vPVx1MDAzZSAxXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmZXJlbmNlSW5ZZWFycyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSB7XG4gIGNvbnN0IF9kYXRlTGVmdCA9IHRvRGF0ZShkYXRlTGVmdCk7XG4gIGNvbnN0IF9kYXRlUmlnaHQgPSB0b0RhdGUoZGF0ZVJpZ2h0KTtcblxuICBjb25zdCBzaWduID0gY29tcGFyZUFzYyhfZGF0ZUxlZnQsIF9kYXRlUmlnaHQpO1xuICBjb25zdCBkaWZmZXJlbmNlID0gTWF0aC5hYnMoZGlmZmVyZW5jZUluQ2FsZW5kYXJZZWFycyhfZGF0ZUxlZnQsIF9kYXRlUmlnaHQpKTtcblxuICAvLyBTZXQgYm90aCBkYXRlcyB0byBhIHZhbGlkIGxlYXAgeWVhciBmb3IgYWNjdXJhdGUgY29tcGFyaXNvbiB3aGVuIGRlYWxpbmdcbiAgLy8gd2l0aCBsZWFwIGRheXNcbiAgX2RhdGVMZWZ0LnNldEZ1bGxZZWFyKDE1ODQpO1xuICBfZGF0ZVJpZ2h0LnNldEZ1bGxZZWFyKDE1ODQpO1xuXG4gIC8vIE1hdGguYWJzKGRpZmYgaW4gZnVsbCB5ZWFycyAtIGRpZmYgaW4gY2FsZW5kYXIgeWVhcnMpID09PSAxIGlmIGxhc3QgY2FsZW5kYXIgeWVhciBpcyBub3QgZnVsbFxuICAvLyBJZiBzbywgcmVzdWx0IG11c3QgYmUgZGVjcmVhc2VkIGJ5IDEgaW4gYWJzb2x1dGUgdmFsdWVcbiAgY29uc3QgaXNMYXN0WWVhck5vdEZ1bGwgPSBjb21wYXJlQXNjKF9kYXRlTGVmdCwgX2RhdGVSaWdodCkgPT09IC1zaWduO1xuICBjb25zdCByZXN1bHQgPSBzaWduICogKGRpZmZlcmVuY2UgLSAraXNMYXN0WWVhck5vdEZ1bGwpO1xuXG4gIC8vIFByZXZlbnQgbmVnYXRpdmUgemVyb1xuICByZXR1cm4gcmVzdWx0ID09PSAwID8gMCA6IHJlc3VsdDtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBkaWZmZXJlbmNlSW5ZZWFycztcbiIsICJpbXBvcnQgeyBhZGQgfSBmcm9tIFwiLi9hZGQubWpzXCI7XG5pbXBvcnQgeyBkaWZmZXJlbmNlSW5EYXlzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluRGF5cy5tanNcIjtcbmltcG9ydCB7IGRpZmZlcmVuY2VJbkhvdXJzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluSG91cnMubWpzXCI7XG5pbXBvcnQgeyBkaWZmZXJlbmNlSW5NaW51dGVzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluTWludXRlcy5tanNcIjtcbmltcG9ydCB7IGRpZmZlcmVuY2VJbk1vbnRocyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbk1vbnRocy5tanNcIjtcbmltcG9ydCB7IGRpZmZlcmVuY2VJblNlY29uZHMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5TZWNvbmRzLm1qc1wiO1xuaW1wb3J0IHsgZGlmZmVyZW5jZUluWWVhcnMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5ZZWFycy5tanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBpbnRlcnZhbFRvRHVyYXRpb25cbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCBpbnRlcnZhbCB0byBkdXJhdGlvblxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCBhIGludGVydmFsIG9iamVjdCB0byBhIGR1cmF0aW9uIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gaW50ZXJ2YWwgLSBUaGUgaW50ZXJ2YWwgdG8gY29udmVydCB0byBkdXJhdGlvblxuICpcbiAqIEByZXR1cm5zIFRoZSBkdXJhdGlvbiBvYmplY3RcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gR2V0IHRoZSBkdXJhdGlvbiBiZXR3ZWVuIEphbnVhcnkgMTUsIDE5MjkgYW5kIEFwcmlsIDQsIDE5NjguXG4gKiBpbnRlcnZhbFRvRHVyYXRpb24oe1xuICogICBzdGFydDogbmV3IERhdGUoMTkyOSwgMCwgMTUsIDEyLCAwLCAwKSxcbiAqICAgZW5kOiBuZXcgRGF0ZSgxOTY4LCAzLCA0LCAxOSwgNSwgMClcbiAqIH0pXG4gKiAvLyA9XHUwMDNlIHsgeWVhcnM6IDM5LCBtb250aHM6IDIsIGRheXM6IDIwLCBob3VyczogNywgbWludXRlczogNSwgc2Vjb25kczogMCB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnRlcnZhbFRvRHVyYXRpb24oaW50ZXJ2YWwpIHtcbiAgY29uc3Qgc3RhcnQgPSB0b0RhdGUoaW50ZXJ2YWwuc3RhcnQpO1xuICBjb25zdCBlbmQgPSB0b0RhdGUoaW50ZXJ2YWwuZW5kKTtcblxuICBjb25zdCBkdXJhdGlvbiA9IHt9O1xuXG4gIGNvbnN0IHllYXJzID0gZGlmZmVyZW5jZUluWWVhcnMoZW5kLCBzdGFydCk7XG4gIGlmICh5ZWFycykgZHVyYXRpb24ueWVhcnMgPSB5ZWFycztcblxuICBjb25zdCByZW1haW5pbmdNb250aHMgPSBhZGQoc3RhcnQsIHsgeWVhcnM6IGR1cmF0aW9uLnllYXJzIH0pO1xuXG4gIGNvbnN0IG1vbnRocyA9IGRpZmZlcmVuY2VJbk1vbnRocyhlbmQsIHJlbWFpbmluZ01vbnRocyk7XG4gIGlmIChtb250aHMpIGR1cmF0aW9uLm1vbnRocyA9IG1vbnRocztcblxuICBjb25zdCByZW1haW5pbmdEYXlzID0gYWRkKHJlbWFpbmluZ01vbnRocywgeyBtb250aHM6IGR1cmF0aW9uLm1vbnRocyB9KTtcblxuICBjb25zdCBkYXlzID0gZGlmZmVyZW5jZUluRGF5cyhlbmQsIHJlbWFpbmluZ0RheXMpO1xuICBpZiAoZGF5cykgZHVyYXRpb24uZGF5cyA9IGRheXM7XG5cbiAgY29uc3QgcmVtYWluaW5nSG91cnMgPSBhZGQocmVtYWluaW5nRGF5cywgeyBkYXlzOiBkdXJhdGlvbi5kYXlzIH0pO1xuXG4gIGNvbnN0IGhvdXJzID0gZGlmZmVyZW5jZUluSG91cnMoZW5kLCByZW1haW5pbmdIb3Vycyk7XG4gIGlmIChob3VycykgZHVyYXRpb24uaG91cnMgPSBob3VycztcblxuICBjb25zdCByZW1haW5pbmdNaW51dGVzID0gYWRkKHJlbWFpbmluZ0hvdXJzLCB7IGhvdXJzOiBkdXJhdGlvbi5ob3VycyB9KTtcblxuICBjb25zdCBtaW51dGVzID0gZGlmZmVyZW5jZUluTWludXRlcyhlbmQsIHJlbWFpbmluZ01pbnV0ZXMpO1xuICBpZiAobWludXRlcykgZHVyYXRpb24ubWludXRlcyA9IG1pbnV0ZXM7XG5cbiAgY29uc3QgcmVtYWluaW5nU2Vjb25kcyA9IGFkZChyZW1haW5pbmdNaW51dGVzLCB7IG1pbnV0ZXM6IGR1cmF0aW9uLm1pbnV0ZXMgfSk7XG5cbiAgY29uc3Qgc2Vjb25kcyA9IGRpZmZlcmVuY2VJblNlY29uZHMoZW5kLCByZW1haW5pbmdTZWNvbmRzKTtcbiAgaWYgKHNlY29uZHMpIGR1cmF0aW9uLnNlY29uZHMgPSBzZWNvbmRzO1xuXG4gIHJldHVybiBkdXJhdGlvbjtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBpbnRlcnZhbFRvRHVyYXRpb247XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBpc0FmdGVyXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBmaXJzdCBkYXRlIGFmdGVyIHRoZSBzZWNvbmQgb25lP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSXMgdGhlIGZpcnN0IGRhdGUgYWZ0ZXIgdGhlIHNlY29uZCBvbmU/XG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0aGF0IHNob3VsZCBiZSBhZnRlciB0aGUgb3RoZXIgb25lIHRvIHJldHVybiB0cnVlXG4gKiBAcGFyYW0gZGF0ZVRvQ29tcGFyZSAtIFRoZSBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICpcbiAqIEByZXR1cm5zIFRoZSBmaXJzdCBkYXRlIGlzIGFmdGVyIHRoZSBzZWNvbmQgZGF0ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJcyAxMCBKdWx5IDE5ODkgYWZ0ZXIgMTEgRmVicnVhcnkgMTk4Nz9cbiAqIGNvbnN0IHJlc3VsdCA9IGlzQWZ0ZXIobmV3IERhdGUoMTk4OSwgNiwgMTApLCBuZXcgRGF0ZSgxOTg3LCAxLCAxMSkpXG4gKiAvLz1cdTAwM2UgdHJ1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBZnRlcihkYXRlLCBkYXRlVG9Db21wYXJlKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCBfZGF0ZVRvQ29tcGFyZSA9IHRvRGF0ZShkYXRlVG9Db21wYXJlKTtcbiAgcmV0dXJuIF9kYXRlLmdldFRpbWUoKSBcdTAwM2UgX2RhdGVUb0NvbXBhcmUuZ2V0VGltZSgpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGlzQWZ0ZXI7XG4iLCAiLyoqXG4gKiBAbmFtZSBpc0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIHZhbHVlIGEgZGF0ZT9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZS4gVGhlIGZ1bmN0aW9uIHdvcmtzIGZvciBkYXRlcyB0cmFuc2ZlcnJlZCBhY3Jvc3MgaWZyYW1lcy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2tcbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIGRhdGVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIGEgdmFsaWQgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzRGF0ZShuZXcgRGF0ZSgpKVxuICogLy89XHUwMDNlIHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIGFuIGludmFsaWQgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzRGF0ZShuZXcgRGF0ZShOYU4pKVxuICogLy89XHUwMDNlIHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHNvbWUgdmFsdWU6XG4gKiBjb25zdCByZXN1bHQgPSBpc0RhdGUoJzIwMTQtMDItMzEnKVxuICogLy89XHUwMDNlIGZhbHNlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBhbiBvYmplY3Q6XG4gKiBjb25zdCByZXN1bHQgPSBpc0RhdGUoe30pXG4gKiAvLz1cdTAwM2UgZmFsc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZSh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2XG4gICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBpc0RhdGU7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgImltcG9ydCB7IGlzRGF0ZSB9IGZyb20gXCIuL2lzRGF0ZS5tanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBpc1ZhbGlkXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIHZhbGlkP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyBmYWxzZSBpZiBhcmd1bWVudCBpcyBJbnZhbGlkIERhdGUgYW5kIHRydWUgb3RoZXJ3aXNlLlxuICogQXJndW1lbnQgaXMgY29udmVydGVkIHRvIERhdGUgdXNpbmcgYHRvRGF0ZWAuIFNlZSBbdG9EYXRlXShodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3RvRGF0ZSlcbiAqIEludmFsaWQgRGF0ZSBpcyBhIERhdGUsIHdob3NlIHRpbWUgdmFsdWUgaXMgTmFOLlxuICpcbiAqIFRpbWUgdmFsdWUgb2YgRGF0ZTogaHR0cDovL2VzNS5naXRodWIuaW8vI3gxNS45LjEuMVxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gY2hlY2tcbiAqXG4gKiBAcmV0dXJucyBUaGUgZGF0ZSBpcyB2YWxpZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIHZhbGlkIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc1ZhbGlkKG5ldyBEYXRlKDIwMTQsIDEsIDMxKSlcbiAqIC8vPVx1MDAzZSB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciB0aGUgdmFsdWUsIGNvbnZlcnRhYmxlIGludG8gYSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNWYWxpZCgxMzkzODA0ODAwMDAwKVxuICogLy89XHUwMDNlIHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHRoZSBpbnZhbGlkIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc1ZhbGlkKG5ldyBEYXRlKCcnKSlcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZChkYXRlKSB7XG4gIGlmICghaXNEYXRlKGRhdGUpIFx1MDAyNlx1MDAyNiB0eXBlb2YgZGF0ZSAhPT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgcmV0dXJuICFpc05hTihOdW1iZXIoX2RhdGUpKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBpc1ZhbGlkO1xuIiwgIi8qKlxuICogQG5hbWUgY29uc3RydWN0RnJvbVxuICogQGNhdGVnb3J5IEdlbmVyaWMgSGVscGVyc1xuICogQHN1bW1hcnkgQ29uc3RydWN0cyBhIGRhdGUgdXNpbmcgdGhlIHJlZmVyZW5jZSBkYXRlIGFuZCB0aGUgdmFsdWVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBmdW5jdGlvbiBjb25zdHJ1Y3RzIGEgbmV3IGRhdGUgdXNpbmcgdGhlIGNvbnN0cnVjdG9yIGZyb20gdGhlIHJlZmVyZW5jZVxuICogZGF0ZSBhbmQgdGhlIGdpdmVuIHZhbHVlLiBJdCBoZWxwcyB0byBidWlsZCBnZW5lcmljIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdFxuICogZGF0ZSBleHRlbnNpb25zLlxuICpcbiAqIEl0IGRlZmF1bHRzIHRvIGBEYXRlYCBpZiB0aGUgcGFzc2VkIHJlZmVyZW5jZSBkYXRlIGlzIGEgbnVtYmVyIG9yIGEgc3RyaW5nLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIHJlZmVyZW5jZSBkYXRlIHRvIHRha2UgY29uc3RydWN0b3IgZnJvbVxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNyZWF0ZSB0aGUgZGF0ZVxuICpcbiAqIEByZXR1cm5zIERhdGUgaW5pdGlhbGl6ZWQgdXNpbmcgdGhlIGdpdmVuIGRhdGUgYW5kIHZhbHVlXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tICdkYXRlLWZucydcbiAqXG4gKiAvLyBBIGZ1bmN0aW9uIHRoYXQgY2xvbmVzIGEgZGF0ZSBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCB0eXBlXG4gKiBmdW5jdGlvbiBjbG9uZURhdGVcdTAwM2NEYXRlVHlwZSBleHRlbmRzIERhdGUoZGF0ZTogRGF0ZVR5cGUpOiBEYXRlVHlwZSB7XG4gKiAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKFxuICogICAgIGRhdGUsIC8vIFVzZSBjb250cnVzdG9yIGZyb20gdGhlIGdpdmVuIGRhdGVcbiAqICAgICBkYXRlLmdldFRpbWUoKSAvLyBVc2UgdGhlIGRhdGUgdmFsdWUgdG8gY3JlYXRlIGEgbmV3IGRhdGVcbiAqICAgKVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RnJvbShkYXRlLCB2YWx1ZSkge1xuICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gbmV3IGRhdGUuY29uc3RydWN0b3IodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBjb25zdHJ1Y3RGcm9tO1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5pbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBnZXREYXlzSW5Nb250aFxuICogQGNhdGVnb3J5IE1vbnRoIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBnaXZlbiBkYXRlXG4gKlxuICogQHJldHVybnMgVGhlIG51bWJlciBvZiBkYXlzIGluIGEgbW9udGhcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZGF5cyBhcmUgaW4gRmVicnVhcnkgMjAwMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldERheXNJbk1vbnRoKG5ldyBEYXRlKDIwMDAsIDEpKVxuICogLy89XHUwMDNlIDI5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXlzSW5Nb250aChkYXRlKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCB5ZWFyID0gX2RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgbW9udGhJbmRleCA9IF9kYXRlLmdldE1vbnRoKCk7XG4gIGNvbnN0IGxhc3REYXlPZk1vbnRoID0gY29uc3RydWN0RnJvbShkYXRlLCAwKTtcbiAgbGFzdERheU9mTW9udGguc2V0RnVsbFllYXIoeWVhciwgbW9udGhJbmRleCArIDEsIDApO1xuICBsYXN0RGF5T2ZNb250aC5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGxhc3REYXlPZk1vbnRoLmdldERhdGUoKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBnZXREYXlzSW5Nb250aDtcbiIsICJpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5tanNcIjtcbmltcG9ydCB7IGdldERheXNJbk1vbnRoIH0gZnJvbSBcIi4vZ2V0RGF5c0luTW9udGgubWpzXCI7XG5pbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgc2V0TW9udGhcbiAqIEBjYXRlZ29yeSBNb250aCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIG1vbnRoIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBtb250aCB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBtb250aCAtIFRoZSBtb250aCBpbmRleCB0byBzZXQgKDAtMTEpXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIG1vbnRoIHNldFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgRmVicnVhcnkgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldE1vbnRoKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAxKVxuICogLy89XHUwMDNlIFNhdCBGZWIgMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0TW9udGgoZGF0ZSwgbW9udGgpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGNvbnN0IHllYXIgPSBfZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBkYXkgPSBfZGF0ZS5nZXREYXRlKCk7XG5cbiAgY29uc3QgZGF0ZVdpdGhEZXNpcmVkTW9udGggPSBjb25zdHJ1Y3RGcm9tKGRhdGUsIDApO1xuICBkYXRlV2l0aERlc2lyZWRNb250aC5zZXRGdWxsWWVhcih5ZWFyLCBtb250aCwgMTUpO1xuICBkYXRlV2l0aERlc2lyZWRNb250aC5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgY29uc3QgZGF5c0luTW9udGggPSBnZXREYXlzSW5Nb250aChkYXRlV2l0aERlc2lyZWRNb250aCk7XG4gIC8vIFNldCB0aGUgbGFzdCBkYXkgb2YgdGhlIG5ldyBtb250aFxuICAvLyBpZiB0aGUgb3JpZ2luYWwgZGF0ZSB3YXMgdGhlIGxhc3QgZGF5IG9mIHRoZSBsb25nZXIgbW9udGhcbiAgX2RhdGUuc2V0TW9udGgobW9udGgsIE1hdGgubWluKGRheSwgZGF5c0luTW9udGgpKTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHNldE1vbnRoO1xuIiwgImltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuaW1wb3J0IHsgc2V0TW9udGggfSBmcm9tIFwiLi9zZXRNb250aC5tanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBzZXRcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IGRhdGUgdmFsdWVzIHRvIGEgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCBkYXRlIHZhbHVlcyB0byBhIGdpdmVuIGRhdGUuXG4gKlxuICogU2V0cyB0aW1lIHZhbHVlcyB0byBkYXRlIGZyb20gb2JqZWN0IGB2YWx1ZXNgLlxuICogQSB2YWx1ZSBpcyBub3Qgc2V0IGlmIGl0IGlzIHVuZGVmaW5lZCBvciBudWxsIG9yIGRvZXNuJ3QgZXhpc3QgaW4gYHZhbHVlc2AuXG4gKlxuICogTm90ZSBhYm91dCBidW5kbGUgc2l6ZTogYHNldGAgZG9lcyBub3QgaW50ZXJuYWxseSB1c2UgYHNldFhgIGZ1bmN0aW9ucyBmcm9tIGRhdGUtZm5zIGJ1dCBpbnN0ZWFkIG9wdHNcbiAqIHRvIHVzZSBuYXRpdmUgYERhdGUjc2V0WGAgbWV0aG9kcy4gSWYgeW91IHVzZSB0aGlzIGZ1bmN0aW9uLCB5b3UgbWF5IG5vdCB3YW50IHRvIGluY2x1ZGUgdGhlXG4gKiBvdGhlciBgc2V0WGAgZnVuY3Rpb25zIHRoYXQgZGF0ZS1mbnMgcHJvdmlkZXMgaWYgeW91IGFyZSBjb25jZXJuZWQgYWJvdXQgdGhlIGJ1bmRsZSBzaXplLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHZhbHVlcyAtIFRoZSBkYXRlIHZhbHVlcyB0byBiZSBzZXRcbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCBvcHRpb25zIHNldFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUcmFuc2Zvcm0gMSBTZXB0ZW1iZXIgMjAxNCBpbnRvIDIwIE9jdG9iZXIgMjAxNSBpbiBhIHNpbmdsZSBsaW5lOlxuICogY29uc3QgcmVzdWx0ID0gc2V0KG5ldyBEYXRlKDIwMTQsIDgsIDIwKSwgeyB5ZWFyOiAyMDE1LCBtb250aDogOSwgZGF0ZTogMjAgfSlcbiAqIC8vPVx1MDAzZSBUdWUgT2N0IDIwIDIwMTUgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IDEyIFBNIHRvIDEgU2VwdGVtYmVyIDIwMTQgMDE6MjM6NDUgdG8gMSBTZXB0ZW1iZXIgMjAxNCAxMjowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldChuZXcgRGF0ZSgyMDE0LCA4LCAxLCAxLCAyMywgNDUpLCB7IGhvdXJzOiAxMiB9KVxuICogLy89XHUwMDNlIE1vbiBTZXAgMDEgMjAxNCAxMjoyMzo0NVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXQoZGF0ZSwgdmFsdWVzKSB7XG4gIGxldCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcblxuICAvLyBDaGVjayBpZiBkYXRlIGlzIEludmFsaWQgRGF0ZSBiZWNhdXNlIERhdGUucHJvdG90eXBlLnNldEZ1bGxZZWFyIGlnbm9yZXMgdGhlIHZhbHVlIG9mIEludmFsaWQgRGF0ZVxuICBpZiAoaXNOYU4oK19kYXRlKSkge1xuICAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKGRhdGUsIE5hTik7XG4gIH1cblxuICBpZiAodmFsdWVzLnllYXIgIT0gbnVsbCkge1xuICAgIF9kYXRlLnNldEZ1bGxZZWFyKHZhbHVlcy55ZWFyKTtcbiAgfVxuXG4gIGlmICh2YWx1ZXMubW9udGggIT0gbnVsbCkge1xuICAgIF9kYXRlID0gc2V0TW9udGgoX2RhdGUsIHZhbHVlcy5tb250aCk7XG4gIH1cblxuICBpZiAodmFsdWVzLmRhdGUgIT0gbnVsbCkge1xuICAgIF9kYXRlLnNldERhdGUodmFsdWVzLmRhdGUpO1xuICB9XG5cbiAgaWYgKHZhbHVlcy5ob3VycyAhPSBudWxsKSB7XG4gICAgX2RhdGUuc2V0SG91cnModmFsdWVzLmhvdXJzKTtcbiAgfVxuXG4gIGlmICh2YWx1ZXMubWludXRlcyAhPSBudWxsKSB7XG4gICAgX2RhdGUuc2V0TWludXRlcyh2YWx1ZXMubWludXRlcyk7XG4gIH1cblxuICBpZiAodmFsdWVzLnNlY29uZHMgIT0gbnVsbCkge1xuICAgIF9kYXRlLnNldFNlY29uZHModmFsdWVzLnNlY29uZHMpO1xuICB9XG5cbiAgaWYgKHZhbHVlcy5taWxsaXNlY29uZHMgIT0gbnVsbCkge1xuICAgIF9kYXRlLnNldE1pbGxpc2Vjb25kcyh2YWx1ZXMubWlsbGlzZWNvbmRzKTtcbiAgfVxuXG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBzZXQ7XG4iLCAiLyoqXG4gKiBAbW9kdWxlIGNvbnN0YW50c1xuICogQHN1bW1hcnkgVXNlZnVsIGNvbnN0YW50c1xuICogQGRlc2NyaXB0aW9uXG4gKiBDb2xsZWN0aW9uIG9mIHVzZWZ1bCBkYXRlIGNvbnN0YW50cy5cbiAqXG4gKiBUaGUgY29uc3RhbnRzIGNvdWxkIGJlIGltcG9ydGVkIGZyb20gYGRhdGUtZm5zL2NvbnN0YW50c2A6XG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IG1heFRpbWUsIG1pblRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogZnVuY3Rpb24gaXNBbGxvd2VkVGltZSh0aW1lKSB7XG4gKiAgIHJldHVybiB0aW1lIFx1MDAzYz0gbWF4VGltZSBcdTAwMjZcdTAwMjYgdGltZSBcdTAwM2U9IG1pblRpbWU7XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgZGF5c0luV2Vla1xuICogQHN1bW1hcnkgRGF5cyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5XZWVrID0gNztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIGRheXNJblllYXJcbiAqIEBzdW1tYXJ5IERheXMgaW4gMSB5ZWFyLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSG93IG1hbnkgZGF5cyBpbiBhIHllYXIuXG4gKlxuICogT25lIHllYXJzIGVxdWFscyAzNjUuMjQyNSBkYXlzIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpcbiAqXG4gKiBcdTAwM2UgTGVhcCB5ZWFyIG9jY3VyZXMgZXZlcnkgNCB5ZWFycywgZXhjZXB0IGZvciB5ZWFycyB0aGF0IGFyZSBkaXZpc2FibGUgYnkgMTAwIGFuZCBub3QgZGl2aXNhYmxlIGJ5IDQwMC5cbiAqIFx1MDAzZSAxIG1lYW4geWVhciA9ICgzNjUrMS80LTEvMTAwKzEvNDAwKSBkYXlzID0gMzY1LjI0MjUgZGF5c1xuICovXG5leHBvcnQgY29uc3QgZGF5c0luWWVhciA9IDM2NS4yNDI1O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWF4VGltZVxuICogQHN1bW1hcnkgTWF4aW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IG1heFRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogY29uc3QgaXNWYWxpZCA9IDg2NDAwMDAwMDAwMDAwMDEgXHUwMDNjPSBtYXhUaW1lO1xuICogLy89XHUwMDNlIGZhbHNlXG4gKlxuICogbmV3IERhdGUoODY0MDAwMDAwMDAwMDAwMSk7XG4gKiAvLz1cdTAwM2UgSW52YWxpZCBEYXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtYXhUaW1lID0gTWF0aC5wb3coMTAsIDgpICogMjQgKiA2MCAqIDYwICogMTAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pblRpbWVcbiAqIEBzdW1tYXJ5IE1pbmltdW0gYWxsb3dlZCB0aW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBtaW5UaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGNvbnN0IGlzVmFsaWQgPSAtODY0MDAwMDAwMDAwMDAwMSBcdTAwM2U9IG1pblRpbWU7XG4gKiAvLz1cdTAwM2UgZmFsc2VcbiAqXG4gKiBuZXcgRGF0ZSgtODY0MDAwMDAwMDAwMDAwMSlcbiAqIC8vPVx1MDAzZSBJbnZhbGlkIERhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1pblRpbWUgPSAtbWF4VGltZTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luV2Vla1xuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luV2VlayA9IDYwNDgwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luRGF5XG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbkRheSA9IDg2NDAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5NaW51dGVcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIG1pbnV0ZVxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5NaW51dGUgPSA2MDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luSG91clxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgaG91clxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5Ib3VyID0gMzYwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luU2Vjb25kXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBzZWNvbmRcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luU2Vjb25kID0gMTAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJblllYXJcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luWWVhciA9IDUyNTYwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbk1vbnRoXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgbW9udGguXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5Nb250aCA9IDQzMjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luRGF5XG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luRGF5ID0gMTQ0MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbkhvdXJcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBob3VyLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luSG91ciA9IDYwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbW9udGhzSW5RdWFydGVyXG4gKiBAc3VtbWFyeSBNb250aHMgaW4gMSBxdWFydGVyLlxuICovXG5leHBvcnQgY29uc3QgbW9udGhzSW5RdWFydGVyID0gMztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1vbnRoc0luWWVhclxuICogQHN1bW1hcnkgTW9udGhzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1vbnRoc0luWWVhciA9IDEyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgcXVhcnRlcnNJblllYXJcbiAqIEBzdW1tYXJ5IFF1YXJ0ZXJzIGluIDEgeWVhclxuICovXG5leHBvcnQgY29uc3QgcXVhcnRlcnNJblllYXIgPSA0O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luSG91clxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIGhvdXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5Ib3VyID0gMzYwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbk1pbnV0ZVxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIG1pbnV0ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbk1pbnV0ZSA9IDYwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luRGF5XG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luRGF5ID0gc2Vjb25kc0luSG91ciAqIDI0O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luV2Vla1xuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5XZWVrID0gc2Vjb25kc0luRGF5ICogNztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJblllYXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luWWVhciA9IHNlY29uZHNJbkRheSAqIGRheXNJblllYXI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5Nb250aFxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIG1vbnRoXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5Nb250aCA9IHNlY29uZHNJblllYXIgLyAxMjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJblF1YXJ0ZXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBxdWFydGVyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luUXVhcnRlciA9IHNlY29uZHNJbk1vbnRoICogMztcbiIsICIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPVx1MDAzZSBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZShhcmd1bWVudCkge1xuICBjb25zdCBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpO1xuXG4gIC8vIENsb25lIHRoZSBkYXRlXG4gIGlmIChcbiAgICBhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm9iamVjdFwiIFx1MDAyNlx1MDAyNiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCAibGV0IGRlZmF1bHRPcHRpb25zID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0T3B0aW9ucygpIHtcbiAgcmV0dXJuIGRlZmF1bHRPcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RGVmYXVsdE9wdGlvbnMobmV3T3B0aW9ucykge1xuICBkZWZhdWx0T3B0aW9ucyA9IG5ld09wdGlvbnM7XG59XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi9fbGliL2RlZmF1bHRPcHRpb25zLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgc3RhcnRPZldlZWt9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBzdGFydE9mV2Vla1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgc3RhcnQgb2YgYSB3ZWVrXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89XHUwMDNlIFN1biBBdWcgMzEgMjAxNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0aGUgd2VlayBzdGFydHMgb24gTW9uZGF5LCB0aGUgc3RhcnQgb2YgdGhlIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApLCB7IHdlZWtTdGFydHNPbjogMSB9KVxuICogLy89XHUwMDNlIE1vbiBTZXAgMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRPZldlZWsoZGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIGNvbnN0IHdlZWtTdGFydHNPbiA9XG4gICAgb3B0aW9ucz8ud2Vla1N0YXJ0c09uID8/XG4gICAgb3B0aW9ucz8ubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24gPz9cbiAgICBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24gPz9cbiAgICBkZWZhdWx0T3B0aW9ucy5sb2NhbGU/Lm9wdGlvbnM/LndlZWtTdGFydHNPbiA/P1xuICAgIDA7XG5cbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGNvbnN0IGRheSA9IF9kYXRlLmdldERheSgpO1xuICBjb25zdCBkaWZmID0gKGRheSBcdTAwM2Mgd2Vla1N0YXJ0c09uID8gNyA6IDApICsgZGF5IC0gd2Vla1N0YXJ0c09uO1xuXG4gIF9kYXRlLnNldERhdGUoX2RhdGUuZ2V0RGF0ZSgpIC0gZGlmZik7XG4gIF9kYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3RhcnRPZldlZWs7XG4iLCAiLyoqXG4gKiBAbmFtZSBjb25zdHJ1Y3RGcm9tXG4gKiBAY2F0ZWdvcnkgR2VuZXJpYyBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb25zdHJ1Y3RzIGEgZGF0ZSB1c2luZyB0aGUgcmVmZXJlbmNlIGRhdGUgYW5kIHRoZSB2YWx1ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGZ1bmN0aW9uIGNvbnN0cnVjdHMgYSBuZXcgZGF0ZSB1c2luZyB0aGUgY29uc3RydWN0b3IgZnJvbSB0aGUgcmVmZXJlbmNlXG4gKiBkYXRlIGFuZCB0aGUgZ2l2ZW4gdmFsdWUuIEl0IGhlbHBzIHRvIGJ1aWxkIGdlbmVyaWMgZnVuY3Rpb25zIHRoYXQgYWNjZXB0XG4gKiBkYXRlIGV4dGVuc2lvbnMuXG4gKlxuICogSXQgZGVmYXVsdHMgdG8gYERhdGVgIGlmIHRoZSBwYXNzZWQgcmVmZXJlbmNlIGRhdGUgaXMgYSBudW1iZXIgb3IgYSBzdHJpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgcmVmZXJlbmNlIGRhdGUgdG8gdGFrZSBjb25zdHJ1Y3RvciBmcm9tXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY3JlYXRlIHRoZSBkYXRlXG4gKlxuICogQHJldHVybnMgRGF0ZSBpbml0aWFsaXplZCB1c2luZyB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdmFsdWVcbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gJ2RhdGUtZm5zJ1xuICpcbiAqIC8vIEEgZnVuY3Rpb24gdGhhdCBjbG9uZXMgYSBkYXRlIHByZXNlcnZpbmcgdGhlIG9yaWdpbmFsIHR5cGVcbiAqIGZ1bmN0aW9uIGNsb25lRGF0ZVx1MDAzY0RhdGVUeXBlIGV4dGVuZHMgRGF0ZShkYXRlOiBEYXRlVHlwZSk6IERhdGVUeXBlIHtcbiAqICAgcmV0dXJuIGNvbnN0cnVjdEZyb20oXG4gKiAgICAgZGF0ZSwgLy8gVXNlIGNvbnRydXN0b3IgZnJvbSB0aGUgZ2l2ZW4gZGF0ZVxuICogICAgIGRhdGUuZ2V0VGltZSgpIC8vIFVzZSB0aGUgZGF0ZSB2YWx1ZSB0byBjcmVhdGUgYSBuZXcgZGF0ZVxuICogICApXG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHZhbHVlKSB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgZGF0ZS5jb25zdHJ1Y3Rvcih2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGNvbnN0cnVjdEZyb207XG4iLCAiaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5pbXBvcnQgeyBzdGFydE9mV2VlayB9IGZyb20gXCIuL3N0YXJ0T2ZXZWVrLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi9fbGliL2RlZmF1bHRPcHRpb25zLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgZ2V0V2Vla1llYXJ9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBnZXRXZWVrWWVhclxuICogQGNhdGVnb3J5IFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIGV4YWN0IGNhbGN1bGF0aW9uIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZlxuICogYG9wdGlvbnMud2Vla1N0YXJ0c09uYCAod2hpY2ggaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWspXG4gKiBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAod2hpY2ggaXMgdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW5cbiAqIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB3ZWVrLW51bWJlcmluZyB5ZWFyKVxuICpcbiAqIFdlZWsgbnVtYmVyaW5nOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZWVrI1RoZV9JU09fd2Vla19kYXRlX3N5c3RlbVxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGdpdmVuIGRhdGVcbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhclxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDI2IERlY2VtYmVyIDIwMDQgd2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5ncz9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWtZZWFyKG5ldyBEYXRlKDIwMDQsIDExLCAyNikpXG4gKiAvLz1cdTAwM2UgMjAwNVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDI2IERlY2VtYmVyIDIwMDQgaWYgd2VlayBzdGFydHMgb24gU2F0dXJkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrWWVhcihuZXcgRGF0ZSgyMDA0LCAxMSwgMjYpLCB7IHdlZWtTdGFydHNPbjogNiB9KVxuICogLy89XHUwMDNlIDIwMDRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggd2VlayBudW1iZXJpbmcgeWVhciBpcyAyNiBEZWNlbWJlciAyMDA0IGlmIHRoZSBmaXJzdCB3ZWVrIGNvbnRhaW5zIDQgSmFudWFyeT9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWtZZWFyKG5ldyBEYXRlKDIwMDQsIDExLCAyNiksIHsgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiA0IH0pXG4gKiAvLz1cdTAwM2UgMjAwNFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2Vla1llYXIoZGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgY29uc3QgeWVhciA9IF9kYXRlLmdldEZ1bGxZZWFyKCk7XG5cbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICBjb25zdCBmaXJzdFdlZWtDb250YWluc0RhdGUgPVxuICAgIG9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIG9wdGlvbnM/LmxvY2FsZT8ub3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgZGVmYXVsdE9wdGlvbnMubG9jYWxlPy5vcHRpb25zPy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICAxO1xuXG4gIGNvbnN0IGZpcnN0V2Vla09mTmV4dFllYXIgPSBjb25zdHJ1Y3RGcm9tKGRhdGUsIDApO1xuICBmaXJzdFdlZWtPZk5leHRZZWFyLnNldEZ1bGxZZWFyKHllYXIgKyAxLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWtPZk5leHRZZWFyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBjb25zdCBzdGFydE9mTmV4dFllYXIgPSBzdGFydE9mV2VlayhmaXJzdFdlZWtPZk5leHRZZWFyLCBvcHRpb25zKTtcblxuICBjb25zdCBmaXJzdFdlZWtPZlRoaXNZZWFyID0gY29uc3RydWN0RnJvbShkYXRlLCAwKTtcbiAgZmlyc3RXZWVrT2ZUaGlzWWVhci5zZXRGdWxsWWVhcih5ZWFyLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWtPZlRoaXNZZWFyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBjb25zdCBzdGFydE9mVGhpc1llYXIgPSBzdGFydE9mV2VlayhmaXJzdFdlZWtPZlRoaXNZZWFyLCBvcHRpb25zKTtcblxuICBpZiAoX2RhdGUuZ2V0VGltZSgpIFx1MDAzZT0gc3RhcnRPZk5leHRZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyICsgMTtcbiAgfSBlbHNlIGlmIChfZGF0ZS5nZXRUaW1lKCkgXHUwMDNlPSBzdGFydE9mVGhpc1llYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHllYXIgLSAxO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZ2V0V2Vla1llYXI7XG4iLCAiaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5pbXBvcnQgeyBnZXRXZWVrWWVhciB9IGZyb20gXCIuL2dldFdlZWtZZWFyLm1qc1wiO1xuaW1wb3J0IHsgc3RhcnRPZldlZWsgfSBmcm9tIFwiLi9zdGFydE9mV2Vlay5tanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4vX2xpYi9kZWZhdWx0T3B0aW9ucy5tanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIHN0YXJ0T2ZXZWVrWWVhcn0gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZXZWVrWWVhclxuICogQGNhdGVnb3J5IFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIuXG4gKiBUaGUgZXhhY3QgY2FsY3VsYXRpb24gZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mXG4gKiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gICh3aGljaCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlaylcbiAqIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgICh3aGljaCBpcyB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpblxuICogdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIpXG4gKlxuICogV2VlayBudW1iZXJpbmc6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlZWsjVGhlX0lTT193ZWVrX2RhdGVfc3lzdGVtXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIHN0YXJ0IG9mIGEgd2Vlay1udW1iZXJpbmcgeWVhclxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYW4gYSB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciAyIEp1bHkgMjAwNSB3aXRoIGRlZmF1bHQgc2V0dGluZ3M6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2Vla1llYXIobmV3IERhdGUoMjAwNSwgNiwgMikpXG4gKiAvLz1cdTAwM2UgU3VuIERlYyAyNiAyMDA0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIDIgSnVseSAyMDA1XG4gKiAvLyBpZiBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB3ZWVrXG4gKiAvLyBhbmQgNCBKYW51YXJ5IGlzIGFsd2F5cyBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhcjpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrWWVhcihuZXcgRGF0ZSgyMDA1LCA2LCAyKSwge1xuICogICB3ZWVrU3RhcnRzT246IDEsXG4gKiAgIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNFxuICogfSlcbiAqIC8vPVx1MDAzZSBNb24gSmFuIDAzIDIwMDUgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0T2ZXZWVrWWVhcihkYXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgY29uc3QgZmlyc3RXZWVrQ29udGFpbnNEYXRlID1cbiAgICBvcHRpb25zPy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICBvcHRpb25zPy5sb2NhbGU/Lm9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIGRlZmF1bHRPcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIGRlZmF1bHRPcHRpb25zLmxvY2FsZT8ub3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgMTtcblxuICBjb25zdCB5ZWFyID0gZ2V0V2Vla1llYXIoZGF0ZSwgb3B0aW9ucyk7XG4gIGNvbnN0IGZpcnN0V2VlayA9IGNvbnN0cnVjdEZyb20oZGF0ZSwgMCk7XG4gIGZpcnN0V2Vlay5zZXRGdWxsWWVhcih5ZWFyLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWsuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIGNvbnN0IF9kYXRlID0gc3RhcnRPZldlZWsoZmlyc3RXZWVrLCBvcHRpb25zKTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHN0YXJ0T2ZXZWVrWWVhcjtcbiIsICJpbXBvcnQgeyBtaWxsaXNlY29uZHNJbldlZWsgfSBmcm9tIFwiLi9jb25zdGFudHMubWpzXCI7XG5pbXBvcnQgeyBzdGFydE9mV2VlayB9IGZyb20gXCIuL3N0YXJ0T2ZXZWVrLm1qc1wiO1xuaW1wb3J0IHsgc3RhcnRPZldlZWtZZWFyIH0gZnJvbSBcIi4vc3RhcnRPZldlZWtZZWFyLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgZ2V0V2Vla30gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIGdldFdlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbG9jYWwgd2VlayBpbmRleCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbG9jYWwgd2VlayBpbmRleCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSBleGFjdCBjYWxjdWxhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2ZcbiAqIGBvcHRpb25zLndlZWtTdGFydHNPbmAgKHdoaWNoIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrKVxuICogYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKHdoaWNoIGlzIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluXG4gKiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhcilcbiAqXG4gKiBXZWVrIG51bWJlcmluZzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VlayNUaGVfSVNPX3dlZWtfZGF0ZV9zeXN0ZW1cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBnaXZlbiBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgd2Vla1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG9mIHRoZSBsb2NhbCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDIgSmFudWFyeSAyMDA1IHdpdGggZGVmYXVsdCBvcHRpb25zP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2VlayhuZXcgRGF0ZSgyMDA1LCAwLCAyKSlcbiAqIC8vPVx1MDAzZSAyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgb2YgdGhlIGxvY2FsIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMiBKYW51YXJ5IDIwMDUsXG4gKiAvLyBpZiBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayxcbiAqIC8vIGFuZCB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhciBhbHdheXMgY29udGFpbnMgNCBKYW51YXJ5P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2VlayhuZXcgRGF0ZSgyMDA1LCAwLCAyKSwge1xuICogICB3ZWVrU3RhcnRzT246IDEsXG4gKiAgIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNFxuICogfSlcbiAqIC8vPVx1MDAzZSA1M1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXZWVrKGRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGNvbnN0IGRpZmYgPSArc3RhcnRPZldlZWsoX2RhdGUsIG9wdGlvbnMpIC0gK3N0YXJ0T2ZXZWVrWWVhcihfZGF0ZSwgb3B0aW9ucyk7XG5cbiAgLy8gUm91bmQgdGhlIG51bWJlciBvZiB3ZWVrcyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIGJlY2F1c2UgdGhlIG51bWJlciBvZlxuICAvLyBtaWxsaXNlY29uZHMgaW4gYSB3ZWVrIGlzIG5vdCBjb25zdGFudCAoZS5nLiBpdCdzIGRpZmZlcmVudCBpbiB0aGUgd2VlayBvZlxuICAvLyB0aGUgZGF5bGlnaHQgc2F2aW5nIHRpbWUgY2xvY2sgc2hpZnQpLlxuICByZXR1cm4gTWF0aC5yb3VuZChkaWZmIC8gbWlsbGlzZWNvbmRzSW5XZWVrKSArIDE7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZ2V0V2VlaztcbiIsICJpbXBvcnQgeyBnZXRXZWVrIH0gZnJvbSBcIi4vZ2V0V2Vlay5tanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIHNldFdlZWt9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBzZXRXZWVrXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIGxvY2FsIHdlZWsgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIGxvY2FsIHdlZWsgdG8gdGhlIGdpdmVuIGRhdGUsIHNhdmluZyB0aGUgd2Vla2RheSBudW1iZXIuXG4gKiBUaGUgZXhhY3QgY2FsY3VsYXRpb24gZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mXG4gKiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gICh3aGljaCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlaylcbiAqIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgICh3aGljaCBpcyB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpblxuICogdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIpXG4gKlxuICogV2VlayBudW1iZXJpbmc6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlZWsjVGhlX0lTT193ZWVrX2RhdGVfc3lzdGVtXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gd2VlayAtIFRoZSB3ZWVrIG9mIHRoZSBuZXcgZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGxvY2FsIHdlZWsgc2V0XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB0aGUgMXN0IHdlZWsgdG8gMiBKYW51YXJ5IDIwMDUgd2l0aCBkZWZhdWx0IG9wdGlvbnM6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRXZWVrKG5ldyBEYXRlKDIwMDUsIDAsIDIpLCAxKVxuICogLy89XHUwMDNlIFN1biBEZWMgMjYgMjAwNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgdGhlIDFzdCB3ZWVrIHRvIDIgSmFudWFyeSAyMDA1LFxuICogLy8gaWYgTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWssXG4gKiAvLyBhbmQgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIgYWx3YXlzIGNvbnRhaW5zIDQgSmFudWFyeTpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldFdlZWsobmV3IERhdGUoMjAwNSwgMCwgMiksIDEsIHtcbiAqICAgd2Vla1N0YXJ0c09uOiAxLFxuICogICBmaXJzdFdlZWtDb250YWluc0RhdGU6IDRcbiAqIH0pXG4gKiAvLz1cdTAwM2UgU3VuIEphbiA0IDIwMDQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFdlZWsoZGF0ZSwgd2Vlaywgb3B0aW9ucykge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgY29uc3QgZGlmZiA9IGdldFdlZWsoX2RhdGUsIG9wdGlvbnMpIC0gd2VlaztcbiAgX2RhdGUuc2V0RGF0ZShfZGF0ZS5nZXREYXRlKCkgLSBkaWZmICogNyk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBzZXRXZWVrO1xuIiwgIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89XHUwMDNlIFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgXHUwMDI2XHUwMDI2IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICkge1xuICAgIC8vIFByZXZlbnQgdGhlIGRhdGUgdG8gbG9zZSB0aGUgbWlsbGlzZWNvbmRzIHdoZW4gcGFzc2VkIHRvIG5ldyBEYXRlKCkgaW4gSUUxMFxuICAgIHJldHVybiBuZXcgYXJndW1lbnQuY29uc3RydWN0b3IoK2FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBOdW1iZXJdXCIgfHxcbiAgICB0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIgfHxcbiAgICBhcmdTdHIgPT09IFwiW29iamVjdCBTdHJpbmddXCJcbiAgKSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHRvRGF0ZTtcbiIsICIvKipcbiAqIEBuYW1lIGNvbnN0cnVjdEZyb21cbiAqIEBjYXRlZ29yeSBHZW5lcmljIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnN0cnVjdHMgYSBkYXRlIHVzaW5nIHRoZSByZWZlcmVuY2UgZGF0ZSBhbmQgdGhlIHZhbHVlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGUgZnVuY3Rpb24gY29uc3RydWN0cyBhIG5ldyBkYXRlIHVzaW5nIHRoZSBjb25zdHJ1Y3RvciBmcm9tIHRoZSByZWZlcmVuY2VcbiAqIGRhdGUgYW5kIHRoZSBnaXZlbiB2YWx1ZS4gSXQgaGVscHMgdG8gYnVpbGQgZ2VuZXJpYyBmdW5jdGlvbnMgdGhhdCBhY2NlcHRcbiAqIGRhdGUgZXh0ZW5zaW9ucy5cbiAqXG4gKiBJdCBkZWZhdWx0cyB0byBgRGF0ZWAgaWYgdGhlIHBhc3NlZCByZWZlcmVuY2UgZGF0ZSBpcyBhIG51bWJlciBvciBhIHN0cmluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSByZWZlcmVuY2UgZGF0ZSB0byB0YWtlIGNvbnN0cnVjdG9yIGZyb21cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjcmVhdGUgdGhlIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBEYXRlIGluaXRpYWxpemVkIHVzaW5nIHRoZSBnaXZlbiBkYXRlIGFuZCB2YWx1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSAnZGF0ZS1mbnMnXG4gKlxuICogLy8gQSBmdW5jdGlvbiB0aGF0IGNsb25lcyBhIGRhdGUgcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgdHlwZVxuICogZnVuY3Rpb24gY2xvbmVEYXRlXHUwMDNjRGF0ZVR5cGUgZXh0ZW5kcyBEYXRlKGRhdGU6IERhdGVUeXBlKTogRGF0ZVR5cGUge1xuICogICByZXR1cm4gY29uc3RydWN0RnJvbShcbiAqICAgICBkYXRlLCAvLyBVc2UgY29udHJ1c3RvciBmcm9tIHRoZSBnaXZlbiBkYXRlXG4gKiAgICAgZGF0ZS5nZXRUaW1lKCkgLy8gVXNlIHRoZSBkYXRlIHZhbHVlIHRvIGNyZWF0ZSBhIG5ldyBkYXRlXG4gKiAgIClcbiAqIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdEZyb20oZGF0ZSwgdmFsdWUpIHtcbiAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBkYXRlLmNvbnN0cnVjdG9yKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgY29uc3RydWN0RnJvbTtcbiIsICJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5pbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBhZGRNaWxsaXNlY29uZHNcbiAqIEBjYXRlZ29yeSBNaWxsaXNlY29uZCBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIG1pbGxpc2Vjb25kcyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgbWlsbGlzZWNvbmRzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCA3NTAgbWlsbGlzZWNvbmRzIHRvIDEwIEp1bHkgMjAxNCAxMjo0NTozMC4wMDA6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRNaWxsaXNlY29uZHMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCA0NSwgMzAsIDApLCA3NTApXG4gKiAvLz1cdTAwM2UgVGh1IEp1bCAxMCAyMDE0IDEyOjQ1OjMwLjc1MFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkTWlsbGlzZWNvbmRzKGRhdGUsIGFtb3VudCkge1xuICBjb25zdCB0aW1lc3RhbXAgPSArdG9EYXRlKGRhdGUpO1xuICByZXR1cm4gY29uc3RydWN0RnJvbShkYXRlLCB0aW1lc3RhbXAgKyBhbW91bnQpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGFkZE1pbGxpc2Vjb25kcztcbiIsICIvKipcbiAqIEBtb2R1bGUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBVc2VmdWwgY29uc3RhbnRzXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbGxlY3Rpb24gb2YgdXNlZnVsIGRhdGUgY29uc3RhbnRzLlxuICpcbiAqIFRoZSBjb25zdGFudHMgY291bGQgYmUgaW1wb3J0ZWQgZnJvbSBgZGF0ZS1mbnMvY29uc3RhbnRzYDpcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbWF4VGltZSwgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBmdW5jdGlvbiBpc0FsbG93ZWRUaW1lKHRpbWUpIHtcbiAqICAgcmV0dXJuIHRpbWUgXHUwMDNjPSBtYXhUaW1lIFx1MDAyNlx1MDAyNiB0aW1lIFx1MDAzZT0gbWluVGltZTtcbiAqIH1cbiAqIGBgYFxuICovXG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBkYXlzSW5XZWVrXG4gKiBAc3VtbWFyeSBEYXlzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IGRheXNJbldlZWsgPSA3O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgZGF5c0luWWVhclxuICogQHN1bW1hcnkgRGF5cyBpbiAxIHllYXIuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBIb3cgbWFueSBkYXlzIGluIGEgeWVhci5cbiAqXG4gKiBPbmUgeWVhcnMgZXF1YWxzIDM2NS4yNDI1IGRheXMgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlxuICpcbiAqIFx1MDAzZSBMZWFwIHllYXIgb2NjdXJlcyBldmVyeSA0IHllYXJzLCBleGNlcHQgZm9yIHllYXJzIHRoYXQgYXJlIGRpdmlzYWJsZSBieSAxMDAgYW5kIG5vdCBkaXZpc2FibGUgYnkgNDAwLlxuICogXHUwMDNlIDEgbWVhbiB5ZWFyID0gKDM2NSsxLzQtMS8xMDArMS80MDApIGRheXMgPSAzNjUuMjQyNSBkYXlzXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5ZZWFyID0gMzY1LjI0MjU7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtYXhUaW1lXG4gKiBAc3VtbWFyeSBNYXhpbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgbWF4VGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBjb25zdCBpc1ZhbGlkID0gODY0MDAwMDAwMDAwMDAwMSBcdTAwM2M9IG1heFRpbWU7XG4gKiAvLz1cdTAwM2UgZmFsc2VcbiAqXG4gKiBuZXcgRGF0ZSg4NjQwMDAwMDAwMDAwMDAxKTtcbiAqIC8vPVx1MDAzZSBJbnZhbGlkIERhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1heFRpbWUgPSBNYXRoLnBvdygxMCwgOCkgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWluVGltZVxuICogQHN1bW1hcnkgTWluaW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IG1pblRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogY29uc3QgaXNWYWxpZCA9IC04NjQwMDAwMDAwMDAwMDAxIFx1MDAzZT0gbWluVGltZTtcbiAqIC8vPVx1MDAzZSBmYWxzZVxuICpcbiAqIG5ldyBEYXRlKC04NjQwMDAwMDAwMDAwMDAxKVxuICogLy89XHUwMDNlIEludmFsaWQgRGF0ZVxuICovXG5leHBvcnQgY29uc3QgbWluVGltZSA9IC1tYXhUaW1lO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5XZWVrID0gNjA0ODAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luRGF5ID0gODY0MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbk1pbnV0ZVxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgbWludXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbk1pbnV0ZSA9IDYwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBob3VyXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbkhvdXIgPSAzNjAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5TZWNvbmRcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIHNlY29uZFxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5TZWNvbmQgPSAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luWWVhclxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5ZZWFyID0gNTI1NjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luTW9udGhcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBtb250aC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbk1vbnRoID0gNDMyMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5EYXkgPSAxNDQwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luSG91clxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIGhvdXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5Ib3VyID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtb250aHNJblF1YXJ0ZXJcbiAqIEBzdW1tYXJ5IE1vbnRocyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aHNJblF1YXJ0ZXIgPSAzO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbW9udGhzSW5ZZWFyXG4gKiBAc3VtbWFyeSBNb250aHMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3QgbW9udGhzSW5ZZWFyID0gMTI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBxdWFydGVyc0luWWVhclxuICogQHN1bW1hcnkgUXVhcnRlcnMgaW4gMSB5ZWFyXG4gKi9cbmV4cG9ydCBjb25zdCBxdWFydGVyc0luWWVhciA9IDQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgaG91ci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbkhvdXIgPSAzNjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luTWludXRlXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbWludXRlLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luTWludXRlID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5EYXkgPSBzZWNvbmRzSW5Ib3VyICogMjQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbldlZWsgPSBzZWNvbmRzSW5EYXkgKiA3O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luWWVhclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5ZZWFyID0gc2Vjb25kc0luRGF5ICogZGF5c0luWWVhcjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbk1vbnRoXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbW9udGhcbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbk1vbnRoID0gc2Vjb25kc0luWWVhciAvIDEyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luUXVhcnRlclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5RdWFydGVyID0gc2Vjb25kc0luTW9udGggKiAzO1xuIiwgImltcG9ydCB7IGFkZE1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL2FkZE1pbGxpc2Vjb25kcy5tanNcIjtcbmltcG9ydCB7IG1pbGxpc2Vjb25kc0luTWludXRlIH0gZnJvbSBcIi4vY29uc3RhbnRzLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZE1pbnV0ZXNcbiAqIEBjYXRlZ29yeSBNaW51dGUgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbnV0ZXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWludXRlcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIG1pbnV0ZXMgdG8gYmUgYWRkZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIG1pbnV0ZXMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDMwIG1pbnV0ZXMgdG8gMTAgSnVseSAyMDE0IDEyOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gYWRkTWludXRlcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDApLCAzMClcbiAqIC8vPVx1MDAzZSBUaHUgSnVsIDEwIDIwMTQgMTI6MzA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZE1pbnV0ZXMoZGF0ZSwgYW1vdW50KSB7XG4gIHJldHVybiBhZGRNaWxsaXNlY29uZHMoZGF0ZSwgYW1vdW50ICogbWlsbGlzZWNvbmRzSW5NaW51dGUpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGFkZE1pbnV0ZXM7XG4iLCAiaW1wb3J0IHsgYWRkTWludXRlcyB9IGZyb20gXCIuL2FkZE1pbnV0ZXMubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgc3ViTWludXRlc1xuICogQGNhdGVnb3J5IE1pbnV0ZSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaW51dGVzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaW51dGVzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiBtaW51dGVzIHRvIGJlIHN1YnRyYWN0ZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIG1pbnV0ZXMgc3VidHJhY3RlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCAzMCBtaW51dGVzIGZyb20gMTAgSnVseSAyMDE0IDEyOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3ViTWludXRlcyhuZXcgRGF0ZSgyMDE0LCA2LCAxMCwgMTIsIDApLCAzMClcbiAqIC8vPVx1MDAzZSBUaHUgSnVsIDEwIDIwMTQgMTE6MzA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1Yk1pbnV0ZXMoZGF0ZSwgYW1vdW50KSB7XG4gIHJldHVybiBhZGRNaW51dGVzKGRhdGUsIC1hbW91bnQpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHN1Yk1pbnV0ZXM7XG4iLCAiLyoqXG4gKiBAbmFtZSB0b0RhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIERhdGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGl0cyBjbG9uZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYSBudW1iZXIsIGl0IGlzIHRyZWF0ZWQgYXMgYSB0aW1lc3RhbXAuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIG5vbmUgb2YgdGhlIGFib3ZlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBJbnZhbGlkIERhdGUuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz1cdTAwM2UgVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiBcdTAwMjZcdTAwMjYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgIi8qKlxuICogQG5hbWUgY29uc3RydWN0RnJvbVxuICogQGNhdGVnb3J5IEdlbmVyaWMgSGVscGVyc1xuICogQHN1bW1hcnkgQ29uc3RydWN0cyBhIGRhdGUgdXNpbmcgdGhlIHJlZmVyZW5jZSBkYXRlIGFuZCB0aGUgdmFsdWVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBmdW5jdGlvbiBjb25zdHJ1Y3RzIGEgbmV3IGRhdGUgdXNpbmcgdGhlIGNvbnN0cnVjdG9yIGZyb20gdGhlIHJlZmVyZW5jZVxuICogZGF0ZSBhbmQgdGhlIGdpdmVuIHZhbHVlLiBJdCBoZWxwcyB0byBidWlsZCBnZW5lcmljIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdFxuICogZGF0ZSBleHRlbnNpb25zLlxuICpcbiAqIEl0IGRlZmF1bHRzIHRvIGBEYXRlYCBpZiB0aGUgcGFzc2VkIHJlZmVyZW5jZSBkYXRlIGlzIGEgbnVtYmVyIG9yIGEgc3RyaW5nLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIHJlZmVyZW5jZSBkYXRlIHRvIHRha2UgY29uc3RydWN0b3IgZnJvbVxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNyZWF0ZSB0aGUgZGF0ZVxuICpcbiAqIEByZXR1cm5zIERhdGUgaW5pdGlhbGl6ZWQgdXNpbmcgdGhlIGdpdmVuIGRhdGUgYW5kIHZhbHVlXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tICdkYXRlLWZucydcbiAqXG4gKiAvLyBBIGZ1bmN0aW9uIHRoYXQgY2xvbmVzIGEgZGF0ZSBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCB0eXBlXG4gKiBmdW5jdGlvbiBjbG9uZURhdGVcdTAwM2NEYXRlVHlwZSBleHRlbmRzIERhdGUoZGF0ZTogRGF0ZVR5cGUpOiBEYXRlVHlwZSB7XG4gKiAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKFxuICogICAgIGRhdGUsIC8vIFVzZSBjb250cnVzdG9yIGZyb20gdGhlIGdpdmVuIGRhdGVcbiAqICAgICBkYXRlLmdldFRpbWUoKSAvLyBVc2UgdGhlIGRhdGUgdmFsdWUgdG8gY3JlYXRlIGEgbmV3IGRhdGVcbiAqICAgKVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RnJvbShkYXRlLCB2YWx1ZSkge1xuICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gbmV3IGRhdGUuY29uc3RydWN0b3IodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBjb25zdHJ1Y3RGcm9tO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcbmltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGFkZERheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIGRheXMgdG8gYmUgYWRkZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheXMgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDEwIGRheXMgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZERheXMobmV3IERhdGUoMjAxNCwgOCwgMSksIDEwKVxuICogLy89XHUwMDNlIFRodSBTZXAgMTEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkRGF5cyhkYXRlLCBhbW91bnQpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGlmIChpc05hTihhbW91bnQpKSByZXR1cm4gY29uc3RydWN0RnJvbShkYXRlLCBOYU4pO1xuICBpZiAoIWFtb3VudCkge1xuICAgIC8vIElmIDAgZGF5cywgbm8tb3AgdG8gYXZvaWQgY2hhbmdpbmcgdGltZXMgaW4gdGhlIGhvdXIgYmVmb3JlIGVuZCBvZiBEU1RcbiAgICByZXR1cm4gX2RhdGU7XG4gIH1cbiAgX2RhdGUuc2V0RGF0ZShfZGF0ZS5nZXREYXRlKCkgKyBhbW91bnQpO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkRGF5cztcbiIsICJpbXBvcnQgeyBhZGREYXlzIH0gZnJvbSBcIi4vYWRkRGF5cy5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBhZGRXZWVrc1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHdlZWtzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHdlZWsgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCBvZiB3ZWVrcyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgd2Vla3MgYWRkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIDQgd2Vla3MgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZFdlZWtzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCA0KVxuICogLy89XHUwMDNlIE1vbiBTZXAgMjkgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkV2Vla3MoZGF0ZSwgYW1vdW50KSB7XG4gIGNvbnN0IGRheXMgPSBhbW91bnQgKiA3O1xuICByZXR1cm4gYWRkRGF5cyhkYXRlLCBkYXlzKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGRXZWVrcztcbiIsICJpbXBvcnQgeyBhZGRXZWVrcyB9IGZyb20gXCIuL2FkZFdlZWtzLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIHN1YldlZWtzXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB3ZWVrcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygd2Vla3MgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIHdlZWtzIHRvIGJlIHN1YnRyYWN0ZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIHdlZWtzIHN1YnRyYWN0ZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3VidHJhY3QgNCB3ZWVrcyBmcm9tIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzdWJXZWVrcyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgNClcbiAqIC8vPVx1MDAzZSBNb24gQXVnIDA0IDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YldlZWtzKGRhdGUsIGFtb3VudCkge1xuICByZXR1cm4gYWRkV2Vla3MoZGF0ZSwgLWFtb3VudCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3ViV2Vla3M7XG4iLCAiLy8gVGhlIG1vc3Qgb2YgdGhpcyBjb2RlIGlzIHBvcnRlZCBmcm9tIGh0dHBzOi8vZGVuby5sYW5kL3gvdW5rbm93bnV0aWxAdjEuMS4wL21vZC50c1xuXG4vLyBleHBvcnQgdHlwZSBQcmVkaWNhdGU8VD4gPSAodmFsdWU6IHVua25vd24pID0+IHZhbHVlIGlzIFQ7XG5leHBvcnQgY29uc3QgaXNOb25lID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgdW5kZWZpbmVkIHwgbnVsbCA9PlxuICB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG5leHBvcnQgY29uc3QgaXNTdHJpbmcgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmcgPT5cbiAgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiO1xuXG4vLyBleHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudW1iZXIge1xuLy8gICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiO1xuLy8gfVxuLy8gZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXk8VCBleHRlbmRzIHVua25vd24+KFxuLy8gICB2YWx1ZTogdW5rbm93bixcbi8vICAgcHJlZGljYXRlPzogUHJlZGljYXRlPFQ+LFxuLy8gKTogdmFsdWUgaXMgVFtdIHtcbi8vICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpICYmICghcHJlZGljYXRlIHx8IHZhbHVlLmV2ZXJ5KHByZWRpY2F0ZSkpO1xuLy8gfVxuXG4vLyBleHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXk8VD4oXG4vLyAgIHZhbHVlOiB1bmtub3duLFxuLy8gICBwcmVkaWNhdGU/OiBQcmVkaWNhdGU8VD4sXG4vLyApOiBhc3NlcnRzIHZhbHVlIGlzIEFycmF5PFQ+IHtcbi8vICAgaWYgKGlzQXJyYXkodmFsdWUsIHByZWRpY2F0ZSkpIHJldHVybjtcbi8vICAgdGhyb3cgVHlwZUVycm9yKFwidmFsdWUgbXVzdCBiZSBhbiBBcnJheVwiKTtcbi8vIH1cblxuZXhwb3J0IHR5cGUgT25lQnlPbmVSZXN1bHQ8VD4gPSB7XG4gIHN0YXRlOiBcImZ1bGZpbGxlZFwiO1xuICB2YWx1ZTogVDtcbn0gfCB7XG4gIHN0YXRlOiBcInJlamVjdGVkXCI7XG4gIHJlYXNvbjogdW5rbm93bjtcbn07XG5cbi8qKiBQcm9taXNl44KS6Kej5rG644GX44Gf6aCG44Gr6L+U44GZ5Ye95pWwICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIG9uZUJ5T25lPFQ+KFxuICBwcm9taXNlczogSXRlcmFibGU8UHJvbWlzZTxUPj4sXG4pOiBBc3luY0dlbmVyYXRvcjxPbmVCeU9uZVJlc3VsdDxUPiwgdm9pZCwgdW5rbm93bj4ge1xuICBjb25zdCBxdWV1ZSA9IFtdIGFzIE9uZUJ5T25lUmVzdWx0PFQ+W107XG4gIGxldCByZXNvbHZlOiAoKGl0ZW06IE9uZUJ5T25lUmVzdWx0PFQ+KSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgY29uc3QgcHVzaCA9IChpdGVtOiBPbmVCeU9uZVJlc3VsdDxUPikgPT4ge1xuICAgIGlmICghcmVzb2x2ZSkge1xuICAgICAgcXVldWUucHVzaChpdGVtKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVzb2x2ZShpdGVtKTtcbiAgICByZXNvbHZlID0gdW5kZWZpbmVkO1xuICB9O1xuICBjb25zdCBwb3AgPSAoKSA9PiB7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocXVldWUucG9wKCkhKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPE9uZUJ5T25lUmVzdWx0PFQ+PigocmVzKSA9PiByZXNvbHZlID0gcmVzKTtcbiAgfTtcblxuICBsZXQgY291bnQgPSAwO1xuICBmb3IgKGNvbnN0IHByb21pc2Ugb2YgcHJvbWlzZXMpIHtcbiAgICBwcm9taXNlXG4gICAgICAudGhlbigodmFsdWUpID0+XG4gICAgICAgIHB1c2goe1xuICAgICAgICAgIHN0YXRlOiBcImZ1bGZpbGxlZFwiLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLmNhdGNoKChyZWFzb24pID0+XG4gICAgICAgIHB1c2goe1xuICAgICAgICAgIHN0YXRlOiBcInJlamVjdGVkXCIsXG4gICAgICAgICAgcmVhc29uLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICBjb3VudCsrO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgeWllbGQgYXdhaXQgcG9wKCk7XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBhZGRTZWNvbmRzLCBpc0FmdGVyLCBsaWdodEZvcm1hdCB9IGZyb20gXCIuL2RlcHMvZGF0ZS1mbnMudHNcIjtcbmltcG9ydCB7IGlzTm9uZSwgaXNTdHJpbmcgfSBmcm9tIFwiLi91dGlscy50c1wiO1xuaW1wb3J0IHsgZ2V0SW5kZW50TGluZUNvdW50IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1zdGQudHNcIjtcblxuZXhwb3J0IHR5cGUgSW50ZXJ2YWwgPSB7XG4gIHN0YXJ0PzogRGF0ZTtcbiAgZW5kPzogRGF0ZTtcbn07XG4vKiog44Of44Oq56eS5Y2Y5L2N44Gu57WM6YGO5pmC6ZaTICovXG5leHBvcnQgdHlwZSBEdXJhdGlvbiA9IG51bWJlcjtcbi8qKiB0YXNrIGRhdGEgKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFzayB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGJhc2U6IERhdGU7XG4gIHBsYW46IHtcbiAgICBzdGFydD86IERhdGU7XG4gICAgLyoqIOimi+epjeOCguOCiuaZgumWkyDljZjkvY3jga/np5IgKi8gZHVyYXRpb24/OiBudW1iZXI7XG4gIH07XG4gIHJlY29yZDogSW50ZXJ2YWw7XG59XG5cbmNvbnN0IHBhcnNlVGFzayA9ICh0ZXh0OiBzdHJpbmcpOiBUYXNrIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgbWF0Y2hlZCA9IHRleHQubWF0Y2goXG4gICAgL15gKFxcZHs0fSktKFxcZHsyfSktKFxcZHsyfSkgKD86IHs1fXwoXFxkezJ9KTooXFxkezJ9KSkgKD86IHs0fXwoXFxkezR9KSkgKD86IHs4fXwoXFxkezJ9KTooXFxkezJ9KTooXFxkezJ9KSkgKD86IHs4fXwoXFxkezJ9KTooXFxkezJ9KTooXFxkezJ9KSlgKFteXFxuXSopJC8sXG4gICk7XG4gIGlmICghbWF0Y2hlZCkgcmV0dXJuO1xuXG4gIC8vIOOCv+OCueOCr+OBjOabuOOBjei+vOOBvuOCjOOBn+ihjOOCkuino+aekOOBmeOCi1xuICBjb25zdCBbXG4gICAgLFxuICAgIHllYXIsXG4gICAgbW9udGgsXG4gICAgZGF0ZSxcbiAgICBwaG91cnMsXG4gICAgcG1pbnV0ZXMsXG4gICAgZHVyYXRpb24sXG4gICAgc2hvdXJzLFxuICAgIHNtaW51dGVzLFxuICAgIHNzZWNvbmRzLFxuICAgIGVob3VycyxcbiAgICBlbWludXRlcyxcbiAgICBlc2Vjb25kcyxcbiAgICB0aXRsZSxcbiAgXSA9IG1hdGNoZWQ7XG4gIGNvbnN0IHRhc2s6IFRhc2sgPSB7XG4gICAgdGl0bGUsXG4gICAgYmFzZTogbmV3IERhdGUocGFyc2VJbnQoeWVhciksIHBhcnNlSW50KG1vbnRoKSAtIDEsIHBhcnNlSW50KGRhdGUpKSxcbiAgICBwbGFuOiB7fSxcbiAgICByZWNvcmQ6IHt9LFxuICB9O1xuXG4gIGlmIChwaG91cnMpIHtcbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKHRhc2suYmFzZSk7XG4gICAgc3RhcnQuc2V0SG91cnMocGFyc2VJbnQocGhvdXJzKSk7XG4gICAgc3RhcnQuc2V0TWludXRlcyhwYXJzZUludChwbWludXRlcykpO1xuICAgIHRhc2sucGxhbi5zdGFydCA9IHN0YXJ0O1xuICB9XG4gIGlmIChkdXJhdGlvbikgdGFzay5wbGFuLmR1cmF0aW9uID0gcGFyc2VJbnQoZHVyYXRpb24pICogNjA7XG4gIC8vIOWun+e4vuaZguWIu+OCkuino+aekOOBmeOCi1xuICAvLyDplovlp4vmmYLliLvjgojjgorntYLkuobmmYLliLvjga7mlrnjgYzliY3jgaDjgaPjgZ/jgonjgIHml6Xku5jjgpLotorjgYjjgabjgYTjgovjgajjgb/jgarjgZlcbiAgaWYgKHNob3Vycykge1xuICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUodGFzay5iYXNlKTtcbiAgICBzdGFydC5zZXRIb3VycyhwYXJzZUludChzaG91cnMpKTtcbiAgICBzdGFydC5zZXRNaW51dGVzKHBhcnNlSW50KHNtaW51dGVzKSk7XG4gICAgc3RhcnQuc2V0U2Vjb25kcyhwYXJzZUludChzc2Vjb25kcykpO1xuICAgIHRhc2sucmVjb3JkLnN0YXJ0ID0gc3RhcnQ7XG4gIH1cbiAgaWYgKGVob3Vycykge1xuICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKHRhc2suYmFzZSk7XG4gICAgZW5kLnNldEhvdXJzKHBhcnNlSW50KGVob3VycykpO1xuICAgIGVuZC5zZXRNaW51dGVzKHBhcnNlSW50KGVtaW51dGVzKSk7XG4gICAgZW5kLnNldFNlY29uZHMocGFyc2VJbnQoZXNlY29uZHMpKTtcbiAgICBpZiAodGFzay5yZWNvcmQuc3RhcnQgJiYgaXNBZnRlcih0YXNrLnJlY29yZC5zdGFydCwgZW5kKSkge1xuICAgICAgZW5kLnNldERhdGUoZW5kLmdldERhdGUoKSArIDEpO1xuICAgIH1cbiAgICB0YXNrLnJlY29yZC5lbmQgPSBlbmQ7XG4gIH1cblxuICByZXR1cm4gdGFzaztcbn07XG5leHBvcnQgeyBwYXJzZVRhc2sgYXMgcGFyc2UgfTtcbmV4cG9ydCBjb25zdCBpc1Rhc2sgPSAodGV4dDogc3RyaW5nKTogYm9vbGVhbiA9PiBwYXJzZVRhc2sodGV4dCkgIT09IHVuZGVmaW5lZDtcblxuLyoqIOavlOi8g+eUqOOBrumWi+Wni+aXpeaZguOCkuWPluW+l+OBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0RGF0ZSA9ICh0YXNrOiBUYXNrKTogRGF0ZSA9PlxuICB0YXNrLnJlY29yZD8uc3RhcnQgPz8gdGFzay5wbGFuPy5zdGFydCA/PyB0YXNrLmJhc2U7XG5cbi8qKiDmr5TovIPnlKjjga7ntYLkuobjgpLlj5blvpfjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBlbmREYXRlID0gKHRhc2s6IFRhc2spOiBEYXRlID0+XG4gIHRhc2sucmVjb3JkPy5lbmQgPz9cbiAgICAoIWlzTm9uZSh0YXNrLnBsYW4/LmR1cmF0aW9uKVxuICAgICAgPyBhZGRTZWNvbmRzKHN0YXJ0RGF0ZSh0YXNrKSwgdGFzay5wbGFuLmR1cmF0aW9uKVxuICAgICAgOiB0YXNrLmJhc2UpO1xuXG4vKiog5a6f6KGM5Lit44GL5Yik5a6a44GZ44KLICovXG5leHBvcnQgY29uc3QgaXNSdW5uaW5nID0gKHRhc2s6IFRhc2spOiBib29sZWFuID0+XG4gIHRhc2sucmVjb3JkLnN0YXJ0ICE9PSB1bmRlZmluZWQgJiYgdGFzay5yZWNvcmQuZW5kID09PSB1bmRlZmluZWQ7XG5cbi8qKiDlrozkuobjgZfjgZ/jgYvliKTlrprjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBpc0RvbmUgPSAodGFzazogVGFzayk6IGJvb2xlYW4gPT5cbiAgdGFzay5yZWNvcmQuc3RhcnQgIT09IHVuZGVmaW5lZCAmJiB0YXNrLnJlY29yZC5lbmQgIT09IHVuZGVmaW5lZDtcblxuLyoqIFRhc2vjgpLmloflrZfliJfjgavnm7TjgZkgKi9cbmV4cG9ydCBjb25zdCB0b1N0cmluZyA9ICh7IHRpdGxlLCBiYXNlLCBwbGFuLCByZWNvcmQgfTogVGFzayk6IHN0cmluZyA9PlxuICBbXG4gICAgXCJgXCIsXG4gICAgbGlnaHRGb3JtYXQoYmFzZSwgXCJ5eXl5LU1NLWRkXCIpLFxuICAgIFwiIFwiLFxuICAgIHBsYW4/LnN0YXJ0ID8gbGlnaHRGb3JtYXQocGxhbi5zdGFydCwgXCJISDptbVwiKSA6IFwiIFwiLnJlcGVhdCg1KSxcbiAgICBcIiBcIixcbiAgICBwbGFuPy5kdXJhdGlvblxuICAgICAgPyBgJHtwbGFuLmR1cmF0aW9uIC8gNjB9YFxuICAgICAgICAucGFkU3RhcnQoNCwgXCIwXCIpXG4gICAgICA6IFwiIFwiLnJlcGVhdCg0KSxcbiAgICBcIiBcIixcbiAgICByZWNvcmQ/LnN0YXJ0ID8gbGlnaHRGb3JtYXQocmVjb3JkPy5zdGFydCwgXCJISDptbTpzc1wiKSA6IFwiIFwiLnJlcGVhdCg4KSxcbiAgICBcIiBcIixcbiAgICByZWNvcmQ/LmVuZCA/IGxpZ2h0Rm9ybWF0KHJlY29yZD8uZW5kLCBcIkhIOm1tOnNzXCIpIDogXCIgXCIucmVwZWF0KDgpLFxuICAgIFwiYFwiLFxuICAgIHRpdGxlLFxuICBdLmpvaW4oXCJcIik7XG5cbi8qKiBUYXNr44Gr44CB44Kk44Oz44OH44Oz44OI44Gn44G244KJ5LiL44GM44Gj44Gm44GE44KL6KGM44Gu44OG44Kt44K544OI44OH44O844K/44KS5Yqg44GI44Gf44KC44GuKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFza0Jsb2NrIGV4dGVuZHMgVGFzayB7XG4gIC8qKuOBtuOCieS4i+OBjOOBo+OBpuOBhOOCi+ODhuOCreOCueODiOODh+ODvOOCvyAqLyBsaW5lczogc3RyaW5nW107XG59XG4vKiog5pys5paH44OH44O844K/44GL44KJ44CB44K/44K544Kv44Go44Gd44GT44Gr44G244KJ5LiL44GM44Gj44Gf6KGM44KS44G+44Go44KB44Gm6L+U44GZICovXG5leHBvcnQgZnVuY3Rpb24qIHBhcnNlQmxvY2soXG4gIGxpbmVzOiB7IHRleHQ6IHN0cmluZyB9W10gfCBzdHJpbmdbXSxcbik6IEdlbmVyYXRvcjxUYXNrQmxvY2ssIHZvaWQsIHZvaWQ+IHtcbiAgZm9yIChjb25zdCBkYXRhIG9mIHBhcnNlTGluZXMobGluZXMpKSB7XG4gICAgaWYgKGlzU3RyaW5nKGRhdGEpKSBjb250aW51ZTtcbiAgICB5aWVsZCBkYXRhO1xuICB9XG59XG4vKiog5pys5paH44OH44O844K/44KS6Kej5p6Q44GX44Gm57WQ5p6c44KS6L+U44GZICovXG5leHBvcnQgZnVuY3Rpb24qIHBhcnNlTGluZXMoXG4gIGxpbmVzOiB7IHRleHQ6IHN0cmluZyB9W10gfCBzdHJpbmdbXSxcbik6IEdlbmVyYXRvcjxUYXNrQmxvY2sgfCBzdHJpbmcsIHZvaWQsIHZvaWQ+IHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGxpbmVfID0gbGluZXNbaV07XG4gICAgY29uc3QgbGluZSA9IGlzU3RyaW5nKGxpbmVfKSA/IGxpbmVfIDogbGluZV8udGV4dDtcbiAgICBjb25zdCBjb3VudCA9IGdldEluZGVudExpbmVDb3VudChpLCBsaW5lcyk7XG4gICAgY29uc3QgdGFzayA9IHBhcnNlVGFzayhsaW5lKTtcbiAgICBpZiAoIXRhc2spIHtcbiAgICAgIHlpZWxkIGxpbmU7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgeWllbGQge1xuICAgICAgLi4udGFzayxcbiAgICAgIGxpbmVzOiBsaW5lcy5zbGljZShpICsgMSwgaSArIDEgKyBjb3VudCkubWFwKChsaW5lXykgPT5cbiAgICAgICAgaXNTdHJpbmcobGluZV8pID8gbGluZV8gOiBsaW5lXy50ZXh0XG4gICAgICApLFxuICAgIH07XG4gICAgaSArPSBjb3VudDtcbiAgfVxufVxuIiwgImltcG9ydCB7IHBhcnNlLCB0b1N0cmluZyB9IGZyb20gXCIuLi90YXNrLnRzXCI7XG5pbXBvcnQgeyBhZGRTZWNvbmRzIH0gZnJvbSBcIi4uL2RlcHMvZGF0ZS1mbnMudHNcIjtcbmltcG9ydCB7IGNhcmV0LCBnZXRUZXh0LCBpbnNlcnRMaW5lIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtc3RkLWRvbS50c1wiO1xuXG5jb25zdCBpbnRlcnZhbCA9IDUgKiA2MDsgLy8gNSBtaW51dGVzXG4vKiog44Kr44O844K944Or6KGM44Gu5LiL44Gr44K/44K544Kv44KS6L+95Yqg44GZ44KLXG4gKlxuICog44Kr44O844K944Or6KGM44GM44K/44K544Kv44Gg44Gj44Gf5aC05ZCI44Gv44CB44Gd44Gu44K/44K544Kv44Gu5pel5LuY44Go5LqI5a6a6ZaL5aeL5pmC5Yi744CB6KaL56mN44KC44KK5pmC6ZaT44KS5byV44GN57aZ44GQXG4gKi9cbmV4cG9ydCBjb25zdCBhZGRUYXNrID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBsaW5lUG9zID0gY2FyZXQoKS5wb3NpdGlvbi5saW5lO1xuICBjb25zdCB0YXNrTGluZSA9IHBhcnNlKGdldFRleHQobGluZVBvcykgPz8gXCJcIik7XG5cbiAgLy8g54++5Zyo6KGM44GM44K/44K544Kv44Gq44KJ44CB44Gd44KM44Go5ZCM44GY5pel5LuY44Gr44GZ44KLXG4gIC8vIOmBleOBo+OBn+OCieS7iuaXpeOBq+OBmeOCi1xuICBjb25zdCBiYXNlID0gdGFza0xpbmU/LmJhc2UgPz8gbmV3IERhdGUoKTtcblxuICAvLyDkuojlrprplovlp4vmmYLliLvjgajopovnqY3jgoLjgormmYLplpPjgpLoqIjnrpfjgZnjgotcbiAgY29uc3QgcGxhbiA9IHtcbiAgICBzdGFydDogdGFza0xpbmU/LnBsYW4/LnN0YXJ0XG4gICAgICAvLyDkuojlrprplovlp4vmmYLliLvjga/jgIHjgZ3jga7liY3jga7jgr/jgrnjgq/jga7opovnqY3jgoLjgormmYLplpPjgatpbnRlcnZhbOOCkui2s+OBl+OBn+OCguOBruOBoOOBkeOBmuOCieOBl+OBpuOBiuOBj1xuICAgICAgPyBhZGRTZWNvbmRzKFxuICAgICAgICB0YXNrTGluZS5wbGFuLnN0YXJ0LFxuICAgICAgICBpbnRlcnZhbCArICh0YXNrTGluZS5wbGFuLmR1cmF0aW9uID8/IDApLFxuICAgICAgKVxuICAgICAgOiB1bmRlZmluZWQsXG4gICAgZHVyYXRpb246IHRhc2tMaW5lPy5wbGFuPy5kdXJhdGlvbixcbiAgfTtcblxuICAvLyDjgqvjg7zjgr3jg6vooYzjga7kuIvjgavmm7jjgY3ovrzjgoBcbiAgYXdhaXQgaW5zZXJ0TGluZShcbiAgICBsaW5lUG9zICsgMSxcbiAgICB0b1N0cmluZyh7IHRpdGxlOiBcIlwiLCBiYXNlLCBwbGFuLCByZWNvcmQ6IHt9IH0pLFxuICApO1xufTtcbiIsICJpbXBvcnQgeyBjYXJldCwgZ2V0VGV4dCwgcmVwbGFjZUxpbmVzIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtc3RkLWRvbS50c1wiO1xuaW1wb3J0IHsgcGFyc2UsIHRvU3RyaW5nIH0gZnJvbSBcIi4uL3Rhc2sudHNcIjtcblxuLyoqIOOCq+ODvOOCveODq+ihjOOBruOCv+OCueOCr+OCkumWi+Wni+OBmeOCi1xuICpcbiAqIOaXouOBq+mWi+Wni+OBleOCjOOBpuOBhOOBn+OCieOAgemWi+Wni+OCkuOCreODo+ODs+OCu+ODq+OBmeOCi1xuICovXG5leHBvcnQgY29uc3Qgc3RhcnRUYXNrID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBsaW5lUG9zID0gY2FyZXQoKS5wb3NpdGlvbi5saW5lO1xuICBjb25zdCB0YXNrTGluZSA9IHBhcnNlKGdldFRleHQobGluZVBvcykgPz8gXCJcIik7XG4gIGlmICghdGFza0xpbmUpIHJldHVybjsgLy8g44K/44K544Kv44Gn44Gq44GR44KM44Gw5L2V44KC44GX44Gq44GEXG4gIGNvbnN0IHsgcmVjb3JkOiB7IHN0YXJ0LCBlbmQgfSwgLi4ucmVzdCB9ID0gdGFza0xpbmU7XG4gIGlmIChlbmQpIHJldHVybjsgLy8g44GZ44Gn44Gr57WC5LqG44GX44Gm44GE44Gf44KJ5L2V44KC44GX44Gq44GEXG5cbiAgLy8g6ZaL5aeL5pmC5Yi744KSdG9nZ2xl44GZ44KLXG4gIGF3YWl0IHJlcGxhY2VMaW5lcyhcbiAgICBsaW5lUG9zLFxuICAgIGxpbmVQb3MsXG4gICAgdG9TdHJpbmcoe1xuICAgICAgcmVjb3JkOiB7IHN0YXJ0OiAhc3RhcnQgPyBuZXcgRGF0ZSgpIDogdW5kZWZpbmVkIH0sXG4gICAgICAuLi5yZXN0LFxuICAgIH0pLFxuICApO1xufTtcbiIsICJpbXBvcnQgeyBwYXJzZSwgdG9TdHJpbmcgfSBmcm9tIFwiLi4vdGFzay50c1wiO1xuaW1wb3J0IHsgY2FyZXQsIGdldFRleHQsIHJlcGxhY2VMaW5lcyB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXN0ZC1kb20udHNcIjtcblxuLyoqIOOCq+ODvOOCveODq+ihjOOBruOCv+OCueOCr+OCkue1guS6huOBmeOCi1xuICpcbiAqIOaXouOBq+e1guS6huOBl+OBpuOBhOOBn+OCieOAgee1guS6huOCkuOCreODo+ODs+OCu+ODq+OBmeOCi1xuICog6ZaL5aeL44GV44KM44Gm44GE44Gq44GE44K/44K544Kv44Gr44Gv5Yq55p6c44GM44Gq44GEXG4gKi9cbmV4cG9ydCBjb25zdCBlbmRUYXNrID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBsaW5lUG9zID0gY2FyZXQoKS5wb3NpdGlvbi5saW5lO1xuICBjb25zdCB0YXNrTGluZSA9IHBhcnNlKGdldFRleHQobGluZVBvcykgPz8gXCJcIik7XG4gIGlmICghdGFza0xpbmUpIHJldHVybjsgLy8g44K/44K544Kv44Gn44Gq44GR44KM44Gw5L2V44KC44GX44Gq44GEXG4gIGNvbnN0IHsgcmVjb3JkOiB7IHN0YXJ0LCBlbmQgfSwgLi4ucmVzdCB9ID0gdGFza0xpbmU7XG4gIGlmICghc3RhcnQpIHJldHVybjsgLy8g44G+44Gg6ZaL5aeL44GX44Gm44GE44Gq44GL44Gj44Gf44KJ5L2V44KC44GX44Gq44GEXG5cbiAgLy8g57WC5LqG5pmC5Yi744KSdG9nZ2xl44GZ44KLXG4gIGF3YWl0IHJlcGxhY2VMaW5lcyhcbiAgICBsaW5lUG9zLFxuICAgIGxpbmVQb3MsXG4gICAgdG9TdHJpbmcoe1xuICAgICAgcmVjb3JkOiB7IHN0YXJ0LCBlbmQ6ICghZW5kID8gbmV3IERhdGUoKSA6IHVuZGVmaW5lZCkgfSxcbiAgICAgIC4uLnJlc3QsXG4gICAgfSksXG4gICk7XG59O1xuIiwgImltcG9ydCB7IGNhcmV0LCBnZXRUZXh0LCByZXBsYWNlTGluZXMgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1zdGQtZG9tLnRzXCI7XG5pbXBvcnQgeyBwYXJzZSwgdG9TdHJpbmcgfSBmcm9tIFwiLi4vdGFzay50c1wiO1xuaW1wb3J0IHsgc3RhcnRUYXNrIH0gZnJvbSBcIi4vc3RhcnRUYXNrLnRzXCI7XG5pbXBvcnQgeyBlbmRUYXNrIH0gZnJvbSBcIi4vZW5kVGFzay50c1wiO1xuXG4vKiog44Kr44O844K944Or6KGM44Gu44K/44K544Kv44KS54q25oWL44KSY3ljbGlj44Gr5aSJ5pu044GZ44KLbWV0aG9kXG4gKlxuICog5Lul5LiL44Gu6aCG44Gr54q25oWL44GM5aSJ5YyW44GZ44KLXG4gKiAxLiDmnKrplovlp4tcbiAqIDIuIOmWi+Wni1xuICogMy4g57WC5LqGXG4gKiA0LiDmnKrplovlp4tcbiAqIC4uLlxuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlVGFzayA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgbGluZVBvcyA9IGNhcmV0KCkucG9zaXRpb24ubGluZTtcbiAgY29uc3QgdGFza0xpbmUgPSBwYXJzZShnZXRUZXh0KGxpbmVQb3MpID8/IFwiXCIpO1xuICBpZiAoIXRhc2tMaW5lKSByZXR1cm47IC8vIOOCv+OCueOCr+OBp+OBquOBkeOCjOOBsOS9leOCguOBl+OBquOBhFxuICBjb25zdCB7IHJlY29yZDogeyBzdGFydCwgZW5kIH0sIC4uLnJlc3QgfSA9IHRhc2tMaW5lO1xuXG4gIC8vIOmWi+Wni+OBl+OBpuOBhOOBquOBhOOBqOOBjeOBr+mWi+Wni+OBmeOCi1xuICBpZiAoIXN0YXJ0KSB7XG4gICAgYXdhaXQgc3RhcnRUYXNrKCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIOe1guS6huOBl+OBpuOBhOOBquOBhOOBqOOBjeOBr+e1guS6huOBmeOCi1xuICBpZiAoIWVuZCkge1xuICAgIGF3YWl0IGVuZFRhc2soKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyDjgZnjgafjgavntYLkuobjgZfjgabjgYTjgovjgr/jgrnjgq/jga/mnKrplovlp4vjgavmiLvjgZlcbiAgYXdhaXQgcmVwbGFjZUxpbmVzKFxuICAgIGxpbmVQb3MsXG4gICAgbGluZVBvcyxcbiAgICB0b1N0cmluZyh7XG4gICAgICByZWNvcmQ6IHt9LFxuICAgICAgLi4ucmVzdCxcbiAgICB9KSxcbiAgKTtcbn07XG4iLCAiaW1wb3J0IHsgcGFyc2UsIHRvU3RyaW5nIH0gZnJvbSBcIi4uL3Rhc2sudHNcIjtcbmltcG9ydCB7IGVuZFRhc2sgfSBmcm9tIFwiLi9lbmRUYXNrLnRzXCI7XG5pbXBvcnQge1xuICBjYXJldCxcbiAgZ2V0TGluZXMsXG4gIGdldFRleHQsXG4gIHJlcGxhY2VMaW5lcyxcbn0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtc3RkLWRvbS50c1wiO1xuXG4vKiog44Kr44O844K944Or6KGM44Gu44K/44K544Kv44KS5LqL5b6M5aCx5ZGK55qE44Gr57WC5LqG44GZ44KLXG4gKlxuICog44Kr44O844K944Or6KGM44KI44KK5YmN44Gr44GC44KL44K/44K544Kv44Gu57WC5LqG5pmC5Yi744KS6ZaL5aeL5pmC5Yi744Go44GX44Gm6KiY5YWl44GZ44KLXG4gKiDjgqvjg7zjgr3jg6vooYzjgojjgorliY3jgavntYLkuobjgZfjgabjgYTjgovjgr/jgrnjgq/jgYzkuIDjgaTjgoLjgarjgYTjgajjgY3jga/jgIHnj77lnKjmmYLliLvjgpLplovlp4vmmYLliLvjgajjgZnjgotcbiAqXG4gKiDml6Ljgavplovlp4vjgZfjgabjgYTjgovjgr/jgrnjgq/jgaDjgaPjgZ/loLTlkIjjga/jgIFgZW5kVGFzaygpYOOBqOWQjOOBmOWHpueQhuOCkuihjOOBhlxuICovXG5leHBvcnQgY29uc3QgcG9zdGVyaW9yaUVuZFRhc2sgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGxpbmVQb3MgPSBjYXJldCgpLnBvc2l0aW9uLmxpbmU7XG4gIGNvbnN0IHRhc2tMaW5lID0gcGFyc2UoZ2V0VGV4dChsaW5lUG9zKSA/PyBcIlwiKTtcbiAgaWYgKCF0YXNrTGluZSkgcmV0dXJuOyAvLyDjgr/jgrnjgq/jgafjgarjgZHjgozjgbDkvZXjgoLjgZfjgarjgYRcbiAgY29uc3QgeyByZWNvcmQ6IHsgc3RhcnQsIGVuZCB9LCAuLi5yZXN0IH0gPSB0YXNrTGluZTtcbiAgaWYgKHN0YXJ0KSB7XG4gICAgaWYgKGVuZCkgcmV0dXJuO1xuICAgIGF3YWl0IGVuZFRhc2soKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGVuZCkgcmV0dXJuO1xuXG4gIC8vIOebtOi/keOBruOCv+OCueOCr+OBrue1guS6huaXpeaZguOCkuWPluW+l+OBmeOCi1xuICBsZXQgcHJldkVuZDogRGF0ZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgZm9yIChjb25zdCB7IHRleHQgfSBvZiBnZXRMaW5lcygpLnNsaWNlKDAsIChsaW5lUG9zID8/IDApICsgMSkucmV2ZXJzZSgpKSB7XG4gICAgY29uc3QgeyByZWNvcmQgfSA9IHBhcnNlKHRleHQpID8/IHt9O1xuICAgIGlmIChyZWNvcmQ/LmVuZCkge1xuICAgICAgcHJldkVuZCA9IHJlY29yZC5lbmQ7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyDkuIrmm7jjgY3jgZnjgotcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgYXdhaXQgcmVwbGFjZUxpbmVzKFxuICAgIGxpbmVQb3MsXG4gICAgbGluZVBvcyxcbiAgICB0b1N0cmluZyh7XG4gICAgICByZWNvcmQ6IHsgc3RhcnQ6IHByZXZFbmQgPz8gbm93LCBlbmQ6IG5vdyB9LFxuICAgICAgLi4ucmVzdCxcbiAgICB9KSxcbiAgKTtcbn07XG4iLCAiaW1wb3J0IHsgY2FyZXQgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1zdGQtZG9tLnRzXCI7XG5cbi8qKiDpgbjmip7nr4Tlm7LjgavlkKvjgb7jgozjgovooYzjgYvjgqvjg7zjgr3jg6vjgYzjgYTjgovooYzjgpLov5TjgZkgKi9cbmV4cG9ydCBjb25zdCBnZXRMaW5lUmFuZ2UgPSAoKTogcmVhZG9ubHkgW251bWJlciwgbnVtYmVyXSA9PiB7XG4gIGNvbnN0IHsgc2VsZWN0aW9uUmFuZ2U6IHsgc3RhcnQsIGVuZCB9LCBzZWxlY3RlZFRleHQsIHBvc2l0aW9uIH0gPSBjYXJldCgpO1xuICByZXR1cm4gc2VsZWN0ZWRUZXh0ID09PSBcIlwiXG4gICAgPyBbcG9zaXRpb24ubGluZSwgcG9zaXRpb24ubGluZV1cbiAgICA6IHN0YXJ0LmxpbmUgPiBlbmQubGluZVxuICAgID8gW2VuZC5saW5lLCBzdGFydC5saW5lXVxuICAgIDogW3N0YXJ0LmxpbmUsIGVuZC5saW5lXSBhcyBjb25zdDtcbn07XG4iLCAiLyoqIOmWi+Wni+aXpeaZguOCkuioiOeul+OBmeOCi1xuICpcbiAqIEBwYXJhbSBoYXBwZW4g44K/44K544Kv44GM55m655Sf44GX44Gf5pel5pmC44GuVU5JWOaZguWIu1xuICogQHBhcmFtIGR1cmF0aW9uIOeZuueUn+OBi+OCieS9leaXpeebruOBvuOBp+OCkue3oOOCgeWIh+OCiuOBqOOBmeOCi+OBi1xuICogQHJldHVybiDplovlp4vml6XmmYJcbiAqL1xuZXhwb3J0IGNvbnN0IGNhbGNTdGFydCA9IChoYXBwZW46IG51bWJlciwgZHVyYXRpb24gPSA3KTogRGF0ZSA9PlxuICBuZXcgRGF0ZShcbiAgICAoXG4gICAgICBoYXBwZW4gK1xuICAgICAgKDI0ICogNjAgKiA2MCAqIDMwICogKChkdXJhdGlvbiArIDEpICoqIDEuNSAtIDEpKSAvICgoMzAwICsgMSkgKiogMS41IC0gMSlcbiAgICApICogMTAwMCxcbiAgKTtcbiIsICJpbXBvcnQgdHlwZSB7IERhdGVWYWx1ZXMsIER1cmF0aW9uIH0gZnJvbSBcIi4vZGVwcy9kYXRlLWZucy50c1wiO1xuaW1wb3J0IHsgYWRkLCBzZXQgfSBmcm9tIFwiLi9kZXBzL2RhdGUtZm5zLnRzXCI7XG5pbXBvcnQgeyBjYWxjU3RhcnQgfSBmcm9tIFwiLi9jYWxjU3RhcnQudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTcGVjaWZpZXJSZXN1bHQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHN0YXJ0PzogRGF0ZTtcbiAgLyoqIOWNmOS9jeOBr+enkiAqLyBkdXJhdGlvbj86IG51bWJlcjtcbn1cbmV4cG9ydCBjb25zdCBwYXJzZVNwZWNpZmllciA9IChcbiAgdGV4dDogc3RyaW5nLFxuICBiYXNlOiBEYXRlLFxuKTogU3BlY2lmaWVyUmVzdWx0IHwgdW5kZWZpbmVkID0+IHtcbiAgbGV0IGR1cmF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxldCBuYW1lOiBzdHJpbmc7XG4gIGxldCBwYXJhbTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBsZXQgdHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBsZXQgcGFydHM6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsID0gbnVsbDtcbiAgaWYgKChwYXJ0cyA9IHRleHQubWF0Y2goL14oLio/KShzfGUpOihbXlxcc10rKVxccytkOihcXGQrKS8pKSkge1xuICAgIFssIG5hbWUsIHR5cGUsIHBhcmFtLCBkdXJhdGlvbl0gPSBwYXJ0cztcbiAgfSBlbHNlIGlmICgocGFydHMgPSB0ZXh0Lm1hdGNoKC9eKC4qPylkOihcXGQrKVxccysoc3xlKTooW15cXHNdKykvKSkpIHtcbiAgICBbLCBuYW1lLCBkdXJhdGlvbiwgdHlwZSwgcGFyYW1dID0gcGFydHM7XG4gIH0gZWxzZSBpZiAoKHBhcnRzID0gdGV4dC5tYXRjaCgvXiguKj8pKHN8ZSk6KFteXFxzXSspLykpKSB7XG4gICAgWywgbmFtZSwgdHlwZSwgcGFyYW1dID0gcGFydHM7XG4gIH0gZWxzZSBpZiAoKHBhcnRzID0gdGV4dC5tYXRjaCgvXiguKj8pZDooXFxkKykvKSkpIHtcbiAgICBbLCBuYW1lLCBkdXJhdGlvbl0gPSBwYXJ0cztcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogbmFtZS50cmltRW5kKCksXG4gICAgICBkdXJhdGlvbjogcGFyc2VJbnQoZHVyYXRpb24pICogNjAsXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKGNvbnN0IHsgdGVzdCwgcGFyc2UgfSBvZiBwYXJzZXJzKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHBhcmFtLm1hdGNoKHRlc3QpO1xuICAgIGlmICghbWF0Y2hlcykgY29udGludWU7XG5cbiAgICBjb25zdCBkYXRhID0gcGFyc2UobWF0Y2hlcyk7XG4gICAgY29uc3QgZGF0ZSA9IGRhdGEuaXNEdXJhdGlvbiA/IGFkZChiYXNlLCBkYXRhKSA6IHNldChiYXNlLCBkYXRhKTtcbiAgICBpZiAodHlwZSA9PT0gXCJzXCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IG5hbWUudHJpbUVuZCgpLFxuICAgICAgICBzdGFydDogZGF0ZSxcbiAgICAgICAgLi4uKGR1cmF0aW9uICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHsgZHVyYXRpb246IHBhcnNlSW50KGR1cmF0aW9uKSAqIDYwIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBuYW1lLnRyaW1FbmQoKSxcbiAgICAgIHN0YXJ0OiBjYWxjU3RhcnQoXG4gICAgICAgIGJhc2UuZ2V0VGltZSgpIC8gMTAwMCxcbiAgICAgICAgKGRhdGUuZ2V0VGltZSgpIC0gYmFzZS5nZXRUaW1lKCkpIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApLFxuICAgICAgKSxcbiAgICAgIC4uLihkdXJhdGlvbiAhPT0gdW5kZWZpbmVkID8geyBkdXJhdGlvbjogcGFyc2VJbnQoZHVyYXRpb24pICogNjAgfSA6IHt9KSxcbiAgICB9O1xuICB9XG59O1xuXG5pbnRlcmZhY2UgUGFyc2VyIHtcbiAgdGVzdDogUmVnRXhwO1xuICBwYXJzZTogKFxuICAgIG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5LFxuICApID0+XG4gICAgfCAoeyBpc0R1cmF0aW9uOiBmYWxzZSB9ICYgRGF0ZVZhbHVlcylcbiAgICB8ICh7IGlzRHVyYXRpb246IHRydWUgfSAmIER1cmF0aW9uKTtcbn1cbmNvbnN0IHBhcnNlcnM6IFBhcnNlcltdID0gW1xuICB7XG4gICAgdGVzdDogLyhcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pVChcXGR7Mn0pOihcXGR7Mn0pJC9pLFxuICAgIHBhcnNlOiAobWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzRHVyYXRpb246IGZhbHNlLFxuICAgICAgICB5ZWFyOiBwYXJzZUludChtYXRjaFsxXSksXG4gICAgICAgIG1vbnRoOiBwYXJzZUludChtYXRjaFsyXSkgLSAxLFxuICAgICAgICBkYXRlOiBwYXJzZUludChtYXRjaFszXSksXG4gICAgICAgIGhvdXJzOiBwYXJzZUludChtYXRjaFs0XSksXG4gICAgICAgIG1pbnV0ZXM6IHBhcnNlSW50KG1hdGNoWzVdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC8oXFxkezR9KS0oXFxkezJ9KS0oXFxkezJ9KVQoXFxkezJ9KSQvaSxcbiAgICBwYXJzZTogKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0R1cmF0aW9uOiBmYWxzZSxcbiAgICAgICAgeWVhcjogcGFyc2VJbnQobWF0Y2hbMV0pLFxuICAgICAgICBtb250aDogcGFyc2VJbnQobWF0Y2hbMl0pIC0gMSxcbiAgICAgICAgZGF0ZTogcGFyc2VJbnQobWF0Y2hbM10pLFxuICAgICAgICBob3VyczogcGFyc2VJbnQobWF0Y2hbNF0pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdGVzdDogLyhcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pVD8kL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogZmFsc2UsXG4gICAgICAgIHllYXI6IHBhcnNlSW50KG1hdGNoWzFdKSxcbiAgICAgICAgbW9udGg6IHBhcnNlSW50KG1hdGNoWzJdKSAtIDEsXG4gICAgICAgIGRhdGU6IHBhcnNlSW50KG1hdGNoWzNdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC8oXFxkezJ9KS0oXFxkezJ9KVQoXFxkezJ9KTooXFxkezJ9KSQvaSxcbiAgICBwYXJzZTogKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0R1cmF0aW9uOiBmYWxzZSxcbiAgICAgICAgbW9udGg6IHBhcnNlSW50KG1hdGNoWzFdKSAtIDEsXG4gICAgICAgIGRhdGU6IHBhcnNlSW50KG1hdGNoWzJdKSxcbiAgICAgICAgaG91cnM6IHBhcnNlSW50KG1hdGNoWzNdKSxcbiAgICAgICAgbWludXRlczogcGFyc2VJbnQobWF0Y2hbNF0pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdGVzdDogLyhcXGR7Mn0pLShcXGR7Mn0pVChcXGR7Mn0pJC9pLFxuICAgIHBhcnNlOiAobWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzRHVyYXRpb246IGZhbHNlLFxuICAgICAgICBtb250aDogcGFyc2VJbnQobWF0Y2hbMV0pIC0gMSxcbiAgICAgICAgZGF0ZTogcGFyc2VJbnQobWF0Y2hbMl0pLFxuICAgICAgICBob3VyczogcGFyc2VJbnQobWF0Y2hbM10pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdGVzdDogLyhcXGR7Mn0pLShcXGR7Mn0pVD8kL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogZmFsc2UsXG4gICAgICAgIG1vbnRoOiBwYXJzZUludChtYXRjaFsxXSkgLSAxLFxuICAgICAgICBkYXRlOiBwYXJzZUludChtYXRjaFsyXSksXG4gICAgICB9O1xuICAgIH0sXG4gIH0sXG4gIHtcbiAgICB0ZXN0OiAvKFxcZHsyfSlUKFxcZHsyfSk6KFxcZHsyfSkkL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogZmFsc2UsXG4gICAgICAgIGRhdGU6IHBhcnNlSW50KG1hdGNoWzFdKSxcbiAgICAgICAgaG91cnM6IHBhcnNlSW50KG1hdGNoWzJdKSxcbiAgICAgICAgbWludXRlczogcGFyc2VJbnQobWF0Y2hbM10pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdGVzdDogLyhcXGR7Mn0pVChcXGR7Mn0pJC9pLFxuICAgIHBhcnNlOiAobWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzRHVyYXRpb246IGZhbHNlLFxuICAgICAgICBkYXRlOiBwYXJzZUludChtYXRjaFsxXSksXG4gICAgICAgIGhvdXJzOiBwYXJzZUludChtYXRjaFsyXSksXG4gICAgICB9O1xuICAgIH0sXG4gIH0sXG4gIHtcbiAgICB0ZXN0OiAvVD8oXFxkezJ9KTooXFxkezJ9KSQvaSxcbiAgICBwYXJzZTogKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0R1cmF0aW9uOiBmYWxzZSxcbiAgICAgICAgaG91cnM6IHBhcnNlSW50KG1hdGNoWzFdKSxcbiAgICAgICAgbWludXRlczogcGFyc2VJbnQobWF0Y2hbMl0pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdGVzdDogL1Q/KFxcZHsyfSkkL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogZmFsc2UsXG4gICAgICAgIGhvdXJzOiBwYXJzZUludChtYXRjaFsxXSksXG4gICAgICB9O1xuICAgIH0sXG4gIH0sXG4gIHtcbiAgICB0ZXN0OiAvUChcXGQrKVkoXFxkKylNKFxcZCspRFQoXFxkKylIKFxcZCspTSQvaSxcbiAgICBwYXJzZTogKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0R1cmF0aW9uOiB0cnVlLFxuICAgICAgICB5ZWFyOiBwYXJzZUludChtYXRjaFsxXSksXG4gICAgICAgIG1vbnRoOiBwYXJzZUludChtYXRjaFsyXSkgLSAxLFxuICAgICAgICBkYXlzOiBwYXJzZUludChtYXRjaFszXSksXG4gICAgICAgIGhvdXJzOiBwYXJzZUludChtYXRjaFs0XSksXG4gICAgICAgIG1pbnV0ZXM6IHBhcnNlSW50KG1hdGNoWzVdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC9QKFxcZCspWShcXGQrKU0oXFxkKylEVChcXGQrKUgkL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgeWVhcjogcGFyc2VJbnQobWF0Y2hbMV0pLFxuICAgICAgICBtb250aDogcGFyc2VJbnQobWF0Y2hbMl0pIC0gMSxcbiAgICAgICAgZGF5czogcGFyc2VJbnQobWF0Y2hbM10pLFxuICAgICAgICBob3VyczogcGFyc2VJbnQobWF0Y2hbNF0pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdGVzdDogL1AoXFxkKylZKFxcZCspTShcXGQrKUQkL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgeWVhcjogcGFyc2VJbnQobWF0Y2hbMV0pLFxuICAgICAgICBtb250aDogcGFyc2VJbnQobWF0Y2hbMl0pIC0gMSxcbiAgICAgICAgZGF5czogcGFyc2VJbnQobWF0Y2hbM10pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdGVzdDogL1AoXFxkKylNKFxcZCspRFQoXFxkKylIKFxcZCspTSQvaSxcbiAgICBwYXJzZTogKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0R1cmF0aW9uOiB0cnVlLFxuICAgICAgICBtb250aDogcGFyc2VJbnQobWF0Y2hbMV0pIC0gMSxcbiAgICAgICAgZGF5czogcGFyc2VJbnQobWF0Y2hbMl0pLFxuICAgICAgICBob3VyczogcGFyc2VJbnQobWF0Y2hbM10pLFxuICAgICAgICBtaW51dGVzOiBwYXJzZUludChtYXRjaFs0XSksXG4gICAgICB9O1xuICAgIH0sXG4gIH0sXG4gIHtcbiAgICB0ZXN0OiAvUChcXGQrKU0oXFxkKylEVChcXGQrKUgkL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgbW9udGg6IHBhcnNlSW50KG1hdGNoWzFdKSAtIDEsXG4gICAgICAgIGRheXM6IHBhcnNlSW50KG1hdGNoWzJdKSxcbiAgICAgICAgaG91cnM6IHBhcnNlSW50KG1hdGNoWzNdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC9QKFxcZCspTShcXGQrKUQkL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgbW9udGg6IHBhcnNlSW50KG1hdGNoWzFdKSAtIDEsXG4gICAgICAgIGRheXM6IHBhcnNlSW50KG1hdGNoWzJdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC9QKFxcZCspRFQoXFxkKylIKFxcZCspTSQvaSxcbiAgICBwYXJzZTogKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0R1cmF0aW9uOiB0cnVlLFxuICAgICAgICBkYXlzOiBwYXJzZUludChtYXRjaFsxXSksXG4gICAgICAgIGhvdXJzOiBwYXJzZUludChtYXRjaFsyXSksXG4gICAgICAgIG1pbnV0ZXM6IHBhcnNlSW50KG1hdGNoWzNdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC9QKFxcZCspRFQoXFxkKylIJC9pLFxuICAgIHBhcnNlOiAobWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzRHVyYXRpb246IHRydWUsXG4gICAgICAgIGRheXM6IHBhcnNlSW50KG1hdGNoWzFdKSxcbiAgICAgICAgaG91cnM6IHBhcnNlSW50KG1hdGNoWzJdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC9QKFxcZCspRCQvaSxcbiAgICBwYXJzZTogKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0R1cmF0aW9uOiB0cnVlLFxuICAgICAgICBkYXlzOiBwYXJzZUludChtYXRjaFsxXSksXG4gICAgICB9O1xuICAgIH0sXG4gIH0sXG4gIHtcbiAgICB0ZXN0OiAvUFQ/KFxcZCspSChcXGQrKU0kL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgaG91cnM6IHBhcnNlSW50KG1hdGNoWzFdKSxcbiAgICAgICAgbWludXRlczogcGFyc2VJbnQobWF0Y2hbMl0pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdGVzdDogL1BUPyhcXGQrKUgkL2ksXG4gICAgcGFyc2U6IChtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNEdXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgaG91cnM6IHBhcnNlSW50KG1hdGNoWzFdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC9QVD8oXFxkKylNJC9pLFxuICAgIHBhcnNlOiAobWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzRHVyYXRpb246IHRydWUsXG4gICAgICAgIG1pbnV0ZXM6IHBhcnNlSW50KG1hdGNoWzFdKSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IC9QKFxcZCspVyQvaSxcbiAgICBwYXJzZTogKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc0R1cmF0aW9uOiB0cnVlLFxuICAgICAgICB3ZWVrczogcGFyc2VJbnQobWF0Y2hbMV0pLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxuXTtcbiIsICJpbXBvcnQgeyB0b1N0cmluZyB9IGZyb20gXCIuLi90YXNrLnRzXCI7XG5pbXBvcnQgeyBnZXRMaW5lUmFuZ2UgfSBmcm9tIFwiLi9nZXRMaW5lUmFuZ2UudHNcIjtcbmltcG9ydCB7IHBhcnNlU3BlY2lmaWVyIH0gZnJvbSBcIi4uL3BhcnNlU3BlY2lmaWVyLnRzXCI7XG5pbXBvcnQgeyBnZXRMaW5lcywgcmVwbGFjZUxpbmVzIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtc3RkLWRvbS50c1wiO1xuXG4vKiog6YG45oqe56+E5Zuy5Lit44Gu6KGM44GL44KJ44CB5LiA6KGM44GU44Go44Gr5paw44GX44GE44K/44K544Kv44KS5L2c44KLICovXG5leHBvcnQgY29uc3QgY3JlYXRlVGFzayA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgYmFzZSA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IFtzdGFydCwgZW5kXSA9IGdldExpbmVSYW5nZSgpO1xuXG4gIGNvbnN0IGxpbmVzID0gZ2V0TGluZXMoKS5zbGljZShzdGFydCwgZW5kICsgMSkubWFwKChsaW5lKSA9PiBsaW5lLnRleHQpO1xuICBjb25zdCB0ZXh0ID0gbGluZXNcbiAgICAuZmxhdE1hcCgobGluZSkgPT4ge1xuICAgICAgLy8g6YG45oqe56+E5Zuy44GL44KJ5Yik5pat44GZ44KL6aCF55uu44Go6ZaL5aeL5pel5pmC44KS5Y+W5b6X44GZ44KLXG4gICAgICBjb25zdCB0ZXh0ID0gbGluZS50cmltRW5kKCk7IC8vIOOCpOODs+ODh+ODs+ODiOOBr+e2reaMgeOBmeOCi1xuICAgICAgaWYgKHRleHQgPT09IFwiXCIpIHJldHVybiBsaW5lO1xuICAgICAgY29uc3QgeyBuYW1lLCBzdGFydCwgZHVyYXRpb24gfSA9IHBhcnNlU3BlY2lmaWVyKHRleHQsIGJhc2UpID8/IHt9O1xuICAgICAgaWYgKCFuYW1lIHx8ICghc3RhcnQgJiYgIWR1cmF0aW9uKSkgcmV0dXJuIGxpbmU7XG5cbiAgICAgIC8vIOOCv+OCueOCr+OBruaWh+Wtl+WIl+OCkuS9nOOCi1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgdG9TdHJpbmcoe1xuICAgICAgICAgIHRpdGxlOiBuYW1lLnRyaW0oKSxcbiAgICAgICAgICBiYXNlOiBzdGFydCA/PyBiYXNlLFxuICAgICAgICAgIHBsYW46IHsgc3RhcnQsIGR1cmF0aW9uIH0sXG4gICAgICAgICAgcmVjb3JkOiB7fSxcbiAgICAgICAgfSksXG4gICAgICBdO1xuICAgIH0pLmpvaW4oXCJcXG5cIik7XG5cbiAgLy8g5L2V44KC5aSJ5YyW44GX44Gq44GR44KM44Gw5pu444GN6L6844G+44Gq44GEXG4gIGlmIChsaW5lcy5qb2luKFwiXFxuXCIpID09PSB0ZXh0KSByZXR1cm47XG5cbiAgLy8g5pu444GN6L6844KAXG4gIGF3YWl0IHJlcGxhY2VMaW5lcyhzdGFydCwgZW5kLCB0ZXh0KTtcbn07XG4iLCAiaW1wb3J0IHsgZ2V0VGV4dCwgcmVwbGFjZUxpbmVzIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtc3RkLWRvbS50c1wiO1xuaW1wb3J0IHsgcGFyc2UsIFRhc2ssIHRvU3RyaW5nIH0gZnJvbSBcIi4uL3Rhc2sudHNcIjtcblxuLyoqIOaMh+WumuevhOWbsuWGheOBruWFqOOBpuOBruOCv+OCueOCr+OCkuS4gOaLrOaTjeS9nOOBmeOCi1xuICpcbiAqIEBwYXJhbSBzdGFydCDpgbjmip7nr4Tlm7Ljga7lhYjpoK3jga7ooYxcbiAqIEBwYXJhbSBlbmQg6YG45oqe56+E5Zuy44Gu5pyr5bC+44Gu6KGMXG4gKiBAcGFyYW0gY2hhbmdlIOWQhOOCv+OCueOCr+OBq+mBqeeUqOOBmeOCi+aTjeS9nFxuICovXG5leHBvcnQgY29uc3QgbW9kaWZ5VGFza3MgPSBhc3luYyAoXG4gIHN0YXJ0OiBudW1iZXIsXG4gIGVuZDogbnVtYmVyLFxuICBjaGFuZ2U6IChcbiAgICAvKiog5aSJ5pu044GZ44KL44K/44K544KvICovIHRhc2s6IFRhc2ssXG4gICAgLyoqIOOCv+OCueOCr+OCkuWPluW+l+OBl+OBn+ihjOOBruihjOeVquWPtyAqLyBpbmRleDogbnVtYmVyLFxuICApID0+IFRhc2ssXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgbGluZXMgPSBbXSBhcyBzdHJpbmdbXTtcbiAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKSB7XG4gICAgY29uc3QgdGV4dCA9IGdldFRleHQoaSkgPz8gXCJcIjtcbiAgICBjb25zdCB0YXNrID0gcGFyc2UodGV4dCk7XG4gICAgLy8g44K/44K544Kv44Go44G/44Gq44GV44KM44Gf6KGM44Gg44GR5aSJ5pu044GZ44KLXG4gICAgaWYgKCF0YXNrKSB7XG4gICAgICBsaW5lcy5wdXNoKHRleHQpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGxpbmVzLnB1c2godG9TdHJpbmcoY2hhbmdlKHRhc2ssIGkpKSk7XG4gIH1cbiAgYXdhaXQgcmVwbGFjZUxpbmVzKHN0YXJ0LCBlbmQsIGxpbmVzLmpvaW4oXCJcXG5cIikpO1xufTtcbiIsICJpbXBvcnQgeyBhZGREYXlzIH0gZnJvbSBcIi4uL2RlcHMvZGF0ZS1mbnMudHNcIjtcbmltcG9ydCB7IGdldExpbmVSYW5nZSB9IGZyb20gXCIuL2dldExpbmVSYW5nZS50c1wiO1xuaW1wb3J0IHsgbW9kaWZ5VGFza3MgfSBmcm9tIFwiLi9tb2RpZnlUYXNrcy50c1wiO1xuXG4vKiog44Kr44O844K944Or6KGM44KC44GX44GP44Gv6YG45oqe56+E5Zuy5YaF44Gu5YWo44Gm44Gu44K/44K544Kv44Gu5pel5LuY44KS6YCy44KB44KLXG4gKlxuICogQHBhcmFtIFtjb3VudD0xXSDpgLLjgoHjgovml6XmlbBcbiAqL1xuZXhwb3J0IGNvbnN0IHdhbGtEYXkgPSBhc3luYyAoY291bnQgPSAxKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IFtzdGFydCwgZW5kXSA9IGdldExpbmVSYW5nZSgpO1xuICBhd2FpdCBtb2RpZnlUYXNrcyhzdGFydCwgZW5kLCAodGFzaykgPT4ge1xuICAgIHRhc2suYmFzZSA9IGFkZERheXModGFzay5iYXNlLCBjb3VudCk7XG4gICAgcmV0dXJuIHRhc2s7XG4gIH0pO1xufTtcbiIsICJpbXBvcnQgeyBpc1NhbWVEYXkgfSBmcm9tIFwiLi4vZGVwcy9kYXRlLWZucy50c1wiO1xuaW1wb3J0IHsgZ2V0TGluZVJhbmdlIH0gZnJvbSBcIi4vZ2V0TGluZVJhbmdlLnRzXCI7XG5pbXBvcnQgeyBtb2RpZnlUYXNrcyB9IGZyb20gXCIuL21vZGlmeVRhc2tzLnRzXCI7XG5cbi8qKiDjgqvjg7zjgr3jg6vooYzjgoLjgZfjgY/jga/pgbjmip7nr4Tlm7LlhoXjga7lhajjgabjga7jgr/jgrnjgq/jga7ml6Xku5jjgpLku4rml6XjgavjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBtb3ZlVG9kYXkgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IFtzdGFydCwgZW5kXSA9IGdldExpbmVSYW5nZSgpO1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBhd2FpdCBtb2RpZnlUYXNrcyhzdGFydCwgZW5kLCAodGFzaykgPT4ge1xuICAgIC8vIOaXpeS7mOOBq+WkieabtOOBjOOBquOBkeOCjOOBsOS9leOCguOBl+OBquOBhFxuICAgIGlmIChpc1NhbWVEYXkodGFzay5iYXNlLCBub3cpKSByZXR1cm4gdGFzaztcbiAgICB0YXNrLmJhc2UgPSBub3c7XG4gICAgcmV0dXJuIHRhc2s7XG4gIH0pO1xufTtcbiIsICJpbXBvcnQge1xuICBhZGRIb3VycyxcbiAgY29tcGFyZUFzYyxcbiAgaXNBZnRlcixcbiAgaXNWYWxpZCxcbiAgbGlnaHRGb3JtYXQsXG4gIHN1YkRheXMsXG59IGZyb20gXCIuL2RlcHMvZGF0ZS1mbnMudHNcIjtcbmltcG9ydCB7IGVuZERhdGUsIHBhcnNlTGluZXMsIHN0YXJ0RGF0ZSwgVGFza0Jsb2NrLCB0b1N0cmluZyB9IGZyb20gXCIuL3Rhc2sudHNcIjtcblxuY29uc3QgYmFzZVRpdGxlID0gXCLml6XliIroqJjpjLJzaGVldFwiO1xuY29uc3QgZGlhcnlSZWdFeHAgPSAv5pel5YiK6KiY6Yyyc2hlZXQgKFxcZHs0fSktKFxcZHsyfSktKFxcZHsyfSkvO1xuY29uc3Qgc2VjdGlvbnMgPSBbXG4gIFwiWyoqIDAwOjAwIC0gMDM6MDBdIOacquaYjlwiLFxuICBcIlsqKiAwMzowMCAtIDA2OjAwXSDmmI7jgZHmlrlcIixcbiAgXCJbKiogMDY6MDAgLSAwOTowMF0g5pydXCIsXG4gIFwiWyoqIDA5OjAwIC0gMTI6MDBdIOaYvOWJjVwiLFxuICBcIlsqKiAxMjowMCAtIDE1OjAwXSDmmLzpgY7jgY5cIixcbiAgXCJbKiogMTU6MDAgLSAxODowMF0g5aSV5pa5XCIsXG4gIFwiWyoqIDE4OjAwIC0gMjE6MDBdIOWknOOBruOBr+OBmOOCgemgg1wiLFxuICBcIlsqKiAyMTowMCAtIDAwOjAwXSDlpJzpgYXjgY9cIixcbl07XG5cbi8qKiDml6Xku5jjg5rjg7zjgrjjgYvjganjgYbjgYvliKTlrprjgZnjgotcbiAqXG4gKiBAcGFyYW0gdGl0bGUg5Yik5a6a44GX44Gf44GE44K/44Kk44OI44OrXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RpYXJ5UGFnZSA9ICh0aXRsZTogc3RyaW5nKTogYm9vbGVhbiA9PiBkaWFyeVJlZ0V4cC50ZXN0KHRpdGxlKTtcblxuLyoqIOaXpeS7mOODmuODvOOCuOOBruOCv+OCpOODiOODq+OCkuaXpeS7mOOBq+WkieaPm+OBmeOCi1xuICpcbiAqIOaXpeS7mOODmuODvOOCuOOBp+OBquOBhOOBqOOBjeOBr2B1bmRlZmluZWRg44KS6L+U44GZXG4gKlxuICogQHBhcmFtIHRpdGxlIOWkieaPm+OBl+OBn+OBhOOCv+OCpOODiOODq1xuICovXG5leHBvcnQgY29uc3QgdG9EYXRlID0gKHRpdGxlOiBzdHJpbmcpOiBEYXRlIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgbWF0Y2hlZCA9IHRpdGxlLm1hdGNoKGRpYXJ5UmVnRXhwKTtcbiAgaWYgKCFtYXRjaGVkKSByZXR1cm47XG4gIGNvbnN0IFssIHllYXIsIG1vbnRoLCBkYXRlXSA9IG1hdGNoZWQ7XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZShwYXJzZUludCh5ZWFyKSwgcGFyc2VJbnQobW9udGgpIC0gMSwgcGFyc2VJbnQoZGF0ZSkpO1xuICByZXR1cm4gaXNWYWxpZChkKSA/IGQgOiB1bmRlZmluZWQ7XG59O1xuXG4vKiog5pel5LuY44GL44KJ5pel5LuY44Oa44O844K444Gu44K/44Kk44OI44Or44KS5L2c44KLXG4gKlxuICogQHBhcmFtIGRhdGUg5pel5LuY44Oa44O844K444Gr44GX44Gf44GE5pel5LuYXG4gKi9cbmV4cG9ydCBjb25zdCB0b1RpdGxlID0gKGRhdGU6IERhdGUpOiBzdHJpbmcgPT5cbiAgbGlnaHRGb3JtYXQoZGF0ZSwgYCcke2Jhc2VUaXRsZX0nIHl5eXktTU0tZGRgKTtcblxuLyoqIOOCv+OCueOCr+ODmuODvOOCuOOCkmZvcm1hdOOBmeOCi1xuICpcbiAqIOW9ouW8j1xuICogLSAx6KGM55uu44GrYHllc3RlcmRheTogW+WJjeaXpeOBruOCv+OCueOCr+ODmuODvOOCuF1g44KS572u44GPXG4gKiAtIDLooYznm67ku6XpmY3jgat0YXNrIGxpbmVz44KS5Lim44G544KLXG4gKiAgIC0g5Lim44Gz6aCG44Gu5rG644KB5pa5XG4gKiAgICAgLSDlrp/nuL7plovlp4vml6XmmYLjga7ml6njgYTpoIbjgavkuKbjgbnjgotcbiAqICAgICAtIOOBvuOBoOmWi+Wni+OBleOCjOOBpuOBhOOBquOBhOOCv+OCueOCr+OBr+OAgeS7o+OCj+OCiuOBq+S6iOWumumWi+Wni+aZguWIu+OCkuS9v+OBhlxuICogICAtIGluZGVudOOBp3Rhc2sgbGluZeOBq+OBtuOCieS4i+OBkuOBn+ihjOOBr+OBneOBruOBvuOBvuOBruS4puOBs+mghuOCkue2reaMgeOBl+OBn+OBvuOBvuOBq+OBmeOCi1xuICogICAtIOmWk+OBqzHml6Xjga7mmYLplpPntLDliIblm7Pjga7jg6njg5njg6vjgpLmjL/lhaXjgZnjgotcbiAqIC0g44Oa44O844K45pyr5bC+44GrdGFzayBsaW5l5Lul5aSW44Gu6KGM44KS572u44GPXG4gKiAgIC0g5Lim44G55pu/44GI44Gv44GX44Gq44GEXG4gKlxuICog44K/44K544Kv44Oa44O844K444Gn44Gq44GR44KM44Gw5L2V44KC44GX44Gq44GE44Gn6L+U44GZXG4gKlxuICogQHBhcmFtIGxpbmVzIGZvcm1hdOOBl+OBn+OBhOOCv+OCueOCr+ODmuODvOOCuOOBruWFqOaWhyjjgr/jgqTjg4jjg6vooYzjgoLlkKvjgoApXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtYXQgPSAobGluZXM6IHN0cmluZ1tdKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCB0b2RheSA9IHRvRGF0ZShsaW5lc1swXSk7XG4gIGlmICghdG9kYXkpIHJldHVybiBsaW5lcztcbiAgY29uc3QgbGFiZWwgPSBtYWtlQmFja0xhYmVsKHRvZGF5KTtcblxuICAvLyDjgr/jgrnjgq/jgajjgqTjg7Pjg4fjg7Pjg4jjga7jgrvjg4Pjg4jjgpLlj5blvpfjgZnjgotcbiAgY29uc3QgdGFza0Jsb2NrczogVGFza0Jsb2NrW10gPSBbXTtcbiAgY29uc3Qgb3RoZXJMaW5lczogc3RyaW5nW10gPSBbXTsgLy8g44K/44K544Kv44OW44Ot44OD44Kv5Lul5aSW44Gu6KGM44Gu55Wq5Y+3XG4gIGZvciAoY29uc3QgaXRlbSBvZiBwYXJzZUxpbmVzKGxpbmVzLnNsaWNlKDEpKSkge1xuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgLy8g6Ieq5YuV44Gn5oy/5YWl44GX44Gf6KGM44Gv5aSW44GZXG4gICAgICBpZiAoc2VjdGlvbnMuaW5jbHVkZXMoaXRlbSkpIGNvbnRpbnVlO1xuICAgICAgaWYgKGxhYmVsICE9PSBcIlwiICYmIGxhYmVsID09PSBpdGVtKSBjb250aW51ZTtcbiAgICAgIG90aGVyTGluZXMucHVzaChpdGVtKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB0YXNrQmxvY2tzLnB1c2goaXRlbSk7XG4gIH1cblxuICAvLyB0YXNrIGJsb2Nrc+OCkuS4puOBs+abv+OBiOOCi1xuICBjb25zdCBzb3J0ZWRUYXNrQmxvY2tzID0gdGFza0Jsb2Nrcy5zb3J0KChhLCBiKSA9PlxuICAgIGNvbXBhcmVBc2Moc3RhcnREYXRlKGEpLCBzdGFydERhdGUoYikpXG4gICk7XG5cbiAgLy8g6KaL5Ye644GX44KS5oy/5YWl44GZ44KLXG4gIGlmIChzb3J0ZWRUYXNrQmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIOOCv+OCueOCr+OBjOOBquOBhOOBqOOBjeOBr+OBneOBruOBvuOBvuWFpeOCjOOCi1xuICAgIHJldHVybiBbXG4gICAgICBsaW5lc1swXSwgLy8g44K/44Kk44OI44OrXG4gICAgICBsYWJlbCwgLy8g5YmN5pel44Gu44Oa44O844K444G444Gu44Oq44Oz44KvXG4gICAgICAuLi5zZWN0aW9ucywgLy8g6KaL5Ye644GXXG4gICAgICAuLi5vdGhlckxpbmVzLCAvLyDjgr/jgrnjgq/ku6XlpJbjga7ooYxcbiAgICBdO1xuICB9XG5cbiAgLy8g6KaL5Ye644GX44Gu5oy/5YWl5L2N572u44KS5rG644KB44KLXG4gIGNvbnN0IGluc2VydFBvaW50ID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdOyAvLyDmjIflrprjgZfjgZ/nlarlj7fjga50YXNrIGJsb2Nr44Gu5YmN44Gr5oy/5YWl44GZ44KLXG4gIGZvciAobGV0IGkgPSAxOyBpIDwgc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAvLyDmnIDliJ3jga/norrlrprjgZfjgabjgYTjgovjga7jgafpo5vjgbDjgZlcblxuICAgIC8vIOimi+WHuuOBl+OBruaZgumWk+W4r+OBruWni+OBvuOCiuOBruaZguWIu1xuICAgIGNvbnN0IHN0YXJ0ID0gYWRkSG91cnMoXG4gICAgICBuZXcgRGF0ZSh0b2RheS5nZXRGdWxsWWVhcigpLCB0b2RheS5nZXRNb250aCgpLCB0b2RheS5nZXREYXRlKCkpLFxuICAgICAgMyAqIGksXG4gICAgKTtcblxuICAgIC8vIOimi+WHuuOBl+OBruaZgumWk+W4r+WGheOBq+mWi+Wni+OBmeOCi+acgOWIneOBruOCv+OCueOCr1xuICAgIGNvbnN0IGxvd2VyVGFza0luZGV4ID0gc29ydGVkVGFza0Jsb2Nrcy5maW5kSW5kZXgoKHRhc2spID0+XG4gICAgICBpc0FmdGVyKHN0YXJ0RGF0ZSh0YXNrKSwgc3RhcnQpXG4gICAgKTtcblxuICAgIC8vIOimi+WHuuOBl+S7pemZjeOBq+OCv+OCueOCr+OBjOS4gOOBpOOCguOBquOBhOOBqOOBjVxuICAgIGlmIChsb3dlclRhc2tJbmRleCA8IDApIHtcbiAgICAgIGluc2VydFBvaW50W2ldID0gLTE7IC8vIOacq+WwvuOBq+aMv+WFpeOBmeOCi1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIC8vIOS4gOeVquacgOWIneOBruOCv+OCueOCr+OBi+OCieimi+WHuuOBl+OBq+WQq+OBvuOCjOOCi+OBqOOBjVxuICAgIGlmIChsb3dlclRhc2tJbmRleCA9PT0gMCkgY29udGludWU7IC8vIOWIneacn+WApOOBruOBvuOBvlxuXG4gICAgLy8g5LiA44Gk5YmN44Gu44K/44K544Kv44Gu6ZW344GV44Gn5rG644KB44KLXG4gICAgY29uc3QgdGFzayA9IHNvcnRlZFRhc2tCbG9ja3NbbG93ZXJUYXNrSW5kZXggLSAxXTtcbiAgICBjb25zdCBzID0gc3RhcnREYXRlKHRhc2spO1xuICAgIGNvbnN0IGUgPSBlbmREYXRlKHRhc2spO1xuICAgIGluc2VydFBvaW50W2ldID1cbiAgICAgIChlLmdldFRpbWUoKSAtIHMuZ2V0VGltZSgpKSAvIDIgPCBzdGFydC5nZXRUaW1lKCkgLSBzLmdldFRpbWUoKVxuICAgICAgICA/IGxvd2VyVGFza0luZGV4XG4gICAgICAgIDogbG93ZXJUYXNrSW5kZXggLSAxO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICBsaW5lc1swXSwgLy8g44K/44Kk44OI44OrXG4gICAgbGFiZWwsIC8vIOWJjeaXpeOBruODmuODvOOCuOOBuOOBruODquODs+OCr1xuICAgIC4uLnNvcnRlZFRhc2tCbG9ja3MuZmxhdE1hcCgoYmxvY2ssIGkpID0+IFtcbiAgICAgIC4uLmluc2VydFBvaW50LmZsYXRNYXAoKGosIGspID0+IGogPT09IGkgPyBbc2VjdGlvbnNba11dIDogW10pLCAvLyDopovlh7rjgZdcbiAgICAgIHRvU3RyaW5nKGJsb2NrKSwgLy8g44K/44K544KvXG4gICAgICAuLi5ibG9jay5saW5lcywgLy8g44K/44K544Kv44Gr44G244KJ5LiL44GM44Gj44Gf6KGMXG4gICAgXSksXG4gICAgLi4uaW5zZXJ0UG9pbnQuZmxhdE1hcCgoaSwgaykgPT4gaSA9PT0gLTEgPyBbc2VjdGlvbnNba11dIDogW10pLFxuICAgIC4uLm90aGVyTGluZXMsIC8vIOOCv+OCueOCr+S7peWkluOBruihjFxuICBdO1xufTtcblxuLyoqIOWJjeaXpeOBruaXpeS7mOODmuODvOOCuOOBuOOBrm5hdmlnYXRpb27jgpLkvZzjgosgKi9cbmNvbnN0IG1ha2VCYWNrTGFiZWwgPSAodG9kYXk6IERhdGUpID0+XG4gIGB5ZXN0ZXJkYXk6IFske3RvVGl0bGUoc3ViRGF5cyh0b2RheSwgMSkpfV1gO1xuIiwgImltcG9ydCB7IGZvcm1hdCBhcyBmb3JtYXRQYWdlIH0gZnJvbSBcIi4uL2RpYXJ5LnRzXCI7XG5pbXBvcnQgeyB1c2VTdGF0dXNCYXIgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1zdGQtZG9tLnRzXCI7XG5pbXBvcnQgeyBwYXRjaCB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXdlYnNvY2tldC50c1wiO1xuXG4vKiog44K/44K544Kv44Oa44O844K444KSZm9ybWF044GZ44KLXG4gKlxuICogQHBhcmFtIHByb2plY3QgZm9ybWF044GX44Gf44GE44Oa44O844K444GucHJvamVjdCBuYW1lXG4gKiBAcGFyYW0gdGl0bGUgZm9ybWF044GX44Gf44GE44Oa44O844K444Gu44K/44Kk44OI44OrXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtYXQgPSBhc3luYyAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgdGl0bGU6IHN0cmluZyxcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAvLyA1MDBtc+S7peWGheOBq+WHpueQhuOBjOe1guOCj+OCieOBquOBkeOCjOOBsOOAgeWHpueQhuS4reODoeODg+OCu+ODvOOCuOOCkuWHuuOBmVxuICBsZXQgcmVtb3ZlOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgY29uc3QgeyByZW5kZXIsIGRpc3Bvc2UgfSA9IHVzZVN0YXR1c0JhcigpO1xuICAgIHJlbW92ZSA9IGRpc3Bvc2U7XG4gICAgcmVuZGVyKHsgdHlwZTogXCJzcGlubmVyXCIgfSwgeyB0eXBlOiBcInRleHRcIiwgdGV4dDogXCJmb3JtYXR0aW5nLi4uXCIgfSk7XG4gIH0sIDUwMCk7XG4gIGF3YWl0IHBhdGNoKFxuICAgIHByb2plY3QsXG4gICAgdGl0bGUsXG4gICAgKGxpbmVzKSA9PiBmb3JtYXRQYWdlKGxpbmVzLm1hcCgobGluZSkgPT4gbGluZS50ZXh0KSksXG4gICk7XG4gIGNsZWFyVGltZW91dCh0aW1lcik7XG4gIHJlbW92ZSgpO1xufTtcbiIsICJpbXBvcnQgeyBUYXNrQmxvY2ssIHRvU3RyaW5nIH0gZnJvbSBcIi4vdGFzay50c1wiO1xuaW1wb3J0IHsgZm9ybWF0LCB0b1RpdGxlIH0gZnJvbSBcIi4vZGlhcnkudHNcIjtcbmltcG9ydCB7IG9uZUJ5T25lLCBPbmVCeU9uZVJlc3VsdCB9IGZyb20gXCIuL3V0aWxzLnRzXCI7XG5pbXBvcnQgeyBpc1NhbWVEYXkgfSBmcm9tIFwiLi9kZXBzL2RhdGUtZm5zLnRzXCI7XG5pbXBvcnQgeyBwYXRjaCwgU29ja2V0IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC13ZWJzb2NrZXQudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQdXNoVGFza3NPcHRpb25zIHtcbiAgLyoqIOabuOOBjei+vOOBv+OBq+S9v+OBhlNvY2tldCAqL1xuICBzb2NrZXQ6IFNvY2tldDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVzaFRhc2tzUmVzdWx0IHtcbiAgLyoqIOabuOOBjei+vOOBv+WFiOOBruaXpeS7mOODmuODvOOCuOOBruaXpeS7mCAqLyBkYXRlOiBEYXRlO1xuICAvKiog5pu444GN6L6844KT44Gg44K/44K544Kv44Gu5pWwICovIHNpemU6IG51bWJlcjtcbn1cbi8qKiDku7vmhI/lgIvjga7jgr/jgrnjgq/jgpLnibnlrprjg5fjg63jgrjjgqfjgq/jg4jjga7ml6Xku5jjg5rjg7zjgrjjgavmm7jjgY3ovrzjgoBcbiAqXG4gKiBAcGFyYW0gcHJvamVjdCDmm7jjgY3ovrzjgb/lhYjjg5fjg63jgrjjgqfjgq/jg4hcbiAqIEBwYXJhbSB0YXNrcyDmm7jjgY3ovrzjgoDjgr/jgrnjgq8gKOOCpOODs+ODh+ODs+ODiOOBp+OBtuOCieS4i+OBkuOBn+ihjOOCkmxpbmVz44Gr5YWl44KM44KJ44KM44KLKVxuICogQHBhcmFtIGluaXRcbiAqIEByZXR1cm4g5pu444GN6L6844G/44Gu5oiQ5ZCm44GM5YWl44Gj44GfYXN5bmMgaXRlcmF0b3JcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBwdXNoVGFza3MoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgdGFza3M6IHJlYWRvbmx5IFRhc2tCbG9ja1tdLFxuICBpbml0OiBQdXNoVGFza3NPcHRpb25zLFxuKTogQXN5bmNHZW5lcmF0b3I8T25lQnlPbmVSZXN1bHQ8UHVzaFRhc2tzUmVzdWx0Piwgdm9pZCwgdm9pZD4ge1xuICBjb25zdCBzdGFja3MgPSBbLi4udGFza3NdO1xuICBjb25zdCBwcm9taXNlcyA9IFtdIGFzIFByb21pc2U8UHVzaFRhc2tzUmVzdWx0PltdO1xuICB3aGlsZSAoc3RhY2tzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCB0YXNrID0gc3RhY2tzLnNoaWZ0KCk7XG4gICAgaWYgKCF0YXNrKSBicmVhaztcblxuICAgIC8vIHRhc2vjgajlkIzjgZjml6Xku5jjga50YXNr44KS6ZuG44KB44KLXG4gICAgY29uc3QgZGF0ZSA9IHRhc2suYmFzZTtcbiAgICBjb25zdCB0YXNrc18gPSBbdGFza107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGFja3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghaXNTYW1lRGF5KHN0YWNrc1tpXS5iYXNlLCBkYXRlKSkgY29udGludWU7XG4gICAgICAvLyBzdGFja3PjgYvjgol0YXNrc1/jgavnp7vli5XjgZnjgotcbiAgICAgIHRhc2tzXy5wdXNoKC4uLnN0YWNrcy5zcGxpY2UoaSwgMSkpO1xuICAgICAgaS0tO1xuICAgIH1cblxuICAgIC8vIOmdnuWQjOacn+OBq+abuOOBjei+vOOCgFxuXG4gICAgcHJvbWlzZXMucHVzaCgoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgcGF0Y2gocHJvamVjdCwgdG9UaXRsZShkYXRlKSwgKGxpbmVzKSA9PlxuICAgICAgICBmb3JtYXQoW1xuICAgICAgICAgIC4uLmxpbmVzLm1hcCgobGluZSkgPT4gbGluZS50ZXh0KSxcbiAgICAgICAgICAuLi50YXNrc18uZmxhdE1hcCgodGFzaykgPT4gW3RvU3RyaW5nKHRhc2spLCAuLi50YXNrLmxpbmVzID8/IFtdXSksXG4gICAgICAgIF0pLCBpbml0KTtcbiAgICAgIHJldHVybiB7IGRhdGUsIHNpemU6IHRhc2tzXy5sZW5ndGggfTtcbiAgICB9KSgpKTtcbiAgfVxuXG4gIC8vIOabuOOBjei+vOOBv+OBruaIkOWQpuOBqOabuOOBjei+vOOBv+WFiOOBruaXpeS7mOOCkui/lOOBmVxuICB5aWVsZCogb25lQnlPbmUocHJvbWlzZXMpO1xufVxuIiwgImltcG9ydCB7IHB1c2hUYXNrcyB9IGZyb20gXCIuLi9wdXNoVGFza3MudHNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuLi9kaWFyeS50c1wiO1xuaW1wb3J0IHsgcGFyc2VCbG9jaywgcGFyc2VMaW5lcywgVGFza0Jsb2NrLCB0b1N0cmluZyB9IGZyb20gXCIuLi90YXNrLnRzXCI7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gXCIuLi91dGlscy50c1wiO1xuaW1wb3J0IHsgaXNTYW1lRGF5IH0gZnJvbSBcIi4uL2RlcHMvZGF0ZS1mbnMudHNcIjtcbmltcG9ydCB7IGdldFBhZ2UsIHNsZWVwIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5pbXBvcnQgeyB1c2VTdGF0dXNCYXIgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1zdGQtZG9tLnRzXCI7XG5pbXBvcnQgeyBkaXNjb25uZWN0LCBtYWtlU29ja2V0LCBwYXRjaCB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXdlYnNvY2tldC50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zcG9ydFByb3BzIHtcbiAgLyoqIOOBk+OBk+OBp+aMh+WumuOBl+OBn+ODmuODvOOCuOOBi+OCieOCv+OCueOCr+OCkui7oumAgeOBmeOCiyAqL1xuICBmcm9tOiB7XG4gICAgcHJvamVjdDogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gIH07XG4gIC8qKiDou6LpgIHlhYjjg5fjg63jgrjjgqfjgq/jg4ggKi9cbiAgdG86IHN0cmluZztcbn1cbi8qKiDmjIflrprjgZfjgZ/jg5rjg7zjgrjjgYvjgonjgr/jgrnjgq/jgpLml6Xku5jjg5rjg7zjgrjjgavou6LpgIHjgZnjgosgKi9cbmV4cG9ydCBjb25zdCB0cmFuc3BvcnQgPSBhc3luYyAoXG4gIHsgZnJvbTogeyBwcm9qZWN0LCB0aXRsZSB9LCB0byB9OiBUcmFuc3BvcnRQcm9wcyxcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRQYWdlKHByb2plY3QsIHRpdGxlKTtcbiAgaWYgKCFyZXN1bHQub2spIHtcbiAgICB0aHJvdyByZXN1bHQudmFsdWU7XG4gIH1cbiAgY29uc3QgZGF0ZSA9IHRvRGF0ZSh0aXRsZSk7XG4gIGNvbnN0IHsgbGluZXMgfSA9IHJlc3VsdC52YWx1ZTtcblxuICAvLyDml6Xku5jjg5rjg7zjgrjjga7loLTlkIjjga/jgIHjgZ3jga7ml6Xku5jjgajkuIDoh7TjgZfjgarjgYTjgr/jgrnjgq/jgpLou6LpgIHjgZnjgotcbiAgLy8g5pel5LuY44OZ44O844K444Gn44Gq44GR44KM44Gw44CB5YWo44Gm44Gu44K/44K544Kv44KS6Lui6YCB44GZ44KLXG4gIGNvbnN0IHRhc2tzID0gW10gYXMgVGFza0Jsb2NrW107XG4gIGZvciAoY29uc3QgdGFzayBvZiBwYXJzZUJsb2NrKGxpbmVzKSkge1xuICAgIGlmIChkYXRlICYmIGlzU2FtZURheSh0YXNrLmJhc2UsIGRhdGUpKSBjb250aW51ZTtcbiAgICB0YXNrcy5wdXNoKHRhc2spO1xuICB9XG5cbiAgLy8g44K/44K544Kv44KS5pu444GN6L6844KAXG4gIGNvbnN0IHsgcmVuZGVyLCBkaXNwb3NlIH0gPSB1c2VTdGF0dXNCYXIoKTtcbiAgcmVuZGVyKHsgdHlwZTogXCJzcGlubmVyXCIgfSwge1xuICAgIHR5cGU6IFwidGV4dFwiLFxuICAgIHRleHQ6IGBjb3B5aW5nICR7dGFza3MubGVuZ3RofSB0YXNrcy4uLmAsXG4gIH0pO1xuXG4gIGNvbnN0IHNvY2tldCA9IGF3YWl0IG1ha2VTb2NrZXQoKTtcbiAgdHJ5IHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGxldCBmYWlsZWQgPSBmYWxzZTtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHJlc3VsdCBvZiBwdXNoVGFza3ModG8sIHRhc2tzLCB7IHNvY2tldCB9KSkge1xuICAgICAgaWYgKHJlc3VsdC5zdGF0ZSAhPT0gXCJmdWxmaWxsZWRcIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKHJlc3VsdC5yZWFzb24pO1xuICAgICAgICBmYWlsZWQgPSB0cnVlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvdW50ICs9IHJlc3VsdC52YWx1ZS5zaXplO1xuICAgICAgLy8g5pu444GN6L6844G/54q25rOB44KSLnN0YXR1cy1iYXLjgavooajnpLrjgZnjgotcbiAgICAgIHJlbmRlcih7IHR5cGU6IFwic3Bpbm5lclwiIH0sIHtcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IGBjb3B5aW5nICR7dGFza3MubGVuZ3RoIC0gY291bnR9IHRhc2tzLi4uYCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChmYWlsZWQpIHtcbiAgICAgIHJlbmRlcih7IHR5cGU6IFwiZXhjbGFtYXRpb24tdHJpYW5nbGVcIiB9LCB7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBcIlNvbWUgdGFza3MgZmFpbGVkIHRvIGJlIHdyaXR0ZW5cIixcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIOabuOOBjei+vOOBv+OBq+aIkOWKn+OBl+OBn+OBqOOBjeOBruOBv+OAgeWFg+ODmuODvOOCuOOBi+OCieOCv+OCueOCr+OCkua2iOOBmVxuICAgIHJlbmRlcih7IHR5cGU6IFwic3Bpbm5lclwiIH0sIHtcbiAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgdGV4dDogYENvcGllZC4gcmVtb3ZpbmcgJHt0YXNrcy5sZW5ndGh9IG9yaWdpbmFsIHRhc2tzLi4uYCxcbiAgICB9KTtcbiAgICBhd2FpdCBwYXRjaChwcm9qZWN0LCB0aXRsZSwgKGxpbmVzKSA9PiB7XG4gICAgICBjb25zdCBuZXdMaW5lcyA9IFtdIGFzIHN0cmluZ1tdO1xuICAgICAgZm9yIChjb25zdCBsaW5lIG9mIHBhcnNlTGluZXMobGluZXMpKSB7XG4gICAgICAgIGlmIChpc1N0cmluZyhsaW5lKSkge1xuICAgICAgICAgIG5ld0xpbmVzLnB1c2gobGluZSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChkYXRlICYmIGlzU2FtZURheShsaW5lLmJhc2UsIGRhdGUpKSkge1xuICAgICAgICAgIG5ld0xpbmVzLnB1c2godG9TdHJpbmcobGluZSksIC4uLmxpbmUubGluZXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3TGluZXM7XG4gICAgfSwgeyBzb2NrZXQgfSk7XG5cbiAgICByZW5kZXIoeyB0eXBlOiBcImNoZWNrLWNpcmNsZVwiIH0sIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IFwiTW92ZWRcIiB9KTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBkaXNjb25uZWN0KHNvY2tldCk7XG4gICAgYXdhaXQgc2xlZXAoMTAwMCk7XG4gICAgZGlzcG9zZSgpO1xuICB9XG59O1xuIiwgImV4cG9ydCBjb25zdCB6ZXJvID0gKG46IG51bWJlcikgPT4gYCR7bn1gLnBhZFN0YXJ0KDIsIFwiMFwiKTtcbiIsICJpbXBvcnQgeyB6ZXJvIH0gZnJvbSBcIi4uL3plcm8udHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMb2NhbERhdGUge1xuICB5ZWFyOiBudW1iZXI7XG4gIG1vbnRoOiBudW1iZXI7XG4gIGRhdGU6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYWxEYXRlVGltZSBleHRlbmRzIExvY2FsRGF0ZSB7XG4gIGhvdXJzOiBudW1iZXI7XG4gIG1pbnV0ZXM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGlzTG9jYWxEYXRlVGltZSA9IChcbiAgZGF0ZTogTG9jYWxEYXRlIHwgTG9jYWxEYXRlVGltZSxcbik6IGRhdGUgaXMgTG9jYWxEYXRlVGltZSA9PiBcImhvdXJzXCIgaW4gZGF0ZTtcblxuZXhwb3J0IGNvbnN0IGlzQmVmb3JlID0gKFxuICBmaXJzdDogTG9jYWxEYXRlIHwgTG9jYWxEYXRlVGltZSxcbiAgc2Vjb25kOiBMb2NhbERhdGUgfCBMb2NhbERhdGVUaW1lLFxuKTogYm9vbGVhbiA9PlxuICBmaXJzdC55ZWFyICE9PSBzZWNvbmQueWVhclxuICAgID8gZmlyc3QueWVhciA8IHNlY29uZC55ZWFyXG4gICAgOiBmaXJzdC5tb250aCAhPT0gc2Vjb25kLm1vbnRoXG4gICAgPyBmaXJzdC5tb250aCA8IHNlY29uZC5tb250aFxuICAgIDogZmlyc3QuZGF0ZSAhPT0gc2Vjb25kLmRhdGVcbiAgICA/IGZpcnN0LmRhdGUgPCBzZWNvbmQuZGF0ZVxuICAgIDogXCJob3Vyc1wiIGluIHNlY29uZFxuICAgID8gXCJob3Vyc1wiIGluIGZpcnN0XG4gICAgICA/IGZpcnN0LmhvdXJzICogNjAgKyBmaXJzdC5taW51dGVzIDwgc2Vjb25kLmhvdXJzICogNjAgKyBzZWNvbmQubWludXRlc1xuICAgICAgOiAwIDwgc2Vjb25kLmhvdXJzICogNjAgKyBzZWNvbmQubWludXRlc1xuICAgIDogZmFsc2U7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXQgPSAoZGF0ZTogTG9jYWxEYXRlIHwgTG9jYWxEYXRlVGltZSk6IHN0cmluZyA9PlxuICBgJHtgJHtkYXRlLnllYXJ9YC5wYWRTdGFydCg0LCBcIjBcIil9LSR7emVybyhkYXRlLm1vbnRoKX0tJHt6ZXJvKGRhdGUuZGF0ZSl9JHtcbiAgICBcImhvdXJzXCIgaW4gZGF0ZSA/IGBUJHt6ZXJvKGRhdGUuaG91cnMpfToke3plcm8oZGF0ZS5taW51dGVzKX1gIDogXCJcIlxuICB9YDtcblxuZXhwb3J0IGNvbnN0IHRvRGF0ZSA9IChkYXRlOiBMb2NhbERhdGUgfCBMb2NhbERhdGVUaW1lKTogRGF0ZSA9PiB7XG4gIGNvbnN0IHN0ciA9IGZvcm1hdChkYXRlKTtcbiAgcmV0dXJuIG5ldyBEYXRlKHN0ci5pbmNsdWRlcyhcIlRcIikgPyBzdHIgOiBgJHtzdHJ9VDAwOjAwYCk7XG59O1xuXG5leHBvcnQgY29uc3QgZnJvbURhdGUgPSAoZGF0ZTogRGF0ZSk6IExvY2FsRGF0ZVRpbWUgPT4gKHtcbiAgeWVhcjogZGF0ZS5nZXRGdWxsWWVhcigpLFxuICBtb250aDogZGF0ZS5nZXRNb250aCgpICsgMSxcbiAgZGF0ZTogZGF0ZS5nZXREYXRlKCksXG4gIGhvdXJzOiBkYXRlLmdldEhvdXJzKCksXG4gIG1pbnV0ZXM6IGRhdGUuZ2V0TWludXRlcygpLFxufSk7XG4iLCAiZXhwb3J0IGludGVyZmFjZSBSZWN1cnJlbmNlIHtcbiAgZnJlcXVlbmN5OiBGcmVxdWVuY3k7XG4gIGNvdW50OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIEZyZXF1ZW5jeSA9IFwieWVhcmx5XCIgfCBcIm1vbnRobHlcIiB8IFwid2Vla2x5XCIgfCBcImRhaWx5XCI7XG5cbmV4cG9ydCBjb25zdCB0b0ZyZXF1ZW5jeSA9IChcbiAgc3ltYm9sOiBzdHJpbmcsXG4pOiBGcmVxdWVuY3kgfCB1bmRlZmluZWQgPT4ge1xuICBzd2l0Y2ggKHN5bWJvbC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSBcInlcIjpcbiAgICAgIHJldHVybiBcInllYXJseVwiO1xuICAgIGNhc2UgXCJtXCI6XG4gICAgICByZXR1cm4gXCJtb250aGx5XCI7XG4gICAgY2FzZSBcIndcIjpcbiAgICAgIHJldHVybiBcIndlZWtseVwiO1xuICAgIGNhc2UgXCJkXCI6XG4gICAgICByZXR1cm4gXCJkYWlseVwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm47XG4gIH1cbn07XG4iLCAiZXhwb3J0IHR5cGUgU3RhdHVzID1cbiAgfCBcInRvZG9cIlxuICB8IFwiZGVhZGxpbmVcIlxuICB8IFwiZG9uZVwiXG4gIHwgXCJub3RlXCJcbiAgfCBcInVwLWRvd25cIjtcblxuZXhwb3J0IGNvbnN0IHRvU3RhdHVzID0gKHN5bWJvbDogc3RyaW5nKTogU3RhdHVzIHwgdW5kZWZpbmVkID0+IHtcbiAgc3dpdGNoIChzeW1ib2wpIHtcbiAgICBjYXNlIFwiK1wiOlxuICAgICAgcmV0dXJuIFwidG9kb1wiO1xuICAgIGNhc2UgXCItXCI6XG4gICAgICByZXR1cm4gXCJub3RlXCI7XG4gICAgY2FzZSBcIiFcIjpcbiAgICAgIHJldHVybiBcImRlYWRsaW5lXCI7XG4gICAgY2FzZSBcIi5cIjpcbiAgICAgIHJldHVybiBcImRvbmVcIjtcbiAgICBjYXNlIFwiflwiOlxuICAgICAgcmV0dXJuIFwidXAtZG93blwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm47XG4gIH1cbn07XG5leHBvcnQgY29uc3QgZnJvbVN0YXR1cyA9IChcbiAgc3RhdHVzOiBTdGF0dXMsXG4pOiBcIitcIiB8IFwiLVwiIHwgXCIhXCIgfCBcIi5cIiB8IFwiflwiID0+IHtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFwidG9kb1wiOlxuICAgICAgcmV0dXJuIFwiK1wiO1xuICAgIGNhc2UgXCJub3RlXCI6XG4gICAgICByZXR1cm4gXCItXCI7XG4gICAgY2FzZSBcImRlYWRsaW5lXCI6XG4gICAgICByZXR1cm4gXCIhXCI7XG4gICAgY2FzZSBcImRvbmVcIjpcbiAgICAgIHJldHVybiBcIi5cIjtcbiAgICBjYXNlIFwidXAtZG93blwiOlxuICAgICAgcmV0dXJuIFwiflwiO1xuICB9XG59O1xuIiwgImltcG9ydCB7IGFkZERheXMgfSBmcm9tIFwiLi4vZGVwcy9kYXRlLWZucy50c1wiO1xuaW1wb3J0IHtcbiAgYWRkTWludXRlcyxcbiAgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzLFxuICBkaWZmZXJlbmNlSW5DYWxlbmRhck1vbnRocyxcbiAgaXNWYWxpZCxcbn0gZnJvbSBcIi4uL2RlcHMvZGF0ZS1mbnMudHNcIjtcbmltcG9ydCB7IGlzTnVtYmVyLCBSZXN1bHQgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1zdGQudHNcIjtcbmltcG9ydCB7IFBlcmlvZCB9IGZyb20gXCIuL1BlcmlvZC50c1wiO1xuaW1wb3J0IHsgRnJlc2huZXNzIH0gZnJvbSBcIi4vZnJlc2huZXNzLnRzXCI7XG5pbXBvcnQge1xuICBmb3JtYXQsXG4gIGZyb21EYXRlLFxuICBpc0JlZm9yZSxcbiAgaXNMb2NhbERhdGVUaW1lLFxuICBMb2NhbERhdGUsXG4gIExvY2FsRGF0ZVRpbWUsXG4gIHRvRGF0ZSxcbn0gZnJvbSBcIi4vbG9jYWxEYXRlLnRzXCI7XG5pbXBvcnQgeyBSZWN1cnJlbmNlLCB0b0ZyZXF1ZW5jeSB9IGZyb20gXCIuL3JlY3VycmVuY2UudHNcIjtcbmltcG9ydCB7IGZyb21TdGF0dXMsIHRvU3RhdHVzIH0gZnJvbSBcIi4vc3RhdHVzLnRzXCI7XG5cbi8qKiBSZW1pbmRlciAo6ZaL5aeL5pel5pmC44GM5oyH5a6a44GV44KM44Gm44GE44Gq44GE44K/44K544Kv44Gu44KI44GG44Gq44KC44GuKVxuICpcbiAqIEhvd23jga5yZW1pbmRlcuOBq+ebuOW9k+OBmeOCi1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbWluZGVyIHtcbiAgLyoqIHRhc2sgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIOaXrOW6piAqL1xuICBmcmVzaG5lc3M6IEZyZXNobmVzcztcblxuICAvKiog6KaL56mN44KC44KK55So5pel5pmCXG4gICAqXG4gICAqIOaJgOimgeaZgumWkyAobWluKeOBi+e1guS6huaXpeaZguOBruOBqeOBoeOCieOBi1xuICAgKlxuICAgKiDmiYDopoHmmYLplpPjga7jgajjgY3jga/jgIFgZnJlc2huZXNzLnJlZkRhdGVg44GL44KJ44Gu57WM6YGO5pmC6ZaTIChtaW4pIOOBqOOBl+OBpuaJseOBhlxuICAgKi9cbiAgZXN0aW1hdGVkPzogbnVtYmVyIHwgTG9jYWxEYXRlIHwgTG9jYWxEYXRlVGltZTtcblxuICAvKiog57mw44KK6L+U44GX44Kk44OZ44Oz44OI44GL44KJ55Sf5oiQ44GV44KM44Gf5LqI5a6a44Gq44KJYHRydWVgICovXG4gIGdlbmVyYXRlZDogYm9vbGVhbjtcblxuICAvKiog6Kej5p6Q5YmN44Gu5paH5a2X5YiXICovXG4gIHJhdzogc3RyaW5nO1xufVxuXG4vKiog5LqI5a6aICjplovlp4vml6XmmYLjgajntYLkuobml6XmmYLjgYznorrlrprjgZfjgZ/jgqLjgqTjg4bjg6Ap44KS6KGo44GZICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50IHtcbiAgLyoqIGV2ZW50IG5hbWUgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKiDml6zluqYgKi9cbiAgZnJlc2huZXNzPzogRnJlc2huZXNzO1xuXG4gIC8qKiDlrp/ooYzml6XmmYIgKi9cbiAgZXhlY3V0ZWQ6IFBlcmlvZDtcblxuICAvKiog57mw44KK6L+U44GX5oOF5aCxICovXG4gIHJlY3VycmVuY2U/OiBSZWN1cnJlbmNlO1xuXG4gIC8qKiDnubDjgorov5TjgZfjgqTjg5njg7Pjg4jjgYvjgonnlJ/miJDjgZXjgozjgZ/kuojlrprjgarjgolgdHJ1ZWAgKi9cbiAgZ2VuZXJhdGVkOiBib29sZWFuO1xuXG4gIC8qKiDop6PmnpDliY3jga7mloflrZfliJcgKi9cbiAgcmF3OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFJlY3VycmVudEV2ZW50ID0gT21pdDxFdmVudCwgXCJyZWN1cnJlbmNlXCI+ICYge1xuICByZWN1cnJlbmNlOiBSZWN1cnJlbmNlO1xufTtcblxuZXhwb3J0IHR5cGUgVGFzayA9IFJlbWluZGVyIHwgRXZlbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFza1JhbmdlRXJyb3Ige1xuICBuYW1lOiBcIlRhc2tSYW5nZUVycm9yXCI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnZhbGlkRGF0ZUVycm9yIHtcbiAgbmFtZTogXCJJbnZhbGlkRGF0ZUVycm9yXCI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqIFRhc2vjgpLop6PmnpDjgZnjgotcbiAqXG4gKiBAcGFyYW0gdGV4dCBUYXNr44Gu5paH5a2X5YiXXG4gKiBAcmV0dXJuIOino+aekOe1kOaenOOAglRhc2vjgafjgarjgZHjgozjgbBgdW5kZWZpbmVkYOOCkui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgcGFyc2UgPSAoXG4gIHRleHQ6IHN0cmluZyxcbik6IFJlc3VsdDxUYXNrLCBUYXNrUmFuZ2VFcnJvciB8IEludmFsaWREYXRlRXJyb3I+IHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgbWF0Y2hlZCA9IHRleHQubWF0Y2goXG4gICAgLyg/OihbXFwrXFwtIX4uXSkoXFxkKyk/KT9AKFxcZHs0fSktKFxcZHsyfSktKFxcZHsyfSkoPzpUKFxcZHsyfSk6KFxcZHsyfSkpPyg/OlxcLyhcXGR7Mn0pOihcXGR7Mn0pfFxcLyg/Oig/Oig/OihcXGR7NH0pLSk/KFxcZHsyfSktKT8oXFxkezJ9KSg/OlQoXFxkezJ9KTooXFxkezJ9KSk/KXxEKFxcZCspKT8oPzpSKFtZTVdEXSk/KFxcZCspKT8oPzpAKD86KFxcZHsyfSk6KFxcZHsyfSl8KD86KD86KFxcZHs0fSktKT8oXFxkezJ9KS0pPyhcXGR7Mn0pKD86VChcXGR7Mn0pOihcXGR7Mn0pKT8pPyg/OlxcLyhcXGR7Mn0pOihcXGR7Mn0pfFxcLyg/Oig/Oig/OihcXGR7NH0pLSk/KFxcZHsyfSktKT8oXFxkezJ9KSg/OlQoXFxkezJ9KTooXFxkezJ9KSk/KXxEKFxcZCspKT8pPy9pLFxuICApO1xuICBpZiAoIW1hdGNoZWQpIHJldHVybjtcblxuICBjb25zdCBbXG4gICAgbWF0Y2hlZFRleHQsXG4gICAgc3RhdHVzU3ltLFxuICAgIHNwZWVkU3RyLFxuICAgIHN5ZWFyLFxuICAgIHNtb250aCxcbiAgICBzZGF0ZSxcbiAgICBzaG91cnMsXG4gICAgc21pbnV0ZXMsXG4gICAgZWhvdXJzMixcbiAgICBlbWludXRlczIsXG4gICAgZXllYXIsXG4gICAgZW1vbnRoLFxuICAgIGVkYXRlLFxuICAgIGVob3VycyxcbiAgICBlbWludXRlcyxcbiAgICBkdXJhdGlvblN0cixcbiAgICBzeW1ib2wsXG4gICAgY291bnRTdHIsXG4gICAgc3Nob3VyczIsXG4gICAgc3NtaW51dGVzMixcbiAgICBzc3llYXIsXG4gICAgc3Ntb250aCxcbiAgICBzc2RhdGUsXG4gICAgc3Nob3VycyxcbiAgICBzc21pbnV0ZXMsXG4gICAgZWVob3VyczIsXG4gICAgZWVtaW51dGVzMixcbiAgICBlZXllYXIsXG4gICAgZWVtb250aCxcbiAgICBlZWRhdGUsXG4gICAgZWVob3VycyxcbiAgICBlZW1pbnV0ZXMsXG4gICAgZHVyYXRpb25TdHIyLFxuICBdID0gbWF0Y2hlZDtcblxuICAvKiogdGFzayBuYW1lICovXG4gIGNvbnN0IG5hbWUgPSBgJHt0ZXh0LnNsaWNlKDAsIG1hdGNoZWQuaW5kZXgpLnRyaW0oKX0ke1xuICAgIHRleHQuc2xpY2UoKG1hdGNoZWQuaW5kZXggPz8gMCkgKyBtYXRjaGVkVGV4dC5sZW5ndGgpLnRyaW0oKVxuICB9YDtcblxuICAvKiog5pes5bqm6KiI566X44Gu6LW354K5ICovXG4gIGNvbnN0IHJlZkRhdGUgPSBmaXhTdGFydChzeWVhciwgc21vbnRoLCBzZGF0ZSwgc2hvdXJzLCBzbWludXRlcyk7XG4gIGlmICghaXNWYWxpZCh0b0RhdGUocmVmRGF0ZSkpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9rOiBmYWxzZSxcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIG5hbWU6IFwiSW52YWxpZERhdGVFcnJvclwiLFxuICAgICAgICBtZXNzYWdlOiBgVGhlIHJlZmVyZW5jZSBwb2ludCBvZiB0aGUgdGFzayBcIiR7XG4gICAgICAgICAgZm9ybWF0KHJlZkRhdGUpXG4gICAgICAgIH1cIiBpcyBhbiBpbnZhbGlkIGRhdGUuYCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKiDopovnqY3jgoLjgormmYLplpMgKi9cbiAgY29uc3QgZXN0aW1hdGVkID0gZml4RW5kKFxuICAgIHJlZkRhdGUsXG4gICAgZXllYXIsXG4gICAgZW1vbnRoLFxuICAgIGVkYXRlLFxuICAgIGVob3VyczIgfHwgZWhvdXJzLFxuICAgIGVtaW51dGVzMiB8fCBlbWludXRlcyxcbiAgICBkdXJhdGlvblN0cixcbiAgKTtcbiAgaWYgKGVzdGltYXRlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKFxuICAgICAgKGlzTnVtYmVyKGVzdGltYXRlZCkgJiYgaXNOYU4oZXN0aW1hdGVkKSkgfHxcbiAgICAgICghaXNOdW1iZXIoZXN0aW1hdGVkKSAmJiAhaXNWYWxpZCh0b0RhdGUoZXN0aW1hdGVkKSkpXG4gICAgKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvazogZmFsc2UsXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgbmFtZTogXCJJbnZhbGlkRGF0ZUVycm9yXCIsXG4gICAgICAgICAgbWVzc2FnZTogYFRoZSBlc3RpbWF0ZWQgZW5kIG9mIHRoZSB0YXNrJHtcbiAgICAgICAgICAgIGlzTnVtYmVyKGVzdGltYXRlZCkgPyBcIlwiIDogYCBcIiR7Zm9ybWF0KGVzdGltYXRlZCl9XCJgXG4gICAgICAgICAgfSBpcyBhbiBpbnZhbGlkIGRhdGUuYCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChcbiAgICAgIChpc051bWJlcihlc3RpbWF0ZWQpICYmIGVzdGltYXRlZCA8IDApIHx8XG4gICAgICAoIWlzTnVtYmVyKGVzdGltYXRlZCkgJiYgaXNCZWZvcmUoZXN0aW1hdGVkLCByZWZEYXRlKSlcbiAgICApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBuYW1lOiBcIlRhc2tSYW5nZUVycm9yXCIsXG4gICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgIGBUaGUgcmVmZXJlbmNlIHBvaW50IG9mIGFuIHRhc2sgY2Fubm90IGJlIGFmdGVyIGl0cyBlc3RpbWF0ZWQgZW5kLlxcblxcbnJlZmVyZW5jZSBwb2ludDoke1xuICAgICAgICAgICAgICBmb3JtYXQocmVmRGF0ZSlcbiAgICAgICAgICAgIH1cXG5lc3RpbWF0ZWQgZW5kOiR7XG4gICAgICAgICAgICAgIGZvcm1hdChcbiAgICAgICAgICAgICAgICBpc051bWJlcihlc3RpbWF0ZWQpXG4gICAgICAgICAgICAgICAgICA/IGZyb21EYXRlKGFkZE1pbnV0ZXModG9EYXRlKHJlZkRhdGUpLCBlc3RpbWF0ZWQpKVxuICAgICAgICAgICAgICAgICAgOiBlc3RpbWF0ZWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1gLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvLyDlvozmlrnkupLmj5vmgKfnlKjjgrPjg7zjg4lcbiAgLy8g5YWI6aCt44GM4pyF44GL4p2M44Gu44Go44GN44Gv44CBYGRvbmVg44Go44G/44Gq44GZXG4gIC8qKiB0YXNrIHN0YXR1cyAqL1xuICBjb25zdCBzdGF0dXMgPSAvXltcXHVGRTAwLVxcdUZFMEZdKlvinIXinYxdLy50ZXN0KHRleHQpXG4gICAgPyBcImRvbmVcIlxuICAgIDogdG9TdGF0dXMoc3RhdHVzU3ltKTtcbiAgY29uc3QgZnJlc2huZXNzOiBGcmVzaG5lc3MgfCB1bmRlZmluZWQgPSBzdGF0dXNcbiAgICA/IHsgc3RhdHVzLCByZWZEYXRlIH1cbiAgICA6IHVuZGVmaW5lZDtcbiAgaWYgKGZyZXNobmVzcyAmJiBzcGVlZFN0cikgZnJlc2huZXNzLnNwZWVkID0gcGFyc2VJbnQoc3BlZWRTdHIpO1xuXG4gIC8vIOWun+ihjOaXpeaZguOBruWPluW+l+OCkuippuOBv+OCi1xuICAvKiog6ZaL5aeL5pel5pmCICovXG4gIGNvbnN0IHN0YXJ0ID0gZml4U3RhcnQoXG4gICAgc3N5ZWFyIHx8IHN5ZWFyLFxuICAgIHNzbW9udGggfHwgc21vbnRoLFxuICAgIHNzZGF0ZSB8fCBzZGF0ZSxcbiAgICBzc2hvdXJzMiB8fCBzc2hvdXJzIHx8IHNob3VycyxcbiAgICBzc21pbnV0ZXMyIHx8IHNzbWludXRlcyB8fCBzbWludXRlcyxcbiAgKTtcbiAgaWYgKCFpc1ZhbGlkKHRvRGF0ZShzdGFydCkpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9rOiBmYWxzZSxcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIG5hbWU6IFwiSW52YWxpZERhdGVFcnJvclwiLFxuICAgICAgICBtZXNzYWdlOiBgVGhlIHN0YXJ0IG9mIHRoZSB0YXNrL2V2ZW50IFwiJHtcbiAgICAgICAgICBmb3JtYXQoc3RhcnQpXG4gICAgICAgIH1cIiBpcyBhbiBpbnZhbGlkIGRhdGUuYCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKiDmiYDopoHmmYLplpMgKi9cbiAgY29uc3QgZHVyYXRpb24gPSBmaXhFbmQoXG4gICAgc3RhcnQsXG4gICAgZWV5ZWFyIHx8IGV5ZWFyLFxuICAgIGVlbW9udGggfHwgZW1vbnRoLFxuICAgIGVlZGF0ZSB8fCBlZGF0ZSxcbiAgICBlZWhvdXJzMiB8fCBlZWhvdXJzIHx8IGVob3VyczIgfHwgZWhvdXJzLFxuICAgIGVlbWludXRlczIgfHwgZWVtaW51dGVzIHx8IGVtaW51dGVzMiB8fCBlbWludXRlcyxcbiAgICBkdXJhdGlvblN0cjIgfHwgZHVyYXRpb25TdHIsXG4gICk7XG5cbiAgY29uc3QgZXhlY3V0ZWQ6IFBlcmlvZCB8IHVuZGVmaW5lZCA9XG4gICAgaXNMb2NhbERhdGVUaW1lKHN0YXJ0KSAmJiBpc051bWJlcihkdXJhdGlvbilcbiAgICAgID8geyBzdGFydCwgZHVyYXRpb24gfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgLy8gRXZlbnTjgajjgb/jgarjgZvjgovloLTlkIhcbiAgaWYgKGV4ZWN1dGVkKSB7XG4gICAgY29uc3QgZXZlbnQ6IEV2ZW50ID0ge1xuICAgICAgbmFtZSxcbiAgICAgIGV4ZWN1dGVkLFxuICAgICAgZ2VuZXJhdGVkOiBmYWxzZSxcbiAgICAgIHJhdzogdGV4dCxcbiAgICB9O1xuICAgIGlmIChmcmVzaG5lc3MpIGV2ZW50LmZyZXNobmVzcyA9IGZyZXNobmVzcztcbiAgICBpZiAoc3ltYm9sIHx8IGNvdW50U3RyKSB7XG4gICAgICBldmVudC5yZWN1cnJlbmNlID0ge1xuICAgICAgICBmcmVxdWVuY3k6IHRvRnJlcXVlbmN5KHN5bWJvbCA/PyBcIkRcIikgPz8gXCJkYWlseVwiLFxuICAgICAgICBjb3VudDogY291bnRTdHIgPyBwYXJzZUludChjb3VudFN0cikgOiAxLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBldmVudCB9O1xuICB9XG5cbiAgaWYgKCFmcmVzaG5lc3MpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb2s6IGZhbHNlLFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgbmFtZTogXCJJbnZhbGlkRGF0ZUVycm9yXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiVGFzayByZXF1aXJlcyBmcmVzaG5lc3MgdG8gYmUgc3BlY1wiLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLy8g44GT44Gu5p2h5Lu244Gn44GvUmVtaW5kZXLku6XlpJbjgYLjgorjgYjjgarjgYRcbiAgY29uc3QgdGFzazogUmVtaW5kZXIgPSB7XG4gICAgbmFtZSxcbiAgICBmcmVzaG5lc3MsXG4gICAgZ2VuZXJhdGVkOiBmYWxzZSxcbiAgICByYXc6IHRleHQsXG4gIH07XG4gIGlmIChlc3RpbWF0ZWQpIHRhc2suZXN0aW1hdGVkID0gZXN0aW1hdGVkO1xuICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IGV4ZWN1dGVkID8geyAuLi50YXNrLCBleGVjdXRlZCB9IDogdGFzayB9O1xufTtcblxuLyoqIFJlbWluZGVy44GL44Gp44GG44GL6Kq/44G544KLICovXG5leHBvcnQgY29uc3QgaXNSZW1pbmRlciA9IDxSIGV4dGVuZHMgUmVtaW5kZXI+KHRhc2s6IFRhc2spOiB0YXNrIGlzIFIgPT5cbiAgIShcImV4ZWN1dGVkXCIgaW4gdGFzayk7XG5cbi8qKiDnubDjgorov5TjgZfjgr/jgrnjgq/jgYvjganjgYbjgYvoqr/jgbnjgosgKi9cbmV4cG9ydCBjb25zdCBpc1JlY3VycmVuY2UgPSA8XG4gIFIgZXh0ZW5kcyBSZWN1cnJlbnRFdmVudCxcbj4oXG4gIHRhc2s6IFRhc2ssXG4pOiB0YXNrIGlzIFIgPT4gXCJyZWN1cnJlbmNlXCIgaW4gdGFzaztcblxuLyoqIOe1guaXpeOCv+OCueOCr+OBi+OBqeOBhuOBi+WIpOWumuOBmeOCi1xuICpcbiAqIGBzdGFydGDjgavmmYLliLvjgYzlkKvjgb7jgozjgabjgYTjgarjgYTjgr/jgrnjgq/jga/lhajjgabntYLml6Xjgr/jgrnjgq/jgaDjgajjgb/jgarjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IGlzQWxsRGF5ID0gKFxuICB0YXNrOlxuICAgIHwgUGljazxSZW1pbmRlciwgXCJmcmVzaG5lc3NcIiB8IFwiZXN0aW1hdGVkXCI+XG4gICAgfCBQaWNrPEV2ZW50LCBcImV4ZWN1dGVkXCI+LFxuKTogYm9vbGVhbiA9PlxuICAhKFwiZXhlY3V0ZWRcIiBpbiB0YXNrIHx8XG4gICAgKFwiZnJlc2huZXNzXCIgaW4gdGFzayAmJiBpc0xvY2FsRGF0ZVRpbWUodGFzay5mcmVzaG5lc3MucmVmRGF0ZSkgJiZcbiAgICAgIHRhc2suZXN0aW1hdGVkICYmXG4gICAgICAoaXNOdW1iZXIodGFzay5lc3RpbWF0ZWQpIHx8IGlzTG9jYWxEYXRlVGltZSh0YXNrLmVzdGltYXRlZCkpKSk7XG5cbi8qKiDjgr/jgrnjgq/jga7miYDopoHmmYLplpPjgpLliIbljZjkvY3jgaflvpfjgotcbiAqXG4gKiDmiYDopoHmmYLplpPjgYzoqK3lrprjgZXjgozjgabjgYTjgarjgYTloLTlkIjjga9gdW5kZWZpbmVkYOOCkui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgZ2V0RHVyYXRpb24gPSAoXG4gIHRhc2s6IFBpY2s8UmVtaW5kZXIsIFwiZXN0aW1hdGVkXCI+IHwgUGljazxFdmVudCwgXCJleGVjdXRlZFwiPixcbik6IG51bWJlciB8IHVuZGVmaW5lZCA9PlxuICBcImV4ZWN1dGVkXCIgaW4gdGFza1xuICAgID8gdGFzay5leGVjdXRlZC5kdXJhdGlvblxuICAgIDogaXNOdW1iZXIodGFzay5lc3RpbWF0ZWQpXG4gICAgPyB0YXNrLmVzdGltYXRlZFxuICAgIDogdW5kZWZpbmVkO1xuXG4vKiog44K/44K544Kv44Gu6ZaL5aeL5pel5pmC44KS5b6X44KLICovXG5leHBvcnQgY29uc3QgZ2V0U3RhcnQgPSAodGFzazogVGFzayk6IExvY2FsRGF0ZSB8IExvY2FsRGF0ZVRpbWUgPT5cbiAgIWlzUmVtaW5kZXIodGFzaykgPyB0YXNrLmV4ZWN1dGVkLnN0YXJ0IDogdGFzay5mcmVzaG5lc3MucmVmRGF0ZTtcblxuLyoqIOOCv+OCueOCr+OBrue1guS6huaXpeaZguOCkuW+l+OCi1xuICpcbiAqIOe1guaXpeOBruWgtOWQiOOBr+OAgeacgOe1guaXpeOBrue/jOaXpTDmmYLjgpLntYLkuobml6XmmYLjgajjgZnjgotcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVuZCA9ICh0YXNrOiBUYXNrKTogTG9jYWxEYXRlVGltZSA9PiB7XG4gIGlmICghaXNSZW1pbmRlcih0YXNrKSkge1xuICAgIGNvbnN0IGVuZCA9IHRvRGF0ZSh0YXNrLmV4ZWN1dGVkLnN0YXJ0KTtcbiAgICByZXR1cm4gZnJvbURhdGUoYWRkTWludXRlcyhlbmQsIHRhc2suZXhlY3V0ZWQuZHVyYXRpb24pKTtcbiAgfVxuICBpZiAoXG4gICAgaXNOdW1iZXIodGFzay5lc3RpbWF0ZWQpICYmIGlzTG9jYWxEYXRlVGltZSh0YXNrLmZyZXNobmVzcy5yZWZEYXRlKVxuICApIHtcbiAgICBjb25zdCBlbmQgPSB0b0RhdGUodGFzay5mcmVzaG5lc3MucmVmRGF0ZSk7XG4gICAgcmV0dXJuIGZyb21EYXRlKGFkZE1pbnV0ZXMoZW5kLCB0YXNrLmVzdGltYXRlZCkpO1xuICB9XG4gIGNvbnN0IGVuZCA9IHRvRGF0ZShcbiAgICBpc051bWJlcih0YXNrLmVzdGltYXRlZClcbiAgICAgID8gdGFzay5mcmVzaG5lc3MucmVmRGF0ZVxuICAgICAgOiB0YXNrLmVzdGltYXRlZCA/PyB0YXNrLmZyZXNobmVzcy5yZWZEYXRlLFxuICApO1xuICBlbmQuc2V0SG91cnMoMCk7XG4gIGVuZC5zZXRNaW51dGVzKDApO1xuICByZXR1cm4gZnJvbURhdGUoYWRkRGF5cyhlbmQsIDEpKTtcbn07XG5cbi8qKiBUYXNrIG9iamVjdOOBi+OCieOCv+OCueOCr+ODquODs+OCr+OBruaWh+Wtl+WIl+OCkuS9nOOCiyAqL1xuZXhwb3J0IGNvbnN0IHRvU3RyaW5nID0gKHRhc2s6IFRhc2spOiBzdHJpbmcgPT4ge1xuICBjb25zdCBzdGF0dXMgPSB0YXNrLmZyZXNobmVzc1xuICAgID8gYCR7ZnJvbVN0YXR1cyh0YXNrLmZyZXNobmVzcy5zdGF0dXMpfSR7dGFzay5mcmVzaG5lc3Muc3BlZWQgPz8gXCJcIn1gXG4gICAgOiBcIlwiO1xuICBjb25zdCBiYXNlID0gYCR7Zm9ybWF0KGdldFN0YXJ0KHRhc2spKX1gO1xuICBjb25zdCBkdXJhdGlvbiA9IGdldER1cmF0aW9uKHRhc2spO1xuXG4gIHJldHVybiBgJHtzdGF0dXN9QCR7YmFzZX0ke1xuICAgIGR1cmF0aW9uID09PSB1bmRlZmluZWQgPyBcIlwiIDogYEQke2R1cmF0aW9ufWBcbiAgfSR7dGFzay5uYW1lfWA7XG59O1xuXG4vKiog5oyH5a6a5pel44Gr57mw44KK6L+U44GZ57mw44KK6L+U44GX44K/44K544Kv44GL6Kq/44G544KL44CCXG4gKlxuICog57mw44KK6L+U44GZ5aC05ZCI44Gv44Gd44Gu44K/44K544Kv44KS5oyH5a6a5pel44Gu5pel5LuY44Gn55Sf5oiQ44GZ44KL44CCXG4gKiDnubDjgorov5TjgZXjgarjgYTloLTlkIjjga9gdW5kZWZpbmVkYOOCkui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgbWFrZVJlcGVhdCA9IChcbiAgZXZlbnQ6IFJlY3VycmVudEV2ZW50LFxuICBkYXRlOiBEYXRlLFxuKTogRXZlbnQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBsb2NhbERhdGUgPSBmcm9tRGF0ZShkYXRlKTtcblxuICBjb25zdCB7IHJlY3VycmVuY2UsIGV4ZWN1dGVkIH0gPSBldmVudDtcbiAgLy8g57mw44KK6L+U44GZ5aC05ZCI44Gu44G/6YCa6YGO44GV44Gb44KLXG4gIHN3aXRjaCAocmVjdXJyZW5jZS5mcmVxdWVuY3kpIHtcbiAgICBjYXNlIFwieWVhcmx5XCI6IHtcbiAgICAgIC8vIOmWk+malOOBjOOBguOBo+OBpuOBhOOCi+OBi+ODgeOCp+ODg+OCr1xuICAgICAgaWYgKFxuICAgICAgICBNYXRoLmFicyhsb2NhbERhdGUueWVhciAtIGV4ZWN1dGVkLnN0YXJ0LnllYXIpICVcbiAgICAgICAgICAgIChyZWN1cnJlbmNlLmNvdW50ID8/IDEpICE9PSAwXG4gICAgICApIHJldHVybjtcblxuICAgICAgLy8g5pel44Go5pyI44GM5LiA6Ie044GX44Gm44GE44KL44GL44OB44Kn44OD44KvXG4gICAgICBpZiAoXG4gICAgICAgIGV4ZWN1dGVkLnN0YXJ0Lm1vbnRoICE9PSBsb2NhbERhdGUubW9udGggfHxcbiAgICAgICAgZXhlY3V0ZWQuc3RhcnQuZGF0ZSAhPT0gbG9jYWxEYXRlLmRhdGVcbiAgICAgICkgcmV0dXJuO1xuXG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBcIm1vbnRobHlcIjoge1xuICAgICAgLyoqIOS4juOBiOOCieOCjOOBn+aXpeS7mOOBqGV2ZW5044Gu57mw44KK6L+U44GX6LW354K544Go44Gu5pyI5beuICovXG4gICAgICBjb25zdCBkaWZmID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMoXG4gICAgICAgIHRvRGF0ZShsb2NhbERhdGUpLFxuICAgICAgICB0b0RhdGUoZXhlY3V0ZWQuc3RhcnQpLFxuICAgICAgKTtcbiAgICAgIGlmIChkaWZmICUgKHJlY3VycmVuY2UuY291bnQgPz8gMSkgIT09IDApIHJldHVybjtcblxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgXCJ3ZWVrbHlcIjpcbiAgICBjYXNlIFwiZGFpbHlcIjoge1xuICAgICAgY29uc3QgaW50ZXJ2YWwgPSByZWN1cnJlbmNlLmZyZXF1ZW5jeSA9PT0gXCJ3ZWVrbHlcIiA/IDcgOiAxO1xuICAgICAgY29uc3QgZGlmZiA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhcbiAgICAgICAgdG9EYXRlKGxvY2FsRGF0ZSksXG4gICAgICAgIHRvRGF0ZShleGVjdXRlZC5zdGFydCksXG4gICAgICApO1xuICAgICAgaWYgKGRpZmYgJSAoKHJlY3VycmVuY2UuY291bnQgPz8gMSkgKiBpbnRlcnZhbCkgIT09IDApIHJldHVybjtcblxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RhcnQ6IExvY2FsRGF0ZVRpbWUgPSB7IC4uLmV4ZWN1dGVkLnN0YXJ0IH07XG4gIHN0YXJ0LnllYXIgPSBsb2NhbERhdGUueWVhcjtcbiAgc3RhcnQubW9udGggPSBsb2NhbERhdGUubW9udGg7XG4gIHN0YXJ0LmRhdGUgPSBsb2NhbERhdGUuZGF0ZTtcblxuICBjb25zdCBnZW5lcmF0ZWQ6IEV2ZW50ID0ge1xuICAgIG5hbWU6IGV2ZW50Lm5hbWUsXG4gICAgZXhlY3V0ZWQ6IHsgc3RhcnQsIGR1cmF0aW9uOiBleGVjdXRlZC5kdXJhdGlvbiB9LFxuICAgIGdlbmVyYXRlZDogdHJ1ZSxcbiAgICByYXc6IGV2ZW50LnJhdyxcbiAgfTtcbiAgaWYgKGV2ZW50LmZyZXNobmVzcykgZ2VuZXJhdGVkLmZyZXNobmVzcyA9IGV2ZW50LmZyZXNobmVzcztcbiAgcmV0dXJuIGdlbmVyYXRlZDtcbn07XG5cbi8qKiBgVGFza2DjgYvjgonjgr/jgrnjgq/jg6rjg7Pjgq/jgpLlvqnlhYPjgZnjgotcbiAqXG4gKiDjg6rjg7Pjgq/jgavjgZnjgovmnaHku7ZcbiAqIC0g57mw44KK6L+U44GX44K/44K544Kv44Gu5aC05ZCI44GvYFJlbWluZGVyYOOBruOBv+ODquODs+OCr+OBq+OBmeOCi1xuICogLSDnubDjgorov5TjgZfjgr/jgrnjgq/jgafjgarjgYTloLTlkIjjga/jgZnjgbnjgabjg6rjg7Pjgq/jgavjgZnjgotcbiAqXG4gKiDjg6rjg7Pjgq/jgavjgZfjgarjgYTjgoLjga7jga9gdW5kZWZpbmVkYOOCkui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgZ2V0TGlua1RpdGxlID0gKHRhc2s6IFRhc2spOiBzdHJpbmcgfCB1bmRlZmluZWQgPT5cbiAgdGFzay5mcmVzaG5lc3NcbiAgICA/IHRhc2suZ2VuZXJhdGVkID8gdG9TdHJpbmcodGFzaykgOiB0YXNrLnJhd1xuICAgIDogIXRhc2suZ2VuZXJhdGVkXG4gICAgPyB0YXNrLnJhd1xuICAgIDogdW5kZWZpbmVkO1xuXG4vKiog6ZaL5aeL5pel5pmC6KOc5q2j44OH44O844K/44GL44KJ5pyA57WC55qE44Gq6ZaL5aeL5pel5pmC44KS5rG65a6a44GZ44KLXG4gKlxuICog5LiO44GI44KJ44KM44Gf5paH5a2X5YiX44Gv5q2j44GX44GE5pWw5YCk44Gn44GC44KL44GT44Go44KS5YmN5o+Q44Go44GX44CB44GT44Gu5Ye95pWw44Gn44Gv5LiA5YiH44Ko44Op44O85Yem55CG44GX44Gq44GEXG4gKi9cbmNvbnN0IGZpeFN0YXJ0ID0gKFxuICBzeWVhcjogc3RyaW5nLFxuICBzbW9udGg6IHN0cmluZyxcbiAgc2RhdGU6IHN0cmluZyxcbiAgc2hvdXJzOiBzdHJpbmcsXG4gIHNtaW51dGVzOiBzdHJpbmcsXG4pOiBMb2NhbERhdGUgfCBMb2NhbERhdGVUaW1lID0+IHtcbiAgY29uc3QgeWVhciA9IHBhcnNlSW50KHN5ZWFyKTtcbiAgY29uc3QgbW9udGggPSBwYXJzZUludChzbW9udGgpO1xuICBjb25zdCBkYXRlID0gcGFyc2VJbnQoc2RhdGUpO1xuICBjb25zdCBob3VycyA9IHNob3VycyA/IHBhcnNlSW50KHNob3VycykgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IG1pbnV0ZXMgPSBzbWludXRlcyA/IHBhcnNlSW50KHNtaW51dGVzKSA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4gaG91cnMgIT09IHVuZGVmaW5lZCAmJiBtaW51dGVzICE9PSB1bmRlZmluZWRcbiAgICA/IHsgeWVhciwgbW9udGgsIGRhdGUsIGhvdXJzLCBtaW51dGVzIH1cbiAgICA6IHsgeWVhciwgbW9udGgsIGRhdGUgfTtcbn07XG5cbi8qKiDntYLkuobml6XmmYLoo5zmraPjg4fjg7zjgr/jgYvjgonmnIDntYLnmoTjgarntYLkuobml6XmmYLjgpLmsbrlrprjgZnjgotcbiAqXG4gKiDkuI7jgYjjgonjgozjgZ/mloflrZfliJfjga/mraPjgZfjgYTmlbDlgKTjgafjgYLjgovjgZPjgajjgpLliY3mj5DjgajjgZfjgIHjgZPjga7lh73mlbDjgafjga/kuIDliIfjgqjjg6njg7zlh6bnkIbjgZfjgarjgYRcbiAqXG4gKiBAcmV0dXJuIOaJgOimgeaZgumWk+OCkua4oeOBleOCjOOBn+OBi+OAgemWi+Wni+aZguWIu+OBqOe1guS6huaZguWIu+OBqOOCguOBq+aYjuiomOOBleOCjOOBpuOBhOOCi+WgtOWQiOOBr+OAgeaJgOimgeaZgumWkyAobWluKSDjgpJgbnVtYmVyYOOBp+i/lOOBmeOAgue1guS6huaXpeaZguaMh+WumuOBjOOBquOBhOWgtOWQiOOBr2B1bmRlaWZuZWRg44KS6L+U44GZ44CC44Gd44KM5Lul5aSW44GvYExvY2FsRGF0ZSB8IExvY2FsRGF0ZVRpbWVg44KS6L+U44GZXG4gKi9cbmNvbnN0IGZpeEVuZCA9IChcbiAgYmFzZVN0YXJ0OiBMb2NhbERhdGUgfCBMb2NhbERhdGVUaW1lLFxuICBleWVhcjogc3RyaW5nLFxuICBlbW9udGg6IHN0cmluZyxcbiAgZWRhdGU6IHN0cmluZyxcbiAgZWhvdXJzOiBzdHJpbmcsXG4gIGVtaW51dGVzOiBzdHJpbmcsXG4gIGR1cmF0aW9uU3RyOiBzdHJpbmcsXG4pOiBudW1iZXIgfCBMb2NhbERhdGUgfCBMb2NhbERhdGVUaW1lIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKCFleWVhciAmJiAhZW1vbnRoICYmICFlZGF0ZSAmJiAhZWhvdXJzICYmICFlbWludXRlcyAmJiAhZHVyYXRpb25TdHIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8g5omA6KaB5pmC6ZaT44GM55u05o6l5oyH5a6a44GV44KM44Gm44GE44KM44Gw44CB44Gd44KM44KS5YSq5YWI44GZ44KLXG4gIGlmIChkdXJhdGlvblN0cikgcmV0dXJuIHBhcnNlSW50KGR1cmF0aW9uU3RyKTtcblxuICBjb25zdCB5ZWFyID0gZXllYXIgPyBwYXJzZUludChleWVhcikgOiBiYXNlU3RhcnQueWVhcjtcbiAgY29uc3QgbW9udGggPSBlbW9udGggPyBwYXJzZUludChlbW9udGgpIDogYmFzZVN0YXJ0Lm1vbnRoO1xuICBjb25zdCBkYXRlID0gZWRhdGUgPyBwYXJzZUludChlZGF0ZSkgOiBiYXNlU3RhcnQuZGF0ZTtcbiAgY29uc3QgaG91cnMgPSBlaG91cnMgPyBwYXJzZUludChlaG91cnMpIDogdW5kZWZpbmVkO1xuICBjb25zdCBtaW51dGVzID0gZW1pbnV0ZXMgPyBwYXJzZUludChlbWludXRlcykgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgZW5kOiBMb2NhbERhdGUgfCBMb2NhbERhdGVUaW1lID1cbiAgICBob3VycyAhPT0gdW5kZWZpbmVkICYmIG1pbnV0ZXMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IHllYXIsIG1vbnRoLCBkYXRlLCBob3VycywgbWludXRlcyB9XG4gICAgICA6IHsgeWVhciwgbW9udGgsIGRhdGUgfTtcblxuICAvLyDmiYDopoHmmYLplpPjgpLoqIjnrpfjgafjgY3jgarjgYTloLTlkIhcbiAgaWYgKCFpc0xvY2FsRGF0ZVRpbWUoYmFzZVN0YXJ0KSB8fCAhaXNMb2NhbERhdGVUaW1lKGVuZCkpIHJldHVybiBlbmQ7XG5cbiAgcmV0dXJuIE1hdGgucm91bmQoXG4gICAgKHRvRGF0ZShlbmQpLmdldFRpbWUoKSAtIHRvRGF0ZShiYXNlU3RhcnQpLmdldFRpbWUoKSkgLyAoNjAgKiAxMDAwKSxcbiAgKTtcbn07XG4iLCAiaW1wb3J0IHtcbiAgZ2V0RHVyYXRpb24sXG4gIGdldExpbmtUaXRsZSxcbiAgaXNBbGxEYXksXG4gIGlzUmVjdXJyZW5jZSxcbiAgaXNSZW1pbmRlcixcbiAgbWFrZVJlcGVhdCxcbiAgVGFzayxcbn0gZnJvbSBcIi4vcGFyc2UudHNcIjtcbmltcG9ydCB7IFRhc2sgYXMgVGFza0xpbmUgfSBmcm9tIFwiLi4vdGFzay50c1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vbG9jYWxEYXRlLnRzXCI7XG5cbi8qKiDjgr/jgrnjgq/jg6rjg7Pjgq/jga7jgr/jgrnjgq/jg4fjg7zjgr/jgpLjgIHml6XliIroqJjpjLJzaGVldOOBq+abuOOBjei+vOOCgOOCv+OCueOCr+ODqeOCpOODs+eUqOODh+ODvOOCv+OBq+WkieaPm+OBmeOCi1xuICpcbiAqIEBwYXJhbSB0YXNrIOOCv+OCueOCr+ODquODs+OCr+OBruOCv+OCueOCr+ODh+ODvOOCv1xuICogQHBhcmFtIGRhdGUg57mw44KK6L+U44GX44K/44K544Kv44KS55Sf5oiQ44GX44Gf44GE5pel5LuY44CC57mw44KK6L+U44GX44K/44K544Kv44Gn44Gq44GR44KM44Gw54Sh6KaW44GV44KM44KLXG4gKiBAcmV0dXJuIOOCv+OCueOCr+ODqeOCpOODs+eUqOODh+ODvOOCv1xuICovXG5leHBvcnQgY29uc3QgdG9UYXNrTGluZSA9ICh0YXNrOiBUYXNrLCBkYXRlOiBEYXRlKTogVGFza0xpbmUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoIXRhc2suZ2VuZXJhdGVkICYmIGlzUmVjdXJyZW5jZSh0YXNrKSkge1xuICAgIGNvbnN0IGdlbmVyYXRlZCA9IG1ha2VSZXBlYXQodGFzaywgZGF0ZSk7XG4gICAgaWYgKCFnZW5lcmF0ZWQpIHJldHVybjtcbiAgICByZXR1cm4gdG9UYXNrTGluZShnZW5lcmF0ZWQsIGRhdGUpO1xuICB9XG4gIGNvbnN0IHN0YXJ0ID0gdG9EYXRlKFxuICAgICFpc1JlbWluZGVyKHRhc2spID8gdGFzay5leGVjdXRlZC5zdGFydCA6IHRhc2suZnJlc2huZXNzLnJlZkRhdGUsXG4gICk7XG4gIGNvbnN0IGR1cmF0aW9uTWluID0gZ2V0RHVyYXRpb24odGFzayk7XG5cbiAgY29uc3QgdGl0bGUgPSBnZXRMaW5rVGl0bGUodGFzayk7XG5cbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogdGl0bGUgIT09IHVuZGVmaW5lZCA/IGBbJHt0aXRsZX1dYCA6IHRhc2submFtZSxcbiAgICBiYXNlOiBzdGFydCxcbiAgICBwbGFuOiB7XG4gICAgICBzdGFydDogaXNBbGxEYXkodGFzaykgPyB1bmRlZmluZWQgOiBzdGFydCxcbiAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbk1pbiAhPT0gdW5kZWZpbmVkID8gZHVyYXRpb25NaW4gKiA2MCA6IHVuZGVmaW5lZCxcbiAgICB9LFxuICAgIHJlY29yZDoge30sXG4gIH07XG59O1xuIiwgImltcG9ydCB7IGdldEVhY2hMYXRlc3REYXRlIH0gZnJvbSBcIi4uL2dldEVhY2hMYXRlc3REYXRlL21vZC50c1wiO1xuaW1wb3J0IHR5cGUge1xuICBOZXdQYWdlSG9vayxcbiAgVXBkYXRlclxufSBmcm9tIFwiLi4vY3VzdG9tLW5ldy1wYWdlL21vZC50c1wiO1xuaW1wb3J0IHsgcGFyc2UsIHRvU3RyaW5nLCBpc1Rhc2sgfSBmcm9tIFwiLi4vdGFra2VyOTklMkZ0YWtrZXItc2NoZWR1bGVyL2RlcHMudHNcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJ2YWwgfSBmcm9tIFwiLi4vdGFra2VyOTklMkZ0YWtrZXItc2NoZWR1bGVyL2RlcHMudHNcIjtcbmltcG9ydCB7IGdldEluZGVudENvdW50LCB0b1RpdGxlTGMgfSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvdGV4dC50c1wiO1xuaW1wb3J0IHsgbGlnaHRGb3JtYXQgfSBmcm9tIFwiLi4vZGF0ZS1mbnMvbW9kLnRzXCI7XG5pbXBvcnQgeyBwYXJzZSBhcyBwYXJzZVRhc2tMaW5rIH0gZnJvbSBcIi4uL3Rha2tlcjk5JTJGdGFra2VyLXNjaGVkdWxlci93b3JrZmxvdy50c1wiO1xuXG5jb25zdCBmb29kVHlwZSA9IHtcbiAgXCLjgYLjgZXjgZTjga/jgpNcIjogXCIjbG9nLWJyZWFrZmFzdFwiLFxuICBcIuOBsuOCi+OBlOOBr+OCk1wiOiBcIiNsb2ctbHVuY2hcIixcbiAgXCLjgojjgovjgZTjga/jgpNcIjogXCIjbG9nLWRpbm5lclwiLFxufSBhcyBSZWNvcmQ8c3RyaW5nLCBgIyR7c3RyaW5nfWA+O1xuXG4vKiogdGFzayBsaW5l44Gu6YWN5LiL44Gr5pu444GE44Gf44KC44Gu44KS5paw44GX44GE44Oa44O844K444Gr5YiH44KK5Ye644GZXG4gKlxuICog6aOf44G544Gf44KC44Gu6KiY6Yyy44Gu44Go44GN44Gv6Iul5bmyVGVtcGxhdGXjgpLlpInjgYjjgotcbiAqL1xuZXhwb3J0IGNvbnN0IHRhc2tMaW5lSG9vazogTmV3UGFnZUhvb2sgPSAoXG4gIHRleHQsIHsgdGl0bGUsIHByb2plY3RUbywgbW9kZSB9LFxuKSA9PiB7XG4gIGNvbnN0IFt0YXNrTGluZSwgLi4ubGluZXNdID0gdGV4dC5zcGxpdChcIlxcblwiKTtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2UodGFza0xpbmUpO1xuICAvLyB0YXNrIGxpbmXjgafjgarjgYTloLTlkIjjga/lr77osaHlpJZcbiAgaWYgKCFwYXJzZWQpIHJldHVybjtcbiAgLy8g566H5p2h5pu444GN44GM54Sh44GE5pmC44Gv5L2V44KC5YiH44KK5Ye644GV44Gq44GEXG4gIGlmIChsaW5lcy5sZW5ndGggPT09IDApIHJldHVybiB7IHRleHQsIHBhZ2VzOiBbXSB9O1xuICBcbiAgY29uc3QgeyB0aXRsZTogdGFza05hbWUsIGJhc2UsIHJlY29yZCwgLi4ucmVzdCB9ID0gcGFyc2VkO1xuICBjb25zdCBuZXdUaXRsZSA9IG1ha2VUYXNrVGl0bGUodGFza05hbWUsIGJhc2UsIHJlY29yZCk7XG4gIGNvbnN0IG5ld1Rhc2tMaW5lID0gdG9TdHJpbmcoe1xuICAgIHRpdGxlOiBgWyR7bmV3VGl0bGV9XWAsXG4gICAgYmFzZSxcbiAgICByZWNvcmQsXG4gICAgLi4ucmVzdCxcbiAgfSk7XG4gIC8vIOS9meioiOOBquOCpOODs+ODh+ODs+ODiOOCkuWJiuOCi1xuICBjb25zdCBtaW5JbmRlbnROdW0gPSBNYXRoLm1pbiguLi5saW5lcy5tYXAoKGxpbmUpID0+IGdldEluZGVudENvdW50KGxpbmUpKSk7XG4gIGNvbnN0IG5ld0xpbmVzID0gW1xuICAgIC8vIOOCv+OCueOCr+WQjeOBq+ODquODs+OCr+OBjOWFpeOBo+OBpuOBhOOBn+OBqOOBjeOBr+OBneOCjOOCkuS9v+OBhlxuICAgIC8vIOOBn+OBoOOBl+OAgeODmuODvOOCuOOCv+OCpOODiOODq+OBqOWQjOWQjeOBruOBqOOBjeOBr+aMv+WFpeOBl+OBquOBhFxuICAgIC4uLigvW1xcW1xcXV0vLnRlc3QodGFza05hbWUpICYmIHRhc2tOYW1lICE9PSBgWyR7bmV3VGl0bGV9XWAgPyBbdGFza05hbWVdIDogW10pLCBcbiAgICAuLi4oKHRpdGxlIGluIGZvb2RUeXBlKSA/IFtcbiAgICAgICAgLi4ubGluZXMubWFwKFxuICAgICAgICAgIChsaW5lKSA9PiBsaW5lLnNsaWNlKG1pbkluZGVudE51bSlcbiAgICAgICAgKSxcbiAgICAgICAgXCJcIixcbiAgICAgICAgZm9vZFR5cGVbdGl0bGVdLFxuICAgICAgICAnI2xvZy1lYXRlbmZvb2QnXG4gICAgICBdIDogW1xuICAgICAgICAuLi5saW5lcy5tYXAoXG4gICAgICAgICAgKGxpbmUpID0+IGAgJHtsaW5lLnNsaWNlKG1pbkluZGVudE51bSl9YFxuICAgICAgICApLFxuICAgICAgICBcIlwiLFxuICAgICAgXVxuICAgICksXG4gIF07XG4gIFxuICByZXR1cm4ge1xuICAgIHRleHQ6IG5ld1Rhc2tMaW5lLFxuICAgIHBhZ2VzOiBbe1xuICAgICAgcHJvamVjdDogcHJvamVjdFRvLFxuICAgICAgdGl0bGU6IG5ld1RpdGxlLFxuICAgICAgbGluZXM6IG1ha2VVcGRhdGVyKHRpdGxlLCBuZXdMaW5lcywgW3JlY29yZC5zdGFydCA/PyBiYXNlXSksXG4gICAgICBtb2RlLFxuICAgIH1dLFxuICB9O1xufTtcblxudGFza0xpbmVIb29rLmhvb2tOYW1lID0gXCJ0YXNrLWhvb2tcIjtcblxuY29uc3QgbWFrZVRhc2tUaXRsZSA9ICh0aXRsZTogc3RyaW5nLCBiYXNlOiBEYXRlLCByZWNvcmQ6IEludGVydmFsKSA9PiB7XG4gIGNvbnN0IGRhdGUgPSBsaWdodEZvcm1hdChyZWNvcmQuc3RhcnQgPz8gYmFzZSwgJ3l5eXktTU0tZGQnKTtcbiAgaWYgKHRpdGxlIGluIGZvb2RUeXBlKSB7XG4gICAgcmV0dXJuIGAke2RhdGV9ICR7dGl0bGV9YDtcbiAgfVxuICAvLyDjgr/jgrnjgq/jg6rjg7Pjgq/jga7loLTlkIjjga/jgIHjgZ3jgozjgpLjgZ3jga7jgb7jgb7kvb/jgYZcbiAgaWYgKHBhcnNlVGFza0xpbmsodGl0bGUuc2xpY2UoMSwgLTEpKSkge1xuICAgIHJldHVybiB0aXRsZS5zbGljZSgxLCAtMSk7XG4gIH1cbiAgY29uc3QgZmlyc3QgPSB0aXRsZS5yZXBsYWNlKC9bXFxbXFxdXS9nLCAnJykudHJpbSgpO1xuICByZXR1cm4gYCR7Zmlyc3R9JHtmaXJzdC5lbmRzV2l0aChkYXRlKSA/IFwiXCIgOiBgICR7ZGF0ZX1gfWA7XG59O1xuXG5leHBvcnQgY29uc3QgbmV3UGFnZUhvb2s6IE5ld1BhZ2VIb29rID0gKFxuICB0ZXh0LCB7IHRpdGxlOiB0aXRsZUZyb20sIHByb2plY3RUbywgbW9kZSwgbGluZXM6IG1ldGFMaW5lcyB9LFxuKSA9PiB7XG4gIGNvbnN0IFtyYXdUaXRsZSwgLi4ubGluZXNdID0gdGV4dC5zcGxpdChcIlxcblwiKTtcbiAgLy8g6KSH5pWw6KGM44Gu5YiH44KK5Ye644GX44Gu44G/5a++6LGhXG4gIGlmIChsaW5lcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgY29uc3QgdGl0bGUgPSByYXdUaXRsZS5yZXBsYWNlKC9bXFxbXFxdXS9nLCBcIlwiKS50cmltKCk7XG4gIC8vIOS9meioiOOBquOCpOODs+ODh+ODs+ODiOOCkuWJiuOCi1xuICBjb25zdCBtaW5JbmRlbnROdW0gPSBNYXRoLm1pbiguLi5saW5lcy5tYXAoKGxpbmUpID0+IGdldEluZGVudENvdW50KGxpbmUpKSk7XG4gIFxuICAvLyDooYzjga7mm7TmlrDml6XmmYLjgajnj77lnKjml6XmmYLjgYvjgonml6Xku5jjgr/jgrDjgpLkvZzjgotcbiAgLy8gXCJ0YWtrZXJcIuOBp+Wni+OBvuOCi3Byb2plY3Tku6XlpJbjgafjga9vZmbjgavjgZnjgotcbiAgY29uc3QgZGF0ZXMgPSBwcm9qZWN0VG8uc3RhcnRzV2l0aChcInRha2tlclwiKSA/IGdldEVhY2hMYXRlc3REYXRlKFtcbiAgICBuZXcgRGF0ZSgpLFxuICAgIC4uLm1ldGFMaW5lcy5tYXAoKHsgdXBkYXRlZCB9KSA9PiBuZXcgRGF0ZSh1cGRhdGVkICogMTAwMCkpLFxuICBdKVxuICAuc29ydCgoYSwgYikgPT4gYi5nZXRUaW1lKCkgLSBhLmdldFRpbWUoKSlcbiAgOiBbXTtcbiAgXG4gIGNvbnN0IG5ld0xpbmVzID0gW1xuICAgIFwiXCIsXG4gICAgLy8g44K/44Kk44OI44Or44Gr44Oq44Oz44Kv44GM5YWl44Gj44Gm44GE44Gf44Go44GN44Gv44Gd44KM44KS5L2/44GGXG4gICAgLi4uKC9bXFxbXFxdXS8udGVzdChyYXdUaXRsZSkgPyBbcmF3VGl0bGUudHJpbVN0YXJ0KCldIDogW10pLCBcbiAgICAuLi5saW5lcy5tYXAoKGxpbmUpID0+IGxpbmUuc2xpY2UobWluSW5kZW50TnVtKSksXG4gIF07XG4gIFxuICByZXR1cm4ge1xuICAgIHRleHQ6IGAke1wiIFwiLnJlcGVhdChnZXRJbmRlbnRDb3VudChyYXdUaXRsZSkpfVske3RpdGxlfV1gLFxuICAgIHBhZ2VzOiBbe1xuICAgICAgcHJvamVjdDogcHJvamVjdFRvLFxuICAgICAgdGl0bGUsXG4gICAgICBsaW5lczogbWFrZVVwZGF0ZXIodGl0bGVGcm9tLCBuZXdMaW5lcywgZGF0ZXMpLFxuICAgICAgbW9kZSxcbiAgICB9XSxcbiAgfTtcbn07XG5cbm5ld1BhZ2VIb29rLmhvb2tOYW1lID0gXCJuZXctcGFnZS1ob29rXCI7XG5cbmV4cG9ydCBjb25zdCBzcGxpdHRlZExpbmtIb29rOiBOZXdQYWdlSG9vayA9IChcbiAgdGV4dCwgeyBwcm9qZWN0VG8sIG1vZGUgfSxcbikgPT4ge1xuICAvLyDjg6rjg7Pjgq/jgpLlkKvjgoDljZjkuIDooYzjga7jgb/lr77osaFcbiAgaWYgKHRleHQuaW5jbHVkZXMoXCJcXG5cIikgfHwgIS9cXFtbXlxcXV0rXFxdLy50ZXN0KHRleHQpKSByZXR1cm47XG4gIGNvbnN0IFtpbmRlbnQsIHN0cl0gPSB0ZXh0Lm1hdGNoKC9eKFxccyopKC4qKSQvKT8uc2xpY2U/LigxKSA/P1xuICAgIFtcIlwiLCB0ZXh0XTtcbiAgY29uc3QgbGlua3NMY0luVGV4dCA9IFsuLi5zdHIubWF0Y2hBbGwoL1xcWyhbXlxcXV0pXFxdL2cpXVxuICAgIC5tYXAoKG1hdGNoKSA9PiB0b1RpdGxlTGMobWF0Y2hbMV0pKTtcbiAgY29uc3QgdGl0bGUgPSBzdHIucmVwbGFjZUFsbChcIltcIiwgXCJcIikucmVwbGFjZUFsbChcIl1cIiwgXCJcIik7XG4gIFxuICByZXR1cm4ge1xuICAgIHRleHQ6IGAke2luZGVudH1bJHt0aXRsZX1dYCxcbiAgICBwYWdlczogW3tcbiAgICAgIHByb2plY3Q6IHByb2plY3RUbyxcbiAgICAgIHRpdGxlLFxuICAgICAgbGluZXM6IChwcmV2LCB7IGxpbmtzIH0pID0+e1xuICAgICAgICAvLyDjgZnjgafjgavlkIzjgZjjg6rjg7Pjgq/jgYzmm7jjgY3ovrzjgb7jgozjgabjgYTjgovjgajjgY3jga/kvZXjgoLjgZfjgarjgYRcbiAgICAgICAgY29uc3QgbGlua3NMYyA9IGxpbmtzLm1hcCgobGluaykgPT4gdG9UaXRsZUxjKGxpbmspKTtcbiAgICAgICAgaWYgKGxpbmtzTGNJblRleHQuZXZlcnkoXG4gICAgICAgICAgKGxpbmtMYykgPT4gbGlua3NMYy5pbmNsdWRlcyhsaW5rTGMpXG4gICAgICAgICkpIHJldHVybjtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi5wcmV2Lm1hcCgobGluZSkgPT4gbGluZS50ZXh0KSxcbiAgICAgICAgICBzdHIsXG4gICAgICAgIF07XG4gICAgICB9LFxuICAgICAgbW9kZSxcbiAgICB9XSxcbiAgfTtcbn07XG5cbnNwbGl0dGVkTGlua0hvb2suaG9va05hbWUgPSBcInNwbGl0dGVkLWxpbmstaG9va1wiO1xuXG5jb25zdCBtYWtlVXBkYXRlciA9ICh0aXRsZUZyb206IHN0cmluZywgbGluZXM6IEl0ZXJhYmxlPHN0cmluZz4sIGRhdGVzOiBEYXRlW10pOiBVcGRhdGVyID0+XG4gIChwcmV2LCB7IGxpbmtzIH0pID0+IHtcbiAgICBjb25zdCBsaW5rc0xjID0gbGlua3MubWFwKChsaW5rKSA9PiB0b1RpdGxlTGMobGluaykpO1xuICAgIGNvbnN0IGZyb21MaW5lID0gbGlua3NMYy5pbmNsdWRlcyh0b1RpdGxlTGModGl0bGVGcm9tKSkgP1xuICAgICAgW10gOlxuICAgICAgW2Bmcm9tIFske3RpdGxlRnJvbX1dYF07XG4gICAgY29uc3QgZGF0ZVRhZ3MgPSBkYXRlcy5mbGF0TWFwKFxuICAgICAgKGRhdGUpID0+IHtcbiAgICAgICAgY29uc3QgeXl5eU1NZGQgPSBsaWdodEZvcm1hdChkYXRlLCBcInl5eXktTU0tZGRcIik7XG4gICAgICAgIGlmIChsaW5rc0xjLmluY2x1ZGVzKHl5eXlNTWRkKSkgcmV0dXJuIFtdO1xuICAgICAgICBjb25zdCBISG1tc3MgPSBsaWdodEZvcm1hdChkYXRlLCBcIkhIOm1tOnNzXCIpO1xuICAgICAgICByZXR1cm4gW2AjJHt5eXl5TU1kZH0gJHtISG1tc3N9YF07XG4gICAgICB9XG4gICAgKTtcbiAgICAgICAgXG4gICAgY29uc3QgcHJldkxpbmVzID0gcHJldi5tYXAoKGxpbmUpID0+IGxpbmUudGV4dCk7XG4gICAgLyoqIHRoZSBpbmRleCB3aGVyZSB0aGUgZmlyc3QgZGF0ZVRhZyBzdGFydHMgKi9cbiAgICBjb25zdCBpbmRleCA9IHByZXZMaW5lcy5maW5kSW5kZXgoXG4gICAgICAobGluZSkgPT4gL14jXFxkezR9LVxcZHsyfS1cXGR7Mn0vLnRlc3QobGluZSlcbiAgICApO1xuICAgIFxuICAgIGNvbnN0IGluc2VydEJlZm9yZSA9IGluZGV4IDwgMCA/IHByZXZMaW5lcy5sZW5ndGggOiBpbmRleDsgICAgICAgICAgIFxuICAgIHJldHVybiBbXG4gICAgICAuLi5wcmV2TGluZXMuc2xpY2UoMCwgaW5zZXJ0QmVmb3JlKSxcbiAgICAgIC4uLmZyb21MaW5lLFxuICAgICAgLi4ubGluZXMsXG4gICAgICBcIlwiLFxuICAgICAgLi4uZGF0ZVRhZ3MsXG4gICAgICAuLi5wcmV2TGluZXMuc2xpY2UoaW5zZXJ0QmVmb3JlKSxcbiAgICBdO1xuICB9OyIsICJpbXBvcnQge1xuICB0cmFuc3BvcnQsIGNyZWF0ZVRhc2ssIHRvU3RyaW5nXG59IGZyb20gXCIuLi90YWtrZXI5OSUyRnRha2tlci1zY2hlZHVsZXIvZGVwcy50c1wiO1xuaW1wb3J0IHtcbiAgcGFyc2UsIHRvVGFza0xpbmVcbn0gZnJvbSBcIi4uL3Rha2tlcjk5JTJGdGFra2VyLXNjaGVkdWxlci93b3JrZmxvdy50c1wiO1xuaW1wb3J0IHtcbiAgY2FyZXQsIGdldExpbmVzLCByZXBsYWNlTGluZXNcbn0gZnJvbSBcIi4uL3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkL2RvbS50c1wiO1xuaW1wb3J0IHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vc2NyYXBib3gtanAlMkZ0eXBlcy91c2Vyc2NyaXB0LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuY29uc3QgcGQgPSAoZTogRXZlbnQpID0+IGUucHJldmVudERlZmF1bHQoKTtcbmNvbnN0IHNwID0gKGU6IEV2ZW50KSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG5leHBvcnQgY29uc3QgdGFza0NvbW1vbiA9IHtcbiAgXCI8QS1hPjxBLWM+XCI6IGFzeW5jIChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgcGQoZSk7c3AoZSk7XG4gICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gZ2V0TGluZVJhbmdlKCk7XG4gICAgY29uc3QgdGV4dCA9IGdldExpbmVzKCkuc2xpY2Uoc3RhcnQsIGVuZCArIDEpLm1hcCgobGluZSkgPT4ge1xuICAgICAgY29uc3QgdGV4dCA9IGxpbmUudGV4dDtcbiAgICAgIGNvbnN0IGxpbmsgPSBsaW5lLnRleHQubWF0Y2goL1xcWyhbXlxcXV0rKVxcXS8pPy5bMV07XG4gICAgICBpZiAoIWxpbmspIHJldHVybiB0ZXh0O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcGFyc2UobGluayk7XG4gICAgICBpZiAoIXJlc3VsdCB8fCAhcmVzdWx0Lm9rKSByZXR1cm4gdGV4dDtcbiAgICAgIGNvbnN0IHRhc2sgPSByZXN1bHQudmFsdWU7XG4gICAgICBpZiAodGFzay5mcmVzaG5lc3M/LnN0YXR1cyA9PT0gXCJkb25lXCIpIHJldHVybiB0ZXh0O1xuICAgICAgY29uc3QgdGFza0xpbmUgPSB0b1Rhc2tMaW5lKHRhc2ssIG5ldyBEYXRlKCkpO1xuICAgICAgaWYgKCF0YXNrTGluZSkgcmV0dXJuIHRleHQ7XG4gICAgICB0YXNrTGluZS50aXRsZSA9IGBbJHtsaW5rfV1gO1xuICAgICAgcmV0dXJuIHRvU3RyaW5nKHRhc2tMaW5lKTtcbiAgICB9KS5qb2luKFwiXFxuXCIpO1xuICAgIGF3YWl0IHJlcGxhY2VMaW5lcyhzdGFydCwgZW5kLCB0ZXh0KTtcbiAgICBhd2FpdCBjcmVhdGVUYXNrKCk7XG4gIH0sXG4gIFwiPEEtYT48QS1tPlwiOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmIChzY3JhcGJveC5MYXlvdXQgIT09IFwicGFnZVwiKSByZXR1cm47XG4gICAgcGQoZSk7c3AoZSk7XG4gICAgdHJhbnNwb3J0KHtcbiAgICAgIGZyb206IHtcbiAgICAgICAgcHJvamVjdDogc2NyYXBib3guUHJvamVjdC5uYW1lLFxuICAgICAgICB0aXRsZTogc2NyYXBib3guUGFnZS50aXRsZSxcbiAgICAgIH0sXG4gICAgICB0bzogXCJ0YWtrZXItbWVtZXhcIixcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8qKiDpgbjmip7nr4Tlm7LjgavlkKvjgb7jgozjgovooYzjgYvjgqvjg7zjgr3jg6vjgYzjgYTjgovooYzjgpLov5TjgZlcbiAqXG4gKiBwb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdGFra2VyOTkvdGFra2VyLXNjaGVkdWxlci9ibG9iLzAuNy42L2NvbW1hbmRzL2dldExpbmVSYW5nZS50c1xuICovXG5jb25zdCBnZXRMaW5lUmFuZ2UgPSAoKTogcmVhZG9ubHkgW251bWJlciwgbnVtYmVyXSA9PiB7XG4gIGNvbnN0IHsgc2VsZWN0aW9uUmFuZ2U6IHsgc3RhcnQsIGVuZCB9LCBzZWxlY3RlZFRleHQsIHBvc2l0aW9uIH0gPSBjYXJldCgpO1xuICByZXR1cm4gc2VsZWN0ZWRUZXh0ID09PSBcIlwiXG4gICAgPyBbcG9zaXRpb24ubGluZSwgcG9zaXRpb24ubGluZV1cbiAgICA6IHN0YXJ0LmxpbmUgPiBlbmQubGluZVxuICAgID8gW2VuZC5saW5lLCBzdGFydC5saW5lXVxuICAgIDogW3N0YXJ0LmxpbmUsIGVuZC5saW5lXSBhcyBjb25zdDtcbn07XG4iLCAiaW1wb3J0IHtcbiAgYWRkVGFzaywgc3RhcnRUYXNrLCBlbmRUYXNrLCBwb3N0ZXJpb3JpRW5kVGFzayxcbiAgd2Fsa0RheSwgbW92ZVRvZGF5LCBmb3JtYXRcbn0gZnJvbSBcIi4uL3Rha2tlcjk5JTJGdGFra2VyLXNjaGVkdWxlci9kZXBzLnRzXCI7XG5pbXBvcnQgeyBTY3JhcGJveCB9IGZyb20gXCIuLi9zY3JhcGJveC1qcCUyRnR5cGVzL3VzZXJzY3JpcHQudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5jb25zdCBwZCA9IChlOiBFdmVudCkgPT4gZS5wcmV2ZW50RGVmYXVsdCgpO1xuY29uc3Qgc3AgPSAoZTogRXZlbnQpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbmV4cG9ydCBjb25zdCB0YXNrID0ge1xuICBcIjxBLWE+PEEtYT5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7YWRkVGFzaygpOyB9LFxuICBcIjxBLWE+PEEtcz5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7c3RhcnRUYXNrKCk7IH0sXG4gIFwiPEEtYT48QS1lPlwiOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4geyBwZChlKTtzcChlKTtlbmRUYXNrKCk7IH0sXG4gIFwiPEEtYT48QS0wPlwiOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4geyBwZChlKTtzcChlKTtwb3N0ZXJpb3JpRW5kVGFzaygpOyB9LFxuICBcIjxBLWE+PEEtMT5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7d2Fsa0RheSgxKTsgfSxcbiAgXCI8QS1hPjxBLXQ+XCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7IHBkKGUpO3NwKGUpO21vdmVUb2RheSgpOyB9LFxuICBcIjxBLWE+PEEtUz5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoc2NyYXBib3guTGF5b3V0ICE9PSBcInBhZ2VcIikgcmV0dXJuO1xuICAgIHBkKGUpO3NwKGUpO1xuICAgIGZvcm1hdChzY3JhcGJveC5Qcm9qZWN0Lm5hbWUsIHNjcmFwYm94LlBhZ2UudGl0bGUpO1xuICB9LFxufTsiLCAiLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tLml0ZXJhYmxlXCIgLz5cblxuaW1wb3J0IHtcbiAgY2FyZXQsIGdldENoYXJET00sIGdldExpbmVET00sIHByZXNzLCBpbnNlcnRUZXh0LFxuICBnb0hlYWRMaW5lLCBnb0xhc3RMaW5lLFxuICBzY3JvbGxVcCwgc2Nyb2xsRG93bixcbiAgdXNlU3RhdHVzQmFyLFxufSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvZG9tLnRzXCI7XG5pbXBvcnQgeyBzZXREZWJ1Z01vZGUgfSBmcm9tIFwiLi4vdGFra2VyOTklMkZTY3JhcEJpbmRpbmdzL21vZC50c1wiO1xuXG5jb25zdCBwZCA9IChlOiBFdmVudCkgPT4gZS5wcmV2ZW50RGVmYXVsdCgpO1xuY29uc3Qgc3AgPSAoZTogRXZlbnQpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbmltcG9ydCB7IHBvcHVwTWVudSB9IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcblxuY29uc3QgY2xpY2tQb3B1cCA9IChlOiBLZXlib2FyZEV2ZW50LCBidXR0b25OYW1lOiBzdHJpbmcgfCBSZWdFeHApOiB2b2lkID0+IHtcbiAgY29uc3QgYnV0dG9ucyA9IHBvcHVwTWVudSgpPy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPy4oXCJidXR0b25cIik7XG4gIGlmICghYnV0dG9ucykgcmV0dXJuO1xuICBjb25zdCBidXR0b24gPSBbLi4uYnV0dG9uc10uZmluZChcbiAgICAoYnV0dG9uKSA9PiBidXR0b25OYW1lIGluc3RhbmNlb2YgUmVnRXhwID9cbiAgICAgIGJ1dHRvbk5hbWUudGVzdChidXR0b24udGV4dENvbnRlbnQgPz8gXCJcIikgOlxuICAgICAgYnV0dG9uLnRleHRDb250ZW50ID09PSBidXR0b25OYW1lXG4gICk7XG4gIGlmICghKGJ1dHRvbiBpbnN0YW5jZW9mIEhUTUxEaXZFbGVtZW50KSkgcmV0dXJuO1xuICBpZiAoZS50YXJnZXQgIT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHJldHVybjtcbiAgcGQoZSk7c3AoZSk7XG4gIGJ1dHRvbi5jbGljaygpO1xufTtcblxuY29uc3QgcG9wdXAgPSB7XG4gIC8vIOikh+aVsOihjOaJk+OBoea2iOOBl+e3mlxuICBcIi1cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IGNsaWNrUG9wdXAoZSwgXCJcXHVmMGNjXCIpLFxuICAvLyDjg6rjg7Pjgq/jgpLlpJbjgZlcbiAgXCJdXCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiBjbGlja1BvcHVwKGUsIFwiXFx1ZjEyN1wiKSxcbiAgXCJjXCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiBjbGlja1BvcHVwKGUsIFwiQ29weSBwbGFpblwiKSxcbiAgLy8g5pWw5byP6KiY5rOV44Gr44GZ44KLXG4gIFwiJFwiOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4gY2xpY2tQb3B1cChlLCBcIlxcdWY2OThcIiksXG4gIC8vIHRha2tlci1ib29rc+eUqFxuICBcIntcIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IGNsaWNrUG9wdXAoZSwgL3t7Y1xcZCt9fS8pLFxuICBcIn1cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IGNsaWNrUG9wdXAoZSwgXCJyZXNldCBjbG96ZVwiKSxcbiAgXCJuXCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiBjbGlja1BvcHVwKGUsIFwibWFrZSBub3RlXCIpLFxufTtcblxuY29uc3QgbmF2aWdhdGlvbiA9IHtcbiAgLy8g44Oq44Oz44Kv44KS6LiP44KAXG4gIFwiPEMtXT5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBjb25zdCB7IHBvc2l0aW9uOiB7IGxpbmUsIGNoYXIgfSB9ID0gY2FyZXQoKTtcbiAgICBjb25zdCBhID0gZ2V0Q2hhckRPTShsaW5lLCBjaGFyKT8uY2xvc2VzdChcImEucGFnZS1saW5rXCIpXG4gICAgICAvLyDjgarjgYvjgaPjgZ/jgonjgZ3jga7ooYzjga7kuK3jgafkuIDnlarlhYjpoK3jga7jg6rjg7Pjgq/jgpLouI/jgoBcbiAgICAgID8/IGdldExpbmVET00obGluZSk/LnF1ZXJ5U2VsZWN0b3I/LihcImEucGFnZS1saW5rXCIpO1xuICAgIGlmICghKGEgaW5zdGFuY2VvZiBIVE1MQW5jaG9yRWxlbWVudCkpIHJldHVybjtcbiAgICBwZChlKTtzcChlKTtcbiAgICBhLmNsaWNrKCk7XG4gIH0sXG4gIFwiPEMtbz5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7aGlzdG9yeS5iYWNrKCk7IH0sXG59O1xuXG5jb25zdCBtb3Rpb24gPSB7XG4gIFwiPEMtaG9tZT5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7Z29IZWFkTGluZSgpOyB9LFxuICBcIjxDLWVuZD5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7Z29MYXN0TGluZSgpOyB9LFxufTtcblxuaW1wb3J0IHsgbWFrZU5ld1BhZ2UgfSBmcm9tIFwiLi4vY3VzdG9tLW5ldy1wYWdlL21vZC50c1wiO1xuaW1wb3J0IHtcbiAgbmV3UGFnZUhvb2ssXG4gIHNwbGl0dGVkTGlua0hvb2ssXG4gIHRhc2tMaW5lSG9vayxcbn0gZnJvbSBcIi4uL2Zvci1jdXN0b20tbmV3LXBhZ2UvbW9kLnRzXCI7XG5pbXBvcnQge1xuICBvdXRkZW50TGluZXMsIGRvd25MaW5lcywgdXBMaW5lcywgaW5kZW50TGluZXMsXG4gIG91dGRlbnRCbG9ja3MsIGRvd25CbG9ja3MsIHVwQmxvY2tzLCBpbmRlbnRCbG9ja3MsXG59IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcbmltcG9ydCB7IFNjcmFwYm94IH0gZnJvbSBcIi4uL3NjcmFwYm94LWpwJTJGdHlwZXMvdXNlcnNjcmlwdC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmNvbnN0IGhvb2tzID0gW3Rhc2tMaW5lSG9vaywgbmV3UGFnZUhvb2ssIHNwbGl0dGVkTGlua0hvb2tdO1xuY29uc3QgZWRpdCA9IHtcbiAgXCI8Qy1YPlwiOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGNvbnN0IHByb2plY3QgPSB3aW5kb3cucHJvbXB0KFwiQ3JlYXRlIGEgbmV3IHBhZ2UgYXRcIiwgc2NyYXBib3guUHJvamVjdC5uYW1lKTtcbiAgICBpZiAoIXByb2plY3QpIHJldHVybjtcbiAgICBwZChlKTtzcChlKTtcbiAgICBtYWtlTmV3UGFnZSh7IHByb2plY3QsIG1vZGU6IFwic2VsZlwiLCBob29rcyB9KT8uKCk7XG4gIH0sXG4gIFwiPEMtRD5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBjb25zdCBwcm9qZWN0ID0gd2luZG93LnByb21wdChcIkNyZWF0ZSBhIG5ldyBwYWdlIGF0XCIsIHNjcmFwYm94LlByb2plY3QubmFtZSk7XG4gICAgaWYgKCFwcm9qZWN0KSByZXR1cm47XG4gICAgcGQoZSk7c3AoZSk7XG4gICAgbWFrZU5ld1BhZ2UoeyBwcm9qZWN0LCBtb2RlOiBcIm5vb3BlblwiLCBob29rcyB9KT8uKCk7XG4gIH0sXG4gIFwiPEMtaD5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7b3V0ZGVudExpbmVzKCk7IH0sXG4gIFwiPEMtaj5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7ZG93bkxpbmVzKCk7IH0sXG4gIFwiPEMtaz5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7dXBMaW5lcygpOyB9LFxuICBcIjxDLWw+XCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7IHBkKGUpO3NwKGUpO2luZGVudExpbmVzKCk7IH0sXG4gIFwiPEEtaD5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHsgcGQoZSk7c3AoZSk7b3V0ZGVudEJsb2NrcygpOyB9LFxuICBcIjxBLWo+XCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7IHBkKGUpO3NwKGUpO2Rvd25CbG9ja3MoKTsgfSxcbiAgXCI8QS1rPlwiOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4geyBwZChlKTtzcChlKTt1cEJsb2NrcygpOyB9LFxuICBcIjxBLWw+XCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7IHBkKGUpO3NwKGUpO2luZGVudEJsb2NrcygpOyB9LFxufTtcblxuaW1wb3J0IHsgbGlnaHRGb3JtYXQsIGFkZERheXMgfSBmcm9tIFwiLi4vZGF0ZS1mbnMvbW9kLnRzXCI7XG5cbi8vIHRpbWVzdGFtcOOCkueEoeWKueWMluOBmeOCi1xuLy8gYWx0K3Tjga7oqqTli5XkvZzjgpLpmLLmraLjgZnjgotcbi8vIEB0cy1pZ25vcmUgc2NyYXBib3gtanAvdHlwZXPjga7jg5DjgrBcbnNjcmFwYm94LlRpbWVTdGFtcC5yZW1vdmVBbGxGb3JtYXRzKCk7XG5cbmNvbnN0IHRpbWVzdGFtcCA9IHtcbiAgXCI8QS10PjxBLXQ+XCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgcGQoZSk7c3AoZSk7XG4gICAgaW5zZXJ0VGV4dChsaWdodEZvcm1hdChuZXcgRGF0ZSgpLCAnI3l5eXktTU0tZGQgSEg6bW06c3MgJykpO1xuICB9LFxuICBcIjxBLXQ+PEEtaj5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBwZChlKTtzcChlKTtcbiAgICBpbnNlcnRUZXh0KGxpZ2h0Rm9ybWF0KG5ldyBEYXRlKCksICd5eXl5LU1NLWRkIEhIOm1tOnNzICcpKTtcbiAgfSxcbiAgXCI8QS10PjxBLWs+XCI6IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgcGQoZSk7c3AoZSk7XG4gICAgaW5zZXJ0VGV4dChsaWdodEZvcm1hdChuZXcgRGF0ZSgpLCAnSEg6bW06c3MgJykpO1xuICB9LFxuICBcIjxBLXQ+PEEtbD5cIjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBwZChlKTtzcChlKTtcbiAgICBpbnNlcnRUZXh0KGxpZ2h0Rm9ybWF0KG5ldyBEYXRlKCksICd5eXl5LU1NLWRkJykpO1xuICB9LFxufTtcblxuaW1wb3J0IHsgdGFza0NvbW1vbiB9IGZyb20gXCIuL3Rhc2stY29tbW9uLnRzXCI7XG5cbmV4cG9ydCB7IHRhc2sgfSBmcm9tIFwiLi90YXNrLnRzXCI7XG5leHBvcnQgY29uc3QgY29uZmlnID0ge1xuICAuLi5wb3B1cCxcbiAgLi4ubmF2aWdhdGlvbixcbiAgLi4ubW90aW9uLFxuICAuLi5lZGl0LFxuICAuLi50aW1lc3RhbXAsXG4gIC4uLnRhc2tDb21tb24sXG59O1xuIiwgImltcG9ydCB7IE1vdXNldHJhcCB9IGZyb20gXCIuLi90YWtrZXI5OSUyRlNjcmFwQmluZGluZ3MvbW9kLnRzXCI7XG5pbXBvcnQge1xuICB1c2VTdGF0dXNCYXIsXG4gIGFkZFRleHRJbnB1dEV2ZW50TGlzdGVuZXIsXG4gIHJlbW92ZVRleHRJbnB1dEV2ZW50TGlzdGVuZXIsXG59IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcbmltcG9ydCB7IGNvbmZpZywgdGFzayB9IGZyb20gXCIuLi90YWtrZXI5OSUyRlNjcmFwQmluZGluZ3Mtc2V0dGluZ3MvY29uZmlnLnRzXCI7XG5pbXBvcnQgeyBTY3JhcGJveCB9IGZyb20gXCIuLi9zY3JhcGJveC1qcCUyRnR5cGVzL3VzZXJzY3JpcHQudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5jb25zdCB7IHJlbmRlciB9ID0gdXNlU3RhdHVzQmFyKCk7XG5sZXQgYW5pbWF0aW9uSWQ6IG51bWJlcnwgdW5kZWZpbmVkO1xuY29uc3Qgb25TZXF1ZW5jZVVwZGF0ZSA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgaWYoYW5pbWF0aW9uSWQgIT09IHVuZGVmaW5lZCkgY2FuY2VsQW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uSWQpO1xuICBhbmltYXRpb25JZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiByZW5kZXIoXG4gICAgeyB0eXBlOiBcInRleHRcIiwgdGV4dCwgfVxuICApKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzY3JhcEJpbmRpbmdzID0gbmV3IE1vdXNldHJhcChcbiAge1xuICAgIGFkZEV2ZW50TGlzdGVuZXI6IGFkZFRleHRJbnB1dEV2ZW50TGlzdGVuZXIsXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogcmVtb3ZlVGV4dElucHV0RXZlbnRMaXN0ZW5lcixcbiAgfSxcbiAge1xuICAgIG9uU2VxdWVuY2VVcGRhdGUsXG4gIH0sXG4pO1xuXG5jb25zdCBlcnJvcnMgPSBzY3JhcEJpbmRpbmdzLmJpbmQoe1xuICAuLi5jb25maWcsXG4gIC4uLihzY3JhcGJveC5Qcm9qZWN0Lm5hbWUgPT09IFwidGFra2VyLW1lbWV4XCIgPyB0YXNrIDoge30pLFxufSk7XG5cbmlmKGVycm9ycy5zaXplID4gMCkge1xuICBhbGVydChbLi4uZXJyb3JzLmVudHJpZXMoKV0ubWFwKFxuICAgIChbc2VxLCBtZXNzYWdlc10pID0+IGAke3NlcX06XFxuJHtcbiAgICAgIG1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4gYC0gJHttZXNzYWdlfWApLmpvaW4oXCJcXG5cIilcbiAgICB9YFxuICApLmpvaW4oXCJcXG5cIikpO1xufSIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIi8+XG5cbmltcG9ydCB0eXBlIHsgUHJvamVjdElkLCBVbml4VGltZSB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmltcG9ydCB7IGxpc3RQcm9qZWN0cyB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRXYXRjaExpc3QgPSBhc3luYyAoKTogUHJvbWlzZTxQcm9qZWN0SWRbXT4gPT4ge1xuICBjb25zdCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicHJvamVjdHNMYXN0QWNjZXNzZWRcIik7XG4gIGlmICghdmFsdWUpIHJldHVybiBbXTtcblxuICB0cnkge1xuICAgIGNvbnN0IGxpc3QgPSBKU09OLnBhcnNlKHZhbHVlKSBhcyBSZWNvcmQ8UHJvamVjdElkLCBVbml4VGltZT47XG4gICAgY29uc3QgaWRzID0gT2JqZWN0LmVudHJpZXMobGlzdCkuc29ydCgoWywgYV0sIFssIGJdKSA9PiBiIC0gYSkubWFwKChcbiAgICAgIFtwcm9qZWN0SWRdLFxuICAgICkgPT4gcHJvamVjdElkKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBsaXN0UHJvamVjdHMoW10pO1xuICAgIGlmICghcmVzdWx0Lm9rKSByZXR1cm4gaWRzO1xuICAgIGNvbnN0IGpvaW5lZElkcyA9IHJlc3VsdC52YWx1ZS5wcm9qZWN0cy5tYXAoKHByb2plY3QpID0+IHByb2plY3QuaWQpO1xuICAgIHJldHVybiBpZHMuZmlsdGVyKChpZCkgPT4gIWpvaW5lZElkcy5pbmNsdWRlcyhpZCkpO1xuICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgaWYgKCEoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSkgdGhyb3cgZTtcbiAgICByZXR1cm4gW107XG4gIH1cbn07XG4iLCAiLy8gYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvYmxvYi8yN2IwOGQzMDc4MDY0ZjJjYTNiMWUxOTJlZTIzMTM5NjEwN2ZhZmViL3R5cGVzL2thdGV4L2luZGV4LmQudHNcbi8vIE1vZGlmaWNhdGlvbnM6XG4vLyAtICRkZW5vIGZtdFxuLy8gLSBtYWNyb3M/OiBhbnkgLT4gbWFjcm9zPzogdW5rbm93blxuLy8gLSBhZGQgZGVuby1saW50LWlnbm9yZVxuLy9cbi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiLz5cblxuZXhwb3J0IGludGVyZmFjZSBUcnVzdENvbnRleHQge1xuICBjb21tYW5kOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBwcm90b2NvbDogc3RyaW5nO1xufVxuXG4vKiogRG9jdW1lbnRhdGlvbjogaHR0cHM6Ly9rYXRleC5vcmcvZG9jcy9vcHRpb25zLmh0bWwgKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2F0ZXhPcHRpb25zIHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgbWF0aCB3aWxsIGJlIHJlbmRlcmVkIGluIGRpc3BsYXkgbW9kZVxuICAgKiAobWF0aCBpbiBkaXNwbGF5IHN0eWxlIGFuZCBjZW50ZXIgbWF0aCBvbiBwYWdlKVxuICAgKlxuICAgKiBJZiBgZmFsc2VgLCBtYXRoIHdpbGwgYmUgcmVuZGVyZWQgaW4gaW5saW5lIG1vZGVcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc3BsYXlNb2RlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIERldGVybWluZXMgdGhlIG1hcmt1cCBsYW5ndWFnZSBvZiB0aGUgb3V0cHV0LiBUaGUgdmFsaWQgY2hvaWNlcyBhcmU6XG4gICAqIC0gYGh0bWxgOiBPdXRwdXRzIEthVGVYIGluIEhUTUwgb25seS5cbiAgICogLSBgbWF0aG1sYDogT3V0cHV0cyBLYVRlWCBpbiBNYXRoTUwgb25seS5cbiAgICogLSBgaHRtbEFuZE1hdGhtbGA6IE91dHB1dHMgSFRNTCBmb3IgdmlzdWFsIHJlbmRlcmluZ1xuICAgKiAgIGFuZCBpbmNsdWRlcyBNYXRoTUwgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdodG1sQW5kTWF0aG1sJ1xuICAgKi9cbiAgb3V0cHV0PzogXCJodG1sXCIgfCBcIm1hdGhtbFwiIHwgXCJodG1sQW5kTWF0aG1sXCIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGRpc3BsYXkgbWF0aCBoYXMgXFx0YWdzIHJlbmRlcmVkIG9uIHRoZSBsZWZ0XG4gICAqIGluc3RlYWQgb2YgdGhlIHJpZ2h0LCBsaWtlIFxcdXNlcGFja2FnZVtsZXFub117YW1zbWF0aH0gaW4gTGFUZVguXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBsZXFubz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGRpc3BsYXkgbWF0aCByZW5kZXJzIGZsdXNoIGxlZnQgd2l0aCBhIDJlbSBsZWZ0IG1hcmdpbixcbiAgICogbGlrZSBcXGRvY3VtZW50Y2xhc3NbZmxlcW5dIGluIExhVGVYIHdpdGggdGhlIGFtc21hdGggcGFja2FnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZsZXFuPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgS2FUZVggd2lsbCB0aHJvdyBhIGBQYXJzZUVycm9yYCB3aGVuXG4gICAqIGl0IGVuY291bnRlcnMgYW4gdW5zdXBwb3J0ZWQgY29tbWFuZCBvciBpbnZhbGlkIExhVGV4XG4gICAqXG4gICAqIElmIGBmYWxzZWAsIEthVGVYIHdpbGwgcmVuZGVyIHVuc3VwcG9ydGVkIGNvbW1hbmRzIGFzXG4gICAqIHRleHQsIGFuZCByZW5kZXIgaW52YWxpZCBMYVRlWCBhcyBpdHMgc291cmNlIGNvZGUgd2l0aFxuICAgKiBob3ZlciB0ZXh0IGdpdmluZyB0aGUgZXJyb3IsIGluIGNvbG9yIGdpdmVuIGJ5IGVycm9yQ29sb3JcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgdGhyb3dPbkVycm9yPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEEgQ29sb3Igc3RyaW5nIGdpdmVuIGluIGZvcm1hdCBgI1hYWGAgb3IgYCNYWFhYWFhgXG4gICAqL1xuICBlcnJvckNvbG9yPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQSBjb2xsZWN0aW9uIG9mIGN1c3RvbSBtYWNyb3MuXG4gICAqXG4gICAqIFNlZSBgc3JjL21hY3Jvcy5qc2AgZm9yIGl0cyB1c2FnZVxuICAgKi9cbiAgbWFjcm9zPzogdW5rbm93bjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIG1pbmltdW0gdGhpY2tuZXNzLCBpbiBlbXMsIGZvciBmcmFjdGlvbiBsaW5lcyxcbiAgICogXFxzcXJ0IHRvcCBsaW5lcywge2FycmF5fSB2ZXJ0aWNhbCBsaW5lcywgXFxobGluZSwgXFxoZGFzaGxpbmUsXG4gICAqIFxcdW5kZXJsaW5lLCBcXG92ZXJsaW5lLCBhbmQgdGhlIGJvcmRlcnMgb2YgXFxmYm94LCBcXGJveGVkLCBhbmRcbiAgICogXFxmY29sb3Jib3guXG4gICAqL1xuICBtaW5SdWxlVGhpY2tuZXNzPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogSWYgYHRydWVgLCBgXFxjb2xvcmAgd2lsbCB3b3JrIGxpa2UgTGFUZVgncyBgXFx0ZXh0Y29sb3JgXG4gICAqIGFuZCB0YWtlcyAyIGFyZ3VtZW50c1xuICAgKlxuICAgKiBJZiBgZmFsc2VgLCBgXFxjb2xvcmAgd2lsbCB3b3JrIGxpa2UgTGFUZVgncyBgXFxjb2xvcmBcbiAgICogYW5kIHRha2VzIDEgYXJndW1lbnRcbiAgICpcbiAgICogSW4gYm90aCBjYXNlcywgYFxcdGV4dGNvbG9yYCB3b3JrcyBhcyBpbiBMYVRlWFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY29sb3JJc1RleHRDb2xvcj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBBbGwgdXNlci1zcGVjaWZpZWQgc2l6ZXMgd2lsbCBiZSBjYXBlZCB0byBgbWF4U2l6ZWAgZW1zXG4gICAqXG4gICAqIElmIHNldCB0byBJbmZpbml0eSwgdXNlcnMgY2FuIG1ha2UgZWxlbWVudHMgYW5kIHNwYWNlXG4gICAqIGFyYml0cmFyaWx5IGxhcmdlXG4gICAqXG4gICAqIEBkZWZhdWx0IEluZmluaXR5XG4gICAqL1xuICBtYXhTaXplPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogTGltaXQgdGhlIG51bWJlciBvZiBtYWNybyBleHBhbnNpb25zIHRvIHNwZWNpZmllZCBudW1iZXJcbiAgICpcbiAgICogSWYgc2V0IHRvIGBJbmZpbml0eWAsIG1hcmNvIGV4cGFuZGVyIHdpbGwgdHJ5IHRvIGZ1bGx5IGV4cGFuZFxuICAgKiBhcyBpbiBMYVRleFxuICAgKlxuICAgKiBAZGVmYXVsdCAxMDAwXG4gICAqL1xuICBtYXhFeHBhbmQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBJZiBgZmFsc2VgIG9yIGBcImlnbm9yZVwiYCwgYWxsb3cgZmVhdHVyZXMgdGhhdCBtYWtlXG4gICAqIHdyaXRpbmcgaW4gTGFUZXggY29udmVuaWVudCBidXQgbm90IHN1cHBvcnRlZCBieSBMYVRleFxuICAgKlxuICAgKiBJZiBgdHJ1ZWAgb3IgYFwiZXJyb3JcImAsIHRocm93IGFuIGVycm9yIGZvciBzdWNoIHRyYW5zZ3Jlc3Npb25zXG4gICAqXG4gICAqIElmIGBcIndhcm5cImAsIHdhcm4gYWJvdXQgYmVoYXZpb3IgdmlhIGBjb25zb2xlLndhcm5gXG4gICAqXG4gICAqIEBkZWZhdWx0IFwid2FyblwiXG4gICAqL1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIGJhbi10eXBlc1xuICBzdHJpY3Q/OiBib29sZWFuIHwgc3RyaW5nIHwgRnVuY3Rpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBJZiBgZmFsc2VgIChkbyBub3QgdHJ1c3QgaW5wdXQpLCBwcmV2ZW50IGFueSBjb21tYW5kcyB0aGF0IGNvdWxkIGVuYWJsZSBhZHZlcnNlIGJlaGF2aW9yLCByZW5kZXJpbmcgdGhlbSBpbnN0ZWFkIGluIGVycm9yQ29sb3IuXG4gICAqXG4gICAqIElmIGB0cnVlYCAodHJ1c3QgaW5wdXQpLCBhbGxvdyBhbGwgc3VjaCBjb21tYW5kcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHRydXN0PzogYm9vbGVhbiB8ICgoY29udGV4dDogVHJ1c3RDb250ZXh0KSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFBsYWNlIEthVGVYIGNvZGUgaW4gdGhlIGdsb2JhbCBncm91cC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGdsb2JhbEdyb3VwPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLYXRleCB7XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgVGVYIGV4cHJlc3Npb24gaW50byB0aGUgc3BlY2lmaWVkIERPTSBlbGVtZW50XG4gICAqIEBwYXJhbSB0ZXggQSBUZVggZXhwcmVzc2lvblxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGludG9cbiAgICogQHBhcmFtIG9wdGlvbnMgS2FUZVggb3B0aW9uc1xuICAgKi9cbiAgcmVuZGVyKFxuICAgIHRleDogc3RyaW5nLFxuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIG9wdGlvbnM/OiBLYXRleE9wdGlvbnMsXG4gICk6IHZvaWQ7XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgVGVYIGV4cHJlc3Npb24gaW50byBhbiBIVE1MIHN0cmluZ1xuICAgKiBAcGFyYW0gdGV4IEEgVGVYIGV4cHJlc3Npb25cbiAgICogQHBhcmFtIG9wdGlvbnMgS2FUZVggb3B0aW9uc1xuICAgKi9cbiAgcmVuZGVyVG9TdHJpbmcoXG4gICAgdGV4OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IEthdGV4T3B0aW9ucyxcbiAgKTogc3RyaW5nO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIGthdGV4OiBLYXRleDtcbiAgfVxufVxuXG4vLyBkZW5vLWxpbnQtaWdub3JlIG5vLW5hbWVzcGFjZVxuZXhwb3J0IG5hbWVzcGFjZSBrYXRleCB7XG4gIGV4cG9ydCBkZWNsYXJlIGNsYXNzIFBhcnNlRXJyb3IgaW1wbGVtZW50cyBFcnJvciB7XG4gICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIGxleGVyOiBhbnksIHBvc2l0aW9uOiBudW1iZXIpO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgcG9zaXRpb246IG51bWJlcjtcbiAgfVxufVxuXG4vLyBUaGlzIGlzIGFuIG9yaWdpbmFsIGNvZGUgYmVsb3dcbmNvbnN0IGRlZmF1bHRWZXJzaW9uID0gXCIwLjEzLjNcIjtcbmxldCBpbml0aWFsaXplZDogUHJvbWlzZTxLYXRleD4gfCB1bmRlZmluZWQ7XG5leHBvcnQgY29uc3QgaW1wb3J0S2FUZVggPSBhc3luYyAoXG4gIHZlcnNpb24gPSBkZWZhdWx0VmVyc2lvbixcbik6IFByb21pc2U8S2F0ZXg+ID0+IHtcbiAgY29uc3QgdXJsID1cbiAgICBgaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvS2FUZVgvJHt2ZXJzaW9ufS9rYXRleC5taW4uanNgO1xuXG4gIC8vIOOBmeOBp+OBqzxzY3JpcHQ+44GM5L2c44KJ44KM44Gm44GE44Gf5aC05ZCI44Gv44CBYHdpbmRvdy5rYXRleGDjgYznlJ/jgYjjgovjgb7jgaflvoXjgaRcbiAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtzcmM9XCIke3VybH1cIl1gKSkge1xuICAgIGlmICh3aW5kb3cua2F0ZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh3aW5kb3cua2F0ZXgpO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8S2F0ZXg+KChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgaWYgKHdpbmRvdy5rYXRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuICAgICAgICByZXNvbHZlKHdpbmRvdy5rYXRleCk7XG4gICAgICB9LCA1MDApO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgc2NyaXB0LnNyYyA9IHVybDtcbiAgaW5pdGlhbGl6ZWQgPz89IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBzY3JpcHQub25sb2FkID0gKCkgPT4gcmVzb2x2ZSh3aW5kb3cua2F0ZXgpO1xuICAgIHNjcmlwdC5vbmVycm9yID0gKGUpID0+IHJlamVjdChlKTtcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZChzY3JpcHQpO1xuICB9KTtcblxuICByZXR1cm4gaW5pdGlhbGl6ZWQ7XG59O1xuXG5leHBvcnQgeyBkZWZhdWx0VmVyc2lvbiBhcyB2ZXJzaW9uIH07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuaW1wb3J0IHtcbiAgUmVmLFxuICBTdGF0ZVVwZGF0ZXIsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBpbXBvcnRLYVRlWCwgS2F0ZXhPcHRpb25zIH0gZnJvbSBcIi4vZGVwcy9rYXRleC50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlRXJyb3Ige1xuICBuYW1lOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgcG9zaXRpb246IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VLYVRlWFJlc3VsdCB7XG4gIHJlZjogUmVmPEhUTUxFbGVtZW50PjtcbiAgZXJyb3I6IHN0cmluZztcbiAgc2V0Rm9ybXVsYTogU3RhdGVVcGRhdGVyPHN0cmluZz47XG59XG5cbmV4cG9ydCBjb25zdCB1c2VLYVRlWCA9IChcbiAgX2Zvcm11bGE6IHN0cmluZyxcbiAgb3B0aW9uczogS2F0ZXhPcHRpb25zID0ge30sXG4pOiBVc2VLYVRlWFJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFtmb3JtdWxhLCBzZXRGb3JtdWxhXSA9IHVzZVN0YXRlKF9mb3JtdWxhKTtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxzdHJpbmc+KFwiXCIpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVuZGVyIH0gPSBhd2FpdCBpbXBvcnRLYVRlWCgpO1xuICAgICAgaWYgKCFyZWYuY3VycmVudCkgcmV0dXJuO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVuZGVyKGZvcm11bGEsIHJlZi5jdXJyZW50LCBvcHRpb25zKTtcbiAgICAgICAgc2V0RXJyb3IoXCJcIik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5uYW1lID09PSBcIlBhcnNlRXJyb3JcIikge1xuICAgICAgICAgIC8vIHJlbW92ZSBhbiB1bm5lY2Vzc2FyeSB0b2tlblxuICAgICAgICAgIHNldEVycm9yKGUubWVzc2FnZS5zbGljZShcIkthVGVYIHBhcnNlIGVycm9yOiBcIi5sZW5ndGgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoKTtcbiAgfSwgW2Zvcm11bGFdKTtcblxuICByZXR1cm4geyByZWYsIGVycm9yLCBzZXRGb3JtdWxhIH07XG59O1xuIiwgImV4cG9ydCB0eXBlIEZuPFQ+ID0gKCkgPT4gUHJvbWlzZTxUPjtcblxuLyoqIOWQjOaZguOBq+S4gOWumuaVsOOBoOOBkVByb21pc2XjgpLotbDjgonjgZvjgovlh73mlbBcbiAqXG4gKiDmnIDlvozjgavov73liqDjgZfjgZ9qb2LjgYvjgonlrp/ooYzjgZnjgotcbiAqXG4gKiBAcGFyYW0gbWF4IOWQjOaZguOBq+WLleOBi+OBmVByb21pc2Xjga7mnIDlpKfmlbBcbiAqIEByZXR1cm4gam9i44KS5YuV44GL44GX44Gm57WQ5p6c44KS6L+U44GZ5Ye95pWwXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlVGhyb3R0bGUgPSA8VD4obWF4OiBudW1iZXIpOiAoam9iOiBGbjxUPikgPT4gUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHF1ZXVlOiBbXG4gICAgRm48VD4sXG4gICAgKHZhbHVlOiBUKSA9PiB2b2lkLFxuICAgIChlcnJvcjogdW5rbm93bikgPT4gdm9pZCxcbiAgXVtdID0gW107XG4gIGNvbnN0IHBlbmRpbmdzID0gbmV3IFNldDxQcm9taXNlPHVua25vd24+PigpO1xuXG4gIGNvbnN0IHJ1bk5leHQgPSAocHJldjogUHJvbWlzZTx1bmtub3duPikgPT4ge1xuICAgIHBlbmRpbmdzLmRlbGV0ZShwcmV2KTtcbiAgICBjb25zdCB0YXNrID0gcXVldWUucG9wKCk7XG4gICAgaWYgKCF0YXNrKSByZXR1cm47XG4gICAgY29uc3QgcHJvbWlzZTogUHJvbWlzZTx2b2lkPiA9IHRhc2tbMF0oKVxuICAgICAgLmZpbmFsbHkoKCkgPT4gcnVuTmV4dChwcm9taXNlKSlcbiAgICAgIC50aGVuKChyZXN1bHQpID0+IHRhc2tbMV0ocmVzdWx0KSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHRhc2tbMl0oZXJyb3IpKTtcbiAgICBwZW5kaW5ncy5hZGQocHJvbWlzZSk7XG4gIH07XG5cbiAgcmV0dXJuIChqb2IpID0+IHtcbiAgICBpZiAocGVuZGluZ3Muc2l6ZSA8IG1heCkge1xuICAgICAgY29uc3QgcHJvbWlzZSA9IGpvYigpLmZpbmFsbHkoKCkgPT4gcnVuTmV4dChwcm9taXNlKSk7XG4gICAgICBwZW5kaW5ncy5hZGQocHJvbWlzZSk7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHF1ZXVlLnB1c2goW2pvYiwgcmVzb2x2ZSwgcmVqZWN0XSk7XG4gICAgfSk7XG4gIH07XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiLz5cblxuaW1wb3J0IHR5cGUgeyBVbml4VGltZSB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmltcG9ydCB7IHNsZWVwIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1zdGQudHNcIjtcbmltcG9ydCB7IGZpbmRMYXRlc3RDYWNoZSB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtc3RkLWJyb3dzZXIudHNcIjtcbmltcG9ydCB7IG1ha2VUaHJvdHRsZSB9IGZyb20gXCIuL3Rocm90dGxlLnRzXCI7XG5cbmNvbnN0IGNhY2hlVmVyc2lvbiA9IFwiMC42LjVcIjsgLy8gcmVsZWFzZeWJjeOBq+abtOaWsOOBmeOCi1xuY29uc3QgY2FjaGVOYW1lID0gYFNjcmFwQnViYmxlLSR7Y2FjaGVWZXJzaW9ufWA7XG5jb25zdCBjYWNoZSA9IGF3YWl0IGdsb2JhbFRoaXMuY2FjaGVzLm9wZW4oY2FjaGVOYW1lKTtcblxuLy8g5Y+k44GEY2FjaGXjgYzjgYLjgaPjgZ/jgonliYrpmaTjgZfjgabjgYrjgY9cbi8vIOS7luOBruaTjeS9nOOCkuODluODreODg+OCr+OBmeOCi+W/heimgeOBr+OBquOBhFxuKGFzeW5jICgpID0+IHtcbiAgZm9yIChjb25zdCBuYW1lIG9mIGF3YWl0IGdsb2JhbFRoaXMuY2FjaGVzLmtleXMoKSkge1xuICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoXCJTY3JhcEJ1YmJsZS1cIikgJiYgbmFtZSAhPT0gY2FjaGVOYW1lKSB7XG4gICAgICBhd2FpdCBnbG9iYWxUaGlzLmNhY2hlcy5kZWxldGUobmFtZSk7XG4gICAgICBjb25zb2xlLmxvZyhgW1NjcmFwQnViYmxlXSBkZWxldGVkIG9sZCBjYWNoZSA6XCIke25hbWV9XCJgKTtcbiAgICB9XG4gIH1cbn0pKCk7XG5cbi8qKiDlkIzmmYLjgasz44Gk44G+44GnZmV0Y2jjgafjgY3jgovjgojjgYbjgavjgZnjgovlh73mlbAgKi9cbmNvbnN0IHRocm90dGxlID0gbWFrZVRocm90dGxlPFJlc3BvbnNlPigzKTtcblxuZXhwb3J0IGludGVyZmFjZSBDYWNoZUZpcnN0RmV0Y2hPcHRpb25zIGV4dGVuZHMgQ2FjaGVRdWVyeU9wdGlvbnMge1xuICAvKiog5aSx5pWX44GX44GfcmVzcG9uc2XjgpJjYWNoZeOBq+S/neWtmOOBmeOCi+OBi+OBqeOBhuOBi1xuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgICjkv53lrZjjgZfjgarjgYQpXG4gICAqL1xuICBzYXZlRmFpbGVkUmVzcG9uc2U/OiBib29sZWFuO1xufVxuXG4vKiogY2FjaGXjgahuZXR3b3Jr44GL44KJ6aCG55Wq44GrcmVzcG9uc2XjgpLjgajjgaPjgabjgY/jgotcbiAqXG4gKiBuZXR3b3Jr44GL44KJ44Go44Gj44Gm44GT44Gq44GP44Gm44GE44GE44Go44GN44Gv44CB6YCU5Lit44GnaXRlcmF0b3LjgpJicmVha+OBmeOCjOOBsGZldGNo44GX44Gq44GEXG4gKlxuICogZmV0Y2jjga/lkIzmmYLjgasz5Zue44G+44Gn44GX44GL44Gn44GN44Gq44GE44KI44GG5Yi26ZmQ44GZ44KLXG4gKlxuICogQHBhcmFtIHJlcSDopoHmsYJcbiAqIEBwYXJhbSBvcHRpb25zIGNhY2hl44KS5o6i44GZ44Go44GN44Gu6Kit5a6aXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogY2FjaGVGaXJzdEZldGNoKFxuICByZXE6IFJlcXVlc3QsXG4gIG9wdGlvbnM/OiBDYWNoZUZpcnN0RmV0Y2hPcHRpb25zLFxuKTogQXN5bmNHZW5lcmF0b3I8cmVhZG9ubHkgW1wiY2FjaGVcIiB8IFwibmV0d29ya1wiLCBSZXNwb25zZV0sIHZvaWQsIHVua25vd24+IHtcbiAgLy8gY2FjaGXjgYvjgonov5TjgZlcbiAgLy8g44G+44Ga6Ieq5YmN44GuY2FjaGUgc3RvcmFnZeOBi+OCieWkseaVl+OBl+OBn3Jlc3BvbnNl44KS5Y+W5b6X44GX44CB44Gq44GR44KM44Gwc2NyYXBib3guaW/jga5jYWNoZeOBi+OCieato+W4uOOBqnJlc3BvbnNl44KS5o6i44GZXG4gIGNvbnN0IGNhY2hlUHJvbWlzZSA9XG4gICAgKChvcHRpb25zPy5zYXZlRmFpbGVkUmVzcG9uc2UgPyBjYWNoZS5tYXRjaChyZXEpIDogdW5kZWZpbmVkKSA/P1xuICAgICAgZmluZExhdGVzdENhY2hlKHJlcSwgb3B0aW9ucykpLnRoZW4oKHJlcykgPT4gW1wiY2FjaGVcIiwgcmVzXSBhcyBjb25zdCk7XG4gIHtcbiAgICBjb25zdCB0aW1lciA9IHNsZWVwKDEwMDApLnRoZW4oKCkgPT4gXCJ0aW1lb3V0XCIgYXMgY29uc3QpO1xuICAgIGNvbnN0IGZpcnN0ID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtjYWNoZVByb21pc2UsIHRpbWVyXSk7XG4gICAgaWYgKGZpcnN0ICE9PSBcInRpbWVvdXRcIikge1xuICAgICAgLy8gMeenkuS7peWGheOBq2NhY2hl44KS6Kqt44G/6L6844KB44Gf44KJ44CBY2FjaGXihpJuZXR3b3Jr44Gu6aCG44Gr6L+U44GZXG4gICAgICBpZiAoZmlyc3RbMV0pIHtcbiAgICAgICAgeWllbGQgW1wiY2FjaGVcIiwgZmlyc3RbMV1dO1xuICAgICAgfVxuICAgICAgLy8gbmV0d29ya+OBi+OCiei/lOOBmVxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhyb3R0bGUoKCkgPT4gZmV0Y2gocmVxKSk7XG4gICAgICBpZiAoIXJlcy5vayAmJiBvcHRpb25zPy5zYXZlRmFpbGVkUmVzcG9uc2UpIHtcbiAgICAgICAgLy8gc2NyYXBib3guaW/jga/lpLHmlZfjgZfjgZ9yZXNwb25zZeOCkmNhY2hl44GX44Gq44GE44Gu44Gn44CB6Ieq5YmN44GuY2FjaGXjgavmoLzntI3jgZfjgabjgYrjgY9cbiAgICAgICAgYXdhaXQgY2FjaGUucHV0KHJlcSwgcmVzLmNsb25lKCkpO1xuICAgICAgfVxuICAgICAgeWllbGQgW1wibmV0d29ya1wiLCByZXNdO1xuICAgIH1cbiAgfVxuXG4gIC8vIDHnp5LntYzjgaPjgabjgoJjYWNoZeOBruiqreOBv+i+vOOBv+OBjOe1guOCj+OCieOBquOBhOOBqOOBjeOBr+OAgWZldGNo44KS6LWw44KJ44Gb5aeL44KB44KLXG4gIGNvbnN0IG5ldHdvcmtQcm9taXNlID0gdGhyb3R0bGUoKCkgPT4gZmV0Y2gocmVxKSlcbiAgICAudGhlbigocmVzKSA9PiBbXCJuZXR3b3JrXCIsIHJlc10gYXMgY29uc3QpO1xuICBjb25zdCBbdHlwZSwgcmVzXSA9IGF3YWl0IFByb21pc2UucmFjZShbY2FjaGVQcm9taXNlLCBuZXR3b3JrUHJvbWlzZV0pO1xuXG4gIGlmICh0eXBlID09PSBcIm5ldHdvcmtcIikge1xuICAgIHlpZWxkIFt0eXBlLCByZXNdO1xuICAgIC8vIG5ldHdvcmtQcm9taXNl44GM5YWI44GrcmVzb2x2ZeOBl+OBn+OCieOAgWNhY2hlUHJvbWlzZeOBr3lpZWxk44Gb44Ga44Gr5o2o44Gm44KLXG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChyZXMpIHlpZWxkIFt0eXBlLCByZXNdO1xuICB5aWVsZCBhd2FpdCBuZXR3b3JrUHJvbWlzZTtcbn1cblxuLyoqIOacieWKueacn+mZkOWIh+OCjOOBrnJlc3BvbnNl44GL44Gp44GG44GL6Kq/44G544KLXG4gKlxuICogQHBhcmFtIHJlc3BvbnNlIOiqv+OBueOCi3Jlc3BvbnNlXG4gKiBAcGFyYW0gbWF4QWdlIOWvv+WRvSjljZjkvY3jga9zKVxuICovXG5leHBvcnQgY29uc3QgaXNFeHBpcmVkID0gKFxuICByZXNwb25zZTogUmVzcG9uc2UsXG4gIG1heEFnZTogVW5peFRpbWUsXG4pOiBib29sZWFuID0+IHtcbiAgY29uc3QgdXBkYXRlZCA9IG5ldyBEYXRlKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiRGF0ZVwiKSA/PyAwKS5nZXRUaW1lKCkgL1xuICAgIDEwMDA7XG4gIHJldHVybiB1cGRhdGVkICsgbWF4QWdlIDwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwO1xufTtcbiIsICJleHBvcnQgdHlwZSBMaXN0ZW5lcjxUPiA9IChldmVudDogVCkgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBFdmVudEVtaXR0ZXI8VCwgVT4ge1xuICAvKiogZXZlbnTjgpLnmbrooYzjgZnjgosgKi9cbiAgZGlzcGF0Y2g6IChldmVudE5hbWU6IFQsIHZhbHVlOiBVKSA9PiB2b2lkO1xuXG4gIC8qKiDnibnlrprjga5ldmVudOOBjOeZuueBq+OBl+OBn+OBqOOBjeOBq+Wun+ihjOOBmeOCi2xpc3RlbmVy44KS55m76Yyy44GZ44KLICovXG4gIG9uOiAoZXZlbnROYW1lOiBULCBsaXN0ZW5lcjogTGlzdGVuZXI8VT4pID0+IHZvaWQ7XG5cbiAgLyoqIGxpc3RlbmVy44Gu55m76Yyy44KS6Kej6Zmk44GZ44KLICovXG4gIG9mZjogKGV2ZW50TmFtZTogVCwgbGlzdGVuZXI6IExpc3RlbmVyPFU+KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgbWFrZUVtaXR0ZXIgPSA8VCwgVT4oKTogRXZlbnRFbWl0dGVyPFQsIFU+ID0+IHtcbiAgY29uc3QgbGlzdGVuZXJzTWFwID0gbmV3IE1hcDxULCBTZXQ8TGlzdGVuZXI8VT4+PigpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzcGF0Y2g6IChldmVudE5hbWUsIHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnNNYXAuZ2V0KGV2ZW50TmFtZSk7XG4gICAgICBpZiAoIWxpc3RlbmVycykgcmV0dXJuO1xuICAgICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMpIHtcbiAgICAgICAgbGlzdGVuZXIodmFsdWUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgb246IChldmVudE5hbWUsIGxpc3RlbmVyKSA9PiB7XG4gICAgICBjb25zdCBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnNNYXAuZ2V0KGV2ZW50TmFtZSkgPz8gbmV3IFNldDxMaXN0ZW5lcjxVPj4oKTtcbiAgICAgIGxpc3RlbmVycy5hZGQobGlzdGVuZXIpO1xuICAgICAgbGlzdGVuZXJzTWFwLnNldChldmVudE5hbWUsIGxpc3RlbmVycyk7XG4gICAgfSxcbiAgICBvZmY6IChldmVudE5hbWUsIGxpc3RlbmVyKSA9PiB7XG4gICAgICBjb25zdCBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnNNYXAuZ2V0KGV2ZW50TmFtZSk7XG4gICAgICBpZiAoIWxpc3RlbmVycykgcmV0dXJuO1xuICAgICAgbGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcik7XG4gICAgfSxcbiAgfTtcbn07XG4iLCAibGV0IGRlYnVnTW9kZTogYm9vbGVhbiB8IFNldDxzdHJpbmc+ID0gZmFsc2U7XG5cbi8qKiBjYWNoZeWRqOOCiuOBrmRlYnVn5Ye65Yqb44Gu5pyJ5Yq544O754Sh5Yq544Gu5YiH44KK5pu/44GI44KS6KGM44GGXG4gKlxuICogQHBhcmFtIG1vZGUgYHRydWVg77ya5YWo44Gm44GuZGVidWflh7rlipvjgpLmnInlirnjgavjgZnjgossIGBmYWxzZWDvvJrlhajjgabjga5kZWJ1Z+WHuuWKm+OCkueEoeWKueOBq+OBmeOCiywg44Gd44KM5Lul5aSW77ya5oyH5a6a44GX44Gf44OV44Kh44Kk44Or5Lit44GuZGVidWflh7rlipvjga7jgb/mnInlirnjgavjgZnjgotcbiAqL1xuZXhwb3J0IGNvbnN0IHNldERlYnVnTW9kZSA9IChtb2RlOiBib29sZWFuIHwgSXRlcmFibGU8c3RyaW5nPik6IHZvaWQgPT4ge1xuICBkZWJ1Z01vZGUgPSB0eXBlb2YgbW9kZSA9PT0gXCJib29sZWFuXCIgPyBtb2RlIDogbmV3IFNldChtb2RlKTtcbn07XG5cbi8qKiBkZWJ1ZyBtb2Rl44Gu44Go44GN44Gg44GR5pyJ5Yq544GqY29uc29sZeOCkuODleOCoeOCpOODq+OBlOOBqOOBq+S9nOOCi1xuICpcbiAqIEBwYXJhbSBmaWxlbmFtZSDjgrPjg7Pjgr3jg7zjg6vlh7rlipvjgpLlkbzjgbPlh7rjgZfjgZ/jg5XjgqHjgqTjg6vlkI1cbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZURlYnVnID0gKGZpbGVuYW1lOiBzdHJpbmcpOiBDb25zb2xlID0+XG4gIE9iamVjdC5mcm9tRW50cmllcyhbLi4uT2JqZWN0LmVudHJpZXMoY29uc29sZSldLm1hcChcbiAgICAoW2tleSwgdmFsdWVdOiBbc3RyaW5nLCB1bmtub3duXSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gW2tleSwgdmFsdWVdO1xuICAgICAgc3dpdGNoIChrZXkgYXMga2V5b2YgQ29uc29sZSkge1xuICAgICAgICBjYXNlIFwid2FyblwiOlxuICAgICAgICBjYXNlIFwiZXJyb3JcIjpcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgKC4uLmFyZ3M6IHVua25vd25bXSkgPT5cbiAgICAgICAgICAgICAgdmFsdWUoYCVjJHtmaWxlbmFtZX1gLCBcImNvbG9yOiBncmF5XCIsIC4uLmFyZ3MpLFxuICAgICAgICAgIF07XG4gICAgICAgIGNhc2UgXCJsb2dcIjpcbiAgICAgICAgY2FzZSBcImluZm9cIjpcbiAgICAgICAgY2FzZSBcImRlYnVnXCI6XG4gICAgICAgICAgcmV0dXJuIFtrZXksICguLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZGVidWdNb2RlICE9PSB0cnVlICYmICghZGVidWdNb2RlIHx8ICFkZWJ1Z01vZGUuaGFzKGZpbGVuYW1lKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWx1ZShgJWMke2ZpbGVuYW1lfWAsIFwiY29sb3I6IGdyYXlcIiwgLi4uYXJncyk7XG4gICAgICAgICAgfV07XG4gICAgICAgIGNhc2UgXCJhc3NlcnRcIjpcbiAgICAgICAgICByZXR1cm4gW2tleSwgKGFzc2VydGlvbjogYm9vbGVhbiwgLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGRlYnVnTW9kZSAhPT0gdHJ1ZSAmJiAoIWRlYnVnTW9kZSB8fCAhZGVidWdNb2RlLmhhcyhmaWxlbmFtZSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWUoYXNzZXJ0aW9uLCBgJWMke2ZpbGVuYW1lfWAsIFwiY29sb3I6IGdyYXlcIiwgLi4uYXJncyk7XG4gICAgICAgICAgfV07XG4gICAgICAgIGNhc2UgXCJ0aW1lXCI6XG4gICAgICAgIGNhc2UgXCJ0aW1lRW5kXCI6XG4gICAgICAgICAgcmV0dXJuIFtrZXksIChsYWJlbDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGRlYnVnTW9kZSAhPT0gdHJ1ZSAmJiAoIWRlYnVnTW9kZSB8fCAhZGVidWdNb2RlLmhhcyhmaWxlbmFtZSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWUoYCR7ZmlsZW5hbWV9ICR7bGFiZWx9YCk7XG4gICAgICAgICAgfV07XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIFtrZXksICguLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZGVidWdNb2RlICE9PSB0cnVlICYmICghZGVidWdNb2RlIHx8ICFkZWJ1Z01vZGUuaGFzKGZpbGVuYW1lKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUoLi4uYXJncyk7XG4gICAgICAgICAgfV07XG4gICAgICB9XG4gICAgfSxcbiAgKSkgYXMgdW5rbm93biBhcyBDb25zb2xlO1xuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IGdldFByb2plY3QsIFJlc3VsdCB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5pbXBvcnQgeyBjYWNoZUZpcnN0RmV0Y2ggfSBmcm9tIFwiLi9jYWNoZS50c1wiO1xuaW1wb3J0IHsgbWFrZUVtaXR0ZXIgfSBmcm9tIFwiLi9ldmVudEVtaXR0ZXIudHNcIjtcbmltcG9ydCB7XG4gIE1lbWJlclByb2plY3QsXG4gIE5vdEZvdW5kRXJyb3IsXG4gIE5vdExvZ2dlZEluRXJyb3IsXG4gIE5vdE1lbWJlckVycm9yLFxuICBOb3RNZW1iZXJQcm9qZWN0LFxufSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVEZWJ1ZyB9IGZyb20gXCIuL2RlYnVnLnRzXCI7XG5cbnR5cGUgUHJvamVjdFJlc3VsdCA9IFJlc3VsdDxcbiAgfCBOb3RNZW1iZXJQcm9qZWN0XG4gIHwgTWVtYmVyUHJvamVjdCxcbiAgfCBOb3RGb3VuZEVycm9yXG4gIHwgTm90TG9nZ2VkSW5FcnJvclxuICB8IE5vdE1lbWJlckVycm9yXG4+O1xudHlwZSBTdGF0ZTxUPiA9IHsgbG9hZGluZzogdHJ1ZSB9IHwgeyBsb2FkaW5nOiBmYWxzZTsgdmFsdWU6IFQgfTtcbmNvbnN0IGVtaXR0ZXIgPSBtYWtlRW1pdHRlcjxzdHJpbmcsIFByb2plY3RSZXN1bHQ+KCk7XG5cbmNvbnN0IHByb2plY3RNYXAgPSBuZXcgTWFwPHN0cmluZywgU3RhdGU8UHJvamVjdFJlc3VsdD4+KCk7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZURlYnVnKFwiU2NyYXBCdWJibGU6dXNlUHJvamVjdC50c1wiKTtcblxuLyoqIC9hcGkvcHJvamVjdHMvOnByb2plY3Tjga7ntZDmnpzjgpLov5TjgZlob29rXG4gKlxuICogQHBhcmFtIHByb2plY3Qg5oOF5aCx44KS5Y+W5b6X44GX44Gf44GEcHJvamVjdOOBruWQjeWJjVxuICogQHJldHVybiBwcm9qZWN044Gu5oOF5aCx44CC5pyq5Yid5pyf5YyW44KC44GX44GP44Gv6Kqt44G/6L6844G/5Lit44Gu44Go44GN44GvYHVuZGVmaW5lZGDjgpLov5TjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVByb2plY3QgPSAocHJvamVjdDogc3RyaW5nKTogUHJvamVjdFJlc3VsdCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IFtwcm9qZWN0UmVzdWx0LCBzZXRQcm9qZWN0UmVzdWx0XSA9IHVzZVN0YXRlPFByb2plY3RSZXN1bHQ+KCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBlbWl0dGVyLm9uKHByb2plY3QsIHNldFByb2plY3RSZXN1bHQpO1xuXG4gICAgY29uc3Qgc3RhdGUgPSBwcm9qZWN0TWFwLmdldChwcm9qZWN0KTtcbiAgICBpZiAoc3RhdGUpIHtcbiAgICAgIHNldFByb2plY3RSZXN1bHQoc3RhdGUubG9hZGluZyA/IHVuZGVmaW5lZCA6IHN0YXRlLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvamVjdE1hcC5zZXQocHJvamVjdCwgeyBsb2FkaW5nOiB0cnVlIH0pO1xuICAgICAgc2V0UHJvamVjdFJlc3VsdCh1bmRlZmluZWQpO1xuXG4gICAgICAvLyBwcm9qZWN044Gu5oOF5aCx44KS5Y+W5b6X44GZ44KLXG4gICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlcSA9IGdldFByb2plY3QudG9SZXF1ZXN0KHByb2plY3QpO1xuICAgICAgICAgIGZvciBhd2FpdCAoY29uc3QgWywgcmVzXSBvZiBjYWNoZUZpcnN0RmV0Y2gocmVxKSkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0UHJvamVjdC5mcm9tUmVzcG9uc2UocmVzKTtcbiAgICAgICAgICAgIHByb2plY3RNYXAuc2V0KHByb2plY3QsIHsgbG9hZGluZzogZmFsc2UsIHZhbHVlOiByZXN1bHQgfSk7XG4gICAgICAgICAgICBlbWl0dGVyLmRpc3BhdGNoKHByb2plY3QsIHJlc3VsdCk7XG4gICAgICAgICAgICAvLyBuZXR3b3Jr44GL44KJY2FjaGXjgpLmm7TmlrDjgZnjgovlv4XopoHjga/jgarjgYTjga7jgafjgIExIGxvb3Djgaflh6bnkIbjgpLntYLjgYjjgotcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgIC8vIOaDs+WumuWkluOBruOCqOODqeODvOOBr+ODreOCsOOBq+WHuuOBmVxuICAgICAgICAgIGxvZ2dlci5lcnJvcihlKTtcbiAgICAgICAgICAvLyDmnKrliJ3mnJ/ljJbnirbmhYvjgavmiLvjgZlcbiAgICAgICAgICBwcm9qZWN0TWFwLmRlbGV0ZShwcm9qZWN0KTtcbiAgICAgICAgfVxuICAgICAgfSkoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4gZW1pdHRlci5vZmYocHJvamVjdCwgc2V0UHJvamVjdFJlc3VsdCk7XG4gIH0sIFtwcm9qZWN0XSk7XG5cbiAgcmV0dXJuIHByb2plY3RSZXN1bHQ7XG59O1xuIiwgImV4cG9ydCB0eXBlIHtcbiAgQmFzZUxpbmUgYXMgTGluZSxcbiAgTWVtYmVyUHJvamVjdCxcbiAgTm90Rm91bmRFcnJvcixcbiAgTm90TG9nZ2VkSW5FcnJvcixcbiAgTm90TWVtYmVyRXJyb3IsXG4gIE5vdE1lbWJlclByb2plY3QsXG4gIFBhZ2UsXG4gIFByb2plY3RJZCxcbiAgUHJvamVjdFJlbGF0ZWRQYWdlLFxuICBSZWxhdGVkUGFnZSxcbiAgU3RyaW5nTGMsXG4gIFVuaXhUaW1lLFxufSBmcm9tIFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NjcmFwYm94LWpwL3R5cGVzLzAuOS4wL3Jlc3QudHNcIjtcbmV4cG9ydCB0eXBlIHsgU2NyYXBib3ggfSBmcm9tIFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NjcmFwYm94LWpwL3R5cGVzLzAuOS4wL3VzZXJzY3JpcHQudHNcIjtcblxuaW1wb3J0IHR5cGUge1xuICBFcnJvckxpa2UsXG59IGZyb20gXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc2NyYXBib3gtanAvdHlwZXMvMC45LjAvcmVzdC50c1wiO1xuXG4vLyBjZi4gaHR0cHM6Ly9ibG9nLnVoeS5vb28vZW50cnkvMjAyMS0wNC0wOS90eXBlc2NyaXB0LWlzLWFueS1hcy8jJUUzJTgzJUE2JUUzJTgzJUJDJUUzJTgyJUI2JUUzJTgzJUJDJUU1JUFFJTlBJUU3JUJFJUE5JUU1JTlFJThCJUUzJTgyJUFDJUUzJTgzJUJDJUUzJTgzJTg5JUUzJTgxJUFFJUU1JUJDJTk1JUU2JTk1JUIwJUUzJTgxJUFFJUU1JTlFJThCJUUzJTgyJTkyJUUzJTgxJUE5JUUzJTgxJTg2JUUzJTgxJTk5JUUzJTgyJThCJUUzJTgxJThCXG5mdW5jdGlvbiBpc05vdE51bGxpc2goZGF0YTogdW5rbm93bik6IGRhdGEgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gZGF0YSAhPSBudWxsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU2NyYXBib3hFcnJvcihlOiB1bmtub3duKTogZSBpcyBFcnJvckxpa2Uge1xuICB0cnkge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlb2YgZSA9PT0gXCJzdHJpbmdcIiA/IEpTT04ucGFyc2UoZSkgOiBlO1xuICAgIGlmICghaXNOb3ROdWxsaXNoKGpzb24pKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHR5cGVvZiBqc29uLm5hbWUgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGpzb24ubWVzc2FnZSA9PT0gXCJzdHJpbmdcIjtcbiAgfSBjYXRjaCAoZTI6IHVua25vd24pIHtcbiAgICBpZiAoZTIgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikgcmV0dXJuIGZhbHNlO1xuICAgIHRocm93IGUyO1xuICB9XG59XG5cbmltcG9ydCB7IE1ha2VUdXBsZSB9IGZyb20gXCIuLi90eXBlLXRyYWl0cy50c1wiO1xuY29uc3QgZGVmYXVsdHMgPSBbXG4gIFwiZGVmYXVsdC1saWdodFwiLFxuICBcImRlZmF1bHQtZGFya1wiLFxuICBcImRlZmF1bHQtbWluaW1hbFwiLFxuXSBhcyBjb25zdDtcbmNvbnN0IHBhcGVycyA9IFtcbiAgXCJwYXBlci1saWdodFwiLFxuICBcInBhcGVyLWRhcmstZGFya1wiLFxuICBcInBhcGVyLWRhcmtcIixcbl0gYXMgY29uc3Q7XG5jb25zdCBzdGF0aW9uYXJpZXMgPSBbXG4gIFwiYmx1ZVwiLFxuICBcInB1cnBsZVwiLFxuICBcImdyZWVuXCIsXG4gIFwib3JhbmdlXCIsXG4gIFwicmVkXCIsXG5dIGFzIGNvbnN0O1xuY29uc3QgaGFja2VycyA9IFtcbiAgXCJoYWNrZXIxXCIsXG4gIFwiaGFja2VyMlwiLFxuXSBhcyBjb25zdDtcbmNvbnN0IHNlYXNvbnMgPSBbXG4gIFwid2ludGVyXCIsXG4gIFwic3ByaW5nXCIsXG4gIFwic3VtbWVyXCIsXG4gIFwiYXV0b21uXCIsXG5dIGFzIGNvbnN0O1xuY29uc3QgdHJvcGljYWxzID0gW1xuICBcInRyb3BpY2FsXCIsXG5dIGFzIGNvbnN0O1xuY29uc3QgY2l0aWVzID0gW1xuICBcImt5b3RvXCIsXG4gIFwibmV3eW9ya1wiLFxuICBcInBhcmlzXCIsXG5dIGFzIGNvbnN0O1xuY29uc3QgZ2FtZXMgPSBbXG4gIFwibXJlZFwiLFxuICBcImxncmVlblwiLFxuXSBhcyBjb25zdDtcbmNvbnN0IGxpZ2h0VGhlbWVzID0gW1xuICBcImRlZmF1bHQtbGlnaHRcIixcbiAgXCJkZWZhdWx0LW1pbmltYWxcIixcbiAgXCJwYXBlci1saWdodFwiLFxuICAuLi5zdGF0aW9uYXJpZXMsXG4gIC4uLnNlYXNvbnMsXG4gIC4uLnRyb3BpY2FscyxcbiAgLi4uY2l0aWVzLFxuICAuLi5nYW1lcyxcbl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBMaWdodFRoZW1lID0gdHlwZW9mIGxpZ2h0VGhlbWVzW251bWJlcl07XG5leHBvcnQgZnVuY3Rpb24gaXNMaWdodFRoZW1lKHRoZW1lOiBzdHJpbmcpOiB0aGVtZSBpcyBMaWdodFRoZW1lIHtcbiAgcmV0dXJuIChsaWdodFRoZW1lcyBhcyBNYWtlVHVwbGU8c3RyaW5nLCAxOD4pLmluY2x1ZGVzKHRoZW1lKTtcbn1cbmNvbnN0IGRhcmtUaGVtZXMgPSBbXG4gIFwiZGVmYXVsdC1kYXJrXCIsXG4gIFwicGFwZXItZGFyay1kYXJrXCIsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRGFya1RoZW1lID0gdHlwZW9mIGRhcmtUaGVtZXNbbnVtYmVyXTtcbmV4cG9ydCBmdW5jdGlvbiBpc0RhcmtUaGVtZSh0aGVtZTogc3RyaW5nKTogdGhlbWUgaXMgRGFya1RoZW1lIHtcbiAgcmV0dXJuIChkYXJrVGhlbWVzIGFzIE1ha2VUdXBsZTxzdHJpbmcsIDI+KS5pbmNsdWRlcyh0aGVtZSk7XG59XG5jb25zdCB0aGVtZXMgPSBbXG4gIC4uLmRlZmF1bHRzLFxuICAuLi5wYXBlcnMsXG4gIC4uLnN0YXRpb25hcmllcyxcbiAgLi4uaGFja2VycyxcbiAgLi4uc2Vhc29ucyxcbiAgLi4udHJvcGljYWxzLFxuICAuLi5jaXRpZXMsXG4gIC4uLmdhbWVzLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFRoZW1lID0gdHlwZW9mIHRoZW1lc1tudW1iZXJdO1xuZXhwb3J0IGZ1bmN0aW9uIGlzVGhlbWUodGhlbWU6IHN0cmluZyk6IHRoZW1lIGlzIFRoZW1lIHtcbiAgcmV0dXJuICh0aGVtZXMgYXMgTWFrZVR1cGxlPHN0cmluZywgMjM+KS5pbmNsdWRlcyh0aGVtZSk7XG59XG4iLCAiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgdXNlUHJvamVjdCB9IGZyb20gXCIuL3VzZVByb2plY3QudHNcIjtcbmltcG9ydCB7IGlzVGhlbWUsIFRoZW1lIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuXG5jb25zdCBkZWZhdWx0VGhlbWUgPSBcImRlZmF1bHQtbGlnaHRcIjtcblxuLyoqIHByb2plY3Tjga50aGVtZeOCkuWPluW+l+OBmeOCi2hvb2sgKi9cbmV4cG9ydCBjb25zdCB1c2VUaGVtZSA9IChwcm9qZWN0OiBzdHJpbmcpOiBUaGVtZSA9PiB7XG4gIGNvbnN0IHJlcyA9IHVzZVByb2plY3QocHJvamVjdCk7XG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghcmVzIHx8ICFyZXMub2spIHJldHVybiBkZWZhdWx0VGhlbWU7XG4gICAgY29uc3QgdGhlbWUgPSByZXMudmFsdWUudGhlbWU7XG4gICAgcmV0dXJuIGlzVGhlbWUodGhlbWUpID8gdGhlbWUgOiBkZWZhdWx0VGhlbWU7XG4gIH0sIFtyZXNdKTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIvPlxuXG4vKiog44Ob44OQ44O85pON5L2c44KS5b6F5qmf44GZ44KLXG4gKiBAcmV0dXJuIOODm+ODkOODvOOBjOOCreODo+ODs+OCu+ODq+OBleOCjOOBn+OCiWBmYWxzZWBcbiAqL1xuZXhwb3J0IGNvbnN0IHN0YXlIb3ZlcmluZyA9IDxFIGV4dGVuZHMgRWxlbWVudCA9IEhUTUxFbGVtZW50PihcbiAgZWxlbWVudDogRSxcbiAgaW50ZXJ2YWw6IG51bWJlcixcbik6IFByb21pc2U8Ym9vbGVhbj4gPT5cbiAgbmV3IFByb21pc2U8Ym9vbGVhbj4oKHJlc29sdmUpID0+IHtcbiAgICBsZXQgY2FuY2VsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgICBjYW5jZWxlZCA9IHRydWU7XG4gICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICB9O1xuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNhbmNlbCk7XG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcmxlYXZlXCIsIGhhbmRsZUNhbmNlbCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIWNhbmNlbGVkKSByZXNvbHZlKHRydWUpO1xuICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlQ2FuY2VsKTtcbiAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJsZWF2ZVwiLCBoYW5kbGVDYW5jZWwpO1xuICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgfSwgaW50ZXJ2YWwpO1xuICB9KTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIi8+XG5cbmV4cG9ydCB0eXBlIFBvc2l0aW9uID1cbiAgJiB7XG4gICAgdG9wOiBudW1iZXI7XG4gICAgYm90dG9tOiBudW1iZXI7XG4gICAgbWF4V2lkdGg6IG51bWJlcjtcbiAgfVxuICAmICh7XG4gICAgbGVmdDogbnVtYmVyO1xuICB9IHwge1xuICAgIHJpZ2h0OiBudW1iZXI7XG4gIH0pO1xuXG4vKiogQnViYmxl44Gu6KGo56S65L2N572u44KS6KiI566X44GZ44KLXG4gKlxuICogQHBhcmFtIHRhcmdldCDjgZPjga5Ob2Rl44Gr5a++44GX44GmYnViYmxl44KS6KGo56S644GZ44KLXG4gKiBAcmV0dXJuIOihqOekuuS9jee9rlxuICovXG5leHBvcnQgY29uc3QgY2FsY0J1YmJsZVBvc2l0aW9uID0gKHRhcmdldDogRWxlbWVudCk6IFBvc2l0aW9uID0+IHtcbiAgLy8g6KGo56S65L2N572u44KS6KiI566X44GZ44KLXG4gIGNvbnN0IHsgdG9wLCByaWdodCwgbGVmdCwgYm90dG9tIH0gPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAvLyBsaW5r44GM55S76Z2i44Gu5Y+z5a+E44KK44Gr44GC44Gj44Gf44KJ44CBYnViYmxl44KS5bem5YG044Gr5Ye644GZXG4gIGNvbnN0IGFkanVzdFJpZ2h0ID0gKGxlZnQgLSByb290LmxlZnQpIC8gcm9vdC53aWR0aCA+IDAuNTtcblxuICByZXR1cm4ge1xuICAgIHRvcDogTWF0aC5yb3VuZChib3R0b20gLSByb290LnRvcCksXG4gICAgYm90dG9tOiBNYXRoLnJvdW5kKGdsb2JhbFRoaXMuaW5uZXJIZWlnaHQgLSBnbG9iYWxUaGlzLnNjcm9sbFkgLSB0b3ApLFxuICAgIC4uLihhZGp1c3RSaWdodFxuICAgICAgPyB7IHJpZ2h0OiBNYXRoLnJvdW5kKHJvb3QucmlnaHQgLSByaWdodCkgfVxuICAgICAgOiB7IGxlZnQ6IE1hdGgucm91bmQobGVmdCAtIHJvb3QubGVmdCkgfSksXG4gICAgbWF4V2lkdGg6IGFkanVzdFJpZ2h0XG4gICAgICA/IHJpZ2h0IC0gMTBcbiAgICAgIDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIC0gbGVmdCAtIDEwLFxuICB9O1xufTtcbiIsICIvKiogQGpzeCBoICovXG4vKiogQGpzeEZyYWcgRnJhZ21lbnQgKi9cbi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiLz5cbmltcG9ydCB7IEZyYWdtZW50LCBoLCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgdXNlS2FUZVggfSBmcm9tIFwiLi9kZXBzL3VzZUthVGVYLnRzXCI7XG5pbXBvcnQgeyBlbmNvZGVUaXRsZVVSSSB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5pbXBvcnQgeyBwdXNoUGFnZVRyYW5zaXRpb24gfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LXN0ZC1icm93c2VyLnRzXCI7XG5pbXBvcnQge1xuICBGb3JtdWxhTm9kZSxcbiAgSGFzaFRhZ05vZGUsXG4gIEljb25Ob2RlLFxuICBMaW5rTm9kZSxcbiAgTm9kZSBhcyBOb2RlVHlwZSxcbiAgU3Ryb25nSWNvbk5vZGUsXG59IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtcGFyc2VyLnRzXCI7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtcGFyc2VyLnRzXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCIuL3VzZVRoZW1lLnRzXCI7XG5pbXBvcnQgeyBzdGF5SG92ZXJpbmcgfSBmcm9tIFwiLi9zdGF5SG92ZXJpbmcudHNcIjtcbmltcG9ydCB7IEJ1YmJsZU9wZXJhdG9ycyB9IGZyb20gXCIuL3VzZUJ1YmJsZXMudHNcIjtcbmltcG9ydCB7IGNhbGNCdWJibGVQb3NpdGlvbiB9IGZyb20gXCIuL3Bvc2l0aW9uLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFNjcmFwYm94IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZFByb3BzIHtcbiAgcHJvamVjdDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbnM6IHN0cmluZ1tdO1xuICB0aHVtYm5haWw6IHN0cmluZztcbiAgbGlua1RvPzoge1xuICAgIHByb2plY3Q/OiBzdHJpbmc7XG4gICAgdGl0bGVMYzogc3RyaW5nO1xuICB9O1xuICBkZWxheTogbnVtYmVyO1xuICBwcmVmZXRjaDogKHByb2plY3Q6IHN0cmluZywgdGl0bGU6IHN0cmluZykgPT4gdm9pZDtcbiAgYnViYmxlOiBCdWJibGVPcGVyYXRvcnNbXCJidWJibGVcIl07XG59XG5cbmV4cG9ydCBjb25zdCBDYXJkID0gKHtcbiAgcHJvamVjdCxcbiAgdGl0bGUsXG4gIGRlc2NyaXB0aW9ucyxcbiAgdGh1bWJuYWlsLFxuICBsaW5rVG8sXG4gIGJ1YmJsZSxcbiAgZGVsYXksXG4gIHByZWZldGNoLFxufTogQ2FyZFByb3BzKSA9PiB7XG4gIGNvbnN0IGJsb2NrcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gdGh1bWJuYWlsID8gW10gOiBwYXJzZShkZXNjcmlwdGlvbnMuam9pbihcIlxcblwiKSwgeyBoYXNUaXRsZTogZmFsc2UgfSksXG4gICAgW1xuICAgICAgdGh1bWJuYWlsLFxuICAgICAgZGVzY3JpcHRpb25zLFxuICAgIF0sXG4gICk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUocHJvamVjdCk7XG5cbiAgY29uc3QgaGFuZGxlRW50ZXIgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoXG4gICAgICB7IGN1cnJlbnRUYXJnZXQ6IGEgfTogaC5KU1guVGFyZ2V0ZWRNb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PixcbiAgICApID0+IHtcbiAgICAgIHByZWZldGNoKHByb2plY3QsIHRpdGxlKTtcblxuICAgICAgaWYgKCFhd2FpdCBzdGF5SG92ZXJpbmcoYSwgZGVsYXkpKSByZXR1cm47XG5cbiAgICAgIGJ1YmJsZSh7XG4gICAgICAgIHByb2plY3QsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBsaW5rVG8sXG4gICAgICAgIHR5cGU6IFwibGlua1wiLFxuICAgICAgICBwb3NpdGlvbjogY2FsY0J1YmJsZVBvc2l0aW9uKGEpLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbcHJvamVjdCwgdGl0bGUsIGRlbGF5LCBsaW5rVG8/LnByb2plY3QsIGxpbmtUbz8udGl0bGVMY10sXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VNZW1vKCgpID0+XG4gICAgbGlua1RvXG4gICAgICA/ICgpID0+IHtcbiAgICAgICAgcHVzaFBhZ2VUcmFuc2l0aW9uKHtcbiAgICAgICAgICB0eXBlOiBcInBhZ2VcIixcbiAgICAgICAgICBmcm9tOiB7IHByb2plY3Q6IGxpbmtUby5wcm9qZWN0ID8/IHByb2plY3QsIHRpdGxlOiBsaW5rVG8udGl0bGVMYyB9LFxuICAgICAgICAgIHRvOiB7IHByb2plY3QsIHRpdGxlIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgOiAoKSA9PiB7fSwgW3Byb2plY3QsIHRpdGxlLCBsaW5rVG8/LnByb2plY3QsIGxpbmtUbz8udGl0bGVMY10pO1xuXG4gIHJldHVybiAoXG4gICAgPGFcbiAgICAgIGNsYXNzTmFtZT1cInJlbGF0ZWQtcGFnZS1jYXJkIHBhZ2UtbGlua1wiXG4gICAgICB0eXBlPVwibGlua1wiXG4gICAgICBkYXRhLXRoZW1lPXt0aGVtZX1cbiAgICAgIGhyZWY9e2AvJHtwcm9qZWN0fS8ke2VuY29kZVRpdGxlVVJJKHRpdGxlKX1gfVxuICAgICAgcmVsPXtwcm9qZWN0ID09PSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUgPyBcInJvdXRlXCIgOiBcIm5vb3BuZXIgbm9yZWZlcnJlclwifVxuICAgICAgdGFyZ2V0PXtwcm9qZWN0ICE9PSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUgPyBcIl9ibGFua1wiIDogXCJcIn1cbiAgICAgIG9uUG9pbnRlckVudGVyPXtoYW5kbGVFbnRlcn1cbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJob3ZlclwiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3RpdGxlfTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3RodW1ibmFpbFxuICAgICAgICAgID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbFwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz17dGh1bWJuYWlsfSAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKVxuICAgICAgICAgIDogKFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgIHtibG9ja3MuZmxhdE1hcCgoYmxvY2ssIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgIGJsb2NrLnR5cGUgPT09IFwibGluZVwiXG4gICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgPHAga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICAgICAge2Jsb2NrLm5vZGVzLm1hcCgobm9kZSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN1bW1hcnlOb2RlIG5vZGU9e25vZGV9IHByb2plY3Q9e3Byb2plY3R9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvcD4sXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICA6IFtdXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9hPlxuICApO1xufTtcblxudHlwZSBOb2RlUHJvcHMgPSB7XG4gIG5vZGU6IE5vZGVUeXBlO1xuICBwcm9qZWN0OiBzdHJpbmc7XG59O1xuY29uc3QgU3VtbWFyeU5vZGUgPSAoeyBub2RlLCBwcm9qZWN0IH06IE5vZGVQcm9wcykgPT4ge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIGNhc2UgXCJjb2RlXCI6XG4gICAgICByZXR1cm4gPGNvZGU+e25vZGUudGV4dH08L2NvZGU+O1xuICAgIGNhc2UgXCJmb3JtdWxhXCI6XG4gICAgICByZXR1cm4gPEZvcm11bGEgbm9kZT17bm9kZX0gLz47XG4gICAgY2FzZSBcImNvbW1hbmRMaW5lXCI6XG4gICAgICByZXR1cm4gPGNvZGU+e25vZGUuc3ltYm9sfSAke25vZGUudGV4dH08L2NvZGU+O1xuICAgIGNhc2UgXCJoZWxwZmVlbFwiOlxuICAgICAgcmV0dXJuIDxjb2RlPj8ge25vZGUudGV4dH08L2NvZGU+O1xuICAgIGNhc2UgXCJxdW90ZVwiOlxuICAgIGNhc2UgXCJzdHJvbmdcIjpcbiAgICBjYXNlIFwiZGVjb3JhdGlvblwiOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7bm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IChcbiAgICAgICAgICAgIDxTdW1tYXJ5Tm9kZSBub2RlPXtub2RlfSBwcm9qZWN0PXtwcm9qZWN0fSAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgY2FzZSBcImljb25cIjpcbiAgICBjYXNlIFwic3Ryb25nSWNvblwiOlxuICAgICAgcmV0dXJuIDxJY29uIG5vZGU9e25vZGV9IHByb2plY3Q9e3Byb2plY3R9IC8+O1xuICAgIGNhc2UgXCJoYXNoVGFnXCI6XG4gICAgICByZXR1cm4gPEhhc2hUYWcgbm9kZT17bm9kZX0gLz47XG4gICAgY2FzZSBcImxpbmtcIjpcbiAgICAgIHJldHVybiA8TGluayBub2RlPXtub2RlfSAvPjtcbiAgICBjYXNlIFwicGxhaW5cIjpcbiAgICBjYXNlIFwiYmxhbmtcIjpcbiAgICAgIHJldHVybiA8Pntub2RlLnRleHR9PC8+O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gPD48Lz47XG4gIH1cbn07XG5cbnR5cGUgRm9ybXVsYVByb3BzID0ge1xuICBub2RlOiBGb3JtdWxhTm9kZTtcbn07XG5jb25zdCBGb3JtdWxhID0gKHsgbm9kZTogeyBmb3JtdWxhIH0gfTogRm9ybXVsYVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgcmVmLCBlcnJvciwgc2V0Rm9ybXVsYSB9ID0gdXNlS2FUZVgoXCJcIik7XG4gIHNldEZvcm11bGEoZm9ybXVsYSk7XG5cbiAgcmV0dXJuIChcbiAgICA8c3BhbiBjbGFzc05hbWU9e2Bmb3JtdWxhICR7ZXJyb3IgPyBcIiBlcnJvclwiIDogXCJcIn1gfT5cbiAgICAgIHtlcnJvclxuICAgICAgICA/IDxjb2RlPntmb3JtdWxhfTwvY29kZT5cbiAgICAgICAgOiA8c3BhbiBjbGFzc05hbWU9XCJrYXRleC1kaXNwbGF5XCIgcmVmPXtyZWZ9IC8+fVxuICAgIDwvc3Bhbj5cbiAgKTtcbn07XG50eXBlIEljb25Qcm9wcyA9IHtcbiAgcHJvamVjdDogc3RyaW5nO1xuICBub2RlOiBJY29uTm9kZSB8IFN0cm9uZ0ljb25Ob2RlO1xufTtcbmNvbnN0IEljb24gPSAoeyBub2RlOiB7IHBhdGhUeXBlLCBwYXRoIH0sIHByb2plY3Q6IF9wcm9qZWN0IH06IEljb25Qcm9wcykgPT4ge1xuICBjb25zdCBbcHJvamVjdCwgdGl0bGVdID0gcGF0aFR5cGUgPT09IFwicmVsYXRpdmVcIlxuICAgID8gW1xuICAgICAgX3Byb2plY3QsXG4gICAgICBwYXRoLFxuICAgIF1cbiAgICA6IHBhdGgubWF0Y2goL1xcLyhbXFx3XFwtXSspXFwvKC4rKSQvKT8uc2xpY2U/LigxKSA/PyBbX3Byb2plY3QsIHBhdGhdO1xuXG4gIHJldHVybiAoXG4gICAgPGltZ1xuICAgICAgY2xhc3M9XCJpY29uXCJcbiAgICAgIHNyYz17YC9hcGkvcGFnZXMvJHtwcm9qZWN0fS8ke2VuY29kZVRpdGxlVVJJKHRpdGxlKX0vaWNvbmB9XG4gICAgLz5cbiAgKTtcbn07XG50eXBlIEhhc2hUYWdQcm9wcyA9IHtcbiAgbm9kZTogSGFzaFRhZ05vZGU7XG59O1xuY29uc3QgSGFzaFRhZyA9ICh7IG5vZGU6IHsgaHJlZiB9IH06IEhhc2hUYWdQcm9wcykgPT4gKFxuICA8c3BhbiBjbGFzcz1cInBhZ2UtbGlua1wiPiN7aHJlZn08L3NwYW4+XG4pO1xudHlwZSBMaW5rUHJvcHMgPSB7XG4gIG5vZGU6IExpbmtOb2RlO1xufTtcbmNvbnN0IExpbmsgPSAoeyBub2RlOiB7IHBhdGhUeXBlLCBocmVmLCBjb250ZW50IH0gfTogTGlua1Byb3BzKSA9PlxuICBwYXRoVHlwZSAhPT0gXCJhYnNvbHV0ZVwiXG4gICAgPyA8c3BhbiBjbGFzcz1cInBhZ2UtbGlua1wiPntocmVmfTwvc3Bhbj4gLy8gY29udGVudOOBjOepuuOBruOBqOOBjeOBr3VuZGVmaW5lZOOBp+OBr+OBquOBjycn44Gr44Gq44KL44Gu44Gn44CBXG4gICAgLy8gPz/jgafjga/jgarjgY98fOOBp2ZhbGxiYWNr5Yem55CG44KS44GZ44KL5b+F6KaB44GM44GC44KLXG4gICAgOiA8c3BhbiBjbGFzcz1cImxpbmtcIj57Y29udGVudCB8fCBocmVmfTwvc3Bhbj47XG4iLCAiaW1wb3J0IHsgdG9UaXRsZUxjIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1zdGQudHNcIjtcblxuZXhwb3J0IHR5cGUgSUQgPSBgLyR7c3RyaW5nfS8ke3N0cmluZ31gO1xuLyoqIOWQjOS4gOODmuODvOOCuOOBi+WIpOWumuOBmeOCi+OBn+OCgeOBrklE44KS5L2c44KLICovXG5leHBvcnQgY29uc3QgdG9JZCA9IChwcm9qZWN0OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBJRCA9PlxuICBgLyR7cHJvamVjdH0vJHt0b1RpdGxlTGModGl0bGUpfWA7XG5cbi8qKiBJROOBi+OCieODquODs+OCr+aDheWgseOCkuW+qeWFg+OBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGZyb21JZCA9IChpZDogSUQpOiB7IHByb2plY3Q6IHN0cmluZzsgdGl0bGVMYzogc3RyaW5nIH0gPT4ge1xuICBjb25zdCBtYXRjaGVzID0gaWQubWF0Y2goYC8oW15cXC9dKykvKC4rKWApO1xuICBpZiAoIW1hdGNoZXMpIHRocm93IFN5bnRheEVycm9yKGBcIiR7aWR9XCIgY2Fubm5vdCBtYXRjaCBcIi8oW15cXC9dKykvKC4rKVwiYCk7XG4gIHJldHVybiB7XG4gICAgcHJvamVjdDogbWF0Y2hlc1sxXSxcbiAgICB0aXRsZUxjOiBtYXRjaGVzWzJdLFxuICB9O1xufTtcbiIsICIvLyBTaG91bGQgYmUgbm8gaW1wb3J0cyBoZXJlIVxuXG4vKipcbiAqIFRoZSBzZW50aW5lbCB2YWx1ZSByZXR1cm5lZCBieSBwcm9kdWNlcnMgdG8gcmVwbGFjZSB0aGUgZHJhZnQgd2l0aCB1bmRlZmluZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBOT1RISU5HOiB1bmlxdWUgc3ltYm9sID0gU3ltYm9sLmZvcihcImltbWVyLW5vdGhpbmdcIilcblxuLyoqXG4gKiBUbyBsZXQgSW1tZXIgdHJlYXQgeW91ciBjbGFzcyBpbnN0YW5jZXMgYXMgcGxhaW4gaW1tdXRhYmxlIG9iamVjdHNcbiAqIChhbGJlaXQgd2l0aCBhIGN1c3RvbSBwcm90b3R5cGUpLCB5b3UgbXVzdCBkZWZpbmUgZWl0aGVyIGFuIGluc3RhbmNlIHByb3BlcnR5XG4gKiBvciBhIHN0YXRpYyBwcm9wZXJ0eSBvbiBlYWNoIG9mIHlvdXIgY3VzdG9tIGNsYXNzZXMuXG4gKlxuICogT3RoZXJ3aXNlLCB5b3VyIGNsYXNzIGluc3RhbmNlIHdpbGwgbmV2ZXIgYmUgZHJhZnRlZCwgd2hpY2ggbWVhbnMgaXQgd29uJ3QgYmVcbiAqIHNhZmUgdG8gbXV0YXRlIGluIGEgcHJvZHVjZSBjYWxsYmFjay5cbiAqL1xuZXhwb3J0IGNvbnN0IERSQUZUQUJMRTogdW5pcXVlIHN5bWJvbCA9IFN5bWJvbC5mb3IoXCJpbW1lci1kcmFmdGFibGVcIilcblxuZXhwb3J0IGNvbnN0IERSQUZUX1NUQVRFOiB1bmlxdWUgc3ltYm9sID0gU3ltYm9sLmZvcihcImltbWVyLXN0YXRlXCIpXG4iLCAiZXhwb3J0IGNvbnN0IGVycm9ycyA9XG5cdHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIlxuXHRcdD8gW1xuXHRcdFx0XHQvLyBBbGwgZXJyb3IgY29kZXMsIHN0YXJ0aW5nIGJ5IDA6XG5cdFx0XHRcdGZ1bmN0aW9uKHBsdWdpbjogc3RyaW5nKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGBUaGUgcGx1Z2luIGZvciAnJHtwbHVnaW59JyBoYXMgbm90IGJlZW4gbG9hZGVkIGludG8gSW1tZXIuIFRvIGVuYWJsZSB0aGUgcGx1Z2luLCBpbXBvcnQgYW5kIGNhbGwgXFxgZW5hYmxlJHtwbHVnaW59KClcXGAgd2hlbiBpbml0aWFsaXppbmcgeW91ciBhcHBsaWNhdGlvbi5gXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGZ1bmN0aW9uKHRoaW5nOiBzdHJpbmcpIHtcblx0XHRcdFx0XHRyZXR1cm4gYHByb2R1Y2UgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIHRoaW5ncyB0aGF0IGFyZSBkcmFmdGFibGU6IHBsYWluIG9iamVjdHMsIGFycmF5cywgTWFwLCBTZXQgb3IgY2xhc3NlcyB0aGF0IGFyZSBtYXJrZWQgd2l0aCAnW2ltbWVyYWJsZV06IHRydWUnLiBHb3QgJyR7dGhpbmd9J2Bcblx0XHRcdFx0fSxcblx0XHRcdFx0XCJUaGlzIG9iamVjdCBoYXMgYmVlbiBmcm96ZW4gYW5kIHNob3VsZCBub3QgYmUgbXV0YXRlZFwiLFxuXHRcdFx0XHRmdW5jdGlvbihkYXRhOiBhbnkpIHtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XCJDYW5ub3QgdXNlIGEgcHJveHkgdGhhdCBoYXMgYmVlbiByZXZva2VkLiBEaWQgeW91IHBhc3MgYW4gb2JqZWN0IGZyb20gaW5zaWRlIGFuIGltbWVyIGZ1bmN0aW9uIHRvIGFuIGFzeW5jIHByb2Nlc3M/IFwiICtcblx0XHRcdFx0XHRcdGRhdGFcblx0XHRcdFx0XHQpXG5cdFx0XHRcdH0sXG5cdFx0XHRcdFwiQW4gaW1tZXIgcHJvZHVjZXIgcmV0dXJuZWQgYSBuZXcgdmFsdWUgKmFuZCogbW9kaWZpZWQgaXRzIGRyYWZ0LiBFaXRoZXIgcmV0dXJuIGEgbmV3IHZhbHVlICpvciogbW9kaWZ5IHRoZSBkcmFmdC5cIixcblx0XHRcdFx0XCJJbW1lciBmb3JiaWRzIGNpcmN1bGFyIHJlZmVyZW5jZXNcIixcblx0XHRcdFx0XCJUaGUgZmlyc3Qgb3Igc2Vjb25kIGFyZ3VtZW50IHRvIGBwcm9kdWNlYCBtdXN0IGJlIGEgZnVuY3Rpb25cIixcblx0XHRcdFx0XCJUaGUgdGhpcmQgYXJndW1lbnQgdG8gYHByb2R1Y2VgIG11c3QgYmUgYSBmdW5jdGlvbiBvciB1bmRlZmluZWRcIixcblx0XHRcdFx0XCJGaXJzdCBhcmd1bWVudCB0byBgY3JlYXRlRHJhZnRgIG11c3QgYmUgYSBwbGFpbiBvYmplY3QsIGFuIGFycmF5LCBvciBhbiBpbW1lcmFibGUgb2JqZWN0XCIsXG5cdFx0XHRcdFwiRmlyc3QgYXJndW1lbnQgdG8gYGZpbmlzaERyYWZ0YCBtdXN0IGJlIGEgZHJhZnQgcmV0dXJuZWQgYnkgYGNyZWF0ZURyYWZ0YFwiLFxuXHRcdFx0XHRmdW5jdGlvbih0aGluZzogc3RyaW5nKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGAnY3VycmVudCcgZXhwZWN0cyBhIGRyYWZ0LCBnb3Q6ICR7dGhpbmd9YFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRcIk9iamVjdC5kZWZpbmVQcm9wZXJ0eSgpIGNhbm5vdCBiZSB1c2VkIG9uIGFuIEltbWVyIGRyYWZ0XCIsXG5cdFx0XHRcdFwiT2JqZWN0LnNldFByb3RvdHlwZU9mKCkgY2Fubm90IGJlIHVzZWQgb24gYW4gSW1tZXIgZHJhZnRcIixcblx0XHRcdFx0XCJJbW1lciBvbmx5IHN1cHBvcnRzIGRlbGV0aW5nIGFycmF5IGluZGljZXNcIixcblx0XHRcdFx0XCJJbW1lciBvbmx5IHN1cHBvcnRzIHNldHRpbmcgYXJyYXkgaW5kaWNlcyBhbmQgdGhlICdsZW5ndGgnIHByb3BlcnR5XCIsXG5cdFx0XHRcdGZ1bmN0aW9uKHRoaW5nOiBzdHJpbmcpIHtcblx0XHRcdFx0XHRyZXR1cm4gYCdvcmlnaW5hbCcgZXhwZWN0cyBhIGRyYWZ0LCBnb3Q6ICR7dGhpbmd9YFxuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIE5vdGU6IGlmIG1vcmUgZXJyb3JzIGFyZSBhZGRlZCwgdGhlIGVycm9yT2Zmc2V0IGluIFBhdGNoZXMudHMgc2hvdWxkIGJlIGluY3JlYXNlZFxuXHRcdFx0XHQvLyBTZWUgUGF0Y2hlcy50cyBmb3IgYWRkaXRpb25hbCBlcnJvcnNcblx0XHQgIF1cblx0XHQ6IFtdXG5cbmV4cG9ydCBmdW5jdGlvbiBkaWUoZXJyb3I6IG51bWJlciwgLi4uYXJnczogYW55W10pOiBuZXZlciB7XG5cdGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcblx0XHRjb25zdCBlID0gZXJyb3JzW2Vycm9yXVxuXHRcdGNvbnN0IG1zZyA9IHR5cGVvZiBlID09PSBcImZ1bmN0aW9uXCIgPyBlLmFwcGx5KG51bGwsIGFyZ3MgYXMgYW55KSA6IGVcblx0XHR0aHJvdyBuZXcgRXJyb3IoYFtJbW1lcl0gJHttc2d9YClcblx0fVxuXHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0YFtJbW1lcl0gbWluaWZpZWQgZXJyb3IgbnI6ICR7ZXJyb3J9LiBGdWxsIGVycm9yIGF0OiBodHRwczovL2JpdC5seS8zY1hFS1dmYFxuXHQpXG59XG4iLCAiaW1wb3J0IHtcblx0RFJBRlRfU1RBVEUsXG5cdERSQUZUQUJMRSxcblx0T2JqZWN0aXNoLFxuXHREcmFmdGVkLFxuXHRBbnlPYmplY3QsXG5cdEFueU1hcCxcblx0QW55U2V0LFxuXHRJbW1lclN0YXRlLFxuXHRBcmNoVHlwZSxcblx0ZGllLFxuXHRTdHJpY3RNb2RlXG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbmV4cG9ydCBjb25zdCBnZXRQcm90b3R5cGVPZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZlxuXG4vKiogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBJbW1lciBkcmFmdCAqL1xuLyojX19QVVJFX18qL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRHJhZnQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gISF2YWx1ZSBcdTAwMjZcdTAwMjYgISF2YWx1ZVtEUkFGVF9TVEFURV1cbn1cblxuLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgY2FuIGJlIGRyYWZ0ZWQgYnkgSW1tZXIgKi9cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RyYWZ0YWJsZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG5cdGlmICghdmFsdWUpIHJldHVybiBmYWxzZVxuXHRyZXR1cm4gKFxuXHRcdGlzUGxhaW5PYmplY3QodmFsdWUpIHx8XG5cdFx0QXJyYXkuaXNBcnJheSh2YWx1ZSkgfHxcblx0XHQhIXZhbHVlW0RSQUZUQUJMRV0gfHxcblx0XHQhIXZhbHVlLmNvbnN0cnVjdG9yPy5bRFJBRlRBQkxFXSB8fFxuXHRcdGlzTWFwKHZhbHVlKSB8fFxuXHRcdGlzU2V0KHZhbHVlKVxuXHQpXG59XG5cbmNvbnN0IG9iamVjdEN0b3JTdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yLnRvU3RyaW5nKClcbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcblx0aWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHJldHVybiBmYWxzZVxuXHRjb25zdCBwcm90byA9IGdldFByb3RvdHlwZU9mKHZhbHVlKVxuXHRpZiAocHJvdG8gPT09IG51bGwpIHtcblx0XHRyZXR1cm4gdHJ1ZVxuXHR9XG5cdGNvbnN0IEN0b3IgPVxuXHRcdE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCBcImNvbnN0cnVjdG9yXCIpIFx1MDAyNlx1MDAyNiBwcm90by5jb25zdHJ1Y3RvclxuXG5cdGlmIChDdG9yID09PSBPYmplY3QpIHJldHVybiB0cnVlXG5cblx0cmV0dXJuIChcblx0XHR0eXBlb2YgQ3RvciA9PSBcImZ1bmN0aW9uXCIgXHUwMDI2XHUwMDI2XG5cdFx0RnVuY3Rpb24udG9TdHJpbmcuY2FsbChDdG9yKSA9PT0gb2JqZWN0Q3RvclN0cmluZ1xuXHQpXG59XG5cbi8qKiBHZXQgdGhlIHVuZGVybHlpbmcgb2JqZWN0IHRoYXQgaXMgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIGRyYWZ0ICovXG4vKiNfX1BVUkVfXyovXG5leHBvcnQgZnVuY3Rpb24gb3JpZ2luYWxcdTAwM2NUXHUwMDNlKHZhbHVlOiBUKTogVCB8IHVuZGVmaW5lZFxuZXhwb3J0IGZ1bmN0aW9uIG9yaWdpbmFsKHZhbHVlOiBEcmFmdGVkXHUwMDNjYW55XHUwMDNlKTogYW55IHtcblx0aWYgKCFpc0RyYWZ0KHZhbHVlKSkgZGllKDE1LCB2YWx1ZSlcblx0cmV0dXJuIHZhbHVlW0RSQUZUX1NUQVRFXS5iYXNlX1xufVxuXG4vKipcbiAqIEVhY2ggaXRlcmF0ZXMgYSBtYXAsIHNldCBvciBhcnJheS5cbiAqIE9yLCBpZiBhbnkgb3RoZXIga2luZCBvZiBvYmplY3QsIGFsbCBvZiBpdHMgb3duIHByb3BlcnRpZXMuXG4gKiBSZWdhcmRsZXNzIHdoZXRoZXIgdGhleSBhcmUgZW51bWVyYWJsZSBvciBzeW1ib2xzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlYWNoXHUwMDNjVCBleHRlbmRzIE9iamVjdGlzaFx1MDAzZShcblx0b2JqOiBULFxuXHRpdGVyOiAoa2V5OiBzdHJpbmcgfCBudW1iZXIsIHZhbHVlOiBhbnksIHNvdXJjZTogVCkgPVx1MDAzZSB2b2lkXG4pOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZWFjaChvYmo6IGFueSwgaXRlcjogYW55KSB7XG5cdGlmIChnZXRBcmNodHlwZShvYmopID09PSBBcmNoVHlwZS5PYmplY3QpIHtcblx0XHRSZWZsZWN0Lm93bktleXMob2JqKS5mb3JFYWNoKGtleSA9XHUwMDNlIHtcblx0XHRcdGl0ZXIoa2V5LCBvYmpba2V5XSwgb2JqKVxuXHRcdH0pXG5cdH0gZWxzZSB7XG5cdFx0b2JqLmZvckVhY2goKGVudHJ5OiBhbnksIGluZGV4OiBhbnkpID1cdTAwM2UgaXRlcihpbmRleCwgZW50cnksIG9iaikpXG5cdH1cbn1cblxuLyojX19QVVJFX18qL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFyY2h0eXBlKHRoaW5nOiBhbnkpOiBBcmNoVHlwZSB7XG5cdGNvbnN0IHN0YXRlOiB1bmRlZmluZWQgfCBJbW1lclN0YXRlID0gdGhpbmdbRFJBRlRfU1RBVEVdXG5cdHJldHVybiBzdGF0ZVxuXHRcdD8gc3RhdGUudHlwZV9cblx0XHQ6IEFycmF5LmlzQXJyYXkodGhpbmcpXG5cdFx0PyBBcmNoVHlwZS5BcnJheVxuXHRcdDogaXNNYXAodGhpbmcpXG5cdFx0PyBBcmNoVHlwZS5NYXBcblx0XHQ6IGlzU2V0KHRoaW5nKVxuXHRcdD8gQXJjaFR5cGUuU2V0XG5cdFx0OiBBcmNoVHlwZS5PYmplY3Rcbn1cblxuLyojX19QVVJFX18qL1xuZXhwb3J0IGZ1bmN0aW9uIGhhcyh0aGluZzogYW55LCBwcm9wOiBQcm9wZXJ0eUtleSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gZ2V0QXJjaHR5cGUodGhpbmcpID09PSBBcmNoVHlwZS5NYXBcblx0XHQ/IHRoaW5nLmhhcyhwcm9wKVxuXHRcdDogT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaW5nLCBwcm9wKVxufVxuXG4vKiNfX1BVUkVfXyovXG5leHBvcnQgZnVuY3Rpb24gZ2V0KHRoaW5nOiBBbnlNYXAgfCBBbnlPYmplY3QsIHByb3A6IFByb3BlcnR5S2V5KTogYW55IHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRyZXR1cm4gZ2V0QXJjaHR5cGUodGhpbmcpID09PSBBcmNoVHlwZS5NYXAgPyB0aGluZy5nZXQocHJvcCkgOiB0aGluZ1twcm9wXVxufVxuXG4vKiNfX1BVUkVfXyovXG5leHBvcnQgZnVuY3Rpb24gc2V0KHRoaW5nOiBhbnksIHByb3BPck9sZFZhbHVlOiBQcm9wZXJ0eUtleSwgdmFsdWU6IGFueSkge1xuXHRjb25zdCB0ID0gZ2V0QXJjaHR5cGUodGhpbmcpXG5cdGlmICh0ID09PSBBcmNoVHlwZS5NYXApIHRoaW5nLnNldChwcm9wT3JPbGRWYWx1ZSwgdmFsdWUpXG5cdGVsc2UgaWYgKHQgPT09IEFyY2hUeXBlLlNldCkge1xuXHRcdHRoaW5nLmFkZCh2YWx1ZSlcblx0fSBlbHNlIHRoaW5nW3Byb3BPck9sZFZhbHVlXSA9IHZhbHVlXG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpcyh4OiBhbnksIHk6IGFueSk6IGJvb2xlYW4ge1xuXHQvLyBGcm9tOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmJqcy9ibG9iL2M2OTkwNGE1MTFiOTAwMjY2OTM1MTY4MjIzMDYzZGQ4NzcyZGZjNDAvcGFja2FnZXMvZmJqcy9zcmMvY29yZS9zaGFsbG93RXF1YWwuanNcblx0aWYgKHggPT09IHkpIHtcblx0XHRyZXR1cm4geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHlcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4geCAhPT0geCBcdTAwMjZcdTAwMjYgeSAhPT0geVxuXHR9XG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01hcCh0YXJnZXQ6IGFueSk6IHRhcmdldCBpcyBBbnlNYXAge1xuXHRyZXR1cm4gdGFyZ2V0IGluc3RhbmNlb2YgTWFwXG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NldCh0YXJnZXQ6IGFueSk6IHRhcmdldCBpcyBBbnlTZXQge1xuXHRyZXR1cm4gdGFyZ2V0IGluc3RhbmNlb2YgU2V0XG59XG4vKiNfX1BVUkVfXyovXG5leHBvcnQgZnVuY3Rpb24gbGF0ZXN0KHN0YXRlOiBJbW1lclN0YXRlKTogYW55IHtcblx0cmV0dXJuIHN0YXRlLmNvcHlfIHx8IHN0YXRlLmJhc2VfXG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBzaGFsbG93Q29weShiYXNlOiBhbnksIHN0cmljdDogU3RyaWN0TW9kZSkge1xuXHRpZiAoaXNNYXAoYmFzZSkpIHtcblx0XHRyZXR1cm4gbmV3IE1hcChiYXNlKVxuXHR9XG5cdGlmIChpc1NldChiYXNlKSkge1xuXHRcdHJldHVybiBuZXcgU2V0KGJhc2UpXG5cdH1cblx0aWYgKEFycmF5LmlzQXJyYXkoYmFzZSkpIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChiYXNlKVxuXG5cdGNvbnN0IGlzUGxhaW4gPSBpc1BsYWluT2JqZWN0KGJhc2UpXG5cblx0aWYgKHN0cmljdCA9PT0gdHJ1ZSB8fCAoc3RyaWN0ID09PSBcImNsYXNzX29ubHlcIiBcdTAwMjZcdTAwMjYgIWlzUGxhaW4pKSB7XG5cdFx0Ly8gUGVyZm9ybSBhIHN0cmljdCBjb3B5XG5cdFx0Y29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhiYXNlKVxuXHRcdGRlbGV0ZSBkZXNjcmlwdG9yc1tEUkFGVF9TVEFURSBhcyBhbnldXG5cdFx0bGV0IGtleXMgPSBSZWZsZWN0Lm93bktleXMoZGVzY3JpcHRvcnMpXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgXHUwMDNjIGtleXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGtleTogYW55ID0ga2V5c1tpXVxuXHRcdFx0Y29uc3QgZGVzYyA9IGRlc2NyaXB0b3JzW2tleV1cblx0XHRcdGlmIChkZXNjLndyaXRhYmxlID09PSBmYWxzZSkge1xuXHRcdFx0XHRkZXNjLndyaXRhYmxlID0gdHJ1ZVxuXHRcdFx0XHRkZXNjLmNvbmZpZ3VyYWJsZSA9IHRydWVcblx0XHRcdH1cblx0XHRcdC8vIGxpa2Ugb2JqZWN0LmFzc2lnbiwgd2Ugd2lsbCByZWFkIGFueSBfb3duXywgZ2V0L3NldCBhY2Nlc3NvcnMuIFRoaXMgaGVscHMgaW4gZGVhbGluZ1xuXHRcdFx0Ly8gd2l0aCBsaWJyYXJpZXMgdGhhdCB0cmFwIHZhbHVlcywgbGlrZSBtb2J4IG9yIHZ1ZVxuXHRcdFx0Ly8gdW5saWtlIG9iamVjdC5hc3NpZ24sIG5vbi1lbnVtZXJhYmxlcyB3aWxsIGJlIGNvcGllZCBhcyB3ZWxsXG5cdFx0XHRpZiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpXG5cdFx0XHRcdGRlc2NyaXB0b3JzW2tleV0gPSB7XG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHdyaXRhYmxlOiB0cnVlLCAvLyBjb3VsZCBsaXZlIHdpdGggISFkZXNjLnNldCBhcyB3ZWxsIGhlcmUuLi5cblx0XHRcdFx0XHRlbnVtZXJhYmxlOiBkZXNjLmVudW1lcmFibGUsXG5cdFx0XHRcdFx0dmFsdWU6IGJhc2Vba2V5XVxuXHRcdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBPYmplY3QuY3JlYXRlKGdldFByb3RvdHlwZU9mKGJhc2UpLCBkZXNjcmlwdG9ycylcblx0fSBlbHNlIHtcblx0XHQvLyBwZXJmb3JtIGEgc2xvcHB5IGNvcHlcblx0XHRjb25zdCBwcm90byA9IGdldFByb3RvdHlwZU9mKGJhc2UpXG5cdFx0aWYgKHByb3RvICE9PSBudWxsIFx1MDAyNlx1MDAyNiBpc1BsYWluKSB7XG5cdFx0XHRyZXR1cm4gey4uLmJhc2V9IC8vIGFzc3VtcHRpb246IGJldHRlciBpbm5lciBjbGFzcyBvcHRpbWl6YXRpb24gdGhhbiB0aGUgYXNzaWduIGJlbG93XG5cdFx0fVxuXHRcdGNvbnN0IG9iaiA9IE9iamVjdC5jcmVhdGUocHJvdG8pXG5cdFx0cmV0dXJuIE9iamVjdC5hc3NpZ24ob2JqLCBiYXNlKVxuXHR9XG59XG5cbi8qKlxuICogRnJlZXplcyBkcmFmdGFibGUgb2JqZWN0cy4gUmV0dXJucyB0aGUgb3JpZ2luYWwgb2JqZWN0LlxuICogQnkgZGVmYXVsdCBmcmVlemVzIHNoYWxsb3dseSwgYnV0IGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgYHRydWVgIGl0IHdpbGwgZnJlZXplIHJlY3Vyc2l2ZWx5LlxuICpcbiAqIEBwYXJhbSBvYmpcbiAqIEBwYXJhbSBkZWVwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcmVlemVcdTAwM2NUXHUwMDNlKG9iajogVCwgZGVlcD86IGJvb2xlYW4pOiBUXG5leHBvcnQgZnVuY3Rpb24gZnJlZXplXHUwMDNjVFx1MDAzZShvYmo6IGFueSwgZGVlcDogYm9vbGVhbiA9IGZhbHNlKTogVCB7XG5cdGlmIChpc0Zyb3plbihvYmopIHx8IGlzRHJhZnQob2JqKSB8fCAhaXNEcmFmdGFibGUob2JqKSkgcmV0dXJuIG9ialxuXHRpZiAoZ2V0QXJjaHR5cGUob2JqKSBcdTAwM2UgMSAvKiBNYXAgb3IgU2V0ICovKSB7XG5cdFx0b2JqLnNldCA9IG9iai5hZGQgPSBvYmouY2xlYXIgPSBvYmouZGVsZXRlID0gZG9udE11dGF0ZUZyb3plbkNvbGxlY3Rpb25zIGFzIGFueVxuXHR9XG5cdE9iamVjdC5mcmVlemUob2JqKVxuXHRpZiAoZGVlcClcblx0XHQvLyBTZWUgIzU5MCwgZG9uJ3QgcmVjdXJzZSBpbnRvIG5vbi1lbnVtZXJhYmxlIC8gU3ltYm9sIHByb3BlcnRpZXMgd2hlbiBmcmVlemluZ1xuXHRcdC8vIFNvIHVzZSBPYmplY3QuZW50cmllcyAob25seSBzdHJpbmctbGlrZSwgZW51bWVyYWJsZXMpIGluc3RlYWQgb2YgZWFjaCgpXG5cdFx0T2JqZWN0LmVudHJpZXMob2JqKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID1cdTAwM2UgZnJlZXplKHZhbHVlLCB0cnVlKSlcblx0cmV0dXJuIG9ialxufVxuXG5mdW5jdGlvbiBkb250TXV0YXRlRnJvemVuQ29sbGVjdGlvbnMoKSB7XG5cdGRpZSgyKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGcm96ZW4ob2JqOiBhbnkpOiBib29sZWFuIHtcblx0cmV0dXJuIE9iamVjdC5pc0Zyb3plbihvYmopXG59XG4iLCAiaW1wb3J0IHtcblx0SW1tZXJTdGF0ZSxcblx0UGF0Y2gsXG5cdERyYWZ0ZWQsXG5cdEltbWVyQmFzZVN0YXRlLFxuXHRBbnlNYXAsXG5cdEFueVNldCxcblx0QXJjaFR5cGUsXG5cdGRpZVxufSBmcm9tIFwiLi4vaW50ZXJuYWxcIlxuXG4vKiogUGx1Z2luIHV0aWxpdGllcyAqL1xuY29uc3QgcGx1Z2luczoge1xuXHRQYXRjaGVzPzoge1xuXHRcdGdlbmVyYXRlUGF0Y2hlc18oXG5cdFx0XHRzdGF0ZTogSW1tZXJTdGF0ZSxcblx0XHRcdGJhc2VQYXRoOiBQYXRjaFBhdGgsXG5cdFx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdFx0aW52ZXJzZVBhdGNoZXM6IFBhdGNoW11cblx0XHQpOiB2b2lkXG5cdFx0Z2VuZXJhdGVSZXBsYWNlbWVudFBhdGNoZXNfKFxuXHRcdFx0YmFzZTogYW55LFxuXHRcdFx0cmVwbGFjZW1lbnQ6IGFueSxcblx0XHRcdHBhdGNoZXM6IFBhdGNoW10sXG5cdFx0XHRpbnZlcnNlUGF0Y2hlczogUGF0Y2hbXVxuXHRcdCk6IHZvaWRcblx0XHRhcHBseVBhdGNoZXNfXHUwMDNjVFx1MDAzZShkcmFmdDogVCwgcGF0Y2hlczogcmVhZG9ubHkgUGF0Y2hbXSk6IFRcblx0fVxuXHRNYXBTZXQ/OiB7XG5cdFx0cHJveHlNYXBfXHUwMDNjVCBleHRlbmRzIEFueU1hcFx1MDAzZSh0YXJnZXQ6IFQsIHBhcmVudD86IEltbWVyU3RhdGUpOiBUXG5cdFx0cHJveHlTZXRfXHUwMDNjVCBleHRlbmRzIEFueVNldFx1MDAzZSh0YXJnZXQ6IFQsIHBhcmVudD86IEltbWVyU3RhdGUpOiBUXG5cdH1cbn0gPSB7fVxuXG50eXBlIFBsdWdpbnMgPSB0eXBlb2YgcGx1Z2luc1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1Z2luXHUwMDNjSyBleHRlbmRzIGtleW9mIFBsdWdpbnNcdTAwM2UoXG5cdHBsdWdpbktleTogS1xuKTogRXhjbHVkZVx1MDAzY1BsdWdpbnNbS10sIHVuZGVmaW5lZFx1MDAzZSB7XG5cdGNvbnN0IHBsdWdpbiA9IHBsdWdpbnNbcGx1Z2luS2V5XVxuXHRpZiAoIXBsdWdpbikge1xuXHRcdGRpZSgwLCBwbHVnaW5LZXkpXG5cdH1cblx0Ly8gQHRzLWlnbm9yZVxuXHRyZXR1cm4gcGx1Z2luXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkUGx1Z2luXHUwMDNjSyBleHRlbmRzIGtleW9mIFBsdWdpbnNcdTAwM2UoXG5cdHBsdWdpbktleTogSyxcblx0aW1wbGVtZW50YXRpb246IFBsdWdpbnNbS11cbik6IHZvaWQge1xuXHRpZiAoIXBsdWdpbnNbcGx1Z2luS2V5XSkgcGx1Z2luc1twbHVnaW5LZXldID0gaW1wbGVtZW50YXRpb25cbn1cbi8qKiBNYXAgLyBTZXQgcGx1Z2luICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwU3RhdGUgZXh0ZW5kcyBJbW1lckJhc2VTdGF0ZSB7XG5cdHR5cGVfOiBBcmNoVHlwZS5NYXBcblx0Y29weV86IEFueU1hcCB8IHVuZGVmaW5lZFxuXHRhc3NpZ25lZF86IE1hcFx1MDAzY2FueSwgYm9vbGVhblx1MDAzZSB8IHVuZGVmaW5lZFxuXHRiYXNlXzogQW55TWFwXG5cdHJldm9rZWRfOiBib29sZWFuXG5cdGRyYWZ0XzogRHJhZnRlZFx1MDAzY0FueU1hcCwgTWFwU3RhdGVcdTAwM2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXRTdGF0ZSBleHRlbmRzIEltbWVyQmFzZVN0YXRlIHtcblx0dHlwZV86IEFyY2hUeXBlLlNldFxuXHRjb3B5XzogQW55U2V0IHwgdW5kZWZpbmVkXG5cdGJhc2VfOiBBbnlTZXRcblx0ZHJhZnRzXzogTWFwXHUwMDNjYW55LCBEcmFmdGVkXHUwMDNlIC8vIG1hcHMgdGhlIG9yaWdpbmFsIHZhbHVlIHRvIHRoZSBkcmFmdCB2YWx1ZSBpbiB0aGUgbmV3IHNldFxuXHRyZXZva2VkXzogYm9vbGVhblxuXHRkcmFmdF86IERyYWZ0ZWRcdTAwM2NBbnlTZXQsIFNldFN0YXRlXHUwMDNlXG59XG5cbi8qKiBQYXRjaGVzIHBsdWdpbiAqL1xuXG5leHBvcnQgdHlwZSBQYXRjaFBhdGggPSAoc3RyaW5nIHwgbnVtYmVyKVtdXG4iLCAiaW1wb3J0IHtcblx0UGF0Y2gsXG5cdFBhdGNoTGlzdGVuZXIsXG5cdERyYWZ0ZWQsXG5cdEltbWVyLFxuXHREUkFGVF9TVEFURSxcblx0SW1tZXJTdGF0ZSxcblx0QXJjaFR5cGUsXG5cdGdldFBsdWdpblxufSBmcm9tIFwiLi4vaW50ZXJuYWxcIlxuXG4vKiogRWFjaCBzY29wZSByZXByZXNlbnRzIGEgYHByb2R1Y2VgIGNhbGwuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1tZXJTY29wZSB7XG5cdHBhdGNoZXNfPzogUGF0Y2hbXVxuXHRpbnZlcnNlUGF0Y2hlc18/OiBQYXRjaFtdXG5cdGNhbkF1dG9GcmVlemVfOiBib29sZWFuXG5cdGRyYWZ0c186IGFueVtdXG5cdHBhcmVudF8/OiBJbW1lclNjb3BlXG5cdHBhdGNoTGlzdGVuZXJfPzogUGF0Y2hMaXN0ZW5lclxuXHRpbW1lcl86IEltbWVyXG5cdHVuZmluYWxpemVkRHJhZnRzXzogbnVtYmVyXG59XG5cbmxldCBjdXJyZW50U2NvcGU6IEltbWVyU2NvcGUgfCB1bmRlZmluZWRcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnJlbnRTY29wZSgpIHtcblx0cmV0dXJuIGN1cnJlbnRTY29wZSFcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2NvcGUoXG5cdHBhcmVudF86IEltbWVyU2NvcGUgfCB1bmRlZmluZWQsXG5cdGltbWVyXzogSW1tZXJcbik6IEltbWVyU2NvcGUge1xuXHRyZXR1cm4ge1xuXHRcdGRyYWZ0c186IFtdLFxuXHRcdHBhcmVudF8sXG5cdFx0aW1tZXJfLFxuXHRcdC8vIFdoZW5ldmVyIHRoZSBtb2RpZmllZCBkcmFmdCBjb250YWlucyBhIGRyYWZ0IGZyb20gYW5vdGhlciBzY29wZSwgd2Vcblx0XHQvLyBuZWVkIHRvIHByZXZlbnQgYXV0by1mcmVlemluZyBzbyB0aGUgdW5vd25lZCBkcmFmdCBjYW4gYmUgZmluYWxpemVkLlxuXHRcdGNhbkF1dG9GcmVlemVfOiB0cnVlLFxuXHRcdHVuZmluYWxpemVkRHJhZnRzXzogMFxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQYXRjaGVzSW5TY29wZShcblx0c2NvcGU6IEltbWVyU2NvcGUsXG5cdHBhdGNoTGlzdGVuZXI/OiBQYXRjaExpc3RlbmVyXG4pIHtcblx0aWYgKHBhdGNoTGlzdGVuZXIpIHtcblx0XHRnZXRQbHVnaW4oXCJQYXRjaGVzXCIpIC8vIGFzc2VydCB3ZSBoYXZlIHRoZSBwbHVnaW5cblx0XHRzY29wZS5wYXRjaGVzXyA9IFtdXG5cdFx0c2NvcGUuaW52ZXJzZVBhdGNoZXNfID0gW11cblx0XHRzY29wZS5wYXRjaExpc3RlbmVyXyA9IHBhdGNoTGlzdGVuZXJcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV2b2tlU2NvcGUoc2NvcGU6IEltbWVyU2NvcGUpIHtcblx0bGVhdmVTY29wZShzY29wZSlcblx0c2NvcGUuZHJhZnRzXy5mb3JFYWNoKHJldm9rZURyYWZ0KVxuXHQvLyBAdHMtaWdub3JlXG5cdHNjb3BlLmRyYWZ0c18gPSBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZWF2ZVNjb3BlKHNjb3BlOiBJbW1lclNjb3BlKSB7XG5cdGlmIChzY29wZSA9PT0gY3VycmVudFNjb3BlKSB7XG5cdFx0Y3VycmVudFNjb3BlID0gc2NvcGUucGFyZW50X1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnRlclNjb3BlKGltbWVyOiBJbW1lcikge1xuXHRyZXR1cm4gKGN1cnJlbnRTY29wZSA9IGNyZWF0ZVNjb3BlKGN1cnJlbnRTY29wZSwgaW1tZXIpKVxufVxuXG5mdW5jdGlvbiByZXZva2VEcmFmdChkcmFmdDogRHJhZnRlZCkge1xuXHRjb25zdCBzdGF0ZTogSW1tZXJTdGF0ZSA9IGRyYWZ0W0RSQUZUX1NUQVRFXVxuXHRpZiAoc3RhdGUudHlwZV8gPT09IEFyY2hUeXBlLk9iamVjdCB8fCBzdGF0ZS50eXBlXyA9PT0gQXJjaFR5cGUuQXJyYXkpXG5cdFx0c3RhdGUucmV2b2tlXygpXG5cdGVsc2Ugc3RhdGUucmV2b2tlZF8gPSB0cnVlXG59XG4iLCAiaW1wb3J0IHtcblx0SW1tZXJTY29wZSxcblx0RFJBRlRfU1RBVEUsXG5cdGlzRHJhZnRhYmxlLFxuXHROT1RISU5HLFxuXHRQYXRjaFBhdGgsXG5cdGVhY2gsXG5cdGhhcyxcblx0ZnJlZXplLFxuXHRJbW1lclN0YXRlLFxuXHRpc0RyYWZ0LFxuXHRTZXRTdGF0ZSxcblx0c2V0LFxuXHRBcmNoVHlwZSxcblx0Z2V0UGx1Z2luLFxuXHRkaWUsXG5cdHJldm9rZVNjb3BlLFxuXHRpc0Zyb3plblxufSBmcm9tIFwiLi4vaW50ZXJuYWxcIlxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc1Jlc3VsdChyZXN1bHQ6IGFueSwgc2NvcGU6IEltbWVyU2NvcGUpIHtcblx0c2NvcGUudW5maW5hbGl6ZWREcmFmdHNfID0gc2NvcGUuZHJhZnRzXy5sZW5ndGhcblx0Y29uc3QgYmFzZURyYWZ0ID0gc2NvcGUuZHJhZnRzXyFbMF1cblx0Y29uc3QgaXNSZXBsYWNlZCA9IHJlc3VsdCAhPT0gdW5kZWZpbmVkIFx1MDAyNlx1MDAyNiByZXN1bHQgIT09IGJhc2VEcmFmdFxuXHRpZiAoaXNSZXBsYWNlZCkge1xuXHRcdGlmIChiYXNlRHJhZnRbRFJBRlRfU1RBVEVdLm1vZGlmaWVkXykge1xuXHRcdFx0cmV2b2tlU2NvcGUoc2NvcGUpXG5cdFx0XHRkaWUoNClcblx0XHR9XG5cdFx0aWYgKGlzRHJhZnRhYmxlKHJlc3VsdCkpIHtcblx0XHRcdC8vIEZpbmFsaXplIHRoZSByZXN1bHQgaW4gY2FzZSBpdCBjb250YWlucyAob3IgaXMpIGEgc3Vic2V0IG9mIHRoZSBkcmFmdC5cblx0XHRcdHJlc3VsdCA9IGZpbmFsaXplKHNjb3BlLCByZXN1bHQpXG5cdFx0XHRpZiAoIXNjb3BlLnBhcmVudF8pIG1heWJlRnJlZXplKHNjb3BlLCByZXN1bHQpXG5cdFx0fVxuXHRcdGlmIChzY29wZS5wYXRjaGVzXykge1xuXHRcdFx0Z2V0UGx1Z2luKFwiUGF0Y2hlc1wiKS5nZW5lcmF0ZVJlcGxhY2VtZW50UGF0Y2hlc18oXG5cdFx0XHRcdGJhc2VEcmFmdFtEUkFGVF9TVEFURV0uYmFzZV8sXG5cdFx0XHRcdHJlc3VsdCxcblx0XHRcdFx0c2NvcGUucGF0Y2hlc18sXG5cdFx0XHRcdHNjb3BlLmludmVyc2VQYXRjaGVzXyFcblx0XHRcdClcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Ly8gRmluYWxpemUgdGhlIGJhc2UgZHJhZnQuXG5cdFx0cmVzdWx0ID0gZmluYWxpemUoc2NvcGUsIGJhc2VEcmFmdCwgW10pXG5cdH1cblx0cmV2b2tlU2NvcGUoc2NvcGUpXG5cdGlmIChzY29wZS5wYXRjaGVzXykge1xuXHRcdHNjb3BlLnBhdGNoTGlzdGVuZXJfIShzY29wZS5wYXRjaGVzXywgc2NvcGUuaW52ZXJzZVBhdGNoZXNfISlcblx0fVxuXHRyZXR1cm4gcmVzdWx0ICE9PSBOT1RISU5HID8gcmVzdWx0IDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGZpbmFsaXplKHJvb3RTY29wZTogSW1tZXJTY29wZSwgdmFsdWU6IGFueSwgcGF0aD86IFBhdGNoUGF0aCkge1xuXHQvLyBEb24ndCByZWN1cnNlIGluIHRobyByZWN1cnNpdmUgZGF0YSBzdHJ1Y3R1cmVzXG5cdGlmIChpc0Zyb3plbih2YWx1ZSkpIHJldHVybiB2YWx1ZVxuXG5cdGNvbnN0IHN0YXRlOiBJbW1lclN0YXRlID0gdmFsdWVbRFJBRlRfU1RBVEVdXG5cdC8vIEEgcGxhaW4gb2JqZWN0LCBtaWdodCBuZWVkIGZyZWV6aW5nLCBtaWdodCBjb250YWluIGRyYWZ0c1xuXHRpZiAoIXN0YXRlKSB7XG5cdFx0ZWFjaCh2YWx1ZSwgKGtleSwgY2hpbGRWYWx1ZSkgPVx1MDAzZVxuXHRcdFx0ZmluYWxpemVQcm9wZXJ0eShyb290U2NvcGUsIHN0YXRlLCB2YWx1ZSwga2V5LCBjaGlsZFZhbHVlLCBwYXRoKVxuXHRcdClcblx0XHRyZXR1cm4gdmFsdWVcblx0fVxuXHQvLyBOZXZlciBmaW5hbGl6ZSBkcmFmdHMgb3duZWQgYnkgYW5vdGhlciBzY29wZS5cblx0aWYgKHN0YXRlLnNjb3BlXyAhPT0gcm9vdFNjb3BlKSByZXR1cm4gdmFsdWVcblx0Ly8gVW5tb2RpZmllZCBkcmFmdCwgcmV0dXJuIHRoZSAoZnJvemVuKSBvcmlnaW5hbFxuXHRpZiAoIXN0YXRlLm1vZGlmaWVkXykge1xuXHRcdG1heWJlRnJlZXplKHJvb3RTY29wZSwgc3RhdGUuYmFzZV8sIHRydWUpXG5cdFx0cmV0dXJuIHN0YXRlLmJhc2VfXG5cdH1cblx0Ly8gTm90IGZpbmFsaXplZCB5ZXQsIGxldCdzIGRvIHRoYXQgbm93XG5cdGlmICghc3RhdGUuZmluYWxpemVkXykge1xuXHRcdHN0YXRlLmZpbmFsaXplZF8gPSB0cnVlXG5cdFx0c3RhdGUuc2NvcGVfLnVuZmluYWxpemVkRHJhZnRzXy0tXG5cdFx0Y29uc3QgcmVzdWx0ID0gc3RhdGUuY29weV9cblx0XHQvLyBGaW5hbGl6ZSBhbGwgY2hpbGRyZW4gb2YgdGhlIGNvcHlcblx0XHQvLyBGb3Igc2V0cyB3ZSBjbG9uZSBiZWZvcmUgaXRlcmF0aW5nLCBvdGhlcndpc2Ugd2UgY2FuIGdldCBpbiBlbmRsZXNzIGxvb3AgZHVlIHRvIG1vZGlmeWluZyBkdXJpbmcgaXRlcmF0aW9uLCBzZWUgIzYyOFxuXHRcdC8vIFRvIHByZXNlcnZlIGluc2VydGlvbiBvcmRlciBpbiBhbGwgY2FzZXMgd2UgdGhlbiBjbGVhciB0aGUgc2V0XG5cdFx0Ly8gQW5kIHdlIGxldCBmaW5hbGl6ZVByb3BlcnR5IGtub3cgaXQgbmVlZHMgdG8gcmUtYWRkIG5vbi1kcmFmdCBjaGlsZHJlbiBiYWNrIHRvIHRoZSB0YXJnZXRcblx0XHRsZXQgcmVzdWx0RWFjaCA9IHJlc3VsdFxuXHRcdGxldCBpc1NldCA9IGZhbHNlXG5cdFx0aWYgKHN0YXRlLnR5cGVfID09PSBBcmNoVHlwZS5TZXQpIHtcblx0XHRcdHJlc3VsdEVhY2ggPSBuZXcgU2V0KHJlc3VsdClcblx0XHRcdHJlc3VsdC5jbGVhcigpXG5cdFx0XHRpc1NldCA9IHRydWVcblx0XHR9XG5cdFx0ZWFjaChyZXN1bHRFYWNoLCAoa2V5LCBjaGlsZFZhbHVlKSA9XHUwMDNlXG5cdFx0XHRmaW5hbGl6ZVByb3BlcnR5KHJvb3RTY29wZSwgc3RhdGUsIHJlc3VsdCwga2V5LCBjaGlsZFZhbHVlLCBwYXRoLCBpc1NldClcblx0XHQpXG5cdFx0Ly8gZXZlcnl0aGluZyBpbnNpZGUgaXMgZnJvemVuLCB3ZSBjYW4gZnJlZXplIGhlcmVcblx0XHRtYXliZUZyZWV6ZShyb290U2NvcGUsIHJlc3VsdCwgZmFsc2UpXG5cdFx0Ly8gZmlyc3QgdGltZSBmaW5hbGl6aW5nLCBsZXQncyBjcmVhdGUgdGhvc2UgcGF0Y2hlc1xuXHRcdGlmIChwYXRoIFx1MDAyNlx1MDAyNiByb290U2NvcGUucGF0Y2hlc18pIHtcblx0XHRcdGdldFBsdWdpbihcIlBhdGNoZXNcIikuZ2VuZXJhdGVQYXRjaGVzXyhcblx0XHRcdFx0c3RhdGUsXG5cdFx0XHRcdHBhdGgsXG5cdFx0XHRcdHJvb3RTY29wZS5wYXRjaGVzXyxcblx0XHRcdFx0cm9vdFNjb3BlLmludmVyc2VQYXRjaGVzXyFcblx0XHRcdClcblx0XHR9XG5cdH1cblx0cmV0dXJuIHN0YXRlLmNvcHlfXG59XG5cbmZ1bmN0aW9uIGZpbmFsaXplUHJvcGVydHkoXG5cdHJvb3RTY29wZTogSW1tZXJTY29wZSxcblx0cGFyZW50U3RhdGU6IHVuZGVmaW5lZCB8IEltbWVyU3RhdGUsXG5cdHRhcmdldE9iamVjdDogYW55LFxuXHRwcm9wOiBzdHJpbmcgfCBudW1iZXIsXG5cdGNoaWxkVmFsdWU6IGFueSxcblx0cm9vdFBhdGg/OiBQYXRjaFBhdGgsXG5cdHRhcmdldElzU2V0PzogYm9vbGVhblxuKSB7XG5cdGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgXHUwMDI2XHUwMDI2IGNoaWxkVmFsdWUgPT09IHRhcmdldE9iamVjdClcblx0XHRkaWUoNSlcblx0aWYgKGlzRHJhZnQoY2hpbGRWYWx1ZSkpIHtcblx0XHRjb25zdCBwYXRoID1cblx0XHRcdHJvb3RQYXRoIFx1MDAyNlx1MDAyNlxuXHRcdFx0cGFyZW50U3RhdGUgXHUwMDI2XHUwMDI2XG5cdFx0XHRwYXJlbnRTdGF0ZSEudHlwZV8gIT09IEFyY2hUeXBlLlNldCBcdTAwMjZcdTAwMjYgLy8gU2V0IG9iamVjdHMgYXJlIGF0b21pYyBzaW5jZSB0aGV5IGhhdmUgbm8ga2V5cy5cblx0XHRcdCFoYXMoKHBhcmVudFN0YXRlIGFzIEV4Y2x1ZGVcdTAwM2NJbW1lclN0YXRlLCBTZXRTdGF0ZVx1MDAzZSkuYXNzaWduZWRfISwgcHJvcCkgLy8gU2tpcCBkZWVwIHBhdGNoZXMgZm9yIGFzc2lnbmVkIGtleXMuXG5cdFx0XHRcdD8gcm9vdFBhdGghLmNvbmNhdChwcm9wKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZFxuXHRcdC8vIERyYWZ0cyBvd25lZCBieSBgc2NvcGVgIGFyZSBmaW5hbGl6ZWQgaGVyZS5cblx0XHRjb25zdCByZXMgPSBmaW5hbGl6ZShyb290U2NvcGUsIGNoaWxkVmFsdWUsIHBhdGgpXG5cdFx0c2V0KHRhcmdldE9iamVjdCwgcHJvcCwgcmVzKVxuXHRcdC8vIERyYWZ0cyBmcm9tIGFub3RoZXIgc2NvcGUgbXVzdCBwcmV2ZW50ZWQgdG8gYmUgZnJvemVuXG5cdFx0Ly8gaWYgd2UgZ290IGEgZHJhZnQgYmFjayBmcm9tIGZpbmFsaXplLCB3ZSdyZSBpbiBhIG5lc3RlZCBwcm9kdWNlIGFuZCBzaG91bGRuJ3QgZnJlZXplXG5cdFx0aWYgKGlzRHJhZnQocmVzKSkge1xuXHRcdFx0cm9vdFNjb3BlLmNhbkF1dG9GcmVlemVfID0gZmFsc2Vcblx0XHR9IGVsc2UgcmV0dXJuXG5cdH0gZWxzZSBpZiAodGFyZ2V0SXNTZXQpIHtcblx0XHR0YXJnZXRPYmplY3QuYWRkKGNoaWxkVmFsdWUpXG5cdH1cblx0Ly8gU2VhcmNoIG5ldyBvYmplY3RzIGZvciB1bmZpbmFsaXplZCBkcmFmdHMuIEZyb3plbiBvYmplY3RzIHNob3VsZCBuZXZlciBjb250YWluIGRyYWZ0cy5cblx0aWYgKGlzRHJhZnRhYmxlKGNoaWxkVmFsdWUpIFx1MDAyNlx1MDAyNiAhaXNGcm96ZW4oY2hpbGRWYWx1ZSkpIHtcblx0XHRpZiAoIXJvb3RTY29wZS5pbW1lcl8uYXV0b0ZyZWV6ZV8gXHUwMDI2XHUwMDI2IHJvb3RTY29wZS51bmZpbmFsaXplZERyYWZ0c18gXHUwMDNjIDEpIHtcblx0XHRcdC8vIG9wdGltaXphdGlvbjogaWYgYW4gb2JqZWN0IGlzIG5vdCBhIGRyYWZ0LCBhbmQgd2UgZG9uJ3QgaGF2ZSB0b1xuXHRcdFx0Ly8gZGVlcGZyZWV6ZSBldmVyeXRoaW5nLCBhbmQgd2UgYXJlIHN1cmUgdGhhdCBubyBkcmFmdHMgYXJlIGxlZnQgaW4gdGhlIHJlbWFpbmluZyBvYmplY3Rcblx0XHRcdC8vIGNhdXNlIHdlIHNhdyBhbmQgZmluYWxpemVkIGFsbCBkcmFmdHMgYWxyZWFkeTsgd2UgY2FuIHN0b3AgdmlzaXRpbmcgdGhlIHJlc3Qgb2YgdGhlIHRyZWUuXG5cdFx0XHQvLyBUaGlzIGJlbmVmaXRzIGVzcGVjaWFsbHkgYWRkaW5nIGxhcmdlIGRhdGEgdHJlZSdzIHdpdGhvdXQgZnVydGhlciBwcm9jZXNzaW5nLlxuXHRcdFx0Ly8gU2VlIGFkZC1kYXRhLmpzIHBlcmYgdGVzdFxuXHRcdFx0cmV0dXJuXG5cdFx0fVxuXHRcdGZpbmFsaXplKHJvb3RTY29wZSwgY2hpbGRWYWx1ZSlcblx0XHQvLyBJbW1lciBkZWVwIGZyZWV6ZXMgcGxhaW4gb2JqZWN0cywgc28gaWYgdGhlcmUgaXMgbm8gcGFyZW50IHN0YXRlLCB3ZSBmcmVlemUgYXMgd2VsbFxuXHRcdC8vIFBlciAjNTkwLCB3ZSBuZXZlciBmcmVlemUgc3ltYm9saWMgcHJvcGVydGllcy4gSnVzdCB0byBtYWtlIHN1cmUgZG9uJ3QgYWNjaWRlbnRhbGx5IGludGVyZmVyZVxuXHRcdC8vIHdpdGggb3RoZXIgZnJhbWV3b3Jrcy5cblx0XHRpZiAoXG5cdFx0XHQoIXBhcmVudFN0YXRlIHx8ICFwYXJlbnRTdGF0ZS5zY29wZV8ucGFyZW50XykgXHUwMDI2XHUwMDI2XG5cdFx0XHR0eXBlb2YgcHJvcCAhPT0gXCJzeW1ib2xcIiBcdTAwMjZcdTAwMjZcblx0XHRcdE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0YXJnZXRPYmplY3QsIHByb3ApXG5cdFx0KVxuXHRcdFx0bWF5YmVGcmVlemUocm9vdFNjb3BlLCBjaGlsZFZhbHVlKVxuXHR9XG59XG5cbmZ1bmN0aW9uIG1heWJlRnJlZXplKHNjb3BlOiBJbW1lclNjb3BlLCB2YWx1ZTogYW55LCBkZWVwID0gZmFsc2UpIHtcblx0Ly8gd2UgbmV2ZXIgZnJlZXplIGZvciBhIG5vbi1yb290IHNjb3BlOyBhcyBpdCB3b3VsZCBwcmV2ZW50IHBydW5pbmcgZm9yIGRyYWZ0cyBpbnNpZGUgd3JhcHBpbmcgb2JqZWN0c1xuXHRpZiAoIXNjb3BlLnBhcmVudF8gXHUwMDI2XHUwMDI2IHNjb3BlLmltbWVyXy5hdXRvRnJlZXplXyBcdTAwMjZcdTAwMjYgc2NvcGUuY2FuQXV0b0ZyZWV6ZV8pIHtcblx0XHRmcmVlemUodmFsdWUsIGRlZXApXG5cdH1cbn1cbiIsICJpbXBvcnQge1xuXHRlYWNoLFxuXHRoYXMsXG5cdGlzLFxuXHRpc0RyYWZ0YWJsZSxcblx0c2hhbGxvd0NvcHksXG5cdGxhdGVzdCxcblx0SW1tZXJCYXNlU3RhdGUsXG5cdEltbWVyU3RhdGUsXG5cdERyYWZ0ZWQsXG5cdEFueU9iamVjdCxcblx0QW55QXJyYXksXG5cdE9iamVjdGlzaCxcblx0Z2V0Q3VycmVudFNjb3BlLFxuXHRnZXRQcm90b3R5cGVPZixcblx0RFJBRlRfU1RBVEUsXG5cdGRpZSxcblx0Y3JlYXRlUHJveHksXG5cdEFyY2hUeXBlLFxuXHRJbW1lclNjb3BlXG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbmludGVyZmFjZSBQcm94eUJhc2VTdGF0ZSBleHRlbmRzIEltbWVyQmFzZVN0YXRlIHtcblx0YXNzaWduZWRfOiB7XG5cdFx0W3Byb3BlcnR5OiBzdHJpbmddOiBib29sZWFuXG5cdH1cblx0cGFyZW50Xz86IEltbWVyU3RhdGVcblx0cmV2b2tlXygpOiB2b2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJveHlPYmplY3RTdGF0ZSBleHRlbmRzIFByb3h5QmFzZVN0YXRlIHtcblx0dHlwZV86IEFyY2hUeXBlLk9iamVjdFxuXHRiYXNlXzogYW55XG5cdGNvcHlfOiBhbnlcblx0ZHJhZnRfOiBEcmFmdGVkXHUwMDNjQW55T2JqZWN0LCBQcm94eU9iamVjdFN0YXRlXHUwMDNlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJveHlBcnJheVN0YXRlIGV4dGVuZHMgUHJveHlCYXNlU3RhdGUge1xuXHR0eXBlXzogQXJjaFR5cGUuQXJyYXlcblx0YmFzZV86IEFueUFycmF5XG5cdGNvcHlfOiBBbnlBcnJheSB8IG51bGxcblx0ZHJhZnRfOiBEcmFmdGVkXHUwMDNjQW55QXJyYXksIFByb3h5QXJyYXlTdGF0ZVx1MDAzZVxufVxuXG50eXBlIFByb3h5U3RhdGUgPSBQcm94eU9iamVjdFN0YXRlIHwgUHJveHlBcnJheVN0YXRlXG5cbi8qKlxuICogUmV0dXJucyBhIG5ldyBkcmFmdCBvZiB0aGUgYGJhc2VgIG9iamVjdC5cbiAqXG4gKiBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBwYXJlbnQgZHJhZnQtc3RhdGUgKHVzZWQgaW50ZXJuYWxseSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm94eVByb3h5XHUwMDNjVCBleHRlbmRzIE9iamVjdGlzaFx1MDAzZShcblx0YmFzZTogVCxcblx0cGFyZW50PzogSW1tZXJTdGF0ZVxuKTogRHJhZnRlZFx1MDAzY1QsIFByb3h5U3RhdGVcdTAwM2Uge1xuXHRjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShiYXNlKVxuXHRjb25zdCBzdGF0ZTogUHJveHlTdGF0ZSA9IHtcblx0XHR0eXBlXzogaXNBcnJheSA/IEFyY2hUeXBlLkFycmF5IDogKEFyY2hUeXBlLk9iamVjdCBhcyBhbnkpLFxuXHRcdC8vIFRyYWNrIHdoaWNoIHByb2R1Y2UgY2FsbCB0aGlzIGlzIGFzc29jaWF0ZWQgd2l0aC5cblx0XHRzY29wZV86IHBhcmVudCA/IHBhcmVudC5zY29wZV8gOiBnZXRDdXJyZW50U2NvcGUoKSEsXG5cdFx0Ly8gVHJ1ZSBmb3IgYm90aCBzaGFsbG93IGFuZCBkZWVwIGNoYW5nZXMuXG5cdFx0bW9kaWZpZWRfOiBmYWxzZSxcblx0XHQvLyBVc2VkIGR1cmluZyBmaW5hbGl6YXRpb24uXG5cdFx0ZmluYWxpemVkXzogZmFsc2UsXG5cdFx0Ly8gVHJhY2sgd2hpY2ggcHJvcGVydGllcyBoYXZlIGJlZW4gYXNzaWduZWQgKHRydWUpIG9yIGRlbGV0ZWQgKGZhbHNlKS5cblx0XHRhc3NpZ25lZF86IHt9LFxuXHRcdC8vIFRoZSBwYXJlbnQgZHJhZnQgc3RhdGUuXG5cdFx0cGFyZW50XzogcGFyZW50LFxuXHRcdC8vIFRoZSBiYXNlIHN0YXRlLlxuXHRcdGJhc2VfOiBiYXNlLFxuXHRcdC8vIFRoZSBiYXNlIHByb3h5LlxuXHRcdGRyYWZ0XzogbnVsbCBhcyBhbnksIC8vIHNldCBiZWxvd1xuXHRcdC8vIFRoZSBiYXNlIGNvcHkgd2l0aCBhbnkgdXBkYXRlZCB2YWx1ZXMuXG5cdFx0Y29weV86IG51bGwsXG5cdFx0Ly8gQ2FsbGVkIGJ5IHRoZSBgcHJvZHVjZWAgZnVuY3Rpb24uXG5cdFx0cmV2b2tlXzogbnVsbCBhcyBhbnksXG5cdFx0aXNNYW51YWxfOiBmYWxzZVxuXHR9XG5cblx0Ly8gdGhlIHRyYXBzIG11c3QgdGFyZ2V0IHNvbWV0aGluZywgYSBiaXQgbGlrZSB0aGUgJ3JlYWwnIGJhc2UuXG5cdC8vIGJ1dCBhbHNvLCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gZGV0ZXJtaW5lIGZyb20gdGhlIHRhcmdldCB3aGF0IHRoZSByZWxldmFudCBzdGF0ZSBpc1xuXHQvLyAodG8gYXZvaWQgY3JlYXRpbmcgdHJhcHMgcGVyIGluc3RhbmNlIHRvIGNhcHR1cmUgdGhlIHN0YXRlIGluIGNsb3N1cmUsXG5cdC8vIGFuZCB0byBhdm9pZCBjcmVhdGluZyB3ZWlyZCBoaWRkZW4gcHJvcGVydGllcyBhcyB3ZWxsKVxuXHQvLyBTbyB0aGUgdHJpY2sgaXMgdG8gdXNlICdzdGF0ZScgYXMgdGhlIGFjdHVhbCAndGFyZ2V0JyEgKGFuZCBtYWtlIHN1cmUgd2UgaW50ZXJjZXB0IGV2ZXJ5dGhpbmcpXG5cdC8vIE5vdGUgdGhhdCBpbiB0aGUgY2FzZSBvZiBhbiBhcnJheSwgd2UgcHV0IHRoZSBzdGF0ZSBpbiBhbiBhcnJheSB0byBoYXZlIGJldHRlciBSZWZsZWN0IGRlZmF1bHRzIG9vdGJcblx0bGV0IHRhcmdldDogVCA9IHN0YXRlIGFzIGFueVxuXHRsZXQgdHJhcHM6IFByb3h5SGFuZGxlclx1MDAzY29iamVjdCB8IEFycmF5XHUwMDNjYW55XHUwMDNlXHUwMDNlID0gb2JqZWN0VHJhcHNcblx0aWYgKGlzQXJyYXkpIHtcblx0XHR0YXJnZXQgPSBbc3RhdGVdIGFzIGFueVxuXHRcdHRyYXBzID0gYXJyYXlUcmFwc1xuXHR9XG5cblx0Y29uc3Qge3Jldm9rZSwgcHJveHl9ID0gUHJveHkucmV2b2NhYmxlKHRhcmdldCwgdHJhcHMpXG5cdHN0YXRlLmRyYWZ0XyA9IHByb3h5IGFzIGFueVxuXHRzdGF0ZS5yZXZva2VfID0gcmV2b2tlXG5cdHJldHVybiBwcm94eSBhcyBhbnlcbn1cblxuLyoqXG4gKiBPYmplY3QgZHJhZnRzXG4gKi9cbmV4cG9ydCBjb25zdCBvYmplY3RUcmFwczogUHJveHlIYW5kbGVyXHUwMDNjUHJveHlTdGF0ZVx1MDAzZSA9IHtcblx0Z2V0KHN0YXRlLCBwcm9wKSB7XG5cdFx0aWYgKHByb3AgPT09IERSQUZUX1NUQVRFKSByZXR1cm4gc3RhdGVcblxuXHRcdGNvbnN0IHNvdXJjZSA9IGxhdGVzdChzdGF0ZSlcblx0XHRpZiAoIWhhcyhzb3VyY2UsIHByb3ApKSB7XG5cdFx0XHQvLyBub24tZXhpc3Rpbmcgb3Igbm9uLW93biBwcm9wZXJ0eS4uLlxuXHRcdFx0cmV0dXJuIHJlYWRQcm9wRnJvbVByb3RvKHN0YXRlLCBzb3VyY2UsIHByb3ApXG5cdFx0fVxuXHRcdGNvbnN0IHZhbHVlID0gc291cmNlW3Byb3BdXG5cdFx0aWYgKHN0YXRlLmZpbmFsaXplZF8gfHwgIWlzRHJhZnRhYmxlKHZhbHVlKSkge1xuXHRcdFx0cmV0dXJuIHZhbHVlXG5cdFx0fVxuXHRcdC8vIENoZWNrIGZvciBleGlzdGluZyBkcmFmdCBpbiBtb2RpZmllZCBzdGF0ZS5cblx0XHQvLyBBc3NpZ25lZCB2YWx1ZXMgYXJlIG5ldmVyIGRyYWZ0ZWQuIFRoaXMgY2F0Y2hlcyBhbnkgZHJhZnRzIHdlIGNyZWF0ZWQsIHRvby5cblx0XHRpZiAodmFsdWUgPT09IHBlZWsoc3RhdGUuYmFzZV8sIHByb3ApKSB7XG5cdFx0XHRwcmVwYXJlQ29weShzdGF0ZSlcblx0XHRcdHJldHVybiAoc3RhdGUuY29weV8hW3Byb3AgYXMgYW55XSA9IGNyZWF0ZVByb3h5KHZhbHVlLCBzdGF0ZSkpXG5cdFx0fVxuXHRcdHJldHVybiB2YWx1ZVxuXHR9LFxuXHRoYXMoc3RhdGUsIHByb3ApIHtcblx0XHRyZXR1cm4gcHJvcCBpbiBsYXRlc3Qoc3RhdGUpXG5cdH0sXG5cdG93bktleXMoc3RhdGUpIHtcblx0XHRyZXR1cm4gUmVmbGVjdC5vd25LZXlzKGxhdGVzdChzdGF0ZSkpXG5cdH0sXG5cdHNldChcblx0XHRzdGF0ZTogUHJveHlPYmplY3RTdGF0ZSxcblx0XHRwcm9wOiBzdHJpbmcgLyogc3RyaWN0bHkgbm90LCBidXQgaGVscHMgVFMgKi8sXG5cdFx0dmFsdWVcblx0KSB7XG5cdFx0Y29uc3QgZGVzYyA9IGdldERlc2NyaXB0b3JGcm9tUHJvdG8obGF0ZXN0KHN0YXRlKSwgcHJvcClcblx0XHRpZiAoZGVzYz8uc2V0KSB7XG5cdFx0XHQvLyBzcGVjaWFsIGNhc2U6IGlmIHRoaXMgd3JpdGUgaXMgY2FwdHVyZWQgYnkgYSBzZXR0ZXIsIHdlIGhhdmVcblx0XHRcdC8vIHRvIHRyaWdnZXIgaXQgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG5cdFx0XHRkZXNjLnNldC5jYWxsKHN0YXRlLmRyYWZ0XywgdmFsdWUpXG5cdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdH1cblx0XHRpZiAoIXN0YXRlLm1vZGlmaWVkXykge1xuXHRcdFx0Ly8gdGhlIGxhc3QgY2hlY2sgaXMgYmVjYXVzZSB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggc2V0dGluZyBhIG5vbi1leGlzdGluZyB0byB1bmRlZmluZWQgKHdoaWNoIGlzIGEgY2hhbmdlKVxuXHRcdFx0Ly8gZnJvbSBzZXR0aW5nIGFuIGV4aXN0aW5nIHByb3BlcnR5IHdpdGggdmFsdWUgdW5kZWZpbmVkIHRvIHVuZGVmaW5lZCAod2hpY2ggaXMgbm90IGEgY2hhbmdlKVxuXHRcdFx0Y29uc3QgY3VycmVudCA9IHBlZWsobGF0ZXN0KHN0YXRlKSwgcHJvcClcblx0XHRcdC8vIHNwZWNpYWwgY2FzZSwgaWYgd2UgYXNzaWduaW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSB0byBhIGRyYWZ0LCB3ZSBjYW4gaWdub3JlIHRoZSBhc3NpZ25tZW50XG5cdFx0XHRjb25zdCBjdXJyZW50U3RhdGU6IFByb3h5T2JqZWN0U3RhdGUgPSBjdXJyZW50Py5bRFJBRlRfU1RBVEVdXG5cdFx0XHRpZiAoY3VycmVudFN0YXRlIFx1MDAyNlx1MDAyNiBjdXJyZW50U3RhdGUuYmFzZV8gPT09IHZhbHVlKSB7XG5cdFx0XHRcdHN0YXRlLmNvcHlfIVtwcm9wXSA9IHZhbHVlXG5cdFx0XHRcdHN0YXRlLmFzc2lnbmVkX1twcm9wXSA9IGZhbHNlXG5cdFx0XHRcdHJldHVybiB0cnVlXG5cdFx0XHR9XG5cdFx0XHRpZiAoaXModmFsdWUsIGN1cnJlbnQpIFx1MDAyNlx1MDAyNiAodmFsdWUgIT09IHVuZGVmaW5lZCB8fCBoYXMoc3RhdGUuYmFzZV8sIHByb3ApKSlcblx0XHRcdFx0cmV0dXJuIHRydWVcblx0XHRcdHByZXBhcmVDb3B5KHN0YXRlKVxuXHRcdFx0bWFya0NoYW5nZWQoc3RhdGUpXG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0KHN0YXRlLmNvcHlfIVtwcm9wXSA9PT0gdmFsdWUgXHUwMDI2XHUwMDI2XG5cdFx0XHRcdC8vIHNwZWNpYWwgY2FzZTogaGFuZGxlIG5ldyBwcm9wcyB3aXRoIHZhbHVlICd1bmRlZmluZWQnXG5cdFx0XHRcdCh2YWx1ZSAhPT0gdW5kZWZpbmVkIHx8IHByb3AgaW4gc3RhdGUuY29weV8pKSB8fFxuXHRcdFx0Ly8gc3BlY2lhbCBjYXNlOiBOYU5cblx0XHRcdChOdW1iZXIuaXNOYU4odmFsdWUpIFx1MDAyNlx1MDAyNiBOdW1iZXIuaXNOYU4oc3RhdGUuY29weV8hW3Byb3BdKSlcblx0XHQpXG5cdFx0XHRyZXR1cm4gdHJ1ZVxuXG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHN0YXRlLmNvcHlfIVtwcm9wXSA9IHZhbHVlXG5cdFx0c3RhdGUuYXNzaWduZWRfW3Byb3BdID0gdHJ1ZVxuXHRcdHJldHVybiB0cnVlXG5cdH0sXG5cdGRlbGV0ZVByb3BlcnR5KHN0YXRlLCBwcm9wOiBzdHJpbmcpIHtcblx0XHQvLyBUaGUgYHVuZGVmaW5lZGAgY2hlY2sgaXMgYSBmYXN0IHBhdGggZm9yIHByZS1leGlzdGluZyBrZXlzLlxuXHRcdGlmIChwZWVrKHN0YXRlLmJhc2VfLCBwcm9wKSAhPT0gdW5kZWZpbmVkIHx8IHByb3AgaW4gc3RhdGUuYmFzZV8pIHtcblx0XHRcdHN0YXRlLmFzc2lnbmVkX1twcm9wXSA9IGZhbHNlXG5cdFx0XHRwcmVwYXJlQ29weShzdGF0ZSlcblx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBpZiBhbiBvcmlnaW5hbGx5IG5vdCBhc3NpZ25lZCBwcm9wZXJ0eSB3YXMgZGVsZXRlZFxuXHRcdFx0ZGVsZXRlIHN0YXRlLmFzc2lnbmVkX1twcm9wXVxuXHRcdH1cblx0XHRpZiAoc3RhdGUuY29weV8pIHtcblx0XHRcdGRlbGV0ZSBzdGF0ZS5jb3B5X1twcm9wXVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZVxuXHR9LFxuXHQvLyBOb3RlOiBXZSBuZXZlciBjb2VyY2UgYGRlc2MudmFsdWVgIGludG8gYW4gSW1tZXIgZHJhZnQsIGJlY2F1c2Ugd2UgY2FuJ3QgbWFrZVxuXHQvLyB0aGUgc2FtZSBndWFyYW50ZWUgaW4gRVM1IG1vZGUuXG5cdGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdGF0ZSwgcHJvcCkge1xuXHRcdGNvbnN0IG93bmVyID0gbGF0ZXN0KHN0YXRlKVxuXHRcdGNvbnN0IGRlc2MgPSBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvd25lciwgcHJvcClcblx0XHRpZiAoIWRlc2MpIHJldHVybiBkZXNjXG5cdFx0cmV0dXJuIHtcblx0XHRcdHdyaXRhYmxlOiB0cnVlLFxuXHRcdFx0Y29uZmlndXJhYmxlOiBzdGF0ZS50eXBlXyAhPT0gQXJjaFR5cGUuQXJyYXkgfHwgcHJvcCAhPT0gXCJsZW5ndGhcIixcblx0XHRcdGVudW1lcmFibGU6IGRlc2MuZW51bWVyYWJsZSxcblx0XHRcdHZhbHVlOiBvd25lcltwcm9wXVxuXHRcdH1cblx0fSxcblx0ZGVmaW5lUHJvcGVydHkoKSB7XG5cdFx0ZGllKDExKVxuXHR9LFxuXHRnZXRQcm90b3R5cGVPZihzdGF0ZSkge1xuXHRcdHJldHVybiBnZXRQcm90b3R5cGVPZihzdGF0ZS5iYXNlXylcblx0fSxcblx0c2V0UHJvdG90eXBlT2YoKSB7XG5cdFx0ZGllKDEyKVxuXHR9XG59XG5cbi8qKlxuICogQXJyYXkgZHJhZnRzXG4gKi9cblxuY29uc3QgYXJyYXlUcmFwczogUHJveHlIYW5kbGVyXHUwMDNjW1Byb3h5QXJyYXlTdGF0ZV1cdTAwM2UgPSB7fVxuZWFjaChvYmplY3RUcmFwcywgKGtleSwgZm4pID1cdTAwM2Uge1xuXHQvLyBAdHMtaWdub3JlXG5cdGFycmF5VHJhcHNba2V5XSA9IGZ1bmN0aW9uKCkge1xuXHRcdGFyZ3VtZW50c1swXSA9IGFyZ3VtZW50c1swXVswXVxuXHRcdHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG5cdH1cbn0pXG5hcnJheVRyYXBzLmRlbGV0ZVByb3BlcnR5ID0gZnVuY3Rpb24oc3RhdGUsIHByb3ApIHtcblx0aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiBcdTAwMjZcdTAwMjYgaXNOYU4ocGFyc2VJbnQocHJvcCBhcyBhbnkpKSlcblx0XHRkaWUoMTMpXG5cdC8vIEB0cy1pZ25vcmVcblx0cmV0dXJuIGFycmF5VHJhcHMuc2V0IS5jYWxsKHRoaXMsIHN0YXRlLCBwcm9wLCB1bmRlZmluZWQpXG59XG5hcnJheVRyYXBzLnNldCA9IGZ1bmN0aW9uKHN0YXRlLCBwcm9wLCB2YWx1ZSkge1xuXHRpZiAoXG5cdFx0cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiIFx1MDAyNlx1MDAyNlxuXHRcdHByb3AgIT09IFwibGVuZ3RoXCIgXHUwMDI2XHUwMDI2XG5cdFx0aXNOYU4ocGFyc2VJbnQocHJvcCBhcyBhbnkpKVxuXHQpXG5cdFx0ZGllKDE0KVxuXHRyZXR1cm4gb2JqZWN0VHJhcHMuc2V0IS5jYWxsKHRoaXMsIHN0YXRlWzBdLCBwcm9wLCB2YWx1ZSwgc3RhdGVbMF0pXG59XG5cbi8vIEFjY2VzcyBhIHByb3BlcnR5IHdpdGhvdXQgY3JlYXRpbmcgYW4gSW1tZXIgZHJhZnQuXG5mdW5jdGlvbiBwZWVrKGRyYWZ0OiBEcmFmdGVkLCBwcm9wOiBQcm9wZXJ0eUtleSkge1xuXHRjb25zdCBzdGF0ZSA9IGRyYWZ0W0RSQUZUX1NUQVRFXVxuXHRjb25zdCBzb3VyY2UgPSBzdGF0ZSA/IGxhdGVzdChzdGF0ZSkgOiBkcmFmdFxuXHRyZXR1cm4gc291cmNlW3Byb3BdXG59XG5cbmZ1bmN0aW9uIHJlYWRQcm9wRnJvbVByb3RvKHN0YXRlOiBJbW1lclN0YXRlLCBzb3VyY2U6IGFueSwgcHJvcDogUHJvcGVydHlLZXkpIHtcblx0Y29uc3QgZGVzYyA9IGdldERlc2NyaXB0b3JGcm9tUHJvdG8oc291cmNlLCBwcm9wKVxuXHRyZXR1cm4gZGVzY1xuXHRcdD8gYHZhbHVlYCBpbiBkZXNjXG5cdFx0XHQ/IGRlc2MudmFsdWVcblx0XHRcdDogLy8gVGhpcyBpcyBhIHZlcnkgc3BlY2lhbCBjYXNlLCBpZiB0aGUgcHJvcCBpcyBhIGdldHRlciBkZWZpbmVkIGJ5IHRoZVxuXHRcdFx0ICAvLyBwcm90b3R5cGUsIHdlIHNob3VsZCBpbnZva2UgaXQgd2l0aCB0aGUgZHJhZnQgYXMgY29udGV4dCFcblx0XHRcdCAgZGVzYy5nZXQ/LmNhbGwoc3RhdGUuZHJhZnRfKVxuXHRcdDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGdldERlc2NyaXB0b3JGcm9tUHJvdG8oXG5cdHNvdXJjZTogYW55LFxuXHRwcm9wOiBQcm9wZXJ0eUtleVxuKTogUHJvcGVydHlEZXNjcmlwdG9yIHwgdW5kZWZpbmVkIHtcblx0Ly8gJ2luJyBjaGVja3MgcHJvdG8hXG5cdGlmICghKHByb3AgaW4gc291cmNlKSkgcmV0dXJuIHVuZGVmaW5lZFxuXHRsZXQgcHJvdG8gPSBnZXRQcm90b3R5cGVPZihzb3VyY2UpXG5cdHdoaWxlIChwcm90bykge1xuXHRcdGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBwcm9wKVxuXHRcdGlmIChkZXNjKSByZXR1cm4gZGVzY1xuXHRcdHByb3RvID0gZ2V0UHJvdG90eXBlT2YocHJvdG8pXG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFya0NoYW5nZWQoc3RhdGU6IEltbWVyU3RhdGUpIHtcblx0aWYgKCFzdGF0ZS5tb2RpZmllZF8pIHtcblx0XHRzdGF0ZS5tb2RpZmllZF8gPSB0cnVlXG5cdFx0aWYgKHN0YXRlLnBhcmVudF8pIHtcblx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlLnBhcmVudF8pXG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlQ29weShzdGF0ZToge1xuXHRiYXNlXzogYW55XG5cdGNvcHlfOiBhbnlcblx0c2NvcGVfOiBJbW1lclNjb3BlXG59KSB7XG5cdGlmICghc3RhdGUuY29weV8pIHtcblx0XHRzdGF0ZS5jb3B5XyA9IHNoYWxsb3dDb3B5KFxuXHRcdFx0c3RhdGUuYmFzZV8sXG5cdFx0XHRzdGF0ZS5zY29wZV8uaW1tZXJfLnVzZVN0cmljdFNoYWxsb3dDb3B5X1xuXHRcdClcblx0fVxufVxuIiwgImltcG9ydCB7XG5cdElQcm9kdWNlV2l0aFBhdGNoZXMsXG5cdElQcm9kdWNlLFxuXHRJbW1lclN0YXRlLFxuXHREcmFmdGVkLFxuXHRpc0RyYWZ0YWJsZSxcblx0cHJvY2Vzc1Jlc3VsdCxcblx0UGF0Y2gsXG5cdE9iamVjdGlzaCxcblx0RFJBRlRfU1RBVEUsXG5cdERyYWZ0LFxuXHRQYXRjaExpc3RlbmVyLFxuXHRpc0RyYWZ0LFxuXHRpc01hcCxcblx0aXNTZXQsXG5cdGNyZWF0ZVByb3h5UHJveHksXG5cdGdldFBsdWdpbixcblx0ZGllLFxuXHRlbnRlclNjb3BlLFxuXHRyZXZva2VTY29wZSxcblx0bGVhdmVTY29wZSxcblx0dXNlUGF0Y2hlc0luU2NvcGUsXG5cdGdldEN1cnJlbnRTY29wZSxcblx0Tk9USElORyxcblx0ZnJlZXplLFxuXHRjdXJyZW50XG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbmludGVyZmFjZSBQcm9kdWNlcnNGbnMge1xuXHRwcm9kdWNlOiBJUHJvZHVjZVxuXHRwcm9kdWNlV2l0aFBhdGNoZXM6IElQcm9kdWNlV2l0aFBhdGNoZXNcbn1cblxuZXhwb3J0IHR5cGUgU3RyaWN0TW9kZSA9IGJvb2xlYW4gfCBcImNsYXNzX29ubHlcIjtcblxuZXhwb3J0IGNsYXNzIEltbWVyIGltcGxlbWVudHMgUHJvZHVjZXJzRm5zIHtcblx0YXV0b0ZyZWV6ZV86IGJvb2xlYW4gPSB0cnVlXG5cdHVzZVN0cmljdFNoYWxsb3dDb3B5XzogU3RyaWN0TW9kZSA9IGZhbHNlXG5cblx0Y29uc3RydWN0b3IoY29uZmlnPzoge1xuXHRcdGF1dG9GcmVlemU/OiBib29sZWFuXG5cdFx0dXNlU3RyaWN0U2hhbGxvd0NvcHk/OiBTdHJpY3RNb2RlXG5cdH0pIHtcblx0XHRpZiAodHlwZW9mIGNvbmZpZz8uYXV0b0ZyZWV6ZSA9PT0gXCJib29sZWFuXCIpXG5cdFx0XHR0aGlzLnNldEF1dG9GcmVlemUoY29uZmlnIS5hdXRvRnJlZXplKVxuXHRcdGlmICh0eXBlb2YgY29uZmlnPy51c2VTdHJpY3RTaGFsbG93Q29weSA9PT0gXCJib29sZWFuXCIpXG5cdFx0XHR0aGlzLnNldFVzZVN0cmljdFNoYWxsb3dDb3B5KGNvbmZpZyEudXNlU3RyaWN0U2hhbGxvd0NvcHkpXG5cdH1cblxuXHQvKipcblx0ICogVGhlIGBwcm9kdWNlYCBmdW5jdGlvbiB0YWtlcyBhIHZhbHVlIGFuZCBhIFwicmVjaXBlIGZ1bmN0aW9uXCIgKHdob3NlXG5cdCAqIHJldHVybiB2YWx1ZSBvZnRlbiBkZXBlbmRzIG9uIHRoZSBiYXNlIHN0YXRlKS4gVGhlIHJlY2lwZSBmdW5jdGlvbiBpc1xuXHQgKiBmcmVlIHRvIG11dGF0ZSBpdHMgZmlyc3QgYXJndW1lbnQgaG93ZXZlciBpdCB3YW50cy4gQWxsIG11dGF0aW9ucyBhcmVcblx0ICogb25seSBldmVyIGFwcGxpZWQgdG8gYSBfX2NvcHlfXyBvZiB0aGUgYmFzZSBzdGF0ZS5cblx0ICpcblx0ICogUGFzcyBvbmx5IGEgZnVuY3Rpb24gdG8gY3JlYXRlIGEgXCJjdXJyaWVkIHByb2R1Y2VyXCIgd2hpY2ggcmVsaWV2ZXMgeW91XG5cdCAqIGZyb20gcGFzc2luZyB0aGUgcmVjaXBlIGZ1bmN0aW9uIGV2ZXJ5IHRpbWUuXG5cdCAqXG5cdCAqIE9ubHkgcGxhaW4gb2JqZWN0cyBhbmQgYXJyYXlzIGFyZSBtYWRlIG11dGFibGUuIEFsbCBvdGhlciBvYmplY3RzIGFyZVxuXHQgKiBjb25zaWRlcmVkIHVuY29weWFibGUuXG5cdCAqXG5cdCAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gaXMgX19ib3VuZF9fIHRvIGl0cyBgSW1tZXJgIGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2FueX0gYmFzZSAtIHRoZSBpbml0aWFsIHN0YXRlXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IHJlY2lwZSAtIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgYSBwcm94eSBvZiB0aGUgYmFzZSBzdGF0ZSBhcyBmaXJzdCBhcmd1bWVudCBhbmQgd2hpY2ggY2FuIGJlIGZyZWVseSBtb2RpZmllZFxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXRjaExpc3RlbmVyIC0gb3B0aW9uYWwgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCB3aXRoIGFsbCB0aGUgcGF0Y2hlcyBwcm9kdWNlZCBoZXJlXG5cdCAqIEByZXR1cm5zIHthbnl9IGEgbmV3IHN0YXRlLCBvciB0aGUgaW5pdGlhbCBzdGF0ZSBpZiBub3RoaW5nIHdhcyBtb2RpZmllZFxuXHQgKi9cblx0cHJvZHVjZTogSVByb2R1Y2UgPSAoYmFzZTogYW55LCByZWNpcGU/OiBhbnksIHBhdGNoTGlzdGVuZXI/OiBhbnkpID1cdTAwM2Uge1xuXHRcdC8vIGN1cnJpZWQgaW52b2NhdGlvblxuXHRcdGlmICh0eXBlb2YgYmFzZSA9PT0gXCJmdW5jdGlvblwiIFx1MDAyNlx1MDAyNiB0eXBlb2YgcmVjaXBlICE9PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdGNvbnN0IGRlZmF1bHRCYXNlID0gcmVjaXBlXG5cdFx0XHRyZWNpcGUgPSBiYXNlXG5cblx0XHRcdGNvbnN0IHNlbGYgPSB0aGlzXG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24gY3VycmllZFByb2R1Y2UoXG5cdFx0XHRcdHRoaXM6IGFueSxcblx0XHRcdFx0YmFzZSA9IGRlZmF1bHRCYXNlLFxuXHRcdFx0XHQuLi5hcmdzOiBhbnlbXVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiBzZWxmLnByb2R1Y2UoYmFzZSwgKGRyYWZ0OiBEcmFmdGVkKSA9XHUwMDNlIHJlY2lwZS5jYWxsKHRoaXMsIGRyYWZ0LCAuLi5hcmdzKSkgLy8gcHJldHRpZXItaWdub3JlXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiByZWNpcGUgIT09IFwiZnVuY3Rpb25cIikgZGllKDYpXG5cdFx0aWYgKHBhdGNoTGlzdGVuZXIgIT09IHVuZGVmaW5lZCBcdTAwMjZcdTAwMjYgdHlwZW9mIHBhdGNoTGlzdGVuZXIgIT09IFwiZnVuY3Rpb25cIilcblx0XHRcdGRpZSg3KVxuXG5cdFx0bGV0IHJlc3VsdFxuXG5cdFx0Ly8gT25seSBwbGFpbiBvYmplY3RzLCBhcnJheXMsIGFuZCBcImltbWVyYWJsZSBjbGFzc2VzXCIgYXJlIGRyYWZ0ZWQuXG5cdFx0aWYgKGlzRHJhZnRhYmxlKGJhc2UpKSB7XG5cdFx0XHRjb25zdCBzY29wZSA9IGVudGVyU2NvcGUodGhpcylcblx0XHRcdGNvbnN0IHByb3h5ID0gY3JlYXRlUHJveHkoYmFzZSwgdW5kZWZpbmVkKVxuXHRcdFx0bGV0IGhhc0Vycm9yID0gdHJ1ZVxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cmVzdWx0ID0gcmVjaXBlKHByb3h5KVxuXHRcdFx0XHRoYXNFcnJvciA9IGZhbHNlXG5cdFx0XHR9IGZpbmFsbHkge1xuXHRcdFx0XHQvLyBmaW5hbGx5IGluc3RlYWQgb2YgY2F0Y2ggKyByZXRocm93IGJldHRlciBwcmVzZXJ2ZXMgb3JpZ2luYWwgc3RhY2tcblx0XHRcdFx0aWYgKGhhc0Vycm9yKSByZXZva2VTY29wZShzY29wZSlcblx0XHRcdFx0ZWxzZSBsZWF2ZVNjb3BlKHNjb3BlKVxuXHRcdFx0fVxuXHRcdFx0dXNlUGF0Y2hlc0luU2NvcGUoc2NvcGUsIHBhdGNoTGlzdGVuZXIpXG5cdFx0XHRyZXR1cm4gcHJvY2Vzc1Jlc3VsdChyZXN1bHQsIHNjb3BlKVxuXHRcdH0gZWxzZSBpZiAoIWJhc2UgfHwgdHlwZW9mIGJhc2UgIT09IFwib2JqZWN0XCIpIHtcblx0XHRcdHJlc3VsdCA9IHJlY2lwZShiYXNlKVxuXHRcdFx0aWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSByZXN1bHQgPSBiYXNlXG5cdFx0XHRpZiAocmVzdWx0ID09PSBOT1RISU5HKSByZXN1bHQgPSB1bmRlZmluZWRcblx0XHRcdGlmICh0aGlzLmF1dG9GcmVlemVfKSBmcmVlemUocmVzdWx0LCB0cnVlKVxuXHRcdFx0aWYgKHBhdGNoTGlzdGVuZXIpIHtcblx0XHRcdFx0Y29uc3QgcDogUGF0Y2hbXSA9IFtdXG5cdFx0XHRcdGNvbnN0IGlwOiBQYXRjaFtdID0gW11cblx0XHRcdFx0Z2V0UGx1Z2luKFwiUGF0Y2hlc1wiKS5nZW5lcmF0ZVJlcGxhY2VtZW50UGF0Y2hlc18oYmFzZSwgcmVzdWx0LCBwLCBpcClcblx0XHRcdFx0cGF0Y2hMaXN0ZW5lcihwLCBpcClcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHRcblx0XHR9IGVsc2UgZGllKDEsIGJhc2UpXG5cdH1cblxuXHRwcm9kdWNlV2l0aFBhdGNoZXM6IElQcm9kdWNlV2l0aFBhdGNoZXMgPSAoYmFzZTogYW55LCByZWNpcGU/OiBhbnkpOiBhbnkgPVx1MDAzZSB7XG5cdFx0Ly8gY3VycmllZCBpbnZvY2F0aW9uXG5cdFx0aWYgKHR5cGVvZiBiYXNlID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdHJldHVybiAoc3RhdGU6IGFueSwgLi4uYXJnczogYW55W10pID1cdTAwM2Vcblx0XHRcdFx0dGhpcy5wcm9kdWNlV2l0aFBhdGNoZXMoc3RhdGUsIChkcmFmdDogYW55KSA9XHUwMDNlIGJhc2UoZHJhZnQsIC4uLmFyZ3MpKVxuXHRcdH1cblxuXHRcdGxldCBwYXRjaGVzOiBQYXRjaFtdLCBpbnZlcnNlUGF0Y2hlczogUGF0Y2hbXVxuXHRcdGNvbnN0IHJlc3VsdCA9IHRoaXMucHJvZHVjZShiYXNlLCByZWNpcGUsIChwOiBQYXRjaFtdLCBpcDogUGF0Y2hbXSkgPVx1MDAzZSB7XG5cdFx0XHRwYXRjaGVzID0gcFxuXHRcdFx0aW52ZXJzZVBhdGNoZXMgPSBpcFxuXHRcdH0pXG5cdFx0cmV0dXJuIFtyZXN1bHQsIHBhdGNoZXMhLCBpbnZlcnNlUGF0Y2hlcyFdXG5cdH1cblxuXHRjcmVhdGVEcmFmdFx1MDAzY1QgZXh0ZW5kcyBPYmplY3Rpc2hcdTAwM2UoYmFzZTogVCk6IERyYWZ0XHUwMDNjVFx1MDAzZSB7XG5cdFx0aWYgKCFpc0RyYWZ0YWJsZShiYXNlKSkgZGllKDgpXG5cdFx0aWYgKGlzRHJhZnQoYmFzZSkpIGJhc2UgPSBjdXJyZW50KGJhc2UpXG5cdFx0Y29uc3Qgc2NvcGUgPSBlbnRlclNjb3BlKHRoaXMpXG5cdFx0Y29uc3QgcHJveHkgPSBjcmVhdGVQcm94eShiYXNlLCB1bmRlZmluZWQpXG5cdFx0cHJveHlbRFJBRlRfU1RBVEVdLmlzTWFudWFsXyA9IHRydWVcblx0XHRsZWF2ZVNjb3BlKHNjb3BlKVxuXHRcdHJldHVybiBwcm94eSBhcyBhbnlcblx0fVxuXG5cdGZpbmlzaERyYWZ0XHUwMDNjRCBleHRlbmRzIERyYWZ0XHUwMDNjYW55XHUwMDNlXHUwMDNlKFxuXHRcdGRyYWZ0OiBELFxuXHRcdHBhdGNoTGlzdGVuZXI/OiBQYXRjaExpc3RlbmVyXG5cdCk6IEQgZXh0ZW5kcyBEcmFmdFx1MDAzY2luZmVyIFRcdTAwM2UgPyBUIDogbmV2ZXIge1xuXHRcdGNvbnN0IHN0YXRlOiBJbW1lclN0YXRlID0gZHJhZnQgXHUwMDI2XHUwMDI2IChkcmFmdCBhcyBhbnkpW0RSQUZUX1NUQVRFXVxuXHRcdGlmICghc3RhdGUgfHwgIXN0YXRlLmlzTWFudWFsXykgZGllKDkpXG5cdFx0Y29uc3Qge3Njb3BlXzogc2NvcGV9ID0gc3RhdGVcblx0XHR1c2VQYXRjaGVzSW5TY29wZShzY29wZSwgcGF0Y2hMaXN0ZW5lcilcblx0XHRyZXR1cm4gcHJvY2Vzc1Jlc3VsdCh1bmRlZmluZWQsIHNjb3BlKVxuXHR9XG5cblx0LyoqXG5cdCAqIFBhc3MgdHJ1ZSB0byBhdXRvbWF0aWNhbGx5IGZyZWV6ZSBhbGwgY29waWVzIGNyZWF0ZWQgYnkgSW1tZXIuXG5cdCAqXG5cdCAqIEJ5IGRlZmF1bHQsIGF1dG8tZnJlZXppbmcgaXMgZW5hYmxlZC5cblx0ICovXG5cdHNldEF1dG9GcmVlemUodmFsdWU6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmF1dG9GcmVlemVfID0gdmFsdWVcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXNzIHRydWUgdG8gZW5hYmxlIHN0cmljdCBzaGFsbG93IGNvcHkuXG5cdCAqXG5cdCAqIEJ5IGRlZmF1bHQsIGltbWVyIGRvZXMgbm90IGNvcHkgdGhlIG9iamVjdCBkZXNjcmlwdG9ycyBzdWNoIGFzIGdldHRlciwgc2V0dGVyIGFuZCBub24tZW51bXJhYmxlIHByb3BlcnRpZXMuXG5cdCAqL1xuXHRzZXRVc2VTdHJpY3RTaGFsbG93Q29weSh2YWx1ZTogU3RyaWN0TW9kZSkge1xuXHRcdHRoaXMudXNlU3RyaWN0U2hhbGxvd0NvcHlfID0gdmFsdWVcblx0fVxuXG5cdGFwcGx5UGF0Y2hlc1x1MDAzY1QgZXh0ZW5kcyBPYmplY3Rpc2hcdTAwM2UoYmFzZTogVCwgcGF0Y2hlczogcmVhZG9ubHkgUGF0Y2hbXSk6IFQge1xuXHRcdC8vIElmIGEgcGF0Y2ggcmVwbGFjZXMgdGhlIGVudGlyZSBzdGF0ZSwgdGFrZSB0aGF0IHJlcGxhY2VtZW50IGFzIGJhc2Vcblx0XHQvLyBiZWZvcmUgYXBwbHlpbmcgcGF0Y2hlc1xuXHRcdGxldCBpOiBudW1iZXJcblx0XHRmb3IgKGkgPSBwYXRjaGVzLmxlbmd0aCAtIDE7IGkgXHUwMDNlPSAwOyBpLS0pIHtcblx0XHRcdGNvbnN0IHBhdGNoID0gcGF0Y2hlc1tpXVxuXHRcdFx0aWYgKHBhdGNoLnBhdGgubGVuZ3RoID09PSAwIFx1MDAyNlx1MDAyNiBwYXRjaC5vcCA9PT0gXCJyZXBsYWNlXCIpIHtcblx0XHRcdFx0YmFzZSA9IHBhdGNoLnZhbHVlXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIElmIHRoZXJlIHdhcyBhIHBhdGNoIHRoYXQgcmVwbGFjZWQgdGhlIGVudGlyZSBzdGF0ZSwgc3RhcnQgZnJvbSB0aGVcblx0XHQvLyBwYXRjaCBhZnRlciB0aGF0LlxuXHRcdGlmIChpIFx1MDAzZSAtMSkge1xuXHRcdFx0cGF0Y2hlcyA9IHBhdGNoZXMuc2xpY2UoaSArIDEpXG5cdFx0fVxuXG5cdFx0Y29uc3QgYXBwbHlQYXRjaGVzSW1wbCA9IGdldFBsdWdpbihcIlBhdGNoZXNcIikuYXBwbHlQYXRjaGVzX1xuXHRcdGlmIChpc0RyYWZ0KGJhc2UpKSB7XG5cdFx0XHQvLyBOLkI6IG5ldmVyIGhpdHMgaWYgc29tZSBwYXRjaCBhIHJlcGxhY2VtZW50LCBwYXRjaGVzIGFyZSBuZXZlciBkcmFmdHNcblx0XHRcdHJldHVybiBhcHBseVBhdGNoZXNJbXBsKGJhc2UsIHBhdGNoZXMpXG5cdFx0fVxuXHRcdC8vIE90aGVyd2lzZSwgcHJvZHVjZSBhIGNvcHkgb2YgdGhlIGJhc2Ugc3RhdGUuXG5cdFx0cmV0dXJuIHRoaXMucHJvZHVjZShiYXNlLCAoZHJhZnQ6IERyYWZ0ZWQpID1cdTAwM2Vcblx0XHRcdGFwcGx5UGF0Y2hlc0ltcGwoZHJhZnQsIHBhdGNoZXMpXG5cdFx0KVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm94eVx1MDAzY1QgZXh0ZW5kcyBPYmplY3Rpc2hcdTAwM2UoXG5cdHZhbHVlOiBULFxuXHRwYXJlbnQ/OiBJbW1lclN0YXRlXG4pOiBEcmFmdGVkXHUwMDNjVCwgSW1tZXJTdGF0ZVx1MDAzZSB7XG5cdC8vIHByZWNvbmRpdGlvbjogY3JlYXRlUHJveHkgc2hvdWxkIGJlIGd1YXJkZWQgYnkgaXNEcmFmdGFibGUsIHNvIHdlIGtub3cgd2UgY2FuIHNhZmVseSBkcmFmdFxuXHRjb25zdCBkcmFmdDogRHJhZnRlZCA9IGlzTWFwKHZhbHVlKVxuXHRcdD8gZ2V0UGx1Z2luKFwiTWFwU2V0XCIpLnByb3h5TWFwXyh2YWx1ZSwgcGFyZW50KVxuXHRcdDogaXNTZXQodmFsdWUpXG5cdFx0PyBnZXRQbHVnaW4oXCJNYXBTZXRcIikucHJveHlTZXRfKHZhbHVlLCBwYXJlbnQpXG5cdFx0OiBjcmVhdGVQcm94eVByb3h5KHZhbHVlLCBwYXJlbnQpXG5cblx0Y29uc3Qgc2NvcGUgPSBwYXJlbnQgPyBwYXJlbnQuc2NvcGVfIDogZ2V0Q3VycmVudFNjb3BlKClcblx0c2NvcGUuZHJhZnRzXy5wdXNoKGRyYWZ0KVxuXHRyZXR1cm4gZHJhZnRcbn1cbiIsICJpbXBvcnQge1xuXHRkaWUsXG5cdGlzRHJhZnQsXG5cdHNoYWxsb3dDb3B5LFxuXHRlYWNoLFxuXHREUkFGVF9TVEFURSxcblx0c2V0LFxuXHRJbW1lclN0YXRlLFxuXHRpc0RyYWZ0YWJsZSxcblx0aXNGcm96ZW5cbn0gZnJvbSBcIi4uL2ludGVybmFsXCJcblxuLyoqIFRha2VzIGEgc25hcHNob3Qgb2YgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYSBkcmFmdCBhbmQgZmluYWxpemVzIGl0IChidXQgd2l0aG91dCBmcmVlemluZykuIFRoaXMgaXMgYSBncmVhdCB1dGlsaXR5IHRvIHByaW50IHRoZSBjdXJyZW50IHN0YXRlIGR1cmluZyBkZWJ1Z2dpbmcgKG5vIFByb3hpZXMgaW4gdGhlIHdheSkuIFRoZSBvdXRwdXQgb2YgY3VycmVudCBjYW4gYWxzbyBiZSBzYWZlbHkgbGVha2VkIG91dHNpZGUgdGhlIHByb2R1Y2VyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN1cnJlbnRcdTAwM2NUXHUwMDNlKHZhbHVlOiBUKTogVFxuZXhwb3J0IGZ1bmN0aW9uIGN1cnJlbnQodmFsdWU6IGFueSk6IGFueSB7XG5cdGlmICghaXNEcmFmdCh2YWx1ZSkpIGRpZSgxMCwgdmFsdWUpXG5cdHJldHVybiBjdXJyZW50SW1wbCh2YWx1ZSlcbn1cblxuZnVuY3Rpb24gY3VycmVudEltcGwodmFsdWU6IGFueSk6IGFueSB7XG5cdGlmICghaXNEcmFmdGFibGUodmFsdWUpIHx8IGlzRnJvemVuKHZhbHVlKSkgcmV0dXJuIHZhbHVlXG5cdGNvbnN0IHN0YXRlOiBJbW1lclN0YXRlIHwgdW5kZWZpbmVkID0gdmFsdWVbRFJBRlRfU1RBVEVdXG5cdGxldCBjb3B5OiBhbnlcblx0aWYgKHN0YXRlKSB7XG5cdFx0aWYgKCFzdGF0ZS5tb2RpZmllZF8pIHJldHVybiBzdGF0ZS5iYXNlX1xuXHRcdC8vIE9wdGltaXphdGlvbjogYXZvaWQgZ2VuZXJhdGluZyBuZXcgZHJhZnRzIGR1cmluZyBjb3B5aW5nXG5cdFx0c3RhdGUuZmluYWxpemVkXyA9IHRydWVcblx0XHRjb3B5ID0gc2hhbGxvd0NvcHkodmFsdWUsIHN0YXRlLnNjb3BlXy5pbW1lcl8udXNlU3RyaWN0U2hhbGxvd0NvcHlfKVxuXHR9IGVsc2Uge1xuXHRcdGNvcHkgPSBzaGFsbG93Q29weSh2YWx1ZSwgdHJ1ZSlcblx0fVxuXHQvLyByZWN1cnNlXG5cdGVhY2goY29weSwgKGtleSwgY2hpbGRWYWx1ZSkgPVx1MDAzZSB7XG5cdFx0c2V0KGNvcHksIGtleSwgY3VycmVudEltcGwoY2hpbGRWYWx1ZSkpXG5cdH0pXG5cdGlmIChzdGF0ZSkge1xuXHRcdHN0YXRlLmZpbmFsaXplZF8gPSBmYWxzZVxuXHR9XG5cdHJldHVybiBjb3B5XG59XG4iLCAiaW1wb3J0IHtpbW1lcmFibGV9IGZyb20gXCIuLi9pbW1lclwiXG5pbXBvcnQge1xuXHRJbW1lclN0YXRlLFxuXHRQYXRjaCxcblx0U2V0U3RhdGUsXG5cdFByb3h5QXJyYXlTdGF0ZSxcblx0TWFwU3RhdGUsXG5cdFByb3h5T2JqZWN0U3RhdGUsXG5cdFBhdGNoUGF0aCxcblx0Z2V0LFxuXHRlYWNoLFxuXHRoYXMsXG5cdGdldEFyY2h0eXBlLFxuXHRnZXRQcm90b3R5cGVPZixcblx0aXNTZXQsXG5cdGlzTWFwLFxuXHRsb2FkUGx1Z2luLFxuXHRBcmNoVHlwZSxcblx0ZGllLFxuXHRpc0RyYWZ0LFxuXHRpc0RyYWZ0YWJsZSxcblx0Tk9USElORyxcblx0ZXJyb3JzXG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVQYXRjaGVzKCkge1xuXHRjb25zdCBlcnJvck9mZnNldCA9IDE2XG5cdGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcblx0XHRlcnJvcnMucHVzaChcblx0XHRcdCdTZXRzIGNhbm5vdCBoYXZlIFwicmVwbGFjZVwiIHBhdGNoZXMuJyxcblx0XHRcdGZ1bmN0aW9uKG9wOiBzdHJpbmcpIHtcblx0XHRcdFx0cmV0dXJuIFwiVW5zdXBwb3J0ZWQgcGF0Y2ggb3BlcmF0aW9uOiBcIiArIG9wXG5cdFx0XHR9LFxuXHRcdFx0ZnVuY3Rpb24ocGF0aDogc3RyaW5nKSB7XG5cdFx0XHRcdHJldHVybiBcIkNhbm5vdCBhcHBseSBwYXRjaCwgcGF0aCBkb2Vzbid0IHJlc29sdmU6IFwiICsgcGF0aFxuXHRcdFx0fSxcblx0XHRcdFwiUGF0Y2hpbmcgcmVzZXJ2ZWQgYXR0cmlidXRlcyBsaWtlIF9fcHJvdG9fXywgcHJvdG90eXBlIGFuZCBjb25zdHJ1Y3RvciBpcyBub3QgYWxsb3dlZFwiXG5cdFx0KVxuXHR9XG5cblx0Y29uc3QgUkVQTEFDRSA9IFwicmVwbGFjZVwiXG5cdGNvbnN0IEFERCA9IFwiYWRkXCJcblx0Y29uc3QgUkVNT1ZFID0gXCJyZW1vdmVcIlxuXG5cdGZ1bmN0aW9uIGdlbmVyYXRlUGF0Y2hlc18oXG5cdFx0c3RhdGU6IEltbWVyU3RhdGUsXG5cdFx0YmFzZVBhdGg6IFBhdGNoUGF0aCxcblx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdCk6IHZvaWQge1xuXHRcdHN3aXRjaCAoc3RhdGUudHlwZV8pIHtcblx0XHRcdGNhc2UgQXJjaFR5cGUuT2JqZWN0OlxuXHRcdFx0Y2FzZSBBcmNoVHlwZS5NYXA6XG5cdFx0XHRcdHJldHVybiBnZW5lcmF0ZVBhdGNoZXNGcm9tQXNzaWduZWQoXG5cdFx0XHRcdFx0c3RhdGUsXG5cdFx0XHRcdFx0YmFzZVBhdGgsXG5cdFx0XHRcdFx0cGF0Y2hlcyxcblx0XHRcdFx0XHRpbnZlcnNlUGF0Y2hlc1xuXHRcdFx0XHQpXG5cdFx0XHRjYXNlIEFyY2hUeXBlLkFycmF5OlxuXHRcdFx0XHRyZXR1cm4gZ2VuZXJhdGVBcnJheVBhdGNoZXMoc3RhdGUsIGJhc2VQYXRoLCBwYXRjaGVzLCBpbnZlcnNlUGF0Y2hlcylcblx0XHRcdGNhc2UgQXJjaFR5cGUuU2V0OlxuXHRcdFx0XHRyZXR1cm4gZ2VuZXJhdGVTZXRQYXRjaGVzKFxuXHRcdFx0XHRcdChzdGF0ZSBhcyBhbnkpIGFzIFNldFN0YXRlLFxuXHRcdFx0XHRcdGJhc2VQYXRoLFxuXHRcdFx0XHRcdHBhdGNoZXMsXG5cdFx0XHRcdFx0aW52ZXJzZVBhdGNoZXNcblx0XHRcdFx0KVxuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIGdlbmVyYXRlQXJyYXlQYXRjaGVzKFxuXHRcdHN0YXRlOiBQcm94eUFycmF5U3RhdGUsXG5cdFx0YmFzZVBhdGg6IFBhdGNoUGF0aCxcblx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdCkge1xuXHRcdGxldCB7YmFzZV8sIGFzc2lnbmVkX30gPSBzdGF0ZVxuXHRcdGxldCBjb3B5XyA9IHN0YXRlLmNvcHlfIVxuXG5cdFx0Ly8gUmVkdWNlIGNvbXBsZXhpdHkgYnkgZW5zdXJpbmcgYGJhc2VgIGlzIG5ldmVyIGxvbmdlci5cblx0XHRpZiAoY29weV8ubGVuZ3RoIFx1MDAzYyBiYXNlXy5sZW5ndGgpIHtcblx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdDtbYmFzZV8sIGNvcHlfXSA9IFtjb3B5XywgYmFzZV9dXG5cdFx0XHQ7W3BhdGNoZXMsIGludmVyc2VQYXRjaGVzXSA9IFtpbnZlcnNlUGF0Y2hlcywgcGF0Y2hlc11cblx0XHR9XG5cblx0XHQvLyBQcm9jZXNzIHJlcGxhY2VkIGluZGljZXMuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgXHUwMDNjIGJhc2VfLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAoYXNzaWduZWRfW2ldIFx1MDAyNlx1MDAyNiBjb3B5X1tpXSAhPT0gYmFzZV9baV0pIHtcblx0XHRcdFx0Y29uc3QgcGF0aCA9IGJhc2VQYXRoLmNvbmNhdChbaV0pXG5cdFx0XHRcdHBhdGNoZXMucHVzaCh7XG5cdFx0XHRcdFx0b3A6IFJFUExBQ0UsXG5cdFx0XHRcdFx0cGF0aCxcblx0XHRcdFx0XHQvLyBOZWVkIHRvIG1heWJlIGNsb25lIGl0LCBhcyBpdCBjYW4gaW4gZmFjdCBiZSB0aGUgb3JpZ2luYWwgdmFsdWVcblx0XHRcdFx0XHQvLyBkdWUgdG8gdGhlIGJhc2UvY29weSBpbnZlcnNpb24gYXQgdGhlIHN0YXJ0IG9mIHRoaXMgZnVuY3Rpb25cblx0XHRcdFx0XHR2YWx1ZTogY2xvbmVQYXRjaFZhbHVlSWZOZWVkZWQoY29weV9baV0pXG5cdFx0XHRcdH0pXG5cdFx0XHRcdGludmVyc2VQYXRjaGVzLnB1c2goe1xuXHRcdFx0XHRcdG9wOiBSRVBMQUNFLFxuXHRcdFx0XHRcdHBhdGgsXG5cdFx0XHRcdFx0dmFsdWU6IGNsb25lUGF0Y2hWYWx1ZUlmTmVlZGVkKGJhc2VfW2ldKVxuXHRcdFx0XHR9KVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFByb2Nlc3MgYWRkZWQgaW5kaWNlcy5cblx0XHRmb3IgKGxldCBpID0gYmFzZV8ubGVuZ3RoOyBpIFx1MDAzYyBjb3B5Xy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgcGF0aCA9IGJhc2VQYXRoLmNvbmNhdChbaV0pXG5cdFx0XHRwYXRjaGVzLnB1c2goe1xuXHRcdFx0XHRvcDogQURELFxuXHRcdFx0XHRwYXRoLFxuXHRcdFx0XHQvLyBOZWVkIHRvIG1heWJlIGNsb25lIGl0LCBhcyBpdCBjYW4gaW4gZmFjdCBiZSB0aGUgb3JpZ2luYWwgdmFsdWVcblx0XHRcdFx0Ly8gZHVlIHRvIHRoZSBiYXNlL2NvcHkgaW52ZXJzaW9uIGF0IHRoZSBzdGFydCBvZiB0aGlzIGZ1bmN0aW9uXG5cdFx0XHRcdHZhbHVlOiBjbG9uZVBhdGNoVmFsdWVJZk5lZWRlZChjb3B5X1tpXSlcblx0XHRcdH0pXG5cdFx0fVxuXHRcdGZvciAobGV0IGkgPSBjb3B5Xy5sZW5ndGggLSAxOyBiYXNlXy5sZW5ndGggXHUwMDNjPSBpOyAtLWkpIHtcblx0XHRcdGNvbnN0IHBhdGggPSBiYXNlUGF0aC5jb25jYXQoW2ldKVxuXHRcdFx0aW52ZXJzZVBhdGNoZXMucHVzaCh7XG5cdFx0XHRcdG9wOiBSRU1PVkUsXG5cdFx0XHRcdHBhdGhcblx0XHRcdH0pXG5cdFx0fVxuXHR9XG5cblx0Ly8gVGhpcyBpcyB1c2VkIGZvciBib3RoIE1hcCBvYmplY3RzIGFuZCBub3JtYWwgb2JqZWN0cy5cblx0ZnVuY3Rpb24gZ2VuZXJhdGVQYXRjaGVzRnJvbUFzc2lnbmVkKFxuXHRcdHN0YXRlOiBNYXBTdGF0ZSB8IFByb3h5T2JqZWN0U3RhdGUsXG5cdFx0YmFzZVBhdGg6IFBhdGNoUGF0aCxcblx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdCkge1xuXHRcdGNvbnN0IHtiYXNlXywgY29weV99ID0gc3RhdGVcblx0XHRlYWNoKHN0YXRlLmFzc2lnbmVkXyEsIChrZXksIGFzc2lnbmVkVmFsdWUpID1cdTAwM2Uge1xuXHRcdFx0Y29uc3Qgb3JpZ1ZhbHVlID0gZ2V0KGJhc2VfLCBrZXkpXG5cdFx0XHRjb25zdCB2YWx1ZSA9IGdldChjb3B5XyEsIGtleSlcblx0XHRcdGNvbnN0IG9wID0gIWFzc2lnbmVkVmFsdWUgPyBSRU1PVkUgOiBoYXMoYmFzZV8sIGtleSkgPyBSRVBMQUNFIDogQUREXG5cdFx0XHRpZiAob3JpZ1ZhbHVlID09PSB2YWx1ZSBcdTAwMjZcdTAwMjYgb3AgPT09IFJFUExBQ0UpIHJldHVyblxuXHRcdFx0Y29uc3QgcGF0aCA9IGJhc2VQYXRoLmNvbmNhdChrZXkgYXMgYW55KVxuXHRcdFx0cGF0Y2hlcy5wdXNoKG9wID09PSBSRU1PVkUgPyB7b3AsIHBhdGh9IDoge29wLCBwYXRoLCB2YWx1ZX0pXG5cdFx0XHRpbnZlcnNlUGF0Y2hlcy5wdXNoKFxuXHRcdFx0XHRvcCA9PT0gQUREXG5cdFx0XHRcdFx0PyB7b3A6IFJFTU9WRSwgcGF0aH1cblx0XHRcdFx0XHQ6IG9wID09PSBSRU1PVkVcblx0XHRcdFx0XHQ/IHtvcDogQURELCBwYXRoLCB2YWx1ZTogY2xvbmVQYXRjaFZhbHVlSWZOZWVkZWQob3JpZ1ZhbHVlKX1cblx0XHRcdFx0XHQ6IHtvcDogUkVQTEFDRSwgcGF0aCwgdmFsdWU6IGNsb25lUGF0Y2hWYWx1ZUlmTmVlZGVkKG9yaWdWYWx1ZSl9XG5cdFx0XHQpXG5cdFx0fSlcblx0fVxuXG5cdGZ1bmN0aW9uIGdlbmVyYXRlU2V0UGF0Y2hlcyhcblx0XHRzdGF0ZTogU2V0U3RhdGUsXG5cdFx0YmFzZVBhdGg6IFBhdGNoUGF0aCxcblx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdCkge1xuXHRcdGxldCB7YmFzZV8sIGNvcHlffSA9IHN0YXRlXG5cblx0XHRsZXQgaSA9IDBcblx0XHRiYXNlXy5mb3JFYWNoKCh2YWx1ZTogYW55KSA9XHUwMDNlIHtcblx0XHRcdGlmICghY29weV8hLmhhcyh2YWx1ZSkpIHtcblx0XHRcdFx0Y29uc3QgcGF0aCA9IGJhc2VQYXRoLmNvbmNhdChbaV0pXG5cdFx0XHRcdHBhdGNoZXMucHVzaCh7XG5cdFx0XHRcdFx0b3A6IFJFTU9WRSxcblx0XHRcdFx0XHRwYXRoLFxuXHRcdFx0XHRcdHZhbHVlXG5cdFx0XHRcdH0pXG5cdFx0XHRcdGludmVyc2VQYXRjaGVzLnVuc2hpZnQoe1xuXHRcdFx0XHRcdG9wOiBBREQsXG5cdFx0XHRcdFx0cGF0aCxcblx0XHRcdFx0XHR2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0fVxuXHRcdFx0aSsrXG5cdFx0fSlcblx0XHRpID0gMFxuXHRcdGNvcHlfIS5mb3JFYWNoKCh2YWx1ZTogYW55KSA9XHUwMDNlIHtcblx0XHRcdGlmICghYmFzZV8uaGFzKHZhbHVlKSkge1xuXHRcdFx0XHRjb25zdCBwYXRoID0gYmFzZVBhdGguY29uY2F0KFtpXSlcblx0XHRcdFx0cGF0Y2hlcy5wdXNoKHtcblx0XHRcdFx0XHRvcDogQURELFxuXHRcdFx0XHRcdHBhdGgsXG5cdFx0XHRcdFx0dmFsdWVcblx0XHRcdFx0fSlcblx0XHRcdFx0aW52ZXJzZVBhdGNoZXMudW5zaGlmdCh7XG5cdFx0XHRcdFx0b3A6IFJFTU9WRSxcblx0XHRcdFx0XHRwYXRoLFxuXHRcdFx0XHRcdHZhbHVlXG5cdFx0XHRcdH0pXG5cdFx0XHR9XG5cdFx0XHRpKytcblx0XHR9KVxuXHR9XG5cblx0ZnVuY3Rpb24gZ2VuZXJhdGVSZXBsYWNlbWVudFBhdGNoZXNfKFxuXHRcdGJhc2VWYWx1ZTogYW55LFxuXHRcdHJlcGxhY2VtZW50OiBhbnksXG5cdFx0cGF0Y2hlczogUGF0Y2hbXSxcblx0XHRpbnZlcnNlUGF0Y2hlczogUGF0Y2hbXVxuXHQpOiB2b2lkIHtcblx0XHRwYXRjaGVzLnB1c2goe1xuXHRcdFx0b3A6IFJFUExBQ0UsXG5cdFx0XHRwYXRoOiBbXSxcblx0XHRcdHZhbHVlOiByZXBsYWNlbWVudCA9PT0gTk9USElORyA/IHVuZGVmaW5lZCA6IHJlcGxhY2VtZW50XG5cdFx0fSlcblx0XHRpbnZlcnNlUGF0Y2hlcy5wdXNoKHtcblx0XHRcdG9wOiBSRVBMQUNFLFxuXHRcdFx0cGF0aDogW10sXG5cdFx0XHR2YWx1ZTogYmFzZVZhbHVlXG5cdFx0fSlcblx0fVxuXG5cdGZ1bmN0aW9uIGFwcGx5UGF0Y2hlc19cdTAwM2NUXHUwMDNlKGRyYWZ0OiBULCBwYXRjaGVzOiByZWFkb25seSBQYXRjaFtdKTogVCB7XG5cdFx0cGF0Y2hlcy5mb3JFYWNoKHBhdGNoID1cdTAwM2Uge1xuXHRcdFx0Y29uc3Qge3BhdGgsIG9wfSA9IHBhdGNoXG5cblx0XHRcdGxldCBiYXNlOiBhbnkgPSBkcmFmdFxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgXHUwMDNjIHBhdGgubGVuZ3RoIC0gMTsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHBhcmVudFR5cGUgPSBnZXRBcmNodHlwZShiYXNlKVxuXHRcdFx0XHRsZXQgcCA9IHBhdGhbaV1cblx0XHRcdFx0aWYgKHR5cGVvZiBwICE9PSBcInN0cmluZ1wiIFx1MDAyNlx1MDAyNiB0eXBlb2YgcCAhPT0gXCJudW1iZXJcIikge1xuXHRcdFx0XHRcdHAgPSBcIlwiICsgcFxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gU2VlICM3MzgsIGF2b2lkIHByb3RvdHlwZSBwb2xsdXRpb25cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdChwYXJlbnRUeXBlID09PSBBcmNoVHlwZS5PYmplY3QgfHwgcGFyZW50VHlwZSA9PT0gQXJjaFR5cGUuQXJyYXkpIFx1MDAyNlx1MDAyNlxuXHRcdFx0XHRcdChwID09PSBcIl9fcHJvdG9fX1wiIHx8IHAgPT09IFwiY29uc3RydWN0b3JcIilcblx0XHRcdFx0KVxuXHRcdFx0XHRcdGRpZShlcnJvck9mZnNldCArIDMpXG5cdFx0XHRcdGlmICh0eXBlb2YgYmFzZSA9PT0gXCJmdW5jdGlvblwiIFx1MDAyNlx1MDAyNiBwID09PSBcInByb3RvdHlwZVwiKVxuXHRcdFx0XHRcdGRpZShlcnJvck9mZnNldCArIDMpXG5cdFx0XHRcdGJhc2UgPSBnZXQoYmFzZSwgcClcblx0XHRcdFx0aWYgKHR5cGVvZiBiYXNlICE9PSBcIm9iamVjdFwiKSBkaWUoZXJyb3JPZmZzZXQgKyAyLCBwYXRoLmpvaW4oXCIvXCIpKVxuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCB0eXBlID0gZ2V0QXJjaHR5cGUoYmFzZSlcblx0XHRcdGNvbnN0IHZhbHVlID0gZGVlcENsb25lUGF0Y2hWYWx1ZShwYXRjaC52YWx1ZSkgLy8gdXNlZCB0byBjbG9uZSBwYXRjaCB0byBlbnN1cmUgb3JpZ2luYWwgcGF0Y2ggaXMgbm90IG1vZGlmaWVkLCBzZWUgIzQxMVxuXHRcdFx0Y29uc3Qga2V5ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdXG5cdFx0XHRzd2l0Y2ggKG9wKSB7XG5cdFx0XHRcdGNhc2UgUkVQTEFDRTpcblx0XHRcdFx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdFx0XHRcdGNhc2UgQXJjaFR5cGUuTWFwOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYmFzZS5zZXQoa2V5LCB2YWx1ZSlcblx0XHRcdFx0XHRcdC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cdFx0XHRcdFx0XHRjYXNlIEFyY2hUeXBlLlNldDpcblx0XHRcdFx0XHRcdFx0ZGllKGVycm9yT2Zmc2V0KVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0Ly8gaWYgdmFsdWUgaXMgYW4gb2JqZWN0LCB0aGVuIGl0J3MgYXNzaWduZWQgYnkgcmVmZXJlbmNlXG5cdFx0XHRcdFx0XHRcdC8vIGluIHRoZSBmb2xsb3dpbmcgYWRkIG9yIHJlbW92ZSBvcHMsIHRoZSB2YWx1ZSBmaWVsZCBpbnNpZGUgdGhlIHBhdGNoIHdpbGwgYWxzbyBiZSBtb2RpZnllZFxuXHRcdFx0XHRcdFx0XHQvLyBzbyB3ZSB1c2UgdmFsdWUgZnJvbSB0aGUgY2xvbmVkIHBhdGNoXG5cdFx0XHRcdFx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChiYXNlW2tleV0gPSB2YWx1ZSlcblx0XHRcdFx0XHR9XG5cdFx0XHRcdGNhc2UgQUREOlxuXHRcdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdFx0Y2FzZSBBcmNoVHlwZS5BcnJheTpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGtleSA9PT0gXCItXCJcblx0XHRcdFx0XHRcdFx0XHQ/IGJhc2UucHVzaCh2YWx1ZSlcblx0XHRcdFx0XHRcdFx0XHQ6IGJhc2Uuc3BsaWNlKGtleSBhcyBhbnksIDAsIHZhbHVlKVxuXHRcdFx0XHRcdFx0Y2FzZSBBcmNoVHlwZS5NYXA6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBiYXNlLnNldChrZXksIHZhbHVlKVxuXHRcdFx0XHRcdFx0Y2FzZSBBcmNoVHlwZS5TZXQ6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBiYXNlLmFkZCh2YWx1ZSlcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoYmFzZVtrZXldID0gdmFsdWUpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRjYXNlIFJFTU9WRTpcblx0XHRcdFx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdFx0XHRcdGNhc2UgQXJjaFR5cGUuQXJyYXk6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBiYXNlLnNwbGljZShrZXkgYXMgYW55LCAxKVxuXHRcdFx0XHRcdFx0Y2FzZSBBcmNoVHlwZS5NYXA6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBiYXNlLmRlbGV0ZShrZXkpXG5cdFx0XHRcdFx0XHRjYXNlIEFyY2hUeXBlLlNldDpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGJhc2UuZGVsZXRlKHBhdGNoLnZhbHVlKVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGRlbGV0ZSBiYXNlW2tleV1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0ZGllKGVycm9yT2Zmc2V0ICsgMSwgb3ApXG5cdFx0XHR9XG5cdFx0fSlcblxuXHRcdHJldHVybiBkcmFmdFxuXHR9XG5cblx0Ly8gb3B0aW1pemU6IHRoaXMgaXMgcXVpdGUgYSBwZXJmb3JtYW5jZSBoaXQsIGNhbiB3ZSBkZXRlY3QgaW50ZWxsaWdlbnRseSB3aGVuIGl0IGlzIG5lZWRlZD9cblx0Ly8gRS5nLiBhdXRvLWRyYWZ0IHdoZW4gbmV3IG9iamVjdHMgZnJvbSBvdXRzaWRlIGFyZSBhc3NpZ25lZCBhbmQgbW9kaWZpZWQ/XG5cdC8vIChTZWUgZmFpbGluZyB0ZXN0IHdoZW4gZGVlcENsb25lIGp1c3QgcmV0dXJucyBvYmopXG5cdGZ1bmN0aW9uIGRlZXBDbG9uZVBhdGNoVmFsdWVcdTAwM2NUXHUwMDNlKG9iajogVCk6IFRcblx0ZnVuY3Rpb24gZGVlcENsb25lUGF0Y2hWYWx1ZShvYmo6IGFueSkge1xuXHRcdGlmICghaXNEcmFmdGFibGUob2JqKSkgcmV0dXJuIG9ialxuXHRcdGlmIChBcnJheS5pc0FycmF5KG9iaikpIHJldHVybiBvYmoubWFwKGRlZXBDbG9uZVBhdGNoVmFsdWUpXG5cdFx0aWYgKGlzTWFwKG9iaikpXG5cdFx0XHRyZXR1cm4gbmV3IE1hcChcblx0XHRcdFx0QXJyYXkuZnJvbShvYmouZW50cmllcygpKS5tYXAoKFtrLCB2XSkgPVx1MDAzZSBbaywgZGVlcENsb25lUGF0Y2hWYWx1ZSh2KV0pXG5cdFx0XHQpXG5cdFx0aWYgKGlzU2V0KG9iaikpIHJldHVybiBuZXcgU2V0KEFycmF5LmZyb20ob2JqKS5tYXAoZGVlcENsb25lUGF0Y2hWYWx1ZSkpXG5cdFx0Y29uc3QgY2xvbmVkID0gT2JqZWN0LmNyZWF0ZShnZXRQcm90b3R5cGVPZihvYmopKVxuXHRcdGZvciAoY29uc3Qga2V5IGluIG9iaikgY2xvbmVkW2tleV0gPSBkZWVwQ2xvbmVQYXRjaFZhbHVlKG9ialtrZXldKVxuXHRcdGlmIChoYXMob2JqLCBpbW1lcmFibGUpKSBjbG9uZWRbaW1tZXJhYmxlXSA9IG9ialtpbW1lcmFibGVdXG5cdFx0cmV0dXJuIGNsb25lZFxuXHR9XG5cblx0ZnVuY3Rpb24gY2xvbmVQYXRjaFZhbHVlSWZOZWVkZWRcdTAwM2NUXHUwMDNlKG9iajogVCk6IFQge1xuXHRcdGlmIChpc0RyYWZ0KG9iaikpIHtcblx0XHRcdHJldHVybiBkZWVwQ2xvbmVQYXRjaFZhbHVlKG9iailcblx0XHR9IGVsc2UgcmV0dXJuIG9ialxuXHR9XG5cblx0bG9hZFBsdWdpbihcIlBhdGNoZXNcIiwge1xuXHRcdGFwcGx5UGF0Y2hlc18sXG5cdFx0Z2VuZXJhdGVQYXRjaGVzXyxcblx0XHRnZW5lcmF0ZVJlcGxhY2VtZW50UGF0Y2hlc19cblx0fSlcbn1cbiIsICIvLyB0eXBlcyBvbmx5IVxuaW1wb3J0IHtcblx0SW1tZXJTdGF0ZSxcblx0QW55TWFwLFxuXHRBbnlTZXQsXG5cdE1hcFN0YXRlLFxuXHRTZXRTdGF0ZSxcblx0RFJBRlRfU1RBVEUsXG5cdGdldEN1cnJlbnRTY29wZSxcblx0bGF0ZXN0LFxuXHRpc0RyYWZ0YWJsZSxcblx0Y3JlYXRlUHJveHksXG5cdGxvYWRQbHVnaW4sXG5cdG1hcmtDaGFuZ2VkLFxuXHRkaWUsXG5cdEFyY2hUeXBlLFxuXHRlYWNoXG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVNYXBTZXQoKSB7XG5cdGNsYXNzIERyYWZ0TWFwIGV4dGVuZHMgTWFwIHtcblx0XHRbRFJBRlRfU1RBVEVdOiBNYXBTdGF0ZVxuXG5cdFx0Y29uc3RydWN0b3IodGFyZ2V0OiBBbnlNYXAsIHBhcmVudD86IEltbWVyU3RhdGUpIHtcblx0XHRcdHN1cGVyKClcblx0XHRcdHRoaXNbRFJBRlRfU1RBVEVdID0ge1xuXHRcdFx0XHR0eXBlXzogQXJjaFR5cGUuTWFwLFxuXHRcdFx0XHRwYXJlbnRfOiBwYXJlbnQsXG5cdFx0XHRcdHNjb3BlXzogcGFyZW50ID8gcGFyZW50LnNjb3BlXyA6IGdldEN1cnJlbnRTY29wZSgpISxcblx0XHRcdFx0bW9kaWZpZWRfOiBmYWxzZSxcblx0XHRcdFx0ZmluYWxpemVkXzogZmFsc2UsXG5cdFx0XHRcdGNvcHlfOiB1bmRlZmluZWQsXG5cdFx0XHRcdGFzc2lnbmVkXzogdW5kZWZpbmVkLFxuXHRcdFx0XHRiYXNlXzogdGFyZ2V0LFxuXHRcdFx0XHRkcmFmdF86IHRoaXMgYXMgYW55LFxuXHRcdFx0XHRpc01hbnVhbF86IGZhbHNlLFxuXHRcdFx0XHRyZXZva2VkXzogZmFsc2Vcblx0XHRcdH1cblx0XHR9XG5cblx0XHRnZXQgc2l6ZSgpOiBudW1iZXIge1xuXHRcdFx0cmV0dXJuIGxhdGVzdCh0aGlzW0RSQUZUX1NUQVRFXSkuc2l6ZVxuXHRcdH1cblxuXHRcdGhhcyhrZXk6IGFueSk6IGJvb2xlYW4ge1xuXHRcdFx0cmV0dXJuIGxhdGVzdCh0aGlzW0RSQUZUX1NUQVRFXSkuaGFzKGtleSlcblx0XHR9XG5cblx0XHRzZXQoa2V5OiBhbnksIHZhbHVlOiBhbnkpIHtcblx0XHRcdGNvbnN0IHN0YXRlOiBNYXBTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRpZiAoIWxhdGVzdChzdGF0ZSkuaGFzKGtleSkgfHwgbGF0ZXN0KHN0YXRlKS5nZXQoa2V5KSAhPT0gdmFsdWUpIHtcblx0XHRcdFx0cHJlcGFyZU1hcENvcHkoc3RhdGUpXG5cdFx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdFx0XHRzdGF0ZS5hc3NpZ25lZF8hLnNldChrZXksIHRydWUpXG5cdFx0XHRcdHN0YXRlLmNvcHlfIS5zZXQoa2V5LCB2YWx1ZSlcblx0XHRcdFx0c3RhdGUuYXNzaWduZWRfIS5zZXQoa2V5LCB0cnVlKVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXNcblx0XHR9XG5cblx0XHRkZWxldGUoa2V5OiBhbnkpOiBib29sZWFuIHtcblx0XHRcdGlmICghdGhpcy5oYXMoa2V5KSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHRcdH1cblxuXHRcdFx0Y29uc3Qgc3RhdGU6IE1hcFN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV1cblx0XHRcdGFzc2VydFVucmV2b2tlZChzdGF0ZSlcblx0XHRcdHByZXBhcmVNYXBDb3B5KHN0YXRlKVxuXHRcdFx0bWFya0NoYW5nZWQoc3RhdGUpXG5cdFx0XHRpZiAoc3RhdGUuYmFzZV8uaGFzKGtleSkpIHtcblx0XHRcdFx0c3RhdGUuYXNzaWduZWRfIS5zZXQoa2V5LCBmYWxzZSlcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHN0YXRlLmFzc2lnbmVkXyEuZGVsZXRlKGtleSlcblx0XHRcdH1cblx0XHRcdHN0YXRlLmNvcHlfIS5kZWxldGUoa2V5KVxuXHRcdFx0cmV0dXJuIHRydWVcblx0XHR9XG5cblx0XHRjbGVhcigpIHtcblx0XHRcdGNvbnN0IHN0YXRlOiBNYXBTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRpZiAobGF0ZXN0KHN0YXRlKS5zaXplKSB7XG5cdFx0XHRcdHByZXBhcmVNYXBDb3B5KHN0YXRlKVxuXHRcdFx0XHRtYXJrQ2hhbmdlZChzdGF0ZSlcblx0XHRcdFx0c3RhdGUuYXNzaWduZWRfID0gbmV3IE1hcCgpXG5cdFx0XHRcdGVhY2goc3RhdGUuYmFzZV8sIGtleSA9XHUwMDNlIHtcblx0XHRcdFx0XHRzdGF0ZS5hc3NpZ25lZF8hLnNldChrZXksIGZhbHNlKVxuXHRcdFx0XHR9KVxuXHRcdFx0XHRzdGF0ZS5jb3B5XyEuY2xlYXIoKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZvckVhY2goY2I6ICh2YWx1ZTogYW55LCBrZXk6IGFueSwgc2VsZjogYW55KSA9XHUwMDNlIHZvaWQsIHRoaXNBcmc/OiBhbnkpIHtcblx0XHRcdGNvbnN0IHN0YXRlOiBNYXBTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRsYXRlc3Qoc3RhdGUpLmZvckVhY2goKF92YWx1ZTogYW55LCBrZXk6IGFueSwgX21hcDogYW55KSA9XHUwMDNlIHtcblx0XHRcdFx0Y2IuY2FsbCh0aGlzQXJnLCB0aGlzLmdldChrZXkpLCBrZXksIHRoaXMpXG5cdFx0XHR9KVxuXHRcdH1cblxuXHRcdGdldChrZXk6IGFueSk6IGFueSB7XG5cdFx0XHRjb25zdCBzdGF0ZTogTWFwU3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXVxuXHRcdFx0YXNzZXJ0VW5yZXZva2VkKHN0YXRlKVxuXHRcdFx0Y29uc3QgdmFsdWUgPSBsYXRlc3Qoc3RhdGUpLmdldChrZXkpXG5cdFx0XHRpZiAoc3RhdGUuZmluYWxpemVkXyB8fCAhaXNEcmFmdGFibGUodmFsdWUpKSB7XG5cdFx0XHRcdHJldHVybiB2YWx1ZVxuXHRcdFx0fVxuXHRcdFx0aWYgKHZhbHVlICE9PSBzdGF0ZS5iYXNlXy5nZXQoa2V5KSkge1xuXHRcdFx0XHRyZXR1cm4gdmFsdWUgLy8gZWl0aGVyIGFscmVhZHkgZHJhZnRlZCBvciByZWFzc2lnbmVkXG5cdFx0XHR9XG5cdFx0XHQvLyBkZXNwaXRlIHdoYXQgaXQgbG9va3MsIHRoaXMgY3JlYXRlcyBhIGRyYWZ0IG9ubHkgb25jZSwgc2VlIGFib3ZlIGNvbmRpdGlvblxuXHRcdFx0Y29uc3QgZHJhZnQgPSBjcmVhdGVQcm94eSh2YWx1ZSwgc3RhdGUpXG5cdFx0XHRwcmVwYXJlTWFwQ29weShzdGF0ZSlcblx0XHRcdHN0YXRlLmNvcHlfIS5zZXQoa2V5LCBkcmFmdClcblx0XHRcdHJldHVybiBkcmFmdFxuXHRcdH1cblxuXHRcdGtleXMoKTogSXRlcmFibGVJdGVyYXRvclx1MDAzY2FueVx1MDAzZSB7XG5cdFx0XHRyZXR1cm4gbGF0ZXN0KHRoaXNbRFJBRlRfU1RBVEVdKS5rZXlzKClcblx0XHR9XG5cblx0XHR2YWx1ZXMoKTogSXRlcmFibGVJdGVyYXRvclx1MDAzY2FueVx1MDAzZSB7XG5cdFx0XHRjb25zdCBpdGVyYXRvciA9IHRoaXMua2V5cygpXG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRbU3ltYm9sLml0ZXJhdG9yXTogKCkgPVx1MDAzZSB0aGlzLnZhbHVlcygpLFxuXHRcdFx0XHRuZXh0OiAoKSA9XHUwMDNlIHtcblx0XHRcdFx0XHRjb25zdCByID0gaXRlcmF0b3IubmV4dCgpXG5cdFx0XHRcdFx0LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblx0XHRcdFx0XHRpZiAoci5kb25lKSByZXR1cm4gclxuXHRcdFx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy5nZXQoci52YWx1ZSlcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0ZG9uZTogZmFsc2UsXG5cdFx0XHRcdFx0XHR2YWx1ZVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBhcyBhbnlcblx0XHR9XG5cblx0XHRlbnRyaWVzKCk6IEl0ZXJhYmxlSXRlcmF0b3JcdTAwM2NbYW55LCBhbnldXHUwMDNlIHtcblx0XHRcdGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5rZXlzKClcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFtTeW1ib2wuaXRlcmF0b3JdOiAoKSA9XHUwMDNlIHRoaXMuZW50cmllcygpLFxuXHRcdFx0XHRuZXh0OiAoKSA9XHUwMDNlIHtcblx0XHRcdFx0XHRjb25zdCByID0gaXRlcmF0b3IubmV4dCgpXG5cdFx0XHRcdFx0LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblx0XHRcdFx0XHRpZiAoci5kb25lKSByZXR1cm4gclxuXHRcdFx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy5nZXQoci52YWx1ZSlcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0ZG9uZTogZmFsc2UsXG5cdFx0XHRcdFx0XHR2YWx1ZTogW3IudmFsdWUsIHZhbHVlXVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBhcyBhbnlcblx0XHR9XG5cblx0XHRbU3ltYm9sLml0ZXJhdG9yXSgpIHtcblx0XHRcdHJldHVybiB0aGlzLmVudHJpZXMoKVxuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIHByb3h5TWFwX1x1MDAzY1QgZXh0ZW5kcyBBbnlNYXBcdTAwM2UodGFyZ2V0OiBULCBwYXJlbnQ/OiBJbW1lclN0YXRlKTogVCB7XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHJldHVybiBuZXcgRHJhZnRNYXAodGFyZ2V0LCBwYXJlbnQpXG5cdH1cblxuXHRmdW5jdGlvbiBwcmVwYXJlTWFwQ29weShzdGF0ZTogTWFwU3RhdGUpIHtcblx0XHRpZiAoIXN0YXRlLmNvcHlfKSB7XG5cdFx0XHRzdGF0ZS5hc3NpZ25lZF8gPSBuZXcgTWFwKClcblx0XHRcdHN0YXRlLmNvcHlfID0gbmV3IE1hcChzdGF0ZS5iYXNlXylcblx0XHR9XG5cdH1cblxuXHRjbGFzcyBEcmFmdFNldCBleHRlbmRzIFNldCB7XG5cdFx0W0RSQUZUX1NUQVRFXTogU2V0U3RhdGVcblx0XHRjb25zdHJ1Y3Rvcih0YXJnZXQ6IEFueVNldCwgcGFyZW50PzogSW1tZXJTdGF0ZSkge1xuXHRcdFx0c3VwZXIoKVxuXHRcdFx0dGhpc1tEUkFGVF9TVEFURV0gPSB7XG5cdFx0XHRcdHR5cGVfOiBBcmNoVHlwZS5TZXQsXG5cdFx0XHRcdHBhcmVudF86IHBhcmVudCxcblx0XHRcdFx0c2NvcGVfOiBwYXJlbnQgPyBwYXJlbnQuc2NvcGVfIDogZ2V0Q3VycmVudFNjb3BlKCkhLFxuXHRcdFx0XHRtb2RpZmllZF86IGZhbHNlLFxuXHRcdFx0XHRmaW5hbGl6ZWRfOiBmYWxzZSxcblx0XHRcdFx0Y29weV86IHVuZGVmaW5lZCxcblx0XHRcdFx0YmFzZV86IHRhcmdldCxcblx0XHRcdFx0ZHJhZnRfOiB0aGlzLFxuXHRcdFx0XHRkcmFmdHNfOiBuZXcgTWFwKCksXG5cdFx0XHRcdHJldm9rZWRfOiBmYWxzZSxcblx0XHRcdFx0aXNNYW51YWxfOiBmYWxzZVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGdldCBzaXplKCk6IG51bWJlciB7XG5cdFx0XHRyZXR1cm4gbGF0ZXN0KHRoaXNbRFJBRlRfU1RBVEVdKS5zaXplXG5cdFx0fVxuXG5cdFx0aGFzKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcblx0XHRcdGNvbnN0IHN0YXRlOiBTZXRTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHQvLyBiaXQgb2YgdHJpY2tlcnkgaGVyZSwgdG8gYmUgYWJsZSB0byByZWNvZ25pemUgYm90aCB0aGUgdmFsdWUsIGFuZCB0aGUgZHJhZnQgb2YgaXRzIHZhbHVlXG5cdFx0XHRpZiAoIXN0YXRlLmNvcHlfKSB7XG5cdFx0XHRcdHJldHVybiBzdGF0ZS5iYXNlXy5oYXModmFsdWUpXG5cdFx0XHR9XG5cdFx0XHRpZiAoc3RhdGUuY29weV8uaGFzKHZhbHVlKSkgcmV0dXJuIHRydWVcblx0XHRcdGlmIChzdGF0ZS5kcmFmdHNfLmhhcyh2YWx1ZSkgXHUwMDI2XHUwMDI2IHN0YXRlLmNvcHlfLmhhcyhzdGF0ZS5kcmFmdHNfLmdldCh2YWx1ZSkpKVxuXHRcdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0fVxuXG5cdFx0YWRkKHZhbHVlOiBhbnkpOiBhbnkge1xuXHRcdFx0Y29uc3Qgc3RhdGU6IFNldFN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV1cblx0XHRcdGFzc2VydFVucmV2b2tlZChzdGF0ZSlcblx0XHRcdGlmICghdGhpcy5oYXModmFsdWUpKSB7XG5cdFx0XHRcdHByZXBhcmVTZXRDb3B5KHN0YXRlKVxuXHRcdFx0XHRtYXJrQ2hhbmdlZChzdGF0ZSlcblx0XHRcdFx0c3RhdGUuY29weV8hLmFkZCh2YWx1ZSlcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzXG5cdFx0fVxuXG5cdFx0ZGVsZXRlKHZhbHVlOiBhbnkpOiBhbnkge1xuXHRcdFx0aWYgKCF0aGlzLmhhcyh2YWx1ZSkpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHN0YXRlOiBTZXRTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRwcmVwYXJlU2V0Q29weShzdGF0ZSlcblx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0c3RhdGUuY29weV8hLmRlbGV0ZSh2YWx1ZSkgfHxcblx0XHRcdFx0KHN0YXRlLmRyYWZ0c18uaGFzKHZhbHVlKVxuXHRcdFx0XHRcdD8gc3RhdGUuY29weV8hLmRlbGV0ZShzdGF0ZS5kcmFmdHNfLmdldCh2YWx1ZSkpXG5cdFx0XHRcdFx0OiAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBmYWxzZSlcblx0XHRcdClcblx0XHR9XG5cblx0XHRjbGVhcigpIHtcblx0XHRcdGNvbnN0IHN0YXRlOiBTZXRTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRpZiAobGF0ZXN0KHN0YXRlKS5zaXplKSB7XG5cdFx0XHRcdHByZXBhcmVTZXRDb3B5KHN0YXRlKVxuXHRcdFx0XHRtYXJrQ2hhbmdlZChzdGF0ZSlcblx0XHRcdFx0c3RhdGUuY29weV8hLmNsZWFyKClcblx0XHRcdH1cblx0XHR9XG5cblx0XHR2YWx1ZXMoKTogSXRlcmFibGVJdGVyYXRvclx1MDAzY2FueVx1MDAzZSB7XG5cdFx0XHRjb25zdCBzdGF0ZTogU2V0U3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXVxuXHRcdFx0YXNzZXJ0VW5yZXZva2VkKHN0YXRlKVxuXHRcdFx0cHJlcGFyZVNldENvcHkoc3RhdGUpXG5cdFx0XHRyZXR1cm4gc3RhdGUuY29weV8hLnZhbHVlcygpXG5cdFx0fVxuXG5cdFx0ZW50cmllcygpOiBJdGVyYWJsZUl0ZXJhdG9yXHUwMDNjW2FueSwgYW55XVx1MDAzZSB7XG5cdFx0XHRjb25zdCBzdGF0ZTogU2V0U3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXVxuXHRcdFx0YXNzZXJ0VW5yZXZva2VkKHN0YXRlKVxuXHRcdFx0cHJlcGFyZVNldENvcHkoc3RhdGUpXG5cdFx0XHRyZXR1cm4gc3RhdGUuY29weV8hLmVudHJpZXMoKVxuXHRcdH1cblxuXHRcdGtleXMoKTogSXRlcmFibGVJdGVyYXRvclx1MDAzY2FueVx1MDAzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy52YWx1ZXMoKVxuXHRcdH1cblxuXHRcdFtTeW1ib2wuaXRlcmF0b3JdKCkge1xuXHRcdFx0cmV0dXJuIHRoaXMudmFsdWVzKClcblx0XHR9XG5cblx0XHRmb3JFYWNoKGNiOiBhbnksIHRoaXNBcmc/OiBhbnkpIHtcblx0XHRcdGNvbnN0IGl0ZXJhdG9yID0gdGhpcy52YWx1ZXMoKVxuXHRcdFx0bGV0IHJlc3VsdCA9IGl0ZXJhdG9yLm5leHQoKVxuXHRcdFx0d2hpbGUgKCFyZXN1bHQuZG9uZSkge1xuXHRcdFx0XHRjYi5jYWxsKHRoaXNBcmcsIHJlc3VsdC52YWx1ZSwgcmVzdWx0LnZhbHVlLCB0aGlzKVxuXHRcdFx0XHRyZXN1bHQgPSBpdGVyYXRvci5uZXh0KClcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0ZnVuY3Rpb24gcHJveHlTZXRfXHUwMDNjVCBleHRlbmRzIEFueVNldFx1MDAzZSh0YXJnZXQ6IFQsIHBhcmVudD86IEltbWVyU3RhdGUpOiBUIHtcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0cmV0dXJuIG5ldyBEcmFmdFNldCh0YXJnZXQsIHBhcmVudClcblx0fVxuXG5cdGZ1bmN0aW9uIHByZXBhcmVTZXRDb3B5KHN0YXRlOiBTZXRTdGF0ZSkge1xuXHRcdGlmICghc3RhdGUuY29weV8pIHtcblx0XHRcdC8vIGNyZWF0ZSBkcmFmdHMgZm9yIGFsbCBlbnRyaWVzIHRvIHByZXNlcnZlIGluc2VydGlvbiBvcmRlclxuXHRcdFx0c3RhdGUuY29weV8gPSBuZXcgU2V0KClcblx0XHRcdHN0YXRlLmJhc2VfLmZvckVhY2godmFsdWUgPVx1MDAzZSB7XG5cdFx0XHRcdGlmIChpc0RyYWZ0YWJsZSh2YWx1ZSkpIHtcblx0XHRcdFx0XHRjb25zdCBkcmFmdCA9IGNyZWF0ZVByb3h5KHZhbHVlLCBzdGF0ZSlcblx0XHRcdFx0XHRzdGF0ZS5kcmFmdHNfLnNldCh2YWx1ZSwgZHJhZnQpXG5cdFx0XHRcdFx0c3RhdGUuY29weV8hLmFkZChkcmFmdClcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdGF0ZS5jb3B5XyEuYWRkKHZhbHVlKVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIGFzc2VydFVucmV2b2tlZChzdGF0ZTogYW55IC8qRVM1U3RhdGUgfCBNYXBTdGF0ZSB8IFNldFN0YXRlKi8pIHtcblx0XHRpZiAoc3RhdGUucmV2b2tlZF8pIGRpZSgzLCBKU09OLnN0cmluZ2lmeShsYXRlc3Qoc3RhdGUpKSlcblx0fVxuXG5cdGxvYWRQbHVnaW4oXCJNYXBTZXRcIiwge3Byb3h5TWFwXywgcHJveHlTZXRffSlcbn1cbiIsICJpbXBvcnQge1xuXHRJUHJvZHVjZSxcblx0SVByb2R1Y2VXaXRoUGF0Y2hlcyxcblx0SW1tZXIsXG5cdERyYWZ0LFxuXHRJbW11dGFibGVcbn0gZnJvbSBcIi4vaW50ZXJuYWxcIlxuXG5leHBvcnQge1xuXHREcmFmdCxcblx0V3JpdGFibGVEcmFmdCxcblx0SW1tdXRhYmxlLFxuXHRQYXRjaCxcblx0UGF0Y2hMaXN0ZW5lcixcblx0UHJvZHVjZXIsXG5cdG9yaWdpbmFsLFxuXHRjdXJyZW50LFxuXHRpc0RyYWZ0LFxuXHRpc0RyYWZ0YWJsZSxcblx0Tk9USElORyBhcyBub3RoaW5nLFxuXHREUkFGVEFCTEUgYXMgaW1tZXJhYmxlLFxuXHRmcmVlemUsXG5cdE9iamVjdGlzaCxcblx0U3RyaWN0TW9kZVxufSBmcm9tIFwiLi9pbnRlcm5hbFwiXG5cbmNvbnN0IGltbWVyID0gbmV3IEltbWVyKClcblxuLyoqXG4gKiBUaGUgYHByb2R1Y2VgIGZ1bmN0aW9uIHRha2VzIGEgdmFsdWUgYW5kIGEgXCJyZWNpcGUgZnVuY3Rpb25cIiAod2hvc2VcbiAqIHJldHVybiB2YWx1ZSBvZnRlbiBkZXBlbmRzIG9uIHRoZSBiYXNlIHN0YXRlKS4gVGhlIHJlY2lwZSBmdW5jdGlvbiBpc1xuICogZnJlZSB0byBtdXRhdGUgaXRzIGZpcnN0IGFyZ3VtZW50IGhvd2V2ZXIgaXQgd2FudHMuIEFsbCBtdXRhdGlvbnMgYXJlXG4gKiBvbmx5IGV2ZXIgYXBwbGllZCB0byBhIF9fY29weV9fIG9mIHRoZSBiYXNlIHN0YXRlLlxuICpcbiAqIFBhc3Mgb25seSBhIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIFwiY3VycmllZCBwcm9kdWNlclwiIHdoaWNoIHJlbGlldmVzIHlvdVxuICogZnJvbSBwYXNzaW5nIHRoZSByZWNpcGUgZnVuY3Rpb24gZXZlcnkgdGltZS5cbiAqXG4gKiBPbmx5IHBsYWluIG9iamVjdHMgYW5kIGFycmF5cyBhcmUgbWFkZSBtdXRhYmxlLiBBbGwgb3RoZXIgb2JqZWN0cyBhcmVcbiAqIGNvbnNpZGVyZWQgdW5jb3B5YWJsZS5cbiAqXG4gKiBOb3RlOiBUaGlzIGZ1bmN0aW9uIGlzIF9fYm91bmRfXyB0byBpdHMgYEltbWVyYCBpbnN0YW5jZS5cbiAqXG4gKiBAcGFyYW0ge2FueX0gYmFzZSAtIHRoZSBpbml0aWFsIHN0YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcm9kdWNlciAtIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgYSBwcm94eSBvZiB0aGUgYmFzZSBzdGF0ZSBhcyBmaXJzdCBhcmd1bWVudCBhbmQgd2hpY2ggY2FuIGJlIGZyZWVseSBtb2RpZmllZFxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGF0Y2hMaXN0ZW5lciAtIG9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBhbGwgdGhlIHBhdGNoZXMgcHJvZHVjZWQgaGVyZVxuICogQHJldHVybnMge2FueX0gYSBuZXcgc3RhdGUsIG9yIHRoZSBpbml0aWFsIHN0YXRlIGlmIG5vdGhpbmcgd2FzIG1vZGlmaWVkXG4gKi9cbmV4cG9ydCBjb25zdCBwcm9kdWNlOiBJUHJvZHVjZSA9IGltbWVyLnByb2R1Y2VcblxuLyoqXG4gKiBMaWtlIGBwcm9kdWNlYCwgYnV0IGBwcm9kdWNlV2l0aFBhdGNoZXNgIGFsd2F5cyByZXR1cm5zIGEgdHVwbGVcbiAqIFtuZXh0U3RhdGUsIHBhdGNoZXMsIGludmVyc2VQYXRjaGVzXSAoaW5zdGVhZCBvZiBqdXN0IHRoZSBuZXh0IHN0YXRlKVxuICovXG5leHBvcnQgY29uc3QgcHJvZHVjZVdpdGhQYXRjaGVzOiBJUHJvZHVjZVdpdGhQYXRjaGVzID0gaW1tZXIucHJvZHVjZVdpdGhQYXRjaGVzLmJpbmQoXG5cdGltbWVyXG4pXG5cbi8qKlxuICogUGFzcyB0cnVlIHRvIGF1dG9tYXRpY2FsbHkgZnJlZXplIGFsbCBjb3BpZXMgY3JlYXRlZCBieSBJbW1lci5cbiAqXG4gKiBBbHdheXMgZnJlZXplIGJ5IGRlZmF1bHQsIGV2ZW4gaW4gcHJvZHVjdGlvbiBtb2RlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRBdXRvRnJlZXplID0gaW1tZXIuc2V0QXV0b0ZyZWV6ZS5iaW5kKGltbWVyKVxuXG4vKipcbiAqIFBhc3MgdHJ1ZSB0byBlbmFibGUgc3RyaWN0IHNoYWxsb3cgY29weS5cbiAqXG4gKiBCeSBkZWZhdWx0LCBpbW1lciBkb2VzIG5vdCBjb3B5IHRoZSBvYmplY3QgZGVzY3JpcHRvcnMgc3VjaCBhcyBnZXR0ZXIsIHNldHRlciBhbmQgbm9uLWVudW1yYWJsZSBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgY29uc3Qgc2V0VXNlU3RyaWN0U2hhbGxvd0NvcHkgPSBpbW1lci5zZXRVc2VTdHJpY3RTaGFsbG93Q29weS5iaW5kKGltbWVyKVxuXG4vKipcbiAqIEFwcGx5IGFuIGFycmF5IG9mIEltbWVyIHBhdGNoZXMgdG8gdGhlIGZpcnN0IGFyZ3VtZW50LlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gaXMgYSBwcm9kdWNlciwgd2hpY2ggbWVhbnMgY29weS1vbi13cml0ZSBpcyBpbiBlZmZlY3QuXG4gKi9cbmV4cG9ydCBjb25zdCBhcHBseVBhdGNoZXMgPSBpbW1lci5hcHBseVBhdGNoZXMuYmluZChpbW1lcilcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW1tZXIgZHJhZnQgZnJvbSB0aGUgZ2l2ZW4gYmFzZSBzdGF0ZSwgd2hpY2ggbWF5IGJlIGEgZHJhZnQgaXRzZWxmLlxuICogVGhlIGRyYWZ0IGNhbiBiZSBtb2RpZmllZCB1bnRpbCB5b3UgZmluYWxpemUgaXQgd2l0aCB0aGUgYGZpbmlzaERyYWZ0YCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZURyYWZ0ID0gaW1tZXIuY3JlYXRlRHJhZnQuYmluZChpbW1lcilcblxuLyoqXG4gKiBGaW5hbGl6ZSBhbiBJbW1lciBkcmFmdCBmcm9tIGEgYGNyZWF0ZURyYWZ0YCBjYWxsLCByZXR1cm5pbmcgdGhlIGJhc2Ugc3RhdGVcbiAqIChpZiBubyBjaGFuZ2VzIHdlcmUgbWFkZSkgb3IgYSBtb2RpZmllZCBjb3B5LiBUaGUgZHJhZnQgbXVzdCAqbm90KiBiZVxuICogbXV0YXRlZCBhZnRlcndhcmRzLlxuICpcbiAqIFBhc3MgYSBmdW5jdGlvbiBhcyB0aGUgMm5kIGFyZ3VtZW50IHRvIGdlbmVyYXRlIEltbWVyIHBhdGNoZXMgYmFzZWQgb24gdGhlXG4gKiBjaGFuZ2VzIHRoYXQgd2VyZSBtYWRlLlxuICovXG5leHBvcnQgY29uc3QgZmluaXNoRHJhZnQgPSBpbW1lci5maW5pc2hEcmFmdC5iaW5kKGltbWVyKVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYSBuby1vcCwgYnV0IGNhbiBiZSB1c2VkIHRvIGNhc3QgYW4gaW1tdXRhYmxlIHR5cGVcbiAqIHRvIGFuIGRyYWZ0IHR5cGUgYW5kIG1ha2UgVHlwZVNjcmlwdCBoYXBweVxuICpcbiAqIEBwYXJhbSB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FzdERyYWZ0XHUwMDNjVFx1MDAzZSh2YWx1ZTogVCk6IERyYWZ0XHUwMDNjVFx1MDAzZSB7XG5cdHJldHVybiB2YWx1ZSBhcyBhbnlcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGEgbm8tb3AsIGJ1dCBjYW4gYmUgdXNlZCB0byBjYXN0IGEgbXV0YWJsZSB0eXBlXG4gKiB0byBhbiBpbW11dGFibGUgdHlwZSBhbmQgbWFrZSBUeXBlU2NyaXB0IGhhcHB5XG4gKiBAcGFyYW0gdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhc3RJbW11dGFibGVcdTAwM2NUXHUwMDNlKHZhbHVlOiBUKTogSW1tdXRhYmxlXHUwMDNjVFx1MDAzZSB7XG5cdHJldHVybiB2YWx1ZSBhcyBhbnlcbn1cblxuZXhwb3J0IHtJbW1lcn1cblxuZXhwb3J0IHtlbmFibGVQYXRjaGVzfSBmcm9tIFwiLi9wbHVnaW5zL3BhdGNoZXNcIlxuZXhwb3J0IHtlbmFibGVNYXBTZXR9IGZyb20gXCIuL3BsdWdpbnMvbWFwc2V0XCJcbiIsICJpbXBvcnQgeyBlbmFibGVNYXBTZXQgfSBmcm9tIFwiaHR0cHM6Ly9lc20uc2gvaW1tZXJAMTAuMS4xL1wiO1xuZW5hYmxlTWFwU2V0KCk7XG5cbmV4cG9ydCAqIGZyb20gXCJodHRwczovL2VzbS5zaC9pbW1lckAxMC4xLjEvXCI7XG4iLCAiaW1wb3J0IHsgTGluZSwgU3RyaW5nTGMgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyBJRCB9IGZyb20gXCIuL2lkLnRzXCI7XG5pbXBvcnQgeyBwcm9kdWNlIH0gZnJvbSBcIi4vZGVwcy9pbW1lci50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1YmJsZSB7XG4gIC8qKiBwcm9qZWN0IG5hbWUgKi9cbiAgcHJvamVjdDogc3RyaW5nO1xuXG4gIC8qKiBwYWdlIHRpdGxlTGMgKi9cbiAgdGl0bGVMYzogU3RyaW5nTGM7XG5cbiAgLyoqIOOCteODoOODjeOCpOODqyAqL1xuICBpbWFnZTogc3RyaW5nIHwgbnVsbDtcblxuICAvKiog44K144Og44ON44Kk44Or5pys5paHICovXG4gIGRlc2NyaXB0aW9uczogc3RyaW5nW107XG5cbiAgLyoqIOODmuODvOOCuOacrOaWh1xuICAgKlxuICAgKiAx6KGM55uu44Gr44K/44Kk44OI44Or44KS5YWl44KM44KLXG4gICAqL1xuICBsaW5lczogTGluZVtdO1xuXG4gIC8qKiDjg5rjg7zjgrjjgYzlrZjlnKjjgZnjgozjgbBgdHJ1ZWAqL1xuICBleGlzdHM6IGJvb2xlYW47XG5cbiAgLyoqIOODmuODvOOCuOOBruabtOaWsOaXpeaZgiAqL1xuICB1cGRhdGVkOiBudW1iZXI7XG5cbiAgLyoqIOWGhemDqOODquODs+OCr+iomOazleOBq+OCiOOCi+mAhuODquODs+OCr+OBruODquOCueODiFxuICAgKlxuICAgKiDmnKroqIjnrpfjga7jgajjgY3jga9gdW5kZWZpbmVkYOOBq+OBquOCi1xuICAgKi9cbiAgbGlua2VkPzogU3RyaW5nTGNbXTtcblxuICAvKiogYGxpbmtlZGDjgYzkuI3mraPnorrjgarlj6/og73mgKfjgYzjgYLjgovloLTlkIjjga9gdHJ1ZWAgKi9cbiAgaXNMaW5rZWRDb3JyZWN0OiBib29sZWFuO1xuXG4gIC8qKiDlpJbpg6jjg6rjg7Pjgq/oqJjms5XjgavjgojjgovpgIbjg6rjg7Pjgq/jga7jg6rjgrnjg4hcbiAgICpcbiAgICog5pyq6KiI566X44Gu44Go44GN44GvYHVuZGVmaW5lZGDjgavjgarjgotcbiAgICovXG4gIHByb2plY3RMaW5rZWQ/OiBJRFtdO1xufVxuXG5leHBvcnQgdHlwZSBCdWJibGVTdG9yYWdlID0gTWFwPElELCBCdWJibGU+O1xuXG4vKiog5oyH5a6a44GX44Gf44Oq44Oz44Kv44GM56m644Oq44Oz44Kv44GL44Gp44GG44GL5Yik5a6a44GZ44KLICovXG5leHBvcnQgY29uc3QgaXNFbXB0eUxpbmsgPSAoXG4gIGJ1YmJsZXM6IEl0ZXJhYmxlPEJ1YmJsZSB8IHVuZGVmaW5lZD4sXG4pOiBib29sZWFuID0+IHtcbiAgbGV0IGxpbmtlZCA9IDA7XG4gIGZvciAoY29uc3QgYnViYmxlIG9mIGJ1YmJsZXMpIHtcbiAgICBpZiAoIWJ1YmJsZSkgY29udGludWU7XG5cbiAgICAvLyDkuK3ouqvjgYzjgYLjgovjgarjgonnqbrjg6rjg7Pjgq/jgafjgarjgYRcbiAgICBpZiAoYnViYmxlLmV4aXN0cykgcmV0dXJuIGZhbHNlO1xuXG4gICAgbGlua2VkICs9IChidWJibGUubGlua2VkPy5sZW5ndGggPz8gMCkgK1xuICAgICAgKGJ1YmJsZS5wcm9qZWN0TGlua2VkPy5sZW5ndGggPz8gMCk7XG4gICAgLy8gMuOBpOS7peS4iuOBruODmuODvOOCuOOBi+OCieWPgueFp+OBleOCjOOBpuOBhOOCi+OBquOCieepuuODquODs+OCr+OBp+OBquOBhFxuICAgIGlmIChsaW5rZWQgPiAxKSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGxpbmtlZCA8IDI7XG59O1xuXG4vKiogYnViYmxl44KS5pu05paw44GZ44KLXG4gKlxuICogdXBkYXRlIHJ1bGVcbiAqXG4gKiAtIOWfuuacrOeahOOBq+OAgXVwZGF0ZWTjgYzlpKfjgY3jgYTmlrnjgpLmjqHnlKjjgZnjgotcbiAqIC0gbGluZXPjga/jgIHmm7TmlrDml6XmmYLjgavjgYvjgYvjgo/jgonjgZpkdW1teeOBp+OBquOBhOOBu+OBhuOCkuaOoeeUqOOBmeOCi1xuICogLSBsaW5rZWTjgahwcm9qZWN0TGlua2Vk44Gv44CBdW5kZWZpbmVk44Gn44Gq44GE44G744GG44KS5o6h55So44GZ44KLXG4gKlxuICog5pu05paw44GM44Gq44GR44KM44Gw5Lul5YmN44Gub2JqZWN044KS44Gd44Gu44G+44G+6L+U44GX44CB5pu05paw44GM44GC44KM44Gw5paw44GX44GEb2JqZWN044Gn6L+U44GZXG4gKi9cbmV4cG9ydCBjb25zdCB1cGRhdGUgPSAoXG4gIHByZXY6IEJ1YmJsZSB8IHVuZGVmaW5lZCxcbiAgY3VycmVudDogUmVhZG9ubHk8QnViYmxlPixcbik6IEJ1YmJsZSB8IHVuZGVmaW5lZCA9PlxuICBwcm9kdWNlPEJ1YmJsZSB8IHVuZGVmaW5lZD4ocHJldiwgKGRyYWZ0KSA9PiB7XG4gICAgaWYgKCFkcmFmdCkgcmV0dXJuIGN1cnJlbnQ7XG5cbiAgICBpZiAoZHJhZnQudXBkYXRlZCA8IGN1cnJlbnQudXBkYXRlZCkge1xuICAgICAgLy8g5pu05paw5pel5pmC44GM5paw44GX44GR44KM44Gw44CB44Gd44Gh44KJ44KS5o6h55So44GZ44KLXG4gICAgICAvLyBsaW5rZWQsIHByb2plY3RMaW5rZWQsIGxpbmVz44Gu44G/5Yil6YCU5Yik5a6a44GZ44KLXG4gICAgICBjb25zdCB7IGxpbmVzLCBsaW5rZWQsIHByb2plY3RMaW5rZWQsIC4uLnJlc3QgfSA9IGN1cnJlbnQ7XG5cbiAgICAgIE9iamVjdC5hc3NpZ24oZHJhZnQsIHJlc3QpO1xuICAgICAgaWYgKCFpc0R1bW15KGN1cnJlbnQpKSBkcmFmdC5saW5lcyA9IGxpbmVzO1xuICAgICAgaWYgKGxpbmtlZCkgZHJhZnQubGlua2VkID8/PSBsaW5rZWQ7XG4gICAgICBpZiAocHJvamVjdExpbmtlZCkgZHJhZnQucHJvamVjdExpbmtlZCA/Pz0gcHJvamVjdExpbmtlZDtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGB1cGRhdGVkYOOBjOWkieWMluOBl+OBpuOBhOOBquOBhOWgtOWQiOOAgeWkieabtOOBleOCjOOBpuOBhOOCi+WPr+iDveaAp+OBruOBguOCi3Byb3BlcnRpZXPjga9cbiAgICAvLyAtIGBsaW5lc2BcbiAgICAvLyAtIGBsaW5rZWRgXG4gICAgLy8gLSBgcHJvamVjdExpbmtlZGBcbiAgICAvLyDjgavpmZDjgonjgozjgotcblxuICAgIC8vIOacrOeJqeOBruacrOaWh+OBjOOChOOBo+OBpuOBjeOBn+OCieOAgeOBneOBoeOCieOCkuaOoeeUqOOBmeOCi1xuICAgIGlmIChpc0R1bW15KGRyYWZ0KSAmJiAhaXNEdW1teShjdXJyZW50KSkge1xuICAgICAgZHJhZnQubGluZXMgPSBjdXJyZW50LmxpbmVzO1xuICAgIH1cbiAgICAvLyBsaW5rZWTjga/mraPnorrjgavlj5blvpfjgZfjgZ/jg4fjg7zjgr/jgpLlhKrlhYjjgZnjgotcbiAgICBpZiAoY3VycmVudC5saW5rZWQpIHtcbiAgICAgIGlmIChjdXJyZW50LmlzTGlua2VkQ29ycmVjdCkge1xuICAgICAgICBkcmFmdC5saW5rZWQgPSBjdXJyZW50LmxpbmtlZDtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICFkcmFmdC5pc0xpbmtlZENvcnJlY3QgJiZcbiAgICAgICAgKGRyYWZ0LmxpbmtlZD8ubGVuZ3RoID8/IDApIDw9IGN1cnJlbnQubGlua2VkLmxlbmd0aFxuICAgICAgKSB7XG4gICAgICAgIGRyYWZ0LmxpbmtlZCA9IGN1cnJlbnQubGlua2VkO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY3VycmVudC5wcm9qZWN0TGlua2VkKSBkcmFmdC5wcm9qZWN0TGlua2VkID0gY3VycmVudC5wcm9qZWN0TGlua2VkO1xuICB9KTtcblxuLyoqIGxpbmVz44GMZGVzY3JpcHRpb27jgYvjgonjgafjgaPjgaHkuIrjgZLjgonjgozjgZ/jg4fjg7zjgr/jgYvjganjgYbjgYvliKTlrprjgZnjgosgKi9cbmNvbnN0IGlzRHVtbXkgPSAoYnViYmxlOiBCdWJibGUpOiBib29sZWFuID0+IGJ1YmJsZS5saW5lc1swXS5pZCA9PT0gXCJkdW1teVwiO1xuIiwgImltcG9ydCB7IHRvVGl0bGVMYyB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5pbXBvcnQgeyBCdWJibGUsIEJ1YmJsZVN0b3JhZ2UgfSBmcm9tIFwiLi9zdG9yYWdlLnRzXCI7XG5pbXBvcnQgeyBmcm9tSWQsIElELCB0b0lkIH0gZnJvbSBcIi4vaWQudHNcIjtcbmltcG9ydCB7IFBhZ2UsIFJlbGF0ZWRQYWdlIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuXG4vKiogQVBJ44GL44KJ5Y+W5b6X44GX44Gf44Oa44O844K444OH44O844K/44KS44CBQnViYmxl55So44Gr5aSJ5o+b44GZ44KLXG4gKlxuICogQHBhcmFtIHRpdGxlTGMg44Oa44O844K444Gu44K/44Kk44OI44OrIOOCv+OCpOODiOODq+WkieabtOOBjOOBguOCi+OBqOOAgXBhZ2UudGl0bGXjgYvjgonlvqnlhYPjgafjgY3jgarjgYTjgZ/jgoHjgIHliKXpgJTmjIflrprjgZfjgabjgYTjgotcbiAqIEBwYXJhbSBwcm9qZWN0IOODmuODvOOCuOOBrnByb2plY3RcbiAqIEBwYXJhbSBwYWdlIOWkieaPm+OBl+OBn+OBhOODmuODvOOCuOODh+ODvOOCv1xuICogQHJldHVybiDlpInmj5vjgZfjgZ/jg4fjg7zjgr9cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbnZlcnQgPSAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgcGFnZTogUGFnZSxcbik6IEJ1YmJsZVN0b3JhZ2UgPT4ge1xuICBjb25zdCBzdG9yYWdlOiBCdWJibGVTdG9yYWdlID0gbmV3IE1hcCgpO1xuXG4gIC8vIHBhZ2XjgYzlj4LnhafjgZfjgabjgYTjgovjg6rjg7Pjgq/jga7pgIbjg6rjg7Pjgq/jgatwYWdl44KS5YWl44KM44KLXG4gIC8vIOOBk+OCjOOBq+OCiOOCiuOAgTIgaG9wIGxpbmtz44Gu44OP44OW44Go44Gq44KLY2FyZOOBr+OAgeWFqOOBpuOBrumAhuODquODs+OCr+OBjOagvOe0jeOBleOCjOOBpuOBhOOCi+OBqOS/neiovOOBleOCjOOAgWxpbmtlZOOBqHByb2plY3RMaW5rZWTjga91bmRlZmluZWTjgafjgarjgY/jgarjgotcbiAgY29uc3QgdGl0bGVMYyA9IHRvVGl0bGVMYyhwYWdlLnRpdGxlKTtcbiAgZm9yIChjb25zdCBsaW5rIG9mIHBhZ2UubGlua3MpIHtcbiAgICBjb25zdCBidWJibGU6IEJ1YmJsZSA9IG1ha2VEdW1teShwcm9qZWN0LCBsaW5rKTtcbiAgICBidWJibGUubGlua2VkID0gW3RpdGxlTGNdO1xuICAgIHN0b3JhZ2Uuc2V0KHRvSWQocHJvamVjdCwgbGluayksIGJ1YmJsZSk7XG4gIH1cbiAgY29uc3QgcGFnZUlkID0gdG9JZChwcm9qZWN0LCB0aXRsZUxjKTtcbiAgY29uc3QgcHJvamVjdExpbmtzTGMgPSBwYWdlLnByb2plY3RMaW5rcy5tYXAoKGlkKSA9PiB7XG4gICAgY29uc3QgbGluayA9IGZyb21JZChpZCBhcyBJRCk7XG4gICAgcmV0dXJuIHRvSWQobGluay5wcm9qZWN0LCBsaW5rLnRpdGxlTGMpO1xuICB9KTtcbiAgLy8gcHJvamVjdExpbmtz44GK44KI44GzcHJvamVjdExpbmtzMWhvcOOBq+OBguOCi+ODmuODvOOCuOOCq+ODvOODieOBruWklumDqOODquODs+OCr+iomOazlee1jOeUseOBrumAhuODquODs+OCr+OBr+ato+eiuuOBq+WPluW+l+OBp+OBjeOBquOBhOOBruOBp+eEoeimluOBmeOCi1xuICAvLyDlpJbpg6jjg6rjg7Pjgq/oqJjms5XntYznlLHjga7pgIbjg6rjg7Pjgq/jga9wYWdlLnRpdGxl44Gu44G/6ICD5oWu44GZ44KLXG5cbiAgLy8g44Oa44O844K45pys5paH44KS5YWl44KM44KLXG4gIGNvbnN0IHBhZ2VCdWJibGU6IFJlcXVpcmVkPEJ1YmJsZT4gPSB7XG4gICAgLi4udG9CdWJibGUocHJvamVjdCwgcGFnZSksXG4gICAgbGlua2VkOiBbXSxcbiAgICBwcm9qZWN0TGlua2VkOiBbXSxcbiAgfTtcbiAgc3RvcmFnZS5zZXQocGFnZUlkLCBwYWdlQnViYmxlKTtcblxuICAvLyAxIGhvcCBsaW5rc+OBi+OCieOCq+ODvOODieOCkuWPluOCiuWHuuOBmVxuICAvLyDlkIzmmYLjgatgZW1wdHlQYWdlSWRzYOOCkuS9nOOCi1xuICBjb25zdCBsaW5rc0xjID0gcGFnZS5saW5rcy5tYXAoKGxpbmspID0+IHRvVGl0bGVMYyhsaW5rKSk7XG4gIGZvciAoY29uc3QgY2FyZCBvZiBwYWdlLnJlbGF0ZWRQYWdlcy5saW5rczFob3ApIHtcbiAgICBpZiAoY2FyZC5saW5rc0xjLmluY2x1ZGVzKHRpdGxlTGMpKSB7XG4gICAgICAvLyDlj4zmlrnlkJHjg6rjg7Pjgq8gb3Ig6YCG44Oq44Oz44KvXG5cbiAgICAgIC8vIOmAhuODquODs+OCr+OCkuS9nOOCi1xuICAgICAgLy8g6YeN6KSH44Gv44GC44KK44GI44Gq44GE44Gu44Gn6YWN5YiX44Gn44GE44GEXG4gICAgICBwYWdlQnViYmxlLmxpbmtlZC5wdXNoKGNhcmQudGl0bGVMYyk7XG4gICAgfVxuICAgIC8vIGBwYWdlYOKGkmBjYXJkYOKGkmBsaW5rTGNg4oaQYHBhZ2Vg44Go44GE44GG44Oq44Oz44Kv6Zai5L+C44Gr44GC44KL44Go44GN44Gv44CBYGNhcmRg44KSYGxpbmtMY2Djga7pgIbjg6rjg7Pjgq/jgajjgZfjgabnmbvpjLLjgZnjgotcbiAgICBmb3IgKFxuICAgICAgY29uc3QgbGlua0xjIG9mIGNhcmQubGlua3NMYy5maWx0ZXIoKGxpbmtMYykgPT4gbGlua3NMYy5pbmNsdWRlcyhsaW5rTGMpKVxuICAgICkge1xuICAgICAgY29uc3QgY2FyZElkID0gdG9JZChwcm9qZWN0LCBsaW5rTGMpO1xuICAgICAgY29uc3QgYnViYmxlID0gc3RvcmFnZS5nZXQoY2FyZElkKTtcbiAgICAgIGlmICghYnViYmxlKSB0aHJvdyBFcnJvcihgc3RvcmFnZSBhbHJlYWR5IG11c3QgaGF2ZSBcIiR7Y2FyZElkfVwiYCk7XG4gICAgICBpZiAoIWJ1YmJsZS5saW5rZWQpIHtcbiAgICAgICAgYnViYmxlLmxpbmtlZCA9IFtjYXJkLnRpdGxlTGNdO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGJ1YmJsZS5saW5rZWQucHVzaChjYXJkLnRpdGxlTGMpO1xuICAgIH1cbiAgICAvLyBjYXJk44KS5YWl44KM44KLXG4gICAgY29uc3QgY2FyZElkID0gdG9JZChwcm9qZWN0LCBjYXJkLnRpdGxlTGMpO1xuICAgIGNvbnN0IGJ1YmJsZSA9IHRvQnViYmxlKHByb2plY3QsIGNhcmQpO1xuICAgIC8vIGV4dGVybmFsIGxpbmtz44Gn44Gq44GR44KM44GwYHByb2plY3RMaW5rZWRg44Gv5a2Y5Zyo44GX44Gq44GEXG4gICAgY29uc3QgbGlua2VkID0gc3RvcmFnZS5nZXQoY2FyZElkKT8ubGlua2VkO1xuICAgIGlmIChsaW5rZWQpIGJ1YmJsZS5saW5rZWQgPSBsaW5rZWQ7XG4gICAgc3RvcmFnZS5zZXQoY2FyZElkLCBidWJibGUpO1xuICB9XG5cbiAgLy8gZXh0ZXJuYWwgbGlua3PjgYvjgonjgqvjg7zjg4njgpLlj5bjgorlh7rjgZlcbiAgZm9yIChcbiAgICBjb25zdCBjYXJkIG9mIHBhZ2UucmVsYXRlZFBhZ2VzLnByb2plY3RMaW5rczFob3BcbiAgKSB7XG4gICAgY29uc3QgY2FyZElkID0gdG9JZChjYXJkLnByb2plY3ROYW1lLCBjYXJkLnRpdGxlTGMpO1xuICAgIGlmICghcHJvamVjdExpbmtzTGMuaW5jbHVkZXMoY2FyZElkKSkge1xuICAgICAgLy8g6YCG44Oq44Oz44KvXG4gICAgICAvLyDlj4zmlrnlkJHjg6rjg7Pjgq/jga/poIbjg6rjg7Pjgq/jgajliKTliKXjgYzjgaTjgYvjgarjgYTjga7jgafjgoTjgoHjgotcblxuICAgICAgLy8g6YCG44Oq44Oz44Kv44KS5L2c44KLXG4gICAgICBwYWdlQnViYmxlLnByb2plY3RMaW5rZWQucHVzaChjYXJkSWQpO1xuICAgIH1cbiAgICAvLyBjYXJk44KS5YWl44KM44KLXG4gICAgY29uc3QgYnViYmxlID0gdG9CdWJibGUoY2FyZC5wcm9qZWN0TmFtZSwgY2FyZCk7XG4gICAgY29uc3QgcHJvamVjdExpbmtlZCA9IHN0b3JhZ2UuZ2V0KGNhcmRJZCk/LnByb2plY3RMaW5rZWQ7XG4gICAgaWYgKHByb2plY3RMaW5rZWQpIGJ1YmJsZS5wcm9qZWN0TGlua2VkID0gcHJvamVjdExpbmtlZDtcbiAgICBzdG9yYWdlLnNldChjYXJkSWQsIGJ1YmJsZSk7XG4gIH1cbiAgcGFnZUJ1YmJsZS5pc0xpbmtlZENvcnJlY3QgPSB0cnVlO1xuXG4gIC8vIDIgaG9wIGxpbmtz44GL44KJ44Kr44O844OJ44KS5Y+W44KK5Ye644GZXG4gIGZvciAoY29uc3QgY2FyZCBvZiBwYWdlLnJlbGF0ZWRQYWdlcy5saW5rczJob3ApIHtcbiAgICBmb3IgKGNvbnN0IGxpbmtMYyBvZiBjYXJkLmxpbmtzTGMpIHtcbiAgICAgIC8vIOmAhuODquODs+OCr+OCkuS9nOOCi1xuICAgICAgLy8g6YeN6KSH44Gv44GC44KK44GI44Gq44GE44Gu44Gn6YWN5YiX44Gn44GE44GEXG4gICAgICBjb25zdCBjYXJkSWQgPSB0b0lkKHByb2plY3QsIGxpbmtMYyk7XG4gICAgICBjb25zdCBidWJibGUgPSBzdG9yYWdlLmdldChjYXJkSWQpO1xuICAgICAgaWYgKCFidWJibGUpIHRocm93IEVycm9yKGBzdG9yYWdlIGFscmVhZHkgbXVzdCBoYXZlIFwiJHtjYXJkSWR9XCJgKTtcbiAgICAgIGlmICghYnViYmxlLmxpbmtlZCkge1xuICAgICAgICBidWJibGUubGlua2VkID0gW2NhcmQudGl0bGVMY107XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYnViYmxlLmxpbmtlZC5wdXNoKGNhcmQudGl0bGVMYyk7XG4gICAgfVxuICAgIC8vIGNhcmTjgpLlhaXjgozjgotcbiAgICBjb25zdCBjYXJkSWQgPSB0b0lkKHByb2plY3QsIGNhcmQudGl0bGVMYyk7XG4gICAgY29uc3QgYnViYmxlID0gdG9CdWJibGUocHJvamVjdCwgY2FyZCk7XG4gICAgLy8gZXh0ZXJuYWwgbGlua3PjgafjgarjgZHjgozjgbBgcHJvamVjdExpbmtlZGDjga/lrZjlnKjjgZfjgarjgYRcbiAgICBjb25zdCBsaW5rZWQgPSBzdG9yYWdlLmdldChjYXJkSWQpPy5saW5rZWQ7XG4gICAgaWYgKGxpbmtlZCkgYnViYmxlLmxpbmtlZCA9IGxpbmtlZDtcbiAgICBzdG9yYWdlLnNldChjYXJkSWQsIGJ1YmJsZSk7XG4gIH1cblxuICByZXR1cm4gc3RvcmFnZTtcbn07XG5cbi8qKiDplqLpgKPjg5rjg7zjgrjjgoTjg5rjg7zjgrjmnKzmlofjga7mg4XloLHjgpJCdWJibGXjgavlpInmj5vjgZnjgotcbiAqXG4gKiBAcGFyYW0gcHJvamVjdCDkuI7jgYjjgZ/jg4fjg7zjgr/jga5wcm9qZWN0IG5hbWVcbiAqIEBwYXJhbSBwYWdlIGJ1YmJsZeOBq+WkieaPm+OBl+OBn+OBhOODh+ODvOOCv1xuICogQHBhcmFtIGNoZWNrZWQg44OH44O844K/44KS56K66KqN44GX44Gf5pel5pmCXG4gKiBAcmV0dXJuIOWkieaPm+W+jOOBruODh+ODvOOCv1xuICovXG5jb25zdCB0b0J1YmJsZSA9IChcbiAgcHJvamVjdDogc3RyaW5nLFxuICBwYWdlOlxuICAgIHwgUGFnZVxuICAgIHwgT21pdDxcbiAgICAgIFJlbGF0ZWRQYWdlLFxuICAgICAgfCBcImxpbmtzTGNcIlxuICAgICAgfCBcInBhZ2VSYW5rXCJcbiAgICAgIHwgXCJjcmVhdGVkXCJcbiAgICAgIHwgXCJpbmZvYm94UmVzdWx0XCJcbiAgICAgIHwgXCJpbmZvYm94RGlzYWJsZUxpbmtzXCJcbiAgICA+LFxuKTogQnViYmxlID0+ICh7XG4gIHByb2plY3QsXG4gIHRpdGxlTGM6IFwidGl0bGVMY1wiIGluIHBhZ2UgPyBwYWdlLnRpdGxlTGMgOiB0b1RpdGxlTGMocGFnZS50aXRsZSksXG4gIC8vIOmWoumAo+ODmuODvOOCuOOBruWgtOWQiOOBr+OAgemWoumAo+ODmuODvOOCuOOBjOWtmOWcqOOBmeOCi+aZgueCueOBp+S4rei6q+OBjOOBguOCi+OBruOBp+OAgeW4uOOBq2B0cnVlYOOBqOOBmeOCi1xuICBleGlzdHM6IFwicGVyc2lzdGVudFwiIGluIHBhZ2UgPyBwYWdlLnBlcnNpc3RlbnQgOiB0cnVlLFxuICBkZXNjcmlwdGlvbnM6IHBhZ2UuZGVzY3JpcHRpb25zLFxuICBpbWFnZTogcGFnZS5pbWFnZSxcbiAgbGluZXM6IFwibGluZXNcIiBpbiBwYWdlXG4gICAgPyBwYWdlLmxpbmVzXG4gICAgLy8gZGVzY3JpcHRpb25z44GL44KJ44Gn44Gj44Gh5LiK44GS44KLXG4gICAgOiBbcGFnZS50aXRsZSwgLi4ucGFnZS5kZXNjcmlwdGlvbnNdLm1hcCgodGV4dCkgPT4gKHtcbiAgICAgIHRleHQsXG4gICAgICBpZDogXCJkdW1teVwiLFxuICAgICAgdXNlcklkOiBcImR1bW15XCIsXG4gICAgICB1cGRhdGVkOiBwYWdlLnVwZGF0ZWQsXG4gICAgICBjcmVhdGVkOiBwYWdlLnVwZGF0ZWQsXG4gICAgfSkpLFxuICB1cGRhdGVkOiBwYWdlLnVwZGF0ZWQsXG4gIGlzTGlua2VkQ29ycmVjdDogZmFsc2UsXG59KTtcblxuLyoqIOODmuODvOOCuOOCv+OCpOODiOODq+OBoOOBkeOBi+OCiUJ1YmJsZeOCkuS9nOOCi1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0IOS4juOBiOOBn+ODh+ODvOOCv+OBrnByb2plY3QgbmFtZVxuICogQHBhcmFtIHRpdGxlIOODmuODvOOCuOOCv+OCpOODiOODq1xuICogQHBhcmFtIGNoZWNrZWQg44OH44O844K/44KS56K66KqN44GX44Gf5pel5pmCXG4gKiBAcmV0dXJuIOWkieaPm+W+jOOBruODh+ODvOOCv1xuICovXG5jb25zdCBtYWtlRHVtbXkgPSAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgdGl0bGU6IHN0cmluZyxcbik6IEJ1YmJsZSA9PiAoe1xuICBwcm9qZWN0LFxuICB0aXRsZUxjOiB0b1RpdGxlTGModGl0bGUpLFxuICBleGlzdHM6IGZhbHNlLFxuICBkZXNjcmlwdGlvbnM6IFtdLFxuICBpbWFnZTogbnVsbCxcbiAgbGluZXM6IFt7XG4gICAgdGV4dDogdGl0bGUsXG4gICAgaWQ6IFwiZHVtbXlcIixcbiAgICB1c2VySWQ6IFwiZHVtbXlcIixcbiAgICB1cGRhdGVkOiAwLFxuICAgIGNyZWF0ZWQ6IDAsXG4gIH1dLFxuICB1cGRhdGVkOiAwLFxuICBpc0xpbmtlZENvcnJlY3Q6IGZhbHNlLFxufSk7XG4iLCAiaW1wb3J0IHsgY2FjaGVGaXJzdEZldGNoLCBpc0V4cGlyZWQgfSBmcm9tIFwiLi9jYWNoZS50c1wiO1xuaW1wb3J0IHsgSUQsIHRvSWQgfSBmcm9tIFwiLi9pZC50c1wiO1xuaW1wb3J0IHsgTGlzdGVuZXIsIG1ha2VFbWl0dGVyIH0gZnJvbSBcIi4vZXZlbnRFbWl0dGVyLnRzXCI7XG5pbXBvcnQgeyBCdWJibGUsIEJ1YmJsZVN0b3JhZ2UsIHVwZGF0ZSB9IGZyb20gXCIuL3N0b3JhZ2UudHNcIjtcbmltcG9ydCB7IGNvbnZlcnQgfSBmcm9tIFwiLi9jb252ZXJ0LnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVEZWJ1ZyB9IGZyb20gXCIuL2RlYnVnLnRzXCI7XG5pbXBvcnQgeyBnZXRQYWdlIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1zdGQudHNcIjtcbmltcG9ydCB7IFByb2plY3RJZCwgVW5peFRpbWUgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZURlYnVnKFwiU2NyYXBCdWJibGU6YnViYmxlLnRzXCIpO1xuXG5jb25zdCBzdG9yYWdlOiBCdWJibGVTdG9yYWdlID0gbmV3IE1hcCgpO1xuLyoqIOODh+ODvOOCv+OCkuabtOaWsOS4reOBruODmuODvOOCuOOBruODquOCueODiCAqL1xuY29uc3QgbG9hZGluZ0lkcyA9IG5ldyBTZXQ8SUQ+KCk7XG5jb25zdCBlbWl0dGVyID0gbWFrZUVtaXR0ZXI8SUQsIEJ1YmJsZT4oKTtcblxuLyoqIGJ1YmJsZSBkYXRh44KS6Kqt44G/6L6844KAXG4gKlxuICog44OH44O844K/44Gu5pu05paw44Gv6KGM44KP44Gq44GEXG4gKlxuICogQHBhcmFtIHBhZ2VJZHMg5Y+W5b6X44GX44Gf44GE44Oa44O844K444Gu44Oq44K544OIXG4gKiBAcmV0dXJuIHBhZ2Xjga7mg4XloLHjgILmnKrliJ3mnJ/ljJbjga7jgajjgY3jga9gdW5kZWZpbmVkYOOCkui/lOOBmVxuICovXG5leHBvcnQgZnVuY3Rpb24qIGxvYWQoXG4gIHBhZ2VJZHM6IEl0ZXJhYmxlPElEPixcbik6IEdlbmVyYXRvcjxCdWJibGUgfCB1bmRlZmluZWQsIHZvaWQsIHVua25vd24+IHtcbiAgZm9yIChjb25zdCBwYWdlSWQgb2YgcGFnZUlkcykge1xuICAgIHlpZWxkIHN0b3JhZ2UuZ2V0KHBhZ2VJZCk7XG4gIH1cbn1cblxuLyoqIOeJueWumuOBruODmuODvOOCuOOBruabtOaWsOOCkuizvOiqreOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IHN1YnNjcmliZSA9IChwYWdlSWQ6IElELCBsaXN0ZW5lcjogTGlzdGVuZXI8QnViYmxlPik6IHZvaWQgPT5cbiAgZW1pdHRlci5vbihwYWdlSWQsIGxpc3RlbmVyKTtcblxuLyoqIOeJueWumuOBruODmuODvOOCuOOBruabtOaWsOizvOiqreOCkuino+mZpOOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IHVuc3Vic2NyaWJlID0gKHBhZ2VJZDogSUQsIGxpc3RlbmVyOiBMaXN0ZW5lcjxCdWJibGU+KTogdm9pZCA9PlxuICBlbWl0dGVyLm9mZihwYWdlSWQsIGxpc3RlbmVyKTtcblxuZXhwb3J0IGludGVyZmFjZSBQcmVmZXRjaE9wdGlvbnMge1xuICAvKiogbmV0d29ya+OBi+OCieODh+ODvOOCv+OCkuWPluW+l+OBl+OBquOBhOOBqOOBjeOBr2B0cnVlYOOCkua4oeOBmSovXG4gIGlnbm9yZUZldGNoPzogYm9vbGVhbjtcbiAgLyoqIGNhY2hl44Gu5pyJ5Yq55pyf6ZmQICjljZjkvY3jga/np5IpICovXG4gIG1heEFnZT86IFVuaXhUaW1lO1xufVxuXG4vKiog44Oa44O844K444OH44O844K/44KS5Y+W5b6X44GX44CBY2FjaGXjgavmoLzntI3jgZnjgotcbiAqXG4gKiBjYWNoZeOBr+S4gOWumumWk+malOOBlOOBqOOBq+abtOaWsOOBleOCjOOCi1xuICovXG5leHBvcnQgY29uc3QgcHJlZmV0Y2ggPSBhc3luYyAoXG4gIHRpdGxlOiBzdHJpbmcsXG4gIHByb2plY3RzOiBJdGVyYWJsZTxzdHJpbmc+LFxuICB3YXRjaExpc3Q6IFNldDxQcm9qZWN0SWQ+LFxuICBvcHRpb25zPzogUHJlZmV0Y2hPcHRpb25zLFxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcbiAgLy8g5pyA5b6M44Gr55m76Yyy44GX44Gf44KC44Gu44GL44KJZmV0Y2jjgZXjgozjgovjga7jgafjgIHlj43ou6LjgZXjgZvjgabjgYrjgY9cbiAgLy8gbWFrZVRocm90dGxl44Gu5LuV5qeY44KS5Y+C54WnXG4gIGZvciAoY29uc3QgcHJvamVjdCBvZiBbLi4ucHJvamVjdHNdLnJldmVyc2UoKSkge1xuICAgIGNvbnN0IGlkID0gdG9JZChwcm9qZWN0LCB0aXRsZSk7XG4gICAgaWYgKGxvYWRpbmdJZHMuaGFzKGlkKSkgY29udGludWU7XG4gICAgcHJvbWlzZXMucHVzaChcbiAgICAgIHVwZGF0ZUFwaUNhY2hlKHByb2plY3QsIHRpdGxlLCB3YXRjaExpc3QsIG9wdGlvbnMpLFxuICAgICk7XG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59O1xuXG4vKiogZGVidWfnlKjjgqvjgqbjg7Pjgr8gKi9cbmxldCBjb3VudGVyID0gMDtcblxuLyoqIGNhY2hl44GK44KI44GzbmV0d29ya+OBi+OCieaWsOOBl+OBhOODmuODvOOCuOODh+ODvOOCv+OCkuWPluW+l+OBmeOCi1xuICpcbiAqIOOCguOBl+abtOaWsOOBjOOBguOCjOOBsOOAgeabtOaWsOmAmuefpeOCgueZuuihjOOBmeOCi1xuICovXG5jb25zdCB1cGRhdGVBcGlDYWNoZSA9IGFzeW5jIChcbiAgcHJvamVjdDogc3RyaW5nLFxuICB0aXRsZTogc3RyaW5nLFxuICB3YXRjaExpc3Q6IFNldDxQcm9qZWN0SWQ+LFxuICBvcHRpb25zPzogUHJlZmV0Y2hPcHRpb25zLFxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGlkID0gdG9JZChwcm9qZWN0LCB0aXRsZSk7XG4gIGlmIChsb2FkaW5nSWRzLmhhcyhpZCkpIHJldHVybjtcblxuICAvLyDmjpLku5bjg63jg4Pjgq/jgpLjgYvjgZHjgotcbiAgLy8g44GT44KM44Gn5ZCM5pmC44Gr5ZCM44GY44Oa44O844K444Gu5pu05paw44GM6LWw44KJ44Gq44GE44KI44GG44Gr44GZ44KLXG4gIGxvYWRpbmdJZHMuYWRkKGlkKTtcbiAgY29uc3QgaSA9IGNvdW50ZXIrKztcblxuICBjb25zdCB0aW1lVGFnID0gYFske2l9XSBDaGVjayB1cGRhdGUgJHtpZH1gO1xuICBsb2dnZXIudGltZSh0aW1lVGFnKTtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXEgPSBnZXRQYWdlLnRvUmVxdWVzdChwcm9qZWN0LCB0aXRsZSwge1xuICAgICAgZm9sbG93UmVuYW1lOiB0cnVlLFxuICAgICAgcHJvamVjdHM6IFsuLi53YXRjaExpc3RdLFxuICAgIH0pO1xuXG4gICAgZm9yIGF3YWl0IChcbiAgICAgIGNvbnN0IFt0eXBlLCByZXNdIG9mIGNhY2hlRmlyc3RGZXRjaChyZXEsIHtcbiAgICAgICAgaWdub3JlU2VhcmNoOiB0cnVlLFxuICAgICAgICBzYXZlRmFpbGVkUmVzcG9uc2U6IHRydWUsXG4gICAgICB9KVxuICAgICkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBbJHtpfV0ke3R5cGV9ICR7aWR9YCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRQYWdlLmZyb21SZXNwb25zZShyZXMpO1xuICAgICAgLy8g5pu05paw44GM44GC44KM44GwZXZlbnTjgpLnmbrooYzjgZnjgotcbiAgICAgIGlmIChyZXN1bHQub2spIHtcbiAgICAgICAgY29uc3QgY29udmVydGVkID0gY29udmVydChwcm9qZWN0LCByZXN1bHQudmFsdWUpO1xuICAgICAgICBmb3IgKGNvbnN0IFtidWJibGVJZCwgYnViYmxlXSBvZiBjb252ZXJ0ZWQpIHtcbiAgICAgICAgICBjb25zdCBwcmV2ID0gc3RvcmFnZS5nZXQoYnViYmxlSWQpO1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWRCdWJibGUgPSB1cGRhdGUocHJldiwgYnViYmxlKTtcbiAgICAgICAgICBpZiAoIXVwZGF0ZWRCdWJibGUpIGNvbnRpbnVlO1xuICAgICAgICAgIGlmIChwcmV2ID09PSB1cGRhdGVkQnViYmxlKSBjb250aW51ZTtcbiAgICAgICAgICBzdG9yYWdlLnNldChidWJibGVJZCwgdXBkYXRlZEJ1YmJsZSk7XG4gICAgICAgICAgZW1pdHRlci5kaXNwYXRjaChidWJibGVJZCwgYnViYmxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucz8uaWdub3JlRmV0Y2ggPT09IHRydWUpIGJyZWFrO1xuICAgICAgLy8g5pyJ5Yq55pyf6ZmQ44GM5YiH44KM44Gm44GE44KL44Gq44KJ44CB5paw44GX44GP44OH44O844K/44KSbmV0d29ya+OBi+OCieWPluOBo+OBpuOBj+OCi1xuICAgICAgaWYgKHR5cGUgPT09IFwiY2FjaGVcIiAmJiAhaXNFeHBpcmVkKHJlcywgb3B0aW9ucz8ubWF4QWdlID8/IDYwKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAvLyDmg7PlrprlpJbjga7jgqjjg6njg7zjga/jg63jgrDjgavlh7rjgZlcbiAgICBsb2dnZXIuZXJyb3IoZSk7XG4gIH0gZmluYWxseSB7XG4gICAgLy8g44Ot44OD44Kv6Kej6ZmkXG4gICAgbG9hZGluZ0lkcy5kZWxldGUoaWQpO1xuICAgIGxvZ2dlci50aW1lRW5kKHRpbWVUYWcpO1xuICAgIGNvdW50ZXItLTtcbiAgfVxufTtcbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBsb2FkLCBzdWJzY3JpYmUsIHVuc3Vic2NyaWJlIH0gZnJvbSBcIi4vYnViYmxlLnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVEZWJ1ZyB9IGZyb20gXCIuL2RlYnVnLnRzXCI7XG5pbXBvcnQgeyBJRCB9IGZyb20gXCIuL2lkLnRzXCI7XG5pbXBvcnQgeyBCdWJibGUgfSBmcm9tIFwiLi9zdG9yYWdlLnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZURlYnVnKFwiU2NyYXBCdWJibGU6dXNlQnViYmxlRGF0YS50c1wiKTtcblxuLyoqIGJ1YmJsZeODh+ODvOOCv+OCkuWPluW+l+OBmeOCi2hvb2tzXG4gKlxuICogQHBhcmFtIHBhZ2VJZHMg5Y+W5b6X44GZ44KL44Oa44O844K444GuSURcbiAqIEByZXR1cm5zIGJ1YmJsZSBkYXRhXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VCdWJibGVEYXRhID0gKFxuICBwYWdlSWRzOiByZWFkb25seSBJRFtdLFxuKTogcmVhZG9ubHkgQnViYmxlW10gPT4ge1xuICBjb25zdCBbYnViYmxlcywgc2V0QnViYmxlc10gPSB1c2VTdGF0ZTxyZWFkb25seSBCdWJibGVbXT4oXG4gICAgbWFrZUJ1YmJsZXMocGFnZUlkcyksXG4gICk7XG5cbiAgLy8g44OH44O844K/5pu05paw55SobGlzdGVuZXLjga7nmbvpjLJcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRCdWJibGVzKG1ha2VCdWJibGVzKHBhZ2VJZHMpKTtcblxuICAgIGxldCB0aW1lcjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKiDjg5rjg7zjgrjjg4fjg7zjgr/jgpLmm7TmlrDjgZnjgosgKi9cbiAgICBjb25zdCB1cGRhdGVEYXRhID0gKCkgPT4ge1xuICAgICAgLy8g5bCR44GX5b6F44Gj44Gm44GL44KJ44G+44Go44KB44Gm5pu05paw44GZ44KLXG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBVcGRhdGUgJHtwYWdlSWRzLmxlbmd0aH0gcGFnZXNgKTtcbiAgICAgICAgc2V0QnViYmxlcyhtYWtlQnViYmxlcyhwYWdlSWRzKSk7XG4gICAgICB9LCAxMCk7XG4gICAgfTtcblxuICAgIC8vIOabtOaWsOOCkuizvOiqreOBmeOCi1xuICAgIHBhZ2VJZHMuZm9yRWFjaCgoaWQpID0+IHN1YnNjcmliZShpZCwgdXBkYXRlRGF0YSkpO1xuICAgIHJldHVybiAoKSA9PiBwYWdlSWRzLmZvckVhY2goKGlkKSA9PiB1bnN1YnNjcmliZShpZCwgdXBkYXRlRGF0YSkpO1xuICB9LCBwYWdlSWRzKTtcblxuICAvLyBkZWJ1Z+eUqFxuXG4gIHJldHVybiBidWJibGVzO1xufTtcblxuY29uc3QgbWFrZUJ1YmJsZXMgPSAocGFnZUlkczogcmVhZG9ubHkgSURbXSk6IHJlYWRvbmx5IEJ1YmJsZVtdID0+IHtcbiAgY29uc3QgYnViYmxlcyA9IFsuLi5sb2FkKHBhZ2VJZHMpXS5mbGF0TWFwKChidWJibGUpID0+XG4gICAgYnViYmxlID8gW2J1YmJsZV0gOiBbXVxuICApO1xuXG4gIC8vIGRlYnVn55SoXG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgUmVxdWlyZWQ6ICR7cGFnZUlkcy5sZW5ndGh9IHBhZ2VzLCAke2J1YmJsZXMubGVuZ3RofSBmb3VuZGAsXG4gICAgYnViYmxlcyxcbiAgKTtcbiAgcmV0dXJuIGJ1YmJsZXM7XG59O1xuIiwgIi8qKiBAanN4IGggKi9cbi8qKiBAanN4RnJhZyBGcmFnbWVudCAqL1xuLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIvPlxuaW1wb3J0IHsgQ2FyZCB9IGZyb20gXCIuL0NhcmQudHN4XCI7XG5pbXBvcnQgeyBoLCB1c2VNZW1vIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyB1c2VCdWJibGVEYXRhIH0gZnJvbSBcIi4vdXNlQnViYmxlRGF0YS50c1wiO1xuaW1wb3J0IHsgQnViYmxlIH0gZnJvbSBcIi4vc3RvcmFnZS50c1wiO1xuaW1wb3J0IHsgTGlua1RvIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IElELCB0b0lkIH0gZnJvbSBcIi4vaWQudHNcIjtcbmltcG9ydCB7IEJ1YmJsZU9wZXJhdG9ycywgU291cmNlIH0gZnJvbSBcIi4vdXNlQnViYmxlcy50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhcmRMaXN0UHJvcHMge1xuICBkZWxheTogbnVtYmVyO1xuICBwcmVmZXRjaDogKHByb2plY3Q6IHN0cmluZywgdGl0bGU6IHN0cmluZykgPT4gdm9pZDtcbiAgLyoqIGtleSDjg5rjg7zjgrjjgqvjg7zjg4njga5JRCwgdmFsdWU6IOmAhuODquODs+OCr+WFiCAqL1xuICBsaW5rZWQ6IE1hcDxJRCwgTGlua1RvPjtcbiAgLyoqIGtleSDjg5rjg7zjgrjjgqvjg7zjg4njga5JRCwgdmFsdWU6IOmAhuODquODs+OCr+WFiCAqL1xuICBleHRlcm5hbExpbmtlZDogTWFwPElELCBMaW5rVG8+O1xuICBidWJibGU6IEJ1YmJsZU9wZXJhdG9yc1tcImJ1YmJsZVwiXTtcbiAgc291cmNlOiBQaWNrPFNvdXJjZSwgXCJwcm9qZWN0XCIgfCBcInRpdGxlXCIgfCBcInBvc2l0aW9uXCI+O1xuICBwcm9qZWN0c0ZvclNvcnQ6IFNldDxzdHJpbmc+O1xuICBvbkNsaWNrPzogaC5KU1guTW91c2VFdmVudEhhbmRsZXI8SFRNTFVMaXN0RWxlbWVudD47XG59XG5cbmV4cG9ydCBjb25zdCBDYXJkTGlzdCA9ICh7XG4gIHNvdXJjZSxcbiAgbGlua2VkLFxuICBleHRlcm5hbExpbmtlZCxcbiAgcHJvamVjdHNGb3JTb3J0OiBwcm9qZWN0c0ZvclNvcnRfLFxuICAuLi5wcm9wc1xufTogQ2FyZExpc3RQcm9wcykgPT4ge1xuICBjb25zdCBpZHMgPSB1c2VNZW1vKCgpID0+IFsuLi5saW5rZWQua2V5cygpLCAuLi5leHRlcm5hbExpbmtlZC5rZXlzKCldLCBbXG4gICAgbGlua2VkLFxuICAgIGV4dGVybmFsTGlua2VkLFxuICBdKTtcbiAgY29uc3QgY2FyZHMgPSB1c2VCdWJibGVEYXRhKGlkcyk7XG5cbiAgY29uc3QgcHJvamVjdHNGb3JTb3J0ID0gdXNlTWVtbygoKSA9PiBbLi4ucHJvamVjdHNGb3JTb3J0X10sIFtcbiAgICBwcm9qZWN0c0ZvclNvcnRfLFxuICBdKTtcbiAgLyoqIOabtOaWsOaXpeaZgumZjemghuOBqHByb2plY3TmmIfpoIbjgavkuKbjgbPmm7/jgYjjgZ/plqLpgKPjg5rjg7zjgrjjg4fjg7zjgr9cbiAgICpcbiAgICogZXh0ZXJuYWxDYXJkc+OBr+WIhuOBkeOBquOBhFxuICAgKi9cbiAgY29uc3Qgc29ydGVkQ2FyZHMgPSB1c2VNZW1vKFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBhcmUgPSAoYTogQnViYmxlLCBiOiBCdWJibGUpID0+IHtcbiAgICAgICAgY29uc3QgYUluZGV4ID0gcHJvamVjdHNGb3JTb3J0LmluZGV4T2YoYS5wcm9qZWN0KTtcbiAgICAgICAgY29uc3QgYkluZGV4ID0gcHJvamVjdHNGb3JTb3J0LmluZGV4T2YoYi5wcm9qZWN0KTtcblxuICAgICAgICBpZiAoYUluZGV4ID09PSBiSW5kZXgpIHJldHVybiBiLnVwZGF0ZWQgLSBhLnVwZGF0ZWQ7XG4gICAgICAgIGlmIChhSW5kZXggPCAwKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGJJbmRleCA8IDApIHJldHVybiAtMTtcbiAgICAgICAgcmV0dXJuIGFJbmRleCAtIGJJbmRleDtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBbLi4uY2FyZHNdLnNvcnQoY29tcGFyZSk7XG4gICAgfSxcbiAgICBbY2FyZHMsIHByb2plY3RzRm9yU29ydF0sXG4gICk7XG5cbiAgY29uc3QgY2FyZFN0eWxlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIGJvdHRvbTogYCR7c291cmNlLnBvc2l0aW9uLmJvdHRvbX1weGAsXG4gICAgbWF4V2lkdGg6IGAke3NvdXJjZS5wb3NpdGlvbi5tYXhXaWR0aH1weGAsXG4gICAgLi4uKFwibGVmdFwiIGluIHNvdXJjZS5wb3NpdGlvblxuICAgICAgPyB7XG4gICAgICAgIGxlZnQ6IGAke3NvdXJjZS5wb3NpdGlvbi5sZWZ0fXB4YCxcbiAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICByaWdodDogYCR7c291cmNlLnBvc2l0aW9uLnJpZ2h0fXB4YCxcbiAgICAgIH0pLFxuICB9KSwgW1xuICAgIHNvdXJjZS5wb3NpdGlvbixcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8dWxcbiAgICAgIGNsYXNzTmFtZT1cImNhcmQtYnViYmxlXCJcbiAgICAgIHN0eWxlPXtjYXJkU3R5bGV9XG4gICAgICBvbkNsaWNrPXtwcm9wcy5vbkNsaWNrfVxuICAgID5cbiAgICAgIHtzb3J0ZWRDYXJkcy5tYXAoKFxuICAgICAgICB7XG4gICAgICAgICAgcHJvamVjdCxcbiAgICAgICAgICB0aXRsZUxjLFxuICAgICAgICAgIGxpbmVzOiBbeyB0ZXh0OiB0aXRsZSB9XSxcbiAgICAgICAgICBkZXNjcmlwdGlvbnMsXG4gICAgICAgICAgaW1hZ2UsXG4gICAgICAgIH0sXG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gdG9JZChwcm9qZWN0LCB0aXRsZUxjKTtcbiAgICAgICAgLy8gaG9va+OBruioiOeul+OBq+ODqeOCsOOBjOOBguOCiuOAgWxpbmtUb+OBjOimi+OBpOOBi+OCieOBquOBhOWgtOWQiOOBjOOBguOCi1xuICAgICAgICBjb25zdCBsaW5rVG8gPSBsaW5rZWQuZ2V0KGtleSkgPz8gZXh0ZXJuYWxMaW5rZWQuZ2V0KGtleSk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8bGkga2V5PXtrZXl9PlxuICAgICAgICAgICAgPENhcmRcbiAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgICAgICBsaW5rVG89e2xpbmtUb31cbiAgICAgICAgICAgICAgZGVzY3JpcHRpb25zPXtkZXNjcmlwdGlvbnN9XG4gICAgICAgICAgICAgIHRodW1ibmFpbD17aW1hZ2UgPz8gXCJcIn1cbiAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfSl9XG4gICAgPC91bD5cbiAgKTtcbn07XG4iLCAiZXhwb3J0IGludGVyZmFjZSBTY3JhcGJveExpbmsge1xuICBocmVmOiBzdHJpbmc7XG4gIHBhdGhUeXBlOiBcInJvb3RcIiB8IFwicmVsYXRpdmVcIjtcbn1cblxuLyoqIFNjcmFwYm946KiY5rOV44Gu44Oq44Oz44Kv44GL44KJ44CBcHJvamVjdCwgdGl0bGUsIGhhc2jjgpLlj5bjgorlh7rjgZlcbiAqXG4gKiBAcGFyYW0gbGluayDmp4vmlofop6PmnpDjgZfjgZ9TY3JhcGJveOiomOazleOBruODquODs+OCr1xuICogQHJldHVybiDmir3lh7rjgZfjgZ9wcm9qZWN0LCB0aXRsZSwgaGFzaFxuICovXG5leHBvcnQgY29uc3QgcGFyc2VMaW5rID0gKFxuICBsaW5rOiBTY3JhcGJveExpbmssXG4pOiB7IHByb2plY3Q6IHN0cmluZzsgdGl0bGU/OiBzdHJpbmc7IGhhc2g/OiBzdHJpbmcgfSB8IHtcbiAgcHJvamVjdD86IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgaGFzaD86IHN0cmluZztcbn0gPT4ge1xuICBpZiAobGluay5wYXRoVHlwZSA9PT0gXCJyb290XCIpIHtcbiAgICBjb25zdCBbLCBwcm9qZWN0ID0gXCJcIiwgdGl0bGUgPSBcIlwiXSA9IGxpbmsuaHJlZi5tYXRjaChcbiAgICAgIC9cXC8oW1xcd1xcLV0rKSg/OlxcLz98XFwvKC4qKSkkLyxcbiAgICApID8/IFtcIlwiLCBcIlwiLCBcIlwiXTtcbiAgICBpZiAocHJvamVjdCA9PT0gXCJcIikge1xuICAgICAgdGhyb3cgU3ludGF4RXJyb3IoYEZhaWxlZCB0byBnZXQgYSBwcm9qZWN0IG5hbWUgZnJvbSBcIiR7bGluay5ocmVmfVwiYCk7XG4gICAgfVxuICAgIGNvbnN0IFssIGhhc2hdID0gdGl0bGU/Lm1hdGNoPy4oLyMoW2EtZlxcZF17MjQsMzJ9KSQvKSA/PyBbXCJcIiwgXCJcIl07XG4gICAgcmV0dXJuIHRpdGxlID09PSBcIlwiXG4gICAgICA/IHsgcHJvamVjdCB9XG4gICAgICA6IGhhc2ggPT09IFwiXCJcbiAgICAgID8geyBwcm9qZWN0LCB0aXRsZSB9XG4gICAgICA6IHsgcHJvamVjdCwgdGl0bGU6IHRpdGxlLnNsaWNlKDAsIC0xIC0gaGFzaC5sZW5ndGgpLCBoYXNoIH07XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgWywgaGFzaF0gPSBsaW5rLmhyZWYubWF0Y2goLyMoW2EtZlxcZF17MjQsMzJ9KSQvKSA/PyBbXCJcIiwgXCJcIl07XG4gICAgcmV0dXJuIGhhc2ggPT09IFwiXCJcbiAgICAgID8geyB0aXRsZTogbGluay5ocmVmIH1cbiAgICAgIDogeyB0aXRsZTogbGluay5ocmVmLnNsaWNlKDAsIC0xIC0gaGFzaC5sZW5ndGgpLCBoYXNoIH07XG4gIH1cbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIvPlxuXG5pbXBvcnQgeyBOb2RlIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1wYXJzZXIudHNcIjtcbmltcG9ydCB7IHBhcnNlTGluayB9IGZyb20gXCIuL3BhcnNlTGluay50c1wiO1xuaW1wb3J0IHsgTGlua1RvIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IHRvVGl0bGVMYyB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5cbi8qKiDmjIflrprjgZfjgZ/jg6rjg7Pjgq/jgYxTY3JhcGJveOOBruODmuODvOOCuOS4reOBq+WtmOWcqOOBmeOCi+OBi+iqv+OBueOCi1xuICpcbiAqIEBwYXJhbSBsaW5rIOiqv+OBueOBn+OBhOODquODs+OCr+OBruOCv+OCpOODiOODq1xuICogQHBhcmFtIG5vZGVzIOODmuODvOOCuOOBruani+aWh+ino+aekOe1kOaenFxuICogQHJldHVybiDopovjgaTjgYvjgaPjgZ/jgolgdHJ1ZWBcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0xpbmsgPSAoXG4gIGxpbms6IExpbmtUbyxcbiAgbm9kZXM6IE5vZGVbXSxcbik6IGJvb2xlYW4gPT5cbiAgbm9kZXMuc29tZSgobm9kZSkgPT4ge1xuICAgIGNvbnN0IGlzUmVsYXRpdmUgPSAhbGluay5wcm9qZWN0O1xuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICBjYXNlIFwiaGFzaFRhZ1wiOlxuICAgICAgICByZXR1cm4gaXNSZWxhdGl2ZSAmJlxuICAgICAgICAgIHRvVGl0bGVMYyhub2RlLmhyZWYpID09PSBsaW5rLnRpdGxlTGM7XG4gICAgICBjYXNlIFwibGlua1wiOiB7XG4gICAgICAgIGlmIChub2RlLnBhdGhUeXBlID09IFwiYWJzb2x1dGVcIikgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoKG5vZGUucGF0aFR5cGUgPT09IFwicmVsYXRpdmVcIikgIT09IGlzUmVsYXRpdmUpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBjb25zdCB7IHByb2plY3QsIHRpdGxlID0gXCJcIiB9ID0gcGFyc2VMaW5rKHtcbiAgICAgICAgICBwYXRoVHlwZTogbm9kZS5wYXRoVHlwZSxcbiAgICAgICAgICBocmVmOiBub2RlLmhyZWYsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaXNSZWxhdGl2ZVxuICAgICAgICAgID8gIXByb2plY3QgJiYgdG9UaXRsZUxjKHRpdGxlKSA9PT0gbGluay50aXRsZUxjXG4gICAgICAgICAgOiBwcm9qZWN0ID09PSBsaW5rLnByb2plY3QgJiZcbiAgICAgICAgICAgIHRvVGl0bGVMYyh0aXRsZSkgPT09IGxpbmsudGl0bGVMYztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJxdW90ZVwiOlxuICAgICAgY2FzZSBcInN0cm9uZ1wiOlxuICAgICAgY2FzZSBcImRlY29yYXRpb25cIjpcbiAgICAgICAgcmV0dXJuIGhhc0xpbmsobGluaywgbm9kZS5ub2Rlcyk7XG4gICAgfVxuICB9KTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIi8+XG5cbi8qKiBAanN4IGggKi9cbi8qKiBAanN4RnJhZyBGcmFnbWVudCAqL1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50Q2hpbGRyZW4sXG4gIGNyZWF0ZUNvbnRleHQsXG4gIEZyYWdtZW50LFxuICBoLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IHVzZUthVGVYIH0gZnJvbSBcIi4vZGVwcy91c2VLYVRlWC50c1wiO1xuaW1wb3J0IHtcbiAgQ29kZUJsb2NrIGFzIENvZGVCbG9ja1R5cGUsXG4gIENvbW1hbmRMaW5lTm9kZSxcbiAgRGVjb3JhdGlvbk5vZGUsXG4gIEZvcm11bGFOb2RlLFxuICBHb29nbGVNYXBOb2RlLFxuICBIYXNoVGFnTm9kZSxcbiAgSWNvbk5vZGUsXG4gIEltYWdlTm9kZSxcbiAgTGluZSBhcyBMaW5lVHlwZSxcbiAgTGlua05vZGUsXG4gIE5vZGUgYXMgTm9kZVR5cGUsXG4gIFN0cm9uZ0ljb25Ob2RlLFxuICBUYWJsZSBhcyBUYWJsZVR5cGUsXG59IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtcGFyc2VyLnRzXCI7XG5pbXBvcnQgeyBwYXJzZUxpbmsgfSBmcm9tIFwiLi9wYXJzZUxpbmsudHNcIjtcbmltcG9ydCB7IGhhc0xpbmsgfSBmcm9tIFwiLi9oYXNMaW5rLnRzXCI7XG5pbXBvcnQgeyB0b0lkIH0gZnJvbSBcIi4vaWQudHNcIjtcbmltcG9ydCB7IHN0YXlIb3ZlcmluZyB9IGZyb20gXCIuL3N0YXlIb3ZlcmluZy50c1wiO1xuaW1wb3J0IHsgQnViYmxlT3BlcmF0b3JzIH0gZnJvbSBcIi4vdXNlQnViYmxlcy50c1wiO1xuaW1wb3J0IHsgTGlua1RvIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IHVzZUJ1YmJsZURhdGEgfSBmcm9tIFwiLi91c2VCdWJibGVEYXRhLnRzXCI7XG5pbXBvcnQgeyBpc0VtcHR5TGluayB9IGZyb20gXCIuL3N0b3JhZ2UudHNcIjtcbmltcG9ydCB7IGNhbGNCdWJibGVQb3NpdGlvbiB9IGZyb20gXCIuL3Bvc2l0aW9uLnRzXCI7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtcGFyc2VyLnRzXCI7XG5pbXBvcnQge1xuICBBbmNob3JGTU5vZGUsXG4gIEF1ZGlvTm9kZSxcbiAgZW5jb2RlVGl0bGVVUkksXG4gIHBhcnNlQWJzb2x1dGVMaW5rLFxuICBzbGVlcCxcbiAgU3BvdGlmeU5vZGUsXG4gIFZpZGVvTm9kZSxcbiAgVmltZW9Ob2RlLFxuICBZb3V0dWJlTGlzdE5vZGUsXG4gIFlvdXR1YmVOb2RlLFxufSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LXN0ZC50c1wiO1xuaW1wb3J0IHR5cGUgeyBTY3JhcGJveCB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcIi4vdXNlVGhlbWUudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIC8qKiBDU1JGIHRva2VuICovXG4gICAgX2NzcmY/OiBzdHJpbmc7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlUHJvcHMgZXh0ZW5kcyBCdWJibGVPcGVyYXRvcnMge1xuICB0aXRsZTogc3RyaW5nO1xuICBwcm9qZWN0OiBzdHJpbmc7XG4gIHdoaXRlTGlzdDogU2V0PHN0cmluZz47XG4gIGRlbGF5OiBudW1iZXI7XG4gIGxpbmVzOiB7IHRleHQ6IHN0cmluZzsgaWQ6IHN0cmluZyB9W10gfCBzdHJpbmdbXTtcbiAgbm9JbmRlbnQ/OiBib29sZWFuO1xuICBoYXNoPzogc3RyaW5nO1xuICBsaW5rVG8/OiBMaW5rVG87XG5cbiAgcHJlZmV0Y2g6IChwcm9qZWN0OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbi8vIDxQYWdlIC8+6ZmQ5a6a44GuY29udGV4dFxuY29uc3QgY29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8XG4gICYge1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgcHJvamVjdDogc3RyaW5nO1xuICAgIHdoaXRlTGlzdDogU2V0PHN0cmluZz47XG4gICAgZGVsYXk6IG51bWJlcjtcbiAgICBwcmVmZXRjaDogKHByb2plY3Q6IHN0cmluZywgdGl0bGU6IHN0cmluZykgPT4gdm9pZDtcbiAgfVxuICAmIEJ1YmJsZU9wZXJhdG9yc1xuPih7XG4gIHRpdGxlOiBcIlwiLFxuICBwcm9qZWN0OiBcIlwiLFxuICB3aGl0ZUxpc3Q6IG5ldyBTZXQoKSxcbiAgYnViYmxlOiAoKSA9PiB7fSxcbiAgaGlkZTogKCkgPT4ge30sXG4gIGRlbGF5OiAwLFxuICBwcmVmZXRjaDogKCkgPT4ge30sXG59KTtcblxuZXhwb3J0IGNvbnN0IFBhZ2UgPSAoXG4gIHsgbGluZXMsIHByb2plY3QsIHRpdGxlLCB3aGl0ZUxpc3QsIG5vSW5kZW50LCBoYXNoLCBsaW5rVG8sIC4uLnByb3BzIH06XG4gICAgUGFnZVByb3BzLFxuKTogaC5KU1guRWxlbWVudCA9PiB7XG4gIGNvbnN0IGxpbmVJZHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGxpbmVzLmZsYXRNYXAoKGxpbmUpID0+IHR5cGVvZiBsaW5lID09PSBcInN0cmluZ1wiID8gW10gOiBbbGluZS5pZF0pLFxuICAgIFtsaW5lc10sXG4gICk7XG4gIGNvbnN0IGJsb2NrcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGxldCBjb3VudGVyID0gMDtcbiAgICByZXR1cm4gcGFyc2UoXG4gICAgICBsaW5lcy5tYXAoKGxpbmUpID0+IHR5cGVvZiBsaW5lID09PSBcInN0cmluZ1wiID8gbGluZSA6IGxpbmUudGV4dCkuam9pbihcbiAgICAgICAgXCJcXG5cIixcbiAgICAgICksXG4gICAgICB7IGhhc1RpdGxlOiB0cnVlIH0sXG4gICAgKS5tYXAoKGJsb2NrKSA9PiB7XG4gICAgICBzd2l0Y2ggKGJsb2NrLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcInRpdGxlXCI6XG4gICAgICAgIGNhc2UgXCJsaW5lXCI6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJsb2NrLFxuICAgICAgICAgICAgaWQ6IGxpbmVJZHNbY291bnRlcisrXSxcbiAgICAgICAgICB9O1xuICAgICAgICBjYXNlIFwiY29kZUJsb2NrXCI6IHtcbiAgICAgICAgICBjb25zdCBzdGFydCA9IGNvdW50ZXI7XG4gICAgICAgICAgY291bnRlciArPSBibG9jay5jb250ZW50LnNwbGl0KFwiXFxuXCIpLmxlbmd0aCArIDE7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJsb2NrLFxuICAgICAgICAgICAgaWRzOiBsaW5lSWRzLnNsaWNlKHN0YXJ0LCBjb3VudGVyKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJ0YWJsZVwiOiB7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSBjb3VudGVyO1xuICAgICAgICAgIGNvdW50ZXIgKz0gYmxvY2suY2VsbHMubGVuZ3RoICsgMTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmxvY2ssXG4gICAgICAgICAgICBpZHM6IGxpbmVJZHMuc2xpY2Uoc3RhcnQsIGNvdW50ZXIpLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW2xpbmVzLCBsaW5lSWRzXSk7XG5cbiAgY29uc3Qgc2Nyb2xsSWQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaGFzaCAmJiBsaW5lSWRzLmluY2x1ZGVzKGhhc2gpKSByZXR1cm4gaGFzaDtcbiAgICBpZiAoIWxpbmtUbykgcmV0dXJuO1xuXG4gICAgcmV0dXJuIChibG9ja3MuZmluZCgoYmxvY2spID0+IHtcbiAgICAgIGlmIChibG9jay50eXBlICE9PSBcImxpbmVcIikgcmV0dXJuIGZhbHNlO1xuXG4gICAgICByZXR1cm4gaGFzTGluayhsaW5rVG8sIGJsb2NrLm5vZGVzKTtcbiAgICB9KSBhcyBMaW5lVHlwZSAmIHsgaWQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkKT8uaWQ7XG4gIH0sIFtibG9ja3MsIGxpbmVJZHMsIGhhc2gsIGxpbmtUbz8ucHJvamVjdCwgbGlua1RvPy50aXRsZUxjXSk7XG5cbiAgLy8g44Oq44Oz44Kv5YWI44Gr44K544Kv44Ot44O844Or44GZ44KLXG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzY3JvbGxJZCkgcmV0dXJuO1xuXG4gICAgY29uc3QgdGFyZ2V0TGluZSA9IHJlZi5jdXJyZW50Py5xdWVyeVNlbGVjdG9yKGBbZGF0YS1pZD1cIiR7c2Nyb2xsSWR9XCJdYCk7XG4gICAgY29uc3Qgc2Nyb2xsWSA9IGdsb2JhbFRoaXMuc2Nyb2xsWTtcbiAgICB0YXJnZXRMaW5lPy5zY3JvbGxJbnRvVmlldz8uKHsgYmxvY2s6IFwiY2VudGVyXCIgfSk7XG4gICAgZ2xvYmFsVGhpcy5zY3JvbGwoMCwgc2Nyb2xsWSk7XG4gIH0sIFtzY3JvbGxJZF0pO1xuXG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUocHJvamVjdCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImxpbmVzXCIgZGF0YS10aGVtZT17dGhlbWV9IHJlZj17cmVmfT5cbiAgICAgIDxjb250ZXh0LlByb3ZpZGVyXG4gICAgICAgIHZhbHVlPXt7IHByb2plY3QsIHRpdGxlLCB3aGl0ZUxpc3QsIC4uLnByb3BzIH19XG4gICAgICA+XG4gICAgICAgIHtibG9ja3MubWFwKChibG9jaykgPT4ge1xuICAgICAgICAgIHN3aXRjaCAoYmxvY2sudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcInRpdGxlXCI6XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxMaW5lXG4gICAgICAgICAgICAgICAgICAgIGtleT17YmxvY2suaWR9XG4gICAgICAgICAgICAgICAgICAgIGluZGV4PXtibG9jay5pZH1cbiAgICAgICAgICAgICAgICAgICAgaW5kZW50PXswfVxuICAgICAgICAgICAgICAgICAgICBub0luZGVudD17bm9JbmRlbnR9XG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluaz17YmxvY2suaWQgPT09IHNjcm9sbElkfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBhZ2UtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2AvJHtwcm9qZWN0fS8ke2VuY29kZVRpdGxlVVJJKGJsb2NrLnRleHQpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgcmVsPXtwcm9qZWN0ID09PSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJyb3V0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwibm9vcGVuZXIgbm9yZWZlcnJlclwifVxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD17cHJvamVjdCA9PT0gc2NyYXBib3guUHJvamVjdC5uYW1lID8gXCJcIiA6IFwiX2JsYW5rXCJ9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7YmxvY2sudGV4dH1cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgPC9MaW5lPlxuICAgICAgICAgICAgICAgICAgPGhyIC8+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlIFwiY29kZUJsb2NrXCI6IHtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8Q29kZUJsb2NrXG4gICAgICAgICAgICAgICAgICBrZXk9e2Jsb2NrLmlkc1swXX1cbiAgICAgICAgICAgICAgICAgIGJsb2NrPXtibG9ja31cbiAgICAgICAgICAgICAgICAgIG5vSW5kZW50PXtub0luZGVudH1cbiAgICAgICAgICAgICAgICAgIGlkcz17YmxvY2suaWRzfVxuICAgICAgICAgICAgICAgICAgc2Nyb2xsSWQ9e3Njcm9sbElkfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidGFibGVcIjoge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxUYWJsZVxuICAgICAgICAgICAgICAgICAga2V5PXtibG9jay5pZHNbMF19XG4gICAgICAgICAgICAgICAgICBibG9jaz17YmxvY2t9XG4gICAgICAgICAgICAgICAgICBub0luZGVudD17bm9JbmRlbnR9XG4gICAgICAgICAgICAgICAgICBpZHM9e2Jsb2NrLmlkc31cbiAgICAgICAgICAgICAgICAgIHNjcm9sbElkPXtzY3JvbGxJZH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImxpbmVcIjpcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8TGluZVxuICAgICAgICAgICAgICAgICAga2V5PXtibG9jay5pZH1cbiAgICAgICAgICAgICAgICAgIGluZGV4PXtibG9jay5pZH1cbiAgICAgICAgICAgICAgICAgIGluZGVudD17YmxvY2suaW5kZW50fVxuICAgICAgICAgICAgICAgICAgbm9JbmRlbnQ9e25vSW5kZW50fVxuICAgICAgICAgICAgICAgICAgcGVybWFsaW5rPXtibG9jay5pZCA9PT0gc2Nyb2xsSWR9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2Jsb2NrLm5vZGVzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgPyBibG9jay5ub2Rlcy5tYXAoKG5vZGUpID0+IDxOb2RlIG5vZGU9e25vZGV9IC8+KVxuICAgICAgICAgICAgICAgICAgICA6IDxiciAvPn1cbiAgICAgICAgICAgICAgICA8L0xpbmU+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KX1cbiAgICAgIDwvY29udGV4dC5Qcm92aWRlcj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbnR5cGUgTGluZVByb3BzID0ge1xuICBpbmRleDogc3RyaW5nO1xuICBpbmRlbnQ6IG51bWJlcjtcbiAgcGVybWFsaW5rPzogYm9vbGVhbjtcbiAgbm9JbmRlbnQ/OiBib29sZWFuO1xuICBjaGlsZHJlbjogQ29tcG9uZW50Q2hpbGRyZW47XG59O1xuXG5jb25zdCBMaW5lID0gKHsgaW5kZXgsIGluZGVudCwgbm9JbmRlbnQsIGNoaWxkcmVuLCBwZXJtYWxpbmsgfTogTGluZVByb3BzKSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2BsaW5lJHtwZXJtYWxpbmsgPyBcIiBwZXJtYWxpbmtcIiA6IFwiXCJ9YH1cbiAgICBkYXRhLWlkPXtpbmRleH1cbiAgICBkYXRhLWluZGVudD17aW5kZW50fVxuICAgIHN0eWxlPXt7IFwibWFyZ2luLWxlZnRcIjogbm9JbmRlbnQgPyBcIlwiIDogYCR7MS4wICogaW5kZW50fWVtYCB9fVxuICA+XG4gICAge2NoaWxkcmVufVxuICA8L2Rpdj5cbik7XG5cbnR5cGUgQ29kZUJsb2NrUHJvcHMgPSB7XG4gIGJsb2NrOiBDb2RlQmxvY2tUeXBlO1xuICBub0luZGVudD86IGJvb2xlYW47XG4gIGlkczogc3RyaW5nW107XG4gIHNjcm9sbElkPzogc3RyaW5nO1xufTtcbmNvbnN0IENvZGVCbG9jayA9IChcbiAgeyBibG9jazogeyBmaWxlTmFtZSwgY29udGVudCwgaW5kZW50IH0sIGlkcywgc2Nyb2xsSWQgfTogQ29kZUJsb2NrUHJvcHMsXG4pID0+IHtcbiAgY29uc3QgeyBwcm9qZWN0LCB0aXRsZSB9ID0gdXNlQ29udGV4dChjb250ZXh0KTtcbiAgY29uc3QgW2J1dHRvbkxhYmVsLCBzZXRCdXR0b25MYWJlbF0gPSB1c2VTdGF0ZShcIlxcdWYwYzVcIik7XG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGU6IGguSlNYLlRhcmdldGVkTW91c2VFdmVudDxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29udGVudCk7XG4gICAgICAgIHNldEJ1dHRvbkxhYmVsKFwiQ29waWVkXCIpO1xuICAgICAgICBhd2FpdCBzbGVlcCgxMDAwKTtcbiAgICAgICAgc2V0QnV0dG9uTGFiZWwoXCJcXHVmMGM1XCIpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBhbGVydChgRmFpbGVkIHRvIGNvcHkgdGhlIGNvZGUgYmxvY2tcXG5FcnJvcjoke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtjb250ZW50XSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8TGluZSBpbmRleD17aWRzWzBdfSBpbmRlbnQ9e2luZGVudH0gcGVybWFsaW5rPXtpZHNbMF0gPT09IHNjcm9sbElkfT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiY29kZS1ibG9ja1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImNvZGUtYmxvY2stc3RhcnRcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGhyZWY9e2AvYXBpL2NvZGUvJHtwcm9qZWN0fS8ke2VuY29kZVRpdGxlVVJJKHRpdGxlKX0vJHtmaWxlTmFtZX1gfVxuICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7ZmlsZU5hbWV9XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImNvcHlcIiB0aXRsZT1cIkNvcHlcIiBvbkNsaWNrPXtoYW5kbGVDbGlja30+XG4gICAgICAgICAgICB7YnV0dG9uTGFiZWx9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L0xpbmU+XG4gICAgICA8PlxuICAgICAgICB7Y29udGVudC5zcGxpdChcIlxcblwiKS5tYXAoKGxpbmUsIGluZGV4KSA9PiAoXG4gICAgICAgICAgPExpbmVcbiAgICAgICAgICAgIGluZGV4PXtpZHNbaW5kZXggKyAxXX1cbiAgICAgICAgICAgIGluZGVudD17aW5kZW50fVxuICAgICAgICAgICAgcGVybWFsaW5rPXtpZHNbaW5kZXggKyAxXSA9PT0gc2Nyb2xsSWR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGNvZGUgY2xhc3NOYW1lPVwiY29kZS1ibG9ja1wiPlxuICAgICAgICAgICAgICB7bGluZX1cbiAgICAgICAgICAgIDwvY29kZT5cbiAgICAgICAgICA8L0xpbmU+XG4gICAgICAgICkpfVxuICAgICAgPC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG50eXBlIFRhYmxlUHJvcHMgPSB7XG4gIGJsb2NrOiBUYWJsZVR5cGU7XG4gIG5vSW5kZW50PzogYm9vbGVhbjtcbiAgc2Nyb2xsSWQ/OiBzdHJpbmc7XG4gIGlkczogc3RyaW5nW107XG59O1xuY29uc3QgVGFibGUgPSAoXG4gIHtcbiAgICBibG9jazogeyBmaWxlTmFtZSwgY2VsbHMsIGluZGVudCB9LFxuICAgIGlkcyxcbiAgICBzY3JvbGxJZCxcbiAgfTogVGFibGVQcm9wcyxcbikgPT4ge1xuICBjb25zdCB7IHByb2plY3QsIHRpdGxlIH0gPSB1c2VDb250ZXh0KGNvbnRleHQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxMaW5lIGluZGV4PXtpZHNbMF19IGluZGVudD17aW5kZW50fSBwZXJtYWxpbms9e2lkc1swXSA9PT0gc2Nyb2xsSWR9PlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0YWJsZS1ibG9ja1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRhYmxlLWJsb2NrLXN0YXJ0XCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPXtgL2FwaS90YWJsZS8ke3Byb2plY3R9LyR7XG4gICAgICAgICAgICAgICAgZW5jb2RlVGl0bGVVUkkodGl0bGUpXG4gICAgICAgICAgICAgIH0vJHtmaWxlTmFtZX0uY3N2YH1cbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2ZpbGVOYW1lfVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9MaW5lPlxuICAgICAgPD5cbiAgICAgICAge2NlbGxzLm1hcCgoY2VsbCwgaSkgPT4gKFxuICAgICAgICAgIDxMaW5lXG4gICAgICAgICAgICBpbmRleD17aWRzW2kgKyAxXX1cbiAgICAgICAgICAgIGluZGVudD17aW5kZW50fVxuICAgICAgICAgICAgcGVybWFsaW5rPXtpZHNbaSArIDFdID09PSBzY3JvbGxJZH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0YWJsZS1ibG9jayB0YWJsZS1ibG9jay1yb3dcIj5cbiAgICAgICAgICAgICAge2NlbGwubWFwKChyb3csIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgY2VsbCBjb2wtJHtpbmRleH1gfT5cbiAgICAgICAgICAgICAgICAgIHtyb3cubWFwKChub2RlKSA9PiA8Tm9kZSBub2RlPXtub2RlfSAvPil9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L0xpbmU+XG4gICAgICAgICkpfVxuICAgICAgPC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG50eXBlIE5vZGVQcm9wcyA9IHtcbiAgbm9kZTogTm9kZVR5cGU7XG59O1xuY29uc3QgTm9kZSA9ICh7IG5vZGUgfTogTm9kZVByb3BzKSA9PiB7XG4gIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgY2FzZSBcImNvZGVcIjpcbiAgICAgIHJldHVybiA8Y29kZSBjbGFzc05hbWU9XCJjb2RlXCI+e25vZGUudGV4dH08L2NvZGU+O1xuICAgIGNhc2UgXCJmb3JtdWxhXCI6XG4gICAgICByZXR1cm4gPEZvcm11bGEgbm9kZT17bm9kZX0gLz47XG4gICAgY2FzZSBcImNvbW1hbmRMaW5lXCI6XG4gICAgICByZXR1cm4gPENvbW1hbmRMaW5lIG5vZGU9e25vZGV9IC8+O1xuICAgIGNhc2UgXCJoZWxwZmVlbFwiOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGNvZGUgY2xhc3NOYW1lPVwiaGVscGZlZWxcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcmVmaXhcIj4/PC9zcGFuPntcIiBcIn1cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJlbnRyeVwiPntub2RlLnRleHR9PC9zcGFuPlxuICAgICAgICA8L2NvZGU+XG4gICAgICApO1xuICAgIGNhc2UgXCJxdW90ZVwiOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGJsb2NrcXVvdGUgY2xhc3NOYW1lPVwicXVvdGVcIj5cbiAgICAgICAgICB7bm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IDxOb2RlIG5vZGU9e25vZGV9IC8+KX1cbiAgICAgICAgPC9ibG9ja3F1b3RlPlxuICAgICAgKTtcbiAgICBjYXNlIFwic3Ryb25nXCI6XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgIHtub2RlLm5vZGVzLm1hcCgobm9kZSkgPT4gPE5vZGUgbm9kZT17bm9kZX0gLz4pfVxuICAgICAgICA8L3N0cm9uZz5cbiAgICAgICk7XG4gICAgY2FzZSBcImRlY29yYXRpb25cIjpcbiAgICAgIHJldHVybiA8RGVjb3JhdGlvbiBub2RlPXtub2RlfSAvPjtcbiAgICBjYXNlIFwicGxhaW5cIjpcbiAgICBjYXNlIFwiYmxhbmtcIjpcbiAgICAgIHJldHVybiA8Pntub2RlLnRleHR9PC8+O1xuICAgIGNhc2UgXCJoYXNoVGFnXCI6XG4gICAgICByZXR1cm4gPEhhc2hUYWcgbm9kZT17bm9kZX0gLz47XG4gICAgY2FzZSBcImxpbmtcIjpcbiAgICAgIHJldHVybiA8TGluayBub2RlPXtub2RlfSAvPjtcbiAgICBjYXNlIFwiZ29vZ2xlTWFwXCI6XG4gICAgICByZXR1cm4gPEdvb2dsZU1hcCBub2RlPXtub2RlfSAvPjtcbiAgICBjYXNlIFwiaWNvblwiOlxuICAgICAgcmV0dXJuIDxJY29uIG5vZGU9e25vZGV9IC8+O1xuICAgIGNhc2UgXCJzdHJvbmdJY29uXCI6XG4gICAgICByZXR1cm4gPEljb24gbm9kZT17bm9kZX0gc3Ryb25nIC8+O1xuICAgIGNhc2UgXCJpbWFnZVwiOlxuICAgICAgcmV0dXJuIDxJbWFnZSBub2RlPXtub2RlfSAvPjtcbiAgICBjYXNlIFwic3Ryb25nSW1hZ2VcIjpcbiAgICAgIHJldHVybiA8aW1nIGNsYXNzTmFtZT1cImltYWdlIHN0cm9uZy1pbWFnZVwiIHNyYz17bm9kZS5zcmN9IC8+O1xuICAgIGNhc2UgXCJudW1iZXJMaXN0XCI6XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIHtgJHtub2RlLm51bWJlcn0uIGB9XG4gICAgICAgICAge25vZGUubm9kZXMubWFwKChub2RlKSA9PiA8Tm9kZSBub2RlPXtub2RlfSAvPil9XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgfVxufTtcblxudHlwZSBGb3JtdWxhUHJvcHMgPSB7IG5vZGU6IEZvcm11bGFOb2RlIH07XG5jb25zdCBGb3JtdWxhID0gKHsgbm9kZTogeyBmb3JtdWxhIH0gfTogRm9ybXVsYVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgcmVmLCBlcnJvciwgc2V0Rm9ybXVsYSB9ID0gdXNlS2FUZVgoXCJcIik7XG4gIHNldEZvcm11bGEoZm9ybXVsYSk7XG5cbiAgcmV0dXJuIChcbiAgICA8c3BhbiBjbGFzc05hbWU9e2Bmb3JtdWxhICR7ZXJyb3IgPyBcIiBlcnJvclwiIDogXCJcIn1gfT5cbiAgICAgIHtlcnJvclxuICAgICAgICA/IDxjb2RlPntmb3JtdWxhfTwvY29kZT5cbiAgICAgICAgOiA8c3BhbiBjbGFzc05hbWU9XCJrYXRleC1kaXNwbGF5XCIgcmVmPXtyZWZ9IC8+fVxuICAgIDwvc3Bhbj5cbiAgKTtcbn07XG50eXBlIERlY29yYXRpb25Qcm9wcyA9IHsgbm9kZTogRGVjb3JhdGlvbk5vZGUgfTtcbmNvbnN0IERlY29yYXRpb24gPSAoXG4gIHsgbm9kZTogeyBkZWNvcywgbm9kZXMgfSB9OiBEZWNvcmF0aW9uUHJvcHMsXG4pID0+IChcbiAgPHNwYW4gY2xhc3NOYW1lPXtkZWNvcy5tYXAoKGRlY28pID0+IGBkZWNvLSR7ZGVjb31gKS5qb2luKFwiIFwiKX0+XG4gICAge25vZGVzLm1hcCgobm9kZSkgPT4gPE5vZGUgbm9kZT17bm9kZX0gLz4pfVxuICA8L3NwYW4+XG4pO1xuXG50eXBlIENvbW1hbmRMaW5lUHJvcHMgPSB7IG5vZGU6IENvbW1hbmRMaW5lTm9kZSB9O1xuY29uc3QgQ29tbWFuZExpbmUgPSAoXG4gIHsgbm9kZSB9OiBDb21tYW5kTGluZVByb3BzLFxuKSA9PiB7XG4gIGNvbnN0IFtidXR0b25MYWJlbCwgc2V0QnV0dG9uTGFiZWxdID0gdXNlU3RhdGUoXCJcXHVmMGM1XCIpO1xuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChlOiBoLkpTWC5UYXJnZXRlZE1vdXNlRXZlbnQ8SFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KG5vZGUudGV4dCk7XG4gICAgICAgIHNldEJ1dHRvbkxhYmVsKFwiQ29waWVkXCIpO1xuICAgICAgICBhd2FpdCBzbGVlcCgxMDAwKTtcbiAgICAgICAgc2V0QnV0dG9uTGFiZWwoXCJcXHVmMGM1XCIpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBhbGVydChgRmFpbGVkIHRvIGNvcHkgdGhlIGNvZGUgYmxvY2tcXG5FcnJvcjoke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtub2RlLnRleHRdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxjb2RlIGNsYXNzTmFtZT1cImNsaVwiPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcmVmaXhcIj57bm9kZS5zeW1ib2x9PC9zcGFuPntcIiAgXCJ9XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImNvbW1hbmRcIj57bm9kZS50ZXh0fTwvc3Bhbj5cbiAgICAgIDwvY29kZT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRvb2wtYnV0dG9uc1wiPlxuICAgICAgICA8c3BhbiB0aXRsZT1cIkNvcHlcIiBjbGFzc05hbWU9XCJjb3B5XCIgb25DbGljaz17aGFuZGxlQ2xpY2t9PlxuICAgICAgICAgIHtidXR0b25MYWJlbH1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvPlxuICApO1xufTtcbnR5cGUgR29vZ2xlTWFwUHJvcHMgPSB7IG5vZGU6IEdvb2dsZU1hcE5vZGUgfTtcbmNvbnN0IEdvb2dsZU1hcCA9IChcbiAgeyBub2RlOiB7IHBsYWNlLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCB6b29tIH0gfTogR29vZ2xlTWFwUHJvcHMsXG4pID0+IChcbiAgPHNwYW4gY2xhc3NOYW1lPVwicG9pbnRpbmctZGV2aWNlLW1hcFwiPlxuICAgIDxhXG4gICAgICBocmVmPXtgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL3NlYXJjaC8ke3BsYWNlfS9AJHtsYXRpdHVkZX0sJHtsb25naXR1ZGV9LCR7em9vbX16YH1cbiAgICAgIHJlbD1cIm5vb3BuZXIgbm9yZWZlcnJlclwiXG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgID5cbiAgICAgIDxpbWdcbiAgICAgICAgY2xhc3NOYW1lPVwiZ29vZ2xlLW1hcFwiXG4gICAgICAgIHNyYz17YC9hcGkvZ29vZ2xlLW1hcC9zdGF0aWMtbWFwP2NlbnRlcj0ke2xhdGl0dWRlfSUyQyR7bG9uZ2l0dWRlfSZtYXJrZXJzPSR7cGxhY2V9Jnpvb209JHt6b29tfSZfY3NyZj0ke2dsb2JhbFRoaXMuX2NzcmZ9YH1cbiAgICAgIC8+XG4gICAgPC9hPlxuICA8L3NwYW4+XG4pO1xudHlwZSBJY29uUHJvcHMgPSB7XG4gIG5vZGU6IEljb25Ob2RlO1xuICBzdHJvbmc/OiBmYWxzZTtcbn0gfCB7XG4gIG5vZGU6IFN0cm9uZ0ljb25Ob2RlO1xuICBzdHJvbmc6IHRydWU7XG59O1xuY29uc3QgSWNvbiA9IChcbiAgeyBub2RlOiB7IHBhdGhUeXBlLCBwYXRoIH0sIHN0cm9uZyB9OiBJY29uUHJvcHMsXG4pID0+IHtcbiAgY29uc3QgeyBwcm9qZWN0OiBfcHJvamVjdCB9ID0gdXNlQ29udGV4dChjb250ZXh0KTtcbiAgY29uc3QgW3Byb2plY3QsIHRpdGxlXSA9IHBhdGhUeXBlID09PSBcInJlbGF0aXZlXCJcbiAgICA/IFtcbiAgICAgIF9wcm9qZWN0LFxuICAgICAgcGF0aCxcbiAgICBdXG4gICAgOiBwYXRoLm1hdGNoKC9cXC8oW1xcd1xcLV0rKVxcLyguKykkLyk/LnNsaWNlPy4oMSkgPz8gW19wcm9qZWN0LCBwYXRoXTtcbiAgY29uc3QgdGl0bGVMYyA9IGVuY29kZVRpdGxlVVJJKHRpdGxlKTtcblxuICByZXR1cm4gKFxuICAgIDxhXG4gICAgICBocmVmPXtgLyR7cHJvamVjdH0vJHt0aXRsZUxjfWB9XG4gICAgICByZWw9e3Byb2plY3QgPT09IHNjcmFwYm94LlByb2plY3QubmFtZSA/IFwicm91dGVcIiA6IFwibm9vcGVuZXIgbm9yZWZlcnJlclwifVxuICAgICAgdGFyZ2V0PXtwcm9qZWN0ID09PSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUgPyBcIlwiIDogXCJfYmxhbmtcIn1cbiAgICA+XG4gICAgICA8aW1nXG4gICAgICAgIGNsYXNzTmFtZT17c3Ryb25nID8gXCJpY29uIHN0cm9uZy1pY29uXCIgOiBcImljb25cIn1cbiAgICAgICAgYWx0PXt0aXRsZX1cbiAgICAgICAgc3JjPXtgL2FwaS9wYWdlcy8ke3Byb2plY3R9LyR7dGl0bGVMY30vaWNvbmB9XG4gICAgICA+XG4gICAgICAgIHt0aXRsZX1cbiAgICAgIDwvaW1nPlxuICAgIDwvYT5cbiAgKTtcbn07XG50eXBlIEltYWdlUHJvcHMgPSB7IG5vZGU6IEltYWdlTm9kZSB9O1xuY29uc3QgSW1hZ2UgPSAoeyBub2RlOiB7IGxpbmssIHNyYyB9IH06IEltYWdlUHJvcHMpID0+IHtcbiAgY29uc3QgaHJlZiA9IGxpbmsgfHxcbiAgICAvLyBsaW5r44GM56m65paH5a2X44Gu44Go44GNXG4gICAgKC9odHRwczpcXC9cXC9neWF6b1xcLmNvbVxcL1teXFwvXStcXC90aHVtYlxcLzEwMDAvLnRlc3Qoc3JjKVxuICAgICAgPyBzcmMuc2xpY2UoMCwgLVwiL3RodW1iLzEwMDBcIi5sZW5ndGgpXG4gICAgICA6IHNyYyk7XG5cbiAgcmV0dXJuIChcbiAgICA8YVxuICAgICAgY2xhc3NOYW1lPXtsaW5rID8gXCJsaW5rXCIgOiBcIlwifVxuICAgICAgaHJlZj17aHJlZn1cbiAgICAgIHJlbD1cIm5vb3BuZXIgbm9yZWZlcnJlclwiXG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgID5cbiAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1hZ2VcIiBzcmM9e3NyY30gLz5cbiAgICA8L2E+XG4gICk7XG59O1xuXG50eXBlIEhhc2hUYWdQcm9wcyA9IHsgbm9kZTogSGFzaFRhZ05vZGUgfTtcbmNvbnN0IEhhc2hUYWcgPSAoeyBub2RlOiB7IGhyZWYgfSB9OiBIYXNoVGFnUHJvcHMpID0+IHtcbiAgY29uc3QgeyBwcm9qZWN0IH0gPSB1c2VDb250ZXh0KGNvbnRleHQpO1xuICBjb25zdCBlbXB0eUxpbmsgPSB1c2VFbXB0eUxpbmsocHJvamVjdCwgaHJlZik7XG4gIGNvbnN0IGhhbmRsZUhvdmVyID0gdXNlSG92ZXIocHJvamVjdCwgaHJlZiwgXCJoYXNodGFnXCIpO1xuXG4gIHJldHVybiAoXG4gICAgPGFcbiAgICAgIGhyZWY9e2AvJHtwcm9qZWN0fS8ke2VuY29kZVRpdGxlVVJJKGhyZWYpfWB9XG4gICAgICBjbGFzc05hbWU9e2BwYWdlLWxpbmske2VtcHR5TGluayA/IFwiIGVtcHR5LXBhZ2UtbGlua1wiIDogXCJcIn1gfVxuICAgICAgdHlwZT1cImhhc2hUYWdcIlxuICAgICAgcmVsPXtwcm9qZWN0ID09PSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUgPyBcInJvdXRlXCIgOiBcIm5vb3BlbmVyIG5vcmVmZXJyZXJcIn1cbiAgICAgIHRhcmdldD17cHJvamVjdCA9PT0gc2NyYXBib3guUHJvamVjdC5uYW1lID8gXCJcIiA6IFwiX2JsYW5rXCJ9XG4gICAgICBvblBvaW50ZXJFbnRlcj17aGFuZGxlSG92ZXJ9XG4gICAgPlxuICAgICAgI3tocmVmfVxuICAgIDwvYT5cbiAgKTtcbn07XG50eXBlIExpbmtQcm9wcyA9IHsgbm9kZTogTGlua05vZGUgfTtcbmNvbnN0IExpbmsgPSAoXG4gIHsgbm9kZTogeyBwYXRoVHlwZSwgLi4ubm9kZSB9IH06IExpbmtQcm9wcyxcbikgPT4ge1xuICBzd2l0Y2ggKHBhdGhUeXBlKSB7XG4gICAgY2FzZSBcInJlbGF0aXZlXCI6XG4gICAgY2FzZSBcInJvb3RcIjpcbiAgICAgIHJldHVybiA8U2NyYXBib3hMaW5rIHBhdGhUeXBlPXtwYXRoVHlwZX0gaHJlZj17bm9kZS5ocmVmfSAvPjtcbiAgICBjYXNlIFwiYWJzb2x1dGVcIjoge1xuICAgICAgY29uc3QgbGlua05vZGUgPSBwYXJzZUFic29sdXRlTGluayh7IHBhdGhUeXBlLCAuLi5ub2RlIH0pO1xuICAgICAgc3dpdGNoIChsaW5rTm9kZS50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJ5b3V0dWJlXCI6XG4gICAgICAgICAgcmV0dXJuIDxZb3V0dWJlIHsuLi5saW5rTm9kZX0gLz47XG4gICAgICAgIGNhc2UgXCJ2aW1lb1wiOlxuICAgICAgICAgIHJldHVybiA8VmltZW8gey4uLmxpbmtOb2RlfSAvPjtcbiAgICAgICAgY2FzZSBcInNwb3RpZnlcIjpcbiAgICAgICAgICByZXR1cm4gPFNwb3RpZnkgey4uLmxpbmtOb2RlfSAvPjtcbiAgICAgICAgY2FzZSBcImFuY2hvci1mbVwiOlxuICAgICAgICAgIHJldHVybiA8QW5jaG9yRk0gey4uLmxpbmtOb2RlfSAvPjtcbiAgICAgICAgY2FzZSBcImF1ZGlvXCI6XG4gICAgICAgICAgcmV0dXJuIDxBdWRpbyB7Li4ubGlua05vZGV9IC8+O1xuICAgICAgICBjYXNlIFwidmlkZW9cIjpcbiAgICAgICAgICByZXR1cm4gPFZpZGVvIHsuLi5saW5rTm9kZX0gLz47XG4gICAgICAgIGNhc2UgXCJhYnNvbHV0ZUxpbmtcIjpcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGlua1wiXG4gICAgICAgICAgICAgIGhyZWY9e2xpbmtOb2RlLmhyZWZ9XG4gICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLy8gY29udGVudOOBjOepuuOBruOBqOOBjeOBr3VuZGVmaW5lZOOBp+OBr+OBquOBjycn44Gr44Gq44KL44Gu44Gn44CBXG4gICAgICAgICAgICAgICAgLy8gPz/jgafjga/jgarjgY98fOOBp2ZhbGxiYWNr5Yem55CG44KS44GZ44KL5b+F6KaB44GM44GC44KLXG4gICAgICAgICAgICAgICAgbGlua05vZGUuY29udGVudCB8fCBsaW5rTm9kZS5ocmVmXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxudHlwZSBTY3JhcGJveExpbmtQcm9wcyA9IHtcbiAgcGF0aFR5cGU6IFwicmVsYXRpdmVcIiB8IFwicm9vdFwiO1xuICBocmVmOiBzdHJpbmc7XG59O1xuY29uc3QgU2NyYXBib3hMaW5rID0gKFxuICB7IHBhdGhUeXBlLCBocmVmIH06IFNjcmFwYm94TGlua1Byb3BzLFxuKSA9PiB7XG4gIGNvbnN0IHsgcHJvamVjdDogcHJvamVjdF8gfSA9IHVzZUNvbnRleHQoY29udGV4dCk7XG4gIGNvbnN0IHsgcHJvamVjdCA9IHByb2plY3RfLCB0aXRsZSwgaGFzaCA9IFwiXCIgfSA9IHBhcnNlTGluayhcbiAgICB7XG4gICAgICBwYXRoVHlwZSxcbiAgICAgIGhyZWYsXG4gICAgfSxcbiAgKTtcbiAgY29uc3QgaGFuZGxlSG92ZXIgPSB1c2VIb3Zlcihwcm9qZWN0LCB0aXRsZSwgXCJsaW5rXCIsIGhhc2gpO1xuICBjb25zdCBlbXB0eUxpbmsgPSB1c2VFbXB0eUxpbmsocHJvamVjdCwgdGl0bGUgPz8gXCJcIik7XG5cbiAgcmV0dXJuIChcbiAgICA8YVxuICAgICAgY2xhc3NOYW1lPXtgcGFnZS1saW5rJHtcbiAgICAgICAgdGl0bGUgIT09IHVuZGVmaW5lZCAmJiBlbXB0eUxpbmsgPyBcIiBlbXB0eS1wYWdlLWxpbmtcIiA6IFwiXCJcbiAgICAgIH1gfVxuICAgICAgdHlwZT1cImxpbmtcIlxuICAgICAgaHJlZj17YC8ke3Byb2plY3R9JHtcbiAgICAgICAgdGl0bGUgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gXCJcIlxuICAgICAgICAgIDogYC8ke2VuY29kZVRpdGxlVVJJKHRpdGxlKX0ke2hhc2ggPT09IFwiXCIgPyBcIlwiIDogYCMke2hhc2h9YH1gXG4gICAgICB9YH1cbiAgICAgIHJlbD17cHJvamVjdCA9PT0gc2NyYXBib3guUHJvamVjdC5uYW1lID8gXCJyb3V0ZVwiIDogXCJub29wZW5lciBub3JlZmVycmVyXCJ9XG4gICAgICB0YXJnZXQ9e3Byb2plY3QgPT09IHNjcmFwYm94LlByb2plY3QubmFtZSA/IFwiXCIgOiBcIl9ibGFua1wifVxuICAgICAgb25Qb2ludGVyRW50ZXI9e2hhbmRsZUhvdmVyfVxuICAgID5cbiAgICAgIHtocmVmfVxuICAgIDwvYT5cbiAgKTtcbn07XG5cbmNvbnN0IFlvdXR1YmUgPSAocHJvcHM6IFlvdXR1YmVOb2RlIHwgWW91dHViZUxpc3ROb2RlKSA9PiB7XG4gIHByb3BzLnBhcmFtcy5hcHBlbmQoXCJhdXRvcGxheVwiLCBcIjBcIik7XG4gIGNvbnN0IHNyYyA9IHByb3BzLnBhdGhUeXBlID09PSBcImxpc3RcIlxuICAgID8gYGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLz8ke3Byb3BzLnBhcmFtcy50b1N0cmluZygpfSZsaXN0PSR7cHJvcHMubGlzdElkfWBcbiAgICA6IGBodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8ke3Byb3BzLnZpZGVvSWR9PyR7cHJvcHMucGFyYW1zLnRvU3RyaW5nKCl9YDtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaWZyYW1lLXZpZGVvLXBsYXllclwiPlxuICAgICAgPGlmcmFtZVxuICAgICAgICBzcmM9e3NyY31cbiAgICAgICAgYWxsb3dGdWxsU2NyZWVuXG4gICAgICAgIHR5cGU9XCJ0ZXh0L2h0bWxcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IFZpbWVvID0gKHsgdmlkZW9JZCB9OiBWaW1lb05vZGUpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJpZnJhbWUtdmlkZW8tcGxheWVyXCI+XG4gICAgPGlmcmFtZVxuICAgICAgc3JjPXtgaHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL3ZpZGVvLyR7dmlkZW9JZH1gfVxuICAgICAgYWxsb3dGdWxsU2NyZWVuXG4gICAgICB0eXBlPVwidGV4dC9odG1sXCJcbiAgICAvPlxuICA8L2Rpdj5cbik7XG5cbmNvbnN0IFNwb3RpZnkgPSAocHJvcHM6IFNwb3RpZnlOb2RlKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaWZyYW1lLXZpZGVvLXBsYXllclwiPlxuICAgIDxpZnJhbWVcbiAgICAgIGNsYXNzTmFtZT17YHNwb3RpZnkgdHlwZS0ke3Byb3BzLnBhdGhUeXBlfWB9XG4gICAgICBzcmM9e2BodHRwczovL29wZW4uc3BvdGlmeS5jb20vZW1iZWQvJHtwcm9wcy5wYXRoVHlwZX0vJHtwcm9wcy52aWRlb0lkfWB9XG4gICAgICBhbGxvd0Z1bGxTY3JlZW5cbiAgICAgIHR5cGU9XCJ0ZXh0L2h0bWxcIlxuICAgICAgc2Nyb2xsaW5nPVwibm9cIlxuICAgIC8+XG4gIDwvZGl2PlxuKTtcblxuY29uc3QgQW5jaG9yRk0gPSAocHJvcHM6IEFuY2hvckZNTm9kZSkgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImlmcmFtZS12aWRlby1wbGF5ZXJcIj5cbiAgICA8aWZyYW1lXG4gICAgICBjbGFzc05hbWU9XCJhbmNob3ItZm1cIlxuICAgICAgc3JjPXtwcm9wcy5ocmVmLnJlcGxhY2UoXCIvZXBpc29kZXMvXCIsIFwiL2VtYmVkL2VwaXNvZGVzL1wiKX1cbiAgICAgIGFsbG93RnVsbFNjcmVlblxuICAgICAgdHlwZT1cInRleHQvaHRtbFwiXG4gICAgICBzY3JvbGxpbmc9XCJub1wiXG4gICAgLz5cbiAgPC9kaXY+XG4pO1xuXG5jb25zdCBBdWRpbyA9IChwcm9wczogQXVkaW9Ob2RlKSA9PlxuICBwcm9wcy5jb250ZW50ID09PSBcIlwiXG4gICAgPyAoXG4gICAgICA8YXVkaW9cbiAgICAgICAgY2xhc3NOYW1lPVwiYXVkaW8tcGxheWVyXCJcbiAgICAgICAgcHJlbG9hZD1cIm5vbmVcIlxuICAgICAgICBjb250cm9sc1xuICAgICAgICBzcmM9e3Byb3BzLmhyZWZ9XG4gICAgICAvPlxuICAgIClcbiAgICA6IDxBdWRpb0xpbmsgey4uLnByb3BzfSAvPjtcbmNvbnN0IEF1ZGlvTGluayA9ICh7IGhyZWYsIGNvbnRlbnQgfTogQXVkaW9Ob2RlKSA9PiB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MQXVkaW9FbGVtZW50PihudWxsKTtcbiAgY29uc3QgdG9nZ2xlUGxheSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAocmVmLmN1cnJlbnQ/LnBhdXNlZCkge1xuICAgICAgcmVmLmN1cnJlbnQuY3VycmVudFRpbWUgPSAwO1xuICAgICAgcmVmLmN1cnJlbnQucGxheSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZWYuY3VycmVudD8ucGF1c2U/LigpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPVwiYXVkaW8tbGlua1wiPlxuICAgICAgPGEgaHJlZj17aHJlZn0gcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICB7Y29udGVudH1cbiAgICAgIDwvYT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBsYXlcIiBvbkNsaWNrPXt0b2dnbGVQbGF5fT7imaw8L3NwYW4+XG4gICAgICA8YXVkaW8gcHJlbG9hZD1cIm5vbmVcIiBzcmM9e2hyZWZ9IHJlZj17cmVmfSAvPlxuICAgIDwvc3Bhbj5cbiAgKTtcbn07XG5cbmNvbnN0IFZpZGVvID0gKHsgaHJlZiB9OiBWaWRlb05vZGUpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJ2aWRlby1wbGF5ZXJcIj5cbiAgICA8dmlkZW9cbiAgICAgIGNsYXNzPVwidmlkZW9cIlxuICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJpbmxpbmUtYmxvY2tcIiB9fVxuICAgICAgY29udHJvbHNcbiAgICAgIGxvb3BcbiAgICAgIHNyYz17aHJlZn1cbiAgICAvPlxuICA8L2Rpdj5cbik7XG5cbmNvbnN0IHVzZUVtcHR5TGluayA9IChwcm9qZWN0OiBzdHJpbmcsIGxpbms6IHN0cmluZykgPT4ge1xuICBjb25zdCB7IHdoaXRlTGlzdCB9ID0gdXNlQ29udGV4dChcbiAgICBjb250ZXh0LFxuICApO1xuICBjb25zdCBwYWdlSWRzID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgKHdoaXRlTGlzdC5oYXMocHJvamVjdCkgPyBbLi4ud2hpdGVMaXN0XSA6IFtwcm9qZWN0LCAuLi53aGl0ZUxpc3RdKS5tYXAoXG4gICAgICAgIChwcm9qZWN0KSA9PiB0b0lkKHByb2plY3QsIGxpbmspLFxuICAgICAgKSxcbiAgICBbd2hpdGVMaXN0LCBwcm9qZWN0XSxcbiAgKTtcbiAgY29uc3QgYnViYmxlcyA9IHVzZUJ1YmJsZURhdGEocGFnZUlkcyk7XG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4gaXNFbXB0eUxpbmsoYnViYmxlcyksIGJ1YmJsZXMpO1xufTtcblxuLyoqIDxhPuOBq2hvdmVy5qmf6IO944KS5LuY5LiO44GZ44KLICovXG5jb25zdCB1c2VIb3ZlciA9IChcbiAgcHJvamVjdDogc3RyaW5nLFxuICB0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICB0eXBlOiBcImxpbmtcIiB8IFwiaGFzaHRhZ1wiLFxuICBoYXNoPzogc3RyaW5nLFxuKSA9PiB7XG4gIGNvbnN0IHsgZGVsYXksIGJ1YmJsZSwgcHJlZmV0Y2ggfSA9IHVzZUNvbnRleHQoY29udGV4dCk7XG5cbiAgcmV0dXJuIHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIHsgY3VycmVudFRhcmdldDogYSB9OiBoLkpTWC5UYXJnZXRlZE1vdXNlRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LFxuICAgICkgPT4ge1xuICAgICAgaWYgKCF0aXRsZSkgcmV0dXJuO1xuXG4gICAgICBwcmVmZXRjaChwcm9qZWN0LCB0aXRsZSk7XG5cbiAgICAgIGlmICghYXdhaXQgc3RheUhvdmVyaW5nKGEsIGRlbGF5KSkgcmV0dXJuO1xuXG4gICAgICBidWJibGUoe1xuICAgICAgICBwcm9qZWN0LFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgaGFzaCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgcG9zaXRpb246IGNhbGNCdWJibGVQb3NpdGlvbihhKSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgW3Byb2plY3QsIHRpdGxlLCBoYXNoLCB0eXBlLCBkZWxheSwgcHJlZmV0Y2gsIGJ1YmJsZV0sXG4gICk7XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiLz5cblxuLyoqIEBqc3ggaCAqL1xuaW1wb3J0IHtcbiAgRnVuY3Rpb25Db21wb25lbnQsXG4gIGgsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBJRCwgdG9JZCB9IGZyb20gXCIuL2lkLnRzXCI7XG5pbXBvcnQgeyBQYWdlLCBQYWdlUHJvcHMgfSBmcm9tIFwiLi9QYWdlLnRzeFwiO1xuaW1wb3J0IHsgQnViYmxlIH0gZnJvbSBcIi4vc3RvcmFnZS50c1wiO1xuaW1wb3J0IHsgQnViYmxlT3BlcmF0b3JzLCBTb3VyY2UgfSBmcm9tIFwiLi91c2VCdWJibGVzLnRzXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCIuL3VzZVRoZW1lLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dEJ1YmJsZSBleHRlbmRzIEJ1YmJsZU9wZXJhdG9ycyB7XG4gIHBhZ2VzOiBbQnViYmxlLCAuLi5CdWJibGVbXV07XG4gIHdoaXRlTGlzdDogU2V0PHN0cmluZz47XG4gIGRlbGF5OiBudW1iZXI7XG4gIG5vSW5kZW50PzogYm9vbGVhbjtcbiAgc291cmNlOiBTb3VyY2U7XG4gIHByZWZldGNoOiAocHJvamVjdDogc3RyaW5nLCB0aXRsZTogc3RyaW5nKSA9PiB2b2lkO1xuICBvbkNsaWNrPzogaC5KU1guTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xufVxuZXhwb3J0IGNvbnN0IFRleHRCdWJibGU6IEZ1bmN0aW9uQ29tcG9uZW50PFRleHRCdWJibGU+ID0gKFxuICB7IHBhZ2VzLCBvbkNsaWNrLCBzb3VyY2UsIHdoaXRlTGlzdCwgLi4ucmVzdCB9LFxuKSA9PiB7XG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZShcbiAgICB0b0lkKHBhZ2VzWzBdLnByb2plY3QsIHBhZ2VzWzBdLnRpdGxlTGMpLFxuICApO1xuXG4gIGNvbnN0IHBhZ2VTdHlsZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICB0b3A6IGAke3NvdXJjZS5wb3NpdGlvbi50b3B9cHhgLFxuICAgIG1heFdpZHRoOiBgJHtzb3VyY2UucG9zaXRpb24ubWF4V2lkdGh9cHhgLFxuICAgIC4uLihcImxlZnRcIiBpbiBzb3VyY2UucG9zaXRpb25cbiAgICAgID8ge1xuICAgICAgICBsZWZ0OiBgJHtzb3VyY2UucG9zaXRpb24ubGVmdH1weGAsXG4gICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgcmlnaHQ6IGAke3NvdXJjZS5wb3NpdGlvbi5yaWdodH1weGAsXG4gICAgICB9KSxcbiAgfSksIFtzb3VyY2UucG9zaXRpb25dKTtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJ0ZXh0LWJ1YmJsZVwiXG4gICAgICBzdHlsZT17cGFnZVN0eWxlfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICA+XG4gICAgICB7cGFnZXMubGVuZ3RoID4gMSAmJlxuICAgICAgICAoXG4gICAgICAgICAgPGRpdiByb2xlPVwidGFibGlzdFwiPlxuICAgICAgICAgICAge3BhZ2VzLm1hcCgocGFnZSkgPT4gKFxuICAgICAgICAgICAgICA8VGFiXG4gICAgICAgICAgICAgICAga2V5PXt0b0lkKHBhZ2UucHJvamVjdCwgcGFnZS50aXRsZUxjKX1cbiAgICAgICAgICAgICAgICBwcm9qZWN0PXtwYWdlLnByb2plY3R9XG4gICAgICAgICAgICAgICAgdGl0bGVMYz17cGFnZS50aXRsZUxjfVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkPXthY3RpdmVUYWIgPT09XG4gICAgICAgICAgICAgICAgICB0b0lkKHBhZ2UucHJvamVjdCwgcGFnZS50aXRsZUxjKX1cbiAgICAgICAgICAgICAgICB0YWJTZWxlY3Rvcj17c2V0QWN0aXZlVGFifVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICB7cGFnZXMubWFwKChwYWdlKSA9PiAoXG4gICAgICAgIDxUYWJQYW5lbFxuICAgICAgICAgIGtleT17dG9JZChwYWdlLnByb2plY3QsIHBhZ2UudGl0bGVMYyl9XG4gICAgICAgICAgc2VsZWN0ZWQ9e2FjdGl2ZVRhYiA9PT1cbiAgICAgICAgICAgIHRvSWQocGFnZS5wcm9qZWN0LCBwYWdlLnRpdGxlTGMpfVxuICAgICAgICAgIHsuLi5wYWdlfVxuICAgICAgICAgIHRpdGxlPXtwYWdlLmxpbmVzWzBdLnRleHR9XG4gICAgICAgICAgaGFzaD17c291cmNlLmhhc2h9XG4gICAgICAgICAgbGlua1RvPXtzb3VyY2UubGlua1RvfVxuICAgICAgICAgIHdoaXRlTGlzdD17d2hpdGVMaXN0fVxuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBUYWI6IEZ1bmN0aW9uQ29tcG9uZW50PFxuICB7XG4gICAgcHJvamVjdDogc3RyaW5nO1xuICAgIHRpdGxlTGM6IHN0cmluZztcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICB0YWJTZWxlY3RvcjogKGlkOiBJRCkgPT4gdm9pZDtcbiAgfVxuPiA9ICh7IHByb2plY3QsIHRpdGxlTGMsIHRhYlNlbGVjdG9yLCBzZWxlY3RlZCB9KSA9PiB7XG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlQ2FsbGJhY2soKCkgPT4gdGFiU2VsZWN0b3IodG9JZChwcm9qZWN0LCB0aXRsZUxjKSksIFtcbiAgICBwcm9qZWN0LFxuICAgIHRpdGxlTGMsXG4gIF0pO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKHByb2plY3QpO1xuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWR9XG4gICAgICBkYXRhLXRoZW1lPXt0aGVtZX1cbiAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgID5cbiAgICAgIHtwcm9qZWN0fVxuICAgIDwvYnV0dG9uPlxuICApO1xufTtcblxuY29uc3QgVGFiUGFuZWw6IEZ1bmN0aW9uQ29tcG9uZW50PHsgc2VsZWN0ZWQ6IGJvb2xlYW4gfSAmIFBhZ2VQcm9wcz4gPSAoXG4gIHsgc2VsZWN0ZWQsIC4uLnJlc3QgfSxcbikgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKHJlc3QucHJvamVjdCk7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgIGRhdGEtdGhlbWU9e3RoZW1lfVxuICAgICAgaGlkZGVuPXshc2VsZWN0ZWR9XG4gICAgPlxuICAgICAgPFBhZ2Ugey4uLnJlc3R9IC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIiwgIi8qKiBAanN4IGggKi9cbi8qKiBAanN4RnJhZyBGcmFnbWVudCAqL1xuLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIvPlxuaW1wb3J0IHsgQ2FyZExpc3QgfSBmcm9tIFwiLi9DYXJkTGlzdC50c3hcIjtcbmltcG9ydCB7XG4gIEZyYWdtZW50LFxuICBoLFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IHRvVGl0bGVMYyB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5pbXBvcnQgeyB1c2VCdWJibGVEYXRhIH0gZnJvbSBcIi4vdXNlQnViYmxlRGF0YS50c1wiO1xuaW1wb3J0IHsgTGlua1RvIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IGZyb21JZCwgSUQsIHRvSWQgfSBmcm9tIFwiLi9pZC50c1wiO1xuaW1wb3J0IHsgQnViYmxlIGFzIEJ1YmJsZURhdGEgfSBmcm9tIFwiLi9zdG9yYWdlLnRzXCI7XG5pbXBvcnQgeyBwcm9kdWNlIH0gZnJvbSBcIi4vZGVwcy9pbW1lci50c1wiO1xuaW1wb3J0IHR5cGUgeyBCdWJibGVTb3VyY2UgfSBmcm9tIFwiLi91c2VCdWJibGVzLnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVEZWJ1ZyB9IGZyb20gXCIuL2RlYnVnLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFNjcmFwYm94IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuaW1wb3J0IHsgVGV4dEJ1YmJsZSB9IGZyb20gXCIuL1RleHRCdWJibGUudHN4XCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlRGVidWcoXCJTY3JhcEJ1YmJsZTpCdWJibGUudHN4XCIpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1YmJsZVByb3BzIGV4dGVuZHMgQnViYmxlU291cmNlIHtcbiAgd2hpdGVMaXN0OiBTZXQ8c3RyaW5nPjtcbiAgZGVsYXk6IG51bWJlcjtcbiAgcHJlZmV0Y2g6IChwcm9qZWN0OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBCdWJibGUgPSAoe1xuICBzb3VyY2UsXG4gIHBhcmVudFRpdGxlcyxcbiAgd2hpdGVMaXN0LFxuICAuLi5wcm9wc1xufTogQnViYmxlUHJvcHMpID0+IHtcbiAgLyoqIOaknOe0ouWvvuixoeOBrnByb2plY3QgbGlzdCAqL1xuICBjb25zdCBwcm9qZWN0cyA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIHdoaXRlTGlzdC5oYXMoc291cmNlLnByb2plY3QpXG4gICAgICAgIC8vIHNvdXJjZS5wcm9qZWN044KS5LiA55Wq5YWI6aCt44Gr44GZ44KLXG4gICAgICAgID8gbmV3IFNldChbc291cmNlLnByb2plY3QsIC4uLndoaXRlTGlzdF0pXG4gICAgICAgIDogbmV3IFNldChbc291cmNlLnByb2plY3RdKSxcbiAgICBbd2hpdGVMaXN0LCBzb3VyY2UucHJvamVjdF0sXG4gICk7XG5cbiAgY29uc3QgW2xpbmtlZCwgZXh0ZXJuYWxMaW5rZWQsIHBhZ2VzXSA9IHVzZUJ1YmJsZUZpbHRlcihcbiAgICBzb3VyY2UsXG4gICAgcHJvamVjdHMsXG4gICAgd2hpdGVMaXN0LFxuICAgIHBhcmVudFRpdGxlcyxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aGFzT25lQnViYmxlKHBhZ2VzKSAmJiAoXG4gICAgICAgIDxUZXh0QnViYmxlXG4gICAgICAgICAgcGFnZXM9e3BhZ2VzfVxuICAgICAgICAgIHNvdXJjZT17c291cmNlfVxuICAgICAgICAgIHdoaXRlTGlzdD17d2hpdGVMaXN0fVxuICAgICAgICAgIG9uQ2xpY2s9e3Byb3BzLmhpZGV9XG4gICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxDYXJkTGlzdFxuICAgICAgICBsaW5rZWQ9e2xpbmtlZH1cbiAgICAgICAgZXh0ZXJuYWxMaW5rZWQ9e2V4dGVybmFsTGlua2VkfVxuICAgICAgICBvbkNsaWNrPXtwcm9wcy5oaWRlfVxuICAgICAgICBzb3VyY2U9e3NvdXJjZX1cbiAgICAgICAgcHJvamVjdHNGb3JTb3J0PXtwcm9qZWN0c31cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmNvbnN0IGhhc09uZUJ1YmJsZSA9IChcbiAgcGFnZXM6IEJ1YmJsZURhdGFbXSxcbik6IHBhZ2VzIGlzIFtCdWJibGVEYXRhLCAuLi5CdWJibGVEYXRhW11dID0+IHBhZ2VzLmxlbmd0aCA+IDA7XG5cbi8qKiDmjIflrprjgZfjgZ9zb3VyY2XjgYvjgolidWJibGVz44GZ44KL44Oa44O844K45pys5paH44Go44Oa44O844K444Kr44O844OJ44KS44CB6KaqYnViYmxlc+OChHdoaXRlTGlzdOOCkuS9v+OBo+OBpue1nuOCiui+vOOCgFxuICpcbiAqIDxCdWJibGUgLz7jgafjgoTjgaPjgabjgYTjgovlh6bnkIbjga7kuIDpg6jjgpLliIfjgorlh7rjgZfjgabopovpgJrjgZfjgpLjgojjgY/jgZfjgZ/jgaDjgZFcbiAqL1xuY29uc3QgdXNlQnViYmxlRmlsdGVyID0gKFxuICBzb3VyY2U6IHsgcHJvamVjdDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0sXG4gIHByb2plY3RzOiBTZXQ8c3RyaW5nPixcbiAgd2hpdGVMaXN0OiBTZXQ8c3RyaW5nPixcbiAgcGFyZW50VGl0bGVzOiBzdHJpbmdbXSxcbikgPT4ge1xuICB0eXBlIExpbmtNYXAgPSBNYXA8SUQsIExpbmtUbz47XG5cbiAgY29uc3QgW1tsaW5rZWQsIGV4dGVybmFsTGlua2VkLCBwYWdlc10sIHNldEJ1YmJsZURhdGFdID0gdXNlU3RhdGU8XG4gICAgW0xpbmtNYXAsIExpbmtNYXAsIEJ1YmJsZURhdGFbXV1cbiAgPihbbmV3IE1hcCgpLCBuZXcgTWFwKCksIFtdXSk7XG5cbiAgY29uc3QgcGFnZUlkcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgcGFnZUlkcyA9IFsuLi5wcm9qZWN0c10ubWFwKChwcm9qZWN0KSA9PlxuICAgICAgICB0b0lkKHByb2plY3QsIHNvdXJjZS50aXRsZSlcbiAgICAgICk7XG5cbiAgICAgIGxvZ2dlci5kZWJ1ZyhcInByb2plY3RzXCIsIHBhZ2VJZHMpO1xuICAgICAgcmV0dXJuIHBhZ2VJZHM7XG4gICAgfSxcbiAgICBbcHJvamVjdHMsIHNvdXJjZS50aXRsZV0sXG4gICk7XG5cbiAgY29uc3QgYnViYmxlcyA9IHVzZUJ1YmJsZURhdGEocGFnZUlkcyk7XG4gIGNvbnN0IHBhcmVudHNMYyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gcGFyZW50VGl0bGVzLm1hcCgodGl0bGUpID0+IHRvVGl0bGVMYyh0aXRsZSkpLFxuICAgIFtwYXJlbnRUaXRsZXNdLFxuICApO1xuXG4gIHVzZUxheW91dEVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICAvKiogYHNvdXJjZS50aXRsZWDjgpLlhoXpg6jjg6rjg7Pjgq/oqJjms5Xjgaflj4LnhafjgZfjgabjgYTjgovjg6rjg7Pjgq/jga7jg6rjgrnjg4ggKi9cbiAgICAgIGNvbnN0IGxpbmtlZCA9IG5ldyBNYXA8SUQsIExpbmtUbz4oKTtcbiAgICAgIC8qKiBgc291cmNlLnRpdGxlYOOCkuWklumDqOODquODs+OCr+iomOazleOBp+WPgueFp+OBl+OBpuOBhOOCi+ODquODs+OCr+OBruODquOCueODiCAqL1xuICAgICAgY29uc3QgZXh0ZXJuYWxMaW5rZWQgPSBuZXcgTWFwPElELCBMaW5rVG8+KCk7XG4gICAgICAvKiog44Oa44O844K45pys5paHXG4gICAgICAgKlxuICAgICAgICogYnViYmxl44KS44Gd44Gu44G+44G+5L+d44Gk44GT44Go44Gn44CB5Y+C54Wn44Gu6YGV44GE44Gu44G/44Gn5pu05paw44Gu5pyJ54Sh44KS5Yik5pat44Gn44GN44KLXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IHBhZ2VzOiBCdWJibGVEYXRhW10gPSBbXTtcblxuICAgICAgLy8g6YCG44Oq44Oz44Kv44GK44KI44GzcGFnZXPjgYvjgoksIHBhcmVudHPjgah3aGl0ZWxpc3TjgavjgarjgYTjgoLjga7jgpLpmaTjgYTjgabjgYrjgY9cbiAgICAgIGZvciAoY29uc3QgYnViYmxlIG9mIGJ1YmJsZXMpIHtcbiAgICAgICAgY29uc3QgZUxpbmtUbyA9IHsgcHJvamVjdDogYnViYmxlLnByb2plY3QsIHRpdGxlTGM6IGJ1YmJsZS50aXRsZUxjIH07XG4gICAgICAgIGZvciAoY29uc3QgaWQgb2YgYnViYmxlLnByb2plY3RMaW5rZWQgPz8gW10pIHtcbiAgICAgICAgICBjb25zdCB7IHByb2plY3QsIHRpdGxlTGMgfSA9IGZyb21JZChpZCk7XG4gICAgICAgICAgLy8gRXh0ZXJuYWwgTGlua3Pjga7lhoXjgIFwcm9qZWN044GMd2hpdGVMaXN044Gr5bGe44GZ44KLbGlua3PjgoLph43opIfpmaTljrvlh6bnkIbjgpLmlr3jgZlcbiAgICAgICAgICBpZiAocGFyZW50c0xjLmluY2x1ZGVzKHRpdGxlTGMpICYmIHdoaXRlTGlzdC5oYXMocHJvamVjdCkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZXh0ZXJuYWxMaW5rZWQuaGFzKGlkKSkgY29udGludWU7XG4gICAgICAgICAgZXh0ZXJuYWxMaW5rZWQuc2V0KGlkLCBlTGlua1RvKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB3aGl0ZUxpdOOBq+OBquOBhHByb2plY3Tjga7jg5rjg7zjgrjjga/jgIFFeHRlcm5hbCBMaW5rc+S7peWkluihqOekuuOBl+OBquOBhFxuICAgICAgICBpZiAoIXdoaXRlTGlzdC5oYXMoYnViYmxlLnByb2plY3QpKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgbGlua1RvID0geyB0aXRsZUxjOiBidWJibGUudGl0bGVMYyB9O1xuICAgICAgICAvLyDopqrjgajph43opIfjgZfjgarjgYTpgIbjg6rjg7Pjgq/jga7jgb/moLzntI3jgZnjgotcbiAgICAgICAgZm9yIChjb25zdCBsaW5rTGMgb2YgYnViYmxlLmxpbmtlZCA/PyBbXSkge1xuICAgICAgICAgIGlmIChwYXJlbnRzTGMuaW5jbHVkZXMobGlua0xjKSkgY29udGludWU7XG4gICAgICAgICAgY29uc3QgaWQgPSB0b0lkKGJ1YmJsZS5wcm9qZWN0LCBsaW5rTGMpO1xuICAgICAgICAgIGlmIChsaW5rZWQuaGFzKGlkKSkgY29udGludWU7XG4gICAgICAgICAgbGlua2VkLnNldChpZCwgbGlua1RvKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDopqrjgajph43opIfjgZfjgarjgYTjg5rjg7zjgrjmnKzmlofjga7jgb/moLzntI3jgZnjgotcbiAgICAgICAgaWYgKHBhcmVudHNMYy5pbmNsdWRlcyhidWJibGUudGl0bGVMYykpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIWJ1YmJsZS5leGlzdHMpIGNvbnRpbnVlO1xuICAgICAgICBwYWdlcy5wdXNoKGJ1YmJsZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIOWGjeODrOODs+ODgOODquODs+OCsOOCkuaKkeWItuOBmeOCi+OBn+OCgeOBq+OAgeW/heimgeOBquOCguOBruOBoOOBkeabtOaWsOOBmeOCi1xuICAgICAgc2V0QnViYmxlRGF0YShwcm9kdWNlKChkcmFmdCkgPT4ge1xuICAgICAgICBsb2dnZXIuZGVidWcoXG4gICAgICAgICAgYGRlcHRoOiAke3BhcmVudHNMYy5sZW5ndGh9LCBidWJibGVkIGZyb20gJHtcbiAgICAgICAgICAgIHRvSWQoc291cmNlLnByb2plY3QsIHNvdXJjZS50aXRsZSlcbiAgICAgICAgICB9LCBidWJibGVzLGAsXG4gICAgICAgICAgYnViYmxlcyxcbiAgICAgICAgICBcImJlZm9yZVwiLFxuICAgICAgICAgIGRyYWZ0WzBdLFxuICAgICAgICAgIGBpbnRlcm5hbCBjYXJkcyxgLFxuICAgICAgICAgIGxpbmtlZCxcbiAgICAgICAgICBcImV4dGVybmFsIGNhcmRzXCIsXG4gICAgICAgICAgZXh0ZXJuYWxMaW5rZWQsXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGRyYWZ0WzBdLmtleXMoKSkge1xuICAgICAgICAgIGlmICghbGlua2VkLmhhcyhrZXkpKSBkcmFmdFswXS5kZWxldGUoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBsaW5rZWQpIHtcbiAgICAgICAgICBkcmFmdFswXS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBkcmFmdFsxXS5rZXlzKCkpIHtcbiAgICAgICAgICBpZiAoIWV4dGVybmFsTGlua2VkLmhhcyhrZXkpKSBkcmFmdFsxXS5kZWxldGUoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBleHRlcm5hbExpbmtlZCkge1xuICAgICAgICAgIGRyYWZ0WzFdLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBkcmFmdFsyXSA9IHBhZ2VzO1xuICAgICAgfSkpO1xuICAgIH0sXG4gICAgW2J1YmJsZXMsIHdoaXRlTGlzdCwgcGFyZW50c0xjXSxcbiAgKTtcblxuICByZXR1cm4gW2xpbmtlZCwgZXh0ZXJuYWxMaW5rZWQsIHBhZ2VzXSBhcyBjb25zdDtcbn07XG4iLCAiLyoqIFVSTOaWh+Wtl+WIl+OCklVSTOOBq+WkieaPm+OBmeOCiyovXG5leHBvcnQgY29uc3QgZGV0ZWN0VVJMID0gKFxuICB0ZXh0OiBVUkwgfCBzdHJpbmcsXG4gIGJhc2U/OiBVUkwgfCBzdHJpbmcsXG4pOiBVUkwgfCBzdHJpbmcgPT4ge1xuICBpZiAodGV4dCBpbnN0YW5jZW9mIFVSTCkgcmV0dXJuIHRleHQ7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBVUkwodGV4dCk7XG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICBpZiAoIShlIGluc3RhbmNlb2YgVHlwZUVycm9yKSkgdGhyb3cgZTtcbiAgICBpZiAoIWJhc2UpIHJldHVybiB0ZXh0O1xuICAgIC8vIOebuOWvvuODkeOCueOBuOOBruWkieaPm+OCkuippuOBv+OCi1xuICAgIC8vIC4v44KELi4v44KEL+OBp+Wni+OBvuOCieOBquOBhOaWh+Wtl+WIl+OBr+OAgeebuOWvvuODkeOCueaJseOBhOOBl+OBquOBhFxuICAgIGlmICghL15cXC5cXC98XlxcLlxcLlxcL3xeXFwvLy50ZXN0KHRleHQpKSByZXR1cm4gdGV4dDtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBVUkwodGV4dCwgYmFzZSk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikpIHRocm93IGU7XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG4gIH1cbn07XG4iLCAiLyoqIEBqc3ggaCAqL1xuLyoqIEBqc3hGcmFnIEZyYWdtZW50ICovXG5pbXBvcnQgeyBGcmFnbWVudCwgaCwgdXNlTWVtbyB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgZGV0ZWN0VVJMIH0gZnJvbSBcIi4vZGV0ZWN0VVJMLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckNTU1Byb3BzIHtcbiAgLyoqIENTU+OCguOBl+OBj+OBr0NTU+OBuOOBrlVSTCAqL1xuICBzdHlsZTogc3RyaW5nIHwgVVJMO1xufVxuXG4vKiogVXNlckNTU+OCkuaMv+WFpeOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IFVzZXJDU1MgPSAocHJvcHM6IFVzZXJDU1NQcm9wcykgPT4ge1xuICBjb25zdCB1cmwgPSB1c2VNZW1vKCgpID0+IGRldGVjdFVSTChwcm9wcy5zdHlsZSwgaW1wb3J0Lm1ldGEudXJsKSwgW1xuICAgIHByb3BzLnN0eWxlLFxuICBdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7dXJsICE9PSBcIlwiICYmICh1cmwgaW5zdGFuY2VvZiBVUkxcbiAgICAgICAgPyA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj17dXJsLmhyZWZ9IC8+XG4gICAgICAgIDogPHN0eWxlPnt1cmx9PC9zdHlsZT4pfVxuICAgIDwvPlxuICApO1xufTtcbiIsICIvLyBkZW5vLWZtdC1pZ25vcmUtZmlsZVxuZXhwb3J0IGNvbnN0IENTUyA9IFN0cmluZy5yYXdgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9YXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyfWltZ3tkaXNwbGF5OmlubGluZS1ibG9jazttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMHB4fWNvZGV7Zm9udC1mYW1pbHk6dmFyKC0tY29kZS10ZXh0LWZvbnQsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZSk7Zm9udC1zaXplOjkwJTtjb2xvcjp2YXIoLS1jb2RlLWNvbG9yLCAjMzQyZDljKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvZGUtYmcsIHJnYmEoMCwwLDAsLjA0KSk7cGFkZGluZzowO3doaXRlLXNwYWNlOnByZS13cmFwO3dvcmQtd3JhcDpicmVhay13b3JkfWJsb2NrcXVvdGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1xdW90ZS1iZy1jb2xvciwgcmdiYSgwLDAsMCwuMDUpKTtkaXNwbGF5OmJsb2NrO2JvcmRlci1sZWZ0OnNvbGlkIDRweCAjYTBhMGEwO3BhZGRpbmctbGVmdDo0cHg7bWFyZ2luOjB9c3Ryb25ne2ZvbnQtd2VpZ2h0OjcwMH1pZnJhbWV7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOjNweCAwO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXgtd2lkdGg6MTAwJTt3aWR0aDo2NDBweDtoZWlnaHQ6MzYwcHg7Ym9yZGVyOjB9YXVkaW97ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO3doaXRlLXNwYWNlOmluaXRpYWw7bWF4LXdpZHRoOjEwMCV9LmZvcm11bGF7bWFyZ2luOmF1dG8gNnB4fS5mb3JtdWxhLmVycm9yIGNvZGV7Y29sb3I6I2ZkNzM3M30ua2F0ZXgtZGlzcGxheXtkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3RleHQtYWxpZ246aW5oZXJpdCFpbXBvcnRhbnR9LmVycm9yIC5rYXRleC1kaXNwbGF5e2Rpc3BsYXk6bm9uZX0uY2xpe2JvcmRlci1yYWRpdXM6NHB4fS5jbGkgLnByZWZpeHtjb2xvcjojOWM2MjQ4fS5oZWxwZmVlbHtiYWNrZ3JvdW5kLWNvbG9yOiNmYmViZGQ7Ym9yZGVyLXJhZGl1czo0cHg7cGFkZGluZzozcHghaW1wb3J0YW50fS5oZWxwZmVlbCAucHJlZml4e2NvbG9yOiNmMTdjMDB9LmhlbHBmZWVsIC5lbnRyeXtjb2xvcjojY2M1MDIwfS5jb2RlLWJsb2Nre2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MS43ZW07YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2RlLWJnLCByZ2JhKDAsMCwwLC4wNCkpfS5jb2RlLWJsb2NrLXN0YXJ0e2ZvbnQtZmFtaWx5Ok1lbmxvLE1vbmFjbyxDb25zb2xhcyxDb3VyaWVyIE5ldyxtb25vc3BhY2U7Y29sb3I6IzM0MmQ5YztiYWNrZ3JvdW5kLWNvbG9yOiNmZmNmYzY7Zm9udC1zaXplOi45ZW07cGFkZGluZzoxcHggMnB4fS5jb2RlLWJsb2NrLXN0YXJ0IGF7Y29sb3I6IzM0MmQ5Yzt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfWNvZGUuY29kZS1ibG9jaywudGFibGUtYmxvY2sudGFibGUtYmxvY2stcm93e3BhZGRpbmctbGVmdDoxZW19LmNvcHl7Zm9udC1mYW1pbHk6XCJGb250IEF3ZXNvbWUgNSBGcmVlXCI7Y3Vyc29yOnBvaW50ZXJ9LnRhYmxlLWJsb2Nre3doaXRlLXNwYWNlOm5vd3JhcH0udGFibGUtYmxvY2stc3RhcnR7cGFkZGluZzoxcHggMnB4O2ZvbnQtc2l6ZTouOWVtO2JhY2tncm91bmQtY29sb3I6I2ZmY2ZjNn0udGFibGUtYmxvY2stc3RhcnQgYXtjb2xvcjojMzQyZDljO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmNlbGx7bWFyZ2luOjA7cGFkZGluZzowIDJweCAwIDhweDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOnByZX0uY2VsbDpudGgtY2hpbGQob2RkKXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDAwYX0uY2VsbDpudGgtY2hpbGQoMm4pe2JhY2tncm91bmQtY29sb3I6IzAwMDAwMDBmfS5zdHJvbmctaW1hZ2V7bWF4LWhlaWdodDoxMDAlfS5pY29ue2hlaWdodDoxMXB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uc3Ryb25nLWljb257aGVpZ2h0OjEzLjJweH0udG9vbC1idXR0b257bWFyZ2luLWxlZnQ6MWVtO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTouOWVtfS5kZWNvLVxcL3tmb250LXN0eWxlOml0YWxpY30uZGVjby1cXCotMXtmb250LXdlaWdodDo3MDB9LmRlY28tXFwqLTJ7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxLjJlbX0uZGVjby1cXCotM3tmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEuNDRlbX0uZGVjby1cXCotNHtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEuNzNlbX0uZGVjby1cXCotNXtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjIuMDdlbX0uZGVjby1cXCotNntmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjIuNDllbX0uZGVjby1cXCotN3tmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjNlbX0uZGVjby1cXCotOHtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjMuNThlbX0uZGVjby1cXCotOXtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjQuM2VtfS5kZWNvLVxcKi0xMHtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjUuMTZlbX0uZGVjby0te3RleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2h9LmRlY28tX3t0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5wYWdlLWxpbmt7Y29sb3I6dmFyKC0tcGFnZS1saW5rLWNvbG9yLCAjNWU4YWY3KX1hLnBhZ2UtbGluazpob3Zlcntjb2xvcjp2YXIoLS1wYWdlLWxpbmstaG92ZXItY29sb3IsICMyZDY3ZjUpfS5lbXB0eS1wYWdlLWxpbmt7Y29sb3I6dmFyKC0tZW1wdHktcGFnZS1saW5rLWNvbG9yLCAjZmQ3MzczKX1hLmVtcHR5LXBhZ2UtbGluazpob3Zlcntjb2xvcjp2YXIoLS1lbXB0eS1wYWdlLWxpbmstaG92ZXItY29sb3IsICNmZDczNzMpfS5saW5re2NvbG9yOnZhcigtLXBhZ2UtbGluay1jb2xvciwgIzVlOGFmNyk7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1hLmxpbms6aG92ZXJ7Y29sb3I6dmFyKC0tcGFnZS1saW5rLWNvbG9yLWhvdmVyLWNvbG9yLCAjMmQ2N2Y1KX0ubGluayBpbWd7cGFkZGluZy1ib3R0b206M3B4O2JvcmRlci1zdHlsZTpub25lIG5vbmUgc29saWQ7Ym9yZGVyLXdpZHRoOjEuNXB4O2JvcmRlci1jb2xvcjojOGZhZGY5fS5wZXJtYWxpbmt7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saW5lLXBlcm1hbGluay1jb2xvciwgcmdiYSgyMzQsMjE4LDc0LC43NSkpfS5zdGF0dXMtYmFye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQtY29sb3I6dmFyKC0tcGFnZS1iZywgI2ZlZmVmZSk7Y3Vyc29yOmRlZmF1bHR9LnN0YXR1cy1iYXI+Kntib3JkZXI6MXB4IHNvbGlkIHZhcigtLXN0YXR1cy1iYXItYm9yZGVyLWNvbG9yLCAjYTlhYWFmKX0uc3RhdHVzLWJhci50b3AtbGVmdHt0b3A6MDtsZWZ0OjB9LnN0YXR1cy1iYXIudG9wLWxlZnQ+Kntib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6bm9uZX0uc3RhdHVzLWJhci50b3AtbGVmdCA6bGFzdC1vZi10eXBle2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjNweH0uc3RhdHVzLWJhci50b3AtcmlnaHR7dG9wOjA7cmlnaHQ6MH0uc3RhdHVzLWJhci50b3AtcmlnaHQ+Kntib3JkZXItdG9wOm5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmV9LnN0YXR1cy1iYXIudG9wLXJpZ2h0IDpsYXN0LW9mLXR5cGV7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czozcHh9LnN0YXR1cy1iYXIuYm90dG9tLXJpZ2h0e2JvdHRvbTowO3JpZ2h0OjB9LnN0YXR1cy1iYXIuYm90dG9tLXJpZ2h0Pip7Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci1yaWdodDpub25lfS5zdGF0dXMtYmFyLmJvdHRvbS1yaWdodCA6bGFzdC1vZi10eXBle2JvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4fS5zdGF0dXMtYmFyLmJvdHRvbS1sZWZ0e2JvdHRvbTowO2xlZnQ6MH0uc3RhdHVzLWJhci5ib3R0b20tbGVmdD4qe2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItbGVmdDpub25lfS5zdGF0dXMtYmFyLmJvdHRvbS1sZWZ0IDpsYXN0LW9mLXR5cGV7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4fS50ZXh0LWJ1YmJsZXtmb250LXNpemU6MTFweDtsaW5lLWhlaWdodDoxLjQyODU3O3VzZXItc2VsZWN0OnRleHQ7cG9zaXRpb246YWJzb2x1dGU7Y29sb3I6dmFyKC0tcGFnZS10ZXh0LWNvbG9yLCAjNGE0YTRhKTtib3gtc2hhZG93OjAgNnB4IDEycHggIzAwMDAwMDJkO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ei1pbmRleDo5MDAwOyYubm8tc2Nyb2xse292ZXJmbG93LXk6aGlkZGVufVtkYXRhLXRoZW1lPWRlZmF1bHQtZGFya117LS10ZXh0LWJ1YmJsZS1ib3JkZXItY29sb3I6IGhzbCgwLCAwJSwgMzklKX1bZGF0YS10aGVtZT1kZWZhdWx0LW1pbmltYWxdey0tdGV4dC1idWJibGUtYm9yZGVyLWNvbG9yOiBoc2woMCwgMCUsIDg5JSl9W2RhdGEtdGhlbWU9cGFwZXItbGlnaHRdey0tdGV4dC1idWJibGUtYm9yZGVyLWNvbG9yOiBoc2woNTMsIDglLCA1OCUpfVtkYXRhLXRoZW1lPXBhcGVyLWRhcmstZGFya117LS10ZXh0LWJ1YmJsZS1ib3JkZXItY29sb3I6IGhzbCgyMDMsIDQyJSwgMTclKX1bZGF0YS10aGVtZT1ibHVlXXstLXRleHQtYnViYmxlLWJvcmRlci1jb2xvcjogaHNsKDIyNywgNjglLCA2MiUpfVtkYXRhLXRoZW1lPXB1cnBsZV17LS10ZXh0LWJ1YmJsZS1ib3JkZXItY29sb3I6IGhzbCgyNjcsIDM5JSwgNjAlKX1bZGF0YS10aGVtZT1ncmVlbl17LS10ZXh0LWJ1YmJsZS1ib3JkZXItY29sb3I6IGhzbCgxMzYsIDI5JSwgNTAlKX1bZGF0YS10aGVtZT1vcmFuZ2Vdey0tdGV4dC1idWJibGUtYm9yZGVyLWNvbG9yOiBoc2woNDMsIDcxJSwgNTElKX1bZGF0YS10aGVtZT1yZWRdey0tdGV4dC1idWJibGUtYm9yZGVyLWNvbG9yOiBoc2woNCwgNTglLCA1NiUpfVtkYXRhLXRoZW1lPXNwcmluZ117LS10ZXh0LWJ1YmJsZS1ib3JkZXItY29sb3I6IGhzbCg3MiwgNjQlLCA1NyUpfVtkYXRhLXRoZW1lPWt5b3RvXXstLXRleHQtYnViYmxlLWJvcmRlci1jb2xvcjogaHNsKDMzMSwgMjElLCAyNiUpfVtkYXRhLXRoZW1lPW5ld3lvcmtdey0tdGV4dC1idWJibGUtYm9yZGVyLWNvbG9yOiBoc2woMTc2LCAyOSUsIDY3JSl9W3JvbGU9dGFicGFuZWxde3BhZGRpbmc6NXB4IDAgNXB4IDVweDtib3JkZXItcmFkaXVzOjRweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXBhZ2UtYmcsICNmZWZlZmUpO21heC1oZWlnaHQ6ODB2aDtvdmVyZmxvdy15OmF1dG99W3JvbGU9dGFicGFuZWxdLGJ1dHRvbntib3JkZXI6MXB4IHNvbGlkIHZhcigtLXRleHQtYnViYmxlLWJvcmRlci1jb2xvciwgaHNsKDIyMSwgMTUlLCAyNSUpKX1idXR0b257Y3Vyc29yOmRlZmF1bHQ7Y29sb3I6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0O2JhY2tncm91bmQtY29sb3I6dmFyKC0tcGFnZS1iZywgI2ZlZmVmZSk7Ym9yZGVyLXJhZGl1czo0cHggNHB4IDAgMH1idXR0b25bYXJpYS1zZWxlY3RlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRleHQtYnViYmxlLWJvcmRlci1jb2xvciwgaHNsKDIyMSwgMTUlLCAyNSUpKX19LnByb2plY3QtYmFkZ2V7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6dmFyKC0tdG9vbC10ZXh0LWNvbG9yLCAjMzYzYzQ5KX0ucmVsYXRlZC1wYWdlLWNhcmRbZGF0YS10aGVtZT1kZWZhdWx0LWRhcmtdey0tY2FyZC10aXRsZS1iZzogaHNsKDAsIDAlLCAzOSUpfS5yZWxhdGVkLXBhZ2UtY2FyZFtkYXRhLXRoZW1lPWRlZmF1bHQtbWluaW1hbF17LS1jYXJkLXRpdGxlLWJnOiBoc2woMCwgMCUsIDg5JSl9LnJlbGF0ZWQtcGFnZS1jYXJkW2RhdGEtdGhlbWU9cGFwZXItbGlnaHRdey0tY2FyZC10aXRsZS1iZzogaHNsKDUzLCA4JSwgNTglKX0ucmVsYXRlZC1wYWdlLWNhcmRbZGF0YS10aGVtZT1wYXBlci1kYXJrLWRhcmtdey0tY2FyZC10aXRsZS1iZzogaHNsKDIwMywgNDIlLCAxNyUpfS5yZWxhdGVkLXBhZ2UtY2FyZFtkYXRhLXRoZW1lPWJsdWVdey0tY2FyZC10aXRsZS1iZzogaHNsKDIyNywgNjglLCA2MiUpfS5yZWxhdGVkLXBhZ2UtY2FyZFtkYXRhLXRoZW1lPXB1cnBsZV17LS1jYXJkLXRpdGxlLWJnOiBoc2woMjY3LCAzOSUsIDYwJSl9LnRleHQtYnViYmxlW2RhdGEtdGhlbWU9Z3JlZW5dey0tY2FyZC10aXRsZS1iZzogaHNsKDEzNiwgMjklLCA1MCUpfS5yZWxhdGVkLXBhZ2UtY2FyZFtkYXRhLXRoZW1lPW9yYW5nZV17LS1jYXJkLXRpdGxlLWJnOiBoc2woNDMsIDcxJSwgNTElKX0ucmVsYXRlZC1wYWdlLWNhcmRbZGF0YS10aGVtZT1yZWRdey0tY2FyZC10aXRsZS1iZzogaHNsKDQsIDU4JSwgNTYlKX0ucmVsYXRlZC1wYWdlLWNhcmRbZGF0YS10aGVtZT1zcHJpbmddey0tY2FyZC10aXRsZS1iZzogaHNsKDcyLCA2NCUsIDU3JSl9LnJlbGF0ZWQtcGFnZS1jYXJkW2RhdGEtdGhlbWU9a3lvdG9dey0tY2FyZC10aXRsZS1iZzogaHNsKDMzMSwgMjElLCAyNiUpfS5yZWxhdGVkLXBhZ2UtY2FyZFtkYXRhLXRoZW1lPW5ld3lvcmtdey0tY2FyZC10aXRsZS1iZzogaHNsKDE3NiwgMjklLCA2NyUpfS5yZWxhdGVkLXBhZ2UtY2FyZHtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDppbmhlcml0O3dpZHRoOmluaGVyaXQ7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7Zm9udC1mYW1pbHk6Um9ib3RvLEhlbHZldGljYSxBcmlhbCxIaXJhZ2lubyBTYW5zLHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jYXJkLWJnLCAjZmZmKTtjb2xvcjp2YXIoLS1jYXJkLXRpdGxlLWNvbG9yLCAjNTU1KTt3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnJlbGF0ZWQtcGFnZS1jYXJkOmhvdmVye2JveC1zaGFkb3c6dmFyKC0tY2FyZC1ib3gtaG92ZXItc2hhZG93LCAwIDJweCAwIHJnYmEoMCwwLDAsLjIzKSl9LnJlbGF0ZWQtcGFnZS1jYXJkOmZvY3Vze291dGxpbmU6MDtib3gtc2hhZG93OjAgMCAwIDNweCAjNjZhZmU5OTk7Ym9yZGVyLWNvbG9yOiM2NmFmZTk7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cyxib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXN9LnJlbGF0ZWQtcGFnZS1jYXJkLmhvdmVye29wYWNpdHk6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RvcDowO2xlZnQ6MDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNhcmQtaG92ZXItYmcsIHJnYmEoMCwwLDAsLjA1KSk7bWl4LWJsZW5kLW1vZGU6bXVsdGlwbHk7ei1pbmRleDoxO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMXN9LnJlbGF0ZWQtcGFnZS1jYXJkOmhvdmVyIC5ob3ZlcntvcGFjaXR5OjF9LnJlbGF0ZWQtcGFnZS1jYXJkOmFjdGl2ZSAuaG92ZXJ7b3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2FyZC1hY3RpdmUtYmcsIHJnYmEoMCwwLDAsLjEpKX0ucmVsYXRlZC1wYWdlLWNhcmQgLmNvbnRlbnR7aGVpZ2h0OmNhbGMoMTAwJSAtIDVweCk7d2lkdGg6aW5oZXJpdDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO292ZXJmbG93OmhpZGRlbn0ucmVsYXRlZC1wYWdlLWNhcmQgLmNvbnRlbnQgLmhlYWRlcnt3aWR0aDoxMDAlO2NvbG9yOiMzOTZiZGQ7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztib3JkZXItdG9wOnZhcigtLWNhcmQtdGl0bGUtYmcsICNmMmYyZjMpIHNvbGlkIDEwcHg7cGFkZGluZzo4cHggMTBweH0ucmVsYXRlZC1wYWdlLWNhcmQgLmNvbnRlbnQgLmhlYWRlciAudGl0bGV7Zm9udC1zaXplOjExcHg7bGluZS1oZWlnaHQ6MTZweDtmb250LXdlaWdodDo3MDA7bWF4LWhlaWdodDo0OHB4O2NvbG9yOnZhcigtLWNhcmQtdGl0bGUtY29sb3IsICMzNjNjNDkpO21hcmdpbjowO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrOy13ZWJraXQtbGluZS1jbGFtcDozOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5yZWxhdGVkLXBhZ2UtY2FyZCAuY29udGVudCAuZGVzY3JpcHRpb257bGluZS1oZWlnaHQ6MTZweDtwYWRkaW5nOjhweCAxMHB4IDA7Zm9udC1zaXplOjEwcHg7d2hpdGUtc3BhY2U6cHJlLWxpbmU7Y29sdW1uLWNvdW50OjE7Y29sdW1uLWdhcDoyZW07Y29sdW1uLXdpZHRoOjEwZW07aGVpZ2h0OmluaGVyaXQ7Y29sb3I6dmFyKC0tY2FyZC1kZXNjcmlwdGlvbi1jb2xvciwgZ3JheSk7ZmxleC1zaHJpbms6MTY7b3ZlcmZsb3c6aGlkZGVufS5yZWxhdGVkLXBhZ2UtY2FyZCAuY29udGVudCAudGh1bWJuYWlse2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTttYXJnaW46MCBhdXRvO3BhZGRpbmc6MCA1cHh9LnJlbGF0ZWQtcGFnZS1jYXJkIC5jb250ZW50IC5kZXNjcmlwdGlvbiBwe21hcmdpbjowO2Rpc3BsYXk6YmxvY2t9LnJlbGF0ZWQtcGFnZS1jYXJkIC5jb250ZW50IC5kZXNjcmlwdGlvbiBjb2Rle2ZvbnQtZmFtaWx5Ok1lbmxvLE1vbmFjbyxDb25zb2xhcyxDb3VyaWVyIE5ldyxtb25vc3BhY2U7Zm9udC1zaXplOjkwJTtjb2xvcjp2YXIoLS1jb2RlLWNvbG9yLCAjMzQyZDljKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvZGUtYmcsIHJnYmEoMCwwLDAsLjA0KSk7cGFkZGluZzowO3doaXRlLXNwYWNlOnByZS13cmFwO3dvcmQtd3JhcDpicmVhay13b3JkfS5yZWxhdGVkLXBhZ2UtY2FyZCAuY29udGVudCAuZGVzY3JpcHRpb24gLmljb257aGVpZ2h0OjlweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LnJlbGF0ZWQtcGFnZS1jYXJkIC5jb250ZW50IC5kZXNjcmlwdGlvbiAucGFnZS1saW5re2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6dmFyKC0tcGFnZS1saW5rLWNvbG9yLCAjNWU4YWY3KX0uY2FyZC1idWJibGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wYWdlLWJnLCAjRkZGKTtib3gtc2hhZG93OjAgMnB4IDJweCAjMDAwMDAwMjQsMCAzcHggMXB4IC0ycHggIzAwMDMsMCAxcHggNXB4ICMwMDAwMDAxZjtwb3NpdGlvbjphYnNvbHV0ZTttYXgtd2lkdGg6ODB2dztib3gtc2l6aW5nOmNvbnRlbnQtYm94O3otaW5kZXg6OTAwMDtmb250LXNpemU6MTFweDtsaW5lLWhlaWdodDoxLjQyODU3O2Rpc3BsYXk6ZmxleDtwYWRkaW5nOjA7bWFyZ2luOjA7bGlzdC1zdHlsZTpub25lO292ZXJmbG93LXg6YXV0bztvdmVyZmxvdy15OnZpc2libGV9LmNhcmQtYnViYmxlIGxpe2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7ZmxvYXQ6bm9uZTttYXJnaW46NXB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2hhZG93OnZhcigtLWNhcmQtYm94LXNoYWRvdywgMCAycHggMCByZ2JhKDAsMCwwLC4xMikpO2JvcmRlci1yYWRpdXM6MnB4O3dpZHRoOjEyMHB4O2hlaWdodDoxMjBweH1cbmA7IiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tIFwiLi9wb3NpdGlvbi50c1wiO1xuaW1wb3J0IHsgTGlua1R5cGUgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuaW1wb3J0IHsgU2NyYXBib3ggfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuLyoqIGJ1YmJsZSBkYXRhICovXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZSB7XG4gIC8qKiBidWJibGXlhYMo44Oq44Oz44Kv44Gq44GpKeOBrnByb2plY3QgbmFtZSAqL1xuICBwcm9qZWN0OiBzdHJpbmc7XG5cbiAgLyoqIGJ1YmJsZeWFgyjjg6rjg7Pjgq/jgarjgakp44GudGlsdGUgKi9cbiAgdGl0bGU6IHN0cmluZztcblxuICAvKiogYnViYmxl5YWDKOODquODs+OCr+OBquOBqSnjga5saW5lIElEICovXG4gIGhhc2g/OiBzdHJpbmc7XG5cbiAgLyoqIOOCueOCr+ODreODvOODq+WFiOODquODs+OCr1xuICAgKlxuICAgKiDlhoXpg6jjg6rjg7Pjgq/oqJjms5Xjgbjjgrnjgq/jg63jg7zjg6vjgZnjgovjgajjgY3jga/jgIFgcHJvamVjdGDjgpLliYrjgotcbiAgICovXG4gIGxpbmtUbz86IHtcbiAgICBwcm9qZWN0Pzogc3RyaW5nO1xuICAgIHRpdGxlTGM6IHN0cmluZztcbiAgfTtcblxuICAvKiog55m655Sf5rqQ44Gu56iu6aGeICovXG4gIHR5cGU6IExpbmtUeXBlO1xuXG4gIC8qKiBidWJibGXjga7ooajnpLrkvY3nva4gKi9cbiAgcG9zaXRpb246IFBvc2l0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1YmJsZU9wZXJhdG9ycyB7XG4gIC8qKiDnj77lnKjjga7pmo7lsaTjga7kuIvjgavmlrDjgZfjgYRidWJibGXjgpLlh7rjgZlcbiAgICpcbiAgICog44GZ44Gn44GrYnViYmxl44GV44KM44Gm44GE44Gf5aC05ZCI44CB44Gd44KM5Lul6ZmN44GuYnViYmxl44KS5ZCr44KB44Gm5raI44GX44Gm44GL44KJ5paw44GX44GE44Gu44KS5Ye644GZXG4gICAqL1xuICBidWJibGU6IChzb3VyY2U6IFNvdXJjZSkgPT4gdm9pZDtcblxuICAvKiog54++5Zyo44Gu6ZqO5bGk44KI44KK5LiL44GuYnViYmxlc+OCkuOBmeOBueOBpua2iOOBmSAqL1xuICBoaWRlOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1YmJsZVNvdXJjZSBleHRlbmRzIEJ1YmJsZU9wZXJhdG9ycyB7XG4gIC8qKiBidWJibGUgZGF0YSAqL1xuICBzb3VyY2U6IFNvdXJjZTtcblxuICAvKiog6Kaq6ZqO5bGk44GuYnViYmxlc+OBruODmuODvOOCuOOCv+OCpOODiOODqyAqL1xuICBwYXJlbnRUaXRsZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY29uc3QgdXNlQnViYmxlcyA9ICgpOiBbXG4gIEJ1YmJsZU9wZXJhdG9ycyxcbiAgLi4uQnViYmxlU291cmNlW10sXG5dID0+IHtcbiAgY29uc3QgW2J1YmJsZXMsIHNldEJ1YmJsZXNdID0gdXNlU3RhdGU8W1xuICAgIEJ1YmJsZU9wZXJhdG9ycyxcbiAgICAuLi5CdWJibGVTb3VyY2VbXSxcbiAgXT4oW3tcbiAgICBidWJibGU6IChzb3VyY2U6IFNvdXJjZSkgPT4gY2hhbmdlKDAsIHNvdXJjZSksXG4gICAgaGlkZTogKCkgPT4gY2hhbmdlKDApLFxuICB9XSk7XG5cbiAgY29uc3QgY2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgZGVwdGg6IG51bWJlcixcbiAgICAgIHNvdXJjZT86IFNvdXJjZSxcbiAgICApID0+IHtcbiAgICAgIC8vIOaTjeS9nOWHveaVsOOChOS7luOBrmJ1YmJsZeODh+ODvOOCv+OBi+OCieioiOeul+OBleOCjOOCi+WApOOCkui/veWKoOOBmeOCi1xuICAgICAgLy8g5pu05paw44GV44KM44GfYnViYmxl5Lul5aSW44Gv44CBb2JqZWN044Gu5Y+C54Wn44KS5aOK44GV44Ga44Gr44Gd44Gu44G+44G+6L+U44GZXG4gICAgICBzZXRCdWJibGVzKChcbiAgICAgICAgW2ZpcnN0LCAuLi5wcmV2XSxcbiAgICAgICkgPT4gW1xuICAgICAgICBmaXJzdCxcbiAgICAgICAgLi4uKFxuICAgICAgICAgIHNvdXJjZVxuICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIC4uLnByZXYuc2xpY2UoMCwgZGVwdGgpLFxuICAgICAgICAgICAgICBzb3VyY2UgPT09IHByZXYuYXQoZGVwdGgpPy5zb3VyY2UgPyBwcmV2LmF0KGRlcHRoKSEgOiAoe1xuICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICBwYXJlbnRUaXRsZXM6IFtcbiAgICAgICAgICAgICAgICAgIHNjcmFwYm94LlBhZ2UudGl0bGUgPz8gXCJcIixcbiAgICAgICAgICAgICAgICAgIC4uLnByZXYuc2xpY2UoMCwgZGVwdGgpLm1hcCgoYnViYmxlKSA9PiBidWJibGUuc291cmNlLnRpdGxlKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGJ1YmJsZTogKHNvdXJjZTogU291cmNlKSA9PiBjaGFuZ2UoZGVwdGggKyAxLCBzb3VyY2UpLFxuICAgICAgICAgICAgICAgIGhpZGU6ICgpID0+IGNoYW5nZShkZXB0aCArIDEpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIDogWy4uLnByZXYuc2xpY2UoMCwgZGVwdGgpXVxuICAgICAgICApLFxuICAgICAgXSk7XG4gICAgfSxcbiAgICBbXSxcbiAgKTtcblxuICByZXR1cm4gYnViYmxlcztcbn07XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5cbnR5cGUgRXZlbnRNYXA8RSBleHRlbmRzIEV2ZW50VGFyZ2V0PiA9IEUgZXh0ZW5kcyBXaW5kb3cgPyBXaW5kb3dFdmVudE1hcFxuICA6IEUgZXh0ZW5kcyBEb2N1bWVudCA/IERvY3VtZW50RXZlbnRNYXBcbiAgOiBFIGV4dGVuZHMgSFRNTEVsZW1lbnQgPyBIVE1MRWxlbWVudEV2ZW50TWFwXG4gIDogR2xvYmFsRXZlbnRIYW5kbGVyc0V2ZW50TWFwO1xudHlwZSBMaXN0ZW5lcjxFIGV4dGVuZHMgRXZlbnRUYXJnZXQsIEsgZXh0ZW5kcyBrZXlvZiBFdmVudE1hcDxFPj4gPSBFIGV4dGVuZHNcbiAgV2luZG93ID8gKHRoaXM6IFdpbmRvdywgZXY6IEV2ZW50TWFwPEU+W0tdKSA9PiB2b2lkXG4gIDogRSBleHRlbmRzIERvY3VtZW50ID8gKHRoaXM6IERvY3VtZW50LCBldjogRXZlbnRNYXA8RT5bS10pID0+IHZvaWRcbiAgOiBFIGV4dGVuZHMgSFRNTEVsZW1lbnQgPyAodGhpczogSFRNTEVsZW1lbnQsIGV2OiBFdmVudE1hcDxFPltLXSkgPT4gdm9pZFxuICA6IEV2ZW50TGlzdGVuZXJPckV2ZW50TGlzdGVuZXJPYmplY3Q7XG5cbmV4cG9ydCBjb25zdCB1c2VFdmVudExpc3RlbmVyID0gPFxuICBFIGV4dGVuZHMgRXZlbnRUYXJnZXQsXG4gIEsgZXh0ZW5kcyAoa2V5b2YgRXZlbnRNYXA8RT4pICYgc3RyaW5nLFxuPihcbiAgZWxlbWVudDogRSxcbiAgdHlwZTogSyxcbiAgbGlzdGVuZXI6IExpc3RlbmVyPEUsIEs+LFxuICBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zLFxuICBkZXBzPzogdW5rbm93bltdLFxuKTogdm9pZCA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgdHlwZSxcbiAgICAgIGxpc3RlbmVyIGFzIEV2ZW50TGlzdGVuZXJPckV2ZW50TGlzdGVuZXJPYmplY3QsXG4gICAgICBvcHRpb25zLFxuICAgICk7XG4gICAgcmV0dXJuICgpID0+XG4gICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGxpc3RlbmVyIGFzIEV2ZW50TGlzdGVuZXJPckV2ZW50TGlzdGVuZXJPYmplY3QsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApO1xuICB9LCBbZWxlbWVudCwgdHlwZSwgb3B0aW9ucywgLi4uKGRlcHMgPz8gW10pXSk7XG59O1xuIiwgIi8qKiDnt6jpm4bnlLvpnaLjga7jgr/jgqTjg4jjg6vooYzjga5ET03jgYvjganjgYbjgYvliKTlrprjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBpc1RpdGxlID0gKFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbik6IGVsZW1lbnQgaXMgSFRNTFNwYW5FbGVtZW50ID0+XG4gIGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MU3BhbkVsZW1lbnQgJiZcbiAgZWxlbWVudC5tYXRjaGVzKFwiLmxpbmUtdGl0bGUgLnRleHRcIik7XG5cbi8qKiBzY3JhcGJveOWGheOBruODquODs+OCr+OBi+OBqeOBhuOBi+WIpOWumuOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGlzUGFnZUxpbmsgPSAoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuKTogZWxlbWVudCBpcyBIVE1MQW5jaG9yRWxlbWVudCA9PlxuICBlbGVtZW50IGluc3RhbmNlb2YgSFRNTEFuY2hvckVsZW1lbnQgJiZcbiAgZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoXCJwYWdlLWxpbmtcIik7XG5cbi8qKiDmjIflrprjgZfjgZ90ZW1wbGF0ZSBsaXRlcmFsIHN0cmluZ+OBi+OBqeOBhuOBi+WIpOWumuOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGlzTGl0ZXJhbFN0cmluZ3MgPSA8UyBleHRlbmRzIHJlYWRvbmx5IHN0cmluZ1tdPihcbiAgdmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgLi4ubGl0ZXJhbHM6IFNcbik6IHZhbHVlIGlzIFNbbnVtYmVyXSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIGxpdGVyYWxzLmluY2x1ZGVzKHZhbHVlKTtcbiIsICIvKiogQGpzeCBoICovXG4vKiogQGpzeEZyYWcgRnJhZ21lbnQgKi9cbi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiLz5cbmltcG9ydCB7IEJ1YmJsZSB9IGZyb20gXCIuL0J1YmJsZS50c3hcIjtcbmltcG9ydCB7IFVzZXJDU1MgfSBmcm9tIFwiLi9Vc2VyQ1NTLnRzeFwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIi4vYXBwLm1pbi5jc3MudHNcIjtcbmltcG9ydCB7IEZyYWdtZW50LCBoLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0IH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyB1c2VCdWJibGVzIH0gZnJvbSBcIi4vdXNlQnViYmxlcy50c1wiO1xuaW1wb3J0IHsgc3RheUhvdmVyaW5nIH0gZnJvbSBcIi4vc3RheUhvdmVyaW5nLnRzXCI7XG5pbXBvcnQgeyB1c2VFdmVudExpc3RlbmVyIH0gZnJvbSBcIi4vdXNlRXZlbnRMaXN0ZW5lci50c1wiO1xuaW1wb3J0IHsgaXNQYWdlTGluaywgaXNUaXRsZSB9IGZyb20gXCIuL2lzLnRzXCI7XG5pbXBvcnQgeyBwYXJzZUxpbmsgfSBmcm9tIFwiLi9wYXJzZUxpbmsudHNcIjtcbmltcG9ydCB7IHRvSWQgfSBmcm9tIFwiLi9pZC50c1wiO1xuaW1wb3J0IHsgY2FsY0J1YmJsZVBvc2l0aW9uIH0gZnJvbSBcIi4vcG9zaXRpb24udHNcIjtcbmltcG9ydCB7IHByZWZldGNoIGFzIHByZWZldGNoXyB9IGZyb20gXCIuL2J1YmJsZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBMaW5rVHlwZSB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3RJZCwgU2NyYXBib3ggfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuZXhwb3J0IGNvbnN0IHVzZXJzY3JpcHROYW1lID0gXCJzY3JhcC1idWJibGVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBcHBQcm9wcyB7XG4gIC8qKiBob3ZlcuOBl+OBpuOBi+OCiWJ1YmJsZeOCkuihqOekuuOBmeOCi+OBvuOBp+OBruOCv+OCpOODoOODqeOCsCAqL1xuICBkZWxheTogbnVtYmVyO1xuXG4gIC8qKiDpgI/pgY7nmoTjgavmibHjgYZwcm9qZWN044Gu44Oq44K544OIICovXG4gIHdoaXRlTGlzdDogU2V0PHN0cmluZz47XG5cbiAgLyoqIHdhdGNoIGxpc3QgKi9cbiAgd2F0Y2hMaXN0OiBTZXQ8UHJvamVjdElkPjtcblxuICAvKiog44Kr44K544K/44OgQ1NTXG4gICAqXG4gICAqIFVSTCBvciBVUkzmloflrZfliJfjga7loLTlkIjjga/jgIFDU1Pjg5XjgqHjgqTjg6vjgbjjga5VUkzjgaDjgajjgb/jgarjgZfjgaY8bGluayAvPuOBp+iqreOBv+i+vOOCgFxuICAgKiDjgZ3jgozku6XlpJbjga7loLTlkIjjga/jgIHjgqTjg7Pjg6njgqTjg7NDU1PjgajjgZfjgaY8c3R5bGUgLz7jgafoqq3jgb/ovrzjgoBcbiAgICovXG4gIHN0eWxlOiBVUkwgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBBcHAgPSAoXG4gIHsgZGVsYXksIHdoaXRlTGlzdCwgd2F0Y2hMaXN0LCBzdHlsZSB9OiBBcHBQcm9wcyxcbikgPT4ge1xuICBjb25zdCBbeyBidWJibGUsIGhpZGUgfSwgLi4uYnViYmxlc10gPSB1c2VCdWJibGVzKCk7XG5cbiAgLyoqIOODmuODvOOCuOODh+ODvOOCv+OCkuWFiOiqreOBv+OBmeOCi1xuICAgKlxuICAgKiB3aGl0ZSBsaXN044Gr44Gq44GE5aSW6YOo44OX44Ot44K444Kn44Kv44OI44Oq44Oz44Kv44Gv44CB44Gd44Gu44Oa44O844K444Gg44GR44KS6Kqt44G/6L6844KAXG4gICAqL1xuICBjb25zdCBwcmVmZXRjaCA9IHVzZUNhbGxiYWNrKChwcm9qZWN0OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpID0+XG4gICAgcHJlZmV0Y2hfKFxuICAgICAgdGl0bGUsXG4gICAgICB3aGl0ZUxpc3QuaGFzKHByb2plY3QpID8gd2hpdGVMaXN0IDogbmV3IFNldChbcHJvamVjdF0pLFxuICAgICAgd2F0Y2hMaXN0LFxuICAgICksIFt3aGl0ZUxpc3QsIHdhdGNoTGlzdF0pO1xuXG4gIC8vIGhvdmVy5Yem55CGXG4gIHVzZUV2ZW50TGlzdGVuZXIoXG4gICAgZG9jdW1lbnQsXG4gICAgXCJwb2ludGVyZW50ZXJcIixcbiAgICBhc3luYyAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgY29uc3QgbGluayA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgLy8g5Yem55CG44KSPGE+44GLLmxpbmUtdGl0bGXjga7jgajjgY3jgavpmZDlrprjgZnjgotcbiAgICAgIGlmICghaXNQYWdlTGluayhsaW5rKSAmJiAhaXNUaXRsZShsaW5rKSkgcmV0dXJuO1xuXG4gICAgICBjb25zdCB7XG4gICAgICAgIHByb2plY3QgPSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUsXG4gICAgICAgIHRpdGxlOiBlbmNvZGVkVGl0bGUsXG4gICAgICAgIGhhc2ggPSBcIlwiLFxuICAgICAgfSA9IGlzUGFnZUxpbmsobGluaylcbiAgICAgICAgPyBwYXJzZUxpbmsoe1xuICAgICAgICAgIHBhdGhUeXBlOiBcInJvb3RcIixcbiAgICAgICAgICBocmVmOiBgJHtuZXcgVVJMKGxpbmsuaHJlZikucGF0aG5hbWV9JHtuZXcgVVJMKGxpbmsuaHJlZikuaGFzaH1gLFxuICAgICAgICB9KVxuICAgICAgICA6IHsgcHJvamVjdDogc2NyYXBib3guUHJvamVjdC5uYW1lLCB0aXRsZTogc2NyYXBib3guUGFnZS50aXRsZSB9O1xuICAgICAgLy8gWy9wcm9qZWN0XeOBruW9ouOBruODquODs+OCr+OBr+S9leOCguOBl+OBquOBhFxuICAgICAgaWYgKHByb2plY3QgPT09IFwiXCIpIHJldHVybjtcbiAgICAgIGNvbnN0IHRpdGxlID0gZGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZWRUaXRsZSA/PyBcIlwiKTtcblxuICAgICAgcHJlZmV0Y2gocHJvamVjdCwgdGl0bGUpO1xuXG4gICAgICAvLyBkZWxheeS7peWGheOBq+OCq+ODvOOCveODq+OBjOmbouOCjOOCi+OBi+OCr+ODquODg+OCr+OBl+OBn+OCieS9leOCguOBl+OBquOBhFxuICAgICAgaWYgKCFhd2FpdCBzdGF5SG92ZXJpbmcobGluaywgZGVsYXkpKSByZXR1cm47XG5cbiAgICAgIGJ1YmJsZSh7XG4gICAgICAgIHByb2plY3QsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBoYXNoLFxuICAgICAgICBwb3NpdGlvbjogY2FsY0J1YmJsZVBvc2l0aW9uKGxpbmspLFxuICAgICAgICB0eXBlOiBnZXRMaW5rVHlwZShsaW5rKSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgeyBjYXB0dXJlOiB0cnVlIH0sXG4gICAgW1xuICAgICAgZGVsYXksXG4gICAgICB3aGl0ZUxpc3QsXG4gICAgICB3YXRjaExpc3QsXG4gICAgXSxcbiAgKTtcblxuICAvLyDjgqvjg7zjg4nlpJbjgq/jg6rjg4Pjgq/jgaflhajjgabjga5idWJibGXjgpLpmqDjgZlcbiAgdXNlRXZlbnRMaXN0ZW5lcihcbiAgICBkb2N1bWVudCxcbiAgICBcImNsaWNrXCIsXG4gICAgKGUpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKHRhcmdldC5kYXRhc2V0LnVzZXJzY3JpcHROYW1lID09PSB1c2Vyc2NyaXB0TmFtZSkgcmV0dXJuO1xuICAgICAgaGlkZSgpO1xuICAgIH0sXG4gICAgeyBjYXB0dXJlOiB0cnVlIH0sXG4gICAgW2hpZGVdLFxuICApO1xuXG4gIC8vIOODmuODvOOCuOmBt+enu+OBp+OCq+ODvOODieOCkua2iOOBmVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNjcmFwYm94LmFkZExpc3RlbmVyKFwicGFnZTpjaGFuZ2VkXCIsIGhpZGUpO1xuICAgIHJldHVybiAoKSA9PiBzY3JhcGJveC5yZW1vdmVMaXN0ZW5lcihcInBhZ2U6Y2hhbmdlZFwiLCBoaWRlKTtcbiAgfSwgW2hpZGVdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8bGlua1xuICAgICAgICByZWw9XCJzdHlsZXNoZWV0XCJcbiAgICAgICAgaHJlZj1cImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0thVGVYLzAuMTIuMC9rYXRleC5taW4uY3NzXCJcbiAgICAgIC8+XG4gICAgICA8c3R5bGU+e0NTU308L3N0eWxlPlxuICAgICAgPFVzZXJDU1Mgc3R5bGU9e3N0eWxlfSAvPlxuICAgICAge2J1YmJsZXMubWFwKChidWJibGUpID0+IChcbiAgICAgICAgPEJ1YmJsZVxuICAgICAgICAgIGtleT17dG9JZChidWJibGUuc291cmNlLnByb2plY3QsIGJ1YmJsZS5zb3VyY2UudGl0bGUpfVxuICAgICAgICAgIHsuLi5idWJibGV9XG4gICAgICAgICAgd2hpdGVMaXN0PXt3aGl0ZUxpc3R9XG4gICAgICAgICAgZGVsYXk9e2RlbGF5fVxuICAgICAgICAgIHByZWZldGNoPXtwcmVmZXRjaH1cbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgZ2V0TGlua1R5cGUgPSAoZWxlbWVudDogSFRNTFNwYW5FbGVtZW50IHwgSFRNTEFuY2hvckVsZW1lbnQpOiBMaW5rVHlwZSA9PlxuICBpc1BhZ2VMaW5rKGVsZW1lbnQpXG4gICAgPyAoZWxlbWVudC50eXBlID09PSBcImxpbmtcIiA/IFwibGlua1wiIDogXCJoYXNodGFnXCIpXG4gICAgOiBcInRpdGxlXCI7XG4iLCAiLyoqIEBqc3ggaCAqL1xuLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIvPlxuaW1wb3J0IHsgaCwgcmVuZGVyIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBnZXRXYXRjaExpc3QgfSBmcm9tIFwiLi93YXRjaExpc3QudHNcIjtcbmltcG9ydCB7IEFwcCwgQXBwUHJvcHMsIHVzZXJzY3JpcHROYW1lIH0gZnJvbSBcIi4vQXBwLnRzeFwiO1xuaW1wb3J0IHsgc2V0RGVidWdNb2RlIH0gZnJvbSBcIi4vZGVidWcudHNcIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdElkLCBTY3JhcGJveCB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5leHBvcnQgdHlwZSB7IEFwcFByb3BzIH07XG5leHBvcnQgaW50ZXJmYWNlIE1vdW50SW5pdFxuICBleHRlbmRzIFBhcnRpYWw8T21pdDxBcHBQcm9wcywgXCJ3aGl0ZUxpc3RcIiB8IFwid2F0Y2hMaXN0XCI+PiB7XG4gIC8qKiBkZWJ1Z+eUqOacieWKueWMluODleODqeOCsCAqL1xuICBkZWJ1Zz86IGJvb2xlYW4gfCBJdGVyYWJsZTxzdHJpbmc+O1xuXG4gIC8qKiDpgI/pgY7nmoTjgavmibHjgYZwcm9qZWN044Gu44Oq44K544OIICovXG4gIHdoaXRlTGlzdD86IEl0ZXJhYmxlPHN0cmluZz47XG5cbiAgLyoqIHdhdGNoIGxpc3QgKi9cbiAgd2F0Y2hMaXN0PzogSXRlcmFibGU8UHJvamVjdElkPjtcbn1cblxuZXhwb3J0IGNvbnN0IG1vdW50ID0gYXN5bmMgKGluaXQ/OiBNb3VudEluaXQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3Qge1xuICAgIGRlbGF5ID0gNTAwLFxuICAgIHdoaXRlTGlzdCA9IFtdLFxuICAgIHdhdGNoTGlzdCA9IChhd2FpdCBnZXRXYXRjaExpc3QoKSkuc2xpY2UoMCwgMTAwKSxcbiAgICBzdHlsZSA9IFwiXCIsXG4gICAgZGVidWcgPSBmYWxzZSxcbiAgfSA9IGluaXQgPz8ge307XG5cbiAgc2V0RGVidWdNb2RlKGRlYnVnKTtcbiAgY29uc3QgYXBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgYXBwLmRhdGFzZXQudXNlcnNjcmlwdE5hbWUgPSB1c2Vyc2NyaXB0TmFtZTtcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmQoYXBwKTtcbiAgY29uc3Qgc2hhZG93Um9vdCA9IGFwcC5hdHRhY2hTaGFkb3coeyBtb2RlOiBcIm9wZW5cIiB9KTtcbiAgcmVuZGVyKFxuICAgIDxBcHBcbiAgICAgIGRlbGF5PXtkZWxheX1cbiAgICAgIHdoaXRlTGlzdD17bmV3IFNldChbc2NyYXBib3guUHJvamVjdC5uYW1lLCAuLi53aGl0ZUxpc3RdKX1cbiAgICAgIHdhdGNoTGlzdD17bmV3IFNldCh3YXRjaExpc3QpfVxuICAgICAgc3R5bGU9e3N0eWxlfVxuICAgIC8+LFxuICAgIHNoYWRvd1Jvb3QsXG4gICk7XG59O1xuIiwgImltcG9ydCB7IG1vdW50IH0gZnJvbSBcIi4uL3Rha2tlcjk5JTJGU2NyYXBCdWJibGUvbW9kLnRzeFwiO1xuaW1wb3J0IHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vc2NyYXBib3gtanAlMkZ0eXBlcy91c2Vyc2NyaXB0LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuY29uc3QgdGFra2VyX2xpc3QgPSBbXCJ0YWtrZXItbWVtZXhcIiwgXCJ0YWtrZXItcHJpdmF0ZVwiLCBcInRha2tlclwiLCBcInRha2tlci1ib29rc1wiLCBcInZpbGxhZ2VwdW1wXCJdO1xuY29uc3QgYWRkaXRpb25hbF9saXN0PSBbXTtcbnN3aXRjaCAoc2NyYXBib3guUHJvamVjdC5uYW1lKSB7XG4gICBjYXNlIFwiaHViXCI6XG4gICBjYXNlIFwidmlsbGFnZXB1bXBcIjpcbiAgIGNhc2UgXCJ2ZXJiYWxpemluZy1jb21tdW5pdHlcIjpcbiAgICAgYWRkaXRpb25hbF9saXN0LnB1c2goXCJ2aWxsYWdlcHVtcFwiLCBcImh1YlwiLCBcInZlcmJhbGl6aW5nLWNvbW11bml0eVwiKTtcbiAgICAgYnJlYWs7XG4gICBjYXNlIFwicHJvZ3JhbW1pbmctbm90ZXNcIjpcbiAgIGNhc2UgXCJjdXN0b21pemVcIjpcbiAgIGNhc2UgXCJzY3JhcGJveGxhYlwiOlxuICAgICBhZGRpdGlvbmFsX2xpc3QucHVzaChcInByb2dyYW1taW5nLW5vdGVzXCIsIFwiY3VzdG9taXplXCIsIFwic2NyYXBib3hsYWJcIik7XG4gICAgIGJyZWFrO1xuICAgY2FzZSBcInN0YVwiOlxuICAgICBhZGRpdGlvbmFsX2xpc3QucHVzaChcInN0YS10YXNrbWFuYWdlbWVudFwiKTtcbiAgICAgYnJlYWs7XG4gICBjYXNlIFwic3RhLXRhc2ttYW5hZ2VtZW50XCI6XG4gICBjYXNlIFwidGFza21hbmFnZW1lbnRcIjpcbiAgICAgYWRkaXRpb25hbF9saXN0LnB1c2goXCJzdGEtdGFza21hbmFnZW1lbnRcIiwgXCJ0YXNrbWFuYWdlbWVudFwiKTtcbiAgICAgYnJlYWs7XG4gIGNhc2UgXCJwbHVyYWxpdHktamFwYW5lc2VcIjpcbiAgICAgYWRkaXRpb25hbF9saXN0LnB1c2goXCJuaXNoaW9cIiwgXCJ0a2dzaG5cIik7XG4gICAgIGJyZWFrO1xufVxuXG5tb3VudCh7XG4gIC8vZXhwaXJlZDogMTAgLyo2MOenkuOBr+mVt+OBhOOBruOBpzEw56eS44Gr44GX44GfKi8sXG4gIGRlbGF5OiAvbW9iaWxlL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSA/IDMwMCA6IDUwMCxcbiAgd2hpdGVMaXN0OiBbLi4udGFra2VyX2xpc3QsIC4uLmFkZGl0aW9uYWxfbGlzdF0sXG4gIHN0eWxlOiAnQGltcG9ydCBcIi9hcGkvY29kZS90YWtrZXIva2FrZXJ144Gu6IOM5pmv44KS55m944Gr44GZ44KLVXNlckNTUy9zdHlsZS5jc3NcIjtcXG5AaW1wb3J0IFwiL2FwaS9jb2RlL3Rha2tlci/jgqLjgqTjgrPjg7PoqJjms5XjgpLnlLvlg4/oqJjms5XjgaPjgb3jgY/jgZnjgotVc2VyQ1NTL3N0eWxlMi5jc3NcIjsnLFxufSk7XG4iLCAiZXhwb3J0IGludGVyZmFjZSBQYXJzZUNvZGVUaXRsZVJlc3VsdCB7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGxhbmc6IHN0cmluZztcbn1cbmV4cG9ydCBjb25zdCBwYXJzZUNvZGVUaXRsZSA9ICh0aXRsZTogc3RyaW5nKTogUGFyc2VDb2RlVGl0bGVSZXN1bHQgPT4ge1xuICB7XG4gICAgY29uc3QgbWF0Y2ggPSB0aXRsZS5tYXRjaCgvXihbXihdKylcXCgoW14pXSspXFwpJC8pO1xuICAgIGlmIChtYXRjaCkgcmV0dXJuIHsgZmlsZU5hbWU6IG1hdGNoWzFdLCBsYW5nOiBtYXRjaFsyXSB9O1xuICB9XG4gIGNvbnN0IGxhbmcgPSB0aXRsZS5zcGxpdChcIi5cIikucG9wKCk7XG4gIHJldHVybiBsYW5nID09PSB1bmRlZmluZWRcbiAgICA/IHsgZmlsZU5hbWU6IHRpdGxlLCBsYW5nOiB0aXRsZSB9XG4gICAgOiB7IGZpbGVOYW1lOiB0aXRsZSwgbGFuZyB9O1xufTtcbiIsICJpbXBvcnQgeyBwYXJzZUNvZGVUaXRsZSB9IGZyb20gXCIuL2NvZGVUaXRsZS50c1wiO1xuaW1wb3J0IHsgQmFzZUxpbmUsIGVuY29kZVRpdGxlVVJJLCBwYXJzZSB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuXG5pbnRlcmZhY2UgRmlsZSB7XG4gIHBhdGg6IHN0cmluZztcbiAgbGFuZzogc3RyaW5nO1xuICAvKiog44Kz44O844OJ44OW44Ot44OD44Kv44Gu6ZaL5aeL6KGM44GuaWQgKi9cbiAgc3RhcnRJZHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Q29kZUZpbGVzID0gKFxuICBwcm9qZWN0OiBzdHJpbmcsXG4gIHRpdGxlOiBzdHJpbmcsXG4gIGxpbmVzOiByZWFkb25seSBCYXNlTGluZVtdLFxuKTogSXRlcmFibGU8RmlsZT4gPT4ge1xuICBpZiAobGluZXMubGVuZ3RoID09PSAwKSByZXR1cm4gW107XG4gIGNvbnN0IGlucHV0ID0gbGluZXMubWFwKChsaW5lKSA9PiBsaW5lLnRleHQpLmpvaW4oXCJcXG5cIik7XG4gIGNvbnN0IGJsb2NrcyA9IHBhcnNlKGlucHV0LCB7IGhhc1RpdGxlOiB0cnVlIH0pO1xuXG4gIC8qKiDliIblibLjgZXjgozjgZ/jgrPjg7zjg4njg5bjg63jg4Pjgq/jgpLntZDlkIjjgZnjgovjga7jgavkvb/jgYYgKi9cbiAgY29uc3QgY29kZXMgPSBuZXcgTWFwPHN0cmluZywgRmlsZT4oKTtcbiAgLyoqIOePvuWcqOiqreOCk+OBp+OBhOOCi2BwYWNrLnJvd3NbMF1g44Gu6KGM55Wq5Y+3ICovXG4gIGxldCBjb3VudGVyID0gMDtcbiAgZm9yIChjb25zdCBibG9jayBvZiBibG9ja3MpIHtcbiAgICBzd2l0Y2ggKGJsb2NrLnR5cGUpIHtcbiAgICAgIGNhc2UgXCJ0aXRsZVwiOlxuICAgICAgY2FzZSBcImxpbmVcIjoge1xuICAgICAgICBjb3VudGVyKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBcInRhYmxlXCI6XG4gICAgICAgIGNvdW50ZXIgKz0gYmxvY2suY2VsbHMubGVuZ3RoICsgMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiY29kZUJsb2NrXCI6IHtcbiAgICAgICAgY29uc3QgeyBmaWxlTmFtZSwgbGFuZyB9ID0gcGFyc2VDb2RlVGl0bGUoYmxvY2suZmlsZU5hbWUpO1xuICAgICAgICBjb25zdCBwcmV2ID0gY29kZXMuZ2V0KGZpbGVOYW1lKTtcbiAgICAgICAgY29kZXMuc2V0KFxuICAgICAgICAgIGZpbGVOYW1lLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBhdGg6IHByZXY/LnBhdGggPz9cbiAgICAgICAgICAgICAgYGh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvJHtwcm9qZWN0fS8ke1xuICAgICAgICAgICAgICAgIGVuY29kZVRpdGxlVVJJKHRpdGxlKVxuICAgICAgICAgICAgICB9LyR7ZW5jb2RlVGl0bGVVUkkoZmlsZU5hbWUpfWAsXG4gICAgICAgICAgICBsYW5nOiBwcmV2Py5sYW5nID8/IGxhbmcsXG4gICAgICAgICAgICBzdGFydElkczogWy4uLihwcmV2Py5zdGFydElkcyA/PyBbXSksIGxpbmVzW2NvdW50ZXJdLmlkXSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgICBjb3VudGVyICs9IGJsb2NrLmNvbnRlbnQuc3BsaXQoXCJcXG5cIikubGVuZ3RoICsgMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvZGVzLnZhbHVlcygpO1xufTtcbiIsICIvLyBkZW5vLWxpbnQtaWdub3JlLWZpbGVcbi8qKiBlc2J1aWxkLXdhc21AMC4yMS41XG4gKlxuICogTUlUIExpY2Vuc2VcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXZhbiBXYWxsYWNlXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiAqL1xuLy8gVGhpcyBjb2RlIGlzIHBvcnRlZCBmcm9tIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9ldmFudy9lc2J1aWxkL3YwLjIxLjUvbGliL3NoYXJlZC9zdGRpb19wcm90b2NvbC50c1xuXG4vLyBUaGUgSmF2YVNjcmlwdCBBUEkgY29tbXVuaWNhdGVzIHdpdGggdGhlIEdvIGNoaWxkIHByb2Nlc3Mgb3ZlciBzdGRpbi9zdGRvdXRcbi8vIHVzaW5nIHRoaXMgcHJvdG9jb2wuIEl0J3MgYSB2ZXJ5IHNpbXBsZSBiaW5hcnkgcHJvdG9jb2wgdGhhdCB1c2VzIHByaW1pdGl2ZXNcbi8vIGFuZCBuZXN0ZWQgYXJyYXlzIGFuZCBtYXBzLiBJdCdzIGJhc2ljYWxseSBKU09OIHdpdGggVVRGLTggZW5jb2RpbmcgYW5kIGFuXG4vLyBhZGRpdGlvbmFsIGJ5dGUgYXJyYXkgcHJpbWl0aXZlLiBZb3UgbXVzdCBzZW5kIGEgcmVzcG9uc2UgYWZ0ZXIgcmVjZWl2aW5nIGFcbi8vIHJlcXVlc3QgYmVjYXVzZSB0aGUgb3RoZXIgZW5kIGlzIGJsb2NraW5nIG9uIHRoZSByZXNwb25zZSBjb21pbmcgYmFjay5cblxuaW1wb3J0IHR5cGUgKiBhcyB0eXBlcyBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkUmVxdWVzdCB7XG4gIGNvbW1hbmQ6IFwiYnVpbGRcIjtcbiAga2V5OiBudW1iZXI7XG4gIGVudHJpZXM6IFtzdHJpbmcsIHN0cmluZ11bXTsgLy8gVXNlIGFuIGFycmF5IGluc3RlYWQgb2YgYSBtYXAgdG8gcHJlc2VydmUgb3JkZXJcbiAgZmxhZ3M6IHN0cmluZ1tdO1xuICB3cml0ZTogYm9vbGVhbjtcbiAgc3RkaW5Db250ZW50czogVWludDhBcnJheSB8IG51bGw7XG4gIHN0ZGluUmVzb2x2ZURpcjogc3RyaW5nIHwgbnVsbDtcbiAgYWJzV29ya2luZ0Rpcjogc3RyaW5nO1xuICBub2RlUGF0aHM6IHN0cmluZ1tdO1xuICBjb250ZXh0OiBib29sZWFuO1xuICBwbHVnaW5zPzogQnVpbGRQbHVnaW5bXTtcbiAgbWFuZ2xlQ2FjaGU/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBmYWxzZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVSZXF1ZXN0IHtcbiAgY29tbWFuZDogXCJzZXJ2ZVwiO1xuICBrZXk6IG51bWJlcjtcbiAgb25SZXF1ZXN0OiBib29sZWFuO1xuICBwb3J0PzogbnVtYmVyO1xuICBob3N0Pzogc3RyaW5nO1xuICBzZXJ2ZWRpcj86IHN0cmluZztcbiAga2V5ZmlsZT86IHN0cmluZztcbiAgY2VydGZpbGU/OiBzdHJpbmc7XG4gIGZhbGxiYWNrPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlUmVzcG9uc2Uge1xuICBwb3J0OiBudW1iZXI7XG4gIGhvc3Q6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFBsdWdpbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgb25TdGFydDogYm9vbGVhbjtcbiAgb25FbmQ6IGJvb2xlYW47XG4gIG9uUmVzb2x2ZTogeyBpZDogbnVtYmVyOyBmaWx0ZXI6IHN0cmluZzsgbmFtZXNwYWNlOiBzdHJpbmcgfVtdO1xuICBvbkxvYWQ6IHsgaWQ6IG51bWJlcjsgZmlsdGVyOiBzdHJpbmc7IG5hbWVzcGFjZTogc3RyaW5nIH1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFJlc3BvbnNlIHtcbiAgZXJyb3JzOiB0eXBlcy5NZXNzYWdlW107XG4gIHdhcm5pbmdzOiB0eXBlcy5NZXNzYWdlW107XG4gIG91dHB1dEZpbGVzPzogQnVpbGRPdXRwdXRGaWxlW107XG4gIG1ldGFmaWxlPzogc3RyaW5nO1xuICBtYW5nbGVDYWNoZT86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IGZhbHNlPjtcbiAgd3JpdGVUb1N0ZG91dD86IFVpbnQ4QXJyYXk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25FbmRSZXF1ZXN0IGV4dGVuZHMgQnVpbGRSZXNwb25zZSB7XG4gIGNvbW1hbmQ6IFwib24tZW5kXCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25FbmRSZXNwb25zZSB7XG4gIGVycm9yczogdHlwZXMuTWVzc2FnZVtdO1xuICB3YXJuaW5nczogdHlwZXMuTWVzc2FnZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkT3V0cHV0RmlsZSB7XG4gIHBhdGg6IHN0cmluZztcbiAgY29udGVudHM6IFVpbnQ4QXJyYXk7XG4gIGhhc2g6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaW5nUmVxdWVzdCB7XG4gIGNvbW1hbmQ6IFwicGluZ1wiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYnVpbGRSZXF1ZXN0IHtcbiAgY29tbWFuZDogXCJyZWJ1aWxkXCI7XG4gIGtleTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYnVpbGRSZXNwb25zZSB7XG4gIGVycm9yczogdHlwZXMuTWVzc2FnZVtdO1xuICB3YXJuaW5nczogdHlwZXMuTWVzc2FnZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpc3Bvc2VSZXF1ZXN0IHtcbiAgY29tbWFuZDogXCJkaXNwb3NlXCI7XG4gIGtleTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbmNlbFJlcXVlc3Qge1xuICBjb21tYW5kOiBcImNhbmNlbFwiO1xuICBrZXk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXYXRjaFJlcXVlc3Qge1xuICBjb21tYW5kOiBcIndhdGNoXCI7XG4gIGtleTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9uU2VydmVSZXF1ZXN0IHtcbiAgY29tbWFuZDogXCJzZXJ2ZS1yZXF1ZXN0XCI7XG4gIGtleTogbnVtYmVyO1xuICBhcmdzOiB0eXBlcy5TZXJ2ZU9uUmVxdWVzdEFyZ3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNmb3JtUmVxdWVzdCB7XG4gIGNvbW1hbmQ6IFwidHJhbnNmb3JtXCI7XG4gIGZsYWdzOiBzdHJpbmdbXTtcbiAgaW5wdXQ6IFVpbnQ4QXJyYXk7XG4gIGlucHV0RlM6IGJvb2xlYW47XG4gIG1hbmdsZUNhY2hlPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgZmFsc2U+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZm9ybVJlc3BvbnNlIHtcbiAgZXJyb3JzOiB0eXBlcy5NZXNzYWdlW107XG4gIHdhcm5pbmdzOiB0eXBlcy5NZXNzYWdlW107XG5cbiAgY29kZTogc3RyaW5nO1xuICBjb2RlRlM6IGJvb2xlYW47XG5cbiAgbWFwOiBzdHJpbmc7XG4gIG1hcEZTOiBib29sZWFuO1xuXG4gIGxlZ2FsQ29tbWVudHM/OiBzdHJpbmc7XG4gIG1hbmdsZUNhY2hlPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgZmFsc2U+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdE1zZ3NSZXF1ZXN0IHtcbiAgY29tbWFuZDogXCJmb3JtYXQtbXNnc1wiO1xuICBtZXNzYWdlczogdHlwZXMuTWVzc2FnZVtdO1xuICBpc1dhcm5pbmc6IGJvb2xlYW47XG4gIGNvbG9yPzogYm9vbGVhbjtcbiAgdGVybWluYWxXaWR0aD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtYXRNc2dzUmVzcG9uc2Uge1xuICBtZXNzYWdlczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5hbHl6ZU1ldGFmaWxlUmVxdWVzdCB7XG4gIGNvbW1hbmQ6IFwiYW5hbHl6ZS1tZXRhZmlsZVwiO1xuICBtZXRhZmlsZTogc3RyaW5nO1xuICBjb2xvcj86IGJvb2xlYW47XG4gIHZlcmJvc2U/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFuYWx5emVNZXRhZmlsZVJlc3BvbnNlIHtcbiAgcmVzdWx0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25TdGFydFJlcXVlc3Qge1xuICBjb21tYW5kOiBcIm9uLXN0YXJ0XCI7XG4gIGtleTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9uU3RhcnRSZXNwb25zZSB7XG4gIGVycm9ycz86IHR5cGVzLlBhcnRpYWxNZXNzYWdlW107XG4gIHdhcm5pbmdzPzogdHlwZXMuUGFydGlhbE1lc3NhZ2VbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlUmVxdWVzdCB7XG4gIGNvbW1hbmQ6IFwicmVzb2x2ZVwiO1xuICBrZXk6IG51bWJlcjtcbiAgcGF0aDogc3RyaW5nO1xuICBwbHVnaW5OYW1lOiBzdHJpbmc7XG4gIGltcG9ydGVyPzogc3RyaW5nO1xuICBuYW1lc3BhY2U/OiBzdHJpbmc7XG4gIHJlc29sdmVEaXI/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG4gIHBsdWdpbkRhdGE/OiBudW1iZXI7XG4gIHdpdGg/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVSZXNwb25zZSB7XG4gIGVycm9yczogdHlwZXMuTWVzc2FnZVtdO1xuICB3YXJuaW5nczogdHlwZXMuTWVzc2FnZVtdO1xuXG4gIHBhdGg6IHN0cmluZztcbiAgZXh0ZXJuYWw6IGJvb2xlYW47XG4gIHNpZGVFZmZlY3RzOiBib29sZWFuO1xuICBuYW1lc3BhY2U6IHN0cmluZztcbiAgc3VmZml4OiBzdHJpbmc7XG4gIHBsdWdpbkRhdGE6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPblJlc29sdmVSZXF1ZXN0IHtcbiAgY29tbWFuZDogXCJvbi1yZXNvbHZlXCI7XG4gIGtleTogbnVtYmVyO1xuICBpZHM6IG51bWJlcltdO1xuICBwYXRoOiBzdHJpbmc7XG4gIGltcG9ydGVyOiBzdHJpbmc7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICByZXNvbHZlRGlyOiBzdHJpbmc7XG4gIGtpbmQ6IHR5cGVzLkltcG9ydEtpbmQ7XG4gIHBsdWdpbkRhdGE6IG51bWJlcjtcbiAgd2l0aDogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPblJlc29sdmVSZXNwb25zZSB7XG4gIGlkPzogbnVtYmVyO1xuICBwbHVnaW5OYW1lPzogc3RyaW5nO1xuXG4gIGVycm9ycz86IHR5cGVzLlBhcnRpYWxNZXNzYWdlW107XG4gIHdhcm5pbmdzPzogdHlwZXMuUGFydGlhbE1lc3NhZ2VbXTtcblxuICBwYXRoPzogc3RyaW5nO1xuICBleHRlcm5hbD86IGJvb2xlYW47XG4gIHNpZGVFZmZlY3RzPzogYm9vbGVhbjtcbiAgbmFtZXNwYWNlPzogc3RyaW5nO1xuICBzdWZmaXg/OiBzdHJpbmc7XG4gIHBsdWdpbkRhdGE/OiBudW1iZXI7XG5cbiAgd2F0Y2hGaWxlcz86IHN0cmluZ1tdO1xuICB3YXRjaERpcnM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbkxvYWRSZXF1ZXN0IHtcbiAgY29tbWFuZDogXCJvbi1sb2FkXCI7XG4gIGtleTogbnVtYmVyO1xuICBpZHM6IG51bWJlcltdO1xuICBwYXRoOiBzdHJpbmc7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICBzdWZmaXg6IHN0cmluZztcbiAgcGx1Z2luRGF0YTogbnVtYmVyO1xuICB3aXRoOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9uTG9hZFJlc3BvbnNlIHtcbiAgaWQ/OiBudW1iZXI7XG4gIHBsdWdpbk5hbWU/OiBzdHJpbmc7XG5cbiAgZXJyb3JzPzogdHlwZXMuUGFydGlhbE1lc3NhZ2VbXTtcbiAgd2FybmluZ3M/OiB0eXBlcy5QYXJ0aWFsTWVzc2FnZVtdO1xuXG4gIGNvbnRlbnRzPzogVWludDhBcnJheTtcbiAgcmVzb2x2ZURpcj86IHN0cmluZztcbiAgbG9hZGVyPzogc3RyaW5nO1xuICBwbHVnaW5EYXRhPzogbnVtYmVyO1xuXG4gIHdhdGNoRmlsZXM/OiBzdHJpbmdbXTtcbiAgd2F0Y2hEaXJzPzogc3RyaW5nW107XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2V0IHtcbiAgaWQ6IG51bWJlcjtcbiAgaXNSZXF1ZXN0OiBib29sZWFuO1xuICB2YWx1ZTogVmFsdWU7XG59XG5cbmV4cG9ydCB0eXBlIFZhbHVlID1cbiAgfCBudWxsXG4gIHwgYm9vbGVhblxuICB8IG51bWJlclxuICB8IHN0cmluZ1xuICB8IFVpbnQ4QXJyYXlcbiAgfCBWYWx1ZVtdXG4gIHwgeyBba2V5OiBzdHJpbmddOiBWYWx1ZSB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlUGFja2V0KHBhY2tldDogUGFja2V0KTogVWludDhBcnJheSB7XG4gIGxldCB2aXNpdCA9ICh2YWx1ZTogVmFsdWUpID0+IHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgIGJiLndyaXRlOCgwKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIGJiLndyaXRlOCgxKTtcbiAgICAgIGJiLndyaXRlOCgrdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICBiYi53cml0ZTgoMik7XG4gICAgICBiYi53cml0ZTMyKHZhbHVlIHwgMCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGJiLndyaXRlOCgzKTtcbiAgICAgIGJiLndyaXRlKGVuY29kZVVURjgodmFsdWUpKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuICAgICAgYmIud3JpdGU4KDQpO1xuICAgICAgYmIud3JpdGUodmFsdWUpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgYmIud3JpdGU4KDUpO1xuICAgICAgYmIud3JpdGUzMih2YWx1ZS5sZW5ndGgpO1xuICAgICAgZm9yIChsZXQgaXRlbSBvZiB2YWx1ZSkge1xuICAgICAgICB2aXNpdChpdGVtKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gICAgICBiYi53cml0ZTgoNik7XG4gICAgICBiYi53cml0ZTMyKGtleXMubGVuZ3RoKTtcbiAgICAgIGZvciAobGV0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGJiLndyaXRlKGVuY29kZVVURjgoa2V5KSk7XG4gICAgICAgIHZpc2l0KHZhbHVlW2tleV0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBsZXQgYmIgPSBuZXcgQnl0ZUJ1ZmZlcigpO1xuICBiYi53cml0ZTMyKDApOyAvLyBSZXNlcnZlIHNwYWNlIGZvciB0aGUgbGVuZ3RoXG4gIGJiLndyaXRlMzIoKHBhY2tldC5pZCA8PCAxKSB8ICshcGFja2V0LmlzUmVxdWVzdCk7XG4gIHZpc2l0KHBhY2tldC52YWx1ZSk7XG4gIHdyaXRlVUludDMyTEUoYmIuYnVmLCBiYi5sZW4gLSA0LCAwKTsgLy8gUGF0Y2ggdGhlIGxlbmd0aCBpblxuICByZXR1cm4gYmIuYnVmLnN1YmFycmF5KDAsIGJiLmxlbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVQYWNrZXQoYnl0ZXM6IFVpbnQ4QXJyYXkpOiBQYWNrZXQge1xuICBsZXQgdmlzaXQgPSAoKTogVmFsdWUgPT4ge1xuICAgIHN3aXRjaCAoYmIucmVhZDgoKSkge1xuICAgICAgY2FzZSAwOiAvLyBudWxsXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgY2FzZSAxOiAvLyBib29sZWFuXG4gICAgICAgIHJldHVybiAhIWJiLnJlYWQ4KCk7XG4gICAgICBjYXNlIDI6IC8vIG51bWJlclxuICAgICAgICByZXR1cm4gYmIucmVhZDMyKCk7XG4gICAgICBjYXNlIDM6IC8vIHN0cmluZ1xuICAgICAgICByZXR1cm4gZGVjb2RlVVRGOChiYi5yZWFkKCkpO1xuICAgICAgY2FzZSA0OiAvLyBVaW50OEFycmF5XG4gICAgICAgIHJldHVybiBiYi5yZWFkKCk7XG4gICAgICBjYXNlIDU6IHsgLy8gVmFsdWVbXVxuICAgICAgICBsZXQgY291bnQgPSBiYi5yZWFkMzIoKTtcbiAgICAgICAgbGV0IHZhbHVlOiBWYWx1ZVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgIHZhbHVlLnB1c2godmlzaXQoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgY2FzZSA2OiB7IC8vIHsgW2tleTogc3RyaW5nXTogVmFsdWUgfVxuICAgICAgICBsZXQgY291bnQgPSBiYi5yZWFkMzIoKTtcbiAgICAgICAgbGV0IHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IFZhbHVlIH0gPSB7fTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgdmFsdWVbZGVjb2RlVVRGOChiYi5yZWFkKCkpXSA9IHZpc2l0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBwYWNrZXRcIik7XG4gICAgfVxuICB9O1xuXG4gIGxldCBiYiA9IG5ldyBCeXRlQnVmZmVyKGJ5dGVzKTtcbiAgbGV0IGlkID0gYmIucmVhZDMyKCk7XG4gIGxldCBpc1JlcXVlc3QgPSAoaWQgJiAxKSA9PT0gMDtcbiAgaWQgPj4+PSAxO1xuICBsZXQgdmFsdWUgPSB2aXNpdCgpO1xuICBpZiAoYmIucHRyICE9PSBieXRlcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHBhY2tldFwiKTtcbiAgfVxuICByZXR1cm4geyBpZCwgaXNSZXF1ZXN0LCB2YWx1ZSB9O1xufVxuXG5jbGFzcyBCeXRlQnVmZmVyIHtcbiAgbGVuID0gMDtcbiAgcHRyID0gMDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgYnVmID0gbmV3IFVpbnQ4QXJyYXkoMTAyNCkpIHtcbiAgfVxuXG4gIHByaXZhdGUgX3dyaXRlKGRlbHRhOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLmxlbiArIGRlbHRhID4gdGhpcy5idWYubGVuZ3RoKSB7XG4gICAgICBsZXQgY2xvbmUgPSBuZXcgVWludDhBcnJheSgodGhpcy5sZW4gKyBkZWx0YSkgKiAyKTtcbiAgICAgIGNsb25lLnNldCh0aGlzLmJ1Zik7XG4gICAgICB0aGlzLmJ1ZiA9IGNsb25lO1xuICAgIH1cbiAgICB0aGlzLmxlbiArPSBkZWx0YTtcbiAgICByZXR1cm4gdGhpcy5sZW4gLSBkZWx0YTtcbiAgfVxuXG4gIHdyaXRlOCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IG9mZnNldCA9IHRoaXMuX3dyaXRlKDEpO1xuICAgIHRoaXMuYnVmW29mZnNldF0gPSB2YWx1ZTtcbiAgfVxuXG4gIHdyaXRlMzIodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIGxldCBvZmZzZXQgPSB0aGlzLl93cml0ZSg0KTtcbiAgICB3cml0ZVVJbnQzMkxFKHRoaXMuYnVmLCB2YWx1ZSwgb2Zmc2V0KTtcbiAgfVxuXG4gIHdyaXRlKGJ5dGVzOiBVaW50OEFycmF5KTogdm9pZCB7XG4gICAgbGV0IG9mZnNldCA9IHRoaXMuX3dyaXRlKDQgKyBieXRlcy5sZW5ndGgpO1xuICAgIHdyaXRlVUludDMyTEUodGhpcy5idWYsIGJ5dGVzLmxlbmd0aCwgb2Zmc2V0KTtcbiAgICB0aGlzLmJ1Zi5zZXQoYnl0ZXMsIG9mZnNldCArIDQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVhZChkZWx0YTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5wdHIgKyBkZWx0YSA+IHRoaXMuYnVmLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBwYWNrZXRcIik7XG4gICAgfVxuICAgIHRoaXMucHRyICs9IGRlbHRhO1xuICAgIHJldHVybiB0aGlzLnB0ciAtIGRlbHRhO1xuICB9XG5cbiAgcmVhZDgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5idWZbdGhpcy5fcmVhZCgxKV07XG4gIH1cblxuICByZWFkMzIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcmVhZFVJbnQzMkxFKHRoaXMuYnVmLCB0aGlzLl9yZWFkKDQpKTtcbiAgfVxuXG4gIHJlYWQoKTogVWludDhBcnJheSB7XG4gICAgbGV0IGxlbmd0aCA9IHRoaXMucmVhZDMyKCk7XG4gICAgbGV0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKTtcbiAgICBsZXQgcHRyID0gdGhpcy5fcmVhZChieXRlcy5sZW5ndGgpO1xuICAgIGJ5dGVzLnNldCh0aGlzLmJ1Zi5zdWJhcnJheShwdHIsIHB0ciArIGxlbmd0aCkpO1xuICAgIHJldHVybiBieXRlcztcbiAgfVxufVxuXG5leHBvcnQgbGV0IGVuY29kZVVURjg6ICh0ZXh0OiBzdHJpbmcpID0+IFVpbnQ4QXJyYXk7XG5leHBvcnQgbGV0IGRlY29kZVVURjg6IChieXRlczogVWludDhBcnJheSkgPT4gc3RyaW5nO1xubGV0IGVuY29kZUludmFyaWFudDogc3RyaW5nO1xuXG4vLyBGb3IgdGhlIGJyb3dzZXIgYW5kIG5vZGUgMTIueFxuaWYgKHR5cGVvZiBUZXh0RW5jb2RlciAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgVGV4dERlY29kZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgbGV0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgbGV0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcbiAgZW5jb2RlVVRGOCA9ICh0ZXh0KSA9PiBlbmNvZGVyLmVuY29kZSh0ZXh0KTtcbiAgZGVjb2RlVVRGOCA9IChieXRlcykgPT4gZGVjb2Rlci5kZWNvZGUoYnl0ZXMpO1xuICBlbmNvZGVJbnZhcmlhbnQgPSAnbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKFwiXCIpJztcbn0gZWxzZSB7XG4gIHRocm93IG5ldyBFcnJvcihcIk5vIFVURi04IGNvZGVjIGZvdW5kXCIpO1xufVxuXG4vLyBUaHJvdyBhbiBlcnJvciBlYXJseSBpZiB0aGlzIGlzbid0IHRydWUuIFRoZSB0ZXN0IGZyYW1ld29yayBjYWxsZWQgXCJKZXN0XCJcbi8vIGhhcyBzb21lIGJ1Z3MgcmVnYXJkaW5nIHRoaXMgZWRnZSBjYXNlLCBhbmQgbGV0dGluZyBlc2J1aWxkIHByb2NlZWQgZnVydGhlclxuLy8gbGVhZHMgdG8gY29uZnVzaW5nIGVycm9ycyB0aGF0IG1ha2UgaXQgc2VlbSBsaWtlIGVzYnVpbGQgaXRzZWxmIGhhcyBhIGJ1Zy5cbmlmICghKGVuY29kZVVURjgoXCJcIikgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYEludmFyaWFudCB2aW9sYXRpb246IFwiJHtlbmNvZGVJbnZhcmlhbnR9IGluc3RhbmNlb2YgVWludDhBcnJheVwiIGlzIGluY29ycmVjdGx5IGZhbHNlXG5cblRoaXMgaW5kaWNhdGVzIHRoYXQgeW91ciBKYXZhU2NyaXB0IGVudmlyb25tZW50IGlzIGJyb2tlbi4gWW91IGNhbm5vdCB1c2VcbmVzYnVpbGQgaW4gdGhpcyBlbnZpcm9ubWVudCBiZWNhdXNlIGVzYnVpbGQgcmVsaWVzIG9uIHRoaXMgaW52YXJpYW50LiBUaGlzXG5pcyBub3QgYSBwcm9ibGVtIHdpdGggZXNidWlsZC4gWW91IG5lZWQgdG8gZml4IHlvdXIgZW52aXJvbm1lbnQgaW5zdGVhZC5cbmAsXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVUludDMyTEUoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBidWZmZXJbb2Zmc2V0KytdIHxcbiAgICAoYnVmZmVyW29mZnNldCsrXSA8PCA4KSB8XG4gICAgKGJ1ZmZlcltvZmZzZXQrK10gPDwgMTYpIHxcbiAgICAoYnVmZmVyW29mZnNldCsrXSA8PCAyNCk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlVUludDMyTEUoXG4gIGJ1ZmZlcjogVWludDhBcnJheSxcbiAgdmFsdWU6IG51bWJlcixcbiAgb2Zmc2V0OiBudW1iZXIsXG4pOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldCsrXSA9IHZhbHVlO1xuICBidWZmZXJbb2Zmc2V0KytdID0gdmFsdWUgPj4gODtcbiAgYnVmZmVyW29mZnNldCsrXSA9IHZhbHVlID4+IDE2O1xuICBidWZmZXJbb2Zmc2V0KytdID0gdmFsdWUgPj4gMjQ7XG59XG4iLCAiZXhwb3J0IGNvbnN0IEVTQlVJTERfVkVSU0lPTiA9IFwiMC4yMS41XCI7XG4iLCAiLy8gZGVuby1saW50LWlnbm9yZS1maWxlIHByZWZlci1jb25zdCBiYW4tdHlwZXMgbm8tZXhwbGljaXQtYW55IG5vLWVtcHR5IG5vLXVudXNlZC12YXJzXG4vKiogZXNidWlsZC13YXNtQDAuMjEuNVxuICpcbiAqIE1JVCBMaWNlbnNlXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIEV2YW4gV2FsbGFjZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4gKi9cbi8vIFRoaXMgY29kZSBpcyBwb3J0ZWQgZnJvbSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZXZhbncvZXNidWlsZC92MC4yMS41L2xpYi9zaGFyZWQvY29tbW9uLnRzIGFuZCBtb2RpZmllZCBiZWxvd1xuLy8gLSAkIGRlbm8gZm10XG4vLyAtIGxvYWQgdGhlIHdvcmtlciBjb2RlIGZyb20gVVJMIGluc3RlYWQgb2YgYW4gZW1iZWRkZWQgY29kZVxuLy8gLSByZW1vdmUgZnVuY3Rpb25zIG5vdCB3b3JrZWQgaW4gYnJvd3NlclxuLy8gLSBhZGQgdW5kZXJzY29yZSB0byB1bnVzZWQgdmFyaWFibGVzXG4vLyAtIHJlbW92ZSB1bnVzZWQgZnVuY3Rpb25zXG5cbmltcG9ydCB0eXBlICogYXMgdHlwZXMgZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCAqIGFzIHByb3RvY29sIGZyb20gXCIuL3N0ZGlvX3Byb3RvY29sLnRzXCI7XG5pbXBvcnQgeyBFU0JVSUxEX1ZFUlNJT04gfSBmcm9tIFwiLi92ZXJzaW9uLnRzXCI7XG5cbmNvbnN0IHF1b3RlOiAoeDogc3RyaW5nKSA9PiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeTtcblxuY29uc3QgYnVpbGRMb2dMZXZlbERlZmF1bHQgPSBcIndhcm5pbmdcIjtcbmNvbnN0IHRyYW5zZm9ybUxvZ0xldmVsRGVmYXVsdCA9IFwic2lsZW50XCI7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVGFyZ2V0KHRhcmdldDogc3RyaW5nKTogc3RyaW5nIHtcbiAgdmFsaWRhdGVTdHJpbmdWYWx1ZSh0YXJnZXQsIFwidGFyZ2V0XCIpO1xuICBpZiAodGFyZ2V0LmluZGV4T2YoXCIsXCIpID49IDApIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0YXJnZXQ6ICR7dGFyZ2V0fWApO1xuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5sZXQgY2FuQmVBbnl0aGluZyA9ICgpID0+IG51bGw7XG5cbmxldCBtdXN0QmVCb29sZWFuID0gKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiID8gbnVsbCA6IFwiYSBib29sZWFuXCI7XG5cbmxldCBtdXN0QmVTdHJpbmcgPSAodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGwgPT5cbiAgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gbnVsbCA6IFwiYSBzdHJpbmdcIjtcblxubGV0IG11c3RCZVJlZ0V4cCA9ICh2YWx1ZTogUmVnRXhwIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCA9PlxuICB2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCA/IG51bGwgOiBcImEgUmVnRXhwIG9iamVjdFwiO1xuXG5sZXQgbXVzdEJlSW50ZWdlciA9ICh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiYgdmFsdWUgPT09ICh2YWx1ZSB8IDApID8gbnVsbCA6IFwiYW4gaW50ZWdlclwiO1xuXG5sZXQgbXVzdEJlRnVuY3Rpb24gPSAodmFsdWU6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIiA/IG51bGwgOiBcImEgZnVuY3Rpb25cIjtcblxubGV0IG11c3RCZUFycmF5ID0gPFQ+KHZhbHVlOiBUW10gfCB1bmRlZmluZWQpOiBzdHJpbmcgfCBudWxsID0+XG4gIEFycmF5LmlzQXJyYXkodmFsdWUpID8gbnVsbCA6IFwiYW4gYXJyYXlcIjtcblxubGV0IG11c3RCZU9iamVjdCA9ICh2YWx1ZTogT2JqZWN0IHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgPyBudWxsXG4gICAgOiBcImFuIG9iamVjdFwiO1xuXG5sZXQgbXVzdEJlRW50cnlQb2ludHMgPSAoXG4gIHZhbHVlOiB0eXBlcy5CdWlsZE9wdGlvbnNbXCJlbnRyeVBvaW50c1wiXSxcbik6IHN0cmluZyB8IG51bGwgPT5cbiAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsID8gbnVsbCA6IFwiYW4gYXJyYXkgb3IgYW4gb2JqZWN0XCI7XG5cbmxldCBtdXN0QmVXZWJBc3NlbWJseU1vZHVsZSA9IChcbiAgdmFsdWU6IFdlYkFzc2VtYmx5Lk1vZHVsZSB8IHVuZGVmaW5lZCxcbik6IHN0cmluZyB8IG51bGwgPT5cbiAgdmFsdWUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5Nb2R1bGUgPyBudWxsIDogXCJhIFdlYkFzc2VtYmx5Lk1vZHVsZVwiO1xuXG5sZXQgbXVzdEJlT2JqZWN0T3JOdWxsID0gKHZhbHVlOiBPYmplY3QgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgPyBudWxsXG4gICAgOiBcImFuIG9iamVjdCBvciBudWxsXCI7XG5cbmxldCBtdXN0QmVTdHJpbmdPckJvb2xlYW4gPSAoXG4gIHZhbHVlOiBzdHJpbmcgfCBib29sZWFuIHwgdW5kZWZpbmVkLFxuKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIlxuICAgID8gbnVsbFxuICAgIDogXCJhIHN0cmluZyBvciBhIGJvb2xlYW5cIjtcblxubGV0IG11c3RCZVN0cmluZ09yT2JqZWN0ID0gKFxuICB2YWx1ZTogc3RyaW5nIHwgT2JqZWN0IHwgdW5kZWZpbmVkLFxuKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHxcbiAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgPyBudWxsXG4gICAgOiBcImEgc3RyaW5nIG9yIGFuIG9iamVjdFwiO1xuXG5sZXQgbXVzdEJlU3RyaW5nT3JBcnJheSA9IChcbiAgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkLFxuKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICA/IG51bGxcbiAgICA6IFwiYSBzdHJpbmcgb3IgYW4gYXJyYXlcIjtcblxubGV0IG11c3RCZVN0cmluZ09yVWludDhBcnJheSA9IChcbiAgdmFsdWU6IHN0cmluZyB8IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQsXG4pOiBzdHJpbmcgfCBudWxsID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCB2YWx1ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXlcbiAgICA/IG51bGxcbiAgICA6IFwiYSBzdHJpbmcgb3IgYSBVaW50OEFycmF5XCI7XG5cbmxldCBtdXN0QmVTdHJpbmdPclVSTCA9ICh2YWx1ZTogc3RyaW5nIHwgVVJMIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBVUkxcbiAgICA/IG51bGxcbiAgICA6IFwiYSBzdHJpbmcgb3IgYSBVUkxcIjtcblxudHlwZSBPcHRpb25LZXlzID0geyBba2V5OiBzdHJpbmddOiBib29sZWFuIH07XG5cbmZ1bmN0aW9uIGdldEZsYWc8VCwgSyBleHRlbmRzIChrZXlvZiBUICYgc3RyaW5nKT4oXG4gIG9iamVjdDogVCxcbiAga2V5czogT3B0aW9uS2V5cyxcbiAga2V5OiBLLFxuICBtdXN0QmVGbjogKHZhbHVlOiBUW0tdKSA9PiBzdHJpbmcgfCBudWxsLFxuKTogVFtLXSB8IHVuZGVmaW5lZCB7XG4gIGxldCB2YWx1ZSA9IG9iamVjdFtrZXldO1xuICBrZXlzW2tleSArIFwiXCJdID0gdHJ1ZTtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gIGxldCBtdXN0QmUgPSBtdXN0QmVGbih2YWx1ZSk7XG4gIGlmIChtdXN0QmUgIT09IG51bGwpIHRocm93IG5ldyBFcnJvcihgJHtxdW90ZShrZXkpfSBtdXN0IGJlICR7bXVzdEJlfWApO1xuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRm9ySW52YWxpZEZsYWdzKFxuICBvYmplY3Q6IE9iamVjdCxcbiAga2V5czogT3B0aW9uS2V5cyxcbiAgd2hlcmU6IHN0cmluZyxcbik6IHZvaWQge1xuICBmb3IgKGxldCBrZXkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKCEoa2V5IGluIGtleXMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgb3B0aW9uICR7d2hlcmV9OiAke3F1b3RlKGtleSl9YCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUluaXRpYWxpemVPcHRpb25zKFxuICBvcHRpb25zOiB0eXBlcy5Jbml0aWFsaXplT3B0aW9ucyxcbik6IHR5cGVzLkluaXRpYWxpemVPcHRpb25zIHtcbiAgbGV0IGtleXM6IE9wdGlvbktleXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBsZXQgd2FzbU1vZHVsZSA9IGdldEZsYWcoXG4gICAgb3B0aW9ucyxcbiAgICBrZXlzLFxuICAgIFwid2FzbU1vZHVsZVwiLFxuICAgIG11c3RCZVdlYkFzc2VtYmx5TW9kdWxlLFxuICApO1xuICBsZXQgd29ya2VyVVJMID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIndvcmtlclVSTFwiLCBtdXN0QmVTdHJpbmdPclVSTCkhO1xuICBjaGVja0ZvckludmFsaWRGbGFncyhvcHRpb25zLCBrZXlzLCBcImluIGluaXRpYWxpemUoKSBjYWxsXCIpO1xuICByZXR1cm4ge1xuICAgIHdhc21Nb2R1bGUsXG4gICAgd29ya2VyVVJMLFxuICB9O1xufVxuXG50eXBlIE1hbmdsZUNhY2hlID0gUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgZmFsc2U+O1xuXG5mdW5jdGlvbiB2YWxpZGF0ZU1hbmdsZUNhY2hlKFxuICBtYW5nbGVDYWNoZTogTWFuZ2xlQ2FjaGUgfCB1bmRlZmluZWQsXG4pOiBNYW5nbGVDYWNoZSB8IHVuZGVmaW5lZCB7XG4gIGxldCB2YWxpZGF0ZWQ6IE1hbmdsZUNhY2hlIHwgdW5kZWZpbmVkO1xuICBpZiAobWFuZ2xlQ2FjaGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhbGlkYXRlZCA9IE9iamVjdC5jcmVhdGUobnVsbCkgYXMgTWFuZ2xlQ2FjaGU7XG4gICAgZm9yIChsZXQga2V5IGluIG1hbmdsZUNhY2hlKSB7XG4gICAgICBsZXQgdmFsdWUgPSBtYW5nbGVDYWNoZVtrZXldO1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCB2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgdmFsaWRhdGVkW2tleV0gPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRXhwZWN0ZWQgJHtcbiAgICAgICAgICAgIHF1b3RlKGtleSlcbiAgICAgICAgICB9IGluIG1hbmdsZSBjYWNoZSB0byBtYXAgdG8gZWl0aGVyIGEgc3RyaW5nIG9yIGZhbHNlYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhbGlkYXRlZDtcbn1cblxudHlwZSBDb21tb25PcHRpb25zID0gdHlwZXMuQnVpbGRPcHRpb25zIHwgdHlwZXMuVHJhbnNmb3JtT3B0aW9ucztcblxuZnVuY3Rpb24gcHVzaExvZ0ZsYWdzKFxuICBmbGFnczogc3RyaW5nW10sXG4gIG9wdGlvbnM6IENvbW1vbk9wdGlvbnMsXG4gIGtleXM6IE9wdGlvbktleXMsXG4gIGlzVFRZOiBib29sZWFuLFxuICBsb2dMZXZlbERlZmF1bHQ6IHR5cGVzLkxvZ0xldmVsLFxuKTogdm9pZCB7XG4gIGxldCBjb2xvciA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJjb2xvclwiLCBtdXN0QmVCb29sZWFuKTtcbiAgbGV0IGxvZ0xldmVsID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImxvZ0xldmVsXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBsb2dMaW1pdCA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJsb2dMaW1pdFwiLCBtdXN0QmVJbnRlZ2VyKTtcblxuICBpZiAoY29sb3IgIT09IHZvaWQgMCkgZmxhZ3MucHVzaChgLS1jb2xvcj0ke2NvbG9yfWApO1xuICBlbHNlIGlmIChpc1RUWSkgZmxhZ3MucHVzaChgLS1jb2xvcj10cnVlYCk7IC8vIFRoaXMgaXMgbmVlZGVkIHRvIGZpeCBcImV4ZWNGaWxlU3luY1wiIHdoaWNoIGJ1ZmZlcnMgc3RkZXJyXG4gIGZsYWdzLnB1c2goYC0tbG9nLWxldmVsPSR7bG9nTGV2ZWwgfHwgbG9nTGV2ZWxEZWZhdWx0fWApO1xuICBmbGFncy5wdXNoKGAtLWxvZy1saW1pdD0ke2xvZ0xpbWl0IHx8IDB9YCk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RyaW5nVmFsdWUoXG4gIHZhbHVlOiB1bmtub3duLFxuICB3aGF0OiBzdHJpbmcsXG4gIGtleT86IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgRXhwZWN0ZWQgdmFsdWUgZm9yICR7d2hhdH0ke1xuICAgICAgICBrZXkgIT09IHZvaWQgMCA/IFwiIFwiICsgcXVvdGUoa2V5KSA6IFwiXCJcbiAgICAgIH0gdG8gYmUgYSBzdHJpbmcsIGdvdCAke3R5cGVvZiB2YWx1ZX0gaW5zdGVhZGAsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIHB1c2hDb21tb25GbGFncyhcbiAgZmxhZ3M6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBDb21tb25PcHRpb25zLFxuICBrZXlzOiBPcHRpb25LZXlzLFxuKTogdm9pZCB7XG4gIGxldCBsZWdhbENvbW1lbnRzID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImxlZ2FsQ29tbWVudHNcIiwgbXVzdEJlU3RyaW5nKTtcbiAgbGV0IHNvdXJjZVJvb3QgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwic291cmNlUm9vdFwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgc291cmNlc0NvbnRlbnQgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwic291cmNlc0NvbnRlbnRcIiwgbXVzdEJlQm9vbGVhbik7XG4gIGxldCB0YXJnZXQgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwidGFyZ2V0XCIsIG11c3RCZVN0cmluZ09yQXJyYXkpO1xuICBsZXQgZm9ybWF0ID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImZvcm1hdFwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgZ2xvYmFsTmFtZSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJnbG9iYWxOYW1lXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBtYW5nbGVQcm9wcyA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJtYW5nbGVQcm9wc1wiLCBtdXN0QmVSZWdFeHApO1xuICBsZXQgcmVzZXJ2ZVByb3BzID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInJlc2VydmVQcm9wc1wiLCBtdXN0QmVSZWdFeHApO1xuICBsZXQgbWFuZ2xlUXVvdGVkID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIm1hbmdsZVF1b3RlZFwiLCBtdXN0QmVCb29sZWFuKTtcbiAgbGV0IG1pbmlmeSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJtaW5pZnlcIiwgbXVzdEJlQm9vbGVhbik7XG4gIGxldCBtaW5pZnlTeW50YXggPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwibWluaWZ5U3ludGF4XCIsIG11c3RCZUJvb2xlYW4pO1xuICBsZXQgbWluaWZ5V2hpdGVzcGFjZSA9IGdldEZsYWcoXG4gICAgb3B0aW9ucyxcbiAgICBrZXlzLFxuICAgIFwibWluaWZ5V2hpdGVzcGFjZVwiLFxuICAgIG11c3RCZUJvb2xlYW4sXG4gICk7XG4gIGxldCBtaW5pZnlJZGVudGlmaWVycyA9IGdldEZsYWcoXG4gICAgb3B0aW9ucyxcbiAgICBrZXlzLFxuICAgIFwibWluaWZ5SWRlbnRpZmllcnNcIixcbiAgICBtdXN0QmVCb29sZWFuLFxuICApO1xuICBsZXQgbGluZUxpbWl0ID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImxpbmVMaW1pdFwiLCBtdXN0QmVJbnRlZ2VyKTtcbiAgbGV0IGRyb3AgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwiZHJvcFwiLCBtdXN0QmVBcnJheSk7XG4gIGxldCBkcm9wTGFiZWxzID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImRyb3BMYWJlbHNcIiwgbXVzdEJlQXJyYXkpO1xuICBsZXQgY2hhcnNldCA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJjaGFyc2V0XCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCB0cmVlU2hha2luZyA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJ0cmVlU2hha2luZ1wiLCBtdXN0QmVCb29sZWFuKTtcbiAgbGV0IGlnbm9yZUFubm90YXRpb25zID0gZ2V0RmxhZyhcbiAgICBvcHRpb25zLFxuICAgIGtleXMsXG4gICAgXCJpZ25vcmVBbm5vdGF0aW9uc1wiLFxuICAgIG11c3RCZUJvb2xlYW4sXG4gICk7XG4gIGxldCBqc3ggPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwianN4XCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBqc3hGYWN0b3J5ID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImpzeEZhY3RvcnlcIiwgbXVzdEJlU3RyaW5nKTtcbiAgbGV0IGpzeEZyYWdtZW50ID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImpzeEZyYWdtZW50XCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBqc3hJbXBvcnRTb3VyY2UgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwianN4SW1wb3J0U291cmNlXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBqc3hEZXYgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwianN4RGV2XCIsIG11c3RCZUJvb2xlYW4pO1xuICBsZXQganN4U2lkZUVmZmVjdHMgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwianN4U2lkZUVmZmVjdHNcIiwgbXVzdEJlQm9vbGVhbik7XG4gIGxldCBkZWZpbmUgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwiZGVmaW5lXCIsIG11c3RCZU9iamVjdCk7XG4gIGxldCBsb2dPdmVycmlkZSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJsb2dPdmVycmlkZVwiLCBtdXN0QmVPYmplY3QpO1xuICBsZXQgc3VwcG9ydGVkID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInN1cHBvcnRlZFwiLCBtdXN0QmVPYmplY3QpO1xuICBsZXQgcHVyZSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJwdXJlXCIsIG11c3RCZUFycmF5KTtcbiAgbGV0IGtlZXBOYW1lcyA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJrZWVwTmFtZXNcIiwgbXVzdEJlQm9vbGVhbik7XG4gIGxldCBwbGF0Zm9ybSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJwbGF0Zm9ybVwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgdHNjb25maWdSYXcgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwidHNjb25maWdSYXdcIiwgbXVzdEJlU3RyaW5nT3JPYmplY3QpO1xuXG4gIGlmIChsZWdhbENvbW1lbnRzKSBmbGFncy5wdXNoKGAtLWxlZ2FsLWNvbW1lbnRzPSR7bGVnYWxDb21tZW50c31gKTtcbiAgaWYgKHNvdXJjZVJvb3QgIT09IHZvaWQgMCkgZmxhZ3MucHVzaChgLS1zb3VyY2Utcm9vdD0ke3NvdXJjZVJvb3R9YCk7XG4gIGlmIChzb3VyY2VzQ29udGVudCAhPT0gdm9pZCAwKSB7XG4gICAgZmxhZ3MucHVzaChgLS1zb3VyY2VzLWNvbnRlbnQ9JHtzb3VyY2VzQ29udGVudH1gKTtcbiAgfVxuICBpZiAodGFyZ2V0KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgICAgZmxhZ3MucHVzaChcbiAgICAgICAgYC0tdGFyZ2V0PSR7QXJyYXkuZnJvbSh0YXJnZXQpLm1hcCh2YWxpZGF0ZVRhcmdldCkuam9pbihcIixcIil9YCxcbiAgICAgICk7XG4gICAgfSBlbHNlIGZsYWdzLnB1c2goYC0tdGFyZ2V0PSR7dmFsaWRhdGVUYXJnZXQodGFyZ2V0KX1gKTtcbiAgfVxuICBpZiAoZm9ybWF0KSBmbGFncy5wdXNoKGAtLWZvcm1hdD0ke2Zvcm1hdH1gKTtcbiAgaWYgKGdsb2JhbE5hbWUpIGZsYWdzLnB1c2goYC0tZ2xvYmFsLW5hbWU9JHtnbG9iYWxOYW1lfWApO1xuICBpZiAocGxhdGZvcm0pIGZsYWdzLnB1c2goYC0tcGxhdGZvcm09JHtwbGF0Zm9ybX1gKTtcbiAgaWYgKHRzY29uZmlnUmF3KSB7XG4gICAgZmxhZ3MucHVzaChcbiAgICAgIGAtLXRzY29uZmlnLXJhdz0ke1xuICAgICAgICB0eXBlb2YgdHNjb25maWdSYXcgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICA/IHRzY29uZmlnUmF3XG4gICAgICAgICAgOiBKU09OLnN0cmluZ2lmeSh0c2NvbmZpZ1JhdylcbiAgICAgIH1gLFxuICAgICk7XG4gIH1cblxuICBpZiAobWluaWZ5KSBmbGFncy5wdXNoKFwiLS1taW5pZnlcIik7XG4gIGlmIChtaW5pZnlTeW50YXgpIGZsYWdzLnB1c2goXCItLW1pbmlmeS1zeW50YXhcIik7XG4gIGlmIChtaW5pZnlXaGl0ZXNwYWNlKSBmbGFncy5wdXNoKFwiLS1taW5pZnktd2hpdGVzcGFjZVwiKTtcbiAgaWYgKG1pbmlmeUlkZW50aWZpZXJzKSBmbGFncy5wdXNoKFwiLS1taW5pZnktaWRlbnRpZmllcnNcIik7XG4gIGlmIChsaW5lTGltaXQpIGZsYWdzLnB1c2goYC0tbGluZS1saW1pdD0ke2xpbmVMaW1pdH1gKTtcbiAgaWYgKGNoYXJzZXQpIGZsYWdzLnB1c2goYC0tY2hhcnNldD0ke2NoYXJzZXR9YCk7XG4gIGlmICh0cmVlU2hha2luZyAhPT0gdm9pZCAwKSBmbGFncy5wdXNoKGAtLXRyZWUtc2hha2luZz0ke3RyZWVTaGFraW5nfWApO1xuICBpZiAoaWdub3JlQW5ub3RhdGlvbnMpIGZsYWdzLnB1c2goYC0taWdub3JlLWFubm90YXRpb25zYCk7XG4gIGlmIChkcm9wKSB7XG4gICAgZm9yIChsZXQgd2hhdCBvZiBkcm9wKSB7XG4gICAgICBmbGFncy5wdXNoKGAtLWRyb3A6JHt2YWxpZGF0ZVN0cmluZ1ZhbHVlKHdoYXQsIFwiZHJvcFwiKX1gKTtcbiAgICB9XG4gIH1cbiAgaWYgKGRyb3BMYWJlbHMpIHtcbiAgICBmbGFncy5wdXNoKFxuICAgICAgYC0tZHJvcC1sYWJlbHM9JHtcbiAgICAgICAgQXJyYXkuZnJvbShkcm9wTGFiZWxzKS5tYXAoKHdoYXQpID0+XG4gICAgICAgICAgdmFsaWRhdGVTdHJpbmdWYWx1ZSh3aGF0LCBcImRyb3BMYWJlbHNcIilcbiAgICAgICAgKS5qb2luKFwiLFwiKVxuICAgICAgfWAsXG4gICAgKTtcbiAgfVxuICBpZiAobWFuZ2xlUHJvcHMpIGZsYWdzLnB1c2goYC0tbWFuZ2xlLXByb3BzPSR7bWFuZ2xlUHJvcHMuc291cmNlfWApO1xuICBpZiAocmVzZXJ2ZVByb3BzKSBmbGFncy5wdXNoKGAtLXJlc2VydmUtcHJvcHM9JHtyZXNlcnZlUHJvcHMuc291cmNlfWApO1xuICBpZiAobWFuZ2xlUXVvdGVkICE9PSB2b2lkIDApIGZsYWdzLnB1c2goYC0tbWFuZ2xlLXF1b3RlZD0ke21hbmdsZVF1b3RlZH1gKTtcblxuICBpZiAoanN4KSBmbGFncy5wdXNoKGAtLWpzeD0ke2pzeH1gKTtcbiAgaWYgKGpzeEZhY3RvcnkpIGZsYWdzLnB1c2goYC0tanN4LWZhY3Rvcnk9JHtqc3hGYWN0b3J5fWApO1xuICBpZiAoanN4RnJhZ21lbnQpIGZsYWdzLnB1c2goYC0tanN4LWZyYWdtZW50PSR7anN4RnJhZ21lbnR9YCk7XG4gIGlmIChqc3hJbXBvcnRTb3VyY2UpIGZsYWdzLnB1c2goYC0tanN4LWltcG9ydC1zb3VyY2U9JHtqc3hJbXBvcnRTb3VyY2V9YCk7XG4gIGlmIChqc3hEZXYpIGZsYWdzLnB1c2goYC0tanN4LWRldmApO1xuICBpZiAoanN4U2lkZUVmZmVjdHMpIGZsYWdzLnB1c2goYC0tanN4LXNpZGUtZWZmZWN0c2ApO1xuXG4gIGlmIChkZWZpbmUpIHtcbiAgICBmb3IgKGxldCBrZXkgaW4gZGVmaW5lKSB7XG4gICAgICBpZiAoa2V5LmluZGV4T2YoXCI9XCIpID49IDApIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkZWZpbmU6ICR7a2V5fWApO1xuICAgICAgZmxhZ3MucHVzaChcbiAgICAgICAgYC0tZGVmaW5lOiR7a2V5fT0ke3ZhbGlkYXRlU3RyaW5nVmFsdWUoZGVmaW5lW2tleV0sIFwiZGVmaW5lXCIsIGtleSl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChsb2dPdmVycmlkZSkge1xuICAgIGZvciAobGV0IGtleSBpbiBsb2dPdmVycmlkZSkge1xuICAgICAgaWYgKGtleS5pbmRleE9mKFwiPVwiKSA+PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBsb2cgb3ZlcnJpZGU6ICR7a2V5fWApO1xuICAgICAgfVxuICAgICAgZmxhZ3MucHVzaChcbiAgICAgICAgYC0tbG9nLW92ZXJyaWRlOiR7a2V5fT0ke1xuICAgICAgICAgIHZhbGlkYXRlU3RyaW5nVmFsdWUobG9nT3ZlcnJpZGVba2V5XSwgXCJsb2cgb3ZlcnJpZGVcIiwga2V5KVxuICAgICAgICB9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChzdXBwb3J0ZWQpIHtcbiAgICBmb3IgKGxldCBrZXkgaW4gc3VwcG9ydGVkKSB7XG4gICAgICBpZiAoa2V5LmluZGV4T2YoXCI9XCIpID49IDApIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzdXBwb3J0ZWQ6ICR7a2V5fWApO1xuICAgICAgY29uc3QgdmFsdWUgPSBzdXBwb3J0ZWRba2V5XTtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRXhwZWN0ZWQgdmFsdWUgZm9yIHN1cHBvcnRlZCAke1xuICAgICAgICAgICAgcXVvdGUoa2V5KVxuICAgICAgICAgIH0gdG8gYmUgYSBib29sZWFuLCBnb3QgJHt0eXBlb2YgdmFsdWV9IGluc3RlYWRgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgZmxhZ3MucHVzaChgLS1zdXBwb3J0ZWQ6JHtrZXl9PSR7dmFsdWV9YCk7XG4gICAgfVxuICB9XG4gIGlmIChwdXJlKSB7XG4gICAgZm9yIChsZXQgZm4gb2YgcHVyZSkge1xuICAgICAgZmxhZ3MucHVzaChgLS1wdXJlOiR7dmFsaWRhdGVTdHJpbmdWYWx1ZShmbiwgXCJwdXJlXCIpfWApO1xuICAgIH1cbiAgfVxuICBpZiAoa2VlcE5hbWVzKSBmbGFncy5wdXNoKGAtLWtlZXAtbmFtZXNgKTtcbn1cblxuZnVuY3Rpb24gZmxhZ3NGb3JCdWlsZE9wdGlvbnMoXG4gIGNhbGxOYW1lOiBzdHJpbmcsXG4gIG9wdGlvbnM6IHR5cGVzLkJ1aWxkT3B0aW9ucyxcbiAgaXNUVFk6IGJvb2xlYW4sXG4gIGxvZ0xldmVsRGVmYXVsdDogdHlwZXMuTG9nTGV2ZWwsXG4gIHdyaXRlRGVmYXVsdDogYm9vbGVhbixcbik6IHtcbiAgZW50cmllczogW3N0cmluZywgc3RyaW5nXVtdO1xuICBmbGFnczogc3RyaW5nW107XG4gIHdyaXRlOiBib29sZWFuO1xuICBzdGRpbkNvbnRlbnRzOiBVaW50OEFycmF5IHwgbnVsbDtcbiAgc3RkaW5SZXNvbHZlRGlyOiBzdHJpbmcgfCBudWxsO1xuICBhYnNXb3JraW5nRGlyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIG5vZGVQYXRoczogc3RyaW5nW107XG4gIG1hbmdsZUNhY2hlOiBNYW5nbGVDYWNoZSB8IHVuZGVmaW5lZDtcbn0ge1xuICBsZXQgZmxhZ3M6IHN0cmluZ1tdID0gW107XG4gIGxldCBlbnRyaWVzOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXTtcbiAgbGV0IGtleXM6IE9wdGlvbktleXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBsZXQgc3RkaW5Db250ZW50czogVWludDhBcnJheSB8IG51bGwgPSBudWxsO1xuICBsZXQgc3RkaW5SZXNvbHZlRGlyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHVzaExvZ0ZsYWdzKGZsYWdzLCBvcHRpb25zLCBrZXlzLCBpc1RUWSwgbG9nTGV2ZWxEZWZhdWx0KTtcbiAgcHVzaENvbW1vbkZsYWdzKGZsYWdzLCBvcHRpb25zLCBrZXlzKTtcblxuICBsZXQgc291cmNlbWFwID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInNvdXJjZW1hcFwiLCBtdXN0QmVTdHJpbmdPckJvb2xlYW4pO1xuICBsZXQgYnVuZGxlID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImJ1bmRsZVwiLCBtdXN0QmVCb29sZWFuKTtcbiAgbGV0IHNwbGl0dGluZyA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJzcGxpdHRpbmdcIiwgbXVzdEJlQm9vbGVhbik7XG4gIGxldCBwcmVzZXJ2ZVN5bWxpbmtzID0gZ2V0RmxhZyhcbiAgICBvcHRpb25zLFxuICAgIGtleXMsXG4gICAgXCJwcmVzZXJ2ZVN5bWxpbmtzXCIsXG4gICAgbXVzdEJlQm9vbGVhbixcbiAgKTtcbiAgbGV0IG1ldGFmaWxlID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIm1ldGFmaWxlXCIsIG11c3RCZUJvb2xlYW4pO1xuICBsZXQgb3V0ZmlsZSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJvdXRmaWxlXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBvdXRkaXIgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwib3V0ZGlyXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBvdXRiYXNlID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIm91dGJhc2VcIiwgbXVzdEJlU3RyaW5nKTtcbiAgbGV0IHRzY29uZmlnID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInRzY29uZmlnXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCByZXNvbHZlRXh0ZW5zaW9ucyA9IGdldEZsYWcoXG4gICAgb3B0aW9ucyxcbiAgICBrZXlzLFxuICAgIFwicmVzb2x2ZUV4dGVuc2lvbnNcIixcbiAgICBtdXN0QmVBcnJheSxcbiAgKTtcbiAgbGV0IG5vZGVQYXRoc0lucHV0ID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIm5vZGVQYXRoc1wiLCBtdXN0QmVBcnJheSk7XG4gIGxldCBtYWluRmllbGRzID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIm1haW5GaWVsZHNcIiwgbXVzdEJlQXJyYXkpO1xuICBsZXQgY29uZGl0aW9ucyA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJjb25kaXRpb25zXCIsIG11c3RCZUFycmF5KTtcbiAgbGV0IGV4dGVybmFsID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImV4dGVybmFsXCIsIG11c3RCZUFycmF5KTtcbiAgbGV0IHBhY2thZ2VzID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInBhY2thZ2VzXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBhbGlhcyA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJhbGlhc1wiLCBtdXN0QmVPYmplY3QpO1xuICBsZXQgbG9hZGVyID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImxvYWRlclwiLCBtdXN0QmVPYmplY3QpO1xuICBsZXQgb3V0RXh0ZW5zaW9uID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIm91dEV4dGVuc2lvblwiLCBtdXN0QmVPYmplY3QpO1xuICBsZXQgcHVibGljUGF0aCA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJwdWJsaWNQYXRoXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBlbnRyeU5hbWVzID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImVudHJ5TmFtZXNcIiwgbXVzdEJlU3RyaW5nKTtcbiAgbGV0IGNodW5rTmFtZXMgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwiY2h1bmtOYW1lc1wiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgYXNzZXROYW1lcyA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJhc3NldE5hbWVzXCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBpbmplY3QgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwiaW5qZWN0XCIsIG11c3RCZUFycmF5KTtcbiAgbGV0IGJhbm5lciA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJiYW5uZXJcIiwgbXVzdEJlT2JqZWN0KTtcbiAgbGV0IGZvb3RlciA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJmb290ZXJcIiwgbXVzdEJlT2JqZWN0KTtcbiAgbGV0IGVudHJ5UG9pbnRzID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImVudHJ5UG9pbnRzXCIsIG11c3RCZUVudHJ5UG9pbnRzKTtcbiAgbGV0IGFic1dvcmtpbmdEaXIgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwiYWJzV29ya2luZ0RpclwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgc3RkaW4gPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwic3RkaW5cIiwgbXVzdEJlT2JqZWN0KTtcbiAgbGV0IHdyaXRlID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIndyaXRlXCIsIG11c3RCZUJvb2xlYW4pID8/IHdyaXRlRGVmYXVsdDsgLy8gRGVmYXVsdCB0byB0cnVlIGlmIG5vdCBzcGVjaWZpZWRcbiAgbGV0IGFsbG93T3ZlcndyaXRlID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImFsbG93T3ZlcndyaXRlXCIsIG11c3RCZUJvb2xlYW4pO1xuICBsZXQgbWFuZ2xlQ2FjaGUgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwibWFuZ2xlQ2FjaGVcIiwgbXVzdEJlT2JqZWN0KTtcbiAga2V5cy5wbHVnaW5zID0gdHJ1ZTsgLy8gXCJwbHVnaW5zXCIgaGFzIGFscmVhZHkgYmVlbiByZWFkIGVhcmxpZXJcbiAgY2hlY2tGb3JJbnZhbGlkRmxhZ3Mob3B0aW9ucywga2V5cywgYGluICR7Y2FsbE5hbWV9KCkgY2FsbGApO1xuXG4gIGlmIChzb3VyY2VtYXApIHtcbiAgICBmbGFncy5wdXNoKGAtLXNvdXJjZW1hcCR7c291cmNlbWFwID09PSB0cnVlID8gXCJcIiA6IGA9JHtzb3VyY2VtYXB9YH1gKTtcbiAgfVxuICBpZiAoYnVuZGxlKSBmbGFncy5wdXNoKFwiLS1idW5kbGVcIik7XG4gIGlmIChhbGxvd092ZXJ3cml0ZSkgZmxhZ3MucHVzaChcIi0tYWxsb3ctb3ZlcndyaXRlXCIpO1xuICBpZiAoc3BsaXR0aW5nKSBmbGFncy5wdXNoKFwiLS1zcGxpdHRpbmdcIik7XG4gIGlmIChwcmVzZXJ2ZVN5bWxpbmtzKSBmbGFncy5wdXNoKFwiLS1wcmVzZXJ2ZS1zeW1saW5rc1wiKTtcbiAgaWYgKG1ldGFmaWxlKSBmbGFncy5wdXNoKGAtLW1ldGFmaWxlYCk7XG4gIGlmIChvdXRmaWxlKSBmbGFncy5wdXNoKGAtLW91dGZpbGU9JHtvdXRmaWxlfWApO1xuICBpZiAob3V0ZGlyKSBmbGFncy5wdXNoKGAtLW91dGRpcj0ke291dGRpcn1gKTtcbiAgaWYgKG91dGJhc2UpIGZsYWdzLnB1c2goYC0tb3V0YmFzZT0ke291dGJhc2V9YCk7XG4gIGlmICh0c2NvbmZpZykgZmxhZ3MucHVzaChgLS10c2NvbmZpZz0ke3RzY29uZmlnfWApO1xuICBpZiAocGFja2FnZXMpIGZsYWdzLnB1c2goYC0tcGFja2FnZXM9JHtwYWNrYWdlc31gKTtcbiAgaWYgKHJlc29sdmVFeHRlbnNpb25zKSB7XG4gICAgbGV0IHZhbHVlczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGxldCB2YWx1ZSBvZiByZXNvbHZlRXh0ZW5zaW9ucykge1xuICAgICAgdmFsaWRhdGVTdHJpbmdWYWx1ZSh2YWx1ZSwgXCJyZXNvbHZlIGV4dGVuc2lvblwiKTtcbiAgICAgIGlmICh2YWx1ZS5pbmRleE9mKFwiLFwiKSA+PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByZXNvbHZlIGV4dGVuc2lvbjogJHt2YWx1ZX1gKTtcbiAgICAgIH1cbiAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgZmxhZ3MucHVzaChgLS1yZXNvbHZlLWV4dGVuc2lvbnM9JHt2YWx1ZXMuam9pbihcIixcIil9YCk7XG4gIH1cbiAgaWYgKHB1YmxpY1BhdGgpIGZsYWdzLnB1c2goYC0tcHVibGljLXBhdGg9JHtwdWJsaWNQYXRofWApO1xuICBpZiAoZW50cnlOYW1lcykgZmxhZ3MucHVzaChgLS1lbnRyeS1uYW1lcz0ke2VudHJ5TmFtZXN9YCk7XG4gIGlmIChjaHVua05hbWVzKSBmbGFncy5wdXNoKGAtLWNodW5rLW5hbWVzPSR7Y2h1bmtOYW1lc31gKTtcbiAgaWYgKGFzc2V0TmFtZXMpIGZsYWdzLnB1c2goYC0tYXNzZXQtbmFtZXM9JHthc3NldE5hbWVzfWApO1xuICBpZiAobWFpbkZpZWxkcykge1xuICAgIGxldCB2YWx1ZXM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgbWFpbkZpZWxkcykge1xuICAgICAgdmFsaWRhdGVTdHJpbmdWYWx1ZSh2YWx1ZSwgXCJtYWluIGZpZWxkXCIpO1xuICAgICAgaWYgKHZhbHVlLmluZGV4T2YoXCIsXCIpID49IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG1haW4gZmllbGQ6ICR7dmFsdWV9YCk7XG4gICAgICB9XG4gICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIGZsYWdzLnB1c2goYC0tbWFpbi1maWVsZHM9JHt2YWx1ZXMuam9pbihcIixcIil9YCk7XG4gIH1cbiAgaWYgKGNvbmRpdGlvbnMpIHtcbiAgICBsZXQgdmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAobGV0IHZhbHVlIG9mIGNvbmRpdGlvbnMpIHtcbiAgICAgIHZhbGlkYXRlU3RyaW5nVmFsdWUodmFsdWUsIFwiY29uZGl0aW9uXCIpO1xuICAgICAgaWYgKHZhbHVlLmluZGV4T2YoXCIsXCIpID49IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvbmRpdGlvbjogJHt2YWx1ZX1gKTtcbiAgICAgIH1cbiAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgZmxhZ3MucHVzaChgLS1jb25kaXRpb25zPSR7dmFsdWVzLmpvaW4oXCIsXCIpfWApO1xuICB9XG4gIGlmIChleHRlcm5hbCkge1xuICAgIGZvciAobGV0IG5hbWUgb2YgZXh0ZXJuYWwpIHtcbiAgICAgIGZsYWdzLnB1c2goYC0tZXh0ZXJuYWw6JHt2YWxpZGF0ZVN0cmluZ1ZhbHVlKG5hbWUsIFwiZXh0ZXJuYWxcIil9YCk7XG4gICAgfVxuICB9XG4gIGlmIChhbGlhcykge1xuICAgIGZvciAobGV0IG9sZCBpbiBhbGlhcykge1xuICAgICAgaWYgKG9sZC5pbmRleE9mKFwiPVwiKSA+PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwYWNrYWdlIG5hbWUgaW4gYWxpYXM6ICR7b2xkfWApO1xuICAgICAgfVxuICAgICAgZmxhZ3MucHVzaChcbiAgICAgICAgYC0tYWxpYXM6JHtvbGR9PSR7dmFsaWRhdGVTdHJpbmdWYWx1ZShhbGlhc1tvbGRdLCBcImFsaWFzXCIsIG9sZCl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChiYW5uZXIpIHtcbiAgICBmb3IgKGxldCB0eXBlIGluIGJhbm5lcikge1xuICAgICAgaWYgKHR5cGUuaW5kZXhPZihcIj1cIikgPj0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYmFubmVyIGZpbGUgdHlwZTogJHt0eXBlfWApO1xuICAgICAgfVxuICAgICAgZmxhZ3MucHVzaChcbiAgICAgICAgYC0tYmFubmVyOiR7dHlwZX09JHt2YWxpZGF0ZVN0cmluZ1ZhbHVlKGJhbm5lclt0eXBlXSwgXCJiYW5uZXJcIiwgdHlwZSl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChmb290ZXIpIHtcbiAgICBmb3IgKGxldCB0eXBlIGluIGZvb3Rlcikge1xuICAgICAgaWYgKHR5cGUuaW5kZXhPZihcIj1cIikgPj0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZm9vdGVyIGZpbGUgdHlwZTogJHt0eXBlfWApO1xuICAgICAgfVxuICAgICAgZmxhZ3MucHVzaChcbiAgICAgICAgYC0tZm9vdGVyOiR7dHlwZX09JHt2YWxpZGF0ZVN0cmluZ1ZhbHVlKGZvb3Rlclt0eXBlXSwgXCJmb290ZXJcIiwgdHlwZSl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChpbmplY3QpIHtcbiAgICBmb3IgKGxldCBwYXRoIG9mIGluamVjdCkge1xuICAgICAgZmxhZ3MucHVzaChgLS1pbmplY3Q6JHt2YWxpZGF0ZVN0cmluZ1ZhbHVlKHBhdGgsIFwiaW5qZWN0XCIpfWApO1xuICAgIH1cbiAgfVxuICBpZiAobG9hZGVyKSB7XG4gICAgZm9yIChsZXQgZXh0IGluIGxvYWRlcikge1xuICAgICAgaWYgKGV4dC5pbmRleE9mKFwiPVwiKSA+PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBsb2FkZXIgZXh0ZW5zaW9uOiAke2V4dH1gKTtcbiAgICAgIH1cbiAgICAgIGZsYWdzLnB1c2goXG4gICAgICAgIGAtLWxvYWRlcjoke2V4dH09JHt2YWxpZGF0ZVN0cmluZ1ZhbHVlKGxvYWRlcltleHRdLCBcImxvYWRlclwiLCBleHQpfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBpZiAob3V0RXh0ZW5zaW9uKSB7XG4gICAgZm9yIChsZXQgZXh0IGluIG91dEV4dGVuc2lvbikge1xuICAgICAgaWYgKGV4dC5pbmRleE9mKFwiPVwiKSA+PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBvdXQgZXh0ZW5zaW9uOiAke2V4dH1gKTtcbiAgICAgIH1cbiAgICAgIGZsYWdzLnB1c2goXG4gICAgICAgIGAtLW91dC1leHRlbnNpb246JHtleHR9PSR7XG4gICAgICAgICAgdmFsaWRhdGVTdHJpbmdWYWx1ZShvdXRFeHRlbnNpb25bZXh0XSwgXCJvdXQgZXh0ZW5zaW9uXCIsIGV4dClcbiAgICAgICAgfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChlbnRyeVBvaW50cykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGVudHJ5UG9pbnRzKSkge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSBlbnRyeVBvaW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgbGV0IGVudHJ5UG9pbnQgPSBlbnRyeVBvaW50c1tpXTtcbiAgICAgICAgaWYgKHR5cGVvZiBlbnRyeVBvaW50ID09PSBcIm9iamVjdFwiICYmIGVudHJ5UG9pbnQgIT09IG51bGwpIHtcbiAgICAgICAgICBsZXQgZW50cnlQb2ludEtleXM6IE9wdGlvbktleXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIGxldCBpbnB1dCA9IGdldEZsYWcoZW50cnlQb2ludCwgZW50cnlQb2ludEtleXMsIFwiaW5cIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgICBsZXQgb3V0cHV0ID0gZ2V0RmxhZyhlbnRyeVBvaW50LCBlbnRyeVBvaW50S2V5cywgXCJvdXRcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgICBjaGVja0ZvckludmFsaWRGbGFncyhcbiAgICAgICAgICAgIGVudHJ5UG9pbnQsXG4gICAgICAgICAgICBlbnRyeVBvaW50S2V5cyxcbiAgICAgICAgICAgIFwiaW4gZW50cnkgcG9pbnQgYXQgaW5kZXggXCIgKyBpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGlucHV0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgJ01pc3NpbmcgcHJvcGVydHkgXCJpblwiIGZvciBlbnRyeSBwb2ludCBhdCBpbmRleCAnICsgaSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvdXRwdXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAnTWlzc2luZyBwcm9wZXJ0eSBcIm91dFwiIGZvciBlbnRyeSBwb2ludCBhdCBpbmRleCAnICsgaSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVudHJpZXMucHVzaChbb3V0cHV0LCBpbnB1dF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVudHJpZXMucHVzaChbXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgdmFsaWRhdGVTdHJpbmdWYWx1ZShlbnRyeVBvaW50LCBcImVudHJ5IHBvaW50IGF0IGluZGV4IFwiICsgaSksXG4gICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQga2V5IGluIGVudHJ5UG9pbnRzKSB7XG4gICAgICAgIGVudHJpZXMucHVzaChbXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHZhbGlkYXRlU3RyaW5nVmFsdWUoZW50cnlQb2ludHNba2V5XSwgXCJlbnRyeSBwb2ludFwiLCBrZXkpLFxuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc3RkaW4pIHtcbiAgICBsZXQgc3RkaW5LZXlzOiBPcHRpb25LZXlzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBsZXQgY29udGVudHMgPSBnZXRGbGFnKFxuICAgICAgc3RkaW4sXG4gICAgICBzdGRpbktleXMsXG4gICAgICBcImNvbnRlbnRzXCIsXG4gICAgICBtdXN0QmVTdHJpbmdPclVpbnQ4QXJyYXksXG4gICAgKTtcbiAgICBsZXQgcmVzb2x2ZURpciA9IGdldEZsYWcoc3RkaW4sIHN0ZGluS2V5cywgXCJyZXNvbHZlRGlyXCIsIG11c3RCZVN0cmluZyk7XG4gICAgbGV0IHNvdXJjZWZpbGUgPSBnZXRGbGFnKHN0ZGluLCBzdGRpbktleXMsIFwic291cmNlZmlsZVwiLCBtdXN0QmVTdHJpbmcpO1xuICAgIGxldCBsb2FkZXIgPSBnZXRGbGFnKHN0ZGluLCBzdGRpbktleXMsIFwibG9hZGVyXCIsIG11c3RCZVN0cmluZyk7XG4gICAgY2hlY2tGb3JJbnZhbGlkRmxhZ3Moc3RkaW4sIHN0ZGluS2V5cywgJ2luIFwic3RkaW5cIiBvYmplY3QnKTtcblxuICAgIGlmIChzb3VyY2VmaWxlKSBmbGFncy5wdXNoKGAtLXNvdXJjZWZpbGU9JHtzb3VyY2VmaWxlfWApO1xuICAgIGlmIChsb2FkZXIpIGZsYWdzLnB1c2goYC0tbG9hZGVyPSR7bG9hZGVyfWApO1xuICAgIGlmIChyZXNvbHZlRGlyKSBzdGRpblJlc29sdmVEaXIgPSByZXNvbHZlRGlyO1xuICAgIGlmICh0eXBlb2YgY29udGVudHMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHN0ZGluQ29udGVudHMgPSBwcm90b2NvbC5lbmNvZGVVVEY4KGNvbnRlbnRzKTtcbiAgICB9IGVsc2UgaWYgKGNvbnRlbnRzIGluc3RhbmNlb2YgVWludDhBcnJheSkgc3RkaW5Db250ZW50cyA9IGNvbnRlbnRzO1xuICB9XG5cbiAgbGV0IG5vZGVQYXRoczogc3RyaW5nW10gPSBbXTtcbiAgaWYgKG5vZGVQYXRoc0lucHV0KSB7XG4gICAgZm9yIChsZXQgdmFsdWUgb2Ygbm9kZVBhdGhzSW5wdXQpIHtcbiAgICAgIHZhbHVlICs9IFwiXCI7XG4gICAgICBub2RlUGF0aHMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbnRyaWVzLFxuICAgIGZsYWdzLFxuICAgIHdyaXRlLFxuICAgIHN0ZGluQ29udGVudHMsXG4gICAgc3RkaW5SZXNvbHZlRGlyLFxuICAgIGFic1dvcmtpbmdEaXIsXG4gICAgbm9kZVBhdGhzLFxuICAgIG1hbmdsZUNhY2hlOiB2YWxpZGF0ZU1hbmdsZUNhY2hlKG1hbmdsZUNhY2hlKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZmxhZ3NGb3JUcmFuc2Zvcm1PcHRpb25zKFxuICBjYWxsTmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiB0eXBlcy5UcmFuc2Zvcm1PcHRpb25zLFxuICBpc1RUWTogYm9vbGVhbixcbiAgbG9nTGV2ZWxEZWZhdWx0OiB0eXBlcy5Mb2dMZXZlbCxcbik6IHtcbiAgZmxhZ3M6IHN0cmluZ1tdO1xuICBtYW5nbGVDYWNoZTogTWFuZ2xlQ2FjaGUgfCB1bmRlZmluZWQ7XG59IHtcbiAgbGV0IGZsYWdzOiBzdHJpbmdbXSA9IFtdO1xuICBsZXQga2V5czogT3B0aW9uS2V5cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHB1c2hMb2dGbGFncyhmbGFncywgb3B0aW9ucywga2V5cywgaXNUVFksIGxvZ0xldmVsRGVmYXVsdCk7XG4gIHB1c2hDb21tb25GbGFncyhmbGFncywgb3B0aW9ucywga2V5cyk7XG5cbiAgbGV0IHNvdXJjZW1hcCA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJzb3VyY2VtYXBcIiwgbXVzdEJlU3RyaW5nT3JCb29sZWFuKTtcbiAgbGV0IHNvdXJjZWZpbGUgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwic291cmNlZmlsZVwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgbG9hZGVyID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImxvYWRlclwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgYmFubmVyID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImJhbm5lclwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgZm9vdGVyID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImZvb3RlclwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgbWFuZ2xlQ2FjaGUgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwibWFuZ2xlQ2FjaGVcIiwgbXVzdEJlT2JqZWN0KTtcbiAgY2hlY2tGb3JJbnZhbGlkRmxhZ3Mob3B0aW9ucywga2V5cywgYGluICR7Y2FsbE5hbWV9KCkgY2FsbGApO1xuXG4gIGlmIChzb3VyY2VtYXApIHtcbiAgICBmbGFncy5wdXNoKGAtLXNvdXJjZW1hcD0ke3NvdXJjZW1hcCA9PT0gdHJ1ZSA/IFwiZXh0ZXJuYWxcIiA6IHNvdXJjZW1hcH1gKTtcbiAgfVxuICBpZiAoc291cmNlZmlsZSkgZmxhZ3MucHVzaChgLS1zb3VyY2VmaWxlPSR7c291cmNlZmlsZX1gKTtcbiAgaWYgKGxvYWRlcikgZmxhZ3MucHVzaChgLS1sb2FkZXI9JHtsb2FkZXJ9YCk7XG4gIGlmIChiYW5uZXIpIGZsYWdzLnB1c2goYC0tYmFubmVyPSR7YmFubmVyfWApO1xuICBpZiAoZm9vdGVyKSBmbGFncy5wdXNoKGAtLWZvb3Rlcj0ke2Zvb3Rlcn1gKTtcblxuICByZXR1cm4ge1xuICAgIGZsYWdzLFxuICAgIG1hbmdsZUNhY2hlOiB2YWxpZGF0ZU1hbmdsZUNhY2hlKG1hbmdsZUNhY2hlKSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdHJlYW1JbiB7XG4gIHdyaXRlVG9TdGRpbjogKGRhdGE6IFVpbnQ4QXJyYXkpID0+IHZvaWQ7XG4gIHJlYWRGaWxlU3luYz86IChwYXRoOiBzdHJpbmcsIGVuY29kaW5nOiBcInV0ZjhcIikgPT4gc3RyaW5nO1xuICBpc1N5bmM6IGJvb2xlYW47XG4gIGhhc0ZTOiBib29sZWFuO1xuICBlc2J1aWxkOiB0eXBlcy5QbHVnaW5CdWlsZFtcImVzYnVpbGRcIl07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyZWFtT3V0IHtcbiAgcmVhZEZyb21TdGRvdXQ6IChkYXRhOiBVaW50OEFycmF5KSA9PiB2b2lkO1xuICBhZnRlckNsb3NlOiAoZXJyb3I6IEVycm9yIHwgbnVsbCkgPT4gdm9pZDtcbiAgc2VydmljZTogU3RyZWFtU2VydmljZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdHJlYW1GUyB7XG4gIHdyaXRlRmlsZShcbiAgICBjb250ZW50czogc3RyaW5nIHwgVWludDhBcnJheSxcbiAgICBjYWxsYmFjazogKHBhdGg6IHN0cmluZyB8IG51bGwpID0+IHZvaWQsXG4gICk6IHZvaWQ7XG4gIHJlYWRGaWxlKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBjYWxsYmFjazogKGVycjogRXJyb3IgfCBudWxsLCBjb250ZW50czogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCxcbiAgKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWZzIHtcbiAgcmVmKCk6IHZvaWQ7XG4gIHVucmVmKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyZWFtU2VydmljZSB7XG4gIGJ1aWxkT3JDb250ZXh0KGFyZ3M6IHtcbiAgICBjYWxsTmFtZTogc3RyaW5nO1xuICAgIHJlZnM6IFJlZnMgfCBudWxsO1xuICAgIG9wdGlvbnM6IHR5cGVzLkJ1aWxkT3B0aW9ucztcbiAgICBpc1RUWTogYm9vbGVhbjtcbiAgICBkZWZhdWx0V0Q6IHN0cmluZztcbiAgICBjYWxsYmFjazogKFxuICAgICAgZXJyOiBFcnJvciB8IG51bGwsXG4gICAgICByZXM6IHR5cGVzLkJ1aWxkUmVzdWx0IHwgdHlwZXMuQnVpbGRDb250ZXh0IHwgbnVsbCxcbiAgICApID0+IHZvaWQ7XG4gIH0pOiB2b2lkO1xuXG4gIHRyYW5zZm9ybShhcmdzOiB7XG4gICAgY2FsbE5hbWU6IHN0cmluZztcbiAgICByZWZzOiBSZWZzIHwgbnVsbDtcbiAgICBpbnB1dDogc3RyaW5nIHwgVWludDhBcnJheTtcbiAgICBvcHRpb25zOiB0eXBlcy5UcmFuc2Zvcm1PcHRpb25zO1xuICAgIGlzVFRZOiBib29sZWFuO1xuICAgIGZzOiBTdHJlYW1GUztcbiAgICBjYWxsYmFjazogKGVycjogRXJyb3IgfCBudWxsLCByZXM6IHR5cGVzLlRyYW5zZm9ybVJlc3VsdCB8IG51bGwpID0+IHZvaWQ7XG4gIH0pOiB2b2lkO1xuXG4gIGZvcm1hdE1lc3NhZ2VzKGFyZ3M6IHtcbiAgICBjYWxsTmFtZTogc3RyaW5nO1xuICAgIHJlZnM6IFJlZnMgfCBudWxsO1xuICAgIG1lc3NhZ2VzOiB0eXBlcy5QYXJ0aWFsTWVzc2FnZVtdO1xuICAgIG9wdGlvbnM6IHR5cGVzLkZvcm1hdE1lc3NhZ2VzT3B0aW9ucztcbiAgICBjYWxsYmFjazogKGVycjogRXJyb3IgfCBudWxsLCByZXM6IHN0cmluZ1tdIHwgbnVsbCkgPT4gdm9pZDtcbiAgfSk6IHZvaWQ7XG5cbiAgYW5hbHl6ZU1ldGFmaWxlKGFyZ3M6IHtcbiAgICBjYWxsTmFtZTogc3RyaW5nO1xuICAgIHJlZnM6IFJlZnMgfCBudWxsO1xuICAgIG1ldGFmaWxlOiBzdHJpbmc7XG4gICAgb3B0aW9uczogdHlwZXMuQW5hbHl6ZU1ldGFmaWxlT3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgICBjYWxsYmFjazogKGVycjogRXJyb3IgfCBudWxsLCByZXM6IHN0cmluZyB8IG51bGwpID0+IHZvaWQ7XG4gIH0pOiB2b2lkO1xufVxuXG50eXBlIENsb3NlRGF0YSA9IHsgZGlkQ2xvc2U6IGJvb2xlYW47IHJlYXNvbjogc3RyaW5nIH07XG50eXBlIFJlcXVlc3RDYWxsYmFjayA9IChpZDogbnVtYmVyLCByZXF1ZXN0OiBhbnkpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXG4vLyBUaGlzIGNhbid0IHVzZSBhbnkgcHJvbWlzZXMgaW4gdGhlIG1haW4gZXhlY3V0aW9uIGZsb3cgYmVjYXVzZSBpdCBtdXN0IHdvcmtcbi8vIGZvciBib3RoIHN5bmMgYW5kIGFzeW5jIGNvZGUuIFRoZXJlIGlzIGFuIGV4Y2VwdGlvbiBmb3IgcGx1Z2luIGNvZGUgYmVjYXVzZVxuLy8gdGhhdCBjYW4ndCB3b3JrIGluIHN5bmMgY29kZSBhbnl3YXkuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2hhbm5lbChzdHJlYW1JbjogU3RyZWFtSW4pOiBTdHJlYW1PdXQge1xuICBjb25zdCByZXF1ZXN0Q2FsbGJhY2tzQnlLZXk6IHtcbiAgICBba2V5OiBudW1iZXJdOiB7IFtjb21tYW5kOiBzdHJpbmddOiBSZXF1ZXN0Q2FsbGJhY2sgfTtcbiAgfSA9IHt9O1xuICBjb25zdCBjbG9zZURhdGE6IENsb3NlRGF0YSA9IHsgZGlkQ2xvc2U6IGZhbHNlLCByZWFzb246IFwiXCIgfTtcbiAgbGV0IHJlc3BvbnNlQ2FsbGJhY2tzOiB7XG4gICAgW2lkOiBudW1iZXJdOiAoZXJyb3I6IHN0cmluZyB8IG51bGwsIHJlc3BvbnNlOiBwcm90b2NvbC5WYWx1ZSkgPT4gdm9pZDtcbiAgfSA9IHt9O1xuICBsZXQgbmV4dFJlcXVlc3RJRCA9IDA7XG4gIGxldCBuZXh0QnVpbGRLZXkgPSAwO1xuXG4gIC8vIFVzZSBhIGxvbmctbGl2ZWQgYnVmZmVyIHRvIHN0b3JlIHN0ZG91dCBkYXRhXG4gIGxldCBzdGRvdXQgPSBuZXcgVWludDhBcnJheSgxNiAqIDEwMjQpO1xuICBsZXQgc3Rkb3V0VXNlZCA9IDA7XG4gIGxldCByZWFkRnJvbVN0ZG91dCA9IChjaHVuazogVWludDhBcnJheSkgPT4ge1xuICAgIC8vIEFwcGVuZCB0aGUgY2h1bmsgdG8gdGhlIHN0ZG91dCBidWZmZXIsIGdyb3dpbmcgaXQgYXMgbmVjZXNzYXJ5XG4gICAgbGV0IGxpbWl0ID0gc3Rkb3V0VXNlZCArIGNodW5rLmxlbmd0aDtcbiAgICBpZiAobGltaXQgPiBzdGRvdXQubGVuZ3RoKSB7XG4gICAgICBsZXQgc3dhcCA9IG5ldyBVaW50OEFycmF5KGxpbWl0ICogMik7XG4gICAgICBzd2FwLnNldChzdGRvdXQpO1xuICAgICAgc3Rkb3V0ID0gc3dhcDtcbiAgICB9XG4gICAgc3Rkb3V0LnNldChjaHVuaywgc3Rkb3V0VXNlZCk7XG4gICAgc3Rkb3V0VXNlZCArPSBjaHVuay5sZW5ndGg7XG5cbiAgICAvLyBQcm9jZXNzIGFsbCBjb21wbGV0ZSAoaS5lLiBub3QgcGFydGlhbCkgcGFja2V0c1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIHdoaWxlIChvZmZzZXQgKyA0IDw9IHN0ZG91dFVzZWQpIHtcbiAgICAgIGxldCBsZW5ndGggPSBwcm90b2NvbC5yZWFkVUludDMyTEUoc3Rkb3V0LCBvZmZzZXQpO1xuICAgICAgaWYgKG9mZnNldCArIDQgKyBsZW5ndGggPiBzdGRvdXRVc2VkKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICBoYW5kbGVJbmNvbWluZ1BhY2tldChzdGRvdXQuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgpKTtcbiAgICAgIG9mZnNldCArPSBsZW5ndGg7XG4gICAgfVxuICAgIGlmIChvZmZzZXQgPiAwKSB7XG4gICAgICBzdGRvdXQuY29weVdpdGhpbigwLCBvZmZzZXQsIHN0ZG91dFVzZWQpO1xuICAgICAgc3Rkb3V0VXNlZCAtPSBvZmZzZXQ7XG4gICAgfVxuICB9O1xuXG4gIGxldCBhZnRlckNsb3NlID0gKGVycm9yOiBFcnJvciB8IG51bGwpID0+IHtcbiAgICAvLyBXaGVuIHRoZSBwcm9jZXNzIGlzIGNsb3NlZCwgZmFpbCBhbGwgcGVuZGluZyByZXF1ZXN0c1xuICAgIGNsb3NlRGF0YS5kaWRDbG9zZSA9IHRydWU7XG4gICAgaWYgKGVycm9yKSBjbG9zZURhdGEucmVhc29uID0gXCI6IFwiICsgKGVycm9yLm1lc3NhZ2UgfHwgZXJyb3IpO1xuICAgIGNvbnN0IHRleHQgPSBcIlRoZSBzZXJ2aWNlIHdhcyBzdG9wcGVkXCIgKyBjbG9zZURhdGEucmVhc29uO1xuICAgIGZvciAobGV0IGlkIGluIHJlc3BvbnNlQ2FsbGJhY2tzKSB7XG4gICAgICByZXNwb25zZUNhbGxiYWNrc1tpZF0odGV4dCwgbnVsbCk7XG4gICAgfVxuICAgIHJlc3BvbnNlQ2FsbGJhY2tzID0ge307XG4gIH07XG5cbiAgbGV0IHNlbmRSZXF1ZXN0ID0gPFJlcSwgUmVzPihcbiAgICByZWZzOiBSZWZzIHwgbnVsbCxcbiAgICB2YWx1ZTogUmVxLFxuICAgIGNhbGxiYWNrOiAoZXJyb3I6IHN0cmluZyB8IG51bGwsIHJlc3BvbnNlOiBSZXMgfCBudWxsKSA9PiB2b2lkLFxuICApOiB2b2lkID0+IHtcbiAgICBpZiAoY2xvc2VEYXRhLmRpZENsb3NlKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICAgIFwiVGhlIHNlcnZpY2UgaXMgbm8gbG9uZ2VyIHJ1bm5pbmdcIiArIGNsb3NlRGF0YS5yZWFzb24sXG4gICAgICAgIG51bGwsXG4gICAgICApO1xuICAgIH1cbiAgICBsZXQgaWQgPSBuZXh0UmVxdWVzdElEKys7XG4gICAgcmVzcG9uc2VDYWxsYmFja3NbaWRdID0gKGVycm9yLCByZXNwb25zZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlIGFzIGFueSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAocmVmcykgcmVmcy51bnJlZigpOyAvLyBEbyB0aGlzIGFmdGVyIHRoZSBjYWxsYmFjayBzbyB0aGUgY2FsbGJhY2sgY2FuIGV4dGVuZCB0aGUgbGlmZXRpbWUgaWYgbmVlZGVkXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAocmVmcykgcmVmcy5yZWYoKTtcbiAgICBzdHJlYW1Jbi53cml0ZVRvU3RkaW4oXG4gICAgICBwcm90b2NvbC5lbmNvZGVQYWNrZXQoeyBpZCwgaXNSZXF1ZXN0OiB0cnVlLCB2YWx1ZTogdmFsdWUgYXMgYW55IH0pLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHNlbmRSZXNwb25zZSA9IChpZDogbnVtYmVyLCB2YWx1ZTogcHJvdG9jb2wuVmFsdWUpOiB2b2lkID0+IHtcbiAgICBpZiAoY2xvc2VEYXRhLmRpZENsb3NlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgc2VydmljZSBpcyBubyBsb25nZXIgcnVubmluZ1wiICsgY2xvc2VEYXRhLnJlYXNvbik7XG4gICAgfVxuICAgIHN0cmVhbUluLndyaXRlVG9TdGRpbihcbiAgICAgIHByb3RvY29sLmVuY29kZVBhY2tldCh7IGlkLCBpc1JlcXVlc3Q6IGZhbHNlLCB2YWx1ZSB9KSxcbiAgICApO1xuICB9O1xuXG4gIGxldCBoYW5kbGVSZXF1ZXN0ID0gYXN5bmMgKGlkOiBudW1iZXIsIHJlcXVlc3Q6IGFueSkgPT4ge1xuICAgIC8vIENhdGNoIGV4Y2VwdGlvbnMgaW4gdGhlIGNvZGUgYmVsb3cgc28gdGhleSBnZXQgcGFzc2VkIHRvIHRoZSBjYWxsZXJcbiAgICB0cnkge1xuICAgICAgaWYgKHJlcXVlc3QuY29tbWFuZCA9PT0gXCJwaW5nXCIpIHtcbiAgICAgICAgc2VuZFJlc3BvbnNlKGlkLCB7fSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiByZXF1ZXN0LmtleSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICBjb25zdCByZXF1ZXN0Q2FsbGJhY2tzID0gcmVxdWVzdENhbGxiYWNrc0J5S2V5W3JlcXVlc3Qua2V5XTtcbiAgICAgICAgaWYgKCFyZXF1ZXN0Q2FsbGJhY2tzKSB7XG4gICAgICAgICAgLy8gSWdub3JlIGludmFsaWQgY29tbWFuZHMgZm9yIG9sZCBidWlsZHMgdGhhdCBubyBsb25nZXIgZXhpc3QuXG4gICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gXCJjb250ZXh0LmNhbmNlbFwiIGFuZCBcImNvbnRleHQuZGlzcG9zZVwiXG4gICAgICAgICAgLy8gaXMgY2FsbGVkIHdoaWxlIGVzYnVpbGQgaXMgcHJvY2Vzc2luZyBtYW55IGZpbGVzIGluIHBhcmFsbGVsLlxuICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXZhbncvZXNidWlsZC9pc3N1ZXMvMzMxOCBmb3IgZGV0YWlscy5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSByZXF1ZXN0Q2FsbGJhY2tzW3JlcXVlc3QuY29tbWFuZF07XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGF3YWl0IGNhbGxiYWNrKGlkLCByZXF1ZXN0KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvbW1hbmQ6IGAgKyByZXF1ZXN0LmNvbW1hbmQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnN0IGVycm9ycyA9IFtleHRyYWN0RXJyb3JNZXNzYWdlVjgoZSwgc3RyZWFtSW4sIG51bGwsIHZvaWQgMCwgXCJcIildO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2VuZFJlc3BvbnNlKGlkLCB7IGVycm9ycyB9IGFzIGFueSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gVGhpcyBtYXkgZmFpbCBpZiB0aGUgZXNidWlsZCBwcm9jZXNzIGlzIG5vIGxvbmdlciBydW5uaW5nLCBidXRcbiAgICAgICAgLy8gdGhhdCdzIG9rLiBDYXRjaCBhbmQgc3dhbGxvdyB0aGlzIGV4Y2VwdGlvbiBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgIC8vIGNhdXNlIGFuIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbi4gT3VyIGNhbGxlciBpc24ndCBleHBlY3RpbmdcbiAgICAgICAgLy8gdGhpcyBjYWxsIHRvIGZhaWwgYW5kIGRvZXNuJ3QgaGFuZGxlIHRoZSBwcm9taXNlIHJlamVjdGlvbi5cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgbGV0IGlzRmlyc3RQYWNrZXQgPSB0cnVlO1xuXG4gIGxldCBoYW5kbGVJbmNvbWluZ1BhY2tldCA9IChieXRlczogVWludDhBcnJheSk6IHZvaWQgPT4ge1xuICAgIC8vIFRoZSBmaXJzdCBwYWNrZXQgaXMgYSB2ZXJzaW9uIGNoZWNrXG4gICAgaWYgKGlzRmlyc3RQYWNrZXQpIHtcbiAgICAgIGlzRmlyc3RQYWNrZXQgPSBmYWxzZTtcblxuICAgICAgLy8gVmFsaWRhdGUgdGhlIGJpbmFyeSdzIHZlcnNpb24gbnVtYmVyIHRvIG1ha2Ugc3VyZSBlc2J1aWxkIHdhcyBpbnN0YWxsZWRcbiAgICAgIC8vIGNvcnJlY3RseS4gVGhpcyBjaGVjayB3YXMgYWRkZWQgYmVjYXVzZSBzb21lIHBlb3BsZSBoYXZlIHJlcG9ydGVkXG4gICAgICAvLyBlcnJvcnMgdGhhdCBhcHBlYXIgdG8gaW5kaWNhdGUgYW4gaW5jb3JyZWN0IGluc3RhbGxhdGlvbi5cbiAgICAgIGxldCBiaW5hcnlWZXJzaW9uID0gU3RyaW5nLmZyb21DaGFyQ29kZSguLi5ieXRlcyk7XG4gICAgICBpZiAoYmluYXJ5VmVyc2lvbiAhPT0gRVNCVUlMRF9WRVJTSU9OKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2Fubm90IHN0YXJ0IHNlcnZpY2U6IEhvc3QgdmVyc2lvbiBcIiR7RVNCVUlMRF9WRVJTSU9OfVwiIGRvZXMgbm90IG1hdGNoIGJpbmFyeSB2ZXJzaW9uICR7XG4gICAgICAgICAgICBxdW90ZShiaW5hcnlWZXJzaW9uKVxuICAgICAgICAgIH1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBwYWNrZXQgPSBwcm90b2NvbC5kZWNvZGVQYWNrZXQoYnl0ZXMpIGFzIGFueTtcblxuICAgIGlmIChwYWNrZXQuaXNSZXF1ZXN0KSB7XG4gICAgICBoYW5kbGVSZXF1ZXN0KHBhY2tldC5pZCwgcGFja2V0LnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNhbGxiYWNrID0gcmVzcG9uc2VDYWxsYmFja3NbcGFja2V0LmlkXSE7XG4gICAgICBkZWxldGUgcmVzcG9uc2VDYWxsYmFja3NbcGFja2V0LmlkXTtcbiAgICAgIGlmIChwYWNrZXQudmFsdWUuZXJyb3IpIGNhbGxiYWNrKHBhY2tldC52YWx1ZS5lcnJvciwge30pO1xuICAgICAgZWxzZSBjYWxsYmFjayhudWxsLCBwYWNrZXQudmFsdWUpO1xuICAgIH1cbiAgfTtcblxuICBsZXQgYnVpbGRPckNvbnRleHQ6IFN0cmVhbVNlcnZpY2VbXCJidWlsZE9yQ29udGV4dFwiXSA9IChcbiAgICB7IGNhbGxOYW1lLCByZWZzLCBvcHRpb25zLCBpc1RUWSwgZGVmYXVsdFdELCBjYWxsYmFjayB9LFxuICApID0+IHtcbiAgICBsZXQgcmVmQ291bnQgPSAwO1xuICAgIGNvbnN0IGJ1aWxkS2V5ID0gbmV4dEJ1aWxkS2V5Kys7XG4gICAgY29uc3QgcmVxdWVzdENhbGxiYWNrczogeyBbY29tbWFuZDogc3RyaW5nXTogUmVxdWVzdENhbGxiYWNrIH0gPSB7fTtcbiAgICBjb25zdCBidWlsZFJlZnM6IFJlZnMgPSB7XG4gICAgICByZWYoKSB7XG4gICAgICAgIGlmICgrK3JlZkNvdW50ID09PSAxKSB7XG4gICAgICAgICAgaWYgKHJlZnMpIHJlZnMucmVmKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1bnJlZigpIHtcbiAgICAgICAgaWYgKC0tcmVmQ291bnQgPT09IDApIHtcbiAgICAgICAgICBkZWxldGUgcmVxdWVzdENhbGxiYWNrc0J5S2V5W2J1aWxkS2V5XTtcbiAgICAgICAgICBpZiAocmVmcykgcmVmcy51bnJlZigpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gICAgcmVxdWVzdENhbGxiYWNrc0J5S2V5W2J1aWxkS2V5XSA9IHJlcXVlc3RDYWxsYmFja3M7XG5cbiAgICAvLyBHdWFyZCB0aGUgd2hvbGUgXCJidWlsZFwiIHJlcXVlc3Qgd2l0aCBhIHRlbXBvcmFyeSByZWYgY291bnQgYnVtcC4gV2VcbiAgICAvLyBkb24ndCB3YW50IHRoZSByZWYgY291bnQgdG8gYmUgYnVtcGVkIGFib3ZlIHplcm8gYW5kIHRoZW4gYmFjayBkb3duXG4gICAgLy8gdG8gemVybyBiZWZvcmUgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAgICBidWlsZFJlZnMucmVmKCk7XG4gICAgYnVpbGRPckNvbnRleHRJbXBsKFxuICAgICAgY2FsbE5hbWUsXG4gICAgICBidWlsZEtleSxcbiAgICAgIHNlbmRSZXF1ZXN0LFxuICAgICAgc2VuZFJlc3BvbnNlLFxuICAgICAgYnVpbGRSZWZzLFxuICAgICAgc3RyZWFtSW4sXG4gICAgICByZXF1ZXN0Q2FsbGJhY2tzLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIGlzVFRZLFxuICAgICAgZGVmYXVsdFdELFxuICAgICAgKGVyciwgcmVzKSA9PiB7XG4gICAgICAgIC8vIE5vdyB0aGF0IHRoZSBpbml0aWFsIFwiYnVpbGRcIiByZXF1ZXN0IGlzIGRvbmUsIHdlIGNhbiByZWxlYXNlIG91clxuICAgICAgICAvLyB0ZW1wb3JhcnkgcmVmIGNvdW50IGJ1bXAuIEFueSBjb2RlIHRoYXQgd2FudHMgdG8gZXh0ZW5kIHRoZSBsaWZlXG4gICAgICAgIC8vIG9mIHRoZSBidWlsZCB3aWxsIGhhdmUgdG8gZG8gc28gYnkgZXhwbGljaXRseSByZXRhaW5pbmcgYSBjb3VudC5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjYWxsYmFjayhlcnIsIHJlcyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgYnVpbGRSZWZzLnVucmVmKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKTtcbiAgfTtcblxuICBsZXQgdHJhbnNmb3JtOiBTdHJlYW1TZXJ2aWNlW1widHJhbnNmb3JtXCJdID0gKFxuICAgIHsgY2FsbE5hbWUsIHJlZnMsIGlucHV0LCBvcHRpb25zLCBpc1RUWSwgZnMsIGNhbGxiYWNrIH0sXG4gICkgPT4ge1xuICAgIGNvbnN0IGRldGFpbHMgPSBjcmVhdGVPYmplY3RTdGFzaCgpO1xuXG4gICAgLy8gSWRlYWxseSB0aGUgXCJ0cmFuc2Zvcm0oKVwiIEFQSSB3b3VsZCBiZSBmYXN0ZXIgdGhhbiBjYWxsaW5nIFwiYnVpbGQoKVwiXG4gICAgLy8gc2luY2UgaXQgZG9lc24ndCBuZWVkIHRvIHRvdWNoIHRoZSBmaWxlIHN5c3RlbS4gSG93ZXZlciwgcGVyZm9ybWFuY2VcbiAgICAvLyBtZWFzdXJlbWVudHMgd2l0aCBsYXJnZSBmaWxlcyBvbiBtYWNPUyBpbmRpY2F0ZSB0aGF0IHNlbmRpbmcgdGhlIGRhdGFcbiAgICAvLyBvdmVyIHRoZSBzdGRpbyBwaXBlIGNhbiBiZSAyeCBzbG93ZXIgdGhhbiBqdXN0IHVzaW5nIGEgdGVtcG9yYXJ5IGZpbGUuXG4gICAgLy9cbiAgICAvLyBUaGlzIGFwcGVhcnMgdG8gYmUgYW4gT1MgbGltaXRhdGlvbi4gQm90aCB0aGUgSmF2YVNjcmlwdCBhbmQgR28gY29kZVxuICAgIC8vIGFyZSB1c2luZyBsYXJnZSBidWZmZXJzIGJ1dCB0aGUgcGlwZSBvbmx5IHdyaXRlcyBkYXRhIGluIDhrYiBjaHVua3MuXG4gICAgLy8gQW4gaW52ZXN0aWdhdGlvbiBzZWVtcyB0byBpbmRpY2F0ZSB0aGF0IHRoaXMgbnVtYmVyIGlzIGhhcmQtY29kZWQgaW50b1xuICAgIC8vIHRoZSBPUyBzb3VyY2UgY29kZS4gUHJlc3VtYWJseSBmaWxlcyBhcmUgZmFzdGVyIGJlY2F1c2UgdGhlIE9TIHVzZXNcbiAgICAvLyBhIGxhcmdlciBjaHVuayBzaXplLCBvciBtYXliZSBldmVuIHJlYWRzIGV2ZXJ5dGhpbmcgaW4gb25lIHN5c2NhbGwuXG4gICAgLy9cbiAgICAvLyBUaGUgY3Jvc3Mtb3ZlciBzaXplIHdoZXJlIHRoaXMgc3RhcnRzIHRvIGJlIGZhc3RlciBpcyBhcm91bmQgMW1iIG9uXG4gICAgLy8gbXkgbWFjaGluZS4gSW4gdGhhdCBjYXNlLCB0aGlzIGNvZGUgdHJpZXMgdG8gdXNlIGEgdGVtcG9yYXJ5IGZpbGUgaWZcbiAgICAvLyBwb3NzaWJsZSBidXQgZmFsbHMgYmFjayB0byBzZW5kaW5nIHRoZSBkYXRhIG92ZXIgdGhlIHN0ZGlvIHBpcGUgaWZcbiAgICAvLyB0aGF0IGRvZXNuJ3Qgd29yay5cbiAgICBsZXQgc3RhcnQgPSAoaW5wdXRQYXRoOiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ICE9PSBcInN0cmluZ1wiICYmICEoaW5wdXQgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdUaGUgaW5wdXQgdG8gXCJ0cmFuc2Zvcm1cIiBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgVWludDhBcnJheScsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQge1xuICAgICAgICAgIGZsYWdzLFxuICAgICAgICAgIG1hbmdsZUNhY2hlLFxuICAgICAgICB9ID0gZmxhZ3NGb3JUcmFuc2Zvcm1PcHRpb25zKFxuICAgICAgICAgIGNhbGxOYW1lLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgaXNUVFksXG4gICAgICAgICAgdHJhbnNmb3JtTG9nTGV2ZWxEZWZhdWx0LFxuICAgICAgICApO1xuICAgICAgICBsZXQgcmVxdWVzdDogcHJvdG9jb2wuVHJhbnNmb3JtUmVxdWVzdCA9IHtcbiAgICAgICAgICBjb21tYW5kOiBcInRyYW5zZm9ybVwiLFxuICAgICAgICAgIGZsYWdzLFxuICAgICAgICAgIGlucHV0RlM6IGlucHV0UGF0aCAhPT0gbnVsbCxcbiAgICAgICAgICBpbnB1dDogaW5wdXRQYXRoICE9PSBudWxsXG4gICAgICAgICAgICA/IHByb3RvY29sLmVuY29kZVVURjgoaW5wdXRQYXRoKVxuICAgICAgICAgICAgOiB0eXBlb2YgaW5wdXQgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gcHJvdG9jb2wuZW5jb2RlVVRGOChpbnB1dClcbiAgICAgICAgICAgIDogaW5wdXQsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChtYW5nbGVDYWNoZSkgcmVxdWVzdC5tYW5nbGVDYWNoZSA9IG1hbmdsZUNhY2hlO1xuICAgICAgICBzZW5kUmVxdWVzdDxwcm90b2NvbC5UcmFuc2Zvcm1SZXF1ZXN0LCBwcm90b2NvbC5UcmFuc2Zvcm1SZXNwb25zZT4oXG4gICAgICAgICAgcmVmcyxcbiAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgIChlcnJvciwgcmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcikgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcihlcnJvciksIG51bGwpO1xuICAgICAgICAgICAgbGV0IGVycm9ycyA9IHJlcGxhY2VEZXRhaWxzSW5NZXNzYWdlcyhyZXNwb25zZSEuZXJyb3JzLCBkZXRhaWxzKTtcbiAgICAgICAgICAgIGxldCB3YXJuaW5ncyA9IHJlcGxhY2VEZXRhaWxzSW5NZXNzYWdlcyhcbiAgICAgICAgICAgICAgcmVzcG9uc2UhLndhcm5pbmdzLFxuICAgICAgICAgICAgICBkZXRhaWxzLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGxldCBvdXRzdGFuZGluZyA9IDE7XG4gICAgICAgICAgICBsZXQgbmV4dCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKC0tb3V0c3RhbmRpbmcgPT09IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0OiB0eXBlcy5UcmFuc2Zvcm1SZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgICB3YXJuaW5ncyxcbiAgICAgICAgICAgICAgICAgIGNvZGU6IHJlc3BvbnNlIS5jb2RlLFxuICAgICAgICAgICAgICAgICAgbWFwOiByZXNwb25zZSEubWFwLFxuICAgICAgICAgICAgICAgICAgbWFuZ2xlQ2FjaGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIGxlZ2FsQ29tbWVudHM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChcImxlZ2FsQ29tbWVudHNcIiBpbiByZXNwb25zZSEpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdC5sZWdhbENvbW1lbnRzID0gcmVzcG9uc2U/LmxlZ2FsQ29tbWVudHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSEubWFuZ2xlQ2FjaGUpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdC5tYW5nbGVDYWNoZSA9IHJlc3BvbnNlPy5tYW5nbGVDYWNoZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICAgICAgICAgICAgZmFpbHVyZUVycm9yV2l0aExvZyhcIlRyYW5zZm9ybSBmYWlsZWRcIiwgZXJyb3JzLCB3YXJuaW5ncyksXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVhZCB0aGUgSmF2YVNjcmlwdCBmaWxlIGZyb20gdGhlIGZpbGUgc3lzdGVtXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UhLmNvZGVGUykge1xuICAgICAgICAgICAgICBvdXRzdGFuZGluZysrO1xuICAgICAgICAgICAgICBmcy5yZWFkRmlsZShyZXNwb25zZSEuY29kZSwgKGVyciwgY29udGVudHMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIsIG51bGwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXNwb25zZSEuY29kZSA9IGNvbnRlbnRzITtcbiAgICAgICAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZWFkIHRoZSBzb3VyY2UgbWFwIGZpbGUgZnJvbSB0aGUgZmlsZSBzeXN0ZW1cbiAgICAgICAgICAgIGlmIChyZXNwb25zZSEubWFwRlMpIHtcbiAgICAgICAgICAgICAgb3V0c3RhbmRpbmcrKztcbiAgICAgICAgICAgICAgZnMucmVhZEZpbGUocmVzcG9uc2UhLm1hcCwgKGVyciwgY29udGVudHMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIsIG51bGwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXNwb25zZSEubWFwID0gY29udGVudHMhO1xuICAgICAgICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsZXQgZmxhZ3M6IHN0cmluZ1tdID0gW107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcHVzaExvZ0ZsYWdzKGZsYWdzLCBvcHRpb25zLCB7fSwgaXNUVFksIHRyYW5zZm9ybUxvZ0xldmVsRGVmYXVsdCk7XG4gICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgY29uc3QgZXJyb3IgPSBleHRyYWN0RXJyb3JNZXNzYWdlVjgoZSwgc3RyZWFtSW4sIGRldGFpbHMsIHZvaWQgMCwgXCJcIik7XG4gICAgICAgIHNlbmRSZXF1ZXN0KHJlZnMsIHsgY29tbWFuZDogXCJlcnJvclwiLCBmbGFncywgZXJyb3IgfSwgKCkgPT4ge1xuICAgICAgICAgIGVycm9yLmRldGFpbCA9IGRldGFpbHMubG9hZChlcnJvci5kZXRhaWwpO1xuICAgICAgICAgIGNhbGxiYWNrKGZhaWx1cmVFcnJvcldpdGhMb2coXCJUcmFuc2Zvcm0gZmFpbGVkXCIsIFtlcnJvcl0sIFtdKSwgbnVsbCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKFxuICAgICAgKHR5cGVvZiBpbnB1dCA9PT0gXCJzdHJpbmdcIiB8fCBpbnB1dCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpICYmXG4gICAgICBpbnB1dC5sZW5ndGggPiAxMDI0ICogMTAyNFxuICAgICkge1xuICAgICAgbGV0IG5leHQgPSBzdGFydDtcbiAgICAgIHN0YXJ0ID0gKCkgPT4gZnMud3JpdGVGaWxlKGlucHV0LCBuZXh0KTtcbiAgICB9XG4gICAgc3RhcnQobnVsbCk7XG4gIH07XG5cbiAgbGV0IGZvcm1hdE1lc3NhZ2VzOiBTdHJlYW1TZXJ2aWNlW1wiZm9ybWF0TWVzc2FnZXNcIl0gPSAoXG4gICAgeyBjYWxsTmFtZSwgcmVmcywgbWVzc2FnZXMsIG9wdGlvbnMsIGNhbGxiYWNrIH0sXG4gICkgPT4ge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHNlY29uZCBhcmd1bWVudCBpbiAke2NhbGxOYW1lfSgpIGNhbGxgKTtcbiAgICB9XG4gICAgbGV0IGtleXM6IE9wdGlvbktleXMgPSB7fTtcbiAgICBsZXQga2luZCA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJraW5kXCIsIG11c3RCZVN0cmluZyk7XG4gICAgbGV0IGNvbG9yID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImNvbG9yXCIsIG11c3RCZUJvb2xlYW4pO1xuICAgIGxldCB0ZXJtaW5hbFdpZHRoID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInRlcm1pbmFsV2lkdGhcIiwgbXVzdEJlSW50ZWdlcik7XG4gICAgY2hlY2tGb3JJbnZhbGlkRmxhZ3Mob3B0aW9ucywga2V5cywgYGluICR7Y2FsbE5hbWV9KCkgY2FsbGApO1xuICAgIGlmIChraW5kID09PSB2b2lkIDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBcImtpbmRcIiBpbiAke2NhbGxOYW1lfSgpIGNhbGxgKTtcbiAgICB9XG4gICAgaWYgKGtpbmQgIT09IFwiZXJyb3JcIiAmJiBraW5kICE9PSBcIndhcm5pbmdcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRXhwZWN0ZWQgXCJraW5kXCIgdG8gYmUgXCJlcnJvclwiIG9yIFwid2FybmluZ1wiIGluICR7Y2FsbE5hbWV9KCkgY2FsbGAsXG4gICAgICApO1xuICAgIH1cbiAgICBsZXQgcmVxdWVzdDogcHJvdG9jb2wuRm9ybWF0TXNnc1JlcXVlc3QgPSB7XG4gICAgICBjb21tYW5kOiBcImZvcm1hdC1tc2dzXCIsXG4gICAgICBtZXNzYWdlczogc2FuaXRpemVNZXNzYWdlcyhtZXNzYWdlcywgXCJtZXNzYWdlc1wiLCBudWxsLCBcIlwiLCB0ZXJtaW5hbFdpZHRoKSxcbiAgICAgIGlzV2FybmluZzoga2luZCA9PT0gXCJ3YXJuaW5nXCIsXG4gICAgfTtcbiAgICBpZiAoY29sb3IgIT09IHZvaWQgMCkgcmVxdWVzdC5jb2xvciA9IGNvbG9yO1xuICAgIGlmICh0ZXJtaW5hbFdpZHRoICE9PSB2b2lkIDApIHJlcXVlc3QudGVybWluYWxXaWR0aCA9IHRlcm1pbmFsV2lkdGg7XG4gICAgc2VuZFJlcXVlc3Q8cHJvdG9jb2wuRm9ybWF0TXNnc1JlcXVlc3QsIHByb3RvY29sLkZvcm1hdE1zZ3NSZXNwb25zZT4oXG4gICAgICByZWZzLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIChlcnJvciwgcmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKGVycm9yKSwgbnVsbCk7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3BvbnNlIS5tZXNzYWdlcyk7XG4gICAgICB9LFxuICAgICk7XG4gIH07XG5cbiAgbGV0IGFuYWx5emVNZXRhZmlsZTogU3RyZWFtU2VydmljZVtcImFuYWx5emVNZXRhZmlsZVwiXSA9IChcbiAgICB7IGNhbGxOYW1lLCByZWZzLCBtZXRhZmlsZSwgb3B0aW9ucywgY2FsbGJhY2sgfSxcbiAgKSA9PiB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgb3B0aW9ucyA9IHt9O1xuICAgIGxldCBrZXlzOiBPcHRpb25LZXlzID0ge307XG4gICAgbGV0IGNvbG9yID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImNvbG9yXCIsIG11c3RCZUJvb2xlYW4pO1xuICAgIGxldCB2ZXJib3NlID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInZlcmJvc2VcIiwgbXVzdEJlQm9vbGVhbik7XG4gICAgY2hlY2tGb3JJbnZhbGlkRmxhZ3Mob3B0aW9ucywga2V5cywgYGluICR7Y2FsbE5hbWV9KCkgY2FsbGApO1xuICAgIGxldCByZXF1ZXN0OiBwcm90b2NvbC5BbmFseXplTWV0YWZpbGVSZXF1ZXN0ID0ge1xuICAgICAgY29tbWFuZDogXCJhbmFseXplLW1ldGFmaWxlXCIsXG4gICAgICBtZXRhZmlsZSxcbiAgICB9O1xuICAgIGlmIChjb2xvciAhPT0gdm9pZCAwKSByZXF1ZXN0LmNvbG9yID0gY29sb3I7XG4gICAgaWYgKHZlcmJvc2UgIT09IHZvaWQgMCkgcmVxdWVzdC52ZXJib3NlID0gdmVyYm9zZTtcbiAgICBzZW5kUmVxdWVzdDxcbiAgICAgIHByb3RvY29sLkFuYWx5emVNZXRhZmlsZVJlcXVlc3QsXG4gICAgICBwcm90b2NvbC5BbmFseXplTWV0YWZpbGVSZXNwb25zZVxuICAgID4ocmVmcywgcmVxdWVzdCwgKGVycm9yLCByZXNwb25zZSkgPT4ge1xuICAgICAgaWYgKGVycm9yKSByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKGVycm9yKSwgbnVsbCk7XG4gICAgICBjYWxsYmFjayhudWxsLCByZXNwb25zZSEucmVzdWx0KTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHJlYWRGcm9tU3Rkb3V0LFxuICAgIGFmdGVyQ2xvc2UsXG4gICAgc2VydmljZToge1xuICAgICAgYnVpbGRPckNvbnRleHQsXG4gICAgICB0cmFuc2Zvcm0sXG4gICAgICBmb3JtYXRNZXNzYWdlcyxcbiAgICAgIGFuYWx5emVNZXRhZmlsZSxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZE9yQ29udGV4dEltcGwoXG4gIGNhbGxOYW1lOiBzdHJpbmcsXG4gIGJ1aWxkS2V5OiBudW1iZXIsXG4gIHNlbmRSZXF1ZXN0OiA8UmVxLCBSZXM+KFxuICAgIHJlZnM6IFJlZnMgfCBudWxsLFxuICAgIHZhbHVlOiBSZXEsXG4gICAgY2FsbGJhY2s6IChlcnJvcjogc3RyaW5nIHwgbnVsbCwgcmVzcG9uc2U6IFJlcyB8IG51bGwpID0+IHZvaWQsXG4gICkgPT4gdm9pZCxcbiAgc2VuZFJlc3BvbnNlOiAoaWQ6IG51bWJlciwgdmFsdWU6IHByb3RvY29sLlZhbHVlKSA9PiB2b2lkLFxuICByZWZzOiBSZWZzLFxuICBzdHJlYW1JbjogU3RyZWFtSW4sXG4gIHJlcXVlc3RDYWxsYmFja3M6IHsgW2NvbW1hbmQ6IHN0cmluZ106IFJlcXVlc3RDYWxsYmFjayB9LFxuICBvcHRpb25zOiB0eXBlcy5CdWlsZE9wdGlvbnMsXG4gIGlzVFRZOiBib29sZWFuLFxuICBkZWZhdWx0V0Q6IHN0cmluZyxcbiAgY2FsbGJhY2s6IChcbiAgICBlcnI6IEVycm9yIHwgbnVsbCxcbiAgICByZXM6IHR5cGVzLkJ1aWxkUmVzdWx0IHwgdHlwZXMuQnVpbGRDb250ZXh0IHwgbnVsbCxcbiAgKSA9PiB2b2lkLFxuKTogdm9pZCB7XG4gIGNvbnN0IGRldGFpbHMgPSBjcmVhdGVPYmplY3RTdGFzaCgpO1xuICBjb25zdCBpc0NvbnRleHQgPSBjYWxsTmFtZSA9PT0gXCJjb250ZXh0XCI7XG5cbiAgY29uc3QgaGFuZGxlRXJyb3IgPSAoZTogYW55LCBwbHVnaW5OYW1lOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICBjb25zdCBmbGFnczogc3RyaW5nW10gPSBbXTtcbiAgICB0cnkge1xuICAgICAgcHVzaExvZ0ZsYWdzKGZsYWdzLCBvcHRpb25zLCB7fSwgaXNUVFksIGJ1aWxkTG9nTGV2ZWxEZWZhdWx0KTtcbiAgICB9IGNhdGNoIHt9XG4gICAgY29uc3QgbWVzc2FnZSA9IGV4dHJhY3RFcnJvck1lc3NhZ2VWOChcbiAgICAgIGUsXG4gICAgICBzdHJlYW1JbixcbiAgICAgIGRldGFpbHMsXG4gICAgICB2b2lkIDAsXG4gICAgICBwbHVnaW5OYW1lLFxuICAgICk7XG4gICAgc2VuZFJlcXVlc3QocmVmcywgeyBjb21tYW5kOiBcImVycm9yXCIsIGZsYWdzLCBlcnJvcjogbWVzc2FnZSB9LCAoKSA9PiB7XG4gICAgICBtZXNzYWdlLmRldGFpbCA9IGRldGFpbHMubG9hZChtZXNzYWdlLmRldGFpbCk7XG4gICAgICBjYWxsYmFjayhcbiAgICAgICAgZmFpbHVyZUVycm9yV2l0aExvZyhpc0NvbnRleHQgPyBcIkNvbnRleHQgZmFpbGVkXCIgOiBcIkJ1aWxkIGZhaWxlZFwiLCBbXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgXSwgW10pLFxuICAgICAgICBudWxsLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfTtcblxuICBsZXQgcGx1Z2luczogdHlwZXMuUGx1Z2luW10gfCB1bmRlZmluZWQ7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJvYmplY3RcIikge1xuICAgIGNvbnN0IHZhbHVlID0gb3B0aW9ucy5wbHVnaW5zO1xuICAgIGlmICh2YWx1ZSAhPT0gdm9pZCAwKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVFcnJvcihuZXcgRXJyb3IoYFwicGx1Z2luc1wiIG11c3QgYmUgYW4gYXJyYXlgKSwgXCJcIik7XG4gICAgICB9XG4gICAgICBwbHVnaW5zID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBsdWdpbnMgJiYgcGx1Z2lucy5sZW5ndGggPiAwKSB7XG4gICAgaWYgKHN0cmVhbUluLmlzU3luYykge1xuICAgICAgcmV0dXJuIGhhbmRsZUVycm9yKFxuICAgICAgICBuZXcgRXJyb3IoXCJDYW5ub3QgdXNlIHBsdWdpbnMgaW4gc3luY2hyb25vdXMgQVBJIGNhbGxzXCIpLFxuICAgICAgICBcIlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBQbHVnaW5zIGNhbiB1c2UgYXN5bmMvYXdhaXQgYmVjYXVzZSB0aGV5IGNhbid0IGJlIHJ1biB3aXRoIFwiYnVpbGRTeW5jXCJcbiAgICBoYW5kbGVQbHVnaW5zKFxuICAgICAgYnVpbGRLZXksXG4gICAgICBzZW5kUmVxdWVzdCxcbiAgICAgIHNlbmRSZXNwb25zZSxcbiAgICAgIHJlZnMsXG4gICAgICBzdHJlYW1JbixcbiAgICAgIHJlcXVlc3RDYWxsYmFja3MsXG4gICAgICBvcHRpb25zLFxuICAgICAgcGx1Z2lucyxcbiAgICAgIGRldGFpbHMsXG4gICAgKS50aGVuKFxuICAgICAgKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAoIXJlc3VsdC5vaykgcmV0dXJuIGhhbmRsZUVycm9yKHJlc3VsdC5lcnJvciwgcmVzdWx0LnBsdWdpbk5hbWUpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGJ1aWxkT3JDb250ZXh0Q29udGludWUoXG4gICAgICAgICAgICByZXN1bHQucmVxdWVzdFBsdWdpbnMsXG4gICAgICAgICAgICByZXN1bHQucnVuT25FbmRDYWxsYmFja3MsXG4gICAgICAgICAgICByZXN1bHQuc2NoZWR1bGVPbkRpc3Bvc2VDYWxsYmFja3MsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGhhbmRsZUVycm9yKGUsIFwiXCIpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGUpID0+IGhhbmRsZUVycm9yKGUsIFwiXCIpLFxuICAgICk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBidWlsZE9yQ29udGV4dENvbnRpbnVlKG51bGwsIChyZXN1bHQsIGRvbmUpID0+IGRvbmUoW10sIFtdKSwgKCkgPT4ge30pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaGFuZGxlRXJyb3IoZSwgXCJcIik7XG4gIH1cblxuICAvLyBcImJ1aWxkT3JDb250ZXh0XCIgY2Fubm90IGJlIHdyaXR0ZW4gdXNpbmcgYXN5bmMvYXdhaXQgZHVlIHRvIFwiYnVpbGRTeW5jXCJcbiAgLy8gYW5kIG11c3QgYmUgd3JpdHRlbiBpbiBjb250aW51YXRpb24tcGFzc2luZyBzdHlsZSBpbnN0ZWFkXG4gIGZ1bmN0aW9uIGJ1aWxkT3JDb250ZXh0Q29udGludWUoXG4gICAgcmVxdWVzdFBsdWdpbnM6IHByb3RvY29sLkJ1aWxkUGx1Z2luW10gfCBudWxsLFxuICAgIHJ1bk9uRW5kQ2FsbGJhY2tzOiBSdW5PbkVuZENhbGxiYWNrcyxcbiAgICBzY2hlZHVsZU9uRGlzcG9zZUNhbGxiYWNrczogKCkgPT4gdm9pZCxcbiAgKSB7XG4gICAgY29uc3Qgd3JpdGVEZWZhdWx0ID0gc3RyZWFtSW4uaGFzRlM7XG4gICAgY29uc3Qge1xuICAgICAgZW50cmllcyxcbiAgICAgIGZsYWdzLFxuICAgICAgd3JpdGUsXG4gICAgICBzdGRpbkNvbnRlbnRzLFxuICAgICAgc3RkaW5SZXNvbHZlRGlyLFxuICAgICAgYWJzV29ya2luZ0RpcixcbiAgICAgIG5vZGVQYXRocyxcbiAgICAgIG1hbmdsZUNhY2hlLFxuICAgIH0gPSBmbGFnc0ZvckJ1aWxkT3B0aW9ucyhcbiAgICAgIGNhbGxOYW1lLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIGlzVFRZLFxuICAgICAgYnVpbGRMb2dMZXZlbERlZmF1bHQsXG4gICAgICB3cml0ZURlZmF1bHQsXG4gICAgKTtcbiAgICBpZiAod3JpdGUgJiYgIXN0cmVhbUluLmhhc0ZTKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBcIndyaXRlXCIgb3B0aW9uIGlzIHVuYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnRgKTtcbiAgICB9XG5cbiAgICAvLyBDb25zdHJ1Y3QgdGhlIHJlcXVlc3RcbiAgICBjb25zdCByZXF1ZXN0OiBwcm90b2NvbC5CdWlsZFJlcXVlc3QgPSB7XG4gICAgICBjb21tYW5kOiBcImJ1aWxkXCIsXG4gICAgICBrZXk6IGJ1aWxkS2V5LFxuICAgICAgZW50cmllcyxcbiAgICAgIGZsYWdzLFxuICAgICAgd3JpdGUsXG4gICAgICBzdGRpbkNvbnRlbnRzLFxuICAgICAgc3RkaW5SZXNvbHZlRGlyLFxuICAgICAgYWJzV29ya2luZ0RpcjogYWJzV29ya2luZ0RpciB8fCBkZWZhdWx0V0QsXG4gICAgICBub2RlUGF0aHMsXG4gICAgICBjb250ZXh0OiBpc0NvbnRleHQsXG4gICAgfTtcbiAgICBpZiAocmVxdWVzdFBsdWdpbnMpIHJlcXVlc3QucGx1Z2lucyA9IHJlcXVlc3RQbHVnaW5zO1xuICAgIGlmIChtYW5nbGVDYWNoZSkgcmVxdWVzdC5tYW5nbGVDYWNoZSA9IG1hbmdsZUNhY2hlO1xuXG4gICAgLy8gRmFjdG9yIG91dCByZXNwb25zZSBoYW5kbGluZyBzbyBpdCBjYW4gYmUgcmV1c2VkIGZvciByZWJ1aWxkc1xuICAgIGNvbnN0IGJ1aWxkUmVzcG9uc2VUb1Jlc3VsdCA9IChcbiAgICAgIHJlc3BvbnNlOiBwcm90b2NvbC5CdWlsZFJlc3BvbnNlIHwgbnVsbCxcbiAgICAgIGNhbGxiYWNrOiAoXG4gICAgICAgIGVycm9yOiB0eXBlcy5CdWlsZEZhaWx1cmUgfCBudWxsLFxuICAgICAgICByZXN1bHQ6IHR5cGVzLkJ1aWxkUmVzdWx0IHwgbnVsbCxcbiAgICAgICAgb25FbmRFcnJvcnM6IHR5cGVzLk1lc3NhZ2VbXSxcbiAgICAgICAgb25FbmRXYXJuaW5nczogdHlwZXMuTWVzc2FnZVtdLFxuICAgICAgKSA9PiB2b2lkLFxuICAgICk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0OiB0eXBlcy5CdWlsZFJlc3VsdCA9IHtcbiAgICAgICAgZXJyb3JzOiByZXBsYWNlRGV0YWlsc0luTWVzc2FnZXMocmVzcG9uc2UhLmVycm9ycywgZGV0YWlscyksXG4gICAgICAgIHdhcm5pbmdzOiByZXBsYWNlRGV0YWlsc0luTWVzc2FnZXMocmVzcG9uc2UhLndhcm5pbmdzLCBkZXRhaWxzKSxcbiAgICAgICAgb3V0cHV0RmlsZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgbWV0YWZpbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgbWFuZ2xlQ2FjaGU6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgICBjb25zdCBvcmlnaW5hbEVycm9ycyA9IHJlc3VsdC5lcnJvcnMuc2xpY2UoKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsV2FybmluZ3MgPSByZXN1bHQud2FybmluZ3Muc2xpY2UoKTtcbiAgICAgIGlmIChyZXNwb25zZSEub3V0cHV0RmlsZXMpIHtcbiAgICAgICAgcmVzdWx0Lm91dHB1dEZpbGVzID0gcmVzcG9uc2UhLm91dHB1dEZpbGVzLm1hcChjb252ZXJ0T3V0cHV0RmlsZXMpO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3BvbnNlIS5tZXRhZmlsZSkgcmVzdWx0Lm1ldGFmaWxlID0gSlNPTi5wYXJzZShyZXNwb25zZSEubWV0YWZpbGUpO1xuICAgICAgaWYgKHJlc3BvbnNlIS5tYW5nbGVDYWNoZSkgcmVzdWx0Lm1hbmdsZUNhY2hlID0gcmVzcG9uc2UhLm1hbmdsZUNhY2hlO1xuICAgICAgaWYgKHJlc3BvbnNlIS53cml0ZVRvU3Rkb3V0ICE9PSB2b2lkIDApIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgcHJvdG9jb2wuZGVjb2RlVVRGOChyZXNwb25zZSEud3JpdGVUb1N0ZG91dCkucmVwbGFjZSgvXFxuJC8sIFwiXCIpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcnVuT25FbmRDYWxsYmFja3MocmVzdWx0LCAob25FbmRFcnJvcnMsIG9uRW5kV2FybmluZ3MpID0+IHtcbiAgICAgICAgaWYgKG9yaWdpbmFsRXJyb3JzLmxlbmd0aCA+IDAgfHwgb25FbmRFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gZmFpbHVyZUVycm9yV2l0aExvZyhcbiAgICAgICAgICAgIFwiQnVpbGQgZmFpbGVkXCIsXG4gICAgICAgICAgICBvcmlnaW5hbEVycm9ycy5jb25jYXQob25FbmRFcnJvcnMpLFxuICAgICAgICAgICAgb3JpZ2luYWxXYXJuaW5ncy5jb25jYXQob25FbmRXYXJuaW5ncyksXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyb3IsIG51bGwsIG9uRW5kRXJyb3JzLCBvbkVuZFdhcm5pbmdzKTtcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjayhudWxsLCByZXN1bHQsIG9uRW5kRXJyb3JzLCBvbkVuZFdhcm5pbmdzKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvLyBJbiBjb250ZXh0IG1vZGUsIEdvIHJ1bnMgdGhlIFwib25FbmRcIiBjYWxsYmFja3MgaW5zdGVhZCBvZiBKYXZhU2NyaXB0XG4gICAgbGV0IGxhdGVzdFJlc3VsdFByb21pc2U6IFByb21pc2U8dHlwZXMuQnVpbGRSZXN1bHQ+IHwgdW5kZWZpbmVkO1xuICAgIGxldCBwcm92aWRlTGF0ZXN0UmVzdWx0OlxuICAgICAgfCAoKFxuICAgICAgICBlcnJvcjogdHlwZXMuQnVpbGRGYWlsdXJlIHwgbnVsbCxcbiAgICAgICAgcmVzdWx0OiB0eXBlcy5CdWlsZFJlc3VsdCB8IG51bGwsXG4gICAgICApID0+IHZvaWQpXG4gICAgICB8IHVuZGVmaW5lZDtcbiAgICBpZiAoaXNDb250ZXh0KSB7XG4gICAgICByZXF1ZXN0Q2FsbGJhY2tzW1wib24tZW5kXCJdID0gKGlkLCByZXF1ZXN0OiBwcm90b2NvbC5PbkVuZFJlcXVlc3QpID0+XG4gICAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgYnVpbGRSZXNwb25zZVRvUmVzdWx0KFxuICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgIChlcnIsIHJlc3VsdCwgb25FbmRFcnJvcnMsIG9uRW5kV2FybmluZ3MpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2U6IHByb3RvY29sLk9uRW5kUmVzcG9uc2UgPSB7XG4gICAgICAgICAgICAgICAgZXJyb3JzOiBvbkVuZEVycm9ycyxcbiAgICAgICAgICAgICAgICB3YXJuaW5nczogb25FbmRXYXJuaW5ncyxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgaWYgKHByb3ZpZGVMYXRlc3RSZXN1bHQpIHByb3ZpZGVMYXRlc3RSZXN1bHQoZXJyLCByZXN1bHQpO1xuICAgICAgICAgICAgICBsYXRlc3RSZXN1bHRQcm9taXNlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBwcm92aWRlTGF0ZXN0UmVzdWx0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBzZW5kUmVzcG9uc2UoaWQsIHJlc3BvbnNlIGFzIGFueSk7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2VuZFJlcXVlc3Q8cHJvdG9jb2wuQnVpbGRSZXF1ZXN0LCBwcm90b2NvbC5CdWlsZFJlc3BvbnNlPihcbiAgICAgIHJlZnMsXG4gICAgICByZXF1ZXN0LFxuICAgICAgKGVycm9yLCByZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoZXJyb3IpLCBudWxsKTtcbiAgICAgICAgaWYgKCFpc0NvbnRleHQpIHtcbiAgICAgICAgICByZXR1cm4gYnVpbGRSZXNwb25zZVRvUmVzdWx0KHJlc3BvbnNlISwgKGVyciwgcmVzKSA9PiB7XG4gICAgICAgICAgICBzY2hlZHVsZU9uRGlzcG9zZUNhbGxiYWNrcygpO1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVyciwgcmVzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbnN0cnVjdCBhIGNvbnRleHQgb2JqZWN0XG4gICAgICAgIGlmIChyZXNwb25zZSEuZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICAgICAgICBmYWlsdXJlRXJyb3JXaXRoTG9nKFxuICAgICAgICAgICAgICBcIkNvbnRleHQgZmFpbGVkXCIsXG4gICAgICAgICAgICAgIHJlc3BvbnNlIS5lcnJvcnMsXG4gICAgICAgICAgICAgIHJlc3BvbnNlIS53YXJuaW5ncyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRpZERpc3Bvc2UgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiB0eXBlcy5CdWlsZENvbnRleHQgPSB7XG4gICAgICAgICAgcmVidWlsZDogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFsYXRlc3RSZXN1bHRQcm9taXNlKSB7XG4gICAgICAgICAgICAgIGxhdGVzdFJlc3VsdFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHNldHRsZVByb21pc2U6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBwcm92aWRlTGF0ZXN0UmVzdWx0ID0gKGVyciwgcmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoIXNldHRsZVByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0dGxlUHJvbWlzZSA9ICgpID0+IGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZShyZXN1bHQhKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJBbm90aGVyQnVpbGQgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0OiBwcm90b2NvbC5SZWJ1aWxkUmVxdWVzdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogXCJyZWJ1aWxkXCIsXG4gICAgICAgICAgICAgICAgICAgIGtleTogYnVpbGRLZXksXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgc2VuZFJlcXVlc3Q8XG4gICAgICAgICAgICAgICAgICAgIHByb3RvY29sLlJlYnVpbGRSZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgICBwcm90b2NvbC5SZWJ1aWxkUmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgID4ocmVmcywgcmVxdWVzdCwgKGVycm9yLCByZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2V0dGxlUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdG8gc2V0dGxlIHRoZSBwcm9taXNlIHRoYXQgd2UgcmV0dXJuZWQgZnJvbVxuICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgXCJyZWJ1aWxkKClcIiBmdW5jdGlvbiBlYXJsaWVyIHRoYW4gdGhpcyBwb2ludC4gSG93ZXZlcixcbiAgICAgICAgICAgICAgICAgICAgICAvLyBhdCB0aGF0IHBvaW50IHRoZSB1c2VyIGNvdWxkIGNhbGwgXCJyZWJ1aWxkKClcIiBhZ2FpbiB3aGljaFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHdvdWxkIHVuZXhwZWN0ZWRseSBtZXJnZSB3aXRoIHRoZSBzYW1lIGJ1aWxkIHRoYXQncyBzdGlsbFxuICAgICAgICAgICAgICAgICAgICAgIC8vIG9uZ29pbmcuIFRvIHByZXZlbnQgdGhhdCwgd2UgZGVmZXIgc2V0dGxpbmcgdGhlIHByb21pc2VcbiAgICAgICAgICAgICAgICAgICAgICAvLyB1bnRpbCBub3cgd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGJ1aWxkIGhhcyBmaW5pc2hlZC5cbiAgICAgICAgICAgICAgICAgICAgICBzZXR0bGVQcm9taXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiB3ZSBjYWxsIFwicmVidWlsZCgpXCIsIHdlIGNhbGwgb3V0IHRvIHRoZSBHbyBcIlJlYnVpbGQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgLy8gQVBJIG92ZXIgSVBDLiBUaGF0IG1heSB0cmlnZ2VyIGEgYnVpbGQsIGJ1dCBtYXkgYWxzbyBcImpvaW5cIlxuICAgICAgICAgICAgICAgICAgICAgIC8vIGFuIGV4aXN0aW5nIGJ1aWxkLiBBdCBzb21lIHBvaW50IHRoZSBHbyBjb2RlIHNlbmRzIHVzIGFuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gXCJvbi1lbmRcIiBtZXNzYWdlIHdpdGggdGhlIGJ1aWxkIHJlc3VsdCB0byB0ZWxsIHVzIHRvIHJ1blxuICAgICAgICAgICAgICAgICAgICAgIC8vIG91ciBcIm9uRW5kXCIgcGx1Z2lucy4gV2UgY2FwdHVyZSB0aGF0IGJ1aWxkIHJlc3VsdCBhbmQgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gaXQgaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAgIC8vIEhvd2V2ZXIsIHRoZXJlJ3MgYSBwb3RlbnRpYWwgcHJvYmxlbTogRm9yIHBlcmZvcm1hbmNlLCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAvLyBHbyBjb2RlIHdpbGwgb25seSBzZW5kIHVzIHRoZSByZXN1bHQgaWYgaXQncyBuZWVkZWQsIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBoYXBwZW5zIGlmIHRoZXJlIGFyZSBcIm9uRW5kXCIgY2FsbGJhY2tzIG9yIGlmIFwicmVidWlsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgLy8gd2FzIGNhbGxlZC4gU28gdGhlcmUncyBhIHJhY2Ugd2hlcmUgdGhlIGZvbGxvd2luZyB0aGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAvLyBoYXBwZW46XG4gICAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgICAvLyAxLiBHbyBzdGFydHMgYSByZWJ1aWxkIChlLmcuIGR1ZSB0byB3YXRjaCBtb2RlKVxuICAgICAgICAgICAgICAgICAgICAgIC8vIDIuIEpTIGNhbGxzIFwicmVidWlsZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAzLiBHbyBlbmRzIHRoZSBidWlsZCBhbmQgc3RhcnRzIEdvJ3MgXCJPbkVuZFwiIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgICAgLy8gNC4gR28ncyBcIk9uRW5kXCIgY2FsbGJhY2sgc2VlcyBubyBuZWVkIHRvIHNlbmQgdGhlIHJlc3VsdFxuICAgICAgICAgICAgICAgICAgICAgIC8vIDUuIEpTIGFza3MgR28gdG8gcmVidWlsZCwgd2hpY2ggbWVyZ2VzIHdpdGggdGhlIGV4aXN0aW5nIGJ1aWxkXG4gICAgICAgICAgICAgICAgICAgICAgLy8gNi4gR28ncyBleGlzdGluZyBidWlsZCBlbmRzXG4gICAgICAgICAgICAgICAgICAgICAgLy8gNy4gVGhlIG1lcmdlZCBidWlsZCBlbmRzLCB3aGljaCB3YWtlcyB1cCBKUyBhbmQgZW5kcyB1cCBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGF0IHNpdHVhdGlvbiB3ZSBkaWRuJ3QgZ2V0IGFuIFwib24tZW5kXCIgbWVzc2FnZSBzaW5jZVxuICAgICAgICAgICAgICAgICAgICAgIC8vIEdvIHRob3VnaHQgaXQgd2Fzbid0IG5lY2Vzc2FyeS4gSW4gdGhhdCBzaXR1YXRpb24sIHdlXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlciBhbm90aGVyIHJlYnVpbGQgYmVsb3cgc28gdGhhdCBHbyB3aWxsIChhbG1vc3RcbiAgICAgICAgICAgICAgICAgICAgICAvLyBzdXJlbHkpIHNlbmQgdXMgYW4gXCJvbi1lbmRcIiBtZXNzYWdlIG5leHQgdGltZS4gSSBzdXNwZWN0XG4gICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCB0aGlzIGlzIGEgdmVyeSByYXJlIGNhc2UsIHNvIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3RcbiAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBidWlsZGluZyB0d2ljZSBzaG91bGRuJ3QgcmVhbGx5IG1hdHRlci4gSXQgYWxzbyBvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgLy8gaGFwcGVucyB3aGVuIFwicmVidWlsZCgpXCIgaXMgdXNlZCB3aXRoIFwid2F0Y2goKVwiIGFuZC9vclxuICAgICAgICAgICAgICAgICAgICAgIC8vIFwic2VydmUoKVwiLlxuICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJBbm90aGVyQnVpbGQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyQW5vdGhlckJ1aWxkKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGxhdGVzdFJlc3VsdFByb21pc2U7XG4gICAgICAgICAgfSxcblxuICAgICAgICAgIHdhdGNoOiAob3B0aW9ucyA9IHt9KSA9PlxuICAgICAgICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXN0cmVhbUluLmhhc0ZTKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgYENhbm5vdCB1c2UgdGhlIFwid2F0Y2hcIiBBUEkgaW4gdGhpcyBlbnZpcm9ubWVudGAsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBrZXlzOiBPcHRpb25LZXlzID0ge307XG4gICAgICAgICAgICAgIGNoZWNrRm9ySW52YWxpZEZsYWdzKG9wdGlvbnMsIGtleXMsIGBpbiB3YXRjaCgpIGNhbGxgKTtcbiAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdDogcHJvdG9jb2wuV2F0Y2hSZXF1ZXN0ID0ge1xuICAgICAgICAgICAgICAgIGNvbW1hbmQ6IFwid2F0Y2hcIixcbiAgICAgICAgICAgICAgICBrZXk6IGJ1aWxkS2V5LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBzZW5kUmVxdWVzdDxwcm90b2NvbC5XYXRjaFJlcXVlc3QsIG51bGw+KFxuICAgICAgICAgICAgICAgIHJlZnMsXG4gICAgICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikgcmVqZWN0KG5ldyBFcnJvcihlcnJvcikpO1xuICAgICAgICAgICAgICAgICAgZWxzZSByZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgc2VydmU6IChvcHRpb25zID0ge30pID0+XG4gICAgICAgICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghc3RyZWFtSW4uaGFzRlMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICBgQ2Fubm90IHVzZSB0aGUgXCJzZXJ2ZVwiIEFQSSBpbiB0aGlzIGVudmlyb25tZW50YCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGtleXM6IE9wdGlvbktleXMgPSB7fTtcbiAgICAgICAgICAgICAgY29uc3QgcG9ydCA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJwb3J0XCIsIG11c3RCZUludGVnZXIpO1xuICAgICAgICAgICAgICBjb25zdCBob3N0ID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImhvc3RcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgICAgICAgY29uc3Qgc2VydmVkaXIgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwic2VydmVkaXJcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgICAgICAgY29uc3Qga2V5ZmlsZSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJrZXlmaWxlXCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgICAgICAgIGNvbnN0IGNlcnRmaWxlID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImNlcnRmaWxlXCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgICAgICAgIGNvbnN0IGZhbGxiYWNrID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImZhbGxiYWNrXCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgICAgICAgIGNvbnN0IG9uUmVxdWVzdCA9IGdldEZsYWcoXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICAgICBrZXlzLFxuICAgICAgICAgICAgICAgIFwib25SZXF1ZXN0XCIsXG4gICAgICAgICAgICAgICAgbXVzdEJlRnVuY3Rpb24sXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNoZWNrRm9ySW52YWxpZEZsYWdzKG9wdGlvbnMsIGtleXMsIGBpbiBzZXJ2ZSgpIGNhbGxgKTtcblxuICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0OiBwcm90b2NvbC5TZXJ2ZVJlcXVlc3QgPSB7XG4gICAgICAgICAgICAgICAgY29tbWFuZDogXCJzZXJ2ZVwiLFxuICAgICAgICAgICAgICAgIGtleTogYnVpbGRLZXksXG4gICAgICAgICAgICAgICAgb25SZXF1ZXN0OiAhIW9uUmVxdWVzdCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgaWYgKHBvcnQgIT09IHZvaWQgMCkgcmVxdWVzdC5wb3J0ID0gcG9ydDtcbiAgICAgICAgICAgICAgaWYgKGhvc3QgIT09IHZvaWQgMCkgcmVxdWVzdC5ob3N0ID0gaG9zdDtcbiAgICAgICAgICAgICAgaWYgKHNlcnZlZGlyICE9PSB2b2lkIDApIHJlcXVlc3Quc2VydmVkaXIgPSBzZXJ2ZWRpcjtcbiAgICAgICAgICAgICAgaWYgKGtleWZpbGUgIT09IHZvaWQgMCkgcmVxdWVzdC5rZXlmaWxlID0ga2V5ZmlsZTtcbiAgICAgICAgICAgICAgaWYgKGNlcnRmaWxlICE9PSB2b2lkIDApIHJlcXVlc3QuY2VydGZpbGUgPSBjZXJ0ZmlsZTtcbiAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrICE9PSB2b2lkIDApIHJlcXVlc3QuZmFsbGJhY2sgPSBmYWxsYmFjaztcblxuICAgICAgICAgICAgICBzZW5kUmVxdWVzdDxwcm90b2NvbC5TZXJ2ZVJlcXVlc3QsIHByb3RvY29sLlNlcnZlUmVzcG9uc2U+KFxuICAgICAgICAgICAgICAgIHJlZnMsXG4gICAgICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgICAgICAoZXJyb3IsIHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHJldHVybiByZWplY3QobmV3IEVycm9yKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgICBpZiAob25SZXF1ZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RDYWxsYmFja3NbXCJzZXJ2ZS1yZXF1ZXN0XCJdID0gKFxuICAgICAgICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6IHByb3RvY29sLk9uU2VydmVSZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBvblJlcXVlc3QocmVxdWVzdC5hcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgICBzZW5kUmVzcG9uc2UoaWQsIHt9KTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UhKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICBjYW5jZWw6ICgpID0+XG4gICAgICAgICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZGlkRGlzcG9zZSkgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdDogcHJvdG9jb2wuQ2FuY2VsUmVxdWVzdCA9IHtcbiAgICAgICAgICAgICAgICBjb21tYW5kOiBcImNhbmNlbFwiLFxuICAgICAgICAgICAgICAgIGtleTogYnVpbGRLZXksXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHNlbmRSZXF1ZXN0PHByb3RvY29sLkNhbmNlbFJlcXVlc3QsIG51bGw+KHJlZnMsIHJlcXVlc3QsICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7IC8vIFdlIGRvbid0IGNhcmUgYWJvdXQgZXJyb3JzIGhlcmVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgIGRpc3Bvc2U6ICgpID0+XG4gICAgICAgICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZGlkRGlzcG9zZSkgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgZGlkRGlzcG9zZSA9IHRydWU7IC8vIERvbid0IGRpc3Bvc2UgbW9yZSB0aGFuIG9uY2VcbiAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdDogcHJvdG9jb2wuRGlzcG9zZVJlcXVlc3QgPSB7XG4gICAgICAgICAgICAgICAgY29tbWFuZDogXCJkaXNwb3NlXCIsXG4gICAgICAgICAgICAgICAga2V5OiBidWlsZEtleSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgc2VuZFJlcXVlc3Q8cHJvdG9jb2wuRGlzcG9zZVJlcXVlc3QsIG51bGw+KHJlZnMsIHJlcXVlc3QsICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7IC8vIFdlIGRvbid0IGNhcmUgYWJvdXQgZXJyb3JzIGhlcmVcbiAgICAgICAgICAgICAgICBzY2hlZHVsZU9uRGlzcG9zZUNhbGxiYWNrcygpO1xuXG4gICAgICAgICAgICAgICAgLy8gT25seSByZW1vdmUgdGhlIHJlZmVyZW5jZSBoZXJlIHdoZW4gd2Uga25vdyB0aGUgR28gY29kZSBoYXMgc2VlblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgXCJkaXNwb3NlXCIgY2FsbC4gV2UgZG9uJ3Qgd2FudCB0byByZW1vdmUgYW55IHJlZ2lzdGVyZWRcbiAgICAgICAgICAgICAgICAvLyBjYWxsYmFja3MgYmVmb3JlIHRoYXQgcG9pbnQgYmVjYXVzZSB0aGUgR28gY29kZSBtaWdodCBzdGlsbCBiZVxuICAgICAgICAgICAgICAgIC8vIHNlbmRpbmcgdXMgZXZlbnRzLiBJZiB3ZSByZW1vdmUgdGhlIHJlZmVyZW5jZSBlYXJsaWVyIHRoZW4gd2VcbiAgICAgICAgICAgICAgICAvLyB3aWxsIHJldHVybiBlcnJvcnMgZm9yIHRob3NlIGV2ZW50cywgd2hpY2ggbWF5IGVuZCB1cCBiZWluZ1xuICAgICAgICAgICAgICAgIC8vIHByaW50ZWQgdG8gdGhlIHRlcm1pbmFsIHdoZXJlIHRoZSB1c2VyIGNhbiBzZWUgdGhlbSwgd2hpY2ggd291bGRcbiAgICAgICAgICAgICAgICAvLyBiZSB2ZXJ5IGNvbmZ1c2luZy5cbiAgICAgICAgICAgICAgICByZWZzLnVucmVmKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICAgIHJlZnMucmVmKCk7IC8vIEtlZXAgYSByZWZlcmVuY2UgdW50aWwgXCJkaXNwb3NlXCIgaXMgY2FsbGVkXG4gICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XG4gICAgICB9LFxuICAgICk7XG4gIH1cbn1cblxudHlwZSBSdW5PbkVuZENhbGxiYWNrcyA9IChcbiAgcmVzdWx0OiB0eXBlcy5CdWlsZFJlc3VsdCxcbiAgZG9uZTogKGVycm9yczogdHlwZXMuTWVzc2FnZVtdLCB3YXJuaW5nczogdHlwZXMuTWVzc2FnZVtdKSA9PiB2b2lkLFxuKSA9PiB2b2lkO1xuXG5sZXQgaGFuZGxlUGx1Z2lucyA9IGFzeW5jIChcbiAgYnVpbGRLZXk6IG51bWJlcixcbiAgc2VuZFJlcXVlc3Q6IDxSZXEsIFJlcz4oXG4gICAgcmVmczogUmVmcyB8IG51bGwsXG4gICAgdmFsdWU6IFJlcSxcbiAgICBjYWxsYmFjazogKGVycm9yOiBzdHJpbmcgfCBudWxsLCByZXNwb25zZTogUmVzIHwgbnVsbCkgPT4gdm9pZCxcbiAgKSA9PiB2b2lkLFxuICBzZW5kUmVzcG9uc2U6IChpZDogbnVtYmVyLCB2YWx1ZTogcHJvdG9jb2wuVmFsdWUpID0+IHZvaWQsXG4gIHJlZnM6IFJlZnMsXG4gIHN0cmVhbUluOiBTdHJlYW1JbixcbiAgcmVxdWVzdENhbGxiYWNrczogeyBbY29tbWFuZDogc3RyaW5nXTogUmVxdWVzdENhbGxiYWNrIH0sXG4gIGluaXRpYWxPcHRpb25zOiB0eXBlcy5CdWlsZE9wdGlvbnMsXG4gIHBsdWdpbnM6IHR5cGVzLlBsdWdpbltdLFxuICBkZXRhaWxzOiBPYmplY3RTdGFzaCxcbik6IFByb21pc2U8XG4gIHwge1xuICAgIG9rOiB0cnVlO1xuICAgIHJlcXVlc3RQbHVnaW5zOiBwcm90b2NvbC5CdWlsZFBsdWdpbltdO1xuICAgIHJ1bk9uRW5kQ2FsbGJhY2tzOiBSdW5PbkVuZENhbGxiYWNrcztcbiAgICBzY2hlZHVsZU9uRGlzcG9zZUNhbGxiYWNrczogKCkgPT4gdm9pZDtcbiAgfVxuICB8IHsgb2s6IGZhbHNlOyBlcnJvcjogYW55OyBwbHVnaW5OYW1lOiBzdHJpbmcgfVxuPiA9PiB7XG4gIGxldCBvblN0YXJ0Q2FsbGJhY2tzOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIG5vdGU6ICgpID0+IHR5cGVzLk5vdGUgfCB1bmRlZmluZWQ7XG4gICAgY2FsbGJhY2s6ICgpID0+XG4gICAgICB8IHR5cGVzLk9uU3RhcnRSZXN1bHRcbiAgICAgIHwgbnVsbFxuICAgICAgfCB2b2lkXG4gICAgICB8IFByb21pc2U8dHlwZXMuT25TdGFydFJlc3VsdCB8IG51bGwgfCB2b2lkPjtcbiAgfVtdID0gW107XG5cbiAgbGV0IG9uRW5kQ2FsbGJhY2tzOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIG5vdGU6ICgpID0+IHR5cGVzLk5vdGUgfCB1bmRlZmluZWQ7XG4gICAgY2FsbGJhY2s6IChcbiAgICAgIHJlc3VsdDogdHlwZXMuQnVpbGRSZXN1bHQsXG4gICAgKSA9PlxuICAgICAgfCB0eXBlcy5PbkVuZFJlc3VsdFxuICAgICAgfCBudWxsXG4gICAgICB8IHZvaWRcbiAgICAgIHwgUHJvbWlzZTx0eXBlcy5PbkVuZFJlc3VsdCB8IG51bGwgfCB2b2lkPjtcbiAgfVtdID0gW107XG5cbiAgbGV0IG9uUmVzb2x2ZUNhbGxiYWNrczoge1xuICAgIFtpZDogbnVtYmVyXToge1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgbm90ZTogKCkgPT4gdHlwZXMuTm90ZSB8IHVuZGVmaW5lZDtcbiAgICAgIGNhbGxiYWNrOiAoXG4gICAgICAgIGFyZ3M6IHR5cGVzLk9uUmVzb2x2ZUFyZ3MsXG4gICAgICApID0+XG4gICAgICAgIHwgdHlwZXMuT25SZXNvbHZlUmVzdWx0XG4gICAgICAgIHwgbnVsbFxuICAgICAgICB8IHVuZGVmaW5lZFxuICAgICAgICB8IFByb21pc2U8dHlwZXMuT25SZXNvbHZlUmVzdWx0IHwgbnVsbCB8IHVuZGVmaW5lZD47XG4gICAgfTtcbiAgfSA9IHt9O1xuXG4gIGxldCBvbkxvYWRDYWxsYmFja3M6IHtcbiAgICBbaWQ6IG51bWJlcl06IHtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIG5vdGU6ICgpID0+IHR5cGVzLk5vdGUgfCB1bmRlZmluZWQ7XG4gICAgICBjYWxsYmFjazogKFxuICAgICAgICBhcmdzOiB0eXBlcy5PbkxvYWRBcmdzLFxuICAgICAgKSA9PlxuICAgICAgICB8IHR5cGVzLk9uTG9hZFJlc3VsdFxuICAgICAgICB8IG51bGxcbiAgICAgICAgfCB1bmRlZmluZWRcbiAgICAgICAgfCBQcm9taXNlPHR5cGVzLk9uTG9hZFJlc3VsdCB8IG51bGwgfCB1bmRlZmluZWQ+O1xuICAgIH07XG4gIH0gPSB7fTtcblxuICBsZXQgb25EaXNwb3NlQ2FsbGJhY2tzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuICBsZXQgbmV4dENhbGxiYWNrSUQgPSAwO1xuICBsZXQgaSA9IDA7XG4gIGxldCByZXF1ZXN0UGx1Z2luczogcHJvdG9jb2wuQnVpbGRQbHVnaW5bXSA9IFtdO1xuICBsZXQgaXNTZXR1cERvbmUgPSBmYWxzZTtcblxuICAvLyBDbG9uZSB0aGUgcGx1Z2luIGFycmF5IHRvIGd1YXJkIGFnYWluc3QgbXV0YXRpb24gZHVyaW5nIGl0ZXJhdGlvblxuICBwbHVnaW5zID0gWy4uLnBsdWdpbnNdO1xuXG4gIGZvciAobGV0IGl0ZW0gb2YgcGx1Z2lucykge1xuICAgIGxldCBrZXlzOiBPcHRpb25LZXlzID0ge307XG4gICAgaWYgKHR5cGVvZiBpdGVtICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFBsdWdpbiBhdCBpbmRleCAke2l9IG11c3QgYmUgYW4gb2JqZWN0YCk7XG4gICAgfVxuICAgIGNvbnN0IG5hbWUgPSBnZXRGbGFnKGl0ZW0sIGtleXMsIFwibmFtZVwiLCBtdXN0QmVTdHJpbmcpO1xuICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gXCJzdHJpbmdcIiB8fCBuYW1lID09PSBcIlwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFBsdWdpbiBhdCBpbmRleCAke2l9IGlzIG1pc3NpbmcgYSBuYW1lYCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBsZXQgc2V0dXAgPSBnZXRGbGFnKGl0ZW0sIGtleXMsIFwic2V0dXBcIiwgbXVzdEJlRnVuY3Rpb24pO1xuICAgICAgaWYgKHR5cGVvZiBzZXR1cCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUGx1Z2luIGlzIG1pc3NpbmcgYSBzZXR1cCBmdW5jdGlvbmApO1xuICAgICAgfVxuICAgICAgY2hlY2tGb3JJbnZhbGlkRmxhZ3MoaXRlbSwga2V5cywgYG9uIHBsdWdpbiAke3F1b3RlKG5hbWUpfWApO1xuXG4gICAgICBsZXQgcGx1Z2luOiBwcm90b2NvbC5CdWlsZFBsdWdpbiA9IHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgb25TdGFydDogZmFsc2UsXG4gICAgICAgIG9uRW5kOiBmYWxzZSxcbiAgICAgICAgb25SZXNvbHZlOiBbXSxcbiAgICAgICAgb25Mb2FkOiBbXSxcbiAgICAgIH07XG4gICAgICBpKys7XG5cbiAgICAgIGxldCByZXNvbHZlID0gKFxuICAgICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICAgIG9wdGlvbnM6IHR5cGVzLlJlc29sdmVPcHRpb25zID0ge30sXG4gICAgICApOiBQcm9taXNlPHR5cGVzLlJlc29sdmVSZXN1bHQ+ID0+IHtcbiAgICAgICAgaWYgKCFpc1NldHVwRG9uZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdDYW5ub3QgY2FsbCBcInJlc29sdmVcIiBiZWZvcmUgcGx1Z2luIHNldHVwIGhhcyBjb21wbGV0ZWQnLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgcGF0aCB0byByZXNvbHZlIG11c3QgYmUgYSBzdHJpbmdgKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQga2V5czogT3B0aW9uS2V5cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGxldCBwbHVnaW5OYW1lID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInBsdWdpbk5hbWVcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgbGV0IGltcG9ydGVyID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcImltcG9ydGVyXCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgIGxldCBuYW1lc3BhY2UgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwibmFtZXNwYWNlXCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgIGxldCByZXNvbHZlRGlyID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcInJlc29sdmVEaXJcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgbGV0IGtpbmQgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwia2luZFwiLCBtdXN0QmVTdHJpbmcpO1xuICAgICAgICBsZXQgcGx1Z2luRGF0YSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJwbHVnaW5EYXRhXCIsIGNhbkJlQW55dGhpbmcpO1xuICAgICAgICBsZXQgaW1wb3J0QXR0cmlidXRlcyA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJ3aXRoXCIsIG11c3RCZU9iamVjdCk7XG4gICAgICAgIGNoZWNrRm9ySW52YWxpZEZsYWdzKG9wdGlvbnMsIGtleXMsIFwiaW4gcmVzb2x2ZSgpIGNhbGxcIik7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCByZXF1ZXN0OiBwcm90b2NvbC5SZXNvbHZlUmVxdWVzdCA9IHtcbiAgICAgICAgICAgIGNvbW1hbmQ6IFwicmVzb2x2ZVwiLFxuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgIGtleTogYnVpbGRLZXksXG4gICAgICAgICAgICBwbHVnaW5OYW1lOiBuYW1lLFxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKHBsdWdpbk5hbWUgIT0gbnVsbCkgcmVxdWVzdC5wbHVnaW5OYW1lID0gcGx1Z2luTmFtZTtcbiAgICAgICAgICBpZiAoaW1wb3J0ZXIgIT0gbnVsbCkgcmVxdWVzdC5pbXBvcnRlciA9IGltcG9ydGVyO1xuICAgICAgICAgIGlmIChuYW1lc3BhY2UgIT0gbnVsbCkgcmVxdWVzdC5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gICAgICAgICAgaWYgKHJlc29sdmVEaXIgIT0gbnVsbCkgcmVxdWVzdC5yZXNvbHZlRGlyID0gcmVzb2x2ZURpcjtcbiAgICAgICAgICBpZiAoa2luZCAhPSBudWxsKSByZXF1ZXN0LmtpbmQgPSBraW5kO1xuICAgICAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKGBNdXN0IHNwZWNpZnkgXCJraW5kXCIgd2hlbiBjYWxsaW5nIFwicmVzb2x2ZVwiYCk7XG4gICAgICAgICAgaWYgKHBsdWdpbkRhdGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmVxdWVzdC5wbHVnaW5EYXRhID0gZGV0YWlscy5zdG9yZShwbHVnaW5EYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGltcG9ydEF0dHJpYnV0ZXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmVxdWVzdC53aXRoID0gc2FuaXRpemVTdHJpbmdNYXAoaW1wb3J0QXR0cmlidXRlcywgXCJ3aXRoXCIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNlbmRSZXF1ZXN0PHByb3RvY29sLlJlc29sdmVSZXF1ZXN0LCBwcm90b2NvbC5SZXNvbHZlUmVzcG9uc2U+KFxuICAgICAgICAgICAgcmVmcyxcbiAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAoZXJyb3IsIHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkgcmVqZWN0KG5ldyBFcnJvcihlcnJvcikpO1xuICAgICAgICAgICAgICBlbHNlIHtyZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgIGVycm9yczogcmVwbGFjZURldGFpbHNJbk1lc3NhZ2VzKHJlc3BvbnNlIS5lcnJvcnMsIGRldGFpbHMpLFxuICAgICAgICAgICAgICAgICAgd2FybmluZ3M6IHJlcGxhY2VEZXRhaWxzSW5NZXNzYWdlcyhcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UhLndhcm5pbmdzLFxuICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIHBhdGg6IHJlc3BvbnNlIS5wYXRoLFxuICAgICAgICAgICAgICAgICAgZXh0ZXJuYWw6IHJlc3BvbnNlIS5leHRlcm5hbCxcbiAgICAgICAgICAgICAgICAgIHNpZGVFZmZlY3RzOiByZXNwb25zZSEuc2lkZUVmZmVjdHMsXG4gICAgICAgICAgICAgICAgICBuYW1lc3BhY2U6IHJlc3BvbnNlIS5uYW1lc3BhY2UsXG4gICAgICAgICAgICAgICAgICBzdWZmaXg6IHJlc3BvbnNlIS5zdWZmaXgsXG4gICAgICAgICAgICAgICAgICBwbHVnaW5EYXRhOiBkZXRhaWxzLmxvYWQocmVzcG9uc2UhLnBsdWdpbkRhdGEpLFxuICAgICAgICAgICAgICAgIH0pO31cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBsZXQgcHJvbWlzZSA9IHNldHVwKHtcbiAgICAgICAgaW5pdGlhbE9wdGlvbnMsXG5cbiAgICAgICAgcmVzb2x2ZSxcblxuICAgICAgICBvblN0YXJ0KGNhbGxiYWNrKSB7XG4gICAgICAgICAgbGV0IHJlZ2lzdGVyZWRUZXh0ID1cbiAgICAgICAgICAgIGBUaGlzIGVycm9yIGNhbWUgZnJvbSB0aGUgXCJvblN0YXJ0XCIgY2FsbGJhY2sgcmVnaXN0ZXJlZCBoZXJlOmA7XG4gICAgICAgICAgbGV0IHJlZ2lzdGVyZWROb3RlID0gZXh0cmFjdENhbGxlclY4KFxuICAgICAgICAgICAgbmV3IEVycm9yKHJlZ2lzdGVyZWRUZXh0KSxcbiAgICAgICAgICAgIHN0cmVhbUluLFxuICAgICAgICAgICAgXCJvblN0YXJ0XCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBvblN0YXJ0Q2FsbGJhY2tzLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogbmFtZSEsXG4gICAgICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgICAgIG5vdGU6IHJlZ2lzdGVyZWROb3RlLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHBsdWdpbi5vblN0YXJ0ID0gdHJ1ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBvbkVuZChjYWxsYmFjaykge1xuICAgICAgICAgIGxldCByZWdpc3RlcmVkVGV4dCA9XG4gICAgICAgICAgICBgVGhpcyBlcnJvciBjYW1lIGZyb20gdGhlIFwib25FbmRcIiBjYWxsYmFjayByZWdpc3RlcmVkIGhlcmU6YDtcbiAgICAgICAgICBsZXQgcmVnaXN0ZXJlZE5vdGUgPSBleHRyYWN0Q2FsbGVyVjgoXG4gICAgICAgICAgICBuZXcgRXJyb3IocmVnaXN0ZXJlZFRleHQpLFxuICAgICAgICAgICAgc3RyZWFtSW4sXG4gICAgICAgICAgICBcIm9uRW5kXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBvbkVuZENhbGxiYWNrcy5wdXNoKHsgbmFtZTogbmFtZSEsIGNhbGxiYWNrLCBub3RlOiByZWdpc3RlcmVkTm90ZSB9KTtcbiAgICAgICAgICBwbHVnaW4ub25FbmQgPSB0cnVlO1xuICAgICAgICB9LFxuXG4gICAgICAgIG9uUmVzb2x2ZShvcHRpb25zLCBjYWxsYmFjaykge1xuICAgICAgICAgIGxldCByZWdpc3RlcmVkVGV4dCA9XG4gICAgICAgICAgICBgVGhpcyBlcnJvciBjYW1lIGZyb20gdGhlIFwib25SZXNvbHZlXCIgY2FsbGJhY2sgcmVnaXN0ZXJlZCBoZXJlOmA7XG4gICAgICAgICAgbGV0IHJlZ2lzdGVyZWROb3RlID0gZXh0cmFjdENhbGxlclY4KFxuICAgICAgICAgICAgbmV3IEVycm9yKHJlZ2lzdGVyZWRUZXh0KSxcbiAgICAgICAgICAgIHN0cmVhbUluLFxuICAgICAgICAgICAgXCJvblJlc29sdmVcIixcbiAgICAgICAgICApO1xuICAgICAgICAgIGxldCBrZXlzOiBPcHRpb25LZXlzID0ge307XG4gICAgICAgICAgbGV0IGZpbHRlciA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJmaWx0ZXJcIiwgbXVzdEJlUmVnRXhwKTtcbiAgICAgICAgICBsZXQgbmFtZXNwYWNlID0gZ2V0RmxhZyhvcHRpb25zLCBrZXlzLCBcIm5hbWVzcGFjZVwiLCBtdXN0QmVTdHJpbmcpO1xuICAgICAgICAgIGNoZWNrRm9ySW52YWxpZEZsYWdzKFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIGtleXMsXG4gICAgICAgICAgICBgaW4gb25SZXNvbHZlKCkgY2FsbCBmb3IgcGx1Z2luICR7cXVvdGUobmFtZSl9YCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChmaWx0ZXIgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBvblJlc29sdmUoKSBjYWxsIGlzIG1pc3NpbmcgYSBmaWx0ZXJgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IGlkID0gbmV4dENhbGxiYWNrSUQrKztcbiAgICAgICAgICBvblJlc29sdmVDYWxsYmFja3NbaWRdID0ge1xuICAgICAgICAgICAgbmFtZTogbmFtZSEsXG4gICAgICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgICAgIG5vdGU6IHJlZ2lzdGVyZWROb3RlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgcGx1Z2luLm9uUmVzb2x2ZS5wdXNoKHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXIuc291cmNlLFxuICAgICAgICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2UgfHwgXCJcIixcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBvbkxvYWQob3B0aW9ucywgY2FsbGJhY2spIHtcbiAgICAgICAgICBsZXQgcmVnaXN0ZXJlZFRleHQgPVxuICAgICAgICAgICAgYFRoaXMgZXJyb3IgY2FtZSBmcm9tIHRoZSBcIm9uTG9hZFwiIGNhbGxiYWNrIHJlZ2lzdGVyZWQgaGVyZTpgO1xuICAgICAgICAgIGxldCByZWdpc3RlcmVkTm90ZSA9IGV4dHJhY3RDYWxsZXJWOChcbiAgICAgICAgICAgIG5ldyBFcnJvcihyZWdpc3RlcmVkVGV4dCksXG4gICAgICAgICAgICBzdHJlYW1JbixcbiAgICAgICAgICAgIFwib25Mb2FkXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsZXQga2V5czogT3B0aW9uS2V5cyA9IHt9O1xuICAgICAgICAgIGxldCBmaWx0ZXIgPSBnZXRGbGFnKG9wdGlvbnMsIGtleXMsIFwiZmlsdGVyXCIsIG11c3RCZVJlZ0V4cCk7XG4gICAgICAgICAgbGV0IG5hbWVzcGFjZSA9IGdldEZsYWcob3B0aW9ucywga2V5cywgXCJuYW1lc3BhY2VcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgICBjaGVja0ZvckludmFsaWRGbGFncyhcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBrZXlzLFxuICAgICAgICAgICAgYGluIG9uTG9hZCgpIGNhbGwgZm9yIHBsdWdpbiAke3F1b3RlKG5hbWUpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoZmlsdGVyID09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgb25Mb2FkKCkgY2FsbCBpcyBtaXNzaW5nIGEgZmlsdGVyYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBpZCA9IG5leHRDYWxsYmFja0lEKys7XG4gICAgICAgICAgb25Mb2FkQ2FsbGJhY2tzW2lkXSA9IHsgbmFtZTogbmFtZSEsIGNhbGxiYWNrLCBub3RlOiByZWdpc3RlcmVkTm90ZSB9O1xuICAgICAgICAgIHBsdWdpbi5vbkxvYWQucHVzaCh7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGZpbHRlcjogZmlsdGVyLnNvdXJjZSxcbiAgICAgICAgICAgIG5hbWVzcGFjZTogbmFtZXNwYWNlIHx8IFwiXCIsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgb25EaXNwb3NlKGNhbGxiYWNrKSB7XG4gICAgICAgICAgb25EaXNwb3NlQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgICAgICB9LFxuXG4gICAgICAgIGVzYnVpbGQ6IHN0cmVhbUluLmVzYnVpbGQsXG4gICAgICB9KTtcblxuICAgICAgLy8gQXdhaXQgYSByZXR1cm5lZCBwcm9taXNlIGlmIHRoZXJlIHdhcyBvbmUuIFRoaXMgYWxsb3dzIHBsdWdpbnMgdG8gZG9cbiAgICAgIC8vIHNvbWUgYXN5bmNocm9ub3VzIHNldHVwIHdoaWxlIHN0aWxsIHJldGFpbmluZyB0aGUgYWJpbGl0eSB0byBtb2RpZnlcbiAgICAgIC8vIHRoZSBidWlsZCBvcHRpb25zLiBUaGlzIGRlbGliZXJhdGVseSBzZXJpYWxpemVzIGFzeW5jaHJvbm91cyBwbHVnaW5cbiAgICAgIC8vIHNldHVwIGluc3RlYWQgb2YgcnVubmluZyB0aGVtIGNvbmN1cnJlbnRseSBzbyB0aGF0IGJ1aWxkIG9wdGlvblxuICAgICAgLy8gbW9kaWZpY2F0aW9ucyBhcmUgZWFzaWVyIHRvIHJlYXNvbiBhYm91dC5cbiAgICAgIGlmIChwcm9taXNlKSBhd2FpdCBwcm9taXNlO1xuXG4gICAgICByZXF1ZXN0UGx1Z2lucy5wdXNoKHBsdWdpbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCBlcnJvcjogZSwgcGx1Z2luTmFtZTogbmFtZSB9O1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RDYWxsYmFja3NbXCJvbi1zdGFydFwiXSA9IGFzeW5jIChcbiAgICBpZCxcbiAgICByZXF1ZXN0OiBwcm90b2NvbC5PblN0YXJ0UmVxdWVzdCxcbiAgKSA9PiB7XG4gICAgbGV0IHJlc3BvbnNlOiBwcm90b2NvbC5PblN0YXJ0UmVzcG9uc2UgPSB7IGVycm9yczogW10sIHdhcm5pbmdzOiBbXSB9O1xuICAgIGF3YWl0IFByb21pc2UuYWxsKG9uU3RhcnRDYWxsYmFja3MubWFwKGFzeW5jICh7IG5hbWUsIGNhbGxiYWNrLCBub3RlIH0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsYmFjaygpO1xuXG4gICAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBFeHBlY3RlZCBvblN0YXJ0KCkgY2FsbGJhY2sgaW4gcGx1Z2luICR7XG4gICAgICAgICAgICAgICAgcXVvdGUobmFtZSlcbiAgICAgICAgICAgICAgfSB0byByZXR1cm4gYW4gb2JqZWN0YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBrZXlzOiBPcHRpb25LZXlzID0ge307XG4gICAgICAgICAgbGV0IGVycm9ycyA9IGdldEZsYWcocmVzdWx0LCBrZXlzLCBcImVycm9yc1wiLCBtdXN0QmVBcnJheSk7XG4gICAgICAgICAgbGV0IHdhcm5pbmdzID0gZ2V0RmxhZyhyZXN1bHQsIGtleXMsIFwid2FybmluZ3NcIiwgbXVzdEJlQXJyYXkpO1xuICAgICAgICAgIGNoZWNrRm9ySW52YWxpZEZsYWdzKFxuICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAga2V5cyxcbiAgICAgICAgICAgIGBmcm9tIG9uU3RhcnQoKSBjYWxsYmFjayBpbiBwbHVnaW4gJHtxdW90ZShuYW1lKX1gLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoZXJyb3JzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyEucHVzaChcbiAgICAgICAgICAgICAgLi4uc2FuaXRpemVNZXNzYWdlcyhlcnJvcnMsIFwiZXJyb3JzXCIsIGRldGFpbHMsIG5hbWUsIHVuZGVmaW5lZCksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAod2FybmluZ3MgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmVzcG9uc2Uud2FybmluZ3MhLnB1c2goXG4gICAgICAgICAgICAgIC4uLnNhbml0aXplTWVzc2FnZXMoXG4gICAgICAgICAgICAgICAgd2FybmluZ3MsXG4gICAgICAgICAgICAgICAgXCJ3YXJuaW5nc1wiLFxuICAgICAgICAgICAgICAgIGRldGFpbHMsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXNwb25zZS5lcnJvcnMhLnB1c2goXG4gICAgICAgICAgZXh0cmFjdEVycm9yTWVzc2FnZVY4KGUsIHN0cmVhbUluLCBkZXRhaWxzLCBub3RlICYmIG5vdGUoKSwgbmFtZSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSkpO1xuICAgIHNlbmRSZXNwb25zZShpZCwgcmVzcG9uc2UgYXMgYW55KTtcbiAgfTtcblxuICByZXF1ZXN0Q2FsbGJhY2tzW1wib24tcmVzb2x2ZVwiXSA9IGFzeW5jIChcbiAgICBpZCxcbiAgICByZXF1ZXN0OiBwcm90b2NvbC5PblJlc29sdmVSZXF1ZXN0LFxuICApID0+IHtcbiAgICBsZXQgcmVzcG9uc2U6IHByb3RvY29sLk9uUmVzb2x2ZVJlc3BvbnNlID0ge30sIG5hbWUgPSBcIlwiLCBjYWxsYmFjaywgbm90ZTtcbiAgICBmb3IgKGxldCBpZCBvZiByZXF1ZXN0Lmlkcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgKHsgbmFtZSwgY2FsbGJhY2ssIG5vdGUgfSA9IG9uUmVzb2x2ZUNhbGxiYWNrc1tpZF0pO1xuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbGJhY2soe1xuICAgICAgICAgIHBhdGg6IHJlcXVlc3QucGF0aCxcbiAgICAgICAgICBpbXBvcnRlcjogcmVxdWVzdC5pbXBvcnRlcixcbiAgICAgICAgICBuYW1lc3BhY2U6IHJlcXVlc3QubmFtZXNwYWNlLFxuICAgICAgICAgIHJlc29sdmVEaXI6IHJlcXVlc3QucmVzb2x2ZURpcixcbiAgICAgICAgICBraW5kOiByZXF1ZXN0LmtpbmQsXG4gICAgICAgICAgcGx1Z2luRGF0YTogZGV0YWlscy5sb2FkKHJlcXVlc3QucGx1Z2luRGF0YSksXG4gICAgICAgICAgd2l0aDogcmVxdWVzdC53aXRoLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgRXhwZWN0ZWQgb25SZXNvbHZlKCkgY2FsbGJhY2sgaW4gcGx1Z2luICR7XG4gICAgICAgICAgICAgICAgcXVvdGUobmFtZSlcbiAgICAgICAgICAgICAgfSB0byByZXR1cm4gYW4gb2JqZWN0YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBrZXlzOiBPcHRpb25LZXlzID0ge307XG4gICAgICAgICAgbGV0IHBsdWdpbk5hbWUgPSBnZXRGbGFnKHJlc3VsdCwga2V5cywgXCJwbHVnaW5OYW1lXCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgICAgbGV0IHBhdGggPSBnZXRGbGFnKHJlc3VsdCwga2V5cywgXCJwYXRoXCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgICAgbGV0IG5hbWVzcGFjZSA9IGdldEZsYWcocmVzdWx0LCBrZXlzLCBcIm5hbWVzcGFjZVwiLCBtdXN0QmVTdHJpbmcpO1xuICAgICAgICAgIGxldCBzdWZmaXggPSBnZXRGbGFnKHJlc3VsdCwga2V5cywgXCJzdWZmaXhcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgICBsZXQgZXh0ZXJuYWwgPSBnZXRGbGFnKHJlc3VsdCwga2V5cywgXCJleHRlcm5hbFwiLCBtdXN0QmVCb29sZWFuKTtcbiAgICAgICAgICBsZXQgc2lkZUVmZmVjdHMgPSBnZXRGbGFnKHJlc3VsdCwga2V5cywgXCJzaWRlRWZmZWN0c1wiLCBtdXN0QmVCb29sZWFuKTtcbiAgICAgICAgICBsZXQgcGx1Z2luRGF0YSA9IGdldEZsYWcocmVzdWx0LCBrZXlzLCBcInBsdWdpbkRhdGFcIiwgY2FuQmVBbnl0aGluZyk7XG4gICAgICAgICAgbGV0IGVycm9ycyA9IGdldEZsYWcocmVzdWx0LCBrZXlzLCBcImVycm9yc1wiLCBtdXN0QmVBcnJheSk7XG4gICAgICAgICAgbGV0IHdhcm5pbmdzID0gZ2V0RmxhZyhyZXN1bHQsIGtleXMsIFwid2FybmluZ3NcIiwgbXVzdEJlQXJyYXkpO1xuICAgICAgICAgIGxldCB3YXRjaEZpbGVzID0gZ2V0RmxhZyhyZXN1bHQsIGtleXMsIFwid2F0Y2hGaWxlc1wiLCBtdXN0QmVBcnJheSk7XG4gICAgICAgICAgbGV0IHdhdGNoRGlycyA9IGdldEZsYWcocmVzdWx0LCBrZXlzLCBcIndhdGNoRGlyc1wiLCBtdXN0QmVBcnJheSk7XG4gICAgICAgICAgY2hlY2tGb3JJbnZhbGlkRmxhZ3MoXG4gICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgICBrZXlzLFxuICAgICAgICAgICAgYGZyb20gb25SZXNvbHZlKCkgY2FsbGJhY2sgaW4gcGx1Z2luICR7cXVvdGUobmFtZSl9YCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmVzcG9uc2UuaWQgPSBpZDtcbiAgICAgICAgICBpZiAocGx1Z2luTmFtZSAhPSBudWxsKSByZXNwb25zZS5wbHVnaW5OYW1lID0gcGx1Z2luTmFtZTtcbiAgICAgICAgICBpZiAocGF0aCAhPSBudWxsKSByZXNwb25zZS5wYXRoID0gcGF0aDtcbiAgICAgICAgICBpZiAobmFtZXNwYWNlICE9IG51bGwpIHJlc3BvbnNlLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICAgICAgICBpZiAoc3VmZml4ICE9IG51bGwpIHJlc3BvbnNlLnN1ZmZpeCA9IHN1ZmZpeDtcbiAgICAgICAgICBpZiAoZXh0ZXJuYWwgIT0gbnVsbCkgcmVzcG9uc2UuZXh0ZXJuYWwgPSBleHRlcm5hbDtcbiAgICAgICAgICBpZiAoc2lkZUVmZmVjdHMgIT0gbnVsbCkgcmVzcG9uc2Uuc2lkZUVmZmVjdHMgPSBzaWRlRWZmZWN0cztcbiAgICAgICAgICBpZiAocGx1Z2luRGF0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXNwb25zZS5wbHVnaW5EYXRhID0gZGV0YWlscy5zdG9yZShwbHVnaW5EYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVycm9ycyAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSBzYW5pdGl6ZU1lc3NhZ2VzKFxuICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgIFwiZXJyb3JzXCIsXG4gICAgICAgICAgICAgIGRldGFpbHMsXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh3YXJuaW5ncyAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXNwb25zZS53YXJuaW5ncyA9IHNhbml0aXplTWVzc2FnZXMoXG4gICAgICAgICAgICAgIHdhcm5pbmdzLFxuICAgICAgICAgICAgICBcIndhcm5pbmdzXCIsXG4gICAgICAgICAgICAgIGRldGFpbHMsXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh3YXRjaEZpbGVzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLndhdGNoRmlsZXMgPSBzYW5pdGl6ZVN0cmluZ0FycmF5KHdhdGNoRmlsZXMsIFwid2F0Y2hGaWxlc1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHdhdGNoRGlycyAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXNwb25zZS53YXRjaERpcnMgPSBzYW5pdGl6ZVN0cmluZ0FycmF5KHdhdGNoRGlycywgXCJ3YXRjaERpcnNcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlc3BvbnNlID0ge1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIGVycm9yczogW1xuICAgICAgICAgICAgZXh0cmFjdEVycm9yTWVzc2FnZVY4KGUsIHN0cmVhbUluLCBkZXRhaWxzLCBub3RlICYmIG5vdGUoKSwgbmFtZSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHNlbmRSZXNwb25zZShpZCwgcmVzcG9uc2UgYXMgYW55KTtcbiAgfTtcblxuICByZXF1ZXN0Q2FsbGJhY2tzW1wib24tbG9hZFwiXSA9IGFzeW5jIChpZCwgcmVxdWVzdDogcHJvdG9jb2wuT25Mb2FkUmVxdWVzdCkgPT4ge1xuICAgIGxldCByZXNwb25zZTogcHJvdG9jb2wuT25Mb2FkUmVzcG9uc2UgPSB7fSwgbmFtZSA9IFwiXCIsIGNhbGxiYWNrLCBub3RlO1xuICAgIGZvciAobGV0IGlkIG9mIHJlcXVlc3QuaWRzKSB7XG4gICAgICB0cnkge1xuICAgICAgICAoeyBuYW1lLCBjYWxsYmFjaywgbm90ZSB9ID0gb25Mb2FkQ2FsbGJhY2tzW2lkXSk7XG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsYmFjayh7XG4gICAgICAgICAgcGF0aDogcmVxdWVzdC5wYXRoLFxuICAgICAgICAgIG5hbWVzcGFjZTogcmVxdWVzdC5uYW1lc3BhY2UsXG4gICAgICAgICAgc3VmZml4OiByZXF1ZXN0LnN1ZmZpeCxcbiAgICAgICAgICBwbHVnaW5EYXRhOiBkZXRhaWxzLmxvYWQocmVxdWVzdC5wbHVnaW5EYXRhKSxcbiAgICAgICAgICB3aXRoOiByZXF1ZXN0LndpdGgsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBFeHBlY3RlZCBvbkxvYWQoKSBjYWxsYmFjayBpbiBwbHVnaW4gJHtcbiAgICAgICAgICAgICAgICBxdW90ZShuYW1lKVxuICAgICAgICAgICAgICB9IHRvIHJldHVybiBhbiBvYmplY3RgLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IGtleXM6IE9wdGlvbktleXMgPSB7fTtcbiAgICAgICAgICBsZXQgcGx1Z2luTmFtZSA9IGdldEZsYWcocmVzdWx0LCBrZXlzLCBcInBsdWdpbk5hbWVcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICAgICAgICBsZXQgY29udGVudHMgPSBnZXRGbGFnKFxuICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAga2V5cyxcbiAgICAgICAgICAgIFwiY29udGVudHNcIixcbiAgICAgICAgICAgIG11c3RCZVN0cmluZ09yVWludDhBcnJheSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGxldCByZXNvbHZlRGlyID0gZ2V0RmxhZyhyZXN1bHQsIGtleXMsIFwicmVzb2x2ZURpclwiLCBtdXN0QmVTdHJpbmcpO1xuICAgICAgICAgIGxldCBwbHVnaW5EYXRhID0gZ2V0RmxhZyhyZXN1bHQsIGtleXMsIFwicGx1Z2luRGF0YVwiLCBjYW5CZUFueXRoaW5nKTtcbiAgICAgICAgICBsZXQgbG9hZGVyID0gZ2V0RmxhZyhyZXN1bHQsIGtleXMsIFwibG9hZGVyXCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgICAgbGV0IGVycm9ycyA9IGdldEZsYWcocmVzdWx0LCBrZXlzLCBcImVycm9yc1wiLCBtdXN0QmVBcnJheSk7XG4gICAgICAgICAgbGV0IHdhcm5pbmdzID0gZ2V0RmxhZyhyZXN1bHQsIGtleXMsIFwid2FybmluZ3NcIiwgbXVzdEJlQXJyYXkpO1xuICAgICAgICAgIGxldCB3YXRjaEZpbGVzID0gZ2V0RmxhZyhyZXN1bHQsIGtleXMsIFwid2F0Y2hGaWxlc1wiLCBtdXN0QmVBcnJheSk7XG4gICAgICAgICAgbGV0IHdhdGNoRGlycyA9IGdldEZsYWcocmVzdWx0LCBrZXlzLCBcIndhdGNoRGlyc1wiLCBtdXN0QmVBcnJheSk7XG4gICAgICAgICAgY2hlY2tGb3JJbnZhbGlkRmxhZ3MoXG4gICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgICBrZXlzLFxuICAgICAgICAgICAgYGZyb20gb25Mb2FkKCkgY2FsbGJhY2sgaW4gcGx1Z2luICR7cXVvdGUobmFtZSl9YCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmVzcG9uc2UuaWQgPSBpZDtcbiAgICAgICAgICBpZiAocGx1Z2luTmFtZSAhPSBudWxsKSByZXNwb25zZS5wbHVnaW5OYW1lID0gcGx1Z2luTmFtZTtcbiAgICAgICAgICBpZiAoY29udGVudHMgaW5zdGFuY2VvZiBVaW50OEFycmF5KSByZXNwb25zZS5jb250ZW50cyA9IGNvbnRlbnRzO1xuICAgICAgICAgIGVsc2UgaWYgKGNvbnRlbnRzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLmNvbnRlbnRzID0gcHJvdG9jb2wuZW5jb2RlVVRGOChjb250ZW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXNvbHZlRGlyICE9IG51bGwpIHJlc3BvbnNlLnJlc29sdmVEaXIgPSByZXNvbHZlRGlyO1xuICAgICAgICAgIGlmIChwbHVnaW5EYXRhICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLnBsdWdpbkRhdGEgPSBkZXRhaWxzLnN0b3JlKHBsdWdpbkRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobG9hZGVyICE9IG51bGwpIHJlc3BvbnNlLmxvYWRlciA9IGxvYWRlcjtcbiAgICAgICAgICBpZiAoZXJyb3JzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IHNhbml0aXplTWVzc2FnZXMoXG4gICAgICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICAgICAgXCJlcnJvcnNcIixcbiAgICAgICAgICAgICAgZGV0YWlscyxcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHdhcm5pbmdzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLndhcm5pbmdzID0gc2FuaXRpemVNZXNzYWdlcyhcbiAgICAgICAgICAgICAgd2FybmluZ3MsXG4gICAgICAgICAgICAgIFwid2FybmluZ3NcIixcbiAgICAgICAgICAgICAgZGV0YWlscyxcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHdhdGNoRmlsZXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmVzcG9uc2Uud2F0Y2hGaWxlcyA9IHNhbml0aXplU3RyaW5nQXJyYXkod2F0Y2hGaWxlcywgXCJ3YXRjaEZpbGVzXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAod2F0Y2hEaXJzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLndhdGNoRGlycyA9IHNhbml0aXplU3RyaW5nQXJyYXkod2F0Y2hEaXJzLCBcIndhdGNoRGlyc1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgZXJyb3JzOiBbXG4gICAgICAgICAgICBleHRyYWN0RXJyb3JNZXNzYWdlVjgoZSwgc3RyZWFtSW4sIGRldGFpbHMsIG5vdGUgJiYgbm90ZSgpLCBuYW1lKSxcbiAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgc2VuZFJlc3BvbnNlKGlkLCByZXNwb25zZSBhcyBhbnkpO1xuICB9O1xuXG4gIGxldCBydW5PbkVuZENhbGxiYWNrczogUnVuT25FbmRDYWxsYmFja3MgPSAocmVzdWx0LCBkb25lKSA9PiBkb25lKFtdLCBbXSk7XG5cbiAgaWYgKG9uRW5kQ2FsbGJhY2tzLmxlbmd0aCA+IDApIHtcbiAgICBydW5PbkVuZENhbGxiYWNrcyA9IChyZXN1bHQsIGRvbmUpID0+IHtcbiAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9uRW5kRXJyb3JzOiB0eXBlcy5NZXNzYWdlW10gPSBbXTtcbiAgICAgICAgY29uc3Qgb25FbmRXYXJuaW5nczogdHlwZXMuTWVzc2FnZVtdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCB7IG5hbWUsIGNhbGxiYWNrLCBub3RlIH0gb2Ygb25FbmRDYWxsYmFja3MpIHtcbiAgICAgICAgICBsZXQgbmV3RXJyb3JzOiB0eXBlcy5NZXNzYWdlW10gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IG5ld1dhcm5pbmdzOiB0eXBlcy5NZXNzYWdlW10gfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCBjYWxsYmFjayhyZXN1bHQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgYEV4cGVjdGVkIG9uRW5kKCkgY2FsbGJhY2sgaW4gcGx1Z2luICR7XG4gICAgICAgICAgICAgICAgICAgIHF1b3RlKG5hbWUpXG4gICAgICAgICAgICAgICAgICB9IHRvIHJldHVybiBhbiBvYmplY3RgLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGV0IGtleXM6IE9wdGlvbktleXMgPSB7fTtcbiAgICAgICAgICAgICAgbGV0IGVycm9ycyA9IGdldEZsYWcodmFsdWUsIGtleXMsIFwiZXJyb3JzXCIsIG11c3RCZUFycmF5KTtcbiAgICAgICAgICAgICAgbGV0IHdhcm5pbmdzID0gZ2V0RmxhZyh2YWx1ZSwga2V5cywgXCJ3YXJuaW5nc1wiLCBtdXN0QmVBcnJheSk7XG4gICAgICAgICAgICAgIGNoZWNrRm9ySW52YWxpZEZsYWdzKFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIGtleXMsXG4gICAgICAgICAgICAgICAgYGZyb20gb25FbmQoKSBjYWxsYmFjayBpbiBwbHVnaW4gJHtxdW90ZShuYW1lKX1gLFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIGlmIChlcnJvcnMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG5ld0Vycm9ycyA9IHNhbml0aXplTWVzc2FnZXMoXG4gICAgICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgICAgICBcImVycm9yc1wiLFxuICAgICAgICAgICAgICAgICAgZGV0YWlscyxcbiAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAod2FybmluZ3MgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG5ld1dhcm5pbmdzID0gc2FuaXRpemVNZXNzYWdlcyhcbiAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLFxuICAgICAgICAgICAgICAgICAgXCJ3YXJuaW5nc1wiLFxuICAgICAgICAgICAgICAgICAgZGV0YWlscyxcbiAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIG5ld0Vycm9ycyA9IFtcbiAgICAgICAgICAgICAgZXh0cmFjdEVycm9yTWVzc2FnZVY4KGUsIHN0cmVhbUluLCBkZXRhaWxzLCBub3RlICYmIG5vdGUoKSwgbmFtZSksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFRyeSBhZGRpbmcgdGhlIGVycm9ycyBhbmQgd2FybmluZ3MgdG8gdGhlIHJlc3VsdCBvYmplY3QsIGJ1dFxuICAgICAgICAgIC8vIGNvbnRpbnVlIGlmIHNvbWV0aGluZyBnb2VzIHdyb25nLiBJZiBlcnJvci1yZXBvcnRpbmcgaGFzIGVycm9yc1xuICAgICAgICAgIC8vIHRoZW4gbm90aGluZyBjYW4gaGVscCB1cy4uLlxuICAgICAgICAgIGlmIChuZXdFcnJvcnMpIHtcbiAgICAgICAgICAgIG9uRW5kRXJyb3JzLnB1c2goLi4ubmV3RXJyb3JzKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJlc3VsdC5lcnJvcnMucHVzaCguLi5uZXdFcnJvcnMpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXdXYXJuaW5ncykge1xuICAgICAgICAgICAgb25FbmRXYXJuaW5ncy5wdXNoKC4uLm5ld1dhcm5pbmdzKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJlc3VsdC53YXJuaW5ncy5wdXNoKC4uLm5ld1dhcm5pbmdzKTtcbiAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRvbmUob25FbmRFcnJvcnMsIG9uRW5kV2FybmluZ3MpO1xuICAgICAgfSkoKTtcbiAgICB9O1xuICB9XG5cbiAgbGV0IHNjaGVkdWxlT25EaXNwb3NlQ2FsbGJhY2tzID0gKCk6IHZvaWQgPT4ge1xuICAgIC8vIFJ1biBlYWNoIFwib25EaXNwb3NlXCIgY2FsbGJhY2sgd2l0aCBpdHMgb3duIGNhbGwgc3RhY2tcbiAgICBmb3IgKGNvbnN0IGNiIG9mIG9uRGlzcG9zZUNhbGxiYWNrcykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiBjYigpLCAwKTtcbiAgICB9XG4gIH07XG5cbiAgaXNTZXR1cERvbmUgPSB0cnVlO1xuICByZXR1cm4ge1xuICAgIG9rOiB0cnVlLFxuICAgIHJlcXVlc3RQbHVnaW5zLFxuICAgIHJ1bk9uRW5kQ2FsbGJhY2tzLFxuICAgIHNjaGVkdWxlT25EaXNwb3NlQ2FsbGJhY2tzLFxuICB9O1xufTtcblxuLy8gVGhpcyBzdG9yZXMgSmF2YVNjcmlwdCBvYmplY3RzIG9uIHRoZSBKYXZhU2NyaXB0IHNpZGUgYW5kIHRlbXBvcmFyaWx5XG4vLyBzdWJzdGl0dXRlcyB0aGVtIHdpdGggYW4gaW50ZWdlciB0aGF0IGNhbiBiZSBwYXNzZWQgdGhyb3VnaCB0aGUgR28gc2lkZVxuLy8gYW5kIGJhY2suIFRoYXQgd2F5IHdlIGNhbiBhc3NvY2lhdGUgSmF2YVNjcmlwdCBvYmplY3RzIHdpdGggR28gb2JqZWN0c1xuLy8gZXZlbiBpZiB0aGUgSmF2YVNjcmlwdCBvYmplY3RzIGFyZW4ndCBzZXJpYWxpemFibGUuIEFuZCB3ZSBhbHNvIGF2b2lkXG4vLyB0aGUgb3ZlcmhlYWQgb2Ygc2VyaWFsaXppbmcgbGFyZ2UgSmF2YVNjcmlwdCBvYmplY3RzLlxuaW50ZXJmYWNlIE9iamVjdFN0YXNoIHtcbiAgbG9hZChpZDogbnVtYmVyKTogYW55O1xuICBzdG9yZSh2YWx1ZTogYW55KTogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVPYmplY3RTdGFzaCgpOiBPYmplY3RTdGFzaCB7XG4gIGNvbnN0IG1hcCA9IG5ldyBNYXA8bnVtYmVyLCBhbnk+KCk7XG4gIGxldCBuZXh0SUQgPSAwO1xuICByZXR1cm4ge1xuICAgIGxvYWQoaWQpIHtcbiAgICAgIHJldHVybiBtYXAuZ2V0KGlkKTtcbiAgICB9LFxuICAgIHN0b3JlKHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPT09IHZvaWQgMCkgcmV0dXJuIC0xO1xuICAgICAgY29uc3QgaWQgPSBuZXh0SUQrKztcbiAgICAgIG1hcC5zZXQoaWQsIHZhbHVlKTtcbiAgICAgIHJldHVybiBpZDtcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBleHRyYWN0Q2FsbGVyVjgoXG4gIGU6IEVycm9yLFxuICBzdHJlYW1JbjogU3RyZWFtSW4sXG4gIGlkZW50OiBzdHJpbmcsXG4pOiAoKSA9PiB0eXBlcy5Ob3RlIHwgdW5kZWZpbmVkIHtcbiAgbGV0IG5vdGU6IHR5cGVzLk5vdGUgfCB1bmRlZmluZWQ7XG4gIGxldCB0cmllZCA9IGZhbHNlO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGlmICh0cmllZCkgcmV0dXJuIG5vdGU7XG4gICAgdHJpZWQgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBsZXQgbGluZXMgPSAoZS5zdGFjayArIFwiXCIpLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgbGluZXMuc3BsaWNlKDEsIDEpO1xuICAgICAgbGV0IGxvY2F0aW9uID0gcGFyc2VTdGFja0xpbmVzVjgoc3RyZWFtSW4sIGxpbmVzLCBpZGVudCk7XG4gICAgICBpZiAobG9jYXRpb24pIHtcbiAgICAgICAgbm90ZSA9IHsgdGV4dDogZS5tZXNzYWdlLCBsb2NhdGlvbiB9O1xuICAgICAgICByZXR1cm4gbm90ZTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RFcnJvck1lc3NhZ2VWOChcbiAgZTogYW55LFxuICBzdHJlYW1JbjogU3RyZWFtSW4sXG4gIHN0YXNoOiBPYmplY3RTdGFzaCB8IG51bGwsXG4gIG5vdGU6IHR5cGVzLk5vdGUgfCB1bmRlZmluZWQsXG4gIHBsdWdpbk5hbWU6IHN0cmluZyxcbik6IHR5cGVzLk1lc3NhZ2Uge1xuICBsZXQgdGV4dCA9IFwiSW50ZXJuYWwgZXJyb3JcIjtcbiAgbGV0IGxvY2F0aW9uOiB0eXBlcy5Mb2NhdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIHRyeSB7XG4gICAgdGV4dCA9ICgoZSAmJiBlLm1lc3NhZ2UpIHx8IGUpICsgXCJcIjtcbiAgfSBjYXRjaCB7XG4gIH1cblxuICAvLyBPcHRpb25hbGx5IGF0dGVtcHQgdG8gZXh0cmFjdCB0aGUgZmlsZSBmcm9tIHRoZSBzdGFjayB0cmFjZSwgd29ya3MgaW4gVjgvbm9kZVxuICB0cnkge1xuICAgIGxvY2F0aW9uID0gcGFyc2VTdGFja0xpbmVzVjgoc3RyZWFtSW4sIChlLnN0YWNrICsgXCJcIikuc3BsaXQoXCJcXG5cIiksIFwiXCIpO1xuICB9IGNhdGNoIHtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaWQ6IFwiXCIsXG4gICAgcGx1Z2luTmFtZSxcbiAgICB0ZXh0LFxuICAgIGxvY2F0aW9uLFxuICAgIG5vdGVzOiBub3RlID8gW25vdGVdIDogW10sXG4gICAgZGV0YWlsOiBzdGFzaCA/IHN0YXNoLnN0b3JlKGUpIDogLTEsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlU3RhY2tMaW5lc1Y4KFxuICBzdHJlYW1JbjogU3RyZWFtSW4sXG4gIGxpbmVzOiBzdHJpbmdbXSxcbiAgaWRlbnQ6IHN0cmluZyxcbik6IHR5cGVzLkxvY2F0aW9uIHwgbnVsbCB7XG4gIGxldCBhdCA9IFwiICAgIGF0IFwiO1xuXG4gIC8vIENoZWNrIHRvIHNlZSBpZiB0aGlzIGxvb2tzIGxpa2UgYSBWOCBzdGFjayB0cmFjZVxuICBpZiAoXG4gICAgc3RyZWFtSW4ucmVhZEZpbGVTeW5jICYmICFsaW5lc1swXS5zdGFydHNXaXRoKGF0KSAmJiBsaW5lc1sxXS5zdGFydHNXaXRoKGF0KVxuICApIHtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbGluZSA9IGxpbmVzW2ldO1xuICAgICAgaWYgKCFsaW5lLnN0YXJ0c1dpdGgoYXQpKSBjb250aW51ZTtcbiAgICAgIGxpbmUgPSBsaW5lLnNsaWNlKGF0Lmxlbmd0aCk7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAvLyBVbndyYXAgYSBmdW5jdGlvbiBuYW1lXG4gICAgICAgIGxldCBtYXRjaCA9IC9eKD86bmV3IHxhc3luYyApP1xcUysgXFwoKC4qKVxcKSQvLmV4ZWMobGluZSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGxpbmUgPSBtYXRjaFsxXTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVud3JhcCBhbiBldmFsIHdyYXBwZXJcbiAgICAgICAgbWF0Y2ggPSAvXmV2YWwgYXQgXFxTKyBcXCgoLiopXFwpKD86LCBcXFMrOlxcZCs6XFxkKyk/JC8uZXhlYyhsaW5lKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgbGluZSA9IG1hdGNoWzFdO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWF0Y2ggb24gdGhlIGZpbGUgbG9jYXRpb25cbiAgICAgICAgbWF0Y2ggPSAvXihcXFMrKTooXFxkKyk6KFxcZCspJC8uZXhlYyhsaW5lKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgbGV0IGNvbnRlbnRzO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb250ZW50cyA9IHN0cmVhbUluLnJlYWRGaWxlU3luYyhtYXRjaFsxXSwgXCJ1dGY4XCIpO1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBsaW5lVGV4dCA9XG4gICAgICAgICAgICBjb250ZW50cy5zcGxpdCgvXFxyXFxufFxccnxcXG58XFx1MjAyOHxcXHUyMDI5LylbK21hdGNoWzJdIC0gMV0gfHwgXCJcIjtcbiAgICAgICAgICBsZXQgY29sdW1uID0gK21hdGNoWzNdIC0gMTtcbiAgICAgICAgICBsZXQgbGVuZ3RoID0gbGluZVRleHQuc2xpY2UoY29sdW1uLCBjb2x1bW4gKyBpZGVudC5sZW5ndGgpID09PSBpZGVudFxuICAgICAgICAgICAgPyBpZGVudC5sZW5ndGhcbiAgICAgICAgICAgIDogMDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsZTogbWF0Y2hbMV0sXG4gICAgICAgICAgICBuYW1lc3BhY2U6IFwiZmlsZVwiLFxuICAgICAgICAgICAgbGluZTogK21hdGNoWzJdLFxuICAgICAgICAgICAgY29sdW1uOiBwcm90b2NvbC5lbmNvZGVVVEY4KGxpbmVUZXh0LnNsaWNlKDAsIGNvbHVtbikpLmxlbmd0aCxcbiAgICAgICAgICAgIGxlbmd0aDogcHJvdG9jb2wuZW5jb2RlVVRGOChsaW5lVGV4dC5zbGljZShjb2x1bW4sIGNvbHVtbiArIGxlbmd0aCkpXG4gICAgICAgICAgICAgIC5sZW5ndGgsXG4gICAgICAgICAgICBsaW5lVGV4dDogbGluZVRleHQgKyBcIlxcblwiICsgbGluZXMuc2xpY2UoMSkuam9pbihcIlxcblwiKSxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb246IFwiXCIsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZmFpbHVyZUVycm9yV2l0aExvZyhcbiAgdGV4dDogc3RyaW5nLFxuICBlcnJvcnM6IHR5cGVzLk1lc3NhZ2VbXSxcbiAgd2FybmluZ3M6IHR5cGVzLk1lc3NhZ2VbXSxcbik6IHR5cGVzLkJ1aWxkRmFpbHVyZSB7XG4gIGxldCBsaW1pdCA9IDU7XG4gIHRleHQgKz0gZXJyb3JzLmxlbmd0aCA8IDFcbiAgICA/IFwiXCJcbiAgICA6IGAgd2l0aCAke2Vycm9ycy5sZW5ndGh9IGVycm9yJHtlcnJvcnMubGVuZ3RoIDwgMiA/IFwiXCIgOiBcInNcIn06YCArXG4gICAgICBlcnJvcnMuc2xpY2UoMCwgbGltaXQgKyAxKS5tYXAoKGUsIGkpID0+IHtcbiAgICAgICAgaWYgKGkgPT09IGxpbWl0KSByZXR1cm4gXCJcXG4uLi5cIjtcbiAgICAgICAgaWYgKCFlLmxvY2F0aW9uKSByZXR1cm4gYFxcbmVycm9yOiAke2UudGV4dH1gO1xuICAgICAgICBsZXQgeyBmaWxlLCBsaW5lLCBjb2x1bW4gfSA9IGUubG9jYXRpb247XG4gICAgICAgIGxldCBwbHVnaW5UZXh0ID0gZS5wbHVnaW5OYW1lID8gYFtwbHVnaW46ICR7ZS5wbHVnaW5OYW1lfV0gYCA6IFwiXCI7XG4gICAgICAgIHJldHVybiBgXFxuJHtmaWxlfToke2xpbmV9OiR7Y29sdW1ufTogRVJST1I6ICR7cGx1Z2luVGV4dH0ke2UudGV4dH1gO1xuICAgICAgfSkuam9pbihcIlwiKTtcbiAgbGV0IGVycm9yOiBhbnkgPSBuZXcgRXJyb3IodGV4dCk7XG5cbiAgLy8gVXNlIGEgZ2V0dGVyIGluc3RlYWQgb2YgYSBwbGFpbiBwcm9wZXJ0eSBzbyB0aGF0IHdoZW4gdGhlIGVycm9yIGlzIHRocm93blxuICAvLyB3aXRob3V0IGJlaW5nIGNhdWdodCBhbmQgdGhlIG5vZGUgcHJvY2VzcyBleGl0cywgdGhlIGVycm9yIG9iamVjdHMgYXJlbid0XG4gIC8vIHByaW50ZWQuIFRoZSBlcnJvciBvYmplY3RzIGFyZSBwcmV0dHkgYmlnIGFuZCBub3QgaGVscGZ1bCBiZWNhdXNlIGEpIGVzYnVpbGRcbiAgLy8gYWxyZWFkeSBwcmludHMgZXJyb3JzIHRvIHN0ZGVyciBieSBkZWZhdWx0IGFuZCBiKSB0aGUgZXJyb3Igc3VtbWFyeSBhbHJlYWR5XG4gIC8vIGhhcyBhIG1vcmUgaGVscGZ1bCBhYmJyZXZpYXRlZCBmb3JtIG9mIHRoZSBlcnJvciBtZXNzYWdlcy5cbiAgZm9yIChcbiAgICBjb25zdCBba2V5LCB2YWx1ZV0gb2YgW1tcImVycm9yc1wiLCBlcnJvcnNdLCBbXCJ3YXJuaW5nc1wiLCB3YXJuaW5nc11dIGFzIGNvbnN0XG4gICkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnJvciwga2V5LCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB2YWx1ZSxcbiAgICAgIHNldDogKHZhbHVlKSA9PlxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyb3IsIGtleSwge1xuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBlcnJvcjtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZURldGFpbHNJbk1lc3NhZ2VzKFxuICBtZXNzYWdlczogdHlwZXMuTWVzc2FnZVtdLFxuICBzdGFzaDogT2JqZWN0U3Rhc2gsXG4pOiB0eXBlcy5NZXNzYWdlW10ge1xuICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgbWVzc2FnZXMpIHtcbiAgICBtZXNzYWdlLmRldGFpbCA9IHN0YXNoLmxvYWQobWVzc2FnZS5kZXRhaWwpO1xuICB9XG4gIHJldHVybiBtZXNzYWdlcztcbn1cblxuZnVuY3Rpb24gc2FuaXRpemVMb2NhdGlvbihcbiAgbG9jYXRpb246IHR5cGVzLlBhcnRpYWxNZXNzYWdlW1wibG9jYXRpb25cIl0sXG4gIHdoZXJlOiBzdHJpbmcsXG4gIHRlcm1pbmFsV2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZCxcbik6IHR5cGVzLk1lc3NhZ2VbXCJsb2NhdGlvblwiXSB7XG4gIGlmIChsb2NhdGlvbiA9PSBudWxsKSByZXR1cm4gbnVsbDtcblxuICBsZXQga2V5czogT3B0aW9uS2V5cyA9IHt9O1xuICBsZXQgZmlsZSA9IGdldEZsYWcobG9jYXRpb24sIGtleXMsIFwiZmlsZVwiLCBtdXN0QmVTdHJpbmcpO1xuICBsZXQgbmFtZXNwYWNlID0gZ2V0RmxhZyhsb2NhdGlvbiwga2V5cywgXCJuYW1lc3BhY2VcIiwgbXVzdEJlU3RyaW5nKTtcbiAgbGV0IGxpbmUgPSBnZXRGbGFnKGxvY2F0aW9uLCBrZXlzLCBcImxpbmVcIiwgbXVzdEJlSW50ZWdlcik7XG4gIGxldCBjb2x1bW4gPSBnZXRGbGFnKGxvY2F0aW9uLCBrZXlzLCBcImNvbHVtblwiLCBtdXN0QmVJbnRlZ2VyKTtcbiAgbGV0IGxlbmd0aCA9IGdldEZsYWcobG9jYXRpb24sIGtleXMsIFwibGVuZ3RoXCIsIG11c3RCZUludGVnZXIpO1xuICBsZXQgbGluZVRleHQgPSBnZXRGbGFnKGxvY2F0aW9uLCBrZXlzLCBcImxpbmVUZXh0XCIsIG11c3RCZVN0cmluZyk7XG4gIGxldCBzdWdnZXN0aW9uID0gZ2V0RmxhZyhsb2NhdGlvbiwga2V5cywgXCJzdWdnZXN0aW9uXCIsIG11c3RCZVN0cmluZyk7XG4gIGNoZWNrRm9ySW52YWxpZEZsYWdzKGxvY2F0aW9uLCBrZXlzLCB3aGVyZSk7XG5cbiAgLy8gUGVyZm9ybWFuY2UgaGFjazogU29tZSBwZW9wbGUgcGFzcyBlbm9ybW91cyBtaW5pZmllZCBmaWxlcyBhcyB0aGUgbGluZVxuICAvLyB0ZXh0IHdpdGggYSBjb2x1bW4gbmVhciB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIGFuZCB0aGVuIGNvbXBsYWluXG4gIC8vIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBzbG93LiBUaGUgc2xvd25lc3MgY29tZXMgZnJvbSBzZXJpYWxpemluZyBhIGh1Z2VcbiAgLy8gc3RyaW5nLiBCdXQgdGhlIHZhc3QgbWFqb3JpdHkgb2YgdGhhdCBzdHJpbmcgaXMgdW5uZWNlc3NhcnkuIFRyeSB0b1xuICAvLyBkZXRlY3Qgd2hlbiB0aGlzIGlzIHRoZSBjYXNlIGFuZCB0cmltIHRoZSBzdHJpbmcgYmVmb3JlIHNlcmlhbGl6YXRpb25cbiAgLy8gdG8gYXZvaWQgdGhlIHBlcmZvcm1hbmNlIGhpdC4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZXZhbncvZXNidWlsZC9pc3N1ZXMvMzQ2N1xuICBpZiAobGluZVRleHQpIHtcbiAgICAvLyBUcnkgdG8gY29uc2VydmF0aXZlbHkgZ3Vlc3MgdGhlIG1heGltdW0gYW1vdW50IG9mIHJlbGV2YW50IHRleHRcbiAgICBjb25zdCByZWxldmFudEFTQ0lJID0gbGluZVRleHQuc2xpY2UoXG4gICAgICAwLFxuICAgICAgKGNvbHVtbiAmJiBjb2x1bW4gPiAwID8gY29sdW1uIDogMCkgK1xuICAgICAgICAobGVuZ3RoICYmIGxlbmd0aCA+IDAgPyBsZW5ndGggOiAwKSArXG4gICAgICAgICh0ZXJtaW5hbFdpZHRoICYmIHRlcm1pbmFsV2lkdGggPiAwID8gdGVybWluYWxXaWR0aCA6IDgwKSxcbiAgICApO1xuXG4gICAgLy8gTWFrZSBzdXJlIGl0J3MgQVNDSUkgKHNvIHRoZSBieXRlLW9yaWVudGVkIGNvbHVtbiBhbmQgbGVuZ3RoIHZhbHVlc1xuICAgIC8vIGFyZSBjb3JyZWN0KSBhbmQgdGhhdCB0aGVyZSBhcmUgbm8gbmV3bGluZXMgKHNvIHRoYXQgb3VyIGxvZ2dpbmcgY29kZVxuICAgIC8vIGRvZXNuJ3QgbG9vayBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcpXG4gICAgaWYgKCEvW1xceDdGLVxcdUZGRkZdLy50ZXN0KHJlbGV2YW50QVNDSUkpICYmICEvXFxuLy50ZXN0KGxpbmVUZXh0KSkge1xuICAgICAgbGluZVRleHQgPSByZWxldmFudEFTQ0lJO1xuICAgIH1cbiAgfVxuXG4gIC8vIE5vdGU6IFdlIGNvdWxkIHRlY2huaWNhbGx5IG1ha2UgdGhpcyBldmVuIGZhc3RlciBieSBtYWludGFpbmluZyB0d28gY29waWVzXG4gIC8vIG9mIHRoaXMgY29kZSwgb25lIGluIEdvIGFuZCBvbmUgaW4gVHlwZVNjcmlwdC4gQnV0IEknbSBub3QgZ29pbmcgdG8gZG8gdGhhdC5cbiAgLy8gVGhlIHBvaW50IG9mIHRoaXMgZnVuY3Rpb24gaXMgdG8gY2FsbCBpbnRvIHRoZSByZWFsIEdvIGNvZGUgdG8gZ2V0IHdoYXQgaXRcbiAgLy8gZG9lcy4gSWYgc29tZW9uZSB3YW50cyBhIEpTIHZlcnNpb24sIHRoZXkgY2FuIHBvcnQgaXQgdGhlbXNlbHZlcy5cblxuICByZXR1cm4ge1xuICAgIGZpbGU6IGZpbGUgfHwgXCJcIixcbiAgICBuYW1lc3BhY2U6IG5hbWVzcGFjZSB8fCBcIlwiLFxuICAgIGxpbmU6IGxpbmUgfHwgMCxcbiAgICBjb2x1bW46IGNvbHVtbiB8fCAwLFxuICAgIGxlbmd0aDogbGVuZ3RoIHx8IDAsXG4gICAgbGluZVRleHQ6IGxpbmVUZXh0IHx8IFwiXCIsXG4gICAgc3VnZ2VzdGlvbjogc3VnZ2VzdGlvbiB8fCBcIlwiLFxuICB9O1xufVxuXG5mdW5jdGlvbiBzYW5pdGl6ZU1lc3NhZ2VzKFxuICBtZXNzYWdlczogdHlwZXMuUGFydGlhbE1lc3NhZ2VbXSxcbiAgcHJvcGVydHk6IHN0cmluZyxcbiAgc3Rhc2g6IE9iamVjdFN0YXNoIHwgbnVsbCxcbiAgZmFsbGJhY2tQbHVnaW5OYW1lOiBzdHJpbmcsXG4gIHRlcm1pbmFsV2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZCxcbik6IHR5cGVzLk1lc3NhZ2VbXSB7XG4gIGxldCBtZXNzYWdlc0Nsb25lOiB0eXBlcy5NZXNzYWdlW10gPSBbXTtcbiAgbGV0IGluZGV4ID0gMDtcblxuICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgbWVzc2FnZXMpIHtcbiAgICBsZXQga2V5czogT3B0aW9uS2V5cyA9IHt9O1xuICAgIGxldCBpZCA9IGdldEZsYWcobWVzc2FnZSwga2V5cywgXCJpZFwiLCBtdXN0QmVTdHJpbmcpO1xuICAgIGxldCBwbHVnaW5OYW1lID0gZ2V0RmxhZyhtZXNzYWdlLCBrZXlzLCBcInBsdWdpbk5hbWVcIiwgbXVzdEJlU3RyaW5nKTtcbiAgICBsZXQgdGV4dCA9IGdldEZsYWcobWVzc2FnZSwga2V5cywgXCJ0ZXh0XCIsIG11c3RCZVN0cmluZyk7XG4gICAgbGV0IGxvY2F0aW9uID0gZ2V0RmxhZyhtZXNzYWdlLCBrZXlzLCBcImxvY2F0aW9uXCIsIG11c3RCZU9iamVjdE9yTnVsbCk7XG4gICAgbGV0IG5vdGVzID0gZ2V0RmxhZyhtZXNzYWdlLCBrZXlzLCBcIm5vdGVzXCIsIG11c3RCZUFycmF5KTtcbiAgICBsZXQgZGV0YWlsID0gZ2V0RmxhZyhtZXNzYWdlLCBrZXlzLCBcImRldGFpbFwiLCBjYW5CZUFueXRoaW5nKTtcbiAgICBsZXQgd2hlcmUgPSBgaW4gZWxlbWVudCAke2luZGV4fSBvZiBcIiR7cHJvcGVydHl9XCJgO1xuICAgIGNoZWNrRm9ySW52YWxpZEZsYWdzKG1lc3NhZ2UsIGtleXMsIHdoZXJlKTtcblxuICAgIGxldCBub3Rlc0Nsb25lOiB0eXBlcy5Ob3RlW10gPSBbXTtcbiAgICBpZiAobm90ZXMpIHtcbiAgICAgIGZvciAoY29uc3Qgbm90ZSBvZiBub3Rlcykge1xuICAgICAgICBsZXQgbm90ZUtleXM6IE9wdGlvbktleXMgPSB7fTtcbiAgICAgICAgbGV0IG5vdGVUZXh0ID0gZ2V0RmxhZyhub3RlLCBub3RlS2V5cywgXCJ0ZXh0XCIsIG11c3RCZVN0cmluZyk7XG4gICAgICAgIGxldCBub3RlTG9jYXRpb24gPSBnZXRGbGFnKFxuICAgICAgICAgIG5vdGUsXG4gICAgICAgICAgbm90ZUtleXMsXG4gICAgICAgICAgXCJsb2NhdGlvblwiLFxuICAgICAgICAgIG11c3RCZU9iamVjdE9yTnVsbCxcbiAgICAgICAgKTtcbiAgICAgICAgY2hlY2tGb3JJbnZhbGlkRmxhZ3Mobm90ZSwgbm90ZUtleXMsIHdoZXJlKTtcbiAgICAgICAgbm90ZXNDbG9uZS5wdXNoKHtcbiAgICAgICAgICB0ZXh0OiBub3RlVGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGxvY2F0aW9uOiBzYW5pdGl6ZUxvY2F0aW9uKG5vdGVMb2NhdGlvbiwgd2hlcmUsIHRlcm1pbmFsV2lkdGgpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtZXNzYWdlc0Nsb25lLnB1c2goe1xuICAgICAgaWQ6IGlkIHx8IFwiXCIsXG4gICAgICBwbHVnaW5OYW1lOiBwbHVnaW5OYW1lIHx8IGZhbGxiYWNrUGx1Z2luTmFtZSxcbiAgICAgIHRleHQ6IHRleHQgfHwgXCJcIixcbiAgICAgIGxvY2F0aW9uOiBzYW5pdGl6ZUxvY2F0aW9uKGxvY2F0aW9uLCB3aGVyZSwgdGVybWluYWxXaWR0aCksXG4gICAgICBub3Rlczogbm90ZXNDbG9uZSxcbiAgICAgIGRldGFpbDogc3Rhc2ggPyBzdGFzaC5zdG9yZShkZXRhaWwpIDogLTEsXG4gICAgfSk7XG4gICAgaW5kZXgrKztcbiAgfVxuXG4gIHJldHVybiBtZXNzYWdlc0Nsb25lO1xufVxuXG5mdW5jdGlvbiBzYW5pdGl6ZVN0cmluZ0FycmF5KHZhbHVlczogYW55W10sIHByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cXVvdGUocHJvcGVydHkpfSBtdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3NgKTtcbiAgICB9XG4gICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHNhbml0aXplU3RyaW5nTWFwKFxuICBtYXA6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIHByb3BlcnR5OiBzdHJpbmcsXG4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgZm9yIChjb25zdCBrZXkgaW4gbWFwKSB7XG4gICAgY29uc3QgdmFsdWUgPSBtYXBba2V5XTtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBrZXkgJHtxdW90ZShrZXkpfSBpbiBvYmplY3QgJHtxdW90ZShwcm9wZXJ0eSl9IG11c3QgYmUgYSBzdHJpbmdgLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T3V0cHV0RmlsZXMoXG4gIHsgcGF0aCwgY29udGVudHMsIGhhc2ggfTogcHJvdG9jb2wuQnVpbGRPdXRwdXRGaWxlLFxuKTogdHlwZXMuT3V0cHV0RmlsZSB7XG4gIC8vIFRoZSB0ZXh0IGlzIGxhemlseS1nZW5lcmF0ZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIElmIG5vIG9uZSBhc2tzIGZvclxuICAvLyBpdCwgdGhlbiBpdCBuZXZlciBuZWVkcyB0byBiZSBnZW5lcmF0ZWQuXG4gIGxldCB0ZXh0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcmV0dXJuIHtcbiAgICBwYXRoLFxuICAgIGNvbnRlbnRzLFxuICAgIGhhc2gsXG4gICAgZ2V0IHRleHQoKSB7XG4gICAgICAvLyBQZW9wbGUgd2FudCB0byBiZSBhYmxlIHRvIHNldCBcImNvbnRlbnRzXCIgYW5kIGhhdmUgZXNidWlsZCBhdXRvbWF0aWNhbGx5XG4gICAgICAvLyBkZXJpdmUgXCJ0ZXh0XCIgZm9yIHRoZW0sIHNvIGdyYWIgdGhlIGNvbnRlbnRzIG9mZiBvZiB0aGlzIG9iamVjdCBpbnN0ZWFkXG4gICAgICAvLyBvZiB1c2luZyBvdXIgb3JpZ2luYWwgdmFsdWUuXG4gICAgICBjb25zdCBiaW5hcnkgPSB0aGlzLmNvbnRlbnRzO1xuXG4gICAgICAvLyBUaGlzIGRlbGliZXJhdGVseSBkb2Vzbid0IGRvIGJpZGlyZWN0aW9uYWwgZGVyaXZhdGlvbiBiZWNhdXNlIHRoYXQgY291bGRcbiAgICAgIC8vIHJlc3VsdCBpbiB0aGUgaW5lZmZpY2llbmN5LiBGb3IgZXhhbXBsZSwgaWYgd2UgZGlkIGRvIHRoaXMgYW5kIHRoZW4geW91XG4gICAgICAvLyBzZXQgXCJjb250ZW50c1wiIGFuZCBcInRleHRcIiBhbmQgdGhlbiBhc2tlZCBmb3IgXCJjb250ZW50c1wiLCB0aGUgc2Vjb25kXG4gICAgICAvLyBzZXR0ZXIgZm9yIFwidGV4dFwiIHdpbGwgaGF2ZSBlcmFzZWQgb3VyIGNhY2hlZCBcImNvbnRlbnRzXCIgdmFsdWUgc28gd2UnZFxuICAgICAgLy8gbmVlZCB0byByZWdlbmVyYXRlIGl0IGFnYWluLiBJbnN0ZWFkLCBcImNvbnRlbnRzXCIgaXMgdW5hbWJpZ3VvdXNseSB0aGVcbiAgICAgIC8vIHByaW1hcnkgdmFsdWUgYW5kIFwidGV4dFwiIGlzIHVuYW1iaWd1b3VzbHkgdGhlIGRlcml2ZWQgdmFsdWUuXG4gICAgICBpZiAodGV4dCA9PT0gbnVsbCB8fCBiaW5hcnkgIT09IGNvbnRlbnRzKSB7XG4gICAgICAgIGNvbnRlbnRzID0gYmluYXJ5O1xuICAgICAgICB0ZXh0ID0gcHJvdG9jb2wuZGVjb2RlVVRGOChiaW5hcnkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfSxcbiAgfTtcbn1cbiIsICIvKiogQGxpY2Vuc2VcbiAqIGVzYnVpbGQtd2FzbUB2MC4yMS41XG4gKlxuICogTUlUIExpY2Vuc2VcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXZhbiBXYWxsYWNlXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiAqL1xuLy8gVGhpcyBjb2RlIGlzIHBvcnRlZCBmcm9tIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9ldmFudy9lc2J1aWxkL3YwLjIxLjUvbGliL3NoYXJlZC9jb21tb24udHMgYW5kIG1vZGlmaWVkIGJlbG93XG4vLyAtICQgZGVubyBmbXRcbi8vIC0gbG9hZCB0aGUgd29ya2VyIGNvZGUgZnJvbSBVUkwgaW5zdGVhZCBvZiBhbiBlbWJlZGRlZCBjb2RlXG5cbmltcG9ydCAqIGFzIHR5cGVzIGZyb20gXCIuL3R5cGVzLnRzXCI7XG5pbXBvcnQgKiBhcyBjb21tb24gZnJvbSBcIi4vY29tbW9uLnRzXCI7XG5pbXBvcnQgeyBFU0JVSUxEX1ZFUlNJT04gfSBmcm9tIFwiLi92ZXJzaW9uLnRzXCI7XG5cbmludGVyZmFjZSBHbyB7XG4gIF9zY2hlZHVsZWRUaW1lb3V0czogTWFwPG51bWJlciwgUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4+O1xufVxuZXhwb3J0IGNvbnN0IHZlcnNpb24gPSBFU0JVSUxEX1ZFUlNJT047XG5cbmV4cG9ydCBjb25zdCBidWlsZDogdHlwZW9mIHR5cGVzLmJ1aWxkID0gKG9wdGlvbnM6IHR5cGVzLkJ1aWxkT3B0aW9ucykgPT5cbiAgZW5zdXJlU2VydmljZUlzUnVubmluZygpLmJ1aWxkKG9wdGlvbnMpO1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtOiB0eXBlb2YgdHlwZXMudHJhbnNmb3JtID0gKFxuICBpbnB1dDogc3RyaW5nIHwgVWludDhBcnJheSxcbiAgb3B0aW9ucz86IHR5cGVzLlRyYW5zZm9ybU9wdGlvbnMsXG4pID0+IGVuc3VyZVNlcnZpY2VJc1J1bm5pbmcoKS50cmFuc2Zvcm0oaW5wdXQsIG9wdGlvbnMpO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0TWVzc2FnZXM6IHR5cGVvZiB0eXBlcy5mb3JtYXRNZXNzYWdlcyA9IChcbiAgbWVzc2FnZXMsXG4gIG9wdGlvbnMsXG4pID0+IGVuc3VyZVNlcnZpY2VJc1J1bm5pbmcoKS5mb3JtYXRNZXNzYWdlcyhtZXNzYWdlcywgb3B0aW9ucyk7XG5cbmV4cG9ydCBjb25zdCBhbmFseXplTWV0YWZpbGU6IHR5cGVvZiB0eXBlcy5hbmFseXplTWV0YWZpbGUgPSAoXG4gIG1ldGFmaWxlLFxuICBvcHRpb25zLFxuKSA9PiBlbnN1cmVTZXJ2aWNlSXNSdW5uaW5nKCkuYW5hbHl6ZU1ldGFmaWxlKG1ldGFmaWxlLCBvcHRpb25zKTtcblxuZXhwb3J0IGNvbnN0IHN0b3AgPSAoKSA9PiB7XG4gIGlmIChzdG9wU2VydmljZSkgc3RvcFNlcnZpY2UoKTtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xufTtcblxuaW50ZXJmYWNlIFNlcnZpY2Uge1xuICBidWlsZDogdHlwZW9mIHR5cGVzLmJ1aWxkO1xuICB0cmFuc2Zvcm06IHR5cGVvZiB0eXBlcy50cmFuc2Zvcm07XG4gIGZvcm1hdE1lc3NhZ2VzOiB0eXBlb2YgdHlwZXMuZm9ybWF0TWVzc2FnZXM7XG4gIGFuYWx5emVNZXRhZmlsZTogdHlwZW9mIHR5cGVzLmFuYWx5emVNZXRhZmlsZTtcbn1cblxubGV0IGluaXRpYWxpemVQcm9taXNlOiBQcm9taXNlPHZvaWQ+IHwgdW5kZWZpbmVkO1xubGV0IHN0b3BTZXJ2aWNlOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG5sZXQgbG9uZ0xpdmVkU2VydmljZTogU2VydmljZSB8IHVuZGVmaW5lZDtcblxuY29uc3QgZW5zdXJlU2VydmljZUlzUnVubmluZyA9ICgpOiBTZXJ2aWNlID0+IHtcbiAgaWYgKGxvbmdMaXZlZFNlcnZpY2UpIHJldHVybiBsb25nTGl2ZWRTZXJ2aWNlO1xuICBpZiAoaW5pdGlhbGl6ZVByb21pc2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnWW91IG5lZWQgdG8gd2FpdCBmb3IgdGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSBcImluaXRpYWxpemVcIiB0byBiZSByZXNvbHZlZCBiZWZvcmUgY2FsbGluZyB0aGlzJyxcbiAgICApO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignWW91IG5lZWQgdG8gY2FsbCBcImluaXRpYWxpemVcIiBiZWZvcmUgY2FsbGluZyB0aGlzJyk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbGl6ZTogdHlwZW9mIHR5cGVzLmluaXRpYWxpemUgPSAob3B0aW9ucykgPT4ge1xuICBvcHRpb25zID0gY29tbW9uLnZhbGlkYXRlSW5pdGlhbGl6ZU9wdGlvbnMob3B0aW9ucyB8fCB7fSk7XG4gIGNvbnN0IHdhc21Nb2R1bGUgPSBvcHRpb25zLndhc21Nb2R1bGU7XG4gIGNvbnN0IHdvcmtlclVSTCA9IG9wdGlvbnMud29ya2VyVVJMO1xuICBpZiAoIXdhc21Nb2R1bGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnTXVzdCBwcm92aWRlIHRoZSBcIndhc21Nb2R1bGVcIiBvcHRpb24nLFxuICAgICk7XG4gIH1cbiAgaWYgKGluaXRpYWxpemVQcm9taXNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY2FsbCBcImluaXRpYWxpemVcIiBtb3JlIHRoYW4gb25jZScpO1xuICB9XG4gIGluaXRpYWxpemVQcm9taXNlID0gc3RhcnRSdW5uaW5nU2VydmljZSh3YXNtTW9kdWxlLCB3b3JrZXJVUkwpO1xuICBpbml0aWFsaXplUHJvbWlzZS5jYXRjaCgoKSA9PiB7XG4gICAgLy8gTGV0IHRoZSBjYWxsZXIgdHJ5IGFnYWluIGlmIHRoaXMgZmFpbHNcbiAgICBpbml0aWFsaXplUHJvbWlzZSA9IHZvaWQgMDtcbiAgfSk7XG4gIHJldHVybiBpbml0aWFsaXplUHJvbWlzZTtcbn07XG5cbmNvbnN0IHN0YXJ0UnVubmluZ1NlcnZpY2UgPSBhc3luYyAoXG4gIHdhc21Nb2R1bGU6IFdlYkFzc2VtYmx5Lk1vZHVsZSB8IHVuZGVmaW5lZCxcbiAgd29ya2VyVVJMOiBzdHJpbmcgfCBVUkwsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgLy8gUnVuIGVzYnVpbGQgb2ZmIHRoZSBtYWluIHRocmVhZFxuICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKHdvcmtlclVSTC50b1N0cmluZygpLCB7IHR5cGU6IFwibW9kdWxlXCIgfSk7XG5cbiAgbGV0IGZpcnN0TWVzc2FnZVJlc29sdmU6ICh2YWx1ZTogdm9pZCkgPT4gdm9pZDtcbiAgbGV0IGZpcnN0TWVzc2FnZVJlamVjdDogKGVycm9yOiB1bmtub3duKSA9PiB2b2lkO1xuXG4gIGNvbnN0IGZpcnN0TWVzc2FnZVByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgZmlyc3RNZXNzYWdlUmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgZmlyc3RNZXNzYWdlUmVqZWN0ID0gcmVqZWN0O1xuICB9KTtcblxuICB3b3JrZXIub25tZXNzYWdlID0gKHsgZGF0YTogZXJyb3IgfSkgPT4ge1xuICAgIHdvcmtlci5vbm1lc3NhZ2UgPSAoeyBkYXRhIH0pID0+IHJlYWRGcm9tU3Rkb3V0KGRhdGEpO1xuICAgIGlmIChlcnJvcikgZmlyc3RNZXNzYWdlUmVqZWN0KGVycm9yKTtcbiAgICBlbHNlIGZpcnN0TWVzc2FnZVJlc29sdmUoKTtcbiAgfTtcblxuICB3b3JrZXIucG9zdE1lc3NhZ2Uod2FzbU1vZHVsZSk7XG5cbiAgY29uc3QgeyByZWFkRnJvbVN0ZG91dCwgc2VydmljZSB9ID0gY29tbW9uLmNyZWF0ZUNoYW5uZWwoe1xuICAgIHdyaXRlVG9TdGRpbihieXRlcykge1xuICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKGJ5dGVzKTtcbiAgICB9LFxuICAgIGlzU3luYzogZmFsc2UsXG4gICAgaGFzRlM6IGZhbHNlLFxuICAgIGVzYnVpbGQ6IHtcbiAgICAgIGJ1aWxkLFxuICAgICAgdHJhbnNmb3JtLFxuICAgICAgZm9ybWF0TWVzc2FnZXMsXG4gICAgICBhbmFseXplTWV0YWZpbGUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgaW5pdGlhbGl6ZSxcbiAgICB9LFxuICB9KTtcblxuICAvLyBUaGlzIHdpbGwgdGhyb3cgaWYgV2ViQXNzZW1ibHkgbW9kdWxlIGluc3RhbnRpYXRpb24gZmFpbHNcbiAgYXdhaXQgZmlyc3RNZXNzYWdlUHJvbWlzZTtcbiAgc3RvcFNlcnZpY2UgPSAoKSA9PiB7XG4gICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgIGluaXRpYWxpemVQcm9taXNlID0gdW5kZWZpbmVkO1xuICAgIHN0b3BTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgIGxvbmdMaXZlZFNlcnZpY2UgPSB1bmRlZmluZWQ7XG4gIH07XG5cbiAgbG9uZ0xpdmVkU2VydmljZSA9IHtcbiAgICBidWlsZDogKG9wdGlvbnM6IHR5cGVzLkJ1aWxkT3B0aW9ucykgPT5cbiAgICAgIG5ldyBQcm9taXNlPHR5cGVzLkJ1aWxkUmVzdWx0PigocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgICAgICBzZXJ2aWNlLmJ1aWxkT3JDb250ZXh0KHtcbiAgICAgICAgICBjYWxsTmFtZTogXCJidWlsZFwiLFxuICAgICAgICAgIHJlZnM6IG51bGwsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBpc1RUWTogZmFsc2UsXG4gICAgICAgICAgZGVmYXVsdFdEOiBcIi9cIixcbiAgICAgICAgICBjYWxsYmFjazogKGVyciwgcmVzKSA9PlxuICAgICAgICAgICAgZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKHJlcyBhcyB0eXBlcy5CdWlsZFJlc3VsdCksXG4gICAgICAgIH0pXG4gICAgICApLFxuXG4gICAgdHJhbnNmb3JtOiAoaW5wdXQ6IHN0cmluZyB8IFVpbnQ4QXJyYXksIG9wdGlvbnM/OiB0eXBlcy5UcmFuc2Zvcm1PcHRpb25zKSA9PlxuICAgICAgbmV3IFByb21pc2U8dHlwZXMuVHJhbnNmb3JtUmVzdWx0PigocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgICAgICBzZXJ2aWNlLnRyYW5zZm9ybSh7XG4gICAgICAgICAgY2FsbE5hbWU6IFwidHJhbnNmb3JtXCIsXG4gICAgICAgICAgcmVmczogbnVsbCxcbiAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICBvcHRpb25zOiBvcHRpb25zIHx8IHt9LFxuICAgICAgICAgIGlzVFRZOiBmYWxzZSxcbiAgICAgICAgICBmczoge1xuICAgICAgICAgICAgcmVhZEZpbGUoXywgY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiSW50ZXJuYWwgZXJyb3JcIiksIG51bGwpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdyaXRlRmlsZShfLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjYWxsYmFjazogKGVyciwgcmVzKSA9PiBlcnIgPyByZWplY3QoZXJyKSA6IHJlc29sdmUocmVzISksXG4gICAgICAgIH0pXG4gICAgICApLFxuXG4gICAgZm9ybWF0TWVzc2FnZXM6IChtZXNzYWdlcywgb3B0aW9ucykgPT5cbiAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAgICAgIHNlcnZpY2UuZm9ybWF0TWVzc2FnZXMoe1xuICAgICAgICAgIGNhbGxOYW1lOiBcImZvcm1hdE1lc3NhZ2VzXCIsXG4gICAgICAgICAgcmVmczogbnVsbCxcbiAgICAgICAgICBtZXNzYWdlcyxcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIGNhbGxiYWNrOiAoZXJyLCByZXMpID0+IGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZShyZXMhKSxcbiAgICAgICAgfSlcbiAgICAgICksXG5cbiAgICBhbmFseXplTWV0YWZpbGU6IChtZXRhZmlsZSwgb3B0aW9ucykgPT5cbiAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAgICAgIHNlcnZpY2UuYW5hbHl6ZU1ldGFmaWxlKHtcbiAgICAgICAgICBjYWxsTmFtZTogXCJhbmFseXplTWV0YWZpbGVcIixcbiAgICAgICAgICByZWZzOiBudWxsLFxuICAgICAgICAgIG1ldGFmaWxlOiB0eXBlb2YgbWV0YWZpbGUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gbWV0YWZpbGVcbiAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkobWV0YWZpbGUpLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgY2FsbGJhY2s6IChlcnIsIHJlcykgPT4gZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKHJlcyEpLFxuICAgICAgICB9KVxuICAgICAgKSxcbiAgfTtcbn07XG4iLCAiLy8gQHRzLW5vY2hlY2sgLSBEZW5vIHR5cGVzIGFyZSBub3QgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyXG5cbmlmICghc2VsZi5EZW5vKSB7XG4gIHNlbGYuRGVubyA9IHtcbiAgICBidWlsZDogeyBvczogXCJsaW51eFwiIH0sXG4gICAgZXJyb3JzOiB7IEFscmVhZHlFeGlzdHM6IEVycm9yIH0sXG4gICAgZW52OiB7IGdldDogKCkgPT4gdW5kZWZpbmVkIH0sXG4gICAgcGVybWlzc2lvbnM6IHsgcXVlcnk6ICgpID0+IFByb21pc2UucmVzb2x2ZShcImRlbmllZFwiKSB9LFxuICAgIGN3ZDogKCkgPT4gbG9jYXRpb24uaHJlZixcbiAgfTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IHRoZSBCcm93c2VyaWZ5IGF1dGhvcnMuIE1JVCBMaWNlbnNlLlxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0UGF0aChwYXRoOiBzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIGBQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkocGF0aCl9YCxcbiAgICApO1xuICB9XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeS9cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHtcbiAgQ0hBUl9CQUNLV0FSRF9TTEFTSCxcbiAgQ0hBUl9GT1JXQVJEX1NMQVNILFxuICBDSEFSX0xPV0VSQ0FTRV9BLFxuICBDSEFSX0xPV0VSQ0FTRV9aLFxuICBDSEFSX1VQUEVSQ0FTRV9BLFxuICBDSEFSX1VQUEVSQ0FTRV9aLFxufSBmcm9tIFwiLi4vX2NvbW1vbi9jb25zdGFudHMudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUG9zaXhQYXRoU2VwYXJhdG9yKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQYXRoU2VwYXJhdG9yKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIIHx8IGNvZGUgPT09IENIQVJfQkFDS1dBUkRfU0xBU0g7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1dpbmRvd3NEZXZpY2VSb290KGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIChjb2RlID49IENIQVJfTE9XRVJDQVNFX0EgJiYgY29kZSA8PSBDSEFSX0xPV0VSQ0FTRV9aKSB8fFxuICAgIChjb2RlID49IENIQVJfVVBQRVJDQVNFX0EgJiYgY29kZSA8PSBDSEFSX1VQUEVSQ0FTRV9aKVxuICApO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRBcmcodXJsOiBVUkwgfCBzdHJpbmcpIHtcbiAgdXJsID0gdXJsIGluc3RhbmNlb2YgVVJMID8gdXJsIDogbmV3IFVSTCh1cmwpO1xuICBpZiAodXJsLnByb3RvY29sICE9PSBcImZpbGU6XCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBhIGZpbGUgVVJMLlwiKTtcbiAgfVxuICByZXR1cm4gdXJsO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGFzc2VydEFyZyB9IGZyb20gXCIuLi9fY29tbW9uL2Zyb21fZmlsZV91cmwudHNcIjtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZpbGUgVVJMIHRvIGEgcGF0aCBzdHJpbmcuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vcGF0aC93aW5kb3dzL2Zyb21fZmlsZV91cmwudHNcIjtcbiAqXG4gKiBmcm9tRmlsZVVybChcImZpbGU6Ly8vaG9tZS9mb29cIik7IC8vIFwiXFxcXGhvbWVcXFxcZm9vXCJcbiAqIGZyb21GaWxlVXJsKFwiZmlsZTovLy9DOi9Vc2Vycy9mb29cIik7IC8vIFwiQzpcXFxcVXNlcnNcXFxcZm9vXCJcbiAqIGZyb21GaWxlVXJsKFwiZmlsZTovL2xvY2FsaG9zdC9ob21lL2Zvb1wiKTsgLy8gXCJcXFxcXFxcXGxvY2FsaG9zdFxcXFxob21lXFxcXGZvb1wiXG4gKiBgYGBcbiAqIEBwYXJhbSB1cmwgb2YgYSBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUZpbGVVcmwodXJsOiBVUkwgfCBzdHJpbmcpOiBzdHJpbmcge1xuICB1cmwgPSBhc3NlcnRBcmcodXJsKTtcbiAgbGV0IHBhdGggPSBkZWNvZGVVUklDb21wb25lbnQoXG4gICAgdXJsLnBhdGhuYW1lLnJlcGxhY2UoL1xcLy9nLCBcIlxcXFxcIikucmVwbGFjZSgvJSg/IVswLTlBLUZhLWZdezJ9KS9nLCBcIiUyNVwiKSxcbiAgKS5yZXBsYWNlKC9eXFxcXCooW0EtWmEtel06KShcXFxcfCQpLywgXCIkMVxcXFxcIik7XG4gIGlmICh1cmwuaG9zdG5hbWUgIT09IFwiXCIpIHtcbiAgICAvLyBOb3RlOiBUaGUgYFVSTGAgaW1wbGVtZW50YXRpb24gZ3VhcmFudGVlcyB0aGF0IHRoZSBkcml2ZSBsZXR0ZXIgYW5kXG4gICAgLy8gaG9zdG5hbWUgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gT3RoZXJ3aXNlIGl0IHdvdWxkIG5vdCBoYXZlIGJlZW4gdmFsaWRcbiAgICAvLyB0byBhcHBlbmQgdGhlIGhvc3RuYW1lIGFuZCBwYXRoIGxpa2UgdGhpcy5cbiAgICBwYXRoID0gYFxcXFxcXFxcJHt1cmwuaG9zdG5hbWV9JHtwYXRofWA7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgQ0hBUl9DT0xPTiB9IGZyb20gXCIuLi9fY29tbW9uL2NvbnN0YW50cy50c1wiO1xuaW1wb3J0IHsgYXNzZXJ0UGF0aCB9IGZyb20gXCIuLi9fY29tbW9uL2Fzc2VydF9wYXRoLnRzXCI7XG5pbXBvcnQgeyBpc1BhdGhTZXBhcmF0b3IsIGlzV2luZG93c0RldmljZVJvb3QgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG4vKipcbiAqIFZlcmlmaWVzIHdoZXRoZXIgcHJvdmlkZWQgcGF0aCBpcyBhYnNvbHV0ZVxuICogQHBhcmFtIHBhdGggdG8gYmUgdmVyaWZpZWQgYXMgYWJzb2x1dGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQWJzb2x1dGUocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgY29uc3QgbGVuID0gcGF0aC5sZW5ndGg7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNXaW5kb3dzRGV2aWNlUm9vdChjb2RlKSkge1xuICAgIC8vIFBvc3NpYmxlIGRldmljZSByb290XG5cbiAgICBpZiAobGVuID4gMiAmJiBwYXRoLmNoYXJDb2RlQXQoMSkgPT09IENIQVJfQ09MT04pIHtcbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIGFuIGFzc2VydGlvbiBmYWlscy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IEFzc2VydGlvbkVycm9yIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vYXNzZXJ0L2Fzc2VydGlvbl9lcnJvci50c1wiO1xuICpcbiAqIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcihcIkFzc2VydGlvbiBmYWlsZWRcIik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEFzc2VydGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKiogQ29uc3RydWN0cyBhIG5ldyBpbnN0YW5jZS4gKi9cbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gXCJBc3NlcnRpb25FcnJvclwiO1xuICB9XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbmltcG9ydCB7IEFzc2VydGlvbkVycm9yIH0gZnJvbSBcIi4vYXNzZXJ0aW9uX2Vycm9yLnRzXCI7XG5cbi8qKlxuICogTWFrZSBhbiBhc3NlcnRpb24sIGVycm9yIHdpbGwgYmUgdGhyb3duIGlmIGBleHByYCBkb2VzIG5vdCBoYXZlIHRydXRoeSB2YWx1ZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGFzc2VydCB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL2Fzc2VydC9hc3NlcnQudHNcIjtcbiAqXG4gKiBhc3NlcnQoXCJoZWxsb1wiLmluY2x1ZGVzKFwiZWxsb1wiKSk7IC8vIERvZXNuJ3QgdGhyb3dcbiAqIGFzc2VydChcImhlbGxvXCIuaW5jbHVkZXMoXCJ3b3JsZFwiKSk7IC8vIFRocm93c1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoZXhwcjogdW5rbm93biwgbXNnID0gXCJcIik6IGFzc2VydHMgZXhwciB7XG4gIGlmICghZXhwcikge1xuICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcihtc2cpO1xuICB9XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuY29uc3QgV0hJVEVTUEFDRV9FTkNPRElOR1M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIFwiXFx1MDAwOVwiOiBcIiUwOVwiLFxuICBcIlxcdTAwMEFcIjogXCIlMEFcIixcbiAgXCJcXHUwMDBCXCI6IFwiJTBCXCIsXG4gIFwiXFx1MDAwQ1wiOiBcIiUwQ1wiLFxuICBcIlxcdTAwMERcIjogXCIlMERcIixcbiAgXCJcXHUwMDIwXCI6IFwiJTIwXCIsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlV2hpdGVzcGFjZShzdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZUFsbCgvW1xcc10vZywgKGMpID0+IHtcbiAgICByZXR1cm4gV0hJVEVTUEFDRV9FTkNPRElOR1NbY10gPz8gYztcbiAgfSk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgZW5jb2RlV2hpdGVzcGFjZSB9IGZyb20gXCIuLi9fY29tbW9uL3RvX2ZpbGVfdXJsLnRzXCI7XG5pbXBvcnQgeyBpc0Fic29sdXRlIH0gZnJvbSBcIi4vaXNfYWJzb2x1dGUudHNcIjtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIHBhdGggc3RyaW5nIHRvIGEgZmlsZSBVUkwuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRvRmlsZVVybCB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL3BhdGgvd2luZG93cy90b19maWxlX3VybC50c1wiO1xuICpcbiAqIHRvRmlsZVVybChcIlxcXFxob21lXFxcXGZvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8vaG9tZS9mb29cIilcbiAqIHRvRmlsZVVybChcIkM6XFxcXFVzZXJzXFxcXGZvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8vQzovVXNlcnMvZm9vXCIpXG4gKiB0b0ZpbGVVcmwoXCJcXFxcXFxcXDEyNy4wLjAuMVxcXFxob21lXFxcXGZvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8xMjcuMC4wLjEvaG9tZS9mb29cIilcbiAqIGBgYFxuICogQHBhcmFtIHBhdGggdG8gY29udmVydCB0byBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9GaWxlVXJsKHBhdGg6IHN0cmluZyk6IFVSTCB7XG4gIGlmICghaXNBYnNvbHV0ZShwYXRoKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJNdXN0IGJlIGFuIGFic29sdXRlIHBhdGguXCIpO1xuICB9XG5cbiAgY29uc3QgWywgaG9zdG5hbWUsIHBhdGhuYW1lXSA9IHBhdGgubWF0Y2goXG4gICAgL14oPzpbL1xcXFxdezJ9KFteL1xcXFxdKykoPz1bL1xcXFxdKD86W14vXFxcXF18JCkpKT8oLiopLyxcbiAgKSE7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoXCJmaWxlOi8vL1wiKTtcbiAgdXJsLnBhdGhuYW1lID0gZW5jb2RlV2hpdGVzcGFjZShwYXRobmFtZS5yZXBsYWNlKC8lL2csIFwiJTI1XCIpKTtcbiAgaWYgKGhvc3RuYW1lICE9PSB1bmRlZmluZWQgJiYgaG9zdG5hbWUgIT09IFwibG9jYWxob3N0XCIpIHtcbiAgICB1cmwuaG9zdG5hbWUgPSBob3N0bmFtZTtcbiAgICBpZiAoIXVybC5ob3N0bmFtZSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgaG9zdG5hbWUuXCIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdXJsO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgdGhlIEJyb3dzZXJpZnkgYXV0aG9ycy4gTUlUIExpY2Vuc2UuXG4vLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYnJvd3NlcmlmeS9wYXRoLWJyb3dzZXJpZnkvXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IENIQVJfRk9SV0FSRF9TTEFTSCB9IGZyb20gXCIuLi9fY29tbW9uL2NvbnN0YW50cy50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNQb3NpeFBhdGhTZXBhcmF0b3IoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBjb2RlID09PSBDSEFSX0ZPUldBUkRfU0xBU0g7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgYXNzZXJ0QXJnIH0gZnJvbSBcIi4uL19jb21tb24vZnJvbV9maWxlX3VybC50c1wiO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZmlsZSBVUkwgdG8gYSBwYXRoIHN0cmluZy5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZnJvbUZpbGVVcmwgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9wYXRoL3Bvc2l4L2Zyb21fZmlsZV91cmwudHNcIjtcbiAqXG4gKiBmcm9tRmlsZVVybChcImZpbGU6Ly8vaG9tZS9mb29cIik7IC8vIFwiL2hvbWUvZm9vXCJcbiAqIGBgYFxuICogQHBhcmFtIHVybCBvZiBhIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tRmlsZVVybCh1cmw6IFVSTCB8IHN0cmluZyk6IHN0cmluZyB7XG4gIHVybCA9IGFzc2VydEFyZyh1cmwpO1xuICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KFxuICAgIHVybC5wYXRobmFtZS5yZXBsYWNlKC8lKD8hWzAtOUEtRmEtZl17Mn0pL2csIFwiJTI1XCIpLFxuICApO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi4vX2NvbW1vbi9hc3NlcnRfcGF0aC50c1wiO1xuaW1wb3J0IHsgaXNQb3NpeFBhdGhTZXBhcmF0b3IgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG4vKipcbiAqIFZlcmlmaWVzIHdoZXRoZXIgcHJvdmlkZWQgcGF0aCBpcyBhYnNvbHV0ZVxuICogQHBhcmFtIHBhdGggdG8gYmUgdmVyaWZpZWQgYXMgYWJzb2x1dGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQWJzb2x1dGUocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG4gIHJldHVybiBwYXRoLmxlbmd0aCA+IDAgJiYgaXNQb3NpeFBhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDApKTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBlbmNvZGVXaGl0ZXNwYWNlIH0gZnJvbSBcIi4uL19jb21tb24vdG9fZmlsZV91cmwudHNcIjtcbmltcG9ydCB7IGlzQWJzb2x1dGUgfSBmcm9tIFwiLi9pc19hYnNvbHV0ZS50c1wiO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgcGF0aCBzdHJpbmcgdG8gYSBmaWxlIFVSTC5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdG9GaWxlVXJsIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vcGF0aC9wb3NpeC90b19maWxlX3VybC50c1wiO1xuICpcbiAqIHRvRmlsZVVybChcIi9ob21lL2Zvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8vaG9tZS9mb29cIilcbiAqIGBgYFxuICogQHBhcmFtIHBhdGggdG8gY29udmVydCB0byBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9GaWxlVXJsKHBhdGg6IHN0cmluZyk6IFVSTCB7XG4gIGlmICghaXNBYnNvbHV0ZShwYXRoKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJNdXN0IGJlIGFuIGFic29sdXRlIHBhdGguXCIpO1xuICB9XG5cbiAgY29uc3QgdXJsID0gbmV3IFVSTChcImZpbGU6Ly8vXCIpO1xuICB1cmwucGF0aG5hbWUgPSBlbmNvZGVXaGl0ZXNwYWNlKFxuICAgIHBhdGgucmVwbGFjZSgvJS9nLCBcIiUyNVwiKS5yZXBsYWNlKC9cXFxcL2csIFwiJTVDXCIpLFxuICApO1xuICByZXR1cm4gdXJsO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8vIEtlZXAgdGhpcyB1cC10by1kYXRlIHdpdGggRGVuby5idWlsZC5vc1xuZXhwb3J0IHR5cGUgT1NUeXBlID1cbiAgfCBcImRhcndpblwiXG4gIHwgXCJsaW51eFwiXG4gIHwgXCJ3aW5kb3dzXCJcbiAgfCBcImZyZWVic2RcIlxuICB8IFwibmV0YnNkXCJcbiAgfCBcImFpeFwiXG4gIHwgXCJzb2xhcmlzXCJcbiAgfCBcImlsbHVtb3NcIjtcblxuZXhwb3J0IGNvbnN0IG9zVHlwZTogT1NUeXBlID0gKCgpID0+IHtcbiAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgY29uc3QgeyBEZW5vIH0gPSBnbG9iYWxUaGlzIGFzIGFueTtcbiAgaWYgKHR5cGVvZiBEZW5vPy5idWlsZD8ub3MgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gRGVuby5idWlsZC5vcztcbiAgfVxuXG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gIGNvbnN0IHsgbmF2aWdhdG9yIH0gPSBnbG9iYWxUaGlzIGFzIGFueTtcbiAgaWYgKG5hdmlnYXRvcj8uYXBwVmVyc2lvbj8uaW5jbHVkZXM/LihcIldpblwiKSkge1xuICAgIHJldHVybiBcIndpbmRvd3NcIjtcbiAgfVxuXG4gIHJldHVybiBcImxpbnV4XCI7XG59KSgpO1xuXG5leHBvcnQgY29uc3QgaXNXaW5kb3dzID0gb3NUeXBlID09PSBcIndpbmRvd3NcIjtcbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc1dpbmRvd3MgfSBmcm9tIFwiLi9fb3MudHNcIjtcbmltcG9ydCB7IGZyb21GaWxlVXJsIGFzIHBvc2l4RnJvbUZpbGVVcmwgfSBmcm9tIFwiLi9wb3NpeC9mcm9tX2ZpbGVfdXJsLnRzXCI7XG5pbXBvcnQgeyBmcm9tRmlsZVVybCBhcyB3aW5kb3dzRnJvbUZpbGVVcmwgfSBmcm9tIFwiLi93aW5kb3dzL2Zyb21fZmlsZV91cmwudHNcIjtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZpbGUgVVJMIHRvIGEgcGF0aCBzdHJpbmcuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vcGF0aC9mcm9tX2ZpbGVfdXJsLnRzXCI7XG4gKlxuICogLy8gcG9zaXhcbiAqIGZyb21GaWxlVXJsKFwiZmlsZTovLy9ob21lL2Zvb1wiKTsgLy8gXCIvaG9tZS9mb29cIlxuICpcbiAqIC8vIHdpbjMyXG4gKiBmcm9tRmlsZVVybChcImZpbGU6Ly8vaG9tZS9mb29cIik7IC8vIFwiXFxcXGhvbWVcXFxcZm9vXCJcbiAqIGZyb21GaWxlVXJsKFwiZmlsZTovLy9DOi9Vc2Vycy9mb29cIik7IC8vIFwiQzpcXFxcVXNlcnNcXFxcZm9vXCJcbiAqIGZyb21GaWxlVXJsKFwiZmlsZTovL2xvY2FsaG9zdC9ob21lL2Zvb1wiKTsgLy8gXCJcXFxcXFxcXGxvY2FsaG9zdFxcXFxob21lXFxcXGZvb1wiXG4gKiBgYGBcbiAqIEBwYXJhbSB1cmwgb2YgYSBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUZpbGVVcmwodXJsOiBzdHJpbmcgfCBVUkwpOiBzdHJpbmcge1xuICByZXR1cm4gaXNXaW5kb3dzID8gd2luZG93c0Zyb21GaWxlVXJsKHVybCkgOiBwb3NpeEZyb21GaWxlVXJsKHVybCk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgaXNXaW5kb3dzIH0gZnJvbSBcIi4vX29zLnRzXCI7XG5pbXBvcnQgeyB0b0ZpbGVVcmwgYXMgcG9zaXhUb0ZpbGVVcmwgfSBmcm9tIFwiLi9wb3NpeC90b19maWxlX3VybC50c1wiO1xuaW1wb3J0IHsgdG9GaWxlVXJsIGFzIHdpbmRvd3NUb0ZpbGVVcmwgfSBmcm9tIFwiLi93aW5kb3dzL3RvX2ZpbGVfdXJsLnRzXCI7XG5cbi8qKlxuICogQ29udmVydHMgYSBwYXRoIHN0cmluZyB0byBhIGZpbGUgVVJMLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB0b0ZpbGVVcmwgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9wYXRoL3RvX2ZpbGVfdXJsLnRzXCI7XG4gKlxuICogLy8gcG9zaXhcbiAqIHRvRmlsZVVybChcIi9ob21lL2Zvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8vaG9tZS9mb29cIilcbiAqXG4gKiAvLyB3aW4zMlxuICogdG9GaWxlVXJsKFwiXFxcXGhvbWVcXFxcZm9vXCIpOyAvLyBuZXcgVVJMKFwiZmlsZTovLy9ob21lL2Zvb1wiKVxuICogdG9GaWxlVXJsKFwiQzpcXFxcVXNlcnNcXFxcZm9vXCIpOyAvLyBuZXcgVVJMKFwiZmlsZTovLy9DOi9Vc2Vycy9mb29cIilcbiAqIHRvRmlsZVVybChcIlxcXFxcXFxcMTI3LjAuMC4xXFxcXGhvbWVcXFxcZm9vXCIpOyAvLyBuZXcgVVJMKFwiZmlsZTovLzEyNy4wLjAuMS9ob21lL2Zvb1wiKVxuICogYGBgXG4gKiBAcGFyYW0gcGF0aCB0byBjb252ZXJ0IHRvIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0ZpbGVVcmwocGF0aDogc3RyaW5nKTogVVJMIHtcbiAgcmV0dXJuIGlzV2luZG93cyA/IHdpbmRvd3NUb0ZpbGVVcmwocGF0aCkgOiBwb3NpeFRvRmlsZVVybChwYXRoKTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuaW1wb3J0IHsgZGlybmFtZSB9IGZyb20gXCIuLi9wYXRoL2Rpcm5hbWUudHNcIjtcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwiLi4vcGF0aC9yZXNvbHZlLnRzXCI7XG5pbXBvcnQgeyBlbnN1cmVEaXIsIGVuc3VyZURpclN5bmMgfSBmcm9tIFwiLi9lbnN1cmVfZGlyLnRzXCI7XG5pbXBvcnQgeyBnZXRGaWxlSW5mb1R5cGUgfSBmcm9tIFwiLi9fZ2V0X2ZpbGVfaW5mb190eXBlLnRzXCI7XG5pbXBvcnQgeyB0b1BhdGhTdHJpbmcgfSBmcm9tIFwiLi9fdG9fcGF0aF9zdHJpbmcudHNcIjtcblxuY29uc3QgaXNXaW5kb3dzID0gRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCI7XG5cbmZ1bmN0aW9uIHJlc29sdmVTeW1saW5rVGFyZ2V0KHRhcmdldDogc3RyaW5nIHwgVVJMLCBsaW5rTmFtZTogc3RyaW5nIHwgVVJMKSB7XG4gIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSBcInN0cmluZ1wiKSByZXR1cm4gdGFyZ2V0OyAvLyBVUkwgaXMgYWx3YXlzIGFic29sdXRlIHBhdGhcbiAgaWYgKHR5cGVvZiBsaW5rTmFtZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiByZXNvbHZlKGRpcm5hbWUobGlua05hbWUpLCB0YXJnZXQpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgVVJMKHRhcmdldCwgbGlua05hbWUpO1xuICB9XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IHRoZSBsaW5rIGV4aXN0cywgYW5kIHBvaW50cyB0byBhIHZhbGlkIGZpbGUuXG4gKiBJZiB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBkb2VzIG5vdCBleGlzdCwgaXQgaXMgY3JlYXRlZC5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IHRoZSBzb3VyY2UgZmlsZSBwYXRoXG4gKiBAcGFyYW0gbGlua05hbWUgdGhlIGRlc3RpbmF0aW9uIGxpbmsgcGF0aFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlU3ltbGluayhcbiAgdGFyZ2V0OiBzdHJpbmcgfCBVUkwsXG4gIGxpbmtOYW1lOiBzdHJpbmcgfCBVUkwsXG4pIHtcbiAgY29uc3QgdGFyZ2V0UmVhbFBhdGggPSByZXNvbHZlU3ltbGlua1RhcmdldCh0YXJnZXQsIGxpbmtOYW1lKTtcbiAgY29uc3Qgc3JjU3RhdEluZm8gPSBhd2FpdCBEZW5vLmxzdGF0KHRhcmdldFJlYWxQYXRoKTtcbiAgY29uc3Qgc3JjRmlsZVBhdGhUeXBlID0gZ2V0RmlsZUluZm9UeXBlKHNyY1N0YXRJbmZvKTtcblxuICBhd2FpdCBlbnN1cmVEaXIoZGlybmFtZSh0b1BhdGhTdHJpbmcobGlua05hbWUpKSk7XG5cbiAgY29uc3Qgb3B0aW9uczogRGVuby5TeW1saW5rT3B0aW9ucyB8IHVuZGVmaW5lZCA9IGlzV2luZG93c1xuICAgID8ge1xuICAgICAgdHlwZTogc3JjRmlsZVBhdGhUeXBlID09PSBcImRpclwiID8gXCJkaXJcIiA6IFwiZmlsZVwiLFxuICAgIH1cbiAgICA6IHVuZGVmaW5lZDtcblxuICB0cnkge1xuICAgIGF3YWl0IERlbm8uc3ltbGluayh0YXJnZXQsIGxpbmtOYW1lLCBvcHRpb25zKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLkFscmVhZHlFeGlzdHMpKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgdGhlIGxpbmsgZXhpc3RzLCBhbmQgcG9pbnRzIHRvIGEgdmFsaWQgZmlsZS5cbiAqIElmIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGRvZXMgbm90IGV4aXN0LCBpdCBpcyBjcmVhdGVkLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgdGhlIHNvdXJjZSBmaWxlIHBhdGhcbiAqIEBwYXJhbSBsaW5rTmFtZSB0aGUgZGVzdGluYXRpb24gbGluayBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVTeW1saW5rU3luYyhcbiAgdGFyZ2V0OiBzdHJpbmcgfCBVUkwsXG4gIGxpbmtOYW1lOiBzdHJpbmcgfCBVUkwsXG4pIHtcbiAgY29uc3QgdGFyZ2V0UmVhbFBhdGggPSByZXNvbHZlU3ltbGlua1RhcmdldCh0YXJnZXQsIGxpbmtOYW1lKTtcbiAgY29uc3Qgc3JjU3RhdEluZm8gPSBEZW5vLmxzdGF0U3luYyh0YXJnZXRSZWFsUGF0aCk7XG4gIGNvbnN0IHNyY0ZpbGVQYXRoVHlwZSA9IGdldEZpbGVJbmZvVHlwZShzcmNTdGF0SW5mbyk7XG5cbiAgZW5zdXJlRGlyU3luYyhkaXJuYW1lKHRvUGF0aFN0cmluZyhsaW5rTmFtZSkpKTtcblxuICBjb25zdCBvcHRpb25zOiBEZW5vLlN5bWxpbmtPcHRpb25zIHwgdW5kZWZpbmVkID0gaXNXaW5kb3dzXG4gICAgPyB7XG4gICAgICB0eXBlOiBzcmNGaWxlUGF0aFR5cGUgPT09IFwiZGlyXCIgPyBcImRpclwiIDogXCJmaWxlXCIsXG4gICAgfVxuICAgIDogdW5kZWZpbmVkO1xuXG4gIHRyeSB7XG4gICAgRGVuby5zeW1saW5rU3luYyh0YXJnZXQsIGxpbmtOYW1lLCBvcHRpb25zKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLkFscmVhZHlFeGlzdHMpKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuaW1wb3J0IHsgR2xvYk9wdGlvbnMgfSBmcm9tIFwiLi4vcGF0aC9nbG9iLnRzXCI7XG5pbXBvcnQgeyBnbG9iVG9SZWdFeHAgfSBmcm9tIFwiLi4vcGF0aC9nbG9iX3RvX3JlZ2V4cC50c1wiO1xuaW1wb3J0IHsgam9pbkdsb2JzIH0gZnJvbSBcIi4uL3BhdGgvam9pbl9nbG9icy50c1wiO1xuaW1wb3J0IHsgaXNHbG9iIH0gZnJvbSBcIi4uL3BhdGgvaXNfZ2xvYi50c1wiO1xuaW1wb3J0IHsgaXNBYnNvbHV0ZSB9IGZyb20gXCIuLi9wYXRoL2lzX2Fic29sdXRlLnRzXCI7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcIi4uL3BhdGgvcmVzb2x2ZS50c1wiO1xuaW1wb3J0IHsgU0VQQVJBVE9SX1BBVFRFUk4gfSBmcm9tIFwiLi4vcGF0aC9jb25zdGFudHMudHNcIjtcbmltcG9ydCB7IHdhbGssIHdhbGtTeW5jIH0gZnJvbSBcIi4vd2Fsay50c1wiO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4uL2Fzc2VydC9hc3NlcnQudHNcIjtcbmltcG9ydCB7IHRvUGF0aFN0cmluZyB9IGZyb20gXCIuL190b19wYXRoX3N0cmluZy50c1wiO1xuaW1wb3J0IHtcbiAgY3JlYXRlV2Fsa0VudHJ5LFxuICBjcmVhdGVXYWxrRW50cnlTeW5jLFxuICB0eXBlIFdhbGtFbnRyeSxcbn0gZnJvbSBcIi4vX2NyZWF0ZV93YWxrX2VudHJ5LnRzXCI7XG5cbmV4cG9ydCB0eXBlIHsgR2xvYk9wdGlvbnMgfTtcblxuY29uc3QgaXNXaW5kb3dzID0gRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCI7XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIGV4cGFuZEdsb2J9IGFuZCB7QGxpbmtjb2RlIGV4cGFuZEdsb2JTeW5jfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhwYW5kR2xvYk9wdGlvbnMgZXh0ZW5kcyBPbWl0PEdsb2JPcHRpb25zLCBcIm9zXCI+IHtcbiAgLyoqIEZpbGUgcGF0aCB3aGVyZSB0byBleHBhbmQgZnJvbS4gKi9cbiAgcm9vdD86IHN0cmluZztcbiAgLyoqIExpc3Qgb2YgZ2xvYiBwYXR0ZXJucyB0byBiZSBleGNsdWRlZCBmcm9tIHRoZSBleHBhbnNpb24uICovXG4gIGV4Y2x1ZGU/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSBkaXJlY3RvcmllcyBpbiBlbnRyaWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7dHJ1ZX1cbiAgICovXG4gIGluY2x1ZGVEaXJzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7ZmFsc2V9XG4gICAqL1xuICBmb2xsb3dTeW1saW5rcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZm9sbG93ZWQgc3ltbGluaydzIHBhdGggc2hvdWxkIGJlIGNhbm9uaWNhbGl6ZWQuXG4gICAqIFRoaXMgb3B0aW9uIHdvcmtzIG9ubHkgaWYgYGZvbGxvd1N5bWxpbmtzYCBpcyBub3QgYGZhbHNlYC5cbiAgICpcbiAgICogQGRlZmF1bHQge3RydWV9XG4gICAqL1xuICBjYW5vbmljYWxpemU/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgU3BsaXRQYXRoIHtcbiAgc2VnbWVudHM6IHN0cmluZ1tdO1xuICBpc0Fic29sdXRlOiBib29sZWFuO1xuICBoYXNUcmFpbGluZ1NlcDogYm9vbGVhbjtcbiAgLy8gRGVmaW5lZCBmb3IgYW55IGFic29sdXRlIFdpbmRvd3MgcGF0aC5cbiAgd2luUm9vdD86IHN0cmluZztcbn1cblxuZnVuY3Rpb24gc3BsaXQocGF0aDogc3RyaW5nKTogU3BsaXRQYXRoIHtcbiAgY29uc3QgcyA9IFNFUEFSQVRPUl9QQVRURVJOLnNvdXJjZTtcbiAgY29uc3Qgc2VnbWVudHMgPSBwYXRoXG4gICAgLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7c318JHtzfSRgLCBcImdcIiksIFwiXCIpXG4gICAgLnNwbGl0KFNFUEFSQVRPUl9QQVRURVJOKTtcbiAgY29uc3QgaXNBYnNvbHV0ZV8gPSBpc0Fic29sdXRlKHBhdGgpO1xuICByZXR1cm4ge1xuICAgIHNlZ21lbnRzLFxuICAgIGlzQWJzb2x1dGU6IGlzQWJzb2x1dGVfLFxuICAgIGhhc1RyYWlsaW5nU2VwOiAhIXBhdGgubWF0Y2gobmV3IFJlZ0V4cChgJHtzfSRgKSksXG4gICAgd2luUm9vdDogaXNXaW5kb3dzICYmIGlzQWJzb2x1dGVfID8gc2VnbWVudHMuc2hpZnQoKSA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gdGhyb3dVbmxlc3NOb3RGb3VuZChlcnJvcjogdW5rbm93bikge1xuICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLk5vdEZvdW5kKSkge1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVQYXRoKGE6IFdhbGtFbnRyeSwgYjogV2Fsa0VudHJ5KTogbnVtYmVyIHtcbiAgaWYgKGEucGF0aCA8IGIucGF0aCkgcmV0dXJuIC0xO1xuICBpZiAoYS5wYXRoID4gYi5wYXRoKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8qKlxuICogRXhwYW5kIHRoZSBnbG9iIHN0cmluZyBmcm9tIHRoZSBzcGVjaWZpZWQgYHJvb3RgIGRpcmVjdG9yeSBhbmQgeWllbGQgZWFjaFxuICogcmVzdWx0IGFzIGEgYFdhbGtFbnRyeWAgb2JqZWN0LlxuICpcbiAqIFNlZSBbYGdsb2JUb1JlZ0V4cCgpYF0oLi4vcGF0aC9nbG9iLnRzI2dsb2JUb1JlZ0V4cCkgZm9yIGRldGFpbHMgb24gc3VwcG9ydGVkXG4gKiBzeW50YXguXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBleHBhbmRHbG9iIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vZnMvZXhwYW5kX2dsb2IudHNcIjtcbiAqIGZvciBhd2FpdCAoY29uc3QgZmlsZSBvZiBleHBhbmRHbG9iKFwiKipcXC8qLnRzXCIpKSB7XG4gKiAgIGNvbnNvbGUubG9nKGZpbGUpO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogZXhwYW5kR2xvYihcbiAgZ2xvYjogc3RyaW5nIHwgVVJMLFxuICB7XG4gICAgcm9vdCxcbiAgICBleGNsdWRlID0gW10sXG4gICAgaW5jbHVkZURpcnMgPSB0cnVlLFxuICAgIGV4dGVuZGVkID0gdHJ1ZSxcbiAgICBnbG9ic3RhciA9IHRydWUsXG4gICAgY2FzZUluc2Vuc2l0aXZlLFxuICAgIGZvbGxvd1N5bWxpbmtzLFxuICAgIGNhbm9uaWNhbGl6ZSxcbiAgfTogRXhwYW5kR2xvYk9wdGlvbnMgPSB7fSxcbik6IEFzeW5jSXRlcmFibGVJdGVyYXRvcjxXYWxrRW50cnk+IHtcbiAgY29uc3Qge1xuICAgIHNlZ21lbnRzLFxuICAgIGlzQWJzb2x1dGU6IGlzR2xvYkFic29sdXRlLFxuICAgIGhhc1RyYWlsaW5nU2VwLFxuICAgIHdpblJvb3QsXG4gIH0gPSBzcGxpdCh0b1BhdGhTdHJpbmcoZ2xvYikpO1xuICByb290ID8/PSBpc0dsb2JBYnNvbHV0ZSA/IHdpblJvb3QgPz8gXCIvXCIgOiBEZW5vLmN3ZCgpO1xuXG4gIGNvbnN0IGdsb2JPcHRpb25zOiBHbG9iT3B0aW9ucyA9IHsgZXh0ZW5kZWQsIGdsb2JzdGFyLCBjYXNlSW5zZW5zaXRpdmUgfTtcbiAgY29uc3QgYWJzUm9vdCA9IGlzR2xvYkFic29sdXRlID8gcm9vdCA6IHJlc29sdmUocm9vdCEpOyAvLyByb290IGlzIGFsd2F5cyBzdHJpbmcgaGVyZVxuICBjb25zdCByZXNvbHZlRnJvbVJvb3QgPSAocGF0aDogc3RyaW5nKTogc3RyaW5nID0+IHJlc29sdmUoYWJzUm9vdCwgcGF0aCk7XG4gIGNvbnN0IGV4Y2x1ZGVQYXR0ZXJucyA9IGV4Y2x1ZGVcbiAgICAubWFwKHJlc29sdmVGcm9tUm9vdClcbiAgICAubWFwKChzOiBzdHJpbmcpOiBSZWdFeHAgPT4gZ2xvYlRvUmVnRXhwKHMsIGdsb2JPcHRpb25zKSk7XG4gIGNvbnN0IHNob3VsZEluY2x1ZGUgPSAocGF0aDogc3RyaW5nKTogYm9vbGVhbiA9PlxuICAgICFleGNsdWRlUGF0dGVybnMuc29tZSgocDogUmVnRXhwKTogYm9vbGVhbiA9PiAhIXBhdGgubWF0Y2gocCkpO1xuXG4gIGxldCBmaXhlZFJvb3QgPSBpc0dsb2JBYnNvbHV0ZVxuICAgID8gd2luUm9vdCAhPT0gdW5kZWZpbmVkID8gd2luUm9vdCA6IFwiL1wiXG4gICAgOiBhYnNSb290O1xuICB3aGlsZSAoc2VnbWVudHMubGVuZ3RoID4gMCAmJiAhaXNHbG9iKHNlZ21lbnRzWzBdKSkge1xuICAgIGNvbnN0IHNlZyA9IHNlZ21lbnRzLnNoaWZ0KCk7XG4gICAgYXNzZXJ0KHNlZyAhPT0gdW5kZWZpbmVkKTtcbiAgICBmaXhlZFJvb3QgPSBqb2luR2xvYnMoW2ZpeGVkUm9vdCwgc2VnXSwgZ2xvYk9wdGlvbnMpO1xuICB9XG5cbiAgbGV0IGZpeGVkUm9vdEluZm86IFdhbGtFbnRyeTtcbiAgdHJ5IHtcbiAgICBmaXhlZFJvb3RJbmZvID0gYXdhaXQgY3JlYXRlV2Fsa0VudHJ5KGZpeGVkUm9vdCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRocm93VW5sZXNzTm90Rm91bmQoZXJyb3IpO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24qIGFkdmFuY2VNYXRjaChcbiAgICB3YWxrSW5mbzogV2Fsa0VudHJ5LFxuICAgIGdsb2JTZWdtZW50OiBzdHJpbmcsXG4gICk6IEFzeW5jSXRlcmFibGVJdGVyYXRvcjxXYWxrRW50cnk+IHtcbiAgICBpZiAoIXdhbGtJbmZvLmlzRGlyZWN0b3J5KSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChnbG9iU2VnbWVudCA9PT0gXCIuLlwiKSB7XG4gICAgICBjb25zdCBwYXJlbnRQYXRoID0gam9pbkdsb2JzKFt3YWxrSW5mby5wYXRoLCBcIi4uXCJdLCBnbG9iT3B0aW9ucyk7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoc2hvdWxkSW5jbHVkZShwYXJlbnRQYXRoKSkge1xuICAgICAgICAgIHJldHVybiB5aWVsZCBhd2FpdCBjcmVhdGVXYWxrRW50cnkocGFyZW50UGF0aCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRocm93VW5sZXNzTm90Rm91bmQoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoZ2xvYlNlZ21lbnQgPT09IFwiKipcIikge1xuICAgICAgcmV0dXJuIHlpZWxkKiB3YWxrKHdhbGtJbmZvLnBhdGgsIHtcbiAgICAgICAgc2tpcDogZXhjbHVkZVBhdHRlcm5zLFxuICAgICAgICBtYXhEZXB0aDogZ2xvYnN0YXIgPyBJbmZpbml0eSA6IDEsXG4gICAgICAgIGZvbGxvd1N5bWxpbmtzLFxuICAgICAgICBjYW5vbmljYWxpemUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZ2xvYlBhdHRlcm4gPSBnbG9iVG9SZWdFeHAoZ2xvYlNlZ21lbnQsIGdsb2JPcHRpb25zKTtcbiAgICBmb3IgYXdhaXQgKFxuICAgICAgY29uc3Qgd2Fsa0VudHJ5IG9mIHdhbGsod2Fsa0luZm8ucGF0aCwge1xuICAgICAgICBtYXhEZXB0aDogMSxcbiAgICAgICAgc2tpcDogZXhjbHVkZVBhdHRlcm5zLFxuICAgICAgICBmb2xsb3dTeW1saW5rcyxcbiAgICAgIH0pXG4gICAgKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHdhbGtFbnRyeS5wYXRoICE9PSB3YWxrSW5mby5wYXRoICYmXG4gICAgICAgIHdhbGtFbnRyeS5uYW1lLm1hdGNoKGdsb2JQYXR0ZXJuKVxuICAgICAgKSB7XG4gICAgICAgIHlpZWxkIHdhbGtFbnRyeTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsZXQgY3VycmVudE1hdGNoZXM6IFdhbGtFbnRyeVtdID0gW2ZpeGVkUm9vdEluZm9dO1xuICBmb3IgKGNvbnN0IHNlZ21lbnQgb2Ygc2VnbWVudHMpIHtcbiAgICAvLyBBZHZhbmNpbmcgdGhlIGxpc3Qgb2YgY3VycmVudCBtYXRjaGVzIG1heSBpbnRyb2R1Y2UgZHVwbGljYXRlcywgc28gd2VcbiAgICAvLyBwYXNzIGV2ZXJ5dGhpbmcgdGhyb3VnaCB0aGlzIE1hcC5cbiAgICBjb25zdCBuZXh0TWF0Y2hNYXA6IE1hcDxzdHJpbmcsIFdhbGtFbnRyeT4gPSBuZXcgTWFwKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjdXJyZW50TWF0Y2hlcy5tYXAoYXN5bmMgKGN1cnJlbnRNYXRjaCkgPT4ge1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IG5leHRNYXRjaCBvZiBhZHZhbmNlTWF0Y2goY3VycmVudE1hdGNoLCBzZWdtZW50KSkge1xuICAgICAgICAgIG5leHRNYXRjaE1hcC5zZXQobmV4dE1hdGNoLnBhdGgsIG5leHRNYXRjaCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gICAgY3VycmVudE1hdGNoZXMgPSBbLi4ubmV4dE1hdGNoTWFwLnZhbHVlcygpXS5zb3J0KGNvbXBhcmVQYXRoKTtcbiAgfVxuXG4gIGlmIChoYXNUcmFpbGluZ1NlcCkge1xuICAgIGN1cnJlbnRNYXRjaGVzID0gY3VycmVudE1hdGNoZXMuZmlsdGVyKFxuICAgICAgKGVudHJ5OiBXYWxrRW50cnkpOiBib29sZWFuID0+IGVudHJ5LmlzRGlyZWN0b3J5LFxuICAgICk7XG4gIH1cbiAgaWYgKCFpbmNsdWRlRGlycykge1xuICAgIGN1cnJlbnRNYXRjaGVzID0gY3VycmVudE1hdGNoZXMuZmlsdGVyKFxuICAgICAgKGVudHJ5OiBXYWxrRW50cnkpOiBib29sZWFuID0+ICFlbnRyeS5pc0RpcmVjdG9yeSxcbiAgICApO1xuICB9XG4gIHlpZWxkKiBjdXJyZW50TWF0Y2hlcztcbn1cblxuLyoqXG4gKiBTeW5jaHJvbm91cyB2ZXJzaW9uIG9mIGBleHBhbmRHbG9iKClgLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZXhwYW5kR2xvYlN5bmMgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9mcy9leHBhbmRfZ2xvYi50c1wiO1xuICogZm9yIChjb25zdCBmaWxlIG9mIGV4cGFuZEdsb2JTeW5jKFwiKipcXC8qLnRzXCIpKSB7XG4gKiAgIGNvbnNvbGUubG9nKGZpbGUpO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiogZXhwYW5kR2xvYlN5bmMoXG4gIGdsb2I6IHN0cmluZyB8IFVSTCxcbiAge1xuICAgIHJvb3QsXG4gICAgZXhjbHVkZSA9IFtdLFxuICAgIGluY2x1ZGVEaXJzID0gdHJ1ZSxcbiAgICBleHRlbmRlZCA9IHRydWUsXG4gICAgZ2xvYnN0YXIgPSB0cnVlLFxuICAgIGNhc2VJbnNlbnNpdGl2ZSxcbiAgICBmb2xsb3dTeW1saW5rcyxcbiAgICBjYW5vbmljYWxpemUsXG4gIH06IEV4cGFuZEdsb2JPcHRpb25zID0ge30sXG4pOiBJdGVyYWJsZUl0ZXJhdG9yPFdhbGtFbnRyeT4ge1xuICBjb25zdCB7XG4gICAgc2VnbWVudHMsXG4gICAgaXNBYnNvbHV0ZTogaXNHbG9iQWJzb2x1dGUsXG4gICAgaGFzVHJhaWxpbmdTZXAsXG4gICAgd2luUm9vdCxcbiAgfSA9IHNwbGl0KHRvUGF0aFN0cmluZyhnbG9iKSk7XG4gIHJvb3QgPz89IGlzR2xvYkFic29sdXRlID8gd2luUm9vdCA/PyBcIi9cIiA6IERlbm8uY3dkKCk7XG5cbiAgY29uc3QgZ2xvYk9wdGlvbnM6IEdsb2JPcHRpb25zID0geyBleHRlbmRlZCwgZ2xvYnN0YXIsIGNhc2VJbnNlbnNpdGl2ZSB9O1xuICBjb25zdCBhYnNSb290ID0gaXNHbG9iQWJzb2x1dGUgPyByb290IDogcmVzb2x2ZShyb290ISk7IC8vIHJvb3QgaXMgYWx3YXlzIHN0cmluZyBoZXJlXG4gIGNvbnN0IHJlc29sdmVGcm9tUm9vdCA9IChwYXRoOiBzdHJpbmcpOiBzdHJpbmcgPT4gcmVzb2x2ZShhYnNSb290LCBwYXRoKTtcbiAgY29uc3QgZXhjbHVkZVBhdHRlcm5zID0gZXhjbHVkZVxuICAgIC5tYXAocmVzb2x2ZUZyb21Sb290KVxuICAgIC5tYXAoKHM6IHN0cmluZyk6IFJlZ0V4cCA9PiBnbG9iVG9SZWdFeHAocywgZ2xvYk9wdGlvbnMpKTtcbiAgY29uc3Qgc2hvdWxkSW5jbHVkZSA9IChwYXRoOiBzdHJpbmcpOiBib29sZWFuID0+XG4gICAgIWV4Y2x1ZGVQYXR0ZXJucy5zb21lKChwOiBSZWdFeHApOiBib29sZWFuID0+ICEhcGF0aC5tYXRjaChwKSk7XG5cbiAgbGV0IGZpeGVkUm9vdCA9IGlzR2xvYkFic29sdXRlXG4gICAgPyB3aW5Sb290ICE9PSB1bmRlZmluZWQgPyB3aW5Sb290IDogXCIvXCJcbiAgICA6IGFic1Jvb3Q7XG4gIHdoaWxlIChzZWdtZW50cy5sZW5ndGggPiAwICYmICFpc0dsb2Ioc2VnbWVudHNbMF0pKSB7XG4gICAgY29uc3Qgc2VnID0gc2VnbWVudHMuc2hpZnQoKTtcbiAgICBhc3NlcnQoc2VnICE9PSB1bmRlZmluZWQpO1xuICAgIGZpeGVkUm9vdCA9IGpvaW5HbG9icyhbZml4ZWRSb290LCBzZWddLCBnbG9iT3B0aW9ucyk7XG4gIH1cblxuICBsZXQgZml4ZWRSb290SW5mbzogV2Fsa0VudHJ5O1xuICB0cnkge1xuICAgIGZpeGVkUm9vdEluZm8gPSBjcmVhdGVXYWxrRW50cnlTeW5jKGZpeGVkUm9vdCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRocm93VW5sZXNzTm90Rm91bmQoZXJyb3IpO1xuICB9XG5cbiAgZnVuY3Rpb24qIGFkdmFuY2VNYXRjaChcbiAgICB3YWxrSW5mbzogV2Fsa0VudHJ5LFxuICAgIGdsb2JTZWdtZW50OiBzdHJpbmcsXG4gICk6IEl0ZXJhYmxlSXRlcmF0b3I8V2Fsa0VudHJ5PiB7XG4gICAgaWYgKCF3YWxrSW5mby5pc0RpcmVjdG9yeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoZ2xvYlNlZ21lbnQgPT09IFwiLi5cIikge1xuICAgICAgY29uc3QgcGFyZW50UGF0aCA9IGpvaW5HbG9icyhbd2Fsa0luZm8ucGF0aCwgXCIuLlwiXSwgZ2xvYk9wdGlvbnMpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHNob3VsZEluY2x1ZGUocGFyZW50UGF0aCkpIHtcbiAgICAgICAgICByZXR1cm4geWllbGQgY3JlYXRlV2Fsa0VudHJ5U3luYyhwYXJlbnRQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3dVbmxlc3NOb3RGb3VuZChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChnbG9iU2VnbWVudCA9PT0gXCIqKlwiKSB7XG4gICAgICByZXR1cm4geWllbGQqIHdhbGtTeW5jKHdhbGtJbmZvLnBhdGgsIHtcbiAgICAgICAgc2tpcDogZXhjbHVkZVBhdHRlcm5zLFxuICAgICAgICBtYXhEZXB0aDogZ2xvYnN0YXIgPyBJbmZpbml0eSA6IDEsXG4gICAgICAgIGZvbGxvd1N5bWxpbmtzLFxuICAgICAgICBjYW5vbmljYWxpemUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZ2xvYlBhdHRlcm4gPSBnbG9iVG9SZWdFeHAoZ2xvYlNlZ21lbnQsIGdsb2JPcHRpb25zKTtcbiAgICBmb3IgKFxuICAgICAgY29uc3Qgd2Fsa0VudHJ5IG9mIHdhbGtTeW5jKHdhbGtJbmZvLnBhdGgsIHtcbiAgICAgICAgbWF4RGVwdGg6IDEsXG4gICAgICAgIHNraXA6IGV4Y2x1ZGVQYXR0ZXJucyxcbiAgICAgICAgZm9sbG93U3ltbGlua3MsXG4gICAgICB9KVxuICAgICkge1xuICAgICAgaWYgKFxuICAgICAgICB3YWxrRW50cnkucGF0aCAhPT0gd2Fsa0luZm8ucGF0aCAmJlxuICAgICAgICB3YWxrRW50cnkubmFtZS5tYXRjaChnbG9iUGF0dGVybilcbiAgICAgICkge1xuICAgICAgICB5aWVsZCB3YWxrRW50cnk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IGN1cnJlbnRNYXRjaGVzOiBXYWxrRW50cnlbXSA9IFtmaXhlZFJvb3RJbmZvXTtcbiAgZm9yIChjb25zdCBzZWdtZW50IG9mIHNlZ21lbnRzKSB7XG4gICAgLy8gQWR2YW5jaW5nIHRoZSBsaXN0IG9mIGN1cnJlbnQgbWF0Y2hlcyBtYXkgaW50cm9kdWNlIGR1cGxpY2F0ZXMsIHNvIHdlXG4gICAgLy8gcGFzcyBldmVyeXRoaW5nIHRocm91Z2ggdGhpcyBNYXAuXG4gICAgY29uc3QgbmV4dE1hdGNoTWFwOiBNYXA8c3RyaW5nLCBXYWxrRW50cnk+ID0gbmV3IE1hcCgpO1xuICAgIGZvciAoY29uc3QgY3VycmVudE1hdGNoIG9mIGN1cnJlbnRNYXRjaGVzKSB7XG4gICAgICBmb3IgKGNvbnN0IG5leHRNYXRjaCBvZiBhZHZhbmNlTWF0Y2goY3VycmVudE1hdGNoLCBzZWdtZW50KSkge1xuICAgICAgICBuZXh0TWF0Y2hNYXAuc2V0KG5leHRNYXRjaC5wYXRoLCBuZXh0TWF0Y2gpO1xuICAgICAgfVxuICAgIH1cbiAgICBjdXJyZW50TWF0Y2hlcyA9IFsuLi5uZXh0TWF0Y2hNYXAudmFsdWVzKCldLnNvcnQoY29tcGFyZVBhdGgpO1xuICB9XG5cbiAgaWYgKGhhc1RyYWlsaW5nU2VwKSB7XG4gICAgY3VycmVudE1hdGNoZXMgPSBjdXJyZW50TWF0Y2hlcy5maWx0ZXIoXG4gICAgICAoZW50cnk6IFdhbGtFbnRyeSk6IGJvb2xlYW4gPT4gZW50cnkuaXNEaXJlY3RvcnksXG4gICAgKTtcbiAgfVxuICBpZiAoIWluY2x1ZGVEaXJzKSB7XG4gICAgY3VycmVudE1hdGNoZXMgPSBjdXJyZW50TWF0Y2hlcy5maWx0ZXIoXG4gICAgICAoZW50cnk6IFdhbGtFbnRyeSk6IGJvb2xlYW4gPT4gIWVudHJ5LmlzRGlyZWN0b3J5LFxuICAgICk7XG4gIH1cbiAgeWllbGQqIGN1cnJlbnRNYXRjaGVzO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG5pbXBvcnQgeyBpc1N1YmRpciB9IGZyb20gXCIuL19pc19zdWJkaXIudHNcIjtcbmltcG9ydCB7IGlzU2FtZVBhdGggfSBmcm9tIFwiLi9faXNfc2FtZV9wYXRoLnRzXCI7XG5cbmNvbnN0IEVYSVNUU19FUlJPUiA9IG5ldyBEZW5vLmVycm9ycy5BbHJlYWR5RXhpc3RzKFwiZGVzdCBhbHJlYWR5IGV4aXN0cy5cIik7XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIGluIHtAbGlua2NvZGUgbW92ZX0gb3Ige0BsaW5rY29kZSBtb3ZlU3luY30gd2hlbiB0aGVcbiAqIGRlc3RpbmF0aW9uIGlzIGEgc3ViZGlyZWN0b3J5IG9mIHRoZSBzb3VyY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdWJkaXJlY3RvcnlNb3ZlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIC8qKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlLiAqL1xuICBjb25zdHJ1Y3RvcihzcmM6IHN0cmluZyB8IFVSTCwgZGVzdDogc3RyaW5nIHwgVVJMKSB7XG4gICAgc3VwZXIoXG4gICAgICBgQ2Fubm90IG1vdmUgJyR7c3JjfScgdG8gYSBzdWJkaXJlY3Rvcnkgb2YgaXRzZWxmLCAnJHtkZXN0fScuYCxcbiAgICApO1xuICB9XG59XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIG1vdmV9IGFuZCB7QGxpbmtjb2RlIG1vdmVTeW5jfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW92ZU9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgZGVzdGluYXRpb24gZmlsZSBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gaWYgaXQgYWxyZWFkeSBleGlzdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtmYWxzZX1cbiAgICovXG4gIG92ZXJ3cml0ZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogTW92ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IG1vdmUgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9mcy9tb2QudHNcIjtcbiAqXG4gKiBtb3ZlKFwiLi9mb29cIiwgXCIuL2JhclwiKTsgLy8gcmV0dXJucyBhIHByb21pc2VcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbW92ZShcbiAgc3JjOiBzdHJpbmcgfCBVUkwsXG4gIGRlc3Q6IHN0cmluZyB8IFVSTCxcbiAgeyBvdmVyd3JpdGUgPSBmYWxzZSB9OiBNb3ZlT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHNyY1N0YXQgPSBhd2FpdCBEZW5vLnN0YXQoc3JjKTtcblxuICBpZiAoXG4gICAgc3JjU3RhdC5pc0RpcmVjdG9yeSAmJlxuICAgIChpc1N1YmRpcihzcmMsIGRlc3QpIHx8IGlzU2FtZVBhdGgoc3JjLCBkZXN0KSlcbiAgKSB7XG4gICAgdGhyb3cgbmV3IFN1YmRpcmVjdG9yeU1vdmVFcnJvcihzcmMsIGRlc3QpO1xuICB9XG5cbiAgaWYgKG92ZXJ3cml0ZSkge1xuICAgIGlmIChpc1NhbWVQYXRoKHNyYywgZGVzdCkpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgRGVuby5yZW1vdmUoZGVzdCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgRGVuby5lcnJvcnMuTm90Rm91bmQpKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgRGVuby5sc3RhdChkZXN0KTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChFWElTVFNfRVJST1IpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gRG8gbm90aGluZy4uLlxuICAgIH1cbiAgfVxuXG4gIGF3YWl0IERlbm8ucmVuYW1lKHNyYywgZGVzdCk7XG59XG5cbi8qKlxuICogTW92ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSBzeW5jaHJvbm91c2x5LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbW92ZVN5bmMgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9mcy9tb2QudHNcIjtcbiAqXG4gKiBtb3ZlU3luYyhcIi4vZm9vXCIsIFwiLi9iYXJcIik7IC8vIHZvaWRcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbW92ZVN5bmMoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIHsgb3ZlcndyaXRlID0gZmFsc2UgfTogTW92ZU9wdGlvbnMgPSB7fSxcbik6IHZvaWQge1xuICBjb25zdCBzcmNTdGF0ID0gRGVuby5zdGF0U3luYyhzcmMpO1xuXG4gIGlmIChcbiAgICBzcmNTdGF0LmlzRGlyZWN0b3J5ICYmXG4gICAgKGlzU3ViZGlyKHNyYywgZGVzdCkgfHwgaXNTYW1lUGF0aChzcmMsIGRlc3QpKVxuICApIHtcbiAgICB0aHJvdyBuZXcgU3ViZGlyZWN0b3J5TW92ZUVycm9yKHNyYywgZGVzdCk7XG4gIH1cblxuICBpZiAob3ZlcndyaXRlKSB7XG4gICAgaWYgKGlzU2FtZVBhdGgoc3JjLCBkZXN0KSkgcmV0dXJuO1xuICAgIHRyeSB7XG4gICAgICBEZW5vLnJlbW92ZVN5bmMoZGVzdCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgRGVuby5lcnJvcnMuTm90Rm91bmQpKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgRGVuby5sc3RhdFN5bmMoZGVzdCk7XG4gICAgICB0aHJvdyBFWElTVFNfRVJST1I7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciA9PT0gRVhJU1RTX0VSUk9SKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIERlbm8ucmVuYW1lU3luYyhzcmMsIGRlc3QpO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG5cbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSBcIi4uL3BhdGgvYmFzZW5hbWUudHNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwiLi4vcGF0aC9qb2luLnRzXCI7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcIi4uL3BhdGgvcmVzb2x2ZS50c1wiO1xuaW1wb3J0IHsgZW5zdXJlRGlyLCBlbnN1cmVEaXJTeW5jIH0gZnJvbSBcIi4vZW5zdXJlX2Rpci50c1wiO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4uL2Fzc2VydC9hc3NlcnQudHNcIjtcbmltcG9ydCB7IGdldEZpbGVJbmZvVHlwZSB9IGZyb20gXCIuL19nZXRfZmlsZV9pbmZvX3R5cGUudHNcIjtcbmltcG9ydCB7IHRvUGF0aFN0cmluZyB9IGZyb20gXCIuL190b19wYXRoX3N0cmluZy50c1wiO1xuaW1wb3J0IHsgaXNTdWJkaXIgfSBmcm9tIFwiLi9faXNfc3ViZGlyLnRzXCI7XG5cbmNvbnN0IGlzV2luZG93cyA9IERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiO1xuXG4vKiogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBjb3B5fSBhbmQge0BsaW5rY29kZSBjb3B5U3luY30uICovXG5leHBvcnQgaW50ZXJmYWNlIENvcHlPcHRpb25zIHtcbiAgLyoqXG4gICAqIG92ZXJ3cml0ZSBleGlzdGluZyBmaWxlIG9yIGRpcmVjdG9yeS5cbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgb3ZlcndyaXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCB3aWxsIHNldCBsYXN0IG1vZGlmaWNhdGlvbiBhbmQgYWNjZXNzIHRpbWVzIHRvIHRoZSBvbmVzIG9mIHRoZVxuICAgKiBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gICAqIFdoZW4gYGZhbHNlYCwgdGltZXN0YW1wIGJlaGF2aW9yIGlzIE9TLWRlcGVuZGVudC5cbiAgICpcbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgcHJlc2VydmVUaW1lc3RhbXBzPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEludGVybmFsQ29weU9wdGlvbnMgZXh0ZW5kcyBDb3B5T3B0aW9ucyB7XG4gIC8qKiBAZGVmYXVsdCB7ZmFsc2V9ICovXG4gIGlzRm9sZGVyPzogYm9vbGVhbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZW5zdXJlVmFsaWRDb3B5KFxuICBzcmM6IHN0cmluZyB8IFVSTCxcbiAgZGVzdDogc3RyaW5nIHwgVVJMLFxuICBvcHRpb25zOiBJbnRlcm5hbENvcHlPcHRpb25zLFxuKTogUHJvbWlzZTxEZW5vLkZpbGVJbmZvIHwgdW5kZWZpbmVkPiB7XG4gIGxldCBkZXN0U3RhdDogRGVuby5GaWxlSW5mbztcblxuICB0cnkge1xuICAgIGRlc3RTdGF0ID0gYXdhaXQgRGVuby5sc3RhdChkZXN0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLk5vdEZvdW5kKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IGVycjtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmlzRm9sZGVyICYmICFkZXN0U3RhdC5pc0RpcmVjdG9yeSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3Qgb3ZlcndyaXRlIG5vbi1kaXJlY3RvcnkgJyR7ZGVzdH0nIHdpdGggZGlyZWN0b3J5ICcke3NyY30nLmAsXG4gICAgKTtcbiAgfVxuICBpZiAoIW9wdGlvbnMub3ZlcndyaXRlKSB7XG4gICAgdGhyb3cgbmV3IERlbm8uZXJyb3JzLkFscmVhZHlFeGlzdHMoYCcke2Rlc3R9JyBhbHJlYWR5IGV4aXN0cy5gKTtcbiAgfVxuXG4gIHJldHVybiBkZXN0U3RhdDtcbn1cblxuZnVuY3Rpb24gZW5zdXJlVmFsaWRDb3B5U3luYyhcbiAgc3JjOiBzdHJpbmcgfCBVUkwsXG4gIGRlc3Q6IHN0cmluZyB8IFVSTCxcbiAgb3B0aW9uczogSW50ZXJuYWxDb3B5T3B0aW9ucyxcbik6IERlbm8uRmlsZUluZm8gfCB1bmRlZmluZWQge1xuICBsZXQgZGVzdFN0YXQ6IERlbm8uRmlsZUluZm87XG4gIHRyeSB7XG4gICAgZGVzdFN0YXQgPSBEZW5vLmxzdGF0U3luYyhkZXN0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLk5vdEZvdW5kKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IGVycjtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmlzRm9sZGVyICYmICFkZXN0U3RhdC5pc0RpcmVjdG9yeSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3Qgb3ZlcndyaXRlIG5vbi1kaXJlY3RvcnkgJyR7ZGVzdH0nIHdpdGggZGlyZWN0b3J5ICcke3NyY30nLmAsXG4gICAgKTtcbiAgfVxuICBpZiAoIW9wdGlvbnMub3ZlcndyaXRlKSB7XG4gICAgdGhyb3cgbmV3IERlbm8uZXJyb3JzLkFscmVhZHlFeGlzdHMoYCcke2Rlc3R9JyBhbHJlYWR5IGV4aXN0cy5gKTtcbiAgfVxuXG4gIHJldHVybiBkZXN0U3RhdDtcbn1cblxuLyogY29weSBmaWxlIHRvIGRlc3QgKi9cbmFzeW5jIGZ1bmN0aW9uIGNvcHlGaWxlKFxuICBzcmM6IHN0cmluZyB8IFVSTCxcbiAgZGVzdDogc3RyaW5nIHwgVVJMLFxuICBvcHRpb25zOiBJbnRlcm5hbENvcHlPcHRpb25zLFxuKSB7XG4gIGF3YWl0IGVuc3VyZVZhbGlkQ29weShzcmMsIGRlc3QsIG9wdGlvbnMpO1xuICBhd2FpdCBEZW5vLmNvcHlGaWxlKHNyYywgZGVzdCk7XG4gIGlmIChvcHRpb25zLnByZXNlcnZlVGltZXN0YW1wcykge1xuICAgIGNvbnN0IHN0YXRJbmZvID0gYXdhaXQgRGVuby5zdGF0KHNyYyk7XG4gICAgYXNzZXJ0KHN0YXRJbmZvLmF0aW1lIGluc3RhbmNlb2YgRGF0ZSwgYHN0YXRJbmZvLmF0aW1lIGlzIHVuYXZhaWxhYmxlYCk7XG4gICAgYXNzZXJ0KHN0YXRJbmZvLm10aW1lIGluc3RhbmNlb2YgRGF0ZSwgYHN0YXRJbmZvLm10aW1lIGlzIHVuYXZhaWxhYmxlYCk7XG4gICAgYXdhaXQgRGVuby51dGltZShkZXN0LCBzdGF0SW5mby5hdGltZSwgc3RhdEluZm8ubXRpbWUpO1xuICB9XG59XG4vKiBjb3B5IGZpbGUgdG8gZGVzdCBzeW5jaHJvbm91c2x5ICovXG5mdW5jdGlvbiBjb3B5RmlsZVN5bmMoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM6IEludGVybmFsQ29weU9wdGlvbnMsXG4pIHtcbiAgZW5zdXJlVmFsaWRDb3B5U3luYyhzcmMsIGRlc3QsIG9wdGlvbnMpO1xuICBEZW5vLmNvcHlGaWxlU3luYyhzcmMsIGRlc3QpO1xuICBpZiAob3B0aW9ucy5wcmVzZXJ2ZVRpbWVzdGFtcHMpIHtcbiAgICBjb25zdCBzdGF0SW5mbyA9IERlbm8uc3RhdFN5bmMoc3JjKTtcbiAgICBhc3NlcnQoc3RhdEluZm8uYXRpbWUgaW5zdGFuY2VvZiBEYXRlLCBgc3RhdEluZm8uYXRpbWUgaXMgdW5hdmFpbGFibGVgKTtcbiAgICBhc3NlcnQoc3RhdEluZm8ubXRpbWUgaW5zdGFuY2VvZiBEYXRlLCBgc3RhdEluZm8ubXRpbWUgaXMgdW5hdmFpbGFibGVgKTtcbiAgICBEZW5vLnV0aW1lU3luYyhkZXN0LCBzdGF0SW5mby5hdGltZSwgc3RhdEluZm8ubXRpbWUpO1xuICB9XG59XG5cbi8qIGNvcHkgc3ltbGluayB0byBkZXN0ICovXG5hc3luYyBmdW5jdGlvbiBjb3B5U3ltTGluayhcbiAgc3JjOiBzdHJpbmcgfCBVUkwsXG4gIGRlc3Q6IHN0cmluZyB8IFVSTCxcbiAgb3B0aW9uczogSW50ZXJuYWxDb3B5T3B0aW9ucyxcbikge1xuICBhd2FpdCBlbnN1cmVWYWxpZENvcHkoc3JjLCBkZXN0LCBvcHRpb25zKTtcbiAgY29uc3Qgb3JpZ2luU3JjRmlsZVBhdGggPSBhd2FpdCBEZW5vLnJlYWRMaW5rKHNyYyk7XG4gIGNvbnN0IHR5cGUgPSBnZXRGaWxlSW5mb1R5cGUoYXdhaXQgRGVuby5sc3RhdChzcmMpKTtcbiAgaWYgKGlzV2luZG93cykge1xuICAgIGF3YWl0IERlbm8uc3ltbGluayhvcmlnaW5TcmNGaWxlUGF0aCwgZGVzdCwge1xuICAgICAgdHlwZTogdHlwZSA9PT0gXCJkaXJcIiA/IFwiZGlyXCIgOiBcImZpbGVcIixcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBEZW5vLnN5bWxpbmsob3JpZ2luU3JjRmlsZVBhdGgsIGRlc3QpO1xuICB9XG4gIGlmIChvcHRpb25zLnByZXNlcnZlVGltZXN0YW1wcykge1xuICAgIGNvbnN0IHN0YXRJbmZvID0gYXdhaXQgRGVuby5sc3RhdChzcmMpO1xuICAgIGFzc2VydChzdGF0SW5mby5hdGltZSBpbnN0YW5jZW9mIERhdGUsIGBzdGF0SW5mby5hdGltZSBpcyB1bmF2YWlsYWJsZWApO1xuICAgIGFzc2VydChzdGF0SW5mby5tdGltZSBpbnN0YW5jZW9mIERhdGUsIGBzdGF0SW5mby5tdGltZSBpcyB1bmF2YWlsYWJsZWApO1xuICAgIGF3YWl0IERlbm8udXRpbWUoZGVzdCwgc3RhdEluZm8uYXRpbWUsIHN0YXRJbmZvLm10aW1lKTtcbiAgfVxufVxuXG4vKiBjb3B5IHN5bWxpbmsgdG8gZGVzdCBzeW5jaHJvbm91c2x5ICovXG5mdW5jdGlvbiBjb3B5U3ltbGlua1N5bmMoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM6IEludGVybmFsQ29weU9wdGlvbnMsXG4pIHtcbiAgZW5zdXJlVmFsaWRDb3B5U3luYyhzcmMsIGRlc3QsIG9wdGlvbnMpO1xuICBjb25zdCBvcmlnaW5TcmNGaWxlUGF0aCA9IERlbm8ucmVhZExpbmtTeW5jKHNyYyk7XG4gIGNvbnN0IHR5cGUgPSBnZXRGaWxlSW5mb1R5cGUoRGVuby5sc3RhdFN5bmMoc3JjKSk7XG4gIGlmIChpc1dpbmRvd3MpIHtcbiAgICBEZW5vLnN5bWxpbmtTeW5jKG9yaWdpblNyY0ZpbGVQYXRoLCBkZXN0LCB7XG4gICAgICB0eXBlOiB0eXBlID09PSBcImRpclwiID8gXCJkaXJcIiA6IFwiZmlsZVwiLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIERlbm8uc3ltbGlua1N5bmMob3JpZ2luU3JjRmlsZVBhdGgsIGRlc3QpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMucHJlc2VydmVUaW1lc3RhbXBzKSB7XG4gICAgY29uc3Qgc3RhdEluZm8gPSBEZW5vLmxzdGF0U3luYyhzcmMpO1xuICAgIGFzc2VydChzdGF0SW5mby5hdGltZSBpbnN0YW5jZW9mIERhdGUsIGBzdGF0SW5mby5hdGltZSBpcyB1bmF2YWlsYWJsZWApO1xuICAgIGFzc2VydChzdGF0SW5mby5tdGltZSBpbnN0YW5jZW9mIERhdGUsIGBzdGF0SW5mby5tdGltZSBpcyB1bmF2YWlsYWJsZWApO1xuICAgIERlbm8udXRpbWVTeW5jKGRlc3QsIHN0YXRJbmZvLmF0aW1lLCBzdGF0SW5mby5tdGltZSk7XG4gIH1cbn1cblxuLyogY29weSBmb2xkZXIgZnJvbSBzcmMgdG8gZGVzdC4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNvcHlEaXIoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM6IENvcHlPcHRpb25zLFxuKSB7XG4gIGNvbnN0IGRlc3RTdGF0ID0gYXdhaXQgZW5zdXJlVmFsaWRDb3B5KHNyYywgZGVzdCwge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgaXNGb2xkZXI6IHRydWUsXG4gIH0pO1xuXG4gIGlmICghZGVzdFN0YXQpIHtcbiAgICBhd2FpdCBlbnN1cmVEaXIoZGVzdCk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5wcmVzZXJ2ZVRpbWVzdGFtcHMpIHtcbiAgICBjb25zdCBzcmNTdGF0SW5mbyA9IGF3YWl0IERlbm8uc3RhdChzcmMpO1xuICAgIGFzc2VydChzcmNTdGF0SW5mby5hdGltZSBpbnN0YW5jZW9mIERhdGUsIGBzdGF0SW5mby5hdGltZSBpcyB1bmF2YWlsYWJsZWApO1xuICAgIGFzc2VydChzcmNTdGF0SW5mby5tdGltZSBpbnN0YW5jZW9mIERhdGUsIGBzdGF0SW5mby5tdGltZSBpcyB1bmF2YWlsYWJsZWApO1xuICAgIGF3YWl0IERlbm8udXRpbWUoZGVzdCwgc3JjU3RhdEluZm8uYXRpbWUsIHNyY1N0YXRJbmZvLm10aW1lKTtcbiAgfVxuXG4gIHNyYyA9IHRvUGF0aFN0cmluZyhzcmMpO1xuICBkZXN0ID0gdG9QYXRoU3RyaW5nKGRlc3QpO1xuXG4gIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgZm9yIGF3YWl0IChjb25zdCBlbnRyeSBvZiBEZW5vLnJlYWREaXIoc3JjKSkge1xuICAgIGNvbnN0IHNyY1BhdGggPSBqb2luKHNyYywgZW50cnkubmFtZSk7XG4gICAgY29uc3QgZGVzdFBhdGggPSBqb2luKGRlc3QsIGJhc2VuYW1lKHNyY1BhdGggYXMgc3RyaW5nKSk7XG4gICAgaWYgKGVudHJ5LmlzU3ltbGluaykge1xuICAgICAgcHJvbWlzZXMucHVzaChjb3B5U3ltTGluayhzcmNQYXRoLCBkZXN0UGF0aCwgb3B0aW9ucykpO1xuICAgIH0gZWxzZSBpZiAoZW50cnkuaXNEaXJlY3RvcnkpIHtcbiAgICAgIHByb21pc2VzLnB1c2goY29weURpcihzcmNQYXRoLCBkZXN0UGF0aCwgb3B0aW9ucykpO1xuICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKSB7XG4gICAgICBwcm9taXNlcy5wdXNoKGNvcHlGaWxlKHNyY1BhdGgsIGRlc3RQYXRoLCBvcHRpb25zKSk7XG4gICAgfVxuICB9XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufVxuXG4vKiBjb3B5IGZvbGRlciBmcm9tIHNyYyB0byBkZXN0IHN5bmNocm9ub3VzbHkgKi9cbmZ1bmN0aW9uIGNvcHlEaXJTeW5jKFxuICBzcmM6IHN0cmluZyB8IFVSTCxcbiAgZGVzdDogc3RyaW5nIHwgVVJMLFxuICBvcHRpb25zOiBDb3B5T3B0aW9ucyxcbikge1xuICBjb25zdCBkZXN0U3RhdCA9IGVuc3VyZVZhbGlkQ29weVN5bmMoc3JjLCBkZXN0LCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBpc0ZvbGRlcjogdHJ1ZSxcbiAgfSk7XG5cbiAgaWYgKCFkZXN0U3RhdCkge1xuICAgIGVuc3VyZURpclN5bmMoZGVzdCk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5wcmVzZXJ2ZVRpbWVzdGFtcHMpIHtcbiAgICBjb25zdCBzcmNTdGF0SW5mbyA9IERlbm8uc3RhdFN5bmMoc3JjKTtcbiAgICBhc3NlcnQoc3JjU3RhdEluZm8uYXRpbWUgaW5zdGFuY2VvZiBEYXRlLCBgc3RhdEluZm8uYXRpbWUgaXMgdW5hdmFpbGFibGVgKTtcbiAgICBhc3NlcnQoc3JjU3RhdEluZm8ubXRpbWUgaW5zdGFuY2VvZiBEYXRlLCBgc3RhdEluZm8ubXRpbWUgaXMgdW5hdmFpbGFibGVgKTtcbiAgICBEZW5vLnV0aW1lU3luYyhkZXN0LCBzcmNTdGF0SW5mby5hdGltZSwgc3JjU3RhdEluZm8ubXRpbWUpO1xuICB9XG5cbiAgc3JjID0gdG9QYXRoU3RyaW5nKHNyYyk7XG4gIGRlc3QgPSB0b1BhdGhTdHJpbmcoZGVzdCk7XG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBEZW5vLnJlYWREaXJTeW5jKHNyYykpIHtcbiAgICBjb25zdCBzcmNQYXRoID0gam9pbihzcmMsIGVudHJ5Lm5hbWUpO1xuICAgIGNvbnN0IGRlc3RQYXRoID0gam9pbihkZXN0LCBiYXNlbmFtZShzcmNQYXRoIGFzIHN0cmluZykpO1xuICAgIGlmIChlbnRyeS5pc1N5bWxpbmspIHtcbiAgICAgIGNvcHlTeW1saW5rU3luYyhzcmNQYXRoLCBkZXN0UGF0aCwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmIChlbnRyeS5pc0RpcmVjdG9yeSkge1xuICAgICAgY29weURpclN5bmMoc3JjUGF0aCwgZGVzdFBhdGgsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKSB7XG4gICAgICBjb3B5RmlsZVN5bmMoc3JjUGF0aCwgZGVzdFBhdGgsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENvcHkgYSBmaWxlIG9yIGRpcmVjdG9yeS4gVGhlIGRpcmVjdG9yeSBjYW4gaGF2ZSBjb250ZW50cy4gTGlrZSBgY3AgLXJgLlxuICogUmVxdWlyZXMgdGhlIGAtLWFsbG93LXJlYWRgIGFuZCBgLS1hbGxvdy13cml0ZWAgZmxhZy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGNvcHkgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9mcy9jb3B5LnRzXCI7XG4gKiBjb3B5KFwiLi9mb29cIiwgXCIuL2JhclwiKTsgLy8gcmV0dXJucyBhIHByb21pc2VcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzcmMgdGhlIGZpbGUvZGlyZWN0b3J5IHBhdGguXG4gKiAgICAgICAgICAgIE5vdGUgdGhhdCBpZiBgc3JjYCBpcyBhIGRpcmVjdG9yeSBpdCB3aWxsIGNvcHkgZXZlcnl0aGluZyBpbnNpZGVcbiAqICAgICAgICAgICAgb2YgdGhpcyBkaXJlY3RvcnksIG5vdCB0aGUgZW50aXJlIGRpcmVjdG9yeSBpdHNlbGZcbiAqIEBwYXJhbSBkZXN0IHRoZSBkZXN0aW5hdGlvbiBwYXRoLiBOb3RlIHRoYXQgaWYgYHNyY2AgaXMgYSBmaWxlLCBgZGVzdGAgY2Fubm90XG4gKiAgICAgICAgICAgICBiZSBhIGRpcmVjdG9yeVxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvcHkoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM6IENvcHlPcHRpb25zID0ge30sXG4pIHtcbiAgc3JjID0gcmVzb2x2ZSh0b1BhdGhTdHJpbmcoc3JjKSk7XG4gIGRlc3QgPSByZXNvbHZlKHRvUGF0aFN0cmluZyhkZXN0KSk7XG5cbiAgaWYgKHNyYyA9PT0gZGVzdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNvdXJjZSBhbmQgZGVzdGluYXRpb24gY2Fubm90IGJlIHRoZSBzYW1lLlwiKTtcbiAgfVxuXG4gIGNvbnN0IHNyY1N0YXQgPSBhd2FpdCBEZW5vLmxzdGF0KHNyYyk7XG5cbiAgaWYgKHNyY1N0YXQuaXNEaXJlY3RvcnkgJiYgaXNTdWJkaXIoc3JjLCBkZXN0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3QgY29weSAnJHtzcmN9JyB0byBhIHN1YmRpcmVjdG9yeSBvZiBpdHNlbGYsICcke2Rlc3R9Jy5gLFxuICAgICk7XG4gIH1cblxuICBpZiAoc3JjU3RhdC5pc1N5bWxpbmspIHtcbiAgICBhd2FpdCBjb3B5U3ltTGluayhzcmMsIGRlc3QsIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKHNyY1N0YXQuaXNEaXJlY3RvcnkpIHtcbiAgICBhd2FpdCBjb3B5RGlyKHNyYywgZGVzdCwgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoc3JjU3RhdC5pc0ZpbGUpIHtcbiAgICBhd2FpdCBjb3B5RmlsZShzcmMsIGRlc3QsIG9wdGlvbnMpO1xuICB9XG59XG5cbi8qKlxuICogQ29weSBhIGZpbGUgb3IgZGlyZWN0b3J5LiBUaGUgZGlyZWN0b3J5IGNhbiBoYXZlIGNvbnRlbnRzLiBMaWtlIGBjcCAtcmAuXG4gKiBSZXF1aXJlcyB0aGUgYC0tYWxsb3ctcmVhZGAgYW5kIGAtLWFsbG93LXdyaXRlYCBmbGFnLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgY29weVN5bmMgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9mcy9jb3B5LnRzXCI7XG4gKiBjb3B5U3luYyhcIi4vZm9vXCIsIFwiLi9iYXJcIik7IC8vIHZvaWRcbiAqIGBgYFxuICogQHBhcmFtIHNyYyB0aGUgZmlsZS9kaXJlY3RvcnkgcGF0aC5cbiAqICAgICAgICAgICAgTm90ZSB0aGF0IGlmIGBzcmNgIGlzIGEgZGlyZWN0b3J5IGl0IHdpbGwgY29weSBldmVyeXRoaW5nIGluc2lkZVxuICogICAgICAgICAgICBvZiB0aGlzIGRpcmVjdG9yeSwgbm90IHRoZSBlbnRpcmUgZGlyZWN0b3J5IGl0c2VsZlxuICogQHBhcmFtIGRlc3QgdGhlIGRlc3RpbmF0aW9uIHBhdGguIE5vdGUgdGhhdCBpZiBgc3JjYCBpcyBhIGZpbGUsIGBkZXN0YCBjYW5ub3RcbiAqICAgICAgICAgICAgIGJlIGEgZGlyZWN0b3J5XG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29weVN5bmMoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM6IENvcHlPcHRpb25zID0ge30sXG4pIHtcbiAgc3JjID0gcmVzb2x2ZSh0b1BhdGhTdHJpbmcoc3JjKSk7XG4gIGRlc3QgPSByZXNvbHZlKHRvUGF0aFN0cmluZyhkZXN0KSk7XG5cbiAgaWYgKHNyYyA9PT0gZGVzdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNvdXJjZSBhbmQgZGVzdGluYXRpb24gY2Fubm90IGJlIHRoZSBzYW1lLlwiKTtcbiAgfVxuXG4gIGNvbnN0IHNyY1N0YXQgPSBEZW5vLmxzdGF0U3luYyhzcmMpO1xuXG4gIGlmIChzcmNTdGF0LmlzRGlyZWN0b3J5ICYmIGlzU3ViZGlyKHNyYywgZGVzdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2Fubm90IGNvcHkgJyR7c3JjfScgdG8gYSBzdWJkaXJlY3Rvcnkgb2YgaXRzZWxmLCAnJHtkZXN0fScuYCxcbiAgICApO1xuICB9XG5cbiAgaWYgKHNyY1N0YXQuaXNTeW1saW5rKSB7XG4gICAgY29weVN5bWxpbmtTeW5jKHNyYywgZGVzdCwgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoc3JjU3RhdC5pc0RpcmVjdG9yeSkge1xuICAgIGNvcHlEaXJTeW5jKHNyYywgZGVzdCwgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoc3JjU3RhdC5pc0ZpbGUpIHtcbiAgICBjb3B5RmlsZVN5bmMoc3JjLCBkZXN0LCBvcHRpb25zKTtcbiAgfVxufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG5cbi8qKiBFbmQtb2YtbGluZSBjaGFyYWN0ZXIgZm9yIFBPU0lYIHBsYXRmb3JtcyBzdWNoIGFzIG1hY09TIGFuZCBMaW51eC4gKi9cbmV4cG9ydCBjb25zdCBMRiA9IFwiXFxuXCIgYXMgY29uc3Q7XG5cbi8qKiBFbmQtb2YtbGluZSBjaGFyYWN0ZXIgZm9yIFdpbmRvd3MgcGxhdGZvcm1zLiAqL1xuZXhwb3J0IGNvbnN0IENSTEYgPSBcIlxcclxcblwiIGFzIGNvbnN0O1xuXG4vKipcbiAqIEVuZC1vZi1saW5lIGNoYXJhY3RlciBldmFsdWF0ZWQgZm9yIHRoZSBjdXJyZW50IHBsYXRmb3JtLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgRU9MIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vZnMvZW9sLnRzXCI7XG4gKlxuICogRU9MOyAvLyBSZXR1cm5zIFwiXFxuXCIgb24gUE9TSVggcGxhdGZvcm1zIG9yIFwiXFxyXFxuXCIgb24gV2luZG93c1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBFT0w6IFwiXFxuXCIgfCBcIlxcclxcblwiID0gRGVubz8uYnVpbGQub3MgPT09IFwid2luZG93c1wiID8gQ1JMRiA6IExGO1xuXG5jb25zdCByZWdEZXRlY3QgPSAvKD86XFxyP1xcbikvZztcblxuLyoqXG4gKiBEZXRlY3QgdGhlIEVPTCBjaGFyYWN0ZXIgZm9yIHN0cmluZyBpbnB1dC5cbiAqIHJldHVybnMgbnVsbCBpZiBubyBuZXdsaW5lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZGV0ZWN0LCBFT0wgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9mcy9tb2QudHNcIjtcbiAqXG4gKiBjb25zdCBDUkxGaW5wdXQgPSBcImRlbm9cXHJcXG5pcyBub3RcXHJcXG5ub2RlXCI7XG4gKiBjb25zdCBNaXhlZGlucHV0ID0gXCJkZW5vXFxuaXMgbm90XFxyXFxubm9kZVwiO1xuICogY29uc3QgTEZpbnB1dCA9IFwiZGVub1xcbmlzIG5vdFxcbm5vZGVcIjtcbiAqIGNvbnN0IE5vTkxpbnB1dCA9IFwiZGVubyBpcyBub3Qgbm9kZVwiO1xuICpcbiAqIGRldGVjdChMRmlucHV0KTsgLy8gb3V0cHV0IEVPTC5MRlxuICogZGV0ZWN0KENSTEZpbnB1dCk7IC8vIG91dHB1dCBFT0wuQ1JMRlxuICogZGV0ZWN0KE1peGVkaW5wdXQpOyAvLyBvdXRwdXQgRU9MLkNSTEZcbiAqIGRldGVjdChOb05MaW5wdXQpOyAvLyBvdXRwdXQgbnVsbFxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3QoY29udGVudDogc3RyaW5nKTogdHlwZW9mIEVPTCB8IG51bGwge1xuICBjb25zdCBkID0gY29udGVudC5tYXRjaChyZWdEZXRlY3QpO1xuICBpZiAoIWQgfHwgZC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBoYXNDUkxGID0gZC5zb21lKCh4OiBzdHJpbmcpOiBib29sZWFuID0+IHggPT09IENSTEYpO1xuXG4gIHJldHVybiBoYXNDUkxGID8gQ1JMRiA6IExGO1xufVxuXG4vKipcbiAqIEZvcm1hdCB0aGUgZmlsZSB0byB0aGUgdGFyZ2V0ZWQgRU9MLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgTEYsIGZvcm1hdCB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL2ZzL21vZC50c1wiO1xuICpcbiAqIGNvbnN0IENSTEZpbnB1dCA9IFwiZGVub1xcclxcbmlzIG5vdFxcclxcbm5vZGVcIjtcbiAqXG4gKiBmb3JtYXQoQ1JMRmlucHV0LCBMRik7IC8vIG91dHB1dCBcImRlbm9cXG5pcyBub3RcXG5ub2RlXCJcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0KGNvbnRlbnQ6IHN0cmluZywgZW9sOiB0eXBlb2YgRU9MKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShyZWdEZXRlY3QsIGVvbCk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuZXhwb3J0ICogZnJvbSBcIi4vcGFyc2UudHNcIjtcbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIHtAbGlua2NvZGUgcGFyc2V9IGZ1bmN0aW9uIGZvciBwYXJzaW5nXG4gKiB7QGxpbmsgaHR0cHM6Ly9jb2RlLnZpc3VhbHN0dWRpby5jb20vZG9jcy9sYW5ndWFnZXMvanNvbiNfanNvbi13aXRoLWNvbW1lbnRzIHwgSlNPTkN9XG4gKiAoSlNPTiB3aXRoIENvbW1lbnRzKSBzdHJpbmdzLlxuICpcbiAqIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4uL2Fzc2VydC9hc3NlcnQudHNcIjtcblxuaW1wb3J0IHR5cGUgeyBKc29uVmFsdWUgfSBmcm9tIFwiLi4vanNvbi9jb21tb24udHNcIjtcbmV4cG9ydCB0eXBlIHsgSnNvblZhbHVlIH0gZnJvbSBcIi4uL2pzb24vY29tbW9uLnRzXCI7XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIHBhcnNlfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VPcHRpb25zIHtcbiAgLyoqIEFsbG93IHRyYWlsaW5nIGNvbW1hcyBhdCB0aGUgZW5kIG9mIGFycmF5cyBhbmQgb2JqZWN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQge3RydWV9XG4gICAqL1xuICBhbGxvd1RyYWlsaW5nQ29tbWE/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgSlNPTiB3aXRoIENvbW1lbnRzIChKU09OQykgc3RyaW5nIGludG8gYW4gb2JqZWN0LlxuICogSWYgYSBzeW50YXggZXJyb3IgaXMgZm91bmQsIHRocm93IGEge0BsaW5rY29kZSBTeW50YXhFcnJvcn0uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL2pzb25jL21vZC50c1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKHBhcnNlKCd7XCJmb29cIjogXCJiYXJcIiwgfSAvLyBjb21tZW50JykpOyAvLyB7IGZvbzogXCJiYXJcIiB9XG4gKiBjb25zb2xlLmxvZyhwYXJzZSgne1wiZm9vXCI6IFwiYmFyXCIsIH0gLyogY29tbWVudCAqXFwvJykpOyAvLyB7IGZvbzogXCJiYXJcIiB9XG4gKiBjb25zb2xlLmxvZyhwYXJzZSgne1wiZm9vXCI6IFwiYmFyXCIgfSAvLyBjb21tZW50Jywge1xuICogICBhbGxvd1RyYWlsaW5nQ29tbWE6IGZhbHNlLFxuICogfSkpOyAvLyB7IGZvbzogXCJiYXJcIiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gdGV4dCBBIHZhbGlkIEpTT05DIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKFxuICB0ZXh0OiBzdHJpbmcsXG4gIHsgYWxsb3dUcmFpbGluZ0NvbW1hID0gdHJ1ZSB9OiBQYXJzZU9wdGlvbnMgPSB7fSxcbik6IEpzb25WYWx1ZSB7XG4gIGlmIChuZXcudGFyZ2V0KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcInBhcnNlIGlzIG5vdCBhIGNvbnN0cnVjdG9yXCIpO1xuICB9XG4gIHJldHVybiBuZXcgSlNPTkNQYXJzZXIodGV4dCwgeyBhbGxvd1RyYWlsaW5nQ29tbWEgfSkucGFyc2UoKTtcbn1cblxudHlwZSBUb2tlblR5cGUgPVxuICB8IFwiQmVnaW5PYmplY3RcIlxuICB8IFwiRW5kT2JqZWN0XCJcbiAgfCBcIkJlZ2luQXJyYXlcIlxuICB8IFwiRW5kQXJyYXlcIlxuICB8IFwiTmFtZVNlcGFyYXRvclwiXG4gIHwgXCJWYWx1ZVNlcGFyYXRvclwiXG4gIHwgXCJOdWxsT3JUcnVlT3JGYWxzZU9yTnVtYmVyXCJcbiAgfCBcIlN0cmluZ1wiO1xuXG50eXBlIFRva2VuID0ge1xuICB0eXBlOiBFeGNsdWRlPFxuICAgIFRva2VuVHlwZSxcbiAgICBcIlN0cmluZ1wiIHwgXCJOdWxsT3JUcnVlT3JGYWxzZU9yTnVtYmVyXCJcbiAgPjtcbiAgc291cmNlVGV4dD86IHVuZGVmaW5lZDtcbiAgcG9zaXRpb246IG51bWJlcjtcbn0gfCB7XG4gIHR5cGU6IFwiU3RyaW5nXCI7XG4gIHNvdXJjZVRleHQ6IHN0cmluZztcbiAgcG9zaXRpb246IG51bWJlcjtcbn0gfCB7XG4gIHR5cGU6IFwiTnVsbE9yVHJ1ZU9yRmFsc2VPck51bWJlclwiO1xuICBzb3VyY2VUZXh0OiBzdHJpbmc7XG4gIHBvc2l0aW9uOiBudW1iZXI7XG59O1xuXG5jb25zdCBvcmlnaW5hbEpTT05QYXJzZSA9IGdsb2JhbFRoaXMuSlNPTi5wYXJzZTtcblxuLy8gRmlyc3QgdG9rZW5pemUgYW5kIHRoZW4gcGFyc2UgdGhlIHRva2VuLlxuY2xhc3MgSlNPTkNQYXJzZXIge1xuICByZWFkb25seSAjd2hpdGVzcGFjZSA9IG5ldyBTZXQoXCIgXFx0XFxyXFxuXCIpO1xuICByZWFkb25seSAjbnVtYmVyRW5kVG9rZW4gPSBuZXcgU2V0KFsuLi5cIltde306LC9cIiwgLi4udGhpcy4jd2hpdGVzcGFjZV0pO1xuICAjdGV4dDogc3RyaW5nO1xuICAjbGVuZ3RoOiBudW1iZXI7XG4gICN0b2tlbml6ZWQ6IEdlbmVyYXRvcjxUb2tlbiwgdm9pZD47XG4gICNvcHRpb25zOiBQYXJzZU9wdGlvbnM7XG4gIGNvbnN0cnVjdG9yKHRleHQ6IHN0cmluZywgb3B0aW9uczogUGFyc2VPcHRpb25zKSB7XG4gICAgdGhpcy4jdGV4dCA9IGAke3RleHR9YDtcbiAgICB0aGlzLiNsZW5ndGggPSB0aGlzLiN0ZXh0Lmxlbmd0aDtcbiAgICB0aGlzLiN0b2tlbml6ZWQgPSB0aGlzLiN0b2tlbml6ZSgpO1xuICAgIHRoaXMuI29wdGlvbnMgPSBvcHRpb25zO1xuICB9XG4gIHBhcnNlKCk6IEpzb25WYWx1ZSB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLiNnZXROZXh0KCk7XG4gICAgY29uc3QgcmVzID0gdGhpcy4jcGFyc2VKc29uVmFsdWUodG9rZW4pO1xuXG4gICAgLy8gbWFrZSBzdXJlIGFsbCBjaGFyYWN0ZXJzIGhhdmUgYmVlbiByZWFkXG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gdGhpcy4jdG9rZW5pemVkLm5leHQoKTtcbiAgICBpZiAoIWRvbmUpIHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihidWlsZEVycm9yTWVzc2FnZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH1cbiAgLyoqIFJlYWQgdGhlIG5leHQgdG9rZW4uIElmIHRoZSB0b2tlbiBpcyByZWFkIHRvIHRoZSBlbmQsIGl0IHRocm93cyBhIFN5bnRheEVycm9yLiAqL1xuICAjZ2V0TmV4dCgpOiBUb2tlbiB7XG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gdGhpcy4jdG9rZW5pemVkLm5leHQoKTtcbiAgICBpZiAoZG9uZSkge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFwiVW5leHBlY3RlZCBlbmQgb2YgSlNPTkMgaW5wdXRcIik7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICAvKiogU3BsaXQgdGhlIEpTT05DIHN0cmluZyBpbnRvIHRva2VuIHVuaXRzLiBXaGl0ZXNwYWNlIGFuZCBjb21tZW50cyBhcmUgc2tpcHBlZC4gKi9cbiAgKiN0b2tlbml6ZSgpOiBHZW5lcmF0b3I8VG9rZW4sIHZvaWQ+IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuI2xlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBza2lwIHdoaXRlc3BhY2VcbiAgICAgIGlmICh0aGlzLiN3aGl0ZXNwYWNlLmhhcyh0aGlzLiN0ZXh0W2ldISkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHNraXAgbXVsdGkgbGluZSBjb21tZW50IChgLyouLi4qL2ApXG4gICAgICBpZiAodGhpcy4jdGV4dFtpXSA9PT0gXCIvXCIgJiYgdGhpcy4jdGV4dFtpICsgMV0gPT09IFwiKlwiKSB7XG4gICAgICAgIGkgKz0gMjtcbiAgICAgICAgbGV0IGhhc0VuZE9mQ29tbWVudCA9IGZhbHNlO1xuICAgICAgICBmb3IgKDsgaSA8IHRoaXMuI2xlbmd0aDsgaSsrKSB7IC8vIHJlYWQgdW50aWwgZmluZCBgKi9gXG4gICAgICAgICAgaWYgKHRoaXMuI3RleHRbaV0gPT09IFwiKlwiICYmIHRoaXMuI3RleHRbaSArIDFdID09PSBcIi9cIikge1xuICAgICAgICAgICAgaGFzRW5kT2ZDb21tZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWhhc0VuZE9mQ29tbWVudCkge1xuICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcIlVuZXhwZWN0ZWQgZW5kIG9mIEpTT05DIGlucHV0XCIpO1xuICAgICAgICB9XG4gICAgICAgIGkrKztcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHNraXAgc2luZ2xlIGxpbmUgY29tbWVudCAoYC8vLi4uYClcbiAgICAgIGlmICh0aGlzLiN0ZXh0W2ldID09PSBcIi9cIiAmJiB0aGlzLiN0ZXh0W2kgKyAxXSA9PT0gXCIvXCIpIHtcbiAgICAgICAgaSArPSAyO1xuICAgICAgICBmb3IgKDsgaSA8IHRoaXMuI2xlbmd0aDsgaSsrKSB7IC8vIHJlYWQgdW50aWwgZmluZCBgXFxuYCBvciBgXFxyYFxuICAgICAgICAgIGlmICh0aGlzLiN0ZXh0W2ldID09PSBcIlxcblwiIHx8IHRoaXMuI3RleHRbaV0gPT09IFwiXFxyXCIpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoICh0aGlzLiN0ZXh0W2ldKSB7XG4gICAgICAgIGNhc2UgXCJ7XCI6XG4gICAgICAgICAgeWllbGQgeyB0eXBlOiBcIkJlZ2luT2JqZWN0XCIsIHBvc2l0aW9uOiBpIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ9XCI6XG4gICAgICAgICAgeWllbGQgeyB0eXBlOiBcIkVuZE9iamVjdFwiLCBwb3NpdGlvbjogaSB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiW1wiOlxuICAgICAgICAgIHlpZWxkIHsgdHlwZTogXCJCZWdpbkFycmF5XCIsIHBvc2l0aW9uOiBpIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJdXCI6XG4gICAgICAgICAgeWllbGQgeyB0eXBlOiBcIkVuZEFycmF5XCIsIHBvc2l0aW9uOiBpIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCI6XCI6XG4gICAgICAgICAgeWllbGQgeyB0eXBlOiBcIk5hbWVTZXBhcmF0b3JcIiwgcG9zaXRpb246IGkgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIixcIjpcbiAgICAgICAgICB5aWVsZCB7IHR5cGU6IFwiVmFsdWVTZXBhcmF0b3JcIiwgcG9zaXRpb246IGkgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnXCInOiB7IC8vIHBhcnNlIHN0cmluZyB0b2tlblxuICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBpO1xuICAgICAgICAgIC8vIE5lZWQgdG8gaGFuZGxlIGNvbnNlY3V0aXZlIGJhY2tzbGFzaGVzIGNvcnJlY3RseVxuICAgICAgICAgIC8vICdcIlxcXFxcIlwiJyA9PiAnXCInXG4gICAgICAgICAgLy8gJ1wiXFxcXFxcXFxcIicgPT4gJ1xcXFwnXG4gICAgICAgICAgLy8gJ1wiXFxcXFxcXFxcXFxcXCJcIicgPT4gJ1xcXFxcIidcbiAgICAgICAgICAvLyAnXCJcXFxcXFxcXFxcXFxcXFxcXCInID0+ICdcXFxcXFxcXCdcbiAgICAgICAgICBsZXQgc2hvdWxkRXNjYXBlTmV4dCA9IGZhbHNlO1xuICAgICAgICAgIGkrKztcbiAgICAgICAgICBmb3IgKDsgaSA8IHRoaXMuI2xlbmd0aDsgaSsrKSB7IC8vIHJlYWQgdW50aWwgZmluZCBgXCJgXG4gICAgICAgICAgICBpZiAodGhpcy4jdGV4dFtpXSA9PT0gJ1wiJyAmJiAhc2hvdWxkRXNjYXBlTmV4dCkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNob3VsZEVzY2FwZU5leHQgPSB0aGlzLiN0ZXh0W2ldID09PSBcIlxcXFxcIiAmJiAhc2hvdWxkRXNjYXBlTmV4dDtcbiAgICAgICAgICB9XG4gICAgICAgICAgeWllbGQge1xuICAgICAgICAgICAgdHlwZTogXCJTdHJpbmdcIixcbiAgICAgICAgICAgIHNvdXJjZVRleHQ6IHRoaXMuI3RleHQuc3Vic3RyaW5nKHN0YXJ0SW5kZXgsIGkgKyAxKSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdGFydEluZGV4LFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDogeyAvLyBwYXJzZSBudWxsLCB0cnVlLCBmYWxzZSBvciBudW1iZXIgdG9rZW5cbiAgICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gaTtcbiAgICAgICAgICBmb3IgKDsgaSA8IHRoaXMuI2xlbmd0aDsgaSsrKSB7IC8vIHJlYWQgdW50aWwgZmluZCBudW1iZXJFbmRUb2tlblxuICAgICAgICAgICAgaWYgKHRoaXMuI251bWJlckVuZFRva2VuLmhhcyh0aGlzLiN0ZXh0W2ldISkpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGktLTtcbiAgICAgICAgICB5aWVsZCB7XG4gICAgICAgICAgICB0eXBlOiBcIk51bGxPclRydWVPckZhbHNlT3JOdW1iZXJcIixcbiAgICAgICAgICAgIHNvdXJjZVRleHQ6IHRoaXMuI3RleHQuc3Vic3RyaW5nKHN0YXJ0SW5kZXgsIGkgKyAxKSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdGFydEluZGV4LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgI3BhcnNlSnNvblZhbHVlKHZhbHVlOiBUb2tlbik6IEpzb25WYWx1ZSB7XG4gICAgc3dpdGNoICh2YWx1ZS50eXBlKSB7XG4gICAgICBjYXNlIFwiQmVnaW5PYmplY3RcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMuI3BhcnNlT2JqZWN0KCk7XG4gICAgICBjYXNlIFwiQmVnaW5BcnJheVwiOlxuICAgICAgICByZXR1cm4gdGhpcy4jcGFyc2VBcnJheSgpO1xuICAgICAgY2FzZSBcIk51bGxPclRydWVPckZhbHNlT3JOdW1iZXJcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMuI3BhcnNlTnVsbE9yVHJ1ZU9yRmFsc2VPck51bWJlcih2YWx1ZSk7XG4gICAgICBjYXNlIFwiU3RyaW5nXCI6XG4gICAgICAgIHJldHVybiB0aGlzLiNwYXJzZVN0cmluZyh2YWx1ZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYnVpbGRFcnJvck1lc3NhZ2UodmFsdWUpKTtcbiAgICB9XG4gIH1cbiAgI3BhcnNlT2JqZWN0KCk6IHsgW2tleTogc3RyaW5nXTogSnNvblZhbHVlIHwgdW5kZWZpbmVkIH0ge1xuICAgIGNvbnN0IHRhcmdldDogeyBba2V5OiBzdHJpbmddOiBKc29uVmFsdWUgfCB1bmRlZmluZWQgfSA9IHt9O1xuICAgIC8vICAg4pSM4pSAdG9rZW4xXG4gICAgLy8geyB9XG4gICAgLy8gICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIB0b2tlbjFcbiAgICAvLyAgICAgIOKUgiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgHRva2VuMlxuICAgIC8vICAgICAg4pSCICAg4pSCICAg4pSM4pSA4pSA4pSA4pSA4pSAdG9rZW4zXG4gICAgLy8gICAgICDilIIgICDilIIgICDilIIgICDilIzilIB0b2tlbjRcbiAgICAvLyAgeyBcImtleVwiIDogdmFsdWUgfVxuICAgIC8vICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAdG9rZW4xXG4gICAgLy8gICAgICDilIIgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIB0b2tlbjJcbiAgICAvLyAgICAgIOKUgiAgIOKUgiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgHRva2VuM1xuICAgIC8vICAgICAg4pSCICAg4pSCICAg4pSCICAg4pSM4pSA4pSA4pSAdG9rZW40XG4gICAgLy8gICAgICDilIIgICDilIIgICDilIIgICDilIIg4pSM4pSAdG9rZW4xXG4gICAgLy8gIHsgXCJrZXlcIiA6IHZhbHVlICwgfVxuICAgIC8vICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAdG9rZW4xXG4gICAgLy8gICAgICDilIIgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIB0b2tlbjJcbiAgICAvLyAgICAgIOKUgiAgIOKUgiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgHRva2VuM1xuICAgIC8vICAgICAg4pSCICAg4pSCICAg4pSCICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAdG9rZW40XG4gICAgLy8gICAgICDilIIgICDilIIgICDilIIgICDilIIgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIB0b2tlbjFcbiAgICAvLyAgICAgIOKUgiAgIOKUgiAgIOKUgiAgIOKUgiAgIOKUgiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgHRva2VuMlxuICAgIC8vICAgICAg4pSCICAg4pSCICAg4pSCICAg4pSCICAg4pSCICAg4pSCICAg4pSM4pSA4pSA4pSA4pSA4pSAdG9rZW4zXG4gICAgLy8gICAgICDilIIgICDilIIgICDilIIgICDilIIgICDilIIgICDilIIgICDilIIgICDilIzilIB0b2tlbjRcbiAgICAvLyAgeyBcImtleVwiIDogdmFsdWUgLCBcImtleVwiIDogdmFsdWUgfVxuICAgIGZvciAobGV0IGlzRmlyc3QgPSB0cnVlOzsgaXNGaXJzdCA9IGZhbHNlKSB7XG4gICAgICBjb25zdCB0b2tlbjEgPSB0aGlzLiNnZXROZXh0KCk7XG4gICAgICBpZiAoXG4gICAgICAgIChpc0ZpcnN0IHx8IHRoaXMuI29wdGlvbnMuYWxsb3dUcmFpbGluZ0NvbW1hKSAmJlxuICAgICAgICB0b2tlbjEudHlwZSA9PT0gXCJFbmRPYmplY3RcIlxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgICB9XG4gICAgICBpZiAodG9rZW4xLnR5cGUgIT09IFwiU3RyaW5nXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGJ1aWxkRXJyb3JNZXNzYWdlKHRva2VuMSkpO1xuICAgICAgfVxuICAgICAgY29uc3Qga2V5ID0gdGhpcy4jcGFyc2VTdHJpbmcodG9rZW4xKTtcblxuICAgICAgY29uc3QgdG9rZW4yID0gdGhpcy4jZ2V0TmV4dCgpO1xuICAgICAgaWYgKHRva2VuMi50eXBlICE9PSBcIk5hbWVTZXBhcmF0b3JcIikge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYnVpbGRFcnJvck1lc3NhZ2UodG9rZW4yKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRva2VuMyA9IHRoaXMuI2dldE5leHQoKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgICB2YWx1ZTogdGhpcy4jcGFyc2VKc29uVmFsdWUodG9rZW4zKSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0b2tlbjQgPSB0aGlzLiNnZXROZXh0KCk7XG4gICAgICBpZiAodG9rZW40LnR5cGUgPT09IFwiRW5kT2JqZWN0XCIpIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgIH1cbiAgICAgIGlmICh0b2tlbjQudHlwZSAhPT0gXCJWYWx1ZVNlcGFyYXRvclwiKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihidWlsZEVycm9yTWVzc2FnZSh0b2tlbjQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgI3BhcnNlQXJyYXkoKTogSnNvblZhbHVlW10ge1xuICAgIGNvbnN0IHRhcmdldDogSnNvblZhbHVlW10gPSBbXTtcbiAgICAvLyAgIOKUjOKUgHRva2VuMVxuICAgIC8vIFsgXVxuICAgIC8vICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAdG9rZW4xXG4gICAgLy8gICAgICDilIIgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIB0b2tlbjJcbiAgICAvLyAgWyB2YWx1ZSBdXG4gICAgLy8gICAgICDilIzilIDilIDilIDilIDilIDilIDilIB0b2tlbjFcbiAgICAvLyAgICAgIOKUgiAgIOKUjOKUgOKUgOKUgHRva2VuMlxuICAgIC8vICAgICAg4pSCICAg4pSCIOKUjOKUgHRva2VuMVxuICAgIC8vICBbIHZhbHVlICwgXVxuICAgIC8vICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAdG9rZW4xXG4gICAgLy8gICAgICDilIIgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIB0b2tlbjJcbiAgICAvLyAgICAgIOKUgiAgIOKUgiAgIOKUjOKUgOKUgOKUgOKUgOKUgHRva2VuMVxuICAgIC8vICAgICAg4pSCICAg4pSCICAg4pSCICAg4pSM4pSAdG9rZW4yXG4gICAgLy8gIFsgdmFsdWUgLCB2YWx1ZSBdXG4gICAgZm9yIChsZXQgaXNGaXJzdCA9IHRydWU7OyBpc0ZpcnN0ID0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHRva2VuMSA9IHRoaXMuI2dldE5leHQoKTtcbiAgICAgIGlmIChcbiAgICAgICAgKGlzRmlyc3QgfHwgdGhpcy4jb3B0aW9ucy5hbGxvd1RyYWlsaW5nQ29tbWEpICYmXG4gICAgICAgIHRva2VuMS50eXBlID09PSBcIkVuZEFycmF5XCJcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgfVxuICAgICAgdGFyZ2V0LnB1c2godGhpcy4jcGFyc2VKc29uVmFsdWUodG9rZW4xKSk7XG5cbiAgICAgIGNvbnN0IHRva2VuMiA9IHRoaXMuI2dldE5leHQoKTtcbiAgICAgIGlmICh0b2tlbjIudHlwZSA9PT0gXCJFbmRBcnJheVwiKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgICB9XG4gICAgICBpZiAodG9rZW4yLnR5cGUgIT09IFwiVmFsdWVTZXBhcmF0b3JcIikge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYnVpbGRFcnJvck1lc3NhZ2UodG9rZW4yKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gICNwYXJzZVN0cmluZyh2YWx1ZToge1xuICAgIHR5cGU6IFwiU3RyaW5nXCI7XG4gICAgc291cmNlVGV4dDogc3RyaW5nO1xuICAgIHBvc2l0aW9uOiBudW1iZXI7XG4gIH0pOiBzdHJpbmcge1xuICAgIGxldCBwYXJzZWQ7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFVzZSBKU09OLnBhcnNlIHRvIGhhbmRsZSBgXFx1MDAwMGAgZXRjLiBjb3JyZWN0bHkuXG4gICAgICBwYXJzZWQgPSBvcmlnaW5hbEpTT05QYXJzZSh2YWx1ZS5zb3VyY2VUZXh0KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihidWlsZEVycm9yTWVzc2FnZSh2YWx1ZSkpO1xuICAgIH1cbiAgICBhc3NlcnQodHlwZW9mIHBhcnNlZCA9PT0gXCJzdHJpbmdcIik7XG4gICAgcmV0dXJuIHBhcnNlZDtcbiAgfVxuICAjcGFyc2VOdWxsT3JUcnVlT3JGYWxzZU9yTnVtYmVyKHZhbHVlOiB7XG4gICAgdHlwZTogXCJOdWxsT3JUcnVlT3JGYWxzZU9yTnVtYmVyXCI7XG4gICAgc291cmNlVGV4dDogc3RyaW5nO1xuICAgIHBvc2l0aW9uOiBudW1iZXI7XG4gIH0pOiBudWxsIHwgYm9vbGVhbiB8IG51bWJlciB7XG4gICAgaWYgKHZhbHVlLnNvdXJjZVRleHQgPT09IFwibnVsbFwiKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnNvdXJjZVRleHQgPT09IFwidHJ1ZVwiKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnNvdXJjZVRleHQgPT09IFwiZmFsc2VcIikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgcGFyc2VkO1xuICAgIHRyeSB7XG4gICAgICAvLyBVc2UgSlNPTi5wYXJzZSB0byBoYW5kbGUgYCsxMDBgLCBgSW5maW5pdHlgIGV0Yy4gY29ycmVjdGx5LlxuICAgICAgcGFyc2VkID0gb3JpZ2luYWxKU09OUGFyc2UodmFsdWUuc291cmNlVGV4dCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYnVpbGRFcnJvck1lc3NhZ2UodmFsdWUpKTtcbiAgICB9XG4gICAgYXNzZXJ0KHR5cGVvZiBwYXJzZWQgPT09IFwibnVtYmVyXCIpO1xuICAgIHJldHVybiBwYXJzZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gYnVpbGRFcnJvck1lc3NhZ2UoeyB0eXBlLCBzb3VyY2VUZXh0LCBwb3NpdGlvbiB9OiBUb2tlbik6IHN0cmluZyB7XG4gIGxldCB0b2tlbiA9IFwiXCI7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgXCJCZWdpbk9iamVjdFwiOlxuICAgICAgdG9rZW4gPSBcIntcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJFbmRPYmplY3RcIjpcbiAgICAgIHRva2VuID0gXCJ9XCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiQmVnaW5BcnJheVwiOlxuICAgICAgdG9rZW4gPSBcIltcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJFbmRBcnJheVwiOlxuICAgICAgdG9rZW4gPSBcIl1cIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJOYW1lU2VwYXJhdG9yXCI6XG4gICAgICB0b2tlbiA9IFwiOlwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIlZhbHVlU2VwYXJhdG9yXCI6XG4gICAgICB0b2tlbiA9IFwiLFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIk51bGxPclRydWVPckZhbHNlT3JOdW1iZXJcIjpcbiAgICBjYXNlIFwiU3RyaW5nXCI6XG4gICAgICAvLyBUcnVuY2F0ZSB0aGUgc3RyaW5nIHNvIHRoYXQgaXQgaXMgd2l0aGluIDMwIGxlbmd0aHMuXG4gICAgICB0b2tlbiA9IDMwIDwgc291cmNlVGV4dC5sZW5ndGhcbiAgICAgICAgPyBgJHtzb3VyY2VUZXh0LnNsaWNlKDAsIDMwKX0uLi5gXG4gICAgICAgIDogc291cmNlVGV4dDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTtcbiAgfVxuICByZXR1cm4gYFVuZXhwZWN0ZWQgdG9rZW4gJHt0b2tlbn0gaW4gSlNPTkMgYXQgcG9zaXRpb24gJHtwb3NpdGlvbn1gO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG5cbmNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcblxuZnVuY3Rpb24gZ2V0VHlwZU5hbWUodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICBjb25zdCB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBpZiAodHlwZSAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiB0eXBlO1xuICB9IGVsc2UgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIFwibnVsbFwiO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZT8uY29uc3RydWN0b3I/Lm5hbWUgPz8gXCJvYmplY3RcIjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVCaW5hcnlMaWtlKHNvdXJjZTogdW5rbm93bik6IFVpbnQ4QXJyYXkge1xuICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBlbmNvZGVyLmVuY29kZShzb3VyY2UpO1xuICB9IGVsc2UgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICByZXR1cm4gc291cmNlO1xuICB9IGVsc2UgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHNvdXJjZSk7XG4gIH1cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICBgVGhlIGlucHV0IG11c3QgYmUgYSBVaW50OEFycmF5LCBhIHN0cmluZywgb3IgYW4gQXJyYXlCdWZmZXIuIFJlY2VpdmVkIGEgdmFsdWUgb2YgdGhlIHR5cGUgJHtcbiAgICAgIGdldFR5cGVOYW1lKHNvdXJjZSlcbiAgICB9LmAsXG4gICk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAoYykgMjAxNCBKYW1lc29uIExpdHRsZS4gTUlUIExpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IHZhbGlkYXRlQmluYXJ5TGlrZSB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qKlxuICogVXRpbGl0aWVzIGZvclxuICogW2Jhc2UzMl17QGxpbmsgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM0NjQ4I3NlY3Rpb24tNn1cbiAqIGVuY29kaW5nIGFuZCBkZWNvZGluZy5cbiAqXG4gKiBNb2RpZmllZCBmcm9tIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vYmVhdGdhbW1pdC9iYXNlNjQtanN9LlxuICpcbiAqIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuY29uc3QgbG9va3VwOiBzdHJpbmdbXSA9IFtdO1xuY29uc3QgcmV2TG9va3VwOiBudW1iZXJbXSA9IFtdO1xuXG4vLyBSRkM0NjQ4IGJhc2UzMlxuY29uc3QgY29kZSA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoyMzQ1NjdcIjtcbmZvciAobGV0IGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gIGxvb2t1cFtpXSA9IGNvZGVbaV07XG4gIHJldkxvb2t1cFtjb2RlLmNoYXJDb2RlQXQoaSldID0gaTtcbn1cblxuY29uc3QgcGxhY2VIb2xkZXJQYWRMb29rdXAgPSBbMCwgMSwgLCAyLCAzLCAsIDRdO1xuZnVuY3Rpb24gX2dldFBhZExlbihwbGFjZUhvbGRlcnNMZW46IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IG1heWJlTGVuID0gcGxhY2VIb2xkZXJQYWRMb29rdXBbcGxhY2VIb2xkZXJzTGVuXTtcbiAgaWYgKHR5cGVvZiBtYXliZUxlbiAhPT0gXCJudW1iZXJcIikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcGFkIGxlbmd0aFwiKTtcbiAgfVxuICByZXR1cm4gbWF5YmVMZW47XG59XG5cbmZ1bmN0aW9uIGdldExlbnMoYjMyOiBzdHJpbmcpOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgY29uc3QgbGVuID0gYjMyLmxlbmd0aDtcblxuICBpZiAobGVuICUgOCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4XCIpO1xuICB9XG5cbiAgbGV0IHZhbGlkTGVuID0gYjMyLmluZGV4T2YoXCI9XCIpO1xuICBpZiAodmFsaWRMZW4gPT09IC0xKSB2YWxpZExlbiA9IGxlbjtcblxuICBjb25zdCBwbGFjZUhvbGRlcnNMZW4gPSB2YWxpZExlbiA9PT0gbGVuID8gMCA6IDggLSAodmFsaWRMZW4gJSA4KTtcblxuICByZXR1cm4gW3ZhbGlkTGVuLCBwbGFjZUhvbGRlcnNMZW5dO1xufVxuXG5mdW5jdGlvbiBfYnl0ZUxlbmd0aCh2YWxpZExlbjogbnVtYmVyLCBwbGFjZUhvbGRlcnNMZW46IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDUpIC8gOCAtIF9nZXRQYWRMZW4ocGxhY2VIb2xkZXJzTGVuKTtcbn1cblxuLyoqXG4gKiBEZWNvZGVzIGEgYmFzZTMyLWVuY29kZWQgc3RyaW5nLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNDY0OCNzZWN0aW9uLTZ9XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBkZWNvZGVCYXNlMzIgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9lbmNvZGluZy9iYXNlMzIudHNcIjtcbiAqXG4gKiBkZWNvZGVCYXNlMzIoXCJOUlFNQT09PVwiKTsgLy8gVWludDhBcnJheSgzKSBbIDEwOCwgOTYsIDE5MiBdXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUJhc2UzMihiMzI6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICBsZXQgdG1wOiBudW1iZXI7XG4gIGNvbnN0IFt2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuXSA9IGdldExlbnMoYjMyKTtcblxuICBjb25zdCBhcnIgPSBuZXcgVWludDhBcnJheShfYnl0ZUxlbmd0aCh2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuKSk7XG5cbiAgbGV0IGN1ckJ5dGUgPSAwO1xuXG4gIC8vIGlmIHRoZXJlIGFyZSBwbGFjZWhvbGRlcnMsIG9ubHkgZ2V0IHVwIHRvIHRoZSBsYXN0IGNvbXBsZXRlIDggY2hhcnNcbiAgY29uc3QgbGVuID0gcGxhY2VIb2xkZXJzTGVuID4gMCA/IHZhbGlkTGVuIC0gOCA6IHZhbGlkTGVuO1xuXG4gIGxldCBpOiBudW1iZXI7XG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gOCkge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSldIDw8IDIwKSB8XG4gICAgICAocmV2TG9va3VwW2IzMi5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgMTUpIHxcbiAgICAgIChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSArIDIpXSA8PCAxMCkgfFxuICAgICAgKHJldkxvb2t1cFtiMzIuY2hhckNvZGVBdChpICsgMyldIDw8IDUpIHxcbiAgICAgIHJldkxvb2t1cFtiMzIuY2hhckNvZGVBdChpICsgNCldO1xuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiAxNykgJiAweGZmO1xuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA5KSAmIDB4ZmY7XG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDEpICYgMHhmZjtcblxuICAgIHRtcCA9ICgodG1wICYgMSkgPDwgMTUpIHxcbiAgICAgIChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSArIDUpXSA8PCAxMCkgfFxuICAgICAgKHJldkxvb2t1cFtiMzIuY2hhckNvZGVBdChpICsgNildIDw8IDUpIHxcbiAgICAgIHJldkxvb2t1cFtiMzIuY2hhckNvZGVBdChpICsgNyldO1xuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4ZmY7XG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweGZmO1xuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gMSkge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSldIDw8IDIwKSB8XG4gICAgICAocmV2TG9va3VwW2IzMi5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgMTUpIHxcbiAgICAgIChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSArIDIpXSA8PCAxMCkgfFxuICAgICAgKHJldkxvb2t1cFtiMzIuY2hhckNvZGVBdChpICsgMyldIDw8IDUpIHxcbiAgICAgIHJldkxvb2t1cFtiMzIuY2hhckNvZGVBdChpICsgNCldO1xuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiAxNykgJiAweGZmO1xuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA5KSAmIDB4ZmY7XG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDEpICYgMHhmZjtcbiAgICB0bXAgPSAoKHRtcCAmIDEpIDw8IDcpIHxcbiAgICAgIChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSArIDUpXSA8PCAyKSB8XG4gICAgICAocmV2TG9va3VwW2IzMi5jaGFyQ29kZUF0KGkgKyA2KV0gPj4gMyk7XG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweGZmO1xuICB9IGVsc2UgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gMykge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSldIDw8IDE5KSB8XG4gICAgICAocmV2TG9va3VwW2IzMi5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgMTQpIHxcbiAgICAgIChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSArIDIpXSA8PCA5KSB8XG4gICAgICAocmV2TG9va3VwW2IzMi5jaGFyQ29kZUF0KGkgKyAzKV0gPDwgNCkgfFxuICAgICAgKHJldkxvb2t1cFtiMzIuY2hhckNvZGVBdChpICsgNCldID4+IDEpO1xuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiAxNikgJiAweGZmO1xuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4ZmY7XG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweGZmO1xuICB9IGVsc2UgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gNCkge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSldIDw8IDExKSB8XG4gICAgICAocmV2TG9va3VwW2IzMi5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgNikgfFxuICAgICAgKHJldkxvb2t1cFtiMzIuY2hhckNvZGVBdChpICsgMildIDw8IDEpIHxcbiAgICAgIChyZXZMb29rdXBbYjMyLmNoYXJDb2RlQXQoaSArIDMpXSA+PiA0KTtcbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gOCkgJiAweGZmO1xuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhmZjtcbiAgfSBlbHNlIGlmIChwbGFjZUhvbGRlcnNMZW4gPT09IDYpIHtcbiAgICB0bXAgPSAocmV2TG9va3VwW2IzMi5jaGFyQ29kZUF0KGkpXSA8PCAzKSB8XG4gICAgICAocmV2TG9va3VwW2IzMi5jaGFyQ29kZUF0KGkgKyAxKV0gPj4gMik7XG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweGZmO1xuICB9XG5cbiAgcmV0dXJuIGFycjtcbn1cblxuZnVuY3Rpb24gZW5jb2RlQ2h1bmsodWludDg6IFVpbnQ4QXJyYXksIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogc3RyaW5nIHtcbiAgbGV0IHRtcDogbnVtYmVyO1xuICBjb25zdCBvdXRwdXQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpICs9IDUpIHtcbiAgICB0bXAgPSAoKHVpbnQ4W2ldIDw8IDE2KSAmIDB4ZmYwMDAwKSB8XG4gICAgICAoKHVpbnQ4W2kgKyAxXSA8PCA4KSAmIDB4ZmYwMCkgfFxuICAgICAgKHVpbnQ4W2kgKyAyXSAmIDB4ZmYpO1xuICAgIG91dHB1dC5wdXNoKGxvb2t1cFsodG1wID4+IDE5KSAmIDB4MWZdKTtcbiAgICBvdXRwdXQucHVzaChsb29rdXBbKHRtcCA+PiAxNCkgJiAweDFmXSk7XG4gICAgb3V0cHV0LnB1c2gobG9va3VwWyh0bXAgPj4gOSkgJiAweDFmXSk7XG4gICAgb3V0cHV0LnB1c2gobG9va3VwWyh0bXAgPj4gNCkgJiAweDFmXSk7XG4gICAgdG1wID0gKCh0bXAgJiAweGYpIDw8IDE2KSB8XG4gICAgICAoKHVpbnQ4W2kgKyAzXSA8PCA4KSAmIDB4ZmYwMCkgfFxuICAgICAgKHVpbnQ4W2kgKyA0XSAmIDB4ZmYpO1xuICAgIG91dHB1dC5wdXNoKGxvb2t1cFsodG1wID4+IDE1KSAmIDB4MWZdKTtcbiAgICBvdXRwdXQucHVzaChsb29rdXBbKHRtcCA+PiAxMCkgJiAweDFmXSk7XG4gICAgb3V0cHV0LnB1c2gobG9va3VwWyh0bXAgPj4gNSkgJiAweDFmXSk7XG4gICAgb3V0cHV0LnB1c2gobG9va3VwW3RtcCAmIDB4MWZdKTtcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oXCJcIik7XG59XG5cbi8qKlxuICogQ29udmVydHMgZGF0YSB0byBhIGJhc2UzMi1lbmNvZGVkIHN0cmluZy5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzQ2NDgjc2VjdGlvbi02fVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZW5jb2RlQmFzZTMyIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vZW5jb2RpbmcvYmFzZTMyLnRzXCI7XG4gKlxuICogZW5jb2RlQmFzZTMyKFwiNmM2MGMwXCIpOyAvLyBcIk5SUU1BPT09XCJcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlQmFzZTMyKGRhdGE6IEFycmF5QnVmZmVyIHwgVWludDhBcnJheSB8IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHVpbnQ4ID0gdmFsaWRhdGVCaW5hcnlMaWtlKGRhdGEpO1xuXG4gIGxldCB0bXA6IG51bWJlcjtcbiAgY29uc3QgbGVuID0gdWludDgubGVuZ3RoO1xuICBjb25zdCBleHRyYUJ5dGVzID0gbGVuICUgNTtcbiAgY29uc3QgcGFydHMgPSBbXTtcbiAgY29uc3QgbWF4Q2h1bmtMZW5ndGggPSAxNjM4NTsgLy8gbXVzdCBiZSBtdWx0aXBsZSBvZiA1XG4gIGNvbnN0IGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzO1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IDUgYnl0ZXMsIHdlJ2xsIGRlYWwgd2l0aCB0cmFpbGluZyBzdHVmZiBsYXRlclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjI7IGkgKz0gbWF4Q2h1bmtMZW5ndGgpIHtcbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgZW5jb2RlQ2h1bmsoXG4gICAgICAgIHVpbnQ4LFxuICAgICAgICBpLFxuICAgICAgICBpICsgbWF4Q2h1bmtMZW5ndGggPiBsZW4yID8gbGVuMiA6IGkgKyBtYXhDaHVua0xlbmd0aCxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIC8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXNcbiAgaWYgKGV4dHJhQnl0ZXMgPT09IDQpIHtcbiAgICB0bXAgPSAoKHVpbnQ4W2xlbjJdICYgMHhmZikgPDwgMTYpIHxcbiAgICAgICgodWludDhbbGVuMiArIDFdICYgMHhmZikgPDwgOCkgfFxuICAgICAgKHVpbnQ4W2xlbjIgKyAyXSAmIDB4ZmYpO1xuICAgIHBhcnRzLnB1c2gobG9va3VwWyh0bXAgPj4gMTkpICYgMHgxZl0pO1xuICAgIHBhcnRzLnB1c2gobG9va3VwWyh0bXAgPj4gMTQpICYgMHgxZl0pO1xuICAgIHBhcnRzLnB1c2gobG9va3VwWyh0bXAgPj4gOSkgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiA0KSAmIDB4MWZdKTtcbiAgICB0bXAgPSAoKHRtcCAmIDB4ZikgPDwgMTEpIHwgKHVpbnQ4W2xlbjIgKyAzXSA8PCAzKTtcbiAgICBwYXJ0cy5wdXNoKGxvb2t1cFsodG1wID4+IDEwKSAmIDB4MWZdKTtcbiAgICBwYXJ0cy5wdXNoKGxvb2t1cFsodG1wID4+IDUpICYgMHgxZl0pO1xuICAgIHBhcnRzLnB1c2gobG9va3VwW3RtcCAmIDB4MWZdKTtcbiAgICBwYXJ0cy5wdXNoKFwiPVwiKTtcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAzKSB7XG4gICAgdG1wID0gKCh1aW50OFtsZW4yXSAmIDB4ZmYpIDw8IDE3KSB8XG4gICAgICAoKHVpbnQ4W2xlbjIgKyAxXSAmIDB4ZmYpIDw8IDkpIHxcbiAgICAgICgodWludDhbbGVuMiArIDJdICYgMHhmZikgPDwgMSk7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiAyMCkgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiAxNSkgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiAxMCkgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiA1KSAmIDB4MWZdKTtcbiAgICBwYXJ0cy5wdXNoKGxvb2t1cFt0bXAgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChcIj09PVwiKTtcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKCh1aW50OFtsZW4yXSAmIDB4ZmYpIDw8IDEyKSB8ICgodWludDhbbGVuMiArIDFdICYgMHhmZikgPDwgNCk7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiAxNSkgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiAxMCkgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiA1KSAmIDB4MWZdKTtcbiAgICBwYXJ0cy5wdXNoKGxvb2t1cFt0bXAgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChcIj09PT1cIik7XG4gIH0gZWxzZSBpZiAoZXh0cmFCeXRlcyA9PT0gMSkge1xuICAgIHRtcCA9ICh1aW50OFtsZW4yXSAmIDB4ZmYpIDw8IDI7XG4gICAgcGFydHMucHVzaChsb29rdXBbKHRtcCA+PiA1KSAmIDB4MWZdKTtcbiAgICBwYXJ0cy5wdXNoKGxvb2t1cFt0bXAgJiAweDFmXSk7XG4gICAgcGFydHMucHVzaChcIj09PT09PVwiKTtcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKFwiXCIpO1xufVxuIiwgImV4cG9ydCBpbnRlcmZhY2UgU3BlY2lmaWVyTWFwIHtcbiAgW3VybDogc3RyaW5nXTogc3RyaW5nIHwgbnVsbDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVzIHtcbiAgW3VybDogc3RyaW5nXTogU3BlY2lmaWVyTWFwO1xufVxuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRNYXAge1xuICBpbXBvcnRzPzogU3BlY2lmaWVyTWFwO1xuICBzY29wZXM/OiBTY29wZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdChvYmplY3Q6IHVua25vd24pOiBvYmplY3QgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PSBcIm9iamVjdFwiICYmIG9iamVjdCAhPT0gbnVsbCAmJlxuICAgIG9iamVjdC5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRPYmplY3QoXG4gIG5vcm1hbGl6ZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCBzb3J0ZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGNvbnN0IHNvcnRlZEtleXMgPSBPYmplY3Qua2V5cyhub3JtYWxpemVkKVxuICAgIC5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKTtcbiAgZm9yIChjb25zdCBrZXkgb2Ygc29ydGVkS2V5cykge1xuICAgIHNvcnRlZFtrZXldID0gbm9ybWFsaXplZFtrZXldO1xuICB9XG4gIHJldHVybiBzb3J0ZWQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNJbXBvcnRNYXAoaW1wb3J0TWFwOiB1bmtub3duKTogaW1wb3J0TWFwIGlzIEltcG9ydE1hcCB7XG4gIHJldHVybiBpc09iamVjdChpbXBvcnRNYXApICYmXG4gICAgKGltcG9ydE1hcC5pbXBvcnRzICE9PSB1bmRlZmluZWQgPyBpc0ltcG9ydHMoaW1wb3J0TWFwLmltcG9ydHMpIDogdHJ1ZSkgJiZcbiAgICAoaW1wb3J0TWFwLnNjb3BlcyAhPT0gdW5kZWZpbmVkID8gaXNTY29wZXMoaW1wb3J0TWFwLnNjb3BlcykgOiB0cnVlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ltcG9ydHMoXG4gIGltcG9ydHNNYXA6IHVua25vd24sXG4pOiBpbXBvcnRzTWFwIGlzIEltcG9ydE1hcCB7XG4gIHJldHVybiBpc09iamVjdChpbXBvcnRzTWFwKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1Njb3BlcyhcbiAgc2NvcGVzOiB1bmtub3duLFxuKTogc2NvcGVzIGlzIFNjb3BlcyB7XG4gIHJldHVybiBpc09iamVjdChzY29wZXMpICYmXG4gICAgT2JqZWN0LnZhbHVlcyhzY29wZXMpLmV2ZXJ5KCh2YWx1ZSkgPT4gaXNTcGVjaWZpZXJNYXAodmFsdWUpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1NwZWNpZmllck1hcChcbiAgc3BlY2lmaWVyTWFwOiB1bmtub3duLFxuKTogc3BlY2lmaWVyTWFwIGlzIFNwZWNpZmllck1hcCB7XG4gIHJldHVybiBpc09iamVjdChzcGVjaWZpZXJNYXApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVVJMKHVybDogdW5rbm93bik6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIG5ldyBVUkwodXJsIGFzIHN0cmluZyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwgImltcG9ydCB7XG4gIEltcG9ydE1hcCxcbiAgaXNJbXBvcnRNYXAsXG4gIGlzSW1wb3J0cyxcbiAgaXNTY29wZXMsXG4gIGlzU3BlY2lmaWVyTWFwLFxuICBpc1VSTCxcbiAgU2NvcGVzLFxuICBzb3J0T2JqZWN0LFxuICBTcGVjaWZpZXJNYXAsXG59IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbmV4cG9ydCB0eXBlIHsgSW1wb3J0TWFwLCBTY29wZXMsIFNwZWNpZmllck1hcCB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vaW1wb3J0LW1hcHMvI3NvcnQtYW5kLW5vcm1hbGl6ZS1hLXNwZWNpZmllci1tYXAgKi9cbmZ1bmN0aW9uIHNvcnRBbmROb3JtYWxpemVTcGVjaWZpZXJNYXAoXG4gIG9yaWdpbmFsTWFwOiBTcGVjaWZpZXJNYXAsXG4gIGJhc2VVUkw6IFVSTCxcbik6IFNwZWNpZmllck1hcCB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQ6IFNwZWNpZmllck1hcCA9IHt9O1xuICBmb3IgKGNvbnN0IFtzcGVjaWZpZXJLZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvcmlnaW5hbE1hcCkpIHtcbiAgICBjb25zdCBub3JtYWxpemVkU3BlY2lmaWVyS2V5ID0gbm9ybWFsaXplU3BlY2lmaWVyS2V5KHNwZWNpZmllcktleSwgYmFzZVVSTCk7XG4gICAgaWYgKG5vcm1hbGl6ZWRTcGVjaWZpZXJLZXkgPT09IG51bGwpIGNvbnRpbnVlO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnNvbGUud2FybihgYWRkcmVzc2VzIG5lZWQgdG8gYmUgc3RyaW5ncy5gKTtcbiAgICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplZFNwZWNpZmllcktleV0gPSBudWxsO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGFkZHJlc3NVUkwgPSBwYXJzZVVybExpa2VJbXBvcnRTcGVjaWZpZXIodmFsdWUsIGJhc2VVUkwpO1xuXG4gICAgaWYgKGFkZHJlc3NVUkwgPT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUud2FybihgdGhlIGFkZHJlc3Mgd2FzIGludmFsaWQuYCk7XG4gICAgICBub3JtYWxpemVkW25vcm1hbGl6ZWRTcGVjaWZpZXJLZXldID0gbnVsbDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoc3BlY2lmaWVyS2V5LmVuZHNXaXRoKFwiL1wiKSAmJiAhc2VyaWFsaXplVVJMKGFkZHJlc3NVUkwpLmVuZHNXaXRoKFwiL1wiKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgYW4gaW52YWxpZCBhZGRyZXNzIHdhcyBnaXZlbiBmb3IgdGhlIHNwZWNpZmllciBrZXkgc3BlY2lmaWVyS2V5OyBzaW5jZSBzcGVjaWZpZXJLZXkgZW5kZWQgaW4gYSBzbGFzaCwgdGhlIGFkZHJlc3MgbmVlZHMgdG8gYXMgd2VsbC5gLFxuICAgICAgKTtcbiAgICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplZFNwZWNpZmllcktleV0gPSBudWxsO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplZFNwZWNpZmllcktleV0gPSBzZXJpYWxpemVVUkwoYWRkcmVzc1VSTCk7XG4gIH1cbiAgcmV0dXJuIHNvcnRPYmplY3Qobm9ybWFsaXplZCkgYXMgU3BlY2lmaWVyTWFwO1xufVxuLyogaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXVybC1zZXJpYWxpemVyICovXG5mdW5jdGlvbiBzZXJpYWxpemVVUkwodXJsOiBVUkwpOiBzdHJpbmcge1xuICByZXR1cm4gdXJsLmhyZWY7XG59XG4vKiBodHRwczovL3dpY2cuZ2l0aHViLmlvL2ltcG9ydC1tYXBzLyNzb3J0LWFuZC1ub3JtYWxpemUtc2NvcGVzICovXG5mdW5jdGlvbiBzb3J0QW5kTm9ybWFsaXplU2NvcGVzKFxuICBvcmlnaW5hbE1hcDogU2NvcGVzLFxuICBiYXNlVVJMOiBVUkwsXG4pOiBTY29wZXMge1xuICBjb25zdCBub3JtYWxpemVkOiBTY29wZXMgPSB7fTtcbiAgZm9yIChcbiAgICBjb25zdCBbc2NvcGVQcmVmaXgsIHBvdGVudGlhbFNwZWNpZmllck1hcF0gb2YgT2JqZWN0LmVudHJpZXMob3JpZ2luYWxNYXApXG4gICkge1xuICAgIGlmICghaXNTcGVjaWZpZXJNYXAocG90ZW50aWFsU3BlY2lmaWVyTWFwKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYHRoZSB2YWx1ZSBvZiB0aGUgc2NvcGUgd2l0aCBwcmVmaXggc2NvcGVQcmVmaXggbmVlZHMgdG8gYmUgYW4gb2JqZWN0LmAsXG4gICAgICApO1xuICAgIH1cbiAgICBsZXQgc2NvcGVQcmVmaXhVUkw7XG4gICAgdHJ5IHtcbiAgICAgIHNjb3BlUHJlZml4VVJMID0gbmV3IFVSTChzY29wZVByZWZpeCwgYmFzZVVSTCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBjb25zb2xlLndhcm4oYHRoZSBzY29wZSBwcmVmaXggVVJMIHdhcyBub3QgcGFyc2VhYmxlLmApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG5vcm1hbGl6ZWRTY29wZVByZWZpeCA9IHNlcmlhbGl6ZVVSTChzY29wZVByZWZpeFVSTCk7XG4gICAgbm9ybWFsaXplZFtub3JtYWxpemVkU2NvcGVQcmVmaXhdID0gc29ydEFuZE5vcm1hbGl6ZVNwZWNpZmllck1hcChcbiAgICAgIHBvdGVudGlhbFNwZWNpZmllck1hcCxcbiAgICAgIGJhc2VVUkwsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHNvcnRlZDogU2NvcGVzID0ge307XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG5vcm1hbGl6ZWQpKSB7XG4gICAgc29ydGVkW2tleV0gPSBzb3J0T2JqZWN0KG5vcm1hbGl6ZWRba2V5XSkgYXMgU3BlY2lmaWVyTWFwO1xuICB9XG4gIHJldHVybiBzb3J0T2JqZWN0KHNvcnRlZCkgYXMgU2NvcGVzO1xufVxuLyogaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9pbXBvcnQtbWFwcy8jbm9ybWFsaXplLWEtc3BlY2lmaWVyLWtleSAqL1xuZnVuY3Rpb24gbm9ybWFsaXplU3BlY2lmaWVyS2V5KFxuICBzcGVjaWZpZXJLZXk6IHN0cmluZyxcbiAgYmFzZVVSTDogVVJMLFxuKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICghc3BlY2lmaWVyS2V5Lmxlbmd0aCkge1xuICAgIGNvbnNvbGUud2FybihcInNwZWNpZmllciBrZXkgY2Fubm90IGJlIGFuIGVtcHR5IHN0cmluZy5cIik7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgdXJsID0gcGFyc2VVcmxMaWtlSW1wb3J0U3BlY2lmaWVyKHNwZWNpZmllcktleSwgYmFzZVVSTCk7XG4gIGlmICh1cmwgIT09IG51bGwpIHtcbiAgICByZXR1cm4gc2VyaWFsaXplVVJMKHVybCk7XG4gIH1cbiAgcmV0dXJuIHNwZWNpZmllcktleTtcbn1cbi8qIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vaW1wb3J0LW1hcHMvI3BhcnNlLWEtdXJsLWxpa2UtaW1wb3J0LXNwZWNpZmllciAqL1xuZnVuY3Rpb24gcGFyc2VVcmxMaWtlSW1wb3J0U3BlY2lmaWVyKFxuICBzcGVjaWZpZXI6IHN0cmluZyxcbiAgYmFzZVVSTDogVVJMLFxuKTogVVJMIHwgbnVsbCB7XG4gIGlmIChcbiAgICBiYXNlVVJMICYmIChzcGVjaWZpZXIuc3RhcnRzV2l0aChcIi9cIikgfHxcbiAgICAgIHNwZWNpZmllci5zdGFydHNXaXRoKFwiLi9cIikgfHxcbiAgICAgIHNwZWNpZmllci5zdGFydHNXaXRoKFwiLi4vXCIpKVxuICApIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChzcGVjaWZpZXIsIGJhc2VVUkwpO1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChzcGVjaWZpZXIpO1xuICAgIHJldHVybiB1cmw7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmNvbnN0IHNwZWNpYWxTY2hlbWVzID0gW1xuICBcImZ0cFwiLFxuICBcImZpbGVcIixcbiAgXCJodHRwXCIsXG4gIFwiaHR0cHNcIixcbiAgXCJ3c1wiLFxuICBcIndzc1wiLFxuXTtcbi8qIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jaXMtc3BlY2lhbCAqL1xuZnVuY3Rpb24gaXNTcGVjaWFsKGFzVVJMOiBVUkwpOiBib29sZWFuIHtcbiAgcmV0dXJuIHNwZWNpYWxTY2hlbWVzLnNvbWUoKHNjaGVtZSkgPT5cbiAgICBzZXJpYWxpemVVUkwoYXNVUkwpLnN0YXJ0c1dpdGgoc2NoZW1lKVxuICApO1xufVxuLyogaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9pbXBvcnQtbWFwcy8jcmVzb2x2ZS1hbi1pbXBvcnRzLW1hdGNoICovXG5mdW5jdGlvbiByZXNvbHZlSW1wb3J0c01hdGNoKFxuICBub3JtYWxpemVkU3BlY2lmaWVyOiBzdHJpbmcsXG4gIGFzVVJMOiBVUkwgfCBudWxsLFxuICBzcGVjaWZpZXJNYXA6IFNwZWNpZmllck1hcCxcbik6IHN0cmluZyB8IG51bGwge1xuICBmb3IgKFxuICAgIGNvbnN0IFtzcGVjaWZpZXJLZXksIHJlc29sdXRpb25SZXN1bHRdIG9mIE9iamVjdC5lbnRyaWVzKHNwZWNpZmllck1hcClcbiAgKSB7XG4gICAgaWYgKHNwZWNpZmllcktleSA9PT0gbm9ybWFsaXplZFNwZWNpZmllcikge1xuICAgICAgaWYgKHJlc29sdXRpb25SZXN1bHQgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBgcmVzb2x1dGlvbiBvZiBzcGVjaWZpZXJLZXkgd2FzIGJsb2NrZWQgYnkgYSBudWxsIGVudHJ5LmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoIWlzVVJMKHJlc29sdXRpb25SZXN1bHQpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYHJlc29sdXRpb25SZXN1bHQgbXVzdCBiZSBhbiBVUkwuYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x1dGlvblJlc3VsdDtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgc3BlY2lmaWVyS2V5LmVuZHNXaXRoKFwiL1wiKSAmJlxuICAgICAgbm9ybWFsaXplZFNwZWNpZmllci5zdGFydHNXaXRoKHNwZWNpZmllcktleSkgJiZcbiAgICAgIChhc1VSTCA9PT0gbnVsbCB8fCBpc1NwZWNpYWwoYXNVUkwpKVxuICAgICkge1xuICAgICAgaWYgKHJlc29sdXRpb25SZXN1bHQgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBgcmVzb2x1dGlvbiBvZiBzcGVjaWZpZXJLZXkgd2FzIGJsb2NrZWQgYnkgYSBudWxsIGVudHJ5LmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoIWlzVVJMKHJlc29sdXRpb25SZXN1bHQpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYHJlc29sdXRpb25SZXN1bHQgbXVzdCBiZSBhbiBVUkwuYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBhZnRlclByZWZpeCA9IG5vcm1hbGl6ZWRTcGVjaWZpZXIuc2xpY2Uoc3BlY2lmaWVyS2V5Lmxlbmd0aCk7XG5cbiAgICAgIGlmICghcmVzb2x1dGlvblJlc3VsdC5lbmRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgcmVzb2x1dGlvblJlc3VsdCBkb2VzIG5vdCBlbmQgd2l0aCBcIi9cImApO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKGFmdGVyUHJlZml4LCByZXNvbHV0aW9uUmVzdWx0KTtcbiAgICAgICAgaWYgKCFpc1VSTCh1cmwpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgdXJsIG11c3QgYmUgYW4gVVJMLmApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VyaWFsaXplVVJMKHVybCkuc3RhcnRzV2l0aChyZXNvbHV0aW9uUmVzdWx0KSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgICBgcmVzb2x1dGlvbiBvZiBub3JtYWxpemVkU3BlY2lmaWVyIHdhcyBibG9ja2VkIGR1ZSB0byBpdCBiYWNrdHJhY2tpbmcgYWJvdmUgaXRzIHByZWZpeCBzcGVjaWZpZXJLZXkuYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXJpYWxpemVVUkwodXJsKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIGByZXNvbHV0aW9uIG9mIG5vcm1hbGl6ZWRTcGVjaWZpZXIgd2FzIGJsb2NrZWQgc2luY2UgdGhlIGFmdGVyUHJlZml4IHBvcnRpb24gY291bGQgbm90IGJlIFVSTC1wYXJzZWQgcmVsYXRpdmUgdG8gdGhlIHJlc29sdXRpb25SZXN1bHQgbWFwcGVkIHRvIGJ5IHRoZSBzcGVjaWZpZXJLZXkgcHJlZml4LmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuLyogaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9pbXBvcnQtbWFwcy8jcGFyc2luZyAqL1xuLy8gZG8gbm90IHBhcnNlIEpTT04gc3RyaW5nIGFzIGRvbmUgaW4gdGhlIHNwZWNzLiBUaGF0IGNhbiBiZSBkb25lIHdpdGggSlNPTi5wYXJzZVxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVJbXBvcnRNYXAoXG4gIGltcG9ydE1hcDogSW1wb3J0TWFwLFxuICBiYXNlVVJMOiBVUkwsXG4pOiBJbXBvcnRNYXAge1xuICBsZXQgc29ydGVkQW5kTm9ybWFsaXplZEltcG9ydHMgPSB7fTtcbiAgaWYgKCFpc0ltcG9ydE1hcChpbXBvcnRNYXApKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgdGhlIHRvcC1sZXZlbCB2YWx1ZSBuZWVkcyB0byBiZSBhIEpTT04gb2JqZWN0LmApO1xuICB9XG4gIGNvbnN0IHsgaW1wb3J0cywgc2NvcGVzIH0gPSBpbXBvcnRNYXA7XG4gIGlmIChpbXBvcnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIWlzSW1wb3J0cyhpbXBvcnRzKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgXCJpbXBvcnRzXCIgdG9wLWxldmVsIGtleSBuZWVkcyB0byBiZSBhbiBvYmplY3QuYCk7XG4gICAgfVxuICAgIHNvcnRlZEFuZE5vcm1hbGl6ZWRJbXBvcnRzID0gc29ydEFuZE5vcm1hbGl6ZVNwZWNpZmllck1hcChcbiAgICAgIGltcG9ydHMsXG4gICAgICBiYXNlVVJMLFxuICAgICk7XG4gIH1cbiAgbGV0IHNvcnRlZEFuZE5vcm1hbGl6ZWRTY29wZXMgPSB7fTtcbiAgaWYgKHNjb3BlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFpc1Njb3BlcyhzY29wZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBcInNjb3Blc1wiIHRvcC1sZXZlbCBrZXkgbmVlZHMgdG8gYmUgYW4gb2JqZWN0LmApO1xuICAgIH1cbiAgICBzb3J0ZWRBbmROb3JtYWxpemVkU2NvcGVzID0gc29ydEFuZE5vcm1hbGl6ZVNjb3BlcyhcbiAgICAgIHNjb3BlcyxcbiAgICAgIGJhc2VVUkwsXG4gICAgKTtcbiAgfVxuICBpZiAoXG4gICAgT2JqZWN0LmtleXMoaW1wb3J0TWFwKS5maW5kKChrZXkpID0+IGtleSAhPT0gXCJpbXBvcnRzXCIgJiYga2V5ICE9PSBcInNjb3Blc1wiKVxuICApIHtcbiAgICBjb25zb2xlLndhcm4oYGFuIGludmFsaWQgdG9wLWxldmVsIGtleSB3YXMgcHJlc2VudCBpbiB0aGUgaW1wb3J0IG1hcC5gKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGltcG9ydHM6IHNvcnRlZEFuZE5vcm1hbGl6ZWRJbXBvcnRzLFxuICAgIHNjb3Blczogc29ydGVkQW5kTm9ybWFsaXplZFNjb3BlcyxcbiAgfTtcbn1cbi8qIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vaW1wb3J0LW1hcHMvI25ldy1yZXNvbHZlLWFsZ29yaXRobSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVNb2R1bGVTcGVjaWZpZXIoXG4gIHNwZWNpZmllcjogc3RyaW5nLFxuICB7IGltcG9ydHMgPSB7fSwgc2NvcGVzID0ge30gfTogSW1wb3J0TWFwLFxuICBiYXNlVVJMOiBVUkwsXG4pOiBzdHJpbmcge1xuICBjb25zdCBiYXNlVVJMU3RyaW5nID0gc2VyaWFsaXplVVJMKGJhc2VVUkwpO1xuICBjb25zdCBhc1VSTCA9IHBhcnNlVXJsTGlrZUltcG9ydFNwZWNpZmllcihzcGVjaWZpZXIsIGJhc2VVUkwpO1xuICBjb25zdCBub3JtYWxpemVkU3BlY2lmaWVyID0gYXNVUkwgIT09IG51bGwgPyBzZXJpYWxpemVVUkwoYXNVUkwpIDogc3BlY2lmaWVyO1xuICBmb3IgKGNvbnN0IFtzY29wZVByZWZpeCwgc2NvcGVJbXBvcnRzXSBvZiBPYmplY3QuZW50cmllcyhzY29wZXMpKSB7XG4gICAgaWYgKFxuICAgICAgc2NvcGVQcmVmaXggPT09IGJhc2VVUkxTdHJpbmcgfHxcbiAgICAgIChzY29wZVByZWZpeC5lbmRzV2l0aChcIi9cIikgJiYgYmFzZVVSTFN0cmluZy5zdGFydHNXaXRoKHNjb3BlUHJlZml4KSlcbiAgICApIHtcbiAgICAgIGNvbnN0IHNjb3BlSW1wb3J0c01hdGNoID0gcmVzb2x2ZUltcG9ydHNNYXRjaChcbiAgICAgICAgbm9ybWFsaXplZFNwZWNpZmllcixcbiAgICAgICAgYXNVUkwsXG4gICAgICAgIHNjb3BlSW1wb3J0cyxcbiAgICAgICk7XG4gICAgICBpZiAoc2NvcGVJbXBvcnRzTWF0Y2ggIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHNjb3BlSW1wb3J0c01hdGNoO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHRvcExldmVsSW1wb3J0c01hdGNoID0gcmVzb2x2ZUltcG9ydHNNYXRjaChcbiAgICBub3JtYWxpemVkU3BlY2lmaWVyLFxuICAgIGFzVVJMLFxuICAgIGltcG9ydHMsXG4gICk7XG5cbiAgaWYgKHRvcExldmVsSW1wb3J0c01hdGNoICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRvcExldmVsSW1wb3J0c01hdGNoO1xuICB9XG5cbiAgaWYgKGFzVVJMICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZVVSTChhc1VSTCk7XG4gIH1cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICBgc3BlY2lmaWVyIHdhcyBhIGJhcmUgc3BlY2lmaWVyLCBidXQgd2FzIG5vdCByZW1hcHBlZCB0byBhbnl0aGluZyBieSBpbXBvcnRNYXAuYCxcbiAgKTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5leHBvcnQgdHlwZSBPU1R5cGUgPSBcIndpbmRvd3NcIiB8IFwibGludXhcIiB8IFwiZGFyd2luXCI7XG5cbmV4cG9ydCBjb25zdCBvc1R5cGU6IE9TVHlwZSA9ICgoKSA9PiB7XG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gIGNvbnN0IHsgRGVubyB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gIGlmICh0eXBlb2YgRGVubz8uYnVpbGQ/Lm9zID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIERlbm8uYnVpbGQub3M7XG4gIH1cblxuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICBjb25zdCB7IG5hdmlnYXRvciB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gIGlmIChuYXZpZ2F0b3I/LmFwcFZlcnNpb24/LmluY2x1ZGVzPy4oXCJXaW5cIikpIHtcbiAgICByZXR1cm4gXCJ3aW5kb3dzXCI7XG4gIH1cblxuICByZXR1cm4gXCJsaW51eFwiO1xufSkoKTtcblxuZXhwb3J0IGNvbnN0IGlzV2luZG93cyA9IG9zVHlwZSA9PT0gXCJ3aW5kb3dzXCI7XG5leHBvcnQgY29uc3QgaXNMaW51eCA9IG9zVHlwZSA9PT0gXCJsaW51eFwiO1xuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgdGhlIEJyb3dzZXJpZnkgYXV0aG9ycy4gTUlUIExpY2Vuc2UuXG4vLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYnJvd3NlcmlmeS9wYXRoLWJyb3dzZXJpZnkvXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB0eXBlIHsgRm9ybWF0SW5wdXRQYXRoT2JqZWN0LCBQYXJzZWRQYXRoIH0gZnJvbSBcIi4vX2ludGVyZmFjZS50c1wiO1xuaW1wb3J0IHtcbiAgQ0hBUl9CQUNLV0FSRF9TTEFTSCxcbiAgQ0hBUl9DT0xPTixcbiAgQ0hBUl9ET1QsXG4gIENIQVJfUVVFU1RJT05fTUFSSyxcbn0gZnJvbSBcIi4vX2NvbnN0YW50cy50c1wiO1xuXG5pbXBvcnQge1xuICBfZm9ybWF0LFxuICBhc3NlcnRQYXRoLFxuICBlbmNvZGVXaGl0ZXNwYWNlLFxuICBpc1BhdGhTZXBhcmF0b3IsXG4gIGlzV2luZG93c0RldmljZVJvb3QsXG4gIG5vcm1hbGl6ZVN0cmluZyxcbn0gZnJvbSBcIi4vX3V0aWwudHNcIjtcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gXCIuLi9fdXRpbC9hc3NlcnQudHNcIjtcblxuZXhwb3J0IGNvbnN0IHNlcCA9IFwiXFxcXFwiO1xuZXhwb3J0IGNvbnN0IGRlbGltaXRlciA9IFwiO1wiO1xuXG4vKipcbiAqIFJlc29sdmVzIHBhdGggc2VnbWVudHMgaW50byBhIGBwYXRoYFxuICogQHBhcmFtIHBhdGhTZWdtZW50cyB0byBwcm9jZXNzIHRvIHBhdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUoLi4ucGF0aFNlZ21lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGxldCByZXNvbHZlZERldmljZSA9IFwiXCI7XG4gIGxldCByZXNvbHZlZFRhaWwgPSBcIlwiO1xuICBsZXQgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlO1xuXG4gIGZvciAobGV0IGkgPSBwYXRoU2VnbWVudHMubGVuZ3RoIC0gMTsgaSA+PSAtMTsgaS0tKSB7XG4gICAgbGV0IHBhdGg6IHN0cmluZztcbiAgICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IHsgRGVubyB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gICAgaWYgKGkgPj0gMCkge1xuICAgICAgcGF0aCA9IHBhdGhTZWdtZW50c1tpXTtcbiAgICB9IGVsc2UgaWYgKCFyZXNvbHZlZERldmljZSkge1xuICAgICAgaWYgKHR5cGVvZiBEZW5vPy5jd2QgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUmVzb2x2ZWQgYSBkcml2ZS1sZXR0ZXItbGVzcyBwYXRoIHdpdGhvdXQgYSBDV0QuXCIpO1xuICAgICAgfVxuICAgICAgcGF0aCA9IERlbm8uY3dkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIERlbm8/LmVudj8uZ2V0ICE9PSBcImZ1bmN0aW9uXCIgfHwgdHlwZW9mIERlbm8/LmN3ZCAhPT0gXCJmdW5jdGlvblwiXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlJlc29sdmVkIGEgcmVsYXRpdmUgcGF0aCB3aXRob3V0IGEgQ1dELlwiKTtcbiAgICAgIH1cbiAgICAgIHBhdGggPSBEZW5vLmN3ZCgpO1xuXG4gICAgICAvLyBWZXJpZnkgdGhhdCBhIGN3ZCB3YXMgZm91bmQgYW5kIHRoYXQgaXQgYWN0dWFsbHkgcG9pbnRzXG4gICAgICAvLyB0byBvdXIgZHJpdmUuIElmIG5vdCwgZGVmYXVsdCB0byB0aGUgZHJpdmUncyByb290LlxuICAgICAgaWYgKFxuICAgICAgICBwYXRoID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgcGF0aC5zbGljZSgwLCAzKS50b0xvd2VyQ2FzZSgpICE9PSBgJHtyZXNvbHZlZERldmljZS50b0xvd2VyQ2FzZSgpfVxcXFxgXG4gICAgICApIHtcbiAgICAgICAgcGF0aCA9IGAke3Jlc29sdmVkRGV2aWNlfVxcXFxgO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aDtcblxuICAgIC8vIFNraXAgZW1wdHkgZW50cmllc1xuICAgIGlmIChsZW4gPT09IDApIGNvbnRpbnVlO1xuXG4gICAgbGV0IHJvb3RFbmQgPSAwO1xuICAgIGxldCBkZXZpY2UgPSBcIlwiO1xuICAgIGxldCBpc0Fic29sdXRlID0gZmFsc2U7XG4gICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcblxuICAgIC8vIFRyeSB0byBtYXRjaCBhIHJvb3RcbiAgICBpZiAobGVuID4gMSkge1xuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgICAvLyBQb3NzaWJsZSBVTkMgcm9vdFxuXG4gICAgICAgIC8vIElmIHdlIHN0YXJ0ZWQgd2l0aCBhIHNlcGFyYXRvciwgd2Uga25vdyB3ZSBhdCBsZWFzdCBoYXZlIGFuXG4gICAgICAgIC8vIGFic29sdXRlIHBhdGggb2Ygc29tZSBraW5kIChVTkMgb3Igb3RoZXJ3aXNlKVxuICAgICAgICBpc0Fic29sdXRlID0gdHJ1ZTtcblxuICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgxKSkpIHtcbiAgICAgICAgICAvLyBNYXRjaGVkIGRvdWJsZSBwYXRoIHNlcGFyYXRvciBhdCBiZWdpbm5pbmdcbiAgICAgICAgICBsZXQgaiA9IDI7XG4gICAgICAgICAgbGV0IGxhc3QgPSBqO1xuICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RQYXJ0ID0gcGF0aC5zbGljZShsYXN0LCBqKTtcbiAgICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgICBsYXN0ID0gajtcbiAgICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBwYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgICAgaWYgKCFpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgICAgIGxhc3QgPSBqO1xuICAgICAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoaiA9PT0gbGVuKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyByb290IG9ubHlcbiAgICAgICAgICAgICAgICBkZXZpY2UgPSBgXFxcXFxcXFwke2ZpcnN0UGFydH1cXFxcJHtwYXRoLnNsaWNlKGxhc3QpfWA7XG4gICAgICAgICAgICAgICAgcm9vdEVuZCA9IGo7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcm9vdCB3aXRoIGxlZnRvdmVyc1xuXG4gICAgICAgICAgICAgICAgZGV2aWNlID0gYFxcXFxcXFxcJHtmaXJzdFBhcnR9XFxcXCR7cGF0aC5zbGljZShsYXN0LCBqKX1gO1xuICAgICAgICAgICAgICAgIHJvb3RFbmQgPSBqO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJvb3RFbmQgPSAxO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzV2luZG93c0RldmljZVJvb3QoY29kZSkpIHtcbiAgICAgICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgICAgZGV2aWNlID0gcGF0aC5zbGljZSgwLCAyKTtcbiAgICAgICAgICByb290RW5kID0gMjtcbiAgICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMikpKSB7XG4gICAgICAgICAgICAgIC8vIFRyZWF0IHNlcGFyYXRvciBmb2xsb3dpbmcgZHJpdmUgbmFtZSBhcyBhbiBhYnNvbHV0ZSBwYXRoXG4gICAgICAgICAgICAgIC8vIGluZGljYXRvclxuICAgICAgICAgICAgICBpc0Fic29sdXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgcm9vdEVuZCA9IDM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAgIC8vIGBwYXRoYCBjb250YWlucyBqdXN0IGEgcGF0aCBzZXBhcmF0b3JcbiAgICAgIHJvb3RFbmQgPSAxO1xuICAgICAgaXNBYnNvbHV0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZGV2aWNlLmxlbmd0aCA+IDAgJiZcbiAgICAgIHJlc29sdmVkRGV2aWNlLmxlbmd0aCA+IDAgJiZcbiAgICAgIGRldmljZS50b0xvd2VyQ2FzZSgpICE9PSByZXNvbHZlZERldmljZS50b0xvd2VyQ2FzZSgpXG4gICAgKSB7XG4gICAgICAvLyBUaGlzIHBhdGggcG9pbnRzIHRvIGFub3RoZXIgZGV2aWNlIHNvIGl0IGlzIG5vdCBhcHBsaWNhYmxlXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAocmVzb2x2ZWREZXZpY2UubGVuZ3RoID09PSAwICYmIGRldmljZS5sZW5ndGggPiAwKSB7XG4gICAgICByZXNvbHZlZERldmljZSA9IGRldmljZTtcbiAgICB9XG4gICAgaWYgKCFyZXNvbHZlZEFic29sdXRlKSB7XG4gICAgICByZXNvbHZlZFRhaWwgPSBgJHtwYXRoLnNsaWNlKHJvb3RFbmQpfVxcXFwke3Jlc29sdmVkVGFpbH1gO1xuICAgICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IGlzQWJzb2x1dGU7XG4gICAgfVxuXG4gICAgaWYgKHJlc29sdmVkQWJzb2x1dGUgJiYgcmVzb2x2ZWREZXZpY2UubGVuZ3RoID4gMCkgYnJlYWs7XG4gIH1cblxuICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCxcbiAgLy8gYnV0IGhhbmRsZSByZWxhdGl2ZSBwYXRocyB0byBiZSBzYWZlIChtaWdodCBoYXBwZW4gd2hlbiBwcm9jZXNzLmN3ZCgpXG4gIC8vIGZhaWxzKVxuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgdGFpbCBwYXRoXG4gIHJlc29sdmVkVGFpbCA9IG5vcm1hbGl6ZVN0cmluZyhcbiAgICByZXNvbHZlZFRhaWwsXG4gICAgIXJlc29sdmVkQWJzb2x1dGUsXG4gICAgXCJcXFxcXCIsXG4gICAgaXNQYXRoU2VwYXJhdG9yLFxuICApO1xuXG4gIHJldHVybiByZXNvbHZlZERldmljZSArIChyZXNvbHZlZEFic29sdXRlID8gXCJcXFxcXCIgOiBcIlwiKSArIHJlc29sdmVkVGFpbCB8fCBcIi5cIjtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgYHBhdGhgXG4gKiBAcGFyYW0gcGF0aCB0byBub3JtYWxpemVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIFwiLlwiO1xuICBsZXQgcm9vdEVuZCA9IDA7XG4gIGxldCBkZXZpY2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbGV0IGlzQWJzb2x1dGUgPSBmYWxzZTtcbiAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcblxuICAvLyBUcnkgdG8gbWF0Y2ggYSByb290XG4gIGlmIChsZW4gPiAxKSB7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gUG9zc2libGUgVU5DIHJvb3RcblxuICAgICAgLy8gSWYgd2Ugc3RhcnRlZCB3aXRoIGEgc2VwYXJhdG9yLCB3ZSBrbm93IHdlIGF0IGxlYXN0IGhhdmUgYW4gYWJzb2x1dGVcbiAgICAgIC8vIHBhdGggb2Ygc29tZSBraW5kIChVTkMgb3Igb3RoZXJ3aXNlKVxuICAgICAgaXNBYnNvbHV0ZSA9IHRydWU7XG5cbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDEpKSkge1xuICAgICAgICAvLyBNYXRjaGVkIGRvdWJsZSBwYXRoIHNlcGFyYXRvciBhdCBiZWdpbm5pbmdcbiAgICAgICAgbGV0IGogPSAyO1xuICAgICAgICBsZXQgbGFzdCA9IGo7XG4gICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHtcbiAgICAgICAgICBjb25zdCBmaXJzdFBhcnQgPSBwYXRoLnNsaWNlKGxhc3QsIGopO1xuICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIHBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgIGlmICghaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAvLyBNYXRjaGVkIVxuICAgICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGogPT09IGxlbikge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgb25seVxuICAgICAgICAgICAgICAvLyBSZXR1cm4gdGhlIG5vcm1hbGl6ZWQgdmVyc2lvbiBvZiB0aGUgVU5DIHJvb3Qgc2luY2UgdGhlcmVcbiAgICAgICAgICAgICAgLy8gaXMgbm90aGluZyBsZWZ0IHRvIHByb2Nlc3NcblxuICAgICAgICAgICAgICByZXR1cm4gYFxcXFxcXFxcJHtmaXJzdFBhcnR9XFxcXCR7cGF0aC5zbGljZShsYXN0KX1cXFxcYDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgd2l0aCBsZWZ0b3ZlcnNcblxuICAgICAgICAgICAgICBkZXZpY2UgPSBgXFxcXFxcXFwke2ZpcnN0UGFydH1cXFxcJHtwYXRoLnNsaWNlKGxhc3QsIGopfWA7XG4gICAgICAgICAgICAgIHJvb3RFbmQgPSBqO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm9vdEVuZCA9IDE7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBkZXZpY2Ugcm9vdFxuXG4gICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgIGRldmljZSA9IHBhdGguc2xpY2UoMCwgMik7XG4gICAgICAgIHJvb3RFbmQgPSAyO1xuICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkge1xuICAgICAgICAgICAgLy8gVHJlYXQgc2VwYXJhdG9yIGZvbGxvd2luZyBkcml2ZSBuYW1lIGFzIGFuIGFic29sdXRlIHBhdGhcbiAgICAgICAgICAgIC8vIGluZGljYXRvclxuICAgICAgICAgICAgaXNBYnNvbHV0ZSA9IHRydWU7XG4gICAgICAgICAgICByb290RW5kID0gMztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgLy8gYHBhdGhgIGNvbnRhaW5zIGp1c3QgYSBwYXRoIHNlcGFyYXRvciwgZXhpdCBlYXJseSB0byBhdm9pZCB1bm5lY2Vzc2FyeVxuICAgIC8vIHdvcmtcbiAgICByZXR1cm4gXCJcXFxcXCI7XG4gIH1cblxuICBsZXQgdGFpbDogc3RyaW5nO1xuICBpZiAocm9vdEVuZCA8IGxlbikge1xuICAgIHRhaWwgPSBub3JtYWxpemVTdHJpbmcoXG4gICAgICBwYXRoLnNsaWNlKHJvb3RFbmQpLFxuICAgICAgIWlzQWJzb2x1dGUsXG4gICAgICBcIlxcXFxcIixcbiAgICAgIGlzUGF0aFNlcGFyYXRvcixcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHRhaWwgPSBcIlwiO1xuICB9XG4gIGlmICh0YWlsLmxlbmd0aCA9PT0gMCAmJiAhaXNBYnNvbHV0ZSkgdGFpbCA9IFwiLlwiO1xuICBpZiAodGFpbC5sZW5ndGggPiAwICYmIGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQobGVuIC0gMSkpKSB7XG4gICAgdGFpbCArPSBcIlxcXFxcIjtcbiAgfVxuICBpZiAoZGV2aWNlID09PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoaXNBYnNvbHV0ZSkge1xuICAgICAgaWYgKHRhaWwubGVuZ3RoID4gMCkgcmV0dXJuIGBcXFxcJHt0YWlsfWA7XG4gICAgICBlbHNlIHJldHVybiBcIlxcXFxcIjtcbiAgICB9IGVsc2UgaWYgKHRhaWwubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRhaWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc0Fic29sdXRlKSB7XG4gICAgaWYgKHRhaWwubGVuZ3RoID4gMCkgcmV0dXJuIGAke2RldmljZX1cXFxcJHt0YWlsfWA7XG4gICAgZWxzZSByZXR1cm4gYCR7ZGV2aWNlfVxcXFxgO1xuICB9IGVsc2UgaWYgKHRhaWwubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBkZXZpY2UgKyB0YWlsO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkZXZpY2U7XG4gIH1cbn1cblxuLyoqXG4gKiBWZXJpZmllcyB3aGV0aGVyIHBhdGggaXMgYWJzb2x1dGVcbiAqIEBwYXJhbSBwYXRoIHRvIHZlcmlmeVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBYnNvbHV0ZShwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcbiAgY29uc3QgbGVuID0gcGF0aC5sZW5ndGg7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNXaW5kb3dzRGV2aWNlUm9vdChjb2RlKSkge1xuICAgIC8vIFBvc3NpYmxlIGRldmljZSByb290XG5cbiAgICBpZiAobGVuID4gMiAmJiBwYXRoLmNoYXJDb2RlQXQoMSkgPT09IENIQVJfQ09MT04pIHtcbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBKb2luIGFsbCBnaXZlbiBhIHNlcXVlbmNlIG9mIGBwYXRoc2AsdGhlbiBub3JtYWxpemVzIHRoZSByZXN1bHRpbmcgcGF0aC5cbiAqIEBwYXJhbSBwYXRocyB0byBiZSBqb2luZWQgYW5kIG5vcm1hbGl6ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpvaW4oLi4ucGF0aHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgY29uc3QgcGF0aHNDb3VudCA9IHBhdGhzLmxlbmd0aDtcbiAgaWYgKHBhdGhzQ291bnQgPT09IDApIHJldHVybiBcIi5cIjtcblxuICBsZXQgam9pbmVkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxldCBmaXJzdFBhcnQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGhzQ291bnQ7ICsraSkge1xuICAgIGNvbnN0IHBhdGggPSBwYXRoc1tpXTtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChqb2luZWQgPT09IHVuZGVmaW5lZCkgam9pbmVkID0gZmlyc3RQYXJ0ID0gcGF0aDtcbiAgICAgIGVsc2Ugam9pbmVkICs9IGBcXFxcJHtwYXRofWA7XG4gICAgfVxuICB9XG5cbiAgaWYgKGpvaW5lZCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gXCIuXCI7XG5cbiAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGpvaW5lZCBwYXRoIGRvZXNuJ3Qgc3RhcnQgd2l0aCB0d28gc2xhc2hlcywgYmVjYXVzZVxuICAvLyBub3JtYWxpemUoKSB3aWxsIG1pc3Rha2UgaXQgZm9yIGFuIFVOQyBwYXRoIHRoZW4uXG4gIC8vXG4gIC8vIFRoaXMgc3RlcCBpcyBza2lwcGVkIHdoZW4gaXQgaXMgdmVyeSBjbGVhciB0aGF0IHRoZSB1c2VyIGFjdHVhbGx5XG4gIC8vIGludGVuZGVkIHRvIHBvaW50IGF0IGFuIFVOQyBwYXRoLiBUaGlzIGlzIGFzc3VtZWQgd2hlbiB0aGUgZmlyc3RcbiAgLy8gbm9uLWVtcHR5IHN0cmluZyBhcmd1bWVudHMgc3RhcnRzIHdpdGggZXhhY3RseSB0d28gc2xhc2hlcyBmb2xsb3dlZCBieVxuICAvLyBhdCBsZWFzdCBvbmUgbW9yZSBub24tc2xhc2ggY2hhcmFjdGVyLlxuICAvL1xuICAvLyBOb3RlIHRoYXQgZm9yIG5vcm1hbGl6ZSgpIHRvIHRyZWF0IGEgcGF0aCBhcyBhbiBVTkMgcGF0aCBpdCBuZWVkcyB0b1xuICAvLyBoYXZlIGF0IGxlYXN0IDIgY29tcG9uZW50cywgc28gd2UgZG9uJ3QgZmlsdGVyIGZvciB0aGF0IGhlcmUuXG4gIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGUgdXNlciBjYW4gdXNlIGpvaW4gdG8gY29uc3RydWN0IFVOQyBwYXRocyBmcm9tXG4gIC8vIGEgc2VydmVyIG5hbWUgYW5kIGEgc2hhcmUgbmFtZTsgZm9yIGV4YW1wbGU6XG4gIC8vICAgcGF0aC5qb2luKCcvL3NlcnZlcicsICdzaGFyZScpIC0+ICdcXFxcXFxcXHNlcnZlclxcXFxzaGFyZVxcXFwnKVxuICBsZXQgbmVlZHNSZXBsYWNlID0gdHJ1ZTtcbiAgbGV0IHNsYXNoQ291bnQgPSAwO1xuICBhc3NlcnQoZmlyc3RQYXJ0ICE9IG51bGwpO1xuICBpZiAoaXNQYXRoU2VwYXJhdG9yKGZpcnN0UGFydC5jaGFyQ29kZUF0KDApKSkge1xuICAgICsrc2xhc2hDb3VudDtcbiAgICBjb25zdCBmaXJzdExlbiA9IGZpcnN0UGFydC5sZW5ndGg7XG4gICAgaWYgKGZpcnN0TGVuID4gMSkge1xuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihmaXJzdFBhcnQuY2hhckNvZGVBdCgxKSkpIHtcbiAgICAgICAgKytzbGFzaENvdW50O1xuICAgICAgICBpZiAoZmlyc3RMZW4gPiAyKSB7XG4gICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihmaXJzdFBhcnQuY2hhckNvZGVBdCgyKSkpICsrc2xhc2hDb3VudDtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcGF0aCBpbiB0aGUgZmlyc3QgcGFydFxuICAgICAgICAgICAgbmVlZHNSZXBsYWNlID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChuZWVkc1JlcGxhY2UpIHtcbiAgICAvLyBGaW5kIGFueSBtb3JlIGNvbnNlY3V0aXZlIHNsYXNoZXMgd2UgbmVlZCB0byByZXBsYWNlXG4gICAgZm9yICg7IHNsYXNoQ291bnQgPCBqb2luZWQubGVuZ3RoOyArK3NsYXNoQ291bnQpIHtcbiAgICAgIGlmICghaXNQYXRoU2VwYXJhdG9yKGpvaW5lZC5jaGFyQ29kZUF0KHNsYXNoQ291bnQpKSkgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gUmVwbGFjZSB0aGUgc2xhc2hlcyBpZiBuZWVkZWRcbiAgICBpZiAoc2xhc2hDb3VudCA+PSAyKSBqb2luZWQgPSBgXFxcXCR7am9pbmVkLnNsaWNlKHNsYXNoQ291bnQpfWA7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplKGpvaW5lZCk7XG59XG5cbi8qKlxuICogSXQgd2lsbCBzb2x2ZSB0aGUgcmVsYXRpdmUgcGF0aCBmcm9tIGBmcm9tYCB0byBgdG9gLCBmb3IgaW5zdGFuY2U6XG4gKiAgZnJvbSA9ICdDOlxcXFxvcmFuZGVhXFxcXHRlc3RcXFxcYWFhJ1xuICogIHRvID0gJ0M6XFxcXG9yYW5kZWFcXFxcaW1wbFxcXFxiYmInXG4gKiBUaGUgb3V0cHV0IG9mIHRoZSBmdW5jdGlvbiBzaG91bGQgYmU6ICcuLlxcXFwuLlxcXFxpbXBsXFxcXGJiYidcbiAqIEBwYXJhbSBmcm9tIHJlbGF0aXZlIHBhdGhcbiAqIEBwYXJhbSB0byByZWxhdGl2ZSBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWxhdGl2ZShmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRQYXRoKGZyb20pO1xuICBhc3NlcnRQYXRoKHRvKTtcblxuICBpZiAoZnJvbSA9PT0gdG8pIHJldHVybiBcIlwiO1xuXG4gIGNvbnN0IGZyb21PcmlnID0gcmVzb2x2ZShmcm9tKTtcbiAgY29uc3QgdG9PcmlnID0gcmVzb2x2ZSh0byk7XG5cbiAgaWYgKGZyb21PcmlnID09PSB0b09yaWcpIHJldHVybiBcIlwiO1xuXG4gIGZyb20gPSBmcm9tT3JpZy50b0xvd2VyQ2FzZSgpO1xuICB0byA9IHRvT3JpZy50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmIChmcm9tID09PSB0bykgcmV0dXJuIFwiXCI7XG5cbiAgLy8gVHJpbSBhbnkgbGVhZGluZyBiYWNrc2xhc2hlc1xuICBsZXQgZnJvbVN0YXJ0ID0gMDtcbiAgbGV0IGZyb21FbmQgPSBmcm9tLmxlbmd0aDtcbiAgZm9yICg7IGZyb21TdGFydCA8IGZyb21FbmQ7ICsrZnJvbVN0YXJ0KSB7XG4gICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQpICE9PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSBicmVhaztcbiAgfVxuICAvLyBUcmltIHRyYWlsaW5nIGJhY2tzbGFzaGVzIChhcHBsaWNhYmxlIHRvIFVOQyBwYXRocyBvbmx5KVxuICBmb3IgKDsgZnJvbUVuZCAtIDEgPiBmcm9tU3RhcnQ7IC0tZnJvbUVuZCkge1xuICAgIGlmIChmcm9tLmNoYXJDb2RlQXQoZnJvbUVuZCAtIDEpICE9PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSBicmVhaztcbiAgfVxuICBjb25zdCBmcm9tTGVuID0gZnJvbUVuZCAtIGZyb21TdGFydDtcblxuICAvLyBUcmltIGFueSBsZWFkaW5nIGJhY2tzbGFzaGVzXG4gIGxldCB0b1N0YXJ0ID0gMDtcbiAgbGV0IHRvRW5kID0gdG8ubGVuZ3RoO1xuICBmb3IgKDsgdG9TdGFydCA8IHRvRW5kOyArK3RvU3RhcnQpIHtcbiAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSAhPT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkgYnJlYWs7XG4gIH1cbiAgLy8gVHJpbSB0cmFpbGluZyBiYWNrc2xhc2hlcyAoYXBwbGljYWJsZSB0byBVTkMgcGF0aHMgb25seSlcbiAgZm9yICg7IHRvRW5kIC0gMSA+IHRvU3RhcnQ7IC0tdG9FbmQpIHtcbiAgICBpZiAodG8uY2hhckNvZGVBdCh0b0VuZCAtIDEpICE9PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSBicmVhaztcbiAgfVxuICBjb25zdCB0b0xlbiA9IHRvRW5kIC0gdG9TdGFydDtcblxuICAvLyBDb21wYXJlIHBhdGhzIHRvIGZpbmQgdGhlIGxvbmdlc3QgY29tbW9uIHBhdGggZnJvbSByb290XG4gIGNvbnN0IGxlbmd0aCA9IGZyb21MZW4gPCB0b0xlbiA/IGZyb21MZW4gOiB0b0xlbjtcbiAgbGV0IGxhc3RDb21tb25TZXAgPSAtMTtcbiAgbGV0IGkgPSAwO1xuICBmb3IgKDsgaSA8PSBsZW5ndGg7ICsraSkge1xuICAgIGlmIChpID09PSBsZW5ndGgpIHtcbiAgICAgIGlmICh0b0xlbiA+IGxlbmd0aCkge1xuICAgICAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0ICsgaSkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYHRvYC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nQzpcXFxcZm9vXFxcXGJhcic7IHRvPSdDOlxcXFxmb29cXFxcYmFyXFxcXGJheidcbiAgICAgICAgICByZXR1cm4gdG9PcmlnLnNsaWNlKHRvU3RhcnQgKyBpICsgMSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMikge1xuICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGBmcm9tYCBpcyB0aGUgZGV2aWNlIHJvb3QuXG4gICAgICAgICAgLy8gRm9yIGV4YW1wbGU6IGZyb209J0M6XFxcXCc7IHRvPSdDOlxcXFxmb28nXG4gICAgICAgICAgcmV0dXJuIHRvT3JpZy5zbGljZSh0b1N0YXJ0ICsgaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmcm9tTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgIGlmIChmcm9tLmNoYXJDb2RlQXQoZnJvbVN0YXJ0ICsgaSkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgdG9gIGlzIHRoZSBleGFjdCBiYXNlIHBhdGggZm9yIGBmcm9tYC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nQzpcXFxcZm9vXFxcXGJhcic7IHRvPSdDOlxcXFxmb28nXG4gICAgICAgICAgbGFzdENvbW1vblNlcCA9IGk7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMikge1xuICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGB0b2AgaXMgdGhlIGRldmljZSByb290LlxuICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPSdDOlxcXFxmb29cXFxcYmFyJzsgdG89J0M6XFxcXCdcbiAgICAgICAgICBsYXN0Q29tbW9uU2VwID0gMztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IGZyb21Db2RlID0gZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCArIGkpO1xuICAgIGNvbnN0IHRvQ29kZSA9IHRvLmNoYXJDb2RlQXQodG9TdGFydCArIGkpO1xuICAgIGlmIChmcm9tQ29kZSAhPT0gdG9Db2RlKSBicmVhaztcbiAgICBlbHNlIGlmIChmcm9tQ29kZSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkgbGFzdENvbW1vblNlcCA9IGk7XG4gIH1cblxuICAvLyBXZSBmb3VuZCBhIG1pc21hdGNoIGJlZm9yZSB0aGUgZmlyc3QgY29tbW9uIHBhdGggc2VwYXJhdG9yIHdhcyBzZWVuLCBzb1xuICAvLyByZXR1cm4gdGhlIG9yaWdpbmFsIGB0b2AuXG4gIGlmIChpICE9PSBsZW5ndGggJiYgbGFzdENvbW1vblNlcCA9PT0gLTEpIHtcbiAgICByZXR1cm4gdG9PcmlnO1xuICB9XG5cbiAgbGV0IG91dCA9IFwiXCI7XG4gIGlmIChsYXN0Q29tbW9uU2VwID09PSAtMSkgbGFzdENvbW1vblNlcCA9IDA7XG4gIC8vIEdlbmVyYXRlIHRoZSByZWxhdGl2ZSBwYXRoIGJhc2VkIG9uIHRoZSBwYXRoIGRpZmZlcmVuY2UgYmV0d2VlbiBgdG9gIGFuZFxuICAvLyBgZnJvbWBcbiAgZm9yIChpID0gZnJvbVN0YXJ0ICsgbGFzdENvbW1vblNlcCArIDE7IGkgPD0gZnJvbUVuZDsgKytpKSB7XG4gICAgaWYgKGkgPT09IGZyb21FbmQgfHwgZnJvbS5jaGFyQ29kZUF0KGkpID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7XG4gICAgICBpZiAob3V0Lmxlbmd0aCA9PT0gMCkgb3V0ICs9IFwiLi5cIjtcbiAgICAgIGVsc2Ugb3V0ICs9IFwiXFxcXC4uXCI7XG4gICAgfVxuICB9XG5cbiAgLy8gTGFzdGx5LCBhcHBlbmQgdGhlIHJlc3Qgb2YgdGhlIGRlc3RpbmF0aW9uIChgdG9gKSBwYXRoIHRoYXQgY29tZXMgYWZ0ZXJcbiAgLy8gdGhlIGNvbW1vbiBwYXRoIHBhcnRzXG4gIGlmIChvdXQubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBvdXQgKyB0b09yaWcuc2xpY2UodG9TdGFydCArIGxhc3RDb21tb25TZXAsIHRvRW5kKTtcbiAgfSBlbHNlIHtcbiAgICB0b1N0YXJ0ICs9IGxhc3RDb21tb25TZXA7XG4gICAgaWYgKHRvT3JpZy5jaGFyQ29kZUF0KHRvU3RhcnQpID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSArK3RvU3RhcnQ7XG4gICAgcmV0dXJuIHRvT3JpZy5zbGljZSh0b1N0YXJ0LCB0b0VuZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBwYXRoIHRvIGEgbmFtZXNwYWNlIHBhdGhcbiAqIEBwYXJhbSBwYXRoIHRvIHJlc29sdmUgdG8gbmFtZXNwYWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b05hbWVzcGFjZWRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIE5vdGU6IHRoaXMgd2lsbCAqcHJvYmFibHkqIHRocm93IHNvbWV3aGVyZS5cbiAgaWYgKHR5cGVvZiBwYXRoICE9PSBcInN0cmluZ1wiKSByZXR1cm4gcGF0aDtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gXCJcIjtcblxuICBjb25zdCByZXNvbHZlZFBhdGggPSByZXNvbHZlKHBhdGgpO1xuXG4gIGlmIChyZXNvbHZlZFBhdGgubGVuZ3RoID49IDMpIHtcbiAgICBpZiAocmVzb2x2ZWRQYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgIC8vIFBvc3NpYmxlIFVOQyByb290XG5cbiAgICAgIGlmIChyZXNvbHZlZFBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkge1xuICAgICAgICBjb25zdCBjb2RlID0gcmVzb2x2ZWRQYXRoLmNoYXJDb2RlQXQoMik7XG4gICAgICAgIGlmIChjb2RlICE9PSBDSEFSX1FVRVNUSU9OX01BUksgJiYgY29kZSAhPT0gQ0hBUl9ET1QpIHtcbiAgICAgICAgICAvLyBNYXRjaGVkIG5vbi1sb25nIFVOQyByb290LCBjb252ZXJ0IHRoZSBwYXRoIHRvIGEgbG9uZyBVTkMgcGF0aFxuICAgICAgICAgIHJldHVybiBgXFxcXFxcXFw/XFxcXFVOQ1xcXFwke3Jlc29sdmVkUGF0aC5zbGljZSgyKX1gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KHJlc29sdmVkUGF0aC5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgICAgaWYgKFxuICAgICAgICByZXNvbHZlZFBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTiAmJlxuICAgICAgICByZXNvbHZlZFBhdGguY2hhckNvZGVBdCgyKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSFxuICAgICAgKSB7XG4gICAgICAgIC8vIE1hdGNoZWQgZGV2aWNlIHJvb3QsIGNvbnZlcnQgdGhlIHBhdGggdG8gYSBsb25nIFVOQyBwYXRoXG4gICAgICAgIHJldHVybiBgXFxcXFxcXFw/XFxcXCR7cmVzb2x2ZWRQYXRofWA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhdGg7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBkaXJlY3RvcnkgbmFtZSBvZiBhIGBwYXRoYC5cbiAqIEBwYXJhbSBwYXRoIHRvIGRldGVybWluZSBuYW1lIGZvclxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlybmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIFwiLlwiO1xuICBsZXQgcm9vdEVuZCA9IC0xO1xuICBsZXQgZW5kID0gLTE7XG4gIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICBsZXQgb2Zmc2V0ID0gMDtcbiAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcblxuICAvLyBUcnkgdG8gbWF0Y2ggYSByb290XG4gIGlmIChsZW4gPiAxKSB7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gUG9zc2libGUgVU5DIHJvb3RcblxuICAgICAgcm9vdEVuZCA9IG9mZnNldCA9IDE7XG5cbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDEpKSkge1xuICAgICAgICAvLyBNYXRjaGVkIGRvdWJsZSBwYXRoIHNlcGFyYXRvciBhdCBiZWdpbm5pbmdcbiAgICAgICAgbGV0IGogPSAyO1xuICAgICAgICBsZXQgbGFzdCA9IGo7XG4gICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHtcbiAgICAgICAgICAvLyBNYXRjaGVkIVxuICAgICAgICAgIGxhc3QgPSBqO1xuICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBwYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgICBpZiAoIWlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgLy8gTWF0Y2hlZCFcbiAgICAgICAgICAgIGxhc3QgPSBqO1xuICAgICAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIG5vbi1wYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqID09PSBsZW4pIHtcbiAgICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyByb290IG9ubHlcbiAgICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgd2l0aCBsZWZ0b3ZlcnNcblxuICAgICAgICAgICAgICAvLyBPZmZzZXQgYnkgMSB0byBpbmNsdWRlIHRoZSBzZXBhcmF0b3IgYWZ0ZXIgdGhlIFVOQyByb290IHRvXG4gICAgICAgICAgICAgIC8vIHRyZWF0IGl0IGFzIGEgXCJub3JtYWwgcm9vdFwiIG9uIHRvcCBvZiBhIChVTkMpIHJvb3RcbiAgICAgICAgICAgICAgcm9vdEVuZCA9IG9mZnNldCA9IGogKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNXaW5kb3dzRGV2aWNlUm9vdChjb2RlKSkge1xuICAgICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgICAgaWYgKHBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTikge1xuICAgICAgICByb290RW5kID0gb2Zmc2V0ID0gMjtcbiAgICAgICAgaWYgKGxlbiA+IDIpIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgyKSkpIHJvb3RFbmQgPSBvZmZzZXQgPSAzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgIC8vIGBwYXRoYCBjb250YWlucyBqdXN0IGEgcGF0aCBzZXBhcmF0b3IsIGV4aXQgZWFybHkgdG8gYXZvaWRcbiAgICAvLyB1bm5lY2Vzc2FyeSB3b3JrXG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cblxuICBmb3IgKGxldCBpID0gbGVuIC0gMTsgaSA+PSBvZmZzZXQ7IC0taSkge1xuICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgZW5kID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yXG4gICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAoZW5kID09PSAtMSkge1xuICAgIGlmIChyb290RW5kID09PSAtMSkgcmV0dXJuIFwiLlwiO1xuICAgIGVsc2UgZW5kID0gcm9vdEVuZDtcbiAgfVxuICByZXR1cm4gcGF0aC5zbGljZSgwLCBlbmQpO1xufVxuXG4vKipcbiAqIFJldHVybiB0aGUgbGFzdCBwb3J0aW9uIG9mIGEgYHBhdGhgLiBUcmFpbGluZyBkaXJlY3Rvcnkgc2VwYXJhdG9ycyBhcmUgaWdub3JlZC5cbiAqIEBwYXJhbSBwYXRoIHRvIHByb2Nlc3NcbiAqIEBwYXJhbSBleHQgb2YgcGF0aCBkaXJlY3RvcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJhc2VuYW1lKHBhdGg6IHN0cmluZywgZXh0ID0gXCJcIik6IHN0cmluZyB7XG4gIGlmIChleHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZXh0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJleHRcIiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gIH1cblxuICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gIGxldCBzdGFydCA9IDA7XG4gIGxldCBlbmQgPSAtMTtcbiAgbGV0IG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIGxldCBpOiBudW1iZXI7XG5cbiAgLy8gQ2hlY2sgZm9yIGEgZHJpdmUgbGV0dGVyIHByZWZpeCBzbyBhcyBub3QgdG8gbWlzdGFrZSB0aGUgZm9sbG93aW5nXG4gIC8vIHBhdGggc2VwYXJhdG9yIGFzIGFuIGV4dHJhIHNlcGFyYXRvciBhdCB0aGUgZW5kIG9mIHRoZSBwYXRoIHRoYXQgY2FuIGJlXG4gIC8vIGRpc3JlZ2FyZGVkXG4gIGlmIChwYXRoLmxlbmd0aCA+PSAyKSB7XG4gICAgY29uc3QgZHJpdmUgPSBwYXRoLmNoYXJDb2RlQXQoMCk7XG4gICAgaWYgKGlzV2luZG93c0RldmljZVJvb3QoZHJpdmUpKSB7XG4gICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSBzdGFydCA9IDI7XG4gICAgfVxuICB9XG5cbiAgaWYgKGV4dCAhPT0gdW5kZWZpbmVkICYmIGV4dC5sZW5ndGggPiAwICYmIGV4dC5sZW5ndGggPD0gcGF0aC5sZW5ndGgpIHtcbiAgICBpZiAoZXh0Lmxlbmd0aCA9PT0gcGF0aC5sZW5ndGggJiYgZXh0ID09PSBwYXRoKSByZXR1cm4gXCJcIjtcbiAgICBsZXQgZXh0SWR4ID0gZXh0Lmxlbmd0aCAtIDE7XG4gICAgbGV0IGZpcnN0Tm9uU2xhc2hFbmQgPSAtMTtcbiAgICBmb3IgKGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IC0taSkge1xuICAgICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZpcnN0Tm9uU2xhc2hFbmQgPT09IC0xKSB7XG4gICAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIHJlbWVtYmVyIHRoaXMgaW5kZXggaW4gY2FzZVxuICAgICAgICAgIC8vIHdlIG5lZWQgaXQgaWYgdGhlIGV4dGVuc2lvbiBlbmRzIHVwIG5vdCBtYXRjaGluZ1xuICAgICAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgICAgIGZpcnN0Tm9uU2xhc2hFbmQgPSBpICsgMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXh0SWR4ID49IDApIHtcbiAgICAgICAgICAvLyBUcnkgdG8gbWF0Y2ggdGhlIGV4cGxpY2l0IGV4dGVuc2lvblxuICAgICAgICAgIGlmIChjb2RlID09PSBleHQuY2hhckNvZGVBdChleHRJZHgpKSB7XG4gICAgICAgICAgICBpZiAoLS1leHRJZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgdGhlIGV4dGVuc2lvbiwgc28gbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyIHBhdGhcbiAgICAgICAgICAgICAgLy8gY29tcG9uZW50XG4gICAgICAgICAgICAgIGVuZCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEV4dGVuc2lvbiBkb2VzIG5vdCBtYXRjaCwgc28gb3VyIHJlc3VsdCBpcyB0aGUgZW50aXJlIHBhdGhcbiAgICAgICAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgICAgICAgZXh0SWR4ID0gLTE7XG4gICAgICAgICAgICBlbmQgPSBmaXJzdE5vblNsYXNoRW5kO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGFydCA9PT0gZW5kKSBlbmQgPSBmaXJzdE5vblNsYXNoRW5kO1xuICAgIGVsc2UgaWYgKGVuZCA9PT0gLTEpIGVuZCA9IHBhdGgubGVuZ3RoO1xuICAgIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9IGVsc2Uge1xuICAgIGZvciAoaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSBzdGFydDsgLS1pKSB7XG4gICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChpKSkpIHtcbiAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgICAgLy8gcGF0aCBjb21wb25lbnRcbiAgICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICAgIGVuZCA9IGkgKyAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbmQgPT09IC0xKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBgcGF0aGAgd2l0aCBsZWFkaW5nIHBlcmlvZC5cbiAqIEBwYXJhbSBwYXRoIHdpdGggZXh0ZW5zaW9uXG4gKiBAcmV0dXJucyBleHRlbnNpb24gKGV4LiBmb3IgYGZpbGUudHNgIHJldHVybnMgYC50c2ApXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRuYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG4gIGxldCBzdGFydCA9IDA7XG4gIGxldCBzdGFydERvdCA9IC0xO1xuICBsZXQgc3RhcnRQYXJ0ID0gMDtcbiAgbGV0IGVuZCA9IC0xO1xuICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgLy8gVHJhY2sgdGhlIHN0YXRlIG9mIGNoYXJhY3RlcnMgKGlmIGFueSkgd2Ugc2VlIGJlZm9yZSBvdXIgZmlyc3QgZG90IGFuZFxuICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICBsZXQgcHJlRG90U3RhdGUgPSAwO1xuXG4gIC8vIENoZWNrIGZvciBhIGRyaXZlIGxldHRlciBwcmVmaXggc28gYXMgbm90IHRvIG1pc3Rha2UgdGhlIGZvbGxvd2luZ1xuICAvLyBwYXRoIHNlcGFyYXRvciBhcyBhbiBleHRyYSBzZXBhcmF0b3IgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aCB0aGF0IGNhbiBiZVxuICAvLyBkaXNyZWdhcmRlZFxuXG4gIGlmIChcbiAgICBwYXRoLmxlbmd0aCA+PSAyICYmXG4gICAgcGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OICYmXG4gICAgaXNXaW5kb3dzRGV2aWNlUm9vdChwYXRoLmNoYXJDb2RlQXQoMCkpXG4gICkge1xuICAgIHN0YXJ0ID0gc3RhcnRQYXJ0ID0gMjtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IC0taSkge1xuICAgIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAvLyBleHRlbnNpb25cbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgZW5kID0gaSArIDE7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSBDSEFSX0RPVCkge1xuICAgICAgLy8gSWYgdGhpcyBpcyBvdXIgZmlyc3QgZG90LCBtYXJrIGl0IGFzIHRoZSBzdGFydCBvZiBvdXIgZXh0ZW5zaW9uXG4gICAgICBpZiAoc3RhcnREb3QgPT09IC0xKSBzdGFydERvdCA9IGk7XG4gICAgICBlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSkgcHJlRG90U3RhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoc3RhcnREb3QgIT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgYSBub24tZG90IGFuZCBub24tcGF0aCBzZXBhcmF0b3IgYmVmb3JlIG91ciBkb3QsIHNvIHdlIHNob3VsZFxuICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgIHByZURvdFN0YXRlID0gLTE7XG4gICAgfVxuICB9XG5cbiAgaWYgKFxuICAgIHN0YXJ0RG90ID09PSAtMSB8fFxuICAgIGVuZCA9PT0gLTEgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgIChwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSlcbiAgKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbiAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnREb3QsIGVuZCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBwYXRoIGZyb20gYEZvcm1hdElucHV0UGF0aE9iamVjdGAgb2JqZWN0LlxuICogQHBhcmFtIHBhdGhPYmplY3Qgd2l0aCBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXQocGF0aE9iamVjdDogRm9ybWF0SW5wdXRQYXRoT2JqZWN0KTogc3RyaW5nIHtcbiAgaWYgKHBhdGhPYmplY3QgPT09IG51bGwgfHwgdHlwZW9mIHBhdGhPYmplY3QgIT09IFwib2JqZWN0XCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYFRoZSBcInBhdGhPYmplY3RcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIHBhdGhPYmplY3R9YCxcbiAgICApO1xuICB9XG4gIHJldHVybiBfZm9ybWF0KFwiXFxcXFwiLCBwYXRoT2JqZWN0KTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gYSBgUGFyc2VkUGF0aGAgb2JqZWN0IG9mIHRoZSBgcGF0aGAuXG4gKiBAcGFyYW0gcGF0aCB0byBwcm9jZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShwYXRoOiBzdHJpbmcpOiBQYXJzZWRQYXRoIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICBjb25zdCByZXQ6IFBhcnNlZFBhdGggPSB7IHJvb3Q6IFwiXCIsIGRpcjogXCJcIiwgYmFzZTogXCJcIiwgZXh0OiBcIlwiLCBuYW1lOiBcIlwiIH07XG5cbiAgY29uc3QgbGVuID0gcGF0aC5sZW5ndGg7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiByZXQ7XG5cbiAgbGV0IHJvb3RFbmQgPSAwO1xuICBsZXQgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcblxuICAvLyBUcnkgdG8gbWF0Y2ggYSByb290XG4gIGlmIChsZW4gPiAxKSB7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gUG9zc2libGUgVU5DIHJvb3RcblxuICAgICAgcm9vdEVuZCA9IDE7XG4gICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgxKSkpIHtcbiAgICAgICAgLy8gTWF0Y2hlZCBkb3VibGUgcGF0aCBzZXBhcmF0b3IgYXQgYmVnaW5uaW5nXG4gICAgICAgIGxldCBqID0gMjtcbiAgICAgICAgbGV0IGxhc3QgPSBqO1xuICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgLy8gTWF0Y2hlZCFcbiAgICAgICAgICBsYXN0ID0gajtcbiAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgaWYgKCFpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHtcbiAgICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgICBsYXN0ID0gajtcbiAgICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaiA9PT0gbGVuKSB7XG4gICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcm9vdCBvbmx5XG5cbiAgICAgICAgICAgICAgcm9vdEVuZCA9IGo7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGogIT09IGxhc3QpIHtcbiAgICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyByb290IHdpdGggbGVmdG92ZXJzXG5cbiAgICAgICAgICAgICAgcm9vdEVuZCA9IGogKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNXaW5kb3dzRGV2aWNlUm9vdChjb2RlKSkge1xuICAgICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgICAgaWYgKHBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTikge1xuICAgICAgICByb290RW5kID0gMjtcbiAgICAgICAgaWYgKGxlbiA+IDIpIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgyKSkpIHtcbiAgICAgICAgICAgIGlmIChsZW4gPT09IDMpIHtcbiAgICAgICAgICAgICAgLy8gYHBhdGhgIGNvbnRhaW5zIGp1c3QgYSBkcml2ZSByb290LCBleGl0IGVhcmx5IHRvIGF2b2lkXG4gICAgICAgICAgICAgIC8vIHVubmVjZXNzYXJ5IHdvcmtcbiAgICAgICAgICAgICAgcmV0LnJvb3QgPSByZXQuZGlyID0gcGF0aDtcbiAgICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJvb3RFbmQgPSAzO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBgcGF0aGAgY29udGFpbnMganVzdCBhIGRyaXZlIHJvb3QsIGV4aXQgZWFybHkgdG8gYXZvaWRcbiAgICAgICAgICAvLyB1bm5lY2Vzc2FyeSB3b3JrXG4gICAgICAgICAgcmV0LnJvb3QgPSByZXQuZGlyID0gcGF0aDtcbiAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgIC8vIGBwYXRoYCBjb250YWlucyBqdXN0IGEgcGF0aCBzZXBhcmF0b3IsIGV4aXQgZWFybHkgdG8gYXZvaWRcbiAgICAvLyB1bm5lY2Vzc2FyeSB3b3JrXG4gICAgcmV0LnJvb3QgPSByZXQuZGlyID0gcGF0aDtcbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgaWYgKHJvb3RFbmQgPiAwKSByZXQucm9vdCA9IHBhdGguc2xpY2UoMCwgcm9vdEVuZCk7XG5cbiAgbGV0IHN0YXJ0RG90ID0gLTE7XG4gIGxldCBzdGFydFBhcnQgPSByb290RW5kO1xuICBsZXQgZW5kID0gLTE7XG4gIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICBsZXQgaSA9IHBhdGgubGVuZ3RoIC0gMTtcblxuICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gIC8vIGFmdGVyIGFueSBwYXRoIHNlcGFyYXRvciB3ZSBmaW5kXG4gIGxldCBwcmVEb3RTdGF0ZSA9IDA7XG5cbiAgLy8gR2V0IG5vbi1kaXIgaW5mb1xuICBmb3IgKDsgaSA+PSByb290RW5kOyAtLWkpIHtcbiAgICBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgLy8gZXh0ZW5zaW9uXG4gICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgIGVuZCA9IGkgKyAxO1xuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gQ0hBUl9ET1QpIHtcbiAgICAgIC8vIElmIHRoaXMgaXMgb3VyIGZpcnN0IGRvdCwgbWFyayBpdCBhcyB0aGUgc3RhcnQgb2Ygb3VyIGV4dGVuc2lvblxuICAgICAgaWYgKHN0YXJ0RG90ID09PSAtMSkgc3RhcnREb3QgPSBpO1xuICAgICAgZWxzZSBpZiAocHJlRG90U3RhdGUgIT09IDEpIHByZURvdFN0YXRlID0gMTtcbiAgICB9IGVsc2UgaWYgKHN0YXJ0RG90ICE9PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgIC8vIGhhdmUgYSBnb29kIGNoYW5jZSBhdCBoYXZpbmcgYSBub24tZW1wdHkgZXh0ZW5zaW9uXG4gICAgICBwcmVEb3RTdGF0ZSA9IC0xO1xuICAgIH1cbiAgfVxuXG4gIGlmIChcbiAgICBzdGFydERvdCA9PT0gLTEgfHxcbiAgICBlbmQgPT09IC0xIHx8XG4gICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkb3RcbiAgICBwcmVEb3RTdGF0ZSA9PT0gMCB8fFxuICAgIC8vIFRoZSAocmlnaHQtbW9zdCkgdHJpbW1lZCBwYXRoIGNvbXBvbmVudCBpcyBleGFjdGx5ICcuLidcbiAgICAocHJlRG90U3RhdGUgPT09IDEgJiYgc3RhcnREb3QgPT09IGVuZCAtIDEgJiYgc3RhcnREb3QgPT09IHN0YXJ0UGFydCArIDEpXG4gICkge1xuICAgIGlmIChlbmQgIT09IC0xKSB7XG4gICAgICByZXQuYmFzZSA9IHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIGVuZCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIHN0YXJ0RG90KTtcbiAgICByZXQuYmFzZSA9IHBhdGguc2xpY2Uoc3RhcnRQYXJ0LCBlbmQpO1xuICAgIHJldC5leHQgPSBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xuICB9XG5cbiAgLy8gSWYgdGhlIGRpcmVjdG9yeSBpcyB0aGUgcm9vdCwgdXNlIHRoZSBlbnRpcmUgcm9vdCBhcyB0aGUgYGRpcmAgaW5jbHVkaW5nXG4gIC8vIHRoZSB0cmFpbGluZyBzbGFzaCBpZiBhbnkgKGBDOlxcYWJjYCAtPiBgQzpcXGApLiBPdGhlcndpc2UsIHN0cmlwIG91dCB0aGVcbiAgLy8gdHJhaWxpbmcgc2xhc2ggKGBDOlxcYWJjXFxkZWZgIC0+IGBDOlxcYWJjYCkuXG4gIGlmIChzdGFydFBhcnQgPiAwICYmIHN0YXJ0UGFydCAhPT0gcm9vdEVuZCkge1xuICAgIHJldC5kaXIgPSBwYXRoLnNsaWNlKDAsIHN0YXJ0UGFydCAtIDEpO1xuICB9IGVsc2UgcmV0LmRpciA9IHJldC5yb290O1xuXG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBmaWxlIFVSTCB0byBhIHBhdGggc3RyaW5nLlxuICpcbiAqIGBgYHRzXG4gKiAgICAgIGltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcIi4vd2luMzIudHNcIjtcbiAqICAgICAgZnJvbUZpbGVVcmwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpOyAvLyBcIlxcXFxob21lXFxcXGZvb1wiXG4gKiAgICAgIGZyb21GaWxlVXJsKFwiZmlsZTovLy9DOi9Vc2Vycy9mb29cIik7IC8vIFwiQzpcXFxcVXNlcnNcXFxcZm9vXCJcbiAqICAgICAgZnJvbUZpbGVVcmwoXCJmaWxlOi8vbG9jYWxob3N0L2hvbWUvZm9vXCIpOyAvLyBcIlxcXFxcXFxcbG9jYWxob3N0XFxcXGhvbWVcXFxcZm9vXCJcbiAqIGBgYFxuICogQHBhcmFtIHVybCBvZiBhIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tRmlsZVVybCh1cmw6IHN0cmluZyB8IFVSTCk6IHN0cmluZyB7XG4gIHVybCA9IHVybCBpbnN0YW5jZW9mIFVSTCA/IHVybCA6IG5ldyBVUkwodXJsKTtcbiAgaWYgKHVybC5wcm90b2NvbCAhPSBcImZpbGU6XCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBhIGZpbGUgVVJMLlwiKTtcbiAgfVxuICBsZXQgcGF0aCA9IGRlY29kZVVSSUNvbXBvbmVudChcbiAgICB1cmwucGF0aG5hbWUucmVwbGFjZSgvXFwvL2csIFwiXFxcXFwiKS5yZXBsYWNlKC8lKD8hWzAtOUEtRmEtZl17Mn0pL2csIFwiJTI1XCIpLFxuICApLnJlcGxhY2UoL15cXFxcKihbQS1aYS16XTopKFxcXFx8JCkvLCBcIiQxXFxcXFwiKTtcbiAgaWYgKHVybC5ob3N0bmFtZSAhPSBcIlwiKSB7XG4gICAgLy8gTm90ZTogVGhlIGBVUkxgIGltcGxlbWVudGF0aW9uIGd1YXJhbnRlZXMgdGhhdCB0aGUgZHJpdmUgbGV0dGVyIGFuZFxuICAgIC8vIGhvc3RuYW1lIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIE90aGVyd2lzZSBpdCB3b3VsZCBub3QgaGF2ZSBiZWVuIHZhbGlkXG4gICAgLy8gdG8gYXBwZW5kIHRoZSBob3N0bmFtZSBhbmQgcGF0aCBsaWtlIHRoaXMuXG4gICAgcGF0aCA9IGBcXFxcXFxcXCR7dXJsLmhvc3RuYW1lfSR7cGF0aH1gO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgcGF0aCBzdHJpbmcgdG8gYSBmaWxlIFVSTC5cbiAqXG4gKiBgYGB0c1xuICogICAgICBpbXBvcnQgeyB0b0ZpbGVVcmwgfSBmcm9tIFwiLi93aW4zMi50c1wiO1xuICogICAgICB0b0ZpbGVVcmwoXCJcXFxcaG9tZVxcXFxmb29cIik7IC8vIG5ldyBVUkwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpXG4gKiAgICAgIHRvRmlsZVVybChcIkM6XFxcXFVzZXJzXFxcXGZvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8vQzovVXNlcnMvZm9vXCIpXG4gKiAgICAgIHRvRmlsZVVybChcIlxcXFxcXFxcMTI3LjAuMC4xXFxcXGhvbWVcXFxcZm9vXCIpOyAvLyBuZXcgVVJMKFwiZmlsZTovLzEyNy4wLjAuMS9ob21lL2Zvb1wiKVxuICogYGBgXG4gKiBAcGFyYW0gcGF0aCB0byBjb252ZXJ0IHRvIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0ZpbGVVcmwocGF0aDogc3RyaW5nKTogVVJMIHtcbiAgaWYgKCFpc0Fic29sdXRlKHBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5cIik7XG4gIH1cbiAgY29uc3QgWywgaG9zdG5hbWUsIHBhdGhuYW1lXSA9IHBhdGgubWF0Y2goXG4gICAgL14oPzpbL1xcXFxdezJ9KFteL1xcXFxdKykoPz1bL1xcXFxdKD86W14vXFxcXF18JCkpKT8oLiopLyxcbiAgKSE7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoXCJmaWxlOi8vL1wiKTtcbiAgdXJsLnBhdGhuYW1lID0gZW5jb2RlV2hpdGVzcGFjZShwYXRobmFtZS5yZXBsYWNlKC8lL2csIFwiJTI1XCIpKTtcbiAgaWYgKGhvc3RuYW1lICE9IG51bGwgJiYgaG9zdG5hbWUgIT0gXCJsb2NhbGhvc3RcIikge1xuICAgIHVybC5ob3N0bmFtZSA9IGhvc3RuYW1lO1xuICAgIGlmICghdXJsLmhvc3RuYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBob3N0bmFtZS5cIik7XG4gICAgfVxuICB9XG4gIHJldHVybiB1cmw7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeS9cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHR5cGUgeyBGb3JtYXRJbnB1dFBhdGhPYmplY3QgfSBmcm9tIFwiLi9faW50ZXJmYWNlLnRzXCI7XG5pbXBvcnQge1xuICBDSEFSX0JBQ0tXQVJEX1NMQVNILFxuICBDSEFSX0RPVCxcbiAgQ0hBUl9GT1JXQVJEX1NMQVNILFxuICBDSEFSX0xPV0VSQ0FTRV9BLFxuICBDSEFSX0xPV0VSQ0FTRV9aLFxuICBDSEFSX1VQUEVSQ0FTRV9BLFxuICBDSEFSX1VQUEVSQ0FTRV9aLFxufSBmcm9tIFwiLi9fY29uc3RhbnRzLnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRQYXRoKHBhdGg6IHN0cmluZyk6IHZvaWQge1xuICBpZiAodHlwZW9mIHBhdGggIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYFBhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShwYXRoKX1gLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUG9zaXhQYXRoU2VwYXJhdG9yKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQYXRoU2VwYXJhdG9yKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNQb3NpeFBhdGhTZXBhcmF0b3IoY29kZSkgfHwgY29kZSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2luZG93c0RldmljZVJvb3QoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgKGNvZGUgPj0gQ0hBUl9MT1dFUkNBU0VfQSAmJiBjb2RlIDw9IENIQVJfTE9XRVJDQVNFX1opIHx8XG4gICAgKGNvZGUgPj0gQ0hBUl9VUFBFUkNBU0VfQSAmJiBjb2RlIDw9IENIQVJfVVBQRVJDQVNFX1opXG4gICk7XG59XG5cbi8vIFJlc29sdmVzIC4gYW5kIC4uIGVsZW1lbnRzIGluIGEgcGF0aCB3aXRoIGRpcmVjdG9yeSBuYW1lc1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVN0cmluZyhcbiAgcGF0aDogc3RyaW5nLFxuICBhbGxvd0Fib3ZlUm9vdDogYm9vbGVhbixcbiAgc2VwYXJhdG9yOiBzdHJpbmcsXG4gIGlzUGF0aFNlcGFyYXRvcjogKGNvZGU6IG51bWJlcikgPT4gYm9vbGVhbixcbik6IHN0cmluZyB7XG4gIGxldCByZXMgPSBcIlwiO1xuICBsZXQgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICBsZXQgbGFzdFNsYXNoID0gLTE7XG4gIGxldCBkb3RzID0gMDtcbiAgbGV0IGNvZGU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHBhdGgubGVuZ3RoOyBpIDw9IGxlbjsgKytpKSB7XG4gICAgaWYgKGkgPCBsZW4pIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgZWxzZSBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUhKSkgYnJlYWs7XG4gICAgZWxzZSBjb2RlID0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xuXG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlISkpIHtcbiAgICAgIGlmIChsYXN0U2xhc2ggPT09IGkgLSAxIHx8IGRvdHMgPT09IDEpIHtcbiAgICAgICAgLy8gTk9PUFxuICAgICAgfSBlbHNlIGlmIChsYXN0U2xhc2ggIT09IGkgLSAxICYmIGRvdHMgPT09IDIpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlcy5sZW5ndGggPCAyIHx8XG4gICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggIT09IDIgfHxcbiAgICAgICAgICByZXMuY2hhckNvZGVBdChyZXMubGVuZ3RoIC0gMSkgIT09IENIQVJfRE9UIHx8XG4gICAgICAgICAgcmVzLmNoYXJDb2RlQXQocmVzLmxlbmd0aCAtIDIpICE9PSBDSEFSX0RPVFxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RTbGFzaEluZGV4ID0gcmVzLmxhc3RJbmRleE9mKHNlcGFyYXRvcik7XG4gICAgICAgICAgICBpZiAobGFzdFNsYXNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgIHJlcyA9IFwiXCI7XG4gICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlcyA9IHJlcy5zbGljZSgwLCBsYXN0U2xhc2hJbmRleCk7XG4gICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gcmVzLmxlbmd0aCAtIDEgLSByZXMubGFzdEluZGV4T2Yoc2VwYXJhdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3RTbGFzaCA9IGk7XG4gICAgICAgICAgICBkb3RzID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmxlbmd0aCA9PT0gMiB8fCByZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXMgPSBcIlwiO1xuICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICAgICAgICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgICAgICAgIGlmIChyZXMubGVuZ3RoID4gMCkgcmVzICs9IGAke3NlcGFyYXRvcn0uLmA7XG4gICAgICAgICAgZWxzZSByZXMgPSBcIi4uXCI7XG4gICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAyO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHJlcyArPSBzZXBhcmF0b3IgKyBwYXRoLnNsaWNlKGxhc3RTbGFzaCArIDEsIGkpO1xuICAgICAgICBlbHNlIHJlcyA9IHBhdGguc2xpY2UobGFzdFNsYXNoICsgMSwgaSk7XG4gICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gaSAtIGxhc3RTbGFzaCAtIDE7XG4gICAgICB9XG4gICAgICBsYXN0U2xhc2ggPSBpO1xuICAgICAgZG90cyA9IDA7XG4gICAgfSBlbHNlIGlmIChjb2RlID09PSBDSEFSX0RPVCAmJiBkb3RzICE9PSAtMSkge1xuICAgICAgKytkb3RzO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb3RzID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfZm9ybWF0KFxuICBzZXA6IHN0cmluZyxcbiAgcGF0aE9iamVjdDogRm9ybWF0SW5wdXRQYXRoT2JqZWN0LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgZGlyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBwYXRoT2JqZWN0LmRpciB8fCBwYXRoT2JqZWN0LnJvb3Q7XG4gIGNvbnN0IGJhc2U6IHN0cmluZyA9IHBhdGhPYmplY3QuYmFzZSB8fFxuICAgIChwYXRoT2JqZWN0Lm5hbWUgfHwgXCJcIikgKyAocGF0aE9iamVjdC5leHQgfHwgXCJcIik7XG4gIGlmICghZGlyKSByZXR1cm4gYmFzZTtcbiAgaWYgKGRpciA9PT0gcGF0aE9iamVjdC5yb290KSByZXR1cm4gZGlyICsgYmFzZTtcbiAgcmV0dXJuIGRpciArIHNlcCArIGJhc2U7XG59XG5cbmNvbnN0IFdISVRFU1BBQ0VfRU5DT0RJTkdTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBcIlxcdTAwMDlcIjogXCIlMDlcIixcbiAgXCJcXHUwMDBBXCI6IFwiJTBBXCIsXG4gIFwiXFx1MDAwQlwiOiBcIiUwQlwiLFxuICBcIlxcdTAwMENcIjogXCIlMENcIixcbiAgXCJcXHUwMDBEXCI6IFwiJTBEXCIsXG4gIFwiXFx1MDAyMFwiOiBcIiUyMFwiLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVdoaXRlc3BhY2Uoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2VBbGwoL1tcXHNdL2csIChjKSA9PiB7XG4gICAgcmV0dXJuIFdISVRFU1BBQ0VfRU5DT0RJTkdTW2NdID8/IGM7XG4gIH0pO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmV4cG9ydCBjbGFzcyBEZW5vU3RkSW50ZXJuYWxFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gXCJEZW5vU3RkSW50ZXJuYWxFcnJvclwiO1xuICB9XG59XG5cbi8qKiBNYWtlIGFuIGFzc2VydGlvbiwgaWYgbm90IGB0cnVlYCwgdGhlbiB0aHJvdy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoZXhwcjogdW5rbm93biwgbXNnID0gXCJcIik6IGFzc2VydHMgZXhwciB7XG4gIGlmICghZXhwcikge1xuICAgIHRocm93IG5ldyBEZW5vU3RkSW50ZXJuYWxFcnJvcihtc2cpO1xuICB9XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeS9cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHR5cGUgeyBGb3JtYXRJbnB1dFBhdGhPYmplY3QsIFBhcnNlZFBhdGggfSBmcm9tIFwiLi9faW50ZXJmYWNlLnRzXCI7XG5pbXBvcnQgeyBDSEFSX0RPVCwgQ0hBUl9GT1JXQVJEX1NMQVNIIH0gZnJvbSBcIi4vX2NvbnN0YW50cy50c1wiO1xuXG5pbXBvcnQge1xuICBfZm9ybWF0LFxuICBhc3NlcnRQYXRoLFxuICBlbmNvZGVXaGl0ZXNwYWNlLFxuICBpc1Bvc2l4UGF0aFNlcGFyYXRvcixcbiAgbm9ybWFsaXplU3RyaW5nLFxufSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG5leHBvcnQgY29uc3Qgc2VwID0gXCIvXCI7XG5leHBvcnQgY29uc3QgZGVsaW1pdGVyID0gXCI6XCI7XG5cbi8vIHBhdGgucmVzb2x2ZShbZnJvbSAuLi5dLCB0bylcbi8qKlxuICogUmVzb2x2ZXMgYHBhdGhTZWdtZW50c2AgaW50byBhbiBhYnNvbHV0ZSBwYXRoLlxuICogQHBhcmFtIHBhdGhTZWdtZW50cyBhbiBhcnJheSBvZiBwYXRoIHNlZ21lbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKC4uLnBhdGhTZWdtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICBsZXQgcmVzb2x2ZWRQYXRoID0gXCJcIjtcbiAgbGV0IHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcblxuICBmb3IgKGxldCBpID0gcGF0aFNlZ21lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGktLSkge1xuICAgIGxldCBwYXRoOiBzdHJpbmc7XG5cbiAgICBpZiAoaSA+PSAwKSBwYXRoID0gcGF0aFNlZ21lbnRzW2ldO1xuICAgIGVsc2Uge1xuICAgICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICAgIGNvbnN0IHsgRGVubyB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gICAgICBpZiAodHlwZW9mIERlbm8/LmN3ZCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJSZXNvbHZlZCBhIHJlbGF0aXZlIHBhdGggd2l0aG91dCBhIENXRC5cIik7XG4gICAgICB9XG4gICAgICBwYXRoID0gRGVuby5jd2QoKTtcbiAgICB9XG5cbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gICAgLy8gU2tpcCBlbXB0eSBlbnRyaWVzXG4gICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXNvbHZlZFBhdGggPSBgJHtwYXRofS8ke3Jlc29sdmVkUGF0aH1gO1xuICAgIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfRk9SV0FSRF9TTEFTSDtcbiAgfVxuXG4gIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHBhdGggc2hvdWxkIGJlIHJlc29sdmVkIHRvIGEgZnVsbCBhYnNvbHV0ZSBwYXRoLCBidXRcbiAgLy8gaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIGJlIHNhZmUgKG1pZ2h0IGhhcHBlbiB3aGVuIHByb2Nlc3MuY3dkKCkgZmFpbHMpXG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHJlc29sdmVkUGF0aCA9IG5vcm1hbGl6ZVN0cmluZyhcbiAgICByZXNvbHZlZFBhdGgsXG4gICAgIXJlc29sdmVkQWJzb2x1dGUsXG4gICAgXCIvXCIsXG4gICAgaXNQb3NpeFBhdGhTZXBhcmF0b3IsXG4gICk7XG5cbiAgaWYgKHJlc29sdmVkQWJzb2x1dGUpIHtcbiAgICBpZiAocmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDApIHJldHVybiBgLyR7cmVzb2x2ZWRQYXRofWA7XG4gICAgZWxzZSByZXR1cm4gXCIvXCI7XG4gIH0gZWxzZSBpZiAocmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDApIHJldHVybiByZXNvbHZlZFBhdGg7XG4gIGVsc2UgcmV0dXJuIFwiLlwiO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSB0aGUgYHBhdGhgLCByZXNvbHZpbmcgYCcuLidgIGFuZCBgJy4nYCBzZWdtZW50cy5cbiAqIEBwYXJhbSBwYXRoIHRvIGJlIG5vcm1hbGl6ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiLlwiO1xuXG4gIGNvbnN0IGlzQWJzb2x1dGUgPSBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfRk9SV0FSRF9TTEFTSDtcbiAgY29uc3QgdHJhaWxpbmdTZXBhcmF0b3IgPVxuICAgIHBhdGguY2hhckNvZGVBdChwYXRoLmxlbmd0aCAtIDEpID09PSBDSEFSX0ZPUldBUkRfU0xBU0g7XG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHBhdGggPSBub3JtYWxpemVTdHJpbmcocGF0aCwgIWlzQWJzb2x1dGUsIFwiL1wiLCBpc1Bvc2l4UGF0aFNlcGFyYXRvcik7XG5cbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwICYmICFpc0Fic29sdXRlKSBwYXRoID0gXCIuXCI7XG4gIGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgdHJhaWxpbmdTZXBhcmF0b3IpIHBhdGggKz0gXCIvXCI7XG5cbiAgaWYgKGlzQWJzb2x1dGUpIHJldHVybiBgLyR7cGF0aH1gO1xuICByZXR1cm4gcGF0aDtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyB3aGV0aGVyIHByb3ZpZGVkIHBhdGggaXMgYWJzb2x1dGVcbiAqIEBwYXJhbSBwYXRoIHRvIGJlIHZlcmlmaWVkIGFzIGFic29sdXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuICByZXR1cm4gcGF0aC5sZW5ndGggPiAwICYmIHBhdGguY2hhckNvZGVBdCgwKSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xufVxuXG4vKipcbiAqIEpvaW4gYWxsIGdpdmVuIGEgc2VxdWVuY2Ugb2YgYHBhdGhzYCx0aGVuIG5vcm1hbGl6ZXMgdGhlIHJlc3VsdGluZyBwYXRoLlxuICogQHBhcmFtIHBhdGhzIHRvIGJlIGpvaW5lZCBhbmQgbm9ybWFsaXplZFxuICovXG5leHBvcnQgZnVuY3Rpb24gam9pbiguLi5wYXRoczogc3RyaW5nW10pOiBzdHJpbmcge1xuICBpZiAocGF0aHMubGVuZ3RoID09PSAwKSByZXR1cm4gXCIuXCI7XG4gIGxldCBqb2luZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHBhdGhzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgY29uc3QgcGF0aCA9IHBhdGhzW2ldO1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG4gICAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFqb2luZWQpIGpvaW5lZCA9IHBhdGg7XG4gICAgICBlbHNlIGpvaW5lZCArPSBgLyR7cGF0aH1gO1xuICAgIH1cbiAgfVxuICBpZiAoIWpvaW5lZCkgcmV0dXJuIFwiLlwiO1xuICByZXR1cm4gbm9ybWFsaXplKGpvaW5lZCk7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gYGZyb21gIHRvIGB0b2AgYmFzZWQgb24gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIEBwYXJhbSBmcm9tIHBhdGggaW4gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeVxuICogQHBhcmFtIHRvIHBhdGggaW4gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmUoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0UGF0aChmcm9tKTtcbiAgYXNzZXJ0UGF0aCh0byk7XG5cbiAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gXCJcIjtcblxuICBmcm9tID0gcmVzb2x2ZShmcm9tKTtcbiAgdG8gPSByZXNvbHZlKHRvKTtcblxuICBpZiAoZnJvbSA9PT0gdG8pIHJldHVybiBcIlwiO1xuXG4gIC8vIFRyaW0gYW55IGxlYWRpbmcgYmFja3NsYXNoZXNcbiAgbGV0IGZyb21TdGFydCA9IDE7XG4gIGNvbnN0IGZyb21FbmQgPSBmcm9tLmxlbmd0aDtcbiAgZm9yICg7IGZyb21TdGFydCA8IGZyb21FbmQ7ICsrZnJvbVN0YXJ0KSB7XG4gICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQpICE9PSBDSEFSX0ZPUldBUkRfU0xBU0gpIGJyZWFrO1xuICB9XG4gIGNvbnN0IGZyb21MZW4gPSBmcm9tRW5kIC0gZnJvbVN0YXJ0O1xuXG4gIC8vIFRyaW0gYW55IGxlYWRpbmcgYmFja3NsYXNoZXNcbiAgbGV0IHRvU3RhcnQgPSAxO1xuICBjb25zdCB0b0VuZCA9IHRvLmxlbmd0aDtcbiAgZm9yICg7IHRvU3RhcnQgPCB0b0VuZDsgKyt0b1N0YXJ0KSB7XG4gICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCkgIT09IENIQVJfRk9SV0FSRF9TTEFTSCkgYnJlYWs7XG4gIH1cbiAgY29uc3QgdG9MZW4gPSB0b0VuZCAtIHRvU3RhcnQ7XG5cbiAgLy8gQ29tcGFyZSBwYXRocyB0byBmaW5kIHRoZSBsb25nZXN0IGNvbW1vbiBwYXRoIGZyb20gcm9vdFxuICBjb25zdCBsZW5ndGggPSBmcm9tTGVuIDwgdG9MZW4gPyBmcm9tTGVuIDogdG9MZW47XG4gIGxldCBsYXN0Q29tbW9uU2VwID0gLTE7XG4gIGxldCBpID0gMDtcbiAgZm9yICg7IGkgPD0gbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoaSA9PT0gbGVuZ3RoKSB7XG4gICAgICBpZiAodG9MZW4gPiBsZW5ndGgpIHtcbiAgICAgICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCArIGkpID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYHRvYC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nL2Zvby9iYXInOyB0bz0nL2Zvby9iYXIvYmF6J1xuICAgICAgICAgIHJldHVybiB0by5zbGljZSh0b1N0YXJ0ICsgaSArIDEpO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIHJvb3RcbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nLyc7IHRvPScvZm9vJ1xuICAgICAgICAgIHJldHVybiB0by5zbGljZSh0b1N0YXJ0ICsgaSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZnJvbUxlbiA+IGxlbmd0aCkge1xuICAgICAgICBpZiAoZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCArIGkpID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgdG9gIGlzIHRoZSBleGFjdCBiYXNlIHBhdGggZm9yIGBmcm9tYC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nL2Zvby9iYXIvYmF6JzsgdG89Jy9mb28vYmFyJ1xuICAgICAgICAgIGxhc3RDb21tb25TZXAgPSBpO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgdG9gIGlzIHRoZSByb290LlxuICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvZm9vJzsgdG89Jy8nXG4gICAgICAgICAgbGFzdENvbW1vblNlcCA9IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjb25zdCBmcm9tQ29kZSA9IGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQgKyBpKTtcbiAgICBjb25zdCB0b0NvZGUgPSB0by5jaGFyQ29kZUF0KHRvU3RhcnQgKyBpKTtcbiAgICBpZiAoZnJvbUNvZGUgIT09IHRvQ29kZSkgYnJlYWs7XG4gICAgZWxzZSBpZiAoZnJvbUNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSCkgbGFzdENvbW1vblNlcCA9IGk7XG4gIH1cblxuICBsZXQgb3V0ID0gXCJcIjtcbiAgLy8gR2VuZXJhdGUgdGhlIHJlbGF0aXZlIHBhdGggYmFzZWQgb24gdGhlIHBhdGggZGlmZmVyZW5jZSBiZXR3ZWVuIGB0b2BcbiAgLy8gYW5kIGBmcm9tYFxuICBmb3IgKGkgPSBmcm9tU3RhcnQgKyBsYXN0Q29tbW9uU2VwICsgMTsgaSA8PSBmcm9tRW5kOyArK2kpIHtcbiAgICBpZiAoaSA9PT0gZnJvbUVuZCB8fCBmcm9tLmNoYXJDb2RlQXQoaSkgPT09IENIQVJfRk9SV0FSRF9TTEFTSCkge1xuICAgICAgaWYgKG91dC5sZW5ndGggPT09IDApIG91dCArPSBcIi4uXCI7XG4gICAgICBlbHNlIG91dCArPSBcIi8uLlwiO1xuICAgIH1cbiAgfVxuXG4gIC8vIExhc3RseSwgYXBwZW5kIHRoZSByZXN0IG9mIHRoZSBkZXN0aW5hdGlvbiAoYHRvYCkgcGF0aCB0aGF0IGNvbWVzIGFmdGVyXG4gIC8vIHRoZSBjb21tb24gcGF0aCBwYXJ0c1xuICBpZiAob3V0Lmxlbmd0aCA+IDApIHJldHVybiBvdXQgKyB0by5zbGljZSh0b1N0YXJ0ICsgbGFzdENvbW1vblNlcCk7XG4gIGVsc2Uge1xuICAgIHRvU3RhcnQgKz0gbGFzdENvbW1vblNlcDtcbiAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSArK3RvU3RhcnQ7XG4gICAgcmV0dXJuIHRvLnNsaWNlKHRvU3RhcnQpO1xuICB9XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgcGF0aCB0byBhIG5hbWVzcGFjZSBwYXRoXG4gKiBAcGFyYW0gcGF0aCB0byByZXNvbHZlIHRvIG5hbWVzcGFjZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9OYW1lc3BhY2VkUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBOb24tb3Agb24gcG9zaXggc3lzdGVtc1xuICByZXR1cm4gcGF0aDtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGRpcmVjdG9yeSBuYW1lIG9mIGEgYHBhdGhgLlxuICogQHBhcmFtIHBhdGggdG8gZGV0ZXJtaW5lIG5hbWUgZm9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXJuYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiLlwiO1xuICBjb25zdCBoYXNSb290ID0gcGF0aC5jaGFyQ29kZUF0KDApID09PSBDSEFSX0ZPUldBUkRfU0xBU0g7XG4gIGxldCBlbmQgPSAtMTtcbiAgbGV0IG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIGZvciAobGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMTsgLS1pKSB7XG4gICAgaWYgKHBhdGguY2hhckNvZGVBdChpKSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSB7XG4gICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICBlbmQgPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3JcbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChlbmQgPT09IC0xKSByZXR1cm4gaGFzUm9vdCA/IFwiL1wiIDogXCIuXCI7XG4gIGlmIChoYXNSb290ICYmIGVuZCA9PT0gMSkgcmV0dXJuIFwiLy9cIjtcbiAgcmV0dXJuIHBhdGguc2xpY2UoMCwgZW5kKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGxhc3QgcG9ydGlvbiBvZiBhIGBwYXRoYC4gVHJhaWxpbmcgZGlyZWN0b3J5IHNlcGFyYXRvcnMgYXJlIGlnbm9yZWQuXG4gKiBAcGFyYW0gcGF0aCB0byBwcm9jZXNzXG4gKiBAcGFyYW0gZXh0IG9mIHBhdGggZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYXNlbmFtZShwYXRoOiBzdHJpbmcsIGV4dCA9IFwiXCIpOiBzdHJpbmcge1xuICBpZiAoZXh0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGV4dCAhPT0gXCJzdHJpbmdcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZXh0XCIgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpO1xuICB9XG4gIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgbGV0IHN0YXJ0ID0gMDtcbiAgbGV0IGVuZCA9IC0xO1xuICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgbGV0IGk6IG51bWJlcjtcblxuICBpZiAoZXh0ICE9PSB1bmRlZmluZWQgJiYgZXh0Lmxlbmd0aCA+IDAgJiYgZXh0Lmxlbmd0aCA8PSBwYXRoLmxlbmd0aCkge1xuICAgIGlmIChleHQubGVuZ3RoID09PSBwYXRoLmxlbmd0aCAmJiBleHQgPT09IHBhdGgpIHJldHVybiBcIlwiO1xuICAgIGxldCBleHRJZHggPSBleHQubGVuZ3RoIC0gMTtcbiAgICBsZXQgZmlyc3ROb25TbGFzaEVuZCA9IC0xO1xuICAgIGZvciAoaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgICBpZiAoY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSB7XG4gICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgIHN0YXJ0ID0gaSArIDE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmaXJzdE5vblNsYXNoRW5kID09PSAtMSkge1xuICAgICAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCByZW1lbWJlciB0aGlzIGluZGV4IGluIGNhc2VcbiAgICAgICAgICAvLyB3ZSBuZWVkIGl0IGlmIHRoZSBleHRlbnNpb24gZW5kcyB1cCBub3QgbWF0Y2hpbmdcbiAgICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgICBmaXJzdE5vblNsYXNoRW5kID0gaSArIDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4dElkeCA+PSAwKSB7XG4gICAgICAgICAgLy8gVHJ5IHRvIG1hdGNoIHRoZSBleHBsaWNpdCBleHRlbnNpb25cbiAgICAgICAgICBpZiAoY29kZSA9PT0gZXh0LmNoYXJDb2RlQXQoZXh0SWR4KSkge1xuICAgICAgICAgICAgaWYgKC0tZXh0SWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIHRoZSBleHRlbnNpb24sIHNvIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91ciBwYXRoXG4gICAgICAgICAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBFeHRlbnNpb24gZG9lcyBub3QgbWF0Y2gsIHNvIG91ciByZXN1bHQgaXMgdGhlIGVudGlyZSBwYXRoXG4gICAgICAgICAgICAvLyBjb21wb25lbnRcbiAgICAgICAgICAgIGV4dElkeCA9IC0xO1xuICAgICAgICAgICAgZW5kID0gZmlyc3ROb25TbGFzaEVuZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPT09IGVuZCkgZW5kID0gZmlyc3ROb25TbGFzaEVuZDtcbiAgICBlbHNlIGlmIChlbmQgPT09IC0xKSBlbmQgPSBwYXRoLmxlbmd0aDtcbiAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KGkpID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgICAgLy8gcGF0aCBjb21wb25lbnRcbiAgICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICAgIGVuZCA9IGkgKyAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbmQgPT09IC0xKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBgcGF0aGAgd2l0aCBsZWFkaW5nIHBlcmlvZC5cbiAqIEBwYXJhbSBwYXRoIHdpdGggZXh0ZW5zaW9uXG4gKiBAcmV0dXJucyBleHRlbnNpb24gKGV4LiBmb3IgYGZpbGUudHNgIHJldHVybnMgYC50c2ApXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRuYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG4gIGxldCBzdGFydERvdCA9IC0xO1xuICBsZXQgc3RhcnRQYXJ0ID0gMDtcbiAgbGV0IGVuZCA9IC0xO1xuICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgLy8gVHJhY2sgdGhlIHN0YXRlIG9mIGNoYXJhY3RlcnMgKGlmIGFueSkgd2Ugc2VlIGJlZm9yZSBvdXIgZmlyc3QgZG90IGFuZFxuICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICBsZXQgcHJlRG90U3RhdGUgPSAwO1xuICBmb3IgKGxldCBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSCkge1xuICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAvLyBleHRlbnNpb25cbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgZW5kID0gaSArIDE7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSBDSEFSX0RPVCkge1xuICAgICAgLy8gSWYgdGhpcyBpcyBvdXIgZmlyc3QgZG90LCBtYXJrIGl0IGFzIHRoZSBzdGFydCBvZiBvdXIgZXh0ZW5zaW9uXG4gICAgICBpZiAoc3RhcnREb3QgPT09IC0xKSBzdGFydERvdCA9IGk7XG4gICAgICBlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSkgcHJlRG90U3RhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoc3RhcnREb3QgIT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgYSBub24tZG90IGFuZCBub24tcGF0aCBzZXBhcmF0b3IgYmVmb3JlIG91ciBkb3QsIHNvIHdlIHNob3VsZFxuICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgIHByZURvdFN0YXRlID0gLTE7XG4gICAgfVxuICB9XG5cbiAgaWYgKFxuICAgIHN0YXJ0RG90ID09PSAtMSB8fFxuICAgIGVuZCA9PT0gLTEgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgIChwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSlcbiAgKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbiAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnREb3QsIGVuZCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBwYXRoIGZyb20gYEZvcm1hdElucHV0UGF0aE9iamVjdGAgb2JqZWN0LlxuICogQHBhcmFtIHBhdGhPYmplY3Qgd2l0aCBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXQocGF0aE9iamVjdDogRm9ybWF0SW5wdXRQYXRoT2JqZWN0KTogc3RyaW5nIHtcbiAgaWYgKHBhdGhPYmplY3QgPT09IG51bGwgfHwgdHlwZW9mIHBhdGhPYmplY3QgIT09IFwib2JqZWN0XCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYFRoZSBcInBhdGhPYmplY3RcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIHBhdGhPYmplY3R9YCxcbiAgICApO1xuICB9XG4gIHJldHVybiBfZm9ybWF0KFwiL1wiLCBwYXRoT2JqZWN0KTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gYSBgUGFyc2VkUGF0aGAgb2JqZWN0IG9mIHRoZSBgcGF0aGAuXG4gKiBAcGFyYW0gcGF0aCB0byBwcm9jZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShwYXRoOiBzdHJpbmcpOiBQYXJzZWRQYXRoIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICBjb25zdCByZXQ6IFBhcnNlZFBhdGggPSB7IHJvb3Q6IFwiXCIsIGRpcjogXCJcIiwgYmFzZTogXCJcIiwgZXh0OiBcIlwiLCBuYW1lOiBcIlwiIH07XG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHJldDtcbiAgY29uc3QgaXNBYnNvbHV0ZSA9IHBhdGguY2hhckNvZGVBdCgwKSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xuICBsZXQgc3RhcnQ6IG51bWJlcjtcbiAgaWYgKGlzQWJzb2x1dGUpIHtcbiAgICByZXQucm9vdCA9IFwiL1wiO1xuICAgIHN0YXJ0ID0gMTtcbiAgfSBlbHNlIHtcbiAgICBzdGFydCA9IDA7XG4gIH1cbiAgbGV0IHN0YXJ0RG90ID0gLTE7XG4gIGxldCBzdGFydFBhcnQgPSAwO1xuICBsZXQgZW5kID0gLTE7XG4gIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICBsZXQgaSA9IHBhdGgubGVuZ3RoIC0gMTtcblxuICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gIC8vIGFmdGVyIGFueSBwYXRoIHNlcGFyYXRvciB3ZSBmaW5kXG4gIGxldCBwcmVEb3RTdGF0ZSA9IDA7XG5cbiAgLy8gR2V0IG5vbi1kaXIgaW5mb1xuICBmb3IgKDsgaSA+PSBzdGFydDsgLS1pKSB7XG4gICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICBpZiAoY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSB7XG4gICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICBzdGFydFBhcnQgPSBpICsgMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICBlbmQgPSBpICsgMTtcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IENIQVJfRE9UKSB7XG4gICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgIGlmIChzdGFydERvdCA9PT0gLTEpIHN0YXJ0RG90ID0gaTtcbiAgICAgIGVsc2UgaWYgKHByZURvdFN0YXRlICE9PSAxKSBwcmVEb3RTdGF0ZSA9IDE7XG4gICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgYW5kIG5vbi1wYXRoIHNlcGFyYXRvciBiZWZvcmUgb3VyIGRvdCwgc28gd2Ugc2hvdWxkXG4gICAgICAvLyBoYXZlIGEgZ29vZCBjaGFuY2UgYXQgaGF2aW5nIGEgbm9uLWVtcHR5IGV4dGVuc2lvblxuICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICB9XG4gIH1cblxuICBpZiAoXG4gICAgc3RhcnREb3QgPT09IC0xIHx8XG4gICAgZW5kID09PSAtMSB8fFxuICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgY2hhcmFjdGVyIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgZG90XG4gICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAvLyBUaGUgKHJpZ2h0LW1vc3QpIHRyaW1tZWQgcGF0aCBjb21wb25lbnQgaXMgZXhhY3RseSAnLi4nXG4gICAgKHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKVxuICApIHtcbiAgICBpZiAoZW5kICE9PSAtMSkge1xuICAgICAgaWYgKHN0YXJ0UGFydCA9PT0gMCAmJiBpc0Fic29sdXRlKSB7XG4gICAgICAgIHJldC5iYXNlID0gcmV0Lm5hbWUgPSBwYXRoLnNsaWNlKDEsIGVuZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXQuYmFzZSA9IHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChzdGFydFBhcnQgPT09IDAgJiYgaXNBYnNvbHV0ZSkge1xuICAgICAgcmV0Lm5hbWUgPSBwYXRoLnNsaWNlKDEsIHN0YXJ0RG90KTtcbiAgICAgIHJldC5iYXNlID0gcGF0aC5zbGljZSgxLCBlbmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXQubmFtZSA9IHBhdGguc2xpY2Uoc3RhcnRQYXJ0LCBzdGFydERvdCk7XG4gICAgICByZXQuYmFzZSA9IHBhdGguc2xpY2Uoc3RhcnRQYXJ0LCBlbmQpO1xuICAgIH1cbiAgICByZXQuZXh0ID0gcGF0aC5zbGljZShzdGFydERvdCwgZW5kKTtcbiAgfVxuXG4gIGlmIChzdGFydFBhcnQgPiAwKSByZXQuZGlyID0gcGF0aC5zbGljZSgwLCBzdGFydFBhcnQgLSAxKTtcbiAgZWxzZSBpZiAoaXNBYnNvbHV0ZSkgcmV0LmRpciA9IFwiL1wiO1xuXG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBmaWxlIFVSTCB0byBhIHBhdGggc3RyaW5nLlxuICpcbiAqIGBgYHRzXG4gKiAgICAgIGltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcIi4vcG9zaXgudHNcIjtcbiAqICAgICAgZnJvbUZpbGVVcmwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpOyAvLyBcIi9ob21lL2Zvb1wiXG4gKiBgYGBcbiAqIEBwYXJhbSB1cmwgb2YgYSBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUZpbGVVcmwodXJsOiBzdHJpbmcgfCBVUkwpOiBzdHJpbmcge1xuICB1cmwgPSB1cmwgaW5zdGFuY2VvZiBVUkwgPyB1cmwgOiBuZXcgVVJMKHVybCk7XG4gIGlmICh1cmwucHJvdG9jb2wgIT0gXCJmaWxlOlwiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYSBmaWxlIFVSTC5cIik7XG4gIH1cbiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChcbiAgICB1cmwucGF0aG5hbWUucmVwbGFjZSgvJSg/IVswLTlBLUZhLWZdezJ9KS9nLCBcIiUyNVwiKSxcbiAgKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHBhdGggc3RyaW5nIHRvIGEgZmlsZSBVUkwuXG4gKlxuICogYGBgdHNcbiAqICAgICAgaW1wb3J0IHsgdG9GaWxlVXJsIH0gZnJvbSBcIi4vcG9zaXgudHNcIjtcbiAqICAgICAgdG9GaWxlVXJsKFwiL2hvbWUvZm9vXCIpOyAvLyBuZXcgVVJMKFwiZmlsZTovLy9ob21lL2Zvb1wiKVxuICogYGBgXG4gKiBAcGFyYW0gcGF0aCB0byBjb252ZXJ0IHRvIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0ZpbGVVcmwocGF0aDogc3RyaW5nKTogVVJMIHtcbiAgaWYgKCFpc0Fic29sdXRlKHBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5cIik7XG4gIH1cbiAgY29uc3QgdXJsID0gbmV3IFVSTChcImZpbGU6Ly8vXCIpO1xuICB1cmwucGF0aG5hbWUgPSBlbmNvZGVXaGl0ZXNwYWNlKFxuICAgIHBhdGgucmVwbGFjZSgvJS9nLCBcIiUyNVwiKS5yZXBsYWNlKC9cXFxcL2csIFwiJTVDXCIpLFxuICApO1xuICByZXR1cm4gdXJsO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGlzV2luZG93cywgb3NUeXBlIH0gZnJvbSBcIi4uL191dGlsL29zLnRzXCI7XG5pbXBvcnQgeyBTRVAsIFNFUF9QQVRURVJOIH0gZnJvbSBcIi4vc2VwYXJhdG9yLnRzXCI7XG5pbXBvcnQgKiBhcyBfd2luMzIgZnJvbSBcIi4vd2luMzIudHNcIjtcbmltcG9ydCAqIGFzIF9wb3NpeCBmcm9tIFwiLi9wb3NpeC50c1wiO1xuaW1wb3J0IHR5cGUgeyBPU1R5cGUgfSBmcm9tIFwiLi4vX3V0aWwvb3MudHNcIjtcblxuY29uc3QgcGF0aCA9IGlzV2luZG93cyA/IF93aW4zMiA6IF9wb3NpeDtcbmNvbnN0IHsgam9pbiwgbm9ybWFsaXplIH0gPSBwYXRoO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JPcHRpb25zIHtcbiAgLyoqIEV4dGVuZGVkIGdsb2Igc3ludGF4LlxuICAgKiBTZWUgaHR0cHM6Ly93d3cubGludXhqb3VybmFsLmNvbS9jb250ZW50L2Jhc2gtZXh0ZW5kZWQtZ2xvYmJpbmcuIERlZmF1bHRzXG4gICAqIHRvIHRydWUuICovXG4gIGV4dGVuZGVkPzogYm9vbGVhbjtcbiAgLyoqIEdsb2JzdGFyIHN5bnRheC5cbiAgICogU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9nbG9ic3Rhci1uZXctYmFzaC1nbG9iYmluZy1vcHRpb24uXG4gICAqIElmIGZhbHNlLCBgKipgIGlzIHRyZWF0ZWQgbGlrZSBgKmAuIERlZmF1bHRzIHRvIHRydWUuICovXG4gIGdsb2JzdGFyPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgZ2xvYnN0YXIgc2hvdWxkIGJlIGNhc2UgaW5zZW5zaXRpdmUuICovXG4gIGNhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW47XG4gIC8qKiBPcGVyYXRpbmcgc3lzdGVtLiBEZWZhdWx0cyB0byB0aGUgbmF0aXZlIE9TLiAqL1xuICBvcz86IE9TVHlwZTtcbn1cblxuZXhwb3J0IHR5cGUgR2xvYlRvUmVnRXhwT3B0aW9ucyA9IEdsb2JPcHRpb25zO1xuXG5jb25zdCByZWdFeHBFc2NhcGVDaGFycyA9IFtcbiAgXCIhXCIsXG4gIFwiJFwiLFxuICBcIihcIixcbiAgXCIpXCIsXG4gIFwiKlwiLFxuICBcIitcIixcbiAgXCIuXCIsXG4gIFwiPVwiLFxuICBcIj9cIixcbiAgXCJbXCIsXG4gIFwiXFxcXFwiLFxuICBcIl5cIixcbiAgXCJ7XCIsXG4gIFwifFwiLFxuXTtcbmNvbnN0IHJhbmdlRXNjYXBlQ2hhcnMgPSBbXCItXCIsIFwiXFxcXFwiLCBcIl1cIl07XG5cbi8qKiBDb252ZXJ0IGEgZ2xvYiBzdHJpbmcgdG8gYSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKlxuICogVHJpZXMgdG8gbWF0Y2ggYmFzaCBnbG9iIGV4cGFuc2lvbiBhcyBjbG9zZWx5IGFzIHBvc3NpYmxlLlxuICpcbiAqIEJhc2ljIGdsb2Igc3ludGF4OlxuICogLSBgKmAgLSBNYXRjaGVzIGV2ZXJ5dGhpbmcgd2l0aG91dCBsZWF2aW5nIHRoZSBwYXRoIHNlZ21lbnQuXG4gKiAtIGA/YCAtIE1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIuXG4gKiAtIGB7Zm9vLGJhcn1gIC0gTWF0Y2hlcyBgZm9vYCBvciBgYmFyYC5cbiAqIC0gYFthYmNkXWAgLSBNYXRjaGVzIGBhYCwgYGJgLCBgY2Agb3IgYGRgLlxuICogLSBgW2EtZF1gIC0gTWF0Y2hlcyBgYWAsIGBiYCwgYGNgIG9yIGBkYC5cbiAqIC0gYFshYWJjZF1gIC0gTWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciBiZXNpZGVzIGBhYCwgYGJgLCBgY2Agb3IgYGRgLlxuICogLSBgW1s6PGNsYXNzPjpdXWAgLSBNYXRjaGVzIGFueSBjaGFyYWN0ZXIgYmVsb25naW5nIHRvIGA8Y2xhc3M+YC5cbiAqICAgICAtIGBbWzphbG51bTpdXWAgLSBNYXRjaGVzIGFueSBkaWdpdCBvciBsZXR0ZXIuXG4gKiAgICAgLSBgW1s6ZGlnaXQ6XWFiY11gIC0gTWF0Y2hlcyBhbnkgZGlnaXQsIGBhYCwgYGJgIG9yIGBjYC5cbiAqICAgICAtIFNlZSBodHRwczovL2ZhY2VsZXNzdXNlci5naXRodWIuaW8vd2NtYXRjaC9nbG9iLyNwb3NpeC1jaGFyYWN0ZXItY2xhc3Nlc1xuICogICAgICAgZm9yIGEgY29tcGxldGUgbGlzdCBvZiBzdXBwb3J0ZWQgY2hhcmFjdGVyIGNsYXNzZXMuXG4gKiAtIGBcXGAgLSBFc2NhcGVzIHRoZSBuZXh0IGNoYXJhY3RlciBmb3IgYW4gYG9zYCBvdGhlciB0aGFuIGBcIndpbmRvd3NcImAuXG4gKiAtIFxcYCAtIEVzY2FwZXMgdGhlIG5leHQgY2hhcmFjdGVyIGZvciBgb3NgIHNldCB0byBgXCJ3aW5kb3dzXCJgLlxuICogLSBgL2AgLSBQYXRoIHNlcGFyYXRvci5cbiAqIC0gYFxcYCAtIEFkZGl0aW9uYWwgcGF0aCBzZXBhcmF0b3Igb25seSBmb3IgYG9zYCBzZXQgdG8gYFwid2luZG93c1wiYC5cbiAqXG4gKiBFeHRlbmRlZCBzeW50YXg6XG4gKiAtIFJlcXVpcmVzIGB7IGV4dGVuZGVkOiB0cnVlIH1gLlxuICogLSBgPyhmb298YmFyKWAgLSBNYXRjaGVzIDAgb3IgMSBpbnN0YW5jZSBvZiBge2ZvbyxiYXJ9YC5cbiAqIC0gYEAoZm9vfGJhcilgIC0gTWF0Y2hlcyAxIGluc3RhbmNlIG9mIGB7Zm9vLGJhcn1gLiBUaGV5IGJlaGF2ZSB0aGUgc2FtZS5cbiAqIC0gYCooZm9vfGJhcilgIC0gTWF0Y2hlcyBfbl8gaW5zdGFuY2VzIG9mIGB7Zm9vLGJhcn1gLlxuICogLSBgKyhmb298YmFyKWAgLSBNYXRjaGVzIF9uID4gMF8gaW5zdGFuY2VzIG9mIGB7Zm9vLGJhcn1gLlxuICogLSBgIShmb298YmFyKWAgLSBNYXRjaGVzIGFueXRoaW5nIG90aGVyIHRoYW4gYHtmb28sYmFyfWAuXG4gKiAtIFNlZSBodHRwczovL3d3dy5saW51eGpvdXJuYWwuY29tL2NvbnRlbnQvYmFzaC1leHRlbmRlZC1nbG9iYmluZy5cbiAqXG4gKiBHbG9ic3RhciBzeW50YXg6XG4gKiAtIFJlcXVpcmVzIGB7IGdsb2JzdGFyOiB0cnVlIH1gLlxuICogLSBgKipgIC0gTWF0Y2hlcyBhbnkgbnVtYmVyIG9mIGFueSBwYXRoIHNlZ21lbnRzLlxuICogICAgIC0gTXVzdCBjb21wcmlzZSBpdHMgZW50aXJlIHBhdGggc2VnbWVudCBpbiB0aGUgcHJvdmlkZWQgZ2xvYi5cbiAqIC0gU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9nbG9ic3Rhci1uZXctYmFzaC1nbG9iYmluZy1vcHRpb24uXG4gKlxuICogTm90ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKiAtIFRoZSBnZW5lcmF0ZWQgYFJlZ0V4cGAgaXMgYW5jaG9yZWQgYXQgYm90aCBzdGFydCBhbmQgZW5kLlxuICogLSBSZXBlYXRpbmcgYW5kIHRyYWlsaW5nIHNlcGFyYXRvcnMgYXJlIHRvbGVyYXRlZC4gVHJhaWxpbmcgc2VwYXJhdG9ycyBpbiB0aGVcbiAqICAgcHJvdmlkZWQgZ2xvYiBoYXZlIG5vIG1lYW5pbmcgYW5kIGFyZSBkaXNjYXJkZWQuXG4gKiAtIEFic29sdXRlIGdsb2JzIHdpbGwgb25seSBtYXRjaCBhYnNvbHV0ZSBwYXRocywgZXRjLlxuICogLSBFbXB0eSBnbG9icyB3aWxsIG1hdGNoIG5vdGhpbmcuXG4gKiAtIEFueSBzcGVjaWFsIGdsb2Igc3ludGF4IG11c3QgYmUgY29udGFpbmVkIHRvIG9uZSBwYXRoIHNlZ21lbnQuIEZvciBleGFtcGxlLFxuICogICBgPyhmb298YmFyL2JheilgIGlzIGludmFsaWQuIFRoZSBzZXBhcmF0b3Igd2lsbCB0YWtlIHByZWNlZGVuY2UgYW5kIHRoZVxuICogICBmaXJzdCBzZWdtZW50IGVuZHMgd2l0aCBhbiB1bmNsb3NlZCBncm91cC5cbiAqIC0gSWYgYSBwYXRoIHNlZ21lbnQgZW5kcyB3aXRoIHVuY2xvc2VkIGdyb3VwcyBvciBhIGRhbmdsaW5nIGVzY2FwZSBwcmVmaXgsIGFcbiAqICAgcGFyc2UgZXJyb3IgaGFzIG9jY3VycmVkLiBFdmVyeSBjaGFyYWN0ZXIgZm9yIHRoYXQgc2VnbWVudCBpcyB0YWtlblxuICogICBsaXRlcmFsbHkgaW4gdGhpcyBldmVudC5cbiAqXG4gKiBMaW1pdGF0aW9uczpcbiAqIC0gQSBuZWdhdGl2ZSBncm91cCBsaWtlIGAhKGZvb3xiYXIpYCB3aWxsIHdyb25nbHkgYmUgY29udmVydGVkIHRvIGEgbmVnYXRpdmVcbiAqICAgbG9vay1haGVhZCBmb2xsb3dlZCBieSBhIHdpbGRjYXJkLiBUaGlzIG1lYW5zIHRoYXQgYCEoZm9vKS5qc2Agd2lsbCB3cm9uZ2x5XG4gKiAgIGZhaWwgdG8gbWF0Y2ggYGZvb2Jhci5qc2AsIGV2ZW4gdGhvdWdoIGBmb29iYXJgIGlzIG5vdCBgZm9vYC4gRWZmZWN0aXZlbHksXG4gKiAgIGAhKGZvb3xiYXIpYCBpcyB0cmVhdGVkIGxpa2UgYCEoQChmb298YmFyKSopYC4gVGhpcyB3aWxsIHdvcmsgY29ycmVjdGx5IGlmXG4gKiAgIHRoZSBncm91cCBvY2N1cnMgbm90IG5lc3RlZCBhdCB0aGUgZW5kIG9mIHRoZSBzZWdtZW50LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdsb2JUb1JlZ0V4cChcbiAgZ2xvYjogc3RyaW5nLFxuICB7XG4gICAgZXh0ZW5kZWQgPSB0cnVlLFxuICAgIGdsb2JzdGFyOiBnbG9ic3Rhck9wdGlvbiA9IHRydWUsXG4gICAgb3MgPSBvc1R5cGUsXG4gICAgY2FzZUluc2Vuc2l0aXZlID0gZmFsc2UsXG4gIH06IEdsb2JUb1JlZ0V4cE9wdGlvbnMgPSB7fSxcbik6IFJlZ0V4cCB7XG4gIGlmIChnbG9iID09IFwiXCIpIHtcbiAgICByZXR1cm4gLyg/ISkvO1xuICB9XG5cbiAgY29uc3Qgc2VwID0gb3MgPT0gXCJ3aW5kb3dzXCIgPyBcIig/OlxcXFxcXFxcfC8pK1wiIDogXCIvK1wiO1xuICBjb25zdCBzZXBNYXliZSA9IG9zID09IFwid2luZG93c1wiID8gXCIoPzpcXFxcXFxcXHwvKSpcIiA6IFwiLypcIjtcbiAgY29uc3Qgc2VwcyA9IG9zID09IFwid2luZG93c1wiID8gW1wiXFxcXFwiLCBcIi9cIl0gOiBbXCIvXCJdO1xuICBjb25zdCBnbG9ic3RhciA9IG9zID09IFwid2luZG93c1wiXG4gICAgPyBcIig/OlteXFxcXFxcXFwvXSooPzpcXFxcXFxcXHwvfCQpKykqXCJcbiAgICA6IFwiKD86W14vXSooPzovfCQpKykqXCI7XG4gIGNvbnN0IHdpbGRjYXJkID0gb3MgPT0gXCJ3aW5kb3dzXCIgPyBcIlteXFxcXFxcXFwvXSpcIiA6IFwiW14vXSpcIjtcbiAgY29uc3QgZXNjYXBlUHJlZml4ID0gb3MgPT0gXCJ3aW5kb3dzXCIgPyBcImBcIiA6IFwiXFxcXFwiO1xuXG4gIC8vIFJlbW92ZSB0cmFpbGluZyBzZXBhcmF0b3JzLlxuICBsZXQgbmV3TGVuZ3RoID0gZ2xvYi5sZW5ndGg7XG4gIGZvciAoOyBuZXdMZW5ndGggPiAxICYmIHNlcHMuaW5jbHVkZXMoZ2xvYltuZXdMZW5ndGggLSAxXSk7IG5ld0xlbmd0aC0tKTtcbiAgZ2xvYiA9IGdsb2Iuc2xpY2UoMCwgbmV3TGVuZ3RoKTtcblxuICBsZXQgcmVnRXhwU3RyaW5nID0gXCJcIjtcblxuICAvLyBUZXJtaW5hdGVzIGNvcnJlY3RseS4gVHJ1c3QgdGhhdCBgamAgaXMgaW5jcmVtZW50ZWQgZXZlcnkgaXRlcmF0aW9uLlxuICBmb3IgKGxldCBqID0gMDsgaiA8IGdsb2IubGVuZ3RoOykge1xuICAgIGxldCBzZWdtZW50ID0gXCJcIjtcbiAgICBjb25zdCBncm91cFN0YWNrOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBpblJhbmdlID0gZmFsc2U7XG4gICAgbGV0IGluRXNjYXBlID0gZmFsc2U7XG4gICAgbGV0IGVuZHNXaXRoU2VwID0gZmFsc2U7XG4gICAgbGV0IGkgPSBqO1xuXG4gICAgLy8gVGVybWluYXRlcyB3aXRoIGBpYCBhdCB0aGUgbm9uLWluY2x1c2l2ZSBlbmQgb2YgdGhlIGN1cnJlbnQgc2VnbWVudC5cbiAgICBmb3IgKDsgaSA8IGdsb2IubGVuZ3RoICYmICFzZXBzLmluY2x1ZGVzKGdsb2JbaV0pOyBpKyspIHtcbiAgICAgIGlmIChpbkVzY2FwZSkge1xuICAgICAgICBpbkVzY2FwZSA9IGZhbHNlO1xuICAgICAgICBjb25zdCBlc2NhcGVDaGFycyA9IGluUmFuZ2UgPyByYW5nZUVzY2FwZUNoYXJzIDogcmVnRXhwRXNjYXBlQ2hhcnM7XG4gICAgICAgIHNlZ21lbnQgKz0gZXNjYXBlQ2hhcnMuaW5jbHVkZXMoZ2xvYltpXSkgPyBgXFxcXCR7Z2xvYltpXX1gIDogZ2xvYltpXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IGVzY2FwZVByZWZpeCkge1xuICAgICAgICBpbkVzY2FwZSA9IHRydWU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PSBcIltcIikge1xuICAgICAgICBpZiAoIWluUmFuZ2UpIHtcbiAgICAgICAgICBpblJhbmdlID0gdHJ1ZTtcbiAgICAgICAgICBzZWdtZW50ICs9IFwiW1wiO1xuICAgICAgICAgIGlmIChnbG9iW2kgKyAxXSA9PSBcIiFcIikge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgc2VnbWVudCArPSBcIl5cIjtcbiAgICAgICAgICB9IGVsc2UgaWYgKGdsb2JbaSArIDFdID09IFwiXlwiKSB7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgICAgICBzZWdtZW50ICs9IFwiXFxcXF5cIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSBpZiAoZ2xvYltpICsgMV0gPT0gXCI6XCIpIHtcbiAgICAgICAgICBsZXQgayA9IGkgKyAxO1xuICAgICAgICAgIGxldCB2YWx1ZSA9IFwiXCI7XG4gICAgICAgICAgd2hpbGUgKGdsb2JbayArIDFdICE9IG51bGwgJiYgZ2xvYltrICsgMV0gIT0gXCI6XCIpIHtcbiAgICAgICAgICAgIHZhbHVlICs9IGdsb2JbayArIDFdO1xuICAgICAgICAgICAgaysrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZ2xvYltrICsgMV0gPT0gXCI6XCIgJiYgZ2xvYltrICsgMl0gPT0gXCJdXCIpIHtcbiAgICAgICAgICAgIGkgPSBrICsgMjtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBcImFsbnVtXCIpIHNlZ21lbnQgKz0gXCJcXFxcZEEtWmEtelwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJhbHBoYVwiKSBzZWdtZW50ICs9IFwiQS1aYS16XCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBcImFzY2lpXCIpIHNlZ21lbnQgKz0gXCJcXHgwMC1cXHg3RlwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJibGFua1wiKSBzZWdtZW50ICs9IFwiXFx0IFwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJjbnRybFwiKSBzZWdtZW50ICs9IFwiXFx4MDAtXFx4MUZcXHg3RlwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJkaWdpdFwiKSBzZWdtZW50ICs9IFwiXFxcXGRcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IFwiZ3JhcGhcIikgc2VnbWVudCArPSBcIlxceDIxLVxceDdFXCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBcImxvd2VyXCIpIHNlZ21lbnQgKz0gXCJhLXpcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IFwicHJpbnRcIikgc2VnbWVudCArPSBcIlxceDIwLVxceDdFXCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBcInB1bmN0XCIpIHtcbiAgICAgICAgICAgICAgc2VnbWVudCArPSBcIiFcXFwiIyQlJicoKSorLFxcXFwtLi86Ozw9Pj9AW1xcXFxcXFxcXFxcXF1eX+KAmHt8fX5cIjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gXCJzcGFjZVwiKSBzZWdtZW50ICs9IFwiXFxcXHNcXHZcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IFwidXBwZXJcIikgc2VnbWVudCArPSBcIkEtWlwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJ3b3JkXCIpIHNlZ21lbnQgKz0gXCJcXFxcd1wiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJ4ZGlnaXRcIikgc2VnbWVudCArPSBcIlxcXFxkQS1GYS1mXCI7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT0gXCJdXCIgJiYgaW5SYW5nZSkge1xuICAgICAgICBpblJhbmdlID0gZmFsc2U7XG4gICAgICAgIHNlZ21lbnQgKz0gXCJdXCI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5SYW5nZSkge1xuICAgICAgICBpZiAoZ2xvYltpXSA9PSBcIlxcXFxcIikge1xuICAgICAgICAgIHNlZ21lbnQgKz0gYFxcXFxcXFxcYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWdtZW50ICs9IGdsb2JbaV07XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZ2xvYltpXSA9PSBcIilcIiAmJiBncm91cFN0YWNrLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgZ3JvdXBTdGFja1tncm91cFN0YWNrLmxlbmd0aCAtIDFdICE9IFwiQlJBQ0VcIlxuICAgICAgKSB7XG4gICAgICAgIHNlZ21lbnQgKz0gXCIpXCI7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBncm91cFN0YWNrLnBvcCgpITtcbiAgICAgICAgaWYgKHR5cGUgPT0gXCIhXCIpIHtcbiAgICAgICAgICBzZWdtZW50ICs9IHdpbGRjYXJkO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgIT0gXCJAXCIpIHtcbiAgICAgICAgICBzZWdtZW50ICs9IHR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZ2xvYltpXSA9PSBcInxcIiAmJiBncm91cFN0YWNrLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgZ3JvdXBTdGFja1tncm91cFN0YWNrLmxlbmd0aCAtIDFdICE9IFwiQlJBQ0VcIlxuICAgICAgKSB7XG4gICAgICAgIHNlZ21lbnQgKz0gXCJ8XCI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PSBcIitcIiAmJiBleHRlbmRlZCAmJiBnbG9iW2kgKyAxXSA9PSBcIihcIikge1xuICAgICAgICBpKys7XG4gICAgICAgIGdyb3VwU3RhY2sucHVzaChcIitcIik7XG4gICAgICAgIHNlZ21lbnQgKz0gXCIoPzpcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IFwiQFwiICYmIGV4dGVuZGVkICYmIGdsb2JbaSArIDFdID09IFwiKFwiKSB7XG4gICAgICAgIGkrKztcbiAgICAgICAgZ3JvdXBTdGFjay5wdXNoKFwiQFwiKTtcbiAgICAgICAgc2VnbWVudCArPSBcIig/OlwiO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT0gXCI/XCIpIHtcbiAgICAgICAgaWYgKGV4dGVuZGVkICYmIGdsb2JbaSArIDFdID09IFwiKFwiKSB7XG4gICAgICAgICAgaSsrO1xuICAgICAgICAgIGdyb3VwU3RhY2sucHVzaChcIj9cIik7XG4gICAgICAgICAgc2VnbWVudCArPSBcIig/OlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlZ21lbnQgKz0gXCIuXCI7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IFwiIVwiICYmIGV4dGVuZGVkICYmIGdsb2JbaSArIDFdID09IFwiKFwiKSB7XG4gICAgICAgIGkrKztcbiAgICAgICAgZ3JvdXBTdGFjay5wdXNoKFwiIVwiKTtcbiAgICAgICAgc2VnbWVudCArPSBcIig/IVwiO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT0gXCJ7XCIpIHtcbiAgICAgICAgZ3JvdXBTdGFjay5wdXNoKFwiQlJBQ0VcIik7XG4gICAgICAgIHNlZ21lbnQgKz0gXCIoPzpcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IFwifVwiICYmIGdyb3VwU3RhY2tbZ3JvdXBTdGFjay5sZW5ndGggLSAxXSA9PSBcIkJSQUNFXCIpIHtcbiAgICAgICAgZ3JvdXBTdGFjay5wb3AoKTtcbiAgICAgICAgc2VnbWVudCArPSBcIilcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IFwiLFwiICYmIGdyb3VwU3RhY2tbZ3JvdXBTdGFjay5sZW5ndGggLSAxXSA9PSBcIkJSQUNFXCIpIHtcbiAgICAgICAgc2VnbWVudCArPSBcInxcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IFwiKlwiKSB7XG4gICAgICAgIGlmIChleHRlbmRlZCAmJiBnbG9iW2kgKyAxXSA9PSBcIihcIikge1xuICAgICAgICAgIGkrKztcbiAgICAgICAgICBncm91cFN0YWNrLnB1c2goXCIqXCIpO1xuICAgICAgICAgIHNlZ21lbnQgKz0gXCIoPzpcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBwcmV2Q2hhciA9IGdsb2JbaSAtIDFdO1xuICAgICAgICAgIGxldCBudW1TdGFycyA9IDE7XG4gICAgICAgICAgd2hpbGUgKGdsb2JbaSArIDFdID09IFwiKlwiKSB7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgICAgICBudW1TdGFycysrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBuZXh0Q2hhciA9IGdsb2JbaSArIDFdO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGdsb2JzdGFyT3B0aW9uICYmIG51bVN0YXJzID09IDIgJiZcbiAgICAgICAgICAgIFsuLi5zZXBzLCB1bmRlZmluZWRdLmluY2x1ZGVzKHByZXZDaGFyKSAmJlxuICAgICAgICAgICAgWy4uLnNlcHMsIHVuZGVmaW5lZF0uaW5jbHVkZXMobmV4dENoYXIpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBzZWdtZW50ICs9IGdsb2JzdGFyO1xuICAgICAgICAgICAgZW5kc1dpdGhTZXAgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWdtZW50ICs9IHdpbGRjYXJkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgc2VnbWVudCArPSByZWdFeHBFc2NhcGVDaGFycy5pbmNsdWRlcyhnbG9iW2ldKSA/IGBcXFxcJHtnbG9iW2ldfWAgOiBnbG9iW2ldO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciB1bmNsb3NlZCBncm91cHMgb3IgYSBkYW5nbGluZyBiYWNrc2xhc2guXG4gICAgaWYgKGdyb3VwU3RhY2subGVuZ3RoID4gMCB8fCBpblJhbmdlIHx8IGluRXNjYXBlKSB7XG4gICAgICAvLyBQYXJzZSBmYWlsdXJlLiBUYWtlIGFsbCBjaGFyYWN0ZXJzIGZyb20gdGhpcyBzZWdtZW50IGxpdGVyYWxseS5cbiAgICAgIHNlZ21lbnQgPSBcIlwiO1xuICAgICAgZm9yIChjb25zdCBjIG9mIGdsb2Iuc2xpY2UoaiwgaSkpIHtcbiAgICAgICAgc2VnbWVudCArPSByZWdFeHBFc2NhcGVDaGFycy5pbmNsdWRlcyhjKSA/IGBcXFxcJHtjfWAgOiBjO1xuICAgICAgICBlbmRzV2l0aFNlcCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlZ0V4cFN0cmluZyArPSBzZWdtZW50O1xuICAgIGlmICghZW5kc1dpdGhTZXApIHtcbiAgICAgIHJlZ0V4cFN0cmluZyArPSBpIDwgZ2xvYi5sZW5ndGggPyBzZXAgOiBzZXBNYXliZTtcbiAgICAgIGVuZHNXaXRoU2VwID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBUZXJtaW5hdGVzIHdpdGggYGlgIGF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dCBzZWdtZW50LlxuICAgIHdoaWxlIChzZXBzLmluY2x1ZGVzKGdsb2JbaV0pKSBpKys7XG5cbiAgICAvLyBDaGVjayB0aGF0IHRoZSBuZXh0IHZhbHVlIG9mIGBqYCBpcyBpbmRlZWQgaGlnaGVyIHRoYW4gdGhlIGN1cnJlbnQgdmFsdWUuXG4gICAgaWYgKCEoaSA+IGopKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBc3NlcnRpb24gZmFpbHVyZTogaSA+IGogKHBvdGVudGlhbCBpbmZpbml0ZSBsb29wKVwiKTtcbiAgICB9XG4gICAgaiA9IGk7XG4gIH1cblxuICByZWdFeHBTdHJpbmcgPSBgXiR7cmVnRXhwU3RyaW5nfSRgO1xuICByZXR1cm4gbmV3IFJlZ0V4cChyZWdFeHBTdHJpbmcsIGNhc2VJbnNlbnNpdGl2ZSA/IFwiaVwiIDogXCJcIik7XG59XG5cbi8qKiBUZXN0IHdoZXRoZXIgdGhlIGdpdmVuIHN0cmluZyBpcyBhIGdsb2IgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dsb2Ioc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgY2hhcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IFwie1wiOiBcIn1cIiwgXCIoXCI6IFwiKVwiLCBcIltcIjogXCJdXCIgfTtcbiAgY29uc3QgcmVnZXggPVxuICAgIC9cXFxcKC4pfCheIXxcXCp8XFw/fFtcXF0uKyldXFw/fFxcW1teXFxcXFxcXV0rXFxdfFxce1teXFxcXH1dK1xcfXxcXChcXD9bOiE9XVteXFxcXCldK1xcKXxcXChbXnxdK1xcfFteXFxcXCldK1xcKSkvO1xuXG4gIGlmIChzdHIgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGw7XG5cbiAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMoc3RyKSkpIHtcbiAgICBpZiAobWF0Y2hbMl0pIHJldHVybiB0cnVlO1xuICAgIGxldCBpZHggPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aDtcblxuICAgIC8vIGlmIGFuIG9wZW4gYnJhY2tldC9icmFjZS9wYXJlbiBpcyBlc2NhcGVkLFxuICAgIC8vIHNldCB0aGUgaW5kZXggdG8gdGhlIG5leHQgY2xvc2luZyBjaGFyYWN0ZXJcbiAgICBjb25zdCBvcGVuID0gbWF0Y2hbMV07XG4gICAgY29uc3QgY2xvc2UgPSBvcGVuID8gY2hhcnNbb3Blbl0gOiBudWxsO1xuICAgIGlmIChvcGVuICYmIGNsb3NlKSB7XG4gICAgICBjb25zdCBuID0gc3RyLmluZGV4T2YoY2xvc2UsIGlkeCk7XG4gICAgICBpZiAobiAhPT0gLTEpIHtcbiAgICAgICAgaWR4ID0gbiArIDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3RyID0gc3RyLnNsaWNlKGlkeCk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBMaWtlIG5vcm1hbGl6ZSgpLCBidXQgZG9lc24ndCBjb2xsYXBzZSBcIioqXFwvLi5cIiB3aGVuIGBnbG9ic3RhcmAgaXMgdHJ1ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVHbG9iKFxuICBnbG9iOiBzdHJpbmcsXG4gIHsgZ2xvYnN0YXIgPSBmYWxzZSB9OiBHbG9iT3B0aW9ucyA9IHt9LFxuKTogc3RyaW5nIHtcbiAgaWYgKGdsb2IubWF0Y2goL1xcMC9nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgR2xvYiBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnM6IFwiJHtnbG9ifVwiYCk7XG4gIH1cbiAgaWYgKCFnbG9ic3Rhcikge1xuICAgIHJldHVybiBub3JtYWxpemUoZ2xvYik7XG4gIH1cbiAgY29uc3QgcyA9IFNFUF9QQVRURVJOLnNvdXJjZTtcbiAgY29uc3QgYmFkUGFyZW50UGF0dGVybiA9IG5ldyBSZWdFeHAoXG4gICAgYCg/PD0oJHtzfXxeKVxcXFwqXFxcXCoke3N9KVxcXFwuXFxcXC4oPz0ke3N9fCQpYCxcbiAgICBcImdcIixcbiAgKTtcbiAgcmV0dXJuIG5vcm1hbGl6ZShnbG9iLnJlcGxhY2UoYmFkUGFyZW50UGF0dGVybiwgXCJcXDBcIikpLnJlcGxhY2UoL1xcMC9nLCBcIi4uXCIpO1xufVxuXG4vKiogTGlrZSBqb2luKCksIGJ1dCBkb2Vzbid0IGNvbGxhcHNlIFwiKipcXC8uLlwiIHdoZW4gYGdsb2JzdGFyYCBpcyB0cnVlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpvaW5HbG9icyhcbiAgZ2xvYnM6IHN0cmluZ1tdLFxuICB7IGV4dGVuZGVkID0gdHJ1ZSwgZ2xvYnN0YXIgPSBmYWxzZSB9OiBHbG9iT3B0aW9ucyA9IHt9LFxuKTogc3RyaW5nIHtcbiAgaWYgKCFnbG9ic3RhciB8fCBnbG9icy5sZW5ndGggPT0gMCkge1xuICAgIHJldHVybiBqb2luKC4uLmdsb2JzKTtcbiAgfVxuICBpZiAoZ2xvYnMubGVuZ3RoID09PSAwKSByZXR1cm4gXCIuXCI7XG4gIGxldCBqb2luZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZm9yIChjb25zdCBnbG9iIG9mIGdsb2JzKSB7XG4gICAgY29uc3QgcGF0aCA9IGdsb2I7XG4gICAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFqb2luZWQpIGpvaW5lZCA9IHBhdGg7XG4gICAgICBlbHNlIGpvaW5lZCArPSBgJHtTRVB9JHtwYXRofWA7XG4gICAgfVxuICB9XG4gIGlmICgham9pbmVkKSByZXR1cm4gXCIuXCI7XG4gIHJldHVybiBub3JtYWxpemVHbG9iKGpvaW5lZCwgeyBleHRlbmRlZCwgZ2xvYnN0YXIgfSk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cblxuLyoqXG4gKiBQb3J0ZWQgbW9zdGx5IGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Jyb3dzZXJpZnkvcGF0aC1icm93c2VyaWZ5L1xuICogVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuLi9fdXRpbC9vcy50c1wiO1xuaW1wb3J0ICogYXMgX3dpbjMyIGZyb20gXCIuL3dpbjMyLnRzXCI7XG5pbXBvcnQgKiBhcyBfcG9zaXggZnJvbSBcIi4vcG9zaXgudHNcIjtcblxuY29uc3QgcGF0aCA9IGlzV2luZG93cyA/IF93aW4zMiA6IF9wb3NpeDtcblxuZXhwb3J0IGNvbnN0IHdpbjMyID0gX3dpbjMyO1xuZXhwb3J0IGNvbnN0IHBvc2l4ID0gX3Bvc2l4O1xuZXhwb3J0IGNvbnN0IHtcbiAgYmFzZW5hbWUsXG4gIGRlbGltaXRlcixcbiAgZGlybmFtZSxcbiAgZXh0bmFtZSxcbiAgZm9ybWF0LFxuICBmcm9tRmlsZVVybCxcbiAgaXNBYnNvbHV0ZSxcbiAgam9pbixcbiAgbm9ybWFsaXplLFxuICBwYXJzZSxcbiAgcmVsYXRpdmUsXG4gIHJlc29sdmUsXG4gIHNlcCxcbiAgdG9GaWxlVXJsLFxuICB0b05hbWVzcGFjZWRQYXRoLFxufSA9IHBhdGg7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2NvbW1vbi50c1wiO1xuZXhwb3J0IHsgU0VQLCBTRVBfUEFUVEVSTiB9IGZyb20gXCIuL3NlcGFyYXRvci50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vX2ludGVyZmFjZS50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ2xvYi50c1wiO1xuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBBIG1vZHVsZSB0byBwcmludCBBTlNJIHRlcm1pbmFsIGNvbG9ycy4gSW5zcGlyZWQgYnkgY2hhbGssIGtsZXVyLCBhbmQgY29sb3JzXG4vLyBvbiBucG0uXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGJnQmx1ZSwgcmVkLCBib2xkIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vZm10L2NvbG9ycy50c1wiO1xuICogY29uc29sZS5sb2coYmdCbHVlKHJlZChib2xkKFwiSGVsbG8gd29ybGQhXCIpKSkpO1xuICogYGBgXG4gKlxuICogVGhpcyBtb2R1bGUgc3VwcG9ydHMgYE5PX0NPTE9SYCBlbnZpcm9ubWVudGFsIHZhcmlhYmxlIGRpc2FibGluZyBhbnkgY29sb3JpbmdcbiAqIGlmIGBOT19DT0xPUmAgaXMgc2V0LlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuY29uc3QgeyBEZW5vIH0gPSBnbG9iYWxUaGlzIGFzIGFueTtcbmNvbnN0IG5vQ29sb3IgPSB0eXBlb2YgRGVubz8ubm9Db2xvciA9PT0gXCJib29sZWFuXCJcbiAgPyBEZW5vLm5vQ29sb3IgYXMgYm9vbGVhblxuICA6IHRydWU7XG5cbmludGVyZmFjZSBDb2RlIHtcbiAgb3Blbjogc3RyaW5nO1xuICBjbG9zZTogc3RyaW5nO1xuICByZWdleHA6IFJlZ0V4cDtcbn1cblxuLyoqIFJHQiA4LWJpdHMgcGVyIGNoYW5uZWwuIEVhY2ggaW4gcmFuZ2UgYDAtPjI1NWAgb3IgYDB4MDAtPjB4ZmZgICovXG5pbnRlcmZhY2UgUmdiIHtcbiAgcjogbnVtYmVyO1xuICBnOiBudW1iZXI7XG4gIGI6IG51bWJlcjtcbn1cblxubGV0IGVuYWJsZWQgPSAhbm9Db2xvcjtcblxuLyoqXG4gKiBTZXQgY2hhbmdpbmcgdGV4dCBjb2xvciB0byBlbmFibGVkIG9yIGRpc2FibGVkXG4gKiBAcGFyYW0gdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldENvbG9yRW5hYmxlZCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICBpZiAobm9Db2xvcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGVuYWJsZWQgPSB2YWx1ZTtcbn1cblxuLyoqIEdldCB3aGV0aGVyIHRleHQgY29sb3IgY2hhbmdlIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sb3JFbmFibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZW5hYmxlZDtcbn1cblxuLyoqXG4gKiBCdWlsZHMgY29sb3IgY29kZVxuICogQHBhcmFtIG9wZW5cbiAqIEBwYXJhbSBjbG9zZVxuICovXG5mdW5jdGlvbiBjb2RlKG9wZW46IG51bWJlcltdLCBjbG9zZTogbnVtYmVyKTogQ29kZSB7XG4gIHJldHVybiB7XG4gICAgb3BlbjogYFxceDFiWyR7b3Blbi5qb2luKFwiO1wiKX1tYCxcbiAgICBjbG9zZTogYFxceDFiWyR7Y2xvc2V9bWAsXG4gICAgcmVnZXhwOiBuZXcgUmVnRXhwKGBcXFxceDFiXFxcXFske2Nsb3NlfW1gLCBcImdcIiksXG4gIH07XG59XG5cbi8qKlxuICogQXBwbGllcyBjb2xvciBhbmQgYmFja2dyb3VuZCBiYXNlZCBvbiBjb2xvciBjb2RlIGFuZCBpdHMgYXNzb2NpYXRlZCB0ZXh0XG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gYXBwbHkgY29sb3Igc2V0dGluZ3MgdG9cbiAqIEBwYXJhbSBjb2RlIGNvbG9yIGNvZGUgdG8gYXBwbHlcbiAqL1xuZnVuY3Rpb24gcnVuKHN0cjogc3RyaW5nLCBjb2RlOiBDb2RlKTogc3RyaW5nIHtcbiAgcmV0dXJuIGVuYWJsZWRcbiAgICA/IGAke2NvZGUub3Blbn0ke3N0ci5yZXBsYWNlKGNvZGUucmVnZXhwLCBjb2RlLm9wZW4pfSR7Y29kZS5jbG9zZX1gXG4gICAgOiBzdHI7XG59XG5cbi8qKlxuICogUmVzZXQgdGhlIHRleHQgbW9kaWZpZWRcbiAqIEBwYXJhbSBzdHIgdGV4dCB0byByZXNldFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXQoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMF0sIDApKTtcbn1cblxuLyoqXG4gKiBNYWtlIHRoZSB0ZXh0IGJvbGQuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBib2xkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBib2xkKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzFdLCAyMikpO1xufVxuXG4vKipcbiAqIFRoZSB0ZXh0IGVtaXRzIG9ubHkgYSBzbWFsbCBhbW91bnQgb2YgbGlnaHQuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gZGltXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaW0oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMl0sIDIyKSk7XG59XG5cbi8qKlxuICogTWFrZSB0aGUgdGV4dCBpdGFsaWMuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdGFsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGl0YWxpYyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFszXSwgMjMpKTtcbn1cblxuLyoqXG4gKiBNYWtlIHRoZSB0ZXh0IHVuZGVybGluZS5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byB1bmRlcmxpbmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuZGVybGluZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0XSwgMjQpKTtcbn1cblxuLyoqXG4gKiBJbnZlcnQgYmFja2dyb3VuZCBjb2xvciBhbmQgdGV4dCBjb2xvci5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBpbnZlcnQgaXRzIGNvbG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZlcnNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzddLCAyNykpO1xufVxuXG4vKipcbiAqIE1ha2UgdGhlIHRleHQgaGlkZGVuLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIGhpZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhpZGRlbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs4XSwgMjgpKTtcbn1cblxuLyoqXG4gKiBQdXQgaG9yaXpvbnRhbCBsaW5lIHRocm91Z2ggdGhlIGNlbnRlciBvZiB0aGUgdGV4dC5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBzdHJpa2UgdGhyb3VnaFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaWtldGhyb3VnaChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5XSwgMjkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB0byBibGFjay5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGJsYWNrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBibGFjayhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFszMF0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gcmVkLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgcmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWQoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMzFdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGdyZWVuLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgZ3JlZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyZWVuKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzMyXSwgMzkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB0byB5ZWxsb3cuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSB5ZWxsb3dcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHllbGxvdyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFszM10sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYmx1ZS5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGJsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJsdWUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMzRdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIG1hZ2VudGEuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBtYWdlbnRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWdlbnRhKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzM1XSwgMzkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB0byBjeWFuLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgY3lhblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3lhbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFszNl0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gd2hpdGUuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSB3aGl0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2hpdGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMzddLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGdyYXkuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBncmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBncmF5KHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGJyaWdodEJsYWNrKHN0cik7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IGJsYWNrLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgYnJpZ2h0LWJsYWNrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBicmlnaHRCbGFjayhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5MF0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IHJlZC5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGJyaWdodC1yZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyaWdodFJlZChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5MV0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IGdyZWVuLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgYnJpZ2h0LWdyZWVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBicmlnaHRHcmVlbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5Ml0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IHllbGxvdy5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGJyaWdodC15ZWxsb3dcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyaWdodFllbGxvdyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5M10sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IGJsdWUuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBicmlnaHQtYmx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYnJpZ2h0Qmx1ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5NF0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IG1hZ2VudGEuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBicmlnaHQtbWFnZW50YVxuICovXG5leHBvcnQgZnVuY3Rpb24gYnJpZ2h0TWFnZW50YShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5NV0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IGN5YW4uXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBicmlnaHQtY3lhblxuICovXG5leHBvcnQgZnVuY3Rpb24gYnJpZ2h0Q3lhbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5Nl0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IHdoaXRlLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgYnJpZ2h0LXdoaXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBicmlnaHRXaGl0ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5N10sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8gYmxhY2suXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBibGFja1xuICovXG5leHBvcnQgZnVuY3Rpb24gYmdCbGFjayhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0MF0sIDQ5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8gcmVkLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgcmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ1JlZChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0MV0sIDQ5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8gZ3JlZW4uXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBncmVlblxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdHcmVlbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0Ml0sIDQ5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8geWVsbG93LlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgeWVsbG93XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ1llbGxvdyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0M10sIDQ5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8gYmx1ZS5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIGJsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnQmx1ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0NF0sIDQ5KSk7XG59XG5cbi8qKlxuICogIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIG1hZ2VudGEuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBtYWdlbnRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ01hZ2VudGEoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDVdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGN5YW4uXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBjeWFuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ0N5YW4oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDZdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIHdoaXRlLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgd2hpdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnV2hpdGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDddLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCBibGFjay5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIGJyaWdodC1ibGFja1xuICovXG5leHBvcnQgZnVuY3Rpb24gYmdCcmlnaHRCbGFjayhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDBdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCByZWQuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBicmlnaHQtcmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ0JyaWdodFJlZChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDFdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCBncmVlbi5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIGJyaWdodC1ncmVlblxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdCcmlnaHRHcmVlbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDJdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCB5ZWxsb3cuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBicmlnaHQteWVsbG93XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ0JyaWdodFllbGxvdyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDNdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCBibHVlLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgYnJpZ2h0LWJsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnQnJpZ2h0Qmx1ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDRdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCBtYWdlbnRhLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgYnJpZ2h0LW1hZ2VudGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnQnJpZ2h0TWFnZW50YShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDVdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCBjeWFuLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgYnJpZ2h0LWN5YW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnQnJpZ2h0Q3lhbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDZdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCB3aGl0ZS5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIGJyaWdodC13aGl0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdCcmlnaHRXaGl0ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDddLCA0OSkpO1xufVxuXG4vKiBTcGVjaWFsIENvbG9yIFNlcXVlbmNlcyAqL1xuXG4vKipcbiAqIENsYW0gYW5kIHRydW5jYXRlIGNvbG9yIGNvZGVzXG4gKiBAcGFyYW0gblxuICogQHBhcmFtIG1heCBudW1iZXIgdG8gdHJ1bmNhdGUgdG9cbiAqIEBwYXJhbSBtaW4gbnVtYmVyIHRvIHRydW5jYXRlIGZyb21cbiAqL1xuZnVuY3Rpb24gY2xhbXBBbmRUcnVuY2F0ZShuOiBudW1iZXIsIG1heCA9IDI1NSwgbWluID0gMCk6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLnRydW5jKE1hdGgubWF4KE1hdGgubWluKG4sIG1heCksIG1pbikpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHVzaW5nIHBhbGV0dGVkIDhiaXQgY29sb3JzLlxuICogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZSM4LWJpdFxuICogQHBhcmFtIHN0ciB0ZXh0IGNvbG9yIHRvIGFwcGx5IHBhbGV0dGVkIDhiaXQgY29sb3JzIHRvXG4gKiBAcGFyYW0gY29sb3IgY29kZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmdiOChzdHI6IHN0cmluZywgY29sb3I6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFszOCwgNSwgY2xhbXBBbmRUcnVuY2F0ZShjb2xvcildLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHVzaW5nIHBhbGV0dGVkIDhiaXQgY29sb3JzLlxuICogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZSM4LWJpdFxuICogQHBhcmFtIHN0ciB0ZXh0IGNvbG9yIHRvIGFwcGx5IHBhbGV0dGVkIDhiaXQgYmFja2dyb3VuZCBjb2xvcnMgdG9cbiAqIEBwYXJhbSBjb2xvciBjb2RlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ1JnYjgoc3RyOiBzdHJpbmcsIGNvbG9yOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDgsIDUsIGNsYW1wQW5kVHJ1bmNhdGUoY29sb3IpXSwgNDkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB1c2luZyAyNGJpdCByZ2IuXG4gKiBgY29sb3JgIGNhbiBiZSBhIG51bWJlciBpbiByYW5nZSBgMHgwMDAwMDBgIHRvIGAweGZmZmZmZmAgb3JcbiAqIGFuIGBSZ2JgLlxuICpcbiAqIFRvIHByb2R1Y2UgdGhlIGNvbG9yIG1hZ2VudGE6XG4gKlxuICogYGBgdHNcbiAqICAgICAgaW1wb3J0IHsgcmdiMjQgfSBmcm9tIFwiLi9jb2xvcnMudHNcIjtcbiAqICAgICAgcmdiMjQoXCJmb29cIiwgMHhmZjAwZmYpO1xuICogICAgICByZ2IyNChcImZvb1wiLCB7cjogMjU1LCBnOiAwLCBiOiAyNTV9KTtcbiAqIGBgYFxuICogQHBhcmFtIHN0ciB0ZXh0IGNvbG9yIHRvIGFwcGx5IDI0Yml0IHJnYiB0b1xuICogQHBhcmFtIGNvbG9yIGNvZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJnYjI0KHN0cjogc3RyaW5nLCBjb2xvcjogbnVtYmVyIHwgUmdiKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBjb2xvciA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBydW4oXG4gICAgICBzdHIsXG4gICAgICBjb2RlKFxuICAgICAgICBbMzgsIDIsIChjb2xvciA+PiAxNikgJiAweGZmLCAoY29sb3IgPj4gOCkgJiAweGZmLCBjb2xvciAmIDB4ZmZdLFxuICAgICAgICAzOSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcnVuKFxuICAgIHN0cixcbiAgICBjb2RlKFxuICAgICAgW1xuICAgICAgICAzOCxcbiAgICAgICAgMixcbiAgICAgICAgY2xhbXBBbmRUcnVuY2F0ZShjb2xvci5yKSxcbiAgICAgICAgY2xhbXBBbmRUcnVuY2F0ZShjb2xvci5nKSxcbiAgICAgICAgY2xhbXBBbmRUcnVuY2F0ZShjb2xvci5iKSxcbiAgICAgIF0sXG4gICAgICAzOSxcbiAgICApLFxuICApO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHVzaW5nIDI0Yml0IHJnYi5cbiAqIGBjb2xvcmAgY2FuIGJlIGEgbnVtYmVyIGluIHJhbmdlIGAweDAwMDAwMGAgdG8gYDB4ZmZmZmZmYCBvclxuICogYW4gYFJnYmAuXG4gKlxuICogVG8gcHJvZHVjZSB0aGUgY29sb3IgbWFnZW50YTpcbiAqXG4gKiBgYGB0c1xuICogICAgICBpbXBvcnQgeyBiZ1JnYjI0IH0gZnJvbSBcIi4vY29sb3JzLnRzXCI7XG4gKiAgICAgIGJnUmdiMjQoXCJmb29cIiwgMHhmZjAwZmYpO1xuICogICAgICBiZ1JnYjI0KFwiZm9vXCIsIHtyOiAyNTUsIGc6IDAsIGI6IDI1NX0pO1xuICogYGBgXG4gKiBAcGFyYW0gc3RyIHRleHQgY29sb3IgdG8gYXBwbHkgMjRiaXQgcmdiIHRvXG4gKiBAcGFyYW0gY29sb3IgY29kZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdSZ2IyNChzdHI6IHN0cmluZywgY29sb3I6IG51bWJlciB8IFJnYik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgY29sb3IgPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4gcnVuKFxuICAgICAgc3RyLFxuICAgICAgY29kZShcbiAgICAgICAgWzQ4LCAyLCAoY29sb3IgPj4gMTYpICYgMHhmZiwgKGNvbG9yID4+IDgpICYgMHhmZiwgY29sb3IgJiAweGZmXSxcbiAgICAgICAgNDksXG4gICAgICApLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJ1bihcbiAgICBzdHIsXG4gICAgY29kZShcbiAgICAgIFtcbiAgICAgICAgNDgsXG4gICAgICAgIDIsXG4gICAgICAgIGNsYW1wQW5kVHJ1bmNhdGUoY29sb3IuciksXG4gICAgICAgIGNsYW1wQW5kVHJ1bmNhdGUoY29sb3IuZyksXG4gICAgICAgIGNsYW1wQW5kVHJ1bmNhdGUoY29sb3IuYiksXG4gICAgICBdLFxuICAgICAgNDksXG4gICAgKSxcbiAgKTtcbn1cblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2NoYWxrL2Fuc2ktcmVnZXgvYmxvYi8wMmZhODkzZDYxOWQzZGE4NTQxMWFjYzhmZDRlMmVlYTBlOTVhOWQ5L2luZGV4LmpzXG5jb25zdCBBTlNJX1BBVFRFUk4gPSBuZXcgUmVnRXhwKFxuICBbXG4gICAgXCJbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT9cXFxcdTAwMDcpXCIsXG4gICAgXCIoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW5xLXV5PT48fl0pKVwiLFxuICBdLmpvaW4oXCJ8XCIpLFxuICBcImdcIixcbik7XG5cbi8qKlxuICogUmVtb3ZlIEFOU0kgZXNjYXBlIGNvZGVzIGZyb20gdGhlIHN0cmluZy5cbiAqIEBwYXJhbSBzdHJpbmcgdG8gcmVtb3ZlIEFOU0kgZXNjYXBlIGNvZGVzIGZyb21cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQ29sb3Ioc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoQU5TSV9QQVRURVJOLCBcIlwiKTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4uL191dGlsL2Fzc2VydC50c1wiO1xuaW1wb3J0IHsgQnl0ZXNMaXN0IH0gZnJvbSBcIi4uL2J5dGVzL2J5dGVzX2xpc3QudHNcIjtcbmltcG9ydCB7IGNvbmNhdCwgY29weSB9IGZyb20gXCIuLi9ieXRlcy9tb2QudHNcIjtcbmltcG9ydCB0eXBlIHsgUmVhZGVyLCBSZWFkZXJTeW5jLCBXcml0ZXIsIFdyaXRlclN5bmMgfSBmcm9tIFwiLi90eXBlcy5kLnRzXCI7XG5cbi8vIE1JTl9SRUFEIGlzIHRoZSBtaW5pbXVtIEFycmF5QnVmZmVyIHNpemUgcGFzc2VkIHRvIGEgcmVhZCBjYWxsIGJ5XG4vLyBidWZmZXIuUmVhZEZyb20uIEFzIGxvbmcgYXMgdGhlIEJ1ZmZlciBoYXMgYXQgbGVhc3QgTUlOX1JFQUQgYnl0ZXMgYmV5b25kXG4vLyB3aGF0IGlzIHJlcXVpcmVkIHRvIGhvbGQgdGhlIGNvbnRlbnRzIG9mIHIsIHJlYWRGcm9tKCkgd2lsbCBub3QgZ3JvdyB0aGVcbi8vIHVuZGVybHlpbmcgYnVmZmVyLlxuY29uc3QgTUlOX1JFQUQgPSAzMiAqIDEwMjQ7XG5jb25zdCBNQVhfU0laRSA9IDIgKiogMzIgLSAyO1xuXG4vKiogQSB2YXJpYWJsZS1zaXplZCBidWZmZXIgb2YgYnl0ZXMgd2l0aCBgcmVhZCgpYCBhbmQgYHdyaXRlKClgIG1ldGhvZHMuXG4gKlxuICogQnVmZmVyIGlzIGFsbW9zdCBhbHdheXMgdXNlZCB3aXRoIHNvbWUgSS9PIGxpa2UgZmlsZXMgYW5kIHNvY2tldHMuIEl0IGFsbG93c1xuICogb25lIHRvIGJ1ZmZlciB1cCBhIGRvd25sb2FkIGZyb20gYSBzb2NrZXQuIEJ1ZmZlciBncm93cyBhbmQgc2hyaW5rcyBhc1xuICogbmVjZXNzYXJ5LlxuICpcbiAqIEJ1ZmZlciBpcyBOT1QgdGhlIHNhbWUgdGhpbmcgYXMgTm9kZSdzIEJ1ZmZlci4gTm9kZSdzIEJ1ZmZlciB3YXMgY3JlYXRlZCBpblxuICogMjAwOSBiZWZvcmUgSmF2YVNjcmlwdCBoYWQgdGhlIGNvbmNlcHQgb2YgQXJyYXlCdWZmZXJzLiBJdCdzIHNpbXBseSBhXG4gKiBub24tc3RhbmRhcmQgQXJyYXlCdWZmZXIuXG4gKlxuICogQXJyYXlCdWZmZXIgaXMgYSBmaXhlZCBtZW1vcnkgYWxsb2NhdGlvbi4gQnVmZmVyIGlzIGltcGxlbWVudGVkIG9uIHRvcCBvZlxuICogQXJyYXlCdWZmZXIuXG4gKlxuICogQmFzZWQgb24gW0dvIEJ1ZmZlcl0oaHR0cHM6Ly9nb2xhbmcub3JnL3BrZy9ieXRlcy8jQnVmZmVyKS4gKi9cblxuZXhwb3J0IGNsYXNzIEJ1ZmZlciB7XG4gICNidWY6IFVpbnQ4QXJyYXk7IC8vIGNvbnRlbnRzIGFyZSB0aGUgYnl0ZXMgYnVmW29mZiA6IGxlbihidWYpXVxuICAjb2ZmID0gMDsgLy8gcmVhZCBhdCBidWZbb2ZmXSwgd3JpdGUgYXQgYnVmW2J1Zi5ieXRlTGVuZ3RoXVxuXG4gIGNvbnN0cnVjdG9yKGFiPzogQXJyYXlCdWZmZXJMaWtlIHwgQXJyYXlMaWtlPG51bWJlcj4pIHtcbiAgICB0aGlzLiNidWYgPSBhYiA9PT0gdW5kZWZpbmVkID8gbmV3IFVpbnQ4QXJyYXkoMCkgOiBuZXcgVWludDhBcnJheShhYik7XG4gIH1cblxuICAvKiogUmV0dXJucyBhIHNsaWNlIGhvbGRpbmcgdGhlIHVucmVhZCBwb3J0aW9uIG9mIHRoZSBidWZmZXIuXG4gICAqXG4gICAqIFRoZSBzbGljZSBpcyB2YWxpZCBmb3IgdXNlIG9ubHkgdW50aWwgdGhlIG5leHQgYnVmZmVyIG1vZGlmaWNhdGlvbiAodGhhdFxuICAgKiBpcywgb25seSB1bnRpbCB0aGUgbmV4dCBjYWxsIHRvIGEgbWV0aG9kIGxpa2UgYHJlYWQoKWAsIGB3cml0ZSgpYCxcbiAgICogYHJlc2V0KClgLCBvciBgdHJ1bmNhdGUoKWApLiBJZiBgb3B0aW9ucy5jb3B5YCBpcyBmYWxzZSB0aGUgc2xpY2UgYWxpYXNlcyB0aGUgYnVmZmVyIGNvbnRlbnQgYXRcbiAgICogbGVhc3QgdW50aWwgdGhlIG5leHQgYnVmZmVyIG1vZGlmaWNhdGlvbiwgc28gaW1tZWRpYXRlIGNoYW5nZXMgdG8gdGhlXG4gICAqIHNsaWNlIHdpbGwgYWZmZWN0IHRoZSByZXN1bHQgb2YgZnV0dXJlIHJlYWRzLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBEZWZhdWx0cyB0byBgeyBjb3B5OiB0cnVlIH1gXG4gICAqL1xuICBieXRlcyhvcHRpb25zID0geyBjb3B5OiB0cnVlIH0pOiBVaW50OEFycmF5IHtcbiAgICBpZiAob3B0aW9ucy5jb3B5ID09PSBmYWxzZSkgcmV0dXJuIHRoaXMuI2J1Zi5zdWJhcnJheSh0aGlzLiNvZmYpO1xuICAgIHJldHVybiB0aGlzLiNidWYuc2xpY2UodGhpcy4jb2ZmKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHVucmVhZCBwb3J0aW9uIG9mIHRoZSBidWZmZXIgaXMgZW1wdHkuICovXG4gIGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNidWYuYnl0ZUxlbmd0aCA8PSB0aGlzLiNvZmY7XG4gIH1cblxuICAvKiogQSByZWFkIG9ubHkgbnVtYmVyIG9mIGJ5dGVzIG9mIHRoZSB1bnJlYWQgcG9ydGlvbiBvZiB0aGUgYnVmZmVyLiAqL1xuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI2J1Zi5ieXRlTGVuZ3RoIC0gdGhpcy4jb2ZmO1xuICB9XG5cbiAgLyoqIFRoZSByZWFkIG9ubHkgY2FwYWNpdHkgb2YgdGhlIGJ1ZmZlcidzIHVuZGVybHlpbmcgYnl0ZSBzbGljZSwgdGhhdCBpcyxcbiAgICogdGhlIHRvdGFsIHNwYWNlIGFsbG9jYXRlZCBmb3IgdGhlIGJ1ZmZlcidzIGRhdGEuICovXG4gIGdldCBjYXBhY2l0eSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNidWYuYnVmZmVyLmJ5dGVMZW5ndGg7XG4gIH1cblxuICAvKiogRGlzY2FyZHMgYWxsIGJ1dCB0aGUgZmlyc3QgYG5gIHVucmVhZCBieXRlcyBmcm9tIHRoZSBidWZmZXIgYnV0XG4gICAqIGNvbnRpbnVlcyB0byB1c2UgdGhlIHNhbWUgYWxsb2NhdGVkIHN0b3JhZ2UuIEl0IHRocm93cyBpZiBgbmAgaXNcbiAgICogbmVnYXRpdmUgb3IgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlci4gKi9cbiAgdHJ1bmNhdGUobjogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKG4gPT09IDApIHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG4gPCAwIHx8IG4gPiB0aGlzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJieXRlcy5CdWZmZXI6IHRydW5jYXRpb24gb3V0IG9mIHJhbmdlXCIpO1xuICAgIH1cbiAgICB0aGlzLiNyZXNsaWNlKHRoaXMuI29mZiArIG4pO1xuICB9XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy4jcmVzbGljZSgwKTtcbiAgICB0aGlzLiNvZmYgPSAwO1xuICB9XG5cbiAgI3RyeUdyb3dCeVJlc2xpY2UobjogbnVtYmVyKSB7XG4gICAgY29uc3QgbCA9IHRoaXMuI2J1Zi5ieXRlTGVuZ3RoO1xuICAgIGlmIChuIDw9IHRoaXMuY2FwYWNpdHkgLSBsKSB7XG4gICAgICB0aGlzLiNyZXNsaWNlKGwgKyBuKTtcbiAgICAgIHJldHVybiBsO1xuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAjcmVzbGljZShsZW46IG51bWJlcikge1xuICAgIGFzc2VydChsZW4gPD0gdGhpcy4jYnVmLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICB0aGlzLiNidWYgPSBuZXcgVWludDhBcnJheSh0aGlzLiNidWYuYnVmZmVyLCAwLCBsZW4pO1xuICB9XG5cbiAgLyoqIFJlYWRzIHRoZSBuZXh0IGBwLmxlbmd0aGAgYnl0ZXMgZnJvbSB0aGUgYnVmZmVyIG9yIHVudGlsIHRoZSBidWZmZXIgaXNcbiAgICogZHJhaW5lZC4gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuIElmIHRoZSBidWZmZXIgaGFzIG5vIGRhdGEgdG9cbiAgICogcmV0dXJuLCB0aGUgcmV0dXJuIGlzIEVPRiAoYG51bGxgKS4gKi9cbiAgcmVhZFN5bmMocDogVWludDhBcnJheSk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh0aGlzLmVtcHR5KCkpIHtcbiAgICAgIC8vIEJ1ZmZlciBpcyBlbXB0eSwgcmVzZXQgdG8gcmVjb3ZlciBzcGFjZS5cbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgIGlmIChwLmJ5dGVMZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gdGhpcyBlZGdlIGNhc2UgaXMgdGVzdGVkIGluICdidWZmZXJSZWFkRW1wdHlBdEVPRicgdGVzdFxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBucmVhZCA9IGNvcHkodGhpcy4jYnVmLnN1YmFycmF5KHRoaXMuI29mZiksIHApO1xuICAgIHRoaXMuI29mZiArPSBucmVhZDtcbiAgICByZXR1cm4gbnJlYWQ7XG4gIH1cblxuICAvKiogUmVhZHMgdGhlIG5leHQgYHAubGVuZ3RoYCBieXRlcyBmcm9tIHRoZSBidWZmZXIgb3IgdW50aWwgdGhlIGJ1ZmZlciBpc1xuICAgKiBkcmFpbmVkLiBSZXNvbHZlcyB0byB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuIElmIHRoZSBidWZmZXIgaGFzIG5vXG4gICAqIGRhdGEgdG8gcmV0dXJuLCByZXNvbHZlcyB0byBFT0YgKGBudWxsYCkuXG4gICAqXG4gICAqIE5PVEU6IFRoaXMgbWV0aG9kcyByZWFkcyBieXRlcyBzeW5jaHJvbm91c2x5OyBpdCdzIHByb3ZpZGVkIGZvclxuICAgKiBjb21wYXRpYmlsaXR5IHdpdGggYFJlYWRlcmAgaW50ZXJmYWNlcy5cbiAgICovXG4gIHJlYWQocDogVWludDhBcnJheSk6IFByb21pc2U8bnVtYmVyIHwgbnVsbD4ge1xuICAgIGNvbnN0IHJyID0gdGhpcy5yZWFkU3luYyhwKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJyKTtcbiAgfVxuXG4gIHdyaXRlU3luYyhwOiBVaW50OEFycmF5KTogbnVtYmVyIHtcbiAgICBjb25zdCBtID0gdGhpcy4jZ3JvdyhwLmJ5dGVMZW5ndGgpO1xuICAgIHJldHVybiBjb3B5KHAsIHRoaXMuI2J1ZiwgbSk7XG4gIH1cblxuICAvKiogTk9URTogVGhpcyBtZXRob2RzIHdyaXRlcyBieXRlcyBzeW5jaHJvbm91c2x5OyBpdCdzIHByb3ZpZGVkIGZvclxuICAgKiBjb21wYXRpYmlsaXR5IHdpdGggYFdyaXRlcmAgaW50ZXJmYWNlLiAqL1xuICB3cml0ZShwOiBVaW50OEFycmF5KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBuID0gdGhpcy53cml0ZVN5bmMocCk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuKTtcbiAgfVxuXG4gICNncm93KG46IG51bWJlcikge1xuICAgIGNvbnN0IG0gPSB0aGlzLmxlbmd0aDtcbiAgICAvLyBJZiBidWZmZXIgaXMgZW1wdHksIHJlc2V0IHRvIHJlY292ZXIgc3BhY2UuXG4gICAgaWYgKG0gPT09IDAgJiYgdGhpcy4jb2ZmICE9PSAwKSB7XG4gICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfVxuICAgIC8vIEZhc3Q6IFRyeSB0byBncm93IGJ5IG1lYW5zIG9mIGEgcmVzbGljZS5cbiAgICBjb25zdCBpID0gdGhpcy4jdHJ5R3Jvd0J5UmVzbGljZShuKTtcbiAgICBpZiAoaSA+PSAwKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gICAgY29uc3QgYyA9IHRoaXMuY2FwYWNpdHk7XG4gICAgaWYgKG4gPD0gTWF0aC5mbG9vcihjIC8gMikgLSBtKSB7XG4gICAgICAvLyBXZSBjYW4gc2xpZGUgdGhpbmdzIGRvd24gaW5zdGVhZCBvZiBhbGxvY2F0aW5nIGEgbmV3XG4gICAgICAvLyBBcnJheUJ1ZmZlci4gV2Ugb25seSBuZWVkIG0rbiA8PSBjIHRvIHNsaWRlLCBidXRcbiAgICAgIC8vIHdlIGluc3RlYWQgbGV0IGNhcGFjaXR5IGdldCB0d2ljZSBhcyBsYXJnZSBzbyB3ZVxuICAgICAgLy8gZG9uJ3Qgc3BlbmQgYWxsIG91ciB0aW1lIGNvcHlpbmcuXG4gICAgICBjb3B5KHRoaXMuI2J1Zi5zdWJhcnJheSh0aGlzLiNvZmYpLCB0aGlzLiNidWYpO1xuICAgIH0gZWxzZSBpZiAoYyArIG4gPiBNQVhfU0laRSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIGJ1ZmZlciBjYW5ub3QgYmUgZ3Jvd24gYmV5b25kIHRoZSBtYXhpbXVtIHNpemUuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOb3QgZW5vdWdoIHNwYWNlIGFueXdoZXJlLCB3ZSBuZWVkIHRvIGFsbG9jYXRlLlxuICAgICAgY29uc3QgYnVmID0gbmV3IFVpbnQ4QXJyYXkoTWF0aC5taW4oMiAqIGMgKyBuLCBNQVhfU0laRSkpO1xuICAgICAgY29weSh0aGlzLiNidWYuc3ViYXJyYXkodGhpcy4jb2ZmKSwgYnVmKTtcbiAgICAgIHRoaXMuI2J1ZiA9IGJ1ZjtcbiAgICB9XG4gICAgLy8gUmVzdG9yZSB0aGlzLiNvZmYgYW5kIGxlbih0aGlzLiNidWYpLlxuICAgIHRoaXMuI29mZiA9IDA7XG4gICAgdGhpcy4jcmVzbGljZShNYXRoLm1pbihtICsgbiwgTUFYX1NJWkUpKTtcbiAgICByZXR1cm4gbTtcbiAgfVxuXG4gIC8qKiBHcm93cyB0aGUgYnVmZmVyJ3MgY2FwYWNpdHksIGlmIG5lY2Vzc2FyeSwgdG8gZ3VhcmFudGVlIHNwYWNlIGZvclxuICAgKiBhbm90aGVyIGBuYCBieXRlcy4gQWZ0ZXIgYC5ncm93KG4pYCwgYXQgbGVhc3QgYG5gIGJ5dGVzIGNhbiBiZSB3cml0dGVuIHRvXG4gICAqIHRoZSBidWZmZXIgd2l0aG91dCBhbm90aGVyIGFsbG9jYXRpb24uIElmIGBuYCBpcyBuZWdhdGl2ZSwgYC5ncm93KClgIHdpbGxcbiAgICogdGhyb3cuIElmIHRoZSBidWZmZXIgY2FuJ3QgZ3JvdyBpdCB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgKlxuICAgKiBCYXNlZCBvbiBHbyBMYW5nJ3NcbiAgICogW0J1ZmZlci5Hcm93XShodHRwczovL2dvbGFuZy5vcmcvcGtnL2J5dGVzLyNCdWZmZXIuR3JvdykuICovXG4gIGdyb3cobjogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKG4gPCAwKSB7XG4gICAgICB0aHJvdyBFcnJvcihcIkJ1ZmZlci5ncm93OiBuZWdhdGl2ZSBjb3VudFwiKTtcbiAgICB9XG4gICAgY29uc3QgbSA9IHRoaXMuI2dyb3cobik7XG4gICAgdGhpcy4jcmVzbGljZShtKTtcbiAgfVxuXG4gIC8qKiBSZWFkcyBkYXRhIGZyb20gYHJgIHVudGlsIEVPRiAoYG51bGxgKSBhbmQgYXBwZW5kcyBpdCB0byB0aGUgYnVmZmVyLFxuICAgKiBncm93aW5nIHRoZSBidWZmZXIgYXMgbmVlZGVkLiBJdCByZXNvbHZlcyB0byB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuXG4gICAqIElmIHRoZSBidWZmZXIgYmVjb21lcyB0b28gbGFyZ2UsIGAucmVhZEZyb20oKWAgd2lsbCByZWplY3Qgd2l0aCBhbiBlcnJvci5cbiAgICpcbiAgICogQmFzZWQgb24gR28gTGFuZydzXG4gICAqIFtCdWZmZXIuUmVhZEZyb21dKGh0dHBzOi8vZ29sYW5nLm9yZy9wa2cvYnl0ZXMvI0J1ZmZlci5SZWFkRnJvbSkuICovXG4gIGFzeW5jIHJlYWRGcm9tKHI6IFJlYWRlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgbGV0IG4gPSAwO1xuICAgIGNvbnN0IHRtcCA9IG5ldyBVaW50OEFycmF5KE1JTl9SRUFEKTtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3Qgc2hvdWxkR3JvdyA9IHRoaXMuY2FwYWNpdHkgLSB0aGlzLmxlbmd0aCA8IE1JTl9SRUFEO1xuICAgICAgLy8gcmVhZCBpbnRvIHRtcCBidWZmZXIgaWYgdGhlcmUncyBub3QgZW5vdWdoIHJvb21cbiAgICAgIC8vIG90aGVyd2lzZSByZWFkIGRpcmVjdGx5IGludG8gdGhlIGludGVybmFsIGJ1ZmZlclxuICAgICAgY29uc3QgYnVmID0gc2hvdWxkR3Jvd1xuICAgICAgICA/IHRtcFxuICAgICAgICA6IG5ldyBVaW50OEFycmF5KHRoaXMuI2J1Zi5idWZmZXIsIHRoaXMubGVuZ3RoKTtcblxuICAgICAgY29uc3QgbnJlYWQgPSBhd2FpdCByLnJlYWQoYnVmKTtcbiAgICAgIGlmIChucmVhZCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbjtcbiAgICAgIH1cblxuICAgICAgLy8gd3JpdGUgd2lsbCBncm93IGlmIG5lZWRlZFxuICAgICAgaWYgKHNob3VsZEdyb3cpIHRoaXMud3JpdGVTeW5jKGJ1Zi5zdWJhcnJheSgwLCBucmVhZCkpO1xuICAgICAgZWxzZSB0aGlzLiNyZXNsaWNlKHRoaXMubGVuZ3RoICsgbnJlYWQpO1xuXG4gICAgICBuICs9IG5yZWFkO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZWFkcyBkYXRhIGZyb20gYHJgIHVudGlsIEVPRiAoYG51bGxgKSBhbmQgYXBwZW5kcyBpdCB0byB0aGUgYnVmZmVyLFxuICAgKiBncm93aW5nIHRoZSBidWZmZXIgYXMgbmVlZGVkLiBJdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gSWYgdGhlXG4gICAqIGJ1ZmZlciBiZWNvbWVzIHRvbyBsYXJnZSwgYC5yZWFkRnJvbVN5bmMoKWAgd2lsbCB0aHJvdyBhbiBlcnJvci5cbiAgICpcbiAgICogQmFzZWQgb24gR28gTGFuZydzXG4gICAqIFtCdWZmZXIuUmVhZEZyb21dKGh0dHBzOi8vZ29sYW5nLm9yZy9wa2cvYnl0ZXMvI0J1ZmZlci5SZWFkRnJvbSkuICovXG4gIHJlYWRGcm9tU3luYyhyOiBSZWFkZXJTeW5jKTogbnVtYmVyIHtcbiAgICBsZXQgbiA9IDA7XG4gICAgY29uc3QgdG1wID0gbmV3IFVpbnQ4QXJyYXkoTUlOX1JFQUQpO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCBzaG91bGRHcm93ID0gdGhpcy5jYXBhY2l0eSAtIHRoaXMubGVuZ3RoIDwgTUlOX1JFQUQ7XG4gICAgICAvLyByZWFkIGludG8gdG1wIGJ1ZmZlciBpZiB0aGVyZSdzIG5vdCBlbm91Z2ggcm9vbVxuICAgICAgLy8gb3RoZXJ3aXNlIHJlYWQgZGlyZWN0bHkgaW50byB0aGUgaW50ZXJuYWwgYnVmZmVyXG4gICAgICBjb25zdCBidWYgPSBzaG91bGRHcm93XG4gICAgICAgID8gdG1wXG4gICAgICAgIDogbmV3IFVpbnQ4QXJyYXkodGhpcy4jYnVmLmJ1ZmZlciwgdGhpcy5sZW5ndGgpO1xuXG4gICAgICBjb25zdCBucmVhZCA9IHIucmVhZFN5bmMoYnVmKTtcbiAgICAgIGlmIChucmVhZCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbjtcbiAgICAgIH1cblxuICAgICAgLy8gd3JpdGUgd2lsbCBncm93IGlmIG5lZWRlZFxuICAgICAgaWYgKHNob3VsZEdyb3cpIHRoaXMud3JpdGVTeW5jKGJ1Zi5zdWJhcnJheSgwLCBucmVhZCkpO1xuICAgICAgZWxzZSB0aGlzLiNyZXNsaWNlKHRoaXMubGVuZ3RoICsgbnJlYWQpO1xuXG4gICAgICBuICs9IG5yZWFkO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBERUZBVUxUX0JVRl9TSVpFID0gNDA5NjtcbmNvbnN0IE1JTl9CVUZfU0laRSA9IDE2O1xuY29uc3QgTUFYX0NPTlNFQ1VUSVZFX0VNUFRZX1JFQURTID0gMTAwO1xuY29uc3QgQ1IgPSBcIlxcclwiLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBMRiA9IFwiXFxuXCIuY2hhckNvZGVBdCgwKTtcblxuZXhwb3J0IGNsYXNzIEJ1ZmZlckZ1bGxFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgb3ZlcnJpZGUgbmFtZSA9IFwiQnVmZmVyRnVsbEVycm9yXCI7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXJ0aWFsOiBVaW50OEFycmF5KSB7XG4gICAgc3VwZXIoXCJCdWZmZXIgZnVsbFwiKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGFydGlhbFJlYWRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgb3ZlcnJpZGUgbmFtZSA9IFwiUGFydGlhbFJlYWRFcnJvclwiO1xuICBwYXJ0aWFsPzogVWludDhBcnJheTtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJFbmNvdW50ZXJlZCBVbmV4cGVjdGVkRW9mLCBkYXRhIG9ubHkgcGFydGlhbGx5IHJlYWRcIik7XG4gIH1cbn1cblxuLyoqIFJlc3VsdCB0eXBlIHJldHVybmVkIGJ5IG9mIEJ1ZlJlYWRlci5yZWFkTGluZSgpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWFkTGluZVJlc3VsdCB7XG4gIGxpbmU6IFVpbnQ4QXJyYXk7XG4gIG1vcmU6IGJvb2xlYW47XG59XG5cbi8qKiBCdWZSZWFkZXIgaW1wbGVtZW50cyBidWZmZXJpbmcgZm9yIGEgUmVhZGVyIG9iamVjdC4gKi9cbmV4cG9ydCBjbGFzcyBCdWZSZWFkZXIgaW1wbGVtZW50cyBSZWFkZXIge1xuICAjYnVmITogVWludDhBcnJheTtcbiAgI3JkITogUmVhZGVyOyAvLyBSZWFkZXIgcHJvdmlkZWQgYnkgY2FsbGVyLlxuICAjciA9IDA7IC8vIGJ1ZiByZWFkIHBvc2l0aW9uLlxuICAjdyA9IDA7IC8vIGJ1ZiB3cml0ZSBwb3NpdGlvbi5cbiAgI2VvZiA9IGZhbHNlO1xuICAvLyBwcml2YXRlIGxhc3RCeXRlOiBudW1iZXI7XG4gIC8vIHByaXZhdGUgbGFzdENoYXJTaXplOiBudW1iZXI7XG5cbiAgLyoqIHJldHVybiBuZXcgQnVmUmVhZGVyIHVubGVzcyByIGlzIEJ1ZlJlYWRlciAqL1xuICBzdGF0aWMgY3JlYXRlKHI6IFJlYWRlciwgc2l6ZTogbnVtYmVyID0gREVGQVVMVF9CVUZfU0laRSk6IEJ1ZlJlYWRlciB7XG4gICAgcmV0dXJuIHIgaW5zdGFuY2VvZiBCdWZSZWFkZXIgPyByIDogbmV3IEJ1ZlJlYWRlcihyLCBzaXplKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHJkOiBSZWFkZXIsIHNpemU6IG51bWJlciA9IERFRkFVTFRfQlVGX1NJWkUpIHtcbiAgICBpZiAoc2l6ZSA8IE1JTl9CVUZfU0laRSkge1xuICAgICAgc2l6ZSA9IE1JTl9CVUZfU0laRTtcbiAgICB9XG4gICAgdGhpcy4jcmVzZXQobmV3IFVpbnQ4QXJyYXkoc2l6ZSksIHJkKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBpbiBieXRlcy4gKi9cbiAgc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNidWYuYnl0ZUxlbmd0aDtcbiAgfVxuXG4gIGJ1ZmZlcmVkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI3cgLSB0aGlzLiNyO1xuICB9XG5cbiAgLy8gUmVhZHMgYSBuZXcgY2h1bmsgaW50byB0aGUgYnVmZmVyLlxuICAjZmlsbCA9IGFzeW5jICgpID0+IHtcbiAgICAvLyBTbGlkZSBleGlzdGluZyBkYXRhIHRvIGJlZ2lubmluZy5cbiAgICBpZiAodGhpcy4jciA+IDApIHtcbiAgICAgIHRoaXMuI2J1Zi5jb3B5V2l0aGluKDAsIHRoaXMuI3IsIHRoaXMuI3cpO1xuICAgICAgdGhpcy4jdyAtPSB0aGlzLiNyO1xuICAgICAgdGhpcy4jciA9IDA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuI3cgPj0gdGhpcy4jYnVmLmJ5dGVMZW5ndGgpIHtcbiAgICAgIHRocm93IEVycm9yKFwiYnVmaW86IHRyaWVkIHRvIGZpbGwgZnVsbCBidWZmZXJcIik7XG4gICAgfVxuXG4gICAgLy8gUmVhZCBuZXcgZGF0YTogdHJ5IGEgbGltaXRlZCBudW1iZXIgb2YgdGltZXMuXG4gICAgZm9yIChsZXQgaSA9IE1BWF9DT05TRUNVVElWRV9FTVBUWV9SRUFEUzsgaSA+IDA7IGktLSkge1xuICAgICAgY29uc3QgcnIgPSBhd2FpdCB0aGlzLiNyZC5yZWFkKHRoaXMuI2J1Zi5zdWJhcnJheSh0aGlzLiN3KSk7XG4gICAgICBpZiAocnIgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy4jZW9mID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KHJyID49IDAsIFwibmVnYXRpdmUgcmVhZFwiKTtcbiAgICAgIHRoaXMuI3cgKz0gcnI7XG4gICAgICBpZiAocnIgPiAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgTm8gcHJvZ3Jlc3MgYWZ0ZXIgJHtNQVhfQ09OU0VDVVRJVkVfRU1QVFlfUkVBRFN9IHJlYWQoKSBjYWxsc2AsXG4gICAgKTtcbiAgfTtcblxuICAvKiogRGlzY2FyZHMgYW55IGJ1ZmZlcmVkIGRhdGEsIHJlc2V0cyBhbGwgc3RhdGUsIGFuZCBzd2l0Y2hlc1xuICAgKiB0aGUgYnVmZmVyZWQgcmVhZGVyIHRvIHJlYWQgZnJvbSByLlxuICAgKi9cbiAgcmVzZXQocjogUmVhZGVyKTogdm9pZCB7XG4gICAgdGhpcy4jcmVzZXQodGhpcy4jYnVmLCByKTtcbiAgfVxuXG4gICNyZXNldCA9IChidWY6IFVpbnQ4QXJyYXksIHJkOiBSZWFkZXIpOiB2b2lkID0+IHtcbiAgICB0aGlzLiNidWYgPSBidWY7XG4gICAgdGhpcy4jcmQgPSByZDtcbiAgICB0aGlzLiNlb2YgPSBmYWxzZTtcbiAgICAvLyB0aGlzLmxhc3RCeXRlID0gLTE7XG4gICAgLy8gdGhpcy5sYXN0Q2hhclNpemUgPSAtMTtcbiAgfTtcblxuICAvKiogcmVhZHMgZGF0YSBpbnRvIHAuXG4gICAqIEl0IHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkIGludG8gcC5cbiAgICogVGhlIGJ5dGVzIGFyZSB0YWtlbiBmcm9tIGF0IG1vc3Qgb25lIFJlYWQgb24gdGhlIHVuZGVybHlpbmcgUmVhZGVyLFxuICAgKiBoZW5jZSBuIG1heSBiZSBsZXNzIHRoYW4gbGVuKHApLlxuICAgKiBUbyByZWFkIGV4YWN0bHkgbGVuKHApIGJ5dGVzLCB1c2UgaW8uUmVhZEZ1bGwoYiwgcCkuXG4gICAqL1xuICBhc3luYyByZWFkKHA6IFVpbnQ4QXJyYXkpOiBQcm9taXNlPG51bWJlciB8IG51bGw+IHtcbiAgICBsZXQgcnI6IG51bWJlciB8IG51bGwgPSBwLmJ5dGVMZW5ndGg7XG4gICAgaWYgKHAuYnl0ZUxlbmd0aCA9PT0gMCkgcmV0dXJuIHJyO1xuXG4gICAgaWYgKHRoaXMuI3IgPT09IHRoaXMuI3cpIHtcbiAgICAgIGlmIChwLmJ5dGVMZW5ndGggPj0gdGhpcy4jYnVmLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgLy8gTGFyZ2UgcmVhZCwgZW1wdHkgYnVmZmVyLlxuICAgICAgICAvLyBSZWFkIGRpcmVjdGx5IGludG8gcCB0byBhdm9pZCBjb3B5LlxuICAgICAgICBjb25zdCByciA9IGF3YWl0IHRoaXMuI3JkLnJlYWQocCk7XG4gICAgICAgIGNvbnN0IG5yZWFkID0gcnIgPz8gMDtcbiAgICAgICAgYXNzZXJ0KG5yZWFkID49IDAsIFwibmVnYXRpdmUgcmVhZFwiKTtcbiAgICAgICAgLy8gaWYgKHJyLm5yZWFkID4gMCkge1xuICAgICAgICAvLyAgIHRoaXMubGFzdEJ5dGUgPSBwW3JyLm5yZWFkIC0gMV07XG4gICAgICAgIC8vICAgdGhpcy5sYXN0Q2hhclNpemUgPSAtMTtcbiAgICAgICAgLy8gfVxuICAgICAgICByZXR1cm4gcnI7XG4gICAgICB9XG5cbiAgICAgIC8vIE9uZSByZWFkLlxuICAgICAgLy8gRG8gbm90IHVzZSB0aGlzLmZpbGwsIHdoaWNoIHdpbGwgbG9vcC5cbiAgICAgIHRoaXMuI3IgPSAwO1xuICAgICAgdGhpcy4jdyA9IDA7XG4gICAgICByciA9IGF3YWl0IHRoaXMuI3JkLnJlYWQodGhpcy4jYnVmKTtcbiAgICAgIGlmIChyciA9PT0gMCB8fCByciA9PT0gbnVsbCkgcmV0dXJuIHJyO1xuICAgICAgYXNzZXJ0KHJyID49IDAsIFwibmVnYXRpdmUgcmVhZFwiKTtcbiAgICAgIHRoaXMuI3cgKz0gcnI7XG4gICAgfVxuXG4gICAgLy8gY29weSBhcyBtdWNoIGFzIHdlIGNhblxuICAgIGNvbnN0IGNvcGllZCA9IGNvcHkodGhpcy4jYnVmLnN1YmFycmF5KHRoaXMuI3IsIHRoaXMuI3cpLCBwLCAwKTtcbiAgICB0aGlzLiNyICs9IGNvcGllZDtcbiAgICAvLyB0aGlzLmxhc3RCeXRlID0gdGhpcy5idWZbdGhpcy5yIC0gMV07XG4gICAgLy8gdGhpcy5sYXN0Q2hhclNpemUgPSAtMTtcbiAgICByZXR1cm4gY29waWVkO1xuICB9XG5cbiAgLyoqIHJlYWRzIGV4YWN0bHkgYHAubGVuZ3RoYCBieXRlcyBpbnRvIGBwYC5cbiAgICpcbiAgICogSWYgc3VjY2Vzc2Z1bCwgYHBgIGlzIHJldHVybmVkLlxuICAgKlxuICAgKiBJZiB0aGUgZW5kIG9mIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBoYXMgYmVlbiByZWFjaGVkLCBhbmQgdGhlcmUgYXJlIG5vIG1vcmVcbiAgICogYnl0ZXMgYXZhaWxhYmxlIGluIHRoZSBidWZmZXIsIGByZWFkRnVsbCgpYCByZXR1cm5zIGBudWxsYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBBbiBlcnJvciBpcyB0aHJvd24gaWYgc29tZSBieXRlcyBjb3VsZCBiZSByZWFkLCBidXQgbm90IGVub3VnaCB0byBmaWxsIGBwYFxuICAgKiBlbnRpcmVseSBiZWZvcmUgdGhlIHVuZGVybHlpbmcgc3RyZWFtIHJlcG9ydGVkIGFuIGVycm9yIG9yIEVPRi4gQW55IGVycm9yXG4gICAqIHRocm93biB3aWxsIGhhdmUgYSBgcGFydGlhbGAgcHJvcGVydHkgdGhhdCBpbmRpY2F0ZXMgdGhlIHNsaWNlIG9mIHRoZVxuICAgKiBidWZmZXIgdGhhdCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZmlsbGVkIHdpdGggZGF0YS5cbiAgICpcbiAgICogUG9ydGVkIGZyb20gaHR0cHM6Ly9nb2xhbmcub3JnL3BrZy9pby8jUmVhZEZ1bGxcbiAgICovXG4gIGFzeW5jIHJlYWRGdWxsKHA6IFVpbnQ4QXJyYXkpOiBQcm9taXNlPFVpbnQ4QXJyYXkgfCBudWxsPiB7XG4gICAgbGV0IGJ5dGVzUmVhZCA9IDA7XG4gICAgd2hpbGUgKGJ5dGVzUmVhZCA8IHAubGVuZ3RoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByciA9IGF3YWl0IHRoaXMucmVhZChwLnN1YmFycmF5KGJ5dGVzUmVhZCkpO1xuICAgICAgICBpZiAocnIgPT09IG51bGwpIHtcbiAgICAgICAgICBpZiAoYnl0ZXNSZWFkID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnRpYWxSZWFkRXJyb3IoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnl0ZXNSZWFkICs9IHJyO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBQYXJ0aWFsUmVhZEVycm9yKSB7XG4gICAgICAgICAgZXJyLnBhcnRpYWwgPSBwLnN1YmFycmF5KDAsIGJ5dGVzUmVhZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBjb25zdCBlID0gbmV3IFBhcnRpYWxSZWFkRXJyb3IoKTtcbiAgICAgICAgICBlLnBhcnRpYWwgPSBwLnN1YmFycmF5KDAsIGJ5dGVzUmVhZCk7XG4gICAgICAgICAgZS5zdGFjayA9IGVyci5zdGFjaztcbiAgICAgICAgICBlLm1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICBlLmNhdXNlID0gZXJyLmNhdXNlO1xuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIG5leHQgYnl0ZSBbMCwgMjU1XSBvciBgbnVsbGAuICovXG4gIGFzeW5jIHJlYWRCeXRlKCk6IFByb21pc2U8bnVtYmVyIHwgbnVsbD4ge1xuICAgIHdoaWxlICh0aGlzLiNyID09PSB0aGlzLiN3KSB7XG4gICAgICBpZiAodGhpcy4jZW9mKSByZXR1cm4gbnVsbDtcbiAgICAgIGF3YWl0IHRoaXMuI2ZpbGwoKTsgLy8gYnVmZmVyIGlzIGVtcHR5LlxuICAgIH1cbiAgICBjb25zdCBjID0gdGhpcy4jYnVmW3RoaXMuI3JdO1xuICAgIHRoaXMuI3IrKztcbiAgICAvLyB0aGlzLmxhc3RCeXRlID0gYztcbiAgICByZXR1cm4gYztcbiAgfVxuXG4gIC8qKiByZWFkU3RyaW5nKCkgcmVhZHMgdW50aWwgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgZGVsaW0gaW4gdGhlIGlucHV0LFxuICAgKiByZXR1cm5pbmcgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgZGF0YSB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZSBkZWxpbWl0ZXIuXG4gICAqIElmIFJlYWRTdHJpbmcgZW5jb3VudGVycyBhbiBlcnJvciBiZWZvcmUgZmluZGluZyBhIGRlbGltaXRlcixcbiAgICogaXQgcmV0dXJucyB0aGUgZGF0YSByZWFkIGJlZm9yZSB0aGUgZXJyb3IgYW5kIHRoZSBlcnJvciBpdHNlbGZcbiAgICogKG9mdGVuIGBudWxsYCkuXG4gICAqIFJlYWRTdHJpbmcgcmV0dXJucyBlcnIgIT0gbmlsIGlmIGFuZCBvbmx5IGlmIHRoZSByZXR1cm5lZCBkYXRhIGRvZXMgbm90IGVuZFxuICAgKiBpbiBkZWxpbS5cbiAgICogRm9yIHNpbXBsZSB1c2VzLCBhIFNjYW5uZXIgbWF5IGJlIG1vcmUgY29udmVuaWVudC5cbiAgICovXG4gIGFzeW5jIHJlYWRTdHJpbmcoZGVsaW06IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGlmIChkZWxpbS5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRlbGltaXRlciBzaG91bGQgYmUgYSBzaW5nbGUgY2hhcmFjdGVyXCIpO1xuICAgIH1cbiAgICBjb25zdCBidWZmZXIgPSBhd2FpdCB0aGlzLnJlYWRTbGljZShkZWxpbS5jaGFyQ29kZUF0KDApKTtcbiAgICBpZiAoYnVmZmVyID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGJ1ZmZlcik7XG4gIH1cblxuICAvKiogYHJlYWRMaW5lKClgIGlzIGEgbG93LWxldmVsIGxpbmUtcmVhZGluZyBwcmltaXRpdmUuIE1vc3QgY2FsbGVycyBzaG91bGRcbiAgICogdXNlIGByZWFkU3RyaW5nKCdcXG4nKWAgaW5zdGVhZCBvciB1c2UgYSBTY2FubmVyLlxuICAgKlxuICAgKiBgcmVhZExpbmUoKWAgdHJpZXMgdG8gcmV0dXJuIGEgc2luZ2xlIGxpbmUsIG5vdCBpbmNsdWRpbmcgdGhlIGVuZC1vZi1saW5lXG4gICAqIGJ5dGVzLiBJZiB0aGUgbGluZSB3YXMgdG9vIGxvbmcgZm9yIHRoZSBidWZmZXIgdGhlbiBgbW9yZWAgaXMgc2V0IGFuZCB0aGVcbiAgICogYmVnaW5uaW5nIG9mIHRoZSBsaW5lIGlzIHJldHVybmVkLiBUaGUgcmVzdCBvZiB0aGUgbGluZSB3aWxsIGJlIHJldHVybmVkXG4gICAqIGZyb20gZnV0dXJlIGNhbGxzLiBgbW9yZWAgd2lsbCBiZSBmYWxzZSB3aGVuIHJldHVybmluZyB0aGUgbGFzdCBmcmFnbWVudFxuICAgKiBvZiB0aGUgbGluZS4gVGhlIHJldHVybmVkIGJ1ZmZlciBpcyBvbmx5IHZhbGlkIHVudGlsIHRoZSBuZXh0IGNhbGwgdG9cbiAgICogYHJlYWRMaW5lKClgLlxuICAgKlxuICAgKiBUaGUgdGV4dCByZXR1cm5lZCBmcm9tIFJlYWRMaW5lIGRvZXMgbm90IGluY2x1ZGUgdGhlIGxpbmUgZW5kIChcIlxcclxcblwiIG9yXG4gICAqIFwiXFxuXCIpLlxuICAgKlxuICAgKiBXaGVuIHRoZSBlbmQgb2YgdGhlIHVuZGVybHlpbmcgc3RyZWFtIGlzIHJlYWNoZWQsIHRoZSBmaW5hbCBieXRlcyBpbiB0aGVcbiAgICogc3RyZWFtIGFyZSByZXR1cm5lZC4gTm8gaW5kaWNhdGlvbiBvciBlcnJvciBpcyBnaXZlbiBpZiB0aGUgaW5wdXQgZW5kc1xuICAgKiB3aXRob3V0IGEgZmluYWwgbGluZSBlbmQuIFdoZW4gdGhlcmUgYXJlIG5vIG1vcmUgdHJhaWxpbmcgYnl0ZXMgdG8gcmVhZCxcbiAgICogYHJlYWRMaW5lKClgIHJldHVybnMgYG51bGxgLlxuICAgKlxuICAgKiBDYWxsaW5nIGB1bnJlYWRCeXRlKClgIGFmdGVyIGByZWFkTGluZSgpYCB3aWxsIGFsd2F5cyB1bnJlYWQgdGhlIGxhc3QgYnl0ZVxuICAgKiByZWFkIChwb3NzaWJseSBhIGNoYXJhY3RlciBiZWxvbmdpbmcgdG8gdGhlIGxpbmUgZW5kKSBldmVuIGlmIHRoYXQgYnl0ZSBpc1xuICAgKiBub3QgcGFydCBvZiB0aGUgbGluZSByZXR1cm5lZCBieSBgcmVhZExpbmUoKWAuXG4gICAqL1xuICBhc3luYyByZWFkTGluZSgpOiBQcm9taXNlPFJlYWRMaW5lUmVzdWx0IHwgbnVsbD4ge1xuICAgIGxldCBsaW5lOiBVaW50OEFycmF5IHwgbnVsbCA9IG51bGw7XG5cbiAgICB0cnkge1xuICAgICAgbGluZSA9IGF3YWl0IHRoaXMucmVhZFNsaWNlKExGKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5CYWRSZXNvdXJjZSkge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgICBsZXQgcGFydGlhbDtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBQYXJ0aWFsUmVhZEVycm9yKSB7XG4gICAgICAgIHBhcnRpYWwgPSBlcnIucGFydGlhbDtcbiAgICAgICAgYXNzZXJ0KFxuICAgICAgICAgIHBhcnRpYWwgaW5zdGFuY2VvZiBVaW50OEFycmF5LFxuICAgICAgICAgIFwiYnVmaW86IGNhdWdodCBlcnJvciBmcm9tIGByZWFkU2xpY2UoKWAgd2l0aG91dCBgcGFydGlhbGAgcHJvcGVydHlcIixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gRG9uJ3QgdGhyb3cgaWYgYHJlYWRTbGljZSgpYCBmYWlsZWQgd2l0aCBgQnVmZmVyRnVsbEVycm9yYCwgaW5zdGVhZCB3ZVxuICAgICAgLy8ganVzdCByZXR1cm4gd2hhdGV2ZXIgaXMgYXZhaWxhYmxlIGFuZCBzZXQgdGhlIGBtb3JlYCBmbGFnLlxuICAgICAgaWYgKCEoZXJyIGluc3RhbmNlb2YgQnVmZmVyRnVsbEVycm9yKSkge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG5cbiAgICAgIHBhcnRpYWwgPSBlcnIucGFydGlhbDtcblxuICAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIFwiXFxyXFxuXCIgc3RyYWRkbGVzIHRoZSBidWZmZXIuXG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLiNlb2YgJiYgcGFydGlhbCAmJlxuICAgICAgICBwYXJ0aWFsLmJ5dGVMZW5ndGggPiAwICYmXG4gICAgICAgIHBhcnRpYWxbcGFydGlhbC5ieXRlTGVuZ3RoIC0gMV0gPT09IENSXG4gICAgICApIHtcbiAgICAgICAgLy8gUHV0IHRoZSAnXFxyJyBiYWNrIG9uIGJ1ZiBhbmQgZHJvcCBpdCBmcm9tIGxpbmUuXG4gICAgICAgIC8vIExldCB0aGUgbmV4dCBjYWxsIHRvIFJlYWRMaW5lIGNoZWNrIGZvciBcIlxcclxcblwiLlxuICAgICAgICBhc3NlcnQodGhpcy4jciA+IDAsIFwiYnVmaW86IHRyaWVkIHRvIHJld2luZCBwYXN0IHN0YXJ0IG9mIGJ1ZmZlclwiKTtcbiAgICAgICAgdGhpcy4jci0tO1xuICAgICAgICBwYXJ0aWFsID0gcGFydGlhbC5zdWJhcnJheSgwLCBwYXJ0aWFsLmJ5dGVMZW5ndGggLSAxKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcnRpYWwpIHtcbiAgICAgICAgcmV0dXJuIHsgbGluZTogcGFydGlhbCwgbW9yZTogIXRoaXMuI2VvZiB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChsaW5lID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAobGluZS5ieXRlTGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4geyBsaW5lLCBtb3JlOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmIChsaW5lW2xpbmUuYnl0ZUxlbmd0aCAtIDFdID09IExGKSB7XG4gICAgICBsZXQgZHJvcCA9IDE7XG4gICAgICBpZiAobGluZS5ieXRlTGVuZ3RoID4gMSAmJiBsaW5lW2xpbmUuYnl0ZUxlbmd0aCAtIDJdID09PSBDUikge1xuICAgICAgICBkcm9wID0gMjtcbiAgICAgIH1cbiAgICAgIGxpbmUgPSBsaW5lLnN1YmFycmF5KDAsIGxpbmUuYnl0ZUxlbmd0aCAtIGRyb3ApO1xuICAgIH1cbiAgICByZXR1cm4geyBsaW5lLCBtb3JlOiBmYWxzZSB9O1xuICB9XG5cbiAgLyoqIGByZWFkU2xpY2UoKWAgcmVhZHMgdW50aWwgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYGRlbGltYCBpbiB0aGUgaW5wdXQsXG4gICAqIHJldHVybmluZyBhIHNsaWNlIHBvaW50aW5nIGF0IHRoZSBieXRlcyBpbiB0aGUgYnVmZmVyLiBUaGUgYnl0ZXMgc3RvcFxuICAgKiBiZWluZyB2YWxpZCBhdCB0aGUgbmV4dCByZWFkLlxuICAgKlxuICAgKiBJZiBgcmVhZFNsaWNlKClgIGVuY291bnRlcnMgYW4gZXJyb3IgYmVmb3JlIGZpbmRpbmcgYSBkZWxpbWl0ZXIsIG9yIHRoZVxuICAgKiBidWZmZXIgZmlsbHMgd2l0aG91dCBmaW5kaW5nIGEgZGVsaW1pdGVyLCBpdCB0aHJvd3MgYW4gZXJyb3Igd2l0aCBhXG4gICAqIGBwYXJ0aWFsYCBwcm9wZXJ0eSB0aGF0IGNvbnRhaW5zIHRoZSBlbnRpcmUgYnVmZmVyLlxuICAgKlxuICAgKiBJZiBgcmVhZFNsaWNlKClgIGVuY291bnRlcnMgdGhlIGVuZCBvZiB0aGUgdW5kZXJseWluZyBzdHJlYW0gYW5kIHRoZXJlIGFyZVxuICAgKiBhbnkgYnl0ZXMgbGVmdCBpbiB0aGUgYnVmZmVyLCB0aGUgcmVzdCBvZiB0aGUgYnVmZmVyIGlzIHJldHVybmVkLiBJbiBvdGhlclxuICAgKiB3b3JkcywgRU9GIGlzIGFsd2F5cyB0cmVhdGVkIGFzIGEgZGVsaW1pdGVyLiBPbmNlIHRoZSBidWZmZXIgaXMgZW1wdHksXG4gICAqIGl0IHJldHVybnMgYG51bGxgLlxuICAgKlxuICAgKiBCZWNhdXNlIHRoZSBkYXRhIHJldHVybmVkIGZyb20gYHJlYWRTbGljZSgpYCB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZVxuICAgKiBuZXh0IEkvTyBvcGVyYXRpb24sIG1vc3QgY2xpZW50cyBzaG91bGQgdXNlIGByZWFkU3RyaW5nKClgIGluc3RlYWQuXG4gICAqL1xuICBhc3luYyByZWFkU2xpY2UoZGVsaW06IG51bWJlcik6IFByb21pc2U8VWludDhBcnJheSB8IG51bGw+IHtcbiAgICBsZXQgcyA9IDA7IC8vIHNlYXJjaCBzdGFydCBpbmRleFxuICAgIGxldCBzbGljZTogVWludDhBcnJheSB8IHVuZGVmaW5lZDtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAvLyBTZWFyY2ggYnVmZmVyLlxuICAgICAgbGV0IGkgPSB0aGlzLiNidWYuc3ViYXJyYXkodGhpcy4jciArIHMsIHRoaXMuI3cpLmluZGV4T2YoZGVsaW0pO1xuICAgICAgaWYgKGkgPj0gMCkge1xuICAgICAgICBpICs9IHM7XG4gICAgICAgIHNsaWNlID0gdGhpcy4jYnVmLnN1YmFycmF5KHRoaXMuI3IsIHRoaXMuI3IgKyBpICsgMSk7XG4gICAgICAgIHRoaXMuI3IgKz0gaSArIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBFT0Y/XG4gICAgICBpZiAodGhpcy4jZW9mKSB7XG4gICAgICAgIGlmICh0aGlzLiNyID09PSB0aGlzLiN3KSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgc2xpY2UgPSB0aGlzLiNidWYuc3ViYXJyYXkodGhpcy4jciwgdGhpcy4jdyk7XG4gICAgICAgIHRoaXMuI3IgPSB0aGlzLiN3O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gQnVmZmVyIGZ1bGw/XG4gICAgICBpZiAodGhpcy5idWZmZXJlZCgpID49IHRoaXMuI2J1Zi5ieXRlTGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuI3IgPSB0aGlzLiN3O1xuICAgICAgICAvLyAjNDUyMSBUaGUgaW50ZXJuYWwgYnVmZmVyIHNob3VsZCBub3QgYmUgcmV1c2VkIGFjcm9zcyByZWFkcyBiZWNhdXNlIGl0IGNhdXNlcyBjb3JydXB0aW9uIG9mIGRhdGEuXG4gICAgICAgIGNvbnN0IG9sZGJ1ZiA9IHRoaXMuI2J1ZjtcbiAgICAgICAgY29uc3QgbmV3YnVmID0gdGhpcy4jYnVmLnNsaWNlKDApO1xuICAgICAgICB0aGlzLiNidWYgPSBuZXdidWY7XG4gICAgICAgIHRocm93IG5ldyBCdWZmZXJGdWxsRXJyb3Iob2xkYnVmKTtcbiAgICAgIH1cblxuICAgICAgcyA9IHRoaXMuI3cgLSB0aGlzLiNyOyAvLyBkbyBub3QgcmVzY2FuIGFyZWEgd2Ugc2Nhbm5lZCBiZWZvcmVcblxuICAgICAgLy8gQnVmZmVyIGlzIG5vdCBmdWxsLlxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy4jZmlsbCgpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBQYXJ0aWFsUmVhZEVycm9yKSB7XG4gICAgICAgICAgZXJyLnBhcnRpYWwgPSBzbGljZTtcbiAgICAgICAgfSBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIGNvbnN0IGUgPSBuZXcgUGFydGlhbFJlYWRFcnJvcigpO1xuICAgICAgICAgIGUucGFydGlhbCA9IHNsaWNlO1xuICAgICAgICAgIGUuc3RhY2sgPSBlcnIuc3RhY2s7XG4gICAgICAgICAgZS5tZXNzYWdlID0gZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgZS5jYXVzZSA9IGVyci5jYXVzZTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSBsYXN0IGJ5dGUsIGlmIGFueS5cbiAgICAvLyBjb25zdCBpID0gc2xpY2UuYnl0ZUxlbmd0aCAtIDE7XG4gICAgLy8gaWYgKGkgPj0gMCkge1xuICAgIC8vICAgdGhpcy5sYXN0Qnl0ZSA9IHNsaWNlW2ldO1xuICAgIC8vICAgdGhpcy5sYXN0Q2hhclNpemUgPSAtMVxuICAgIC8vIH1cblxuICAgIHJldHVybiBzbGljZTtcbiAgfVxuXG4gIC8qKiBgcGVlaygpYCByZXR1cm5zIHRoZSBuZXh0IGBuYCBieXRlcyB3aXRob3V0IGFkdmFuY2luZyB0aGUgcmVhZGVyLiBUaGVcbiAgICogYnl0ZXMgc3RvcCBiZWluZyB2YWxpZCBhdCB0aGUgbmV4dCByZWFkIGNhbGwuXG4gICAqXG4gICAqIFdoZW4gdGhlIGVuZCBvZiB0aGUgdW5kZXJseWluZyBzdHJlYW0gaXMgcmVhY2hlZCwgYnV0IHRoZXJlIGFyZSB1bnJlYWRcbiAgICogYnl0ZXMgbGVmdCBpbiB0aGUgYnVmZmVyLCB0aG9zZSBieXRlcyBhcmUgcmV0dXJuZWQuIElmIHRoZXJlIGFyZSBubyBieXRlc1xuICAgKiBsZWZ0IGluIHRoZSBidWZmZXIsIGl0IHJldHVybnMgYG51bGxgLlxuICAgKlxuICAgKiBJZiBhbiBlcnJvciBpcyBlbmNvdW50ZXJlZCBiZWZvcmUgYG5gIGJ5dGVzIGFyZSBhdmFpbGFibGUsIGBwZWVrKClgIHRocm93c1xuICAgKiBhbiBlcnJvciB3aXRoIHRoZSBgcGFydGlhbGAgcHJvcGVydHkgc2V0IHRvIGEgc2xpY2Ugb2YgdGhlIGJ1ZmZlciB0aGF0XG4gICAqIGNvbnRhaW5zIHRoZSBieXRlcyB0aGF0IHdlcmUgYXZhaWxhYmxlIGJlZm9yZSB0aGUgZXJyb3Igb2NjdXJyZWQuXG4gICAqL1xuICBhc3luYyBwZWVrKG46IG51bWJlcik6IFByb21pc2U8VWludDhBcnJheSB8IG51bGw+IHtcbiAgICBpZiAobiA8IDApIHtcbiAgICAgIHRocm93IEVycm9yKFwibmVnYXRpdmUgY291bnRcIik7XG4gICAgfVxuXG4gICAgbGV0IGF2YWlsID0gdGhpcy4jdyAtIHRoaXMuI3I7XG4gICAgd2hpbGUgKGF2YWlsIDwgbiAmJiBhdmFpbCA8IHRoaXMuI2J1Zi5ieXRlTGVuZ3RoICYmICF0aGlzLiNlb2YpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuI2ZpbGwoKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgUGFydGlhbFJlYWRFcnJvcikge1xuICAgICAgICAgIGVyci5wYXJ0aWFsID0gdGhpcy4jYnVmLnN1YmFycmF5KHRoaXMuI3IsIHRoaXMuI3cpO1xuICAgICAgICB9IGVsc2UgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgY29uc3QgZSA9IG5ldyBQYXJ0aWFsUmVhZEVycm9yKCk7XG4gICAgICAgICAgZS5wYXJ0aWFsID0gdGhpcy4jYnVmLnN1YmFycmF5KHRoaXMuI3IsIHRoaXMuI3cpO1xuICAgICAgICAgIGUuc3RhY2sgPSBlcnIuc3RhY2s7XG4gICAgICAgICAgZS5tZXNzYWdlID0gZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgZS5jYXVzZSA9IGVyci5jYXVzZTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICAgYXZhaWwgPSB0aGlzLiN3IC0gdGhpcy4jcjtcbiAgICB9XG5cbiAgICBpZiAoYXZhaWwgPT09IDAgJiYgdGhpcy4jZW9mKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKGF2YWlsIDwgbiAmJiB0aGlzLiNlb2YpIHtcbiAgICAgIHJldHVybiB0aGlzLiNidWYuc3ViYXJyYXkodGhpcy4jciwgdGhpcy4jciArIGF2YWlsKTtcbiAgICB9IGVsc2UgaWYgKGF2YWlsIDwgbikge1xuICAgICAgdGhyb3cgbmV3IEJ1ZmZlckZ1bGxFcnJvcih0aGlzLiNidWYuc3ViYXJyYXkodGhpcy4jciwgdGhpcy4jdykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiNidWYuc3ViYXJyYXkodGhpcy4jciwgdGhpcy4jciArIG4pO1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIEFic3RyYWN0QnVmQmFzZSB7XG4gIGJ1ZjogVWludDhBcnJheTtcbiAgdXNlZEJ1ZmZlckJ5dGVzID0gMDtcbiAgZXJyOiBFcnJvciB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGJ1ZjogVWludDhBcnJheSkge1xuICAgIHRoaXMuYnVmID0gYnVmO1xuICB9XG5cbiAgLyoqIFNpemUgcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgdW5kZXJseWluZyBidWZmZXIgaW4gYnl0ZXMuICovXG4gIHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5idWYuYnl0ZUxlbmd0aDtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGhvdyBtYW55IGJ5dGVzIGFyZSB1bnVzZWQgaW4gdGhlIGJ1ZmZlci4gKi9cbiAgYXZhaWxhYmxlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYnVmLmJ5dGVMZW5ndGggLSB0aGlzLnVzZWRCdWZmZXJCeXRlcztcbiAgfVxuXG4gIC8qKiBidWZmZXJlZCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBoYXZlIGJlZW4gd3JpdHRlbiBpbnRvIHRoZVxuICAgKiBjdXJyZW50IGJ1ZmZlci5cbiAgICovXG4gIGJ1ZmZlcmVkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudXNlZEJ1ZmZlckJ5dGVzO1xuICB9XG59XG5cbi8qKiBCdWZXcml0ZXIgaW1wbGVtZW50cyBidWZmZXJpbmcgZm9yIGFuIGRlbm8uV3JpdGVyIG9iamVjdC5cbiAqIElmIGFuIGVycm9yIG9jY3VycyB3cml0aW5nIHRvIGEgV3JpdGVyLCBubyBtb3JlIGRhdGEgd2lsbCBiZVxuICogYWNjZXB0ZWQgYW5kIGFsbCBzdWJzZXF1ZW50IHdyaXRlcywgYW5kIGZsdXNoKCksIHdpbGwgcmV0dXJuIHRoZSBlcnJvci5cbiAqIEFmdGVyIGFsbCBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4sIHRoZSBjbGllbnQgc2hvdWxkIGNhbGwgdGhlXG4gKiBmbHVzaCgpIG1ldGhvZCB0byBndWFyYW50ZWUgYWxsIGRhdGEgaGFzIGJlZW4gZm9yd2FyZGVkIHRvXG4gKiB0aGUgdW5kZXJseWluZyBkZW5vLldyaXRlci5cbiAqL1xuZXhwb3J0IGNsYXNzIEJ1ZldyaXRlciBleHRlbmRzIEFic3RyYWN0QnVmQmFzZSBpbXBsZW1lbnRzIFdyaXRlciB7XG4gICN3cml0ZXI6IFdyaXRlcjtcblxuICAvKiogcmV0dXJuIG5ldyBCdWZXcml0ZXIgdW5sZXNzIHdyaXRlciBpcyBCdWZXcml0ZXIgKi9cbiAgc3RhdGljIGNyZWF0ZSh3cml0ZXI6IFdyaXRlciwgc2l6ZTogbnVtYmVyID0gREVGQVVMVF9CVUZfU0laRSk6IEJ1ZldyaXRlciB7XG4gICAgcmV0dXJuIHdyaXRlciBpbnN0YW5jZW9mIEJ1ZldyaXRlciA/IHdyaXRlciA6IG5ldyBCdWZXcml0ZXIod3JpdGVyLCBzaXplKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHdyaXRlcjogV3JpdGVyLCBzaXplOiBudW1iZXIgPSBERUZBVUxUX0JVRl9TSVpFKSB7XG4gICAgc3VwZXIobmV3IFVpbnQ4QXJyYXkoc2l6ZSA8PSAwID8gREVGQVVMVF9CVUZfU0laRSA6IHNpemUpKTtcbiAgICB0aGlzLiN3cml0ZXIgPSB3cml0ZXI7XG4gIH1cblxuICAvKiogRGlzY2FyZHMgYW55IHVuZmx1c2hlZCBidWZmZXJlZCBkYXRhLCBjbGVhcnMgYW55IGVycm9yLCBhbmRcbiAgICogcmVzZXRzIGJ1ZmZlciB0byB3cml0ZSBpdHMgb3V0cHV0IHRvIHcuXG4gICAqL1xuICByZXNldCh3OiBXcml0ZXIpOiB2b2lkIHtcbiAgICB0aGlzLmVyciA9IG51bGw7XG4gICAgdGhpcy51c2VkQnVmZmVyQnl0ZXMgPSAwO1xuICAgIHRoaXMuI3dyaXRlciA9IHc7XG4gIH1cblxuICAvKiogRmx1c2ggd3JpdGVzIGFueSBidWZmZXJlZCBkYXRhIHRvIHRoZSB1bmRlcmx5aW5nIGlvLldyaXRlci4gKi9cbiAgYXN5bmMgZmx1c2goKSB7XG4gICAgaWYgKHRoaXMuZXJyICE9PSBudWxsKSB0aHJvdyB0aGlzLmVycjtcbiAgICBpZiAodGhpcy51c2VkQnVmZmVyQnl0ZXMgPT09IDApIHJldHVybjtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwID0gdGhpcy5idWYuc3ViYXJyYXkoMCwgdGhpcy51c2VkQnVmZmVyQnl0ZXMpO1xuICAgICAgbGV0IG53cml0dGVuID0gMDtcbiAgICAgIHdoaWxlIChud3JpdHRlbiA8IHAubGVuZ3RoKSB7XG4gICAgICAgIG53cml0dGVuICs9IGF3YWl0IHRoaXMuI3dyaXRlci53cml0ZShwLnN1YmFycmF5KG53cml0dGVuKSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aGlzLmVyciA9IGU7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIHRoaXMuYnVmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5idWYubGVuZ3RoKTtcbiAgICB0aGlzLnVzZWRCdWZmZXJCeXRlcyA9IDA7XG4gIH1cblxuICAvKiogV3JpdGVzIHRoZSBjb250ZW50cyBvZiBgZGF0YWAgaW50byB0aGUgYnVmZmVyLiAgSWYgdGhlIGNvbnRlbnRzIHdvbid0IGZ1bGx5XG4gICAqIGZpdCBpbnRvIHRoZSBidWZmZXIsIHRob3NlIGJ5dGVzIHRoYXQgY2FuIGFyZSBjb3BpZWQgaW50byB0aGUgYnVmZmVyLCB0aGVcbiAgICogYnVmZmVyIGlzIHRoZSBmbHVzaGVkIHRvIHRoZSB3cml0ZXIgYW5kIHRoZSByZW1haW5pbmcgYnl0ZXMgYXJlIGNvcGllZCBpbnRvXG4gICAqIHRoZSBub3cgZW1wdHkgYnVmZmVyLlxuICAgKlxuICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiB0byB0aGUgYnVmZmVyLlxuICAgKi9cbiAgYXN5bmMgd3JpdGUoZGF0YTogVWludDhBcnJheSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgaWYgKHRoaXMuZXJyICE9PSBudWxsKSB0aHJvdyB0aGlzLmVycjtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHJldHVybiAwO1xuXG4gICAgbGV0IHRvdGFsQnl0ZXNXcml0dGVuID0gMDtcbiAgICBsZXQgbnVtQnl0ZXNXcml0dGVuID0gMDtcbiAgICB3aGlsZSAoZGF0YS5ieXRlTGVuZ3RoID4gdGhpcy5hdmFpbGFibGUoKSkge1xuICAgICAgaWYgKHRoaXMuYnVmZmVyZWQoKSA9PT0gMCkge1xuICAgICAgICAvLyBMYXJnZSB3cml0ZSwgZW1wdHkgYnVmZmVyLlxuICAgICAgICAvLyBXcml0ZSBkaXJlY3RseSBmcm9tIGRhdGEgdG8gYXZvaWQgY29weS5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBudW1CeXRlc1dyaXR0ZW4gPSBhd2FpdCB0aGlzLiN3cml0ZXIud3JpdGUoZGF0YSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLmVyciA9IGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG51bUJ5dGVzV3JpdHRlbiA9IGNvcHkoZGF0YSwgdGhpcy5idWYsIHRoaXMudXNlZEJ1ZmZlckJ5dGVzKTtcbiAgICAgICAgdGhpcy51c2VkQnVmZmVyQnl0ZXMgKz0gbnVtQnl0ZXNXcml0dGVuO1xuICAgICAgICBhd2FpdCB0aGlzLmZsdXNoKCk7XG4gICAgICB9XG4gICAgICB0b3RhbEJ5dGVzV3JpdHRlbiArPSBudW1CeXRlc1dyaXR0ZW47XG4gICAgICBkYXRhID0gZGF0YS5zdWJhcnJheShudW1CeXRlc1dyaXR0ZW4pO1xuICAgIH1cblxuICAgIG51bUJ5dGVzV3JpdHRlbiA9IGNvcHkoZGF0YSwgdGhpcy5idWYsIHRoaXMudXNlZEJ1ZmZlckJ5dGVzKTtcbiAgICB0aGlzLnVzZWRCdWZmZXJCeXRlcyArPSBudW1CeXRlc1dyaXR0ZW47XG4gICAgdG90YWxCeXRlc1dyaXR0ZW4gKz0gbnVtQnl0ZXNXcml0dGVuO1xuICAgIHJldHVybiB0b3RhbEJ5dGVzV3JpdHRlbjtcbiAgfVxufVxuXG4vKiogQnVmV3JpdGVyU3luYyBpbXBsZW1lbnRzIGJ1ZmZlcmluZyBmb3IgYSBkZW5vLldyaXRlclN5bmMgb2JqZWN0LlxuICogSWYgYW4gZXJyb3Igb2NjdXJzIHdyaXRpbmcgdG8gYSBXcml0ZXJTeW5jLCBubyBtb3JlIGRhdGEgd2lsbCBiZVxuICogYWNjZXB0ZWQgYW5kIGFsbCBzdWJzZXF1ZW50IHdyaXRlcywgYW5kIGZsdXNoKCksIHdpbGwgcmV0dXJuIHRoZSBlcnJvci5cbiAqIEFmdGVyIGFsbCBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4sIHRoZSBjbGllbnQgc2hvdWxkIGNhbGwgdGhlXG4gKiBmbHVzaCgpIG1ldGhvZCB0byBndWFyYW50ZWUgYWxsIGRhdGEgaGFzIGJlZW4gZm9yd2FyZGVkIHRvXG4gKiB0aGUgdW5kZXJseWluZyBkZW5vLldyaXRlclN5bmMuXG4gKi9cbmV4cG9ydCBjbGFzcyBCdWZXcml0ZXJTeW5jIGV4dGVuZHMgQWJzdHJhY3RCdWZCYXNlIGltcGxlbWVudHMgV3JpdGVyU3luYyB7XG4gICN3cml0ZXI6IFdyaXRlclN5bmM7XG5cbiAgLyoqIHJldHVybiBuZXcgQnVmV3JpdGVyU3luYyB1bmxlc3Mgd3JpdGVyIGlzIEJ1ZldyaXRlclN5bmMgKi9cbiAgc3RhdGljIGNyZWF0ZShcbiAgICB3cml0ZXI6IFdyaXRlclN5bmMsXG4gICAgc2l6ZTogbnVtYmVyID0gREVGQVVMVF9CVUZfU0laRSxcbiAgKTogQnVmV3JpdGVyU3luYyB7XG4gICAgcmV0dXJuIHdyaXRlciBpbnN0YW5jZW9mIEJ1ZldyaXRlclN5bmNcbiAgICAgID8gd3JpdGVyXG4gICAgICA6IG5ldyBCdWZXcml0ZXJTeW5jKHdyaXRlciwgc2l6ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih3cml0ZXI6IFdyaXRlclN5bmMsIHNpemU6IG51bWJlciA9IERFRkFVTFRfQlVGX1NJWkUpIHtcbiAgICBzdXBlcihuZXcgVWludDhBcnJheShzaXplIDw9IDAgPyBERUZBVUxUX0JVRl9TSVpFIDogc2l6ZSkpO1xuICAgIHRoaXMuI3dyaXRlciA9IHdyaXRlcjtcbiAgfVxuXG4gIC8qKiBEaXNjYXJkcyBhbnkgdW5mbHVzaGVkIGJ1ZmZlcmVkIGRhdGEsIGNsZWFycyBhbnkgZXJyb3IsIGFuZFxuICAgKiByZXNldHMgYnVmZmVyIHRvIHdyaXRlIGl0cyBvdXRwdXQgdG8gdy5cbiAgICovXG4gIHJlc2V0KHc6IFdyaXRlclN5bmMpOiB2b2lkIHtcbiAgICB0aGlzLmVyciA9IG51bGw7XG4gICAgdGhpcy51c2VkQnVmZmVyQnl0ZXMgPSAwO1xuICAgIHRoaXMuI3dyaXRlciA9IHc7XG4gIH1cblxuICAvKiogRmx1c2ggd3JpdGVzIGFueSBidWZmZXJlZCBkYXRhIHRvIHRoZSB1bmRlcmx5aW5nIGlvLldyaXRlclN5bmMuICovXG4gIGZsdXNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVyciAhPT0gbnVsbCkgdGhyb3cgdGhpcy5lcnI7XG4gICAgaWYgKHRoaXMudXNlZEJ1ZmZlckJ5dGVzID09PSAwKSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcCA9IHRoaXMuYnVmLnN1YmFycmF5KDAsIHRoaXMudXNlZEJ1ZmZlckJ5dGVzKTtcbiAgICAgIGxldCBud3JpdHRlbiA9IDA7XG4gICAgICB3aGlsZSAobndyaXR0ZW4gPCBwLmxlbmd0aCkge1xuICAgICAgICBud3JpdHRlbiArPSB0aGlzLiN3cml0ZXIud3JpdGVTeW5jKHAuc3ViYXJyYXkobndyaXR0ZW4pKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIHRoaXMuZXJyID0gZTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgdGhpcy5idWYgPSBuZXcgVWludDhBcnJheSh0aGlzLmJ1Zi5sZW5ndGgpO1xuICAgIHRoaXMudXNlZEJ1ZmZlckJ5dGVzID0gMDtcbiAgfVxuXG4gIC8qKiBXcml0ZXMgdGhlIGNvbnRlbnRzIG9mIGBkYXRhYCBpbnRvIHRoZSBidWZmZXIuICBJZiB0aGUgY29udGVudHMgd29uJ3QgZnVsbHlcbiAgICogZml0IGludG8gdGhlIGJ1ZmZlciwgdGhvc2UgYnl0ZXMgdGhhdCBjYW4gYXJlIGNvcGllZCBpbnRvIHRoZSBidWZmZXIsIHRoZVxuICAgKiBidWZmZXIgaXMgdGhlIGZsdXNoZWQgdG8gdGhlIHdyaXRlciBhbmQgdGhlIHJlbWFpbmluZyBieXRlcyBhcmUgY29waWVkIGludG9cbiAgICogdGhlIG5vdyBlbXB0eSBidWZmZXIuXG4gICAqXG4gICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIHRoZSBidWZmZXIuXG4gICAqL1xuICB3cml0ZVN5bmMoZGF0YTogVWludDhBcnJheSk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuZXJyICE9PSBudWxsKSB0aHJvdyB0aGlzLmVycjtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHJldHVybiAwO1xuXG4gICAgbGV0IHRvdGFsQnl0ZXNXcml0dGVuID0gMDtcbiAgICBsZXQgbnVtQnl0ZXNXcml0dGVuID0gMDtcbiAgICB3aGlsZSAoZGF0YS5ieXRlTGVuZ3RoID4gdGhpcy5hdmFpbGFibGUoKSkge1xuICAgICAgaWYgKHRoaXMuYnVmZmVyZWQoKSA9PT0gMCkge1xuICAgICAgICAvLyBMYXJnZSB3cml0ZSwgZW1wdHkgYnVmZmVyLlxuICAgICAgICAvLyBXcml0ZSBkaXJlY3RseSBmcm9tIGRhdGEgdG8gYXZvaWQgY29weS5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBudW1CeXRlc1dyaXR0ZW4gPSB0aGlzLiN3cml0ZXIud3JpdGVTeW5jKGRhdGEpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgdGhpcy5lcnIgPSBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBudW1CeXRlc1dyaXR0ZW4gPSBjb3B5KGRhdGEsIHRoaXMuYnVmLCB0aGlzLnVzZWRCdWZmZXJCeXRlcyk7XG4gICAgICAgIHRoaXMudXNlZEJ1ZmZlckJ5dGVzICs9IG51bUJ5dGVzV3JpdHRlbjtcbiAgICAgICAgdGhpcy5mbHVzaCgpO1xuICAgICAgfVxuICAgICAgdG90YWxCeXRlc1dyaXR0ZW4gKz0gbnVtQnl0ZXNXcml0dGVuO1xuICAgICAgZGF0YSA9IGRhdGEuc3ViYXJyYXkobnVtQnl0ZXNXcml0dGVuKTtcbiAgICB9XG5cbiAgICBudW1CeXRlc1dyaXR0ZW4gPSBjb3B5KGRhdGEsIHRoaXMuYnVmLCB0aGlzLnVzZWRCdWZmZXJCeXRlcyk7XG4gICAgdGhpcy51c2VkQnVmZmVyQnl0ZXMgKz0gbnVtQnl0ZXNXcml0dGVuO1xuICAgIHRvdGFsQnl0ZXNXcml0dGVuICs9IG51bUJ5dGVzV3JpdHRlbjtcbiAgICByZXR1cm4gdG90YWxCeXRlc1dyaXR0ZW47XG4gIH1cbn1cblxuLyoqIEdlbmVyYXRlIGxvbmdlc3QgcHJvcGVyIHByZWZpeCB3aGljaCBpcyBhbHNvIHN1ZmZpeCBhcnJheS4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUxQUyhwYXQ6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcbiAgY29uc3QgbHBzID0gbmV3IFVpbnQ4QXJyYXkocGF0Lmxlbmd0aCk7XG4gIGxwc1swXSA9IDA7XG4gIGxldCBwcmVmaXhFbmQgPSAwO1xuICBsZXQgaSA9IDE7XG4gIHdoaWxlIChpIDwgbHBzLmxlbmd0aCkge1xuICAgIGlmIChwYXRbaV0gPT0gcGF0W3ByZWZpeEVuZF0pIHtcbiAgICAgIHByZWZpeEVuZCsrO1xuICAgICAgbHBzW2ldID0gcHJlZml4RW5kO1xuICAgICAgaSsrO1xuICAgIH0gZWxzZSBpZiAocHJlZml4RW5kID09PSAwKSB7XG4gICAgICBscHNbaV0gPSAwO1xuICAgICAgaSsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVmaXhFbmQgPSBscHNbcHJlZml4RW5kIC0gMV07XG4gICAgfVxuICB9XG4gIHJldHVybiBscHM7XG59XG5cbi8qKiBSZWFkIGRlbGltaXRlZCBieXRlcyBmcm9tIGEgUmVhZGVyLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiByZWFkRGVsaW0oXG4gIHJlYWRlcjogUmVhZGVyLFxuICBkZWxpbTogVWludDhBcnJheSxcbik6IEFzeW5jSXRlcmFibGVJdGVyYXRvcjxVaW50OEFycmF5PiB7XG4gIC8vIEF2b2lkIHVuaWNvZGUgcHJvYmxlbXNcbiAgY29uc3QgZGVsaW1MZW4gPSBkZWxpbS5sZW5ndGg7XG4gIGNvbnN0IGRlbGltTFBTID0gY3JlYXRlTFBTKGRlbGltKTtcbiAgY29uc3QgY2h1bmtzID0gbmV3IEJ5dGVzTGlzdCgpO1xuICBjb25zdCBidWZTaXplID0gTWF0aC5tYXgoMTAyNCwgZGVsaW1MZW4gKyAxKTtcblxuICAvLyBNb2RpZmllZCBLTVBcbiAgbGV0IGluc3BlY3RJbmRleCA9IDA7XG4gIGxldCBtYXRjaEluZGV4ID0gMDtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBpbnNwZWN0QXJyID0gbmV3IFVpbnQ4QXJyYXkoYnVmU2l6ZSk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVhZGVyLnJlYWQoaW5zcGVjdEFycik7XG4gICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgLy8gWWllbGQgbGFzdCBjaHVuay5cbiAgICAgIHlpZWxkIGNodW5rcy5jb25jYXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKHJlc3VsdCA8IDApIHtcbiAgICAgIC8vIERpc2NhcmQgYWxsIHJlbWFpbmluZyBhbmQgc2lsZW50bHkgZmFpbC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2h1bmtzLmFkZChpbnNwZWN0QXJyLCAwLCByZXN1bHQpO1xuICAgIGxldCBsb2NhbEluZGV4ID0gMDtcbiAgICB3aGlsZSAoaW5zcGVjdEluZGV4IDwgY2h1bmtzLnNpemUoKSkge1xuICAgICAgaWYgKGluc3BlY3RBcnJbbG9jYWxJbmRleF0gPT09IGRlbGltW21hdGNoSW5kZXhdKSB7XG4gICAgICAgIGluc3BlY3RJbmRleCsrO1xuICAgICAgICBsb2NhbEluZGV4Kys7XG4gICAgICAgIG1hdGNoSW5kZXgrKztcbiAgICAgICAgaWYgKG1hdGNoSW5kZXggPT09IGRlbGltTGVuKSB7XG4gICAgICAgICAgLy8gRnVsbCBtYXRjaFxuICAgICAgICAgIGNvbnN0IG1hdGNoRW5kID0gaW5zcGVjdEluZGV4IC0gZGVsaW1MZW47XG4gICAgICAgICAgY29uc3QgcmVhZHlCeXRlcyA9IGNodW5rcy5zbGljZSgwLCBtYXRjaEVuZCk7XG4gICAgICAgICAgeWllbGQgcmVhZHlCeXRlcztcbiAgICAgICAgICAvLyBSZXNldCBtYXRjaCwgZGlmZmVyZW50IGZyb20gS01QLlxuICAgICAgICAgIGNodW5rcy5zaGlmdChpbnNwZWN0SW5kZXgpO1xuICAgICAgICAgIGluc3BlY3RJbmRleCA9IDA7XG4gICAgICAgICAgbWF0Y2hJbmRleCA9IDA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChtYXRjaEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgaW5zcGVjdEluZGV4Kys7XG4gICAgICAgICAgbG9jYWxJbmRleCsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hdGNoSW5kZXggPSBkZWxpbUxQU1ttYXRjaEluZGV4IC0gMV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqIFJlYWQgZGVsaW1pdGVkIHN0cmluZ3MgZnJvbSBhIFJlYWRlci4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogcmVhZFN0cmluZ0RlbGltKFxuICByZWFkZXI6IFJlYWRlcixcbiAgZGVsaW06IHN0cmluZyxcbiAgZGVjb2Rlck9wdHM/OiB7XG4gICAgZW5jb2Rpbmc/OiBzdHJpbmc7XG4gICAgZmF0YWw/OiBib29sZWFuO1xuICAgIGlnbm9yZUJPTT86IGJvb2xlYW47XG4gIH0sXG4pOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8c3RyaW5nPiB7XG4gIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcihkZWNvZGVyT3B0cz8uZW5jb2RpbmcsIGRlY29kZXJPcHRzKTtcbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiByZWFkRGVsaW0ocmVhZGVyLCBlbmNvZGVyLmVuY29kZShkZWxpbSkpKSB7XG4gICAgeWllbGQgZGVjb2Rlci5kZWNvZGUoY2h1bmspO1xuICB9XG59XG5cbi8qKiBSZWFkIHN0cmluZ3MgbGluZS1ieS1saW5lIGZyb20gYSBSZWFkZXIuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIHJlYWRMaW5lcyhcbiAgcmVhZGVyOiBSZWFkZXIsXG4gIGRlY29kZXJPcHRzPzoge1xuICAgIGVuY29kaW5nPzogc3RyaW5nO1xuICAgIGZhdGFsPzogYm9vbGVhbjtcbiAgICBpZ25vcmVCT00/OiBib29sZWFuO1xuICB9LFxuKTogQXN5bmNJdGVyYWJsZUl0ZXJhdG9yPHN0cmluZz4ge1xuICBjb25zdCBidWZSZWFkZXIgPSBuZXcgQnVmUmVhZGVyKHJlYWRlcik7XG4gIGxldCBjaHVua3M6IFVpbnQ4QXJyYXlbXSA9IFtdO1xuICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKGRlY29kZXJPcHRzPy5lbmNvZGluZywgZGVjb2Rlck9wdHMpO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJ1ZlJlYWRlci5yZWFkTGluZSgpO1xuICAgIGlmICghcmVzKSB7XG4gICAgICBpZiAoY2h1bmtzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgeWllbGQgZGVjb2Rlci5kZWNvZGUoY29uY2F0KC4uLmNodW5rcykpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNodW5rcy5wdXNoKHJlcy5saW5lKTtcbiAgICBpZiAoIXJlcy5tb3JlKSB7XG4gICAgICB5aWVsZCBkZWNvZGVyLmRlY29kZShjb25jYXQoLi4uY2h1bmtzKSk7XG4gICAgICBjaHVua3MgPSBbXTtcbiAgICB9XG4gIH1cbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuXG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tIFwiLi4vaW8vYnVmZmVyLnRzXCI7XG5cbmNvbnN0IERFRkFVTFRfQ0hVTktfU0laRSA9IDE2XzY0MDtcbmNvbnN0IERFRkFVTFRfQlVGRkVSX1NJWkUgPSAzMiAqIDEwMjQ7XG5cbmZ1bmN0aW9uIGlzQ2xvc2VyKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgRGVuby5DbG9zZXIge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9IG51bGwgJiYgXCJjbG9zZVwiIGluIHZhbHVlICYmXG4gICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICB0eXBlb2YgKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW1wiY2xvc2VcIl0gPT09IFwiZnVuY3Rpb25cIjtcbn1cblxuLyoqIENyZWF0ZSBhIGBEZW5vLlJlYWRlcmAgZnJvbSBhbiBpdGVyYWJsZSBvZiBgVWludDhBcnJheWBzLlxuICpcbiAqIGBgYHRzXG4gKiAgICAgIGltcG9ydCB7IHJlYWRlckZyb21JdGVyYWJsZSB9IGZyb20gXCIuL2NvbnZlcnNpb24udHNcIjtcbiAqXG4gKiAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBEZW5vLm9wZW4oXCJtZXRyaWNzLnR4dFwiLCB7IHdyaXRlOiB0cnVlIH0pO1xuICogICAgICBjb25zdCByZWFkZXIgPSByZWFkZXJGcm9tSXRlcmFibGUoKGFzeW5jIGZ1bmN0aW9uKiAoKSB7XG4gKiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAqICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDEwMDApKTtcbiAqICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgZGF0YTogJHtKU09OLnN0cmluZ2lmeShEZW5vLm1ldHJpY3MoKSl9XFxuXFxuYDtcbiAqICAgICAgICAgIHlpZWxkIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShtZXNzYWdlKTtcbiAqICAgICAgICB9XG4gKiAgICAgIH0pKCkpO1xuICogICAgICBhd2FpdCBEZW5vLmNvcHkocmVhZGVyLCBmaWxlKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZGVyRnJvbUl0ZXJhYmxlKFxuICBpdGVyYWJsZTogSXRlcmFibGU8VWludDhBcnJheT4gfCBBc3luY0l0ZXJhYmxlPFVpbnQ4QXJyYXk+LFxuKTogRGVuby5SZWFkZXIge1xuICBjb25zdCBpdGVyYXRvcjogSXRlcmF0b3I8VWludDhBcnJheT4gfCBBc3luY0l0ZXJhdG9yPFVpbnQ4QXJyYXk+ID1cbiAgICAoaXRlcmFibGUgYXMgQXN5bmNJdGVyYWJsZTxVaW50OEFycmF5PilbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPy4oKSA/P1xuICAgICAgKGl0ZXJhYmxlIGFzIEl0ZXJhYmxlPFVpbnQ4QXJyYXk+KVtTeW1ib2wuaXRlcmF0b3JdPy4oKTtcbiAgY29uc3QgYnVmZmVyID0gbmV3IEJ1ZmZlcigpO1xuICByZXR1cm4ge1xuICAgIGFzeW5jIHJlYWQocDogVWludDhBcnJheSk6IFByb21pc2U8bnVtYmVyIHwgbnVsbD4ge1xuICAgICAgaWYgKGJ1ZmZlci5sZW5ndGggPT0gMCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgIGlmIChyZXN1bHQuZG9uZSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChyZXN1bHQudmFsdWUuYnl0ZUxlbmd0aCA8PSBwLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHAuc2V0KHJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlLmJ5dGVMZW5ndGg7XG4gICAgICAgICAgfVxuICAgICAgICAgIHAuc2V0KHJlc3VsdC52YWx1ZS5zdWJhcnJheSgwLCBwLmJ5dGVMZW5ndGgpKTtcbiAgICAgICAgICBhd2FpdCB3cml0ZUFsbChidWZmZXIsIHJlc3VsdC52YWx1ZS5zdWJhcnJheShwLmJ5dGVMZW5ndGgpKTtcbiAgICAgICAgICByZXR1cm4gcC5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBuID0gYXdhaXQgYnVmZmVyLnJlYWQocCk7XG4gICAgICAgIGlmIChuID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkKHApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG5cbi8qKiBDcmVhdGUgYSBgV3JpdGVyYCBmcm9tIGEgYFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlcmAuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVyRnJvbVN0cmVhbVdyaXRlcihcbiAgc3RyZWFtV3JpdGVyOiBXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXI8VWludDhBcnJheT4sXG4pOiBEZW5vLldyaXRlciB7XG4gIHJldHVybiB7XG4gICAgYXN5bmMgd3JpdGUocDogVWludDhBcnJheSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICBhd2FpdCBzdHJlYW1Xcml0ZXIucmVhZHk7XG4gICAgICBhd2FpdCBzdHJlYW1Xcml0ZXIud3JpdGUocCk7XG4gICAgICByZXR1cm4gcC5sZW5ndGg7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqIENyZWF0ZSBhIGBSZWFkZXJgIGZyb20gYSBgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkZXJGcm9tU3RyZWFtUmVhZGVyKFxuICBzdHJlYW1SZWFkZXI6IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcjxVaW50OEFycmF5Pixcbik6IERlbm8uUmVhZGVyIHtcbiAgY29uc3QgYnVmZmVyID0gbmV3IEJ1ZmZlcigpO1xuXG4gIHJldHVybiB7XG4gICAgYXN5bmMgcmVhZChwOiBVaW50OEFycmF5KTogUHJvbWlzZTxudW1iZXIgfCBudWxsPiB7XG4gICAgICBpZiAoYnVmZmVyLmVtcHR5KCkpIHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgc3RyZWFtUmVhZGVyLnJlYWQoKTtcbiAgICAgICAgaWYgKHJlcy5kb25lKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7IC8vIEVPRlxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgd3JpdGVBbGwoYnVmZmVyLCByZXMudmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYnVmZmVyLnJlYWQocCk7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXcml0YWJsZVN0cmVhbUZyb21Xcml0ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIElmIHRoZSBgd3JpdGVyYCBpcyBhbHNvIGEgYERlbm8uQ2xvc2VyYCwgYXV0b21hdGljYWxseSBjbG9zZSB0aGUgYHdyaXRlcmBcbiAgICogd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCwgYWJvcnRlZCwgb3IgYSB3cml0ZSBlcnJvciBvY2N1cnMuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGB0cnVlYC4gKi9cbiAgYXV0b0Nsb3NlPzogYm9vbGVhbjtcbn1cblxuLyoqIENyZWF0ZSBhIGBXcml0YWJsZVN0cmVhbWAgZnJvbSBhIGBXcml0ZXJgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRhYmxlU3RyZWFtRnJvbVdyaXRlcihcbiAgd3JpdGVyOiBEZW5vLldyaXRlcixcbiAgb3B0aW9uczogV3JpdGFibGVTdHJlYW1Gcm9tV3JpdGVyT3B0aW9ucyA9IHt9LFxuKTogV3JpdGFibGVTdHJlYW08VWludDhBcnJheT4ge1xuICBjb25zdCB7IGF1dG9DbG9zZSA9IHRydWUgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIG5ldyBXcml0YWJsZVN0cmVhbSh7XG4gICAgYXN5bmMgd3JpdGUoY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHdyaXRlQWxsKHdyaXRlciwgY2h1bmspO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb250cm9sbGVyLmVycm9yKGUpO1xuICAgICAgICBpZiAoaXNDbG9zZXIod3JpdGVyKSAmJiBhdXRvQ2xvc2UpIHtcbiAgICAgICAgICB3cml0ZXIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY2xvc2UoKSB7XG4gICAgICBpZiAoaXNDbG9zZXIod3JpdGVyKSAmJiBhdXRvQ2xvc2UpIHtcbiAgICAgICAgd3JpdGVyLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBhYm9ydCgpIHtcbiAgICAgIGlmIChpc0Nsb3Nlcih3cml0ZXIpICYmIGF1dG9DbG9zZSkge1xuICAgICAgICB3cml0ZXIuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcbn1cblxuLyoqIENyZWF0ZSBhIGBSZWFkYWJsZVN0cmVhbWAgZnJvbSBhbnkga2luZCBvZiBpdGVyYWJsZS5cbiAqXG4gKiBgYGB0c1xuICogICAgICBpbXBvcnQgeyByZWFkYWJsZVN0cmVhbUZyb21JdGVyYWJsZSB9IGZyb20gXCIuL2NvbnZlcnNpb24udHNcIjtcbiAqXG4gKiAgICAgIGNvbnN0IHIxID0gcmVhZGFibGVTdHJlYW1Gcm9tSXRlcmFibGUoW1wiZm9vLCBiYXIsIGJhelwiXSk7XG4gKiAgICAgIGNvbnN0IHIyID0gcmVhZGFibGVTdHJlYW1Gcm9tSXRlcmFibGUoYXN5bmMgZnVuY3Rpb24qICgpIHtcbiAqICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgoKHIpID0+IHNldFRpbWVvdXQociwgMTAwMCkpKTtcbiAqICAgICAgICB5aWVsZCBcImZvb1wiO1xuICogICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKCgocikgPT4gc2V0VGltZW91dChyLCAxMDAwKSkpO1xuICogICAgICAgIHlpZWxkIFwiYmFyXCI7XG4gKiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKChyKSA9PiBzZXRUaW1lb3V0KHIsIDEwMDApKSk7XG4gKiAgICAgICAgeWllbGQgXCJiYXpcIjtcbiAqICAgICAgfSgpKTtcbiAqIGBgYFxuICpcbiAqIElmIHRoZSBwcm9kdWNlZCBpdGVyYXRvciAoYGl0ZXJhYmxlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpYCBvclxuICogYGl0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0oKWApIGlzIGEgZ2VuZXJhdG9yLCBvciBtb3JlIHNwZWNpZmljYWxseSBpcyBmb3VuZFxuICogdG8gaGF2ZSBhIGAudGhyb3coKWAgbWV0aG9kIG9uIGl0LCB0aGF0IHdpbGwgYmUgY2FsbGVkIHVwb25cbiAqIGByZWFkYWJsZVN0cmVhbS5jYW5jZWwoKWAuIFRoaXMgaXMgdGhlIGNhc2UgZm9yIHRoZSBzZWNvbmQgaW5wdXQgdHlwZSBhYm92ZTpcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcmVhZGFibGVTdHJlYW1Gcm9tSXRlcmFibGUgfSBmcm9tIFwiLi9jb252ZXJzaW9uLnRzXCI7XG4gKlxuICogY29uc3QgcjMgPSByZWFkYWJsZVN0cmVhbUZyb21JdGVyYWJsZShhc3luYyBmdW5jdGlvbiogKCkge1xuICogICB0cnkge1xuICogICAgIHlpZWxkIFwiZm9vXCI7XG4gKiAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgICAgY29uc29sZS5sb2coZXJyb3IpOyAvLyBFcnJvcjogQ2FuY2VsbGVkIGJ5IGNvbnN1bWVyLlxuICogICB9XG4gKiB9KCkpO1xuICogY29uc3QgcmVhZGVyID0gcjMuZ2V0UmVhZGVyKCk7XG4gKiBjb25zb2xlLmxvZyhhd2FpdCByZWFkZXIucmVhZCgpKTsgLy8geyB2YWx1ZTogXCJmb29cIiwgZG9uZTogZmFsc2UgfVxuICogYXdhaXQgcmVhZGVyLmNhbmNlbChuZXcgRXJyb3IoXCJDYW5jZWxsZWQgYnkgY29uc3VtZXIuXCIpKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZGFibGVTdHJlYW1Gcm9tSXRlcmFibGU8VD4oXG4gIGl0ZXJhYmxlOiBJdGVyYWJsZTxUPiB8IEFzeW5jSXRlcmFibGU8VD4sXG4pOiBSZWFkYWJsZVN0cmVhbTxUPiB7XG4gIGNvbnN0IGl0ZXJhdG9yOiBJdGVyYXRvcjxUPiB8IEFzeW5jSXRlcmF0b3I8VD4gPVxuICAgIChpdGVyYWJsZSBhcyBBc3luY0l0ZXJhYmxlPFQ+KVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0/LigpID8/XG4gICAgICAoaXRlcmFibGUgYXMgSXRlcmFibGU8VD4pW1N5bWJvbC5pdGVyYXRvcl0/LigpO1xuICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICBhc3luYyBwdWxsKGNvbnRyb2xsZXIpIHtcbiAgICAgIGNvbnN0IHsgdmFsdWUsIGRvbmUgfSA9IGF3YWl0IGl0ZXJhdG9yLm5leHQoKTtcbiAgICAgIGlmIChkb25lKSB7XG4gICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBjYW5jZWwocmVhc29uKSB7XG4gICAgICBpZiAodHlwZW9mIGl0ZXJhdG9yLnRocm93ID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGl0ZXJhdG9yLnRocm93KHJlYXNvbik7XG4gICAgICAgIH0gY2F0Y2ggeyAvKiBgaXRlcmF0b3IudGhyb3coKWAgYWx3YXlzIHRocm93cyBvbiBzaXRlLiBXZSBjYXRjaCBpdC4gKi8gfVxuICAgICAgfVxuICAgIH0sXG4gIH0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWRhYmxlU3RyZWFtRnJvbVJlYWRlck9wdGlvbnMge1xuICAvKiogSWYgdGhlIGByZWFkZXJgIGlzIGFsc28gYSBgRGVuby5DbG9zZXJgLCBhdXRvbWF0aWNhbGx5IGNsb3NlIHRoZSBgcmVhZGVyYFxuICAgKiB3aGVuIGBFT0ZgIGlzIGVuY291bnRlcmVkLCBvciBhIHJlYWQgZXJyb3Igb2NjdXJzLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBgdHJ1ZWAuICovXG4gIGF1dG9DbG9zZT86IGJvb2xlYW47XG5cbiAgLyoqIFRoZSBzaXplIG9mIGNodW5rcyB0byBhbGxvY2F0ZSB0byByZWFkLCB0aGUgZGVmYXVsdCBpcyB+MTZLaUIsIHdoaWNoIGlzXG4gICAqIHRoZSBtYXhpbXVtIHNpemUgdGhhdCBEZW5vIG9wZXJhdGlvbnMgY2FuIGN1cnJlbnRseSBzdXBwb3J0LiAqL1xuICBjaHVua1NpemU/OiBudW1iZXI7XG5cbiAgLyoqIFRoZSBxdWV1aW5nIHN0cmF0ZWd5IHRvIGNyZWF0ZSB0aGUgYFJlYWRhYmxlU3RyZWFtYCB3aXRoLiAqL1xuICBzdHJhdGVneT86IHsgaGlnaFdhdGVyTWFyaz86IG51bWJlciB8IHVuZGVmaW5lZDsgc2l6ZT86IHVuZGVmaW5lZCB9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5PmAgZnJvbSBmcm9tIGEgYERlbm8uUmVhZGVyYC5cbiAqXG4gKiBXaGVuIHRoZSBwdWxsIGFsZ29yaXRobSBpcyBjYWxsZWQgb24gdGhlIHN0cmVhbSwgYSBjaHVuayBmcm9tIHRoZSByZWFkZXJcbiAqIHdpbGwgYmUgcmVhZC4gIFdoZW4gYG51bGxgIGlzIHJldHVybmVkIGZyb20gdGhlIHJlYWRlciwgdGhlIHN0cmVhbSB3aWxsIGJlXG4gKiBjbG9zZWQgYWxvbmcgd2l0aCB0aGUgcmVhZGVyIChpZiBpdCBpcyBhbHNvIGEgYERlbm8uQ2xvc2VyYCkuXG4gKlxuICogQW4gZXhhbXBsZSBjb252ZXJ0aW5nIGEgYERlbm8uRnNGaWxlYCBpbnRvIGEgcmVhZGFibGUgc3RyZWFtOlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyByZWFkYWJsZVN0cmVhbUZyb21SZWFkZXIgfSBmcm9tIFwiLi9tb2QudHNcIjtcbiAqXG4gKiBjb25zdCBmaWxlID0gYXdhaXQgRGVuby5vcGVuKFwiLi9maWxlLnR4dFwiLCB7IHJlYWQ6IHRydWUgfSk7XG4gKiBjb25zdCBmaWxlU3RyZWFtID0gcmVhZGFibGVTdHJlYW1Gcm9tUmVhZGVyKGZpbGUpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkYWJsZVN0cmVhbUZyb21SZWFkZXIoXG4gIHJlYWRlcjogRGVuby5SZWFkZXIgfCAoRGVuby5SZWFkZXIgJiBEZW5vLkNsb3NlciksXG4gIG9wdGlvbnM6IFJlYWRhYmxlU3RyZWFtRnJvbVJlYWRlck9wdGlvbnMgPSB7fSxcbik6IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+IHtcbiAgY29uc3Qge1xuICAgIGF1dG9DbG9zZSA9IHRydWUsXG4gICAgY2h1bmtTaXplID0gREVGQVVMVF9DSFVOS19TSVpFLFxuICAgIHN0cmF0ZWd5LFxuICB9ID0gb3B0aW9ucztcblxuICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICBhc3luYyBwdWxsKGNvbnRyb2xsZXIpIHtcbiAgICAgIGNvbnN0IGNodW5rID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmtTaXplKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlYWQgPSBhd2FpdCByZWFkZXIucmVhZChjaHVuayk7XG4gICAgICAgIGlmIChyZWFkID09PSBudWxsKSB7XG4gICAgICAgICAgaWYgKGlzQ2xvc2VyKHJlYWRlcikgJiYgYXV0b0Nsb3NlKSB7XG4gICAgICAgICAgICByZWFkZXIuY2xvc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmsuc3ViYXJyYXkoMCwgcmVhZCkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb250cm9sbGVyLmVycm9yKGUpO1xuICAgICAgICBpZiAoaXNDbG9zZXIocmVhZGVyKSkge1xuICAgICAgICAgIHJlYWRlci5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBjYW5jZWwoKSB7XG4gICAgICBpZiAoaXNDbG9zZXIocmVhZGVyKSAmJiBhdXRvQ2xvc2UpIHtcbiAgICAgICAgcmVhZGVyLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgfSwgc3RyYXRlZ3kpO1xufVxuXG4vKiogUmVhZCBSZWFkZXIgYHJgIHVudGlsIEVPRiAoYG51bGxgKSBhbmQgcmVzb2x2ZSB0byB0aGUgY29udGVudCBhc1xuICogVWludDhBcnJheWAuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IEJ1ZmZlciB9IGZyb20gXCIuLi9pby9idWZmZXIudHNcIjtcbiAqIGltcG9ydCB7IHJlYWRBbGwgfSBmcm9tIFwiLi9jb252ZXJzaW9uLnRzXCI7XG4gKlxuICogLy8gRXhhbXBsZSBmcm9tIHN0ZGluXG4gKiBjb25zdCBzdGRpbkNvbnRlbnQgPSBhd2FpdCByZWFkQWxsKERlbm8uc3RkaW4pO1xuICpcbiAqIC8vIEV4YW1wbGUgZnJvbSBmaWxlXG4gKiBjb25zdCBmaWxlID0gYXdhaXQgRGVuby5vcGVuKFwibXlfZmlsZS50eHRcIiwge3JlYWQ6IHRydWV9KTtcbiAqIGNvbnN0IG15RmlsZUNvbnRlbnQgPSBhd2FpdCByZWFkQWxsKGZpbGUpO1xuICogRGVuby5jbG9zZShmaWxlLnJpZCk7XG4gKlxuICogLy8gRXhhbXBsZSBmcm9tIGJ1ZmZlclxuICogY29uc3QgbXlEYXRhID0gbmV3IFVpbnQ4QXJyYXkoMTAwKTtcbiAqIC8vIC4uLiBmaWxsIG15RGF0YSBhcnJheSB3aXRoIGRhdGFcbiAqIGNvbnN0IHJlYWRlciA9IG5ldyBCdWZmZXIobXlEYXRhLmJ1ZmZlcik7XG4gKiBjb25zdCBidWZmZXJDb250ZW50ID0gYXdhaXQgcmVhZEFsbChyZWFkZXIpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkQWxsKHI6IERlbm8uUmVhZGVyKTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gIGNvbnN0IGJ1ZiA9IG5ldyBCdWZmZXIoKTtcbiAgYXdhaXQgYnVmLnJlYWRGcm9tKHIpO1xuICByZXR1cm4gYnVmLmJ5dGVzKCk7XG59XG5cbi8qKiBTeW5jaHJvbm91c2x5IHJlYWRzIFJlYWRlciBgcmAgdW50aWwgRU9GIChgbnVsbGApIGFuZCByZXR1cm5zIHRoZSBjb250ZW50XG4gKiBhcyBgVWludDhBcnJheWAuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IEJ1ZmZlciB9IGZyb20gXCIuLi9pby9idWZmZXIudHNcIjtcbiAqIGltcG9ydCB7IHJlYWRBbGxTeW5jIH0gZnJvbSBcIi4vY29udmVyc2lvbi50c1wiO1xuICpcbiAqIC8vIEV4YW1wbGUgZnJvbSBzdGRpblxuICogY29uc3Qgc3RkaW5Db250ZW50ID0gcmVhZEFsbFN5bmMoRGVuby5zdGRpbik7XG4gKlxuICogLy8gRXhhbXBsZSBmcm9tIGZpbGVcbiAqIGNvbnN0IGZpbGUgPSBEZW5vLm9wZW5TeW5jKFwibXlfZmlsZS50eHRcIiwge3JlYWQ6IHRydWV9KTtcbiAqIGNvbnN0IG15RmlsZUNvbnRlbnQgPSByZWFkQWxsU3luYyhmaWxlKTtcbiAqIERlbm8uY2xvc2UoZmlsZS5yaWQpO1xuICpcbiAqIC8vIEV4YW1wbGUgZnJvbSBidWZmZXJcbiAqIGNvbnN0IG15RGF0YSA9IG5ldyBVaW50OEFycmF5KDEwMCk7XG4gKiAvLyAuLi4gZmlsbCBteURhdGEgYXJyYXkgd2l0aCBkYXRhXG4gKiBjb25zdCByZWFkZXIgPSBuZXcgQnVmZmVyKG15RGF0YS5idWZmZXIpO1xuICogY29uc3QgYnVmZmVyQ29udGVudCA9IHJlYWRBbGxTeW5jKHJlYWRlcik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRBbGxTeW5jKHI6IERlbm8uUmVhZGVyU3luYyk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCBidWYgPSBuZXcgQnVmZmVyKCk7XG4gIGJ1Zi5yZWFkRnJvbVN5bmMocik7XG4gIHJldHVybiBidWYuYnl0ZXMoKTtcbn1cblxuLyoqIFdyaXRlIGFsbCB0aGUgY29udGVudCBvZiB0aGUgYXJyYXkgYnVmZmVyIChgYXJyYCkgdG8gdGhlIHdyaXRlciAoYHdgKS5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSBcIi4uL2lvL2J1ZmZlci50c1wiO1xuICogaW1wb3J0IHsgd3JpdGVBbGwgfSBmcm9tIFwiLi9jb252ZXJzaW9uLnRzXCI7XG5cbiAqIC8vIEV4YW1wbGUgd3JpdGluZyB0byBzdGRvdXRcbiAqIGxldCBjb250ZW50Qnl0ZXMgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCJIZWxsbyBXb3JsZFwiKTtcbiAqIGF3YWl0IHdyaXRlQWxsKERlbm8uc3Rkb3V0LCBjb250ZW50Qnl0ZXMpO1xuICpcbiAqIC8vIEV4YW1wbGUgd3JpdGluZyB0byBmaWxlXG4gKiBjb250ZW50Qnl0ZXMgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCJIZWxsbyBXb3JsZFwiKTtcbiAqIGNvbnN0IGZpbGUgPSBhd2FpdCBEZW5vLm9wZW4oJ3Rlc3QuZmlsZScsIHt3cml0ZTogdHJ1ZX0pO1xuICogYXdhaXQgd3JpdGVBbGwoZmlsZSwgY29udGVudEJ5dGVzKTtcbiAqIERlbm8uY2xvc2UoZmlsZS5yaWQpO1xuICpcbiAqIC8vIEV4YW1wbGUgd3JpdGluZyB0byBidWZmZXJcbiAqIGNvbnRlbnRCeXRlcyA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShcIkhlbGxvIFdvcmxkXCIpO1xuICogY29uc3Qgd3JpdGVyID0gbmV3IEJ1ZmZlcigpO1xuICogYXdhaXQgd3JpdGVBbGwod3JpdGVyLCBjb250ZW50Qnl0ZXMpO1xuICogY29uc29sZS5sb2cod3JpdGVyLmJ5dGVzKCkubGVuZ3RoKTsgIC8vIDExXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQWxsKHc6IERlbm8uV3JpdGVyLCBhcnI6IFVpbnQ4QXJyYXkpIHtcbiAgbGV0IG53cml0dGVuID0gMDtcbiAgd2hpbGUgKG53cml0dGVuIDwgYXJyLmxlbmd0aCkge1xuICAgIG53cml0dGVuICs9IGF3YWl0IHcud3JpdGUoYXJyLnN1YmFycmF5KG53cml0dGVuKSk7XG4gIH1cbn1cblxuLyoqIFN5bmNocm9ub3VzbHkgd3JpdGUgYWxsIHRoZSBjb250ZW50IG9mIHRoZSBhcnJheSBidWZmZXIgKGBhcnJgKSB0byB0aGVcbiAqIHdyaXRlciAoYHdgKS5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSBcIi4uL2lvL2J1ZmZlci50c1wiO1xuICogaW1wb3J0IHsgd3JpdGVBbGxTeW5jIH0gZnJvbSBcIi4vY29udmVyc2lvbi50c1wiO1xuICpcbiAqIC8vIEV4YW1wbGUgd3JpdGluZyB0byBzdGRvdXRcbiAqIGxldCBjb250ZW50Qnl0ZXMgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCJIZWxsbyBXb3JsZFwiKTtcbiAqIHdyaXRlQWxsU3luYyhEZW5vLnN0ZG91dCwgY29udGVudEJ5dGVzKTtcbiAqXG4gKiAvLyBFeGFtcGxlIHdyaXRpbmcgdG8gZmlsZVxuICogY29udGVudEJ5dGVzID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKFwiSGVsbG8gV29ybGRcIik7XG4gKiBjb25zdCBmaWxlID0gRGVuby5vcGVuU3luYygndGVzdC5maWxlJywge3dyaXRlOiB0cnVlfSk7XG4gKiB3cml0ZUFsbFN5bmMoZmlsZSwgY29udGVudEJ5dGVzKTtcbiAqIERlbm8uY2xvc2UoZmlsZS5yaWQpO1xuICpcbiAqIC8vIEV4YW1wbGUgd3JpdGluZyB0byBidWZmZXJcbiAqIGNvbnRlbnRCeXRlcyA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShcIkhlbGxvIFdvcmxkXCIpO1xuICogY29uc3Qgd3JpdGVyID0gbmV3IEJ1ZmZlcigpO1xuICogd3JpdGVBbGxTeW5jKHdyaXRlciwgY29udGVudEJ5dGVzKTtcbiAqIGNvbnNvbGUubG9nKHdyaXRlci5ieXRlcygpLmxlbmd0aCk7ICAvLyAxMVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUFsbFN5bmModzogRGVuby5Xcml0ZXJTeW5jLCBhcnI6IFVpbnQ4QXJyYXkpOiB2b2lkIHtcbiAgbGV0IG53cml0dGVuID0gMDtcbiAgd2hpbGUgKG53cml0dGVuIDwgYXJyLmxlbmd0aCkge1xuICAgIG53cml0dGVuICs9IHcud3JpdGVTeW5jKGFyci5zdWJhcnJheShud3JpdHRlbikpO1xuICB9XG59XG5cbi8qKiBUdXJucyBhIFJlYWRlciwgYHJgLCBpbnRvIGFuIGFzeW5jIGl0ZXJhdG9yLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBpdGVyYXRlUmVhZGVyIH0gZnJvbSBcIi4vY29udmVyc2lvbi50c1wiO1xuICpcbiAqIGxldCBmID0gYXdhaXQgRGVuby5vcGVuKFwiL2V0Yy9wYXNzd2RcIik7XG4gKiBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIGl0ZXJhdGVSZWFkZXIoZikpIHtcbiAqICAgY29uc29sZS5sb2coY2h1bmspO1xuICogfVxuICogZi5jbG9zZSgpO1xuICogYGBgXG4gKlxuICogU2Vjb25kIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHR1bmUgc2l6ZSBvZiBhIGJ1ZmZlci5cbiAqIERlZmF1bHQgc2l6ZSBvZiB0aGUgYnVmZmVyIGlzIDMya0IuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGl0ZXJhdGVSZWFkZXIgfSBmcm9tIFwiLi9jb252ZXJzaW9uLnRzXCI7XG4gKlxuICogbGV0IGYgPSBhd2FpdCBEZW5vLm9wZW4oXCIvZXRjL3Bhc3N3ZFwiKTtcbiAqIGNvbnN0IGl0ID0gaXRlcmF0ZVJlYWRlcihmLCB7XG4gKiAgIGJ1ZlNpemU6IDEwMjQgKiAxMDI0XG4gKiB9KTtcbiAqIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgaXQpIHtcbiAqICAgY29uc29sZS5sb2coY2h1bmspO1xuICogfVxuICogZi5jbG9zZSgpO1xuICogYGBgXG4gKlxuICogSXRlcmF0b3IgdXNlcyBhbiBpbnRlcm5hbCBidWZmZXIgb2YgZml4ZWQgc2l6ZSBmb3IgZWZmaWNpZW5jeTsgaXQgcmV0dXJuc1xuICogYSB2aWV3IG9uIHRoYXQgYnVmZmVyIG9uIGVhY2ggaXRlcmF0aW9uLiBJdCBpcyB0aGVyZWZvcmUgY2FsbGVyJ3NcbiAqIHJlc3BvbnNpYmlsaXR5IHRvIGNvcHkgY29udGVudHMgb2YgdGhlIGJ1ZmZlciBpZiBuZWVkZWQ7IG90aGVyd2lzZSB0aGVcbiAqIG5leHQgaXRlcmF0aW9uIHdpbGwgb3ZlcndyaXRlIGNvbnRlbnRzIG9mIHByZXZpb3VzbHkgcmV0dXJuZWQgY2h1bmsuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogaXRlcmF0ZVJlYWRlcihcbiAgcjogRGVuby5SZWFkZXIsXG4gIG9wdGlvbnM/OiB7XG4gICAgYnVmU2l6ZT86IG51bWJlcjtcbiAgfSxcbik6IEFzeW5jSXRlcmFibGVJdGVyYXRvcjxVaW50OEFycmF5PiB7XG4gIGNvbnN0IGJ1ZlNpemUgPSBvcHRpb25zPy5idWZTaXplID8/IERFRkFVTFRfQlVGRkVSX1NJWkU7XG4gIGNvbnN0IGIgPSBuZXcgVWludDhBcnJheShidWZTaXplKTtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByLnJlYWQoYik7XG4gICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgeWllbGQgYi5zdWJhcnJheSgwLCByZXN1bHQpO1xuICB9XG59XG5cbi8qKiBUdXJucyBhIFJlYWRlclN5bmMsIGByYCwgaW50byBhbiBpdGVyYXRvci5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgaXRlcmF0ZVJlYWRlclN5bmMgfSBmcm9tIFwiLi9jb252ZXJzaW9uLnRzXCI7XG4gKlxuICogbGV0IGYgPSBEZW5vLm9wZW5TeW5jKFwiL2V0Yy9wYXNzd2RcIik7XG4gKiBmb3IgKGNvbnN0IGNodW5rIG9mIGl0ZXJhdGVSZWFkZXJTeW5jKGYpKSB7XG4gKiAgIGNvbnNvbGUubG9nKGNodW5rKTtcbiAqIH1cbiAqIGYuY2xvc2UoKTtcbiAqIGBgYFxuICpcbiAqIFNlY29uZCBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byB0dW5lIHNpemUgb2YgYSBidWZmZXIuXG4gKiBEZWZhdWx0IHNpemUgb2YgdGhlIGJ1ZmZlciBpcyAzMmtCLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBpdGVyYXRlUmVhZGVyU3luYyB9IGZyb20gXCIuL2NvbnZlcnNpb24udHNcIjtcblxuICogbGV0IGYgPSBhd2FpdCBEZW5vLm9wZW4oXCIvZXRjL3Bhc3N3ZFwiKTtcbiAqIGNvbnN0IGl0ZXIgPSBpdGVyYXRlUmVhZGVyU3luYyhmLCB7XG4gKiAgIGJ1ZlNpemU6IDEwMjQgKiAxMDI0XG4gKiB9KTtcbiAqIGZvciAoY29uc3QgY2h1bmsgb2YgaXRlcikge1xuICogICBjb25zb2xlLmxvZyhjaHVuayk7XG4gKiB9XG4gKiBmLmNsb3NlKCk7XG4gKiBgYGBcbiAqXG4gKiBJdGVyYXRvciB1c2VzIGFuIGludGVybmFsIGJ1ZmZlciBvZiBmaXhlZCBzaXplIGZvciBlZmZpY2llbmN5OyBpdCByZXR1cm5zXG4gKiBhIHZpZXcgb24gdGhhdCBidWZmZXIgb24gZWFjaCBpdGVyYXRpb24uIEl0IGlzIHRoZXJlZm9yZSBjYWxsZXInc1xuICogcmVzcG9uc2liaWxpdHkgdG8gY29weSBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGlmIG5lZWRlZDsgb3RoZXJ3aXNlIHRoZVxuICogbmV4dCBpdGVyYXRpb24gd2lsbCBvdmVyd3JpdGUgY29udGVudHMgb2YgcHJldmlvdXNseSByZXR1cm5lZCBjaHVuay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyYXRlUmVhZGVyU3luYyhcbiAgcjogRGVuby5SZWFkZXJTeW5jLFxuICBvcHRpb25zPzoge1xuICAgIGJ1ZlNpemU/OiBudW1iZXI7XG4gIH0sXG4pOiBJdGVyYWJsZUl0ZXJhdG9yPFVpbnQ4QXJyYXk+IHtcbiAgY29uc3QgYnVmU2l6ZSA9IG9wdGlvbnM/LmJ1ZlNpemUgPz8gREVGQVVMVF9CVUZGRVJfU0laRTtcbiAgY29uc3QgYiA9IG5ldyBVaW50OEFycmF5KGJ1ZlNpemUpO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHIucmVhZFN5bmMoYik7XG4gICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgeWllbGQgYi5zdWJhcnJheSgwLCByZXN1bHQpO1xuICB9XG59XG5cbi8qKiBDb3BpZXMgZnJvbSBgc3JjYCB0byBgZHN0YCB1bnRpbCBlaXRoZXIgRU9GIChgbnVsbGApIGlzIHJlYWQgZnJvbSBgc3JjYCBvclxuICogYW4gZXJyb3Igb2NjdXJzLiBJdCByZXNvbHZlcyB0byB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCBvciByZWplY3RzIHdpdGhcbiAqIHRoZSBmaXJzdCBlcnJvciBlbmNvdW50ZXJlZCB3aGlsZSBjb3B5aW5nLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBjb3B5IH0gZnJvbSBcIi4vY29udmVyc2lvbi50c1wiO1xuICpcbiAqIGNvbnN0IHNvdXJjZSA9IGF3YWl0IERlbm8ub3BlbihcIm15X2ZpbGUudHh0XCIpO1xuICogY29uc3QgYnl0ZXNDb3BpZWQxID0gYXdhaXQgY29weShzb3VyY2UsIERlbm8uc3Rkb3V0KTtcbiAqIGNvbnN0IGRlc3RpbmF0aW9uID0gYXdhaXQgRGVuby5jcmVhdGUoXCJteV9maWxlXzIudHh0XCIpO1xuICogY29uc3QgYnl0ZXNDb3BpZWQyID0gYXdhaXQgY29weShzb3VyY2UsIGRlc3RpbmF0aW9uKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzcmMgVGhlIHNvdXJjZSB0byBjb3B5IGZyb21cbiAqIEBwYXJhbSBkc3QgVGhlIGRlc3RpbmF0aW9uIHRvIGNvcHkgdG9cbiAqIEBwYXJhbSBvcHRpb25zIENhbiBiZSB1c2VkIHRvIHR1bmUgc2l6ZSBvZiB0aGUgYnVmZmVyLiBEZWZhdWx0IHNpemUgaXMgMzJrQlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weShcbiAgc3JjOiBEZW5vLlJlYWRlcixcbiAgZHN0OiBEZW5vLldyaXRlcixcbiAgb3B0aW9ucz86IHtcbiAgICBidWZTaXplPzogbnVtYmVyO1xuICB9LFxuKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgbGV0IG4gPSAwO1xuICBjb25zdCBidWZTaXplID0gb3B0aW9ucz8uYnVmU2l6ZSA/PyBERUZBVUxUX0JVRkZFUl9TSVpFO1xuICBjb25zdCBiID0gbmV3IFVpbnQ4QXJyYXkoYnVmU2l6ZSk7XG4gIGxldCBnb3RFT0YgPSBmYWxzZTtcbiAgd2hpbGUgKGdvdEVPRiA9PT0gZmFsc2UpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzcmMucmVhZChiKTtcbiAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgICBnb3RFT0YgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbndyaXR0ZW4gPSAwO1xuICAgICAgd2hpbGUgKG53cml0dGVuIDwgcmVzdWx0KSB7XG4gICAgICAgIG53cml0dGVuICs9IGF3YWl0IGRzdC53cml0ZShiLnN1YmFycmF5KG53cml0dGVuLCByZXN1bHQpKTtcbiAgICAgIH1cbiAgICAgIG4gKz0gbndyaXR0ZW47XG4gICAgfVxuICB9XG4gIHJldHVybiBuO1xufVxuIiwgIi8vIEBnZW5lcmF0ZWQgZmlsZSBmcm9tIHdhc21idWlsZCAtLSBkbyBub3QgZWRpdFxuLy8gZGVuby1saW50LWlnbm9yZS1maWxlXG4vLyBkZW5vLWZtdC1pZ25vcmUtZmlsZVxuLy8gc291cmNlLWhhc2g6IDZkNDczMDI2MTRiOGJmNzIzNDNiMjE5YmNlNDc0NTZiNzBmYTUyNzhcbmxldCB3YXNtO1xuXG5pbXBvcnQge1xuICBhdG9taWNfd3JpdGVfZmlsZSxcbiAgbW9kaWZpZWRfdGltZSxcbiAgcmVhZF9maWxlX2J5dGVzLFxufSBmcm9tIFwiLi9zbmlwcGV0cy9kZW5vX2NhY2hlX2Rpci1hMmFlY2FhOTUzNmM5NDAyL2ZzLmpzXCI7XG5pbXBvcnQgKiBhcyBpbXBvcnQwIGZyb20gXCIuL3NuaXBwZXRzL2Rlbm9fY2FjaGVfZGlyLWEyYWVjYWE5NTM2Yzk0MDIvZnMuanNcIjtcblxuY29uc3QgY2FjaGVkVGV4dERlY29kZXIgPSB0eXBlb2YgVGV4dERlY29kZXIgIT09IFwidW5kZWZpbmVkXCJcbiAgPyBuZXcgVGV4dERlY29kZXIoXCJ1dGYtOFwiLCB7IGlnbm9yZUJPTTogdHJ1ZSwgZmF0YWw6IHRydWUgfSlcbiAgOiB7XG4gICAgZGVjb2RlOiAoKSA9PiB7XG4gICAgICB0aHJvdyBFcnJvcihcIlRleHREZWNvZGVyIG5vdCBhdmFpbGFibGVcIik7XG4gICAgfSxcbiAgfTtcblxuaWYgKHR5cGVvZiBUZXh0RGVjb2RlciAhPT0gXCJ1bmRlZmluZWRcIikgY2FjaGVkVGV4dERlY29kZXIuZGVjb2RlKCk7XG5cbmxldCBjYWNoZWRVaW50OE1lbW9yeTAgPSBudWxsO1xuXG5mdW5jdGlvbiBnZXRVaW50OE1lbW9yeTAoKSB7XG4gIGlmIChjYWNoZWRVaW50OE1lbW9yeTAgPT09IG51bGwgfHwgY2FjaGVkVWludDhNZW1vcnkwLmJ5dGVMZW5ndGggPT09IDApIHtcbiAgICBjYWNoZWRVaW50OE1lbW9yeTAgPSBuZXcgVWludDhBcnJheSh3YXNtLm1lbW9yeS5idWZmZXIpO1xuICB9XG4gIHJldHVybiBjYWNoZWRVaW50OE1lbW9yeTA7XG59XG5cbmZ1bmN0aW9uIGdldFN0cmluZ0Zyb21XYXNtMChwdHIsIGxlbikge1xuICBwdHIgPSBwdHIgPj4+IDA7XG4gIHJldHVybiBjYWNoZWRUZXh0RGVjb2Rlci5kZWNvZGUoZ2V0VWludDhNZW1vcnkwKCkuc3ViYXJyYXkocHRyLCBwdHIgKyBsZW4pKTtcbn1cblxuY29uc3QgaGVhcCA9IG5ldyBBcnJheSgxMjgpLmZpbGwodW5kZWZpbmVkKTtcblxuaGVhcC5wdXNoKHVuZGVmaW5lZCwgbnVsbCwgdHJ1ZSwgZmFsc2UpO1xuXG5sZXQgaGVhcF9uZXh0ID0gaGVhcC5sZW5ndGg7XG5cbmZ1bmN0aW9uIGFkZEhlYXBPYmplY3Qob2JqKSB7XG4gIGlmIChoZWFwX25leHQgPT09IGhlYXAubGVuZ3RoKSBoZWFwLnB1c2goaGVhcC5sZW5ndGggKyAxKTtcbiAgY29uc3QgaWR4ID0gaGVhcF9uZXh0O1xuICBoZWFwX25leHQgPSBoZWFwW2lkeF07XG5cbiAgaGVhcFtpZHhdID0gb2JqO1xuICByZXR1cm4gaWR4O1xufVxuXG5mdW5jdGlvbiBnZXRPYmplY3QoaWR4KSB7XG4gIHJldHVybiBoZWFwW2lkeF07XG59XG5cbmZ1bmN0aW9uIGRyb3BPYmplY3QoaWR4KSB7XG4gIGlmIChpZHggPCAxMzIpIHJldHVybjtcbiAgaGVhcFtpZHhdID0gaGVhcF9uZXh0O1xuICBoZWFwX25leHQgPSBpZHg7XG59XG5cbmZ1bmN0aW9uIHRha2VPYmplY3QoaWR4KSB7XG4gIGNvbnN0IHJldCA9IGdldE9iamVjdChpZHgpO1xuICBkcm9wT2JqZWN0KGlkeCk7XG4gIHJldHVybiByZXQ7XG59XG5cbmxldCBXQVNNX1ZFQ1RPUl9MRU4gPSAwO1xuXG5jb25zdCBjYWNoZWRUZXh0RW5jb2RlciA9IHR5cGVvZiBUZXh0RW5jb2RlciAhPT0gXCJ1bmRlZmluZWRcIlxuICA/IG5ldyBUZXh0RW5jb2RlcihcInV0Zi04XCIpXG4gIDoge1xuICAgIGVuY29kZTogKCkgPT4ge1xuICAgICAgdGhyb3cgRXJyb3IoXCJUZXh0RW5jb2RlciBub3QgYXZhaWxhYmxlXCIpO1xuICAgIH0sXG4gIH07XG5cbmNvbnN0IGVuY29kZVN0cmluZyA9IGZ1bmN0aW9uIChhcmcsIHZpZXcpIHtcbiAgcmV0dXJuIGNhY2hlZFRleHRFbmNvZGVyLmVuY29kZUludG8oYXJnLCB2aWV3KTtcbn07XG5cbmZ1bmN0aW9uIHBhc3NTdHJpbmdUb1dhc20wKGFyZywgbWFsbG9jLCByZWFsbG9jKSB7XG4gIGlmIChyZWFsbG9jID09PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBidWYgPSBjYWNoZWRUZXh0RW5jb2Rlci5lbmNvZGUoYXJnKTtcbiAgICBjb25zdCBwdHIgPSBtYWxsb2MoYnVmLmxlbmd0aCkgPj4+IDA7XG4gICAgZ2V0VWludDhNZW1vcnkwKCkuc3ViYXJyYXkocHRyLCBwdHIgKyBidWYubGVuZ3RoKS5zZXQoYnVmKTtcbiAgICBXQVNNX1ZFQ1RPUl9MRU4gPSBidWYubGVuZ3RoO1xuICAgIHJldHVybiBwdHI7XG4gIH1cblxuICBsZXQgbGVuID0gYXJnLmxlbmd0aDtcbiAgbGV0IHB0ciA9IG1hbGxvYyhsZW4pID4+PiAwO1xuXG4gIGNvbnN0IG1lbSA9IGdldFVpbnQ4TWVtb3J5MCgpO1xuXG4gIGxldCBvZmZzZXQgPSAwO1xuXG4gIGZvciAoOyBvZmZzZXQgPCBsZW47IG9mZnNldCsrKSB7XG4gICAgY29uc3QgY29kZSA9IGFyZy5jaGFyQ29kZUF0KG9mZnNldCk7XG4gICAgaWYgKGNvZGUgPiAweDdGKSBicmVhaztcbiAgICBtZW1bcHRyICsgb2Zmc2V0XSA9IGNvZGU7XG4gIH1cblxuICBpZiAob2Zmc2V0ICE9PSBsZW4pIHtcbiAgICBpZiAob2Zmc2V0ICE9PSAwKSB7XG4gICAgICBhcmcgPSBhcmcuc2xpY2Uob2Zmc2V0KTtcbiAgICB9XG4gICAgcHRyID0gcmVhbGxvYyhwdHIsIGxlbiwgbGVuID0gb2Zmc2V0ICsgYXJnLmxlbmd0aCAqIDMpID4+PiAwO1xuICAgIGNvbnN0IHZpZXcgPSBnZXRVaW50OE1lbW9yeTAoKS5zdWJhcnJheShwdHIgKyBvZmZzZXQsIHB0ciArIGxlbik7XG4gICAgY29uc3QgcmV0ID0gZW5jb2RlU3RyaW5nKGFyZywgdmlldyk7XG5cbiAgICBvZmZzZXQgKz0gcmV0LndyaXR0ZW47XG4gIH1cblxuICBXQVNNX1ZFQ1RPUl9MRU4gPSBvZmZzZXQ7XG4gIHJldHVybiBwdHI7XG59XG5cbmZ1bmN0aW9uIGlzTGlrZU5vbmUoeCkge1xuICByZXR1cm4geCA9PT0gdW5kZWZpbmVkIHx8IHggPT09IG51bGw7XG59XG5cbmxldCBjYWNoZWRJbnQzMk1lbW9yeTAgPSBudWxsO1xuXG5mdW5jdGlvbiBnZXRJbnQzMk1lbW9yeTAoKSB7XG4gIGlmIChjYWNoZWRJbnQzMk1lbW9yeTAgPT09IG51bGwgfHwgY2FjaGVkSW50MzJNZW1vcnkwLmJ5dGVMZW5ndGggPT09IDApIHtcbiAgICBjYWNoZWRJbnQzMk1lbW9yeTAgPSBuZXcgSW50MzJBcnJheSh3YXNtLm1lbW9yeS5idWZmZXIpO1xuICB9XG4gIHJldHVybiBjYWNoZWRJbnQzMk1lbW9yeTA7XG59XG5cbmxldCBjYWNoZWRGbG9hdDY0TWVtb3J5MCA9IG51bGw7XG5cbmZ1bmN0aW9uIGdldEZsb2F0NjRNZW1vcnkwKCkge1xuICBpZiAoY2FjaGVkRmxvYXQ2NE1lbW9yeTAgPT09IG51bGwgfHwgY2FjaGVkRmxvYXQ2NE1lbW9yeTAuYnl0ZUxlbmd0aCA9PT0gMCkge1xuICAgIGNhY2hlZEZsb2F0NjRNZW1vcnkwID0gbmV3IEZsb2F0NjRBcnJheSh3YXNtLm1lbW9yeS5idWZmZXIpO1xuICB9XG4gIHJldHVybiBjYWNoZWRGbG9hdDY0TWVtb3J5MDtcbn1cblxuZnVuY3Rpb24gZGVidWdTdHJpbmcodmFsKSB7XG4gIC8vIHByaW1pdGl2ZSB0eXBlc1xuICBjb25zdCB0eXBlID0gdHlwZW9mIHZhbDtcbiAgaWYgKHR5cGUgPT0gXCJudW1iZXJcIiB8fCB0eXBlID09IFwiYm9vbGVhblwiIHx8IHZhbCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGAke3ZhbH1gO1xuICB9XG4gIGlmICh0eXBlID09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gYFwiJHt2YWx9XCJgO1xuICB9XG4gIGlmICh0eXBlID09IFwic3ltYm9sXCIpIHtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHZhbC5kZXNjcmlwdGlvbjtcbiAgICBpZiAoZGVzY3JpcHRpb24gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFwiU3ltYm9sXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgU3ltYm9sKCR7ZGVzY3JpcHRpb259KWA7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlID09IFwiZnVuY3Rpb25cIikge1xuICAgIGNvbnN0IG5hbWUgPSB2YWwubmFtZTtcbiAgICBpZiAodHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIiAmJiBuYW1lLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBgRnVuY3Rpb24oJHtuYW1lfSlgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJGdW5jdGlvblwiO1xuICAgIH1cbiAgfVxuICAvLyBvYmplY3RzXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICBjb25zdCBsZW5ndGggPSB2YWwubGVuZ3RoO1xuICAgIGxldCBkZWJ1ZyA9IFwiW1wiO1xuICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICBkZWJ1ZyArPSBkZWJ1Z1N0cmluZyh2YWxbMF0pO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBkZWJ1ZyArPSBcIiwgXCIgKyBkZWJ1Z1N0cmluZyh2YWxbaV0pO1xuICAgIH1cbiAgICBkZWJ1ZyArPSBcIl1cIjtcbiAgICByZXR1cm4gZGVidWc7XG4gIH1cbiAgLy8gVGVzdCBmb3IgYnVpbHQtaW5cbiAgY29uc3QgYnVpbHRJbk1hdGNoZXMgPSAvXFxbb2JqZWN0IChbXlxcXV0rKVxcXS8uZXhlYyh0b1N0cmluZy5jYWxsKHZhbCkpO1xuICBsZXQgY2xhc3NOYW1lO1xuICBpZiAoYnVpbHRJbk1hdGNoZXMubGVuZ3RoID4gMSkge1xuICAgIGNsYXNzTmFtZSA9IGJ1aWx0SW5NYXRjaGVzWzFdO1xuICB9IGVsc2Uge1xuICAgIC8vIEZhaWxlZCB0byBtYXRjaCB0aGUgc3RhbmRhcmQgJ1tvYmplY3QgQ2xhc3NOYW1lXSdcbiAgICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpO1xuICB9XG4gIGlmIChjbGFzc05hbWUgPT0gXCJPYmplY3RcIikge1xuICAgIC8vIHdlJ3JlIGEgdXNlciBkZWZpbmVkIGNsYXNzIG9yIE9iamVjdFxuICAgIC8vIEpTT04uc3RyaW5naWZ5IGF2b2lkcyBwcm9ibGVtcyB3aXRoIGN5Y2xlcywgYW5kIGlzIGdlbmVyYWxseSBtdWNoXG4gICAgLy8gZWFzaWVyIHRoYW4gbG9vcGluZyB0aHJvdWdoIG93blByb3BlcnRpZXMgb2YgYHZhbGAuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBcIk9iamVjdChcIiArIEpTT04uc3RyaW5naWZ5KHZhbCkgKyBcIilcIjtcbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICByZXR1cm4gXCJPYmplY3RcIjtcbiAgICB9XG4gIH1cbiAgLy8gZXJyb3JzXG4gIGlmICh2YWwgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIHJldHVybiBgJHt2YWwubmFtZX06ICR7dmFsLm1lc3NhZ2V9XFxuJHt2YWwuc3RhY2t9YDtcbiAgfVxuICAvLyBUT0RPIHdlIGNvdWxkIHRlc3QgZm9yIG1vcmUgdGhpbmdzIGhlcmUsIGxpa2UgYFNldGBzIGFuZCBgTWFwYHMuXG4gIHJldHVybiBjbGFzc05hbWU7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUVycm9yKGYsIGFyZ3MpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZi5hcHBseSh0aGlzLCBhcmdzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHdhc20uX193YmluZGdlbl9leG5fc3RvcmUoYWRkSGVhcE9iamVjdChlKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QXJyYXlVOEZyb21XYXNtMChwdHIsIGxlbikge1xuICBwdHIgPSBwdHIgPj4+IDA7XG4gIHJldHVybiBnZXRVaW50OE1lbW9yeTAoKS5zdWJhcnJheShwdHIgLyAxLCBwdHIgLyAxICsgbGVuKTtcbn1cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVybF90b19maWxlbmFtZSh1cmwpIHtcbiAgbGV0IGRlZmVycmVkM18wO1xuICBsZXQgZGVmZXJyZWQzXzE7XG4gIHRyeSB7XG4gICAgY29uc3QgcmV0cHRyID0gd2FzbS5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKC0xNik7XG4gICAgY29uc3QgcHRyMCA9IHBhc3NTdHJpbmdUb1dhc20wKFxuICAgICAgdXJsLFxuICAgICAgd2FzbS5fX3diaW5kZ2VuX21hbGxvYyxcbiAgICAgIHdhc20uX193YmluZGdlbl9yZWFsbG9jLFxuICAgICk7XG4gICAgY29uc3QgbGVuMCA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICB3YXNtLnVybF90b19maWxlbmFtZShyZXRwdHIsIHB0cjAsIGxlbjApO1xuICAgIHZhciByMCA9IGdldEludDMyTWVtb3J5MCgpW3JldHB0ciAvIDQgKyAwXTtcbiAgICB2YXIgcjEgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMV07XG4gICAgdmFyIHIyID0gZ2V0SW50MzJNZW1vcnkwKClbcmV0cHRyIC8gNCArIDJdO1xuICAgIHZhciByMyA9IGdldEludDMyTWVtb3J5MCgpW3JldHB0ciAvIDQgKyAzXTtcbiAgICB2YXIgcHRyMiA9IHIwO1xuICAgIHZhciBsZW4yID0gcjE7XG4gICAgaWYgKHIzKSB7XG4gICAgICBwdHIyID0gMDtcbiAgICAgIGxlbjIgPSAwO1xuICAgICAgdGhyb3cgdGFrZU9iamVjdChyMik7XG4gICAgfVxuICAgIGRlZmVycmVkM18wID0gcHRyMjtcbiAgICBkZWZlcnJlZDNfMSA9IGxlbjI7XG4gICAgcmV0dXJuIGdldFN0cmluZ0Zyb21XYXNtMChwdHIyLCBsZW4yKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB3YXNtLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoMTYpO1xuICAgIHdhc20uX193YmluZGdlbl9mcmVlKGRlZmVycmVkM18wLCBkZWZlcnJlZDNfMSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFzc0FycmF5OFRvV2FzbTAoYXJnLCBtYWxsb2MpIHtcbiAgY29uc3QgcHRyID0gbWFsbG9jKGFyZy5sZW5ndGggKiAxKSA+Pj4gMDtcbiAgZ2V0VWludDhNZW1vcnkwKCkuc2V0KGFyZywgcHRyIC8gMSk7XG4gIFdBU01fVkVDVE9SX0xFTiA9IGFyZy5sZW5ndGg7XG4gIHJldHVybiBwdHI7XG59XG5cbmNvbnN0IEdsb2JhbEh0dHBDYWNoZUZpbmFsaXphdGlvbiA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgocHRyKSA9PlxuICB3YXNtLl9fd2JnX2dsb2JhbGh0dHBjYWNoZV9mcmVlKHB0ciA+Pj4gMClcbik7XG4vKiogKi9cbmV4cG9ydCBjbGFzcyBHbG9iYWxIdHRwQ2FjaGUge1xuICBzdGF0aWMgX193cmFwKHB0cikge1xuICAgIHB0ciA9IHB0ciA+Pj4gMDtcbiAgICBjb25zdCBvYmogPSBPYmplY3QuY3JlYXRlKEdsb2JhbEh0dHBDYWNoZS5wcm90b3R5cGUpO1xuICAgIG9iai5fX3diZ19wdHIgPSBwdHI7XG4gICAgR2xvYmFsSHR0cENhY2hlRmluYWxpemF0aW9uLnJlZ2lzdGVyKG9iaiwgb2JqLl9fd2JnX3B0ciwgb2JqKTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgX19kZXN0cm95X2ludG9fcmF3KCkge1xuICAgIGNvbnN0IHB0ciA9IHRoaXMuX193YmdfcHRyO1xuICAgIHRoaXMuX193YmdfcHRyID0gMDtcbiAgICBHbG9iYWxIdHRwQ2FjaGVGaW5hbGl6YXRpb24udW5yZWdpc3Rlcih0aGlzKTtcbiAgICByZXR1cm4gcHRyO1xuICB9XG5cbiAgZnJlZSgpIHtcbiAgICBjb25zdCBwdHIgPSB0aGlzLl9fZGVzdHJveV9pbnRvX3JhdygpO1xuICAgIHdhc20uX193YmdfZ2xvYmFsaHR0cGNhY2hlX2ZyZWUocHRyKTtcbiAgfVxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAgICogQHJldHVybnMge0dsb2JhbEh0dHBDYWNoZX1cbiAgICovXG4gIHN0YXRpYyBuZXcocGF0aCkge1xuICAgIGNvbnN0IHB0cjAgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgIHBhdGgsXG4gICAgICB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLFxuICAgICAgd2FzbS5fX3diaW5kZ2VuX3JlYWxsb2MsXG4gICAgKTtcbiAgICBjb25zdCBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgIGNvbnN0IHJldCA9IHdhc20uZ2xvYmFsaHR0cGNhY2hlX25ldyhwdHIwLCBsZW4wKTtcbiAgICByZXR1cm4gR2xvYmFsSHR0cENhY2hlLl9fd3JhcChyZXQpO1xuICB9XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEByZXR1cm5zIHthbnl9XG4gICAqL1xuICBnZXRIZWFkZXJzKHVybCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXRwdHIgPSB3YXNtLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoLTE2KTtcbiAgICAgIGNvbnN0IHB0cjAgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgICAgdXJsLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyxcbiAgICAgICk7XG4gICAgICBjb25zdCBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgICAgd2FzbS5nbG9iYWxodHRwY2FjaGVfZ2V0SGVhZGVycyhyZXRwdHIsIHRoaXMuX193YmdfcHRyLCBwdHIwLCBsZW4wKTtcbiAgICAgIHZhciByMCA9IGdldEludDMyTWVtb3J5MCgpW3JldHB0ciAvIDQgKyAwXTtcbiAgICAgIHZhciByMSA9IGdldEludDMyTWVtb3J5MCgpW3JldHB0ciAvIDQgKyAxXTtcbiAgICAgIHZhciByMiA9IGdldEludDMyTWVtb3J5MCgpW3JldHB0ciAvIDQgKyAyXTtcbiAgICAgIGlmIChyMikge1xuICAgICAgICB0aHJvdyB0YWtlT2JqZWN0KHIxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YWtlT2JqZWN0KHIwKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgd2FzbS5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKDE2KTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHJldHVybnMge2FueX1cbiAgICovXG4gIGdldEZpbGVUZXh0KHVybCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXRwdHIgPSB3YXNtLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoLTE2KTtcbiAgICAgIGNvbnN0IHB0cjAgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgICAgdXJsLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyxcbiAgICAgICk7XG4gICAgICBjb25zdCBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgICAgd2FzbS5nbG9iYWxodHRwY2FjaGVfZ2V0RmlsZVRleHQocmV0cHRyLCB0aGlzLl9fd2JnX3B0ciwgcHRyMCwgbGVuMCk7XG4gICAgICB2YXIgcjAgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMF07XG4gICAgICB2YXIgcjEgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMV07XG4gICAgICB2YXIgcjIgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMl07XG4gICAgICBpZiAocjIpIHtcbiAgICAgICAgdGhyb3cgdGFrZU9iamVjdChyMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGFrZU9iamVjdChyMCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHdhc20uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigxNik7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7YW55fSBoZWFkZXJzXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gdGV4dFxuICAgKi9cbiAgc2V0KHVybCwgaGVhZGVycywgdGV4dCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXRwdHIgPSB3YXNtLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoLTE2KTtcbiAgICAgIGNvbnN0IHB0cjAgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgICAgdXJsLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyxcbiAgICAgICk7XG4gICAgICBjb25zdCBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgICAgY29uc3QgcHRyMSA9IHBhc3NBcnJheThUb1dhc20wKHRleHQsIHdhc20uX193YmluZGdlbl9tYWxsb2MpO1xuICAgICAgY29uc3QgbGVuMSA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICAgIHdhc20uZ2xvYmFsaHR0cGNhY2hlX3NldChcbiAgICAgICAgcmV0cHRyLFxuICAgICAgICB0aGlzLl9fd2JnX3B0cixcbiAgICAgICAgcHRyMCxcbiAgICAgICAgbGVuMCxcbiAgICAgICAgYWRkSGVhcE9iamVjdChoZWFkZXJzKSxcbiAgICAgICAgcHRyMSxcbiAgICAgICAgbGVuMSxcbiAgICAgICk7XG4gICAgICB2YXIgcjAgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMF07XG4gICAgICB2YXIgcjEgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMV07XG4gICAgICBpZiAocjEpIHtcbiAgICAgICAgdGhyb3cgdGFrZU9iamVjdChyMCk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHdhc20uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigxNik7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IExvY2FsSHR0cENhY2hlRmluYWxpemF0aW9uID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KChwdHIpID0+XG4gIHdhc20uX193YmdfbG9jYWxodHRwY2FjaGVfZnJlZShwdHIgPj4+IDApXG4pO1xuLyoqICovXG5leHBvcnQgY2xhc3MgTG9jYWxIdHRwQ2FjaGUge1xuICBzdGF0aWMgX193cmFwKHB0cikge1xuICAgIHB0ciA9IHB0ciA+Pj4gMDtcbiAgICBjb25zdCBvYmogPSBPYmplY3QuY3JlYXRlKExvY2FsSHR0cENhY2hlLnByb3RvdHlwZSk7XG4gICAgb2JqLl9fd2JnX3B0ciA9IHB0cjtcbiAgICBMb2NhbEh0dHBDYWNoZUZpbmFsaXphdGlvbi5yZWdpc3RlcihvYmosIG9iai5fX3diZ19wdHIsIG9iaik7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIF9fZGVzdHJveV9pbnRvX3JhdygpIHtcbiAgICBjb25zdCBwdHIgPSB0aGlzLl9fd2JnX3B0cjtcbiAgICB0aGlzLl9fd2JnX3B0ciA9IDA7XG4gICAgTG9jYWxIdHRwQ2FjaGVGaW5hbGl6YXRpb24udW5yZWdpc3Rlcih0aGlzKTtcbiAgICByZXR1cm4gcHRyO1xuICB9XG5cbiAgZnJlZSgpIHtcbiAgICBjb25zdCBwdHIgPSB0aGlzLl9fZGVzdHJveV9pbnRvX3JhdygpO1xuICAgIHdhc20uX193YmdfbG9jYWxodHRwY2FjaGVfZnJlZShwdHIpO1xuICB9XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYWxfcGF0aFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZ2xvYmFsX3BhdGhcbiAgICogQHJldHVybnMge0xvY2FsSHR0cENhY2hlfVxuICAgKi9cbiAgc3RhdGljIG5ldyhsb2NhbF9wYXRoLCBnbG9iYWxfcGF0aCkge1xuICAgIGNvbnN0IHB0cjAgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgIGxvY2FsX3BhdGgsXG4gICAgICB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLFxuICAgICAgd2FzbS5fX3diaW5kZ2VuX3JlYWxsb2MsXG4gICAgKTtcbiAgICBjb25zdCBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgIGNvbnN0IHB0cjEgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgIGdsb2JhbF9wYXRoLFxuICAgICAgd2FzbS5fX3diaW5kZ2VuX21hbGxvYyxcbiAgICAgIHdhc20uX193YmluZGdlbl9yZWFsbG9jLFxuICAgICk7XG4gICAgY29uc3QgbGVuMSA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICBjb25zdCByZXQgPSB3YXNtLmxvY2FsaHR0cGNhY2hlX25ldyhwdHIwLCBsZW4wLCBwdHIxLCBsZW4xKTtcbiAgICByZXR1cm4gTG9jYWxIdHRwQ2FjaGUuX193cmFwKHJldCk7XG4gIH1cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHJldHVybnMge2FueX1cbiAgICovXG4gIGdldEhlYWRlcnModXJsKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJldHB0ciA9IHdhc20uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigtMTYpO1xuICAgICAgY29uc3QgcHRyMCA9IHBhc3NTdHJpbmdUb1dhc20wKFxuICAgICAgICB1cmwsXG4gICAgICAgIHdhc20uX193YmluZGdlbl9tYWxsb2MsXG4gICAgICAgIHdhc20uX193YmluZGdlbl9yZWFsbG9jLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGxlbjAgPSBXQVNNX1ZFQ1RPUl9MRU47XG4gICAgICB3YXNtLmxvY2FsaHR0cGNhY2hlX2dldEhlYWRlcnMocmV0cHRyLCB0aGlzLl9fd2JnX3B0ciwgcHRyMCwgbGVuMCk7XG4gICAgICB2YXIgcjAgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMF07XG4gICAgICB2YXIgcjEgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMV07XG4gICAgICB2YXIgcjIgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMl07XG4gICAgICBpZiAocjIpIHtcbiAgICAgICAgdGhyb3cgdGFrZU9iamVjdChyMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGFrZU9iamVjdChyMCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHdhc20uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigxNik7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEByZXR1cm5zIHthbnl9XG4gICAqL1xuICBnZXRGaWxlVGV4dCh1cmwpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmV0cHRyID0gd2FzbS5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKC0xNik7XG4gICAgICBjb25zdCBwdHIwID0gcGFzc1N0cmluZ1RvV2FzbTAoXG4gICAgICAgIHVybCxcbiAgICAgICAgd2FzbS5fX3diaW5kZ2VuX21hbGxvYyxcbiAgICAgICAgd2FzbS5fX3diaW5kZ2VuX3JlYWxsb2MsXG4gICAgICApO1xuICAgICAgY29uc3QgbGVuMCA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICAgIHdhc20ubG9jYWxodHRwY2FjaGVfZ2V0RmlsZVRleHQocmV0cHRyLCB0aGlzLl9fd2JnX3B0ciwgcHRyMCwgbGVuMCk7XG4gICAgICB2YXIgcjAgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMF07XG4gICAgICB2YXIgcjEgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMV07XG4gICAgICB2YXIgcjIgPSBnZXRJbnQzMk1lbW9yeTAoKVtyZXRwdHIgLyA0ICsgMl07XG4gICAgICBpZiAocjIpIHtcbiAgICAgICAgdGhyb3cgdGFrZU9iamVjdChyMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGFrZU9iamVjdChyMCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHdhc20uX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcigxNik7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7YW55fSBoZWFkZXJzXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gdGV4dFxuICAgKi9cbiAgc2V0KHVybCwgaGVhZGVycywgdGV4dCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXRwdHIgPSB3YXNtLl9fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIoLTE2KTtcbiAgICAgIGNvbnN0IHB0cjAgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgICAgdXJsLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyxcbiAgICAgICk7XG4gICAgICBjb25zdCBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgICAgY29uc3QgcHRyMSA9IHBhc3NBcnJheThUb1dhc20wKHRleHQsIHdhc20uX193YmluZGdlbl9tYWxsb2MpO1xuICAgICAgY29uc3QgbGVuMSA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICAgIHdhc20ubG9jYWxodHRwY2FjaGVfc2V0KFxuICAgICAgICByZXRwdHIsXG4gICAgICAgIHRoaXMuX193YmdfcHRyLFxuICAgICAgICBwdHIwLFxuICAgICAgICBsZW4wLFxuICAgICAgICBhZGRIZWFwT2JqZWN0KGhlYWRlcnMpLFxuICAgICAgICBwdHIxLFxuICAgICAgICBsZW4xLFxuICAgICAgKTtcbiAgICAgIHZhciByMCA9IGdldEludDMyTWVtb3J5MCgpW3JldHB0ciAvIDQgKyAwXTtcbiAgICAgIHZhciByMSA9IGdldEludDMyTWVtb3J5MCgpW3JldHB0ciAvIDQgKyAxXTtcbiAgICAgIGlmIChyMSkge1xuICAgICAgICB0aHJvdyB0YWtlT2JqZWN0KHIwKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgd2FzbS5fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyKDE2KTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgaW1wb3J0cyA9IHtcbiAgX193YmluZGdlbl9wbGFjZWhvbGRlcl9fOiB7XG4gICAgX193YmluZGdlbl9lcnJvcl9uZXc6IGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgICBjb25zdCByZXQgPSBuZXcgRXJyb3IoZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzAsIGFyZzEpKTtcbiAgICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG4gICAgfSxcbiAgICBfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZjogZnVuY3Rpb24gKGFyZzApIHtcbiAgICAgIHRha2VPYmplY3QoYXJnMCk7XG4gICAgfSxcbiAgICBfX3diaW5kZ2VuX3N0cmluZ19nZXQ6IGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgICBjb25zdCBvYmogPSBnZXRPYmplY3QoYXJnMSk7XG4gICAgICBjb25zdCByZXQgPSB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiID8gb2JqIDogdW5kZWZpbmVkO1xuICAgICAgdmFyIHB0cjEgPSBpc0xpa2VOb25lKHJldClcbiAgICAgICAgPyAwXG4gICAgICAgIDogcGFzc1N0cmluZ1RvV2FzbTAoXG4gICAgICAgICAgcmV0LFxuICAgICAgICAgIHdhc20uX193YmluZGdlbl9tYWxsb2MsXG4gICAgICAgICAgd2FzbS5fX3diaW5kZ2VuX3JlYWxsb2MsXG4gICAgICAgICk7XG4gICAgICB2YXIgbGVuMSA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICAgIGdldEludDMyTWVtb3J5MCgpW2FyZzAgLyA0ICsgMV0gPSBsZW4xO1xuICAgICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAwXSA9IHB0cjE7XG4gICAgfSxcbiAgICBfX3diaW5kZ2VuX3N0cmluZ19uZXc6IGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgICBjb25zdCByZXQgPSBnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMCwgYXJnMSk7XG4gICAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xuICAgIH0sXG4gICAgX193YmdfcmVhZGZpbGVieXRlc185Y2U4NzBkZTg2YjJjYzM2OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gaGFuZGxlRXJyb3IoZnVuY3Rpb24gKGFyZzAsIGFyZzEpIHtcbiAgICAgICAgY29uc3QgcmV0ID0gcmVhZF9maWxlX2J5dGVzKGdldFN0cmluZ0Zyb21XYXNtMChhcmcwLCBhcmcxKSk7XG4gICAgICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG4gICAgICB9LCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgX193YmluZGdlbl9pc19udWxsOiBmdW5jdGlvbiAoYXJnMCkge1xuICAgICAgY29uc3QgcmV0ID0gZ2V0T2JqZWN0KGFyZzApID09PSBudWxsO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIF9fd2JpbmRnZW5faXNfdW5kZWZpbmVkOiBmdW5jdGlvbiAoYXJnMCkge1xuICAgICAgY29uc3QgcmV0ID0gZ2V0T2JqZWN0KGFyZzApID09PSB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0sXG4gICAgX193YmdfYXRvbWljd3JpdGVmaWxlXzMxMGM1ZDY5MGVkNGExODY6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBoYW5kbGVFcnJvcihmdW5jdGlvbiAoYXJnMCwgYXJnMSwgYXJnMiwgYXJnMykge1xuICAgICAgICBjb25zdCByZXQgPSBhdG9taWNfd3JpdGVfZmlsZShcbiAgICAgICAgICBnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMCwgYXJnMSksXG4gICAgICAgICAgZ2V0QXJyYXlVOEZyb21XYXNtMChhcmcyLCBhcmczKSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbiAgICAgIH0sIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBfX3diZ19tb2RpZmllZHRpbWVfNjdlZjE3YWM0ZWViZjUyYzogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGhhbmRsZUVycm9yKGZ1bmN0aW9uIChhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgICAgIGNvbnN0IHJldCA9IG1vZGlmaWVkX3RpbWUoZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzEsIGFyZzIpKTtcbiAgICAgICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAxXSA9IGlzTGlrZU5vbmUocmV0KSA/IDAgOiByZXQ7XG4gICAgICAgIGdldEludDMyTWVtb3J5MCgpW2FyZzAgLyA0ICsgMF0gPSAhaXNMaWtlTm9uZShyZXQpO1xuICAgICAgfSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIF9fd2JpbmRnZW5fbnVtYmVyX2dldDogZnVuY3Rpb24gKGFyZzAsIGFyZzEpIHtcbiAgICAgIGNvbnN0IG9iaiA9IGdldE9iamVjdChhcmcxKTtcbiAgICAgIGNvbnN0IHJldCA9IHR5cGVvZiBvYmogPT09IFwibnVtYmVyXCIgPyBvYmogOiB1bmRlZmluZWQ7XG4gICAgICBnZXRGbG9hdDY0TWVtb3J5MCgpW2FyZzAgLyA4ICsgMV0gPSBpc0xpa2VOb25lKHJldCkgPyAwIDogcmV0O1xuICAgICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAwXSA9ICFpc0xpa2VOb25lKHJldCk7XG4gICAgfSxcbiAgICBfX3diaW5kZ2VuX2lzX29iamVjdDogZnVuY3Rpb24gKGFyZzApIHtcbiAgICAgIGNvbnN0IHZhbCA9IGdldE9iamVjdChhcmcwKTtcbiAgICAgIGNvbnN0IHJldCA9IHR5cGVvZiB2YWwgPT09IFwib2JqZWN0XCIgJiYgdmFsICE9PSBudWxsO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIF9fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXE6IGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgICBjb25zdCByZXQgPSBnZXRPYmplY3QoYXJnMCkgPT0gZ2V0T2JqZWN0KGFyZzEpO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIF9fd2JpbmRnZW5fYm9vbGVhbl9nZXQ6IGZ1bmN0aW9uIChhcmcwKSB7XG4gICAgICBjb25zdCB2ID0gZ2V0T2JqZWN0KGFyZzApO1xuICAgICAgY29uc3QgcmV0ID0gdHlwZW9mIHYgPT09IFwiYm9vbGVhblwiID8gKHYgPyAxIDogMCkgOiAyO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIF9fd2JnX1N0cmluZ184ODgxMGRmZWI0MDIxOTAyOiBmdW5jdGlvbiAoYXJnMCwgYXJnMSkge1xuICAgICAgY29uc3QgcmV0ID0gU3RyaW5nKGdldE9iamVjdChhcmcxKSk7XG4gICAgICBjb25zdCBwdHIxID0gcGFzc1N0cmluZ1RvV2FzbTAoXG4gICAgICAgIHJldCxcbiAgICAgICAgd2FzbS5fX3diaW5kZ2VuX21hbGxvYyxcbiAgICAgICAgd2FzbS5fX3diaW5kZ2VuX3JlYWxsb2MsXG4gICAgICApO1xuICAgICAgY29uc3QgbGVuMSA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICAgIGdldEludDMyTWVtb3J5MCgpW2FyZzAgLyA0ICsgMV0gPSBsZW4xO1xuICAgICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAwXSA9IHB0cjE7XG4gICAgfSxcbiAgICBfX3diZ19zZXRfODQxYWM1N2NmZjNkNjcyYjogZnVuY3Rpb24gKGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICAgIGdldE9iamVjdChhcmcwKVt0YWtlT2JqZWN0KGFyZzEpXSA9IHRha2VPYmplY3QoYXJnMik7XG4gICAgfSxcbiAgICBfX3diZ19uZXdfYWJkYTc2ZTg4M2JhOGE1ZjogZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmV0ID0gbmV3IEVycm9yKCk7XG4gICAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xuICAgIH0sXG4gICAgX193Ymdfc3RhY2tfNjU4Mjc5ZmU0NDU0MWNmNjogZnVuY3Rpb24gKGFyZzAsIGFyZzEpIHtcbiAgICAgIGNvbnN0IHJldCA9IGdldE9iamVjdChhcmcxKS5zdGFjaztcbiAgICAgIGNvbnN0IHB0cjEgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgICAgcmV0LFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyxcbiAgICAgICk7XG4gICAgICBjb25zdCBsZW4xID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAxXSA9IGxlbjE7XG4gICAgICBnZXRJbnQzMk1lbW9yeTAoKVthcmcwIC8gNCArIDBdID0gcHRyMTtcbiAgICB9LFxuICAgIF9fd2JnX2Vycm9yX2Y4NTE2NjdhZjcxYmNmYzY6IGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgICBsZXQgZGVmZXJyZWQwXzA7XG4gICAgICBsZXQgZGVmZXJyZWQwXzE7XG4gICAgICB0cnkge1xuICAgICAgICBkZWZlcnJlZDBfMCA9IGFyZzA7XG4gICAgICAgIGRlZmVycmVkMF8xID0gYXJnMTtcbiAgICAgICAgY29uc29sZS5lcnJvcihnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMCwgYXJnMSkpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgd2FzbS5fX3diaW5kZ2VuX2ZyZWUoZGVmZXJyZWQwXzAsIGRlZmVycmVkMF8xKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIF9fd2JpbmRnZW5faXNfc3RyaW5nOiBmdW5jdGlvbiAoYXJnMCkge1xuICAgICAgY29uc3QgcmV0ID0gdHlwZW9mIChnZXRPYmplY3QoYXJnMCkpID09PSBcInN0cmluZ1wiO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIF9fd2JpbmRnZW5faXNfZnVuY3Rpb246IGZ1bmN0aW9uIChhcmcwKSB7XG4gICAgICBjb25zdCByZXQgPSB0eXBlb2YgKGdldE9iamVjdChhcmcwKSkgPT09IFwiZnVuY3Rpb25cIjtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcbiAgICBfX3diZ19uZXdfMGYyYjcxY2EyZjJhNjAyOTogZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmV0ID0gbmV3IE1hcCgpO1xuICAgICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbiAgICB9LFxuICAgIF9fd2JnX25leHRfZjRiYzBlOTZlYTY3ZGE2ODogZnVuY3Rpb24gKGFyZzApIHtcbiAgICAgIGNvbnN0IHJldCA9IGdldE9iamVjdChhcmcwKS5uZXh0O1xuICAgICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbiAgICB9LFxuICAgIF9fd2JnX3ZhbHVlXzJmNGVmMjAzNmJmYWQyOGU6IGZ1bmN0aW9uIChhcmcwKSB7XG4gICAgICBjb25zdCByZXQgPSBnZXRPYmplY3QoYXJnMCkudmFsdWU7XG4gICAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xuICAgIH0sXG4gICAgX193YmdfaXRlcmF0b3JfN2M3ZTU4ZjYyZWI4NDcwMDogZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmV0ID0gU3ltYm9sLml0ZXJhdG9yO1xuICAgICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbiAgICB9LFxuICAgIF9fd2JnX25ld18yYjZmZWE0ZWEwM2IxYjk1OiBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXQgPSBuZXcgT2JqZWN0KCk7XG4gICAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xuICAgIH0sXG4gICAgX193YmdfZ2V0XzczMDNlZDJlZjAyNmIyZjU6IGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgICBjb25zdCByZXQgPSBnZXRPYmplY3QoYXJnMClbYXJnMSA+Pj4gMF07XG4gICAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xuICAgIH0sXG4gICAgX193YmdfbGVuZ3RoXzgyMGM3ODY5NzNhYmRkOGE6IGZ1bmN0aW9uIChhcmcwKSB7XG4gICAgICBjb25zdCByZXQgPSBnZXRPYmplY3QoYXJnMCkubGVuZ3RoO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIF9fd2JnX2luc3RhbmNlb2ZfQXJyYXlCdWZmZXJfZWYyNjMyYWEwZDRiZmZmODogZnVuY3Rpb24gKGFyZzApIHtcbiAgICAgIGxldCByZXN1bHQ7XG4gICAgICB0cnkge1xuICAgICAgICByZXN1bHQgPSBnZXRPYmplY3QoYXJnMCkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJldCA9IHJlc3VsdDtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcbiAgICBfX3diZ19uZXdfODcyOTdmMjI5NzMxNTdjODogZnVuY3Rpb24gKGFyZzAsIGFyZzEpIHtcbiAgICAgIGNvbnN0IHJldCA9IG5ldyBFcnJvcihnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMCwgYXJnMSkpO1xuICAgICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbiAgICB9LFxuICAgIF9fd2JnX2NhbGxfNTU3YTJmMmRlYWNjNDkxMjogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGhhbmRsZUVycm9yKGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgICAgIGNvbnN0IHJldCA9IGdldE9iamVjdChhcmcwKS5jYWxsKGdldE9iamVjdChhcmcxKSk7XG4gICAgICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG4gICAgICB9LCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgX193Ymdfc2V0X2RhN2JlN2JmMGUwMzdiMTQ6IGZ1bmN0aW9uIChhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgICBjb25zdCByZXQgPSBnZXRPYmplY3QoYXJnMCkuc2V0KGdldE9iamVjdChhcmcxKSwgZ2V0T2JqZWN0KGFyZzIpKTtcbiAgICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG4gICAgfSxcbiAgICBfX3diZ19uZXh0X2VjMDYxZTQ4YTBlNzJhOTY6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBoYW5kbGVFcnJvcihmdW5jdGlvbiAoYXJnMCkge1xuICAgICAgICBjb25zdCByZXQgPSBnZXRPYmplY3QoYXJnMCkubmV4dCgpO1xuICAgICAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xuICAgICAgfSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIF9fd2JnX2RvbmVfYjZhYmIyN2Q0MmI2Mzg2NzogZnVuY3Rpb24gKGFyZzApIHtcbiAgICAgIGNvbnN0IHJldCA9IGdldE9iamVjdChhcmcwKS5kb25lO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIF9fd2JnX2VudHJpZXNfMTNlMDExNDUzNzc2NDY4ZjogZnVuY3Rpb24gKGFyZzApIHtcbiAgICAgIGNvbnN0IHJldCA9IE9iamVjdC5lbnRyaWVzKGdldE9iamVjdChhcmcwKSk7XG4gICAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xuICAgIH0sXG4gICAgX193YmdfZ2V0X2Y1M2M5MjEyOTFjMzgxYmQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBoYW5kbGVFcnJvcihmdW5jdGlvbiAoYXJnMCwgYXJnMSkge1xuICAgICAgICBjb25zdCByZXQgPSBSZWZsZWN0LmdldChnZXRPYmplY3QoYXJnMCksIGdldE9iamVjdChhcmcxKSk7XG4gICAgICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG4gICAgICB9LCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgX193YmdfYnVmZmVyXzU1YmE3YTZiMWI5MmUyYWM6IGZ1bmN0aW9uIChhcmcwKSB7XG4gICAgICBjb25zdCByZXQgPSBnZXRPYmplY3QoYXJnMCkuYnVmZmVyO1xuICAgICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbiAgICB9LFxuICAgIF9fd2JnX25ld18wOTkzOGE3ZDAyMGYwNDliOiBmdW5jdGlvbiAoYXJnMCkge1xuICAgICAgY29uc3QgcmV0ID0gbmV3IFVpbnQ4QXJyYXkoZ2V0T2JqZWN0KGFyZzApKTtcbiAgICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG4gICAgfSxcbiAgICBfX3diZ19pbnN0YW5jZW9mX1VpbnQ4QXJyYXlfMTM0OTY0MGFmMmRhMmU4ODogZnVuY3Rpb24gKGFyZzApIHtcbiAgICAgIGxldCByZXN1bHQ7XG4gICAgICB0cnkge1xuICAgICAgICByZXN1bHQgPSBnZXRPYmplY3QoYXJnMCkgaW5zdGFuY2VvZiBVaW50OEFycmF5O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgcmV0ID0gcmVzdWx0O1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIF9fd2JnX2xlbmd0aF8wYWFiN2ZmZDY1YWQxOWVkOiBmdW5jdGlvbiAoYXJnMCkge1xuICAgICAgY29uc3QgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLmxlbmd0aDtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcbiAgICBfX3diZ19zZXRfMzY5OGUzY2E1MTliM2MzYzogZnVuY3Rpb24gKGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICAgIGdldE9iamVjdChhcmcwKS5zZXQoZ2V0T2JqZWN0KGFyZzEpLCBhcmcyID4+PiAwKTtcbiAgICB9LFxuICAgIF9fd2JpbmRnZW5fZGVidWdfc3RyaW5nOiBmdW5jdGlvbiAoYXJnMCwgYXJnMSkge1xuICAgICAgY29uc3QgcmV0ID0gZGVidWdTdHJpbmcoZ2V0T2JqZWN0KGFyZzEpKTtcbiAgICAgIGNvbnN0IHB0cjEgPSBwYXNzU3RyaW5nVG9XYXNtMChcbiAgICAgICAgcmV0LFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLFxuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyxcbiAgICAgICk7XG4gICAgICBjb25zdCBsZW4xID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAxXSA9IGxlbjE7XG4gICAgICBnZXRJbnQzMk1lbW9yeTAoKVthcmcwIC8gNCArIDBdID0gcHRyMTtcbiAgICB9LFxuICAgIF9fd2JpbmRnZW5fdGhyb3c6IGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzAsIGFyZzEpKTtcbiAgICB9LFxuICAgIF9fd2JpbmRnZW5fbWVtb3J5OiBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXQgPSB3YXNtLm1lbW9yeTtcbiAgICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG4gICAgfSxcbiAgfSxcbiAgXCIuL3NuaXBwZXRzL2Rlbm9fY2FjaGVfZGlyLWEyYWVjYWE5NTM2Yzk0MDIvZnMuanNcIjogaW1wb3J0MCxcbn07XG5cbi8qKiBJbnN0YW50aWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFdhc20gbW9kdWxlIHJldHVybmluZyBpdHMgZnVuY3Rpb25zLlxuICogQHJlbWFya3MgSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgbXVsdGlwbGUgdGltZXMgYW5kIG9uY2Ugc3VjY2Vzc2Z1bGx5XG4gKiBsb2FkZWQgaXQgd2lsbCBhbHdheXMgcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlKCkge1xuICByZXR1cm4gaW5zdGFudGlhdGVXaXRoSW5zdGFuY2UoKS5leHBvcnRzO1xufVxuXG5sZXQgaW5zdGFuY2VXaXRoRXhwb3J0cztcblxuLyoqIEluc3RhbnRpYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgV2FzbSBtb2R1bGUgYWxvbmcgd2l0aCBpdHMgZXhwb3J0cy5cbiAqIEByZW1hcmtzIEl0IGlzIHNhZmUgdG8gY2FsbCB0aGlzIG11bHRpcGxlIHRpbWVzIGFuZCBvbmNlIHN1Y2Nlc3NmdWxseVxuICogbG9hZGVkIGl0IHdpbGwgYWx3YXlzIHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgc2FtZSBvYmplY3QuXG4gKiBAcmV0dXJucyB7e1xuICogICBpbnN0YW5jZTogV2ViQXNzZW1ibHkuSW5zdGFuY2U7XG4gKiAgIGV4cG9ydHM6IHsgdXJsX3RvX2ZpbGVuYW1lOiB0eXBlb2YgdXJsX3RvX2ZpbGVuYW1lOyBHbG9iYWxIdHRwQ2FjaGUgOiB0eXBlb2YgR2xvYmFsSHR0cENhY2hlIDsgTG9jYWxIdHRwQ2FjaGUgOiB0eXBlb2YgTG9jYWxIdHRwQ2FjaGUgIH1cbiAqIH19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVdpdGhJbnN0YW5jZSgpIHtcbiAgaWYgKGluc3RhbmNlV2l0aEV4cG9ydHMgPT0gbnVsbCkge1xuICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFudGlhdGVJbnN0YW5jZSgpO1xuICAgIHdhc20gPSBpbnN0YW5jZS5leHBvcnRzO1xuICAgIGNhY2hlZEludDMyTWVtb3J5MCA9IG5ldyBJbnQzMkFycmF5KHdhc20ubWVtb3J5LmJ1ZmZlcik7XG4gICAgY2FjaGVkVWludDhNZW1vcnkwID0gbmV3IFVpbnQ4QXJyYXkod2FzbS5tZW1vcnkuYnVmZmVyKTtcbiAgICBpbnN0YW5jZVdpdGhFeHBvcnRzID0ge1xuICAgICAgaW5zdGFuY2UsXG4gICAgICBleHBvcnRzOiB7IHVybF90b19maWxlbmFtZSwgR2xvYmFsSHR0cENhY2hlLCBMb2NhbEh0dHBDYWNoZSB9LFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIGluc3RhbmNlV2l0aEV4cG9ydHM7XG59XG5cbi8qKiBHZXRzIGlmIHRoZSBXYXNtIG1vZHVsZSBoYXMgYmVlbiBpbnN0YW50aWF0ZWQuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJbnN0YW50aWF0ZWQoKSB7XG4gIHJldHVybiBpbnN0YW5jZVdpdGhFeHBvcnRzICE9IG51bGw7XG59XG5cbmZ1bmN0aW9uIGluc3RhbnRpYXRlSW5zdGFuY2UoKSB7XG4gIGNvbnN0IHdhc21CeXRlcyA9IGJhc2U2NGRlY29kZShcblwiXFxcbkFHRnpiUUVBQUFBQjNZS0FnQUF2WUFBQVlBQUJmMkFCZndCZ0FYOEJmMkFCZndGK1lBSi9md0JnQW45L0FYOWdBbjkvQVg1Z0EzOS9md1xcXG5CZ0EzOS9md0YvWUFOL2YzOEJmbUFFZjM5L2Z3QmdCSDkvZjM4QmYyQUZmMzkvZjM4QVlBVi9mMzkvZndGL1lBWi9mMzkvZjM4QVlBWi9cXFxuZjM5L2YzOEJmMkFIZjM5L2YzOS9md0JnQjM5L2YzOS9mMzhCZjJBTGYzOS9mMzkvZjM5L2YzOEJmMkFOZjM5L2YzOS9mMzkvZjM5L2Z3XFxcbkJnQ1g5L2YzOS9mMzUrZmdCZ0JIOS9mMzRBWUFWL2YzOStmd0JnQTM5L2ZnQmdCSDkvZm44QVlBUi9mMzUvQVg5Z0JYOS9mbjkvQUdBRlxcXG5mMzk5ZjM4QVlBTi9mM3dBWUFWL2YzeC9md0JnQW45K0FHQUNmMzRCZjJBRGYzNS9BR0FEZjM1L0FYOWdCSDkrZjM4QVlBUi9mbjkvQVhcXFxuOWdCWDkrZjM5L0FYOWdCWDkrZjM1L0FHQUZmMzUrZm40QVlBUi9mWDkvQUdBQ2Yzd0FZQVIvZkg5L0FHQUVmM3gvZndGL1lBSitmd0JnXFxcbkFuNS9BWDlnQTM1L2Z3Ri9BdWVTZ0lBQUxCaGZYM2RpYVc1a1oyVnVYM0JzWVdObGFHOXNaR1Z5WDE4VVgxOTNZbWx1WkdkbGJsOWxjblxcXG5KdmNsOXVaWGNBQmhoZlgzZGlhVzVrWjJWdVgzQnNZV05sYUc5c1pHVnlYMThhWDE5M1ltbHVaR2RsYmw5dlltcGxZM1JmWkhKdmNGOXlcXFxuWldZQUFoaGZYM2RpYVc1a1oyVnVYM0JzWVdObGFHOXNaR1Z5WDE4VlgxOTNZbWx1WkdkbGJsOXpkSEpwYm1kZloyVjBBQVVZWDE5M1ltXFxcbmx1WkdkbGJsOXdiR0ZqWldodmJHUmxjbDlmRlY5ZmQySnBibVJuWlc1ZmMzUnlhVzVuWDI1bGR3QUdHRjlmZDJKcGJtUm5aVzVmY0d4aFxcXG5ZMlZvYjJ4a1pYSmZYeVJmWDNkaVoxOXlaV0ZrWm1sc1pXSjVkR1Z6WHpsalpUZzNNR1JsT0RaaU1tTmpNellBQmhoZlgzZGlhVzVrWjJcXFxuVnVYM0JzWVdObGFHOXNaR1Z5WDE4U1gxOTNZbWx1WkdkbGJsOXBjMTl1ZFd4c0FBTVlYMTkzWW1sdVpHZGxibDl3YkdGalpXaHZiR1JsXFxcbmNsOWZGMTlmZDJKcGJtUm5aVzVmYVhOZmRXNWtaV1pwYm1Wa0FBTVlYMTkzWW1sdVpHZGxibDl3YkdGalpXaHZiR1JsY2w5ZkpsOWZkMlxcXG5KblgyRjBiMjFwWTNkeWFYUmxabWxzWlY4ek1UQmpOV1EyT1RCbFpEUmhNVGcyQUF3WVgxOTNZbWx1WkdkbGJsOXdiR0ZqWldodmJHUmxcXFxuY2w5ZkkxOWZkMkpuWDIxdlpHbG1hV1ZrZEdsdFpWODJOMlZtTVRkaFl6UmxaV0ptTlRKakFBZ3dMaTl6Ym1sd2NHVjBjeTlrWlc1dlgyXFxcbk5oWTJobFgyUnBjaTFoTW1GbFkyRmhPVFV6Tm1NNU5EQXlMMlp6TG1wekNIUnBiV1ZmYm05M0FBRVlYMTkzWW1sdVpHZGxibDl3YkdGalxcXG5aV2h2YkdSbGNsOWZGVjlmZDJKcGJtUm5aVzVmYm5WdFltVnlYMmRsZEFBRkdGOWZkMkpwYm1SblpXNWZjR3hoWTJWb2IyeGtaWEpmWHhcXFxuUmZYM2RpYVc1a1oyVnVYMmx6WDI5aWFtVmpkQUFER0Y5ZmQySnBibVJuWlc1ZmNHeGhZMlZvYjJ4a1pYSmZYeGxmWDNkaWFXNWtaMlZ1XFxcblgycHpkbUZzWDJ4dmIzTmxYMlZ4QUFZWVgxOTNZbWx1WkdkbGJsOXdiR0ZqWldodmJHUmxjbDlmRmw5ZmQySnBibVJuWlc1ZlltOXZiR1xcXG5WaGJsOW5aWFFBQXhoZlgzZGlhVzVrWjJWdVgzQnNZV05sYUc5c1pHVnlYMThkWDE5M1ltZGZVM1J5YVc1blh6ZzRPREV3WkdabFlqUXdcXFxuTWpFNU1ESUFCUmhmWDNkaWFXNWtaMlZ1WDNCc1lXTmxhRzlzWkdWeVgxOGFYMTkzWW1kZmMyVjBYemcwTVdGak5UZGpabVl6WkRZM01tXFxcbklBQ0JoZlgzZGlhVzVrWjJWdVgzQnNZV05sYUc5c1pHVnlYMThhWDE5M1ltZGZibVYzWDJGaVpHRTNObVU0T0ROaVlUaGhOV1lBQVJoZlxcXG5YM2RpYVc1a1oyVnVYM0JzWVdObGFHOXNaR1Z5WDE4Y1gxOTNZbWRmYzNSaFkydGZOalU0TWpjNVptVTBORFUwTVdObU5nQUZHRjlmZDJcXFxuSnBibVJuWlc1ZmNHeGhZMlZvYjJ4a1pYSmZYeHhmWDNkaVoxOWxjbkp2Y2w5bU9EVXhOalkzWVdZM01XSmpabU0yQUFVWVgxOTNZbWx1XFxcblpHZGxibDl3YkdGalpXaHZiR1JsY2w5ZkZGOWZkMkpwYm1SblpXNWZhWE5mYzNSeWFXNW5BQU1ZWDE5M1ltbHVaR2RsYmw5d2JHRmpaV1xcXG5odmJHUmxjbDlmRmw5ZmQySnBibVJuWlc1ZmFYTmZablZ1WTNScGIyNEFBeGhmWDNkaWFXNWtaMlZ1WDNCc1lXTmxhRzlzWkdWeVgxOGFcXFxuWDE5M1ltZGZibVYzWHpCbU1tSTNNV05oTW1ZeVlUWXdNamtBQVJoZlgzZGlhVzVrWjJWdVgzQnNZV05sYUc5c1pHVnlYMThiWDE5M1ltXFxcbmRmYm1WNGRGOW1OR0pqTUdVNU5tVmhOamRrWVRZNEFBTVlYMTkzWW1sdVpHZGxibDl3YkdGalpXaHZiR1JsY2w5ZkhGOWZkMkpuWDNaaFxcXG5iSFZsWHpKbU5HVm1NakF6Tm1KbVlXUXlPR1VBQXhoZlgzZGlhVzVrWjJWdVgzQnNZV05sYUc5c1pHVnlYMThmWDE5M1ltZGZhWFJsY21cXFxuRjBiM0pmTjJNM1pUVTRaall5WldJNE5EY3dNQUFCR0Y5ZmQySnBibVJuWlc1ZmNHeGhZMlZvYjJ4a1pYSmZYeHBmWDNkaVoxOXVaWGRmXFxcbk1tSTJabVZoTkdWaE1ETmlNV0k1TlFBQkdGOWZkMkpwYm1SblpXNWZjR3hoWTJWb2IyeGtaWEpmWHhwZlgzZGlaMTluWlhSZk56TXdNMlxcXG5Wa01tVm1NREkyWWpKbU5RQUdHRjlmZDJKcGJtUm5aVzVmY0d4aFkyVm9iMnhrWlhKZlh4MWZYM2RpWjE5c1pXNW5kR2hmT0RJd1l6YzRcXFxuTmprM00yRmlaR1E0WVFBREdGOWZkMkpwYm1SblpXNWZjR3hoWTJWb2IyeGtaWEpmWHkxZlgzZGlaMTlwYm5OMFlXNWpaVzltWDBGeWNtXFxcbkY1UW5WbVptVnlYMlZtTWpZek1tRmhNR1EwWW1abVpqZ0FBeGhmWDNkaWFXNWtaMlZ1WDNCc1lXTmxhRzlzWkdWeVgxOGFYMTkzWW1kZlxcXG5ibVYzWHpnM01qazNaakl5T1Rjek1UVTNZemdBQmhoZlgzZGlhVzVrWjJWdVgzQnNZV05sYUc5c1pHVnlYMThiWDE5M1ltZGZZMkZzYkZcXFxuODFOVGRoTW1ZeVpHVmhZMk0wT1RFeUFBWVlYMTkzWW1sdVpHZGxibDl3YkdGalpXaHZiR1JsY2w5ZkdsOWZkMkpuWDNObGRGOWtZVGRpXFxcblpUZGlaakJsTURNM1lqRTBBQWtZWDE5M1ltbHVaR2RsYmw5d2JHRmpaV2h2YkdSbGNsOWZHMTlmZDJKblgyNWxlSFJmWldNd05qRmxORFxcXG5oaE1HVTNNbUU1TmdBREdGOWZkMkpwYm1SblpXNWZjR3hoWTJWb2IyeGtaWEpmWHh0ZlgzZGlaMTlrYjI1bFgySTJZV0ppTWpka05ESmlcXFxuTmpNNE5qY0FBeGhmWDNkaWFXNWtaMlZ1WDNCc1lXTmxhRzlzWkdWeVgxOGVYMTkzWW1kZlpXNTBjbWxsYzE4eE0yVXdNVEUwTlRNM056XFxcblkwTmpobUFBTVlYMTkzWW1sdVpHZGxibDl3YkdGalpXaHZiR1JsY2w5ZkdsOWZkMkpuWDJkbGRGOW1OVE5qT1RJeE1qa3hZek00TVdKa1xcXG5BQVlZWDE5M1ltbHVaR2RsYmw5d2JHRmpaV2h2YkdSbGNsOWZIVjlmZDJKblgySjFabVpsY2w4MU5XSmhOMkUyWWpGaU9USmxNbUZqQUFcXFxuTVlYMTkzWW1sdVpHZGxibDl3YkdGalpXaHZiR1JsY2w5ZkdsOWZkMkpuWDI1bGQxOHdPVGt6T0dFM1pEQXlNR1l3TkRsaUFBTVlYMTkzXFxcblltbHVaR2RsYmw5d2JHRmpaV2h2YkdSbGNsOWZMRjlmZDJKblgybHVjM1JoYm1ObGIyWmZWV2x1ZERoQmNuSmhlVjh4TXpRNU5qUXdZV1xcXG5ZeVpHRXlaVGc0QUFNWVgxOTNZbWx1WkdkbGJsOXdiR0ZqWldodmJHUmxjbDlmSFY5ZmQySm5YMnhsYm1kMGFGOHdZV0ZpTjJabVpEWTFcXFxuWVdReE9XVmtBQU1ZWDE5M1ltbHVaR2RsYmw5d2JHRmpaV2h2YkdSbGNsOWZHbDlmZDJKblgzTmxkRjh6TmprNFpUTmpZVFV4T1dJell6XFxcbk5qQUFnWVgxOTNZbWx1WkdkbGJsOXdiR0ZqWldodmJHUmxjbDlmRjE5ZmQySnBibVJuWlc1ZlpHVmlkV2RmYzNSeWFXNW5BQVVZWDE5M1xcXG5ZbWx1WkdkbGJsOXdiR0ZqWldodmJHUmxjbDlmRUY5ZmQySnBibVJuWlc1ZmRHaHliM2NBQlJoZlgzZGlhVzVrWjJWdVgzQnNZV05sYUdcXFxuOXNaR1Z5WDE4UlgxOTNZbWx1WkdkbGJsOXRaVzF2Y25rQUFRT1Nqb0NBQUpBT0N3MEREdzhQQ3c4SkNBVVBCUThOQ0E4RkNBc0RFUXNOXFxcbkN3Z0lDQWdDRFFVR0RRMExKQVlEQ1FZSkF3OFBEd2dNQmlzRkNSQUlDQXNKQ0FrTENTc0pDd2dKR2drR0Jnc0ZDeUlJQ3drTkNROEZCZ1xcXG5VSkJRVUpDQVVKQ0F3RkJRWUlCZ2dHQlFVTkRnc1JCZzBOQ2dVSUNBZ0lDQVVYQlEwWEJRVU5EUUlMQlFVRkJRVUZCZ2dDREFnR0JoVUZcXFxuQ0FVRkJSRUdDUVVSQ0FVRkJRZ0dBd01EQ0FVU0JnVUlEd1lPRVJFSUN3Z0lDQVVJQmdZRUJRVUlDUzRHQmdZSUZ4Y0lCZzhOQXcwR0NBXFxcbllKQlFJT0N3TUZCZ1lMR3dJRkNBZ0RDQWdHQmdZTkRRWUZCUVVGQVJnR0RRZ0lCUXNMQ3dNRkF3Z0lEUVVGQmdNTEFRVUlDQVVHQlE4RFxcXG5DQWdMQXdJTEJnTU5DQWdJQ3dZWkJSWVdCUVVGQXlJR0NCY0xGd2dJQ0EwTkNBMElDQWdORFFnRkN3MExCZzBMQ3dzTEN3c0xDd3NMQmdcXFxuWUdEZ3NEQ0FnTERBVUlCUWdVRFEwTEN3VUxDd3NiRXdzUkN3TUpBd1VEQXdNSUR3Z0RDQllXRFFzU0NRWUdCZ2tMQmdzTkNCRVJBd1lDXFxcbkF3c0xDd3NJQ0JrTkRRVUxCUVlGQlFVTEpnc0xDd2dtQ3dzQ0NBZ0ZDd01KQXdNTEJRVUlEUU1HRFFVREF3Z0ZEUWdGQXdVRkJnWUdCUVxcXG5VSUJnWUZCUWdEQ0FnSUNBVUZCUWdGRFFJTEN3c0xDd2dGQlFnTUN5QUpDQVVJQlFnRENBZ0ZDd3dNQlFZQ0FnNEpCUVVGRGc0RkJnZ0xcXFxuQlFnSUJRZ0lCUWdJQ0FjTkNBWU5CUVVHQmdVRENBVUZCUW9rREFvTEJRTUpJQVVEQ0FVQ0JnSUZEUmNHRFJjSUp3WUNBZ2tJQlFzRkNRXFxcbmdJRGdnREJ3VUpCUVlGQlFVSUJRZ0ZDUVVHQ3dVRkNRWURBd3NKQlFVQ0JRY0hCUWdDQlFNSkJRVUxCUWdGQ0FnSUNBZ0ZCZ1VGQWdnR1xcXG5CaVFDQlFrRkJnVWhCZ2tMQ0FZRkJRc0ZCUXNMQlFVRklpVUlCUVlHQmdZR0JRa01DUXdNQmd3TUJRME5DQVVGSWlRRkJRVUdCZ1VJQmdcXFxuWUxCZ1lHQ0FZR0JRTUxCUXNJQ3dnSUN3VUZDd1lrQmdZR0F3WUdCZ2tGQmdZQ0RRVUlDQWdJQ0EwTkRRVU5CUTBJRFF3TkF3VUZCUXNGXFxcbkJnc0ZDd2dGQmdnSUN3c0xDQVVGQWdzRkN3a0ZCZ01GQlEwSUNBWURCUUlGQWdNRkR3VURCaGtJRmdnRkJnOE5CUWdGQlFVSUJRVUZCUVxcXG5rREJRWUdEUXdJQ0FzR0F3VU1CUXdNQlFzTEJRVUZCUWdMQlFnRkNBZ0ZCUVVNQ3drR0NRa1BBZ0lHQ0NNTENBZ0xEdzhJQ0FVRkJRVUZcXFxuQ0FnQ0JRTUZCZ1VJQ0FVSUNBVVBLU2tBQmdnR0NBc0xCZ1lLQ2dvUENBRUNEdzhQRHdZSUN3Z0lDd3NMQ0FZQ0NBSUdBZ01DQWdNRkJRXFxcbjBORFFJQ0F3Z0ZBd3NGQlFNSUNBZ0ZCUVVGQlFZR0lBZ0lDQWdJQlFrRkNRa0xCUWdEQlFrSkJRZ09CZ0lGQWdJR0NBZ0xDd1VGQWdnSVxcXG5CUWdDQlFnSUNBWU5CUUlJQ0FVSUNBZ0dBd1lKQ3dnRkJRZ0lCUXNMQ0FzRkJRc0lCZ3NMQ3dzQUFBQUZBZ1VGQlFVRkJRVUZDd3NMQ0FcXFxuWURCUU1HQlFNRENBZ0lDQWdJQlFVZkJRWUdCZ1lDQWdJQ0N4Z0ZCUVVGQlFzREJRVUlDUVVHQmdJRkJRVUlCUVVGQWdJSkN3WUdCUVlHXFxcbkJnSUZCZ1VJQlFnTkJnWUxEUW9LQ2dvRkNBVUZCUWdGQ0FnRkNBa0ZCUWdJQlFVRkRRZ0ZDQWdGQmdNSkJRVUlDQVVJQ0FVSUNBVU5DQVxcXG5nR0JnWUdCZ1lHQmdzSUJnTUZCUVlHQXdzRkFnTUdBd0lGQWdrQ0RRSUdCUVVGQWdZQ0JRVUNBZ0lHQWdNQ0Jnd0NCaTBGQlEwRkJRVUZcXFxuQlFVRkJRZ0lDdzBJQ0FJR0NBZ0ZCZ1VOQlFNREJoc0ZCUVVDQlFVTkJRVUpCUUlDQlEwRkJRSUlCZ1lHQmhrR0F3a1FBd1VGQmdvS0N3XFxcblVJQWdVRkFnc0ZEQVVORGcwT0RSc2NIZ3dMQlFZTUJRVUZCUXdNQmdVTEFnWUdBZ0lDQmdJQ0Fnc0NBZ01DQWdJQ0FnWURDZ29HQmdZRlxcXG5CZ1lHQXdrR0JRa0ZCZ1VGQlFJQ0Fna0RBd1lMQ0FJREFnSUlBZ0lHQmdNTEFnWUdCZ1lHQlFVRkNBVUZBZ0lCQlFNRkJna0dCZ1lHQWdcXFxuSUNBZ01JQlFVQ0NBSUlDQUlETEFnZEFnTUdBd0lGQmdZR0Fnc0dCUUlJQWdZQ0FnSUNJQ0FnSUNBTUN3Z0JBZ2dHQ0FnSUNBZ0ZCZ0lJXFxcbkFnTUNDQWdDQlNBREJRWUdBZ0lGQlFJQ0FnSUNBZ0lKQlFJQ0FnSUpDUUlHQWdJR0RRSUZCZ0lDQWdVRkJRVUdCUVVGQlFVSkF3WUdCZ1xcXG5ZSkNBWUNCUWtJQmdJRkFnZ0dDQWdMQ0FZR0Fna0ZBZ01JQ0FZR0JnVUZDQVlHQmdZR0JnZ0ZBZ01DQXdZR0JRWURBd01JQWdrRkNBTURcXFxuQ3dnSkJna0NBZ01DSWd3SkF3TURBd01EQmdZSkJnSUZCUU1KQ1FVQ0F3TUZBd1lHQmdZR0Jna0pCZ3NEQWdJQ0JRWUdCZ1lEQXdJQ0FnXFxcbklHQmdJZkh4OGZBZ1VGQWdJQ0JnZ0dBZ1lDQWdZR0JnVUFBQUlHQmdZR0JnWUNCaDhJQXdNREF3WUZCUWtGQlFZR0NRa0pDUU1EQmdZR1xcXG5CZ1lHQmdZR0JRVURBd01EQmdZR0JnTURCUVVHQXdJREJnTURBd1VDQWdVR0FRWUNCZ1lEQXdVRkJRSUNBZ0lEQWdBQ0F3SURDQU1EQXdcXFxuTURCQVFFQkFRRUJBUUVBd0VFQkFNR0JBQURBd01CQVFNQkJBTUVCQVFFQkFRREFBWUJBUU1PREFrR0F3TUVBZ0lDQ0FnQ0FnSUNBZ2dDXFxcbkJRSUNBZ0FDQWdJQ0FnSUNBZ0lDQWdJQ0FnZ0NBZ0lBQWdJQ0FnSUVoNENBZ0FBQmNBSEdBc1lDQllPQWdJQUFBUUFVQm9tQWdJQUFBWFxcXG44QlFZQ0F3QUFMQjZPRGdJQUFFUVp0WlcxdmNua0NBQTkxY214ZmRHOWZabWxzWlc1aGJXVUFuUU1hWDE5M1ltZGZaMnh2WW1Gc2FIUjBcXFxuY0dOaFkyaGxYMlp5WldVQWtnb1RaMnh2WW1Gc2FIUjBjR05oWTJobFgyNWxkd0NlQmhwbmJHOWlZV3hvZEhSd1kyRmphR1ZmWjJWMFNHXFxcblZoWkdWeWN3RHhBeHRuYkc5aVlXeG9kSFJ3WTJGamFHVmZaMlYwUm1sc1pWUmxlSFFBOGdNVFoyeHZZbUZzYUhSMGNHTmhZMmhsWDNObFxcXG5kQUNlQXhsZlgzZGlaMTlzYjJOaGJHaDBkSEJqWVdOb1pWOW1jbVZsQVBjRUVteHZZMkZzYUhSMGNHTmhZMmhsWDI1bGR3Q3pCQmxzYjJcXFxuTmhiR2gwZEhCallXTm9aVjluWlhSSVpXRmtaWEp6QVBNREdteHZZMkZzYUhSMGNHTmhZMmhsWDJkbGRFWnBiR1ZVWlhoMEFQUURFbXh2XFxcblkyRnNhSFIwY0dOaFkyaGxYM05sZEFDZkF4RmZYM2RpYVc1a1oyVnVYMjFoYkd4dll3Q3NDQkpmWDNkaWFXNWtaMlZ1WDNKbFlXeHNiMlxcXG5NQTlna1VYMTkzWW1sdVpHZGxibDlsZUc1ZmMzUnZjbVVBamd3ZlgxOTNZbWx1WkdkbGJsOWhaR1JmZEc5ZmMzUmhZMnRmY0c5cGJuUmxcXFxuY2dEaERBOWZYM2RpYVc1a1oyVnVYMlp5WldVQXZBc0pqb1dBZ0FBQkFFRUJDOFVDaHd5TURZUU41d3Y5QzFHL0JOb010UUdsQk53TXpnXFxcbkgvREwwTHZ3YVVEcThOcXcyVERwY01wZzJ0RGRVTnB3eW9ETHdOOFEzSkM1ME9xQTJzRGRRTjB3M1NEZW9Jc0F6eERNY0ZnQXUyQzljTlxcXG4zQWl2Q2JzQ2tBYnlEZjhMcUFqZUJhWUlzQTN0RGU0TGx3NlZEcVVLc1EzbkRlMExsZzdnQjh3Ti93WHNEWlFFL2dYV0RkZ01uQWZwRGFcXFxua003Z3k0Q0xjTjlBYnFEWjhJN0F5N0NMWU45UWJ1RGFBSTdReTZDTGdOOWdibURhRUk2QTN2RExrSXVRM3pCdXNObmdqeURNTUg4d3V1XFxcbkMvTU1wd3ZDQi9FTHJRdjBES2tMd1Fmd0M2c0xxQXZFQi9JTHJBdjFES29MeFFmMEM2OEw5Z3lwRGFvTnJnMm5EZkFJalFyeENJNEs3d1xcXG5qR0N1NEl4UXFkQ2JJS253bS9DWjRKZ2dxQkNvVUtuQW5sQ2FJSmd3cWhDY2dLb0FuSENxTUp5UXJxRElnRDZ3eUpBK1VHc2dINUM1Z09cXFxuaFEzN0RMY01od0xDQlprT21nNzdDL29MM3dYeEFZSU0yQTI1RFAwTXd3V2NEcHNPZ0F5NERPQUZuZzcwRFo4T29BNmhEc0FHb2c2dkI5XFxcbkVLOVEya0RvRU5wUTdoQ05vTndBeUlBcVlPYk13QjBncTZDckFHbmdxY0Nwc0ttZ3FmQ3FFS29BcWRDb2dLcUE3a0NJME0yUVBpQmR3TlxcXG55UXlMRGF3T3F3NlBETWdNNHdXcURxNE8rQVRWQ3Y0Tnd3cmZESXdLM1FlTEFwVU1sZ3l3RHYwRjFncUFEdUFMc1E3UURKSU42QVhGQzhcXFxuWUxtUXpIQzVNTjNnMmNESnNNeVEyQ0RwZ01zZzZSRGY4SHlnM1NCb0VPMFFhQUNxQU1uZ3pBQmJNTzRBYmVBYWtGdEE2dENwME11Z25CXFxcbkNwOE10UTcrQ29NT2hRN2dDYjBDaFFTQkI2SU1oQTdvQ3JnTzRnYlhES29GNndpNURvRUxtUTNDQ3NvRjJRemJET01McWd5ZEM4b0x5d1xcXG51VEJmc0I3QUdyQ2JvTzR3YjhBYXdGdXc2U0RxQU5lclFDeXdXZkRkNE1xZ0tyQmFJQ2xRUUszZEtSZ0FDUURvNHdBaDEvQkg0akFFSEFcXFxuQ21zaUJDUUFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FCS1FNQUlpXFxcbkZRRFFBZ0FTa0RDQ0lpVUEwQklBRXBBeEFpSTFBTkFpQWhJQ044SWlRZ0lWUU5BeUFoSUNKVURRUWdBMEVSU1EwRklBRXNBQm9oQlNBQlxcXG5Md0VZSVFFZ0JDQWhQZ0lBSUFSQkFVRUNJQ0ZDZ0lDQWdCQlVJZ1liTmdLZ0FTQUVRUUFnSVVJZ2lLY2dCaHMyQWdRZ0JFRUlha0VBUVpcXFxuZ0JFS0VOR2lBRUlDSStBcWdCSUFSQkFVRUNJQ0pDZ0lDQWdCQlVJZ1liTmdMSUFpQUVRUUFnSWtJZ2lLY2dCaHMyQXF3QklBUkJxQUZxXFxcblFRaHFRUUJCbUFFUW9RMGFJQVFnSXo0QzBBSWdCRUVCUVFJZ0kwS0FnSUNBRUZRaUJoczJBdkFESUFSQkFDQWpRaUNJcHlBR0d6WUMxQVxcXG5JZ0JFSFFBbXBCQ0dwQkFFR1lBUkNoRFJvZ0JFSDRBMnBCQkhKQkFFR2NBUkNoRFJvZ0JFRUJOZ0w0QXlBRVFRRTJBcGdGSUFHdHd5QWtcXFxuUW45OGVYMUN3cHJCNkFSK1FvQ2h6YUMwQW54Q0lJaW5JZ2JCSVFjQ1FBSkFJQUhCSWdoQkFFZ05BQ0FFSUFFUVRCb2dCRUdvQVdvZ0FSXFxcbkJNR2lBRVFkQUNhaUFCRUV3YURBRUxJQVJCK0FOcVFRQWdDR3ZCRUV3YUN3SkFBa0FnQjBGL1NnMEFJQVJCQUNBSGE4RWlBUkJjR2lBRVxcXG5RYWdCYWlBQkVGd2FJQVJCMEFKcUlBRVFYQm9NQVFzZ0JFSDRBMm9nQmtILy93TnhFRndhQ3lBRUlBUW9BcUFCSWdrMkFyZ0tJQVJCbUFcXFxubHFJQVJCb0FFUXBBMGFJQWtnQkNnQzhBTWlDaUFKSUFwTEd5SUxRU2hMRFFZQ1FDQUxEUUJCQUNFTERBa0xJQXRCQVhFaERBSkFJQXRCXFxcbkFVY05BRUVBSVExQkFDRU9EQWdMSUF0QmZuRWhEMEVBSVEwZ0JFR1lDV29oQVNBRVFkQUNhaUVHUVFBaERnTkFJQUVnQVNnQ0FDSVFJQVxcXG5Zb0FnQnFJZ2dnRFVFQmNXb2lFVFlDQUNBQlFRUnFJZzBnRFNnQ0FDSVNJQVpCQkdvb0FnQnFJZzBnQ0NBUVNTQVJJQWhKY21vaUNEWUNcXFxuQUNBTklCSkpJQWdnRFVseUlRMGdCa0VJYWlFR0lBRkJDR29oQVNBUElBNUJBbW9pRGtjTkFBd0lDd3RCaTRQT0FFRWNRYWlEemdBUWd3XFxcbmNBQzBHNGc4NEFRUjFCMklQT0FCQ0RCd0FMUWVpRHpnQkJIRUdFaE00QUVJTUhBQXRCbElUT0FFRTJRY3lFemdBUWd3Y0FDMEhjaE00QVxcXG5RVGRCbElYT0FCQ0RCd0FMUWFTRnpnQkJMVUhVaGM0QUVJTUhBQXNnQzBFb1FhaTR6Z0FRZ3dVQUN3SkFJQXhGRFFBZ0JFR1lDV29nRGtcXFxuRUNkQ0lCYWlJR0lBWW9BZ0FpQmlBRVFkQUNhaUFCYWlnQ0FHb2lBU0FOYWlJSU5nSUFJQUVnQmtrZ0NDQUJTWEloRFFzZ0RVRUJjVVVOXFxcbkFDQUxRU2RMRFFFZ0JFR1lDV29nQzBFQ2RHcEJBVFlDQUNBTFFRRnFJUXNMSUFRZ0N6WUN1QW9nQkNnQ21BVWlEaUFMSUE0Z0Mwc2JJZ1xcXG5GQktVOE5BU0FCUVFKMElRRUNRQUpBQTBBZ0FVVU5BVUYvSUFGQmZHb2lBU0FFUVpnSmFtb29BZ0FpQmlBQklBUkIrQU5xYWlnQ0FDSUlcXFxuUnlBR0lBaExHeUlHUlEwQURBSUxDMEYvUVFBZ0FSc2hCZ3NDUUNBR0lBVklEUUFnQ1VFcFR3MERBa0FnQ1EwQVFRQWhDUXdHQ3lBSlFYXFxcbjlxUWYvLy8vOERjU0lCUVFGcUlnaEJBM0VoQmdKQUlBRkJBMDhOQUNBRUlRRkNBQ0VoREFVTElBaEIvUC8vL3dkeElRZ2dCQ0VCUWdBaFxcXG5JUU5BSUFFZ0FUVUNBRUlLZmlBaGZDSWhQZ0lBSUFGQkJHb2lEU0FOTlFJQVFncCtJQ0ZDSUloOElpRStBZ0FnQVVFSWFpSU5JQTAxQWdcXFxuQkNDbjRnSVVJZ2lId2lJVDRDQUNBQlFReHFJZzBnRFRVQ0FFSUtmaUFoUWlDSWZDSWhQZ0lBSUNGQ0lJZ2hJU0FCUVJCcUlRRWdDRUY4XFxcbmFpSUlEUUFNQlFzTElBZEJBV29oQnd3TUN5QUxRU2hCcUxqT0FCQ0JCUUFMSUFGQktFR291TTRBRUlNRkFBc2dDVUVvUWFpNHpnQVFnd1xcXG5VQUN3SkFJQVpGRFFBRFFDQUJJQUUxQWdCQ0NuNGdJWHdpSVQ0Q0FDQUJRUVJxSVFFZ0lVSWdpQ0VoSUFaQmYyb2lCZzBBQ3dzZ0lhY2lcXFxuQVVVTkFDQUpRU2RMRFFFZ0JDQUpRUUowYWlBQk5nSUFJQWxCQVdvaENRc2dCQ0FKTmdLZ0FTQUVLQUxJQWlJUVFTbFBEUUVDUUNBUURRXFxcbkJCQUNFUURBUUxJQkJCZjJwQi8vLy8vd054SWdGQkFXb2lDRUVEY1NFR0FrQWdBVUVEVHcwQUlBUkJxQUZxSVFGQ0FDRWhEQU1MSUFoQlxcXG4vUC8vL3dkeElRZ2dCRUdvQVdvaEFVSUFJU0VEUUNBQklBRTFBZ0JDQ240Z0lYd2lJVDRDQUNBQlFRUnFJZzBnRFRVQ0FFSUtmaUFoUWlcXFxuQ0lmQ0loUGdJQUlBRkJDR29pRFNBTk5RSUFRZ3ArSUNGQ0lJaDhJaUUrQWdBZ0FVRU1haUlOSUEwMUFnQkNDbjRnSVVJZ2lId2lJVDRDXFxcbkFDQWhRaUNJSVNFZ0FVRVFhaUVCSUFoQmZHb2lDQTBBREFNTEN5QUpRU2hCcUxqT0FCQ0JCUUFMSUJCQktFR291TTRBRUlNRkFBc0NRQ1xcXG5BR1JRMEFBMEFnQVNBQk5RSUFRZ3ArSUNGOElpRStBZ0FnQVVFRWFpRUJJQ0ZDSUlnaElTQUdRWDlxSWdZTkFBc0xJQ0duSWdGRkRRQWdcXFxuRUVFblN3MEJJQVJCcUFGcUlCQkJBblJxSUFFMkFnQWdFRUVCYWlFUUN5QUVJQkEyQXNnQ0lBcEJLVThOQVFKQUlBb05BQ0FFUVFBMkF2XFxcbkFEREFRTElBcEJmMnBCLy8vLy93TnhJZ0ZCQVdvaUNFRURjU0VHQWtBZ0FVRURUdzBBSUFSQjBBSnFJUUZDQUNFaERBTUxJQWhCL1AvL1xcXG4vd2R4SVFnZ0JFSFFBbW9oQVVJQUlTRURRQ0FCSUFFMUFnQkNDbjRnSVh3aUlUNENBQ0FCUVFScUlnMGdEVFVDQUVJS2ZpQWhRaUNJZkNcXFxuSWhQZ0lBSUFGQkNHb2lEU0FOTlFJQVFncCtJQ0ZDSUloOElpRStBZ0FnQVVFTWFpSU5JQTAxQWdCQ0NuNGdJVUlnaUh3aUlUNENBQ0FoXFxcblFpQ0lJU0VnQVVFUWFpRUJJQWhCZkdvaUNBMEFEQU1MQ3lBUVFTaEJxTGpPQUJDQkJRQUxJQXBCS0VHb3VNNEFFSU1GQUFzQ1FDQUdSUVxcXG4wQUEwQWdBU0FCTlFJQVFncCtJQ0Y4SWlFK0FnQWdBVUVFYWlFQklDRkNJSWdoSVNBR1FYOXFJZ1lOQUFzTEFrQWdJYWNpQVVVTkFDQUtcXFxuUVNkTERRSWdCRUhRQW1vZ0NrRUNkR29nQVRZQ0FDQUtRUUZxSVFvTElBUWdDallDOEFNTElBUWdEallDd0FZZ0JFR2dCV29nQkVINEEyXFxcbnBCb0FFUXBBMGFJQVJCb0FWcVFRRVFUQ0VUSUFRZ0JDZ0NtQVUyQXVnSElBUkJ5QVpxSUFSQitBTnFRYUFCRUtRTkdpQUVRY2dHYWtFQ1xcXG5FRXdoRkNBRUlBUW9BcGdGTmdLUUNTQUVRZkFIYWlBRVFmZ0Rha0dnQVJDa0RSb2dCRUh3QjJwQkF4Qk1JUlVDUUFKQUlBUW9BcUFCSWdcXFxuOGdCQ2dDa0FraUZpQVBJQlpMR3lJTFFTaExEUUFnQkVHZ0JXcEJmR29oRENBRVFjZ0dha0Y4YWlFS0lBUkI4QWRxUVh4cUlRa2dCQ2dDXFxcbm1BVWhGeUFFS0FMQUJpRVlJQVFvQXVnSElSbEJBQ0VhQTBBZ0dpRWJJQXRCQW5RaEFRSkFBa0FEUUNBQlJRMEJRWDhnQ1NBQmFpZ0NBQ1xcXG5JR0lBRkJmR29pQVNBRWFpZ0NBQ0lJUnlBR0lBaExHeUlHUlEwQURBSUxDMEYvUVFBZ0FSc2hCZ3RCQUNFY0FrQUNRQUpBQWtBQ1FBSkFcXFxuQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQVpCQVVzTkFBSkFJQXRGRFFCQkFTXFxcbkVOSUF0QkFYRWhIVUVBSVE0Q1FDQUxRUUZHRFFBZ0MwRitjU0VQUVFBaERrRUJJUTBnQkNFQklBUkI4QWRxSVFZRFFDQUJJQUVvQWdBaVxcXG5FQ0FHS0FJQVFYOXphaUlJSUExQkFYRnFJaEUyQWdBZ0FVRUVhaUlOSUEwb0FnQWlFaUFHUVFScUtBSUFRWDl6YWlJTklBZ2dFRWtnRVNcXFxuQUlTWEpxSWdnMkFnQWdEU0FTU1NBSUlBMUpjaUVOSUFaQkNHb2hCaUFCUVFocUlRRWdEeUFPUVFKcUlnNUhEUUFMQ3dKQUlCMUZEUUFnXFxcbkJDQU9RUUowSWdGcUlnWWdCaWdDQUNJR0lCVWdBV29vQWdCQmYzTnFJZ0VnRFdvaUNEWUNBQ0FCSUFaSklBZ2dBVWx5SVEwTElBMUJBWFxcXG5GRkRRSUxJQVFnQ3pZQ29BRkJDQ0VjSUFzaER3c2dEeUFaSUE4Z0dVc2JJZ3RCS1U4TkFTQUxRUUowSVFFQ1FBSkFBMEFnQVVVTkFVRi9cXFxuSUFvZ0FXb29BZ0FpQmlBQlFYeHFJZ0VnQkdvb0FnQWlDRWNnQmlBSVN4c2lCa1VOQUF3Q0N3dEJmMEVBSUFFYklRWUxBa0FDUUNBR1FRXFxcbkZORFFBZ0R5RUxEQUVMQWtBZ0MwVU5BRUVCSVEwZ0MwRUJjU0VkUVFBaERnSkFJQXRCQVVZTkFDQUxRWDV4SVE5QkFDRU9RUUVoRFNBRVxcXG5JUUVnQkVISUJtb2hCZ05BSUFFZ0FTZ0NBQ0lRSUFZb0FnQkJmM05xSWdnZ0RVRUJjV29pRVRZQ0FDQUJRUVJxSWcwZ0RTZ0NBQ0lTSUFcXFxuWkJCR29vQWdCQmYzTnFJZzBnQ0NBUVNTQVJJQWhKY21vaUNEWUNBQ0FOSUJKSklBZ2dEVWx5SVEwZ0JrRUlhaUVHSUFGQkNHb2hBU0FQXFxcbklBNUJBbW9pRGtjTkFBc0xBa0FnSFVVTkFDQUVJQTVCQW5RaUFXb2lCaUFHS0FJQUlnWWdGQ0FCYWlnQ0FFRi9jMm9pQVNBTmFpSUlOZ1xcXG5JQUlBRWdCa2tnQ0NBQlNYSWhEUXNnRFVFQmNVVU5CQXNnQkNBTE5nS2dBU0FjUVFSeUlSd0xJQXNnR0NBTElCaExHeUlkUVNsUERRTWdcXFxuSFVFQ2RDRUJBa0FDUUFOQUlBRkZEUUZCZnlBTUlBRnFLQUlBSWdZZ0FVRjhhaUlCSUFScUtBSUFJZ2hISUFZZ0NFc2JJZ1pGRFFBTUFnXFxcbnNMUVg5QkFDQUJHeUVHQ3dKQUFrQWdCa0VCVFEwQUlBc2hIUXdCQ3dKQUlCMUZEUUJCQVNFTklCMUJBWEVoQzBFQUlRNENRQ0FkUVFGR1xcXG5EUUFnSFVGK2NTRVBRUUFoRGtFQklRMGdCQ0VCSUFSQm9BVnFJUVlEUUNBQklBRW9BZ0FpRUNBR0tBSUFRWDl6YWlJSUlBMUJBWEZxSWhcXFxuRTJBZ0FnQVVFRWFpSU5JQTBvQWdBaUVpQUdRUVJxS0FJQVFYOXphaUlOSUFnZ0VFa2dFU0FJU1hKcUlnZzJBZ0FnRFNBU1NTQUlJQTFKXFxcbmNpRU5JQVpCQ0dvaEJpQUJRUWhxSVFFZ0R5QU9RUUpxSWc1SERRQUxDd0pBSUF0RkRRQWdCQ0FPUVFKMElnRnFJZ1lnQmlnQ0FDSUdJQlxcXG5NZ0FXb29BZ0JCZjNOcUlnRWdEV29pQ0RZQ0FDQUJJQVpKSUFnZ0FVbHlJUTBMSUExQkFYRkZEUVlMSUFRZ0hUWUNvQUVnSEVFQ2FpRWNcXFxuQ3lBZElCY2dIU0FYU3hzaUQwRXBUdzBGSUE5QkFuUWhBUUpBQWtBRFFDQUJSUTBCUVg4Z0FVRjhhaUlCSUFSQitBTnFhaWdDQUNJR0lBXFxcbkVnQkdvb0FnQWlDRWNnQmlBSVN4c2lCa1VOQUF3Q0N3dEJmMEVBSUFFYklRWUxBa0FDUUNBR1FRRk5EUUFnSFNFUERBRUxBa0FnRDBVTlxcXG5BRUVCSVEwZ0QwRUJjU0VkUVFBaERnSkFJQTlCQVVZTkFDQVBRWDV4SVF0QkFDRU9RUUVoRFNBRUlRRWdCRUg0QTJvaEJnTkFJQUVnQVNcXFxuZ0NBQ0lRSUFZb0FnQkJmM05xSWdnZ0RVRUJjV29pRVRZQ0FDQUJRUVJxSWcwZ0RTZ0NBQ0lTSUFaQkJHb29BZ0JCZjNOcUlnMGdDQ0FRXFxcblNTQVJJQWhKY21vaUNEWUNBQ0FOSUJKSklBZ2dEVWx5SVEwZ0JrRUlhaUVHSUFGQkNHb2hBU0FMSUE1QkFtb2lEa2NOQUFzTEFrQWdIVVxcXG5VTkFDQUVJQTVCQW5RaUFXb2lCaUFHS0FJQUlnWWdCRUg0QTJvZ0FXb29BZ0JCZjNOcUlnRWdEV29pQ0RZQ0FDQUJJQVpKSUFnZ0FVbHlcXFxuSVEwTElBMUJBWEZGRFFnTElBUWdEellDb0FFZ0hFRUJhaUVjQ3lBYklBTkdEUW9nQWlBYmFpQWNRVEJxT2dBQUlBOGdCQ2dDeUFJaUhpXFxcbkFQSUI1TEd5SUJRU2xQRFFjZ0cwRUJhaUVhSUFGQkFuUWhBUUpBQWtBRFFDQUJSUTBCUVg4Z0FVRjhhaUlCSUFSQnFBRnFhaWdDQUNJR1xcXG5JQUVnQkdvb0FnQWlDRWNnQmlBSVN4c2lDMFVOQUF3Q0N3dEJmMEVBSUFFYklRc0xJQVFnRHpZQ3VBb2dCRUdZQ1dvZ0JFR2dBUkNrRFJcXFxub2dEeUFFS0FMd0F5SWZJQThnSDBzYkloeEJLRXNORGdKQUFrQWdIQTBBUVFBaEhBd0JDeUFjUVFGeElTQkJBQ0VOUVFBaERnSkFJQnhCXFxcbkFVWU5BQ0FjUVg1eElSMUJBQ0VOSUFSQm1BbHFJUUVnQkVIUUFtb2hCa0VBSVE0RFFDQUJJQUVvQWdBaUVDQUdLQUlBYWlJSUlBMUJBWFxcXG5GcUloRTJBZ0FnQVVFRWFpSU5JQTBvQWdBaUVpQUdRUVJxS0FJQWFpSU5JQWdnRUVrZ0VTQUlTWEpxSWdnMkFnQWdEU0FTU1NBSUlBMUpcXFxuY2lFTklBWkJDR29oQmlBQlFRaHFJUUVnSFNBT1FRSnFJZzVIRFFBTEN3SkFJQ0JGRFFBZ0JFR1lDV29nRGtFQ2RDSUJhaUlHSUFZb0FnXFxcbkFpQmlBRVFkQUNhaUFCYWlnQ0FHb2lBU0FOYWlJSU5nSUFJQUVnQmtrZ0NDQUJTWEloRFFzZ0RVRUJjVVVOQUNBY1FTZExEUWtnQkVHWVxcXG5DV29nSEVFQ2RHcEJBVFlDQUNBY1FRRnFJUndMSUFRZ0hEWUN1QW9nRnlBY0lCY2dIRXNiSWdGQktVOE5DU0FCUVFKMElRRUNRQUpBQTBcXFxuQWdBVVVOQVVGL0lBRkJmR29pQVNBRVFaZ0phbW9vQWdBaUJpQUJJQVJCK0FOcWFpZ0NBQ0lJUnlBR0lBaExHeUlHUlEwQURBSUxDMEYvXFxcblFRQWdBUnNoQmdzQ1FDQUxJQVZJRFFBZ0JpQUZTQTBBSUE5QktVOE5EQUpBSUE4TkFFRUFJUThNRXdzZ0QwRi9ha0gvLy8vL0EzRWlBVVxcXG5FQmFpSUlRUU54SVFZQ1FDQUJRUU5QRFFBZ0JDRUJRZ0FoSVF3U0N5QUlRZnovLy84SGNTRUlJQVFoQVVJQUlTRURRQ0FCSUFFMUFnQkNcXFxuQ240Z0lYd2lJVDRDQUNBQlFRUnFJZzBnRFRVQ0FFSUtmaUFoUWlDSWZDSWhQZ0lBSUFGQkNHb2lEU0FOTlFJQVFncCtJQ0ZDSUloOElpXFxcbkUrQWdBZ0FVRU1haUlOSUEwMUFnQkNDbjRnSVVJZ2lId2lJVDRDQUNBaFFpQ0lJU0VnQVVFUWFpRUJJQWhCZkdvaUNBMEFEQklMQ3lBR1xcXG5JQVZPRFE4Q1FDQUxJQVZPRFFBZ0JFRUJFRXdhSUFRb0FxQUJJZ0VnQkNnQ21BVWlCaUFCSUFaTEd5SUJRU2xQRFEwZ0FVRUNkQ0VCSUFcXFxuUkJmR29oRFNBRVFmZ0Rha0Y4YWlFT0FrQUNRQU5BSUFGRkRRRWdEU0FCYWlFR0lBNGdBV29oQ0NBQlFYeHFJUUZCZnlBSUtBSUFJZ2dnXFxcbkJpZ0NBQ0lHUnlBSUlBWkxHeUlHUlEwQURBSUxDMEYvUVFBZ0FSc2hCZ3NnQmtFQ1R3MFFDeUFiSUFOUERRMGdBaUFhYWlFT0lCc2hBVVxcXG5GL0lRWUNRQU5BSUFGQmYwWU5BU0FHUVFGcUlRWWdBaUFCYWlFSUlBRkJmMm9pRFNFQklBZ3RBQUJCT1VZTkFBc2dBaUFOYWlJSVFRRnFcXFxuSWdFZ0FTMEFBRUVCYWpvQUFDQU5RUUpxSUJ0TERSQWdDRUVDYWtFd0lBWVFvUTBhREJBTElBSkJNVG9BQUFKQUlCdEZEUUFnQWtFQmFrXFxcbkV3SUJzUW9RMGFDd0pBSUJvZ0EwOE5BQ0FPUVRBNkFBQWdCMEVCYWlFSElCdEJBbW9oR2d3UUN5QWFJQU5CaEliT0FCQ0JCUUFMUWJpNFxcXG56Z0JCR2tHb3VNNEFFSU1IQUFzZ0MwRW9RYWk0emdBUWd3VUFDMEc0dU00QVFScEJxTGpPQUJDREJ3QUxJQjFCS0VHb3VNNEFFSU1GQUFcXFxudEJ1TGpPQUVFYVFhaTR6Z0FRZ3djQUN5QVBRU2hCcUxqT0FCQ0RCUUFMUWJpNHpnQkJHa0dvdU00QUVJTUhBQXNnQVVFb1FhaTR6Z0FRXFxcbmd3VUFDeUFjUVNoQnFMak9BQkNCQlFBTElBRkJLRUdvdU00QUVJTUZBQXNnQXlBRFFlU0Z6Z0FRZ1FVQUN5QVBRU2hCcUxqT0FCQ0RCUVxcXG5BTElBRkJLRUdvdU00QUVJTUZBQXNnR2lBRFFmU0Z6Z0FRZ3dVQUN5QWNRU2hCcUxqT0FCQ0RCUUFMQWtBZ0dpQURTdzBBSUFBZ0J6c0JcXFxuQ0NBQUlCbzJBZ1FnQUNBQ05nSUFJQVJCd0FwcUpBQVBDeUFhSUFOQmxJYk9BQkNEQlFBTEFrQWdCa1VOQUFOQUlBRWdBVFVDQUVJS2ZpXFxcbkFoZkNJaFBnSUFJQUZCQkdvaEFTQWhRaUNJSVNFZ0JrRi9haUlHRFFBTEN5QWhweUlCUlEwQUlBOUJKMHNOQVNBRUlBOUJBblJxSUFFMlxcXG5BZ0FnRDBFQmFpRVBDeUFFSUE4MkFxQUJJQjVCS1U4TkFRSkFJQjROQUVFQUlSNE1CQXNnSGtGL2FrSC8vLy8vQTNFaUFVRUJhaUlJUVFcXFxuTnhJUVlDUUNBQlFRTlBEUUFnQkVHb0FXb2hBVUlBSVNFTUF3c2dDRUg4Ly8vL0IzRWhDQ0FFUWFnQmFpRUJRZ0FoSVFOQUlBRWdBVFVDXFxcbkFFSUtmaUFoZkNJaFBnSUFJQUZCQkdvaURTQU5OUUlBUWdwK0lDRkNJSWg4SWlFK0FnQWdBVUVJYWlJTklBMDFBZ0JDQ240Z0lVSWdpSFxcXG53aUlUNENBQ0FCUVF4cUlnMGdEVFVDQUVJS2ZpQWhRaUNJZkNJaFBnSUFJQ0ZDSUlnaElTQUJRUkJxSVFFZ0NFRjhhaUlJRFFBTUF3c0xcXFxuSUE5QktFR291TTRBRUlFRkFBc2dIa0VvUWFpNHpnQVFnd1VBQ3dKQUlBWkZEUUFEUUNBQklBRTFBZ0JDQ240Z0lYd2lJVDRDQUNBQlFRXFxcblJxSVFFZ0lVSWdpQ0VoSUFaQmYyb2lCZzBBQ3dzZ0lhY2lBVVVOQUNBZVFTZExEUUVnQkVHb0FXb2dIa0VDZEdvZ0FUWUNBQ0FlUVFGcVxcXG5JUjRMSUFRZ0hqWUN5QUlnSDBFcFR3MEJBa0FnSHcwQVFRQWhId3dFQ3lBZlFYOXFRZi8vLy84RGNTSUJRUUZxSWdoQkEzRWhCZ0pBSUFcXFxuRkJBMDhOQUNBRVFkQUNhaUVCUWdBaElRd0RDeUFJUWZ6Ly8vOEhjU0VJSUFSQjBBSnFJUUZDQUNFaEEwQWdBU0FCTlFJQVFncCtJQ0Y4XFxcbklpRStBZ0FnQVVFRWFpSU5JQTAxQWdCQ0NuNGdJVUlnaUh3aUlUNENBQ0FCUVFocUlnMGdEVFVDQUVJS2ZpQWhRaUNJZkNJaFBnSUFJQVxcXG5GQkRHb2lEU0FOTlFJQVFncCtJQ0ZDSUloOElpRStBZ0FnSVVJZ2lDRWhJQUZCRUdvaEFTQUlRWHhxSWdnTkFBd0RDd3NnSGtFb1FhaTRcXFxuemdBUWdRVUFDeUFmUVNoQnFMak9BQkNEQlFBTEFrQWdCa1VOQUFOQUlBRWdBVFVDQUVJS2ZpQWhmQ0loUGdJQUlBRkJCR29oQVNBaFFpXFxcbkNJSVNFZ0JrRi9haUlHRFFBTEN5QWhweUlCUlEwQUlCOUJKMHNOQXlBRVFkQUNhaUFmUVFKMGFpQUJOZ0lBSUI5QkFXb2hId3NnQkNBZlxcXG5OZ0x3QXlBUElCWWdEeUFXU3hzaUMwRW9UUTBBQ3dzZ0MwRW9RYWk0emdBUWd3VUFDeUFmUVNoQnFMak9BQkNCQlFBTElBcEJLRUdvdU1cXFxuNEFFSUVGQUF1dktBSWJmd04rSXdCQjBBWnJJZ1VrQUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDXFxcblFDQUJLUU1BSWlCUURRQWdBU2tEQ0NJaFVBMEJJQUVwQXhBaUlsQU5BaUFnSUNKOElDQlVEUU1nSUNBaFZBMEVJQUV2QVJnaEFTQUZJQ1xcXG5BK0FnZ2dCVUVCUVFJZ0lFS0FnSUNBRUZRaUJoczJBcWdCSUFWQkFDQWdRaUNJcHlBR0d6WUNEQ0FGUVJCcVFRQkJtQUVRb1EwYUlBVkJcXFxuc0FGcVFRUnlRUUJCbkFFUW9RMGFJQVZCQVRZQ3NBRWdCVUVCTmdMUUFpQUJyY01nSUVKL2ZIbDlRc0thd2VnRWZrS0FvYzJndEFKOFFpXFxcbkNJcHlJR3dTRUhBa0FDUUNBQndTSUlRUUJJRFFBZ0JVRUlhaUFCRUV3YURBRUxJQVZCc0FGcVFRQWdDR3ZCRUV3YUN3SkFBa0FnQjBGL1xcXG5TZzBBSUFWQkNHcEJBQ0FIYThFUVhCb01BUXNnQlVHd0FXb2dCa0gvL3dOeEVGd2FDeUFGSUFVb0F0QUNJZ2syQXNnR0lBVkJxQVZxSUFcXFxuVkJzQUZxUWFBQkVLUU5HaUFESVFvQ1FDQURRUXBKRFFBQ1FBSkFJQWxCS0UwTkFDQUpJUUVNQVFzZ0JVR29CV3BCZUdvaEN5QURJUW9nXFxcbkNTRUJBMEFDUUNBQlJRMEFJQUZCZjJwQi8vLy8vd054SWdaQkFXb2lDRUVCY1NFTUlBRkJBblFoQVFKQUFrQWdCZzBBSUFWQnFBVnFJQVxcXG5GcUlRRkNBQ0VnREFFTElBaEIvdi8vL3dkeElRWWdDeUFCYWlFQlFnQWhJQU5BSUFGQkJHb2lDQ0FnUWlDR0lBZzFBZ0NFSWlCQ2dKVHJcXFxuM0FPQUlpSStBZ0FnQVNBZ0lDSkNnSlRyM0FOK2ZVSWdoaUFCTlFJQWhDSWdRb0NVNjl3RGdDSWlQZ0lBSUNBZ0lrS0FsT3ZjQTM1OUlTXFxcbkFnQVVGNGFpRUJJQVpCZm1vaUJnMEFDeUFCUVFocUlRRUxJQXhGRFFBZ0FVRjhhaUlCSUNCQ0lJWWdBVFVDQUlSQ2dKVHIzQU9BUGdJQVxcXG5DeUFLUVhkcUlncEJDVTBOQWlBRktBTElCaUlCUVNsSkRRQUxDeUFCUVNoQnFMak9BQkNEQlFBTEFrQUNRQUpBQWtBZ0NrRUNkRUhjZ01cXFxuNEFhaWdDQUNJR1JRMEFJQVVvQXNnR0lnRkJLVThOQ1FKQUlBRU5BRUVBSVFFTUJBc2dBVUYvYWtILy8vLy9BM0VpQ0VFQmFpSU1RUUZ4XFxcbklRb2dBVUVDZENFQklBYXRJU0FnQ0EwQklBVkJxQVZxSUFGcUlRRkNBQ0VpREFJTFFlKzR6Z0JCRzBHb3VNNEFFSU1IQUFzZ0RFSCsvL1xcXG4vL0IzRWhCaUFCSUFWQnFBVnFha0Y0YWlFQlFnQWhJZ05BSUFGQkJHb2lDQ0FpUWlDR0lBZzFBZ0NFSWlJZ0lJQWlJVDRDQUNBQklDSWdcXFxuSVNBZ2ZuMUNJSVlnQVRVQ0FJUWlJaUFnZ0NJaFBnSUFJQ0lnSVNBZ2ZuMGhJaUFCUVhocUlRRWdCa0YrYWlJR0RRQUxJQUZCQ0dvaEFRXFxcbnNDUUNBS1JRMEFJQUZCZkdvaUFTQWlRaUNHSUFFMUFnQ0VJQ0NBUGdJQUN5QUZLQUxJQmlFQkN5QUJJQVVvQXFnQklnMGdBU0FOU3hzaVxcXG5Ea0VvU3cwR0FrQWdEZzBBUVFBaERnd0pDeUFPUVFGeElROENRQ0FPUVFGSERRQkJBQ0VLUVFBaERBd0lDeUFPUVg1eElSQkJBQ0VLSUFcXFxuVkJxQVZxSVFFZ0JVRUlhaUVHUVFBaERBTkFJQUVnQVNnQ0FDSUxJQVlvQWdCcUlnZ2dDa0VCY1dvaUVUWUNBQ0FCUVFScUlnb2dDaWdDXFxcbkFDSVNJQVpCQkdvb0FnQnFJZ29nQ0NBTFNTQVJJQWhKY21vaUNEWUNBQ0FLSUJKSklBZ2dDa2x5SVFvZ0JrRUlhaUVHSUFGQkNHb2hBU1xcXG5BUUlBeEJBbW9pREVjTkFBd0lDd3RCaTRQT0FFRWNRYVNHemdBUWd3Y0FDMEc0Zzg0QVFSMUJ0SWJPQUJDREJ3QUxRZWlEemdCQkhFSEVcXFxuaHM0QUVJTUhBQXRCbElUT0FFRTJRZFNHemdBUWd3Y0FDMEhjaE00QVFUZEI1SWJPQUJDREJ3QUxJQUZCS0VHb3VNNEFFSU1GQUFzZ0RrXFxcbkVvUWFpNHpnQVFnd1VBQ3dKQUlBOUZEUUFnQlVHb0JXb2dERUVDZENJQmFpSUdJQVlvQWdBaUJpQUZRUWhxSUFGcUtBSUFhaUlCSUFwcVxcXG5JZ2cyQWdBZ0FTQUdTU0FJSUFGSmNpRUtDeUFLUVFGeFJRMEFJQTVCSjBzTkFTQUZRYWdGYWlBT1FRSjBha0VCTmdJQUlBNUJBV29oRGdcXFxuc2dCU0FPTmdMSUJpQU9JQWtnRGlBSlN4c2lBVUVwVHcwQklBRkJBblFoQVFKQUFrQURRQ0FCUlEwQlFYOGdBVUY4YWlJQklBVkJzQUZxXFxcbmFpZ0NBQ0lHSUFFZ0JVR29CV3BxS0FJQUlnaEhJQVlnQ0VzYklnWkZEUUFNQWdzTFFYOUJBQ0FCR3lFR0N3SkFJQVpCQVVzTkFDQUhRUVxcXG5GcUlRY01CZ3NnRFVFcFR3MENBa0FnRFEwQVFRQWhEUXdGQ3lBTlFYOXFRZi8vLy84RGNTSUJRUUZxSWdoQkEzRWhCZ0pBSUFGQkEwOE5cXFxuQUNBRlFRaHFJUUZDQUNFZ0RBUUxJQWhCL1AvLy93ZHhJUWdnQlVFSWFpRUJRZ0FoSUFOQUlBRWdBVFVDQUVJS2ZpQWdmQ0lnUGdJQUlBXFxcbkZCQkdvaUNpQUtOUUlBUWdwK0lDQkNJSWg4SWlBK0FnQWdBVUVJYWlJS0lBbzFBZ0JDQ240Z0lFSWdpSHdpSUQ0Q0FDQUJRUXhxSWdvZ1xcXG5DalVDQUVJS2ZpQWdRaUNJZkNJZ1BnSUFJQ0JDSUlnaElDQUJRUkJxSVFFZ0NFRjhhaUlJRFFBTUJBc0xJQTVCS0VHb3VNNEFFSUVGQUFcXFxuc2dBVUVvUWFpNHpnQVFnd1VBQ3lBTlFTaEJxTGpPQUJDREJRQUxBa0FnQmtVTkFBTkFJQUVnQVRVQ0FFSUtmaUFnZkNJZ1BnSUFJQUZCXFxcbkJHb2hBU0FnUWlDSUlTQWdCa0YvYWlJR0RRQUxDeUFncHlJQlJRMEFJQTFCSjBzTkFpQUZRUWhxSUExQkFuUnFJQUUyQWdBZ0RVRUJhaVxcXG5FTkN5QUZJQTAyQXFnQkMwRUFJUXNDUUFKQUlBZkJJZ0VnQk1FaUUwZ05BQ0FISUFScndTQURJQUVnRTJzZ0Ewa2JJZ29OQVVFQUlRc0xcXFxuUVFBaENnd0NDeUFGSUFrMkF2Z0RJQVZCMkFKcUlBVkJzQUZxUWFBQkVLUU5HaUFGUWRnQ2FrRUJFRXdoRkNBRklBVW9BdEFDTmdLZ0JTXFxcbkFGUVlBRWFpQUZRYkFCYWtHZ0FSQ2tEUm9nQlVHQUJHcEJBaEJNSVJVZ0JTQUZLQUxRQWpZQ3lBWWdCVUdvQldvZ0JVR3dBV3BCb0FFUVxcXG5wQTBhSUFWQnNBRnFRWHhxSVE0Z0JVSFlBbXBCZkdvaEVDQUZRWUFFYWtGOGFpRVNJQVZCcUFWcVFYeHFJUkVnQlVHb0JXcEJBeEJNSVJcXFxuWWdCU2dDcUFFaEN5QUZLQUxRQWlFSklBVW9BdmdESVJjZ0JTZ0NvQVVoR0NBRktBTElCaUVaUVFBaEdnSkFBMEFnR2lFYkFrQUNRQUpBXFxcbkFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FMUVNsUERRQWdHMEVCYWlFYUlBdEJBblFoQ0VFQUlRRUNRQUpBQWtBRFFDQUlJQVxcXG5GR0RRRWdCVUVJYWlBQmFpRUdJQUZCQkdvaEFTQUdLQUlBUlEwQUN5QUxJQmtnQ3lBWlN4c2lIRUVwVHcwRUlCeEJBblFoQVFKQUFrQURcXFxuUUNBQlJRMEJRWDhnRVNBQmFpZ0NBQ0lHSUFGQmZHb2lBU0FGUVFocWFpZ0NBQ0lJUnlBR0lBaExHeUlHUlEwQURBSUxDMEYvUVFBZ0FSXFxcbnNoQmd0QkFDRWRBa0FnQmtFQ1R3MEFBa0FnSEVVTkFFRUJJUXdnSEVFQmNTRWRRUUFoQ3dKQUlCeEJBVVlOQUNBY1FYNXhJUjVCQUNFTFxcXG5RUUVoRENBRlFRaHFJUUVnQlVHb0JXb2hCZ05BSUFFZ0FTZ0NBQ0lOSUFZb0FnQkJmM05xSWdnZ0RFRUJjV29pQkRZQ0FDQUJRUVJxSWdcXFxud2dEQ2dDQUNJUElBWkJCR29vQWdCQmYzTnFJZ3dnQ0NBTlNTQUVJQWhKY21vaUNEWUNBQ0FNSUE5SklBZ2dERWx5SVF3Z0JrRUlhaUVHXFxcbklBRkJDR29oQVNBZUlBdEJBbW9pQzBjTkFBc0xBa0FnSFVVTkFDQUZRUWhxSUF0QkFuUWlBV29pQmlBR0tBSUFJZ1lnRmlBQmFpZ0NBRVxcXG5GL2Myb2lBU0FNYWlJSU5nSUFJQUVnQmtrZ0NDQUJTWEloREFzZ0RFRUJjVVVOQ1FzZ0JTQWNOZ0tvQVVFSUlSMGdIQ0VMQ3lBTElCZ2dcXFxuQ3lBWVN4c2lIa0VwVHcwSUlCNUJBblFoQVFOQUlBRkZEUUpCZnlBU0lBRnFLQUlBSWdZZ0FVRjhhaUlCSUFWQkNHcHFLQUlBSWdoSElBXFxcbllnQ0VzYklnWkZEUUFNQXdzTElBb2dHMGtOQkNBS0lBTkxEUVVnQ2lBYlJnMFVJQUlnRzJwQk1DQUtJQnRyRUtFTkdnd1VDMEYvUVFBZ1xcXG5BUnNoQmdzQ1FBSkFJQVpCQVUwTkFDQUxJUjRNQVFzQ1FDQWVSUTBBUVFFaERDQWVRUUZ4SVI5QkFDRUxBa0FnSGtFQlJnMEFJQjVCZm5cXFxuRWhIRUVBSVF0QkFTRU1JQVZCQ0dvaEFTQUZRWUFFYWlFR0EwQWdBU0FCS0FJQUlnMGdCaWdDQUVGL2Myb2lDQ0FNUVFGeGFpSUVOZ0lBXFxcbklBRkJCR29pRENBTUtBSUFJZzhnQmtFRWFpZ0NBRUYvYzJvaURDQUlJQTFKSUFRZ0NFbHlhaUlJTmdJQUlBd2dEMGtnQ0NBTVNYSWhEQ1xcXG5BR1FRaHFJUVlnQVVFSWFpRUJJQndnQzBFQ2FpSUxSdzBBQ3dzQ1FDQWZSUTBBSUFWQkNHb2dDMEVDZENJQmFpSUdJQVlvQWdBaUJpQVZcXFxuSUFGcUtBSUFRWDl6YWlJQklBeHFJZ2cyQWdBZ0FTQUdTU0FJSUFGSmNpRU1DeUFNUVFGeFJRMElDeUFGSUI0MkFxZ0JJQjFCQkhJaEhRXFxcbnNnSGlBWElCNGdGMHNiSWh4QktVOE5CeUFjUVFKMElRRUNRQUpBQTBBZ0FVVU5BVUYvSUJBZ0FXb29BZ0FpQmlBQlFYeHFJZ0VnQlVFSVxcXG5hbW9vQWdBaUNFY2dCaUFJU3hzaUJrVU5BQXdDQ3d0QmYwRUFJQUViSVFZTEFrQUNRQ0FHUVFGTkRRQWdIaUVjREFFTEFrQWdIRVVOQUVcXFxuRUJJUXdnSEVFQmNTRWZRUUFoQ3dKQUlCeEJBVVlOQUNBY1FYNXhJUjVCQUNFTFFRRWhEQ0FGUVFocUlRRWdCVUhZQW1vaEJnTkFJQUVnXFxcbkFTZ0NBQ0lOSUFZb0FnQkJmM05xSWdnZ0RFRUJjV29pQkRZQ0FDQUJRUVJxSWd3Z0RDZ0NBQ0lQSUFaQkJHb29BZ0JCZjNOcUlnd2dDQ1xcXG5BTlNTQUVJQWhKY21vaUNEWUNBQ0FNSUE5SklBZ2dERWx5SVF3Z0JrRUlhaUVHSUFGQkNHb2hBU0FlSUF0QkFtb2lDMGNOQUFzTEFrQWdcXFxuSDBVTkFDQUZRUWhxSUF0QkFuUWlBV29pQmlBR0tBSUFJZ1lnRkNBQmFpZ0NBRUYvYzJvaUFTQU1haUlJTmdJQUlBRWdCa2tnQ0NBQlNYXFxcbkloREFzZ0RFRUJjVVVOQ2dzZ0JTQWNOZ0tvQVNBZFFRSnFJUjBMSUJ3Z0NTQWNJQWxMR3lJTFFTbFBEUWtnQzBFQ2RDRUJBa0FDUUFOQVxcXG5JQUZGRFFGQmZ5QU9JQUZxS0FJQUlnWWdBVUY4YWlJQklBVkJDR3BxS0FJQUlnaEhJQVlnQ0VzYklnWkZEUUFNQWdzTFFYOUJBQ0FCR3lcXFxuRUdDd0pBQWtBZ0JrRUJUUTBBSUJ3aEN3d0JDd0pBSUF0RkRRQkJBU0VNSUF0QkFYRWhIMEVBSVEwQ1FDQUxRUUZHRFFBZ0MwRitjU0VjXFxcblFRQWhEVUVCSVF3Z0JVRUlhaUVCSUFWQnNBRnFJUVlEUUNBQklBRW9BZ0FpQkNBR0tBSUFRWDl6YWlJSUlBeEJBWEZxSWc4MkFnQWdBVVxcXG5FRWFpSU1JQXdvQWdBaUhpQUdRUVJxS0FJQVFYOXphaUlNSUFnZ0JFa2dEeUFJU1hKcUlnZzJBZ0FnRENBZVNTQUlJQXhKY2lFTUlBWkJcXFxuQ0dvaEJpQUJRUWhxSVFFZ0hDQU5RUUpxSWcxSERRQUxDd0pBSUI5RkRRQWdCVUVJYWlBTlFRSjBJZ0ZxSWdZZ0JpZ0NBQ0lHSUFWQnNBXFxcbkZxSUFGcUtBSUFRWDl6YWlJQklBeHFJZ2cyQWdBZ0FTQUdTU0FJSUFGSmNpRU1DeUFNUVFGeFJRME1DeUFGSUFzMkFxZ0JJQjFCQVdvaFxcXG5IUXNDUUNBYklBTkdEUUFnQWlBYmFpQWRRVEJxT2dBQUlBdEJLVThOREFKQUlBc05BRUVBSVFzTUR3c2dDMEYvYWtILy8vLy9BM0VpQVVcXFxuRUJhaUlJUVFOeElRWUNRQ0FCUVFOUERRQWdCVUVJYWlFQlFnQWhJQXdPQ3lBSVFmei8vLzhIY1NFSUlBVkJDR29oQVVJQUlTQURRQ0FCXFxcbklBRTFBZ0JDQ240Z0lId2lJRDRDQUNBQlFRUnFJZ3dnRERVQ0FFSUtmaUFnUWlDSWZDSWdQZ0lBSUFGQkNHb2lEQ0FNTlFJQVFncCtJQ1xcXG5CQ0lJaDhJaUErQWdBZ0FVRU1haUlNSUF3MUFnQkNDbjRnSUVJZ2lId2lJRDRDQUNBZ1FpQ0lJU0FnQVVFUWFpRUJJQWhCZkdvaUNBMEFcXFxuREE0TEN5QURJQU5CaElmT0FCQ0JCUUFMSUF0QktFR291TTRBRUlNRkFBc2dIRUVvUWFpNHpnQVFnd1VBQ3lBYklBcEI5SWJPQUJDRUJRXFxcbkFMSUFvZ0EwSDBoczRBRUlNRkFBdEJ1TGpPQUVFYVFhaTR6Z0FRZ3djQUN5QWVRU2hCcUxqT0FCQ0RCUUFMUWJpNHpnQkJHa0dvdU00QVxcXG5FSU1IQUFzZ0hFRW9RYWk0emdBUWd3VUFDMEc0dU00QVFScEJxTGpPQUJDREJ3QUxJQXRCS0VHb3VNNEFFSU1GQUF0QnVMak9BRUVhUWFcXFxuaTR6Z0FRZ3djQUN5QUxRU2hCcUxqT0FCQ0RCUUFMQWtBZ0JrVU5BQU5BSUFFZ0FUVUNBRUlLZmlBZ2ZDSWdQZ0lBSUFGQkJHb2hBU0FnXFxcblFpQ0lJU0FnQmtGL2FpSUdEUUFMQ3lBZ3B5SUJSUTBBSUF0Qkowc05BaUFGUVFocUlBdEJBblJxSUFFMkFnQWdDMEVCYWlFTEN5QUZJQVxcXG5zMkFxZ0JJQm9nQ2tjTkFBdEJBU0VMREFJTElBdEJLRUdvdU00QUVJRUZBQXNnRFVFb1FhaTR6Z0FRZ1FVQUN3SkFBa0FDUUFKQUFrQUNcXFxuUUFKQUFrQWdDVUVwVHcwQUFrQWdDUTBBUVFBaENRd0RDeUFKUVg5cVFmLy8vLzhEY1NJQlFRRnFJZ2hCQTNFaEJnSkFJQUZCQTA4TkFDXFxcbkFGUWJBQmFpRUJRZ0FoSUF3Q0N5QUlRZnovLy84SGNTRUlJQVZCc0FGcUlRRkNBQ0VnQTBBZ0FTQUJOUUlBUWdWK0lDQjhJaUErQWdBZ1xcXG5BVUVFYWlJTUlBdzFBZ0JDQlg0Z0lFSWdpSHdpSUQ0Q0FDQUJRUWhxSWd3Z0REVUNBRUlGZmlBZ1FpQ0lmQ0lnUGdJQUlBRkJER29pRENcXFxuQU1OUUlBUWdWK0lDQkNJSWg4SWlBK0FnQWdJRUlnaUNFZ0lBRkJFR29oQVNBSVFYeHFJZ2dOQUF3Q0N3c2dDVUVvUWFpNHpnQVFnd1VBXFxcbkN3SkFJQVpGRFFBRFFDQUJJQUUxQWdCQ0JYNGdJSHdpSUQ0Q0FDQUJRUVJxSVFFZ0lFSWdpQ0VnSUFaQmYyb2lCZzBBQ3dzZ0lLY2lBVVxcXG5VTkFDQUpRU2RMRFFFZ0JVR3dBV29nQ1VFQ2RHb2dBVFlDQUNBSlFRRnFJUWtMSUFVZ0NUWUMwQUlnQlNnQ3FBRWlBU0FKSUFFZ0NVc2JcXFxuSWdGQktVOE5BU0FCUVFKMElRRUNRQUpBQTBBZ0FVVU5BVUYvSUFGQmZHb2lBU0FGUWJBQmFtb29BZ0FpQmlBQklBVkJDR3BxS0FJQUlnXFxcbmhISUFZZ0NFc2JJZ1pGRFFBTUFnc0xRWDlCQUNBQkd5RUdDd0pBQWtBZ0JrSC9BWEVPQWdBQkJnc2dDMFVOQlNBS1FYOXFJZ0VnQTA4TlxcXG5BeUFDSUFGcUxRQUFRUUZ4UlEwRkN5QUtJQU5MRFFNZ0FpQUthaUVNUVFBaEFTQUNJUVlDUUFOQUlBb2dBVVlOQVNBQlFRRnFJUUVnQmtcXFxuRi9haUlHSUFwcUlnZ3RBQUJCT1VZTkFBc2dDQ0FJTFFBQVFRRnFPZ0FBSUFvZ0FXdEJBV29nQ2s4TkJTQUlRUUZxUVRBZ0FVRi9haENoXFxcbkRSb01CUXNDUUFKQUlBb05BRUV4SVFFTUFRc2dBa0V4T2dBQVFUQWhBU0FLUVFGR0RRQkJNQ0VCSUFKQkFXcEJNQ0FLUVg5cUVLRU5HZ1xcXG5zZ0IwRUJhc0VpQnlBVFRBMEVJQW9nQTA4TkJDQU1JQUU2QUFBZ0NrRUJhaUVLREFRTElBbEJLRUdvdU00QUVJRUZBQXNnQVVFb1FhaTRcXFxuemdBUWd3VUFDeUFCSUFOQmxJZk9BQkNCQlFBTElBb2dBMEdraDg0QUVJTUZBQXNnQ2lBRFRRMEFJQW9nQTBHMGg4NEFFSU1GQUFzZ0FDXFxcbkFIT3dFSUlBQWdDallDQkNBQUlBSTJBZ0FnQlVIUUJtb2tBQXZBSUFJUWZ3RitJd0JCRUdzaUFTUUFBa0FDUUFKQUFrQUNRQUpBQWtBQ1xcXG5RQUpBQWtBZ0FFSDFBVWtOQUJDS0RpSUNRUWdRbkFzaEEwRVVRUWdRbkFzaEJFRVFRUWdRbkFzaEJVRUFJUVpCQUVFUVFRZ1FuQXRCQW5cXFxuUnJJZ2NnQWlBRklBTWdCR3BxYTBINC8zdHFRWGR4UVgxcUlnSWdCeUFDU1JzZ0FFME5DU0FBUVFScVFRZ1FuQXNoQWtFQUtBTDhxazlGXFxcbkRRaEJBQ0VJQWtBZ0FrR0FBa2tOQUVFZklRZ2dBa0gvLy84SFN3MEFJQUpCQmlBQ1FRaDJaeUlBYTNaQkFYRWdBRUVCZEd0QlBtb2hDQVxcXG50QkFDQUNheUVHSUFoQkFuUkI0S2ZQQUdvb0FnQWlBdzBCUVFBaEFFRUFJUVFNQWd0QkVDQUFRUVJxUVJCQkNCQ2NDMEY3YWlBQVN4dEJcXFxuQ0JDY0N5RUNBa0FDUUFKQUFrQkJBQ2dDK0twUElnUWdBa0VEZGlJR2RpSUFRUU54RFFBZ0FrRUFLQUtBcTA5TkRRc2dBQTBCUVFBb0F2XFxcbnlxVHlJQVJRMExJQUFRMHd4b1FRSjBRZUNuendCcUtBSUFJZ01RaXc0UWxRMGdBbXNoQmdKQUlBTVE2Z29pQUVVTkFBTkFJQUFRaXc0UVxcXG5sUTBnQW1zaUJDQUdJQVFnQmtraUJCc2hCaUFBSUFNZ0JCc2hBeUFBRU9vS0lnQU5BQXNMSUFNUWl3NGlBQ0FDRU00TklRUWdBeEQyQVNcXFxuQUdRUkJCQ0JDY0Mwa05BeUFFRUlzT0lRUWdBQ0FDRU5VTUlBUWdCaEQ5Q2tFQUtBS0FxMDhpQncwQ0RBa0xBa0FDUUNBQVFYOXpRUUZ4XFxcbklBWnFJZ0pCQTNRaUEwSDRxTThBYWlnQ0FDSUFRUWhxS0FJQUlnWWdBMEh3cU04QWFpSURSZzBBSUFZZ0F6WUNEQ0FESUFZMkFnZ01BUVxcXG50QkFDQUVRWDRnQW5keE5nTDRxazhMSUFBZ0FrRURkQkN1Q2lBQUVOQU5JUVlNQ3dzQ1FBSkFRUUVnQmtFZmNTSUdkQkRJQ3lBQUlBWjBcXFxuY1JEVERHZ2lCa0VEZENJRVFmaW96d0JxS0FJQUlnQkJDR29vQWdBaUF5QUVRZkNvendCcUlnUkdEUUFnQXlBRU5nSU1JQVFnQXpZQ0NBXFxcbndCQzBFQVFRQW9BdmlxVDBGK0lBWjNjVFlDK0twUEN5QUFJQUlRMVF3Z0FDQUNFTTROSWdRZ0JrRURkQ0FDYXlJRkVQMEtRUUFvQW9DclxcXG5UeUlEUlEwR0lBTkJlSEZCOEtqUEFHb2hCa0VBS0FLSXEwOGhBZ0pBQWtCQkFDZ0MrS3BQSWdkQkFTQURRUU4yZENJRGNVVU5BQ0FHS0FcXFxuSUlJUU1NQVF0QkFDQUhJQU55TmdMNHFrOGdCaUVEQ3lBR0lBSTJBZ2dnQXlBQ05nSU1JQUlnQmpZQ0RDQUNJQU0yQWdnTUJnc2dCMEY0XFxcbmNVSHdxTThBYWlFRlFRQW9Bb2lyVHlFREFrQUNRRUVBS0FMNHFrOGlDRUVCSUFkQkEzWjBJZ2R4UlEwQUlBVW9BZ2doQnd3QkMwRUFJQVxcXG5nZ0IzSTJBdmlxVHlBRklRY0xJQVVnQXpZQ0NDQUhJQU0yQWd3Z0F5QUZOZ0lNSUFNZ0J6WUNDQXdHQ3lBQUlBWWdBbW9RcmdvTUJnc2dcXFxuQWlBSUVQd0tkQ0VGUVFBaEFFRUFJUVFEUUFKQUlBTVFpdzRRbFEwaUJ5QUNTUTBBSUFjZ0Ftc2lCeUFHVHcwQUlBY2hCaUFESVFRZ0J3XFxcbjBBUVFBaEJpQURJUVFnQXlFQURBTUxJQU5CRkdvb0FnQWlCeUFBSUFjZ0F5QUZRUjEyUVFSeGFrRVFhaWdDQUNJRFJ4c2dBQ0FIR3lFQVxcXG5JQVZCQVhRaEJTQUREUUFMQ3dKQUlBQWdCSElOQUVFQUlRUkJBU0FJZEJESUMwRUFLQUw4cWs5eElnQkZEUVlnQUJEVERHaEJBblJCNEtcXFxuZlBBR29vQWdBaEFBc2dBRVVOQVFzRFFDQUFJQVFnQUJDTERoQ1ZEU0lESUFKUElBTWdBbXNpQXlBR1NYRWlCUnNoQkNBRElBWWdCUnNoXFxcbkJpQUFFT29LSWdBTkFBc0xJQVJGRFFNQ1FFRUFLQUtBcTA4aUFDQUNTUTBBSUFZZ0FDQUNhMDhOQkFzZ0JCQ0xEaUlBSUFJUXpnMGhBeVxcXG5BRUVQWUJBa0FDUUNBR1FSQkJDQkNjQzBrTkFDQUFJQUlRMVF3Z0F5QUdFUDBLQWtBZ0JrR0FBa2tOQUNBRElBWVErZ0VNQWdzZ0JrRjRcXFxuY1VId3FNOEFhaUVFQWtBQ1FFRUFLQUw0cWs4aUJVRUJJQVpCQTNaMElnWnhSUTBBSUFRb0FnZ2hCZ3dCQzBFQUlBVWdCbkkyQXZpcVR5XFxcbkFFSVFZTElBUWdBellDQ0NBR0lBTTJBZ3dnQXlBRU5nSU1JQU1nQmpZQ0NBd0JDeUFBSUFZZ0Ftb1FyZ29MSUFBUTBBMGlCa1VOQXd3RVxcXG5DMEVBSUFRMkFvaXJUMEVBSUFVMkFvQ3JUeUFBRU5BTklRWU1Bd3RCQUNBRU5nS0lxMDlCQUNBR05nS0FxMDhMSUFBUTBBMGlCZzBCQ3dcXFxuSkFBa0FDUUFKQUFrQUNRQUpBQWtCQkFDZ0NnS3RQSWdZZ0FrOE5BRUVBS0FLRXEwOGlBQ0FDU3cwQ0lBRkI0S2ZQQUNBQ0VJb09JZ0JyXFxcbklBQkJDQkNjQzJwQkZFRUlFSndMYWtFUVFRZ1FuQXRxUVFocVFZQ0FCQkNjQ3hEYkJ5QUJLQUlBSWdZTkFVRUFJUVlNQ0F0QkFDZ0NpS1xcXG50UElRQUNRQ0FHSUFKcklnWkJFRUVJRUp3TFR3MEFRUUJCQURZQ2lLdFBRUUFvQW9DclR5RUNRUUJCQURZQ2dLdFBJQUFnQWhDdUNpQUFcXFxuRU5BTklRWU1DQXNnQUNBQ0VNNE5JUU5CQUNBR05nS0FxMDlCQUNBRE5nS0lxMDhnQXlBR0VQMEtJQUFnQWhEVkRDQUFFTkFOSVFZTUJ3XFxcbnNnQVNnQ0NDRUlRUUJCQUNnQ2tLdFBJQUVvQWdRaUJXb2lBRFlDa0t0UFFRQkJBQ2dDbEt0UElnTWdBQ0FESUFCTEd6WUNsS3RQQWtBQ1xcXG5RQUpBQWtCQkFDZ0NqS3RQUlEwQVFlQ296d0FoQUFOQUlBWWdBQkRXREVZTkFpQUFLQUlJSWdBTkFBd0RDd3RCQUNnQ25LdFBJZ0JGRFFcXFxuVWdCaUFBU1EwRkRBY0xJQUFRbHcwTkFDQUFFSmdOSUFoSERRQWdBRUVBS0FLTXEwOFE0UWtOQVF0QkFFRUFLQUtjcTA4aUFDQUdJQVlnXFxcbkFFc2JOZ0tjcTA4Z0JpQUZhaUVEUWVDb3p3QWhBQUpBQWtBQ1FBTkFJQUFvQWdBZ0EwWU5BU0FBS0FJSUlnQU5BQXdDQ3dzZ0FCQ1hEUVxcXG4wQUlBQVFtQTBnQ0VZTkFRdEJBQ2dDakt0UElRTkI0S2pQQUNFQUFrQURRQUpBSUFBb0FnQWdBMHNOQUNBQUVOWU1JQU5MRFFJTElBQW9cXFxuQWdnaUFBMEFDMEVBSVFBTElBQVExZ3dpQkVFVVFRZ1FuQXNpQ1d0QmFXb2hBQ0FESUFBZ0FCRFFEU0lIUVFnUW5Bc2dCMnRxSWdBZ0FDXFxcbkFEUVJCQkNCQ2NDMnBKR3lJSEVOQU5JUW9nQnlBSkVNNE5JUUFRaWc0aUMwRUlFSndMSVF4QkZFRUlFSndMSVExQkVFRUlFSndMSVE1QlxcXG5BQ0FHSUFZUTBBMGlEMEVJRUp3TElBOXJJaEFRemcwaUR6WUNqS3RQUVFBZ0N5QUZhaUFPSUF3Z0RXcHFJQkJxYXlJTE5nS0VxMDhnRHlcXFxuQUxRUUZ5TmdJRUVJb09JZ3hCQ0JDY0N5RU5RUlJCQ0JDY0N5RU9RUkJCQ0JDY0N5RVFJQThnQ3hET0RTQVFJQTRnRFNBTWEycHFOZ0lFXFxcblFRQkJnSUNBQVRZQ21LdFBJQWNnQ1JEVkRFRUFLUUxncUU4aEVTQUtRUWhxUVFBcEF1aW9UemNDQUNBS0lCRTNBZ0JCQUNBSU5nTHNxRVxcXG45QkFDQUZOZ0xrcUU5QkFDQUdOZ0xncUU5QkFDQUtOZ0xvcUU4RFFDQUFRUVFRemcwaEJpQUFFSWtPTmdJRUlBWWhBQ0FHUVFScUlBUkpcXFxuRFFBTElBY2dBMFlOQnlBSElBTnJJUUFnQXlBQUlBTWdBQkRPRFJEL0NRSkFJQUJCZ0FKSkRRQWdBeUFBRVBvQkRBZ0xJQUJCZUhGQjhLXFxcbmpQQUdvaEJnSkFBa0JCQUNnQytLcFBJZ1JCQVNBQVFRTjJkQ0lBY1VVTkFDQUdLQUlJSVFBTUFRdEJBQ0FFSUFCeU5nTDRxazhnQmlFQVxcXG5DeUFHSUFNMkFnZ2dBQ0FETmdJTUlBTWdCallDRENBRElBQTJBZ2dNQndzZ0FDZ0NBQ0VFSUFBZ0JqWUNBQ0FBSUFBb0FnUWdCV28yQWdcXFxuUWdCaERRRFNJQVFRZ1FuQXNoQXlBRUVOQU5JZ1ZCQ0JDY0N5RUhJQVlnQXlBQWEyb2lCaUFDRU00TklRTWdCaUFDRU5VTUlBUWdCeUFGXFxcbmEyb2lBQ0FDSUFacWF5RUNBa0FnQUVFQUtBS01xMDlHRFFBZ0FFRUFLQUtJcTA5R0RRTWdBQkNtREEwRkFrQUNRQ0FBRUpVTklnUkJnQVxcXG5KSkRRQWdBQkQyQVF3QkN3SkFJQUJCREdvb0FnQWlCU0FBUVFocUtBSUFJZ2RHRFFBZ0J5QUZOZ0lNSUFVZ0J6WUNDQXdCQzBFQVFRQW9cXFxuQXZpcVQwRitJQVJCQTNaM2NUWUMrS3BQQ3lBRUlBSnFJUUlnQUNBRUVNNE5JUUFNQlF0QkFDQUROZ0tNcTA5QkFFRUFLQUtFcTA4Z0FtXFxcbm9pQURZQ2hLdFBJQU1nQUVFQmNqWUNCQ0FHRU5BTklRWU1Cd3NnQUNBQUtBSUVJQVZxTmdJRVFRQW9Bb3lyVDBFQUtBS0VxMDhnQldvUVxcXG5rZ1VNQlF0QkFDQUFJQUpySWdZMkFvU3JUMEVBUVFBb0FveXJUeUlBSUFJUXpnMGlBellDakt0UElBTWdCa0VCY2pZQ0JDQUFJQUlRMVFcXFxud2dBQkRRRFNFR0RBVUxRUUFnQXpZQ2lLdFBRUUJCQUNnQ2dLdFBJQUpxSWdBMkFvQ3JUeUFESUFBUS9Rb2dCaERRRFNFR0RBUUxRUUFnXFxcbkJqWUNuS3RQREFFTElBTWdBaUFBRVA4SkFrQWdBa0dBQWtrTkFDQURJQUlRK2dFZ0JoRFFEU0VHREFNTElBSkJlSEZCOEtqUEFHb2hBQVxcXG5KQUFrQkJBQ2dDK0twUElnUkJBU0FDUVFOMmRDSUNjVVVOQUNBQUtBSUlJUUlNQVF0QkFDQUVJQUp5TmdMNHFrOGdBQ0VDQ3lBQUlBTTJcXFxuQWdnZ0FpQUROZ0lNSUFNZ0FEWUNEQ0FESUFJMkFnZ2dCaERRRFNFR0RBSUxRUUJCL3g4MkFxQ3JUMEVBSUFnMkF1eW9UMEVBSUFVMkF1XFxcblNvVDBFQUlBWTJBdUNvVDBFQVFmQ296d0EyQXZ5b1QwRUFRZmlvendBMkFvU3BUMEVBUWZDb3p3QTJBdmlvVDBFQVFZQ3B6d0EyQW95cFxcXG5UMEVBUWZpb3p3QTJBb0NwVDBFQVFZaXB6d0EyQXBTcFQwRUFRWUNwendBMkFvaXBUMEVBUVpDcHp3QTJBcHlwVDBFQVFZaXB6d0EyQXBcXFxuQ3BUMEVBUVppcHp3QTJBcVNwVDBFQVFaQ3B6d0EyQXBpcFQwRUFRYUNwendBMkFxeXBUMEVBUVppcHp3QTJBcUNwVDBFQVFhaXB6d0EyXFxcbkFyU3BUMEVBUWFDcHp3QTJBcWlwVDBFQVFiQ3B6d0EyQXJ5cFQwRUFRYWlwendBMkFyQ3BUMEVBUWJDcHp3QTJBcmlwVDBFQVFiaXB6d1xcXG5BMkFzU3BUMEVBUWJpcHp3QTJBc0NwVDBFQVFjQ3B6d0EyQXN5cFQwRUFRY0NwendBMkFzaXBUMEVBUWNpcHp3QTJBdFNwVDBFQVFjaXBcXFxuendBMkF0Q3BUMEVBUWRDcHp3QTJBdHlwVDBFQVFkQ3B6d0EyQXRpcFQwRUFRZGlwendBMkF1U3BUMEVBUWRpcHp3QTJBdUNwVDBFQVFlXFxcbkNwendBMkF1eXBUMEVBUWVDcHp3QTJBdWlwVDBFQVFlaXB6d0EyQXZTcFQwRUFRZWlwendBMkF2Q3BUMEVBUWZDcHp3QTJBdnlwVDBFQVxcXG5RZmlwendBMkFvU3FUMEVBUWZDcHp3QTJBdmlwVDBFQVFZQ3F6d0EyQW95cVQwRUFRZmlwendBMkFvQ3FUMEVBUVlpcXp3QTJBcFNxVDBcXFxuRUFRWUNxendBMkFvaXFUMEVBUVpDcXp3QTJBcHlxVDBFQVFZaXF6d0EyQXBDcVQwRUFRWmlxendBMkFxU3FUMEVBUVpDcXp3QTJBcGlxXFxcblQwRUFRYUNxendBMkFxeXFUMEVBUVppcXp3QTJBcUNxVDBFQVFhaXF6d0EyQXJTcVQwRUFRYUNxendBMkFxaXFUMEVBUWJDcXp3QTJBclxcXG55cVQwRUFRYWlxendBMkFyQ3FUMEVBUWJpcXp3QTJBc1NxVDBFQVFiQ3F6d0EyQXJpcVQwRUFRY0NxendBMkFzeXFUMEVBUWJpcXp3QTJcXFxuQXNDcVQwRUFRY2lxendBMkF0U3FUMEVBUWNDcXp3QTJBc2lxVDBFQVFkQ3F6d0EyQXR5cVQwRUFRY2lxendBMkF0Q3FUMEVBUWRpcXp3XFxcbkEyQXVTcVQwRUFRZENxendBMkF0aXFUMEVBUWVDcXp3QTJBdXlxVDBFQVFkaXF6d0EyQXVDcVQwRUFRZWlxendBMkF2U3FUMEVBUWVDcVxcXG56d0EyQXVpcVQwRUFRZWlxendBMkF2Q3FUeENLRGlJRFFRZ1FuQXNoQkVFVVFRZ1FuQXNoQjBFUVFRZ1FuQXNoQ0VFQUlBWWdCaERRRFNcXFxuSUFRUWdRbkFzZ0FHc2lDaERPRFNJQU5nS01xMDlCQUNBRElBVnFJQWdnQkNBSGFtb2dDbXBySWdZMkFvU3JUeUFBSUFaQkFYSTJBZ1FRXFxcbmlnNGlBMEVJRUp3TElRUkJGRUVJRUp3TElRVkJFRUVJRUp3TElRY2dBQ0FHRU00TklBY2dCU0FFSUFOcmFtbzJBZ1JCQUVHQWdJQUJOZ1xcXG5LWXEwOExRUUFoQmtFQUtBS0VxMDhpQUNBQ1RRMEFRUUFnQUNBQ2F5SUdOZ0tFcTA5QkFFRUFLQUtNcTA4aUFDQUNFTTROSWdNMkFveXJcXFxuVHlBRElBWkJBWEkyQWdRZ0FDQUNFTlVNSUFBUTBBMGhCZ3NnQVVFUWFpUUFJQVlMM3hjQ0NIOENmaU1BUVpBQ2F5SUdKQUFnQmlBRE5nXFxcbkpzSUFZZ0FqWUNhQ0FHUWFBQmFpQUdRZWdBYWhER0NDQUdLQUtnQVNFSElBWWdCa0dvQVdvb0FnQWlDRFlDZENBR0lBWW9BcVFCSWdrMlxcXG5BbkFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFkQjNBQkdEUUFnQjBFdlJ3MEJDeUFCS0FJWUlRb0NRQ0FIUWRcXFxud0FSdzBBSUFwRkRRQWdDa0VBSUFGQkhHb29BZ0FvQWhRUkJRQUxJQVpCb0FGcUlBWkI4QUJxRU1ZSUlBWkJxQUZxS0FJQUlRc2dCaWdDXFxcbnBBRWhEQUpBQWtBZ0JpZ0NvQUVpRFVFdlJnMEFJQTFCM0FCSERRRUxBa0FnRFVIY0FFY05BQ0FLUlEwQUlBcEJBQ0FCUVJ4cUtBSUFLQVxcXG5JVUVRVUFDeUFCUVl5S3dRQkJCeENURENBR1FhQUJhaUFNSUFzUWl3RWdCaTBBb0FFaEJ3SkFJQVl0QUt3QlFRSkdEUUFnQmtISUFXcEJcXFxuQ0dvaUJTQUdRYUFCYWtFSWFpZ0FBRFlBQUNBR0lBWXBBS0VCTndESkFTQUdJQWM2QU1nQklBWW9BckFCSVFNZ0JpZ0N0QUVoQWlBRktBXFxcbklBSWdkRkRRc2dCa0dnQVdvZ0JpZ0N5QUVnQnhBK0FrQWdCaTBBb0FFaUIwRURSZzBBSUFaQjhBRnFRUXBxSUFaQm9BRnFRUXBxS1FFQVxcXG5Od0VBSUFaQjhBRnFRUkpxSUFaQm9BRnFRUkpxTHdFQU93RUFJQVlnQmlrQm9nRTNBZklCSUFZZ0JpMEFvUUU2QVBFQklBWWdCem9BOEFcXFxuRUNRQUpBSUFjTkFDQUdJQVpCOEFGcVFRUnlOZ0tnQVNBR1FhQUJhaENYQ3cwQkN5QUdRZmdBYWtFUWFpSUhJQVpCOEFGcVFSQnFLQUlBXFxcbk5nSUFJQVpCK0FCcVFRaHFJZ1VnQmtId0FXcEJDR29wQXdBM0F3QWdCaUFHS1FQd0FUY0RlQ0FHUWF3QmFrSUJOd0lBUVFFaENpQUdRUVxcXG5FMkFxUUJJQVpCb0lmQkFEWUNvQUVnQmtIWUFUWUNqQUlnQmlBR1FZZ0NhallDcUFFZ0JpQUdRZmdBYWpZQ2lBSWdBU0FHUWFBQmFoREhcXFxuQlVIa2k4RUFFT1VJSUFaQm9BRnFRUkJxSUFjb0FnQTJBZ0FnQmtHZ0FXcEJDR29nQlNrREFEY0RBQ0FHSUFZcEEzZzNBNkFCSUFaQjJBXFxcbkZxSUFaQm9BRnFFSWNHSUFZdEFOZ0JJUWNNRGdzZ0JrSHdBV29RdmdzTURBc2dCaTBBb1FFaEJ5QUdRY2dCYWhDS0RRc2dBRUVDTmdJQVxcXG5JQUFnQnpvQUJBd01DMEVISVFvZ0FVR01pc0VBUVFjUWt3eEJBQ0VMSUFaQjhBQnFFSTBESVEwZ0JVVU5DQ0FORFFnZ0JrR2dBV29nQlJcXFxuQ3lCaUFHS0FLZ0FVR0FnTVFBUmcwQklBWkIrQUJxSUFaQm9BRnFRU2dRcEEwYUlBWkIwQUJxSUFaQitBQnFFSzBESUFaQnlBQnFJQVlvXFxcbkFsQWdCaWdDVkVHa2lzRUFFS01LSUFZb0FrZ2lEU0FHS0FKTUlnd1FrQWdOQWlBR1FjQUFhaUFGRUtjR0lBWW9Ba0FpRFVVTkNDQUJJQVxcXG4wZ0JpZ0NSQkNURENBR1FmZ0JhaUFGUVQxcUtRQUFOd01BSUFZZ0JVRTFhaWtBQURjRDhBRWdCUzBBTkNFTElBRW9BZ2doQ2d3SUN3SkFcXFxuQWtBQ1FBSkFBa0FDUUNBRlJRMEFJQWRCSTBZTkF5QUhRVDlHRFFJZ0IwR0FnTVFBUncwQklBVW9BZ2dOQkNBRlFSeHFLQUlBSVFjZ0JTXFxcbmdDRkNFRERBVUxJQUZCdElyQkFFRUlFSk1NSUFaQkFEb0FvQUVnQmtFSWFpQUJRUUFnQmtHZ0FXcEJCeUFDSUFNUVFTQUdRYUFCYWlBQlxcXG5RUUJCQkNBR0tBSUlJQVlvQWd3UXJBSWdCaWdDb0FFaUIwRUNSZzBMSUFZcEFxUUJJUTRnQmlnQ3JBRWhCU0FBUVFBN0FSQWdBQ0FGTmdcXFxuSU1JQUFnRGpjQ0JDQUFJQWMyQWdBZ0FFRUFPZ0EwSUFCQkJ6WUNNQ0FBUW9lQWdJRHdBRGNDS0NBQVFvU0FnSUR3QURjQ0lDQUFJQUVwXFxcbkFnQTNBaFFnQUVFY2FpQUJRUWhxS0FJQU5nSUFEQkFMQWtBZ0JrSG9BR29RalFNTkFBSkFBa0FDUUFKQUlBVW9BZ0FOQUNBRktBSUlSUVxcXG4wQ0lBVkJER29oQnd3QkN5QUZRUVJxSVFjTElBWkJJR29nQlNBSEtBSUFFUDhHSUFZb0FpUWhCeUFHS0FJZ0lRb01BUXNnQlVFY2FpZ0NcXFxuQUNFSElBVW9BaFFoQ2dzZ0FTQUtJQWNRa3d3Z0FVRUFJQVVvQWpBaUJ4Q3pCaUFHUVFFNkFLQUJJQVpCR0dvZ0FVRUFJQVpCb0FGcUlBXFxcbmNnQWlBREVFRWdCaWdDSENFRElBWW9BaGdoQWlBR1FhQUJhaUFCUVNRUXBBMGFJQVVvQWl3aEFTQUZLQUlvSVFvZ0JTZ0NKQ0VOSUFVb1xcXG5BaUFoQkNBR1FZZ0JhaUFGUWNRQWFpMEFBRG9BQUNBR1FZQUJhaUFGUVR4cUtRQUFOd01BSUFZZ0JTa0FORGNEZUNBQUlBWkJvQUZxUVFcXFxuQWdCQ0FOSUFvZ0FTQUdRZmdBYWlBRkx3RVFJQVZCRW1vdkFRQWdCeUFDSUFNUTlRSU1FQXNnQVVHMGlzRUFRUWdRa3d3Z0JrRUFPZ0NnXFxcbkFTQUdRUkJxSUFGQkFDQUdRYUFCYWtFSElBSWdBeEJCSUFaQm9BRnFJQUZCQUVFRUlBWW9BaEFnQmlnQ0ZCQ3NBaUFHS0FLZ0FTSUhRUVxcXG5KR0RRb2dCaWtDcEFFaERpQUdLQUtzQVNFRklBQkJBRHNCRUNBQUlBVTJBZ3dnQUNBT053SUVJQUFnQnpZQ0FDQUFRUUE2QURRZ0FFRUhcXFxuTmdJd0lBQkNoNENBZ1BBQU53SW9JQUJDaElDQWdQQUFOd0lnSUFBZ0FTa0NBRGNDRkNBQVFSeHFJQUZCQ0dvb0FnQTJBZ0FNRHdzZ0JTXFxcbmdDQUVVTkJTQUZRUVJxSVFjTUJnc2dCa0dnQVdvZ0FVRWtFS1FOR2lBQUlBWkJvQUZxSUFVZ0FpQURFSjhDREEwTElBWkJLR29nQlVFVVxcXG5haUFGUVF4cUtBSUFRYnlLd1FBUWhRWWdCaWdDTENFSElBWW9BaWdoQXdzZ0FTQURJQWNRa3d3Z0FFRUFOZ0lJSUFBZ0JTa0NORGNDTkNcXFxuQUFRVHhxSUFWQlBHb3BBZ0EzQWdBZ0FFSEVBR29nQlVIRUFHb3RBQUE2QUFBZ0FDQUZLQUlRTmdJUUlBQWdCU2tDQURjQ0FDQUFJQUVwXFxcbkFnQTNBaFFnQUVFY2FpQUJRUWhxS0FJQU5nSUFJQVVwQWlBaERpQUZLUUlvSVE4Z0FDQUZLQUl3TmdJd0lBQWdEemNDS0NBQUlBNDNBaVxcXG5BTUN3dEJ3SUxCQUVFclFaU0t3UUFRZ3djQUN5QUJRUzhRM2dRZ0FTQU5JQXdRa3d3TUJRc2dCU2dDQ0VVTkFTQUZRUXhxSVFjTElBWkJcXFxuTUdvZ0JTQUhLQUlBRVA4R0lBWW9BalFoQnlBR0tBSXdJUW9NQVFzZ0JVRWNhaWdDQUNFSElBVW9BaFFoQ2dzZ0FTQUtJQWNRa3d3Z0JrXFxcbkdnQVdvZ0FTQUVJQVVvQWlBaUJ5QUNJQU1RckFJZ0JpZ0NvQUVpQTBFQ1JnMEFJQVlwQXFRQklRNGdBQ0FHS0FLc0FUWUNEQ0FBSUE0M1xcXG5BZ1FnQUNBRE5nSUFJQUFnQnpZQ0lDQUFJQVVwQWpRM0FqUWdBRUU4YWlBRlFUeHFLUUlBTndJQUlBQkJ4QUJxSUFWQnhBQnFMUUFBT2dcXFxuQUFJQUFnQlNnQ0VEWUNFQ0FBSUFFcEFnQTNBaFFnQUVFY2FpQUJRUWhxS0FJQU5nSUFJQUFnQlNrQ0pEY0NKQ0FBSUFVcEFpdzNBaXdNXFxcbkJRc2dCaTBBcEFFaEJ5QUFRUUkyQWdBZ0FDQUhPZ0FFREFNTEFrQUNRQ0FIUVM5R0RRQWdCMEUvUmcwQUlBZEIzQUJIRFFFTElBSWhDU1xcXG5BRElRZ0xJQVpCQURvQW9BRWdCa0U0YWlBQlFRQWdCa0dnQVdvZ0NpQUpJQWdRUVNBR1FhQUJhaUFCSUFSQkJDQUdLQUk0SUFZb0Fqd1FcXFxuckFJQ1FDQUdLQUtnQVNJSFFRSkdEUUFnQmlrQ3BBRWhEaUFHS0FLc0FTRUZJQUFnQmlrRDhBRTNBRFVnQUVFQU93RVFJQUFnQlRZQ0RDXFxcbkFBSUE0M0FnUWdBQ0FITmdJQUlBQWdDem9BTkNBQUlBbzJBakFnQUNBS05nSXNJQUJCQnpZQ0tDQUFRb1NBZ0lEd0FEY0NJQ0FBUVQxcVxcXG5JQVpCOEFGcVFRaHFLUU1BTndBQUlBQWdBU2tDQURjQ0ZDQUFRUnhxSUFGQkNHb29BZ0EyQWdBTUJBc2dCaTBBcEFFaEJ5QUFRUUkyQWdcXFxuQWdBQ0FIT2dBRURBSUxRUUFoQjBFQUlRb0xJQVpCK0FCcVFRaHFJQVpCNFFGcUtRQUFOd01BSUFZZ0Jpa0EyUUUzQTNnZ0JrSElBV29RXFxcbmlnMGdBU2dDQ0NFRklBWWdCMEgvQVhGQkFFYzZBUEFCQWtBQ1FDQUtEUUFnQVVFdkVONEVJQVpCNEFCcUlBRkJBQ0FHUWZBQmFpQUZJQVxcXG5NZ0FoQkJJQVlvQW1RaEF5QUdLQUpnSVFJTUFRc2dCa0hZQUdvZ0FVRUFJQVpCOEFGcUlBTWdBaER0QVNBR0tBSmNJUU1nQmlnQ1dDRUNcXFxuQ3dKQUFrQWdCaTBBOEFGRkRRQWdCU0VLREFFTFFRY2hDaUFHUWFBQmFpQUJRUWNnQlJEckFpQUdRYUFCYWhEeEJFRUFJUWNMSUFaQm9BXFxcbkZxSUFFZ0JFRUVJQUlnQXhDc0FnSkFJQVlvQXFBQklnVkJBa1lOQUNBR0tRS2tBU0VPSUFZb0Fxd0JJUU1nQUNBR0tRTjROd0ExSUFCQlxcXG5BRHNCRUNBQUlBTTJBZ3dnQUNBT053SUVJQUFnQlRZQ0FDQUFJQWM2QURRZ0FDQUtOZ0l3SUFBZ0NqWUNMQ0FBUVFjMkFpZ2dBRUtFZ0lcXFxuQ0E4QUEzQWlBZ0FFRTlhaUFHUWZnQWFrRUlhaWtEQURjQUFDQUFJQUVwQWdBM0FoUWdBRUVjYWlBQlFRaHFLQUlBTmdJQURBSUxJQVl0XFxcbkFLUUJJUWNnQUVFQ05nSUFJQUFnQnpvQUJBc2dBUkNLRFFzZ0JrR1FBbW9rQUF1ZEZnRU9meU1BUWNBQ2F5SUdKQUFnQkVFQU5nSUlJQVxcXG5aQktHcEJDR3BCQURZQ0FDQUdRVFJxUVFocUlBTkJCR290QUFBaUJ6b0FBQ0FHUWdBM0F5Z2dCaUFES0FBQU5nSTRJQVVvQWdnaENDQUdcXFxuUVpBQmFrRUFOZ0lBSUFaQmlBRnFJQUVnQW1vMkFnQWdCa0hBQUdwQnhBQnFJQUUyQWdBZ0JrR1VBV29nQmlrQ05EY0NBQ0FHUVp3QmFpXFxcbkFIT2dBQUlBWkJvQUZxUWdBM0F3QWdCa0dvQVdwQkFEb0FBQ0FHUVl3QmFpSUpJQVpCS0dvMkFnQWdCa0dBQW1wQkNtcENBRGNCQUNBR1xcXG5RZ0EzQVlJQ0lBWkIxZ0JxSUFaQmdBSnFRUWhxS1FFQU53RUFJQVpCM2dCcUlBWkJnQUpxUVJCcUx3RUFPd0VBSUFZZ0Jpa0JnQUkzQVVcXFxuNGdCa0dBQVdwQkFEWUNBQ0FHUWZ3QWFrRUFPZ0FBSUFaQitBQnFRUUEyQWdBZ0JrSDBBR3BCQURvQUFDQUdRZkFBYWtFQU5nSUFJQVpCXFxcbjdBQnFRUUE2QUFBZ0JrSG9BR3BCQURZQ0FDQUdRZVFBYWtFQU9nQUFJQVpCQURzQllDQUdRUUE3QVV3Z0JrRUFOZ0pBSUFaQkFEb0FyQVxcXG5FZ0JrR0FnTVFBTmdKSUlBUWdCa0hBQUdvUU5pQUdRUUEyQXJnQklBWkNCRGNEc0FFZ0F5MEFBQ0VLSUFaQmdBSnFJQVFvQWdBZ0JDZ0NcXFxuQ0JDWkJTQURRUUpxSVFzZ0JrR29BbXBCQW1vaERDQUdRY0FBYWtFQ2NpRU5JQVpCemdCcUlRNUJBQ0VDUVFBaEJ3SkFBMEFnQmtFZ2FpXFxcbkFHUVlBQ2FoQ1pBUUpBSUFZb0FpQWlCQTBBSUFaQkNHb2dCU0FJUVlDandRQVFvd2NnQmtHQUFtb2dCaWdDQ0NBR0tBSU1FSmtGSUFaQlxcXG53QUJxSUFaQmdBSnFRU2dRcEEwYUlBZEJBWEVoRHdOQUlBWWdCa0hBQUdvUW1RRWdCaWdDQUNJSFJRMERJQTlGRFFBZ0JpZ0NCQ0VFSUFcXFxuWWdCellDcUFJZ0JpQUhJQVJxSWhBMkFxd0NJQVpCcUFKcUVJVURJZ1JCZ0lERUFFWU5BQUpBQWtBZ0JCRGREVUgvQVhFaUJFVU5BQ0FFXFxcblFSRkdEUUFnQkVFSlJ3MEJBMEFDUUNBR1FhZ0NhaENGQXlJRVFZQ0F4QUJIRFFBZ0JpQVFOZ0xFQVNBR0lBYzJBc0FCQTBBZ0JrSEFBV1xcXG5vUTdBSWlCRUdBZ01RQVJnMEZJQVFRM1ExQi93RnhRUTFHRFFBTElBUVEzUTFCL3dGeFFRbEdEUVFnQkJEZERVSC9BWEZCQlVZTkJBd0RcXFxuQ3lBRUVOME5RZjhCY1NJRVFRNUxEUUpCQVNBRWRFSDR4UUZ4RFFBTUFnc0xJQVlnQmlrRHFBSTNBOEFCUVFBaEJVRUFJUVFEUUNBRUlRXFxcbklDUUNBR1FjQUJhaENGQXlJQlFZQ0F4QUJIRFFBZ0JpQVFOZ0xFQVNBR0lBYzJBc0FCQTBBZ0JrSEFBV29RN0FJaUJFR0FnTVFBUmcwRFxcXG5JQVFRM1ExQi93RnhRUTFHRFFBTElBUVEzUTFCL3dGeElnUkJFVXNOQWtFQklBUjBRYU9BQ0hGRkRRSWdCU0FDY1VFQmNVVU5Bd3dDQzBcXFxuRUJJUVFnQVJEZERVSC9BWEVpQVVFRlJnMEFJQUZCRVVzTkFTQUJRUUZHSUFWeUlRVWdBaUVFUVFFZ0FYUkIrOEVKY1EwQUN3c0xJQVpCXFxcbkFUb0FLZ3dDQ3lBR0tBSWtJUUVDUUNBQ1FRRnhSUTBBSUFWQkxoRGdCQXNnQmtFWWFpQUVJQUZCN0tMQkFFRUVFTGdKQWtBQ1FBSkFBa1xcXG5BQ1FBSkFJQVlvQWhnaUFrVU5BQ0FHUWNBQmFpQUdRYkFCYWlBQ0lBWW9BaHdRVHlBR0tBTEFBVVVOQVNBR1FlQUJha0VZYWlBR1FjQUJcXFxuYWtFWWFpZ0NBRFlDQUNBR1FlQUJha0VRYWlBR1FjQUJha0VRYWlrREFEY0RBQ0FHUWVBQmFrRUlhaUFHUWNBQmFrRUlhaWtEQURjREFDXFxcbkFHSUFZcEE4QUJOd1BnQVNBRktBSUlJUVFnQlNBR1FlQUJhaERuQkNBR1FSQnFJQVVnQkVId29zRUFFS01IUVFFaEVDQUdLQUlVSVJFZ1xcXG5CaWdDRUNFUElBZEJBWEZGRFFJTUJBdEJBU0VDSUFkQkFYRWhEMEVCSVFjZ0R3MENJQVFnQVJDYUJTRUhEQUlMUVFFaEJ5QUdRUUU2QUNcXFxuZ01Bd3NnRHlBUkVKb0ZJUkFNQVFzZ0JDQUJJQU1nQmtFb2FoQ0FBeUFGSUFRZ0FSQ1REQXdDQ3dKQUlBWkJLR29RL0FVTkFDQUdJQTgyXFxcbkFrQWdCaUFQSUJGcUloSTJBa1JCQUNFQlFRRWhBZ05BSUFJaEV3SkFBMEFnQVNFQ0FrQUNRQ0FHUWNBQWFoQ0ZBeUlFUVlDQXhBQkdEUVxcXG5CQkFDRUJJQVJCZ0FGSkRRSUNRQ0FDUWY4QmNTQUVFSklNSWdGQi93RnhJZ0pORFFBZ0FnMEVDd0pBSUFSQndIbHFJZ0pCQkVzTkFDQUNcXFxuUVFKSERRUUxJQVJCajBGcUlnSkJERXNOQVVFQklBSjBRZFVxY1VVTkFRd0RDd0pBSUJOQkFYRU5BQ0FNUVFocVFnQTNBUUFnREVJQU53XFxcbkVBSUE0Z0Jpa0JxQUkzQVFBZ0RrRUlhaUFHUWFnQ2FrRUlhaWtCQURjQkFDQU9RUkJxSUFaQnFBSnFRUkJxTHdFQU93RUFJQWxDQURjQ1xcXG5BQ0FKUVFocVFRQTZBQUFnQmlBU05nS0lBU0FHSUE4MkFvUUJJQVpCQURZQ2dBRWdCa0VBT2dCOElBWkJBRFlDZUNBR1FRQTZBSFFnQmtcXFxuRUFOZ0p3SUFaQkFEb0FiQ0FHUVFBMkFtZ2dCa0VBT2dCa0lBWkJBRHNCWUNBR1FRQTdBVXdnQmtFQU5nSkFJQVpCQURvQW1BRWdCa0dBXFxcbmdNUUFOZ0pJSUE4Z0VpQUdRY0FBYWhBMFJRMERDeUFOSUFzdkFBQTdBQUFnRFVFQ2FpQUxRUUpxTFFBQU9nQUFJQVpCQURvQVFTQUdJQVxcXG5vNkFFQWdEeUFSSUFaQndBQnFJQVpCS0dvUWdBTU1CQXNDUUNBRVFiMWhhaUlDUVJsTERRQkJBU0FDZEVHQmlNSVFjUTBDQ3dKQUlBUkJcXFxuNDJCcUlnSkJIRXNOQUVFQklBSjBRYUdJZ29BQmNRMENDd0pBSUFSQmwyRnFJZ0pCR0VzTkFFRUJJQUowUVlHSWdnaHhEUUlMQWtBZ0JFXFxcbkd0UUdvaUFrRVlTdzBBUVFFZ0FuUkJnWUtFQ0hFTkFnc0NRQ0FFUVl4NWFpSUNRUk5MRFFCQkFTQUNkRUdCaUNCeERRSUxRUUFoQWdKQVxcXG5JQVJCd21scUlnZEJHVXNOQUVFQklBZDBRWUdBZ0JoeERRTUxBa0FnQkVHMlpHb2lCMEVWU3cwQVFRRWdCM1JCb1lDQUFYRU5Bd3NDUUNcXFxuQUVRWWRBYWlJSFFRUkxEUUJCQVNBSGRFRVZjUTBDQ3dKQUFrQWdCRUh4ZVdvT0F3UUJCQUFMQWtBZ0JFRytlV29PQkFRQkFRUUFDd0pBXFxcbklBUkJ6V3RxRGdRREFRRURBQXNDUUNBRVFjVkFhZzRFQXdFQkF3QUxBa0FnQkVHM1FHb09Bd01CQXdBTElBUkIxN2wvYWtFQ1NRMENBa1xcXG5BZ0JFSHdpM3hxRGdNREFRTUFDd0pBSUFSQjRJdDhhZzREQXdFREFBc0NRQ0FFUWVPSmZHb09Bd01CQXdBTEFrQWdCRUhHMW50cURnUUVcXFxuQVFFRUFBc2dCRUdiQmtZTkF5QUVRYmdHUmcwRElBUkJ2QkpHRFFNZ0JFRytFMFlOQXlBRVFkY1RSZzBESUFSQjN4TkdEUUlnQkVIZUZFXFxcbllOQWlBRVFiNFhSZzBESUFSQjF4ZEdEUU1nQkVIV0dFWU5BeUFFUWNJWlJnMERJQVJCdmhwR0RRTWdCRUhYR2tZTkF5QUVRWk1mUmcwQ1xcXG5JQVJCcmlCR0RRTWdCRUcxTmtZTkF5QUVRYWJDQUVZTkFpQUVRZHpWQUVZTkFpQUVRYjcyQTBZTkFpQUVRYnFoQkVZTkF5QUVRYWVpQkVcXFxuWU5BeUFFUWI2bUJFWU5BeUFFUWRlbUJFWU5BeUFFUWJDcEJFWU5BeUFFUWErckJFWU5BeUFFUWJDeUJFWU5Bd3NnQkVHQWtIUnFRWjRFXFxcblNRMEJJQVJCeGR4NGFrRUdTUTBCSUFSQm90MTRha0VIU1EwQklBUkJ1b2w4YWtFSlNRMEJJQVJCdllsOGFrRUNTUTBCSUFSQi92Ly9BSFxcXG5FaUIwSEE5Z05HRFFFZ0JFSElpWHhxUVFWSkRRRWdCRUhXaVh4cVFRMUpEUUVnQkVHUWkzeHFRZW9BU1EwQklBUkIxb3Q4YWtIRUFFa05cXFxuQVNBRVFkdUxmR3BCQWtrTkFTQUVRZXVMZkdwQkNra05BU0FFUVlDT2ZHcEJqZ0pKRFFFZ0IwR3F3Z0JHRFFFZ0IwR0F3QUJHRFFFZ0IwXFxcbkh1UDBZTkFTQUVRWXRoYWtFQ1NRMEJJQWRCM0JaR0RRRWdCRUduYTJwQkEwa05BU0FFUWZqLy93QnhRZGdTUmcwQklBZEIzQk5HRFFFZ1xcXG5CRUhZWEdwQkcwa05BaUFFUVo5ZGFrRVZTUTBDSUFSQnEyWnFRUUpKRFFJZ0JFR3RjMnBCQTBrTkFpQUhRYkFHUmcwQ0lBUkIwM2xxUVFcXFxuSkpEUUlnQkVIZGVXcEJCa2tOQWlBRVFlMTVha0VDU1EwQ0lBUkJnSHBxUVFWSkRRSWdCRUg2ZVdwQkIwa05BaUFFUWVlZWYycEJBa2tOXFxcbkFnd0FDd3NMSUFaQkFUb0FMUXNnRUNFSEMwRUJJUUlNQUFzTElBQWdCaWtES0RjQUFDQUFRUWhxSUFaQktHcEJDR29vQWdBMkFBQWdCa1xcXG5Hd0FXb1F2d29nQmtIQUFtb2tBQXU4RmdJVWZ3UitJd0JCMEFOcklnWWtBQ0FHUWRnQWFpQUJFTG9FQWtBQ1FBSkFBa0FnQmkwQVdBMEFcXFxuSUFZdEFGa05BaUFHUVFVMkFzZ0JJQUVnQmtISUFXb1EzUWdoQVF3QkN5QUdLQUpjSVFFTElBQkJBRFlDRUNBQUlBRTJBZ0FNQVFzQ1FBXFxcbkpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FHTFFCYUlnZEIyd0JHRFFBQ1FDQUhRZnNBUmcwQUlBRWdCa0hJQTJwQmpKN0FBQkI0SVFjTVxcXG5DZ3NnQVNBQkxRQVlRWDlxSWdjNkFCZ0NRQ0FIUWY4QmNVVU5BQ0FCRUlNTUlBWkIwQUJxSUFFUWhBd2dCaWdDVUNFSElBWWdCaTBBVkVcXFxuRUJjVG9BdkFFZ0JpQUhOZ0s0QVVFQUlRZ2dCa0VBTmdMQUFpQUdRUUEyQXBnRElBWkJzQUpxUVJScUlRa2dCa0d3QW1wQkJISWhDaUFHXFxcblFjZ0Jha0VVYWlFTElBWkJ5QUZxUVFSeUlRd2dCa0dJQTJwQkZHb2hEU0FHUVlnRGFrRUVjaUVPUVFBaER3TkFJQVpCeUFGcUlBWkJ1QVxcXG5GcUVJOEJBa0FDUUFKQUFrQUNRQ0FHTFFESUFRMEFJQVl0QU1rQklnZEJBMFlOQVNBSERnSUVBd0lMSUFZb0Fzd0JJUWNNREFzQ1FBSkFcXFxuSUFnTkFDQUdRY0FBYWhEUUNFR0FnOEFBSVFoQkJDRU9RUUFoRFNBR0tRTklJUm9nQmlrRFFDRWJRUUFoQ2tFQUlSQkJBQ0VSUVFBaEVnXFxcbndCQ3lBR0tBTGNBaUVNSUFZb0F0Z0NJUTBnQmlnQzFBSWhDaUFHS0FMUUFpRU9JQVlvQXN3Q0lSQWdCaWdDeUFJaEVTQUdLQUxFQWlFU1xcXG5JQVlwQTdnQ0lSb2dCaWtEc0FJaEd3c0NRQUpBSUE4TkFDQUdRVEJxRU5BSVFRZ2hFMEVBSVJSQmdJUEFBQ0VQSUFZcEF6Z2hIQ0FHS1FcXFxuTXdJUjFCQUNFVlFRQWhGa0VBSVJkQkFDRVlEQUVMSUFZb0FyUURJUmtnQmlnQ3NBTWhHQ0FHS0FLc0F5RVhJQVlvQXFnRElSTWdCaWdDXFxcbnBBTWhGaUFHS0FLZ0F5RVZJQVlvQXB3RElSUWdCaWtEa0FNaEhDQUdLUU9JQXlFZEN5QWJRaUNJcHlFSklCdW5JUWNNREFzZ0JrRzRBV1xcXG5vUTNRb2lCMFVOQWd3S0N5QVBEUVFnQmtISUFXb2dCa0c0QVdvUTJRa2dCaWdDeUFFaEJ5QUdLQUxZQVNJUFJRMEpJQVpCdUFOcVFRaHFcXFxuSWhBZ0RFRUlhaWdDQURZQ0FDQUdRZUFDYWtFSWFpSVJJQXRCQ0dvcEFnQTNBd0FnQmtIZ0FtcEJFR29pRWlBTFFSQnFLUUlBTndNQUlBXFxcblpCNEFKcVFSaHFJaFFnQzBFWWFpZ0NBRFlDQUNBR0lBd3BBZ0EzQTdnRElBWWdDeWtDQURjRDRBSWdCa0dJQTJvUTFnc2dEaUFHS1FPNFxcXG5BemNDQUNBT1FRaHFJQkFvQWdBMkFnQWdEU0FHS1FQZ0FqY0NBQ0FOUVFocUlCRXBBd0EzQWdBZ0RVRVFhaUFTS1FNQU53SUFJQTFCR0dcXFxub2dGQ2dDQURZQ0FDQUdJQWMyQW9nRElBWWdEellDbUFNTUFRc0NRQ0FJUlEwQVFaV3N3QUJCQnhET0JTRUhEQWtMSUFaQnlBRnFJQVpCXFxcbnVBRnFFTmNKSUFZb0FzZ0JJUWNnQmlnQzJBRWlDRVVOQ0NBR1FiZ0Rha0VJYWlJUUlBeEJDR29vQWdBMkFnQWdCa0hnQW1wQkNHb2lFU1xcXG5BTFFRaHFLUUlBTndNQUlBWkI0QUpxUVJCcUloSWdDMEVRYWlrQ0FEY0RBQ0FHUWVBQ2FrRVlhaUlVSUF0QkdHb29BZ0EyQWdBZ0JpQU1cXFxuS1FJQU53TzRBeUFHSUFzcEFnQTNBK0FDSUFaQnNBSnFFTk1MSUFvZ0Jpa0R1QU0zQWdBZ0NrRUlhaUFRS0FJQU5nSUFJQWtnQmlrRDRBXFxcbkkzQWdBZ0NVRUlhaUFSS1FNQU53SUFJQWxCRUdvZ0Vpa0RBRGNDQUNBSlFSaHFJQlFvQWdBMkFnQWdCaUFITmdLd0FpQUdJQWcyQXNBQ1xcXG5EQUFMQ3lBR1FSZzJBc2dCSUFFZ0JrSElBV29RM1FnaEFRd0ZDeUFCSUFFdEFCaEJmMm9pQnpvQUdDQUhRZjhCY1VVTkF5QUJFSU1NSUFcXFxuWkJLR29nQVJDRURDQUdLQUlvSVFjZ0JpQUdMUUFzUVFGeE9nQ0VBeUFHSUFjMkFvQURJQVpCeUFGcUlBWkJnQU5xRUx3QkFrQUNRQUpBXFxcbklBWW9Bc2dCRFFBZ0JrRzRBMnBCQ0dvaUJ5QUdRY2dCYWtFUWFpa0RBRGNEQUNBR1FiQUNha0VJYWlJTElBWkJ5QUZxUVNScUtRSUFOd1xcXG5NQUlBWkJzQUpxUVJCcUlna2dCa0hJQVdwQkxHb3BBZ0EzQXdBZ0JrR3dBbXBCR0dvaURDQUdRZndCYWlnQ0FEWUNBQ0FHSUFZcEE5QUJcXFxuTndPNEF5QUdJQVpCeUFGcVFSeHFLUUlBTndPd0FpQUdRY2dCYWtFWWFpZ0NBQ0lJRFFFZ0JrRVlhaERRQ0NBR1FZZ0Rha0VrYWtJQU53XFxcbklBSUFaQmlBTnFRUnhxUW9DQWdJREFBRGNDQUNBR1Fad0Rha0lBTndJQVFZQ0R3QUFoQ0NBR1FZQ0R3QUEyQXBnRElBWWdCaWtESURjRFxcXG5rQU1nQmlBR0tRTVlOd09JQXd3Q0N5QUdLQUxNQVNFSERBTUxJQVpCaUFOcVFRaHFJQWNwQXdBM0F3QWdCa0dJQTJwQkhHb2dDeWtEQURcXFxuY0NBQ0FHUVlnRGFrRWthaUFKS1FNQU53SUFJQVpCaUFOcVFTeHFJQXdvQWdBMkFnQWdCaUFHS1FPNEF6Y0RpQU1nQmlBR0tRT3dBamNDXFxcbm5BTWdCaUFJTmdLWUF3c2dCa0hJQVdvZ0JrR0FBMm9RdWdFQ1FBSkFBa0FnQmlnQ3lBRU5BQ0FHUWZ3QmFpZ0NBQ0VNSUFaQnlBRnFRUlxcXG5ocUtBSUFJZ2xGRFFFZ0JrSDRBV29vQWdBaERTQUdRY2dCYWtFc2FpZ0NBQ0VQSUFaQjhBRnFLQUlBSVFvZ0JrSElBV3BCSkdvb0FnQWhcXFxuRGlBR1FlZ0JhaWdDQUNFUUlBWkJ5QUZxUVJ4cUtBSUFJUkVnQmtISUFXcEJFR29wQXdBaEdpQUdLUVBRQVNFZERBSUxJQVlvQXN3QklRXFxcbmNnQmtHSUEyb1EyQW9NQXdzZ0JrRUlhaERRQ0VHQWc4QUFJUWxCQ0NFS1FRQWhEU0FHS1FNUUlSb2dCaWtEQ0NFZFFRQWhEMEVBSVE1QlxcXG5BQ0VRUVFBaEVRc2dCa0c0QVdwQkNHb2dCa0dVQTJvb0FnQTJBZ0FnQmtIZ0FtcEJDR29nQmtHSUEycEJIR29wQWdBM0F3QWdCa0hnQW1cXFxucEJFR29nQmtHSUEycEJKR29wQWdBM0F3QWdCa0hnQW1wQkdHb2dCa0dJQTJwQkxHb29BZ0EyQWdBZ0JpQUdLUUtNQXpjRHVBRWdCaUFHXFxcbktRS2NBemNENEFJZ0JpZ0NpQU1oQnd3Q0MwR2NyTUFBUVFjUXpnVWhCd3dFQzBFQUlRZ0xJQUVnQVMwQUdFRUJham9BR0NBR1FkUUJhaVxcXG5BR1FiZ0Jha0VJYWlnQ0FEWUNBQ0FHUWVRQmFpQUdRZUFDYWtFSWFpa0RBRGNDQUNBR1Fld0JhaUFHUWZBQ2Fpa0RBRGNDQUNBR1FmUUJcXFxuYWlBR1FmZ0NhaWdDQURZQ0FDQUdJQVlwQTdnQk53TE1BU0FHSUFZcEErQUNOd0xjQVNBR0lBRVFzUUlpQ3pZQ3FBSWdCaUFNTmdLa0FpXFxcbkFHSUEwMkFxQUNJQVlnRHpZQ25BSWdCaUFLTmdLWUFpQUdJQTQyQXBRQ0lBWWdFRFlDa0FJZ0JpQVJOZ0tNQWlBR0lBazJBb2dDSUFZZ1xcXG5HamNEZ0FJZ0JpQWROd1A0QVNBR0lBZzJBdGdCSUFZZ0J6WUN5QUVDUUFKQUlBaEZEUUFnQ3cwQklBWkJxQUZxUVFocUlBWkJ1QUZxUVFcXFxuaHFLQUlBTmdJQUlBWWdCaWtEdUFFM0E2Z0JJQVpCMkFCcUlBWkIzQUZxUWN3QUVLUU5HZ3dHQzBFQUlRZ2dDMFVOQlNBR1FhZ0NhaEN2XFxcbkNRd0ZDeUFHUWNnQmFoRGxDMEVBSVFnZ0N5RUhEQVFMSUFaQkdEWUN5QUVnQVNBR1FjZ0JhaERkQ0NFQkN5QUFRUUEyQWhBZ0FDQUJOZ1xcXG5JQURBUUxJQVpCaUFOcUVOWUxJQVpCc0FKcUVOTUxRUUFoQ0FzZ0FTQUJMUUFZUVFGcU9nQVlJQVlnQVJERkF5SUxOZ0tvQWlBR0lCazJcXFxuQXFRQ0lBWWdHRFlDb0FJZ0JpQVhOZ0tjQWlBR0lCTTJBcGdDSUFZZ0ZqWUNsQUlnQmlBVk5nS1FBaUFHSUJRMkFvd0NJQVlnRHpZQ2lBXFxcbklnQmlBY053T0FBaUFHSUIwM0EvZ0JJQVlnRERZQzlBRWdCaUFOTmdMd0FTQUdJQW8yQXV3QklBWWdEallDNkFFZ0JpQVFOZ0xrQVNBR1xcXG5JQkUyQXVBQklBWWdFallDM0FFZ0JpQUlOZ0xZQVNBR0lCbzNBOUFCSUFZZ0NUWUN6QUVnQmlBSE5nTElBUUpBQWtBZ0NFVU5BQ0FMRFFcXFxuRWdCa0dvQVdwQkNHb2dCa0hJQVdwQkJISWlDMEVJYWlnQ0FEWUNBQ0FHSUFzcEFnQTNBNmdCSUFaQjJBQnFJQVpCM0FGcVFjd0FFS1FOXFxcbkdnd0NDMEVBSVFnZ0MwVU5BU0FHUWFnQ2FoQ3ZDUXdCQ3lBR1FjZ0JhaERsQzBFQUlRZ2dDeUVIQ3lBSVJRMEFJQUFnQmlrRHFBRTNBZ1xcXG5RZ0FFRU1haUFHUWJBQmFpZ0NBRFlDQUNBQVFSUnFJQVpCMkFCcVFjd0FFS1FOR2lBQUlBZzJBaEFnQUNBSE5nSUFEQUVMSUFFZ0J4QytcXFxuRFNFQklBQkJBRFlDRUNBQUlBRTJBZ0FMSUFaQjBBTnFKQUFMMHhBQ0NIOFdmaU1BUVRCcklnUWtBQUpBQWtBQ1FBSkFBa0FDUUNBQktRXFxcbk1BSWd4UURRQUNRQ0FCS1FNSUlnMVFEUUFDUUNBQktRTVFJZzVRRFFBQ1FDQU1JQTU4SWc0Z0RGUU5BQUpBSUF3Z0RWUU5BQUpBSUFOQlxcXG5FVWtOQUFKQUFrQUNRQUpBQWtBZ0RrTC8vLy8vLy8vLy94OVdEUUFnQkNBQkx3RVlJZ0U3QVFnZ0JDQU1JQTE5SWc4M0F3QWdBU0FCUVdcXFxuQnFJQUVnRGtLQWdJQ0FFRlFpQlJzaUJrRndhaUFHSUE1Q0lJWWdEaUFGR3lJT1FvQ0FnSUNBZ01BQVZDSUZHeUlHUVhocUlBWWdEa0lRXFxcbmhpQU9JQVViSWc1Q2dJQ0FnSUNBZ0lBQlZDSUZHeUlHUVh4cUlBWWdEa0lJaGlBT0lBVWJJZzVDZ0lDQWdJQ0FnSUFRVkNJRkd5SUdRWFxcXG41cUlBWWdEa0lFaGlBT0lBVWJJZzVDZ0lDQWdJQ0FnSURBQUZRaUJSc2dEa0lDaGlBT0lBVWJJaEJDZjFVaUIyc2lCV3ZCSWdaQkFFZ05cXFxuQkNBRVFuOGdCcTBpRVlnaURpQVBnemNERUNBUElBNVdEUU1nQkNBQk93RUlJQVFnRERjREFDQUVJQTRnRElNM0F4QWdEQ0FPVmcwQ1FhXFxcbkIvSUFWcndVSFFBR3hCc0tjRmFrSE9FRzBpQVVIUkFFOE5BU0FCUVFSMElnRkJ5SWZPQUdvcEF3QWlEa0wvLy8vL0Q0TWlEU0FNSUJGQ1xcXG5QNE1pRVlZaURFSWdpQ0lTZmlJVFFpQ0lJaFFnRGtJZ2lDSVZJQkorZkNBVklBeEMvLy8vL3crRElneCtJZzVDSUlnaUZud2hGeUFUUXZcXFxuLy8vLzhQZ3lBTklBeCtRaUNJZkNBT1F2Ly8vLzhQZzN4Q2dJQ0FnQWg4UWlDSUlSaENBVUVBSUFVZ0FVSFFoODRBYWk4QkFHcHJRVDl4XFxcbnJTSU9oaUlaUW45OElSTWdEU0FQSUJHR0lneENJSWdpRDM0aUVVTC8vLy8vRDRNZ0RTQU1Rdi8vLy84UGd5SU1ma0lnaUh3Z0ZTQU1maVxcXG5JTVF2Ly8vLzhQZzN4Q2dJQ0FnQWg4UWlDSUlSb2dGU0FQZmlFUElBeENJSWdoR3lBUlFpQ0lJUkVnQVVIU2g4NEFhaThCQUNFQkFrQUNcXFxuUUFKQUFrQWdGU0FRSUFldGhpSU1RaUNJSWh4K0loMGdEU0FjZmlJUVFpQ0lJaDU4SUJVZ0RFTC8vLy8vRDRNaURINGlIMElnaUNJZ2ZDXFxcbkFRUXYvLy8vOFBneUFOSUF4K1FpQ0lmQ0FmUXYvLy8vOFBnM3hDZ0lDQWdBaDhRaUNJSWlGOFFnRjhJaDhnRG9pbklnWkJrTTRBU1EwQVxcXG5JQVpCd0lROVNRMEJJQVpCZ01MWEwwa05Ba0VJUVFrZ0JrR0FsT3ZjQTBraUJSc2hDRUdBd3RjdlFZQ1U2OXdESUFVYklRVU1Bd3NDUUNcXFxuQUdRZVFBU1EwQVFRSkJBeUFHUWVnSFNTSUZHeUVJUWVRQVFlZ0hJQVViSVFVTUF3dEJDa0VCSUFaQkNVc2lDQnNoQlF3Q0MwRUVRUVVnXFxcbkJrR2dqUVpKSWdVYklRaEJrTTRBUWFDTkJpQUZHeUVGREFFTFFRWkJCeUFHUVlDdDRnUkpJZ1ViSVFoQndJUTlRWUN0NGdRZ0JSc2hCUVxcXG5zZ0Z5QVlmQ0VYSUI4Z0U0TWhEQ0FJSUFGclFRRnFJUWtnSHlBUElCRjhJQnQ4SUJwOElodDlRZ0Y4SWhFZ0U0TWhEMEVBSVFFRFFDQUdcXFxuSUFWdUlRY0NRQUpBQWtBZ0F5QUJSZzBBSUFJZ0FXb2lDaUFIUVRCcUlnczZBQUFnRVNBR0lBY2dCV3hySWdhdElBNkdJZzBnREh3aUVGXFxcbllORHlBSUlBRkhEUUlnQVVFQmFpRUJRZ0VoRFFOQUlBMGhFQ0FQSVJFZ0FTQURUdzBDSUFJZ0FXb2dERUlLZmlJTUlBNklwMEV3YWlJRlxcXG5PZ0FBSUFGQkFXb2hBU0FRUWdwK0lRMGdFVUlLZmlJUElBd2dFNE1pREZnTkFBc2dEeUFNZlNJT0lCbGFJUVlnRFNBZklCZDlmaUlUSUFcXFxuMThJUmdnRGlBWlZBMFFJQk1nRFgwaUV5QU1XQTBRSUFJZ0FXcEJmMm9oQnlBUlFncCtJQmtnREh4OUlSVWdHU0FUZlNFZklCTWdESDBoXFxcbkVrSUFJUTREUUFKQUlBd2dHWHdpRFNBVFZBMEFJQklnRG53Z0h5QU1mRm9OQUVFQklRWU1FZ3NnQnlBRlFYOXFJZ1U2QUFBZ0ZTQU9mQ1xcXG5JUklCbGFJUVlnRFNBVFdnMFNJQTRnR1gwaERpQU5JUXdnRVNBWldnMEFEQklMQ3lBRElBTkI3SlBPQUJDQkJRQUxJQUVnQTBHTWxNNEFcXFxuRUlFRkFBc2dBVUVCYWlFQklBVkJDa2toQnlBRlFRcHVJUVVnQjBVTkFBdEIwSlBPQUVFWlFiaVR6Z0FRZ3djQUMwSDRrczRBUVMxQnFKXFxcblBPQUJDREJ3QUxJQUZCMFFCQmlKTE9BQkNCQlFBTElBUkJBRFlDR0NBRVFSQnFJQVFnQkVFWWFoQzZCUUFMSUFSQkFEWUNHQ0FFUVJCcVxcXG5JQVFnQkVFWWFoQzZCUUFMUWZ6L3pRQkJIVUc4Z000QUVJTUhBQXRCcElYT0FFRXRRZWlTemdBUWd3Y0FDMEhjaE00QVFUZEIySkxPQUJcXFxuQ0RCd0FMUVpTRXpnQkJOa0hJa3M0QUVJTUhBQXRCNklQT0FFRWNRYmlTemdBUWd3Y0FDMEc0Zzg0QVFSMUJxSkxPQUJDREJ3QUxRWXVEXFxcbnpnQkJIRUdZa3M0QUVJTUhBQXNnQVVFQmFpRUdBa0FDUUNBQklBTlBEUUFnRVNBUWZTSVRJQVd0SUE2R0lnNWFJUUVnSHlBWGZTSVBRZ1xcXG5GOElSb2dEMEovZkNJWklCQllEUUVnRXlBT1ZBMEJJQXdnRG53aUVDQVVmQ0FXZkNBWWZDQVZJQklnSEgxK2ZDQWVmU0FnZlNBaGZTRVRcXFxuSUI0Z0lId2dJWHdnSFh3aEQwSUFJQmNnRFNBTWZIeDlJUmhDQWlBYklCQWdEWHg4ZlNFU0EwQUNRQ0FOSUJCOEloVWdHVlFOQUNBWUlBXFxcbjk4SUEwZ0UzeGFEUUFnRFNBTWZDRVFRUUVoQVF3REN5QUtJQXRCZjJvaUN6b0FBQ0FNSUE1OElRd2dFaUFQZkNFZkFrQWdGU0FaV2cwQVxcXG5JQkFnRG53aEVDQVRJQTU4SVJNZ0R5QU9mU0VQSUI4Z0Rsb05BUXNMSUI4Z0Rsb2hBU0FOSUF4OElSQU1BUXNnQmlBRFFmeVR6Z0FRZ3dcXFxuVUFDd0pBQWtBQ1FDQWFJQkJZRFFBZ0FVVU5BQ0FRSUE1OElnd2dHbFFOQVNBYUlCQjlJQXdnR24xYURRRUxBa0FnRUVJQ1ZBMEFJQkFnXFxcbkVVSjhmRmdOQWdzZ0FFRUFOZ0lBREFVTElBQkJBRFlDQUF3RUN5QUFJQWs3QVFnZ0FDQUdOZ0lFREFJTElBd2hEUXNDUUFKQUFrQWdHQ1xcXG5BTldBMEFJQVpGRFFBZ0RTQVpmQ0lNSUJoVURRRWdHQ0FOZlNBTUlCaDlXZzBCQ3dKQUlCQkNGSDRnRFZZTkFDQU5JQkJDV0g0Z0QzeFlcXFxuRFFJTElBQkJBRFlDQUF3REN5QUFRUUEyQWdBTUFnc2dBQ0FKT3dFSUlBQWdBVFlDQkFzZ0FDQUNOZ0lBQ3lBRVFUQnFKQUFMcmhFQ0NuXFxcbjhCZmlNQVFaQUNheUlHSkFBZ0JpQUJFTFlFQWtBQ1FBSkFBa0FnQmkwQUFBMEFJQVl0QUFFTkFpQUdRUVUyQW1nZ0FTQUdRZWdBYWhET1xcXG5DQ0VCREFFTElBWW9BZ1FoQVFzZ0FFR0JsT3ZjQXpZQ0NDQUFJQUUyQWdBTUFRc0NRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtcXFxuQUNRQ0FHTFFBQ0lnZEIyd0JHRFFBQ1FDQUhRZnNBUmcwQUlBRWdCa0dJQW1wQm5KN0FBQkJvSVFnTURRc2dBU0FCTFFBWVFYOXFJZ2M2XFxcbkFCZ0NRQ0FIUWY4QmNVVU5BQ0FCSUFFb0FnaEJBV28yQWdnZ0JrRUJPZ0RVQVNBR0lBRTJBdEFCUVFBaENTQUdRUUEyQXZnQklBWkJzQVxcXG5GcVFRaHFJUW9nQmtIb0FHcEJDR29oQzBHQmxPdmNBeUVNQWtBRFFDQUdRZWdBYWlBR1FkQUJhaENKQVNBR0xRQm9EUUVDUUFKQUFrQUNcXFxuUUFKQUlBWXRBR2tpQjBFRVJnMEFJQWNPQXdRREFnRUxJQVlnQ1RZQ3NBRWdCaUFOTmdLMEFTQUpSU0VISUFsRkRRZ2dCa0hZQVdwQkdHXFxcbm9nQmtHd0FXcEJHR29pQ0NrREFEY0RBQ0FHUWRnQmFrRVFhaUFHUWJBQmFrRVFhaUlOS1FNQU53TUFJQVpCMkFGcVFRaHFJQVpCc0FGcVxcXG5RUWhxSWdvcEF3QTNBd0FnQmlBR0tRT3dBVGNEMkFFQ1FDQUdLQUw0QVVVTkFDQUdRVGhxUVFocUlBWkIrQUZxUVFocUtBSUFOZ0lBSUFcXFxuWWdCaWtEK0FFM0F6Z2dCa0dFQVdvZ0NDa0RBRGNDQUNBR1Fmd0FhaUFOS1FNQU53SUFJQVpCOUFCcUlBb3BBd0EzQWdBZ0JpQUdLUU93XFxcbkFUY0NiQ0FHUWNRQWFpQUdRZWdBYWtFa0VLUU5Ha0lBSUE2dFFpQ0dJQSt0aENBTVFZR1U2OXdEUmlJSEd5SVFweUVJSUJCQ0lJaW5JUVxcXG5sQmdKVHIzQU1nRENBSEd5RUhEQkFMUWJPcXdBQkJBeEROQlNFSUlBWkIyQUZxRUlVTERBNExJQVpCMEFGcUVOd0tJZ2hGRFFNZ0JpQUpcXFxuTmdLd0FTQUdJQTAyQXJRQlFRRWhCd3dOQ3dKQUlBeEJnWlRyM0FOR0RRQWdCaUFKTmdLd0FTQUdJQTAyQXJRQlFRRWhCMEcycXNBQVFRXFxcbk1RemdVaENBd05DeUFHUWVnQWFpQUdRZEFCYWhEVENRSkFJQVlvQW5BaURFR0JsT3ZjQTBZTkFDQUdLQUpzSVE0Z0JpZ0NhQ0VQREFNTFxcXG5JQVlnQ1RZQ3NBRWdCaUFOTmdLMEFTQUdLQUpvSVFoQkFTRUhEQXdMQWtBZ0JpZ0MrQUZGRFFBZ0JpQUpOZ0t3QVNBR0lBMDJBclFCUVFcXFxuRWhCMEd6cXNBQVFRTVF6Z1VoQ0F3TUN5QUdRZWdBYWlBR1FkQUJhaERXQ1NBR0tBSm9JZ2RGRFFJZ0Jpa0NiQ0VRSUFaQitBRnFFTXdMXFxcbklBWWdFRGNDL0FFZ0JpQUhOZ0w0QVF3QkN3SkFJQWxGRFFBZ0JpQUpOZ0t3QVNBR0lBMDJBclFCUVFFaEIwR3Nxc0FBUVFjUXpnVWhDQVxcXG53TEN5QUdRZWdBYWlBR1FkQUJhaERVQ1FKQUlBWW9BbWdpQ1VVTkFDQUtJQXNwQXdBM0F3QWdDa0VJYWlBTFFRaHFLUU1BTndNQUlBcEJcXFxuRUdvZ0MwRVFhaWtEQURjREFDQUdLQUpzSVEwTUFRc0xRUUFoQ1FzZ0JpQUpOZ0t3QVNBR0lBMDJBclFCSUFZb0Ftd2hDRUVCSVFjTUNBXFxcbnNnQmtFWU5nSm9JQUVnQmtIb0FHb1F6Z2doQVF3R0N5QUJJQUV0QUJoQmYyb2lCem9BR0NBSFFmOEJjVVVOQkNBQklBRW9BZ2hCQVdvMlxcXG5BZ2dnQmtFQk9nRFVBU0FHSUFFMkF0QUJJQVpCNkFCcUlBWkIwQUZxRUtVQklBWW9BbWdOQVNBR1FiZ0JhaUlISUFaQjZBQnFRUlJxS1FcXFxuSUFOd01BSUFaQndBRnFJZ2dnQmtIb0FHcEJIR29wQWdBM0F3QWdCa0hJQVdvaUNTQUdRWXdCYWlnQ0FEWUNBQ0FHSUFaQjZBQnFRUXhxXFxcbktRSUFOd093QVFKQUlBWW9BbkFpRFEwQVFRQkJrS3ZBQUVIb2dzQUFFTGdFSVFnTUF3c2dCa0hZQVdwQkhHb2dDU2dDQURZQ0FDQUdRZFxcXG5nQmFrRVVhaUFJS1FNQU53SUFJQVpCMkFGcVFReHFJQWNwQXdBM0FnQWdCaUFHS1FPd0FUY0MzQUVnQmlBTk5nTFlBU0FHUWVnQWFpQUdcXFxuUWRBQmFoQzRBUUpBQWtBZ0JpZ0NhQTBBQWtBZ0JpZ0NiQ0lIRFFCQkFVR1FxOEFBUWVpQ3dBQVF1QVFoQ0F3Q0N5QUdJQVpCOEFCcUtRXFxcbk1BTndMOEFTQUdJQWMyQXZnQklBWkI2QUJxSUFaQjBBRnFFTUFCQWtBQ1FBSkFJQVlvQW5BaUIwR0NsT3ZjQTBZTkFDQUhRWUdVNjl3RFxcXG5SdzBDUVFKQmtLdkFBRUhvZ3NBQUVMZ0VJUWdNQVFzZ0JpZ0NhQ0VJQ3lBR1FmZ0JhaERqREF3Q0N5QUdLQUpzSVFrZ0JpZ0NhQ0VJSUFcXFxuWkJPR3BCQ0dvZ0JrSDRBV3BCQ0dvb0FnQTJBZ0FnQmtIMEFHb2dCa0hZQVdwQkNHb3BBd0EzQWdBZ0JrSDhBR29nQmtIb0FXb3BBd0EzXFxcbkFnQWdCa0dFQVdvZ0JrSHdBV29wQXdBM0FnQWdCaUFHS1FQNEFUY0RPQ0FHSUFZcEE5Z0JOd0pzSUFaQnhBQnFJQVpCNkFCcVFTUVFwQVxcXG4wYURBVUxJQVlvQW13aENBc2dCa0hZQVdvUWhRc01BZ3RCcktyQUFFRUhFTTBGSVFnTUJRc2dCaWdDYkNFSUMwR0JsT3ZjQXlFSEN5QUJcXFxuSUFFdEFCaEJBV282QUJnZ0FSQ3RBaUVOSUFZZ0NUWUNiQ0FHSUFnMkFtZ2dCaUFITmdKd0lBWkI5QUJxSUFaQnhBQnFRU1FRcEEwaERDXFxcbkFHUWFBQmFpQUdRY0FBYWlnQ0FEWUNBQ0FHSUEwMkFxZ0JJQVlnQmlrRE9EY0RtQUVDUUFKQUlBZEJnWlRyM0FOR0RRQWdEUTBCSUFZZ1xcXG5ERUUwRUtRTkdnd0lDeUFOUlEwRklBWkJxQUZxRUs4SkRBVUxJQVpCNkFCcUVKOExRWUdVNjl3RElRY2dEU0VJREFZTElBWkJHRFlDYUNcXFxuQUJJQVpCNkFCcUVNNElJUUVMSUFCQmdaVHIzQU0yQWdnZ0FDQUJOZ0lBREFZTEFrQWdCaWdDK0FGRkRRQWdCa0g0QVdvUTR3d0xBa0FnXFxcbkJ5QUpRUUJIY1VVTkFDQUdRYkFCYWhDRkN3dEJnWlRyM0FNaEJ3c2dBU0FCTFFBWVFRRnFPZ0FZSUFFUXhBTWhEU0FHSUFrMkFtd2dCaVxcXG5BSU5nSm9JQVlnQnpZQ2NDQUdRZlFBYWlBR1FjUUFha0VrRUtRTklRd2dCa0dnQVdvZ0JrSEFBR29vQWdBMkFnQWdCaUFOTmdLb0FTQUdcXFxuSUFZcEF6ZzNBNWdCQWtBZ0IwR0JsT3ZjQTBZTkFDQU5EUUlnQmlBTVFUUVFwQTBhREFNTElBMUZEUUFnQmtHb0FXb1Fyd2tMUVlHVTY5XFxcbndESVFjTUFRc2dCa0hvQUdvUW53dEJnWlRyM0FNaEJ5QU5JUWdMSUFkQmdaVHIzQU5HRFFBZ0FFRU1haUFHUVRRUXBBMGFJQUFnQnpZQ1xcXG5DQ0FBSUFrMkFnUWdBQ0FJTmdJQURBRUxJQWdnQVJDcEJpRUJJQUJCZ1pUcjNBTTJBZ2dnQUNBQk5nSUFDeUFHUVpBQ2FpUUFDOHNQQVFcXFxueC9Jd0JCb0FGcklnTWtBQ0FEUVNocUlBSkIzQUFRcEEwYUlBTWdBVFlDakFFZ0F5QUFOZ0tJQVNBRFFjZ0FhaUVFSUFOQk9Hb2hCU0FEXFxcblFUUnFJUVlDUUFOQUlBTkJpQUZxRUlVRElRY2dBeWdDTENFSUlBTW9BaWdoQVFKQUFrQUNRQUpBQTBBZ0F5Z0NSQ0VKSUFNb0Fqd2hDaVxcXG5BREtBSTRJUXNnQXk4Qk5DSUFJUUlDUUFOQUlBa2hEQUpBQTBBQ1FBSkFBa0FnQVE0REJBQUJCQXNDUUFKQUFrQWdDMEdBZ01RQVJnMEFcXFxuSUFKQi8vOERjU0lDUVFWSkRRRWdBeUFNTmdKRUlBTWdBRHNCTkNBRFFRRTJBaWdnQWtFRVFZQ2V3UUFRZ3dVQUMwRUFJUUZCQUNFSklBXFxcbmdnREU4TkJnd0JDeUFJSUFKUERRSWdCU0VLQ3lBRElBdzJBa1FnQXlBQU93RTBJQU5CQVRZQ0tDQUtJQWhCQW5ScUtBSUFJUUFnQXlBSVxcXG5RUUZxTmdJc0RBb0xJQU1nRERZQ1JDQURJQUE3QVRRZ0EwRUNOZ0lvQWtBQ1FDQUxRWUNBeEFCR0RRQWdBa0gvL3dOeElnSkJCVThOQmlcXFxuQUZJUW9nQ0NBQ1NRMEJJQUpGRFFrZ0EwRUFPd0UwREFrTElBZ2dERThOQndzZ0NpQUlRUUowYWlnQ0FDRUFJQU1nQ0VFQmFqWUNMQXdKXFxcbkMwRUFJUUZCQUNBQUlBSWJJUUJCQUNFQ0RBQUxDd3NnQXlBTU5nSkVJQU1nQURzQk5DQURRUUEyQWlnRFFDQURJQVEyQXBRQklBUWhBZ1xcXG5KQUFrQURRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFKQk1Hb29BZ0FpQVEwQUFrQWdBaWdDSkVVTkFDQUNRU1JxRUlVRElRQWdcXFxuQXlnQ2xBRWhBaUFBUVlDQXhBQkhEUU1MSUFKQkZHb29BZ0FnQWk4QkFDQUNLQUlJUVlDQXhBQkdHMFVOQXlBQ0VJd0VJQU1vQXBRQklnXFxcbkpCTUdvZ0FrRVVhaWdDQUNBQ0x3RUFJQUlvQWdnaUNFR0FnTVFBUmhzaUFUWUNBQXdCQ3lBQ0tBSUlJUWdMSUFJb0Fpd2hBQUpBQWtBZ1xcXG5DRUdBZ01RQVJpSU1EUUFnQWk4QkFDSUlRUVZQRFFRZ0FrRUVhaUVMREFFTElBSkJGR29vQWdBaENDQUNLQUlNSVFzTElBZ2dBRTBOQXlcXFxuQUxJQUJCQTNScUtBSUVJUTBDUUNBQVFRRnFJZ0FnQVVZTkFDQUNJQUEyQWl3TUN3c2dBa0VVYWlnQ0FDQUNMd0VBSUF3YklBRnJJUXBCXFxcbkJDRUFJQUpCQkdvaERrRUFJUUVEUUFKQUlBb2dBVWNOQUFKQUlBSW9BZ2hCZ0lERUFFWU5BQ0FLSUFJdkFRQlBEUXdnQWlBS093RUFEQVxcXG53TElBSW9BaFFnQ2trTkN5QUNJQW8yQWhRTUN3c2dBaWdDTUNFTEFrQUNRQ0FDS0FJSVFZQ0F4QUJHSWd3TkFDQU9JUWtnQWk4QkFDSUlcXFxuUVFWSkRRRWdDRUVFUVlDZXdRQVFnd1VBQ3lBQ0tBSVVJUWdnQWlnQ0RDRUpDeUFJSUFFZ0Myb2lDMDBOQlNBSklBdEJBM1JxSWdnb0FnXFxcblFoQ3lBSUxRQUFJUWtDUUFKQUlBd05BQ0FEUVFocVFRQWdBaThCQUNBT1FRUkI4SjdCQUJEdUJpQURLQUlNSVFnZ0F5Z0NDQ0VNREFFTFxcXG5JQUlvQWhRaENDQUNLQUlNSVF3TElBZ2dBVTBOQmlBTUlBQnFJZ2dnQ3pZQ0FDQUlRWHhxSUFrNkFBQWdBVUVCYWlFQklBQkJDR29oQUFcXFxud0FDd3NDUUNBQ0xRQTBEUUFnQXlBRFFaUUJhallDbUFFQ1FDQUFRWUFCU1EwQUFrQUNRQ0FBRU00TURRQWdBMEVRYWlBQUVLOEVJQU1vXFxcbkFoQWlBVVVOQVNBREtBSVVRUUowSVFJRFFDQUNSUTBMSUFOQm1BRnFJQUVvQWdBUXpRd2dBa0Y4YWlFQ0lBRkJCR29oQVF3QUN3c2dBeVxcXG5BRFFaUUJhallDbkFFZ0EwR2NBV29nQUVHQXFIMXFJZ0pCekFSdUlnRkJnQ0pxRU0wTUlBTkJuQUZxSUFJZ0FVSE1CR3hyUWYvL0EzRkJcXFxuSEc1QjRTSnFFTTBNSUFKQkhIQWlBa1VOQ1NBRFFad0JhaUFDUWFjamFoRE5EQXdKQ3lBRFFaZ0JhaUFBRU0wTURBZ0xJQU5CbUFGcUlBXFxcbkFRelF3TUJ3c2dBeUFEUVpRQmFqWUNtQUVDUUNBQVFZQUJTUTBBQWtBQ1FDQUFFTTRNRFFBZ0EwRWdhaUFBRUs0RUFrQWdBeWdDSUNJQlxcXG5SUTBBSUFNb0FpUWhBZ3dKQ3lBRFFSaHFJQUFRcndRZ0F5Z0NHQ0lCUlEwQklBTW9BaHdoQWd3SUN5QURJQU5CbEFGcU5nS2NBU0FEUVpcXFxud0JhaUFBUVlDb2ZXb2lBa0hNQkc0aUFVR0FJbW9RelF3Z0EwR2NBV29nQWlBQlFjd0ViR3RCLy84RGNVRWNia0hoSW1vUXpRd2dBa0VjXFxcbmNDSUNSUTBJSUFOQm5BRnFJQUpCcHlOcUVNME1EQWdMSUFOQm1BRnFJQUFRelF3TUJ3c2dBMEdZQVdvZ0FCRE5EQXdHQ3lBRFFnSTNBeVxcXG5oQkFpRUJRUUFoQ0NBREtBSXdJZ0JCZ0lERUFFWU5Dd3dPQ3lBSVFRUkJnSjdCQUJDREJRQUxJQUFnQ0VHNGxzRUFFSUVGQUFzZ0N5QUlcXFxuUWVTV3dRQVFnUVVBQ3lBQklBaEI5SmJCQUJDQkJRQUxJQUpCQW5RaEFnTkFJQUpGRFFFZ0EwR1lBV29nQVNnQ0FCRE5EQ0FDUVh4cUlRXFxcbklnQVVFRWFpRUJEQUFMQ3lBREtBS1VBU0VDREFBTEN5QUNRZ0EzQWl3TElBMFFrZ3doQWdKQUFrQWdBeWdDTUNJQVFZQ0F4QUJIRFFBZ1xcXG5Ba0gvQVhGRkRRRWdEU0VBREFnTEFrQUNRQUpBSUFNdEFJQUJEUUFnQUNBTkVKVUJJZ0ZCZ0lERUFFY05BU0FDUWY4QmNRMENJQU1nRFRcXFxuWUNNQXdLQ3dKQUlBTXRBSUVCSUFKQi93RnhJZ0ZQRFFBZ0FDQU5FSlVCSWdGQmdJREVBRVlOQWlBRElBRTJBakFNQkFzZ0FRMEJJQU5CXFxcbkFEb0FnQUVnQXlBTk5nSXdJQU5DQVRjREtBd0pDeUFESUFFMkFqQU1BZ3NnQmlBTkVNQURJQU1nQWpvQWdRRWdBMEVCT2dDQUFRd0JDeVxcXG5BRElBMDJBakFNQUFzTEN5QUNRUVJCZ0o3QkFCQ0RCUUFMSUFOQkFEWUNSQXNnQXlnQ01DRUFDeUFEUVlDQXhBQTJBakFMQWtBZ0IwR0FcXFxuZ01RQVJnMEFRUUFoQWlBQVFZQ0F4QUJHRFFJZ0FDQUhSZzBCREFJTEN5QUFRWUNBeEFCR0lRSUxJQVFRK1FvZ0JoRDRDaUFEUWFBQmFpXFxcblFBSUFJTHZBOEJEWDhqQUVHUUFtc2lBeVFBSUFOQjBBRnFJQUVnQWhDOEJDQURJQU1vQXRBQklnSWdBeWdDMUFFaUFXbzJBdXdCSUFNZ1xcXG5BallDNkFFZ0F5QURRZWdCYWpZQzJBRWdBMEhJQVdvZ0EwSFlBV29Ra0FVQ1FBSkFBa0FDUUFKQUFrQWdBeTBBeUFGQkFYRkZEUUFnQXlcXFxuMEF5UUVpQkVHL2YycEIvd0Z4UVJwSlFRVjBJQVJ5UWY4QmNVSGtBRWNOQUNBRFFjQUJhaUFEUWRnQmFoQ1FCU0FETFFEQUFVRUJjVVVOXFxcbkFDQURMUURCQVNJRVFiOS9ha0gvQVhGQkdrbEJCWFFnQkhKQi93RnhRZUVBUncwQUlBTkJ1QUZxSUFOQjJBRnFFSkFGSUFNdEFMZ0JRUVxcXG5GeFJRMEFJQU10QUxrQklnUkJ2MzlxUWY4QmNVRWFTVUVGZENBRWNrSC9BWEZCOUFCSERRQWdBMEd3QVdvZ0EwSFlBV29Ra0FVZ0F5MEFcXFxuc0FGQkFYRkZEUUFnQXkwQXNRRWlCRUcvZjJwQi93RnhRUnBKUVFWMElBUnlRZjhCY1VIaEFFY05BQ0FEUWFnQmFpQURRZGdCYWhDUUJTXFxcbkFETFFDb0FVRUJjVVVOQUNBRExRQ3BBVUgvQVhGQk9rY05BQ0FEUWFBQmFpQUNJQUVnQVNBREtBTHNBV3NnQXlnQzZBRnFRWmp5d0FBUVxcXG45UVVnQTBHWUFXb2dBeWdDb0FFZ0F5Z0NwQUVRN0FNZ0F5Z0NtQUVpQlVVTkFDQURLQUtjQVNFR0lBTkJBRFlDOEFFZ0F5QUZOZ0xvQVNcXFxuQURJQVVnQm1vMkF1d0JBMEFnQTBHUUFXb2dBMEhvQVdvUTd3Y2dBeTBBa0FGQkFYRkZEUU1nQXkwQWtRRWhBaUFESUFNb0F2QUJJZ0ZCXFxcbkFXb2lCRFlDOEFFZ0FrSC9BWEVpQWtFalJnMERJQUpCTEVjTkFBc2dBMEdJQVdvZ0JTQUdJQUZCcVBMQUFCREJCaUFES0FLTUFTRUJJQVxcXG5Nb0FvZ0JJUUlnQTBHQUFXb2dCU0FHSUFSQnVQTEFBQkQxQlNBQ1JRMENJQU1vQW9RQklRWWdBeWdDZ0FFaEJ5QURRZmdBYWlBQ0lBRVFcXFxuaEFJZ0F5QURLQUo0SWdJZ0F5Z0NmQ0lCYWpZQzNBRWdBeUFDTmdMWUFTQURJQU5CMkFGcU5nS01BaUFEUWZBQWFpQURRWXdDYWhDb0JTXFxcbkFETFFCd1FRRnhSUTBESUFNdEFIRkIvd0Z4UVRSSERRTWdBMEhvQUdvZ0EwR01BbW9RcUFVZ0F5MEFhRUVCY1VVTkF5QURMUUJwUWY4QlxcXG5jVUUyUmcwQkRBTUxJQUJCQWpvQUxDQUFRUUE2QUFBTUJBc2dBMEhnQUdvZ0EwR01BbW9RcUFVZ0F5MEFZRUVCY1VVTkFTQURMUUJoSWdcXFxuUkJ2MzlxUWY4QmNVRWFTVUVGZENBRWNrSC9BWEZCNVFCSERRRWdBMEhZQUdvZ0EwR01BbW9RcUFVZ0F5MEFXRUVCY1VVTkFTQURMUUJaXFxcbklnUkJ2MzlxUWY4QmNVRWFTVUVGZENBRWNrSC9BWEZCOHdCSERRRWdBMEhRQUdvZ0EwR01BbW9RcUFVZ0F5MEFVRUVCY1VVTkFTQURMUVxcXG5CUklnUkJ2MzlxUWY4QmNVRWFTVUVGZENBRWNrSC9BWEZCNFFCSERRRWdBMEhJQUdvZ0EwR01BbW9RcUFVZ0F5MEFTRUVCY1VVTkFTQURcXFxuTFFCSklnUkJ2MzlxUWY4QmNVRWFTVUVGZENBRWNrSC9BWEZCNGdCSERRRWdBMEVBT2dEc0FTQURJQU5CMkFGcU5nTG9BUU5BSUFOQndBXFxcbkJxSUFOQjZBRnFFTkFISUFNdEFFQkJBWEZGRFFJQ1FDQURMUUJCSWdWQi93RnhRWGRxSWdSQkYwc05BRUVCSUFSMFFaT0FnQVJ4RFFFTFxcXG5DeUFGUWY4QmNVRTdSdzBCSUFOQk9Hb2dBaUFCSUFNb0F0d0JJQU1vQXRnQmEwSGc4c0FBRU1FR0lBTW9BandoQlNBREtBSTRJUVFNQWdcXFxuc2dBRUVDT2dBc0lBQkJBVG9BQUF3Q0MwRUFJUVFMUVFBaENDQURRUUEyQXVBQklBTkNBVGNEMkFFQ1FDQUVJQUlnQkJzaUFpQUZJQUVnXFxcbkJCc2lBVUU3RU04SFJRMEFJQU5CMkFGcVFjanl3QUJCMHZMQUFCQ0FDUXNnQXlBQ05nTG9BU0FESUFJZ0FXbzJBdXdCQWtBRFFDQURRVFxcXG5CcUlBTkI2QUZxRU84SEFrQUNRQUpBSUFNdEFEQkJBWEVOQUNBRFFlZ0JhaUFES0FMWUFTQURLQUxnQVJCR0FrQWdBeWdDNkFFaUFVVU5cXFxuQUNBREtBS0lBaUVKSUFNb0FvUUNJUW9nQXlnQ2dBSWhBaUFES0FMOEFTRUlJQU1vQXZnQklRc2dBeWdDOUFFaEJTQURLQUx3QVNFTUlBXFxcbk1vQXV3QklRME1CUXRCQkNFTUlBTkJLR3BCQkVFQUVNMEVJQU1vQWl3aERTQURLQUlvSWdGQjlNcmhvd2MyQUFCQkJTRUlJQU5CSUdwQlxcXG5CVUVBRU0wRUlBTW9BaVFoQ3lBREtBSWdJZ1ZCQUNnQTB2SkFOZ0FBSUFWQkJHcEJBQzBBMXZKQU9nQUFJQU5CR0dwQkJFRVlRUUFRaXdcXFxuZ2dBeWdDR0NJQ1JRMEJJQU5CRUdwQkIwRUFFTTBFSUFNb0FoUWhDaUFES0FJUUlnbEJBQ2dBMS9KQU5nQUFJQWxCQTJwQkFDZ0EydkpBXFxcbk5nQUFJQU5CQ0dwQkNFRUFFTTBFSUFNb0Fnd2hEaUFES0FJSUlnOUMxYWExaWJUcTBLVEpBRGNBQUNBQ1FRZzJBaFFnQWlBT05nSVFJQVxcXG5JZ0R6WUNEQ0FDUVFjMkFnZ2dBaUFLTmdJRUlBSWdDVFlDQUVFQklRcEJBU0VKREFRTEFrQWdBeTBBTVNJQlFmOEJjU0lDUVExTERRQkJcXFxuQVNBQ2RFR0F6QUJ4RFFNTEFrQWdBVUdCZjJwQi93RnhRYUFCU3cwQUlBRWdBMEhZQVdvUWhBa01Bd3NDUUFKQUFrQUNRQUpBQWtBZ0FrXFxcbkZFYWc0RUFRY0NBd0FMQWtBZ0FrRmdhZzREQkFjQUJ3c2dDRUVCY1VVTkJnd0VDeUFJUVFGeFJRMEZEQU1MSUFoQkFYRU5BZ3dFQ3lBRFxcXG5RZGdCYWtFL0VPUUVRUUVoQ0F3RUN5QUlRUUZ4UlEwQ0N5QUJJQU5CMkFGcUVJUUpRUUVoQ0F3Q0MwRUVRUmdRbWcwQUN5QURRZGdCYWlcXFxuQUNFT1FFREFBTEN5QURRZGdCYWhEakNpQUFJQVJCQUVjNkFDd2dBQ0FHTmdJb0lBQWdCellDSkNBQUlBazJBaUFnQUNBS05nSWNJQUFnXFxcbkFqWUNHQ0FBSUFnMkFoUWdBQ0FMTmdJUUlBQWdCVFlDRENBQUlBdzJBZ2dnQUNBTk5nSUVJQUFnQVRZQ0FBc2dBMEdRQW1va0FBdXdEd1xcXG5FTmZ5TUFRYUFCYXlJQ0pBQWdBa0VnYWlBQlFmQUFFS1FOR2lBQVFRQVFxUW9nQWtIQUFHb2hBeUFDUVRCcUlRUWdBa0VzYWlFRkEwQWdcXFxuQWlnQ0pDRUdJQUlvQWlBaEJ3SkFBa0FDUUFKQUEwQWdBaWdDUENFSUlBSW9BalFoQ1NBQ0tBSXdJUW9nQWk4QkxDSUxJUUVDUUFOQUlBXFxcbmdoREFKQUEwQUNRQUpBQWtBZ0J3NERCQUFCQkFzQ1FBSkFBa0FnQ2tHQWdNUUFSZzBBSUFGQi8vOERjU0lCUVFWSkRRRWdBaUFNTmdJOFxcXG5JQUlnQ3pzQkxDQUNRUUUyQWlBZ0FVRUVRWUNld1FBUWd3VUFDMEVBSVFkQkFDRUlJQVlnREU4TkJnd0JDeUFHSUFGUERRSWdCQ0VKQ3lcXFxuQUNJQXcyQWp3Z0FpQUxPd0VzSUFKQkFUWUNJQ0FKSUFaQkFuUnFLQUlBSVFzZ0FpQUdRUUZxTmdJa0RBa0xJQUlnRERZQ1BDQUNJQXM3XFxcbkFTd2dBa0VDTmdJZ0FrQUNRQ0FLUVlDQXhBQkdEUUFnQVVILy93TnhJZ0ZCQlU4TkJpQUVJUWtnQmlBQlNRMEJJQUZGRFFrZ0FrRUFPd1xcXG5Fc0RBa0xJQVlnREU4TkJ3c2dDU0FHUVFKMGFpZ0NBQ0VMSUFJZ0JrRUJhallDSkF3SUMwRUFJUWRCQUNBTElBRWJJUXRCQUNFQkRBQUxcXFxuQ3dzZ0FpQU1OZ0k4SUFJZ0N6c0JMQ0FDUVFBMkFpQURRQ0FDSUFNMkFwUUJJQU1oQVFKQUFrQURRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrXFxcbkFDUUFKQUlBRkJ4QUJxS0FJQUlnY05BQUpBSUFGQk9Hb2lCeTBBQUVFQ1JnMEFJQUZCSkdvUW1nSWlBVUdBZ01RQVJ3MERJQWRCQWpvQVxcXG5BQ0FDS0FLVUFTRUJDeUFCUVJScUtBSUFJQUV2QVFBZ0FTZ0NDRUdBZ01RQVJodEZEUU1nQVJDTEJDQUNLQUtVQVNJQlFjUUFhaUFCUVJcXFxuUnFLQUlBSUFFdkFRQWdBU2dDQ0NJR1FZQ0F4QUJHR3lJSE5nSUFEQUVMSUFFb0FnZ2hCZ3NnQVNnQ1FDRUxBa0FDUUNBR1FZQ0F4QUJHXFxcbklnd05BQ0FCTHdFQUlnWkJCVThOQkNBQlFRUnFJUW9NQVFzZ0FVRVVhaWdDQUNFR0lBRW9BZ3doQ2dzZ0JpQUxUUTBESUFvZ0MwRURkR1xcXG5vb0FnUWhEUUpBSUF0QkFXb2lDeUFIUmcwQUlBRWdDellDUUF3TEN5QUJRUlJxS0FJQUlBRXZBUUFnREJzZ0Iyc2hDVUVFSVFzZ0FVRUVcXFxuYWlFT1FRQWhCd05BQWtBZ0NTQUhSdzBBQWtBZ0FTZ0NDRUdBZ01RQVJnMEFJQWtnQVM4QkFFOE5EQ0FCSUFrN0FRQU1EQXNnQVNnQ0ZDXFxcbkFKU1EwTElBRWdDVFlDRkF3TEN5QUJLQUpFSVFvQ1FBSkFJQUVvQWdoQmdJREVBRVlpREEwQUlBNGhDQ0FCTHdFQUlnWkJCVWtOQVNBR1xcXG5RUVJCZ0o3QkFCQ0RCUUFMSUFFb0FoUWhCaUFCS0FJTUlRZ0xJQVlnQnlBS2FpSUtUUTBGSUFnZ0NrRURkR29pQmlnQ0JDRUtJQVl0QUFcXFxuQWhDQUpBQWtBZ0RBMEFJQUpCQUNBQkx3RUFJQTVCQkVId25zRUFFTzRHSUFJb0FnUWhCaUFDS0FJQUlRd01BUXNnQVNnQ0ZDRUdJQUVvXFxcbkFnd2hEQXNnQmlBSFRRMEdJQXdnQzJvaUJpQUtOZ0lBSUFaQmZHb2dDRG9BQUNBSFFRRnFJUWNnQzBFSWFpRUxEQUFMQ3dKQUlBSW9BcFxcXG5RQkxRQklEUUFnQWlBQ1FaUUJhallDbUFFQ1FDQUJRWUFCU1EwQUFrQUNRQ0FCRU00TURRQWdBa0VJYWlBQkVLOEVJQUlvQWdnaUIwVU5cXFxuQVNBQ0tBSU1RUUowSVFFRFFDQUJSUTBMSUFKQm1BRnFJQWNvQWdBUXpBd2dBVUY4YWlFQklBZEJCR29oQnd3QUN3c2dBaUFDUVpRQmFqXFxcbllDbkFFZ0FrR2NBV29nQVVHQXFIMXFJZ0ZCekFSdUlnZEJnQ0pxRU13TUlBSkJuQUZxSUFFZ0IwSE1CR3hyUWYvL0EzRkJIRzVCNFNKcVxcXG5FTXdNSUFGQkhIQWlBVVVOQ1NBQ1Fad0JhaUFCUWFjamFoRE1EQXdKQ3lBQ1FaZ0JhaUFCRU13TURBZ0xJQUpCbUFGcUlBRVF6QXdNQndcXFxuc2dBaUFDUVpRQmFqWUNtQUVDUUNBQlFZQUJTUTBBQWtBQ1FDQUJFTTRNRFFBZ0FrRVlhaUFCRUs0RUFrQWdBaWdDR0NJSFJRMEFJQUlvXFxcbkFod2hBUXdKQ3lBQ1FSQnFJQUVRcndRZ0FpZ0NFQ0lIUlEwQklBSW9BaFFoQVF3SUN5QUNJQUpCbEFGcU5nS2NBU0FDUVp3QmFpQUJRWVxcXG5Db2ZXb2lBVUhNQkc0aUIwR0FJbW9RekF3Z0FrR2NBV29nQVNBSFFjd0ViR3RCLy84RGNVRWNia0hoSW1vUXpBd2dBVUVjY0NJQlJRMElcXFxuSUFKQm5BRnFJQUZCcHlOcUVNd01EQWdMSUFKQm1BRnFJQUVRekF3TUJ3c2dBa0dZQVdvZ0FSRE1EQXdHQ3lBQ1FnSTNBeUJCQWlFSFFRXFxcbkFoQmlBQ0tBSW9JZ3RCZ0lERUFFWU5DeUFDUVlDQXhBQTJBaWdNRGdzZ0JrRUVRWUNld1FBUWd3VUFDeUFMSUFaQnVKYkJBQkNCQlFBTFxcXG5JQW9nQmtIa2xzRUFFSUVGQUFzZ0J5QUdRZlNXd1FBUWdRVUFDeUFCUVFKMElRRURRQ0FCUlEwQklBSkJtQUZxSUFjb0FnQVF6QXdnQVVcXFxuRjhhaUVCSUFkQkJHb2hCd3dBQ3dzZ0FpZ0NsQUVoQVF3QUN3c2dBVUlBTndKQUN5QU5FSklNSVFFQ1FBSkFJQUlvQWlnaUMwR0FnTVFBXFxcblJ3MEFJQUZCL3dGeFJRMEJJQTBoQ3d3SEN3SkFBa0FDUUNBQ0xRQ01BUTBBSUFzZ0RSQ1ZBU0lIUVlDQXhBQkhEUUVnQVVIL0FYRU5BaVxcXG5BQ0lBMDJBaWdNQ1FzQ1FDQUNMUUNOQVNBQlFmOEJjU0lIVHcwQUlBc2dEUkNWQVNJSFFZQ0F4QUJHRFFJZ0FpQUhOZ0lvREFRTElBY05cXFxuQVNBQ1FRQTZBSXdCSUFJZ0RUWUNLQ0FDUWdFM0F5QU1DQXNnQWlBSE5nSW9EQUlMSUFVZ0RSREFBeUFDSUFFNkFJMEJJQUpCQVRvQWpBXFxcbkVNQVFzZ0FpQU5OZ0lvREFBTEN3c2dBVUVFUVlDZXdRQVFnd1VBQ3lBQ1FRQTJBandMSUFJb0FpZ2hDeUFDUVlDQXhBQTJBaWdnQzBHQVxcXG5nTVFBUmcwQkN5QUFJQXNRNEFRTUFRc0xJQU1RK1FvZ0JSRDRDaUFDUWFBQmFpUUFDNzBPQWd4L0FuNGpBRUdRQW1zaUJpUUFJQVpCOEFcXFxuQnFJQUVRdWdRQ1FBSkFBa0FDUUNBR0xRQndEUUFnQmkwQWNRMENJQVpCQlRZQzBBRWdBU0FHUWRBQmFoRGRDQ0VCREFFTElBWW9BblFoXFxcbkFRc2dBRUVBTmdJUUlBQWdBVFlDQUF3QkN3SkFBa0FDUUFKQUFrQUNRQ0FHTFFCeUlnZEIyd0JHRFFBQ1FDQUhRZnNBUmcwQUlBRWdCa1xcXG5HSUFtcEIvSjNBQUJCNElRY01CZ3NnQVNBQkxRQVlRWDlxSWdjNkFCZ0NRQ0FIUWY4QmNVVU5BQ0FCRUlNTUlBWkJNR29nQVJDRURDQUdcXFxuS0FJd0lRY2dCaUFHTFFBMFFRRnhPZ0JzSUFZZ0J6WUNhRUVBSVFnZ0JrRUFOZ0tBQVNBR1FmQUFha0VVYWlFSklBWkI4QUJxUVFSeUlRXFxcbm9nQmtIUUFXcEJGR29oQ3lBR1FkQUJha0VFY2lFTUEwQWdCa0hRQVdvZ0JrSG9BR29Ra0FFQ1FBSkFBa0FDUUNBR0xRRFFBUTBBSUFZdFxcXG5BTkVCRGdNREFnRUNDeUFHS0FMVUFTRUhEQWNMQWtBQ1FDQUlEUUFnQmtFZ2FoRFFDRUVFSVExQmdJUEFBQ0VJUVFBaEN5QUdLUU1vSVJcXFxuSWdCaWtESUNFVFFRQWhDa0VBSVF4QkFDRU9RUUFoRHd3QkN5QUdLQUtjQVNFUUlBWW9BcGdCSVE4Z0JpZ0NsQUVoRGlBR0tBS1FBU0VOXFxcbklBWW9Bb3dCSVF3Z0JpZ0NpQUVoQ2lBR0tBS0VBU0VMSUFZcEEzZ2hFaUFHS1FOd0lSTUxJQk5DSUlpbklSRWdFNmNoQnd3SEN5QUdRZVxcXG5nQWFoRGRDaUlIUlEwQkRBVUxBa0FnQ0VVTkFFR3Nxc0FBUVFjUXpnVWhCd3dGQ3lBR1FkQUJhaUFHUWVnQWFoRFNDU0FHS0FMUUFTRUhcXFxuSUFZb0F1QUJJZ2hGRFFRZ0JrSEFBV3BCQ0dvaURTQU1RUWhxS0FJQU5nSUFJQVpCb0FGcVFRaHFJZzRnQzBFSWFpa0NBRGNEQUNBR1FhXFxcbkFCYWtFUWFpSVBJQXRCRUdvcEFnQTNBd0FnQmtHZ0FXcEJHR29pRUNBTFFSaHFLQUlBTmdJQUlBWWdEQ2tDQURjRHdBRWdCaUFMS1FJQVxcXG5Od09nQVNBR1FmQUFhaERVQ3lBS0lBWXBBOEFCTndJQUlBcEJDR29nRFNnQ0FEWUNBQ0FKSUFZcEE2QUJOd0lBSUFsQkNHb2dEaWtEQURcXFxuY0NBQ0FKUVJCcUlBOHBBd0EzQWdBZ0NVRVlhaUFRS0FJQU5nSUFJQVlnQnpZQ2NDQUdJQWcyQW9BQkRBQUxDeUFHUVJnMkF0QUJJQUVnXFxcbkJrSFFBV29RM1FnaEFRd0JDeUFCSUFFdEFCaEJmMm9pQnpvQUdBSkFJQWRCL3dGeFJRMEFJQUVRZ3d3Z0JrRVlhaUFCRUlRTUlBWW9BaFxcXG5naEJ5QUdJQVl0QUJ4QkFYRTZBSFFnQmlBSE5nSndJQVpCMEFGcUlBWkI4QUJxRUxzQkFrQUNRQUpBQWtBZ0JpZ0MwQUVOQUNBR1FZUUNcXFxuYWlnQ0FDRUxJQVpCNkFGcUtBSUFJZ2hGRFFFZ0JrR0FBbW9vQWdBaENpQUdRZndCYWlnQ0FDRU1JQVpCK0FGcUtBSUFJUTBnQmtIMEFXXFxcbm9vQWdBaERpQUdRZkFCYWlnQ0FDRVBJQVpCN0FGcUtBSUFJUkFnQmtIZ0FXb3BBd0FoRWlBR0tRUFlBU0VUREFJTElBWW9BdFFCSVFkQlxcXG5BQ0VJREFJTElBWkJDR29RMEFoQmdJUEFBQ0VJUVFRaERVRUFJUW9nQmlrREVDRVNJQVlwQXdnaEUwRUFJUXhCQUNFT1FRQWhEMEVBSVJcXFxuQUxJQk5DSUlpbklSRWdFNmNoQndzZ0FTQUJMUUFZUVFGcU9nQVlJQVlnQVJDeEFpSUpOZ0tBQWlBR0lBczJBdndCSUFZZ0NqWUMrQUVnXFxcbkJpQU1OZ0wwQVNBR0lBMDJBdkFCSUFZZ0RqWUM3QUVnQmlBUE5nTG9BU0FHSUJBMkF1UUJJQVlnQ0RZQzRBRWdCaUFTTndQWUFTQUdJQlxcXG5FMkF0UUJJQVlnQnpZQzBBRUNRQUpBSUFoRkRRQWdDUTBCSUFaQjJBQnFRUWhxSUFaQjBBRnFRUVJ5SWd0QkNHb29BZ0EyQWdBZ0JrRTRcXFxuYWtFSWFpQUdRZVFCYWlJSlFRaHFLUUlBTndNQUlBWkJPR3BCRUdvZ0NVRVFhaWtDQURjREFDQUdRVGhxUVJocUlBbEJHR29vQWdBMkFnXFxcbkFnQmlBTEtRSUFOd05ZSUFZZ0NTa0NBRGNET0F3R0MwRUFJUWdnQ1VVTkJTQUdRWUFDYWhDdkNRd0ZDeUFHUWRBQmFoRFpDa0VBSVFnZ1xcXG5DU0VIREFRTElBWkJHRFlDMEFFZ0FTQUdRZEFCYWhEZENDRUJDeUFBUVFBMkFoQWdBQ0FCTmdJQURBUUxJQVpCOEFCcUVOUUxRUUFoQ0FcXFxuc2dBU0FCTFFBWVFRRnFPZ0FZSUFZZ0FSREZBeUlKTmdLQUFpQUdJQkEyQXZ3QklBWWdEellDK0FFZ0JpQU9OZ0wwQVNBR0lBMDJBdkFCXFxcbklBWWdERFlDN0FFZ0JpQUtOZ0xvQVNBR0lBczJBdVFCSUFZZ0NEWUM0QUVnQmlBU053UFlBU0FHSUJFMkF0UUJJQVlnQnpZQzBBRUNRQVxcXG5KQUlBaEZEUUFnQ1EwQklBWkIyQUJxUVFocUlBWkIwQUZxUVFSeUlndEJDR29vQWdBMkFnQWdCa0U0YWtFSWFpQUdRZVFCYWlJSlFRaHFcXFxuS1FJQU53TUFJQVpCT0dwQkVHb2dDVUVRYWlrQ0FEY0RBQ0FHUVRocVFSaHFJQWxCR0dvb0FnQTJBZ0FnQmlBTEtRSUFOd05ZSUFZZ0NTXFxcbmtDQURjRE9Bd0NDMEVBSVFnZ0NVVU5BU0FHUVlBQ2FoQ3ZDUXdCQ3lBR1FkQUJhaERaQ2tFQUlRZ2dDU0VIQ3lBSVJRMEFJQUFnQmlrRFxcXG5XRGNDQkNBQUlBWXBBemczQWhRZ0FDQUlOZ0lRSUFBZ0J6WUNBQ0FBUVF4cUlBWkIyQUJxUVFocUtBSUFOZ0lBSUFCQkhHb2dCa0U0YWtcXFxuRUlhaWtEQURjQ0FDQUFRU1JxSUFaQnlBQnFLUU1BTndJQUlBQkJMR29nQmtIUUFHb29BZ0EyQWdBTUFRc2dBU0FIRUw0TklRRWdBRUVBXFxcbk5nSVFJQUFnQVRZQ0FBc2dCa0dRQW1va0FBdkpEUUVOZnlNQVFjQUFheUlDSkFBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa1xcXG5BZ0FVRWNhaTBBQUNJRFFRTkdEUUFnQVVFZGFpMEFBQ0lFUWY4QmNTSUZRUU5HRFFBZ0F5QUZTdzBBUVFBZ0FVRUlhaUFCTFFBSUlnWkJcXFxuQmtZaUJ4c2hDQ0FEUVFGSFFYOGdBeHNoQ1NBQ1FTQnFRUVZ5SVFvZ0FTMEFIaUVMQWtBQ1FBSkFJQU1OQUNBQlFSMXFJUXdnQ1VGL1JpXFxcbkVOQTBBQ1FBSkFJQVJCL3dGeERnTUhBUUFIQ3lBQktBSUVJUVVDUUFKQUlBME5BRUVBSVFOQkFDRU9JQWxCL3dGeERRRUxJQUVRN3dFaFxcXG5EaUFMSVFNTFFRQWhCQUpBSUFjTkFFRUdJUVFDUUFKQUFrQUNRQUpBSUFndEFBQU9CZ1FEQlFJQkFBUUxRUUloQkF3RUN5QUlLQUlJSUFcXFxuZ29BaEFpQkVFQmFrRUFJQVFiYWtFQ2FpRUVEQU1MSUFnb0FnaEJCR29oQkF3Q0N5QUlLQUlJSUFnb0FoQWlCRUVCYWtFQUlBUWJha0VJXFxcbmFpRUVEQUVMSUFnb0FnaEJCR29oQkFzQ1FDQUZJQTRnQTBIL0FYRnFJQVJxU3cwQVFRRWhCQ0FNUVFFNkFBQU1BZ3NnQWtFZ2FpQUJFSVxcXG5FQklBSW9BaUFoQkNBQ1FRaHFJQXBCQ0dvcEFBQTNBd0FnQWtFUWFpQUtRUkJxS1FBQU53TUFJQUpCRjJvZ0NrRVhhaWdBQURZQUFDQUNcXFxuSUFvcEFBQTNBd0FnQlNBRWF5RU9JQVVnQkVrTkJ5QUNMUUFrSVFRZ0FTQU9OZ0lFSUFSQi93RnhRUXBIRFExQkFpRUVEQUVMSUF4QkFEXFxcbm9BQUFKQUFrQWdDMEgvQVhFTkFFRUFJUVFnQmc0SEFnSUNDZ29DQVFvTElBRW9BZ1FoQlF3REN5QUJFTzhCUlEwQUN5QUJLQUlFSVFVTVxcXG5CZ3NnQ1VIL0FYRWhCeUFCS0FJRUlRVUNRQUpBSUFsQmYwWU5BQ0FIRFFFTElBdEIvd0Z4SVFzZ0FVRWRhaUVNSUFsQmYwWWhDUU5BQWtcXFxuQUNRQUpBSUFSQi93RnhEZ01JQVFBSUN3SkFBa0FnQ1EwQVFRQWhCQ0FIRFFFTElBRVE3d0VoQkFzQ1FDQUZJQVFnQzJwTERRQkJBU0VFXFxcbklBeEJBVG9BQUF3Q0N5QUNRU0JxSUFFUWdRRWdBaWdDSUNFRUlBSkJDR29nQ2tFSWFpa0FBRGNEQUNBQ1FSQnFJQXBCRUdvcEFBQTNBd1xcXG5BZ0FrRVhhaUFLUVJkcUtBQUFOZ0FBSUFJZ0Npa0FBRGNEQUNBRklBUnJJUTRnQlNBRVNRMElJQUl0QUNRaEJDQUJJQTQyQWdRZ0JFSC9cXFxuQVhGQkNrY05Ea0VDSVFRZ0RpRUZEQUVMSUF4QkFEb0FBQ0FMRFFOQkFDRUVBa0FnQmc0SEFRRUJDZ29CQUFvTElBRVE3d0VOQ0FzZ0F5XFxcbkFFVFEwQURBUUxDeUFMUWY4QmNVVU5BU0FCUVIxcUlRNGdCU0VMQTBBQ1FDQUVRZjhCY1NJRVFRSkdEUUFDUUNBRURnSUdBQVlMSUFGQlxcXG5IV3BCQURvQUFBd0NDd0pBQWtBZ0N3MEFRUUVoQkNBT1FRRTZBQUJCQUNFTERBRUxJQUpCSUdvZ0FSQ0JBU0FDS0FJZ0lRUWdBa0VJYWlcXFxuQUtRUWhxS1FBQU53TUFJQUpCRUdvZ0NrRVFhaWtBQURjREFDQUNRUmRxSUFwQkYyb29BQUEyQUFBZ0FpQUtLUUFBTndNQUlBc2dCR3NoXFxcbkJRSkFJQXNnQkU4TkFDQUZJUTRnQ3lFRkRBY0xJQUl0QUNRaEJDQUJJQVUyQWdRZ0JFSC9BWEZCQ2tjTkRFRUNJUVFnQlNFTEN5QURJQVxcXG5STkRRQU1Bd3NMSUFWQmYyb2hCQUpBSUFWRkRRQWdBRUVHT2dBQUlBRWdCRFlDQkF3TkN5QUVRUUJCN092TkFCQ0RCUUFMSUFGQkhXb2hcXFxuRGlBRklRc0RRQUpBQWtBQ1FDQUVRZjhCY1E0REJRRUFCUXNDUUNBTERRQkJBU0VFSUE1QkFUb0FBRUVBSVFzTUFnc2dBa0VnYWlBQkVJXFxcbkVCSUFJb0FpQWhCQ0FDUVFocUlBcEJDR29wQUFBM0F3QWdBa0VRYWlBS1FSQnFLUUFBTndNQUlBSkJGMm9nQ2tFWGFpZ0FBRFlBQUNBQ1xcXG5JQW9wQUFBM0F3QWdDeUFFYXlFRkFrQWdDeUFFVHcwQUlBVWhEaUFMSVFVTUJnc2dBaTBBSkNFRUlBRWdCVFlDQkNBRVFmOEJjVUVLUndcXFxuMExRUUloQkNBRklRc01BUXRCQUNFRUlBNUJBRG9BQUFKQUlBWU9Cd0VCQVFjSEFRQUhDeUFCRU84QkRRVUxJQU1nQkUwTkFBc0xJQUJCXFxcbkNqb0FBQXdLQ3lBR1FRWkdEUWdDUUFKQUlBZ3RBQUFPQmdZRkJ3QUJCd1lMSUFnb0FnaEJCR3BGRFFrTUJnc2dDQ2dDQ0NBSUtBSVFJZ1xcXG5SQkFXcEJBQ0FFRzJwQkFtcEZEUWdNQlFzZ0RpQUZRZHpyelFBUWd3VUFDeUFGUVg5cUlRUWdCVVVOQlNBQVFRYzZBQUFnQVNBRU5nSUVcXFxuREFjTElBQkJCam9BQUF3R0N5QUlLQUlJSUFnb0FoQWlCRUVCYWtFQUlBUWJha0VJYWcwQkRBUUxJQWdvQWdoQkJHcEZEUU1MSUFBZ0JqXFxcbm9BQUNBQlFSMXFRUU02QUFBZ0FDQUJLUUlBTndJVUlBQWdBVUVKYWlrQUFEY0FBU0FBUVFscUlBRkJFV29wQUFBM0FBQWdBRUVRYWlBQlxcXG5RUmhxS0FBQU5nQUFEQU1MSUFBZ0JEb0FBQ0FBSUFJcEF3QTNBQUVnQUVFSmFpQUNRUWhxS1FNQU53QUFJQUJCRVdvZ0FrRVFhaWtEQURcXFxuY0FBQ0FBUVJocUlBSkJGMm9vQUFBMkFBQU1BZ3NnQkVFQVFmenJ6UUFRZ3dVQUN5QUFRUW82QUFBZ0FVRWRha0VET2dBQUN5QUNRY0FBXFxcbmFpUUFDK1FOQVF4L0l3QkJrQUZySWdZa0FDQUJRUzhRM2dRZ0FVRXZFTjRFSUFFb0FnZ2hCeUFHSUFNMkFvd0JJQVlnQWpZQ2lBRWdCaVxcXG5BRE5nSk1JQVlnQWpZQ1NFRUFJUWdnQkVIL0FYRkJBa1loQ1VFQUlRb0NRQU5BQWtBQ1FBSkFBa0FDUUFKQUlBWkJ5QUJxRU1nSklndEJcXFxuUVdvT0FnY0JBQXNnQzBIY0FFWU5BU0FMUVNOR0RRWWdDMEdBZ01RQVJnMEdJQXRCTDBjTkJBd0dDeUFJUlEwQklBRW9BaGdpQzBVTkFpXFxcbkFMUVFvZ0FTZ0NIQ2dDRkJFRkFBd0NDeUFKUlEwRURBSUxJQUVvQWhnaUMwVU5BQ0FMUVFJZ0FTZ0NIQ2dDRkJFRkFBc2dCaWdDVENFTVxcXG5JQVlvQWtnaENDQUtJUTBMSUFwQkFXb2hDZ3dBQ3dzZ0J5RU9Ba0FnQ0VVTkFBSkFBa0FDUUFKQUlBMUZEUUJCQUNFT1FRQWhEMEVBSVFcXFxua01BUXNnQmlBTU5nSnNJQVlnQ0RZQ2FDQUdRU0JxSUFaQjZBQnFFTVlJSUFZb0FpQWlDMEZkYWlJS1FSeExEUUZCQVNBS2RFR0JvSUNBXFxcbkFYRkZEUUVNQWdzQ1FBSkFBMEFnRDBFQmN5RURBa0FEUUNBTklRb0RRQUpBSUFwQkFFb05BQ0FCS0FJSUlRb2dDU0FQY2tFQmNRMEREQVxcXG5ZTElBWkJJR29nQmtHSUFXb1F4d01nQmlnQ0lDSUxRWUNBeEFCR0RRUWdCaWdDS0NFTklBWW9BaVFoQWdKQUFrQWdDMEU2UncwQUlBNUZcXFxuRFFFTElBRWdDeUFHUVlnQmFoRFlBU0FHUVlDTHdRQTJBaWdnQmlBTk5nSWtJQVlnQWpZQ0lDQUJJQVpCSUdvUTVnVWdDa0YvYWlFS0lBXFxcbk1nQ1hJaENRd0JDd3NnQ2tGL2FpRU5RUUVoRGlBQktBSUlJUkFnQ2tFQlRRMEFDeUFCUVRvUTNnUWdDa0YvYWlFTlFRRWhEa0VCSVE4TVxcXG5BUXNMSUFGQndBQVEzZ1FNQVF0QndJTEJBRUVyUWZDS3dRQVFnd2NBQ3lBUUlBb2dEaHNoRGlBTUlRTWdDQ0VDREFJTEFrQWdDMEdBZ01cXFxuUUFSZzBBSUFSQi93RnhRUUpHRFFBZ0MwSGNBRVlOQVFzZ0RDRURJQWdoQWlBSElRNE1BUXRCQUNFQ0lBd2hBMEVBSVE0TEFrQUNRQUpBXFxcbklBSU5BQ0FBUVFJMkFnQWdBQ0FPT2dBRURBRUxJQUVvQWdnaERDQUdRZWdBYWlBQ0lBTWdCQkJFQWtBQ1FDQUdMUUJvSWdwQkEwY05BQ1xcXG5BR0xRQnBJUXNNQVFzZ0JpMEFhU0VMSUFaQnlBQnFRUkpxSUFaQjZBQnFRUkpxTHdFQU93RUFJQVpCeUFCcVFRcHFJQVpCNkFCcVFRcHFcXFxuS1FFQU53RUFJQVlnQmlrQmFqY0JTaUFHSUFzNkFFa2dCaUFLT2dCSUlBWW9BbndoQ2lBR0lBWW9Bb0FCSWcwMkFtUWdCaUFLTmdKZ0lBXFxcblpCNkFCcVFReHFRZ0UzQWdBZ0JrRUJOZ0pzSUFaQm9JZkJBRFlDYUNBR1FkZ0JOZ0tNQVNBR0lBWkJpQUZxTmdKd0lBWWdCa0hJQUdvMlxcXG5Bb2dCSUFFZ0JrSG9BR29ReHdWQmtJdkJBQkRsQ0NBQktBSUlJUU1DUUFKQUlBWXRBRWdOQUNBR1FjZ0Fha0VNYWlnQ0FBMEFRUUFoQ3lcXFxuQUdRZUFBYWtHZWg4RUFRUUVRalFraENDQUVRZjhCY1VFQ1J3MEJJQWdOQVFzZ0JrRVlhaUFHUWVBQWFrRTZFT3dHQWtBQ1FDQUdLQUlZXFxcbklnZ05BRUVBSVE4TUFRc2dBUzBBSUNFUElBWWdCaWdDSENJTk5nS01BU0FHSUFnMkFvZ0JRUUFoQzBFQklRSWdDQ0VLQWtBQ1FBTkFJQVxcXG5aQjZBQnFJQVpCaUFGcUVNWUlJQVlvQW1naUNFR0FnTVFBUmcwQ0FrQWdDRUZRYWlJSlFRcFBEUUFnQ1NBTFFRcHNhaUlMUWYvL0Ewc05cXFxuQWlBR0tBSnNJUW9nQmlBR0tBSndJZzAyQW93QklBWWdDallDaUFGQkFDRUNEQUVMQ3lBUFFmOEJjUTBCQWtBZ0NFRmRhaUlKUVJ4TERRXFxcbkJCQVNBSmRFR0JvSUNBQVhFTkFnc2dDRUhjQUVZTkFRdEJBaUVMREFJTEFrQUNRQ0FDUVFGeERRQWdCa0VRYWlBQklBVkJ1SXZCQUJDRlxcXG5CaUFHUVFocUlBWW9BaEFnQmlnQ0ZCRFVCU0FHTHdFSVJRMEJJQVl2QVFwQi8vOERjU0FMUWYvL0EzRkhEUUVMUVFBaER3d0JDeUFHSUFcXFxuczdBWVlCSUFaQjlBQnFRZ0UzQWdCQkFTRVBJQVpCQVRZQ2JDQUdRYUNMd1FBMkFtZ2dCa0VMTmdLTUFTQUdJQVpCaUFGcU5nSndJQVlnXFxcbkJrR0dBV28yQW9nQklBRWdCa0hvQUdvUXh3VkJxSXZCQUJEbENBc2dCa0hvQUdwQkVHb2lFQ0FHUWNnQWFrRVFhaUlJS0FJQU5nSUFJQVxcXG5aQjZBQnFRUWhxSWhFZ0JrSElBR3BCQ0dvaUNTa0RBRGNEQUNBR0lBWXBBMGczQTJnZ0JrRWdha0VJYWlBR1FlZ0FhaENIQmlBSUlBWkJcXFxuT0dvdEFBQTZBQUFnQ1NBR1FTQnFRUkJxS1FNQU53TUFJQVlnQmlrREtEY0RTQ0FHUWNnQWFrSGNpc0VBRUlnR0lRSUNRQ0FISUF4R0RRXFxcbkFnQWtVTkFDQUFRUUkyQWdBZ0FFRUFPZ0FFREFNTElBRW9BZ2doQWlBR1FRRTZBQ0FnQmlBQklBUWdCa0VnYWlBS0lBMFE3UUVnQmlnQ1xcXG5CQ0VLSUFZb0FnQWhEU0FHUVNCcUlBRkJKQkNrRFJvZ0VDQUlMUUFBT2dBQUlCRWdDU2tEQURjREFDQUdJQVlwQTBnM0EyZ2dBQ0FHUVNcXFxuQnFJQVFnQlNBT0lBd2dBeUFHUWVnQWFpQVBJQXNnQWlBTklBb1E5UUlNQXdzZ0JrSElBR29RdmdzTElBQkJBallDQUNBQUlBczZBQVFMXFxcbklBRVFpZzBMSUFaQmtBRnFKQUFMa1F3Q0NuOEJmZ0pBSUFRTkFDQUFJQU0yQWpnZ0FDQUJOZ0l3SUFCQkFEb0FEaUFBUVlFQ093RU1JQVxcXG5BZ0FqWUNDQ0FBUWdBM0F3QWdBRUU4YWtFQU5nSUFJQUJCTkdvZ0FqWUNBQThMUVFFaEJVRUFJUVlDUUFKQUlBUkJBVWNOQUVFQklRZEJcXFxuQUNFSURBRUxRUUVoQ1VFQUlRcEJBU0VMUVFBaEJrRUJJUVVEUUNBTElRd0NRQUpBQWtBZ0JpQUthaUlMSUFSUERRQUNRQ0FESUFscUxRXFxcbkFBUWY4QmNTSUpJQU1nQzJvdEFBQWlDMGtOQUNBSklBdEdEUUpCQVNFRklBeEJBV29oQzBFQUlRWWdEQ0VLREFNTElBd2dCbXBCQVdvaVxcXG5DeUFLYXlFRlFRQWhCZ3dDQ3lBTElBUkJrS2pPQUJDQkJRQUxRUUFnQmtFQmFpSUxJQXNnQlVZaUNSc2hCaUFMUVFBZ0NSc2dER29oQ3dcXFxuc2dDeUFHYWlJSklBUkpEUUFMUVFFaENVRUFJUWhCQVNFTFFRQWhCa0VCSVFjRFFDQUxJUXdDUUFKQUFrQWdCaUFJYWlJTElBUlBEUUFDXFxcblFDQURJQWxxTFFBQVFmOEJjU0lKSUFNZ0Myb3RBQUFpQzBzTkFDQUpJQXRHRFFKQkFTRUhJQXhCQVdvaEMwRUFJUVlnRENFSURBTUxJQVxcXG53Z0JtcEJBV29pQ3lBSWF5RUhRUUFoQmd3Q0N5QUxJQVJCa0tqT0FCQ0JCUUFMUVFBZ0JrRUJhaUlMSUFzZ0IwWWlDUnNoQmlBTFFRQWdcXFxuQ1JzZ0RHb2hDd3NnQ3lBR2FpSUpJQVJKRFFBTElBb2hCZ3NDUUFKQUFrQWdCaUFJSUFZZ0NFc2lDeHNpRFNBRVN3MEFBa0FnQlNBSElBXFxcbnNiSWdzZ0RXb2lCaUFMU1EwQUFrQWdCaUFFU3cwQUFrQWdBeUFESUF0cUlBMFFvZzFGRFFBZ0RTQUVJQTFySWdsTElRZ2dCRUVEY1NFTFxcXG5Ba0FnQkVGL2FrRURUdzBBUWdBaER5QURJUVlNQlFzZ0JFRjhjU0VNUWdBaER5QURJUVlEUUVJQklBWkJBMm94QUFDR1FnRWdCa0VDYWpcXFxuRUFBSVpDQVNBR1FRRnFNUUFBaGtJQklBWXhBQUNHSUErRWhJU0VJUThnQmtFRWFpRUdJQXhCZkdvaURBMEFEQVVMQzBFQklRaEJBQ0VHXFxcblFRRWhDVUVBSVFVQ1FBTkFJQWtpRENBR2FpSUhJQVJQRFFFQ1FBSkFBa0FDUUNBRUlBWnJJQXhCZjNOcUlna2dCRThOQUNBR1FYOXpJQVxcXG5ScUlBVnJJZ29nQkU4TkFRSkFJQU1nQ1dvdEFBQkIvd0Z4SWdrZ0F5QUthaTBBQUNJS1NRMEFJQWtnQ2tZTkF5QU1RUUZxSVFsQkFDRUdcXFxuUVFFaENDQU1JUVVNQkFzZ0IwRUJhaUlKSUFWcklRaEJBQ0VHREFNTElBa2dCRUdncU00QUVJRUZBQXNnQ2lBRVFiQ296Z0FRZ1FVQUMwXFxcbkVBSUFaQkFXb2lDU0FKSUFoR0lnb2JJUVlnQ1VFQUlBb2JJQXhxSVFrTElBZ2dDMGNOQUFzTFFRRWhDRUVBSVFaQkFTRUpRUUFoQndKQVxcXG5BMEFnQ1NJTUlBWnFJZzRnQkU4TkFRSkFBa0FDUUFKQUlBUWdCbXNnREVGL2Myb2lDU0FFVHcwQUlBWkJmM01nQkdvZ0Iyc2lDaUFFVHdcXFxuMEJBa0FnQXlBSmFpMEFBRUgvQVhFaUNTQURJQXBxTFFBQUlncExEUUFnQ1NBS1JnMERJQXhCQVdvaENVRUFJUVpCQVNFSUlBd2hCd3dFXFxcbkN5QU9RUUZxSWdrZ0Iyc2hDRUVBSVFZTUF3c2dDU0FFUWFDb3pnQVFnUVVBQ3lBS0lBUkJzS2pPQUJDQkJRQUxRUUFnQmtFQmFpSUpJQVxcXG5rZ0NFWWlDaHNoQmlBSlFRQWdDaHNnREdvaENRc2dDQ0FMUncwQUN3c0NRQ0FMSUFSTERRQWdCQ0FGSUFjZ0JTQUhTeHRySVFwQkFDRUlcXFxuQWtBQ1FDQUxEUUJDQUNFUFFRQWhDd3dCQ3lBTFFRTnhJUXdDUUFKQUlBdEJCRThOQUVJQUlROGdBeUVHREFFTElBdEJmSEVoQ1VJQUlRXFxcbjhnQXlFR0EwQkNBU0FHUVFOcU1RQUFoa0lCSUFaQkFtb3hBQUNHUWdFZ0JrRUJhakVBQUlaQ0FTQUdNUUFBaGlBUGhJU0VoQ0VQSUFaQlxcXG5CR29oQmlBSlFYeHFJZ2tOQUFzTElBeEZEUUFEUUVJQklBWXhBQUNHSUErRUlROGdCa0VCYWlFR0lBeEJmMm9pREEwQUN3c2dCQ0VHREFcXFxuVUxJQXNnQkVHQXFNNEFFSU1GQUFzZ0JpQUVRZkNuemdBUWd3VUFDeUFMSUFaQjhLZk9BQkNFQlFBTElBMGdCRUhncDg0QUVJTUZBQXNnXFxcbkRTQUpJQWdiSVF3Q1FDQUxSUTBBQTBCQ0FTQUdNUUFBaGlBUGhDRVBJQVpCQVdvaEJpQUxRWDlxSWdzTkFBc0xJQXhCQVdvaEMwRi9JUVxcXG5nZ0RTRUtRWDhoQmdzZ0FDQUROZ0k0SUFBZ0FUWUNNQ0FBSUFZMkFpZ2dBQ0FJTmdJa0lBQWdBallDSUNBQVFRQTJBaHdnQUNBTE5nSVlcXFxuSUFBZ0NqWUNGQ0FBSUEwMkFoQWdBQ0FQTndJSUlBQkJBVFlDQUNBQVFUeHFJQVEyQWdBZ0FFRTBhaUFDTmdJQUMvd0xBUXgvSXdCQklHXFxcbnNpQXlRQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQWcwQVFRQWhCRUVCSVFVTUFRc2dBa0YvVEEwQ1FRQWhCRUVBTFFEeHBrOGFJQUpCQVJEM1xcXG5DeUlGUlEwQklBSkJDRWtOQUVFQUlRUURRQ0FCSUFScUlnWkJCR29vQUFBaUJ5QUdLQUFBSWdoeVFZQ0Jnb1I0Y1EwQklBVWdCR29pQmtcXFxuRUVhaUFIUWI5L2FrSC9BWEZCR2tsQkJYUWdCM0k2QUFBZ0JpQUlRYjkvYWtIL0FYRkJHa2xCQlhRZ0NISTZBQUFnQmtFSGFpQUhRUmgyXFxcbklnbEJ2MzlxUWY4QmNVRWFTVUVGZENBSmNqb0FBQ0FHUVFacUlBZEJFSFlpQ1VHL2YycEIvd0Z4UVJwSlFRVjBJQWx5T2dBQUlBWkJCV1xcXG5vZ0IwRUlkaUlIUWI5L2FrSC9BWEZCR2tsQkJYUWdCM0k2QUFBZ0JrRURhaUFJUVJoMklnZEJ2MzlxUWY4QmNVRWFTVUVGZENBSGNqb0FcXFxuQUNBR1FRSnFJQWhCRUhZaUIwRy9mMnBCL3dGeFFScEpRUVYwSUFkeU9nQUFJQVpCQVdvZ0NFRUlkaUlHUWI5L2FrSC9BWEZCR2tsQkJYXFxcblFnQm5JNkFBQWdCRUVRYWlFR0lBUkJDR29pQnlFRUlBWWdBazBOQUFzZ0J5RUVDeUFESUFVMkFnZ2dBeUFDTmdJTUlBTWdCRFlDRUNBQ1xcXG5JQVJHRFFRZ0FTQUNhaUVLSUFJZ0JHc2hDMEVBSVF3Z0FTQUVhaUlKSVFFRFFBSkFBa0FnQVN3QUFDSUdRWDlNRFFBZ0FVRUJhaUVGSUFcXFxuWkIvd0Z4SVFZTUFRc2dBUzBBQVVFL2NTRUhJQVpCSDNFaENBSkFJQVpCWDBzTkFDQUlRUVowSUFkeUlRWWdBVUVDYWlFRkRBRUxJQWRCXFxcbkJuUWdBUzBBQWtFL2NYSWhCd0pBSUFaQmNFOE5BQ0FISUFoQkRIUnlJUVlnQVVFRGFpRUZEQUVMSUFkQkJuUWdBUzBBQTBFL2NYSWdDRVxcXG5FU2RFR0FnUEFBY1hJaUJrR0FnTVFBUmcwR0lBRkJCR29oQlFzQ1FBSkFBa0FnQmtHakIwWU5BQ0FHUVlDQXhBQkhEUUVNQ0FzQ1FDQU1cXFxuUlEwQUFrQWdEQ0FMU1EwQUlBd2dDMFlOQVF3SUN5QUpJQXhxTEFBQVFiOS9UQTBIQ3lBSklBeHFJUVpCQUNFRUFrQUNRQUpBQWtBRFFDXFxcbkFHSUFsR0RRRUNRQ0FHUVg5cUlnZ3RBQUFpQjhBaUFrRi9TZzBBQWtBQ1FDQUdRWDVxSWdndEFBQWlCOEFpRFVGQVNBMEFJQWRCSDNFaFxcXG5CZ3dCQ3dKQUFrQWdCa0Y5YWlJSUxRQUFJZ2ZBSWc1QlFFZ05BQ0FIUVE5eElRWU1BUXNnQmtGOGFpSUlMUUFBUVFkeFFRWjBJQTVCUDNcXFxuRnlJUVlMSUFaQkJuUWdEVUUvY1hJaEJnc2dCa0VHZENBQ1FUOXhjaUlIUVlDQXhBQkdEUUlMQWtBQ1FDQUVRZjhCY1EwQUlBY1F5UUZGXFxcbkRRQkJnSURFQUNFSFFRQWhCQXdCQzBFQklRUUxJQWdoQmlBSFFZQ0F4QUJHRFFBTElBY1F5Z0ZGRFFBZ0N5RUhBa0FnREVFQ2FpSUdSUVxcXG4wQUFrQUNRQ0FMSUFaTERRQWdDeUFHUmcwQkRBd0xJQWtnQm1vc0FBQkJ2MzlNRFFzTElBc2dCbXNoQndzZ0NTQUdhaUlHSUFkcUlRUkJcXFxuQUNFSUEwQWdCaUFFUmcwQ0FrQUNRQ0FHTEFBQUlnZEJmMHdOQUNBR1FRRnFJUVlnQjBIL0FYRWhCd3dCQ3lBR0xRQUJRVDl4SVFJZ0IwXFxcbkVmY1NFTkFrQWdCMEZmU3cwQUlBMUJCblFnQW5JaEJ5QUdRUUpxSVFZTUFRc2dBa0VHZENBR0xRQUNRVDl4Y2lFQ0FrQWdCMEZ3VHcwQVxcXG5JQUlnRFVFTWRISWhCeUFHUVFOcUlRWU1BUXNnQWtFR2RDQUdMUUFEUVQ5eGNpQU5RUkowUVlDQThBQnhjaUlIUVlDQXhBQkdEUU1nQmtcXFxuRUVhaUVHQ3dKQUFrQWdDRUgvQVhFTkFDQUhFTWtCUlEwQVFZQ0F4QUFoQjBFQUlRZ01BUXRCQVNFSUN5QUhRWUNBeEFCR0RRQUxJQWNRXFxcbnlnRkZEUUVMUWMrSEFpRUhJQU1vQWd3Z0F5Z0NFQ0lHYTBFQ1NRMEJEQUlMUWMrRkFpRUhJQU1vQWd3Z0F5Z0NFQ0lHYTBFQlN3MEJDeVxcXG5BRFFRaHFJQVpCQWhEdUFpQURLQUlRSVFZTElBTW9BZ2dnQm1vZ0J6c0FBQ0FESUFaQkFtbzJBaEFNQVFzZ0EwRVVhaUFHRU1FQ0FrQUNcXFxuUUNBREtBSVlJZ2NOQUNBREtBSVVJUVlNQVFzZ0F5Z0NIQ0VHSUFOQkNHb2dBeWdDRkJEaEFTQURRUWhxSUFjUTRRRWdCa1VOQVFzZ0EwXFxcbkVJYWlBR0VPRUJDeUFNSUFGcklBVnFJUXdnQlNFQklBVWdDa2NOQUF3RkN3dEJBU0FDRUpvTkFBc1Fsd2dBQ3lBSklBc2dCaUFMUWV6OFxcXG56UUFRNUFzQUN5QUpJQXRCQUNBTVFmejh6UUFRNUFzQUN5QUFJQU1wQXdnM0FnQWdBRUVJYWlBRFFRaHFRUWhxS0FJQU5nSUFJQU5CSUdcXFxub2tBQXVjRFFJSGZ3SitJd0JCb0FGcklnWWtBQ0FHSUFNMkFsd2dCaUFDTmdKWUlBWkI0QUJxSUFaQjJBQnFFTVlJQWtBQ1FBSkFBa0FDXFxcblFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQmlnQ1lDSUhRU05HRFFBZ0JrSG9BR29vQWdBaENDQUdLQUprSVFrZ0IwRXZSZ1xcXG4wQklBZEJQMFlOQkNBSFFkd0FSZzBCSUFkQmdJREVBRWNOQWlBRktBSUlEUVVnQlVFY2FpZ0NBQ0VISUFVb0FoUWhDZ3dHQ3lBR1FlQUFcXFxuYWlBQlFTUVFwQTBhSUFBZ0JrSGdBR29nQlNBQ0lBTVFud0lNRGd0QkFDRUxJQU1oQnlBQ0lRb0RRQ0FHSUFjMkFtUWdCaUFLTmdKZ0FrXFxcbkFnQmtIZ0FHb1F5QWtpREVIY0FFWU5BQ0FNUVM5SERRTUxJQXRCQVdvaEN5QUdLQUprSVFjZ0JpZ0NZQ0VLREFBTEN5QUZLQUlBUlEwSVxcXG5JQVZCQkdvaEJ3d0pDd0pBSUF0QkFVc05BQ0FHUWRBQWFpQUZJQVVvQWpBaUJ4RC9CaUFCSUFZb0FsQWdCaWdDVkJDVERDQUJRUzhRM2dcXFxuUWdCa0VCT2dCZ0lBWkJ5QUJxSUFFZ0JDQUdRZUFBYWlBSElBa2dDQkJCSUFZb0Frd2hDaUFHS0FKSUlRc2dCa0hnQUdvZ0FVRWtFS1FOXFxcbkdpQUZLQUlzSVF3Z0JTZ0NLQ0VCSUFVb0FpUWhBeUFGS0FJZ0lRSWdCa0dZQVdvZ0JVSEVBR290QUFBNkFBQWdCa0dRQVdvZ0JVRThhaVxcXG5rQUFEY0RBQ0FHSUFVcEFEUTNBNGdCSUFBZ0JrSGdBR29nQkNBQ0lBTWdBU0FNSUFaQmlBRnFJQVV2QVJBZ0JVRVNhaThCQUNBSElBc2dcXFxuQ2hEMUFnd01Dd0pBSUFFb0FoZ2lDMFVOQUNBQlFSeHFLQUlBSVFnZ0JrRUFPZ0JvSUFZZ0F6WUNaQ0FHSUFJMkFtQWdCa0dJQVdvZ0JrXFxcbkhnQUdvUS9nWWdCa0dJQVdvUW1Rc2hEQ0FHUVlnQmFoQ0tEU0FNUlEwQUlBdEJBeUFJS0FJVUVRVUFDeUFHUWNBQWFpQUZJQVVvQWlBaVxcXG5DMEVCYWhEL0JpQUJJQVlvQWtBZ0JpZ0NSQkNURENBR1FUaHFJQVpCMkFCcUVOc0dBa0FnQmlnQ09DSU1SUTBBSUFZb0Fqd2hCeUFHUWVcXFxuQUFhaUFCUVNRUXBBMGFJQUFnQmtIZ0FHb2dEQ0FISUFRZ0N4QTVEQXdMSUFaQjRBQnFJQUZCSkJDa0RSb2dBQ0FHUWVBQWFpQUtJQWNnXFxcbkJDQUxFRGtNQ3dzZ0JTZ0NBRVVOQWlBRlFRUnFJUWNNQXdzZ0JrRW9haUFGUVJScUlBVkJER29vQWdCQnpJckJBQkNGQmlBR0tBSXNJUVxcXG5jZ0JpZ0NLQ0VLQ3lBQklBb2dCeENURENBQVFRQTJBZ2dnQUNBRktRSTBOd0kwSUFCQlBHb2dCVUU4YWlrQ0FEY0NBQ0FBUWNRQWFpQUZcXFxuUWNRQWFpMEFBRG9BQUNBQUlBVW9BaEEyQWhBZ0FDQUZLUUlBTndJQUlBQWdBU2tDQURjQ0ZDQUFRUnhxSUFGQkNHb29BZ0EyQWdBZ0JTXFxcbmtDSUNFTklBVXBBaWdoRGlBQUlBVW9BakEyQWpBZ0FDQU9Od0lvSUFBZ0RUY0NJQXdJQ3lBRktBSUlSUTBCSUFWQkRHb2hCd3NnQmtFd1xcXG5haUFGSUFjb0FnQVEvd1lnQmlnQ05DRUhJQVlvQWpBaENnd0JDeUFGUVJ4cUtBSUFJUWNnQlNnQ0ZDRUtDeUFCSUFvZ0J4Q1REQ0FHUWVcXFxuQUFhaUFCSUFRZ0JTZ0NJQ0lISUFJZ0F4Q3NBZ0pBSUFZb0FtQWlDa0VDUmcwQUlBWXBBbVFoRFNBQUlBWW9BbXcyQWd3Z0FDQU5Od0lFXFxcbklBQWdDallDQUNBQUlBYzJBaUFnQUNBRktRSTBOd0kwSUFCQlBHb2dCVUU4YWlrQ0FEY0NBQ0FBUWNRQWFpQUZRY1FBYWkwQUFEb0FBQ1xcXG5BQUlBVW9BaEEyQWhBZ0FDQUJLUUlBTndJVUlBQkJIR29nQVVFSWFpZ0NBRFlDQUNBQUlBVXBBaVEzQWlRZ0FDQUZLUUlzTndJc0RBVUxcXFxuSUFZdEFHUWhCeUFBUVFJMkFnQWdBQ0FIT2dBRUlBRVFpZzBNQkFzZ0JTZ0NDRVVOQVNBRlFReHFJUWNMSUFaQklHb2dCU0FIS0FJQUVQXFxcbjhHSUFZb0FpUWhCeUFHS0FJZ0lRb01BUXNnQlVFY2FpZ0NBQ0VISUFVb0FoUWhDZ3NnQVNBS0lBY1Frd3dnQVNBRUlBVW9BakFpQnhDQlxcXG5CQUpBSUFjZ0FTZ0NDRWNOQUNBR1FSaHFJQVVROVFjQ1FDQUdLQUlZSUFZb0Fod1E1QVZCL3dGeFFRSkhEUUFnQmtIWUFHb1FqQWtOQVFcXFxuc2dBVUV2RU40RUN5QUdRZUFBYWlBR1FkZ0FhaERHQ0FKQUFrQWdCaWdDWUVFdlJnMEFJQVpCQVRvQWlBRWdCa0VRYWlBQklBUWdCa0dJXFxcbkFXb2dCeUFDSUFNUVFTQUdLQUlVSVFvZ0JpZ0NFQ0VMREFFTElBWkI2QUJxS0FJQUlRb2dCaWdDWkNFTElBWkJBVG9BaUFFZ0JrRUlhaVxcXG5BQklBUWdCa0dJQVdvZ0J5QUxJQW9RUVNBR0tBSU1JUW9nQmlnQ0NDRUxDeUFHUWVBQWFpQUJRU1FRcEEwYUlBVW9BaXdoRENBRktBSW9cXFxuSVFFZ0JTZ0NKQ0VESUFVb0FpQWhBaUFHUVpnQmFpQUZRY1FBYWkwQUFEb0FBQ0FHUVpBQmFpQUZRVHhxS1FBQU53TUFJQVlnQlNrQU5EXFxcbmNEaUFFZ0FDQUdRZUFBYWlBRUlBSWdBeUFCSUF3Z0JrR0lBV29nQlM4QkVDQUZRUkpxTHdFQUlBY2dDeUFLRVBVQ0N5QUdRYUFCYWlRQVxcXG5DN01MQVF0L0l3QkJ3QUJySWdJa0FDQUJLQUlFSVFNZ0FTZ0NBQ0VFQWtBZ0FTMEFDQ0lGUVFaR0RRQWdBa0V2YWlBQlFSaHFLQUFBTmdcXFxuQUFJQUpCS0dvZ0FVRVJhaWtBQURjREFDQUNJQUZCQ1dvcEFBQTNBeUFMSUFKQkNXb2dBaWtESURjQUFDQUNRUkZxSUFKQktHb3BBd0EzXFxcbkFBQWdBa0VZYWlBQ1FTOXFLQUFBTmdBQUlBSWdCVG9BQ0NBQ0lBTTJBZ1FnQWlBRU5nSUFJQUlnQVMwQUhpSUdPZ0FlSUFJZ0FTMEFIU1xcXG5JSE9nQWRJQUlnQVMwQUhDSUlPZ0FjQWtBZ0NFRUNSdzBBQWtBZ0F3MEFRUUFoQXd3QkN3SkFBa0FDUUNBRlFRTkpEUUFEUUVFQUlRRUNcXFxuUUFOQUFrQWdCQ0FCYWkwQUFFRXZSdzBBUVFFaENRd0NDeUFESUFGQkFXb2lBVWNOQUF0QkFDRUpJQU1oQVFzQ1FBSkFJQUVPQWdFQUJRXFxcbnNnQkMwQUFFRXVSdzBFQ3lBRElBRWdDV29pQVVrTkFpQUVJQUZxSVFRZ0F5QUJheUlERFFBTFFRQWhBd3dDQ3dOQVFRQWhBUUpBQTBBQ1xcXG5RQ0FFSUFGcUxRQUFRUzlIRFFCQkFTRUpEQUlMSUFNZ0FVRUJhaUlCUncwQUMwRUFJUWtnQXlFQkN5QUJEUUlDUUNBRElBbFBEUUJCQVNcXFxuRUJEQUlMSUFRZ0NXb2hCQ0FESUFscklnTU5BQXRCQUNFRERBRUxJQUVnQTBHODY4MEFFSUlGQUFzZ0FpQUROZ0lFSUFJZ0JEWUNBQXNDXFxcblFBSkFBa0FnQjBIL0FYRkJBa1lOQUNBRElRRU1BUXNnQ0VFQlIwRi9JQWdiSVFFQ1FBSkFJQWdOQUNBRlFRWkdJZ2tOQVVFUUlBSkJHR1xcXG5vZ0NSc2hDa0VJSUFKQkVHb2dDUnNoQ3lBQlFmOEJjU0VNSUFGQmYwWWhCd05BQWtBQ1FDQUhEUUJCQUNFSlFRQWhDQ0FNRFFFTElBSVFcXFxuN3dFaENDQUdJUWtMUVFZaEFRSkFBa0FDUUFKQUFrQUNRQ0FGRGdZRUF3VUNBUUFFQzBFQ0lRRU1CQXNnQ3lnQ0FDQUtLQUlBSWdGQkFXXFxcbnBCQUNBQkcycEJBbW9oQVF3REN5QUxLQUlBUVFScUlRRU1BZ3NnQ3lnQ0FDQUtLQUlBSWdGQkFXcEJBQ0FCRzJwQkNHb2hBUXdCQ3lBTFxcXG5LQUlBUVFScUlRRUxBa0FnQXlBSUlBbHFJQUZxU3cwQUlBTWhBUXdFQ3lBQ1FTQnFJQUlRZ1FFQ1FDQUNMUUFrUVFwR0RRQWdBeUVCREFcXFxuUUxJQU1nQWlnQ0lDSUpheUVCSUFNZ0NVa05CQ0FDSUFFMkFnUWdBU0VEREFBTEN5QUJRZjhCY1NFSkFrQUNRQ0FCUVg5R0RRQWdDUTBCXFxcbkN3SkFBa0FnQVVGL1JnMEFJQWtOQVFzQ1FDQURJQUlRN3dFZ0JtcExEUUFnQXlFQkRBUUxBMEFnQWtFZ2FpQUNFSUVCQWtBZ0FpMEFKRVxcXG5FS1JnMEFJQU1oQVF3RkN5QURJQUlvQWlBaUNXc2hBU0FESUFsSkRRVWdBaUFCTmdJRUlBRWhBeUFCSUFJUTd3RWdCbXBMRFFBTUJBc0xcXFxuQWtBZ0F5QUdTdzBBSUFNaEFRd0RDd05BSUFKQklHb2dBaENCQVFKQUlBSXRBQ1JCQ2tZTkFDQURJUUVNQkFzZ0F5QUNLQUlnSWdscklRXFxcbkVnQXlBSlNRMEVJQUlnQVRZQ0JDQUJJUU1nQVNBR1RRMEREQUFMQzBFQUlRRWdBMFVOQVFOQUlBSkJJR29nQWhDQkFRSkFJQUl0QUNSQlxcXG5Da1lOQUNBRElRRU1Bd3NnQXlBQ0tBSWdJZ1pySVFrQ1FDQURJQVpQRFFBZ0NTRUJEQVFMSUFJZ0NUWUNCQ0FKSVFNZ0NVVU5BZ3dBQ3dcXFxuc2dBVUgvQVhFaENRSkFBa0FnQVVGL1JpSUJEUUFnQ1EwQkN3SkFBa0FnQVEwQUlBa05BUXNDUUNBRElBSVE3d0VnQm1wTERRQWdBeUVCXFxcbkRBTUxBMEFnQWtFZ2FpQUNFSUVCQWtBZ0FpMEFKRUVLUmcwQUlBTWhBUXdFQ3lBRElBSW9BaUFpQ1dzaEFTQURJQWxKRFFRZ0FpQUJOZ1xcXG5JRUlBRWhBeUFCSUFJUTd3RWdCbXBMRFFBTUF3c0xBa0FnQXlBR1N3MEFJQU1oQVF3Q0N3TkFJQUpCSUdvZ0FoQ0JBUUpBSUFJdEFDUkJcXFxuQ2tZTkFDQURJUUVNQXdzZ0F5QUNLQUlnSWdscklRRWdBeUFKU1EwRElBSWdBVFlDQkNBQklRTWdBU0FHU3cwQURBSUxDMEVBSVFFZ0EwXFxcblVOQUFOQUlBSkJJR29nQWhDQkFRSkFJQUl0QUNSQkNrWU5BQ0FESVFFTUFnc2dBeUFDS0FJZ0lnWnJJUWtDUUNBRElBWlBEUUFnQ1NFQlxcXG5EQU1MSUFJZ0NUWUNCQ0FKSVFNZ0NRMEFDd3NnQUNBQk5nSUVJQUFnQkRZQ0FDQUNRY0FBYWlRQUR3c2dBU0FEUWN6cnpRQVFnd1VBQy9cXFxud0xBUVYvSXdCQm9BRnJJZ01rQUFKQUFrQUNRQUpBQWtBQ1FDQUJJQUpCMndBUTJBY05BQ0FEUVRocUlBRWdBU0FDYWhDNUF5QURRZmdBXFxcbmFpQURLQUk0SWdFZ0F5Z0NQQ0FCR3lBRFFUaHFRUWhxS0FJQUVPZ0lBa0FnQXkwQWVFVU5BRUVCSVFFTUJBc2dBeUFES0FDQkFUWUNhQ1xcXG5BRElBTkJoQUZxS0FBQU5nQnJJQU5CK0FCcVFRaHFMUUFBSVFFZ0F5Z0NmQ0lDUlEwRElBTkJ5QUJxUVFocUlnUWdBeWdBYXpZQUFDQURcXFxuSUFNb0FtZzJBRTBnQXlBQk9nQk1JQU1nQWpZQ1NDQUVLQUlBSWdRTkFVRUFJUUVNQWdzQ1FDQUJJQUpCM1FBUTJRZEZEUUFnQXlBQklBXFxcbkpCQVNBQ1FYOXFRZXlHd1FBUXBnWWdBMEg0QUdvZ0F5Z0NBQ0FES0FJRUVFY0NRQUpBSUFNdEFIZ05BQ0FBSUFNcEFIazNBQUVnQUVFSlxcXG5haUFEUWZnQWFrRUphaWtBQURjQUFFRUNJUUVNQVFzZ0FDQURMUUI1T2dBQlFRTWhBUXNnQUNBQk9nQUFEQVVMSUFCQmd3ZzdBUUFNQkFcXFxuc2dBMEVBTmdLSUFTQURJQUkyQW9BQklBTWdBallDZUNBRElBUTJBbndnQXlBQ0lBUnFOZ0tFQVNBRFFmZ0Fha0VJYWlFRkFrQUNRQUpBXFxcbkEwQWdBMEV3YWlBRkVOMEVBa0FDUUFKQUFrQUNRQUpBQWtBZ0F5Z0NOQ0lCUVlDQXhBQkdEUUFnQVVFZ1NRMElJQUZCWFdvaUJrRWRUUVxcXG4wQkRBWUxJQU5CK0FCcVFTNGdBaUFFRU5NRklBTkJBVHNCbkFFZ0F5QUVOZ0tZQVNBRFFRQTJBcFFCSUFOQktHb2dBMEg0QUdvUStnSWdcXFxuQTBFZ2FpQURLQUlvSUFNb0FpeEJ1SWZCQUJDakNnSkFJQU1vQWlRaUJVVU5BQ0FES0FJZ0lRWU1BZ3NnQTBFWWFpQURRZmdBYWhENkFpXFxcbkFES0FJWUlnWkZEUU1nQXlnQ0hDSUZEUUZCQUNFRkRBSUxRUUVnQm5SQmhhQ0ExQU54UlEwRURBWUxJQU1nQmpZQ2FDQURJQVlnQldvMlxcXG5BbXdEUUNBRFFlZ0FhaEN0Q0NJQlFZQ0F4QUJHRFFNZ0F5QUJOZ0pZUWNpSHdRQWdBMEhZQUdvUTh3Y05BQXNMSUFOQkVHb2dCaUFGRUpcXFxuNEJJQU1vQWhCQkFrY05BUXNnQTBHREFXb2dBMEhJQUdwQkNHb29BZ0EyQUFBZ0FFRUFPZ0FBSUFNZ0F5a0RTRGNBZXlBQUlBTXBBSGczXFxcbkFBRWdBRUVJYWlBRFFmOEFhaWtBQURjQUFBd0ZDeUFEUWZnQWFpQUNJQVJCTGhDWUJTQURRZGdBYWlBRFFmZ0FhaEN6QXlBRElBTW9BbFxcXG5naUFTQURLQUpnSWdKQmYyb2lCRUVEZEdwQkFDQUVJQUpKR3pZQ2VDQURRZmdBYWtHY2lNRUFFSXNKSVFZQ1FDQUVJQUpQRFFBZ0JrVU5cXFxuQUNBRElBUTJBbUFnQkNFQ0N3SkFBa0FDUUFKQUFrQWdBa0VFU3cwQUlBTkJBRFlDY0NBRFFnUTNBMmdnQXlnQ1hDRUVJQU1nQVNBQ1FRXFxcbk4wYWlJQ05nS0VBU0FESUFFMkFvQUJJQU1nQkRZQ2ZDQURJQUUyQW5nQ1FBTkFBa0FnQVNBQ1J3MEFJQU5CK0FCcUVQZ0pJQU1vQW5BaVxcXG5CMFVOQlNBRElBZEJmMm9pQWpZQ2NDQURLQUpvSWdFZ0FrRUNkR29vQWdBaUJrRi9JQUpCQTNSMlN3MEdJQWRCQW5SQmZHb2hBaUFCSVFcXFxuUU1BZ3NnQXlBQlFRaHFOZ0tBQVNBRFFRaHFJQUVvQWdBZ0FTZ0NCQkNlQVFKQUlBTW9BZ2hCQVVZTkFDQURRZmdBYWhENENRd0dDeUFEXFxcbktBSU1JUUlDUUNBREtBSndJZ0VnQXlnQ2JFY05BQ0FEUWVnQWFpQUJFSW9KSUFNb0FuQWhBUXNnQXlnQ2FDQUJRUUowYWlBQ05nSUFJQVxcXG5NZ0F5Z0NjRUVCYWpZQ2NDQURLQUtFQVNFQ0lBTW9Bb0FCSVFFTUFBc0xBa0FEUUNBQ1JRMEJJQUpCZkdvaEFpQUVLQUlBSVFVZ0JFRUVcXFxuYWlFRUlBVkIvd0ZMRFFVTUFBc0xJQWRCQW5SQmZHb2hBa0VZSVFRRFFDQUNSUTBDSUFKQmZHb2hBaUFCS0FJQUlBUkJHSEYwSUFacUlRXFxcbllnQkVGNGFpRUVJQUZCQkdvaEFRd0FDd3NnQTBIWUFHb1F1d29NQXdzZ0EwSG9BR29RdkFvZ0FFRUJPZ0FBSUFBZ0JrRVlkQ0FHUVlEK1xcXG5BM0ZCQ0hSeUlBWkJDSFpCZ1A0RGNTQUdRUmgyY25JMkFBRU1CZ3RCb0lqQkFFRWJRYnlJd1FBUWlnWUFDeUFEUWVnQWFoQzhDZ3RCQXlcXFxuRUJEQVVMSUFGQnBYOXFRUVJKRFFFQ1FDQUJRWVIvYWc0RUFnRUJBZ0FMSUFGQklFY05BQXNMSUFCQmd3bzdBUUFMSUFOQnlBQnFFSW9OXFxcbkN5QURRVGhxRU44TERBTUxJQUJCQXpvQUFDQUFJQUU2QUFFZ0EwSElBR29RaWcwTUFRc2dBRUVET2dBQUlBQWdBVG9BQVFzZ0EwRTRhaFxcXG5EZkN3c2dBMEdnQVdva0FBdXVEQUlNZndGK0l3QkJrQU5ySWdRa0FDQUVRU0JxRU5BSUlBUkIxQUJxUWdBM0FnQWdCRUhNQUdwQ2dJQ0FcXFxuZ01BQU53SUFJQVJCeEFCcVFnQTNBZ0FnQkVHQWc4QUFOZ0pBSUFRZ0JDa0RLRGNET0NBRUlBUXBBeUEzQXpBZ0JFSFFBbXBCQUNrRG9LXFxcbmRBTndNQUlBUkJ5QUpxUVFBcEE1aW5RRGNEQUNBRVFiZ0Nha0VJYWtFQUtRT1FwMEEzQXdBZ0JFRUFLUU9JcDBBM0E3Z0NJQVJDZ0lDQVxcXG5nTUFBTndQWUFpQUVRZVFCYWlFRkFrQUNRQUpBQWtBRFFDQUVRUmhxSUFSQnVBSnFFTFFHQWtBZ0JDZ0NHQ0lHRFFBZ0FDQUFLQUlBSWdcXFxuWkJDQ0FHR3pZQ0FBSkFJQVpGRFFBZ0FDQVFRWUNVNjl3REVIVWFDd0pBSUFRb0Frd05BRUVDSVFZQ1FDQUJLQUlJSWdkRkRRQWdCMEVNXFxcbmJDQUJLQUlBYWtGMGFpSUdLQUlBSUFZb0FnaEJJeERSQnlFR0MwRUJJUWdnQmtFQ1JnMERJQVpCQVhGRkRRTUxJQVJCa0FGcUlBUkJNR1xcXG5wQk1CQ2tEUm9DUUNBQVFUaHFJQUlRalFVaUJrVU5BQ0FHSUFSQmtBRnFFTWtFRFFRTElBUkJ1QUpxSUFJUWxBVWdCRUhZQVdvZ0JFR1FcXFxuQVdwQk1CQ2tEUm9nQUVFSWFpQUVRYmdDYWlBQklBUkIyQUZxRU8wRVFRRWhDUXdFQ3lBRUtBSWNJUWNnQkNBR05nS0FBeUFFSUFjMkFvXFxcblFEQWtBZ0JFR0FBMnBCcUtmQUFCQ0RDMFVOQUNBQ0lBTVE4UXBGRFFFTElBUkIyQUZxSUFNZ0JpQUhFTjhLSUFRb0F0Z0JSUTBBSUFSQlxcXG40QUJxUVFocUlBUkIyQUZxUVFocUtBSUFOZ0lBSUFSQjhBQnFRUWhxSUFWQkNHb29BZ0EyQWdBZ0JDQUVLUVBZQVRjRFlDQUVJQVVwQWdcXFxuQTNBM0FnQkVHUUFXb2dCRUV3YWlBRVFlQUFhaUFFUWZBQWFoRG1CeUFFUVpBQmFoRE1Dd3dBQ3dzZ0FFRUlhaUFDSUFFUTBRUWhDUXdDXFxcbkN5QUVRWkFCYWhEWkNrRUFJUWtMUVFBaENBc0NRQUpBQWtBZ0FTMEFEQTBBSUFsRkRRSU1BUXNnQkVHNEFtb2dBaERkQXlBRVFZQUJhaVxcXG5BRVFiZ0NhaERHRFNBRVFiZ0NhaUFDRUpRRklBUkJ1QUpxUWJDbndBQkJBUkNwQXlBRVFiZ0Nha0VBSUFRUXFBSWdCRUc0QW1wQkFDQUVcXFxuRUpvRUlBUkJrQUZxSUFSQnVBSnFRY2dBRUtRTkdpQUVRUkJxUVFFZ0FTZ0NDQ0lLUVg5cUlBRW9BZ0FpQ3lBS1FiU253QUFRNUFZZ0FFXFxcbkVJYWlFTUlBUW9BaEFpQmlBRUtBSVVRUXhzYWlFTlFRQWhCd05BQWtBZ0JpQU5SdzBBSUFSQnBBRnFFT01NSUFSQmdBRnFFS2NPSUFSQlxcXG5nQUZxRUxrS0lBbEJBWEVOQWd3REN5QUhRUUZxSVFjZ0JrRUlhaUVGSUFZb0FnQWhEaUFHUVF4cUlnOGhCaUFPSUFVb0FnQkJJeERSQjBcXFxuVU5BQ0FFUWRnQmFpQUVRWkFCYWhDVUJRSkFJQVFvQW9nQklnWWdCMEYvYWswTkFDQUVRWUFEYWlBRUtBS0FBU0FIUWJDbndBQkJBUkJOXFxcbklBUkJCRFlDdEFJZ0JFRUNOZ0s4QWlBRVFjU253QUEyQXJnQ0lBUkNBVGNDeEFJZ0JDQUVRWUFEYWpZQ3NBSWdCQ0FFUWJBQ2FqWUN3QVxcXG5JZ0JFR2dBbW9nQkVHNEFtb1Fqd1FnQkVHQUEyb1E0d3dnQkVHNEFtcEJDR29nQkVHZ0FtcEJDR29vQWdBaUJqWUNBQ0FFSUFRcEE2QUNcXFxuSWhBM0E3Z0NJQVJCMkFGcUlCQ25JQVlRcVFNZ0JFRzRBbW9RNHd3Z0JFRzRBbW9nQkVIWUFXcEJ5QUFRcEEwYUlBUkJDR3BCQUNBSFFRXFxcbkZxSUFzZ0NrSGtwOEFBRU9RR0lBUkJnQU5xSUFRb0FnZ2dCQ2dDREVHd3A4QUFRUUVRVGlBTUlBUkJ1QUpxSUFSQmdBTnFFSVFESUFseVxcXG5JUWtnRHlFR0RBRUxDeUFISUFaQjFLZkFBQkNEQlFBTElBQkJrQUZxS0FJQUlRWWdBQ2dDaUFFaEJ5QUVRYmdDYWlBQVFRaHFFTklESUFcXFxuUkJvQUpxSUFRZ0J5QUdJQVFvQXJnQ0lBUW9Bc0FDRUlzRElBUkJ1QUpxRU9NTUlBUXRBS0FDUVFSR0RRQWdCQ0FFS1FPZ0FqY0RnQU1DXFxcblFFRUFLQUw0cGs5QkEwME5BQ0FFUWV3QmFrRUJOZ0lBSUFSQjVBRnFRUUUyQWdBZ0JFRU1OZ0tVQVNBRVFRRTJBdHdCSUFSQm1LakFBRFxcXG5ZQzJBRWdCQ0FFUVlBRGFqWUNrQUVnQkVFRE9nRFVBaUFFUVFRMkF0QUNJQVJDSURjRHlBSWdCRUtDZ0lDQUlEY0R3QUlnQkVFQ05nSzRcXFxuQWlBRUlBUkJ1QUpxTmdMb0FTQUVJQVJCa0FGcU5nTGdBU0FFUWRnQmFrRUVRYmlvd0FCQkFDQUVFSkVEQ3lBRVFZQURhaERnQndzZ0FFXFxcbkVBSUFBb0FnQWlCaUFHUVFoR0lnWWJOZ0lBQWtBZ0JnMEFJQUJCQUJCK0N3SkFJQWhGRFFBZ0JFRXdhaERaQ2dzZ0F4Q0ZDeUFDUVJScVxcXG5FT01NSUFFUTRnd2dCRUdRQTJva0FBdi9DZ0liZndGK0l3QkI4QUJySWdFa0FDQUJRVEJxSUFBb0FnQWlBaUFBS0FJSUlnTkI2cy9BQUVcXFxuRUpFRG9DUUFKQUFrQUNRQUpBQWtBZ0FTZ0NNQTBBSUFGQk9Hb29BZ0FoQkNBQlFUMXFMUUFBSVFVZ0FVSGtBR29vQWdBaEJpQUJLQUpnXFxcbklRY2dBVUUrYWkwQUFFSC9BWEVoQ0FOQUlBZ05Bd0pBQWtBQ1FBSkFJQVJGRFFBQ1FBSkFJQVFnQmtrTkFDQUVJQVpHRFFFTURBc2dCeVxcXG5BRWFpd0FBRUcvZjB3TkN3c2dCeUFFYWlJSlFYOXFMUUFBSWdyQUlndEJmMG9OQXdKQUlBbEJmbW9pQ2kwQUFDSUp3Q0lNUVVCSURRQWdcXFxuQ1VFZmNTRUtEQU1MQWtBZ0NrRi9haUlLTFFBQUlnbkFJZzFCUUVnTkFDQUpRUTl4SVFvTUFnc2dDa0YvYWkwQUFFRUhjVUVHZENBTlFUXFxcbjl4Y2lFS0RBRUxJQVZCL3dGeERRVU1CZ3NnQ2tFR2RDQU1RVDl4Y2lFS0N5QUtRUVowSUF0QlAzRnlJUW9MSUFWQi93RnhEUUlnQ2tHQVxcXG5nTVFBUmcwRFFYOGhCUUpBSUFwQmdBRkpEUUJCZmlFRklBcEJnQkJKRFFCQmZVRjhJQXBCZ0lBRVNSc2hCUXNnQlNBRWFpRUVRUUVoQlFcXFxud0FDd3NnQVVIRUFHb29BZ0FpRGlBQlFld0FhaWdDQUNJTGF5RVBJQUVvQW1naURDQU9haUVRSUFFb0FtQWlFU0FMYXlFU1FRQWdEbXNoXFxcbkV5QU9JQXNnRGlBTFN4c2lGQ0FPYXlFVklBRkIyQUJxS0FJQUlRb2dBVUhJQUdvb0FnQWhGaUFCUWRBQWFpZ0NBQ0VFSUFGQjVBQnFLQVxcXG5JQUlRY2dBVUhVQUdvb0FnQWhGeUFCS1FNNElSd0RRQ0FPSUE0Z0NpQU9JQXBKR3lBWFFYOUdJaGdiUVg5cUlRZ2dFeUFMSUFvZ0dCc2lcXFxuQ2lBT0lBb2dEa3NiYWlFWkEwQWdCQ0lhSUF0cklnUWdCMDhOQXdKQUFrQWdIQ0FSSUFScU1RQUFpRUlCZzFBTkFDQVNJQnBxSVFrZ0NDXFxcbkVLQWtBQ1FBSkFBa0FEUUFKQUlBcEJmMGNOQUNBUElCcHFJUW9nR1NFRklCVWhCaUFRSVFrRFFDQUZSUTBMSUFaRkRRVWdDaUFIVHcwR1xcXG5JQVZCZjJvaEJTQUdRWDlxSVFZZ0VTQUthaUVOSUFrdEFBQWhHeUFLUVFGcUlRb2dDVUVCYWlFSklCc2dEUzBBQUVZTkFBc2dHaUFXYXlcXFxuRUVJQmdOQ0NBV0lRb01DUXNnQ0NBTFR3MEJJQVFnQ21vZ0IwOE5BaUFKSUFwcUlRVWdEQ0FLYWlFR0lBcEJmMm9oQ2lBR0xRQUFJQVV0XFxcbkFBQkdEUUFMSUJvZ0Rtc2dDbXBCQVdvaEJDQVlEUVlnRXlBYWFpQUtha0VCYWlFRURBVUxJQW9nQzBIUXNzQUFFSUVGQUFzZ0dpQUxheVxcXG5BS2FpQUhRZUN5d0FBUWdRVUFDeUFVSUF0QjhMTEFBQkNCQlFBTElBb2dCMEdBczhBQUVJRUZBQXNnR0EwQkN3c2dDeUVLREFBTEN5QUVcXFxuUVFscUlnWWhDZ0pBQTBBZ0FVRW9haUFBSUFwQnBOSEFBQkNoQndKQUFrQWdBU2dDTEVVTkFDQUJLQUlvTFFBQVFWQnFRZjhCY1VFS1NRXFxcbjBCQ3lBQlFTQnFJQUFnQ2tHMDBjQUFFS0VIUVFBaEJ5QUJLQUlnSUFFb0FpUkI4OC9BQUVFSUVNa0dSUTBFSUFwQkNHb2lDU0VGQTBBZ1xcXG5BVUVZYWlBQUlBVkJ4TkhBQUJDaEJ3SkFBa0FnQVNnQ0hFVU5BQ0FCS0FJWUxRQUFRVkJxUWY4QmNVRUtTUTBCQ3lBRklBTkpEUVlnQVVcXFxuRVFhaUFBSUFZZ0NrSFUwY0FBRVBJRklBRkJNR29nQVNnQ0VDQUJLQUlVRUlJQ0lBRXRBREFOQmlBQktBSTBJUVlnQVVFSWFpQUFJQWtnXFxcbkJVSGswY0FBRVBJRklBRkJNR29nQVNnQ0NDQUJLQUlNRUlJQ0lBRXRBREFOQmlBQktBSTBJUWNnQXlBRVNRMEhBa0FnQkVVTkFBSkFJQVxcXG5NZ0JFc05BQ0FESUFSR0RRRU1CZ3NnQWlBRWFpd0FBRUZBU0EwRkN5QUFJQVEyQWdnTUJ3c2dCVUVCYWlFRkRBQUxDeUFLUVFGcUlRb01cXFxuQUFzTFFlQzF3QUJCTUVHUXRzQUFFSU1IQUF0QkFDRUhDMEVBSVFZTElBRkJNR3BCQ0dvZ0FFRUlhaWdDQURZQ0FDQUJJQUFwQWdBM0F6XFxcbkFnQVNBQlFUQnFFUE1LSUFFcEF3QWhIRUVVRUtzSElnb2dCellDRUNBS0lBWTJBZ3dnQ2lBY053SUVJQXBCQURZQ0FDQUJRZkFBYWlRQVxcXG5JQW9QQ3lBSElBWkJBQ0FFUWFpM3dBQVE1QXNBQzVJTEFnZC9BWDRqQUVIZ0FHc2lCeVFBSUFjZ0JqWUNUQ0FISUFVMkFrZ2dBeTBBQUNcXFxuRUlJQUpCL3dGeElRa0RRQ0FCS0FJSUlRb0RRQ0FIS0FKTUlRc2dCeWdDU0NFTUlBZEIwQUJxSUFkQnlBQnFFTWNEQWtBQ1FBSkFBa0FDXFxcblFDQUhLQUpRSWdaQmdJREVBRVlOQUNBSEtBSllJUVVnQnlnQ1ZDRU5Ba0FDUUNBR1FTTkdEUUFnQmtFdlJnMERBa0FnQmtFL1JnMEFJQVxcXG5aQjNBQkhEUWNnQ1VFQ1JnMEhJQUV0QUNCQi93RnhRUUpHRFFjZ0FTZ0NHQ0lHUlEwRklBWkJBQ0FCS0FJY0tBSVVFUVVBREFVTElBRXRcXFxuQUNBTkJnd0JDeUFCTFFBZ0RRVUxJQWNnQ3pZQ1RDQUhJQXcyQWtnTElBZEJPR29nQVNBS0lBRW9BZ2hCbEl6QkFCRDNCVUVBSVEwZ0J5XFxcbmdDUENFRklBY29BamdoQmd3Q0N5QUJMUUFnUVFKR0RRSUxJQUZCTHhEZUJDQUhRY0FBYWlBQklBb2dBU2dDQ0VGL2FrR0VqTUVBRVBjRlxcXG5RUUVoRFNBSEtBSkVJUVVnQnlnQ1FDRUdDd0pBQWtBQ1FBSkFJQVlnQlVHa2pNRUFRUUlRcGdvTkFDQUdJQVZCcG96QkFFRUdFS1lLRFFcXFxuQWdCaUFGUWF5TXdRQkJCaENtQ2cwQUlBWWdCVUd5ak1FQVFRWVFwZ29OQUNBR0lBVkJ1SXpCQUVFR0VLWUtEUUFnQmlBRlFiNk13UUJCXFxcbkJCQ21DZzBBSUFZZ0JVSENqTUVBUVFRUXBnb05BQ0FHSUFWQnhvekJBRUVFRUtZS0RRQWdCaUFGUWNxTXdRQkJCQkNtQ2cwQUFrQUNRQ1xcXG5BR0lBVkJ6b3pCQUVFQkVLWUtEUUFnQmlBRlFjK013UUJCQXhDbUNnMEFJQVlnQlVIU2pNRUFRUU1RcGdvTkFDQUpEUUVnQmlBRkVOUUtcXFxuUlEwQklBY2dCallDVUNBSElBWWdCV28yQWxRQ1FDQUhRZEFBYWhDdENDSUdRWUNBeEFCR0RRQWdBU0FLRUtBR0lBRWdCaERlQkNBQlFUXFxcbm9RM2dRZ0RVVU5BQ0FCUVM4UTNnUUxJQWhCL3dGeFJRMEJBa0FnQVNnQ0dDSUdSUTBBSUFaQkJTQUJLQUljS0FJVUVRVUFDMEVBSVFnZ1xcXG5BMEVBT2dBQUlBME5DQXdFQ3lBQklBb1FvQVlnQVNnQ0FDQUJLQUlJUVM4UTJRY05BQ0FCUVM4UTNnUUxJQTBOQmd3QkN5QUJJQW9Rb0FcXFxuWUNRQ0FCS0FJQUlBRW9BZ2hCTHhEWkIwVU5BQ0FIUVRCcUlBRW9BZ0FpQlNBQktBSUlJZ1lnQmtGL2FrR0lqY0VBRUxFR0lBZEJLR29nXFxcbkJ5Z0NNQ0FIS0FJMEVJOElJQWNvQWloQkFVY05BQ0FIS0FJc0lnc2dCRWtOQUNBSFFTQnFJQXNnQlNBR1FaaU53UUFRK1FVQ1FDQUhLQVxcXG5Ja0lnWkZEUUFDUUFKQUlBY29BaUFpQlMwQUFDSU1RVjFxSWd0QkhFc05BRUVCSUF0MFFZR2dnSUFCY1EwQkN5QU1RZHdBUncwQkN5QUhcXFxuUVJocVFRRWdCU0FHUVl5UHdRQVErUVVnQnlnQ0dDQUhLQUljRU9VRURRRUxJQUVRdmdRTElBRWdBaUFFRUxNR0lBMUZEUUFnQVNnQ0FDXFxcbkFCS0FJSVFTOFEyUWNOQlNBQlFTOFEzZ1FNQlFzZ0FrSC9BWEVOQVFzZ0FTZ0NDQ0VHSUFFb0FnQWhCUUpBQWtBQ1FBSkFJQVJGRFFBQ1xcXG5RQUpBSUFZZ0JFc05BQ0FHSUFSR0RRRU1CUXNnQlNBRWFpd0FBRUZBU0EwRUN5QUdJQVJKRFFJZ0IwRVFhaUFHSUFScklnWkJBQkRWQkNcXFxuQUhLQUlVSVEwZ0J5Z0NFQ0VMSUFFZ0JEWUNDQ0FMSUFVZ0JHb2dCaENrRFNFRkRBRUxJQWRCQ0dvZ0FTZ0NCQ0lOUVFBUTFRUWdCeWtEXFxcbkNDRU9JQUZCQURZQ0NDQUJJQTQzQWdBTElBY2dCallDV0NBSElBMDJBbFFnQnlBRk5nSlFJQUZCTHhEZUJDQUhJQVVnQmtFdkVMUURJQVxcXG5FZ0J5Z0NBQ0FIS0FJRUVKTU1JQWRCMEFCcUVJb05EQUlMSUFRZ0JoQ0FCUUFMUWZTRXdRQkJLMEdnaGNFQUVJTUhBQXNnQUNBSEtRTklcXFxuTndNQUlBZEI0QUJxSkFBUEN5QUJJQVlnQjBISUFHb1EyQUVDUUNBQkxRQWdRUUpHRFFBZ0IwSDRqTUVBTmdKWUlBY2dCVFlDVkNBSElBXFxcbjAyQWxBZ0FTQUhRZEFBYWhEbUJRd0JDd0pBSUFsQkFrY05BQ0FIUWVpTXdRQTJBbGdnQnlBRk5nSlVJQWNnRFRZQ1VDQUJJQWRCMEFCcVxcXG5FT1lGREFFTElBZEIySXpCQURZQ1dDQUhJQVUyQWxRZ0J5QU5OZ0pRSUFFZ0IwSFFBR29RNWdVTUFBc0xDN2tLQVFkL0l3QkJvQUpySWdcXFxuUWtBQ0FFUWRBQWFpQURRUUFRMVFRZ0JFSDBBR29nQVVFTWFpZ0NBQ0lGTmdJQUlBUkJBRG9BZUNBRVFRQTJBbUFnQkNBQktBSUlJZ1kyXFxcbkFuQWdCQ0FCS1FJQU53Tm9JQVFnQVNnQ0VEWUNaQ0FFSUFRcEExQTNBMWdnQkVISUFHb2dBaUFESUFZZ0JSRFRBeUFFUWNBQWFpQUVRZFxcXG5nQWFpQUVLQUpJSWdFZ0JDZ0NUQ0lERUxvQ0FrQUNRQUpBQWtBQ1FBSkFJQVFvQWtBaUJrVU5BQ0FFS0FKRUlRY2dCRUdBQVdvZ0JFSFlcXFxuQUdwQkpCQ2tEUm9nQkNBSE5nS3NBU0FFSUFZMkFxZ0JJQVFvQW9BQklBUW9Bb2dCSWdnUTVBVWhBU0FFUVlBQmFrRTZFTjRFQWtBQ1FBXFxcbkpBQWtBZ0FVSC9BWEVpQ1E0REFBRUNBQXNDUUNBRUtBS1lBU0lCUlEwQUlBUkJuQUZxS0FJQUlRTWdCRUdvQVdwQmdJckJBRUVDRUkwSlxcXG5EUUFnQVVFRUlBTW9BaFFSQlFBTFFRQWhBUUpBSUFRb0Fvd0JJZ05GRFFBZ0JFRUlhaUFERVBVSElBUWdCQ2tEQ0RjRDRBRWdBMEVBSUFcXFxuUkI0QUZxUVlTS3dRQVFtQXNiSVFFTElBUkJBRFlDaUFFZ0JFSGdBV29nQkVHQUFXcEJKQkNrRFJvZ0FDQUVRZUFCYWlBR0lBY2dDU0FCXFxcbkVDOE1DQXRCQUNFQ0lBY2hBU0FHSVFNQ1FBTkFJQVFnQVRZQzVBRWdCQ0FETmdMZ0FRSkFJQVJCNEFGcUVNZ0pJZ1ZCM0FCR0RRQWdCVVxcXG5FdlJ3MENDeUFDUVFGcUlRSWdCQ2dDNUFFaEFTQUVLQUxnQVNFRERBQUxDeUFDUVFGTERRWWdCQ2dDakFFaUFnMEJEQVlMSUFSQnNBRnFcXFxuSUFSQmdBRnFRU1FRcEEwYUlBUWdCellDM0FFZ0JDQUdOZ0xZQVNBRVFUaHFJQVJCMkFGcUVOc0dJQVFvQWpnaUFRMENJQVFvQXJnQklRXFxcbkVnQkVFd2FpQUVRZGdCYWtFdkVPd0dBa0FDUUNBRUtBSXdJZ05GRFFBZ0JDZ0NOQ0VDSUFSQnNBRnFRUzhRM2dRZ0JFRUFPZ0RnQVNBRVxcXG5RU2hxSUFSQnNBRnFJQWtnQkVIZ0FXb2dBU0FESUFJUVFTQUVLQUlzSVFNZ0JDZ0NLQ0VDREFFTElBUkJJR29nQkVHd0FXb2dCaUFIRUpcXFxua0RJQVFvQWlRaEF5QUVLQUlnSVFJTElBUkI0QUZxSUFSQnNBRnFRU1FRcEEwYUlBUkJBRG9BaUFJZ0FDQUVRZUFCYWlBSklBZ2dBU0FCXFxcbklBRWdCRUdJQW1wQkFDQUVJQUVnQWlBREVQVUNEQVlMSUFSQkdHb2dBaEQxQnlBRUlBUXBBeGczQTdBQklBUkJFR29nQkVHQUFXb2dDRVxcXG5Id2ljRUFFSVVHSUFRZ0JDa0RFRGNENEFFZ0JFR3dBV29nQkVIZ0FXb1FtQXRGRFFRZ0JFRUFOZ0tJQVNBRVFlQUJhaUFFUVlBQmFrRWtcXFxuRUtRTkdpQUFJQVJCNEFGcUlBWWdCeUFKSUFJUVBBd0ZDd0pBSUFRb0FtUWlBZzBBUVFZaEJRd0RDeUFFSUFNMkF1UUJJQVFnQVRZQzRBXFxcbkZCSXlBRVFlQUJhaERLQ1EwQlFRY2hCU0FDRUxZSERRSWdCQ0FDRVBVSEFrQWdCQ2dDQUNBRUtBSUVFT1FGUWY4QmNTSUZSUTBBSUFSQlxcXG40QUZxSUFSQjJBQnFRU1FRcEEwYUlBQWdCRUhnQVdvZ0FTQURJQVVnQWhBOERBVUxJQVJCNEFGcUlBUkIyQUJxUVNRUXBBMGFJQUFnQkVcXFxuSGdBV29nQVNBRFFRQWdBaEF2REFRTElBUW9BandoQXlBRVFlQUJhaUFFUWJBQmFrRWtFS1FOR2lBQUlBUkI0QUZxSUFFZ0F5QUpJQWdRXFxcbk9Rd0RDeUFFUWVBQmFpQUVRZGdBYWtFa0VLUU5HaUFBSUFSQjRBRnFJQUlnQVNBREVKOENEQUlMSUFCQkFqWUNBQ0FBSUFVNkFBUWdCRVxcXG5IWUFHb1FpZzBNQVFzQ1FDQUVLQUtZQVNJQ1JRMEFJQVJCbkFGcUtBSUFJUW9nQkVFQU9nRG9BU0FFSUFjMkF1UUJJQVFnQmpZQzRBRWdcXFxuQkVHd0FXb2dCRUhnQVdvUS9nWWdCRUd3QVdvUW1Rc2hCU0FFUWJBQmFoQ0tEU0FGUlEwQUlBSkJBeUFLS0FJVUVRVUFDeUFFUWVBQmFpXFxcbkFFUVlBQmFrRWtFS1FOR2lBQUlBUkI0QUZxSUFNZ0FTQUpJQWdRT1FzZ0JFR2dBbW9rQUF2akNRRUZmeU1BUWZBQWF5SUZKQUFnQlNBRFxcXG5OZ0lNSUFVZ0FqWUNDQUpBQWtBQ1FDQUJRWUVDU1EwQVFZQUNJUVlDUUNBQUxBQ0FBa0cvZjBvTkFFSC9BU0VHSUFBc0FQOEJRYjkvU2dcXFxuMEFRZjRCSVFZZ0FDd0EvZ0ZCdjM5S0RRQkIvUUVoQmdzZ0FDQUdhaXdBQUVHL2Ywd05BU0FGSUFZMkFoUWdCU0FBTmdJUVFRVWhCa0hCXFxcbnFNNEFJUWNNQWdzZ0JTQUJOZ0lVSUFVZ0FEWUNFRUVBSVFaQi9QL05BQ0VIREFFTElBQWdBVUVBSUFZZ0JCRGtDd0FMSUFVZ0JqWUNIQ1xcXG5BRklBYzJBaGdDUUFKQUFrQUNRQ0FDSUFGTElnWU5BQ0FESUFGTERRQUNRQUpBQWtBQ1FDQUNJQU5MRFFBQ1FBSkFJQUpGRFFBQ1FDQUNcXFxuSUFGSkRRQWdBaUFCUmcwQkRBSUxJQUFnQW1vc0FBQkJRRWdOQVFzZ0F5RUNDeUFGSUFJMkFpQWdBU0VEQWtBZ0FpQUJUdzBBSUFKQkFXXFxcbm9pQmtFQUlBSkJmV29pQXlBRElBSkxHeUlEU1EwR0FrQWdBeUFHUmcwQUlBQWdCbW9nQUNBRGFpSUlheUVHQWtBZ0FDQUNhaUlKTEFBQVxcXG5RYjkvVEEwQUlBWkJmMm9oQnd3QkN5QURJQUpHRFFBQ1FDQUpRWDlxSWdJc0FBQkJ2MzlNRFFBZ0JrRithaUVIREFFTElBZ2dBa1lOQUFcXFxuSkFJQUpCZjJvaUFpd0FBRUcvZjB3TkFDQUdRWDFxSVFjTUFRc2dDQ0FDUmcwQUFrQWdBa0YvYWlJQ0xBQUFRYjkvVEEwQUlBWkJmR29oXFxcbkJ3d0JDeUFJSUFKR0RRQWdCa0Y3YWlFSEN5QUhJQU5xSVFNTEFrQWdBMFVOQUFKQUFrQWdBeUFCU1EwQUlBRWdBMFlOQVF3S0N5QUFJQVxcXG5OcUxBQUFRYjkvVEEwSkN5QUJJQU5ySVFFTElBRkZEUVlDUUFKQUlBQWdBMm9pQWl3QUFDSUJRWDlLRFFBZ0FpMEFBVUUvY1NFQUlBRkJcXFxuSDNFaEJpQUJRVjlMRFFFZ0JrRUdkQ0FBY2lFQ0RBUUxJQVVnQVVIL0FYRTJBaVJCQVNFQkRBUUxJQUJCQm5RZ0FpMEFBa0UvY1hJaEFDXFxcbkFCUVhCUERRRWdBQ0FHUVF4MGNpRUNEQUlMSUFWQjVBQnFRYTRDTmdJQUlBVkIzQUJxUWE0Q05nSUFJQVZCeUFCcVFReHFRUWcyQWdBZ1xcXG5CVUV3YWtFTWFrSUVOd0lBSUFWQkJEWUNOQ0FGUWFTcHpnQTJBakFnQlVFSU5nSk1JQVVnQlVISUFHbzJBamdnQlNBRlFSaHFOZ0pnSUFcXFxuVWdCVUVRYWpZQ1dDQUZJQVZCREdvMkFsQWdCU0FGUVFocU5nSklJQVZCTUdvZ0JCQ1lDQUFMSUFCQkJuUWdBaTBBQTBFL2NYSWdCa0VTXFxcbmRFR0FnUEFBY1hJaUFrR0FnTVFBUmcwRUN5QUZJQUkyQWlSQkFTRUJJQUpCZ0FGSkRRQkJBaUVCSUFKQi93OU5EUUJCQTBFRUlBSkJnSVxcXG5BRVNSc2hBUXNnQlNBRE5nSW9JQVVnQVNBRGFqWUNMQ0FGUVRCcVFReHFRZ1UzQWdBZ0JVSHNBR3BCcmdJMkFnQWdCVUhrQUdwQnJnSTJcXFxuQWdBZ0JVSGNBR3BCc2dJMkFnQWdCVUhJQUdwQkRHcEJzd0kyQWdBZ0JVRUZOZ0kwSUFWQitLbk9BRFlDTUNBRlFRZzJBa3dnQlNBRlFjXFxcbmdBYWpZQ09DQUZJQVZCR0dvMkFtZ2dCU0FGUVJCcU5nSmdJQVVnQlVFb2FqWUNXQ0FGSUFWQkpHbzJBbEFnQlNBRlFTQnFOZ0pJSUFWQlxcXG5NR29nQkJDWUNBQUxJQVVnQWlBRElBWWJOZ0lvSUFWQk1HcEJER3BDQXpjQ0FDQUZRZHdBYWtHdUFqWUNBQ0FGUWNnQWFrRU1ha0d1QWpcXFxuWUNBQ0FGUVFNMkFqUWdCVUhvcU00QU5nSXdJQVZCQ0RZQ1RDQUZJQVZCeUFCcU5nSTRJQVVnQlVFWWFqWUNXQ0FGSUFWQkVHbzJBbEFnXFxcbkJTQUZRU2hxTmdKSUlBVkJNR29nQkJDWUNBQUxJQU1nQmtHOHFzNEFFSVFGQUF0QnZaVE9BRUVySUFRUWd3Y0FDeUFBSUFFZ0F5QUJJQVxcXG5RUTVBc0FDK3NKQVFoL0l3QkI0QUJySWdRa0FDQUVJQUkyQWhRZ0JDQUJOZ0lRQWtBQ1FDQURRZjhCY1NJRlJRMEFJQVFnQVRZQ0tDQUVcXFxuSUFJMkFpd2dBaUFCYXlFR1FRQWhCeUFGUVFKR0lRaEJBQ0VKUVFBaENrRUFJUXNEUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBXFxcblJCS0dvUXJRZ2lBa0dsZjJvT0F3SUJBd0FMSUFKQmQycEJBa2tOQnlBQ1FRMUdEUWNnQWtFNlJnMERJQUpCSTBZTkJpQUNRUzlHRFFZZ1xcXG5Ba0dBZ01RQVJnMEdJQUpCUDBjTkJRd0dDeUFJUlEwRkRBTUxRUUVoQ3lBSlFRRnFJUWxCQVNFRkRBWUxRUUVoQlNBSlFRRnFJUWxCQUNcXFxuRUxEQVVMSUF0QkFYRkZEUUlMUVFFaEJTQUpRUUZxSVFrTUF3dEJBU0VGSUFsQkFXb2hDU0FDUVlBQlNRMENRUUloQlNBQ1FZQVFTUTBDXFxcblFRTkJCQ0FDUVlDQUJFa2JJUVVNQWdzQ1FBSkFJQXBCQVhFTkFDQUVJQWsyQWl3Z0JDQUVRUkJxTmdJb0EwQWdCRUVvYWhDSkNrR0FnTVxcXG5RQVJ3MEFDeUFFUVFocUlBRWdCaUFIUWNpTHdRQVFzUVlnQkNnQ0RDRUNJQVFvQWdnaEJRd0JDeUFFUWNnQWFpQUVRUkJxSUFrUTZ3WWdcXFxuQkNnQ1VDRUNJQVFvQWtnaEJRc0NRQUpBQWtBQ1FDQURRZjhCY1VGL2FnNENBQUVDQ3lBQ0RRRWdBRUVET3dFQURBSUxJQVJCS0dvZ0JTXFxcbkFDRUp3QkFrQWdCQzBBS0NJQ1FRTkdEUUFnQUNBRUtRRXFOd0VDSUFCQkNtb2dCRUVvYWtFS2Fpa0JBRGNCQUNBQVFSSnFJQVJCS0dwQlxcXG5FbW92QVFBN0FRQWdCQzBBS1NFRklBQWdCQ2tERURjQ0ZDQUFJQVU2QUFFZ0FDQUNPZ0FBREFJTElBUXRBQ2toQWlBQVFRTTZBQUFnQUNcXFxuQUNPZ0FCREFFTElBUkJLR29nQlNBQ0VENENRQ0FFTFFBb0lnSkJBMFlOQUNBQUlBUXBBU28zQVFJZ0FFRUthaUFFUVNocVFRcHFLUUVBXFxcbk53RUFJQUJCRW1vZ0JFRW9ha0VTYWk4QkFEc0JBQ0FFTFFBcElRVWdBQ0FFS1FNUU53SVVJQUFnQlRvQUFTQUFJQUk2QUFBZ0NrRUJjVVxcXG5VTkJpQUVRY2dBYWhDS0RRd0dDeUFFTFFBcElRSWdBRUVET2dBQUlBQWdBam9BQVFzZ0NrRUJjVVVOQkNBRVFjZ0FhaENLRFF3RUMwRUJcXFxuSVFwQkFTRUZDeUFGSUFkcUlRY01BQXNMSUFSQktHb2dBU0FDRUlzQklBUXRBQ2doQWdKQUFrQUNRQ0FFTFFBMFFRSkdEUUFnQkVFWWFrXFxcbkVJYWlJRklBUkJLR3BCQ0dvb0FBQTJBQUFnQkNBRUtRQXBOd0FaSUFRZ0Fqb0FHQ0FFS0FJNElRY2dCQ2dDUENFSklBUkJLR29nQkNnQ1xcXG5HQ0FGS0FJQUVENGdCQzBBS0NJQ1FRTkdEUUVnQkVISUFHcEJDbW9nQkVFb2FrRUthaWtCQURjQkFDQUVRY2dBYWtFU2FpQUVRU2hxUVJcXFxuSnFMd0VBT3dFQUlBUWdCQ2tCS2pjQlNpQUVJQVF0QUNrNkFFa2dCQ0FDT2dCSUFrQUNRQ0FDRFFBZ0JDQUVRY2dBYWtFRWNqWUNLQ0FFXFxcblFTaHFFSmNMRFFFZ0JDMEFTQ0VDQ3lBRVFjUUFha0VDYWlBRVFjZ0Fha0VCY2lJRlFRSnFMUUFBT2dBQUlBUWdCUzhBQURzQlJDQUVLQVxcXG5KWUlRVWdCQ2dDVkNFTElBUW9BbEFoQ2lBRUtBSk1JUWdNQXd0QkFDRUNJQVJCQUVFQUVOVUVJQVFvQWdRaENpQUVLQUlBSVFnZ0JFSElcXFxuQUdvUXZndEJBQ0VMREFJTElBQkJBem9BQUNBQUlBSTZBQUVNQWdzZ0JDMEFLU0VDSUFCQkF6b0FBQ0FBSUFJNkFBRWdCRUVZYWhDS0RRXFxcbndCQ3lBQUlBUXZBVVE3QUFFZ0FDQUpOZ0lZSUFBZ0J6WUNGQ0FBSUFVMkFoQWdBQ0FMTmdBTUlBQWdDallBQ0NBQUlBZzJBQVFnQUNBQ1xcXG5PZ0FBSUFCQkEyb2dCRUhHQUdvdEFBQTZBQUFnQkVFWWFoQ0tEUXNnQkVIZ0FHb2tBQXVYQ2dJRmZ3TitJd0JCMEFGcklnTWtBQUpBQWtcXFxuQWdBU2dDQUNJRVFRaHhEUUFnQkVFUWFpSUZJQVJKRFFBZ0FTQUZJQUVvQWdBaUJpQUdJQVJHSWdRYk5nSUFJQVFOQVFzZ0FVRUFJQWhCXFxcbmdKVHIzQU1RYmhvTElBTWdBVFlDUkFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFGQk9Hb2dBaENOQlNJRURRQWdBMFxcXG5FZ2FpQUJLQUtJQVNBQlFaQUJhaWdDQUJDT0F5QURRUmhxSUFNb0FpQWdBeWdDSkVIa3FNQUFFSThLSUFNb0Fod2hCaUFES0FJWUlRY2dcXFxuQTBHSUFXb2dBa0VBSUFNUVp5QURRYkFCYWlBRFFZZ0JhaENjQ0VFQ0lRRWdBeTBBdkFFaUJFRUNSZzBCSUFOQnlBQnFRUWhxSUFOQnNBXFxcbkZxUVFocUtBSUFJZ1UyQWdBZ0EwSElBR3BCRDJvZ0EwR3dBV3BCRDJvdEFBQTZBQUFnQXlBREtRT3dBU0lJTndOSUlBTWdBeThBdlFFN1xcXG5BRlVnQXlBRU9nQlVBa0FnQlVVTkFDQUZRUXhzSUFpbmFrRjBhaUlCS0FJQUlBRW9BZ2hCSXhEUkJ5RUJDd0pBSUFGQkFrWU5BQ0FCUVFcXFxuRnhEUU1MSUFOQnNBRnFJQU5CeUFCcUlBY2dCaENkQlNBRFFZZ0JhaUFESUFNb0FyQUJJQU1vQXJnQkVOZ0NJQU1vQXBBQklnRkIvdi8vXFxcbi93TnhRWUNVNjl3RFJ3MERJQUJCZ0pUcjNBTTJBZ2dNQkFzZ0EwSElBR29nQkVFZ2FpZ0NBQ0lGSUFVZ0JFRW9haWdDQUVFY2JHb1ErQVxcXG5NZ0EwSElBR3BCZ0tMQUFFRUlFUFVMRFFRZ0EwRTRhaUFEUWNnQWFoQ0VDQ0FEUVlnQmFpQUNJQU1vQWpnZ0F5Z0NQQkJuSUFOQnNBRnFcXFxuSUFOQmlBRnFFSndJQWtBZ0F5MEF2QUVpQkVFQ1JnMEFJQU5CK0FCcVFRaHFJQU5Cc0FGcVFRaHFLQUlBTmdJQUlBTkIrQUJxUVE5cUlBXFxcbk5Cc0FGcVFROXFMUUFBT2dBQUlBTWdBeWtEc0FFM0EzZ2dBeUFETHdDOUFUc0FoUUVnQXlBRU9nQ0VBU0FEUVRCcUlBRW9Bb2dCSUFGQlxcXG5rQUZxS0FJQUVJNERJQU5CS0dvZ0F5Z0NNQ0FES0FJMFFkU293QUFRandvZ0EwSG9BR29nQTBINEFHb2dBeWdDS0NBREtBSXNFSjBGSUFcXFxuTkIrQUJxRU9JTUlBTW9BbXdoQVNBREtBSm9JZ1pGSVFVZ0EwSG9BR29oQkNBR0RRY01CZ3NnQUVHQWxPdmNBellDQ0F3SEN5QUFRWUNVXFxcbjY5d0ROZ0lJREFjTElBQkJnSlRyM0FNMkFnZ2dBMEhJQUdvUTRnd01CZ3NnQXlrRGlBRWhDQ0FEUVFocUVOQUlJQU1wQXdnaENTQURLUVxcXG5NUUlRb2dBRUV3YWlBQ0VJZ0ZJQUFnQ2pjQ0tDQUFJQWszQWlBZ0FFRUFOZ0ljSUFCQ0FEY0NGQ0FBUVlDRHdBQTJBaEFnQUNBQk5nSUlcXFxuSUFBZ0NEY0RBQXNnQTBHd0FXb1E0d3dnQTBISUFHb1E0Z3dnQTBHSUFXb1Fvd3NNQmdzZ0EwRUFOZ0pvSUFNZ0FVR0lBV29pQVRZQ2JFXFxcbkVCSVFVTElBRWhCQXNnQTBHSUFXb2dBeUFFS0FJQUlBRWdBMEhvQUdvZ0JSc29BZ2dRMkFJZ0F5Z0NrQUVpQVVIKy8vLy9BM0ZCZ0pUclxcXG4zQU5IRFFJZ0EwR0lBV29Rb3dzZ0FFR0FsT3ZjQXpZQ0NDQURRZWdBYWhETUN3c2dBMEhJQUdvUWhRc0xJQU5CeEFCcUVNQUpEQUlMSUFcXFxuTXBBNGdCSVFnZ0EwR0lBV29Rb3dzZ0EwR3dBV3BCR0dvaUJDQURRY2dBYWtFWWFpa0RBRGNEQUNBRFFiQUJha0VRYWlJRklBTkJ5QUJxXFxcblFSQnFLUU1BTndNQUlBTkJzQUZxUVFocUlnWWdBMEhJQUdwQkNHb3BBd0EzQXdBZ0F5QURLUU5JTndPd0FTQUFRVEJxSUFJUWlBVWdBMFxcXG5Ha0FXb2dCQ2tEQURjQ0FDQURRWndCYWlBRktRTUFOd0lBSUFOQmlBRnFRUXhxSUFZcEF3QTNBZ0FnQXlBREtRT3dBVGNDakFFZ0FDQUJcXFxuTmdJSUlBQWdDRGNEQUNBQVFReHFJQU5CaUFGcVFTUVFwQTBhSUFOQjZBQnFFTXdMQ3lBRFFjUUFhaERBQ1FzZ0EwSFFBV29rQUF2TUNRXFxcbkVQZnlNQVFjQUJheUlESkFBZ0EwSFFBR29nQVNBQ0VONERJQU5CaUFGcUlBTW9BbEFnQXlnQ1ZFRXZFTFVFSUFOQmxBRnFLQUlBSVFRZ1xcXG5BeWdDa0FFaEFpQURLQUtJQVNJRklBTW9Bb3dCSWdZUXFnZ2hBUUpBQWtBQ1FDQUdSUTBBSUFGRkRRQWdBa1VOQUNBRFFZZ0JhaUFDSUFcXFxuUkJPeEMxQkNBRFFaUUJhaWdDQUNFQklBTW9BcEFCSVFJZ0EwSElBR29nQXlnQ2lBRWdBeWdDakFFUXhRVWdBeWdDU0NJSElBTW9Ba3dpXFxcbkNCQ3FDRVVOQUNBSVJRMEFJQU5CQURZQ2dBRWdBMElFTndONEFrQWdBa1VOQUNBRFFZZ0Jha0U3SUFJZ0FSRFJCU0FEUVFFN0Fhd0JJQVxcXG5NZ0FUWUNxQUVnQTBFQU5nS2tBVUVFSVFsQkFDRUtBMEFnQ2tFWWJDRUxBMEFnQTBIQUFHb2dBMEdJQVdvUXF3RWdBeWdDUUNJQ1JRMENcXFxuSUFOQk9Hb2dBaUFES0FKRUVLY0ZJQU5Cc0FGcUlBTW9BamdnQXlnQ1BFRTlFTFVFSUFNb0Fyd0JJUXdnQXlnQ3VBRWhEU0FES0FLd0FTXFxcbkVPUVFFaER3SkFJQU1vQXJRQkloQkZEUUFnRGlBUUVLb0lSUTBBSUFzaEFpQUpJUUVEUUNBQ1FRQkhJUThnQWtVTkFTQUNRV2hxSVFJZ1xcXG5BU2dDQ0NFRUlBRW9BZ0FoRVNBQlFSaHFJUUVnRVNBRUlBNGdFQkNZQ2tVTkFBc0xJQTFGRFFBZ0EwRXdhaUFOSUF4QkloQ1NCZ0pBQWtcXFxuQUNRQ0FES0FJd0lnSkZEUUFnQTBFb2FrRUFJQU1vQWpRaUFVRi9haUlFSUFRZ0FVc2JRUUFRelFRZ0EwRUFOZ0s0QVNBRElBTXBBeWczXFxcbkE3QUJJQU1nQWpZQ2FDQURJQUlnQVdvMkFtd01BUXNnQTBFUWFpQU5JQXdReFFVZ0R5QURLQUlVSWdKRmNnMENJQU1vQWhBaUFTQUNFTVxcXG5ZRlJRMENJQU5CQ0dvZ0FrRUFFTTBFSUFNb0Fnd2hCQ0FES0FJSUloRWdBU0FDRUtRTkdpQURLQUtBQVNFS0RBRUxBa0FEUUFKQUlBTkJcXFxuNkFCcUVLa0lJZ0pCM0FCR0RRQUNRQ0FDUVlDQXhBQkdEUUFnQWtFaVJnMERJQU5Cc0FGcUlBSVE1QVFNQWdzZ0EwRVlhaUFEUVlnQmFoXFxcbkNyQVNBREtBSVlJZ0pGRFFJZ0F5Z0NIQ0VCSUFOQnNBRnFRVHNRNUFRZ0F5QUNOZ0pvSUFNZ0FpQUJhallDYkF3QkN3SkFJQU5CNkFCcVxcXG5FS2tJSWdKQmdJREVBRWNOQUNBRFFTQnFJQU5CaUFGcUVLc0JBa0FnQXlnQ0lDSUNEUUJCM0FBaEFnd0JDeUFES0FJa0lRRWdBeUFDTmdcXFxuSm9JQU1nQWlBQmFqWUNiRUU3SVFJTElBTkJzQUZxSUFJUTVBUU1BQXNMQWtBZ0R3MEFJQTBnREJER0JVVU5BQ0FES0FLNEFTRUNJQU1vXFxcbkFyUUJJUVFnQXlnQ3NBRWhFUXdCQ3lBRFFiQUJhaERqQ2d3QkN3c2dBMEd3QVdvZ0RpQVFFSzBFQWtBZ0NpQURLQUo4UncwQUlBTkIrQVxcXG5CcUlBb1Fnd2tnQXlnQ2dBRWhDZ3NnQXlnQ2VDSUpJQXBCR0d4cUlnRWdBeWtEc0FFM0FnQWdBU0FDTmdJVUlBRWdCRFlDRUNBQklCRTJcXFxuQWd3Z0FVRUlhaUFEUWJBQmFrRUlhaWdDQURZQ0FDQURJQXBCQVdvaUNqWUNnQUVNQUFzTElBTkJzQUZxSUFVZ0JoQ3RCQ0FEUVlnQmFpXFxcbkFISUFnUXJRUWdBMEhZQUdwQkNHb2lBaUFEUWZnQWFrRUlhaWdDQURZQ0FDQURRZWdBYWtFSWFpSUJJQU5CaUFGcVFRaHFLQUlBTmdJQVxcXG5JQU1nQXlrRGVEY0RXQ0FESUFNcEE0Z0JOd05vSUFNb0FyQUJJZ1FOQVFzZ0FFRUFOZ0lBREFFTElBQWdBeWtDdEFFM0FnUWdBQ0FFTmdcXFxuSUFJQUFnQXlrRGFEY0NEQ0FBSUFNcEExZzNBaGdnQUVFVWFpQUJLQUlBTmdJQUlBQkJJR29nQWlnQ0FEWUNBQXNnQTBIQUFXb2tBQXVqXFxcbkNBRUtmeU1BUVNCcklnTWtBQ0FEUVJocVFnQTNBd0FnQTBJQU53TVFBa0FDUUNBQ1FRRk5EUUJCQUNFRVFRQWhCUUpBSUFFdEFBQWlCa1xcXG5FNlJ3MEFJQUV0QUFGQk9rY05BVUVCSVFWQkFpRUVDeUFHUVRwSElRZEJBU0VJQWtBRFFDQUZRUWdnQlVFSVN4c2hDUU5BSUFRZ0FrOE5cXFxuQWlBRlFRaEdEUU1DUUNBQklBUnFMUUFBUVRwSERRQWdCMEVCY1VVTkJDQUVRUUZxSVFSQkFDRUhJQVZCQVdvaUNDRUZEQUlMSUFRZ0FpXFxcbkFFUVFScUlnWWdBaUFHU1JzaUJpQUVJQVpMR3lFS1FRQWhDeUFFSVFZQ1FBTkFJQW9nQmtZTkFTQURRUWhxSUFFZ0Jtb3RBQUJCRUJDR1xcXG5CZ0pBSUFNb0FnZ05BQ0FHSVFvTUFnc2dCa0VCYWlFR0lBdEJCSFFnQXlnQ0RHb2hDd3dBQ3dzQ1FBSkFJQW9nQWtrTkFDQUtJUVFNQVFcXFxuc0NRQ0FCSUFwcUxRQUFJZ1pCT2tZTkFDQUdRUzVIRFFVZ0NpQUVSZzBGSUFWQkJrc05CVUVBSVF3RFFBSkFJQVFnQWtrTkFDQU1RUVJIXFxcbkRRY01CZ3NDUUNBTVFRQk1EUUFnREVFRFN3MEhJQUVnQkdvdEFBQkJMa2NOQnlBRVFRRnFJUVFMSUFRZ0FpQUVJQUpMR3lFSlFRQWhDZ1xcXG5KQUEwQUNRQ0FKSUFSSERRQWdDU0VFREFJTElBRWdCR290QUFCQlVHcEIvd0Z4SWd0QkNVc05BUUpBQWtBZ0NrSC8vd054RFFCQkFTRUtcXFxuSUFzaEJnd0JDeUFHUWYvL0EzRkZEUWtnQmtFS2JDQUxhaUlHUWYvL0EzRkIvd0ZMRFFrTElBUkJBV29oQkF3QUN3c2dDa0gvL3dOeFFRXFxcbkZIRFFZQ1FDQUZRUWhQRFFBZ0EwRVFhaUFGUVFGMGFpSUxJQXN2QVFCQkNIUWdCbW83QVFBZ0JTQU1RUUZxSWd4QkFrWWdERUVFUm5KcVxcXG5JUVVNQVFzTElBVkJDRUhjaU1FQUVJRUZBQXNnQ2tFQmFpSUVJQUpHRFFRTEFrQWdCU0FKUmcwQUlBTkJFR29nQlVFQmRHb2dDenNCQUNcXFxuQUZRUUZxSVFVTUFRc0xDeUFKUVFoQnpJakJBQkNCQlFBTElBUWdBa2tOQUFKQUFrQUNRQUpBSUFkQkFYRU5BQ0FJSUFWcklRUWdCVUVCXFxcbmRDRUpJQVZCZjJvaEFpQURRUjVxSVF0QkFDRUdBMEFnQkNBR1JnMENJQVpCQjJwQkIwc05BeUFDSUFacVFRaFBEUVFnQ3k4QkFDRUtJQVxcXG5zZ0N5QUpha0Z3YWlJQkx3RUFPd0VBSUFFZ0Nqc0JBQ0FMUVg1cUlRc2dCa0YvYWlFR0RBQUxDeUFGUVFoSERRTUxJQUJCQURvQUFDQUFcXFxuUVE5cUlBTXZBUjRpQmtFSWRDQUdRUWgyY2pzQUFDQUFRUTFxSUFNdkFSd2lCa0VJZENBR1FRaDJjanNBQUNBQVFRdHFJQU12QVJvaUJrXFxcbkVJZENBR1FRaDJjanNBQUNBQVFRbHFJQU12QVJnaUJrRUlkQ0FHUVFoMmNqc0FBQ0FBUVFkcUlBTXZBUllpQmtFSWRDQUdRUWgyY2pzQVxcXG5BQ0FBUVFWcUlBTXZBUlFpQmtFSWRDQUdRUWgyY2pzQUFDQUFRUU5xSUFNdkFSSWlCa0VJZENBR1FRaDJjanNBQUNBQUlBTXZBUkFpQmtcXFxuRUlkQ0FHUVFoMmNqc0FBUXdEQzBGL1FRaEI3SWpCQUJDQkJRQUxJQVVnQm1wQmYycEJDRUhzaU1FQUVJRUZBQXNnQUVHQkNEc0FBQXNnXFxcbkEwRWdhaVFBQytVSkFRZC9Jd0JCc0FGcklnTWtBQ0FDS0FJQUlRUWdBMEV3YWlBQ1FReHFLQUlBTmdJQUlBTWdBaWtDQkRjREtBSkFBa1xcXG5BZ0JDQUJLQUlBS0FJQVFYOXFSZzBBUVFBaEJBd0JDeUFESUFFb0FnUWdBU2dDQ0NJQ0tBSUFJQUlvQWdRUWh3cEIvd0Z4T2dDUUFTQURcXFxuUVNCcUlBTkJrQUZxRVBFSklBTW9BaVFoQlNBREtBSWdJUVFMQWtBQ1FDQURLQUl3SWdaQllXcEJZa2tOQUNBRFFaQUJhaUFES0FJb0lnXFxcbmNnQmhBN1FRRWhBZ0pBSUFNb0FwQUJJZ2dnQXlnQ21BRWlDVUg0cGNBQVFRTVF2d3dOQUNBSUlBbEIrNlhBQUVFREVMOE1EUUFnQ0NBSlxcXG5RZjZsd0FCQkJCQy9EQTBBSUFnZ0NVR0Nwc0FBUVFRUXZ3d05BQ0FJSUFsQmhxYkFBRUVFRUw4TURRQWdDQ0FKUVlxbXdBQkJCQkMvREFcXFxuMEFJQWdnQ1VHT3BzQUFRUVVRdnd3TkFDQUlJQWxCazZiQUFFRUZFTDhNSVFJTElBTkJrQUZxRU9NTUFrQUNRQ0FFUlEwQUlBSkZEUUlnXFxcbkJ5QUdJQVFnQlJDL0RFVU5BZ3dCQ3lBQ0RRRUxJQWNnQmtFakVORUhEUUFnQXlBSE5nS1FBU0FESUFjZ0JtbzJBcFFCQWtBRFFDQURRWlxcXG5BQmFoQ0RBeUlDUVlDQXhBQkdEUUVnQXlBQ05nSjRRWWltendBUXVnMGdBMEg0QUdvUTZ3a2hDQ0FDUVlWL2FrRm1TU0FDUWQvLy93QnhcXFxuUWI5L2FrRWFTWEVOQWlBSVJRMEFEQUlMQ3dKQUlBUU5BRUc0cHM4QUVMc05JQWNnQmhETUJBMEJDeUFISUFaQkxoRFNCdzBBSUFBZ0F5XFxcbmtES0RjQ0FDQUFRUWhxSUFOQktHcEJDR29vQWdBMkFnQU1BUXNnQVNnQ0RFRUJPZ0FBSUFNb0FpZ2hBU0FESUFNb0FqQWlDRFlDbEFFZ1xcXG5BeUFCTmdLUUFTQURRVGhxSUFOQmtBRnFFTmNDUVJRaEFpQURRUmhxUVJSQkFCRFZCQ0FEUVFBMkFsQWdBeUFES1FNWU53TklJQU1nQVNcXFxuQUlhallDWENBRElBRTJBbGdDUUFOQUlBSkZEUUVnQXlBQ1FYOXFOZ0pnSUFOQjJBQnFFSU1ESWdKQmdJREVBRVlOQVNBRElBSTJBbkFnXFxcbkFrRS9SZzBCQWtBQ1FFR0lwczhBRUxvTklBTkI4QUJxRU9zSkRRQWdBMEdRQVdvZ0F5Z0NjQkRCQWlBRFFmZ0FhaUFEUVpBQmFoRHlCaVxcXG5BRFFjZ0FhaUFEUWZnQWFoRGFCQXdCQ3lBRFFjZ0Fha0hmQUJEWUJBc2dBeWdDWUNFQ0RBQUxDeUFES0FKUUlRSWdBeWdDU0NFQkFrQUNcXFxuUUNBRURRQkI0SUxBQUNFRVFRQWhCUXdCQ3lBRFFSQnFJQUVnQWlBRUlBVVEwUWtnQTBFUWFrRUVjaUFEUWRBQWFpQURLQUlRSWdFYktBXFxcbklBSVFJZ0FTQURLQUpJSUFFYklRRUxJQU1nQWpZQ2JDQURJQUUyQW1nZ0F5QUZOZ0owSUFNZ0JEWUNjQUpBQWtBZ0FrVU5BQ0FESUFOQlxcXG42QUJxTmdLc0FTQURRUWhxSUFOQk9HcEJCVUhVcHNBQUVJQUdJQU5CcEFGcVFRRTJBZ0FnQTBHUUFXcEJER3BCQVRZQ0FDQURRZmdBYWtcXFxuRU1ha0lETndJQUlBTkJBallDbEFFZ0EwRUROZ0o4SUFOQnZLYkFBRFlDZUNBRElBTXBBd2czQTFnZ0F5QURRZkFBYWpZQ29BRWdBeUFEXFxcblFkZ0FhallDbUFFZ0F5QURRYXdCYWpZQ2tBRWdBeUFEUVpBQmFqWUNnQUVnQUNBRFFmZ0FhaENQQkF3QkN5QURJQU5CT0dwQkIwR3Nwc1xcXG5BQUVJQUdJQU5CK0FCcVFReHFRUUUyQWdBZ0EwR1FBV3BCREdwQ0FqY0NBQ0FEUVFFMkFud2dBMEVDTmdLVUFTQURRWnltd0FBMkFwQUJcXFxuSUFNZ0F5a0RBRGNEV0NBRElBTkI4QUJxTmdLQUFTQURJQU5CMkFCcU5nSjRJQU1nQTBINEFHbzJBcGdCSUFBZ0EwR1FBV29RandRTElBXFxcbk5CeUFCcUVPTU1JQU5CT0dvUTR3d2dBMEVvYWhEakRBc2dBMEd3QVdva0FBdlpDUUVHZnlBQUVORU5JUUFnQUNBQUVKVU5JZ0VRemcwaFxcXG5BZ0pBQWtBQ1FDQUFFSllORFFBZ0FDZ0NBQ0VEQWtBQ1FDQUFFTlFNRFFBZ0F5QUJhaUVCSUFBZ0F4RFBEU0lBUVFBb0FvaXJUMGNOQVNcXFxuQUNLQUlFUVFOeFFRTkhEUUpCQUNBQk5nS0FxMDhnQUNBQklBSVEvd2tQQzBIZ3A4OEFJQUFnQTJzZ0F5QUJha0VRYWlJQUVJNE9SUTBDXFxcblFRQkJBQ2dDa0t0UElBQnJOZ0tRcTA4UEN3SkFJQU5CZ0FKSkRRQWdBQkQyQVF3QkN3SkFJQUJCREdvb0FnQWlCQ0FBUVFocUtBSUFJZ1xcXG5WR0RRQWdCU0FFTmdJTUlBUWdCVFlDQ0F3QkMwRUFRUUFvQXZpcVQwRitJQU5CQTNaM2NUWUMrS3BQQ3dKQUFrQWdBaENrREVVTkFDQUFcXFxuSUFFZ0FoRC9DUXdCQ3dKQUFrQUNRQUpBSUFKQkFDZ0NqS3RQUmcwQUlBSkJBQ2dDaUt0UFJ3MEJRUUFnQURZQ2lLdFBRUUJCQUNnQ2dLXFxcbnRQSUFGcUlnRTJBb0NyVHlBQUlBRVEvUW9QQzBFQUlBQTJBb3lyVDBFQVFRQW9Bb1NyVHlBQmFpSUJOZ0tFcTA4Z0FDQUJRUUZ5TmdJRVxcXG5JQUJCQUNnQ2lLdFBSZzBCREFJTElBSVFsUTBpQXlBQmFpRUJBa0FDUUNBRFFZQUNTUTBBSUFJUTlnRU1BUXNDUUNBQ1FReHFLQUlBSWdcXFxuUWdBa0VJYWlnQ0FDSUNSZzBBSUFJZ0JEWUNEQ0FFSUFJMkFnZ01BUXRCQUVFQUtBTDRxazlCZmlBRFFRTjJkM0UyQXZpcVR3c2dBQ0FCXFxcbkVQMEtJQUJCQUNnQ2lLdFBSdzBDUVFBZ0FUWUNnS3RQREFNTFFRQkJBRFlDZ0t0UFFRQkJBRFlDaUt0UEN5QUJRUUFvQXBpclQwME5BUlxcXG5DS0RpSUFRUWdRbkFzaEFVRVVRUWdRbkFzaEFrRVFRUWdRbkFzaEEwRUFRUkJCQ0JDY0MwRUNkR3NpQkNBQUlBTWdBU0FDYW1wclFmai9cXFxuZTJwQmQzRkJmV29pQUNBRUlBQkpHMFVOQVVFQUtBS01xMDlGRFFFUWlnNGlBRUVJRUp3TElRRkJGRUVJRUp3TElRTkJFRUVJRUp3TElRXFxcblJCQUNFQ0FrQkJBQ2dDaEt0UElnVWdCQ0FESUFFZ0FHdHFhaUlBVFEwQUlBVWdBR3RCLy84RGFrR0FnSHh4SWdSQmdJQjhhaUVEUVFBb1xcXG5Bb3lyVHlFQlFlQ296d0FoQUFKQUEwQUNRQ0FBS0FJQUlBRkxEUUFnQUJEV0RDQUJTdzBDQ3lBQUtBSUlJZ0FOQUF0QkFDRUFDMEVBSVFcXFxuSWdBQkNYRFEwQVFlQ256d0FnQUNnQ0RFRUJkaENQRGtVTkFDQUFLQUlFSUFOSkRRQkI0S2pQQUNFQkEwQWdBQ0FCRU9FSkRRRWdBU2dDXFxcbkNDSUJEUUFMUWVDbnp3QWdBQ2dDQUNBQUtBSUVJZ0VnQVNBRGF4Q05Ea1VOQUNBRFJRMEFJQUFnQUNnQ0JDQURhellDQkVFQVFRQW9BcFxcXG5DclR5QURhellDa0t0UFFRQW9Bb1NyVHlFQlFRQW9Bb3lyVHlFQVFRQWdBQ0FBRU5BTklnSkJDQkNjQ3lBQ2F5SUNFTTROSWdBMkFveXJcXFxuVDBFQUlBRWdCQ0FDYW10QmdJQUVhaUlCTmdLRXEwOGdBQ0FCUVFGeU5nSUVFSW9PSWdKQkNCQ2NDeUVFUVJSQkNCQ2NDeUVGUVJCQkNCXFxcbkNjQ3lFR0lBQWdBUkRPRFNBR0lBVWdCQ0FDYTJwcU5nSUVRUUJCZ0lDQUFUWUNtS3RQSUFNaEFnc1FrQUpCQUNBQ2EwY05BVUVBS0FLRVxcXG5xMDlCQUNnQ21LdFBUUTBCUVFCQmZ6WUNtS3RQRHdzZ0FVR0FBa2tOQVNBQUlBRVErZ0ZCQUVFQUtBS2dxMDlCZjJvaUFEWUNvS3RQSUFcXFxuQU5BQkNRQWhvUEN3OExJQUZCZUhGQjhLalBBR29oQWdKQUFrQkJBQ2dDK0twUElnTkJBU0FCUVFOMmRDSUJjVVVOQUNBQ0tBSUlJUUVNXFxcbkFRdEJBQ0FESUFGeU5nTDRxazhnQWlFQkN5QUNJQUEyQWdnZ0FTQUFOZ0lNSUFBZ0FqWUNEQ0FBSUFFMkFnZ0wwUWdDQ0g4R2ZnSkFBa1xcXG5BQ1FBSkFBa0FDUUFKQUlBRXBBd0FpRFZBTkFDQU5Rdi8vLy8vLy8vLy9IMVlOQVNBRFJRMERRYUIvSUFFdkFSZ2lBVUZnYWlBQklBMUNcXFxuZ0lDQWdCQlVJZ1ViSWdGQmNHb2dBU0FOUWlDR0lBMGdCUnNpRFVLQWdJQ0FnSURBQUZRaUJSc2lBVUY0YWlBQklBMUNFSVlnRFNBRkd5XFxcbklOUW9DQWdJQ0FnSUNBQVZRaUJSc2lBVUY4YWlBQklBMUNDSVlnRFNBRkd5SU5Rb0NBZ0lDQWdJQ0FFRlFpQlJzaUFVRithaUFCSUExQ1xcXG5CSVlnRFNBRkd5SU5Rb0NBZ0lDQWdJQ0F3QUJVSWdVYklBMUNBb1lnRFNBRkd5SU5RbjlWYXlJRmE4RkIwQUJzUWJDbkJXcEJ6aEJ0SWdcXFxuRkIwUUJQRFFJZ0FVRUVkQ0lCUWNpSHpnQnFLUU1BSWc1Qy8vLy8vdytESWc4Z0RTQU5RbitGUWorSWhpSU5RaUNJSWhCK0loRkNJSWdnXFxcbkRrSWdpQ0lPSUJCK2ZDQU9JQTFDLy8vLy93K0RJZzErSWc1Q0lJaDhJQkZDLy8vLy93K0RJQThnRFg1Q0lJaDhJQTVDLy8vLy93K0RmRVxcXG5LQWdJQ0FDSHhDSUloOElnMUJRQ0FGSUFGQjBJZk9BR292QVFCcWF5SUdRVDl4clNJUGlLY2hCeUFCUWRLSHpnQnFMd0VBSVFFQ1FBSkFcXFxuQWtBQ1FDQU5RZ0VnRDRZaUVrSi9mQ0lRZ3lJT1VFVU5BQ0FEUVFwTERRRWdBMEVDZEVHNGxjNEFhaWdDQUNBSFN3MEJDd0pBQWtBQ1FBXFxcbkpBSUFkQmtNNEFTUTBBSUFkQndJUTlTUTBCSUFkQmdNTFhMMGtOQWtFSVFRa2dCMEdBbE92Y0Ewa2lCUnNoQ0VHQXd0Y3ZRWUNVNjl3RFxcXG5JQVViSVFVTUF3c0NRQ0FIUWVRQVNRMEFRUUpCQXlBSFFlZ0hTU0lGR3lFSVFlUUFRZWdISUFVYklRVU1Bd3RCQ2tFQklBZEJDVXNpQ0JcXFxuc2hCUXdDQzBFRVFRVWdCMEdnalFaSklnVWJJUWhCa000QVFhQ05CaUFGR3lFRkRBRUxRUVpCQnlBSFFZQ3Q0Z1JKSWdVYklRaEJ3SVE5XFxcblFZQ3Q0Z1FnQlJzaEJRc2dDQ0FCYTBFQmFzRWlDU0FFd1NJQlRBMEJJQVpCLy84RGNTRUtJQWtnQkd2QklBTWdDU0FCYXlBRFNSc2lDMFxcXG5GL2FpRU1RUUFoQVFOQUlBY2dCVzRoQmlBRElBRkdEUWdnQnlBR0lBVnNheUVISUFJZ0FXb2dCa0V3YWpvQUFDQU1JQUZHRFFrZ0NDQUJcXFxuUmcwRElBRkJBV29oQVNBRlFRcEpJUVlnQlVFS2JpRUZJQVpGRFFBTFFkQ1R6Z0JCR1VIa2xjNEFFSU1IQUFzZ0FFRUFOZ0lBRHdzZ0FDXFxcbkFDSUFOQkFDQUpJQVFnRFVJS2dDQUZyU0FQaGlBU0VMY0JEd3NnQVVFQmFpRUJJQXBCZjJwQlAzR3RJUkZDQVNFTkEwQUNRQ0FOSUJHSVxcXG5VQTBBSUFCQkFEWUNBQThMSUFFZ0EwOE5CeUFDSUFGcUlBNUNDbjRpRGlBUGlLZEJNR282QUFBZ0RVSUtmaUVOSUE0Z0VJTWhEaUFMSUFcXFxuRkJBV29pQVVjTkFBc2dBQ0FDSUFNZ0N5QUpJQVFnRGlBU0lBMFF0d0VQQzBHTGc4NEFRUnhCNkpUT0FCQ0RCd0FMUWZpVXpnQkJKRUdjXFxcbmxjNEFFSU1IQUFzZ0FVSFJBRUdJa3M0QUVJRUZBQXRCbkpUT0FFRWhRYXlWemdBUWd3Y0FDeUFESUFOQjlKWE9BQkNCQlFBTElBQWdBaVxcXG5BRElBc2dDU0FFSUFldElBK0dJQTU4SUFXdElBK0dJQklRdHdFUEN5QUJJQU5CaEpiT0FCQ0JCUUFMbWdrQ0EzOENmaU1BUVlBQ2F5SUNcXFxuSkFBZ0FpQUJOZ0k4SUFKQitBQnFJQUpCUEdvUWpnSWdBaWdDZUNFQkFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBaTBBZkNJRFFYXFxcbjVxRGdJQ0FBRUxJQUVRN3cwaEFTQUFRUUEyQWdBZ0FDQUJOZ0lFREFnTElBSkJ3QUJxSUFFZ0EwRUFSeERnQ2lBQ1FRaHFFTkFJSUFJcFxcXG5Bd2doQlNBQ0tRTVFJUVlnQWtINEFHcEJBQkNEQ0NBQ0lBWTNBNUFCSUFJZ0JUY0RpQUVnQWtHOEFXb2hBd0pBQWtBRFFDQUNRWmdCYWlcXFxuQUNRY0FBYWhDeEF5QUNLQUtZQVEwQkFrQUNRQ0FDS0FLY0FTSUJEUUJCQUNFQkRBRUxJQUlnQWlrRG9BRWlCVGNDNUFFZ0FpQUJOZ0xnXFxcbkFTQUNRZkFCYWlBQ1FjQUFhaERLQ2lBQ0tBTHdBVVVOQlNBQ1FkZ0Fha0VJYWlBQ1FmQUJha0VJYWlnQ0FEWUNBQ0FDSUFJcEEvQUJOd1xcXG5OWUN5QURJQUlwQTFnM0FnQWdBMEVJYWlBQ1FkZ0Fha0VJYWlJRUtBSUFOZ0lBSUFJZ0JUY0N0QUVnQWlBQk5nS3dBU0FCUlEwQ0lBSkJcXFxuNkFCcVFRaHFJQUpCc0FGcVFRaHFLQUlBTmdJQUlBSkIwQUZxUVFocUlBUW9BZ0EyQWdBZ0FpQUNLUU93QVRjRGFDQUNJQUlwQTFnM0E5XFxcbkFCSUFKQm1BRnFJQUpCK0FCcUlBSkI2QUJxSUFKQjBBRnFFS1FDSUFKQm1BRnFFTXdMREFBTEN5QUNLQUtjQVNFQkRBWUxJQUpCc0FGcVxcXG5FTklMSUFCQkdHb2dBa0g0QUdwQkdHb3BBd0EzQXdBZ0FFRVFhaUFDUWZnQWFrRVFhaWtEQURjREFDQUFRUWhxSUFKQitBQnFRUWhxS1FcXFxuTUFOd01BSUFBZ0Fpa0RlRGNEQUF3R0N5QUNRVEJxSUFKQlBHb1F3Z2dnQWlnQ01FVU5BeUFDSUFJb0FqUTJBbWdnQWtINEFHb2dBa0hvXFxcbkFHb1Ewd29nQWtIQUFHcEJFR29nQWtINEFHcEJDR29vQWdBMkFnQWdBa0VBTmdKVUlBSkJBRFlDUUNBQ0lBSXBBM2czQTBnZ0FrRW9haVxcXG5BQ1FjQUFha0VJYWhEMUJDQUNLQUlzSVFFZ0FpZ0NLQ0VESUFKQkdHb1EwQWdnQWlrREdDRUZJQUlwQXlBaEJpQUNRZmdBYWlBQlFhclZcXFxuQWlBQlFhclZBa2tiUVFBZ0F4c1Fnd2dnQWlBR053T1FBU0FDSUFVM0E0Z0JJQUpCcEFGcUlRTWdBa0d3QVdwQkJISWhBUU5BSUFKQnNBXFxcbkZxSUFKQndBQnFFUFVCSUFJb0FyQUJEUUlnQWtHWUFXcEJFR29nQVVFUWFpa0NBRGNEQUNBQ1FaZ0Jha0VJYWlBQlFRaHFJZ1FwQWdBM1xcXG5Bd0FnQWlBQktRSUFJZ1UzQTVnQkFrQWdCYWRGRFFBZ0FrSFFBV3BCQ0dvZ0JDZ0NBRFlDQUNBQ1FlQUJha0VJYWlBRFFRaHFLQUlBTmdcXFxuSUFJQUlnQVNrQ0FEY0QwQUVnQWlBREtRSUFOd1BnQVNBQ1FmQUJhaUFDUWZnQWFpQUNRZEFCYWlBQ1FlQUJhaENrQWlBQ1FmQUJhaERNXFxcbkN3d0JDd3NnQWtHWUFXb1EwZ3NnQUVFWWFpQUNRZmdBYWtFWWFpa0RBRGNEQUNBQVFSQnFJQUpCK0FCcVFSQnFLUU1BTndNQUlBQkJDR1xcXG5vZ0FrSDRBR3BCQ0dvcEF3QTNBd0FnQUNBQ0tRTjROd01BREFJTElBSW9BdlFCSVFFZ0FrSGdBV29RNHd3TUF3c2dBQ0FDS0FLMEFUWUNcXFxuQkNBQVFRQTJBZ0FnQWtINEFHb1FoUXNMSUFKQndBQnFFSVlMSUFKQjZBQnFFSVFMREFNTElBQWdBa0U4YWhEUkNBd0NDeUFBUVFBMkFnXFxcbkFnQUNBQk5nSUVJQUpCK0FCcUVJVUxDeUFDUWNnQWFoQ0VDeUFDUWNBQWFoQ0dDd3NnQWtFOGFoQ0VDeUFDUVlBQ2FpUUFDNndJQVFkL1xcXG5Ba0FDUUNBQlFmOEpTdzBBSUFGQkJYWWhBZ0pBQWtBQ1FBSkFJQUFvQXFBQklnTkZEUUFnQTBGL2FpRUVJQU5CQW5RZ0FHcEJmR29oQlNcXFxuQURJQUpxUVFKMElBQnFRWHhxSVFZZ0EwRW9TeUVEQTBBZ0F3MEVJQUlnQkdvaUIwRW9UdzBDSUFZZ0JTZ0NBRFlDQUNBR1FYeHFJUVlnXFxcbkJVRjhhaUVGSUFSQmYyb2lCRUYvUncwQUN3c2dBVUVnU1EwRUlBQkJBRFlDQUNBQlFjQUFUdzBCREFRTElBZEJLRUdvdU00QUVJRUZBQVxcXG5zZ0FFRUFOZ0lFSUFKQkFTQUNRUUZMR3lJRVFRSkdEUUlnQUVFQU5nSUlJQVJCQTBZTkFpQUFRUUEyQWd3Z0JFRUVSZzBDSUFCQkFEWUNcXFxuRUNBRVFRVkdEUUlnQUVFQU5nSVVJQVJCQmtZTkFpQUFRUUEyQWhnZ0JFRUhSZzBDSUFCQkFEWUNIQ0FFUVFoR0RRSWdBRUVBTmdJZ0lBXFxcblJCQ1VZTkFpQUFRUUEyQWlRZ0JFRUtSZzBDSUFCQkFEWUNLQ0FFUVF0R0RRSWdBRUVBTmdJc0lBUkJERVlOQWlBQVFRQTJBakFnQkVFTlxcXG5SZzBDSUFCQkFEWUNOQ0FFUVE1R0RRSWdBRUVBTmdJNElBUkJEMFlOQWlBQVFRQTJBandnQkVFUVJnMENJQUJCQURZQ1FDQUVRUkZHRFFcXFxuSWdBRUVBTmdKRUlBUkJFa1lOQWlBQVFRQTJBa2dnQkVFVFJnMENJQUJCQURZQ1RDQUVRUlJHRFFJZ0FFRUFOZ0pRSUFSQkZVWU5BaUFBXFxcblFRQTJBbFFnQkVFV1JnMENJQUJCQURZQ1dDQUVRUmRHRFFJZ0FFRUFOZ0pjSUFSQkdFWU5BaUFBUVFBMkFtQWdCRUVaUmcwQ0lBQkJBRFxcXG5ZQ1pDQUVRUnBHRFFJZ0FFRUFOZ0pvSUFSQkcwWU5BaUFBUVFBMkFtd2dCRUVjUmcwQ0lBQkJBRFlDY0NBRVFSMUdEUUlnQUVFQU5nSjBcXFxuSUFSQkhrWU5BaUFBUVFBMkFuZ2dCRUVmUmcwQ0lBQkJBRFlDZkNBRVFTQkdEUUlnQUVFQU5nS0FBU0FFUVNGR0RRSWdBRUVBTmdLRUFTXFxcbkFFUVNKR0RRSWdBRUVBTmdLSUFTQUVRU05HRFFJZ0FFRUFOZ0tNQVNBRVFTUkdEUUlnQUVFQU5nS1FBU0FFUVNWR0RRSWdBRUVBTmdLVVxcXG5BU0FFUVNaR0RRSWdBRUVBTmdLWUFTQUVRU2RHRFFJZ0FFRUFOZ0tjQVNBRVFTaEdEUUpCS0VFb1FhaTR6Z0FRZ1FVQUN5QUVRU2hCcUxcXFxuak9BQkNCQlFBTFFkSzR6Z0JCSFVHb3VNNEFFSU1IQUFzZ0FDZ0NvQUVnQW1vaEJRSkFJQUZCSDNFaUF3MEFJQUFnQlRZQ29BRWdBQThMXFxcbkFrQUNRQ0FGUVg5cUlnUkJKMHNOQUNBRklRZ2dBQ0FFUVFKMGFpZ0NBQ0lHUVFBZ0FXc2lBWFlpQkVVTkFRSkFJQVZCSjBzTkFDQUFJQVxcXG5WQkFuUnFJQVEyQWdBZ0JVRUJhaUVJREFJTElBVkJLRUdvdU00QUVJRUZBQXNnQkVFb1FhaTR6Z0FRZ1FVQUN3SkFBa0FnQWtFQmFpSUhcXFxuSUFWUERRQWdBVUVmY1NFQklBVkJBblFnQUdwQmVHb2hCQU5BSUFWQmZtcEJLRThOQWlBRVFRUnFJQVlnQTNRZ0JDZ0NBQ0lHSUFGMmNqXFxcbllDQUNBRVFYeHFJUVFnQnlBRlFYOXFJZ1ZKRFFBTEN5QUFJQUpCQW5ScUlnUWdCQ2dDQUNBRGREWUNBQ0FBSUFnMkFxQUJJQUFQQzBGL1xcXG5RU2hCcUxqT0FCQ0JCUUFMOUFnQ0IzOEJmaU1BUVRCcklnVWtBQUpBQWtBZ0FnMEFJQUJCQURZQ0NDQUFRZ0UzQWdBTUFRc0NRQUpBSUFcXFxuU3RJQUpCZjJwQi8vLy8vd0Z4clg0aURFSWdpS2NOQUNBQlFRaHFJUVlnREtjaEJ5QUNRUU4wSVFnZ0FTRUpBMEFnQ0VVTkFpQUlRWGhxXFxcbklRZ2dCeUFKS0FJRWFpSUtJQWRQSVFzZ0NVRUlhaUVKSUFvaEJ5QUxEUUFMQzBHd2o4QUFRVFZCd0pEQUFCQ0tCZ0FMSUFWQkNHb2dCMFxcXG5FQUVOVUVJQVZCQURZQ0dDQUZJQVVwQXdnM0F4QWdCVUVRYWlBQktBSUFJQUVvQWdRUWlBd2dCeUFGS0FJWUlnaHJJUWtnQlNnQ0VDQUlcXFxuYWlFSUFrQUNRQUpBQWtBQ1FBSkFBa0FnQkE0RkJRUURBZ0VBQ3lBQ1FRTjBRWGhxSVFvRFFDQUtSUTBHSUFZb0FnQWhBaUFHS0FJRUlRXFxcbnNnQlVFZ2FpQUlJQWtnQkJDZUJ5QUZLQUlzSVFnZ0JTZ0NLQ0VKSUFVb0FpQWdCU2dDSkNBRElBUkJzSkRBQUJEbkNTQUZRU0JxSUFrZ1xcXG5DQ0FMRUo0SElBVW9BaXdoQ1NBRktBSW9JUWdnQlNnQ0lDQUZLQUlrSUFJZ0MwR3drTUFBRU9jSklBcEJlR29oQ2lBR1FRaHFJUVlNQUFcXFxuc0xJQUpCQTNSQmVHb2hDZ05BSUFwRkRRVWdCaWdDQUNFRUlBWW9BZ1FoQ3lBRlFTQnFJQWdnQ1VFRUVKNEhJQVVvQWl3aENDQUZLQUlvXFxcbklRa2dCU2dDSUNBRktBSWtJQU5CQkVHd2tNQUFFT2NKSUFWQklHb2dDU0FJSUFzUW5nY2dCU2dDTENFSklBVW9BaWdoQ0NBRktBSWdJQVxcXG5Vb0FpUWdCQ0FMUWJDUXdBQVE1d2tnQ2tGNGFpRUtJQVpCQ0dvaEJnd0FDd3NnQWtFRGRFRjRhaUVLQTBBZ0NrVU5CQ0FHS0FJQUlRUWdcXFxuQmlnQ0JDRUxJQVZCSUdvZ0NDQUpRUU1RbmdjZ0JTZ0NMQ0VJSUFVb0FpZ2hDU0FGS0FJZ0lBVW9BaVFnQTBFRFFiQ1F3QUFRNXdrZ0JVXFxcbkVnYWlBSklBZ2dDeENlQnlBRktBSXNJUWtnQlNnQ0tDRUlJQVVvQWlBZ0JTZ0NKQ0FFSUF0QnNKREFBQkRuQ1NBS1FYaHFJUW9nQmtFSVxcXG5haUVHREFBTEN5QUNRUU4wUVhocUlRb0RRQ0FLUlEwRElBWW9BZ0FoQkNBR0tBSUVJUXNnQlVFZ2FpQUlJQWxCQWhDZUJ5QUZLQUlzSVFcXFxuZ2dCU2dDS0NFSklBVW9BaUFnQlNnQ0pDQURRUUpCc0pEQUFCRG5DU0FGUVNCcUlBa2dDQ0FMRUo0SElBVW9BaXdoQ1NBRktBSW9JUWdnXFxcbkJTZ0NJQ0FGS0FJa0lBUWdDMEd3a01BQUVPY0pJQXBCZUdvaENpQUdRUWhxSVFZTUFBc0xJQUpCQTNSQmVHb2hDZ05BSUFwRkRRSWdCaVxcXG5nQ0FDRUVJQVlvQWdRaEN5QUZRU0JxSUFnZ0NVRUJFSjRISUFVb0Fpd2hDQ0FGS0FJb0lRa2dCU2dDSUNBRktBSWtJQU5CQVVHd2tNQUFcXFxuRU9jSklBVkJJR29nQ1NBSUlBc1FuZ2NnQlNnQ0xDRUpJQVVvQWlnaENDQUZLQUlnSUFVb0FpUWdCQ0FMUWJDUXdBQVE1d2tnQ2tGNGFpXFxcbkVLSUFaQkNHb2hCZ3dBQ3dzZ0FrRURkRUY0YWlFS0EwQWdDa1VOQVNBR0tBSUFJUVFnQmlnQ0JDRUxJQWhCQUNBRFFRQkJzSkRBQUJEblxcXG5DU0FGUVNCcUlBZ2dDU0FMRUo0SElBVW9BaXdoQ1NBRktBSW9JUWdnQlNnQ0lDQUZLQUlrSUFRZ0MwR3drTUFBRU9jSklBcEJlR29oQ2lcXFxuQUdRUWhxSVFZTUFBc0xJQUFnQlNrREVEY0NBQ0FBUVFocUlBY2dDV3MyQWdBTElBVkJNR29rQUF2dUNBSUhmd0YrSXdCQk1Hc2lCU1FBXFxcbkFrQUNRQ0FDRFFBZ0FFRUFOZ0lJSUFCQ0FUY0NBQXdCQ3dKQUFrQWdCSzBnQWtFTWJDSUdRWFJxUVF4dXJYNGlERUlnaUtjTkFDQUJRUVxcXG54cUlRY2dES2NoQ0NBQklRa0RRQ0FHUlEwQ0lBWkJkR29oQmlBSUlBa29BZ2hxSWdvZ0NFOGhDeUFKUVF4cUlRa2dDaUVJSUFzTkFBc0xcXFxuUWJDUHdBQkJOVUhBa01BQUVJb0dBQXNnQlVFSWFpQUlRUUFRMVFRZ0JVRUFOZ0lZSUFVZ0JTa0RDRGNERUNBRlFSQnFJQUVvQWdBZ0FTXFxcbmdDQ0JDSURDQUlJQVVvQWhnaUJtc2hDU0FGS0FJUUlBWnFJUVlDUUFKQUFrQUNRQUpBQWtBQ1FDQUVEZ1VGQkFNQ0FRQUxJQUpCREd4QlxcXG5kR29oQ2dOQUlBcEZEUVlnQnlnQ0FDRUJJQWNvQWdnaEN5QUZRU0JxSUFZZ0NTQUVFSjRISUFVb0Fpd2hCaUFGS0FJb0lRa2dCU2dDSUNcXFxuQUZLQUlrSUFNZ0JFR3drTUFBRU9jSklBVkJJR29nQ1NBR0lBc1FuZ2NnQlNnQ0xDRUpJQVVvQWlnaEJpQUZLQUlnSUFVb0FpUWdBU0FMXFxcblFiQ1F3QUFRNXdrZ0NrRjBhaUVLSUFkQkRHb2hCd3dBQ3dzZ0FrRU1iRUYwYWlFS0EwQWdDa1VOQlNBSEtBSUFJUVFnQnlnQ0NDRUxJQVxcXG5WQklHb2dCaUFKUVFRUW5nY2dCU2dDTENFR0lBVW9BaWdoQ1NBRktBSWdJQVVvQWlRZ0EwRUVRYkNRd0FBUTV3a2dCVUVnYWlBSklBWWdcXFxuQ3hDZUJ5QUZLQUlzSVFrZ0JTZ0NLQ0VHSUFVb0FpQWdCU2dDSkNBRUlBdEJzSkRBQUJEbkNTQUtRWFJxSVFvZ0IwRU1haUVIREFBTEN5XFxcbkFDUVF4c1FYUnFJUW9EUUNBS1JRMEVJQWNvQWdBaEJDQUhLQUlJSVFzZ0JVRWdhaUFHSUFsQkF4Q2VCeUFGS0FJc0lRWWdCU2dDS0NFSlxcXG5JQVVvQWlBZ0JTZ0NKQ0FEUVFOQnNKREFBQkRuQ1NBRlFTQnFJQWtnQmlBTEVKNEhJQVVvQWl3aENTQUZLQUlvSVFZZ0JTZ0NJQ0FGS0FcXFxuSWtJQVFnQzBHd2tNQUFFT2NKSUFwQmRHb2hDaUFIUVF4cUlRY01BQXNMSUFKQkRHeEJkR29oQ2dOQUlBcEZEUU1nQnlnQ0FDRUVJQWNvXFxcbkFnZ2hDeUFGUVNCcUlBWWdDVUVDRUo0SElBVW9BaXdoQmlBRktBSW9JUWtnQlNnQ0lDQUZLQUlrSUFOQkFrR3drTUFBRU9jSklBVkJJR1xcXG5vZ0NTQUdJQXNRbmdjZ0JTZ0NMQ0VKSUFVb0FpZ2hCaUFGS0FJZ0lBVW9BaVFnQkNBTFFiQ1F3QUFRNXdrZ0NrRjBhaUVLSUFkQkRHb2hcXFxuQnd3QUN3c2dBa0VNYkVGMGFpRUtBMEFnQ2tVTkFpQUhLQUlBSVFRZ0J5Z0NDQ0VMSUFWQklHb2dCaUFKUVFFUW5nY2dCU2dDTENFR0lBXFxcblVvQWlnaENTQUZLQUlnSUFVb0FpUWdBMEVCUWJDUXdBQVE1d2tnQlVFZ2FpQUpJQVlnQ3hDZUJ5QUZLQUlzSVFrZ0JTZ0NLQ0VHSUFVb1xcXG5BaUFnQlNnQ0pDQUVJQXRCc0pEQUFCRG5DU0FLUVhScUlRb2dCMEVNYWlFSERBQUxDeUFDUVF4c1FYUnFJUW9EUUNBS1JRMEJJQWNvQWdcXFxuQWhCQ0FIS0FJSUlRc2dCa0VBSUFOQkFFR3drTUFBRU9jSklBVkJJR29nQmlBSklBc1FuZ2NnQlNnQ0xDRUpJQVVvQWlnaEJpQUZLQUlnXFxcbklBVW9BaVFnQkNBTFFiQ1F3QUFRNXdrZ0NrRjBhaUVLSUFkQkRHb2hCd3dBQ3dzZ0FDQUZLUU1RTndJQUlBQkJDR29nQ0NBSmF6WUNBQVxcXG5zZ0JVRXdhaVFBQzRrSUFReC9Jd0JCMEFCcklnUWtBQ0FCUVFBMkFnZ2dCRUV3YWtFdElBSWdBeERWQlNBRVFjZ0FhaUVGSUFSQk9Hb29cXFxuQWdBaEJpQUVLQUpBSVFjZ0JDZ0NOQ0VJQTBBQ1FBSkFBa0FDUUNBSElBWkxEUUFnQnlBRUtBSThJZ2xKRFFBZ0JFRW9haUFFS0FKRUlBXFxcblZxUVg5cUxRQUFJQWdnQ1dvZ0J5QUpheEJ5SUFRb0FpaEJBVWNOQUNBRUtBSThJQVFvQWl4cUlnY2dCQ2dDUkNJSlFYOXFJZ3BKRFFNZ1xcXG5CeUFLYXlJTElBbHFJZ3dnQzBrTkF5QU1JQVpMRFFNZ0JFRWdhaUFKSUFWQkJFR0FuOEVBRU4wSklBZ2dDMm9nQ1NBRUtBSWdJQVFvQWlcXFxuUVFwZ3BGRFFNZ0JFRVlhaUFMSUFJZ0F4RFBCaUFFS0FJWUlnMUZEUUVnQkNnQ0hDRU9JQWNnQ2tZTkFpQUVRUkJxSUF0QkFXb2dBaUFEXFxcblFaU2d3UUFRK3dVZ0JDZ0NGQ0VESUFRb0FoQWhBZ3dDQzBIa2xzRUFJUTFCQUNFT0RBRUxJQUlnQTBFQUlBdEJoS0RCQUJEa0N3QUxBa1xcXG5BQ1FBSkFJQTBnRGhDYUEwVU5BQ0FFSUFJMkFqQWdCQ0FDSUFOcU5nSTBRWUFCSVE5QnlBQWhDRUVBSVFJZ0RpRURBa0FDUUFKQUEwQWdcXFxuQkVFSWFpQUVRVEJxRVBrSElBUXRBQWhCQVhGRkRRRWdCQzBBQ1NFR1FRQWdDR3NoQ3lBSVFScHFJUXhCSkNFSlFRRWhCeUFDSVFvRFFBXFxcbkpBQWtBZ0JrRlFha0gvQVhGQkNra05BQ0FHUWI5L2FpSUZRZjhCY1VFYVNRMEJJQVpCbjM5cUlnVkIvd0Z4UVJwSkRRRU1DQXNnQmtGcVxcXG5haUVGQ3lBSFJRMERJQXBCZjNNZ0IyNGdCVUgvQVhFaUJra05CaUFISUFac0lBcHFJUW9DUUNBTElBbHFRUm9nQ1NBTVNSdEJBU0FKSUFcXFxuaExHeUlGSUFaTERRQkJKQ0FGYXlJRnJTQUhyWDVDSUlpbkRRY2dCQ0FFUVRCcUVQa0hJQVF0QUFCQkFYRkZEUWNnQkMwQUFTRUdJQVVnXFxcbkIyd2hCeUFKUVNScUlRa01BUXNMSUFvZ0Ftc2dBMEVCYWlJRElBSkZFSkVGSVFnZ0EwVU5BeUFLSUFOdUlnY2dEMEYvYzBzTkJTQUhJQVxcXG45cUlnOUJnTEFEYzBHQWdMeC9ha0dBa0x4L1NRMEZJQTlCZ0lERUFFWU5CU0FLSUFjZ0EyeHJJUW9nQVNnQ0NFRURkQ0VKSUFFb0FnQWhcXFxuQndOQUFrQWdDUTBBQWtBZ0FTZ0NDQ0lISUFFb0FnUkhEUUFnQVNBSEVJNEpJQUVvQWdnaEJ3c2dBU2dDQUNBSFFRTjBhaUlISUE4MkFnXFxcblFnQnlBS05nSUFJQUVnQVNnQ0NFRUJhallDQ0NBS1FRRnFJUUlNQWdzQ1FDQUhLQUlBSWdZZ0Nra05BQ0FISUFaQkFXbzJBZ0FMSUFkQlxcXG5DR29oQnlBSlFYaHFJUWtNQUFzTEN5QUJLQUlBSUFFb0FnZ2dCRUhNQUdvUWRpQUFRZ0EzQWhBZ0FDQU5JQTVxTmdJRUlBQWdEVFlDQUNcXFxuQUFJQUVvQWdnaUJ6WUNEQ0FBSUFFb0FnQTJBZ2dnQUNBSElBNXFOZ0lZREFRTFFiQ1h3UUJCR1VHa29NRUFFSU1IQUF0QnNKZkJBRUVaXFxcblFiU2d3UUFRZ3djQUN5QUFRUUEyQWdBTUFRc2dBRUVBTmdJQUN5QUVRZEFBYWlRQUR3c2dCQ0FITmdKQURBQUxDNDBJQVExL0l3QkJzQVxcXG5GcklnUWtBQ0FFUVFBMkFoUWdBa0dBbE92Y0EwY2hCU0FBUVFGeUlRWWdBQ2dDQUNFSEFrQURRQ0FISWdoQkQwME5BUUpBQWtBZ0JFRVVcXFxuYWhDbkNRMEFBa0FnQ0VFQ2NRMEFJQUFnQ0VFQ2NpQUFLQUlBSWdjZ0J5QUlSaHMyQWdBZ0J5QUlSdzBEQ3lBRVFRQTJBbUFDUUVFQUVMXFxcbjhOSWdjTkFDQUVRZUFBYWhEUUJTRUhDeUFHRU9FRklRa0NRQUpBQWtBZ0FDZ0NBQ0lLUVJCSkRRQWdDa0VDY1VVTkFDQUhRUUEyQWdRZ1xcXG5CeUFGT2dBUUlBZEJDRFlDRENBSElBWTJBZ0FnQnhDNkRBSkFBa0FnQ1NnQ0JBMEFJQWxCQkdvaENnd0JDeUFKS0FJSVFRUnFJUW9MSUFcXFxub2dCellDQUNBSklBYzJBZ2dnQ1JERUNRSkFJQVVOQUNBSEVMME1EQU1MSUFjZ0FTQUNFTDRNRFFJZ0JFRUlhaUFIRU84RUlBUW9BZ3doXFxcbkNTQUVLQUlJSVFzZ0J4QzhERVVOQVNBSlFRUnFJUVpCQUNFRkEwQWdCaWdDQUNJS1JRMEZBa0FnQ2lBSFJnMEFJQXBCQkdvaEJpQUtJUVxcXG5VTUFRc0xJQVlnQnlnQ0JDSUtOZ0lBQWtBZ0NTZ0NDQ0FIUncwQUlBa2dCVFlDQ0F3RkN3TkFJQXBGRFFVZ0NpZ0NBQ0FMUmcwRklBb29cXFxuQWdRaENnd0FDd3NnQ1JERUNRd0JDeUFKRU1RSkN5QUVRZUFBYWhDUkN3c2dBQ2dDQUNFSERBRUxDeUFKRU1RSklBUkI0QUJxRUpFTElBXFxcbkFnQXlBQUtBSUFJZ2RxUVhacU5nSUFJQWRCQVhGRkRRQWdBQkRoQlNJTUtBSUVJUVpCQUNFTElBUkJBRFlDR0NBRVFRQTJBbHdnREVFRVxcXG5haUVLUVJRaEEwRUFJUWtEUUNBRFFRUnhJUTBnQTBFSWNTRU9Ba0FEUUNBTElROERRQ0FLSVFVZ0NTRUNJQVlpQjBVTkFpQUhRUVJxSVFcXFxub2dCeWdDQkNFR0lBY2hDU0FIS0FJQUlBQkhEUUFMQWtBZ0RrVU5BRUVCSVE4TUFnc2dCeWdDRENFUUFrQWdEVVVOQUVFQklRc2dCeUVKXFxcbklCQkJESEVOQVFzTElBVWdCallDQUFKQUlBd29BZ2dnQjBjTkFDQU1JQUkyQWdnTElCQWdBMm9oQXlBRVFSaHFJQWNRc2dNZ0R5RUxJQVxcXG5JaENTQUZJUW9NQVFzTEFrQWdCQ2dDWENJSFFRbEpEUUFnQkNnQ0hDRUhDd0pBSUFkRkRRQVFvdzRMQWtBZ0QwSC9BWEVOQUNBQUlBQW9cXFxuQWdCQmZuRTJBZ0FMQWtBQ1FDQUVLQUpjSWdCQkNFc05BQ0FFUVJocVFRUnlJUWNNQVFzZ0JDZ0NIQ0VBSUFRb0FpQWhCd3NnQUVFRGRDXFxcbkVBQTBBQ1FDQUFEUUFnREJERUNTQUVLQUljSVFBZ0JDZ0NYQ0VISUFRZ0JDZ0NHRFlDWUNBRVFRQWdBQ0FIUVFoTElna2JOZ0prSUFSQlxcXG40QUJxUVFocUlBUkJHR3BCQ0dwQlBCQ2tEUm9nQkNBQUlBY2dDUnMyQXF3QklBUkJBRFlDcUFFZ0JDQUhRUUFnQ1JzMkFxUUJBa0FEUUNcXFxuQUVRZUFBYWhDa0JrSC9BWEZCQWtZTkFSQ2pEZ3dBQ3dzZ0JFSGdBR29RZ0EwTUFnc2dCeWdDQUVFQU5nSUlJQWNvQWdBUXV3d2dCMEVCXFxcbk9nQUVJQUJCZUdvaEFDQUhRUWhxSVFjTUFBc0xJQVJCc0FGcUpBQWdDRUVRU1F1SUNRRUJmeU1BUVRCcklnSWtBQUpBQWtBQ1FBSkFBa1xcXG5BQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQXRBQUFPRWdBQkFnTUVCUVlIQ0FrS0N3d05EZzhRRVFBTElBSWdcXFxuQUMwQUFUb0FDQ0FDUVNScVFnRTNBZ0FnQWtFQ05nSWNJQUpCNk52TkFEWUNHQ0FDUWVZQk5nSVVJQUlnQWtFUWFqWUNJQ0FDSUFKQkNHXFxcbm8yQWhBZ0FTQUNRUmhxRUswRklRQU1FUXNnQWlBQUtRTUlOd01JSUFKQkpHcENBVGNDQUNBQ1FRSTJBaHdnQWtITTI4MEFOZ0lZSUFKQlxcXG41d0UyQWhRZ0FpQUNRUkJxTmdJZ0lBSWdBa0VJYWpZQ0VDQUJJQUpCR0dvUXJRVWhBQXdRQ3lBQ0lBQXBBd2czQXdnZ0FrRWtha0lCTndcXFxuSUFJQUpCQWpZQ0hDQUNRY3pielFBMkFoZ2dBa0hvQVRZQ0ZDQUNJQUpCRUdvMkFpQWdBaUFDUVFocU5nSVFJQUVnQWtFWWFoQ3RCU0VBXFxcbkRBOExJQUlnQUNzRENEa0RDQ0FDUVNScVFnRTNBZ0FnQWtFQ05nSWNJQUpCc052TkFEWUNHQ0FDUWVrQk5nSVVJQUlnQWtFUWFqWUNJQ1xcXG5BQ0lBSkJDR28yQWhBZ0FTQUNRUmhxRUswRklRQU1EZ3NnQWlBQUtBSUVOZ0lJSUFKQkpHcENBVGNDQUNBQ1FRSTJBaHdnQWtHUTI4MEFcXFxuTmdJWUlBSkI2Z0UyQWhRZ0FpQUNRUkJxTmdJZ0lBSWdBa0VJYWpZQ0VDQUJJQUpCR0dvUXJRVWhBQXdOQ3lBQ0lBQXBBZ1EzQXdnZ0FrXFxcbkVrYWtJQk53SUFJQUpCQVRZQ0hDQUNRZnphelFBMkFoZ2dBa0hyQVRZQ0ZDQUNJQUpCRUdvMkFpQWdBaUFDUVFocU5nSVFJQUVnQWtFWVxcXG5haEN0QlNFQURBd0xJQUpCSkdwQ0FEY0NBQ0FDUVFFMkFod2dBa0hzMnMwQU5nSVlJQUpCOU5qTkFEWUNJQ0FCSUFKQkdHb1FyUVVoQUFcXFxud0xDeUFDUVNScVFnQTNBZ0FnQWtFQk5nSWNJQUpCNU5yTkFEWUNHQ0FDUWZUWXpRQTJBaUFnQVNBQ1FSaHFFSzBGSVFBTUNnc2dBa0VrXFxcbmFrSUFOd0lBSUFKQkFUWUNIQ0FDUWREYXpRQTJBaGdnQWtIMDJNMEFOZ0lnSUFFZ0FrRVlhaEN0QlNFQURBa0xJQUpCSkdwQ0FEY0NBQ1xcXG5BQ1FRRTJBaHdnQWtHODJzMEFOZ0lZSUFKQjlOak5BRFlDSUNBQklBSkJHR29RclFVaEFBd0lDeUFDUVNScVFnQTNBZ0FnQWtFQk5nSWNcXFxuSUFKQnBOck5BRFlDR0NBQ1FmVFl6UUEyQWlBZ0FTQUNRUmhxRUswRklRQU1Cd3NnQWtFa2FrSUFOd0lBSUFKQkFUWUNIQ0FDUVpUYXpRXFxcbkEyQWhnZ0FrSDAyTTBBTmdJZ0lBRWdBa0VZYWhDdEJTRUFEQVlMSUFKQkpHcENBRGNDQUNBQ1FRRTJBaHdnQWtHSTJzMEFOZ0lZSUFKQlxcXG45TmpOQURZQ0lDQUJJQUpCR0dvUXJRVWhBQXdGQ3lBQ1FTUnFRZ0EzQWdBZ0FrRUJOZ0ljSUFKQi9Obk5BRFlDR0NBQ1FmVFl6UUEyQWlcXFxuQWdBU0FDUVJocUVLMEZJUUFNQkFzZ0FrRWtha0lBTndJQUlBSkJBVFlDSENBQ1Flalp6UUEyQWhnZ0FrSDAyTTBBTmdJZ0lBRWdBa0VZXFxcbmFoQ3RCU0VBREFNTElBSkJKR3BDQURjQ0FDQUNRUUUyQWh3Z0FrSFEyYzBBTmdJWUlBSkI5TmpOQURZQ0lDQUJJQUpCR0dvUXJRVWhBQVxcXG53Q0N5QUNRU1JxUWdBM0FnQWdBa0VCTmdJY0lBSkJ1Tm5OQURZQ0dDQUNRZlRZelFBMkFpQWdBU0FDUVJocUVLMEZJUUFNQVFzZ0FTQUFcXFxuS0FJRUlBQkJDR29vQWdBUS93b2hBQXNnQWtFd2FpUUFJQUFMa3dnQkJuOGpBRUV3YXlJQkpBQkJBQ0VDSUFCQkZHcEJBRFlDQUNBQVFRXFxcbnhxSVFNQ1FBSkFBa0FDUUFKQUEwQWdBVUVZYWlBQUVMWUVJQUV0QUJnTkF3SkFJQUV0QUJrTkFDQUJRUVUyQWlBZ0FDQUJRU0JxRU00SVxcXG5JUVFNQmdzQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFFdEFCb2lCRUVpUmcwQUlBUkJMVVlOQVNBRVFkc0FSZzBEQWtBZ0JFSG1BRVlOQUNcXFxuQUVRZTRBUmcwRkFrQWdCRUgwQUVZTkFDQUVRZnNBUmcwRklBUkJVR3BCL3dGeFFRcEpEUVFnQVVFS05nSWdJQUFnQVVFZ2FoRE9DQ0VFXFxcbkRBOExJQUFnQUNnQ0NFRUJhallDQ0NBQVFZU0F3QUJCQXhEREF5SUVSUTBHREE0TElBQWdBQ2dDQ0VFQmFqWUNDQ0FBUVlDQXdBQkJCQlxcXG5EREF5SUVSUTBGREEwTElBQWdBQ2dDQ0VFQmFqWUNDQ0FBRUtBRElnUkZEUVFNREFzZ0FDQUFLQUlJUVFGcU5nSUlDeUFBRVBrQklnUkZcXFxuRFFJTUNnc2dBeUFDUVFGeElBVVFyZ2dnQUNBQUtBSUlRUUZxTmdJSVFRQWhCaUFFSVFVTUFnc2dBQ0FBS0FJSVFRRnFOZ0lJSUFCQmg0XFxcbkRBQUVFREVNTURJZ1FOQ0FzQ1FDQUNRUUZ4RFFBZ0FVRVFhaUFERUx3SElBRXRBQkJCQVhGRkRRY2dBUzBBRVNFRkMwRUFJUVFNQVF0QlxcXG5BU0VFQ3dKQUEwQUNRQUpBSUFRT0FnQUJBUXRCQVNFR1FRRWhCQXdCQ3lBQlFSaHFJQUFRdGdRZ0FTMEFHQTBGQWtBQ1FBSkFBa0FDUUNcXFxuQUJMUUFaRFFCQkFpRUVJQVZCL3dGeElnVkIyd0JHRFFJZ0JVSDdBRVlOQVVHS2dNQUFRU2hCbUlIQUFCQ0RCd0FMQWtBQ1FBSkFBa0FnXFxcbkFTMEFHaUlFUWQwQVJnMEFJQVJCL1FCR0RRRWdCRUVzUmcwRERBY0xJQVZCL3dGeFFkc0FSdzBHREFFTElBVkIvd0Z4UWZzQVJ3MEZDeVxcXG5BQUlBQW9BZ2hCQVdvMkFnZ2dBVUVJYWlBREVMd0hJQUV0QUFoQkFYRkZEUXNnQVMwQUNTRUZEQU1MSUFaQkFYRkZEUVVnQUNBQUtBSUlcXFxuUVFGcU5nSUlEQVVMUVFNaEJBc2dBU0FFTmdJZ0lBQWdBVUVnYWhET0NDRUVEQWtMUVFBaEJBd0JDd3NnQmtFQmNVVU5BRUVISVFRQ1FDXFxcbkFGUWY4QmNTSUZRZHNBUmcwQUlBVkIrd0JIRFFOQkNDRUVDeUFCSUFRMkFpQWdBQ0FCUVNCcUVNNElJUVFNQmd0QkFTRUNJQVZCL3dGeFxcXG5RZnNBUncwQUlBRkJHR29nQUJDMkJDQUJMUUFZRFFNQ1FDQUJMUUFaRFFBZ0FVRUROZ0lnSUFBZ0FVRWdhaERPQ0NFRURBWUxJQUV0QUJcXFxucEJJa2NOQWlBQUlBQW9BZ2hCQVdvMkFnZ2dBQkNnQXlJRURRVWdBVUVZYWlBQUVMWUVJQUV0QUJnTkF3SkFJQUV0QUJrTkFDQUJRUU0yXFxcbkFpQWdBQ0FCUVNCcUVNNElJUVFNQmdzQ1FDQUJMUUFhUVRwSERRQkJBU0VDSUFBZ0FDZ0NDRUVCYWpZQ0NBd0JDd3NnQVVFR05nSWdJQVxcXG5BZ0FVRWdhaERPQ0NFRURBUUxRWXFBd0FCQktFR0lnY0FBRUlNSEFBc2dBVUVSTmdJZ0lBQWdBVUVnYWhET0NDRUVEQUlMSUFFb0Fod2hcXFxuQkF3QkMwRUFJUVFMSUFGQk1Hb2tBQ0FFQzYwSEFRaC9Ba0FDUUNBQUtBSUFJZ01nQUNnQ0NDSUVja1VOQUFKQUlBUkZEUUFnQVNBQ2FpXFxcbkVGSUFCQkRHb29BZ0JCQVdvaEJrRUFJUWNnQVNFSUFrQURRQ0FJSVFRZ0JrRi9haUlHUlEwQklBUWdCVVlOQWdKQUFrQWdCQ3dBQUNJSlxcXG5RWDlNRFFBZ0JFRUJhaUVJSUFsQi93RnhJUWtNQVFzZ0JDMEFBVUUvY1NFS0lBbEJIM0VoQ0FKQUlBbEJYMHNOQUNBSVFRWjBJQXB5SVFcXFxua2dCRUVDYWlFSURBRUxJQXBCQm5RZ0JDMEFBa0UvY1hJaENnSkFJQWxCY0U4TkFDQUtJQWhCREhSeUlRa2dCRUVEYWlFSURBRUxJQXBCXFxcbkJuUWdCQzBBQTBFL2NYSWdDRUVTZEVHQWdQQUFjWElpQ1VHQWdNUUFSZzBESUFSQkJHb2hDQXNnQnlBRWF5QUlhaUVISUFsQmdJREVBRVxcXG5jTkFBd0NDd3NnQkNBRlJnMEFBa0FnQkN3QUFDSUlRWDlLRFFBZ0NFRmdTUTBBSUFoQmNFa05BQ0FFTFFBQ1FUOXhRUVowSUFRdEFBRkJcXFxuUDNGQkRIUnlJQVF0QUFOQlAzRnlJQWhCL3dGeFFSSjBRWUNBOEFCeGNrR0FnTVFBUmcwQkN3SkFBa0FnQjBVTkFBSkFJQWNnQWtrTkFFXFxcbkVBSVFRZ0J5QUNSZzBCREFJTFFRQWhCQ0FCSUFkcUxBQUFRVUJJRFFFTElBRWhCQXNnQnlBQ0lBUWJJUUlnQkNBQklBUWJJUUVMQWtBZ1xcXG5BdzBBSUFBb0FoUWdBU0FDSUFCQkdHb29BZ0FvQWd3UkNRQVBDeUFBS0FJRUlRY0NRQUpBSUFKQkVFa05BQ0FCSUFJUVZDRUlEQUVMQWtcXFxuQWdBZzBBUVFBaENBd0JDeUFDUVFOeElRa0NRQUpBSUFKQkJFOE5BRUVBSVFnZ0FTRUVEQUVMSUFKQmZIRWhCa0VBSVFnZ0FTRUVBMEFnXFxcbkNDQUVMQUFBUWI5L1Ntb2dCQ3dBQVVHL2YwcHFJQVFzQUFKQnYzOUthaUFFTEFBRFFiOS9TbW9oQ0NBRVFRUnFJUVFnQmtGOGFpSUdEUVxcXG5BTEN5QUpSUTBBQTBBZ0NDQUVMQUFBUWI5L1Ntb2hDQ0FFUVFGcUlRUWdDVUYvYWlJSkRRQUxDd0pBSUFjZ0NFME5BRUVBSVFRZ0J5QUlcXFxuYXlJSUlRY0NRQUpBQWtBZ0FDMEFJQTRFQWdBQkFnSUxRUUFoQnlBSUlRUU1BUXNnQ0VFQmRpRUVJQWhCQVdwQkFYWWhCd3NnQkVFQmFpXFxcbkVFSUFCQkdHb29BZ0FoQ1NBQVFSUnFLQUlBSVFZZ0FDZ0NFQ0VJQWtBRFFDQUVRWDlxSWdSRkRRRWdCaUFJSUFrb0FoQVJCZ0JGRFFBTFxcXG5RUUVQQzBFQklRUWdDRUdBZ01RQVJnMENJQVlnQVNBQ0lBa29BZ3dSQ1FBTkFrRUFJUVFEUUFKQUlBY2dCRWNOQUNBSElBZEpEd3NnQkVcXFxuRUJhaUVFSUFZZ0NDQUpLQUlRRVFZQVJRMEFDeUFFUVg5cUlBZEpEd3NnQUNnQ0ZDQUJJQUlnQUVFWWFpZ0NBQ2dDREJFSkFBOExJQUFvXFxcbkFoUWdBU0FDSUFCQkdHb29BZ0FvQWd3UkNRQWhCQXNnQkF2eUJnRUpmd0pBQWtBZ0FFRURha0Y4Y1NJQ0lBQnJJZ01nQVVzTkFDQUJJQVxcXG5OcklnUkJCRWtOQUNBRVFRTnhJUVZCQUNFR1FRQWhBUUpBSUFJZ0FFWU5BQ0FEUVFOeElRY0NRQUpBSUFJZ0FFRi9jMnBCQTA4TkFFRUFcXFxuSVFFZ0FDRUNEQUVMSUFOQmZIRWhDRUVBSVFFZ0FDRUNBMEFnQVNBQ0xBQUFRYjkvU21vZ0Fpd0FBVUcvZjBwcUlBSXNBQUpCdjM5S2FpXFxcbkFDTEFBRFFiOS9TbW9oQVNBQ1FRUnFJUUlnQ0VGOGFpSUlEUUFMQ3lBSFJRMEFBMEFnQVNBQ0xBQUFRYjkvU21vaEFTQUNRUUZxSVFJZ1xcXG5CMEYvYWlJSERRQUxDeUFBSUFOcUlRQUNRQ0FGUlEwQUlBQWdCRUY4Y1dvaUFpd0FBRUcvZjBvaEJpQUZRUUZHRFFBZ0JpQUNMQUFCUWJcXFxuOS9TbW9oQmlBRlFRSkdEUUFnQmlBQ0xBQUNRYjkvU21vaEJnc2dCRUVDZGlFRElBWWdBV29oQndOQUlBQWhCaUFEUlEwQ0lBTkJ3QUVnXFxcbkEwSEFBVWtiSWdSQkEzRWhCU0FFUVFKMElRa0NRQUpBSUFSQi9BRnhJZ29OQUVFQUlRSU1BUXNnQmlBS1FRSjBhaUVJUVFBaEFpQUdJUVxcXG5BRFFDQUFSUTBCSUFCQkRHb29BZ0FpQVVGL2MwRUhkaUFCUVFaMmNrR0Jnb1FJY1NBQVFRaHFLQUlBSWdGQmYzTkJCM1lnQVVFR2RuSkJcXFxuZ1lLRUNIRWdBRUVFYWlnQ0FDSUJRWDl6UVFkMklBRkJCblp5UVlHQ2hBaHhJQUFvQWdBaUFVRi9jMEVIZGlBQlFRWjJja0dCZ29RSWNTXFxcbkFDYW1wcWFpRUNJQUJCRUdvaUFDQUlSdzBBQ3dzZ0F5QUVheUVESUFZZ0NXb2hBQ0FDUVFoMlFmK0IvQWR4SUFKQi80SDhCM0ZxUVlHQVxcXG5CR3hCRUhZZ0Iyb2hCeUFGUlEwQUN3SkFBa0FnQmcwQVFRQWhBQXdCQ3lBR0lBcEJBblJxSWdJb0FnQWlBRUYvYzBFSGRpQUFRUVoyY2tcXFxuR0Jnb1FJY1NFQUlBVkJBVVlOQUNBQ0tBSUVJZ0ZCZjNOQkIzWWdBVUVHZG5KQmdZS0VDSEVnQUdvaEFDQUZRUUpHRFFBZ0FpZ0NDQ0lDXFxcblFYOXpRUWQySUFKQkJuWnlRWUdDaEFoeElBQnFJUUFMSUFCQkNIWkIvNEVjY1NBQVFmK0IvQWR4YWtHQmdBUnNRUkIySUFkcUR3c0NRQ1xcXG5BQkRRQkJBQThMSUFGQkEzRWhBZ0pBQWtBZ0FVRUVUdzBBUVFBaEJ3d0JDeUFCUVh4eElRRkJBQ0VIQTBBZ0J5QUFMQUFBUWI5L1Ntb2dcXFxuQUN3QUFVRy9mMHBxSUFBc0FBSkJ2MzlLYWlBQUxBQURRYjkvU21vaEJ5QUFRUVJxSVFBZ0FVRjhhaUlCRFFBTEN5QUNSUTBBQTBBZ0J5XFxcbkFBTEFBQVFiOS9TbW9oQnlBQVFRRnFJUUFnQWtGL2FpSUNEUUFMQ3lBSEM0a0hBZzUvQVg0akFFRWdheUlESkFCQkFTRUVBa0FDUUFKQVxcXG5JQUlvQWhRaUJVRWlJQUpCR0dvb0FnQWlCaWdDRUNJSEVRWUFEUUFDUUFKQUlBRU5BRUVBSVFKQkFDRUJEQUVMSUFBZ0FXb2hDRUVBSVFcXFxuSWdBQ0VKUVFBaENnSkFBMEFDUUFKQUlBa2lDeXdBQUNJTVFYOU1EUUFnQzBFQmFpRUpJQXhCL3dGeElRME1BUXNnQ3kwQUFVRS9jU0VPXFxcbklBeEJIM0VoRHdKQUlBeEJYMHNOQUNBUFFRWjBJQTV5SVEwZ0MwRUNhaUVKREFFTElBNUJCblFnQ3kwQUFrRS9jWEloRGlBTFFRTnFJUVxcXG5rQ1FDQU1RWEJQRFFBZ0RpQVBRUXgwY2lFTkRBRUxJQTVCQm5RZ0NTMEFBRUUvY1hJZ0QwRVNkRUdBZ1BBQWNYSWlEVUdBZ01RQVJnMENcXFxuSUF0QkJHb2hDUXNnQXlBTlFZR0FCQkJoQWtBQ1FDQURMUUFBUVlBQlJnMEFJQU10QUFzZ0F5MEFDbXRCL3dGeFFRRkdEUUFnQ2lBQ1NRXFxcbjBIQWtBZ0FrVU5BQUpBSUFJZ0FVa05BQ0FDSUFGR0RRRU1DUXNnQUNBQ2Fpd0FBRUZBU0EwSUN3SkFJQXBGRFFBQ1FDQUtJQUZKRFFBZ1xcXG5DaUFCUncwSkRBRUxJQUFnQ21vc0FBQkJ2MzlNRFFnTEFrQUNRQ0FGSUFBZ0Ftb2dDaUFDYXlBR0tBSU1FUWtBRFFBZ0EwRVFha0VJYWlcXFxuSVBJQU5CQ0dvb0FnQTJBZ0FnQXlBREtRTUFJaEUzQXhBQ1FDQVJwMEgvQVhGQmdBRkhEUUJCZ0FFaERnTkFBa0FDUUNBT1FmOEJjVUdBXFxcbkFVWU5BQ0FETFFBYUlnd2dBeTBBRzA4TkJTQURJQXhCQVdvNkFCb2dERUVLVHcwSElBTkJFR29nREdvdEFBQWhBZ3dCQzBFQUlRNGdEMFxcXG5FQU5nSUFJQU1vQWhRaEFpQURRZ0EzQXhBTElBVWdBaUFIRVFZQVJRMEFEQUlMQ3lBRExRQWFJZ0pCQ2lBQ1FRcExHeUVNSUFNdEFCc2lcXFxuRGlBQ0lBNGdBa3NiSVJBRFFDQVFJQUpHRFFJZ0F5QUNRUUZxSWc0NkFCb2dEQ0FDUmcwRUlBTkJFR29nQW1vaER5QU9JUUlnQlNBUExRXFxcbkFBSUFjUkJnQkZEUUFMQzBFQklRUU1CZ3RCQVNFQ0FrQWdEVUdBQVVrTkFFRUNJUUlnRFVIL0QwME5BRUVEUVFRZ0RVR0FnQVJKR3lFQ1xcXG5DeUFDSUFwcUlRSUxJQW9nQzJzZ0NXb2hDaUFKSUFoSERRRU1BZ3NMSUF4QkNrSDR0ODRBRUlFRkFBc0NRQ0FDRFFCQkFDRUNEQUVMQWtcXFxuQUNRQ0FDSUFGSkRRQWdBU0FDUmcwQkRBUUxJQUFnQW1vc0FBQkJ2MzlNRFFNTElBRWdBbXNoQVFzZ0JTQUFJQUpxSUFFZ0JpZ0NEQkVKXFxcbkFBMEFJQVZCSWlBSEVRWUFJUVFMSUFOQklHb2tBQ0FFRHdzZ0FDQUJJQUlnQVVIY29jNEFFT1FMQUFzZ0FDQUJJQUlnQ2tITW9jNEFFT1xcXG5RTEFBdkRCd0VHZnlNQVFUQnJJZ0VrQUVFQUlRSWdBRUVVYWtFQU5nSUFJQUJCREdvaEF3SkFBa0FDUUFKQUFrQURRQ0FCUVJocUlBQVFcXFxudWdRZ0FTMEFHQTBEQWtBZ0FTMEFHUTBBSUFGQkJUWUNJQ0FBSUFGQklHb1EzUWdoQkF3R0N3SkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0FTXFxcbjBBR2lJRVFTSkdEUUFnQkVFdFJnMEJJQVJCMndCR0RRTUNRQ0FFUWVZQVJnMEFJQVJCN2dCR0RRVUNRQ0FFUWZRQVJnMEFJQVJCK3dCR1xcXG5EUVVnQkVGUWFrSC9BWEZCQ2trTkJDQUJRUW8yQWlBZ0FDQUJRU0JxRU4wSUlRUU1Ed3NnQUJDRERDQUFRWVNBd0FCQkF4RDhBeUlFUlFcXFxuMEdEQTRMSUFBUWd3d2dBRUdBZ01BQVFRUVEvQU1pQkVVTkJRd05DeUFBRUlNTUlBQVEyUTBpQkVVTkJBd01DeUFBRUlNTUN5QUFFSU1DXFxcbklnUkZEUUlNQ2dzZ0F5QUNRUUZ4SUFVUXJnZ2dBQkNEREVFQUlRWWdCQ0VGREFJTElBQVFnd3dnQUVHSGdNQUFRUU1RL0FNaUJBMElDd1xcXG5KQUlBSkJBWEVOQUNBQlFSQnFJQU1RdkFjZ0FTMEFFRUVCY1VVTkJ5QUJMUUFSSVFVTFFRQWhCQXdCQzBFQklRUUxBa0FEUUFKQUFrQWdcXFxuQkE0Q0FBRUJDMEVCSVFaQkFTRUVEQUVMSUFGQkdHb2dBQkM2QkNBQkxRQVlEUVVDUUFKQUFrQUNRQUpBSUFFdEFCa05BRUVDSVFRZ0JVXFxcbkgvQVhFaUJVSGJBRVlOQWlBRlFmc0FSZzBCUVlxQXdBQkJLRUdZZ2NBQUVJTUhBQXNDUUFKQUFrQUNRQ0FCTFFBYUlnUkIzUUJHRFFBZ1xcXG5CRUg5QUVZTkFTQUVRU3hHRFFNTUJ3c2dCVUgvQVhGQjJ3QkhEUVlNQVFzZ0JVSC9BWEZCK3dCSERRVUxJQUFRZ3d3Z0FVRUlhaUFERUxcXFxud0hJQUV0QUFoQkFYRkZEUXNnQVMwQUNTRUZEQU1MSUFaQkFYRkZEUVVnQUJDRERBd0ZDMEVESVFRTElBRWdCRFlDSUNBQUlBRkJJR29RXFxcbjNRZ2hCQXdKQzBFQUlRUU1BUXNMSUFaQkFYRkZEUUJCQnlFRUFrQWdCVUgvQVhFaUJVSGJBRVlOQUNBRlFmc0FSdzBEUVFnaEJBc2dBU1xcXG5BRU5nSWdJQUFnQVVFZ2FoRGRDQ0VFREFZTFFRRWhBaUFGUWY4QmNVSDdBRWNOQUNBQlFSaHFJQUFRdWdRZ0FTMEFHQTBEQWtBZ0FTMEFcXFxuR1EwQUlBRkJBellDSUNBQUlBRkJJR29RM1FnaEJBd0dDeUFCTFFBYVFTSkhEUUlnQUJDRERDQUFFTmtOSWdRTkJTQUJRUmhxSUFBUXVnXFxcblFnQVMwQUdBMERBa0FnQVMwQUdRMEFJQUZCQXpZQ0lDQUFJQUZCSUdvUTNRZ2hCQXdHQ3dKQUlBRXRBQnBCT2tjTkFDQUFFSU1NUVFFaFxcXG5BZ3dCQ3dzZ0FVRUdOZ0lnSUFBZ0FVRWdhaERkQ0NFRURBUUxRWXFBd0FCQktFR0lnY0FBRUlNSEFBc2dBVUVSTmdJZ0lBQWdBVUVnYWhcXFxuRGRDQ0VFREFJTElBRW9BaHdoQkF3QkMwRUFJUVFMSUFGQk1Hb2tBQ0FFQzZjSEFnaC9BbjRqQUVIZ0FHc2lCaVFBSUFZZ0JEWUNIQ0FHXFxcbklBTTJBaGdnQVNnQ0RDRUhJQVlnQmtFWWFqWUNKQUpBQWtBZ0J5QUNhaUlESUFkUERRQWdCa0VJYWlBRkVMb0dJQVlvQWd3aENDQUdLQVxcXG5JSUlRUU1BUXRCQVNFRUFrQWdBeUFCS0FJRUlna2dDVUVCYWlJS1FRTjJRUWRzSUFsQkNFa2JJZ3RCQVhaTkRRQWdCa0hBQUdvZ0F5QUxcXFxuUVFGcUlnUWdBeUFFU3hzZ0JSQ2RBZ0pBSUFZb0FrQWlCUTBBSUFaQnlBQnFLQUlBSVFnZ0JpZ0NSQ0VFREFJTElBWkNoSUNBZ0lBQk53XFxcbk00SUFZZ0JpZ0NSRFlDTENBR0lBVTJBaWdnQmlBSE5nSTBJQVlnQmlnQ1NDQUhheUlJTmdJd0lBRW9BZ0FpQ1VGOGFpRURRUUFoQkFOQVxcXG5Ba0FnQ2lBRVJ3MEFJQUVwQWdBaERpQUJJQVlwQXlnM0FnQWdCa0VvYWtFSWFpSUVLUU1BSVE4Z0JDQUJRUWhxSWdFcEFnQTNBd0FnQVNcXFxuQVBOd0lBSUFZZ0RqY0RLQUpBSUFZb0FpeEZEUUFnQmtFb2FrRUVRUWdReVFjTFFZR0FnSUI0SVFRTUF3c0NRQ0FKSUFScUxBQUFRUUJJXFxcbkRRQWdCa0VvYWlBR1FTaHFJQVpCSkdvZ0FTQUVFSkVISWc0USt3TWlBaUFPRU1FSUlBVWdBa0VDZEd0QmZHb2dBeWdBQURZQUFBc2dCRVxcXG5FQmFpRUVJQU5CZkdvaEF3d0FDd3NnQmtFQk9nQTBJQVpCQnpZQ01DQUdJQW8yQWl3Z0JrRUFOZ0lvSUFFb0FnQWhBZ05BQWtBQ1FDQUVcXFxuUWY4QmNRMEFJQVpCRUdvZ0JrRW9haUFHS0FJd0VJb0hJQVlvQWhRaEF5QUdLQUlRSVFRTUFRdEJBQ0VFSUFaQkFEb0FOQ0FHS0FJb0lnXFxcbk1nQmlnQ0xFOE5BRUVCSVFRZ0JpQURRUUZxTmdJb0N3SkFJQVFOQUFKQUFrQWdDa0VJU1EwQUlBSWdDbW9nQWlrQUFEY0FBQXdCQ3lBQ1xcXG5RUWhxSUFJZ0NoQ2pEUm9MUVFBaERBTkFBa0FDUUNBTUlnTWdDa1lOQUNBRFFRRnFJUXdnQWlBRGFpSU5MUUFBUVlBQlJ3MENJQUlnQTBcXFxuRUNkR3RCZkdvaENBTkFJQU1nQ1NBR1FTUnFJQUVnQXhDUkJ5SU9wM0VpQldzZ0FTQU9FUHNESWdRZ0JXdHpJQWx4UVFoSkRRSWdBaUFFXFxcbmFpMEFBQ0VGSUFFZ0JDQU9FTUVJSUFJZ0JFRUNkR3RCZkdvaEJBSkFJQVZCL3dGR0RRQWdDQ0FFUVFRUXB3Y01BUXNMSUExQi93RTZBQVxcXG5BZ0EwRjRhaUFKY1NBQ2FrRUlha0gvQVRvQUFDQUVJQWdvQUFBMkFBQU1BZ3NnQVNBTElBZHJOZ0lJUVlHQWdJQjRJUVFNQkFzZ0FTQURcXFxuSUE0UXdRZ01BQXNMSUFJZ0Eyb2lCQ0FFS1FNQUlnNUNmNFZDQjRoQ2dZS0VpSkNnd0lBQmd5QU9Rdi8rL2Z2Mzc5Ky8vd0NFZkRjREFDXFxcbkFHTFFBMElRUU1BQXNMSUFBZ0NEWUNCQ0FBSUFRMkFnQWdCa0hnQUdva0FBdW5Cd0lJZndKK0l3QkI0QUJySWdZa0FDQUdJQVEyQWh3Z1xcXG5CaUFETmdJWUlBRW9BZ3doQnlBR0lBWkJHR28yQWlRQ1FBSkFJQWNnQW1vaUF5QUhUdzBBSUFaQkNHb2dCUkM2QmlBR0tBSU1JUWdnQmlcXFxuZ0NDQ0VFREFFTFFRRWhCQUpBSUFNZ0FTZ0NCQ0lKSUFsQkFXb2lDa0VEZGtFSGJDQUpRUWhKR3lJTFFRRjJUUTBBSUFaQndBQnFJQU1nXFxcbkMwRUJhaUlFSUFNZ0JFc2JJQVVRblFJQ1FDQUdLQUpBSWdVTkFDQUdRY2dBYWlnQ0FDRUlJQVlvQWtRaEJBd0NDeUFHUW9TQWdJQ0FBVFxcXG5jRE9DQUdJQVlvQWtRMkFpd2dCaUFGTmdJb0lBWWdCellDTkNBR0lBWW9Ba2dnQjJzaUNEWUNNQ0FCS0FJQUlnbEJmR29oQTBFQUlRUURcXFxuUUFKQUlBb2dCRWNOQUNBQktRSUFJUTRnQVNBR0tRTW9Od0lBSUFaQktHcEJDR29pQkNrREFDRVBJQVFnQVVFSWFpSUJLUUlBTndNQUlBXFxcbkVnRHpjQ0FDQUdJQTQzQXlnQ1FDQUdLQUlzUlEwQUlBWkJLR3BCQkVFSUVNa0hDMEdCZ0lDQWVDRUVEQU1MQWtBZ0NTQUVhaXdBQUVFQVxcXG5TQTBBSUFaQktHb2dCa0VvYWlBR1FTUnFJQUVnQkJDU0J5SU9FUHNESWdJZ0RoREJDQ0FGSUFKQkFuUnJRWHhxSUFNb0FBQTJBQUFMSUFcXFxuUkJBV29oQkNBRFFYeHFJUU1NQUFzTElBWkJBVG9BTkNBR1FRYzJBakFnQmlBS05nSXNJQVpCQURZQ0tDQUJLQUlBSVFJRFFBSkFBa0FnXFxcbkJFSC9BWEVOQUNBR1FSQnFJQVpCS0dvZ0JpZ0NNQkNLQnlBR0tBSVVJUU1nQmlnQ0VDRUVEQUVMUVFBaEJDQUdRUUE2QURRZ0JpZ0NLQ1xcXG5JRElBWW9BaXhQRFFCQkFTRUVJQVlnQTBFQmFqWUNLQXNDUUNBRURRQUNRQUpBSUFwQkNFa05BQ0FDSUFwcUlBSXBBQUEzQUFBTUFRc2dcXFxuQWtFSWFpQUNJQW9Rb3cwYUMwRUFJUXdEUUFKQUFrQWdEQ0lESUFwR0RRQWdBMEVCYWlFTUlBSWdBMm9pRFMwQUFFR0FBVWNOQWlBQ0lBXFxcbk5CQW5SclFYeHFJUWdEUUNBRElBa2dCa0VrYWlBQklBTVFrZ2NpRHFkeElnVnJJQUVnRGhEN0F5SUVJQVZyY3lBSmNVRUlTUTBDSUFJZ1xcXG5CR290QUFBaEJTQUJJQVFnRGhEQkNDQUNJQVJCQW5SclFYeHFJUVFDUUNBRlFmOEJSZzBBSUFnZ0JFRUVFS2NIREFFTEN5QU5RZjhCT2dcXFxuQUFJQU5CZUdvZ0NYRWdBbXBCQ0dwQi93RTZBQUFnQkNBSUtBQUFOZ0FBREFJTElBRWdDeUFIYXpZQ0NFR0JnSUNBZUNFRURBUUxJQUVnXFxcbkF5QU9FTUVJREFBTEN5QUNJQU5xSWdRZ0JDa0RBQ0lPUW4rRlFnZUlRb0dDaElpUW9NQ0FBWU1nRGtMLy92Mzc5Ky9mdi84QWhIdzNBd1xcXG5BZ0JpMEFOQ0VFREFBTEN5QUFJQWcyQWdRZ0FDQUVOZ0lBSUFaQjRBQnFKQUFMcHdjQ0NIOENmaU1BUWVBQWF5SUdKQUFnQmlBRU5nSWNcXFxuSUFZZ0F6WUNHQ0FCS0FJTUlRY2dCaUFHUVJocU5nSWtBa0FDUUNBSElBSnFJZ01nQjA4TkFDQUdRUWhxSUFVUXVnWWdCaWdDRENFSUlBXFxcbllvQWdnaEJBd0JDMEVCSVFRQ1FDQURJQUVvQWdRaUNTQUpRUUZxSWdwQkEzWkJCMndnQ1VFSVNSc2lDMEVCZGswTkFDQUdRY0FBYWlBRFxcXG5JQXRCQVdvaUJDQURJQVJMR3lBRkVKMENBa0FnQmlnQ1FDSUZEUUFnQmtISUFHb29BZ0FoQ0NBR0tBSkVJUVFNQWdzZ0JrS0VnSUNBZ0FcXFxuRTNBemdnQmlBR0tBSkVOZ0lzSUFZZ0JUWUNLQ0FHSUFjMkFqUWdCaUFHS0FKSUlBZHJJZ2cyQWpBZ0FTZ0NBQ0lKUVh4cUlRTkJBQ0VFXFxcbkEwQUNRQ0FLSUFSSERRQWdBU2tDQUNFT0lBRWdCaWtES0RjQ0FDQUdRU2hxUVFocUlnUXBBd0FoRHlBRUlBRkJDR29pQVNrQ0FEY0RBQ1xcXG5BQklBODNBZ0FnQmlBT053TW9Ba0FnQmlnQ0xFVU5BQ0FHUVNocVFRUkJDQkRKQnd0QmdZQ0FnSGdoQkF3REN3SkFJQWtnQkdvc0FBQkJcXFxuQUVnTkFDQUdRU2hxSUFaQktHb2dCa0VrYWlBQklBUVFrd2NpRGhEN0F5SUNJQTRRd1FnZ0JTQUNRUUowYTBGOGFpQURLQUFBTmdBQUN5XFxcbkFFUVFGcUlRUWdBMEY4YWlFRERBQUxDeUFHUVFFNkFEUWdCa0VITmdJd0lBWWdDallDTENBR1FRQTJBaWdnQVNnQ0FDRUNBMEFDUUFKQVxcXG5JQVJCL3dGeERRQWdCa0VRYWlBR1FTaHFJQVlvQWpBUWlnY2dCaWdDRkNFRElBWW9BaEFoQkF3QkMwRUFJUVFnQmtFQU9nQTBJQVlvQWlcXFxuZ2lBeUFHS0FJc1R3MEFRUUVoQkNBR0lBTkJBV28yQWlnTEFrQWdCQTBBQWtBQ1FDQUtRUWhKRFFBZ0FpQUthaUFDS1FBQU53QUFEQUVMXFxcbklBSkJDR29nQWlBS0VLTU5HZ3RCQUNFTUEwQUNRQUpBSUF3aUF5QUtSZzBBSUFOQkFXb2hEQ0FDSUFOcUlnMHRBQUJCZ0FGSERRSWdBaVxcXG5BRFFRSjBhMEY4YWlFSUEwQWdBeUFKSUFaQkpHb2dBU0FERUpNSElnNm5jU0lGYXlBQklBNFErd01pQkNBRmEzTWdDWEZCQ0VrTkFpQUNcXFxuSUFScUxRQUFJUVVnQVNBRUlBNFF3UWdnQWlBRVFRSjBhMEY4YWlFRUFrQWdCVUgvQVVZTkFDQUlJQVJCQkJDbkJ3d0JDd3NnRFVIL0FUXFxcbm9BQUNBRFFYaHFJQWx4SUFKcVFRaHFRZjhCT2dBQUlBUWdDQ2dBQURZQUFBd0NDeUFCSUFzZ0IyczJBZ2hCZ1lDQWdIZ2hCQXdFQ3lBQlxcXG5JQU1nRGhEQkNBd0FDd3NnQWlBRGFpSUVJQVFwQXdBaURrSi9oVUlIaUVLQmdvU0lrS0RBZ0FHRElBNUMvLzc5Ky9mdjM3Ly9BSVI4TndcXFxuTUFJQVl0QURRaEJBd0FDd3NnQUNBSU5nSUVJQUFnQkRZQ0FDQUdRZUFBYWlRQUM5Z0hBZ1ovQVg0akFFR0FBbXNpQXlRQUlBTkJ1QUZxXFxcbklBRW9BcVFCUVFocUlBSVFyUVlDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQU1vQXJnQklnUkZEUUFnQXlBREtRUEFBVGNERUNBRElBTW9BclxcXG53Qk5nSU1JQU1nQkRZQ0NDQURRYmdCYWlBQktBS2tBVUVJYWlBRFFRaHFFTmtCSUFOQkNHcEJCSEloQkNBREtBSzRBU0VGSUFNb0FzQUJcXFxuSWdaQmdaVHIzQU5HRFFFZ0F5Z0N2QUVoQnlBRFFkZ0Fha0VNYWlBRFFiZ0Jha0VNYWtFMEVLUU5HaUFESUFjMkFsd2dBeUFGTmdKWUlBXFxcbk1nQmpZQ1lBSkFBa0FDUUNBR1FZQ1U2OXdEUmcwQUlBTkJHR29nQTBIWUFHcEJ3QUFRcEEwYUlBTWdBMEVvYWlJRkVJUUlJQU5CdUFGcVxcXG5JQUlnQXlnQ0FDQURLQUlFRUdjZ0EwSFlBR3BCQ0dvaUJpQURRYmdCYWtFSWFpSUlLQUlBTmdJQUlBTWdBeWtEdUFFM0ExZ2dBeTBBeEFcXFxuRWlCMEVDUmcwQklBTkJtQUZxUVE5cUlBTkJ1QUZxUVE5cUxRQUFPZ0FBSUFOQm1BRnFRUWhxSUFZb0FnQTJBZ0FnQXlBREx3REZBVHNBXFxcbnBRRWdBeUFES1FOWU53T1lBU0FESUFjNkFLUUJJQU5CR0dvUTlndEZEUUlNQ0FzZ0EwSFlBR29RcFFzZ0FFRUFPd0VBREFnTElBZ2dCaVxcXG5nQ0FEWUNBQ0FESUFNcEExZzNBN2dCSUFOQnVBRnFFTE1OSVFFZ0FFRUJPZ0FBSUFBZ0FUWUNCQXdGQ3lBRFFiZ0JhaUFCS0FLa0FVRUlcXFxuYWlBRFFRaHFFUFlFSUFNb0FyZ0JEUUlDUUFKQUlBTW9BcndCSWdaRkRRQWdBMEc0QVdwQkNHb3BBd0FoQ1NBRElBWTJBbGdnQXlBSk53XFxcbkpjSUFOQnVBRnFJQU5CbUFGcUlBRW9BcGdCSUFGQm9BRnFLQUlBRUowRklBTkJxQUZxSUFNZ0F5Z0N1QUVnQXlnQ3dBRWdCaUFKUWlDSVxcXG5weENMQXdKQUlBTXRBS2dCUVFSR0RRQWdBeWtEcUFFaUNVTC9BWU5DQkZJTkFnc2dBMEc0QVdvUTR3d2dBMEhZQUdvUTR3d01Cd3NnQUVcXFxuRUFPd0VBREFRTElBTWdDVGNEcUFFZ0EwR29BV29RcFEwaEFTQUFRUUU2QUFBZ0FDQUJOZ0lFSUFOQnVBRnFFT01NSUFOQjJBQnFFT01NXFxcbkRBTUxJQU1vQXJ3QklRRWdBRUVCT2dBQUlBQWdBVFlDQkF3R0N5QUFRUUU2QUFBZ0FDQUZOZ0lFREFRTElBTW9BcndCSVFFZ0FFRUJPZ1xcXG5BQUlBQWdBVFlDQkFzZ0EwR1lBV29RNGd3TElBTkJHR29RbndzTUFRc2dBMEdvQVdwQkNHb2dBMEdZQVdwQkNHb3BBd0EzQXdBZ0F5QURcXFxuS1FPWUFUY0RxQUVnQTBHNEFXb2dBaENVQlNBRFFkZ0Fha0VZYWlBRlFSaHFLUU1BTndNQUlBTkIyQUJxUVJCcUlBVkJFR29wQXdBM0F3XFxcbkFnQTBIWUFHcEJDR29nQlVFSWFpa0RBRGNEQUNBRElBVXBBd0EzQTFnZ0FTQURRYWdCYWlBRFFiZ0JhaUFEUWRnQWFoQS9JQUJCZ0FJN1xcXG5BUUFnQTBISUFHb1E0d3dMSUFRUXpBc0xJQU5CZ0FKcUpBQUxwZ2NCQm44Q1FBSkFBa0FDUUNBQ1FRbEpEUUFnQWlBREVMNEJJZ0lOQVVcXFxuRUFEd3NRaWc0aUFVRUlFSndMSVFSQkZFRUlFSndMSVFWQkVFRUlFSndMSVFaQkFDRUNRUUJCRUVFSUVKd0xRUUowYXlJSElBRWdCaUFFXFxcbklBVnFhbXRCK1A5N2FrRjNjVUY5YWlJQklBY2dBVWtiSUFOTkRRRkJFQ0FEUVFScVFSQkJDQkNjQzBGN2FpQURTeHRCQ0JDY0N5RUVJQVxcXG5BUTBRMGhBU0FCSUFFUWxRMGlCUkRPRFNFR0FrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQkVOUU1EUUFnQlNBRVR3MEJJQVpCQUNnQ2pLdFBcXFxuUmcwQ0lBWkJBQ2dDaUt0UFJnMERJQVlRcEF3TkJ5QUdFSlVOSWdjZ0JXb2lCU0FFU1EwSElBVWdCR3NoQ0NBSFFZQUNTUTBFSUFZUTlnXFxcbkVNQlFzZ0FSQ1ZEU0VGSUFSQmdBSkpEUVlDUUNBRklBUkJCR3BKRFFBZ0JTQUVhMEdCZ0FoSkRRWUxRZUNuendBZ0FTQUJLQUlBSWdaclxcXG5JQVVnQm1wQkVHb2lCeUFFUVI5cVFlQ256d0FRa1E0UW5Bc2lCVUVCRUl3T0lnUkZEUVlnQkNBR2FpSUJJQVVnQm1zaUEwRndhaUlDTmdcXFxuSUVFSWtPSVFBZ0FTQUNFTTROSUFBMkFnUWdBU0FEUVhScUVNNE5RUUEyQWdSQkFFRUFLQUtRcTA4Z0JTQUhhMm9pQXpZQ2tLdFBRUUJCXFxcbkFDZ0NuS3RQSWdJZ0JDQUVJQUpMR3pZQ25LdFBRUUJCQUNnQ2xLdFBJZ0lnQXlBQ0lBTkxHellDbEt0UERBa0xJQVVnQkdzaUJVRVFRUVxcXG5nUW5BdEpEUVFnQVNBRUVNNE5JUVlnQVNBRUVMc0pJQVlnQlJDN0NTQUdJQVVRZkF3RUMwRUFLQUtFcTA4Z0JXb2lCU0FFVFEwRUlBRWdcXFxuQkJET0RTRUdJQUVnQkJDN0NTQUdJQVVnQkdzaUJFRUJjallDQkVFQUlBUTJBb1NyVDBFQUlBWTJBb3lyVHd3REMwRUFLQUtBcTA4Z0JXXFxcbm9pQlNBRVNRMERBa0FDUUNBRklBUnJJZ1pCRUVFSUVKd0xUdzBBSUFFZ0JSQzdDVUVBSVFaQkFDRUZEQUVMSUFFZ0JCRE9EU0lGSUFZUVxcXG56ZzBoQnlBQklBUVF1d2tnQlNBR0VQMEtJQWNRcFF3TFFRQWdCVFlDaUt0UFFRQWdCallDZ0t0UERBSUxBa0FnQmtFTWFpZ0NBQ0lKSUFcXFxuWkJDR29vQWdBaUJrWU5BQ0FHSUFrMkFnd2dDU0FHTmdJSURBRUxRUUJCQUNnQytLcFBRWDRnQjBFRGRuZHhOZ0w0cWs4TEFrQWdDRUVRXFxcblFRZ1FuQXRKRFFBZ0FTQUVFTTROSVFVZ0FTQUVFTHNKSUFVZ0NCQzdDU0FGSUFnUWZBd0JDeUFCSUFVUXV3a0xJQUVOQXdzZ0F4QXVJZ1xcXG5SRkRRRWdCQ0FBSUFFUWxRMUJlRUY4SUFFUTFBd2JhaUlDSUFNZ0FpQURTUnNRcEEwaEF5QUFFRWtnQXc4TElBSWdBQ0FCSUFNZ0FTQURcXFxuU1JzUXBBMGFJQUFRU1FzZ0FnOExJQUVRMUF3YUlBRVEwQTBMNmdZQ0JYOENmZ0pBQWtBQ1FBSkFBa0FDUUFKQUlBRkJCM0VpQWtVTkFBXFxcbkpBQWtBQ1FDQUFLQUtnQVNJRFFTbFBEUUFDUUNBRERRQkJBQ0VEREFNTElBSkJBblJCdkpYT0FHbzFBZ0FoQnlBRFFYOXFRZi8vLy84RFxcXG5jU0lDUVFGcUlnUkJBM0VoQlFKQUlBSkJBMDhOQUVJQUlRZ2dBQ0VDREFJTElBUkIvUC8vL3dkeElRUkNBQ0VJSUFBaEFnTkFJQUlnQWpcXFxuVUNBQ0FIZmlBSWZDSUlQZ0lBSUFKQkJHb2lCaUFHTlFJQUlBZCtJQWhDSUloOElnZytBZ0FnQWtFSWFpSUdJQVkxQWdBZ0IzNGdDRUlnXFxcbmlId2lDRDRDQUNBQ1FReHFJZ1lnQmpVQ0FDQUhmaUFJUWlDSWZDSUlQZ0lBSUFoQ0lJZ2hDQ0FDUVJCcUlRSWdCRUY4YWlJRURRQU1BZ1xcXG5zTElBTkJLRUdvdU00QUVJTUZBQXNDUUNBRlJRMEFBMEFnQWlBQ05RSUFJQWQrSUFoOElnZytBZ0FnQWtFRWFpRUNJQWhDSUlnaENDQUZcXFxuUVg5cUlnVU5BQXNMSUFpbklnSkZEUUFnQTBFblN3MENJQUFnQTBFQ2RHb2dBallDQUNBRFFRRnFJUU1MSUFBZ0F6WUNvQUVMSUFGQkNIXFxcbkZGRFFRZ0FDZ0NvQUVpQTBFcFR3MEJBa0FnQXcwQVFRQWhBd3dFQ3lBRFFYOXFRZi8vLy84RGNTSUNRUUZxSWdSQkEzRWhCUUpBSUFKQlxcXG5BMDhOQUVJQUlRY2dBQ0VDREFNTElBUkIvUC8vL3dkeElRUkNBQ0VISUFBaEFnTkFJQUlnQWpVQ0FFS0F3dGN2ZmlBSGZDSUhQZ0lBSUFcXFxuSkJCR29pQmlBR05RSUFRb0RDMXk5K0lBZENJSWg4SWdjK0FnQWdBa0VJYWlJR0lBWTFBZ0JDZ01MWEwzNGdCMElnaUh3aUJ6NENBQ0FDXFxcblFReHFJZ1lnQmpVQ0FFS0F3dGN2ZmlBSFFpQ0lmQ0lIUGdJQUlBZENJSWdoQnlBQ1FSQnFJUUlnQkVGOGFpSUVEUUFNQXdzTElBTkJLRVxcXG5Hb3VNNEFFSUVGQUFzZ0EwRW9RYWk0emdBUWd3VUFDd0pBSUFWRkRRQURRQ0FDSUFJMUFnQkNnTUxYTDM0Z0Izd2lCejRDQUNBQ1FRUnFcXFxuSVFJZ0IwSWdpQ0VISUFWQmYyb2lCUTBBQ3dzZ0I2Y2lBa1VOQUNBRFFTZExEUUlnQUNBRFFRSjBhaUFDTmdJQUlBTkJBV29oQXdzZ0FDXFxcbkFETmdLZ0FRc0NRQ0FCUVJCeFJRMEFJQUJCaElIT0FFRUNFRjhhQ3dKQUlBRkJJSEZGRFFBZ0FFR01nYzRBUVFRUVh4b0xBa0FnQVVIQVxcXG5BSEZGRFFBZ0FFR2NnYzRBUVFjUVh4b0xBa0FnQVVHQUFYRkZEUUFnQUVHNGdjNEFRUTRRWHhvTEFrQWdBVUdBQW5GRkRRQWdBRUh3Z2NcXFxuNEFRUnNRWHhvTElBQVBDeUFEUVNoQnFMak9BQkNCQlFBTHpnY0NCWDhHZmlNQVFmQUlheUlFSkFBZ0FiMGhDUUpBQWtBZ0FTQUJZUTBBXFxcblFRSWhCUXdCQ3lBSlF2Ly8vLy8vLy84SGd5SUtRb0NBZ0lDQWdJQUloQ0FKUWdHR1F2Ny8vLy8vLy84UGd5QUpRalNJcDBIL0QzRWlCaFxcXG5zaUMwSUJneUVNUVFNaEJRSkFBa0FDUUVFQlFRSkJCQ0FKUW9DQWdJQ0FnSUQ0L3dDRElnMVFJZ2NiSUExQ2dJQ0FnSUNBZ1BqL0FGRWJcXFxuUVFOQkJDQUhHeUFLVUJ0QmYyb09CQU1BQVFJREMwRUVJUVVNQWdzZ0JrSE5kMm9oQ0NBTVVDRUZRZ0VoRGd3QkMwS0FnSUNBZ0lDQUlDXFxcbkFMUWdHR0lBdENnSUNBZ0lDQWdBaFJJZ1ViSVF0Q0FrSUJJQVViSVE1QnkzZEJ6SGNnQlJzZ0Jtb2hDQ0FNVUNFRkN5QUVJQWc3QWVnSVxcXG5JQVFnRGpjRDRBZ2dCRUlCTndQWUNDQUVJQXMzQTlBSUlBUWdCVG9BNmdnQ1FBSkFBa0FnQlVGK2FrSC9BWEVpQlVFRElBVkJBMGtiSWdcXFxuWkZEUUJCNDVmT0FFSGtsODRBUWZ6L3pRQWdBaHNnQ1VJQVV4c2hCMEVCSVFWQkFTQUpRaitJcHlBQ0d5RUNBa0FDUUFKQUlBWkJmMm9PXFxcbkF3SUJBQUlMUVhSQkJTQUl3U0lGUVFCSUd5QUZiQ0lGUWIvOUFFc05CQ0FFUVpBSWFpQUVRZEFJYWlBRVFSQnFJQVZCQkhaQkZXb2lDRVxcXG5FQUlBTnJRWUNBZmlBRFFZQ0FBa2tiSWdVUVNpQUZ3U0VGQWtBQ1FDQUVLQUtRQ0EwQUlBUkJ3QWhxSUFSQjBBaHFJQVJCRUdvZ0NDQUZcXFxuRUMwTUFRc2dCRUhBQ0dwQkNHb2dCRUdRQ0dwQkNHb29BZ0EyQWdBZ0JDQUVLUU9RQ0RjRHdBZ0xBa0FnQkM0QnlBZ2lDQ0FGVEEwQUlBXFxcblJCQ0dvZ0JDZ0N3QWdnQkNnQ3hBZ2dDQ0FESUFSQmtBaHFRUVFRdlFFZ0JDZ0NEQ0VGSUFRb0FnZ2hDQXdFQzBFQ0lRVWdCRUVDT3dHUVxcXG5DQUpBSUFORkRRQWdCRUdnQ0dvZ0F6WUNBQ0FFUVFBN0Fad0lJQVJCQWpZQ21BZ2dCRUhnbDg0QU5nS1VDQ0FFUVpBSWFpRUlEQVFMUVFcXFxuRWhCU0FFUVFFMkFwZ0lJQVJCNVpmT0FEWUNsQWdnQkVHUUNHb2hDQXdEQzBFQ0lRVWdCRUVDT3dHUUNBSkFJQU5GRFFBZ0JFR2dDR29nXFxcbkF6WUNBQ0FFUVFBN0Fad0lJQVJCQWpZQ21BZ2dCRUhnbDg0QU5nS1VDQ0FFUVpBSWFpRUlEQU1MUVFFaEJTQUVRUUUyQXBnSUlBUkI1WlxcXG5mT0FEWUNsQWdnQkVHUUNHb2hDQXdDQ3lBRVFRTTJBcGdJSUFSQjVwZk9BRFlDbEFnZ0JFRUNPd0dRQ0NBRVFaQUlhaUVJREFFTElBUkJcXFxuQXpZQ21BZ2dCRUhwbDg0QU5nS1VDQ0FFUVFJN0FaQUlRUUVoQlNBRVFaQUlhaUVJUVFBaEFrSDgvODBBSVFjTElBUkJ6QWhxSUFVMkFnXFxcbkFnQkNBSU5nTElDQ0FFSUFJMkFzUUlJQVFnQnpZQ3dBZ2dBQ0FFUWNBSWFoQnhJUVVnQkVId0NHb2tBQ0FGRHd0QjdKZk9BRUVsUVpTWVxcXG56Z0FRZ3djQUMvZ0dBZ1IvQW40akFFSGdBV3NpQWlRQUlBSkI0QUJxSUFFUXRnUUNRQUpBQWtBQ1FDQUNMUUJnRFFBZ0FpMEFZUTBDSUFcXFxuSkJCVFlDTUNBQklBSkJNR29RemdnaEF3d0JDeUFDS0FKa0lRTUxJQUJCQURZQ0FDQUFJQU0yQWdRTUFRc0NRQUpBSUFJdEFHSkIrd0JIXFxcbkRRQWdBU0FCTFFBWVFYOXFJZ002QUJnQ1FDQURRZjhCY1EwQUlBSkJHRFlDTUNBQklBSkJNR29RemdnaEF5QUFRUUEyQWdBZ0FDQUROZ1xcXG5JRURBTUxJQUVnQVNnQ0NFRUJhallDQ0NBQ1FRRTZBRndnQWlBQk5nSllJQUpCQ0dvUTBBZ2dBaWtEQ0NFR0lBSXBBeEFoQnlBQ1FUQnFcXFxuUVFBUWd3Z2dBaUFITndOSUlBSWdCamNEUUNBQ1Fld0FhaUVFQWtBQ1FBSkFBMEFnQWtHb0FXb2dBa0hZQUdvUW9RRWdBaWdDckFFaEF5XFxcbkFDS0FLb0FRMEJBa0FDUUNBRFJRMEFJQUlnQWlrRHNBRWlCamNDdkFFZ0FpQUROZ0s0QVNBQ1FjZ0JhaUFDUWRnQWFoRFdDU0FDS0FMSVxcXG5BVVVOQVNBQ1FmZ0Fha0VJYWlBQ1FjZ0Jha0VJYWlnQ0FEWUNBQ0FDSUFJcEE4Z0JOd040Q3lBRUlBSXBBM2czQWdBZ0JFRUlhaUFDUWZcXFxuZ0Fha0VJYWlJRktBSUFOZ0lBSUFJZ0JqY0NaQ0FDSUFNMkFtQWdBMFVOQXlBQ1FZZ0Jha0VJYWlBQ1FlQUFha0VJYWlnQ0FEWUNBQ0FDXFxcblFaZ0Jha0VJYWlBRktBSUFOZ0lBSUFJZ0Fpa0RZRGNEaUFFZ0FpQUNLUU40TndPWUFTQUNRYWdCYWlBQ1FUQnFJQUpCaUFGcUlBSkJtQVxcXG5GcUVLUUNJQUpCcUFGcUVNd0xEQUVMQ3lBQ0tBTE1BU0VESUFKQnVBRnFFT01NQ3lBQ1FUQnFFSVVMUVFBaEJBd0JDeUFDUWVBQWFoRFNcXFxuQ3lBQ1FTQnFJQUpCTUdwQkVHb3BBd0EzQXdBZ0FrRVlha0VRYWlBQ1FjZ0FhaWtEQURjREFDQUNJQUlwQXpnM0F4Z2dBaWdDTUNFRUlBXFxcbklvQWpRaEF3c2dBU0FCTFFBWVFRRnFPZ0FZSUFKQnlBQnFJQUpCR0dwQkVHb3BBd0EzQXdBZ0FrRXdha0VRYWlBQ1FTQnFLUU1BTndNQVxcXG5JQUlnQWlrREdEY0RPQ0FDSUFFUXhBTWlCVFlDVUNBQ0lBTTJBalFnQWlBRU5nSXdBa0FDUUNBRVJRMEFJQVZGRFFFZ0FrRXdhaENGQ3lcXFxuQUZJUU1NQXdzZ0JVVU5BaUFDUWRBQWFoQ3ZDUXdDQ3lBQUlBSXBBeGczQXdnZ0FFRVlhaUFDUVJocVFSQnFLUU1BTndNQUlBQkJFR29nXFxcbkFrRWdhaWtEQURjREFDQUFJQU0yQWdRZ0FDQUVOZ0lBREFJTElBRWdBa0hZQVdwQmpJVEFBQkJvSVFNTElBTWdBUkNwQmlFRElBQkJBRFxcXG5ZQ0FDQUFJQU0yQWdRTElBSkI0QUZxSkFBTGtBWUNESDhDZmlNQVFhQUJheUlESkFBZ0EwRUFRYUFCRUtFTklRUUNRQUpBQWtBZ0FDZ0NcXFxub0FFaUJTQUNTUTBBQWtBZ0JVRXBUdzBBSUFFZ0FrRUNkR29oQmlBRlJRMENJQVZCQVdvaEJ5QUZRUUowSVFKQkFDRUlRUUFoQ1FOQUlBXFxcblFnQ0VFQ2RHb2hDZ05BSUFnaEN5QUtJUU1nQVNBR1JnMEZJQU5CQkdvaENpQUxRUUZxSVFnZ0FTZ0NBQ0VNSUFGQkJHb2lEU0VCSUF4RlxcXG5EUUFMSUF5dElROUNBQ0VRSUFJaERDQUxJUUVnQUNFS0FrQUNRQU5BSUFGQkowc05BU0FESUJBZ0F6VUNBSHdnQ2pVQ0FDQVBmbndpRURcXFxuNENBQ0FRUWlDSUlSQWdBMEVFYWlFRElBRkJBV29oQVNBS1FRUnFJUW9nREVGOGFpSU1EUUFMSUFVaEF5QVFweUlCUlEwQkFrQWdDeUFGXFxcbmFpSURRU2RMRFFBZ0JDQURRUUowYWlBQk5nSUFJQWNoQXd3Q0N5QURRU2hCcUxqT0FCQ0JCUUFMSUFGQktFR291TTRBRUlFRkFBc2dDU1xcXG5BRElBdHFJZ01nQ1NBRFN4c2hDU0FOSVFFTUFBc0xJQVZCS0VHb3VNNEFFSU1GQUFzQ1FDQUZRU2xQRFFBZ0FrRUNkQ0VISUFKQkFXb2hcXFxuRGlBQUlBVkJBblJxSVExQkFDRUxJQUFoQ2tFQUlRa0RRQ0FFSUF0QkFuUnFJUWdEUUNBTElRd2dDQ0VESUFvZ0RVWU5CQ0FEUVFScUlRXFxcbmdnREVFQmFpRUxJQW9vQWdBaEJpQUtRUVJxSWdVaENpQUdSUTBBQ3lBR3JTRVBRZ0FoRUNBSElRWWdEQ0VLSUFFaENBSkFBa0FEUUNBS1xcXG5RU2RMRFFFZ0F5QVFJQU0xQWdCOElBZzFBZ0FnRDM1OEloQStBZ0FnRUVJZ2lDRVFJQU5CQkdvaEF5QUtRUUZxSVFvZ0NFRUVhaUVJSUFcXFxuWkJmR29pQmcwQUN5QUNJUU1nRUtjaUNrVU5BUUpBSUF3Z0Ftb2lBMEVuU3cwQUlBUWdBMEVDZEdvZ0NqWUNBQ0FPSVFNTUFnc2dBMEVvXFxcblFhaTR6Z0FRZ1FVQUN5QUtRU2hCcUxqT0FCQ0JCUUFMSUFrZ0F5QU1haUlESUFrZ0Ewc2JJUWtnQlNFS0RBQUxDeUFGUVNoQnFMak9BQlxcXG5DREJRQUxRUUFoQ1VFQUlRTURRQ0FCSUFaR0RRRWdBMEVCYWlFRElBRW9BZ0FoQ2lBQlFRUnFJZ2doQVNBS1JRMEFJQWtnQTBGL2FpSUJcXFxuSUFrZ0FVc2JJUWtnQ0NFQkRBQUxDeUFBSUFSQm9BRVFwQTBpQXlBSk5nS2dBU0FFUWFBQmFpUUFJQU1MbUFZQkIzOENRQUpBSUFGRkRRXFxcbkJCSzBHQWdNUUFJQUFvQWh3aUJrRUJjU0lCR3lFSElBRWdCV29oQ0F3QkN5QUZRUUZxSVFnZ0FDZ0NIQ0VHUVMwaEJ3c0NRQUpBSUFaQlxcXG5CSEVOQUVFQUlRSU1BUXNDUUFKQUlBTkJFRWtOQUNBQ0lBTVFWQ0VKREFFTEFrQWdBdzBBUVFBaENRd0JDeUFEUVFOeElRb0NRQUpBSUFcXFxuTkJCRThOQUVFQUlRa2dBaUVCREFFTElBTkJmSEVoQzBFQUlRa2dBaUVCQTBBZ0NTQUJMQUFBUWI5L1Ntb2dBU3dBQVVHL2YwcHFJQUVzXFxcbkFBSkJ2MzlLYWlBQkxBQURRYjkvU21vaENTQUJRUVJxSVFFZ0MwRjhhaUlMRFFBTEN5QUtSUTBBQTBBZ0NTQUJMQUFBUWI5L1Ntb2hDU1xcXG5BQlFRRnFJUUVnQ2tGL2FpSUtEUUFMQ3lBSklBaHFJUWdMQWtBQ1FDQUFLQUlBRFFCQkFTRUJJQUJCRkdvb0FnQWlDU0FBUVJocUtBSUFcXFxuSWdBZ0J5QUNJQU1RM0FjTkFTQUpJQVFnQlNBQUtBSU1FUWtBRHdzQ1FBSkFBa0FDUUFKQUlBQW9BZ1FpQ3lBSVRRMEFJQVpCQ0hFTkJDXFxcbkFMSUFocklna2hDQ0FBTFFBZ0lnRU9CQU1CQWdFREMwRUJJUUVnQUVFVWFpZ0NBQ0lKSUFCQkdHb29BZ0FpQUNBSElBSWdBeERjQncwRVxcXG5JQWtnQkNBRklBQW9BZ3dSQ1FBUEMwRUFJUWdnQ1NFQkRBRUxJQWxCQVhZaEFTQUpRUUZxUVFGMklRZ0xJQUZCQVdvaEFTQUFRUmhxS0FcXFxuSUFJUW9nQUVFVWFpZ0NBQ0VMSUFBb0FoQWhDUUpBQTBBZ0FVRi9haUlCUlEwQklBc2dDU0FLS0FJUUVRWUFSUTBBQzBFQkR3dEJBU0VCXFxcbklBbEJnSURFQUVZTkFTQUxJQW9nQnlBQ0lBTVEzQWNOQVNBTElBUWdCU0FLS0FJTUVRa0FEUUZCQUNFQkFrQURRQUpBSUFnZ0FVY05BQ1xcXG5BSUlRRU1BZ3NnQVVFQmFpRUJJQXNnQ1NBS0tBSVFFUVlBUlEwQUN5QUJRWDlxSVFFTElBRWdDRWtoQVF3QkN5QUFLQUlRSVFZZ0FFRXdcXFxuTmdJUUlBQXRBQ0FoREVFQklRRWdBRUVCT2dBZ0lBQkJGR29vQWdBaUNTQUFRUmhxS0FJQUlnb2dCeUFDSUFNUTNBY05BQ0FMSUFoclFRXFxcbkZxSVFFQ1FBTkFJQUZCZjJvaUFVVU5BU0FKUVRBZ0NpZ0NFQkVHQUVVTkFBdEJBUThMUVFFaEFTQUpJQVFnQlNBS0tBSU1FUWtBRFFBZ1xcXG5BQ0FNT2dBZ0lBQWdCallDRUVFQUR3c2dBUXVBQndFQmZ5TUFRUkJySWdNa0FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUVPS0FcXFxuRUlDQWdJQ0FnSUNBSUVDQWdEQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSENBZ0lDQVlBQ3lBQlFkd0FSZzBFREFjTElBQkJnQVE3XFxcbkFRb2dBRUlBTndFQ0lBQkIzT0FBT3dFQURBY0xJQUJCZ0FRN0FRb2dBRUlBTndFQ0lBQkIzT2dCT3dFQURBWUxJQUJCZ0FRN0FRb2dBRVxcXG5JQU53RUNJQUJCM09RQk93RUFEQVVMSUFCQmdBUTdBUW9nQUVJQU53RUNJQUJCM053Qk93RUFEQVFMSUFCQmdBUTdBUW9nQUVJQU53RUNcXFxuSUFCQjNMZ0JPd0VBREFNTElBSkJnQUp4UlEwQklBQkJnQVE3QVFvZ0FFSUFOd0VDSUFCQjNNNEFPd0VBREFJTElBSkJnSUFFY1VVTkFDXFxcbkFBUVlBRU93RUtJQUJDQURjQkFpQUFRZHpFQURzQkFBd0JDd0pBQWtBQ1FDQUNRUUZ4UlEwQUlBRVF5QUZGRFFBZ0EwRUdha0VDYWtFQVxcXG5PZ0FBSUFOQkFEc0JCaUFEUWYwQU9nQVBJQU1nQVVFUGNVRzR0ODRBYWkwQUFEb0FEaUFESUFGQkJIWkJEM0ZCdUxmT0FHb3RBQUE2QUFcXFxuMGdBeUFCUVFoMlFROXhRYmkzemdCcUxRQUFPZ0FNSUFNZ0FVRU1ka0VQY1VHNHQ4NEFhaTBBQURvQUN5QURJQUZCRUhaQkQzRkJ1TGZPXFxcbkFHb3RBQUE2QUFvZ0F5QUJRUlIyUVE5eFFiaTN6Z0JxTFFBQU9nQUpJQUZCQVhKblFRSjJRWDVxSWdGQkMwOE5BU0FEUVFacUlBRnFJZ1xcXG5KQkFDOEE5TGRPT3dBQUlBSkJBbXBCQUMwQTlyZE9PZ0FBSUFBZ0F5a0JCamNBQUNBQVFRaHFJQU5CQm1wQkNHb3ZBUUE3QUFBZ0FFRUtcXFxuT2dBTElBQWdBVG9BQ2d3REN3SkFJQUVRdFFJTkFDQURRUVpxUVFKcVFRQTZBQUFnQTBFQU93RUdJQU5CL1FBNkFBOGdBeUFCUVE5eFFiXFxcbmkzemdCcUxRQUFPZ0FPSUFNZ0FVRUVka0VQY1VHNHQ4NEFhaTBBQURvQURTQURJQUZCQ0haQkQzRkJ1TGZPQUdvdEFBQTZBQXdnQXlBQlxcXG5RUXgyUVE5eFFiaTN6Z0JxTFFBQU9nQUxJQU1nQVVFUWRrRVBjVUc0dDg0QWFpMEFBRG9BQ2lBRElBRkJGSFpCRDNGQnVMZk9BR290QUFcXFxuQTZBQWtnQVVFQmNtZEJBblpCZm1vaUFVRUxUdzBDSUFOQkJtb2dBV29pQWtFQUx3RDB0MDQ3QUFBZ0FrRUNha0VBTFFEMnQwNDZBQUFnXFxcbkFDQURLUUVHTndBQUlBQkJDR29nQTBFR2FrRUlhaThCQURzQUFDQUFRUW82QUFzZ0FDQUJPZ0FLREFNTElBQWdBVFlDQkNBQVFZQUJPZ1xcXG5BQURBSUxJQUZCQ2tIa3Q4NEFFSUlGQUFzZ0FVRUtRZVMzemdBUWdnVUFDeUFEUVJCcUpBQUwvQVVCQ0g4Q1FBSkFBa0FnQWtVTkFFRUFcXFxuSUFKQmVXb2lBeUFESUFKTEd5RUVJQUZCQTJwQmZIRWdBV3NoQlVFQUlRTURRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBRWdBMm90QUFBaUJzXFxcbkFpQjBGL1NnMEFRUUVoQ0VFQklRa0NRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBWkIwS1RPQUdvdEFBQkJmbW9PQXdBQkFoSUxJQU5CQVdvaVxcXG5CaUFDU1EwR1FRQWhDUXdSQzBFQklRaEJBQ0VKSUFOQkFXb2lDaUFDVHcwUUlBRWdDbW9zQUFBaENpQUdRYUIrYWc0T0FRTURBd01EQXdcXFxuTURBd01EQXdJREMwRUJJUWdDUUNBRFFRRnFJZ2tnQWtrTkFFRUFJUWtNRUFzZ0FTQUphaXdBQUNFS0FrQUNRQUpBSUFaQmtINXFEZ1VCXFxcbkFBQUFBZ0FMUVFFaENDQUhRUTlxUWY4QmNVRUNUUTBJUVFFaENRd1JDeUFLUWZBQWFrSC9BWEZCTUVrTkNnd1BDeUFLUVk5L1NnME9EQVxcXG5rTElBcEJZSEZCb0g5SERRME1BZ3NnQ2tHZ2YwNE5EQXdCQ3dKQUFrQWdCMEVmYWtIL0FYRkJERWtOQUVFQklRZ2dCMEYrY1VGdVJnMEJcXFxuUVFFaENRd09DeUFLUWI5L1NnME1EQUVMUVFFaENTQUtRVUJPRFF3TFFRQWhDU0FEUVFKcUlnWWdBazhOQ3lBQklBWnFMQUFBUWI5L1RBXFxcbjBHUVFFaENVRUNJUWdNQ3dzZ0FTQUdhaXdBQUVHL2Ywb05DUXdGQ3lBRklBTnJRUU54RFFFZ0F5QUVUdzBDQTBBZ0FTQURhaUlHS0FJQVxcXG5RWUNCZ29SNGNRMERJQVpCQkdvb0FnQkJnSUdDaEhoeERRTWdBMEVJYWlJRElBUlBEUU1NQUFzTFFRRWhDU0FLUVVCSURRSU1DQXNnQTBcXFxuRUJhaUVEREFNTElBTWdBazhOQWdOQUlBRWdBMm9zQUFCQkFFZ05BeUFDSUFOQkFXb2lBMGNOQUF3RkN3c0NRQ0FEUVFKcUlnWWdBa2tOXFxcbkFFRUFJUWtNQmdzQ1FDQUJJQVpxTEFBQVFiOS9UQTBBUVFJaENFRUJJUWtNQmd0QkFDRUpJQU5CQTJvaUJpQUNUdzBGSUFFZ0Jtb3NBQVxcXG5CQnYzOU1EUUJCQXlFSVFRRWhDUXdGQ3lBR1FRRnFJUU1MSUFNZ0Fra05BQXNMSUFBZ0FUWUNCQ0FBUVFocUlBSTJBZ0FnQUVFQU5nSUFcXFxuRHd0QkFTRUlRUUVoQ1FzZ0FDQUROZ0lFSUFCQkNXb2dDRG9BQUNBQVFRaHFJQWs2QUFBZ0FFRUJOZ0lBQzlZR0FoQi9CSDRqQUVIUUFXXFxcbnNpQkNRQUFrQUNRQ0FCUlEwQUlBUkJLR29nQVNBQ0VPTUpBa0FDUUNBRUtBSTRJZ1VOQUNBRUlBUW9BaWcyQW93QlFRQW9BdmltVDBFRFxcXG5UUTBCSUFSQnBBRnFRUUUyQWdBZ0JFR2NBV3BCQVRZQ0FDQUVRUTAyQXF3QklBUkJBVFlDbEFFZ0JFR2dxY0FBTmdLUUFTQUVJQVJCakFcXFxuRnFOZ0tvQVNBRVFRTTZBTXdCSUFSQkJEWUN5QUVnQkVJZ053UEFBU0FFUW9LQWdJQWdOd080QVNBRVFRSTJBckFCSUFRZ0JFR3dBV28yXFxcbkFxQUJJQVFnQkVHb0FXbzJBcGdCSUFSQmtBRnFRUVJCeUtuQUFFRUFJQVFRa1FNTUFRc2dCQ2dDaEFFaEJpQUVLQUtBQVNFSElBUW9BblxcXG53aENDQUVLQUo0SVFJZ0JDZ0NkQ0VKSUFRb0FuQWhDaUFFS0FKc0lRc2dCQ2dDYUNFTUlBUXBBMkFoRkNBRUtRTllJUlVnQkNnQ1ZDRU5cXFxuSUFRb0FsQWhEaUFFS0FKTUlROGdCQ2dDU0NFQklBUW9Ba1FoRUNBRUtBSkFJUkVnQkNnQ1BDRVNJQVFwQXpBaEZpQUVLUU1vSVJjTUFnXFxcbnNnQkVHTUFXb1Fyd2tMSUFSQkdHb1EwQWdnQkNrRElDRVdJQVFwQXhnaEZ5QUVRUWhxRU5BSVFRUWhBVUdBZzhBQUlReEJDQ0VDUVFBaFxcXG5CeUFFS1FNUUlSUWdCQ2tEQ0NFVlFRQWhDRUVBSVFsQkFDRUtRUUFoQzBFQUlRNUJBQ0VQUVFBaEVFRUFJUkZCQUNFU1FZQ0R3QUFoQlFcXFxudEJBQ0VUQWtBZ0EwVU5BQ0FFSUFFMkFwZ0JJQVJCa0FGcVFReHFJQUVnRGtIWUFHeHFOZ0lBSUFRZ0FqWUNrQUVnQkNBQ0lBZEJCM1JxXFxcbk5nS1VBU0FFUVNocUlBUkJrQUZxRUlBRUlBUkJ1QUZxSUFSQktHcEJER29wQWdBM0F3QWdCRUhBQVdvZ0JFRThhaWtDQURjREFDQUVRY1xcXG5nQmFpQUVRY1FBYWlnQ0FEWUNBQ0FFSUFRcEFpdzNBN0FCSUFRb0FpZ2hFd3NnQUNBVE5nSmdJQUFnQmpZQ1hDQUFJQWMyQWxnZ0FDQUlcXFxuTmdKVUlBQWdBallDVUNBQUlBazJBa3dnQUNBS05nSklJQUFnQ3pZQ1JDQUFJQXcyQWtBZ0FDQVVOd000SUFBZ0ZUY0RNQ0FBSUEwMkFpXFxcbndnQUNBT05nSW9JQUFnRHpZQ0pDQUFJQUUyQWlBZ0FDQVFOZ0ljSUFBZ0VUWUNHQ0FBSUJJMkFoUWdBQ0FGTmdJUUlBQWdGamNEQ0NBQVxcXG5JQmMzQXdBZ0FFSGtBR29nQkNrRHNBRTNBZ0FnQUVIOEFHb2dCRUhJQVdvb0FnQTJBZ0FnQUVIMEFHb2dCRUhBQVdvcEF3QTNBZ0FnQUVcXFxuSHNBR29nQkVHNEFXb3BBd0EzQWdBZ0JFSFFBV29rQUF1bUJRRUlmd0pBQWtBQ1FBSkFBa0FnQUNBQmF5QUNUdzBBSUFFZ0Ftb2hBeUFBXFxcbklBSnFJUVFnQWtFUFN3MEJJQUFoQlF3Q0N3SkFJQUpCRDBzTkFDQUFJUVFNQXdzZ0FFRUFJQUJyUVFOeElnTnFJUVVDUUNBRFJRMEFJQVxcXG5BaEJDQUJJUVlEUUNBRUlBWXRBQUE2QUFBZ0JrRUJhaUVHSUFSQkFXb2lCQ0FGU1EwQUN3c2dCU0FDSUFOcklnZEJmSEVpQ0dvaEJBSkFcXFxuQWtBZ0FTQURhaUlKUVFOeElnWkZEUUFnQ0VFQlNBMEJJQWxCZkhFaUNrRUVhaUVCUVFBZ0JrRURkQ0lDYTBFWWNTRURJQW9vQWdBaEJnXFxcbk5BSUFVZ0JpQUNkaUFCS0FJQUlnWWdBM1J5TmdJQUlBRkJCR29oQVNBRlFRUnFJZ1VnQkVrTkFBd0NDd3NnQ0VFQlNBMEFJQWtoQVFOQVxcXG5JQVVnQVNnQ0FEWUNBQ0FCUVFScUlRRWdCVUVFYWlJRklBUkpEUUFMQ3lBSFFRTnhJUUlnQ1NBSWFpRUJEQUlMSUFSQmZIRWhCa0VBSUFcXFxuUkJBM0VpQ0dzaEJ3SkFJQWhGRFFBZ0FTQUNha0YvYWlFRkEwQWdCRUYvYWlJRUlBVXRBQUE2QUFBZ0JVRi9haUVGSUFZZ0JFa05BQXNMXFxcbklBWWdBaUFJYXlJSlFYeHhJZ1ZySVFSQkFDQUZheUVJQWtBQ1FDQURJQWRxSWdkQkEzRWlCVVVOQUNBSVFYOUtEUUVnQjBGOGNTSUtRWFxcXG54cUlRRkJBQ0FGUVFOMElnSnJRUmh4SVFNZ0NpZ0NBQ0VGQTBBZ0JrRjhhaUlHSUFVZ0EzUWdBU2dDQUNJRklBSjJjallDQUNBQlFYeHFcXFxuSVFFZ0JDQUdTUTBBREFJTEN5QUlRWDlLRFFBZ0NTQUJha0Y4YWlFQkEwQWdCa0Y4YWlJR0lBRW9BZ0EyQWdBZ0FVRjhhaUVCSUFRZ0JrXFxcbmtOQUFzTElBbEJBM0VpQVVVTkFpQUhJQWhxSVFNZ0JDQUJheUVGQ3lBRFFYOXFJUUVEUUNBRVFYOXFJZ1FnQVMwQUFEb0FBQ0FCUVg5cVxcXG5JUUVnQlNBRVNRMEFEQUlMQ3lBQ1JRMEFJQVFnQW1vaEJRTkFJQVFnQVMwQUFEb0FBQ0FCUVFGcUlRRWdCRUVCYWlJRUlBVkpEUUFMQ3lcXFxuQUFDL3dGQVFWL0l3QkI4QUJySWdNa0FDQURRU2hxSUFFZ0FoQ3VEQ0FESUFNcEF5ZzNBekFnQTBIUUFHb2dBMEV3YWhDRUFRSkFBa0FnXFxcbkF5Z0NVRVVOQUNBRFFlQUFha0VJYWlBRFFkQUFha0VJYWlrREFEY0RBQ0FESUFNcEExQTNBMkFnQTBFZ2FpQURRZUFBYWhDZERTQURLQVxcXG5Ja0lRRWdBeWdDSUNFRUlBTkJHR29nQTBIZ0FHb1FuZzBDUUNBREtBSWNEUUFnQUNBRU5nSUVJQUJCQURZQ0FDQUFRUWhxSUFFMkFnQU1cXFxuQWdzQ1FBSkFBa0FDUUNBQ0RRQkJBU0VGREFFTElBSkJmMHdOQWtFQUxRRHhwazhhSUFKQkFSRDNDeUlGUlEwQkMwRUFJUVlnQTBFQU5nXFxcbkpBSUFNZ0JUWUNPQ0FESUFJMkFqd0NRQ0FCSUFKTkRRQWdBMEU0YWtFQUlBRVE3Z0lnQXlnQ09DRUZJQU1vQWtBaEJnc2dCU0FHYWlBRVxcXG5JQUVRcEEwYUlBTWdCaUFCYWlJQ05nSkFBa0FnQXlnQ1BDQUNhMEVDU3cwQUlBTkJPR29nQWtFREVPNENJQU1vQWtBaEFnc2dBeWdDT0NcXFxuSUZJQUpxSWdGQkFDOEFqUDFOSWdZN0FBQWdBVUVDYWtFQUxRQ08vVTBpQnpvQUFDQURJQUpCQTJvaUFqWUNRQ0FESUFNcEF6QTNBMGdnXFxcbkEwSFFBR29nQTBISUFHb1FoQUVDUUNBREtBSlFSUTBBQTBBZ0EwSGdBR3BCQ0dvZ0EwSFFBR3BCQ0dvcEF3QTNBd0FnQXlBREtRTlFOd1xcXG5OZ0lBTkJFR29nQTBIZ0FHb1FuUTBnQXlnQ0VDRUVBa0FnQXlnQ1BDQUNheUFES0FJVUlnRlBEUUFnQTBFNGFpQUNJQUVRN2dJZ0F5Z0NcXFxuT0NFRklBTW9Ba0FoQWdzZ0JTQUNhaUFFSUFFUXBBMGFJQU1nQWlBQmFpSUNOZ0pBSUFOQkNHb2dBMEhnQUdvUW5nMENRQ0FES0FJTVJRXFxcbjBBQWtBZ0F5Z0NQQ0FDYTBFQ1N3MEFJQU5CT0dvZ0FrRURFTzRDSUFNb0FrQWhBZ3NnQXlnQ09DSUZJQUpxSWdFZ0Jqc0FBQ0FCUVFKcVxcXG5JQWM2QUFBZ0F5QUNRUU5xSWdJMkFrQUxJQU5CMEFCcUlBTkJ5QUJxRUlRQklBTW9BbEFOQUFzTElBQWdBeWtET0RjQ0FDQUFRUWhxSUFcXFxuTkJPR3BCQ0dvb0FnQTJBZ0FNQXd0QkFTQUNFSm9OQUFzUWx3Z0FDeUFBUWVUNnpRQTJBZ1FnQUVFQU5nSUFJQUJCQ0dwQkFEWUNBQXNnXFxcbkEwSHdBR29rQUF1V0JnRURmeU1BUVNCcklnTWtBQ0FEUVJCcUlBQVF0d1VDUUFKQUlBTXRBQkFOQUFKQUFrQUNRQUpBQWtBQ1FBSkFBa1xcXG5BQ1FBSkFBa0FnQXkwQUVTSUVRWkovYWc0SUJ3RUJBUWdCQ1FvQUN3SkFJQVJCbm45cURnVUZBUUVCQmdBTElBUkJJa1lOQVNBRVFTOUdcXFxuRFFNZ0JFSGNBRVlOQWdzZ0EwRU1OZ0lRSUFBZ0EwRVFhaERnQ0NFQURBb0xJQUpCSWhDSENFRUFJUUFNQ1FzZ0FrSGNBQkNIQ0VFQUlRXFxcbkFNQ0FzZ0FrRXZFSWNJUVFBaEFBd0hDeUFDUVFnUWh3aEJBQ0VBREFZTElBSkJEQkNIQ0VFQUlRQU1CUXNnQWtFS0VJY0lRUUFoQUF3RVxcXG5DeUFDUVEwUWh3aEJBQ0VBREFNTElBSkJDUkNIQ0VFQUlRQU1BZ3NnQTBFSWFpQUFFTUFDQWtBQ1FDQURMd0VJRFFBQ1FBSkFJQU12QVFcXFxub2lCRUdBK0FOeElnVkJnTEFEUmcwQUFrQWdCVUdBdUFOSERRQWdBVVVOQkNBRFFSUTJBaEFnQUNBRFFSQnFFT0FJSVFBTUJnc2dCRUdBXFxcbnNMOS9jMEgvajd4L1N3MEJRWUN3d0FCQkswSE0xOEFBRUlNSEFBc2dBMEVRYWlBQUVMa0dJQU10QUJBTkF3SkFBa0FDUUNBRExRQVJRZFxcXG53QVJ3MEFJQUFnQUNnQ0NDSUZRUUZxTmdJSUlBTkJFR29nQUJDNUJpQURMUUFRRFFZZ0F5MEFFVUgxQUVjTkFTQUFJQVZCQW1vMkFnZ2dcXFxuQTBFUWFpQUFFTUFDSUFNdkFSQU5CaUFETHdFU0lnRkJnTUFBYWtILy93TnhRWUQ0QTBrTkFnSkFJQVJCZ05BQWFrSC8vd054UVFwMElBXFxcbkZCZ01nQWFrSC8vd054Y2tHQWdBUnFJZ1JCZ0xBRGMwR0FnTHgvYWtHQWtMeC9TUTBBSUFSQmdJREVBRWNOQkFzZ0EwRVBOZ0lRSUFBZ1xcXG5BMEVRYWhEZ0NDRUFEQWNMSUFGRkRRUWdBQ0FBS0FJSVFRRnFOZ0lJSUFOQkZ6WUNFQ0FBSUFOQkVHb1E0QWdoQUF3R0N3SkFJQUVOQUNcXFxuQUNJQVFROUFVZ0FFRUFJQUlRWmlFQURBWUxJQUFnQlVFQ2FqWUNDQ0FEUVJjMkFoQWdBQ0FEUVJCcUVPQUlJUUFNQlFzZ0EwRVVOZ0lRXFxcbklBQWdBMEVRYWhEZ0NDRUFEQVFMUVFBaEFDQURRUUEyQWhBZ0F5QUVJQU5CRUdvUXpBSWdBaUFES0FJQUlBTW9BZ1FRZ1F3TUF3c2dBeVxcXG5nQ0RDRUFEQUlMSUFJZ0JCRDBCVUVBSVFBTUFRc2dBeWdDRkNFQUN5QURRU0JxSkFBZ0FBditCUUVFZnlNQVFaQUJheUlFSkFBZ0JDQURcXFxuTmdJVUlBUWdBallDRUNBRVFkZ0FhaUFCUWFta3dBQkJBUkIzQWtBQ1FBSkFBa0FDUUFKQUlBUW9BbGhGRFFBZ0JFRVlha0VJYWlBRVFkXFxcbmdBYWtFSWFpZ0NBRFlDQUNBRUlBUXBBMWczQXhnZ0JFRVlha0dzcE1BQUVONEtJZ01vQWdBZ0F5Z0NDRUdNb3NBQVFRVVFwZ3BGRFFFZ1xcXG5CRUhZQUdvZ0JFRVlha0VBUWJ5a3dBQVFvQVVnQkVIWUFHb1E0d3dnQkNnQ0lDRUNJQVFvQWhnaEF3d0NDeUFFUWRnQWFpQUJFSWdGSUFcXFxuQkJBam9BRENBQVFRaHFJQVJCMkFCcVFRaHFLQUlBTmdJQUlBQWdCQ2tEV0RjQ0FBd0VDeUFFUVNocUlBUkJHR3BCQUVITXBNQUFFS0FGXFxcbklBUkJHR3BCN0tUQUFCRGVDaUVESUFSQk9HcEJER3BCQkRZQ0FDQUVRZGdBYWtFTWFrSUNOd0lBSUFRZ0F6WUNRQ0FFUVFRMkFqd2dCRVxcXG5FQ05nSmNJQVJCM0tUQUFEWUNXQ0FFSUFSQktHbzJBamdnQkNBRVFUaHFOZ0pnSUFSQnlBQnFJQVJCMkFCcUVJOEVJQVFvQWlBaUFrVU5cXFxuQVNBRUtBSVlJZ01RNHd3Z0EwRUlhaUFFUWNnQWFrRUlhaWdDQURZQ0FDQURJQVFwQTBnM0FnQWdCRUVvYWhEakRBc2dCRUhZQUdvZ0FSXFxcbkRkQXlBRUlBTTJBb2dCSUFRZ0F6WUNnQUVnQkNBRElBSkJER3hxTmdLTUFTQUVJQVFvQWh3MkFvUUJJQVJCeUFCcUlBUkIyQUJxRU1JQ1xcXG5JQVJCQ0dvZ0FSRE9CQ0FFS0FKUUlRTUNRQUpBSUFRb0FnZ2lCUTBBSUFRb0FrZ2hBZ3dCQ3lBRFJRMENJQVFvQWd3aEJpQURRUXhzSUFcXFxuUW9Ba2dpQW1wQmRHb2lCMEUvRU5nRUlBY2dCU0FHRUlnTUN5QUVRUUE2QUZjZ0JDQUROZ0lvSUFRb0Frd2hCU0FFSUFFMkFuQWdCRUVBXFxcbk5nSm9JQVFnQWpZQ1lDQUVJQVUyQWx3Z0JDQUNOZ0pZSUFRZ0FpQURRUXhzYWpZQ1pDQUVJQVJCMXdCcU5nSjRJQVFnQkVFUWFqWUNkQ1xcXG5BRUlBUkJLR28yQW13Z0JFRTRhaUFFUWRnQWFoRHJCU0FBSUFRcEF6ZzNBZ0FnQUVFSWFpQUVRVGhxUVFocUtBSUFOZ0lBSUFBZ0JDMEFcXFxuVnpvQURBd0NDMEVBUVFCQi9LVEFBQkNCQlFBTFFjQ0d3QUJCSzBHTXBjQUFFSU1IQUFzZ0JFR1FBV29rQUF2QUJRSUVmd0YrSXdCQndBXFxcbkJySWdNa0FFRUFJUVFDUUNBQUtBSUlJZ1VnQUNnQ0JFOE5BQ0FBS0FJQUlBVnFMUUFBSVFRTElBTkJBRG9BTUNBRElBUTZBREVDUUFKQVxcXG5Ba0FDUUFKQUFrQUNRQUpBQWtBQ1FDQURRVEJxRU1RS0lnWkIvd0Z4SWdSQklrWU5BQ0FFUVMxR0RRRWdCRUhtQUVZTkF5QUVRZTRBUmdcXFxuMEZJQVJCOUFCR0RRUUNRQ0FFUWRzQVJnMEFJQVJCK3dCR0RRZ0NRQ0FHUVZCcVFmOEJjVUVLU1EwQUlBTkJDallDTUNBQUlBTkJNR29RXFxcbnpnZ2hCQXdLQ3lBRFFUQnFJQUJCQVJDYUFTQURLUU13UWdOUkRRTWdBMEVRYWtFSWFpQURRVEJxUVFocUtRTUFOd01BSUFNZ0F5a0RNRFxcXG5jREVDQURRUkJxSUFFZ0FoQ1hCU0VFREFrTElBTkJDam9BTUNBRFFUQnFJQUVnQWhDWUF5RUVEQWdMSUFCQkZHcEJBRFlDQUNBQUlBVkJcXFxuQVdvMkFnZ2dBMEVnYWlBQUlBQkJER29RalFFZ0F5Z0NJRUVDUmcwRklBTXBBaVFoQnlBRFFRVTZBREFnQXlBSE53STBJQU5CTUdvZ0FTXFxcbkFDRUpnRElRUU1Cd3NnQUNBRlFRRnFOZ0lJSUFOQk1Hb2dBRUVBRUpvQklBTXBBekJDQTFFTkFDQURRUWhxSUFOQk1HcEJDR29wQXdBM1xcXG5Bd0FnQXlBREtRTXdOd01BSUFNZ0FTQUNFSmNGSVFRTUJnc2dBeWdDT0NFRURBWUxJQUFnQlVFQmFqWUNDQ0FESUFCQmdJREFBRUVFRU1cXFxuTURJZ1EyQWpBZ0JBMEZJQU5CTUdvUTBBc2dBMEVBT3dFd0lBTkJNR29nQVNBQ0VKZ0RJUVFNQkFzZ0FDQUZRUUZxTmdJSUlBTWdBRUdFXFxcbmdNQUFRUU1Rd3dNaUJEWUNNQ0FFRFFRZ0EwRXdhaERRQ3lBRFFZQUNPd0V3SUFOQk1Hb2dBU0FDRUpnRElRUU1Bd3NnQUNBRlFRRnFOZ1xcXG5JSUlBTWdBRUdIZ01BQVFRTVF3d01pQkRZQ01DQUVEUU1nQTBFd2FoRFFDeUFEUVFjNkFEQWdBMEV3YWlBQklBSVFtQU1oQkF3Q0N5QURcXFxuS0FJa0lRUU1BZ3NnQTBFTE9nQXdJQU5CTUdvZ0FTQUNFSmdESVFRTElBUWdBQkNwQmlFRUN5QURRY0FBYWlRQUlBUUw2UVVDQlg4R2ZpXFxcbk1BUVlBQmF5SUVKQUFnQWIwaENRSkFBa0FnQVNBQllRMEFRUUloQlF3QkN5QUpRdi8vLy8vLy8vOEhneUlLUW9DQWdJQ0FnSUFJaENBSlxcXG5RZ0dHUXY3Ly8vLy8vLzhQZ3lBSlFqU0lwMEgvRDNFaUJoc2lDMElCZ3lFTVFRTWhCUUpBQWtBQ1FFRUJRUUpCQkNBSlFvQ0FnSUNBZ0lcXFxuRDQvd0NESWcxUUlnY2JJQTFDZ0lDQWdJQ0FnUGovQUZFYlFRTkJCQ0FIR3lBS1VCdEJmMm9PQkFNQUFRSURDMEVFSVFVTUFnc2dCa0hOXFxcbmQyb2hDQ0FNVUNFRlFnRWhEZ3dCQzBLQWdJQ0FnSUNBSUNBTFFnR0dJQXRDZ0lDQWdJQ0FnQWhSSWdVYklRdENBa0lCSUFVYklRNUJ5M1xcXG5kQnpIY2dCUnNnQm1vaENDQU1VQ0VGQ3lBRUlBZzdBWGdnQkNBT053TndJQVJDQVRjRGFDQUVJQXMzQTJBZ0JDQUZPZ0I2QWtBQ1FDQUZcXFxuUVg1cVFmOEJjU0lGUVFNZ0JVRURTUnNpQjBVTkFFSGpsODRBUWVTWHpnQkIvUC9OQUNBQ0d5QUpRZ0JUR3lFSVFRRWhCVUVCSUFsQ1A0XFxcbmluSUFJYklRSUNRQUpBQWtBZ0IwRi9hZzREQWdFQUFnc2dCRUVnYWlBRVFlQUFhaUFFUVE5cVFSRVFNZ0pBQWtBZ0JDZ0NJQTBBSUFSQlxcXG4wQUJxSUFSQjRBQnFJQVJCRDJwQkVSQXNEQUVMSUFSQjBBQnFRUWhxSUFSQklHcEJDR29vQWdBMkFnQWdCQ0FFS1FNZ053TlFDeUFFSUFcXFxuUW9BbEFnQkNnQ1ZDQUVMd0ZZSUFNZ0JFRWdha0VFRUwwQklBUW9BZ1FoQlNBRUtBSUFJUWNNQXd0QkFpRUZJQVJCQWpzQklBSkFJQU5GXFxcbkRRQWdCRUV3YWtFQk5nSUFJQVJCQURzQkxDQUVRUUkyQWlnZ0JFSGdsODRBTmdJa0lBUkJJR29oQnd3REMwRUJJUVVnQkVFQk5nSW9JQVxcXG5SQjVaZk9BRFlDSkNBRVFTQnFJUWNNQWdzZ0JFRUROZ0lvSUFSQjVwZk9BRFlDSkNBRVFRSTdBU0FnQkVFZ2FpRUhEQUVMSUFSQkF6WUNcXFxuS0NBRVFlbVh6Z0EyQWlRZ0JFRUNPd0VnUVFFaEJTQUVRU0JxSVFkQkFDRUNRZnovelFBaENBc2dCRUhjQUdvZ0JUWUNBQ0FFSUFjMkFsXFxcbmdnQkNBQ05nSlVJQVFnQ0RZQ1VDQUFJQVJCMEFCcUVIRWhCU0FFUVlBQmFpUUFJQVVMclFVQkNIOGpBRUVRYXlJREpBQUNRQUpBSUFJb1xcXG5BZ1FpQkVVTkFFRUJJUVVnQUNBQ0tBSUFJQVFnQVNnQ0RCRUpBQTBCQ3dKQUlBSkJER29vQWdBaUJRMEFRUUFoQlF3QkN5QUNLQUlJSWdcXFxuWWdCVUVNYkdvaEJ5QURRUWhxUVFScUlRZ0RRQUpBQWtBQ1FBSkFJQVl2QVFBT0F3QUNBUUFMQWtBQ1FDQUdLQUlFSWdKQndRQkpEUUFnXFxcbkFVRU1haWdDQUNFRkEwQUNRQ0FBUWZDZ3pnQkJ3QUFnQlJFSkFFVU5BRUVCSVFVTUNBc2dBa0ZBYWlJQ1FjQUFTdzBBREFJTEN5QUNSUVxcXG4wREN3SkFBa0FnQWtFL1N3MEFJQUpCOEtET0FHb3NBQUJCdjM5TURRRUxJQUJCOEtET0FDQUNJQUZCREdvb0FnQVJDUUJGRFFOQkFTRUZcXFxuREFVTFFmQ2d6Z0JCd0FCQkFDQUNRYkNoemdBUTVBc0FDeUFBSUFZb0FnUWdCa0VJYWlnQ0FDQUJRUXhxS0FJQUVRa0FSUTBCUVFFaEJRXFxcbndEQ3lBR0x3RUNJUUlnQ0VFQU9nQUFJQU5CQURZQ0NBSkFBa0FDUUFKQUFrQUNRQ0FHTHdFQURnTUNBUUFDQ3lBR1FRaHFJUVVNQWdzQ1xcXG5RQ0FHTHdFQ0lnVkI2QWRKRFFCQkJFRUZJQVZCa000QVNSc2hDUXdEQzBFQklRa2dCVUVLU1EwQ1FRSkJBeUFGUWVRQVNSc2hDUXdDQ3lcXFxuQUdRUVJxSVFVTEFrQWdCU2dDQUNJSlFRWlBEUUFnQ1EwQlFRQWhDUXdDQ3lBSlFRVkI0S0RPQUJDREJRQUxJQU5CQ0dvZ0NXb2hCQUpBXFxcbkFrQWdDVUVCY1EwQUlBSWhCUXdCQ3lBRVFYOXFJZ1FnQWlBQ1FmLy9BM0ZCQ200aUJVRUtiR3RCTUhJNkFBQUxJQWxCQVVZTkFDQUVRWFxcXG41cUlRSURRQ0FDSUFWQi8vOERjU0lFUVFwdUlncEJDbkJCTUhJNkFBQWdBa0VCYWlBRklBcEJDbXhyUVRCeU9nQUFJQVJCNUFCdUlRVWdcXFxuQWlBRFFRaHFSaUVFSUFKQmZtb2hBaUFFUlEwQUN3c2dBQ0FEUVFocUlBa2dBVUVNYWlnQ0FCRUpBRVVOQUVFQklRVU1BZ3NnQmtFTWFpXFxcbklHSUFkSERRQUxRUUFoQlFzZ0EwRVFhaVFBSUFVTCtRUUNCSDhDZmlNQVFUQnJJZ1FrQUNBRUlBTTJBZ3dDUUFKQUFrQUNRQUpBQWtBZ1xcXG5BMEYrYWtFaVN3MEFBa0FnQWcwQUlBQkJBRG9BQVF3REN3SkFBa0FnQVMwQUFFRlZhZzREQVFNQUF3c2dBa0VCUmcwRkRBSUxJQUpCZjJcXFxub2lBa1VOQkNBQlFRRnFJUUVNQVFzZ0JFRWNha0lCTndJQUlBUkJBVFlDRkNBRVFlQ1l6Z0EyQWhBZ0JFRUlOZ0lzSUFRZ0JFRW9hallDXFxcbkdDQUVJQVJCREdvMkFpZ2dCRUVRYWtHRW1jNEFFSmdJQUFzQ1FDQURRUkJMRFFBZ0FrRUpUdzBBQWtBZ0EwRUtTdzBBUVFBaEJRTkFJQVxcXG5FdEFBQkJVR29pQmlBRFR3MEZJQUZCQVdvaEFTQUdJQVVnQTJ4cUlRVWdBa0YvYWlJQ0RRQU1CQXNMUVFBaEJRTkFBa0FnQVMwQUFDSUhcXFxuUVZCcUlnWkJDa2tOQUVGL0lBZEJJSElpQmtHcGYyb2lCeUFISUFaQm4zOXFTUnNpQmlBRFR3MEZDeUFCUVFGcUlRRWdCaUFGSUFOc2FpXFxcbkVGSUFKQmYyb2lBZzBBREFNTEN3SkFBa0FDUUNBRFFRcExEUUFnQTYwaENFRUFJUVVEUUNBQ1JRMEZJQUV0QUFCQlVHb2lCaUFEVHcwR1xcXG5JQVd0SUFoK0lnbENJSWluUVFCSERRTWdCaUFISUFZZ0Ewa2JJUVVnQVVFQmFpRUJJQUpCZjJvaEFpQUdJUWNnQlNBSnB5SUdhaUlGSUFcXFxuWlBEUUFNQWdzTElBT3RJUWhCQUNFRkEwQWdBa1VOQkFKQUlBRXRBQUFpQjBGUWFpSUdRUXBKRFFCQmZ5QUhRU0J5SWdaQnFYOXFJZ2NnXFxcbkJ5QUdRWjkvYWtrYklnWWdBMDhOQmdzZ0JhMGdDSDRpQ1VJZ2lLZEJBRWNOQWlBQlFRRnFJUUVnQWtGL2FpRUNJQW1uSWdjZ0Jtb2lCU1xcXG5BSFR3MEFDd3NnQUVFQ09nQUJEQUVMSUFCQkFqb0FBUXRCQVNFQkRBSUxJQUFnQlRZQ0JFRUFJUUVNQVF0QkFTRUJJQUJCQVRvQUFRc2dcXFxuQUNBQk9nQUFJQVJCTUdva0FBdmhCQUVWZnlNQVFjQUNheUlESkFBZ0FTQUNRUVowYWlFRUlBQW9BaHdoQlNBQUtBSVlJUVlnQUNnQ0ZDXFxcbkVISUFBb0FoQWhDQ0FBS0FJTUlRa2dBQ2dDQ0NFS0lBQW9BZ1FoQ3lBQUtBSUFJUXdDUUFOQUlBRWdCRVlOQVVFQUlRSWdBMEVBUWNBQ1xcXG5FS0VOSVEwRFFBSkFJQUpCd0FCSERRQkJBQ0VPQTBBQ1FDQU9RY0FCUncwQVFRQWhEeUFNSVJBZ0N5RU9JQW9oRVNBSklSSWdDQ0VUSUFcXFxuY2hBaUFHSVJRZ0JTRVZBMEFnRkNFV0lBSWhGQ0FUSVFJZ0VTRVhJQTRoRVNBUUlRNENRQ0FQUVlBQ1J3MEFJQlVnQldvaEJTQVdJQVpxXFxcbklRWWdGQ0FIYWlFSElBSWdDR29oQ0NBU0lBbHFJUWtnRnlBS2FpRUtJQkVnQzJvaEN5QU9JQXhxSVF3Z0FVSEFBR29oQVF3R0N5QVhJQlxcXG5GeUlBNXhJQmNnRVhGeUlBNUJFM2NnRGtFZWQzTWdEa0VLZDNOcUlCWWdBa0YvYzNFZ0ZDQUNjWElnRldvZ0FrRVZkeUFDUVJwM2N5QUNcXFxuUVFkM2Myb2dEMEdVOThBQWFpZ0NBR29nRFNBUGFpZ0NBR29pRTJvaEVDQVRJQkpxSVJNZ0QwRUVhaUVQSUJjaEVpQVdJUlVNQUFzTElBXFxcbjBnRG1vaUFrSEFBR29nQWtFRWFpZ0NBQ0lQUVE1M0lBOUJHWGR6SUE5QkEzWnpJQUpCSkdvb0FnQnFJQUlvQWdCcUlBSkJPR29vQWdBaVxcXG5Ba0VOZHlBQ1FROTNjeUFDUVFwMmMybzJBZ0FnRGtFRWFpRU9EQUFMQ3lBTklBSnFJQUVnQW1vb0FBQWlEa0VZZENBT1FZRCtBM0ZCQ0hcXFxuUnlJQTVCQ0haQmdQNERjU0FPUVJoMmNuSTJBZ0FnQWtFRWFpRUNEQUFMQ3dzZ0FDQUZOZ0ljSUFBZ0JqWUNHQ0FBSUFjMkFoUWdBQ0FJXFxcbk5nSVFJQUFnQ1RZQ0RDQUFJQW8yQWdnZ0FDQUxOZ0lFSUFBZ0REWUNBQ0FEUWNBQ2FpUUFDNlFGQVFwL0l3QkJNR3NpQXlRQUlBTkJJR1xcXG5vZ0FUWUNBQ0FEUVFNNkFDZ2dBMEVnTmdJWVFRQWhCQ0FEUVFBMkFpUWdBeUFBTmdJY0lBTkJBRFlDRUNBRFFRQTJBZ2dDUUFKQUFrQUNcXFxuUUNBQ0tBSVFJZ1VOQUNBQ1FReHFLQUlBSWdCRkRRRWdBaWdDQ0NFQklBQkJBM1FoQmlBQVFYOXFRZi8vLy84QmNVRUJhaUVFSUFJb0FnXFxcbkFoQUFOQUFrQWdBRUVFYWlnQ0FDSUhSUTBBSUFNb0Fod2dBQ2dDQUNBSElBTW9BaUFvQWd3UkNRQU5CQXNnQVNnQ0FDQURRUWhxSUFGQlxcXG5CR29vQWdBUkJnQU5BeUFCUVFocUlRRWdBRUVJYWlFQUlBWkJlR29pQmcwQURBSUxDeUFDUVJScUtBSUFJZ0ZGRFFBZ0FVRUZkQ0VJSUFcXFxuRkJmMnBCLy8vL1AzRkJBV29oQkNBQ0tBSUFJUUJCQUNFR0EwQUNRQ0FBUVFScUtBSUFJZ0ZGRFFBZ0F5Z0NIQ0FBS0FJQUlBRWdBeWdDXFxcbklDZ0NEQkVKQUEwREN5QURJQVVnQm1vaUFVRVFhaWdDQURZQ0dDQURJQUZCSEdvdEFBQTZBQ2dnQXlBQlFSaHFLQUlBTmdJa0lBRkJER1xcXG5vb0FnQWhDU0FDS0FJSUlRcEJBQ0VMUVFBaEJ3SkFBa0FDUUNBQlFRaHFLQUlBRGdNQkFBSUJDeUFKUVFOMElReEJBQ0VISUFvZ0RHb2lcXFxuRENnQ0JFR3JBa2NOQVNBTUtBSUFLQUlBSVFrTFFRRWhCd3NnQXlBSk5nSU1JQU1nQnpZQ0NDQUJRUVJxS0FJQUlRY0NRQUpBQWtBZ0FTXFxcbmdDQUE0REFRQUNBUXNnQjBFRGRDRUpJQW9nQ1dvaUNTZ0NCRUdyQWtjTkFTQUpLQUlBS0FJQUlRY0xRUUVoQ3dzZ0F5QUhOZ0lVSUFNZ1xcXG5DellDRUNBS0lBRkJGR29vQWdCQkEzUnFJZ0VvQWdBZ0EwRUlhaUFCS0FJRUVRWUFEUUlnQUVFSWFpRUFJQWdnQmtFZ2FpSUdSdzBBQ3dcXFxuc0NRQ0FFSUFJb0FnUlBEUUFnQXlnQ0hDQUNLQUlBSUFSQkEzUnFJZ0VvQWdBZ0FTZ0NCQ0FES0FJZ0tBSU1FUWtBRFFFTFFRQWhBUXdCXFxcbkMwRUJJUUVMSUFOQk1Hb2tBQ0FCQzVZRkFRWi9Jd0JCTUdzaUJDUUFJQVJCQURZQ0ZDQURRWUNVNjl3RFJ5RUZJQUZCQVhNaEJpQUFLQVxcXG5JQUlRRUNRQUpBQWtBQ1FBSkFBMEFDUUFKQUFrQWdBVUVJY1VVTkFDQUJRUkJKSUFaeURRRUxJQUZCRUdvaUJ5QUJTUTBESUFBZ0J5QUFcXFxuS0FJQUlnZ2dDQ0FCUmlJQkd6WUNBQ0FCUlEwQlFRRWhCd3dIQ3dKQUlBRkJBM0VOQUNBRVFSUnFFS2NKRFFFTEFrQWdBVUVCY1EwQUlBXFxcbkFnQVVFQmNpQUFLQUlBSWdjZ0J5QUJSaHMyQWdBZ0J5QUJSeUVJSUFjaEFTQUlEUUlMSUFSQkFEWUNHQUpBUVFBUXZ3MGlBUTBBSUFSQlxcXG5HR29RMEFVaEFRc2dBQkRoQlNFSEFrQUNRQUpBQWtBZ0FDZ0NBRUVKY1VFSlJ3MEFJQUZCQURZQ0JDQUJJQVU2QUJBZ0FVRVFOZ0lNSUFcXFxuRWdBRFlDQUNBQkVMb01JQWNvQWdRTkFTQUhRUVJxSVFnTUFnc2dCeERFQ1NBRVFSaHFFSkVMREFJTElBY29BZ2hCQkdvaENBc2dDQ0FCXFxcbk5nSUFJQWNnQVRZQ0NDQUhFTVFKQWtBQ1FDQUZEUUFnQVJDOURBd0JDeUFCSUFJZ0F4QytEQTBBSUFSQkNHb2dBUkR2QkNBRUtBSU1JUVxcXG5nZ0JDZ0NDQ0VKQWtBZ0FSQzhERVVOQUNBSVFRUnFJUVpCQUNFRFFRRWhCUU5BSUFZb0FnQWlCMFVOQ1FKQUlBY2dBVVlOQUNBSFFRUnFcXFxuSVFZZ0J5Z0NBQ0FKUnlBRmNTRUZJQWNoQXd3QkN3c2dCaUFCS0FJRUlnYzJBZ0FDUUNBSUtBSUlJQUZIRFFBZ0NDQUROZ0lJSUFWQkFYXFxcbkVOQ0F3SkN3TkFJQWRGRFFjZ0J5Z0NBQ0FKUmcwSklBY29BZ1FoQnd3QUN3c2dDQkRFQ1FzZ0FTZ0NDQ0VCUVFFaEJ5QUVRUmhxRUpFTFxcXG5JQUZCQVVZTkJ3c2dCRUVBTmdJVUN5QUFLQUlBSVFFTUFBc0xRYXpld0FCQkhFR2szOEFBRUlvR0FBc2dCVUVCY1VVTkFRc2dBQ0FBS0FcXFxuSUFRWDV4TmdJQUN5QUlFTVFKSUFSQkdHb1FrUXRCQUNFSEN5QUVRVEJxSkFBZ0J3dWxCUUVPZnlNQVFZQUJheUlESkFBZ0EwRUFOZ0k0XFxcbklBTkJBVHNCTkNBRElBSTJBakFnQTBFQU5nSXNJQU5DZ1lDQWdLQUJOd0lrSUFNZ0FqWUNJQ0FESUFJMkFoZ2dBeUFCTmdJVUlBTkJDalxcXG5ZQ0VDQUFMUUFNSVFRZ0FDZ0NCQ0VGSUFBb0FnQWhCaUFBS0FJSUlRY2dBMEVvYWlFSVFRQWhDVUVBSVFwQkFDRUxRUUFoREFKQUEwQWdcXFxuQ2lFTklBa2hEaUFNSWc5Qi93RnhEUUVDUUFKQUFrQURRQ0FDSUF0SkloQU5Ba0VBSUFFZ0Myb2dFQnNoQ2dKQUFrQWdDU0FDSUF0cklCXFxcbkFiSWdsQkIwc05BRUVBSVF4QkFDRVFBMEFDUUNBSklCQkhEUUFnQ1NFUURBTUxBa0FnQ2lBUWFpMEFBRUVLUncwQVFRRWhEQXdEQ3lBUVxcXG5RUUZxSVJBTUFBc0xJQU5CQ0dwQkNpQUtJQWtRL1FFZ0F5Z0NEQ0VRSUFNb0FnZ2hEQXNnREVFQlJ3MEJJQU1nQ3lBUWFpSVFRUUZxSWdcXFxuczJBaHdnRUNBQ1R3MEFJQUVnRUdwQkFTQUlRUUVRckFwRkRRQUxJQU1nQ3pZQ0xFRUFJUXdnQ3lFS0RBSUxJQU1nQWpZQ0hDQUNJUXNMXFxcblFRRWhEQ0FEUVFFNkFEVWdEU0VLSUFJaEVBc2dBeUFPUVFGcUlnazJBamdDUUFKQUFrQWdCRUgvQVhGRkRRQWdEa1VOQWlBSFFRb1FuZ1xcXG5zTkJDQUdEUUVnQjBITTM4MEFRUVFRL3dwRkRRSU1CQXNnQUVFQk9nQU1Ba0FnQmcwQVFRRWhCQ0FIUWN6ZnpRQkJCQkQvQ2tVTkFnd0VcXFxuQ3lBRElBVTJBandnQTBFSU5nSmNRUUVoQkNBRFFRRTJBbFFnQTBFQ05nSkVJQU5Cdk4vTkFEWUNRQ0FEUVFFMkFrd2dBeUFEUVR4cU5nXFxcbkpZSUFOQkFUb0FmQ0FEUVFBMkFuZ2dBMElnTndOd0lBTkNnSUNBZ05BQU53Tm9JQU5CQWpZQ1lDQURJQU5CNEFCcU5nSlFJQU1nQTBIWVxcXG5BR28yQWtnZ0J5QURRY0FBYWhDdEJRMEREQUVMSUFkQjBOL05BRUVIRVA4S0RRSUxJQWNnQVNBTmFpQVFJQTFyRVA4S1JRMEFDd3NnQTBcXFxuR0FBV29rQUNBUFFmOEJjVVVMNVFRQkJuOGpBRUV3YXlJQ0pBQWdBaUFBTHdBT0lnTkJDSFFnQTBFSWRuSTdBUTRnQWlBQUx3QU1JZ05CXFxcbkNIUWdBMEVJZG5JN0FRd2dBaUFBTHdBS0lnTkJDSFFnQTBFSWRuSTdBUW9nQWlBQUx3QUlJZ05CQ0hRZ0EwRUlkbkk3QVFnZ0FpQUFMd1xcXG5BR0lnTkJDSFFnQTBFSWRuSTdBUVlnQWlBQUx3QUVJZ05CQ0hRZ0EwRUlkbkk3QVFRZ0FpQUFMd0FDSWdOQkNIUWdBMEVJZG5JN0FRSWdcXFxuQWlBQUx3QUFJZ0JCQ0hRZ0FFRUlkbkk3QVFCQmZ5RUVRUUFoQUVGL0lRVURRQ0FDSUFCQkFYUnFJUU5CZnlFR0FrQURRQ0FBUVFoR0RRXFxcbkVDUUFKQUFrQWdBeThCQUEwQUlBQWdCaUFHUVFCSUd5RUhEQUVMUVg4aEJ5QUdRWDlLRFFFTElBQkJBV29oQUNBRFFRSnFJUU1nQnlFR1xcXG5EQUVMQ3lBQUlBWnJJZ01nQkNBRElBUktJZ01iSVFRZ0JpQUZJQU1iSVFVZ0FFRUJhaUVBREFFTEMwRi9JQVlnQlVFSUlBWnJJZ0FnQkVcXFxub2lBeHNnQlNBR1FYOUtJZ1liSWdjZ0FDQUVJQU1iSUFRZ0Joc2lBRUVDU0NJR0d5RURRWDRnQnlBQWFpQUdHeUVHUVFBaEFBSkFBa0FEXFxcblFDQUFRUWhPRFFFQ1FBSkFJQUFnQTBjTkFDQUJRWjZId1FCQkFSRC9DZzBCQWtBZ0F3MEFJQUZCbm9mQkFFRUJFUDhLRFFJTElBWWhBQ1xcXG5BR1FRaE9EUU1MQWtBQ1FDQUFRUWhQRFFBZ0FrSFhBVFlDTENBQ1FhQ0h3UUEyQWhBZ0FrSUJOd0ljSUFKQkFUWUNGQ0FDSUFJZ0FFRUJcXFxuZEdvMkFpZ2dBaUFDUVNocU5nSVlJQUVnQWtFUWFoQ3RCVVVOQVF3Q0N5QUFRUWhCcUlmQkFCQ0JCUUFMQWtBZ0FFRUhUdzBBSUFGQm5vXFxcbmZCQUVFQkVQOEtEUUVMSUFCQkFXb2hBQXdCQ3d0QkFTRUFEQUVMUVFBaEFBc2dBa0V3YWlRQUlBQUxoUVVCQ244akFFRVFheUlDSkFBQ1xcXG5RQUpBQWtBQ1FBSkFJQUFvQWdCRkRRQWdBQ2dDQkNFRElBSkJER29nQVVFTWFpZ0NBQ0lFTmdJQUlBSWdBU2dDQ0NJRk5nSUlJQUlnQVNcXFxuZ0NCQ0lHTmdJRUlBSWdBU2dDQUNJQk5nSUFJQUF0QUNBaEJ5QUFLQUlRSVFnZ0FDMEFIRUVJY1EwQklBZ2hDU0FISVFvZ0JpRUJEQUlMXFxcbklBQkJGR29vQWdBZ0FFRVlhaWdDQUNBQkVHb2hCUXdEQ3lBQUtBSVVJQUVnQmlBQVFSaHFLQUlBS0FJTUVRa0FEUUZCQVNFS0lBQkJBVFxcXG5vQUlFRXdJUWtnQUVFd05nSVFRUUFoQVNBQ1FRQTJBZ1FnQWtIOC84MEFOZ0lBUVFBZ0F5QUdheUlHSUFZZ0Ewc2JJUU1MQWtBZ0JFVU5cXFxuQUNBRVFReHNJUVFEUUFKQUFrQUNRQUpBSUFVdkFRQU9Bd0FDQVFBTElBVkJCR29vQWdBaEJnd0NDeUFGUVFocUtBSUFJUVlNQVFzQ1FDXFxcbkFGUVFKcUx3RUFJZ3RCNkFkSkRRQkJCRUVGSUF0QmtNNEFTUnNoQmd3QkMwRUJJUVlnQzBFS1NRMEFRUUpCQXlBTFFlUUFTUnNoQmdzZ1xcXG5CVUVNYWlFRklBWWdBV29oQVNBRVFYUnFJZ1FOQUFzTEFrQUNRQUpBSUFNZ0FVME5BQ0FESUFGcklnRWhCQUpBQWtBQ1FDQUtRZjhCY1NcXFxuSUZEZ1FDQUFFQUFndEJBQ0VFSUFFaEJRd0JDeUFCUVFGMklRVWdBVUVCYWtFQmRpRUVDeUFGUVFGcUlRVWdBRUVZYWlnQ0FDRUJJQUJCXFxcbkZHb29BZ0FoQmdOQUlBVkJmMm9pQlVVTkFpQUdJQWtnQVNnQ0VCRUdBRVVOQUF3RUN3c2dBRUVVYWlnQ0FDQUFRUmhxS0FJQUlBSVFhaVxcXG5FRkRBRUxJQVlnQVNBQ0VHb05BVUVBSVFVRFFBSkFJQVFnQlVjTkFDQUVJQVJKSVFVTUFnc2dCVUVCYWlFRklBWWdDU0FCS0FJUUVRWUFcXFxuUlEwQUN5QUZRWDlxSUFSSklRVUxJQUFnQnpvQUlDQUFJQWcyQWhBTUFRdEJBU0VGQ3lBQ1FSQnFKQUFnQlF2WEJBRUZmeUFEUVFBZ0F5XFxcbkFDUVFOcVFYeHhJQUpySWdSclFRZHhJQU1nQkVrYklnVnJJUVlDUUFKQUFrQUNRQ0FESUFWSkRRQUNRQ0FGUlEwQUlBSWdBMm9pQlNBQ1xcXG5JQVpxSWdkcklRZ0NRQUpBSUFWQmYyb2lCUzBBQUNBQlFmOEJjVWNOQUNBSVFYOXFJUVFNQVFzZ0J5QUZSZzBCQWtBZ0JVRi9haUlGTFFcXFxuQUFJQUZCL3dGeFJ3MEFJQWhCZm1vaEJBd0JDeUFISUFWR0RRRUNRQ0FGUVg5cUlnVXRBQUFnQVVIL0FYRkhEUUFnQ0VGOWFpRUVEQUVMXFxcbklBY2dCVVlOQVFKQUlBVkJmMm9pQlMwQUFDQUJRZjhCY1VjTkFDQUlRWHhxSVFRTUFRc2dCeUFGUmcwQkFrQWdCVUYvYWlJRkxRQUFJQVxcXG5GQi93RnhSdzBBSUFoQmUyb2hCQXdCQ3lBSElBVkdEUUVDUUNBRlFYOXFJZ1V0QUFBZ0FVSC9BWEZIRFFBZ0NFRjZhaUVFREFFTElBY2dcXFxuQlVZTkFRSkFJQVZCZjJvaUJTMEFBQ0FCUWY4QmNVY05BQ0FJUVhscUlRUU1BUXNnQnlBRlJnMEJJQWhCZUdvaEJBc2dCQ0FHYWlFRURBXFxcbk1MSUFRZ0F5QURJQVJMR3lFSElBRkIvd0Z4UVlHQ2hBaHNJUVVEUUNBR0lnUWdCMDBOQWlBQ0lBUnFJZ2hCZUdvb0FnQWdCWE1pQmtGL1xcXG5jeUFHUWYvOSszZHFjVUdBZ1lLRWVIRU5BaUFFUVhocUlRWWdDRUY4YWlnQ0FDQUZjeUlJUVg5eklBaEIvLzM3ZDJweFFZQ0Jnb1I0Y1VcXFxuVU5BQXdDQ3dzZ0JpQURRWXlpemdBUWdnVUFDd0pBSUFRZ0Ewc05BQ0FDUVg5cUlRVWdBVUgvQVhFaENBTkFBa0FnQkEwQVFRQWhCZ3dFXFxcbkN5QUZJQVJxSVFZZ0JFRi9haUVFSUFZdEFBQWdDRVlOQWd3QUN3c2dCQ0FEUVp5aXpnQVFnd1VBQzBFQklRWUxJQUFnQkRZQ0JDQUFJQVxcXG5ZMkFnQUxoUVVCQ1g4akFFRWdheUlDSkFBQ1FBSkFBa0FDUUNBQktBSW9SUTBBQWtBZ0FVRXdhaWdDQUNJRElBRkJOR29vQWdCR0RRQWdcXFxuQVNBRFFReHFOZ0l3SUFNb0FnQWlCQTBDQ3lBQlFTaHFJZ01RelFzZ0EwRUFOZ0lBQ3lBQktBSUFRWUNBeEFCR0lnTU5BUUpBUVFBZ0FTXFxcbkFER3lJRUxRQWxEUUFnQkVFWWFpRUZJQVFvQWdRaUJpRUhBMEFDUUFKQUFrQUNRQ0FFS0FJUUlnRWdCQ2dDRENJSVNTQUJJQVFvQWdoTFxcXG5jaUlKRFFCQkFDQUhJQWhxSUFrYklRY2dCQ2dDRkNBRmFrRi9haTBBQUNFS0FrQUNRQ0FESUFFZ0NHc2dDUnNpQTBFSFN3MEFRUUFoQ0VcXFxuRUFJUUVEUUFKQUlBTWdBVWNOQUNBRElRRU1Bd3NDUUNBSElBRnFMUUFBSUFwQi93RnhSdzBBUVFFaENBd0RDeUFCUVFGcUlRRU1BQXNMXFxcbklBSkJHR29nQ2lBSElBTVEvUUVnQWlnQ0hDRUJJQUlvQWhnaENBc0NRQ0FJUVFGSERRQWdCQ0FCSUFRb0FneHFRUUZxSWdFMkFnd2dBU1xcXG5BRUtBSVVJZ2RKRFFRZ0FTQUVLQUlJVFEwQ0RBUUxJQVFnQkNnQ0VEWUNEQXNnQkMwQUpRMEVJQVJCQVRvQUpTQUVLQUljSVFNZ0JDZ0NcXFxuSUNFQkFrQWdCQzBBSkEwQUlBRWdBMFlOQlFzZ0FTQURheUVCSUFRb0FnUWdBMm9oQXd3QkN5QUVLQUlFSVFvZ0FrRVFha0VBSUFjZ0JVXFxcbkVFUWJTYXdBQVFoUWNnQ2lBQklBZHJJZ0ZxSUFjZ0FpZ0NFQ0FDS0FJVUVLWUtSUTBCSUFRb0Fod2hBeUFFSUFRb0FndzJBaHdnQVNBRFxcXG5heUVCSUFZZ0Eyb2hBd3NnQWtFSWFpQUJRUUFRMVFRZ0FpZ0NEQ0VFSUFJb0FnZ2dBeUFCRUtRTklRTWdBQ0FCTmdJSUlBQWdCRFlDQkNcXFxuQUFJQU0yQWdBTUJRc2dCQ2dDQkNFSERBQUxDeUFBUVFBMkFnQU1BZ3NnQUNBRU5nSUFJQUFnQXlrQ0JEY0NCQXdCQ3lBQVFRQTJBZ0FMXFxcbklBSkJJR29rQUF2dkJBSU1md0YrSXdCQklHc2lCQ1FBSUFBb0FnUWhCVUVCSVFZZ0JFRUJPZ0FjSUFSQkJ6WUNHQ0FFSUFWQkFXb2lCelxcXG5ZQ0ZDQUVRUUEyQWhBZ0FDZ0NBQ0VJQTBBQ1FBSkFJQVpCL3dGeERRQWdCRUVJYWlBRVFSQnFJQVFvQWhnUWlnY2dCQ2dDRENFRklBUW9cXFxuQWdnaEJnd0JDMEVBSVFZZ0JFRUFPZ0FjSUFRb0FoQWlCU0FFS0FJVVR3MEFRUUVoQmlBRUlBVkJBV28yQWhBTEFrQWdCZzBBQWtBQ1FDXFxcbkFIUVFoSkRRQWdDQ0FIYWlBSUtRQUFOd0FBREFFTElBaEJDR29nQ0NBSEVLTU5HZ3NnQUNnQ0JFRUJhaUVKUVFBaENnTkFBa0FDUUNBS1xcXG5JZ2dnQ1VZTkFDQUlRUUZxSVFvZ0FDZ0NBQ0lHSUFocUxRQUFRWUFCUncwQ0lBWWdDRUYvY3lBRGJHb2hDeUFDS0FJVUlRd0RRQ0FCSUFcXFxuQWdDQ0FNRVFvQUlSQWdDQ0FBS0FJRUlnVWdFS2NpQjNFaURXc2dBQ0FRRUxrRUlnWWdEV3R6SUFWeFFRaEpEUUlnQUNnQ0FDSU5JQVpxXFxcbklnNHRBQUFoRHlBT0lBZEJHWFlpQnpvQUFDQUdRWGhxSUFWeElBQW9BZ0JxUVFocUlBYzZBQUFnRFNBR1FYOXpJQU5zYWlFR0FrQWdEMFxcXG5IL0FVWU5BQ0FMSUFZZ0F4Q25Cd3dCQ3dzZ0FDZ0NCQ0VGSUFBb0FnQWdDR3BCL3dFNkFBQWdCU0FJUVhocWNTQUFLQUlBYWtFSWFrSC9cXFxuQVRvQUFDQUdJQXNnQXhDa0RSb01BZ3NnQUNBQUtBSUVJZ1lnQmtFQmFrRURka0VIYkNBR1FRaEpHeUFBS0FJTWF6WUNDQ0FFUVNCcUpBXFxcbkFQQ3lBQUtBSUFJQWhxSUFkQkdYWWlCam9BQUNBRklBaEJlR3B4SUFBb0FnQnFRUWhxSUFZNkFBQU1BQXNMSUFnZ0JXb2lCaUFHS1FNQVxcXG5JaEJDZjRWQ0I0aENnWUtFaUpDZ3dJQUJneUFRUXYvKy9mdjM3OSsvL3dDRWZEY0RBQ0FFTFFBY0lRWU1BQXNMK1FRQkIzOGpBRUV3YXlcXFxuSURKQUFnQTBFQU5nSVVJQUpCZ0pUcjNBTkhJUVFnQUNnQ0FDRUZBa0FDUUFKQUFrQUNRQU5BQWtBZ0JVRU1jUTBBSUFBZ0JVRUljaUFBXFxcbktBSUFJZ1lnQmlBRlJpSUZHellDQUNBRkRRSWdCaUVGREFFTEFrQUNRQ0FGUVFOeERRQWdBMEVVYWhDbkNRMEJDd0pBSUFWQkFYRU5BQ1xcXG5BQUlBVkJBWElnQUNnQ0FDSUdJQVlnQlVZYk5nSUFJQVlnQlVjaEJ5QUdJUVVnQncwQ0N5QURRUUEyQWhnQ1FFRUFFTDhOSWdVTkFDQURcXFxuUVJocUVOQUZJUVVMSUFBUTRRVWhCZ0pBQWtBQ1FBSkFJQUFvQWdBaUIwRUJjVVVOQUNBSFFReHhSUTBBSUFWQkFEWUNCQ0FGSUFRNkFCXFxcbkFnQlVFSU5nSU1JQVVnQURZQ0FDQUZFTG9NSUFZb0FnUU5BU0FHUVFScUlRY01BZ3NnQmhERUNTQURRUmhxRUpFTERBSUxJQVlvQWdoQlxcXG5CR29oQndzZ0J5QUZOZ0lBSUFZZ0JUWUNDQ0FHRU1RSkFrQUNRQ0FFRFFBZ0JSQzlEQXdCQ3lBRklBRWdBaEMrREEwQUlBTkJDR29nQlJcXFxuRHZCQ0FES0FJTUlRY2dBeWdDQ0NFSUFrQWdCUkM4REVVTkFDQUhRUVJxSVFSQkFDRUpRUUVoQWdOQUlBUW9BZ0FpQmtVTkNRSkFJQVlnXFxcbkJVWU5BQ0FHUVFScUlRUWdCaWdDQUNBSVJ5QUNjU0VDSUFZaENRd0JDd3NnQkNBRktBSUVJZ1kyQWdBQ1FDQUhLQUlJSUFWSERRQWdCeVxcXG5BSk5nSUlJQUpCQVhFTkNBd0pDd05BSUFaRkRRY2dCaWdDQUNBSVJnMEpJQVlvQWdRaEJnd0FDd3NnQnhERUNRc2dCU2dDQ0NFRklBTkJcXFxuR0dvUWtRc2dCVUVCUmcwREN5QURRUUEyQWhRTElBQW9BZ0FoQlF3QUN3c2dBQ0FCSUFKQkFCQlFJUVVNQXdzZ0FrRUJjVVVOQVFzZ0FDXFxcbkFBS0FJQVFYNXhOZ0lBQ3lBSEVNUUpJQU5CR0dvUWtRdEJBQ0VGQ3lBRFFUQnFKQUFnQlF1SUJRSUtmd0YrSXdCQjBBQnJJZ01rQUFKQVxcXG5Ba0FnQVVFVlNRMEFJQU5CTUdvZ0FVRUJkaERuQ0NBRElBTW9BalEyQWp3Z0F5QURLQUl3SWdRMkFqZ2dBMEhBQUdvUStRbEJBQ0VGQTBcXFxuQUNRQ0FGSUFGSkRRQWdBMEhBQUdvUXl3d2dBMEU0YWhEQUN3d0RDeUFEUVNocUlBQWdCVUVEZEdvZ0FTQUZheUFERUs0RElBTW9BaWdnXFxcbkJXb2hCZ0pBSUFNdEFDeEJBWEZGRFFBZ0EwRWdhaUFGSUFZZ0FDQUJRY2lad1FBUTd3WWdBMEVZYWtFQUlBTW9BaVFpQjBFQmRpSUlJQVxcXG5Nb0FpQWlDU0FJUWFpWXdRQVE3d1lnQXlnQ0hDRUtJQU1vQWhnaEN5QURRUkJxUVFBZ0NDQUpJQWRCQTNScUlBaEJBM1FpQjJzZ0NFRzRcXFxubU1FQUVPOEdJQWhCZjJvaENDQURLQUlRSUFkcVFYaHFJUWNnQXlnQ0ZDRU1JQW9oQ1FKQUEwQWdDRUYvUmcwQ0lBbEZEUUVDUUNBSUlBXFxcbnhQRFFBZ0N5a0NBQ0VOSUFzZ0J5a0NBRGNDQUNBSElBMDNBZ0FnQ1VGL2FpRUpJQWRCZUdvaEJ5QUlRWDlxSVFnZ0MwRUlhaUVMREFFTFxcXG5DeUFJSUF4QjJKakJBQkNCQlFBTElBb2dDa0hJbU1FQUVJRUZBQXNnQTBIQUFHb2dBQ0FCSUFVZ0JpQUNFSklFSWdZZ0JXc2dCUkRIQkFcXFxuTkFJQU5CQ0dvZ0F5Z0NRQ0FES0FKSUlBRVEyZ0lnQXlnQ0RDRUlBa0FnQXlnQ0NFRUJSZzBBSUFZaEJRd0NDeUFEUWNBQWFpQUlRZGlaXFxcbndRQVE1UVVpQnlnQ0FDRUxJQU1nQnlnQ0JDSUhJQU5Cd0FCcUlBaEJBV29pQ1VIb21jRUFFT1VGSWd3b0FnUWdEQ2dDQUNJTWFpQUFJQVxcXG5GQitKbkJBQkR2QmlBREtBSUFJQU1vQWdRZ0N5QUVJQU1RaVFJZ0EwSEFBR29nQ1VHSW1zRUFFT1VGSWdrZ0J6WUNCQ0FKSUF3Z0MybzJcXFxuQWdBZ0EwSEFBR29nQ0JEQkJBd0FDd3NMSUFGQkFra05BQ0FBSUFGQkFTQURFTWdGQ3lBRFFkQUFhaVFBQzdFRkFRTi9Jd0JCa0FGcklnXFxcblFrQUNBRUlBTTJBaXdnQkNBQ05nSW9JQVJCSUdwQkFrRUFFUDhESUFSQkFEWUNPQ0FFSUFRcEF5QTNBekFnQkVFWWFpQUJFTThGSUFRb1xcXG5BaGdoQWlBRVFSQnFJQVFvQWh3aUEwRUFFTlVFSUFRb0FoUWhCU0FFS0FJUUlBSWdBeENrRFNFR0lBUWdBellDZ0FFZ0JDQUZOZ0o4SUFcXFxuUWdCallDZUNBRVFUQnFJQVJCK0FCcUVLSUdBa0FDUUFKQUFrQUNRQUpBSUFJZ0EwR0lvc0FBUVFRUXBnb05BQ0FDSUFOQmpLTEFBRUVGXFxcbkVLWUtSUTBCQ3lBRVFRaHFJQUVRcHdZZ0JDZ0NDQ0lDUlEwQklBUW9BZ3doQXlBRUlBSTJBa0FnQkNBRE5nSkVBa0FDUUNBQkx3RVFEUVxcXG5BZ0JDQURRUUFRMVFRZ0JDZ0NCQ0VCSUFRb0FnQWlCU0FDSUFNUXBBMGFEQUVMSUFRZ0FVRVNhaThCQURzQlRpQUVRZUFBYWtFTWFrSURcXFxuTndJQUlBUkJqQUZxUVFzMkFnQWdCRUg0QUdwQkRHcEJBVFlDQUNBRVFRTTJBbVFnQkVHNG9zQUFOZ0pnSUFSQkFUWUNmQ0FFSUFSQitBXFxcbkJxTmdKb0lBUWdCRUhPQUdvMkFvZ0JJQVFnQkVFb2FqWUNnQUVnQkNBRVFjQUFhallDZUNBRVFkQUFhaUFFUWVBQWFoQ1BCQ0FFS0FKUVxcXG5JUVVnQkNnQ1ZDRUJJQVFvQWxnaEF3c2dCQ0FETmdLQUFTQUVJQUUyQW53Z0JDQUZOZ0o0SUFSQk1Hb2dCRUg0QUdvUW9nWU1Bd3NnQWlcXFxuQURRZENpd0FCQkJCQ21DZzBDSUFJZ0EwSFVvc0FBUVFRUXBnb05BaUFFSUFNMkFsUWdCQ0FDTmdKUVFRQW9BdmltVDBFRFRRMEJJQVJCXFxcbmhBRnFRZ0UzQWdBZ0JFRUJOZ0o4SUFSQmlLUEFBRFlDZUNBRVFRRTJBbVFnQkNBRVFlQUFhallDZ0FFZ0JDQUVRZEFBYWpZQ1lDQUVRZlxcXG5nQWFrRUVRYWlqd0FCQkFDQUVFSkVEREFFTFFjQ0d3QUJCSzBHb29zQUFFSU1IQUFzZ0FFRUFOZ0lBSUFSQk1Hb1E0Z3dNQVFzZ0FDQUVcXFxuS1FNd053SUFJQUJCQ0dvZ0JFRXdha0VJYWlnQ0FEWUNBQXNnQkVHUUFXb2tBQXVBQlFJRGZ3RitJd0JCd0FCcklnTWtBQ0FEUVRCcUlBXFxcbkFRM2dnQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQURRVEJxRU1RS0lnUkIvd0Z4SWdWQklrWU5BQ0FGUVMxR0RRRWdCVUhtQUVZTlxcXG5BeUFGUWU0QVJnMEZJQVZCOUFCR0RRUUNRQ0FGUWRzQVJnMEFJQVZCK3dCR0RRZ0NRQ0FFUVZCcVFmOEJjVUVLU1EwQUlBTkJDallDTUNcXFxuQUFJQU5CTUdvUTNRZ2hCUXdLQ3lBRFFUQnFJQUJCQVJEK0RDQURLUU13UWdOUkRRTWdBMEVRYWtFSWFpQURRVEJxUVFocUtRTUFOd01BXFxcbklBTWdBeWtETURjREVDQURRUkJxSUFFZ0FoQ1hCU0VGREFrTElBTkJDam9BTUNBRFFUQnFJQUVnQWhDWUF5RUZEQWdMSUFBUWd3d2dBRVxcXG5FVWFrRUFOZ0lBSUFOQklHb2dBQ0FBUVF4cUVNWUJJQU1vQWlCQkFrWU5CU0FES1FJa0lRWWdBMEVGT2dBd0lBTWdCamNDTkNBRFFUQnFcXFxuSUFFZ0FoQ1lBeUVGREFjTElBQVFnd3dnQTBFd2FpQUFRUUFRL2d3Z0F5a0RNRUlEVVEwQUlBTkJDR29nQTBFd2FrRUlhaWtEQURjREFDXFxcbkFESUFNcEF6QTNBd0FnQXlBQklBSVFsd1VoQlF3R0N5QURLQUk0SVFVTUJnc2dBQkNERENBRElBQkJnSURBQUVFRUVQd0RJZ1UyQWpBZ1xcXG5CUTBGSUFOQk1Hb1EwQXNnQTBFQU93RXdJQU5CTUdvZ0FTQUNFSmdESVFVTUJBc2dBQkNERENBRElBQkJoSURBQUVFREVQd0RJZ1UyQWpcXFxuQWdCUTBFSUFOQk1Hb1EwQXNnQTBHQUFqc0JNQ0FEUVRCcUlBRWdBaENZQXlFRkRBTUxJQUFRZ3d3Z0F5QUFRWWVBd0FCQkF4RDhBeUlGXFxcbk5nSXdJQVVOQXlBRFFUQnFFTkFMSUFOQkJ6b0FNQ0FEUVRCcUlBRWdBaENZQXlFRkRBSUxJQU1vQWlRaEJRd0NDeUFEUVFzNkFEQWdBMFxcXG5Fd2FpQUJJQUlRbUFNaEJRc2dBQ0FGRUw0TklRVUxJQU5Cd0FCcUpBQWdCUXVTQlFJRGZ3SitJd0JCOEFCcklnVWtBQ0FGSUFFb0FrZ2lcXFxuQmlnQ1VDSUhOZ0lvSUFVZ0F6WUNMQUpBQWtBQ1FBSkFJQWNnQTBjTkFDQUVJQU5MRFFFZ0JDQURUdzBDSUFJZ0JHcEJnQUU2QUFBZ0JFXFxcbkVCYWlFSEFrQWdBeUFHS0FKVWF5QUVUUTBBSUFNaEJnd0VDeUFGUVNCcUlBY2dBeUFDSUFOQitQckFBQkNhQnlBRktBSWtJUWNnQlNnQ1xcXG5JQ0VHQWtBRFFDQUhSUTBCSUFaQkFEb0FBQ0FIUVg5cUlRY2dCa0VCYWlFR0RBQUxDeUFCSUFKQkFTQUJLQUpJS0FKQUVRZ0FRUUFoQnlcXFxuQUZLQUlvSVFZTUF3c2dCVUVBTmdJd1FRQWdCVUVzYWlBRlFTaHFJQVZCTUdwQm1QckFBQkM1QlFBTFFhajZ3QUJCTGtIWStzQUFFSU1IXFxcbkFBc2dCQ0FEUWVqNndBQVFnUVVBQ3lBRlFSaHFJQWNnQmtGNGFpQUNJQU5CaVB2QUFCQ2FCeUFGS0FJY0lRY2dCU2dDR0NFR0FrQURRQ1xcXG5BSFJRMEJJQVpCQURvQUFDQUhRWDlxSVFjZ0JrRUJhaUVHREFBTEN5QUZJQUVwQTBCQ0FDQUZLQUlvSWdldFFnQVF5QVFnQlNrRENGQ3RcXFxuUVpqN3dBQVFrd3NnQlNrREFDSUlJQVN0ZkNJSklBaGFyVUdvKzhBQUVKTUxJQWxDZ0lDQWdJQ0FnSUFnVksxQnVQdkFBQkNUQ3lBRlFSXFxcbkJxSUFkQmVHb2dCeUFDSUFOQnlQdkFBQkNhQnlBRktBSVVJUWNnQlNnQ0VDRUdJQVVnQ1VJN2hpQUpRaXVHUW9DQWdJQ0FnTUQvQUlPRVxcXG5JQWxDRzRaQ2dJQ0FnSURnUDRNZ0NVSUxoa0tBZ0lDQThCK0RoSVFnQ1VJRmlFS0FnSUQ0RDRNZ0NVSVZpRUtBZ1B3SGc0UWdDVUlsaUVcXFxuS0EvZ09ESUFsQ0E0WkNPSWlFaElRM0F6QWdCaUFISUFWQk1HcEJDRUhZKzhBQUVQTUpJQUVnQWtFQklBRW9Ba2dvQWtBUkNBQWdBU2dDXFxcblNDSUhLQUpFSVFZZ0JVRXdhaUFCUWNBQUVLUU5HaUFBSUFWQk1Hb2dCaEVGQUNBQUlBYzJBa0FnQlVId0FHb2tBQXZEQkFFTGZ5QUFLQVxcXG5JRUlRTWdBQ2dDQUNFRUlBQW9BZ2doQlVFQUlRWkJBQ0VIUVFBaENFRUFJUWtDUUFOQUlBbEIvd0Z4RFFFQ1FBSkFJQWdnQWtzTkFBTkFcXFxuSUFFZ0NHb2hDZ0pBQWtBZ0FpQUlheUlMUVFoSkRRQUNRQUpBQWtBZ0NrRURha0Y4Y1NJQUlBcEdEUUFnQUNBS2F5SU1SUTBBUVFBaEFBXFxcbk5BSUFvZ0FHb3RBQUJCQ2tZTkJTQU1JQUJCQVdvaUFFY05BQXNnRENBTFFYaHFJZzFORFFFTUFnc2dDMEY0YWlFTlFRQWhEQXNEUUNBS1xcXG5JQXhxSWdrb0FnQWlBRUYvY3lBQVFZcVVxTkFBYzBILy9mdDNhbkZCZ0lHQ2hIaHhEUUVnQ1VFRWFpZ0NBQ0lBUVg5eklBQkJpcFNvMEFcXFxuQnpRZi85KzNkcWNVR0FnWUtFZUhFTkFTQU1RUWhxSWd3Z0RVME5BQXNMQWtBZ0N5QU1SdzBBSUFJaENBd0VDd05BQWtBZ0NpQU1haTBBXFxcbkFFRUtSdzBBSUF3aEFBd0RDeUFMSUF4QkFXb2lERWNOQUFzZ0FpRUlEQU1MQWtBZ0NDQUNSdzBBSUFJaENBd0RDMEVBSVFBRFFDQUtJQVxcXG5CcUxRQUFRUXBHRFFFZ0N5QUFRUUZxSWdCSERRQUxJQUloQ0F3Q0N5QUlJQUJxSWdCQkFXb2hDQUpBSUFBZ0FrOE5BQ0FCSUFCcUxRQUFcXFxuUVFwSERRQkJBQ0VKSUFnaERTQUlJUUFNQXdzZ0NDQUNUUTBBQ3d0QkFTRUpJQWNoRFNBQ0lRQWdCeUFDUmcwQ0N3SkFBa0FnQlMwQUFFXFxcblVOQUNBRVFhaWV6Z0JCQkNBREtBSU1FUWtBRFFFTElBRWdCMm9oRENBQUlBZHJJUXBCQUNFTEFrQWdBQ0FIUmcwQUlBb2dER3BCZjJvdFxcXG5BQUJCQ2tZaEN3c2dCU0FMT2dBQUlBMGhCeUFFSUF3Z0NpQURLQUlNRVFrQVJRMEJDd3RCQVNFR0N5QUdDNUlGQVFaL0l3QkJNR3NpQmlcXFxuUUFJQVpCQ0dvZ0FSQzJCQUpBQWtBQ1FBSkFJQVl0QUFnTkFDQUdMUUFKRFFJZ0JrRUZOZ0lRSUFFZ0JrRVFhaERPQ0NFQkRBRUxJQVlvXFxcbkFnd2hBUXNnQUVHQWxPdmNBellDQ0NBQUlBRTJBZ0FNQVFzQ1FBSkFBa0FDUUFKQUFrQWdCaTBBQ2lJSFFkc0FSZzBBQWtBZ0IwSDdBRVxcXG5ZTkFDQUJJQVpCS0dwQndJUEFBQkJvSVFjTUJnc2dBU0FCTFFBWVFYOXFJZ2M2QUJnZ0IwSC9BWEZGRFFJZ0FTQUJLQUlJUVFGcU5nSUlcXFxuSUFaQkVHb2dBVUVCRU1zQklBRWdBUzBBR0VFQmFqb0FHQ0FHSUFFUXhBTWlCellDSUVHQWxPdmNBeUVJQWtBZ0JpZ0NHQ0lKUVlDVTY5XFxcbndEUmcwQUlBY05BaUFHS0FJVUlRb2dCaWdDRUNFSElBa2hDQXdGQ3lBR0tBSVFJUW9DUUNBSFJRMEFJQWxCZ0pUcjNBTkdEUVFMSUFvaFxcXG5Cd3dCQ3lBQklBRXRBQmhCZjJvaUJ6b0FHQUpBSUFkQi93RnhSUTBBSUFFZ0FTZ0NDRUVCYWpZQ0NDQUdRUkJxSUFGQkFSQ3VBaUFCSUFcXFxuRXRBQmhCQVdvNkFCZ2dCaUFCRUswQ0lnYzJBaUJCZ0pUcjNBTWhDQUpBSUFZb0FoZ2lDVUdBbE92Y0EwWU5BQ0FIRFFJZ0JpZ0NGQ0VLXFxcbklBWW9BaEFoQnlBSklRZ01CUXNnQmlnQ0VDRUxBa0FnQjBVTkFDQUpRWUNVNjl3RFJ3MEFJQVpCSUdvUXJ3bEJnSlRyM0FNaENBc2dDeVxcXG5FSERBUUxJQVpCR0RZQ0VDQUJJQVpCRUdvUXpnZ2hBU0FBUVlDVTY5d0ROZ0lJSUFBZ0FUWUNBQXdGQ3d3Q0N5QUdRUmcyQWhBZ0FTQUdcXFxuUVJCcUVNNElJUUVnQUVHQWxPdmNBellDQ0NBQUlBRTJBZ0FNQXdzZ0JrRWdhaEN2Q1NBS0lRZEJnSlRyM0FNaENBc2dDRUdBbE92Y0EwXFxcbllOQUNBQUlBZzJBZ2dnQUNBS05nSUVJQUFnQnpZQ0FBd0JDeUFISUFFUXFRWWhBU0FBUVlDVTY5d0ROZ0lJSUFBZ0FUWUNBQXNnQmtFd1xcXG5haVFBQy9nRUFRUi9JQUFnQVJET0RTRUNBa0FDUUFKQUlBQVFsZzBOQUNBQUtBSUFJUU1DUUFKQUlBQVExQXdOQUNBRElBRnFJUUVnQUNcXFxuQURFTThOSWdCQkFDZ0NpS3RQUncwQklBSW9BZ1JCQTNGQkEwY05Ba0VBSUFFMkFvQ3JUeUFBSUFFZ0FoRC9DUThMUWVDbnp3QWdBQ0FEXFxcbmF5QURJQUZxUVJCcUlnQVFqZzVGRFFKQkFFRUFLQUtRcTA4Z0FHczJBcENyVHc4TEFrQWdBMEdBQWtrTkFDQUFFUFlCREFFTEFrQWdBRVxcXG5FTWFpZ0NBQ0lFSUFCQkNHb29BZ0FpQlVZTkFDQUZJQVEyQWd3Z0JDQUZOZ0lJREFFTFFRQkJBQ2dDK0twUFFYNGdBMEVEZG5keE5nTDRcXFxucWs4TEFrQWdBaENrREVVTkFDQUFJQUVnQWhEL0NRd0NDd0pBQWtBZ0FrRUFLQUtNcTA5R0RRQWdBa0VBS0FLSXEwOUhEUUZCQUNBQU5nXFxcbktJcTA5QkFFRUFLQUtBcTA4Z0FXb2lBVFlDZ0t0UElBQWdBUkQ5Q2c4TFFRQWdBRFlDakt0UFFRQkJBQ2dDaEt0UElBRnFJZ0UyQW9TclxcXG5UeUFBSUFGQkFYSTJBZ1FnQUVFQUtBS0lxMDlIRFFGQkFFRUFOZ0tBcTA5QkFFRUFOZ0tJcTA4UEN5QUNFSlVOSWdNZ0FXb2hBUUpBQWtcXFxuQWdBMEdBQWtrTkFDQUNFUFlCREFFTEFrQWdBa0VNYWlnQ0FDSUVJQUpCQ0dvb0FnQWlBa1lOQUNBQ0lBUTJBZ3dnQkNBQ05nSUlEQUVMXFxcblFRQkJBQ2dDK0twUFFYNGdBMEVEZG5keE5nTDRxazhMSUFBZ0FSRDlDaUFBUVFBb0FvaXJUMGNOQVVFQUlBRTJBb0NyVHdzUEN3SkFJQVxcXG5GQmdBSkpEUUFnQUNBQkVQb0JEd3NnQVVGNGNVSHdxTThBYWlFQ0FrQUNRRUVBS0FMNHFrOGlBMEVCSUFGQkEzWjBJZ0Z4UlEwQUlBSW9cXFxuQWdnaEFRd0JDMEVBSUFNZ0FYSTJBdmlxVHlBQ0lRRUxJQUlnQURZQ0NDQUJJQUEyQWd3Z0FDQUNOZ0lNSUFBZ0FUWUNDQXVRQlFFRWZ5XFxcbk1BUWVBQWF5SUNKQUFnQWtFQk93RlVJQUpCQURZQ1RDQUNRb0dBZ0lDd0J6Y0NSQ0FDUVFBMkFqd2dBa0U3TmdJd0lBSWdBU2dDQ0NJRFxcXG5OZ0pRSUFJZ0F6WUNRQ0FDSUFNMkFqZ2dBaUFCS0FJQU5nSTBJQUpCSUdvZ0FrRXdhaEQvQ0NBQ1FSaHFJQUpCSUdvUTRnb2lBeWdDQUNcXFxuQURLQUlFRUxrQklBSkJNR29nQWlnQ0dDQUNLQUljRURzQ1FBSkFJQUlvQWpBaUJDQUNLQUk0SWdWQjFPdkFBRUVXRUtZS0RRQWdCQ0FGXFxcblFibnF3QUJCRHhDbUNnMEFJQVFnQlVIcTY4QUFRUmNRcGdvTkFDQUVJQVZCZ2V6QUFFRUtFS1lLRFFBZ0JDQUZRWXZzd0FCQkdCQ21DZ1xcXG4wQUFrQWdCQ0FGUWFQc3dBQkJGaENtQ2cwQUlBUWdCVUhJNnNBQVFROFFwZ29OQUNBRUlBVkJ1ZXpBQUVFV0VLWUtEUUFnQkNBRlFjL3NcXFxud0FCQkR4Q21DZzBBSUFRZ0JVSGU3TUFBUVJnUXBnb05BQ0FFSUFWQjl1ekFBRUVRRUtZS0RRQUNRQUpBSUFRZ0JVR0c3Y0FBUVF3UXBnXFxcbm9OQUVFQklRTWdCQ0FGUWRmcXdBQkJDQkNtQ2tVTkFRd0VDeUFBUVFFUWtnSkIvd0Z4SVFNTUF3dEJDaUVESUFRZ0JVR3g2c0FBUVFnUVxcXG5wZ29OQWtFTElRTWdCQ0FGUVpIcXdBQkJFQkNtQ2cwQ0lBUWdCVUdTN2NBQVFRa1FwZ29OQWtFTUlRTWdCQ0FGUWFIcXdBQkJFQkNtQ2dcXFxuMENBa0FDUUNBRUlBVkJtKzNBQUVFS0VLWUtSUTBBSUFKQkVHb2dBQkRaQlNBQ0lBSXBBeEEzQTFnZ0FrSFlBR29Ra2dzTkFRdEJEeUVEXFxcbklBUWdCVUdwN2NBQVFSZ1FwZ3BGRFFNZ0FrRUlhaUFBRU5rRklBSWdBaWtEQ0RjRFdDQUNRZGdBYWhDU0MwVU5Bd3NnQUJDY0FrSC9BWFxcXG5FaEF3d0NDeUFBUVFBUWtnSkIvd0Z4SVFNTUFRc2dBRUVFRUpJQ1FmOEJjU0VEQ3lBQ1FUQnFFSUlOSUFKQklHb1FndzBnQVJDQ0RTQUNcXFxuUWVBQWFpUUFJQU1MdUFRQkRuOGpBRUdnQVdzaUFpUUFJQUFRNFFVaUF5Z0NCQ0VFUVFBaEJTQUNRUUEyQWdnZ0FrRUFOZ0pNSUFOQkJHXFxcbm9oQmtFQUlRZEJBQ0VJQTBBZ0JVRUVjU0VKSUFWQkNIRWhDZ0pBQTBBZ0J5RUxBMEFnQmlFTUlBZ2hEU0FFSWc1RkRRSWdEa0VFYWlFR1xcXG5JQTRvQWdRaEJDQU9JUWdnRGlnQ0FDQUFSdzBBQ3dKQUlBcEZEUUJCQVNFTERBSUxJQTRvQWd3aER3SkFJQWxGRFFCQkFTRUhJQTRoQ0NcXFxuQVBRUXh4RFFFTEN5QU1JQVEyQWdBQ1FDQURLQUlJSUE1SERRQWdBeUFOTmdJSUN5QVBJQVZxSVFVZ0FrRUlhaUFPRUxJRElBc2hCeUFOXFxcbklRZ2dEQ0VHREFFTEN3SkFJQUlvQWt3aURrRUpTUTBBSUFJb0Fnd2hEZ3NDUUFKQUFrQWdEa1VOQUJDakRpQUJEUUVMUVFBaEJDQUxRZlxcXG44QmNVRUFSeUVPREFFTElBVWdDMEgvQVhGeUlRNUJBU0VFQ3lBQUlBNDJBZ0FDUUFKQUlBSW9Ba3dpQ0VFSVN3MEFJQUpCQ0dwQkJISWhcXFxuRGd3QkN5QUNLQUlNSVFnZ0FpZ0NFQ0VPQ3lBSVFRTjBJUWdEUUFKQUlBZ05BQ0FERU1RSklBSW9BZ3doQ0NBQ0tBSk1JUTRnQWlBQ0tBXFxcbklJTmdKUUlBSkJBQ0FJSUE1QkNFc2lCQnMyQWxRZ0FrSFFBR3BCQ0dvZ0FrRUlha0VJYWtFOEVLUU5HaUFDSUFnZ0RpQUVHellDbkFFZ1xcXG5Ba0VBTmdLWUFTQUNJQTVCQUNBRUd6WUNsQUVDUUFOQUlBSkIwQUJxRUtRR1FmOEJjVUVDUmcwQkVLTU9EQUFMQ3lBQ1FkQUFhaENBRFNcXFxuQUNRYUFCYWlRQUR3c2dEaWdDQUNBRU5nSUlJQTRvQWdBUXV3d2dEa0VCT2dBRUlBaEJlR29oQ0NBT1FRaHFJUTRNQUFzTHJBUUJEbjhqXFxcbkFFRWdheUlESkFBZ0F5QUJOZ0lVSUFNZ0FEWUNFRUVBSVFSQkFDRUZBa0FDUUFOQUFrQWdBMEVRYWhDRkF5SUdRWUNBeEFCSERRQWdCQVxcXG4wQ0RBTUxJQVZCQVdvaEJTQUdRZjhBU3cwQUlBSWdCaERnQkNBRVFRRnFJUVFNQUFzTElBSkJMUkRnQkFzZ0EwRVlhaUVIUWNnQUlRaEJcXFxuZ0FFaENTQUVJUXBCQUNFR0FrQURRQ0FESUFrMkFnd2dDaUFGU1NJTFJRMEJJQU1nQVRZQ0ZDQURJQUEyQWhBZ0F5QURRUXhxTmdJWUlBXFxcbk1nQTBFUWFpQUhFTGNIQWtBQ1FDQURLQUlBRFFCQkFDRU1EQUVMUVFFaERDQURLQUlRSUFNb0FoUWdBeWdDQkNBREtBSVlFUG9GSVFrTFxcXG5JQXdRd2dzZ0NTQURLQUlNYXlJTUlBWkJmM01nQ2tFQmFpSU5ia3NOQVNBRElBazJBZ3dnQXlBQk5nSVVJQU1nQURZQ0VDQU1JQTFzSUFcXFxuWnFJUTREUUNBREtBSU1JUWtEUUFKQUlBTkJFR29RaFFNaUJrR0FnTVFBUncwQUlBTW9BZ3hCQVdvaENTQU9RUUZxSVFZTUF3c0NRQ0FHXFxcbklBbFBEUUFnRGtFQmFpSU9SUTBFQ3lBR0lBbEhEUUFMUVFBZ0NHc2hEeUFJUVJwcUlSQkJKQ0VHSUE0aERBSkFBa0FEUUNBTUlBOGdCbVxcXG5wQkdpQUdJQkJKRzBFQklBWWdDRXNiSWdsSkRRRWdDVUVrUmcwQ0lBSWdEQ0FKYXlJTUlBeEJKQ0FKYXlJTmJpSU1JQTFzYXlBSmFoRElcXFxuQ0JEZ0JDQUdRU1JxSVFZTUFBc0xJQUlnREJESUNCRGdCQ0FPSUFwQkFXb2lCaUFLSUFSR0VKRUZJUWdnQmlFS1FRQWhEZ3dCQ3dzTFFkXFxcbkNnd1FCQk9VR2NvY0VBRUlNSEFBc2dBMEVnYWlRQUlBc0x6UVFDQlg4QmZpTUFRWUFCYXlJQ0pBQWdBa0hBQUdvZ0FVSEVvOEFBUVFVUVxcXG5kd0pBQWtBQ1FDQUNLQUpBSWdNTkFDQUNRUUEyQWpBTUFRc2dBaWdDUkNFRUlBSW9Ba2doQlNBQ1FRQTJBbWdnQWtJQk53TmdJQUpCMEFcXFxuQnFJQUpCNEFCcUVOY0tJQUlnQXlBRlFReHNJZ1ZxTmdKc0lBSWdBellDYUNBQ0lBUTJBbVFnQWlBRE5nSmdBa0FEUUNBRlJRMEJJQUlnXFxcbkEwRU1haUlFTmdKb0lBTW9BZ0FpQmtVTkFTQUNJQVkyQW5BZ0FpQURLUUlFTndKMElBVkJkR29oQlNBQ1FkQUFhaUFDUWZBQWFoQ2lDeVxcXG5BRUlRTU1BQXNMSUFKQjRBQnFFTjRISUFKQk1HcEJDR29pQXlBQ1FkQUFha0VJYWlnQ0FEWUNBQ0FDSUFJcEExQWlCemNETUNBSHAwVU5cXFxuQUNBQ1FTQnFRUWhxSUFNb0FnQTJBZ0FnQWlBQ0tRTXdOd01nSUFKQkdHb2dBUkM5QkNBQ0tBSVlJUVFnQWtFUWFpQUNLQUljSWdOQkFCXFxcbkRWQkNBQ0tBSVVJUVlnQWlnQ0VDSUZJQVFnQXhDa0RTRUVJQUlnQXpZQ2VDQUNJQVkyQW5RZ0FpQUVOZ0p3SUFKQkNHb2dBUkRPQkFKQVxcXG5JQUlvQWdnaUJFVU5BQ0FDS0FJTUlRTWdBa0h3QUdwQlB4RFlCQ0FDUWZBQWFpQUVJQU1RaUF3Z0FpZ0NlQ0VESUFJb0FuQWhCUXNnQWlcXFxuQUROZ0pVSUFJZ0JUWUNVQ0FDUWVBQWFpQUNRZEFBYWhEWEFpQUNRU0JxSUFKQjRBQnFFS0lMSUFCQkRHb2dBa0VvYWlnQ0FEWUNBQ0FBXFxcbklBSXBBeUEzQWdRZ0FFRUFOZ0lBSUFKQjhBQnFFT01NREFFTElBSkJNR29RekFzZ0FrSGdBR29nQVJDSUJTQUFRUUUyQWdBZ0FFRU1haVxcXG5BQ1FlZ0FhaWdDQURZQ0FDQUFJQUlwQTJBM0FnUUxJQUpCZ0FGcUpBQUxvd1FCQjM4Z0FTMEFIQ0lDUVFGSFFYOGdBaHNpQTBIL0FYRWhcXFxuQkVFQUlRVUNRQUpBSUFOQmYwWWlBdzBBSUFSRkRRQkJBQ0VHREFFTElBRXRBQjRoQmdKQUlBTU5BQ0FFRFFFTElBRVE3d0VoQlF0QkFDXFxcbkVEQWtBZ0FnMEFRUVloQXdKQUlBRXRBQWhCQmtZaUFrVU5BRUVBSVFNTUFRc0NRQUpBQWtBQ1FBSkFRUUFnQVVFSWFpQUNHeUlDTFFBQVxcXG5EZ1lBQVFVQ0F3UUFDeUFDUVFocUtBSUFRUVJxSVFNTUJBc2dBa0VJYWlnQ0FDQUNRUkJxS0FJQUlnSkJBV3BCQUNBQ0cycEJDR29oQXdcXFxud0RDeUFDUVFocUtBSUFRUVJxSVFNTUFnc2dBa0VJYWlnQ0FDQUNRUkJxS0FJQUlnSkJBV3BCQUNBQ0cycEJBbW9oQXd3QkMwRUNJUU1MXFxcbkFrQUNRQ0FCS0FJRUlnUWdCU0FHUWY4QmNXb2dBMm9pQjBrTkFDQUJLQUlBSWdVZ0Iyb2hDRUYvSVFNZ0J5RUNBa0FEUUFKQUlBUWdBa1xcXG5jTkFFRUFJUVVNQWdzZ0EwRUJhaUVESUFKQkFXb2hBaUFGUVg5cUlnVWdCR29pQmkwQUFFRXZSdzBBQ3lBRUlBUWdBMnNpQjBrTkFrRUJcXFxuSVFVZ0JrRUJhaUVJQzBFSklRTUNRQUpBQWtBQ1FDQUVJQWRySWdJT0F3SUFBUU1MSUFndEFBQkJMa2NOQWtFSFFRb2dBVUVJYWkwQUFFXFxcbkgvQVhGQkEwa2JJUU1NQWdzZ0NDMEFBRUV1UncwQlFRaEJDU0FJTFFBQlFTNUdHeUVEREFFTFFRb2hBd3NnQUNBRE9nQUVJQUJCREdvZ1xcXG5BallDQUNBQVFRaHFJQWcyQWdBZ0FDQUNJQVZxTmdJQUR3c2dCeUFFUVp6cnpRQVFnZ1VBQ3lBSElBUkJyT3ZOQUJDQ0JRQUxnd1VCQW5cXFxuOGpBRUhnQUdzaUF5UUFJQU5CQVRzQlZDQURJQUkyQWxBZ0EwRUFOZ0pNSUFOQ2dZQ0FnTEFITndKRUlBTWdBallDUUNBRFFRQTJBandnXFxcbkF5QUNOZ0k0SUFNZ0FUWUNOQ0FEUVRzMkFqQWdBMEVnYWlBRFFUQnFFUDhJSUFOQkdHb2dBMEVnYWhEaUNpSUNLQUlBSUFJb0FnUVF1UVxcXG5FZ0EwRXdhaUFES0FJWUlBTW9BaHdRT3dKQUFrQWdBeWdDTUNJQklBTW9BamdpQkVIVTY4QUFRUllRcGdvTkFDQUJJQVJCdWVyQUFFRVBcXFxuRUtZS0RRQWdBU0FFUWVycndBQkJGeENtQ2cwQUlBRWdCRUdCN01BQVFRb1FwZ29OQUNBQklBUkJpK3pBQUVFWUVLWUtEUUFDUUNBQklBXFxcblJCbyt6QUFFRVdFS1lLRFFBZ0FTQUVRY2pxd0FCQkR4Q21DZzBBSUFFZ0JFRzU3TUFBUVJZUXBnb05BQ0FCSUFSQnorekFBRUVQRUtZS1xcXG5EUUFnQVNBRVFkN3N3QUJCR0JDbUNnMEFJQUVnQkVIMjdNQUFRUkFRcGdvTkFBSkFBa0FnQVNBRVFZYnR3QUJCREJDbUNnMEFRUUVoQWlcXFxuQUJJQVJCMStyQUFFRUlFS1lLUlEwQkRBUUxJQUJCQVJDU0FrSC9BWEVoQWd3REMwRUtJUUlnQVNBRVFiSHF3QUJCQ0JDbUNnMENRUXNoXFxcbkFpQUJJQVJCa2VyQUFFRVFFS1lLRFFJZ0FTQUVRWkx0d0FCQkNSQ21DZzBDUVF3aEFpQUJJQVJCb2VyQUFFRVFFS1lLRFFJQ1FBSkFJQVxcXG5FZ0JFR2I3Y0FBUVFvUXBncEZEUUFnQTBFUWFpQUFFTmtGSUFNZ0F5a0RFRGNEV0NBRFFkZ0FhaENTQ3cwQkMwRVBJUUlnQVNBRVFhbnRcXFxud0FCQkdCQ21Da1VOQXlBRFFRaHFJQUFRMlFVZ0F5QURLUU1JTndOWUlBTkIyQUJxRUpJTFJRMERDeUFBRUp3Q1FmOEJjU0VDREFJTElBXFxcbkJCQUJDU0FrSC9BWEVoQWd3QkN5QUFRUVFRa2dKQi93RnhJUUlMSUFOQk1Hb1FnZzBnQTBFZ2FoQ0REU0FEUWVBQWFpUUFJQUlMNEFRQ1xcXG5CWDhCZmlNQVFkQUJheUlESkFBZ0EwSElBR29nQVNBQ0tBSUFJZ1FRbGdRQ1FBSkFBa0FnQXlnQ1VDSUNRWUdVNjl3RFJnMEFJQU1vQWtcXFxud2hCU0FES0FKSUlRWWdBMEVVYWlBRFFkUUFhaUlIUVRRUXBBMGFJQUpCZ0pUcjNBTkhEUUVnQUVJQU53SUFEQUlMSUFNb0FrZ2hBU0FBXFxcblFRRTJBZ0FnQUNBQk5nSUVEQUVMSUFNZ0FqWUNVQ0FESUFVMkFrd2dBeUFHTmdKSUlBY2dBMEVVYWtFMEVLUU5HZ0pBQWtBQ1FBSkFBa1xcXG5BZ0EwSElBR29ROWdzTkFDQURRUWhxSUFOQjJBQnFFSVFJSUFOQnVBRnFJQVFnQXlnQ0NDQURLQUlNRUdjZ0EwR29BV3BCQ0dvaUFpQURcXFxuUWJnQmFrRUlhaUlGS0FJQU5nSUFJQU1nQXlrRHVBRTNBNmdCSUFNdEFNUUJJZ1JCQWtZTkFpQURRWmdCYWtFUGFpQURRYmdCYWtFUGFpXFxcbjBBQURvQUFDQURRWmdCYWtFSWFpQUNLQUlBTmdJQUlBTWdBeThBeFFFN0FLVUJJQU1nQXlrRHFBRTNBNWdCSUFNZ0JEb0FwQUVnQTBHSVxcXG5BV29nQTBHWUFXb2dBU2dDbUFFZ0FVR2dBV29vQWdBUW5RVWdBMEdZQVdvUTRnd2dBMEc0QVdvZ0F5QURLQUtJQVNBREtBS1FBUkN3QWlcXFxuQURLQUs0QVEwRElBTXBBcndCSVFnZ0FFRU1haUFEUWJnQmFrRU1haWdDQURZQ0FDQUFJQWczQWdRZ0FFRUFOZ0lBSUFOQmlBRnFFT01NXFxcbkRBRUxJQUJDZ0lDQWdCQTNBZ0FnQUVFSWFrSUFOd0lBQ3lBRFFjZ0FhaENmQ3d3REN5QUZJQUlvQWdBMkFnQWdBeUFES1FPb0FUY0R1QVxcXG5FZ0EwRzRBV29Rc3cwaEFTQUFRUUUyQWdBZ0FDQUJOZ0lFREFFTElBTWdBeWtDdkFFM0E4Z0JJQUFnQTBISUFXb1FuUWdnQTBHSUFXb1FcXFxuNHd3TElBTkJ5QUJxRUo4TEN5QURRZEFCYWlRQUM2TUVBUWQvQWtBZ0FTZ0NCQ0lDUlEwQUlBRW9BZ0FoQTBFQUlRUUNRQU5BSUFSQkFXXFxcbm9oQlFKQUFrQWdBeUFFYWkwQUFDSUd3Q0lIUVFCSURRQWdCU0VFREFFTEFrQUNRQUpBQWtBQ1FBSkFBa0FnQmtIUXBNNEFhaTBBQUVGK1xcXG5hZzREQUFFQ0NRc2dBeUFGYWtIQXFNNEFJQVVnQWtrYkxRQUFRY0FCY1VHQUFVY05DQ0FFUVFKcUlRUU1CZ3NnQXlBRmFrSEFxTTRBSUFcXFxuVWdBa2tiTEFBQUlRZ2dCa0dnZm1vT0RnRURBd01EQXdNREF3TURBd01DQXdzZ0F5QUZha0hBcU00QUlBVWdBa2tiTEFBQUlRZ0NRQUpBXFxcbkFrQUNRQ0FHUVpCK2FnNEZBUUFBQUFJQUN5QUhRUTlxUWY4QmNVRUNTdzBKSUFoQlFFNE5DUXdDQ3lBSVFmQUFha0gvQVhGQk1FOE5DQVxcXG53QkN5QUlRWTkvU2cwSEN5QURJQVJCQW1vaUJXcEJ3S2pPQUNBRklBSkpHeTBBQUVIQUFYRkJnQUZIRFFZZ0F5QUVRUU5xSWdWcVFjQ29cXFxuemdBZ0JTQUNTUnN0QUFCQndBRnhRWUFCUncwR0lBUkJCR29oQkF3RUN5QUlRV0J4UWFCL1J3MEZEQUlMSUFoQm9IOU9EUVFNQVFzQ1FDXFxcbkFIUVI5cVFmOEJjVUVNU1EwQUlBZEJmbkZCYmtjTkJDQUlRVUJPRFFRTUFRc2dDRUcvZjBvTkF3c2dBeUFFUVFKcUlnVnFRY0NvemdBZ1xcXG5CU0FDU1JzdEFBQkJ3QUZ4UVlBQlJ3MENJQVJCQTJvaEJBc2dCQ0VGSUFRZ0Fra05BQXNMSUFBZ0JEWUNCQ0FBSUFNMkFnQWdBU0FDSUFcXFxuVnJOZ0lFSUFFZ0F5QUZhallDQUNBQUlBVWdCR3MyQWd3Z0FDQURJQVJxTmdJSUR3c2dBRUVBTmdJQUM1Y0VBd1ovQVg0QmZDTUFRWUFCXFxcbmF5SURKQUFDUUFKQUlBQVFwd2hGRFFCQkJ5RUVRUUFoQlVFQUlRWU1BUXRCQUNFRkFrQkJBVUVDSUFBb0FnQWlCaEFOSWdkQkFVWWJRUVxcXG5BZ0J4c2lCMEVDUmcwQVFRQWhCa0VBSVFRTUFRc2dBMEVZYWlBQUVNZ0dBa0FnQXlrREdLZEJBVWNOQUNBREt3TWdJUXBCQXlFRVFRQWhcXFxuQlVFQUlRWU1BUXNnQTBFUWFpQUdFQUlDUUFKQUlBTW9BaEFpQlVVTkFDQURRY2dBYWlBRklBTW9BaFFRK0FZZ0F5Z0NTRVVOQUNBRFFTXFxcbmhxUVFocUlBTkJ5QUJxUVFocUtBSUFJZ2cyQWdBZ0F5QURLUU5JSWdrM0F5Z2dDYWNoQUVFRklRUkJBU0VHUVFBaEJRd0JDeUFEUWRnQVxcXG5haUFBRU9JREFrQUNRQ0FES0FKWUlnZEZEUUFnQTBFNGFrRUlhaUFEUWRnQWFrRUlhaWdDQURZQ0FDQURJQU1wQTFnM0F6aEJCaUVFSUFcXFxuTkJPR29oQmd3QkN5QURRZlFBYWtJQk53SUFJQU5CQVRZQ2JDQURRZmlzd0FBMkFtZ2dBMEVLTmdJOElBTWdBRFlDT0NBRElBTkJPR28yXFxcbkFuQWdBMEVJYWlBRFFlZ0FhaEN1QmlBRFFTaHFJQU1vQWdnZ0F5Z0NEQ0FEUWVnQWFoQ0RCa0VSSVFRZ0EwRW9haUVHQ3lBSFFRQkhJUVxcXG5VZ0JpZ0NBQ0VBSUFZb0FnZ2hDQ0FIUlNFR0N5QUlyYjhoQ2dzZ0F5QUtPUU53SUFNZ0FEWUNiQ0FESUFjNkFHa2dBeUFFT2dCb0lBTkJcXFxuNkFCcUlBRWdBaER1QkNFQUFrQWdCVVVOQUNBRFFUaHFFUG9NQ3dKQUlBWkZEUUFnQTBFb2FoRDZEQXNnQTBHQUFXb2tBQ0FBQzdZRUFRXFxcbmgvSXdCQnNBUnJJZ01rQUNBRElBSTZBQndnQXlBQk5nSVlJQU5CQ0dvUTBBZ2dBMEhFQUdwQ0FEY0NBQ0FEUVR4cVFvQ0FnSURBQURjQ1xcXG5BQ0FEUVRScVFnQTNBZ0FnQTBHQWc4QUFOZ0l3SUFNZ0F5a0RFRGNES0NBRElBTXBBd2czQXlBZ0EwSFFBR3BCd0FCcUlRRWdBMEhvQVdcXFxucEJDR29oQkNBRFFlQURha0hBQUdvaEJTQURRWWdEYWtFSWFpRUdJQU5CaUFOcVFRUnlJUWNnQTBIQUFtcEJCSEloQ0FKQUFrQUNRQUpBXFxcbkEwQWdBMEhBQW1vZ0EwRVlhaEN2QVFKQUFrQWdBeWdDd0FJaUFrRithZzRDQVFNQUN5QURJQUkyQW9nRElBY2dDRUhFQUJDa0RSb2dBMFxcXG5IZ0Eyb2dBMEVZYWhEVkNRSkFJQU1vQXVBRERRQWdBeWdDNUFNaEFpQURRWndEYWhEakRBd0VDeUFEUWRBRGFrRUlhaUlKSUFOQjRBTnFcXFxuUVFocUtBSUFOZ0lBSUFNZ0F5a0Q0QU0zQTlBRElBTW9Bb3dESVFvZ0EwSGdBMm9nQmtIQUFCQ2tEUm9nQlVFSWFpQUpLQUlBTmdJQUlBXFxcblVnQXlrRDBBTTNBZ0FnQTBHY0FXb2dBMEhnQTJwQnpBQVFwQTBhQ3lBRFFkQUFhaUFEUVp3QmFrSE1BQkNrRFJvZ0FrRUNSZzBESUFNZ1xcXG5DallDN0FFZ0F5QUNOZ0xvQVNBRUlBTkIwQUJxUWNBQUVLUU5HaUFEUWJBQ2FrRUlhaUFCUVFocUtBSUFOZ0lBSUFNZ0FTa0NBRGNEc0FcXFxuSWdBMEhnQTJvZ0EwRWdhaUFEUWVnQmFpQURRYkFDYWhEbEJ5QURRZUFEYWhETUN3d0FDd3NnQXlnQ3hBSWhBZ3NnQUVFQU5nSVFJQUFnXFxcbkFqWUNBQ0FEUVNCcUVOZ0tEQUVMSUFBZ0EwRWdha0V3RUtRTkdnc2dBMEd3Qkdva0FBdWpCQUVHZnlNQVFZQUJheUlFSkFBZ0JFRWdhaVxcXG5BQUlBRVE2QUVDUUFKQUlBUW9BaUFpQlVVTkFDQUVRUmhxSUFVZ0JDZ0NKQkNDQnlBRUtBSVlJZ1ZGRFFBZ0JTQUVLQUljSWdaQnpPbkFcXFxuQUVFQ0VNc0pEUUVnQkVFNGFpQUFJQUVRbEEwZ0JFRVFhaUFFUVRocUVJb0tJQVFvQWhBZ0JDZ0NGRUhPNmNBQVFRTVF5d2toQVFKQUlBXFxcblFvQWpoRkRRQWdCRUU0YWhDQ0RRc2dBVVVOQUFKQUlBWkJCRWtOQUNBRVFUaHFJQVVnQmtIUjZjQUFRUU1RT2dKQUlBUW9BamdOQUNBRVxcXG5RY1FBYWkwQUFDRUhJQVJCN0FCcUtBSUFJUUFnQkNnQ1BDRUJJQVFvQW1naENDQUVRY1lBYWkwQUFFSC9BWEVoQ1FOQUlBa05BeUFBSVFcXFxuVUNRQ0FCUlEwQUFrQUNRQUpBSUFBZ0FVc05BQ0FBSUFGSERRRU1BZ3NnQ0NBQmFpd0FBRUcvZjBvTkFRc2dDQ0FBSUFFZ0FFRzg2Y0FBXFxcbkVPUUxBQXNnQUNBQmF5RUZDeUFFSUFnZ0FXb2lCallDZUNBRUlBWWdCV28yQW53Z0JFRUlhaUFFUWZnQWFoQ01BaUFIUWY4QmNRMEVJQVxcXG5Rb0FneEJnSURFQUNBRUtBSUlHeUlGUVlDQXhBQkdEUU5CQVNFSFFRRWhCZ0pBSUFWQmdBRkpEUUJCQWlFR0lBVkJnQkJKRFFCQkEwRUVcXFxuSUFWQmdJQUVTUnNoQmdzZ0JpQUJhaUVCREFBTEN5QUVRU2hxSUFSQndBQnFJQVFvQW1nZ0JFSHNBR29vQWdBZ0JDZ0NjQ0FFUWZRQWFpXFxcbmdDQUNBRVFkd0FhaWdDQUVGL1JoQ1VBU0FFS0FJb0RRSU1BUXRCMGVuQUFFRURJQVVnQmhDbUNnMEJDeUFDSVFNTElBUkJnQUZxSkFBZ1xcXG5Bd3YvQXdFR2Z5TUFRVEJySWdJa0FBSkFBa0FDUUFKQUFrQUNRQ0FCS0FJRUlnTkZEUUFnQVNnQ0FDRUVJQU5CZjJwQi8vLy8vd0Z4SWdcXFxuTkJBV29pQlVFSGNTRUdBa0FDUUNBRFFRZFBEUUJCQUNFRklBUWhBd3dCQ3lBRVFUeHFJUU1nQlVINC8vLy9BM0VoQjBFQUlRVURRQ0FEXFxcbktBSUFJQU5CZUdvb0FnQWdBMEZ3YWlnQ0FDQURRV2hxS0FJQUlBTkJZR29vQWdBZ0EwRllhaWdDQUNBRFFWQnFLQUlBSUFOQlNHb29BZ1xcXG5BZ0JXcHFhbXBxYW1wcUlRVWdBMEhBQUdvaEF5QUhRWGhxSWdjTkFBc2dBMEZFYWlFREN3SkFJQVpGRFFBZ0EwRUVhaUVEQTBBZ0F5Z0NcXFxuQUNBRmFpRUZJQU5CQ0dvaEF5QUdRWDlxSWdZTkFBc0xBa0FnQVVFTWFpZ0NBRVVOQUNBRlFRQklEUUVnQlVFUVNTQUVLQUlFUlhFTkFTXFxcbkFGUVFGMElRVUxJQVVOQVF0QkFTRURRUUFoQlF3QkN5QUZRWDlNRFFGQkFDMEE4YVpQR2lBRlFRRVE5d3NpQTBVTkFnc2dBa0VBTmdJSVxcXG5JQUlnQlRZQ0JDQUNJQU0yQWdBZ0FpQUNOZ0lNSUFKQkVHcEJFR29nQVVFUWFpa0NBRGNEQUNBQ1FSQnFRUWhxSUFGQkNHb3BBZ0EzQXdcXFxuQWdBaUFCS1FJQU53TVFJQUpCREdwQnZQck5BQ0FDUVJCcUVHMUZEUUpCclB2TkFFRXpJQUpCS0dwQjRQdk5BRUdJL00wQUVNSUVBQXNRXFxcbmx3Z0FDMEVCSUFVUW1nMEFDeUFBSUFJcEF3QTNBZ0FnQUVFSWFpQUNRUWhxS0FJQU5nSUFJQUpCTUdva0FBdW5CQUVEZnlNQVFTQnJJZ1xcXG5Ja0FDQUNRUWhxSUFFb0FnQWlBeEMyQkFKQUFrQUNRQUpBSUFJdEFBZ05BQUpBSUFJdEFBa05BQ0FDUVFNMkFoQWdBeUFDUVJCcUVNNElcXFxuSVFFZ0FFRUJPZ0FBSUFBZ0FUWUNCQXdFQ3dKQUFrQUNRQ0FDTFFBS0lnUkJMRVlOQUFKQUlBUkIvUUJHRFFBZ0FTMEFCQTBDSUFKQkNEXFxcbllDRUNBRElBSkJFR29RemdnaEFTQUFRUUU2QUFBZ0FDQUJOZ0lFREFjTElBQkJnQWc3QVFBTUJnc2dBUzBBQkEwQUlBTWdBeWdDQ0VFQlxcXG5hallDQ0NBQ1FSQnFJQU1RdGdRQ1FDQUNMUUFRUlEwQUlBQWdBaWdDRkRZQ0JDQUFRUUU2QUFBTUJnc0NRQ0FDTFFBUlJRMEFJQUl0QUJcXFxuSWhCQXdDQ3lBQ1FRVTJBaEFnQXlBQ1FSQnFFTTRJSVFFZ0FFRUJPZ0FBSUFBZ0FUWUNCQXdGQ3lBQlFRQTZBQVFMQWtBQ1FDQUVRZjhCXFxcbmNTSUJRU0pHRFFBZ0FVSDlBRVlOQVNBQ1FSRTJBaEFnQXlBQ1FSQnFFTTRJSVFFZ0FFRUJPZ0FBSUFBZ0FUWUNCQXdGQ3lBRFFSUnFRUVxcXG5BMkFnQWdBeUFES0FJSVFRRnFOZ0lJSUFKQkVHb2dBeUFEUVF4cUVJMEJBa0FDUUNBQ0tBSVFRUUpIRFFBZ0FpZ0NGQ0VCREFFTElBSkJcXFxuQ0dvZ0FpZ0NGQ0FDS0FJWUVPZ0dJQUl0QUFoRkRRTWdBaWdDRENFQkN5QUFJQUUyQWdSQkFTRUJEQU1MSUFKQkZUWUNFQ0FESUFKQkVHXFxcbm9RemdnaEFTQUFRUUU2QUFBZ0FDQUJOZ0lFREFNTElBQWdBaWdDRERZQ0JDQUFRUUU2QUFBTUFnc2dBQ0FDTFFBSk9nQUJRUUFoQVFzZ1xcXG5BQ0FCT2dBQUN5QUNRU0JxSkFBTGh3UUJDWDhqQUVIZ0FHc2lBaVFBSUFBdEFBZ2hBeUFCTFFBZElRUWdBQzBBSFNFRklBRXRBQndoQmlcXFxuQUFMUUFjSVFjQ1FBSkFJQUFvQWdRaUNDQUJLQUlFSWdsSERRQWdCMEgvQVhFZ0JrSC9BWEZIRFFBZ0JVSC9BWEZCQWtjTkFDQUVRZjhCXFxcbmNVRUNSdzBBSUFOQi93RnhRUUpMSUFFdEFBaEJBMGx6UlEwQVFRRWhDaUFBS0FJQUlBZ2dBU2dDQUNBSUVLWUtEUUVMSUFBb0FnQWhDZ1xcXG5KQUlBTkIvd0Z4UVFaR0RRQWdBa0UzYWlBQVFSaHFLQUFBTmdBQUlBSkJNR29nQUVFUmFpa0FBRGNEQUNBQ0lBQkJDV29wQUFBM0F5Z0xcXFxuSUFKQkNHcEJFV29nQWtFb2FrRUlhaWtEQURjQUFDQUNRUWhxUVJocUlBSkJLR3BCRDJvb0FBQTJBQUFnQWlBQ0tRTW9Od0FSSUFJZ0JUXFxcbm9BSlNBQ0lBYzZBQ1FnQWlBRE9nQVFJQUlnQ0RZQ0RDQUNJQW8yQWdnZ0FpQUFMUUFlT2dBbUlBRW9BZ0FoQUFKQUlBRXRBQWdpQTBFR1xcXG5SZzBBSUFKQnlBQnFRUTlxSUFGQkdHb29BQUEyQUFBZ0FrSElBR3BCQ0dvZ0FVRVJhaWtBQURjREFDQUNJQUZCQ1dvcEFBQTNBMGdMSUFcXFxuSkJLR3BCRVdvZ0FrSElBR3BCQ0dvcEF3QTNBQUFnQWtFb2FrRVlhaUFDUWNnQWFrRVBhaWdBQURZQUFDQUNJQUlwQTBnM0FERWdBaUFFXFxcbk9nQkZJQUlnQmpvQVJDQUNJQU02QURBZ0FpQUpOZ0lzSUFJZ0FEWUNLQ0FDSUFFdEFCNDZBRVlnQWtFSWFpQUNRU2hxRUtrRUlRb0xJQVxcXG5KQjRBQnFKQUFnQ2d1UUJBSUhmd0YrSXdCQndBQnJJZ01rQUNBRElBSTJBaVFnQXlBQk5nSWdJQUlnQVdzaEJFRUFJUVZCQUNFR1FRQWhcXFxuQndOQVFRRWhDQUpBQWtBZ0EwRWdhaEN0Q0NJSlFYZHFRUUpKRFFBZ0NVRU5SZzBBQWtBQ1FBSkFBa0FnQ1VFalJnMEFJQWxCTDBZTkFDXFxcbkFKUVQ5R0RRQWdDVUdBZ01RQVJnMEFJQWxCM0FCSERRRUxJQU1nQWpZQ05DQURJQUUyQWpBZ0IwRUJjUTBCSUFNZ0JqWUNQQ0FESUFOQlxcXG5NR28yQWpnRFFDQURRVGhxRUlrS1FZQ0F4QUJIRFFBTElBTkJHR29nQVNBRUlBVkI5SXZCQUJDeEJpQURLQUljSVFrZ0F5Z0NHQ0VJREFcXFxuSUxRUUVoQ0NBR1FRRnFJUVlnQ1VHQUFVa05BMEVDSVFnZ0NVR0FFRWtOQTBFRFFRUWdDVUdBZ0FSSkd5RUlEQU1MSUFOQklHb2dBMEV3XFxcbmFpQUdFT3NHSUFNb0FpZ2hDU0FES0FJZ0lRZ0xBa0FDUUNBSUlBa1ExQW9OQUNBRFFSQnFJQWxCQUJEVkJDQURLQUlVSVFVZ0F5Z0NFQ1xcXG5BSUlBa1FwQTBoQ0NBQVFRRTZBQXdnQUNBSk5nSUlJQUFnQlRZQ0JDQUFJQWcyQWdBZ0FDQURMd0E0T3dBTklBQkJEMm9nQTBFNmFpMEFcXFxuQURvQUFDQUFJQU1wQXpBM0FoQWdCMEVCY1VVTkFTQURRU0JxRUlvTkRBRUxJQU5CQ0dwQkFFRUFFTlVFSUFNcEF3Z2hDaUFBSUFJMkFoXFxcblFnQUNBQk5nSVFJQUJCQURvQURDQUFRUUEyQWdnZ0FDQUtOd0lBSUFkQkFYRkZEUUFnQTBFZ2FoQ0tEUXNnQTBIQUFHb2tBQThMUVFFaFxcXG5Cd3NnQ0NBRmFpRUZEQUFMQzdvRUFRWi9Jd0JCZ0FGcklnSWtBQ0FDUVNCcUlBQWdBQ2dDQUNnQ0JCRUZBQ0FDSUFJb0FpUWlBRFlDTENcXFxuQUNJQUlvQWlBaUF6WUNLQUpBQWtBQ1FDQUJFS3NNRFFBZ0FrSHNBR3BDQVRjQ0FFRUJJUUFnQWtFQk5nSmtJQUpCL04zTkFEWUNZQ0FDXFxcblFmRUJOZ0kwSUFJZ0FrRXdhallDYUNBQ0lBSkJLR28yQWpBZ0FTQUNRZUFBYWhDdEJRMENJQUpCR0dvZ0FpZ0NLQ0FDS0FJc0tBSVlFUVxcXG5VQUlBSW9BaGdpQTBVTkFTQUNLQUljSVFRZ0FrSHNBR3BDQURjQ0FFRUJJUUFnQWtFQk5nSmtJQUpCcU4vTkFEWUNZQ0FDUWRUZHpRQTJcXFxuQW1nZ0FTQUNRZUFBYWhDdEJRMENJQUpCRUdvZ0F5QUVLQUlZRVFVQUlBSW9BaEFoQlNBQ1FRQTJBa0FnQWlBRU5nSTRJQUlnQXpZQ05DXFxcbkFDUVFBMkFqQWdCVUVBUnlFR0EwQWdBa0VJYWlBQ1FUQnFFTEFFQWtBZ0FpZ0NDQ0lBRFFBZ0FrRXdhaERoQ3d3REN5QUNLQUlNSVFRZ1xcXG5BaUFDS0FKQUlnZEJBV28yQWtBZ0FpQUVOZ0pNSUFJZ0FEWUNTQ0FDUVFFMkFtUWdBa0cwMzgwQU5nSmdJQUpDQURjQ2JDQUNRZFRkelFcXFxuQTJBbWdDUUNBQklBSkI0QUJxRUswRkRRQWdBa0VBT2dCY0lBSWdCallDVUNBQ0lBRTJBbGdnQWlBSElBTWdCUnNpQXpZQ1ZDQUNRUUUyXFxcbkFtUWdBa0g4M2MwQU5nSmdJQUpDQVRjQ2JDQUNRZkVCTmdKOElBSWdBa0g0QUdvMkFtZ2dBaUFDUWNnQWFqWUNlQ0FDUWRBQWFpQUNRZVxcXG5BQWFoREpCVVVOQVFzTElBSkJNR29RNFF0QkFTRUFEQUlMSUFNZ0FTQUFLQUlNRVFZQUlRQU1BUXRCQUNFQUN5QUNRWUFCYWlRQUlBQUxcXFxubkFRQkIzOGpBRUV3YXlJREpBQUNRQUpBQWtBRFFDQUJLQUlJSWdRZ0FTZ0NCQ0lGSUFRZ0JVc2JJUVlnQVNnQ0FDRUhJQVFoQ0FKQUFrXFxcbkFEUUNBR0lBaEdEUUVnQnlBSWFpMEFBQ0lKUWN6VndBQnFMUUFBRFFJZ0FTQUlRUUZxSWdnMkFnZ01BQXNMSUFVZ0JFa05CQ0FEUVFRMlxcXG5BaUFnQUNBQklBTkJJR29ReWdjTUF3c0NRQ0FKUWR3QVJnMEFJQWxCSWtZTkFpQUJJQWhCQVdvMkFnZ2dBMEVRTmdJZ0lBQWdBU0FEUVNcXFxuQnFFTW9IREFNTElBTkJHR29nQkNBSUlBY2dCVUg4MU1BQUVKUUhJQUlnQXlnQ0dDQURLQUljRUlFTUlBRWdDRUVCYWpZQ0NDQUJRUUVnXFxcbkFoQm1JZ2hGRFFBTElBQkJBallDQUNBQUlBZzJBZ1FNQVFzQ1FDQUNLQUlJUlEwQUlBTkJFR29nQkNBSUlBY2dCVUdjMWNBQUVKUUhJQVxcXG5JZ0F5Z0NFQ0FES0FJVUVJRU1RUUVoQmlBQklBaEJBV28yQWdnZ0EwRWdhaUFCSUFJb0FnQWdBaWdDQ0JEcUJnSkFBa0FnQXlnQ0lDSUlcXFxuUlEwQUlBQWdBeWdDSkRZQ0NDQUFJQWcyQWdRTUFRc2dBQ0FES0FJa05nSUVRUUloQmdzZ0FDQUdOZ0lBREFFTElBTkJDR29nQkNBSUlBXFxcbmNnQlVHTTFjQUFFSlFISUFNb0Fnd2hCaUFES0FJSUlRY2dBU0FJUVFGcU5nSUlJQU5CSUdvZ0FTQUhJQVlRNmdZQ1FBSkFJQU1vQWlBaVxcXG5DRVVOQUNBQUlBTW9BaVEyQWdnZ0FDQUlOZ0lFUVFBaENBd0JDeUFBSUFNb0FpUTJBZ1JCQWlFSUN5QUFJQWcyQWdBTElBTkJNR29rQUFcXFxuOExJQVlnQlVIczFNQUFFSUVGQUF1NEJBRURmeU1BUVRCcklnSWtBQ0FDUVJocUlBQWdBUkR5QVFKQUFrQUNRQUpBSUFJb0FoZ2lBdzBBXFxcbklBSkJDR29nQUNBQkVLQUVJQUlvQWdnaUFRMEJRUThoQVF3REN5QUNRUkJxSUFNZ0FpZ0NIQkNDQndKQUFrQUNRQ0FDS0FJUUlnTU5BQ1xcXG5BQ1FRQTJBaUFNQVFzZ0FrRWdhaUFESUFJb0FoUVFPeUFDS0FJZ0lnTU5BUXRCRHlFQkRBSUxBa0FDUUFKQUlBTWdBaWdDS0NJRVFjSHRcXFxud0FCQkFoQ21DZzBBSUFNZ0JFSEQ3Y0FBUVFNUXBnb05BU0FESUFSQnh1M0FBRUVERUtZS0RRSkJDaUVCSUFNZ0JFSEo3Y0FBUVFNUXBnXFxcbm9OQkVFQUlRRWdBeUFFUWN6dHdBQkJBaENtQ2cwRVFRRWhBU0FESUFSQnp1M0FBRUVERUtZS0RRUkJBaUVCSUFNZ0JFSFI3Y0FBUVFNUVxcXG5wZ29OQkVFRElRRWdBeUFFUWRUdHdBQkJBeENtQ2cwRVFRc2hBU0FESUFSQjErM0FBRUVFRUtZS0RRUkJEQ0VCSUFNZ0JFSGI3Y0FBUVFcXFxuUVFwZ29OQkVFTklRRWdBeUFFUWQvdHdBQkJDeENtQ2cwRVFRNUJEeUFESUFSQjZ1M0FBRUVERUtZS0d5RUJEQVFMSUFBZ0FVRUVRUWNRXFxcbmh3RkIvd0Z4SVFFTUF3c2dBQ0FCUVFWQkNCQ0hBVUgvQVhFaEFRd0NDeUFBSUFGQkJrRUpFSWNCUWY4QmNTRUJEQUVMSUFJZ0FTQUNLQVxcXG5JTUVJSUhBa0FDUUFKQUFrQWdBaWdDQUNJQkRRQWdBa0VBTmdJZ0RBRUxJQUpCSUdvZ0FTQUNLQUlFRURzZ0FpZ0NJQ0lCRFFFTFFROGhcXFxuQVF3QkMwRU5RUThnQVNBQ0tBSW9RZGZwd0FCQkRCQ21DaHNoQVFzZ0FrRWdhaERjQ3d3QkN5QUNRU0JxRU53TEN5QUNRVEJxSkFBZ0FRXFxcbnVYQkFFRGZ5TUFRU0JySWdJa0FDQUNRUWhxSUFFb0FnQWlBeEM2QkFKQUFrQUNRQUpBSUFJdEFBZ05BQUpBSUFJdEFBa05BQ0FDUVFNMlxcXG5BaEFnQXlBQ1FSQnFFTjBJSVFFZ0FFRUJPZ0FBSUFBZ0FUWUNCQXdFQ3dKQUFrQUNRQ0FDTFFBS0lnUkJMRVlOQUFKQUlBUkIvUUJHRFFcXFxuQWdBUzBBQkEwQ0lBSkJDRFlDRUNBRElBSkJFR29RM1FnaEFTQUFRUUU2QUFBZ0FDQUJOZ0lFREFjTElBQkJnQVk3QVFBTUJnc2dBUzBBXFxcbkJBMEFJQU1RZ3d3Z0FrRVFhaUFERUxvRUFrQWdBaTBBRUVVTkFDQUFJQUlvQWhRMkFnUWdBRUVCT2dBQURBWUxBa0FnQWkwQUVVVU5BQ1xcXG5BQ0xRQVNJUVFNQWdzZ0FrRUZOZ0lRSUFNZ0FrRVFhaERkQ0NFQklBQkJBVG9BQUNBQUlBRTJBZ1FNQlFzZ0FVRUFPZ0FFQ3dKQUFrQWdcXFxuQkVIL0FYRWlBVUVpUmcwQUlBRkIvUUJHRFFFZ0FrRVJOZ0lRSUFNZ0FrRVFhaERkQ0NFQklBQkJBVG9BQUNBQUlBRTJBZ1FNQlFzZ0F4XFxcbkNERENBRFFSUnFRUUEyQWdBZ0FrRVFhaUFESUFOQkRHb1F4Z0VDUUFKQUlBSW9BaEJCQWtjTkFDQUNLQUlVSVFFTUFRc2dBa0VJYWlBQ1xcXG5LQUlVSUFJb0FoZ1FvQWNnQWkwQUNFVU5BeUFDS0FJTUlRRUxJQUFnQVRZQ0JFRUJJUUVNQXdzZ0FrRVZOZ0lRSUFNZ0FrRVFhaERkQ0NcXFxuRUJJQUJCQVRvQUFDQUFJQUUyQWdRTUF3c2dBQ0FDS0FJTU5nSUVJQUJCQVRvQUFBd0NDeUFBSUFJdEFBazZBQUZCQUNFQkN5QUFJQUU2XFxcbkFBQUxJQUpCSUdva0FBdVhCQUVEZnlNQVFTQnJJZ0lrQUNBQ1FRaHFJQUVvQWdBaUF4QzZCQUpBQWtBQ1FBSkFJQUl0QUFnTkFBSkFJQVxcXG5JdEFBa05BQ0FDUVFNMkFoQWdBeUFDUVJCcUVOMElJUUVnQUVFQk9nQUFJQUFnQVRZQ0JBd0VDd0pBQWtBQ1FDQUNMUUFLSWdSQkxFWU5cXFxuQUFKQUlBUkIvUUJHRFFBZ0FTMEFCQTBDSUFKQkNEWUNFQ0FESUFKQkVHb1EzUWdoQVNBQVFRRTZBQUFnQUNBQk5nSUVEQWNMSUFCQmdBXFxcblE3QVFBTUJnc2dBUzBBQkEwQUlBTVFnd3dnQWtFUWFpQURFTG9FQWtBZ0FpMEFFRVVOQUNBQUlBSW9BaFEyQWdRZ0FFRUJPZ0FBREFZTFxcXG5Ba0FnQWkwQUVVVU5BQ0FDTFFBU0lRUU1BZ3NnQWtFRk5nSVFJQU1nQWtFUWFoRGRDQ0VCSUFCQkFUb0FBQ0FBSUFFMkFnUU1CUXNnQVVcXFxuRUFPZ0FFQ3dKQUFrQWdCRUgvQVhFaUFVRWlSZzBBSUFGQi9RQkdEUUVnQWtFUk5nSVFJQU1nQWtFUWFoRGRDQ0VCSUFCQkFUb0FBQ0FBXFxcbklBRTJBZ1FNQlFzZ0F4Q0REQ0FEUVJScVFRQTJBZ0FnQWtFUWFpQURJQU5CREdvUXhnRUNRQUpBSUFJb0FoQkJBa2NOQUNBQ0tBSVVJUVxcXG5FTUFRc2dBa0VJYWlBQ0tBSVVJQUlvQWhnUWtRb2dBaTBBQ0VVTkF5QUNLQUlNSVFFTElBQWdBVFlDQkVFQklRRU1Bd3NnQWtFVk5nSVFcXFxuSUFNZ0FrRVFhaERkQ0NFQklBQkJBVG9BQUNBQUlBRTJBZ1FNQXdzZ0FDQUNLQUlNTmdJRUlBQkJBVG9BQUF3Q0N5QUFJQUl0QUFrNkFBXFxcbkZCQUNFQkN5QUFJQUU2QUFBTElBSkJJR29rQUF2MUF3SUZmd0orSXdCQjBBQnJJZ1VrQUNBRklBTTJBZ2dnQVNnQ0RDRURJQVVnQlVFSVxcXG5hallDREFKQUFrQWdBeUFDYWlJQ0lBTlBEUUFnQlNBRUVMc0dJQVVvQWdRaEJpQUZLQUlBSVFNTUFRc0NRQUpBSUFJZ0FTZ0NCQ0lESUFcXFxuTkJBV29pQjBFRGRrRUhiQ0FEUVFoSkd5SURRUUYyVFEwQUlBVkJLR29nQVVFWUlBSWdBMEVCYWlJRElBSWdBMHNiSUFRUXhRUWdCU2dDXFxcbktDSUlSUTBCSUFWQkVHcEJGR29nQlVFb2FrRVVhaWdDQURZQ0FDQUZJQVVwQWpRM0Fod2dCU0FGS0FJd0lnWTJBaGdnQlNBRktBSXNOZ1xcXG5JVUlBVWdDRFlDRUVGb0lRSkJBQ0VEQTBBQ1FDQUhJQU5IRFFBZ0FTa0NBQ0VLSUFFZ0JTa0RFRGNDQUNBRlFSQnFRUWhxSWdNcEF3QWhcXFxuQ3lBRElBRkJDR29pQWlrQ0FEY0RBQ0FDSUFzM0FnQWdCU0FLTndNUUlBVkJFR29RNWdaQmdZQ0FnSGdoQXd3RUN3SkFJQUVvQWdBaUNTXFxcbkFEYWl3QUFFRUFTQTBBSUFWQkVHb2dCVUVNYWlBQklBTVFqZ29ReUFkQmFHd2dDR3BCYUdvaUJDQUpJQUpxSWdrcEFBQTNBQUFnQkVFUVxcXG5haUFKUVJCcUtRQUFOd0FBSUFSQkNHb2dDVUVJYWlrQUFEY0FBQXNnQTBFQmFpRURJQUpCYUdvaEFnd0FDd3NnQVNBRlFReHFRY1Nld0FcXFxuQkJHQkIwUVlHQWdJQjRJUU1NQVFzZ0JVRXdhaWdDQUNFR0lBVW9BaXdoQXdzZ0FDQUdOZ0lFSUFBZ0F6WUNBQ0FGUWRBQWFpUUFDNElFXFxcbkFnVi9BWDRqQUVHZ0FXc2lCU1FBSUFKQmdLTEFBRUVJRVBVTElRWWdCVUVJYWlBQ0VJUUlJQVZCT0dvZ0FTQUZLQUlJSUFVb0Fnd1FaeVxcXG5BRlFZQUJha0VJYWlJSElBVkJPR3BCQ0dvaUNDZ0NBRFlDQUNBRklBVXBBemczQTRBQkFrQUNRQUpBQWtBQ1FDQUZMUUJFSWdsQkFrWU5cXFxuQUNBRlFSQnFRUTlxSUFWQk9HcEJEMm90QUFBNkFBQWdCVUVRYWtFSWFpQUhLQUlBTmdJQUlBVWdCUzhBUlRzQUhTQUZJQVVwQTRBQk53XFxcbk1RSUFVZ0NUb0FIQ0FHUlEwQkRBTUxJQWdnQnlnQ0FEWUNBQ0FGSUFVcEE0QUJOd000SUFWQk9Hb1FzdzBoQVF3QkN5QUZRVGhxSUFWQlxcXG5FR29nQUNnQ21BRWdBRUdnQVdvb0FnQVFuUVVnQlVHQUFXb2dCU0FGS0FJNElBVW9Ba0FnQXlBRUVJc0RBa0FDUUNBRkxRQ0FBVUVFUmdcXFxuMEFJQVVwQTRBQklncEMvd0dEUWdSU0RRRUxJQVZCT0dvUTR3d01BZ3NnQlNBS053TWdJQVZCSUdvUXNBa2hBU0FGUVRocUVPTU1JQVZCXFxcbkVHb1E0Z3dMSUFJUWhRc01BUXNnQlVFb2FrRUlhaUFGUVJCcVFRaHFLUU1BTndNQUlBVWdCU2tERURjREtDQUZRVGhxSUFFUWxBVWdCVVxcXG5HQUFXcEJHR29nQWtFWWFpa0RBRGNEQUNBRlFZQUJha0VRYWlBQ1FSQnFLUU1BTndNQUlBVkJnQUZxUVFocUlBSkJDR29wQXdBM0F3QWdcXFxuQlNBQ0tRTUFOd09BQVNBQUlBVkJLR29nQlVFNGFpQUZRWUFCYWhBL1FRQWhBUXNnQlVHZ0FXb2tBQ0FCQzV3RUFnSi9BWDRqQUVIUUFXXFxcbnNpQkNRQUlBUkIwQUJxSUFJZ0F4Q2FDUUpBQWtBQ1FBSkFBa0FnQkNnQ1VDSURRUUpHRFFBZ0JDMEFWQ0VDSUFSQkNHcEJCWElnQkVIUVxcXG5BR3BCQlhKQnd3QVFwQTBhSUFRZ0Fqb0FEQ0FFSUFNMkFnZ2dCRUhRQUdvZ0FTQUVRUWhxRUswR0lBUW9BbEFpQTBVTkFTQUVJQVFwQTFcXFxuZzNBNkFCSUFRZ0JDZ0NWRFlDbkFFZ0JDQUROZ0tZQVNBRVFkQUFhaUFCSUFSQm1BRnFFUFlFSUFSQm1BRnFRUVJ5SVFNQ1FBSkFJQVFvXFxcbkFsQU5BQ0FFS0FKVUlnRU5BVUVBSVFFTUJRc2dCQ2dDVkNFQklBTVF6QXNnQkVFY2FoRGpEQXdEQ3lBRUlBUkIyQUJxS1FNQU53S3NBU1xcXG5BRUlBRTJBcWdCSUFSQnVBRnFJQVJCcUFGcUVJa0ZJQVFwQXJ3QklRWWdCQ2dDdUFFaEFTQUVMUURJQVNJQ1FRSkdEUU1nQkNnQ3hBRWhcXFxuQlNBRVFkQUFha0VUYWlBRVFiZ0Jha0VUYWkwQUFEb0FBQ0FFSUFRdkFNa0JPd0JoSUFRZ0Fqb0FZQ0FFSUFVMkFsd2dCQ0FHTndKVUlBXFxcblFnQVRZQ1VDQUVRZEFBYWhDMURTRUJJQU1RekFzZ0JFRWNhaERqREF3Q0N5QUVMUUJVRUxJTklRRU1BUXNnQkNnQ1ZDRUJJQVJCSEdvUVxcXG40d3dMSUFRZ0FUWUNERUVCSVFFTUFRc2dBeERNQ3lBRVFSeHFFT01NQWtBQ1FDQUJEUUJCZ0FFaEFRd0JDeUFFSUFZM0FsUWdCQ0FCTmdcXFxuSlFJQVJCMEFCcUVJZ0xJUUVMSUFRZ0FUWUNERUVBSVFFTElBUWdBVFlDQ0NBRUlBUkJDR29RdHdnZ0FDQUVLUU1BTndNQUlBUkIwQUZxXFxcbkpBQUw1Z01DRFg4QmZrRUFJQUVvQWdnaUIyc2hDQ0FGSUFFb0FoQWlDV3NoQ2lBQktBSWNJUXNnQVNrREFDRVVJQUVvQWhRaERBSkFBMFxcXG5CQkFDQUxJQVliSVEwZ0J5QUhJQXNnQnlBTFN4c2dCaHNpRGlBRklBNGdCVXNiSVE4Q1FBSkFBMEFDUUNBTUlBVnFJaEJCZjJvaUN5QURcXFxuU1EwQUlBRWdBellDRkVFQUlRc01CUXNDUUNBVUlBSWdDMm94QUFDSVFnR0RVQTBBSUFJZ0RHb2hFU0FPSVFzQ1FBTkFBa0FnRHlBTFJ3XFxcbjBBSUFjaEN3SkFBa0FDUUFOQUFrQWdEU0FMU1EwQUlBRWdFRFlDRkNBR1JRMENEQXNMSUF0QmYyb2lDeUFGVHcwQ0lBc2dER29pRWlBRFxcXG5UdzBESUFRZ0Myb3RBQUFnQWlBU2FpMEFBRVlOQUFzZ0FTQUpJQXhxSWd3MkFoUWdCZzBISUFvaEN3d0lDeUFCUVFBMkFod01DQXNnQ3lcXFxuQUZRY0Rvd0FBUWdRVUFDeUFTSUFOQjBPakFBQkNCQlFBTElBd2dDMm9nQTA4TkFTQVJJQXRxSVJJZ0JDQUxhaUVUSUF0QkFXb2hDeUFUXFxcbkxRQUFJQkl0QUFCR0RRQUxJQUVnQ0NBTWFpSVNJQXRxSWd3MkFoUWdCZzBDSUJJZ0Myb2hERUVBSVFzTUF3c2dBeUFPSUF4cUlnc2dBeVxcXG5BTFN4c2dBMEd3Nk1BQUVJRUZBQXNnQVNBUU5nSVVJQkFoRENBR0RRQUxRUUFoQ3lBUUlRd0xJQUVnQ3pZQ0hBd0JDd3NnQUNBTU5nSUVcXFxuSUFCQkNHb2dFRFlDQUVFQklRc0xJQUFnQ3pZQ0FBdTVCQUVDZndKQUFrQWdBRUdBWG1wQkUwa05BQ0FBUVlDb2ZXb2lBa0gvL3dOeFFSXFxcbnh3SVFNZ0FrR2oxd0JMRFFFZ0FVSFlYR3BCR2tzTkFTQUREUUVnQUNBQmFrSFpYR29QQ3lBQlFaOWRha0VVU3cwQUlBQkJ6QVJzSUFGQlxcXG5IR3hxUWVUeTNuNXFEd3NDUUFKQUlBRWdBSEpCZ0lBRVNRMEFRWUNBeEFBaEFnSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFcXFxuSkFJQUJCNTk1N2FnNERBUTRDQUFzQ1FDQUFRYy9kZTJvT0FnUUZBQXNDUUNBQVFjalVlMm9PQWdnSkFBc2dBRUdsb1FSR0RRSWdBRUhIXFxcbnBnUkdEUVVnQUVHNXFRUkdEUVlnQUVHMXNnUkhEUTFCdUxJRVFZQ0F4QUFnQVVHd3NnUkdHdzhMUVpxaEJFR0FnTVFBSUFGQnVxRUVSaFxcXG5zUEMwR2NvUVJCZ0lERUFDQUJRYnFoQkVZYkR3dEJxNkVFUVlDQXhBQWdBVUc2b1FSR0d3OExRYTZpQkVHQWdNUUFJQUZCcDZJRVJoc1BcXFxuQzBHdm9nUkJnSURFQUNBQlFhZWlCRVliRHd0Qnk2WUVRY3ltQkVHQWdNUUFJQUZCMTZZRVJoc2dBVUcrcGdSR0d3OExJQUZCeHRaN2FnXFxcbjRFQXdZR0JBSUxRYnFyQkVHQWdNUUFJQUZCcjZzRVJoc1BDMEc3cXdSQmdJREVBQ0FCUWErckJFWWJEd3NnQVVHd3FRUkhEUU5CdktrRVxcXG5Ed3RCdTZrRUR3dEJ2cWtFRHdzZ0FFRVFkQ0FCY2lJQUlBQkJ1ZlBkOFhsc0lBQkJwcktGaWdOc0lnRnpyVUtnQjM1Q0lJaW5RUUYwUWZcXFxuU2p4UUJxTHdFQWFrRzU4OTN4ZVd3Z0FYT3RRcUFIZmtJZ2lLZEJBM1FpQVVHNHNzVUFhaWdDQUVHQWdNUUFJQUZCdExMRkFHb29BZ0FnXFxcbkFFWWJJUUlMSUFJTG53UUJESDhqQUVFUWF5SUZKQUFnQTBGL2FpRUdJQVJCZjNNaEJ5QURJQVJxSVFnZ0FTZ0NBQ0VKUVFBaENpQURJUVxcXG5zRFFDQUtJUXhCQUNFTkFrQUNRQUpBQWtBRFFBSkFJQXNnRFdvaURpQUlSdzBBSUF3Z0JFWU5BaUFGSUFNZ0JDQU1RYnlDd0FBUTZnVWdcXFxuQUNBQklBVW9BZ0FnQlNnQ0JCQ2dDd3dEQ3lBTlFRRnFJUTBnRGkwQUFDSVBRWWJTd0FCcUxRQUFJZzVGRFFBTElBd2dEV29pQ2tGL2FpXFxcbklRSUF4TkRRTUNRQ0FNUlEwQUFrQWdEQ0FFU1EwQUlBd2dCRVlOQVF3RUN5QURJQXhxTEFBQVFVQklEUU1MQWtBQ1FDQVFJQVJKRFFBZ1xcXG5DaUFIYWcwRURBRUxJQVlnREdvZ0RXb3NBQUJCdjM5TURRTUxJQWtnQXlBTWFpQU5RWDlxRUlnTURBTUxJQUJCQkRvQUFBc2dCVUVRYWlcXFxuUUFEd3NnQXlBRUlBd2dEQ0FOYWtGL2FrR3Nnc0FBRU9RTEFBc2dDeUFOYWlFTEFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBT1FaSi9hZzRJXFxcbkFRY0hCd0lIQXdRQUN3SkFBa0FnRGtHZWYyb09CUVlJQ0FnQkFBdEIzWUxBQUNFTklBNUJJa1lOQmlBT1Fkd0FSdzBIUWR1Q3dBQWhEUVxcXG53R0MwSFhnc0FBSVEwTUJRdEIxWUxBQUNFTkRBUUxRZE9Dd0FBaERRd0RDMEhSZ3NBQUlRME1BZ3NnQlVIYzZzR0JBellBQ2lBRklBOUJcXFxuRDNGQjlOSEFBR290QUFBNkFBOGdCU0FQUVFSMlFmVFJ3QUJxTFFBQU9nQU9JQWtnQlVFS2FrRUdFSWdNREFNTFFkbUN3QUFoRFFzZ0NTXFxcbkFOUVFJUWlBd01BUXNMUVlxQXdBQkJLRUdjZ3NBQUVJTUhBQXY4QXdJRGZ3SitJd0JCMEFCcklnVWtBQUpBQWtBQ1FDQUNJQU1ReFFJTlxcXG5BQ0FGSUFGQkhHb3RBQUE2QUN3Z0JTQUJLQUFZTmdJb0lBVkJHR29nQWlBRElBVkJLR29nQVNBRUVEQkJBQ0VDSUFWQkVHb2dCRUVJYWlcXFxuSURLQUlBUVFBUTFRUWdBeWdDQUNFR0lBVXBBeEFoQ0NBRFFRQTJBZ0FnQlVFb2FrRUlhaUlESUFZMkFnQWdCQ2tDQUNFSklBUWdDRGNDXFxcbkFDQUZJQWszQXlnZ0FVRU1haEQyQnlBQlFSUnFJZ1lnQXlnQ0FEWUNBQ0FCSUFVcEF5ZzNBZ3dnQlVFb2FpQUJLQUlNSUFZb0FnQVFtUVxcXG5VZ0JTMEFHQ0VIREFFTElBUWdBaUFERUpNTUlBQkJDR3BCQURZQUFDQUFRZ0EzQUFBTUFRc0RRQ0FGUVFocUlBVkJLR29RbVFFQ1FDQUZcXFxuS0FJSUlnRU5BQ0FGSUFjNkFCZ2dBRUVJYWlBRlFSaHFRUWhxS0FJQU5nQUFJQUFnQlNrREdEY0FBQXdDQ3lBRktBSU1JUU1DUUNBQ1FRXFxcbkZ4UlEwQUlBUkJMaERnQkFzQ1FBSkFBa0FnQVNBREVKb0RSUTBBSUFRZ0FTQURFSk1NREFFTElBUW9BZ2doQmlBRVFleWl3UUJCQkJDVFxcXG5ERUVCSVFJZ0FTQUJJQU5xSUFRUWYwVU5Ba0VCSVFkQkFTRUNJQVFvQWdnaUFTQUdTUTBDQWtBZ0JrVU5BQUpBSUFFZ0Jrc05BQ0FCSUFcXFxuWkdEUUVNQXdzZ0JDZ0NBQ0FHYWl3QUFFRkFTQTBDQ3lBRUlBWTJBZ2hCQVNFSEMwRUJJUUlNQVFzTFFhQ2N3UUJCTUVHY25jRUFFSU1IXFxcbkFBc2dCVUhRQUdva0FBdmZBd0lGZndWK0l3QkI0QUJySWdNa0FDQURRVGhxSWdSQ0FEY0RBQ0FEUVJocUlnVWdBQ2tEQ0NJSVF2UEswY1xcXG51bmpObXk5QUNGTndNQUlBTkJFR29pQmlBSVF1M2VrZk9Xek55MzVBQ0ZOd01BSUFOQkNHb2lCeUFBS1FNQUlnbEM0ZVNWODliczJienNcXFxuQUlVM0F3QWdBMElBTndNd0lBTWdDRGNES0NBRElBazNBeUFnQXlBSlF2WEt6WVBYck51Mzh3Q0ZOd01BSUFNZ0FTQUNFTGdDSUFOQi93XFxcbkU2QUVBZ0F5QURRY0FBYWtFQkVMZ0NJQU5Cd0FCcVFSQnFJZ0FnQmlrREFEY0RBQ0FEUWNBQWFrRUlhaUlDSUFjcEF3QTNBd0FnQTBIQVxcXG5BR3BCR0dvaUFTQUVOUUlBUWppR0lBTXBBekNFSWdvZ0JTa0RBSVUzQXdBZ0F5QURLUU1BTndOQUlBTkJ3QUJxRUk4RklBQXBBd0FoQ0NcXFxuQURLUU5BSVFzZ0Fpa0RBQ0VNSUFFcEF3QWhDU0FEUWVBQWFpUUFJQWtnREVML0FZVjhJZ3dnQ0VJTmlTQUlJQXNnQ29WOElnaUZJZ3A4XFxcbklnc2dDa0lSaVlVaUNrSU5pU0FKUWhDSklBeUZJZ2tnQ0VJZ2lYd2lDQ0FLZkNJS2hTSU1RaEdKSUFsQ0ZZa2dDSVVpQ0NBTFFpQ0pmQ1xcXG5JSklBeDhJZ3VGSWd4Q0RZa2dDRUlRaVNBSmhTSUlJQXBDSUlsOElna2dESHlGSWdwQ0VZa2dDRUlWaVNBSmhTSUlJQXRDSUlsOElna2dcXFxuQ253aUNrSWdpWVVnQ0VJUWlTQUpoVUlWaVlVZ0NvVUw0QU1CQ1g4akFFRVFheUlDSkFBQ1FBSkFJQUV0QUNWRkRRQkJBQ0VEREFFTElBXFxcbkZCR0dvaEJDQUJLQUlFSWdVaEJnTkFBa0FDUUFKQUlBRW9BaEFpQXlBQktBSU1JZ2RKSUFNZ0FTZ0NDRXR5SWdnTkFFRUFJQVlnQjJvZ1xcXG5DQnNoQmlBQktBSVVJQVJxUVg5cUxRQUFJUWtDUUFKQUlBb2dBeUFIYXlBSUd5SUtRUWRMRFFCQkFDRUhRUUFoQXdOQUFrQWdDaUFEUndcXFxuMEFJQW9oQXd3REN3SkFJQVlnQTJvdEFBQWdDVUgvQVhGSERRQkJBU0VIREFNTElBTkJBV29oQXd3QUN3c2dBa0VJYWlBSklBWWdDaEQ5XFxcbkFTQUNLQUlNSVFNZ0FpZ0NDQ0VIQ3dKQUlBZEJBVWNOQUNBQklBTWdBU2dDREdwQkFXb2lBellDRENBRElBRW9BaFFpQmtrTkF5QURJQVxcXG5Fb0FnaE5EUUlNQXdzZ0FTQUJLQUlRTmdJTUMwRUFJUU1DUUNBQkxRQWxSUTBBREFRTElBRkJBVG9BSlNBQktBSWNJUVlnQVNnQ0lDRUpcXFxuQWtBZ0FTMEFKQTBBSUFrZ0JrWU5CQXNnQ1NBR2F5RUtJQUVvQWdRZ0Jtb2hBd3dEQ3lBQktBSUVJUWtnQWlBR0lBUkJCRUhnbnNFQUVOXFxcbjBKSUFrZ0F5QUdheUlEYWlBR0lBSW9BZ0FnQWlnQ0JCQ21Da1VOQUNBQktBSWNJUVlnQVNBQktBSU1OZ0ljSUFNZ0Jtc2hDaUFGSUFacVxcXG5JUU1NQWdzZ0FTZ0NCQ0VHREFBTEN5QUFJQW8yQWdRZ0FDQUROZ0lBSUFKQkVHb2tBQXZ2QXdJR2Z3RitJd0JCSUdzaUF5UUFJQU5CQ0dcXFxub2dBUkRUQmdKQUFrQUNRQUpBSUFNdEFBZ05BQ0FETFFBSkRRSWdBMEVGTmdJUUlBRWdBMEVRYWhEUENDRUVEQUVMSUFNb0Fnd2hCQXNnXFxcbkFFSUROd01BSUFBZ0JEWUNDQXdCQ3dKQUFrQWdBeTBBQ2lJRlFmOEJjVUV3UncwQUFrQWdBU2dDQ0NJRUlBRW9BZ1JQRFFBZ0FTZ0NBQ1xcXG5BRWFpMEFBRUZRYWtIL0FYRkJDa2tOQWdzZ0FDQUJJQUpDQUJDK0Fnd0NDd0pBSUFWQlQycEIvd0Z4UVFsSkRRQWdBMEVOTmdJUUlBRWdcXFxuQTBFUWFoRFBDQ0VFSUFCQ0F6Y0RBQ0FBSUFRMkFnZ01BZ3NnQVNnQ0NDSUVJQUVvQWdRaUJpQUVJQVpMR3lFSElBVkJVR3F0UXY4Qmd5XFxcbkVKSUFFb0FnQWhDQU5BQWtBQ1FDQUhJQVJHRFFBZ0NDQUVhaTBBQUVGUWFpSUZRZjhCY1NJR1FRcEpEUUVMSUFBZ0FTQUNJQWtRdmdJTVxcXG5Bd3NDUUFKQUlBbENtYlBtekptejVzd1pWQTBBSUFsQ21iUG16Sm16NXN3WlVnMEJJQVpCQlVzTkFRc2dBU0FFUVFGcUlnUTJBZ2dnQ1VcXFxuSUtmaUFGclVML0FZTjhJUWtNQVFzTElBTkJFR29nQVNBQ0lBa1Fqd01DUUFKQUlBTW9BaEFOQUNBQUlBTXJBeGc1QXdoQ0FDRUpEQUVMXFxcbklBQWdBeWdDRkRZQ0NFSURJUWtMSUFBZ0NUY0RBQXdCQ3lBRFFRMDJBaEFnQVNBRFFSQnFFTTRJSVFRZ0FFSUROd01BSUFBZ0JEWUNDQVxcXG5zZ0EwRWdhaVFBQys4REFnWi9BWDRqQUVFZ2F5SURKQUFnQTBFSWFpQUJFTmdHQWtBQ1FBSkFBa0FnQXkwQUNBMEFJQU10QUFrTkFpQURcXFxuUVFVMkFoQWdBU0FEUVJCcUVOOElJUVFNQVFzZ0F5Z0NEQ0VFQ3lBQVFnTTNBd0FnQUNBRU5nSUlEQUVMQWtBQ1FDQURMUUFLSWdWQi93XFxcbkZ4UVRCSERRQUNRQ0FCS0FJSUlnUWdBU2dDQkU4TkFDQUJLQUlBSUFScUxRQUFRVkJxUWY4QmNVRUtTUTBDQ3lBQUlBRWdBa0lBRUw4Q1xcXG5EQUlMQWtBZ0JVRlBha0gvQVhGQkNVa05BQ0FEUVEwMkFoQWdBU0FEUVJCcUVOOElJUVFnQUVJRE53TUFJQUFnQkRZQ0NBd0NDeUFCS0FcXFxuSUlJZ1FnQVNnQ0JDSUdJQVFnQmtzYklRY2dCVUZRYXExQy93R0RJUWtnQVNnQ0FDRUlBMEFDUUFKQUlBY2dCRVlOQUNBSUlBUnFMUUFBXFxcblFWQnFJZ1ZCL3dGeElnWkJDa2tOQVFzZ0FDQUJJQUlnQ1JDL0Fnd0RDd0pBQWtBZ0NVS1pzK2JNbWJQbXpCbFVEUUFnQ1VLWnMrYk1tYlxcXG5QbXpCbFNEUUVnQmtFRlN3MEJDeUFCSUFSQkFXb2lCRFlDQ0NBSlFncCtJQVd0UXY4Qmczd2hDUXdCQ3dzZ0EwRVFhaUFCSUFJZ0NSQ1FcXFxuQXdKQUFrQWdBeWdDRUEwQUlBQWdBeXNER0RrRENFSUFJUWtNQVFzZ0FDQURLQUlVTmdJSVFnTWhDUXNnQUNBSk53TUFEQUVMSUFOQkRUXFxcbllDRUNBQklBTkJFR29RM1FnaEJDQUFRZ00zQXdBZ0FDQUVOZ0lJQ3lBRFFTQnFKQUFMaEFRQkJIOGpBRUdBQVdzaUF5UUFBa0FDUUNBQlxcXG5JQUpCMndBUTJBY05BQ0FEUVFBMkFtZ2dBeUFCTmdKZ0lBTWdBVFlDV0NBRElBSTJBbHdnQXlBQklBSnFOZ0prSUFOQjRBQnFJUVFDUUFcXFxuSkFBMEFnQTBFUWFpQUVFTjBFQWtBZ0F5Z0NGQ0lGUVZGcUlnWkJFVXNOQUVFQklBWjBRWUhRRG5FTkFnc0NRQ0FGUVExTERRQkJBU0FGXFxcbmRFR0J6QUJ4RFFJTElBVkJwWDlxUVFSSkRRRUNRQ0FGUVdCcURnUUNBUUVDQUFzZ0JVSDhBRVlOQVNBRlFZQ0F4QUJIRFFBTElBTkJqSVxcXG5mQkFEWUNRQ0FESUFJMkFqd2dBeUFCTmdJNElBTkJBRFlDVUNBRFFnRTNBMGdnQTBIWUFHb2dBMEhJQUdwQjdJREJBQkRMQ0NBRFFUaHFcXFxuSUFOQjJBQnFFT2NGRFFFZ0EwRWphaUFEUWNnQWFrRUlhaWdDQURZQUFDQURJQU1wQTBnM0FCc2dBRUVBT2dBQUlBQWdBeWtBR0RjQUFTXFxcbkFBUVFocUlBTkJIMm9wQUFBM0FBQU1Bd3NnQUVHRENqc0JBQXdDQzBHRWdjRUFRVGNnQTBFWWFrRzhnY0VBUVppQ3dRQVF3Z1FBQ3dKQVxcXG5JQUVnQWtIZEFCRFpCMFVOQUNBRFFRaHFJQUVnQWtFQklBSkJmMnBCL0liQkFCQ21CaUFEUWRnQWFpQURLQUlJSUFNb0Fnd1FSd0pBQWtcXFxuQWdBeTBBV0EwQUlBQWdBeWtBV1RjQUFTQUFRUWxxSUFOQjJBQnFRUWxxS1FBQU53QUFRUUloQlF3QkN5QUFJQU10QUZrNkFBRkJBeUVGXFxcbkN5QUFJQVU2QUFBTUFRc2dBRUdEQ0RzQkFBc2dBMEdBQVdva0FBdnhBd0VIZnlNQVFkQUZheUlESkFBZ0F5QUNPZ0FVSUFNZ0FUWUNFQ1xcXG5BREVOQUlJQU5CUEdwQ0FEY0NBQ0FEUVRScVFvQ0FnSUNBQVRjQ0FDQURRU3hxUWdBM0FnQWdBMEdBZzhBQU5nSW9JQU1nQXlrRENEY0RcXFxuSUNBRElBTXBBd0EzQXhnZ0EwSElBR3BCd0FCcUlRUWdBMEdvQW1wQkNHb2hCU0FEUWVnRGFrRUlhaUVHSUFOQjRBUnFRY0FBYWlFSElBXFxcbk5CNkFOcVFRUnlJUWdnQTBHZ0EycEJCSEloQ1FKQUFrQUNRQUpBQTBBZ0EwR2dBMm9nQTBFUWFoQ3ZBUUpBQWtBZ0F5Z0NvQU1pQWtGK1xcXG5hZzRDQVFNQUN5QURJQUkyQXVnRElBZ2dDVUhFQUJDa0RSb2dBMEd3QkdvZ0EwRVFhaERZQ1FKQUlBTW9Bc0FFRFFBZ0F5Z0NzQVFoQWlcXFxuQURRZndEYWhEakRBd0VDeUFISUFOQnNBUnFRVEFRcEEwYUlBTW9BdXdESVFFZ0EwSGdCR29nQmtIQUFCQ2tEUm9nQTBHNEFXb2dBMEhnXFxcbkJHcEI4QUFRcEEwYUN5QURRY2dBYWlBRFFiZ0Jha0h3QUJDa0RSb2dBa0VDUmcwRElBTWdBVFlDckFJZ0F5QUNOZ0tvQWlBRklBTkJ5QVxcXG5CcVFjQUFFS1FOR2lBRFFmQUNhaUFFUVRBUXBBMGFJQU5CNEFScUlBTkJHR29nQTBHb0Ftb2dBMEh3QW1vUXdBZ2dBMEhnQkdvUTFBc01cXFxuQUFzTElBTW9BcVFESVFJTElBQkJBRFlDRUNBQUlBSTJBZ0FnQTBFWWFoRGFDZ3dCQ3lBQUlBTkJHR3BCTUJDa0RSb0xJQU5CMEFWcUpBXFxcbkFMK2dNQkJIOGpBRUVnYXlJREpBQUNRQUpBSUFJTkFFRUNJUVFNQVFzQ1FBSkFBa0FDUUNBQklBSkIxSWZCQUVFQ0VONEdEUUFnQVNBQ1xcXG5RZGFId1FCQkFoRGVCZzBBSUFKQkFVME5BaUFCSUFKQk1CRFlCMFVOQWlBRFFRaHFRUUVnQVNBQ1FlaUh3UUFRK1FWQkNDRUZJQU1vQWdcXFxud2hBaUFES0FJSUlRRU1BUXNnQTBFQ0lBRWdBa0hZaDhFQUVQa0ZRUkFoQlNBREtBSUVJUUlnQXlnQ0FDRUJDMEVBSVFZQ1FDQUNEUUJCXFxcbkFTRUVEQU1MUVFJaEJBSkFJQVZCRUVZTkFDQUZRUWhIRFFNZ0F5QUJOZ0lRSUFNZ0FTQUNhallDRkFOQUFrQWdBMEVRYWhDdENDSUZRWVxcXG5DQXhBQkhEUUJCQ0NFRkRBUUxJQU1nQlRZQ0hFSDRoOEVBSUFOQkhHb1E4d2RGRFFRTUFBc0xJQU1nQVRZQ0VDQURJQUVnQW1vMkFoUURcXFxuUUFKQUlBTkJFR29RclFnaUJVR0FnTVFBUncwQVFSQWhCUXdEQ3lBRElBVTJBaHhCeUlmQkFDQURRUnhxRVBNSERRQkJoSWpCQUNBRFFSXFxcbnhxRVBNSERRQkJrSWpCQUNBRFFSeHFFUE1IUlEwRERBQUxDeUFESUFFMkFoQWdBeUFCSUFKcU5nSVVBMEFDUUNBRFFSQnFFSzBJSWdWQlxcXG5nSURFQUVjTkFFRUtJUVVNQWdzZ0F5QUZOZ0ljUWNpSHdRQWdBMEVjYWhEekJ3MEFDMEVDSVFSQkFDRUdEQUVMSUFOQkVHb2dBU0FDSUFcXFxuVVE0QXdnQXlnQ0ZDRUdJQU10QUJCRklRUUxJQUFnQmpZQ0JDQUFJQVEyQWdBZ0EwRWdhaVFBQytNREFnaC9BbjRqQUVIZ0FXc2lBaVFBXFxcbklBSWdBVFlDQ0FKQUlBQW9BZ0FpQVVVTkFDQUFLQUlFSVFNZ0FpQUNRUWhxTmdJTUlBSkIrQUJxSVFRZ0FrSG9BR3BCREdvaEJRTkFJQVxcXG5GQkFDQUJJQU5ISWdZYklnZEZEUUVnQmtFSGRDRUdBa0FnQjBISUFHb2lDRUdBb3NBQVFRZ1F6QWdOQUFKQUFrQWdDRUdkcE1BQVFRd1FcXFxuK2dRaUNBMEFRUUFoQ0F3QkN5QUlLQUlJSVFrZ0NDZ0NBQ0VJQ3lBQ1FlZ0FhaUFISUFnZ0NSQm5JQUpCMkFCcUlBSkI2QUJxRUp3SUlBXFxcbkl0QUdSQkFrWU5BQ0FDUVJCcVFRaHFJQUpCMkFCcVFRaHFLUU1BSWdvM0F3QWdBaUFDS1FOWUlnczNBeEFnQWtIQUFXb2dDNmNnQ3FkQlxcXG5zS2ZBQUVFQkVFNGdBa0hRQVdvZ0FrSEFBV29RMXdvZ0JTQUhFSlFGSUFKQjZBQnFRUWhxSWdjZ0FrSFFBV3BCQ0dvaUNDZ0NBRFlDQUNcXFxuQUNJQUlwQTlBQk53Tm9JQUpCRUdvUTRnd2dDQ0FIS0FJQU5nSUFJQUlnQWlrRGFEY0QwQUVnQWlnQ2RDRUpJQUpCRUdvZ0JFSEVBQkNrXFxcbkRSb2dDVUVDUmcwQUlBY2dDQ2dDQURZQ0FDQUNJQUlwQTlBQk53Tm9JQVFnQWtFUWFrSEVBQkNrRFJvZ0FpQUpOZ0owSUFKQkRHb2dBa1xcXG5Ib0FHb1F6UWdMSUFFZ0Jtb2hBUXdBQ3dzQ1FDQUFLQUlJSWdGRkRRQWdBU0FBUVF4cUtBSUFJQUlvQWdnUTZBTUxJQUpCNEFGcUpBQUxcXFxuMUFNQkIzOGpBRUVnYXlJRkpBQkJBU0VHSUFFZ0FTZ0NDQ0lIUVFGcUlnZzJBZ2dDUUNBSUlBRW9BZ1JQRFFCQkFTRUdBa0FDUUNBQktBXFxcbklBSUFocUxRQUFRVlZxRGdNQkFnQUNDMEVBSVFZTElBRWdCMEVDYWpZQ0NBc2dCVUVJYWlBQkVOTUdBa0FDUUFKQUFrQWdCUzBBQ0EwQVxcXG5JQVV0QUFrTkFpQUZRUVUyQWhBZ0FTQUZRUkJxRU04SUlRZ01BUXNnQlNnQ0RDRUlDeUFBUVFFMkFnQWdBQ0FJTmdJRURBRUxBa0FnQlNcXFxuMEFDa0ZRYWtIL0FYRWlCMEVLU1EwQUlBVkJEVFlDRUNBQklBVkJFR29RendnaENDQUFRUUUyQWdBZ0FDQUlOZ0lFREFFTElBRW9BZ2dpXFxcbkNDQUJLQUlFSWdrZ0NDQUpTeHNoQ2lBQktBSUFJUXNDUUFKQUFrQURRQUpBQWtBZ0NpQUlSZzBBSUFzZ0NHb3RBQUJCVUdwQi93RnhJZ1xcXG5sQkNra05BUXNnQmcwQ0lBUWdCMnNpQ0VFZmRVR0FnSUNBZUhNZ0NDQUhRUUJLSUFnZ0JFaHpHeUVJREFNTElBRWdDRUVCYWlJSU5nSUlcXFxuQWtBZ0IwSE1tYlBtQUVnTkFDQUhRY3lacytZQVJ3MEVJQWxCQjBzTkJBc2dCMEVLYkNBSmFpRUhEQUFMQ3lBRUlBZHFJZ2hCSDNWQmdJXFxcbkNBZ0hoeklBZ2dCMEVBU0NBSUlBUkljeHNoQ0FzZ0FDQUJJQUlnQXlBSUVNY0NEQUVMSUFBZ0FTQUNJQU5RSUFZUXlnTUxJQVZCSUdva1xcXG5BQXZyQXdFRGZ5TUFRU0JySWdJa0FDQUNRUWhxSUFFb0FnQWlBeEMyQkFKQUFrQWdBaTBBQ0EwQUFrQWdBaTBBQ1EwQUlBSkJBellDRUNcXFxuQURJQUpCRUdvUXpnZ2hBU0FBUVFFMkFnQWdBQ0FCTmdJRURBSUxBa0FDUUFKQUlBSXRBQW9pQkVFc1JnMEFBa0FnQkVIOUFFWU5BQ0FCXFxcbkxRQUVEUUlnQWtFSU5nSVFJQU1nQWtFUWFoRE9DQ0VCSUFCQkFUWUNBQ0FBSUFFMkFnUU1CUXNnQUVJQU53SUFEQVFMSUFFdEFBUU5BQ1xcXG5BRElBTW9BZ2hCQVdvMkFnZ2dBa0VRYWlBREVMWUVBa0FnQWkwQUVFVU5BQ0FBSUFJb0FoUTJBZ1FnQUVFQk5nSUFEQVFMQWtBZ0FpMEFcXFxuRVVVTkFDQUNMUUFTSVFRTUFnc2dBa0VGTmdJUUlBTWdBa0VRYWhET0NDRUJJQUJCQVRZQ0FDQUFJQUUyQWdRTUF3c2dBVUVBT2dBRUN3XFxcbkpBQWtBZ0JFSC9BWEVpQVVFaVJnMEFJQUZCL1FCR0RRRWdBa0VSTmdJUUlBTWdBa0VRYWhET0NDRUJJQUJCQVRZQ0FDQUFJQUUyQWdRTVxcXG5Bd3NnQWtFUWFpQURFTHdGQWtBQ1FDQUNLQUlRUlEwQUlBQWdBaWtERURjQ0JDQUFRUXhxSUFKQkdHb29BZ0EyQWdCQkFDRUJEQUVMSUFcXFxuQWdBaWdDRkRZQ0JFRUJJUUVMSUFBZ0FUWUNBQXdDQ3lBQ1FSVTJBaEFnQXlBQ1FSQnFFTTRJSVFFZ0FFRUJOZ0lBSUFBZ0FUWUNCQXdCXFxcbkN5QUFJQUlvQWd3MkFnUWdBRUVCTmdJQUN5QUNRU0JxSkFBTDJBTUNCSDhDZmlNQVFkQUFheUlGSkFBZ0JTQUROZ0lJSUFFb0Fnd2hBeVxcXG5BRklBVkJDR28yQWd3Q1FBSkFJQU1nQW1vaUFpQURUdzBBSUFVZ0JCQzdCaUFGS0FJRUlRWWdCU2dDQUNFRERBRUxBa0FDUUNBQ0lBRW9cXFxuQWdRaUF5QURRUUZxSWdkQkEzWkJCMndnQTBFSVNSc2lBMEVCZGswTkFDQUZRU2hxSUFGQjFBQWdBaUFEUVFGcUlnTWdBaUFEU3hzZ0JCXFxcbkRGQkNBRktBSW9JZ2hGRFFFZ0JVRVFha0VVYWlBRlFTaHFRUlJxS0FJQU5nSUFJQVVnQlNrQ05EY0NIQ0FGSUFVb0FqQWlCallDR0NBRlxcXG5JQVVvQWl3MkFoUWdCU0FJTmdJUVFheC9JUUpCQUNFREEwQUNRQ0FISUFOSERRQWdBU2tDQUNFSklBRWdCU2tERURjQ0FDQUZRUkJxUVFcXFxuaHFJZ01wQXdBaENpQURJQUZCQ0dvaUFpa0NBRGNEQUNBQ0lBbzNBZ0FnQlNBSk53TVFJQVZCRUdvUTVnWkJnWUNBZ0hnaEF3d0VDd0pBXFxcbklBRW9BZ0FpQkNBRGFpd0FBRUVBU0EwQUlBVkJFR29nQlVFTWFpQUJJQU1RalFvUXlBZEJySDlzSUFocVFheC9haUFFSUFKcVFkUUFFS1xcXG5RTkdnc2dBMEVCYWlFRElBSkJySDlxSVFJTUFBc0xJQUVnQlVFTWFrR3Nuc0FBUWRRQUVIUkJnWUNBZ0hnaEF3d0JDeUFGUVRCcUtBSUFcXFxuSVFZZ0JTZ0NMQ0VEQ3lBQUlBWTJBZ1FnQUNBRE5nSUFJQVZCMEFCcUpBQUwxQU1CQjM4akFFRWdheUlGSkFCQkFTRUdJQUVnQVNnQ0NDXFxcbklIUVFGcUlnZzJBZ2dDUUNBSUlBRW9BZ1JQRFFCQkFTRUdBa0FDUUNBQktBSUFJQWhxTFFBQVFWVnFEZ01CQWdBQ0MwRUFJUVlMSUFFZ1xcXG5CMEVDYWpZQ0NBc2dCVUVJYWlBQkVOZ0dBa0FDUUFKQUFrQWdCUzBBQ0EwQUlBVXRBQWtOQWlBRlFRVTJBaEFnQVNBRlFSQnFFTjhJSVFcXFxuZ01BUXNnQlNnQ0RDRUlDeUFBUVFFMkFnQWdBQ0FJTmdJRURBRUxBa0FnQlMwQUNrRlFha0gvQVhFaUIwRUtTUTBBSUFWQkRUWUNFQ0FCXFxcbklBVkJFR29RM3dnaENDQUFRUUUyQWdBZ0FDQUlOZ0lFREFFTElBRW9BZ2dpQ0NBQktBSUVJZ2tnQ0NBSlN4c2hDaUFCS0FJQUlRc0NRQVxcXG5KQUFrQURRQUpBQWtBZ0NpQUlSZzBBSUFzZ0NHb3RBQUJCVUdwQi93RnhJZ2xCQ2trTkFRc2dCZzBDSUFRZ0Iyc2lDRUVmZFVHQWdJQ0FcXFxuZUhNZ0NDQUhRUUJLSUFnZ0JFaHpHeUVJREFNTElBRWdDRUVCYWlJSU5nSUlBa0FnQjBITW1iUG1BRWdOQUNBSFFjeVpzK1lBUncwRUlBXFxcbmxCQjBzTkJBc2dCMEVLYkNBSmFpRUhEQUFMQ3lBRUlBZHFJZ2hCSDNWQmdJQ0FnSGh6SUFnZ0IwRUFTQ0FJSUFSSWN4c2hDQXNnQUNBQlxcXG5JQUlnQXlBSUVNa0NEQUVMSUFBZ0FTQUNJQU5RSUFZUXpRTUxJQVZCSUdva0FBdnJBd0VEZnlNQVFTQnJJZ0lrQUNBQ1FRaHFJQUVvQWdcXFxuQWlBeEM2QkFKQUFrQWdBaTBBQ0EwQUFrQWdBaTBBQ1EwQUlBSkJBellDRUNBRElBSkJFR29RM1FnaEFTQUFRUUUyQWdBZ0FDQUJOZ0lFXFxcbkRBSUxBa0FDUUFKQUlBSXRBQW9pQkVFc1JnMEFBa0FnQkVIOUFFWU5BQ0FCTFFBRURRSWdBa0VJTmdJUUlBTWdBa0VRYWhEZENDRUJJQVxcXG5CQkFUWUNBQ0FBSUFFMkFnUU1CUXNnQUVJQU53SUFEQVFMSUFFdEFBUU5BQ0FESUFNb0FnaEJBV28yQWdnZ0FrRVFhaUFERUxvRUFrQWdcXFxuQWkwQUVFVU5BQ0FBSUFJb0FoUTJBZ1FnQUVFQk5nSUFEQVFMQWtBZ0FpMEFFVVVOQUNBQ0xRQVNJUVFNQWdzZ0FrRUZOZ0lRSUFNZ0FrXFxcbkVRYWhEZENDRUJJQUJCQVRZQ0FDQUFJQUUyQWdRTUF3c2dBVUVBT2dBRUN3SkFBa0FnQkVIL0FYRWlBVUVpUmcwQUlBRkIvUUJHRFFFZ1xcXG5Ba0VSTmdJUUlBTWdBa0VRYWhEZENDRUJJQUJCQVRZQ0FDQUFJQUUyQWdRTUF3c2dBa0VRYWlBREVMOEZBa0FDUUNBQ0tBSVFSUTBBSUFcXFxuQWdBaWtERURjQ0JDQUFRUXhxSUFKQkdHb29BZ0EyQWdCQkFDRUJEQUVMSUFBZ0FpZ0NGRFlDQkVFQklRRUxJQUFnQVRZQ0FBd0NDeUFDXFxcblFSVTJBaEFnQXlBQ1FSQnFFTjBJSVFFZ0FFRUJOZ0lBSUFBZ0FUWUNCQXdCQ3lBQUlBSW9BZ3cyQWdRZ0FFRUJOZ0lBQ3lBQ1FTQnFKQVxcXG5BTDVBTUJBMzhqQUVFd2F5SUNKQUFnQWtFSWFpQUJLQUlBSWdNUXRnUUNRQUpBSUFJdEFBZ05BQUpBSUFJdEFBa05BQ0FDUVFJMkFoQWdcXFxuQXlBQ1FSQnFFTTRJSVFFZ0FFRUJOZ0lBSUFBZ0FUWUNCQXdDQ3dKQUFrQUNRQ0FDTFFBS0lnUkJMRVlOQUFKQUlBUkIzUUJHRFFBZ0FTXFxcbjBBQkEwQ0lBSkJCellDRUNBRElBSkJFR29RemdnaEFTQUFRUUUyQWdBZ0FDQUJOZ0lFREFVTElBQkJBRFlDQUNBQVFRQTJBZ2dNQkFzZ1xcXG5BUzBBQkEwQUlBTWdBeWdDQ0VFQmFqWUNDQ0FDUVJCcUlBTVF0Z1FDUUNBQ0xRQVFSUTBBSUFBZ0FpZ0NGRFlDQkNBQVFRRTJBZ0FNQkFcXFxuc0NRQ0FDTFFBUlJRMEFJQUl0QUJJaEJBd0NDeUFDUVFVMkFoQWdBeUFDUVJCcUVNNElJUUVnQUVFQk5nSUFJQUFnQVRZQ0JBd0RDeUFCXFxcblFRQTZBQVFMQWtBZ0JFSC9BWEZCM1FCSERRQWdBa0VWTmdJUUlBTWdBa0VRYWhET0NDRUJJQUJCQVRZQ0FDQUFJQUUyQWdRTUFnc2dBa1xcXG5FUWFpQURFRjRDUUNBQ0tBSVFSUTBBSUFBZ0Fpa0RFRGNEQ0NBQVFRQTJBZ0FnQUVFZ2FpQUNRUkJxUVJocUtRTUFOd01BSUFCQkdHb2dcXFxuQWtFUWFrRVFhaWtEQURjREFDQUFRUkJxSUFKQkdHb3BBd0EzQXdBTUFnc2dBQ0FDS0FJVU5nSUVJQUJCQVRZQ0FBd0JDeUFBSUFJb0FnXFxcbncyQWdRZ0FFRUJOZ0lBQ3lBQ1FUQnFKQUFMMFFNQ0JIOENmaU1BUWRBQWF5SUZKQUFnQlNBRE5nSUlJQUVvQWd3aEF5QUZJQVZCQ0dvMlxcXG5BZ3dDUUFKQUlBTWdBbW9pQWlBRFR3MEFJQVVnQkJDN0JpQUZLQUlFSVFZZ0JTZ0NBQ0VEREFFTEFrQUNRQ0FDSUFFb0FnUWlBeUFEUVFcXFxuRnFJZ2RCQTNaQkIyd2dBMEVJU1JzaUEwRUJkazBOQUNBRlFTaHFJQUZCQkNBQ0lBTkJBV29pQXlBQ0lBTkxHeUFFRU1VRUlBVW9BaWdpXFxcbkNFVU5BU0FGUVJCcVFSUnFJQVZCS0dwQkZHb29BZ0EyQWdBZ0JTQUZLUUkwTndJY0lBVWdCU2dDTUNJR05nSVlJQVVnQlNnQ0xEWUNGQ1xcXG5BRklBZzJBaEJCZkNFQ1FRQWhBd05BQWtBZ0J5QURSdzBBSUFFcEFnQWhDU0FCSUFVcEF4QTNBZ0FnQlVFUWFrRUlhaUlES1FNQUlRb2dcXFxuQXlBQlFRaHFJZ0lwQWdBM0F3QWdBaUFLTndJQUlBVWdDVGNERUNBRlFSQnFFT1lHUVlHQWdJQjRJUU1NQkFzQ1FDQUJLQUlBSWdRZ0EyXFxcbm9zQUFCQkFFZ05BQ0FJSUFWQkVHb2dCVUVNYWlBQklBTVF4Z29ReUFkQkFuUnJRWHhxSUFRZ0Ftb29BQUEyQUFBTElBTkJBV29oQXlBQ1xcXG5RWHhxSVFJTUFBc0xJQUVnQlVFTWFrSGNuc0FBUVFRUWRFR0JnSUNBZUNFRERBRUxJQVZCTUdvb0FnQWhCaUFGS0FJc0lRTUxJQUFnQmpcXFxuWUNCQ0FBSUFNMkFnQWdCVUhRQUdva0FBdlJBd0lFZndKK0l3QkIwQUJySWdVa0FDQUZJQU0yQWdnZ0FTZ0NEQ0VESUFVZ0JVRUlhallDXFxcbkRBSkFBa0FnQXlBQ2FpSUNJQU5QRFFBZ0JTQUVFTHNHSUFVb0FnUWhCaUFGS0FJQUlRTU1BUXNDUUFKQUlBSWdBU2dDQkNJRElBTkJBV1xcXG5vaUIwRURka0VIYkNBRFFRaEpHeUlEUVFGMlRRMEFJQVZCS0dvZ0FVRUlJQUlnQTBFQmFpSURJQUlnQTBzYklBUVF4UVFnQlNnQ0tDSUlcXFxuUlEwQklBVkJFR3BCRkdvZ0JVRW9ha0VVYWlnQ0FEWUNBQ0FGSUFVcEFqUTNBaHdnQlNBRktBSXdJZ1kyQWhnZ0JTQUZLQUlzTmdJVUlBXFxcblVnQ0RZQ0VFRjRJUUpCQUNFREEwQUNRQ0FISUFOSERRQWdBU2tDQUNFSklBRWdCU2tERURjQ0FDQUZRUkJxUVFocUlnTXBBd0FoQ2lBRFxcXG5JQUZCQ0dvaUFpa0NBRGNEQUNBQ0lBbzNBZ0FnQlNBSk53TVFJQVZCRUdvUTVnWkJnWUNBZ0hnaEF3d0VDd0pBSUFFb0FnQWlCQ0FEYWlcXFxud0FBRUVBU0EwQUlBZ2dCVUVRYWlBRlFReHFJQUVnQXhERkNoRElCMEVEZEd0QmVHb2dCQ0FDYWlrQUFEY0FBQXNnQTBFQmFpRURJQUpCXFxcbmVHb2hBZ3dBQ3dzZ0FTQUZRUXhxUWZTZXdBQkJDQkIwUVlHQWdJQjRJUU1NQVFzZ0JVRXdhaWdDQUNFR0lBVW9BaXdoQXdzZ0FDQUdOZ1xcXG5JRUlBQWdBellDQUNBRlFkQUFhaVFBQzljREFRdC9RUUJCQUNnQy9LWlBRUUZxSWdFMkF2eW1UeUFCUVFOc0lRSUNRQU5BQWtCQkFDZ0NcXFxuZ0tkUElnTU5BQkNXQnlFREN5QURLQUlFSWdRZ0FrOE5BU0FFUVFaMElRVWdBeWdDQUNFRUFrQURRQUpBSUFVTkFDQURRUUFvQW9DblQwXFxcbllOQWlBREtBSUVRUVowSVFRZ0F5Z0NBQ0VGQTBBZ0JFVU5CQ0FFUVVCcUlRUWdCUkRGQ1NBRlFjQUFhaUVGREFBTEN5QUVJQVFvQWdBaVxcXG5Ca0VCSUFZYk5nSUFBa0FnQmtVTkFDQUVFTUFFQ3lBRVFjQUFhaUVFSUFWQlFHb2hCUXdBQ3dzTElBRWdBeENHQWlFSElBTW9BZ0FpQkNcXFxuQURLQUlFUVFaMGFpRUlBMEFDUUNBRUlBaEhEUUJCQUNBSE5nS0FwMDhnQXlnQ0JFRUdkQ0VFSUFNb0FnQWhCUU5BSUFSRkRRTWdCRUZBXFxcbmFpRUVJQVVReFFrZ0JVSEFBR29oQlF3QUN3c2dCRUhBQUdvaENVRUFJQWNvQWdoclFSOXhJUW9nQnlnQ0FDRUxJQWNvQWdRaEFTQUVLQVxcXG5JRUlRUURRQUpBSUFRTkFDQUpJUVFNQWdzQ1FDQUVLQUlBUWJuejNmRjViQ0FLZGlJRklBRlBEUUFnQkNnQ0JDRUdJQXNnQlVFR2RHb2lcXFxuQlNnQ0NDSUNJQVVnQWhzZ0JEWUNCQ0FGSUFRMkFnZ2dCRUVBTmdJRUlBWWhCQXdCQ3dzTElBVWdBVUhBNGNBQUVJRUZBQXNnQUVJQU53XFxcbklBSUFCQkVHcEJBRG9BQUNBQVFRaHFRZ0EzQWdBTDR3TUNBbjhCZmlNQVFkQUJheUlFSkFBZ0JFSFFBR29nQWlBREVKb0pBa0FDUUFKQVxcXG5Ba0FnQkNnQ1VDSURRUUpIRFFBZ0JDMEFWQkN5RFNFQ0RBRUxJQVF0QUZRaEFpQUVRUWhxUVFWeUlBUkIwQUJxUVFWeVFjTUFFS1FOR2lcXFxuQUVJQUk2QUF3Z0JDQUROZ0lJUVFBaEFpQUVRUUEyQXB3QklBUWdCRUVJYWpZQ21BRWdCRUhRQUdvZ0FTQUVRWmdCYWhDREFTQUVRWmdCXFxcbmFrRUVjaUVEQWtBZ0JDZ0NVQTBBQWtBZ0JDZ0NWQ0lCRFFBTUF3c2dCQ0FFUWRnQWFpa0RBRGNDckFFZ0JDQUJOZ0tvQVNBRVFiZ0JhaVxcXG5BRVFhZ0JhaENKQlNBRUtRSzhBU0VHSUFRb0FyZ0JJUUlnQkMwQXlBRWlBVUVDUmcwQ0lBUW9Bc1FCSVFVZ0JFSFFBR3BCRTJvZ0JFRzRcXFxuQVdwQkUyb3RBQUE2QUFBZ0JDQUVMd0RKQVRzQVlTQUVJQUU2QUdBZ0JDQUZOZ0pjSUFRZ0JqY0NWQ0FFSUFJMkFsQWdCRUhRQUdvUXRRXFxcbjBoQWlBREVNd0xJQVJCSEdvUTR3d01BUXNnQkNnQ1ZDRUNJQU1RekFzZ0JFRWNhaERqREFzZ0JDQUNOZ0lNUVFFaEF3d0JDeUFERU13TFxcXG5JQVJCSEdvUTR3d0NRQUpBSUFJTkFFR0FBU0VEREFFTElBUWdCamNDVkNBRUlBSTJBbEFnQkVIUUFHb1FpQXNoQXdzZ0JDQUROZ0lNUVFcXFxuQWhBd3NnQkNBRE5nSUlJQVFnQkVFSWFoQzNDQ0FBSUFRcEF3QTNBd0FnQkVIUUFXb2tBQXZiQXdFRGZ5TUFRU0JySWdJa0FDQUNRUWhxXFxcbklBRW9BZ0FpQXhDMkJBSkFBa0FnQWkwQUNBMEFBa0FnQWkwQUNRMEFJQUpCQXpZQ0VDQURJQUpCRUdvUXpnZ2hBU0FBUVFFNkFBQWdBQ1xcXG5BQk5nSUVEQUlMQWtBQ1FBSkFJQUl0QUFvaUJFRXNSZzBBQWtBZ0JFSDlBRVlOQUNBQkxRQUVEUUlnQWtFSU5nSVFJQU1nQWtFUWFoRE9cXFxuQ0NFQklBQkJBVG9BQUNBQUlBRTJBZ1FNQlFzZ0FFR0FCRHNCQUF3RUN5QUJMUUFFRFFBZ0F5QURLQUlJUVFGcU5nSUlJQUpCRUdvZ0F4XFxcbkMyQkFKQUlBSXRBQkJGRFFBZ0FDQUNLQUlVTmdJRUlBQkJBVG9BQUF3RUN3SkFJQUl0QUJGRkRRQWdBaTBBRWlFRURBSUxJQUpCQlRZQ1xcXG5FQ0FESUFKQkVHb1F6Z2doQVNBQVFRRTZBQUFnQUNBQk5nSUVEQU1MSUFGQkFEb0FCQXNDUUFKQUlBUkIvd0Z4SWdGQklrWU5BQ0FCUWZcXFxuMEFSZzBCSUFKQkVUWUNFQ0FESUFKQkVHb1F6Z2doQVNBQVFRRTZBQUFnQUNBQk5nSUVEQU1MSUFKQkVHb2dBeEM3QlFKQUFrQWdBaTBBXFxcbkVBMEFJQUFnQWkwQUVUb0FBVUVBSVFFTUFRc2dBQ0FDS0FJVU5nSUVRUUVoQVFzZ0FDQUJPZ0FBREFJTElBSkJGVFlDRUNBRElBSkJFR1xcXG5vUXpnZ2hBU0FBUVFFNkFBQWdBQ0FCTmdJRURBRUxJQUFnQWlnQ0REWUNCQ0FBUVFFNkFBQUxJQUpCSUdva0FBdTFBd0VKZnlNQVFTQnJcXFxuSWdJa0FBSkFBa0FnQVMwQUpVVU5BRUVBSVFNTUFRc2dBVUVZYWlFRUlBRW9BZ1FpQlNFR0EwQUNRQUpBQWtBZ0FTZ0NFQ0lESUFFb0FnXFxcbndpQjBrZ0F5QUJLQUlJUzNJaUNBMEFRUUFnQmlBSGFpQUlHeUVHSUFFb0FoUWdCR3BCZjJvdEFBQWhDUUpBQWtBZ0NpQURJQWRySUFnYlxcXG5JZ3BCQjBzTkFFRUFJUWRCQUNFREEwQUNRQ0FLSUFOSERRQWdDaUVEREFNTEFrQWdCaUFEYWkwQUFDQUpRZjhCY1VjTkFFRUJJUWNNQXdcXFxuc2dBMEVCYWlFRERBQUxDeUFDUVJocUlBa2dCaUFLRVAwQklBSW9BaHdoQXlBQ0tBSVlJUWNMQWtBZ0IwRUJSdzBBSUFFZ0F5QUJLQUlNXFxcbmFrRUJhaUlETmdJTUlBTWdBU2dDRkNJR1NRMERJQU1nQVNnQ0NFME5BZ3dEQ3lBQklBRW9BaEEyQWd3TElBSkJDR29nQVJDRUJpQUNLQVxcXG5JTUlRb2dBaWdDQ0NFRERBTUxJQUVvQWdRaENTQUNRUkJxUVFBZ0JpQUVRUVJCelBEQUFCQ1lCeUFKSUFNZ0Jtc2lBMm9nQmlBQ0tBSVFcXFxuSUFJb0FoUVFtQXBGRFFBZ0FTZ0NIQ0VHSUFFZ0FTZ0NERFlDSENBRElBWnJJUW9nQlNBR2FpRUREQUlMSUFFb0FnUWhCZ3dBQ3dzZ0FDXFxcbkFLTmdJRUlBQWdBellDQUNBQ1FTQnFKQUFMeHdNQkEzOGpBRUhRQUdzaUFpUUFJQUpCQ0dvZ0FSQzZCQUpBQWtBQ1FBSkFJQUl0QUFnTlxcXG5BQ0FDTFFBSkRRSWdBa0VGTmdJUUlBRWdBa0VRYWhEZENDRUJEQUVMSUFJb0Fnd2hBUXNnQUVFQU5nSVFJQUFnQVRZQ0FBd0JDd0pBQWtcXFxuQWdBaTBBQ2tIN0FFY05BQ0FCSUFFdEFCaEJmMm9pQXpvQUdBSkFJQU5CL3dGeERRQWdBa0VZTmdJUUlBRWdBa0VRYWhEZENDRUJJQUJCXFxcbkFEWUNFQ0FBSUFFMkFnQU1Bd3NnQVJDRERDQUNJQUVRaEF3Z0FrRVFhaUFDS0FJQUlBSXRBQVJCQVhFUXNRRWdBU0FCTFFBWVFRRnFPZ1xcXG5BWUlBSWdBUkRGQXlJRE5nSkFBa0FDUUNBQ0tBSWdJZ1JGRFFBZ0EwVU5BU0FDUVJCcUVOa0tJQU1oQkF3REN5QUNLQUlRSVFRZ0EwVU5cXFxuQWlBQ1FjQUFhaEN2Q1F3Q0N5QUFJQUlwQWhRM0FnUWdBQ0FDS1FJa053SVVJQUJCREdvZ0FrRVFha0VNYWlnQ0FEWUNBQ0FBUVJ4cUlBXFxcbkpCRUdwQkhHb3BBZ0EzQWdBZ0FFRWthaUFDUVJCcVFTUnFLUUlBTndJQUlBQkJMR29nQWtFUWFrRXNhaWdDQURZQ0FDQUNLQUlRSVFFZ1xcXG5BQ0FFTmdJUUlBQWdBVFlDQUF3Q0N5QUJJQUpCeUFCcVFleWR3QUFRZUNFRUN5QUJJQVFRdmcwaEFTQUFRUUEyQWhBZ0FDQUJOZ0lBQ3lcXFxuQUNRZEFBYWlRQUM4Y0RBUU4vSXdCQjBBQnJJZ0lrQUNBQ1FRaHFJQUVRdWdRQ1FBSkFBa0FDUUNBQ0xRQUlEUUFnQWkwQUNRMENJQUpCXFxcbkJUWUNFQ0FCSUFKQkVHb1EzUWdoQVF3QkN5QUNLQUlNSVFFTElBQkJBRFlDRUNBQUlBRTJBZ0FNQVFzQ1FBSkFJQUl0QUFwQit3QkhEUVxcXG5BZ0FTQUJMUUFZUVg5cUlnTTZBQmdDUUNBRFFmOEJjUTBBSUFKQkdEWUNFQ0FCSUFKQkVHb1EzUWdoQVNBQVFRQTJBaEFnQUNBQk5nSUFcXFxuREFNTElBRVFnd3dnQWlBQkVJUU1JQUpCRUdvZ0FpZ0NBQ0FDTFFBRVFRRnhFSVlCSUFFZ0FTMEFHRUVCYWpvQUdDQUNJQUVReFFNaUF6XFxcbllDUUFKQUFrQWdBaWdDSUNJRVJRMEFJQU5GRFFFZ0FrRVFhaERZQ2lBRElRUU1Bd3NnQWlnQ0VDRUVJQU5GRFFJZ0FrSEFBR29RcndrTVxcXG5BZ3NnQUNBQ0tRSVVOd0lFSUFBZ0Fpa0NKRGNDRkNBQVFReHFJQUpCRUdwQkRHb29BZ0EyQWdBZ0FFRWNhaUFDUVJCcVFSeHFLUUlBTndcXFxuSUFJQUJCSkdvZ0FrRVFha0VrYWlrQ0FEY0NBQ0FBUVN4cUlBSkJFR3BCTEdvb0FnQTJBZ0FnQWlnQ0VDRUJJQUFnQkRZQ0VDQUFJQUUyXFxcbkFnQU1BZ3NnQVNBQ1FjZ0Fha0hzbmNBQUVIZ2hCQXNnQVNBRUVMNE5JUUVnQUVFQU5nSVFJQUFnQVRZQ0FBc2dBa0hRQUdva0FBdkhBd1xcXG5FRGZ5TUFRZEFBYXlJQ0pBQWdBa0VJYWlBQkVMb0VBa0FDUUFKQUFrQWdBaTBBQ0EwQUlBSXRBQWtOQWlBQ1FRVTJBaEFnQVNBQ1FSQnFcXFxuRU4wSUlRRU1BUXNnQWlnQ0RDRUJDeUFBUVFBMkFoQWdBQ0FCTmdJQURBRUxBa0FDUUNBQ0xRQUtRZnNBUncwQUlBRWdBUzBBR0VGL2FpXFxcbklET2dBWUFrQWdBMEgvQVhFTkFDQUNRUmcyQWhBZ0FTQUNRUkJxRU4wSUlRRWdBRUVBTmdJUUlBQWdBVFlDQUF3REN5QUJFSU1NSUFJZ1xcXG5BUkNFRENBQ1FSQnFJQUlvQWdBZ0FpMEFCRUVCY1JDZEFTQUJJQUV0QUJoQkFXbzZBQmdnQWlBQkVNVURJZ00yQWtBQ1FBSkFJQUlvQWlcXFxuQWlCRVVOQUNBRFJRMEJJQUpCRUdvUTJnb2dBeUVFREFNTElBSW9BaEFoQkNBRFJRMENJQUpCd0FCcUVLOEpEQUlMSUFBZ0Fpa0NGRGNDXFxcbkJDQUFJQUlwQWlRM0FoUWdBRUVNYWlBQ1FSQnFRUXhxS0FJQU5nSUFJQUJCSEdvZ0FrRVFha0VjYWlrQ0FEY0NBQ0FBUVNScUlBSkJFR1xcXG5wQkpHb3BBZ0EzQWdBZ0FFRXNhaUFDUVJCcVFTeHFLQUlBTmdJQUlBSW9BaEFoQVNBQUlBUTJBaEFnQUNBQk5nSUFEQUlMSUFFZ0FrSElcXFxuQUdwQjdKM0FBQkI0SVFRTElBRWdCQkMrRFNFQklBQkJBRFlDRUNBQUlBRTJBZ0FMSUFKQjBBQnFKQUFMelFNQkEzOGpBRUhRQUdzaUFpXFxcblFBSUFJZ0FTZ0NBQ0lERUxvRUFrQUNRQ0FDTFFBQURRQUNRQ0FDTFFBQkRRQWdBa0VETmdJSUlBTWdBa0VJYWhEZENDRUJJQUJCQXpZQ1xcXG5BQ0FBSUFFMkFnUU1BZ3NDUUFKQUFrQWdBaTBBQWlJRVFTeEdEUUFDUUNBRVFmMEFSZzBBSUFFdEFBUU5BaUFDUVFnMkFnZ2dBeUFDUVFcXFxuaHFFTjBJSVFFZ0FFRUROZ0lBSUFBZ0FUWUNCQXdGQ3lBQVFRSTJBZ0FNQkFzZ0FTMEFCQTBBSUFNUWd3d2dBa0VJYWlBREVMb0VBa0FnXFxcbkFpMEFDRVVOQUNBQUlBSW9BZ3cyQWdRZ0FFRUROZ0lBREFRTEFrQWdBaTBBQ1VVTkFDQUNMUUFLSVFRTUFnc2dBa0VGTmdJSUlBTWdBa1xcXG5FSWFoRGRDQ0VCSUFCQkF6WUNBQ0FBSUFFMkFnUU1Bd3NnQVVFQU9nQUVDd0pBQWtBZ0JFSC9BWEVpQVVFaVJnMEFJQUZCL1FCR0RRRWdcXFxuQWtFUk5nSUlJQU1nQWtFSWFoRGRDQ0VCSUFCQkF6WUNBQ0FBSUFFMkFnUU1Bd3NnQWtFSWFpQURFTm9GQWtBZ0FpZ0NDRUVDUmcwQUlBXFxcbkFnQWtFSWFrSElBQkNrRFJvTUF3c2dBQ0FDS0FJTU5nSUVJQUJCQXpZQ0FBd0NDeUFDUVJVMkFnZ2dBeUFDUVFocUVOMElJUUVnQUVFRFxcXG5OZ0lBSUFBZ0FUWUNCQXdCQ3lBQUlBSW9BZ1EyQWdRZ0FFRUROZ0lBQ3lBQ1FkQUFhaVFBQzhFREFRRi9Jd0JCNEFCcklnSWtBQ0FDSUFcXFxuQW9BQUEyQWdRQ1FBSkFBa0FnQVNnQ0NDQUJLQUlBY2tVTkFDQUNRUUEyQWdnZ0FpQUNRUWhxTmdJY0lBSkJQR3BCckFJMkFnQWdBa0UwXFxcbmFrR3NBallDQUNBQ1FTeHFRYXdDTmdJQUlBSWdBa0VFYWtFRGNqWUNPQ0FDSUFKQkJHcEJBbkkyQWpBZ0FpQUNRUVJxUVFGeU5nSW9JQVxcXG5KQnJBSTJBaVFnQWlBQ1FRUnFOZ0lnSUFKQ0JEY0NUQ0FDUWV5WnpnQTJBa0FnQWlBQ1FTQnFOZ0pJSUFKQkJEWUNSQ0FDUVJ4cVFZeWFcXFxuemdBZ0FrSEFBR29RYlVVTkFVR2ttczRBUVNzZ0FrSFlBR3BCMEpyT0FFR0FtODRBRU1JRUFBc2dBa0U4YWtHc0FqWUNBQ0FDUVRScVFhXFxcbndDTmdJQUlBSkJMR3BCckFJMkFnQWdBa0dzQWpZQ0pDQUNJQUpCQkdwQkEzSTJBamdnQWlBQ1FRUnFRUUp5TmdJd0lBSWdBa0VFYWtFQlxcXG5jallDS0NBQlFSaHFLQUlBSVFBZ0FpQUNRUVJxTmdJZ0lBRW9BaFFoQVNBQ1FnUTNBa3dnQWtFRU5nSkVJQUpCN0puT0FEWUNRQ0FDSUFcXFxuSkJJR28yQWtnZ0FTQUFJQUpCd0FCcUVHMGhBUXdCQ3dKQUlBSW9BZ2dpQUVFUVR3MEFJQUVnQWtFSWFrRUVjaUFBRUZNaEFRd0JDeUFBXFxcblFROUJ1SnZPQUJDREJRQUxJQUpCNEFCcUpBQWdBUXZPQXdJQ2Z3RitJd0JCd0FGcklnTWtBQ0FESUFJNkFCUWdBeUFCTmdJUUlBTVEwQVxcXG5nZ0EwRThha0lBTndJQUlBTkJOR3BDZ0lDQWdNQUFOd0lBSUFOQkxHcENBRGNDQUNBRFFZQ0R3QUEyQWlnZ0F5QURLUU1JTndNZ0lBTWdcXFxuQXlrREFEY0RHQ0FEUWRRQWFpRUJBa0FDUUFKQUEwQWdBMEdRQVdvZ0EwRVFhaENrQVNBREtBS1VBU0VDSUFNb0FwQUJEUUVDUUFKQUlBXFxcbkpGRFFBZ0F5QURLUU9ZQVNJRk53S2tBU0FESUFJMkFxQUJJQU5Cc0FGcUlBTkJFR29RMVFrZ0F5Z0NzQUZGRFFFZ0EwSGdBR3BCQ0dvZ1xcXG5BMEd3QVdwQkNHb29BZ0EyQWdBZ0F5QURLUU93QVRjRFlBc2dBU0FES1FOZ053SUFJQUZCQ0dvaUJDQURRZUFBYWtFSWFpZ0NBRFlDQUNcXFxuQURJQVUzQWt3Z0F5QUNOZ0pJSUFKRkRRTWdBMEh3QUdwQkNHb2dBMEhJQUdwQkNHb29BZ0EyQWdBZ0EwR0FBV3BCQ0dvZ0JDZ0NBRFlDXFxcbkFDQURJQU1wQTBnM0EzQWdBeUFCS1FJQU53T0FBU0FEUVpBQmFpQURRUmhxSUFOQjhBQnFJQU5CZ0FGcUVPWUhJQU5Ca0FGcUVNd0xEQVxcXG5FTEN5QURLQUswQVNFQ0lBTkJvQUZxRU9NTUN5QUFRUUEyQWhBZ0FDQUNOZ0lBSUFOQkdHb1EyUW9NQVFzZ0EwSElBR29RMGdzZ0FDQURcXFxuUVJocVFUQVFwQTBhQ3lBRFFjQUJhaVFBQzVJRUFRRi9Jd0JCd0FGcklnRWtBQ0FCUWJ3QmFrRUVOZ0lBSUFGQnRBRnFRUVEyQWdBZ0FVXFxcbkdzQVdwQkJEWUNBQ0FCUWFRQmFrRUVOZ0lBSUFGQm5BRnFRUVEyQWdBZ0FVR1VBV3BCQkRZQ0FDQUJRWXdCYWtFRU5nSUFJQUZCaEFGcVxcXG5RUVEyQWdBZ0FVSDhBR3BCQkRZQ0FDQUJRZlFBYWtFRU5nSUFJQUZCN0FCcVFRUTJBZ0FnQVVIa0FHcEJCRFlDQUNBQlFkd0Fha0VFTmdcXFxuSUFJQUZCMUFCcVFRUTJBZ0FnQVVITUFHcEJCRFlDQUNBQlFjUUFha0VFTmdJQUlBRkJQR3BCQkRZQ0FDQUJRVFJxUVFRMkFnQWdBVUVzXFxcbmFrRUVOZ0lBSUFGQkpHcEJCRFlDQUNBQlFSeHFRUU0yQWdBZ0FVRVVha0VETmdJQUlBRkJER3BCQXpZQ0FDQUJRZkdsd0FBMkFyZ0JJQVxcXG5GQjdhWEFBRFlDc0FFZ0FVSHBwY0FBTmdLb0FTQUJRZVdsd0FBMkFxQUJJQUZCNGFYQUFEWUNtQUVnQVVIZHBjQUFOZ0tRQVNBQlFkbWxcXFxud0FBMkFvZ0JJQUZCMWFYQUFEWUNnQUVnQVVIUnBjQUFOZ0o0SUFGQnphWEFBRFlDY0NBQlFjbWx3QUEyQW1nZ0FVSEZwY0FBTmdKZ0lBXFxcbkZCd2FYQUFEWUNXQ0FCUWIybHdBQTJBbEFnQVVHNXBjQUFOZ0pJSUFGQnRhWEFBRFlDUUNBQlFiR2x3QUEyQWpnZ0FVR3RwY0FBTmdJd1xcXG5JQUZCcWFYQUFEWUNLQ0FCUWFXbHdBQTJBaUFnQVVHaXBjQUFOZ0lZSUFGQm42WEFBRFlDRUNBQlFaeWx3QUEyQWdnZ0FVRUROZ0lFSUFcXFxuRkI5YVhBQURZQ0FDQUFJQUVROWdNZ0FVSEFBV29rQUF1M0F3SUJmd0YrSXdCQm9BRnJJZ1FrQUNBRVFSQnFJQUVnQWtId284QUFRUTBRXFxcbjdnTWdCRUV3YWtFb2FpQURRU2hxS1FNQU53TUFJQVJCTUdwQklHb2dBMEVnYWlrREFEY0RBQ0FFUVRCcVFSaHFJQU5CR0dvcEF3QTNBd1xcXG5BZ0JFRXdha0U0YWlBRFFUaHFLQUlBTmdJQUlBUWdBeWtERURjRFFDQUVJQU1wQXpBM0EyQWdCQ0FES0FJSU5nSTRJQVFnQXlrREFEY0RcXFxuTUNBRVFRaHFRWUFCUVFBUTFRUWdCRUVBTmdLQUFTQUVJQVFwQXdnM0EzZ2dCRUdJQVdwQkJISVFqZ3NnQkNBRVFmZ0FhallDaUFFQ1FBXFxcbkpBQWtBQ1FDQUVRVEJxSUFSQmlBRnFFS29FSWdORkRRQWdCRUg0QUdvUTR3d01BUXNnQkNnQ2ZDRURJQVFvQW5naUFrVU5BQ0FFSUFRb1xcXG5Bb0FCSWdFMkFpZ2dCQ0FETmdJa0lBUWdBallDSUNBRVFUQnFFSjhMSUFSQk1Hb2dCQ0FFS0FJUUlBUW9BaGdnQWlBQkVJc0RBa0FDUUNcXFxuQUVMUUF3UVFSR0RRQWdCQ2tETUNJRlF2OEJnMElFVWcwQkN5QUVRU0JxRU9NTUlBUkJFR29RNHd4QkFDRUREQU1MSUFRZ0JUY0RjQ0FFXFxcblFmQUFhaEN3Q1NFRElBUkJJR29RNHd3TUFRc2dBeEMwRFNFRElBUkJNR29RbndzTElBUkJFR29RNHd3TElBUkJvQUZxSkFBZ0F3dkJBd1xcXG5FSWZ5TUFRZEFBYXlJREpBQUNRQUpBSUFGQkZVa05BQ0FEUVRCcUlBRkJBWFlRNXdnZ0F5QURLQUkwTmdJOElBTWdBeWdDTUNJRU5nSTRcXFxuSUFOQndBQnFFUGtKUVFBaEJRTkFBa0FnQlNBQlNRMEFJQU5Cd0FCcUVNc01JQU5CT0dvUXdBc01Bd3NnQTBFb2FpQUZJQUFnQVJESENDXFxcbkFEUVNCcUlBTW9BaWdnQXlnQ0xDQURFSklESUFNb0FpQWdCV29oQmdKQUlBTXRBQ1JCQVhGRkRRQWdBMEVZYWlBRklBWWdBQ0FCUWNpWlxcXG53UUFRN2dZZ0F5Z0NHQ0FES0FJY0VLRUNDeUFEUWNBQWFpQUFJQUVnQlNBR0lBSVFrd1FpQnlBRmF5QUZFTWNFQTBBZ0EwRVFhaUFES0FcXFxuSkFJQU1vQWtnZ0FSRGFBaUFES0FJVUlRVUNRQ0FES0FJUVFRRkdEUUFnQnlFRkRBSUxJQU5Cd0FCcUlBVkIySm5CQUJEbEJTSUlLQUlBXFxcbklRWWdBMEVJYWlBSUtBSUVJZ2dnQTBIQUFHb2dCVUVCYWlJSlFlaVp3UUFRNVFVaUNpZ0NCQ0FLS0FJQUlncHFJQUFnQVVING1jRUFFT1xcXG40R0lBTW9BZ2dnQXlnQ0RDQUdJQVFnQXhDS0FpQURRY0FBYWlBSlFZaWF3UUFRNVFVaUNTQUlOZ0lFSUFrZ0NpQUdhallDQUNBRFFjQUFcXFxuYWlBRkVNRUVEQUFMQ3dzZ0FVRUNTUTBBSUFBZ0FVRUJJQU1RNWdRTElBTkIwQUJxSkFBTDBBTUJCSDhqQUVFd2F5SUNKQUFDUUFKQUFrXFxcbkFDUUFKQUFrQWdBQ2dDQkNJRERnTUFBd0lCQzBHVzNjMEFRUTVCcE4zTkFCRGZDUUFMSUFKQkpHcENBRGNDQUVFQklRUWdBa0VCTmdJY1xcXG5JQUpCZ056TkFEWUNHQ0FDUWZUWXpRQTJBaUFnQVNBQ1FSaHFFSzBGUlEwQ0RBTUxJQUpCREdwQjdBRTJBZ0FnQWtFWWFrRU1ha0lDTndcXFxuSUFJQUpCQXpZQ0hDQUNRYXpjelFBMkFoZ2dBa0hzQVRZQ0JDQUNJQUFvQWdBaUF6WUNBQ0FDSUFOQkNHbzJBZ2dnQWlBQ05nSWdJQUVnXFxcbkFrRVlhaEN0QlNFRURBSUxJQUpCSkdwQ0FUY0NBQ0FDUVFJMkFod2dBa0dVM00wQU5nSVlJQUpCN0FFMkFnUWdBaUFBS0FJQU5nSUFJQVxcXG5JZ0FqWUNJQ0FCSUFKQkdHb1FyUVVoQkF3QkN5QURRUU4wSVFNZ0FDZ0NBQ0VBUVFBaEJFRUFJUVVEUUNBRFJRMEJJQUlnQURZQ0ZBSkFcXFxuQWtBZ0JVVU5BQ0FDUVFFMkFod2dBa0dNM00wQU5nSVlJQUpDQURjQ0pDQUNRZlRZelFBMkFpQWdBU0FDUVJocUVLMEZEUUVMSUFKQkFqXFxcbllDSENBQ1FaVGN6UUEyQWhnZ0FrSUJOd0lrSUFKQkFqWUNCQ0FDSUFJMkFpQWdBaUFDUVJScU5nSUFJQUVnQWtFWWFoQ3RCUTBBSUFCQlxcXG5DR29oQUNBRlFYOXFJUVVnQTBGNGFpRUREQUVMQzBFQklRUUxJQUpCTUdva0FDQUVDOEVEQWdKL0FYNGpBRUh3QUdzaUFpUUFJQUpCS0dcXFxub2dBQ2dDQUNJRElBTW9BZ0FvQWdRUkJRQWdBa0hjQUdwQ0FUY0NBQ0FDUWZFQk5nSnNRUUVoQUNBQ1FRRTJBbFFnQWtIODNjMEFOZ0pRXFxcbklBSWdBaWtES0RjRE1DQUNJQUpCTUdvMkFtZ2dBaUFDUWVnQWFqWUNXQUpBSUFFZ0FrSFFBR29RclFVTkFFRUFJUUFnQVJDckRFVU5BQ1xcXG5BQ1FTQnFJQU1nQXlnQ0FDZ0NCQkVGQUNBQ0tRTWdJUVFnQWtFQk5nSkFJQUlnQkRjQ05DQUNRUUEyQWpCQkFTRUFBMEFDUUFKQUlBQU5cXFxuQUNBQ1FRaHFJQUpCTUdvUXNBUWdBaWdDRENFRElBSW9BZ2doQUF3QkN5QUNRUUEyQWtBZ0FFRUJhaUVBQWtBRFFDQUFRWDlxSWdCRkRRXFxcbkVnQWtFWWFpQUNRVEJxRUxBRUlBSW9BaGdOQUF0QkFDRUFEQUVMSUFKQkVHb2dBa0V3YWhDd0JDQUNLQUlVSVFNZ0FpZ0NFQ0VBQ3dKQVxcXG5JQUFOQUNBQ1FUQnFFT0VMUVFBaEFBd0NDeUFDSUFBMkFrZ2dBaUFETmdKTUlBSkJBVFlDVkNBQ1FaVGZ6UUEyQWxBZ0FrSUJOd0pjSUFcXFxuSkI4UUUyQW13Z0FpQUNRZWdBYWpZQ1dDQUNJQUpCeUFCcU5nSm9Ba0FnQVNBQ1FkQUFhaEN0QlEwQUlBSW9Ba0FoQUF3QkN3c2dBa0V3XFxcbmFoRGhDMEVCSVFBTElBSkI4QUJxSkFBZ0FBdU9Bd0VFZndKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQnlBSVdBMEFJQWNnQ0gwZ0NGZ05BUVxcXG5KQUlBY2dCbjBnQmxnTkFDQUhJQVpDQVlaOUlBaENBWVphRFFNTEFrQWdCaUFJV0EwQUlBY2dCaUFJZlNJSWZTQUlXQTBFQ3lBQVFRQTJcXFxuQWdBUEN5QUFRUUEyQWdBUEN5QUFRUUEyQWdBUEN5QURJQUpMRFFFTUJBc2dBeUFDU3cwQklBRWdBMm9oQ1VFQUlRb2dBU0VMQWtBRFFDXFxcbkFESUFwR0RRRWdDa0VCYWlFS0lBdEJmMm9pQ3lBRGFpSU1MUUFBUVRsR0RRQUxJQXdnREMwQUFFRUJham9BQUNBRElBcHJRUUZxSUFOUFxcXG5EUU1nREVFQmFrRXdJQXBCZjJvUW9RMGFEQU1MQWtBQ1FDQUREUUJCTVNFS0RBRUxJQUZCTVRvQUFFRXdJUW9nQTBFQlJnMEFRVEFoQ2lcXFxuQUJRUUZxUVRBZ0EwRi9haENoRFJvTElBUkJBV3JCSVFRZ0F5QUNUdzBDSUFRZ0JjRk1EUUlnQ1NBS09nQUFJQU5CQVdvaEF3d0NDeUFEXFxcbklBSkJsSmJPQUJDREJRQUxJQU1nQWtHa2xzNEFFSU1GQUFzZ0F5QUNUUTBBSUFNZ0FrRzBsczRBRUlNRkFBc2dBQ0FFT3dFSUlBQWdBelxcXG5ZQ0JDQUFJQUUyQWdBTHVBTUJBMzhqQUVFZ2F5SUNKQUFnQWtFSWFpQUJLQUlBSWdNUXRnUUNRQUpBSUFJdEFBZ05BQUpBSUFJdEFBa05cXFxuQUNBQ1FRSTJBaEFnQXlBQ1FSQnFFTTRJSVFFZ0FFRUJOZ0lBSUFBZ0FUWUNCQXdDQ3dKQUFrQUNRQ0FDTFFBS0lnUkJMRVlOQUFKQUlBXFxcblJCM1FCR0RRQWdBUzBBQkEwQ0lBSkJCellDRUNBRElBSkJFR29RemdnaEFTQUFRUUUyQWdBZ0FDQUJOZ0lFREFVTElBQkNBRGNDQUF3RVxcXG5DeUFCTFFBRURRQWdBeUFES0FJSVFRRnFOZ0lJSUFKQkVHb2dBeEMyQkFKQUlBSXRBQkJGRFFBZ0FDQUNLQUlVTmdJRUlBQkJBVFlDQUFcXFxud0VDd0pBSUFJdEFCRkZEUUFnQWkwQUVpRUVEQUlMSUFKQkJUWUNFQ0FESUFKQkVHb1F6Z2doQVNBQVFRRTJBZ0FnQUNBQk5nSUVEQU1MXFxcbklBRkJBRG9BQkFzQ1FDQUVRZjhCY1VIZEFFY05BQ0FDUVJVMkFoQWdBeUFDUVJCcUVNNElJUUVnQUVFQk5nSUFJQUFnQVRZQ0JBd0NDeVxcXG5BQ1FSQnFJQU1RbXdJQ1FDQUNLQUlRUlEwQUlBQWdBaWtERURjQ0JDQUFRUUEyQWdBZ0FFRU1haUFDUVJocUtBSUFOZ0lBREFJTElBQWdcXFxuQWlnQ0ZEWUNCQ0FBUVFFMkFnQU1BUXNnQUNBQ0tBSU1OZ0lFSUFCQkFUWUNBQXNnQWtFZ2FpUUFDNDBEQVFwL0l3QkJJR3NpQXlRQUlBXFxcbk5CQURZQ0dDQURJQUUyQWhBZ0F5QUJOZ0lJSUFNZ0FqWUNEQ0FESUFFZ0Ftb2lCRFlDRkNBRFFSQnFJUVVnQVNFR0FrQURRQ0FESUFVUVxcXG5qQUlnQXlnQ0dDRUhBa0FDUUNBREtBSUFSUTBBSUFNb0FnUWlDRUdBZ01RQVJ3MEJDMEVBSVFrZ0F5Z0NGQ0VDSUFNb0FoQWhCaUFISVFcXFxucEJBQ0VIREFJTElBTWdCeUFFYWlBR0lBTW9BaFFpQW1wcklBTW9BaEFpQm1vaUNqWUNHQ0FDSVFRZ0NpRUpJQWdRNUFNTkFBc0xBa0FEXFxcblFDQUdJQUlpQkVZTkFRSkFJQVJCZjJvaUFpMEFBQ0lJd0NJRlFYOUtEUUFDUUFKQUlBUkJmbW9pQWkwQUFDSUl3Q0lMUVVCSURRQWdDRVxcXG5FZmNTRUlEQUVMQWtBQ1FDQUVRWDFxSWdJdEFBQWlDTUFpREVGQVNBMEFJQWhCRDNFaENBd0JDeUFFUVh4cUlnSXRBQUJCQjNGQkJuUWdcXFxuREVFL2NYSWhDQXNnQ0VFR2RDQUxRVDl4Y2lFSUN5QUlRUVowSUFWQlAzRnlJZ2hCZ0lERUFFWU5BZ3NnQ0JEa0F3MEFDeUFLSUFacklBXFxcblJxSVFrTElBQWdDU0FIYXpZQ0JDQUFJQUVnQjJvMkFnQWdBMEVnYWlRQUM3SURBUU4vSXdCQndBQnJJZ0lrQUNBQ1FRaHFJQUVvQWdBaVxcXG5BeEM2QkFKQUFrQWdBaTBBQ0EwQUFrQWdBaTBBQ1EwQUlBSkJBallDRUNBRElBSkJFR29RM1FnaEFTQUFRUUUyQWdBZ0FDQUJOZ0lFREFcXFxuSUxBa0FDUUFKQUlBSXRBQW9pQkVFc1JnMEFBa0FnQkVIZEFFWU5BQ0FCTFFBRURRSWdBa0VITmdJUUlBTWdBa0VRYWhEZENDRUJJQUJCXFxcbkFUWUNBQ0FBSUFFMkFnUU1CUXNnQUVFQU5nSUFJQUJCR0dwQkFEWUNBQXdFQ3lBQkxRQUVEUUFnQXhDRERDQUNRUkJxSUFNUXVnUUNRQ1xcXG5BQ0xRQVFSUTBBSUFBZ0FpZ0NGRFlDQkNBQVFRRTJBZ0FNQkFzQ1FDQUNMUUFSUlEwQUlBSXRBQkloQkF3Q0N5QUNRUVUyQWhBZ0F5QUNcXFxuUVJCcUVOMElJUUVnQUVFQk5nSUFJQUFnQVRZQ0JBd0RDeUFCUVFBNkFBUUxBa0FnQkVIL0FYRkIzUUJIRFFBZ0FrRVZOZ0lRSUFNZ0FrXFxcbkVRYWhEZENDRUJJQUJCQVRZQ0FDQUFJQUUyQWdRTUFnc2dBa0VRYWlBREVLNEJBa0FnQWlnQ0lFVU5BQ0FBUVFocUlBSkJFR3BCTUJDa1xcXG5EUm9nQUVFQU5nSUFEQUlMSUFBZ0FpZ0NFRFlDQkNBQVFRRTJBZ0FNQVFzZ0FDQUNLQUlNTmdJRUlBQkJBVFlDQUFzZ0FrSEFBR29rQUFcXFxudXlBd0VEZnlNQVFjQUFheUlDSkFBZ0FrRUlhaUFCS0FJQUlnTVF1Z1FDUUFKQUlBSXRBQWdOQUFKQUlBSXRBQWtOQUNBQ1FRSTJBaEFnXFxcbkF5QUNRUkJxRU4wSUlRRWdBRUVCTmdJQUlBQWdBVFlDQkF3Q0N3SkFBa0FDUUNBQ0xRQUtJZ1JCTEVZTkFBSkFJQVJCM1FCR0RRQWdBU1xcXG4wQUJBMENJQUpCQnpZQ0VDQURJQUpCRUdvUTNRZ2hBU0FBUVFFMkFnQWdBQ0FCTmdJRURBVUxJQUJCQURZQ0FDQUFRUmhxUVFBMkFnQU1cXFxuQkFzZ0FTMEFCQTBBSUFNUWd3d2dBa0VRYWlBREVMb0VBa0FnQWkwQUVFVU5BQ0FBSUFJb0FoUTJBZ1FnQUVFQk5nSUFEQVFMQWtBZ0FpXFxcbjBBRVVVTkFDQUNMUUFTSVFRTUFnc2dBa0VGTmdJUUlBTWdBa0VRYWhEZENDRUJJQUJCQVRZQ0FDQUFJQUUyQWdRTUF3c2dBVUVBT2dBRVxcXG5Dd0pBSUFSQi93RnhRZDBBUncwQUlBSkJGVFlDRUNBRElBSkJFR29RM1FnaEFTQUFRUUUyQWdBZ0FDQUJOZ0lFREFJTElBSkJFR29nQXhcXFxuQ3NBUUpBSUFJb0FpQkZEUUFnQUVFSWFpQUNRUkJxUVRBUXBBMGFJQUJCQURZQ0FBd0NDeUFBSUFJb0FoQTJBZ1FnQUVFQk5nSUFEQUVMXFxcbklBQWdBaWdDRERZQ0JDQUFRUUUyQWdBTElBSkJ3QUJxSkFBTHNnTUJBMzhqQUVIQUFHc2lBaVFBSUFKQkNHb2dBU2dDQUNJREVMb0VBa1xcXG5BQ1FDQUNMUUFJRFFBQ1FDQUNMUUFKRFFBZ0FrRUNOZ0lRSUFNZ0FrRVFhaERkQ0NFQklBQkJBVFlDQUNBQUlBRTJBZ1FNQWdzQ1FBSkFcXFxuQWtBZ0FpMEFDaUlFUVN4R0RRQUNRQ0FFUWQwQVJnMEFJQUV0QUFRTkFpQUNRUWMyQWhBZ0F5QUNRUkJxRU4wSUlRRWdBRUVCTmdJQUlBXFxcbkFnQVRZQ0JBd0ZDeUFBUVFBMkFnQWdBRUVZYWtFQU5nSUFEQVFMSUFFdEFBUU5BQ0FERUlNTUlBSkJFR29nQXhDNkJBSkFJQUl0QUJCRlxcXG5EUUFnQUNBQ0tBSVVOZ0lFSUFCQkFUWUNBQXdFQ3dKQUlBSXRBQkZGRFFBZ0FpMEFFaUVFREFJTElBSkJCVFlDRUNBRElBSkJFR29RM1FcXFxuZ2hBU0FBUVFFMkFnQWdBQ0FCTmdJRURBTUxJQUZCQURvQUJBc0NRQ0FFUWY4QmNVSGRBRWNOQUNBQ1FSVTJBaEFnQXlBQ1FSQnFFTjBJXFxcbklRRWdBRUVCTmdJQUlBQWdBVFlDQkF3Q0N5QUNRUkJxSUFNUXJRRUNRQ0FDS0FJZ1JRMEFJQUJCQ0dvZ0FrRVFha0V3RUtRTkdpQUFRUVxcXG5BMkFnQU1BZ3NnQUNBQ0tBSVFOZ0lFSUFCQkFUWUNBQXdCQ3lBQUlBSW9BZ3cyQWdRZ0FFRUJOZ0lBQ3lBQ1FjQUFhaVFBQzZ3REFBSkFcXFxuQWtBQ1FBSkFBa0FnQWtVTkFDQUJMUUFBUVRGSkRRRWdCa0VFU1EwQ0lBVkJBanNCQUFKQUFrQWdBOEVpQmtFQlNBMEFJQVVnQVRZQ0JDXFxcbkFEUWYvL0EzRWlBeUFDVHcwQklBVkJBanNCR0NBRlFRSTdBUXdnQlNBRE5nSUlJQVZCSUdvZ0FpQURheUlDTmdJQUlBVkJIR29nQVNBRFxcXG5hallDQUNBRlFSUnFRUUUyQWdBZ0JVRVFha0hpbDg0QU5nSUFRUU1oQVNBQ0lBUlBEUVlnQkNBQ2F5RUVEQVVMSUFWQkFqc0JHQ0FGUVFcXFxuQTdBUXdnQlVFQ05nSUlJQVZCNEpmT0FEWUNCQ0FGUVNCcUlBSTJBZ0FnQlVFY2FpQUJOZ0lBSUFWQkVHcEJBQ0FHYXlJRE5nSUFRUU1oXFxcbkFTQUVJQUpORFFVZ0JDQUNheUlDSUFOTkRRVWdBaUFHYWlFRURBUUxJQVZCQURzQkRDQUZJQUkyQWdnZ0JVRVFhaUFESUFKck5nSUFBa1xcXG5BZ0JBMEFRUUloQVF3RkN5QUZRUUk3QVJnZ0JVRWdha0VCTmdJQUlBVkJIR3BCNHBmT0FEWUNBQXdEQzBHY2xNNEFRU0ZCNkpiT0FCQ0RcXFxuQndBTFFmaVd6Z0JCSVVHY2w4NEFFSU1IQUF0QnJKZk9BRUVpUWRDWHpnQVFnd2NBQ3lBRlFRQTdBU1FnQlVFb2FpQUVOZ0lBUVFRaEFRXFxcbnNnQUNBQk5nSUVJQUFnQlRZQ0FBdUZBd0VHZndKQVFSQkJDQkNjQ3lBQVRRMEFRUkJCQ0JDY0N5RUFDeENLRGlJQ1FRZ1FuQXNoQTBFVVxcXG5RUWdRbkFzaEJFRVFRUWdRbkFzaEJVRUFJUVlDUUVFQVFSQkJDQkNjQzBFQ2RHc2lCeUFDSUFVZ0F5QUVhbXByUWZqL2UycEJkM0ZCZldcXFxub2lBaUFISUFKSkd5QUFheUFCVFEwQUlBQkJFQ0FCUVFScVFSQkJDQkNjQzBGN2FpQUJTeHRCQ0JDY0N5SURha0VRUVFnUW5BdHFRWHhxXFxcbkVDNGlBa1VOQUNBQ0VORU5JUUVDUUFKQUlBQkJmMm9pQmlBQ2NRMEFJQUVoQUF3QkN5QUdJQUpxUVFBZ0FHdHhFTkVOSVFaQkVFRUlFSlxcXG53TElRSWdBUkNWRFNBR1FRQWdBQ0FHSUFGcklBSkxHMm9pQUNBQmF5SUdheUVDQWtBZ0FSRFVEQTBBSUFBZ0FoQzdDU0FCSUFZUXV3a2dcXFxuQVNBR0VId01BUXNnQVNnQ0FDRUJJQUFnQWpZQ0JDQUFJQUVnQm1vMkFnQUxBa0FnQUJEVURBMEFJQUFRbFEwaUFVRVFRUWdRbkFzZ0EyXFxcbnBORFFBZ0FDQURFTTROSVFZZ0FDQURFTHNKSUFZZ0FTQURheUlCRUxzSklBWWdBUkI4Q3lBQUVOQU5JUVlnQUJEVURCb0xJQVlMamdNQlxcXG5CMzhqQUVFd2F5SURKQUFnQTBFSWFpQUFLQUlBSWdRZ0FDZ0NDQ0lGRU9nQkFrQWdBeWdDQ0NJR1JRMEFBa0FnQlNBR0lBTW9BZ3hxSUFcXFxuUnJJZ2RKRFFBZ0FDQUhOZ0lJSUFjaEJRc2dBa1VOQUFKQUlBQkJCR29vQWdBaUJ5QUZheUFDUVFGcUlnaFBEUUFDUUNBRklBaHFJZ2dnXFxcbkJVa05BQ0FJUVg5elFSOTJJUWtDUUFKQUlBZEZEUUFnQXlBSE5nSW9JQU5CQVRZQ0pDQURJQVEyQWlBTUFRc2dBMEVBTmdJa0N5QURRUlxcXG5CcUlBa2dDQ0FEUVNCcUVJSURJQU1vQWhRaENRSkFJQU1vQWhBTkFDQUFJQWsyQWdBZ0FFRUVhaUFJTmdJQUlBa2hCQ0FJSVFjTUFnc2dcXFxuQ1VHQmdJQ0FlRVlOQVNBSlJRMEFJQWtnQTBFWWFpZ0NBQkNhRFFBTEVKY0lBQXNDUUNBRklBZEhEUUFnQUNBRkVQRUNJQUFvQWdBaEJDXFxcbkFBS0FJSUlRVUxJQVFnQldwQkxqb0FBQ0FBSUFWQkFXb2lCVFlDQ0FKQUlBQkJCR29vQWdBZ0JXc2dBazhOQUNBQUlBVWdBaER0QWlBQVxcXG5LQUlJSVFVTElBQW9BZ0FnQldvZ0FTQUNFS1FOR2lBQUlBVWdBbW8yQWdnTElBTkJNR29rQUNBR1FRQkhDOUFEQVFOL0l3QkJJR3NpQWlcXFxuUUFJQUpCQ0dvZ0FTZ0NBQ0lERUxZRUFrQUNRQ0FDTFFBSURRQUNRQ0FDTFFBSkRRQWdBa0VDTmdJUUlBTWdBa0VRYWhET0NDRUJJQUJCXFxcbmdwVHIzQU0yQWdnZ0FDQUJOZ0lBREFJTEFrQUNRQUpBSUFJdEFBb2lCRUVzUmcwQUFrQWdCRUhkQUVZTkFDQUJMUUFFRFFJZ0FrRUhOZ1xcXG5JUUlBTWdBa0VRYWhET0NDRUJJQUJCZ3BUcjNBTTJBZ2dnQUNBQk5nSUFEQVVMSUFCQmdaVHIzQU0yQWdnTUJBc2dBUzBBQkEwQUlBTWdcXFxuQXlnQ0NFRUJhallDQ0NBQ1FSQnFJQU1RdGdRQ1FDQUNMUUFRUlEwQUlBQkJncFRyM0FNMkFnZ2dBQ0FDS0FJVU5nSUFEQVFMQWtBZ0FpXFxcbjBBRVVVTkFDQUNMUUFTSVFRTUFnc2dBa0VGTmdJUUlBTWdBa0VRYWhET0NDRUJJQUJCZ3BUcjNBTTJBZ2dnQUNBQk5nSUFEQU1MSUFGQlxcXG5BRG9BQkFzQ1FDQUVRZjhCY1VIZEFFY05BQ0FDUVJVMkFoQWdBeUFDUVJCcUVNNElJUUVnQUVHQ2xPdmNBellDQ0NBQUlBRTJBZ0FNQWdcXFxuc2dBa0VRYWlBREVLOERBa0FnQWlnQ0dDSUJRWUdVNjl3RFJnMEFJQUFnQVRZQ0NDQUFJQUlwQXhBM0F3QU1BZ3NnQUVHQ2xPdmNBellDXFxcbkNDQUFJQUlvQWhBMkFnQU1BUXNnQUVHQ2xPdmNBellDQ0NBQUlBSW9BZ3cyQWdBTElBSkJJR29rQUF1eEF3RUJmeU1BUWZBQWF5SUhKQVxcXG5BZ0J5QUNOZ0lNSUFjZ0FUWUNDQ0FISUFRMkFoUWdCeUFETmdJUUFrQUNRQUpBQWtBZ0FFSC9BWEVPQXdBQkFnQUxJQWRCK1p6T0FEWUNcXFxuR0VFQ0lRSU1BZ3NnQjBIM25NNEFOZ0lZUVFJaEFnd0JDeUFIUWZDY3pnQTJBaGhCQnlFQ0N5QUhJQUkyQWh3Q1FDQUZLQUlBRFFBZ0IwXFxcbkhNQUdwQnJRSTJBZ0FnQjBFNGFrRU1ha0d0QWpZQ0FDQUhRZGdBYWtFTWFrSUROd0lBSUFkQkJEWUNYQ0FIUWR5ZHpnQTJBbGdnQjBHdVxcXG5BallDUENBSElBZEJPR28yQW1BZ0J5QUhRUkJxTmdKSUlBY2dCMEVJYWpZQ1FDQUhJQWRCR0dvMkFqZ2dCMEhZQUdvZ0JoQ1lDQUFMSUFcXFxuZEJJR3BCRUdvZ0JVRVFhaWtDQURjREFDQUhRU0JxUVFocUlBVkJDR29wQWdBM0F3QWdCeUFGS1FJQU53TWdJQWRCMkFCcVFReHFRZ1EzXFxcbkFnQWdCMEhVQUdwQnNRSTJBZ0FnQjBITUFHcEJyUUkyQWdBZ0IwRTRha0VNYWtHdEFqWUNBQ0FIUVFRMkFsd2dCMEc0bmM0QU5nSllJQVxcXG5kQnJnSTJBandnQnlBSFFUaHFOZ0pnSUFjZ0IwRWdhallDVUNBSElBZEJFR28yQWtnZ0J5QUhRUWhxTmdKQUlBY2dCMEVZYWpZQ09DQUhcXFxuUWRnQWFpQUdFSmdJQUF1Z0F3RURmeU1BUWZBQWF5SURKQUFnQXlBQ0tBSU1JZ1EyQWpnZ0F5QUNLQUlBSWdVMkFqQWdBeUFGUVFocU5nXFxcbklvSUFNZ0JTQUNLQUlFYWtFQmFqWUNMQ0FESUFVcEF3QkNmNFZDZ0lHQ2hJaVFvTUNBZjRNM0F5QWdBMEhZQUdvZ0FVRUJJQVFRdFF3Q1xcXG5RQUpBQWtBQ1FDQURLQUpZUVFKR0RRQWdBMEhBQUdwQkVHb2dBMEhZQUdwQkVHb29BZ0EyQWdBZ0EwSEFBR3BCQ0dvZ0EwSFlBR3BCQ0dcXFxub3BBd0EzQXdBZ0F5QURLUU5ZTndOQUEwQWdBMEVZYWlBRFFTQnFFT1FKSUFNb0FoZ2lBa1VOQXlBREtBSWNJUVVnQXlBQ05nSnNJQU1nXFxcbkJUWUNXQ0FEUVJCcUlBTkJ3QUJxSUFOQjdBQnFJQU5CMkFCcUVOc0ZJQU1vQWhCRkRRQUxJQU1vQWhRaEFpQURRY0FBYWtFRWNoQ0VDeVxcXG5BRFFjZ0FhaENHQ3d3QkN5QURLQUpjSVFJTFFRRWhCUXdCQ3lBRFFkZ0Fha0VRYWlBRFFjQUFha0VRYWlnQ0FEWUNBQ0FEUWRnQWFrRUlcXFxuYWlBRFFjQUFha0VJYWlrREFEY0RBQ0FESUFNcEEwQTNBMWdnQTBFSWFpQURRZGdBYWhEQ0NTQURLQUlNSVFJZ0F5Z0NDQ0VGQ3lBQUlBXFxcbkkyQWdRZ0FDQUZOZ0lBSUFOQjhBQnFKQUFMbXdNQkFuOGpBRUhRQUdzaUFpUUFJQUpCQ0dvZ0FSQzJCQUpBQWtBQ1FBSkFJQUl0QUFnTlxcXG5BQ0FDTFFBSkRRSWdBa0VGTmdJb0lBRWdBa0VvYWhET0NDRUJEQUVMSUFJb0Fnd2hBUXNnQUVFQk5nSUFJQUFnQVRZQ0JBd0JDd0pBQWtcXFxuQUNRQUpBQWtBQ1FDQUNMUUFLSWdOQi93RnhRUzFIRFFBZ0FTQUJLQUlJUVFGcU5nSUlJQUpCS0dvZ0FVRUFFSm9CSUFJcEF5aENBMUVOXFxcbkF5QUNRUmhxUVFocUlBSkJLR3BCQ0dvcEF3QTNBd0FnQWlBQ0tRTW9Od01ZSUFKQkNHb2dBa0VZYWhDb0JBd0JDd0pBSUFOQlVHcEIvd1xcXG5GeFFRcEpEUUFnQWlBQklBSkJ5QUJxUWJpQndBQVFhRFlDREF3RUN5QUNRU2hxSUFGQkFSQ2FBU0FDS1FNb1FnTlJEUUVnQWtFNGFrRUlcXFxuYWlBQ1FTaHFRUWhxS1FNQU53TUFJQUlnQWlrREtEY0RPQ0FDUVFocUlBSkJPR29RcUFRTElBSW9BZ2dOQWlBQUlBSXBBeEEzQXdoQkFDXFxcbkVCREFNTElBQWdBaWdDTURZQ0JDQUFRUUUyQWdBTUF3c2dBQ0FDS0FJd05nSUVJQUJCQVRZQ0FBd0NDeUFBSUFJb0Fnd2dBUkNwQmpZQ1xcXG5CRUVCSVFFTElBQWdBVFlDQUFzZ0FrSFFBR29rQUF1bkF3RURmeU1BUVNCcklnSWtBQ0FDUVFocUlBRW9BZ0FpQXhDMkJBSkFBa0FnQWlcXFxuMEFDQTBBQWtBZ0FpMEFDUTBBSUFKQkFqWUNFQ0FESUFKQkVHb1F6Z2doQVNBQVFnSTNBd0FnQUNBQk5nSUlEQUlMQWtBQ1FBSkFJQUl0XFxcbkFBb2lCRUVzUmcwQUFrQWdCRUhkQUVZTkFDQUJMUUFFRFFJZ0FrRUhOZ0lRSUFNZ0FrRVFhaERPQ0NFQklBQkNBamNEQUNBQUlBRTJBZ1xcXG5nTUJRc2dBRUlBTndNQURBUUxJQUV0QUFRTkFDQURJQU1vQWdoQkFXbzJBZ2dnQWtFUWFpQURFTFlFQWtBZ0FpMEFFRVVOQUNBQUlBSW9cXFxuQWhRMkFnZ2dBRUlDTndNQURBUUxBa0FnQWkwQUVVVU5BQ0FDTFFBU0lRUU1BZ3NnQWtFRk5nSVFJQU1nQWtFUWFoRE9DQ0VCSUFCQ0FqXFxcbmNEQUNBQUlBRTJBZ2dNQXdzZ0FVRUFPZ0FFQ3dKQUlBUkIvd0Z4UWQwQVJ3MEFJQUpCRlRZQ0VDQURJQUpCRUdvUXpnZ2hBU0FBUWdJM1xcXG5Bd0FnQUNBQk5nSUlEQUlMSUFKQkVHb2dBeEREQVFKQUlBSW9BaEFOQUNBQUlBSXBBeGczQXdnZ0FFSUJOd01BREFJTElBQWdBaWdDRkRcXFxuWUNDQ0FBUWdJM0F3QU1BUXNnQUNBQ0tBSU1OZ0lJSUFCQ0FqY0RBQXNnQWtFZ2FpUUFDNmNEQVFOL0l3QkJJR3NpQWlRQUlBSkJDR29nXFxcbkFTZ0NBQ0lERUxZRUFrQUNRQ0FDTFFBSURRQUNRQ0FDTFFBSkRRQWdBa0VDTmdJUUlBTWdBa0VRYWhET0NDRUJJQUJCQWpZQ0FDQUFJQVxcXG5FMkFnUU1BZ3NDUUFKQUFrQWdBaTBBQ2lJRVFTeEdEUUFDUUNBRVFkMEFSZzBBSUFFdEFBUU5BaUFDUVFjMkFoQWdBeUFDUVJCcUVNNElcXFxuSVFFZ0FFRUNOZ0lBSUFBZ0FUWUNCQXdGQ3lBQVFRQTJBZ0FNQkFzZ0FTMEFCQTBBSUFNZ0F5Z0NDRUVCYWpZQ0NDQUNRUkJxSUFNUXRnXFxcblFDUUNBQ0xRQVFSUTBBSUFBZ0FpZ0NGRFlDQkNBQVFRSTJBZ0FNQkFzQ1FDQUNMUUFSUlEwQUlBSXRBQkloQkF3Q0N5QUNRUVUyQWhBZ1xcXG5BeUFDUVJCcUVNNElJUUVnQUVFQ05nSUFJQUFnQVRZQ0JBd0RDeUFCUVFBNkFBUUxBa0FnQkVIL0FYRkIzUUJIRFFBZ0FrRVZOZ0lRSUFcXFxuTWdBa0VRYWhET0NDRUJJQUJCQWpZQ0FDQUFJQUUyQWdRTUFnc2dBa0VRYWlBREVNOEJBa0FnQWlnQ0VBMEFJQUFnQWlnQ0ZEWUNCQ0FBXFxcblFRRTJBZ0FNQWdzZ0FDQUNLQUlVTmdJRUlBQkJBallDQUF3QkN5QUFJQUlvQWd3MkFnUWdBRUVDTmdJQUN5QUNRU0JxSkFBTG9BTUJCM1xcXG44akFFRXdheUlESkFBQ1FBSkFBa0FEUUNBQktBSUlJZ1FnQVNnQ0JDSUZJQVFnQlVzYklRWWdBU2dDQUNFSElBUWhDQUpBQWtBRFFDQUdcXFxuSUFoR0RRRWdCeUFJYWkwQUFDSUpRY3pWd0FCcUxRQUFEUUlnQVNBSVFRRnFJZ2cyQWdnTUFBc0xJQVVnQkVrTkJDQURRUVEyQWlBZ0FDXFxcbkFCSUFOQklHb1F5Z2NNQXdzQ1FDQUpRZHdBUmcwQUlBbEJJa1lOQWlBQklBaEJBV28yQWdnZ0EwRVFOZ0lnSUFBZ0FTQURRU0JxRU1vSFxcXG5EQU1MSUFOQkdHb2dCQ0FJSUFjZ0JVSDgxTUFBRUpRSElBSWdBeWdDR0NBREtBSWNFSUVNSUFFZ0NFRUJhallDQ0NBQlFRRWdBaEJtSWdcXFxuaEZEUUFMSUFCQkFqWUNBQ0FBSUFnMkFnUU1BUXNDUUNBQ0tBSUlSUTBBSUFOQkVHb2dCQ0FJSUFjZ0JVR2MxY0FBRUpRSElBSWdBeWdDXFxcbkVDQURLQUlVRUlFTUlBRWdDRUVCYWpZQ0NDQUFRUUUyQWdBZ0FDQUNLQUlJTmdJSUlBQWdBaWdDQURZQ0JBd0JDeUFEUVFocUlBUWdDQ1xcXG5BSElBVkJqTlhBQUJDVUJ5QUFJQU1wQXdnM0FnUWdBU0FJUVFGcU5nSUlJQUJCQURZQ0FBc2dBMEV3YWlRQUR3c2dCaUFGUWV6VXdBQVFcXFxuZ1FVQUM1UURBUTEvSXdCQndBQnJJZ0lrQUFKQUEwQWdBaUFBRURnQ1FBSkFBa0FnQWkwQUFDSURRUXBHRFFBZ0FpZ0NFQ0VFSUFJb0FnXFxcbndoQlNBQ0tBSUlJUVlnQWlnQ0JDRUhJQUl0QUFFaENDQUNRU0JxSUFFUU9BSkFJQUl0QUNBaUNVRUtSdzBBUVFFaENnd0ZDMEVDSVFvZ1xcXG5BMEY2YWtIL0FYRWlDMEVCYWtFQUlBdEJCRWtiSWd4QkFDQUpRWHBxUWY4QmNTSUxRUUZxSUF0QkEwc2lEUnRIRFFRZ0FpZ0NLQ0VMSUFcXFxuSW9BaVFoRGdKQUlBd09CUUFFQkFRQ0JBc2dEVVVOQXlBRElBbEhEUVFnQWlnQ01DRUpJQUlvQWl3aERDQUNMUUFoSVEwQ1FBSkFBa0FDXFxcblFBSkFJQU1PQmdRQUFRSURCd1FMSUFjZ0JpQU9JQXNRcGdwRkRRZ2dCU0FFSUF3Z0NSQ21DZzBIREFnTElBaEIvd0Z4SUExQi93RnhSZ1xcXG4wR0RBY0xJQWNnQmlBT0lBc1FwZ29OQlF3R0N5QUhJQVlnRGlBTEVLWUtSUTBGSUFVZ0JDQU1JQWtRcGdvTkJBd0ZDeUFISUFZZ0RpQUxcXFxuRUtZS0RRTU1CQXRCQXlFS0RBTUxJQWNnQmlBT0lBc1FwZ29OQVF3Q0N5QUlRZjhCY1NBTlFmOEJjVVlOQUFzTElBSkJ3QUJxSkFBZ0NnXFxcbnY5QWdFRmZ5QUFRUXQwSVFGQkFDRUNRU0VoQTBFaElRUUNRQUpBQTBBQ1FBSkFRWDhnQTBFQmRpQUNhaUlGUVFKMFFZVEZ6Z0JxS0FJQVxcXG5RUXQwSWdNZ0FVY2dBeUFCU1JzaUEwRUJSdzBBSUFVaEJBd0JDeUFEUWY4QmNVSC9BVWNOQWlBRlFRRnFJUUlMSUFRZ0Ftc2hBeUFFSUFcXFxuSkxEUUFNQWdzTElBVkJBV29oQWdzQ1FBSkFBa0FDUUFKQUlBSkJJRXNOQUNBQ1FRSjBJZ0ZCaE1YT0FHb29BZ0JCRlhZaEJDQUNRU0JIXFxcbkRRRkIxd1VoQlVFZklRSU1BZ3NnQWtFaFFkaTV6Z0FRZ1FVQUN5QUJRWWpGemdCcUtBSUFRUlYySVFVZ0FrVU5BU0FDUVg5cUlRSUxJQVxcXG5KQkFuUkJoTVhPQUdvb0FnQkIvLy8vQUhFaEFnd0JDMEVBSVFJTEFrQWdCU0FFUVg5emFrVU5BQ0FBSUFKcklRTWdCRUhYQlNBRVFkY0ZcXFxuU3hzaEFTQUZRWDlxSVFWQkFDRUNBMEFDUUFKQUlBRWdCRVlOQUNBQ0lBUkJpTWJPQUdvdEFBQnFJZ0lnQTAwTkFRd0RDeUFCUWRjRlFlXFxcbmk1emdBUWdRVUFDeUFGSUFSQkFXb2lCRWNOQUFzZ0JTRUVDeUFFUVFGeEMvMENBUVYvSUFCQkMzUWhBVUVBSVFKQkl5RURRU01oQkFKQVxcXG5Ba0FEUUFKQUFrQkJmeUFEUVFGMklBSnFJZ1ZCQW5SQitMbk9BR29vQWdCQkMzUWlBeUFCUnlBRElBRkpHeUlEUVFGSERRQWdCU0VFREFcXFxuRUxJQU5CL3dGeFFmOEJSdzBDSUFWQkFXb2hBZ3NnQkNBQ2F5RURJQVFnQWtzTkFBd0NDd3NnQlVFQmFpRUNDd0pBQWtBQ1FBSkFBa0FnXFxcbkFrRWlTdzBBSUFKQkFuUWlBVUg0dWM0QWFpZ0NBRUVWZGlFRUlBSkJJa2NOQVVIckJpRUZRU0VoQWd3Q0N5QUNRU05CMkxuT0FCQ0JCUVxcXG5BTElBRkIvTG5PQUdvb0FnQkJGWFloQlNBQ1JRMEJJQUpCZjJvaEFnc2dBa0VDZEVINHVjNEFhaWdDQUVILy8vOEFjU0VDREFFTFFRQWhcXFxuQWdzQ1FDQUZJQVJCZjNOcVJRMEFJQUFnQW1zaEF5QUVRZXNHSUFSQjZ3WkxHeUVCSUFWQmYyb2hCVUVBSVFJRFFBSkFBa0FnQVNBRVJnXFxcbjBBSUFJZ0JFR0V1ODRBYWkwQUFHb2lBaUFEVFEwQkRBTUxJQUZCNndaQjZMbk9BQkNCQlFBTElBVWdCRUVCYWlJRVJ3MEFDeUFGSVFRTFxcXG5JQVJCQVhFTC9RSUJCWDhnQUVFTGRDRUJRUUFoQWtFV0lRTkJGaUVFQWtBQ1FBTkFBa0FDUUVGL0lBTkJBWFlnQW1vaUJVRUNkRUh3d2NcXFxuNEFhaWdDQUVFTGRDSURJQUZISUFNZ0FVa2JJZ05CQVVjTkFDQUZJUVFNQVFzZ0EwSC9BWEZCL3dGSERRSWdCVUVCYWlFQ0N5QUVJQUpyXFxcbklRTWdCQ0FDU3cwQURBSUxDeUFGUVFGcUlRSUxBa0FDUUFKQUFrQUNRQ0FDUVJWTERRQWdBa0VDZENJQlFmREJ6Z0JxS0FJQVFSVjJJUVxcXG5RZ0FrRVZSdzBCUWJzQ0lRVkJGQ0VDREFJTElBSkJGa0hZdWM0QUVJRUZBQXNnQVVIMHdjNEFhaWdDQUVFVmRpRUZJQUpGRFFFZ0FrRi9cXFxuYWlFQ0N5QUNRUUowUWZEQnpnQnFLQUlBUWYvLy93QnhJUUlNQVF0QkFDRUNDd0pBSUFVZ0JFRi9jMnBGRFFBZ0FDQUNheUVESUFSQnV3XFxcbklnQkVHN0Frc2JJUUVnQlVGL2FpRUZRUUFoQWdOQUFrQUNRQ0FCSUFSR0RRQWdBaUFFUWNqQ3pnQnFMUUFBYWlJQ0lBTk5EUUVNQXdzZ1xcXG5BVUc3QWtIb3VjNEFFSUVGQUFzZ0JTQUVRUUZxSWdSSERRQUxJQVVoQkFzZ0JFRUJjUXZRQXdJQmZ3SitJd0JCTUdzaUF5UUFJQU1nQWpcXFxub0FGQ0FESUFFMkFoQkNBQ0VFUVFBaEFnSkFBMEFnQTBFWWFpQURRUkJxRUtvQkFrQUNRQUpBQWtBQ1FBSkFJQU10QUJnTkFDQURMUUFaXFxcbkRnTURBZ0VDQ3lBQVFZQ1U2OXdETmdJSUlBQWdBeWdDSERZQ0FBd0dDd0pBSUFSQ0FGSU5BRUd1ZzhBQVFSQVF6UVVoQWlBQVFZQ1U2OVxcXG53RE5nSUlJQUFnQWpZQ0FBd0dDd0pBSUFJTkFFR2RnOEFBUVJFUXpRVWhBaUFBUVlDVTY5d0ROZ0lJSUFBZ0FqWUNBQXdHQ3dKQUlBVWdcXFxuQVJET0NTSUNEUUFnQXlBRklBRVFsUVVnQXlrREFDRUVJQUFnQXlnQ0NEWUNDQ0FBSUFRM0F3QU1CZ3NnQUVHQWxPdmNBellDQ0NBQUlBXFxcbkkyQWdBTUJRc2dBZzBCSUFOQklHb2dBMEVRYWhEUENRSkFJQU1vQWlBTkFDQURLQUlrSVFGQkFTRUNEQVFMSUFCQmdKVHIzQU0yQWdnZ1xcXG5BQ0FES0FJa05nSUFEQVFMQWtBZ0JGQU5BRUd1ZzhBQVFSQVF6Z1VoQWlBQVFZQ1U2OXdETmdJSUlBQWdBallDQUF3RUN5QURRU0JxSUFcXFxuTkJFR29RMEFrZ0F5Z0NJRVVOQVNBQVFZQ1U2OXdETmdJSUlBQWdBeWdDSkRZQ0FBd0RDMEdkZzhBQVFSRVF6Z1VoQWlBQVFZQ1U2OXdEXFxcbk5nSUlJQUFnQWpZQ0FBd0NDeUFES1FNb0lRVkNBU0VFREFBTEN5QURRVEJxSkFBTDNBSUJBWDhnQUNBQktBSWNJZ0pCR0hRZ0FrR0EvZ1xcXG5OeFFRaDBjaUFDUVFoMlFZRCtBM0VnQWtFWWRuSnlOZ0ljSUFBZ0FTZ0NHQ0lDUVJoMElBSkJnUDREY1VFSWRISWdBa0VJZGtHQS9nTnhcXFxuSUFKQkdIWnljallDR0NBQUlBRW9BaFFpQWtFWWRDQUNRWUQrQTNGQkNIUnlJQUpCQ0haQmdQNERjU0FDUVJoMmNuSTJBaFFnQUNBQktBXFxcbklRSWdKQkdIUWdBa0dBL2dOeFFRaDBjaUFDUVFoMlFZRCtBM0VnQWtFWWRuSnlOZ0lRSUFBZ0FTZ0NEQ0lDUVJoMElBSkJnUDREY1VFSVxcXG5kSElnQWtFSWRrR0EvZ054SUFKQkdIWnljallDRENBQUlBRW9BZ2dpQWtFWWRDQUNRWUQrQTNGQkNIUnlJQUpCQ0haQmdQNERjU0FDUVJcXFxuaDJjbkkyQWdnZ0FDQUJLQUlFSWdKQkdIUWdBa0dBL2dOeFFRaDBjaUFDUVFoMlFZRCtBM0VnQWtFWWRuSnlOZ0lFSUFBZ0FTZ0NBQ0lCXFxcblFSaDBJQUZCZ1A0RGNVRUlkSElnQVVFSWRrR0EvZ054SUFGQkdIWnljallDQUF2MEFnRUhmMEVCSVFjQ1FBSkFJQUpGRFFBZ0FTQUNRUVxcXG5GMGFpRUlJQUJCZ1A0RGNVRUlkaUVKUVFBaENpQUFRZjhCY1NFTEEwQWdBVUVDYWlFTUlBb2dBUzBBQVNJQ2FpRU5Ba0FnQVMwQUFDSUJcXFxuSUFsR0RRQWdBU0FKU3cwQ0lBMGhDaUFNSVFFZ0RDQUlSZzBDREFFTEFrQUNRQUpBSUEwZ0Nra05BQ0FOSUFSTERRRWdBeUFLYWlFQkEwXFxcbkFnQWtVTkF5QUNRWDlxSVFJZ0FTMEFBQ0VLSUFGQkFXb2hBU0FLSUF0SERRQUxRUUFoQnd3RkN5QUtJQTFCOUt2T0FCQ0VCUUFMSUEwZ1xcXG5CRUgwcTg0QUVJTUZBQXNnRFNFS0lBd2hBU0FNSUFoSERRQUxDeUFHUlEwQUlBVWdCbW9oQ3lBQVFmLy9BM0VoQVVFQklRY0NRQU5BSUFcXFxuVkJBV29oQ2dKQUFrQWdCUzBBQUNJQ3dDSU5RUUJJRFFBZ0NpRUZEQUVMSUFvZ0MwWU5BaUFOUWY4QWNVRUlkQ0FGTFFBQmNpRUNJQVZCXFxcbkFtb2hCUXNnQVNBQ2F5SUJRUUJJRFFJZ0IwRUJjeUVISUFVZ0MwY05BQXdDQ3d0QnZaVE9BRUVyUVlTc3pnQVFnd2NBQ3lBSFFRRnhDN1xcXG5JREFRRi9Jd0JCd0FCcklnSWtBQUpBQWtBQ1FBSkFBa0FDUUNBQUxRQUFEZ1FBQVFJREFBc2dBaUFBS0FJRU5nSUVRUUF0QVBHbVR4cEJcXFxuRkVFQkVQY0xJZ0JGRFFRZ0FFRVFha0VBS0FDZjlFMDJBQUFnQUVFSWFrRUFLUUNYOUUwM0FBQWdBRUVBS1FDUDlFMDNBQUFnQWtLVWdJXFxcbkNBd0FJM0Fnd2dBaUFBTmdJSUlBSkJLR3BCREdwQ0FqY0NBQ0FDUVJocVFReHFRWWdDTmdJQUlBSkJBellDTENBQ1FienF6UUEyQWlnZ1xcXG5Ba0dKQWpZQ0hDQUNJQUpCR0dvMkFqQWdBaUFDUVFScU5nSWdJQUlnQWtFSWFqWUNHQ0FCSUFKQktHb1FyUVVoQUNBQ0tBSU1JZ0ZGRFFcXFxuTWdBaWdDQ0NBQlFRRVFzZ3dNQXdzZ0FDMEFBU0VBSUFKQk5HcENBVGNDQUNBQ1FRRTJBaXdnQWtIYzQ4MEFOZ0lvSUFKQmlnSTJBZ3dnXFxcbkFpQUFRUUowSWdCQnBQVE5BR29vQWdBMkFod2dBaUFBUWNqMXpRQnFLQUlBTmdJWUlBSWdBa0VJYWpZQ01DQUNJQUpCR0dvMkFnZ2dBU1xcXG5BQ1FTaHFFSzBGSVFBTUFnc2dBQ2dDQkNJQUtBSUFJQUFvQWdRZ0FSQ2NEU0VBREFFTElBQW9BZ1FpQUNnQ0FDQUJJQUFvQWdRb0FoQVJcXFxuQmdBaEFBc2dBa0hBQUdva0FDQUFEd3RCQVVFVUVKb05BQXVSQXdFQ2Z5TUFRY0FBYXlJQ0pBQWdBaUFCRUxZRUFrQUNRQUpBQWtBZ0FpXFxcbjBBQUEwQUlBSXRBQUVOQWlBQ1FRVTJBaGdnQVNBQ1FSaHFFTTRJSVFFTUFRc2dBaWdDQkNFQkN5QUFRUUUyQWdBZ0FDQUJOZ0lFREFFTFxcXG5Ba0FDUUFKQUFrQUNRQUpBSUFJdEFBSWlBMEgvQVhGQkxVY05BQ0FCSUFFb0FnaEJBV28yQWdnZ0FrRVlhaUFCUVFBUW1nRWdBaWtER0VcXFxuSURVUTBESUFKQkNHcEJDR29nQWtFWWFrRUlhaWtEQURjREFDQUNJQUlwQXhnM0F3Z2dBaUFDUVFocUVJWUREQUVMQWtBZ0EwRlFha0gvXFxcbkFYRkJDa2tOQUNBQ0lBRWdBa0U0YWtHb2djQUFFR2cyQWdRTUJBc2dBa0VZYWlBQlFRRVFtZ0VnQWlrREdFSURVUTBCSUFKQktHcEJDR1xcXG5vZ0FrRVlha0VJYWlrREFEY0RBQ0FDSUFJcEF4ZzNBeWdnQWlBQ1FTaHFFSVlEQ3lBQ0tBSUFEUUlnQUNBQ0tBSUVOZ0lFUVFBaEFRd0RcXFxuQ3lBQUlBSW9BaUEyQWdRZ0FFRUJOZ0lBREFNTElBQWdBaWdDSURZQ0JDQUFRUUUyQWdBTUFnc2dBQ0FDS0FJRUlBRVFxUVkyQWdSQkFTXFxcbkVCQ3lBQUlBRTJBZ0FMSUFKQndBQnFKQUFMc3dNQkJuOGpBRUhBQUdzaUF5UUFBa0FDUUFKQUFrQWdBRUhJQVdvb0FnQW9BbEFpQkNBQVxcXG5LQUxRQVNJRmF5SUdJQUpMRFFBZ0FFR0FBV29oQndKQUlBVkZEUUFnQTBFNGFpQUFJQVVnQkVHSS9NQUFFTE1ISUFNb0Fqd2hCU0FES0FcXFxuSTRJUWdnQTBFd2FpQUJJQUlnQmtHWS9NQUFFTEVISUFnZ0JTQURLQUl3SUFNb0FqUkJxUHpBQUJEekNTQURRU2hxSUFCQmdBRWdCRUc0XFxcbi9NQUFFTEVISUFjZ0F5Z0NLQ0FES0FJc0VMOERJQU5CSUdvZ0JpQUJJQUpCeVB6QUFCQ0ZDU0FES0FJZ0lRRWdBRUVBTmdMUUFTQURLQVxcXG5Ja0lRSUxJQVJGRFFNZ0EwRVlhaUFCSUFJZ0FpQUNJQVJ3SWdWcklnUkI2UHpBQUJDeEJ5QUhJQU1vQWhnZ0F5Z0NIQkMvQXlBRlJRMENcXFxuSUFOQkVHb2dBQ0FGUWZqOHdBQVEwd2NnQXlnQ0ZDRUdJQU1vQWhBaEJ5QURRUWhxSUFRZ0FTQUNRWWo5d0FBUWhRa2dCeUFHSUFNb0FnXFxcbmdnQXlnQ0RFR1kvY0FBRVBNSkRBRUxJQU1nQUNBRklBVWdBbXBCNlB2QUFCQ3pCeUFES0FJQUlBTW9BZ1FnQVNBQ1Fmajd3QUFROHdrZ1xcXG5BQ2dDMEFFZ0Ftb2hCUXNnQUNBRk5nTFFBUXNnQTBIQUFHb2tBQThMUWVEMXdBQkJHVUhZL01BQUVJTUhBQXVqQXdFQ2Z5TUFRZEFBYXlcXFxuSUdKQUFnQmlBRU5nSVlJQVlnQlRZQ0hDQUdRUkJxSUFVZ0JHdEJBQkRWQkNBR1FRQTJBaWdnQmlBR0tRTVFOd01nQWtBQ1FBTkFBa0FDXFxcblFDQUdRUmhxRU1nSklnUkJJMFlOQUNBRVFZQ0F4QUJIRFFGQkFDRUVEQVFMSUFFdEFDQkZEUUlMSUFFZ0JDQUdRUmhxRU5nQklBWkJJR1xcXG5vZ0JCRGVCQXdBQ3dzZ0JpZ0NIQ0VGSUFZb0FoZ2hCQXNnQmtFSWFpQUJJQU5Cdkk3QkFCQ0ZCZ0pBQWtBQ1FDQUdLQUlJSWdNZ0JpZ0NcXFxuRENJSFFmK0l3UUJCQkJDbUNnMEFJQU1nQjBHRGljRUFRUVVRcGdvTkFDQURJQWRCalluQkFFRUVFS1lLRFFBZ0F5QUhRZnlJd1FCQkF4XFxcbkNtQ2tVTkFRc2dBU2dDRUNJRFJRMEFJQVpCTUdvZ0F5QUdLQUlnSUFZb0FpZ2dBVUVVYWlnQ0FDZ0NGQkVMQUF3QkN5QUdRVEJxSUFZb1xcXG5BaUFnQmlnQ0tCRGxDZ3NnQmlBR1FUQnFFSXNLSUFZZ0Jpa0RBRGNEUUNBR1FkeU93UUJCekk3QkFDQUNRZjhCY1VFQ1JoczJBa2dnQVNcXFxuQUdRY0FBYWhEbUJRSkFJQVlvQWpCRkRRQWdCa0V3YWhDS0RRc2dCa0VnYWhDS0RTQUFJQVUyQWdRZ0FDQUVOZ0lBSUFaQjBBQnFKQUFMXFxcbnp3TUJBWDhqQUVFd2F5SUNKQUFDUUFKQUFrQUNRQUpBQWtBZ0FDMEFBQTRFQUFFQ0F3QUxJQUlnQUNnQ0JEWUNEQ0FDUVJCcUlBRkJpT1xcXG5yTkFFRUNFSzBKSUFKQkVHcEJpdXJOQUVFRUlBSkJER3BCa09yTkFCRFRBU0VBSUFKQktEb0FIeUFBUWRicHpRQkJCQ0FDUVI5cVFkenBcXFxuelFBUTB3RWhBVUVBTFFEeHBrOGFRUlJCQVJEM0N5SUFSUTBFSUFCQkVHcEJBQ2dBbi9STk5nQUFJQUJCQ0dwQkFDa0FsL1JOTndBQUlBXFxcbkJCQUNrQWovUk5Od0FBSUFKQ2xJQ0FnTUFDTndJa0lBSWdBRFlDSUNBQlFlenB6UUJCQnlBQ1FTQnFRYURxelFBUTB3RVExZ1FoQUNBQ1xcXG5LQUlrSWdGRkRRTWdBaWdDSUNBQlFRRVFzZ3dNQXdzZ0FpQUFMUUFCT2dBUUlBSkJJR29nQVVHRTZzMEFRUVFRN0FnZ0FrRWdhaUFDUVJcXFxuQnFRZHpwelFBUTlBRVF3Z01oQUF3Q0N5QUFLQUlFSVFBZ0FrRWdhaUFCUWRIcHpRQkJCUkN0Q1NBQ1FTQnFRZGJwelFCQkJDQUFRUWhxXFxcblFkenB6UUFRMHdGQjdPbk5BRUVISUFCQjlPbk5BQkRUQVJEV0JDRUFEQUVMSUFJZ0FDZ0NCQ0lBTmdJZ0lBRkIzKy9OQUVFR1FkYnB6UVxcXG5CQkJDQUFRUWhxUWR6cHpRQkI1ZS9OQUVFRklBSkJJR3BCN08vTkFCRC9BaUVBQ3lBQ1FUQnFKQUFnQUE4TFFRRkJGQkNhRFFBTHJRTUNcXFxuQlg4QmZpTUFRY0FBYXlJRkpBQkJBU0VHQWtBZ0FDMEFCQTBBSUFBdEFBVWhCd0pBSUFBb0FnQWlDQ2dDSENJSlFRUnhEUUJCQVNFR0lBXFxcbmdvQWhSQnNaN09BRUd6bnM0QUlBZEIvd0Z4SWdjYlFRSkJBeUFIR3lBSVFSaHFLQUlBS0FJTUVRa0FEUUZCQVNFR0lBZ29BaFFnQVNBQ1xcXG5JQWdvQWhnb0Fnd1JDUUFOQVVFQklRWWdDQ2dDRkVIOG5jNEFRUUlnQ0NnQ0dDZ0NEQkVKQUEwQklBTWdDQ0FFS0FJTUVRWUFJUVlNQVFcXFxuc0NRQ0FIUWY4QmNRMEFRUUVoQmlBSUtBSVVRYXllemdCQkF5QUlRUmhxS0FJQUtBSU1FUWtBRFFFZ0NDZ0NIQ0VKQzBFQklRWWdCVUVCXFxcbk9nQVhJQVZCTUdwQmtKN09BRFlDQUNBRklBZ3BBaFEzQXdnZ0JTQUZRUmRxTmdJUUlBVWdDQ2tDQ0RjRElDQUlLUUlBSVFvZ0JTQUpOZ1xcXG5JMElBVWdDQ2dDRURZQ0tDQUZJQWd0QUNBNkFEZ2dCU0FLTndNWUlBVWdCVUVJYWpZQ0xDQUZRUWhxSUFFZ0FoQjZEUUFnQlVFSWFrSDhcXFxubmM0QVFRSVFlZzBBSUFNZ0JVRVlhaUFFS0FJTUVRWUFEUUFnQlNnQ0xFR3ZuczRBUVFJZ0JTZ0NNQ2dDREJFSkFDRUdDeUFBUVFFNkFBXFxcblVnQUNBR09nQUVJQVZCd0FCcUpBQWdBQXVUQXdFQmZ5TUFRZUFCYXlJSEpBQWdCeUFFTmdJTUlBZEIyQUJxSUFJZ0F4Q2FDUUpBQWtBZ1xcXG5CeWdDV0NJRFFRSkdEUUFnQnkwQVhDRUNJQWRCRUdwQkJYSWdCMEhZQUdwQkJYSkJ3d0FRcEEwYUlBY2dBam9BRkNBSElBTTJBaEFnQjBcXFxuR2dBV29nQkJEbERBSkFJQWNvQXFBQklnUU5BQ0FISUFjb0FxUUJOZ0xFQVNBSFFlUUFha0lCTndJQUlBZEJBVFlDWENBSFFlQ0N3QUEyXFxcbkFsZ2dCMEVQTmdMY0FTQUhJQWRCMkFGcU5nSmdJQWNnQjBIRUFXbzJBdGdCSUFkQnlBRnFJQWRCMkFCcUVJOEVJQWRCeUFGcUVOOE5JUVxcXG5RZ0IwSEVBV29RaEFzZ0IwRWthaERqREF3Q0N5QUhRZGdBYWtFUWFpQUhRYUFCYWtFUWFpa0RBRGNEQUNBSFFkZ0Fha0VZYWlBSFFhQUJcXFxuYWtFWWFpa0RBRGNEQUNBSElBY3BBNmdCTndOZ0lBY2dCeWdDcEFFMkFsd2dCeUFFTmdKWUlBRWdCMEVRYWlBSFFkZ0FhaUFGSUFZUTl3XFxcbkVoQkNBSFFTUnFFT01NREFFTElBY3RBRndRc2cwaEJDQUhRUXhxRUlRTEN5QUhJQVFRd1FrZ0J5Z0NCQ0VFSUFBZ0J5Z0NBRFlDQUNBQVxcXG5JQVEyQWdRZ0IwSGdBV29rQUF1VEF3RUJmeU1BUWVBQmF5SUhKQUFnQnlBRU5nSU1JQWRCMkFCcUlBSWdBeENhQ1FKQUFrQWdCeWdDV0NcXFxuSURRUUpHRFFBZ0J5MEFYQ0VDSUFkQkVHcEJCWElnQjBIWUFHcEJCWEpCd3dBUXBBMGFJQWNnQWpvQUZDQUhJQU0yQWhBZ0IwR2dBV29nXFxcbkJCRGxEQUpBSUFjb0FxQUJJZ1FOQUNBSElBY29BcVFCTmdMRUFTQUhRZVFBYWtJQk53SUFJQWRCQVRZQ1hDQUhRZUNDd0FBMkFsZ2dCMFxcXG5FUE5nTGNBU0FISUFkQjJBRnFOZ0pnSUFjZ0IwSEVBV28yQXRnQklBZEJ5QUZxSUFkQjJBQnFFSThFSUFkQnlBRnFFTjhOSVFRZ0IwSEVcXFxuQVdvUWhBc2dCMEVrYWhEakRBd0NDeUFIUWRnQWFrRVFhaUFIUWFBQmFrRVFhaWtEQURjREFDQUhRZGdBYWtFWWFpQUhRYUFCYWtFWWFpXFxcbmtEQURjREFDQUhJQWNwQTZnQk53TmdJQWNnQnlnQ3BBRTJBbHdnQnlBRU5nSllJQUVnQjBFUWFpQUhRZGdBYWlBRklBWVFrZ0VoQkNBSFxcXG5RU1JxRU9NTURBRUxJQWN0QUZ3UXNnMGhCQ0FIUVF4cUVJUUxDeUFISUFRUXdRa2dCeWdDQkNFRUlBQWdCeWdDQURZQ0FDQUFJQVEyQWdcXFxuUWdCMEhnQVdva0FBdUJBd0lIZndOK0l3QkJrQUZySWdNa0FBSkFJQUZCR0dvb0FnQWlCQ0FDVFEwQUlBTkJDR29nQVNnQ0VDSUZJQUpCXFxcbkIzUnFJZ1pCZ0FFUXBBMGFJQVlnQlNBRVFYOXFJZ1JCQjNScVFZQUJFS01OSVFjZ0FTQUVOZ0lZQWtBZ0JDQUNUUTBBSUFFb0FnQWlDRVxcXG5GOGFpRUdJQUVvQWdRaUJTQUhLQUo0SWdkeElRRWdCMEVaZHExQ2dZS0VpSkNnd0lBQmZpRUtRUUFoQ1FOQUlBTWdDQ0FCYWlrQUFDSUxcXFxuSUFxRklneENmNFVnREVMLy9mdjM3OSsvLzM1OGcwS0FnWUtFaUpDZ3dJQi9nemNEaUFFRFFDQURJQU5CaUFGcUVJUUhBa0FnQXlnQ0FBXFxcbjBBQWtBZ0N5QUxRZ0dHZzBLQWdZS0VpSkNnd0lCL2cxQkZEUUFnQVNBSlFRaHFJZ2xxSUFWeElRRU1Bd3RCckozQUFFRVBRYnlkd0FBUVxcXG5pZ1lBQ3lBR0lBTW9BZ1FnQVdvZ0JYRWlCMEVDZEdzb0FnQWdCRWNOQUFzTElBaEJBQ0FIYTBFQ2RHcEJmR29nQWpZQ0FBc2dBQ0FEUVFcXFxuaHFRY2dBRUtRTlFjZ0FhaUFEUVFocVFjZ0Fha0V3RUtRTkdpQURRWkFCYWlRQUR3c2dBaUFFRVA0RUFBdWdBd0lCZndGK0l3QkI4QUZyXFxcbklnUWtBQ0FFUVpnQmFpQUNJQU1RbWdrQ1FBSkFBa0FnQkNnQ21BRWlBMEVDUmcwQUlBUXRBSndCSVFJZ0JFSFFBR3BCQlhJZ0JFR1lBV1xcXG5wQkJYSkJ3d0FRcEEwYUlBUWdBam9BVkNBRUlBTTJBbEFnQkVHWUFXb2dBU0FFUWRBQWFoQ3RCZ0pBSUFRb0FwZ0JJZ01OQUNBRUtBS2NcXFxuQVNFQklBUkI1QUJxRU9NTURBSUxJQVFnQkNrRG9BRTNBK2dCSUFRZ0JDZ0NuQUUyQXVRQklBUWdBellDNEFFZ0JFRVFhaUFCSUFSQjRBXFxcbkZxRU5rQklBUkI0QUZxUVFSeUVNd0xJQVJCNUFCcUVPTU1RWUFCSVFFQ1FBSkFBa0FnQkNnQ0dDSURRWURzbEtOOGFnNENBZ0FCQ3lBRVxcXG5LQUlRSVFFTUF3c2dCQ2tERUNFRklBUWdBellDb0FFZ0JDQUZOd09ZQVNBRVFaZ0Jha0VNYWlBRVFSQnFRUXhxUVRRUXBBMGFJQVJCQ0dcXFxub2dCRUdvQVdvUTB3Z2dCQ2dDQ0NBRUtBSU1FT0lISVFFZ0JFR1lBV29RbndzTElBUWdBVFlDbkFGQkFDRUJEQUlMSUFRdEFKd0JFTElOXFxcbklRRUxJQVFnQVRZQ25BRkJBU0VCQ3lBRUlBRTJBcGdCSUFRZ0JFR1lBV29RdHdnZ0FDQUVLUU1BTndNQUlBUkI4QUZxSkFBTC9RSUJBM1xcXG44akFFRVFheUlESkFBQ1FDQUFLQUlZSWdSRkRRQWdBRUVjYWlnQ0FDRUFBa0FnQVVFbFJ3MEFJQU1nQWlrQ0FEY0RDQ0FEUVFocUVNZ0pcXFxuSVFFZ0EwRUlhaERJQ1NFQ0FrQWdBVUdBZ01RQVJnMEFJQUpCZ0lERUFFWU5BQ0FCRU5ZSFJRMEFJQUlRMWdjTkFnc2dCRUVJSUFBb0FoXFxcblFSQlFBTUFRc2dBVUZRYWtFS1NRMEFJQUZCWDNGQnYzOXFRUnBKRFFBQ1FDQUJRVjlxSWdKQkgwc05BRUVCSUFKMFFlbi9nYkI5Y1EwQlxcXG5DeUFCUWQ4QVJnMEFJQUZCL2dCR0RRQWdBVUdBZ0VCcVFmNy9BMGtOQUNBQlFZQ0FSR3BCL3Y4RFNRMEFJQUZCZ09CSGFrSCszd05KRFFcXFxuQWdBVUgrLzN0eElnSkJnSUJRYWtIKy93TkpEUUFnQVVIKy8zTnhJZ1ZCZ0lCZ2FrSCsvd05KRFFBZ0JVR0FnSEJxUWY3L0Ewa05BQ0FDXFxcblFZQ0FlR3BCL3Y4RFNRMEFJQUZCZ0lCOGFrSCsvd05KRFFBZ0FVR1FoSHhxUVk0RVNRMEFJQUZCNEg1cVFlQ3VBMGtOQUNBQlFZREFmR1xcXG5wQjBEdEpEUUFnQkVFR0lBQW9BaFFSQlFBTElBTkJFR29rQUF1Y0F3SURmd0YrSXdCQmtBSnJJZ01rQUNBRElBSVF6Z29pQWlnQ0FDQUNcXFxuS0FJSVFmQ2p3QUJCRFJEdUF5QURRWkFCYWlBRElBTW9BZ0FnQXlnQ0NCQ3dBZ0pBQWtBQ1FBSkFBa0FnQXlnQ2tBRU5BQ0FES0FLVUFTXFxcbklDRFFGQmdKVHIzQU1oQWd3Q0N5QURJQU1wQXBRQk53T1FBU0FEUVpBQmFoQ2xEU0VDSUFCQmdaVHIzQU0yQWdnZ0FDQUNOZ0lBREFNTFxcXG5JQU5CbUFGcUtRTUFJUVlnQXlBQ05nSkFJQU1nQmpjQ1JDQURRWkFCYWlBQ0lBWkNJSWluRU9JSklBTW9BcEFCSVFJZ0F5Z0NtQUVpQkVcXFxuR0JsT3ZjQTBZTkFTQURLQUtVQVNFRklBTkIwQUZxUVF4cUlBTkJrQUZxUVF4cVFUUVFwQTBhSUFNZ0JEWUMyQUVnQXlBRk5nTFVBU0FEXFxcbklBSTJBdEFCSUFOQjBBQnFJQU5CMEFGcUlBRVEwUU1nQXlnQ1dDRUNJQU1wQTFBaEJpQURRUXhxSUFOQjBBQnFRUXhxUVRRUXBBMGFJQVxcXG5OQndBQnFFT01NQ3lBQUlBSTJBZ2dnQUNBR053TUFJQUJCREdvZ0EwRU1ha0UwRUtRTkdnd0JDeUFDRUxRTklRSWdBRUdCbE92Y0F6WUNcXFxuQ0NBQUlBSTJBZ0FnQTBIQUFHb1E0d3dMSUFNUTR3d2dBMEdRQW1va0FBdUZBd0lDZndGK0l3QkI4QUZySWdNa0FCQ0lCeUFEUWRnQWFpXFxcbkFCSUFJUW1na0NRQUpBSUFNb0FsZ2lBa0VDUmcwQUlBTW9BbHdoQVNBRFFhQUJhaUFEUWRnQWFrRUlha0hBQUJDa0RSb2dBeUFCTmdJVVxcXG5JQU1nQWpZQ0VDQURRUkJxUVFocUlBTkJvQUZxUWNBQUVLUU5HaUFEUWRnQWFpQURRUkJxRUlBQkFrQUNRQ0FES0FKWURRQWdBMEhnQVdcXFxucEJDR29nQTBIa0FHb29BZ0FpQWpZQ0FDQURJQU1wQWx3aUJUY0Q0QUVnQTBHZ0FXb2dCYWNnQWhDVURTQURRUWhxSUFOQm9BRnFFSW9LXFxcbklBTW9BZ2doQVNBRElBTW9BZ3dpQWtFQUVOVUVJQU1vQWdRaEJDQURLQUlBSUFFZ0FoQ2tEU0VCSUFOQm9BRnFFTXdMSUFOQjRBRnFFT1xcXG5NTUlBQWdBallDQ0NBQUlBUTJBZ1FnQUNBQk5nSUFEQUVMSUFNcEFsd2hCU0FESUFOQjVBQnFLQUlBTmdKZ0lBTWdCVGNEV0NBRFFkZ0FcXFxuYWhDekRSRExBeUVDSUFCQkFEWUNBQ0FBSUFJMkFnUUxJQU5CSkdvUTR3d01BUXNnQXkwQVhCQ3lEUkRMQXlFQ0lBQkJBRFlDQUNBQUlBXFxcbkkyQWdRTElBTkI4QUZxSkFBTGlBTUNBMzhCZmlNQVFlQUFheUlDSkFBZ0FDa0NGQ0VGSUFCQ0FUY0NGQ0FDUVRCcUlBQkJIR29pQXlnQ1xcXG5BRFlDQUNBRFFRQTJBZ0FnQWtFQk9nQklJQUpCQURZQ1FDQUNRZ0EzQWpRZ0FpQUZOd01vSUFCQkZHb2hBQUpBQWtBZ0FTZ0NBQzBBQUFcXFxuMEFJQUpCQVRvQVVDQUJLQUlJTFFBQUlRTWdBa0VJYWlBQktBSUVJZ0VvQWdBZ0FTZ0NCQkRWQnlBQ0lBSkJLR29nQXlBQ1FkQUFhaUFDXFxcbktBSUlJQUlvQWd3UTdRRU1BUXNDUUFKQUlBRW9BZ1FpQVNnQ0FDQUJLQUlFUVM4UTJBY05BQ0FCS0FJRUlRUWdBU2dDQUNFRERBRUxJQVxcXG5KQktHcEI2SkRCQUVFREVKTU1JQUpCSUdwQkFTQUJLQUlBSUFFb0FnUkI3SkRCQUJENUJTQUNLQUlnSVFNZ0FTQUNLQUlrSWdRMkFnUWdcXFxuQVNBRE5nSUFDeUFDUVJocUlBTWdCQkRWQnlBQ1FSQnFJQUpCS0dvZ0FpZ0NHQ0FDS0FJY0VKa0RDeUFDUWRBQWFrRUlhaUlCSUFKQktHXFxcbnBCQ0dvb0FnQTJBZ0FnQWlBQ0tRTW9Od05RSUFBUWlnMGdBRUVJYWlBQktBSUFOZ0lBSUFBZ0Fpa0RVRGNDQUNBQ1FlQUFhaVFBQy9FQ1xcXG5BUVovSXdCQk1Hc2lBeVFBSUFNZ0FqWUNIQ0FESUFFMkFoZ0NRQUpBQWtBRFFDQURLQUlZSVFRZ0F5Z0NIQ0VGQTBBZ0JDQUZSZzBDSUFcXFxuUXRBQUFoQmlBRVFRRnFJZ2NoQkNBR1FTVkhEUUFMSUFNZ0J6WUNHQ0FEUVJCcUlBTkJHR29RN1FNZ0F5MEFFRUVCY1VVTkFBc2dBeTBBXFxcbkVTRUlJQU5CQ0dwQkFDQUNJQUZySWdRZ0F5Z0NHR29nQXlnQ0hHdEJmV29nQVNBRVFkRFl6UUFRbXdjZ0F5Z0NDQ0VDSUFNZ0F5Z0NEQ1xcXG5JR1FRQVE0UVFnQXlnQ0JDRUZJQU1vQWdBaUJ5QUNJQVlRcEEwaEFpQURJQVkyQWlnZ0F5QUZOZ0lrSUFNZ0FqWUNJQUpBSUFZZ0JVY05cXFxuQUNBRFFTQnFJQVlRbUFrZ0F5Z0NJQ0VISUFNb0FpZ2hCZ3NnQnlBR2FpQUlPZ0FBSUFNZ0JrRUJhallDS0NBRFFTQnFJQU1vQWhnZ0F5XFxcbmdDSEJDZkJDQURLQUlnSWdaRkRRRWdBQ0FES1FJa053SUVJQUFnQmpZQ0FBd0NDeUFDSUFGcklRUUxJQUFnQVRZQ0JDQUFRUUEyQWdBZ1xcXG5BRUVJYWlBRU5nSUFDeUFEUVRCcUpBQUwvd0lCQjM4akFFRVFheUlDSkFCQkFTRURBa0FnQVNBQUtBSUFJQUFvQWdnUS93b05BRUVCSVFcXFxuTWdBVUhBOGNBQVFRRVEvd29OQUNBQklBQW9BZ3dnQUVFVWFpZ0NBQkQvQ2cwQUlBQW9BaGdpQkNBQVFTQnFLQUlBUVJoc2FpRUZBMEFDXFxcblFDQUVJQVZIRFFCQkFDRUREQUlMUVFFaEF5QUJRY0h4d0FCQkFSRC9DZzBCSUFFZ0JDZ0NBQ0FFS0FJSUVQOEtEUUZCQVNFRElBRkJ3dlxcXG5IQUFFRUJFUDhLRFFFZ0JFRVlhaUVHSUFRb0Fnd2lCeUFFUVJScUtBSUFJZ0FRcWdnaENBSkFBa0FnQUVVTkFDQUlEUUVMUVFFaEF5QUJcXFxuUWNQeHdBQkJBUkQvQ2cwQ0lBUWdCVWNoQXlBQ0lBUW9BZ3dpQUNBRUtBSVVhallDRENBQ0lBQTJBZ2dDUUFOQUFrQUNRQ0FDUVFocUVLXFxcbmtJSWdCQklrWU5BQ0FBUWR3QVJnMEFJQUJCZ0lERUFFY05BU0FHSVFRZ0FVSEQ4Y0FBUVFFUS93cEZEUVVNQmdzZ0FVSEU4Y0FBUVFFUVxcXG4vd29OQWdzZ0FTQUFFSjRMUlEwQUN3dEJBU0VEREFJTElBWWhCQ0FCSUFjZ0FCRC9Da1VOQUFzTElBSkJFR29rQUNBREMrRUNBUUovSXdcXFxuQkJFR3NpQWlRQUlBQW9BZ0FoQUFKQUFrQWdBVUgvQUVzTkFBSkFJQUFvQWdnaUF5QUFLQUlFUncwQUlBQWdBeER4QWlBQUtBSUlJUU1MXFxcbklBQWdBMEVCYWpZQ0NDQUFLQUlBSUFOcUlBRTZBQUFNQVFzZ0FrRUFOZ0lNQWtBQ1FDQUJRWUFRU1EwQUFrQWdBVUdBZ0FSSkRRQWdBaVxcXG5BQlFUOXhRWUFCY2pvQUR5QUNJQUZCQm5aQlAzRkJnQUZ5T2dBT0lBSWdBVUVNZGtFL2NVR0FBWEk2QUEwZ0FpQUJRUkoyUVFkeFFmQUJcXFxuY2pvQURFRUVJUUVNQWdzZ0FpQUJRVDl4UVlBQmNqb0FEaUFDSUFGQkRIWkI0QUZ5T2dBTUlBSWdBVUVHZGtFL2NVR0FBWEk2QUExQkF5XFxcbkVCREFFTElBSWdBVUUvY1VHQUFYSTZBQTBnQWlBQlFRWjJRY0FCY2pvQURFRUNJUUVMQWtBZ0FDZ0NCQ0FBS0FJSUlnTnJJQUZQRFFBZ1xcXG5BQ0FESUFFUTdRSWdBQ2dDQ0NFREN5QUFLQUlBSUFOcUlBSkJER29nQVJDa0RSb2dBQ0FESUFGcU5nSUlDeUFDUVJCcUpBQkJBQXV5QWdcXFxuSUVmd1YrSXdCQklHc2lBU1FBSUFGQkVHb2lBaUFBUVJCcUtRTUFOd01BSUFGQkNHb2lBeUFBUVFocUtRTUFOd01BSUFGQkdHb2lCQ0FBXFxcbk5RSTRRamlHSUFBcEF6Q0VJZ1VnQUVFWWFpa0RBSVUzQXdBZ0FTQUFLUU1BTndNQUlBRVFpZ1VnQWlrREFDRUdJQUVwQXdBaEJ5QURLUVxcXG5NQUlRZ2dCQ2tEQUNFSklBRkJJR29rQUNBSklBaEMvd0dGZkNJSUlBWkNEWWtnQmlBSElBV0ZmQ0lHaFNJRmZDSUhJQVZDRVltRklnVkNcXFxuRFlrZ0NVSVFpU0FJaFNJSklBWkNJSWw4SWdZZ0JYd2lCWVVpQ0VJUmlTQUpRaFdKSUFhRklnWWdCMElnaVh3aUNTQUlmQ0lIaFNJSVFnXFxcbjJKSUFaQ0VJa2dDWVVpQmlBRlFpQ0pmQ0lKSUFoOGhTSUZRaEdKSUFaQ0ZZa2dDWVVpQmlBSFFpQ0pmQ0lKSUFWOElnVkNJSW1GSUFaQ1xcXG5FSWtnQ1lWQ0ZZbUZJQVdGQzk4Q0FRbC9Jd0JCRUdzaUFpUUFJQUZCR0dvaEF3SkFBa0FEUUVFQUlRUWdBU2dDRUNJRklBRW9BZ3dpQmtcXFxua2dCU0FCS0FJSVMzSWlCdzBDUVFBZ0FTZ0NCQ0FHYWlBSEd5RUlJQUVvQWhRZ0EycEJmMm90QUFBaENRSkFBa0FnQ2lBRklBWnJJQWNiXFxcbklncEJCMHNOQUVFQUlRWkJBQ0VGQTBBQ1FDQUtJQVZIRFFBZ0NpRUZEQU1MQWtBZ0NDQUZhaTBBQUNBSlFmOEJjVWNOQUVFQklRWU1Bd1xcXG5zZ0JVRUJhaUVGREFBTEN5QUNRUWhxSUFrZ0NDQUtFUDBCSUFJb0Fnd2hCU0FDS0FJSUlRWUxJQVpCQVVjTkFTQUJJQVVnQVNnQ0RHcEJcXFxuQVdvaUJUWUNEQ0FGSUFFb0FoUWlDRWtOQUNBRklBRW9BZ2hMRFFBZ0FTZ0NCQ0VKSUFJZ0NDQURRWUNHd1FBUTNBa2dDU0FGSUFocklnXFxcblZxSUFnZ0FpZ0NBQ0FDS0FJRUVLWUtSUTBBQ3lBQUlBVTJBZ1FnQUVFSWFpQUJLQUlNTmdJQVFRRWhCQXdCQ3lBQklBRW9BaEEyQWd3TFxcXG5JQUFnQkRZQ0FDQUNRUkJxSkFBTDJBSUJBbjhqQUVFUWF5SUNKQUFDUUFKQUlBRkIvd0JMRFFBQ1FDQUFLQUlJSWdNZ0FDZ0NCRWNOQUNcXFxuQUFJQU1ROHdJZ0FDZ0NDQ0VEQ3lBQUlBTkJBV28yQWdnZ0FDZ0NBQ0FEYWlBQk9nQUFEQUVMSUFKQkFEWUNEQUpBQWtBZ0FVR0FFRWtOXFxcbkFBSkFJQUZCZ0lBRVNRMEFJQUlnQVVFL2NVR0FBWEk2QUE4Z0FpQUJRUVoyUVQ5eFFZQUJjam9BRGlBQ0lBRkJESFpCUDNGQmdBRnlPZ1xcXG5BTklBSWdBVUVTZGtFSGNVSHdBWEk2QUF4QkJDRUJEQUlMSUFJZ0FVRS9jVUdBQVhJNkFBNGdBaUFCUVF4MlFlQUJjam9BRENBQ0lBRkJcXFxuQm5aQlAzRkJnQUZ5T2dBTlFRTWhBUXdCQ3lBQ0lBRkJQM0ZCZ0FGeU9nQU5JQUlnQVVFR2RrSEFBWEk2QUF4QkFpRUJDd0pBSUFBb0FnXFxcblFnQUNnQ0NDSURheUFCVHcwQUlBQWdBeUFCRU80Q0lBQW9BZ2doQXdzZ0FDZ0NBQ0FEYWlBQ1FReHFJQUVRcEEwYUlBQWdBeUFCYWpZQ1xcXG5DQXNnQWtFUWFpUUFDK2dDQVFaL0l3QkJNR3NpQXlRQUlBTkJJR29nQUNBQkVLRU1RUUFoQkNBRFFSaHFRUUFnQXlnQ0lDQURLQUlrUWZcXFxuQ093QUFRN1FnZ0F5Z0NIQ0VGSUFNb0FoZ2hCa0VBSVFkQkFDRUlBMEFnQkNFQkEwQUNRQ0FGSUFGSERRQUNRQ0FJSUFWUERRQWdBeUFJXFxcbklBWWdCVUdnajhBQUVPMElJQUlnQXlnQ0FDQURLQUlFSWdFUXR3SWdBU0FIYWlFSEN5QURJQWMyQWl3Z0FpQURRU3hxUVFRUXR3SWdBMFxcXG5Fd2FpUUFEd3NnQmlBQmFpRUFJQUZCQVdvaUJDRUJJQUF0QUFCQkwwY05BQXNDUUNBRVFYOXFJZ0VnQ0UwTkFDQURRUkJxSUFnZ0FTQUdcXFxuSUFWQmdJL0FBQkNGQnlBQ0lBTW9BaEFnQXlnQ0ZDSUJFTGNDSUFFZ0Iyb2hCd3NnQTBFSWFpQUVJQVlnQlVHUWo4QUFFTzBJSUFNb0FnXFxcbmdoQUFKQUFrQUNRQUpBSUFNb0Fnd09BZ0lBQVF0QkFTRUJJQUF0QUFCQkxrWU5BZ3dCQ3lBQUxRQUFRUzVIRFFCQkFTRUJJQUF0QUFGQlxcXG5MMFlOQVF0QkFDRUJDeUFCSUFScUlRZ01BQXNMdkFJQkNIOENRQUpBSUFKQkQwc05BQ0FBSVFNTUFRc2dBRUVBSUFCclFRTnhJZ1JxSVFcXFxuVUNRQ0FFUlEwQUlBQWhBeUFCSVFZRFFDQURJQVl0QUFBNkFBQWdCa0VCYWlFR0lBTkJBV29pQXlBRlNRMEFDd3NnQlNBQ0lBUnJJZ2RCXFxcbmZIRWlDR29oQXdKQUFrQWdBU0FFYWlJSlFRTnhJZ1pGRFFBZ0NFRUJTQTBCSUFsQmZIRWlDa0VFYWlFQlFRQWdCa0VEZENJQ2EwRVljU1xcXG5FRUlBb29BZ0FoQmdOQUlBVWdCaUFDZGlBQktBSUFJZ1lnQkhSeU5nSUFJQUZCQkdvaEFTQUZRUVJxSWdVZ0Ewa05BQXdDQ3dzZ0NFRUJcXFxuU0EwQUlBa2hBUU5BSUFVZ0FTZ0NBRFlDQUNBQlFRUnFJUUVnQlVFRWFpSUZJQU5KRFFBTEN5QUhRUU54SVFJZ0NTQUlhaUVCQ3dKQUlBXFxcbkpGRFFBZ0F5QUNhaUVGQTBBZ0F5QUJMUUFBT2dBQUlBRkJBV29oQVNBRFFRRnFJZ01nQlVrTkFBc0xJQUFMMGdJQ0JYOEJmaU1BUVRCclxcXG5JZ01rQUVFbklRUUNRQUpBSUFCQ2tNNEFXZzBBSUFBaENBd0JDMEVuSVFRRFFDQURRUWxxSUFScUlnVkJmR29nQUNBQVFwRE9BSUFpQ0VcXFxuS1F6Z0IrZmFjaUJrSC8vd054UWVRQWJpSUhRUUYwUWY2ZXpnQnFMd0FBT3dBQUlBVkJmbW9nQmlBSFFlUUFiR3RCLy84RGNVRUJkRUgrXFxcbm5zNEFhaThBQURzQUFDQUVRWHhxSVFRZ0FFTC93ZGN2VmlFRklBZ2hBQ0FGRFFBTEN3SkFJQWluSWdWQjR3Qk5EUUFnQTBFSmFpQUVRWFxcXG41cUlnUnFJQWluSWdVZ0JVSC8vd054UWVRQWJpSUZRZVFBYkd0Qi8vOERjVUVCZEVIK25zNEFhaThBQURzQUFBc0NRQUpBSUFWQkNra05cXFxuQUNBRFFRbHFJQVJCZm1vaUJHb2dCVUVCZEVIK25zNEFhaThBQURzQUFBd0JDeUFEUVFscUlBUkJmMm9pQkdvZ0JVRXdham9BQUFzZ0FpXFxcbkFCUWZ6L3pRQkJBQ0FEUVFscUlBUnFRU2NnQkdzUVlDRUVJQU5CTUdva0FDQUVDL1FDQVFSL0l3QkJ3QUJySWdJa0FFRUJJUU1DUUNBQlxcXG5LQUlVSWdSQjdKdk9BRUVNSUFGQkdHb29BZ0FpQVNnQ0RCRUpBQTBBQWtBQ1FDQUFLQUlNSWdWRkRRQWdBaUFGTmdJTUlBSkJyd0kyQWhcXFxuUWdBaUFDUVF4cU5nSVFJQUpDQVRjQ05DQUNRUUkyQWl3Z0FrSDhtODRBTmdJb0lBSWdBa0VRYWpZQ01DQUVJQUVnQWtFb2FoQnRSUTBCXFxcbkRBSUxJQUFvQWdBaUJTQUFLQUlFUVF4cUtBSUFFUVFBUXNIMytlak1rN0xSUVZJTkFDQUNJQVUyQWd3Z0FrR3dBallDRkNBQ0lBSkJER1xcXG5vMkFoQWdBa0lCTndJMElBSkJBallDTENBQ1FmeWJ6Z0EyQWlnZ0FpQUNRUkJxTmdJd0lBUWdBU0FDUVNocUVHME5BUXNnQUNnQ0NDRURcXFxuSUFKQkpHcEJDRFlDQUNBQ1FSQnFRUXhxUVFnMkFnQWdBaUFEUVF4cU5nSWdJQUlnQTBFSWFqWUNHQ0FDUWE0Q05nSVVJQUlnQXpZQ0VDXFxcbkFDUWdNM0FqUWdBa0VETmdJc0lBSkIxSnZPQURZQ0tDQUNJQUpCRUdvMkFqQWdCQ0FCSUFKQktHb1FiU0VEQ3lBQ1FjQUFhaVFBSUFNTFxcXG56d0lCQTM4akFFR0FBV3NpQWlRQUFrQUNRQUpBQWtBQ1FDQUJLQUljSWdOQkVIRU5BQ0FEUVNCeERRRWdBREVBQUVFQklBRVE1QUVoQUFcXFxud0VDeUFBTFFBQUlRTkJBQ0VBQTBBZ0FpQUFha0gvQUdwQk1FSFhBQ0FEUVE5eElnUkJDa2tiSUFScU9nQUFJQUJCZjJvaEFDQURRZjhCXFxcbmNTSUVRUVIySVFNZ0JFRVBTdzBBQ3lBQVFZQUJhaUlEUVlFQlR3MEJJQUZCQVVIOG5zNEFRUUlnQWlBQWFrR0FBV3BCQUNBQWF4QmdJUVxcXG5BTUF3c2dBQzBBQUNFRFFRQWhBQU5BSUFJZ0FHcEIvd0JxUVRCQk55QURRUTl4SWdSQkNra2JJQVJxT2dBQUlBQkJmMm9oQUNBRFFmOEJcXFxuY1NJRVFRUjJJUU1nQkVFUFN3MEFDeUFBUVlBQmFpSURRWUVCVHcwQklBRkJBVUg4bnM0QVFRSWdBaUFBYWtHQUFXcEJBQ0FBYXhCZ0lRXFxcbkFNQWdzZ0EwR0FBVUhzbnM0QUVJSUZBQXNnQTBHQUFVSHNuczRBRUlJRkFBc2dBa0dBQVdva0FDQUFDODhDQWdKL0FYNGpBRUdBQVdzaVxcXG5BaVFBQWtBQ1FBSkFBa0FDUUNBQktBSWNJZ05CRUhFTkFDQURRU0J4RFFFZ0FDa0RBRUVCSUFFUTVBRWhBQXdFQ3lBQUtRTUFJUVJCQUNcXFxuRUFBMEFnQWlBQWFrSC9BR3BCTUVIWEFDQUVwMEVQY1NJRFFRcEpHeUFEYWpvQUFDQUFRWDlxSVFBZ0JFSVBWaUVESUFSQ0JJZ2hCQ0FEXFxcbkRRQUxJQUJCZ0FGcUlnTkJnUUZQRFFFZ0FVRUJRZnllemdCQkFpQUNJQUJxUVlBQmFrRUFJQUJyRUdBaEFBd0RDeUFBS1FNQUlRUkJBQ1xcXG5FQUEwQWdBaUFBYWtIL0FHcEJNRUUzSUFTblFROXhJZ05CQ2trYklBTnFPZ0FBSUFCQmYyb2hBQ0FFUWc5V0lRTWdCRUlFaUNFRUlBTU5cXFxuQUFzZ0FFR0FBV29pQTBHQkFVOE5BU0FCUVFGQi9KN09BRUVDSUFJZ0FHcEJnQUZxUVFBZ0FHc1FZQ0VBREFJTElBTkJnQUZCN0o3T0FCXFxcbkNDQlFBTElBTkJnQUZCN0o3T0FCQ0NCUUFMSUFKQmdBRnFKQUFnQUF2TUFnRUZmeU1BUWNBQWF5SURKQUFDUUFKQUlBSkZEUUJCQVNFRVxcXG5JQUV0QUFCQkwwWU5BUXRCQUNFRUN5QURJQVE2QUQ0Z0EwRUdPZ0FvSUFNZ0FqWUNKQ0FESUFFMkFpQWdBMEdBQkRzQlBDQURJQU5CSUdcXFxub1FPRUVBSVFFQ1FBSkFJQU10QUFBaUJFRUtSdzBBREFFTElBTW9BZ1FpQlVFQUlBUkJDVVliSWdaRkRRQkJBaUVDQWtBQ1FBSkFBa0FnXFxcbkF5Z0NDQ0lCUVFKSERRQWdCaThBQUVHdTNBQkdEUUVMUVFBaEFpQUdJUVFEUUFKQUlBRWdBa2NOQUNBQklRSWdCaUVCREFVTElBSkJBV1xcXG5vaEFpQUVRWDlxSWdRZ0FXb2lCUzBBQUVFdVJ3MEFDeUFCSUFFZ0Ftc2lCMEVCYWlJRVNRMEJJQUVnQWtZaEJDQUdSUTBDSUFFZ0J5QUVcXFxuR3lFQ0lBWWhCUXNnQlNFQkRBSUxJQVFnQVVIUTRNMEFFSUlGQUF0QkFDQUZRUUZxSUFRYklRRWdBa0YvYWlFQ0N5QUFJQUkyQWdRZ0FDXFxcbkFCTmdJQUlBTkJ3QUJxSkFBTDFnSUJDWDhqQUVFUWF5SUZKQUFnQVNBQktBSUlJZ1pCQVdvaUJ6WUNDQ0FISUFFb0FnQnFJUWdnQVNnQ1xcXG5CQ0VKUVFBaEJ3SkFBa0FDUUFOQUFrQUNRQUpBSUFZZ0Iyb2lDa0VCYWlBSlR3MEFJQWdnQjJvdEFBQWlDMEZRYWlJTVFmOEJjU0lOUVFcXFxucEpEUUlnQjBVTkJTQUVJQWRySVFjZ0MwRWdja0hsQUVjTkFTQUFJQUVnQWlBRElBY1FvQUVNQmdzZ0IwVU5BeUFFSUFkcklRY0xJQUFnXFxcbkFTQUNJQU1nQnhESEFnd0VDd0pBQWtBZ0EwS1pzK2JNbWJQbXpCbFVEUUFnQTBLWnMrYk1tYlBtekJsU0RRRWdEVUVGU3cwQkN5QUJJQVxcXG5wQkFtbzJBZ2dnQjBFQmFpRUhJQU5DQ240Z0RLMUMvd0dEZkNFRERBRUxDeUFBSUFFZ0FpQURJQVFnQjJzUXd3UU1BZ3NnQlVFRk5nSUFcXFxuSUFFZ0JSRE9DQ0VISUFCQkFUWUNBQ0FBSUFjMkFnUU1BUXNnQlVFTk5nSUFJQUVnQlJET0NDRUhJQUJCQVRZQ0FDQUFJQWMyQWdRTElBXFxcblZCRUdva0FBdldBZ0VKZnlNQVFSQnJJZ1VrQUNBQklBRW9BZ2dpQmtFQmFpSUhOZ0lJSUFjZ0FTZ0NBR29oQ0NBQktBSUVJUWxCQUNFSFxcXG5Ba0FDUUFKQUEwQUNRQUpBQWtBZ0JpQUhhaUlLUVFGcUlBbFBEUUFnQ0NBSGFpMEFBQ0lMUVZCcUlneEIvd0Z4SWcxQkNra05BaUFIUlFcXFxuMEZJQVFnQjJzaEJ5QUxRU0J5UWVVQVJ3MEJJQUFnQVNBQ0lBTWdCeENqQVF3R0N5QUhSUTBESUFRZ0Iyc2hCd3NnQUNBQklBSWdBeUFIXFxcbkVNa0NEQVFMQWtBQ1FDQURRcG16NXN5WnMrYk1HVlFOQUNBRFFwbXo1c3lacytiTUdWSU5BU0FOUVFWTERRRUxJQUVnQ2tFQ2FqWUNDQ1xcXG5BSFFRRnFJUWNnQTBJS2ZpQU1yVUwvQVlOOElRTU1BUXNMSUFBZ0FTQUNJQU1nQkNBSGF4REdCQXdDQ3lBRlFRVTJBZ0FnQVNBRkVOMElcXFxuSVFjZ0FFRUJOZ0lBSUFBZ0J6WUNCQXdCQ3lBRlFRMDJBZ0FnQVNBRkVOMElJUWNnQUVFQk5nSUFJQUFnQnpZQ0JBc2dCVUVRYWlRQUMrXFxcbjhDQVFaL1FRZ2hBd0pBQWtBZ0FTZ0NSQ0lFUVFoTERRQWdBVUVFYWlFRklBUWhCZ3dCQ3lBQktBSUVJUVlnQVNnQ0NDRUZJQVFoQXdzQ1xcXG5RQUpBQWtBQ1FDQUdJQUpMRFFBQ1FBSkFJQUpCQ1VrTkFFR0JnSUNBZUNFSElBTWdBa2NOQVF3RUMwR0JnSUNBZUNFSElBUkJDVWtOQXlcXFxuQUJRUUEyQWdBZ0FVRUVhaUFGSUFaQkEzUVFwQTBhSUFFZ0JqWUNSQ0FGSUFNUW1BUU1CQXNnQWtFRGRDRUlRUUFoQnlBQ1FmLy8vLzhCXFxcblN3MERJQWhCL1AvLy93ZExEUU1DUUFKQUlBUkJDVWtOQUNBRFFRTjBJUVFnQTBILy8vLy9BVXNOQXlBRVFmei8vLzhIU3cwRFFRUWhCeVxcXG5BRklBUkJCQ0FJRUxBTElnUU5BUXdGQzBFQUxRRHhwazhhUVFRaEJ5QUlRUVFROXdzaUJFVU5CQ0FFSUFVZ0JrRURkQkNrRFJvTElBRWdcXFxuQWpZQ1JDQUJJQVEyQWdnZ0FTQUdOZ0lFSUFGQkFUWUNBRUdCZ0lDQWVDRUhEQU1MUWZ6ZHdBQkJJRUdjM3NBQUVJTUhBQXNnQkNFSURBXFxcbkVMQ3lBQUlBZzJBZ1FnQUNBSE5nSUFDOHNDQVFOL0l3QkJnQUZySWdJa0FBSkFBa0FDUUFKQUFrQWdBU2dDSENJRFFSQnhEUUFnQTBFZ1xcXG5jUTBCSUFBMUFnQkJBU0FCRU9RQklRQU1CQXNnQUNnQ0FDRUFRUUFoQXdOQUlBSWdBMnBCL3dCcVFUQkIxd0FnQUVFUGNTSUVRUXBKR3lcXFxuQUVham9BQUNBRFFYOXFJUU1nQUVFUFN5RUVJQUJCQkhZaEFDQUVEUUFMSUFOQmdBRnFJZ0JCZ1FGUERRRWdBVUVCUWZ5ZXpnQkJBaUFDXFxcbklBTnFRWUFCYWtFQUlBTnJFR0FoQUF3REN5QUFLQUlBSVFCQkFDRURBMEFnQWlBRGFrSC9BR3BCTUVFM0lBQkJEM0VpQkVFS1NSc2dCR1xcXG5vNkFBQWdBMEYvYWlFRElBQkJEMHNoQkNBQVFRUjJJUUFnQkEwQUN5QURRWUFCYWlJQVFZRUJUdzBCSUFGQkFVSDhuczRBUVFJZ0FpQURcXFxuYWtHQUFXcEJBQ0FEYXhCZ0lRQU1BZ3NnQUVHQUFVSHNuczRBRUlJRkFBc2dBRUdBQVVIc25zNEFFSUlGQUFzZ0FrR0FBV29rQUNBQUM5XFxcblFDQVFaL0l3QkJNR3NpQmlRQUlBWWdCVFlDSENBR0lBUTJBaGdnQVNnQ0NDRUhJQVpCSUdvZ0JrRVlhaERHQ0NBR0tBSWdJUWdDUUFKQVxcXG5Ba0FDUUFKQUlBSkIvd0Z4UVFKSERRQWdDRUVqUmcwRUlBaEJMMFlOQXlBSVFUOUdEUVFnQ0VHQWdNUUFSdzBCREFNTElBWkJLR29vQWdcXFxuQWhDU0FHS0FJa0lRb2dDRUhjQUVjTkFTQUJLQUlZSWd0RkRRRWdDMEVBSUFGQkhHb29BZ0FvQWhRUkJRQU1BUXNnQVVFdkVONEVEQUVMXFxcbkFrQWdBU2dDQUNBSFFTOFEyUWNOQUNBQlFTOFEzZ1FDUUNBSVFkd0FSZzBBSUFoQkwwY05BUXNnQmtFUWFpQUJJQUlnQXlBSElBb2dDUlxcXG5CQklBWW9BaFFoQlNBR0tBSVFJUVFNQWdzZ0JrRUlhaUFCSUFJZ0F5QUhJQVFnQlJCQklBWW9BZ3doQlNBR0tBSUlJUVFNQVFzZ0JpQUJcXFxuUVFJZ0F5QUhJQVFnQlJCQklBWW9BZ1FoQlNBR0tBSUFJUVFMSUFBZ0JUWUNCQ0FBSUFRMkFnQWdCa0V3YWlRQUM5Y0NBUUYvSXdCQjBBXFxcbkJySWdVa0FDQUZRUmhxSUFFZ0FpQURJQVFRbHdFQ1FDQUJRUnBxTFFBQVJRMEFBa0FDUUFKQUFrQUNRQ0FFS0FJQUlBUW9BZ2hCTGhEWlxcXG5CdzBBSUFRb0FnZ2hBU0FFS0FJQUlRTU1BUXNnQlVFUWFpQUVLQUlJSWdGQmYyb2lBaUFFS0FJQUlnUWdBUkRQQmlBRktBSVFJZ05GRFFcXFxuRWdCU2dDRkNFQkN5QUJSUTBCSUFWQktHb2dBeUFCRUprRkFrQURRQ0FGUVFocUlBVkJLR29RbVFFZ0JTZ0NDQ0lFUlEwQklBVW9BZ3dOXFxcbkFBc0xJQVFOQVF3Q0N5QUVJQUZCQUNBQ1FaQ2p3UUFRNUFzQUN5QUZRUUU2QUNJTEFrQWdBVUg5QVVzTkFDQUZRU2hxSUFNZ0FSQ1pCUVxcXG5KQUEwQWdCU0FGUVNocUVKa0JJQVVvQWdBaUJFVU5BU0FGS0FJRVFjQUFTUTBBQ3dzZ0JFVU5BUXNnQlVFQk9nQWhDeUFGUVNocVFRaHFcXFxuSUFWQkdHcEJDR29vQWdBMkFnQWdCU0FGS1FNWU53TW9JQUFnQlVFb2FoQ1NDU0FGUWRBQWFpUUFDOGNDQVFaL1FRQWhBUUpBSUFBdEFCXFxcbjROQUNBQUxRQUlJZ0pCL3dGeFFRVkpEUUFnQUNnQ0JDRURJQUFvQWdBaEJFRUFJUUZCQUNFRkFrQUNRQUpBQWtBZ0FDMEFIQTBBUVFZaFxcXG5Ca0VBSVFVZ0FrSC9BWEZCQmtZaUFnMEFBa0FDUUFKQUFrQUNRQUpBUVFBZ0FFRUlhaUFDR3lJQUxRQUFEZ1lBQVFVQ0F3UUFDeUFBUVFcXFxuaHFLQUlBUVFScUlRWU1CQXNnQUVFSWFpZ0NBQ0FBUVJCcUtBSUFJZ0JCQVdwQkFDQUFHMnBCQ0dvaEJnd0RDeUFBUVFocUtBSUFRUVJxXFxcbklRWU1BZ3NnQUVFSWFpZ0NBQ0FBUVJCcUtBSUFJZ0JCQVdwQkFDQUFHMnBCQW1vaEJnd0JDMEVDSVFZTElBTWdCa2tOQVNBR0lRVUxJQVxcXG5VZ0EwWU5BeUFFSUFWcUlnVkJBV29pQUNBRUlBTnFSdzBCUVM0aEF5QUZJUUFNQWdzZ0JpQURRWXpyelFBUWdnVUFDMEV2SVFNZ0JTMEFcXFxuQUVFdVJ3MEJDeUFBTFFBQUlBTkdJUUVMSUFFTDBRSUJBMzhqQUVFUWF5SUZKQUFDUUFKQUFrQUNRQUpBSUFJTkFFRUJJUVpCQVNBQklBXFxcbklRcEEwaEFTQUZJQUkyQWdnZ0JTQUNOZ0lFSUFVZ0FUWUNBRUVBSVFjZ0JFVU5BZ3dCQ3dKQUFrQWdBa0YvU2lJSFJRMEFRUUF0QVBHbVxcXG5UeG9nQWlBSEVQY0xJZ1pGRFFFZ0JpQUJJQUlRcEEwaEFTQUZJQUkyQWdnZ0JTQUNOZ0lFSUFVZ0FUWUNBQ0FDSUFGcVFYOXFMUUFBUVNcXFxuOUhJUWNnQkEwQ0RBTUxFSmNJQUFzZ0J5QUNFSm9OQUF0QkFDRUJJQU10QUFCQkwwWU5BUXNDUUNBSERRQWdBaUVCREFJTElBVWdBa0VCXFxcbkVPMENJQVVvQWdBaUJpQUZLQUlJSWdKcVFTODZBQUFnQWtFQmFpRUJJQVVvQWdRaEFnc2dCU0FCTmdJSUN3SkFJQUlnQVdzZ0JFOE5BQ1xcXG5BRklBRWdCQkR0QWlBRktBSUFJUVlnQlNnQ0NDRUJDeUFHSUFGcUlBTWdCQkNrRFJvZ0FFRUlhaUFCSUFScU5nSUFJQUFnQlNrREFEY0NcXFxuQUNBRlFSQnFKQUFMdGdNQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBXFxcbkpBQWtBZ0FDZ0NBQTRaQUFFQ0F3UUZCZ2NJQ1FvTERBME9EeEFSRWhNVUZSWVhHQUFMSUFFZ0FDZ0NCQ0FBUVFocUtBSUFFUDhLRHdzZ1xcXG5BRUVFYWlBQkVNNEJEd3NnQVVIU3o4QUFRUmdRL3dvUEN5QUJRYmZQd0FCQkd4RC9DZzhMSUFGQm5jL0FBRUVhRVA4S0R3c2dBVUdFejhcXFxuQUFRUmtRL3dvUEN5QUJRZmpPd0FCQkRCRC9DZzhMSUFGQjVjN0FBRUVURVA4S0R3c2dBVUhTenNBQVFSTVEvd29QQ3lBQlFjVE93QUJCXFxcbkRoRC9DZzhMSUFGQnRzN0FBRUVPRVA4S0R3c2dBVUdxenNBQVFRd1Evd29QQ3lBQlFaek93QUJCRGhEL0NnOExJQUZCanM3QUFFRU9FUFxcXG44S0R3c2dBVUg3emNBQVFSTVEvd29QQ3lBQlFlSE53QUJCR2hEL0NnOExJQUZCbzgzQUFFRStFUDhLRHdzZ0FVR1B6Y0FBUVJRUS93b1BcXFxuQ3lBQlFkdk13QUJCTkJEL0NnOExJQUZCcjh6QUFFRXNFUDhLRHdzZ0FVR0x6TUFBUVNRUS93b1BDeUFCUWYzTHdBQkJEaEQvQ2c4TElBXFxcbkZCNnN2QUFFRVRFUDhLRHdzZ0FVSE95OEFBUVJ3US93b1BDeUFCUWJiTHdBQkJHQkQvQ2d2R0FnRUZmeU1BUWNBQWF5SURKQUFDUUFKQVxcXG5JQUpGRFFCQkFTRUVJQUV0QUFCQkwwWU5BUXRCQUNFRUN5QURJQVE2QUQ0Z0EwRUdPZ0FvSUFNZ0FqWUNKQ0FESUFFMkFpQWdBMEdBQkRcXFxuc0JQQ0FESUFOQklHb1FPRUVBSVFJQ1FBSkFBa0FnQXkwQUFDSUVRUXBIRFFBTUFRc2dBeWdDQkNJRlFRQWdCRUVKUmhzaUJrVU5BQUpBXFxcbkFrQWdBeWdDQ0NJQlFRSkhEUUFnQmk4QUFFR3UzQUJIRFFCQkFDRUNEQUVMUVFBaEJVRUFJUUlnQmlFRUEwQUNRQ0FCSUFKSERRQWdCaVxcXG5FQ0RBSUxJQUpCQVdvaEFpQUVRWDlxSWdRZ0FXb2lCeTBBQUVFdVJ3MEFDeUFCSUFFZ0FtdEJBV29pQkVrTkFnSkFBa0FnQVNBQ1J3MEFcXFxuUVFBaEFnd0JDeUFDUVg5cUlRRWdCMEVCYWlFQ0N5QUdJUVVMSUFKQkFDQUZHeUVDQ3lBQUlBRTJBZ1FnQUNBQ05nSUFJQU5Cd0FCcUpBXFxcbkFQQ3lBRUlBRkIwT0ROQUJDQ0JRQUwxQUlDQlg4RWZpTUFRUkJySWdJa0FFRUFJUU1DUUFKQUlBRkZEUUFnQVNnQ0RFVU5BQ0FCUVJCcVxcXG5RZC9xd0FCQkRCQ1lBU0VISUFKQkREWUNCQ0FDUWQvcXdBQTJBZ0FnQWlBQk5nSU1JQWRDR1loQy93Q0RRb0dDaElpUW9NQ0FBWDRoQ0NcXFxuQUJLQUlFSWdRZ0I2ZHhJUU1nQWlBQ05nSUlJQUVvQWdBaEJVRUFJUVlEUUNBRklBTnFLUUFBSWdrZ0NJVWlCMEovaFNBSFF2LzkrL2Z2XFxcbjM3Ly9mbnlEUW9DQmdvU0lrS0RBZ0grRElRY0RRQUpBSUFkQ0FGSU5BQUpBSUFrZ0NVSUJob05DZ0lHQ2hJaVFvTUNBZjROUURRQkJBQ1xcXG5FRERBVUxJQU1nQmtFSWFpSUdhaUFFY1NFRERBSUxJQWQ2SVFvZ0IwSi9mQ0FIZ3lFSElBSkJDR29nQ3FkQkEzWWdBMm9nQkhFaUFSREdcXFxuQ1VVTkFBc0xJQVZCQUNBQmEwRVliR3BCYUdvaUJDZ0NEQ0VESUFSQkZHb29BZ0FoQkF3QkN3c2dBQ0FESUFRUWh3b2hBeUFDUVJCcUpBXFxcbkFnQTBIL0FYRUw3QUlDQlg4QmZpTUFRY0FBYXlJREpBQUNRQUpBSUFBdEFBaEZEUUFnQUNnQ0FDRUVRUUVoQlF3QkN5QUFLQUlBSVFRQ1xcXG5RQ0FBUVFScUtBSUFJZ1lvQWh3aUIwRUVjUTBBUVFFaEJTQUdLQUlVUWJHZXpnQkJ1NTdPQUNBRUcwRUNRUUVnQkJzZ0JrRVlhaWdDQUNcXFxuZ0NEQkVKQUEwQklBRWdCaUFDS0FJTUVRWUFJUVVNQVFzQ1FDQUVEUUFDUUNBR0tBSVVRYm1lemdCQkFpQUdRUmhxS0FJQUtBSU1FUWtBXFxcblJRMEFRUUVoQlVFQUlRUU1BZ3NnQmlnQ0hDRUhDMEVCSVFVZ0EwRUJPZ0FYSUFOQk1HcEJrSjdPQURZQ0FDQURJQVlwQWhRM0F3Z2dBeVxcXG5BRFFSZHFOZ0lRSUFNZ0Jpa0NDRGNESUNBR0tRSUFJUWdnQXlBSE5nSTBJQU1nQmlnQ0VEWUNLQ0FESUFZdEFDQTZBRGdnQXlBSU53TVlcXFxuSUFNZ0EwRUlhallDTENBQklBTkJHR29nQWlnQ0RCRUdBQTBBSUFNb0FpeEJyNTdPQUVFQ0lBTW9BakFvQWd3UkNRQWhCUXNnQUNBRk9nXFxcbkFJSUFBZ0JFRUJhallDQUNBRFFjQUFhaVFBSUFBTHp3SUNBbjhCZmlNQVFkQUFheUlDSkFBZ0FrRUlhaUFCRU1FRkFrQUNRQ0FDS0FJSVxcXG5EUUFnQUVJQU53SUFEQUVMSUFJb0Fnd2hBU0FDSUFKQkNHcEJDR29vQWdBaUF6WUNGQ0FDUVRocUlBRVE3dzBRa1FRQ1FDQUNLQUk0UlFcXFxuMEFJQUpCR0dwQkNHb2dBa0U0YWtFSWFpZ0NBRFlDQUNBQ0lBSXBBemczQXhnZ0FrRTRhaUFERU84TkVKRUVBa0FnQWlnQ09BMEFJQUFnXFxcbkFpZ0NQRFlDQkNBQVFRRTJBZ0FnQWtFWWFoRGpEQXdDQ3lBQ1FTaHFRUWhxSUFKQk9HcEJDR29pQVNnQ0FDSUROZ0lBSUFJZ0Fpa0RPQ1xcXG5JRU53TW9JQUVnQWtFWWFrRUlhaWdDQURZQ0FDQUNRVGhxUVJScUlBTTJBZ0FnQUNBQ0tRTVlOd0lFSUFJZ0JEY0NSQ0FBUVF4cUlBRXBcXFxuQXdBM0FnQWdBRUVVYWlBQ1FjZ0FhaWtEQURjQ0FDQUFRUUEyQWdBTUFRc2dBQ0FDS0FJOE5nSUVJQUJCQVRZQ0FDQUNRUlJxRUlRTEN5XFxcbkFDUWRBQWFpUUFDOGdDQVFWL0lBQW9BaGdoQVFKQUFrQUNRQ0FBRU9FTklBQkhEUUFnQUVFVVFSQWdBRUVVYWlJQ0tBSUFJZ01iYWlnQ1xcXG5BQ0lFRFFGQkFDRUNEQUlMSUFBUTRnMGlCQ0FBRU9FTklnSVFpdzQyQWd3Z0FpQUVFSXNPTmdJSURBRUxJQUlnQUVFUWFpQURHeUVEQTBcXFxuQWdBeUVGSUFRaUFrRVVhaUlFSUFKQkVHb2dCQ2dDQUNJRUd5RURJQUpCRkVFUUlBUWJhaWdDQUNJRURRQUxJQVZCQURZQ0FBc0NRQ0FCXFxcblJRMEFBa0FDUUNBQUtBSWNRUUowUWVDbnp3QnFJZ1FvQWdBZ0FFWU5BQ0FCUVJCQkZDQUJLQUlRSUFCR0cyb2dBallDQUNBQ1JRMENEQVxcXG5FTElBUWdBallDQUNBQ0RRQkJBRUVBS0FMOHFrOUJmaUFBS0FJY2QzRTJBdnlxVHc4TElBSWdBVFlDR0FKQUlBQW9BaEFpQkVVTkFDQUNcXFxuSUFRMkFoQWdCQ0FDTmdJWUN5QUFRUlJxS0FJQUlnUkZEUUFnQWtFVWFpQUVOZ0lBSUFRZ0FqWUNHQThMQzlBQ0FnTi9BWDRqQUVHQUFXXFxcbnNpQlNRQUlBVkJLR29nQUNBQkVJb0RBa0FDUUFKQUlBVW9BaWdpQmtVTkFDQUZJQVVvQWpBaUJ6WUNJQ0FGSUFVb0FpdzJBaHdnQlNBR1xcXG5OZ0lZSUFWQktHb2dCU0FHSUFjZ0F5QUVFSXNEQWtBQ1FBSkFJQVV0QUNoQkJFWU5BQ0FGS1FNb0lnaEMvd0dEUWdSU0RRRUxJQVZCQ0dcXFxub2dCUkRXQmlBRktRTUlJUWdnQlNnQ0VDRUVJQVZCOEFCcUlBRVFpQVVnQlVIb0FHb2dBa0VZYWlrREFEY0RBQ0FGUWVBQWFpQUNRUkJxXFxcbktRTUFOd01BSUFWQndBQnFRUmhxSUFKQkNHb3BBd0EzQXdBZ0JTQUVOZ0pJSUFVZ0NEY0RRQ0FGSUFJcEF3QTNBMUJCQUNFQklBQWdCaVxcXG5BSElBVkJ3QUJxRUxNQklnWU5BU0FGUVJocUVPTU1RUUFoQmd3RUN5QUZJQWczQXpoQkFTRUJJQVZCT0dvUXNBa2hCZ3NnQlVFWWFoRGpcXFxuRENBQkRRRU1BZ3NnQlNnQ0xDRUdDeUFDRUlVTEN5QUZRWUFCYWlRQUlBWUw0d0lDQVg4QmZpTUFRZUFCYXlJRUpBQWdCRUdZQVdvZ0FpXFxcbkFERUpvSkFrQUNRQUpBSUFRb0FwZ0JJZ05CQWtjTkFDQUVMUUNjQVJDeURTRUREQUVMSUFRdEFKd0JJUUlnQkVIUUFHcEJCWElnQkVHWVxcXG5BV3BCQlhKQnd3QVFwQTBhSUFRZ0Fqb0FWQ0FFSUFNMkFsQkJBQ0VESUFSQkFEWUNuQUVnQkNBRVFkQUFhallDbUFFZ0JFRVFhaUFCSUFcXFxuUkIwQUJxRUpZRUlBUkJtQUZxUVFSeUVNd0xJQVJCNUFCcUVPTU1RWUFCSVFJQ1FBSkFBa0FnQkNnQ0dDSUJRWURzbEtOOGFnNENBUUlBXFxcbkN5QUVLUU1RSVFVZ0JDQUJOZ0tnQVNBRUlBVTNBNWdCSUFSQm1BRnFRUXhxSUFSQkVHcEJER3BCTkJDa0RSb2dCRUVJYWlBRVFhZ0JhaFxcXG5EVENDQUVLQUlJSUFRb0Fnd1E0Z2NoQWlBRVFaZ0JhaENmQ3dzZ0JDQUNOZ0tjQVF3Q0N5QUVLQUlRSVFNTElBUWdBellDbkFGQkFTRURcXFxuQ3lBRUlBTTJBcGdCSUFRZ0JFR1lBV29RdHdnZ0FDQUVLUU1BTndNQUlBUkI0QUZxSkFBTHVRSUJCWDhqQUVFZ2F5SUJKQUFnQVVFSWFpXFxcbkFBRUprR0FrQUNRQUpBQWtBZ0FTMEFDQTBBQWtBQ1FDQUJMUUFKSWdKQk1FY05BQ0FBS0FJSUlnSWdBQ2dDQkNJRFNRMEJEQVFMSUFKQlxcXG5UMnBCL3dGeFFRaExEUUlnQUNnQ0NDSUNJQUFvQWdRaUF5QUNJQU5MR3lFRUlBQW9BZ0FoQlFOQUlBUWdBa1lOQkNBRklBSnFMUUFBUVZcXFxuQnFRZjhCY1VFSlN3MEVJQUFnQWtFQmFpSUNOZ0lJREFBTEN5QUFLQUlBSUFKcUxRQUFRVkJxUWY4QmNVRUpTdzBDSUFGQkRUWUNFQ0FBXFxcbklBRkJFR29RemdnaEJBd0RDeUFCS0FJTUlRUU1BZ3NnQVVFTk5nSVFJQUFnQVVFUWFoRFBDQ0VFREFFTFFRQWhCQ0FDSUFOUERRQUNRQ1xcXG5BQUtBSUFJQUpxTFFBQUlnSkI1UUJHRFFBZ0FrSEZBRVlOQUNBQ1FTNUhEUUVnQUJDakF5RUVEQUVMSUFBUXd3SWhCQXNnQVVFZ2FpUUFcXFxuSUFRTHd3SUJCWDlCQUNFQ0FrQWdBVUdBQWtrTkFFRWZJUUlnQVVILy8vOEhTdzBBSUFGQkJpQUJRUWgyWnlJQ2EzWkJBWEVnQWtFQmRHXFxcbnRCUG1vaEFnc2dBRUlBTndJUUlBQWdBallDSENBQ1FRSjBRZUNuendCcUlRTWdBQkNMRGlFRUFrQUNRQUpBQWtBQ1FFRUFLQUw4cWs4aVxcXG5CVUVCSUFKMElnWnhSUTBBSUFNb0FnQWhCU0FDRVB3S0lRSWdCUkNMRGhDVkRTQUJSdzBCSUFVaEFnd0NDMEVBSUFVZ0JuSTJBdnlxVHlcXFxuQURJQUEyQWdBZ0FDQUROZ0lZREFNTElBRWdBblFoQXdOQUlBVWdBMEVkZGtFRWNXcEJFR29pQmlnQ0FDSUNSUTBDSUFOQkFYUWhBeUFDXFxcbklRVWdBaENMRGhDVkRTQUJSdzBBQ3dzZ0FoQ0xEaUlDS0FJSUlnTWdCRFlDRENBQ0lBUTJBZ2dnQkNBQ05nSU1JQVFnQXpZQ0NDQUFRUVxcXG5BMkFoZ1BDeUFHSUFBMkFnQWdBQ0FGTmdJWUN5QUVJQVEyQWdnZ0JDQUVOZ0lNQzhBQ0FRZC9Jd0JCRUdzaUFpUUFRUUVoQXdKQUFrQWdcXFxuQVNnQ0ZDSUVRU2NnQVVFWWFpZ0NBQ2dDRUNJRkVRWUFEUUFnQWlBQUtBSUFRWUVDRUdFQ1FBSkFJQUl0QUFCQmdBRkhEUUFnQWtFSWFpXFxcbkVHUVlBQklRY0RRQUpBQWtBZ0IwSC9BWEZCZ0FGR0RRQWdBaTBBQ2lJQUlBSXRBQXRQRFFRZ0FpQUFRUUZxT2dBS0lBQkJDazhOQmlBQ1xcXG5JQUJxTFFBQUlRRU1BUXRCQUNFSElBWkJBRFlDQUNBQ0tBSUVJUUVnQWtJQU53TUFDeUFFSUFFZ0JSRUdBRVVOQUF3REN3c2dBaTBBQ2lcXFxuSUJRUW9nQVVFS1N4c2hBQ0FDTFFBTElnY2dBU0FISUFGTEd5RUlBMEFnQ0NBQlJnMEJJQUlnQVVFQmFpSUhPZ0FLSUFBZ0FVWU5BeUFDXFxcbklBRnFJUVlnQnlFQklBUWdCaTBBQUNBRkVRWUFSUTBBREFJTEN5QUVRU2NnQlJFR0FDRURDeUFDUVJCcUpBQWdBdzhMSUFCQkNrSDR0OFxcXG40QUVJRUZBQXVzQWdFRGZ5TUFRUkJySWdJa0FDQUFLQUlBSVFBZ0FrRUFOZ0lNQWtBQ1FDQUJRWUFCU1EwQUFrQWdBVUdBRUVrTkFBSkFcXFxuSUFGQmdJQUVTUTBBSUFJZ0FVRS9jVUdBQVhJNkFBOGdBaUFCUVFaMlFUOXhRWUFCY2pvQURpQUNJQUZCREhaQlAzRkJnQUZ5T2dBTklBXFxcbklnQVVFU2RrRUhjVUh3QVhJNkFBeEJCQ0VCREFNTElBSWdBVUUvY1VHQUFYSTZBQTRnQWlBQlFReDJRZUFCY2pvQURDQUNJQUZCQm5aQlxcXG5QM0ZCZ0FGeU9nQU5RUU1oQVF3Q0N5QUNJQUZCUDNGQmdBRnlPZ0FOSUFJZ0FVRUdka0hBQVhJNkFBeEJBaUVCREFFTElBSWdBVG9BREVcXFxuRUJJUUVMQWtBZ0FDZ0NBQ0lESUFGcUlnUWdBMGtnQkVFUFMzSWlCQTBBSUFBZ0EycEJCR29nQWtFTWFpQUJFS1FOR2lBQUlBQW9BZ0FnXFxcbkFXbzJBZ0FMSUFKQkVHb2tBQ0FFQzZ3Q0FRVi9Ba0FDUUFKQUFrQWdBa0VEYWtGOGNTSUVJQUpHRFFBZ0JDQUNheUlFSUFNZ0JDQURTUlxcXG5zaUJFVU5BRUVBSVFVZ0FVSC9BWEVoQmtFQklRY0RRQ0FDSUFWcUxRQUFJQVpHRFFRZ0JDQUZRUUZxSWdWSERRQUxJQVFnQTBGNGFpSUlcXFxuU3cwQ0RBRUxJQU5CZUdvaENFRUFJUVFMSUFGQi93RnhRWUdDaEFoc0lRVURRQ0FDSUFScUlnY29BZ0FnQlhNaUJrRi9jeUFHUWYvOSszXFxcbmRxY1VHQWdZS0VlSEVOQVNBSFFRUnFLQUlBSUFWeklnWkJmM01nQmtILy9mdDNhbkZCZ0lHQ2hIaHhEUUVnQkVFSWFpSUVJQWhORFFBTFxcXG5DMEVBSVFjQ1FDQUVJQU5HRFFBZ0FVSC9BWEVoQlFOQUFrQWdBaUFFYWkwQUFDQUZSdzBBSUFRaEJVRUJJUWNNQXdzZ0F5QUVRUUZxSWdcXFxuUkhEUUFMQ3lBRElRVUxJQUFnQlRZQ0JDQUFJQWMyQWdBTHpnSUNDSDhDZmlNQVFUQnJJZ1VrQUVFQUlRWWdCVUVBTmdJY0lBVWdBU2dDXFxcbkJDSUhJQUtuY1NJSU5nSVlJQUpDR1loQy93Q0RRb0dDaElpUW9NQ0FBWDRoRFNBQktBSUFJUWxCQUNFS0FrQURRQ0FGSUFrZ0NHb3BBQVxcXG5BaUFqY0RJQ0FGSUFJZ0RZVWlEa0ovaFNBT1F2LzkrL2Z2MzcvL2ZueURRb0NCZ29TSWtLREFnSCtETndNb0FrQUNRQU5BSUFWQkVHb2dcXFxuQlVFb2FoQ0VCd0pBSUFVb0FoQU5BQ0FLUlEwQ0RBTUxJQU1nQlNnQ0ZDQUlhaUFIY1NJTElBUW9BaEFSQmdCRkRRQUxRUUFoQ0F3REN5XFxcbkFGUVFocUlBRWdCVUVnYWlBRlFSaHFFTnNJSUFVb0Fnd2hEQ0FGS0FJSUlRb0xBa0FnQWlBQ1FnR0dnMEtBZ1lLRWlKQ2d3SUIvZzFCRlxcXG5EUUFnQlNBR1FRaHFJZ1kyQWh3Z0JTQUdJQWhxSUFkeElnZzJBaGdNQVFzTFFRRWhDQ0FCSUF3UXBna2hDd3NnQUNBTE5nSUVJQUFnQ0RcXFxuWUNBQ0FGUVRCcUpBQUwwUUlCQkg4akFFSGdBR3NpQVNRQUlBRkJBRFlDTUNBQlFnRTNBeWdnQVVFNGFpQUJRU2hxUVppdHdBQVF5d2dDXFxcblFDQUFJQUZCT0dvUTVRRU5BQ0FCUVJocVFRaHFJZ0lnQVVFb2FrRUlhaWdDQURZQ0FDQUJJQUVwQXlnM0F4Z2dBVUVZYWtIMHI4QUFRZlxcXG42dndBQVE5d2dnQVVFUWFoQVFJZ01RRVNBQktBSVFJUUFnQVNBQktBSVVJZ1EyQWtBZ0FTQUVOZ0k4SUFFZ0FEWUNPQ0FCUVFocUlBRkJcXFxuT0dvUThnb2dBU0FCS0FJTUlnQTJBakFnQVNBQU5nSXNJQUVnQVNnQ0NDSUVOZ0lvSUFGQkdHb2dCQ0FBRVB3TElBRkJHR3BCL3EvQUFFXFxcbkdBc01BQUVQY0lJQUZCT0dwQkNHb2dBaWdDQURZQ0FDQUJJQUVwQXhnM0F6Z2dBU0FCUVRocUVQSUtJQUVvQWdBZ0FTZ0NCQkFTSUFGQlxcXG5LR29RK3d3Q1FDQURRWVFCU1EwQUlBTVFBUXNnQVVIZ0FHb2tBQThMUWJDdHdBQkJOeUFCUVJocVFlaXR3QUJCeEs3QUFCRENCQUFMcHdcXFxuSUJCbjhDUUFKQUlBRW9BZ0FpQWlBQktBSUVJZ05IRFFCQkFDRUJEQUVMSUFFZ0EwRi9haUlFTmdJRUFrQWdCQzBBQUNJRndDSUdRWDlLXFxcbkRRQUNRQUpBSUFJZ0JFY05BRUVBSVFNZ0FpRUZEQUVMSUFFZ0EwRithaUlGTmdJRUlBVWhBd3NDUUFKQUlBTXRBQUFpQThBaUJFRkFTQVxcXG4wQUlBTkJIM0VoQVF3QkN3SkFBa0FnQWlBRlJ3MEFRUUFoQXlBQ0lRVU1BUXNnQVNBRlFYOXFJZ1UyQWdRZ0JTRURDd0pBQWtBZ0F5MEFcXFxuQUNJRHdDSUhRVUJJRFFBZ0EwRVBjU0VCREFFTEFrQUNRQ0FDSUFWSERRQkJBQ0VGREFFTElBRWdCVUYvYWlJRk5nSUVDeUFGTFFBQVFRXFxcbmR4UVFaMElBZEJQM0Z5SVFFTElBRkJCblFnQkVFL2NYSWhBUXNnQVVFR2RDQUdRVDl4Y2lFRkMwRUJJUUVMSUFBZ0JUWUNCQ0FBSUFFMlxcXG5BZ0FMMlFJQ0JIOEJmaU1BUWNBQWF5SURKQUJCQVNFRUFrQWdBQzBBQkEwQUlBQXRBQVVoQkFKQUFrQUNRQUpBSUFBb0FnQWlCU2dDSENcXFxuSUdRUVJ4RFFBZ0JFSC9BWEVOQVF3REN5QUVRZjhCY1EwQlFRRWhCQ0FGS0FJVVFiMmV6Z0JCQVNBRlFSaHFLQUlBS0FJTUVRa0FEUU1nXFxcbkJTZ0NIQ0VHREFFTFFRRWhCQ0FGS0FJVVFiR2V6Z0JCQWlBRlFSaHFLQUlBS0FJTUVRa0FSUTBCREFJTFFRRWhCQ0FEUVFFNkFCY2dBMFxcXG5Fd2FrR1FuczRBTmdJQUlBTWdCU2tDRkRjRENDQURJQU5CRjJvMkFoQWdBeUFGS1FJSU53TWdJQVVwQWdBaEJ5QURJQVkyQWpRZ0F5QUZcXFxuS0FJUU5nSW9JQU1nQlMwQUlEb0FPQ0FESUFjM0F4Z2dBeUFEUVFocU5nSXNJQUVnQTBFWWFpQUNLQUlNRVFZQURRRWdBeWdDTEVHdm5zXFxcbjRBUVFJZ0F5Z0NNQ2dDREJFSkFDRUVEQUVMSUFFZ0JTQUNLQUlNRVFZQUlRUUxJQUJCQVRvQUJTQUFJQVE2QUFRZ0EwSEFBR29rQUF1a1xcXG5BZ0lEZndGK0FrQWdBZzBBSUFCQkFEb0FBU0FBUVFFNkFBQVBDd0pBQWtBQ1FBSkFJQUV0QUFCQlZXb09Bd0VDQUFJTElBSkJBVVlOQWdcXFxud0JDeUFDUVg5cUlnSkZEUUVnQVVFQmFpRUJDd0pBQWtBQ1FDQUNRUWxKRFFCQkFDRURBMEFnQWtVTkFpQUJMUUFBUVZCcUlnUkJDVXNOXFxcbkJDQURyVUlLZmlJR1FpQ0lwMEVBUncwRElBUWdCU0FFUVFwSkd5RURJQUZCQVdvaEFTQUNRWDlxSVFJZ0JDRUZJQU1nQnFjaUJHb2lBeVxcXG5BRVR3MEFDeUFBUVFJNkFBRWdBRUVCT2dBQUR3dEJBQ0VEQTBBZ0FTMEFBRUZRYWlJRVFRbExEUU1nQVVFQmFpRUJJQVFnQTBFS2JHb2hcXFxuQXlBQ1FYOXFJZ0lOQUFzTElBQWdBellDQkNBQVFRQTZBQUFQQ3lBQVFRSTZBQUVnQUVFQk9nQUFEd3NnQUVFQk9nQUJJQUJCQVRvQUFBXFxcbnUyQWdFRGZ5TUFRU0JySWdFa0FDQUJJQUFRbWdZQ1FBSkFBa0FDUUFKQUFrQWdBUzBBQUEwQUFrQUNRQUpBSUFFdEFBRWlBa0V3UncwQVxcXG5JQUZCQ0dvZ0FCRGVDQ0FCTFFBSURRRWdBUzBBQ1VGUWFrSC9BWEZCQ2trTkFnd0ZDeUFDUVU5cVFmOEJjVUVJU3cwREEwQWdBVUVRYWlcXFxuQUFFTjRJSUFFdEFCQU5CaUFCTFFBUlFWQnFRZjhCY1VFS1R3MEZJQUFRZ3d3TUFBc0xJQUVvQWd3aEFnd0dDeUFCUVEwMkFoQWdBQ0FCXFxcblFSQnFFTjBJSVFJTUJRc2dBU2dDQkNFQ0RBUUxJQUZCRFRZQ0VDQUFJQUZCRUdvUTN3Z2hBZ3dEQ3lBQlFSQnFJQUFRM2dnZ0FTMEFFRVxcXG5VTkFRc2dBU2dDRkNFQ0RBRUxBa0FnQVMwQUVTSURRUzVHRFFBQ1FDQURRY1VBUmcwQVFRQWhBaUFEUWVVQVJ3MENDeUFBRUljRElRSU1cXFxuQVFzZ0FCRFFBeUVDQ3lBQlFTQnFKQUFnQWd1eEFnRUhmeU1BUVRCcklnTWtBQ0FEUVFBMkFpZ2dBeUFCTmdJZ0lBTWdBVFlDR0NBRElBXFxcbkkyQWh3Z0F5QUJJQUpxSWdRMkFpUWdBMEVnYWlFQ0lBRWhCUUpBQTBBZ0EwRVFhaUFDRU53RUlBTW9BaFFpQmtGM2FpSUhRUmRMRFFGQlxcXG5BU0FIZEVHVGdJQUVjVVVOQVNBREtBSWdJUVVnQXlnQ0pDRUVEQUFMQ3dKQUFrQWdCa0dBZ01RQVJnMEFJQVFnQldzZ0F5Z0NFQ0lJYWlcXFxuQURLQUlnYWlBREtBSWtheUVKREFFTFFRQWhDRUVBSVFrTEFrQURRQ0FES0FJZ0lRUWdBeWdDSkNFRklBTkJDR29nQWhDckFpQURLQUlNXFxcbklnWkJkMm9pQjBFWFN3MEJRUUVnQjNSQms0Q0FCSEVOQUFzTEFrQWdCa0dBZ01RQVJnMEFJQVVnQkdzZ0F5Z0NDR29nQXlnQ0lHb2dBeVxcXG5nQ0pHc2hDUXNnQUNBSklBaHJOZ0lFSUFBZ0FTQUlhallDQUNBRFFUQnFKQUFMdEFJQ0EzOEJmaU1BUWFBQ2F5SURKQUFnQTBFWWFpQURcXFxuSUFFb0FnQWdBU2dDQ0JDd0FnSkFBa0FDUUFKQUFrQWdBeWdDR0VVTkFDQURRUmhxUVFSeUVPQUhEQUVMSUFNb0Fod2lCQTBCQzBFQUlRXFxcblFnQTBFQU5nSUlEQUVMSUFNZ0EwRWdhaWtEQURjQ3BBRWdBeUFFTmdLZ0FTQURRUmhxSUFOQm9BRnFFSWtGQWtBZ0F5MEFLRUVDUncwQVxcXG5JQU5CQ0dwQkNHb2dBMEVZYWtFSWFpZ0NBQ0lGTmdJQUlBTWdBeWtER0NJR053TUlJQWFuSVFRTUFndEJBQ0VFSUFOQkFEWUNDQ0FEUVJcXFxuaHFFT01NQ3dzZ0EwR2dBV29nQkNBRklBSVFZeUFEUVJocVFRUnFJQU5Cb0FGcVFZQUJFS1FOR2lBQVFRQTJBZ0FnQUVHUUFXb2dBVUVJXFxcbmFpZ0NBRFlDQUNBQUlBRXBBZ0EzQW9nQklBQkJCR29nQTBFWWFrR0VBUkNrRFJvZ0EwRUlhaERNQ3lBRFFhQUNhaVFBQzZjQ0FnVi9BWFxcXG40akFFSFFBR3NpQWlRQUlBSkJDR3BCZnlBQVFRTnNJZ0JCZjJwbmRrRUJha0VCSUFCQkFVc2JJZ05CQUJEOUF5QUNRUUEyQWhnZ0FpQUNcXFxuS0FJTU5nSVVJQUlnQWlnQ0NDSUVOZ0lRUVFBaEFFRUFJUVVDUUFOQUlBTWdCVVlOQVNBRlFRRnFJUVVDUUNBQUlBSW9BaFJIRFFBZ0FrXFxcbkVRYWlBQUVQNElJQUlvQWhBaEJDQUNLQUlZSVFBTElBUWdBRUVHZEdvaUJpQUZOZ0lNSUFaQkFEWUNDQ0FHUWdBM0F3QWdCa0VRYWlBQ1xcXG5RU0JxUVRBUXBBMGFJQUlnQUVFQmFpSUFOZ0lZREFBTEN5QUNRU0JxUVFocUlBSkJFR3BCQ0dvb0FnQTJBZ0FnQWlBQ0tRTVFOd01nSUFcXFxuSWdBa0VnYWhEMENpQUNLUU1BSVFkQkVCQ3VCeUlBSUFFMkFnd2dBRUVmSUFObmF6WUNDQ0FBSUFjM0FnQWdBa0hRQUdva0FDQUFDNmNDXFxcbkFRSi9Jd0JCRUdzaUFpUUFBa0FDUUNBQlFmOEFTdzBBQWtBZ0FDZ0NDQ0lESUFBb0FnUkhEUUFnQUNBREVQZ0lJQUFvQWdnaEF3c2dBQ1xcXG5nQ0FDQURhaUFCT2dBQUlBQWdBQ2dDQ0VFQmFqWUNDQXdCQ3lBQ1FRQTJBZ3dDUUFKQUlBRkJnQkJKRFFBQ1FDQUJRWUNBQkVrTkFDQUNcXFxuSUFGQlAzRkJnQUZ5T2dBUElBSWdBVUVHZGtFL2NVR0FBWEk2QUE0Z0FpQUJRUXgyUVQ5eFFZQUJjam9BRFNBQ0lBRkJFblpCQjNGQjhBXFxcbkZ5T2dBTVFRUWhBUXdDQ3lBQ0lBRkJQM0ZCZ0FGeU9nQU9JQUlnQVVFTWRrSGdBWEk2QUF3Z0FpQUJRUVoyUVQ5eFFZQUJjam9BRFVFRFxcXG5JUUVNQVFzZ0FpQUJRVDl4UVlBQmNqb0FEU0FDSUFGQkJuWkJ3QUZ5T2dBTVFRSWhBUXNnQUNBQ1FReHFJQUVRL0FzTElBSkJFR29rQUVcXFxuRUFDNmNDQVFKL0l3QkJFR3NpQWlRQUFrQUNRQ0FCUWY4QVN3MEFBa0FnQUNnQ0NDSURJQUFvQWdSSERRQWdBQ0FERUpVSklBQW9BZ2doXFxcbkF3c2dBQ2dDQUNBRGFpQUJPZ0FBSUFBZ0FDZ0NDRUVCYWpZQ0NBd0JDeUFDUVFBMkFnd0NRQUpBSUFGQmdCQkpEUUFDUUNBQlFZQ0FCRVxcXG5rTkFDQUNJQUZCUDNGQmdBRnlPZ0FQSUFJZ0FVRUdka0UvY1VHQUFYSTZBQTRnQWlBQlFReDJRVDl4UVlBQmNqb0FEU0FDSUFGQkVuWkJcXFxuQjNGQjhBRnlPZ0FNUVFRaEFRd0NDeUFDSUFGQlAzRkJnQUZ5T2dBT0lBSWdBVUVNZGtIZ0FYSTZBQXdnQWlBQlFRWjJRVDl4UVlBQmNqXFxcbm9BRFVFRElRRU1BUXNnQWlBQlFUOXhRWUFCY2pvQURTQUNJQUZCQm5aQndBRnlPZ0FNUVFJaEFRc2dBQ0FDUVF4cUlBRVFrd3dMSUFKQlxcXG5FR29rQUVFQUM0NENBUVYvSUFBZ0FVRURkR29oQlNBQUlBSkJBM1FpQm1vaEJ3SkFBa0FDUUNBQklBSnJJZ0VnQWs4TkFDQURJQWNnQVVcXFxuRURkQ0lDRUtRTklnZ2dBbW9oQWlBRlFYaHFJUUVEUUNBSElBQk5EUUlnQWlBSVRRMENJQUVnQjBGNFFRQWdBa0Y0YWlnQ0FDSUdJQWRCXFxcbmVHb29BZ0FpQ1VraUJSdHFJZ2NnQWtGNFFRQWdCaUFKVHh0cUlnSWdCUnNwQWdBM0FnQWdBVUY0YWlFQkRBQUxDeUFESUFBZ0JoQ2tEU1xcXG5BR2FpRUNBMEFnQXlBQ1R3MENJQWNnQlU4TkFpQUFJQWNnQXlBSEtBSUFJZ0VnQXlnQ0FDSUdTU0lKR3lrQ0FEY0NBQ0FBUVFocUlRQWdcXFxuQXlBQklBWlBRUU4wYWlFRElBY2dDVUVEZEdvaEJ3d0FDd3NnQnlFQUN5QUFJQU1nQWlBRGF4Q2tEUm9MamdJQkJYOGdBQ0FCUVFOMGFpXFxcbkVGSUFBZ0FrRURkQ0lHYWlFSEFrQUNRQUpBSUFFZ0Ftc2lBU0FDVHcwQUlBTWdCeUFCUVFOMElnSVFwQTBpQ0NBQ2FpRUNJQVZCZUdvaFxcXG5BUU5BSUFjZ0FFME5BaUFDSUFoTkRRSWdBU0FIUVhoQkFDQUNRWGhxTFFBQUlnWWdCMEY0YWkwQUFDSUpTU0lGRzJvaUJ5QUNRWGhCQUNcXFxuQUdJQWxQRzJvaUFpQUZHeWtDQURjQ0FDQUJRWGhxSVFFTUFBc0xJQU1nQUNBR0VLUU5JQVpxSVFJRFFDQURJQUpQRFFJZ0J5QUZUdzBDXFxcbklBQWdCeUFESUFjdEFBQWlBU0FETFFBQUlnWkpJZ2tiS1FJQU53SUFJQUJCQ0dvaEFDQURJQUVnQms5QkEzUnFJUU1nQnlBSlFRTjBhaVxcXG5FSERBQUxDeUFISVFBTElBQWdBeUFDSUFOckVLUU5HZ3VuQWdFQmZ5TUFRUkJySWdJa0FDQUFLQUlBSVFBQ1FBSkFJQUVvQWdBZ0FTZ0NcXFxuQ0hKRkRRQWdBa0VBTmdJTUFrQUNRQ0FBUVlBQlNRMEFBa0FnQUVHQUVFa05BQUpBSUFCQmdJQUVTUTBBSUFJZ0FFRS9jVUdBQVhJNkFBXFxcbjhnQWlBQVFSSjJRZkFCY2pvQURDQUNJQUJCQm5aQlAzRkJnQUZ5T2dBT0lBSWdBRUVNZGtFL2NVR0FBWEk2QUExQkJDRUFEQU1MSUFJZ1xcXG5BRUUvY1VHQUFYSTZBQTRnQWlBQVFReDJRZUFCY2pvQURDQUNJQUJCQm5aQlAzRkJnQUZ5T2dBTlFRTWhBQXdDQ3lBQ0lBQkJQM0ZCZ0FcXFxuRnlPZ0FOSUFJZ0FFRUdka0hBQVhJNkFBeEJBaUVBREFFTElBSWdBRG9BREVFQklRQUxJQUVnQWtFTWFpQUFFRk1oQVF3QkN5QUJLQUlVXFxcbklBQWdBVUVZYWlnQ0FDZ0NFQkVHQUNFQkN5QUNRUkJxSkFBZ0FRdWVBZ0VIZndKQUFrQWdBU2dDQUNJQ0lBRW9BZ1FpQTBjTkFFRUFJUVxcXG5RTUFRdEJBU0VFSUFFZ0FrRUJhaUlGTmdJQUlBSXRBQUFpQnNCQmYwb05BQUpBQWtBZ0JTQURSdzBBUVFBaEJTQURJUUlNQVFzZ0FTQUNcXFxuUVFKcUlnSTJBZ0FMSUFaQkgzRWhCeUFGTFFBQVFUOXhJUVZCQVNFRUFrQWdCa0hmQVVzTkFDQUhRUVowSUFWeUlRWU1BUXNDUUFKQUlBXFxcbklnQTBjTkFFRUFJUUlnQXlFSURBRUxJQUVnQWtFQmFpSUlOZ0lBQ3lBRlFRWjBJQUl0QUFCQlAzRnlJUUlDUUNBR1FmQUJUdzBBSUFJZ1xcXG5CMEVNZEhJaEJnd0JDd0pBQWtBZ0NDQURSdzBBUVFBaENBd0JDeUFCSUFoQkFXbzJBZ0FMSUFKQkJuUWdDQzBBQUVFL2NYSWdCMEVTZEVcXFxuR0FnUEFBY1hJaEJnc2dBQ0FHTmdJRUlBQWdCRFlDQUF1ZUFnRUhmd0pBQWtBZ0FTZ0NBQ0lDSUFFb0FnUWlBMGNOQUVFQUlRUU1BUXRCXFxcbkFTRUVJQUVnQWtFQmFpSUZOZ0lBSUFJdEFBQWlCc0JCZjBvTkFBSkFBa0FnQlNBRFJ3MEFRUUFoQlNBRElRSU1BUXNnQVNBQ1FRSnFJZ1xcXG5JMkFnQUxJQVpCSDNFaEJ5QUZMUUFBUVQ5eElRVkJBU0VFQWtBZ0JrSGZBVXNOQUNBSFFRWjBJQVZ5SVFZTUFRc0NRQUpBSUFJZ0EwY05cXFxuQUVFQUlRSWdBeUVJREFFTElBRWdBa0VCYWlJSU5nSUFDeUFGUVFaMElBSXRBQUJCUDNGeUlRSUNRQ0FHUWZBQlR3MEFJQUlnQjBFTWRIXFxcbkloQmd3QkN3SkFBa0FnQ0NBRFJ3MEFRUUFoQ0F3QkN5QUJJQWhCQVdvMkFnQUxJQUpCQm5RZ0NDMEFBRUUvY1hJZ0IwRVNkRUdBZ1BBQVxcXG5jWEloQmdzZ0FDQUdOZ0lFSUFBZ0JEWUNBQXUwQWdFRGZ5TUFRVEJySWdJa0FDQUNFQmcyQWlBZ0FrRVlhaUFCSUFKQklHb1EyZ1lnQWlcXFxuZ0NIQ0VEQWtBQ1FBSkFBa0FnQWlnQ0dBMEFJQUpCRUdvZ0F4Q01DQ0FDSUFJb0FoUWlCRFlDTENBQ0lBSW9BaEFpQXpZQ0tDQURSUTBCXFxcbklBQkJBam9BQkNBQ1FTaHFRUVJ5RUpZTERBSUxJQUJCQXpvQUJDQUFJQU0yQWdBTUFRc2dBaUFFTmdJa0lBSkJDR29nQWtFa2FpQUJFTlxcXG5rR0lBSW9BZ3doQVFKQUFrQUNRQ0FDS0FJSURRQWdBaUFCRUkwSUlBSWdBaWdDQkNJRE5nSXNJQUlnQWlnQ0FDSUJOZ0lvSUFGRkRRSWdcXFxuQUVFQ09nQUVJQUpCS0dwQkJISVFsZ3NNQVFzZ0FFRURPZ0FFSUFBZ0FUWUNBQXNnQWtFa2FoQ1dDd3dCQ3lBQVFRQTZBQVFnQUNBRE5nXFxcbklBSUFKQkpHb1FsZ3NnQWtFZ2FoQ1dDd3dCQ3lBQ1FTQnFFSllMQ3lBQ1FUQnFKQUFMbmdJQkIzOENRQUpBSUFFb0FnQWlBaUFCS0FJRVxcXG5JZ05IRFFCQkFDRUVEQUVMUVFFaEJDQUJJQUpCQVdvaUJUWUNBQ0FDTFFBQUlnYkFRWDlLRFFBQ1FBSkFJQVVnQTBjTkFFRUFJUVVnQXlcXFxuRUNEQUVMSUFFZ0FrRUNhaUlDTmdJQUN5QUdRUjl4SVFjZ0JTMEFBRUUvY1NFRlFRRWhCQUpBSUFaQjN3RkxEUUFnQjBFR2RDQUZjaUVHXFxcbkRBRUxBa0FDUUNBQ0lBTkhEUUJCQUNFQ0lBTWhDQXdCQ3lBQklBSkJBV29pQ0RZQ0FBc2dCVUVHZENBQ0xRQUFRVDl4Y2lFQ0FrQWdCa1xcXG5Id0FVOE5BQ0FDSUFkQkRIUnlJUVlNQVFzQ1FBSkFJQWdnQTBjTkFFRUFJUWdNQVFzZ0FTQUlRUUZxTmdJQUN5QUNRUVowSUFndEFBQkJcXFxuUDNGeUlBZEJFblJCZ0lEd0FIRnlJUVlMSUFBZ0JqWUNCQ0FBSUFRMkFnQUx4UUlCRFg5QkFDRUFRUUFoQVFKQVFRQW9BdWlvVHlJQ1JRXFxcbjBBUWVDb3p3QWhBMEVBSVFGQkFDRUFBMEFnQWlJRUtBSUlJUUlnQkNnQ0JDRUZJQVFvQWdBaEJnSkFBa0JCNEtmUEFDQUVLQUlNUVFGMlxcXG5FSThPUlEwQUlBUVFsdzBOQUNBR0lBWVEwQTBpQjBFSUVKd0xJQWRyYWlJSEVKVU5JUWdRaWc0aUNVRUlFSndMSVFwQkZFRUlFSndMSVFcXFxudEJFRUVJRUp3TElRd2dCeENtREEwQUlBY2dDR29nQmlBSklBVnFJQW9nQzJvZ0RHcHJha2tOQUFKQUFrQWdCMEVBS0FLSXEwOUdEUUFnXFxcbkJ4RDJBUXdCQzBFQVFRQTJBb0NyVDBFQVFRQTJBb2lyVHdzQ1FFSGdwODhBSUFZZ0JSQ09EZzBBSUFjZ0NCRDZBUXdCQzBFQVFRQW9BcFxcXG5DclR5QUZhellDa0t0UElBTWdBallDQ0NBRklBRnFJUUVNQVFzZ0JDRURDeUFBUVFGcUlRQWdBZzBBQ3d0QkFDQUFRZjhmSUFCQi94OUxcXFxuR3pZQ29LdFBJQUVMcUFJQ0JIOEJma0VVSVFNQ1FBSkFJQUpDa000QVdnMEFJQUloQnd3QkMwRVVJUU1EUUNBQklBTnFJZ1JCZkdvZ0FpXFxcbkFDUXBET0FJQWlCMEtRemdCK2ZhY2lCVUgvL3dOeFFlUUFiaUlHUVFGMFFaaTB3QUJxTHdBQU93QUFJQVJCZm1vZ0JTQUdRZVFBYkd0QlxcXG4vLzhEY1VFQmRFR1l0TUFBYWk4QUFEc0FBQ0FEUVh4cUlRTWdBa0wvd2RjdlZpRUVJQWNoQWlBRURRQUxDd0pBQWtBZ0I2Y2lCVUhqQUVcXFxub05BQ0FGSVFRTUFRc2dBU0FEUVg1cUlnTnFJQVVnQlVIa0FHNGlCRUhrQUd4clFRRjBRWmkwd0FCcUx3QUFPd0FBQ3dKQUFrQWdCRUVLXFxcblNBMEFJQUVnQTBGK2FpSURhaUFFUVFGMFFaaTB3QUJxTHdBQU93QUFEQUVMSUFFZ0EwRi9haUlEYWlBRVFUQnFPZ0FBQ3lBQVFSUWdBMlxcXG5zMkFnUWdBQ0FCSUFOcU5nSUFDNzhDQVFWL0l3QkJJR3NpQWlRQUlBSkJFR29nQUJERUJTQUNRUWhxSUFJb0FoQWlBeUFDS0FJWUlnUVFcXFxuOGdFQ1FBSkFJQUlvQWdnaUFFVU5BQ0FDSUFBZ0FpZ0NEQkNDQnlBQ0tBSUFJZ1ZGRFFCQkFTRUFJQVVnQWlnQ0JDSUdRYzd0d0FCQkF4XFxcbkNtQ2cwQlFRSWhBQ0FGSUFaQjBlM0FBRUVERUtZS0RRRkJBeUVBSUFVZ0JrSFU3Y0FBUVFNUXBnb05BVUVLSVFBZ0JTQUdRY250d0FCQlxcXG5BeENtQ2cwQkFrQUNRQ0FGSUFaQndlM0FBRUVDRUtZS0RRQWdCU0FHUWNQdHdBQkJBeENtQ2cwQklBVWdCa0hHN2NBQVFRTVFwZ3BGRFFcXFxuSWdBeUFFUVFaQkF5QUJRZjhCY1J0QkNSQ0hBVUgvQVhFaEFBd0RDeUFESUFRZ0FVRUhFSWNCUWY4QmNTRUFEQUlMSUFNZ0JFRUZRUUlnXFxcbkFVSC9BWEViUVFnUWh3RkIvd0Z4SVFBTUFRc2dBU0VBQ3lBQ1FSQnFFSUlOSUFKQklHb2tBQ0FBQzdZQ0FnSi9BMzRqQUVFd2F5SUZKQVxcXG5BZ0FTZ0NFQ0VHSUFVZ0FVRVlhaWdDQURZQ0hDQUZJQVkyQWhnZ0JTQUVOZ0lVSUFVZ0F6WUNFQ0FGSUFFMkFpUWdBa0VaZHExQ2dZS0VcXFxuaUpDZ3dJQUJmaUVISUFFb0FnUWlCQ0FDY1NFQ0lBVWdCVUVRYWpZQ0lDQUJLQUlBSVFOQkFDRUdBa0FEUUNBRklBTWdBbW9wQUFBaUNDXFxcbkFIaFNJSlFuK0ZJQWxDLy8zNzkrL2Z2LzkrZklOQ2dJR0NoSWlRb01DQWY0TTNBeWdEUUNBRlFRaHFJQVZCS0dvUWhBY0NRQ0FGS0FJSVxcXG5EUUFDUUNBSUlBaENBWWFEUW9DQmdvU0lrS0RBZ0grRFVBMEFRUUFoQWd3RUN5QUNJQVpCQ0dvaUJtb2dCSEVoQWd3Q0N5QUZRU0JxSUFcXFxuVW9BZ3dnQW1vZ0JIRWlBUkNDQmtVTkFBc0xJQU1nQVVFQ2RHdEJmR29vQWdBaEJFRUJJUUlMSUFBZ0JEWUNCQ0FBSUFJMkFnQWdCVUV3XFxcbmFpUUFDNlVDQVFaL0l3QkJNR3NpQXlRQUlBTkJBRFlDS0NBRElBRTJBaUFnQXlBQk5nSVlJQU1nQWpZQ0hDQURJQUVnQW1vaUJEWUNKQ1xcXG5BRFFTQnFJUUlnQVNFRkFrQURRQ0FEUVJCcUlBSVEzUVFnQXlnQ0ZDSUdRUTFMRFFGQkFTQUdkRUdBekFCeFJRMEJJQU1vQWlBaEJTQURcXFxuS0FJa0lRUU1BQXNMQWtBQ1FDQUdRWUNBeEFCR0RRQWdCQ0FGYXlBREtBSVFJZ2RxSUFNb0FpQnFJQU1vQWlScklRZ01BUXRCQUNFSFFRXFxcbkFoQ0FzQ1FBTkFJQU1vQWlBaEJDQURLQUlrSVFVZ0EwRUlhaUFDRU5JRklBTW9BZ3dpQmtFTlN3MEJRUUVnQm5SQmdNd0FjUTBBQ3dzQ1xcXG5RQ0FHUVlDQXhBQkdEUUFnQlNBRWF5QURLQUlJYWlBREtBSWdhaUFES0FJa2F5RUlDeUFBSUFnZ0IyczJBZ1FnQUNBQklBZHFOZ0lBSUFcXFxuTkJNR29rQUF1aUFnRUZmMEVLSVFNQ1FBSkFJQUpCa000QVR3MEFJQUloQkF3QkMwRUtJUU1EUUNBQklBTnFJZ1ZCZkdvZ0FpQUNRWkRPXFxcbkFHNGlCRUdRemdCc2F5SUdRZi8vQTNGQjVBQnVJZ2RCQVhSQjRJekFBR292QUFBN0FBQWdCVUYrYWlBR0lBZEI1QUJzYTBILy93TnhRUVxcXG5GMFFlQ013QUJxTHdBQU93QUFJQU5CZkdvaEF5QUNRZi9CMXk5TElRVWdCQ0VDSUFVTkFBc0xBa0FDUUNBRVFlTUFTdzBBSUFRaEFnd0JcXFxuQ3lBQklBTkJmbW9pQTJvZ0JDQUVRZVFBYmlJQ1FlUUFiR3RCQVhSQjRJekFBR292QUFBN0FBQUxBa0FDUUNBQ1FRcEpEUUFnQVNBRFFYXFxcbjVxSWdOcUlBSkJBWFJCNEl6QUFHb3ZBQUE3QUFBTUFRc2dBU0FEUVg5cUlnTnFJQUpCTUdvNkFBQUxJQUJCQ2lBRGF6WUNCQ0FBSUFFZ1xcXG5BMm8yQWdBTG5BSUJDSDhqQUVFUWF5SUNKQUFnQVVFWWFpRURJQUZCQ0dvb0FnQWhCQ0FCS0FJUUlRVWdBU2dDQkNFR0EwQkJBQ0VIQWtcXFxuQUNRQ0FGSUFFb0Fnd2lDRWtOQUNBRklBUkxEUUFnQWtFSWFpQUJLQUlVSUFOcVFYOXFMUUFBSUFZZ0NHb2dCU0FJYXhCeUFrQUNRQ0FDXFxcbktBSUlRUUZIRFFBZ0FTZ0NEQ0FDS0FJTWFpSUZJQUVvQWhRaUNFRi9haUlIVHcwQkRBTUxJQUVnQVNnQ0REWUNFQXdCQ3lBRklBZHJJZ1xcXG5jZ0NHb2lDU0FIU1EwQklBa2dCRXNOQVNBQ0lBZ2dBMEdRaHNFQUVOd0pJQVlnQjJvZ0NDQUNLQUlBSUFJb0FnUVFwZ3BGRFFFZ0FTQUhcXFxuTmdJUUlBQWdCellDQkNBQVFRaHFJQUVvQWhRZ0IybzJBZ0JCQVNFSEN5QUFJQWMyQWdBZ0FrRVFhaVFBRHdzZ0FTQUZOZ0lRREFBTEM2XFxcbm9DQWdKL0FYNGpBRUVnYXlJRUpBQUNRQUpBSUFJTkFDQUFRUUEyQWd3Z0FFSUFOd0lFSUFCQmdJUEFBRFlDQUF3QkN3SkFBa0FDUUNBQ1xcXG5RUWhKRFFBQ1FDQUNRWUNBZ0lBQ1R3MEFRUUVoQlNBQ1FRTjBJZ0pCRGtrTkEwRi9JQUpCQjI1QmYycG5ka0VCYWlFRkRBTUxJQVJCQ0dcXFxub2dBeEM3QmlBRUtBSU1JUVVnQkNnQ0NDSUNRWUdBZ0lCNFJ3MEJEQUlMUVFSQkNDQUNRUVJKR3lFRkRBRUxJQUFnQWpZQ0JDQUFRUUEyXFxcbkFnQWdBRUVJYWlBRk5nSUFEQUVMSUFSQkVHb2dBVUVJSUFVZ0F4Q3NBd0pBSUFRb0FoQWlBa1VOQUNBRUtRTVlJUVlnQWtIL0FTQUVLQVxcXG5JVUlnTkJDV29Rb1EwaEFpQUFJQVkzQWdnZ0FDQUROZ0lFSUFBZ0FqWUNBQXdCQ3lBRUtRSVVJUVlnQUVFQU5nSUFJQUFnQmpjQ0JBc2dcXFxuQkVFZ2FpUUFDNjhDQWdOL0EzNGpBRUV3YXlJRUpBQWdBU2dDRUNFRklBUWdBVUVZYWlnQ0FEWUNHQ0FFSUFVMkFoUWdCQ0FETmdJUUlBXFxcblFnQVRZQ0pDQUNRUmwyclVLQmdvU0lrS0RBZ0FGK0lRY2dBU2dDQkNJRElBSnhJUUlnQkNBRVFSQnFOZ0lnSUFFb0FnQWhCVUVBSVFZQ1xcXG5RQU5BSUFRZ0JTQUNhaWtBQUNJSUlBZUZJZ2xDZjRVZ0NVTC8vZnYzNzkrLy8zNThnMEtBZ1lLRWlKQ2d3SUIvZ3pjREtBTkFJQVJCQ0dcXFxub2dCRUVvYWhDRUJ3SkFJQVFvQWdnTkFBSkFJQWdnQ0VJQmhvTkNnSUdDaElpUW9NQ0FmNE5RRFFCQkFDRUNEQVFMSUFJZ0JrRUlhaUlHXFxcbmFpQURjU0VDREFJTElBUkJJR29nQkNnQ0RDQUNhaUFEY1NJQkVNc0tSUTBBQ3dzZ0JTQUJRUUowYTBGOGFpZ0NBQ0VEUVFFaEFnc2dBQ1xcXG5BRE5nSUVJQUFnQWpZQ0FDQUVRVEJxSkFBTHJ3SUNBMzhEZmlNQVFUQnJJZ1FrQUNBQktBSVFJUVVnQkNBQlFSaHFLQUlBTmdJWUlBUWdcXFxuQlRZQ0ZDQUVJQU0yQWhBZ0JDQUJOZ0lrSUFKQkdYYXRRb0dDaElpUW9NQ0FBWDRoQnlBQktBSUVJZ01nQW5FaEFpQUVJQVJCRUdvMkFpXFxcbkFnQVNnQ0FDRUZRUUFoQmdKQUEwQWdCQ0FGSUFKcUtRQUFJZ2dnQjRVaUNVSi9oU0FKUXYvOSsvZnYzNy8vZm55RFFvQ0Jnb1NJa0tEQVxcXG5nSCtETndNb0EwQWdCRUVJYWlBRVFTaHFFSVFIQWtBZ0JDZ0NDQTBBQWtBZ0NDQUlRZ0dHZzBLQWdZS0VpSkNnd0lCL2cxQU5BRUVBSVFcXFxuSU1CQXNnQWlBR1FRaHFJZ1pxSUFOeElRSU1BZ3NnQkVFZ2FpQUVLQUlNSUFKcUlBTnhJZ0VRekFwRkRRQUxDeUFGSUFGQkFuUnJRWHhxXFxcbktBSUFJUU5CQVNFQ0N5QUFJQU0yQWdRZ0FDQUNOZ0lBSUFSQk1Hb2tBQXV5QWdFRWZ5TUFRUkJySWdFa0FDQUFRUXhxSVFJQ1FBTkFBa1xcXG5BZ0FpZ0NBRVVOQUNBQ0VJVURJZ05CZ0lERUFFY05BaUFDUVFBMkFnQUxJQUFRaFFNaUEwRlRha0VDU1EwQkFrQWdBMEdBZ01RQVJ3MEFcXFxuUVlDQXhBQWhBd3dDQ3lBRFFaOS9ha0VhU1EwQklBTkJVR3BCQ2trTkFRSkFBa0FDUUFKQUFrQUNRQUpBSUFNUW93SWlCQzBBQUE0SUNBXFxcbmNGQkFBQkFnTUlDeUFBS0FJSVFRRTZBQWdNQndzZ0FDMEFGRVVOQmlBQUtBSUlRUUU2QUFZTUJnc2dCRUVCYWlFRElBQXRBQlJGRFFNZ1xcXG5BQ2dDQ0VFQk9nQUhEQU1MSUFCQkdHb3RBQUJGRFFRZ0FDZ0NDRUVCT2dBTERBUUxJQUF0QUJWRkRRTUxJQVJCQVdvaEF3c2dBVUVJYWlcXFxuQURFSjRFSUFFb0Fnd2hBeUFBSUFFb0FnZ2lCRFlDRENBQUlBUWdBMm8yQWhBTUFBc0xJQUZCRUdva0FDQURDNlVDQVFKL0l3QkJNR3NpXFxcbkFpUUFJQUpCQ0dvZ0FSQzJCQUpBQWtBQ1FBSkFJQUl0QUFnTkFDQUNMUUFKRFFJZ0FrRUZOZ0lZSUFFZ0FrRVlhaERPQ0NFQkRBRUxJQVxcXG5Jb0Fnd2hBUXNnQUVFQU5nSUFJQUFnQVRZQ0JBd0JDd0pBQWtBZ0FpMEFDa0VpUncwQUlBRkJGR3BCQURZQ0FDQUJJQUVvQWdoQkFXbzJcXFxuQWdnZ0FrRVlhaUFCSUFGQkRHb1FqUUVDUUFKQUlBSW9BaGhCQWtZTkFDQUNRUWhxSUFJb0Fod2dBaWdDSUJEWEJpQUNLQUlJRFFFZ0FpXFxcbmdDRENFRERBTUxJQUFnQWlnQ0hEWUNCQ0FBUVFBMkFnQU1Bd3NnQUNBQ0tRTUlOd0lBSUFCQkNHb2dBa0VJYWtFSWFpZ0NBRFlDQUF3Q1xcXG5DeUFCSUFKQktHcEJuSVRBQUJCb0lRTUxJQU1nQVJDcEJpRUJJQUJCQURZQ0FDQUFJQUUyQWdRTElBSkJNR29rQUF1bEFnRUNmeU1BUWJcXFxuQUJheUlCSkFBZ0FTQUFFTmtGSUFFZ0FTa0RBRGNET0FKQUFrQUNRQ0FCUVRocUVKSUxEUUFnQVVFSWFpQUFLQUlVSUFCQkhHb29BZ0FRXFxcbk5VRVBJUUlnQVMwQU5FRUNSZzBCSUFGQk9Hb2dBVUVJYWtFd0VLUU5HaUFCUVRocUVQY05JUUlnQVVFQU5nS0FBU0FCUWdFM0EzZ2dBVVxcXG5HSUFXb2dBVUg0QUdwQnBPYkFBQkRMQ0NBQ0lBRkJpQUZxRU4wQkRRSWdBVUhvQUdwQkNHb2dBVUg0QUdwQkNHb29BZ0EyQWdBZ0FTQUJcXFxuS1FONE53Tm9JQUFnQVVIb0FHb1FmVUgvQVhFaEFpQUJRVGhxRUxnS0RBRUxJQUZCT0dvZ0FCREVCU0FCS0FJNElBRW9Ba0FRamdGQi93XFxcbkZ4SVFJZ0FVRTRhaENDRFFzZ0FVR3dBV29rQUNBQ0R3dEJ2T2JBQUVFM0lBRkI2QUJxUWZUbXdBQkIwT2ZBQUJEQ0JBQUxuUUlDQW44QlxcXG5maU1BUVNCcklnTWtBQUpBQWtBZ0FRMEFJQUJCQURZQ0RDQUFRZ0EzQWdRZ0FFR0FnOEFBTmdJQURBRUxBa0FDUUFKQUlBRkJDRWtOQUFcXFxuSkFJQUZCLy8vLy93RkxEUUJCZnlBQlFRTjBRUWR1UVg5cVozWkJBV29oQVF3REN5QURRUWhxSUFJUXVnWWdBeWdDRENFQklBTW9BZ2dpXFxcbkJFR0JnSUNBZUVjTkFRd0NDMEVFUVFnZ0FVRUVTUnNoQVF3QkN5QUFJQVEyQWdRZ0FFRUFOZ0lBSUFCQkNHb2dBVFlDQUF3QkN5QURRUlxcXG5CcVFRUkJDQ0FCSUFJUW5BTUNRQ0FES0FJUUlnRkZEUUFnQXlrREdDRUZJQUZCL3dFZ0F5Z0NGQ0lDUVFscUVLRU5JUUVnQUNBRk53SUlcXFxuSUFBZ0FqWUNCQ0FBSUFFMkFnQU1BUXNnQXlrQ0ZDRUZJQUJCQURZQ0FDQUFJQVUzQWdRTElBTkJJR29rQUF1TkFnRUJmeU1BUVJCcklnXFxcbk1rQUFKQUFrQWdBVUdBQVVrTkFBSkFJQUZCZ0JCSkRRQUNRQ0FCUVlDQUJFa05BQ0FDSUFGQlAzRkJnQUZ5T2dBRElBSWdBVUVHZGtFL1xcXG5jVUdBQVhJNkFBSWdBaUFCUVF4MlFUOXhRWUFCY2pvQUFTQUNJQUZCRW5aQkIzRkI4QUZ5T2dBQVFRUWhBUXdEQ3lBQ0lBRkJQM0ZCZ0FcXFxuRnlPZ0FDSUFJZ0FVRU1ka0hnQVhJNkFBQWdBaUFCUVFaMlFUOXhRWUFCY2pvQUFVRURJUUVNQWdzZ0FpQUJRVDl4UVlBQmNqb0FBU0FDXFxcbklBRkJCblpCd0FGeU9nQUFRUUloQVF3QkN5QUNJQUU2QUFCQkFTRUJDeUFEUVFocVFRQWdBU0FDUVFSQjBQWEFBQkNhQnlBREtBSU1JUVxcXG5FZ0FDQURLQUlJTmdJQUlBQWdBVFlDQkNBRFFSQnFKQUFMcEFJQ0EzOENmaU1BUVJCcklnVWtBQ0FGSUFRMkFnd2dCU0FETmdJSUFrQUNcXFxuUUNBQ0tBSUlEUUFnQWtFY2FpZ0NBQ0VHSUFJb0FoUWhCd3dCQ3lBRklBSWdBa0VNYWlnQ0FCRC9CaUFGS0FJRUlRWWdCU2dDQUNFSEN5XFxcbkFCSUFZZ0JHb2dBMnNRcVFvZ0FTQUhJQVlRa3d3Z0FVRWpFTjRFSUFWQkNHb1F5QWthSUFFZ0JTZ0NDQ0FGS0FJTUVPY0RJQUFnQmpZQ1xcXG5EQ0FBUVFFMkFnZ2dBQ0FDS1FJME53STBJQUJCUEdvZ0FrRThhaWtDQURjQ0FDQUFRY1FBYWlBQ1FjUUFhaTBBQURvQUFDQUFJQUlvQWhcXFxuQTJBaEFnQUNBQ0tRSUFOd0lBSUFBZ0FTa0NBRGNDRkNBQVFSeHFJQUZCQ0dvb0FnQTJBZ0FnQWlrQ0lDRUlJQUlwQWlnaENTQUFJQUlvXFxcbkFqQTJBakFnQUNBSk53SW9JQUFnQ0RjQ0lDQUZRUkJxSkFBTG5RSUJBbjhqQUVFd2F5SUNKQUFnQWtFSWFpQUJFTG9FQWtBQ1FBSkFBa1xcXG5BZ0FpMEFDQTBBSUFJdEFBa05BaUFDUVFVMkFoZ2dBU0FDUVJocUVOMElJUUVNQVFzZ0FpZ0NEQ0VCQ3lBQVFRQTJBZ0FnQUNBQk5nSUVcXFxuREFFTEFrQUNRQ0FDTFFBS1FTSkhEUUFnQVJDRERDQUJRUlJxUVFBMkFnQWdBa0VZYWlBQklBRkJER29ReGdFQ1FBSkFJQUlvQWhoQkFrXFxcbllOQUNBQ1FRaHFJQUlvQWh3Z0FpZ0NJQkRYQmlBQ0tBSUlEUUVnQWlnQ0RDRUREQU1MSUFBZ0FpZ0NIRFlDQkNBQVFRQTJBZ0FNQXdzZ1xcXG5BQ0FDS1FNSU53SUFJQUJCQ0dvZ0FrRUlha0VJYWlnQ0FEWUNBQXdDQ3lBQklBSkJLR3BCbklUQUFCQjRJUU1MSUFFZ0F4QytEU0VCSUFcXFxuQkJBRFlDQUNBQUlBRTJBZ1FMSUFKQk1Hb2tBQXVMQWdFSWZ5TUFRUkJySWdJa0FFRUFJUU1nQWtFSWFrRUFJQUZCQVhZaUJDQUFJQVJCXFxcbnFKakJBQkR1QmlBQ0tBSU1JUVVnQWlnQ0NDRUdJQUpCQUNBRUlBQWdBVUVEZEdvZ0JFRURkQ0lCYXlBRVFiaVl3UUFRN2dZZ0FTQUNLQVxcXG5JQWFrRjRhaUVCSUFJb0FnUWhCd0pBQWtBRFFDQUVJQU5xSWdCRkRRRWdCU0FEYWtVTkFnSkFJQUJCZjJvZ0IwOE5BQ0FHTFFBQUlRQWdcXFxuQmlBQkxRQUFPZ0FBSUFFZ0FEb0FBQ0FHUVFScUlnQW9BZ0FoQ0NBQUlBRkJCR29pQ1NnQ0FEWUNBQ0FKSUFnMkFnQWdBVUY0YWlFQklBXFxcbk5CZjJvaEF5QUdRUWhxSVFZTUFRc0xJQUJCZjJvZ0IwSFltTUVBRUlFRkFBc2dBa0VRYWlRQUR3c2dCU0FGUWNpWXdRQVFnUVVBQzZjQ1xcXG5BUUovSXdCQklHc2lBaVFBQWtBQ1FDQUFLQUlBSWdNdEFBQU5BQ0FCS0FJVVFZNjV6Z0JCQkNBQlFSaHFLQUlBS0FJTUVRa0FJUUFNQVFcXFxudEJBU0VBSUFJZ0EwRUJhallDRENBQ0lBRW9BaFJCaXJuT0FFRUVJQUZCR0dvb0FnQW9BZ3dSQ1FBNkFCZ2dBaUFCTmdJVUlBSkJBRG9BXFxcbkdTQUNRUUEyQWhBZ0FrRVFhaUFDUVF4cVFjQ2V6Z0FROUFFaEFTQUNMUUFZSVFNQ1FDQUJLQUlBSWdFTkFDQURRZjhCY1VFQVJ5RUFEQVxcXG5FTElBTkIvd0Z4RFFBZ0FpZ0NGQ0VEQWtBZ0FVRUJSdzBBSUFJdEFCbEIvd0Z4UlEwQUlBTXRBQnhCQkhFTkFFRUJJUUFnQXlnQ0ZFRzhcXFxubnM0QVFRRWdBMEVZYWlnQ0FDZ0NEQkVKQUEwQkN5QURLQUlVUVp1WnpnQkJBU0FEUVJocUtBSUFLQUlNRVFrQUlRQUxJQUpCSUdva0FDXFxcbkFBQzVJQ0FRVi9RUUFoQVVIYURpRUNRZG9PSVFNQ1FBTkFBa0FnQVNBQ1R5SUVSUTBBSUFFaEF3d0NDd0pBQWtCQmZ5QURRUUYySUFGcVxcXG5JZ05CQTNSQm9LUEJBR29vQWdBaUJTQUFSeUFGSUFCSkd5SUZRUUZIRFFBZ0F5RUNEQUVMSUFWQi93RnhRZjhCUncwQ0lBTkJBV29oQVFcXFxuc2dBaUFCYXlFRERBQUxDd0pBQWtBZ0F5QUVheUlCUWRrT1N3MEFJQUZCQTNRaUEwR2tvOEVBYWk0QkFDSUNRZi8vQVhFaEFRSkFBa0FnXFxcbkFrRi9UQTBBSUFBZ0EwR2dvOEVBYWk4QkFHc2dBV3BCLy84RGNTSUJRZk0rU1EwQklBRkI4ejVCektMQkFCQ0JCUUFMSUFGQjh6NVBEUVxcXG5JTElBRkJBblJCOEpqQ0FHb1BDeUFCUWRvT1FheWl3UUFRZ1FVQUN5QUJRZk0rUWJ5aXdRQVFnUVVBQzQ0Q0FnTi9BWDRqQUVIQUFHc2lcXFxuQkNRQUlBRkJFR29pQlNBQ0VQTUVJUWNnQkNBQ05nSThJQVFnQVRZQ0pDQUVJQVJCUEdvMkFpQWdCRUVJYWlBQklBY2dCRUVnYWtId244XFxcbkFBRVA0Q0FrQUNRQUpBSUFRb0FnaEZEUUFnQVNnQ0FDSUdEUUVMSUFSQklHcEJDR29nQWtFSWFpZ0NBRFlDQUNBRVFUUnFJQU5CQ0dvb1xcXG5BZ0EyQWdBZ0JDQUNLUUlBTndNZ0lBUWdBeWtDQURjQ0xDQUJJQWNnQkVFZ2FpQUZFTElFR2lBQVFRQTJBZ0FNQVFzZ0JrRUFJQVFvQWdcXFxueHJRUmhzYWtGb2FpSUJLUUlNSVFjZ0FTQURLUUlBTndJTUlBQWdCemNDQUNBQlFSUnFJZ0VvQWdBaEJTQUJJQU5CQ0dvb0FnQTJBZ0FnXFxcbkFFRUlhaUFGTmdJQUlBSVE0d3dMSUFSQndBQnFKQUFMckFJQ0JIOERmaU1BUVJCcklnQWtBQUpBQWtBQ1FBSkFRUUFvQXF5clR3MEFRUVxcXG5CQmZ6WUNyS3RQQWtCQkFDZ0NzS3RQSWdFTkFDQUFRUWhCRUJDaEJDQUFLQUlBSVFJQ1FBSkFJQUFvQWdRaUF3MEFJQUloQVF3QkMwRUFcXFxuTFFEeHBrOGFJQU1nQWhEM0N5RUJDeUFCUlEwRElBRkNnWUNBZ0JBM0FnQWdBVUVRYWtFQU5nSUFRUUFwQTlpblR5RUVBMEFnQkVJQmZDXFxcbklGVUEwRlFRQWdCVUVBS1FQWXAwOGlCaUFHSUFSUklnSWJOd1BZcDA4Z0JpRUVJQUpGRFFBTFFRQWdBVFlDc0t0UElBRWdCVGNEQ0FzZ1xcXG5BU0FCS0FJQUlnSkJBV28yQWdBZ0FrRi9TZzBCQUF0QjFPck5BRUVRSUFCQkNHcEI1T3JOQUVHSTdjMEFFTUlFQUF0QkFFRUFLQUtzcTBcXFxuOUJBV28yQXF5clR5QUFRUkJxSkFBZ0FROExJQUlnQXhDYURRQUxFSlVJQUF2Q0FnRUVmeU1BUVNCcklnSWtBQUpBQWtBQ1FBSkFBa0FDXFxcblFFRUFLQUxRcDA5Qi8vLy8vd2R4UlEwQUVNc05SUTBCQzBFQUtBTEFwMDhoQTBFQVFYODJBc0NuVHlBRERRUkJBQ2dDMEtkUFFmLy8vL1xcXG44SGNRMEJRUUFvQXN5blR5RUVRUUFnQVRZQ3pLZFBRUUFvQXNpblR5RURRUUFnQURZQ3lLZFBEQUlMSUFKQkZHcENBRGNDQUNBQ1FRRTJcXFxuQWd3Z0FrR283czBBTmdJSUlBSkIrT0ROQURZQ0VDQUNRUWhxUWN6dXpRQVFtQWdBQ3hETERTRUZRUUFvQXN5blR5RUVRUUFnQVRZQ3pLXFxcbmRQUVFBb0FzaW5UeUVEUVFBZ0FEWUN5S2RQSUFWRkRRRUxRUUFvQXRDblQwSC8vLy8vQjNGRkRRQVF5dzBOQUVFQVFRRTZBTVNuVHd0QlxcXG5BRUVBTmdMQXAwOENRQ0FEUlEwQUlBTWdCQ2dDQUJFQ0FDQUVRUVJxS0FJQUlnRkZEUUFnQXlBQklBUkJDR29vQWdBUXNnd0xJQUpCSUdcXFxub2tBQThMQUF1UUFnRUdmeU1BUVJCcklnTWtBQ0FBS0FJQUlRUUNRQU5BSUFSQkEzRWhCUUpBQWtBQ1FBTkFJQVVPQXdFQ0JRQUxDeUFCXFxcbkRRRUxJQU1nQlhJaEJnSkFBa0FEUUJENkNpRUhJQUFnQmlBQUtBSUFJZ2dnQ0NBRVJoczJBZ0FnQTBFQU9nQUlJQU1nQnpZQ0FDQURJQVxcXG5SQmZIRTJBZ1FnQ0NBRVJnMEJJQU1RMndzZ0NDRUVJQWhCQTNFZ0JVWU5BQXdDQ3dzQ1FBTkFJQU10QUFnTkFSQ1dDQXdBQ3dzZ0F4RGJcXFxuQ3dzZ0FDZ0NBQ0VFREFFTElBQWdCRUY4Y1VFQmNpQUFLQUlBSWdnZ0NDQUVSaHMyQWdBZ0NDQUVSeUVISUFnaEJDQUhEUUFMSUFOQkFEXFxcbllDQkNBRElBQTJBZ0FDUUNBQklBSW9BaEFSQXdCRkRRQWdBMEVDTmdJRUN5QURFS0lEQ3lBRFFSQnFKQUFMamdJQkFuOGpBRUhBQUdzaVxcXG5BeVFBSUFOQkVHb2dBQkNiQkNBQUtBSUFJUVFnQUVFQU5nSUFBa0FnQkVVTkFDQUFRUlJxSUFBb0FnUVFvQVlMQWtBZ0FVVU5BQ0FESUFcXFxuSTJBaVFnQXlBQk5nSWdJQU5CQURvQU1DQURJQUJCSEdvb0FnQTJBalFnQUNBRFFUQnFRY2lRd1FBUS9RWTJBZ1FnQUVFQk5nSUFJQUJCXFxcbkZHcEJQeERlQkNBRFFRaHFJQUFROVFjZ0F5QURLQUlJSUFNb0Fnd1E1QVZCL3dGeE9nQXJJQU1nQUNnQ0lEWUNMQ0FESUFOQklHbzJBalxcXG5nZ0F5QURRU3hxTmdJMElBTWdBMEVyYWpZQ01DQURJQUFnQTBFd2FoRFNBZ3NnQTBFd2FrRUlhaUFEUVJCcVFRaHFLQUlBTmdJQUlBTWdcXFxuQXlrREVEY0RNQ0FBSUFOQk1Hb1EwQVFnQTBIQUFHb2tBQXVVQWdFSGZ5TUFRUkJySWdJa0FBSkFBa0FnQVNnQ0JDSUREUUJCQUNFRURBXFxcbkVMQWtBQ1FDQUJLQUlJSWdVZ0FTZ0NBQ0lFTFFBQUlnWVFxZ2tOQUNBRFFYOXFJUWRCQUNFR0EwQUNRQ0FISUFaSERRQWdBVUVBTmdJRVxcXG5JQUZCdE5ITkFEWUNBQXdFQ3lBRUlBWnFJUWdnQmtFQmFpRUdJQVVnQ0VFQmFpMEFBQkNxQ1VVTkFBc2dBeUFHU1EwQklBRWdBeUFHYXpcXFxuWUNCQ0FCSUFRZ0JtbzJBZ0FnQmlFRERBSUxJQUVnQkVFQmFqWUNBQ0FCSUFOQmYybzJBZ1FnQWtFSWFpQUdRUU5zSWdZZ0JrRURha0hBXFxcbjBzMEFRWUFHUWJEU3pRQVFtd2NnQWlnQ0RDRURJQUlvQWdnaEJBd0JDMEcwMGMwQVFTTkJ3TmpOQUJDREJ3QUxJQUFnQXpZQ0JDQUFJQVxcXG5RMkFnQWdBa0VRYWlRQUMvMEJBUUYvSXdCQkVHc2lBaVFBSUFBb0FnQWhBQ0FDUVFBMkFnd0NRQUpBSUFGQmdBRkpEUUFDUUNBQlFZQVFcXFxuU1EwQUFrQWdBVUdBZ0FSSkRRQWdBaUFCUVQ5eFFZQUJjam9BRHlBQ0lBRkJCblpCUDNGQmdBRnlPZ0FPSUFJZ0FVRU1ka0UvY1VHQUFYXFxcbkk2QUEwZ0FpQUJRUkoyUVFkeFFmQUJjam9BREVFRUlRRU1Bd3NnQWlBQlFUOXhRWUFCY2pvQURpQUNJQUZCREhaQjRBRnlPZ0FNSUFJZ1xcXG5BVUVHZGtFL2NVR0FBWEk2QUExQkF5RUJEQUlMSUFJZ0FVRS9jVUdBQVhJNkFBMGdBaUFCUVFaMlFjQUJjam9BREVFQ0lRRU1BUXNnQWlcXFxuQUJPZ0FNUVFFaEFRc2dBQ0FDUVF4cUlBRVFlaUVCSUFKQkVHb2tBQ0FCQy8wQkFRZC9Ba0FDUUNBQktBSUFJZ0lnQVNnQ0JDSURSdzBBXFxcblFZQ0F4QUFoQXd3QkN5QUJJQU5CZjJvaUJEWUNCQUpBSUFRdEFBQWlCY0FpQmtGL1NnMEFJQUVnQTBGK2FpSUVOZ0lFQWtBQ1FDQUVMUVxcXG5BQUlnZkFJZ1ZCUUVnTkFDQUhRUjl4SVFVTUFRc2dBU0FEUVgxcUlnUTJBZ1FDUUFKQUlBUXRBQUFpQjhBaUNFRkFTQTBBSUFkQkQzRWhcXFxuQXd3QkN5QUJJQU5CZkdvaUJEWUNCQ0FFTFFBQVFRZHhRUVowSUFoQlAzRnlJUU1MSUFOQkJuUWdCVUUvY1hJaEJRdEJnSURFQUNFRElBXFxcblZCQm5RZ0JrRS9jWElpQlVHQWdNUUFSZzBCQ3lBQktBSUlJQUpySUFScUlRY2dCU0VEQ3lBQUlBTTJBZ1FnQUNBSE5nSUFDNW9DQVFGL1xcXG5Jd0JCRUdzaUJpUUFJQVlnQlRZQ0RDQUdJQVEyQWdnQ1FBSkFBa0FDUUNBR1FRaHFFTWdKSWdWQkkwY05BRUVBSVFNTUFRc0NRQ0FGUVRcXFxuOUdEUUFDUUNBRlFZQ0F4QUJIRFFCQkFDRUZJQUJCQURZQ0FFRUlJUUVNQkF0QjZJM0JBRUhEQUVHc2pzRUFFTjRKQUFzZ0FTZ0NDQ0VFXFxcbklBRkJQeERlQkNBR0lBRWdBaUFESUFZb0FnZ2dCaWdDREJEUkFTQUdLQUlBSWdWRkRRRWdCaWdDQkNFRElBWWdCVFlDQ0NBR0lBTTJBZ1xcXG54QkFTRURDeUFCS0FJSUlRVWdBVUVqRU40RUlBRWdCaWdDQ0NBR0tBSU1FT2NESUFCQkFUWUNDQ0FBSUFRMkFnUWdBQ0FETmdJQVFRd2hcXFxuQVF3QkN5QUFJQVEyQWdRZ0FFRUJOZ0lBUVFBaEJVRUlJUUVMSUFBZ0FXb2dCVFlDQUNBR1FSQnFKQUFMaGdJQkFuOGpBRUVnYXlJQkpBXFxcbkFnQVNBQUVMWUVBa0FDUUFKQUlBRXRBQUFOQUNBQkxRQUJEUUVnQVVFQ05nSVFJQUFnQVVFUWFoRE9DQ0VBREFJTElBRW9BZ1FoQUF3QlxcXG5Dd0pBQWtBZ0FTMEFBaUlDUWQwQVJnMEFJQUpCTEVZTkFTQUJRUlkyQWhBZ0FDQUJRUkJxRU00SUlRQU1BZ3NnQUNBQUtBSUlRUUZxTmdcXFxuSUlRUUFoQUF3QkN5QUFJQUFvQWdoQkFXbzJBZ2dnQVVFSWFpQUFFTFlFQWtBZ0FTMEFDQ0lDRFFBZ0FTMEFDVVVOQUNBQkxRQUtRZjhCXFxcbmNVSGRBRWNOQUNBQlFSVTJBaEFnQUNBQlFSQnFFTTRJSVFBTUFRc2dBVUVXTmdJUUlBQWdBVUVRYWhET0NDRUFJQUpGRFFBZ0FVRUlha1xcXG5FRWNoQ3ZDUXNnQVVFZ2FpUUFJQUFMb0FJQ0FYOEJmaU1BUVRCcklnTWtBQ0FESUFJNkFCUWdBeUFCTmdJUUlBTkJHR29nQTBFUWFoREVcXFxuQVFKQUFrQUNRQUpBSUFNcEF4Z2lCRUlDVVEwQUlBUlFSUTBDUVFBZ0EwRW9ha0hBZzhBQUVMZ0VJUUlNQVFzZ0F5Z0NJQ0VDQ3lBQVFZXFxcbkNVNjl3RE5nSUlJQUFnQWpZQ0FBd0JDeUFES1FNZ0lRUWdBMEVZYWlBRFFSQnFFTVVCQWtBQ1FBSkFJQU1vQWhnaUFrRUNSZzBBSUFJTlxcXG5Ba0VCSUFOQktHcEJ3SVBBQUJDNEJDRUNEQUVMSUFNb0Fod2hBZ3NnQUVHQWxPdmNBellDQ0NBQUlBSTJBZ0FNQVFzQ1FDQUVJQU1vQWhcXFxud2lBUkRPQ1NJQ0RRQWdBeUFFSUFFUWxRVWdBeWtEQUNFRUlBQWdBeWdDQ0RZQ0NDQUFJQVEzQXdBTUFRc2dBRUdBbE92Y0F6WUNDQ0FBXFxcbklBSTJBZ0FMSUFOQk1Hb2tBQXVNQWdFQ2Z5TUFRU0JySWdNa0FDQUJLQUlJSVFRZ0FVRUFOZ0lJSUFNZ0JDQUJRUXhxS0FJQUVLRUxJZ1xcXG5RMkFoUWdBMEVJYWlBQ0lBRW9BaEFRakFjZ0F5Z0NEQ0VDQWtBQ1FBSkFJQU1vQWdnTkFDQURJQUkyQWhnQ1FBSkFBa0FnQVNnQ0FFVU5cXFxuQUNBRElBUVEzd2NnQXlnQ0JDRUVJQU1vQWdCRkRRRWdBeUFFTmdJY1FhaWJ3QUJCTXhER0JpRUNJQU5CSEdvUWhBc2dBMEVZYWhDRUN3XFxcbndFQ3lBRElBRkJCR29nQTBFVWFpQURRUmhxRU40TE5nSWNJQU5CSEdvUWhBc2dBMEVZYWhDRUN5QURRUlJxRUlRTERBRUxJQUZCQkdvZ1xcXG5CQ0FDRUxZTUMwRUFJUUVNQWdzZ0EwRVVhaENFQ3d0QkFTRUJDeUFBSUFJMkFnUWdBQ0FCTmdJQUlBTkJJR29rQUF1Q0FnSUJmd0YrSXdcXFxuQkJNR3NpQkNRQUlBUkJJR29nQWlBREVKUU5JQVJCQ0dvZ0JFRWdhaENLQ2lBRUtBSUlJQVFvQWd3UUJDRURJQVFReHdrZ0JFRVlhaUFFXFxcbktBSUFJZ0lnQkNnQ0JDQURJQUliRUo4SEFrQUNRQUpBQWtBQ1FDQUVMUUFZUVFSSERRQWdCQ2dDSENFRERBRUxJQVFwQXhnaUJVTC9BWVxcXG5OQ0JGSU5BU0FGUWlDSXB5RURDeUFFSUFNMkFoUWdCRUVnYWhETUN5QURFQVZCQVVZTkFTQURFQVpCQVVZTkFTQUVJQU0yQWlBZ0FFRUVcXFxuYWlBRVFTQnFFTTBHSUFCQkFEWUNBQ0FFUVNCcUVJUUxEQUlMSUFCQkFUWUNBQ0FBSUFVM0FnUWdCRUVnYWhETUN3d0JDeUFBUWdBM0FnXFxcbkFnQkVFVWFoQ0VDd3NnQkVFd2FpUUFDNFlDQVFKL0l3QkJJR3NpQVNRQUlBRWdBQkM2QkFKQUFrQUNRQ0FCTFFBQURRQWdBUzBBQVEwQlxcXG5JQUZCQWpZQ0VDQUFJQUZCRUdvUTNRZ2hBQXdDQ3lBQktBSUVJUUFNQVFzQ1FBSkFJQUV0QUFJaUFrSGRBRVlOQUNBQ1FTeEdEUUVnQVVcXFxuRVdOZ0lRSUFBZ0FVRVFhaERkQ0NFQURBSUxJQUFnQUNnQ0NFRUJhallDQ0VFQUlRQU1BUXNnQUNBQUtBSUlRUUZxTmdJSUlBRkJDR29nXFxcbkFCQzZCQUpBSUFFdEFBZ2lBZzBBSUFFdEFBbEZEUUFnQVMwQUNrSC9BWEZCM1FCSERRQWdBVUVWTmdJUUlBQWdBVUVRYWhEZENDRUFEQVxcXG5FTElBRkJGallDRUNBQUlBRkJFR29RM1FnaEFDQUNSUTBBSUFGQkNHcEJCSElRL2dzTElBRkJJR29rQUNBQUMvMEJBUVIvSUFBb0FnQWhcXFxuQVFKQUFrQURRQ0FCSWdKQkJFa05BU0FDUVFKeERRRWdBQ0FDUVFKeUlBQW9BZ0FpQVNBQklBSkdHellDQUNBQklBSkhEUUFMQTBBZ0FrXFxcbkY4Y1NJRElRRUNRQU5BSUFFb0FnQWlCQTBCSUFFb0FnZ2lCQ0FCTmdJRUlBUWhBUXdBQ3dzZ0F5QUVOZ0lBQWtBQ1FBSkFJQUpCQVhFTlxcXG5BQ0FFS0FJRUlnRkZEUUVnQXlBQk5nSUFJQUFnQUNnQ0FFRjljVFlDQUF3RkN5QUFJQUpCZlhFZ0FDZ0NBQ0lCSUFFZ0FrWWlCQnMyQWdcXFxuQWdCQTBEREFFTEEwQWdBQ0FDUVFGeElBQW9BZ0FpQVNBQklBSkdJZ1FiTmdJQUlBUU5CQ0FCSVFJZ0FVRUVTUTBBQ3dzZ0FTRUNEQUFMXFxcbkN3OExJQUVRdXd3QUM0b0NBUU4vSXdCQjRBQnJJZ1FrQUVFQUlRVWdCRUVJYWlBRFFRQVExUVFnQkVFUWFrRUlhaUlHUVFBMkFnQWdCQ1xcXG5BRUtRTUlOd01RSUFSQk1HcENBRGNEQUNBRVFUeHFJQUZCQkdvdEFBQTZBQUFnQkVLQWdJQ0FFRGNES0NBRVFnRTNBeUFnQkNBQktBQUFcXFxuTmdJNElBUkJ3QUJxSUFSQklHb2dBaUFESUFSQkVHb1E3Z0VnQkVIUUFHcEJDR29nQmlnQ0FEWUNBQ0FFSUFRcEF4QTNBMUFDUUFKQUlBXFxcblF0QUVCQkFrY05BQ0FBSUFRcEF4QTNBZ1FnQUVFTWFpQUdLQUlBTmdJQURBRUxJQUFnQkNrRFFEY0FBU0FBUVFscUlBUkJ3QUJxUVFocVxcXG5LQUlBTmdBQUlBUkIwQUJxRVBZSFFRRWhCUXNnQUNBRk9nQUFJQVJCSUdvUWtRd2dCRUhnQUdva0FBdjJBUUVCZnlNQVFSQnJJZ0lrQUNcXFxuQUNRUUEyQWd3Q1FBSkFJQUZCZ0FGSkRRQUNRQ0FCUVlBUVNRMEFBa0FnQVVHQWdBUkpEUUFnQWlBQlFUOXhRWUFCY2pvQUR5QUNJQUZCXFxcbkJuWkJQM0ZCZ0FGeU9nQU9JQUlnQVVFTWRrRS9jVUdBQVhJNkFBMGdBaUFCUVJKMlFRZHhRZkFCY2pvQURFRUVJUUVNQXdzZ0FpQUJRVFxcXG45eFFZQUJjam9BRGlBQ0lBRkJESFpCNEFGeU9nQU1JQUlnQVVFR2RrRS9jVUdBQVhJNkFBMUJBeUVCREFJTElBSWdBVUUvY1VHQUFYSTZcXFxuQUEwZ0FpQUJRUVoyUWNBQmNqb0FERUVDSVFFTUFRc2dBaUFCT2dBTVFRRWhBUXNnQUNBQ1FReHFJQUVRZWlFQklBSkJFR29rQUNBQkM1XFxcblVDQVFGL0FrQWdBRUVnVHcwQVFRQVBDMEVCSVFFQ1FBSkFJQUJCL3dCSkRRQWdBRUdBZ0FSSkRRRUNRQUpBSUFCQmdJQUlTUTBBQWtBZ1xcXG5BRUhRdUhOcVFkQzZLMDhOQUVFQUR3c0NRQ0FBUWJYWmMycEJCVThOQUVFQUR3c0NRQ0FBUWVLTGRHcEI0Z3RQRFFCQkFBOExBa0FnQUVcXFxuR2ZxSFJxUVo4WVR3MEFRUUFQQ3dKQUlBQkIzdUowYWtFT1R3MEFRUUFQQ3dKQUlBQkJmbkZCbnZBS1J3MEFRUUFQQ3lBQVFXQnhRZUROXFxcbkNrY05BVUVBRHdzZ0FFR3lzYzRBUVN4QmlyTE9BRUhFQVVIT3M4NEFRY0lERU0wQkR3dEJBQ0VCSUFCQnhwRjFha0VHU1EwQUlBQkJnSVxcXG5DOGYycEI4SU4wU1NFQkN5QUJEd3NnQUVHVXJNNEFRU2hCNUt6T0FFR2ZBa0dEcjg0QVFhOENFTTBCQy9vQkFnaC9BWDRqQUVFd2F5SUZcXFxuSkFBZ0FVRVVhaUVHSUFWQklHcEJCSEloQnlBQktBSVFJUWdnQVNnQ0NDRUpJQUVvQWd3aENnSkFBMEFDUUNBSklBcEhEUUFnQlVFQU5nXFxcbklBREFJTElBRWdDVUVNYWlJTE5nSUlJQVZCQ0dvZ0NVRUlhaUlNS0FJQU5nSUFJQVVnQ1NrQ0FDSU5Od01BSUEyblJRMEJJQWNnQ1NrQ1xcXG5BRGNDQUNBSFFRaHFJQXdvQWdBMkFnQWdCU0FJTmdJZ0lBVkJFR29nQmlBRlFTQnFFRWdnQTBFSWFpQUZRUkJxUVFocUtBSUFOZ0lBSUFcXFxuTWdCU2tERURjQ0FDQUJJQWhCQVdvaUNEWUNFQ0FEUVF4cUlRTWdDeUVKREFBTEN5QUZFTXdMSUFBZ0F6WUNCQ0FBSUFJMkFnQWdCVUV3XFxcbmFpUUFDL3dCQWdKL0FYNGdBQ0FBS0FJNElBSnFOZ0k0QWtBQ1FBSkFBa0FDUUNBQUtBSThJZ01OQUVFQUlRUU1BUXNnQUNBQUtRTXdJQVxcXG5GQkFDQUNRUWdnQTJzaUJDQUNJQVJKR3hDeEJDQURRUU4wUVRoeHJZYUVJZ1UzQXpBZ0JDQUNTdzBCSUFBZ0FDa0RHQ0FGaFRjREdDQUFcXFxuRUlvRklBQkJBRFlDUENBQUlBQXBBd0FnQUNrRE1JVTNBd0FMSUFJZ0JHc2lBMEY0Y1NFQ0RBRUxJQU1nQW1vaEFnd0JDd0pBQTBBZ0JDXFxcbkFDVHcwQklBQWdBQ2tER0NBQklBUnFLUUFBSWdXRk53TVlJQUFRaWdVZ0FDQUZJQUFwQXdDRk53TUFJQVJCQ0dvaEJBd0FDd3NnQUNBQlxcXG5JQVFnQTBFSGNTSUNFTEVFTndNd0N5QUFJQUkyQWp3TC9BRUNBbjhCZmlBQUlBQW9BamdnQW1vMkFqZ0NRQUpBQWtBQ1FBSkFJQUFvQWpcXFxud2lBdzBBUVFBaEJBd0JDeUFBSUFBcEF6QWdBVUVBSUFKQkNDQURheUlFSUFJZ0JFa2JFTFFFSUFOQkEzUkJPSEd0aG9RaUJUY0RNQ0FFXFxcbklBSkxEUUVnQUNBQUtRTVlJQVdGTndNWUlBQVFqd1VnQUVFQU5nSThJQUFnQUNrREFDQUFLUU13aFRjREFBc2dBaUFFYXlJRFFYaHhJUVxcXG5JTUFRc2dBeUFDYWlFQ0RBRUxBa0FEUUNBRUlBSlBEUUVnQUNBQUtRTVlJQUVnQkdvcEFBQWlCWVUzQXhnZ0FCQ1BCU0FBSUFVZ0FDa0RcXFxuQUlVM0F3QWdCRUVJYWlFRURBQUxDeUFBSUFFZ0JDQURRUWR4SWdJUXRBUTNBekFMSUFBZ0FqWUNQQXYrQVFFR2Z5TUFRVEJySWdNa0FFXFxcbkVBSVFRZ0EwRUFOZ0lvSUFNZ0FUWUNJQ0FESUFFMkFoZ2dBeUFDTmdJY0lBTWdBU0FDYWpZQ0pDQURRU0JxSVFJQ1FBTkFJQU1vQWlBaFxcXG5CU0FES0FJa0lRWWdBMEVRYWlBQ0VOMEVBa0FnQXlnQ0ZDSUhRWUNBeEFCSERRQkJBQ0VJREFJTElBZEJJVWtOQUFzZ0JpQUZheUFES0FcXFxuSVFJZ1JxSUFNb0FpQnFJQU1vQWlScklRZ0xBa0FEUUNBREtBSWdJUVVnQXlnQ0pDRUdJQU5CQ0dvZ0FoRFNCU0FES0FJTUlnZEJnSURFXFxcbkFFWU5BU0FIUVNGSkRRQUxJQVlnQldzZ0F5Z0NDR29nQXlnQ0lHb2dBeWdDSkdzaENBc2dBQ0FJSUFSck5nSUVJQUFnQVNBRWFqWUNBQ1xcXG5BRFFUQnFKQUFMK1FFQkFuOGpBRUVRYXlJRUpBQWdCQ0FETmdJRUlBUWdBallDQUVFQUlRVUNRQUpBSUFRUWpBbEZEUUFNQVFzZ0JDQURcXFxuTmdJTUlBUWdBallDQ0NBRVFRaHFFTDBLUlEwQUEwQUNRQUpBQWtBQ1FBSkFJQVFReUFraUEwR0FnTVFBUmcwQUlBTkJ2MzlxSVFJZ0EwXFxcbkdmZjJwQkdra05CQ0FDUVJwSkRRUWdBMEZRYWtFS1R3MEJEQVFMSUFFdEFDQkJBVVlOQVF3Q0N5QURRVk5xUVFKSkRRSWdBMEVyUmcwQ1xcXG5JQU5CT2tjTkFRc2dCQ2dDQkNFRElBUW9BZ0FoQlF3REMwRUFJUVVnQVVFQU5nSUlEQUlMSUFFZ0EwRWdjeUFESUFKQkdra2JFTjRFREFcXFxuQUxDeUFBSUFNMkFnUWdBQ0FGTmdJQUlBUkJFR29rQUF1R0FnRUJmeU1BUVlBQmF5SUNKQUFnQUNnQ0FDRUFJQUpCQURZQ1VDQUNRZ0UzXFxcbkEwZ2dBa0hZQUdvZ0FrSElBR3BCckxEQUFCRExDQUpBSUFBZ0FrSFlBR29ROFFGRkRRQkJ4TERBQUVFM0lBSkJJR3BCL0xEQUFFSFlzY1xcXG5BQUVNSUVBQXNnQWtFNGFrRUlhaUFDUWNnQWFrRUlhaWdDQURZQ0FDQUNRVFJxUVFnMkFnQWdBa0VnYWtFTWFrRUlOZ0lBSUFKQkNHcEJcXFxuREdwQ0F6Y0NBQ0FDSUFJcEEwZzNBemdnQWtHcUFUWUNKQ0FDUVFRMkFnd2dBa0d3ME1BQU5nSUlJQUlnQUVFUWFqWUNNQ0FDSUFCQkRHXFxcbm8yQWlnZ0FpQUNRVGhxTmdJZ0lBSWdBa0VnYWpZQ0VDQUJJQUpCQ0dvUXJRVWhBQ0FDUVRocUVPRUtJQUpCZ0FGcUpBQWdBQXVEQWdJQ1xcXG5md0orSXdCQk1Hc2lCQ1FBSUFGQkNHb29BZ0FoQlFKQUFrQUNRQ0FCS1FNQUlnWWdBbFFOQUNBR0lBSjlJUWNDUUNBRklBTlBEUUFnQjFcXFxuQU5BU0FGUVlDVTY5d0RhaUVGSUFkQ2Yzd2hCd3NnQnlBRklBTnJJZ0ZCZ0pUcjNBTnVJZ1d0ZkNJQ0lBZFVEUUlnQUNBQ053TUlJQUJCXFxcbkVHb2dBU0FGUVlDVTY5d0RiR3MyQWdCQ0FDRUNEQUVMSUFSQkNHb2dBaUFESUFZZ0JSQzFBeUFFS1FNSUlRSWdBRUVRYWlBRUtBSVFOZ1xcXG5JQUlBQWdBamNEQ0VJQklRSUxJQUFnQWpjREFDQUVRVEJxSkFBUEN5QUVRU1JxUWdBM0FnQWdCRUVCTmdJY0lBUkJsT0hOQURZQ0dDQUVcXFxuUWZqZ3pRQTJBaUFnQkVFWWFrSGs0YzBBRUpnSUFBdURBZ0lFZndGK0l3QkJNR3NpQWlRQUlBRkJCR29oQXdKQUlBRW9BZ1FOQUNBQktBXFxcbklBSVFRZ0FrRWdha0VJYWlJRlFRQTJBZ0FnQWtJQk53TWdJQUlnQWtFZ2FqWUNMQ0FDUVN4cVFlRGd6UUFnQkJCdEdpQUNRUkJxUVFocVxcXG5JQVVvQWdBaUJEWUNBQ0FDSUFJcEF5QWlCamNERUNBRFFRaHFJQVEyQWdBZ0F5QUdOd0lBQ3lBQ1FRaHFJZ1FnQTBFSWFpZ0NBRFlDQUNcXFxuQUJRUXhxUVFBMkFnQWdBeWtDQUNFR0lBRkNBVGNDQkVFQUxRRHhwazhhSUFJZ0JqY0RBQUpBUVF4QkJCRDNDeUlCRFFCQkJFRU1FSm9OXFxcbkFBc2dBU0FDS1FNQU53SUFJQUZCQ0dvZ0JDZ0NBRFlDQUNBQVFmenV6UUEyQWdRZ0FDQUJOZ0lBSUFKQk1Hb2tBQXVCQWdJQ2Z3SitJd1xcXG5CQkVHc2lCQ1FBQWtBQ1FBSkFBa0FDUUFKQUlBRW9BZ2dpQlNBQktBSUVUdzBBSUFFb0FnQWdCV290QUFBaUJVRXVSZzBDSUFWQnhRQkdcXFxuRFFFZ0JVSGxBRVlOQVF0Q0FTRUdBa0FnQWtVTkFDQURJUWNNQkF0Q0FDRUdBa0JDQUNBRGZTSUhRbjlWRFFCQ0FpRUdEQVFMSUFPNnZVXFxcbktBZ0lDQWdJQ0FnSUIvaFNFSERBTUxJQVFnQVNBQ0lBTkJBQkNnQVNBRUtBSUFSUTBCSUFBZ0JDZ0NCRFlDQ0NBQVFnTTNBd0FNQXdzZ1xcXG5CQ0FCSUFJZ0EwRUFFT2tCSUFRb0FnQkZEUUFnQUNBRUtBSUVOZ0lJSUFCQ0F6Y0RBQXdDQ3lBRUtRTUlJUWRDQUNFR0N5QUFJQWMzQXdcXFxuZ2dBQ0FHTndNQUN5QUVRUkJxSkFBTGdRSUNBbjhDZmlNQVFSQnJJZ1FrQUFKQUFrQUNRQUpBQWtBQ1FDQUJLQUlJSWdVZ0FTZ0NCRThOXFxcbkFDQUJLQUlBSUFWcUxRQUFJZ1ZCTGtZTkFpQUZRY1VBUmcwQklBVkI1UUJHRFFFTFFnRWhCZ0pBSUFKRkRRQWdBeUVIREFRTFFnQWhCZ1xcXG5KQVFnQWdBMzBpQjBKL1ZRMEFRZ0loQmd3RUN5QUR1cjFDZ0lDQWdJQ0FnSUNBZjRVaEJ3d0RDeUFFSUFFZ0FpQURRUUFRb3dFZ0JDZ0NcXFxuQUVVTkFTQUFJQVFvQWdRMkFnZ2dBRUlETndNQURBTUxJQVFnQVNBQ0lBTkJBQkRxQVNBRUtBSUFSUTBBSUFBZ0JDZ0NCRFlDQ0NBQVFnXFxcbk0zQXdBTUFnc2dCQ2tEQ0NFSFFnQWhCZ3NnQUNBSE53TUlJQUFnQmpjREFBc2dCRUVRYWlRQUMrNEJBUWgvSXdCQkVHc2lBaVFBQWtBQ1xcXG5RQUpBQWtBZ0FTZ0NDQ0lEUVFScUlBRW9BZ1FpQkVzTkFFRUFJUVZCQUNBRUlBTnJJZ1lnQmlBRVN4c2hCeUFCS0FJQUlBTnFJUWhCQUNcXFxuRUdEQUVMSUFFZ0JEWUNDQ0FDUVFRMkFnQU1BUXNDUUFOQUFrQWdCVUVFUncwQUlBQkJBRHNCQUNBQUlBWTdBUUlNQkFzZ0J5QUZSZzBCXFxcbklBRWdBeUFGYWtFQmFqWUNDQUpBSUFnZ0JXb3RBQUJCM05mQUFHb3RBQUFpQ1VIL0FVWU5BQ0FGUVFGcUlRVWdCa0VFZENBSmFpRUdEQVxcXG5FTEN5QUNRUXcyQWdBTUFRc2dBeUFGYWlBRVFielZ3QUFRZ1FVQUN5QUFJQUVnQWhETEJ3c2dBa0VRYWlRQUMrMEJBUVIvQWtBZ0FVR0FcXFxuQVVrTkFFRUFJUUpCL3dvaEEwSC9DaUVFQWtBRFFBSkFBa0JCZnlBRFFRRjJJQUpxSWdOQkEzUkI0TTNPQUdvb0FnQWlCU0FCUnlBRklBXFxcbkZKR3lJRlFRRkhEUUFnQXlFRURBRUxJQVZCL3dGeFFmOEJSdzBDSUFOQkFXb2hBZ3NnQkNBQ2F5RURJQVFnQWtzTkFBc2dBRUlBTndJRVxcXG5JQUFnQVRZQ0FBOExJQUJDaHdaQ0FDQURRUU4wUWVUTnpnQnFLQUlBSWdKQmdJREVBRVlnQWtHQXNBTnpRWUNBdkg5cVFZQ1F2SDlKY2lcXFxuSUVHemNDQkNBQVFla0FJQUlnQkJzMkFnQVBDeUFBUWdBM0FnUWdBQ0FCUWI5L2FrSC9BWEZCR2tsQkJYUWdBWEkyQWdBTDZRRUJCSDhqXFxcbkFFSGdBR3NpQWlRQUlBSkJHR29nQVJCekFrQUNRQ0FDS0FJWURRQWdBRUVBTmdJSUlBQkNCRGNDQUNBQlFTaHFFTTBMREFFTElBSkJLR1xcXG5vZ0FSQ1FCQ0FDSUFJb0FpaEJBV29pQTBGL0lBTWJJZ05CQkNBRFFRUkxHMEVBRVA4RElBSkJHR3BCQ0dvb0FnQWhCQ0FDS0FJRUlRVWdcXFxuQWlnQ0FDSURJQUlwQXhnM0FnQWdBMEVJYWlBRU5nSUFJQUpCQ0dwQkNHb2lCRUVCTmdJQUlBSWdCVFlDRENBQ0lBTTJBZ2dnQWtFb2FpXFxcbkFCUVRnUXBBMGFJQUpCQ0dvZ0FrRW9haERWQXlBQVFRaHFJQVFvQWdBMkFnQWdBQ0FDS1FNSU53SUFDeUFDUWVBQWFpUUFDK2tCQVFWL1xcXG5Jd0JCSUdzaUFTUUFJQUFnQUNnQ0NDSUNRUUZxSWdNMkFnZ0NRQ0FESUFBb0FnUlBEUUFDUUNBQUtBSUFJQU5xTFFBQVFWVnFEZ01BQVFcXFxuQUJDeUFBSUFKQkFtbzJBZ2dMSUFGQkNHb2dBQkNaQmdKQUFrQWdBUzBBQ0EwQUFrQWdBUzBBQ1VGUWFrSC9BWEZCQ2trTkFDQUJRUTAyXFxcbkFoQWdBQ0FCUVJCcUVNOElJUUlNQWdzZ0FDZ0NDQ0lESUFBb0FnUWlBaUFESUFKTEd5RUVJQUFvQWdBaEJRTkFRUUFoQWlBRUlBTkdEUVxcXG5JZ0JTQURhaTBBQUVGUWFrSC9BWEZCQ1VzTkFpQUFJQU5CQVdvaUF6WUNDQXdBQ3dzZ0FTZ0NEQ0VDQ3lBQlFTQnFKQUFnQWd2ekFRSUZcXFxuZndKK0l3QkJJR3NpQXlRQUlBTWdBallDRUNBQlFobUlRdjhBZzBLQmdvU0lrS0RBZ0FGK0lRZ2dBeUFBTmdJVUlBQW9BZ1FpQkNBQnAzXFxcbkVoQWlBQUtBSUFJUVZCQUNFR0EwQWdBeUFGSUFKcUtRQUFJZ0VnQ0lVaUNVSi9oU0FKUXYvOSsvZnYzNy8vZm55RFFvQ0Jnb1NJa0tEQVxcXG5nSCtETndNWUFrQURRQ0FEUVFocUlBTkJHR29RaEFjQ1FDQURLQUlJSWdBTkFDQUJJQUZDQVlhRFFvQ0Jnb1NJa0tEQWdIK0RVRVVOQWlcXFxuQUNJQVpCQ0dvaUJtb2dCSEVoQWd3REN5QURRUkJxSUFNb0Fnd2dBbW9nQkhFaUJ4RE5Da1VOQUFzTEN5QURRU0JxSkFBZ0JTQUhRUUowXFxcbmEwRUFJQUFiQytnQkFRSi9Jd0JCSUdzaUFpUUFBa0FDUUNBQlJRMEFJQUlnQURZQ0NDQUNJQUFnQVdvMkFneEJBQ0VBQTBBZ0FDRURRUVxcXG5BaEFDQUNRUWhxRUlVRElnRkJMa1lOQUFKQUlBRkJnSURFQUVjTkFFRUJJUUVNQXdzQ1FDQUREUUFnQVVFdFJnMENDMEVGSVFBQ1FDQURcXFxuUVFWUERRQWdBa0t0Z0lDQTBBVTNBaGdnQWtMNGdJQ0E0QTAzQWhBQ1FDQURRUVJHRFFBZ0FTQUNRUkJxSUFOQkFuUnFLQUlBUncwQklBXFxcbk5CQVdvaUFFRUVSZzBEREFFTFFRUkJCRUhjb3NFQUVJRUZBQXNnQVVHRmYycEJaVXNOQUNBQlFVWnFRWFpQRFFBTEMwRUFJUUVMSUFKQlxcXG5JR29rQUNBQkMvQUJBUU4vSXdCQjBBQnJJZ01rQUNBQ0tBSUlJQUlvQWdRaUJFRU1iR29oQlNBQ0tBSUFJUUlDUUFOQUlBQWdBVVlOQVNcXFxuQURJQUEyQWd3Z0EwRUROZ0lzSUFOQkFUWUNKQ0FEUVFFMkFoUWdBMEhnZ3NBQU5nSVFJQU5CQVRZQ0hDQURJQU5CREdvMkFpZ2dBMEVEXFxcbk9nQk1JQU5DSURjRFFDQURRb0NBZ0lBZ053TTRJQU5CQWpZQ01DQURRUWcyQWtnZ0F5QURRVEJxTmdJZ0lBTWdBMEVvYWpZQ0dDQURJQVxcXG5OQkVHb1Fqd1FnQlVFSWFpQURRUWhxS0FJQU5nSUFJQVVnQXlrREFEY0NBQ0FGUVF4cUlRVWdCRUVCYWlFRUlBQkJBV29oQUF3QUN3c2dcXFxuQWlBRU5nSUFJQU5CMEFCcUpBQUwvQUVDQW44Q2ZDTUFRUkJySWdVa0FDQUR1aUVIQWtBQ1FBSkFBa0FDUUFOQUlBUWdCRUVmZFNJR2N5XFxcbkFHYXlJR1FiVUNTUTBCSUFkRUFBQUFBQUFBQUFCaERRUWdCRUYvU2cwQ0lBUkJ0QUpxSVFRZ0IwU2d5T3VGODh6aGY2TWhCd3dBQ3dzZ1xcXG5Ca0VEZEVHNHQ4QUFhaXNEQUNFSUFrQWdCRUYvU2cwQUlBY2dDS01oQnd3REN3SkFJQWNnQ0tJaUIwUUFBQUFBQUFEd2YyRU5BQ0FIUkFcXFxuQUFBQUFBQVBEL1lnMERDeUFGUVE0MkFnQWdBQ0FCSUFVUXp3ZzJBZ1FNQVFzZ0JVRU9OZ0lBSUFBZ0FTQUZFTThJTmdJRUMwRUJJUVFNXFxcbkFRc2dBQ0FISUFlYUlBSWJPUU1JUVFBaEJBc2dBQ0FFTmdJQUlBVkJFR29rQUF2akFRRUVmeU1BUVNCcklnUWtBQUpBSUFCQkdHb29BZ1xcXG5BaUJTQUFRUlJxS0FJQUlnWkhEUUFnQUVFQkVLUUZJQUFvQWhRaEJpQUFLQUlZSVFVTElBUkJDR3BCQ0dvaUJ5QUNRUWhxS0FJQU5nSUFcXFxuSUFSQkNHcEJGR29nQTBFSWFpZ0NBRFlDQUNBRUlBSXBBZ0EzQXdnZ0JDQURLUUlBTndJVUFrQWdCU0FHUncwQUlBQkJFR29nQmhEMkNDXFxcbkFBS0FJWUlRVUxJQUFvQWhBZ0JVRWNiR29pQlNBRUtRTUlOd0lBSUFVZ0FUWUNHQ0FGUVJCcUlBUkJDR3BCRUdvcEF3QTNBZ0FnQlVFSVxcXG5haUFIS1FNQU53SUFJQUFnQUNnQ0dFRUJhallDR0NBRVFTQnFKQUFML0FFQ0FuOENmQ01BUVJCcklnVWtBQ0FEdWlFSEFrQUNRQUpBQWtcXFxuQUNRQU5BSUFRZ0JFRWZkU0lHY3lBR2F5SUdRYlVDU1EwQklBZEVBQUFBQUFBQUFBQmhEUVFnQkVGL1NnMENJQVJCdEFKcUlRUWdCMFNnXFxcbnlPdUY4OHpoZjZNaEJ3d0FDd3NnQmtFRGRFRzR0OEFBYWlzREFDRUlBa0FnQkVGL1NnMEFJQWNnQ0tNaEJ3d0RDd0pBSUFjZ0NLSWlCMFxcXG5RQUFBQUFBQUR3ZjJFTkFDQUhSQUFBQUFBQUFQRC9ZZzBEQ3lBRlFRNDJBZ0FnQUNBQklBVVEzd2cyQWdRTUFRc2dCVUVPTmdJQUlBQWdcXFxuQVNBRkVOOElOZ0lFQzBFQklRUU1BUXNnQUNBSElBZWFJQUliT1FNSVFRQWhCQXNnQUNBRU5nSUFJQVZCRUdva0FBdmRBUUlFZndGK0l3XFxcbkJCNEFCcklnTWtBQ0FEUVJocVFReHFJUVFnQTBFTWFpRUZBa0FEUUNBQVJRMEJJQUFnQVVZTkFTQURJQUFRbndVZ0JTQUFRUXhxRUo4RlxcXG5JQU5CR0dwQkVHb2dBMEVRYWlrREFEY0RBQ0FEUVJocVFRaHFJQU5CQ0dvaUJpa0RBRGNEQUNBRElBTXBBd0FpQnpjREdDQURRVEJxUVFcXFxuaHFJQVlvQWdBMkFnQWdBMEhBQUdwQkNHb2dCRUVJYWlnQ0FEWUNBQ0FESUFjM0F6QWdBeUFFS1FJQU53TkFJQU5CMEFCcUlBSWdBMEV3XFxcbmFpQURRY0FBYWhDa0FpQUFRUnhxSVFBZ0EwSFFBR29RekFzTUFBc0xJQU5CNEFCcUpBQUwzQUVBQWtBQ1FDQUJRWUFCU1EwQUFrQWdBVVxcXG5HQUVFa05BQUpBSUFGQmdJQUVTUTBBSUFJZ0FVRS9jVUdBQVhJNkFBTWdBaUFCUVFaMlFUOXhRWUFCY2pvQUFpQUNJQUZCREhaQlAzRkJcXFxuZ0FGeU9nQUJJQUlnQVVFU2RrRUhjVUh3QVhJNkFBQkJCQ0VCREFNTElBSWdBVUUvY1VHQUFYSTZBQUlnQWlBQlFReDJRZUFCY2pvQUFDXFxcbkFDSUFGQkJuWkJQM0ZCZ0FGeU9nQUJRUU1oQVF3Q0N5QUNJQUZCUDNGQmdBRnlPZ0FCSUFJZ0FVRUdka0hBQVhJNkFBQkJBaUVCREFFTFxcXG5JQUlnQVRvQUFFRUJJUUVMSUFBZ0FUWUNCQ0FBSUFJMkFnQUwzQUVBQWtBQ1FDQUJRWUFCU1EwQUFrQWdBVUdBRUVrTkFBSkFJQUZCZ0lcXFxuQUVTUTBBSUFJZ0FVRS9jVUdBQVhJNkFBTWdBaUFCUVFaMlFUOXhRWUFCY2pvQUFpQUNJQUZCREhaQlAzRkJnQUZ5T2dBQklBSWdBVUVTXFxcbmRrRUhjVUh3QVhJNkFBQkJCQ0VCREFNTElBSWdBVUUvY1VHQUFYSTZBQUlnQWlBQlFReDJRZUFCY2pvQUFDQUNJQUZCQm5aQlAzRkJnQVxcXG5GeU9nQUJRUU1oQVF3Q0N5QUNJQUZCUDNGQmdBRnlPZ0FCSUFJZ0FVRUdka0hBQVhJNkFBQkJBaUVCREFFTElBSWdBVG9BQUVFQklRRUxcXFxuSUFBZ0FUWUNCQ0FBSUFJMkFnQUw2Z0VCQW44akFFRVFheUlGSkFBQ1FBSkFBa0FnQVVVTkFBSkFBa0FDUUNBQ1FYOU1EUUFnQXlnQ0JBXFxcbjBCSUFVZ0FTQUNFT29ISUFVb0FnUWhCaUFGS0FJQUlRTU1BZ3NnQUVFQU5nSUVEQU1MQWtBZ0EwRUlhaWdDQUNJR0RRQWdCVUVJYWlBQlxcXG5JQUpCQUJDSUNDQUZLQUlNSVFZZ0JTZ0NDQ0VEREFFTElBTW9BZ0FnQmlBQklBSVFzQXNoQXlBQ0lRWUxBa0FnQTBVTkFDQUFJQU0yQWdcXFxuUWdBRUVJYWlBR05nSUFRUUFoQWd3REN5QUFJQUUyQWdRZ0FFRUlhaUFDTmdJQURBRUxJQUJCQURZQ0JDQUFRUWhxSUFJMkFnQUxRUUVoXFxcbkFnc2dBQ0FDTmdJQUlBVkJFR29rQUF2cUFRRUNmeU1BUVJCcklnVWtBQUpBQWtBQ1FDQUJSUTBBQWtBQ1FBSkFJQUpCZjB3TkFDQURLQVxcXG5JRURRRWdCU0FCSUFJUTdRY2dCU2dDQkNFR0lBVW9BZ0FoQXd3Q0N5QUFRUUEyQWdRTUF3c0NRQ0FEUVFocUtBSUFJZ1lOQUNBRlFRaHFcXFxuSUFFZ0FrRUFFSWtJSUFVb0Fnd2hCaUFGS0FJSUlRTU1BUXNnQXlnQ0FDQUdJQUVnQWhDd0N5RURJQUloQmdzQ1FDQURSUTBBSUFBZ0F6XFxcbllDQkNBQVFRaHFJQVkyQWdCQkFDRUNEQU1MSUFBZ0FUWUNCQ0FBUVFocUlBSTJBZ0FNQVFzZ0FFRUFOZ0lFSUFCQkNHb2dBallDQUF0QlxcXG5BU0VDQ3lBQUlBSTJBZ0FnQlVFUWFpUUFDOXdCQUFKQUFrQWdBVUdBQVVrTkFBSkFJQUZCZ0JCSkRRQUNRQ0FCUVlDQUJFa05BQ0FDSUFcXFxuRkJQM0ZCZ0FGeU9nQURJQUlnQVVFR2RrRS9jVUdBQVhJNkFBSWdBaUFCUVF4MlFUOXhRWUFCY2pvQUFTQUNJQUZCRW5aQkIzRkI4QUZ5XFxcbk9nQUFRUVFoQVF3REN5QUNJQUZCUDNGQmdBRnlPZ0FDSUFJZ0FVRU1ka0hnQVhJNkFBQWdBaUFCUVFaMlFUOXhRWUFCY2pvQUFVRURJUVxcXG5FTUFnc2dBaUFCUVQ5eFFZQUJjam9BQVNBQ0lBRkJCblpCd0FGeU9nQUFRUUloQVF3QkN5QUNJQUU2QUFCQkFTRUJDeUFBSUFFMkFnUWdcXFxuQUNBQ05nSUFDK29CQVFKL0l3QkJFR3NpQlNRQUFrQUNRQUpBSUFGRkRRQUNRQUpBQWtBZ0FrRi9UQTBBSUFNb0FnUU5BU0FGSUFFZ0FoXFxcbkR3QnlBRktBSUVJUVlnQlNnQ0FDRUREQUlMSUFCQkFEWUNCQXdEQ3dKQUlBTkJDR29vQWdBaUJnMEFJQVZCQ0dvZ0FTQUNRUUFRaXdnZ1xcXG5CU2dDRENFR0lBVW9BZ2doQXd3QkN5QURLQUlBSUFZZ0FTQUNFTEFMSVFNZ0FpRUdDd0pBSUFORkRRQWdBQ0FETmdJRUlBQkJDR29nQmpcXFxuWUNBRUVBSVFJTUF3c2dBQ0FCTmdJRUlBQkJDR29nQWpZQ0FBd0JDeUFBUVFBMkFnUWdBRUVJYWlBQ05nSUFDMEVCSVFJTElBQWdBallDXFxcbkFDQUZRUkJxSkFBTDNBRUFBa0FDUUNBQlFZQUJTUTBBQWtBZ0FVR0FFRWtOQUFKQUlBRkJnSUFFU1EwQUlBSWdBVUUvY1VHQUFYSTZBQVxcXG5NZ0FpQUJRUVoyUVQ5eFFZQUJjam9BQWlBQ0lBRkJESFpCUDNGQmdBRnlPZ0FCSUFJZ0FVRVNka0VIY1VId0FYSTZBQUJCQkNFQkRBTUxcXFxuSUFJZ0FVRS9jVUdBQVhJNkFBSWdBaUFCUVF4MlFlQUJjam9BQUNBQ0lBRkJCblpCUDNGQmdBRnlPZ0FCUVFNaEFRd0NDeUFDSUFGQlAzXFxcbkZCZ0FGeU9nQUJJQUlnQVVFR2RrSEFBWEk2QUFCQkFpRUJEQUVMSUFJZ0FUb0FBRUVCSVFFTElBQWdBVFlDQkNBQUlBSTJBZ0FMOGdFQ1xcXG5CWDhCZmlNQVFkQUFheUlESkFBZ0EwRVlha0VJYWlJRUlBRkJIR29pQlNnQ0FEWUNBQ0FGUVFBMkFnQWdBU2tDRkNFSUlBRkNBVGNDRkNcXFxuQURRUUU2QURnZ0EwRUFOZ0l3SUFOQ0FEY0NKQ0FESUFnM0F4Z2dBaWdDQkNnQ0FDRUdJQUlvQWdBdEFBQWhCeUFEUVJCcUlBSW9BZ2dpXFxcbkFpZ0NBQ0FDS0FJRUVKUUNJQU5CQ0dvZ0EwRVlhaUFISUFZZ0F5Z0NFQ0lDSUFJZ0F5Z0NGR29RMFFFZ0F5a0RDQ0VJSUFOQndBQnFRUVxcXG5ocUlnSWdCQ2dDQURZQ0FDQURJQU1wQXhnM0EwQWdBVUVVYWhDS0RTQUZJQUlvQWdBMkFnQWdBU0FES1FOQU53SVVJQUFnQ0RjREFDQURcXFxuUWRBQWFpUUFDOXdCQUFKQUFrQWdBVUdBQVVrTkFBSkFJQUZCZ0JCSkRRQUNRQ0FCUVlDQUJFa05BQ0FDSUFGQlAzRkJnQUZ5T2dBRElBXFxcbklnQVVFR2RrRS9jVUdBQVhJNkFBSWdBaUFCUVF4MlFUOXhRWUFCY2pvQUFTQUNJQUZCRW5aQkIzRkI4QUZ5T2dBQVFRUWhBUXdEQ3lBQ1xcXG5JQUZCUDNGQmdBRnlPZ0FDSUFJZ0FVRU1ka0hnQVhJNkFBQWdBaUFCUVFaMlFUOXhRWUFCY2pvQUFVRURJUUVNQWdzZ0FpQUJRVDl4UVlcXFxuQUJjam9BQVNBQ0lBRkJCblpCd0FGeU9nQUFRUUloQVF3QkN5QUNJQUU2QUFCQkFTRUJDeUFBSUFFMkFnUWdBQ0FDTmdJQUMrb0JBUUovXFxcbkl3QkJFR3NpQlNRQUFrQUNRQUpBSUFGRkRRQUNRQUpBQWtBZ0FrRi9UQTBBSUFNb0FnUU5BU0FGSUFFZ0FoRDZCeUFGS0FJRUlRWWdCU1xcXG5nQ0FDRUREQUlMSUFCQkFEWUNCQXdEQ3dKQUlBTkJDR29vQWdBaUJnMEFJQVZCQ0dvZ0FTQUNRUUFRa2dnZ0JTZ0NEQ0VHSUFVb0FnZ2hcXFxuQXd3QkN5QURLQUlBSUFZZ0FTQUNFTEFMSVFNZ0FpRUdDd0pBSUFORkRRQWdBQ0FETmdJRUlBQkJDR29nQmpZQ0FFRUFJUUlNQXdzZ0FDXFxcbkFCTmdJRUlBQkJDR29nQWpZQ0FBd0JDeUFBUVFBMkFnUWdBRUVJYWlBQ05nSUFDMEVCSVFJTElBQWdBallDQUNBRlFSQnFKQUFMNmdFQlxcXG5BbjhqQUVFUWF5SUZKQUFDUUFKQUFrQWdBVVVOQUFKQUFrQUNRQ0FDUVg5TURRQWdBeWdDQkEwQklBVWdBU0FDRVB3SElBVW9BZ1FoQmlcXFxuQUZLQUlBSVFNTUFnc2dBRUVBTmdJRURBTUxBa0FnQTBFSWFpZ0NBQ0lHRFFBZ0JVRUlhaUFCSUFKQkFCQ1RDQ0FGS0FJTUlRWWdCU2dDXFxcbkNDRUREQUVMSUFNb0FnQWdCaUFCSUFJUXNBc2hBeUFDSVFZTEFrQWdBMFVOQUNBQUlBTTJBZ1FnQUVFSWFpQUdOZ0lBUVFBaEFnd0RDeVxcXG5BQUlBRTJBZ1FnQUVFSWFpQUNOZ0lBREFFTElBQkJBRFlDQkNBQVFRaHFJQUkyQWdBTFFRRWhBZ3NnQUNBQ05nSUFJQVZCRUdva0FBdmNcXFxuQVFBQ1FBSkFJQUZCZ0FGSkRRQUNRQ0FCUVlBUVNRMEFBa0FnQVVHQWdBUkpEUUFnQWlBQlFUOXhRWUFCY2pvQUF5QUNJQUZCQm5aQlAzXFxcbkZCZ0FGeU9nQUNJQUlnQVVFTWRrRS9jVUdBQVhJNkFBRWdBaUFCUVJKMlFRZHhRZkFCY2pvQUFFRUVJUUVNQXdzZ0FpQUJRVDl4UVlBQlxcXG5jam9BQWlBQ0lBRkJESFpCNEFGeU9nQUFJQUlnQVVFR2RrRS9jVUdBQVhJNkFBRkJBeUVCREFJTElBSWdBVUUvY1VHQUFYSTZBQUVnQWlcXFxuQUJRUVoyUWNBQmNqb0FBRUVDSVFFTUFRc2dBaUFCT2dBQVFRRWhBUXNnQUNBQk5nSUVJQUFnQWpZQ0FBdnhBUUVDZnlNQVFaQUVheUlDXFxcbkpBQWdBa0VZYWtHNC9jQUFFS3NJSUFKQkVHb2dBVUVCRVBVS0lBSW9BaFFoQXlBQ0tBSVFJUUVEUUFKQUlBRWdBMGNOQUNBQ1FiZ0NhaVxcXG5BQ1FSaHFRZGdCRUtRTkdpQUNRZkFCYWlBQ1FiZ0NhaEQyQlNBQ1FRaHFJQUpCOEFGcVFRZ1F1UXNnQWtFQUlBSW9BckFDS0FKSUlBSW9cXFxuQWdnZ0FpZ0NERUdZbThBQUVJVUhJQUpCdUFKcUlBSW9BZ0FpQVNBQklBSW9BZ1JxRU13RklBQWdBaWdDdUFJZ0FpZ0N3QUpCNElMQUFFXFxcbkVBRUU0Z0FrRzRBbW9RNGd3Z0FrR1FCR29rQUE4TElBSkJHR29nQVNnQ0FDQUJRUVJxS0FJQUVOQUJJQUZCQ0dvaEFRd0FDd3Y2QVFFQlxcXG5meU1BUWRBQWF5SUVKQUFnQkVIQUFHb2dBaUFERUpRTklBUkJPR29nQkVIQUFHb1FpZ29nQkVFd2FpQUVLQUk0SUFRb0Fqd1FDQ0FFS0FcXFxuSTBJUU1nQkNnQ01DRUNJQVJCS0dvUXh3a0NRQUpBQWtBZ0JDZ0NLRVVOQUNBRUtBSXNJUU1NQVFzZ0JFRWdhaUFDSUFNUWlReEJnSlRyXFxcbjNBTWhBaUFFS0FJa0lRTUNRQUpBSUFRb0FpQU9Bd0VBQWdBTElBUkJFR29nQTYwUXRnZ2dCRUlBUVFBZ0JDa0RFQ0FFS0FJWUVMb0RJQVxcXG5Rb0FnZ2hBaUFBSUFRcEF3QTNBd0FMSUFBZ0FqWUNDQ0FFUWNBQWFoRE1Dd3dCQ3lBQUlBTVErd1FnQUVHQmxPdmNBellDQ0NBRVFjQUFcXFxuYWhETUN3c2dCRUhRQUdva0FBdm9BUUVDZnlNQVFSQnJJZ1VrQUFKQUFrQUNRQ0FCUlEwQUFrQUNRQUpBSUFKQmYwd05BQ0FES0FJRURRXFxcbkVnQlNBQklBSVEyd2tnQlNnQ0JDRUdJQVVvQWdBaEF3d0NDeUFBUVFBMkFnUU1Bd3NDUUNBRFFRaHFLQUlBSWdZTkFDQUZRUWhxSUFFZ1xcXG5BaERiQ1NBRktBSU1JUVlnQlNnQ0NDRUREQUVMSUFNb0FnQWdCaUFCSUFJUXNBc2hBeUFDSVFZTEFrQWdBMFVOQUNBQUlBTTJBZ1FnQUVcXFxuRUlhaUFHTmdJQVFRQWhBZ3dEQ3lBQUlBRTJBZ1FnQUVFSWFpQUNOZ0lBREFFTElBQkJBRFlDQkNBQVFRaHFJQUkyQWdBTFFRRWhBZ3NnXFxcbkFDQUNOZ0lBSUFWQkVHb2tBQXZMQVFFRWYwRUFJUVFDUUFKQUlBSkJBa2tOQUFKQUFrQUNRQ0FDUVFOMElBRnFJZ1ZCZUdvaUJpZ0NBQ1xcXG5JSElBWW9BZ1JxSUFOR0RRQWdCVUZ3YWlnQ0FDSUZJQWRORFFBZ0FrRURTUTBESUFFZ0FrRjlhaUlEUVFOMGFpZ0NBQ0lHSUFVZ0IycE5cXFxuRFFFZ0FrRUVTUTBESUFKQkEzUWdBV3BCWUdvb0FnQWdCaUFGYWswTkFRd0VDeUFDUVFOSkRRRWdBU0FDUVgxcUlnTkJBM1JxS0FJQUlRXFxcbllMUVFFaEJDQUdJQWRKRFFJTElBSkJmbW9oQTBFQklRUU1BUXNMSUFBZ0F6WUNCQ0FBSUFRMkFnQUw3QUVCQTM4akFFSEFBR3NpQWlRQVxcXG5JQUlnQVNnQ0RDSUROZ0lnSUFJZ0FTZ0NBQ0lFTmdJWUlBSWdCRUVJYWpZQ0VDQUNJQVFnQVNnQ0JHcEJBV28yQWhRZ0FpQUVLUU1BUW5cXFxuK0ZRb0NCZ29TSWtLREFnSCtETndNSUlBSkJNR29nQUVFQklBTVFtd01nQWlnQ01DRUJBa0FnQWkwQU5DSUVRUU5HRFFBZ0FpQUVPZ0FzXFxcbklBSWdBVFlDS0FKQUEwQWdBaUFDUVFocUVPUUpJQUlvQWdBaUFVVU5BU0FDS0FJRUlRUWdBaUFCTmdJOElBSWdCRFlDTUNBQ1FTaHFJQVxcXG5KQlBHb2dBa0V3YWhEWkJDSUJSUTBBREFJTEN5QUNLQUlvSUFJdEFDd1E1d1loQVFzZ0FrSEFBR29rQUNBQkMrVUJBZ0ovQVg0akFFRXdcXFxuYXlJRkpBQWdCVUVJYWlBQklBSWdBeEM0QXlBRktBSU1JUVlDUUFKQUFrQWdCU2dDQ0EwQUlBRkJHR29vQWdBaUFpQUdUUTBDSUFBZ0JqXFxcbllDQUNBQktBSVFJQVpCSEd4cUlnRXBBZ3doQnlBQklBUXBBZ0EzQWd3Z0FDQUhOd0lFSUFGQkZHb2lBU2dDQUNFR0lBRWdCRUVJYWlnQ1xcXG5BRFlDQUNBQVFReHFJQVkyQWdBZ0F4RGpEQXdCQ3lBRlFTQnFRUWhxSUFOQkNHb29BZ0EyQWdBZ0JTQURLUUlBTndNZ0lBRWdBaUFGUVNcXFxuQnFJQVFReUFJZ0FFRUFOZ0lFSUFBZ0JqWUNBQXNnQlVFd2FpUUFEd3NnQmlBQ1FjeWR3QUFRZ1FVQUM5c0JBUU4vSXdCQklHc2lCQ1FBXFxcblFRQWhCUUpBSUFJZ0Eyb2lBeUFDU1EwQUlBRW9BZ1FpQWtFQmRDSUZJQU1nQlNBRFN4c2lBMEVFSUFOQkJFc2JJZ05CREd3aEJTQURRYVxcXG52VnF0VUFTVUVDZENFR0FrQUNRQ0FDUlEwQUlBUkJCRFlDRkNBRUlBSkJER3cyQWhnZ0JDQUJLQUlBTmdJUURBRUxJQVJCQURZQ0ZBc2dcXFxuQkNBR0lBVWdCRUVRYWlBQkVOUUNJQVFvQWdRaEJRSkFJQVFvQWdCRkRRQWdCRUVJYWlnQ0FDRUREQUVMSUFFZ0F6WUNCQ0FCSUFVMkFnXFxcbkJCZ1lDQWdIZ2hCUXNnQUNBRE5nSUVJQUFnQlRZQ0FDQUVRU0JxSkFBTDNBRUJBMzhqQUVFZ2F5SUVKQUJCQUNFRkFrQWdBaUFEYWlJRFxcXG5JQUpKRFFBZ0FTZ0NCQ0lDUVFGMElnVWdBeUFGSUFOTEd5SURRUVFnQTBFRVN4c2lBMEhZQUd3aEJTQURRWmk2MFF0SlFRSjBJUVlDUUFcXFxuSkFJQUpGRFFBZ0JFRUVOZ0lVSUFRZ0FrSFlBR3cyQWhnZ0JDQUJLQUlBTmdJUURBRUxJQVJCQURZQ0ZBc2dCQ0FHSUFVZ0JFRVFhaUFCXFxcbkVOUUNJQVFvQWdRaEJRSkFJQVFvQWdCRkRRQWdCRUVJYWlnQ0FDRUREQUVMSUFFZ0F6WUNCQ0FCSUFVMkFnQkJnWUNBZ0hnaEJRc2dBQ1xcXG5BRE5nSUVJQUFnQlRZQ0FDQUVRU0JxSkFBTDJnRUJBMzhqQUVFZ2F5SUVKQUJCQUNFRkFrQWdBaUFEYWlJRElBSkpEUUFnQVNnQ0JDSUNcXFxuUVFGMElnVWdBeUFGSUFOTEd5SURRUVFnQTBFRVN4c2lBMEVjYkNFRklBTkJwWkxKSkVsQkFuUWhCZ0pBQWtBZ0FrVU5BQ0FFUVFRMkFoXFxcblFnQkNBQ1FSeHNOZ0lZSUFRZ0FTZ0NBRFlDRUF3QkN5QUVRUUEyQWhRTElBUWdCaUFGSUFSQkVHb2dBUkRVQWlBRUtBSUVJUVVDUUNBRVxcXG5LQUlBUlEwQUlBUkJDR29vQWdBaEF3d0JDeUFCSUFNMkFnUWdBU0FGTmdJQVFZR0FnSUI0SVFVTElBQWdBellDQkNBQUlBVTJBZ0FnQkVcXFxuRWdhaVFBQzlvQkFRTi9Jd0JCSUdzaUJDUUFRUUFoQlFKQUlBSWdBMm9pQXlBQ1NRMEFJQUVvQWdRaUFrRUJkQ0lGSUFNZ0JTQURTeHNpXFxcbkEwRUVJQU5CQkVzYklnTkJCM1FoQlNBRFFZQ0FnQWhKUVFOMElRWUNRQUpBSUFKRkRRQWdCRUVJTmdJVUlBUWdBa0VIZERZQ0dDQUVJQVxcXG5Fb0FnQTJBaEFNQVFzZ0JFRUFOZ0lVQ3lBRUlBWWdCU0FFUVJCcUlBRVExQUlnQkNnQ0JDRUZBa0FnQkNnQ0FFVU5BQ0FFUVFocUtBSUFcXFxuSVFNTUFRc2dBU0FETmdJRUlBRWdCVFlDQUVHQmdJQ0FlQ0VGQ3lBQUlBTTJBZ1FnQUNBRk5nSUFJQVJCSUdva0FBdmJBUUVEZnlNQVFTXFxcbkJySWdRa0FFRUFJUVVDUUNBQ0lBTnFJZ01nQWtrTkFDQUJLQUlFSWdKQkFYUWlCU0FESUFVZ0Ewc2JJZ05CQkNBRFFRUkxHeUlEUVFaMFxcXG5JUVVnQTBHQWdJQVFTVUVHZENFR0FrQUNRQ0FDUlEwQUlBUkJ3QUEyQWhRZ0JDQUNRUVowTmdJWUlBUWdBU2dDQURZQ0VBd0JDeUFFUVFcXFxuQTJBaFFMSUFRZ0JpQUZJQVJCRUdvZ0JCRE9BaUFFS0FJRUlRVUNRQ0FFS0FJQVJRMEFJQVJCQ0dvb0FnQWhBd3dCQ3lBQklBTTJBZ1FnXFxcbkFTQUZOZ0lBUVlHQWdJQjRJUVVMSUFBZ0F6WUNCQ0FBSUFVMkFnQWdCRUVnYWlRQUM5b0JBUU4vSXdCQklHc2lCQ1FBUVFBaEJRSkFJQVxcXG5JZ0Eyb2lBeUFDU1EwQUlBRW9BZ1FpQWtFQmRDSUZJQU1nQlNBRFN4c2lBMEVFSUFOQkJFc2JJZ05CR0d3aEJTQURRZGFxMVNwSlFRSjBcXFxuSVFZQ1FBSkFJQUpGRFFBZ0JFRUVOZ0lVSUFRZ0FrRVliRFlDR0NBRUlBRW9BZ0EyQWhBTUFRc2dCRUVBTmdJVUN5QUVJQVlnQlNBRVFSXFxcbkJxSUFRUTBBSWdCQ2dDQkNFRkFrQWdCQ2dDQUVVTkFDQUVRUWhxS0FJQUlRTU1BUXNnQVNBRE5nSUVJQUVnQlRZQ0FFR0JnSUNBZUNFRlxcXG5DeUFBSUFNMkFnUWdBQ0FGTmdJQUlBUkJJR29rQUF2YkFRRURmeU1BUVNCcklnUWtBRUVBSVFVQ1FDQUNJQU5xSWdNZ0Fra05BQ0FCS0FcXFxuSUVJZ0pCQVhRaUJTQURJQVVnQTBzYklnTkJCQ0FEUVFSTEd5SURRUUowSVFVZ0EwR0FnSUNBQWtsQkFuUWhCZ0pBQWtBZ0FrVU5BQ0FFXFxcblFRUTJBaFFnQkNBQ1FRSjBOZ0lZSUFRZ0FTZ0NBRFlDRUF3QkN5QUVRUUEyQWhRTElBUWdCaUFGSUFSQkVHb2dBUkRVQWlBRUtBSUVJUVxcXG5VQ1FDQUVLQUlBUlEwQUlBUkJDR29vQWdBaEF3d0JDeUFCSUFNMkFnUWdBU0FGTmdJQVFZR0FnSUI0SVFVTElBQWdBellDQkNBQUlBVTJcXFxuQWdBZ0JFRWdhaVFBQzlzQkFRTi9Jd0JCSUdzaUJDUUFRUUFoQlFKQUlBSWdBMm9pQXlBQ1NRMEFJQUVvQWdRaUFrRUJkQ0lGSUFNZ0JTXFxcbkFEU3hzaUEwRUVJQU5CQkVzYklnTkJBM1FoQlNBRFFZQ0FnSUFCU1VFQ2RDRUdBa0FDUUNBQ1JRMEFJQVJCQkRZQ0ZDQUVJQUpCQTNRMlxcXG5BaGdnQkNBQktBSUFOZ0lRREFFTElBUkJBRFlDRkFzZ0JDQUdJQVVnQkVFUWFpQUJFTlFDSUFRb0FnUWhCUUpBSUFRb0FnQkZEUUFnQkVcXFxuRUlhaWdDQUNFRERBRUxJQUVnQXpZQ0JDQUJJQVUyQWdCQmdZQ0FnSGdoQlFzZ0FDQUROZ0lFSUFBZ0JUWUNBQ0FFUVNCcUpBQUwyd0VCXFxcbkEzOGpBRUVnYXlJRUpBQkJBQ0VGQWtBZ0FpQURhaUlESUFKSkRRQWdBU2dDQkNJQ1FRRjBJZ1VnQXlBRklBTkxHeUlEUVFRZ0EwRUVTeFxcXG5zaUEwRURkQ0VGSUFOQmdJQ0FnQUZKUVFKMElRWUNRQUpBSUFKRkRRQWdCRUVFTmdJVUlBUWdBa0VEZERZQ0dDQUVJQUVvQWdBMkFoQU1cXFxuQVFzZ0JFRUFOZ0lVQ3lBRUlBWWdCU0FFUVJCcUlBRVExQUlnQkNnQ0JDRUZBa0FnQkNnQ0FFVU5BQ0FFUVFocUtBSUFJUU1NQVFzZ0FTXFxcbkFETmdJRUlBRWdCVFlDQUVHQmdJQ0FlQ0VGQ3lBQUlBTTJBZ1FnQUNBRk5nSUFJQVJCSUdva0FBdmJBUUVEZnlNQVFTQnJJZ1FrQUVFQVxcXG5JUVVDUUNBQ0lBTnFJZ01nQWtrTkFDQUJLQUlFSWdKQkFYUWlCU0FESUFVZ0Ewc2JJZ05CQkNBRFFRUkxHeUlEUVFKMElRVWdBMEdBZ0lcXFxuQ0FBa2xCQW5RaEJnSkFBa0FnQWtVTkFDQUVRUVEyQWhRZ0JDQUNRUUowTmdJWUlBUWdBU2dDQURZQ0VBd0JDeUFFUVFBMkFoUUxJQVFnXFxcbkJpQUZJQVJCRUdvZ0FSRFVBaUFFS0FJRUlRVUNRQ0FFS0FJQVJRMEFJQVJCQ0dvb0FnQWhBd3dCQ3lBQklBTTJBZ1FnQVNBRk5nSUFRWVxcXG5HQWdJQjRJUVVMSUFBZ0F6WUNCQ0FBSUFVMkFnQWdCRUVnYWlRQUMrUUJBUUYvSXdCQk1Hc2lBaVFBQWtBQ1FDQUFMUUFFUlEwQUlBSWdcXFxuQUVFRmFpMEFBRG9BQnlBQ1FSUnFRUWcyQWdBZ0FpQUFOZ0lRSUFKQnJBSTJBZ3dnQVVFWWFpZ0NBQ0VBSUFJZ0FrRUhhallDQ0NBQktBXFxcbklVSVFFZ0FrSUNOd0lrSUFKQkFqWUNIQ0FDUWJDbnpnQTJBaGdnQWlBQ1FRaHFOZ0lnSUFFZ0FDQUNRUmhxRUcwaEFBd0JDeUFDUVFnMlxcXG5BZ3dnQWlBQU5nSUlJQUZCR0dvb0FnQWhBQ0FCS0FJVUlRRWdBa0lCTndJa0lBSkJBVFlDSENBQ1FmeW16Z0EyQWhnZ0FpQUNRUWhxTmdcXFxuSWdJQUVnQUNBQ1FSaHFFRzBoQUFzZ0FrRXdhaVFBSUFBTDlnRUJBbjhqQUVFUWF5SUNKQUFnQWlBQVFRUnFOZ0lFSUFFb0FoUkJxYm5PXFxcbkFFRUpJQUZCR0dvb0FnQW9BZ3dSQ1FBaEF5QUNRUUE2QUEwZ0FpQURPZ0FNSUFJZ0FUWUNDQ0FDUVFocVFiSzV6Z0JCQ3lBQVFaUzV6Z1xcXG5BUTB3RkJ2Ym5PQUVFSklBSkJCR3BCeUxuT0FCRFRBU0VESUFJdEFBd2hBQUpBQWtBZ0FpMEFEUTBBSUFCQi93RnhRUUJISVFFTUFRdEJcXFxuQVNFQklBQkIvd0Z4RFFBQ1FDQURLQUlBSWdFdEFCeEJCSEVOQUNBQktBSVVRYmVlemdCQkFpQUJRUmhxS0FJQUtBSU1FUWtBSVFFTUFRXFxcbnNnQVNnQ0ZFRzJuczRBUVFFZ0FVRVlhaWdDQUNnQ0RCRUpBQ0VCQ3lBQ1FSQnFKQUFnQVF2MkFRRUNmeU1BUVJCcklnSWtBQ0FDSUFBMlxcXG5BZ1FnQVNnQ0ZFSFlwYzhBUVFZZ0FVRVlhaWdDQUNnQ0RCRUpBQ0VESUFKQkFEb0FEU0FDSUFNNkFBd2dBaUFCTmdJSUlBSkJDR3BCM3FcXFxuWFBBRUVFSUFCQkJHcEJsTG5PQUJEVEFVSGlwYzhBUVFVZ0FrRUVha0hvcGM4QUVOTUJJUU1nQWkwQURDRUFBa0FDUUNBQ0xRQU5EUUFnXFxcbkFFSC9BWEZCQUVjaEFRd0JDMEVCSVFFZ0FFSC9BWEVOQUFKQUlBTW9BZ0FpQVMwQUhFRUVjUTBBSUFFb0FoUkJ0NTdPQUVFQ0lBRkJHR1xcXG5vb0FnQW9BZ3dSQ1FBaEFRd0JDeUFCS0FJVVFiYWV6Z0JCQVNBQlFSaHFLQUlBS0FJTUVRa0FJUUVMSUFKQkVHb2tBQ0FCQytVQkFRRi9cXFxuSXdCQkVHc2lCU1FBSUFVZ0FDZ0NGQ0FCSUFJZ0FFRVlhaWdDQUNnQ0RCRUpBRG9BQ0NBRklBQTJBZ1FnQlNBQ1JUb0FDU0FGUVFBMkFnXFxcbkFnQlNBRElBUVE5QUVoQUNBRkxRQUlJUUlDUUFKQUlBQW9BZ0FpQVEwQUlBSkIvd0Z4UVFCSElRQU1BUXRCQVNFQUlBSkIvd0Z4RFFBZ1xcXG5CU2dDQkNFQ0FrQWdBVUVCUncwQUlBVXRBQWxCL3dGeFJRMEFJQUl0QUJ4QkJIRU5BRUVCSVFBZ0FpZ0NGRUc4bnM0QVFRRWdBa0VZYWlcXFxuZ0NBQ2dDREJFSkFBMEJDeUFDS0FJVVFadVp6Z0JCQVNBQ1FSaHFLQUlBS0FJTUVRa0FJUUFMSUFWQkVHb2tBQ0FBQytBQkFRTi9Jd0JCXFxcbkVHc2lCQ1FBSUFSQkNHb2dBaUFESUFFb0FnZ2lCVUdvZzhFQUVQUUhJQUVvQWdBaEJpQUVLQUlNSVFNQ1FBSkFJQVFvQWdnaUFrVU5BQVxcXG5KQUlBSWdCVWtOQUNBQ0lBVkdEUUVNQWdzZ0JpQUNhaXdBQUVGQVNBMEJDd0pBSUFORkRRQUNRQUpBSUFNZ0JVa05BQ0FESUFWSERRRU1cXFxuQWdzZ0JpQURhaXdBQUVHL2Ywb05BUXRCK0lQQkFFRXNRYVNFd1FBUWd3Y0FDeUFBSUFNMkFoQWdBQ0FDTmdJTUlBQWdBVFlDQ0NBQUlBXFxcbllnQTJvMkFnUWdBQ0FHSUFKcU5nSUFJQVJCRUdva0FBOExRYmlEd1FCQkxrSG9nOEVBRUlNSEFBdkpBUUVGZndKQUlBQW9BZ0FnQUNnQ1xcXG5CQ0lCUncwQVFZQ0F4QUFQQ3lBQUlBRkJmMm9pQWpZQ0JBSkFJQUl0QUFBaUFzQWlBMEYvU2cwQUlBQWdBVUYrYWlJQ05nSUVBa0FDUUNcXFxuQUNMUUFBSWdMQUlnUkJRRWdOQUNBQ1FSOXhJUUFNQVFzZ0FDQUJRWDFxSWdJMkFnUUNRQUpBSUFJdEFBQWlBc0FpQlVGQVNBMEFJQUpCXFxcbkQzRWhBQXdCQ3lBQUlBRkJmR29pQVRZQ0JDQUJMUUFBUVFkeFFRWjBJQVZCUDNGeUlRQUxJQUJCQm5RZ0JFRS9jWEloQUFzZ0FFRUdkQ1xcXG5BRFFUOXhjaUVDQ3lBQ0M5RUJBUUovSXdCQklHc2lBeVFBQWtBQ1FDQUJJQUpxSWdJZ0FVa05BQ0FBUVFScUtBSUFJZ0ZCQVhRaUJDQUNcXFxuSUFRZ0Frc2JJZ0pCQ0NBQ1FRaExHeUlDUVg5elFSOTJJUVFDUUFKQUlBRkZEUUFnQXlBQk5nSVlJQU5CQVRZQ0ZDQURJQUFvQWdBMkFoXFxcbkFNQVFzZ0EwRUFOZ0lVQ3lBRElBUWdBaUFEUVJCcUVJSURJQU1vQWdRaEFRSkFJQU1vQWdBTkFDQUFJQUUyQWdBZ0FFRUVhaUFDTmdJQVxcXG5EQUlMSUFGQmdZQ0FnSGhHRFFFZ0FVVU5BQ0FCSUFOQkNHb29BZ0FRbWcwQUN4Q1hDQUFMSUFOQklHb2tBQXZSQVFFQ2Z5TUFRU0JySWdcXFxuTWtBQUpBQWtBZ0FTQUNhaUlDSUFGSkRRQWdBRUVFYWlnQ0FDSUJRUUYwSWdRZ0FpQUVJQUpMR3lJQ1FRZ2dBa0VJU3hzaUFrRi9jMEVmXFxcbmRpRUVBa0FDUUNBQlJRMEFJQU1nQVRZQ0dDQURRUUUyQWhRZ0F5QUFLQUlBTmdJUURBRUxJQU5CQURZQ0ZBc2dBeUFFSUFJZ0EwRVFhaFxcXG5EdkFpQURLQUlFSVFFQ1FDQURLQUlBRFFBZ0FDQUJOZ0lBSUFCQkJHb2dBallDQUF3Q0N5QUJRWUdBZ0lCNFJnMEJJQUZGRFFBZ0FTQURcXFxuUVFocUtBSUFFSm9OQUFzUWx3Z0FDeUFEUVNCcUpBQUw0UUVBQWtBQ1FDQUJSUTBBQWtBQ1FBSkFBa0FDUUFKQUlBSkJmMHdOQUNBREtBXFxcbklFRFFFZ0FnMENRUUVoQVF3RUN5QUFRUUEyQWdRTUJnc0NRQ0FEUVFocUtBSUFJZ0VOQUFKQUlBSU5BRUVCSVFFTUJBdEJBQzBBOGFaUFxcXG5HaUFDUVFFUTl3c2hBUXdDQ3lBREtBSUFJQUZCQVNBQ0VMQUxJUUVNQVF0QkFDMEE4YVpQR2lBQ1FRRVE5d3NoQVFzZ0FVVU5BUXNnQUNcXFxuQUJOZ0lFSUFCQkNHb2dBallDQUNBQVFRQTJBZ0FQQ3lBQVFRRTJBZ1FnQUVFSWFpQUNOZ0lBSUFCQkFUWUNBQThMSUFCQkFEWUNCQ0FBXFxcblFRaHFJQUkyQWdBTElBQkJBVFlDQUF2YkFRRUJmeU1BUWNBQWF5SUVKQUFnQkNBQk5nSU1JQVFnQURZQ0NBSkFBa0FnQTBVTkFDQUVRU1xcXG5ocVFReHFRUWsyQWdBZ0JFRVFha0VNYWtJQ053SUFJQVJCQWpZQ0ZDQUVRZUNSd0FBMkFoQWdCRUVCTmdJc0lBUWdBellDUENBRUlBSTJcXFxuQWpnZ0JDQUVRU2hxTmdJWUlBUWdCRUU0YWpZQ01DQUVJQVJCQ0dvMkFpZ2dCRUVRYWhEV0F5RUREQUVMSUFSQkhHcENBVGNDQUNBRVFRXFxcbkkyQWhRZ0JFSEVrY0FBTmdJUUlBUkJBVFlDTENBRUlBUkJLR28yQWhnZ0JDQUVRUWhxTmdJb0lBUkJFR29RMWdNaEF3c2dCRUhBQUdva1xcXG5BQ0FEQzg4QkFRTi9Jd0JCSUdzaUFpUUFBa0FDUUNBQlFRRnFJZ0ZGRFFBZ0FFRUVhaWdDQUNJRFFRRjBJZ1FnQVNBRUlBRkxHeUlCUVFcXFxuZ2dBVUVJU3hzaUFVRi9jMEVmZGlFRUFrQUNRQ0FEUlEwQUlBSWdBellDR0NBQ1FRRTJBaFFnQWlBQUtBSUFOZ0lRREFFTElBSkJBRFlDXFxcbkZBc2dBaUFFSUFFZ0FrRVFhaENDQXlBQ0tBSUVJUU1DUUNBQ0tBSUFEUUFnQUNBRE5nSUFJQUJCQkdvZ0FUWUNBQXdDQ3lBRFFZR0FnSVxcXG5CNFJnMEJJQU5GRFFBZ0F5QUNRUWhxS0FJQUVKb05BQXNRbHdnQUN5QUNRU0JxSkFBTDFBRUJCSDhnQUNnQ0FDRURRUUFoQkFKQUlBQW9cXFxuQWdnaUJVVU5BQ0FEUlEwQUlBVWdBMnBCZjJvdEFBQkJMMGNoQkFzQ1FBSkFBa0FnQWtVTkFFRUFJUVlnQVMwQUFFRXZSZzBCQ3dKQUlBXFxcblFOQUNBRklRWU1BZ3NDUUNBQUtBSUVJQVZIRFFBZ0FDQUZRUUVRN1FJZ0FDZ0NBQ0VESUFBb0FnZ2hCUXNnQXlBRmFrRXZPZ0FBSUFWQlxcXG5BV29oQmdzZ0FDQUdOZ0lJQ3dKQUlBQW9BZ1FnQm1zZ0FrOE5BQ0FBSUFZZ0FoRHRBaUFBS0FJQUlRTWdBQ2dDQ0NFR0N5QURJQVpxSUFcXFxuRWdBaENrRFJvZ0FDQUdJQUpxTmdJSUM4OEJBUU4vSXdCQklHc2lBaVFBQWtBQ1FDQUJRUUZxSWdGRkRRQWdBRUVFYWlnQ0FDSURRUUYwXFxcbklnUWdBU0FFSUFGTEd5SUJRUWdnQVVFSVN4c2lBVUYvYzBFZmRpRUVBa0FDUUNBRFJRMEFJQUlnQXpZQ0dDQUNRUUUyQWhRZ0FpQUFLQVxcXG5JQU5nSVFEQUVMSUFKQkFEWUNGQXNnQWlBRUlBRWdBa0VRYWhEdkFpQUNLQUlFSVFNQ1FDQUNLQUlBRFFBZ0FDQUROZ0lBSUFCQkJHb2dcXFxuQVRZQ0FBd0NDeUFEUVlHQWdJQjRSZzBCSUFORkRRQWdBeUFDUVFocUtBSUFFSm9OQUFzUWx3Z0FDeUFDUVNCcUpBQUw2QUVCQVg4akFFXFxcbkdBQVdzaUF5UUFJQU1nQVNBQ0VKb0pBa0FDUUNBREtBSUFRUUpHRFFBZ0FDQURRY2dBRUtRTkdnd0JDeUFESUFNdEFBUTZBRThnQTBIc1xcXG5BR3BDQVRjQ0FDQURRUUUyQW1RZ0EwSGdnc0FBTmdKZ0lBTkJCellDZkNBRElBTkIrQUJxTmdKb0lBTWdBMEhQQUdvMkFuZ2dBMEhRQUdcXFxub2dBMEhnQUdvUWp3UWdBMEhvQUdvZ0FqWUNBQ0FESUFFMkFtUWdBMEVGT2dCZ0lBTWdBeWdDV0RZQ2ZDQURJQU1vQWxBMkFuZ2dBMEhnXFxcbkFHb2dBMEg0QUdwQjZJTEFBQkRwQkNFQ0lBTkIwQUJxRU9NTUlBQkJBallDQUNBQUlBSTJBZ1FMSUFOQmdBRnFKQUFMNFFFQ0FYOEJmaVxcXG5NQVFSQnJJZzBrQUNBTklBRWdBaUFESUFzZ0RCQ3NBZ0pBQWtBZ0RTZ0NBQ0lNUVFKR0RRQWdEU2tDQkNFT0lBMG9BZ3doQ3lBQUlBazdcXFxuQVJJZ0FDQUlPd0VRSUFBZ0N6WUNEQ0FBSUE0M0FnUWdBQ0FLTmdJd0lBQWdCallDTENBQUlBVTJBaWdnQUNBRU5nSWtJQUFnQXpZQ0lDXFxcbkFBUWNRQWFpQUhRUkJxTFFBQU9nQUFJQUJCUEdvZ0IwRUlhaWtBQURjQUFDQUFJQWNwQUFBM0FEUWdBQ0FCS1FJQU53SVVJQUJCSEdvZ1xcXG5BVUVJYWlnQ0FEWUNBQXdCQ3lBQUlBMHRBQVE2QUFRZ0FSQ0tEUXNnQUNBTU5nSUFJQTFCRUdva0FBditBUUVDZnlNQVFTQnJJZ1VrQUVcXFxuRUFRUUFvQXRDblR5SUdRUUZxTmdMUXAwOENRQUpBSUFaQkFFZ05BRUVBTFFDb3EwOUIvd0Z4RFFCQkFFRUJPZ0NvcTA5QkFFRUFLQUtrXFxcbnEwOUJBV28yQXFTclR5QUZJQUkyQWhRZ0JVSEU3ODBBTmdJTUlBVkIrT0ROQURZQ0NDQUZJQVE2QUJnZ0JTQUROZ0lRUVFBb0FzQ25UeVxcXG5JR1FYOU1EUUJCQUNBR1FRRnFOZ0xBcDA4Q1FFRUFLQUxJcDA5RkRRQWdCU0FBSUFFb0FoQVJCUUFnQlNBRktRTUFOd01JUVFBb0FzaW5cXFxuVHlBRlFRaHFRUUFvQXN5blR5Z0NGQkVGQUVFQUtBTEFwMDlCZjJvaEJndEJBQ0FHTmdMQXAwOUJBRUVBT2dDb3EwOGdCQTBCQ3dBTElBXFxcbkFnQVJEUkRBQUwyZ0VDQW44QmZpTUFRZUFBYXlJRkpBQWdCU0FCSUFJZ0F4QzJBeUFGS0FJRUlRWUNRQUpBQWtBZ0JTZ0NBQTBBSUFGQlxcXG5HR29vQWdBaUFpQUdUUTBDSUFBZ0JqWUNBQ0FCS0FJUUlBWkIyQUJzYWlJQktRSklJUWNnQVNBRUtRSUFOd0pJSUFBZ0J6Y0NCQ0FCUWRcXFxuQUFhaUlCS0FJQUlRWWdBU0FFUVFocUtBSUFOZ0lBSUFCQkRHb2dCallDQUNBRFFSUnFFT01NREFFTElBVkJHR29nQTBISUFCQ2tEUm9nXFxcbkFTQUNJQVZCR0dvZ0JCQzdBeUFBUVFBMkFnUWdBQ0FHTmdJQUN5QUZRZUFBYWlRQUR3c2dCaUFDUWN5ZHdBQVFnUVVBQzgwQkFRSi9Jd1xcXG5CQklHc2lCQ1FBUVFBaEJRSkFJQUlnQTJvaUF5QUNTUTBBSUFFb0FnUWlBa0VCZENJRklBTWdCU0FEU3hzaUEwRUlJQU5CQ0VzYklnTkJcXFxuZjNOQkgzWWhCUUpBQWtBZ0FrVU5BQ0FFSUFJMkFoZ2dCRUVCTmdJVUlBUWdBU2dDQURZQ0VBd0JDeUFFUVFBMkFoUUxJQVFnQlNBRElBXFxcblJCRUdvZ0JCRE5BaUFFS0FJRUlRVUNRQ0FFS0FJQVJRMEFJQVJCQ0dvb0FnQWhBd3dCQ3lBQklBTTJBZ1FnQVNBRk5nSUFRWUdBZ0lCNFxcXG5JUVVMSUFBZ0F6WUNCQ0FBSUFVMkFnQWdCRUVnYWlRQUM4MEJBUUovSXdCQklHc2lCQ1FBUVFBaEJRSkFJQUlnQTJvaUF5QUNTUTBBSUFcXFxuRW9BZ1FpQWtFQmRDSUZJQU1nQlNBRFN4c2lBMEVJSUFOQkNFc2JJZ05CZjNOQkgzWWhCUUpBQWtBZ0FrVU5BQ0FFSUFJMkFoZ2dCRUVCXFxcbk5nSVVJQVFnQVNnQ0FEWUNFQXdCQ3lBRVFRQTJBaFFMSUFRZ0JTQURJQVJCRUdvZ0JCRFFBaUFFS0FJRUlRVUNRQ0FFS0FJQVJRMEFJQVxcXG5SQkNHb29BZ0FoQXd3QkN5QUJJQU0yQWdRZ0FTQUZOZ0lBUVlHQWdJQjRJUVVMSUFBZ0F6WUNCQ0FBSUFVMkFnQWdCRUVnYWlRQUM5UUJcXFxuQVFSL0l3QkJJR3NpQWlRQVFRQWhBd0pBQWtBZ0FTMEFKVVVOQUF3QkN3SkFJQUV0QUNRTkFDQUJRUUU2QUNRZ0FrRUlhaUFCRVBvQ0lBXFxcbklvQWd3aEJBSkFJQUlvQWdnaUJVVU5BQ0FFUlEwQUlBVWhBd3dDQ3lBQkxRQWxEUUVMSUFFb0FnUWhBeUFDUVJCcUlBRVFsZ0lDUUFKQVxcXG5JQUlvQWhBTkFDQUJRUUU2QUNVZ0FTZ0NJQ0FCS0FJY0lnRnJJUVFNQVFzZ0FTZ0NJQ0VFSUFFZ0FpZ0NGRFlDSUNBRUlBSkJHR29vQWdcXFxuQWlBV3NoQkFzZ0F5QUJhaUVEQ3lBQUlBUTJBZ1FnQUNBRE5nSUFJQUpCSUdva0FBdk5BUUVDZnlNQVFTQnJJZ1FrQUVFQUlRVUNRQ0FDXFxcbklBTnFJZ01nQWtrTkFDQUJLQUlFSWdKQkFYUWlCU0FESUFVZ0Ewc2JJZ05CQ0NBRFFRaExHeUlEUVg5elFSOTJJUVVDUUFKQUlBSkZEUVxcXG5BZ0JDQUNOZ0lZSUFSQkFUWUNGQ0FFSUFFb0FnQTJBaEFNQVFzZ0JFRUFOZ0lVQ3lBRUlBVWdBeUFFUVJCcUlBUVExQUlnQkNnQ0JDRUZcXFxuQWtBZ0JDZ0NBRVVOQUNBRVFRaHFLQUlBSVFNTUFRc2dBU0FETmdJRUlBRWdCVFlDQUVHQmdJQ0FlQ0VGQ3lBQUlBTTJBZ1FnQUNBRk5nXFxcbklBSUFSQklHb2tBQXZOQVFFQ2Z5TUFRU0JySWdRa0FFRUFJUVVDUUNBQ0lBTnFJZ01nQWtrTkFDQUJLQUlFSWdKQkFYUWlCU0FESUFVZ1xcXG5BMHNiSWdOQkNDQURRUWhMR3lJRFFYOXpRUjkySVFVQ1FBSkFJQUpGRFFBZ0JDQUNOZ0lZSUFSQkFUWUNGQ0FFSUFFb0FnQTJBaEFNQVFcXFxuc2dCRUVBTmdJVUN5QUVJQVVnQXlBRVFSQnFJQVFRMVFJZ0JDZ0NCQ0VGQWtBZ0JDZ0NBRVVOQUNBRVFRaHFLQUlBSVFNTUFRc2dBU0FEXFxcbk5nSUVJQUVnQlRZQ0FFR0JnSUNBZUNFRkN5QUFJQU0yQWdRZ0FDQUZOZ0lBSUFSQklHb2tBQXZzQVFFQmZ5TUFRU0JySWdRa0FBSkFBa1xcXG5BQ1FBSkFBa0FDUUNBQUxRQUFEZ1FCQUFVQ0FRc2dBVVVOQWdzZ0FFRUNPZ0FBSUFRZ0FEWUNDQ0FDS0FJQUlnQXRBQUFoQWlBQVFRQTZcXFxuQUFBZ0FrVU5Ba0VBUVFFUXBRZEJ0SVhBQUJDbUFpQUVRUU02QUF3Z0JFRUlhaERTREFzZ0JFRWdhaVFBRHdzZ0JFRVVha0lBTndJQUlBXFxcblJCQVRZQ0RDQUVRYmlHd0FBMkFnZ2dCRUhnZ3NBQU5nSVFJQVJCQ0dvZ0F4Q1lDQUFMUWNDR3dBQkJLMEc0aDhBQUVJTUhBQXNnQkVFVVxcXG5ha0lBTndJQUlBUkJBVFlDRENBRVFZU0d3QUEyQWdnZ0JFSGdnc0FBTmdJUUlBUkJDR29nQXhDWUNBQUwxd0VDQkg4RGZpQUNRaG1JUXZcXFxuOEFnMEtCZ29TSWtLREFnQUYrSVFrZ0FTZ0NCQ0lGSUFLbmNTRUdJQUVvQWdBaEIwRUFJUWdEUUNBSElBWnFLUUFBSWdvZ0NZVWlBa0ovXFxcbmhTQUNRdi85Ky9mdjM3Ly9mbnlEUW9DQmdvU0lrS0RBZ0grRElRc0NRQU5BQWtBZ0N5SUNRZ0JTRFFBZ0NpQUtRZ0dHZzBLQWdZS0VpSlxcXG5DZ3dJQi9nMUJGRFFJZ0JpQUlRUWhxSWdocUlBVnhJUVlNQXdzZ0FrSi9mQ0FDZ3lFTElBTWdBbnFuUVFOMklBWnFJQVZ4SWdFZ0JDZ0NcXFxuRUJFR0FFVU5BQXNMQ3lBQUlBRTJBZ1FnQUNBQ1FnQlNOZ0lBQzlvQkFRRi9Jd0JCRUdzaUN5UUFJQUFvQWhRZ0FTQUNJQUJCR0dvb0FnXFxcbkFvQWd3UkNRQWhBaUFMUVFBNkFBMGdDeUFDT2dBTUlBc2dBRFlDQ0NBTFFRaHFJQU1nQkNBRklBWVEwd0VnQnlBSUlBa2dDaERUQVNFQlxcXG5JQXN0QUF3aEFnSkFBa0FnQ3kwQURRMEFJQUpCL3dGeFFRQkhJUUFNQVF0QkFTRUFJQUpCL3dGeERRQUNRQ0FCS0FJQUlnQXRBQnhCQkhcXFxuRU5BQ0FBS0FJVVFiZWV6Z0JCQWlBQVFSaHFLQUlBS0FJTUVRa0FJUUFNQVFzZ0FDZ0NGRUcybnM0QVFRRWdBRUVZYWlnQ0FDZ0NEQkVKXFxcbkFDRUFDeUFMUVJCcUpBQWdBQXZoQVFFRGZ5TUFRUkJySWdRa0FDQUVJQUEyQWdnZ0JDQUFJQUZxSWdVMkFnd0NRQ0FFUVFocUVJVURJZ1xcXG5aQmdJREVBRVlOQUFKQUFrQWdBaTBBQTBVTkFDQUFJQUZCTFJEWUJ3MEJJQUFnQVVFdEVOa0hEUUVMQWtBZ0JoQ29CZzBBSUFRZ0JUWUNcXFxuRENBRUlBQTJBZ2dnQWkwQUFTRUdJQUl0QUFBaEFnTkFJQVJCQ0dvUWhRTWlBRUdBZ01RQVJnMERJQVloQVFKQUFrQUNRQ0FBRUtNQ0xRXFxcbkFBRGdnREFnSUJBZ0FDQXdJTElBSWhBUXNnQVVIL0FYRkZEUUVMQ3lBRFFRRTZBQVFNQWdzZ0EwRUJPZ0FEREFFTElBTkJBVG9BQVFzZ1xcXG5CRUVRYWlRQUM4UUJBZ0ovQVg0Q1FBSkFJQUZCdWZQZDhYbHNJQUZCcHJLRmlnTnNJZ2R6clNBRHJTSUpma0lnaUtjaUNDQURUdzBBSUFcXFxuSWdDRUVCZEdvdkFRQWdBV3BCdWZQZDhYbHNJQWR6clNBSmZrSWdpS2NpQXlBRlR3MEJBa0FnQkNBRFFRTjBhaWtDQUNJSnB5QUJSZzBBXFxcbklBQWdCaWdCQURZQkFDQUFRUVJxSUFaQkJHb3ZBUUE3QVFBUEN5QUFRUUU3QVFBZ0FFRUVhaUFKUWpDSVBRRUFJQUFnQ1VJZ2lEMEJBZ1xcXG44TElBZ2dBMEhNeWN3QUVJRUZBQXNnQXlBRlFkekp6QUFRZ1FVQUM5VUJBUUYvQWtBQ1FDQUJSUTBBQWtBQ1FBSkFBa0FDUUFKQUlBSkJcXFxuZjB3TkFDQURLQUlFUlEwRElBTkJDR29vQWdBaUJBMENJQUlOQVNBQklRTU1CUXNnQUVFQU5nSUVEQVlMUVFBdEFQR21UeG9NQWdzZ0F5XFxcbmdDQUNBRUlBRWdBaEN3Q3lFRERBSUxBa0FnQWcwQUlBRWhBd3dDQzBFQUxRRHhwazhhQ3lBQ0lBRVE5d3NoQXdzQ1FDQURSUTBBSUFBZ1xcXG5BellDQkNBQVFRaHFJQUkyQWdBZ0FFRUFOZ0lBRHdzZ0FDQUJOZ0lFSUFCQkNHb2dBallDQUF3QkN5QUFRUUEyQWdRZ0FFRUlhaUFDTmdcXFxuSUFDeUFBUVFFMkFnQUx1d0VCQkg4Q1FDQUFLQUlBSWdFZ0FDZ0NCRWNOQUVHQWdNUUFEd3NnQUNBQlFRRnFOZ0lBQWtBZ0FTMEFBQ0lDXFxcbndFRi9TZzBBSUFBZ0FVRUNhallDQUNBQkxRQUJRVDl4SVFNZ0FrRWZjU0VFQWtBZ0FrSGZBVXNOQUNBRVFRWjBJQU55RHdzZ0FDQUJRUVxcXG5OcU5nSUFJQU5CQm5RZ0FTMEFBa0UvY1hJaEF3SkFJQUpCOEFGUERRQWdBeUFFUVF4MGNnOExJQUFnQVVFRWFqWUNBQ0FEUVFaMElBRXRcXFxuQUFOQlAzRnlJQVJCRW5SQmdJRHdBSEZ5SVFJTElBSUx6d0VCQW44akFFR2dBV3NpQXlRQUFrQUNRQUpBSUFBZ0FSQ01CU0lFUlEwQUlBXFxcblFnQWhDQ0N3MEJDd0pBSUFBb0FtQkZEUUFnQTBISUFHb2dBaEM3QnlBRFFkZ0FhaUFCRUpRRklBTWdBRUhnQUdvZ0EwSElBR29nQTBIWVxcXG5BR29ROEFNZ0F4RHNDZ3NnQTBIWUFHb2dBVUhJQUJDa0RSb2dBMEVJYWlBQ1FRaHFLQUlBTmdJQUlBTWdBaWtDQURjREFDQURRY2dBYWlcXFxuQUFJQU5CMkFCcUlBTVE1UWNnQTBISUFHb1F6QXRCQVNFQURBRUxJQUlRNHd3Z0FVRVVhaERqREVFQUlRQUxJQU5Cb0FGcUpBQWdBQXU3XFxcbkFRRUVmd0pBSUFBb0FnQWlBU0FBS0FJRVJ3MEFRWUNBeEFBUEN5QUFJQUZCQVdvMkFnQUNRQ0FCTFFBQUlnTEFRWDlLRFFBZ0FDQUJRUVxcXG5KcU5nSUFJQUV0QUFGQlAzRWhBeUFDUVI5eElRUUNRQ0FDUWQ4QlN3MEFJQVJCQm5RZ0EzSVBDeUFBSUFGQkEybzJBZ0FnQTBFR2RDQUJcXFxuTFFBQ1FUOXhjaUVEQWtBZ0FrSHdBVThOQUNBRElBUkJESFJ5RHdzZ0FDQUJRUVJxTmdJQUlBTkJCblFnQVMwQUEwRS9jWElnQkVFU2RFXFxcbkdBZ1BBQWNYSWhBZ3NnQWd2aEFRSUJmd0YrSXdCQklHc2lBaVFBQWtBQ1FBSkFBa0FnQVNnQ0FBNERBQUVDQUFzZ0FDQUJLd01JRUlZSFxcXG5EQUlMQWtBQ1FDQUJLUU1JSWdOQ2dJQ0FnQkJVRFFCQkFTRUJJQUpCQVRvQUNDQUNJQU0zQXhBZ0FDQUNRUWhxSUFKQkdHcEJxSUhBQUJcXFxuRHBCRFlDQkF3QkN5QUFJQU0rQWdSQkFDRUJDeUFBSUFFMkFnQU1BUXNDUUFKQUlBRXBBd2dpQTBLQWdJQ0FFRlFOQUNBQ1FRSTZBQWdnXFxcbkFpQUROd01RSUFBZ0FrRUlhaUFDUVJocVFhaUJ3QUFRNlFRMkFnUkJBU0VCREFFTElBQWdBejRDQkVFQUlRRUxJQUFnQVRZQ0FBc2dBa1xcXG5FZ2FpUUFDODBCQVFGL0l3QkJJR3NpQVNRQUlBQVFnd3dnQVVFUWFpQUFFTjRJQWtBQ1FDQUJMUUFRRFFBQ1FBSkFJQUV0QUJGQlZXb09cXFxuQXdBQkFBRUxJQUFRZ3d3TElBRkJDR29nQUJDYUJnSkFJQUV0QUFnTkFBSkFJQUV0QUFsQlVHcEIvd0Z4UVFwSkRRQWdBVUVOTmdJUUlBXFxcbkFnQVVFUWFoRGZDQ0VBREFNTEEwQWdBVUVRYWlBQUVONElJQUV0QUJBTkFnSkFJQUV0QUJGQlVHcEIvd0Z4UVFwUERRQWdBQkNEREF3QlxcXG5Dd3RCQUNFQURBSUxJQUVvQWd3aEFBd0JDeUFCS0FJVUlRQUxJQUZCSUdva0FDQUFDOUlCQVFOL0l3QkJJR3NpQVNRQUlBQW9BZ0FpQWlcXFxuZ0NBQ0VESUFKQkFEWUNBQ0FES0FJb0lRSWdBMEVBTmdJb0FrQWdBa1VOQUNBQklBSVJBZ0FDUUNBQUtBSUVJZ0FvQWdBaUF5Z0NBRVVOXFxcbkFDQURFTmtMSUFBb0FnQWhBd3NnQXlBQktRTUFOd01BSUFOQkdHb2dBVUVZYWlrREFEY0RBQ0FEUVJCcUlBRkJFR29wQXdBM0F3QWdBMFxcXG5FSWFpQUJRUWhxS1FNQU53TUFJQUZCSUdva0FFRUJEd3NnQVVFTWFrSUFOd0lBSUFGQkFUWUNCQ0FCUVpTaHdBQTJBZ0FnQVVIZ2dzQUFcXFxuTmdJSUlBRkI4S0hBQUJDWUNBQUwwZ0VCQTM4akFFRWdheUlCSkFBZ0FDZ0NBQ0lDS0FJQUlRTWdBa0VBTmdJQUlBTW9BaWdoQWlBRFFRXFxcbkEyQWlnQ1FDQUNSUTBBSUFFZ0FoRUNBQUpBSUFBb0FnUWlBQ2dDQUNJREtBSUFSUTBBSUFNUTJnc2dBQ2dDQUNFREN5QURJQUVwQXdBM1xcXG5Bd0FnQTBFWWFpQUJRUmhxS1FNQU53TUFJQU5CRUdvZ0FVRVFhaWtEQURjREFDQURRUWhxSUFGQkNHb3BBd0EzQXdBZ0FVRWdhaVFBUVFcXFxuRVBDeUFCUVF4cVFnQTNBZ0FnQVVFQk5nSUVJQUZCbEtIQUFEWUNBQ0FCUWVDQ3dBQTJBZ2dnQVVId29jQUFFSmdJQUF2SEFRSUNmd0YrXFxcbkl3QkJNR3NpQXlRQUlBRW9BZ2doQkNBQktBSUFJUUVnQTBFUWFpQUNFSUFCQWtBQ1FDQURLQUlRRFFBZ0EwRUlhaUFEUVJ4cUtBSUFJZ1xcXG5JMkFnQWdBMEVnYWtFSWFpQUNOZ0lBSUFNZ0F5a0NGQ0lGTndNQUlBTWdCVGNESUNBQUlBRWdCQ0FEUVNCcUVPc0tEQUVMSUFOQkNHb2dcXFxuQTBFY2FpZ0NBQ0lCTmdJQUlBTWdBeWtDRkNJRk53TUFJQU5CRUdwQkNHb2dBVFlDQUNBRElBVTNBeEFnQTBFUWFoQ3pEU0VCSUFCQkFEXFxcbllDQUNBQUlBRTJBZ1FMSUFOQk1Hb2tBQXZGQVFJQmZ3RitJd0JCTUdzaUJpUUFJQVpCSUdvZ0FpQURFSlFOSUFaQkNHb2dCa0VnYWhDS1xcXG5DaUFHS0FJSUlBWW9BZ3dnQkNBRkVBY2hBeUFHRU1jSklBWkJHR29nQmlnQ0FDSUNJQVlvQWdRZ0F5QUNHeENmQndKQUFrQUNRQUpBSUFcXFxuWXRBQmhCQkVjTkFDQUdLQUljSVFNTUFRc2dCaWtER0NJSFF2OEJnMElFVWcwQklBZENJSWluSVFNTElBWWdBellDRkNBR1FSUnFFSVFMXFxcbklBWkJJR29RekFzZ0FFRUVPZ0FBREFFTElBQWdCemNDQUNBR1FTQnFFTXdMQ3lBR1FUQnFKQUFMMUFFQkJIOGpBRUVnYXlJREpBQUNRQ1xcXG5BQktBSUVJQUpKRFFBZ0EwRUlhaUFCRUtnSkFrQUNRQ0FES0FJTUlnUkZEUUFnQXlnQ0VDRUZJQU1vQWdnaEJnSkFBa0FnQWcwQUFrQWdcXFxuQlVVTkFDQUdJQVVnQkJDeURBc2dCQ0VGREFFTElBWWdCU0FFSUFJUXNBc2hCUXNnQlVVTkFTQUJJQUkyQWdRZ0FTQUZOZ0lBQzBHQmdJXFxcbkNBZUNFRUN5QUFJQUkyQWdRZ0FDQUVOZ0lBSUFOQklHb2tBQThMSUFOQkZHcENBRGNDQUNBRFFRRTJBZ3dnQTBHUXI4QUFOZ0lJSUFOQlxcXG43SzdBQURZQ0VDQURRUWhxUWVTdndBQVFtQWdBQzhRQkFRUi9Jd0JCRUdzaUFTUUFJQUVnQUNrQ0FEY0RDQ0FCUVFocUVNZ0pJUUJCQUNcXFxuRUNJQUZCQ0dvUXlBa2hBeUFCUVFocUVNZ0pJUVFDUUNBQVFZQ0F4QUJHRFFBZ0EwR0FnTVFBUmcwQUlBQkIzLy8vQUhGQnYzOXFJUUFDXFxcblFDQUVRWUNBeEFCSERRQWdBRUVhVHcwQklBTkIvQUJHSUFOQk9rWnlJUUlNQVFzZ0FFRVpTdzBBQWtBZ0EwSDhBRVlOQUNBRFFUcEhEUVxcXG5FTElBUkJYV29pQUVFNVN3MEFRb0dnZ0lDQmdJQ0FBaUFBcllpblFRRnhJUUlMSUFGQkVHb2tBQ0FDQzhJQkFRSi9Jd0JCMEFCcklnTWtcXFxuQUFKQUFrQWdBa1VOQUVFQklRUWdBUzBBQUVFdlJnMEJDMEVBSVFRTElBTWdCRG9BTGlBRFFRWTZBQmdnQXlBQ05nSVVJQU1nQVRZQ0VDXFxcbkFEUVlBRU93RXNJQU5CTUdvZ0EwRVFhaEE0UVFBaEFnSkFBa0FnQXkwQU1DSUJRUXBIRFFBTUFRc0NRQ0FCUVhwcVFmOEJjU0lFUVFOTlxcXG5EUUFNQVFzZ0JFRi9ha0VDU3cwQUlBTkJDR29nQTBFUWFoQTlJQU1vQWd3aEFTQURLQUlJSVFJTElBQWdBVFlDQkNBQUlBSTJBZ0FnQTBcXFxuSFFBR29rQUF1NEFRRUZmMEVBSVFSQkFDQUJLQUlFSWdVZ0FTZ0NDQ0lHYXlJSElBY2dCVXNiSVFVZ0JrRUJhaUVJSUFFb0FnQWdCbW9oXFxcbkJ3TkFBa0FDUUFKQUFrQWdCU0FFUmcwQUlBY2dCR290QUFBaUJrRlFha0gvQVhGQkNra05BeUFHUVM1R0RRRWdCa0hGQUVZTkFpQUdRZVxcXG5VQVJnMENJQVFoQlFzZ0FDQUJJQUlnQXlBRkVNY0NEd3NnQUNBQklBSWdBeUFFRU9rQkR3c2dBQ0FCSUFJZ0F5QUVFS0FCRHdzZ0FTQUlcXFxuSUFScU5nSUlJQVJCQVdvaEJBd0FDd3U0QVFFRmYwRUFJUVJCQUNBQktBSUVJZ1VnQVNnQ0NDSUdheUlISUFjZ0JVc2JJUVVnQmtFQmFpXFxcbkVJSUFFb0FnQWdCbW9oQndOQUFrQUNRQUpBQWtBZ0JTQUVSZzBBSUFjZ0JHb3RBQUFpQmtGUWFrSC9BWEZCQ2trTkF5QUdRUzVHRFFFZ1xcXG5Ca0hGQUVZTkFpQUdRZVVBUmcwQ0lBUWhCUXNnQUNBQklBSWdBeUFGRU1rQ0R3c2dBQ0FCSUFJZ0F5QUVFT29CRHdzZ0FDQUJJQUlnQXlcXFxuQUVFS01CRHdzZ0FTQUlJQVJxTmdJSUlBUkJBV29oQkF3QUN3dlZBUUlDZndOK0l3QkIwQUJySWdVa0FBSkFJQU1OQUNBQ0tBSVlJUU1nXFxcbkFpa0NDQ0VISUFJcEFoQWhDQ0FDS1FJQUlRa2dCUkREQ1NBRktBSUFJUUlnQlNnQ0JDRUdJQVZCTEdvZ0NUY0NBQ0FGUVNCcUlBZzNBd1xcXG5BZ0JVRVVhaUFITndJQUlBVkJ4QUJxSUFBcEFoQTNBZ0FnQlVFOGFpQUFLUUlJTndJQUlBVWdBVFlDS0NBRlFRQTJBaHdnQlVFQU5nSVFcXFxuSUFWQkFUWUNDQ0FGSUFNMkFnd2dCU0FBS1FJQU53STBJQUlnQlVFSWFpQUdLQUlVRVFVQUlBVkIwQUJxSkFBUEMwSFEyc0FBUWRVQVFhXFxcbmpid0FBUWd3Y0FDN29CQVFSL1FRQWhCQUpBSUFKQkFra05BQUpBSUFFdEFBZ2lCU0FCTFFBQVNRMEFJQUZCRUdvaEJrRUNJUUVEUUNBQ1xcXG5JQUZHRFFJZ0JVSC9BWEVoQndKQUlBWXRBQUFpQlNBSFR3MEFJQUVoQWd3REN5QUdRUWhxSVFZZ0FVRUJhaUVCREFBTEN5QUJRUkJxSVFcXFxuWkJBaUVCUVFFaEJBTkFJQUlnQVVZTkFTQUZRZjhCY1NFSEFrQWdCaTBBQUNJRklBZEpEUUFnQVNFQ0RBSUxJQVpCQ0dvaEJpQUJRUUZxXFxcbklRRU1BQXNMSUFBZ0JEb0FCQ0FBSUFJMkFnQUx6d0VCQVg4akFFRVFheUlISkFBZ0FDZ0NGQ0FCSUFJZ0FFRVlhaWdDQUNnQ0RCRUpBQ1xcXG5FQ0lBZEJBRG9BRFNBSElBSTZBQXdnQnlBQU5nSUlJQWRCQ0dvZ0F5QUVJQVVnQmhEVEFTRUJJQWN0QUF3aEFnSkFBa0FnQnkwQURRMEFcXFxuSUFKQi93RnhRUUJISVFBTUFRdEJBU0VBSUFKQi93RnhEUUFDUUNBQktBSUFJZ0F0QUJ4QkJIRU5BQ0FBS0FJVVFiZWV6Z0JCQWlBQVFSXFxcbmhxS0FJQUtBSU1FUWtBSVFBTUFRc2dBQ2dDRkVHMm5zNEFRUUVnQUVFWWFpZ0NBQ2dDREJFSkFDRUFDeUFIUVJCcUpBQWdBQXUxQVFFRFxcXG5md0pBQWtBZ0FrRVBTdzBBSUFBaEF3d0JDeUFBUVFBZ0FHdEJBM0VpQkdvaEJRSkFJQVJGRFFBZ0FDRURBMEFnQXlBQk9nQUFJQU5CQVdcXFxub2lBeUFGU1EwQUN3c2dCU0FDSUFScklnUkJmSEVpQW1vaEF3SkFJQUpCQVVnTkFDQUJRZjhCY1VHQmdvUUliQ0VDQTBBZ0JTQUNOZ0lBXFxcbklBVkJCR29pQlNBRFNRMEFDd3NnQkVFRGNTRUNDd0pBSUFKRkRRQWdBeUFDYWlFRkEwQWdBeUFCT2dBQUlBTkJBV29pQXlBRlNRMEFDd1xcXG5zZ0FBdTdBUUVEZnlNQVFTQnJJZ0lrQUNBQlFTQnFLQUlBSVFNZ0FrRVFhaUFBUVFFZ0FVRW9haWdDQUNJQkVKc0RJQUlvQWhBaEFBSkFcXFxuSUFJdEFCUWlCRUVEUmcwQUlBSWdCRG9BRENBQ0lBQTJBZ2dnQVVFSGRDRUJBa0FEUUNBRFJRMEJJQUZGRFFFZ0FpQUROZ0ljSUFJZ0EwXFxcbkhJQUdvMkFoQWdBVUdBZjJvaEFTQURRWUFCYWlFRElBSkJDR29nQWtFY2FpQUNRUkJxRUs4RklnQkZEUUFNQWdzTElBSW9BZ2dnQWkwQVxcXG5EQkRuQmlFQUN5QUNRU0JxSkFBZ0FBdTRBUUVEZnlNQVFTQnJJZ0lrQUNBQlFTQnFLQUlBSVFNZ0FrRVFhaUFBUVFFZ0FVRW9haWdDQUNcXFxuSUJFSnNESUFJb0FoQWhBQUpBSUFJdEFCUWlCRUVEUmcwQUlBSWdCRG9BRENBQ0lBQTJBZ2dnQVVFY2JDRUJBa0FEUUNBRFJRMEJJQUZGXFxcbkRRRWdBaUFETmdJY0lBSWdBMEVNYWpZQ0VDQUJRV1JxSVFFZ0EwRWNhaUVESUFKQkNHb2dBa0VjYWlBQ1FSQnFFTmtFSWdCRkRRQU1BZ1xcXG5zTElBSW9BZ2dnQWkwQURCRG5CaUVBQ3lBQ1FTQnFKQUFnQUF1OEFRRURmeU1BUVNCcklnSWtBQ0FCUVNCcUtBSUFJUU1nQWtFUWFpQUFcXFxuUVFFZ0FVRW9haWdDQUNJQkVKc0RJQUlvQWhBaEFBSkFJQUl0QUJRaUJFRURSZzBBSUFJZ0JEb0FEQ0FDSUFBMkFnZ2dBVUhZQUd3aEFRXFxcbkpBQTBBZ0EwVU5BU0FCUlEwQklBSWdBellDSENBQ0lBTkJ5QUJxTmdJUUlBRkJxSDlxSVFFZ0EwSFlBR29oQXlBQ1FRaHFJQUpCSEdvZ1xcXG5Ba0VRYWhEYkNpSUFSUTBBREFJTEN5QUNLQUlJSUFJdEFBd1E1d1loQUFzZ0FrRWdhaVFBSUFBTHh3RUJBWDhqQUVFd2F5SURKQUFnQXlcXFxuQUNOZ0lFSUFNZ0FUWUNBQUpBQWtBZ0FDMEFBRUVIUncwQUlBTkJGR3BDQVRjQ0FDQURRUUUyQWd3Z0EwR2MwY0FBTmdJSUlBTkJCVFlDXFxcbkpDQURJQU5CSUdvMkFoQWdBeUFETmdJZ0lBTkJDR29RMWdNaEFBd0JDeUFEUVNCcVFReHFRUVUyQWdBZ0EwRUlha0VNYWtJQ053SUFJQVxcXG5OQkFqWUNEQ0FEUWV6UXdBQTJBZ2dnQTBFR05nSWtJQU1nQURZQ0lDQURJQU5CSUdvMkFoQWdBeUFETmdJb0lBTkJDR29RMWdNaEFBc2dcXFxuQTBFd2FpUUFJQUFMeXdFQ0FuOEJmaU1BUVRCcklnUWtBQ0FFSUFNMkFnd2dCQ0FDTmdJSUEwQWdCRUVRYWlBRVFRaHFFTWNEQWtBQ1FBXFxcbkpBSUFRb0FoQWlCVUVqUmcwQUFrQWdCVUUvUmcwQUlBVkJnSURFQUVjTkF5QUVLQUlNSVFNZ0JDZ0NDQ0VDREFJTElBRXRBQ0JGRFFFTVxcXG5BZ3NnQVMwQUlBMEJDeUFBSUFNMkFnUWdBQ0FDTmdJQUlBUkJNR29rQUE4TElBUXBBaFFoQmlBQklBVWdCRUVJYWhEWUFTQUVRWXlId1FcXFxuQTJBaWdnQkNBR053TWdJQUVnQkVFZ2FoRG1CU0FFS0FJTUlRTWdCQ2dDQ0NFQ0RBQUxDN2dCQVFOL0FrQUNRQUpBSUFGQkJFa05BQ0FBXFxcblFRTnFRWHh4SWdJZ0FHc2lBeUFCVFEwQkN5QUFRWDlxSVFBRFFDQUJSU0VFSUFGRkRRSWdBQ0FCYWlFQ0lBRkJmMm9oQVNBQ0xBQUFRUVxcXG5CT0RRQU1BZ3NMUVFBaEJDQUFLQUFBUVlDQmdvUjRjUTBBUVFRZ0F5QUNJQUJHR3lFQ0lBRkJmR29oQVFOQUFrQWdBaUFCU1EwQUlBQWdcXFxuQVdvb0FBQkJnSUdDaEhoeFJTRUVEQUlMSUFBZ0Ftb29BZ0JCZ0lHQ2hIaHhEUUVnQWtFRWFpRUNEQUFMQ3lBRUM4UUJBUUovSXdCQkVHXFxcbnNpQkNRQUlBRkJFR3BCQURvQUFDQUJRUXhxSWdVZ0JTZ0NBRUVCYWpZQ0FDQUJLQUlBUWQ2WndBQkJBUkNJRENBRVFRUTZBQWdDUUFKQVxcXG5Ba0FnQkVFSWFoQzlCeUlGRFFBQ1FDQUNSUTBBSUFORkRRSUxJQUJCQVRvQUJDQUFJQUUyQWdBTUFnc2dBRUVET2dBRUlBQWdCVFlDQUFcXFxud0JDeUFFUVFocUlBRkJCR29nQVJDTEJRSkFJQVJCQ0dvUXZRY2lCUTBBSUFCQkFEb0FCQ0FBSUFFMkFnQU1BUXNnQUVFRE9nQUVJQUFnXFxcbkJUWUNBQXNnQkVFUWFpUUFDOEVCQVFOL0l3QkJJR3NpQlNRQUlBVkJFR29nQVNBQ0lBTVErZ01DUUFKQUlBVW9BaEFpQWcwQUlBVWdCQlxcXG5DNkJpQUFJQVVwQXdBM0FnUWdBRUVBTmdJQURBRUxRUUF0QVBHbVR4b2dCU2dDR0NFQkFrQWdCU2dDRkNJR0lBSVE5d3NpQjBVTkFDQUFcXFxuUVFBMkFnd2dBQ0FEUVg5cUlnSTJBZ1FnQUNBSElBRnFOZ0lBSUFBZ0FpQURRUU4yUVFkc0lBSkJDRWtiTmdJSURBRUxJQVZCQ0dvZ0JDXFxcbkFDSUFZUWxnb2dBQ0FGS1FNSU53SUVJQUJCQURZQ0FBc2dCVUVnYWlRQUM4VUJBUU4vSXdCQk1Hc2lBeVFBSUFOQkVHb2dBU0FDRUowSFxcXG5JQU1nQXlnQ0ZDSUNOZ0ljSUFNZ0F5Z0NFQ0lCTmdJWUlBTkJJR29nQVNBQ0VOb0JJQU1vQWlnaEJDQURLQUlrSVFJZ0F5Z0NJQ0VCSUFcXFxuTkJHR29RNlFzQ1FBSkFJQUVOQUVFQklRRU1BUXNnQXlBRU5nSW9JQU1nQWpZQ0pDQURJQUUyQWlBZ0EwRUlhaUFEUVNCcUVQTUtJQU1vXFxcbkFnd2hCQ0FES0FJSUlRVkJBQ0VDUVFBaEFRc2dBQ0FCTmdJTUlBQWdBallDQ0NBQUlBUTJBZ1FnQUNBRk5nSUFJQU5CTUdva0FBdkRBUVxcXG5FQ2Z5TUFRVEJySWdja0FDQUhRUmhxSUFFUTV3Y2dCeWdDSENFQklBY29BaGdoQ0NBSFFSQnFJQUlnQXhDZEJ5QUhJQWNvQWhRaUF6WUNcXFxuSkNBSElBY29BaEFpQWpZQ0lDQUhRUWhxSUFVZ0JoQ2RCeUFISUFjb0Fnd2lCallDTENBSElBY29BZ2dpQlRZQ0tDQUhJQWdnQWlBRElBXFxcblFnQlNBR0VOUUJJQWNvQWdRaEFpQUhLQUlBSVFNZ0IwRW9haERwQ3lBSFFTQnFFT2tMSUFFZ0FTZ0NBRUYvYWpZQ0FDQUFJQU0yQWdRZ1xcXG5BQ0FDUVFBZ0F4czJBZ0FnQjBFd2FpUUFDOE1CQVFKL0l3QkJNR3NpQnlRQUlBZEJHR29nQVJEb0J5QUhLQUljSVFFZ0J5Z0NHQ0VJSUFcXFxuZEJFR29nQWlBREVKMEhJQWNnQnlnQ0ZDSUROZ0lrSUFjZ0J5Z0NFQ0lDTmdJZ0lBZEJDR29nQlNBR0VKMEhJQWNnQnlnQ0RDSUdOZ0lzXFxcbklBY2dCeWdDQ0NJRk5nSW9JQWNnQ0NBQ0lBTWdCQ0FGSUFZUTFRRWdCeWdDQkNFQ0lBY29BZ0FoQXlBSFFTaHFFT2tMSUFkQklHb1E2UVxcXG5zZ0FTQUJLQUlBUVg5cU5nSUFJQUFnQXpZQ0JDQUFJQUpCQUNBREd6WUNBQ0FIUVRCcUpBQUx4UUVCQTM4akFFRVFheUlCSkFBQ1FBSkFcXFxuQWtBRFFBSkFBa0FDUUNBQUtBSUlJZ0lnQUNnQ0JDSURUdzBBQWtBZ0FDZ0NBQ0FDYWkwQUFDSURRY3pWd0FCcUxRQUFEUUFnQUNBQ1FRXFxcbkZxTmdJSURBUUxJQU5CM0FCR0RRSWdBMEVpUmcwQklBRkJFRFlDQUF3RkN5QUNJQU5HRFFNZ0FpQURRYXpWd0FBUWdRVUFDeUFBSUFKQlxcXG5BV28yQWdoQkFDRUNEQVFMSUFBZ0FrRUJhallDQ0NBQUVLd0VJZ0pGRFFBTUF3c0xJQUZCQkRZQ0FBc2dBQ0FCRU9BSUlRSUxJQUZCRUdcXFxub2tBQ0FDQzhJQkFRSi9Jd0JCSUdzaUFpUUFBa0FDUUFKQUlBRkZEUUFnQVNnQ0FDRURJQUZCQURZQ0FDQUREUUVMSUFKQkNHb1FxQUVNXFxcbkFRc2dBa0VZYWlBQlFSUnFLQUlBTmdJQUlBSkJFR29nQVVFTWFpa0NBRGNEQUNBQ0lBRXBBZ1EzQXdnTElBQWdBaWtEQ0RjQ0JDQUFLQVxcXG5JQUlRRWdBRUVCTmdJQUlBQkJER29nQWtFUWFpa0RBRGNDQUNBQVFSUnFJQUpCR0dvb0FnQTJBZ0FnQUVFRWFpRUFBa0FnQVVVTkFFRUFcXFxuUVFBb0F2eW1UMEYvYWpZQy9LWlBDeUFDUVNCcUpBQWdBQXZJQVFFRGZ5TUFRU0JySWdFa0FDQUFLQUlBSWdJb0FnQWhBeUFDSUFBb0FnXFxcblEyQWdBZ0FTQURRUU54SWdBMkFnUUNRQUpBQWtBZ0FFRUJSdzBBSUFOQmYyb2hBQU5BSUFCRkRRSWdBQ2dDQkNFQ0lBQW9BZ0FoQXlBQVxcXG5RUUEyQWdBZ0EwVU5BeUFBUVFFNkFBZ2dBU0FETmdJSUlBTkJDR29RaGc0UXR3NGdBVUVJYWhEd0NTQUNJUUFNQUFzTElBRkJBRFlDQ0VcXFxuRUFJQUZCQkdwQm5PVEFBQ0FCUVFocVFmamt3QUFRdUFVQUN5QUJRU0JxSkFBUEMwSGc0OEFBUVN0QmlPWEFBQkNEQndBTHRRRUJCMzhqXFxcbkFFRVFheUlCSkFBZ0FDZ0NDRUVCYWlFQ0lBQW9BZ0FoQXlBQUtBSUVJUVJCQVNFRkFrQUNRQUpBQWtBRFFDQUZJUVlnQUNBQ05nSUlJQVxcXG5JZ0JFOE5BU0FESUFKcUlRZEJBQ0VGSUFKQkFXb2hBaUFITFFBQUlnZEJVR3BCL3dGeFFRcEpEUUFMSUFaQkFYRU5BU0FIUVNCeVFlVUFcXFxuUmcwQ1FRQWhBZ3dEQzBFQUlRSWdCa0VCY1VVTkFnc2dBVUVOTmdJQUlBQWdBUkRPQ0NFQ0RBRUxJQUFRd3dJaEFnc2dBVUVRYWlRQUlBXFxcbklMd3dFQkEzOGpBRUVnYXlJRUpBQkJBQ0VGQWtBZ0FpQURhaUlESUFKSkRRQWdBMEhZQUd3aEFpQURRWmk2MFF0SlFRSjBJUVVDUUFKQVxcXG5JQUVvQWdRaUJrVU5BQ0FFUVFRMkFoUWdCQ0FHUWRnQWJEWUNHQ0FFSUFFb0FnQTJBaEFNQVFzZ0JFRUFOZ0lVQ3lBRUlBVWdBaUFFUVJcXFxuQnFJQUVRMUFJZ0JDZ0NCQ0VGQWtBZ0JDZ0NBRVVOQUNBRVFRaHFLQUlBSVFNTUFRc2dBU0FETmdJRUlBRWdCVFlDQUVHQmdJQ0FlQ0VGXFxcbkN5QUFJQU0yQWdRZ0FDQUZOZ0lBSUFSQklHb2tBQXZCQVFFRGZ5TUFRU0JySWdRa0FFRUFJUVVDUUNBQ0lBTnFJZ01nQWtrTkFDQURRUVxcXG5kMElRSWdBMEdBZ0lBSVNVRURkQ0VGQWtBQ1FDQUJLQUlFSWdaRkRRQWdCRUVJTmdJVUlBUWdCa0VIZERZQ0dDQUVJQUVvQWdBMkFoQU1cXFxuQVFzZ0JFRUFOZ0lVQ3lBRUlBVWdBaUFFUVJCcUlBRVExQUlnQkNnQ0JDRUZBa0FnQkNnQ0FFVU5BQ0FFUVFocUtBSUFJUU1NQVFzZ0FTXFxcbkFETmdJRUlBRWdCVFlDQUVHQmdJQ0FlQ0VGQ3lBQUlBTTJBZ1FnQUNBRk5nSUFJQVJCSUdva0FBdkJBUUVEZnlNQVFTQnJJZ1FrQUVFQVxcXG5JUVVDUUNBQ0lBTnFJZ01nQWtrTkFDQURRUnhzSVFJZ0EwR2xrc2trU1VFQ2RDRUZBa0FDUUNBQktBSUVJZ1pGRFFBZ0JFRUVOZ0lVSUFcXFxuUWdCa0VjYkRZQ0dDQUVJQUVvQWdBMkFoQU1BUXNnQkVFQU5nSVVDeUFFSUFVZ0FpQUVRUkJxSUFFUTFBSWdCQ2dDQkNFRkFrQWdCQ2dDXFxcbkFFVU5BQ0FFUVFocUtBSUFJUU1NQVFzZ0FTQUROZ0lFSUFFZ0JUWUNBRUdCZ0lDQWVDRUZDeUFBSUFNMkFnUWdBQ0FGTmdJQUlBUkJJR1xcXG5va0FBdTVBUUVDZnlNQVFiQUJheUlFSkFBZ0FTZ0NFQ0VGSUFRZ0FVRVlhaWdDQURZQ1FDQUVJQVUyQWp3Z0JDQUROZ0k0SUFRZ0FTQUNcXFxuclNBRVFUaHFFS29HQWtBQ1FDQUVLQUlBRFFBZ0FFRUNOZ0lBREFFTElBUkJPR29nQVNBRUtBSUVJZ01RMWdFZ0FDQUVRVGhxUWNnQUVLXFxcblFOSVFFZ0JFRUlhaUFFUVRocVFjZ0Fha0V3RUtRTkdpQUVRVHhxSUFSQkNHcEJNQkNrRFJvZ0FTQUROZ0pJSUFGQnpBQnFJQVJCT0dwQlxcXG5OQkNrRFJvTElBUkJzQUZxSkFBTDBnRUJCbjhqQUVFZ2F5SURKQUFDUUFKQUFrQWdBU2dDQkNJRUlBSkpEUUJCZ1lDQWdIZ2hCU0FFRFFcXFxuRU1BZ3NnQTBFVWFrSUFOd0lBSUFOQkFUWUNEQ0FEUWV6ZndBQTJBZ2dnQTBISTM4QUFOZ0lRSUFOQkNHcEJ3T0RBQUJDWUNBQUxJQVJCXFxcbkJuUWhCaUFCS0FJQUlRY0NRQUpBSUFJTkFFSEFBQ0VJSUFkQndBQWdCaEMxQ3d3QkMwSEFBQ0VGSUFjZ0JrSEFBQ0FDUVFaMElnUVFzQVxcXG5zaUNFVU5BUXNnQVNBQ05nSUVJQUVnQ0RZQ0FFR0JnSUNBZUNFRkN5QUFJQVEyQWdRZ0FDQUZOZ0lBSUFOQklHb2tBQXZFQVFFQmZ5TUFcXFxuUVRCcklnTWtBQ0FESUFJMkFnd2dBeUFCTmdJSUlBTkJFR29nQUJET0F5QURRUUE2QUNBZ0F5QUFRUnhxS0FJQU5nSWtJQU5CSUdwQjJKXFxcbkRCQUJEOUJpRUNJQU1nQUJDMkJ6b0FIaUFESUFBUTlRY2dBeUFES0FJQUlBTW9BZ1FRNUFWQi93RnhPZ0FmSUFCQkZHb2dBQ2dDTUJDZ1xcXG5CaUFESUFOQkgybzJBaWdnQXlBRFFRaHFOZ0lrSUFNZ0EwRWVhallDSUNBQUlBTkJJR29RMndFZ0FDQUNJQU1vQWhBZ0F5Z0NHQkRQQkNcXFxuQURRUkJxRUlvTklBTkJNR29rQUF2TkFRSUNmd0YrSXdCQklHc2lCQ1FBUVlDVTY5d0RJUVVDUUFKQUlBRXBBd0FpQmlBQ2ZDSUNJQVphXFxcbkRRQU1BUXNDUUNBQlFRaHFLQUlBSUFOcUlnRkIvNVByM0FOTkRRQWdBa0lCZkNJQ1VBMEJJQUZCZ095VW8zeHFJUUVMQWtBZ0FpQUJRWVxcXG5DVTY5d0RiaUlGclh3aUJpQUNXZzBBSUFSQkZHcENBRGNDQUNBRVFRRTJBZ3dnQkVHVTRjMEFOZ0lJSUFSQitPRE5BRFlDRUNBRVFRaHFcXFxuUWVUaHpRQVFtQWdBQ3lBQklBVkJnSlRyM0FOc2F5RUZDeUFBSUFVMkFnZ2dBQ0FHTndNQUlBUkJJR29rQUF1NUFRRUNmeU1BUWRBQWF5XFxcbklGSkFBZ0JTQUJJQUlnQXhDM0F5QUZLQUlFSVFZQ1FBSkFBa0FnQlNnQ0FBMEFJQUZCR0dvb0FnQWlBaUFHVFEwQ0lBQkJDR29nQVNnQ1xcXG5FQ0FHUVFkMGFrSElBR29pQVVFd0VLUU5HaUFCSUFSQk1CQ2tEUm9nQUNBR05nSUFJQU5CRkdvUTR3d01BUXNnQlVFSWFpQURRY2dBRUtcXFxuUU5HaUFCSUFJZ0JVRUlhaUFFRU1FRElBQkJHR3BCQURZQ0FDQUFJQVkyQWdBTElBVkIwQUJxSkFBUEN5QUdJQUpCekozQUFCQ0JCUUFMXFxcbnV3RUJBMzhqQUVFZ2F5SUZKQUFnQlVFUWFpQUJJQUlnQXhDWEJBSkFBa0FnQlNnQ0VDSUNEUUFnQlNBRUVMc0dJQUFnQlNrREFEY0NCQ1xcXG5BQVFRQTJBZ0FNQVFzZ0JTZ0NHQ0VCQWtBZ0JTQUNJQVVvQWhRaUJoRFBDaUlIUlEwQUlBQkJBRFlDRENBQUlBTkJmMm9pQWpZQ0JDQUFcXFxuSUFjZ0FXbzJBZ0FnQUNBQ0lBTkJBM1pCQjJ3Z0FrRUlTUnMyQWdnTUFRc2dCVUVJYWlBRUlBSWdCaEN2Q2lBQUlBVXBBd2czQWdRZ0FFXFxcbkVBTmdJQUN5QUZRU0JxSkFBTHZRRUJCWDhqQUVFUWF5SUNKQUFDUUFKQUlBRXRBQ1ZGRFFCQkFDRUREQUVMSUFFb0FnUWhCQ0FDSUFFUVxcXG40QUVDUUNBQ0tBSUFEUUJCQUNFREFrQWdBUzBBSlVVTkFBd0NDeUFCUVFFNkFDVWdBU2dDSENFRUlBRW9BaUFoQlFKQUlBRXRBQ1FOQUNcXFxuQUZJQVJHRFFJTElBVWdCR3NoQmlBQktBSUVJQVJxSVFNTUFRc2dBU2dDSENFRElBRWdBa0VJYWlnQ0FEWUNIQ0FDS0FJRUlBTnJJUVlnXFxcbkJDQURhaUVEQ3lBQUlBWTJBZ1FnQUNBRE5nSUFJQUpCRUdva0FBdXlBUUVFZjBFQUlRUUNRQ0FDUVFKSkRRQUNRQ0FCS0FJSUlnVWdBU1xcXG5nQ0FFa05BQ0FCUVJCcUlRWkJBaUVCQTBBZ0FpQUJSZzBDQWtBZ0JpZ0NBQ0lISUFWUERRQWdBU0VDREFNTElBWkJDR29oQmlBQlFRRnFcXFxuSVFFZ0J5RUZEQUFMQ3lBQlFSQnFJUVpCQWlFQlFRRWhCQU5BSUFJZ0FVWU5BUUpBSUFZb0FnQWlCeUFGU1EwQUlBRWhBZ3dDQ3lBR1FRXFxcbmhxSVFZZ0FVRUJhaUVCSUFjaEJRd0FDd3NnQUNBRU9nQUVJQUFnQWpZQ0FBdlNBUUVCZnlNQVFTQnJJZ0lrQUNBQ1FRaHFJQUVRdGdRQ1xcXG5RQUpBQWtBQ1FDQUNMUUFJRFFBZ0FpMEFDVVVOQWlBQ0xRQUtRZjhCY1VIdUFFY05BaUFCSUFFb0FnaEJBV28yQWdnZ0FVR0hnTUFBUVFcXFxuTVF3d01pQVEwQklBQkJnSlRyM0FNMkFnZ01Bd3NnQWlnQ0RDRUJDeUFBUVlHVTY5d0ROZ0lJSUFBZ0FUWUNBQXdCQ3lBQ1FSQnFJQUVRXFxcbjZ3TUNRQ0FDS0FJWUlnRkJnSlRyM0FOR0RRQWdBQ0FCTmdJSUlBQWdBaWtERURjREFBd0JDeUFBUVlHVTY5d0ROZ0lJSUFBZ0FpZ0NFRFxcXG5ZQ0FBc2dBa0VnYWlRQUM4VUJBZ0ovQVg0akFFRWdheUlDSkFBZ0FpQUFRZ0JCQUJDOEFnSkFBa0FnQWlrREFFSUFVZzBBSUFKQkVHb29cXFxuQWdBaEF5QUNLUU1JSVFRZ0FpQUJRUUZCQWhDYkF5QUNLQUlBSVFBZ0FpMEFCQ0lCUVFOR0RRRWdBaUFCT2dBY0lBSWdBRFlDR0NBQ0lBXFxcblEzQXdBZ0FrRVlha0d1ZzhBQVFSQWdBaENIQkNJQURRRWdBaUFETmdJQUlBSkJHR3BCbllQQUFFRVJJQUlRaUFRaUFBMEJJQUlvQWhnZ1xcXG5BaTBBSEJEbkJpRUFEQUVMUVptVHdBQkJLQkNwQnlFQUN5QUNRU0JxSkFBZ0FBdkdBUUlFZndGK0l3QkJJR3NpQWlRQUlBSkJDR29nQVVcXFxuRUlhaERVQjBFQUlRTWdBaWdDRENFRVFRQWhCUUpBQWtBQ1FBSkFBa0FDUUNBQ0tBSUlEZ01CQUFJQkN5QUFJQVFRN3cwMkFnUU1Bd3NnXFxcbkFpQUVFTDRHSUFJb0FnQWhCU0FDS0FJRUlRUWdBUkNHQ3lBQklBUTJBZ1FnQVVFQk5nSUFJQUpCRUdvZ0JSQ1JCQ0FDS0FJUUlnVkZEUVxcXG5FZ0Fpa0NGQ0VHQ3lBQUlBVTJBZ1FnQUVFSWFpQUdOd0lBREFJTElBQWdBaWdDRkRZQ0JBdEJBU0VEQ3lBQUlBTTJBZ0FnQWtFZ2FpUUFcXFxuQzdNQkFRWi9Jd0JCRUdzaUFpUUFRUWdoQXdKQUFrQWdBQ2dDUkNJRVFRaExEUUFnQUVIRUFHb2hCU0FBUVFScUlRWWdCQ0VIREFFTElBXFxcbkJCQkdvaEJTQUFLQUlFSVFjZ0FDZ0NDQ0VHSUFRaEF3c0NRQ0FISUFOSERRQWdBa0VJYWlBQVFRRVE0d01nQWlnQ0NDQUNLQUlNRUxRSlxcXG5JQUJCQkdvaEJTQUFLQUlFSVFjZ0FDZ0NDQ0VHQ3lBR0lBZEJBM1JxSWdCQkFEb0FCQ0FBSUFFMkFnQWdCU0FGS0FJQVFRRnFOZ0lBSUFcXFxuSkJFR29rQUF1NkFRRUZmeU1BUWRBQWF5SUNKQUFnQWtFUWFpQUJFSzBEQWtBQ1FDQUNLQUlRSWdNTkFDQUFRUUEyQWdnZ0FFSUVOd0lBXFxcbkRBRUxJQUlvQWhRaEJDQUNRUWhxUVFSQkFCRDRCU0FDS0FJTUlRVWdBaWdDQ0NJR0lBUTJBZ1FnQmlBRE5nSUFJQUpCR0dwQkNHb2lBMFxcXG5FQk5nSUFJQUlnQlRZQ0hDQUNJQVkyQWhnZ0FrRW9haUFCUVNnUXBBMGFJQUpCR0dvZ0FrRW9haER3QkNBQVFRaHFJQU1vQWdBMkFnQWdcXFxuQUNBQ0tRTVlOd0lBQ3lBQ1FkQUFhaVFBQzdNQkFRWi9Jd0JCTUdzaUJDUUFJQVJCQ0dvZ0F5QUJJQUlRMHdVZ0JDZ0NEQ0lGSUFRb0FoXFxcbmhxSVFZZ0JDZ0NDQ0VISUFRb0FoUWhBd0pBQWtBRFFDQUVJQVkyQWl3Z0JDQUZJQU5xSWdnMkFpZ2dCQ0FFUVNocUVJOENJQVFvQWdCRlxcXG5EUUVnQkNnQ0JDSUpRWUNBeEFCR0RRRWdDU0FIUncwQ0lBTWdCbW9nQ0NBRUtBSXNhbXNnQkNnQ0tHb2hBd3dBQ3dzZ0FpRURDeUFBSUFcXFxuSWdBMnMyQWdRZ0FDQUJJQU5xTmdJQUlBUkJNR29rQUF2QUFRRUJmeU1BUVNCcklnVWtBQUpBQWtBZ0FTQURWQTBBSUFFZ0EzMGhBd0pBXFxcbklBSWdCRThOQUNBRFVBMEJJQUpCZ0pUcjNBTnFJUUlnQTBKL2ZDRURDeUFESUFJZ0JHc2lBa0dBbE92Y0EyNGlCSzE4SWdFZ0ExUU5BU1xcXG5BQUlBRTNBd0FnQUNBQ0lBUkJnSlRyM0FOc2F6WUNDQ0FGUVNCcUpBQVBDMEdZcTg0QVFTTkJ2S3ZPQUJDS0JnQUxJQVZCRkdwQ0FEY0NcXFxuQUNBRlFRRTJBZ3dnQlVIb3FzNEFOZ0lJSUFWQi9QL05BRFlDRUNBRlFRaHFRWWlyemdBUW1BZ0FDN3NCQWdOL0FYNGpBRUVnYXlJRUpBXFxcbkFnQVNnQ0VDRUZJQVFnQVVFWWFpZ0NBQ0lHTmdJUUlBUWdCVFlDRENBRUlBTTJBZ2hCQVNFRElBRkJBU0FGSUFZUXBBZ2dCQ0FCTmdJY1xcXG5JQVFnQkVFSWFqWUNHQ0FFSUFFZ0FxMGlCeUFFUVJocVFaaWd3QUFRL2dFZ0JDZ0NCQ0VGQWtBQ1FDQUVLQUlBRFFBZ0FTZ0NBQ0FGUVFcXFxuSjBhMEY4YWlnQ0FDRUNRUUFoQXd3QkN5QUJJQWNnQlNBQktBSU1JZ0lRNlFZTElBQWdBallDQkNBQUlBTTJBZ0FnQkVFZ2FpUUFDN3NCXFxcbkFnTi9BWDRqQUVFZ2F5SUVKQUFnQVNnQ0VDRUZJQVFnQVVFWWFpZ0NBQ0lHTmdJUUlBUWdCVFlDRENBRUlBTTJBZ2hCQVNFRElBRkJBU1xcXG5BRklBWVFvd2dnQkNBQk5nSWNJQVFnQkVFSWFqWUNHQ0FFSUFFZ0FxMGlCeUFFUVJocVFheWd3QUFRL2dFZ0JDZ0NCQ0VGQWtBQ1FDQUVcXFxuS0FJQURRQWdBU2dDQUNBRlFRSjBhMEY4YWlnQ0FDRUNRUUFoQXd3QkN5QUJJQWNnQlNBQktBSU1JZ0lRNlFZTElBQWdBallDQkNBQUlBXFxcbk0yQWdBZ0JFRWdhaVFBQzdzQkFnTi9BWDRqQUVFZ2F5SUVKQUFnQVNnQ0VDRUZJQVFnQVVFWWFpZ0NBQ0lHTmdJUUlBUWdCVFlDRENBRVxcXG5JQU0yQWdoQkFTRURJQUZCQVNBRklBWVFvZ2dnQkNBQk5nSWNJQVFnQkVFSWFqWUNHQ0FFSUFFZ0FxMGlCeUFFUVJocVFZU2d3QUFRL2dcXFxuRWdCQ2dDQkNFRkFrQUNRQ0FFS0FJQURRQWdBU2dDQUNBRlFRSjBhMEY4YWlnQ0FDRUNRUUFoQXd3QkN5QUJJQWNnQlNBQktBSU1JZ0lRXFxcbjZRWUxJQUFnQWpZQ0JDQUFJQU0yQWdBZ0JFRWdhaVFBQzdZQkFnRi9BWDRqQUVFd2F5SURKQUFnQXlBQklBSVEzQUVDUUFKQUlBTW9BZ1xcXG5BTkFDQUFJQU1vQWdRZ0EwRUlhaWdDQUJCbERBRUxJQU5CRUdwQkNHb2dBMEVJYWlJQktBSUFJZ0kyQWdBZ0F5QURLUU1BSWdRM0F4QWdcXFxuQTBFZ2FpQUVweUFDRUdVQ1FDQURLQUlnRFFBZ0FDQURLUU1BTndJQUlBQkJDR29nQVNnQ0FEWUNBQXdCQ3lBQUlBTXBBeUEzQWdBZ0FFXFxcbkVJYWlBRFFTQnFRUWhxS0FJQU5nSUFJQU5CRUdvUTVnb0xJQU5CTUdva0FBdkJBUUVCZnlNQVFTQnJJZ1VrQUFKQUFrQWdBU0FEZkNJRFxcXG5JQUZVRFFBZ0JDQUNhaUlFUWYrVDY5d0RUUTBCSUFOQ0FYd2lBMUFOQUNBRVFZRHNsS044YWlFRURBRUxRWXpzelFCQktFSE03TTBBRUlcXFxub0dBQXNDUUNBRElBUkJnSlRyM0FOdUlnS3RmQ0lCSUFOYURRQWdCVUVVYWtJQU53SUFJQVZCQVRZQ0RDQUZRWlRoelFBMkFnZ2dCVUg0XFxcbjRNMEFOZ0lRSUFWQkNHcEI1T0hOQUJDWUNBQUxJQUFnQVRjREFDQUFJQVFnQWtHQWxPdmNBMnhyTmdJSUlBVkJJR29rQUF1eUFRRURmeVxcXG5NQVFlQUFheUlFSkFBQ1FDQUFRUmhxS0FJQUlnVWdBRUVVYWlnQ0FDSUdSdzBBSUFCQkFSQ2pCU0FBS0FJVUlRWWdBQ2dDR0NFRkN5QUVcXFxuUVFocUlBSkJ5QUFRcEEwYUlBUkIyQUJxSUFOQkNHb29BZ0EyQWdBZ0JDQURLUUlBTndOUUFrQWdCU0FHUncwQUlBQkJFR29nQmhEMUNDXFxcbkFBS0FJWUlRVUxJQUFvQWhBZ0JVSFlBR3hxSUFSQkNHcEIxQUFRcEEwZ0FUWUNWQ0FBSUFBb0FoaEJBV28yQWhnZ0JFSGdBR29rQUF1cFxcXG5BUUVDZnlNQVFTQnJJZ1FrQUVFQUlRVUNRQ0FDSUFOcUlnTWdBa2tOQUNBQktBSUVJUUlnQkVFUWFpQUJFS2dKSUFRZ0FrRUJkQ0lDSUFcXFxuTWdBaUFEU3hzaUEwRUlJQU5CQ0VzYklnTkJmM05CSDNZZ0F5QUVRUkJxSUFFUTJRSWdCQ2dDQkNFRkFrQWdCQ2dDQUVVTkFDQUVRUWhxXFxcbktBSUFJUU1NQVFzZ0FTQUROZ0lFSUFFZ0JUWUNBRUdCZ0lDQWVDRUZDeUFBSUFNMkFnUWdBQ0FGTmdJQUlBUkJJR29rQUF1MkFRRUdmeVxcXG5BQVFRRnlJZ0VRNFFVaUFrRUVhaUVEUVFBaEJBTkFJQVFoQlFKQUlBTWlCaWdDQUNJRURRQWdBQ0FBS0FJQVFYMXhOZ0lBSUFJUXhBa1BcXFxuQ3lBRVFRUnFJUU1nQkNnQ0FDQUJSdzBBQ3lBR0lBUW9BZ1FpQXpZQ0FBSkFBa0FnQWlnQ0NDQUVSdzBBSUFJZ0JUWUNDQXdCQ3dOQUlBXFxcbk5GRFFFZ0F5Z0NBQ0FCUmcwQklBTW9BZ1FoQXd3QUN3c1FvdzRnQUNBQUtBSUFRWDF4TmdJQUlBUkJBRFlDQ0NBRUVMc01JQUlReEFrUVxcXG5vdzRMdndFQkJYOGpBRUVnYXlJREpBQUNRQ0FCS0FJRUlnUWdBa2tOQUVHQmdJQ0FlQ0VGQWtBZ0JFVU5BQ0FCS0FJQUlRWUNRQUpBSUFcXFxuSU5BRUVCSVFjZ0JrRUJJQVFRc2dzTUFRdEJBU0VGSUFZZ0JFRUJJQUlRc0FzaUIwVU5BUXNnQVNBQ05nSUVJQUVnQnpZQ0FFR0JnSUNBXFxcbmVDRUZDeUFBSUFJMkFnUWdBQ0FGTmdJQUlBTkJJR29rQUE4TElBTkJGR3BDQURjQ0FDQURRUUUyQWd3Z0EwSEV0c0FBTmdJSUlBTkJyTFxcXG5EQUFEWUNFQ0FEUVFocVFaaTN3QUFRbUFnQUM3RUJBZ1YvQW40akFFRWdheUlESkFBQ1FBSkFJQUFvQWtnaUJDZ0NVQ0lGUlEwQUlBTWdcXFxuQWlBRmJpSUdJQVZzSWdjMkFnQWdBeUFDTmdJRUlBY2dBa2NOQVFKQUlBVWdBa3NOQUNBQUlBRWdCaUFFS0FKQUVRZ0FJQUFwQTBBaUNDXFxcbkFHclh3aUNTQUlXcTFCaVByQUFCQ1RDeUFBSUFrM0EwQUxJQU5CSUdva0FBOExRZUQxd0FCQkdVSG8rY0FBRUlNSEFBc2dBMEVBTmdJSVxcXG5RUUFnQXlBRFFRUnFJQU5CQ0dwQitQbkFBQkM1QlFBTHFRRUJBbjhqQUVFZ2F5SUNKQUFDUUFKQUFrQWdBQ2dDQkVHQWdNUUFSZzBBSUFcXFxuQXZBUUFpQTBFRFN3MEJJQUFnQTBFQmFqc0JBQ0FBUVFScUlBTkJBblJxSUFFMkFnQU1BZ3NnQUVFSWFpQUJFTGdIREFFTElBRkJnSURFXFxcbkFFWU5BQ0FDUVFocUlBQWdBUkR4QmlBQUVQZ0tJQUJCRUdvZ0FrRUlha0VRYWlnQ0FEWUNBQ0FBUVFocUlBSkJDR3BCQ0dvcEF3QTNBZ1xcXG5BZ0FDQUNLUU1JTndJQUN5QUNRU0JxSkFBTHB3RUJBMzhqQUVHQUFXc2lCQ1FBQWtBZ0FFRVlhaWdDQUNJRklBQkJGR29vQWdBaUJrY05cXFxuQUNBQVFRRVFvZ1VnQUNnQ0ZDRUdJQUFvQWhnaEJRc2dCRUVJYWlBQ1FjZ0FFS1FOR2lBRVFRaHFRY2dBYWlBRFFUQVFwQTBhQWtBZ0JTXFxcbkFHUncwQUlBQkJFR29nQmhEMENDQUFLQUlZSVFVTElBQW9BaEFnQlVFSGRHb2dCRUVJYWtINEFCQ2tEU0FCTmdKNElBQWdBQ2dDR0VFQlxcXG5hallDR0NBRVFZQUJhaVFBQzdRQkFRTi9JQUF0QUFnaEFRSkFJQUFvQWdBaUFnMEFJQUZCL3dGeFFRQkhEd3RCQVNFREFrQUNRQ0FCUWZcXFxuOEJjUTBBQWtBQ1FDQUNRUUZIRFFBZ0FDMEFDVUgvQVhFTkFRc2dBQ2dDQkNFQkRBSUxJQUJCQkdvb0FnQWlBUzBBSEVFRWNRMEJRUUVoXFxcbkF5QUJLQUlVUWJ5ZXpnQkJBU0FCUVJocUtBSUFLQUlNRVFrQVJRMEJDeUFBSUFNNkFBZ2dBdzhMSUFBZ0FTZ0NGRUdibWM0QVFRRWdBVVxcXG5FWWFpZ0NBQ2dDREJFSkFDSUJPZ0FJSUFFTHF3RUJBWDhqQUVFZ2F5SURKQUFnQXlBQklBSVF1QXNnQXlnQ0JDRUJJQU1vQWdBaEFnSkFcXFxuQWtBRFFBSkFJQUlnQVVjTkFFRUFJUUlNQXdzZ0EwRUlhaUFBRU5NR0lBTXRBQWdOQVFKQUlBTXRBQWtOQUNBRFFRVTJBaEFnQUNBRFFSXFxcbkJxRU04SUlRSU1Bd3NDUUNBRExRQUtJQUl0QUFCSERRQWdBa0VCYWlFQ0RBRUxDeUFEUVFrMkFoQWdBQ0FEUVJCcUVNOElJUUlNQVFzZ1xcXG5BeWdDRENFQ0N5QURRU0JxSkFBZ0FndXFBUUVDZnlNQVFTQnJJZ0VrQUNBQlFRaHFJQUFRdGdRQ1FBSkFBa0FnQVMwQUNBMEFJQUV0QUFcXFxua05BU0FCUVFNMkFoQWdBQ0FCUVJCcUVNNElJUUFNQWdzZ0FTZ0NEQ0VBREFFTEFrQUNRQ0FCTFFBS0lnSkIvUUJHRFFBZ0FrRXNSZzBCXFxcbklBRkJGallDRUNBQUlBRkJFR29RemdnaEFBd0NDeUFBSUFBb0FnaEJBV28yQWdoQkFDRUFEQUVMSUFGQkZUWUNFQ0FBSUFGQkVHb1F6Z1xcXG5naEFBc2dBVUVnYWlRQUlBQUxxZ0VCQW44akFFRWdheUlCSkFBZ0FVRUlhaUFBRUxvRUFrQUNRQUpBSUFFdEFBZ05BQ0FCTFFBSkRRRWdcXFxuQVVFRE5nSVFJQUFnQVVFUWFoRGRDQ0VBREFJTElBRW9BZ3doQUF3QkN3SkFBa0FnQVMwQUNpSUNRZjBBUmcwQUlBSkJMRVlOQVNBQlFSXFxcblkyQWhBZ0FDQUJRUkJxRU4wSUlRQU1BZ3NnQUNBQUtBSUlRUUZxTmdJSVFRQWhBQXdCQ3lBQlFSVTJBaEFnQUNBQlFSQnFFTjBJSVFBTFxcXG5JQUZCSUdva0FDQUFDNkFCQVFKL0l3QkJJR3NpQkNRQVFRQWhCUUpBSUFJZ0Eyb2lBeUFDU1EwQUlBRW9BZ1FoQWlBRVFSQnFJQUVRcUFcXFxua2dCQ0FDUVFGMElnSWdBeUFDSUFOTEd5SURRUWdnQTBFSVN4c2lBa0YvYzBFZmRpQUNJQVJCRUdvZ0FSRFpBaUFFUVFocUtBSUFJUU1nXFxcbkJDZ0NCQ0VGSUFRb0FnQU5BQ0FCSUFVZ0F5QUNFSW9NUVlHQWdJQjRJUVVMSUFBZ0F6WUNCQ0FBSUFVMkFnQWdCRUVnYWlRQUM3QUJBUVxcXG5SL0l3QkJFR3NpQWlRQUFrQURRQ0FCS0FJQUlRTWdBU2dDQkNFRUlBRVFyUWdpQlVFTlN3MEJRUUVnQlhSQmdNd0FjUTBBQ3dzQ1FBSkFcXFxuSUFWQmdJREVBRWNOQUNBQVFZQ0F4QUEyQWdBTUFRc2dCQ0FEYXlFRVFRRWhBUUpBSUFWQmdBRkpEUUJCQWlFQklBVkJnQkJKRFFCQkEwXFxcbkVFSUFWQmdJQUVTUnNoQVFzZ0FrRUlhaUFESUFRZ0FVSGdpY0VBRUxFR0lBQWdBaWtEQ0RjQ0JDQUFJQVUyQWdBTElBSkJFR29rQUF1dlxcXG5BUUlFZndGK0l3QkJ3QUJySWdJa0FDQUFLUUlVSVFZZ0FFSUJOd0lVSUFKQkNHcEJDR29pQXlBQVFSeHFJZ1FvQWdBMkFnQWdCRUVBTmdcXFxuSUFJQUpCQVRvQUtDQUNRUUEyQWlBZ0FrSUFOd0lVSUFJZ0JqY0RDQ0FDUVFocUlBRW9BZ0FpQlNBRklBRW9BZ1JxRU9jRElBSkJNR3BCXFxcbkNHb2lBU0FES0FJQU5nSUFJQUlnQWlrRENEY0RNQ0FBUVJScUVJb05JQVFnQVNnQ0FEWUNBQ0FBSUFJcEF6QTNBaFFnQWtIQUFHb2tBQVxcXG51ZEFRSURmd0orQWtBZ0FDQUJRWDlxUVFOMGFpSURMUUFBSWdRZ0EwRjRhaUlGTFFBQVR3MEFJQVN0SVFZZ0F6VUNCQ0VISUFNZ0JTa0NcXFxuQURjQ0FDQUJRWDVxSVFNZ0FVRURkQ0FBYWtGb2FpRUJBMEFDUUFKQUlBTkZEUUFnQkNBQkxRQUFTUTBCSUFGQkNHb2hBQXNnQUNBSFFpXFxcbkNHSUFhRU53SUFEQUlMSUFGQkNHb2dBU2tDQURjQ0FDQURRWDlxSVFNZ0FVRjRhaUVCREFBTEN3dXlBUUVDZnlNQVFSQnJJZ1VrQUFKQVxcXG5Ba0FDUUNBRERRQWdCQTBCQ3lBQktBSUlJZ01nQVNnQ0JDSUVJQU1nQkVzYklRUWdBU2dDQUNFR0EwQUNRQUpBSUFRZ0EwWU5BQ0FHSUFcXFxuTnFMUUFBUVZCcVFmOEJjVUVLU1EwQkN5QUFSQUFBQUFBQUFBQUFSQUFBQUFBQUFBQ0FJQUliT1FNSVFRQWhBd3dEQ3lBQklBTkJBV29pXFxcbkF6WUNDQXdBQ3dzZ0JVRU9OZ0lBSUFBZ0FTQUZFTThJTmdJRVFRRWhBd3NnQUNBRE5nSUFJQVZCRUdva0FBdXNBUUlCZndGK0l3QkIwQVxcXG5CcklnRWtBQ0FCSUFBMkFnUWdBVUVBTmdJZ0lBRkNBVGNER0NBQlFTaHFJQUZCR0dwQmdJbkFBQkRMQ0FKQUlBRkJCR29nQVVFb2FoQzJcXFxuQVVVTkFFR1lpY0FBUVRjZ0FVRUlha0hRaWNBQVFheUt3QUFRd2dRQUN5QUJRUWhxUVFocUlBRkJHR3BCQ0dvb0FnQWlBRFlDQUNBQklBXFxcbkVwQXhnaUFqY0RDQ0FDcHlBQUVNSU5JUUFnQVVFSWFoRGpEQ0FCUVFScUVPSUxJQUZCMEFCcUpBQWdBQXVvQVFFRWZ5TUFRUkJySWdJa1xcXG5BQ0FDUVFocUlBRkJBU0FBUWN3QWFpZ0NBQ0lEUVFCSElBQkJIR29vQWdBaUJFRUFSMm9RbXdNZ0FpZ0NDQ0VCQWtBZ0FpMEFEQ0lGUVFcXFxuTkdEUUFnQWlBRk9nQUVJQUlnQVRZQ0FBSkFJQVJGRFFBZ0FrR1ZyTUFBUVFjZ0FCQ3dCU0lCRFFFTEFrQWdBMFVOQUNBQ1FaeXN3QUJCXFxcbkJ5QUFRVEJxRUxVRklnRU5BUXNnQWlnQ0FDQUNMUUFFRU9jR0lRRUxJQUpCRUdva0FDQUJDN0lCQVFKL0l3QkJFR3NpQlNRQUFrQUNRQVxcXG5KQUlBTU5BQ0FFRFFFTElBRW9BZ2dpQXlBQktBSUVJZ1FnQXlBRVN4c2hCQ0FCS0FJQUlRWURRQUpBQWtBZ0JDQURSZzBBSUFZZ0Eyb3RcXFxuQUFCQlVHcEIvd0Z4UVFwSkRRRUxJQUJFQUFBQUFBQUFBQUJFQUFBQUFBQUFBSUFnQWhzNUF3aEJBQ0VEREFNTElBRWdBMEVCYWlJRE5nXFxcbklJREFBTEN5QUZRUTQyQWdBZ0FDQUJJQVVRM3dnMkFnUkJBU0VEQ3lBQUlBTTJBZ0FnQlVFUWFpUUFDNmdCQVFaL0l3QkJFR3NpQWlRQVxcXG5Ba0FDUUFKQUlBRW9BZ0FOQUFKQUlBRW9BZ2hGRFFBZ0FVRU1haUVEREFJTFFRQWhCRUVCSVFWQkFDRUREQUlMSUFGQkJHb2hBd3NnQWtcXFxuRUlhaUFCSUFNb0FnQWlCaENBQnlBQ0tBSUlJUWNnQWlBQ0tBSU1JZ05CQUJEVkJDQUNLQUlFSVFRZ0FpZ0NBQ0lGSUFjZ0F4Q2tEUm9nXFxcbkFVRVVhaUFHRUtBR0N5QUFJQU0yQWdnZ0FDQUVOZ0lFSUFBZ0JUWUNBQ0FDUVJCcUpBQUxud0VCQm45QnBnc2hBVUVBSVFKQnBnc2hBd1xcXG5OQUFrQWdBaUFCU1EwQVFRa1BDd0pBQWtBQ1FFRUFRWDlCQVNBRFFRRjJJQUpxSWdOQkRHd2lCRUh3eWN3QWFpZ0NBQ0lGSUFCSkd5SUdcXFxuSUFVZ0FFOGJJQVlnQkVIc3ljd0FhaWdDQUNBQVRSc2lCRUVCUncwQUlBTWhBUXdCQ3lBRVFmOEJjVUgvQVVjTkFTQURRUUZxSVFJTElBXFxcbkVnQW1zaEF3d0JDd3NnQTBFTWJFSDB5Y3dBYWkwQUFBdW9BUUVDZnlNQVFSQnJJZ0VrQUNBQUVJTU1RUUVoQWdKQUEwQWdBU0FBRU40SVxcXG5Ba0FDUUFKQUlBRXRBQUFOQUNBQkxRQUJRVkJxUWY4QmNVRUtTUTBDQWtBZ0FrRUJjUTBBSUFFZ0FCRGVDQ0FCTFFBQURRRWdBUzBBQVVcXFxuRWdja0hsQUVZTkFrRUFJUUFNQlFzZ0FVRU5OZ0lBSUFBZ0FSRGRDQ0VBREFRTElBRW9BZ1FoQUF3REN5QUFFSWNESVFBTUFnc2dBQkNEXFxcbkRFRUFJUUlNQUFzTElBRkJFR29rQUNBQUM2d0JBZ0ovQVg0akFFRVFheUlESkFBQ1FBSkFJQUVvQWdnaUJFR0FsT3ZjQTBZTkFDQUJLUVxcXG5NQUlRVU1BUXNnQXlBQUVOWUdJQU1vQWdnaEJDQURLUU1BSVFVTElBQWdCRFlDQ0NBQUlBVTNBd0FnQUNBQktRTVFOd01RSUFBZ0FTa0RcXFxuTURjRE1DQUFRU2hxSUFGQktHb3BBd0EzQXdBZ0FFRWdhaUFCUVNCcUtRTUFOd01BSUFCQkdHb2dBVUVZYWlrREFEY0RBQ0FBUVRocUlBXFxcbkZCT0dvb0FnQTJBZ0FnQTBFUWFpUUFDNjhCQVFKL0l3QkJNR3NpQWlRQUlBSkJnQUZCQUJEVkJDQUNRUUEyQWhBZ0FpQUNLUU1BTndNSVxcXG5JQUpCR0dwQkJISVFqZ3NnQWlBQ1FRaHFOZ0lZQWtBQ1FBSkFJQUVnQWtFWWFoRE1BeUlCUlEwQUlBSkJDR29RNHd3TUFRc2dBaWdDRENcXFxuRUJJQUlvQWdnaUF3MEJDeUFDSUFFMkFoaEJrNHpBQUVFcklBSkJHR3BCMEl6QUFFSGtxY0FBRU1JRUFBc2dBQ0FDS0FJUU5nSUlJQUFnXFxcbkFUWUNCQ0FBSUFNMkFnQWdBa0V3YWlRQUM2VUJBUUovSXdCQkVHc2lCU1FBSUFVZ0FTQUNFTGtDSUFVb0FnUWhCaUFGS0FJQUlRRUNRQ1xcXG5BRFJRMEFBa0FnQmlBQ1R3MEFJQU5CQVNBRUtBSVVFUVVBQ3lBRklBRTJBZ2dnQlNBQklBWnFOZ0lNQTBBQ1FDQUZRUWhxRUswSUlnSkJcXFxuRFVzTkFFRUJJQUowUVlETUFIRkZEUUFnQTBFSklBUW9BaFFSQlFBTUFnc2dBa0dBZ01RQVJ3MEFDd3NnQUNBQk5nSUFJQUFnQVNBR2FqXFxcbllDQkNBRlFSQnFKQUFMbVFFQ0EzOEJmZ0pBSUFBZ0FVRi9ha0VEZEdvaUF5Z0NBQ0lFSUFOQmVHb2lCU2dDQUU4TkFDQUROUUlFSVFZZ1xcXG5BeUFGS1FJQU53SUFJQUZCZm1vaEF5QUJRUU4wSUFCcVFXaHFJUUVEUUFKQUFrQWdBMFVOQUNBRUlBRW9BZ0JKRFFFZ0FVRUlhaUVBQ3lcXFxuQUFJQVpDSUlZZ0JLMkVOd0lBREFJTElBRkJDR29nQVNrQ0FEY0NBQ0FEUVg5cUlRTWdBVUY0YWlFQkRBQUxDd3VkQVFFRWZ5TUFRU0JyXFxcbklnSWtBQU5BSUFJZ0FSQnpBa0FDUUNBQ0tBSUFSUTBBSUFBb0FnZ2lBeUFBS0FJRVJ3MEJJQUpCRUdvZ0FSQ1FCQ0FBSUFJb0FoQkJBV1xcXG5vaUJFRi9JQVFiRUpBS0RBRUxJQUlRekFzZ0FVRW9haEROQ3lBQ1FTQnFKQUFQQ3lBQ1FRaHFLQUlBSVFRZ0FDZ0NBQ0FEUVF4c2FpSUZcXFxuSUFJcEF3QTNBZ0FnQlVFSWFpQUVOZ0lBSUFBZ0EwRUJhallDQ0F3QUN3dXNBUUVEZnlNQVFTQnJJZ0VrQUNBQVFReHFLQUlBSVFJQ1FBXFxcbkpBQWtBQ1FBSkFJQUFvQWdRT0FnQUJBd3NnQWcwQ1FheXd3QUFoQWtFQUlRQU1BUXNnQWcwQklBQW9BZ0FpQWlnQ0JDRUFJQUlvQWdBaFxcXG5BZ3NnQVVFSWFpQUFRUUFRMGdRZ0FTZ0NEQ0VESUFFb0FnZ2dBaUFBRUtRTklRSWdBU0FBTmdJWUlBRWdBellDRkNBQklBSTJBaEFNQVFcXFxuc2dBVUVRYWlBQUVJZ0JDeUFCUVJCcUVFQWhBQ0FCUVNCcUpBQWdBQXVnQVFFR2Z5TUFRUkJySWdJa0FDQUJRUWhxSVFNQ1FBTkFJQUVvXFxcbkFnZ2hCQ0FCS0FJTUlRVWdBa0VJYWlBREVLc0NJQUlvQWd3aUJrRjNhaUlIUVJkTERRRkJBU0FIZEVHVGdJQUVjUTBBQ3dzQ1FBSkFJQVxcXG5aQmdJREVBRVlOQUNBQUlBSW9BZ2dpQnpZQ0JDQUFRUWhxSUFjZ0JTQUVhMm9nQVNnQ0NHb2dBU2dDREdzMkFnQkJBU0VCREFFTFFRQWhcXFxuQVFzZ0FDQUJOZ0lBSUFKQkVHb2tBQXVnQVFFR2Z5TUFRUkJySWdJa0FDQUJRUWhxSVFNQ1FBTkFJQUVvQWdnaEJDQUJLQUlNSVFVZ0FrXFxcbkVJYWlBREVOd0VJQUlvQWd3aUJrRjNhaUlIUVJkTERRRkJBU0FIZEVHVGdJQUVjUTBBQ3dzQ1FBSkFJQVpCZ0lERUFFWU5BQ0FBSUFJb1xcXG5BZ2dpQnpZQ0JDQUFRUWhxSUFjZ0JTQUVhMm9nQVNnQ0NHb2dBU2dDREdzMkFnQkJBU0VCREFFTFFRQWhBUXNnQUNBQk5nSUFJQUpCRUdcXFxub2tBQXVkQVFFRGZ5TUFRWUFCYXlJQ0pBQWdBQzhCQUNFRFFRQWhBQU5BSUFJZ0FHcEIvd0JxUVRCQjF3QWdBMEVQY1NJRVFRcEpHeUFFXFxcbmFqb0FBQ0FBUVg5cUlRQWdBMEgvL3dOeElnUkJCSFloQXlBRVFROUxEUUFMQWtBZ0FFR0FBV29pQTBHQkFVa05BQ0FEUVlBQlFleWV6Z1xcXG5BUWdnVUFDeUFCUVFGQi9KN09BRUVDSUFJZ0FHcEJnQUZxUVFBZ0FHc1FZQ0VBSUFKQmdBRnFKQUFnQUF1YkFRRURmeU1BUVlBQmF5SUNcXFxuSkFBZ0FDMEFBQ0VEUVFBaEFBTkFJQUlnQUdwQi93QnFRVEJCTnlBRFFROXhJZ1JCQ2trYklBUnFPZ0FBSUFCQmYyb2hBQ0FEUWY4QmNTXFxcbklFUVFSMklRTWdCRUVQU3cwQUN3SkFJQUJCZ0FGcUlnTkJnUUZKRFFBZ0EwR0FBVUhzbnM0QUVJSUZBQXNnQVVFQlFmeWV6Z0JCQWlBQ1xcXG5JQUJxUVlBQmFrRUFJQUJyRUdBaEFDQUNRWUFCYWlRQUlBQUxuQUVCQTM4akFFR0FBV3NpQWlRQUlBQXRBQUFoQTBFQUlRQURRQ0FDSUFcXFxuQnFRZjhBYWtFd1FkY0FJQU5CRDNFaUJFRUtTUnNnQkdvNkFBQWdBRUYvYWlFQUlBTkIvd0Z4SWdSQkJIWWhBeUFFUVE5TERRQUxBa0FnXFxcbkFFR0FBV29pQTBHQkFVa05BQ0FEUVlBQlFleWV6Z0FRZ2dVQUN5QUJRUUZCL0o3T0FFRUNJQUlnQUdwQmdBRnFRUUFnQUdzUVlDRUFJQVxcXG5KQmdBRnFKQUFnQUF1akFRSURmd0YrUVlBQklRSUNRQ0FBS0FJQUlnTWdBeUFCS0FJQWEwRUNkU0lCYWlJRUtRQUFJZ1VnQlVJQmhvTkNcXFxuZ0lHQ2hJaVFvTUNBZjRONnAwRURkaUFESUFGQmVHb2dBQ2dDQkhGcUlnTXBBQUFpQlNBRlFnR0dnMEtBZ1lLRWlKQ2d3SUIvZzNtblFRXFxcbk4yYWtFSFN3MEFJQUFnQUNnQ0NFRUJhallDQ0VIL0FTRUNDeUFFSUFJNkFBQWdBMEVJYWlBQ09nQUFJQUFnQUNnQ0RFRi9hallDREF1b1xcXG5BUUVFZnlNQVFTQnJJZ0lrQUNBQ1FSaHFJQUVRdlFRZ0FrRVFhaUFDS0FJWUlBSW9BaHhCTHhDVUJpQUNLQUlVSVFNZ0FpZ0NFQ0VFSUFcXFxuSkJDR29nQVJDOUJDQUNLQUlJSVFVZ0FpZ0NEQ0VCSUFCQkFUc0JKQ0FBUVFBMkFod2dBRUtCZ0lDQThBVTNBaFFnQUVFQU5nSU1JQUJCXFxcbkx6WUNBQ0FBSUFNZ0FTQUVHeUlCTmdJZ0lBQWdBVFlDRUNBQUlBRTJBZ2dnQUNBRUlBVWdCQnMyQWdRZ0FrRWdhaVFBQzVrQkFRUi9Jd1xcXG5CQk1Hc2lBeVFBSUFNZ0FUWUNFQ0FESUFFMkFnZ2dBeUFDTmdJTUlBTWdBU0FDYWpZQ0ZDQURRUUEyQWhnZ0EwRWdhaUFEUVFocUVOZ0RcXFxuSUFNb0FpQWhBaUFES0FJa0lRUWdBMEVvYWlJRktBSUFJUVlnQTBFZ2FpQURRUWhxRU5jRElBQWdCU2dDQUNBR1FRQWdBaHNnQXlnQ0lCXFxcbnNnQkVFQUlBSWJJZ0pyTmdJRUlBQWdBU0FDYWpZQ0FDQURRVEJxSkFBTG1nRUJBMzhqQUVHQUFXc2lBaVFBSUFBb0FnQWhBRUVBSVFNRFxcXG5RQ0FDSUFOcVFmOEFha0V3UWRjQUlBQkJEM0VpQkVFS1NSc2dCR282QUFBZ0EwRi9haUVESUFCQkQwc2hCQ0FBUVFSMklRQWdCQTBBQ3dcXFxuSkFJQU5CZ0FGcUlnQkJnUUZKRFFBZ0FFR0FBVUhzbnM0QUVJSUZBQXNnQVVFQlFmeWV6Z0JCQWlBQ0lBTnFRWUFCYWtFQUlBTnJFR0FoXFxcbkFDQUNRWUFCYWlRQUlBQUxtUUVCQTM4akFFR0FBV3NpQWlRQUlBQW9BZ0FoQUVFQUlRTURRQ0FDSUFOcVFmOEFha0V3UVRjZ0FFRVBjU1xcXG5JRVFRcEpHeUFFYWpvQUFDQURRWDlxSVFNZ0FFRVBTeUVFSUFCQkJIWWhBQ0FFRFFBTEFrQWdBMEdBQVdvaUFFR0JBVWtOQUNBQVFZQUJcXFxuUWV5ZXpnQVFnZ1VBQ3lBQlFRRkIvSjdPQUVFQ0lBSWdBMnBCZ0FGcVFRQWdBMnNRWUNFQUlBSkJnQUZxSkFBZ0FBdXVBUUVCZnlNQVFhXFxcbkFCYXlJQ0pBQWdBaUFCRU1RSUlBSkI0QUJxSUFJUXp3c0NRQUpBQWtBQ1FDQUNLQUpvUVlHVTY5d0RSZzBBSUFKQklHb2dBa0hnQUdwQlxcXG53QUFRcEEwYUlBSVFtQVlpQVEwQklBQWdBa0VnYWtIQUFCQ2tEUm9nQWtFTWFoRGpEQXdEQ3lBQVFZR1U2OXdETmdJSUlBQWdBaWdDWURcXFxuWUNBQXdCQ3lBQVFZR1U2OXdETmdJSUlBQWdBVFlDQUNBQ1FTQnFFSjhMQ3lBQ1FReHFFT01NQ3lBQ1FhQUJhaVFBQzUwQkFRSi9Jd0JCXFxcbklHc2lBaVFBQWtBQ1FBSkFJQUVRc3d3aUF3MEFJQUVRdEF3aUFRMEJJQUJCQURZQ0FBd0NDeUFDUVJCcUlBTVF6UVlnQUVFSWFpQUNRUlxcXG5CcVFRaHFLQUlBTmdJQUlBQWdBaWtERURjQ0FBd0JDeUFDSUFFUXhRMDJBZ3dnQWtFUWFpQUNRUXhxRU0wR0lBQkJDR29nQWtFUWFrRUlcXFxuYWlnQ0FEWUNBQ0FBSUFJcEF4QTNBZ0FnQWtFTWFoQ01Dd3NnQWtFZ2FpUUFDNkVCQVFOL0l3QkJFR3NpQXlRQUFrQUNRQ0FCS0FKRUlnXFxcblJCQ1U4TkFDQUVJUVZCQ0NFRURBRUxJQUVvQWdRaEJRc0NRQUpBSUFRZ0JXc2dBa2tOQUVHQmdJQ0FlQ0VGREFFTElBTkJDR29nQlNBQ1xcXG5haUlFSUFWUElBUVFsUWNnQXlnQ0RDRUVBa0FnQXlnQ0NBMEFRUUFoQlF3QkN5QURJQUVnQkJEckFTQURLQUlFSVFRZ0F5Z0NBQ0VGQ3lcXFxuQUFJQVEyQWdRZ0FDQUZOZ0lBSUFOQkVHb2tBQXVWQVFFQ2Z3SkFBa0FnQUVGM2FpSUJRUmhQRFFCQkFTRUNRWitBZ0FRZ0FYWkJBWEVOXFxcbkFRdEJBQ0VDSUFCQmdBRkpEUUFDUUNBQVFRaDJJZ0ZGRFFBQ1FBSkFJQUZCTUVZTkFDQUJRU0JHRFFFZ0FVRVdSdzBESUFCQmdDMUdEd1xcXG5zZ0FFR0E0QUJHRHdzZ0FFSC9BWEZCMzh2T0FHb3RBQUJCQW5GQkFYWVBDeUFBUWY4QmNVSGZ5ODRBYWkwQUFFRUJjUThMSUFJTHF3RUJcXFxuQTM4akFFRWdheUlESkFBQ1FDQUJLQUlFSUFKSkRRQWdBMEVJYWlBQkVLZ0pBa0FDUUNBREtBSU1JZ1JGRFFBZ0F5Z0NDQ0FFSUFNb0FoXFxcbkFnQkNBQ0VOUUVJZ1ZGRFFFZ0FTQUNOZ0lFSUFFZ0JUWUNBQXRCZ1lDQWdIZ2hCQXNnQUNBQ05nSUVJQUFnQkRZQ0FDQURRU0JxSkFBUFxcXG5DeUFEUVJScVFnQTNBZ0FnQTBFQk5nSU1JQU5CZ1AvQUFEWUNDQ0FEUWN6K3dBQTJBaEFnQTBFSWFrSFUvOEFBRUpnSUFBdXFBUUVFZnlcXFxuTUFRU0JySWdNa0FBSkFBa0FDUUFKQUlBRW9BZ1FpQkNBQ1NRMEFJQVFOQVF3Q0N5QURRUlJxUWdBM0FnQWdBMEVCTmdJTUlBTkJnUC9BXFxcbkFEWUNDQ0FEUWN6K3dBQTJBaEFnQTBFSWFrSFUvOEFBRUpnSUFBdEJCQ0VGSUFFb0FnQkJCQ0FFUVFKMFFRUWdBa0VDZENJRUVOUUVJZ1xcXG5aRkRRRWdBU0FDTmdJRUlBRWdCallDQUF0QmdZQ0FnSGdoQlFzZ0FDQUVOZ0lFSUFBZ0JUWUNBQ0FEUVNCcUpBQUxwd0VCQW44akFFRXdcXFxuYXlJREpBQWdBeUFDTmdJTUlBTWdBVFlDQ0FKQUEwQWdBMEVRYWlBRFFRaHFFTWNESUFNb0FoQWlBa0dBZ01RQVJnMEJJQU1vQWhnaEFTXFxcbkFES0FJVUlRUUNRQUpBSUFJTkFDQUFLQUlZSWdKRkRRRWdBa0VISUFBb0Fod29BaFFSQlFBTUFRc2dBQ0FDSUFOQkNHb1EyQUVMSUFOQlxcXG43STdCQURZQ0tDQURJQUUyQWlRZ0F5QUVOZ0lnSUFBZ0EwRWdhaERtQlF3QUN3c2dBMEV3YWlRQUM1WUJBUUYvSXdCQndBRnJJZ01rQUNcXFxuQURJQUkyQWd3Z0EwSDBBR29oQWdKQUEwQWdBRVVOQVNBQUlBRkdEUUVnQTBFUWFpQUFRY2dBYWhDN0J5QUNJQUFRbEFVZ0EwSG9BR3BCXFxcbkNHb2dBMEVRYWtFSWFpZ0NBRFlDQUNBRElBTXBBeEEzQTJnZ0EwRVFhaUFEUWVnQWFrSFVBQkNrRFJvZ0FFSFlBR29oQUNBRFFReHFJQVxcXG5OQkVHb1E2QVFNQUFzTElBTkJ3QUZxSkFBTG9nRUJBWDhqQUVIZ0FXc2lBaVFBSUFJZ0FSRERDQ0FDUVlBQmFpQUNFTTRMQWtBQ1FBSkFcXFxuQWtBZ0FpZ0NrQUZGRFFBZ0FrRWdhaUFDUVlBQmFrSGdBQkNrRFJvZ0FoQ2ZCaUlCRFFFZ0FDQUNRU0JxUWVBQUVLUU5HaUFDUVF4cUVPXFxcbk1NREFNTElBQkJBRFlDRUNBQUlBSW9Bb0FCTmdJQURBRUxJQUJCQURZQ0VDQUFJQUUyQWdBZ0FrRWdhaERsQ3dzZ0FrRU1haERqREFzZ1xcXG5Ba0hnQVdva0FBdVlBUUVDZnlNQVFTQnJJZ0lrQUNBQ1FRaHFJQUZCQ0dvcEFnQTNBd0FnQWlBQktRSUFOd01BQWtBQ1FDQUFLQUlNRFFcXFxuQWdBa0VRYWlBQ0VLY0VJQUlvQWhBaEF3d0JDeUFDUVJCcUlBSVFwd1FnQWlnQ0VFRUJha0VCZGlFREN5QUFJQU1nQUVFUWFoQ3dDQ0FDXFxcblFSQnFRUWhxSUFGQkNHb3BBZ0EzQXdBZ0FpQUJLUUlBTndNUUlBSkJFR29nQUJDZkFTQUNRU0JxSkFBTHNBRUNBMzhCZmlNQVFTQnJJZ1xcXG5Ja0FDQUNRUkJxSUFFZ0FpQUNJQUlnQWhCN0FrQUNRQ0FDS0FJWUlnRkJnSlRyM0FOR0RRQWdBa0hva3NBQUlBSXBBeEFnQVJDcUF3SkFcXFxuQWtBZ0FpZ0NDQ0lCUVlDVTY5d0RSdzBBUWZpU3dBQkJJUkNwQnlFRERBRUxJQUlwQXdBaUJVSWdpS2NoQkNBRnB5RURDeUFBSUFFMkFnXFxcbmdnQUNBRU5nSUVJQUFnQXpZQ0FBd0JDeUFBUVlDVTY5d0ROZ0lJSUFBZ0FpZ0NFRFlDQUFzZ0FrRWdhaVFBQzUwQkFRVi9Jd0JCSUdzaVxcXG5BeVFBUVFBaEJDQURRUUEyQWhnZ0F5QUJOZ0lRSUFNZ0FUWUNDQ0FESUFJMkFnd2dBeUFCSUFKcU5nSVVJQU5CRUdvaEJRSkFBMEFnQXlcXFxuZ0NFQ0VHSUFNb0FoUWhCeUFESUFVUXF3SWdBeWdDQkNJQ1FZQ0F4QUJHRFFFZ0FrRWhTUTBBQ3lBSElBWnJJQU1vQWdCcUlBTW9BaEJxXFxcbklBTW9BaFJySVFRTElBQWdCRFlDQkNBQUlBRTJBZ0FnQTBFZ2FpUUFDNWdCQVFWL0l3QkJFR3NpQWlRQVFRQWhBd0pBQWtBZ0FTZ0NBQ1xcXG5JRUlBRW9BZ1FpQlVZTkFDQUNRUWhxSUFRdEFBQVEwQVlnQWlnQ0NFVU5BQ0FFUVFGcUlnWWdCVVlOQUNBQ0tBSU1JUVVnQWlBR0xRQUFcXFxuRU5BR0lBSW9BZ0JGRFFBZ0FpZ0NCQ0VESUFFZ0JFRUNhallDQUNBRElBVkJCSFJxSVFGQkFTRUREQUVMQ3lBQUlBRTZBQUVnQUNBRE9nXFxcbkFBSUFKQkVHb2tBQXViQVFFRGZ5TUFRUkJySWdVa0FBSkFBa0FDUUFKQUlBSU5BRUVCSVFZTUFRc2dBa0YvU2lJSFJRMEJRUUF0QVBHbVxcXG5UeG9nQWlBSEVQY0xJZ1pGRFFJTElBWWdBU0FDRUtRTklRRWdCVUVJYWlJR0lBSTJBZ0FnQlNBQ05nSUVJQVVnQVRZQ0FDQUZJQU1nQkJcXFxuQy9BUm9nQUVFSWFpQUdLQUlBTmdJQUlBQWdCU2tEQURjQ0FDQUZRUkJxSkFBUEN4Q1hDQUFMSUFjZ0FoQ2FEUUFMdEFFQkEzOGpBRUVRXFxcbmF5SUJKQUFnQUNnQ0FDSUNRUXhxS0FJQUlRTUNRQUpBQWtBQ1FDQUNLQUlFRGdJQUFRTUxJQU1OQWtINDRNMEFJUUpCQUNFRERBRUxJQVxcXG5NTkFTQUNLQUlBSWdJb0FnUWhBeUFDS0FJQUlRSUxJQUVnQXpZQ0JDQUJJQUkyQWdBZ0FVR3c3ODBBSUFBb0FnUWlBaERqRFNBQUtBSUlcXFxuSUFJUTVRMFE5Z0lBQ3lBQlFRQTJBZ1FnQVNBQ05nSUFJQUZCbk8vTkFDQUFLQUlFSWdJUTR3MGdBQ2dDQ0NBQ0VPVU5FUFlDQUF1YkFRXFxcbklEZndGK0l3QkI0QUJySWdRa0FBSkFBa0FnQVNBQlFSQnFJZ1VnQWhEMEJDSUhJQUlRcFFVaUJnMEFJQVJCQ0dwQkNHb2dBa0VJYWlnQ1xcXG5BRFlDQUNBRUlBSXBBZ0EzQXdnZ0JFRVVhaUFEUWNnQUVLUU5HaUFCSUFjZ0JFRUlhaUFGRUw0RkdpQUFRUUkyQWdBTUFRc2dBQ0FHUWJcXFxuaC9haUlCUWNnQUVLUU5HaUFCSUFOQnlBQVFwQTBhSUFJUTR3d0xJQVJCNEFCcUpBQUxtd0VCQW44akFFRWdheUlFSkFBZ0JFRVFhaUFCXFxcbkVPY0hJQVFvQWhRaEFTQUVLQUlRSVFVZ0JFRUlhaUFDSUFNUW5RY2dCQ0FFS0FJTUlnTTJBaHdnQkNBRUtBSUlJZ0kyQWhnZ0JDQUZJQVxcXG5JZ0F4RFhBU0FFS0FJRUlRTWdCQ2dDQUNFQ0lBUkJHR29RNlFzZ0FTQUJLQUlBUVg5cU5nSUFJQUFnQWtFQVJ6WUNDQ0FBSUFOQkFDQUNcXFxuR3pZQ0JDQUFJQU0yQWdBZ0JFRWdhaVFBQzVzQkFRSi9Jd0JCSUdzaUJDUUFJQVJCRUdvZ0FSRG5CeUFFS0FJVUlRRWdCQ2dDRUNFRklBXFxcblJCQ0dvZ0FpQURFSjBISUFRZ0JDZ0NEQ0lETmdJY0lBUWdCQ2dDQ0NJQ05nSVlJQVFnQlNBQ0lBTVFrd0VnQkNnQ0JDRURJQVFvQWdBaFxcXG5BaUFFUVJocUVPa0xJQUVnQVNnQ0FFRi9hallDQUNBQUlBSkJBRWMyQWdnZ0FDQURRUUFnQWhzMkFnUWdBQ0FETmdJQUlBUkJJR29rQUFcXFxudWJBUUVDZnlNQVFTQnJJZ1FrQUNBRVFSQnFJQUVRNkFjZ0JDZ0NGQ0VCSUFRb0FoQWhCU0FFUVFocUlBSWdBeENkQnlBRUlBUW9BZ3dpXFxcbkF6WUNIQ0FFSUFRb0FnZ2lBallDR0NBRUlBVWdBaUFERVBnQklBUW9BZ1FoQXlBRUtBSUFJUUlnQkVFWWFoRHBDeUFCSUFFb0FnQkJmMlxcXG5vMkFnQWdBQ0FDUVFCSE5nSUlJQUFnQTBFQUlBSWJOZ0lFSUFBZ0F6WUNBQ0FFUVNCcUpBQUxtd0VCQW44akFFRWdheUlFSkFBZ0JFRVFcXFxuYWlBQkVPZ0hJQVFvQWhRaEFTQUVLQUlRSVFVZ0JFRUlhaUFDSUFNUW5RY2dCQ0FFS0FJTUlnTTJBaHdnQkNBRUtBSUlJZ0kyQWhnZ0JDXFxcbkFGSUFJZ0F4Q3BBU0FFS0FJRUlRTWdCQ2dDQUNFQ0lBUkJHR29RNlFzZ0FTQUJLQUlBUVg5cU5nSUFJQUFnQWtFQVJ6WUNDQ0FBSUFOQlxcXG5BQ0FDR3pZQ0JDQUFJQU0yQWdBZ0JFRWdhaVFBQzVZQkFRSi9Jd0JCTUdzaUF5UUFBa0FDUUFKQUlBQW9BZ2hCZ0lERUFFWU5BQ0FBTHdcXFxuRUFJZ1JCQTBzTkFTQUFJQVJCQVdvN0FRQWdBQ0FFUVFOMGFpSUFRUWhxSUFJMkFnQWdBRUVFYWlBQk9nQUFEQUlMSUFCQkRHb2dBU0FDXFxcbkVQQUdEQUVMSUFKQmdJREVBRVlOQUNBRFFRaHFJQUFnQVNBQ0VOOEdJQUFRK1FvZ0FDQURRUWhxUVNRUXBBMGFDeUFEUVRCcUpBQUxtd1xcXG5FQkEzOGpBRUV3YXlJQ0pBQWdBa0g0Z3NBQUVJRUdJQUpCRUdwQkdHb2lBeUFDS1FNSU53TUFJQUpCRUdwQkVHb2lCQ0FDS1FNQU53TUFcXFxuSUFKQkFEWUNIQ0FDUWdBM0FoUWdBa0dBZzhBQU5nSVFJQUpCRUdvZ0FSQ2JDQ0FBUVJocUlBTXBBd0EzQXdBZ0FFRVFhaUFFS1FNQU53XFxcbk1BSUFCQkNHb2dBa0VRYWtFSWFpa0RBRGNEQUNBQUlBSXBBeEEzQXdBZ0FrRXdhaVFBQzVzQkFRTi9Jd0JCTUdzaUFpUUFJQUpCK0lMQVxcXG5BQkNCQmlBQ1FSQnFRUmhxSWdNZ0Fpa0RDRGNEQUNBQ1FSQnFRUkJxSWdRZ0Fpa0RBRGNEQUNBQ1FRQTJBaHdnQWtJQU53SVVJQUpCZ0lcXFxuUEFBRFlDRUNBQ1FSQnFJQUVRbWdnZ0FFRVlhaUFES1FNQU53TUFJQUJCRUdvZ0JDa0RBRGNEQUNBQVFRaHFJQUpCRUdwQkNHb3BBd0EzXFxcbkF3QWdBQ0FDS1FNUU53TUFJQUpCTUdva0FBdVlBUUVEZnlNQVFUQnJJZ01rQUNBREVOQUlJQU5CRUdwQkdHb2lCQ0FES1FNSU53TUFJQVxcXG5OQkVHcEJFR29pQlNBREtRTUFOd01BSUFOQkFEWUNIQ0FEUWdBM0FoUWdBMEdBZzhBQU5nSVFJQU5CRUdvZ0FTQUNFTElJSUFCQkdHb2dcXFxuQkNrREFEY0RBQ0FBUVJCcUlBVXBBd0EzQXdBZ0FFRUlhaUFEUVJCcVFRaHFLUU1BTndNQUlBQWdBeWtERURjREFDQURRVEJxSkFBTG53XFxcbkVCQVg4akFFRVFheUlFSkFBQ1FDQUFJQUVnQWhDeEJTSUNEUUFnQkVFSWFpQUFLQUlBSWdBUXNRd2dCRUVJYWhDOUJ5SUNEUUFDUUFKQVxcXG5JQU1vQWdoQmdKVHIzQU5IRFFBZ0FDZ0NBRUhOZ3NBQVFRUVFpQXdnQkVFRU9nQUlJQVJCQ0dvUXZRY2hBZ3dCQ3lBRElBQVFzQU1oQWdcXFxuc2dBZzBBSUFCQkVHcEJBVG9BQUNBRVFRUTZBQWdnQkVFSWFoQzlCeUVDQ3lBRVFSQnFKQUFnQWd1TkFRSUJmd0YrQWtBZ0FhMGdBNjErXFxcbklnVkNJSWluRFFBQ1FBSkFBa0FnQWlBRnB5SUJha0YvYWlJRUlBRkpEUUFnQXlBRVFRQWdBbXR4SWdGcVFRaHFJZ01nQVVrTkFTQURRWVxcXG5DQWdJQjRJQUpyU3cwQ0lBQWdBVFlDQ0NBQUlBTTJBZ1FnQUNBQ05nSUFEd3NnQUVFQU5nSUFEd3NnQUVFQU5nSUFEd3NnQUVFQU5nSUFcXFxuRHdzZ0FFRUFOZ0lBQzVNQkFRVi9Jd0JCSUdzaUFpUUFJQUpCQURZQ0ZDQUNJQUFvQWdRaUF5QUJwM0VpQkRZQ0VDQUFLQUlBSVFWQkNDXFxcbkVHQWtBRFFDQUNJQVVnQkdvcEFBQTNBeGdnQWtFSWFpQUFJQUpCR0dvZ0FrRVFhaERiQ0NBQ0tBSUlEUUVnQWlBR05nSVVJQUlnQkNBR1xcXG5haUFEY1NJRU5nSVFJQVpCQ0dvaEJnd0FDd3NnQUNBQ0tBSU1FS1lKSVFZZ0FrRWdhaVFBSUFZTG1BRUJBWDhqQUVFZ2F5SURKQUFDUUFcXFxuSkFBMEFDUUNBQ0RRQkJBQ0VDREFNTElBTkJDR29nQUJEWUJpQURMUUFJRFFFQ1FDQURMUUFKRFFBZ0EwRUZOZ0lRSUFBZ0EwRVFhaERmXFxcbkNDRUNEQU1MQWtBZ0F5MEFDaUFCTFFBQVJ3MEFJQUZCQVdvaEFTQUNRWDlxSVFJTUFRc0xJQU5CQ1RZQ0VDQUFJQU5CRUdvUTN3Z2hBZ1xcXG53QkN5QURLQUlNSVFJTElBTkJJR29rQUNBQ0M1b0JBUU4vSXdCQkVHc2lBeVFBQWtBQ1FDQUJEUUJCd0FBaEFnd0JDd0pBSUFGQi8vLy9cXFxuRDBzTkFDQUJRUVowSWdSQmYwd05BQ0FCUVlDQWdCQkpRUVowSVFVQ1FBSkFJQUlOQUNBRFFRaHFJQVVnQkJEdEJ5QURLQUlJSVFJTUFRXFxcbnNnQXlBRklBUkJBUkNKQ0NBREtBSUFJUUlMSUFJTkFTQUZJQVFRbWcwQUN4Q1hDQUFMSUFBZ0FUWUNCQ0FBSUFJMkFnQWdBMEVRYWlRQVxcXG5DNThCQWdKL0FYNGpBRUVRYXlJQ0pBQWdBU2tDQUNFRUlBRXRBQWdoQXlBQ1FRdHFJQUZCQzJvdEFBQTZBQUFnQWlBQkx3QUpPd0FKSUFcXFxuQkJBQkNwQ2lBQ0lBTTZBQWdnQWlBRU53TUFBa0FnQXcwQUEwQUNRQUpBSUFJUXlBa2lBVUV2UmlJRERRQWdBVUhjQUVZTkFDQUJRWUNBXFxcbnhBQkdEUU1nQWtFQk9nQUlEQUVMSUFBZ0FSRGVCQXNnQXcwQUlBRkIzQUJHRFFBTEN5QUNRUkJxSkFBTG1RRUJBMzhqQUVFUWF5SURKQVxcXG5BQ1FBSkFJQUVOQUVFRUlRSU1BUXNDUUNBQlFhclZxdFVBU3cwQUlBRkJER3dpQkVGL1RBMEFJQUZCcTlXcTFRQkpRUUowSVFVQ1FBSkFcXFxuSUFJTkFDQURRUWhxSUFVZ0JCRGpCeUFES0FJSUlRSU1BUXNnQXlBRklBUVE1QWNnQXlnQ0FDRUNDeUFDRFFFZ0JTQUVFSm9OQUFzUWx3XFxcbmdBQ3lBQUlBRTJBZ1FnQUNBQ05nSUFJQU5CRUdva0FBdVdBUUVEZnlNQVFUQnJJZ0lrQUNBQ0VOQUlJQUpCRUdwQkdHb2lBeUFDS1FNSVxcXG5Od01BSUFKQkVHcEJFR29pQkNBQ0tRTUFOd01BSUFKQkFEWUNIQ0FDUWdBM0FoUWdBa0dBZzhBQU5nSVFJQUpCRUdvZ0FSRHFBeUFBUVJcXFxuaHFJQU1wQXdBM0F3QWdBRUVRYWlBRUtRTUFOd01BSUFCQkNHb2dBa0VRYWtFSWFpa0RBRGNEQUNBQUlBSXBBeEEzQXdBZ0FrRXdhaVFBXFxcbkM1OEJBUUYvSXdCQklHc2lBeVFBQWtBQ1FDQUFLQUlJSUFKTkRRQWdBMEVZYWlBQUlBSkJ1STNCQUJDaUJ5QURRUkJxSUFNb0FoZ2dBeVxcXG5nQ0hCQ1BDQ0FES0FJUVJRMEJJQUlnQXlnQ0ZHcEJBV29oQWdKQUlBRkIvd0Z4RFFBZ0EwRUlhaUFBSUFKQjJJM0JBQkNpQnlBREtBSUlcXFxuSUFNb0Fnd1FrQWdOQVFzZ0FDQUNFS0FHQ3lBRFFTQnFKQUFQQzBIQWdzRUFRU3RCeUkzQkFCQ0RCd0FMbHdFQkEzOGdBRUVNYWlnQ0FDXFxcbkVCSUFBb0FoQWhBZ05BQWtBQ1FBSkFJQUlnQVU4TkFDQUFLQUlJSWdFZ0FrRURkR29vQWdBaUF5QUFLQUlVUmcwQkN5QUFFSVVESWdKQlxcXG5nSURFQUVZTkFTQUFJQUFvQWhSQkFXbzJBaFFnQWc4TElBQWdBMEVCYWpZQ0ZDQUFJQUpCQVdvMkFoQWdBU0FDUVFOMGFpZ0NCQThMSUFcXFxuQW9BaEFpQWlBQUtBSU1JZ0ZKRFFBTFFZQ0F4QUFMbVFFQkEzOGpBRUVRYXlJREpBQUNRQUpBSUFFTkFFRUVJUUlNQVFzQ1FDQUJRZi8vXFxcbi8vOEJTdzBBSUFGQkFuUWlCRUYvVEEwQUlBRkJnSUNBZ0FKSlFRSjBJUVVDUUFKQUlBSU5BQ0FEUVFocUlBVWdCQkQzQnlBREtBSUlJUVxcXG5JTUFRc2dBeUFGSUFRUStBY2dBeWdDQUNFQ0N5QUNEUUVnQlNBRUVKb05BQXNRbHdnQUN5QUFJQUUyQWdRZ0FDQUNOZ0lBSUFOQkVHb2tcXFxuQUF1WkFRRURmeU1BUVJCcklnTWtBQUpBQWtBZ0FRMEFRUVFoQWd3QkN3SkFJQUZCLy8vLy93QkxEUUFnQVVFRGRDSUVRWDlNRFFBZ0FVXFxcbkdBZ0lDQUFVbEJBblFoQlFKQUFrQWdBZzBBSUFOQkNHb2dCU0FFRVBjSElBTW9BZ2doQWd3QkN5QURJQVVnQkJENEJ5QURLQUlBSVFJTFxcXG5JQUlOQVNBRklBUVFtZzBBQ3hDWENBQUxJQUFnQVRZQ0JDQUFJQUkyQWdBZ0EwRVFhaVFBQzVvQkFnTi9BWDRqQUVFZ2F5SUNKQUFnQVVcXFxuRUVhaUVEQWtBZ0FTZ0NCQTBBSUFFb0FnQWhBU0FDUVJCcVFRaHFJZ1JCQURZQ0FDQUNRZ0UzQXhBZ0FpQUNRUkJxTmdJY0lBSkJIR3BCXFxcbjRPRE5BQ0FCRUcwYUlBSkJDR29nQkNnQ0FDSUJOZ0lBSUFJZ0Fpa0RFQ0lGTndNQUlBTkJDR29nQVRZQ0FDQURJQVUzQWdBTElBQkIvT1xcXG43TkFEWUNCQ0FBSUFNMkFnQWdBa0VnYWlRQUM0WUJBZ1YvQVg1QkFDRUVBa0FDUUNBQ3JTQUJLQUlFSWdWQkFXcXRmaUlKUWlDSXB3MEFcXFxuSUFNZ0NhY2lCbXBCZjJvaUJ5QUdTUTBCUVFBaEJDQUZJQWRCQUNBRGEzRWlBbXBCQ1dvaUNDQUNTUTBBSUFoQmdJQ0FnSGdnQTJ0TERRXFxcbkVnQXlFRURBRUxDeUFBSUFRMkFnUWdBRUVJYWlBSU5nSUFJQUFnQVNnQ0FDQUNhellDQUF1VkFRRUJmeU1BUWNBQWF5SUVKQUFDUUNBQVxcXG5JQUVnQWhDeEJTSUNEUUFnQkVFWWFpQUFLQUlBSWdBUXNRd2dCRUVZYWhDOUJ5SUNEUUFnQkVFSWFpQUVRUmhxSUFNcEF3QVFrUUlnQUNcXFxuZ0NBQ0FFS0FJSUlBUW9BZ3dRaUF3Z0JFRUVPZ0FRSUFSQkVHb1F2UWNpQWcwQUlBQkJFR3BCQVRvQUFDQUVRUVE2QUJnZ0JFRVlhaEM5XFxcbkJ5RUNDeUFFUWNBQWFpUUFJQUlMbFFFQkFYOGpBRUhBQUdzaUJDUUFBa0FnQUNBQklBSVFzUVVpQWcwQUlBUkJHR29nQUNnQ0FDSUFFTFxcXG5FTUlBUkJHR29RdlFjaUFnMEFJQVJCQ0dvZ0JFRVlhaUFES0FJQUVKVUNJQUFvQWdBZ0JDZ0NDQ0FFS0FJTUVJZ01JQVJCQkRvQUVDQUVcXFxuUVJCcUVMMEhJZ0lOQUNBQVFSQnFRUUU2QUFBZ0JFRUVPZ0FZSUFSQkdHb1F2UWNoQWdzZ0JFSEFBR29rQUNBQ0M1Z0JBZ04vQVg1QmdBXFxcbkVoQWdKQUlBQW9BZ0FpQXlBQmFpSUVLUUFBSWdVZ0JVSUJob05DZ0lHQ2hJaVFvTUNBZjRONnAwRURkaUFESUFBb0FnUWdBVUY0YW5GcVxcXG5JZ0VwQUFBaUJTQUZRZ0dHZzBLQWdZS0VpSkNnd0lCL2czbW5RUU4yYWtFSFN3MEFJQUFnQUNnQ0NFRUJhallDQ0VIL0FTRUNDeUFFSUFcXFxuSTZBQUFnQVVFSWFpQUNPZ0FBSUFBZ0FDZ0NERUYvYWpZQ0RBdVdBUUVCZnlNQVFUQnJJZ0lrQUFKQUFrQWdBQ2dDREEwQUlBQWdBUkR4XFxcbkFTRUFEQUVMSUFKQkxHcEJDRFlDQUNBQ1FSaHFRUXhxUVFnMkFnQWdBa0VNYWtJRE53SUFJQUpCQXpZQ0JDQUNRZnpQd0FBMkFnQWdBaVxcXG5BQVFReHFOZ0lnSUFKQnFRRTJBaHdnQWlBQU5nSVlJQUlnQUVFUWFqWUNLQ0FDSUFKQkdHbzJBZ2dnQVNBQ0VLMEZJUUFMSUFKQk1Hb2tcXFxuQUNBQUM1Y0JBUU4vSXdCQkVHc2lBU1FBSUFCQnhBQnFLQUlBSVFJQ1FBSkFJQUFvQWdoQmdJREVBRVlOQUNBQlFRQWdBQzhCQUNBQVFRXFxcblJxUVFSQjhKN0JBQkR1QmlBQktBSUVJUU1nQVNnQ0FDRUFEQUVMSUFCQkZHb29BZ0FoQXlBQUtBSU1JUUFMQWtBZ0F5QUNUdzBBSUFJZ1xcXG5BMEdFbDhFQUVJSUZBQXNnQUNBQ1FRTjBhaUFESUFKcklBRkJER29RdEFFZ0FVRVFhaVFBQzVZQkFRTi9Jd0JCRUdzaUFTUUFJQUJCTUdcXFxub29BZ0FoQWdKQUFrQWdBQ2dDQ0VHQWdNUUFSZzBBSUFGQkFDQUFMd0VBSUFCQkJHcEJCRUh3bnNFQUVPNEdJQUVvQWdRaEF5QUJLQUlBXFxcbklRQU1BUXNnQUVFVWFpZ0NBQ0VESUFBb0Fnd2hBQXNDUUNBRElBSlBEUUFnQWlBRFFZU1h3UUFRZ2dVQUN5QUFJQUpCQTNScUlBTWdBbVxcXG5zZ0FVRU1haEMwQVNBQlFSQnFKQUFMakFFQ0FuOEJmZ0pBQWtBZ0FFRzU4OTN4ZVd3Z0FFR21zb1dLQTJ3aUJYT3RJQUt0SWdkK1FpQ0lcXFxucHlJR0lBSlBEUUFnQVNBR1FRRjBhaThCQUNBQWFrRzU4OTN4ZVd3Z0JYT3RJQWQrUWlDSXB5SUNJQVJKRFFFZ0FpQUVRZHpKekFBUWdRXFxcblVBQ3lBR0lBSkJ6TW5NQUJDQkJRQUxJQU1nQWtFQ2RHb29BZ0FpQWtFQUlBSkJDSFlnQUVZYkM1RUJBZ0YvQVg0akFFRWdheUlESkFBZ1xcXG5BeUFDTmdJTUlBTWdBVFlDQ0NBQVFSQnFJZ0VnQTBFSWFoRFhCQ0VFSUFNZ0EwRUlhallDRkNBRElBQTJBaHdnQXlBRFFSUnFOZ0lZSUFcXFxuTWdBQ0FFSUFOQkdHcEJqSi9BQUJEK0FnSkFJQU1vQWdCQkFFY2dBQ2dDQUVFQVIzRWlBZzBBSUFBZ0JDQURLQUlJSUFNb0Fnd2dBUkNtXFxcbkJSb0xJQU5CSUdva0FDQUNDNTRCQVFOL0l3QkJFR3NpQWlRQUlBRkJER29vQWdBaEF3SkFBa0FDUUFKQUFrQWdBU2dDQkE0Q0FBRURDeVxcXG5BRERRSkI0SUxBQUNFRFFRQWhBUXdCQ3lBRERRRWdBU2dDQUNJREtBSUVJUUVnQXlnQ0FDRURDeUFDUVFocUlBRkJBQkRWQkNBQ0tBSU1cXFxuSVFRZ0FpZ0NDQ0FESUFFUXBBMGhBeUFBSUFFMkFnZ2dBQ0FFTmdJRUlBQWdBellDQUF3QkN5QUFJQUVRaUFFTElBSkJFR29rQUF1VEFRXFxcbkVCZnlBQktBSUFJUUlDUUFKQUlBRW9BaWdOQUNBQVFRQTJBZ0FnQWtHQWdNUUFSdzBCSUFCQ0FUY0NCQThMQWtBZ0FrR0FnTVFBUncwQVxcXG5JQUJCQVRZQ0JDQUFRUWhxSUFGQk5Hb29BZ0FnQVVFd2FpZ0NBR3RCREc0aUFUWUNBQ0FBSUFFMkFnQVBDeUFBUVFBMkFnUWdBQ0FCUVRcXFxuUnFLQUlBSUFGQk1Hb29BZ0JyUVF4dU5nSUFEd3NnQUVFQU5nSUVDNDRCQVFGL0l3QkJNR3NpQWlRQUlBSWdBVFlDSENBQ1FSQnFJQUVRXFxcbkFnSkFBa0FnQWlnQ0VDSUJSUTBBSUFKQkNHb2dBU0FDS0FJVUVKMEhJQUpCSUdvZ0FpZ0NDQ0FDS0FJTUVJMExJQUlvQWlCRkRRQWdBQ1xcXG5BQ0tRTWdOd0lBSUFCQkNHb2dBa0VnYWtFSWFpZ0NBRFlDQUF3QkN5QUFJQUpCSEdvUTBnZ0xJQUpCSEdvUWhBc2dBa0V3YWlRQUM0c0JcXFxuQVFKL0l3QkJFR3NpQlNRQUFrQWdBeUFDU1EwQUlBTWdBVXNOQUFKQUlBTWdBVThOQUNBRElBSnJJZ1pCQ2s4TkFDQUZRUWhxSUFJZ0FrXFxcbkVLYWlJRElBRWdBeUFCU1JzaUF5QUFJQUZCd0p2QkFCRHZCaUFGS0FJSUlBVW9BZ3dnQmtFQklBWkJBVXNiSUFNUXlBVUxJQVZCRUdva1xcXG5BQ0FERHd0QmhKdkJBRUVzUWJDYndRQVFnd2NBQzRzQkFRSi9Jd0JCRUdzaUJTUUFBa0FnQXlBQ1NRMEFJQU1nQVVzTkFBSkFJQU1nQVVcXFxuOE5BQ0FESUFKcklnWkJDazhOQUNBRlFRaHFJQUlnQWtFS2FpSURJQUVnQXlBQlNSc2lBeUFBSUFGQndKdkJBQkR1QmlBRktBSUlJQVVvXFxcbkFnd2dCa0VCSUFaQkFVc2JJQU1RNWdRTElBVkJFR29rQUNBRER3dEJoSnZCQUVFc1FiQ2J3UUFRZ3djQUM2WUJBUU4vSXdCQkVHc2lBaVxcXG5RQVFlVGp6UUFoQTBFVElRUUNRQUpBQWtBQ1FDQUJMUUFBRGdRREFBRUNBd3NnQVMwQUFVRUNkQ0lCUWNqMXpRQnFLQUlBSVFNZ0FVR2tcXFxuOU0wQWFpZ0NBQ0VFREFJTElBRW9BZ1FpQVNnQ0JDRUVJQUVvQWdBaEF3d0JDeUFDUVFocUlBRW9BZ1FpQVNnQ0FDQUJLQUlFS0FJZ0VRXFxcblVBSUFJb0Fnd2hCQ0FDS0FJSUlRTUxJQUFnQkRZQ0JDQUFJQU0yQWdBZ0FrRVFhaVFBQzVVQkFRRi9Jd0JCTUdzaUFpUUFJQUFvQWdBaFxcXG5BQ0FDUVF4cVFiUUNOZ0lBSUFJZ0FDZ0NBQ0lBTmdJUUlBSkJ0UUkyQWdRZ0FpQUFhRFlDRkNBQlFSaHFLQUlBSVFBZ0FpQUNRUlJxTmdcXFxuSUlJQUlnQWtFUWFqWUNBQ0FCS0FJVUlRRWdBa0lDTndJa0lBSkJBellDSENBQ1FaeVp6Z0EyQWhnZ0FpQUNOZ0lnSUFFZ0FDQUNRUmhxXFxcbkVHMGhBU0FDUVRCcUpBQWdBUXVkQVFFQmZ5TUFRZEFBYXlJREpBQWdBMEVJYWlBQklBSVFSUUpBQWtBZ0F5Z0NFRUdBbE92Y0EwWU5BQ1xcXG5BQUlBTkJDR3BCd0FBUXBBMGFEQUVMSUFOQnlBQnFJQUVnQWhCYUFrQUNRQ0FETFFCSURRQWdBeTBBU1EwQklBQkJnSlRyM0FNMkFnZ01cXFxuQWdzZ0F5Z0NUQ0VDSUFCQmdaVHIzQU0yQWdnZ0FDQUNOZ0lBSUFOQkNHb1FwUXNNQVFzZ0FDQUJJQUlRUlFzZ0EwSFFBR29rQUF1RkFRXFxcbklCZndGK0FrQUNRQ0FCclNBRHJYNGlCVUlnaUtjTkFDQUNJQVduSWdGcVFYOXFJZ1FnQVU4TkFRc2dBRUVBTmdJQUR3c0NRQ0FESUFSQlxcXG5BQ0FDYTNFaUFXcEJDR29pQXlBQlNRMEFBa0FnQTBHQWdJQ0FlQ0FDYTBzTkFDQUFJQUUyQWdnZ0FDQUROZ0lFSUFBZ0FqWUNBQThMSUFcXFxuQkJBRFlDQUE4TElBQkJBRFlDQUF1VkFRRUNmeU1BUVNCcklnSWtBQ0FCUVFOMElRTUNRQUpBQWtBZ0FVSC8vLy8vQVVzTkFBSkFJQU5CXFxcbi9QLy8vd2RMRFFBZ0FrRVlhaUFETmdJQUlBSkJCRFlDRkVFQUlRRU1Bd3NnQWtFQU5nSVVEQUVMSUFKQkdHb2dBellDQUNBQ1FRQTJBaFxcXG5RTFFRRWhBUXNnQWlBQk5nSVFJQUpCQ0dvZ0FrRVFhaEQ2QmlBQUlBSW9BZ3dnQWlnQ0NCQ3lEQ0FDUVNCcUpBQUxrZ0VCQW44akFFRVFcXFxuYXlJREpBQUNRQUpBSUFFdEFBQkZEUUJCQWlFRURBRUxJQU1nQWhEOEJpQURLQUlFSVFJQ1FDQURLQUlBUlEwQVFRRWhCQ0FCUVFFNkFBXFxcbkFNQVFzZ0F5QUNOZ0lNQWtBQ1FDQURRUXhxRU1RTURRQkJBQ0VFSUFJUUZ5RUNEQUVMSUFGQkFUb0FBRUVDSVFRTElBTkJER29RbGdzTFxcXG5JQUFnQWpZQ0JDQUFJQVEyQWdBZ0EwRVFhaVFBQzVJQkFRRi9Jd0JCRUdzaUF5UUFBa0FnQUNnQ0NFVU5BQ0FBUVJScUlBQkJER29vQWdcXFxuQVFvQVlMQWtBQ1FDQUJSUTBBSUFNZ0FqWUNCQ0FESUFFMkFnQWdBMEVBT2dBSUlBTWdBRUVjYWlnQ0FEWUNEQ0FBUVF4cUlBTkJDR3BCXFxcbjZJL0JBQkQ5QmpZQ0FDQUFRUUUyQWdnZ0FFRVVha0VqRU40RUlBQWdBeERJQXd3QkN5QUFRUUEyQWdnTElBTkJFR29rQUF1UEFRRUdmeVxcXG5NQVFSQnJJZ0lrQUNBQktBSUlJUU5CQUNFRUlBRkJBRFlDQ0FKQUlBTkZEUUFnQWtFSWFpQUJJQUZCREdvb0FnQWlCVUVCYWhDQUJ5QUNcXFxuS0FJSUlRWWdBaUFDS0FJTUlnTkJBQkRWQkNBQ0tBSUVJUWNnQWlnQ0FDSUVJQVlnQXhDa0RSb2dBVUVVYWlBRkVLQUdJQUFnQXpZQ0NDXFxcbkFBSUFjMkFnUUxJQUFnQkRZQ0FDQUNRUkJxSkFBTGpnRUJBbjhqQUVFZ2F5SURKQUFnQTBFSWFpQUJMd0VBSWdRZ0FtcEJBQkNFQkNBRFxcXG5RUkJxUVFocUlnSkJBRFlDQUNBRElBTXBBd2czQXhBZ0EwRUFJQVFnQVVFRWFrRUVRZkNld1FBUTdnWWdBMEVRYWlBREtBSUFJZ1FnQkNcXFxuQURLQUlFUVFOMGFoREVCaUFCUVFBN0FRQWdBQ0FES1FNUU53SUFJQUJCQ0dvZ0FpZ0NBRFlDQUNBRFFTQnFKQUFMaXdFQkFuOGpBRUVnXFxcbmF5SURKQUFnQTBFSWFpQUJMd0VBSWdRZ0FtcEJBQkNEQkNBRFFRQTJBaGdnQXlBREtRTUlOd01RQWtBZ0JFRUZTUTBBSUFSQkJFSHduc1xcXG5FQUVJTUZBQXNnQTBFUWFpQUJRUVJxSWdJZ0FpQUVRUUowYWhEREJpQUJRUUE3QVFBZ0FDQURLUU1RTndJQUlBQkJDR29nQTBFUWFrRUlcXFxuYWlnQ0FEWUNBQ0FEUVNCcUpBQUxvUUVCQW44Z0FTOEFBQ0lDSUFFdEFBSWlBMm9oQVFKQUFrQUNRQ0FDUlEwQUFrQWdBa0djNUFCSkRRXFxcbkFnQWtHYzVBQkdEUUVNQWdzZ0FrRzhsTVFBYWl3QUFFRkFTQTBCQ3lBQlJRMEJBa0FnQVVHYzVBQkpEUUFnQVVHYzVBQkhEUUVNQWdzZ1xcXG5BVUc4bE1RQWFpd0FBRUcvZjBvTkFRdEJ2SlRFQUVHYzVBQWdBaUFCUVp5aXdRQVE1QXNBQ3lBQUlBTTJBZ1FnQUNBQ1FieVV4QUJxTmdcXFxuSUFDNHNCQVFGL0l3QkJFR3NpQXlRQUlBTWdBallDRENBRElBRTJBZ2dEUUNBRElBTkJDR29RbXdVQ1FBSkFJQU10QUFCQkFYRkZEUUFnXFxcbkF5MEFBU0VCSUFBb0FnZ2lBaUFBS0FJRVJ3MEJJQUFnQXlnQ0RDQURLQUlJYTBFQ2FrRURia0VCYWhDcUNnd0JDeUFEUVJCcUpBQVBDeVxcXG5BQUlBSkJBV28yQWdnZ0FDZ0NBQ0FDYWlBQk9nQUFEQUFMQzQ4QkFRSi9Jd0JCd0FCcklnTWtBQUpBQWtBZ0FrVU5BRUVCSVFRZ0FTMEFcXFxuQUVFdlJnMEJDMEVBSVFRTElBTWdCRG9BUGlBRFFRWTZBQ2dnQXlBQ05nSWtJQU1nQVRZQ0lDQURRWUFFT3dFOElBTWdBMEVnYWhBNElBXFxcbk1vQWdRaEFTQURMUUFBSVFJZ0FDQURLQUlJTmdJRUlBQkJBQ0FCUVFBZ0FrRUpSaHNnQWtFS1JoczJBZ0FnQTBIQUFHb2tBQXVGQVFFQ1xcXG5meU1BUVJCcklnTWtBQUpBSUFGQkIycEJBQ0FCYTNFaUJDQUVRWGhxU1EwQUlBUWdBbW9pQWlBRVNRMEFJQUpCZ0lDQWdIZ2dBVUVFSUFcXFxuRkJCRXNiSWdGclN3MEFJQUFnQVRZQ0FDQUFJQUVnQW1wQmYycEJBQ0FCYTNFMkFnUWdBMEVRYWlRQUR3dEJtUHpOQUVFcklBTkJDR3BCXFxcbnhQek5BRUc0L2MwQUVNSUVBQXUwQVFJQmZ3SitJd0JCMEFCcklnSWtBQ0FDUWNBQWFrSUFOd01BSUFKQ0FEY0RPQ0FDSUFBcEF3Z2lBelxcXG5jRE1DQUNJQUFwQXdBaUJEY0RLQ0FDSUFOQzg4clJ5NmVNMmJMMEFJVTNBeUFnQWlBRFF1M2VrZk9Xek55MzVBQ0ZOd01ZSUFJZ0JFTGhcXFxuNUpYejF1elp2T3dBaFRjREVDQUNJQVJDOWNyTmc5ZXMyN2Z6QUlVM0F3Z2dBaUFCS0FJQU5nSk1JQUpCQ0dvZ0FrSE1BR3BCQkJDM0FpXFxcbkFDUVFocUVOOEJJUU1nQWtIUUFHb2tBQ0FEQzRNQkFRSi9RUUFoQlFKQUFrQWdBaUFCU1EwQUFrQWdBVVVOQUFKQUlBRWdCRWtOQUNBQlxcXG5JQVJIRFFJTUFRc2dBeUFCYWl3QUFFRkFTQTBCQ3dKQUlBSkZEUUFDUUNBQ0lBUkpEUUFnQWlBRVJnMEJEQU1MSUFNZ0Ftb3NBQUJCUUVcXFxuZ05BZ3NnQWlBQmF5RUdJQU1nQVdvaEJRd0JDd3NnQUNBR05nSUVJQUFnQlRZQ0FBdUpBUUVFZnlNQVFSQnJJZ01rQUNBRFFRaHFRUUFnXFxcbkFpQUJLQUlBSUFFb0FnUkIzTlRBQUJDVUJ5QURLQUlNSVFFZ0F5Z0NDQ0VDUVFBaEJFRUJJUVVEUUFKQUlBRU5BQ0FBSUFRMkFnUWdBQ1xcXG5BRk5nSUFJQU5CRUdva0FBOExRUUFnQkVFQmFpQUNMUUFBUVFwR0lnWWJJUVFnQVVGL2FpRUJJQUpCQVdvaEFpQUZJQVpxSVFVTUFBc0xcXFxua3dFQkFYOGpBRUhBQUdzaUFpUUFJQUpDQURjRE9DQUNRVGhxSUFBb0FnQVFLU0FDUVJScVFnRTNBZ0FnQWlBQ0tBSThJZ0EyQWpBZ0FpXFxcbkFBTmdJc0lBSWdBaWdDT0RZQ0tDQUNRZFlCTmdJa0lBSkJBallDRENBQ1FmRC93QUEyQWdnZ0FpQUNRU2hxTmdJZ0lBSWdBa0VnYWpZQ1xcXG5FQ0FCSUFKQkNHb1FyUVVoQUNBQ1FTaHFFT1FLSUFKQndBQnFKQUFnQUF1REFRRUNmMEVBSVFVQ1FBSkFJQUlnQVVrTkFBSkFJQUZGRFFcXFxuQUNRQ0FCSUFSSkRRQWdBU0FFUncwQ0RBRUxJQU1nQVdvc0FBQkJRRWdOQVFzQ1FDQUNSUTBBQWtBZ0FpQUVTUTBBSUFJZ0JFWU5BUXdEXFxcbkN5QURJQUpxTEFBQVFVQklEUUlMSUFJZ0FXc2hCaUFESUFGcUlRVU1BUXNMSUFBZ0JqWUNCQ0FBSUFVMkFnQUxpQUVCQW44Z0FTZ0NDQ1xcXG5FQ0FrQUNRQUpBSUFFb0FnQWlBdzBBSUFJTkFVRUFJUUZCQUNFRERBSUxJQUVvQWdRZ0EydEJCM1loQXdKQUlBSU5BRUVBSVFFTUFnc2dcXFxuQVVFTWFpZ0NBQ0FDYTBIWUFHNGlBU0FEYWlFRERBRUxJQUZCREdvb0FnQWdBbXRCMkFCdUlnRWhBd3NnQUVFQk5nSUVJQUFnQVRZQ0FDXFxcbkFBUVFocUlBTTJBZ0FMbXdFQ0FYOEJmaU1BUVNCcklnSWtBQUpBQWtBQ1FBSkFJQUVvQWdBT0F3QUJBZ0FMSUFBZ0FTc0RDQkNIQnd3Q1xcXG5DeUFBUVFBMkFnQWdBQ0FCS1FNSU53TUlEQUVMQWtBQ1FDQUJLUU1JSWdOQ0FGTU5BQ0FBSUFNM0F3aEJBQ0VCREFFTElBSkJBam9BQ0NcXFxuQUNJQU0zQXhBZ0FDQUNRUWhxSUFKQkdHcEJ1SUhBQUJEcEJEWUNCRUVCSVFFTElBQWdBVFlDQUFzZ0FrRWdhaVFBQzRRQkFRRi9Jd0JCXFxcbndBQnJJZ0lrQUNBQ1FSaHFJQUZCR0dvcEFnQTNBd0FnQWtFUWFpQUJRUkJxS1FJQU53TUFJQUpCQ0dvZ0FVRUlhaWtDQURjREFDQUNJQVxcXG5FcEFnQTNBd0FDUUNBQUlBSVF4d0VpQVVIL0FYRkJBMGNOQUNBQ1FTQnFJQUlRT0VGL1FRQWdBaTBBSUVFS1J4c2hBUXNnQWtIQUFHb2tcXFxuQUNBQlFmOEJjVVVMa3dFQkFuOGpBRUVRYXlJQ0pBQWdBa0VJYWlBQlFRRkJBeENiQXlBQ0tBSUlJUUVDUUNBQ0xRQU1JZ05CQTBZTkFDXFxcbkFDSUFNNkFBUWdBaUFCTmdJQUlBSkJyS3JBQUVFSElBQkJFR29RdGdVaUFRMEFJQUpCczZyQUFFRURJQUJCTUdvUXN3VWlBUTBBSUFKQlxcXG50cXJBQUVFRElBQVErUU1pQVEwQUlBSW9BZ0FnQWkwQUJCRG5CaUVCQ3lBQ1FSQnFKQUFnQVF1R0FRRUNmeU1BUVNCcklnSWtBQ0FDUVFcXFxuaHFJQUVvQWdnaUEwRUFFTlVFSUFKQkFEWUNHQ0FDSUFJcEF3ZzNBeEFnQTBFTWJDRURJQUVvQWdBaEFRTkFBa0FnQXcwQUlBQWdBaWtEXFxcbkVEY0NBQ0FBUVFocUlBSkJFR3BCQ0dvb0FnQTJBZ0FnQWtFZ2FpUUFEd3NnQTBGMGFpRURJQUpCRUdvZ0FSRG1DeUFCUVF4cUlRRU1BQVxcXG5zTG5BRUJBMzhqQUVFUWF5SUJKQUFnQVNBQUVMY0ZBa0FDUUNBQkxRQUFEUUJCQUNFQ0FrQUNRQUpBSUFFdEFBRWlBMEdTZjJvT0NBUUJcXFxuQVFFRUFRUUNBQXNDUUNBRFFaNS9hZzRGQkFFQkFRUUFDeUFEUVNKR0RRTWdBMEV2UmcwRElBTkIzQUJHRFFNTElBRkJERFlDQUNBQUlBXFxcbkVRNEFnaEFnd0NDeUFCSUFBUXdBSWdBUzhCQUVVTkFRc2dBU2dDQkNFQ0N5QUJRUkJxSkFBZ0FndUdBUUVFZnlNQVFSQnJJZ01rQUVFQVxcXG5JUVFnQTBFSWFpQUNRUUFRelFRZ0F5Z0NEQ0VGSUFNb0FnZ2dBU0FDRUtRTklRWUNRQU5BSUFJZ0JFWU5BU0FHSUFScUlnRWdBUzBBQUNcXFxuSUJRYjkvYWtIL0FYRkJHa2xCQlhRZ0FYSTZBQUFnQkVFQmFpRUVEQUFMQ3lBQUlBSTJBZ2dnQUNBR05nSUFJQUFnQlRZQ0JDQURRUkJxXFxcbkpBQUxvQUVCQW44akFFRWdheUlDSkFCQkFDRURJQUpCQURzQkdDQUNRUkJxSUFGQjVQakhBRUhrSFVHc3RNZ0FRZVFkSUFKQkdHb1FnUVxcXG5NQ1FBSkFJQUl2QVJBTkFBd0JDeUFDTHdFVUlRTWdBa0VJYWtITW9zb0FRZWNzSUFJdkFSSkI2TlhMQUJEcENDQUNJQUlvQWdnZ0FpZ0NcXFxuRENBRFFlalZ5d0FRK3drZ0FpZ0NCQ0VCSUFJb0FnQWhBd3NnQUNBQk5nSUVJQUFnQXpZQ0FDQUNRU0JxSkFBTG9BRUJBbjhqQUVFZ2F5XFxcbklDSkFCQkFDRURJQUpCQURzQkdDQUNRUkJxSUFGQnRPekZBRUdORUVIUWpNWUFRWTBRSUFKQkdHb1FnUU1DUUFKQUlBSXZBUkFOQUF3QlxcXG5DeUFDTHdFVUlRTWdBa0VJYWtHNGpjY0FRYzRhSUFJdkFSSkIxUGpIQUJEcENDQUNJQUlvQWdnZ0FpZ0NEQ0FEUWRUNHh3QVErd2tnQWlcXFxuZ0NCQ0VCSUFJb0FnQWhBd3NnQUNBQk5nSUVJQUFnQXpZQ0FDQUNRU0JxSkFBTGtBRUJBMzhqQUVFUWF5SUNKQUFDUUFKQUFrQUNRQ0FCXFxcbktBSUFEUUFnQVNnQ0JDSUREUUVNQWdzZ0FTZ0NDQ0lESUFFb0FneEdEUUVnQVNBRFFRaHFOZ0lJSUFNb0FnUWhCQ0FES0FJQUlRTU1BZ1xcXG5zZ0FrRUlhaUFESUFGQkNHb29BZ0FpQkNnQ0dCRUZBQ0FCSUFJcEF3ZzNBZ1FNQVF0QkFDRURDeUFBSUFRMkFnUWdBQ0FETmdJQUlBSkJcXFxuRUdva0FBdDVBZ0YvQVg0Q1FBSkFJQUpCQTBzTkFFRUFJUU5DQUNFRURBRUxJQUFnQVdvMUFBQWhCRUVFSVFNTEFrQWdBMEVCY2lBQ1R3XFxcbjBBSUFBZ0F5QUJhbW96QUFBZ0EwRURkSzJHSUFTRUlRUWdBMEVDY2lFREN3SkFJQU1nQWs4TkFDQUFJQU1nQVdwcU1RQUFJQU5CQTNTdFxcXG5oaUFFaENFRUN5QUVDNFlCQVFKL0lBQW9BZ0FnQUNBQkVMa0VJZ1JxTFFBQUlRVUNRQ0FBS0FJSURRQWdCVUVCY1VVTkFDQUFRUUVnQXhcXFxuQ3pDQ0FBSUFFUXVRUWhCQXNnQUNBRUlBVWdBUkNzQmlBQUtBSUFRUUFnQkd0QkdHeHFJZ1JCYUdvaUFDQUNLUUlBTndJQUlBQkJFR29nXFxcbkFrRVFhaWtDQURjQ0FDQUFRUWhxSUFKQkNHb3BBZ0EzQWdBZ0JBdVFBUUVCZnlNQVFkQUJheUlFSkFBZ0JFRVFhaUFBSUFFUW5RY2dCQ1xcXG5BRUtBSVVJZ0UyQXNRQklBUWdCQ2dDRUNJQU5nTEFBU0FFUVFocUlBSWdBeENkQnlBRUlBUW9BZ3dpQXpZQ3pBRWdCQ0FFS0FJSUlnSTJcXFxuQXNnQklBUkJHR29nQUNBQklBSWdBeER4QlNBRVFjZ0JhaERwQ3lBRVFjQUJhaERwQ3lBRVFSaHFFTWNHSVFFZ0JFSFFBV29rQUNBQkMzXFxcbmtDQVg4QmZnSkFBa0FnQWtFRFN3MEFRUUFoQTBJQUlRUU1BUXNnQUNBQmFqVUFBQ0VFUVFRaEF3c0NRQ0FEUVFGeUlBSlBEUUFnQUNBRFxcXG5JQUZxYWpNQUFDQURRUU4wcllZZ0JJUWhCQ0FEUVFKeUlRTUxBa0FnQXlBQ1R3MEFJQUFnQXlBQmFtb3hBQUFnQTBFRGRLMkdJQVNFSVFcXFxuUUxJQVFMa2dFQkFYOGpBRUhBQUdzaUJDUUFJQVJCRUdvZ0F5QUJJQUlRMFFVZ0JFRUNOZ0k0SUFSQkFUc0JOQ0FFSUFJMkFqQWdCRUVBXFxcbk5nSXNJQVJCQ0dvZ0JFRVFhaEQ4QkFKQUlBUW9BZ2dpQWcwQVFkRHZ3QUJCSzBHdzhjQUFFSU1IQUFzZ0JDZ0NEQ0VCSUFRZ0JFRVFhaFxcXG5EOEJDQUFJQVFwQXdBM0FnZ2dBQ0FCTmdJRUlBQWdBallDQUNBRVFjQUFhaVFBQzRNQkFRWi9JQUVvQWdnaUFpQUJLQUlFSWdNZ0FpQURcXFxuU3hzaEJDQUJLQUlBSVFVQ1FBTkFBa0FnQkNBQ1J3MEFRUUFoQmd3Q0MwRUJJUVlnQlNBQ2FpMEFBQ0lIUVhkcUlnTkJGMHNOQVVFQklBXFxcbk4wUVpPQWdBUnhSUTBCSUFFZ0FrRUJhaUlDTmdJSURBQUxDeUFBSUFZNkFBRWdBRUVBT2dBQUlBQkJBbW9nQnpvQUFBdUlBUUVCZnlNQVxcXG5RU0JySWdFa0FDQUJRUWhxSUFBUXRnUUNRQUpBQWtBZ0FTMEFDQTBBSUFFdEFBa05BU0FCUVFNMkFoQWdBQ0FCUVJCcUVNNElJUUFNQWdcXFxuc2dBU2dDRENFQURBRUxBa0FnQVMwQUNrRTZSdzBBSUFBZ0FDZ0NDRUVCYWpZQ0NFRUFJUUFNQVFzZ0FVRUdOZ0lRSUFBZ0FVRVFhaERPXFxcbkNDRUFDeUFCUVNCcUpBQWdBQXVIQVFFQmZ5TUFRY0FBYXlJREpBQWdBeUFDTmdJVUlBTWdBVFlDRUNBRElBQTJBZ3dnQTBFWWFrRU1ha1xcXG5JQ053SUFJQU5CTUdwQkRHcEJCVFlDQUNBRFFRSTJBaHdnQTBHQWtzQUFOZ0lZSUFOQkNEWUNOQ0FESUFOQk1HbzJBaUFnQXlBRFFSQnFcXFxuTmdJNElBTWdBMEVNYWpZQ01DQURRUmhxRU5ZRElRSWdBMEhBQUdva0FDQUNDNFlCQVFOL0lBQW9BZ1FpQWlBQnAzRWhBeUFBS0FJQUlRXFxcblJCQ0NFQUEzOENRQ0FFSUFOcUtRQUFRb0NCZ29TSWtLREFnSCtESWdGUURRQUNRQ0FFSUFGNnAwRURkaUFEYWlBQ2NTSURhaXdBQUVGL1xcXG5UQTBBSUFRcEF3QkNnSUdDaElpUW9NQ0FmNE42cDBFRGRpRURDeUFERHdzZ0F5QUFhaUFDY1NFRElBQkJDR29oQUF3QUN3dURBUUVHZnlcXFxuQUJLQUlJSWdJZ0FTZ0NCQ0lESUFJZ0Ewc2JJUVFnQVNnQ0FDRUZBa0FEUUFKQUlBUWdBa2NOQUVFQUlRWU1BZ3RCQVNFR0lBVWdBbW90XFxcbkFBQWlCMEYzYWlJRFFSZExEUUZCQVNBRGRFR1RnSUFFY1VVTkFTQUJJQUpCQVdvaUFqWUNDQXdBQ3dzZ0FDQUdPZ0FCSUFCQkFEb0FBQ1xcXG5BQVFRSnFJQWM2QUFBTGlBRUJBWDhqQUVFZ2F5SUJKQUFnQVVFSWFpQUFFTG9FQWtBQ1FBSkFJQUV0QUFnTkFDQUJMUUFKRFFFZ0FVRURcXFxuTmdJUUlBQWdBVUVRYWhEZENDRUFEQUlMSUFFb0Fnd2hBQXdCQ3dKQUlBRXRBQXBCT2tjTkFDQUFJQUFvQWdoQkFXbzJBZ2hCQUNFQURBXFxcbkVMSUFGQkJqWUNFQ0FBSUFGQkVHb1EzUWdoQUFzZ0FVRWdhaVFBSUFBTGlBRUJBMzhqQUVFZ2F5SURKQUFnQTBFQU5nSVlJQU1nQVNBQ1xcXG5hallDRkNBRElBRTJBaEFnQXlBQ05nSU1JQU1nQVRZQ0NDQURRUkJxSVFRQ1FBTkFJQU1nQkJEY0JBSkFJQU1vQWdRaUJVR0FnTVFBUndcXFxuMEFJQUloQlF3Q0N5QUZRU0ZKRFFBTElBTW9BZ0FoQlFzZ0FDQUNJQVZyTmdJRUlBQWdBU0FGYWpZQ0FDQURRU0JxSkFBTGl3RUJBbjhqXFxcbkFFRVFheUlDSkFBQ1FBSkFBa0FDUUNBQktBSUFEUUFnQVNnQ0NFVU5BaUFCUVF4cUlRTU1BUXNnQVVFRWFpRURDeUFDUVFocUlBRWdBU1xcXG5nQ01DQURLQUlBRU8wR0lBSW9BZ3doQVNBQ0tBSUlJUU1NQVFzZ0FpQUJJQUVvQWpBUWdBY2dBaWdDQkNFQklBSW9BZ0FoQXdzZ0FDQURcXFxuTmdJQUlBQWdBVFlDQkNBQ1FSQnFKQUFMaGdFQkJIOGpBRUVRYXlJQkpBQWdBU0FBS0FJQUlnSTJBZ2dnQVNBQ0lBQW9BZ2dpQTJvMkFnXFxcbndnQVNBQlFRaHFFSUFDQWtBZ0FTZ0NBRVVOQUNBQktBSUVJZ0pCZ0lERUFFWU5BRUYvSVFRQ1FDQUNRWUFCU1EwQVFYNGhCQ0FDUWY4UFxcXG5UUTBBUVgxQmZDQUNRWUNBQkVrYklRUUxJQUFnQkNBRGFqWUNDQXNnQVVFUWFpUUFDN01CQUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFcXFxuSkFJQUF0QUFBT0NnQUJBZ01FQlFZSENBa0FDeUFCUWN5VHdRQkJDaEQvQ2c4TElBRkJxNVBCQUVFaEVQOEtEd3NnQVVHWWs4RUFRUk1RXFxcbi93b1BDeUFCUVlTVHdRQkJGQkQvQ2c4TElBRkI4SkxCQUVFVUVQOEtEd3NnQVVIWWtzRUFRUmdRL3dvUEN5QUJRYjJTd1FCQkd4RC9DZ1xcXG44TElBRkJsSkxCQUVFcEVQOEtEd3NnQVVIaGtjRUFRVE1RL3dvUEN5QUJRYnlSd1FCQkpSRC9DZ3Q3QVFSL1FRQWhBUUpBQTBBZ0FDZ0NcXFxuQUNFQ0EwQUNRQ0FDUVFGeFJRMEFJQUpCQTBzTkF5QUJRUXBQRFFNZ0FVRURTU0VDSUFGQkFXb2lBeUVCSUFJTkFoQzJEaUFESVFFTUFnXFxcbnNnQUNBQ1FRRnlJQUFvQWdBaUF5QURJQUpHR3pZQ0FDQURJQUpISVFRZ0F5RUNJQVFOQUFzTER3c2dBaEM2REFBTGdnRUJBMzhqQUVFZ1xcXG5heUlDSkFBQ1FDQUFLQUlJSWdNZ0FVME5BQ0FBS0FJQUlBRkJBM1JxSWdRZ0JFRUlhaUFESUFGQmYzTnFRUU4wRUtNTkdpQUFJQU5CZjJcXFxubzJBZ2dnQWtFZ2FpUUFEd3NnQWtFVWFrSUFOd0lBSUFKQkFUWUNEQ0FDUWR5V3dRQTJBZ2dnQWtIa2xzRUFOZ0lRSUFKQkNHcEI5SnJCXFxcbkFCQ1lDQUFMaHdFQkFYOGpBRUhBQUdzaUJTUUFJQVVnQVRZQ0RDQUZJQUEyQWdnZ0JTQUROZ0lVSUFVZ0FqWUNFQ0FGUVJocVFReHFRZ1xcXG5JM0FnQWdCVUV3YWtFTWFrR3RBallDQUNBRlFRSTJBaHdnQlVHQW5zNEFOZ0lZSUFWQnJnSTJBalFnQlNBRlFUQnFOZ0lnSUFVZ0JVRVFcXFxuYWpZQ09DQUZJQVZCQ0dvMkFqQWdCVUVZYWlBRUVKZ0lBQXQrQVFSL0lBRW9BZ2dpQlNBQktBSUVJZ1lnQlNBR1N4c2hCaUFCS0FJQUlRXFxcbmNDUUFKQUEwQWdCaUFGUmcwQkFrQWdCeUFGYWkwQUFDSUlRVkJxUWY4QmNVRUtUdzBBSUFFZ0JVRUJhaUlGTmdJSURBRUxDeUFJUVNCeVxcXG5RZVVBUmcwQkN5QUFJQUVnQWlBRElBUVF4d0lQQ3lBQUlBRWdBaUFESUFRUW9BRUxoQUVCQTM4akFFRVFheUlDSkFBZ0FrRUlhaUFCUVFcXFxuRWdBRUVjYWlnQ0FDSURRUUJIRUpzRElBSW9BZ2doQVFKQUlBSXRBQXdpQkVFRFJnMEFJQUlnQkRvQUJDQUNJQUUyQWdBQ1FDQURSUTBBXFxcbklBSkJyS3JBQUVFSElBQVFzZ1VpQVEwQklBSXRBQVFoQkNBQ0tBSUFJUUVMSUFFZ0JCRG5CaUVCQ3lBQ1FSQnFKQUFnQVF1RkFRRUNmeVxcXG5NQVFSQnJJZ1VrQUNBRklBSWdBeUFFRUpjQ0lBVkJDR29vQWdBaEJDQUZLQUlFSVFNQ1FBSkFJQVVvQWdBaUJrVU5BQ0FBUVFnMkFoUWdcXFxuQUNBQ05nSVFJQUFnQXpZQ0JDQUFJQUVvQWd3aUFqWUNEQ0FBSUFRZ0FtczJBZ2dNQVFzZ0FDQUROZ0lFSUFCQkNHb2dCRFlDQUFzZ0FDXFxcbkFHTmdJQUlBVkJFR29rQUF0K0FRUi9JQUVvQWdnaUJTQUJLQUlFSWdZZ0JTQUdTeHNoQmlBQktBSUFJUWNDUUFKQUEwQWdCaUFGUmcwQlxcXG5Ba0FnQnlBRmFpMEFBQ0lJUVZCcVFmOEJjVUVLVHcwQUlBRWdCVUVCYWlJRk5nSUlEQUVMQ3lBSVFTQnlRZVVBUmcwQkN5QUFJQUVnQWlcXFxuQURJQVFReVFJUEN5QUFJQUVnQWlBRElBUVFvd0VMaVFFQkEzOGdBQ2dDQUNFREFrQUNRQ0FBS0FJSUlnUWdBQ2dDQkVZTkFDQURJUVVNXFxcbkFRc2dBQ0FFUVFGMElnVTJBZ1FDUUNBRkVNRUxJZ1VOQUVHWW1zRUFRU3RCNUpyQkFCQ0RCd0FMSUFBZ0JUWUNBQ0FGSUFNZ0JFRURkQlxcXG5Da0RSb2dBeUFFRUpBTUN5QUFJQVJCQVdvMkFnZ2dCU0FFUVFOMGFpSUFJQUkyQWdRZ0FDQUJOZ0lBQzI0QkJuNGdBQ0FEUXYvLy8vOFBcXFxuZ3lJRklBRkMvLy8vL3crRElnWitJZ2NnQlNBQlFpQ0lJZ2grSWdrZ0EwSWdpQ0lLSUFaK2ZDSUZRaUNHZkNJR053TUFJQUFnQ2lBSWZpXFxcbkFGSUFsVXJVSWdoaUFGUWlDSWhId2dCaUFIVksxOElBUWdBWDRnQXlBQ2ZueDhOd01JQzNNQkJYOUJBQ0VDQWtBZ0FFRWNhaWdDQUNBQlxcXG5RUnhxS0FJQVJ3MEFJQUJCSUdvb0FnQWlBeUFBUVNocUtBSUFRUnhzYWlFRUEwQWdBMEVBSUFNZ0JFY2lCUnNpQUVVaEFpQUFSUTBCSUFcXFxuRWdBQkNIQlNJR1JRMEJJQU1nQlVFY2JHb2hBeUFBUVF4cUlBWVFnZ3NOQUFzTElBSUxpQUVDQTM4QmZpTUFRU0JySWdFa0FBSkFJQUFvXFxcbkFnd2lBa1VOQUNBQUtBSUFJZ01wQXdBaEJDQUFLQUlFSVFBZ0FTQUNOZ0lZSUFFZ0F6WUNFQ0FCSUFBZ0EycEJBV28yQWd3Z0FTQURRUVxcXG5ocU5nSUlJQUVnQkVKL2hVS0FnWUtFaUpDZ3dJQi9nemNEQUFOQUlBRVE2Z2tpQUVVTkFTQUFRV2hxRU9nTERBQUxDeUFCUVNCcUpBQUxcXFxuaVFFQ0EzOEJmaU1BUVNCcklnRWtBQUpBSUFBb0Fnd2lBa1VOQUNBQUtBSUFJZ01wQXdBaEJDQUFLQUlFSVFBZ0FTQUNOZ0lZSUFFZ0F6XFxcbllDRUNBQklBQWdBMnBCQVdvMkFnd2dBU0FEUVFocU5nSUlJQUVnQkVKL2hVS0FnWUtFaUpDZ3dJQi9nemNEQUFOQUlBRVE2UWtpQUVVTlxcXG5BU0FBUWF4L2FoRHFDd3dBQ3dzZ0FVRWdhaVFBQzRFQkFnRi9BWDRqQUVFZ2F5SURKQUFDUUFKQUlBQW9BZ3dOQUVFQUlRQU1BUXNnQUVcXFxuRVFhaUFCSUFJUW1BRWhCQ0FESUFJMkFoUWdBeUFCTmdJUUlBTWdBRFlDSENBRElBTkJFR28yQWhnZ0EwRUlhaUFBSUFRZ0EwRVlha0hjXFxcbm44QUFFUDRDSUFNb0FnaEJBRWNnQUNnQ0FFRUFSM0VoQUFzZ0EwRWdhaVFBSUFBTGdBRUJBbjhqQUVFUWF5SURKQUFDUUFKQUlBRU5BRVxcXG5FQklRSU1BUXNDUUNBQlFYOUtJZ1JGRFFBQ1FBSkFJQUlOQUNBRFFRaHFJQVFnQVJEd0J5QURLQUlJSVFJTUFRc2dBeUFFSUFGQkFSQ0xcXFxuQ0NBREtBSUFJUUlMSUFJTkFTQUVJQUVRbWcwQUN4Q1hDQUFMSUFBZ0FUWUNCQ0FBSUFJMkFnQWdBMEVRYWlRQUM0UUJBUUovSXdCQkVHXFxcbnNpQWlRQUFrQUNRQ0FCS0FJQURRQkJBQ0VCREFFTElBRW9BZ1JCQVdvaEF3SkFJQUVvQWdnTkFDQUNJQUVnQXhDQUJ5QUNLQUlFSVFNZ1xcXG5BaWdDQUNFQkRBRUxJQUpCQ0dvZ0FTQURJQUZCREdvb0FnQVE3UVlnQWlnQ0RDRURJQUlvQWdnaEFRc2dBQ0FETmdJRUlBQWdBVFlDQUNcXFxuQUNRUkJxSkFBTGZnRURmeU1BUVJCcklnUWtBQ0FFUVFBNkFBZ2dCQ0FBUVJ4cUtBSUFOZ0lNSUFSQkNHcEIvSkRCQUJEOUJpRUZBa0FnXFxcbkFDZ0NBRVVOQUNBQUlBVWdBV3NnQUNnQ0JHbzJBZ1FMQWtBZ0FDZ0NDRVVOQUNBQVFReHFJZ1lnQlNBQmF5QUdLQUlBYWpZQ0FBc2dBRVxcXG5FVWFpQUNJQU1Ra3d3Z0JFRVFhaVFBQzRrQkFRSi9Jd0JCRUdzaUFpUUFBa0FDUUNBQktBSUFJZ05GRFFBZ0FDZ0NDQTBCSUFKQkFEb0FcXFxuQ0NBQ0lBQkJIR29vQWdBMkFnd2dBRUVNYWlBQ1FRaHFRYmlRd1FBUS9RWTJBZ0FnQUVFQk5nSUlJQUJCRkdvaUFFRWpFTjRFSUFBZ0F5XFxcbkFCS0FJSUVKTU1DeUFCRU44TElBSkJFR29rQUE4TFFmaVB3UUJCTDBHb2tNRUFFSU1IQUF0NUFRRi9Jd0JCNEFCcklnTWtBQ0FEUVFocVxcXG5JQUJCTUdvZ0FSRHRCU0FES0FJWUlRRWdBMEVJYWhEVUN3SkFJQUZGRFFBZ0FDZ0NZRVVOQUNBRFFkQUFhaUFDRUtzRUlBTkJDR29nQUVcXFxuSGdBR29nQTBIUUFHb1Fxd1lnQTBFSWFoRHNDaUFEUWRBQWFoRGpEQXNnQTBIZ0FHb2tBQ0FCUVFCSEMzNEJBbjhqQUVFUWF5SURKQUFDXFxcblFBSkFJQUVOQUVFQklRSU1BUXNDUUNBQlFYOUtJZ1JGRFFBQ1FBSkFJQUlOQUNBRFFRaHFJQVFnQVJEcUJ5QURLQUlJSVFJTUFRc2dBeVxcXG5BRUlBRVE2d2NnQXlnQ0FDRUNDeUFDRFFFZ0JDQUJFSm9OQUFzUWx3Z0FDeUFBSUFFMkFnUWdBQ0FDTmdJQUlBTkJFR29rQUF0K0FRSi9cXFxuSXdCQkVHc2lBeVFBQWtBQ1FDQUJEUUJCQVNFQ0RBRUxBa0FnQVVGL1NpSUVSUTBBQWtBQ1FDQUNEUUFnQTBFSWFpQUVJQUVROFFjZ0F5XFxcbmdDQ0NFQ0RBRUxJQU1nQkNBQkVQSUhJQU1vQWdBaEFnc2dBZzBCSUFRZ0FSQ2FEUUFMRUpjSUFBc2dBQ0FCTmdJRUlBQWdBallDQUNBRFxcXG5RUkJxSkFBTGZBRUNmeU1BUVJCcklnVWtBQUpBQWtBZ0JBMEFJQUFnQVNBQ0VMb0xJQU1oQmd3QkN3SkFJQUVnQTBZTkFFRUFJUVlnQlVcXFxuRUlhaUFESUFSQkFCQ09DQ0FGS0FJSUlnTkZEUUVnQXlBQUlBUVFwQTBoQkNBQUlBRWdBaEM2Q3lBRUlRWU1BUXNnQUNBQ0lBRWdCQkN3XFxcbkN5RUdDeUFGUVJCcUpBQWdCZ3QrQVFKL0l3QkJFR3NpQXlRQUFrQUNRQ0FCRFFCQkFTRUNEQUVMQWtBZ0FVRi9TaUlFUlEwQUFrQUNRQ1xcXG5BQ0RRQWdBMEVJYWlBRUlBRVErZ2NnQXlnQ0NDRUNEQUVMSUFNZ0JDQUJFUHNISUFNb0FnQWhBZ3NnQWcwQklBUWdBUkNhRFFBTEVKY0lcXFxuQUFzZ0FDQUJOZ0lFSUFBZ0FqWUNBQ0FEUVJCcUpBQUxpUUVCQW44Z0FDMEFCQ0VCQWtBZ0FDMEFCUTBBSUFGQi93RnhRUUJIRHd0QkFTXFxcbkVDQWtBZ0FVSC9BWEVOQUFKQUlBQW9BZ0FpQVMwQUhFRUVjUTBBSUFBZ0FTZ0NGRUczbnM0QVFRSWdBVUVZYWlnQ0FDZ0NEQkVKQUNJQlxcXG5PZ0FFSUFFUEN5QUJLQUlVUWJhZXpnQkJBU0FCUVJocUtBSUFLQUlNRVFrQUlRSUxJQUFnQWpvQUJDQUNDNlVCQWdGL0FuNGpBRUhBQUdcXFxuc2lBaVFBSUFKQk9HcENBRGNEQUNBQ1FnQTNBekFnQWlBQUtRTUlJZ00zQXlnZ0FpQUFLUU1BSWdRM0F5QWdBaUFEUXZQSzBjdW5qTm15XFxcbjlBQ0ZOd01ZSUFJZ0EwTHQzcEh6bHN6Y3QrUUFoVGNERUNBQ0lBUkM0ZVNWODliczJienNBSVUzQXdnZ0FpQUVRdlhLellQWHJOdTM4d1xcXG5DRk53TUFJQUlnQVNnQ0FDQUJLQUlFRU5RSUlBSVEzd0VoQXlBQ1FjQUFhaVFBSUFNTGdBRUJBbjhqQUVFUWF5SUNKQUFDUUFKQUlBRkJcXFxuL3dCTERRQUNRQ0FBS0FJSUlnTWdBQ2dDQkVjTkFDQUFJQU1RaHdrZ0FDZ0NDQ0VEQ3lBQUtBSUFJQU5xSUFFNkFBQWdBQ0FBS0FJSVFRXFxcbkZxTmdJSURBRUxJQUpCQURZQ0RDQUNJQUVnQWtFTWFoRExBaUFBSUFJb0FnQWdBaWdDQkJDSURBc2dBa0VRYWlRQUMzd0JBMzhqQUVFUVxcXG5heUlESkFBZ0EwRUlhaUFBS0FJQUlnUkJCR29nQkNBQUxRQUVRUUZHRUtRSkFrQWdBMEVJYWhDOUJ5SUZEUUFnQUVFQ09nQUVJQVFnQVNcXFxuZ0NBQ0lGS0FJQUlBVW9BZ2dRZ0FnaUJRMEFJQU5CQkRvQUNDQURRUWhxRUwwSElnVU5BQ0FBSUFJUTNBVWhCUXNnQTBFUWFpUUFJQVVMXFxcbmZ3RUNmeU1BUVNCcklnSWtBQ0FDUVFocUlnTWdBVUVJYWlnQ0FEWUNBQ0FDSUFFcEFnQTNBd0FnQWtFUWFpQUNFTW9JSUFBZ0FpZ0NFQlxcXG5DWkNpQUNRUkJxUVFocUlBTW9BZ0EyQWdBZ0FpQUNLUU1BTndNUUFrQURRQ0FDUVJCcUVQa0VJZ0ZCZ0lERUFFWU5BU0FBSUFFUTJBUU1cXFxuQUFzTElBSkJJR29rQUF1aEFRSUJmd0orSXdCQndBQnJJZ0lrQUNBQ1FUaHFRZ0EzQXdBZ0FrSUFOd013SUFJZ0FDa0RDQ0lETndNb0lBXFxcbklnQUNrREFDSUVOd01nSUFJZ0EwTHp5dEhMcDR6WnN2UUFoVGNER0NBQ0lBTkM3ZDZSODViTTNMZmtBSVUzQXhBZ0FpQUVRdUhrbGZQV1xcXG43Tm04N0FDRk53TUlJQUlnQkVMMXlzMkQxNnpidC9NQWhUY0RBQ0FCUVJScUlBSVE2d3NnQWhEZkFTRURJQUpCd0FCcUpBQWdBNmNMZ1FcXFxuRUJCbjhqQUVFUWF5SUNKQUFnQVNnQ0FDRURJQUVvQWdRaEJDQUNRUWhxSUFFUWpRSkJnSURFQUNFRkFrQUNRQ0FDS0FJSURRQU1BUXNnXFxcbkFpZ0NEQ0lHUVlDQXhBQkdEUUFnQVNBQktBSUlJZ2NnQkdvZ0F5QUJLQUlFYW1zZ0FTZ0NBR28yQWdnZ0JpRUZDeUFBSUFVMkFnUWdBQ1xcXG5BSE5nSUFJQUpCRUdva0FBdUJBUUVHZnlNQVFSQnJJZ0lrQUNBQktBSUFJUU1nQVNnQ0JDRUVJQUpCQ0dvZ0FSQ1BBa0dBZ01RQUlRVUNcXFxuUUFKQUlBSW9BZ2dOQUF3QkN5QUNLQUlNSWdaQmdJREVBRVlOQUNBQklBRW9BZ2dpQnlBRWFpQURJQUVvQWdScWF5QUJLQUlBYWpZQ0NDXFxcbkFHSVFVTElBQWdCVFlDQkNBQUlBYzJBZ0FnQWtFUWFpUUFDNEFCQVFKL0l3QkJFR3NpQWlRQUFrQUNRQ0FCUWY4QVN3MEFBa0FnQUNnQ1xcXG5DQ0lESUFBb0FnUkhEUUFnQUNBREVKVUpJQUFvQWdnaEF3c2dBQ2dDQUNBRGFpQUJPZ0FBSUFBZ0FDZ0NDRUVCYWpZQ0NBd0JDeUFDUVFcXFxuQTJBZ3dnQWlBQklBSkJER29RMFFJZ0FDQUNLQUlBSUFJb0FnUVFrd3dMSUFKQkVHb2tBQXQ2QVFSL0lBSW9BZ2dnQWlnQ0JDSURRUU4wXFxcbmFpRUVJQUlvQWdBaEJRSkFBMEFnQUNBQlJnMEJJQUF0QUFBaEFpQUFRUUE2QUFBZ0JDQUNPZ0FBSUFCQkJHb2lBaWdDQUNFR0lBSkJBRFxcXG5ZQ0FDQUVRUVJxSUFZMkFnQWdBRUVJYWlFQUlBUkJDR29oQkNBRFFRRnFJUU1NQUFzTElBVWdBellDQUF1QUFRRUNmeU1BUVJCcklnSWtcXFxuQUFKQUFrQWdBVUgvQUVzTkFBSkFJQUFvQWdnaUF5QUFLQUlFUncwQUlBQWdBeENWQ1NBQUtBSUlJUU1MSUFBb0FnQWdBMm9nQVRvQUFDXFxcbkFBSUFBb0FnaEJBV28yQWdnTUFRc2dBa0VBTmdJTUlBSWdBU0FDUVF4cUVOTUNJQUFnQWlnQ0FDQUNLQUlFRUpNTUN5QUNRUkJxSkFBTFxcXG5mUUVCZnlNQVFSQnJJZ01rQUFKQUFrQWdBUTBBUVFFaEFnd0JDd0pBSUFGQkFFZ05BQUpBQWtBZ0FnMEFJQU5CQ0dwQkFTQUJFUHdISUFcXFxuTW9BZ2doQWd3QkN5QURRUUVnQVVFQkVKTUlJQU1vQWdBaEFnc2dBZzBCUVFFZ0FSQ2FEUUFMRUpjSUFBc2dBQ0FCTmdJRUlBQWdBallDXFxcbkFDQURRUkJxSkFBTGN3RUNmeU1BUWRBQmF5SUNKQUFnQWtFSWFpQUFRY2dCRUtRTkdpQUNRY3dCYWlnQ0FDQUNLQUxJQVNJQWF5RURJQVxcXG5KQkNHb2dBRUVEZEdvaEFBSkFBMEFnQTBVTkFTQUJJQUFvQWdBZ0FFRUVhaWdDQUJDT0JCb2dBRUVJYWlFQUlBTkJmMm9oQXd3QUN3c2dcXFxuQWtIUUFXb2tBQXVnQVFJQmZ3SitJd0JCd0FCcklnTWtBQ0FEUVRocVFnQTNBd0FnQTBJQU53TXdJQU1nQUNrRENDSUVOd01vSUFNZ0FDXFxcbmtEQUNJRk53TWdJQU1nQkVMenl0SExwNHpac3ZRQWhUY0RHQ0FESUFSQzdkNlI4NWJNM0xma0FJVTNBeEFnQXlBRlF1SGtsZlBXN05tOFxcXG43QUNGTndNSUlBTWdCVUwxeXMyRDE2emJ0L01BaFRjREFDQURJQUVnQWhEVUNDQURFTjhCSVFRZ0EwSEFBR29rQUNBRXB3dDlBUUovSXdcXFxuQkJFR3NpQWlRQUFrQUNRQ0FCUWY4QVN3MEFBa0FnQUNnQ0NDSURJQUFvQWdSSERRQWdBQ0FERUlJSklBQW9BZ2doQXdzZ0FDQURRUUZxXFxcbk5nSUlJQUFvQWdBZ0Eyb2dBVG9BQUF3QkN5QUNRUUEyQWd3Z0FpQUJJQUpCREdvUXp3SWdBQ0FDS0FJQUlBSW9BZ1FRaGd3TElBSkJFR1xcXG5va0FBdDNBUUovUVFBaEFnSkFJQUZCQWtrTkFDQUFMUUFBUWQ4QmNVRy9mMnBCR1VzTkFBSkFJQUF0QUFFaUEwSDhBRVlOQUNBRFFUcEhcXFxuRFFFTFFRRWhBaUFCUVFKR0RRQkJBQ0VDSUFBdEFBSkJYV29pQVVIL0FYRkJPVXNOQUVLQm9JQ0FnWUNBZ0FJZ0FhMUMvd0dEaUtkQkFYXFxcbkVoQWdzZ0FndDhBUUYvSXdCQklHc2lCQ1FBQWtBQ1FDQUNRWDlxSUFGUERRQURRQ0FCSUFKR0RRSWdCRUVBT2dBWUlBUkJBRFlDRUNBRVxcXG5JQUkyQWhRZ0JFRUlhaUFFUVJCcUlBQWdBUkQ5QkNBRUtBSUlJQVFvQWd3Z0JCREpBeUFDUVFGcUlRSU1BQXNMUWRDYndRQkJMa0dBbk1cXFxuRUFFSU1IQUFzZ0JFRWdhaVFBQzM0QkFuOGpBRUVnYXlJQ0pBQWdBa0VRYWlBQlFSQnFLQUlBTmdJQUlBSkJDR29nQVVFSWFpa0NBRGNEXFxcbkFDQUNJQUVwQWdBM0F3QWdBQ0FCS0FJWUlnTWdBU2dDRkNJQmF4Q3BDaUFDSUFNMkFoZ2dBaUFCTmdJVUFrQURRQ0FDRUlJRUlnRkJnSVxcXG5ERUFFWU5BU0FBSUFFUTRBUU1BQXNMSUFKQklHb2tBQXQzQVFGL0l3QkJnQUpySWdJa0FDQUNRUWhxSUFGQjFBQVFwQTBhSUFKQjRBQnFcXFxuUVFocUlBRkJDR29vQWdBMkFnQWdBaUFCS1FJQU53TmdJQUpCOEFCcUlBSkJGR3BCeUFBUXBBMGFJQUpCdUFGcUlBQW9BZ0FnQWtIZ0FHXFxcbm9nQWtId0FHb1E4QU1nQWtHNEFXb1E3QW9nQWtHQUFtb2tBQXQ0QVFGL0l3QkJNR3NpQXlRQUlBTWdBallDQkNBRElBRTJBZ0FnQTBFSVxcXG5ha0VNYWtJQ053SUFJQU5CSUdwQkRHcEJCVFlDQUNBRFFRSTJBZ3dnQTBIc2tNQUFOZ0lJSUFOQkJqWUNKQ0FESUFBMkFpQWdBeUFEUVNcXFxuQnFOZ0lRSUFNZ0F6WUNLQ0FEUVFocUVOWURJUUlnQTBFd2FpUUFJQUlMbmdFQ0FYOENmaU1BUWNBQWF5SUNKQUFnQWtFNGFrSUFOd01BXFxcbklBSkNBRGNETUNBQ0lBQXBBd2dpQXpjREtDQUNJQUFwQXdBaUJEY0RJQ0FDSUFOQzg4clJ5NmVNMmJMMEFJVTNBeGdnQWlBRFF1M2VrZlxcXG5PV3pOeTM1QUNGTndNUUlBSWdCRUxoNUpYejF1elp2T3dBaFRjRENDQUNJQVJDOWNyTmc5ZXMyN2Z6QUlVM0F3QWdBU0FDRU9zTElBSVFcXFxuM3dFaEF5QUNRY0FBYWlRQUlBT25DM3dDQTM4QmZpQUFLQUlRSVFFZ0FDZ0NDQ0VDSUFBcEF3QWhCQU4vQWtBZ0JGQU5BQ0FBSUFSQ2YzXFxcbndnQklNM0F3QWdBU0FFZXFkQkEzWkJySDlzYWc4TElBQWdBVUhnZW1vaUFUWUNFQ0FBSUFKQkNHb2lBellDQ0NBQUlBSXBBd0JDZjRWQ1xcXG5nSUdDaElpUW9NQ0FmNE1pQkRjREFDQURJUUlNQUFzTGV3SURmd0YrSUFBb0FoQWhBU0FBS0FJSUlRSWdBQ2tEQUNFRUEzOENRQ0FFVUFcXFxuMEFJQUFnQkVKL2ZDQUVnemNEQUNBQklBUjZwMEVEZGtGb2JHb1BDeUFBSUFGQndINXFJZ0UyQWhBZ0FDQUNRUWhxSWdNMkFnZ2dBQ0FDXFxcbktRTUFRbitGUW9DQmdvU0lrS0RBZ0grRElnUTNBd0FnQXlFQ0RBQUxDM2tCQVg4akFFR2dBV3NpQkNRQUFrQWdBQ2dDWUVVTkFDQUVRY1xcXG5nQWFpQUNFS3NFSUFSQjJBQnFJQUVRbEFVZ0JDQUFRZUFBYWlBRVFjZ0FhaUFFUWRnQWFoRHdBeUFFRU93S0N5QUVRZGdBYWlBQlFjZ0FcXFxuRUtRTkdpQUVJQUJCTUdvZ0JFSFlBR29nQXhEQUNDQUVFTlFMSUFSQm9BRnFKQUFMZVFFQmZ5TUFRVEJySWdNa0FDQURJQUkyQWdRZ0F5XFxcbkFCTmdJQUlBTkJDR3BCREdwQ0FqY0NBQ0FEUVNCcVFReHFRWjBCTmdJQUlBTkJBallDRENBRFFlaXN3QUEyQWdnZ0EwRUdOZ0lrSUFNZ1xcXG5BRFlDSUNBRElBTkJJR28yQWhBZ0F5QUROZ0lvSUFOQkNHb1F2UVloQWlBRFFUQnFKQUFnQWd1QkFRRUVmd0pBQTBBUXN3c2hBaUFCS0FcXFxuSUFJZ05CdWZQZDhYbHNRUUFnQWlnQ0NHdDJJZ1FnQWlnQ0JDSUZUdzBCSUFJb0FnQWdCRUVHZEdvaUJCQ1ZDZ0pBQWtBZ0FrRUFLQUtBXFxcbnAwOUhEUUFnQVNnQ0FDQURSZzBCQ3lBRUVNUUpEQUVMQ3lBQUlBUTJBZ1FnQUNBRE5nSUFEd3NnQkNBRlFhamN3QUFRZ1FVQUMzWUJCWFxcXG44akFFRVFheUlDSkFBRFFDQUNRUWhxSUFFUXJRTUNRQUpBSUFJb0FnZ2lBMFVOQUNBQ0tBSU1JUVFnQUNnQ0NDSUZJQUFvQWdSSERRRWdcXFxuQUVFQkVLUUtEQUVMSUFKQkVHb2tBQThMSUFBb0FnQWdCVUVEZEdvaUJpQUVOZ0lFSUFZZ0F6WUNBQ0FBSUFWQkFXbzJBZ2dNQUFzTGN3XFxcbkVFZndKQUlBQW9BZ3dpQVNBQUtBSVFJZ0pMRFFBZ0FDZ0NDQ0lES0FJSUlnQWdBa2tOQUNBRElBRTJBZ2dnQUNBQ2F5RUVBa0FDUUNBQ1xcXG5JQUZIRFFBZ0FDQUNSdzBCREFJTElBQWdBa1lOQVNBREtBSUFJZ0FnQVdvZ0FDQUNhaUFFRUtNTkdnc2dBeUFFSUFGcU5nSUlDd3R1QVFcXFxuTi9Jd0JCd0FCcklnSWtBQ0FCS0FJRUlRTWdBU2dDQUNFRUlBSkJDR3BCQ0dvZ0FVRUlha0VzRUtRTkdpQUFJQU1nQkdzaUFVRUJha0VCXFxcbmRpQUJJQUFvQWd3YklBQkJFR29RcndnZ0FpQUROZ0lNSUFJZ0JEWUNDQ0FDUVFocUlBQVFoZ1VnQWtIQUFHb2tBQXVkQVFJQmZ3SitJd1xcXG5CQndBQnJJZ0lrQUNBQ1FUaHFRZ0EzQXdBZ0FrSUFOd013SUFJZ0FDa0RDQ0lETndNb0lBSWdBQ2tEQUNJRU53TWdJQUlnQTBMenl0SExcXFxucDR6WnN2UUFoVGNER0NBQ0lBTkM3ZDZSODViTTNMZmtBSVUzQXhBZ0FpQUVRdUhrbGZQVzdObTg3QUNGTndNSUlBSWdCRUwxeXMyRDE2XFxcbnpidC9NQWhUY0RBQ0FCSUFJUTZ3c2dBaERmQVNFRElBSkJ3QUJxSkFBZ0F3dWRBUUlCZndKK0l3QkJ3QUJySWdJa0FDQUNRVGhxUWdBM1xcXG5Bd0FnQWtJQU53TXdJQUlnQUNrRENDSUROd01vSUFJZ0FDa0RBQ0lFTndNZ0lBSWdBMEx6eXRITHA0elpzdlFBaFRjREdDQUNJQU5DN2RcXFxuNlI4NWJNM0xma0FJVTNBeEFnQWlBRVF1SGtsZlBXN05tODdBQ0ZOd01JSUFJZ0JFTDF5czJEMTZ6YnQvTUFoVGNEQUNBQklBSVE3QXNnXFxcbkFoRGZBU0VESUFKQndBQnFKQUFnQXd0eUFRSi9Jd0JCSUdzaUFpUUFBa0FDUUNBQktBSUFEUUJCQUNFQkRBRUxRUUFnQVVFSWFpZ0NBQ1xcXG5JRElBRW9BZ1JySWdFZ0FTQURTeHNoQVFzZ0FrRVlhaUFCTmdJQUlBSkJBVFlDRkNBQ0lBRTJBaEFnQWtFSWFpQUNRUkJxRU1rSUlBQWdcXFxuQWlrRENEY0RBQ0FDUVNCcUpBQUxlZ0lCZndGK0l3QkJJR3NpQXlRQUlBTkJDR29nQXlBQ0VNNEtJZ0lvQWdBZ0FpZ0NDQkN3QWdKQUFrXFxcbkFnQXlnQ0NBMEFJQU1wQWd3aEJDQUFRUXhxSUFOQkNHcEJER29vQWdBMkFnQWdBQ0FFTndJRUlBQkJBRFlDQUF3QkN5QURJQU1wQWd3M1xcXG5BeGdnQUNBRFFSaHFFSjBJQ3lBRFFTQnFKQUFMZUFFQmZ5TUFRYkFCYXlJQkpBQWdBVUVJYWlBQUVJOEdJQUZCb0FGcUVPTU1JQUZCa0FcXFxuRnFFT01NSUFGQkVHb1E1UXNDUUNBQlFmQUFhaUlBS0FJQVJRMEFJQUFRaHdzTElBRW9BcXdCSWdBZ0FDZ0NBQ0lBUVg5cU5nSUFBa0FnXFxcbkFFRUJSdzBBSUFGQnJBRnFFTmdJQ3lBQlFiQUJhaVFBQzNnQkEzOGpBRUVRYXlJQ0pBQWdBU2dDQUNFRElBRkJBRFlDQUFKQUFrQWdBMFxcXG5VTkFDQUJLQUlFSVFRZ0FrRUlha0VFUVFoQkFCQ1JDQ0FDS0FJSUlnRkZEUUVnQVNBRU5nSUVJQUVnQXpZQ0FDQUFRWkNmd1FBMkFnUWdcXFxuQUNBQk5nSUFJQUpCRUdva0FBOExFSWNPQUF0QkJFRUlFSm9OQUF1U0FRRURmMEdBZ01RQUlRRUNRQUpBQWtBQ1FBSkFJQUFvQWdnaUFrXFxcbkdCZ0x4L2FrRUFJQUpCZ0lDOGYycEJBMGtiRGdRQUFRSUVBQXNnQUNnQ0JDRURJQUFnQWpZQ0JDQUFLQUlBSVFFZ0FDQUROZ0lBUVlDQVxcXG54QUFoQWd3Q0N5QUFLQUlBSVFFZ0FDQUFLQUlFTmdJQVFZR0F4QUFoQWd3QkN5QUFLQUlBSVFGQmdvREVBQ0VDQ3lBQUlBSTJBZ2dMSUFcXFxuRUxiUUVCZnlNQVFSQnJJZ01rQUNBRFFRaHFJQUFnQVNBQ0VOZ0ZRUUFoQWdKQUFrQWdBeWdDQ0VFQlJ3MEFJQU1vQWd3aUFpQUFRU2hxXFxcbktBSUFJZ0ZQRFFFZ0FFRWdhaWdDQUNBQ1FSeHNha0VNYWlFQ0N5QURRUkJxSkFBZ0FnOExJQUlnQVVHMG5NQUFFSUVGQUF0MEFRRi9Jd1xcXG5CQndBQnJJZ0lrQUNBQ0lBRTJBZ3dnQWtFc2FrSUJOd0lBSUFKQkFUWUNKQ0FDUWFTcXdBQTJBaUFnQWtFS05nSThJQUlnQWtFNGFqWUNcXFxuS0NBQ0lBSkJER28yQWpnZ0FrRVFhaUFDUVNCcUVJOEVJQUJCSnlBQ1FSQnFFSnNKSUFKQkRHb1FoQXNnQWtIQUFHb2tBQXQ3QVFSL0l3XFxcbkJCRUdzaUFpUUFRUUFoQXdKQUFrQUNRQ0FCS0FJb0lnUU9BZ0lCQUFzZ0FTQUVRWDlxTmdJb0lBSWdBUkNyQVNBQ0tBSUVJUVVnQWlnQ1xcXG5BQ0VEREFFTElBRkJBRFlDS0NBQ1FRaHFJQUVRaEFZZ0FpZ0NEQ0VGSUFJb0FnZ2hBd3NnQUNBRk5nSUVJQUFnQXpZQ0FDQUNRUkJxSkFcXFxuQUxkd0VEZnlNQVFSQnJJZ1FrQUFKQUlBRW9BZ1FpQlVGL1JnMEFJQVZCQVdvaUJpRUZBa0FnQVMwQUNFRUJjUTBBSUFFb0FnQWhCUXNnXFxcbkJFRUlhaUFGSUFZZ0FpQURRWkNjd1FBUTdnWWdCQ2dDRENFQklBQWdCQ2dDQ0RZQ0FDQUFJQUUyQWdRZ0JFRVFhaVFBRHd0QmtKekJBQlxcXG5DWkNBQUxkZ0VCZnlNQVFUQnJJZ0lrQUNBQ0lBRTJBZ1FnQWlBQU5nSUFJQUpCQ0dwQkRHcENBamNDQUNBQ1FTQnFRUXhxUVFnMkFnQWdcXFxuQWtFRE5nSU1JQUpCK1AzTkFEWUNDQ0FDUVFnMkFpUWdBaUFDUVNCcU5nSVFJQUlnQWtFRWFqWUNLQ0FDSUFJMkFpQWdBa0VJYWtHcy9zXFxcbjBBRUpnSUFBdHpBUUYvSXdCQk1Hc2lBeVFBSUFNZ0FUWUNCQ0FESUFBMkFnQWdBMEVJYWtFTWFrSUNOd0lBSUFOQklHcEJER3BCQ0RZQ1xcXG5BQ0FEUVFNMkFnd2dBMEhvL3MwQU5nSUlJQU5CQ0RZQ0pDQURJQU5CSUdvMkFoQWdBeUFEUVFScU5nSW9JQU1nQXpZQ0lDQURRUWhxSUFcXFxuSVFtQWdBQzNZQkFYOGpBRUV3YXlJQ0pBQWdBaUFCTmdJRUlBSWdBRFlDQUNBQ1FRaHFRUXhxUWdJM0FnQWdBa0VnYWtFTWFrRUlOZ0lBXFxcbklBSkJBellDRENBQ1Faai96UUEyQWdnZ0FrRUlOZ0lrSUFJZ0FrRWdhallDRUNBQ0lBSkJCR28yQWlnZ0FpQUNOZ0lnSUFKQkNHcEJzUFxcXG4vTkFCQ1lDQUFMY3dFQmZ5TUFRVEJySWdNa0FDQURJQUUyQWdRZ0F5QUFOZ0lBSUFOQkNHcEJER3BDQWpjQ0FDQURRU0JxUVF4cVFRZzJcXFxuQWdBZ0EwRUNOZ0lNSUFOQjBKek9BRFlDQ0NBRFFRZzJBaVFnQXlBRFFTQnFOZ0lRSUFNZ0F6WUNLQ0FESUFOQkJHbzJBaUFnQTBFSWFpXFxcbkFDRUpnSUFBdHpBUUYvSXdCQk1Hc2lBeVFBSUFNZ0FEWUNBQ0FESUFFMkFnUWdBMEVJYWtFTWFrSUNOd0lBSUFOQklHcEJER3BCQ0RZQ1xcXG5BQ0FEUVFJMkFnd2dBMEhnb3M0QU5nSUlJQU5CQ0RZQ0pDQURJQU5CSUdvMkFoQWdBeUFEUVFScU5nSW9JQU1nQXpZQ0lDQURRUWhxSUFcXFxuSVFtQWdBQzNNQkFYOGpBRUV3YXlJREpBQWdBeUFBTmdJQUlBTWdBVFlDQkNBRFFRaHFRUXhxUWdJM0FnQWdBMEVnYWtFTWFrRUlOZ0lBXFxcbklBTkJBallDRENBRFFZQ2p6Z0EyQWdnZ0EwRUlOZ0lrSUFNZ0EwRWdhallDRUNBRElBTkJCR28yQWlnZ0F5QUROZ0lnSUFOQkNHb2dBaFxcXG5DWUNBQUxjd0VCZnlNQVFUQnJJZ01rQUNBRElBQTJBZ0FnQXlBQk5nSUVJQU5CQ0dwQkRHcENBamNDQUNBRFFTQnFRUXhxUVFnMkFnQWdcXFxuQTBFQ05nSU1JQU5CdEtQT0FEWUNDQ0FEUVFnMkFpUWdBeUFEUVNCcU5nSVFJQU1nQTBFRWFqWUNLQ0FESUFNMkFpQWdBMEVJYWlBQ0VKXFxcbmdJQUF0ekFRRi9Jd0JCTUdzaUF5UUFJQU1nQVRZQ0JDQURJQUEyQWdBZ0EwRUlha0VNYWtJQ053SUFJQU5CSUdwQkRHcEJDRFlDQUNBRFxcXG5RUU0yQWd3Z0EwRzRwTTRBTmdJSUlBTkJDRFlDSkNBRElBTkJJR28yQWhBZ0F5QUROZ0lvSUFNZ0EwRUVhallDSUNBRFFRaHFJQUlRbUFcXFxuZ0FDMmdCQW44akFFSEFBR3NpQWlRQUlBSkJDR29nQUVFMEVLUU5HaUFDS0FJTUlBSW9BZ2dpQTJzaEFDQURRUUowSUFKQkNHcHFRUWhxXFxcbklRTUNRQU5BSUFCRkRRRWdBU0FES0FJQUVKY0dHaUFBUVg5cUlRQWdBMEVFYWlFRERBQUxDeUFDUWNBQWFpUUFDMnNCQW44akFFRVFheVxcXG5JQ0pBQWdBa0VJYWlBQUlBRVE3d1ZCQUNFQkFrQUNRQ0FDS0FJSVFRRkhEUUFnQWlnQ0RDSUJJQUJCS0dvb0FnQWlBMDhOQVNBQVFTQnFcXFxuS0FJQUlBRkJIR3hxUVF4cUlRRUxJQUpCRUdva0FDQUJEd3NnQVNBRFFiU2N3QUFRZ1FVQUMzb0JBWDhqQUVIQUFHc2lBaVFBSUFKQkFEXFxcbllDQ0NBQ1FnRTNBd0FnQWtFUWFpQUNRWUNKd0FBUXl3Z0NRQ0FCUVJScUlBSkJFR29RNXdzTkFDQUFJQUlwQXdBM0FnQWdBRUVJYWlBQ1xcXG5RUWhxS0FJQU5nSUFJQUpCd0FCcUpBQVBDMEdZaWNBQVFUY2dBa0U0YWtIUWljQUFRYXlLd0FBUXdnUUFDM1lCQVg4akFFRVFheUlDSkFcXFxuQWdBaUFCS0FJQUlBRW9BZ2dRWWdKQUFrQWdBaWdDQUEwQUlBQkJBam9BRUNBQUlBRXBBZ0EzQWdBZ0FFRUlhaUFCUVFocUtBSUFOZ0lBXFxcbkRBRUxJQUFnQWlrQ0JEY0NEQ0FBSUFFcEFnQTNBZ0FnQUVFSWFpQUJRUWhxS0FJQU5nSUFDeUFDUVJCcUpBQUxaZ0VGZmlBQUlBQXBBeFxcXG5naUFVSVFpU0FCSUFBcEF3aDhJZ0dGSWdJZ0FDa0RFQ0lESUFBcEF3QjhJZ1JDSUlsOElnVTNBd0FnQUNBQ1FoV0pJQVdGTndNWUlBQWdcXFxuQVNBRFFnMkpJQVNGSWdKOElnRWdBa0lSaVlVM0F4QWdBQ0FCUWlDSk53TUlDM29CQW44akFFRVFheUlESkFBZ0FTQUJLQUlJUVg5cUlnXFxcblEyQWdnQ1FBSkFJQUV0QUF4RkRRQWdBaWdDQUVIY21jQUFRUUVRaUF3Z0EwRUlhaUFDSUFRZ0FTZ0NBQ0FCS0FJRUVKa0pJQU10QUFoQlxcXG5CRVlOQUNBQUlBTXBBd2czQWdBTUFRc2dBQ0FDUWQyWndBQkJBUkNnQ3dzZ0EwRVFhaVFBQzIwQkFuOGpBRUVRYXlJQ0pBQWdBa0VJYWlcXFxuQUFJQUVRN2dWQkFDRUJBa0FDUUNBQ0tBSUlRUUZIRFFBZ0FpZ0NEQ0lCSUFCQktHb29BZ0FpQTA4TkFTQUFRU0JxS0FJQUlBRkIyQUJzXFxcbmFrSElBR29oQVFzZ0FrRVFhaVFBSUFFUEN5QUJJQU5CdEp6QUFCQ0JCUUFMYkFFQ2Z5TUFRUkJySWdJa0FDQUNRUWhxSUFBZ0FSRHdCVVxcXG5FQUlRRUNRQUpBSUFJb0FnaEJBVWNOQUNBQ0tBSU1JZ0VnQUVFb2FpZ0NBQ0lEVHcwQklBQkJJR29vQWdBZ0FVRUhkR3BCeUFCcUlRRUxcXFxuSUFKQkVHb2tBQ0FCRHdzZ0FTQURRYlNjd0FBUWdRVUFDMjRCQVg4akFFRWdheUlFSkFBZ0JDQUROZ0lVSUFRZ0FqWUNFQ0FFSUFBMkFoXFxcbndnQkNBRVFSQnFOZ0lZSUFSQkNHb2dBQ0FCSUFSQkdHcEJvSi9BQUJEK0FpQUVLQUlNSVFNZ0JDZ0NDQ0VDSUFBb0FnQWhBQ0FFUVNCcVxcXG5KQUFnQUVFQUlBTnJRUmhzYWtFQUlBSWJDMllCQlg0Z0FDQUFLUU1ZSWdGQ0VJa2dBU0FBS1FNSWZDSUJoU0lDSUFBcEF4QWlBeUFBS1FcXFxuTUFmQ0lFUWlDSmZDSUZOd01BSUFBZ0FrSVZpU0FGaFRjREdDQUFJQUVnQTBJTmlTQUVoU0lDZkNJQklBSkNFWW1GTndNUUlBQWdBVUlnXFxcbmlUY0RDQXR3QVFSL0l3QkJFR3NpQWlRQUlBRW9BZ0FoQXdKQUEwQWdBa0VJYWlBREVPOEhJQUl0QUFraEFRSkFJQUl0QUFoQkFYRU5BRVxcXG5FQUlRUU1BZ3RCQVNFRUlBRkIvd0Z4SWdWQkRVc05BVUVCSUFWMFFZRE1BSEVOQUFzTElBQWdCRG9BQUNBQUlBRTZBQUVnQWtFUWFpUUFcXFxuQzJvQUFrQWdBVVVOQUNBQVFid0ZRUUlnQWh0dUlnSWdBVzRnQW1vaEFVRUFJUUlDUUFOQUlBRkJ5QU5KRFFFZ0FrRWthaUVDSUFGQkkyXFxcbjRoQVF3QUN3c2dBaUFCUVNSc1Fmei9BM0VnQVVFbWFrSC8vd054Ym1vUEMwR3dsOEVBUVJsQjlKL0JBQkNEQndBTGZBRUVmeUFBSUFBUVxcXG4wQTBpQWtFSUVKd0xJQUpySWdJUXpnMGhBRUVBSUFFZ0Ftc2lBVFlDaEt0UFFRQWdBRFlDakt0UElBQWdBVUVCY2pZQ0JCQ0tEaUlDUVFcXFxuZ1FuQXNoQTBFVVFRZ1FuQXNoQkVFUVFRZ1FuQXNoQlNBQUlBRVF6ZzBnQlNBRUlBTWdBbXRxYWpZQ0JFRUFRWUNBZ0FFMkFwaXJUd3QyXFxcbkFRUi9Jd0JCSUdzaUFpUUFRUUVoQXdKQUlBQWdBUkRzQVEwQUlBRkJHR29vQWdBaEJDQUJLQUlVSVFVZ0FrSUFOd0lVSUFKQi9QL05BRFxcXG5ZQ0VFRUJJUU1nQWtFQk5nSU1JQUpCMUpuT0FEWUNDQ0FGSUFRZ0FrRUlhaEJ0RFFBZ0FFRUVhaUFCRU93QklRTUxJQUpCSUdva0FDQURcXFxuQzNjQUlBQkJGR29nQVVFVWFoQ2ZCU0FBSUFFcEFqUTNBalFnQUVFOGFpQUJRVHhxS1FJQU53SUFJQUJCeEFCcUlBRkJ4QUJxTFFBQU9nXFxcbkFBSUFBZ0FTa0NLRGNDS0NBQUlBRXBBaUEzQWlBZ0FDQUJLQUl3TmdJd0lBQWdBU2dDRURZQ0VDQUFJQUVwQWdnM0FnZ2dBQ0FCS1FJQVxcXG5Od0lBQzNvQ0FuOEJmaU1BUVNCcklnTWtBQUpBSUFFZ0FrR0FsT3ZjQTI0aUJLMThJZ1VnQVZvTkFDQURRUlJxUWdBM0FnQWdBMEVCTmdcXFxuSU1JQU5CNklyQUFEWUNDQ0FEUWVDQ3dBQTJBaEFnQTBFSWFrRzRpOEFBRUpnSUFBc2dBQ0FGTndNQUlBQWdBaUFFUVlDVTY5d0RiR3MyXFxcbkFnZ2dBMEVnYWlRQUMzTUNBbjhDZmlNQVFSQnJJZ0lrQUFKQUFrQWdBVVVOQUNBQktBSUFJUU1nQVVJQU53TUFJQU5CQVVjTkFDQUJLUVxcXG5NUUlRUWdBU2tEQ0NFRkRBRUxJQUlRb3d3Z0Fpa0RDQ0VFSUFJcEF3QWhCUXNnQUNBRU53TVFJQUFnQlRjRENDQUFRZ0UzQXdBZ0FrRVFcXFxuYWlRQUlBQkJDR29MZndNQmZ3RitBWHdqQUVFUWF5SURKQUFDUUFKQUFrQUNRQ0FBS0FJQURnTUFBUUlBQ3lBQUt3TUlJUVVnQTBFRE9nXFxcbkFBSUFNZ0JUa0RDQXdDQ3lBQUtRTUlJUVFnQTBFQk9nQUFJQU1nQkRjRENBd0JDeUFBS1FNSUlRUWdBMEVDT2dBQUlBTWdCRGNEQ0FzZ1xcXG5BeUFCSUFJUW1BTWhBQ0FEUVJCcUpBQWdBQXR1QVFGL0l3QkJJR3NpQkNRQUlBUWdBeUFCSUFJUTB3VWdBRUVCT3dFa0lBQWdBallDSUNcXFxuQUFRUUEyQWh3Z0FFRVlhaUFFUVJocUtBSUFOZ0lBSUFCQkVHb2dCRUVRYWlrREFEY0NBQ0FBUVFocUlBUkJDR29wQXdBM0FnQWdBQ0FFXFxcbktRTUFOd0lBSUFSQklHb2tBQXR1QVFGL0l3QkJJR3NpQXlRQUlBTkJMaUFCSUFJUTFRVWdBRUVCT3dFa0lBQWdBallDSUNBQVFRQTJBaFxcXG53Z0FFRVlhaUFEUVJocUtBSUFOZ0lBSUFCQkVHb2dBMEVRYWlrREFEY0NBQ0FBUVFocUlBTkJDR29wQXdBM0FnQWdBQ0FES1FNQU53SUFcXFxuSUFOQklHb2tBQXR0QVFGL0l3QkJFR3NpQWlRQUlBSWdBRFlDQ0NBQ0lBQWdBV28yQWd3Q1FBTkFJQUpCQ0dvUWhRTWlBRUdBZ01RQVJnXFxcbjBCSUFCQlgycEIzZ0JKRFFBZ0FCRGREVUgvQVhFaUFVRVJTdzBBUVFFZ0FYUkJnNEFJY1VVTkFBc0xJQUpCRUdva0FDQUFRWUNBeEFCSFxcXG5DMjBCQTM4akFFRVFheUlDSkFBQ1FBSkFJQUVvQWdBaUF5QUJLQUlFUnlJRURRQU1BUXNnQVNBRFFRRnFOZ0lBSUFNdEFBQWlBMEVsUndcXFxuMEFJQUpCQ0dvZ0FSRHRBeUFDTFFBSlFTVWdBaTBBQ0VFQmNSc2hBd3NnQUNBRE9nQUJJQUFnQkRvQUFDQUNRUkJxSkFBTGR3RUJmeU1BXFxcblFjQUFheUlDSkFBZ0FrRUFOZ0lJSUFKQ0FUY0RBQ0FDUVJCcUlBSkJnSW5BQUJETENBSkFJQUVnQWtFUWFoQ0hEQTBBSUFBZ0Fpa0RBRFxcXG5jQ0FDQUFRUWhxSUFKQkNHb29BZ0EyQWdBZ0FrSEFBR29rQUE4TFFaaUp3QUJCTnlBQ1FUaHFRZENKd0FCQnJJckFBQkRDQkFBTGFnRUJcXFxuZnlNQVFSQnJJZ1FrQUNBRUlBSWdBeERXQlNBQktBSUlRUXhzSVFNZ0FTZ0NBQ0VCQTBBQ1FDQUREUUFnQUNBRUtRTUFOd0lBSUFCQkNHXFxcbm9nQkVFSWFpZ0NBRFlDQUNBRVFSQnFKQUFQQ3lBRFFYUnFJUU1nQkNBQkVPWUxJQUZCREdvaEFRd0FDd3R0QVFGL0l3QkJJR3NpQWlRQVxcXG5JQUVRMFFzZ0FrRUlhaUFCRUx3SklBSW9BZ3hCQURZQ0FDQUNRUkJxUVFocUlBRkJDR29wQWdBM0F3QWdBaUFCS1FJQU53TVFJQUFnQWlcXFxua0NGRGNDQUNBQVFRaHFJQUpCSEdvb0FnQTJBZ0FnQVVFUVFRUVFzZ3dnQWtFZ2FpUUFDM0VCQW44Z0FTZ0NBQ0VDQWtBQ1FBSkFBa0FnXFxcbkFVRUlhaWdDQUNJQkRRQkJBU0VEREFFTElBRkJmMHdOQVVFQUxRRHhwazhhSUFGQkFSRDNDeUlEUlEwQ0N5QURJQUlnQVJDa0RTRUNJQVxcXG5BZ0FUWUNDQ0FBSUFFMkFnUWdBQ0FDTmdJQUR3c1Fsd2dBQzBFQklBRVFtZzBBQzJNQkFYOENRQ0FCS0FJSUlnUWdBazBOQUNBQUlBRW9cXFxuQWdBZ0FrRU1iR29pQXlrQ0FEY0NBQ0FBUVFocUlBTkJDR29vQWdBMkFnQWdBeUFEUVF4cUlBUWdBa0YvYzJwQkRHd1FvdzBhSUFFZ0JFXFxcbkYvYWpZQ0NBOExJQUlnQkNBREVQOEVBQXRzQVFKL0l3QkJFR3NpQkNRQUlBRW9BaEFoQlNBRUlBRkJHR29vQWdBMkFnZ2dCQ0FGTmdJRVxcXG5JQVFnQXpZQ0FBSkFBa0FnQVNBQ3JTQUVFTVFDSWdFTkFFRUFJUUVNQVFzZ0FVRjhhaWdDQUNFRFFRRWhBUXNnQUNBRE5nSUVJQUFnQVRcXFxuWUNBQ0FFUVJCcUpBQUxiUUVEZnlNQVFSQnJJZ0lrQUNBQVFSQnFJUU1DUUFKQUlBQW9BZ2dnQUNnQ0RHb2lCRUgvLy84SElBUkIvLy8vXFxcbkIwa2JJQUJCR0dvb0FnQnJJZ0FnQVUwTkFDQUNRUWhxSUFNZ0FCQytCeUFDS0FJSVFZR0FnSUI0UmcwQkN5QURJQUVRMVFnTElBSkJFR1xcXG5va0FBdHRBUU4vSXdCQkVHc2lBaVFBSUFCQkVHb2hBd0pBQWtBZ0FDZ0NDQ0FBS0FJTWFpSUVRWmU2MFFzZ0JFR1h1dEVMU1JzZ0FFRVlcXFxuYWlnQ0FHc2lBQ0FCVFEwQUlBSkJDR29nQXlBQUVMOEhJQUlvQWdoQmdZQ0FnSGhHRFFFTElBTWdBUkRYQ0FzZ0FrRVFhaVFBQzIwQkEzXFxcbjhqQUVFUWF5SUNKQUFnQUVFUWFpRURBa0FDUUNBQUtBSUlJQUFvQWd4cUlnUkJwSkxKSkNBRVFhU1N5U1JKR3lBQVFSaHFLQUlBYXlJQVxcXG5JQUZORFFBZ0FrRUlhaUFESUFBUXdBY2dBaWdDQ0VHQmdJQ0FlRVlOQVFzZ0F5QUJFTllJQ3lBQ1FSQnFKQUFMYUFFQ2Z5TUFRU0JySWdcXFxuTWtBQ0FESUFJMkFoUWdBeUFBTmdJY0lBTWdBMEVVYWpZQ0dDQURRUWhxSUFBZ0FTQURRUmhxUWJTZndBQVEvZ0lnQXlnQ0RDRUNJQU1vXFxcbkFnZ2hCQ0FBS0FJQUlRQWdBMEVnYWlRQUlBQkJBQ0FDYTBIVUFHeHFRUUFnQkJzTGFnRUNmeUFBS0FJQUlBQWdBUkM1QkNJRmFpMEFBQ1xcXG5FR0FrQWdBQ2dDQ0EwQUlBWkJBWEZGRFFBZ0FFRUJJQVFRc1FnZ0FDQUJFTGtFSVFVTElBQWdCU0FHSUFFUXJBWWdBQ2dDQUNBRlFRTjBcXFxuYXlJQVFYaHFJZ1VnQWpZQ0FDQUZRUVJxSUFNMkFnQWdBQXRvQVFKL0l3QkJNR3NpQXlRQUlBTkJBRFlDR0NBRElBRTJBaEFnQXlBQk5nXFxcbklJSUFNZ0FqWUNEQ0FESUFFZ0FtbzJBaFFnQTBFZ2FpQURRUWhxRU5nRElBQWdBaUFES0FJa0lBSWdBeWdDSUJzaUJHczJBZ1FnQUNBQlxcXG5JQVJxTmdJQUlBTkJNR29rQUF0cUFRTi9Jd0JCRUdzaUFpUUFBa0FEUUNBQ1FRaHFJQUVRMEFjQ1FDQUNMUUFJUVFGeERRQkJBQ0VEREFcXFxuSUxBa0FnQWkwQUNTSUVRZjhCY1NJRFFRMUxEUUJCQVNBRGRFR0F6QUJ4RFFFTEMwRUJJUU1MSUFBZ0JEb0FBU0FBSUFNNkFBQWdBa0VRXFxcbmFpUUFDMmNCQVg4akFFRWdheUlDSkFBZ0FDZ0NBQ0VBSUFKQkNHcEJFR29nQVVFUWFpa0NBRGNEQUNBQ1FRaHFRUWhxSUFGQkNHb3BBZ1xcXG5BM0F3QWdBaUFCS1FJQU53TUlJQUlnQURZQ0JDQUNRUVJxUWVEZ3pRQWdBa0VJYWhCdElRRWdBa0VnYWlRQUlBRUxad0VCZnlNQVFTQnJcXFxuSWdJa0FDQUFLQUlBSVFBZ0FrRUlha0VRYWlBQlFSQnFLUUlBTndNQUlBSkJDR3BCQ0dvZ0FVRUlhaWtDQURjREFDQUNJQUVwQWdBM0F3XFxcbmdnQWlBQU5nSUVJQUpCQkdwQnZQck5BQ0FDUVFocUVHMGhBU0FDUVNCcUpBQWdBUXRuQVFGL0l3QkJJR3NpQWlRQUlBQW9BZ0FoQUNBQ1xcXG5RUWhxUVJCcUlBRkJFR29wQWdBM0F3QWdBa0VJYWtFSWFpQUJRUWhxS1FJQU53TUFJQUlnQVNrQ0FEY0RDQ0FDSUFBMkFnUWdBa0VFYWtcXFxuSElvTTRBSUFKQkNHb1FiU0VCSUFKQklHb2tBQ0FCQzJjQkFYOGpBRUVnYXlJQ0pBQWdBQ2dDQUNFQUlBSkJDR3BCRUdvZ0FVRVFhaWtDXFxcbkFEY0RBQ0FDUVFocVFRaHFJQUZCQ0dvcEFnQTNBd0FnQWlBQktRSUFOd01JSUFJZ0FEWUNCQ0FDUVFScVFZeWF6Z0FnQWtFSWFoQnRJUVxcXG5FZ0FrRWdhaVFBSUFFTFpBRUNmeU1BUVNCcklnSWtBQ0FBUVJocUtBSUFJUU1nQUNnQ0ZDRUFJQUpCQ0dwQkVHb2dBVUVRYWlrQ0FEY0RcXFxuQUNBQ1FRaHFRUWhxSUFGQkNHb3BBZ0EzQXdBZ0FpQUJLUUlBTndNSUlBQWdBeUFDUVFocUVHMGhBU0FDUVNCcUpBQWdBUXRwQVFOL0l3XFxcbkJCMEFGcklnSWtBQ0FDUVFocUlBRkJ3QUVRcEEwYUlBQWdBU2dDeEFFaUF5QUJLQUxBQVNJQmF5SUVRUUZxUVFGMklBUWdBQ2dDREJzZ1xcXG5BRUVRYWhDeENDQUNJQU0yQXN3QklBSWdBVFlDeUFFZ0FrRUlhaUFBRU9JRUlBSkIwQUZxSkFBTGFBRUJmeU1BUVJCcklnTWtBQUpBSUFcXFxuQWdBUkMwQlNJQkRRQWdBMEVJYWlBQUtBSUFJZ0FRc1F3Z0EwRUlhaEM5QnlJQkRRQWdBaWdDQUNBQUVNUUVJZ0VOQUNBQVFSQnFRUUU2XFxcbkFBQWdBMEVFT2dBSUlBTkJDR29RdlFjaEFRc2dBMEVRYWlRQUlBRUxad0VCZnlNQVFSQnJJZ1FrQUFKQUlBQWdBU0FDRUxFRklnSU5BQ1xcXG5BRVFRaHFJQUFvQWdBaUFCQ3hEQ0FFUVFocUVMMEhJZ0lOQUNBQUlBTVFsd01pQWcwQUlBQkJFR3BCQVRvQUFDQUVRUVE2QUFnZ0JFRUlcXFxuYWhDOUJ5RUNDeUFFUVJCcUpBQWdBZ3RtQVFOL0l3QkJFR3NpQXlRQUlBTkJDR29nQUNnQ0FDSUVRUVJxSUFRZ0FDMEFCRUVCUmhDa0NRXFxcbkpBSUFOQkNHb1F2UWNpQlEwQUlBQkJBam9BQkNBRUlBRWdBaENBQ0NJRkRRQWdBMEVFT2dBSUlBTkJDR29RdlFjaEJRc2dBMEVRYWlRQVxcXG5JQVVMWndFQmZ5TUFRUkJySWdRa0FBSkFJQUFnQVNBQ0VMRUZJZ0lOQUNBRVFRaHFJQUFvQWdBaUFCQ3hEQ0FFUVFocUVMMEhJZ0lOQUNcXFxuQUFJQU1RbGdNaUFnMEFJQUJCRUdwQkFUb0FBQ0FFUVFRNkFBZ2dCRUVJYWhDOUJ5RUNDeUFFUVJCcUpBQWdBZ3RuQVFGL0l3QkJFR3NpXFxcbkJDUUFBa0FnQUNBQklBSVFzUVVpQWcwQUlBUkJDR29nQUNnQ0FDSUFFTEVNSUFSQkNHb1F2UWNpQWcwQUlBTWdBQkR2Q3lJQ0RRQWdBRVxcXG5FUWFrRUJPZ0FBSUFSQkJEb0FDQ0FFUVFocUVMMEhJUUlMSUFSQkVHb2tBQ0FDQzJjQkEzOGpBRUVRYXlJQ0pBQWdBa0VJYWlBQUtBSUFcXFxuSWdOQkJHb2dBeUFBTFFBRVFRRkdFS1FKQWtBZ0FrRUlhaEM5QnlJRURRQWdBRUVDT2dBRUlBRW9BZ0FnQXhDbUN5SUVEUUFnQWtFRU9nXFxcbkFJSUFKQkNHb1F2UWNoQkFzZ0FrRVFhaVFBSUFRTFp3RUJmeU1BUVJCcklnUWtBQUpBSUFBZ0FTQUNFTEVGSWdJTkFDQUVRUWhxSUFBb1xcXG5BZ0FpQUJDeERDQUVRUWhxRUwwSElnSU5BQ0FBSUFNUWxRTWlBZzBBSUFCQkVHcEJBVG9BQUNBRVFRUTZBQWdnQkVFSWFoQzlCeUVDQ3lcXFxuQUVRUkJxSkFBZ0FndG5BUUYvSXdCQkVHc2lCQ1FBQWtBZ0FDQUJJQUlRc1FVaUFnMEFJQVJCQ0dvZ0FDZ0NBQ0lBRUxFTUlBUkJDR29RXFxcbnZRY2lBZzBBSUFBZ0F4RGJBaUlDRFFBZ0FFRVFha0VCT2dBQUlBUkJCRG9BQ0NBRVFRaHFFTDBISVFJTElBUkJFR29rQUNBQ0MyNEJBWFxcXG44akFFRWdheUlDSkFBZ0FrRUlhaUFCRU5nR0FrQUNRQUpBSUFJdEFBZ05BQ0FDTFFBSkRRRWdBa0VFTmdJUUlBQWdBU0FDUVJCcUVNd0hcXFxuREFJTElBQWdBaWdDRERZQ0JDQUFRUUU2QUFBTUFRc2dBQ0FDTFFBS09nQUJJQUJCQURvQUFBc2dBa0VnYWlRQUMya0JBWDhqQUVFZ2F5XFxcbklGSkFBZ0JTQUNOZ0lFSUFVZ0FUWUNBQ0FGUVFocVFSQnFJQU5CRUdvcEFnQTNBd0FnQlVFSWFrRUlhaUFEUVFocUtRSUFOd01BSUFVZ1xcXG5BeWtDQURjRENDQUFJQVZCak9UQUFDQUZRUVJxUVl6a3dBQWdCVUVJYWlBRUVNRUJBQXRwQVFGL0l3QkJJR3NpQlNRQUlBVWdBallDQkNcXFxuQUZJQUUyQWdBZ0JVRUlha0VRYWlBRFFSQnFLUUlBTndNQUlBVkJDR3BCQ0dvZ0EwRUlhaWtDQURjREFDQUZJQU1wQWdBM0F3Z2dBQ0FGXFxcblFjeit3QUFnQlVFRWFrSE0vc0FBSUFWQkNHb2dCQkRCQVFBTGJBRUJmeU1BUVNCcklnTWtBQ0FESUFFMkFnUWdBeUFBTmdJQUlBTkJDR1xcXG5wQkVHb2dBa0VRYWlrQ0FEY0RBQ0FEUVFocVFRaHFJQUpCQ0dvcEFnQTNBd0FnQXlBQ0tRSUFOd01JUVFBZ0EwSGduTTRBSUFOQkJHcEJcXFxuNEp6T0FDQURRUWhxUWN5QXpnQVF3UUVBQzJrQkFYOGpBRUVRYXlJQ0pBQWdBVUVVYWtFQU5nSUFJQUVnQVNnQ0NFRUJhallDQ0NBQ0lBXFxcbkVnQVVFTWFoQ05BUUpBQWtBZ0FpZ0NBRUVDUmcwQUlBQWdBaWdDQkNBQ0tBSUlFSndHREFFTElBQWdBaWdDQkRZQ0JDQUFRUUU2QUFBTFxcXG5JQUpCRUdva0FBdHBBUUYvSXdCQkVHc2lBaVFBSUFGQkZHcEJBRFlDQUNBQklBRW9BZ2hCQVdvMkFnZ2dBaUFCSUFGQkRHb1FqUUVDUUFcXFxuSkFJQUlvQWdCQkFrWU5BQ0FBSUFJb0FnUWdBaWdDQ0JEWEJnd0JDeUFBSUFJb0FnUTJBZ1FnQUVFQU5nSUFDeUFDUVJCcUpBQUxaQUVDXFxcbmZ5TUFRU0JySWdNa0FDQURJQUkyQWhRZ0F5QUFOZ0ljSUFNZ0EwRVVhallDR0NBRFFRaHFJQUFnQVNBRFFSaHFRY2lmd0FBUS9nSWdBeVxcXG5nQ0RDRUNJQU1vQWdnaEJDQUFLQUlBSVFBZ0EwRWdhaVFBSUFBZ0FrRUNkR3RCQUNBRUd3dG5BUUovSUFBb0FnQWdBQ0FCRUxrRUlnUnFcXFxuTFFBQUlRVUNRQ0FBS0FJSURRQWdCVUVCY1VVTkFDQUFRUUVnQXhDd0NDQUFJQUVRdVFRaEJBc2dBQ0FFSUFVZ0FSQ3NCaUFBS0FJQVFRXFxcbkFnQkd0QjFBQnNhaUlBUWF4L2FpQUNRZFFBRUtRTkdpQUFDMmtCQVg4akFFRVFheUlDSkFBZ0FVRVVha0VBTmdJQUlBRWdBU2dDQ0VFQlxcXG5hallDQ0NBQ0lBRWdBVUVNYWhER0FRSkFBa0FnQWlnQ0FFRUNSZzBBSUFBZ0FpZ0NCQ0FDS0FJSUVOY0dEQUVMSUFBZ0FpZ0NCRFlDQkNcXFxuQUFRUUEyQWdBTElBSkJFR29rQUF0c0FRRi9Jd0JCTUdzaUFpUUFBa0JCQUMwQThLWlBSUTBBSUFKQkZHcENBVGNDQUNBQ1FRSTJBZ3dnXFxcbkFrRzg3YzBBTmdJSUlBSkJDRFlDSkNBQ0lBRTJBaXdnQWlBQ1FTQnFOZ0lRSUFJZ0FrRXNhallDSUNBQ1FRaHFRZVR0elFBUW1BZ0FDeVxcXG5BQ1FUQnFKQUFMWkFFQ2Z5TUFRUkJySWdJa0FFRUFJUU1DUUNBQktBSUlSUTBBSUFKQkNHb2dBVUVJYWhDbEJpQUNLQUlJUlEwQUlBSWdcXFxuQWlnQ0RCQytCaUFBSUFJcEF3QTNBZ1JCQVNFRElBRWdBU2dDRkVFQmFqWUNGQXNnQUNBRE5nSUFJQUpCRUdva0FBdGdBUUYvSXdCQklHXFxcbnNpQWlRQUlBSWdBRFlDQkNBQ1FRaHFRUkJxSUFGQkVHb3BBZ0EzQXdBZ0FrRUlha0VJYWlBQlFRaHFLUUlBTndNQUlBSWdBU2tDQURjRFxcXG5DQ0FDUVFScVFkU3V3QUFnQWtFSWFoQnRJUUVnQWtFZ2FpUUFJQUVMWUFFQmZ5TUFRU0JySWdJa0FDQUNJQUEyQWdRZ0FrRUlha0VRYWlcXFxuQUJRUkJxS1FJQU53TUFJQUpCQ0dwQkNHb2dBVUVJYWlrQ0FEY0RBQ0FDSUFFcEFnQTNBd2dnQWtFRWFrSG9zY0FBSUFKQkNHb1FiU0VCXFxcbklBSkJJR29rQUNBQkMyb0JBbjhqQUVFUWF5SUNKQUFnQWtFSWFpQUJFTDBFQWtBQ1FDQUNLQUlNSWdORkRRQWdBQ0FDS0FJSUlBTVFpZ1xcXG5nTUFRc2dBaUFCRUpZR0FrQWdBaWdDQUNJQlJRMEFJQUFnQVNBQ0tBSUVFSW9JREFFTElBQkI0T2ZBQUVFQUVJb0lDeUFDUVJCcUpBQUxcXFxuWXdFQmZ5TUFRVEJySWdNa0FDQURJQUUyQWhBZ0F5QUJOZ0lJSUFNZ0FqWUNEQ0FESUFFZ0FtbzJBaFFnQTBFQU5nSVlJQU5CSUdvZ0EwXFxcbkVJYWhEWEF5QUFJQU5CS0dvb0FnQkJBQ0FES0FJZ0d6WUNCQ0FBSUFFMkFnQWdBMEV3YWlRQUMyVUJBWDhqQUVFUWF5SUNKQUFnQWlBQVxcXG5OZ0lJSUFJZ0FDQUJhallDREFKQUEwQWdBa0VJYWhDcENDSUFRWUNBeEFCR0RRRWdBRUdBLy84QWNVR0FBVVlOQUNBQVFRbEdEUUFnQUVcXFxuRmdha0hmQUVrTkFBc0xJQUpCRUdva0FDQUFRWUNBeEFCR0MyQUJBWDhqQUVFZ2F5SUNKQUFnQWlBQU5nSUVJQUpCQ0dwQkVHb2dBVUVRXFxcbmFpa0NBRGNEQUNBQ1FRaHFRUWhxSUFGQkNHb3BBZ0EzQXdBZ0FpQUJLUUlBTndNSUlBSkJCR3BCcUlMQkFDQUNRUWhxRUcwaEFTQUNRU1xcXG5CcUpBQWdBUXRwQVFGL0l3QkJFR3NpQkNRQUFrQUNRQ0FDUVg5cUlBRlBEUUFEUUNBQklBSkdEUUlnQkVFSWFrRUFJQUpCQVdvaUFpQUFcXFxuSUFGQmtKekJBQkR2QmlBRUtBSUlJQVFvQWd3Z0FoRFVBd3dBQ3d0QjBKdkJBRUV1UVlDY3dRQVFnd2NBQ3lBRVFSQnFKQUFMWUFFQmZ5XFxcbk1BUVNCcklnSWtBQ0FDSUFBMkFnUWdBa0VJYWtFUWFpQUJRUkJxS1FJQU53TUFJQUpCQ0dwQkNHb2dBVUVJYWlrQ0FEY0RBQ0FDSUFFcFxcXG5BZ0EzQXdnZ0FrRUVha0c4M2MwQUlBSkJDR29RYlNFQklBSkJJR29rQUNBQkMyUUJBbjhqQUVFUWF5SUNKQUFnQUNnQ0NDRURJQUFvQWdcXFxuQWhBQ0FDSUFFUXJna0NRQ0FEUlEwQUEwQWdBaUFBTmdJTUlBSWdBa0VNYWtIVStzMEFFTjBNR2lBQVFRRnFJUUFnQTBGL2FpSUREUUFMXFxcbkN5QUNFS3dKSVFBZ0FrRVFhaVFBSUFBTFlBRUJmeU1BUVNCcklnSWtBQ0FDSUFBMkFnUWdBa0VJYWtFUWFpQUJRUkJxS1FJQU53TUFJQVxcXG5KQkNHcEJDR29nQVVFSWFpa0NBRGNEQUNBQ0lBRXBBZ0EzQXdnZ0FrRUVha0hJb000QUlBSkJDR29RYlNFQklBSkJJR29rQUNBQkMxOEJcXFxuQW44akFFRWdheUlESkFBZ0EwRUlhaUFDSUFGclFRQVEvd01nQTBFUWFrRUlhaUlFUVFBMkFnQWdBeUFES1FNSU53TVFJQU5CRUdvZ0FTXFxcbkFDRU5RR0lBQkJDR29nQkNnQ0FEWUNBQ0FBSUFNcEF4QTNBZ0FnQTBFZ2FpUUFDMlFCQVg4akFFRXdheUlDSkFBZ0FpQUJOZ0lNSUFJZ1xcXG5BRFlDQ0NBQ1FSeHFRZ0UzQWdBZ0FrRUNOZ0lVSUFKQmpKSEFBRFlDRUNBQ1FRRTJBaXdnQWlBQ1FTaHFOZ0lZSUFJZ0FrRUlhallDS0NcXFxuQUNRUkJxRU5ZRElRRWdBa0V3YWlRQUlBRUxaQUVCZnlNQVFUQnJJZ0lrQUNBQ0lBRTJBZ3dnQWlBQU5nSUlJQUpCSEdwQ0FUY0NBQ0FDXFxcblFRSTJBaFFnQWtHa2tzQUFOZ0lRSUFKQkFUWUNMQ0FDSUFKQktHbzJBaGdnQWlBQ1FRaHFOZ0lvSUFKQkVHb1ExZ01oQVNBQ1FUQnFKQVxcXG5BZ0FRdG1BUVIvSXdCQkVHc2lBaVFBSUFKQkNHb2dBU2dDSUNJRElBRW9BaFFpQkNBQlFSeHFLQUlBSWdVUXhRWUNRQ0FDS0FJSUlnRU5cXFxuQUNBRUlBVkJBQ0FEUWN5WndBQVE1QXNBQ3lBQ0tBSU1JUU1nQUNBQk5nSUFJQUFnQXpZQ0JDQUNRUkJxSkFBTFlRRUJmeU1BUVNCcklnXFxcbkVrQUFKQUlBQW9BZ0FOQUNBQlFReHFFS2dCSUFBUWtRc2dBRUVCTmdJQUlBQWdBU2tDRERjQ0JDQUFRUXhxSUFGQkZHb3BBZ0EzQWdBZ1xcXG5BRUVVYWlBQlFSeHFLQUlBTmdJQUN5QUJRU0JxSkFBZ0FFRUVhZ3RsQVFKL0l3QkJFR3NpQkNRQUlBUkJBRFlDRENBRUlBRWdCRUVNYWhcXFxuRFBBaUFFS0FJRUlRVWdBQ0FETmdJUUlBQkJBRFlDRENBQVFRaHFJQU0yQWdBZ0FDQUNOZ0lFSUFBZ0JDZ0NERFlDR0NBQUlBVTJBaFFnXFxcbkFDQUJOZ0lBSUFSQkVHb2tBQXRvQVFSL0l3QkJFR3NpQWlRQUlBSkJDR29nQVJDQUFrR0FnTVFBSVFNQ1FBSkFJQUlvQWdnTkFBd0JDeVxcXG5BQ0tBSU1JZ1JCZ0lERUFFWU5BQ0FCS0FJSUlBRW9BZ1JxSUFFb0FnQnJJUVVnQkNFREN5QUFJQU0yQWdRZ0FDQUZOZ0lBSUFKQkVHb2tcXFxuQUF0bEFRSi9Jd0JCRUdzaUJDUUFJQVJCQURZQ0RDQUVJQUVnQkVFTWFoRFJBaUFFS0FJRUlRVWdBQ0FETmdJUUlBQkJBRFlDRENBQVFRXFxcbmhxSUFNMkFnQWdBQ0FDTmdJRUlBQWdCQ2dDRERZQ0dDQUFJQVUyQWhRZ0FDQUJOZ0lBSUFSQkVHb2tBQXQzQVFKL1FRRWhBMEhRQUNFRVxcXG5Ba0FnQVNBQ1FmK0l3UUJCQkJDbUNnMEFJQUVnQWtHSWljRUFRUUlRcGdvTkFFRzdBeUVFSUFFZ0FrR0RpY0VBUVFVUXBnb05BQ0FCSUFcXFxuSkJpb25CQUVFREVLWUtEUUJCRlNFRUlBRWdBa0g4aU1FQVFRTVFwZ29oQXdzZ0FDQUVPd0VDSUFBZ0F6c0JBQXRsQVFKL0l3QkJFR3NpXFxcbkJDUUFJQVJCQURZQ0RDQUVJQUVnQkVFTWFoRFRBaUFFS0FJRUlRVWdBQ0FETmdJUUlBQkJBRFlDRENBQVFRaHFJQU0yQWdBZ0FDQUNOZ1xcXG5JRUlBQWdCQ2dDRERZQ0dDQUFJQVUyQWhRZ0FDQUJOZ0lBSUFSQkVHb2tBQXRsQVFKL0FrQUNRQUpBQWtBZ0FnMEFRUUVoQXd3QkN5QUNcXFxuUVg5S0lnUkZEUUZCQUMwQThhWlBHaUFDSUFRUTl3c2lBMFVOQWdzZ0F5QUJJQUlRcEEwaEFTQUFJQUkyQWdnZ0FDQUNOZ0lFSUFBZ0FUXFxcbllDQUE4TEVKY0lBQXNnQkNBQ0VKb05BQXRsQVFKL0FrQUNRQUpBQWtBZ0FnMEFRUUVoQXd3QkN5QUNRWDlLSWdSRkRRRkJBQzBBOGFaUFxcXG5HaUFDSUFRUTl3c2lBMFVOQWdzZ0F5QUJJQUlRcEEwaEFTQUFJQUkyQWdnZ0FDQUNOZ0lFSUFBZ0FUWUNBQThMRUpjSUFBc2dCQ0FDRUpcXFxub05BQXRnQVFGL0l3QkJFR3NpQkNRQUFrQUNRQ0FCUVJ4cUtBSUFEUUJCQUNFQkRBRUxJQVJCQ0dvZ0FVRVFhaUFCSUFJZ0F4RGpCQ0FDXFxcbklBTVFrd0lnQkNnQ0RDRURJQVFvQWdnaEFRc2dBQ0FETmdJRUlBQWdBVFlDQUNBRVFSQnFKQUFMWXdFQ2Z5QUJLQUlVSVFJQ1FDQUJLQVxcXG5JZ0lnTkZEUUFDUUFKQUlBRkJIR29vQWdBaUFTQURTdzBBSUFFZ0EwY05BUXdDQ3lBQ0lBTnFMQUFBUWI5L1NnMEJDeUFDSUFGQkFDQURcXFxuUWF6cHdBQVE1QXNBQ3lBQUlBTTJBZ1FnQUNBQ05nSUFDMkVCQVg4akFFRVFheUlDSkFBZ0FSQ0REQ0FCUVJScVFRQTJBZ0FnQWlBQklBXFxcbkZCREdvUXhnRUNRQUpBSUFJb0FnQkJBa1lOQUNBQUlBSW9BZ1FnQWlnQ0NCRDBBZ3dCQ3lBQUlBSW9BZ1EyQWdRZ0FFRUNOZ0lBQ3lBQ1xcXG5RUkJxSkFBTFlBRUJmeU1BUVJCcklnUWtBQ0FFUVFocUlBRWdBaERzQlFKQUFrQWdCQ2dDQ0VVTkFFRUJJUUVnQkNnQ0RDRUNEQUVMSUFcXFxuUWdBU0FERUs4Q0lBUW9BZ1FoQWlBRUtBSUFJUUVMSUFBZ0FUWUNBQ0FBSUFJMkFnUWdCRUVRYWlRQUMxMEJBbjhqQUVFUWF5SUNKQUFnXFxcbkFrRUlhaUFBS0FJQUlnTVFzUXdDUUNBQ1FRaHFFTDBISWdBTkFDQUJLQUlBSUFNUTd3c2lBQTBBSUFOQkVHcEJBVG9BQUNBQ1FRUTZBQVxcXG5nZ0FrRUlhaEM5QnlFQUN5QUNRUkJxSkFBZ0FBdGVBUUovSUFBb0FnQWdBQ0FCRUxrRUlnUnFMUUFBSVFVQ1FDQUFLQUlJRFFBZ0JVRUJcXFxuY1VVTkFDQUFRUUVnQXhDdkNDQUFJQUVRdVFRaEJBc2dBQ0FFSUFVZ0FSQ3NCaUFBS0FJQUlBUkJBblJySWdCQmZHb2dBallDQUNBQUMxXFxcbjhCQVg4akFFRXdheUlDSkFBZ0FpQUFOZ0lNSUFKQkhHcENBVGNDQUNBQ1FRSTJBaFFnQWtIWXE4QUFOZ0lRSUFKQkRqWUNMQ0FDSUFKQlxcXG5LR28yQWhnZ0FpQUNRUXhxTmdJb0lBRWdBa0VRYWhDdEJTRUFJQUpCTUdva0FDQUFDMWtCQVg4akFFRWdheUlDSkFBZ0FDZ0NBQ0VBSUFcXFxuSkJDR3BCRUdvZ0FVRVFhaWtDQURjREFDQUNRUWhxUVFocUlBRkJDR29wQWdBM0F3QWdBaUFCS1FJQU53TUlJQUFnQWtFSWFoRENCU0VCXFxcbklBSkJJR29rQUNBQkMxa0JBWDhqQUVFZ2F5SUNKQUFnQUNnQ0FDRUFJQUpCQ0dwQkVHb2dBVUVRYWlrQ0FEY0RBQ0FDUVFocVFRaHFJQVxcXG5GQkNHb3BBZ0EzQXdBZ0FpQUJLUUlBTndNSUlBQWdBa0VJYWhEREJTRUJJQUpCSUdva0FDQUJDMlVCQTM4Z0FFRzU4OTN4ZVd3aEFRSkFcXFxuQTBBZ0FVRUFFTE1MSWdBb0FnaHJkaUlDSUFBb0FnUWlBMDhOQVNBQUtBSUFJQUpCQm5ScUlnSVFsUW9DUUNBQVFRQW9Bb0NuVDBZTkFDXFxcbkFDRU1RSkRBRUxDeUFDRHdzZ0FpQURRWmpjd0FBUWdRVUFDMm9CQVg4Q1FBSkFBa0FnQUMwQUFBNERBQUVDQUFzZ0FDZ0NCQ0FBUVF4cVxcXG5LQUlBSUFFUW5BMFBDeUFBUVFGcUlBRVFzQUVQQzBFQklRSUNRQ0FCUVp5SHdRQkJBUkQvQ2cwQVFRRWhBaUFBUVFGcUlBRVFjQTBBSUFcXFxuRkJuWWZCQUVFQkVQOEtJUUlMSUFJTFdRRUJmeU1BUVNCcklnSWtBQ0FBS0FJQUlRQWdBa0VJYWtFUWFpQUJRUkJxS1FJQU53TUFJQUpCXFxcbkNHcEJDR29nQVVFSWFpa0NBRGNEQUNBQ0lBRXBBZ0EzQXdnZ0FDQUNRUWhxRU1jRklRRWdBa0VnYWlRQUlBRUxjZ0VCZjBFQklRSUNRQ1xcXG5BQUlBRkIvNGpCQUVFRUVLWUtEUUFnQUNBQlFZT0p3UUJCQlJDbUNnMEFJQUFnQVVHSWljRUFRUUlRcGdvTkFDQUFJQUZCaW9uQkFFRURcXFxuRUtZS0RRQWdBQ0FCUWZ5SXdRQkJBeENtQ2cwQVFRQkJBaUFBSUFGQmpZbkJBRUVFRUtZS0d5RUNDeUFDQzJBQkFYOGpBRUVnYXlJREpBXFxcbkFDUUNBQUtBSUlJQUZMRFFBZ0EwRVVha0lBTndJQUlBTkJBVFlDRENBRFFkeVd3UUEyQWdnZ0EwSGtsc0VBTmdJUUlBTkJDR29nQWhDWVxcXG5DQUFMSUFBb0FnQWhBQ0FEUVNCcUpBQWdBQ0FCUVFOMGFndGNBUUYvSXdCQklHc2lBaVFBSUFKQkVHcEJDR29nQVVFSWFpZ0NBRFlDQUNcXFxuQUNJQUVwQWdBM0F4QUNRQU5BSUFKQkNHb2dBa0VRYWhDcEFpQUNLQUlJSWdGRkRRRWdBQ0FCSUFJb0Fnd1FsQXdNQUFzTElBSkJJR29rXFxcbkFBdGZBZ0YvQVg0akFFRWdheUlDSkFBZ0FDa0NBQ0VESUFJZ0FDZ0NDRFlDR0NBQ0lBTTNBeEFDUUFOQUlBSkJDR29nQWtFUWFoQ3BBaVxcXG5BQ0tBSUlJZ0JGRFFFZ0FTQUFJQUlvQWd3US93cEZEUUFMQ3lBQ1FTQnFKQUFnQUVFQVJ3dFpBUUYvSXdCQklHc2lBaVFBSUFBb0FnQWhcXFxuQUNBQ1FRaHFRUkJxSUFGQkVHb3BBZ0EzQXdBZ0FrRUlha0VJYWlBQlFRaHFLUUlBTndNQUlBSWdBU2tDQURjRENDQUFJQUpCQ0dvUXlRXFxcblVoQVNBQ1FTQnFKQUFnQVF0Y0FRSi9Ba0FnQUVFUWFpZ0NBQ0lCUlEwQUlBQkJGR29vQWdBaEFpQUJRUUE2QUFBZ0FrVU5BQ0FCSUFKQlxcXG5BUkN5REFzQ1FDQUFRWDlHRFFBZ0FDQUFLQUlFSWdGQmYybzJBZ1FnQVVFQlJ3MEFJQUJCR0VFSUVMSU1Dd3RYQUFKQUlBTkZEUUFDUUFcXFxuSkFBa0FnQWlBRFN3MEFJQUlnQTBjTkFRd0NDeUFCSUFOcUxBQUFRYjkvU2cwQkN5QUJJQUlnQXlBQ0lBUVE1QXNBQ3lBQ0lBTnJJUUlMXFxcbklBQWdBallDQkNBQUlBRWdBMm8yQWdBTFhBRUVmeU1BUVJCcklnSWtBQ0FCS0FJRUlRTWdBa0VJYWlBQklBRW9BZ0FpQkNBRUlBRVF0Z1xcXG5JZ0FpZ0NEQ0VGSUFFUW93WWdBQ0FETmdJRUlBQWdCRFlDQUNBQUlBVWdCR3RCREc0MkFnZ2dBUkRlQnlBQ1FSQnFKQUFMWFFFQ2Z5TUFcXFxuUVJCcklnTWtBQ0FEUVFocUlBSWdBU2dDRUJDTUJ5QURLQUlNSVFJQ1FDQURLQUlJSWdRTkFDQUJRUWhxRUlZTElBRkJER29nQWpZQ0FDXFxcbkFCUVFFMkFnZ0xJQUFnQkRZQ0FDQUFJQUkyQWdRZ0EwRVFhaVFBQzE0QkFYOGpBRUdBQW1zaUF5UUFJQU1nQVNBQ0VLVUpBa0FDUUNBRFxcXG5LQUlBUVFKSERRQWdBRUVBTmdJUURBRUxJQU5CZ0FGcUlBTkJnQUVRcEEwYUlBQWdBMEhRQVdwQk1CQ2tEUm9nQTBHVUFXb1E0d3dMSUFcXFxuTkJnQUpxSkFBTFhBRUJmeU1BUVJCcklnTWtBQUpBQWtBZ0FVRWNhaWdDQUEwQVFRQWhBUXdCQ3lBRFFRaHFJQUZCRUdvZ0FTQUNFTnNFXFxcbklBSVFtQUlnQXlnQ0RDRUNJQU1vQWdnaEFRc2dBQ0FDTmdJRUlBQWdBVFlDQUNBRFFSQnFKQUFMWEFFQmZ5TUFRUkJySWdNa0FBSkFBa1xcXG5BZ0FVRWNhaWdDQUEwQVFRQWhBUXdCQ3lBRFFRaHFJQUZCRUdvZ0FTQUNFT29FSUFJUW1RSWdBeWdDRENFQ0lBTW9BZ2doQVFzZ0FDQUNcXFxuTmdJRUlBQWdBVFlDQUNBRFFSQnFKQUFMWEFFQmZ5TUFRUkJySWdNa0FBSkFBa0FnQVVFY2FpZ0NBQTBBUVFBaEFRd0JDeUFEUVFocUlBXFxcbkZCRUdvZ0FTQUNFTnNFSUFJUW9RVWdBeWdDRENFQ0lBTW9BZ2doQVFzZ0FDQUNOZ0lFSUFBZ0FUWUNBQ0FEUVJCcUpBQUxZUUVCZnlNQVxcXG5RU0JySWdVa0FCQ0lCeUFGUVJCcUlBTWdCQkNDQ0NBRklBRWdBaENDQ0VFVVFRUVFwUWNpQkVLQmdJQ0FFRGNDQUNBRUlBVXBBeEEzQWdcXFxuZ2dCRUVRYWlBRlFSaHFLQUlBTmdJQUlBQWdCU0FFRUxjR0lBVkJJR29rQUF0ZEFRTi9Jd0JCRUdzaUJTUUFJQVZCQ0dvZ0FpQURJQUVvXFxcbkFnQWlCaUFCS0FJSUlnY1Fvd1FDUUNBRktBSUlJZ0VOQUNBR0lBY2dBaUFESUFRUTVBc0FDeUFGS0FJTUlRTWdBQ0FCTmdJQUlBQWdBelxcXG5ZQ0JDQUZRUkJxSkFBTFZ3QUNRQ0FCUlEwQUFrQUNRQUpBSUFNZ0FVc05BQ0FESUFGSERRRU1BZ3NnQWlBQmFpd0FBRUcvZjBvTkFRc2dcXFxuQWlBRElBRWdBeUFFRU9RTEFBc2dBeUFCYXlFREN5QUFJQU0yQWdRZ0FDQUNJQUZxTmdJQUMxVUJBWDhqQUVFUWF5SUNKQUFnQWlBQlFUXFxcbjl4UVlBQmNqb0FEeUFDSUFGQkJuWkJQM0ZCZ0FGeU9nQU9JQUlnQVVHQTRBTnhRUXgyUWVBQmNqb0FEU0FBSUFKQkRXb2dBa0VRYWhENlxcXG5DQ0FDUVJCcUpBQUxWd0FDUUNBRFJRMEFBa0FDUUFKQUlBSWdBMHNOQUNBQ0lBTkhEUUVNQWdzZ0FTQURhaXdBQUVHL2Ywb05BUXNnQVNcXFxuQUNJQU1nQWlBRUVPUUxBQXNnQWlBRGF5RUNDeUFBSUFJMkFnUWdBQ0FCSUFOcU5nSUFDMkFCQW44akFFSGdBR3NpQWlRQUlBRkJ5QUZxXFxcbktBSUFLQUpRSVFNZ0FrRVFhaUFCUVlBQmFrSFFBQkNrRFJvZ0FrRUlhaUFCSUFOQnFQM0FBQkRUQnlBQUlBSkJFR29nQWlnQ0NDQUNLQVxcXG5JTUlBRW9BdEFCRUhrZ0FrSGdBR29rQUF0ZEFRTi9Jd0JCRUdzaUJTUUFJQVZCQ0dvZ0FpQURJQUVvQWdBaUJpQUJLQUlJSWdjUXBnUUNcXFxuUUNBRktBSUlJZ0VOQUNBR0lBY2dBaUFESUFRUTVBc0FDeUFGS0FJTUlRTWdBQ0FCTmdJQUlBQWdBellDQkNBRlFSQnFKQUFMWVFFQ2Z3XFxcbkpBQWtBZ0FRMEFRUVFoQWd3QkN3SkFJQUZCLy8vLy93QkxEUUFnQVVFRGRDSURRWDlNRFFBZ0FVR0FnSUNBQVVsQkFuUWlCQ0FESUFJUVxcXG50Z2tpQWcwQklBUWdBeENhRFFBTEVKY0lBQXNnQUNBQk5nSUVJQUFnQWpZQ0FBdFhBQUpBSUFGRkRRQUNRQUpBQWtBZ0F5QUJTdzBBSUFcXFxuTWdBVWNOQVF3Q0N5QUNJQUZxTEFBQVFiOS9TZzBCQ3lBQ0lBTWdBU0FESUFRUTVBc0FDeUFESUFGcklRTUxJQUFnQXpZQ0JDQUFJQUlnXFxcbkFXbzJBZ0FMV1FFQmZ5TUFRUkJySWdRa0FDQUVJQUUyQWd3Z0JDQUFOZ0lJSUFNb0FnQWhBQUpBQTBBZ0JFRUlhaENGQXlJQlFZQ0F4QVxcXG5CR0RRRWdBaUFDSUFFZ0FpQUJTUnNnQUNBQlN4c2hBZ3dBQ3dzZ0JFRVFhaVFBSUFJTFZ3QUNRQ0FCUlEwQUFrQUNRQUpBSUFNZ0FVc05cXFxuQUNBRElBRkhEUUVNQWdzZ0FpQUJhaXdBQUVHL2Ywb05BUXNnQWlBRElBRWdBeUFFRU9RTEFBc2dBeUFCYXlFREN5QUFJQU0yQWdRZ0FDXFxcbkFDSUFGcU5nSUFDMW9CQVg5QkFTRUJBa0FnQUMwQUFpQUFMUUFBY2lBQUxRQURjaUFBTFFBRWNpQUFMUUFGY2lBQUxRQUdjaUFBTFFBSFxcXG5jaUFBTFFBSWNpQUFMUUFKY2lBQUxRQUtjaUFBTFFBQmNnMEFJQUF0QUF0QkFFY2hBUXNnQVF0a0FRSi9JQUVvQWdBaEFpQUJRUUEyQWdcXFxuQUNRQUpBSUFKRkRRQWdBU2dDQkNFRFFRQXRBUEdtVHhwQkNFRUVFUGNMSWdGRkRRRWdBU0FETmdJRUlBRWdBallDQUNBQVFmVFl6UUEyXFxcbkFnUWdBQ0FCTmdJQUR3c1FodzRBQzBFRVFRZ1FtZzBBQzJBQkFuOGpBRUVRYXlJQ0pBQUNRQUpBSUFFdEFBQkJBMFlOQUVFQUlRRU1BUVxcXG5zZ0FrRUlhaUFCS0FJRUlnRW9BZ0FnQVNnQ0JDZ0NKQkVGQUNBQ0tBSU1JUU1nQWlnQ0NDRUJDeUFBSUFNMkFnUWdBQ0FCTmdJQUlBSkJcXFxuRUdva0FBdGdBUUovSXdCQkVHc2lBaVFBQWtBQ1FDQUJMUUFBUVFOR0RRQkJBQ0VCREFFTElBSkJDR29nQVNnQ0JDSUJLQUlBSUFFb0FnXFxcblFvQWhnUkJRQWdBaWdDRENFRElBSW9BZ2doQVFzZ0FDQUROZ0lFSUFBZ0FUWUNBQ0FDUVJCcUpBQUxXd0VEZnlNQVFSQnJJZ1FrQUNBRVxcXG5RUWhxSUFJZ0FTZ0NBQ0lGSUFFb0FnZ2lCaERGQmdKQUlBUW9BZ2dpQVEwQUlBVWdCa0VBSUFJZ0F4RGtDd0FMSUFRb0Fnd2hBaUFBSUFcXFxuRTJBZ0FnQUNBQ05nSUVJQVJCRUdva0FBdGtBZ0YvQVg0akFFRVFheUlDSkFBQ1FFRUFJQUVvQWdBUkF3QWlBVVVOQUNBQklBRXBBd0FpXFxcbkEwSUJmRGNEQUNBQUlBRXBBd2czQXdnZ0FDQUROd01BSUFKQkVHb2tBQThMUWNpSHdBQkJ4Z0FnQWtFSWFrR1FpTUFBUWZDSXdBQVF3Z1xcXG5RQUMxNEJBWDhDUUNBQUtBSUVLQUlBSUFGQkFuUnJRWHhxS0FJQUlnRWdBQ2dDQUNJQVFReHFLQUlBSWdKSkRRQWdBU0FDUVp5ZHdBQVFcXFxuZ1FVQUN5QUFLQUlBSUFBb0FnUWdBQ2dDQ0NBQlFSeHNhaUlBS0FJQUlBQW9BZ2dRcGdvTFhRRUJmeU1BUVJCcklnUWtBQUpBQWtBZ0FRXFxcbjBBSUFBZ0F4Q0lBUXdCQ3lBRVFRaHFJQUpCQUJEVEJDQUVLQUlNSVFNZ0JDZ0NDQ0FCSUFJUXBBMGhBU0FBSUFJMkFnZ2dBQ0FETmdJRVxcXG5JQUFnQVRZQ0FBc2dCRUVRYWlRQUMxMEJCSDlCQUNFQ0FrQUNRQ0FCTFFBbFJRMEFEQUVMSUFGQkFUb0FKU0FCS0FJY0lRTWdBU2dDSUNcXFxuRUVBa0FnQVMwQUpBMEFJQVFnQTBZTkFRc2dCQ0FEYXlFRklBRW9BZ1FnQTJvaEFnc2dBQ0FGTmdJRUlBQWdBallDQUF0YkFRTi9Jd0JCXFxcbkVHc2lCQ1FBSUFSQkNHb2dBaUFCS0FJQUlnVWdBU2dDQ0NJR0VNNEdBa0FnQkNnQ0NDSUJEUUFnQlNBR1FRQWdBaUFERU9RTEFBc2dCQ1xcXG5nQ0RDRUNJQUFnQVRZQ0FDQUFJQUkyQWdRZ0JFRVFhaVFBQzFNQkFuOGdBVUZRYWlFREFrQUNRQ0FDUVFwTkRRQkJBU0VFSUFOQkNra05cXFxuQVVGL0lBRkJJSElpQTBHcGYyb2lBU0FCSUFOQm4zOXFTUnNoQXdzZ0F5QUNTU0VFQ3lBQUlBTTJBZ1FnQUNBRU5nSUFDMlFCQVg4Q1FBXFxcbkpBQWtBQ1FDQUJMUUFBRGdNQUFRSUFDeUFCUVF4cUtBSUFRUUJISVFJTUFnc2dBQ0FCS0FBQk5nQUJRUUloQWd3QkN5QUFJQUVwQUFFM1xcXG5BQUVnQUVFSmFpQUJRUWxxS1FBQU53QUFRUU1oQWdzZ0FDQUNPZ0FBSUFFUXZnc0xXUUVDZjBFQUlRSUNRQ0FBTFFBQUlnTWdBUzBBQUVcXFxuY05BRUVCSVFJQ1FBSkFJQU5CZm1vT0FnRUFBZ3NnQTBFRFJ3MEJJQUJCQVdvZ0FVRUJhaERLREE4TElBTkJBa2NOQUNBQUtBQUJJQUVvXFxcbkFBRkdJUUlMSUFJTFdRRUNmeUFDS0FJSUlBSW9BZ1FpQTBFQ2RHb2hCQ0FDS0FJQUlRSUNRQU5BSUFBZ0FVWU5BU0FFSUFBb0FnQTJBZ1xcXG5BZ0FFRUFOZ0lBSUFSQkJHb2hCQ0FEUVFGcUlRTWdBRUVFYWlFQURBQUxDeUFDSUFNMkFnQUxYUUVCZnlNQVFUQnJJZ01rQUNBRElBRTJcXFxuQWd3Z0F5QUFOZ0lJSUFOQkhHcENBVGNDQUNBRFFRRTJBaFFnQTBISW04NEFOZ0lRSUFOQnJnSTJBaXdnQXlBRFFTaHFOZ0lZSUFNZ0EwXFxcbkVJYWpZQ0tDQURRUkJxSUFJUW1BZ0FDMXNCQVg4akFFRVFheUlFSkFBQ1FBSkFJQUVvQWdRZ0Ftc2dBMGtOQUVHQmdJQ0FlQ0VCREFFTFxcXG5JQVJCQ0dvZ0FTQUNJQU1RcFFNZ0JDZ0NEQ0VDSUFRb0FnZ2hBUXNnQUNBQ05nSUVJQUFnQVRZQ0FDQUVRUkJxSkFBTFd3RUJmeU1BUVJcXFxuQnJJZ1FrQUFKQUFrQWdBU2dDQkNBQ2F5QURTUTBBUVlHQWdJQjRJUUVNQVFzZ0JFRUlhaUFCSUFJZ0F4Q21BeUFFS0FJTUlRSWdCQ2dDXFxcbkNDRUJDeUFBSUFJMkFnUWdBQ0FCTmdJQUlBUkJFR29rQUF0YkFRRi9Jd0JCRUdzaUJDUUFBa0FDUUNBQktBSUVJQUpySUFOSkRRQkJnWVxcXG5DQWdIZ2hBUXdCQ3lBRVFRaHFJQUVnQWlBREVLUURJQVFvQWd3aEFpQUVLQUlJSVFFTElBQWdBallDQkNBQUlBRTJBZ0FnQkVFUWFpUUFcXFxuQzFRQkFYOGpBRUVRYXlJREpBQWdBeUFDTmdJTUlBRWdBMEVNYWhDTEN5QUFJQUpCYUdvaUFpa0NBRGNDQUNBQVFSQnFJQUpCRUdvcEFnXFxcbkEzQWdBZ0FFRUlhaUFDUVFocUtRSUFOd0lBSUFOQkVHb2tBQXRZQVFGL0l3QkJ3QUZySWdJa0FDQUJFTkVMSUFKQkNHb2dBUkM5Q1NBQ1xcXG5LQUlNUVFBMkFnQWdBa0VRYWlBQlFiQUJFS1FOR2lBQUlBSkJFR3BCQ0dwQnFBRVFwQTBhSUFGQnNBRkJDQkN5RENBQ1FjQUJhaVFBQzFcXFxuZ0JBbjhqQUVFUWF5SUNKQUFDUUFKQUlBRW9BZ0FpQVNnQ0FFRUJSZzBBUVFBaEFRd0JDeUFDUVFocUlBRkJCR29RL3dVZ0FpZ0NEQ0VEXFxcbklBSW9BZ2doQVFzZ0FDQUROZ0lFSUFBZ0FUWUNBQ0FDUVJCcUpBQUxWUUVEZnlNQVFSQnJJZ0VrQUFKQUlBQW9BZ0FpQUVFUWFpZ0NBQ1xcXG5JQ1JRMEFJQUpCQURvQUFDQUFRUlJxS0FJQUlnTkZEUUFnQWlBRFFRRVFzZ3dMSUFFZ0FEWUNEQ0FCUVF4cUVPSUlJQUZCRUdva0FBdFZcXFxuQVFKL0l3QkJFR3NpQkNRQUlBUkJBRFlDRENBRUlBTWdCRUVNYWhEUEFpQUJJQUlnQkNnQ0FDQUVLQUlFSWdNUXl3WWhCU0FBSUFJZ0EyXFxcbnMyQWdRZ0FDQUJJQU5xUVFBZ0JSczJBZ0FnQkVFUWFpUUFDMVlCQW44akFFRVFheUlDSkFBZ0FoRDlEU0lETmdJRUlBSWdBeEFrSWdNMlxcXG5BZ3dnQWlBREVDVTJBZ2dnQWtFTWFoQ1dDeUFDUVFocUlBQWdBUkNMRENBQ1FRaHFFSllMSUFKQkJHb1FsZ3NnQWtFUWFpUUFDMVVCQW5cXFxuOGpBRUVRYXlJRUpBQWdCRUVBTmdJTUlBUWdBeUFFUVF4cUVORUNJQUVnQWlBRUtBSUFJQVFvQWdRaUF4RGVCaUVGSUFBZ0FpQURhellDXFxcbkJDQUFJQUVnQTJwQkFDQUZHellDQUNBRVFSQnFKQUFMV3dFQmZ5TUFRUkJySWdNa0FDQURJQUEyQWdnZ0F5QUFJQUZxTmdJTUFrQURRQ1xcXG5BRFFRaHFFSzBJSWdCQmdJREVBRVlOQVNBQ0VNZ0pJZ0ZCZ0lERUFFWU5BU0FCSUFCR0RRQUxDeUFEUVJCcUpBQWdBRUdBZ01RQVJndGFcXFxuQVFKL0l3QkJFR3NpQWlRQUFrQUNRQ0FCTFFBMFFRRkdEUUJCQUNFQkRBRUxJQUpCQ0dvZ0FTQUJLQUlvSUFFb0Fpd1E3UVlnQWlnQ0RDXFxcbkVESUFJb0FnZ2hBUXNnQUNBRE5nSUVJQUFnQVRZQ0FDQUNRUkJxSkFBTFV3SUNmd0YrSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQUpBSUFBZ1xcXG5BRUVRYWlJRElBSkJER29Rb2dRaUJDQUNRUXhxRUwwRklnRU5BQ0FBSUFRZ0FpZ0NEQ0FERU4wRkdnc2dBa0VRYWlRQUlBRkJBRWNMVlFcXFxuRUNmeU1BUVNCcklnRWtBQ0FCUVFocUlBQVF0Z1FDUUFKQUlBRXRBQWdOQUVFQUlRSWdBUzBBQ1VVTkFTQUJRUlkyQWhBZ0FDQUJRUkJxXFxcbkVNNElJUUlNQVFzZ0FTZ0NEQ0VDQ3lBQlFTQnFKQUFnQWd0WUFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FSRFRCZ0pBQWtBZ0FpMEFDQVxcXG4wQVFRQWhBU0FBSUFJdEFBcEJBQ0FDTFFBSkd6b0FBUXdCQ3lBQUlBSW9BZ3cyQWdSQkFTRUJDeUFBSUFFNkFBQWdBa0VRYWlRQUMxZ0JcXFxuQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFCRUwwTkFrQUNRQ0FDTFFBSURRQkJBQ0VCSUFBZ0FpMEFDa0VBSUFJdEFBa2JPZ0FCREFFTElBXFxcbkFnQWlnQ0REWUNCRUVCSVFFTElBQWdBVG9BQUNBQ1FSQnFKQUFMWFFFQmZ5TUFRUkJySWdVa0FDQUJLQUlBUWN5Q3dBQkJBUkNJRENBRlxcXG5RUWhxSUFFZ0JTQURJQVFRbGdFQ1FBSkFJQVV0QUFoQkJFY05BQ0FBSUFGQnpJTEFBRUVCRUtBTERBRUxJQUFnQlNrRENEY0NBQXNnQlVcXFxuRVFhaVFBQzJNQUFrQUNRQUpBSUFFZ0FrR3VnOEFBUVJBUXBnb05BQ0FCSUFKQm5ZUEFBRUVSRUtZS0RRRWdBQ0FCSUFKQnRJVEFBRUVDXFxcbkVQQUNOZ0lFUVFFaEFnd0NDMEVBSVFJZ0FFRUFPZ0FCREFFTElBQkJBVG9BQVVFQUlRSUxJQUFnQWpvQUFBdGNBZ0YvQVg0akFFRVFheVxcXG5JREpBQWdBMEVZSUFFZ0FoQ1hBZ0pBQWtBZ0F5Z0NBQ0lDUlEwQUlBTXBBZ1FoQkNBQUlBTW9BZ3cyQWd3Z0FDQUVOd0lFREFFTElBQWdcXFxuQXlrQ0JEY0NCQXNnQUNBQ05nSUFJQU5CRUdva0FBdFZBUUYvSXdCQklHc2lBaVFBSUFJZ0FDQUJFSjBISUFJZ0FpZ0NCQ0lCTmdJY0lBXFxcbklnQWlnQ0FDSUFOZ0lZSUFKQkNHb2dBQ0FCRUlVSUlBSkJHR29RNlFzZ0FrRUlhaEN5Q1NFQklBSkJJR29rQUNBQkMxVUJBbjhqQUVFZ1xcXG5heUlCSkFBZ0FVRUlhaUFBRUxvRUFrQUNRQ0FCTFFBSURRQkJBQ0VDSUFFdEFBbEZEUUVnQVVFV05nSVFJQUFnQVVFUWFoRGRDQ0VDREFcXFxuRUxJQUVvQWd3aEFnc2dBVUVnYWlRQUlBSUxXUUVCZndKQUFrQWdBQ2dDQ0NJQ0lBRkpEUUFDUUNBQlJRMEFBa0FnQWlBQlN3MEFJQUlnXFxcbkFVWU5BUXdEQ3lBQUtBSUFJQUZxTEFBQVFVQklEUUlMSUFBZ0FSQ2JDd3NQQzBHMGhNRUFRVEJCNUlUQkFCQ0RCd0FMWWdFRGZ5TUFRUlxcXG5CcklnRWtBQUpBQWtBZ0FCRGtEU0lDUlEwQUlBQVE0dzBpQTBVTkFTQUJJQUkyQWdnZ0FTQUFOZ0lFSUFFZ0F6WUNBQ0FCRU0wTkFBdEJcXFxuMTkvTkFFRXJRZXp1elFBUWd3Y0FDMEhYMzgwQVFTdEIzTzdOQUJDREJ3QUxWZ0VCZndKQUlBQW9BZ2dpQWlBQUtBSUVSdzBBSUFBZ0FoXFxcbkR5Q0NBQUtBSUlJUUlMSUFBb0FnQWdBa0VNYkdvaUFpQUJLUUlBTndJQUlBSkJDR29nQVVFSWFpZ0NBRFlDQUNBQUlBQW9BZ2hCQVdvMlxcXG5BZ2dMV0FFRGZ5TUFRUkJySWdFa0FDQUFRUUEyQWdRZ0FDZ0NEQ0VDSUFBb0FnZ2hBeUFBUVFRMkFnQWdBVUlFTndNSUlBRkJDR29Rc0FcXFxub2dBRUtFZ0lDQXdBQTNBZ2dnQXlBQ0lBTnJRUXh1RU9ZSklBRkJFR29rQUF0VEFRSi9RUUloQVFKQUlBQW9Ba2dpQWlBQUtBSk1SZzBBXFxcbklBQWdBa0VCYWpZQ1NBSkFBa0FnQUNnQ1JFRUlTdzBBSUFCQkJHb2hBQXdCQ3lBQUtBSUlJUUFMSUFBZ0FrRURkR290QUFRaEFRc2dBUVxcXG50VkFRSi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FVRUVhaERGQ0FKQUFrQWdBaWdDQ0EwQVFRQWhBd3dCQzBFQklRTWdBU2dDQUNBQ0tBSU1cXFxuRUlZTklRRUxJQUFnQVRZQ0JDQUFJQU0yQWdBZ0FrRVFhaVFBQzFNQkFuOGpBRUVRYXlJR0pBQWdCa0VJYWlBRElBUWdBU0FDRUtZRUFrXFxcbkFnQmlnQ0NDSUhEUUFnQVNBQ0lBTWdCQ0FGRU9RTEFBc2dCaWdDRENFQ0lBQWdCellDQUNBQUlBSTJBZ1FnQmtFUWFpUUFDMWNCQW44alxcXG5BRUVRYXlJQ0pBQUNRQUpBSUFFdEFEUU5BRUVBSVFFTUFRc2dBa0VJYWlBQklBRW9BaWdnQVNnQ0xCRHRCaUFDS0FJTUlRTWdBaWdDQ0NcXFxuRUJDeUFBSUFNMkFnUWdBQ0FCTmdJQUlBSkJFR29rQUF0VEFRRi9JQUJCdWZQZDhYbHNJQUJCcHJLRmlnTnNJZ0Z6clVLU0UzNUNJSWluXFxcblFRRjBRZmpWeXdCcUx3RUFJQUJxUWJuejNmRjViQ0FCYzYxQ2toTitRaUNJcDBFQ2RFR2MvTXNBYWlnQ0FDQUFSZ3RTQVFGL0l3QkJFR1xcXG5zaUFpUUFBa0FDUUNBQUtBSU1SUTBBSUFBaEFRd0JDeUFDUVFocUlBQkJDR29vQWdBMkFnQWdBaUFBS1FJQU53TUFJQUVnQWhEUENDRUJcXFxuSUFBUTVBd0xJQUpCRUdva0FDQUJDMUlCQVg4akFFRVFheUlFSkFBQ1FBSkFJQUVnQWlBREVNUUNJZ01OQUVFQUlRRU1BUXNnQkVFSWFpXFxcbkFCSUFNUTl3WkJBU0VCSUFRb0FnZ2hBd3NnQUNBRE5nSUVJQUFnQVRZQ0FDQUVRUkJxSkFBTFVRRUJmeU1BUWVBQWF5SURKQUFnQTBFSVxcXG5haUFCSUFJUWlRc0NRQUpBSUFNb0FoUkJBa2NOQUNBQVFRSTJBZ0FNQVFzZ0FDQURRUlJxUWNnQUVLUU5HaUFEUVFocUVPTU1DeUFEUWVcXFxuQUFhaVFBQzB3QkFuOGdBQ2dDQUNJRUlBRnFJQU9uUVJsMklnVTZBQUFnQUNBQUtBSUlJQUpCQVhGck5nSUlJQUFnQUNnQ0RFRUJhallDXFxcbkRDQUVJQUFvQWdRZ0FVRjRhbkZxUVFocUlBVTZBQUFMVlFFQmZ5TUFRUkJySWdNa0FDQURJQUVnQWhDS0F3SkFBa0FnQXlnQ0FDSUJSUVxcXG4wQUlBQWdBeWtDQkRjQ0NDQUFJQUUyQWdRTUFRc2dBQ0FES0FJRU5nSUVRUUFoQWdzZ0FDQUNOZ0lBSUFOQkVHb2tBQXRjQVFOL0lBRkJcXFxuREdvb0FnQWhBa0VBSVFNQ1FBSkFBa0FnQVNnQ0JBNENBQUVDQzBFQUlRUkJBRUhNck1BQUlBSWJJUU1NQVFzZ0FnMEFJQUVvQWdBaUFTXFxcbmdDQkNFRUlBRW9BZ0FoQXdzZ0FDQUVOZ0lFSUFBZ0F6WUNBQXRTQVFGL0l3QkJFR3NpQWlRQUFrQUNRQ0FBS0FJTVJRMEFJQUFoQVF3QlxcXG5DeUFDUVFocUlBQkJDR29vQWdBMkFnQWdBaUFBS1FJQU53TUFJQUVnQWhEZkNDRUJJQUFRL0F3TElBSkJFR29rQUNBQkMxSUJBWDhqQUVcXFxuRWdheUlHSkFBQ1FDQUJEUUJCbVA3QUFFRXlFSWNOQUFzZ0JrRVFhaUFCSUFNZ0JDQUZJQUlvQWhBUkRRQWdCa0VJYWlBR1FSQnFFUGNLXFxcbklBQWdCaWtEQ0RjREFDQUdRU0JxSkFBTFVRRUNmeU1BUVJCcklnVWtBQ0FGUVFocUlBTWdBU0FDRU00R0FrQWdCU2dDQ0NJR0RRQWdBU1xcXG5BQ1FRQWdBeUFFRU9RTEFBc2dCU2dDRENFQ0lBQWdCallDQUNBQUlBSTJBZ1FnQlVFUWFpUUFDMWdCQVg4akFFRVFheUlDSkFBZ0FrRUlcXFxuYWlBQkVMMEVJQUlnQWlnQ0NDQUNLQUlNUVM4UWxBWUNRQUpBSUFJb0FnQWlBUTBBSUFCQmdJREVBRFlDQUF3QkN5QUFJQUVnQWlnQ0JFXFxcbkV2RUpnRkN5QUNRUkJxSkFBTFZRRUJmeU1BUVJCcklnTWtBQUpBSUFBb0FnZ2dBa1lOQUFKQUlBRkIvd0Z4RFFBZ0EwRUlhaUFBSUFKQlxcXG5xSTNCQUJDaUJ5QURLQUlJSUFNb0Fnd1FrQWdOQVFzZ0FDQUJJQUlRZ1FRTElBTkJFR29rQUF0UUFRRi9Ba0FDUUNBQlFTUnFLQUlBSUFcXFxuRW9BaUFpQWtjTkFFRUFJUUVNQVFzZ0FTQUNRUUZxTmdJZ0lBRWdBa0VEZEdvaUFTZ0NCQ0VDSUFFb0FnQWhBUXNnQUNBQ05nSUVJQUFnXFxcbkFUWUNBQXRQQVFGL0l3QkJJR3NpQWlRQUlBSWdBVFlDQUNBQ0lBQTJBZ1FnQWlBQ1FSaHFOZ0lRSUFJZ0FrRUVhallDRENBQ0lBSTJBZ1xcXG5nZ0FFRWdhaUFDUVFocVFjQ2d3QUFRcHdJZ0FrRWdhaVFBQzA4QkFYOGpBRUVnYXlJQ0pBQWdBaUFCTmdJQUlBSWdBRFlDQkNBQ0lBSkJcXFxuR0dvMkFoQWdBaUFDUVFScU5nSU1JQUlnQWpZQ0NDQUFRU0JxSUFKQkNHcEIxS0RBQUJDbkFpQUNRU0JxSkFBTFZ3RUNmeU1BUVJCcklnXFxcbk1rQUNBRElBRW9BZ0FnQVVFSWFpSUVLQUlBUWYyandBQkJEUkR3QVNBQUlBTVErQXdnQUNBQ05nS2tBU0FBUWFBQmFpQUVLQUlBTmdJQVxcXG5JQUFnQVNrQ0FEY0NtQUVnQTBFUWFpUUFDMDBCQTM4akFFRVFheUlDSkFBZ0FrRUlhaUFCSUFFb0FnUWlBeUFCS0FJSVFRRnFJZ1FnQXlcXFxuQUVTUnNRcEFRZ0FpZ0NEQ0VCSUFBZ0FpZ0NDRFlDQUNBQUlBRTJBZ1FnQWtFUWFpUUFDMUlCQW44akFFRVFheUlDSkFBQ1FBSkFJQUVvXFxcbkFnZ2lBeUFCS0FJRVNRMEFJQUpCQkRZQ0FDQUFJQUVnQWhETUJ3d0JDeUFBUVFBNkFBQWdBQ0FCS0FJQUlBTnFMUUFBT2dBQkN5QUNRUlxcXG5CcUpBQUxWZ0VCZnlNQVFTQnJJZ0lrQUFKQUlBRU5BQ0FBUVFBMkFnQWdBa0VnYWlRQUR3c2dBa0VVYWtJQU53SUFJQUpCQVRZQ0RDQUNcXFxuUWJUbHdBQTJBZ2dnQWtHWTVjQUFOZ0lRSUFKQkNHcEJsT2JBQUJDWUNBQUxWZ0VCZnlNQVFTQnJJZ0lrQUFKQUlBRU5BQ0FBUVFBMkFnXFxcbkFnQWtFZ2FpUUFEd3NnQWtFVWFrSUFOd0lBSUFKQkFUWUNEQ0FDUWRENXpRQTJBZ2dnQWtIWStjMEFOZ0lRSUFKQkNHcEJyUHJOQUJDWVxcXG5DQUFMU2dFRGYwRUFJUU1DUUNBQ1JRMEFBa0FEUUNBQUxRQUFJZ1FnQVMwQUFDSUZSdzBCSUFCQkFXb2hBQ0FCUVFGcUlRRWdBa0YvYWlcXFxuSUNSUTBDREFBTEN5QUVJQVZySVFNTElBTUxUUUVCZnlNQVFTQnJJZ0VrQUNBQlFRaHFJQUFRcmdZZ0FVRVFhaUFCS0FJSUlBRW9BZ3dnXFxcbkFCQ0RCaUFCS0FJUUlBRW9BaGdRQUJEOERTRUFJQUZCRUdvUStnd2dBVUVnYWlRQUlBQUxUQUVDZnlNQVFSQnJJZ0lrQUNBQ0lBRVErUVxcXG4wMkFnd2dBa0VNYWtFQUVJWU5JUUVnQWtFTWFrRUJFSVlOSVFNZ0FrRU1haENNQ3lBQUlBTTJBZ1FnQUNBQk5nSUFJQUpCRUdva0FBdE5cXFxuQVFGL0l3QkJJR3NpQWlRQUlBSkJDR29nQUNnQ0FCQU9JQUpCRUdvZ0FpZ0NDQ0FDS0FJTUVQZ0dJQUlvQWhBZ0FpZ0NHQ0FCRUp3TklRXFxcbkFnQWtFUWFoRDZEQ0FDUVNCcUpBQWdBQXRaQVFGL0l3QkJFR3NpQWlRQUFrQUNRQ0FBS0FJQURRQWdBVUhRNDhBQVFSQVEvd29oQUF3QlxcXG5DeUFDSUFBMkFnd2dBVUd3NDhBQVFRaEJ1T1BBQUVFR0lBSkJER3BCd09QQUFCQ1RBeUVBQ3lBQ1FSQnFKQUFnQUF0S0FBSkFJQU5GRFFcXFxuQUNRQUpBSUFNZ0Fra05BQ0FESUFKSERRRU1BZ3NnQVNBRGFpd0FBRUcvZjBvTkFRc2dBU0FDUVFBZ0F5QUVFT1FMQUFzZ0FDQUROZ0lFXFxcbklBQWdBVFlDQUF0TkFRSi9Jd0JCRUdzaUJDUUFRUUFoQlFKQUlBRWdBMGtOQUNBRVFRaHFJQUVnQTJzZ0FDQUJRZGoyd0FBUWhRa2dBaVxcXG5BRElBUW9BZ2dnQkNnQ0RCQ2lDaUVGQ3lBRVFSQnFKQUFnQlF0TUFRSi9Jd0JCRUdzaUF5UUFJQUFnQWlBQmEwRUNkaENuQ2lBQUtBSUlcXFxuSVFRZ0F5QUFLQUlBTmdJSUlBTWdCRFlDQkNBRElBQkJDR28yQWdBZ0FTQUNJQU1RaVFZZ0EwRVFhaVFBQzB3QkFuOGpBRUVRYXlJREpBXFxcbkFnQUNBQ0lBRnJRUU4yRUtnS0lBQW9BZ2doQkNBRElBQW9BZ0EyQWdnZ0F5QUVOZ0lFSUFNZ0FFRUlhallDQUNBQklBSWdBeERmQkNBRFxcXG5RUkJxSkFBTFNRRUJmd0pBQWtBZ0FVVU5BQUpBSUFFZ0Ewa05BRUVBSVFRZ0FTQURSZzBCREFJTFFRQWhCQ0FDSUFGcUxBQUFRVUJJRFFcXFxuRUxJQUloQkFzZ0FDQUJOZ0lFSUFBZ0JEWUNBQXRLQVFGL0l3QkJJR3NpQWlRQUlBSWdBVFlDRENBQ0lBQTJBZ2dnQWtFUWFpQUNRUWhxXFxcbkVKd0ZJQUlvQWhBZ0FpZ0NHQkFBRVB3TklRRWdBa0VRYWhEakRDQUNRU0JxSkFBZ0FRdEpBUUYvSXdCQnNBRnJJZ0VrQUNBQlFRUnFRUVxcXG5ScUlBQkJxQUVRcEEwYVFiQUJRUWdRcFFjaUFFRUFOZ0lBSUFCQkJHb2dBVUVFYWtHc0FSQ2tEUm9nQVVHd0FXb2tBQ0FBQzBzQkFYOGpcXFxuQUVFZ2F5SUNKQUFnQWtFUWFpQUJLQUlBRUFvZ0FpQUNLQUlRSUFJckF4Z1FsUXNnQWlnQ0FDRUJJQUFnQWlzRENEa0RDQ0FBSUFGQkFFXFxcbmV0TndNQUlBSkJJR29rQUF0TUFRSi9Jd0JCRUdzaUJDUUFRUUFoQlFKQUlBRWdBMGtOQUNBRVFRaHFRUUFnQXlBQUlBRkJpTFRBQUJDVVxcXG5CeUFDSUFNZ0JDZ0NDQ0FFS0FJTUVLc0tJUVVMSUFSQkVHb2tBQ0FGQzAwQkFYOGpBRUVRYXlJQ0pBQUNRQUpBSUFGQi93QkxEUUFnQUNcXFxuQUJFSWNJREFFTElBSkJBRFlDRENBQ0lBRWdBa0VNYWhETUFpQUFJQUlvQWdBZ0FpZ0NCQkNCREFzZ0FrRVFhaVFBQzB3QkFuOGpBRUVRXFxcbmF5SUVKQUJCQUNFRkFrQWdBU0FEU1EwQUlBUkJDR3BCQUNBRElBQWdBVUhBNzhBQUVKZ0hJQUlnQXlBRUtBSUlJQVFvQWd3UW1Bb2hCUVxcXG5zZ0JFRVFhaVFBSUFVTFRBRUNmeU1BUVJCcklnUWtBRUVBSVFVQ1FDQUJJQU5KRFFBZ0JFRUlha0VBSUFNZ0FDQUJRY2oyd0FBUW1RY2dcXFxuQWlBRElBUW9BZ2dnQkNnQ0RCQ2lDaUVGQ3lBRVFSQnFKQUFnQlF0T0FRTi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FSREVEVUVBRU5NRUlBXFxcbklvQWd3aEF5QUJJQUlvQWdnaUJCQ1RCaUFBSUFFUXhBMDJBZ2dnQUNBRE5nSUVJQUFnQkRZQ0FDQUNRUkJxSkFBTFNRRUJmd0pBQWtBZ1xcXG5BVVVOQUFKQUlBRWdBMGtOQUVFQUlRUWdBU0FEUmcwQkRBSUxRUUFoQkNBQ0lBRnFMQUFBUVVCSURRRUxJQUloQkFzZ0FDQUJOZ0lFSUFcXFxuQWdCRFlDQUF0SkFRRi9Ba0FDUUNBQlJRMEFBa0FnQVNBRFNRMEFRUUFoQkNBQklBTkdEUUVNQWd0QkFDRUVJQUlnQVdvc0FBQkJRRWdOXFxcbkFRc2dBaUVFQ3lBQUlBRTJBZ1FnQUNBRU5nSUFDMFVCQW45QkFTRUNBa0FnQVVGUWFpSURRUXBKRFFCQmZ5QUJRU0J5SWdGQnFYOXFJZ1xcXG5JZ0FpQUJRWjkvYWtrYklnTkJFRWtoQWdzZ0FDQUROZ0lFSUFBZ0FqWUNBQXRRQVFGL0l3QkJFR3NpQWlRQUlBSkJDR29nQVNBQktBSUFcXFxuS0FJRUVRVUFJQUlnQWlnQ0NDQUNLQUlNS0FJWUVRVUFJQUlvQWdRaEFTQUFJQUlvQWdBMkFnQWdBQ0FCTmdJRUlBSkJFR29rQUF0UUFRXFxcbkYvSXdCQkVHc2lBaVFBSUFKQkNHb2dBU0FCS0FJQUtBSUVFUVVBSUFJZ0FpZ0NDQ0FDS0FJTUtBSVlFUVVBSUFJb0FnUWhBU0FBSUFJb1xcXG5BZ0EyQWdBZ0FDQUJOZ0lFSUFKQkVHb2tBQXRLQVFOL0FrQWdBU2dDQ0NJQ0lBRW9BZ1FpQTA4TkFDQUJJQUpCQVdvMkFnZ2dBU2dDQUNcXFxuQUNhaTBBQUNFRUN5QUFRUUE2QUFBZ0FFRUNhaUFFT2dBQUlBQWdBaUFEU1RvQUFRdEpBUUovSXdCQkVHc2lBeVFBSUFBZ0FpQUJheENRXFxcbkNpQUFLQUlJSVFRZ0F5QUFLQUlBTmdJSUlBTWdCRFlDQkNBRElBQkJDR28yQWdBZ0FTQUNJQU1ReGdJZ0EwRVFhaVFBQzBjQkFuOGpBRVxcXG5FUWF5SUVKQUFnQVNBQ0VPb0VJUVVnQkVFSWFpQUNRUWhxS0FJQU5nSUFJQVFnQWlrQ0FEY0RBQ0FBSUFGQkVHb2dCU0FFSUFNUTNBSWdcXFxuQkVFUWFpUUFDMHdDQVg4QmZpTUFRU0JySWdJa0FDQUNRUkJxRUFtdEVMWUlJQUpDQUVFQUlBSXBBeEFnQWlnQ0dCQzZBeUFDS1FNQUlRXFxcbk1nQUNBQ0tBSUlOZ0lJSUFBZ0F6Y0RBQ0FDUVNCcUpBQUxTZ0VDZnlNQVFSQnJJZ01rQUNBRFFRaHFJQUpCQUJEU0JDQURLQUlNSVFRZ1xcXG5BeWdDQ0NBQklBSVFwQTBoQVNBQUlBSTJBZ2dnQUNBRU5nSUVJQUFnQVRZQ0FDQURRUkJxSkFBTFNnRURmd0pBSUFFb0FnZ2lBaUFCS0FcXFxuSUVJZ05QRFFBZ0FTQUNRUUZxTmdJSUlBRW9BZ0FnQW1vdEFBQWhCQXNnQUVFQU9nQUFJQUJCQW1vZ0JEb0FBQ0FBSUFJZ0EwazZBQUVMXFxcblNRRUNmeU1BUVJCcklnTWtBQ0FCS0FJQUlBSW9BZ0FRSGlFQ0lBTkJDR29ReHdrZ0F5Z0NEQ0VCSUFBZ0F5Z0NDQ0lFTmdJQUlBQWdBU1xcXG5BQ0lBUWJOZ0lFSUFOQkVHb2tBQXRKQVFKL0l3QkJFR3NpQXlRQUlBRW9BZ0FnQWlnQ0FCQWpJUUlnQTBFSWFoREhDU0FES0FJTUlRRWdcXFxuQUNBREtBSUlJZ1EyQWdBZ0FDQUJJQUlnQkJzMkFnUWdBMEVRYWlRQUMwd0JBbjhqQUVFUWF5SUNKQUFnQWlBQktRSUFOd01JUVlDS3dRXFxcbkJCQWlBQ1FRaHFFSlVHSVFFZ0FpZ0NDQ0VESUFBZ0FpZ0NERFlDQkNBQUlBTkJBQ0FCR3pZQ0FDQUNRUkJxSkFBTFRnRUJmd0pBSUFFUVxcXG5rZ3dpQWtIL0FYRU5BQ0FBRUlzRUlBQkJBQ0FCRVBVRElBQkJ4QUJxSUFCQkZHb29BZ0FnQUM4QkFDQUFLQUlJUVlDQXhBQkdHellDQUFcXFxuOExJQUFnQWlBQkVQVURDMDBCQVg4Q1FDQUJFSklNSWdKQi93RnhEUUFnQUJDTUJDQUFRUUFnQVJEMUF5QUFRVEJxSUFCQkZHb29BZ0FnXFxcbkFDOEJBQ0FBS0FJSVFZQ0F4QUJHR3pZQ0FBOExJQUFnQWlBQkVQVURDMG9CQW44akFFRVFheUlFSkFCQkFDRUZBa0FnQVNBRFNRMEFJQVxcXG5SQkNHb2dBeUFBSUFGQm1KakJBQkRkQ1NBQ0lBTWdCQ2dDQ0NBRUtBSU1FS1lLSVFVTElBUkJFR29rQUNBRkMwMEJBWDhqQUVFUWF5SUVcXFxuSkFBZ0JDQUJJQUV2QVFBUW5BUWdCQ0FDSUFNUThBWWdBRUdBZ01RQU5nSUlJQUJCRkdvZ0JFRUlhaWdDQURZQ0FDQUFJQVFwQXdBM0FnXFxcbndnQkVFUWFpUUFDMG9CQVg4Q1FDQUFLQUlBSWdBb0FnUWdBQ2dDQ0NJRGF5QUNUdzBBSUFBZ0F5QUNFTzBDSUFBb0FnZ2hBd3NnQUNnQ1xcXG5BQ0FEYWlBQklBSVFwQTBhSUFBZ0F5QUNhallDQ0VFQUMwd0FBa0FDUUNBQlFRbEpEUUFnQVNBQUVMNEJJUUVNQVFzZ0FCQXVJUUVMQWtcXFxuQWdBVVVOQUFKQVFlQ256d0FRa0E1RkRRQWdBUkRSRFJEVURBMEJDeUFCUVFBZ0FCQ2hEUm9MSUFFTFNnRUJmd0pBSUFBb0FnQWlBQ2dDXFxcbkJDQUFLQUlJSWdOcklBSlBEUUFnQUNBRElBSVE3Z0lnQUNnQ0NDRURDeUFBS0FJQUlBTnFJQUVnQWhDa0RSb2dBQ0FESUFKcU5nSUlRUVxcXG5BTFJBRUNmd0pBSUFBb0FnQWlBQ2dDQUNJRElBSnFJZ1FnQTBrZ0JFRVBTM0lpQkEwQUlBQWdBMnBCQkdvZ0FTQUNFS1FOR2lBQUlBQW9cXFxuQWdBZ0FtbzJBZ0FMSUFRTFFRQUNRQUpBSUFJZ0FVa05BQ0FDSUFSTkRRRWdBaUFFSUFVUWd3VUFDeUFCUVFBZ0JSQ0VCUUFMSUFBZ0FpXFxcbkFCYXpZQ0JDQUFJQU1nQVVFTWJHbzJBZ0FMWVFFQmZ5TUFRVEJySWdFa0FDQUJRUzgyQWl3Z0FVS2lnSUNBOEFRM0FpUWdBVUxjZ0lDQVxcXG5vQWMzQWh3Z0FVS3FnSUNBd0E4M0FoUWdBVUsrZ0lDQW9BYzNBZ3dnQVVLL2dJQ0F3QWMzQWdRZ0FDQUJRUVJxRVBjRElBRkJNR29rQUFcXFxudElBUUYvSXdCQkVHc2lBU1FBQWtBZ0FDZ0NCRVVOQUNBQklBQWdBQ2dDRUNBQVFSUnFLQUlBRUlZRUlBRW9BZ0FnQVNnQ0JDQUJRUWhxXFxcbktBSUFFS1FMQ3lBQlFSQnFKQUFMUXdFQmZ5TUFRUkJySWdJa0FBSkFBa0FnQVVIL0FYRU5BRUVBSVFBTUFRc2dBa0VJYWlBQVFRUnFJQVxcXG5BUWl3VWdBa0VJYWhDOUJ5RUFDeUFDUVJCcUpBQWdBQXRTQVFGL1FRQWhBd0pBSUFFZ0FrR3Nxc0FBUVFjUXBnb05BRUVCSVFNZ0FTQUNcXFxuUWJPcXdBQkJBeENtQ2cwQVFRSkJBeUFCSUFKQnRxckFBRUVERUtZS0d5RURDeUFBUVFBNkFBQWdBQ0FET2dBQkMwVUJBWDhnQUNBQUtBXFxcbklJSUFBb0FnQWlCQ0FDYWkwQUFFRUJjV3MyQWdnZ0FDQUNJQUVRd1FnZ0JDQUNRUUowYTBGOGFpQUROZ0lBSUFBZ0FDZ0NERUVCYWpZQ1xcXG5EQXRJQVFGL0l3QkJJR3NpQkNRQUlBUWdBaUFERUdJQ1FBSkFJQVFvQWdBTkFDQUFJQVFwQWdRM0FnQU1BUXNnQkVFUE5nSVFJQUFnQVNcXFxuQUVRUkJxRU0wSEN5QUVRU0JxSkFBTFJ3RUNmeU1BUVJCcklnTWtBQ0FEUVFocUlnUkJBRFlDQUNBRFFnRTNBd0FnQXlBQklBSVE1Z2dnXFxcbkFFRUlhaUFFS0FJQU5nSUFJQUFnQXlrREFEY0NBQ0FEUVJCcUpBQUxSd0VCZnlNQVFSQnJJZ01rQUNBRElBRXBBZ0EzQXdnZ0FpQURRUVxcXG5ocUVNb0pJUUVnQXlnQ0NDRUNJQUFnQXlnQ0REWUNCQ0FBSUFKQkFDQUJHellDQUNBRFFSQnFKQUFMU2dFQmZ5TUFRUkJySWdRa0FDQUVcXFxuUVFocUlBRW9BaFFnQVVFY2FpZ0NBQ0FDSUFOQmpKSEJBQkNtQmlBRUtBSU1JUUVnQUNBRUtBSUlOZ0lBSUFBZ0FUWUNCQ0FFUVJCcUpBXFxcbkFMUVFBQ1FBSkFJQUlnQVVrTkFDQUNJQVJORFFFZ0FpQUVJQVVRZ3dVQUN5QUJJQUlnQlJDRUJRQUxJQUFnQWlBQmF6WUNCQ0FBSUFNZ1xcXG5BVUVEZEdvMkFnQUxRUUFDUUFKQUlBSWdBVWtOQUNBQ0lBUk5EUUVnQWlBRUlBVVFnd1VBQ3lBQklBSWdCUkNFQlFBTElBQWdBaUFCYXpcXFxuWUNCQ0FBSUFNZ0FVRURkR28yQWdBTFNnRUJmd0pBSUFBb0FnZ2lBeUFBS0FJRVJ3MEFJQUFnQXhDT0NTQUFLQUlJSVFNTElBQW9BZ0FnXFxcbkEwRURkR29pQXlBQ05nSUVJQU1nQVRvQUFDQUFJQUFvQWdoQkFXbzJBZ2dMU3dFQmZ5TUFRUkJySWdNa0FDQURJQUVnQVM4QkFCQ2RCQ1xcXG5BRElBSVF1QWNnQUVHQWdNUUFOZ0lFSUFCQkVHb2dBMEVJYWlnQ0FEWUNBQ0FBSUFNcEF3QTNBZ2dnQTBFUWFpUUFDMVFCQVg4Q1FBSkFcXFxuSUFFb0FnZ2lBZzBBSUFBZ0FTZ0NBRFlDQUNBQktBSUVJZ0VOQVNBQVFZR0F4QUEyQWdnUEN5QUFJQUkyQWdnZ0FDQUJLUUlBTndJQUR3XFxcbnNnQUVHQWdNUUFOZ0lJSUFBZ0FUWUNCQXRJQVFGL0l3QkJFR3NpQWlRQUlBSkJDR29nQVJEYUJ5QUNJQUlvQWdnZ0FpZ0NEQ2dDR0JFRlxcXG5BQ0FDS0FJRUlRRWdBQ0FDS0FJQU5nSUFJQUFnQVRZQ0JDQUNRUkJxSkFBTFNBRUJmeU1BUVJCcklnSWtBQ0FDUVFocUlBRVEyZ2NnQWlcXFxuQUNLQUlJSUFJb0Fnd29BaGdSQlFBZ0FpZ0NCQ0VCSUFBZ0FpZ0NBRFlDQUNBQUlBRTJBZ1FnQWtFUWFpUUFDMGdCQVg4akFFRVFheUlDXFxcbkpBQWdBa0VJYWlBQkVOb0hJQUlnQWlnQ0NDQUNLQUlNS0FJWUVRVUFJQUlvQWdRaEFTQUFJQUlvQWdBMkFnQWdBQ0FCTmdJRUlBSkJFR1xcXG5va0FBdElBUUYvSXdCQkVHc2lBaVFBSUFKQkNHb2dBUkRhQnlBQ0lBSW9BZ2dnQWlnQ0RDZ0NHQkVGQUNBQ0tBSUVJUUVnQUNBQ0tBSUFcXFxuTmdJQUlBQWdBVFlDQkNBQ1FSQnFKQUFMUWdFQmZ5TUFRUkJySWdNa0FDQURJQUkyQWd3Z0FTQURRUXhxRU53RElBQWdBa0Y4YWlnQ0FEXFxcbllDQUNBQUlBRW9BZ0FnQW10QkFuVTJBZ1FnQTBFUWFpUUFDMFVCQVg4akFFRWdheUlESkFBZ0F5QUNOZ0lZSUFNZ0FqWUNGQ0FESUFFMlxcXG5BaEFnQTBFSWFpQURRUkJxRVBZS0lBQWdBeWdDQ0NBREtBSU1FSlFMSUFOQklHb2tBQXRIQVFOL0l3QkJFR3NpQVNRQUFrQWdBQ2dDUkNcXFxuSUNRUWxKRFFBZ0FDZ0NDQ0VESUFFZ0FDZ0NCRFlDQ0NBQklBSTJBZ1FnQVNBRE5nSUFJQUVRdHdvTElBRkJFR29rQUF0TkFRRi9Jd0JCXFxcbkVHc2lBaVFBQWtBZ0FTZ0NBQTBBSUFBZ0FTa0NCRGNEQUNBQ1FSQnFKQUFQQ3lBQ0lBRXBBZ1EzQXdoQnVOekFBRUVySUFKQkNHcEI1TlxcXG56QUFFSEkzY0FBRU1JRUFBdERBUUovSXdCQkVHc2lBU1FBUVFBaEFnSkFJQUFRd3d4RkRRQWdBU0FBS0FJQUVCWTJBZ3dnQVVFTWFoREJcXFxuRENFQ0lBRkJER29RbGdzTElBRkJFR29rQUNBQ0MwUUJBMzhqQUVFUWF5SUNKQUFnQVNnQ0FCQWdJUUVnQWtFSWFoREhDU0FDS0FJTUlRXFxcbk1nQUNBQ0tBSUlJZ1EyQWdBZ0FDQURJQUVnQkJzMkFnUWdBa0VRYWlRQUMwa0JBWDhqQUVFUWF5SUNKQUFDUUNBQUxRQUFEUUFnQUNnQ1xcXG5CQ0VBSUFKQkVHb2tBQ0FBRHdzZ0FpQUFMUUFCT2dBUFFmeUN3UUJCS3lBQ1FROXFRZXlDd1FBZ0FSRENCQUFMUlFFQ2Z5TUFRUkJySWdcXFxuSWtBQ0FDUVFocUlnTkJBRFlDQUNBQ1FnRTNBd0FnQWlBQkVQNERJQUJCQ0dvZ0F5Z0NBRFlDQUNBQUlBSXBBd0EzQWdBZ0FrRVFhaVFBXFxcbkMwZ0JBWDhqQUVFUWF5SURKQUFnQTBFSWFpQUJLQUlVSUFGQkhHb29BZ0FnQWtHc2tjRUFFTEVHSUFNb0Fnd2hBU0FBSUFNb0FnZzJBZ1xcXG5BZ0FDQUJOZ0lFSUFOQkVHb2tBQXRJQVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQWlBQktBSVVJQUZCSEdvb0FnQkJuSkhCQUJENUJTQURcXFxuS0FJTUlRRWdBQ0FES0FJSU5nSUFJQUFnQVRZQ0JDQURRUkJxSkFBTFR3RUNmMEVBTFFEeHBrOGFJQUVvQWdRaEFpQUJLQUlBSVFNQ1FFXFxcbkVJUVFRUTl3c2lBUTBBUVFSQkNCQ2FEUUFMSUFFZ0FqWUNCQ0FCSUFNMkFnQWdBRUdNNzgwQU5nSUVJQUFnQVRZQ0FBdERBUUYvSXdCQlxcXG5FR3NpQXlRQUlBTWdBU0FDRUdJZ0F5Z0NCQ0VDSUFNb0FnQWhBU0FBSUFOQkNHb29BZ0EyQWdRZ0FFRUFJQUlnQVJzMkFnQWdBMEVRYWlcXFxuUUFDMGdCQVg4akFFRWdheUlESkFBZ0EwRU1ha0lBTndJQUlBTkJBVFlDQkNBRFFmei96UUEyQWdnZ0F5QUJOZ0ljSUFNZ0FEWUNHQ0FEXFxcbklBTkJHR28yQWdBZ0F5QUNFSmdJQUFzL0FRRitBa0FDUUNBQktRTUFJZ0pRUlEwQVFRQWhBUXdCQ3lBQklBSkNmM3dnQW9NM0F3QkJBU1xcXG5FQkN5QUFJQUUyQWdBZ0FDQUNlcWRCQTNZMkFnUUxQZ0FDUUFKQUlBSWdBVWtOQUNBQ0lBUk5EUUVnQWlBRUlBVVFnd1VBQ3lBQklBSWdcXFxuQlJDRUJRQUxJQUFnQWlBQmF6WUNCQ0FBSUFNZ0FXbzJBZ0FMUkFFQ2Z5TUFRU0JySWdJa0FDQUNRUU02QUFnZ0FpQUJPUU1RSUFKQkNHXFxcbm9nQWtFWWFrR29nY0FBRUpnRElRTWdBRUVCTmdJQUlBQWdBellDQkNBQ1FTQnFKQUFMUkFFQ2Z5TUFRU0JySWdJa0FDQUNRUU02QUFnZ1xcXG5BaUFCT1FNUUlBSkJDR29nQWtFWWFrRzRnY0FBRUpnRElRTWdBRUVCTmdJQUlBQWdBellDQkNBQ1FTQnFKQUFMU0FFQmZ5TUFRUkJySWdcXFxuQWtBQUpBUVFBdEFQS21UMEVEUmcwQUlBQkJBVG9BQ3lBQUlBQkJDMm8yQWd4QjhxYlBBRUVBSUFCQkRHcEJwSVhBQUJEOUFnc2dBRUVRXFxcbmFpUUFDMGNCQVg4akFFRWdheUlDSkFBZ0FrRVVha0lBTndJQUlBSkJBVFlDRENBQ1FkeWJ3QUEyQWdnZ0FrSGdnc0FBTmdJUUlBRWdBa1xcXG5FSWFoQ3RCU0VCSUFKQklHb2tBQ0FCQ3o0QkFuOGdBU0FCS0FJRUlnTWdBU2dDQUNJRUlBSnFJZ0pCQVdvZ0FpQUVTU0FDSUFOUGNpSURcXFxuR3pZQ0FDQUFJQUkyQWdRZ0FDQURRUUZ6TmdJQUMwVUJBWDhqQUVIQUFHc2lBaVFBSUFJZ0FDZ0NBQ0FBS0FJSUVLUUhJQUpCSUdvZ0FTXFxcbmdDQUNBQktBSUlFS1FISUFJZ0FrRWdhaENLQVNFQUlBSkJ3QUJxSkFBZ0FBdEZBUUYvSXdCQkVHc2lBeVFBSUFOQkNHb2dBaUFCS0FJQVxcXG5JZ0VvQWdBZ0FTZ0NDQkN4Q3lBREtBSU1JUUVnQUNBREtBSUlOZ0lBSUFBZ0FUWUNCQ0FEUVJCcUpBQUxRQUVDZnlNQVFkQUFheUlFSkFcXFxuQWdBU0FDRU5zRUlRVWdCRUVJYWlBQ1FjZ0FFS1FOR2lBQUlBRkJFR29nQlNBRVFRaHFJQU1ROXdJZ0JFSFFBR29rQUF0QUFRSi9Jd0JCXFxcbjBBQnJJZ1FrQUNBQklBSVEyd1FoQlNBRVFRaHFJQUpCeUFBUXBBMGFJQUFnQVVFUWFpQUZJQVJCQ0dvZ0F4Q3JBeUFFUWRBQWFpUUFDMFxcXG5JQkFYOENRQ0FCS0FJQUlnRWdBRUVJYWlnQ0FDSUNUdzBBSUFBb0FnQkJGR29nQUNnQ0JDQUJRUWQwYWtFVWFoQ0NDdzhMSUFFZ0FrR2NcXFxubmNBQUVJRUZBQXREQVFGL0FrQWdBU2dDQUNJQklBQkJDR29vQWdBaUFrOE5BQ0FBS0FJQVFSUnFJQUFvQWdRZ0FVSFlBR3hxUVJScUVJXFxcbklMRHdzZ0FTQUNRWnlkd0FBUWdRVUFDMElBQWtBZ0FTZ0NBQ0FDUVFKMGEwRjhhaWdDQUNJQ0lBQW9BZ0FpQVNnQ0JDSUFTUTBBSUFJZ1xcXG5BRUhjbmNBQUVJRUZBQXNnQVNnQ0FDQUNRUnhzYWpVQ0dBdERBQUpBSUFFb0FnQWdBa0VDZEd0QmZHb29BZ0FpQWlBQUtBSUFJZ0VvQWdcXFxuUWlBRWtOQUNBQ0lBQkIzSjNBQUJDQkJRQUxJQUVvQWdBZ0FrSFlBR3hxTlFKVUMwSUFBa0FnQVNnQ0FDQUNRUUowYTBGOGFpZ0NBQ0lDXFxcbklBQW9BZ0FpQVNnQ0JDSUFTUTBBSUFJZ0FFSGNuY0FBRUlFRkFBc2dBU2dDQUNBQ1FRZDBhalVDZUFzK0FBSkFBa0FnQWlBQlNRMEFJQVxcXG5JZ0JFME5BU0FDSUFRZ0JSQ0RCUUFMSUFFZ0FpQUZFSVFGQUFzZ0FDQUNJQUZyTmdJRUlBQWdBeUFCYWpZQ0FBczdBQUpBQWtBZ0FRMEFcXFxuUVFBaEFnd0JDMEVBUVg4Z0FrRi9hbWQySUFKQkFra2JRUUZxSWdGQkFFY2hBZ3NnQUNBQk5nSUVJQUFnQWpZQ0FBdEtBUUovUVFOQkFCXFxcbkNHQWlFQVFRQkJBQ2dDZ0tkUElnRWdBQ0FCR3pZQ2dLZFBBa0FnQVEwQUlBQVBDeUFBS0FJQVFjQUFJQUFvQWdSQkJuUVF0UXNnQUVFUVxcXG5RUVFRc2d3Z0FRdEJBUUovSXdCQkVHc2lBU1FBSUFFZ0FCRGpDQUpBSUFFb0FnUWlBRVVOQUNBQlFRaHFLQUlBSWdKRkRRQWdBU2dDQUNcXFxuQUNJQUFRc2d3TElBRkJFR29rQUFzK0FBSkFBa0FnQWlBQlNRMEFJQUlnQkUwTkFTQUNJQVFnQlJDREJRQUxJQUVnQWlBRkVJUUZBQXNnXFxcbkFDQUNJQUZyTmdJRUlBQWdBeUFCYWpZQ0FBcytBQUpBQWtBZ0FpQUJTUTBBSUFJZ0JFME5BU0FDSUFRZ0JSQ0RCUUFMSUFFZ0FpQUZFSVxcXG5RRkFBc2dBQ0FDSUFGck5nSUVJQUFnQXlBQmFqWUNBQXMrQUFKQUFrQWdBaUFCU1EwQUlBSWdCRTBOQVNBQ0lBUWdCUkNEQlFBTElBRWdcXFxuQWlBRkVJUUZBQXNnQUNBQ0lBRnJOZ0lFSUFBZ0F5QUJhallDQUFzK0FBSkFBa0FnQWlBQlNRMEFJQUlnQkUwTkFTQUNJQVFnQlJDREJRXFxcbkFMSUFFZ0FpQUZFSVFGQUFzZ0FDQUNJQUZyTmdJRUlBQWdBeUFCYWpZQ0FBdE5BUUYvSXdCQkVHc2lBaVFBSUFJZ0FFRU1hallDRENBQlxcXG5RZHovelFCQkRVSEEvODBBUVFVZ0FFSHMvODBBUWNYL3pRQkJCU0FDUVF4cVFjei96UUFRL3dJaEFDQUNRUkJxSkFBZ0FBdEFBUUYvSXdcXFxuQkJJR3NpQXlRQUlBTWdBallDR0NBRElBSTJBaFFnQXlBQk5nSVFJQU5CQ0dvZ0EwRVFhaER6Q2lBQUlBTXBBd2czQXdBZ0EwRWdhaVFBXFxcbkMwSUFBa0FnQWlBRFNRMEFJQUFnQXpZQ0JDQUFJQUUyQWdBZ0FFRU1haUFDSUFOck5nSUFJQUFnQVNBRGFqWUNDQThMUWZDTHdBQkJJMFxcXG5Hd2tNQUFFSU1IQUF0Q0FRRi9Jd0JCRUdzaUF5UUFBa0FDUUNBQkRRQWdBRUVFT2dBQUlBQWdBallDQkF3QkN5QURRUWhxSUFJUSt3UWdcXFxuQUNBREtRTUlOd0lBQ3lBRFFSQnFKQUFMU3dBQ1FBSkFBa0FnQVNBQ1FaV3N3QUJCQnhDbUNnMEFJQUVnQWtHY3JNQUFRUWNRcGdvTkFTXFxcbkFBUVFJNkFBRU1BZ3NnQUVFQU9nQUJEQUVMSUFCQkFUb0FBUXNnQUVFQU9nQUFDMElCQVg4akFFRVFheUlFSkFBZ0JFRUlhaUFDSUFFb1xcXG5BZ0FnQVNnQ0NDQURFUE1GSUFRb0Fnd2hBU0FBSUFRb0FnZzJBZ0FnQUNBQk5nSUVJQVJCRUdva0FBdENBUUYvSXdCQkVHc2lCQ1FBSUFcXFxuUkJDR29nQWlBQktBSUFJQUVvQWdnZ0F4RDVCU0FFS0FJTUlRRWdBQ0FFS0FJSU5nSUFJQUFnQVRZQ0JDQUVRUkJxSkFBTFFnRUJmeU1BXFxcblFSQnJJZ1FrQUNBRVFRaHFJQUlnQVNnQ0FDQUJLQUlJSUFNUSt3VWdCQ2dDRENFQklBQWdCQ2dDQ0RZQ0FDQUFJQUUyQWdRZ0JFRVFhaVxcXG5RQUMwVUJBWDhDUUFKQUlBSkZEUUJCQVNFRElBRXRBQUJCTDBZTkFRdEJBQ0VEQ3lBQUlBTTZBQjRnQUVFR09nQUlJQUFnQWpZQ0JDQUFcXFxuSUFFMkFnQWdBRUdBQkRzQkhBczZBUUovSXdCQkVHc2lBaVFBSUFKQkNHb2dBU0FBUVFBUWdRZ0NRQ0FDS0FJSUlnTkZEUUFnQWtFUWFpXFxcblFBSUFNUEN5QUJJQUFRbWcwQUN6OEJBWDhnQUNnQ0FFSElBR29oQVNBQUtBSUlJUUFDUUFOQUlBQkZEUUVnQVVGTWFoRGpEQ0FCRU5rS1xcXG5JQUJCZjJvaEFDQUJRWUFCYWlFQkRBQUxDd3MrQVFGL0FrQURRQ0FDUlEwQklBQXRBQUFoQXlBQUlBRXRBQUE2QUFBZ0FTQURPZ0FBSUFcXFxuSkJmMm9oQWlBQVFRRnFJUUFnQVVFQmFpRUJEQUFMQ3dzL0FRRi9JQUFvQWdCQnlBQnFJUUVnQUNnQ0NDRUFBa0FEUUNBQVJRMEJJQUZCXFxcblRHb1E0d3dnQVJEakRDQUFRWDlxSVFBZ0FVSFlBR29oQVF3QUN3c0xPZ0VCZnlNQVFTQnJJZ0lrQUNBQ0lBRTJBZ3dnQWlBQU5nSUlJQVxcXG5KQkVHb2dBa0VJYWhDY0JTQUNRUkJxRUVBaEFTQUNRU0JxSkFBZ0FRcy9BUUovSXdCQkVHc2lBU1FBQWtBZ0FDZ0NCQ0FBS0FJSUlnSk5cXFxuRFFBZ0FVRUlhaUFBSUFJUWpBTWdBU2dDQ0NBQktBSU1FTzBKQ3lBQlFSQnFKQUFMT2dFQ2Z5TUFRUkJySWdFa0FDQUJRUWhxUVFRZ0FFXFxcbkVBRUlnSUFrQWdBU2dDQ0NJQ1JRMEFJQUZCRUdva0FDQUNEd3RCQkNBQUVKb05BQXMvQVFKL0l3QkJFR3NpQVNRQUFrQWdBQ2dDQkNBQVxcXG5LQUlJSWdKTkRRQWdBVUVJYWlBQUlBSVF2Z01nQVNnQ0NDQUJLQUlNRU80SkN5QUJRUkJxSkFBTFB3RUNmeU1BUVJCcklnRWtBQUpBSUFcXFxuQW9BZ1FnQUNnQ0NDSUNUUTBBSUFGQkNHb2dBQ0FDRUtnRElBRW9BZ2dnQVNnQ0RCRHZDUXNnQVVFUWFpUUFDem9CQW44akFFRVFheUlCXFxcbkpBQWdBVUVJYWtFRUlBQkJBQkNKQ0FKQUlBRW9BZ2dpQWtVTkFDQUJRUkJxSkFBZ0FnOExRUVFnQUJDYURRQUxTQUVDZnlBQktBSUFJUVxcXG5JZ0FVRUFOZ0lBQWtBZ0FnMEFFSWNPQUFzZ0FTZ0NCQ0VEUVFnUXJnY2lBU0FETmdJRUlBRWdBallDQUNBQVFkRGd3QUEyQWdRZ0FDQUJcXFxuTmdJQUMwRUJBMzhDUUFKQUlBRW9BZ0FpQWlBQktBSUVJZ05IRFFBTUFRc2dBU0FEUVg5cUlnUTJBZ1FnQkMwQUFDRUJDeUFBSUFFNkFBXFxcbkVnQUNBQ0lBTkhPZ0FBQ3o0QkFYOGpBRUVRYXlJRkpBQWdCVUVJYWtFQUlBTWdBU0FDSUFRUW1RY2dCU2dDRENFRUlBQWdCU2dDQ0RZQ1xcXG5BQ0FBSUFRMkFnUWdCVUVRYWlRQUN6NEJBWDhqQUVFUWF5SUZKQUFnQlVFSWFrRUFJQU1nQVNBQ0lBUVFtZ2NnQlNnQ0RDRUVJQUFnQlNcXFxuZ0NDRFlDQUNBQUlBUTJBZ1FnQlVFUWFpUUFDejhCQVg4akFFRVFheUlGSkFBZ0JVRUlhaUFDSUFNZ0FVR0FBU0FFRUpvSElBVW9BZ3doXFxcbkJDQUFJQVVvQWdnMkFnQWdBQ0FFTmdJRUlBVkJFR29rQUFzL0FRSi9Jd0JCRUdzaUFTUUFBa0FnQUNnQ0JDQUFLQUlJSWdKTkRRQWdBVVxcXG5FSWFpQUFJQUlRNVFNZ0FTZ0NDQ0FCS0FJTUVQVUpDeUFCUVJCcUpBQUxQd0VDZnlNQVFSQnJJZ0VrQUFKQUlBQW9BZ1FnQUNnQ0NDSUNcXFxuVFEwQUlBRkJDR29nQUNBQ0VPWURJQUVvQWdnZ0FTZ0NEQkQxQ1FzZ0FVRVFhaVFBQ3p3QkFYOGpBRUVRYXlJQkpBQWdBVUVJYWlBQUlBXFxcbkFvQWlCQkFXb1FnQWNnQVNnQ0NDQUJLQUlNUVM4UTJBY2hBQ0FCUVJCcUpBQWdBRUVCY3d0RkFRRi9JQUlvQWdBaEF3SkFBMEFDUUNBQlxcXG5FSVVESWdKQmdJREVBRWNOQUVFQUlRRU1BZ3NnQXlnQ0FDQUNTdzBBQzBFQklRRUxJQUFnQWpZQ0JDQUFJQUUyQWdBTFFRRUJmd0pBSUFcXFxuQW9BZ2dpQWlBQUtBSUVSdzBBSUFBZ0FoQ1BDU0FBS0FJSUlRSUxJQUFvQWdBZ0FrRUNkR29nQVRZQ0FDQUFJQUFvQWdoQkFXbzJBZ2dMXFxcbk9nRUNmeU1BUVJCcklnRWtBQ0FCUVFocVFRUWdBRUVBRUpRSUFrQWdBU2dDQ0NJQ1JRMEFJQUZCRUdva0FDQUNEd3RCQkNBQUVKb05BQVxcXG50RkFRRi9RUUF0QVBHbVR4b0NRRUVNUVFRUTl3c2lCQTBBUVFSQkRCQ2FEUUFMSUFRZ0FUb0FDQ0FFSUFNMkFnUWdCQ0FDTmdJQUlBQWdcXFxuQkRZQ0JDQUFRUU0yQWdBTFBRRUJmeU1BUVJCcklnSWtBQ0FDSUFFb0FnQWdBU2dDQ0JEWEJTQUFRUWhxSUFKQkNHb29BZ0EyQWdBZ0FDXFxcbkFDS1FNQU53SUFJQUpCRUdva0FBcy9BUUovQWtBQ1FDQUJLQUlJSWdJTkFBd0JDeUFCSUFKQmYyb2lBellDQ0NBQktBSUFJQU5xTFFBQVxcXG5JUUVMSUFBZ0FUb0FBU0FBSUFKQkFFYzZBQUFMT3dFQ2Z5TUFRUkJySWdFa0FFRUFJUUlDUUNBQUxRQUFRUVJHRFFBZ0FTQUFLUUlBTndcXFxuTUlJQUZCQ0dvUWhnb2hBZ3NnQVVFUWFpUUFJQUlMUFFFQmZ5TUFRUkJySWdNa0FDQURRUWhxSUFFZ0FTZ0NDQ0FDRUlzR0lBTW9BZ3doXFxcbkFTQUFJQU1vQWdnMkFnQWdBQ0FCTmdJRUlBTkJFR29rQUFzOUFRRi9Jd0JCRUdzaUF5UUFJQU5CQ0dvZ0FTQUJLQUlJSUFJUWpRWWdBeVxcXG5nQ0RDRUJJQUFnQXlnQ0NEWUNBQ0FBSUFFMkFnUWdBMEVRYWlRQUN6MEJBWDhqQUVFUWF5SURKQUFnQTBFSWFpQUJJQUVvQWdnZ0FoQ01cXFxuQmlBREtBSU1JUUVnQUNBREtBSUlOZ0lBSUFBZ0FUWUNCQ0FEUVJCcUpBQUxQZ0VCZnlNQVFSQnJJZ0lrQUNBQ1FRaHFJQUZCQkdwQjFKXFxcblBBQUJDYURDQUNLQUlNSVFFZ0FDQUNLQUlJTmdJQUlBQWdBVFlDQkNBQ1FSQnFKQUFMUGdFQmZ5TUFRUkJySWdJa0FDQUNRUWhxSUFGQlxcXG5CR3BCa0pUQUFCQ2FEQ0FDS0FJTUlRRWdBQ0FDS0FJSU5nSUFJQUFnQVRZQ0JDQUNRUkJxSkFBTFBnRUJmeU1BUVJCcklnSWtBQ0FDUVFcXFxuaHFJQUZCQkdwQnpKVEFBQkNhRENBQ0tBSU1JUUVnQUNBQ0tBSUlOZ0lBSUFBZ0FUWUNCQ0FDUVJCcUpBQUxQZ0VCZnlNQVFSQnJJZ0lrXFxcbkFDQUNRUWhxSUFGQkJHcEJpSlhBQUJDYURDQUNLQUlNSVFFZ0FDQUNLQUlJTmdJQUlBQWdBVFlDQkNBQ1FSQnFKQUFMUGdFQmZ5TUFRUlxcXG5CcklnSWtBQ0FDUVFocUlBRkJCR3BCeEpYQUFCQ2FEQ0FDS0FJTUlRRWdBQ0FDS0FJSU5nSUFJQUFnQVRZQ0JDQUNRUkJxSkFBTFBnRUJcXFxuZjBFWVFRUVFwUWNpQWlBQk5nSUFJQUlnQUNrQ0FEY0NCQ0FDUVF4cUlBQkJDR29wQWdBM0FnQWdBa0VVYWlBQVFSQnFLQUlBTmdJQUlBXFxcbklMUHdFQmZ3SkFJQUVvQWdBaUFTQUFRUWhxS0FJQUlnSlBEUUFnQUNnQ0FDQUFLQUlFSUFGQkhHeHFFUE1ORUlJTER3c2dBU0FDUVp5ZFxcXG53QUFRZ1FVQUN6Z0JBMzhnQUNnQ0FDSUNJQUFnQVJDNUJDSURhaUFCcDBFWmRpSUVPZ0FBSUFJZ0FDZ0NCQ0FEUVhocWNXcEJDR29nQkRcXFxub0FBQ0FEQ3owQkFYOGpBRUVRYXlJREpBQWdBeUFCSUFJZ0FDZ0NCRUVCYWhENkF5QUFLQUlBSUFNb0FnaHJJQU1vQWdRZ0F5Z0NBQkN5XFxcbkRDQURRUkJxSkFBTFBRRUJmeU1BUVJCcklnTWtBQ0FEUVFocUlBRVE3QWNnQWlBREtBSUlJQU1vQWd3US9RZ2hBU0FBUVFJMkFnQWdBQ1xcXG5BQk5nSUVJQU5CRUdva0FBczlBUUYvSXdCQkVHc2lBeVFBSUFOQkNHb2dBUkRzQnlBQ0lBTW9BZ2dnQXlnQ0RCRDlDQ0VCSUFCQkFUc0JcXFxuQUNBQUlBRTJBZ1FnQTBFUWFpUUFDejBCQVg4akFFRVFheUlESkFBZ0EwRUlhaUFCRU93SElBSWdBeWdDQ0NBREtBSU1FUDBJSVFFZ0FFXFxcbkVCT2dBQUlBQWdBVFlDQkNBRFFSQnFKQUFMUFFFQmZ5TUFRUkJySWdNa0FDQURRUWhxSUFFUTdBY2dBaUFES0FJSUlBTW9BZ3dRL1FnaFxcXG5BU0FBUVFBMkFnQWdBQ0FCTmdJRUlBTkJFR29rQUFzL0FRSi9Ba0FDUUNBQktBSUFJZ0lnQVNnQ0JDSURSdzBBREFFTElBRWdBa0VCYWpcXFxuWUNBQ0FDTFFBQUlRRUxJQUFnQVRvQUFTQUFJQUlnQTBjNkFBQUxQQUVCZnlNQVFSQnJJZ01rQUNBRFFRQTJBZ3dnQXlBQ0lBTkJER29RXFxcbnp3SWdBQ0FCSUFNb0FnQWdBeWdDQkJETEJpRUNJQU5CRUdva0FDQUNDendCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFCS0FJQUVMQUhJQVxcXG5JdEFBa2hBU0FBSUFJdEFBaEJBWEU2QUFBZ0FDQUJPZ0FCSUFKQkVHb2tBQXM4QVFGL0l3QkJFR3NpQXlRQUlBTkJBRFlDRENBRElBSWdcXFxuQTBFTWFoQ2VBaUFBSUFFZ0F5Z0NBQ0FES0FJRUVNd0dJUUlnQTBFUWFpUUFJQUlMUEFFQmZ5TUFRUkJySWdNa0FDQURRUUEyQWd3Z0F5XFxcbkFDSUFOQkRHb1FuZ0lnQUNBQklBTW9BZ0FnQXlnQ0JCRENCaUVDSUFOQkVHb2tBQ0FDQ3owQkFYOGpBRUVRYXlJRUpBQWdCRUVJYWlBQlxcXG5RWUFCSUFJZ0F4Q3lCeUFFS0FJTUlRTWdBQ0FFS0FJSU5nSUFJQUFnQXpZQ0JDQUVRUkJxSkFBTE93RUJmeU1BUVJCcklnSWtBQ0FDUVFcXFxuaHFJQUZCQkdvZ0FSQ1pCQ0FDS0FJTUlRRWdBQ0FDS0FJSU5nSUFJQUFnQVRZQ0JDQUNRUkJxSkFBTFBBRUJmeU1BUVJCcklnTWtBQ0FEXFxcblFRaHFJQUVnQWtFQUlBTVEwd01nQXlnQ0RDRUNJQUFnQXlnQ0NEWUNBQ0FBSUFJMkFnUWdBMEVRYWlRQUN6a0JBWDlCQVNFQkFrQWdBRVxcXG5GUWFrRUtTUTBBUVFBaEFTQUFRYjkvYWlJQVFTVkxEUUJDdjRDQWdQQUhJQUN0aUtkQkFYRWhBUXNnQVFzL0FRSi9Ba0FDUUNBQktBSUFcXFxuSWdJZ0FTZ0NCQ0lEUncwQURBRUxJQUVnQWtFQmFqWUNBQ0FDTFFBQUlRRUxJQUFnQVRvQUFTQUFJQUlnQTBjNkFBQUxQQUVCZnlNQVFSXFxcbkJySWdNa0FDQURRUUEyQWd3Z0F5QUNJQU5CREdvUTB3SWdBQ0FCSUFNb0FnQWdBeWdDQkJEZUJpRUNJQU5CRUdva0FDQUNDendCQVg4alxcXG5BRUVRYXlJREpBQWdBMEVBTmdJTUlBTWdBaUFEUVF4cUVOTUNJQUFnQVNBREtBSUFJQU1vQWdRUXl3a2hBaUFEUVJCcUpBQWdBZ3MrQVFcXFxuRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FTQUJLQUlBS0FJRUVRVUFJQUlvQWd3aEFTQUFJQUlvQWdnMkFnQWdBQ0FCTmdJRUlBSkJFR29rXFxcbkFBczVBUUYvSUFKQkVIWkFBQ0VESUFCQkFEWUNDQ0FBUVFBZ0FrR0FnSHh4SUFOQmYwWWlBaHMyQWdRZ0FFRUFJQU5CRUhRZ0FoczJBZ1xcXG5BTFFnRUJmd0pBQWtBQ1FDQUNRWUNBeEFCR0RRQkJBU0VGSUFBZ0FpQUJLQUlRRVFZQURRRUxJQU1OQVVFQUlRVUxJQVVQQ3lBQUlBTWdcXFxuQkNBQktBSU1FUWtBQ3owQ0FYOEJmQ0FCS0FJY1FRRnhJUUlnQUNzREFDRURBa0FnQVNnQ0NFVU5BQ0FCSUFNZ0FpQUJRUXhxS0FJQUVGXFxcbjBQQ3lBQklBTWdBa0VBRUdrTE9BRUNmeU1BUVJCcklnRWtBQ0FCSUFBMkFnd2dBQ2dDQ0NJQ0lBQW9BZ3dnQW10QkRHNFE1Z2tnQVVFTVxcXG5haEMrQ1NBQlFSQnFKQUFMT1FFQmZ5TUFRUkJySWdJa0FDQUNJQUUyQWd3Z0FrRU1haERDRENFQklBQWdBaWdDRERZQ0JDQUFJQUZCQVhcXFxuTTJBZ0FnQWtFUWFpUUFDMElCQW44Q1FDQUFMUUFBUVFOSERRQWdBQ2dDQkNJQUtBSUFJZ0VnQUNnQ0JDSUNLQUlBRVFJQUlBRWdBaWdDXFxcbkNDQUNLQUlFRUtRTElBQkJERUVFRUxJTUN3czZBUUYvSUFBb0FnZ2hBU0FBS0FJQUlRQUNRQU5BSUFGRkRRRWdBQkRqRENBQVFReHFFT1xcXG5NTUlBRkJmMm9oQVNBQVFSeHFJUUFNQUFzTEN6OEJBWDhqQUVFUWF5SUNKQUFDUUNBQURRQWdBa0VRYWlRQUlBRVBDeUFDSUFFMkFneEJcXFxuazR6QUFFRXJJQUpCREdwQndJekFBRUdJcXNBQUVNSUVBQXM2QVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQVNBQ1FRQVFnUWdnQXlnQ0RDXFxcbkVDSUFBZ0F5Z0NDRFlDQUNBQUlBSTJBZ1FnQTBFUWFpUUFDem9CQVg4akFFRVFheUlESkFBZ0EwRUlhaUFCSUFKQkFSQ0JDQ0FES0FJTVxcXG5JUUlnQUNBREtBSUlOZ0lBSUFBZ0FqWUNCQ0FEUVJCcUpBQUxPUUVCZnlNQVFSQnJJZ1FrQUNBRUlBRWdBaUFERUkwSElBQkJDR29nQkVcXFxuRU1haWdDQURZQ0FDQUFJQVFwQWdRM0FnQWdCRUVRYWlRQUN6a0JBWDhqQUVFUWF5SUVKQUFnQkNBQklBSWdBeERWQmlBQVFRaHFJQVJCXFxcbkRHb29BZ0EyQWdBZ0FDQUVLUUlFTndJQUlBUkJFR29rQUFzN0FRRi9Jd0JCRUdzaUFpUUFJQUVRMFFzZ0FrRUlhaUFCRUxRSUlBSW9BZ1xcXG53aEFTQUFJQUlvQWdnMkFnQWdBQ0FCTmdJRUlBSkJFR29rQUFzN0FRRi9Jd0JCRUdzaUFpUUFJQUVRMFFzZ0FrRUlhaUFCRUxVSUlBSW9cXFxuQWd3aEFTQUFJQUlvQWdnMkFnQWdBQ0FCTmdJRUlBSkJFR29rQUF0Q0FRSi9Ba0FnQUMwQUFFRURSdzBBSUFBb0FnUWlBQ2dDQUNJQklBXFxcbkFvQWdRaUFpZ0NBQkVDQUNBQklBSW9BZ2dnQWlnQ0JCQ3lDeUFBUVF4QkJCQ3lEQXNMT2dFQmZ5TUFRUkJySWdNa0FDQURRUWhxSUFFZ1xcXG5Ba0VBRUlnSUlBTW9BZ3doQWlBQUlBTW9BZ2cyQWdBZ0FDQUNOZ0lFSUFOQkVHb2tBQXM2QVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQVNcXFxuQUNRUUVRaUFnZ0F5Z0NEQ0VDSUFBZ0F5Z0NDRFlDQUNBQUlBSTJBZ1FnQTBFUWFpUUFDenNCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFCXFxcbklBRW9BZ2dRcEFRZ0FpZ0NEQ0VCSUFBZ0FpZ0NDRFlDQUNBQUlBRTJBZ1FnQWtFUWFpUUFDem9CQVg4akFFRVFheUlESkFBZ0EwRUlhaVxcXG5BQklBSkJBQkNKQ0NBREtBSU1JUUlnQUNBREtBSUlOZ0lBSUFBZ0FqWUNCQ0FEUVJCcUpBQUxPZ0VCZnlBQUtBSUlJUUVnQUNnQ0FDRUFcXFxuQWtBRFFDQUJSUTBCSUFBUWdnMGdBRUVNYWhDQ0RTQUJRWDlxSVFFZ0FFRVlhaUVBREFBTEN3czVBUUYvSXdCQkVHc2lBaVFBSUFKQkNHXFxcbm9nQVJET0J5QUNMUUFKSVFFZ0FDQUNMUUFJUVFGeE9nQUFJQUFnQVRvQUFTQUNRUkJxSkFBTE9nRUJmeU1BUVJCcklnTWtBQ0FEUVFocVxcXG5JQUVnQWtFQUVJc0lJQU1vQWd3aEFpQUFJQU1vQWdnMkFnQWdBQ0FDTmdJRUlBTkJFR29rQUFzNkFRRi9Jd0JCRUdzaUF5UUFJQU5CQ0dcXFxub2dBU0FDUVFBUWpnZ2dBeWdDRENFQ0lBQWdBeWdDQ0RZQ0FDQUFJQUkyQWdRZ0EwRVFhaVFBQ3pvQkFYOGpBRUVRYXlJREpBQWdBMEVJXFxcbmFpQUJJQUpCQVJDT0NDQURLQUlNSVFJZ0FDQURLQUlJTmdJQUlBQWdBallDQkNBRFFSQnFKQUFMT2dFQmYwRUFJUUlDUUNBQUtBSUFJQVxcXG5Fb0FnQWlBVXNOQUNBQUtBSUVJUUlDUUNBQUxRQUlEUUFnQVNBQ1RROExJQUVnQWtraEFnc2dBZ3M0QUFKQUFrQWdBU0FDU3cwQUlBSWdcXFxuQTAwTkFTQUNJQU1nQkJDREJRQUxJQUVnQWlBRUVJUUZBQXNnQUNBQ05nSUVJQUFnQVRZQ0FBczdBUUYvSXdCQkVHc2lBaVFBSUFKQkNHXFxcbm9nQVNBQktBSWdFUDhHSUFJb0Fnd2hBU0FBSUFJb0FnZzJBZ0FnQUNBQk5nSUVJQUpCRUdva0FBczZBUUYvSXdCQkVHc2lBU1FBSUFFZ1xcXG5BQkNwQ1FKQUlBRW9BZ1FpQUVVTkFDQUJLQUlBSUFBZ0FVRUlhaWdDQUJEREN3c2dBVUVRYWlRQUN6b0JBWDhqQUVFUWF5SURKQUFnQTBcXFxuRUlhaUFCSUFKQkFCQ1JDQ0FES0FJTUlRSWdBQ0FES0FJSU5nSUFJQUFnQWpZQ0JDQURRUkJxSkFBTE9nRUJmeU1BUVJCcklnTWtBQ0FEXFxcblFRaHFJQUVnQWtFQkVKRUlJQU1vQWd3aEFpQUFJQU1vQWdnMkFnQWdBQ0FDTmdJRUlBTkJFR29rQUFzNUFRRi9Jd0JCRUdzaUFpUUFJQVxcXG5KQkNHb2dBUkRYQnlBQ0xRQUpJUUVnQUNBQ0xRQUlRUUZ4T2dBQUlBQWdBVG9BQVNBQ1FSQnFKQUFMT2dFQmZ5TUFRUkJySWdNa0FDQURcXFxuUVFocUlBRWdBa0VBRUpJSUlBTW9BZ3doQWlBQUlBTW9BZ2cyQWdBZ0FDQUNOZ0lFSUFOQkVHb2tBQXM2QVFGL0l3QkJFR3NpQXlRQUlBXFxcbk5CQ0dvZ0FTQUNRUUVRa2dnZ0F5Z0NEQ0VDSUFBZ0F5Z0NDRFlDQUNBQUlBSTJBZ1FnQTBFUWFpUUFDem9CQVg4akFFRVFheUlESkFBZ1xcXG5BMEVJYWlBQklBSkJBQkNUQ0NBREtBSU1JUUlnQUNBREtBSUlOZ0lBSUFBZ0FqWUNCQ0FEUVJCcUpBQUxPUUVCZnlNQVFSQnJJZ0lrQUNcXFxuQUNRUUEyQWd3Z0FpQUJJQUpCREdvUTFnSWdBQ0FDS0FJQUlBSW9BZ1FRYnlFQklBSkJFR29rQUNBQkN6d0JBWDhqQUVFUWF5SUJKQUFnXFxcbkFVRUlhaUFBUVFocUtBSUFOZ0lBSUFFZ0FDa0NBRGNEQUNBQlFZVGV6UUFRelFraEFDQUJRUkJxSkFBZ0FBczhBUUYvSXdCQkVHc2lBaVxcXG5RQUlBSkJDR29nQUNBQUtBSUFLQUlFRVFVQUlBSW9BZ2dnQVNBQ0tBSU1LQUlRRVFZQUlRQWdBa0VRYWlRQUlBQUxNd0VCZnlNQVFSQnJcXFxuSWdNa0FDQURRUWhxSUFBZ0FFRUVhaUFCSUFJUW13WWdBMEVJYWhDOUJ5RUFJQU5CRUdva0FDQUFDenNBQWtBZ0FrVU5BQUpBSUFNTkFFXFxcbkVBTFFEeHBrOGFJQUlnQVJEM0N5RUJEQUVMSUFJZ0FSRDRDeUVCQ3lBQUlBSTJBZ1FnQUNBQk5nSUFDemNCQVg4akFFRVFheUlESkFBZ1xcXG5BeUFCSUFJUTF3VWdBRUVJYWlBRFFRaHFLQUlBTmdJQUlBQWdBeWtEQURjQ0FDQURRUkJxSkFBTE53RUJmeU1BUVJCcklnSWtBQ0FDSUFcXFxuRkJBUkNkQmlBQVFRaHFJQUpCQ0dvcEF3QTNBZ0FnQUNBQ0tRTUFOd0lBSUFKQkVHb2tBQXMvQVFGL0FrQUNRQ0FCUVoya3dBQkJEQkRhXFxcbkNDSUJEUUJCQUNFQkRBRUxJQUZCRkdvb0FnQWhBaUFCS0FJTUlRRUxJQUFnQWpZQ0JDQUFJQUUyQWdBTE53RUJmeU1BUVJCcklnTWtBQ1xcXG5BRElBRWdBaENDQ0NBQVFRaHFJQU5CQ0dvb0FnQTJBZ0FnQUNBREtRTUFOd0lBSUFOQkVHb2tBQXMrQVFGL0FrQUNRQ0FDRFFCQkFDRUNcXFxuRVBvTklRTU1BUXRCQVNFQ0VQc05JUU1MSUFCQkFEWUNDQ0FBSUFNMkFnUWdBQ0FDTmdJQUlBQWdBVFlDRUFzN0FRRi9Ba0FnQUNnQ0NDXFxcbklDSUFBb0FnUkhEUUFnQUNBQ0VQc0lJQUFvQWdnaEFnc2dBQ0FDUVFGcU5nSUlJQUFvQWdBZ0Ftb2dBVG9BQUFzN0FBSkFJQUpGRFFBQ1xcXG5RQ0FERFFCQkFDMEE4YVpQR2lBQ0lBRVE5d3NoQVF3QkN5QUNJQUVRK0FzaEFRc2dBQ0FDTmdJRUlBQWdBVFlDQUFzN0FBSkFJQUpGRFFcXFxuQUNRQ0FERFFCQkFDMEE4YVpQR2lBQ0lBRVE5d3NoQVF3QkN5QUNJQUVRK0FzaEFRc2dBQ0FDTmdJRUlBQWdBVFlDQUFzM0FRRi9Jd0JCXFxcbkVHc2lBeVFBSUFNZ0FTQUNFTmNGSUFCQkNHb2dBMEVJYWlnQ0FEWUNBQ0FBSUFNcEF3QTNBZ0FnQTBFUWFpUUFDenNBQWtBZ0FrVU5BQVxcXG5KQUlBTU5BRUVBTFFEeHBrOGFJQUlnQVJEM0N5RUJEQUVMSUFJZ0FSRDRDeUVCQ3lBQUlBSTJBZ1FnQUNBQk5nSUFDellCQW44akFFRVFcXFxuYXlJQ0pBQWdBaUFCTmdJTUlBSkJER29Rd1F3aEF5QUFJQUUyQWdRZ0FDQURRUUZ6TmdJQUlBSkJFR29rQUFzMkFRSi9Jd0JCRUdzaUFpXFxcblFBSUFJZ0FUWUNEQ0FDUVF4cUVQc0dJUU1nQUNBQk5nSUVJQUFnQTBFQmN6WUNBQ0FDUVJCcUpBQUxPd0FDUUNBQ1JRMEFBa0FnQXcwQVxcXG5RUUF0QVBHbVR4b2dBaUFCRVBjTElRRU1BUXNnQWlBQkVQZ0xJUUVMSUFBZ0FqWUNCQ0FBSUFFMkFnQUxOZ0VCZnlNQVFUQnJJZ01rQUNcXFxuQURRUkJxUVM4Z0FTQUNFTk1GSUFNZ0EwRVFhaENXQWlBQUlBTXBBd0EzQXdBZ0EwRXdhaVFBQ3prQkFYOUJBQ0VDQWtBQ1FDQUFJQUVRXFxcbjFBcEZEUUFnQVVFQ1NRMEJJQUF0QUFGQk9rWWhBZ3NnQWc4TFFRRWdBVUg4anNFQUVJRUZBQXM3QUFKQUlBSkZEUUFDUUNBRERRQkJBQ1xcXG4wQThhWlBHaUFDSUFFUTl3c2hBUXdCQ3lBQ0lBRVErQXNoQVFzZ0FDQUNOZ0lFSUFBZ0FUWUNBQXM3QUFKQUlBSkZEUUFDUUNBRERRQkJcXFxuQUMwQThhWlBHaUFDSUFFUTl3c2hBUXdCQ3lBQ0lBRVErQXNoQVFzZ0FDQUNOZ0lFSUFBZ0FUWUNBQXM3QUFKQUlBSkZEUUFDUUNBRERRXFxcbkJCQUMwQThhWlBHaUFDSUFFUTl3c2hBUXdCQ3lBQ0lBRVErQXNoQVFzZ0FDQUNOZ0lFSUFBZ0FUWUNBQXM3QUFKQUlBSkZEUUFDUUNBRFxcXG5EUUJCQUMwQThhWlBHaUFDSUFFUTl3c2hBUXdCQ3lBQ0lBRVErQXNoQVFzZ0FDQUNOZ0lFSUFBZ0FUWUNBQXRBQVFGL0l3QkJJR3NpQUNcXFxuUUFJQUJCRkdwQ0FEY0NBQ0FBUVFFMkFnd2dBRUhFNDgwQU5nSUlJQUJCK09ETkFEWUNFQ0FBUVFocVFjemp6UUFRbUFnQUN6OEJBbjhDXFxcblFCQ2xBaUlBUlEwQUlBQWdBQ2dDQUNJQlFYOXFOZ0lBQWtBZ0FVRUJSdzBBSUFBUTZRVUxEd3RCLytITkFFSGVBRUg4NHMwQUVJb0dBQVxcXG50QUFRRi9Jd0JCSUdzaUFDUUFJQUJCRkdwQ0FEY0NBQ0FBUVFFMkFnd2dBRUdVKzgwQU5nSUlJQUJCNVByTkFEWUNFQ0FBUVFocVFaejdcXFxuelFBUW1BZ0FDejhCQVg4akFFRWdheUlDSkFBZ0FpQUFOZ0lVSUFKQmpKek9BRFlDRENBQ1Fmei96UUEyQWdnZ0FrRUJPZ0FZSUFJZ0FUXFxcbllDRUNBQ1FRaHFFS0VHQUFzOUFRRi9Jd0JCSUdzaUFTUUFJQUZCRkdwQ0FEY0NBQ0FCUVFFMkFnd2dBVUh3bzg0QU5nSUlJQUZCL1AvTlxcXG5BRFlDRUNBQlFRaHFJQUFRbUFnQUN6a0JBWDhqQUVIQUFHc2lBaVFBSUFKQkVHb2dBVUVzRUtRTkdpQUNRb0NBZ0lDd0FUY0RDQ0FBSUFcXFxuSkJDR29ROGdRZ0FrSEFBR29rQUFzN0FRRi9Jd0JCMEFGcklnSWtBQ0FDUVFocUlBRkJ3QUVRcEEwYUlBSkNnSUNBZ0lBRE53UElBU0FBXFxcbklBSkJDR29RcmdVZ0FrSFFBV29rQUFzMkFBSkFJQUV0QUF4QkFrWU5BQ0FBSUFFcEFnQTNBZ0FnQUVFSWFpQUJRUWhxS1FJQU53SUFEd1xcXG5zZ0FFRUNPZ0FNSUFFUTR3d0xOZ0VCZnlNQVFSQnJJZ0lrQUNBQ0lBRXBBZ0EzQXdnZ0FrRUlhaENsRFNFQklBQkJBVFlDQUNBQUlBRTJcXFxuQWdRZ0FrRVFhaVFBQ3pZQkFYOGpBRUVRYXlJQ0pBQWdBa0VJYWlBQkVQTUdJQUlvQWd3aEFTQUFJQUlvQWdnMkFnQWdBQ0FCTmdJRUlBXFxcbkpCRUdva0FBczJBUUYvSXdCQkVHc2lBaVFBSUFKQkNHb2dBUkQwQmlBQ0tBSU1JUUVnQUNBQ0tBSUlOZ0lBSUFBZ0FUWUNCQ0FDUVJCcVxcXG5KQUFMTmdFQmZ5TUFRUkJySWdJa0FDQUNRUWhxSUFFUTlRWWdBaWdDRENFQklBQWdBaWdDQ0RZQ0FDQUFJQUUyQWdRZ0FrRVFhaVFBQ3pcXFxuWUJBWDhqQUVFUWF5SUNKQUFnQWtFSWFpQUJFUFlHSUFJb0Fnd2hBU0FBSUFJb0FnZzJBZ0FnQUNBQk5nSUVJQUpCRUdva0FBc3lBUUYvXFxcbkl3QkJFR3NpQkNRQUFrQWdBQ2dDQ0NBQlR3MEFJQVJCQ0dvZ0FDQUJJQUlnQTBFQkVGY0xJQVJCRUdva0FBc3lBUUYvSXdCQkVHc2lCQ1xcXG5RQUFrQWdBQ2dDQ0NBQlR3MEFJQVJCQ0dvZ0FDQUJJQUlnQTBFQkVGa0xJQVJCRUdva0FBc3lBUUYvSXdCQkVHc2lCQ1FBQWtBZ0FDZ0NcXFxuQ0NBQlR3MEFJQVJCQ0dvZ0FDQUJJQUlnQTBFQkVGZ0xJQVJCRUdva0FBczBBUUYvSXdCQkVHc2lBeVFBSUFNZ0FqWUNEQ0FCSUFOQkRHXFxcbm9RaWdzZ0FDQUNRYXgvYWtIVUFCQ2tEUm9nQTBFUWFpUUFDendCQVg4akFFRVFheUlDSkFBZ0FpQUFOZ0lNSUFGQm1LdkFBRUVjUWJPcVxcXG53QUJCQXlBQ1FReHFRYnlLd0FBUWt3TWhBQ0FDUVJCcUpBQWdBQXMxQVFGL0l3QkJFR3NpQVNRQUlBRkJnUUUyQWd3Z0FDZ0NBRUdCQVJcXFxuQU1JUUFnQVVFTWFoQ01DeUFCUVJCcUpBQWdBRUVBUndzMkFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FSQ1FCaUFDS0FJTUlRRWdBQ0FDXFxcbktBSUlOZ0lBSUFBZ0FUWUNCQ0FDUVJCcUpBQUxOZ0VDZnlNQVFSQnJJZ0VrQUNBQlFRaHFJQUFRalFJZ0FTZ0NDQ0VBSUFFb0Fnd2hBaVxcXG5BQlFSQnFKQUFnQWtHQWdNUUFJQUFiQ3pZQkFuOENRQU5BSUFFaUFrVU5BU0FDUVg5cUlRRWdBQzBBQUNFRElBQkJBV29oQUNBRFFZRHpcXFxud0FCcUxRQUFEUUFMQ3lBQ1JRczVBQ0FBUVFCQmdBRVFvUTBpQUVHQUFXb2dBVUhBQUJDa0RSb2dBRUVBTmdMUUFTQUFRY2dCYWlBQk5nXFxcbklBSUFCQndBRnFRZ0EzQXdBTE53QUNRQ0FBUWZ6Ly8vOEhTdzBBQWtBZ0FBMEFRUVFQQ3lBQVFmMy8vLzhIU1VFQ2RDQUFFSXdNSWdCRlxcXG5EUUFnQUE4TEVOc05BQXMyQVFKL0l3QkJFR3NpQVNRQUlBRkJDR29nQUJDUEFpQUJLQUlJSVFBZ0FTZ0NEQ0VDSUFGQkVHb2tBQ0FDUVlcXFxuQ0F4QUFnQUJzTE5RRUJmeUFBSUFFUW1Rb2dBQ2dDQ0NFREFrQWdBVVVOQUNBQUtBSUFJQU5xSUFJNkFBQWdBMEVCYWlFREN5QUFJQU0yXFxcbkFnZ0xNUUVCZnlNQVFSQnJJZ01rQUFKQUlBQW9BZ2dnQVU4TkFDQURRUWhxSUFBZ0FTQUNRUUVRcGdFTElBTkJFR29rQUFzeEFRRi9Jd1xcXG5CQkVHc2lBeVFBQWtBZ0FDZ0NDQ0FCVHcwQUlBTkJDR29nQUNBQklBSkJBUkNpQVFzZ0EwRVFhaVFBQ3pFQkFYOGpBRUVRYXlJREpBQUNcXFxuUUNBQUtBSUlJQUZQRFFBZ0EwRUlhaUFBSUFFZ0FrRUJFS2NCQ3lBRFFSQnFKQUFMTHdFQmZ5QUFJQUlnQVd0QkhHNGlBMEVCYWtFQmRpXFxcbkFESUFBb0Fnd2JJQUJCRUdvUXN3Z2dBU0FDSUFBUXlnSUxNUUVCZnlNQVFSQnJJZ01rQUFKQUlBQW9BZ2dnQVU4TkFDQURRUWhxSUFBZ1xcXG5BU0FDUVFFUWtRRUxJQU5CRUdva0FBc3pBUUYvQWtBZ0FTZ0NBQ0lDUVg5R0RRQWdBU0FDUVFGcU5nSUFJQUFnQVRZQ0JDQUFJQUZCQkdcXFxubzJBZ0FQQ3hDSkRRQUxNd0VCZndKQUlBRW9BZ0FpQWtGL1JnMEFJQUVnQWtFQmFqWUNBQ0FBSUFFMkFnUWdBQ0FCUVFocU5nSUFEd3NRXFxcbmlRMEFDelVCQVg4akFFRVFheUlDSkFBZ0FpQUJRUUFRbFFVZ0Fpa0RBQ0VCSUFBZ0FpZ0NDRFlDQ0NBQUlBRTNBd0FnQWtFUWFpUUFDelxcXG5vQkFYOENRQUpBSUFFb0FnQU5BQ0FCS0FJRUlRRkJBQ0VDREFFTFFRRWhBaUFCS0FJRUVNc0RJUUVMSUFBZ0FUWUNCQ0FBSUFJMkFnQUxcXFxuTkFFQmZ5TUFRUkJySWdJa0FDQUNRUWhxSUFBUTJnY2dBaWdDQ0NBQklBSW9BZ3dvQWhBUkJnQWhBQ0FDUVJCcUpBQWdBQXMwQVFGL0l3XFxcbkJCRUdzaUFpUUFJQUpCQ0dvZ0FCRGFCeUFDS0FJSUlBRWdBaWdDRENnQ0VCRUdBQ0VBSUFKQkVHb2tBQ0FBQ3pRQkFYOGpBRUVRYXlJQ1xcXG5KQUFnQWtFSWFpQUFFTm9ISUFJb0FnZ2dBU0FDS0FJTUtBSVFFUVlBSVFBZ0FrRVFhaVFBSUFBTE5BRUJmeU1BUVJCcklnSWtBQ0FDUVFcXFxuaHFJQUFRMmdjZ0FpZ0NDQ0FCSUFJb0Fnd29BaEFSQmdBaEFDQUNRUkJxSkFBZ0FBczBBUUYvSXdCQkVHc2lBU1FBSUFFZ0FFRVlRUWdRXFxcbmhnUWdBU2dDQUNBQktBSUVJQUZCQ0dvb0FnQVFwQXNnQVVFUWFpUUFDelFCQVg4akFFRVFheUlCSkFBZ0FTQUFRUVJCQ0JDR0JDQUJLQVxcXG5JQUlBRW9BZ1FnQVVFSWFpZ0NBQkNrQ3lBQlFSQnFKQUFMTkFFQmZ5TUFRUkJySWdFa0FDQUJJQUJCQ0VFSUVJWUVJQUVvQWdBZ0FTZ0NcXFxuQkNBQlFRaHFLQUlBRUtRTElBRkJFR29rQUFzMUFRRi9Jd0JCRUdzaUFTUUFJQUVnQUVIVUFFRUlFSVlFSUFFb0FnQWdBU2dDQkNBQlFRXFxcbmhxS0FJQUVLUUxJQUZCRUdva0FBc3hBUUYvSXdCQndBQnJJZ1FrQUNBRVFRaHFJQUVnQWlBREVJNEhJQUFnQkVFUWFrRXdFS1FOR2lBRVxcXG5RY0FBYWlRQUN5OEJBbjhnQUNnQ0FDSURJQUZxSUFLblFSbDJJZ1E2QUFBZ0F5QUFLQUlFSUFGQmVHcHhha0VJYWlBRU9nQUFDemdCQVhcXFxuOUJBU0VDQWtBQ1FDQUJLQUlBRUF0QkFVWU5BRUVBSVFJTUFRc2dBUkQ0RFJERERTRUJDeUFBSUFFMkFnUWdBQ0FDTmdJQUN6VUFJQUJCXFxcbmdBRTZBQmdnQUVJQk53SU1JQUFnQVNrQ0FEY0NBQ0FBUVJScVFRQTJBZ0FnQUVFSWFpQUJRUWhxS0FJQU5nSUFDelVBSUFCQmdBRTZBQlxcXG5nZ0FFSUJOd0lNSUFBZ0FTa0NBRGNDQUNBQVFSUnFRUUEyQWdBZ0FFRUlhaUFCUVFocUtBSUFOZ0lBQ3pZQkFuOUJBQ0VDQWtBZ0FTZ0NcXFxuQUNJRElBRW9BZ1JQRFFCQkFTRUNJQUVnQTBFQmFqWUNBQXNnQUNBRE5nSUVJQUFnQWpZQ0FBczFBUUYvSXdCQkVHc2lBaVFBSUFJZ0FTXFxcbmtDQURjRENDQUFJQUpCQ0dvUXlBazJBZ0FnQUNBQ0tRTUlOd0lFSUFKQkVHb2tBQXN4QUFKQUlBTWdBVWtOQUNBQUlBTWdBV3MyQWdRZ1xcXG5BQ0FDSUFGQkEzUnFOZ0lBRHdzZ0FTQURRYmlad1FBUWdnVUFDemNCQVg5QjRRQWhBUUpBQWtBZ0FFRWFTUTBBUVJZaEFTQUFRU05MRFFcXFxuRUxJQUVnQUdvUEMwR3NvY0VBUVE1QnZLSEJBQkRlQ1FBTE53RUJmd0pBQWtBZ0FTZ0NCQTBBUVFBaEFRd0JDeUFCS0FJQUlBRkJDR29vXFxcbkFnQWlBa1loQVFzZ0FDQUNOZ0lFSUFBZ0FUWUNBQXMxQUNBQVFRRTJBZ1FnQUVFSWFrR0NnTVFBSUFFb0FnZ2lBV3RCQXlBQlFZQ0F2SFxcXG45cVFRTkpHeUlCTmdJQUlBQWdBVFlDQUFzMkFDQUFRUU02QUNBZ0FFRWdOZ0lRSUFCQkFEWUNIQ0FBSUFFMkFoUWdBRUVBTmdJSUlBQkJcXFxuQURZQ0FDQUFRUmhxSUFJMkFnQUxMZ0VCZnlNQVFSQnJJZ01rQUNBRFFRaHFJQUFnQVNBQ0VOZ0ZJQU1vQWdnaEFpQURRUkJxSkFBZ0FrXFxcbkVBUndzeEFRRi9Jd0JCNEFCcklnSWtBQ0FDUVFocUlBRkIxQUFRcEEwYUlBQW9BZ0FnQWtFSWFoRG9CQ0FDUWVBQWFpUUFDekVCQVg4alxcXG5BRUVRYXlJQ0pBQWdBa0VJYWlBQUVMZ0dJQUVnQWlnQ0NDQUNLQUlNRVAwSUlRQWdBa0VRYWlRQUlBQUxNUUVCZnlNQVFSQnJJZ0lrQUNcXFxuQUNRUWhxSUFBUTdBY2dBU0FDS0FJSUlBSW9BZ3dRL1FnaEFDQUNRUkJxSkFBZ0FBczRBZ0YvQVg0akFFRVFheUlCSkFBZ0FVSDRnc0FBXFxcbkVJRUdJQUVwQXdBaEFpQUFJQUVwQXdnM0F3Z2dBQ0FDTndNQUlBRkJFR29rQUFzekFRRi9Jd0JCRUdzaUFpUUFJQUVnQWtFSWFrR01oTVxcXG5BQUVJVUJJUUVnQUVFQU5nSUFJQUFnQVRZQ0JDQUNRUkJxSkFBTE13RUJmeU1BUVJCcklnSWtBQ0FCSUFKQkNHcEJuSVRBQUJDRkFTRUJcXFxuSUFCQkFEWUNBQ0FBSUFFMkFnUWdBa0VRYWlRQUN6SUJBWDhqQUVFUWF5SUNKQUFnQWhEd0RUWUNDQ0FDSUFKQkNHb2dBUkRDQVNBQUlBXFxcbklwQXdBM0F3QWdBa0VRYWlRQUN6RUJBWDhqQUVFUWF5SURKQUFnQUNBQklBSVF0d0lnQTBIL0FUb0FEeUFBSUFOQkQycEJBUkMzQWlBRFxcXG5RUkJxSkFBTE1nRUJmeU1BUVJCcklnSWtBQ0FDUVFocUlBQWdBQ2dDQ0NBQkVJc0dJQUlvQWdnZ0FpZ0NEQkRvQ1NBQ1FSQnFKQUFMTWdcXFxuRUJmeU1BUVJCcklnSWtBQ0FDUVFocUlBQWdBQ2dDQ0NBQkVJd0dJQUlvQWdnZ0FpZ0NEQkRvQ1NBQ1FSQnFKQUFMTWdFQmZ5TUFRUkJyXFxcbklnSWtBQ0FDUVFocUlBQWdBQ2dDQ0NBQkVJMEdJQUlvQWdnZ0FpZ0NEQkRvQ1NBQ1FSQnFKQUFMTUFFQmZ5TUFRUkJySWdFa0FDQUFLQVxcXG5JQUlnQkJDR29RNHd3Z0FTQUFOZ0lNSUFGQkRHb1EyUWdnQVVFUWFpUUFDeklCQVg4Q1FDQUFLQUlBSWdCQmYwWU5BQ0FBSUFBb0FnUWlcXFxuQVVGL2FqWUNCQ0FCUVFGSERRQWdBRUVVUVFRUXNnd0xDeTRBQWtBZ0FDZ0NEQTBBUVFBUEN5QUFJQUJCRUdvZ0FTQUNFSmdCSUFFZ0FoXFxcbkNPQlNJQVFXaHFRUUFnQUJzTE53RUJmaUFBSUFJcEF3QkNnSUdDaElpUW9NQ0FmNE1pQkVJQVVqWUNBQ0FBSUFSNnAwRURkaUFES0FJQVxcXG5haUFCS0FJRWNUWUNCQXMxQVFGL0l3QkJFR3NpQWlRQUlBSWdBRFlDRENBQlFZQ3R3QUJCQlNBQ1FReHFRWWl0d0FBUTZnSWhBQ0FDUVJcXFxuQnFKQUFnQUFzeEFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FCQzRCaUFCSUFJb0FnZ2dBaWdDREJEOUNDRUFJQUpCRUdva0FDQUFDelVCXFxcbkFuOUJBQ0VDQWtBZ0FTZ0NDQ0lESUFFb0FnUlBEUUFnQVNnQ0FDQURhaTBBQUNFQ0N5QUFRUUE2QUFBZ0FDQUNPZ0FCQ3pFQkFYOGpBRVxcXG5FUWF5SUNKQUFnQWtFSWFpQUFFT3dISUFFZ0FpZ0NDQ0FDS0FJTUVQMElJUUFnQWtFUWFpUUFJQUFMTVFFQmZ5TUFRUkJySWdJa0FDQUNcXFxuUVFocUlBQVE3QWNnQVNBQ0tBSUlJQUlvQWd3US9RZ2hBQ0FDUVJCcUpBQWdBQXMwQUNBQUtBSUFJUUFDUUNBQkVLd01EUUFDUUNBQkVLXFxcbjBNRFFBZ0FDQUJFTm9NRHdzZ0FDQUJFT0FERHdzZ0FDQUJFTjhEQ3pJQkFYOENRQ0FBS0FJQUlnQkJmMFlOQUNBQUlBQW9BZ1FpQVVGL1xcXG5hallDQkNBQlFRRkhEUUFnQUVFWVFRZ1FzZ3dMQ3pRQkFYOENRQ0FCS0FJRUlnSkZEUUFnQUVFRU5nSUVJQUFnQWtFWWJEWUNDQ0FBSUFcXFxuRW9BZ0EyQWdBUEN5QUFRUUEyQWdRTE5BQWdBQ2dDQUNFQUFrQWdBUkNzREEwQUFrQWdBUkN0REEwQUlBQWdBUkRhREE4TElBQWdBUkRnXFxcbkF3OExJQUFnQVJEZkF3c3pBUUYvSXdCQkVHc2lBaVFBQWtBZ0FBMEFJQUpCRUdva0FBOExRZnlDd1FCQkt5QUNRUWhxUWJ5QndRQWdBUlxcXG5EQ0JBQUxOUUVCZnlBQVFRQVFxUW9DUUNBQ1JRMEFBMEFnQVJESUNTSURRWUNBeEFCR0RRRWdBQ0FERU40RUlBSkJmMm9pQWcwQUN3c0xcXFxuT3dFQmYwRUFMUUR4cGs4YUFrQWdBVUVEZEVFRUVQY0xJZ0lOQUVHWW1zRUFRU3RCeEpyQkFCQ0RCd0FMSUFBZ0FUWUNCQ0FBSUFJMkFnXFxcbkFMTUFFQmZ5TUFRUkJySWdNa0FDQURRUUE2QUF3Z0EwRUFOZ0lJSUFBZ0EwRUlhaUFCSUFJUXN3SWdBMEVRYWlRQUN5MEFBa0FnQWlBRFxcXG5UdzBBSUFNZ0FpQUVFSUlGQUFzZ0FDQUNJQU5yTmdJRUlBQWdBU0FEUVFKMGFqWUNBQXN4QVFGL0l3QkJFR3NpQWlRQUlBSkJDR29nQVVcXFxuSDA0YzBBUVFzUXJRa2dBa0VJYWhEV0JDRUJJQUpCRUdva0FDQUJDelFBSUFBb0FnQWhBQUpBSUFFUXJBd05BQUpBSUFFUXJRd05BQ0FBXFxcbklBRVEyd3dQQ3lBQUlBRVEyZ01QQ3lBQUlBRVEyd01MTkFBZ0FDQUJLQUlVSUFJZ0F5QUJRUmhxS0FJQUtBSU1FUWtBT2dBSUlBQWdBVFxcXG5ZQ0JDQUFJQU5GT2dBSklBQkJBRFlDQUFzckFBSkFJQU1nQVVrTkFDQUFJQU1nQVdzMkFnUWdBQ0FDSUFGcU5nSUFEd3NnQVNBRElBUVFcXFxuZ2dVQUN6QUNBWDhCZmlNQVFSQnJJZ01rQUNBRElBQW9BZ0EyQWd3Z0EwRU1haUFCSUFJUXhRb2hCQ0FEUVJCcUpBQWdCQXN3QWdGL0FYXFxcbjRqQUVFUWF5SURKQUFnQXlBQUtBSUFOZ0lNSUFOQkRHb2dBU0FDRU1ZS0lRUWdBMEVRYWlRQUlBUUxNQUlCZndGK0l3QkJFR3NpQXlRQVxcXG5JQU1nQUNnQ0FEWUNEQ0FEUVF4cUlBRWdBaENOQ2lFRUlBTkJFR29rQUNBRUN6QUNBWDhCZmlNQVFSQnJJZ01rQUNBRElBQW9BZ0EyQWdcXFxud2dBMEVNYWlBQklBSVFqZ29oQkNBRFFSQnFKQUFnQkFzdkFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FDQUJRUUVRM1FJZ0FpZ0NDQ0FDXFxcbktBSU1FT2dKSUFKQkVHb2tBQXN2QVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQUNBQklBSVEzUUlnQXlnQ0NDQURLQUlNRU9nSklBTkJFR1xcXG5va0FBc3ZBUUYvSXdCQkVHc2lBaVFBSUFKQkNHb2dBQ0FCUVFFUTRBSWdBaWdDQ0NBQ0tBSU1FT2dKSUFKQkVHb2tBQXN2QVFGL0l3QkJcXFxuRUdzaUFpUUFJQUpCQ0dvZ0FDQUJRUUVRM2dJZ0FpZ0NDQ0FDS0FJTUVPZ0pJQUpCRUdva0FBc3ZBUUYvSXdCQkVHc2lBaVFBSUFKQkNHXFxcbm9nQUNBQlFRRVEzd0lnQWlnQ0NDQUNLQUlNRU9nSklBSkJFR29rQUFzdUFDQUFJQUlnQVdzaUFoQ1RDaUFBS0FJQUlBQW9BZ2hxSUFFZ1xcXG5BaENrRFJvZ0FDQUFLQUlJSUFKcU5nSUlDeThCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBSUFGQkFSQzhBeUFDS0FJSUlBSW9BZ3dRN1FcXFxua2dBa0VRYWlRQUN5OEJBWDhqQUVFUWF5SURKQUFnQTBFSWFpQUFJQUVnQWhDOEF5QURLQUlJSUFNb0Fnd1E3UWtnQTBFUWFpUUFDeThCXFxcbkFYOGdBQ0FDSUFGcklnSVFsQW9nQUNnQ0FDQUFLQUlJSWdOcUlBRWdBaENrRFJvZ0FDQURJQUpxTmdJSUN5OEJBWDhqQUVFUWF5SUNKQVxcXG5BZ0FrRUlhaUFBSUFGQkFSRDRBaUFDS0FJSUlBSW9BZ3dRN2drZ0FrRVFhaVFBQ3k4QkFYOGpBRUVRYXlJREpBQWdBMEVJYWlBQUlBRWdcXFxuQWhENEFpQURLQUlJSUFNb0Fnd1E3Z2tnQTBFUWFpUUFDek1CQVg5QkZCQ3JCeUlESUFJMkFoQWdBeUFCTmdJTUlBTkJDR29nQUVFSWFpXFxcbmdDQURZQ0FDQURJQUFwQWdBM0FnQWdBd3N2QVFGL0l3QkJFR3NpQWlRQUlBSkJDR29nQUNBQlFRRVE0UUlnQWlnQ0NDQUNLQUlNRU84SlxcXG5JQUpCRUdva0FBc3JBUUYvSXdCQk1Hc2lBaVFBSUFKQkNHb2dBVUVvRUtRTkdpQUFJQUpCQ0dvUXhnMGdBa0V3YWlRQUN5OEJBWDhnQUNcXFxuQUNJQUZySWdJUWx3b2dBQ2dDQUNBQUtBSUlJZ05xSUFFZ0FoQ2tEUm9nQUNBRElBSnFOZ0lJQ3k4QkFYOGpBRUVRYXlJREpBQWdBMEVJXFxcbmFpQUFJQUVnQWhENUFpQURLQUlJSUFNb0Fnd1E4Z2tnQTBFUWFpUUFDeThCQVg4akFFRVFheUlDSkFBZ0FrRUlhaUFBSUFGQkFSRDVBaVxcXG5BQ0tBSUlJQUlvQWd3UThna2dBa0VRYWlRQUN5OEJBWDhqQUVFUWF5SUNKQUFnQWtFSWFpQUFJQUZCQVJEaUFpQUNLQUlJSUFJb0Fnd1FcXFxuOGdrZ0FrRVFhaVFBQ3pNQUlBRkJKUkRrQkNBQklBQkI4QUZ4UVFSMlFmRHl3QUJxTFFBQUVPUUVJQUVnQUVFUGNVSHc4c0FBYWkwQUFCXFxcbkRrQkFzckFBSkFJQU1nQVVrTkFDQUFJQU1nQVdzMkFnUWdBQ0FDSUFGcU5nSUFEd3NnQVNBRElBUVFnZ1VBQ3k0QUlBQWdBaUFCYXlJQ1xcXG5FSmtLSUFBb0FnQWdBQ2dDQ0dvZ0FTQUNFS1FOR2lBQUlBQW9BZ2dnQW1vMkFnZ0xMd0VCZnlNQVFSQnJJZ0lrQUNBQ1FRaHFJQUFnQVVcXFxuRUJFTVlESUFJb0FnZ2dBaWdDREJEMENTQUNRUkJxSkFBTEx3RUJmeU1BUVJCcklnTWtBQ0FEUVFocUlBQWdBU0FDRU1ZRElBTW9BZ2dnXFxcbkF5Z0NEQkQwQ1NBRFFSQnFKQUFMTHdFQmZ5TUFRUkJySWdNa0FDQURRUWhxSUFBZ0FTQUNFT1FDSUFNb0FnZ2dBeWdDREJEM0NTQURRUlxcXG5CcUpBQUxMd0VCZnlNQVFSQnJJZ0lrQUNBQ1FRaHFJQUFnQVVFQkVPTUNJQUlvQWdnZ0FpZ0NEQkQzQ1NBQ1FSQnFKQUFMTGdFRGZ5QUFcXFxuS0FJQUlnSWdBU2dDQUNJRGNrVWhCQUpBSUFKRkRRQWdBMFVOQUNBQUlBRVF4d3doQkFzZ0JBc3dBUUYvSXdCQkVHc2lBU1FBSUFFZ0FDXFxcbmtDQURjRENDQUJRUWhxRU1nSklRQWdBVUVRYWlRQUlBQkJnSURFQUVZTExnRUJmeU1BUVJCcklnTWtBQ0FESUFBcEFnQTNBd2dnQVNBQ1xcXG5JQU5CQ0dvUWxRWWhBQ0FEUVJCcUpBQWdBQXN2QVFGL0l3QkJFR3NpQWlRQUlBSkJDR29nQUNBQlFRRVE1UUlnQWlnQ0NDQUNLQUlNRVBcXFxub0pJQUpCRUdva0FBc3ZBUUYvSXdCQkVHc2lBaVFBSUFKQkNHb2dBQ0FCUVFFUTVnSWdBaWdDQ0NBQ0tBSU1FUG9KSUFKQkVHb2tBQXN2XFxcbkFRRi9Jd0JCRUdzaUF5UUFJQU5CQ0dvZ0FDQUJJQUlRNWdJZ0F5Z0NDQ0FES0FJTUVQb0pJQU5CRUdva0FBc3ZBUUYvSXdCQkVHc2lBeVxcXG5RQUlBTkJDR29nQUNBQklBSVE1UUlnQXlnQ0NDQURLQUlNRVBvSklBTkJFR29rQUFzdkFBSkFJQUVRL0FWRkRRQWdBQ0FCS1FBQU53QUFcXFxuSUFCQkNHb2dBVUVJYWlnQUFEWUFBQThMSUFCQkFqb0FBQXN2QVFGL0lBQWdBaUFCYXlJQ0VLa0tJQUFvQWdBZ0FDZ0NDQ0lEYWlBQklBXFxcbklRcEEwYUlBQWdBeUFDYWpZQ0NBc3ZBUUYvSXdCQkVHc2lBeVFBSUFOQkNHb2dBQ0FCSUFJUSt3SWdBeWdDQ0NBREtBSU1FUHdKSUFOQlxcXG5FR29rQUFzdkFRRi9Jd0JCRUdzaUFpUUFJQUpCQ0dvZ0FDQUJRUUVRK3dJZ0FpZ0NDQ0FDS0FJTUVQd0pJQUpCRUdva0FBc3ZBUUYvSUFcXFxuQWdBaUFCYXlJQ0VLb0tJQUFvQWdBZ0FDZ0NDQ0lEYWlBQklBSVFwQTBhSUFBZ0F5QUNhallDQ0FzdkFRRi9Jd0JCRUdzaUF5UUFJQU5CXFxcbkNHb2dBQ0FCSUFJUS9BSWdBeWdDQ0NBREtBSU1FUDBKSUFOQkVHb2tBQXN2QVFGL0l3QkJFR3NpQWlRQUlBSkJDR29nQUNBQlFRRVEvQVxcXG5JZ0FpZ0NDQ0FDS0FJTUVQMEpJQUpCRUdva0FBc3RBQ0FCS0FJQUlRRUNRQU5BSUFKRkRRRWdBU0FESUFRUWlBd2dBa0YvYWlFQ0RBQUxcXFxuQ3lBQVFRUTZBQUFMS1FFQmZ5TUFRU0JySWdNa0FDQURRUWhxRUpvTElBQWdBMEVJYWlBQklBSVFRaUFEUVNCcUpBQUxNd0VCZjBFTVFRXFxcblFRcFFjaUEwRUlhaUFDUVFocUtBSUFOZ0lBSUFNZ0Fpa0NBRGNDQUNBQUlBRWdBMEhnZzhBQUVMb0hDeXdCQVg4akFFRVFheUlDSkFBZ1xcXG5BaUFBS1FJQU53TUlJQUpCQ0dvZ0FSRGxDU0VBSUFKQkVHb2tBQ0FBQ3l3QkFYOGpBRUVRYXlJQ0pBQWdBaUFBS1FJQU53TUlJQUpCQ0dcXFxub2dBUkN5Q2lFQUlBSkJFR29rQUNBQUN5d0JBWDhqQUVFUWF5SUNKQUFnQWlBQUtRSUFOd01JSUFKQkNHb2dBUkNDQ2lFQUlBSkJFR29rXFxcbkFDQUFDeXdCQVg4akFFRVFheUlDSkFBZ0FpQUFLUUlBTndNSUlBSkJDR29nQVJDL0NTRUFJQUpCRUdva0FDQUFDeXdCQVg4akFFRVFheVxcXG5JQ0pBQWdBaUFBS1FJQU53TUlJQUpCQ0dvZ0FSREhDaUVBSUFKQkVHb2tBQ0FBQ3l3QkFYOGpBRUVRYXlJQ0pBQWdBaUFBS1FJQU53TUlcXFxuSUFKQkNHb2dBUkRJQ2lFQUlBSkJFR29rQUNBQUN5d0JBWDhqQUVFUWF5SUNKQUFnQWlBQUtRSUFOd01JSUFKQkNHb2dBUkNEQ2lFQUlBXFxcbkpCRUdva0FDQUFDeXdCQVg4akFFRVFheUlDSkFBZ0FpQUFLUUlBTndNSUlBSkJDR29nQVJESkNpRUFJQUpCRUdva0FDQUFDelFBSUFJb1xcXG5BZ0JCM0puQUFFSGZtY0FBSUFNYlFRRkJBaUFER3hDSURDQUFJQUlnQVNnQ0NDQUJLQUlBSUFFb0FnUVFtUWtMS3dBQ1FDQUJRUnhxS0FcXFxuSUFSUTBBSUFBZ0FVRVFhaUFCSUFJUTJ3UWdBaENuQXc4TElBQkJBallDQUFzeEFBSkFJQUFvQWdBaUFDQUJhaXdBQUVGL1RBMEFJQUFwXFxcbkF3QkNnSUdDaElpUW9NQ0FmNE42cDBFRGRpRUJDeUFCQ3l3QkFYOENRQ0FBS0FJQUlnRkJDVXNOQUNBQUlBRkJBV28yQWdBZ0FVRUNUUVxcXG4wQUVQWU5DeUFCUVFwSkN6RUJBWDhDUUNBQktBSUVJZ0pGRFFBZ0FDQUNOZ0lJSUFCQkFUWUNCQ0FBSUFFb0FnQTJBZ0FQQ3lBQVFRQTJcXFxuQWdRTE1RRUJmd0pBSUFFb0FnUWlBa1VOQUNBQUlBSTJBZ2dnQUVFQk5nSUVJQUFnQVNnQ0FEWUNBQThMSUFCQkFEWUNCQXNrQUFKQUlBXFxcbkhBUVFCT0RRQkJBUThMSUFBZ0FVRURka0VjY1dvb0FnQWdBWFpCQVhFTExBRUJmeU1BUVJCcklnSWtBQ0FDSUFBb0FnQTJBZ3dnQWtFTVxcXG5haUFCRU93QklRQWdBa0VRYWlRQUlBQUxOUUVCZjBFQklRRUNRQ0FBTFFBRURRQWdBQ2dDQUNJQUtBSVVRZENlemdCQkFTQUFRUmhxS0FcXFxuSUFLQUlNRVFrQUlRRUxJQUVMTUFBZ0FTZ0NGQ0FDSUFNZ0FVRVlhaWdDQUNnQ0RCRUpBQ0VESUFCQkFEb0FCU0FBSUFNNkFBUWdBQ0FCXFxcbk5nSUFDelVCQVg4Z0FTZ0NGRUhSbTg0QVFRRWdBVUVZYWlnQ0FDZ0NEQkVKQUNFQ0lBQkJBRG9BQlNBQUlBSTZBQVFnQUNBQk5nSUFDelxcXG5FQUFrQUNRQUpBSUFBb0FnQWlBQ2dDQUE0Q0FBRUNDeUFBUVFScUVPa0xEQUVMSUFCQkJHb1E0QWNMSUFBUTVBd0xLZ0VCZnlNQVFSQnJcXFxuSWdFa0FDQUJJQUFwQWdBM0F3Z2dBVUVJYWhDbERTRUFJQUZCRUdva0FDQUFDeTRCQVg5QkVFRUVFS1VISWdJZ0FUWUNBQ0FDSUFBcEFnXFxcbkEzQWdRZ0FrRU1haUFBUVFocUtBSUFOZ0lBSUFJTExnRUJmMEVRUVFRUXBRY2lBVUVBTmdJQUlBRWdBQ2tDQURjQ0JDQUJRUXhxSUFCQlxcXG5DR29vQWdBMkFnQWdBUXN3QUFKQUFrQUNRQ0FBS0FJQURnSUFBUUlMSUFBb0FnUkJBU0FBUVFocUtBSUFFTElMRHdzZ0FFRUVhaERwQndcXFxuc0xNUUFDUUFKQUlBQkJnWUNBZ0hoR0RRQWdBRVVOQVNBQUlBRVFtZzBBQ3c4TFFkamR3QUJCRVVIczNjQUFFSU1IQUFzdUFRRi9Jd0JCXFxcbkVHc2lBU1FBSUFFZ0FDa0NBRGNEQ0NBQlFRaHFRYlRmd0FCQkFDQUFLQUlJUVFFUTlnSUFDeXdBQWtBZ0FVVU5BQUpBSUFJTkFFRUFMUVxcXG5EeHBrOGFJQUVnQUJEM0N3OExJQUVnQUJENEN5RUFDeUFBQ3k0QkFYOGpBRUVRYXlJQkpBQWdBU0FBS1FJQU53TUlJQUZCQ0dwQmxKZkJcXFxuQUVFQUlBQW9BZ2hCQVJEMkFnQUxLQUFnQVNBQ0lBTWdCQkRlQmlFRElBQWdBaUFFYXpZQ0JDQUFJQUVnQkdwQkFDQURHellDQUFzdUFRXFxcbkYvSXdCQkVHc2lBU1FBSUFFZ0FDa0NBRGNEQ0NBQlFRaHFRZURZelFCQkFDQUFLQUlJUVFFUTlnSUFDeTBBQWtBQ1FDQUJFS3dNRFFBZ1xcXG5BUkN0REEwQklBQWdBUkNBQ2c4TElBQWdBUkRmQXc4TElBQWdBUkRnQXdzbkFDQUFJQUFvQWdSQkFYRWdBWEpCQW5JMkFnUWdBQ0FCYWlcXFxuSUFJQUFvQWdSQkFYSTJBZ1FMS1FBQ1FDQUJLQUlBRFFBZ0FVRi9OZ0lBSUFBZ0FUWUNCQ0FBSUFGQkJHbzJBZ0FQQ3hDSkRRQUxLUUFDXFxcblFDQUJLQUlBRFFBZ0FVRi9OZ0lBSUFBZ0FUWUNCQ0FBSUFGQkNHbzJBZ0FQQ3hDSkRRQUxLUUVCZnlNQVFSQnJJZ0VrQUNBQklBQW9BZ1xcXG5BcEFnQTNBd2dnQVVFSWFoQ3dDaUFCUVJCcUpBQUxLZ0VCZnlBQUtBSUFJZ0lvQWdBZ0FpZ0NCQ0FBS0FJRUtBSUFRUUFnQVd0QkdHeHFcXFxuUVdocUVOMExDeW9CQVg4Z0FDZ0NBQ0lBSUFBb0FnQWlBVUZ3YWpZQ0FBSkFJQUZCY25GQkVrY05BQ0FBRUwwREN3c3RBUUYvQWtBQ1FDXFxcbkFCRFFCQkFDRUNEQUVMUVFFaEFpQUJFTXNESVFFTElBQWdBVFlDQkNBQUlBSTJBZ0FMTEFFQmZ5QUJLQUlFSVFJQ1FDQUJLQUlJUlEwQVxcXG5JQUZCREdvUWpBc0xJQUFnQWpZQ0JDQUFRUUEyQWdBTE5nRUJmeUFBUVFBb0F1eW1UMEhvMmNBQVFRQW9BdlNtVDBFQ1JpSUJHellDQkNcXFxuQUFRUUFvQXVpbVQwSGMyY0FBSUFFYk5nSUFDeWtCQVg4Z0FDQUFLQUlBSWdGQmYybzJBZ0FDUUNBQlFRUkpEUUFnQVVFQ2NRMEFJQUFRXFxcbnNnSUxDeWtCQVg4Z0FDQUFLQUlBSWdGQmYybzJBZ0FDUUNBQlFRUkpEUUFnQVVFQ2NRMEFJQUFRc2dJTEN5b0JBWDhnQUNnQ0FDSUNLQVxcXG5JQUlBSW9BZ1FnQUNnQ0JDZ0NBRUVBSUFGclFSaHNha0ZvYWhEZEN3czJBUUovUVFBdEFKeW5UeUVCUVFCQkFEb0FuS2RQUVFBb0FxQ25cXFxuVHlFQ1FRQkJBRFlDb0tkUElBQWdBallDQkNBQUlBRTJBZ0FMS3dFQmZ5QUFFUDhOSVFFQ1FBTkFJQUVRclFnaUFFRU5TdzBCUVFFZ0FIXFxcblJCZ013QWNRMEFDd3NnQUFzcEFRRi9Jd0JCRUdzaUFTUUFJQUVnQUNnQ0FDa0NBRGNEQ0NBQlFRaHFFTHNLSUFGQkVHb2tBQXNyQUFKQVxcXG5JQUVReUFraUFVR0FnTVFBUncwQUlBQkJnSURFQUVZUEN5QUFRWUNBeEFCSElBRWdBRVp4Q3ljQkFYOUJBQ0VFQWtBZ0FTQURTUTBBSUFcXFxuSWdBeUFBSUFFZ0EydHFJQU1RcGdvaEJBc2dCQXNwQVFGL0l3QkJFR3NpQVNRQUlBRWdBQ2dDQUNrQ0FEY0RDQ0FCUVFocUVNQUtJQUZCXFxcbkVHb2tBQXNzQVFGL1FSQVF1UWNpQWlBQk5nSUFJQUlnQUNrQ0FEY0NCQ0FDUVF4cUlBQkJDR29vQWdBMkFnQWdBZ3NyQVFGL1FRQWhBZ1xcXG5KQUlBQWdBVUdBbE92Y0EyNnRmQ0FBV2cwQVFiU1N3QUJCTGhDcEJ5RUNDeUFDQ3lzQkFYOENRQ0FCS0FJQUlnSVF0d1FpQVEwQUlBQWdcXFxuQWhEUEFROExJQUJCQVRZQ0FDQUFJQUUyQWdRTEt3RUJmd0pBSUFFb0FnQWlBaEMzQkNJQkRRQWdBQ0FDRU1NQkR3c2dBRUVCTmdJQUlBXFxcbkFnQVRZQ0JBc2xBQ0FCSUFJZ0F5QUVFTUlHSVFNZ0FDQUNJQVJyTmdJRUlBQWdBVUVBSUFNYk5nSUFDeXNCQVg4Q1FDQUJLQUlBSWdJUVxcXG51d1FpQVEwQUlBQWdBaENzQVE4TElBQkJBRFlDRUNBQUlBRTJBZ0FMTHdFQmZ3SkFJQUVvQWdBaUFoQzNCQ0lCRFFBZ0FDQUNFSzhERHdcXFxuc2dBRUdCbE92Y0F6WUNDQ0FBSUFFMkFnQUxLZ0VCZndKQUlBRW9BZ0FpQWhDM0JDSUJEUUFnQUNBQ0VGNFBDeUFBUVFBMkFnQWdBQ0FCXFxcbk5nSUVDeXNCQVg4Q1FDQUJLQUlBSWdJUXV3UWlBUTBBSUFBZ0FoQ2dBZzhMSUFCQkFEWUNBQ0FBSUFFMkFnUUxLd0VCZndKQUlBRW9BZ1xcXG5BaUFoQzNCQ0lCRFFBZ0FDQUNFSnNDRHdzZ0FFRUFOZ0lBSUFBZ0FUWUNCQXNyQVFGL0FrQWdBU2dDQUNJQ0VMc0VJZ0VOQUNBQUlBSVFcXFxuclFFUEN5QUFRUUEyQWhBZ0FDQUJOZ0lBQ3lzQkFYOENRQ0FCS0FJQUlnSVF1d1FpQVEwQUlBQWdBaERZQ3c4TElBQkJBRFlDRUNBQUlBXFxcbkUyQWdBTEt3RUJmd0pBSUFFb0FnQWlBaEM3QkNJQkRRQWdBQ0FDRUs0QkR3c2dBRUVBTmdJUUlBQWdBVFlDQUFzb0FRRi9Jd0JCRUdzaVxcXG5BeVFBSUFNZ0FqWUNDQ0FESUFFMkFnUWdBeUFBTmdJQUlBTVF3QTBBQ3lrQUFrQWdBa1VOQUVFQUxRRHhwazhhSUFJZ0FSRDNDeUVCQ3lcXFxuQUFJQUkyQWdRZ0FDQUJOZ0lBQ3lVQUFrQWdBVUVFU3cwQUlBQWdBVFlDQkNBQUlBSTJBZ0FQQ3lBQlFRUWdBeENEQlFBTEpRQUNRQ0FCXFxcbklBTkxEUUFnQUNBQk5nSUVJQUFnQWpZQ0FBOExJQUVnQXlBRUVJTUZBQXNvQVFGL0l3QkJFR3NpQXlRQUlBTWdBallDQ0NBRElBRTJBZ1xcXG5RZ0F5QUFOZ0lBSUFNUXh3MEFDeWdCQVg4akFFRVFheUlESkFBZ0F5QUNOZ0lJSUFNZ0FUWUNCQ0FESUFBMkFnQWdBeERJRFFBTEp3RUJcXFxuZndKQUlBQW9BZ1FpQVVVTkFDQUFRUWhxS0FJQUlnQkZEUUFnQVNBQVFRRVFzZ3dMQ3lZQkFuOUJBQ0VDQWtBZ0FDZ0NBQ0lESUFGTERRXFxcbkFnQXlBQUtBSUVhaUFCU3lFQ0N5QUNDeVFCQVg4akFFRVFheUlESkFBZ0F5QUJJQUlRandzZ0FDQURFT0VESUFOQkVHb2tBQXNrQVFGL1xcXG5Jd0JCRUdzaUF5UUFJQU1nQVNBQ0VKQUxJQUFnQXhEcEF5QURRUkJxSkFBTEpBRUJmeUFBSUFFUTZna2lBVUZvYWlJQ1FReHFOZ0lFSUFcXFxuQWdBa0VBSUFFYk5nSUFDeWNCQVg4Z0FDZ0NBQ0lDS0FJQUlBSW9BZ1FnQUNnQ0JDZ0NBQ0FCUVFOMGEwRjRhaERYQ3dzaUFBSkFBMEFnXFxcbkFVVU5BU0FCUVg5cUlRRWdBQkRqRENBQVFReHFJUUFNQUFzTEN5RUFBa0FnQVNBRFJ3MEFJQUFnQWlBQkVLUU5HZzhMSUFFZ0F5QUVFSVxcXG5VRkFBc2xBQUpBQWtBZ0FFR0JnSUNBZUVZTkFDQUFSUTBCSUFBZ0FSQ2FEUUFMRHdzUWx3Z0FDeWNCQVg4Q1FDQUFLQUlZRFFCQkFBOExcXFxuSUFBUTZ3UWhBU0FBSUFBb0FoaEJmMm8yQWhnZ0FRc25BUUYvQWtBZ0FDZ0NHQTBBUVFBUEN5QUFFT3dFSVFFZ0FDQUFLQUlZUVg5cU5nXFxcbklZSUFFTEl3QUNRQ0FBS0FJTURRQkJBQThMSUFBZ0FFRVFhaUFCRUtJRUlBRVF2UVZCQUVjTEpRQUNRQ0FCSUFJZ0F5QUVFSTRGSWdRTlxcXG5BQ0FBUVFBMkFnQVBDeUFBSUFFZ0JCQ09CZ3NsQUFKQUFrQWdBRUdCZ0lDQWVFWU5BQ0FBUlEwQklBQWdBUkNhRFFBTER3c1Fsd2dBQ3lcXFxuVUFBa0FDUUNBQVFZR0FnSUI0UmcwQUlBQkZEUUVnQUNBQkVKb05BQXNQQ3hDWENBQUxKUUFDUUFKQUlBQkJnWUNBZ0hoR0RRQWdBRVVOXFxcbkFTQUFJQUVRbWcwQUN3OExFSmNJQUFzbkFRRi9JQUFvQWdBaUFTQUJLQUlBSWdGQmYybzJBZ0FDUUNBQlFRRkhEUUFnQUJDUkJnc0xLZ1xcXG5BZ0FDQUJMUUFBUVFKMElnRkI4TzNBQUdvb0FnQTJBZ1FnQUNBQlFiRHV3QUJxS0FJQU5nSUFDeVVBQWtBQ1FDQUFRWUdBZ0lCNFJnMEFcXFxuSUFCRkRRRWdBQ0FCRUpvTkFBc1BDeENYQ0FBTElRQUNRQ0FCSUFOSERRQWdBQ0FDSUFFUXBBMGFEd3NnQVNBRElBUVFoUVVBQ3lVQUFrXFxcbkFDUUNBQVFZR0FnSUI0UmcwQUlBQkZEUUVnQUNBQkVKb05BQXNQQ3hDWENBQUxKUUFDUUFKQUlBQkJnWUNBZ0hoR0RRQWdBRVVOQVNBQVxcXG5JQUVRbWcwQUN3OExFSmNJQUFzb0FBSkFBa0FnQVVIOC8vLy9CMHNOQUNBQUlBRkJCQ0FDRUxBTElnRU5BUXNRMncwQUN5QUJDeVVBQWtcXFxuQUNRQ0FBUVlHQWdJQjRSZzBBSUFCRkRRRWdBQ0FCRUpvTkFBc1BDeENYQ0FBTEl3RUJmeU1BUVJCcklnRWtBQ0FCSUFBMkFnd2dBVUVNXFxcbmFoREpDU0FCUVJCcUpBQUxMZ0VCZndKQVFSQVF3UXNpQVEwQVFaaWF3UUJCSzBIVW1zRUFFSU1IQUFzZ0FFSVFOd0lFSUFBZ0FUWUNBQVxcXG5zbEFBSkFBa0FnQUVHQmdJQ0FlRVlOQUNBQVJRMEJJQUFnQVJDYURRQUxEd3NRbHdnQUN5UUFBa0FnQXlBQ1RRMEFJQU1nQWlBRUVJTUZcXFxuQUFzZ0FDQUROZ0lFSUFBZ0FUWUNBQXNsQUFKQUFrQWdBRUdCZ0lDQWVFWU5BQ0FBUlEwQklBQWdBUkNhRFFBTER3c1Fsd2dBQ3lVQUFrXFxcbkFDUUNBQVFZR0FnSUI0UmcwQUlBQkZEUUVnQUNBQkVKb05BQXNQQ3hDWENBQUxJd0VCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVVFTVxcXG5haERNQ1NBQlFSQnFKQUFMSXdBZ0FpQUNLQUlFUVg1eE5nSUVJQUFnQVVFQmNqWUNCQ0FBSUFGcUlBRTJBZ0FMSHdBZ0FDZ0NBQ0lBclVcXFxuSUFJQUNzZlNBQVFYOUtJZ0FiSUFBZ0FSRGtBUXNpQUNBQUtBSUFLQUlBS0FJQUlBQW9BZ1FvQWdBZ0FVRUNkR3RCZkdvb0FnQkdDeU1BXFxcbklBQW9BZ0FvQWdBZ0FDZ0NCQ2dDQUVFQUlBRnJRZFFBYkdwQnJIOXFFSXNIQ3lFQUlBQW9BZ0FvQWdBZ0FDZ0NCQ2dDQUVFQUlBRnJRUlxcXG5oc2FrRm9haER3REFzakFBSkFJQUVnQWlBREVLVUZJZ01OQUNBQVFRSTJBZ3dQQ3lBQUlBRWdBeENsQ0FzaUFDQUFLQUlBS0FJQUtBSUFcXFxuSUFBb0FnUW9BZ0FnQVVFQ2RHdEJmR29vQWdCR0N5Y0JBWDRnQUNrQ0FDRUJRUlFRcXdjaUFFSUFOd0lNSUFBZ0FUY0NCQ0FBUVFFMkFnXFxcbkFnQUFzaEFBSkFJQUZGRFFBZ0FDQUJJQUlRZ2dGQi93RnhEd3NnQUJDY0FrSC9BWEVMSmdBQ1FDQUFEUUJCbVA3QUFFRXlFSWNOQUFzZ1xcXG5BQ0FDSUFNZ0JDQUZJQUVvQWhBUkRnQUxLQUVCZndKQUlBQW9BZ1FpQVEwQVFZQ0F4QUFQQ3lBQUlBRkJmMm8yQWdRZ0FDZ0NBQkRJQ1FcXFxuc2xBUUYvSUFBZ0FVRUlhaWdDQURZQ0JDQUFJQUVvQWdBaUFpQUJLQUlFSUFJYk5nSUFDeVVCQVg4Z0FDQUJRUWhxS0FJQU5nSUVJQUFnXFxcbkFTZ0NBQ0lDSUFFb0FnUWdBaHMyQWdBTElBRUNmaUFBS1FNQUlnSWdBa0kvaHlJRGhTQURmU0FDUW45VklBRVE1QUVMSUFBZ0FDZ0NBQ1xcXG5nQ0FDQUJLQUlBUVFBZ0FtdEIxQUJzYWtHc2Yyb1E5QVFMSGdBZ0FDZ0NBQ2dDQUNBQktBSUFRUUFnQW10QkdHeHFRV2hxRVBNRUN5UUFcXFxuQWtBZ0FRMEFRY0NHd0FCQkt5QURFSU1IQUFzZ0FDQUNOZ0lFSUFBZ0FUWUNBQXNpQVFGL0FrQWdBQ2dDQkNBQUtBSUlJZ0pySUFGUERRXFxcbkFnQUNBQ0lBRVE4d2dMQ3lNQUlBRWdBa0dzcXNBQVFRY1FwZ29oQWlBQVFRQTZBQUFnQUNBQ1FRRnpPZ0FCQ3lBQkFYOGpBRUVRYXlJQlxcXG5KQUFnQVNBQUVKNEZJQUVRNHd3Z0FVRVFhaVFBQ3lJQkFYOENRQ0FBS0FJRUlBQW9BZ2dpQW1zZ0FVOE5BQ0FBSUFJZ0FSRDVDQXNMSWdcXFxuRUJmd0pBSUFBb0FnUWdBQ2dDQ0NJQ2F5QUJUdzBBSUFBZ0FpQUJFUHdJQ3dzaUFRRi9JQUFnQUNnQ0FDSUJRUUVnQVJzMkFnQUNRQ0FCXFxcblJRMEFJQUFRd0FRTEN5QUFBa0FnQVEwQUlBQWdBellDQkNBQUlBSTJBZ0FQQ3lBQ0lBTVFtZzBBQ3lJQkFYOENRQ0FBS0FJRUlBQW9BZ1xcXG5naUFtc2dBVThOQUNBQUlBSWdBUkNCQ1FzTElBRUJmMEVBSVFRQ1FDQUJJQU5IRFFBZ0FDQUNJQUVRb2cxRklRUUxJQVFMSWdFQmZ3SkFcXFxuSUFBb0FnUWdBQ2dDQ0NJQ2F5QUJUdzBBSUFBZ0FpQUJFSWdKQ3dza0FBSkFJQUFOQUVHWS9zQUFRVElRaHcwQUN5QUFJQUlnQXlBRUlBXFxcbkVvQWhBUkN3QUxKQUFDUUNBQURRQkJtUDdBQUVFeUVJY05BQXNnQUNBQ0lBTWdCQ0FCS0FJUUVRd0FDeVFBQWtBZ0FBMEFRWmord0FCQlxcXG5NaENIRFFBTElBQWdBaUFESUFRZ0FTZ0NFQkVMQUFza0FBSkFJQUFOQUVHWS9zQUFRVElRaHcwQUN5QUFJQUlnQXlBRUlBRW9BaEFSREFcXFxuQUxKQUFDUUNBQURRQkJtUDdBQUVFeUVJY05BQXNnQUNBQ0lBTWdCQ0FCS0FJUUVRc0FDeVFBQWtBZ0FBMEFRWmord0FCQk1oQ0hEUUFMXFxcbklBQWdBaUFESUFRZ0FTZ0NFQkVqQUFza0FBSkFJQUFOQUVHWS9zQUFRVElRaHcwQUN5QUFJQUlnQXlBRUlBRW9BaEFSS0FBTEpBQUNRQ1xcXG5BQURRQkJtUDdBQUVFeUVJY05BQXNnQUNBQ0lBTWdCQ0FCS0FJUUVTb0FDeUFCQVg5QkFDRUVBa0FnQVNBRFJ3MEFJQUFnQWlBQkVLSU5cXFxuUlNFRUN5QUVDeVFBQWtBZ0FRMEFRY0NDd1FCQkt5QURFSU1IQUFzZ0FDQUNOZ0lFSUFBZ0FUWUNBQXNpQVFGL0FrQWdBQ2dDQkNBQUtBXFxcbklJSWdKcklBRlBEUUFnQUNBQ0lBRVFpUWtMQ3lVQUlBRWdBQzBBQUVFQ2RDSUFRYXlWd1FCcUtBSUFJQUJCaEpYQkFHb29BZ0FRL3dvTFxcXG5JQUVCZjBFQUlRUUNRQ0FCSUFOSERRQWdBQ0FDSUFFUW9nMUZJUVFMSUFRTElnRUJmd0pBSUFBb0FnUWdBQ2dDQ0NJQ2F5QUJUdzBBSUFcXFxuQWdBaUFCRUpBSkN3c2lBUUYvQWtBZ0FDZ0NCQ0FBS0FJSUlnSnJJQUZQRFFBZ0FDQUNJQUVRa1FrTEN5SUJBWDhDUUNBQUtBSUVJQUFvXFxcbkFnZ2lBbXNnQVU4TkFDQUFJQUlnQVJDVUNRc0xJZ0VCZndKQUlBQW9BZ1FnQUNnQ0NDSUNheUFCVHcwQUlBQWdBaUFCRUpjSkN3c2dBUVxcXG5GL1FRQWhCQUpBSUFFZ0EwY05BQ0FBSUFJZ0FSQ2lEVVVoQkFzZ0JBc2dBUUYvUVFBaEJBSkFJQUVnQTBjTkFDQUFJQUlnQVJDaURVVWhcXFxuQkFzZ0JBc2xBQ0FCSUFBdEFBQkJBblFpQUVHUStNMEFhaWdDQUNBQVFlejJ6UUJxS0FJQUVQOEtDeDRBSUFBZ0FVRURjallDQkNBQUlBXFxcbkZxSWdFZ0FTZ0NCRUVCY2pZQ0JBc2dBQUpBSUFFTkFDQUFJQU0yQWdRZ0FDQUNOZ0lBRHdzZ0FpQURFSm9OQUFzZ0FRRi9Ba0FnQUNnQ1xcXG5CQ0lCUlEwQUlBQW9BZ0JCQkNBQlFReHNFS1FMQ3dzY0FBSkFJQUFwQXdCQ0FGRU5BQ0FBUVFocUR3c2dBQ0FCRUpZRkN4NEFJQUFvQWdcXFxuQW9BZ0FnQUNnQ0JDZ0NBQ0FCUVFOMGEwRjRhaENEQ3dzZ0FRRi9Ba0FnQUNnQ0JDSUJSUTBBSUFBb0FnQkJDQ0FCUVFkMEVLUUxDd3NoXFxcbkFRRi9Ba0FnQUNnQ0JDSUJSUTBBSUFBb0FnQkJCQ0FCUWRnQWJCQ2tDd3NMSUFFQmZ3SkFJQUFvQWdRaUFVVU5BQ0FBS0FJQVFRUWdBVVxcXG5FY2JCQ2tDd3NMSWdFQmZpQUFLUUlBSVFKQkRFRUVFS1VISWdBZ0FqY0NCQ0FBSUFFMkFnQWdBQXNnQVFGL0FrQWdBQ2dDQkNJQlJRMEFcXFxuSUFBb0FnQWdBVUVEZEVFRUVMSU1Dd3NlQUNBQUVJSU5JQUJCREdvUWdnMGdBRUVZYWlJQUVPNEhJQUFRbHdjTElBRUJmd0pBSUFBb0FnXFxcblFpQVVVTkFDQUFLQUlBUVFRZ0FVRURkQkMzQ3dzTElnQUNRQ0FBRFFCQm1QN0FBRUV5RUljTkFBc2dBQ0FDSUFNZ0FTZ0NFQkVJQUFzZ1xcXG5BUUYvQWtBZ0FDZ0NCQ0lCUlEwQUlBQW9BZ0JCQkNBQlFRTjBFTDhMQ3dzZ0FRRi9Ba0FnQUNnQ0JDSUJSUTBBSUFBb0FnQkJCQ0FCUVFcXFxuSjBFTDhMQ3dzZkFDQUFFTWdKSWdCQmdJREVBRWNnQUVIZi8vOEFjVUcvZjJwQkdrbHhDeUFCQVg4Q1FDQUFLQUlFSWdGRkRRQWdBQ2dDXFxcbkFFRUVJQUZCQW5RUXd3c0xDeUFCQVg4Q1FDQUFLQUlFSWdGRkRRQWdBQ2dDQUVFRUlBRkJBM1FRd3dzTEN5QUJBWDhDUUNBQUtBSUVJZ1xcXG5GRkRRQWdBQ2dDQUVFRUlBRkJBM1FReEFzTEN5QUJBWDhDUUNBQVFRUnFLQUlBSWdGRkRRQWdBQ2dDQUNBQlFRRVFzZ3dMQ3lBQkFYOENcXFxuUUNBQVFRUnFLQUlBSWdGRkRRQWdBQ2dDQUNBQlFRRVFzZ3dMQ3lNQUFrQWdBQzBBQUEwQUlBRkJ4S0hPQUVFRkVGTVBDeUFCUWNDaHpnXFxcbkJCQkJCVEN4d0FBa0FnQUMwQUFBMEFJQUF0QUFFUEN5QUFRUVJxRUs4SlFRQUxHd0FnQUNnQ0FDZ0NBQ0FCS0FJQUlBSkJBM1JyUVhocVxcXG5FTmNFQ3hzQUlBQW9BZ0FvQWdBZ0FTZ0NBQ0FDUVFKMGEwRjhhaENpQkFzYkFDQUFLQUlBSUFBb0FnUW9BZ0FnQVVFQ2RHdEJmR29Ra0FcXFxuY0xHd0FnQUNnQ0FDQUFLQUlFS0FJQUlBRkJBblJyUVh4cUVNY0hDeHNBSUFBb0FnQWdBQ2dDQkNnQ0FDQUJRUUowYTBGOGFoQ1BCd3NoXFxcbkFRRi9JQUVvQWdBaEFpQUJRUUEyQWdBZ0FDQUNJQUVvQWdRUW9Rc1FrUVFMR3dBZ0FDZ0NBQ0FBS0FJRUtBSUFJQUZCQW5SclFYeHFFSlxcXG5BSEN4c0FJQUFvQWdBZ0FDZ0NCQ2dDQUNBQlFRSjBhMEY4YWhESEJ3c2JBQ0FBS0FJQUlBQW9BZ1FvQWdBZ0FVRUNkR3RCZkdvUWp3Y0xcXFxuSVFBQ1FDQUFLQUlFRFFCQndJYkFBRUVyUWVDandBQVFnd2NBQ3lBQVFRUnFDeDBBQWtBZ0FrVU5BRUVBTFFEeHBrOGFJQUlnQVJEM0N5XFxcbkVCQ3lBQkN4b0FBa0FnQUNnQ0FFVU5BQ0FBUVFScUR3c2dBQ0FCRUtFREN5RUFBa0FnQVNnQ0FBMEFFSWNPQUFzZ0FFSFE0TUFBTmdJRVxcXG5JQUFnQVRZQ0FBc2dBQUpBSUFBTkFFR1kvc0FBUVRJUWh3MEFDeUFBSUFJZ0FTZ0NFQkVHQUFzZEFDQUFRUWhxSUFFUXdRMDJBZ0FnQUVcXFxuRUFOZ0lFSUFBZ0FUWUNBQXNkQVFGL1FRQWhBZ0pBSUFGQkFrY05BQ0FBUVFJUTVRUWhBZ3NnQWdzaEFBSkFJQUVvQWdBTkFCQ0hEZ0FMXFxcbklBQkJrSi9CQURZQ0JDQUFJQUUyQWdBTElRQUNRQ0FCS0FJQURRQVFodzRBQ3lBQVFmVFl6UUEyQWdRZ0FDQUJOZ0lBQ3h3QUlBQWdBU1xcXG5rQ0FEY0NBQ0FBUVFocUlBRkJDR29vQWdBMkFnQUxHUUFnQUVFUWFoRFZDeUFBUVNCcUlnQVFxQWNnQUJDMENnc1pBQ0FBUVJCcUVOVUxcXFxuSUFCQklHb2lBQkRoQnlBQUVMVUtDeGtBSUFCQkVHb1ExUXNnQUVFZ2FpSUFFS1lISUFBUXN3b0xHd0FDUUNBQUlBRVF0QVVpQVEwQUlBXFxcbkFnQWhEY0JTRUJDeUFCQ3gwQkFYOENRQ0FBS0FJQUlnRVF0d1FpQUEwQUlBRVFVaUVBQ3lBQUN4MEJBWDhDUUNBQUtBSUFJZ0VRdXdRaVxcXG5BQTBBSUFFUVZpRUFDeUFBQ3hzQUFrQWdBQ2dDQ0EwQVFRQkJBQ0FCRUlFRkFBc2dBQ2dDQUFzWkFDQUFJQUVnQVVFUWFpQUNJQU1RbUFcXFxuRWdBaUFERU93SkN4b0FJQUFnQVRZQ0NDQUFRUUEyQWdBZ0FFRU1haUFDT2dBQUN4MEJBWDhDUUNBQUtBSUVJZ0ZGRFFBZ0FDZ0NBRUVCXFxcbklBRVFzZ3NMQ3g0QUFrQWdBQ2dDQ0EwQVFRQkJBRUhFNjhBQUVJRUZBQXNnQUNnQ0FBc2RBUUYvQWtBZ0FDZ0NCQ0lCUlEwQUlBQW9BZ1xcXG5BZ0FVRUJFTElNQ3dzZEFRRi9Ba0FnQUNnQ0JDSUJSUTBBSUFBb0FnQkJBU0FCRUxzTEN3c2FBQ0FBSUFFMkFnUWdBRUVBTmdJQUlBQkJcXFxuQ0dvZ0FqWUNBQXNkQVFGL0FrQWdBQ2dDQkNJQlJRMEFJQUFvQWdBZ0FVRUJFTElNQ3dzZEFRRi9Ba0FnQUNnQ0JDSUJSUTBBSUFBb0FnXFxcbkJCQVNBQkVNUUxDd3NjQUNBQUtBSUFJZ0FvQWdBZ0FTQUFRUVJxS0FJQUtBSU1FUVlBQ3hnQUFrQWdBVUVKU1EwQUlBRWdBQkMrQVE4TFxcXG5JQUFRTGdzY0FRRi9Ba0FnQUNnQ0VDSUJEUUFnQUVFVWFpZ0NBQ0VCQ3lBQkN4b0FJQUFnQVNBQ0lBTW9BZ0FnQXlnQ0NCRHdBU0FERU9cXFxuTU1DeGNBQWtBZ0FDZ0NBRUVDUmcwQUlBQkJGR29RNHd3TEN4c0JBWDlCQ0VFRUVLVUhJZ0lnQURvQUJDQUNJQUUyQWdBZ0Fnc2JBUUYvXFxcblFRaEJCQkNsQnlJQ0lBQTJBZ1FnQWlBQk5nSUFJQUlMR0FBQ1FDQUFLQUlnUVFKR0RRQWdBQ0FCRUxZR0N5QUFDeGdBQWtBZ0FDZ0NJRVxcXG5FQ1JnMEFJQUFnQVJDMUJnc2dBQXNYQUNBQUVKd0NRZjhCY1NBQUlBRVE4d0ZCL3dGeFJ3c2JBQ0FCRUtvSElBQWdBU2dDQ0RZQ0JDQUFcXFxuSUFFb0FnQTJBZ0FMR3dBZ0FSQ3NCeUFBSUFFb0FnZzJBZ1FnQUNBQktBSUFOZ0lBQ3hzQUlBRVFyUWNnQUNBQktBSUlOZ0lFSUFBZ0FTXFxcbmdDQURZQ0FBc1dBQ0FBSUFFZ0FrRURkR28yQWdRZ0FDQUJOZ0lBQ3hzQUlBRVF0QWNnQUNBQktBSUlOZ0lFSUFBZ0FTZ0NBRFlDQUFzYlxcXG5BQ0FCRUxVSElBQWdBU2dDQ0RZQ0JDQUFJQUVvQWdBMkFnQUxHZ0FDUUNBQUtBSUVRWUNBeEFCSERRQWdBRUVJYWhDK0Nnc0xHZ0FDUUNcXFxuQUFLQUlJUVlDQXhBQkhEUUFnQUVFTWFoQy9DZ3NMSVFFQmZ3SkFFS1VDSWdBTkFFSC80YzBBUWQ0QVFmeml6UUFRaWdZQUN5QUFDeHNCXFxcbkFYOGdBU0FBUVFBb0FyeW5UeUlDUVlzQ0lBSWJFUVVBQUFzU0FFRUFRUmtnQUVFQmRtc2dBRUVmUmhzTEZnQWdBQ0FCUVFGeU5nSUVJQVxcXG5BZ0FXb2dBVFlDQUFzY0FDQUJLQUlVUWR5WnpnQkJEaUFCUVJocUtBSUFLQUlNRVFrQUN4a0FJQUFvQWhRZ0FTQUNJQUJCR0dvb0FnQW9cXFxuQWd3UkNRQUxIQUFnQVNnQ0ZFR2t1YzRBUVFVZ0FVRVlhaWdDQUNnQ0RCRUpBQXNjQUNBQktBSVVRZmlsendCQkN5QUJRUmhxS0FJQUtBXFxcbklNRVFrQUN4a0FJQUFvQWdBZ0FDZ0NDQ0FCS0FJQUlBRW9BZ2dRcGdvTEdRQWdBQ2dDQUNBQUtBSUVJQUVvQWdBZ0FTZ0NCQkNtQ2dzV1xcXG5BQUpBSUFBb0FnQWlBRUdFQVVrTkFDQUFFQUVMQ3hjQUFrQWdBQ2dDQkVVTkFDQUFFTW9FSUFBUXZBZ0xDeFVBQWtBZ0FDZ0NBRVVOQUNcXFxuQUFRUVJxRUlRTEN3c1hBQUpBSUFBb0FnUkZEUUFnQUJETEJDQUFFTDhJQ3dzWkFRRi9JQUFvQWdBZ0FDZ0NDQkFESVFFZ0FCRGpEQ0FCXFxcbkN4VUFJQUFnQVNBQlFSQnFJQUlROUFRZ0FoQ0VDZ3NXQUNBQUlBQW9BZ0FnQVNnQ0FHdEIxQUJ0RUlrRUN4VUFJQUFnQUNnQ0FDQUJLQVxcXG5JQWEwRVliUkNKQkFzV0FBSkFJQUFvQWdBaUFFR0VBVWtOQUNBQUVBRUxDeGNBSUFBZ0FqWUNDQ0FBSUFJMkFnUWdBQ0FCTmdJQUN4b0FcXFxuSUFCQkFEb0FEQ0FBUWdJM0FnUWdBRUdFMHNBQU5nSUFDeGNBSUFCQkFEWUNDQ0FBSUFJMkFnUWdBQ0FCTmdJQUN4Y0FJQUJCQURZQ0NDXFxcbkFBSUFJMkFnUWdBQ0FCTmdJQUN4VUFBa0FnQUNnQ0FFVU5BQ0FBUVFScUVJVU1Dd3NaQUNBQUtBSUFJQUFvQWdSQnBlM0FBRUVFRUtZS1xcXG5RUUZ6Q3hjQUFrQWdBS2NOQUVIbzlzQUFRU3NnQVJDREJ3QUxDeGNBSUFBZ0FqWUNDQ0FBSUFJMkFnUWdBQ0FCTmdJQUN4UUFJQUFnQWpcXFxua0RDQ0FBSUFGQkFFZXROd01BQ3hZQUFrQWdBQ2dDQUNJQVFZUUJTUTBBSUFBUUFRc0xHd0FnQUNnQ0FDSUFLQUlBSUFBb0FnaEIySXZCXFxcbkFFRUpFS1lLQ3hrQUlBQW9BZ0FnQUNnQ0JDQUJLQUlBSUFFb0FnUVFwZ29MR1FBZ0FDZ0NBQ0FBS0FJSVFZQ0t3UUJCQWhDbUNrRUJjd1xcXG5zWEFDQUFRUUEyQWdnZ0FFRUFOZ0lBSUFCQkFEWUNFQXNXQUFKQUlBQW9BZ2dnQVVrTkFDQUFJQUUyQWdnTEN4QUFJQUFnQVdwQmYycEJcXFxuQUNBQmEzRUxGZ0FnQVNnQ0ZDQUJRUmhxS0FJQUlBQW9BZ0FRYlFzWEFDQUFLQUlVSUFFZ0FFRVlhaWdDQUNnQ0VCRUdBQXNTQUNBQVFSXFxcbkJxRUlVTElBQkJNR29RNHd3TEZRQWdBU2dDQUNBQ0lBTVFpQXdnQUVFRU9nQUFDeFlBQWtBZ0FBMEFRWWlEd0FCQkZSQ0hEUUFMSUFFTFxcXG5GZ0FnQUNBQktBSUFJQUVvQWdnUThnSWdBUkRqREFzWUFBSkFJQUFvQWdoQmdaVHIzQU5IRFFBZ0FCRGdCd3NMRXdBQ1FDQUNSUTBBSUFcXFxuQWdBaUFCRUxJTUN3c1lBQUpBSUFBb0FnaEJnSlRyM0FOR0RRQWdBQkNmQ3dzTEZBQWdBU0FBS0FJVUlBQkJIR29vQWdBUWdBZ0xFd0FnXFxcbkFFRUVhaERqRENBQVFSQkJCQkN5REFzVEFDQUFRUVJxRU9BSElBQkJERUVFRUxJTUN4TUFJQUJCQkdvUXJ3a2dBRUVJUVFRUXNnd0xFd1xcXG5BZ0FFRUVhaERqRENBQVFSaEJCQkN5REFzWEFDQUFRUVJxUVFBZ0FVTGlydk8ra3FxMDRWVlJHd3NZQUNBQVFRUnFRUUFnQVVMTnVjREVcXFxudGZ5bjFzZ0FVUnNMRndBZ0FFRUVha0VBSUFGQ2xxcXE3c3UxcjZBaFVSc0xHQUFnQUVFRWFrRUFJQUZDMis3ejZkZmh3dmlzZjFFYkN4XFxcbmNBSUFCQkJHcEJBQ0FCUXJPcXJwcXQzKy95TkZFYkN4TUJBWDhnQUNBQklBSWdBeEJiSVFRZ0JBOExGQUFnQUNBQ0lBTVFBellDQkNBQVxcXG5RUUEyQWdBTEV3QUNRQ0FDUlEwQUlBQWdBaUFCRUxJTUN3c1pBUUYvQWtCQkFDZ0NnS2RQSWdBTkFCQ1dCeUVBQ3lBQUN4TUFBMEFnQUJcXFxuQ2tCa0gvQVhGQkFrY05BQXNMRXdBQ1FDQUNSUTBBSUFBZ0FpQUJFTElNQ3dzVkFDQUFLQUlBSWdBb0FnQWdBQ2dDQ0NBQkVGVUxFd0FDXFxcblFDQUNSUTBBSUFBZ0FpQUJFTElNQ3dzVEFDQUFJQUVnQW1vMkFnUWdBQ0FCTmdJQUN4TUFJQUFnQWtFRGREWUNCQ0FBSUFFMkFnQUxFd1xcXG5BQ1FDQUNSUTBBSUFBZ0FpQUJFTElNQ3dzVEFBSkFJQUpGRFFBZ0FDQUNJQUVRc2d3TEN4TUFBa0FnQVVVTkFDQUFJQUZCQkJDeURBc0xcXFxuRmdBZ0FDZ0NBQ0lBS0FJQUlBQW9BZ2dnQVJDY0RRc1VBQUpBSUFBdEFBQU5BQ0FBUVFScUVJb05Dd3NUQUFKQUlBSkZEUUFnQUNBQ0lBXFxcbkVRc2d3TEN4UUFJQUFvQWdBZ0FDZ0NCRUVEZEVFRUVMSU1DeFFBUVFBdEFQR21UeG9nQUVFRGRFRUVFUGNMQ3hrQUFrQWdBQTBBUVppYVxcXG53UUJCSzBHTW9jRUFFSU1IQUFzTEV3QUNRQ0FDUlEwQUlBQWdBaUFCRUxJTUN3c1RBQUpBSUFKRkRRQWdBQ0FDSUFFUXNnd0xDeE1BSUFcXFxuQkJCR29RNXdvZ0FFRVFRUVFRc2d3TEZnQWdBRUdvM3MwQU5nSUVJQUFnQVVFRWFqWUNBQXNZQUNBQVFRUnFRUUFnQVVLeWdwcnVtZGJCXFxcbnJxNS9VUnNMRHdBZ0FFRUJkQ0lBUVFBZ0FHdHlDeFlBSUFBZ0FTZ0NDRFlDQkNBQUlBRW9BZ0EyQWdBTEZRQWdBU0FBS0FJQUlnQW9BZ1xcXG5BZ0FDZ0NCQkJUQ3hNQUlBRW9BaFFnQVVFWWFpZ0NBQ0FBRUcwTEVnQUNRQ0FBS0FJQVJRMEFJQUFRNHd3TEN4SUFBa0FnQUNnQ0FFVU5cXFxuQUNBQUVONEhDd3NRQUNBQUlBRWdBU0FCSUFFZ0FSQXhDeEFBSUFBZ0FTQUJJQUVnQVNBQkVETUxFZ0FDUUNBQUtBSUFSUTBBSUFBUXJ3XFxcbmtMQ3c4QUFrQWdBRVVOQUE4TEVJZ05BQXNTQUFKQUlBQW9BZ0JGRFFBZ0FCRG9Dd3NMRWdBQ1FDQUFLQUlRUlEwQUlBQVEyQW9MQ3hJQVxcXG5Ba0FnQUNnQ0VFVU5BQ0FBRU5rS0N3c1NBQUpBSUFBb0FnUkZEUUFnQUJEM0RBc0xFZ0FDUUNBQUtBSVFSUTBBSUFBUTJnb0xDeE1BSUFcXFxuQWdBU0FDS0FJQUlBSW9BZ1FRcGdvTEVBQWdBQ0FCSUFFZ0FTQUJJQUVRTndzU0FBSkFJQUFvQWdSRkRRQWdBQkM5Q0FzTEVnQUNRQ0FBXFxcbktBSUVSUTBBSUFBUXZnZ0xDeElBQWtBZ0FDZ0NBRVVOQUNBQUVQQUpDd3NTQUFKQUlBQW9BZ0JGRFFBZ0FCQ0NEUXNMRXdBZ0FDQUJJQVxcXG5Jb0FnQWdBaWdDQ0JDbUNnc1RBQ0FBS0FJQUlBRW9BZ0FnQWlnQ0FCQWZDeElBQWtBZ0FDZ0NBRVVOQUNBQUVJb05Dd3NVQUNBQUtBSUFcXFxuSUFFZ0FDZ0NCQ2dDRUJFR0FBc1NBQUpBSUFBb0FnQkZEUUFnQUJEK0NRc0xGQUFnQUNnQ0FDSUFJQUFvQWdBb0FnQVJBZ0FMRkFBZ0FDXFxcbmdDQUNBQklBQW9BZ1FvQWd3UkJnQUxEd0FnQUNBQklBSWdBeUFFRUVNQUN3OEFJQUFRMkFvZ0FFRXdhaERhQ2dzUkFDQUFJQUVvQWdBZ1xcXG5BU2dDQ0JEeUFnc1JBQ0FBS0FJQUlBQW9BZ2dnQVJDY0RRc1BBQ0FBRU9NTUlBQkJER29RNHd3TEVRQWdBQ2dDQUVFQklBQW9BZ1FRcEFcXFxuc0xEd0FnQUJEakRDQUFRU0JxRU9NTUN4RUFJQUVnQUNnQ0FDQUFLQUlJRU5RSUN4RUFJQUFvQWdBZ0FDZ0NDQ0FCRU9JQkN4TUFJQUJCXFxcbktEWUNCQ0FBUWNpTHdBQTJBZ0FMRXdBZ0FFRW9OZ0lFSUFCQnlJdkFBRFlDQUFzUkFDQUJJQUFvQWdBZ0FDZ0NDQkNBQ0FzVEFDQUFRWVxcXG5DV3dBQTJBZ1FnQUNBQk5nSUFDeE1BSUFCQnZKYkFBRFlDQkNBQUlBRTJBZ0FMRXdBZ0FFSDRsc0FBTmdJRUlBQWdBVFlDQUFzVEFDQUFcXFxuUWJTWHdBQTJBZ1FnQUNBQk5nSUFDeE1BSUFCQjhKZkFBRFlDQkNBQUlBRTJBZ0FMRGdBZ0FDQUJJQUlRMmdoQkFFY0xFUUFnQUVFUWFrXFxcbkdBb3NBQVFRZ1E5UXNMRUFFQmZ5QUFJQUVRNlFvaEFpQUNEd3NRQVFGL0lBQWdBUkRoQmlFQ0lBSVBDeEVBSUFBb0FnQWdBQ2dDQkNBQlxcXG5FTThNQ3c4QUlBQW9BZ0FnQVJDSEFocEJBQXNRQUNBQUtBSUFJQUVnQWhEOEMwRUFDdzRBSUFBZ0FTQUJJQUpxRVBjSUN4RUFJQUFvQWdcXFxuQWdBQ2dDQkNBQkVNOE1DeEVBSUFBb0FnQWlBQkN6Q1NBQUVQd01DeE1BSUFCQktEWUNCQ0FBUVpDendBQTJBZ0FMRUFBZ0FDZ0NBQ0FCXFxcbklBSVFnUXhCQUFzT0FDQUFJQUVnQVNBQ2FoRDZDQXNRQUNBQUtBSUFJQUFvQWdnZ0FSQlZDdzhBSUFBZ0FDZ0NDRUVCYWpZQ0NBc1FBQ1xcXG5BQVFRRTZBQVFnQUNBQk5nSUFDeE1BUVFCQkFDZ0MvS1pQUVg5cU5nTDhwazhMRGdBZ0FDQUJJQUVnQW1vUWdBa0xFUUFnQUNnQ0FDQUFcXFxuS0FJRUlBRVFuQTBMRGdBZ0FDQUJJQUVnQW1vUWhna0xFQUFnQUNBQ05nSUVJQUFnQVRZQ0FBc1FBQ0FBSUFNMkFnUWdBQ0FCTmdJQUN4XFxcbkFBSUFBb0FnQWdBU2dDQUNBQ0VDZ0xFUUJCQUMwQThhWlBHaUFCSUFBUTl3c0xFUUFnQUNnQ0FDQUFLQUlJSUFFUW5BMExGQUJCQUNBQVxcXG5OZ0tncDA5QkFFRUJPZ0NjcDA4TEVBQWdBQ2dDQUNBQklBSVFrd3hCQUFzT0FDQUFJQUZCQTNSQkJCQ3lEQXNQQUNBQUVQWUhJQUJCREdcXFxub1E5Z2NMRndBZ0FFSFkrTVFBUVpvSFFZeUh4UUJCbWdjUWpRUUxEZ0FnQUNBQklBRWdBbW9Ra3drTERnQWdBQ0FCSUFFZ0Ftb1FsZ2tMXFxcbkVBQWdBQ2dDQUNBQUtBSUVJQUVRVlFzUkFDQUFLQUlBSUFBb0FnUWdBUkNjRFFzUkFDQUJJQUFvQWdBZ0FDZ0NCQkQvQ2dzVEFDQUFRU1xcXG5nMkFnUWdBRUhVM2MwQU5nSUFDeE1BSUFCQjVON05BRFlDQkNBQUlBRTJBZ0FMRUFBZ0FDQUNOZ0lFSUFBZ0FUWUNBQXNRQUNBQUtBSUFcXFxuSUFBb0FnZ2dBUkJWQ3hFQUlBQW9BZ0FnQUNnQ0NDQUJFSndOQ3hBQUlBQW9BZ0FnQUNnQ0JDQUJFRlVMRVFBZ0FDZ0NBQ0FBS0FJRUlBXFxcbkVRbkEwTEVBQWdBQ2dDQUNBQUtBSUlJQUVRVlFzUkFDQUFLQUlBSUFBb0FnZ2dBUkNjRFFzUUFDQUFJQUkyQWdRZ0FDQUJOZ0lBQ3hNQVxcXG5JQUJCak8vTkFEWUNCQ0FBSUFFMkFnQUxFQUFnQUVJQ053TUlJQUJDQVRjREFBc05BQ0FBTFFBRVFRSnhRUUYyQ3c4QUlBQWdBQ2dDQkVcXFxuRitjVFlDQkFzTkFDQUFLQUlFUVFOeFFRRkhDeEVBSUFBb0FnQWdBQ2dDQ0NBQkVKd05DeEFBSUFBb0FnQWdBQ2dDQ0NBQkVGVUxFd0FnXFxcbkFFRU5OZ0lFSUFCQmovM05BRFlDQUFzUUFDQUJJQUFvQWdBZ0FDZ0NCQkJUQ3cwQUlBQXRBQnhCQkhGQkFuWUxEUUFnQUMwQUhFRVFjVVxcXG5FRWRnc05BQ0FBTFFBY1FTQnhRUVYyQ3hBQUlBQWdBallDQkNBQUlBRTJBZ0FMRHdBZ0FDZ0NBQ0FBS0FJSUVPWUpDdzBBSUFBZ0FTQUNcXFxuRUlnTVFRQUxFQUFnQUNBQlFlR1p3QUJCQWhDZ0N3c01BQ0FBSUFFZ0FoRGdEUThMREFBZ0FFRUFJQUFReGd3YkN3d0FJQUJCQUNBQUVNXFxcblVNR3dzT0FDQUFJQUVnQVMwQUFSQ0dDQXNOQUNBQUtBSUFJQUVnQWhBUEN3MEFJQUFnQVNBQ0VQd0xRUUFMRGdBZ0FDZ0NBQ0FCRU1vR1xcXG5RUUFMRFFBZ0FDQUJJQUlRZ1F4QkFBc1NBRUhRNGNBQVFTWkI0T0xBQUJEYUNRQUxFZ0JCME9IQUFFRW1RYURqd0FBUTJna0FDeElBUWRcXFxuRGh3QUJCSmtIdzRzQUFFTm9KQUFzU0FFSFE0Y0FBUVNaQmdPUEFBQkRhQ1FBTEVnQkIwT0hBQUVFbVFaRGp3QUFRMmdrQUN3MEFJQUFnXFxcbkFTQUNJQU1ReXdrTERRQWdBQ0FCSUFJUWt3eEJBQXNNQUNBQUtBSUFFQlJCQVVZTERBQWdBQ2dDQUJBVFFRRkdDd3dBSUFBb0FnQVFDMFxcXG5FQlJnc01BQ0FBS0FJQUVDRkJBRWNMREFBZ0FDZ0NBQkFjUVFCSEN3d0FJQUFvQWdBUUprRUFSd3NQQUNBQUtBSUFJQUVvQWdBUW1Bc0xcXFxuRGdBZ0FDZ0NBQ0FCRU40RVFRQUxEUUFnQUNBQklBSVFrd3hCQUFzTUFDQUFJQUZCRUJDaURVVUxEd0FnQUNnQ0FDQUFLQUlFRUpBTUN3XFxcbjhBSUFBb0FnQW9BZ0FnQVJEY0Jnc1BBQ0FBS0FJQUtBSUFJQUVRM1FZTERnQWdBRUdBcUgxcVFhVFhBRWtMRGdBZ0FDQUNJQUVvQWd3UlxcXG5CZ0FMRFFBZ0FDZ0NBQ0FCSUFJUWJ3c0xBQ0FBSUFFUWlBNGFBQXNQQUNBQUtBSUFJQUF0QUFRNkFBQUxDZ0JCQUNBQWF5QUFjUXNMQUNcXFxuQUFMUUFFUVFOeFJRc01BQ0FBSUFGQkEzSTJBZ1FMRFFBZ0FDZ0NBQ0FBS0FJRWFnc09BQ0FBS0FJQUlBRVE0UUZCQUFzTUFDQUFRUXhxXFxcbklBRVE1d0lMRFFBZ0FDZ0NBQm9EZnd3QUN3c09BQ0FBTlFJQVFRRWdBUkRrQVFzT0FDQUFNUUFBUVFFZ0FSRGtBUXNPQUNBQU13RUFRUVxcXG5FZ0FSRGtBUXNOQUNBQUlBRWdBaENCQWlBQUN3MEFJQUFvQWdBZ0FTQUNFSG9MRGdBZ0FDa0RBRUVCSUFFUTVBRUxEQUFnQUNBQklBSWdcXFxuQXhCckN3c0FJQUFqQUdva0FDTUFDd3dBSUFBUXJ3d2dBQkN3Q2dzTUFDQUFFS2tPSUFBUTVBb0xDd0FnQUVFVVFRUVFzZ3dMQ3dBZ0FDXFxcbkFCRU84TkVFc0xEZ0FnQVVHc2hNQUFRUVVRL3dvTERnQWdBVUc1cXNBQVFTSVEvd29MRGdBZ0FVSG9xOEFBUVMwUS93b0xEZ0FnQVVHalxcXG5yTUFBUVNjUS93b0xDZ0FnQUJDSUF4cEJBUXNLQUNBQUVJa0RHa0VCQ3dvQUlBQkJCR29RNHd3TENnQWdBRUVFYWhEZ0J3c0tBQ0FBUVFcXFxuUnFFSzhKQ3dvQUlBQkJCR29RNHd3TERBQWdBQ0FCRVBNTkVJSUxDd3NBSUFBZ0FSRFlCRUVBQ3dzQUlBQkJDRUVFRUxJTUN3c0FJQUJCXFxcbkNFRUVFTElNQ3dzQUlBQkJFRUVFRUxJTUN3c0FJQUJCREVFRUVMSU1Dd3NBSUFCQkdFRUVFTElNQ3dzQUlBQkJCRUVJRU1rSEN3c0FJQVxcXG5BZ0FVRUFFSVVDQ3dvQUlBQWdBUkQ3Q2c4TERBQWdBQkNwRGlBQUVPUUtDd3dBSUFBUXFRNGdBQkRrQ2dzTEFDQUFRUlJCQkJDeURBc0xcXFxuQUNBQUlBRVF5Z1pCQUFzTEFDQUFJQUVnQWhDYkFRc01BQ0FBS0FJQUlBRVFpZ1FMREFBZ0FCQzBDeUFBRVBrR0N3d0FJQUFvQWdBZ0FSXFxcbkRwQWdzTUFDQUFFSzhPSUFBUTlnY0xEQUFnQUJDdERpQUFFTHNLQ3d3QUlBQW9BZ0FnQVJEYkF3c01BQ0FBS0FJQUlBRVFwUVFMQ3dBZ1xcXG5BQ2dDQUNBQkVCb0xDUUFnQUNBQkVDb0FDdzBBUVlDQXdRQkJHeENIRFFBTERnQkJtNERCQUVIUEFCQ0hEUUFMREFBZ0FCQ3ZEaUFBRVBcXFxuWUhDd3NBSUFBZ0FSRGVCRUVBQ3d3QUlBQW9BZ0FnQVJDV0RBc09BQ0FCUVlUWnpRQkJDQkQvQ2dzT0FDQUJRWmJaelFCQkVSRC9DZ3NPXFxcbkFDQUJRYlRkelFCQkF4RC9DZ3NPQUNBQlFiZmR6UUJCQXhEL0Nnc0tBQ0FBUVFScUVPY0tDd3dBSUFBb0FnQWdBUkQ5QndzTEFDQUFRUlxcXG5CQkJCQ3lEQXNLQUNBQUlBRWdBaEJsQ3dvQUlBQW9BZ1JCZUhFTENnQWdBQ2dDQkVFQmNRc0tBQ0FBS0FJTVFRRnhDd29BSUFBb0FneEJcXFxuQVhZTERBQWdBQ2dDQUNBQkVPZ0NDd29BSUFBZ0FSQ2JEUUFMQ2dBZ0FTQUFFUGtNQUFzS0FDQUNJQUFnQVJCVEN3d0FJQUFnQVNrQ0FEXFxcbmNEQUFzTUFDQUFJQUVwQWdnM0F3QUxEQUFnQUNnQ0FDQUJFT1lCQ3d3QUlBQW9BZ0FnQVJEbkFRc0xBQ0FBSUFFZ0FoQ1VBd3NMQUNBQVxcXG5JQUVnQWhDOEJnc0tBQ0FBSUFFZ0FoQmtDd3NBSUFBZ0FTQUNFT01CQ3d3QUlBQkIySmpBQUJDMkNnc01BRUc0cTg4QUlBQVFzUW9MQ1FcXFxuQWdBU0FCRU9jTUN3a0FJQUVnQVJEbURBc0pBQ0FCSUFFUWlRY0xDUUFnQVNBQkVPZ01Dd2tBSUFBZ0FSQ1FEUXNKQUNBQUlBRVFqUTBMXFxcbkNRQWdBQ0FCRUk0TkN3a0FJQUVnQVJEcERBc0pBQ0FBSUFFUWp3MExDUUFnQUVFQU5nSUFDd2tBSUFCQkFEWUNBQXNNQUNBQVFaeVl3QVxcXG5BUTdRb0xEQUFnQUVHd21NQUFFTEVKQ3d3QUlBQkJ4SmpBQUJEdUNnc01BQ0FBUWV5WXdBQVF4Z2NMQ1FBZ0FDQUJFSXdCQ3drQUlBQWdcXFxuQVJDTUFRc0pBQ0FBSUFFUWpBRUxDUUFnQUNBQkVJd0JDd2tBSUFBZ0FCRHdDZ3NKQUNBQUlBQVE3d29MQ1FBZ0FFRUFOZ0lBQ3drQUlBXFxcbkFnQVJEWUJnc0pBQ0FCSUFBUXJ3WUxEQUJCaEtmUEFDQUFFTkFLQ3dnQUlBQVF0UWtBQ3drQUlBQW9BZ0FRR3dzSUFDQUFJQUVRSFFzSlxcXG5BQ0FBS0FJQUVDSUxDUUFnQUNnQ0FCQW5Dd2tBSUFBb0FnQVFKUXNKQUNBQUlBRVFzd01MQ0FBZ0FCQzNDUUFMQ0FBZ0FCQzVDUUFMQ1FcXFxuQWdBRUVBTmdJQUN3a0FJQUFnQVJDTUFRc0tBRUVBS0FLa3EwOUZDd2tBSUFBZ0FSRFNBUXNJQUNBQUVPOERBQXNIQUNBQUlBRnFDd2NBXFxcbklBQWdBV3NMQndBZ0FFRUlhZ3NIQUNBQVFYaHFDd2NBSUFFUS93RUxCd0FnQVJEL0FRc0hBQ0FCRVA4QkN3Y0FJQUFRNHd3TEJ3QWdBQlxcXG5EakRBc0hBQ0FBRUlRTEN3Y0FJQUFRNFFvTEJ3QWdBQkNnQXdzSEFDQUFFSUlOQ3dZQUVJY09BQXNIQUNBQUVJb05Dd2NBSUFBUXp3TUxcXFxuQndBZ0FCRG5DZ3NIQUNBQUVQNEhDd1lBSUFBUVNRc0hBQ0FBS0FJTUN3Y0FJQUFvQWdnTEJ3QWdBQ2dDREFzSEFDQUFLQUlJQ3djQUlBXFxcbkF0QUJBTERBQkM3WVhybWNYKzU5QnpDdzBBUXR2dTgrblg0Y0w0ckg4TERRQkNpL1Bkc3ZYaGo3S0Nmd3NNQUVLenFxNmFyZC92OGpRTFxcXG5EUUJDN2RPWmxaL296THI2QUFzTUFFS0Q4YW5Gczd1Ymd6d0xEUUJDemJuQXhMWDhwOWJJQUFzTUFFS1dxcXJ1eTdXdm9DRUxEQUJDblpcXFxuVHp4UHViMHZNRUN3UUFJQUFMQkFCQkFBc05BRUtHc0txeXZ0N1lyS3QvQ3d3QVF1S3U4NzZTcXJUaFZRc0VBQ0FBQ3dRQVFRQUxEQUJDXFxcbndmZjU2TXlUc3RGQkN3VUFFTFlPQ3dRQUlBQUxCQUFnQUFzRUFDQUFDd1FBRUJVTEJBQVFHUXNFQUNBQUN3UUFFQ3NMREFCQ3dmZjU2TVxcXG55VHN0RkJDd1FBSUFBTERBQkN3ZmY1Nk15VHN0RkJDdzBBUXFlRzVmdkY4Y0NUZ244TERRQkNnYWJWbnNXcHc0Vytmd3NOQUVLeWdwcnVcXFxubWRiQnJxNS9DdzBBUXA3WWc4bSt1L1AzaTM4TERBQkN3ZmY1Nk15VHN0RkJDd1FBSUFBTEF3QUFDd01BQUFzRUFFRUhDd1FBUVFnTEJBXFxcbkFnQUFzRUFFRUFDd1FBUVFBTEJBQkJBQXNFQUVFQUN3UUFRUUVMQmdCQmdJQUVDdzBBUXA3WWc4bSt1L1AzaTM4TEFnQUxBZ0FMQWdBTFxcXG5BZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdcXFxuQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxBZ0FMQWdBTEFnQUxDLzZtXFxcbmo0QUFBZ0JCZ0lEQUFBdURwZzloYkhObGNuVmxkV3hzYVc1MFpYSnVZV3dnWlhKeWIzSTZJR1Z1ZEdWeVpXUWdkVzV5WldGamFHRmliR1xcXG5VZ1kyOWtaWDR2TG1OaGNtZHZMM0psWjJsemRISjVMM055WXk5cGJtUmxlQzVqY21GMFpYTXVhVzh0Tm1ZeE4yUXlNbUppWVRFMU1EQXhcXFxuWmk5elpYSmtaVjlxYzI5dUxURXVNQzR4TURRdmMzSmpMMlJsTG5KekFBQUFNZ0FRQUZNQUFBQ1BCQUFBSmdBQUFESUFFQUJUQUFBQW1RXFxcblFBQUNJQUFBQVFBQUFBQUFBQUFBRUFBQUFSQUFBQUVBQUFBQUFBQUFBQkFBQUFFZ0FBQUg0dkxtTmhjbWR2TDNKbFoybHpkSEo1TDNOeVxcXG5ZeTlwYm1SbGVDNWpjbUYwWlhNdWFXOHRObVl4TjJReU1tSmlZVEUxTURBeFppOXpaWEprWlY5cWMyOXVMVEV1TUM0eE1EUXZjM0pqTDNcXFxuTmxjaTV5YzhnQUVBQlVBQUFBL2dVQUFCSUFBQURJQUJBQVZBQUFBQlFJQUFBN0FBQUF5QUFRQUZRQUFBQWhDQUFBTGdBQUFDSnVkV3hzXFxcblhIUmNjbHh1WEdaY1lseGNYQ0lBWUFFUUFBQUFBQUFUQUFBQUNBQUFBQVFBQUFBVUFBQUFGUUFBQUFBQUFBRC8vLy8vLy8vLy8yQjFiblxcXG5keVlYQmZkR2h5YjNkZ0lHWmhhV3hsWkc1aGJtOXpYM05wYm1ObFgyVndiMk5vYzJWamMxOXphVzVqWlY5bGNHOWphQUFBRUFBQUFBQUFcXFxuQUFBQkFBQUFGZ0FBQUJjQUFBQU1BQUFBQkFBQUFCZ0FBQUFYQUFBQURBQUFBQVFBQUFBWkFBQUFHQUFBQU5BQkVBQWFBQUFBR3dBQUFCXFxcbndBQUFBYUFBQUFIUUFBQUJBQUFBQUFBQUFBQVFBQUFCNEFBQUFRQUFBQUFBQUFBQUVBQUFBZkFBQUFZU0J0WVhBQUFBQ3VBUkFBRUFBQVxcXG5BSjBCRUFBUkFBQUFmaTh1WTJGeVoyOHZjbVZuYVhOMGNua3ZjM0pqTDJsdVpHVjRMbU55WVhSbGN5NXBieTAyWmpFM1pESXlZbUpoTVRcXFxuVXdNREZtTDJOdmJuTnZiR1ZmWlhKeWIzSmZjR0Z1YVdOZmFHOXZheTB3TGpFdU55OXpjbU12YkdsaUxuSnpSQUlRQUdBQUFBQ1ZBQUFBXFxcbkRnQUFBQkFBQUFBQUFBQUFBUUFBQUNBQUFBQWhBQUFBSWdBQUFHOXVaUzEwYVcxbElHbHVhWFJwWVd4cGVtRjBhVzl1SUcxaGVTQnViM1xcXG5RZ1ltVWdjR1Z5Wm05eWJXVmtJSEpsWTNWeWMybDJaV3g1ekFJUUFEZ0FBQUJQYm1ObElHbHVjM1JoYm1ObElHaGhjeUJ3Y21WMmFXOTFcXFxuYzJ4NUlHSmxaVzRnY0c5cGMyOXVaV1FBQUF3REVBQXFBQUFBWTJGc2JHVmtJR0JQY0hScGIyNDZPblZ1ZDNKaGNDZ3BZQ0J2YmlCaElHXFxcbkJPYjI1bFlDQjJZV3gxWlM5eWRYTjBZeTlsWWpJMk1qazJZalUxTm1ObFpqRXdabUkzTVROaE16aG1NMlF4Tm1JNU9EZzJNRGd3WmpJMlxcXG5MMnhwWW5KaGNua3ZjM1JrTDNOeVl5OXplVzVqTDI5dVkyVXVjbk1BYXdNUUFFd0FBQUNWQUFBQU1nQUFBR05oYm01dmRDQmhZMk5sYzNcXFxuTWdZU0JVYUhKbFlXUWdURzlqWVd3Z1UzUnZjbUZuWlNCMllXeDFaU0JrZFhKcGJtY2diM0lnWVdaMFpYSWdaR1Z6ZEhKMVkzUnBiMjRBXFxcbkFCQUFBQUFBQUFBQUFRQUFBQ01BQUFBdmNuVnpkR012WldJeU5qSTVObUkxTlRaalpXWXhNR1ppTnpFellUTTRaak5rTVRaaU9UZzROalxcXG5BNE1HWXlOaTlzYVdKeVlYSjVMM04wWkM5emNtTXZkR2h5WldGa0wyeHZZMkZzTG5KekFDQUVFQUJQQUFBQTlnQUFBQm9BQUFBWEFBQUFcXFxuREFBQUFBUUFBQUFrQUFBQUpRQUFBQ1lBQUFCaElFUnBjM0JzWVhrZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRnY21WMGRYSnVaV1FnWVc0Z1pYXFxcbkp5YjNJZ2RXNWxlSEJsWTNSbFpHeDVBQkFBQUFBQUFBQUFBUUFBQUNjQUFBQXZjblZ6ZEdNdlpXSXlOakk1Tm1JMU5UWmpaV1l4TUdaaVxcXG5OekV6WVRNNFpqTmtNVFppT1RnNE5qQTRNR1l5Tmk5c2FXSnlZWEo1TDJGc2JHOWpMM055WXk5emRISnBibWN1Y25NQTRBUVFBRXNBQUFcXFxuRGNDUUFBRGdBQUFCTUFBQUFFQUFBQUJBQUFBQ2dBQUFCdmRtVnlabXh2ZHlCcGJpQkVkWEpoZEdsdmJqbzZibVYzQUFBQVRBVVFBQmtBXFxcbkFBQXZjblZ6ZEdNdlpXSXlOakk1Tm1JMU5UWmpaV1l4TUdaaU56RXpZVE00WmpOa01UWmlPVGc0TmpBNE1HWXlOaTlzYVdKeVlYSjVMMlxcXG5OdmNtVXZjM0pqTDNScGJXVXVjbk53QlJBQVNBQUFBTW9BQUFBVkFBQUFaR1Z6WTNKcGNIUnBiMjRvS1NCcGN5QmtaWEJ5WldOaGRHVmtcXFxuT3lCMWMyVWdSR2x6Y0d4aGVXRnpjMlZ5ZEdsdmJpQm1ZV2xzWldRNklHMXBaQ0E4UFNCelpXeG1MbXhsYmlncFkyRnNiR1ZrSUdCU1pYXFxcbk4xYkhRNk9uVnVkM0poY0NncFlDQnZiaUJoYmlCZ1JYSnlZQ0IyWVd4MVpRQUFLUUFBQUFRQUFBQUVBQUFBS2dBQUFDc0FBQUFFQUFBQVxcXG5CQUFBQUN3QUFBQXdNREF4TURJd016QTBNRFV3TmpBM01EZ3dPVEV3TVRFeE1qRXpNVFF4TlRFMk1UY3hPREU1TWpBeU1USXlNak15TkRcXFxuSTFNall5TnpJNE1qa3pNRE14TXpJek16TTBNelV6TmpNM016Z3pPVFF3TkRFME1qUXpORFEwTlRRMk5EYzBPRFE1TlRBMU1UVXlOVE0xXFxcbk5EVTFOVFkxTnpVNE5UazJNRFl4TmpJMk16WTBOalUyTmpZM05qZzJPVGN3TnpFM01qY3pOelEzTlRjMk56YzNPRGM1T0RBNE1UZ3lPRFxcXG5NNE5EZzFPRFk0TnpnNE9EazVNRGt4T1RJNU16azBPVFU1TmprM09UZzVPUzl5ZFhOMFl5OWxZakkyTWprMllqVTFObU5sWmpFd1ptSTNcXFxuTVROaE16aG1NMlF4Tm1JNU9EZzJNRGd3WmpJMkwyeHBZbkpoY25rdmMzUmtMM055WXk5d1lYUm9Mbkp6QUNnSEVBQkhBQUFBOFFzQUFCXFxcbllBQUFBb0J4QUFSd0FBQVBvTEFBQWtBQUFBS0FjUUFFY0FBQUFEREFBQUhRQUFBQ2dIRUFCSEFBQUFFQXdBQUJ3QUFBQmhkSFJsYlhCMFxcXG5JSFJ2SUdwdmFXNGdhVzUwYnlCamIyeHNaV04wYVc5dUlIZHBkR2dnYkdWdUlENGdkWE5wZW1VNk9rMUJXQzl5ZFhOMFl5OWxZakkyTWpcXFxuazJZalUxTm1ObFpqRXdabUkzTVROaE16aG1NMlF4Tm1JNU9EZzJNRGd3WmpJMkwyeHBZbkpoY25rdllXeHNiMk12YzNKakwzTjBjaTV5XFxcbmN3QUFBT1VIRUFCSUFBQUFzQUFBQUJZQUFBRGxCeEFBU0FBQUFKa0FBQUFLQUFBQWFXNTJZV3hwWkNCMllXeDFaVG9nTENCbGVIQmxZM1xcXG5SbFpDQUFBRkFJRUFBUEFBQUFYd2dRQUFzQUFBQnRhWE56YVc1bklHWnBaV3hrSUdCZ2ZBZ1FBQThBQUFDTENCQUFBUUFBQUhWdWEyNXZcXFxuZDI0Z1ptbGxiR1FnWUdBc0lIUm9aWEpsSUdGeVpTQnVieUJtYVdWc1pITUFBQUNjQ0JBQUR3QUFBS3NJRUFBV0FBQUFZQ3dnWlhod1pXXFxcbk4wWldRZ25BZ1FBQThBQUFEVUNCQUFEQUFBQUdsdWRtRnNhV1FnYkdWdVozUm9JQUR3Q0JBQUR3QUFBRjhJRUFBTEFBQUFaSFZ3YkdsalxcXG5ZWFJsSUdacFpXeGtJR0FBQUFBUUNSQUFFUUFBQUlzSUVBQUJBQUFBYjNabGNtWnNiM2NnWkdWelpYSnBZV3hwZW1sdVp5QlRlWE4wWldcXFxuMVVhVzFsSUdWd2IyTm9JRzltWm5ObGRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJ2ZG1WeVpteHZkeUJrWlhObGNtbGhiR2w2XFxcbmFXNW5JRk41YzNSbGJWUnBiV1ZUZVhOMFpXMVVhVzFsSUcxMWMzUWdZbVVnYkdGMFpYSWdkR2hoYmlCVlRrbFlYMFZRVDBOSUFBQUFLd1xcXG5BQUFBUUFBQUFFQUFBQURRQUFBQ3NBQUFBRUFBQUFCQUFBQUN3QUFBQU5BQUFBeEFrUUFDMEFBQUF1QUFBQUx3QUFBREFBQUFBZEFBQUFcXFxuRndBQUFBd0FBQUFFQUFBQU1RQUFBQmNBQUFBTUFBQUFCQUFBQURJQUFBQXhBQUFBQUFvUUFETUFBQUEwQUFBQU5RQUFBRE1BQUFBMkFBXFxcbkFBTndBQUFBRUFBQUFCQUFBQUJ3QUFBRGNBQUFBQkFBQUFBUUFBQURnQUFBQUhBQUFBUEFvUUFEa0FBQUE2QUFBQU93QUFBRGtBQUFBOFxcXG5BQUFBUFFBQUFBZ0FBQUFFQUFBQURBQUFBRDBBQUFBSUFBQUFCQUFBQUQ0QUFBQU1BQUFBZUFvUUFEOEFBQUJBQUFBQVFRQUFBRUlBQUFcXFxuQTJBQUFBUXdBQUFCUUFBQUFFQUFBQVJBQUFBRU1BQUFBVUFBQUFCQUFBQUVVQUFBQkVBQUFBdEFvUUFETUFBQUJHQUFBQVJ3QUFBRE1BXFxcbkFBQTJBQUFBU0FBQUFBZ0FBQUFFQUFBQVNRQUFBRWdBQUFBSUFBQUFCQUFBQUVvQUFBQkpBQUFBOEFvUUFFc0FBQUJNQUFBQU5RQUFBRVxcXG4wQUFBQTJBQUFBVGdBQUFCQUFBQUFFQUFBQVR3QUFBRTRBQUFBUUFBQUFCQUFBQUZBQUFBQlBBQUFBTEFzUUFGRUFBQUJTQUFBQU5RQUFcXFxuQUZNQUFBQTJBQUFBVkFBQUFBd0FBQUFFQUFBQVZRQUFBRlFBQUFBTUFBQUFCQUFBQUZZQUFBQlZBQUFBYUFzUUFGY0FBQUJZQUFBQU5RXFxcbkFBQUZrQUFBQTJBQUFBRXdBQUFBZ0FBQUFFQUFBQVNRQUFBQk1BQUFBSUFBQUFCQUFBQUVvQUFBQkpBQUFBcEFzUUFFc0FBQUJhQUFBQVxcXG5OUUFBQUUwQUFBQTJBQUFBV3dBQUFCZ0FBQUFFQUFBQVhBQUFBRnNBQUFBWUFBQUFCQUFBQUYwQUFBQmNBQUFBNEFzUUFGNEFBQUJmQUFcXFxuQUFOUUFBQUdBQUFBQTJBQUFBWVFBQUFHSUFBQUJqQUFBQVpBQUFBR1VBQUFCbUFBQUFad0FBQUdnQUFBQnBBQUFBYWdBQUFHc0FBQUJzXFxcbkFBQUFiUUFBQUc0QUFBQmxBQUFBYndBQUFIQUFBQUJ4QUFBQWNnQUFBSE1BQUFCMEFBQUFkUUFBQUhZQUFBQjNBQUFBZUFBQUFINHZMbVxcXG5OaGNtZHZMM0psWjJsemRISjVMM055WXk5cGJtUmxlQzVqY21GMFpYTXVhVzh0Tm1ZeE4yUXlNbUppWVRFMU1EQXhaaTkxY213dE1pNHpcXFxuTGpFdmMzSmpMMnhwWWk1eWN3Q0FEQkFBU3dBQUFFSUtBQUFLQUFBQUNuMTdMQW82SUM5eWRYTjBZeTlsWWpJMk1qazJZalUxTm1ObFpqXFxcbkV3Wm1JM01UTmhNemhtTTJReE5tSTVPRGcyTURnd1pqSTJMMnhwWW5KaGNua3ZZMjl5WlM5emNtTXZjM1J5TDNCaGRIUmxjbTR1Y25NQVxcXG5BT01NRUFCUEFBQUF1QUVBQUNZQUFBQitMeTVqWVhKbmJ5OXlaV2RwYzNSeWVTOXpjbU12YVc1a1pYZ3VZM0poZEdWekxtbHZMVFptTVRcXFxuZGtNakppWW1FeE5UQXdNV1l2Y21sdVp5MHdMakUyTGpJd0wzTnlZeTlrYVdkbGMzUXVjbk1BQUFCRURSQUFVUUFBQVBzQUFBQUtBQUFBXFxcblRXRndJR3RsZVNCcGN5QnViM1FnWVNCemRISnBibWNnWVc1a0lHTmhibTV2ZENCaVpTQmhiaUJ2WW1wbFkzUWdhMlY1QUN3Q0VBQUZBQVxcXG5BQWZpOHVZMkZ5WjI4dmNtVm5hWE4wY25rdmMzSmpMMmx1WkdWNExtTnlZWFJsY3k1cGJ5MDJaakUzWkRJeVltSmhNVFV3TURGbUwybHVcXFxuWkdWNGJXRndMVEl1TUM0d0wzTnlZeTl0WVhBdWNuUGtEUkFBVUFBQUFMMEJBQUFhQUFBQWZpOHVZMkZ5WjI4dmNtVm5hWE4wY25rdmMzXFxcbkpqTDJsdVpHVjRMbU55WVhSbGN5NXBieTAyWmpFM1pESXlZbUpoTVRVd01ERm1MMmx1WkdWNGJXRndMVEl1TUM0d0wzTnlZeTl0WVhBdlxcXG5ZMjl5WlM1eWN3QUFBRVFPRUFCVkFBQUFLUUFBQUNNQUFBQnBibVJsZUNCdWIzUWdabTkxYm1RQVJBNFFBRlVBQUFBMkFBQUFDZ0FBQUVcXFxuUU9FQUJWQUFBQUxRRUFBREVBQUFCRURoQUFWUUFBQUNFQUFBQVBBQUFBRUFBQUFBQUFBQUFCQUFBQWVRQUFBQkFBQUFBQUFBQUFBUUFBXFxcbkFIb0FBQUFRQUFBQUFBQUFBQUVBQUFCN0FBQUFFQUFBQUFBQUFBQUJBQUFBZkFBQUFCTUFBQUFFQUFBQUJBQUFBSDBBQUFCK0FBQUFmZ1xcXG5BQUFCTUFBQUFFQUFBQUJBQUFBSDhBQUFDQUFBQUFnQUFBQUJNQUFBQUVBQUFBQkFBQUFJRUFBQUNDQUFBQWdnQUFBQk1BQUFBRUFBQUFcXFxuQkFBQUFJTUFBQUNFQUFBQWhBQUFBQk1BQUFBSUFBQUFCQUFBQUlVQUFBQ0dBQUFBRXdBQUFBZ0FBQUFFQUFBQWh3QUFBSWdBQUFBVEFBXFxcbkFBQ0FBQUFBUUFBQUNKQUFBQWlnQUFBQk1BQUFBSUFBQUFCQUFBQUlzQUFBQ01BQUFBRXdBQUFBZ0FBQUFFQUFBQWpRQUFBSTRBQUFBVFxcXG5BQUFBQ0FBQUFBUUFBQUNQQUFBQWtBQUFBQk1BQUFBSUFBQUFCQUFBQUpFQUFBQ1NBQUFBRXdBQUFBZ0FBQUFFQUFBQWt3QUFBSlFBQUFcXFxuQVRBQUFBQ0FBQUFBUUFBQUNWQUFBQWxnQUFBQk1BQUFBTUFBQUFCQUFBQUpjQUFBQ1lBQUFBRXdBQUFBd0FBQUFFQUFBQW1RQUFBSm9BXFxcbkFBQk1ZWHA1SUdsdWMzUmhibU5sSUdoaGN5QndjbVYyYVc5MWMyeDVJR0psWlc0Z2NHOXBjMjl1WldRQUFHZ1FFQUFxQUFBQWZpOHVZMlxcXG5GeVoyOHZjbVZuYVhOMGNua3ZjM0pqTDJsdVpHVjRMbU55WVhSbGN5NXBieTAyWmpFM1pESXlZbUpoTVRVd01ERm1MMjl1WTJWZlkyVnNcXFxuYkMweExqRTRMakF2YzNKakwyeHBZaTV5Y3dBQW5CQVFBRklBQUFBaEJRQUFHUUFBQUd4dlkyRjBhVzl1YUhSMGNHaDBkSEJ6Y25OZmJHXFxcbmxpTDNOeVl5OWpiMjF0YjI0dWNuTUFBQUFSRVJBQUZBQUFBQllBQUFBaEFBQUFZQUVRQUFBQUFBQmdBUkFBQUFBQUFHQUJFQUFBQUFBQVxcXG5aR0YwWVdKc2IySkViMjRuZENCcmJtOTNJR2h2ZHlCMGJ5QmpjbVZoZEdVZ1kyRmphR1VnYm1GdFpTQm1iM0lnYzJOb1pXMWxPaUJZRVJcXFxuQUFNQUFBQUdSbGJtOWZZMkZqYUdWZlpHbHlPanBqYjIxdGIyNEFBSkFSRUFBV0FBQUFrQkVRQUJZQUFBQVJFUkFBRkFBQUFDQUFBQUJmXFxcblVFOVNWSEp6WDJ4cFlpOXpjbU12WjJ4dlltRnNMbkp6QUFBQXlSRVFBQlFBQUFCaUFBQUFIQUFBQUcxbGRHRmtZWFJoTG1wemIyNXRZV1xcXG41cFptVnpkQzVxYzI5dWNuTmZiR2xpTDNOeVl5OXNiMk5oYkM1eWMyTnZiblJsYm5RdGRIbHdaVjhBQUFvU0VBQVRBQUFBMmdFQUFBWUFcXFxuQUFBS0VoQUFFd0FBQU5zQkFBQVFBQUFBQ2hJUUFCTUFBQURkQVFBQUhRQUFBR0FCRUFBQUFBQUFLUklRQUFFQUFBQUtFaEFBRXdBQUFOXFxcbjRCQUFBdUFBQUFDaElRQUJNQUFBRGVBUUFBQlFBQUFBb1NFQUFUQUFBQTZnRUFBQ1lBQUFCd2NtNWhkWGh1ZFd4amIyMHdZMjl0TVdOdlxcXG5iVEpqYjIwelkyOXROR052YlRWamIyMDJZMjl0TjJOdmJUaGpiMjA1YkhCME1HeHdkREZzY0hReWJIQjBNMnh3ZERSc2NIUTFiSEIwTm1cXFxueHdkRGRzY0hRNGJIQjBPV052Ymk1cWN5NTBjeTVxYzNndWRITjRMbTEwY3k1dGFuTXVhbk52Ymk1M1lYTnRJd0FBQUJnVEVBQUJBQUFBXFxcbllBRVFBQUFBQUFBS0VoQUFFd0FBQUxjQkFBQVpBQUFBR0JNUUFBRUFBQUFwRWhBQUFRQUFBR0FCRUFBQUFBQUFDaElRQUJNQUFBQzVBUVxcXG5BQUlnQUFBSGd0WkdWdWJ5MTNZWEp1YVc1bmVDMTBlWEJsYzJOeWFYQjBMWFI1Y0dWekFBQUFBQjBTRUFBTUFBQUFBQkVRQUFnQUFBQmtcXFxuRXhBQURnQUFBSElURUFBU0FBQUFIUklRQUF3QUFBQXZBQUFBQ2hJUUFCTUFBQUJzQWdBQUhnQUFBR0FCRUFBQUFBQUFzQk1RQUFFQUFBXFxcbkFLRWhBQUV3QUFBSElDQUFBb0FBQUFDaElRQUJNQUFBQnpBZ0FBSmdBQUFFWmhhV3hsWkNCellYWnBibWNnYkc5allXd2dZMkZqYUdVZ1xcXG5iV0Z1YVdabGMzUTZJUFFURUFBa0FBQUFaR1Z1YjE5allXTm9aVjlrYVhJNk9teHZZMkZzQUFBQUlCUVFBQlVBQUFBZ0ZCQUFGUUFBQUFcXFxub1NFQUFUQUFBQWdRSUFBQW9TRUFBVEFBQUFsQUlBQURVQUFBQUtFaEFBRXdBQUFLTUNBQUF6QUFBQVJtRnBiR1ZrSUdSbGMyVnlhV0ZzXFxcbmFYcHBibWNnYkc5allXd2dZMkZqYUdVZ2JXRnVhV1psYzNRNklBQjBGQkFBS3dBQUFHUmxibTlmWTJGamFHVmZaR2x5T2pwc2IyTmhiRFxcXG5vNmJXRnVhV1psYzNRQXFCUVFBQjhBQUFDb0ZCQUFId0FBQUFvU0VBQVRBQUFBOXdJQUFBb1NFQUFUQUFBQVlRTUFBRFlBQUFCeWMxOXNcXFxuYVdJdmMzSmpMMnhwWWk1eWN3QUFBUFFVRUFBUkFBQUF1Z0FBQURzQUFBQktVeUJGY25KdmNqb2dBQUFZRlJBQUNnQUFBR2hsWVdSbGNuXFxcbk4xY214dWIzZHpkSEoxWTNRZ1UyVnlhV0ZzYVhwbFpFTmhZMmhsWkZWeWJFMWxkR0ZrWVhSaGMzUnlkV04wSUZObGNtbGhiR2w2WldSRFxcXG5ZV05vWldSVmNteE5aWFJoWkdGMFlTQjNhWFJvSURNZ1pXeGxiV1Z1ZEhNQUFBQmJGUkFBTWdBQUFGVnliRlJ2Um1sc1pXNWhiV1ZEYjJcXFxuNTJaWEp6YVc5dVJYSnliM0pEWVc0bmRDQmpiMjUyWlhKMElIVnliQ0FvSWlJcElIUnZJR1pwYkdWdVlXMWxMZ0MwRlJBQUZBQUFBTWdWXFxcbkVBQVBBQUFBYzNSeWRXTjBJRk5sY21saGJHbDZaV1JNYjJOaGJFTmhZMmhsVFdGdWFXWmxjM1JFWVhSaFRXOWtkV3hsWm05c1pHVnljMlxcXG4xdlpIVnNaWE56ZEhKMVkzUWdVMlZ5YVdGc2FYcGxaRXh2WTJGc1EyRmphR1ZOWVc1cFptVnpkRVJoZEdFQUFHbHVkbUZzYVdRZ2RIbHdcXFxuWlRvZ0xDQmxlSEJsWTNSbFpDQUFBQUJNRmhBQURnQUFBRm9XRUFBTEFBQUFUQllRQUFBQUFBQkZjbkp2Y2dBQUFKNEFBQUFFQUFBQUJBXFxcbkFBQUo4QUFBQ2dBQUFBREFBQUFBUUFBQUNoQUFBQW9nQUFBS01BQUFCaElFUnBjM0JzWVhrZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRnY21WMFxcXG5kWEp1WldRZ1lXNGdaWEp5YjNJZ2RXNWxlSEJsWTNSbFpHeDVBS1FBQUFBQUFBQUFBUUFBQUNjQUFBQXZjblZ6ZEdNdlpXSXlOakk1Tm1cXFxuSTFOVFpqWldZeE1HWmlOekV6WVRNNFpqTmtNVFppT1RnNE5qQTRNR1l5Tmk5c2FXSnlZWEo1TDJGc2JHOWpMM055WXk5emRISnBibWN1XFxcbmNuTUErQllRQUVzQUFBRGNDUUFBRGdBQUFLVUFBQUFFQUFBQUJBQUFBS1lBQUFDbkFBQUFxQUFBQUZSeWFXVmtJSFJ2SUhOb2NtbHVheVxcXG5CMGJ5QmhJR3hoY21kbGNpQmpZWEJoWTJsMGVXd1hFQUFrQUFBQUwzSjFjM1JqTDJWaU1qWXlPVFppTlRVMlkyVm1NVEJtWWpjeE0yRXpcXFxuT0dZelpERTJZams0T0RZd09EQm1Nall2YkdsaWNtRnllUzloYkd4dll5OXpjbU12Y21GM1gzWmxZeTV5YzVnWEVBQk1BQUFBcmdFQUFBXFxcbmtBQUFBS0NsTjBZV05yT2dvS0NncGpZV3hzWldRZ1lFOXdkR2x2YmpvNmRXNTNjbUZ3S0NsZ0lHOXVJR0VnWUU1dmJtVmdJSFpoYkhWbFxcXG5BS3NBQUFBTUFBQUFCQUFBQUt3QUFBQ3RBQUFBcmdBQUFHRWdSR2x6Y0d4aGVTQnBiWEJzWlcxbGJuUmhkR2x2YmlCeVpYUjFjbTVsWkNcXFxuQmhiaUJsY25KdmNpQjFibVY0Y0dWamRHVmtiSGtBcndBQUFBQUFBQUFCQUFBQUp3QUFBQzl5ZFhOMFl5OWxZakkyTWprMllqVTFObU5sXFxcblpqRXdabUkzTVROaE16aG1NMlF4Tm1JNU9EZzJNRGd3WmpJMkwyeHBZbkpoY25rdllXeHNiMk12YzNKakwzTjBjbWx1Wnk1eWN3Q01HQlxcXG5BQVN3QUFBTndKQUFBT0FBQUFzQUFBQUFRQUFBQUVBQUFBc1FBQUFMSUFBQUN6QUFBQUwzSjFjM1JqTDJWaU1qWXlPVFppTlRVMlkyVm1cXFxuTVRCbVlqY3hNMkV6T0dZelpERTJZams0T0RZd09EQm1Nall2YkdsaWNtRnllUzlqYjNKbEwzTnlZeTl6ZEhJdmNHRjBkR1Z5Ymk1eWN3XFxcbkFBR1JBQVR3QUFBUDRGQUFBVUFBQUFBQmtRQUU4QUFBRCtCUUFBSVFBQUFBQVpFQUJQQUFBQUNnWUFBQlFBQUFBQUdSQUFUd0FBQUFvR1xcXG5BQUFoQUFBQVpHVnpZM0pwY0hScGIyNG9LU0JwY3lCa1pYQnlaV05oZEdWa095QjFjMlVnUkdsemNHeGhlUzl5ZFhOMFl5OWxZakkyTWpcXFxuazJZalUxTm1ObFpqRXdabUkzTVROaE16aG1NMlF4Tm1JNU9EZzJNRGd3WmpJMkwyeHBZbkpoY25rdlkyOXlaUzl6Y21NdmMyeHBZMlV2XFxcbmJXOWtMbkp6QUFBQXVCa1FBRTBBQUFEdkNRQUFKd0FBQURBd01ERXdNakF6TURRd05UQTJNRGN3T0RBNU1UQXhNVEV5TVRNeE5ERTFNVFxcXG5ZeE56RTRNVGt5TURJeE1qSXlNekkwTWpVeU5qSTNNamd5T1RNd016RXpNak16TXpRek5UTTJNemN6T0RNNU5EQTBNVFF5TkRNME5EUTFcXFxuTkRZME56UTRORGsxTURVeE5USTFNelUwTlRVMU5qVTNOVGcxT1RZd05qRTJNall6TmpRMk5UWTJOamMyT0RZNU56QTNNVGN5TnpNM05EXFxcbmMxTnpZM056YzROems0TURneE9ESTRNemcwT0RVNE5qZzNPRGc0T1Rrd09URTVNamt6T1RRNU5UazJPVGM1T0RrNVlYTnpaWEowYVc5dVxcXG5JR1poYVd4bFpEb2djMlZzWmk1cGMxOWphR0Z5WDJKdmRXNWtZWEo1S0c1bGQxOXNaVzRwakJnUUFFc0FBQUQvQkFBQURRQUFBRlJ5YVdcXFxuVmtJSFJ2SUhOb2NtbHVheUIwYnlCaElHeGhjbWRsY2lCallYQmhZMmwwZVNBYkVBQWtBQUFBTDNKMWMzUmpMMlZpTWpZeU9UWmlOVFUyXFxcblkyVm1NVEJtWWpjeE0yRXpPR1l6WkRFMllqazRPRFl3T0RCbU1qWXZiR2xpY21GeWVTOWhiR3h2WXk5emNtTXZjbUYzWDNabFl5NXljMFxcXG53YkVBQk1BQUFBcmdFQUFBa0FBQUFBR1JBQVR3QUFBSXNFQUFBWEFBQUFBQUFBQUFBQThEOEFBQUFBQUFBa1FBQUFBQUFBQUZsQUFBQUFcXFxuQUFCQWowQUFBQUFBQUlqRFFBQUFBQUFBYXZoQUFBQUFBSUNFTGtFQUFBQUEwQkpqUVFBQUFBQ0UxNWRCQUFBQUFHWE56VUVBQUFBZ1g2XFxcbkFDUWdBQUFPaDJTRGRDQUFBQW9wUWFiVUlBQUVEbG5EQ2lRZ0FBa0I3RXZOWkNBQUEwSnZWckRFTUFnT0EzZWNOQlF3Q2cySVZYTkhaRFxcXG5BTWhPWjIzQnEwTUFQWkZnNUZqaFEwQ010WGdkcnhWRVVPL2kxdVFhUzBTUzFVMEd6L0NBUlBaSzRjY0NMYlZFdEozWmVVTjQ2a1NSQWlcXFxuZ3NLb3NnUlRVRE1yZjByVlJGQW9UKzVISFppVVdCRWg4djV5ZkFSU0hYNXZyZ01mUkY2b3lnT1ZrK0tVWWtzQWlJNzQxZlJoZHVCYlcxXFxcbnVKTkduTWxHSXVPbXlFWURmTmpxbTlEK1JvSk54M0poUWpOSDR5QjV6L2tTYUVjYmFWZER1QmVlUjdHaEZpclR6dEpISFVxYzlJZUNCMFxcXG5pbFhNUHhLV005U09jWkdqZjZYWEpJWWFEZ3hIajFwa2g1eUJqMjFyTGNTRXg5ejFuRzd4RkpubHhEOExkclJrbkdNMVRzcFFaOFNWeWdcXFxudExNbmhMRkpjOGlob0RIbDVVbVBPc29JZmw0YlNwcGtmc1VPRzFGS3dQM2RkdEpoaFVvd2ZaVVVSN3E2U2o1dTNXeHN0UEJLenNrVWlJXFxcbmZoSkV0Qi9CbHE2UmxhUzZrOVVPSXhVSkJMRTAza1dqNWt4RXRYWUozeFRYMzVTMjI0Qkc2aDNDOU1SUFBDNU9UcFkwd1ZzUE1kWHVTWVxcXG5UQnVjY0tWMUhjOU1rV0ZtaDJseUEwMzErVC9wQTA4NFRYTDRqK1BFWW01TlIvczVEcnY5b2swWmVzalJLYjNYVForWU9rWjByQTFPWkpcXFxuL2txOGlMUWs0OXg5M1d1aTUzVGd3NWxZeHArcXhPcDBQZDk0RWM0azZSbE5SMW9xTVdUN1c1U1JPTFRFeFBFUlFPN05hdmdVOFdtUkduXFxcbnpCdTJUMXYvMWRDL291dFBtYitGNHJkRklWQi9MeWZiSlpkVlVGLzc4Rkh2L0lwUUc1MDJreFhld0ZCaVJBVDRtaFgxVUh0VkJiWUJXeVxcXG5wUmJWWERFZUY0WUZISUtqUldHWmVVVVhvMXdhdmZ2TWxSYk1GWXl3c1dBRkxIOFM2K2poczBVam11dW0xeUltbFN4MWtwQ1E5cm4xSWRcXFxuMkxsbDZhTFRVaVJPS0wraml3aFRyV0h5cm95dVBsTU1mVmZ0RnkxelUwOWNyZWhkK0tkVFk3UFlZblgyM1ZNZWNNZGRDYm9TVkNWTU9iXFxcbldMYUVkVUxwK0hvcTVDZlZSOXc1UWxyVW15VkZ6MCtXNFkzT1pVYzNHNGloNlRIRlhvUnJNVzg5dFJWYUlZWU56dlVvWlZ5aDU0MDZ2blxcXG51MVUvRXl0a3kzRHhWUTdZTlQzK3pDVldFazZEekQxQVcxYkxFTktmSmdpUlZ2NlV4a2N3U3NWV1BUcTRXYnljK2xabUpCTzQ5YUV3VjRcXFxuRHRGeVp6eW1SWDRPaWQ3dy85bVZlTXNjTDFLVDdRVis5ZE0zTzBUUVJZYXpVQWtDRmhPVmpGUWdEMGFibHZXTHNwZ0RqaTA2TllLalNnXFxcbnh0ckkyRmcxUVVoNEVmc09XY0VvTGV2cVhFTlo4WEw0cFNVMGVGbXRqM1lQTDBHdVdjd1pxbW05Nk9KWlA2QVV4T3lpRjFwUHlCbjFwNFxcXG50TldqSWRNUGxJZDRKYWZpUjhOeHNWdDFxZUxWc0ZZdHJzV29MOFdFTjlDQ0pib3pzdmxKeUtWbHVNQ2p1NVF5Mk1XNWZteEZOS25NRmJcXFxuUFNDMjZGd0Q5bHROcU9NaU5JUXJYREJKenBXZ01tRmNmTnRCdTBoL2xWeGJVaExxR3QvS1hIbHpTOUp3eXdCZFYxRGVCazMrTkYxdDVKXFxcblZJNEQxcVhjU3VYUzJzWnFCZGRScTFPRmVBMUYwU1llSUdiYUFKWHF0OFRTUkVCRUJlMXR0Z0xWVUZkRjdNRXJsNHFnYXBYbjlYNXhaVlxcXG5TTjllcjVaUUxqV05FMTlidk9SNWduQklYM0xyWFJpampINWZKN002NytVWHMxL3hYd2xyMzkzblgrMjN5MFZYMVIxZzlGS2ZpMWFsVW1cXFxuQ3hKNGN1ckU2SFlKM3hLRHBYSXIxZ0FwZFpoSFkxOG1ERC9HOGwxTUltWWZUN3l5NkpjMXhoZUgwL3ZUWElrV0hXWEk4c1F6ckdZUXcwXFxcbnMvZlR5UHRoaHdEUWVvUmRNV0twQUlTWjViUmxZdFFBNWY4ZUlwdGloQ0R2WDFQMTBHS2w2T28zcURJRlk4K2k1VVZTZnpwandZV3ZhNVxcXG5PUGNHTXlaNXRHZUxPa1kvNUFRbGhXNE5sam4yZ3A5elVzRUdUR3d2TjBRemRFWkhpek1GSVVSWGxrVnVDOFpsbVdyMlEyRERiZzk3M2pcXFxuWkVPUFE5aDFyUmhsRkhOVVR0UFlUbVhzeC9RUWhFZURaZWo1TVJWbEdiaGxZWGgrV3I0ZjdtVTlDNC80MXRNaVpnek9zcmJNaUZkbWo0XFxcbkZmNVA5cWpXYjVzTHZ1MzJMQ1pqaWRhdXFYKy9abWhrUUY1WDI2TEdmVVNpT3ZqdlJoWjRrZDdGcXljWlpuNnlTbjhSNE96R2NUZHdoWFxcXG4wNGdCYU5lVXlpd0k2elZvRFRyOU44cGxhMmhJUlA1aW5oK2hhRnJWdmZ1Rlo5Vm9zVXF0ZW1mQkNtbXZUcXlzNExoQWFWcGkxOWNZNTNcXFxuUnA4VHJORGQ4Z3FtbldSS0JvaTFUZ2FReFd5RUt1YVJScWoydDYweG1FU1dwekJsbElJT1YvYWdpa055MDA3N05xQ28yRk9BSHI2R3BNXFxcbjhLYUd3U1VmYXpCV0tQU1lkMU5ydTJzeU1YOVZpR3VxQm4vOTNtcStheXBrYjE3TEF2TnJOVDBMTm43REoyeUNESTdEWGJSZGJOSEhPSlxcXG5xNmtKSnN4dm5HUU9rMHgydzN1UGlRSXdMOWJDTnptenBXSVRKdDYwOUN5YXVwWm0zbTQ1SzdGbFNjYlhET096V090TkZ0RE1LS3dyRWhcXFxuQm02UGNpMHpIcW83YnBsbi9OOVNTbkZ1ZjRIN2wrZWNwVzdmWWZwOUlRVGJiaXg5dk82VTRoQnZkcHhyS2pvYlJXK1Vnd2ExQ0dKNmJ6XFxcbjBTSkhGRmZiQnZ6Qlp0elphYzVHOS9YTWlBdk1NWmNNODVmZEJWR2xCd1E0aWNST3NnaEhCVXFzTVZKaW01Y09tVU5KdHZjKzl3RWQwQVxcXG53U1dvSTNGV0ZFRXhMNUpZY1d0WmtmMjZ0bzV4NDlkNjNqUXl3M0hjalJrV3d2NzNjVlB4bjV0eS9pMXkxUFpEb1FlL1luS0o5SlNKeVdcXFxuNlhjcXN4K3V0N1NzMXlDMTk4YzQxT0FuUE5kbHZRTU9JMmM0RlVjZ1M5bW14ejBIVEhJcmJnb1hNRVVubXI0MWpXYzRhbVY1WWM3d3QwXFxcbkZNajIzWEYxUVhRWWVuUlZ6dEoxZEo2WTBlcUJSNnQwWS8vQ01yRU00WFE4djNOLzNVOFZkUXV2VU4vVW8wcDFaMjJTQzJXbWdIWEFDSFxcXG5kTy9zKzBkZkhLRk9MOUErcDExdjVNclg1Q0lIYU1QcUJZSGxOVWRpOU95TzdsWjRsMnUyRjZhdC9CdjNZVmZZeWlLOW56ZGxxY0w0dDJcXFxuenloM2NJUDdMVlFEWDNjbU1yMmNGR0tUZDdCKzdNT1pPc2gzWEo3bk5FQkovbmY1d2hBaHlPMHllTGp6VkNrNnFXZDRwVENxczRpVG5YXFxcbmhuWGtwd05YelNlQUgyWE14Q0d3ZDVnak4wZnhQaVBIa3hvS2d2VEExeWVUM0lranVma0taNVRYcDNDc2MwM0hsd3JJcG0vS0FSZW94WFxcXG5MWUE3Q1VaNmI2MDRZSXFMZTNwbGJDTjhOamV4ZW45SExCc0VoZVY2WGxuM0lVWG1HbnZibHpvMTY4OVFlOUk5aVFMbUE0VjdSbzByZzlcXFxuOUV1bnRNT1B1eEMydndlMThHZXA3T2hTUjg5b2NZUmtLbldYejZWTTlyaVFpUWZEZ3F3OGFyQ3NSOHgvUnp1RllOK1h6NDhaQm1yRkF2XFxcbmZUdVhHc0Jya21OOUNqMGhzQVozbUgxTWpDbGN5SlRPZmJEM21UbjlIQU4rbkhVQWlEemtOMzREa3dDcVM5MXRmdUpiUUVwUHFxSisyblxcXG5MUUhPTlUxMzZRandUa0d5b05mN3JaZ201Uk9rSi9LWkFqeXVYSWRuOHpkS3c4SDN1c2Y2REk2NFh6ek9GL2ZpOHVZMkZ5WjI4dmNtVm5cXFxuYVhOMGNua3ZjM0pqTDJsdVpHVjRMbU55WVhSbGN5NXBieTAyWmpFM1pESXlZbUpoTVRVd01ERm1MM05sY21SbFgycHpiMjR0TVM0d0xqXFxcbkV3TkM5emNtTXZaWEp5YjNJdWNuTnlaV04xY25OcGIyNGdiR2x0YVhRZ1pYaGpaV1ZrWldSMWJtVjRjR1ZqZEdWa0lHVnVaQ0J2WmlCb1xcXG5aWGdnWlhOallYQmxkSEpoYVd4cGJtY2dZMmhoY21GamRHVnljM1J5WVdsc2FXNW5JR052YlcxaGJHOXVaU0JzWldGa2FXNW5JSE4xY25cXFxuSnZaMkYwWlNCcGJpQm9aWGdnWlhOallYQmxabXh2WVhRZ2EyVjVJRzExYzNRZ1ltVWdabWx1YVhSbElDaG5iM1FnVG1GT0lHOXlJQ3N2XFxcbkxXbHVaaWxwYm5aaGJHbGtJSFpoYkhWbE9pQmxlSEJsWTNSbFpDQnJaWGtnZEc4Z1ltVWdZU0J1ZFcxaVpYSWdhVzRnY1hWdmRHVnphMlxcXG5WNUlHMTFjM1FnWW1VZ1lTQnpkSEpwYm1kamIyNTBjbTlzSUdOb1lYSmhZM1JsY2lBb1hIVXdNREF3TFZ4MU1EQXhSaWtnWm05MWJtUWdcXFxuZDJocGJHVWdjR0Z5YzJsdVp5QmhJSE4wY21sdVoybHVkbUZzYVdRZ2RXNXBZMjlrWlNCamIyUmxJSEJ2YVc1MGJuVnRZbVZ5SUc5MWRDXFxcbkJ2WmlCeVlXNW5aV2x1ZG1Gc2FXUWdiblZ0WW1WeWFXNTJZV3hwWkNCbGMyTmhjR1ZsZUhCbFkzUmxaQ0JnSW1CbGVIQmxZM1JsWkNCMlxcXG5ZV3gxWldWNGNHVmpkR1ZrSUdsa1pXNTBaWGh3WldOMFpXUWdZQ3hnSUc5eUlHQjlZR1Y0Y0dWamRHVmtJR0FzWUNCdmNpQmdYV0JsZUhcXFxuQmxZM1JsWkNCZ09tQkZUMFlnZDJocGJHVWdjR0Z5YzJsdVp5QmhJSFpoYkhWbFJVOUdJSGRvYVd4bElIQmhjbk5wYm1jZ1lTQnpkSEpwXFxcbmJtZEZUMFlnZDJocGJHVWdjR0Z5YzJsdVp5QmhiaUJ2WW1wbFkzUkZUMFlnZDJocGJHVWdjR0Z5YzJsdVp5QmhJR3hwYzNRZ1lYUWdiR1xcXG5sdVpTQWdZMjlzZFcxdUlBQXNHQkFBQUFBQUFPb25FQUFKQUFBQTh5Y1FBQWdBQUFCRmNuSnZjaWdzSUd4cGJtVTZJQ3dnWTI5c2RXMXVcXFxuT2lBcEFBQUFGQ2dRQUFZQUFBQWFLQkFBQ0FBQUFDSW9FQUFLQUFBQUxDZ1FBQUVBQUFCcGJuWmhiR2xrSUhSNWNHVTZJQ3dnWlhod1pXXFxcbk4wWldRZ0FBQUFVQ2dRQUE0QUFBQmVLQkFBQ3dBQUFHbHVkbUZzYVdRZ2RIbHdaVG9nYm5Wc2JDd2daWGh3WldOMFpXUWdBQUFBZkNnUVxcXG5BQjBBQUFCZ0pSQUFWZ0FBQU40QkFBQWVBQUFBWUNVUUFGWUFBQURpQVFBQUNRQUFBR0FsRUFCV0FBQUE2UUVBQUI0QUFBQmdKUkFBVmdcXFxuQUFBUElCQUFBbkFBQUFZQ1VRQUZZQUFBRDJBUUFBS1FBQUFEQXhNak0wTlRZM09EbGhZbU5rWldZZ0lIVjFkWFYxZFhWMVluUnVkV1p5XFxcbmRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMUFBQWlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVxcXG5BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFcXFxuQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBXFxcbkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVxcXG5BQUFBQUFBQUFBQitMeTVqWVhKbmJ5OXlaV2RwYzNSeWVTOXpjbU12YVc1a1pYZ3VZM0poZEdWekxtbHZMVFptTVRka01qSmlZbUV4TlRcXFxuQXdNV1l2YzJWeVpHVmZhbk52YmkweExqQXVNVEEwTDNOeVl5OXlaV0ZrTG5KekFBWXFFQUJWQUFBQW9RRUFBQlFBQUFBR0toQUFWUUFBXFxcbkFNWUJBQUFUQUFBQUJpb1FBRlVBQUFEVkFRQUFNQUFBQUFZcUVBQlZBQUFBeXdFQUFDa0FBQUFHS2hBQVZRQUFBTThCQUFBMEFBQUFCaVxcXG5vUUFGVUFBQUFtQWdBQUV3QUFBQVlxRUFCVkFBQUFQZ0lBQUNVQUFBQUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJcXFxuQVFFQkFRQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBXFxcbkFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVxcXG5BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFcXFxuQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJpb1FBRlVBXFxcbkFBQ21Bd0FBTHdBQUFQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vd1xcXG5BQkFnTUVCUVlIQ0FuLy8vLy8vLy8vQ2dzTURRNFAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOEtDd3dORGcvLy8vLy9cXFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXFxcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xcXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8rMEFBQUFBQUFBQUFFQUFBQzBBQUFBQUFBQUFBRUFBQURjTEJcXFxuQUF0UUFBQUxZQUFBQzNBQUFBZmk4dVkyRnlaMjh2Y21WbmFYTjBjbmt2YzNKakwybHVaR1Y0TG1OeVlYUmxjeTVwYnkwMlpqRTNaREl5XFxcblltSmhNVFV3TURGbUwyeHZaeTB3TGpRdU1Ua3ZjM0pqTDJ4cFlpNXljMnRsZVMxMllXeDFaU0J6ZFhCd2IzSjBJR2x6SUdWNGNHVnlhV1xcXG4xbGJuUmhiQ0JoYm1RZ2JYVnpkQ0JpWlNCbGJtRmliR1ZrSUhWemFXNW5JSFJvWlNCZ2EzWmZkVzV6ZEdGaWJHVmdJR1psWVhSMWNtVUFcXFxuQUFBRUxSQUFUQUFBQU1VRkFBQUpBQUFBZmk4dVkyRnlaMjh2Y21WbmFYTjBjbmt2YzNKakwybHVaR1Y0TG1OeVlYUmxjeTVwYnkwMlpqXFxcbkUzWkRJeVltSmhNVFV3TURGbUwzQmhjbXRwYm1kZmJHOTBYMk52Y21VdE1DNDVMamd2YzNKakwzQmhjbXRwYm1kZmJHOTBMbkp6dUMwUVxcXG5BR0FBQUFCckFRQUFGd0FBQUxndEVBQmdBQUFBaGdFQUFCY0FBQUJqWVd4c1pXUWdZRkpsYzNWc2REbzZkVzUzY21Gd0tDbGdJRzl1SUdcXFxuRnVJR0JGY25KZ0lIWmhiSFZsQUxnQUFBQUlBQUFBQkFBQUFMa0FBQUIrTHk1allYSm5ieTl5WldkcGMzUnllUzl6Y21NdmFXNWtaWGd1XFxcblkzSmhkR1Z6TG1sdkxUWm1NVGRrTWpKaVltRXhOVEF3TVdZdmMyMWhiR3gyWldNdE1TNHhNUzR3TDNOeVl5OXNhV0l1Y25NQUFBQjBMaFxcXG5BQVVRQUFBRllCQUFBdUFBQUFZMkZ3WVdOcGRIa2diM1psY21ac2IzY0FBQUIwTGhBQVVRQUFBRVVCQUFBMkFBQUFZWE56WlhKMGFXOXVcXFxuSUdaaGFXeGxaRG9nYm1WM1gyTmhjQ0ErUFNCc1pXNTBMaEFBVVFBQUFKNEVBQUFOQUFBQVVuZE1iMk5ySUhKbFlXUmxjaUJqYjNWdWRDXFxcbkJ2ZG1WeVpteHZkMzR2TG1OaGNtZHZMM0psWjJsemRISjVMM055WXk5cGJtUmxlQzVqY21GMFpYTXVhVzh0Tm1ZeE4yUXlNbUppWVRFMVxcXG5NREF4Wmk5d1lYSnJhVzVuWDJ4dmRDMHdMakV5TGpFdmMzSmpMM0poZDE5eWQyeHZZMnN1Y25NQVNDOFFBRnNBQUFDL0FnQUFIZ0FBQUxcXFxub0FBQUFJQUFBQUJBQUFBTHNBQUFDOEFBQUFWSEpwWldRZ2RHOGdjMmh5YVc1cklIUnZJR0VnYkdGeVoyVnlJR05oY0dGamFYUjV5QzhRXFxcbkFDUUFBQUF2Y25WemRHTXZaV0l5TmpJNU5tSTFOVFpqWldZeE1HWmlOekV6WVRNNFpqTmtNVFppT1RnNE5qQTRNR1l5Tmk5c2FXSnlZWFxcXG5KNUwyRnNiRzlqTDNOeVl5OXlZWGRmZG1WakxuSno5QzhRQUV3QUFBQ3VBUUFBQ1FBQUFMb0FBQUFJQUFBQUJBQUFBTDBBQUFCK0x5NWpcXFxuWVhKbmJ5OXlaV2RwYzNSeWVTOXpjbU12YVc1a1pYZ3VZM0poZEdWekxtbHZMVFptTVRka01qSmlZbUV4TlRBd01XWXZjR0Z5YTJsdVoxXFxcbjlzYjNSZlkyOXlaUzB3TGprdU9DOXpjbU12Y0dGeWEybHVaMTlzYjNRdWNuTmdNQkFBWUFBQUFFb0JBQUFNQUFBQVVHRnlhMmx1WnlCdVxcXG5iM1FnYzNWd2NHOXlkR1ZrSUc5dUlIUm9hWE1nY0d4aGRHWnZjbTErTHk1allYSm5ieTl5WldkcGMzUnllUzl6Y21NdmFXNWtaWGd1WTNcXFxuSmhkR1Z6TG1sdkxUWm1NVGRrTWpKaVltRXhOVEF3TVdZdmNHRnlhMmx1WjE5c2IzUmZZMjl5WlMwd0xqa3VPQzl6Y21NdmRHaHlaV0ZrXFxcblgzQmhjbXRsY2k5M1lYTnRMbkp6QUFBQTlqQVFBR2NBQUFBYUFBQUFDUUFBQVBZd0VBQm5BQUFBSGdBQUFBa0FBQUQyTUJBQVp3QUFBQ1xcXG5JQUFBQUpBQUFBOWpBUUFHY0FBQUFtQUFBQUNRQUFBUFl3RUFCbkFBQUFLZ0FBQUFrQUFBQkJiR3h2WTBWeWNteGhlVzkxZEFBQXZnQUFcXFxuQUFRQUFBQUVBQUFBdndBQUFFTmhjR0ZqYVhSNVQzWmxjbVpzYjNkallXeHNaV1FnWUU5d2RHbHZiam82ZFc1M2NtRndLQ2xnSUc5dUlHXFxcbkVnWUU1dmJtVmdJSFpoYkhWbEFNQUFBQUFFQUFBQUJBQUFBTUVBQUFBQkFBQUFmaTh1WTJGeVoyOHZjbVZuYVhOMGNua3ZjM0pqTDJsdVxcXG5aR1Y0TG1OeVlYUmxjeTVwYnkwMlpqRTNaREl5WW1KaE1UVXdNREZtTDI5dVkyVmZZMlZzYkMweExqRTRMakF2YzNKakwybHRjRjl6ZEdcXFxuUXVjbk1BQUNBeUVBQldBQUFBbXdBQUFBa0FBQUFnTWhBQVZnQUFBS0VBQUFBMkFBQUFTR0Z6YUNCMFlXSnNaU0JqWVhCaFkybDBlU0J2XFxcbmRtVnlabXh2ZDVneUVBQWNBQUFBZmk4dVkyRnlaMjh2Y21WbmFYTjBjbmt2YzNKakwybHVaR1Y0TG1OeVlYUmxjeTVwYnkwMlpqRTNaRFxcXG5JeVltSmhNVFV3TURGbUwyaGhjMmhpY205M2JpMHdMakUwTGpBdmMzSmpMM0poZHk5dGIyUXVjbk1BQUx3eUVBQldBQUFBVWdBQUFDZ0FcXFxuQUFEQ0FBQUFEQUFBQUFRQUFBRERBQUFBeEFBQUFDWUFBQUJoSUVScGMzQnNZWGtnYVcxd2JHVnRaVzUwWVhScGIyNGdjbVYwZFhKdVpXXFxcblFnWVc0Z1pYSnliM0lnZFc1bGVIQmxZM1JsWkd4NUFNVUFBQUFBQUFBQUFRQUFBQ2NBQUFBdmNuVnpkR012WldJeU5qSTVObUkxTlRaalxcXG5aV1l4TUdaaU56RXpZVE00WmpOa01UWmlPVGc0TmpBNE1HWXlOaTlzYVdKeVlYSjVMMkZzYkc5akwzTnlZeTl6ZEhKcGJtY3Vjbk1BaERcXFxuTVFBRXNBQUFEY0NRQUFEZ0FBQUM5eWRYTjBZeTlsWWpJMk1qazJZalUxTm1ObFpqRXdabUkzTVROaE16aG1NMlF4Tm1JNU9EZzJNRGd3XFxcblpqSTJMMnhwWW5KaGNua3ZZMjl5WlM5emNtTXZjM1J5TDNCaGRIUmxjbTR1Y25NQTRETVFBRThBQUFDbkJRQUFJUUFBQU9BekVBQlBBQVxcXG5BQXN3VUFBQlFBQUFEZ014QUFUd0FBQUxNRkFBQWhBQUFBZmk4dVkyRnlaMjh2Y21WbmFYTjBjbmt2YzNKakwybHVaR1Y0TG1OeVlYUmxcXFxuY3k1cGJ5MDJaakUzWkRJeVltSmhNVFV3TURGbUwzVnliQzB5TGpNdU1TOXpjbU12YkdsaUxuSnpBR0EwRUFCTEFBQUFRZ29BQUFvQUFBXFxcbkRnTXhBQVR3QUFBRGNFQUFBWEFBQUFMbVF1ZEhNdVpDNHVhbk11ZEhOaWRXbHNaR2x1Wm04dWFuTnZiaTUwYzNndVpDNWpkSE11WkM1dFxcXG5kSE11WkM1MGN5NWpkSE11YlhSekxtTnFjeTV0YW5NdWFuTjRZWEJ3YkdsallYUnBiMjR2YW5OdmJtRndjR3hwWTJGMGFXOXVMM2RoYzJcXFxuMTBaWGgwTDNSemVIUmxlSFF2ZEhsd1pYTmpjbWx3ZEhSbGVIUXZhbUYyWVhOamNtbHdkSFJsZUhRdmFuTjRZMjl1ZEdWdWRDMTBlWEJsXFxcbmZpOHVZMkZ5WjI4dmNtVm5hWE4wY25rdmMzSmpMMmx1WkdWNExtTnlZWFJsY3k1cGJ5MDJaakUzWkRJeVltSmhNVFV3TURGbUwyUmxibVxcXG45ZmJXVmthV0ZmZEhsd1pTMHdMakV1TVM5emNtTXZiR2xpTG5KekFBQnJOUkFBVndBQUFLc0FBQUFMQUFBQVlYQndiR2xqWVhScGIyNHZcXFxuZEhsd1pYTmpjbWx3ZEhacFpHVnZMM1p1WkM1a2JHNWhMbTF3WldjdGRIUnpkbWxrWlc4dmJYQXlkR0Z3Y0d4cFkyRjBhVzl1TDNndGRIXFxcbmx3WlhOamNtbHdkR0Z3Y0d4cFkyRjBhVzl1TDJwaGRtRnpZM0pwY0hSaGNIQnNhV05oZEdsdmJpOWxZMjFoYzJOeWFYQjBkR1Y0ZEM5bFxcXG5ZMjFoYzJOeWFYQjBZWEJ3YkdsallYUnBiMjR2ZUMxcVlYWmhjMk55YVhCMFlYQndiR2xqWVhScGIyNHZibTlrWlhSbGVIUXZhbk5qY21cXFxubHdkSFJsZUhRdmFuTnZiblJsZUhRdmNHeGhhVzVrWVhSaFlYQndiR2xqWVhScGIyNHZiMk4wWlhRdGMzUnlaV0Z0ZEhOdGRITmpkSE4wXFxcbmMzaHFjMnB6ZUcxcWMyTnFjMnB6YjI1M1lYTnRkSE5pZFdsc1pHbHVabTl0WVhBQUFBQURBQUFBQkFBQUFBUUFBQUFFQUFBQUF3QUFBQVxcXG5RQUFBQUVBQUFBQlFBQUFBWUFBQUFHQUFBQUJBQUFBQVVBQUFBREFBQUFEQUFBQUFNQUFBQURBQUFBMURRUUFBMDFFQUFKTlJBQUJUVVFcXFxuQU00MEVBQUJOUkFBL1RRUUFQZzBFQUR5TkJBQTdEUVFBT2cwRUFEak5CQUExRFFRQU5jMEVBRFVOQkFBMURRUUFDOXlkWE4wWXk5bFlqXFxcbkkyTWprMllqVTFObU5sWmpFd1ptSTNNVE5oTXpobU0yUXhObUk1T0RnMk1EZ3daakkyTDJ4cFluSmhjbmt2WTI5eVpTOXpjbU12YzJ4cFxcXG5ZMlV2Ylc5a0xuSnpBQUFBY0RjUUFFMEFBQUR2Q1FBQUp3QUFBR05oYkd4bFpDQmdUM0IwYVc5dU9qcDFibmR5WVhBb0tXQWdiMjRnWVNcXFxuQmdUbTl1WldBZ2RtRnNkV1V2Y25WemRHTXZaV0l5TmpJNU5tSTFOVFpqWldZeE1HWmlOekV6WVRNNFpqTmtNVFppT1RnNE5qQTRNR1l5XFxcbk5pOXNhV0p5WVhKNUwyTnZjbVV2YzNKakwzTjBjaTl3WVhSMFpYSnVMbkp6QUFEN054QUFUd0FBQUxnQkFBQW1BQUFBZmk4dVkyRnlaMlxcXG44dmNtVm5hWE4wY25rdmMzSmpMMmx1WkdWNExtTnlZWFJsY3k1cGJ5MDJaakUzWkRJeVltSmhNVFV3TURGbUwyUmhkR0V0ZFhKc0xUQXVcXFxuTWk0d0wzTnlZeTl0YVcxbExuSnpBQUFBWERnUUFGRUFBQUE5QUFBQUhRQUFBQzg3UFNKY2ZpOHVZMkZ5WjI4dmNtVm5hWE4wY25rdmMzXFxcbkpqTDJsdVpHVjRMbU55WVhSbGN5NXBieTAyWmpFM1pESXlZbUpoTVRVd01ERm1MMlJoZEdFdGRYSnNMVEF1TWk0d0wzTnlZeTlzYVdJdVxcXG5jbk1BQUFERk9CQUFVQUFBQUpJQUFBQVlBQUFBeFRnUUFGQUFBQUNiQUFBQUd3QUFBTVU0RUFCUUFBQUFtd0FBQUM0QUFBQjBaWGgwTDNcXFxuQnNZV2x1Y0d4aGFXNWphR0Z5YzJWMEFBREZPQkFBVUFBQUFPd0FBQUFMQUFBQU1ERXlNelExTmpjNE9VRkNRMFJGUmdBQUFBQUFBQUFBXFxcbkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFRRUJBUUVBQUFFQkFBRUJBQUVCQVFFQkFRRUJBUUVBQUFBQUFBQUFBUVxcXG5FQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVBQUFBQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRQUJcXFxuQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBXFxcbkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVxcXG5BQUFBQUFBQUFBQUFBQUFBQUFBdmNuVnpkR012WldJeU5qSTVObUkxTlRaalpXWXhNR1ppTnpFellUTTRaak5rTVRaaU9UZzROakE0TUdcXFxuWXlOaTlzYVdKeVlYSjVMMk52Y21VdmMzSmpMMk5vWVhJdmJXVjBhRzlrY3k1eWM0QTZFQUJRQUFBQTBRWUFBQW9BQUFCaGRIUmxiWEIwXFxcbklIUnZJR1JwZG1sa1pTQmllU0I2WlhKdkwzSjFjM1JqTDJWaU1qWXlPVFppTlRVMlkyVm1NVEJtWWpjeE0yRXpPR1l6WkRFMllqazRPRFxcXG5Zd09EQm1Nall2YkdsaWNtRnllUzlqYjNKbEwzTnlZeTl6YkdsalpTOXRiMlF1Y25NQUFQazZFQUJOQUFBQTd3a0FBQ2NBQUFENU9oQUFcXFxuVFFBQUFBMEtBQUFlQUFBQVkyRnNiR1ZrSUdCUGNIUnBiMjQ2T25WdWQzSmhjQ2dwWUNCdmJpQmhJR0JPYjI1bFlDQjJZV3gxWlFDWUw0XFxcbnBDa1VRM2NjLzd3TFdsMjdYcFc4SldPZkVSOFZta2dqK1MxVjRjcTVpcUI5Z0JXNE1Tdm9VeEpNTjlERlYwWGI1eS9ySGVnS2NHM0p0MFxcXG44WnZCd1dtYjVJWkh2dS9HbmNFUHpLRU1KRzhzNlMycWhIUkszS213WE5xSStYWlNVVDZZYmNZeHFNZ25BN0RIZjFtLzh3dmd4a2VScDlcXFxuVlJZOG9HWnlrcEZJVUt0eWM0SVJzdS9HMHNUUk1OT0ZOVWN3cGx1d3BxZGk3SndvR0ZMSEtTb2VpL29rdG1HcWh3aTB2Q28xRnN4eG5vXFxcbmt0RWtCcG5XaFRVTzlIQ2dhaEFXd2FRWkNHdzNIa3gzU0NlMXZMQTBzd3djT1VxcTJFNVB5cHhiODI4dWFPNkNqM1J2WTZWNEZIakloQVxcXG5nQ3g0ejYvNzZRNjJ4UXBQZWorYjd5ZUhIR2ZpOHVZMkZ5WjI4dmNtVm5hWE4wY25rdmMzSmpMMmx1WkdWNExtTnlZWFJsY3k1cGJ5MDJcXFxuWmpFM1pESXlZbUpoTVRVd01ERm1MM0pwYm1jdE1DNHhOaTR5TUM5emNtTXZaR2xuWlhOMExuSnpBQUFBbER3UUFGRUFBQUJBQUFBQUdnXFxcbkFBQUpROEVBQlJBQUFBUVFBQUFBa0FBQUNVUEJBQVVRQUFBRWtBQUFBU0FBQUFsRHdRQUZFQUFBQlBBQUFBQ1FBQUFHRnpjMlZ5ZEdsdlxcXG5iaUJtWVdsc1pXUTZJRzUxYlY5d1pXNWthVzVuSUR3OUlIQmxibVJwYm1jdWJHVnVLQ2tBQUpROEVBQlJBQUFBVUFBQUFBa0FBQUNVUEJcXFxuQUFVUUFBQUZNQUFBQUpBQUFBbER3UUFGRUFBQUJYQUFBQUtBQUFBSlE4RUFCUkFBQUFZQUFBQUNRQUFBQ1VQQkFBVVFBQUFHWUFBQUFPXFxcbkFBQUFsRHdRQUZFQUFBQm9BQUFBRGdBQUFKUThFQUJSQUFBQWFnQUFBQTRBQUFDVVBCQUFVUUFBQUdzQUFBQUpBQUFBbER3UUFGRUFBQVxcXG5CckFBQUFMUUFBQUpROEVBQlJBQUFBcVFBQUFBMEFBQUNVUEJBQVVRQUFBS2tBQUFCTkFBQUFsRHdRQUZFQUFBQ3hBQUFBRFFBQUFKUThcXFxuRUFCUkFBQUFzUUFBQUVnQUFBQ1VQQkFBVVFBQUFMRUFBQUEzQUFBQWxEd1FBRkVBQUFDeUFBQUFJQUFBQUpROEVBQlJBQUFBc3dBQUFCXFxcbm9BQUFDVVBCQUFVUUFBQUxjQUFBQWFBQUFBbER3UUFGRUFBQUM1QUFBQUhBQUFBSlE4RUFCUkFBQUF1d0FBQUEwQUFBQ1VQQkFBVVFBQVxcXG5BTHdBQUFBakFBQUFsRHdRQUZFQUFBQzhBQUFBRWdBQUFKUThFQUJSQUFBQXh3QUFBQm9BQUFCbjVnbHFoYTVudTNMemJqdzY5VStsZjFcXFxuSU9VWXhvQlp1cjJZTWZHYzNnV3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF4Z0FBQU1jQUFBQWdBQUFBXFxcbklBQUFBRUFBQUFBSUFBQUFBUUFBQUFBQUFBQmpiRzl6ZFhKbElHbHVkbTlyWldRZ2NtVmpkWEp6YVhabGJIa2diM0lnWVdaMFpYSWdZbVxcXG5WcGJtY2daSEp2Y0hCbFpBQUExQUFBQUFRQUFBQUVBQUFBMVFBQUFGUnlhV1ZrSUhSdklITm9jbWx1YXlCMGJ5QmhJR3hoY21kbGNpQmpcXFxuWVhCaFkybDBlVncvRUFBa0FBQUFMM0oxYzNSakwyVmlNall5T1RaaU5UVTJZMlZtTVRCbVlqY3hNMkV6T0dZelpERTJZams0T0RZd09EXFxcbkJtTWpZdmJHbGljbUZ5ZVM5aGJHeHZZeTl6Y21NdmNtRjNYM1psWXk1eWM0Zy9FQUJNQUFBQXJnRUFBQWtBQUFCS2MxWmhiSFZsS0NrQVxcXG5BQURrUHhBQUNBQUFBT3cvRUFBQkFBQUFiblZzYkNCd2IybHVkR1Z5SUhCaGMzTmxaQ0IwYnlCeWRYTjBjbVZqZFhKemFYWmxJSFZ6WlNcXFxuQnZaaUJoYmlCdlltcGxZM1FnWkdWMFpXTjBaV1FnZDJocFkyZ2dkMjkxYkdRZ2JHVmhaQ0IwYnlCMWJuTmhabVVnWVd4cFlYTnBibWNnXFxcbmFXNGdjblZ6ZEFBQTJRQUFBQXdBQUFBRUFBQUEyZ0FBQU5zQUFBQW1BQUFBWVNCRWFYTndiR0Y1SUdsdGNHeGxiV1Z1ZEdGMGFXOXVJSFxcXG5KbGRIVnlibVZrSUdGdUlHVnljbTl5SUhWdVpYaHdaV04wWldSc2VRRGNBQUFBQUFBQUFBRUFBQUFuQUFBQUwzSjFjM1JqTDJWaU1qWXlcXFxuT1RaaU5UVTJZMlZtTVRCbVlqY3hNMkV6T0dZelpERTJZams0T0RZd09EQm1Nall2YkdsaWNtRnllUzloYkd4dll5OXpjbU12YzNSeWFXXFxcbjVuTG5KekFNeEFFQUJMQUFBQTNBa0FBQTRBQUFEZEFBQUFCQUFBQUFRQUFBRGVBQUFBM3dBQUFPQUFBQUJqWVd4c1pXUWdZRTl3ZEdsdlxcXG5iam82ZFc1M2NtRndLQ2xnSUc5dUlHRWdZRTV2Ym1WZ0lIWmhiSFZsQU9FQUFBQUJBQUFBQVFBQUFEZ0FBQUJqWVd4c1pXUWdZRkpsYzNcXFxuVnNkRG82ZFc1M2NtRndLQ2xnSUc5dUlHRnVJR0JGY25KZ0lIWmhiSFZsQU14QUVBQkxBQUFBNHdZQUFDUUFBQUJoYzNObGNuUnBiMjRnXFxcblptRnBiR1ZrT2lCelpXeG1MbWx6WDJOb1lYSmZZbTkxYm1SaGNua29jM1JoY25RcEFBRE1RQkFBU3dBQUFPUUdBQUFKQUFBQVlYTnpaWFxcXG5KMGFXOXVJR1poYVd4bFpEb2djMlZzWmk1cGMxOWphR0Z5WDJKdmRXNWtZWEo1S0dWdVpDbk1RQkFBU3dBQUFPVUdBQUFKQUFBQVlYTnpcXFxuWlhKMGFXOXVJR1poYVd4bFpEb2djMlZzWmk1cGMxOWphR0Z5WDJKdmRXNWtZWEo1S0c1bGQxOXNaVzRwekVBUUFFc0FBQUQvQkFBQURRXFxcbkFBQUdGemMyVnlkR2x2YmlCbVlXbHNaV1E2SUhObGJHWXVhWE5mWTJoaGNsOWliM1Z1WkdGeWVTaGhkQ2tBekVBUUFFc0FBQUNZQmdBQVxcXG5DUUFBQUM5eWRYTjBZeTlsWWpJMk1qazJZalUxTm1ObFpqRXdabUkzTVROaE16aG1NMlF4Tm1JNU9EZzJNRGd3WmpJMkwyeHBZbkpoY25cXFxua3ZZMjl5WlM5emNtTXZjM1J5TDNCaGRIUmxjbTR1Y25NQXNFSVFBRThBQUFDNEFRQUFKZ0FBQUxCQ0VBQlBBQUFBOUFFQUFDWUFBQUIrXFxcbkx5NWpZWEpuYnk5eVpXZHBjM1J5ZVM5emNtTXZhVzVrWlhndVkzSmhkR1Z6TG1sdkxUWm1NVGRrTWpKaVltRXhOVEF3TVdZdmRYSnNMVFxcXG5JdU15NHhMM055WXk5b2IzTjBMbkp6SUVNUUFFd0FBQUJTQUFBQUpBQUFBQ0JERUFCTUFBQUFnZ0FBQUNRQUFBRC8vLy8vQUFBQUFBQUFcXFxuQUFBQUFBQ0FXMTA2QUVCQkVBQUFBQUFBSUVNUUFFd0FBQURXQUFBQUd3QUFBQ0JERUFCTUFBQUFCZ0VBQUIwQUFBQXdBQUFBT1FBQUFBXFxcbkFBQUFBd2VEQllJRU1RQUV3QUFBQWdBUUFBRWdBQUFDQkRFQUJNQUFBQUl3RUFBQklBQUFBd0FBQUFOd0FBQUFBQUFBQmhBQUFBWmdBQVxcXG5BQUFBQUFCQkFBQUFSZ0FBQUFBQUFBQ2dReEFBWVNCdWIyNHRaVzF3ZEhrZ2JHbHpkQ0J2WmlCdWRXMWlaWEp6QUNCREVBQk1BQUFBVHdcXFxuRUFBQ0lBQUFBZ1F4QUFUQUFBQUtVQkFBQUpBQUFBSUVNUUFFd0FBQURMQVFBQUVRQUFBQ0JERUFCTUFBQUE1QUVBQUJnQUFBQm1kSEJvXFxcbmRIUndhSFIwY0hOM2MzZHpjMlpwYkdWK0x5NWpZWEpuYnk5eVpXZHBjM1J5ZVM5emNtTXZhVzVrWlhndVkzSmhkR1Z6TG1sdkxUWm1NVFxcXG5ka01qSmlZbUV4TlRBd01XWXZkWEpzTFRJdU15NHhMM055WXk5d1lYSnpaWEl1Y25NQWtVUVFBRTRBQUFBVUFRQUFLZ0FBQUpGRUVBQk9cXFxuQUFBQXRBRUFBRElBQUFBdkx3QUFqVVFRQUFRQUFBQm1hV3hsT2k4dkFKRkVFQUJPQUFBQUxnSUFBRVlBQUFDUlJCQUFUZ0FBQUM0Q0FBXFxcbkJXQUFBQVptbHNaVG92THkrUlJCQUFUZ0FBQUdBQ0FBQWxBQUFBa1VRUUFFNEFBQURRQWdBQUlRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVxcXG5BQUFBQUFBQWtVUVFBRTRBQUFDTkF3QUFNUUFBQVAvLy8vOE5nQUQ4QVFBQWVBRUFBTGlSUkJBQVRnQUFBTEVEQUFBMUFBQUFua01RQUFcXFxuRUFBQUNSUkJBQVRnQUFBTVlEQUFBNkFBQUFrVVFRQUU0QUFBREFBd0FBS3dBQUFKRkVFQUJPQUFBQTlnTUFBQjBBQUFCc2IyTmhiR2h2XFxcbmMzUUFBQUNSUkJBQVRnQUFBQjBFQUFCQkFBQUFrVVFRQUU0QUFBQS9CQUFBSFFBQUFKRkVFQUJPQUFBQXd3UUFBQklBQUFDUlJCQUFUZ1xcXG5BQUFNVUVBQUFTQUFBQUxpNGxNbVVsTW1VbE1tVWxNa1VsTWtVbE1tVWxNa1VsTWtVbE1tVXVKVEpGTGk0bE1tVXVKVEpGTGlVeVpTVXlcXFxuUlFBQUFQLy8vLzh0Z0FEUUFBQUFFQUVBQUtqLy8vLy9MWUFBMEFBQUFBQUJBQUNvLy8vLy93MEFBTkFBQUFBQUFRQUFxSkZFRUFCT0FBXFxcbkFBQ0FVQUFDTUFBQUNSUkJBQVRnQUFBQTBGQUFBOEFBQUFrVVFRQUU0QUFBQWJCUUFBTkFBQUFKRkVFQUJPQUFBQUpnVUFBQ0lBQUFDUlxcXG5SQkFBVGdBQUFDWUZBQUJPQUFBQWtVUVFBRTRBQUFBckJRQUFPQUFBQUZCeWIyZHlZVzF0YVc1bklHVnljbTl5TGlCd1lYSnpaVjl4ZFdcXFxuVnllVjloYm1SZlpuSmhaMjFsYm5Rb0tTQmpZV3hzWldRZ2QybDBhRzkxZENBL0lHOXlJQ01Ba1VRUUFFNEFBQUIxQlFBQUVnQUFBSkZFXFxcbkVBQk9BQUFBa1FVQUFCOEFBQUQvLy8vL2pRQUFVQUFBQUFBQUFBQ0EvLy8vL3cwQUFGQUFBQUFBQUFBQWdQLy8vLzhGQUFCUUFBQUFBQVxcXG5FQUFJQ1JSQkFBVGdBQUFBNEdBQUFwQUFBQWtVUVFBRTRBQUFBY0JnQUFWZ0FBQUg0dkxtTmhjbWR2TDNKbFoybHpkSEo1TDNOeVl5OXBcXFxuYm1SbGVDNWpjbUYwWlhNdWFXOHRObVl4TjJReU1tSmlZVEUxTURBeFppOTFjbXd0TWk0ekxqRXZjM0pqTDJ4cFlpNXljd0NjUnhBQVN3XFxcbkFBQUc0RkFBQkpBQUFBWVhOelpYSjBhVzl1SUdaaGFXeGxaRG9nYzJWc1ppNW1jbUZuYldWdWRGOXpkR0Z5ZEM1cGMxOXViMjVsS0NrQVxcXG5uRWNRQUVzQUFBQ0JCUUFBRFFBQUFKeEhFQUJMQUFBQWdnVUFBRWtBQUFDY1J4QUFTd0FBQUtVRkFBQkdBQUFBbkVjUUFFc0FBQUFhQmdcXFxuQUFRd0FBQUNVeVJnQ2NSeEFBU3dBQUFDSUdBQUFkQUFBQW5FY1FBRXNBQUFBNkJnQUFTQUFBQUp4SEVBQkxBQUFBTkFvQUFBb0FBQUNjXFxcblJ4QUFTd0FBQURzS0FBQUtBQUFBbkVjUUFFc0FBQUJDQ2dBQUNnQUFBRlZTVEhNZ2JXOXlaU0IwYUdGdUlEUWdSMElnWVhKbElHNXZkQ1xcXG5CemRYQndiM0owWldSaElHTmhibTV2ZEMxaVpTMWhMV0poYzJVZ1ZWSk1JR1J2WlhOdTRvQ1pkQ0JvWVhabElHRWdhRzl6ZENCMGJ5QnpcXFxuWlhSeVpXeGhkR2wyWlNCVlVrd2dkMmwwYUNCaElHTmhibTV2ZEMxaVpTMWhMV0poYzJVZ1ltRnpaWEpsYkdGMGFYWmxJRlZTVENCM2FYXFxcblJvYjNWMElHRWdZbUZ6WldsdWRtRnNhV1FnWkc5dFlXbHVJR05vWVhKaFkzUmxjbWx1ZG1Gc2FXUWdTVkIyTmlCaFpHUnlaWE56YVc1MlxcXG5ZV3hwWkNCSlVIWTBJR0ZrWkhKbGMzTnBiblpoYkdsa0lIQnZjblFnYm5WdFltVnlhVzUyWVd4cFpDQnBiblJsY201aGRHbHZibUZzSUdcXFxuUnZiV0ZwYmlCdVlXMWxaVzF3ZEhrZ2FHOXpkRTkyWlhKbWJHOTNVMlYwU0c5emRFOXVRMkZ1Ym05MFFtVkJRbUZ6WlZWeWJGSmxiR0YwXFxcbmFYWmxWWEpzVjJsMGFFTmhibTV2ZEVKbFFVSmhjMlZDWVhObFVtVnNZWFJwZG1WVmNteFhhWFJvYjNWMFFtRnpaVWx1ZG1Gc2FXUkViMlxcXG4xaGFXNURhR0Z5WVdOMFpYSkpiblpoYkdsa1NYQjJOa0ZrWkhKbGMzTkpiblpoYkdsa1NYQjJORUZrWkhKbGMzTkpiblpoYkdsa1VHOXlcXFxuZEVsa2JtRkZjbkp2Y2tWdGNIUjVTRzl6ZEFrQUFBQUpBQUFBQ3dBQUFCSUFBQUFTQUFBQUZnQUFBQllBQUFBZ0FBQUFHUUFBQUFnQUFBXFxcbkI3U2hBQWNrb1FBR2RLRUFCVlNoQUFRMG9RQUMxS0VBQVhTaEFBOTBrUUFONUpFQURXU1JBQWZpOHVZMkZ5WjI4dmNtVm5hWE4wY25rdlxcXG5jM0pqTDJsdVpHVjRMbU55WVhSbGN5NXBieTAyWmpFM1pESXlZbUpoTVRVd01ERm1MM1Z1YVdOdlpHVXRibTl5YldGc2FYcGhkR2x2YmlcXFxuMHdMakV1TWpJdmMzSmpMMlJsWTI5dGNHOXpaUzV5YzlSS0VBQmtBQUFBandBQUFCY0FBQUJKYm1SbGVDQnZkWFFnYjJZZ1ltOTFibVJ6XFxcbkFFaExFQUFUQUFBQTFFb1FBR1FBQUFCV0FBQUFIZ0FBQU5SS0VBQmtBQUFBVmdBQUFBMEFBQURVU2hBQVpBQUFBRTBBQUFBSkFBQUE0Z1xcXG5BQUFBZ0FBQUFFQUFBQTR3QUFBT1FBQUFBQUFBQUFBQUFBQUdGMGRHVnRjSFFnZEc4Z1pHbDJhV1JsSUdKNUlIcGxjbTh2Y25WemRHTXZcXFxuWldJeU5qSTVObUkxTlRaalpXWXhNR1ppTnpFellUTTRaak5rTVRaaU9UZzROakE0TUdZeU5pOXNhV0p5WVhKNUwyTnZjbVV2YzNKakwzXFxcbk5zYVdObEwyMXZaQzV5Y3dBQXlVc1FBRTBBQUFEdkNRQUFKd0FBQU1sTEVBQk5BQUFBekFNQUFDQUFBQURKU3hBQVRRQUFBTXdEQUFBdFxcXG5BQUFBeVVzUUFFMEFBQURRQXdBQUlBQUFBTWxMRUFCTkFBQUEwQU1BQUNzQUFBQXZjblZ6ZEdNdlpXSXlOakk1Tm1JMU5UWmpaV1l4TUdcXFxuWmlOekV6WVRNNFpqTmtNVFppT1RnNE5qQTRNR1l5Tmk5c2FXSnlZWEo1TDJOdmNtVXZjM0pqTDNOc2FXTmxMM052Y25RdWNuTUFBR2hNXFxcbkVBQk9BQUFBTVFRQUFEY0FBQUJvVEJBQVRnQUFBRFFFQUFBTkFBQUFhRXdRQUU0QUFBQkJCQUFBR0FBQUFHaE1FQUJPQUFBQVFnUUFBQlxcXG5rQUFBQm9UQkFBVGdBQUFFTUVBQUFrQUFBQWFFd1FBRTRBQUFCSkJBQUFEUUFBQUdOaGJHeGxaQ0JnVDNCMGFXOXVPanAxYm5keVlYQW9cXFxuS1dBZ2IyNGdZU0JnVG05dVpXQWdkbUZzZFdVQWFFd1FBRTRBQUFDSEJBQUFRQUFBQUdoTUVBQk9BQUFBclFRQUFFNEFBQUJvVEJBQVRnXFxcbkFBQUxzRUFBQldBQUFBYUV3UUFFNEFBQURQQkFBQUVRQUFBR0Z6YzJWeWRHbHZiaUJtWVdsc1pXUTZJR1Z1WkNBK1BTQnpkR0Z5ZENBbVxcXG5KaUJsYm1RZ1BEMGdiR1Z1YUV3UUFFNEFBQUFtQlFBQUJRQUFBR2hNRUFCT0FBQUFOd1VBQUNnQUFBQmhjM05sY25ScGIyNGdabUZwYkdcXFxuVmtPaUJ2Wm1aelpYUWdJVDBnTUNBbUppQnZabVp6WlhRZ1BEMGdiR1Z1QUFCb1RCQUFUZ0FBQUpzQUFBQUZBQUFBYUV3UUFFNEFBQUNqXFxcbkFBQUFIZ0FBQUdGemMyVnlkR2x2YmlCbVlXbHNaV1E2SUhObGJHWXVhWE5mWTJoaGNsOWliM1Z1WkdGeWVTaHVaWGRmYkdWdUtTOXlkWFxcXG5OMFl5OWxZakkyTWprMllqVTFObU5sWmpFd1ptSTNNVE5oTXpobU0yUXhObUk1T0RnMk1EZ3daakkyTDJ4cFluSmhjbmt2WVd4c2IyTXZcXFxuYzNKakwzTjBjbWx1Wnk1eWN3QlFUaEFBU3dBQUFQOEVBQUFOQUFBQWZpOHVZMkZ5WjI4dmNtVm5hWE4wY25rdmMzSmpMMmx1WkdWNExtXFxcbk55WVhSbGN5NXBieTAyWmpFM1pESXlZbUpoTVRVd01ERm1MM1JwYm5sMlpXTXRNUzQyTGpBdmMzSmpMMkZ5Y21GNWRtVmpMbkp6ckU0UVxcXG5BRlFBQUFDZEFBQUFCZ0FBQUM5eWRYTjBZeTlsWWpJMk1qazJZalUxTm1ObFpqRXdabUkzTVROaE16aG1NMlF4Tm1JNU9EZzJNRGd3WmpcXFxuSTJMMnhwWW5KaGNua3ZZMjl5WlM5emNtTXZjM1J5TDNCaGRIUmxjbTR1Y25NQUVFOFFBRThBQUFDNEFRQUFKZ0FBQUt4T0VBQlVBQUFBXFxcbnBRQUFBQW9BQUFBUVR4QUFUd0FBQVBRQkFBQW1BQUFBNGdBQUFBZ0FBQUFFQUFBQTVRQUFBSDR2TG1OaGNtZHZMM0psWjJsemRISjVMM1xcXG5OeVl5OXBibVJsZUM1amNtRjBaWE11YVc4dE5tWXhOMlF5TW1KaVlURTFNREF4Wmk5cFpHNWhMVEF1TXk0d0wzTnlZeTl3ZFc1NVkyOWtcXFxuWlM1eWN3QUFBS0JQRUFCUkFBQUFJQUFBQUE0QUFBQ2dUeEFBVVFBQUFFZ0FBQUFTQUFBQW9FOFFBRkVBQUFCS0FBQUFGZ0FBQUtCUEVBXFxcbkJSQUFBQWJRQUFBQndBQUFDZ1R4QUFVUUFBQUljQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQVlYUjBaVzF3ZENCMGJ5QmpZV3hqZFd4aFxcXG5kR1VnZEdobElISmxiV0ZwYm1SbGNpQjNhWFJvSUdFZ1pHbDJhWE52Y2lCdlppQjZaWEp2QUFBQW9FOFFBRkVBQUFBRkFRQUFEZ0FBQUtcXFxuQlBFQUJSQUFBQUl3RUFBQ1VBQUFCbGVIQnNhV05wZENCd1lXNXBZd0FBb0U4UUFGRUFBQUE1QVFBQURnQUFBSDR2TG1OaGNtZHZMM0psXFxcbloybHpkSEo1TDNOeVl5OXBibVJsZUM1amNtRjBaWE11YVc4dE5tWXhOMlF5TW1KaVlURTFNREF4Wmk5cFpHNWhMVEF1TXk0d0wzTnlZeVxcXG45MWRITTBOaTV5Y3dBQXpGQVFBRTRBQUFBbEFBQUFCZ0FBQU14UUVBQk9BQUFBUFFBQUFCVUFBQURNVUJBQVRnQUFBRUlBQUFBS0FBQUFcXFxuekZBUUFFNEFBQUJFQUFBQUNnQUFBTXhRRUFCT0FBQUFVZ0VBQUJVQUFBQjRiaTB0ekZBUUFFNEFBQUNGQVFBQUtnQUFBTXhRRUFCT0FBXFxcbkFBb3dFQUFCSUFBQURNVUJBQVRnQUFBT01CQUFBU0FBQUFBQUFBQUFDQUFBQXRBQUFBQVlBQUFDOEFBQUFDZ0FBQU1BQUFBQU9BQUFBNlxcXG5BQUFBQklBQUFFRUFBQUFGQUFBQVd3QUFBQitBQUFCaEFBQUFJSUFBQUhzQUFBQWhnQUFBZ0FBQUFDS0FBQUNnQUFBQUk0QUFBS0VBQUFcXFxuQWtnQUFBcUFBQUFDVUFBQUNyQUFBQUtJQUFBSzBBQUFBcEFBQUFzQUFBQUN5QUFBQ3lBQUFBTFFBQUFPQUFBQUJiZ0FBQTl3QUFBRnlBXFxcbkFBRDRBQUFBWFlBQUFBQUJBQUJlQUFBQU1nRUFBSkNBQUFBMEFRQUFrUUFBQURjQkFBQ1VnQUFBT1FFQUFKVUFBQUEvQVFBQW00QUFBRVxcXG5FQkFBQ2NBQUFBakFFQUFPZUFBQUNPQVFBQTZBQUFBSmtCQUFEemdBQUFuQUVBQVBRQUFBQ3FBUUFBQW9FQUFLd0JBQUFEQVFBQXVRRUFcXFxuQUJDQkFBQzhBUUFBRVlFQUFMMEJBQUFTZ1FBQXhBRUFBQk9CQUFESEFRQUFGSUVBQU1vQkFBQVZnUUFBelFFQUFCWUJBQURjQVFBQUpZXFxcbkVBQU40QkFBQW1BUUFBN3dFQUFEZUJBQUR4QVFBQU9JRUFBUFFCQUFBNUFRQUFNd0lBQUhpQkFBQTZBZ0FBZVFFQUFEOENBQUIrZ1FBQVxcXG5RUUlBQUg4QkFBQlBBZ0FBallFQUFMQUNBQUNPQVFBQXVRSUFBSmVCQUFEQ0FnQUFtSUVBQU1ZQ0FBQ1pnUUFBMGdJQUFKcUJBQURZQWdcXFxuQUFtd0VBQU40Q0FBQ2hnUUFBNEFJQUFLSUJBQURsQWdBQXA0RUFBT3dDQUFDb0FRQUE3d0lBQUt1QkFBQUFBd0FBcklFQUFFQURBQUN0XFxcbkFRQUFSZ01BQUxPQkFBQlBBd0FBdElFQUFGQURBQUMxZ1FBQWNBTUFBTFlCQUFCNEF3QUF2b0VBQUhvREFBQy9nUUFBZXdNQUFNQ0JBQVxcXG5CK0F3QUF3UUVBQUlBREFBRERnUUFBaEFNQUFNUUJBQUNzQXdBQTdJRUFBTUlEQUFEdGdRQUF3d01BQU82QkFBRFBBd0FBN3dFQUFQc0RcXFxuQUFBYmdnQUEvUU1BQUJ3Q0FBQXdCQUFBVDRJQUFHQUVBQUJRQWdBQWd3UUFBSE9DQUFDSUJBQUFkSUlBQUlvRUFBQjFBZ0FBemdRQUFMXFxcbm1DQUFEUUJBQUF1Z0lBQUZjRkFBQkJnd0FBV1FVQUFFS0RBQUJhQlFBQVE0TUFBR0FGQUFCRWd3QUFod1VBQUVVREFBQ0pCUUFBUjRNQVxcXG5BSXNGQUFCSWd3QUFqUVVBQUVtREFBQ1FCUUFBU29NQUFKRUZBQUJMZ3dBQXZnVUFBRXdEQUFEQkJRQUFUNE1BQU1NRkFBQlFnd0FBeEFcXFxuVUFBRkdEQUFER0JRQUFVZ01BQU1nRkFBQlVnd0FBMEFVQUFGV0RBQURyQlFBQVZvTUFBTzhGQUFCWGd3QUE5UVVBQUZpREFBQUdCZ0FBXFxcbldZTUFBQkFHQUFCYWd3QUFHd1lBQUZ1REFBQWNCZ0FBWElNQUFCNEdBQUJkZ3dBQUlBWUFBRjZEQUFCQUJnQUFYNE1BQUVFR0FBQmdnd1xcXG5BQWFnWUFBR0dEQUFCdUJnQUFZb01BQUhVR0FBQmpBd0FBZVFZQUFHZURBQURVQmdBQWFJTUFBTlVHQUFCcGd3QUEzUVlBQUdvREFBRGZcXFxuQmdBQWJJTUFBT2tHQUFCdGd3QUE2Z1lBQUc2REFBQUFCd0FBYjRNQUFBNEhBQUJ3Z3dBQUVBY0FBSEdEQUFCTEJ3QUFjb01BQUUwSEFBXFxcbkJ6Z3dBQXNnY0FBSFNEQUFEQUJ3QUFkWU1BQVBZSEFBQjJnd0FBK3djQUFIZURBQUQ5QndBQWVJTUFBUDRIQUFCNWd3QUFBQWdBQUhxRFxcXG5BQUF1Q0FBQWU0TUFBREFJQUFCOGd3QUFQd2dBQUgyREFBQkFDQUFBZm9NQUFGd0lBQUIvZ3dBQVhnZ0FBSUFEQUFCZ0NBQUFnb01BQUdcXFxuc0lBQUNEZ3dBQW9BZ0FBSVNEQUFDMUNBQUFoWU1BQUxZSUFBQ0dnd0FBeUFnQUFJZURBQURUQ0FBQWlJTUFBT0lJQUFDSmd3QUE0d2dBXFxcbkFJcURBQUJZQ1FBQWl3TUFBR0FKQUFDVGd3QUFaQWtBQUpTREFBQm1DUUFBbFlNQUFIQUpBQUNXZ3dBQWNRa0FBSmVEQUFDRUNRQUFtSVxcXG5NQUFJVUpBQUNaZ3dBQWpRa0FBSnFEQUFDUENRQUFtNE1BQUpFSkFBQ2Nnd0FBa3drQUFKMkRBQUNwQ1FBQW5vTUFBS29KQUFDZmd3QUFcXFxuc1FrQUFLQURBQUN6Q1FBQW9vTUFBTFlKQUFDamd3QUF1Z2tBQUtTREFBQzhDUUFBcFlNQUFNVUpBQUNtZ3dBQXh3a0FBS2VEQUFESkNRXFxcbkFBcUlNQUFNc0pBQUNwZ3dBQXp3a0FBS3FEQUFEWENRQUFxNE1BQU5nSkFBQ3Nnd0FBM0FrQUFLMERBQURnQ1FBQXNZTUFBT1FKQUFDeVxcXG5nd0FBNWdrQUFMT0RBQUR5Q1FBQXRJTUFBUHdKQUFDMUF3QUEvd2tBQUxpREFBQUJDZ0FBdVlNQUFBUUtBQUM2Z3dBQUJRb0FBTHVEQUFcXFxuQUxDZ0FBdklNQUFBOEtBQUM5Z3dBQUVRb0FBTDZEQUFBVENnQUF2NE1BQUNrS0FBREFnd0FBS2dvQUFNR0RBQUF4Q2dBQXdnTUFBRGdLXFxcbkFBREpnd0FBT2dvQUFNcURBQUE4Q2dBQXl3TUFBRDRLQUFETmd3QUFRd29BQU02REFBQkhDZ0FBejRNQUFFa0tBQURRZ3dBQVN3b0FBTlxcXG5HREFBQk9DZ0FBMG9NQUFGRUtBQURUZ3dBQVVnb0FBTlNEQUFCWkNnQUExUU1BQUY4S0FBRGJnd0FBWmdvQUFOeURBQUIyQ2dBQTNZTUFcXFxuQUhjS0FBRGVnd0FBZ1FvQUFOK0RBQUNFQ2dBQTRJTUFBSVVLQUFEaGd3QUFqZ29BQU9LREFBQ1BDZ0FBNDRNQUFKSUtBQURrZ3dBQWt3XFxcbm9BQU9XREFBQ3BDZ0FBNW9NQUFLb0tBQURuZ3dBQXNRb0FBT2lEQUFDeUNnQUE2WU1BQUxRS0FBRHFnd0FBdFFvQUFPdURBQUM2Q2dBQVxcXG43SU1BQUx3S0FBRHRnd0FBeGdvQUFPNkRBQURIQ2dBQTc0TUFBTW9LQUFEd2d3QUF5d29BQVBHREFBRE9DZ0FBOG9NQUFOQUtBQUR6Z3dcXFxuQUEwUW9BQVBTREFBRGdDZ0FBOVlNQUFPUUtBQUQyZ3dBQTVnb0FBUGVEQUFEd0NnQUErSU1BQVBJS0FBRDVnd0FBK1FvQUFQcURBQUFBXFxcbkN3QUErNE1BQUFFTEFBRDhnd0FBQkFzQUFQMkRBQUFGQ3dBQS9vTUFBQTBMQUFEL2d3QUFEd3NBQUFDRUFBQVJDd0FBQVlRQUFCTUxBQVxcXG5BQ2hBQUFLUXNBQUFPRUFBQXFDd0FBQklRQUFERUxBQUFGaEFBQU1nc0FBQWFFQUFBMEN3QUFCNFFBQURVTEFBQUloQUFBT2dzQUFBbUVcXFxuQUFBOEN3QUFDb1FBQUVVTEFBQUxoQUFBUndzQUFBeUVBQUJKQ3dBQURZUUFBRXNMQUFBT2hBQUFUZ3NBQUErRUFBQlZDd0FBRUlRQUFGXFxcbmdMQUFBUmhBQUFYQXNBQUJJRUFBQmZDd0FBRllRQUFHUUxBQUFXaEFBQVpnc0FBQmVFQUFCd0N3QUFHQVFBQUhJTEFBQWFoQUFBZUFzQVxcXG5BQnVFQUFDQ0N3QUFISVFBQUlRTEFBQWRoQUFBaFFzQUFCNkVBQUNMQ3dBQUg0UUFBSTRMQUFBZ2hBQUFrUXNBQUNHRUFBQ1NDd0FBSW9cXFxuUUFBSllMQUFBamhBQUFtUXNBQUNTRUFBQ2JDd0FBSlFRQUFKNExBQUFvaEFBQW9Bc0FBQ21FQUFDakN3QUFLb1FBQUtVTEFBQXJoQUFBXFxcbnFBc0FBQ3lFQUFDckN3QUFMWVFBQUs0TEFBQXVoQUFBdWdzQUFDK0VBQUMrQ3dBQU1JUUFBTU1MQUFBeGhBQUF4Z3NBQURLRUFBREpDd1xcXG5BQU00UUFBTW9MQUFBMGhBQUF6Z3NBQURXRUFBRFFDd0FBTm9RQUFORUxBQUEzaEFBQTF3c0FBRGlFQUFEWUN3QUFPWVFBQU9ZTEFBQTZcXFxuaEFBQThBc0FBRHVFQUFEN0N3QUFQSVFBQUFBTUFBQTloQUFBRFF3QUFENkVBQUFPREFBQVA0UUFBQkVNQUFCQWhBQUFFZ3dBQUVHRUFBXFxcbkFwREFBQVFvUUFBQ29NQUFCRGhBQUFPZ3dBQUVTRUFBQTlEQUFBUllRQUFFVU1BQUJHaEFBQVJnd0FBRWVFQUFCSkRBQUFTSVFBQUVvTVxcXG5BQUJKaEFBQVRnd0FBRXFFQUFCVkRBQUFTNFFBQUZjTUFBQk1oQUFBV0F3QUFFMkVBQUJiREFBQVRvUUFBR0FNQUFCUGhBQUFaQXdBQUZcXFxuQ0VBQUJtREFBQVVZUUFBSEFNQUFCU2hBQUFkd3dBQUZPRUFBQ0FEQUFBVklRQUFJUU1BQUJWaEFBQWhRd0FBRmFFQUFDTkRBQUFWNFFBXFxcbkFJNE1BQUJZaEFBQWtRd0FBRm1FQUFDU0RBQUFXb1FBQUtrTUFBQmJoQUFBcWd3QUFGeUVBQUMwREFBQVhZUUFBTFVNQUFCZWhBQUF1Z1xcXG53QUFGK0VBQUM4REFBQVlJUUFBTVVNQUFCaGhBQUF4Z3dBQUdLRUFBREpEQUFBWTRRQUFNb01BQUJraEFBQXpnd0FBR1dFQUFEVkRBQUFcXFxuWm9RQUFOY01BQUJuaEFBQTNnd0FBR2dFQUFEZ0RBQUFhb1FBQU9RTUFBQnJoQUFBNWd3QUFHeUVBQUR3REFBQWJZUUFBUEVNQUFCdWhBXFxcbkFBOHd3QUFHK0VBQUFBRFFBQWNJUUFBQTBOQUFCeGhBQUFEZzBBQUhLRUFBQVJEUUFBYzRRQUFCSU5BQUIwaEFBQVJRMEFBSFdFQUFCR1xcXG5EUUFBZG9RQUFFa05BQUIzaEFBQVNnMEFBSGlFQUFCUERRQUFlWVFBQUZBTkFBQjZoQUFBVkEwQUFIdUVBQUJZRFFBQWZJUUFBRjhOQUFcXFxuQjloQUFBWkEwQUFINkVBQUJtRFFBQWY0UUFBSEFOQUFDQWhBQUFlZzBBQUlHRUFBQ0FEUUFBZ29RQUFJRU5BQUNEaEFBQWhBMEFBSVNFXFxcbkFBQ0ZEUUFBaFlRQUFKY05BQUNHaEFBQW1nMEFBSWVFQUFDeURRQUFpSVFBQUxNTkFBQ0poQUFBdkEwQUFJb0VBQUMrRFFBQWpJUUFBTVxcXG5BTkFBQ05oQUFBeHcwQUFJNkVBQURLRFFBQWo0UUFBTXNOQUFDUWhBQUF6dzBBQUpHRUFBRFZEUUFBa2dRQUFOZ05BQUNWaEFBQTRBMEFcXFxuQUphRUFBRG1EUUFBbDRRQUFQQU5BQUNZaEFBQThnMEFBSm1FQUFEMERRQUFtb1FBQVBVTkFBQ2JoQUFBQVE0QUFKeUVBQUF6RGdBQW5ZXFxcblFBQURRT0FBQ2VoQUFBT3c0QUFKK0VBQUEvRGdBQW9JUUFBRUFPQUFDaGhBQUFUdzRBQUtLRUFBQlFEZ0FBbzRRQUFGb09BQUNraEFBQVxcXG5YQTRBQUtXRUFBQ0JEZ0FBcG9RQUFJTU9BQUNuQkFBQWhnNEFBS3FFQUFDTERnQUFxNFFBQUl3T0FBQ3NoQUFBcEE0QUFLMEVBQUNuRGdcXFxuQUFzSVFBQUxNT0FBQ3hoQUFBdEE0QUFMS0VBQUMrRGdBQXM0UUFBTUFPQUFDMGhBQUF4UTRBQUxVRUFBRElEZ0FBdUlRQUFNNE9BQUM1XFxcbmhBQUEwQTRBQUxxRUFBRGFEZ0FBdTRRQUFOd09BQUM4QkFBQTNnNEFBTDZFQUFEZ0RnQUF2NFFBQUFBUEFBREFoQUFBQVE4QUFNR0VBQVxcXG5BTER3QUF3Z1FBQUEwUEFBREVoQUFBR0E4QUFNV0VBQUFhRHdBQXhvUUFBQ0FQQUFESGhBQUFLZzhBQU1pRUFBQTFEd0FBeVFRQUFEb1BcXFxuQUFET2hBQUFQZzhBQU0rRUFBQkREd0FBMElRQUFFUVBBQURSaEFBQVNBOEFBTktFQUFCSkR3QUEwNFFBQUUwUEFBRFVoQUFBVGc4QUFOXFxcbldFQUFCU0R3QUExb1FBQUZNUEFBRFhoQUFBVnc4QUFOaUVBQUJZRHdBQTJZUUFBRndQQUFEYWhBQUFYUThBQU51RUFBQnBEd0FBM0lRQVxcXG5BR29QQUFEZGhBQUFiUThBQU42RUFBQnhEd0FBMzRRQUFITVBBQURnQkFBQWVnOEFBT2VFQUFDQkR3QUE2SVFBQUlJUEFBRHBoQUFBaFFcXFxuOEFBT3FFQUFDR0R3QUE2NFFBQUpNUEFBRHNoQUFBbEE4QUFPMkVBQUNZRHdBQTdvUUFBSmtQQUFEdmhBQUFuUThBQVBDRUFBQ2VEd0FBXFxcbjhZUUFBS0lQQUFEeWhBQUFvdzhBQVBPRUFBQ25Ed0FBOUlRQUFLZ1BBQUQxaEFBQXJBOEFBUGFFQUFDdER3QUE5NFFBQUxrUEFBRDRoQVxcXG5BQXVnOEFBUG1FQUFDOUR3QUErb1FBQUw0UEFBRDdoQUFBeGc4QUFQeUVBQURIRHdBQS9ZUUFBTTBQQUFEK2hBQUF6ZzhBQVArRUFBRGJcXFxuRHdBQUFJVUFBQUFRQUFBQmhRQUFTaEFBQUFLRkFBQlFFQUFBQTRVQUFKNFFBQUFFaFFBQW9CQUFBQVdGQUFESEVBQUFCb1VBQU1nUUFBXFxcbkFIaFFBQXpSQUFBQWlGQUFET0VBQUFDWVVBQU5BUUFBQUtoUUFBK3hBQUFBc0ZBQUQ5RUFBQURZVUFBQUFSQUFBT2hRQUFYeEVBQUErRlxcXG5BQUJoRVFBQUVJVUFBQUFTQUFBUmhRQUFTUklBQUJLRkFBQktFZ0FBRTRVQUFFNFNBQUFVaFFBQVVCSUFBQldGQUFCWEVnQUFGZ1VBQUZcXFxub1NBQUFaaFFBQVhoSUFBQnFGQUFCZ0VnQUFHNFVBQUlrU0FBQWNoUUFBaWhJQUFCMkZBQUNPRWdBQUhvVUFBSkFTQUFBZmhRQUFzUklBXFxcbkFDQ0ZBQUN5RWdBQUlZVUFBTFlTQUFBaWhRQUF1QklBQUNPRkFBQy9FZ0FBSkFVQUFNSVNBQUFuaFFBQXhoSUFBQ2lGQUFESUVnQUFLWVxcXG5VQUFOY1NBQUFxaFFBQTJCSUFBQ3VGQUFBUkV3QUFMSVVBQUJJVEFBQXRoUUFBRmhNQUFDNkZBQUFZRXdBQUw0VUFBRnNUQUFBd2hRQUFcXFxuWFJNQUFER0ZBQUJnRXdBQU1vVUFBSDBUQUFBemhRQUFnQk1BQURTRkFBQ1FFd0FBTllVQUFKb1RBQUEyaFFBQW9CTUFBRGVGQUFEMkV3XFxcbkFBT0lVQUFQZ1RBQUE1QlFBQS9oTUFBRCtGQUFBQUZBQUFRSVVBQUFFVUFBQkJoUUFBYlJZQUFFS0ZBQUJ2RmdBQVE0VUFBSUFXQUFCRVxcXG5oUUFBZ1JZQUFFV0ZBQUNiRmdBQVJvVUFBSjBXQUFCSGhRQUFvQllBQUVpRkFBRHJGZ0FBU1lVQUFQRVdBQUJLaFFBQStSWUFBRXVGQUFcXFxuQUFGd0FBVElVQUFBMFhBQUJOaFFBQURoY0FBRTZGQUFBVkZ3QUFUNFVBQUNBWEFBQlFoUUFBTlJjQUFGR0ZBQUEzRndBQVVvVUFBRUFYXFxcbkFBQlRoUUFBVkJjQUFGU0ZBQUJnRndBQVZZVUFBRzBYQUFCV2hRQUFiaGNBQUZlRkFBQnhGd0FBV0lVQUFISVhBQUJaaFFBQWRCY0FBRlxcXG5xRkFBQ0FGd0FBVzRVQUFMUVhBQUJjaFFBQXRoY0FBRjJGQUFEVUZ3QUFYb1VBQU5jWEFBQmZoUUFBMkJjQUFHQ0ZBQURjRndBQVlZVUFcXFxuQU40WEFBQmloUUFBNEJjQUFHT0ZBQURxRndBQVpJVUFBUEFYQUFCbGhRQUEraGNBQUdhRkFBQUFHQUFBWjRVQUFBWVlBQUJvaFFBQUJ4XFxcbmdBQUdtRkFBQUxHQUFBYW9VQUFBNFlBQUJyaFFBQUVCZ0FBR3lGQUFBYUdBQUFiWVVBQUNBWUFBQnVoUUFBZVJnQUFHK0ZBQUNBR0FBQVxcXG5jSVVBQUtzWUFBQnhoUUFBc0JnQUFIS0ZBQUQyR0FBQWM0VUFBQUFaQUFCMGhRQUFIeGtBQUhXRkFBQWdHUUFBZG9VQUFDd1pBQUIzaFFcXFxuQUFNQmtBQUhpRkFBQThHUUFBZVlVQUFFQVpBQUI2aFFBQVFSa0FBSHVGQUFCRUdRQUFmSVVBQUVZWkFBQjloUUFBYmhrQUFINkZBQUJ3XFxcbkdRQUFmNFVBQUhVWkFBQ0FoUUFBZ0JrQUFJR0ZBQUNzR1FBQWdvVUFBTEFaQUFDRGhRQUF5aGtBQUlTRkFBRFFHUUFBaFlVQUFOb1pBQVxcXG5DR2hRQUEyeGtBQUllRkFBRGVHUUFBaUlVQUFBQWFBQUNKaFFBQUhCb0FBSXFGQUFBZUdnQUFpNFVBQUNBYUFBQ01oUUFBWHhvQUFJMkZcXFxuQUFCZ0dnQUFqb1VBQUgwYUFBQ1BoUUFBZnhvQUFKQ0ZBQUNLR2dBQWtZVUFBSkFhQUFDU2hRQUFtaG9BQUpPRkFBQ2dHZ0FBbElVQUFLXFxcbmNhQUFDVmhRQUFxQm9BQUphRkFBQ3VHZ0FBbDRVQUFMQWFBQUNZaFFBQXZob0FBSm1GQUFDL0dnQUFtb1VBQU1FYUFBQ2JoUUFBQUJzQVxcXG5BSnlGQUFCTUd3QUFuWVVBQUZBYkFBQ2VoUUFBV2hzQUFKK0ZBQUJyR3dBQW9JVUFBSFFiQUFDaGhRQUFmUnNBQUtLRkFBQ0FHd0FBbzRcXFxuVUFBUFFiQUFDa2hRQUEvQnNBQUtXRkFBQUFIQUFBcG9VQUFEZ2NBQUNuaFFBQU94d0FBS2lGQUFCQUhBQUFxWVVBQUVvY0FBQ3FoUUFBXFxcblRSd0FBS3VGQUFCK0hBQUFySVVBQUlBY0FBQ3RCUUFBaEJ3QUFMR0ZBQUNHSEFBQXNnVUFBSWtjQUFDMWhRQUFrQndBQUxZRkFBQzdIQVxcXG5BQTRZVUFBTDBjQUFEaUJRQUF3QndBQU9XRkFBRElIQUFBNW9VQUFOQWNBQURuaFFBQTB4d0FBT2lGQUFEVUhBQUE2WVVBQVBzY0FBRHFcXFxuaFFBQUFCMEFBT3VGQUFBc0hRQUE3QVVBQUdzZEFBQXJoZ0FBZUIwQUFDeUdBQUI1SFFBQUxZWUFBSnNkQUFBdUJnQUF3QjBBQUZPR0FBXFxcbkQ2SFFBQVZJWUFBUHNkQUFCVmhnQUFBQjRBQUZZR0FBQ1ZIZ0FBNjRZQUFKb2VBQURzQmdBQW5CNEFBTzZHQUFDZUhnQUE3d1lBQVA4ZVxcXG5BQUJRaHdBQUNCOEFBRkVIQUFBUUh3QUFXWWNBQUJZZkFBQmFod0FBR0I4QUFGc0hBQUFlSHdBQVlZY0FBQ0FmQUFCaWh3QUFLQjhBQUdcXFxuTUhBQUF3SHdBQWE0Y0FBRGdmQUFCc0J3QUFRQjhBQUhTSEFBQkdId0FBZFljQUFFZ2ZBQUIyQndBQVRoOEFBSHlIQUFCUUh3QUFmWWNBXFxcbkFGZ2ZBQUIrQndBQVlCOEFBSWFIQUFCb0h3QUFod2NBQUg0ZkFBQ2Rod0FBZ0I4QUFKNEhBQUN3SHdBQXpvY0FBTElmQUFEUEJ3QUEwQlxcXG44QUFPMkhBQURUSHdBQTdvY0FBTlFmQUFEdmh3QUExaDhBQVBDSEFBRFlId0FBOFFjQUFPQWZBQUQ1aHdBQTR4OEFBUHFIQUFEa0h3QUFcXFxuKzRjQUFPZ2ZBQUQ4QndBQThCOEFBQVNJQUFEeUh3QUFCUWdBQUFBZ0FBQVRpQUFBQ3lBQUFCU0lBQUFNSUFBQUZZZ0FBQTRnQUFBV2lBXFxcbkFBRUNBQUFCY0lBQUFTSUFBQUdZZ0FBQmNnQUFBYWlBQUFHQ0FBQUJ1SUFBQWtJQUFBSElnQUFDY2dBQUFkaUFBQUtDQUFBQjZJQUFBdlxcXG5JQUFBSDRnQUFEQWdBQUFnaUFBQU15QUFBQ0VJQUFBNElBQUFKb2dBQUR3Z0FBQW5DQUFBUHlBQUFDcUlBQUJISUFBQUt3Z0FBRW9nQUFcXFxuQXVpQUFBVnlBQUFDK0lBQUJZSUFBQU1JZ0FBRjhnQUFBeENBQUFZU0FBQURPSUFBQmtJQUFBTklnQUFHVWdBQUExaUFBQWNDQUFBRFlJXFxcbkFBQnlJQUFBT0lnQUFIUWdBQUE1Q0FBQW5TQUFBR0tJQUFDZ0lBQUFZNGdBQUtnZ0FBQmtpQUFBcVNBQUFHV0lBQURBSUFBQVpvZ0FBTlxcXG5BZ0FBQm5pQUFBOFNBQUFHaUlBQUFBSVFBQWFRZ0FBQXNoQUFCMGlBQUFEeUVBQUhXSUFBQVFJUUFBZG9nQUFCSWhBQUIzaUFBQUZDRUFcXFxuQUhnSUFBQVhJUUFBZTRnQUFCa2hBQUI4Q0FBQUd5RUFBSDZJQUFBZUlRQUFmNGdBQUNBaEFBQ0FDQUFBTHlFQUFJK0lBQUF4SVFBQWtBXFxcbmdBQUQwaEFBQ2NpQUFBUHlFQUFKMElBQUJCSVFBQW40Z0FBRVVoQUFDZ2lBQUFSeUVBQUtFSUFBQktJUUFBcElnQUFFNGhBQUNsQ0FBQVxcXG5nQ0VBQU5lSUFBQ0RJUUFBMkFnQUFJVWhBQURhaUFBQWlTRUFBTnVJQUFDS0lRQUEzSWdBQUl3aEFBRGRpQUFBa0NFQUFONklBQUFzSWdcXFxuQUEzd2dBQURFaUFBRGtpQUFBWUNJQUFPV0lBQUJoSWdBQTVvZ0FBRzRpQUFEbmlBQUFjQ0lBQU9pSUFBQXBJd0FBNlFnQUFDc2pBQURyXFxcbmlBQUFKeVFBQU95SUFBQkFKQUFBN1lnQUFFc2tBQUR1aUFBQVlDUUFBTzhJQUFDSUpBQUFGNGtBQUp3a0FBQVlDUUFBNnlRQUFHZUpBQVxcXG5BTUtnQUFhSWtBQUEwcUFBQnBpUUFBZENvQUFHb0pBQUIzS2dBQWJZa0FBTndxQUFCdWlRQUEzU29BQUcrSkFBQjBLd0FBY0lrQUFIWXJcXFxuQUFCeGlRQUFsaXNBQUhLSkFBQ1hLd0FBYzRrQUFBQXNBQUIwQ1FBQU1Dd0FBS1NKQUFCZkxBQUFwUWtBQUdVc0FBQ3JpUUFBWnl3QUFLXFxcbndKQUFCekxBQUF1SWtBQUhVc0FBQzVpUUFBZGl3QUFMcUpBQUI4TEFBQXV3a0FBT01zQUFBaWlnQUE1U3dBQUNPS0FBRHJMQUFBSkFvQVxcXG5BTzRzQUFBbmlnQUE4aXdBQUNnS0FBRDBMQUFBS29vQUFQa3NBQUFyaWdBQUFDMEFBQ3lLQUFBbUxRQUFMUW9BQUNndEFBQXZpZ0FBTFNcXFxuMEFBRENLQUFBdUxRQUFNWW9BQURBdEFBQXlpZ0FBYUMwQUFET0tBQUJ2TFFBQU5Bb0FBSEV0QUFBMmlnQUFmeTBBQURlS0FBQ1hMUUFBXFxcbk9Jb0FBS0F0QUFBNWlnQUFweTBBQURxS0FBQ29MUUFBTzRvQUFLOHRBQUE4aWdBQXNDMEFBRDJLQUFDM0xRQUFQb29BQUxndEFBQS9pZ1xcXG5BQXZ5MEFBRUNLQUFEQUxRQUFRWW9BQU1jdEFBQkNpZ0FBeUMwQUFFT0tBQURQTFFBQVJJb0FBTkF0QUFCRmlnQUExeTBBQUVhS0FBRFlcXFxuTFFBQVI0b0FBTjh0QUFCSWlnQUE0QzBBQUVtS0FBQUFMZ0FBU29vQUFDOHVBQUJMaWdBQU1DNEFBRXlLQUFCVExnQUFUWW9BQUlBdUFBXFxcbkJPaWdBQW1pNEFBRStLQUFDYkxnQUFVSW9BQUo4dUFBQlJpZ0FBb0M0QUFGS0tBQUR6TGdBQVU0b0FBUFF1QUFCVWlnQUFBQzhBQUZVS1xcXG5BQURXTHdBQUs0c0FBQUF3QUFBc0N3QUFBekFBQUMrTEFBQUZNQUFBTUlzQUFBZ3dBQUF4aXdBQUtqQUFBREtMQUFBdU1BQUFNNHNBQURcXFxuWXdBQUEwQ3dBQVBUQUFBRHVMQUFCQU1BQUFQSXNBQUVFd0FBQTlpd0FBbHpBQUFENkxBQUNaTUFBQVA0c0FBSnN3QUFCQUN3QUFuVEFBXFxcbkFFS0xBQUNmTUFBQVF3c0FBS0V3QUFCRml3QUEvekFBQUVhTEFBQUFNUUFBUjRzQUFBVXhBQUJJaXdBQU1ERUFBRWtMQUFDUU1RQUFxWVxcXG5zQUFKSXhBQUNxQ3dBQW9ERUFBTGlMQUFEQU1RQUF1WXNBQU9ReEFBQzZpd0FBOERFQUFMdUxBQUFBTWdBQXZBc0FBRWd5QUFBRWpBQUFcXFxuVURJQUFBVU1BQUFBTkFBQXRZMEFBTUJOQUFDMmpRQUFBRTRBQUxlTkFBRDlud0FBdUkwQUFBQ2dBQUM1alFBQWphUUFBTHFOQUFDUXBBXFxcbkFBdTQwQUFNZWtBQUM4alFBQTBLUUFBTDJOQUFEK3BBQUF2bzBBQUFDbEFBQy9qUUFBRGFZQUFNQ05BQUFRcGdBQXdZMEFBQ3ltQUFEQ1xcXG5qUUFBUUtZQUFNTU5BQUJ0cGdBQThJMEFBSENtQUFEeGpRQUFkS1lBQVBLTkFBQitwZ0FBOHcwQUFKNm1BQUFUamdBQTVxWUFBQlNPQUFcXFxuRHdwZ0FBRlk0QUFQS21BQUFXamdBQStLWUFBQmVPQUFBQXB3QUFHSTRBQUJlbkFBQVpqZ0FBSUtjQUFCcU9BQUFpcHdBQUd3NEFBQytuXFxcbkFBQW9qZ0FBTXFjQUFDa09BQUJ4cHdBQWFJNEFBSG1uQUFCcERnQUFoNmNBQUhlT0FBQ0pwd0FBZUk0QUFJdW5BQUI1RGdBQWpxY0FBSFxcXG55T0FBQ1Fwd0FBZlE0QUFKT25BQUNBamdBQWxxY0FBSUVPQUFEQXB3QUFxNDRBQU1LbkFBQ3NEZ0FBeTZjQUFMV09BQUQxcHdBQXRvNEFcXFxuQVBhbkFBQzNqZ0FBK0tjQUFMZ09BQUQ2cHdBQXVvNEFBQ2lvQUFDN2pnQUFMS2dBQUx5T0FBQXRxQUFBdlk0QUFEQ29BQUMramdBQU9xXFxcbmdBQUwrT0FBQkFxQUFBd0k0QUFIU29BQURCamdBQWVLZ0FBTUtPQUFDQXFBQUF3NDRBQU1hb0FBREVqZ0FBenFnQUFNV09BQURRcUFBQVxcXG54bzRBQU5xb0FBREhqZ0FBNEtnQUFNaU9BQUQ0cUFBQXlZNEFBUHVvQUFES0RnQUEvYWdBQU15T0FBQXVxUUFBelk0QUFEQ3BBQURPamdcXFxuQUFWS2tBQU0rT0FBQmZxUUFBMEk0QUFIMnBBQURSamdBQWdLa0FBTktPQUFEQnFRQUEwNDRBQU02cEFBRFVqZ0FBejZrQUFOV09BQURhXFxcbnFRQUExbzRBQU42cEFBRFhqZ0FBNEtrQUFOaU9BQUQvcVFBQTJZNEFBQUNxQUFEYWpnQUFONm9BQU51T0FBQkFxZ0FBM0k0QUFFNnFBQVxcXG5EZGpnQUFVS29BQU42T0FBQmFxZ0FBMzQ0QUFGeXFBQURnamdBQVlLb0FBT0dPQUFCM3FnQUE0bzRBQUhxcUFBRGpqZ0FBdzZvQUFPU09cXFxuQUFEYnFnQUE1WTRBQU42cUFBRG1qZ0FBNEtvQUFPZU9BQUR3cWdBQTZJNEFBUEtxQUFEcGpnQUE5Nm9BQU9xT0FBQUJxd0FBNjQ0QUFBXFxcbmVyQUFEc2pnQUFDYXNBQU8yT0FBQVBxd0FBN280QUFCR3JBQUR2amdBQUY2c0FBUENPQUFBZ3F3QUE4WTRBQUNlckFBRHlqZ0FBS0tzQVxcXG5BUE9PQUFBdnF3QUE5STRBQURDckFBRDFqZ0FBVzZzQUFQWU9BQUJncXdBQSs0NEFBR21yQUFEOGpnQUFhcXNBQVAyT0FBQnNxd0FBL29cXFxuNEFBSENyQUFEL0RnQUF3S3NBQUUrUEFBRHJxd0FBVUk4QUFPeXJBQUJSandBQTdxc0FBRktQQUFEd3F3QUFVNDhBQVBxckFBQlVqd0FBXFxcbkFLd0FBRldQQUFDazF3QUFWbzhBQUxEWEFBQlhqd0FBeDljQUFGaVBBQURMMXdBQVdZOEFBUHpYQUFCYWp3QUFBUGtBQUZzUEFBQUgrUVxcXG5BQVlvOEFBQW41QUFCakR3QUFEdm9BQUdpUUFBQVErZ0FBYVJBQUFCUDZBQUJza0FBQUZmb0FBRzBRQUFBaitnQUFlNUFBQUNYNkFBQjhcXFxuRUFBQUovb0FBSDZRQUFBcStnQUFmeEFBQUYzNkFBQ3lrQUFBWC9vQUFMTVFBQUJ1K2dBQXdwQUFBSEQ2QUFEREVBQUEydm9BQUMyUkFBXFxcbkFBK3dBQUxoRUFBQVg3QUFBemtRQUFCL3NBQURTUkFBQVQrd0FBTlJFQUFCajdBQUE2a1FBQUhmc0FBRHNSQUFCUSt3QUFicEVBQUZMN1xcXG5BQUJ2a1FBQVZ2c0FBSENSQUFCYSt3QUFjWkVBQUY3N0FBQnlrUUFBWXZzQUFIT1JBQUJtK3dBQWRKRUFBR3I3QUFCMWtRQUFidnNBQUhcXFxuYVJBQUJ5K3dBQWQ1RUFBSGI3QUFCNGtRQUFldnNBQUhtUkFBQisrd0FBZXBFQUFJTDdBQUI3a1FBQWhQc0FBSHlSQUFDRyt3QUFmWkVBXFxcbkFJajdBQUIra1FBQWl2c0FBSCtSQUFDTSt3QUFnSkVBQUk3N0FBQ0JrUUFBa3ZzQUFJS1JBQUNXK3dBQWc1RUFBSnI3QUFDRWtRQUFudlxcXG5zQUFJV1JBQUNnK3dBQWhwRUFBS1Q3QUFDSGtRQUFwdnNBQUlpUkFBQ3Erd0FBaVpFQUFLNzdBQUNLa1FBQXNQc0FBSXVSQUFDeSt3QUFcXFxuakpFQUFNTDdBQUNOa1FBQTAvc0FBSTZSQUFEWCt3QUFqNUVBQU5uN0FBQ1FrUUFBMi9zQUFKR1JBQURkK3dBQWtwRUFBTjc3QUFDVGtRXFxcbkFBNFBzQUFKU1JBQURpK3dBQWxaRUFBT1Q3QUFDV2tRQUE2UHNBQUplUkFBRHErd0FBbUpFQUFPejdBQUNaa1FBQTd2c0FBSnFSQUFEd1xcXG4rd0FBbTVFQUFQTDdBQUNja1FBQTlQc0FBSjJSQUFEMit3QUFucEVBQVBuN0FBQ2ZrUUFBL1BzQUFLQ1JBQUFBL0FBQW9SRUFBRHo5QUFcXFxuRGRrZ0FBUHYwQUFONlNBQUJBL1FBQTM1SUFBRkQ5QUFEZ2tnQUFVZjBBQU9HU0FBQlQvUUFBNGhJQUFGajlBQURua2dBQVd2MEFBT2dTXFxcbkFBQmYvUUFBN1pJQUFHSDlBQUR1a2dBQVl2MEFBTytTQUFCay9RQUE4SklBQUdiOUFBRHhrZ0FBWi8wQUFQS1NBQUJwL1FBQTg1SUFBR1xcXG5yOUFBRDBrZ0FBYlAwQUFQV1NBQUJ1L1FBQTlwSUFBRy85QUFEM2tnQUFjZjBBQVBpU0FBQnovUUFBK1JJQUFIYjlBQUQ4a2dBQWVQMEFcXFxuQVAwU0FBQjgvUUFBQVpNQUFINzlBQUFDRXdBQWcvMEFBQWVUQUFDRi9RQUFDSk1BQUlmOUFBQUprd0FBaWYwQUFBb1RBQUNRL1FBQUVaXFxcbk1BQUpMOUFBQVNFd0FBbC8wQUFCZVRBQUNaL1FBQUdCTUFBSno5QUFBYmt3QUFudjBBQUJ3VEFBREkvUUFBUnBNQUFQRDlBQUJIRXdBQVxcXG4vdjBBQUZXVEFBQUEvZ0FBVnBNQUFCRCtBQUJYRXdBQUdmNEFBR0NUQUFBZy9nQUFZWk1BQUREK0FBQmlFd0FBTS80QUFHV1RBQUExL2dcXFxuQUFaaE1BQUVYK0FBQjJrd0FBUi80QUFIY1RBQUJKL2dBQWVaTUFBRTMrQUFCNmt3QUFVUDRBQUhzVEFBQlMvZ0FBZlpNQUFGVCtBQUIrXFxcbkV3QUFiUDRBQUphVEFBQncvZ0FBbHhNQUFJSCtBQUNva3dBQWcvNEFBS21UQUFDRi9nQUFxcE1BQUlmK0FBQ3Jrd0FBaWY0QUFLeVRBQVxcXG5DTi9nQUFyWk1BQUkvK0FBQ3Vrd0FBay80QUFLK1RBQUNWL2dBQXNKTUFBSm4rQUFDeGt3QUFuZjRBQUxLVEFBQ2gvZ0FBczVNQUFLWCtcXFxuQUFDMGt3QUFxZjRBQUxXVEFBQ3IvZ0FBdHBNQUFLMytBQUMza3dBQXIvNEFBTGlUQUFDeC9nQUF1Wk1BQUxYK0FBQzZrd0FBdWY0QUFMXFxcbnVUQUFDOS9nQUF2Sk1BQU1IK0FBQzlrd0FBeGY0QUFMNlRBQURKL2dBQXY1TUFBTTMrQUFEQWt3QUEwZjRBQU1HVEFBRFYvZ0FBd3BNQVxcXG5BTm4rQUFERGt3QUEzZjRBQU1TVEFBRGgvZ0FBeFpNQUFPWCtBQURHa3dBQTZmNEFBTWVUQUFEdC9nQUF5Sk1BQU8vK0FBREprd0FBOGZcXFxuNEFBTXFUQUFEMS9nQUF5NU1BQVBmK0FBRE1rd0FBK2Y0QUFNMlRBQUQ3L2dBQXpwTUFBUDMrQUFEUGt3QUEvLzRBQU5BVEFBQy8vd0FBXFxcbmtKUUFBTUwvQUFDUkZBQUF5UDhBQUplVUFBREsvd0FBbUJRQUFORC9BQUNlbEFBQTB2OEFBSjhVQUFEWS93QUFwWlFBQU5yL0FBQ21GQVxcXG5BQTNmOEFBS21VQUFEZy93QUFxaFFBQU8vL0FBQzVsQUFBQUFBQkFMcVVBQUFNQUFFQXU1UUFBQTBBQVFDOGxBQUFKd0FCQUwyVUFBQW9cXFxuQUFFQXZwUUFBRHNBQVFDL2xBQUFQQUFCQU1DVUFBQStBQUVBd1pRQUFEOEFBUURDbEFBQVRnQUJBTU9VQUFCUUFBRUF4SlFBQUY0QUFRXFxcbkRGbEFBQWdBQUJBTWFVQUFEN0FBRUF4NVFBQUFBQkFRRElsQUFBQXdFQkFNbVVBQUFIQVFFQXlwUUFBRFFCQVFETGxBQUFOd0VCQU15VVxcXG5BQUNQQVFFQXpaUUFBSkFCQVFET2xBQUFuUUVCQU0rVUFBQ2dBUUVBMEpRQUFLRUJBUURSbEFBQTBBRUJBTktVQUFEOUFRRUEwNVFBQVBcXFxuNEJBUURVbEFBQWdBSUJBTldVQUFDZEFnRUExcFFBQUtBQ0FRRFhsQUFBMFFJQkFOaVVBQURnQWdFQTJaUUFBT0VDQVFEYWxBQUEvQUlCXFxcbkFOdVVBQUFBQXdFQTNKUUFBQ0FEQVFEZGxBQUFKQU1CQU42VUFBQXRBd0VBMzVRQUFFRURBUURnbEFBQVFnTUJBT0dVQUFCS0F3RUE0cFxcXG5RQUFFc0RBUURqbEFBQVVBTUJBT1NVQUFCN0F3RUE1WlFBQUlBREFRRG1sQUFBbmdNQkFPY1VBQUNnQXdFQTZaUUFBTVFEQVFEcWxBQUFcXFxueUFNQkFPdVVBQURRQXdFQTdKUUFBTllEQVFEdGxBQUFBQVFCQU80VUFBQW9CQUVBRnBVQUFKNEVBUUFYbFFBQW9BUUJBQmlWQUFDcUJBXFxcbkVBR1pVQUFMQUVBUUFhRlFBQTFBUUJBRDZWQUFEWUJBRUFQNVVBQVB3RUFRQkFsUUFBQUFVQkFFR1ZBQUFvQlFFQVFwVUFBREFGQVFCRFxcXG5sUUFBWkFVQkFFU1ZBQUJ2QlFFQVJaVUFBSEFGQVFCR2xRQUFBQVlCQUVlVkFBQTNCd0VBU0pVQUFFQUhBUUJKbFFBQVZnY0JBRXFWQUFcXFxuQmdCd0VBUzVVQUFHZ0hBUUJNbFFBQUFBZ0JBRTJWQUFBR0NBRUFUcFVBQUFnSUFRQlBGUUFBQ2dnQkFGR1ZBQUEyQ0FFQVVwVUFBRGNJXFxcbkFRQlRsUUFBT1FnQkFGU1ZBQUE4Q0FFQVZaVUFBRDBJQVFCV2xRQUFQd2dCQUZlVkFBQldDQUVBV0pVQUFGY0lBUUJabFFBQVlBZ0JBRlxcXG5xVkFBQjNDQUVBVzVVQUFJQUlBUUJjbFFBQW53Z0JBRjJWQUFDbkNBRUFYcFVBQUxBSUFRQmZsUUFBNEFnQkFHQ1ZBQUR6Q0FFQVlaVUFcXFxuQVBRSUFRQmlsUUFBOWdnQkFHT1ZBQUQ3Q0FFQVpKVUFBQUFKQVFCbGxRQUFGZ2tCQUdhVkFBQWNDUUVBWjVVQUFCOEpBUUJvbFFBQUlBXFxcbmtCQUdtVkFBQTZDUUVBYXBVQUFEOEpBUUJybFFBQVFBa0JBR3lWQUFDQUNRRUFiWlVBQUxnSkFRQnVsUUFBdkFrQkFHK1ZBQUMrQ1FFQVxcXG5jSlVBQU1BSkFRQnhsUUFBMEFrQkFIS1ZBQURTQ1FFQWM1VUFBQUFLQVFCMGxRQUFCQW9CQUhXVkFBQUZDZ0VBZHBVQUFBY0tBUUIzbFFcXFxuQUFEQW9CQUhpVkFBQVVDZ0VBZVpVQUFCVUtBUUI2bFFBQUdBb0JBSHVWQUFBWkNnRUFmSlVBQURZS0FRQjlsUUFBT0FvQkFINlZBQUE3XFxcbkNnRUFmNVVBQUQ4S0FRQ0FsUUFBUUFvQkFJR1ZBQUJKQ2dFQWdwVUFBRkFLQVFDRGxRQUFXUW9CQUlTVkFBQmdDZ0VBaFpVQUFIMEtBUVxcXG5DR2xRQUFnQW9CQUllVkFBQ2RDZ0VBaUpVQUFLQUtBUUNKbFFBQXdBb0JBSXFWQUFESUNnRUFpNVVBQU1rS0FRQ01sUUFBNXdvQkFJMlZcXFxuQUFEckNnRUFqcFVBQVBjS0FRQ1BsUUFBQUFzQkFKQ1ZBQUEyQ3dFQWtaVUFBRGtMQVFDU2xRQUFRQXNCQUpPVkFBQldDd0VBbEpVQUFGXFxcbmdMQVFDVmxRQUFZQXNCQUphVkFBQnpDd0VBbDVVQUFIZ0xBUUNZbFFBQWdBc0JBSm1WQUFDU0N3RUFtcFVBQUprTEFRQ2JsUUFBblFzQlxcXG5BSnlWQUFDcEN3RUFuWlVBQUxBTEFRQ2VsUUFBQUF3QkFKK1ZBQUJKREFFQW9KVUFBSUFNQVFDaEZRQUFzd3dCQU5TVkFBREFEQUVBMVpcXFxuVUFBUE1NQVFEV2xRQUErZ3dCQU5lVkFBQUFEUUVBMkpVQUFDZ05BUURabFFBQU1BMEJBTnFWQUFBNkRRRUEyNVVBQUdBT0FRRGNsUUFBXFxcbmZ3NEJBTjJWQUFDQURnRUEzcFVBQUtvT0FRRGZsUUFBcXc0QkFPQ1ZBQUN0RGdFQTRaVUFBSzRPQVFEaWxRQUFzQTRCQU9PVkFBQ3lEZ1xcXG5FQTVKVUFBQUFQQVFEbGxRQUFIUThCQU9hVkFBQW5Ed0VBNTVVQUFDZ1BBUURvbFFBQU1BOEJBT21WQUFCUkR3RUE2cFVBQUZvUEFRRHJcXFxubFFBQXNBOEJBT3lWQUFERkR3RUE3WlVBQU13UEFRRHVsUUFBNEE4QkFPK1ZBQUQzRHdFQThKVUFBQUFRQVFEeGxRQUFSeEFCQVBLVkFBXFxcbkJPRUFFQTg1VUFBRklRQVFEMGxRQUFaaEFCQVBXVkFBQndFQUVBOXBVQUFIOFFBUUQzbFFBQXV4QUJBUGlWQUFDOUVBRUErWlVBQUw0UVxcXG5BUUQ2bFFBQXdoQUJBUHVWQUFEUUVBRUEvSlVBQU9rUUFRRDlsUUFBOEJBQkFQNlZBQUQ2RUFFQS81VUFBQUFSQVFBQWxnQUFOUkVCQUFcXFxuR1dBQUEyRVFFQUFwWUFBRUFSQVFBRGxnQUFSQkVCQUFTV0FBQklFUUVBQlpZQUFGQVJBUUFHbGdBQWRCRUJBQWVXQUFCMkVRRUFDSllBXFxcbkFIY1JBUUFKbGdBQWdCRUJBQXFXQUFERkVRRUFDNVlBQU1rUkFRQU1sZ0FBelJFQkFBMldBQURPRVFFQURwWUFBTnNSQVFBUEZnQUEzUlxcXG5FQkFCR1dBQURnRVFFQUVwWUFBT0VSQVFBVGxnQUE5UkVCQUJTV0FBQUFFZ0VBRlpZQUFCSVNBUUFXbGdBQUV4SUJBQmVXQUFBNEVnRUFcXFxuR0pZQUFENFNBUUFabGdBQVB4SUJBQnFXQUFDQUVnRUFHNVlBQUljU0FRQWNGZ0FBaWhJQkFCK1dBQUNPRWdFQUlKWUFBSThTQVFBaGxnXFxcbkFBbmhJQkFDS1dBQUNmRWdFQUk1WUFBS2tTQVFBa2xnQUFxaElCQUNXV0FBQ3dFZ0VBSnBZQUFPc1NBUUFubGdBQThCSUJBQ2lXQUFENlxcXG5FZ0VBS1pZQUFBQVRBUUFxbGdBQUJCTUJBQ3VXQUFBRkV3RUFMSllBQUEwVEFRQXRsZ0FBRHhNQkFDNldBQUFSRXdFQUw1WUFBQk1UQVFcXFxuQXdsZ0FBS1JNQkFER1dBQUFxRXdFQU1wWUFBREVUQVFBemxnQUFNaE1CQURTV0FBQTBFd0VBTlpZQUFEVVRBUUEybGdBQU9oTUJBRGVXXFxcbkFBQTdFd0VBT0pZQUFFVVRBUUE1bGdBQVJ4TUJBRHFXQUFCSkV3RUFPNVlBQUVzVEFRQThsZ0FBVGhNQkFEMldBQUJRRXdFQVBwWUFBRlxcXG5FVEFRQS9sZ0FBVnhNQkFFQ1dBQUJZRXdFQVFaWUFBRjBUQVFCQ2xnQUFaQk1CQUVPV0FBQm1Fd0VBUkpZQUFHMFRBUUJGbGdBQWNCTUJcXFxuQUVhV0FBQjFFd0VBUjVZQUFBQVVBUUJJbGdBQVN4UUJBRW1XQUFCUUZBRUFTcFlBQUZvVUFRQkxsZ0FBWEJRQkFFd1dBQUJlRkFFQVRwXFxcbllBQUdJVUFRQlBsZ0FBZ0JRQkFGQ1dBQURHRkFFQVVSWUFBTWdVQVFCVGxnQUEwQlFCQUZTV0FBRGFGQUVBVlpZQUFJQVZBUUJXbGdBQVxcXG50aFVCQUZlV0FBQzRGUUVBV0pZQUFNRVZBUUJabGdBQTJCVUJBRnFXQUFEZUZRRUFXNVlBQUFBV0FRQmNsZ0FBUVJZQkFGMldBQUJFRmdcXFxuRUFYcFlBQUVVV0FRQmZsZ0FBVUJZQkFHQ1dBQUJhRmdFQVlaWUFBR0FXQVFCaWxnQUFiUllCQUdPV0FBQ0FGZ0VBWkpZQUFMa1dBUUJsXFxcbmxnQUF3QllCQUdhV0FBREtGZ0VBWjVZQUFBQVhBUUJvbGdBQUd4Y0JBR21XQUFBZEZ3RUFhcFlBQUN3WEFRQnJsZ0FBTUJjQkFHeVdBQVxcXG5BNkZ3RUFiWllBQUVBWEFRQnVsZ0FBQUJnQkFHK1dBQUE3R0FFQWNKWUFBRHdZQVFCeGxnQUFvQmdCQUhJV0FBREFHQUVBa3BZQUFPb1lcXFxuQVFDVGxnQUE4eGdCQUpTV0FBRC9HQUVBbFpZQUFBY1pBUUNXbGdBQUNSa0JBSmVXQUFBS0dRRUFtSllBQUF3WkFRQ1psZ0FBRkJrQkFKXFxcbnFXQUFBVkdRRUFtNVlBQUJjWkFRQ2NsZ0FBR0JrQkFKMldBQUEyR1FFQW5wWUFBRGNaQVFDZmxnQUFPUmtCQUtDV0FBQTdHUUVBb1pZQVxcXG5BRVFaQVFDaWxnQUFSeGtCQUtPV0FBQlFHUUVBcEpZQUFGb1pBUUNsbGdBQW9Ca0JBS2FXQUFDb0dRRUFwNVlBQUtvWkFRQ29sZ0FBMkJcXFxua0JBS21XQUFEYUdRRUFxcFlBQU9JWkFRQ3JsZ0FBNHhrQkFLeVdBQURsR1FFQXJaWUFBQUFhQVFDdWxnQUFQeG9CQUsrV0FBQkhHZ0VBXFxcbnNKWUFBRWdhQVFDeGxnQUFVQm9CQUxLV0FBQ2FHZ0VBczVZQUFKMGFBUUMwbGdBQW5ob0JBTFdXQUFDakdnRUF0cFlBQU1BYUFRQzNsZ1xcXG5BQStSb0JBTGlXQUFBQUhBRUF1WllBQUFrY0FRQzZsZ0FBQ2h3QkFMdVdBQUEzSEFFQXZKWUFBRGdjQVFDOWxnQUFRUndCQUw2V0FBQkdcXFxuSEFFQXY1WUFBRkFjQVFEQWxnQUFXaHdCQU1HV0FBQnRIQUVBd3BZQUFIQWNBUUREbGdBQWNod0JBTVNXQUFDUUhBRUF4WllBQUpJY0FRXFxcbkRHbGdBQXFCd0JBTWVXQUFDcEhBRUF5SllBQUxjY0FRREpsZ0FBQUIwQkFNcVdBQUFISFFFQXk1WUFBQWdkQVFETWxnQUFDaDBCQU0yV1xcXG5BQUFMSFFFQXpwWUFBRGNkQVFEUGxnQUFPaDBCQU5BV0FBQThIUUVBMHBZQUFENGRBUURUbGdBQVB4MEJBTlNXQUFCSUhRRUExWllBQUZcXFxuQWRBUURXbGdBQVdoMEJBTmVXQUFCZ0hRRUEySllBQUdZZEFRRFpsZ0FBWngwQkFOcVdBQUJwSFFFQTI1WUFBR29kQVFEY2xnQUFqeDBCXFxcbkFOMldBQUNRSFFFQTNwWUFBSklkQVFEZmxnQUFreDBCQU9DV0FBQ1pIUUVBNFpZQUFLQWRBUURpbGdBQXFoMEJBT09XQUFEZ0hnRUE1SlxcXG5ZQUFQY2VBUURsbGdBQStSNEJBT2FXQUFDd0h3RUE1NVlBQUxFZkFRRG9sZ0FBd0I4QkFPbVdBQUR5SHdFQTZwWUFBUDhmQVFEcmxnQUFcXFxuQUNBQkFPeVdBQUNhSXdFQTdaWUFBQUFrQVFEdWxnQUFieVFCQU8rV0FBQndKQUVBOEpZQUFIVWtBUUR4bGdBQWdDUUJBUEtXQUFCRUpRXFxcbkVBODVZQUFBQXdBUUQwbGdBQUx6UUJBUFdXQUFBQVJBRUE5cFlBQUVkR0FRRDNsZ0FBQUdnQkFQaVdBQUE1YWdFQStaWUFBRUJxQVFENlxcXG5sZ0FBWDJvQkFQdVdBQUJnYWdFQS9KWUFBR3BxQVFEOWxnQUFibW9CQVA2V0FBQndhZ0VBLzVZQUFOQnFBUUFBbHdBQTdtb0JBQUdYQUFcXFxuRHdhZ0VBQXBjQUFQVnFBUUFEbHdBQTltb0JBQVNYQUFBQWF3RUFCWmNBQURkckFRQUdsd0FBUUdzQkFBZVhBQUJFYXdFQUNKY0FBRVpyXFxcbkFRQUpsd0FBVUdzQkFBcVhBQUJhYXdFQUM1Y0FBRnRyQVFBTWx3QUFZbXNCQUEyWEFBQmphd0VBRHBjQUFIaHJBUUFQbHdBQWZXc0JBQlxcXG5DWEFBQ1Fhd0VBRVpjQUFFQnVBUUFTRndBQVlHNEJBREtYQUFDQWJnRUFNNWNBQUp0dUFRQTBsd0FBQUc4QkFEV1hBQUJMYndFQU5wY0FcXFxuQUU5dkFRQTNsd0FBaUc4QkFEaVhBQUNQYndFQU9aY0FBS0J2QVFBNmx3QUE0RzhCQUR1WEFBRGlid0VBUEpjQUFPTnZBUUE5bHdBQTVXXFxcbjhCQUQ2WEFBRHdid0VBUDVjQUFQSnZBUUJBbHdBQUFIQUJBRUdYQUFENGh3RUFRcGNBQUFDSUFRQkRsd0FBMW93QkFFU1hBQUFBalFFQVxcXG5SWmNBQUFtTkFRQkdsd0FBQUxBQkFFZVhBQUFmc1FFQVNKY0FBRkN4QVFCSmx3QUFVN0VCQUVxWEFBQmtzUUVBUzVjQUFHaXhBUUJNbHdcXFxuQUFjTEVCQUUyWEFBRDhzZ0VBVHBjQUFBQzhBUUJQbHdBQWE3d0JBRkNYQUFCd3ZBRUFVWmNBQUgyOEFRQlNsd0FBZ0x3QkFGT1hBQUNKXFxcbnZBRUFWSmNBQUpDOEFRQlZsd0FBbXJ3QkFGYVhBQUNjdkFFQVY1Y0FBSjI4QVFCWWx3QUFuN3dCQUZtWEFBQ2d2QUVBV3BjQUFLUzhBUVxcXG5CYmx3QUFBTkFCQUZ5WEFBRDIwQUVBWFpjQUFBRFJBUUJlbHdBQUo5RUJBRitYQUFBcDBRRUFZSmNBQUY3UkFRQmhGd0FBWmRFQkFHaVhcXFxuQUFCejBRRUFhWmNBQUh2UkFRQnFsd0FBdTlFQkFHc1hBQURCMFFFQWNaY0FBT25SQVFCeWx3QUFBTklCQUhPWEFBQkcwZ0VBZEpjQUFPXFxcbkRTQVFCMWx3QUE5TklCQUhhWEFBQUEwd0VBZDVjQUFGZlRBUUI0bHdBQVlOTUJBSG1YQUFCNTB3RUFlcGNBQUFEVUFRQjdGd0FBb05RQlxcXG5BQnVZQUFDaTFBRUFISmdBQUtQVUFRQWRtQUFBcGRRQkFCNFlBQUNuMUFFQUlKZ0FBS25VQVFBaEdBQUFDOVVCQUlPWUFBQU4xUUVBaEJcXFxuZ0FBRWZWQVFDK21BQUFTdFVCQUw4WUFBQ20xZ0VBRzVvQUFLaldBUUFjR2dBQTA5WUJBRWVhQUFEVjFnRUFTQm9BQUEzWEFRQ0FtZ0FBXFxcbkQ5Y0JBSUVhQUFCSDF3RUF1Wm9BQUVuWEFRQzZHZ0FBZ2RjQkFQS2FBQUNEMXdFQTh4b0FBTHZYQVFBcm13QUF2ZGNCQUN3YkFBREsxd1xcXG5FQU9ac0FBTXpYQVFBNm13QUF6dGNCQURzYkFBQUEyQUVBYlpzQUFBRGFBUUJ1bXdBQU45b0JBRytiQUFBNzJnRUFjSnNBQUczYUFRQnhcXFxubXdBQWRkb0JBSEtiQUFCMjJnRUFjNXNBQUlUYUFRQjBtd0FBaGRvQkFIV2JBQUNNMmdFQWRwc0FBSnZhQVFCM213QUFvTm9CQUhpYkFBXFxcbkNoMmdFQWVac0FBTERhQVFCNm13QUFBT0FCQUh1YkFBQUg0QUVBZkpzQUFBamdBUUI5bXdBQUdlQUJBSDZiQUFBYjRBRUFmNXNBQUNMZ1xcXG5BUUNBbXdBQUkrQUJBSUdiQUFBbDRBRUFncHNBQUNiZ0FRQ0Rtd0FBSytBQkFJU2JBQUFBNFFFQWhac0FBQzNoQVFDR213QUFNT0VCQUlcXFxuZWJBQUErNFFFQWlKc0FBRURoQVFDSm13QUFTdUVCQUlxYkFBQk80UUVBaXhzQUFGRGhBUUNObXdBQXdPSUJBSTZiQUFENjRnRUFqNXNBXFxcbkFQL2lBUUNRbXdBQUFPTUJBSkdiQUFBQTZBRUFrcHNBQU1Yb0FRQ1Rtd0FBeCtnQkFKU2JBQURRNkFFQWxac0FBTmZvQVFDV213QUFBT1xcXG5rQkFKY2JBQUFpNlFFQXVac0FBRXpwQVFDNm13QUFVT2tCQUx1YkFBQmE2UUVBdkpzQUFGN3BBUUM5bXdBQVlPa0JBTDZiQUFCeDdBRUFcXFxudjVzQUFMWHNBUURBbXdBQUFlMEJBTUdiQUFBKzdRRUF3cHNBQUFEdUFRRERHd0FBSmU0QkFPaWJBQUFuN2dFQTZSc0FBRHp1QVFEK213XFxcbkFBUXU0QkFQK2JBQUJEN2dFQUFKd0FBRWZ1QVFBQkhBQUFWZTRCQUErY0FBQlg3Z0VBRUJ3QUFHWHVBUUFlbkFBQVorNEJBQjhjQUFDY1xcXG43Z0VBVkp3QUFLSHVBUUJWSEFBQXZPNEJBSENjQUFEdzdnRUFjWndBQVBMdUFRQnluQUFBQVBBQkFIT2NBQUFzOEFFQWRKd0FBRER3QVFcXFxuQjFuQUFBbFBBQkFIYWNBQUNnOEFFQWQ1d0FBSy93QVFCNG5BQUFzZkFCQUhtY0FBREE4QUVBZXB3QUFNSHdBUUI3bkFBQTBQQUJBSHljXFxcbkFBRFI4QUVBZlp3QUFQYndBUUIrbkFBQUFmRUJBSDhjQUFBTDhRRUFpWndBQUJEeEFRQ0tIQUFBVVBFQkFNcWNBQUJxOFFFQXl4d0FBR1xcXG4zeEFRRE9uQUFBa1BFQkFNK2NBQUNSOFFFQTBKd0FBSzd4QVFEUm5BQUE1dkVCQU5LY0FBQUE4Z0VBMHh3QUFBUHlBUURXbkFBQUVQSUJcXFxuQU5jY0FBQTg4Z0VBQTUwQUFFRHlBUUFFSFFBQVNmSUJBQTJkQUFCUThnRUFEaDBBQUZMeUFRQVFuUUFBWVBJQkFCR2RBQUJtOGdFQUVwXFxcbjBBQUFEekFRQVRuUUFBMlBZQkFCU2RBQURnOWdFQUZaMEFBTzMyQVFBV25RQUE4UFlCQUJlZEFBRDk5Z0VBR0owQUFBRDNBUUFablFBQVxcXG5kUGNCQUJxZEFBQ0E5d0VBRzUwQUFObjNBUUFjblFBQTRQY0JBQjJkQUFEczl3RUFIcDBBQUFENEFRQWZuUUFBRFBnQkFDQ2RBQUFRK0FcXFxuRUFJWjBBQUVqNEFRQWluUUFBVVBnQkFDT2RBQUJhK0FFQUpKMEFBR0Q0QVFBbG5RQUFpUGdCQUNhZEFBQ1ErQUVBSjUwQUFLNzRBUUFvXFxcbm5RQUFzUGdCQUNtZEFBQ3krQUVBS3AwQUFBRDVBUUFyblFBQWVma0JBQ3lkQUFCNitRRUFMWjBBQU16NUFRQXVuUUFBemZrQkFDK2RBQVxcXG5CVStnRUFNSjBBQUdENkFRQXhuUUFBYnZvQkFES2RBQUJ3K2dFQU01MEFBSFg2QVFBMG5RQUFlUG9CQURXZEFBQjcrZ0VBTnAwQUFJRDZcXFxuQVFBM25RQUFoL29CQURpZEFBQ1ErZ0VBT1owQUFLbjZBUUE2blFBQXNQb0JBRHVkQUFDMytnRUFQSjBBQU1ENkFRQTluUUFBdy9vQkFEXFxcbjZkQUFEUStnRUFQNTBBQU5mNkFRQkFuUUFBQVBzQkFFR2RBQUNUK3dFQVFwMEFBSlQ3QVFCRG5RQUF5L3NCQUVTZEFBRHcrd0VBUlIwQVxcXG5BUHI3QVFCUG5RQUFBQUFDQUZDZEFBRGVwZ0lBVVowQUFBQ25BZ0JTblFBQU5iY0NBRk9kQUFCQXR3SUFWSjBBQUI2NEFnQlZuUUFBSUxcXFxuZ0NBRmFkQUFDaXpnSUFWNTBBQUxET0FnQlluUUFBNGVzQ0FGbWRBQUFBK0FJQVdoMEFBREg0QWdDTG5RQUFOUGdDQUl3ZEFBQkYrQUlBXFxcbm5aMEFBRWY0QWdDZUhRQUFhdmdDQU1HZEFBQnMrQUlBd2gwQUFKSDRBZ0RublFBQWsvZ0NBT2lkQUFDVStBSUE2WjBBQUpiNEFnRHFIUVxcXG5BQUxQa0NBSUNlQUFBdStRSUFnUjRBQUViNUFnQ1puZ0FBU1BrQ0FKb2VBQUJkK1FJQXI1NEFBRi81QWdDd0hnQUEvdmtDQUUrZkFBQUFcXFxuK2dJQVVCOEFBQjc2QWdCdW53QUFBQUFEQUcrZkFBQkxFd01BY0o4QUFBQUJEZ0J4bndBQThBRU9BSEtmQUFBRkFBQUFBQUFBQUFVQUFBXFxcbkFBQUFBQUJRQUFBQUlBQUFFQ0FRQUJBZ0lBQVFJREFBRUNCQUFCQWdVQUFRSUdBQUVDQndBQkFnZ0FBUUlKQUFFQ0NnQUJBZ3NBQVFJTVxcXG5BQUVDRFFBQkFnNEFBUUlQQUFFQ0VBQUJBaEVBQVFJU0FBRUNFd0FCQWhRQUFRSVZBQUVDRmdBQkFoY0FBUUlZQUFFQ0dRQUJCUUFBQUFcXFxuQUFBQUFGQUFBQUJBQUFBQVlhQUFFSEFBQUFCaHNBQXdjQUFBQUNBQUFCQndBQUFBRUFBQUFIQUFBQUJoNEFBd2NBQUFBQ0lRQUJBaUlBXFxcbkFRWWpBQU1DSmdBQ0J3QUFBQUFBQUFBR0tBQURBaXNBQVFJT0FBRUhBQUFBQWl3QUJRSXhBQVVDTmdBRkJ3QUFBQUk3QUFJQ1BRQUNBalxcXG44QUFnSkJBQUlDUXdBQ0FrVUFBZ0pIQUFJQ1NRQUNBa3NBQWdKTkFBSUNUd0FDQWxFQUFnSlRBQUlDVlFBQ0FsY0FBZ0paQUFJQ1d3QUNcXFxuQWwwQUFnSmZBQUlDWVFBQ0FtTUFBZ0psQUFJQ1p3QUNCd0FBQUFKcEFBSUNhd0FDQW0wQUFnSnZBQUlDY1FBQ0FuTUFBZ0oxQUFJRGR3XFxcbkFDQUFBQUFBY0FBQUFBQUFBQUFua0FBZ0FBQUFBQ2V3QUNBQUFBQUFKOUFBSUFBQUFBQW44QUFnQUFBQUFDZ1FBQ0FBQUFBQUtEQUFJQVxcXG5BQUFBQW9VQUFnQUFBQUFDaHdBQ0FBQUFBQUtKQUFJQUFBQUFBb3NBQWdBQUFBQUNqUUFDQUFBQUFBS1BBQUlBQUFBQUFwRUFBZ0FBQUFcXFxuQUNrd0FDQUFBQUFBS1ZBQUlBQUFBQUFwY0FBZ0FBQUFBQ21RQUNBQUFBQUFLYkFBSUFBQUFBQXAwQUFnQUFBQUFDbndBQ0FBQUFBQUtoXFxcbkFBSUFBQUFBQXFNQUFnQUFBQUFDcFFBQ0FBQUFBQUtuQUFJQUFBQUFBcWtBQXdBQUFBQUNyQUFDQXE0QUFnQUFBQUFDc0FBQ0FBQUFBQVxcXG5LeUFBSUFBQUFBQXJRQUFnQUFBQUFDdGdBQ0FBQUFBQUs0QUFNQ3V3QUNBQUFBQUFLOUFBSUFBQUFBQXI4QUFnQUFBQUFDd1FBQ0FBQUFcXFxuQUFMREFBTUN4Z0FDQUFBQUFBTElBQUlBQUFBQUFzb0FBZ0FBQUFBQ3pBQUNBQUFBQUFMT0FBSUFBQUFBQXRBQUFnQUFBQUFDMGdBQ0FBXFxcbkFBQUFMVUFBSUFBQUFBQXRZQUFnQUFBQUFDMkFBQ0FBQUFBQUxhQUFJQUFBQUFBdHdBQWdBQUFBQUMzZ0FDQUFBQUFBTGdBQUlBQUFBQVxcXG5BdUlBQWdBQUFBQUM1QUFDQUFBQUFBTG1BQUlBQUFBQUF1Z0FBZ0FBQUFBQzZnQUNBQUFBQUFMc0FBSUFBQUFBQXU0QUFnQUFBQUFDOEFcXFxuQUNBQUFBQUFMeUFBSUFBQUFBQXZRQUFnTDJBQUlBQUFBQUF2Z0FBZ0FBQUFBQytnQUNBQUFBQUFJU0FBRUFBQUFBQXZ3QUFnTCtBQUlBXFxcbkFBQUFBZ0FCQWdBQUFBQUNBZ0VDQWdRQkFnQUFBQUFDQmdFQ0FnZ0JBZ0lLQVFJQUFBQUFBZ3dCQWdJT0FRSUNFQUVDQWhJQkFnQUFBQVxcXG5BQ0ZBRUNBaFlCQWdBQUFBQUNHQUVDQWhvQkFnSWNBUUlBQUFBQUFoNEJBZ0lnQVFJQUFBQUFBaUlCQWdJa0FRSUFBQUFBQWlZQkFnQUFcXFxuQUFBQ0tBRUNBQUFBQUFJcUFRSUNMQUVDQUFBQUFBSXVBUUlBQUFBQUFqQUJBZ0FBQUFBQ01nRUNBalFCQWdBQUFBQUNOZ0VDQWpnQkFnXFxcbkk2QVFJQUFBQUFBandCQWdBQUFBQUNQZ0VDQWtBQkFnQUFBQUFDUWdFQ0FBQUFBQUpFQVFNQ1J3RUNBa2tCQWdKTEFRSUFBQUFBQWswQlxcXG5BZ0FBQUFBQ1R3RUNBQUFBQUFKUkFRSUFBQUFBQWxNQkFnQUFBQUFDVlFFQ0FBQUFBQUpYQVFJQUFBQUFBbGtCQWdBQUFBQUNXd0VDQUFcXFxuQUFBQUpkQVFJQUFBQUFBbDhCQWdBQUFBQUNZUUVDQUFBQUFBSmpBUUlBQUFBQUFtVUJBZ0FBQUFBQ1p3RUNBQUFBQUFKcEFRSUFBQUFBXFxcbkFtc0JBZ0FBQUFBQ2JRRUNBbThCQWdBQUFBQUNjUUVDQW5NQkFnSjFBUUlBQUFBQUFuY0JBZ0FBQUFBQ2VRRUNBQUFBQUFKN0FRSUFBQVxcXG5BQUFuMEJBZ0FBQUFBQ2Z3RUNBQUFBQUFLQkFRSUFBQUFBQW9NQkFnQUFBQUFDaFFFQ0FBQUFBQUtIQVFJQUFBQUFBb2tCQWdBQUFBQUNcXFxuaXdFQ0FBQUFBQUtOQVFJQUFBQUFBbzhCQWdBQUFBQUNrUUVDQUFBQUFBS1RBUUlBQUFBQUFwVUJBZ0FBQUFBQ2x3RUNBQUFBQUFLWkFRXFxcbklBQUFBQUFwc0JBZ0FBQUFBQ25RRUNBQUFBQUFLZkFRSUFBQUFBQXFFQkFnQUFBQUFDb3dFQ0FBQUFBQUtsQVFJQUFBQUFBcWNCQWdBQVxcXG5BQUFDcVFFQ0FBQUFBQUtyQVFJQUFBQUFBcTBCQWdBQUFBQUNyd0VDQUFBQUFBS3hBUU1DdEFFQ0FBQUFBQUsyQVFJQ3VBRURBQUFBQUFcXFxuSzdBUUlBQUFBQUFyMEJBZ0svQVFJQ3dRRUNBc01CQWdBQUFBQUN4UUVDQUFBQUFBTEhBUUlBQUFBQUFza0JBZ0FBQUFBQ3l3RUNBQUFBXFxcbkFBSUhBQUVDelFFQ0Fna0FBUUlSQUFFQ3p3RUNBdEVCQWdMVEFRSUNGZ0FCQWhnQUFRQUFBQUFIQUFBQUFBQUFBQWNBQUFBRzFRRURCdFxcXG5nQkF3YmJBUU1HM2dFREJ1RUJBd2JrQVFNSEFBQUFBaFlCQWdJTEFBRUNFZ0FCQWhjQUFRTG5BUUlIQUFBQUFBQUFBQWNBQUFBQUFBQUFcXFxuQndBQUFBQUFBQUFDNlFFQ0F1c0JBZ0FBQUFBQzdRRUNBdThCQkFMekFRSUFBQUFBQVFBQUFBQUFBQUFDOVFFQ0FBQUFBQUwzQVFJQUFBXFxcbkFBQXZrQkFnQUFBQUFDK3dFQ0FBQUFBQVFBQUFBRy9RRURBQUFBQUFZQUFnRUNBUUlDQkFBQUFBWWpBQU1HQXdJRkFnZ0NBZ0lLQWdJQ1xcXG5EQUlDQWc0Q0FnSVFBZ0lFQUFBQUFoSUNBZ1FBQUFBQ0ZBSUNBaFlDQWdBQUFBQUNHQUlDQWhvQ0FnSWNBZ0lDSGdJQ0FpQUNBZ0lpQWdcXFxuSUNKQUlDQWlZQ0FnTHpBUUlDS0FJQ0Fpb0NBZ0ltQUFJQ0xBSUNBaTRDQWdJd0FnSUNNZ0lDQWpRQ0FnUUFBQUFDTmdJQ0FqZ0NBZ0k2XFxcbkFnSUNQQUlDQWo0Q0FnSkFBZ0lDUWdJQ0FrUUNBZ0pHQWdJQUFBQUFBellDQWdBQUFBQUNTQUlDQWhvQ0FnSW1BZ0lDT2dJQ0FoUUNBZ1xcXG5KR0FnSUNQQUlDQWpJQ0FnQUFBQUFDU2dJQ0FBQUFBQUpNQWdJQUFBQUFBazRDQWdBQUFBQUNVQUlDQUFBQUFBSlNBZ0lBQUFBQUFsUUNcXFxuQWdBQUFBQUNWZ0lDQUFBQUFBSllBZ0lBQUFBQUFsb0NBZ0FBQUFBQ1hBSUNBQUFBQUFKZUFnSUFBQUFBQW1BQ0FnQUFBQUFDS0FJQ0FqXFxcblFDQWdJMkFnSUFBQUFBQWlZQ0FnSWdBZ0lIQUFBQUFtSUNBZ0FBQUFBQ05nSUNBbVFDQWdBQUFBQUNaZ0lDQW1nQ0FnSnFBZ0lDYkFJQ1xcXG5BbTRDQWdKd0FnSUNjZ0lDQW5RQ0FnSjJBZ0lDZUFJQ0Fub0NBZ0o4QWdJQ2ZnSUNBb0FDQWdLQ0FnSUNoQUlDQW9ZQ0FnS0lBZ0lDaWdcXFxuSUNBb3dDQWdLT0FnSUNrQUlDQXBJQ0FnS1VBZ0lDbGdJQ0FwZ0NBZ0thQWdJQ25BSUNBcDRDQWdLZ0FnSUNvZ0lDQXFRQ0FnS21BZ0lDXFxcbnFBSUNBcW9DQWdLc0FnSUNyZ0lDQXJBQ0FnS3lBZ0lDdEFJQ0FyWUNBZ0s0QWdJQ3VnSUNBcndDQWdLK0FnSUN3QUlDQXNJQ0FnTEVBZ1xcXG5JQ3hnSUNBc2dDQWdMS0FnSUFBQUFBQXN3Q0FnQUFBQUFDemdJQ0FBQUFBQUxRQWdJQUFBQUFBdElDQWdBQUFBQUMxQUlDQUFBQUFBTFdcXFxuQWdJQUFBQUFBdGdDQWdBQUFBQUMyZ0lDQUFBQUFBTGNBZ0lBQUFBQUF0NENBZ0FBQUFBQzRBSUNBQUFBQUFMaUFnSUFBQUFBQXVRQ0FnXFxcbkFBQUFBQzVnSUNBQUFBQUFMb0FnSUFBQUFBQXVvQ0FnQUFBQUFDN0FJQ0FBQUFBQWNBQUFBQUFBQUFCd0FBQUFMdUFnSUFBQUFBQXZBQ1xcXG5BZ0FBQUFBQzhnSUNBQUFBQUFMMEFnSUFBQUFBQXZZQ0FnQUFBQUFDK0FJQ0FBQUFBQUw2QWdJQUFBQUFBdndDQWdBQUFBQUMvZ0lDQUFcXFxuQUFBQUlBQXdJQUFBQUFBZ0lEQWdBQUFBQUNCQU1DQUFBQUFBSUdBd0lBQUFBQUFnZ0RBZ0FBQUFBQ0NnTUNBQUFBQUFJTUF3SUFBQUFBXFxcbkFnNERBZ0FBQUFBQ0VBTUNBQUFBQUFJU0F3SUFBQUFBQWhRREFnQUFBQUFDRmdNQ0FBQUFBQUlZQXdJQUFBQUFBaG9EQWdBQUFBQUNIQVxcXG5NQ0FBQUFBQUllQXdJQUFBQUFBaUFEQWdBQUFBQUNJZ01DQUFBQUFBUUFBQUFDSkFNQ0FBQUFBQUltQXdJQUFBQUFBaWdEQWdBQUFBQUNcXFxuS2dNQ0FBQUFBQUlzQXdJQUFBQUFBaTREQWdBQUFBQUNNQU1DQUFBQUFBSXlBd0lBQUFBQUFqUURBZ0FBQUFBQ05nTUNBQUFBQUFJNEF3XFxcbklBQUFBQUFqb0RBZ0FBQUFBQ1BBTUNBQUFBQUFJK0F3SUFBQUFBQWtBREFnQUFBQUFDUWdNQ0FBQUFBQUpFQXdJQUFBQUFBa1lEQWdBQVxcXG5BQUFDU0FNQ0FBQUFBQUpLQXdJQUFBQUFBa3dEQWdBQUFBQUNUZ01DQUFBQUFBSlFBd0lBQUFBQUFsSURBZ0FBQUFBQ1ZBTUNBQUFBQUFcXFxuSldBd0lBQUFBQUFsZ0RBZ0FBQUFBQ1dnTUNBQUFBQUFKY0F3SUFBQUFBQWw0REFnQUFBQUFDWUFNQ0FBQUFBQUppQXdJQUFBQUFBbVFEXFxcbkFnQUFBQUFDWmdNQ0FBQUFBQUpvQXdJQUFBQUFBbW9EQWdBQUFBQUNiQU1DQUFBQUFBSnVBd0lBQUFBQUFuQURBZ0FBQUFBQ2NnTUNBQVxcXG5BQUFBSjBBd0lBQUFBQUFuWURBZ0FBQUFBQ2VBTUNBQUFBQUFKNkF3SUFBQUFBQW53REFnQUFBQUFDZmdNQ0FBQUFBQUtBQXdJQUFBQUFcXFxuQW9JREFnQUFBQUFDaEFNQ0FBQUFBQUtHQXdJQUFBQUFBb2dEQWdBQUFBQUNpZ01DQUFBQUFBS01Bd0lBQUFBQUFvNERBZ0FBQUFBQ2tBXFxcbk1DQUFBQUFBUUFBQUFDa2dNQ0FwUURBZ0tXQXdJQ21BTUNBcG9EQWdLY0F3SUNuZ01DQXFBREFnS2lBd0lDcEFNQ0FxWURBZ0tvQXdJQ1xcXG5xZ01DQXF3REFnS3VBd0lDc0FNQ0FySURBZ0swQXdJQ3RnTUNBcmdEQWdLNkF3SUN2QU1DQXI0REFnTEFBd0lDd2dNQ0FzUURBZ0xHQXdcXFxuSUN5QU1DQXNvREFnTE1Bd0lDemdNQ0F0QURBZ0xTQXdJQzFBTUNBdFlEQWdMWUF3SUMyZ01DQXR3REFnUUFBQUFBQUFBQUJ3QUFBQUFBXFxcbkFBQUMzZ01FQUFBQUFBY0FBQUFFQUFBQUJ3QUFBQVFBQUFBQUFBQUFCd0FBQUFBQUFBQUhBQUFBQUFBQUFBY0FBQUFBQUFBQUJ3QUFBQVxcXG5BQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQWNBQUFBQUFBQUFCd0FBQUFRQUFBQUhBQUFBQUFBQUFBY0FBQUFBQUFBQUJ3QUFcXFxuQUFBQUFBQUM0Z01FQXVZREJBTHFBd1FDN2dNRUFBQUFBQWNBQUFBQUFBQUFCQUFBQUFjQUFBQUFBQUFBQndBQUFBQUFBQUFIQUFBQUJBXFxcbkFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJ3QUFBQVFBQUFBQUFBQUFCd0FBQUFBQUFBQUVBQUFBQndBQUFBUUFBQUFBQUFBQVxcXG5CQUFBQUFjQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQXZJREJnTDRBd1lDL2dcXFxuTUdBZ1FFQmdJS0JBWUNFQVFHQWhZRUJnSWNCQVlBQUFBQUJ3QUFBQUFBQUFBSEFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFXFxcbkFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQVxcXG5BQUFBQUFCQUFBQUFJaUJBWUNLQVFHQkFBQUFBSXVCQVlBQUFBQUJBQUFBQUFBQUFBSEFBQUFBQUFBQUFjQUFBQUFBQUFBQkFBQUFBQUFcXFxuQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFBalFFQmdRQUFBQUFBQUFBQWpvRUJnXFxcblFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUNRQVFHQWtZRVxcXG5CZ0pNQkFZQUFBQUFCQUFBQUFKU0JBWUVBQUFBQUFBQUFBY0FBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFcXFxuQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBXFxcbkJBQUFBQUFBQUFBRUFBQUFBQUFBQUFjQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQVxcXG5BQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVcXFxuQUFBQUFsZ0VCZ0plQkFZRUFBQUFBQUFBQUFRQUFBQUFBQUFBQndBQUFBQUFBQUFIQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBXFxcbkFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQVxcXG5BQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBSEFBQUFCQUFBQUFcXFxuQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBXFxcbkFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUhBQUFBQUFBQUFBY0FBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQVxcXG5BQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFcXFxuQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBXFxcbkFBQUFBQUFBY0FBQUFFQUFBQUFBQUFBQWNBQUFBQUFBQUFCQUFBQUFBQUFBQUhBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRVxcXG5BQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFcXFxuQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQWNBQUFBRUFBQUFBQUFBQUFKa0JBWUFBQUFBQkFBQUFBY0FBQUFBQUFBQUJ3QUFBQUFBXFxcbkFBQUhBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUFtb0VCZ1xcXG5BQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUNjQVFHQW5ZRUJnQUFBQUFFQUFBQUFBQUFcXFxuQUFjQUFBQUFBQUFBQW53RUF3Y0FBQUFBQUFBQUJ3QUFBQUFBQUFBSEFBQUFBQUFBQUFjQUFBQUFBQUFBQndBQUFBQUFBQUFIQUFBQUFBXFxcbkFBQUFKL0JBWUFBQUFBQkFBQUFBQUFBQUFDaFFRR0FBQUFBQUtMQkFZQUFBQUFBcEVFQmdBQUFBQUNsd1FHQUFBQUFBS2RCQVlBQUFBQVxcXG5CQUFBQUFBQUFBQUNvd1FHQUFBQUFBS3BCQVlDcndRR0FyVUVDUUsrQkFZQ3hBUUpBQUFBQUFMTkJBWUFBQUFBQndBQUFBQUFBQUFDMHdcXFxuUUdBQUFBQUFRQUFBQUFBQUFBQXRrRUJnQUFBQUFDM3dRR0FBQUFBQUxsQkFZQUFBQUFBdXNFQmdBQUFBQUM4UVFHQUFBQUFBUUFBQUFIXFxcbkFBQUFBQUFBQUFjQUFBQUVBQUFBQndBQUFBUUFBQUFBQUFBQUJ3QUFBQUFBQUFBSEFBQUFCQUFBQUFMM0JBTUVBQUFBQXZvRUF3UUFBQVxcXG5BQUFBQUFCd0FBQUFMOUJBTUFBQUFBQndBQUFBUUFBQUFIQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFcXFxuQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBXFxcbkFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCd0FBQUFRQUFBQUFBQUFBQndBQVxcXG5BQVFBQUFBQUFBQUFCQUFBQUFJQUJRTUNBd1VEQWdZRkF3SUpCUU1DREFVREFnOEZBd1FBQUFBSEFBQUFBQUFBQUFjQUFBQUFBQUFBQkFcXFxuQUFBQUFBQUFBSEFBQUFCQUFBQUFBQUFBQUhBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFjQUFBQUVBQUFBXFxcbkFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBSEFBQUFBQUFBQUFjQUFBQUFBQVxcXG5BQUJBQUFBQUFBQUFBRUFBQUFCd0FBQUFRQUFBQUhBQUFBQkFBQUFBY0FBQUFCQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFcXFxuQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUJ3QUFBQVFBQUFBSEFBQUFBQUFBQUFRQUFBXFxcbkFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQndBQUFBUUFBQUFIQUFBQUFBQUFBQVFBQUFBSEFBQUFBQUFBQUFRQVxcXG5BQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUhBQUFBQUFBQUFBY0FBQUFFQUFBQUFBQUFBQWNBQUFBQUFBQUFCQUFBQUFcXFxuQUFBQUFFQUFBQUFBQUFBQWNBQUFBQUFBQUFCd0FBQUFRQUFBQUFBQUFBQkFBQUFBY0FBQUFBQUFBQUJBQUFBQWNBQUFBQUFBQUFCQUFBXFxcbkFBQUFBQUFIQUFBQUFwQUNBZ0tVQWdJQ3FBSUNBcTRDQWdLd0FnSUN3QUlDQXM0Q0FnSVNCUU1FQUFBQUFoVUZBd0lZQlFNQ0d3VURBaFxcXG40RkF3SWhCUU1DSkFVREFpY0ZBd0lxQlFNQ0xRVURBakFGQXdJekJRTUNOZ1VEQXYwRUF3STVCUU1DUEFVREFqOEZBd0pDQlFNQ1JRVURcXFxuQWtnRkF3SkxCUU1DVGdVREFsRUZBd0pVQlFNQ1Z3VURBbG9GQXdKZEJRTUNZQVVEQW1NRkF3Sm1CUU1DYVFVREFtd0ZBd0p2QlFNQ2NnXFxcblVEQW5VRkF3SjRCUU1DZXdVREFuNEZBd0tCQlFNQ2hBVURBb2NGQXdLS0JRTUNqUVVEQXBBRkF3UUFBQUFDa3dVREFwWUZBd0taQlFNSFxcXG5BQUFBQkFBQUFBQUFBQUFIQUFBQUFBQUFBQVFBQUFBQUFBQUFBZ0FBQVFKSEFBSUNBUUFCQUFBQUFBSURBQUVDQkFBQkFnd0JBZ0lHQUFcXFxuRUNCd0FCQWdnQUFRSUpBQUVDQ2dBQkFnc0FBUUlNQUFFQ0RRQUJBQUFBQUFJT0FBRUNud0VDQWc4QUFRSVJBQUVDRXdBQkFoUUFBUUlXXFxcbkFBRUNBQUFCQXB3RkFnS2VCUUlDb0FVREFnRUFBUUlEQUFFQ0JBQUJBZzRCQWdJUUFRSUNvd1VDQWdZQUFRQUFBQUFDQ2dBQkFnd0FBUVxcXG5MR0FBSUNEZ0FCQWdJQkFnS2xCUU1DcUFVREFnOEFBUUlUQUFFQ0ZBQUJBcXNGQXdJZUFRSUNGUUFCQXE0RkF3SWFBZ0lDSEFJQ0FoNENcXFxuQWdJOEFnSUNQZ0lDQWdnQUFRSVJBQUVDRkFBQkFoVUFBUUlhQWdJQ0hBSUNBalFDQWdJOEFnSUNQZ0lDQUFBQUFBS21BZ0lBQUFBQUFyXFxcbkVGQWdJQ0FBRUNzd1VDQWxzQUFnS2pCUUlDQlFBQkFyVUZBZ0szQlFJQ3VRVUNBaG9CQWdJWUFRSUN1d1VDQXIwRkF3TEFCUUlDd2dVQ1xcXG5Bc1FGQXdMSEJRSUN5UVVDQXNzRkFnSWdBUUlDelFVQ0FzOEZBZ0lpQVFJQzBRVUNBdE1GQWdJdUFRSUMxUVVDQXI4QkFnSTJBUUlDMXdcXFxuVURBamdCQWdMQkFRSUNHUUFCQXRvRkFnTGNCUUlDUGdFQ0FpWUNBZ0FBQUFBRUFBQUFBQUFBQUFMZUJRTUFBQUFBQXVFRkF3QUFBQUFDXFxcbjVBVURBQUFBQUFMbkJRTUFBQUFBQXVvRkF3QUFBQUFDN1FVREFBQUFBQUx3QlFNQUFBQUFBdk1GQXdBQUFBQUM5Z1VEQUFBQUFBTDVCUVxcXG5NQUFBQUFBdndGQXdBQUFBQUMvd1VEQUFBQUFBSUNCZ01BQUFBQUFnVUdBd0FBQUFBQ0NBWURBQUFBQUFJTEJnTUFBQUFBQWc0R0F3QUFcXFxuQUFBQ0VRWURBQUFBQUFJVUJnTUFBQUFBQWhjR0F3QUFBQUFDR2dZREFBQUFBQUlkQmdNQUFBQUFBaUFHQXdBQUFBQUNJd1lEQUFBQUFBXFxcbkltQmdNQUFBQUFBaWtHQXdBQUFBQUNMQVlEQUFBQUFBSXZCZ01BQUFBQUFqSUdBd0FBQUFBQ05RWURBQUFBQUFJNEJnTUFBQUFBQWpzR1xcXG5Bd0FBQUFBQ1BnWURBQUFBQUFKQkJnTUFBQUFBQWtRR0F3QUFBQUFDUndZREFBQUFBQUpLQmdNQUFBQUFBazBHQXdBQUFBQUNVQVlEQUFcXFxuQUFBQUpUQmdNQUFBQUFBbFlHQXdBQUFBQUNXUVlEQUFBQUFBSmNCZ01BQUFBQUFsOEdBd0FBQUFBQ1lnWURBQUFBQUFKbEJnTUFBQUFBXFxcbkFtZ0dBd0FBQUFBQ2F3WURBQUFBQUFKdUJnTUFBQUFBQW5FR0F3QUFBQUFDZEFZREFBQUFBQUozQmdNQUFBQUFBbm9HQXdBQUFBQUNmUVxcXG5ZREFBQUFBQUtBQmdNQUFBQUFBb01HQXdBQUFBQUNoZ1lEQUFBQUFBS0pCZ01BQUFBQUFvd0dBd0FBQUFBQ2p3WURBQUFBQUFLU0JnTUFcXFxuQUFBQUFwVUdBd0FBQUFBQ21BWURBQUFBQUFLYkJnTUFBQUFBQXA0R0F3QUFBQUFDb1FZREFBQUFBQUtrQmdNQUFBQUFBcWNHQXdBQUFBXFxcbkFDcWdZREFBQUFBQUt0QmdNQUFBQUFBckFHQXdBQUFBQUNzd1lEQUFBQUFBSzJCZ01BQUFBQUFya0dBd0FBQUFBQ3ZBWURBQUFBQUFLL1xcXG5CZ01DYmdZREFBQUFBQUozQUFJQUFBQUFBc0lHQXdBQUFBQUN4UVlEQUFBQUFBTElCZ01BQUFBQUFzc0dBd0FBQUFBQ3pnWURBQUFBQUFcXFxuTFJCZ01BQUFBQUF0UUdBd0FBQUFBQzF3WURBQUFBQUFMYUJnTUFBQUFBQXQwR0F3QUFBQUFDNEFZREFBQUFBQUxqQmdNQUFBQUFBdVlHXFxcbkF3QUFBQUFDNlFZREFBQUFBQUxzQmdNQUFBQUFBdThHQXdBQUFBQUM4Z1lEQUFBQUFBTDFCZ01BQUFBQUF2Z0dBd0FBQUFBQyt3WURBQVxcXG5BQUFBTCtCZ01BQUFBQUFnRUhBd0FBQUFBQ0JBY0RBQUFBQUFJSEJ3TUFBQUFBQWdvSEF3QUFBQUFDRFFjREFBQUFBQUlRQndNQUFBQUFcXFxuQWhNSEF3QUFBQUFDRmdjREFBQUFBQUlaQndNQUFBQUFBaHdIQXdBQUFBQUNId2NEQUFBQUFBSWlCd01BQUFBQUFpVUhBd0FBQUFBQ0tBXFxcbmNEQUFBQUFBSXJCd01BQUFBQUFpNEhBd0FBQUFBQ01RY0RBQUFBQUFJMEJ3TUFBQUFBQWpjSEF3QUFBQUFDT2djREFBQUFBQUk5QndNQVxcXG5BQUFBQWtBSEF3QUFBQUFDUXdjREFBQUFBQUpHQndNQUFBQUFBa2tIQXdBQUFBQUNUQWNEQUFBQUFBSlBCd01BQUFBQUFsSUhBd0pWQndcXFxuTUNXQWNEQWxzSEF3SmVCd01DWVFjREFtUUhBd0puQndNQUFBQUFCQUFBQUFKcUJ3TUNiUWNEQW5BSEF3SnpCd01DZGdjREFua0hBd1FBXFxcbkFBQUFBQUFBQW53SEF3Si9Cd01DZ2djREFvVUhBd0tJQndNQ2l3Y0RBbzRIQXdLUkJ3TUFBQUFBQXBRSEF3S1hCd01DbWdjREFwMEhBd1xcXG5LZ0J3TUNvd2NEQXFZSEF3S3BCd01BQUFBQUJBQUFBQUtzQndNQ3J3Y0RBcklIQXdLMUJ3TUN1QWNEQXJzSEF3UUFBQUFBQUFBQUJBQUFcXFxuQUFLK0J3TUVBQUFBQXNFSEF3UUFBQUFDeEFjREJBQUFBQUxIQndNQUFBQUFBc29IQXdMTkJ3TUMwQWNEQXRNSEF3TFdCd01DMlFjREF0XFxcbndIQXdMZkJ3TUFBQUFBQWdnQ0FnQUFBQUFDREFJQ0FBQUFBQUlPQWdJQUFBQUFBaEFDQWdBQUFBQUNFZ0lDQUFBQUFBSVVBZ0lBQUFBQVxcXG5BaFlDQWdRQUFBQUM0Z2NGQXVjSEJRTHNCd1VDOFFjRkF2WUhCUUw3QndVQ0FBZ0ZBZ1VJQlFMaUJ3VUM1d2NGQXV3SEJRTHhCd1VDOWdcXFxuY0ZBdnNIQlFJQUNBVUNCUWdGQWdvSUJRSVBDQVVDRkFnRkFoa0lCUUllQ0FVQ0l3Z0ZBaWdJQlFJdENBVUNDZ2dGQWc4SUJRSVVDQVVDXFxcbkdRZ0ZBaDRJQlFJakNBVUNLQWdGQWkwSUJRSXlDQVVDTndnRkFqd0lCUUpCQ0FVQ1JnZ0ZBa3NJQlFKUUNBVUNWUWdGQWpJSUJRSTNDQVxcXG5VQ1BBZ0ZBa0VJQlFKR0NBVUNTd2dGQWxBSUJRSlZDQVVBQUFBQUFsb0lCUUpmQ0FRQ1l3Z0VCQUFBQUFBQUFBQUNad2dGQW13SUF3SnZcXFxuQ0FNQ2NnZ0RBZ2dDQWdKZkNBUUdkUWdEQXZNQkFnWjFDQU1HZUFnREJuc0lCUUtBQ0FVQ2hRZ0VBb2tJQkFRQUFBQUFBQUFBQW8wSUJRXFxcbktTQ0FNQ0RBSUNBcFVJQXdJT0FnSUNoUWdFQnBnSUJRYWRDQVVHb2dnRkFBQUFBQUtuQ0FJRUFBQUFBQUFBQUFLcENBTUNyQWdEQXE4SVxcXG5Bd0lRQWdJRUFBQUFCcklJQlFhM0NBVUd2QWdGQUFBQUFBTEJDQUlBQUFBQUFzTUlBd0xHQ0FNQ3lRZ0RBaFFDQWdMTUNBTUd6d2dGQmdcXFxuTUNCUWJVQ0FFRUFBQUFBdFVJQlFMYUNBUUMzZ2dFQkFBQUFBQUFBQUFDNGdnRkF1Y0lBd0lTQWdJQzZnZ0RBaFlDQWdMYUNBUUdJd0FEXFxcbkJ1MElBd1FBQUFBR0dnQUJBUUFBQUFQd0NBQUVBQUFBQndBQUFBTHdDQU1IQUFBQUJ2TUlBd2NBQUFBRUFBQUFCd0FBQUFRQUFBQUdHZ1xcXG5BQkJ3QUFBQUwyQ0FZQy9BZ0pCd0FBQUFJRkNRWUNDd2tKQndBQUFBWVVDUUlIQUFBQUJoWUpBd2NBQUFBR0dRa0NCaHNKQWdZZENRSUhcXFxuQUFBQUFoOEpEQWNBQUFBR0dnQUJBUUFBQUFRQUFBQUJBQUFBQkFBQUFBSXJDUUVDQ0FBQkJBQUFBQUlzQ1FFQ0xRa0JBaTRKQVFJdkNRXFxcbkVDTUFrQkFqRUpBUVl5Q1FFQ013a0RCallKQVFZM0NRRUdPQWtCQWcwQUFRSXJDUUVDS3dBQkFpRUFBUUlpQUFFQ0xBa0JBaTBKQVFJdVxcXG5DUUVDTHdrQkFqQUpBUUl4Q1FFR01na0JBak1KQXdZMkNRRUdOd2tCQmpnSkFRUUFBQUFDQUFBQkFnUUFBUUlPQUFFQ0Z3QUJBZzRCQWdcXFxuSUhBQUVDQ2dBQkFnc0FBUUlNQUFFQ0RRQUJBZzhBQVFJU0FBRUNFd0FCQkFBQUFBY0FBQUFDT1FrQ0J3QUFBQVFBQUFBSEFBQUFCQUFBXFxcbkFBWTdDUU1HUGdrREFnSUFBUUpCQ1FNSEFBQUFCa1FKQXdaSENRTUNFQUVDQndBQUFBSktDUU1DQmdBQkFnY0FBUUtmQUFJQ0NBQUJBZ1xcXG5zQUFRY0FBQUFDRFFBQkFrMEpBZ2NBQUFBQ0R3QUJBaEFBQVFJUkFBRUhBQUFBQWs4SkFnSlJDUU1DVkFrQ0J3QUFBQUlaQUFFSEFBQUFcXFxuQWtJQ0FnY0FBQUFDR1FBQkJ3QUFBQUlLQUFFQ1JRQUNBZ0VBQVFJQ0FBRUhBQUFBQWdRQUFRSUZBQUVFQUFBQUFnd0FBUUlPQUFFQ1ZnXFxcbmtDQWxnSkFnSmFDUUlDWEFrQ0FnZ0FBUWNBQUFBQ1hna0RBaklDQWdJY0FnSUNNZ0lDQW1FSkF3Y0FBQUFDQXdBQkFnUUFBUUlJQUFFQ1xcXG5DUUFCQndBQUFBQUFBQUFIQUFBQUFtUUpCUUpwQ1FVQ2Jna0dBblFKQlFKNUNRVUNmZ2tGQW9NSkJRS0lDUVVDalFrRkFwSUpCUUtYQ1FcXFxuVUNuQWtGQXFFSkJRS21DUVVDcXdrRkFyQUpCQUlJQUFFQ3RBa0NBcllKQXdLNUNRSUNGUUFCQXJzSkFnSzlDUU1Dd0FrRUFzUUpBZ0lYXFxcbkFBRUN4Z2tDQXNnSkF3SUxBQUVDQWdBQkFnTUFBUUlNQUFFQ0NBQUJBclFKQWdLMkNRTUN1UWtDQWhVQUFRSzdDUUlDdlFrREFzQUpCQVxcXG5MRUNRSUNGd0FCQXNZSkFnTElDUU1DQ3dBQkFnSUFBUUlEQUFFQ0RBQUJCd0FBQUFRQUFBQUFBQUFBQndBQUFBTExDUVVIQUFBQUJBQUFcXFxuQUFjQUFBQUMwQWtHQXRZSkNRY0FBQUFDM3drR0F1VUpDUWNBQUFBRkFBQUFCd0FBQUFVQUFBQUhBQUFBQXU0SkF3THhDUU1IQUFBQUJBXFxcbkFBQUFjQUFBQUVBQUFBQWlzQUFRSWhBQUVDSWdBQkFpd0pBUUl0Q1FFQ0xna0JBaThKQVFJd0NRRUNNUWtCQXZRSkFnTDJDUUlDK0FrQ1xcXG5Bdm9KQWdMOENRSUMvZ2tDQWdBS0FnSUNDZ0lDQkFvQ0FnWUtBZ0lJQ2dJR0Nnb0RCZzBLQXdZUUNnTUdFd29EQmhZS0F3WVpDZ01HSEFcXFxub0RCaDhLQXdZaUNnTUdKUW9FQmlrS0JBWXRDZ1FHTVFvRUJqVUtCQVk1Q2dRR1BRb0VCa0VLQkFaRkNnUUdTUW9FQmswS0JBUUFBQUFHXFxcblVRb0RCbFFLQXdaWENnTUdXZ29EQmwwS0F3WmdDZ01HWXdvREJtWUtBd1pwQ2dNR2JBb0RCbThLQXdaeUNnTUdkUW9EQm5nS0F3WjdDZ1xcXG5NR2Znb0RCb0VLQXdhRUNnTUdod29EQm9vS0F3YU5DZ01Ha0FvREJwTUtBd2FXQ2dNR21Rb0RCcHdLQXdJQUFBRUNBUUFCQWdJQUFRSURcXFxuQUFFQ0JBQUJBZ1VBQVFJR0FBRUNCd0FCQWdnQUFRSUpBQUVDQ2dBQkFnc0FBUUlNQUFFQ0RRQUJBZzRBQVFJUEFBRUNFQUFCQWhFQUFRXFxcbklTQUFFQ0V3QUJBaFFBQVFJVkFBRUNGZ0FCQWhjQUFRSVlBQUVDR1FBQkFnQUFBUUlCQUFFQ0FnQUJBZ01BQVFJRUFBRUNCUUFCQWdZQVxcXG5BUUlIQUFFQ0NBQUJBZ2tBQVFJS0FBRUNDd0FCQWd3QUFRSU5BQUVDRGdBQkFnOEFBUUlRQUFFQ0VRQUJBaElBQVFJVEFBRUNGQUFCQWhcXFxuVUFBUUlXQUFFQ0Z3QUJBaGdBQVFJWkFBRUNLd2tCQndBQUFBS2ZDZ3dIQUFBQUJxc0tBd2F1Q2dJR3NBb0RCd0FBQUFLekNnVUhBQUFBXFxcbkJBQUFBQWNBQUFBRUFBQUFCd0FBQUFLNENnTUN1d29EQXI0S0F3TEJDZ01DeEFvREFzY0tBd0xLQ2dNQ3pRb0RBdEFLQXdMVENnTUMxZ1xcXG5vREF0a0tBd0xjQ2dNQzN3b0RBdUlLQXdMbENnTUM2QW9EQXVzS0F3THVDZ01DOFFvREF2UUtBd0wzQ2dNQytnb0RBdjBLQXdJQUN3TUNcXFxuQXdzREFnWUxBd0lKQ3dNQ0RBc0RBZzhMQXdJU0N3TUNGUXNEQWhnTEF3SWJDd01DSGdzREFpRUxBd0lrQ3dNQ0p3c0RBaW9MQXdJdEN3XFxcbk1DTUFzREFqTUxBd0kyQ3dNQ09Rc0RBandMQXdJL0N3TUNRZ3NEQkFBQUFBQUFBQUFFQUFBQUFrVUxBd0FBQUFBQ1NBc0NBa29MQXdKTlxcXG5Dd0lBQUFBQUFrOExBd0FBQUFBQ1Vnc0RBQUFBQUFKVkN3TUFBQUFBQXA0RkFnTEpCUUlDbkFVQ0FyRUZBZ0FBQUFBQ1dBc0RBQUFBQUFcXFxuSmJDd01BQUFBQUFna0FBUUlWQUFFQ1hnc0NBbUFMQWdKaUN3TUFBQUFBQW1VTEF3QUFBQUFDYUFzREFBQUFBQUpyQ3dNQUFBQUFBbTRMXFxcbkF3QUFBQUFDY1FzREFBQUFBQUowQ3dNQUFBQUFBbmNMQXdBQUFBQUNlZ3NEQUFBQUFBSjlDd01BQUFBQUFvQUxBd0FBQUFBQ2d3c0RBQVxcXG5BQUFBS0dDd01BQUFBQUFva0xBd0FBQUFBQ2pBc0RBQUFBQUFLUEN3TUFBQUFBQXBJTEF3QUFBQUFDbFFzREFBQUFBQUtZQ3dNQUFBQUFcXFxuQXBzTEF3QUFBQUFDbmdzREFBQUFBQUtoQ3dNQUFBQUFBcVFMQXdBQUFBQUNwd3NEQUFBQUFBS3FDd01BQUFBQUFxMExBd0FBQUFBQ3NBXFxcbnNEQUFBQUFBS3pDd01BQUFBQUFyWUxBd0FBQUFBQ3VRc0RBQUFBQUFLOEN3TUFBQUFBQXI4TEF3QUFBQUFDd2dzREFBQUFBQUxGQ3dNQVxcXG5BQUFBQXNnTEF3QUFBQUFDeXdzREFBQUFBQUxPQ3dNQUFBQUFBdEVMQXdBQUFBQUMxQXNEQUFBQUFBTFhDd01BQUFBQUF0b0xBd0FBQUFcXFxuQUMzUXNEQUFBQUFBTGdDd01BQUFBQUF1TUxBd0FBQUFBQzVnc0RBQUFBQUFMcEN3TUFBQUFBQXV3TEF3QUFBQUFDN3dzREFBQUFBQUx5XFxcbkN3TUFBQUFBQXZVTEF3QUFBQUFIQUFBQUF2Z0xBd0FBQUFBQyt3c0RBQUFBQUFMK0N3TUFBQUFBQkFBQUFBY0FBQUFBQUFBQUJBQUFBQVxcXG5BQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUlCREFNSEFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFcXFxuQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFIQUFBQUFBXFxcbkFBQUFjQUFBQUVBQUFBQndBQUFBUUFBQUFIQUFBQUFnUU1Bd2NBQUFBQ0J3d0RCQUFBQUFJS0RBTUNEUXdEQWhBTUF3SVREQU1DRmd3RFxcXG5BaGtNQXdJY0RBTUNId3dEQWlJTUF3SWxEQU1DS0F3REFpc01Bd0l1REFNQ01Rd0RBalFNQXdJM0RBTUNPZ3dEQWowTUF3SkFEQU1DUXdcXFxud0RBa1lNQXdKSkRBTUNUQXdEQWs4TUF3SlNEQU1DVlF3REFsZ01Bd0piREFNQ1hnd0RBbUVNQXdKa0RBTUNad3dEQW1vTUF3SnREQU1DXFxcbmNBd0RBbk1NQXdKMkRBTUNlUXdEQW53TUF3Si9EQU1DZ2d3REFvVU1Bd0tJREFNQ2l3d0RBbzRNQXdLUkRBTUNsQXdEQXBjTUF3S2FEQVxcXG5NQ25Rd0RBcUFNQXdLakRBTUNwZ3dEQXFrTUF3S3NEQU1Dcnd3REFySU1Bd0sxREFNQ3VBd0RBcnNNQXdLK0RBTUN3UXdEQXNRTUF3TEhcXFxuREFNQ3lnd0RBczBNQXdMUURBTUMwd3dEQXRZTUF3TFpEQU1DM0F3REF0OE1Bd0xpREFNQzVRd0RBdWdNQXdMckRBTUM3Z3dEQXZFTUF3XFxcbkwwREFNQzl3d0RBdm9NQXdMOURBTUNBQTBEQWdNTkF3SUdEUU1DQ1EwREFnd05Bd0lQRFFNQ0VnMERBaFVOQXdJWURRTUNHdzBEQWg0TlxcXG5Bd0loRFFNQ0pBMERBaWNOQXdJcURRTUNMUTBEQWpBTkF3SXpEUU1DTmcwREFqa05Bd0k4RFFNQ1B3MERBa0lOQXdKRkRRTUNTQTBEQWtcXFxuc05Bd0pPRFFNQ1VRMERBbFFOQXdKWERRTUNXZzBEQWwwTkF3SmdEUU1DWXcwREFtWU5Bd0pwRFFNQ2JBMERBbThOQXdKeURRTUNkUTBEXFxcbkFuZ05Bd0o3RFFNQ2ZnMERBb0VOQXdLRURRTUNodzBEQW9vTkF3S05EUU1Da0EwREFwTU5Bd0tXRFFNQ21RMERBcHdOQXdLZkRRTUNvZ1xcXG4wREFxVU5Bd0tvRFFNQ3F3MERBcTROQXdLeERRTUN0QTBEQXJjTkF3SzZEUU1DdlEwREFzQU5Bd0xERFFNQ3hnMERBc2tOQXdMTURRTUNcXFxuencwREF0SU5Bd0xWRFFNQzJBMERBdHNOQXdMZURRTUM0UTBEQXVRTkF3TG5EUU1DNmcwREF1ME5Bd0x3RFFNQzh3MERBdllOQXdMNURRXFxcbk1DL0EwREF2OE5Bd0lDRGdNQ0JRNERBZ2dPQXdJTERnTUNEZzREQWhFT0F3SVVEZ01DRnc0REFob09Bd0lkRGdNQ0lBNERBaU1PQXdJbVxcXG5EZ01DS1E0REFpd09Bd0l2RGdNQ01nNERBalVPQXdJNERnTUNPdzREQWo0T0F3SkJEZ01DUkE0REFrY09Bd0pLRGdNQ1RRNERBbEFPQXdcXFxuSlREZ01DVmc0REFsa09Bd0pjRGdNQ1h3NERBbUlPQXdKbERnTUNhQTREQW1zT0F3SnVEZ01DY1E0REFuUU9Bd0ozRGdNQ2VnNERBbjBPXFxcbkF3S0FEZ01DZ3c0REFvWU9Bd0tKRGdNRUFBQUFCaG9BQVFjQUFBQUNqQTRCQndBQUFBQUFBQUFIQUFBQUFBQUFBQWNBQUFBQ2pRNERCd1xcXG5BQUFBSlBEQU1Da0E0REFwTU9Bd2NBQUFBQUFBQUFCd0FBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFHbGc0RUJwb09CQUFBQUFBQ25nNEdcXFxuQndBQUFBQUFBQUFDcEE0R0JBQUFBQUFBQUFBRUFBQUFBcW9PQXdLdERnTUNzQTREQXJNT0F3SzJEZ01DdVE0REFyd09Bd0svRGdNQ3dnXFxcbjREQXNVT0F3TElEZ01DeXc0REFzNE9Bd0xSRGdNQzFBNERBdGNPQXdMYURnTUMzUTREQXVBT0F3TGpEZ01DNWc0REF1a09Bd0xzRGdNQ1xcXG43dzREQXZJT0F3TDFEZ01DK0E0REF2c09Bd0wrRGdNQ0FROERBZ1FQQXdJSER3TUNDZzhEQWcwUEF3SVFEd01DRXc4REFoWVBBd0laRHdcXFxuTUNIQThEQWg4UEF3SWlEd01DSlE4REFpZ1BBd0lyRHdNQ0xnOERBakVQQXdJMER3TUNOdzhEQWpvUEF3STlEd01DUUE4REJBQUFBQUpEXFxcbkR3TUNSZzhEQWtrUEF3Sk1Ed01DVHc4REFsSVBBd0pWRHdNQ1dBOERBbHNQQXdKZUR3TUNZUThEQW1RUEF3Sm5Ed01DYWc4REFtMFBBd1xcXG5Kd0R3TUNjdzhEQW5ZUEF3SjVEd01DZkE4REFuOFBBd0tDRHdNQ2hROERBb2dQQXdLTER3TUNqZzhEQXBFUEF3S1VEd01DbHc4REFwb1BcXFxuQXdLZER3TUNvQThEQXFNUEF3S21Ed01DcVE4REFxd1BBd0t2RHdNQ3NnOERBclVQQXdLNER3TUN1dzhEQXI0UEF3UUFBQUFIQUFBQUFnXFxcbm9NQXdJY0RBTUN3UThEQXNRUEF3TEhEd01DeWc4REFzMFBBd0xRRHdNQ0Znd0RBdE1QQXdMV0R3TUMyUThEQXR3UEF3SWlEQU1BQUFBQVxcXG5Cd0FBQUFRQUFBQUFBQUFBQnQ4UEJRYmtEd1VHNlE4RkJ1NFBCUWJ6RHdVRytBOEZCdjBQQlFZQ0VBVUdCeEFGQmd3UUJRWVJFQVVHRmhcXFxuQUZCaHNRQlFZZ0VBVUdKUkFGQmlvUUJRWXZFQVVHTkJBRkJqa1FCUVkrRUFVR1F4QUZCa2dRQlFaTkVBVUdVaEFGQmxjUUJRWmNFQVVHXFxcbllSQUZCbVlRQlFackVBVUdjQkFJQm5nUUNBUUFBQUFHZ0JBRkJvVVFCUWFLRUFVR2p4QUZCcFFRQlFhWkVBVUduaEFGQnFNUUJRYW9FQVxcXG5VR3JSQUZCcklRQlFhM0VBVUd2QkFGQnNFUUJRYkdFQVVHeXhBRkJ0QVFCUWJWRUFVRzJoQUZCdDhRQlFia0VBVUc2UkFGQnU0UUJRYnpcXFxuRUFVRytCQUZCdjBRQlFZQ0VRVUdCeEVGQmd3UkJRWVJFUVVHRmhFRkJoc1JCUVlnRVFVR0pSRUZCaW9SQlFZdkVRVUNOQkVEQWpjUkF3XFxcbkxRREFNQ09oRURCd0FBQUFJOUVRTUNRQkVDQWtJUkFnSkVFUUlDUmhFQ0FrZ1JBZ0pLRVFJQ1RCRUNBazRSQWdKUUVRSUNVaEVDQWxRUlxcXG5BZ0pXRVFJQ1dCRUNBbG9SQWdKY0VRSUNxZzREQXJNT0F3SzhEZ01Dd2c0REF0b09Bd0xkRGdNQzVnNERBdXdPQXdMdkRnTUM5UTREQXZcXFxuZ09Bd0w3RGdNQy9nNERBZ0VQQXdKZUVRTUNZUkVEQW1RUkF3Sm5FUU1DYWhFREFtMFJBd0p3RVFNQ2N4RURBbllSQXdKNUVRTUNmQkVEXFxcbkFuOFJBd0tDRVFNQ2hSRURBb2dSQmdLT0VRWUNsQkVEQndBQUFBSUtEQU1DSEF3REFzRVBBd0xFRHdNQ2x4RURBcG9SQXdLZEVRTUNLd1xcXG53REFxQVJBd0pQREFNQzVRd0RBZ2tOQXdJR0RRTUM2QXdEQXZ3TkF3Sm5EQU1DM3d3REFxTVJBd0ttRVFNQ3FSRURBcXdSQXdLdkVRTUNcXFxuc2hFREFyVVJBd0s0RVFNQ3V4RURBcjRSQXdKNURBTUN3UkVEQXNRUkF3TEhFUU1DeWhFREFzMFJBd0xRRVFNQzB4RURBdFlSQXdMSER3XFxcbk1DeWc4REFzMFBBd0xaRVFNQzNCRURBdDhSQXdMaUVRTUM1UkVEQXVnUkF3THJFUU1DN2hFREF2RVJBd0wwRVFNQzl4RUNBdmtSQWdMN1xcXG5FUUlDL1JFQ0F2OFJBZ0lCRWdJQ0F4SUNBZ1VTQWdJSEVnSUNDUklDQWdzU0FnSU5FZ0lDRHhJQ0FoRVNBZ0lURWdJQ0ZSSUVBaGtTQkFcXFxuSWRFZ1FDSVJJRUFpVVNCQUlwRWdRQ0xSSUVBakVTQkFJMUVnUUNPUklGQWo0U0JRSkRFZ1VDU0JJQ0Frb1NBd0pORWdJQ1R4SURBbElTXFxcbkF3SlZFZ01DV0JJREFsc1NBd0plRWdNQ1lSSURBbVFTQXdKbkVnTUNhaElEQW0wU0F3SndFZ01DY3hJREFuWVNBd0o1RWdNQ2ZCSURBblxcXG44U0F3S0NFZ01DaFJJREFvZ1NBd0tMRWdNQ2poSURBcEVTQXdLVUVnTUNseElEQXBvU0F3S2RFZ01Db0JJREFxTVNBd0ttRWdNQ3FSSURcXFxuQXF3U0F3S3ZFZ01Dc2hJREFyVVNBd0s0RWdNQ3V4SURBcjRTQXdMQkVnTUN4QklEQXNjU0F3TEtFZ01DelJJREF0QVNBd0xURWdNQzFoXFxcbklEQXRrU0F3TGNFZ01DM3hJR0F1VVNEQUx4RWd3Qy9SSU1BZ2tUQ1FJU0V3d0NIaE1KQWljVENRSXdFdzhDUHhNTUFrc1RDUUpVRXdrQ1xcXG5YUk1KQW1ZVERBSnlFd3dDZmhNSkFvY1RDUUtRRXdZQ2xoTUpBcDhUREFLckV3d0N0eE1HQXIwVER3TE1FeElDM2hNUEF1MFRDUUwyRXdcXFxuOENCUlFQQWhRVURBSWdGQWtDS1JRSkFqSVVDUUk3RkF3Q1J4UVBBbFlVREFKaUZBa0NheFFKQW5RVUNRSjlGQVlDZ3hRR0Fva1VCZ0tQXFxcbkZBWUNsUlFKQXA0VUNRS25GQThDdGhRSkFyOFVEQUxMRkE4QzJoUUpBdU1VQmdMcEZBWUM3eFFQQXY0VURBSUtGUThDR1JVSkFpSVZEd1xcXG5JeEZRWUNOeFVKQWtBVkNRSkpGUWtDVWhVSkFsc1ZDUUprRlF3Q2NCVUpBbmtWQmdKL0ZRa0NpQlVKQXBFVkNRS2FGUXdDcGhVSkFxOFZcXFxuQ1FLNEZRa0N3UlVQQXRBVkRBTGNGUVlDNGhVUEF2RVZCZ0wzRlF3Q0F4WU1BZzhXQ1FJWUZna0NJUllKQWlvV0RBSTJGZ1lDUEJZSkFrXFxcblVXREFKUkZnWUNWeFlQQW1ZV0NRSnZGZ1FDY3hZRUFuY1dCQUo3RmdRQ2Z4WUVBb01XQkFLSEZnUUNpeFlFQW84V0JBS1RGZ1FDbHhZRlxcXG5BcHdXQlFLaEZnVUNwaFlGQXFzV0JRS3dGZ1VDdFJZRkFyb1dCUUsvRmdVQ3hCWUZBc2tXQlFMT0ZnVUMweFlGQXRnV0JRTGRGZ1VDNGhcXFxuWURBdVVXQWdMbkZnSUM2UllEQXV3V0FnTHVGZ0lDOEJZQ0F2SVdBd0wxRmdNQytCWUNBdm9XQmdJQUZ3WUNCaGNHQWd3WEJnSVNGd3dDXFxcbkhoY0NBaUFYQWdJaUZ3TUNKUmNDQWljWEFnSXBGd0lDS3hjQ0FpMFhBZ0l2RndNQ01oY0VBallYQWdJNEZ3SUNPaGNEQWowWEF3SkFGd1xcXG5JQ1FoY0NBa1FYQWdKR0Z3TUNTUmNEQWt3WEF3SlBGd01DVWhjREFsVVhBZ0pYRndJQ1dSY0NBbHNYQWdKZEZ3SUNYeGNEQW1JWEFnSmtcXFxuRndJQ1poY0NBbWdYQXdKckZ3TUNiaGNDQW5BWEF3SnpGd01DZGhjREFua1hBZ0o3RndNQ2ZoY0ZBb01YQmdJZUZ3SUNpUmNEQW93WEF3XFxcbktQRndNQ2toY0RBcFVYQndLY0Z3Z0NwQmNDQXFZWEFnS29Gd01DcXhjQ0FxMFhBZ0t2RndJQ3NSY0RBclFYQWdLMkZ3SUN0QmNDQXJnWFxcXG5BZ0s2RndJQ3ZCY0RBcjhYQWdMQkZ3SUN2eGNDQXNNWEF3TEdGd01FQUFBQUFza1hBZ0xMRndJQ3pSY0NBczhYQmdRQUFBQUMxUmNDQXRcXFxuY1hBZ0xaRndJQzJ4Y0NBdDBYQWdMZkZ3SUNaaGNDQXVFWEFnTGpGd0lDNVJjQ0F1Y1hBd0xxRndJQ0t4Y0NBdXdYQXdMdkZ3TUM4aGNDXFxcbkJBQUFBQUwwRndNQzl4Y0NBdmtYQWdMN0Z3SUMvUmNDQXY4WEJRSUVHQVVDQ1JnRUFnMFlCQUlSR0FRQ0ZSZ0VBaGtZQkFJZEdBUUNJUlxcXG5nRUFpVVlCQUlwR0FRQ0xSZ0ZBaklZQlFJM0dBVUNQQmdGQWtFWUJRSkdHQVVDU3hnRkFsQVlCUUpWR0FVQ1doZ0ZBbDhZQlFKa0dBVUNcXFxuYVJnRkFtNFlCUUp6R0FVQ2VCZ0ZBbjBZQlFLQ0dBVUNoeGdGQW93WUJRS1JHQVVDbGhnRkFwc1lBd0FBQUFBSEFBQUFBQUFBQUFRQUFBXFxcbkFBQUFBQUJBQUFBQWNBQUFBRUFBQUFBQUFBQUFjQUFBQUFBQUFBQndBQUFBQUFBQUFFQUFBQUFwNFlBd0FBQUFBQ29SZ0RBQUFBQUFLa1xcXG5HQU1BQUFBQUFxY1lBd0FBQUFBQ3FoZ0RBQUFBQUFJU0JRTUFBQUFBQXEwWUF3QUFBQUFDc0JnREFBQUFBQUt6R0FNQUFBQUFBcllZQXdcXFxuQUFBQUFDdVJnREFBQUFBQUs4R0FNQUFBQUFBcjhZQXdBQUFBQUN3aGdEQUFBQUFBTEZHQU1BQUFBQUFzZ1lBd0FBQUFBQ3l4Z0RBQUFBXFxcbkFBTE9HQU1BQUFBQUF0RVlBd0FBQUFBQzFCZ0RBQUFBQUFMWEdBTUFBQUFBQXRvWUF3QUFBQUFDM1JnREFBQUFBQWNBQUFBQUFBQUFCd1xcXG5BQUFBQUFBQUFDNEJnREFBQUFBQUxqR0FNQUFBQUFBdVlZQXdBQUFBQUM2UmdEQUFBQUFBTHNHQU1BQUFBQUF1OFlBd0FBQUFBQzhoZ0RcXFxuQUFBQUFBTDFHQU1BQUFBQUF2Z1lBd0FBQUFBQyt4Z0RBQUFBQUFMK0dBTUFBQUFBQWdFWkF3QUFBQUFDQkJrREFBQUFBQUlIR1FNQUFBXFxcbkFBQXNBQ0FnTEVBZ0lBQUFBQUJ3QUFBQUFBQUFBSEFBQUFCQUFBQUFjQUFBQUFBQUFBQndBQUFBSUtHUU1BQUFBQUFnMFpBd0FBQUFBQ1xcXG5FQmtEQUFBQUFBSVRHUU1BQUFBQUFoWVpBd0FBQUFBQ0dSa0RBQUFBQUFJY0dRTUFBQUFBQWg4WkF3QUFBQUFDSWhrREFBQUFBQUlsR1FcXFxuTUFBQUFBQWlnWkF3QUFBQUFDS3hrREFBQUFBQUl1R1FNQUFBQUFBakVaQXdBQUFBQUNOQmtEQUFBQUFBSTNHUU1BQUFBQUFqb1pBd0FBXFxcbkFBQUNQUmtEQUFBQUFBSkFHUU1BQUFBQUFrTVpBd0FBQUFBQ1Joa0RBQUFBQUFKSkdRTUFBQUFBQWt3WkF3QUFBQUFDVHhrREFBQUFBQVxcXG5KU0dRTUFBQUFBQWxVWkF3QUFBQUFDV0JrREFBQUFBQUpiR1FNQUFBQUFBbDRaQXdBQUFBQUNZUmtEQUFBQUFBSmtHUU1BQUFBQUFtY1pcXFxuQXdBQUFBQUNhaGtEQUFBQUFBSnRHUU1BQUFBQUFuQVpBd0FBQUFBQ2N4a0RBQUFBQUFKMkdRTUFBQUFBQW5rWkF3QUFBQUFDZVJrREFBXFxcbkFBQUFKOEdRTUFBQUFBQW44WkF3QUFBQUFDZ2hrREFvVVpBd0FBQUFBQ2lCa0RBQUFBQUFLTEdRTUFBQUFBQW80WkF3QUFBQUFDa1JrRFxcXG5BQUFBQUFjQUFBQUNsQmtEQUFBQUFBSzVCUUlBQUFBQUFwY1pBd0FBQUFBQ21oa0RBQUFBQUFLZEdRTUFBQUFBQXFBWkF3QUFBQUFDb3hcXFxua0RBQUFBQUFLbUdRTUFBQUFBQXFrWkF3QUFBQUFDckJrREFBQUFBQUt2R1FNQUFBQUFBcklaQXdBQUFBQUN0UmtEQUFBQUFBSzRHUU1BXFxcbkFBQUFBczBCQWdLakJRSUN0d1VDQXJzWkFnSzdCUUlBQUFBQUFyMFpBZ0svR1FJQ3dBVUNBc0VaQXdMRUdRTUFBQUFBQXNjWkF3QUFBQVxcXG5BQ3loa0RBQUFBQUFMTkdRTUFBQUFBQXRBWkF3QUFBQUFDMHhrREFBQUFBQVFBQUFBQzFoa0RBQUFBQUFMWkdRTUMwd1VDQXR3WkF3TGZcXFxuR1FNQUFBQUFBdUlaQXdBQUFBQUVBQUFBQXVVWkF3QUFBQUFDbndBQ0FzNEFBZ0FBQUFBSEFBQUFBQUFBQUFRQUFBQUhBQUFBQkFBQUFBXFxcbkFBQUFBSEFBQUFCQUFBQUFBQUFBQUVBQUFBQndBQUFBQUFBQUFFQUFBQUFBQUFBQWNBQUFBQUFBQUFCd0FBQUFBQUFBQUhBQUFBQUFBQVxcXG5BQVFBQUFBSEFBQUFCQUFBQUFBQUFBQUhBQUFBQkFBQUFBQUFBQUFFQUFBQUJ3QUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFcXFxuQUFBQUFBQUFBRUFBQUFCd0FBQUFBQUFBQUhBQUFBQUFBQUFBUUFBQUFBQUFBQUJ3QUFBQUFBQUFBSEFBQUFBQUFBQUFRQUFBQUFBQUFBXFxcbkJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQWNBQUFBQ0VCa0RBdWdaQXdKSUN3SUM2eFxcXG5rREFBQUFBQUx1R1FJSEFBQUFCQUFBQUFMd0dRTUM4eGtEQXZZWkF3TDVHUU1DL0JrREF2OFpBd0lDR2dNQ0JSb0RBZ2dhQXdJTEdnTUNcXFxuRGhvREFoRWFBd0lVR2dNQ0Z4b0RBaG9hQXdJZEdnTUNJQm9EQWlNYUF3SW1HZ01DS1JvREFpd2FBd0l2R2dNQ01ob0RBalVhQXdJNEdnXFxcbk1DT3hvREFqNGFBd0pCR2dNQ1JCb0RBa2NhQXdKS0dnTUNUUm9EQWxBYUF3SlRHZ01DVmhvREFsa2FBd0pjR2dNQ1h4b0RBbUlhQXdKbFxcXG5HZ01DYUJvREFtc2FBd0p1R2dNQ2NSb0RBblFhQXdKM0dnTUNlaG9EQW4wYUF3S0FHZ01DZ3hvREFvWWFBd0tKR2dNQ2pCb0RBbzhhQXdcXFxuS1NHZ01DbFJvREFwZ2FBd0tiR2dNQ25ob0RBcUVhQXdLa0dnTUNweG9EQXFvYUF3S3RHZ01Dc0JvREFyTWFBd0syR2dNQ3VSb0RBcndhXFxcbkF3Sy9HZ01Dd2hvREFzVWFBd0xJR2dNQ3l4b0RBczRhQXdMUkdnTUMxQm9EQXRjYUF3TGFHZ01DM1JvREFBQUFBQWNBQUFBQUFBQUFCQVxcXG5BQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBSEFBQUFCQUFBQUFjQUFBQUVBQUFBQXVBYUF3TGpHZ01DNUEwREF1WWFBd0xwR2dNQzdCb0RcXFxuQXU4YUF3S0dEZ01DOGhvREF2d05Bd0wxR2dNQytCb0RBdnNhQXdMK0dnTUNBUnNEQWdRYkF3SUhHd01DQ2hzREFnMGJBd0lRR3dNQ0V4XFxcbnNEQWhZYkF3SVpHd01DSEJzREFoOGJBd0lpR3dNQ0pSc0RBaWdiQXdJckd3TUNMaHNEQWpFYkF3STBHd01DTnhzREFqb2JBd0k5R3dNQ1xcXG5RQnNEQWtNYkF3SkdHd01DU1JzREFrd2JBd0pQR3dNQ1Voc0RBbFViQXdKWUd3TUNXeHNEQWw0YkF3SmhHd01DWkJzREFtY2JBd0pxR3dcXFxuTUNiUnNEQW40TkF3SndHd01DY3hzREFuWWJBd0o1R3dNQ2ZCc0RBbjhiQXdLQ0d3TUNoUnNEQW9nYkF3S0xHd01DamhzREFsa09Bd0tSXFxcbkd3TUNsQnNEQXBjYkF3S2FHd01DblJzREFxQWJBd0tqR3dNQ3Boc0RBcWtiQXdLc0d3TUNyeHNEQXJJYkF3SzFHd01DdUJzREFyc2JBd1xcXG5LK0d3TUN3UnNEQXNRYkF3TEhHd01DeWhzREFzMGJBd0xRR3dNQzB4c0RBdFliQXdMWkd3TUMzQnNEQXQ4YkF3SVFHd01DNGhzREF1VWJcXFxuQXdMb0d3TUM2eHNEQXU0YkF3THhHd01DOUJzREF2Y2JBd0w2R3dNQy9Sc0RBZ0FjQXdJREhBTUNCaHdEQWdrY0F3SU1IQU1DRHh3REFoXFxcbkljQXdJVkhBTUNHQndEQWhzY0F3THFEUU1DSGh3REFpRWNBd0lrSEFNQ0p4d0RBaW9jQXdJdEhBTUNNQndEQWpNY0F3STJIQU1DT1J3RFxcXG5BandjQXdJL0hBTUNRaHdEQWtVY0F3SklIQU1DZVF3REFrc2NBd0pPSEFNQ1VSd0RBbFFjQXdKWEhBTUNXaHdEQWwwY0F3SmdIQU1DUUFcXFxud0RBbU1jQXdKbUhBTUNhUndEQW13Y0F3SnZIQU1DY2h3REFuVWNBd0o0SEFNQ2V4d0RBbjRjQXdLQkhBTUNoQndEQW9jY0F3S0tIQU1DXFxcbmpSd0RBcEFjQXdLVEhBTUNsaHdEQXBrY0F3S2NIQU1Dbnh3REFxSWNBd0lZSEFNQ3BSd0RBcWdjQXdLckhBTUNyaHdEQXJFY0F3SzBIQVxcXG5NQ3R4d0RBcm9jQXdMb0d3TUN2UndEQXNBY0F3TERIQU1DeGh3REFza2NBd0xNSEFNQ3p4d0RBdEljQXdMVkhBTUMyQndEQXRzY0F3TGVcXFxuSEFNQzRSd0RBdVFjQXdMbkhBTUM2aHdEQXUwY0F3THdIQU1DOHh3REF2WWNBd0lRR3dNQytSd0RBdndjQXdML0hBTUNBaDBEQW9NT0F3XFxcbklGSFFNQ0NCMERBZ3NkQXdJT0hRTUNFUjBEQWhRZEF3SVhIUU1DR2gwREFoMGRBd0lnSFFNQ0l4MERBaVlkQXdLYUVRTUNLUjBEQWl3ZFxcXG5Bd0l2SFFNQ01oMERBalVkQXdJNEhRTUNPeDBEQWo0ZEF3SkJIUU1DN2hzREFrUWRBd0pISFFNQ1NoMERBazBkQXdKUUhRTUNVeDBEQWxcXFxuWWRBd0paSFFNQ1hCMERBbDhkQXdKaUhRTUNaUjBEQW1nZEF3TDVEUU1DYXgwREFtNGRBd0p4SFFNQ2RCMERBbmNkQXdKNkhRTUNmUjBEXFxcbkFvQWRBd0tESFFNQ2hoMERBb2tkQXdLTUhRTUNqeDBEQW1ZTkF3S1NIUU1DbFIwREFwZ2RBd0tiSFFNQ25oMERBcUVkQXdLa0hRTUNweFxcXG4wREFxb2RBd0t0SFFNQ3NCMERBck1kQXdLMkhRTUN1UjBEQXJ3ZEF3Sy9IUU1DdHcwREFzSWRBd0xBRFFNQ3hSMERBc2dkQXdMTEhRTUFcXFxuQUFBQUFzNGRBd0FBQUFBQzBSMERBQUFBQUFMVUhRTUMxeDBEQXRvZEF3TGRIUU1DNEIwREF1TWRBd0xtSFFNQzZSMERBdXdkQXdKN0RRXFxcbk1BQUFBQUF1OGRBd0FBQUFBQzhoMERBQUFBQUFMMUhRTUMrQjBEQUFBQUFBTDdIUU1DL2gwREFnRWVBd0lFSGdNQ0J4NERBZ29lQXdJTlxcXG5IZ01DRUI0REFoTWVBd0lXSGdNQ0dSNERBaHdlQXdJZkhnTUNJaDREQWlVZUF3SW9IZ01DS3g0REFpNGVBd0tPREFNQ01SNERBalFlQXdcXFxuSTNIZ01DT2g0REFqMGVBd0pBSGdNQ1F4NERBa1llQXdKSkhnTUNUQjREQWs4ZUF3SlNIZ01DVlI0REFsZ2VBd0piSGdNQ3FSRURBbDRlXFxcbkF3SmhIZ01DWkI0REFtY2VBd0sxRVFNQ2FoNERBbTBlQXdKd0hnTUNjeDREQW5ZZUF3S0VIQU1DZVI0REFud2VBd0ovSGdNQ2doNERBb1xcXG5VZUF3S0lIZ01DaXg0REFvNGVBd0tSSGdNQ2xCNERBcGNlQXdLYUhnTUNuUjREQXFBZUF3TDFIUU1Db3g0REFxWWVBd0twSGdNQ3JCNERcXFxuQXE4ZUJBS3pIZ01FQUFBQUFyWWVBd0s1SGdNQ3ZCNERBcjhlQXdMQ0hnTUN4UjREQXNnZUF3TExIZ01DSHg0REFzNGVBd0xSSGdNQzFCXFxcbjREQXM0ZEF3TFhIZ01DMmg0REF0MGVBd0xnSGdNQzR4NERBdVllQXdMcEhnTUM3QjREQXU4ZUF3THlIZ01DOVI0REF2Z2VBd0kzSGdNQ1xcXG4reDREQWpvZUF3TCtIZ01DQVI4REFnUWZBd0lISHdNQ0NoOERBdEVkQXdKUEd3TUNEUjhEQWhBZkF3THhEQU1DR3h3REFoUWRBd0lUSHdcXFxuTUNGaDhEQWs4ZUF3SVpId01DVWg0REFod2ZBd0lmSHdNQ0loOERBdGNkQXdJbEh3TUNLQjhEQWlzZkF3SXVId01DTVI4REF0b2RBd0kwXFxcbkh3TUNOeDhEQWpvZkF3STlId01DUUI4REFrTWZBd0oySGdNQ1JoOERBa2tmQXdLRUhBTUNUQjhEQW9JZUF3SlBId01DVWg4REFsVWZBd1xcXG5KWUh3TUNXeDhEQXBFZUF3SmVId01DOGgwREFtRWZBd0tVSGdNQzRoc0RBbVFmQXdLWEhnTUNaeDhEQXAwZUF3SnFId01DYlI4REFuQWZcXFxuQXdKekh3TUNkaDhEQXFNZUF3THBIUU1DZVI4REFxWWVBd0o4SHdNQ3FSNERBbjhmQXdLR0RnTUNnaDhFQW9ZZkJBS0tId1FDamg4REFwXFxcbkVmQXdLVUh3TUNseDhFQXBzZkJBS2ZId1FDb3g4REFxWWZBd1FBQUFBQ3FSOENBcXNmQWdLdEh3SUNyeDhEQXJJZkF3SzFId0lFQUFBQVxcXG5BcmNmQkFLN0h3UUN2eDhFQXNNZkJBTEhId1FFQUFBQUFzc2ZCQUFBQUFBQ3p4OEVBdE1mQWdKV0NRSUNYQWtDQXRVZkFnTFhId0lDMlJcXFxuOENBdHNmQWdMZEh3SUMzeDhDQmpJSkFRTGhId1FDNVI4RUF1a2ZCZ0x2SHdZQzlSOEVBdmtmQkFMOUh3UUNBU0FFQWdVZ0JBSUpJQVFDXFxcbkRTQUVBaEVnQkFJVklBUUVBQUFBQWhrZ0JBSWRJQVFDSVNBRUFpVWdCQUlwSUFRRUFBQUFBaTBnQkFRQUFBQUNNU0FFQWpVZ0JBUUFBQVxcXG5BQ09TQUVBajBnQkFRQUFBQUNRU0FFQWtVZ0JBSkpJQVFDVFNBRUFsRWdCQUpWSUFRQ1dTQUVBbDBnQkFKaElBUUNaU0FFQW1rZ0FnSnJcXFxuSUFJQ2JTQUNBbThnQWdKeElBSUNjeUFDQW5VZ0FnSjNJQUlDZVNBQ0Fuc2dBZ0o5SUFJQ2Z5QUNBb0VnQWdLRElBSUNoU0FDQW9jZ0FnXFxcbktKSUFJQ2l5QUNBbzBnQWdLUElBSUNrU0FDQXBNZ0FnS1ZJQUlDbHlBQ0Fwa2dBZ0tiSUFJQ25TQUNBcDhnQWdLaElBSUNveUFDQndBQVxcXG5BQVFBQUFBQ3BTQUNBcWNnQWdLcElBSUNxeUFDQXVvREJBS3RJQUlDcnlBQ0FyRWdBZ0t6SUFJQ3RTQUNBcmNnQkFLN0lBUUN2eUFFQXNcXFxuTWdCQUxISUFRQ3l5QUVBczhnQkFMVElBUUMxeUFDQXRrZ0JBTGRJQVFDNFNBRUF0TWdCQUxsSUFRQzZTQUVBdTBnQkFMeElBUUM5U0FFXFxcbkF2a2dCQUw5SUFRQ0FTRUVBZ1VoQkFJSklRUUNEU0VFQWhFaEJBSVZJUVFDR1NFRUFoMGhCQUloSVFRQ0pTRUVBaWtoQkFJdElRUUNNU1xcXG5FRUFqVWhCQUk1SVFRQ1BTRUVBa0VoQkFKRklRUUNTU0VFQWswaEJBSlJJUVFDVlNFRUFsa2hCQUpkSVFRQ1lTRUVBbVVoQkFKcElRUUNcXFxuYlNFRUFuRWhCQUoxSVFRQ2VTRUVBbjBoQkFLQklRUUNoU0VFQW9raEJBS05JUVFDa1NFRUFwVWhCQUtaSVFRQ25TRUVBcUVoQkFLbElRXFxcblFDcVNFRUFxMGhCQUt4SVFRQ3RTRUVBcmtoQkFLOUlRUUN3U0VFQXNVaEJBTEpJUVFDelNFRUF0RWhCQUxWSVFRQzJTRUVBdDBoQkFMaFxcXG5JUVFDNVNFRUF1a2hCQUx0SVFRQzhTRUVBdlVoQkFMNUlRUUMvU0VFQWdFaUJBSUZJZ1FDQ1NJRUFnMGlCQUlSSWdRQ0ZTSUVBaGtpQkFcXFxuSWRJZ1FDSVNJRUFpVWlCQUlwSWdRQ0xTSUVBakVpQkFJMUlnUUNPU0lFQWowaUJBSkJJZ1FDUlNJRUFra2lCQVpOSWdVR1VpSUZCbGNpXFxcbkJRWmNJZ1VHWVNJRkJtWWlCUUpySWdRQ2J5SUVBdUVnQkFKeklnUUMweUFFQXVVZ0JBSjNJZ1FDZXlJRUF2VWdCQUovSWdRQytTQUVBdlxcXG4wZ0JBS0RJZ1FDaHlJRUFnMGhCQUtMSWdRQ0VTRUVBaFVoQkFLUElnUUNreUlFQWgwaEJBS1hJZ1FDSVNFRUFpVWhCQUtaSVFRQ25TRUVcXFxuQXFraEJBS3RJUVFDc1NFRUFzRWhCQUxGSVFRQ3lTRUVBczBoQkFMZElRUUM0U0VFQXVVaEJBS2JJZ1FDOVNFRUFwOGlCQUtqSWdRQ0RTXFxcbklFQXFjaUJBSVJJZ1FDRlNJRUFra2lCQUtySWdRQ3J5SUVBalVpQkFLeklnUUNPU0lFQWowaUJBTFpJQVFDM1NBRUFyY2lCQUxoSUFRQ1xcXG51eUlFQXVrZ0JBTHRJQVFDOFNBRUF2VWdCQUsvSWdRQ0FTRUVBZ1VoQkFJSklRUUNEU0VFQXNNaUJBSWRJUVFDS1NFRUFpMGhCQUl4SVFcXFxuUUNOU0VFQWpraEJBSkJJUVFDUlNFRUFra2hCQUpOSVFRQ1VTRUVBbFVoQkFMSElnUUNXU0VFQWwwaEJBSmhJUVFDWlNFRUFta2hCQUp0XFxcbklRUUNkU0VFQW5raEJBSjlJUVFDZ1NFRUFvVWhCQUtKSVFRQ2pTRUVBcEVoQkFLVklRUUNvU0VFQXFVaEJBSzFJUVFDdVNFRUFyMGhCQVxcXG5MQklRUUN4U0VFQXRFaEJBTFZJUVFDMlNFRUF0MGhCQUxMSWdRQzZTRUVBdTBoQkFMeElRUUM5U0VFQWdFaUJBSUZJZ1FDQ1NJRUFnMGlcXFxuQkFMUElnUUNHU0lFQWgwaUJBTFRJZ1FDS1NJRUFpMGlCQUl4SWdRQ05TSUVBdGNpQkFMaElBUUN1eUlFQXZVZ0JBSy9JZ1FDRFNFRUFzXFxcbk1pQkFJZElRUUMyeUlFQWxFaEJBTGZJZ1FDNHlJRUF1Y2lCQUxCSVFRQ3hTRUVBdDBoQkFJTklnUUN6eUlFQWpVaUJBTFhJZ1FDNnlJR1xcXG5BdkVpQmdMM0lnWUMvU0lFQWdFakJBSUZJd1FDQ1NNRUFnMGpCQUlSSXdRQ0ZTTUVBaGtqQkFJZEl3UUNJU01FQWlVakJBSXBJd1FDTFNcXFxuTUVBakVqQkFJMUl3UUNPU01FQWowakJBSkJJd1FDUlNNRUFra2pCQUpOSXdRQ1VTTUVBbFVqQkFMaklnUUNXU01FQWwwakJBSmhJd1FDXFxcblpTTUVBdjBpQkFJQkl3UUNCU01FQWdrakJBSU5Jd1FDRVNNRUFoVWpCQUlaSXdRQ0hTTUVBaUVqQkFJbEl3UUNLU01FQWkwakJBSXhJd1xcXG5RQ05TTUVBamtqQkFJOUl3UUNRU01FQWtVakJBSkpJd1FDVFNNRUFsRWpCQUpWSXdRQzR5SUVBbGtqQkFKZEl3UUNZU01FQW1VakJBSk5cXFxuSXdRQ1VTTUVBbFVqQkFMaklnUUMzeUlFQXVjaUJBSnhJUVFDUlNFRUFra2hCQUpOSVFRQ1RTTUVBbEVqQkFKVkl3UUNjU0VFQW5VaEJBXFxcbkpwSXdRSEFBQUFCQUFBQUFKdEl3WUNjeU1HQW5rakJnSi9Jd1lDaFNNR0Fvc2pCZ0tSSXdZQ2x5TUdBcDBqQmdLakl3WUNxU01HQXE4alxcXG5CZ0sxSXdZQ3V5TUdBc0VqQmdMSEl3WUN6U01HQXRNakJnTFpJd1lDM3lNR0F1VWpCZ0xySXdZQzhTTUdBdmNqQmdMOUl3WUNBeVFHQWdcXFxua2tCZ0lQSkFZQ0ZTUUdBaHNrQmdJaEpBWUNKeVFHQWkwa0JnSXpKQVlDT1NRR0FqOGtCZ0pGSkFZQ1N5UUdBbEVrQmdKWEpBWUNYU1FHXFxcbkFtTWtCZ0pwSkFZQ2J5UUdBblVrQmdKN0pBWUNnU1FHQW9ja0JnS05KQVlFQUFBQUFwTWtCZ0taSkFZQ255UUdBcVVrQmdLckpBWUNzU1xcXG5RR0FyY2tCZ0s5SkFZQ3d5UUdBc2trQmdMUEpBWUMxU1FHQXRza0JnTGhKQVlDNXlRR0F1MGtCZ0x6SkFZQytTUUdBdjhrQmdJRkpRWUNcXFxuQ3lVR0FoRWxCZ0lYSlFZQ0hTVUdBaU1sQmdJcEpRWUNMeVVHQWpVbEJnSTdKUVlDUVNVR0FrY2xCZ0pOSlFZQ09TUUdBa1VrQmdKVEpRXFxcbllDV1NVR0FsOGxCZ0psSlFZQ2F5VUdBbkVsQmdKckpRWUNYeVVHQW5jbEJnSjlKUVlDZ3lVR0Fva2xCZ0tQSlFZQ2NTVUdBZzhrQmdMVFxcXG5Jd1lDbFNVR0Fwc2xCZ1FBQUFBQ29TVUdBcWNsQmdLdEpRZ0N0U1VJQXIwbENBTEZKUWdDelNVSUF0VWxDQUxkSlFnQzVTVUdCdXNsSVFcXFxuWU1KZzhDR3lZSUJ3QUFBQVFBQUFBQkFBQUFCaU1tQVFJa0pnTUVBQUFBQmljbUFRWUFBZ0VHS0NZQkJpa21BUUlxSmdNQ0xTWURCQUFBXFxcbkFBQUFBQUFFQUFBQUFqQW1Bd0l6SmdNR05pWUJCamNKQVFZNENRRUdOeVlCQmpnbUFRSTVKZ01DUENZREFqOG1Bd0pDSmdNQ1JTWURBa1xcXG5nbUF3THVDUU1DOFFrREFrc21Bd0pPSmdNQ1VTWURBbFFtQXdjQUFBQUdWeVlCQmxnbUFRWVdDUU1HTmlZQkJpTW1BUUlrSmdNRUFBQUFcXFxuQmdBQ0FRWW5KZ0VHS1NZQkJpZ21BUUl3SmdNR053a0JCamdKQVFZM0pnRUdPQ1lCQWprbUF3SThKZ01HV1NZQkJsb21BUVpiSmdFR01nXFxcbmtCQWx3bUFRWmRKZ0VHWGlZQkJqWUpBUVFBQUFBR1h5WUJCbUFtQVFaaEpnRUdZaVlCQkFBQUFBWmpKZ01DWmlZRUJtb21Bd0FBQUFBR1xcXG5iU1lEQkFBQUFBWndKZ01DY3lZRUJuY21Bd0o2SmdRR2ZpWURBb0VtQkFhRkpnTUNpQ1lFQm93bUF3S1BKZ1FDa3lZQ0FwVW1BZ0tYSmdcXFxuSUNtU1lDQXBzbUFnS2RKZ0lDbnlZQ0FxRW1BZ0tqSmdJQ3BTWUNBcWNtQWdLcEpnSUNxeVlDQXEwbUFnS3ZKZ0lDc1NZQ0FyTW1BZ0sxXFxcbkpnSUN0eVlDQXJrbUFnSzdKZ0lDdlNZQ0FyOG1BZ0xCSmdJQ3d5WUNBc1VtQWdMSEpnSUN5U1lDQXNzbUFnTE5KZ0lDenlZQ0F0RW1BZ1xcXG5MVEpnSUMxU1lDQXJVZ0FnTFhKZ0lDMlNZRUF0MG1CQUxoSmdRQzVTWUVCQUFBQUFFQUFBQUVBQUFBQmlnbUFRYnBKZ0VHV1NZQkJtQW1cXFxuQVFaaEpnRUdXaVlCQnVvbUFRWTNDUUVHT0FrQkJsc21BUVl5Q1FFR0l5WUJBbHdtQVFLTURnRUc2eVlCQWlzSkFRSXJBQUVDSVFBQkFpXFxcbklBQVFJc0NRRUNMUWtCQWk0SkFRSXZDUUVDTUFrQkFqRUpBUVluSmdFR0FBSUJCbDBtQVFZMkNRRUdYaVlCQmlrbUFRWmlKZ0VDQUFBQlxcXG5BZ0VBQVFJQ0FBRUNBd0FCQWdRQUFRSUZBQUVDQmdBQkFnY0FBUUlJQUFFQ0NRQUJBZ29BQVFJTEFBRUNEQUFCQWcwQUFRSU9BQUVDRHdcXFxuQUJBaEFBQVFJUkFBRUNFZ0FCQWhNQUFRSVVBQUVDRlFBQkFoWUFBUUlYQUFFQ0dBQUJBaGtBQVFaWEpnRUdYeVlCQmxnbUFRYnNKZ0VHXFxcbk5pWUJCdFFJQVFJQUFBRUNBUUFCQWdJQUFRSURBQUVDQkFBQkFnVUFBUUlHQUFFQ0J3QUJBZ2dBQVFJSkFBRUNDZ0FCQWdzQUFRSU1BQVxcXG5FQ0RRQUJBZzRBQVFJUEFBRUNFQUFCQWhFQUFRSVNBQUVDRXdBQkFoUUFBUUlWQUFFQ0ZnQUJBaGNBQVFJWUFBRUNHUUFCQmpjbUFRYnRcXFxuSmdFR09DWUJCdTRtQVFMdkpnTUM4aVlEQW93T0FRSkxKZ01DVGlZREFpUW1Bd0wxSmdNQzNCSURBdmdtQXdMN0pnTUMvaVlEQWdFbkF3XFxcbklFSndNQ0J5Y0RBZ29uQXdJTkp3TUNFQ2NEQWhNbkF3SlNFZ01DVlJJREFsZ1NBd0piRWdNQ1hoSURBbUVTQXdKa0VnTUNaeElEQW1vU1xcXG5Bd0p0RWdNQ2NCSURBbk1TQXdKMkVnTUNlUklEQW53U0F3Si9FZ01DZ2hJREFvVVNBd0tJRWdNQ2l4SURBbzRTQXdLUkVnTUNsQklEQXBcXFxuY1NBd0thRWdNQ25SSURBcUFTQXdLakVnTUNwaElEQXFrU0F3S3NFZ01DcnhJREFySVNBd0sxRWdNQ3VCSURBcnNTQXdLK0VnTUN3UklEXFxcbkFzUVNBd0xIRWdNQ3loSURBczBTQXdMUUVnTUMweElEQWhZbkF3SVpKd01DSENjREJBQUFBQUtxRGdNQ3JRNERBckFPQXdLekRnTUN0Z1xcXG40REFya09Bd0s4RGdNQ3Z3NERBc0lPQXdMRkRnTUN5QTREQXNzT0F3TE9EZ01DMFE0REF0UU9Bd0xYRGdNQzJnNERBdDBPQXdMZ0RnTUNcXFxuNHc0REF1WU9Bd0xwRGdNQzdBNERBdThPQXdMeURnTUM5UTREQXZnT0F3TDdEZ01DL2c0REFnRVBBd1FBQUFBQ0JBOERBZ2NQQXdJS0R3XFxcbk1DRFE4REFoQVBBd0lURHdNRUFBQUFBaFlQQXdJWkR3TUNIQThEQWg4UEF3SWlEd01DSlE4REJBQUFBQUlvRHdNQ0t3OERBaTRQQXdJeFxcXG5Ed01DTkE4REFqY1BBd1FBQUFBQ09nOERBajBQQXdKQUR3TUVBQUFBQWg4bkFnSWhKd0lDSXljQ0JoNEFBd0lsSndJQ0p5Y0NBaWtuQXdcXFxuUUFBQUFDTENjREFpOG5Bd0l5SndNQ05TY0RBamduQXdJN0p3TUNQaWNEQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBXFxcbkFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQndBQUFBUUFBQUFIQUFBQUJBQUFBQWNBQUFBRUFBQUFCd1xcXG5BQUFBUUFBQUFIQUFBQUJBQUFBQWNBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJ3QUFBQVFBQUFBQUFBQUFcXFxuQndBQUFBUUFBQUFBQUFBQUJ3QUFBQUFBQUFBSEFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFIQUFBQUFBQUFBQVFBQUFBQUFBXFxcbkFBQndBQUFBUUFBQUFDUVNjRUFrVW5CQUpKSndRQ1RTY0VBbEVuQkFKVkp3UUNXU2NFQWwwbkJBSmhKd1FDWlNjRUFta25CQUp0SndRQ1xcXG5jU2NFQW5VbkJBSjVKd1FDZlNjRUFvRW5CQUtGSndRQ2lTY0VBbzBuQkFLUkp3UUNsU2NFQXBrbkJBS2RKd1FDb1NjRUFxVW5CQUtwSndcXFxuUUNyU2NFQXJFbkJBSzFKd1FDdVNjRUFyMG5CQUxCSndRQ3hTY0VBc2tuQkFMTkp3UUMwU2NFQXRVbkJBTFpKd1FDM1NjRUFBQUFBQVFBXFxcbkFBQUFBQUFBQkFBQUFBTGhKd1FDNVNjRUF1a25CQUx0SndRQzhTY0VBdlVuQkFMNUp3UUMvU2NFQWdFb0JBSUZLQVFDQ1NnRUFnMG9CQVxcXG5JUktBUUNGU2dFQWhrb0JBSWRLQVFDSVNnRUFpVW9CQUlwS0FRQ0xTZ0VBakVvQkFJMUtBUUNPU2dFQWowb0JBSkJLQVFDUlNnRUFra29cXFxuQkFKTktBUUNVU2dFQWxVb0JBSlpLQVFDWFNnRUFtRW9CQUpsS0FRQ2FTZ0VBbTBvQkFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBXFxcbkFBQUFRQUFBQUhBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQVxcXG5CQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQWNBQUFBQUFBQUFCd0FBQUFBQUFBQUVBQUFBQndBQUFBUUFBQUFBQUFcXFxuQUFCQUFBQUFBQUFBQUVBQUFBQndBQUFBQUFBQUFIQUFBQUJBQUFBQWNBQUFBQUFBQUFCQUFBQUFjQUFBQUVBQUFBQUFBQUFBUUFBQUFIXFxcbkFBQUFBQUFBQUFjQUFBQUVBQUFBQndBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQVxcXG5BQUFBQUFCQUFBQUFBQUFBQUhBQUFBQkFBQUFBY0FBQUFFQUFBQUFBQUFBQWNBQUFBQUFBQUFCd0FBQUFRQUFBQUFBQUFBQndBQUFBQUFcXFxuQUFBRUFBQUFCd0FBQUFRQUFBQUFBQUFBQkFBQUFBY0FBQUFBQUFBQUJBQUFBQWNBQUFBQUFBQUFCQUFBQUFjQUFBQUFBQUFBQkFBQUFBXFxcbmNBQUFBRUFBQUFCd0FBQUFRQUFBQUFBQUFBQkFBQUFBSnhLQVFDZFNnRUFua29CQUo5S0FRQ2dTZ0VBb1VvQkFLSktBUUNqU2dFQXBFb1xcXG5CQUtWS0FRQ21TZ0VBcDBvQkFLaEtBUUNwU2dFQXFrb0JBS3RLQVFDc1NnRUFyVW9CQUs1S0FRQ3ZTZ0VBc0VvQkFMRktBUUN5U2dFQXNcXFxuMG9CQUxSS0FRQzFTZ0VBdGtvQkFMZEtBUUM0U2dFQXVVb0JBTHBLQVFDN1NnRUF2RW9CQUwxS0FRQytTZ0VBdjBvQkFJQktRUUNCU2tFXFxcbkFna3BCQUlOS1FRQ0VTa0VBaFVwQkFJWktRUUNIU2tFQWlFcEJBSWxLUVFDS1NrRUFpMHBCQUl4S1FRQ05Ta0VBamtwQkFRQUFBQUFBQVxcXG5BQUJBQUFBQWNBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQndBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBSEFBQUFCQUFBQUFBQUFBQUVcXFxuQUFBQUFBQUFBQWNBQUFBQUFBQUFCQUFBQUFBQUFBQUhBQUFBQkFBQUFBQUFBQUFIQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFjQUFBXFxcbkFFQUFBQUJ3QUFBQUFBQUFBRUFBQUFBQUFBQUFjQUFBQUVBQUFBQndBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQVxcXG5BQUFBQUFBQUJ3QUFBQUFBQUFBRUFBQUFBQUFBQUFjQUFBQUFBQUFBQkFBQUFBQUFBQUFIQUFBQUFBQUFBQWNBQUFBQUFBQUFCd0FBQUFcXFxuQUFBQUFIQUFBQUJBQUFBQWNBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQndBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBXFxcbkFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCd0FBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQVxcXG5BQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFcXFxuQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQWNBQUFBQUFBXFxcbkFBQndBQUFBUUFBQUFIQUFBQUFBQUFBQVFBQUFBQUFBQUFCd0FBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBSFxcXG5BQUFBQUFBQUFBUUFBQUFBQUFBQUJ3QUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUhBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFcXFxuQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQWNBQUFBRUFBQUFBQUFBQUFjQUFBQUVBQUFBQWowcEJBSkJLUVFDUlNrRUFra3BCQUpOXFxcbktRUUNVU2tFQWxVcEJBSlpLUVFDWFNrRUFtRXBCQUpsS1FRQ2FTa0VBbTBwQkFKeEtRUUNkU2tFQW5rcEJBSjlLUVFDZ1NrRUFvVXBCQVxcXG5LSktRUUNqU2tFQXBFcEJBS1ZLUVFDbVNrRUFwMHBCQUtoS1FRQ3BTa0VBcWtwQkFLdEtRUUNzU2tFQXJVcEJBSzVLUVFBQUFBQUJ3QUFcXFxuQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJ3XFxcbkFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCd0FBQUFBQUFBQUVBQUFBQUFBQUFBY0FBQUFBQUFBQVxcXG5CQUFBQUFBQUFBQUhBQUFBQUFBQUFBY0FBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBY0FBQUFFQUFcXFxuQUFBQUFBQUFjQUFBQUVBQUFBQndBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBXFxcbkFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQVxcXG5BRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQWNBQUFBRUFBQUFBQUFBQUFRQUFBQUhBQUFBQkFBQUFBY0FcXFxuQUFBQUFBQUFCQUFBQUFjQUFBQUVBQUFBQndBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBXFxcbkFBQUFBRUFBQUFBQUFBQUFRQUFBQUhBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQWNBQUFBRUFBQUFBQUFBQUFjQUFBQUFBQUFBQndBQVxcXG5BQVFBQUFBQUFBQUFCQUFBQUFjQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUs5S1FRQ3dTa0VBc1VwQkFMSktRUUN6U2tFQXRcXFxuRXBCQUxWS1FRQzJTa0VBdDBwQkFMaEtRUUM1U2tFQXVrcEJBTHRLUVFDOFNrRUF2VXBCQUw1S1FRQy9Ta0VBZ0VxQkFJRktnUUNDU29FXFxcbkFnMHFCQUlSS2dRQ0ZTb0VBaGtxQkFJZEtnUUNJU29FQWlVcUJBSXBLZ1FDTFNvRUFqRXFCQUkxS2dRQ09Tb0VBQUFBQUFjQUFBQUVBQVxcXG5BQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBY0FBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFcXFxuQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBXFxcbkFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFjQUFBQUFBQUFBQndBQUFBRUFBQUFFQUFBQUJ3QUFBQVFBQUFBSEFBQUFCQUFBQUFjQVxcXG5BQUFDUFNvSUFrVXFDQUpOS2d3Q1dTb01BbVVxREFKeEtnd0NmU29NQndBQUFBUUFBQUFIQUFBQUFva3FDQUtSS2dnQ21Tb01BcVVxREFcXFxuS3hLZ3dDdlNvTUJ3QUFBQVFBQUFBSEFBQUFCQUFBQUFjQUFBQUVBQUFBQndBQUFBUUFBQUFIQUFBQUJBQUFBQUlBQUFFQ0FRQUJBZ0lBXFxcbkFRSURBQUVDQkFBQkFnVUFBUUlHQUFFQ0J3QUJBZ2dBQVFJSkFBRUNDZ0FCQWdzQUFRSU1BQUVDRFFBQkFnNEFBUUlQQUFFQ0VBQUJBaFxcXG5FQUFRSVNBQUVDRXdBQkFoUUFBUUlWQUFFQ0ZnQUJBaGNBQVFJWUFBRUNHUUFCQWdBQUFRSUJBQUVDQWdBQkFnTUFBUUlFQUFFQ0JRQUJcXFxuQWdZQUFRSUhBQUVDQ0FBQkFna0FBUUlLQUFFQ0N3QUJBZ3dBQVFJTkFBRUNEZ0FCQWc4QUFRSVFBQUVDRVFBQkFoSUFBUUlUQUFFQ0ZBXFxcbkFCQWhVQUFRSVdBQUVDRndBQkFoZ0FBUUlaQUFFQ0FBQUJBZ0VBQVFJQ0FBRUNBd0FCQWdRQUFRSUZBQUVDQmdBQkFnY0FBUUlJQUFFQ1xcXG5DUUFCQWdvQUFRSUxBQUVDREFBQkFnMEFBUUlPQUFFQ0R3QUJBaEFBQVFJUkFBRUNFZ0FCQWhNQUFRSVVBQUVDRlFBQkFoWUFBUUlYQUFcXFxuRUNHQUFCQWhrQUFRSUFBQUVDQVFBQkFnSUFBUUlEQUFFQ0JBQUJBZ1VBQVFJR0FBRUVBQUFBQWdnQUFRSUpBQUVDQ2dBQkFnc0FBUUlNXFxcbkFBRUNEUUFCQWc0QUFRSVBBQUVDRUFBQkFoRUFBUUlTQUFFQ0V3QUJBaFFBQVFJVkFBRUNGZ0FCQWhjQUFRSVlBQUVDR1FBQkFnQUFBUVxcXG5JQkFBRUNBZ0FCQWdNQUFRSUVBQUVDQlFBQkFnWUFBUUlIQUFFQ0NBQUJBZ2tBQVFJS0FBRUNDd0FCQWd3QUFRSU5BQUVDRGdBQkFnOEFcXFxuQVFJUUFBRUNFUUFCQWhJQUFRSVRBQUVDRkFBQkFoVUFBUUlXQUFFQ0Z3QUJBaGdBQVFJWkFBRUNBQUFCQWdFQUFRSUNBQUVDQXdBQkFnXFxcblFBQVFJRkFBRUNCZ0FCQWdjQUFRSUlBQUVDQ1FBQkFnb0FBUUlMQUFFQ0RBQUJBZzBBQVFJT0FBRUNEd0FCQWhBQUFRSVJBQUVDRWdBQlxcXG5BaE1BQVFJVUFBRUNGUUFCQWhZQUFRSVhBQUVDR0FBQkFoa0FBUUlBQUFFRUFBQUFBZ0lBQVFJREFBRUVBQUFBQWdZQUFRUUFBQUFDQ1FcXFxuQUJBZ29BQVFRQUFBQUNEUUFCQWc0QUFRSVBBQUVDRUFBQkJBQUFBQUlTQUFFQ0V3QUJBaFFBQVFJVkFBRUNGZ0FCQWhjQUFRSVlBQUVDXFxcbkdRQUJBZ0FBQVFJQkFBRUNBZ0FCQWdNQUFRUUFBQUFDQlFBQkJBQUFBQUlIQUFFQ0NBQUJBZ2tBQVFJS0FBRUNDd0FCQWd3QUFRSU5BQVxcXG5FRUFBQUFBZzhBQVFJUUFBRUNFUUFCQWhJQUFRSVRBQUVDRkFBQkFoVUFBUUlXQUFFQ0Z3QUJBaGdBQVFJWkFBRUNBQUFCQWdFQUFRSUNcXFxuQUFFQ0F3QUJBZ1FBQVFJRkFBRUNCZ0FCQWdjQUFRSUlBQUVDQ1FBQkFnb0FBUUlMQUFFQ0RBQUJBZzBBQVFJT0FBRUNEd0FCQWhBQUFRXFxcbklSQUFFQ0VnQUJBaE1BQVFJVUFBRUNGUUFCQWhZQUFRSVhBQUVDR0FBQkFoa0FBUUlBQUFFQ0FRQUJBZ0lBQVFJREFBRUNCQUFCQWdVQVxcXG5BUUlHQUFFQ0J3QUJBZ2dBQVFJSkFBRUNDZ0FCQWdzQUFRSU1BQUVDRFFBQkFnNEFBUUlQQUFFQ0VBQUJBaEVBQVFJU0FBRUNFd0FCQWhcXFxuUUFBUUlWQUFFQ0ZnQUJBaGNBQVFJWUFBRUNHUUFCQWdBQUFRSUJBQUVFQUFBQUFnTUFBUUlFQUFFQ0JRQUJBZ1lBQVFRQUFBQUNDUUFCXFxcbkFnb0FBUUlMQUFFQ0RBQUJBZzBBQVFJT0FBRUNEd0FCQWhBQUFRUUFBQUFDRWdBQkFoTUFBUUlVQUFFQ0ZRQUJBaFlBQVFJWEFBRUNHQVxcXG5BQkJBQUFBQUlBQUFFQ0FRQUJBZ0lBQVFJREFBRUNCQUFCQWdVQUFRSUdBQUVDQndBQkFnZ0FBUUlKQUFFQ0NnQUJBZ3NBQVFJTUFBRUNcXFxuRFFBQkFnNEFBUUlQQUFFQ0VBQUJBaEVBQVFJU0FBRUNFd0FCQWhRQUFRSVZBQUVDRmdBQkFoY0FBUUlZQUFFQ0dRQUJBZ0FBQVFJQkFBXFxcbkVFQUFBQUFnTUFBUUlFQUFFQ0JRQUJBZ1lBQVFRQUFBQUNDQUFCQWdrQUFRSUtBQUVDQ3dBQkFnd0FBUVFBQUFBQ0RnQUJCQUFBQUFJU1xcXG5BQUVDRXdBQkFoUUFBUUlWQUFFQ0ZnQUJBaGNBQVFJWUFBRUVBQUFBQWdBQUFRSUJBQUVDQWdBQkFnTUFBUUlFQUFFQ0JRQUJBZ1lBQVFcXFxuSUhBQUVDQ0FBQkFna0FBUUlLQUFFQ0N3QUJBZ3dBQVFJTkFBRUNEZ0FCQWc4QUFRSVFBQUVDRVFBQkFoSUFBUUlUQUFFQ0ZBQUJBaFVBXFxcbkFRSVdBQUVDRndBQkFoZ0FBUUlaQUFFQ0FBQUJBZ0VBQVFJQ0FBRUNBd0FCQWdRQUFRSUZBQUVDQmdBQkFnY0FBUUlJQUFFQ0NRQUJBZ1xcXG5vQUFRSUxBQUVDREFBQkFnMEFBUUlPQUFFQ0R3QUJBaEFBQVFJUkFBRUNFZ0FCQWhNQUFRSVVBQUVDRlFBQkFoWUFBUUlYQUFFQ0dBQUJcXFxuQWhrQUFRSUFBQUVDQVFBQkFnSUFBUUlEQUFFQ0JBQUJBZ1VBQVFJR0FBRUNCd0FCQWdnQUFRSUpBQUVDQ2dBQkFnc0FBUUlNQUFFQ0RRXFxcbkFCQWc0QUFRSVBBQUVDRUFBQkFoRUFBUUlTQUFFQ0V3QUJBaFFBQVFJVkFBRUNGZ0FCQWhjQUFRSVlBQUVDR1FBQkFnQUFBUUlCQUFFQ1xcXG5BZ0FCQWdNQUFRSUVBQUVDQlFBQkFnWUFBUUlIQUFFQ0NBQUJBZ2tBQVFJS0FBRUNDd0FCQWd3QUFRSU5BQUVDRGdBQkFnOEFBUUlRQUFcXFxuRUNFUUFCQWhJQUFRSVRBQUVDRkFBQkFoVUFBUUlXQUFFQ0Z3QUJBaGdBQVFJWkFBRUNBQUFCQWdFQUFRSUNBQUVDQXdBQkFnUUFBUUlGXFxcbkFBRUNCZ0FCQWdjQUFRSUlBQUVDQ1FBQkFnb0FBUUlMQUFFQ0RBQUJBZzBBQVFJT0FBRUNEd0FCQWhBQUFRSVJBQUVDRWdBQkFoTUFBUVxcXG5JVUFBRUNGUUFCQWhZQUFRSVhBQUVDR0FBQkFoa0FBUUlBQUFFQ0FRQUJBZ0lBQVFJREFBRUNCQUFCQWdVQUFRSUdBQUVDQndBQkFnZ0FcXFxuQVFJSkFBRUNDZ0FCQWdzQUFRSU1BQUVDRFFBQkFnNEFBUUlQQUFFQ0VBQUJBaEVBQVFJU0FBRUNFd0FCQWhRQUFRSVZBQUVDRmdBQkFoXFxcbmNBQVFJWUFBRUNHUUFCQWdBQUFRSUJBQUVDQWdBQkFnTUFBUUlFQUFFQ0JRQUJBZ1lBQVFJSEFBRUNDQUFCQWdrQUFRSUtBQUVDQ3dBQlxcXG5BZ3dBQVFJTkFBRUNEZ0FCQWc4QUFRSVFBQUVDRVFBQkFoSUFBUUlUQUFFQ0ZBQUJBaFVBQVFJV0FBRUNGd0FCQWhnQUFRSVpBQUVDQUFcXFxuQUJBZ0VBQVFJQ0FBRUNBd0FCQWdRQUFRSUZBQUVDQmdBQkFnY0FBUUlJQUFFQ0NRQUJBZ29BQVFJTEFBRUNEQUFCQWcwQUFRSU9BQUVDXFxcbkR3QUJBaEFBQVFJUkFBRUNFZ0FCQWhNQUFRSVVBQUVDRlFBQkFoWUFBUUlYQUFFQ0dBQUJBaGtBQVFJQUFBRUNBUUFCQWdJQUFRSURBQVxcXG5FQ0JBQUJBZ1VBQVFJR0FBRUNCd0FCQWdnQUFRSUpBQUVDQ2dBQkFnc0FBUUlNQUFFQ0RRQUJBZzRBQVFJUEFBRUNFQUFCQWhFQUFRSVNcXFxuQUFFQ0V3QUJBaFFBQVFJVkFBRUNGZ0FCQWhjQUFRSVlBQUVDR1FBQkFnQUFBUUlCQUFFQ0FnQUJBZ01BQVFJRUFBRUNCUUFCQWdZQUFRXFxcbklIQUFFQ0NBQUJBZ2tBQVFJS0FBRUNDd0FCQWd3QUFRSU5BQUVDRGdBQkFnOEFBUUlRQUFFQ0VRQUJBaElBQVFJVEFBRUNGQUFCQWhVQVxcXG5BUUlXQUFFQ0Z3QUJBaGdBQVFJWkFBRUNBQUFCQWdFQUFRSUNBQUVDQXdBQkFnUUFBUUlGQUFFQ0JnQUJBZ2NBQVFJSUFBRUNDUUFCQWdcXFxub0FBUUlMQUFFQ0RBQUJBZzBBQVFJT0FBRUNEd0FCQWhBQUFRSVJBQUVDRWdBQkFoTUFBUUlVQUFFQ0ZRQUJBaFlBQVFJWEFBRUNHQUFCXFxcbkFoa0FBUUlBQUFFQ0FRQUJBZ0lBQVFJREFBRUNCQUFCQWdVQUFRSUdBQUVDQndBQkFnZ0FBUUlKQUFFQ0NnQUJBZ3NBQVFJTUFBRUNEUVxcXG5BQkFnNEFBUUlQQUFFQ0VBQUJBaEVBQVFJU0FBRUNFd0FCQWhRQUFRSVZBQUVDRmdBQkFoY0FBUUlZQUFFQ0dRQUJBZ0FBQVFJQkFBRUNcXFxuQWdBQkFnTUFBUUlFQUFFQ0JRQUJBZ1lBQVFJSEFBRUNDQUFCQWdrQUFRSUtBQUVDQ3dBQkFnd0FBUUlOQUFFQ0RnQUJBZzhBQVFJUUFBXFxcbkVDRVFBQkFoSUFBUUlUQUFFQ0ZBQUJBaFVBQVFJV0FBRUNGd0FCQWhnQUFRSVpBQUVDeVNvQ0Fzc3FBZ1FBQUFBQ0dBSUNBaG9DQWdJY1xcXG5BZ0lDSGdJQ0FpQUNBZ0lpQWdJQ0pBSUNBaVlDQWdMekFRSUNLQUlDQWlvQ0FnSW1BQUlDTEFJQ0FpNENBZ0l3QWdJQ01nSUNBalFDQWdcXFxuSW1BZ0lDTmdJQ0FqZ0NBZ0k2QWdJQ1BBSUNBajRDQWdKQUFnSUNRZ0lDQXMwcUF3SVlBZ0lDR2dJQ0Fod0NBZ0llQWdJQ0lBSUNBaUlDXFxcbkFnSWtBZ0lDSmdJQ0F2TUJBZ0lvQWdJQ0tnSUNBaVlBQWdJc0FnSUNMZ0lDQWpBQ0FnSXlBZ0lDTkFJQ0FqWUNBZ0k0QWdJQ09nSUNBalxcXG53Q0FnSStBZ0lDUUFJQ0FrSUNBZ0xRS2dNQ0lBSUNBaVlDQWdJb0FnSUNQQUlDQWpRQ0FnSXlBZ0lDR0FJQ0Fob0NBZ0ljQWdJQ0hnSUNcXFxuQWlBQ0FnSWlBZ0lDSkFJQ0FpWUNBZ0x6QVFJQ0tBSUNBaW9DQWdJbUFBSUNMQUlDQWk0Q0FnSXdBZ0lDTWdJQ0FqUUNBZ0ltQWdJQ05nXFxcbklDQWpnQ0FnSTZBZ0lDUEFJQ0FqNENBZ0pBQWdJQ1FnSUNBczBxQXdJWUFnSUNHZ0lDQWh3Q0FnSWVBZ0lDSUFJQ0FpSUNBZ0lrQWdJQ1xcXG5KZ0lDQXZNQkFnSW9BZ0lDS2dJQ0FpWUFBZ0lzQWdJQ0xnSUNBakFDQWdJeUFnSUNOQUlDQWpZQ0FnSTRBZ0lDT2dJQ0Fqd0NBZ0krQWdcXFxuSUNRQUlDQWtJQ0FnTFFLZ01DSUFJQ0FpWUNBZ0lvQWdJQ1BBSUNBalFDQWdJeUFnSUNHQUlDQWhvQ0FnSWNBZ0lDSGdJQ0FpQUNBZ0lpXFxcbkFnSUNKQUlDQWlZQ0FnTHpBUUlDS0FJQ0Fpb0NBZ0ltQUFJQ0xBSUNBaTRDQWdJd0FnSUNNZ0lDQWpRQ0FnSW1BZ0lDTmdJQ0FqZ0NBZ1xcXG5JNkFnSUNQQUlDQWo0Q0FnSkFBZ0lDUWdJQ0FzMHFBd0lZQWdJQ0dnSUNBaHdDQWdJZUFnSUNJQUlDQWlJQ0FnSWtBZ0lDSmdJQ0F2TUJcXFxuQWdJb0FnSUNLZ0lDQWlZQUFnSXNBZ0lDTGdJQ0FqQUNBZ0l5QWdJQ05BSUNBallDQWdJNEFnSUNPZ0lDQWp3Q0FnSStBZ0lDUUFJQ0FrXFxcbklDQWdMUUtnTUNJQUlDQWlZQ0FnSW9BZ0lDUEFJQ0FqUUNBZ0l5QWdJQ0dBSUNBaG9DQWdJY0FnSUNIZ0lDQWlBQ0FnSWlBZ0lDSkFJQ1xcXG5BaVlDQWdMekFRSUNLQUlDQWlvQ0FnSW1BQUlDTEFJQ0FpNENBZ0l3QWdJQ01nSUNBalFDQWdJbUFnSUNOZ0lDQWpnQ0FnSTZBZ0lDUEFcXFxuSUNBajRDQWdKQUFnSUNRZ0lDQXMwcUF3SVlBZ0lDR2dJQ0Fod0NBZ0llQWdJQ0lBSUNBaUlDQWdJa0FnSUNKZ0lDQXZNQkFnSW9BZ0lDXFxcbktnSUNBaVlBQWdJc0FnSUNMZ0lDQWpBQ0FnSXlBZ0lDTkFJQ0FqWUNBZ0k0QWdJQ09nSUNBandDQWdJK0FnSUNRQUlDQWtJQ0FnTFFLZ1xcXG5NQ0lBSUNBaVlDQWdJb0FnSUNQQUlDQWpRQ0FnSXlBZ0lDR0FJQ0Fob0NBZ0ljQWdJQ0hnSUNBaUFDQWdJaUFnSUNKQUlDQWlZQ0FnTHpcXFxuQVFJQ0tBSUNBaW9DQWdJbUFBSUNMQUlDQWk0Q0FnSXdBZ0lDTWdJQ0FqUUNBZ0ltQWdJQ05nSUNBamdDQWdJNkFnSUNQQUlDQWo0Q0FnXFxcbkpBQWdJQ1FnSUNBczBxQXdJWUFnSUNHZ0lDQWh3Q0FnSWVBZ0lDSUFJQ0FpSUNBZ0lrQWdJQ0pnSUNBdk1CQWdJb0FnSUNLZ0lDQWlZQVxcXG5BZ0lzQWdJQ0xnSUNBakFDQWdJeUFnSUNOQUlDQWpZQ0FnSTRBZ0lDT2dJQ0Fqd0NBZ0krQWdJQ1FBSUNBa0lDQWdMUUtnTUNJQUlDQWlcXFxuWUNBZ0lvQWdJQ1BBSUNBalFDQWdJeUFnSUNUZ0lDQkFBQUFBSXJDUUVDS3dBQkFpRUFBUUlpQUFFQ0xBa0JBaTBKQVFJdUNRRUNMd2tCXFxcbkFqQUpBUUl4Q1FFQ0t3a0JBaXNBQVFJaEFBRUNJZ0FCQWl3SkFRSXRDUUVDTGdrQkFpOEpBUUl3Q1FFQ01Ra0JBaXNKQVFJckFBRUNJUVxcXG5BQkFpSUFBUUlzQ1FFQ0xRa0JBaTRKQVFJdkNRRUNNQWtCQWpFSkFRSXJDUUVDS3dBQkFpRUFBUUlpQUFFQ0xBa0JBaTBKQVFJdUNRRUNcXFxuTHdrQkFqQUpBUUl4Q1FFQ0t3a0JBaXNBQVFJaEFBRUNJZ0FCQWl3SkFRSXRDUUVDTGdrQkFpOEpBUUl3Q1FFQ01Ra0JCd0FBQUFBQUFBXFxcbkFIQUFBQUFBQUFBQWNBQUFBQUFBQUFCd0FBQUFBQUFBQUhBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQVxcXG5BQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUFcXFxuY0FBQUFFQUFBQUFBQUFBQVFBQUFBSEFBQUFCQUFBQUFBQUFBQUVBQUFBQndBQUFBQUFBQUFFQUFBQUF0TXFCQUxYS2dRQzJ5b0VBdDhxXFxcbkJBTGpLZ1FDNXlvRUF1c3FCQUx2S2dRQzh5b0VBdmNxQkFMN0tnUUMveW9FQWdNckJBSUhLd1FDQ3lzRUFnOHJCQUlUS3dRQ0Z5c0VBaFxcXG5zckJBSWZLd1FDSXlzRUFpY3JCQUlyS3dRQ0x5c0VBak1yQkFJM0t3UUNPeXNFQWo4ckJBSkRLd1FDUnlzRUFrc3JCQUpQS3dRQ1V5c0VcXFxuQWxjckJBQUFBQUFFQUFBQUFBQUFBQVFBQUFBSEFBQUFCQUFBQUFjQUFBQUVBQUFBQndBQUFBUUFBQUFDbnlZQ0FxRW1BZ0twSmdJQ3J5XFxcbllDQkFBQUFBTFZKZ0lDdFNZQ0Fxc21BZ0svSmdJQzF5WUNBc3NtQWdMTkpnSUN6eVlDQXRFbUFnSzNKZ0lDd3lZQ0FzY21BZ0s3SmdJQ1xcXG55U1lDQXJNbUFnSzVKZ0lDcFNZQ0FxY21BZ0t0SmdJQ3NTWUNBcjBtQWdMQkpnSUN4U1lDQWxzckFnS1hJQUlDWFNzQ0FsOHJBZ1FBQUFcXFxuQUNvU1lDQXFrbUFnUUFBQUFDMHlZQ0JBQUFBQUtySmdJRUFBQUFBdGNtQWdMTEpnSUN6U1lDQXM4bUFnTFJKZ0lDdHlZQ0FzTW1BZ0xIXFxcbkpnSUN1eVlDQXNrbUFnUUFBQUFDdVNZQ0FxVW1BZ0tuSmdJQ3JTWUNCQUFBQUFLOUpnSUVBQUFBQXNVbUFnUUFBQUFDcVNZQ0JBQUFBQVxcXG5LckpnSUVBQUFBQXRjbUFnUUFBQUFDelNZQ0JBQUFBQUxSSmdJQ3R5WUNBc01tQWdRQUFBQUN1eVlDQXNrbUFnUUFBQUFDdVNZQ0JBQUFcXFxuQUFLdEpnSUVBQUFBQXIwbUFnUUFBQUFDeFNZQ0JBQUFBQUtYSUFJRUFBQUFBbDhyQWdRQUFBQUNvU1lDQXFrbUFnUUFBQUFDMHlZQ0JBXFxcbkFBQUFLckpnSUN2eVlDQXRjbUFnTExKZ0lFQUFBQUFzOG1BZ0xSSmdJQ3R5WUNBc01tQWdMSEpnSUN1eVlDQXNrbUFnUUFBQUFDdVNZQ1xcXG5BcVVtQWdLbkpnSUNyU1lDQkFBQUFBSzlKZ0lDd1NZQ0FzVW1BZ0piS3dJRUFBQUFBbDByQWdRQUFBQUNueVlDQXFFbUFnS3BKZ0lDcnlcXFxuWUNBdE1tQWdMVkpnSUN0U1lDQXFzbUFnSy9KZ0lDMXlZQ0JBQUFBQUxOSmdJQ3p5WUNBdEVtQWdLM0pnSUN3eVlDQXNjbUFnSzdKZ0lDXFxcbnlTWUNBck1tQWdLNUpnSUNwU1lDQXFjbUFnS3RKZ0lDc1NZQ0FyMG1BZ0xCSmdJQ3hTWUNCQUFBQUFLaEpnSUNxU1lDQXE4bUFnUUFBQVxcXG5BQzFTWUNBclVtQWdLckpnSUN2eVlDQXRjbUFnUUFBQUFDelNZQ0FzOG1BZ0xSSmdJQ3R5WUNBc01tQWdMSEpnSUN1eVlDQXNrbUFnS3pcXFxuSmdJQ3VTWUNBcVVtQWdLbkpnSUNyU1lDQXJFbUFnSzlKZ0lDd1NZQ0FzVW1BZ1FBQUFBSEFBQUFCQUFBQUFjQUFBQUVBQUFBQndBQUFBXFxcblFBQUFBSEFBQUFCQUFBQUFjQUFBQUVBQUFBQndBQUFBUUFBQUFIQUFBQUJBQUFBQVpoS3dJR1l5c0NCbVVyQWdabkt3SUdhU3NDQm1zclxcXG5BZ1p0S3dJR2J5c0NCbkVyQWdaekt3SUhBQUFBQmxFS0F3WlVDZ01HVndvREJsb0tBd1pkQ2dNR1lBb0RCbU1LQXdabUNnTUdhUW9EQm1cXFxud0tBd1p2Q2dNR2Nnb0RCblVLQXdaNENnTUdld29EQm40S0F3YUJDZ01HaEFvREJvY0tBd2FLQ2dNR2pRb0RCcEFLQXdhVENnTUdsZ29EXFxcbkJwa0tBd2FjQ2dNQ2RTc0hBZ0lBQVFJUkFBRUN6UmNDQW53ckFnY0FBQUFDQUFBQkFnRUFBUUlDQUFFQ0F3QUJBZ1FBQVFJRkFBRUNCZ1xcXG5BQkFnY0FBUUlJQUFFQ0NRQUJBZ29BQVFJTEFBRUNEQUFCQWcwQUFRSU9BQUVDRHdBQkFoQUFBUUlSQUFFQ0VnQUJBaE1BQVFJVUFBRUNcXFxuRlFBQkFoWUFBUUlYQUFFQ0dBQUJBaGtBQVFKK0t3SUN0QmNDQW9BckFnSjNBQUlDZ2lzREFvVXJBZ2NBQUFBQ2h5c0NBb2tyQWdLTEt3XFxcbklIQUFBQUFvMHJBZ2NBQUFBRUFBQUFCd0FBQUFLUEt3WUNsU3NHQW5BU0F3UUFBQUFDeHd3REFwc3JBd0tlS3dNQ29Tc0RBaHdNQXdLa1xcXG5Ld01DcHlzREF0a1BBd0txS3dNQ3JTc0RBckFyQXdMMkhBTUNzeXNEQXJZckF3SzVLd01DdkNzREFyOHJBd0xDS3dNQ013MERBc1VyQXdcXFxuTElLd01DeXlzREFzNHJBd0xSS3dNQzFDc0RBZ29NQXdMQkR3TUMxeXNEQXRrUkF3TEtEd01DM0JFREF0b3JBd0xiRFFNQzNTc0RBdUFyXFxcbkF3TGpLd01DNWlzREF1a3JBd0ttRVFNQzVRd0RBdXdyQXdMdkt3TUM4aXNEQXZVckF3UUFBQUFDK0NzSkFnRXNDUUlLTEFrQ0V5d0pBaFxcXG53c0NRSWxMQWtDTGl3SkFqY3NDUUpBTEFrRUFBQUFBa2tzQXdKTUxBTUVBQUFBQndBQUFBUUFBQUFIQUFBQUJBQUFBQWNBQUFBRUFBQUFcXFxuQndBQUFBUUFBQUFIQUFBQUJBQUFBQWNBQUFBRUFBQUFCd0FBQUFRQUFBQUhBQUFBQkFBQUFBY0FBQUFFQUFBQUJ3QUFBQVFBQUFBSEFBXFxcbkFBQkFBQUFBY0FBQUFFQUFBQUJ3QUFBQVFBQUFBSEFBQUFCQUFBQUFjQUFBQUVBQUFBQndBQUFBUUFBQUFIQUFBQUJBQUFBQWNBQUFBRVxcXG5BQUFBQndBQUFBUUFBQUFIQUFBQUJBQUFBQWNBQUFBRUFBQUFCd0FBQUFRQUFBQUhBQUFBQkFBQUFBY0FBQUFFQUFBQUJ3QUFBQVFBQUFcXFxuQUhBQUFBQkFBQUFBSXJDUUVDS3dBQkFpRUFBUUlpQUFFQ0xBa0JBaTBKQVFJdUNRRUNMd2tCQWpBSkFRSXhDUUVFQUFBQUFBQUFBQVFBXFxcbkFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFKUExBTUNVaXdEQWxVc0F3SllMQVFDWEN3REFnMGVBd1xcXG5KZkxBTUNZaXdEQW1Vc0F3Sm9MQU1DRUI0REFtc3NBd0p1TEFNQ2NTd0VBaE1lQXdKMUxBTUNlQ3dEQW5zc0F3SitMQVFDZ2l3REFvVXNcXFxuQXdLNUt3TUNpQ3dFQW93c0F3S1BMQU1Da2l3REFwVXNBd0s1SGdNQ21Dd0VBam9NQXdLY0xBTUNueXdEQXFJc0F3S2xMQU1DN3lzREFxXFxcbmdzQXdLckxBTUN5QjREQWhZZUF3SVpIZ01DeXg0REFxNHNBd0t4TEFNQzlCc0RBclFzQXdJY0hnTUN0eXdEQXJvc0F3SzlMQU1Dd0N3RFxcXG5Bc01zQkFMSExBTUN5aXdEQXMwc0F3TFFMQVFDMUN3REF0Y3NBd0xhTEFNQzNTd0RBdUFzQXdMakxBTUM1aXdEQXVrc0F3THNMQU1DN3lcXFxud0RBdklzQXdMMUxBTUMrQ3dEQXRFZUF3TDdMQU1DL2l3REFnRXRBd0lFTFFNQ0loNERBZ2N0QXdJS0xRTUNEUzBEQXFvZEF3SVFMUU1DXFxcbkV5MERBaFl0QXdJWkxRTUNIQzBEQWg4dEF3SWlMUU1DSlMwREFpZ3RCQUlzTFFNQ0x5MERBakl0QXdLa0t3TUNOUzBEQWpndEF3STdMUVxcXG5RQ1B5MEVBa010QXdKR0xRTUNTUzBEQWt3dEF3SlBMUU1DVWkwREJBQUFBQUpWTFFNQ1dDMERBbHN0QkFKZkxRTUNZaTBEQXVnYkF3SmxcXFxuTFFNQ2FDMEVBbXd0QXdKdkxRTUVBQUFBQW9nTUF3SnlMUU1DZFMwREFvNE1Bd0o0TFFNQ2V5MERBbjR0QkFLQ0xRTUNoUzBFQW9rdEF3XFxcbktNTFFNQ2p5MERBcEl0QXdLVkxRTUNtQzBEQXBzdEF3S2VMUU1Db1MwREFxUXRBd0tuTFFNQ3FpMEVBcTR0QXdLeExRTUN0QzBEQXJjdFxcXG5Bd0pNR3dNQ3VpMEVBcXdNQXdLK0xRUUN3aTBEQXNVdEF3TElMUU1DeXkwRUFzOHRCQUxUTFFNQzFpMERBdGt0QXdMY0xRTUMzeTBEQXVcXFxuSXRBd0xsTFFNQzZDMERBdXN0QXdMdUxRTUNNUjREQXZFdEJBTDFMUU1DK0MwREF2c3RBd0wxSGdNQyt5MERBdjR0QXdJM0hnTUNBUzREXFxcbkFnUXVBd0lITGdNQ0NpNERBam9lQXdMN0dnTUNEUzREQWhBdUF3SVRMZ01DRmk0REFoa3VBd0ljTGdNQ0h5NEVBaU11QXdJbUxnTUNLU1xcXG40REFpd3VBd0l2TGdNQ01pNEVBall1QXdJNUxnTUNQQzREQWo4dUF3SkNMZ01DUlM0REFrZ3VBd0pMTGdNQ1RpNERBajBlQXdKUkxnTUNcXFxuVkM0RUFsZ3VBd0piTGdNQ1hpNERBbUV1QXdKREhnTUNaQzREQW1jdUF3SnFMZ01DYlM0REFuQXVBd0p6TGdNQ2RpNERBbmt1QXdKUEd3XFxcbk1DRFI4REFud3VBd0ovTGdNQ2dpNERBb1V1QkFLSkxnTUNqQzREQW84dUF3S1NMZ01DUmg0REFwVXVCQUtaTGdNQ25DNERBcDh1QXdLT1xcXG5Id01Db2k0REFxVXVBd0tvTGdNQ3F5NERBcTR1QkFLeUxnTUN0UzREQXJndUF3SzdMZ1FDdnk0REFzSXVBd0xGTGdNQ3lDNERBaHNjQXdcXFxuTExMZ01Demk0RUF0SXVCQUxXTGdRQzJpNERBdDB1QkFMaExnTUM1QzREQXVjdUF3THFMZ01DN1M0REFra2VBd0lVSFFNQzhDNERBdk11XFxcbkF3TDJMZ01DK1M0RUF2MHVBd0lBTHdNQ0F5OERBZ1l2QXdJV0h3TUNDUzhEQWd3dkJBSVFMd01DRXk4REFoWXZCQUlhTHdRQ0hpOERBaVxcXG5FdkF3SVpId01DSkM4REFpY3ZBd0lxTHdNQ0xTOERBakF2QXdJekx3TUNOaThFQWpvdkF3STlMd1FDUVM4REJBQUFBQUpFTHdNQ0h4OERcXFxuQWtjdkF3SktMd1FDVGk4REFsRXZBd0pVTHdRQ1dDOEVBbHd2QXdKZkx3TUNZaThEQW1VdkF3Sm9Md01DYXk4REFtNHZBd0lsSHdNQ2NTXFxcbjhEQW5RdkF3SjNMd01DZWk4REFuMHZCQUtCTHdNQ2hDOEVBdkViQXdLSUx3UUNqQzhEQW84dkJBS1RMd1FDbHk4RUFwc3ZBd0tlTHdNQ1xcXG5OeDhEQXFFdkJBS2xMd1FDcVM4RUFxMHZCQUt4THdNQ3RDOERBam9mQXdLVUh3TUN0eThEQXJvdkF3SzlMd01Dd0M4RUFzUXZBd0tDR3dcXFxuTUNRQjhEQXNjdkF3TEtMd1FDWng0REFzNHZCQUxTTHdRQzVoMERBdFl2QXdMWkx3TUNjQjREQXR3dkF3TGZMd01DNGk4RUF1WXZCQVFBXFxcbkFBQUM2aThEQXUwdkJBTHhMd01DOUM4REF2Y3ZBd0w2THdRQy9pOERBZ0V3QXdJRU1BTUNCekFEQWdvd0F3SU5NQVFDRVRBREFoUXdBd1xcXG5JWE1BTUNHakFEQWgwd0F3SWdNQU1DSXpBRUFpY3dCQUlyTUFNQ0xqQUVBakl3QXdJMU1BUUNPVEFEQWp3d0F3S0NIZ01DUHpBRUFrTXdcXFxuQkFKSE1BTUNTakFFQWs0d0F3SlJNQVFDVlRBREFsZ3dBd0piTUFNQ1hqQURBbUV3QXdKa01BTUNaekFFQW1zd0JBSnZNQVFDY3pBRUFzXFxcbkl0QXdKM01BTUNlakFEQW4wd0F3S0FNQU1DZ3pBREFvWXdBd0tKTUFNQ2pEQURBbzh3QXdLU01BTUNsVEFEQXBnd0JBSWtIQU1DbkRBRFxcXG5BcDh3QXdLaU1BTUNwVEFEQXFnd0F3S3JNQU1DaXg0REFxNHdBd0t4TUFNQ3REQURBcmN3QXdLNk1BUUN2akFFQXNJd0JBTEdNQU1DeVRcXFxuQURBc3d3QXdMUE1BTUMwakFFQXRZd0F3TFpNQVFDM1RBREF1QXdBd0xqTUFRQzV6QUVBdXN3QXdMdU1BTUNjeHNEQXZFd0F3TDBNQU1DXFxcbjl6QURBdm93QXdMOU1BTUNBREVEQWxVZkF3SURNUU1DQmpFREFna3hBd1FBQUFBQ0RERURBZzh4QXdJU01RTUNGVEVEQXJvTkF3SVlNUVxcXG5RQ0hERURBaDh4QXdJaU1RTUNKVEVEQWlneEF3SXJNUVFDTHpFRUFqTXhBd0kyTVFNQ09URURBbVFmQXdKbkh3TUN6dzBEQWp3eEJBSkFcXFxuTVFNQ1F6RURBa1l4QXdKSk1RTUNUREVFQWxBeEJBSlVNUU1DVnpFREFsb3hBd0pkTVFRQ1lURURBbW9mQXdKa01RUUNhREVFQW13eEF3XFxcbkp2TVFNQ2NqRURBblV4QkFKNU1RTUNmREVEQW44eEF3S0NNUU1DaFRFREFvZ3hBd0tMTVFNQ2pqRUVBcEl4QXdLVk1RTUNtREVEQXBzeFxcXG5CQUtmTVFNQ29qRURBcVV4QXdLb01RTUNxekVFQXE4eEJBS3pNUU1DdGpFREFya3hBd0s4TVFRQ3dERURBc014QkFKOEh3TUN4ekVEQXNcXFxub3hCQUxPTVFNQzBURURBdFF4QXdMWE1RTUMyakVEQXQweEF3TGdNUU1DNHpFRUFuOGZBd0xuTVFNQzZqRURBdTB4QXdMd01RTUM4ekVEXFxcbkF2WXhCQUw2TVFNQy9URUVBZ0V5QkFJRk1nUUNYdzREQWdreUF3SnJEZ01DRERJREFnOHlBd0lTTWdNQ0ZUSURBbm9PQXdJWU1nUUVBQVxcXG5BQUFBQUFBQVFBQUFBQkFBQUFCQUFBQUdGaVkyUmxabWRvYVdwcmJHMXViM0J4Y25OMGRYWjNlSGw2SUNETWlDRE1oREl6SU15Qnpyd2dcXFxuektjeE1lS0JoRFF4NG9HRU1qUGlnWVEwdzZERG9jT2l3NlBEcE1PbHc2YkRwOE9vdzZuRHFzT3J3NnpEcmNPdXc2L0RzTU94dzdMRHM4XFxcbk8wdzdYRHRzTzR3N25EdXNPN3c3ekR2Y08rYzNQRWdjU0R4SVhFaDhTSnhJdkVqY1NQeEpIRWs4U1Z4SmZFbWNTYnhKM0VuOFNoeEtQRVxcXG5wY1NueEtuRXE4U3R4SzlweklkcGFzUzF4TGZFdXNTOHhMNXN3cmZGZ3NXRXhZYkZpTXE4YnNXTHhZM0ZqOFdSeFpQRmxjV1h4Wm5GbThcXFxuV2R4Wi9Gb2NXanhhWEZwOFdweGF2RnJjV3Z4YkhGczhXMXhiZkR2OFc2eGJ6RnZzbVR4b1BHaGNtVXhvakpsc21YeG96SG5jbVp5WnZHXFxcbmtzbWd5YVBKcWNtb3hwbkpyOG15eWJYR29jYWp4cVhLZ01hb3lvUEdyY3FJeHJES2lzcUx4clRHdHNxU3hybkd2V1RGdm14cWJtckhqc1xcXG5lUXg1TEhsTWVXeDVqSG1zZWN4NS9Ib2Nlang2WEhwOGVweDZ2SHJjZXZaSHJIdGNhVnhyL0h1Y2U3eDczSHY4aUJ5SVBJaGNpSHlJbklcXFxuaThpTnlJL0lrY2lUeUpYSWw4aVp5SnZJbmNpZnhwN0lvOGlseUtmSXFjaXJ5SzNJcjhpeHlMUGlzYVhJdk1hYTRyR215WUxHZ01xSnlvXFxcbnpKaDhtSnlZdkpqY21QeWFiSnVjbTd5b0VneklZZ3pJY2d6SW9nektnZ3pJTWd6SXZLbGN5QXpJSE1rOHlJeklIT3VjMnh6YlBLdWMyM1xcXG5JTTY1TzgreklNeUl6SUhPck1LM3pxM09yczZ2ejR6UGpjK096ckhPc3M2enpyVE90YzYyenJmT3VNNjZ6cnZPdmM2K3pyL1BnTStCejRcXFxuUFBoTStGejRiUGg4K0l6NG5QaXMrTHo1ZlBtYytiejUzUG44K2h6NlBQcGMrbno2blBxOCt0ejYvUHVNKzd6YnZOdk0yOTBaRFJrZEdTXFxcbjBaUFJsTkdWMFpiUmw5R1kwWm5SbXRHYjBaelJuZEdlMFovUXNOQ3gwTExRczlDMDBMWFF0dEMzMExqUXVkQzYwTHZRdk5DOTBMN1F2OVxcXG5HQTBZSFJndEdEMFlUUmhkR0cwWWZSaU5HSjBZclJpOUdNMFkzUmp0R1AwYUhSbzlHbDBhZlJxZEdyMGEzUnI5R3gwYlBSdGRHMzBiblJcXFxudTlHOTBiL1NnZEtMMG8zU2o5S1IwcFBTbGRLWDBwblNtOUtkMHAvU29kS2owcVhTcDlLcDBxdlNyZEt2MHJIU3M5SzEwcmZTdWRLNzByXFxcbjNTdjlPQzA0VFRodE9JMDRyVGpOT08wNUhUazlPVjA1ZlRtZE9iMDUzVG45T2gwNlBUcGRPbjA2blRxOU90MDYvVHNkT3owN1hUdDlPNVxcXG4wN3ZUdmRPLzFJSFVnOVNGMUlmVWlkU0wxSTNVajlTUjFKUFVsZFNYMUpuVW05U2QxSi9Vb2RTajFLWFVwOVNwMUt2VXJkU3YxYUhWb3RcXFxuV2oxYVRWcGRXbTFhZlZxTldwMWFyVnE5V3MxYTNWcnRXdjFiRFZzZFd5MWJQVnROVzExYmJWdDlXNDFiblZ1dFc3MWJ6VnZkVysxYi9XXFxcbmdOYUIxb0xXZzlhRTFvWFdodFdsMW9MWXA5bTAyWWpadE51SDJiVFppdG0wNEtTVjRLUzg0S1NXNEtTODRLU1g0S1M4NEtTYzRLUzg0S1xcXG5TaDRLUzg0S1NpNEtTODRLU3I0S1M4NEtTdjRLUzg0S2FoNEthODRLYWk0S2E4NEthdjRLYTg0S2l5NEtpODRLaTQ0S2k4NEtpVzRLaThcXFxuNEtpWDRLaTg0S2ljNEtpODRLaXI0S2k4NEt5aDRLeTg0S3lpNEt5ODRMbU40TGl5NEx1TjRMcXk0THFyNExxWjRMcXI0THFoNEx5TDRMXFxcbjJDNEw2MzRMMk00TDYzNEwyUjRMNjM0TDJXNEw2MzRMMmI0TDYzNEwyQTRMNjE0TDJ4NEwyeTRMMng0TDIwNEw2eTRMNkE0TDZ5NEwyeFxcXG40TDZBNEw2ejRMNkE0TDZ6NEwyeDRMNkE0TDJ4NEw2QTRMNlM0TDYzNEw2YzRMNjM0TDZoNEw2MzRMNm00TDYzNEw2cjRMNjM0TDZRNExcXFxuNjE0clNuNHJTdDRZT2M0WSt3NFkreDRZK3k0WSt6NFkrMDRZKzE2cG1MNFlPUTRZT1I0WU9TNFlPVDRZT1U0WU9WNFlPVzRZT1g0WU9ZXFxcbjRZT1o0WU9hNFlPYjRZT2Q0WU9lNFlPZjRZT2c0WU9oNFlPaTRZT2o0WU9rNFlPbDRZT200WU9uNFlPbzRZT3A0WU9xNFlPcjRZT3M0WVxcXG5PdDRZT3U0WU92NFlPdzRZT3g0WU95NFlPejRZTzA0WU8xNFlPMjRZTzM0WU80NFlPNTRZTzY0WU85NFlPKzRZTy95WkRKa2VHMGdzbWNcXFxuNGJTVzRiU1g0YlNkNGJTbHlaTEpsY21meWFISnBjbXE0Ylc3eXAzSnJlRzJoY3FmeWJISnNNbXp5YlRKdU1xQ3hxdmh0SnpLa01xUjRiXFxcbmlCNGJpRDRiaUY0YmlINGJpSjRiaUw0YmlONGJpUDRiaVI0YmlUNGJpVjRiaVg0YmlaNGJpYjRiaWQ0YmlmNGJpaDRiaWo0YmlsNGJpblxcXG40YmlwNGJpcjRiaXQ0Yml2NGJpeDRiaXo0YmkxNGJpMzRiaTU0Ymk3NGJpOTRiaS80Ym1CNGJtRDRibUY0Ym1INGJtSjRibUw0Ym1ONGJcXFxubVA0Ym1SNGJtVDRibVY0Ym1YNGJtWjRibWI0Ym1kNGJtZjRibWg0Ym1qNGJtbDRibW40Ym1wNGJtcjRibXQ0Ym12NGJteDRibXo0Ym0xXFxcbjRibTM0Ym01NGJtNzRibTk0Ym0vNGJxQjRicUQ0YnFGNGJxSDRicUo0YnFMNGJxTjRicVA0YnFSNGJxVDRicVZZY3ErNGJxaDRicWo0YlxcXG5xbDRicW40YnFwNGJxcjRicXQ0YnF2NGJxeDRicXo0YnExNGJxMzRicTU0YnE3NGJxOTRicS80YnVCNGJ1RDRidUY0YnVINGJ1SjRidUxcXFxuNGJ1TjRidVA0YnVSNGJ1VDRidVY0YnVYNGJ1WjRidWI0YnVkNGJ1ZjRidWg0YnVqNGJ1bDRidW40YnVwNGJ1cjRidXQ0YnV2NGJ1eDRiXFxcbnV6NGJ1MTRidTM0YnU1NGJ1NzRidTk0YnUvNGJ5QTRieUI0YnlDNGJ5RDRieUU0YnlGNGJ5RzRieUg0YnlRNGJ5UjRieVM0YnlUNGJ5VVxcXG40YnlWNGJ5ZzRieWg0YnlpNGJ5ajRieWs0YnlsNGJ5bTRieW40Ynl3NGJ5eDRieXk0Ynl6NGJ5MDRieTE0YnkyNGJ5MzRiMkE0YjJCNGJcXFxuMkM0YjJENGIyRTRiMkY0YjJSNGIyVDRiMlY0YjJYNGIyZzRiMmg0YjJpNGIyajRiMms0YjJsNGIybTRiMm40YnlBenJuaHZJSE91ZUc4XFxcbmdzNjU0YnlEenJuaHZJVE91ZUc4aGM2NTRieUd6cm5odklmT3VlRzhvTTY1NGJ5aHpybmh2S0xPdWVHOG84NjU0YnlrenJuaHZLWE91ZVxcXG5HOHBzNjU0YnluenJuaHZhRE91ZUc5b2M2NTRiMml6cm5odmFQT3VlRzlwTTY1NGIybHpybmh2YWJPdWVHOXA4NjU0YjJ3enJuT3NjNjVcXFxuenF6T3VlRyt0czY1NGI2dzRiNng0YjJ3SU15VElNMkNJTXlJellMaHZiVE91YzYzenJuT3JzNjU0YitHenJuaHZiTGh2YlFnekpQTWdDXFxcbkRNazh5QklNeVR6WUxPa09HL2tPRy9rZUc5dGlETWxNeUFJTXlVeklFZ3pKVE5nczZ3NGIrZzRiK2g0YjI2NGIrbElNeUl6SUJnNGIyOFxcXG56cm5QaWM2NXo0N091ZUcvdHM2NTRiMjQ0YjI4SU15VTRvQ1FJTXl6NG9DeTRvQ3k0b0N5NG9DeTRvQ3k0b0MxNG9DMTRvQzE0b0MxNG9cXFxuQzFJU0VneklVL1B6OGhJVC9pZ0xMaWdMTGlnTExpZ0xJd05EVTJOemc1SytLSWtqMG9LWEp6WVM5allTOXp3ckJqWXk5dll5OTF3ckJtXFxcbmJtOXpiWFJsYkhSdDE1RFhrZGVTMTVObVlYamlpSkV4NG9HRU56SGlnWVE1TWVLQmhERXdNZUtCaERNeTRvR0VNekhpZ1lRMU11S0JoRFxcXG5VejRvR0VOVFRpZ1lRMU1lS0JoRFkxNG9HRU5qSGlnWVE0TStLQmhEZzE0b0dFT0RmaWdZUTRNZUtCaEdscGFXbHBhWFoyYVhacGFYWnBcXFxuYVdscGVIaHBlR2xwTU9LQmhEUGlpS3ZpaUt2aWlLdmlpS3ZpaUt2aWlLN2lpSzdpaUs3aWlLN2lpSzdqZ0lqamdJa3hNREV4TVRJeE16XFxcbkUwTVRVeE5qRTNNVGd4T1RJd0tERXBLRElwS0RNcEtEUXBLRFVwS0RZcEtEY3BLRGdwS0RrcEtERXdLU2d4TVNrb01USXBLREV6S1NneFxcXG5OQ2tvTVRVcEtERTJLU2d4Tnlrb01UZ3BLREU1S1NneU1Da29ZU2tvWWlrb1l5a29aQ2tvWlNrb1ppa29aeWtvYUNrb2FTa29haWtvYXlcXFxua29iQ2tvYlNrb2Jpa29ieWtvY0Nrb2NTa29jaWtvY3lrb2RDa29kU2tvZGlrb2R5a29lQ2tvZVNrb2VpbmlpS3ZpaUt2aWlLdmlpS3M2XFxcbk9qMDlQVDA5UGVLcm5jeTQ0ckN3NHJDeDRyQ3k0ckN6NHJDMDRyQzE0ckMyNHJDMzRyQzQ0ckM1NHJDNjRyQzc0ckM4NHJDOTRyQys0clxcXG5DLzRyR0E0ckdCNHJHQzRyR0Q0ckdFNHJHRjRyR0c0ckdINHJHSTRyR0o0ckdLNHJHTDRyR000ckdONHJHTzRyR1A0ckdRNHJHUjRyR1NcXFxuNHJHVDRyR1U0ckdWNHJHVzRyR1g0ckdZNHJHWjRyR2E0ckdiNHJHYzRyR2Q0ckdlNHJHaHlhdmh0YjNKdmVLeHFPS3hxdUt4ck9LeHMrXFxcbkt4dHNpL3lZRGlzb0hpc29QaXNvWGlzb2Zpc29uaXNvdmlzbzNpc28vaXNwSGlzcFBpc3BYaXNwZmlzcG5pc3B2aXNwM2lzcC9pc3FIaVxcXG5zcVBpc3FYaXNxZmlzcW5pc3F2aXNxM2lzcS9pc3JIaXNyUGlzclhpc3JmaXNybmlzcnZpc3IzaXNyL2lzNEhpczRQaXM0WGlzNGZpczRcXFxubmlzNHZpczQzaXM0L2lzNUhpczVQaXM1WGlzNWZpczVuaXM1dmlzNTNpczUvaXM2SGlzNlBpczZ6aXM2N2lzN1BpdGFIbXI0M3B2cC9rXFxcbnVJRGt1S2prdUxia3VML2t1Wm5rdW9Ya3Vvemt1cURrdXJybGhML2xoYVhsaGF2bGhvTGxocGJsaHF2bGg2RGxoN1hsaUlEbGlwdmxpN1xcXG5ubGpKWGxqSnJsakxqbGpZSGxqWnpsamFubGpvTGxqcmJsajRqbGo2UGxtNWZsbkovbG82dmxwSUxscElybHBKWGxwS2ZscGJQbHJaRGxcXFxucm9EbHI3amxzSS9sc0tMbHNMamxzYTdsc2JIbHQ1dmx0NlhsdDdIbHQ3N2x1YkxsdWJybHViL2x1N1RsdTc3bHZJdmx2SlBsdlpEbHZhXFxcbkhsdmJQbHY0UG1pSWptaUxibWlZdm1sSy9tbExUbWxvZm1scGZtbHFUbWxybm1sNkRtbDZYbW03RG1uSWptbktqbXJLRG1yYUxtcmJubVxcXG5yclBtcjR2bXI1VG1yNXZtc0kvbXNKVG1zTFRuZ2F2bmlLcm5pTGJuaUx2bmlML25pWWZuaVpubmladm5pcXpuam9Ubmpvbm5rNXpuazZcXFxuYm5sSmpubEovbmxLam5sTERubG92bmxwTG5tYmJubWIzbm1xN25tci9ubTY3bm41dm5uNkxubjdQbnBMcm5wcmpucHI3bnFiVG5xNHZuXFxcbnE3bm5zYlBuczdqbnZMYm52Wkhudm9ybnZyM29nSUhvZ0l6b2dKTG9nTFBvZ2Ivb2dvbm9oNlBvaDZyb2g3UG9oN3pvaUl6b2lKdm9pSlxcXG4vb2lhN29pYkxvaWJqb21ZM29tYXZvb1lEb29Zem9vYVBvcGI3b3Bvdm9wNUxvcUlEb3NMZm9zWWJvc1pYb3Niam9zcDNvdGFUb3RiRG9cXFxudHJQb3Vxdm91NHJvdnB2b3ZyRG92clhwZ3BIcGhZbnBoNGJwaDR6cGg1SHBsYmZwbG9EcG1KenBtcmJwbXJucG02anBuWkhwblo3cG5hXFxcbkxwbmFucG40dnBuNjNwbjdQcG9JSHBvcWpwbzV2cG81L3BwcGJwcHBucHBxenBxcWpwcTVqcHE1L3ByS1hwcksvcHJMTHByTHpwclpycFxcXG5zNlhwdWJYcHViL3B1cVhwdXJ2cHU0UHB1NDNwdTVIcHU3bnB1NzNwdkk3cHZKUHB2S0Rwdkx2cHZZcnB2Wkxwdm8zcHZwenB2cUF1NDRcXFxuQ1M1WTJFNVkyRklPT0NtU0RqZ3Byamdvampnb3JqZ3JQamc0amhoSURoaElIaGhxcmhoSUxoaHF6aGhxM2hoSVBoaElUaGhJWGhockRoXFxcbmhySGhockxoaHJQaGhyVGhoclhoaEpyaGhJYmhoSWZoaElqaGhLSGhoSW5oaElyaGhJdmhoSXpoaEkzaGhJN2hoSS9oaEpEaGhKSGhoSlxcXG5MaGhhSGhoYUxoaGFQaGhhVGhoYVhoaGFiaGhhZmhoYWpoaGFuaGhhcmhoYXZoaGF6aGhhM2hoYTdoaGEvaGhiRGhoYkhoaGJMaGhiUGhcXFxuaGJUaGhiWGhoSlRoaEpYaGg0ZmhoNGpoaDR6aGg0N2hoNVBoaDVmaGg1bmhoSnpoaDUzaGg1L2hoSjNoaEo3aGhLRGhoS0xoaEtQaGhLXFxcbmZoaEtuaGhLdmhoS3poaEszaGhLN2hoSy9oaExMaGhMYmhoWURoaFlmaGhZemhoN0hoaDdMaGhaZmhoWmpoaFpuaGhvVGhob1hoaG9qaFxcXG5ocEhoaHBMaGhwVGhocDdoaHFIa3VJbmxtNXZrdUlya3VLM2t1SXZubExMa3VKbmt1SUhscEtubG5MQW80WVNBS1NqaGhJSXBLT0dFZ3lcXFxua280WVNGS1NqaGhJWXBLT0dFaHlrbzRZU0pLU2poaElzcEtPR0VqQ2tvNFlTT0tTamhoSThwS09HRWtDa280WVNSS1NqaGhKSXBLT3F3XFxcbmdDa282NEtZS1Nqcmk2UXBLT3VkdkNrbzY2ZUlLU2pyc0pRcEtPeUNyQ2tvN0pXRUtTanNucEFwS095d3FDa283TG0wS1NqdGc0QXBLT1xcXG4yTWpDa283WldZS1Nqc283d3BLT3lZcE95Z2hDa283SmlrN1p1RUtTamt1SUFwS09TNmpDa281TGlKS1NqbG01c3BLT1M2bENrbzVZV3RcXFxuS1Nqa3VJTXBLT1dGcXlrbzVMbWRLU2psallFcEtPYWNpQ2tvNTRHcktTam1zTFFwS09hY3FDa282WWVSS1NqbG5KOHBLT2FYcFNrbzVxXFxcbkNxS1NqbW5Ja3BLT2VrdmlrbzVaQ05LU2puaWJrcEtPaXlvU2tvNTZXZEtTamxpclFwS09TN295a281Wkc4S1NqbHJhWXBLT2Vib3lrb1xcXG41THlCS1Nqb3M0Y3BLT1dObENrbzU2V3RLU2prdkpFcEtPaUhxaWtvNkllektlV1ZqK1c1dk9ldWozQjBaVEl4TWpJeU16STBNalV5TmpcXFxuSTNNamd5T1RNd016RXpNak16TXpRek5lcXdnT3VDbU91THBPdWR2T3VuaU91d2xPeUNyT3lWaE95ZWtPeXdxT3k1dE8yRGdPMk1qTzJWXFxcbm1PeXd1T3F6b095anZPeWRtT3lhc09TNmxPV0ZyZVM0ZytTNW5lYWdxdWFjaWVla3Z1V1FqZWVKdWVpeW9lZWxuZVdLdE9lbm1PZVV0K1xcXG5tQnFlV0VxdVdOc09henFPbWdoZVM4a2VXR21lYXRvK1czcHVXUHMrV011K1d1bCtXdHB1ZWJvK1M4Z2VpemgrV05sT1drbkRNMk16Y3pcXFxuT0RNNU5EQTBNVFF5TkRNME5EUTFORFkwTnpRNE5EazFNREhtbklneTVweUlNK2FjaURUbW5JZzE1cHlJTnVhY2lEZm1uSWc0NXB5SU9lXFxcbmFjaURFdzVweUlNVEhtbklneE11YWNpR2huWlhKblpYWnNkR1RqZ3FMamdxVGpncWJqZ3FqamdxcmpncXZqZ3EzamdxL2pnckhqZ3JQalxcXG5nclhqZ3JmamdybmpncnZqZ3IzamdyL2pnNEhqZzRUamc0YmpnNGpqZzRyamc0dmpnNHpqZzQzamc0N2pnNC9qZzVMamc1WGpnNWpqZzVcXFxudmpnNTdqZzUvamc2RGpnNkhqZzZMamc2VGpnNmJqZzZqamc2bmpnNnJqZzZ2amc2empnNjNqZzYvamc3RGpnN0hqZzdMa3U2VGxrb3pqXFxcbmdxTGpnNUhqZzd6amc0ampncUxqZzZ2amc1WGpncUhqZ3FMamc3UGpnNXJqZ3FMamdxTGpnN3pqZzZ2amdxVGpnNHZqZzdQamdyRGpncVxcXG5Uamc3UGpnNEhqZ3FiamdxbmpnN1BqZ3FqamdybmpncS9qZzd6amc0bmpncWpqZzd6amdxdmpnN3pqZ3Fyamc3UGpncm5qZ3Fyamc3empcXFxuZzZEamdxdmpncVRqZzZyamdxdmpnNm5qZzRQamc0ampncXZqZzYzamc2cmpnN3pqZ3F6amc2M2pnN1BqZ3F6amc3UGpnNTdqZ3E3amdxXFxcbnpqZ3E3amc0dmpnN3pqZ3Ezamc2WGpnNnJqZzd6amdxN2pnNnZqZzREamc3empncTNqZzYzamdxM2pnNjNqZ3JEamc2bmpnNkRqZ3EzalxcXG5nNjNqZzZIamc3empnNGpqZzZ2amdxM2pnNjNqZzYvamc0UGpnNGpqZ3JEamc2bmpnNkRqZ3JEamc2bmpnNkRqZzRqamc3UGpncS9qZzZcXFxudmpncnpqZ3FUamc2M2pncS9qZzYzamc3empnNDNqZ3JIamc3empncm5qZ3JQamc2dmpnNHJqZ3JQamc3empnNTNqZ3JYamdxVGpncS9qXFxcbmc2dmpnclhqZzdQamc0SGpnN3pqZzZEamdyZmpnNnJqZzdQamdyRGpncnZqZzdQamc0SGpncnZqZzdQamc0ampnNERqZzd6amdybmpnNFxcXG5mamdyZmpnNG5qZzZ2amc0ampnN1BqZzRyamc0N2pnNDdqZzRQamc0ampnNC9qZ3FUamc0VGpnNUhqZzd6amdydmpnN1BqZzRqamc1SGpcXFxuZzd6amc0VGpnNURqZzd6amc2empnNnZqZzVUamdxTGpncm5qZzRqamc2dmpnNVRqZ3Evamc2dmpnNVRqZ3JQamc1UGpnNnZqZzVYamdxXFxcbkhqZzZuamc0UGpnNG5qZzVYamdxUGpnN3pqZzRqamc1YmpnNFBqZ3JmamdxZmpnNnZqZzVYamc2bmpnN1BqZzVqamdxL2pnci9qZzd6alxcXG5nNnZqZzVyamdyM2pnNXJqZzR2amc1TGpnNWpqZzZ2amc0VGpnNXJqZzdQamdybmpnNXJqZzd6amdyampnNW5qZzd6amdyL2pnNTNqZ3FcXFxuVGpnN1BqZzRqamc1empnNnZqZzRqamc1dmpnN1BqZzUzamc3UGpnNG5qZzV2amc3empnNnZqZzV2amc3empnN1BqZzU3amdxVGpncS9qXFxcbmc2M2pnNTdqZ3FUamc2dmpnNTdqZzRQamc0L2pnNTdqZzZ2amdxL2pnNTdqZzdQamdyZmpnNmZqZzdQamc1L2pncS9qZzYzamc3UGpnNVxcXG4vamc2cmpnNS9qZzZyamc1RGpnN3pqZzZ2amc2SGpncXpqZzZIamdxempnNGpqZzdQamc2SGpnN3pqZzRqamc2dmpnNlRqZzd6amc0bmpcXFxuZzZUamc3empnNnZqZzZiamdxTGpnN1BqZzZyamc0UGpnNGpqZzZ2amc2cmpnNm5qZzZ2amc1VGpnN3pqZzZ2amc3empnNWJqZzZ2amc2XFxcbnpqZzZEamc2empnN1BqZzRqamdyTGpnN1BqZzYvamc0UGpnNGd3NTRLNU1lZUN1VExuZ3JrejU0SzVOT2VDdVRYbmdyazI1NEs1TitlQ1xcXG51VGpuZ3JrNTU0SzVNVERuZ3JreE1lZUN1VEV5NTRLNU1UUG5ncmt4Tk9lQ3VURTE1NEs1TVRibmdya3hOK2VDdVRFNDU0SzVNVG5uZ3JcXFxua3lNT2VDdVRJeDU0SzVNakxuZ3JreU0rZUN1VEkwNTRLNWFIQmhaR0ZoZFdKaGNtOTJjR05rYldSdE1tUnRNMmwxNWJtejVvaVE1cGl0XFxcbjVaS001YVNuNXEyajVwaU81cks3NXFDcTVieVA1THlhNTZTK2NHRnVZYzY4WVcxaGEyRnJZbTFpWjJKallXeHJZMkZzY0dadVpzNjhac1xcXG42OFoyMW5hMmRvZW10b2VtMW9lbWRvZW5Sb2VzNjhiRzFzWkd4cmJHWnRibTNPdkcxdGJXTnRhMjF0YlRKamJUSnRNbXR0TW0xdE0yTnRcXFxuTTIwemEyMHpiZUtJbFhOdDRvaVZjekpyY0dGdGNHRm5jR0Z5WVdSeVlXVGlpSlZ6Y21GazRvaVZjekp3YzI1enpyeHpiWE53ZG01MnpyXFxcbngyYlhacmRuQjNibmZPdkhkdGQydDNhOCtKYmMrSlluRmpZMk5rWStLSWxXdG5aR0puZVdoaGFIQnBibXRyYTNSc2JXeHViRzluYkhodFxcXG5hV3h0YjJ4d2FIQndiWEJ5YzNKemRuZGlkdUtJbFcxaDRvaVZiVEhtbDZVeTVwZWxNK2FYcFRUbWw2VTE1cGVsTnVhWHBUZm1sNlU0NXBcXFxuZWxPZWFYcFRFdzVwZWxNVEhtbDZVeE11YVhwVEV6NXBlbE1UVG1sNlV4TmVhWHBURTI1cGVsTVRmbWw2VXhPT2FYcFRFNTVwZWxNakRtXFxcbmw2VXlNZWFYcFRJeTVwZWxNalBtbDZVeU5PYVhwVEkxNXBlbE1qYm1sNlV5TithWHBUSTQ1cGVsTWpubWw2VXpNT2FYcFRNeDVwZWxaMlxcXG5GczZwbUI2cG1ENnBtRjZwbUg2cG1KNnBtTjZwbVA2cG1SNnBtVDZwbVY2cG1YNnBtWjZwbWI2cG1kNnBtZjZwbWg2cG1qNnBtbDZwbW5cXFxuNnBtcDZwbXI2cG10NnBxQjZwcUQ2cHFGNnBxSDZwcUo2cHFMNnBxTjZwcVA2cHFSNnBxVDZwcVY2cHFYNnBxWjZwcWI2cHlqNnB5bDZwXFxcbnluNnB5cDZweXI2cHl0NnB5djZweXo2cHkxNnB5MzZweTU2cHk3NnB5OTZweS82cDJCNnAyRDZwMkY2cDJINnAySjZwMkw2cDJONnAyUFxcXG42cDJSNnAyVDZwMlY2cDJYNnAyWjZwMmI2cDJkNnAyZjZwMmg2cDJqNnAybDZwMm42cDJwNnAycjZwMnQ2cDJ2NnAyNjZwMjg0Ylc1NnBcXFxuMi82cDZCNnA2RDZwNkY2cDZINnA2TTZwNlI2cDZUNnA2WDZwNlo2cDZiNnA2ZDZwNmY2cDZoNnA2ajZwNmw2cDZuNnA2cHlhektuc3FIXFxcbjZxMlQ2cDYxNnA2MzZwNjU2cDY3NnA2OTZwNi82cCtENnA2VTRiYU82cCtJNnArSzZwKzI2cXkzNnEyU3lvM2hqcURoanFIaGpxTGhqcVxcXG5QaGpxVGhqcVhoanFiaGpxZmhqcWpoanFuaGpxcmhqcXZoanF6aGpxM2hqcTdoanEvaGpyRGhqckhoanJMaGpyUGhqclRoanJYaGpyYmhcXFxuanJmaGpyamhqcm5oanJyaGpydmhqcnpoanIzaGpyN2hqci9oajREaGo0SGhqNExoajRQaGo0VGhqNFhoajRiaGo0ZmhqNGpoajRuaGo0XFxcbnJoajR2aGo0emhqNDNoajQ3aGo0L2hqNURoajVIaGo1TGhqNVBoajVUaGo1WGhqNWJoajVmaGo1amhqNW5oajVyaGo1dmhqNXpoajUzaFxcXG5qNTdoajUvaGo2RGhqNkhoajZMaGo2UGhqNlRoajZYaGo2YmhqNmZoajZqaGo2bmhqNnJoajZ2aGo2emhqNjNoajY3aGo2L29zWWptbTdcXFxuVG9zNGptdTVIa3VMTGxqNlhscFpIbGxvZmxwWWptaDdibm1hbm52b1hvbUwvb25ycm9vN2pwZ28vbXFJTG10SnZuZzVubmo1N29rTDNwXFxcbmhhcnBwN0hrdW9MbGpiWG1ySVRuaUp2b21LM3B1SjdsdFpEbXY2dm9sNDNvcGFUbWk0bm9oNWpvb0ovbHU0cm1uSmZtdGFybmk3enBnNFxcXG43a3ZvYmxocmZsaTU3bWs0VG1xNVBuaUpEbm02Zm9tSWJvbVp6b3Q2L3BuTExwcmEvcHQ3cm5vb3pucGIvbnRxRG9qNG5waklUb3E1YmxcXFxubzUvbHZJVG5zYURvZ2I3bmlhTG5vNHJvczRMcG03ZmxvNWpsc2FMbXFKUG10NXJtdkkvbnRLL251TGZwbVl2bGk1TG9nb3ZsaDV6bGg0XFxcbnpucUp6bnRyN29qN0hwbWJYb3JvRG1pNC9vcTc3a3VMbmxyNmZtZ0pMbmpvZm5sYkRsakpmbm83dmt2ci9sdnFua3VJM21zNHptbGJqblxcXG50S0xsajRQbG9aN25uSUhva1lub3Fxcm1ycnJtc29qbWk3N29pNlhtanFEbmxhWGt1cTdsaGFubGg0bm1vb0huczZmb2lhL29xNUxwaDRcXFxuL2xpN1hsa1lMbHU2em1sNFhtdjc3bnBLcnBscTNwcWFycHVwZnB1NDdtbTRibXJiZm92YUxsdWJUbWhwRG1pSURta3BybXZLUG5oWW5uXFxcbmtvbm5wNHJudDdUb2dhL292S2JvazY3cGdLUHBqWXJsaUpmbGlxUGxrcjNuZzRqb280TGx1NG5sdjdYbWpidm1ycTduc0w3bmpiWGt1NlxcXG5UbG03bmx0cnJtZ0p6bmpyTG5rYW5udnByb2dZYnBpTFRwbTdicG5ZanBvSmprdm92bnBxN3BoclRwbXJqbWc2SGt1b2JsZzVybHI2N2xcXFxuc0wvbWxwbm5oNDdubVlMb2s3enBnYnptbW9qcG1LN2xpb25tbmJ2bW43UG10WUhtdXB6bmtJbm5sWm5ub2F2bnRKRHBvWjdtaUs3cG1iXFxcbmpsZ0t2bHRKbm10NnJvdktybHZvdm1oWVRtb0pmcG1vYmxpS25sa0kvbHNhWG1tSlBtblk3bW9xam1zNlhua0libmw2TG52Ym5vbzQvb1xcXG5vNkhwbTZMbGpML211cnJsa0ozbmg1RG5rcGpvbDdycG1xUHBzWmZwdXAvbW5wZm10NHZvaDZqbnJLRG5zcExuaTREbmdwbm9yWmprdTRcXFxuRG9qTGJsaUxybGlJZmx1cWJtaTVQbnM1Ymxyb1htdEo3bW1yVG92THZwbVkzbHU1UGxoWURsbDREbG9acm1tYlRsaDU3bmpLcm5tNHJuXFxcbnBMem5wWjducGFYbnBvL3BuWmJuc3I3b21KTG9xN2pwZ0xqcGc3M3BvNi9wbzd6cHBLanB0clRwZzU3cG1yZmt2cTdsZzZmbGhZM2xpNFxcXG5ubGk2VGxqWkhsbHAzbG1JYmxtYWpsb1lEbG9xamxzYVRtZ3BUbWhham1obzdtaDdMbWxZL21sNkxtbXBIbW9vWG10YmZtdUpybXZLTG5cXFxuaGE3bmlLdm5rS0xub3BIbnBZbm5wWWpucFpEbnBaYm5wbzNucG83bnFZRG5xb0hucjREbnVJbm51WUhudmJMb2dJWG9oNjNvaWJub2taXFxcbmZvcEpEb3BwYm9ySUhvckxub3M1UG90SWpvdnJicG02UHBuNy9wb0x2bWdiWHdwSXV1NklpWTVMaW01WWExNVlXbzVMNkE1WVdGNVlhQVxcXG41WXVINVl1NjVaV1Y1WmFaNVplaTVhS3o1YVdFNWFXVTVhbWk1YXlvNWJ1UzVidVo1YjJwNWI2dDVvT1k1b1dPNW9TSTVvV2c1b2kwNW9cXFxuK0U1cENjNXBHUzVwV1c1cHliNXAyVzVydWI1cnVMNTRDZTU1Nm41NGkxNTRxdjU1R3g1NVNHNTVTNzU1aWQ1NWlmNTV1YjU1dTA1NTJLXFxcbjU1MkE1Nk9NNTZxeDU3Rzc1N1diNTd5KzZJMlM2SSt2NkoyNTZLV0I2S2FHNktxLzZLdUw2S3V0Nks2SzZMeTQ2WUd5NllhWjZZbTI2WlxcXG5tODZaK2I2YUNMNmF5UzhLS2hpdkNpb1lUd280K1Y0NjZkNUlDWTVJQzU4S1dKaWZDbHM1RHdwN3VUNmIyRDZiNk9abVptYVdac1ptWnBcXFxuWm1ac2MzVFZ0TlcyMWJUVnBkVzAxYXZWdnRXMjFiVFZyZGVaMXJUWHN0YTMxNkxYbE5lYjE1elhuZGVvMTZyWHFkZUIxNm5YZ3RlcDFyXFxcbnpYZ2RlcDFyelhndGVRMXJmWGtOYTQxNURXdk5lUjFyelhrdGE4MTVQV3ZOZVUxcnpYbGRhODE1Yld2TmVZMXJ6WG1kYTgxNXJXdk5lYlxcXG4xcnpYbk5hODE1N1d2TmVnMXJ6WG9kYTgxNlBXdk5lazFyelhwdGE4MTZmV3ZOZW8xcnpYcWRhODE2cld2TmVWMXJuWGtkYS8xNXZXdjlcXFxuZWsxci9Ya05lYzJiSFp1OW0rMm9EWnV0bS8yYm5hcE5xbTJvVGFnOXFHMm9mYWpkcU0ybzdhaU5xWTJwSGFxZHF2MnJQYXNkcTYycnZiXFxcbmdOdUIycjdia3R1VDJxM2JoOXVHMjRqYmk5dUYyNG5ia05tSjJLYllwOWltMjVYWXB0bUkyS2JiaDlpbTI0YllwdHVJMktiYmtOaW0yWVxcXG5uYmpOaW0yS3pZcHRpdDJLYlpoZGltMllyWXFOaXMyS2pZcmRpbzJLN1lxTm1GMktqWmlkaW8yWXJZcXRpczJLcllyZGlxMks3WXF0bUZcXFxuMktyWmlkaXEyWXJZcTlpczJLdlpoZGlyMlluWXE5bUsyS3pZcmRpczJZWFlyZGlzMkszWmhkaXUyS3pZcnRpdDJLN1poZGl6Mkt6WXM5XFxcbml0MkxQWXJ0aXoyWVhZdGRpdDJMWFpoZGkyMkt6WXR0aXQyTGJZcnRpMjJZWFl0OWl0MkxmWmhkaTQyWVhZdWRpczJMblpoZGk2Mkt6WVxcXG51dG1GMllIWXJObUIySzNaZ2RpdTJZSFpoZG1CMlluWmdkbUsyWUxZcmRtQzJZWFpndG1KMllMWml0bUQyS2ZaZzlpczJZUFlyZG1EMktcXFxuN1pnOW1FMllQWmhkbUQyWW5aZzltSzJZVFlyTm1FMkszWmhOaXUyWVRaaGRtRTJZblpoTm1LMllYWXJObUYySzNaaGRpdTJZWFpoZG1GXFxcbjJZblpoZG1LMlliWXJObUcySzNaaHRpdTJZYlpoZG1HMlluWmh0bUsyWWZZck5tSDJZWFpoOW1KMllmWml0bUsyS3paaXRpdDJZcllydFxcXG5tSzJZWFppdG1KMllyWml0aXcyYkRZc2RtdzJZblpzQ0Raak5tUklObU4yWkVnMlk3WmtTRFpqOW1SSU5tUTJaRWcyWkhac05pbTJMSFlcXFxucHRpeTJLYlpodGlvMkxIWXFOaXkyS2paaHRpcTJMSFlxdGl5MktyWmh0aXIyTEhZcTlpeTJLdlpodG1GMktmWmh0aXgyWWJZc3RtRzJZXFxcbmJaaXRpeDJZcllzdG1LMlliWXB0aXUyS2JaaDlpbzJZZllxdG1IMkxYWXJ0bUUyWWZaaHRtSDJZZlpzTm1LMllmWXE5bUgyTFBaaDlpMFxcXG4yWVhZdE5tSDJZRFpqdG1SMllEWmo5bVIyWURaa05tUjJMZlppZGkzMllyWXVkbUoyTG5aaXRpNjJZbll1dG1LMkxQWmlkaXoyWXJZdE5cXFxubUoyTFRaaXRpdDJZbllyZG1LMkt6WmlkaXMyWXJZcnRtSjJLN1ppdGkxMlluWXRkbUsyTGJaaWRpMjJZcll0TmlzMkxUWXJkaTAySzdZXFxcbnROaXgyTFBZc2RpMTJMSFl0dGl4MktmWmk5aXEyS3paaGRpcTJLM1lyTmlxMkszWmhkaXEySzdaaGRpcTJZWFlyTmlxMllYWXJkaXEyWVxcXG5YWXJ0aXMyWVhZcmRpdDJZWFppdGl0MllYWmlkaXoySzNZck5pejJLellyZGl6Mkt6WmlkaXoyWVhZcmRpejJZWFlyTml6MllYWmhkaTFcXFxuMkszWXJkaTEyWVhaaGRpMDJLM1poZGkwMkt6Wml0aTAyWVhZcnRpMDJZWFpoZGkyMkszWmlkaTIySzdaaGRpMzJZWFlyZGkzMllYWmhkXFxcbmkzMllYWml0aTUyS3paaGRpNTJZWFpoZGk1MllYWmlkaTYyWVhaaGRpNjJZWFppdGk2MllYWmlkbUIySzdaaGRtQzJZWFlyZG1DMllYWlxcXG5oZG1FMkszWmhkbUUySzNaaXRtRTJLM1ppZG1FMkt6WXJObUUySzdaaGRtRTJZWFlyZG1GMkszWXJObUYySzNaaGRtRjJLM1ppdG1GMktcXFxuellyZG1GMkt6WmhkbUYySzdZck5tRjJLN1poZG1GMkt6WXJ0bUgyWVhZck5tSDJZWFpoZG1HMkszWmhkbUcySzNaaWRtRzJLelpoZG1HXFxcbjJLelppZG1HMllYWml0bUcyWVhaaWRtSzJZWFpoZGlvMks3Wml0aXEyS3paaXRpcTJLelppZGlxMks3Wml0aXEySzdaaWRpcTJZWFppdFxcXG5pcTJZWFppZGlzMllYWml0aXMySzNaaWRpczJZWFppZGl6Mks3WmlkaTEySzNaaXRpMDJLM1ppdGkyMkszWml0bUUyS3paaXRtRTJZWFpcXFxuaXRtSzJLM1ppdG1LMkt6Wml0bUsyWVhaaXRtRjJZWFppdG1DMllYWml0bUcySzNaaXRpNTJZWFppdG1EMllYWml0bUcyS3pZcmRtRjJLXFxcbjdaaXRtRTJLelpoZG1EMllYWmhkaXMySzNaaXRpdDJLelppdG1GMkt6Wml0bUIyWVhaaXRpbzJLM1ppdGl6Mks3Wml0bUcyS3paaXRpMVxcXG4yWVRia3RtQzJZVGJrdGluMllUWmhObUgyS2ZaZzlpbzJMSFpoZGl0MllYWXI5aTEyWVRZdWRtRjJMSFlzOW1JMllUWXVkbUUyWXJaaDlcXFxubUkyTFBaaE5tRjJMWFpoTm1KMkxYWmhObUpJTmluMllUWmhObUhJTmk1MllUWml0bUhJTm1JMkxQWmhObUYyS3paaENEWXJObUUyS2ZaXFxcbmhObUgyTEhiak5pbjJZUXM0NENCT2lFLzQ0Q1c0NENYNG9DVTRvQ1RYM3Q5NDRDVTQ0Q1Y0NENRNDRDUjQ0Q0s0NENMNDRDTTQ0Q040NFxcXG5DTzQ0Q1BXMTBqSmlvdFBENWNKQ1ZBSU5tTDJZRFppeURaakNEWmpTRFpqdG1BMlk0ZzJZL1pnTm1QSU5tUTJZRFprQ0Raa2RtQTJaRWdcXFxuMlpMWmdObVMyS0hZb3RpajJLVFlwZGltMktmWXFOaXAyS3JZcTlpczJLM1lydGl2MkxEWXNkaXkyTFBZdE5pMTJMYll0OWk0MkxuWXV0XFxcbm1CMllMWmc5bUUyWVhaaHRtSDJZalppdG1FMktMWmhOaWoyWVRZcGRtRTJLY2lKeTllZkg3aXBvWGlwb2JqZzd2amdxSGpncVBqZ3FYalxcXG5ncWZqZ3Fuamc2UGpnNlhqZzZmamc0UGpnN3pqZzdQamdwbmpncHJDb3NLandxekNwc0tsNG9LcDRwU0M0b2FRNG9hUjRvYVM0b2FUNHBcXFxuYWc0cGVMOEpDUXFQQ1FrS253a0pDcThKQ1FxL0NRa0t6d2tKQ3Q4SkNRcnZDUWtLL3drSkN3OEpDUXNmQ1FrTEx3a0pDejhKQ1F0UENRXFxcbmtMWHdrSkMyOEpDUXQvQ1FrTGp3a0pDNThKQ1F1dkNRa0x2d2tKQzg4SkNRdmZDUWtMN3drSkMvOEpDUmdQQ1FrWUh3a0pHQzhKQ1JnL1xcXG5DUWtZVHdrSkdGOEpDUmh2Q1FrWWZ3a0pHSThKQ1JpZkNRa1lyd2tKR0w4SkNSalBDUWtZM3drSkdPOEpDUmovQ1FrNWp3a0pPWjhKQ1RcXFxubXZDUWs1dndrSk9jOEpDVG5mQ1FrNTd3a0pPZjhKQ1RvUENRazZId2tKT2k4SkNUby9DUWs2VHdrSk9sOEpDVHB2Q1FrNmZ3a0pPbzhKXFxcbkNUcWZDUWs2cndrSk9yOEpDVHJQQ1FrNjN3a0pPdThKQ1RyL0NRazdEd2tKT3g4SkNUc3ZDUWs3UHdrSk8wOEpDVHRmQ1FrN2J3a0pPM1xcXG44SkNUdVBDUWs3bndrSk82OEpDVHUvQ1FzNER3a0xPQjhKQ3pndkNRczRQd2tMT0U4SkN6aGZDUXM0YndrTE9IOEpDemlQQ1FzNG53a0xcXFxuT0s4SkN6aS9DUXM0endrTE9OOEpDemp2Q1FzNC93a0xPUThKQ3prZkNRczVMd2tMT1Q4SkN6bFBDUXM1WHdrTE9XOEpDemwvQ1FzNWp3XFxcbmtMT1o4SkN6bXZDUXM1dndrTE9jOEpDem5mQ1FzNTd3a0xPZjhKQ3pvUENRczZId2tMT2k4SkN6by9DUXM2VHdrTE9sOEpDenB2Q1FzNlxcXG5md2tMT284SkN6cWZDUXM2cndrTE9yOEpDenJQQ1FzNjN3a0xPdThKQ3pyL0NRczdEd2tMT3g4SkN6c3ZDUm80RHdrYU9COEpHamd2Q1JcXFxubzRQd2thT0U4SkdqaGZDUm80YndrYU9IOEpHamlQQ1JvNG53a2FPSzhKR2ppL0NSbzR6d2thT044SkdqanZDUm80L3drYU9ROEpHamtmXFxcbkNSbzVMd2thT1Q4SkdqbFBDUm81WHdrYU9XOEpHamwvQ1JvNWp3a2FPWjhKR2ptdkNSbzV2d2thT2M4SkdqbmZDUm81N3drYU9mOEphNVxcXG5vUENXdWFId2xybWk4SmE1by9DV3VhVHdscm1sOEphNXB2Q1d1YWZ3bHJtbzhKYTVxZkNXdWFyd2xybXI4SmE1clBDV3VhM3dscm11OEpcXFxuYTVyL0NXdWJEd2xybXg4SmE1c3ZDV3ViUHdscm0wOEphNXRmQ1d1YmJ3bHJtMzhKYTV1UENXdWJud2xybTY4SmE1dS9DV3Viendscm05XFxcbjhKYTV2dkNXdWIvd25ZV1g4SjJGcGZDZGhaanduWVdsOEoyRm1QQ2RoYVh3bllXdThKMkZtUENkaGFYd25ZV3Y4SjJGbVBDZGhhWHduWVxcXG5XdzhKMkZtUENkaGFYd25ZV3g4SjJGbVBDZGhhWHduWVd5OEoyR3VmQ2RoYVh3bllhNjhKMkZwZkNkaHJud25ZV2w4SjJGcnZDZGhycndcXFxubllXbDhKMkZydkNkaHJud25ZV2w4SjJGci9DZGhycnduWVdsOEoyRnI4U3h5TGZpaUlmaWlJTHducVNpOEo2a28vQ2VwS1R3bnFTbDhKXFxcbjZrcHZDZXBLZnducVNvOEo2a3FmQ2VwS3J3bnFTcjhKNmtyUENlcEszd25xU3U4SjZrci9DZXBMRHducVN4OEo2a3N2Q2VwTFB3bnFTMFxcXG44SjZrdGZDZXBMYnducVMzOEo2a3VQQ2VwTG53bnFTNjhKNmt1L0NlcEx6d25xUzk4SjZrdnZDZXBML3ducVdBOEo2bGdmQ2VwWUx3bnFcXFxuV0QyYTdhb2Rtdk1Dd3hMRElzTXl3MExEVXNOaXczTERnc09TempnSlJ6NDRDVmQzcG9kbk5rY0hCMmQyTnRZMjFrYlhKa2F1T0J1K09CXFxcbmkrT0NzK09DcytXdGwrV1BqT09EaCtXa211aW5vK1M2cE9hWW9PZUVvZVdKamVXK2pPV0dqZWFXc09XSW5lZTFndWl5cWVXanNPV1F1ZVxcXG5hOGxPYUtsZWFObGVtQml1YU1oK2FKaytlbWdlZXB1dVdRaU9hNmdPZVVzK1dKc3VXV3R1bUZqZU9BbE9hY3JPT0FsZU9BbE9TNGllT0FcXFxubGVPQWxPUzZqT09BbGVPQWxPV3VpZU9BbGVPQWxPZUN1ZU9BbGVPQWxPYUprK09BbGVPQWxPZWJsK09BbGVPQWxPV0xuZU9BbGVPQWxPXFxcbmFWbCtPQWxlVytsK1dQcitTNHZlUzR1T1M1Z2ZDZ2hLTGt2YURrdnJ2bGdJTGxnYnJsZ3BubGc0L2prcDd3b0ppNjVZV1U1WVdrNVlXM1xcXG44S0NVbk9PU3VlV0ZwL0NnbFl2bGhwZmxocVRrdTR6bGhxendxWWVmNVlpRDQ1T2Y1WWk3NVltRzVZbTM0NVNWNVl5RjVZeUc1WTJKNVlcXFxuMmE1WTJ6NVkyOTVZMi84S0Nvck9lQnNPV1BpdVdQbi9DZ3JhUGxqNnZsajdIbGtJYmxrcDdsa0xqbGtZamxrYWpsa3FMbGs3YmxsSkRsXFxcbmxaUGxsYVBsbG9UbGxxdmxsclBsbDRMbG5KYmxuSmZsbVpIbG1iVGxvNjdsbjQ3bG43VGxvSTNsbm92bG9MTGxvTEhsb3F6d29aT2s1YVxcXG5PeTVhTzM1YVNHNWFTaTVhV2k4S0dhcVBDaG02cmxwNnpscUp2bHFLZmxwNWpscWFiam02N2xySWpsckw3d29hZUk1YStENWErWTVhK3pcXFxuOEtHc21PV3Z2K1d3aHVPZWdlV3hvT1d6Z09XeWpmQ2h0NlRsdFlQd29iZW01Yld1NWJXcjViVzg1YmVoNWJlaTQ2Q3Y1YmU5NWJpbzViXFxcbmk5NWJtcDQ2R2k4S0tHZytPaHZPVzZzT1c2cytXNnR2Q3FqcEx3b295eDZJaUI1YnlpNDZPSDhLT0t1UENtaDVybHZhTGx2YXZqbzZQbFxcXG52cHJsdjQzbHY1Zmx2N25tZ29IanBMcmpwSnp3b3B1VTVvT0g1b1dJNW9XTTVvVzY1b2F5NW9hazVvYXY1b2VlNW9pUTVvaWI1b21kNW9cXFxucXg1b3VVNW8yUThLS3NqT2FNdmVhTHZPYU5xT2FPZythUHBQQ2lyN0hta0tMbWo0WG1qcW5qcUs3bWthbm1rYjdta3AzbWtiZmpxYXptXFxcbmxhendvNENLNXBlajVwdTQ1cG1KNDZ5WjQ2eUk0NnVrNVlhUzVZYVY1cHlBNXBxYzZJS3Q1SStaNXB5aDVwMmU1cDJUOEtPUGcrT3RpZVxcXG5hZnV1YWVoZWFoa3ZDamthM21vbzdtb0ovbXBKVG1wWUxtcHFQbXA2cm1xcWp3bzVxajVxdWI0N0NZNXF5aDhLT2lwK2F0bE9PeGp1YXRcXFxuc3VhdW4rYXV1L0NqcW8zd29iU0w4S09ydXVheGp2Q2pzcnptc3IvbXM0M21zYWZtdEpibXRMN210YW5tdGJqbXRvWHdvN1NlNXJTMDVyXFxcbml2NXJtdTQ3U3o1cnVIOEtPN2tlYTN1ZWE5cnZDanZaN3dvNzZPNXIrRzU0QzU1NENiNDdhVzU0R0s1NEc5NTRHMzU0S3Q4S0NVcGVlRlxcXG5oZkNraWFQbmhwem5pS2puaVpEd3BKaUk1NHFBNTRxVjhLU2N0ZkNrb0pUbmpicm5qb3ZqdXF6bmpxWGp1cmpua1lmbmtaem5rb1huazRcXFxucmp2SnZubEtUd3BMQzI1NVMrOEtTeWt2Q2locC9ubUpEd3BMNmg4S1MrdVBDbGdZVGp2N3prZ0lqd3BZT3o4S1dEc3ZDbGhKbndwWVN6XFxcbjU1eWU1NXlmNTU2TDVJR0c1SUtXOEtXUW5lZWhqdVNEby9DbG1LYndwWnFhOEtXYmhlZW5xK1NFcitlcGl1ZXBqL0NscGJ6d3BhcW41SVxcXG5pQzhLV3VxK2V2aHVldmllU0lwL0Nsc29EbnM1TGtpcURuczZqbnM2UG50SUR3cGI2RzU3V2o1SXlCNTdlSDU3aUM1N21GNUl5MDhLYUlcXFxucVBDbWlZZmtqWm53cG91WjU3MjY4S2FNdnVlK2xlZS91dkNtazVyd3BwU2o2SUdnOEthV3FPaUJzUENqalova2o1WG9nckxvaElQa2tJXFxcbnZvaEw3bHFyWHdwcDZuOEthZXRmQ2pqcFB3bzQ2YzZJaUU2TDZlNUpHcjZJcVI2SXFMNklxZDVZcXo2SXF4NklxejZJcTk2SXVtOEthc1xcXG52T2lNbmVpTm8raU9yZWlNbytpT3ZlaVBwK2lOaytpUGl1aVBqT2lQblBDbXNMYndwcldyOEthemxlU1VxK2lUc2VpVHMraVVsdkNuajRcXFxucm9sYVR3cHJ5czVKV2Q1SldoOEthK3NmQ25nNUxrbGF2b21aRG9tYWZvbWFub21xbm9tb2pvbkk3b202TG9uS2pvbmF2b25vYm9uNkhvXFxcbm9JSGtsN25vb2FEd3A1bW42S09YNktPZTVKaTE2S082NDVLNzhLZWlydkNucGFia21yN2ttNGZvcXFEd3A3S282TEtyNkxPQjZMU2I2TFxcXG5XMzhLZThyL0Nnb0lUb3Q0dm90cnpvdDdEd29LT2U2THVVOEtpWGt2Q29sNjNwZ3BUcGc3SHBoSkh3cUp5dTZZU2I2WWk0Nll1WDZZdVlcXFxuNlltODZZKzU2WkNWOEtpdnV1bVdpK1NtbGVtV3QvQ290YmZrcDZicG00UGx0ckxwbktQd3FZV0Y4S21JbXVTcHJ1U3B0dW1mb1BDcGtJXFxcbnJrcXJMd3FaS1c2YUNwOEttV3R1bWpvdVNzcytta3FlbW1wK21uZ3VtbnZ1U3ZqdkNwckxEcHNZRHBzNzNrczQ3a3M2M3B0YWZ3cW9PT1xcXG41TE80OEtxRWhmQ3FpSTd3cW9xUjVMV1c2YnUrNmJ5RjZieVA2YnlXOEtxWWdBQUFBUUFrQXBjQkJBQUFBRzhBQkFDdkFBQUFBQUFFQUFcXFxuQUFBQUNJQUFvQUNBQUFBQUFBQUFBY0FFWUFBUUFOQUJzQUFBQVZBQklBUlFEc0FEWUFFQUFBQUFBQUFBQUNBQUFBbEFBQUFGY0FBQUFJXFxcbkFBTUFCd0FBQUJZQU9nQUNBQ01BQXdBRUFCd0FBUUFBQUVjQUVRQVhBQVFBR3dBQUFCTUFBQUFBQUFBQUFBQUJBQWNBQndBRUFDNEFBQVxcXG5BQUFDd0FBQUFBQUFNQUR3QUFBQUFBRXdBQUFBRUFBZ0FCQUFrQUFBQUFBQUFBQVFBQkFBQUFBZ0FDQUFNQUFnQWVBQUFBQ0FBUkFBRUFcXFxuQUFBRkFBQUFlUUFBQUFRQUV3QUFBQUFBQlFBQ0FBQUFCUUFCQUJVQUFRQUFBQU1BREFBQUFEVUFBd0FDQUFVQUJnQUFBQVVBQkFBQ0FCXFxcbndBQUFBQUFBQUFCQUFBQUFBQUFBQUpBQUlBQ1FBSEFBQUFCUUFBQUFnQUJ3QUFBQklBQ1FBQUFEa0FBZ0FKQUFBQUJBQUNBQUFBQUFBQVxcXG5BQUFBQUFBQUFBRUFJZ0FDQUFBQUd3QVRBQXdBRkFBR0FBUUFCUUFUQUFJQUFBQURBQVFBQWdBQUFCZ0FBQUFHQUFRQUFBQUFBQW9BQ2dcXFxuQUFBQUVBQUFBUEFCQUFBUUFBQUFBQUFBQUNBQThBQVFBRUFBSUFDZ0FMQUFrQUJBQUJBQUFBQ3dBQUFBTUFBQUFHQUFBQUJnQUFBQU1BXFxcbkJBQUFBQUFBQXdBQUFBQUFBUUFDQUJVQUFBQUFBQUFBRkFBYkFBQUFEQUFBQUFBQUNBQURBQXdBQUFBT0FBSUFBQUFEQUFBQUNnQUNBQVxcXG5ZQUFRQUFBQVFBQUFBQkFBWUFBZ0FEQUFJQUVBQUFBQThBQUFBQUFBQUFBd0FEQUFRQURRQUdBQUFBQUFBQ0FBQUFBQUFBQUJnQUNnQUdcXFxuQUFFQUFRQUlBQUFBQVFBQkFBY0FBQUFEQUFrQUVRQUZBQUVBQlFBREFCWUFCd0FGQUFRQUFBQUtBQVlBQXdBQUFBRUFBQUFIQUFBQUJnXFxcbkFBQUFVQVFRQUpBQUVBQ2dBQUFBVUFBZ0FSQUFzQUF3QUJBQUFBQUFBQkFBRUFBQUFDQUFBQUJnQVlBQU1BQUFBREFBQUFBZ0FBQUFJQVxcXG5BQUFBQUFBQUFBQUZBQUVBQUFBQUFBa0FBUUFBQUFBQUFnQUJBQUFBQVFBQ0FBRUFBQUFEQUFFQUFRQUJBQUFBQXdBTUFBRUFBd0FCQUFcXFxuQUFBZ0FBQUFBQUJRQUJBQVVBQUFBQkFBc0FCUUFBQUFBQUFBQUFBQUFBQUFBUEFBQUFBQUFDQUFjQUFBQUFBQUFBQUFBQUFBQUFBUUFBXFxcbkFBa0FDQUFBQUFBQUF3QURBQUVBQkFBREFBUUFCUUFDQUFBQUFBQUNBQVlBQVFBRkFBRUFBQUFEQUFZQUNBQUNBQUlBQmdBREFBQUFFQVxcXG5BR0FBWUFCUUFCQUFjQUFBQUNBQU1BQWdBQUFBQUFBQUFHQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFFQUNBQUJBQUFBQWdBQUFBRUFcXFxuREFBRUFBRUFBZ0FCQUFRQUFnQUZBQVFBQUFBREFBUUFBZ0FBQUFFQUF3QUhBQVlBQ0FBQUFBSUFBd0FBQUFJQUFnQUNBQVFBQUFBQUFBXFxcbllBQmdBR0FBd0FCUUFBQUFBQUFBQUJBQUlBQUFBREFBQUFDUUFEQUFJQUFRQUJBQWtBQVFBQUFBZ0FBUUFHQUFBQUF3QUFBQVVBQVFBQlxcXG5BQUFBQUFBQ0FBUUFBQUFDQUFBQUFnQUdBQVlBQWdBSUFBVUFCZ0FGQUFFQUJnQUNBQUFBQVFBQUFBQUFBd0FBQUFFQUNRQUZBQVVBRGdcXFxuQUFBQU1BQlFBQUFBQUFBUUFCQUFBQUFBQUFBQUFBQVFBRUFBQUFBZ0FFQUFZQUJRQUdBQUFBQUFBQkFBRUFBQUFBQUFVQUFnQUlBQWdBXFxcbkFRQUdBQUFBQVFBQUFBRUFBQUFJQUFBQUJBQUhBQW9BQVFBQUFBQUFBZ0FCQUFFQUFRQUFBQUVBQWdBQUFBSUFBUUFFQUFRQUFBQUFBQVxcXG5BQUJnQUFBQU1BQXdBQUFBQUFBQUFBQUFBQUFnQUJBQUVBQWdBQ0FBQUFCQUFDQUFFQUFBQUFBQUVBQUFBQkFBRUFBQUFDQUFJQUFnQUNcXFxuQUFBQUFRQUZBQVFBQVFBQUFBRUFBUUFBQUFBQUFRQUVBQUVBQWdBQkFBRUFBQUFBQUFBQUFBQUFBQUVBQUFBQkFBQUFBQUFFQUFFQUFnXFxcbkFBQUFFQURRQUVBQUFBQVFBRUFBQUFCUUFEQUFjQUF3QURBQU1BQWdBQUFBSUFBZ0FDQUFFQUFBQUJBQU1BQkFBQkFBQUFBUUFFQUFFQVxcXG5BQUFBQUFBQUFRQURBQUVBQUFBQUFBRUFCQUFCQUFnQUFnQUVBQUVBQVFBQkFBVUFBUUFFQUFFQUFRQUNBQVlBQUFBQUFBQUFBQUFDQUFcXFxuQUFBZ0FBQUFZQUF3QUJBQU1BQWdBREFBVUFCQUFCQUFBQUJRQUFBQUFBQVFBREFBQUFBZ0FBQUFFQUFRQUFBQUFBQUFBQkFBQUFBQUFBXFxcbkFBVUFCUUFJQUFBQUFBQUFBQUFBQmdBQUFBQUFBQUFBQUFJQUFnQUZBQUVBQUFBQkFBRUFBQUFDQUFJQUJ3QUJBQUVBQWdBQUFBSUFBZ1xcXG5BQkFBQUFBQUFCQUFBQUFnQUNBQUlBQkFBQkFBUUFBQUFDQUFJQUJBQUVBQUFBQ0FBRUFBWUFBZ0FCQUFFQUFBQUJBQUFBQUFBQUFBTUFcXFxuQmdBQkFBQUFBd0FDQUFFQUFBQUZBQVFBQUFBQUFBVUFBZ0FBQUFBQUFnQUFBQUFBQkFBREFBQUFDUUFGQUFJQUFBQUFBQUlBQUFBQkFBXFxcbmNBQUFBREFBRUFBZ0FCQUFBQUFBQUNBQU1BQUFBQ0FBTUFBUUFDQUFFQUFnQUFBQVFBQWdBQkFBRUFBUUFDQUFJQUFBQUVBQUlBQVFBQVxcXG5BQUFBQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFnQUFBQUVBQUFBQ0FBRUFBUUFBQUFJQUFBQUJBQUFBQUFcXFxuQUJBQUVBQUFBQkFBQUFBZ0FBQUFNQUFBQUJBQUVBQUFBQUFBRUFBZ0FCQUFJQUF3QUZBQU1BQVFBQUFBRUFBd0FIQUFBQUFBQUNBQUFBXFxcbkFnQURBQUVBNWtvREFPYjZMUURhK2gwQTNEa0RBT244SFFBSlRRb0E1dEFnQU9hVEJRRGM0QUlCNXZRY0FOeWlCUURtSnY0QUNVVWRBUlxcXG5uQ0JRRGM2Z1lBNW5XbUFOeE9Ed0htNjZnQTNESURBQWxOREFEbVFRY0EySEhSQWR3dC9nRG04aDBBNXQ0ZEFPYmhxQUFVdXdVQTV0VWRcXFxuQU9iT0NBRG1leG9BaEhRUEFPYm1xQUFmR1FZQUI4TVVBZVo1R2dEbVhRWUFIUEVJQU9ZZzRBSG04YWdBM1AwZEFPWWwvZ0RtUitrQjVuXFxcblVhQUFtNkRnRG1LdUFCRzBzR0FPYlpCZ0FKdGhZQjV1d2RBQWs2RGdEbVZBa0E1dWt0QU9hekdnRG04d2dBNXZjSUFPYmlxQURtQytBQlxcXG4zQ2orQUFIWUlBRG1zS29BM0UwUEFlWWxDQURtRVFZQTVyNnFBT1lnQ0FEbTZBZ0E1Z1lEQU9ia0xRQUpRUjhCQjhvUkFlYndMQURjMXhcXFxud0EzRG9LQWVZeDRRRUpPaEFBM0RzSEFPaFlBd0RtaHdRQTVyRWFBT1p3RXdIbTBCd0E1dTZvQU53OEF3RG0xU0FBNWhrSUFPWXdhd0VCXFxcbjgyb0JCN3dKQU9icEhRRG0yaDBBNW1zVEFlWXJDQUFKTkJjQTV0c2RBQTYwQlFEaWJkRUJBV25SQWVaTUF3RG04QzBBQVRjREFPWnpFd1xcXG5FSDZSSUIzTUFhQUFIcUlBRG1QZ01BZ1hFUEFBRm8wUUhtUmdNQTNOYm9BZHpRNkFIY0xQNEE1dUFjQU9icUNBRG0yeUFBNWpGckFlWTFcXFxuQndEYy9RNEIzSDdSQVFrMEdnSG1Id2dBNWh6Z0FlYmZIUURjNkNBQUNlMnJBT2JoSFFEY0ZnTUEzSUxSQWViWElBQWZUd1lBNXZVSUFBXFxcbmxORFFEbXlSb0FDYmtRQWVhOEdnRG1lcVlBNXFyUkFkenU1QUhtTU9FQjVwOEZBTjQ1R1FEbVZ3TUFDZUFaQVFid2J3SG1Nd2NBM0NuK1xcXG5BT2I0SEFBSmhBOEE1bVFEQU53WEF3RG1nd1FBNW13REFBdXhCUURtMGh3QTVnY0RBQ0ZSQmdEY01BTUEzQmtEQU54V0JnRG01QjBBM0ZcXFxuSUpBUEJGQXdEbThTMEEzRHNaQU9aWkJnRG1xd1VBNW5NYkFPYnhMQUFIdkFvQWdud1BBT1pxRXdIbTVLZ0E1dnNJQUF5eUJRRG1JZjRBXFxcbjV2c3RBT2dhQXdEY09BY0FBZE1nQU53cS9nRG1hUk1CZ25JUEFPYkNHZ0RjZTlFQjVvWVBBTW9uQXdEbXdCMEE1a2dQQVFsR0VBSG1heFxcXG5zQTNPWUlBT1kwNFFIbVFRTUE2UFlkQU9ic3FBRG1xOUVCNXV3R0FPYXU0Z0VQdFFVQTVzY2FBT1lDNEFIY3hnOEE1amJoQWViZkNBQWNcXFxuVEFZQTVsZ0dBT2JoQmdEbTV5MEEzTThJQU9ZQ0F3RGN4Qm9BNXIrcUFCTzVCUURjaTlFQkNTc1hBZWJ6TFFEY09RY0E1dUF0QU56Y0hBXFxcbkFKY0JBQjNDeXBBT1lqQ0FEbTh4MEE1bjJtQU54R0R3SG16QjBBNXR3R0FBbEhHZ0YydVE0QTVtc0RBT1plQmdEbStSd0E1dFlJQU9iZ1xcXG5DQURtYmhzQTV0Z0lBT1ltNEFIbVF3TUFBZGtnQU9aSTZRRVF0Z1VBNWhIZ0FlYm9IUURrOXgwQTV2d3RBQW1YSFFIbWhnUUE1c0VkQU5cXFxueVJCUUFKUkIwQkNjU29BQW1xR3dEYy93NEIzTzBHQU54V0F3RG03aDBBNXUwdEFCMU5CZ0FKMGhjQUNUd05BT1pGNlFFSndoUUI1Z01EXFxcbkFPYndwZ0RnTHpBQTVodmdBZVpvRXdFSlB4WUJBZU1jQU55akJRRGM3d2dBM0pZRkFPWW80QUhjVHc4QkNTeW9BTmh5MFFIbTd5d0E1a1xcXG5rUEFlYnFxQURjTEFNQUNUc05BT1lQNEFIYzdRZ0FDUlFYQU9hN0dnRGMwK2dCQnp3TEFPYWRCUURjNWdvQjV2c2RBQWJ4YndIbUtnZ0FcXFxuM080Z0FOemZIQURjM1J3QTNOSUlBT1pmRXdDQ2VnOEE1aEFHQUFsQ0ZBSG03aTBBNWw0VUFlWTlCd0RxWFFNQTVpLytBQWU4REFEbXh4XFxcbjBBNXVjR0FNb2hBd0RjcGdVQTV2Q29BQk82QlFEbTdDMEEzTzRJQUFIeWFnRVN4d1VBNWhJR0FPYWNCUUFIUWgwQjNMb2FBT2EwR2dEY1xcXG4wdWdCM0ZzSUFPWnlHd0RtQU9BQkNyQUZBTnpGQlFEY1J3OEI1bmdhQUFrMEVRRUhSaFFCNWlZTkFlYmNJQURtVUFNQWduMFBBTndmQXdcXFxuQUpPUkFBM05NSUFBZm1Hd0RjTVFjQTVoSURBT1lwQ0FEYytnZ0E1dXNIQU9iZEhRRFlaZEVCNXVrZ0FPWWU0QUhtTmVFQjV1MGRBRnRXXFxcbkRBRG1FdUFCNXVNdEFJSjdEd0RjM2h3QTVtMERBT2IwQ0FEYzFPZ0IzRHdIQU9aMEV3SG1yQVVBNXNnYUFPYnJMUURjSzZrQUIzTVJBUVxcXG5uQUVRRUJOZ01BZ29BUEFPYlVJQURjbXdVQTVnSGdBZVluQ0FBQk5BTUEyQnNEQUFIU0lBRG1BK0FCNXZBZEFOd2RBd0RtOUMwQTVuSVRcXFxuQWVZVUF3RGtxUmdBNW13VEFlYmxMUUFKTXhFQjVsMFRBT1ozR2dCbk9RNEE1aWNOQVFuTkRBRGNMUU1BNXBJRkFPYnZMUURteWdnQTV1XFxcbkV0QU9aWEJnRGNLd01BNXF3T0FlWUpBd0RtTUFjQTNGOEdBT1lVNEFIbTNnZ0E1djR0QU9ZemF3SG16UWdBM0NrREFCM3lDQUFIUEFrQVxcXG41a2NIQU54WkNBRG1OZ2NBNWpnS0FlWWRDQURjMVJ3QTVrTUhBTnhHQndEY21RZ0FJQm9HQUFIaUhBRG1BUU1BNWtUcEFlYUcwUUhtNEFcXFxuWUFCME1aQWR4VkF3QWVHQVlBNW0rbUFPYi9DQURtQUJFQjVqMERBTnpDSFFEbUZRWUE1a0lEQU9ZWEdnRG1aeE1CNXFzT0FlYnJCZ0RtXFxcbkgrQUJhMG9PQU53bEF3RGNTUU1BNWlQK0FPWjJBd0htL3kwQTJHL1JBZVlQQXdBSnF4c0E1dUl0QU9aQUJ3QUpQaGtCMkRrUEFOenZJQVxcXG5EbTVpMEE1b2ZSQWViU0hRRG1TZzhCNXRnR0FBYzBHd0RtNmkwQTVubW1BT2FFRHdIbWh3OEE2VjhEQU9ZQUF3RG03Z2NBNXZJdEFBbENcXFxuSHdIbU9nY0EzQjREQU9ZTjRBSFd6aDBBM0xjYUFOaHUwUUhtVWdNQTNQWUlBT1ozcGdEbWZCb0E1dWNJQU9ZeWF3SG0yUjBBM1BrZEFOXFxcbnpwQ0FEbVpoTUI1c1lhQUFIbkhBRG0wUndBNmw0REFBSDBhZ0htc0JvQTVrc0RBTnc3QXdBamNBWUE1bVlEQU9ZbERRSG0vZ2tBM0xTcVxcXG5BQW5OQ3dEbXlSMEFGcjBGQU56UUNBRG1GZ2dBM1AwQkFRYzhDZ0RjZk5FQjVqSUhBT1ltQ0FBSE94TUIzTmtjQU9ZZUNBRGNndzhCNWhcXFxuTURBTnovSFFEY2Y5RUJBV2ZSQVFsZ0dnRG1TZWtCM0EwS0FRazVHQUhjR1E4QTV1Y2RBQWxOQ3dEbW5BZ0E1djB0QU9abkF3QUp3S2tBXFxcbjVudW1BTnd6QXdEbW9RVUE1dXNJQU9ZSjRBSG03eDBBM0NRREFOd3IvZ0RjSi80QTVpUU5BZVliQ0FEbUNPQUI1aDNnQVFsVHFRRG0yd1xcXG5ZQVZGVU1BQWwvTFFEbTJod0FGYndGQU42YUJRRG1kcVlBNXZndEFPYldJQUFOc3dVQTNJSFJBZHpLR2dEbVV3a0F5aWdEQU9hZ0JRRG1cXFxubFFVQTV0VUlBT1lJQXdEbWRLWUE1Z3dEQU9aMkdnRG14aDBBNXVJR0FPWk1Ed0htOENBQTVzc0lBT1lQQ2dIbVhoTUE1bThiQU9heUdnXFxcbkRrK0IwQTNLb0ZBT2JsQ2dIbW53Z0E1Z3pnQVFIbElBRG0vQWdBSUZBR0FPYnNDQURtbUFnQTV1M2lBZWJYSFFCbk9BNEE1cDBJQU9aeFxcXG5Hd0RjV2dnQTVzVWRBT2FKMFFIbW42WUEzRWdEQU9iYkNBRG14QjBBM0NBREFPYmpxQURtUnVrQjJIRFJBUW4ycWdEbXpCb0E2bUFEQU5cXFxueS9HZ0Rtd1JvQTZDd3dBT2IzTFFCMnVBNEE1akxoQWViK0hRRG1Qd01BQWVzZ0FPWXRDQURjUndNQUJ6WVNBZWJ4cGdEbVNRY0E1dDBYXFxcbkFPYnhCd0RtRndZQTVzMGFBT2JtSFFEbTVBZ0E1bEVEQU9hZUNBRG1Fd1lBNnMwZEFOeFZCZ0RtNFNBQTNGd0dBTnk5R2dEY3VSb0E1blxcXG5pbUFBay9DZ0hjS2dNQTV1Mm9BTm9xTUFBQjJpQUE1ZzBEQU9Rck1BRG0xd2dBRy9BSUFPYmNDQUFSdHdVQUNRYW9BT2F0MFFIbTVBWUFcXFxuNXVBZEFONnRCUURtOFIwQTVnSVJBZHpWNkFIbURnTUE1dThIQU9id0J3RG1sd1VBNWlmZ0FlYnM0Z0hjSEFNQTZCVURBT2EzcWdEbUZnXFxcbllBNXZZdEFCZS9CUUFCT1FvQjVsTUdBTmhtMFFIbXhSb0E2bUVEQU9iNENBRGN3eG9BQnpjUUFBazFFZ0htYmdNQTVnVGdBZVlqNEFIbVxcXG5hQU1BNXRZZEFPWkVBd0RjUWdjQTVvVUVBQWU2RUFIYzJCd0FBZFFjQU9iK0NBRG05UzBBNWc3Z0FYckxEZ0FKVFFrQTV1c2RBQWM4RXdcXFxuSG03K1FCM0ZrREFPWVE0QUhtQkFNQTVxZ0ZBTnpXSEFEbXM2b0E1bkFiQU9ib0JnRGNMYWtBNXRrSUFPWTBhd0hjR0E4QTVnb0RBTnp0XFxcbklBRG83T1FCNXUvaUFlWkMwZ0hjVkFNQUFmRnFBZVpiQXdEbTR4MEEzRDRIQU9ZRjRBRUp2eFVCNXNnZEFPYUVCQURtSEFnQTVqUGhBUlxcXG5LNEJRRG1RQU1BNXBnRkFBR2V2QUhtM0IwQUI4QVZBZHpqQ0FBSlB4d0IzSVVQQWVsY0F3RG0yeHdBNXF6UkFkelI2QUhjdFJvQUNjb05cXFxuQU1vaUF3RGNTdzhCNXNNZEFOeGFBd0RtN0FjQUNlb1NBV3RMRGdEYy9RY0EzQzREQU9aYkJnRG1JdjRBNXRNZEFOeWFDQURtNktnQTNQXFxcbmtJQU9adkF3RG1iUnNBNXN3SUFBbE5Fd0htT2hrQUNKb3dBT1lnL2dEbTRoMEEzTzBjQU56K0RnSG1FK0FCNXRRSUFOeE9Bd0RtTldzQlxcXG41bm9EQVFsL0VBSG0zUWdBNXRFZEFBRTRBd0RtZktZQTVzNGFBT2FQNEFFSE9oZ0I1a1RTQWVZWTRBRUp6UW9BM0tVRkFCNU9CZ0FCNUJcXFxud0EzRGNQQU9aRkJ3QUhQQXdBSWxJR0FPWUZBd0RjT2dNQTV2VWRBT1lYNEFFQjZCd0FDVDBaQWViUklBRGNHQU1BNWlJSUFBZTNGZ0htXFxcbkVBTUE1aUVJQU9aNEF3SGNwQVVBNW9NUEFPYkJxZ0RLMEIwQTVvWFJBZHpSQ0FEbXJ3VUE1dVVkQUFpWk1BRG1aUU1BNWxFSkFPWnBBd1xcXG5EY1NBY0Flc2tPQU9ZWENBRG0yZ1lBNk8za0FRSGxIQURjTndjQTVoRURBTnpqQmdBSjh4c0EzSnNJQU9ZQkVRRVl3UVVBNXVndEFPWVVcXFxuQmdEbUx2NEE1bmtEQWR6UEhRRG1MQWdBM0M4REFBbEVHd0FKRlJjQTVzc2FBTnhzR3dCNnlnNEE1aFhnQVFIbUlBRG1KUDRBNWtQU0FlXFxcblloNEFGclNRNEFKQkVIQU9iZkJnQUhzNmtBNWxvR0FOeC9HZ0RtMmdnQTV1RUlBQW1aR2dIY2dORUI1dStvQU9iMEhRRG1kd01CNldJRFxcXG5BT2FVQlFBQk5RTUEzUElIQU55SzBRSG15eDBBNXFrRkFBSG1IQURjVFFNQWVzZ09BT2JYQmdEY2pSQUE1c1FGQU9acUF3RGNKZ01BNWdcXFxucmdBZWJncUFEY3B3VUE1dW9kQU9iV0JnRG01NmdBNWdzREFBSHdhZ0VITnh3QTRDNHdBR3RJRGdEbTJCMEEzTGdhQU53WUdnRG0rUzBBXFxcbkdoNzdBT1pqQXdEbVNnY0E1aVRnQWVhWkJRRG1uZ1VBNXZNSEFBbnlHd0RtR0FnQTV1bW9BT1kyYXdIY1VBOEI1dFFkQU9heXFnRG01YVxcXG5nQTNFUUhBT2FDRHdIZUxUQUEzREVEQU9hSTBRSG03UWNBNWdiZ0FlYTRxZ0RjVXdNQTVoYmdBZHpLSFFEbVB3Y0EzRFVQQU9hZXBnRGNcXFxuSXdNQTV1VUlBTnpzSUFEbTd1SUI1SzRGQU9aeEV3SG1LZUFCM0RRSEFOeTJHZ0RtNXlBQTNIM1JBZWI5Q0FBSnpRa0E1b0lQQU9aNkdnXFxcbkRtVkFZQUIwcnBBUUFBQUFBQUFBQUFYUUlEQUYwQUFBQUNBQWtBQkFDSEFBWUFOUUVCQUFBQUFBQUVBQU1BNFFCNEFBQUFBZ0FwQUFnQVxcXG5qd0FrQUFBQUFBQUFBREVBQUFBQUFHMEFBQUF6QUFFQVRBQUFBQUVBQUFBQUFBZ0FmQUFHQUV3QVJRQXFBQUlBQUFBQUFBQUFDZ0FBQUFcXFxuQUFXUUFBQUJBQUF3QUpBQTRBQmdBQkFBd0FFQUFBQUFBQUFBQTlBQUFBQUFBcUFBQUFBQUFCQUNBQUNnQUFBQUVBRGdBQ0FCQUFJZ0FBXFxcbkFHRUFBQUFFQUJVQUFBQUVBQU1BQUFBQUFBTUFBQUFOQUFFQUFRQWtBQU1BQkFBQUFBQUFHQUJZQUFBQUFBQUtBQmtBRUFBQUFBSUFBQVxcXG5BQUFCSUFGUUFBQUF3QUJ3QURBQUFBR2dBSEFBd0FBUUFGQUFRQUlRQUJBQUlBQUFBQUFBRUFDZ0FBQUFvQUFBQUVBQWtBQlFBTkFBVUFcXFxuQUFBREFBWUFKZ0FMQUFBQUJBQUdBQUFBRXdBQUFBQUFCQUFCQUFBQUFBQUFBQ1FBQVFBZEFBRUFBQUFBQUJBQUFBQUJBQUVBQVFBQUFBXFxcbkFBQ2dBQUFBMEFBQUFRQUFBQUJnQUZBQUFBQUFBSkFBTUFBUUFBQUFBQUFBQUFBQUlBQVFBQ0FBQUFBQUFXQUFFQUFnQUFBQUVBQUFBR1xcXG5BQUVBSlFBRkFBQUFDZ0FOQUFJQUFBQUJBQUFBQUFBU0FBQUFBQUFCQUFBQUFRQUFBQUVBQUFBRUFBa0FBQUFCQUFRQUFBQUVBQUVBQmdcXFxuQUxBQU1BQmdBSEFBQUFBQUFBQUEwQUR3QU9BQUFBQVFBQkFBUUFEd0FRQUFBQUJRQUFBQmtBQVFBT0FBQUFDQUFCQUFNQUFBQUFBQVVBXFxcbkFRQUFBQUFBRVFBQUFBUUFCUUFBQUFFQUFBQUFBQUFBQUFBQ0FBRUFBQUFBQUFJQUFRQUJBQVVBQ0FBQUFBQUFEQUFLQUFBQUJnQUpBQVxcXG5NQUFRQUdBQUVBQUFBYkFBRUFEZ0FBQUFnQUJRQURBQlVBQUFBQ0FBY0FDd0FEQUFBQUNnQURBQUFBQmdBQUFBb0FBQUFCQUFNQUNBQUFcXFxuQUFrQUFBQUJBQUlBQUFBRkFBQUFBUUFBQUFBQUFBQVhBQUFBQUFBQ0FBQUFCUUFXQUFBQUVBQURBQVFBRVFBQkFBTUFBQUFBQUFBQUJBXFxcbkFCQUFBQUJRQUFBQUlBQVFBQUFBSUFBQUFDQUFJQUFBQUFBQUFBQUFBQ0FBQUFFZ0FCQUFRQUNnQUxBQVFBQUFBQ0FBQUFBd0FBQUFRQVxcXG5CUUFBQUFBQUVRQUJBQVlBQmdBQUFBSUFBQUFCQUFBQUJBQUFBQUFBQVFBQkFBY0FBQUFEQUFvQUFBQUJBQW9BQWdBQUFBRUFBQUFBQUFcXFxuMEFCUUFCQUFFQUFBQUFBQVVBQmdBSUFBUUFCUUFBQUFzQUFBQUVBQXNBQUFBQUFBRUFCUUFBQUFzQUFBQUdBQUFBQUFBQUFBQUFBUUFBXFxcbkFBUUFBQUFHQUFBQUFBQUhBQk1BQkFBWkFBTUFBUUFBQUFFQUJnQUdBQUFBQUFBQUFBQUFEQUFDQUFNQUFBQUVBQUFBQVFBQUFBRUFCUVxcXG5BQkFBRUFBZ0FCQUFBQUFBQUFBQUFBQ1FBQUFBQUFCd0FCQUFrQUJnQUVBQUVBQlFBQUFBRUFBZ0FJQUFBQUNRQUFBQUFBQVFBREFBc0FcXFxuQUFBQkFBQUFBQUFGQUFBQUFBQUFBQUFBQUFBREFBQUFBZ0FCQUFJQUFBQUFBQUFBQkFBQkFBQUFCZ0FDQUFVQUNBQVNBQUFBQUFBQUFBXFxcbk1BQVFBQUFBQUFBQUFDQUFNQUF3QUFBQUFBQVFBQUFBRUFBQUFEQUFBQUFBQUNBQUVBQkFBTkFBQUFBQUFMQUFBQUFRQUFBQUFBREFBQVxcXG5BQUFBQUFBRkFBZ0FBZ0FBQUFJQUFRQUdBQUVBQVFBQkFBQUFBZ0FBQUFVQUFRQUJBQUFBQWdBQUFBQUFBQUFBQUE0QUVBQUFBQVVBQkFcXFxuQUNBQUVBQUFBQUFBTUFBUUFBQUFJQUFRQUVBQUFBQUFBREFBQUFBUUFCQUFNQUFRQUZBQUlBQXdBRUFBQUFBd0FEQUFZQUFBQUFBQUVBXFxcbkFBQUNBQTRBQVFBQ0FBRUFCQUFDQUFVQUFnQUJBQUVBQUFBQkFBQUFCUUFGQUFZQUJnQUZBQUFBQWdBQkFBQUFBZ0FFQUFFQUFBQUZBQVxcXG5BQUJnQUNBQWdBQUFBQUFBY0FBUUFDQUFJQUJRQUVBQkVBQUFBREFBQUFBUUFBQUFFQUJBQUFBQU1BQWdBQUFBRUFBd0FBQUFzQUJnQUFcXFxuQUFZQUFBQUVBQUVBQWdBQUFBRUFBQUFDQUFFQUFnQUFBQVVBQVFBQUFBQUFBQUFCQUFNQUFnQUdBQUFBQUFBQ0FBUUFCZ0FBQUFBQUFBXFxcbkFBQUF3QURBQUFBQUFBQUFBRUFBUUFBQUFJQUFNQUFRQUFBQUVBQUFBREFBQUFBQUFGQUFBQUJRQUJBQUFBQXdBRUFBRUFBZ0FEQUFBQVxcXG5BUUFIQUFBQUFBQUhBQUFBQWdBQ0FBQUFBQUFCQUFFQUFRQUJBQXNBQUFBRUFBQUFBUUFCQUFBQUFnQUJBQUVBQlFBQUFBQUFBd0FHQUFcXFxuQUFBQUFFQUFJQUFRQURBQU1BQ2dBSEFBQUFCQUFCQUFZQUFBQUJBQUFBQUFBQ0FBRUFBUUFBQUFBQUFBQUFBQUFBQWdBQkFBRUFBUUFFXFxcbkFBQUFBd0FBQUFFQUFBQUFBQUVBQUFBQkFBQUFCQUFBQUFFQUFBQUdBQUFBQVFBQUFBUUFBQUFCQUFJQUJnQUFBQUlBQUFBREFBY0FBQVxcXG5BREFBQUFBUUFCQUFBQUFBQURBQVVBQWdBQUFBRUFBUUFDQUFJQUJBQUJBQUFBQUFBQkFBQUFBd0FDQUFBQUFRQUFBQUlBQkFBQ0FBQUFcXFxuQVFBRkFBQUFBQUFDQUFFQUFRQUFBQUFBQVFBQUFBVUFBZ0FBQUFnQUF3QUJBQUVBQVFBREFBUUFBQUFDQUFBQUFRQUNBQUFBQUFBQUFBXFxcbkFBQUFBQkFBQUFCZ0FBQUFBQUFBQURBQUFBQUFBQ0FBSUFBQUFCQUFNQUFRQURBQUVBQWdBQUFBRUFBZ0FBQUFBQUFRQUFBQU1BQVFBQ1xcXG5BQUFBQWdBQkFBQUFBZ0FFQUFBQUJRQUZBQUFBQlFBQ0FBQUFBUUFEQUFFQUFBQUNBQVlBQWdBQkFBQUFBQUFBQUFNQVZBWktCaVlHQUFcXFxuQUpBMmtBeVI0QUFBWURaUUFWQVFBQUN3TWpCUElFQUFBTUEwY0E1Z0VBQUFFRFZ3Q0NIZ0FBQVFQRkFQb0JBQUE0QTlJaHp5RUFBQWNEXFxcblF3QUtBUUFBQndONkFId0JBQUFNQTBrQXp3RUFBQWNEY2dCWkhnQUFtVEJMTUV3d0FBQkZBMkVmb1I4QUFBY0RRUUFtQWdBQUl3TnJBRFxcXG5NZUFBQUVBNWtEMlI4QUFBRURTUjlOSHdBQVFnUEtBOWNmQUFBRUExVUFhZ0VBQUpvdzJ6RGRNQUFBUlFOdUg2NGZBQUF4QTBJQUJoNEFcXFxuQUFnREhnVG1CQUFBSlFOQkFBQWVBQUF4QTFJQVhoNEFBRVVEOWgvM0h3QUFPQU55SW5RaUFBQTRBMGdpU1NJQUFBRUR2eC9PSHdBQW1UXFxcbkRHTU1jd0FBQWpBM1lBZng0QUFBY0RjQUJYSGdBQUFRTlJIMVVmQUFBb0EzVUFjd0VBQUprd1d6QmNNQUFBQ2dOQkFNVUFBQUFqQTZFQlxcXG40eDRBQUJFRFZRQVdBZ0FBQndOVEFHQWVBQUFNQTl3QTJRRUFBQUFEVHdEU0FBQUFCd052QUM4Q0FBQUJBMGNBOUFFQUFBa0RZUUNqSGdcXFxuQUFBUU1JSHd3ZkFBQUJBN2tEcndNQUFBRURNd1JUQkFBQVJRTWdINUFmQUFBSEEySUFBeDRBQUVVREF4K0RId0FBQ0FOWEFJUWVBQUFIXFxcbkExb0Fld0VBQUprd3dURENNQUFBQ1FPaEFkOGVBQUJWQmljR0pRWUFBQlFEdndOQkh3QUFBUU5uQVBVQkFBQUJBNThEakFNQUFBRUQ2Z1xcXG5DL0hnQUFEQU5qQUEwQkFBQkZBd0FmZ0I4QUFBRURFd1FEQkFBQUl3TkxBREllQUFBQkEza0EvUUFBQUFFRGR3Q0RIZ0FBUlFNT0g0NGZcXFxuQUFBSUEwZ0FKaDRBQUprd3BqRDBNQUFBQUFNQ0FiQWVBQUFCQTJ3QU9nRUFBQWtEUlFDNkhnQUFBUU01SHowZkFBQVJBMmtBQ3dJQUFBXFxcblFESXdUdUJBQUFEQU5oQU00QkFBQUFBeEFmRWg4QUFBQURPQVJkQkFBQUl3TklBQ1FlQUFBMUd4RWJFaHNBQUFFRFF3QUdBUUFBSXdOVVxcXG5BR3dlQUFBREEwa0FLQUVBQUFJRG9SNnRIZ0FBQ0FNMUJGRUVBQUFIQTJFQUp3SUFBQUFEQUI4Q0h3QUFCd050QUVFZUFBQURBM1lBZlJcXFxuNEFBQ2NEY3dCZkFRQUFCQU5IQUNBZUFBQUdBMGNBSGdFQUFFVURiUit0SHdBQUF3TnZBUFVBQUFBeEEyc0FOUjRBQURFRGNnQmZIZ0FBXFxcbkFBT3dBZXNlQUFBMUd3c2JEQnNBQUMwRFZRQjJIZ0FBQ2dOaEFPVUFBQUNaTUVZd2xEQUFBRFViT2hzN0d3QUFDZ05WQUc0QkFBQThDU1xcXG5nSktRa0FBQk1EeVFOZ0h3QUFNQU5sQUJzZUFBQURBMWtBK0I0QUFEQURSUUFhSGdBQU1RTmtBQThlQUFBSUE3a0R5Z01BQUprd25UQ2VcXFxuTUFBQUN3TkRCUE1FQUFBK0MwY0xTd3NBQUE4RGJ3QU5BZ0FBSXdOdUFFY2VBQUFJQTJrQTd3QUFBQzBEWlFBWkhnQUFCd05hQVdRZUFBXFxcbkFCQXhnZkhCOEFBQUVEQ1I4Tkh3QUFSUU1uSDVjZkFBQUNBM29Ba1I0QUFBRURXUURkQUFBQU1RTk1BRG9lQUFCRkEyUWZwQjhBQUFJRFxcXG51UjdISGdBQVJRTWtINVFmQUFBQUF4TUJGUjRBQUE4RGFRQUpBZ0FBTVFOMEFHOGVBQUFCQTBnZlRCOEFBREVEZWdDVkhnQUFSUU1wSDVcXFxua2ZBQUFCQTlRQTBCNEFBQVFEeEFEZUFRQUFBUU9YQTRrREFBQU1BM0lBV1FFQUFBRURFUjhWSHdBQUNRUDBBTlVlQUFBbkEwVUFLQUlBXFxcbkFCc0Rid0NoQVFBQUJBUEdBT0lCQUFBSUE1a0RxZ01BQUVVRHpnUDBId0FBQVFOdEFEOGVBQUFKQXdNQnN4NEFBQUlEYndEMEFBQUFEQVxcXG5OekFHRUJBQUFCQTNVQStnQUFBQUVEYVI5dEh3QUFBUU9wQTQ4REFBQTRBejBBWUNJQUFFVUR4aC9ISHdBQUFBTjNBSUVlQUFBR0F5Z0NcXFxuSEI0QUFERURiQUE3SGdBQW1UQ3RNSzR3QUFBQ0E3Z2V4aDRBQUFJRFZRRGJBQUFBenczWkRkd05BQUFFQTZVRDZSOEFBQlFEcVFOcEh3XFxcbkFBSndOMEFHTUJBQUFtQTFNQUdBSUFBQXNEVlFCd0FRQUFtakJ2TUhFd0FBQW5BMnNBTndFQUFEQURkUUIxSGdBQUFRTnpBRnNCQUFCQ1xcXG5BekFmTmg4QUFBY0RSd0FnQVFBQTFRekdETWNNQUFBQUEya2ZheDhBQUFFREF3R3ZIZ0FBRVFOMUFCY0NBQUE4Q1RBSk1Ra0FBSmt3WVRcXFxuQmlNQUFBSXdOM0FJa2VBQUFCQS9VQVRSNEFBQUFEL0FEY0FRQUFEd05KQUFnQ0FBQUNBMmtBN2dBQUFFVURJeCtUSHdBQUFBUDBBTk1lXFxcbkFBQUlBMHNFK1FRQUFFVURMaCtlSHdBQUFBTmxBT2dBQUFBSUEwa0F6d0FBQUFFREtCOHNId0FBQUFNWUh4b2ZBQUJUQmljR0lnWUFBQVxcXG5FRElCOGtId0FBT0FNRElnUWlBQUFFQTNrQU13SUFBQUFET1I4N0h3QUFKUU5oQUFFZUFBQUpBM2tBOXg0QUFBTURyd0h1SGdBQUFRTnZcXFxuQVBNQUFBQWpBMlFBRFI0QUFKa3dUekJRTUFBQVJRTUJINEVmQUFBSkE4b0F3aDRBQUFnRDBnUFVBd0FBQVFOUUgxUWZBQUFBQXdFZkF4XFxcbjhBQUVVRHFRUDhId0FBQ0FNbkJQUUVBQUFDQTFNQVhBRUFBQUVEVWdCVUFRQUFCZ05GQUJRQkFBQWpBMU1BWWg0QUFBWURad0FmQVFBQVxcXG5PQU4ySW5naUFBQUFBelVFVUFRQUFKa3d0VEMyTUFBQUN3TnZBRkVCQUFBRUF4Z0U0Z1FBQUFjRFl3QUxBUUFBQVFQU0E5TURBQUE0QTNcXFxud2k0Q0lBQUFRRFlRQUJBUUFBQUFPb0FPMGZBQUF4QTBRQURoNEFBQkVEWlFBSEFnQUFBUVA0QVA4QkFBQU1BM1VBMUFFQUFDY0RVd0JlXFxcbkFRQUFtVEJYTUZnd0FBQkZBN2NEd3g4QUFBd0RhUURRQVFBQUp3TnVBRVlCQUFBSEEzZ0FpeDRBQUVJREFCOEdId0FBQXdPd0FlOGVBQVxcXG5BbkEwY0FJZ0VBQUFrRHdnQ29IZ0FBTFFOc0FEMGVBQUNaTUUwd1RqQUFBQU1EYVFBcEFRQUFJd092QWZBZUFBQUNBMDhBMUFBQUFBRURcXFxuQWdHdUhnQUFDQU5IQlBVRUFBQTRBNmdpclNJQUFBQUR4UU42SHdBQUV3T1JBd2dmQUFBdEEyUUFFeDRBQUFFRHp3QXVIZ0FBRHdOaEFBXFxcbkVDQUFBR0E2RWV0eDRBQUNNRGVRRDFIZ0FBT0FPUUlab2hBQUJGQXlVZmxSOEFBQVFEVHdCTUFRQUFCZ05QQUU0QkFBQ1pNTE13dERBQVxcXG5BQ2NEUkFBUUhnQUExd3VTQzVRTEFBQUlBMVVBM0FBQUFDTURaUUM1SGdBQW1UQjdNSHd3QUFBTUEwOEEwUUVBQUFRRFp3QWhIZ0FBREFcXFxuTnFBUEFCQUFBakExVUE1QjRBQUFFRG9RSGJIZ0FBSXdOWkFQUWVBQUFBQTBFQXdBQUFBSmt3dVRDNk1BQUFDQU1qQlBBRUFBQUJBMU1BXFxcbldnRUFBSm93MkREYU1BQUFDUU4xQU9jZUFBQXdBMVVBZEI0QUFDY0RVZ0JXQVFBQUNBTTNCTjhFQUFBQUE4b0F3QjRBQURnRGxDR3VJUVxcXG5BQUJnT3hBN0FmQUFCQ0EyRWZaeDhBQURnRFBDSkJJZ0FBbVREU01OTXdBQUJGQTJzZnF4OEFBQWNEU1FBd0FRQUFJd05CQUtBZUFBQUpcXFxuQTFVQTVoNEFBQXNEZFFCeEFRQUFtVEJUTUZRd0FBQ1pNRjB3WGpBQUFDTURUQUEySGdBQUJBTW1BdUFCQUFBUEEzVUVkd1FBQUNnRFNRXFxcbkF1QVFBQUFBTWhIeU1mQUFBQkEyRWZaUjhBQUVJRElSOG5Id0FBQWdObkFCMEJBQUFCQTA0QVF3RUFBQU1EVGdEUkFBQUFBQU9aQTlvZlxcXG5BQUFCQTc4RHpBTUFBQUFERlFRQUJBQUFGQVBKQTJFZkFBQTRBNklpckNJQUFKa3cyekRjTUFBQUZBT2xBMWtmQUFBUEExSUFFQUlBQUNcXFxuTURUZ0JHSGdBQVJRTU5INDBmQUFBQ0E4MGUyUjRBQUF3RC9BRGFBUUFBQkFQV0FDb0NBQUFCQXdBZkJCOEFBSmt3enpEUU1BQUFCZ00xXFxcbkJOY0VBQUE0QXdzaURDSUFBQUFEV1FEeUhnQUFDQU1YQk40RUFBQU1BMjRBU0FFQUFBd0RUQUE5QVFBQUFRTnBBWGtlQUFBSUF4QUUwZ1xcXG5RQUFBRURvQUhhSGdBQUR3TkJBQUFDQUFBQkEzSUFWUUVBQUFNRFJRQzhIZ0FBTlJzTkd3NGJBQUFCQXhJQkZoNEFBQUlEU2dBMEFRQUFcXFxuQUFPL0EzZ2ZBQUNaTUZrd1dqQUFBQXNEVHdCUUFRQUFLQU5oQUFVQkFBQ1pNTmd3MlRBQUFFVURLeCtiSHdBQUFRTkFIMFFmQUFBUEEyXFxcblVBQlFJQUFFVURyZ1BFSHdBQUFRTm9BWGdlQUFBbUEzUUFHd0lBQUVJRHVRUFdId0FBUlFOdkg2OGZBQUFCQTZVRGpnTUFBRVVEQ1IrSlxcXG5Id0FBQUFOVkFOa0FBQUFNQTBFQXpRRUFBQ2NEUXdESEFBQUFCd05HQUI0ZUFBQUJBN1VEclFNQUFENE5SdzFMRFFBQUVRTmhBQU1DQUFcXFxuQUlBOVVBVGg0QUFBQUR5UU44SHdBQUJnTkRCRjRFQUFBQkEvNGYzaDhBQUFFRG1RT0tBd0FBQndONUFJOGVBQUFFQTFvZVhCNEFBQThEXFxcbmRRQVZBZ0FBdmduSENjc0pBQUExR3djYkNCc0FBREFEYVFBdEhnQUFtakI3TUgwd0FBQ1pNTWd3eVRBQUFEZ0RzeUxySWdBQUFRT3dBZVxcXG5rZUFBQUFBM2tBOHg0QUFBY0RWd0NHSGdBQUtBTnBBQzhCQUFBakExb0FraDRBQUVJRHhRUG1Id0FBQ1FOUEFNNGVBQUJDQXlrZkx4OEFcXFxuQUFBRG9BSGNIZ0FBUlFNcUg1b2ZBQUFCQTAwQlV4NEFBRGdEMENITklRQUFLQU5WQUhJQkFBQXhBMmdBbGg0QUFBd0RhQUFmQWdBQUFRXFxcbk5NQURrQkFBQTRBNFlpaUNJQUFCUURud05KSHdBQUJnT2xBK2dmQUFCV0MwY0xTQXNBQUprd2RUQjJNQUFBQkFOYkhsMGVBQUJGQTJvZlxcXG5xaDhBQUNjRFZBQmlBUUFBQXdNQ0FiUWVBQUFUQTU4RFNCOEFBRUlEQ1I4UEh3QUFCZ01RQk5BRUFBQUFBMDBCVVI0QUFBUURRd1R2QkFcXFxuQUFPQU9TSVpzaEFBQTRBMkVpWWlJQUFBUUQ5UUF0QWdBQUV3TzVBekFmQUFBSUEyOEE5Z0FBQUFjRGN3QmhIZ0FBR3dOMUFMQUJBQUNaXFxcbk1MY3d1REFBQUFjRFloNW9IZ0FBQmdOQkFBSUJBQUFVQTVjREtSOEFBQUlEWXdBSkFRQUFBZ05xQURVQkFBQUJBK1VBK3dFQUFDWURjd1xcXG5BWkFnQUFSUU4wSDhJZkFBQUpBMlVBdXg0QUFBd0RXZ0I5QVFBQU9BTWxJaVlpQUFBVEE2a0RhQjhBQUNjRGNnQlhBUUFBQUFNSkh3c2ZcXFxuQUFBSUF6WUUzUVFBQUVVRENCK0lId0FBTVFOaUFBY2VBQUE0QTNNaWRTSUFBQ01EVmdCK0hnQUFJd05QQU13ZUFBQUVBeTRDTUFJQUFGXFxcblFHMVFiQUJnQUFFd094QXdBZkFBQURBMDhBMVFBQUFBRURBUjhGSHdBQUJBTmxBQk1CQUFBakEwVUF1QjRBQUw0THhndktDd0FBT0FObFxcXG5JbkVpQUFBVUE1RURDUjhBQUFBREVnRVVIZ0FBQndOT0FFUWVBQUFJQTJnQUp4NEFBQkVEVHdBT0FnQUFBd05WQUdnQkFBQVVBNkVEN0JcXFxuOEFBQUVEc1FPc0F3QUFEd05WQUJRQ0FBQTRBejRBYnlJQUFBY0RZUUZuSGdBQVJRTUVINFFmQUFBQUEwVUF5QUFBQURVYkNSc0tHd0FBXFxcbm1URDlNUDR3QUFBQkEyZ2ZiQjhBQUFNRFpRQzlIZ0FBQkFPNUE5RWZBQURYQ2NjSnpBa0FBQWdES3dUNEJBQUFKd05PQUVVQkFBQkZBMlxcXG5NZm94OEFBQVlET0FRNUJBQUFGQU94QXdFZkFBQW1BMVFBR2dJQUFBY0RkQUJySGdBQUFRUEpBODREQUFBVUE1a0RPUjhBQUprd3NUQ3lcXFxuTUFBQUFnTjFBUHNBQUFEV0RNWU15QXdBQUprd3ZUQytNQUFBQUFOdUFQa0JBQUJDQXprZlB4OEFBQVFESndMaEFRQUFPQU1JSWdraUFBXFxcbkFHQXhnRUdRUUFBQXdEUkFBT0FRQUFDZ04xQUc4QkFBQlVCaWNHSXdZQUFBWURkUUJ0QVFBQUFBTzNBM1FmQUFCRkEyWWZwaDhBQUVVRFxcXG5hUitwSHdBQUJ3TmJBV1VlQUFCQ0F5Z2ZMaDhBQUVVRGNCK3lId0FBUlFNUEg0OGZBQUF4QTFRQWJoNEFBRGdEZXlLQklnQUFPQU9ISW9cXFxua2lBQUJDQXdFZkJ4OEFBQWdEcFFPckF3QUFSUU5sSDZVZkFBQUFBOVFBMGg0QUFBUUQ5Z0FyQWdBQTFReS9ETUFNQUFCQ0F6Z2ZQaDhBXFxcbkFEZ0RzaUxxSWdBQUR3TnlBQkVDQUFDWk1MOHd3REFBQUFnRDZRVHJCQUFBT0FPRElvVWlBQUFBQThzRDRoOEFBQUVEeWdDK0hnQUFCQVxcXG5OWkFESUNBQUFCQTJrQTdRQUFBSmt3WHpCZ01BQUFCd05FQUFvZUFBQUNBOHdlMkI0QUFFVURJUitSSHdBQUVRTkJBQUlDQUFBUkEzSUFcXFxuRXdJQUFBQURwUVBxSHdBQUFBTlpIMXNmQUFBRUErUUEzd0VBQUFBRFVCOVNId0FBT0FOTkltMGlBQUFCQTI0QVJBRUFBQzBEZFFCM0hnXFxcbkFBQVFQMEFORWVBQUJDQThrRDloOEFBQUVEdHdPdUF3QUFCd051QUVVZUFBQUVBMEVBQUFFQUFBRURHUjhkSHdBQUJBT3hBN0VmQUFDYVxcXG5NSGd3ZWpBQUFDTURWd0NJSGdBQUNBTkRCUEVFQUFBdEEwVUFHQjRBQUFnREZRUUJCQUFBS0FOUEFPb0JBQUFJQTlrRTJ3UUFBQWdEQmdcXFxuUUhCQUFBQXdQMEFOY2VBQUFHQTdrRDBCOEFBQWNEWlFBWEFRQUFRZ05vSDI0ZkFBQUVBemdFNHdRQUFBQURRUjlESHdBQUFBUCtIOTBmXFxcbkFBQUJBMDhBMHdBQUFDY0RaQUFSSGdBQUJnTXBBaDBlQUFBQkEzb0FlZ0VBQUNNRFlnQUZIZ0FBUlFOOEgvSWZBQUFqQTdBQjhSNEFBQVxcXG5FRFlCOWtId0FBbVRCbU1HY3dBQUE0QTJRaWNDSUFBQUFETVI4ekh3QUFJd05oQUtFZUFBQUFBMGdmU2g4QUFBRURWUURhQUFBQVZneEdcXFxuREVnTUFBQUFBOG9EMGg4QUFBd0R0d0h1QVFBQUl3TnlBRnNlQUFCQ0F5QWZKaDhBQUFnRE1BVFRCQUFBT0FPQ0lvUWlBQUFCQTFrZlhSXFxcbjhBQUVJRENCOE9Id0FBSXdORUFBd2VBQUF1RUNVUUpoQUFBQVFEa1FPNUh3QUFNUU5MQURRZUFBQUFBMmtBN0FBQUFDNERTQUFxSGdBQVxcXG5BUU5qQUFjQkFBQkNBMmtmYng4QUFCTUR0UU1RSHdBQW1qRFBNTkV3QUFBTUEwNEFSd0VBQUZjTFJ3dE1Dd0FBQVFPUkE0WURBQUFvQTJcXFxuVUFHUUVBQUFBRHZ4L05Id0FBUWdPM0E4WWZBQUFIQTBVQUZnRUFBQUVET0I4OEh3QUFtakIxTUhjd0FBQUJBMHNBTUI0QUFBQURBd0d4XFxcbkhnQUFBd1BpQUtzZUFBQUNBMEVBd2dBQUFBZ0RaUURyQUFBQUJ3TllBSW9lQUFBTUExUUFaQUVBQUJNRHhRTlFId0FBRkFPMUF4RWZBQVxcXG5BMUd6NGJRQnNBQUFFREVCOFVId0FBbWpCeU1IUXdBQUJGQXlnZm1COEFBRGdEZHlKNUlnQUFPQU42SW9BaUFBQUNBMGNBSEFFQUFBZ0RcXFxuUlFETEFBQUFKQU5WQUhJZUFBQkZBeXdmbkI4QUFDY0RTd0EyQVFBQUFnTkpBTTRBQUFBQ0EyZ0FKUUVBQUFjRFVnQllIZ0FBQVFOaEFPXFxcbkVBQUFBTUEwc0E2QUVBQUFrRFNRRElIZ0FBREFOc0FENEJBQUFIQTAwQVFCNEFBQVFETmg0NEhnQUFCQVBGQStFZkFBQUtBM2tBbVI0QVxcXG5BQk1EbHdNb0h3QUFMUU5VQUhBZUFBQUFBMGtmU3g4QUFEVWJRaHRER3dBQUV3TzNBeUFmQUFBQkErOEFMeDRBQUFFRDV3QUpIZ0FBQ0FcXFxuTnFBWG9lQUFBREE4b0F4QjRBQUFBRHNRTndId0FBVkFiU0J0TUdBQUNaTU5VdzFqQUFBRVVETHgrZkh3QUFBQU8xQTNJZkFBQWtBM1VBXFxcbmN4NEFBQVlERlFUV0JBQUFEQU5sQUJzQkFBQUNBMWNBZEFFQUFBWURvQjYySGdBQVJRTUhINGNmQUFBQkE2Z0FoUU1BQUFJRGVRQjNBUVxcXG5BQUxRTnVBRXNlQUFBTUEyOEEwZ0VBQUVVRHlRUHpId0FBQWdOREFBZ0JBQUFEQTNrQStSNEFBQ01EZEFCdEhnQUFDUVBpQUtrZUFBQUFcXFxuQXpBZk1oOEFBQUVEYXdBeEhnQUFPQU9TSXVNaUFBQVVBNVVER1I4QUFBRURLUjh0SHdBQUtBTkZBQmdCQUFCRkE3WWZ0eDhBQUFRRDFRXFxcbkFzQWdBQUJnTXdCTkVFQUFBSUEvVUFUeDRBQUFJRG9CNnNIZ0FBQUFOb0gyb2ZBQUFBQTVjRHloOEFBQUVEUlFESkFBQUFCQU5wQUNzQlxcXG5BQURYQzhZTHpBc0FBQVFEYndCTkFRQUFDQU5QQU5ZQUFBQytDOGNMeXdzQUFBd0RWUURUQVFBQVJRT3NBN1FmQUFCQ0E3OGZ6eDhBQUpcXFxub3cwakRVTUFBQUJ3Tm1BQjhlQUFBQUEwNEErQUVBQUFnRGVRRC9BQUFBTGdOb0FDc2VBQUFNQTJRQUR3RUFBQWNEVHdBdUFnQUFRZ05aXFxcbkgxOGZBQUNaTUs4d3NEQUFBQVFENWdEakFRQUFBUVBGQTgwREFBQUlBM2NBaFI0QUFCUUR1UU14SHdBQUl3TjFBT1VlQUFBSkExa0E5aFxcXG40QUFBd0RrZ0x2QVFBQUJnTlZBR3dCQUFBQkErWUEvUUVBQUFnRGF3RjdIZ0FBRHdOUEFBd0NBQUFUQTc4RFFCOEFBQUVEMkFEK0FRQUFcXFxuQXdQQ0FLb2VBQUFBQTFFZlV4OEFBQWtEc0FIdEhnQUFMUU5PQUVvZUFBQUpBMjhBeng0QUFBQURHQVFOQkFBQU9BT3BJcTRpQUFCRkEyXFxcbmdmcUI4QUFEVWJQQnM5R3dBQUFBTkFIMElmQUFCRkF3c2ZpeDhBQUFZRHhRUGdId0FBTFFORUFCSWVBQURWRE1vTXl3d0FBQU1ENmdERlxcXG5IZ0FBQmdNakJBNEVBQUFCQThjQUNCNEFBQXdEZWdCK0FRQUFCd05uQUNFQkFBQVJBMFVBQmdJQUFBQURid0R5QUFBQW1UQzdNTHd3QUFcXFxuQUlBeGdFNUFRQUFKa3dVVEJTTUFBQUl3TnNBRGNlQUFBVUE3Y0RJUjhBQUFvRGR3Q1lIZ0FBSXdOcEFNc2VBQUFEQTJFQTR3QUFBSmt3XFxcbjhURDVNQUFBUlFPeEE3TWZBQUErRFVZTlNnMEFBQUFEdVFOMkh3QUFPQVBVSWM0aEFBQkZBMklmb2g4QUFBSURkd0IxQVFBQUJBUDhBTlxcXG5ZQkFBQUJBeE1CRng0QUFKa3dhREJwTUFBQVFnTmdIMllmQUFBakEyZ0FKUjRBQUJNRGxRTVlId0FBQUFQcUFNRWVBQUJDQThzRDV4OEFcXFxuQURnRFF5SkVJZ0FBbVRCNE1Ia3dBQUFUQTVrRE9COEFBREFEU1FBc0hnQUFCd04zQUljZUFBQUJBMlVBNlFBQUFDY0RhQUFwSGdBQU9BXFxcbk8xSXUwaUFBQkNBN0VEdGg4QUFBWURrUU80SHdBQUFRTk5BRDRlQUFBSkEwRUFvaDRBQURVYkJSc0dHd0FBT0FNOEFHNGlBQUFJQTFrQVxcXG5lQUVBQUFNREF3RzFIZ0FBSndOSUFDZ2VBQUFqQTIwQVF4NEFBSmt3WkRCbE1BQUFDQU5XQkZjRUFBQUNBMWtBZGdFQUFGUUd3UWJDQmdcXFxuQUFBUU02QkZ3RUFBQUFBK0lBcHg0QUFBRURsUU9JQXdBQUp3TmpBT2NBQUFBSEEzOEJteDRBQUZRR1NBWWtCZ0FBbVRDck1Ld3dBQUFqXFxcbkE2QUI0aDRBQUFnRDJBVGFCQUFBTVFOYUFKUWVBQUFNQTJjQTV3RUFBQUFEbndQNEh3QUFKd05sQUNrQ0FBQWpBMGtBeWg0QUFBQURFUlxcXG44VEh3QUFRZ05SSDFjZkFBQWpBMDBBUWg0QUFBRURNQjgwSHdBQUp3TnNBRHdCQUFCRkF3VWZoUjhBQUFBRG9RSGRIZ0FBQ0FNV0JOd0VcXFxuQUFBSEEyUUFDeDRBQUMwRFRBQThIZ0FBRkFQQkErVWZBQUFFQStvQjdBRUFBQUFEQ0I4S0h3QUFBZ05sQU9vQUFBQUFBNUVEdWg4QUFBXFxcbkVEY0FCVkhnQUFSUU1DSDRJZkFBQUpBd0lCc2g0QUFBTURkUUJwQVFBQVJRTU1INHdmQUFBQkE4c0RzQU1BQUFnRGRBQ1hIZ0FBQUFPVlxcXG5BOGdmQUFBNEEzMGk0U0lBQUNNRGVnQ1RIZ0FBRVFOdkFBOENBQUFvQTI4QTZ3RUFBQUFESUI4aUh3QUFBQU1aSHhzZkFBQURBMVlBZkJcXFxuNEFBQXdEYXdEcEFRQUFDQVBvQk9vRUFBQUFBNmtEK2g4QUFFSURxQURCSHdBQUJnTTJCTUlFQUFBQkE5d0Exd0VBQUFRRGRRQnJBUUFBXFxcbk9BTkZJa2NpQUFBRUEwa0FLZ0VBQUFnRE9BVGxCQUFBVncxR0RVd05BQUFBQTNVQStRQUFBRGdEdENMc0lnQUFDQU4xQVB3QUFBQVVBOFxcXG5VRFVSOEFBQWNEWUFGbUhnQUFCZ01XQk1FRUFBQWJBMVVBcndFQUFEZ0RxeUt2SWdBQUFBTk1BVkFlQUFCQ0F6RWZOeDhBQUVVREpoK1dcXFxuSHdBQU9BT1JJdUlpQUFBQkExQUFWQjRBQUNjRFRBQTdBUUFBQVFOYUFIa0JBQUFIQTBJQUFoNEFBQk1Ed1FQa0h3QUFBUU5CSDBVZkFBXFxcbkFIQTFBQVZoNEFBQXdEUXdBTUFRQUFJd056QUdNZUFBQ1pNRlV3VmpBQUFKa3diekJ3TUFBQUNBTk5CTzBFQUFCRkEyY2ZweDhBQUFFRFxcXG5yd0hvSGdBQUFBTXBIeXNmQUFBMUd6OGJRUnNBQUFJRFJRREtBQUFBQmdOdkFFOEJBQUFCQS93QTJBRUFBSmt3OGpENk1BQUFSUU10SDVcXFxuMGZBQUFCQTB3QlVoNEFBQWdEWVFEa0FBQUFSUU5nSDZBZkFBQkZBd29maWg4QUFBWURZUUFEQVFBQUFBTmdIMklmQUFBQUE2OEI2aDRBXFxcbkFBZ0RQZ1RuQkFBQU9BTWpJaVFpQUFBQkE4b0RrQU1BQUpvdzFURFhNQUFBUlFNaUg1SWZBQUFCQTlVQVRCNEFBRVVEYkIrc0h3QUFCd1xcXG5OVUFHb2VBQUFFQXpjZU9SNEFBTW9OMlEzYURRQUFBd09oQWVFZUFBQU1BMGdBSGdJQUFBa0Q2Z0RESGdBQURBTlNBRmdCQUFBREE5UUFcXFxuMWg0QUFBd0RSUUFhQVFBQW1URHZNUGN3QUFBQ0EwZ0FKQUVBQUNNRFVnQmFIZ0FBQUFQQ0FLWWVBQUF0QTNRQWNSNEFBQWdETFFUc0JBXFxcbkFBM3czWkRkNE5BQUFJQTBFQXhBQUFBQThEZEFSMkJBQUFBUVBHQVB3QkFBQUJBekVmTlI4QUFBQURZUjlqSHdBQXdnekdETW9NQUFBQlxcXG5BOElBcEI0QUFBZ0R4UVBMQXdBQUFRUGlBS1VlQUFCQ0ExQWZWaDhBQUFBRFlRRGdBQUFBRVFOSkFBb0NBQUFuQTJjQUl3RUFBQWNEV1FcXFxuQ09IZ0FBUlFPWEE4d2ZBQUFKQTlRQTFCNEFBQU1Eb0FIZ0hnQUFRZ1ArSDk4ZkFBQUJBeG9FREFRQUFBd0RkQUJsQVFBQUFBUGNBTnNCXFxcbkFBQUlBM2dBalI0QUFBUUQzQURWQVFBQUFnTmhBT0lBQUFBQ0Exb0FrQjRBQUR3Sk13azBDUUFBR3dOUEFLQUJBQUFSQTFJQUVnSUFBQVxcXG5NRGJnRHhBQUFBRHdORkFBUUNBQUFKQTY4QjdCNEFBQVFEUlFBU0FRQUFBUU1oSHlVZkFBQUVBeThDTVFJQUFBWURtUVBZSHdBQU1RTk9cXFxuQUVnZUFBQUFBemdmT2g4QUFBWURTUUFzQVFBQUJnTnBBQzBCQUFCRkF3WWZoaDhBQUFFRFNRRE5BQUFBQUFOWEFJQWVBQUNaTVBBdytEXFxcbkFBQUF3RFV3QmdBUUFBQUFOSkFNd0FBQUNaTUhJd2N6QUFBQUFES0I4cUh3QUFCd05JQUNJZUFBQUpBNkFCM2g0QUFBUUQ2d0h0QVFBQVxcXG5Cd05qSG1rZUFBQWpBMjhBelI0QUFBTURRUUREQUFBQVJRT1JBN3dmQUFBb0EwRUFCQUVBQUFjRGFBQWpIZ0FBTVFOdUFFa2VBQURLRGRcXFxud04zUTBBQUFnRFdBQ01IZ0FBQVFOQkFNRUFBQUNaTU1Rd3hUQUFBQ01EUWdBRUhnQUFBZ056QUYwQkFBQ3VEQTRBQUFBQUFGb0VQd0lBXFxcbkFPZ0JLQUNBQWdBQUJnQk1BUUVDQmdBZ0FBTUFBQUJ4QUlzQkRRQk5BZE1BQUFBQ0FJVUFSUUFLQUFRQTZRQWhBQUFBQUFDcUFBSUFCUVxcXG5FQUFMVUJEUUFBQUFBQUFBQUJBQUFBQmdCbkFBZ0FBQUFDQUFBQUFBQkhBRElBQUFBQUFEd0FSUUFBQUFBQUFRQUFBQUlBRUFBQkFBQUFcXFxuQUFBQkFBQUF6Z0FzQUFBQUhRQUFBQklBQUFBQUFCRUFBd0FjQUFjQUFBQUJBR29BQVFBV0FBQUFid0FBQUFFQUpRQUFBQ2NBRUFBQUFDXFxcbklBQUFDOEFBQUFDUUFBQUFBQUZRQUFBQUFBRXdBQUFJY0FBQUE2QUNjQUFBQUZBQllBQlFBVUFCSUFJUUFGQUFJQUFRQUFBQlVBSmdBQVxcXG5BQVFBQUFBQUFBRUFGd0FaQUFBQUJBQUFBQU1BQUFBUUFBRUFBUUFBQUFVQUFRQUFBQUFBSWdBQUFBSUFCQUFUQUFBQUVRQmFBQVVBRXdcXFxuQU5BRTRBQ0FBRUFCZ0FDUUJrQUNZQUFBQVJBQUFBQlFBd0FBQUFBUUFCQUFBQUFnQUJBRDRBUmdBRkFBQUFBUUFBQUFFQU53QUFBQUFBXFxcbkJRQURBQUFBRXdBQ0FBQUFBUUFBQUFZQUFBQUxBQndBQVFBQUFBVUFMd0FCQUFBQUNBQWRBREFBQUFBbEFBSUFFZ0FBQUFBQUl3QUNBQVxcXG5BQUFBQUxBQmdBRGdBQUFCRUFEQUFWQUFJQUFBQUFBQU1BQUFBSUFBZ0FDQUFBQUFBQUNRQU9BQUFBQVFBSkFDd0FBd0FCQUJZQUVRQUFcXFxuQUFBQUFBQUFBQUFBQUFBRUFCZ0FBUUF3QUFRQURBQU9BQWtBQUFBREFBc0FBQUFDQUFVQUFBQVFBQU1BQWdBR0FBc0FDQUFLQUFBQUNBXFxcbkFEQUFFQUpRQURBQnNBQWdBU0FBVUFCd0FTQUFBQUVBQUFBQkVBQUFBSkFBQUFDUUFBQUF3QUFBQUFBQUVBQUFBQUFBQUFDQUFBQUFBQVxcXG5BQUFEQUFBQUFBQUFBQmNBQUFBQUFBTUFEQUFBQUFBQUFnQUJBRU1BQUFBQUFBc0FCUUFKQUFBQUFBQWlBQUlBQkFBQ0FBSUFBUUFCQUJcXFxuUUFBUUF4QUFBQUJBQWdBQWtBQndBQkFDRUFGZ0FCQUFJQUFBQUdBQUFBRGdBQUFBVUFFZ0FPQUFRQUFBQUFBQjBBQUFBQUFBWUFBQUFLXFxcbkFBQUFBQUFBQUJZQUFBQUFBQUFBQUFBSUFBQUFBUUFBQUFzQUFBQUJBQUFBQUFBQUFBUUFBQUFBQUJZQUFBQUJBQUFBQVFBZEFBY0FBQVxcXG5BQkFBWUFCQUFCQUFNQURnQUpBQkFBQ0FBQ0FBRUFBQUFBQUFNQUFnQUNBQ0lBQUFBQUFBUUFFd0FSQUFBQUFnQU5BQUFBQVFBRUFBd0FcXFxuQVFBV0FBNEFBZ0FBQUFBQUJBQUFBQUFBQUFBQUFBQUFGUUFBQUFBQUF3QUFBQUFBQUFBTUFBQUFCUUFFQUFBQUFBQVJBQTBBRVFBQUFBXFxcblFBQUFBREFBSUFBUUFEQUFFQUFnQUNBQUlBQVFBQkFBTUFBUUFCQUFBQUFnQUNBQUlBQVFBTkFBQUFBQUFBQUFFQUFnQUdBQTBBQVFBQlxcXG5BQVFBREFBQ0FBWUFBQUFFQUNjQUhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnQUFBQUFBQUFBQUFBQUFBQUFQQUFjQUNBQUFBQU1BQUFcXFxuQUVBQUFBQUFBQkFBQUFEd0FCQUFBQUFBQUFBQUlBQXdBQUFCWUFDd0FGQUFBQUFBQUNBQWdBQkFBQUFBZ0FBQUFBQUFBQUF3QUVBQUFBXFxcbkFRQUxBQUVBQUFBQUFCZ0FDUUFFQUFjQUFBQUJBQUlBQVFBQUFBQUFBUUFlQUFBQUFnQUJBQUFBQUFBSkFBQUFBQUFEQUFvQUFnQURBQVxcXG5FQUFBQUVBQUFBQkFBZkFBQUFBQUFBQUFBQUFBQUFBQUFBSkFBSEFBVUFBZ0FDQUFvQUFRQUFBQUFBQXdBQUFBRUFEQUFBQUFFQUFBQUFcXFxuQUFFQUFnQUJBQXNBQUFBQUFBRUFBd0FHQUFJQURBQU9BQjRBQUFBQUFCQUFBQUFCQUFJQURRQURBQUFBQmdBQUFBSUFDZ0FFQUFBQUR3XFxcbkFRQUFJQUFRQUNBQVlBQUFBQUFBc0FBQUFGQUEwQUFnQUFBQU1BQndBQUFBVUFCQUFBQUFBQUJnQUJBQUFBQUFBUEFBTUFBQUFBQUF3QVxcXG5BQUFYQUFJQUNRQUFBQUFBQUFBQUFBQUFBZ0FBQUFjQUFRQURBQTBBQUFBRkFBY0FCQUFJQUFBQUN3QUlBQWtBQVFBQUFBQUFDUUFGQUFcXFxuQUFDQUFCQUFBQUJnQUFBQWdBQUFBSEFBQUFBZ0FDQUFVQUJBQUZBQUFBQUFBQkFCTUFDQUFBQUFBQUFRQUFBQW9BQUFBR0FBQUFBQUFBXFxcbkFBQUFEQUFDQUFRQUFnQUFBQUFBQXdBQUFBUUFBQUFEQUFJQUJ3QUJBQUFBQUFBQUFBTUFBQUFBQUFBQUF3QUFBQUFBQUFBRUFBQUFBUVxcXG5BQUFBSUFBQUFBQUFJQUJ3QUFBQVFBQUFBQkFBRUFBUUFKQUFJQUFnQUdBQU1BQUFBQUFBQUFBUUFHQUFVQUFnQUFBQUFBQkFBQkFBSUFcXFxuRVFBQkFBQUFBQUFCQUFFQUJRQUFBQUVBQUFBSEFBQUFBQUFBQUFBQUF3QU9BQUFBQUFBREFBQUFBQUFBQUFJQUFRQUFBQkFBQUFBQUFBXFxcbkFBQWdBQUFBSUFBZ0FHQUFBQUNRQUFBQVlBQUFBQkFBWUFCUUFCQUFFQUFnQUlBQUlBQXdBQkFBUUFBUUFBQUFBQURRQUNBQUFBQUFBQlxcXG5BQzhBQVFBQ0FBRUFCZ0FWQUFBQUFBQUFBQXdBQkFBQUFBQUFBQUFBQUJvQUFBQUFBQUFBQUFBREFBY0FBQUFKQUFJQUFRQUFBQUVBQVFcXFxuQUFBQUFBQUFBREFBQUFBZ0FBQUFvQUFBQUFBQUVBQUFBT0FBSUFBZ0FKQUFJQUN3QUNBQUVBQXdBQkFBQUFBQUFLQUFNQUFRQUJBQUlBXFxcbkFnQUNBQUFBQWdBSkFBQUFBQUFCQUFZQUFRQUFBQWNBR0FBQkFBQUFCd0FCQUFFQUFBQVpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURBQVxcXG5BQUFBQUFBQUFBQUFBRUFBSUFBQUFBQUFFQUFBQUxBQUVBQlFBQUFBQUFBQUFEQUFJQUJnQUNBQUVBQlFBQkFBWUFBd0FCQUFJQUFRQUJcXFxuQUJ3QUJnQUNBQUlBQXdBQkFBZ0FBQUFDQUFBQUFRQURBQUVBRmdBR0FBc0FBQUFFQUFRQUFRQUNBQUFBQUFBQUFBQUFCQUFBQUFRQUFBXFxcbkFBQUFBQUZnQUFBQUFBQUFBQUFBTUFBQUFBQUFBQUFRQUFBQVFBQ1FBUEFBVUFBQUFCQUFFQUNBQUFBQUVBQUFBQUFBRUFBZ0FCQUFFQVxcXG5BUUFBQUFFQUFBQUlBQUVBQWdBQkFBTUFBZ0FBQUFJQUJBQUJBQUVBQkFBQUFBOEFBQUFBQUFBQUFnQUpBQUVBQUFBQ0FBQUFBZ0FFQUFcXFxuRUFBQUFIQUFVQUF3QUNBQW9BQWdBREFBQUFCUUFBQUFBQUFBQUdBQUlBQ2dBQUFBRUFCZ0FGQUFBQUFnQURBQUVBQ0FBQ0FBQUFBUUFBXFxcbkFCUUFBQUFCQUFJQUJRQUFBQUVBQVFBQUFBRUFBQUFDQUFrQUFBQURBQUVBQUFBTkFBRUFBQUFBQUFFQUJBQUFBQUFBQUFBQUFBQUFBZ1xcXG5BT0FBQUFBZ0FYQUFVQUFBQUFBQUVBQWdBSUFBQUFBUUFKQUFNQUFBQUJBQWNBQUFBRUFBRUFDQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFcXFxuQWdBRkFBQUFCUUFFQUFFQUFBQURBQUFBQWdBQ0FBTUFBUUFQQUFFQUF3QUNBQUFBQUFBQUFBRUFCUUFBQUFJQUJ3QUFBQUFBQUFBQUFBXFxcbkVBQUFBQUFBZ0FCZ0FBQUFBQUFRQUFBQUFBQ2dBRUFBVUFBQUFBQUFBQUFRQUFBQUlBQUFBQUFBQUFCQUFBQUFrQUFRQUJBQUFBQmdBQVxcXG5BQUFBRUFBQkFBSUFCUUFCQUFFQUFBQUFBQVFBQUFBQ0FBSUFBZ0FBQUFBQUFRQUJBQU1BQVFBREFBQUFBd0FBQUFBQUFBQUFBQUVBQmdcXFxuQUVBQUVBQVFBQ0FBZ0FBd0FEQUFBQUFBQUVBQUlBQVFBT0FDQUFBQUFCQUFFQURBQUFBQUFBQUFBRUFBQUFBZ0FBQUFBQUFBQUVBQW9BXFxcbkFnQUJBQVFBQmdBQUFBQUFBQUFHQUFZQUFBQURBQUFBQkFBQkFBY0FBUUFHQUFnQUFRQUhBQUVBQVFBQUFBRUFBZ0FEQUFBQUJnQUFBQVxcXG5BQUFRQUlBQUFBQXdBQkFBRUFCZ0FDQUFBQUFnQUVBQVlBQVFBRUFBTUFCZ0FCQUFNQUFnQUVBQUlBQUFBR0FBSUFBQUFGQUFFQUFRQUNcXFxuQUFBQUFRQUNBQUVBQVFBQ0FBSUFCd0FEQUFNQUFBQUJBQWNBQVFBT0FBQUFBUUFBQUFzQUFBQUJBQUlBQVFBQkFBTUFBQUFCQUFBQUFBXFxcbkFBQUFBQUFBQUFBQUFBQUFBRkFBQUFBQUFBQUFBQUFBQUJBQUlBQUFBQUFBTUFCZ0FEQUFJQUJnQUFBQUVBQXdBQkFBSUFBUUFDQUFNQVxcXG5BQUFEQUFFQUFnQUVBQU1BQUFBQUFCQUFBUUFDQUFBQUFRQUFBQU1BQVFBQ0FBRUFBUUFCQUFBQUFRQUFBQUVBQUFBQUFBQUFBZ0FBQUFcXFxuQUFCUUFGQUFFQUFBQUFBQUFBQUFBQUFBRUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFRQUFnQUJBQUVBQUFBQ0FBQUFBQUFCXFxcbkFBQUFCd0FMQUFNQUFRQUNBQUVBQWdBQkFBY0FBUUFFQUFFQUFRQUFBQUVBQUFBQkFBTUFBUUFDQUFJQUJRQUJBQUVBQ1FBQkFBRUFBUVxcXG5BQUFBSUFBd0FCQUFBQUFBQUlBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQURBQUFBQUFBQUFBVUFBQUFFQUFBQUFBQUFBQUVBQXdBQkFBQUFcXFxuQVFBQkFBTUFBUUFBQUFBQUFBQURBQVFBQ1FBR0FBQUFDUUFHQUFJQUFRQURBQUVBQVFBQ0FBUUFBZ0FEQUFJQUFBQUdBQUVBQUFBQ0FBXFxcbkFBQUFBRkFBb0FBUUFBQUFBQUJBQUFBQUFBQkFBQUFBRUFBZ0FCQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVxcXG5BQTBBQUFBQUFBTUFBd0FBQUFFQUFnQUJBQUFBQXdBQUFBRUFBQUFBQUFBQUF3QUFBQUVBQWdBQkFBQUFCQUFDQUFBQUFRQURBQUFBQWdcXFxuQURBQVVBQlFBQUFBQUFCUUFCQUFFQUVBQUJBQU1BQWdBQUFBRUFBUUFEQUFFQUJnQUZBQUVBQWdBQkFBSUFBQUFEQUFBQUFRQUFBQUFBXFxcbkFBQUJBQUFBQUFBREFBY0FBUUFDQUFNQUFBQUdBQUlBQVFBQUFBQUFBUUFBQUFJQUFRQUFBQU1BQVFBQkFBTUFBQUFDQUFFQUFRQUNBQVxcXG5FQUFBQUFBQUVBQUFBREFBQUFBQUFDQUFNQUFBQUNBQUFBQWdBQkFBQUFBd0FBQUFFQUFBQUFBQVVBQWdBQ0FBSUFBQUFDQUFjQUJRQURcXFxuQUFFQUFBQUtBQUVBQVFBRUFBQUFCZ0FBQUFBQUFBQUFBQUFBQVFBQkFBRUFBZ0FBQUFNQUFRQUJBQUVBQXdBREFBRUFCQUFCQUFBQUFRXFxcbkFCQUFFQUF3QUJBQVVBQUFBQ0FBQUFBUUFCQUFBQUJBQUFBQUlBQVFBQUFBQUFBQUFFQUFJQUFBQUFBQUFBQUFBRUFBSUFBd0FBQUFBQVxcXG5BQUFBQUFFQUFBQUtBQUVBQWdBQ0FBRUFBd0FBQUFZQUFRQURBQVlBQUFBQ0FBQUFBQUFCQUFBQUJBQUZBQVFBQVFBQ0FBQUFBd0FBQUFcXFxuRUFBZ0FFQUFFQUFBQURBQUFBQUFBQUFBQUFBUUFCQUFFQUFRQUJBQU1BQUFBQkFBRUFBQUFEQUFBQUFRQUVBQW9BQUFBREFBUUFCUUFGXFxcbkFBY0FBd0FEQUFJQUFBQUJBQUlBQWdBRUFBQUFBUUFBQUFBQUFBQUNBQUFBQUFBSkFBTUFFQUFCQUFBQUFnQUFBQUVBQkFBQUFBVUFBZ1xcXG5BQUFBVUFBQUFCQUFFQUJBQUFBQWNBQmdBRUFBQUFBQUFCQUFjQUFBQUNBQU1BQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBREFBQUFcXFxuQVFBRkFBSUFCZ0FCQUFJQUJRQUdBQUlBQkFBQUFBTUFBUUFDQUFFQUFRQUFBQUFBQWdBQkFBTUFCZ0FCQUFFQUFRQURBQWNBQUFBQUFBXFxcbkFBQWdBRUFBQUFBUUFCQUFNQUFRQUJBQUlBQUFBQkFBQUFCUUFDQUFVQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBQVxcXG5BQWNBQUFBQUFBQUFBQUFFQUFBQUFnQUVBQUFBQUFBQUFBRUFBQUFBQUFJQUFBQUFBQUVBQUFBQkFBRUFBUUFFQUFJQUN3QUJBQUFBQUFcXFxuQUJBQVFBQWdBQUFBRUFCQUFCQUFJQUFnQUJBQUlBQWdBQUFBQUFBQUFGQUFJQUFnQUFBQUFBQkFBRUFBVUFBZ0FBQUFBQURRQUFBQUFBXFxcbkFBQUFBQUFBQWdBQUFBWUFBQUFEQUFBQUFBQUFBQUVBQWdBQkFBRUFBZ0FKQUFNQUFBQUFBQU1BQUFBQkFBRUFBUUFDQUFBQUFnQURBQVxcXG5FQUJBQUFBQUlBQndBQkFBQUFBZ0FCQUFFQUFRQUNBQUFBQlFBREFBQUFBQUFCQUFBQUJRQUFBQUVBQUFBSEFBQUFBQUFDQUFFQUFRQUFcXFxuQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBUUFCQUFBQUFBQUFRQUNBQVlBQUFBQUFBSUFBUUFDQUFBQUFRXFxcbkFBQUFJQUFnQUNBQVlBQVFBQkFBY0FBQUFCQUFJQUJRQUJBQUlBQVFBQkFBRUFBd0FDQUFJQUFRQUVBQUFBQUFBQUFBUUFBUUFCQUFBQVxcXG5BZ0FBQUFFQUF3QUFBQUVBQWdBQUFPNEVBQUNhQWdJQWFmZ0NBSmtMQVFDeU1BQUFxUWdDQUM0ZkFBQUtCZ01BSUFFQUFLWUFBZ0FGK1FcXFxuQUE1Z2dCQU9qNUFBREpDUUVBT2g0QUFOSURBZ0JsK1FBQVJna0JBTDBlQUFEMkJBSUFPdmdDQUdvTEFRQUJBUUFBYkFBQ0FJYjVBQUJuXFxcbkNRRUFWL29BQUN3S0FRQ1JId0FBQkFjREFOOEVBQUNFQWdJQTRnRUFBSDRCQWdBcEFnQUE4Z0VDQUs4QkFBQkdBUUlBWnZvQUFEc0tBUVxcXG5BNUh3QUFLQVlDQUhvZUFBQmtCQU1BYkI4QUFKMEdBd0NvK2dBQWV3b0JBTTc0QWdEK0N3RUFLQUVBQUxJQUFnQkwrZ0FBSUFvQkFCajRcXFxuQWdCSUN3RUFpUGtDQUxnTUFRQjArUUFBVlFrQkFLa2VBQUMvQkFNQVVSOEFBRjRHQWdBeitBSUFZd3NCQVB6NEFnQXNEQUVBandNQUFDXFxcblFDQWdBKytnQUFFd29CQUY3NkFBQXpDZ0VBSHZvQUFQb0pBUUQzK1FJQUp3MEJBRjhCQUFBR0FRSUFOUjRBQU1ZREFnQkgrd0FBNHdvQ1xcXG5BR0w1QWdDU0RBRUFodm9BQUZrS0FRQXYrUUFBRUFrQkFOMzRBZ0FOREFFQWN3OEFBQ1FEQWdBVkhnQUFmd01EQU5BZUFBQW1CUU1BeXZcXFxua0FBS3NKQVFEbUJBQUFqZ0lDQUtJZkFBQkRCd1FBbWZrQ0FNa01BUURDSHdBQWx3Y0RBTWY0QWdEM0N3RUF2UG9BQUk4S0FRQzBNQUFBXFxcbnF3Z0NBTG41QWdEcERBRUFjeDRBQUZRRUFnQmIrUUFBUEFrQkFGTDVBZ0NDREFFQVgvb0FBRFFLQVFBSUd3QUFQZ01DQUFRaUFBQWRDQVxcXG5JQW9oNEFBS3dFQWdEcUFRQUFpZ0VDQUNrQkFBQzBBQUlBSVBrQUFBRUpBUUNGSHdBQTF3WUVBSk1lQUFDWUJBSUFzdmtDQU9JTUFRQWhcXFxuK0FJQVVRc0JBTmI1QWdBR0RRRUFaZm9BQURvS0FRQngrUUFBVWdrQkFEQUNBQUFFQWdNQWJRRUFBQjRCQWdBYkFnQUE1Z0VDQU5UNUFnXFxcbkFFRFFFQVlkRUJBQlFMQXdDVStnQUFad29CQUFNRUFBQktBZ0lBYWdFQUFCZ0JBZ0JZQ1FBQXhBSUNBQ0w1QWdCU0RBRUFQZmtBQUI0SlxcXG5BUUE1SGdBQXp3TURBSEQ0QWdDZ0N3RUFyaDRBQU00RUF3QTFId0FBSFFZREFDLzZBQUFFQ2dFQVhnRUFBQVFCQWdCREhnQUE1QU1DQUVcXFxuTDRBZ0J5Q3dFQXNma0FBSklKQVFCZCtnQUFNZ29CQU5MNUFBQ3pDUUVBMkI0QUFENEZBd0RLK2dBQW5Rb0JBTndlQUFCS0JRTUEvZmtDXFxcbkFDME5BUUFMK1FJQU93d0JBTWtlQUFBWUJRSUFLU01BQUdrSUFRQ1dIZ0FBbmdRQ0FLRDVBZ0RRREFFQTBQa0FBTEVKQVFEdEJBQUFtQVxcXG5JQ0FNSUFBQUFFQUFJQWVSNEFBR0VFQXdEeEJBQUFvQUlDQU5BZkFBQzBCd0lBOVI0QUFJNEZBZ0FsQVFBQXNBQUNBQ3o3QUFDMUNnTUFcXFxuaHdNQUFCa0NBUUR2K1FBQTBBa0JBUFg1QWdBbERRRUFjQUVBQUNRQkFnQndJZ0FBT1FnQ0FNejVBZ0Q4REFFQWJmb0FBRUlLQVFDQStRXFxcbkFBWVFrQkFBZjVBQURvQ0FFQVYvZ0NBSWNMQVFDNUhnQUE3Z1FDQU5YNEFnQUZEQUVBK2ZrQUFOb0pBUUNpK0FJQTBnc0JBRXY1QUFBc1xcXG5DUUVBZnZnQ0FLNExBUUFmK1FBQUFBa0JBT3o1QUFETkNRRUE5QVFBQUtZQ0FnQlJCQUFBV2dJQ0FLMGlBQUJUQ0FJQUYva0NBRWNNQVFcXFxuQmgrQUlBa1FzQkFCMzVBQUQrQ0FFQWx2b0FBR2tLQVFEMkFBQUFYQUFDQUNjZUFBQ29Bd0lBU0I4QUFFd0dBZ0RySHdBQTZnY0NBT1VlXFxcbkFBQmtCUUlBbi9rQ0FNOE1BUURvK0FJQUdBd0JBTi81QUFEQUNRRUFyeDRBQU5FRUF3QXErUUFBQ3drQkFIajZBQUJMQ2dFQWJQb0FBRVxcXG5FS0FRQWlIZ0FBbmdNQ0FPb2VBQUJ3QlFNQVVQZ0NBSUFMQVFESitRSUErUXdCQUJ6NUFBRDlDQUVBTXdvQUFONENBZ0RuQUFBQVFBQUNcXFxuQUF2NEFnQTdDd0VBa2ZvQUFHUUtBUURkQ1FBQTJnSUNBRWo0QWdCNEN3RUFadmtBQUVjSkFRQTIrd0FBeXdvQ0FGZjVBQUE0Q1FFQWl2XFxcbmdDQUxvTEFRQmNNQUFBZlFnQ0FJTDVBZ0N5REFFQUlnRUFBS29BQWdCZCtRQUFQZ2tCQU16NEFnRDhDd0VBYXZnQ0FKb0xBUUNCSHdBQVxcXG55QVlEQUNvaEFBQU9DQUVBZmdFQUFFQUJBZ0NwK1FBQWlna0JBTDM2QUFDUUNnRUFIdmtDQUU0TUFRRHIrUUFBekFrQkFEZjVBZ0JuREFcXFxuRUFwdmdDQU5ZTEFRQkNIZ0FBNGdNQ0FDOFJBUUQ3Q2dJQXFCOEFBRnNIQXdEQUFBQUFBQUFDQU5yNEFnQUtEQUVBdGZrQ0FPVU1BUURCXFxcbitBSUE4UXNCQUxUNUFBQ1ZDUUVBY1FFQUFDWUJBZ0JTK1FBQU13a0JBQWo2QUFEcENRRUFyQjhBQUdrSEJBRDdBUUFBcFFFREFCTDVBQVxcXG5EekNBRUFFUjhBQU1ZRkFnQUJBZ0FBc2dFQ0FMbjRBZ0RwQ3dFQUhQb0NBRXdOQVFDMStBSUE1UXNCQUlnZUFBQ0NCQUlBdVBvQUFJc0tcXFxuQVFCRCtnQUFHQW9CQUVRQkFBRGFBQUlBaXg0QUFJZ0VBZ0RoK1FJQUVRMEJBSHo1QUFCZENRRUFoZmtBQUdZSkFRQUdId0FBcUFVREFMXFxcbklmQUFCOUJ3TUEyL2tDQUFzTkFRRGtId0FBMndjQ0FNUDZBQUNXQ2dFQWR3RUFBRElCQWdCSStRSUFlQXdCQU1zQUFBQVVBQUlBbng4QVxcXG5BRGtIQkFDWitnQUFiQW9CQUVMNUFnQnlEQUVBZHZrQ0FLWU1BUUNJK1FBQWFRa0JBT1lmQUFEZkJ3SUFWZ0VBQVBRQUFnQ09IZ0FBamdcXFxuUUNBUDc0QWdBdURBRUFSaDRBQU9vREFnQWUrQUlBVGdzQkFGMEVBQUJpQWdJQXp4OEFBTElIQWdEUEhnQUFKQVVDQUVnZUFBRHVBd0lBXFxcbnkva0FBS3dKQVFCRytRSUFkZ3dCQU0vNkFBQ2lDZ0VBQ1FFQUFId0FBZ0RqSWdBQVh3Z0NBRklQQUFBY0F3SUFUREFBQUcwSUFnQ3krUVxcXG5BQWt3a0JBQ3dCQUFDNkFBSUFhZmtDQUprTUFRQ2wrUUlBMVF3QkFIb3dBQUNaQ0FJQXZ2a0NBTzRNQVFBYkh3QUEyd1VEQUYwZkFBQjNcXFxuQmdNQXEva0NBTnNNQVFEeCtBSUFJUXdCQUw3NUFBQ2ZDUUVBdVBrQUFKa0pBUUMwSHdBQWdnY0RBTjhlQUFCVEJRTUFMd0lBQUFJQ0FnXFxcbkEwQ1FBQXdnSUNBSXI1QWdDNkRBRUE2QjhBQU9RSEFnQ3IrZ0FBZmdvQkFGdjZBQUF3Q2dFQTB3UUFBSFFDQWdBbUlnQUFKUWdDQUFQNlxcXG5BZ0F6RFFFQUV2b0FBUEFKQVFEa0hnQUFZZ1VDQU5ZZkFBQytCd0lBTWZrQUFCSUpBUUNoK2dBQWRBb0JBRGI1QWdCbURBRUE2UjhBQU9cXFxuWUhBZ0QwSHdBQStBY0RBR3o0QWdDY0N3RUFFZmtDQUVFTUFRQmZDUUFBMGdJQ0FNMEFBQUFZQUFJQVh2a0NBSTRNQVFDUCtRQUFjQWtCXFxcbkFBZ2VBQUJpQXdNQStqQUFBTjBJQWdEYUJBQUFlZ0lDQU1YNUFBQ21DUUVBMkFFQUFHTUJBd0RzQVFBQWpnRURBRjc1QUFBL0NRRUFUdlxcXG5zQUFQRUtBZ0RGQUFBQUNnQUNBSDM0QWdDdEN3RUFEQnNBQUVJREFnREcrUUlBOWd3QkFIbjRBZ0NwQ3dFQTh2a0NBQ0lOQVFET0hnQUFcXFxuSWdVQ0FOb05BQUFQQXdJQWdCOEFBTVVHQXdCME1BQUFrUWdDQUlraUFBQlBDQUlBMEFFQUFGQUJBZ0NzSGdBQXlBUURBRkg0QWdDQkN3XFxcbkVBTEFJQUFQb0JBd0NlSHdBQU5RY0VBTkw1QWdBQ0RRRUFCZm9BQU9ZSkFRQ00rQUlBdkFzQkFQMGZBQUFLQ0FFQUN4OEFBTFVGQXdDNlxcXG4rZ0FBalFvQkFJSWVBQUIyQkFJQXd2Z0NBUElMQVFBd0h3QUFFQVlDQUljZkFBRGZCZ1FBWWZvQUFEWUtBUUFHR3dBQVBBTUNBT2o1QWdcXFxuQVlEUUVBRHZnQ0FENExBUUFBSHdBQW1BVUNBQVA2QUFEa0NRRUFBZ0lBQUxRQkFnRE9BUUFBVEFFQ0FCTDZBZ0JDRFFFQVQvZ0NBSDhMXFxcbkFRREJCQUFBYWdJQ0FJSDZBQUJVQ2dFQXgvb0FBSm9LQVFDNytRQUFuQWtCQUc4QkFBQWlBUUlBRkFFQUFJNEFBZ0RIREFBQUFBTUNBQVxcXG40YkFBQkVBd0lBMGZrQ0FBRU5BUUE1QVFBQXpBQUNBRGI0QWdCbUN3RUFTQXNBQU9vQ0FnRDVNQUFBMndnQ0FIbjZBQUJNQ2dFQVdEQUFcXFxuQUhrSUFnQngrUUlBb1F3QkFDajVBZ0JZREFFQS9BRUFBS2dCQWdBa0lnQUFJd2dDQUxQNkFBQ0dDZ0VBNS9nQ0FCY01BUURlSHdBQXpRXFxcbmNDQU9jQkFBQ0VBUUlBRXg0QUFIb0RBZ0JhK2dBQUx3b0JBTTRmQUFDd0J3SUFXQjRBQUJZRUFnQmsrUUlBbEF3QkFMNzZBQUNSQ2dFQVxcXG5EeDRBQUhJREFnQTQrUUlBYUF3QkFCMEJBQUNnQUFJQWxQa0FBSFVKQVFCSCtRQUFLQWtCQUtvREFBQXBBZ0lBZ2ZrQUFHSUpBUUF3SGdcXFxuQUF2QU1DQUJRZkFBRE9CUU1BOGZrQUFOSUpBUUNwSHdBQVhnY0RBR0llQUFBc0JBSUFYZmdDQUkwTEFRQk8rZ0FBSXdvQkFDSWZBQURvXFxcbkJRTUFPUGdDQUdnTEFRQ20rUUlBMWd3QkFELzVBQUFnQ1FFQTgva0NBQ01OQVFDdCtnQUFnQW9CQUhyNEFnQ3FDd0VBTVBnQ0FHQUxBUVxcXG5ESStBSUErQXNCQUFvQkFBQitBQUlBQ3dJQUFNWUJBZ0IzSHdBQXR3WUNBTFQ2QUFDSENnRUFoZmtDQUxVTUFRRDMrUUFBMkFrQkFFLzVcXFxuQWdCL0RBRUFRUG9BQUJVS0FRQm8rUUlBbUF3QkFJejZBQUJmQ2dFQXpnQUFBQm9BQWdEQStnQUFrd29CQUdJd0FBQ0RDQUlBK1FBQUFGXFxcbjRBQWdDd0h3QUFlUWNDQUpRTEFBRDBBZ0lBSnZrQ0FGWU1BUUNFSHdBQTB3WUVBTzhFQUFDY0FnSUFuUThBQURBREFnQnRJZ0FBTXdnQ1xcXG5BQ2dmQUFENkJRSUFWZmtDQUlVTUFRQjVJZ0FBUXdnQ0FMYjZBQUNKQ2dFQU5ma0FBQllKQVFBNUJBQUFWZ0lDQURnWkFRQUxDd0lBN2dcXFxuQUFBRTRBQWdCN0FRQUFPZ0VDQUF3ZUFBQnNBd0lBYWg0QUFFSUVBZ0FVQWdBQTJBRUNBRmNQQUFBZUF3SUFKZmdDQUZVTEFRQzdGQUVBXFxcbkFRc0NBQUFCQUFCcUFBSUE1Z0VBQUlJQkFnQlIrUUlBZ1F3QkFNNzVBZ0QrREFFQWhQa0NBTFFNQVFEcklnQUFZd2dDQUdzZkFBQ2FCZ1xcXG5NQU93RUFBTkFBQWdEcCtRSUFHUTBCQUw3NEFnRHVDd0VBSS9nQ0FGTUxBUURUK1FJQUF3MEJBSHo1QWdDc0RBRUFTZm9BQUI0S0FRQ3hcXFxuSGdBQTF3UURBSmo1QWdESURBRUFUakFBQUc4SUFnQU5Id0FBdXdVREFFb05BQUFKQXdJQU9mc0FBTThLQWdCYU1BQUFld2dDQUxENUFBXFxcbkNSQ1FFQS8vZ0NBQzhNQVFDdU1BQUFwUWdDQUhmNUFnQ25EQUVBK2dFQUFLSUJBd0FnSGdBQW1nTUNBQmY1QUFENENBRUFpZmtBQUdvSlxcXG5BUUFPK1FBQTd3Z0JBRFQ3QUFESENnSUFpZmdDQUxrTEFRQm0rQUlBbGdzQkFHWDRBZ0NWQ3dFQUx3RUFBTUFBQWdBTytnSUFQZzBCQUdcXFxuRWVBQUFxQkFJQS9RRUFBS29CQWdBRCtBSUFNd3NCQU9NZkFBRFlCd01BUlBvQUFCa0tBUUNtSHdBQVV3Y0VBQThDQUFET0FRSUFwQjhBXFxcbkFFc0hCQURMREFBQUJnTURBRS82QUFBa0NnRUFsL2tDQU1jTUFRQkxIZ0FBOUFNQ0FLTDZBQUIxQ2dFQU9mZ0NBR2tMQVFCVkh3QUFhUVxcXG5ZREFESWVBQURBQXdJQThQa0FBTkVKQVFEcUFBQUFSZ0FDQU5UNEFnQUVEQUVBYWZrQUFFb0pBUUQ2QUFBQVlBQUNBRE1lQUFEQ0F3SUFcXFxuYng0QUFFd0VBZ0NxK1FBQWl3a0JBRGo1QUFBWkNRRUFKdmdDQUZZTEFRQTgrUUFBSFFrQkFPSUVBQUNHQWdJQVh4NEFBQ1lFQWdEQ0JBXFxcbkFBYkFJQ0FOMEVBQUNBQWdJQWtBTUFBQ1lDQXdBaitRSUFVd3dCQUJrRUFBQlVBZ0lBNmZnQ0FCa01BUUE3R3dBQVNBTUNBR0Q0QWdDUVxcXG5Dd0VBd0I0QUFQNEVBd0FrQVFBQXJnQUNBRFg1QWdCbERBRUF6U0VBQUJjSUFnQWYrQUlBVHdzQkFKVWZBQUFUQndRQVdmb0FBQzRLQVFcXFxuQksrd0FBNlFvQ0FEY0JBQURLQUFJQUdmb0NBRWtOQVFDTUhnQUFpZ1FDQUJINkFnQkJEUUVBa3ZrQUFITUpBUUNiK1FBQWZBa0JBRzhpXFxcbkFBQTNDQUlBQ1BrQ0FEZ01BUUNoSGdBQXFnUUNBTWN3QUFDOUNBSUFYQThBQUNBREFnQzhGQUVBQXdzQ0FCcjVBQUQ3Q0FFQVNmc0FBT1xcXG5jS0FnQ1MrQUlBd2dzQkFMdlJBUUFnQ3dJQURnUUFBRklDQWdCK0hnQUFiZ1FDQU5NZkFBQzdCd01BdGg4QUFJVUhBZ0JrQVFBQUVBRUNcXFxuQUN2NUFnQmJEQUVBUFI4QUFETUdBd0NHQXdBQUZ3SUNBQ1FmQUFEdUJRTUF6Zm9BQUtBS0FRQVgrZ0FBOHdrQkFCY2VBQUNGQXdNQUMvXFxcbm9BQU93SkFRQ0ErUUlBc0F3QkFDMzZBQUFDQ2dFQWp2Z0NBTDRMQVFBdSt3QUF1d29DQURINkFBQUdDZ0VBQ1I4QUFMQUZBZ0FWK0FJQVxcXG5SUXNCQU1yNUFnRDZEQUVBVmZvQUFDb0tBUUQ1K1FJQUtRMEJBR0lmQUFDQkJnTUFCZ0VBQUhZQUFnQy9IZ0FBK3dRREFEZ2ZBQUFtQmdcXFxuSUFJQjhBQU9RRkFnQmwrUUlBbFF3QkFDbjRBZ0JaQ3dFQSt4OEFBQVlJQWdESkFBQUFFQUFDQUVjQkFBRGdBQUlBdy9rQ0FQTU1BUUFUXFxcbkFnQUExZ0VDQUowZkFBQXhCd1FBSlI4QUFQRUZBd0N2K1FJQTN3d0JBSGY2QUFCS0NnRUFDU0lBQUI4SUFnQjJEd0FBS0FNQ0FGYjVBQVxcXG5BM0NRRUF6QjhBQUt3SEFnQ2dId0FBUFFjREFEd0JBQURTQUFJQXN4NEFBTjBFQXdCYUhnQUFHZ1FDQURYN0FBREpDZ0lBdGZrQUFKWUpcXFxuQVFBSytnQUE2d2tCQUtVZkFBQlBCd1FBTGdJQUFBQUNBZ0R1SGdBQWZBVURBTlVCQUFCYUFRTUFYQUVBQUFBQkFnRGpBQUFBT2dBQ0FJXFxcbnY2QUFCZUNnRUFlVEFBQUpjSUFnQTQrd0FBelFvQ0FGWDRBZ0NGQ3dFQW52b0FBSEVLQVFCT0FRQUE2QUFDQUhVZUFBQllCQUlBUnZvQVxcXG5BQnNLQVFBSytnSUFPZzBCQUJFQ0FBRFNBUUlBcWZnQ0FOa0xBUUFWQVFBQWtBQUNBTkV3QUFERENBSUFSeDRBQU93REFnRGcrQUlBRUFcXFxud0JBSDc2QUFCUkNnRUEyQjhBQU1NSEFnQ1NIZ0FBbGdRQ0FHZjRBZ0NYQ3dFQUhmc0FBSzBLQWdCOStRQUFYZ2tCQUxuNkFBQ01DZ0VBXFxcblJ2Z0NBSFlMQVFCOUhnQUFiQVFDQU1qNkFBQ2JDZ0VBQkFFQUFISUFBZ0QxQkFBQXFBSUNBQkQ2QWdCQURRRUFkZmtBQUZZSkFRQnErUVxcXG5BQVN3a0JBQ3Y2QUFBQUNnRUFjeDhBQUs4R0FnQlgrUUlBaHd3QkFOMGVBQUJOQlFNQXJRTUFBQzhDQWdBaytRSUFWQXdCQU5UNkFBQ25cXFxuQ2dFQWUva0NBS3NNQVFCVCtBSUFnd3NCQUQvNkFBQVVDZ0VBaXZvQUFGMEtBUUJNK3dBQTdRb0NBRHNmQUFBdEJnTUF4QUFBQUFnQUFnXFxcbkNhRUFFQTh3b0NBRUVEQUFBUEFnRUFEUjRBQUc0REFnRGNCQUFBZmdJQ0FCRDZBQUR2Q1FFQThSNEFBSVVGQXdBRCtRSUFNd3dCQU8wZlxcXG5BQUR1QndJQTd4OEFBUElIQVFDa0hnQUFzQVFEQUI4Q0FBRHFBUUlBa3ZvQUFHVUtBUUNrK0FJQTFBc0JBTWo1QUFDcENRRUFvUGtBQUlcXFxuRUpBUUF4SGdBQXZnTUNBQVA1QUFEa0NBRUExQU1BQUVRQ0FnQUorQUlBT1FzQkFBY2VBQUJnQXdJQXNSOEFBSHNIQWdEUitBSUFBUXdCXFxcbkFCRWVBQUIyQXdJQTBoOEFBTGdIQXdCZTBRRUFEUXNDQUVINUFnQnhEQUVBWXZrQUFFTUpBUUR3SGdBQWdnVURBT0FlQUFCV0JRTUFValxcXG5BQUFITUlBZ0JJQVFBQTRnQUNBRVFmQUFCR0JnTUFNUGtDQUdBTUFRQUxIZ0FBYWdNQ0FENzRBZ0J1Q3dFQWxEQUFBSjhJQWdCYkhnQUFcXFxuSEFRQ0FGVDZBQUFwQ2dFQS9Qa0FBTjBKQVFEZUFRQUFjZ0VEQUFJZUFBQldBd0lBNVBrQ0FCUU5BUUIvK1FBQVlBa0JBT0VmQUFEVEJ3XFxcbklBeXg0QUFCd0ZBZ0JIK1FJQWR3d0JBQzM0QWdCZEN3RUFiUjhBQUtBR0F3Qk1IZ0FBOWdNREFBQWVBQUJTQXdJQVBQa0NBR3dNQVFERVxcXG4rUUlBOUF3QkFDMGZBQUFIQmdNQWpBTUFBQ0FDQWdDN0ZRRUFDUXNDQUF6NkFBRHRDUUVBaHZrQ0FMWU1BUUFLSHdBQXNnVURBSU1mQUFcXFxuRFBCZ1FBNHg0QUFGOEZBd0ErK1FJQWJnd0JBTzM0QWdBZERBRUFnZmtDQUxFTUFRQlVId0FBWmdZREFCWWVBQUNDQXdNQWF2b0FBRDhLXFxcbkFRQjVBUUFBTmdFQ0FDMzdBQUM0Q2dNQUMva0FBT3dJQVFBKyt3QUExd29DQUxENUFnRGdEQUVBTXZrQUFCTUpBUURtSGdBQVpnVUNBRlxcXG43NEFnQ09Dd0VBMS9nQ0FBY01BUUJBSGdBQTNnTUNBTzBpQUFCbkNBSUFReDhBQUVNR0F3RGxCQUFBakFJQ0FLWDZBQUI0Q2dFQW94OEFcXFxuQUVjSEJBQm4rUUlBbHd3QkFKUDVBQUIwQ1FFQWpmZ0NBTDBMQVFEdEFBQUFUQUFDQUFiNUFnQTJEQUVBbVBvQUFHc0tBUUFCK1FJQU1RXFxcbndCQVBjZkFBRDlCd01BWEFrQUFNd0NBZ0JnK2dBQU5Rb0JBTW9EQUFBNEFnSUFZdm9BQURjS0FRREQrQUlBOHdzQkFNb2VBQUFhQlFJQVxcXG5VUGtBQURFSkFRQnpBUUFBS2dFQ0FKcjVBZ0RLREFFQWNQa0NBS0FNQVFCYStBSUFpZ3NCQUJQNkFnQkREUUVBaS9rQUFHd0pBUUFUK1FcXFxuSUFRd3dCQUxrUEFBQTRBd0lBR2ZrQUFQb0lBUUM2SGdBQThBUUNBSkQ0QWdEQUN3RUFVL2tBQURRSkFRQ3lIZ0FBMmdRREFBVDVBQURsXFxcbkNBRUEzQUVBQUc4QkF3Q3JBd0FBS3dJQ0FFNzVBQUF2Q1FFQTMvZ0NBQThNQVFBWkh3QUExZ1VDQUx3d0FBQ3pDQUlBWGpBQUFIOElBZ1xcXG5DSEhnQUFnQVFDQVByNUFBRGJDUUVBSy9nQ0FGc0xBUUFkK0FJQVRRc0JBS1A0QWdEVEN3RUFCUG9DQURRTkFRQTYrZ0FBRHdvQkFPUUVcXFxuQUFDS0FnSUExZmtDQUFVTkFRQU4rUUlBUFF3QkFHZjVBQUJJQ1FFQTAvb0FBS1lLQVFEeUh3QUE4d2NEQUlZZUFBQitCQUlBTGZrQUFBXFxcbjRKQVFEM0hnQUFrZ1VDQUluNkFBQmNDZ0VBZFBnQ0FLUUxBUUJTK0FJQWdnc0JBTTM1QUFDdUNRRUFWUGdDQUlRTEFRQWxIZ0FBcEFNQ1xcXG5BTUVlQUFBQkJRTUEyeDRBQUVjRkF3QUZBZ0FBdWdFQ0FFUDRBZ0J6Q3dFQXNmZ0NBT0VMQVFDNEh3QUFpZ2NDQU1zTEFBRDRBZ0lBVFBcXFxuZ0NBSHdMQVFBdytnQUFCUW9CQU1zSkFBRFVBZ0lBV1BnQ0FJZ0xBUUJiSHdBQWRBWURBTUlHQUFDNkFnSUFVUGtDQUlBTUFRQmNDd0FBXFxcbjhBSUNBRTM2QUFBaUNnRUFreDhBQUFzSEJBQjArZ0FBUndvQkFGa2ZBQUJ5QmdJQUhmb0NBRTBOQVFCdytnQUFRd29CQUJqNkFBRDBDUVxcXG5FQWlQZ0NBTGdMQVFDMytBSUE1d3NCQUozNUFBQitDUUVBMi9rQUFMd0pBUUJBK1FBQUlRa0JBSTBmQUFEMUJnUUFseDhBQUJzSEJBQVFcXFxuSGdBQWRBTUNBSmY1QUFCNENRRUFWdmtDQUlZTUFRQ3ErUUlBMmd3QkFFRWVBQURnQXdJQURQa0NBRHdNQVFCaStBSUFrZ3NCQUdZZUFBXFxcbkEyQkFNQStCNEFBSlFGQWdCSitBSUFlUXNCQUpUNEFnREVDd0VBZng0QUFIQUVBZ0FwSHdBQS9BVUNBQno2QUFENENRRUFzQjRBQU5RRVxcXG5Bd0IwSHdBQXNRWUNBT2tlQUFCdEJRTUF1eDhBQUpBSEFnQmlBUUFBREFFQ0FOSUFBQUFnQUFJQWwvb0FBR29LQVFBaytBSUFWQXNCQURcXFxuTUNBQUFNQWdJQXJ5SUFBRmNJQWdEc0h3QUE3QWNDQUgvNkFBQlNDZ0VBU3ZrQ0FIb01BUUNIK0FJQXR3c0JBQmY2QWdCSERRRUFNUWtBXFxcbkFNQUNBZ0F3QVFBQXdnQUNBRFVCQUFER0FBSUFkakFBQUpNSUFnQ2lEd0FBTWdNQ0FQZ0VBQUNxQWdJQUp4OEFBUGNGQXdCaitRQUFSQVxcXG5rQkFFMzVBQUF1Q1FFQVFBTUFBQTRDQVFETitRSUEvUXdCQUFFZUFBQlVBd0lBMHg0QUFDOEZBd0FEQVFBQWNBQUNBQUFDQUFDd0FRSUFcXFxuZkFFQUFEd0JBZ0FzK1FBQURRa0JBQkllQUFCNEF3SUFNL3NBQU1VS0FnQ1QrZ0FBWmdvQkFQVUFBQUJhQUFJQStEQUFBTmtJQWdBUUFnXFxcbkFBMEFFQ0FQTUFBQUJXQUFJQUJQZ0NBRFFMQVFEQStBSUE4QXNCQUJvQ0FBRGtBUUlBSEI0QUFKQURBd0FlQVFBQW9nQUNBSThmQUFEOVxcXG5CZ1FBVFBvQUFDRUtBUUJiQ1FBQXlnSUNBRVg2QUFBYUNnRUExZm9BQUtnS0FRQXUrQUlBWGdzQkFGejZBQUF4Q2dFQXQva0FBSmdKQVFcXFxuQUdBZ0FBdkFFQ0FNY2ZBQUNoQndNQXl3TUFBRG9DQWdEYytRQUF2UWtCQUNzQ0FBRDNBUU1BTHZrQUFBOEpBUURpSGdBQVhBVURBSS80XFxcbkFnQy9Dd0VBVFBrQ0FId01BUUNFK2dBQVZ3b0JBT1A1QWdBVERRRUExdmtBQUxjSkFRQmRBUUFBQWdFQ0FDUWVBQUNpQXdJQVhQa0NBSVxcXG53TUFRQ21IZ0FBdGdRREFLZ2VBQUM4QkFNQTl6QUFBTmNJQWdCMytRQUFXQWtCQU1UNkFBQ1hDZ0VBTy9vQUFCQUtBUUFFK1FJQU5Bd0JcXFxuQUt2NUFBQ01DUUVBNndRQUFKUUNBZ0FnK2dBQSt3a0JBQWY1QWdBM0RBRUF4aDRBQUJBRkF3QUYrZ0lBTlEwQkFLc1FBUUQzQ2dJQVB4XFxcbjRBQU53REFnQ0ZJZ0FBU3dnQ0FFTURBQUFRQWdFQTJ2a0FBTHNKQVFBSCtnSUFOdzBCQUJYNkFnQkZEUUVBOHdRQUFLUUNBZ0FUQVFBQVxcXG5qQUFDQUhzZkFBQy9CZ0lBenlFQUFCc0lBZ0I2SHdBQXZRWUNBT1VBQUFBK0FBSUFmVEFBQUowSUFnQVUrZ0lBUkEwQkFKSDRBZ0RCQ3dcXFxuRUE1ZmtDQUJVTkFRQ0QrUUlBc3d3QkFKQWZBQUFCQndNQWhSNEFBSHdFQWdEVUFBQUFKQUFDQU9BaUFBQlpDQUlBcmdNQUFERUNBZ0N1XFxcbitBSUEzZ3NCQVB2NUFBRGNDUUVBblBrQUFIMEpBUUFYQWdBQTNnRUNBTGNlQUFEcEJBTUFxdmdDQU5vTEFRQ0ZBd0FBRlFJQ0FCYjZBQVxcXG5EeUNRRUE0dmtDQUJJTkFRRGhBUUFBZXdFREFBRDZBZ0F3RFFFQVZBRUFBUEFBQWdDM0h3QUFod2NEQU84ZUFBQi9CUU1BQXZvQUFPTUpcXFxuQVFDUStRSUF3QXdCQUZJZUFBQUlCQU1BSkFZQUFMSUNBZ0NkK1FJQXpRd0JBSVA0QWdDekN3RUExeDhBQU1BSEF3RE0rUUFBclFrQkFDXFxcbmI1QUFBSENRRUFWaDRBQUJJRUFnQUcrZ0FBNXdrQkFGSDZBQUFtQ2dFQTlCNEFBSXdGQWdEYStRSUFDZzBCQURZZUFBRElBd0lBMHdZQVxcXG5BTHdDQWdELytRSUFMdzBCQU9MNEFnQVNEQUVBcWg0QUFNSUVBd0N0K0FJQTNRc0JBQWY2QUFEb0NRRUFldmtDQUtvTUFRQm0rUUlBbGdcXFxud0JBSUFlQUFCeUJBSUEwZ0VBQUZRQkFnQmpId0FBaEFZREFLMGZBQUJ0QndRQUh2a0FBUDhJQVFDZytnQUFjd29CQUdQNEFnQ1RDd0VBXFxcbjNUQUFBTk1JQWdCZUJBQUFaQUlDQUJyNUFnQktEQUVBQlI0QUFGd0RBZ0FhQVFBQW1nQUNBR0VmQUFCL0JnSUFHL29DQUVzTkFRRGcrUVxcXG5JQUVBMEJBRDBCQUFEVUFBSUFNdnNBQU1NS0FnQ2xIZ0FBc3dRREFOME5BQUFUQXdNQUdBRUFBSllBQWdBSEFnQUF2Z0VDQVBvZkFBQUVcXFxuQ0FJQVAva0NBRzhNQVFDRytBSUF0Z3NCQU9ENUFBREJDUUVBY1BrQUFGRUpBUUIrK1FJQXJnd0JBSEw1QUFCVENRRUFOZ0VBQU1nQUFnXFxcbkFLR3dBQVFBTUNBSE13QUFDUENBSUFGdmtBQVBjSUFRRGlJZ0FBWFFnQ0FDSDVBZ0JSREFFQVlDSUFBQzhJQWdCbUh3QUFqUVlEQUEvNFxcXG5BZ0EvQ3dFQUFTQUFBQXdJQVFDSUh3QUE0d1lEQUtiNkFBQjVDZ0VBcmg4QUFIRUhCQUNrK2dBQWR3b0JBRG9mQUFBcUJnTUF3Zm9BQUpcXFxuUUtBUUNQK2dBQVlnb0JBRjBKQUFET0FnSUEwZmtBQUxJSkFRQkJHd0FBVGdNQ0FFajVBQUFwQ1FFQVBCNEFBTllEQWdEWitnQUFyQW9CXFxcbkFBQUVBQUJHQWdJQWJma0FBRTRKQVFCOEhnQUFhZ1FDQU5NREFBQkNBZ0lBY2dFQUFDZ0JBZ0FmSGdBQW1BTUNBSi82QUFCeUNnRUFiaVxcXG5JQUFEVUlBZ0FpK0FJQVVnc0JBSFVQQUFBbUF3SUFjZmdDQUtFTEFRQVMrQUlBUWdzQkFIVWlBQUEvQ0FJQVB4OEFBRGtHQXdEWE1BQUFcXFxueXdnQ0FOa0FBQUFxQUFJQXEvZ0NBTnNMQVFCNitnQUFUUW9CQUJYNUFBRDJDQUVBSFI0QUFKTURBd0RyQVFBQWpBRUNBQWo0QWdBNEN3XFxcbkVBanZrQ0FMNE1BUUJUK2dBQUtBb0JBS2I1QUFDSENRRUFEUGdDQUR3TEFRRDErQUlBSlF3QkFBTDZBZ0F5RFFFQWdSNEFBSFFFQWdBd1xcXG4rUUFBRVFrQkFHQXdBQUNCQ0FJQTZoOEFBT2dIQWdDS0F3QUFIZ0lDQUZ6NEFnQ01Dd0VBeVI4QUFLWUhBZ0J2K0FJQW53c0JBQXI1QWdcXFxuQTZEQUVBQXZrQ0FESU1BUUExK0FJQVpRc0JBRTBCQUFEbUFBSUFZdEVCQUJjTEF3QWorUUFBQkFrQkFKYjRBZ0RHQ3dFQUxRSUFBUDBCXFxcbkF3RHkrUUFBMHdrQkFNSXdBQUM1Q0FJQTFEQUFBTWNJQWdCKytRQUFYd2tCQU9JZkFBRFZCd01BN0FBQUFFb0FBZ0JKSHdBQVRnWUNBSVxcXG4zNkFBQmdDZ0VBbVBnQ0FNZ0xBUUMxSGdBQTR3UURBSlQ1QWdERURBRUFLd0VBQUxnQUFnQU9BZ0FBekFFQ0FHZ0JBQUFVQVFJQVZoOEFcXFxuQUd3R0F3Q2crQUlBMEFzQkFGTDZBQUFuQ2dFQVBma0NBRzBNQVFEYUFBQUFMQUFDQU1RZUFBQUtCUU1BbFI0QUFKd0VBZ0JuSHdBQWtBXFxcbllEQU1INUFnRHhEQUVBM3ZrQUFMOEpBUUE5K0FJQWJRc0JBTzM1QUFET0NRRUF2L29BQUpJS0FRQlhCQUFBWGdJQ0FBMzZBQUR1Q1FFQVxcXG5zZm9BQUlRS0FRRDYrQUlBS2d3QkFFa2VBQUR3QXdJQUcva0FBUHdJQVFCUUhnQUFBZ1FEQUVyNUFBQXJDUUVBa1BvQUFHTUtBUUNFSWdcXFxuQUFTUWdDQUtBZUFBQ29CQUlBYVFFQUFCWUJBZ0FBK1FBQTRRZ0JBT3NlQUFCekJRTUE1ZmtBQU1ZSkFRRHErUUlBR2cwQkFLejRBZ0RjXFxcbkN3RUErUGdDQUNnTUFRRElEQUFBQWdNQ0FQYjRBZ0FtREFFQWFQa0FBRWtKQVFCc0hnQUFSZ1FDQU5qNEFnQUlEQUVBdGg0QUFPWUVBd1xcXG5DWitBSUF5UXNCQU1NQUFBQUdBQUlBc0FFQUFFZ0JBZ0FUSHdBQXl3VURBR01lQUFBdUJBSUFFZ0VBQUlvQUFnQWcrUUlBVUF3QkFBVDZcXFxuQUFEbENRRUEyZmdDQUFrTUFRQTRIZ0FBekFNREFKUWZBQUFQQndRQVFQa0NBSEFNQVFCOStRSUFyUXdCQUU3NEFnQitDd0VBcGZrQUFJXFxcbllKQVFEY0NRQUEyQUlDQVB3QUFBQmtBQUlBN0I0QUFIWUZBd0NnQVFBQVFnRUNBTFQ1QWdEa0RBRUF5Z3NBQVBZQ0FnQTArQUlBWkFzQlxcXG5BQXY2QWdBN0RRRUEyUG9BQUtzS0FRREZNQUFBdXdnQ0FQWDVBQURXQ1FFQVMvZ0NBSHNMQVFCZUhnQUFKQVFDQU1iNEFnRDJDd0VBTy9cXFxua0NBR3NNQVFCUkFRQUE3Z0FDQVB3ZkFBQUlDQUlBT2ZvQUFBNEtBUUFKSGdBQVpRTURBSm41QUFCNkNRRUE1dmdDQUJZTUFRQzYrQUlBXFxcbjZnc0JBSGI0QWdDbUN3RUFJd0VBQUt3QUFnQTgrd0FBMVFvQ0FKYjVBQUIzQ1FFQWpSNEFBSXdFQWdBTUFRQUFnZ0FDQU83NEFnQWVEQVxcXG5FQUNma0FBT29JQVFCSytnQUFId29CQUtuNUFnRFpEQUVBQnZnQ0FEWUxBUURRTUFBQXdRZ0NBTHY1QWdEckRBRUFkZmtDQUtVTUFRQVlcXFxuK2dJQVNBMEJBSW41QWdDNURBRUFoL2tBQUdnSkFRQUsrQUlBT2dzQkFKajVBQUI1Q1FFQWVma0FBRm9KQVFBTitRQUE3Z2dCQUNMNUFBXFxcbkFEQ1FFQWpCOEFBUEVHQkFBM0h3QUFJd1lEQUVqN0FBRGxDZ0lBWnpBQUFJY0lBZ0F5K1FJQVlnd0JBTkllQUFBc0JRTUEwUUFBQUI0QVxcXG5BZ0FvSGdBQXFnTUNBSGdCQUFBMEFRSUFyUGtDQU53TUFRQmhBUUFBQ2dFQ0FORDZBQUNqQ2dFQUFRUUFBRWdDQWdCQklnQUFKd2dDQUxcXFxuMzVBQUNlQ1FFQThQZ0NBQ0FNQVFCRkhnQUE2QU1DQU5uNUFBQzZDUUVBcWZvQUFId0tBUUExK2dBQUNnb0JBTklFQUFCeUFnSUFOQjRBXFxcbkFNUURBZ0FuK1FBQUNBa0JBTU1lQUFBSEJRTUEzdmdDQUE0TUFRQ2krUUlBMGd3QkFFUDVBQUFrQ1FFQWp4NEFBSkFFQWdEVitRQUF0Z1xcXG5rQkFJTDVBQUJqQ1FFQVVCOEFBRndHQWdDU0h3QUFCd2NFQUlFUEFBQXNBd0lBaC9vQUFGb0tBUUJPK1FJQWZnd0JBS3NmQUFCbEJ3UUFcXFxuUGZvQUFCSUtBUURaQVFBQVpnRURBSmI1QWdER0RBRUFpaDRBQUlZRUFnQlkrZ0FBTFFvQkFNRWZBQUNWQndJQVlma0NBSkVNQVFCRUF3XFxcbkFBRVFJQ0FEUWZBQUFhQmdNQXFQa0FBSWtKQVFCakFRQUFEZ0VDQUV2N0FBRHJDZ0lBekFrQUFOWUNBZ0J4SGdBQVVBUUNBT0lBQUFBNFxcXG5BQUlBOC9rQUFOUUpBUUNlK0FJQXpnc0JBTFA0QWdEakN3RUFUUjhBQUZrR0F3RDVIZ0FBbGdVQ0FDLzRBZ0JmQ3dFQUx2b0FBQU1LQVFcXFxuQVUrQUlBUkFzQkFOSDZBQUNrQ2dFQXhSNEFBQTBGQXdEZkNRQUEzQUlDQUtINEFnRFJDd0VBT2ZrQUFCb0pBUUFvQWdBQThBRUNBTkw0XFxcbkFnQUNEQUVBdmRFQkFDUUxBd0NHSHdBQTJ3WUVBR2o0QWdDWUN3RUFLZ0lBQVBRQkF3RGorQUlBRXd3QkFGb0tBQURrQWdJQXlCOEFBS1xcXG5RSEFnQWkrZ0FBL0FrQkFPMEJBQUNSQVFNQW4va0FBSUFKQVFDNCtRSUE2QXdCQU9mNUFnQVhEUUVBdS9vQUFJNEtBUURXQVFBQVhRRURcXFxuQURIN0FBREJDZ0lBUmdFQUFONEFBZ0R5SGdBQWlBVUNBS0VmQUFCQUJ3TUFHQjRBQUlnREFnQ2IrZ0FBYmdvQkFJRDZBQUJUQ2dFQXpQXFxcbm9BQUo4S0FRQjZBUUFBT0FFQ0FEc2VBQURVQXdJQWRCNEFBRllFQWdCcitBSUFtd3NCQUNNZUFBQ2dBd0lBZFFFQUFDNEJBZ0ErSGdBQVxcXG4yZ01DQU5zRUFBQjhBZ0lBbXlFQUFCTUlBZ0NFSGdBQWVnUUNBTS81QUFDd0NRRUFSQjRBQU9ZREFnQWFIZ0FBakFNQ0FHVWZBQUNLQmdcXFxuTUFLZmtBQUFvSkFRQkhJZ0FBS3dnQ0FQSUVBQUNpQWdJQWZQZ0NBS3dMQVFBdkhnQUF1UU1EQUVyNEFnQjZDd0VBalBrQ0FMd01BUUNoXFxcbitRSUEwUXdCQU1nZUFBQVdCUUlBVndFQUFQWUFBZ0MvK0FJQTd3c0JBRUg3QUFEYkNnSUErUVFBQUt3Q0FnQ1YrUUlBeFF3QkFDNEJBQVxcXG5DK0FBSUF0dmtBQUpjSkFRQzhIZ0FBOUFRQ0FDRWVBQUNjQXdJQVFmZ0NBSEVMQVFBV0FRQUFrZ0FDQUZNRUFBQmNBZ0lBa3ZrQ0FNSU1cXFxuQVFCazBRRUFIUXNEQU9INEFnQVJEQUVBZGZvQUFFZ0tBUUFDK1FBQTR3Z0JBQWo1QUFEcENBRUFGL2dDQUVjTEFRQmYrUUFBUUFrQkFEXFxcbnY0QWdCckN3RUFEd0VBQUlnQUFnRFRBQUFBSWdBQ0FHa3dBQUNKQ0FJQVpSNEFBRE1FQXdCRCt3QUEzUW9DQUxvd0FBQ3hDQUlBbXg4QVxcXG5BQ2tIQkFCc0FRQUFIQUVDQU1jQUFBQU1BQUlBYS9rQ0FKc01BUUQ0K1FBQTJRa0JBRmdCQUFENEFBSUFZOUVCQUJvTEF3Q25IZ0FBdVFcXFxuUURBSWdpQUFCTkNBSUF5L29BQUo0S0FRQUIrUUFBNGdnQkFJNGZBQUQ1QmdRQUNmb0NBRGtOQVFESStRSUErQXdCQUE0ZUFBQndBd0lBXFxcblNma0FBQ29KQVFEb0FBQUFRZ0FDQUR6NkFBQVJDZ0VBN1BnQ0FCd01BUURiK0FJQUN3d0JBQmdDQUFEZ0FRSUFaVEFBQUlVSUFnQjgrZ1xcXG5BQVR3b0JBSUlmQUFETEJnUUFteDRBQUtZRUFnQUpBZ0FBd2dFQ0FORWZBQUMyQndJQSt2a0NBQ29OQVFEME1BQUExUWdDQUJvZkFBRFlcXFxuQlFNQVhCNEFBQjRFQXdCcitnQUFRQW9CQU43NUFnQU9EUUVBeHZrQUFLY0pBUURhQVFBQWFRRURBQTRmQUFDK0JRTUFlL2tBQUZ3SkFRXFxcbkREK1FBQXBBa0JBQmNCQUFDVUFBSUFSZmtBQUNZSkFRRCsrUUlBTGcwQkFOWWVBQUE0QlFNQUpRWUFBTFFDQWdDOCtRSUE3QXdCQUVraVxcXG5BQUF0Q0FJQTFBRUFBRmdCQWdEdytRSUFJQTBCQURINUFnQmhEQUVBS3ZrQ0FGb01BUURiSHdBQXlRY0NBSHY2QUFCT0NnRUFndmdDQUxcXFxuSUxBUUR2K0FJQUh3d0JBRS81QUFBd0NRRUFrdzhBQUM0REFnQkYrUUlBZFF3QkFGWXdBQUIzQ0FJQVdRa0FBTVlDQWdDc0lnQUFVUWdDXFxcbkFQWWZBQUQ3QndJQUFmZ0NBREVMQVFBaCtRQUFBZ2tCQUVINkFBQVdDZ0VBL3ZrQUFOOEpBUUNqK2dBQWRnb0JBTFQ0QWdEa0N3RUFEQVxcXG5JQUFNZ0JBZ0RCK1FBQW9na0JBQUFnQUFBTENBRUFCZmtDQURVTUFRQU5CQUFBVUFJQ0FIa2ZBQUM3QmdJQVcva0NBSXNNQVFCeUhnQUFcXFxuVWdRQ0FCdjVBZ0JMREFFQTRma0FBTUlKQVFETCtRSUErd3dCQUUzNEFnQjlDd0VBcC9nQ0FOY0xBUUFGSHdBQXBRVURBREQ3QUFDL0NnXFxcbklBQWZvQUFPSUpBUUR2QUFBQVVBQUNBTURSQVFBdEN3TUFHZmdDQUVrTEFRREtBQUFBRWdBQ0FLNGhBQUFWQ0FJQUxoNEFBTFlEQXdEYVxcXG5NQUFBendnQ0FJRDRBZ0N3Q3dFQU12Z0NBR0lMQVFEYkFRQUFiQUVEQU9jRUFBQ1FBZ0lBVy9nQ0FJc0xBUUR3QVFBQW1BRUNBTWY1QWdcXFxuRDNEQUVBYUI0QUFEd0VBd0FNK1FBQTdRZ0JBRTM3QUFEdkNnSUE5UGdDQUNRTUFRQ3dBd0FBTlFJREFBLzVBQUR3Q0FFQW4vZ0NBTThMXFxcbkFRQ2FId0FBSlFjRUFJajZBQUJiQ2dFQXY5RUJBQ29MQXdCeE1BQUFqUWdDQUduNkFBQStDZ0VBSmhBQUFEb0RBZ0FhK2dBQTlna0JBQVxcXG5NZUFBQllBd0lBS1BrQUFBa0pBUUIwK1FJQXBBd0JBRXNMQUFEc0FnSUFIUjhBQU9FRkF3QmxBUUFBRWdFQ0FOTDZBQUNsQ2dFQXlmb0FcXFxuQUp3S0FRQ1grQUlBeHdzQkFBLzZBZ0EvRFFFQXJ2a0NBTjRNQVFESUFBQUFEZ0FDQUx6NEFnRHNDd0VBYXZrQ0FKb01BUUQ3K1FJQUt3XFxcbjBCQU0zNEFnRDlDd0VBSC9zQUFLOEtBZ0JMK1FJQWV3d0JBQkg0QWdCQkN3RUFXZ2tBQU1nQ0FnRGNNQUFBMFFnQ0FIZ1BBQUFxQXdJQVxcXG5DZmtDQURrTUFRQ3VJZ0FBVlFnQ0FOajVBQUM1Q1FFQWp2b0FBR0VLQVFBcUhnQUFyZ01DQUFnQkFBQjZBQUlBei9rQ0FQOE1BUUI3SGdcXFxuQUFad1FEQU12NEFnRDdDd0VBd3ZvQUFKVUtBUUJmMFFFQUR3c0NBQ1Q1QUFBRkNRRUFiL2tBQUZBSkFRRGVIZ0FBVUFVREFJZjVBZ0MzXFxcbkRBRUFjaDhBQUswR0FnRFVIZ0FBTWdVREFMTDRBZ0RpQ3dFQVF2b0FBQmNLQVFBbUJnQUF0Z0lDQUozNkFBQndDZ0VBcy9rQ0FPTU1BUVxcXG5BWitRSUFTUXdCQU5QNUFBQzBDUUVBY2ZvQUFFUUtBUUF2SHdBQURRWURBTmtlQUFCQkJRTUFML3NBQUwwS0FnRGMrQUlBREF3QkFMUWVcXFxuQUFEZ0JBTUFKZm9BQVAwSkFRQnQrQUlBblFzQkFPb0VBQUNTQWdJQXpSNEFBQ0FGQWdBQkh3QUFtZ1VDQU5ENEFnQUFEQUVBT3ZrQ0FHXFxcbm9NQVFBTUJBQUFUZ0lDQURyNUFBQWJDUUVBLy9rQUFPQUpBUUFtSGdBQXBnTUNBQWdmQUFDdUJRSUFBeDhBQUo4RkF3RFgrZ0FBcWdvQlxcXG5BSVQ0QWdDMEN3RUFSZmdDQUhVTEFRQ09Bd0FBSWdJQ0FOQUVBQUJ1QWdJQXZqQUFBTFVJQWdBeUh3QUFGQVlEQUFqNkFnQTREUUVBZlFcXFxuRUFBRDRCQWdBOUhnQUEyQU1DQUN6NkFBQUJDZ0VBWC9rQ0FJOE1BUUNjK1FJQXpBd0JBRzhmQUFDbUJnTUFOL2tBQUJnSkFRQTArZ0FBXFxcbkNRb0JBQ29mQUFEK0JRTUFhUThBQUNJREFnRGdBQUFBTkFBQ0FIajVBZ0NvREFFQWYva0NBSzhNQVFEdkFRQUFsZ0VDQUVNYkFBQlFBd1xcXG5JQVZRRUFBUElBQWdER0h3QUFud2NDQUFvQ0FBREVBUUlBZHpBQUFKVUlBZ0FiSGdBQWpnTUNBSVg0QWdDMUN3RUFEUUlBQU1vQkFnREVcXFxuK1FBQXBRa0JBS2Y1QUFDSUNRRUFqdmtBQUc4SkFRQk5Ed0FBR2dNQ0FBWDRBZ0ExQ3dFQVdRRUFBUG9BQWdEMEFBQUFXQUFDQUVBZkFBXFxcbkE4QmdJQUFQb0FBT0VKQVFEMitRSUFKZzBCQUs3NkFBQ0JDZ0VBRmZvQUFQRUpBUUFySVFBQUR3Z0NBQWI2QWdBMkRRRUExUUFBQUNZQVxcXG5BZ0F0SGdBQXRBTUNBQThmQUFEQkJRTUFjU0lBQURzSUFnQnhId0FBcXdZQ0FFZjZBQUFjQ2dFQVN3MEFBQXNEQWdBYytBSUFUQXNCQUxcXFxua2ZBQUNNQndJQUp2b0FBUDRKQVFENUh3QUFBZ2dDQURRQkFBREVBQUlBa2ZrQUFISUpBUUJnMFFFQUVRc0RBS3o1QUFDTkNRRUFLUGdDXFxcbkFGZ0xBUURaSHdBQXhRY0NBT3Y0QWdBYkRBRUFpL2dDQUxzTEFRQ3grUUlBNFF3QkFMejVBQUNkQ1FFQUt2b0FBUDhKQVFCOE1BQUFtd1xcXG5nQ0FQVUJBQUNjQVFJQWVCOEFBTGtHQWdCeStnQUFSUW9CQUlBaUFBQkZDQUlBR1BrQ0FFZ01BUURrQUFBQVBBQUNBQUw0QWdBeUN3RUFcXFxuMXZnQ0FBWU1BUUNJQXdBQUdnSUNBTVg2QUFDWUNnRUFEUUVBQUlRQUFnQlkrUUFBT1FrQkFMNGVBQUQ0QkFNQUN2a0FBT3NJQVFENUFRXFxcbkFBb0FFQ0FFd0xBQUR1QWdJQVZ4OEFBRzhHQXdBR0hnQUFYZ01DQU5FZUFBQXBCUU1BOHg4QUFQWUhBZ0FySGdBQXNBTUNBTGdlQUFEc1xcXG5CQUlBZGZnQ0FLVUxBUUJDK1FBQUl3a0JBR29mQUFDWEJnTUE0QUVBQUhnQkF3Qk4rUUlBZlF3QkFFZ01BQUQ4QWdJQUVQZ0NBRUFMQVFcXFxuQTJId0FBSUFZREFQUDRBZ0FqREFFQS9RQUFBR1lBQWdCaCtRQUFRZ2tCQUhQNEFnQ2pDd0VBZmdNQUFCUUNBUUFSK1FBQThnZ0JBTWI2XFxcbkFBQ1pDZ0VBbmZnQ0FNMExBUUJnK1FJQWtBd0JBSUw2QUFCVkNnRUFiL2tDQUo4TUFRQXpId0FBRndZREFGOGZBQUI2QmdNQVp4NEFBRFxcXG5rRUF3RFpNQUFBelFnQ0FKcjVBQUI3Q1FFQTdDSUFBR1VJQWdBRUFnQUF1QUVDQU53QUFBQXdBQUlBSmZrQ0FGVU1BUUJvK2dBQVBRb0JcXFxuQUVENEFnQndDd0VBelFNQUFENENBZ0NRSGdBQWtnUUNBSFVmQUFDekJnSUEzQTBBQUJFREFnQS8rQUlBYndzQkFIYjVBQUJYQ1FFQWJ2XFxcbmdDQUo0TEFRQlFBUUFBN0FBQ0FKa2VBQUNrQkFJQTBRRUFBRklCQWdBVytRSUFSZ3dCQUNuNUFnQlpEQUVBQkI4QUFLSUZBd0NuSHdBQVxcXG5Wd2NFQU44QkFBQjFBUU1BUlBzQUFOOEtBZ0FjQVFBQW5nQUNBRG9CQUFET0FBSUFFQjhBQU1RRkFnREUrQUlBOUFzQkFKY2VBQUNnQkFcXFxuSUFWUGtBQURVSkFRQUErUUlBTUF3QkFQNHdBQURmQ0FJQXRqQUFBSzBJQWdCcEh3QUFsUVlDQUszNUFBQ09DUUVBZHg0QUFGd0VBZ0EzXFxcbitnQUFEQW9CQURUNUFBQVZDUUVBc1BvQUFJTUtBUURxSWdBQVlRZ0NBSno0QWdETUN3RUFKd0lBQU80QkFnQXJId0FBQVFZREFIbjVBZ1xcXG5DcERBRUFWUGtDQUlRTUFRQWVIZ0FBbGdNQ0FLNzVBQUNQQ1FFQTVmZ0NBQlVNQVFDdkF3QUFNd0lDQUV3ZkFBQldCZ01BUWZrQUFDSUpcXFxuQVFBMCtRSUFaQXdCQUtQNUFBQ0VDUUVBS1FrQUFMNENBZ0NiK0FJQXl3c0JBTEQ0QWdEZ0N3RUFneDRBQUhnRUFnRHMrUUlBSEEwQkFHXFxcbkFmQUFCOUJnSUFJd1lBQUxBQ0FnQnVIZ0FBU2dRQ0FDNFJBUUQ1Q2dJQVhRc0FBUElDQWdBVkFnQUEyZ0VDQUwzNUFnRHREQUVBZGdFQVxcXG5BREFCQWdDckhnQUF4UVFEQU9iNUFnQVdEUUVBWlBnQ0FKUUxBUUF4SHdBQUVnWUNBQy81QWdCZkRBRUFJUGdDQUZBTEFRRGFId0FBeHdcXFxuY0NBQ3o0QWdCY0N3RUFSUjhBQUVrR0F3QjhId0FBd1FZQ0FGTWVBQUFMQkFNQWN2a0NBS0lNQVFBYStnSUFTZzBCQUdENUFBQkJDUUVBXFxcbjF3RUFBR0FCQXdEb0hnQUFhZ1VEQU1vTUFBQUVBd0lBUWg4QUFFQUdBd0JkK1FJQWpRd0JBTzRCQUFDVUFRSUEwL2dDQUFNTUFRQk5IZ1xcXG5BQStRTURBTllBQUFBb0FBSUFsaDhBQUJjSEJBQVkrUUFBK1FnQkFLLzVBQUNRQ1FFQSsvZ0NBQ3NNQVFCZ0hnQUFLQVFDQUJJYkFBQkdcXFxuQXdJQS9ma0FBTjRKQVFEcitRSUFHdzBCQUdRZUFBQXdCQU1BSy9zQUFMTUtBZ0RnSHdBQTBRY0NBQlg1QWdCRkRBRUFHL2dDQUVzTEFRXFxcbkRkSHdBQXl3Y0NBTGI0QWdEbUN3RUFpUjRBQUlRRUFnQzUrUUFBbWdrQkFMTWZBQUNBQndJQTR3RUFBSUFCQWdEakJBQUFpQUlDQU04QVxcXG5BQUFjQUFJQThRQUFBRklBQWdDLytRSUE3d3dCQU1uNEFnRDVDd0VBcVBnQ0FOZ0xBUUJhK1FJQWlnd0JBS2o1QWdEWURBRUFvUUVBQUVcXFxuUUJBZ0NlK1FBQWZ3a0JBRWI3QUFEaENnSUF4L2tBQUtnSkFRQjJCQUFBWmdJQ0FNMEJBQUJLQVFJQXYva0FBS0FKQVFDdEhnQUF5d1FEXFxcbkFBVUJBQUIwQUFJQXBQa0NBTlFNQVFCYkFRQUEvZ0FDQU1uNUFBQ3FDUUVBR1FFQUFKZ0FBZ0JHK1FBQUp3a0JBRlF3QUFCMUNBSUFEUFxcXG5vQ0FEd05BUURQQVFBQVRnRUNBSDM2QUFCUUNnRUFSUGtBQUNVSkFRQWQrZ0FBK1FrQkFNTDVBZ0R5REFFQVpQa0FBRVVKQVFBWkFnQUFcXFxuNGdFQ0FOMzVBQUMrQ1FFQWl4OEFBTzBHQkFCaUlnQUFNUWdDQUxQNUFBQ1VDUUVBb3ZrQUFJTUpBUUJRTUFBQWNRZ0NBT2dCQUFDR0FRXFxcbklBMHpBQUFNVUlBZ0RKTUFBQXZ3Z0NBRnI1QUFBN0NRRUFpdmtBQUdzSkFRQjIrZ0FBU1FvQkFCYjRBZ0JHQ3dFQVFCc0FBRXdEQWdBU1xcXG5BZ0FBMUFFQ0FKRWVBQUNVQkFJQTVQa0FBTVVKQVFDWUh3QUFId2NEQUJENUFBRHhDQUVBMlBrQ0FBZ05BUUFkK1FJQVRRd0JBSndmQUFcXFxuQXRCd1FBMndBQUFDNEFBZ0F5QWdBQUNnSUNBSlg1QUFCMkNRRUE0dmtBQU1NSkFRQWpId0FBNndVREFONE5BQUFXQXdJQXp2a0FBSzhKXFxcbkFRRHRIZ0FBZVFVREFBd2ZBQUM0QlFNQUhQa0NBRXdNQVFDd01BQUFwd2dDQUpENUFBQnhDUUVBYUI4QUFKTUdBZ0M4SHdBQWtnY0NBTFxcXG5mNUFnRG5EQUVBYS9rQUFFd0pBUUFKK2dBQTZna0JBUDhCQUFDdUFRSUFFUGtDQUVBTUFRRDArUUlBSkEwQkFILzRBZ0N2Q3dFQVdSNEFcXFxuQUJnRUFnQytGQUVBQlFzQ0FHejVBQUJOQ1FFQXJBOEFBRFlEQWdBVCtRQUE5QWdCQUEzNEFnQTlDd0VBSi9rQ0FGY01BUUEzK0FJQVp3XFxcbnNCQUt3d0FBQ2pDQUlBN2g4QUFQQUhBZ0NoK1FBQWdna0JBRlFlQUFBT0JBSUFiaDhBQUtNR0F3QzMrZ0FBaWdvQkFEdjdBQURUQ2dJQVxcXG44ZmtDQUNFTkFRQTJDZ0FBNEFJQ0FJa2ZBQURtQmdNQXpCNEFBQjRGQWdCWStRSUFpQXdCQUdzQkFBQWFBUUlBUlBrQ0FIUU1BUUQ1K0FcXFxuSUFLUXdCQUFjRUFBQk1BZ0lBOWg0QUFKQUZBZ0NqK1FJQTB3d0JBSUg0QWdDeEN3RUFUQk1CQVA4S0FnQWErQUlBU2dzQkFOMzVBZ0FOXFxcbkRRRUFaUG9BQURrS0FRQ3YrQUlBM3dzQkFPMzVBZ0FkRFFFQTZ2a0FBTXNKQVFDY0VBRUE5UW9DQUU4QkFBRHFBQUlBZXZrQUFGc0pBUVxcXG5CSitRSUFlUXdCQUZzS0FBRG1BZ0lBTnZrQUFCY0pBUUJlQ2dBQTZBSUNBSnI0QWdES0N3RUFTeDhBQUZNR0F3Q0UrUUFBWlFrQkFHMGVcXFxuQUFCSUJBSUFEdmtDQUQ0TUFRQXFJd0FBYWdnQkFBMzZBZ0E5RFFFQXN2b0FBSVVLQVFCUUJBQUFXQUlDQUFJZkFBQ2NCUU1BTXZvQUFBXFxcbmNLQVFCMkh3QUF0UVlDQUczNUFnQ2REQUVBcC9rQ0FOY01BUUNqSGdBQXJnUUNBTHI1QUFDYkNRRUFGUjhBQU5FRkF3Q3ZId0FBZFFjRVxcXG5BR0FCQUFBSUFRSUFZL2tDQUpNTUFRQWwrUUFBQmdrQkFQYjVBQURYQ1FFQXdEQUFBTGNJQWdBZUFnQUE2QUVDQUp6NkFBQnZDZ0VBT3ZcXFxuc0FBTkVLQWdDNkh3QUFqZ2NDQUhRREFBQVRBZ0VBM0NvQUFHc0lBZ0FmK1FJQVR3d0JBTUFNQUFEK0FnSUE4eDRBQUlvRkFnRERId0FBXFxcbm1nY0NBTDM0QWdEdEN3RUFId0VBQUtRQUFnQ25Ed0FBTkFNQ0FQVDVBQURWQ1FFQXpBc0FBUG9DQWdCSCtBSUFkd3NCQUVvZkFBQlFCZ1xcXG5NQWova0NBTDhNQVFCdStRQUFUd2tCQU9iNUFBREhDUUVBNC9rQUFNUUpBUUJFK0FJQWRBc0JBQlA0QWdCREN3RUF0Zm9BQUlnS0FRQ3FcXFxuSHdBQVlRY0VBTUVBQUFBQ0FBSUFheDRBQUVRRUFnRGxId0FBM1FjQ0FBZjRBZ0EzQ3dFQVgvZ0NBSThMQVFBNytRQUFIQWtCQVBnQkFBXFxcbkNlQVFJQWFSNEFBRDhFQXdEbkh3QUE0UWNEQUZjZUFBQVVCQUlBekFBQUFCWUFBZ0NiK1FJQXl3d0JBUEFFQUFDZUFnSUEvZmdDQUMwTVxcXG5BUUFoQVFBQXFBQUNBUElBQUFCVUFBSUFtdm9BQUcwS0FRRHYrUUlBSHcwQkFIajRBZ0NvQ3dFQVdma0FBRG9KQVFCTEV3RUEvUW9DQUxcXFxuNGZBQUNVQndFQVZ2b0FBQ3NLQVFDKzBRRUFKd3NEQUx2NEFnRHJDd0VBNVBnQ0FCUU1BUUFaSGdBQWlnTUNBQzM1QWdCZERBRUFMQjhBXFxcbkFBUUdBd0RoQUFBQU5nQUNBTGI1QWdEbURBRUFqZmtBQUc0SkFRQVUrUUFBOVFnQkFCbjZBQUQxQ1FFQXp2b0FBS0VLQVFCYUFRQUEvQVxcXG5BQ0FIUWlBQUE5Q0FJQVRQa0FBQzBKQVFERUh3QUFuQWNEQUxvVkFRQUhDd0lBdVBnQ0FPZ0xBUUFCK2dJQU1RMEJBT3I0QWdBYURBRUFcXFxubUI0QUFLSUVBZ0NMK1FJQXV3d0JBTno1QWdBTURRRUFtUjhBQUNJSEF3Q0tId0FBNlFZRUFCd2ZBQURlQlFNQU9Qb0FBQTBLQVFCVCtRXFxcbklBZ3d3QkFQZjRBZ0FuREFFQVFSOEFBRDRHQWdESEhnQUFFd1VEQUJiNkFnQkdEUUVBV2ZnQ0FJa0xBUUJaK1FJQWlRd0JBTS80QWdEL1xcXG5Dd0VBVEFFQUFPUUFBZ0NUK1FJQXd3d0JBRDRCQUFEV0FBSUFLZ0VBQUxZQUFnQ1IrUUlBd1F3QkFNb2ZBQUNvQndJQWlRTUFBQndDQWdcXFxuQnorZ0FBUmdvQkFObjVBZ0FKRFFFQVF3RUFBTmdBQWdDVCtBSUF3d3NCQUNmNEFnQlhDd0VBWS9vQUFEZ0tBUUNzQXdBQUxRSUNBQWNmXFxcbkFBQ3JCUU1BdXg0QUFQSUVBZ0JEK1FJQWN3d0JBR2Y2QUFBOENnRUExZ1FBQUhZQ0FnQVNId0FBeUFVREFQUUJBQUNhQVFJQU54NEFBTVxcXG5vREFnQVArUUlBUHd3QkFCZ2ZBQURVQlFJQWR3UUFBR2dDQWdBQ0FRQUFiZ0FDQUFENEFnQXdDd0VBci9vQUFJSUtBUURBQmdBQXVBSUNcXFxuQU9zQUFBQklBQUlBMmg0QUFFUUZBd0I5SHdBQXd3WUNBRmtLQUFEaUFnSUE4dmdDQUNJTUFRQ2VNQUFBb1FnQ0FOWXdBQURKQ0FJQUx2XFxcbmtDQUY0TUFRQXorUUFBRkFrQkFHNzVBZ0NlREFFQVZSNEFBQkFFQWdDQklnQUFSd2dDQUU0ZUFBRDhBd01BY3ZnQ0FLSUxBUUQ4K1FJQVxcXG5MQTBCQUx6UkFRQWlDd0lBVVBvQUFDVUtBUUFzK1FJQVhBd0JBSEF3QUFDTENBSUE2ZmtBQU1vSkFRQTgrQUlBYkFzQkFQajVBZ0FvRFFcXFxuRUFVaDhBQUdBR0F3Q3MrZ0FBZndvQkFKUWVBQUNhQkFJQTF2b0FBS2tLQVFETEh3QUFxZ2NDQURQNkFBQUlDZ0VBRy9vQUFQY0pBUUR1XFxcbitRQUF6d2tCQUN3ZUFBQ3lBd0lBQXdJQUFMWUJBZ0IzK0FJQXB3c0JBUGdmQUFBQUNBSUE2UUVBQUlnQkFnRCtBUUFBckFFQ0FHejVBZ1xcXG5DY0RBRUFVUjRBQUFVRUF3RGVCQUFBZ2dJQ0FLVDVBQUNGQ1FFQVFQc0FBTmtLQWdBaUJnQUFyZ0lDQU13REFBQThBZ0lBbnZrQ0FNNE1cXFxuQVFBcitRQUFEQWtCQU9FaUFBQmJDQUlBZEFFQUFDd0JBZ0JLSGdBQThnTUNBRG41QWdCcERBRUF6Z01BQUVBQ0FnQ24rZ0FBZWdvQkFJXFxcblg2QUFCWUNnRUE1L2tBQU1nSkFRQUhBUUFBZUFBQ0FKWDZBQUJvQ2dFQWMva0FBRlFKQVFBeitRSUFZd3dCQU1MNUFBQ2pDUUVBNFI0QVxcXG5BRmtGQXdEVEFRQUFWZ0VDQU5ENUFnQUFEUUVBS3ZzQUFMRUtBZ0Q3QUFBQVlnQUNBRThlQUFEL0F3TUFKaDhBQVBRRkF3RGRBQUFBTWdcXFxuQUNBQ1lDQUFEc0FRSUFNZmdDQUdFTEFRRHUrUUlBSGcwQkFGWDVBQUEyQ1FFQWJnRUFBQ0FCQWdDbCtBSUExUXNCQUJzQkFBQ2NBQUlBXFxcbmRoNEFBRm9FQWdCTURRQUFEUU1DQUR3ZkFBQXdCZ01BQ2g0QUFHZ0RBZ0I0SGdBQVhnUURBQ3I0QWdCYUN3RUFMUUVBQUx3QUFnREYrQVxcXG5JQTlRc0JBRDRmQUFBMkJnTUFYUGtBQUQwSkFRQWhId0FBNWdVQ0FOZjVBZ0FIRFFFQWNCOEFBS2tHQWdBVStRSUFSQXdCQUlQNkFBQldcXFxuQ2dFQTFSNEFBRFVGQXdEbkhnQUFhQVVDQUhnaUFBQkJDQUlBd1BrQUFLRUpBUURYSGdBQU93VURBTXI0QWdENkN3RUFQUnNBQUVvREFnXFxcbkN0K1FJQTNRd0JBRjRKQUFEUUFnSUFEQ0lBQUNFSUFnRGZId0FBendjQ0FFajZBQUFkQ2dFQUJCNEFBRm9EQWdEWEJBQUFlQUlDQUJZQ1xcXG5BQURjQVFJQWNCNEFBRTRFQWdCVytBSUFoZ3NCQU9rQUFBQkVBQUlBVWZrQUFESUpBUUF4QWdBQUJ3SURBRk1mQUFCakJnTUFGQjRBQUhcXFxud0RBd0NEK1FBQVpBa0JBTlQ1QUFDMUNRRUFjL2tDQUtNTUFRRGYrUUlBRHcwQkFJejVBQUJ0Q1FFQUNBSUFBTUFCQWdDVitBSUF4UXNCXFxcbkFLcjZBQUI5Q2dFQVhBUUFBR0FDQWdDNE1BQUFyd2dDQUVRaUFBQXBDQUlBL3dBQUFHZ0FBZ0RSQkFBQWNBSUNBQ1loQUFBTkNBRUFDd1xcXG5FQUFJQUFBZ0JGQVFBQTNBQUNBSGo1QUFCWkNRRUF6UjhBQUs0SEFnQVMrUUlBUWd3QkFEYjZBQUFMQ2dFQXdQa0NBUEFNQVFEc0JBQUFcXFxubGdJQ0FBNEJBQUNHQUFJQWpma0NBTDBNQVFCZEhnQUFJUVFEQUVNUEFBQVlBd0lBS1I0QUFLd0RBZ0ErK1FBQUh3a0JBTVg1QWdEMURBXFxcbkVBemlFQUFCa0lBZ0I3K0FJQXF3c0JBTHI1QWdEcURBRUF3aDRBQUFRRkF3Q2FJUUFBRVFnQ0FHUWZBQUNIQmdNQUJ2a0FBT2NJQVFEWFxcXG4rUUFBdUFrQkFFRUFBQUFBQXdBQVFRQUFBQUVEQUFCQkFBQUFBZ01BQUVFQUFBQURBd0FBUVFBQUFBZ0RBQUJCQUFBQUNnTUFBRU1BQUFcXFxuQW5Bd0FBUlFBQUFBQURBQUJGQUFBQUFRTUFBRVVBQUFBQ0F3QUFSUUFBQUFnREFBQkpBQUFBQUFNQUFFa0FBQUFCQXdBQVNRQUFBQUlEXFxcbkFBQkpBQUFBQ0FNQUFFNEFBQUFEQXdBQVR3QUFBQUFEQUFCUEFBQUFBUU1BQUU4QUFBQUNBd0FBVHdBQUFBTURBQUJQQUFBQUNBTUFBRlxcXG5VQUFBQUFBd0FBVlFBQUFBRURBQUJWQUFBQUFnTUFBRlVBQUFBSUF3QUFXUUFBQUFFREFBQmhBQUFBQUFNQUFHRUFBQUFCQXdBQVlRQUFcXFxuQUFJREFBQmhBQUFBQXdNQUFHRUFBQUFJQXdBQVlRQUFBQW9EQUFCakFBQUFKd01BQUdVQUFBQUFBd0FBWlFBQUFBRURBQUJsQUFBQUFnXFxcbk1BQUdVQUFBQUlBd0FBYVFBQUFBQURBQUJwQUFBQUFRTUFBR2tBQUFBQ0F3QUFhUUFBQUFnREFBQnVBQUFBQXdNQUFHOEFBQUFBQXdBQVxcXG5id0FBQUFFREFBQnZBQUFBQWdNQUFHOEFBQUFEQXdBQWJ3QUFBQWdEQUFCMUFBQUFBQU1BQUhVQUFBQUJBd0FBZFFBQUFBSURBQUIxQUFcXFxuQUFDQU1BQUhrQUFBQUJBd0FBZVFBQUFBZ0RBQUJCQUFBQUJBTUFBR0VBQUFBRUF3QUFRUUFBQUFZREFBQmhBQUFBQmdNQUFFRUFBQUFvXFxcbkF3QUFZUUFBQUNnREFBQkRBQUFBQVFNQUFHTUFBQUFCQXdBQVF3QUFBQUlEQUFCakFBQUFBZ01BQUVNQUFBQUhBd0FBWXdBQUFBY0RBQVxcXG5CREFBQUFEQU1BQUdNQUFBQU1Bd0FBUkFBQUFBd0RBQUJrQUFBQURBTUFBRVVBQUFBRUF3QUFaUUFBQUFRREFBQkZBQUFBQmdNQUFHVUFcXFxuQUFBR0F3QUFSUUFBQUFjREFBQmxBQUFBQndNQUFFVUFBQUFvQXdBQVpRQUFBQ2dEQUFCRkFBQUFEQU1BQUdVQUFBQU1Bd0FBUndBQUFBXFxcbklEQUFCbkFBQUFBZ01BQUVjQUFBQUdBd0FBWndBQUFBWURBQUJIQUFBQUJ3TUFBR2NBQUFBSEF3QUFSd0FBQUNjREFBQm5BQUFBSndNQVxcXG5BRWdBQUFBQ0F3QUFhQUFBQUFJREFBQkpBQUFBQXdNQUFHa0FBQUFEQXdBQVNRQUFBQVFEQUFCcEFBQUFCQU1BQUVrQUFBQUdBd0FBYVFcXFxuQUFBQVlEQUFCSkFBQUFLQU1BQUdrQUFBQW9Bd0FBU1FBQUFBY0RBQUJLQUFBQUFnTUFBR29BQUFBQ0F3QUFTd0FBQUNjREFBQnJBQUFBXFxcbkp3TUFBRXdBQUFBQkF3QUFiQUFBQUFFREFBQk1BQUFBSndNQUFHd0FBQUFuQXdBQVRBQUFBQXdEQUFCc0FBQUFEQU1BQUU0QUFBQUJBd1xcXG5BQWJnQUFBQUVEQUFCT0FBQUFKd01BQUc0QUFBQW5Bd0FBVGdBQUFBd0RBQUJ1QUFBQURBTUFBRThBQUFBRUF3QUFid0FBQUFRREFBQlBcXFxuQUFBQUJnTUFBRzhBQUFBR0F3QUFUd0FBQUFzREFBQnZBQUFBQ3dNQUFGSUFBQUFCQXdBQWNnQUFBQUVEQUFCU0FBQUFKd01BQUhJQUFBXFxcbkFuQXdBQVVnQUFBQXdEQUFCeUFBQUFEQU1BQUZNQUFBQUJBd0FBY3dBQUFBRURBQUJUQUFBQUFnTUFBSE1BQUFBQ0F3QUFVd0FBQUNjRFxcXG5BQUJ6QUFBQUp3TUFBRk1BQUFBTUF3QUFjd0FBQUF3REFBQlVBQUFBSndNQUFIUUFBQUFuQXdBQVZBQUFBQXdEQUFCMEFBQUFEQU1BQUZcXFxuVUFBQUFEQXdBQWRRQUFBQU1EQUFCVkFBQUFCQU1BQUhVQUFBQUVBd0FBVlFBQUFBWURBQUIxQUFBQUJnTUFBRlVBQUFBS0F3QUFkUUFBXFxcbkFBb0RBQUJWQUFBQUN3TUFBSFVBQUFBTEF3QUFWUUFBQUNnREFBQjFBQUFBS0FNQUFGY0FBQUFDQXdBQWR3QUFBQUlEQUFCWkFBQUFBZ1xcXG5NQUFIa0FBQUFDQXdBQVdRQUFBQWdEQUFCYUFBQUFBUU1BQUhvQUFBQUJBd0FBV2dBQUFBY0RBQUI2QUFBQUJ3TUFBRm9BQUFBTUF3QUFcXFxuZWdBQUFBd0RBQUJQQUFBQUd3TUFBRzhBQUFBYkF3QUFWUUFBQUJzREFBQjFBQUFBR3dNQUFFRUFBQUFNQXdBQVlRQUFBQXdEQUFCSkFBXFxcbkFBREFNQUFHa0FBQUFNQXdBQVR3QUFBQXdEQUFCdkFBQUFEQU1BQUZVQUFBQU1Bd0FBZFFBQUFBd0RBQUJWQUFBQUNBTUFBQVFEQUFCMVxcXG5BQUFBQ0FNQUFBUURBQUJWQUFBQUNBTUFBQUVEQUFCMUFBQUFDQU1BQUFFREFBQlZBQUFBQ0FNQUFBd0RBQUIxQUFBQUNBTUFBQXdEQUFcXFxuQlZBQUFBQ0FNQUFBQURBQUIxQUFBQUNBTUFBQUFEQUFCQkFBQUFDQU1BQUFRREFBQmhBQUFBQ0FNQUFBUURBQUJCQUFBQUJ3TUFBQVFEXFxcbkFBQmhBQUFBQndNQUFBUURBQURHQUFBQUJBTUFBT1lBQUFBRUF3QUFSd0FBQUF3REFBQm5BQUFBREFNQUFFc0FBQUFNQXdBQWF3QUFBQVxcXG53REFBQlBBQUFBS0FNQUFHOEFBQUFvQXdBQVR3QUFBQ2dEQUFBRUF3QUFid0FBQUNnREFBQUVBd0FBdHdFQUFBd0RBQUNTQWdBQURBTUFcXFxuQUdvQUFBQU1Bd0FBUndBQUFBRURBQUJuQUFBQUFRTUFBRTRBQUFBQUF3QUFiZ0FBQUFBREFBQkJBQUFBQ2dNQUFBRURBQUJoQUFBQUNnXFxcbk1BQUFFREFBREdBQUFBQVFNQUFPWUFBQUFCQXdBQTJBQUFBQUVEQUFENEFBQUFBUU1BQUVFQUFBQVBBd0FBWVFBQUFBOERBQUJCQUFBQVxcXG5FUU1BQUdFQUFBQVJBd0FBUlFBQUFBOERBQUJsQUFBQUR3TUFBRVVBQUFBUkF3QUFaUUFBQUJFREFBQkpBQUFBRHdNQUFHa0FBQUFQQXdcXFxuQUFTUUFBQUJFREFBQnBBQUFBRVFNQUFFOEFBQUFQQXdBQWJ3QUFBQThEQUFCUEFBQUFFUU1BQUc4QUFBQVJBd0FBVWdBQUFBOERBQUJ5XFxcbkFBQUFEd01BQUZJQUFBQVJBd0FBY2dBQUFCRURBQUJWQUFBQUR3TUFBSFVBQUFBUEF3QUFWUUFBQUJFREFBQjFBQUFBRVFNQUFGTUFBQVxcXG5BbUF3QUFjd0FBQUNZREFBQlVBQUFBSmdNQUFIUUFBQUFtQXdBQVNBQUFBQXdEQUFCb0FBQUFEQU1BQUVFQUFBQUhBd0FBWVFBQUFBY0RcXFxuQUFCRkFBQUFKd01BQUdVQUFBQW5Bd0FBVHdBQUFBZ0RBQUFFQXdBQWJ3QUFBQWdEQUFBRUF3QUFUd0FBQUFNREFBQUVBd0FBYndBQUFBXFxcbk1EQUFBRUF3QUFUd0FBQUFjREFBQnZBQUFBQndNQUFFOEFBQUFIQXdBQUJBTUFBRzhBQUFBSEF3QUFCQU1BQUZrQUFBQUVBd0FBZVFBQVxcXG5BQVFEQUFBQUF3QUFBUU1BQUJNREFBQUlBd0FBQVFNQUFMa0NBQUE3QUFBQXFBQUFBQUVEQUFDUkF3QUFBUU1BQUxjQUFBQ1ZBd0FBQVFcXFxuTUFBSmNEQUFBQkF3QUFtUU1BQUFFREFBQ2ZBd0FBQVFNQUFLVURBQUFCQXdBQXFRTUFBQUVEQUFDNUF3QUFDQU1BQUFFREFBQ1pBd0FBXFxcbkNBTUFBS1VEQUFBSUF3QUFzUU1BQUFFREFBQzFBd0FBQVFNQUFMY0RBQUFCQXdBQXVRTUFBQUVEQUFERkF3QUFDQU1BQUFFREFBQzVBd1xcXG5BQUNBTUFBTVVEQUFBSUF3QUF2d01BQUFFREFBREZBd0FBQVFNQUFNa0RBQUFCQXdBQTBnTUFBQUVEQUFEU0F3QUFDQU1BQUJVRUFBQUFcXFxuQXdBQUZRUUFBQWdEQUFBVEJBQUFBUU1BQUFZRUFBQUlBd0FBR2dRQUFBRURBQUFZQkFBQUFBTUFBQ01FQUFBR0F3QUFHQVFBQUFZREFBXFxcbkE0QkFBQUJnTUFBRFVFQUFBQUF3QUFOUVFBQUFnREFBQXpCQUFBQVFNQUFGWUVBQUFJQXdBQU9nUUFBQUVEQUFBNEJBQUFBQU1BQUVNRVxcXG5BQUFHQXdBQWRBUUFBQThEQUFCMUJBQUFEd01BQUJZRUFBQUdBd0FBTmdRQUFBWURBQUFRQkFBQUJnTUFBREFFQUFBR0F3QUFFQVFBQUFcXFxuZ0RBQUF3QkFBQUNBTUFBQlVFQUFBR0F3QUFOUVFBQUFZREFBRFlCQUFBQ0FNQUFOa0VBQUFJQXdBQUZnUUFBQWdEQUFBMkJBQUFDQU1BXFxcbkFCY0VBQUFJQXdBQU53UUFBQWdEQUFBWUJBQUFCQU1BQURnRUFBQUVBd0FBR0FRQUFBZ0RBQUE0QkFBQUNBTUFBQjRFQUFBSUF3QUFQZ1xcXG5RQUFBZ0RBQURvQkFBQUNBTUFBT2tFQUFBSUF3QUFMUVFBQUFnREFBQk5CQUFBQ0FNQUFDTUVBQUFFQXdBQVF3UUFBQVFEQUFBakJBQUFcXFxuQ0FNQUFFTUVBQUFJQXdBQUl3UUFBQXNEQUFCREJBQUFDd01BQUNjRUFBQUlBd0FBUndRQUFBZ0RBQUFyQkFBQUNBTUFBRXNFQUFBSUF3XFxcbkFBSndZQUFGTUdBQUFuQmdBQVZBWUFBRWdHQUFCVUJnQUFKd1lBQUZVR0FBQktCZ0FBVkFZQUFOVUdBQUJVQmdBQXdRWUFBRlFHQUFEU1xcXG5CZ0FBVkFZQUFDZ0pBQUE4Q1FBQU1Ba0FBRHdKQUFBekNRQUFQQWtBQUJVSkFBQThDUUFBRmdrQUFEd0pBQUFYQ1FBQVBBa0FBQndKQUFcXFxuQThDUUFBSVFrQUFEd0pBQUFpQ1FBQVBBa0FBQ3NKQUFBOENRQUFMd2tBQUR3SkFBREhDUUFBdmdrQUFNY0pBQURYQ1FBQW9Ra0FBTHdKXFxcbkFBQ2lDUUFBdkFrQUFLOEpBQUM4Q1FBQU1nb0FBRHdLQUFBNENnQUFQQW9BQUJZS0FBQThDZ0FBRndvQUFEd0tBQUFjQ2dBQVBBb0FBQ1xcXG5zS0FBQThDZ0FBUndzQUFGWUxBQUJIQ3dBQVBnc0FBRWNMQUFCWEN3QUFJUXNBQUR3TEFBQWlDd0FBUEFzQUFKSUxBQURYQ3dBQXhnc0FcXFxuQUw0TEFBREhDd0FBdmdzQUFNWUxBQURYQ3dBQVJnd0FBRllNQUFDL0RBQUExUXdBQU1ZTUFBRFZEQUFBeGd3QUFOWU1BQURHREFBQXdnXFxcbndBQU1ZTUFBRENEQUFBMVF3QUFFWU5BQUErRFFBQVJ3MEFBRDROQUFCR0RRQUFWdzBBQU5rTkFBREtEUUFBMlEwQUFNOE5BQURaRFFBQVxcXG56dzBBQU1vTkFBRFpEUUFBM3cwQUFFSVBBQUMzRHdBQVRBOEFBTGNQQUFCUkR3QUF0dzhBQUZZUEFBQzNEd0FBV3c4QUFMY1BBQUJBRHdcXFxuQUF0UThBQUhFUEFBQnlEd0FBY1E4QUFIUVBBQUN5RHdBQWdBOEFBTE1QQUFDQUR3QUFjUThBQUlBUEFBQ1NEd0FBdHc4QUFKd1BBQUMzXFxcbkR3QUFvUThBQUxjUEFBQ21Ed0FBdHc4QUFLc1BBQUMzRHdBQWtBOEFBTFVQQUFBbEVBQUFMaEFBQUFVYkFBQTFHd0FBQnhzQUFEVWJBQVxcXG5BSkd3QUFOUnNBQUFzYkFBQTFHd0FBRFJzQUFEVWJBQUFSR3dBQU5Sc0FBRG9iQUFBMUd3QUFQQnNBQURVYkFBQStHd0FBTlJzQUFEOGJcXFxuQUFBMUd3QUFRaHNBQURVYkFBQkJBQUFBSlFNQUFHRUFBQUFsQXdBQVFnQUFBQWNEQUFCaUFBQUFCd01BQUVJQUFBQWpBd0FBWWdBQUFDXFxcbk1EQUFCQ0FBQUFNUU1BQUdJQUFBQXhBd0FBUXdBQUFDY0RBQUFCQXdBQVl3QUFBQ2NEQUFBQkF3QUFSQUFBQUFjREFBQmtBQUFBQndNQVxcXG5BRVFBQUFBakF3QUFaQUFBQUNNREFBQkVBQUFBTVFNQUFHUUFBQUF4QXdBQVJBQUFBQ2NEQUFCa0FBQUFKd01BQUVRQUFBQXRBd0FBWkFcXFxuQUFBQzBEQUFCRkFBQUFCQU1BQUFBREFBQmxBQUFBQkFNQUFBQURBQUJGQUFBQUJBTUFBQUVEQUFCbEFBQUFCQU1BQUFFREFBQkZBQUFBXFxcbkxRTUFBR1VBQUFBdEF3QUFSUUFBQURBREFBQmxBQUFBTUFNQUFFVUFBQUFuQXdBQUJnTUFBR1VBQUFBbkF3QUFCZ01BQUVZQUFBQUhBd1xcXG5BQVpnQUFBQWNEQUFCSEFBQUFCQU1BQUdjQUFBQUVBd0FBU0FBQUFBY0RBQUJvQUFBQUJ3TUFBRWdBQUFBakF3QUFhQUFBQUNNREFBQklcXFxuQUFBQUNBTUFBR2dBQUFBSUF3QUFTQUFBQUNjREFBQm9BQUFBSndNQUFFZ0FBQUF1QXdBQWFBQUFBQzREQUFCSkFBQUFNQU1BQUdrQUFBXFxcbkF3QXdBQVNRQUFBQWdEQUFBQkF3QUFhUUFBQUFnREFBQUJBd0FBU3dBQUFBRURBQUJyQUFBQUFRTUFBRXNBQUFBakF3QUFhd0FBQUNNRFxcXG5BQUJMQUFBQU1RTUFBR3NBQUFBeEF3QUFUQUFBQUNNREFBQnNBQUFBSXdNQUFFd0FBQUFqQXdBQUJBTUFBR3dBQUFBakF3QUFCQU1BQUVcXFxud0FBQUF4QXdBQWJBQUFBREVEQUFCTUFBQUFMUU1BQUd3QUFBQXRBd0FBVFFBQUFBRURBQUJ0QUFBQUFRTUFBRTBBQUFBSEF3QUFiUUFBXFxcbkFBY0RBQUJOQUFBQUl3TUFBRzBBQUFBakF3QUFUZ0FBQUFjREFBQnVBQUFBQndNQUFFNEFBQUFqQXdBQWJnQUFBQ01EQUFCT0FBQUFNUVxcXG5NQUFHNEFBQUF4QXdBQVRnQUFBQzBEQUFCdUFBQUFMUU1BQUU4QUFBQURBd0FBQVFNQUFHOEFBQUFEQXdBQUFRTUFBRThBQUFBREF3QUFcXFxuQ0FNQUFHOEFBQUFEQXdBQUNBTUFBRThBQUFBRUF3QUFBQU1BQUc4QUFBQUVBd0FBQUFNQUFFOEFBQUFFQXdBQUFRTUFBRzhBQUFBRUF3XFxcbkFBQVFNQUFGQUFBQUFCQXdBQWNBQUFBQUVEQUFCUUFBQUFCd01BQUhBQUFBQUhBd0FBVWdBQUFBY0RBQUJ5QUFBQUJ3TUFBRklBQUFBalxcXG5Bd0FBY2dBQUFDTURBQUJTQUFBQUl3TUFBQVFEQUFCeUFBQUFJd01BQUFRREFBQlNBQUFBTVFNQUFISUFBQUF4QXdBQVV3QUFBQWNEQUFcXFxuQnpBQUFBQndNQUFGTUFBQUFqQXdBQWN3QUFBQ01EQUFCVEFBQUFBUU1BQUFjREFBQnpBQUFBQVFNQUFBY0RBQUJUQUFBQURBTUFBQWNEXFxcbkFBQnpBQUFBREFNQUFBY0RBQUJUQUFBQUl3TUFBQWNEQUFCekFBQUFJd01BQUFjREFBQlVBQUFBQndNQUFIUUFBQUFIQXdBQVZBQUFBQ1xcXG5NREFBQjBBQUFBSXdNQUFGUUFBQUF4QXdBQWRBQUFBREVEQUFCVUFBQUFMUU1BQUhRQUFBQXRBd0FBVlFBQUFDUURBQUIxQUFBQUpBTUFcXFxuQUZVQUFBQXdBd0FBZFFBQUFEQURBQUJWQUFBQUxRTUFBSFVBQUFBdEF3QUFWUUFBQUFNREFBQUJBd0FBZFFBQUFBTURBQUFCQXdBQVZRXFxcbkFBQUFRREFBQUlBd0FBZFFBQUFBUURBQUFJQXdBQVZnQUFBQU1EQUFCMkFBQUFBd01BQUZZQUFBQWpBd0FBZGdBQUFDTURBQUJYQUFBQVxcXG5BQU1BQUhjQUFBQUFBd0FBVndBQUFBRURBQUIzQUFBQUFRTUFBRmNBQUFBSUF3QUFkd0FBQUFnREFBQlhBQUFBQndNQUFIY0FBQUFIQXdcXFxuQUFWd0FBQUNNREFBQjNBQUFBSXdNQUFGZ0FBQUFIQXdBQWVBQUFBQWNEQUFCWUFBQUFDQU1BQUhnQUFBQUlBd0FBV1FBQUFBY0RBQUI1XFxcbkFBQUFCd01BQUZvQUFBQUNBd0FBZWdBQUFBSURBQUJhQUFBQUl3TUFBSG9BQUFBakF3QUFXZ0FBQURFREFBQjZBQUFBTVFNQUFHZ0FBQVxcXG5BeEF3QUFkQUFBQUFnREFBQjNBQUFBQ2dNQUFIa0FBQUFLQXdBQWZ3RUFBQWNEQUFCQkFBQUFJd01BQUdFQUFBQWpBd0FBUVFBQUFBa0RcXFxuQUFCaEFBQUFDUU1BQUVFQUFBQUNBd0FBQVFNQUFHRUFBQUFDQXdBQUFRTUFBRUVBQUFBQ0F3QUFBQU1BQUdFQUFBQUNBd0FBQUFNQUFFXFxcbkVBQUFBQ0F3QUFDUU1BQUdFQUFBQUNBd0FBQ1FNQUFFRUFBQUFDQXdBQUF3TUFBR0VBQUFBQ0F3QUFBd01BQUVFQUFBQWpBd0FBQWdNQVxcXG5BR0VBQUFBakF3QUFBZ01BQUVFQUFBQUdBd0FBQVFNQUFHRUFBQUFHQXdBQUFRTUFBRUVBQUFBR0F3QUFBQU1BQUdFQUFBQUdBd0FBQUFcXFxuTUFBRUVBQUFBR0F3QUFDUU1BQUdFQUFBQUdBd0FBQ1FNQUFFRUFBQUFHQXdBQUF3TUFBR0VBQUFBR0F3QUFBd01BQUVFQUFBQWpBd0FBXFxcbkJnTUFBR0VBQUFBakF3QUFCZ01BQUVVQUFBQWpBd0FBWlFBQUFDTURBQUJGQUFBQUNRTUFBR1VBQUFBSkF3QUFSUUFBQUFNREFBQmxBQVxcXG5BQUF3TUFBRVVBQUFBQ0F3QUFBUU1BQUdVQUFBQUNBd0FBQVFNQUFFVUFBQUFDQXdBQUFBTUFBR1VBQUFBQ0F3QUFBQU1BQUVVQUFBQUNcXFxuQXdBQUNRTUFBR1VBQUFBQ0F3QUFDUU1BQUVVQUFBQUNBd0FBQXdNQUFHVUFBQUFDQXdBQUF3TUFBRVVBQUFBakF3QUFBZ01BQUdVQUFBXFxcbkFqQXdBQUFnTUFBRWtBQUFBSkF3QUFhUUFBQUFrREFBQkpBQUFBSXdNQUFHa0FBQUFqQXdBQVR3QUFBQ01EQUFCdkFBQUFJd01BQUU4QVxcXG5BQUFKQXdBQWJ3QUFBQWtEQUFCUEFBQUFBZ01BQUFFREFBQnZBQUFBQWdNQUFBRURBQUJQQUFBQUFnTUFBQUFEQUFCdkFBQUFBZ01BQUFcXFxuQURBQUJQQUFBQUFnTUFBQWtEQUFCdkFBQUFBZ01BQUFrREFBQlBBQUFBQWdNQUFBTURBQUJ2QUFBQUFnTUFBQU1EQUFCUEFBQUFJd01BXFxcbkFBSURBQUJ2QUFBQUl3TUFBQUlEQUFCUEFBQUFHd01BQUFFREFBQnZBQUFBR3dNQUFBRURBQUJQQUFBQUd3TUFBQUFEQUFCdkFBQUFHd1xcXG5NQUFBQURBQUJQQUFBQUd3TUFBQWtEQUFCdkFBQUFHd01BQUFrREFBQlBBQUFBR3dNQUFBTURBQUJ2QUFBQUd3TUFBQU1EQUFCUEFBQUFcXFxuR3dNQUFDTURBQUJ2QUFBQUd3TUFBQ01EQUFCVkFBQUFJd01BQUhVQUFBQWpBd0FBVlFBQUFBa0RBQUIxQUFBQUNRTUFBRlVBQUFBYkF3XFxcbkFBQVFNQUFIVUFBQUFiQXdBQUFRTUFBRlVBQUFBYkF3QUFBQU1BQUhVQUFBQWJBd0FBQUFNQUFGVUFBQUFiQXdBQUNRTUFBSFVBQUFBYlxcXG5Bd0FBQ1FNQUFGVUFBQUFiQXdBQUF3TUFBSFVBQUFBYkF3QUFBd01BQUZVQUFBQWJBd0FBSXdNQUFIVUFBQUFiQXdBQUl3TUFBRmtBQUFcXFxuQUFBd0FBZVFBQUFBQURBQUJaQUFBQUl3TUFBSGtBQUFBakF3QUFXUUFBQUFrREFBQjVBQUFBQ1FNQUFGa0FBQUFEQXdBQWVRQUFBQU1EXFxcbkFBQ3hBd0FBRXdNQUFMRURBQUFVQXdBQXNRTUFBQk1EQUFBQUF3QUFzUU1BQUJRREFBQUFBd0FBc1FNQUFCTURBQUFCQXdBQXNRTUFBQlxcXG5RREFBQUJBd0FBc1FNQUFCTURBQUJDQXdBQXNRTUFBQlFEQUFCQ0F3QUFrUU1BQUJNREFBQ1JBd0FBRkFNQUFKRURBQUFUQXdBQUFBTUFcXFxuQUpFREFBQVVBd0FBQUFNQUFKRURBQUFUQXdBQUFRTUFBSkVEQUFBVUF3QUFBUU1BQUpFREFBQVRBd0FBUWdNQUFKRURBQUFVQXdBQVFnXFxcbk1BQUxVREFBQVRBd0FBdFFNQUFCUURBQUMxQXdBQUV3TUFBQUFEQUFDMUF3QUFGQU1BQUFBREFBQzFBd0FBRXdNQUFBRURBQUMxQXdBQVxcXG5GQU1BQUFFREFBQ1ZBd0FBRXdNQUFKVURBQUFVQXdBQWxRTUFBQk1EQUFBQUF3QUFsUU1BQUJRREFBQUFBd0FBbFFNQUFCTURBQUFCQXdcXFxuQUFsUU1BQUJRREFBQUJBd0FBdHdNQUFCTURBQUMzQXdBQUZBTUFBTGNEQUFBVEF3QUFBQU1BQUxjREFBQVVBd0FBQUFNQUFMY0RBQUFUXFxcbkF3QUFBUU1BQUxjREFBQVVBd0FBQVFNQUFMY0RBQUFUQXdBQVFnTUFBTGNEQUFBVUF3QUFRZ01BQUpjREFBQVRBd0FBbHdNQUFCUURBQVxcXG5DWEF3QUFFd01BQUFBREFBQ1hBd0FBRkFNQUFBQURBQUNYQXdBQUV3TUFBQUVEQUFDWEF3QUFGQU1BQUFFREFBQ1hBd0FBRXdNQUFFSURcXFxuQUFDWEF3QUFGQU1BQUVJREFBQzVBd0FBRXdNQUFMa0RBQUFVQXdBQXVRTUFBQk1EQUFBQUF3QUF1UU1BQUJRREFBQUFBd0FBdVFNQUFCXFxcbk1EQUFBQkF3QUF1UU1BQUJRREFBQUJBd0FBdVFNQUFCTURBQUJDQXdBQXVRTUFBQlFEQUFCQ0F3QUFtUU1BQUJNREFBQ1pBd0FBRkFNQVxcXG5BSmtEQUFBVEF3QUFBQU1BQUprREFBQVVBd0FBQUFNQUFKa0RBQUFUQXdBQUFRTUFBSmtEQUFBVUF3QUFBUU1BQUprREFBQVRBd0FBUWdcXFxuTUFBSmtEQUFBVUF3QUFRZ01BQUw4REFBQVRBd0FBdndNQUFCUURBQUMvQXdBQUV3TUFBQUFEQUFDL0F3QUFGQU1BQUFBREFBQy9Bd0FBXFxcbkV3TUFBQUVEQUFDL0F3QUFGQU1BQUFFREFBQ2ZBd0FBRXdNQUFKOERBQUFVQXdBQW53TUFBQk1EQUFBQUF3QUFud01BQUJRREFBQUFBd1xcXG5BQW53TUFBQk1EQUFBQkF3QUFud01BQUJRREFBQUJBd0FBeFFNQUFCTURBQURGQXdBQUZBTUFBTVVEQUFBVEF3QUFBQU1BQU1VREFBQVVcXFxuQXdBQUFBTUFBTVVEQUFBVEF3QUFBUU1BQU1VREFBQVVBd0FBQVFNQUFNVURBQUFUQXdBQVFnTUFBTVVEQUFBVUF3QUFRZ01BQUtVREFBXFxcbkFVQXdBQXBRTUFBQlFEQUFBQUF3QUFwUU1BQUJRREFBQUJBd0FBcFFNQUFCUURBQUJDQXdBQXlRTUFBQk1EQUFESkF3QUFGQU1BQU1rRFxcXG5BQUFUQXdBQUFBTUFBTWtEQUFBVUF3QUFBQU1BQU1rREFBQVRBd0FBQVFNQUFNa0RBQUFVQXdBQUFRTUFBTWtEQUFBVEF3QUFRZ01BQU1cXFxua0RBQUFVQXdBQVFnTUFBS2tEQUFBVEF3QUFxUU1BQUJRREFBQ3BBd0FBRXdNQUFBQURBQUNwQXdBQUZBTUFBQUFEQUFDcEF3QUFFd01BXFxcbkFBRURBQUNwQXdBQUZBTUFBQUVEQUFDcEF3QUFFd01BQUVJREFBQ3BBd0FBRkFNQUFFSURBQUN4QXdBQUFBTUFBTEVEQUFBQkF3QUF0UVxcXG5NQUFBQURBQUMxQXdBQUFRTUFBTGNEQUFBQUF3QUF0d01BQUFFREFBQzVBd0FBQUFNQUFMa0RBQUFCQXdBQXZ3TUFBQUFEQUFDL0F3QUFcXFxuQVFNQUFNVURBQUFBQXdBQXhRTUFBQUVEQUFESkF3QUFBQU1BQU1rREFBQUJBd0FBc1FNQUFCTURBQUJGQXdBQXNRTUFBQlFEQUFCRkF3XFxcbkFBc1FNQUFCTURBQUFBQXdBQVJRTUFBTEVEQUFBVUF3QUFBQU1BQUVVREFBQ3hBd0FBRXdNQUFBRURBQUJGQXdBQXNRTUFBQlFEQUFBQlxcXG5Bd0FBUlFNQUFMRURBQUFUQXdBQVFnTUFBRVVEQUFDeEF3QUFGQU1BQUVJREFBQkZBd0FBa1FNQUFCTURBQUJGQXdBQWtRTUFBQlFEQUFcXFxuQkZBd0FBa1FNQUFCTURBQUFBQXdBQVJRTUFBSkVEQUFBVUF3QUFBQU1BQUVVREFBQ1JBd0FBRXdNQUFBRURBQUJGQXdBQWtRTUFBQlFEXFxcbkFBQUJBd0FBUlFNQUFKRURBQUFUQXdBQVFnTUFBRVVEQUFDUkF3QUFGQU1BQUVJREFBQkZBd0FBdHdNQUFCTURBQUJGQXdBQXR3TUFBQlxcXG5RREFBQkZBd0FBdHdNQUFCTURBQUFBQXdBQVJRTUFBTGNEQUFBVUF3QUFBQU1BQUVVREFBQzNBd0FBRXdNQUFBRURBQUJGQXdBQXR3TUFcXFxuQUJRREFBQUJBd0FBUlFNQUFMY0RBQUFUQXdBQVFnTUFBRVVEQUFDM0F3QUFGQU1BQUVJREFBQkZBd0FBbHdNQUFCTURBQUJGQXdBQWx3XFxcbk1BQUJRREFBQkZBd0FBbHdNQUFCTURBQUFBQXdBQVJRTUFBSmNEQUFBVUF3QUFBQU1BQUVVREFBQ1hBd0FBRXdNQUFBRURBQUJGQXdBQVxcXG5sd01BQUJRREFBQUJBd0FBUlFNQUFKY0RBQUFUQXdBQVFnTUFBRVVEQUFDWEF3QUFGQU1BQUVJREFBQkZBd0FBeVFNQUFCTURBQUJGQXdcXFxuQUF5UU1BQUJRREFBQkZBd0FBeVFNQUFCTURBQUFBQXdBQVJRTUFBTWtEQUFBVUF3QUFBQU1BQUVVREFBREpBd0FBRXdNQUFBRURBQUJGXFxcbkF3QUF5UU1BQUJRREFBQUJBd0FBUlFNQUFNa0RBQUFUQXdBQVFnTUFBRVVEQUFESkF3QUFGQU1BQUVJREFBQkZBd0FBcVFNQUFCTURBQVxcXG5CRkF3QUFxUU1BQUJRREFBQkZBd0FBcVFNQUFCTURBQUFBQXdBQVJRTUFBS2tEQUFBVUF3QUFBQU1BQUVVREFBQ3BBd0FBRXdNQUFBRURcXFxuQUFCRkF3QUFxUU1BQUJRREFBQUJBd0FBUlFNQUFLa0RBQUFUQXdBQVFnTUFBRVVEQUFDcEF3QUFGQU1BQUVJREFBQkZBd0FBc1FNQUFBXFxcbllEQUFDeEF3QUFCQU1BQUxFREFBQUFBd0FBUlFNQUFMRURBQUJGQXdBQXNRTUFBQUVEQUFCRkF3QUFzUU1BQUVJREFBQ3hBd0FBUWdNQVxcXG5BRVVEQUFDUkF3QUFCZ01BQUpFREFBQUVBd0FBa1FNQUFBQURBQUNSQXdBQUFRTUFBSkVEQUFCRkF3QUF1UU1BQUtnQUFBQkNBd0FBdHdcXFxuTUFBQUFEQUFCRkF3QUF0d01BQUVVREFBQzNBd0FBQVFNQUFFVURBQUMzQXdBQVFnTUFBTGNEQUFCQ0F3QUFSUU1BQUpVREFBQUFBd0FBXFxcbmxRTUFBQUVEQUFDWEF3QUFBQU1BQUpjREFBQUJBd0FBbHdNQUFFVURBQUMvSHdBQUFBTUFBTDhmQUFBQkF3QUF2eDhBQUVJREFBQzVBd1xcXG5BQUJnTUFBTGtEQUFBRUF3QUF1UU1BQUFnREFBQUFBd0FBdVFNQUFBZ0RBQUFCQXdBQXVRTUFBRUlEQUFDNUF3QUFDQU1BQUVJREFBQ1pcXFxuQXdBQUJnTUFBSmtEQUFBRUF3QUFtUU1BQUFBREFBQ1pBd0FBQVFNQUFQNGZBQUFBQXdBQS9oOEFBQUVEQUFEK0h3QUFRZ01BQU1VREFBXFxcbkFHQXdBQXhRTUFBQVFEQUFERkF3QUFDQU1BQUFBREFBREZBd0FBQ0FNQUFBRURBQURCQXdBQUV3TUFBTUVEQUFBVUF3QUF4UU1BQUVJRFxcXG5BQURGQXdBQUNBTUFBRUlEQUFDbEF3QUFCZ01BQUtVREFBQUVBd0FBcFFNQUFBQURBQUNsQXdBQUFRTUFBS0VEQUFBVUF3QUFxQUFBQUFcXFxuQURBQUNvQUFBQUFRTUFBR0FBQUFESkF3QUFBQU1BQUVVREFBREpBd0FBUlFNQUFNa0RBQUFCQXdBQVJRTUFBTWtEQUFCQ0F3QUF5UU1BXFxcbkFFSURBQUJGQXdBQW53TUFBQUFEQUFDZkF3QUFBUU1BQUtrREFBQUFBd0FBcVFNQUFBRURBQUNwQXdBQVJRTUFBTFFBQUFBQ0lBQUFBeVxcXG5BQUFLa0RBQUJMQUFBQVFRQUFBQW9EQUFDUUlRQUFPQU1BQUpJaEFBQTRBd0FBbENFQUFEZ0RBQURRSVFBQU9BTUFBTlFoQUFBNEF3QUFcXFxuMGlFQUFEZ0RBQUFESWdBQU9BTUFBQWdpQUFBNEF3QUFDeUlBQURnREFBQWpJZ0FBT0FNQUFDVWlBQUE0QXdBQVBDSUFBRGdEQUFCRElnXFxcbkFBT0FNQUFFVWlBQUE0QXdBQVNDSUFBRGdEQUFBOUFBQUFPQU1BQUdFaUFBQTRBd0FBVFNJQUFEZ0RBQUE4QUFBQU9BTUFBRDRBQUFBNFxcXG5Bd0FBWkNJQUFEZ0RBQUJsSWdBQU9BTUFBSElpQUFBNEF3QUFjeUlBQURnREFBQjJJZ0FBT0FNQUFIY2lBQUE0QXdBQWVpSUFBRGdEQUFcXFxuQjdJZ0FBT0FNQUFJSWlBQUE0QXdBQWd5SUFBRGdEQUFDR0lnQUFPQU1BQUljaUFBQTRBd0FBb2lJQUFEZ0RBQUNvSWdBQU9BTUFBS2tpXFxcbkFBQTRBd0FBcXlJQUFEZ0RBQUI4SWdBQU9BTUFBSDBpQUFBNEF3QUFrU0lBQURnREFBQ1NJZ0FBT0FNQUFMSWlBQUE0QXdBQXN5SUFBRFxcXG5nREFBQzBJZ0FBT0FNQUFMVWlBQUE0QXdBQUNEQUFBQWt3QUFEZEtnQUFPQU1BQUVzd0FBQ1pNQUFBVFRBQUFKa3dBQUJQTUFBQW1UQUFcXFxuQUZFd0FBQ1pNQUFBVXpBQUFKa3dBQUJWTUFBQW1UQUFBRmN3QUFDWk1BQUFXVEFBQUprd0FBQmJNQUFBbVRBQUFGMHdBQUNaTUFBQVh6XFxcbkFBQUprd0FBQmhNQUFBbVRBQUFHUXdBQUNaTUFBQVpqQUFBSmt3QUFCb01BQUFtVEFBQUc4d0FBQ1pNQUFBYnpBQUFKb3dBQUJ5TUFBQVxcXG5tVEFBQUhJd0FBQ2FNQUFBZFRBQUFKa3dBQUIxTUFBQW1qQUFBSGd3QUFDWk1BQUFlREFBQUpvd0FBQjdNQUFBbVRBQUFIc3dBQUNhTUFcXFxuQUFSakFBQUprd0FBQ2RNQUFBbVRBQUFLc3dBQUNaTUFBQXJUQUFBSmt3QUFDdk1BQUFtVEFBQUxFd0FBQ1pNQUFBc3pBQUFKa3dBQUMxXFxcbk1BQUFtVEFBQUxjd0FBQ1pNQUFBdVRBQUFKa3dBQUM3TUFBQW1UQUFBTDB3QUFDWk1BQUF2ekFBQUprd0FBREJNQUFBbVRBQUFNUXdBQVxcXG5DWk1BQUF4akFBQUprd0FBRElNQUFBbVRBQUFNOHdBQUNaTUFBQXp6QUFBSm93QUFEU01BQUFtVEFBQU5Jd0FBQ2FNQUFBMVRBQUFKa3dcXFxuQUFEVk1BQUFtakFBQU5nd0FBQ1pNQUFBMkRBQUFKb3dBQURiTUFBQW1UQUFBTnN3QUFDYU1BQUFwakFBQUprd0FBRHZNQUFBbVRBQUFQXFxcbkF3QUFDWk1BQUE4VEFBQUprd0FBRHlNQUFBbVRBQUFQMHdBQUNaTUFBQVNJd0FBUFJtQUFES2pnQUF5SXdBQU5GdUFBQXlUZ0FBNVZNQVxcXG5BSnlmQUFDY253QUFVVmtBQU5HUkFBQ0hWUUFBU0ZrQUFQWmhBQUJwZGdBQWhYOEFBRCtHQUFDNmh3QUErSWdBQUkrUUFBQUNhZ0FBRzJcXFxuMEFBTmx3QUFEZWN3QUFQWVFBQUdxUkFBRHhtUUFBZ2s0QUFIVlRBQUFFYXdBQUczSUFBQzJHQUFBZW5nQUFVRjBBQU90dkFBRE5oUUFBXFxcblpJa0FBTWxpQUFEWWdRQUFINGdBQU1wZUFBQVhad0FBYW0wQUFQeHlBQURPa0FBQWhrOEFBTGRSQUFEZVVnQUF4R1FBQU5OcUFBQVFjZ1xcXG5BQTUzWUFBQUdBQUFBR2hnQUFYSVlBQU8rTkFBQXlsd0FBYjVzQUFQcWRBQUNNZUFBQWYza0FBS0I5QUFESmd3QUFCSk1BQUgrZUFBRFdcXFxuaWdBQTMxZ0FBQVJmQUFCZ2ZBQUFmb0FBQUdKeUFBREtlQUFBd293QUFQZVdBQURZV0FBQVlsd0FBQk5xQUFEYWJRQUFEMjhBQUM5OUFBXFxcbkEzZmdBQVM1WUFBTkpTQUFDTGdBQUEzRkVBQU14UkFBQWNlZ0FBdm4wQUFQR0RBQUIxbGdBQWdJc0FBTTlpQUFBQ2FnQUEvb29BQURsT1xcXG5BQURuV3dBQUVtQUFBSWR6QUFCd2RRQUFGMU1BQVB0NEFBQy9Ud0FBcVY4QUFBMU9BQURNYkFBQWVHVUFBQ0o5QUFERFV3QUFYbGdBQUFcXFxuRjNBQUJKaEFBQXFvb0FBTHByQUFDd2p3QUFpR3dBQVA1aUFBRGxnZ0FBb0dNQUFHVjFBQUN1VGdBQWFWRUFBTWxSQUFDQmFBQUE1M3dBXFxcbkFHK0NBQURTaWdBQXo1RUFBUFZTQUFCQ1ZBQUFjMWtBQU94ZUFBREZaUUFBL204QUFDcDVBQUN0bFFBQWFwb0FBSmVlQUFET25nQUFtMVxcXG5JQUFNWm1BQUIzYXdBQVlvOEFBSFJlQUFDUVlRQUFBR0lBQUpwa0FBQWpid0FBU1hFQUFJbDBBQURLZVFBQTlIMEFBRytBQUFBbWp3QUFcXFxuN29RQUFDT1FBQUJLa3dBQUYxSUFBS05TQUFDOVZBQUF5SEFBQU1LSUFBQ3FpZ0FBeVY0QUFQVmZBQUI3WXdBQXJtc0FBRDU4QUFCMWN3XFxcbkFBNUU0QUFQbFdBQURuV3dBQXVsMEFBQnhnQUFDeWN3QUFhWFFBQUpwL0FBQkdnQUFBTkpJQUFQYVdBQUJJbHdBQUdKZ0FBSXRQQUFDdVxcXG5lUUFBdEpFQUFMaVdBQURoWUFBQWhrNEFBTnBRQUFEdVd3QUFQMXdBQUpsbEFBQUNhZ0FBem5FQUFFSjJBQUQ4aEFBQWZKQUFBSTJmQUFcXFxuQ0laZ0FBTHBZQUFJbFNBQUI3WndBQTgyY0FBRUZ0QUFDY2JnQUFDWFFBQUZsMUFBQnJlQUFBRUgwQUFGNllBQUJ0VVFBQUxtSUFBSGlXXFxcbkFBQXJVQUFBR1YwQUFPcHRBQUFxandBQWkxOEFBRVJoQUFBWGFBQUFoM01BQUlhV0FBQXBVZ0FBRDFRQUFHVmNBQUFUWmdBQVRtY0FBS1xcXG5ob0FBRGxiQUFBQm5RQUFPSjFBQUI1ZndBQXo0Z0FBT0dJQUFETWtRQUE0cFlBQUQ5VEFBQzZiZ0FBSFZRQUFOQnhBQUNZZEFBQStvVUFcXFxuQUtPV0FBQlhuQUFBbjU0QUFKZG5BQURMYlFBQTZJRUFBTXQ2QUFBZ2V3QUFrbndBQU1CeUFBQ1pjQUFBV0lzQUFNQk9BQUEyZ3dBQU9sXFxcbklBQUFkU0FBQ21YZ0FBMDJJQUFOWjhBQUNGV3dBQUhtMEFBTFJtQUFBN2p3QUFUSWdBQUUyV0FBQ0xpUUFBMDE0QUFFQlJBQURBVlFBQVxcXG5XbGdBQUhSbUFBRGVVUUFBS25NQUFNcDJBQUE4ZVFBQVhua0FBR1Y1QUFDUGVRQUFWcGNBQUw1OEFBQzlmd0FBRW9ZQUFQaUtBQUE0a0FcXFxuQUEvWkFBQU8rWUFBRDhtQUFBS0prQUFMU2RBQURla0FBQXQ1WUFBSzVQQUFEblVBQUFUVkVBQU1sU0FBRGtVZ0FBVVZNQUFKMVZBQUFHXFxcblZnQUFhRllBQUVCWUFBQ29XQUFBWkZ3QUFHNWNBQUNVWUFBQWFHRUFBSTVoQUFEeVlRQUFUMlVBQU9KbEFBQ1JaZ0FBaFdnQUFIZHRBQVxcXG5BYWJnQUFJbThBQUc1eEFBQXJjZ0FBSW5RQUFKRjRBQUErZVFBQVNYa0FBRWg1QUFCUWVRQUFWbmtBQUYxNUFBQ05lUUFBam5rQUFFQjZcXFxuQUFDQmVnQUF3SHNBQVBSOUFBQUpmZ0FBUVg0QUFISi9BQUFGZ0FBQTdZRUFBSG1DQUFCNWdnQUFWNFFBQUJDSkFBQ1dpUUFBQVlzQUFEXFxcbm1MQUFEVGpBQUFDSTBBQUxhUEFBQTRrQUFBNDVZQUFQK1hBQUE3bUFBQWRXQUFBTzVDQWdBWWdnQUFKazRBQUxWUkFBQm9VUUFBZ0U4QVxcXG5BRVZSQUFDQVVRQUF4MUlBQVBwU0FBQ2RWUUFBVlZVQUFKbFZBQURpVlFBQVdsZ0FBTE5ZQUFCRVdRQUFWRmtBQUdKYUFBQW9Xd0FBMGxcXFxuNEFBTmxlQUFCcFh3QUFyVjhBQU5oZ0FBQk9ZUUFBQ0dFQUFJNWhBQUJnWVFBQThtRUFBRFJpQUFERVl3QUFIR1FBQUZKa0FBQldaUUFBXFxcbmRHWUFBQmRuQUFBYlp3QUFWbWNBQUhsckFBQzZhd0FBUVcwQUFOdHVBQURMYmdBQUltOEFBQjV3QUFCdWNRQUFwM2NBQURWeUFBQ3ZjZ1xcXG5BQUtuTUFBSEYwQUFBR2RRQUFPM1VBQUIxMkFBQWZkZ0FBeW5ZQUFOdDJBQUQwZGdBQVNuY0FBRUIzQUFETWVBQUFzWG9BQU1CN0FBQjdcXFxuZkFBQVczMEFBUFI5QUFBK2Z3QUFCWUFBQUZLREFBRHZnd0FBZVljQUFFR0pBQUNHaVFBQWxva0FBTCtLQUFENGlnQUF5NG9BQUFHTEFBXFxcbkQraWdBQTdZb0FBRG1MQUFDS2l3QUFDSTBBQURpUEFBQnlrQUFBbVpFQUFIYVNBQUI4bGdBQTQ1WUFBRmFYQUFEYmx3QUEvNWNBQUF1WVxcXG5BQUE3bUFBQUVwc0FBSnlmQUFCS0tBSUFSQ2dDQU5VekFnQ2RPd0FBR0VBQUFEbEFBQUJKVWdJQTBGd0NBTk4rQWdCRG53QUFqcDhBQU5cXFxua0ZBQUMwQlFBQThnVUFBTGNGQUFEcEJRQUF3UVVBQU9rRkFBRENCUUFBNlFVQUFMd0ZBQURCQlFBQTZRVUFBTHdGQUFEQ0JRQUEwQVVBXFxcbkFMY0ZBQURRQlFBQXVBVUFBTkFGQUFDOEJRQUEwUVVBQUx3RkFBRFNCUUFBdkFVQUFOTUZBQUM4QlFBQTFBVUFBTHdGQUFEVkJRQUF2QVxcXG5VQUFOWUZBQUM4QlFBQTJBVUFBTHdGQUFEWkJRQUF2QVVBQU5vRkFBQzhCUUFBMndVQUFMd0ZBQURjQlFBQXZBVUFBTjRGQUFDOEJRQUFcXFxuNEFVQUFMd0ZBQURoQlFBQXZBVUFBT01GQUFDOEJRQUE1QVVBQUx3RkFBRG1CUUFBdkFVQUFPY0ZBQUM4QlFBQTZBVUFBTHdGQUFEcEJRXFxcbkFBdkFVQUFPb0ZBQUM4QlFBQTFRVUFBTGtGQUFEUkJRQUF2d1VBQU5zRkFBQy9CUUFBNUFVQUFMOEZBQUNaRUFFQXVoQUJBSnNRQVFDNlxcXG5FQUVBcFJBQkFMb1FBUUF4RVFFQUp4RUJBRElSQVFBbkVRRUFSeE1CQUQ0VEFRQkhFd0VBVnhNQkFMa1VBUUM2RkFFQXVSUUJBTEFVQVFcXFxuQzVGQUVBdlJRQkFMZ1ZBUUN2RlFFQXVSVUJBSzhWQVFBMUdRRUFNQmtCQUZmUkFRQmwwUUVBV05FQkFHWFJBUUJZMFFFQVpkRUJBRzdSXFxcbkFRQlkwUUVBWmRFQkFHL1JBUUJZMFFFQVpkRUJBSERSQVFCWTBRRUFaZEVCQUhIUkFRQlkwUUVBWmRFQkFITFJBUUM1MFFFQVpkRUJBTFxcXG5yUkFRQmwwUUVBdWRFQkFHWFJBUUJ1MFFFQXV0RUJBR1hSQVFCdTBRRUF1ZEVCQUdYUkFRQnYwUUVBdXRFQkFHWFJBUUJ2MFFFQVBVNEFcXFxuQURoT0FBQkJUZ0FBSWdFQ0FHQlBBQUN1VHdBQXUwOEFBQUpRQUFCNlVBQUFtVkFBQU9kUUFBRFBVQUFBbmpRQUFEb0dBZ0JOVVFBQVZGXFxcbkVBQUdSUkFBQjNVUUFBSEFVQ0FMazBBQUJuVVFBQWpWRUFBRXNGQWdDWFVRQUFwRkVBQU14T0FBQ3NVUUFBdFZFQUFOK1JBZ0QxVVFBQVxcXG5BMUlBQU44MEFBQTdVZ0FBUmxJQUFISlNBQUIzVWdBQUZUVUFBTWRTQUFESlVnQUE1RklBQVBwU0FBQUZVd0FBQmxNQUFCZFRBQUJKVXdcXFxuQUFVVk1BQUZwVEFBQnpVd0FBZlZNQUFIOVRBQUIvVXdBQWYxTUFBQ3dLQWdCd2NBQUF5bE1BQU45VEFBQmpDd0lBNjFNQUFQRlRBQUFHXFxcblZBQUFubFFBQURoVUFBQklWQUFBYUZRQUFLSlVBQUQyVkFBQUVGVUFBRk5WQUFCalZRQUFoRlVBQUlSVkFBQ1pWUUFBcTFVQUFMTlZBQVxcXG5EQ1ZRQUFGbGNBQUFaV0FBQVhWd0FBVVZZQUFIUldBQUFIVWdBQTdsZ0FBTTVYQUFEMFZ3QUFEVmdBQUl0WEFBQXlXQUFBTVZnQUFLeFlcXFxuQUFEa0ZBSUE4bGdBQVBkWUFBQUdXUUFBR2xrQUFDSlpBQUJpV1FBQXFCWUNBT29XQWdEc1dRQUFHMW9BQUNkYUFBRFlXUUFBWmxvQUFPXFxcbjQyQUFEOE5nQUFDRnNBQUQ1YkFBQStXd0FBeUJrQ0FNTmJBQURZV3dBQTUxc0FBUE5iQUFBWUd3SUEvMXNBQUFaY0FBQlRYd0FBSWx3QVxcXG5BSUUzQUFCZ1hBQUFibHdBQU1CY0FBQ05YQUFBNUIwQ0FFTmRBQURtSFFJQWJsMEFBR3RkQUFCOFhRQUE0VjBBQU9KZEFBQXZPQUFBL1ZcXFxuMEFBQ2hlQUFBOVhnQUFhVjRBQUdJNEFBQ0RJUUlBZkRnQUFMQmVBQUN6WGdBQXRsNEFBTXBlQUFDU293SUEvbDRBQURFakFnQXhJd0lBXFxcbkFZSUFBQ0pmQUFBaVh3QUF4emdBQUxneUFnRGFZUUlBWWw4QUFHdGZBQURqT0FBQW1sOEFBTTFmQUFEWFh3QUErVjhBQUlGZ0FBQTZPUVxcXG5BQUhEa0FBSlJnQUFEVUpnSUF4MkFBQUVoaEFBQk1ZUUFBVG1FQUFFeGhBQUI2WVFBQWptRUFBTEpoQUFDa1lRQUFyMkVBQU41aEFBRHlcXFxuWVFBQTltRUFBQkJpQUFBYllnQUFYV0lBQUxGaUFBRFVZZ0FBVUdNQUFBd3JBZ0E5WXdBQS9HSUFBR2hqQUFDRFl3QUE1R01BQVBFckFnXFxcbkFpWkFBQXhXTUFBS2xqQUFBdU9nQUFhV1FBQUg1a0FBQ2RaQUFBZDJRQUFHdzZBQUJQWlFBQWJHVUFBQW93QWdEalpRQUErR1lBQUVsbVxcXG5BQUFaT3dBQWtXWUFBQWc3QUFEa09nQUFrbEVBQUpWUkFBQUFad0FBbkdZQUFLMkFBQURaUXdBQUYyY0FBQnRuQUFBaFp3QUFYbWNBQUZcXFxuTm5BQURETXdJQVNUc0FBUHBuQUFDRlp3QUFVbWdBQUlWb0FBQnROQUlBam1nQUFCOW9BQUFVYVFBQW5Uc0FBRUpwQUFDamFRQUE2bWtBXFxcbkFLaHFBQUNqTmdJQTIyb0FBQmc4QUFBaGF3QUFwemdDQUZSckFBQk9QQUFBY21zQUFKOXJBQUM2YXdBQXUyc0FBSTA2QWdBTEhRSUEralxcXG5vQ0FFNXNBQUM4UEFJQXYyd0FBTTFzQUFCbmJBQUFGbTBBQUQ1dEFBQjNiUUFBUVcwQUFHbHRBQUI0YlFBQWhXMEFBQjQ5QWdBMGJRQUFcXFxuTDI0QUFHNXVBQUF6UFFBQXkyNEFBTWR1QUFEUlBnSUErVzBBQUc1dkFBQmVQd0lBamo4Q0FNWnZBQUE1Y0FBQUhuQUFBQnR3QUFDV1BRXFxcbkFBU25BQUFIMXdBQUIzY0FBQXJYQUFBQ1VGQWdCRmNRQUFZMElDQUp4eEFBQ3JRd0lBS0hJQUFEVnlBQUJRY2dBQUNFWUNBSUJ5QUFDVlxcXG5jZ0FBTlVjQ0FCUklBZ0I2Y3dBQWkzTUFBS3crQUFDbGN3QUF1RDRBQUxnK0FBQkhkQUFBWEhRQUFIRjBBQUNGZEFBQXluUUFBQnMvQUFcXFxuQWtkUUFBTmt3Q0FENTFBQUNTVEFJQWNIVUFBSjhoQWdBUWRnQUFvVThDQUxoUEFnQkVVQUlBL0Q4QUFBaEFBQUQwZGdBQTgxQUNBUEpRXFxcbkFnQVpVUUlBTTFFQ0FCNTNBQUFmZHdBQUgzY0FBRXAzQUFBNVFBQUFpM2NBQUVaQUFBQ1dRQUFBSFZRQ0FFNTRBQUNNZUFBQXpIZ0FBT1xcXG5OQUFBQW1WZ0lBVm5rQUFKcFdBZ0RGVmdJQWoza0FBT3Q1QUFBdlFRQUFRSG9BQUVwNkFBQlBlZ0FBZkZrQ0FLZGFBZ0NuV2dJQTdub0FcXFxuQUFKQ0FBQ3JXd0lBeG5zQUFNbDdBQUFuUWdBQWdGd0NBTko4QUFDZ1FnQUE2SHdBQU9OOEFBQUFmUUFBaGw4Q0FHTjlBQUFCUXdBQXgzXFxcbjBBQUFKK0FBQkZmZ0FBTkVNQUFDaGlBZ0JIWWdJQVdVTUFBTmxpQWdCNmZ3QUFQbU1DQUpWL0FBRDZmd0FBQllBQUFOcGtBZ0FqWlFJQVxcXG5ZSUFBQUtobEFnQndnQUFBWHpNQ0FOVkRBQUN5Z0FBQUE0RUFBQXRFQUFBK2dRQUF0Vm9BQUtkbkFnQzFad0lBa3pNQ0FKd3pBZ0FCZ2dcXFxuQUFCSUlBQUo2UEFBQnJSQUFBa1lJQUFJdUNBQUNkZ2dBQXMxSUFBTEdDQUFDemdnQUF2WUlBQU9hQ0FBQThhd0lBNVlJQUFCMkRBQUJqXFxcbmd3QUFyWU1BQUNPREFBQzlnd0FBNTRNQUFGZUVBQUJUZ3dBQXlvTUFBTXlEQUFEY2d3QUFObXdDQUd0dEFnRFZiQUlBSzBVQUFQR0VBQVxcXG5EemhBQUFGb1VBQU1wekFnQmtoUUFBTEc4Q0FGMUZBQUJoUlFBQXNXOENBTkp3QWdCclJRQUFVSVlBQUZ5R0FBQm5oZ0FBYVlZQUFLbUdcXFxuQUFDSWhnQUFEb2NBQU9LR0FBQjVod0FBS0ljQUFHdUhBQUNHaHdBQTEwVUFBT0dIQUFBQmlBQUErVVVBQUdDSUFBQmppQUFBWjNZQ0FOXFxcbmVJQUFEZWlBQUFOVVlBQVBxSUFBQzdOQUFBcm5nQ0FHWjVBZ0MrUmdBQXgwWUFBS0NLQUFEdGlnQUFpb3NBQUZXTUFBQ29mQUlBcTR3QVxcXG5BTUdNQUFBYmpRQUFkNDBBQUM5L0FnQUVDQUlBeTQwQUFMeU5BQUR3alFBQTNnZ0NBTlNPQUFBNGp3QUEwb1VDQU8yRkFnQ1VrQUFBOFpcXFxuQUFBQkdSQUFBdWh3SUFHNUVBQURpU0FBRFhrZ0FBMkpJQUFIeVNBQUQ1a3dBQUZaUUFBUHFMQWdDTGxRQUFsVWtBQUxlVkFBQjNqUUlBXFxcbjVra0FBTU9XQUFDeVhRQUFJNWNBQUVXUkFnQWFrZ0lBYmtvQUFIWktBQURnbHdBQUNwUUNBTEpLQUFDV2xBSUFDNWdBQUF1WUFBQXBtQVxcXG5BQXRwVUNBT0tZQUFBelN3QUFLWmtBQUtlWkFBRENtUUFBL3BrQUFNNUxBQUF3bXdJQUVwc0FBRUNjQUFEOW5BQUF6a3dBQU8xTUFBQm5cXFxublFBQXpxQUNBUGhNQUFBRm9RSUFEcUlDQUpHaUFnQzduZ0FBVmswQUFQbWVBQUQrbmdBQUJaOEFBQStmQUFBV253QUFPNThBQUFDbUFnXFxcbkIrTHk1allYSm5ieTl5WldkcGMzUnllUzl6Y21NdmFXNWtaWGd1WTNKaGRHVnpMbWx2TFRabU1UZGtNakppWW1FeE5UQXdNV1l2ZFc1cFxcXG5ZMjlrWlMxdWIzSnRZV3hwZW1GMGFXOXVMVEF1TVM0eU1pOXpjbU12Ykc5dmEzVndjeTV5Y3dBQThQc1JBR0lBQUFBMkFBQUFHZ0FBQUFcXFxuQUFBQUFEQUFBQUFBQUFBQUVBYkFFT0FPOEVBZ0FBQUFBQUFBQUNBQUFBQVFBREFKY0FaUUVBQUFBQWhRRUFBQUVBQUFEMEF3QUFBQUFBXFxcbkFBQUFCQUNSQUFBQTNRQUJBR3dDQUFBTEFBQUE0QUM4QUFNQUV3SUJBQUFBeUFBREFCd0EvQUFBQUFBQUVRQXlBUUFBQUFBTEFaQUFkQVxcXG5UV0FBQUFBQUFEQUEwQUJRQUFBQVlBR1FCVUFESUJUQUFYQUFZQVNBQURBQUFBQUFBR0FBd0FBd0FBQUxFQUFRQ01BQUFBR3dEQUFBY0FcXFxuQWdBQUFCSUFBQUFBQUFZQUFRQytBY2dBQUFCOUFBQUFDZ0FBQUFBQXRBQUNBQWdBQlFCRUFkc0FBUUFHQUFBQUFBQU5BQlFBQUFCUEFBXFxcbklBQUFBREFESUFBQUFGQUE0QWZBQXNBQVlBQUFBQUFBY0FBQUJmQUFVQUR3Qm5BQUFBQVFBMEFBQUFBQUFBQUpBQUVnQUFBQUFBSGdCTVxcXG5BSWtBcUFBQUFBUUFId0FBQUFBQUFRQ1pBQmdBRFFBREFBY0FCUUFaQUFJQUFBQUVBQUVBQXdDUUFBc0FLUUJWQUFBQVVRQUFBQUlBMEFcXFxuQjZBR1lBQUFDVkFBY0FBQUFBQUFBQUFBQUJBQUFBalFBUEFDRUFWZ0FLQUJzQUFBQUFBQWdBQndCOEFBVUFBQUJpQUFJQUV3QUdBQUFBXFxcblR3QUFBQUFBTWdBdkFBUUFEUUNnQUFRQUNBQWtBQjhBQUFBQUFJSUFSUUFBQUdFQUFBQWRBQUVBQUFBQkFBQUFCd0FYQUFzQUFBQUFBQVxcXG5BQUN3QUlBQWdBQUFBQUFEMEFBQUNXQUFBQUFBQUFBQWdBQUFBQUFBQUFCQUFBQUFNQUJ3QXNBQUFBQUFBVUFDUUFBZ0FDQUFBQUFnQUFcXFxuQUJJQUFRQUFBQUlBQUFBbEFBb0FBUUJtQUFzQUNBQUFBQXdBRUFBQ0FBTUFDQUFFQUFZQUFRQUVBT01BSXdBZ0FBY0FBQUFQQUI0QUl3XFxcbkE5QUFRQUFBQUJBQUFBQXdBbEFBQUFBUUF4QUowQUFBQUFBQVFBQVFBQUFBQUFDQUFBQUFBQUpnQUFBQUFBQWdBQUFBSUFBQUFEQUFBQVxcXG5Hd0FBQUFJQUFBQUJBQW9BQXdBQkFBSUFEQUFNQUFFQUFRQUFBQkVBQkFBOUFBSUFHd0FDQUFBQURBQUdBQVlBQUFBQUFBTUFBQUFKQUNcXFxud0FBQUFKQURjQUxRQUFBQklBSXdBQUFBQUFIQUFBQUNZQUVBQVZBQUlBQUFBTEFBQUFCQUFVQUFVQUV3QUhBQndBQXdBMkFBQUFDQUFCXFxcbkFCa0FBZ0FBQUFFQUFBQUFBQVFBQVFBSUFBSUFDZ0FHQUJNQUFBQUFBQUFBTHdBQkFBQUFGZ0FGQUF3QURBQUJBQkFBQXdBT0FBQUFBUVxcXG5BTkFDZ0FBQUFBQUFFQUFBQUFBQVFBRUFBaEFBQUFBUUFEQUFBQUl3QUFBQUVBQUFBQUFBQUFEUUFCQUFBQUFBQUdBR3NBQUFBVUFBQUFcXFxuQUFBR0FCSUFBQUFDQUFBQUtnQUJBQXNBQVFBR0FBa0FDQUFCQUFBQUt3QUFBQWdBQndBQUFBOEFGZ0FBQUFBQVJBQUFBQUVBQUFBQUFBXFxcbndBR1FBbEFBSUFId0FQQUF3QUFRQWZBQW9BQUFBNEFBNEFEd0FNQUNVQUFBQUdBQTRBQUFBSUFBQUFBZ0FBQUFBQUFRQUpBQUVBRmdBQVxcXG5BQUFBQUFBREFCVUFZZ0FCQUFBQUFBQUNBQUFBQUFBOUFBQUFBd0FCQUFFQUFRQUFBQUVBQUFBcEFBUUFMQUFCQUFBQUFBQUFBQUFBSWdcXFxuQUFBQlFBS0FBQUFBY0FCQUFEQUFZQUFBQUJBQTBBS2dBQUFBQUFSQUFBQUFnQUFBQUNBQUVBQ3dBQUFBQUFBQUFBQUFRQUF3QWNBQVVBXFxcbkFBQUdBQUlBQUFBUkFBWUFCd0FBQUFJQUtBQUhBQjBBQ3dBRkFDNEFFUUFBQUFFQURBQUFBQWNBTHdBQUFBQUFCUUFLQUFBQUNBQUdBQVxcXG5BQUFBQUhBQUVBQ0FBZ0FBd0FBQUFhQUFVQUFBQW1BQ1lBQWdBTEFBZ0FBQUFFQUFVQUFnQUFBQVVBRWdBQUFBVUFBQUFCQUFZQUNRQUJcXFxuQUFNQUZRQURBQUFBQUFBQ0FBQUFBd0FBQUJZQUFBQVFBQU1BQUFBYkFBSUFBQUFKQUFBQUNRQUFBQWtBQUFBQUFBRUFBUUFNQUNZQUFRXFxcbkFBQUFBQUJBQUFBQXdBSGdBQUFBRUFOZ0FHQUFNQUFBQUFBQUVBQUFBR0FBQUFBQUFBQUFnQURBQUFBQUFBQVFBQUFBQUFCQUFDQUFjQVxcXG5BUUFDQUFjQURRQUNBQUFBQUFBQUFBSUFCUUFBQUFnQUJRQUFBQUFBQXdBR0FBQUFBQUFJQUFFQUJRQUJBQU1BQXdBUUFBc0FCd0FBQUFcXFxuOEFFUUFBQUJnQUFBQUFBQThBQWdBSEFBRUFBQUFBQUFBQURBQVlBQUFBRndBQUFBRUFBQUFtQUFNQUFBQWJBQUFBQ0FBREFBTUFBQUFBXFxcbkFBSUFCZ0FBQUFzQUd3QUpBQUFBQXdBQUFBQUFBUUFCQUFFQUJRQUFBQVlBQUFBRUFBTUFBQUFBQUFBQUFBQUFBQWtBQ1FBQUFBSUFCd1xcXG5BT0FDTUFBd0FCQUFBQUFBQVBBQUFBQ0FBaUFBNEFFQUFIQUFNQURBQVpBQUVBQ2dBQ0FBQUFBd0FZQUFFQUZnQUtBQUFBQWdBSUFBQUFcXFxuSXdBQUFBQUFCZ0FDQUFBQUJBQU5BQnNBQUFBRUFEZ0FBQUFBQUJFQURnQUFBQUFBQUFBSkFBQUFJUUFUQUFJQUdBQUVBQUVBRUFBQUFBXFxcbklBQUFBR0FCUUFDZ0FBQUFBQUJBQU9BQUFBQUFBRkFBUUFBQUFnQUIwQUFRQUFBQWtBQUFBQkFBRUFCQUFDQUFBQUFRQUFBQUFBSkFBQlxcXG5BQUFBQ1FBSUFBQUFBUUFLQUFFQUFBQUVBQUFBRXdBRkFBQUFBUUFBQUFFQUFBQUFBQUlBQkFBQUFBQUFCUUFCQUFrQUFnQUZBQUFBQUFcXFxuQUFBQUFBQUFBS0FBQUFBQUFRQUFFQUJBQUFBQUFBQVFBRUFBQUFBUUFDQUFRQUF3QUFBQVFBRkFBSEFBb0FBZ0FHQUFBQUFnQUJBQWdBXFxcbkJ3QUFBQUFBQUFBVUFBRUFFQUFBQUFBQUJRQUJBQVlBQlFBREFBQUFDUUFDQUFRQUFnQUFBQUFBREFBWkFBQUFBQUFBQUFFQUFBQUFBQVxcXG44QUNBQU5BQUFBQXdBQkFBQUFDUUFVQUJjQUFBQUFBQUFBQUFBREFBRUFBQUFGQUJVQUFRQVpBQUVBQVFBQkFBRUFBd0FBQUFZQUF3QUFcXFxuQUJFQUJRQUFBQVFBREFBREFBQUFCd0FBQUFBQUF3QUVBQU1BQ3dBQUFBQUFCZ0FJQUFNQUFRQUFBQUFBQVFBTkFBTUFBQUFIQUFBQUFRXFxcbkFBQUFBQUFBQUpBQUVBQUFBQ0FBRUFDUUFLQUFnQUFRQUhBQU1BQUFBREFBQUFBQUFFQUFBQUJBQUJBQXNBQUFBVEFBWUFCd0FBQUFBQVxcXG5DQUFIQUFjQUFBQURBQUFBQWdBREFBQUFBUUFCQUFFQUd3QURBQUlBQ1FBQ0FBRUFBZ0FBQUFRQUFRQUFBQVlBQUFBQUFBRUFCUUFBQUFcXFxuOEFBUUFHQUFnQUJBQUFBQUFBQXdBTEFBSUFCUUFCQUFJQUV3QVRBQUFBQ1FBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBSUFJUUFBXFxcbkFBWUFBd0FCQUFFQUJRQURBQUFBRUFBaUFBc0FBQUFJQUFBQUFBQURBQVFBQVFBYUFBSUFBQUFBQUFBQUFnQUJBQUFBQUFBQ0FBQUFBQVxcXG5BU0FBRUFBQUFDQUFBQUFBQUJBQUFBQWdBaEFBQUFBZ0FOQUFFQUF3QUZBQUVBREFBUUFBQUFKQUFBQUFBQUJnQUdBQnNBQVFBTkFBQUFcXFxuQVFBQUFBRUFBQUFBQUFjQUFnQUFBQVVBSkFBR0FBRUFEZ0FBQUFzQURnQUhBQUFBQUFBQUFBTUFBQUFBQUFJQUdBQURBQU1BQVFBQUFBXFxcbkFBQkFBRUFBQUFBUUFBQUJRQUJnQUxBQUFBQWdBQkFBSUFCZ0FHQUFBQUJnQUFBQUFBQVFBQ0FBSUFBUUFDQUFBQUFRQUlBQUVBREFBQVxcXG5BQWNBQWdBREFBRUFBQUFHQUFFQUJ3QVJBQU1BQUFBQkFBb0FBZ0FDQUFnQUJnQUlBQUFBQUFBRUFBZ0FBUUFIQUFJQUFnQUdBQUFBQmdcXFxuQUFBQUFBQndBQkFBNEFBZ0FDQURJQUJ3QUxBQVFBQkFBQUFBWUFBQUFJQUFBQUFBQUFBQWtBQWdBYkFBQUFBQUFBQUFFQURBQUNBQUVBXFxcbkFnQVBBQUFBQUFBQUFBTUFEQUFGQUFBQUFBQUFBQXNBQUFBQ0FBRUFBd0FBQUFFQUJnQUtBQUVBQUFBSUFBQUFCQUFCQUFBQUFRQUFBQVxcXG40QUFnQUJBQUVBQVFBSEFBRUFBd0FCQUFJQUFRQURBQUlBQUFBUkFBTUFBZ0FEQUFBQUFBQURBQVFBQUFBQUFBRUFJQUFBQUFBQUFRQUFcXFxuQUFBQUJ3QUNBQUFBRWdBQUFBb0FBUUFDQUFBQUFBQUFBQUFBQWdBQUFBQUFCQUFQQUFBQUJ3QUVBQUlBRWdBQUFBRUFCQUFDQUFNQUFBXFxcbkFCQUJjQUFRQUJBQVVBQUFBQkFBQUFBQUFMQUFBQUFRQUFBQUFBQUFBRUFBQUFBQUFKQUFBQUJBQUFBQUFBQkFBS0FBQUFBQUFHQUFjQVxcXG5BZ0FEQUFBQUFBQUFBQUFBQmdBTEFBQUFBQUFBQUFBQUFBQUJBQUFBREFBSUFBRUFEUUFMQUFJQUFBQUFBQUFBQVFBRkFBRUFBQUFBQUFcXFxuSUFBd0FEQUFBQUFBQUlBQUFBQVFBSkFCRUFBUUFNQUFBQUFBQUFBQVFBQUFBQUFBQUFBUUFCQUJjQUFRQUFBQVVBQ3dBQkFBUUFBUUFHXFxcbkFCMEFBQUFCQUFRQUFnQUpBQUlBRHdBVUFBSUFBUUFIQUFFQUFRQUhBQUlBQUFBQUFBQUFBQUFFQUJNQUFnQUJBQUVBQXdBQUFBSUFBZ1xcXG5BQUFBTUFBUUFBQUFVQUFRQUJBQUFBQVFBQkFBSUFBQUFBQUFNQUFBQUtBQVlBQVFBR0FBY0FBUUFBQUFBQUFnQUhBQVFBQUFBQUFBd0FcXFxuQWdBQUFBb0FBUUFBQUFBQUNnQUFBQVlBQXdBQkFBQUFEUUFEQUFVQUFBQUNBQW9BQUFBTEFBRUFCZ0FpQUFBQUJRQUJBQUFBQWdBQUFBXFxcbkFBRWdBRUFBSUFBQUFBQUF3QUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQVFBQWdBQkFBZ0FCQUFHQUFFQUFBQURBQW9BQUFBRlxcXG5BQUVBQUFBQUFBTUFBQUFHQUFBQUFBQURBQUFBQkFBQUFBQUFBQUFPQUFFQUFRQUFBQVlBQUFBSUFBQUFBQUFLQUFFQUFBQUVBQUFBQkFcXFxuQUJBQUFBQUFBQUFBQUFBQUFCQUFBQUZ3QUVBQUFBQ3dBREFBVUFCQUFBQUFNQUR3QUdBQUVBQVFBSEFBUUFBd0FCQUFNQUJBQUJBQUVBXFxcbkFBQUFBQUFBQWdBQkFBQUFCUUFBQUFJQUFBQUFBQU1BQVFBQUFBVUFBQUFOQUFZQUFRQUFBQUFBQndBQUFBQUFDZ0FEQUFJQUNnQUJBQVxcXG5jQUFRQUFBQUVBQUFBRkFBTUFBQUFGQUFJQUFRQUFBQUlBQUFBQkFBRUFCQUFKQUFVQUFRQUJBQVlBQUFBSkFBRUFDZ0FDQUFJQUFBQUFcXFxuQUFJQUFnQUhBQWtBQUFBUUFCd0FCQUFBQUFBQUF3QURBQTBBQVFBREFBQUFBQUFNQUFjQUFRQURBQWNBQ0FBREFBWUFBQUFEQUFFQUFRXFxcbkFBQUFFQUFRQUVBQW9BQlFBQUFBRUFFd0FDQUFBQUFBQUJBQUlBQVFBT0FBRUFEQUFCQUFFQUNRQUFBQUFBQVFBTUFBQUFBUUFBQUFJQVxcXG5CQUFEQUFFQURBQU1BQU1BQUFBTUFBc0FBQUFCQUFFQUNnQUJBQXNBQUFBQUFCd0FBQUFBQUFBQUFRQUNBQWdBQXdBQUFBVUFBQUFEQUFcXFxuTUFBQUFFQUFBQUFnQUdBQThBQUFBQkFBUUFBQUFBQUJFQUN3QUVBQVVBQkFBQUFBMEFCQUFFQUFNQUFRQUFBQUFBQWdBQUFBQUFBQUFLXFxcbkFBRUFFd0FHQUFBQUJ3QUhBQUVBQVFBRUFBUUFBQUFBQUFNQUFBQUhBQUFBQWdBQkFBQUFBZ0FBQUFJQUFnQUFBQUFBQUFBREFBUUFCUVxcXG5BUUFBQUFCd0FBQUFvQUVRQUFBQUFBQVFBQkFBQUFBQUFBQUFBQUFBQUJBQXNBQVFBQUFBQUFBQUFDQUFJQUFBQUtBQUFBQXdBQUFBY0FcXFxuQmdBQkFBQUFCQUFDQUFJQUFBQUJBQUlBQXdBRUFBQUFCQUFBQUFFQUFBQUNBQkFBQlFBQUFBQUFBUUFBQUFvQUJBQUFBQVFBQUFBQUFBXFxcbkFBQmdBTEFBc0FCUUFBQUFBQUFBQUFBQUFBQ1FBQUFBSUFCQUFBQUFVQUFnQUFBQU1BQUFBQUFBQUFBZ0FBQUFFQUFBQUVBQVlBQVFBRVxcXG5BQUVBQUFBQkFBY0FBQUFHQUFBQUFBQUNBQUlBQUFBR0FBVUFDQUFBQUFFQUFnQUJBQUFBQkFBSEFBQUFBUUFIQUFBQUFnQUNBQXNBQVFcXFxuQUNBQVlBQVFBQUFBQUFBQUFBQUFJQUJBQUFBQUFBQXdBQkFBY0FBQUFCQUFFQUFBQUJBQUFBQUFBTEFBQUFBQUFBQUFZQUFBQUJBQUFBXFxcbkJBQU1BQUlBQUFBQkFBRUFBZ0FFQUE0QUFBQUFBQUFBQUFBQUFBSUFBUUFBQUFRQUF3QVlBQUFBQVFBQUFBSUFCUUFCQUFJQUFBQUJBQVxcXG5NQUJBQUFBQUFBQlFBQ0FBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQ0FBTUFBQUFCQUFBQUFBQUJBQU1BQUFBQUFBQUFBUUFCQUFBQUFBQVVcXFxuQUFRQUN3QVNBQUFBQUFBQ0FBQUFBUUFBQUFBQUFBQUJBQU1BQ3dBREFBQUFBUUFDQUFBQUVBQU5BQUVBQVFBSEFBWUFBUUFCQUFJQUFBXFxcbkFBQUFFQUF3QUNBQUVBQXdBQkFBQUFBQUFBQUFnQUJBQUNBQVlBQ1FBRkFBQUFGZ0FCQUFRQUFBQURBQU1BQkFBQkFBQUFBQUFDQUFBQVxcXG5BUUFBQUFJQURRQUNBQUFBQ3dBR0FBb0FBd0FBQUFVQUFBQUJBQUFBQUFBQUFBVUFBUUFBQUFvQUFBQUNBQUFBQWdBQ0FBVUFBUUFDQUFcXFxuQUFBZ0FDQUFVQUFBQUJBQUFBQUFBREFBQUFBd0FDQUFBQUFBQUFBQUVBQVFBQkFBQUFHUUFBQUFBQUF3QUFBQUVBQUFBQkFBVUFCQUFCXFxcbkFBUUFBQUFCQUFNQUJBQUdBQUVBQVFBRUFBTUFCQUFBQUFRQUJRQUpBQUFBQVFBSkFBSUFBUUFBQUFBQUFBQU1BQUVBQUFBQUFBTUFBZ1xcXG5BREFBSUFBUUFBQUFRQUFBQUVBQWNBQXdBQkFBQUFBUUFCQUFBQUFBQUJBQVVBQmdBSkFBQUFBZ0FiQUFJQUFBQUpBQUFBQUFBR0FBQUFcXFxuQUFBQUFBTUFBQUFCQUFZQUFnQUJBQVlBQVFBTEFBTUFCZ0FBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFDQUFJQUFBQUFBQUFBQUFBQUFBXFxcbk1BQUFBREFBTUFCUUFMQUFBQUFBQUJBQUFBQUFBQ0FBc0FBd0FDQUJNQUFRQUJBQWdBQXdBQ0FBVUFBUUFBQUFFQUFRQUZBQUFBQVFBRFxcXG5BQVFBQlFBQUFBSUFBQUFPQUFFQUFBQUFBQVVBQXdBRkFBQUFBUUFDQUFBQUFBQUlBQUFBQVFBQ0FBQUFDUUFBQUFBQUFBQUdBQUFBQXdcXFxuQURBQWtBQndBQUFBZ0FBQUFCQUFNQUFBQURBQVVBQkFBQkFBSUFBZ0FBQUFRQUF3QUFBQWNBQlFBREFBRUFBQUFFQUFFQUFBQURBQUFBXFxcbkNBQUNBQVFBQkFBQUFBa0FBUUFFQUFBQUJnQUVBQUFBQUFBQUFBb0FBUUFBQUFFQUJnQUFBQUVBQmdBREFBSUFBZ0FBQUFFQUFRQURBQVxcXG5VQUFBQUFBQUlBQkFBQkFBQUFBQUFCQUFZQUFBQUZBQVFBQkFBQkFBRUFCQUFCQUFJQUFBQUNBQUlBQlFBTkFBRUFBQUFDQUFBQUFBQUNcXFxuQUFBQUFRQUJBQUFBQUFBQkFBUUFBQUFBQUFjQUFBQUZBQUFBQUFBQUFBRUFCQUFBQUFrQUFnQUVBQUFBQUFBQkFBQUFBd0FBQUFvQUFBXFxcbkFEQUFFQUJRQUJBQUFBQUFBRkFBb0FBUUFDQUFBQUFnQUVBQWtBQVFBRUFBVUFBQUFBQUFFQUF3QUpBQUlBQkFBSUFBSUFBQUFBQUFNQVxcXG5DQUFBQUFBQUFnQUJBQU1BQWdBQkFBQUFBQUFBQUFFQUJBQUJBQUVBQUFBQkFBQUFBUUFBQUFBQUFRQUNBQWtBQVFBQkFBVUFBZ0FBQUFcXFxuRUFBQUFBQUFJQUFBQURBQUFBQVFBQ0FBQUFCQUFDQUFRQUFnQUNBQUFBQVFBS0FBQUFBUUFBQUFBQUFBQUFBQU1BQUFBREFBSUFCUUFCXFxcbkFBSUFBUUFDQUFBQUJBQUNBQUVBQUFBQkFBQUFBQUFCQUFFQUF3QUFBQUFBQUFBQUFBQUFBZ0FBQUFJQUF3QUNBQUFBQUFBQUFBVUFBUVxcXG5BQUFBRUFBUUFBQUFjQUFRQUJBQU1BQUFBREFBRUFBUUFBQUFrQUFnQUFBQUVBQVFBSEFBWUFBZ0FBQUFZQUFBQUVBQUFBQWdBSEFBUUFcXFxuQVFBQkFBQUFBQUFDQUFFQUFBQUVBQU1BQUFBS0FBQUFBQUFDQUFJQUFRQUJBQU1BQWdBQkFBRUFBQUFEQUFBQUFBQUFBQUVBQmdBQkFBXFxcbk1BQ3dBTEFBQUFCQUFCQUFBQUFBQUFBQUFBQlFBQ0FBQUFBQUFCQUFRQUFBQUFBQUVBQUFBQUFBVUFBd0FDQUFNQUNBQUJBQVlBQVFBQ1xcXG5BQUFBQVFBRUFBVUFBZ0FBQUFZQUFRQUJBQUFBQWdBQkFBSUFBZ0FBQUFBQUJBQUFBQUVBQWdBQUFBVUFBZ0FDQUFZQUFRQUZBQU1BQWdcXFxuQUZBQUlBQVFBQkFBQUFCQUFDQUFBQUFnQUFBQUFBQlFBQUFBQUFBQUFCQUFBQUFnQUFBQUFBQUFBVkFBSUFBQUFBQUFFQUFnQUhBQU1BXFxcbkF3QURBQUVBQVFBQ0FBWUFBUUFIQUFBQUFBQUFBQUFBQkFBQUFBTUFBZ0FBQUFBQUFRQUJBQU1BQVFBQkFBQUFBUUFCQUFVQUFBQUJBQVxcXG5VQUJBQUlBQUlBQVFBQUFBRUFBQUFCQUFFQUFBQUJBQUFBQUFBQUFBQUFBUUFEQUFFQUFRQUFBQUFBQkFBREFBRUFCQUFBQUFRQUFBQUNcXFxuQUFJQUF3QUFBQUVBQUFBQUFBQUFBUUFGQUFBQUFnQUVBQUlBQVFBR0FBQUFBUUFQQUFBQUFnQUZBQUFBQWdBQUFBTUFCQUFDQUFRQUF3XFxcbkFGQUFFQUFRQUJBQWNBQUFBSEFBSUFBQUFBQUFZQUFBQUFBQUlBQUFBQUFBQUFBQUFEQUFBQUF3QUFBQUVBQWdBSEFBRUFCd0FEQUFFQVxcXG5BQUFDQUFJQUFBQUZBQUFBQXdBQUFBQUFBZ0FCQUFFQUFRQUNBQUlBQWdBQUFBRUFCQUFDQUFFQUFnQURBQUFBQWdBQ0FBUUFBZ0FCQUFcXFxuSUFBZ0FBQUFBQUFRQUFBQUlBQUFBSEFBRUFBQUFCQUFRQUF3QURBQUVBQlFBQkFBQUFBQUFEQUFBQUFRQUdBQUVBQUFBQ0FBMEFBUUFBXFxcbkFBQUFCQUFBQUE4QUFnQUFBQW9BQWdBQkFBQUFBUUFBQUFRQUFnQUFBQU1BQUFBQ0FBQUFCd0FDQUFFQUFBQUFBQU1BQUFBRUFBQUFBQVxcXG5BTEFBQUFBQUFLQUFVQUNRQUJBQUFBQXdBQkFBQUFEQUFBQUFBQUFBQUFBQUFBQVFBQUFBSUFBUUFDQUFBQUFRQURBQUlBQUFBSEFBQUFcXFxuQUFBREFBQUFBQUFHQUFJQUFBQUFBQVlBQUFBQUFBUUFBZ0FCQUFFQUFBQUhBQUlBQkFBQkFBVUFBQUFBQUFFQUFnQUFBQUlBQXdBSUFBXFxcbkVBQmdBQ0FBRUFBUUFBQUFNQUJRQUFBQUlBQVFBQkFBTUFBQUFEQUFjQUFRQUFBQUVBQUFBQUFBQUFBd0FBQUFFQUFRQUJBQUVBQmdBRlxcXG5BQUFBQlFBRUFBQUFBQUFEQUFFQUFnQUFBQUFBQWdBQUFBSUFBZ0FBQUFJQUFBQUVBQUVBQUFBQ0FBQUFCQUFCQUFFQUJBQUNBQUVBQUFcXFxuQUJBQUlBQVFBREFBQUFBQUFCQUFBQUN3QUNBQUFBQUFBREFBTUFCUUFCQUFFQUFBQUJBQUlBQVFBQUFBQUFBQUFJQUFFQUJBQURBQUFBXFxcbkJ3QUJBQU1BQVFBQUFBSUFBd0FEQUFFQUFBQUJBQUVBQVFBQUFBSUFBQUFCQUFFQUFRQUVBQUlBQlFBQUFBRUFBUUFBQUFFQUFnQUFBQVxcXG5BQUFBQUFBQU1BQVFBQ0FBRUFBd0FCQUFBQUJRQUNBQVFBQUFBREFBQUFBQUFCQUFNQUJ3QUFBQVlBQkFBQUFBRUFBZ0FDQUFNQUJRQUFcXFxuQUFnQUF3QURBQUlBQVFBSEFBSUFBUUFCQUFFQUFRQUFBQWdBQUFBQkFBTUFBQUFDQUFFQUFBQUJBQUlBQUFBQUFBWUFCd0FCQUFBQUF3XFxcbkFBQUFBQUFBQUJBQUlBQUFBQUFBRUFBUUFCQUFBQUFRQUVBQUlBQUFBQUFBRUFBQUFBQUFBQUJRQUNBQU1BQVFBQ0FBQUFCZ0FCQUFBQVxcXG5BUUFBQUFBQUFBQUFBQUlBQUFBQ0FBTUFBQUFDQUFjQUFRQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFRQUJBQUFBQUFBQ0FBQUFBUUFBQUFcXFxuUUFBZ0FBQUJFQUJRQUVBQUFBQkFBQUFBQUFBZ0FBQUFjQUFBQUJBQUFBQUFBQkFBVUFBUUFDQUFJQURnQUFBQUFBQWdBQkFBQUFBUUFBXFxcbkFBTUFBUUFDQUFFQUFBQUtBQUVBQkFBQUFBVUFBUUFCQUFFQUFnQUJBQUVBQVFBQUFBQUFBUUFJQUFFQUFRQUFBQUVBQUFBQUFBQUFBQVxcXG5BQkFBTUFBUUFQQUFFQUFnQUJBQUVBQUFBQUFBSUFBUUFBQUFBQUF3QUFBQUVBQUFBQUFBRUFBQUFGQUFjQUFnQUNBQVlBQUFBQkFBQUFcXFxuQWdBQkFBUUFBQUFDQUFFQUF3QUNBQUlBQVFBQUFBTUFBZ0FFQUFNQUFRQUFBQUVBQUFBQkFBRUFBd0FBQUFFQUFBQUNBQVlBQlFBQkFBXFxcbmtBQUFBREFBRUFBQUFHQUFBQUFBQURBQUFBQVFBQUFBSUFBZ0FBQUFNQUFRQUFBQUVBQUFBQUFBZ0FBUUFDQUFFQUFBQUNBQVFBQVFBQ1xcXG5BQUVBQlFBQUFBRUFBZ0FDQUFFQUFBQUJBQUVBQWdBQkFBQUFBZ0FEQUFFQUFRQURBQUFBQVFBQkFBQUFCUUFBQUFJQUJnQUJBQUFBQkFcXFxuQUFBQUVBQUFBQUFBRUFBZ0FBQUFNQUFBQUJBQUVBQUFBQUFBSUFBQUFDQUFBQUFRQUFBQUFBQUFBQ0FBQUFBQUFCQUFNQUFnQUFBQUFBXFxcbkFBQUJBQUFBQkFBQUFBQUFBUUFCQUFBQUFnQUFBQUlBQVFBQkFBRUFBQUFBQUFBQUFBQUFBQXNBQkFBQUFBRUFBQUFCQUFVQUFBQUJBQVxcXG5FQUFBQUZBQUVBQUFBQ0FBUUFBUUFCQUFJQUFRQUJBQUVBQUFBQUFBQUFBQUFBQUFZQUFBQUNBQU1BQUFBQkFBSUFBd0FBQUFBQUF3QUNcXFxuQUFRQUFBQURBQUFBQUFBQkFBQUFBd0FBQUEwQUFnQUFBQU1BQVFBQUFBQUFBUUFCQUFNQUFBQUJBQUFBQkFBTkFBUUFBUUFHQUFJQUF3XFxcbkFBQUFNQUFRQUFBQUlBQVFBQ0FBQUFBUUFEQUFFQUFnQUFBQUVBQWdBQUFBTUFBUUFCQUFBQUFRQUNBQUVBQXdBQ0FBQUFBQUFCQUFFQVxcXG5BQUFCQUFFQUF3QUVBQUVBQWdBREFBQUFBZ0FEQUFJQUFRQUJBQWNBQWdBQUFBRUFBQUFBQUFJQUFBQUNBQVVBQVFBQkFBQUFBQUFCQUFcXFxuRUFBZ0FBQUFFQUF3QUFBQUVBQWdBQUFBQUFCUUFBQUFJQUFBQUJBQUFBQVFBREFBRUFBQUFBQUFNQUJRQUZBQUFBQVFBREFBRUFBZ0FBXFxcbkFBQUFBd0FDQUFBQUFBQUFBQUFBQkFBQUFBRUFCZ0FBQUFFQUFRQUNBQUVBQUFBQkFBUUFBUUFDQUFFQUNBQUJBQUVBQUFBQUFBUUFBQVxcXG5BQUFBUUFBQUFBQUFNQUFBQUNBQUVBQndBQkFBQUFCZ0FBQUFFQUFBQUFBQUVBQUFBR0FBTUFBZ0FBQUFBQUFBQUFBQVVBQVFBQUFBTUFcXFxuQUFBQkFBQUFBUUFCQUFFQUFRQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFRQUFBQU1BQWdBQUFBQUFBQUFEQUFnQUJ3QUFBQUFBQUFBQ0FBXFxcbkVBQUFBQUFBQUFBQUFDQUFBQUFRQUNBQUFBQVFBQUFBQUFBUUFCQUFJQUF3QUJBQUVBQUFBQ0FBY0FCQUFBQUFBQUJnQUFBQUFBQUFBQVxcXG5BQUVBQUFBQ0FBRUFBQUFDQUFFQUF3QUJBQUlBQUFBQkFBUUFBZ0FDQUFFQUFBQUNBQUFBQUFBQUFBRUFBQUFHQUFnQUJRQUJBQUFBQ0FcXFxuQUFBQVlBQVFBQUFBd0FBd0FGQUFBQUFnQUJBQVVBQVFBQkFBUUFBd0FCQUFFQUJRQUdBQUVBQWdBSEFBTUFBZ0FBQUFBQUFRQUFBQUVBXFxcbkFnQUJBQUVBQVFBQUFBRUFBZ0FDQUFBQUFnQURBQUVBQVFBQUFBRUFBQUFCQUFVQUJRQUNBQUFBQUFBQkFBSUFCQUFCQUFBQUFBQUJBQVxcXG5NQUNBQUJBQVlBQUFBQUFBTUFBUUFCQUFFQUFRQUNBQUVBQUFBRkFBQUFBUUFBQUFVQUFRQUVBQUVBQ0FBQUFBRUFCQUFBQUFBQUFnQUFcXFxuQUFNQUFRQUFBQUVBQWdBQ0FBQUFBZ0FBQUFBQUFRQUFBQVVBQXdBQkFBSUFBd0FCQUF3QUF3QUFBQUVBQUFBQUFBQUFBQUFBQUFNQUFBXFxcbkFCQUFVQUF3QUNBQUVBQUFBREFBSUFBQURsMVFFQWtCSUJBRERVQVFEekVBRUFvUHdBQU1jTEFnQnAxd0VBRWhRQkFGWCtBQURnRGdFQVxcXG5jdjBBQUc0TkF3Q3lBQUFBQmdBQkFEc3pBQUIxQndVQXJ2c0FBQmtLQVFBbjF3RUEwQk1CQUcwa0FBQTlBZ0lBTERNQUFEWUhCQUNhMXdcXFxuRUFReFFCQUlIOUFBQ2JEUU1BQi84QUFLOFBBUUJyMXdFQUZCUUJBTEV2QUFBS0JBRUE3OVFCQUtZUkFRQ1RNUUFBbXdRQkFPejdBQUE5XFxcbkNnTUFFTlFCQU5NUUFRQjNJUUFBRHdJRUFQcjhBQUNBREFJQWp1NEJBRXNWQVFEWS9nQUFkZzhCQUxneUFBQWdCZ0lBZi9zQUFPZ0pBUVxcXG5EMDFRRUFueElCQU9BekFBQXZDUUlBVmVBQkFNd1VBUUNzL3dBQVZCQUJBSm9lQUFEcUFBSUE5LzBBQUlRT0JBQ1QxQUVBVlJFQkFJVWdcXFxuQUFCVUFRRUFTQ0VBQUxFQkFRRHAxQUVBb0JFQkFEelhBUURsRXdFQXFCMEFBTklBQVFDNi9nQUFXQThCQUk3VUFRQlFFUUVBYk80QkFDXFxcbjRWQVFBbzFnRUEweElCQU5IV0FRQjZFd0VBTUNFQUFKMEJBUUJzL3dBQUZCQUJBTFRYQVFCZEZBRUFwQjBBQU00QUFRQmg0QUVBMkJRQlxcXG5BQ1F5QUFBbkJRTUFLVElBQURZRkF3RC8xd0VBcGhRQkFGZldBUUFDRXdFQTZmNEFBSWNQQVFEMk1nQUFld1lCQUJQOEFBQ2NDZ0lBYnRcXFxuUUJBREFSQVFCeUpBQUFSd0lDQUxyV0FRQmpFd0VBQmYwQUFKWU1BZ0RYTXdBQUdBa0NBQmY4QUFDa0NnSUFjQ0VBQUFFQ0FRQWMvUUFBXFxcbnhBd0NBSUl6QUFCTENBSUFaTmNCQUEwVUFRQ1Y3Z0VBVWhVQkFDUXZBQUI5QXdFQTVUSUFBR29HQVFBSjFBRUF6QkFCQUVNZEFBQ2RBQVxcXG5FQWw5VUJBRUlTQVFDQkx3QUEyZ01CQUVyOEFBQUtDd0lBRTljQkFMd1RBUUNoMXdFQVNoUUJBSFQvQUFBY0VBRUFmZjhBQUNVUUFRQ0RcXFxuSkFBQWZnSUVBQ016QUFBWkJ3TUFXZUFCQU5BVUFRQlkxUUVBQXhJQkFEZjhBQURrQ2dJQVpDOEFBTDBEQVFCWS9nQUE0dzRCQU80eUFBXFxcbkJ6QmdFQWF2d0FBRllMQWdCbTFBRUFLQkVCQUg0Z0FBQk5BUUVBVU9BQkFNY1VBUUR0MVFFQW1CSUJBSmY4QUFDd0N3TUFrZGNCQURvVVxcXG5BUUM5MXdFQVpoUUJBRTB4QUFCWUJBRUFxak1BQUtzSUF3QU0vQUFBamdvQ0FFY3ZBQUNnQXdFQU1ESUFBRXNGQXdERy9RQUFaQTREQUJcXFxuVFdBUUMvRWdFQWtUSUFBUElGQVFBeC9nQUF1dzRCQUFiWEFRQ3ZFd0VBZVA0QUFBSVBBZ0JhTWdBQW9BVUNBSVF2QUFEZEF3RUFvZndBXFxcbkFNa0xBZ0M3SkFBQUdBTUJBSlFnQUFCaUFRRUErTlFCQUs4UkFRRCsvQUFBaUF3Q0FJZlVBUUJKRVFFQS9kWUJBS1lUQVFCWjFRRUFCQlxcXG5JQkFIUWdBQUJEQVFFQUVpRUFBSWNCQVFEVi9BQUFNUXdDQUFZdkFBQmZBd0VBdWdjQkFNSVFBUUQwcHdBQWl3a0JBTDhrQUFBY0F3RUFcXFxubk5RQkFGNFJBUUE4MWdFQTV4SUJBS0l5QUFBREJnRUFJUElCQUNRV0FRQVAxZ0VBdWhJQkFOVXlBQUJhQmdFQTdQd0FBR0VNQWdCSi9BXFxcbkFBQ0FzQ0FIRCtBQUQyRGdJQVJTOEFBSjREQVFDNE13QUEwZ2dDQU9JQ0FBQlZBQUVBdWk4QUFCTUVBUURHTWdBQVBBWUNBSWZ1QVFCRlxcXG5GUUVBcy84QUFGc1FBUUJ4K3dBQTJna0JBQXYvQUFDekR3RUFKdjBBQU5nTUFnQmovQUFBUVFzREFERXhBQUE4QkFFQWIvOEFBQmNRQVFcXFxuQzVKQUFBRmdNQkFMRXlBQUFTQmdJQW9QMEFBUElOQXdBdTF3RUExeE1CQUUzV0FRRDRFZ0VBai9zQUFQZ0pBUUE4NEFFQXN4UUJBRG45XFxcbkFBRCtEQUlBaS8wQUFMa05Bd0NhQndFQW94QUJBSlg3QUFEK0NRRUFyd2NCQUxnUUFRQnM4UUVBQ2hZQ0FKUFhBUUE4RkFFQU45UUJBUFxcXG5vUUFRQ0NNZ0FBNHdVQkFMNEFBQUFWQUFNQWZTd0FBRlVEQVFESS9nQUFaZzhCQUpuOEFBQzJDd01BZlRNQUFEOElBZ0NRTWdBQThRVUJcXFxuQUEwdkFBQm1Bd0VBdnRZQkFHY1RBUURHMVFFQWNSSUJBRGovQUFEZ0R3RUFxZjBBQUEwT0F3Q1ExZ0VBT3hNQkFDM1VBUUR3RUFFQUpOXFxcblVCQU5ZUkFRRDFBd0FBYkFBQkFJL1dBUUE2RXdFQXI5VUJBRm9TQVFCZS9RQUFNZzBEQVBmK0FBQ1pEd01BNkRNQUFEOEpBZ0RNMUFFQVxcXG5neEVCQUMvVUFRRHlFQUVBRVA0QUFLME9BUUIrMVFFQUtSSUJBTGNIQVFDL0VBRUFtZFFCQUZzUkFRQVA3Z0VBOHhRQkFKYjhBQUN1Q3dcXFxuSUEwdFFCQUlrUkFRRHAvd0FBaFJBQkFLWC9BQUJORUFFQW1USUFBUG9GQVFERTFRRUFieElCQUZ6K0FBRG5EZ0VBZndFQUFDSUFBUURxXFxcbjF3RUFrUlFCQUxEVUFRQnFFUUVBdnRVQkFHa1NBUURaTXdBQUhna0RBT2N5QUFCc0JnRUE0dFlCQUlzVEFRQ3Qvd0FBVlJBQkFLNzhBQVxcXG5EakN3SUEydndBQURzTUFnQWIvQUFBckFvQ0FHSXZBQUM3QXdFQUNqSUFBTVlFQXdENUF3QUFiUUFCQU1IOUFBQlZEZ01BY2k4QUFNc0RcXFxuQVFCdE1RQUFlQVFCQUNzeUFBQThCUU1BVnlFQUFNa0JBd0JaMWdFQUJCTUJBRHdkQUFDV0FBRUFQak1BQUlNSEJBQitJUUFBSFFJQkFCXFxcbnZ4QVFDcEZRTUFkTzRCQURVVkFRQlkxQUVBR2hFQkFQcjdBQUJuQ2dNQXMvNEFBRkVQQVFCZit3QUF5QWtCQU1rdkFBQWlCQUVBV2pFQVxcXG5BR1VFQVFDcDFBRUFaQkVCQURIOUFBRHVEQUlBT1RFQUFFUUVBUUN3SFFBQTJnQUJBUFBVQVFDcUVRRUF6L3dBQUNVTUFnQ0Erd0FBNlFcXFxua0JBRzc4QUFCZUN3SUFhTmNCQUJFVUFRQzJBZ0FBUkFBQkFEb3pBQUJ4QndRQXlkY0JBSElVQVFBODhRRUE2eFVCQUtMV0FRQk5Fd0VBXFxcbkJpQUFBQmtCQVFCRjFBRUFDQkVCQUdQWEFRQU1GQUVBK3RVQkFLVVNBUUJCTWdBQWZnVURBRXIrQUFEVERnSUFiVElBQUxrRkFRREMxZ1xcXG5FQWF4TUJBSDM5QUFDUERRTUFjRE1BQUNBSUF3QzcxZ0VBWkJNQkFJL1hBUUE0RkFFQTV0UUJBSjBSQVFBUy93QUF1ZzhCQUFYN0FBQ2ZcXFxuQ1FJQUcrNEJBUDhVQVFBSjFnRUF0QklCQUhuK0FBQUVEd0lBOXZzQUFGc0tBd0NBMXdFQUtSUUJBRGo5QUFEOERBSUEzdFFCQUpVUkFRXFxcbkNDTVFBQWpRUUJBRWorQUFEUURnRUFYdjRBQU9rT0FRQWM3Z0VBQUJVQkFCa3pBQUR1QmdZQVB6SUFBSGdGQXdBREx3QUFYQU1CQUdiVlxcXG5BUUFSRWdFQTgvd0FBSEFNQXdDQjFRRUFMQklCQU92V0FRQ1VFd0VBUitBQkFMNFVBUUFCTXdBQWl3WUVBS2d2QUFBQkJBRUFteVFBQU1cXFxuSUNBd0J3L3dBQUdCQUJBQm55QVFBZEZnRUFRZFFCQUFRUkFRRHAvQUFBV3d3Q0FNMHlBQUJOQmdNQURkY0JBTFlUQVFCaC93QUFDUkFCXFxcbkFKWWtBQUN6QWdNQUZ0UUJBTmtRQVFDUU13QUFhZ2dDQUZiWEFRRC9Fd0VBU3VBQkFNRVVBUUJyL0FBQVdBc0NBRkQ4QUFBV0N3SUFjdFxcXG5VQkFCMFNBUURPL3dBQWNSQUJBQkl2QUFCckF3RUFsZjhBQUQwUUFRQ1ord0FBQWdvQkFFYi9BQUR1RHdFQXQvMEFBRGNPQXdCV0lRQUFcXFxueGdFREFGTC9BQUQ2RHdFQVFmSUJBRU1XQXdBUDFBRUEwaEFCQUVEVUFRQURFUUVBOFFNQUFHa0FBUUI0SUFBQVJ3RUJBR3pXQVFBWEV3XFxcbkVBUHZFQkFPMFZBUUFrL0FBQXZnb0NBSmIrQUFBMER3RUFZTlFCQUNJUkFRREoxZ0VBY2hNQkFEQXpBQUJKQndNQWxTOEFBTzREQVFBZVxcXG4xd0VBeHhNQkFCN1ZBUURRRVFFQWdnY0JBSXdRQVFBbS9BQUF3Z29DQUI3OUFBRElEQUlBUlNFQUFLNEJBUUI3TWdBQTFBVUNBTHo4QUFcXFxuRC9Dd0lBT2Y4QUFPRVBBUUNjL0FBQXZ3c0NBR0wrQUFEdERnRUFITlFCQU44UUFRQ1IxZ0VBUEJNQkFJalVBUUJLRVFFQVQrNEJBQjRWXFxcbkFRRGsxUUVBanhJQkFEM2dBUUMwRkFFQVZmMEFBQmNOQXdDOS9BQUFBUXdDQUpjeUFBRDRCUUVBNE5VQkFJc1NBUUNTTVFBQW1nUUJBTlxcXG5JeUFBQlhCZ0VBbmk4QUFQY0RBUUFhL1FBQXdBd0NBT1l5QUFCckJnRUFyKzRCQUdVVkFRRFdKQUFBTXdNQkFQVCtBQUNTRHdFQWN1NEJcXFxuQURRVkFRRFQxUUVBZmhJQkFBejlBQUNrREFJQWE5WUJBQllUQVFCYS93QUFBaEFCQUZmK0FBRGlEZ0VBYXZzQUFOTUpBUUJNMUFFQUR4XFxcbkVCQUhRa0FBQkxBZ01Bcy8wQUFDc09Bd0NTK3dBQSt3a0JBSmdnQUFCbUFRRUFxZFVCQUZRU0FRQzJKQUFBRXdNQkFDYldBUURSRWdFQVxcXG5hYXNBQUpJSkFRQXcxZ0VBMnhJQkFHejdBQURWQ1FFQWI5Y0JBQmdVQVFCVk1RQUFZQVFCQUpmK0FBQTFEd0VBdXgwQUFPVUFBUUM5TXdcXFxuQUEzQWdDQUV6VkFRRDRFUUVBSkNFQUFKZ0JBUURTTXdBQUN3a0RBRFl5QUFCZEJRTUFFdkVCQUk0VkF3QTNIUUFBa2dBQkFESUJBQUFZXFxcbkFBSUFuaklBQVA4RkFRQmExZ0VBQlJNQkFQajlBQUNJRGdRQWhRTUFBRndBQXdCeEx3QUF5Z01CQUdIdUFRQW5GUUVBUGY0QUFNY09BUVxcXG5CVE1RQUFYZ1FCQU16OEFBQWZEQUlBQXpJQUFMRUVBd0EvL2dBQXlRNEJBRkRWQVFEOEVRRUE2ZFlCQUpJVEFRQjExZ0VBSUJNQkFQUURcXFxuQUFCckFBRUFQdFVCQU84UkFRQmNNUUFBWndRQkFLd3lBQUFOQmdFQXpTUUFBQ29EQVFEbS93QUFneEFCQUdZeEFBQnhCQUVBYmU0QkFDXFxcbjhWQVFEVEpBQUFNQU1CQU83L0FBQ0tFQUVBZDljQkFDQVVBUUJWL3dBQS9ROEJBTjdWQVFDSkVnRUFrOVVCQUQ0U0FRQXI3Z0VBQ2hVQlxcXG5BSWJVQVFCSUVRRUFjZjBBQUdzTkF3RDUvZ0FBbnc4REFHb3lBQUMyQlFFQTFqTUFBQlVKQXdCRk13QUFtd2NEQU5rQ0FBQkpBQUlBNVBcXFxuc0FBREVLQVFCSk1RQUFWQVFCQUEzVUFRRFFFQUVBTmZJQkFEa1dBUURlMWdFQWh4TUJBSGNHQUFCMEFBSUFWdFlCQUFFVEFRQTlIUUFBXFxcbmx3QUJBUERXQVFDWkV3RUFOUDRBQUw0T0FRQ2MxZ0VBUnhNQkFIYitBQUQrRGdJQXJ4MEFBTmtBQVFERkFRQUFKZ0FEQURuWEFRRGlFd1xcXG5FQTVETUFBRGNKQWdEdDFnRUFsaE1CQU5qV0FRQ0JFd0VBZ2Z3QUFJUUxBZ0ROL2dBQWF3OEJBQ2JYQVFEUEV3RUFVZUFCQU1nVUFRQXNcXFxuL0FBQXpnb0NBUFBXQVFDY0V3RUFPL3dBQU93S0FnRG4vQUFBVnd3Q0FMRXpBQURFQ0FJQVlTRUFBT1FCQWdDSi9nQUFJdzhDQUQvV0FRXFxcbkRxRWdFQXlkVUJBSFFTQVFCbU1nQUFzZ1VCQUFEOUFBQ01EQUlBVEIwQUFLWUFBUURqMXdFQWloUUJBQ3ZXQVFEV0VnRUFydjBBQUJ3T1xcXG5Bd0NjTXdBQWhnZ0NBSXo4QUFDYUN3SUFTZFFCQUF3UkFRRGkvd0FBZmhBQkFDOGlBQUFuQWdJQVl2d0FBRDRMQXdBSzF3RUFzeE1CQUxcXFxuTXZBQUFNQkFFQU9mSUJBRDBXQVFEY01nQUFZUVlCQUszWEFRQldGQUVBQXpNQUFKUUdBd0NMSkFBQW1BSUNBR2d4QUFCekJBRUE4UDBBXFxcbkFHb09Bd0NML3dBQU14QUJBTUhWQVFCc0VnRUFEeklBQU5ZRUJBQkY4UUVBOUJVQkFCanhBUUNnRlFNQW9QOEFBRWdRQVFCYU13QUE1Z1xcXG5jQ0FETFdBUURkRWdFQTZ6TUFBRWNKQXdBZ0lRQUFrUUVDQU5va0FBQTNBd0VBS1A4QUFOQVBBUUNxL2dBQVNBOEJBSzB2QUFBR0JBRUFcXFxucUNBQUFHc0JBZ0R6TXdBQVh3a0RBT0l5QUFCbkJnRUFHRE1BQU9vR0JBQTE3Z0VBRXhVQkFNM1ZBUUI0RWdFQVh6SUFBS29GQWdCbE13XFxcbkFBL3djREFFOGRBQUNvQUFFQTV5UUFBRVFEQVFCMi9BQUFiZ3NDQU4zK0FBQjdEd0VBeXZ3QUFCc01BZ0NMSUFBQVdnRUJBRTd4QVFBQlxcXG5GZ01BaWU0QkFFY1ZBUUI5SVFBQUhBSUJBSERYQVFBWkZBRUF1TlFCQUhJUkFRQ2wvQUFBMFFzQ0FBSFhBUUNxRXdFQVV6SUFBSklGQWdcXFxuQ08vZ0FBTEE4QkFGYjhBQUFpQ3dJQWFkUUJBQ3NSQVFDVU13QUFkUWdEQU9MN0FBQXZDZ0VBU0NBQUFEZ0JBZ0Q1L0FBQWZnd0NBTE1PXFxcbkFBQjZBQUlBeHk4QUFDQUVBUUIyTXdBQUx3Z0NBSVFIQVFDT0VBRUFyZFlCQUZZVEFRQ0Evd0FBS0JBQkFKalVBUUJhRVFFQVFmRUJBUFxcXG5BVkFRQ2xNd0FBblFnQ0FJUFdBUUF1RXdFQXV2MEFBRUFPQXdBUUlRQUFoUUVCQU56V0FRQ0ZFd0VBdjlRQkFIY1JBUURXMXdFQWZSUUJcXFxuQUNieUFRQXFGZ0VBRGRZQkFMZ1NBUUFsSUFBQUlnRUNBRWZ5QVFCVkZnTUFrUDRBQUM0UEFRQU5Nd0FBdVFZRUFGcjdBQUREQ1FFQXB5XFxcbjhBQUFBRUFRQzdNd0FBMkFnQ0FBdlhBUUMwRXdFQTNRSUFBRkVBQWdDVjF3RUFQaFFCQUlna0FBQ1NBZ0lBVFB3QUFBNExBZ0NaMVFFQVxcXG5SQklCQU9QOEFBQlBEQUlBdTlVQkFHWVNBUUNNTHdBQTVRTUJBUDdYQVFDbEZBRUFMTlFCQU84UUFRQjQvd0FBSUJBQkFIcldBUUFsRXdcXFxuRUFMTmNCQU5VVEFRQm8vd0FBRUJBQkFIb3hBQUNGQkFFQUQ5Y0JBTGdUQVFESk1nQUFRZ1lEQU4wT0FBQitBQUlBOGRVQkFKd1NBUURDXFxcbjFBRUFlaEVCQUNUL0FBRE1Ed0VBbXY4QUFFSVFBUUJ4MWdFQUhCTUJBTS8vQUFCeUVBRUFDeThBQUdRREFRRE1NZ0FBU3dZQ0FQcldBUVxcXG5DakV3RUFGdFlCQU1FU0FRQVYrd0FBcHdrQ0FPZitBQUNGRHdFQWx2OEFBRDRRQVFEU0F3QUFZUUFCQU5uVkFRQ0VFZ0VBL1I4QUFBOEJcXFxuQWdDeCt3QUFIUW9DQUtQOEFBRE5Dd0lBZnk4QUFOZ0RBUUJDTHdBQW13TUJBQ2Y4QUFERUNnSUFwKzRCQUY0VkFRQXRJUUFBbXdFQkFEXFxcblVkQUFDUUFBRUFYT0FCQU5NVUFRQ3kvQUFBNndzQ0FINzhBQUIrQ3dJQW5TOEFBUFlEQVFENU13QUFjUWtEQUFiV0FRQ3hFZ0VBVzlVQlxcXG5BQVlTQVFBdjFnRUEyaElCQUo4dkFBRDRBd0VBdkIwQUFPWUFBUUE3L3dBQTR3OEJBTmd5QUFCZEJnRUFhTlVCQUJNU0FRRGxNd0FBT1FcXFxua0NBSUl2QUFEYkF3RUFwLzRBQUVVUEFRQmQxUUVBQ0JJQkFLelVBUUJuRVFFQXNpUUFBQWNEQXdBMy9RQUErZ3dDQUlBdkFBRFpBd0VBXFxcbjM5UUJBSllSQVFCeit3QUEzQWtCQU1mOUFBQm5EZ01BU0IwQUFLSUFBUUN3K3dBQUd3b0NBQVRYQVFDdEV3RUFnZFFCQUVNUkFRQmJMd1xcXG5BQXRBTUJBRFRnQVFDckZBRUFzZ0lBQUVBQUFRQWQxQUVBNEJBQkFNNzhBQUFqREFJQXFETUFBS1VJQkFEazFnRUFqUk1CQU1mWEFRQndcXFxuRkFFQXRqSUFBQndHQWdBWU1nQUErZ1FFQVBuOUFBQ01EZ01BQi8wQUFKb01BZ0JwL3dBQUVSQUJBSll4QUFDZUJBRUE3TmNCQUpNVUFRXFxcbkRlL0FBQVF3d0NBSFF5QUFER0JRSUFFZjBBQUs0TUFnQzUvUUFBUFE0REFNMzhBQUFoREFJQW9pOEFBUHNEQVFBaCt3QUFyZ2tCQUFIVVxcXG5BUURFRUFFQURlNEJBUEVVQVFDTk13QUFaQWdDQURiOUFBRDREQUlBUlB3QUFQNEtBZ0J6MVFFQUhoSUJBSHd5QUFEV0JRVUFoOWNCQURcXFxuQVVBUUFkTHdBQWRnTUJBTXJVQVFDQkVRRUFNaThBQUlzREFRQkQxQUVBQmhFQkFNWCtBQUJqRHdFQU4vSUJBRHNXQVFDZit3QUFDQW9CXFxcbkFDNHpBQUEvQndZQXpDUUFBQ2tEQVFCaUlRQUE1Z0VEQUxiL0FBQmVFQUVBbS9zQUFBUUtBUURPSHdBQStnQURBSTR4QUFDWkJBRUEralxcXG5JQUFIOEdBUURiTWdBQVlBWUJBT1grQUFDRER3RUFRZjRBQU1zT0FRRGYxUUVBaWhJQkFQWXpBQUJvQ1FNQWhkVUJBREFTQVFDUy9RQUFcXFxueUEwREFGc2RBQUMwQUFFQWlnY0JBSk1RQVFCNk13QUFPUWdDQU1QOUFBQmJEZ01BamdjQkFKY1FBUUJqL3dBQUN4QUJBTi8rQUFCOUR3XFxcbkVBWFAwQUFDd05Bd0JENEFFQXVoUUJBSHZVQVFBOUVRRUFHUDRBQUxVT0FRREYxd0VBYmhRQkFOcjdBQUFtQ2dFQW5kVUJBRWdTQVFCWVxcXG40QUVBenhRQkFHb2hBQUQ0QVFJQW1OY0JBRUVVQVFBMzdnRUFGUlVCQUNMOEFBQzZDZ0lBY1RFQUFId0VBUUJtL1FBQVNnMERBS0x1QVFcXFxuQmFGUUVBaVBzQUFQRUpBUUMwMWdFQVhSTUJBT015QUFCb0JnRUFqaUFBQUYwQkFRQWpNZ0FBSkFVREFEY3hBQUJDQkFFQUxDSUFBQ0lDXFxcbkFnQ0xMd0FBNUFNQkFCcnhBUUNtRlFNQVQvd0FBQlFMQWdBcjFRRUEzUkVCQUtYN0FBQVBDZ0lBWmRRQkFDY1JBUUJRL3dBQStBOEJBQ1xcXG52L0FBRFREd0VBWVB3QUFEZ0xBd0J1TWdBQXVnVUNBSGo3QUFEaENRRUFnQ0FBQUU4QkFRQTMvZ0FBd1E0QkFFUHlBUUJKRmdNQUFmc0FcXFxuQUpVSkFnQ2hNZ0FBQWdZQkFObldBUUNDRXdFQUJ5QUFBQm9CQVFBYU1nQUFBZ1VFQUREWEFRRFpFd0VBZXZzQUFPTUpBUUIxTVFBQWdBXFxcblFCQURZaEFBQ2lBUUVBVlRNQUFOY0hBZ0MxTWdBQUdnWUNBRHYrQUFERkRnRUFLdjBBQU9BTUFnQ3RKQUFBK0FJREFISFVBUUF6RVFFQVxcXG5jaklBQU1JRkFnQjcxd0VBSkJRQkFHajlBQUJRRFFNQVhkWUJBQWdUQVFBNDhRRUE1eFVCQUdiZ0FRRGRGQUVBZkNFQUFCc0NBUUNHMVFcXFxuRUFNUklCQUlYWEFRQXVGQUVBUGRjQkFPWVRBUUJUL1FBQUVRMERBSXdnQUFCYkFRRUFKak1BQUNNSEF3QVgxUUVBeWhFQkFHL3VBUUF4XFxcbkZRRUFzUHdBQU9jTEFnQVovZ0FBdGc0REFDWDdBQUN5Q1FFQVBQOEFBT1FQQVFCLy9BQUFnQXNDQUlEV0FRQXJFd0VBUi84QUFPOFBBUVxcXG5CaE13QUE5QWNDQU9mVkFRQ1NFZ0VBTWVBQkFLZ1VBUUNSQndFQW1oQUJBQ1h4QVFESEZRTUFGdGNCQUw4VEFRQVIvZ0FBcmc0QkFNdlhcXFxuQVFCMEZBRUFhakVBQUhVRUFRQnE4UUVBQmhZQ0FLL1hBUUJZRkFFQUsvd0FBTXdLQWdBZS93QUF4ZzhCQUtZdkFBRC9Bd0VBYlAwQUFGXFxcbndOQXdBV0lRQUFpZ0VDQUNjekFBQW1Cd0lBSWZ3QUFMZ0tBZ0F3SFFBQWl3QUJBUDdXQVFDbkV3RUFQUHdBQU80S0FnRDMrd0FBWGdvRFxcXG5BRzdXQVFBWkV3RUFOdjRBQU1BT0FRQUExZ0VBcXhJQkFNUXlBQUE0QmdJQTd2d0FBR1VNQWdDby9nQUFSZzhCQU0vWEFRQjJGQUVBWGVcXFxuQUJBTlFVQVFDQzFnRUFMUk1CQUpna0FBQzVBZ01BM1A0QUFIb1BBUURzMWdFQWxSTUJBQjR2QUFCM0F3RUFuZFlCQUVnVEFRQlYvQUFBXFxcbklBc0NBSmZ1QVFCVUZRRUF2OVVCQUdvU0FRQi9JQUFBVGdFQkFMVHVBUUJxRlFFQU9Qd0FBT1lLQWdDbkhRQUEwUUFCQUFYWEFRQ3VFd1xcXG5FQUlOY0JBTWtUQVFCYklRQUExUUVEQVB6VUFRQ3pFUUVBUCtBQkFMWVVBUUNhMVFFQVJSSUJBUDM4QUFDR0RBSUFnUWNCQUlzUUFRQ2NcXFxuTHdBQTlRTUJBTFBWQVFCZUVnRUFwTmNCQUUwVUFRQ25Cd0VBc0JBQkFKRDdBQUQ1Q1FFQWtOUUJBRklSQVFCRDFRRUE4eEVCQUdvdkFBXFxcbkREQXdFQVpqTUFBQUlJQXdBVTFBRUExeEFCQURQV0FRRGVFZ0VBWHpNQUFQQUhBZ0NvTWdBQUNRWUJBTTh6QUFBRkNRSUEvUDRBQUtjUFxcXG5BZ0NqMWdFQVRoTUJBTHIvQUFCaUVBRUFqUWNCQUpZUUFRREUxZ0VBYlJNQkFFVGdBUUM3RkFFQXF0UUJBR1VSQVFDVjFRRUFRQklCQURcXFxuRXpBQUJNQndNQTk5Y0JBSjRVQVFENzFnRUFwQk1CQUVrZEFBQ2pBQUVBbnRRQkFGOFJBUUFSMUFFQTFCQUJBQWNoQUFCOEFRRUFYeUFBXFxcbkFFQUJBUUE0NEFFQXJ4UUJBRS83QUFDM0NRSUFtdTRCQUZjVkFRQTgxQUVBL3hBQkFLMHlBQUFPQmdFQWFOUUJBQ29SQVFDRU1RQUFqd1xcXG5RQkFHSXhBQUJ0QkFFQWFTOEFBTUlEQVFDQi9nQUFFdzhDQUFYdUFRRHBGQUVBcGY0QUFFTVBBUUM2TWdBQUpBWUNBUEF5QUFCMUJnRUFcXFxuMmRjQkFJQVVBUURBMUFFQWVCRUJBS1ArQUFCQkR3RUFIVElBQUE0RkJ3REgxZ0VBY0JNQkFNOGZBQUQ5QUFNQXZ6TUFBT0FJQWdBWTF3XFxcbkVBd1JNQkFKQUhBUUNaRUFFQUFkVUJBTGdSQVFBUTFnRUF1eElCQU9BeUFBQmxCZ0VBSWYwQUFNNE1BZ0RiMWdFQWhCTUJBRDN4QVFEc1xcXG5GUUVBT0RBQUFERUVBUUNuTXdBQW9nZ0RBQ1g5QUFEV0RBSUE0ZGNCQUlnVUFRQzkvd0FBWlJBQkFJenVBUUJKRlFFQUNPNEJBT3dVQVFcXFxuRERNd0FBNmdnQ0FCclZBUURORVFFQXZ6SUFBQzRHQWdDZUpBQUF5d0lEQU1nekFBRDNDQUlBRVBJQkFCTVdBUUI1SVFBQUZRSUJBQ0l5XFxcbkFBQWhCUU1BZ3RjQkFDc1VBUUNKQndFQWtoQUJBQVV6QUFDY0JnTUFPdjRBQU1RT0FRQXgxZ0VBM0JJQkFKa3hBQUNoQkFFQTFQOEFBSFxcXG5VUUFRQ2NJQUFBYWdFQkFFY3lBQUNLQlFFQWlQd0FBSklMQWdDNS93QUFZUkFCQUd6VUFRQXVFUUVBTnRZQkFPRVNBUUJmTVFBQWFnUUJcXFxuQUl2N0FBRDBDUUVBdFFBQUFBb0FBUUFaMUFFQTNCQUJBTlgrQUFCekR3RUF5dFlCQUhNVEFRQ2VNd0FBaWdnQ0FFSFdBUURzRWdFQXI5XFxcbllCQUZnVEFRQ0lNZ0FBNlFVQkFGUWhBQURBQVFNQWpmNEFBQ3NQQVFBTDFBRUF6aEFCQUFmV0FRQ3lFZ0VBSnY4QUFNNFBBUUJZMXdFQVxcXG5BUlFCQUU3OEFBQVNDd0lBWkRNQUFQd0hBd0QxMUFFQXJCRUJBTVl2QUFBZkJBRUEzTlVCQUljU0FRQmUvQUFBTWdzREFEYi9BQURlRHdcXFxuRUF4U1FBQUNJREFRQ0gxUUVBTWhJQkFKRWdBQUJmQVFFQVVOY0JBUGtUQVFDd0pBQUFBUU1EQUNMeEFRQytGUU1BT1RNQUFHNEhBd0JVXFxcbjRBRUF5eFFCQUJIVkFRREZFUUVBTlRNQUFGOEhBd0NxL3dBQVVoQUJBRUR5QVFCQUZnTUFFdFlCQUwwU0FRQlQxUUVBL2hFQkFLclZBUVxcXG5CVkVnRUFxZ0FBQUFNQUFRQmkvd0FBQ2hBQkFONGtBQUE3QXdFQTR0Y0JBSWtVQVFCcS9nQUE5QTRCQUc4dkFBRElBd0VBV2YwQUFDTU5cXFxuQXdEeEFRQUFPQUFDQURNZEFBQ09BQUVBandjQkFKZ1FBUUEyMVFFQTZCRUJBQW92QUFCakF3RUFSRElBQUljRkFRQnVKQUFBUHdJQ0FJXFxcblg4QUFDTUN3SUE4eklBQUhnR0FRRDArd0VBWVJZQkFFUFdBUUR1RWdFQW9Qc0FBQWtLQVFDeEhRQUEyd0FCQUZmVUFRQVpFUUVBMTljQlxcXG5BSDRVQVFCeU1RQUFmUVFCQUxJekFBREdDQUlBcWdjQkFMTVFBUUFXTHdBQWJ3TUJBREhYQVFEYUV3RUFKZGNCQU00VEFRRDArd0FBVlFcXFxub0RBUFV6QUFCbENRTUFuVE1BQUlnSUFnREUvQUFBRHd3Q0FCejhBQUN1Q2dJQUVmOEFBTGtQQVFCdDF3RUFGaFFCQUJ6V0FRREhFZ0VBXFxcbk05Y0JBTndUQVFESDFRRUFjaElCQUlIL0FBQXBFQUVBSWlFQUFKWUJBZ0N1MUFFQWFCRUJBQjN5QVFBaEZnRUFmOVFCQUVFUkFRQlgxd1xcXG5FQUFCUUJBTHdBQUFBUEFBTUFJZFlCQU13U0FRRGsvd0FBZ1JBQkFNbitBQUJuRHdFQWhPNEJBRUlWQVFDWS9RQUEyZzBEQUdFeEFBQnNcXFxuQkFFQVB5RUFBS3dCQVFDZUhRQUF5QUFCQUJuV0FRREVFZ0VBMXRRQkFJMFJBUURBMVFFQWF4SUJBSHN2QUFEVUF3RUFDKzRCQU84VUFRXFxcbkJHMXdFQTd4TUJBT3Y4QUFCZkRBSUE4LzRBQUpFUEFRRDAvQUFBY3d3REFIcitBQUFHRHdJQVhDRUFBTmdCQXdEOTFBRUF0QkVCQUtmN1xcXG5BQUFTQ2dFQVBQMEFBQVFOQWdCcTFBRUFMQkVCQUdNaEFBRHBBUUlBWk80QkFDa1ZBUUNTMWdFQVBSTUJBRWpXQVFEekVnRUFndFFCQUVcXFxuUVJBUUIyMVFFQUlSSUJBQmZYQVFEQUV3RUFNUDRBQUxrT0FnQXk4Z0VBTmhZQkFIZjhBQUJ3Q3dJQWFOWUJBQk1UQVFCR0lRQUFyd0VCXFxcbkFLZ0FBQUFCQUFJQWsvc0FBUHdKQVFEdjFRRUFtaElCQVAzN0FBQnVDZ0VBcXdjQkFMUVFBUUJqNEFFQTJoUUJBSERVQVFBeUVRRUFWalxcXG5NQUFOa0hCZ0RGMUFFQWZCRUJBT2Y3QUFBMENnRUE2aVFBQUVjREFRQVoxUUVBekJFQkFGVFdBUUQvRWdFQWJTOEFBTVlEQVFBWTFRRUFcXFxueXhFQkFEbldBUURrRWdFQVV2MEFBQTROQXdDZjF3RUFTQlFCQUhYWEFRQWVGQUVBY1RNQUFDTUlBd0JJNEFFQXZ4UUJBTTdYQVFCMUZBXFxcbkVBWmY4QUFBMFFBUUNnTXdBQWp3Z0RBRDR4QUFCSkJBRUFDdFlCQUxVU0FRQ1IxUUVBUEJJQkFFM2dBUURFRkFFQXhkVUJBSEFTQVFCNlxcXG5NZ0FBMGdVQ0FHZ2RBQURCQUFFQWNmOEFBQmtRQVFBdTFBRUE4UkFCQUhyWEFRQWpGQUVBUlA0QUFNNE9BUUF5OFFFQTRSVUJBUGJWQVFcXFxuQ2hFZ0VBZk5jQkFDVVVBUUJ2MWdFQUdoTUJBUFhYQVFDY0ZBRUExL3dBQURVTUFnQ0lNUUFBa3dRQkFLRFhBUUJKRkFFQTVmc0FBRElLXFxcbkFRQ04vd0FBTlJBQkFLRUhBUUNxRUFFQVR0UUJBQkVSQVFBbzFRRUEyaEVCQU1RdkFBQWRCQUVBSkNBQUFDRUJBUUQ4RUFBQWh3QUJBTFxcXG5EOUFBQWlEZ01BdFB3QUFPOExBZ0FNTXdBQXRRWUVBR3N4QUFCMkJBRUFFZkVCQUlzVkF3QzRMd0FBRVFRQkFJVXpBQUJSQ0FJQXFSMEFcXFxuQU5NQUFRQTYxd0VBNHhNQkFKTXlBQUQwQlFFQXo5UUJBSVlSQVFEV01nQUFXd1lCQUlzekFBQmdDQUlBU2pFQUFGVUVBUUJOOFFFQS94XFxcblVDQUpzZUFBRHNBQUlBU3RZQkFQVVNBUURhMXdFQWdSUUJBQmY3QUFDckNRSUFZZGNCQUFvVUFRQ1hJQUFBWlFFQkFNQWZBQUR5QUFJQVxcXG40ek1BQURVSkFnQ3oxZ0VBWEJNQkFMVFZBUUJmRWdFQUYvMEFBTG9NQWdBcS9BQUF5Z29DQUdyWEFRQVRGQUVBaXRZQkFEVVRBUUE1NEFcXFxuRUFzQlFCQU9uN0FBQTJDZ0VBQi9FQkFJQVZBZ0NrQndFQXJSQUJBRzBoQUFEK0FRRUFraUFBQUdBQkFRQTkvd0FBNVE4QkFMTUhBUUM3XFxcbkVBRUFVUzhBQUtvREFRQlovQUFBS0FzQ0FDblZBUURiRVFFQU56SUFBR0FGQXdBVk1nQUE3Z1FFQUdVa0FBQXhBZ0VBTmRjQkFONFRBUVxcXG5DNUJ3RUF3UkFCQU5QK0FBQnhEd0VBUENBQUFESUJBZ0NiTHdBQTlBTUJBR1l2QUFDL0F3RUFkZjBBQUhjTkF3QTAxZ0VBM3hJQkFETU9cXFxuQUFCNEFBSUF1aDBBQU9RQUFRQmEvUUFBSmcwREFKUWtBQUN0QWdNQVhURUFBR2dFQVFBSjFRRUF2eEVCQUpmWEFRQkFGQUVBVHpNQUFNXFxcbklIQXdENzF3RUFvaFFCQUdNa0FBQXZBZ0VBQXY4QUFLb1BBUUJoK3dBQXlna0JBT3d6QUFCS0NRTUE5OVVCQUtJU0FRQ3VNd0FBdHdnRlxcXG5BSW44QUFDVUN3SUFPTmNCQU9FVEFRQXc0QUVBcHhRQkFDcnlBUUF1RmdFQVN5OEFBS1FEQVFBQ013QUFqd1lGQUUwZEFBQ25BQUVBMTlcXFxuUUJBSTRSQVFCTi9BQUFFQXNDQU9YVUFRQ2NFUUVBUXRVQkFQSVJBUUEyTXdBQVlnY0ZBTFl2QUFBUEJBRUFvUzhBQVBvREFRQWExd0VBXFxcbnd4TUJBS1Q4QUFEUEN3SUFHTllCQU1NU0FRREMvQUFBQ3d3Q0FLd2RBQURXQUFFQXVQd0FBUGNMQWdCOCt3QUE1UWtCQUg4eEFBQ0tCQVxcXG5FQTROY0JBSWNVQVFERy93QUFheEFCQUZBeEFBQmJCQUVBZGpJQUFNb0ZBZ0NOTWdBQTdnVUJBTHd5QUFBb0JnSUFNd0VBQUJvQUFnQkZcXFxuOGdFQVR4WURBRDRoQUFDckFRRUFadnNBQU04SkFRQ0pMd0FBNGdNQkFDN3hBUURkRlFJQThkUUJBS2dSQVFDUi9BQUFwQXNDQUZQL0FBXFxcbkQ3RHdFQUJqTUFBSjhHQXdCekpBQUFTUUlDQUs0ZEFBRFlBQUVBclBzQUFCY0tBUUMwTXdBQXlnZ0NBQlF5QUFEcUJBUUF3aklBQURRR1xcXG5BZ0RLSkFBQUp3TUJBRFBWQVFEbEVRRUErRE1BQUc0SkF3QkUvd0FBN0E4QkFQZlVBUUN1RVFFQWpBY0JBSlVRQVFESy93QUFiUkFCQUJcXFxuZitBQUMwRGdFQTRmc0FBQzRLQVFBeS9BQUEyZ29DQUNYV0FRRFFFZ0VBUUFFQUFCNEFBZ0NyL2dBQVNROEJBTlBXQVFCOEV3RUFxTmNCXFxcbkFGRVVBUUJkK3dBQXhna0JBQ0F5QUFBYkJRTUFwU1FBQU9BQ0F3Q3oxQUVBYlJFQkFLMEhBUUMyRUFFQW1UTUFBSUFJQWdBMkx3QUFqd1xcXG5NQkFIVDhBQUJxQ3dJQXBkVUJBRkFTQVFEREx3QUFIQVFCQUd6Z0FRRGpGQUVBMlRJQUFGNEdBUUJFMVFFQTlCRUJBQ0V5QUFBZUJRTUFcXFxuRXRVQkFNWVJBUURPL2dBQWJBOEJBUGY4QUFCNkRBSUFndnNBQU9zSkFRQzQxZ0VBWVJNQkFKUXhBQUNjQkFFQTVmOEFBSUlRQVFEb01nXFxcbkFBYlFZQkFLOGtBQUQrQWdNQThmc0JBRjRXQVFEOCt3QUFiUW9CQUxNQUFBQUhBQUVBeGlRQUFDTURBUUJKMXdFQThoTUJBSnI5QUFEZ1xcXG5EUU1BdGRRQkFHOFJBUURlL2dBQWZBOEJBT2ZXQVFDUUV3RUFTQzhBQUtFREFRRGoxQUVBbWhFQkFLYnVBUUJkRlFFQWx5OEFBUEFEQVFcXFxuQ29KQUFBNlFJREFHTFZBUUFORWdFQUFpRUFBSE1CQVFBYjFnRUF4aElCQUhZeEFBQ0JCQUVBWUIwQUFMa0FBUUNZMWdFQVF4TUJBTm4rXFxcbkFBQjNEd0VBSDlZQkFNb1NBUUJxN2dFQUxSVUJBQW45QUFDZURBSUFZZFVCQUF3U0FRRGgxQUVBbUJFQkFQVFhBUUNiRkFFQWFDOEFBTVxcXG5FREFRQ3o3Z0VBYVJVQkFHTGdBUURaRkFFQXZpOEFBQmNFQVFCSElBQUFOZ0VDQUNQL0FBRExEd0VBZC80QUFBQVBBZ0JiMXdFQUJCUUJcXFxuQUxuVUFRQnpFUUVBdWpNQUFOWUlBZ0NDSkFBQWVnSUVBTEQvQUFCWUVBRUFaREVBQUc4RUFRRFJKQUFBTGdNQkFOc2tBQUE0QXdFQXZOXFxcblVCQUdjU0FRQ1dNd0FBZWdnQ0FKRFZBUUE3RWdFQTJ0VUJBSVVTQVFCVTFBRUFGeEVCQUNUdUFRQUdGUUVBTkNFQUFLQUJBUUNsMXdFQVxcXG5UaFFCQUZiZ0FRRE5GQUVBOXpJQUFId0dBUUJ5L2dBQStnNENBRXpnQVFEREZBRUE4UDRBQUk0UEFRQVBMd0FBYUFNQkFJZ3ZBQURoQXdcXFxuRUF6ZFFCQUlRUkFRQkwxUUVBOXhFQkFMclhBUUJqRkFFQXZ4OEFBUEFBQWdEci93QUFoeEFCQU83VkFRQ1pFZ0VBY3Y4QUFCb1FBUUFZXFxcbjhnRUFIQllCQURReUFBQlhCUU1BNzljQkFKWVVBUUFsMUFFQTZCQUJBTTdXQVFCM0V3RUFnKzRCQUVFVkFRQlA0QUVBeGhRQkFJUFVBUVxcXG5CRkVRRUFjLzhBQUJzUUFRQWMvd0FBeEE4QkFQSXpBQUJjQ1FNQWV5RUFBQmdDQXdBRUlBQUFGd0VCQUtUV0FRQlBFd0VBYnpJQUFMd0ZcXFxuQWdCWC9BQUFKQXNDQVBJeUFBQjNCZ0VBUnRZQkFQRVNBUUFTMUFFQTFSQUJBSm9rQUFDL0FnTUFKL0VCQU0wVkF3QUxNd0FBc2dZREFGXFxcbno4QUFBdUN3SUFSaThBQUo4REFRQUsxQUVBelJBQkFOZ2tBQUExQXdFQWZ0Y0JBQ2NVQVFBNi9RQUFBQTBDQUdRZEFBQzlBQUVBWGpFQVxcXG5BR2tFQVFDZE1RQUFwUVFCQUR2dUFRQVhGUUVBSnZzQUFMTUpBUUQrMUFFQXRSRUJBSUFrQUFCeUFnUUFiaUVBQVA4QkFRQTc0QUVBc2hcXFxuUUJBTGJXQVFCZkV3RUF2UUFBQUJJQUF3QkNIUUFBbkFBQkFLRWtBQURVQWdNQTN6TUFBQ3dKQXdDMS93QUFYUkFCQUVMZ0FRQzVGQUVBXFxcbm12d0FBTGtMQXdEcjFRRUFsaElCQUwvOEFBQUZEQUlBV1AwQUFDQU5Bd0JrSkFBQU1BSUJBRHorQUFER0RnRUFSaklBQUlrRkFRQU1LZ1xcXG5BQVNBTUVBTFQ5QUFBdURnTUFsdjBBQU5RTkF3QUgxQUVBeWhBQkFGY3lBQUNhQlFJQWVpQUFBRWtCQVFEVkF3QUFaZ0FCQUdzekFBQVJcXFxuQ0FNQTBESUFBRlVHQVFDdTdnRUFaQlVCQU5YVkFRQ0FFZ0VBcmU0QkFHTVZBUUFhTHdBQWN3TUJBT0QrQUFCK0R3RUFveThBQVB3REFRXFxcbkN5N2dFQWFCVUJBUFg3QUFCWUNnTUFaK0FCQU40VUFRQjBNUUFBZndRQkFPRDdBQUF0Q2dFQVVlNEJBQjhWQVFBLy93QUE1dzhCQUdVeFxcXG5BQUJ3QkFFQVBUSUFBSElGQXdBdDF3RUExaE1CQUp2WEFRQkVGQUVBdHRRQkFIQVJBUUJVL0FBQUhnc0NBTEF2QUFBSkJBRUFLRElBQURcXFxuTUZBd0E2SFFBQWxRQUJBQk15QUFEbUJBUUFaZUFCQU53VUFRRC8xQUVBdGhFQkFEVFhBUURkRXdFQWk5Y0JBRFFVQVFDZHBnQUFod2tCXFxcbkFKWXZBQUR2QXdFQU9md0FBT2dLQWdCTThRRUEvUlVDQU52K0FBQjVEd0VBbFNRQUFMQUNBd0FrOFFFQXhCVURBTnpYQVFDREZBRUFVK1xcXG5BQkFNb1VBUUNhTHdBQTh3TUJBR0g5QUFBN0RRTUFBdjBBQUpBTUFnQ3I3Z0VBWVJVQkFKOEhBUUNvRUFFQWh1NEJBRVFWQVFDYi9RQUFcXFxuNHcwREFBL1ZBUURERVFFQWp2d0FBSjRMQWdBVDFRRUF4eEVCQUUvVkFRRDdFUUVBY3lFQUFBY0NBZ0JhTHdBQXN3TUJBSXpYQVFBMUZBXFxcbkVBWjljQkFCQVVBUUNyL1FBQUV3NERBQUV2QUFCYUF3RUFQL3dBQVBRS0FnREdNd0FBOEFnRUFNRFdBUUJwRXdFQW1Qc0FBQUVLQVFCUlxcXG5NUUFBWEFRQkFBbnVBUUR0RkFFQWl2MEFBTFlOQXdCTi93QUE5UThCQUNuWEFRRFNFd0VBdFA0QUFGSVBBUUNrK3dBQURRb0NBTG5XQVFcXFxuQmlFd0VBME5ZQkFIa1RBUUNOTVFBQW1BUUJBQXJ4QVFDR0ZRSUFGeUFBQUI4QkFnQWg4UUVBdXhVREFCL1VBUURpRUFFQUZkUUJBTmdRXFxcbkFRQ2JNUUFBb3dRQkFOM1dBUUNHRXdFQWZ6TUFBRU1JQkFCZ01nQUFyQVVCQVBiN0FRQmpGZ0VBZS9zQUFPUUpBUUJTMXdFQSt4TUJBRlxcXG5BdkFBQ3BBd0VBdi80QUFGMFBBUUJZMWdFQUF4TUJBUHI5QUFDUERoSUFiak1BQUJvSUF3QlIvd0FBK1E4QkFCYjhBQUNpQ2dJQVhSMEFcXFxuQUxZQUFRQzRKQUFBRlFNQkFGMnJBQUNQQ1FFQUc5UUJBTjRRQVFCbyt3QUEwUWtCQUFQeEFRQjRGUUlBVXk4QUFLd0RBUUJTTXdBQXpBXFxcbmNDQVBuVkFRQ2tFZ0VBbE5RQkFGWVJBUUFzMVFFQTNoRUJBT1lrQUFCREF3RUFyeThBQUFnRUFRREJNZ0FBTWdZQ0FMTUNBQUJCQUFFQVxcXG53ZjRBQUY4UEFRQkg4UUVBOWhVQkFJUURBQUJhQUFJQXVpUUFBQmNEQVFDSC93QUFMeEFCQUduV0FRQVVFd0VBTmY4QUFOMFBBUUQ3L2dcXFxuQUFwUThDQVByWEFRQ2hGQUVBVUIwQUFLa0FBUUR5L2dBQWtBOEJBRVV5QUFDSUJRRUFpdGNCQURNVUFRQjErd0FBM2drQkFKSHVBUUJPXFxcbkZRRUE2VE1BQUVFSkF3QTVJUUFBcFFFQkFGZ3lBQUNjQlFJQWh6SUFBT2dGQVFCOU1RQUFpQVFCQUs0a0FBRDdBZ01BbVA4QUFFQVFBUVxcXG5DVzFRRUFRUklCQUxEV0FRQlpFd0VBYWVBQkFPQVVBUUFzOGdFQU1CWUJBRUwvQUFEcUR3RUF1LzhBQUdNUUFRQWQvd0FBeFE4QkFBUFZcXFxuQVFDNkVRRUE0ZFlCQUlvVEFRREgvQUFBRlF3Q0FHRC9BQUFJRUFFQVhlNEJBQ1VWQVFBVjhRRUFseFVEQU1uVUFRQ0FFUUVBWjlVQkFCXFxcbklTQVFCKzFnRUFLUk1CQU8wekFBQk5DUU1BYU9BQkFOOFVBUUNtL1FBQUJBNERBTW96QUFEN0NBSUErTmNCQUo4VUFRRHZNd0FBVXdrRFxcXG5BRkQ5QUFBSURRTUFqaVFBQUo0Q0FnRFUvQUFBTHd3Q0FKaitBQUEyRHdFQXB6SUFBQWdHQVFDcC93QUFVUkFCQUhJaEFBQUVBZ01BV2hcXFxuMEFBTE1BQVFBbi93QUF6dzhCQUswZEFBRFhBQUVBWnRjQkFBOFVBUURmSkFBQVBBTUJBSzcrQUFCTUR3RUFOZjRBQUw4T0FRQ2oxUUVBXFxcblRoSUJBRkRXQVFEN0VnRUFLdFlCQU5VU0FRRGQxQUVBbEJFQkFGdi9BQUFERUFFQVpOUUJBQ1lSQVFBMC9BQUEzZ29DQUx6V0FRQmxFd1xcXG5FQUhOY0JBTVVUQVFBb0lRQUFtUUVCQUhUN0FBRGRDUUVBN2Z3QUFHTU1BZ0NjcGdBQWhna0JBSFFxQUFCTUF3TUErUDRBQUp3UEF3QTZcXFxuMWdFQTVSSUJBTFg4QUFEeEN3SUFOZFFCQVBnUUFRQnA3Z0VBTEJVQkFEWWdBQUF0QVFJQXZSOEFBTzRBQWdENzFRRUFwaElCQUxuVkFRXFxcbkJrRWdFQVYvMEFBQjBOQXdDTE1RQUFsZ1FCQVBYOUFBQjhEZ1FBZlA0QUFBb1BBZ0NiL0FBQXZBc0RBQlQ5QUFDMERBSUFHOVVCQU00UlxcXG5BUUJuN2dFQUtoVUJBSW96QUFCZUNBSUFRUDhBQU9nUEFRQlErd0FBdVFrQkFNZlVBUUIrRVFFQW5BY0JBS1VRQVFBWDdnRUEreFFCQUpcXFxuRHhBUUFNRmdJQThOVUJBSnNTQVFDek1nQUFGZ1lDQU5YWEFRQjhGQUVBWlA0QUFPOE9BUUNPK3dBQTl3a0JBQWY4QUFDRUNnSUFXUHNBXFxcbkFNRUpBUUJjMXdFQUJSUUJBR2doQUFEMUFRSUFSZGNCQU80VEFRQk83Z0VBSFJVQkFNd3ZBQUFsQkFFQWdkY0JBQ29VQVFBOE1RQUFSd1xcXG5RQkFONGZBQUFEQVFNQXZTOEFBQllFQVFEVTFRRUFmeElCQUFEVkFRQzNFUUVBZ1B3QUFJSUxBZ0NqTXdBQWx3Z0RBQUxWQVFDNUVRRUFcXFxuMFRJQUFGWUdBUUNYL1FBQTF3MERBSW5VQVFCTEVRRUExdjhBQUhjUUFRREQvQUFBRFF3Q0FKTWtBQUNxQWdNQXh0WUJBRzhUQVFDTklBXFxcbkFBWEFFQkFBYjdBQUNoQ1FJQW5ERUFBS1FFQVFDaEhRQUF5d0FCQUJ2L0FBREREd0VBNGY0QUFIOFBBUUJsL0FBQVJ3c0RBQlQ4QUFDZVxcXG5DZ0lBb3Y0QUFFQVBBUUNSK3dBQStna0JBRkF6QUFERkJ3TUF5TllCQUhFVEFRQjMxZ0VBSWhNQkFJTUhBUUNORUFFQW94MEFBTTBBQVFcXFxuQlJIUUFBcWdBQkFHRXlBQUN0QlFFQWVQd0FBSElMQWdCak13QUErUWNEQUR3dkFBQ1ZBd0VBSnk4QUFJQURBUUNqTWdBQUJBWUJBUFg3XFxcbkFRQmlGZ0VBdEFJQUFFSUFBUUNHTWdBQTV3VUJBQmN2QUFCd0F3RUF6TlVCQUhjU0FRQXc4Z0VBTkJZQkFBUDdBQUNaQ1FNQXppUUFBQ1xcXG5zREFRQXdMd0FBaVFNQkFHRDlBQUE0RFFNQUkvRUJBTUVWQXdBeTFRRUE1QkVCQUI3eUFRQWlGZ0VBVXpNQUFNNEhCQUNiSFFBQXhRQUJcXFxuQUFUeEFRQjZGUUlBRy9JQkFCOFdBUUJTL2dBQTNnNEJBRHY5QUFBQ0RRSUFZUzhBQUxvREFRQUEvQUFBY1FvREFISHVBUUF6RlFFQThBXFxcbk1BQUdnQUFRRGsxd0VBaXhRQkFGMzhBQUF3Q3dJQWNOWUJBQnNUQVFBei9nQUF2UTRCQUgzVkFRQW9FZ0VBYS80QUFQVU9BUUF6TWdBQVxcXG5WQVVEQUNFdkFBQjZBd0VBRmZ3QUFLQUtBZ0JmMVFFQUNoSUJBR1Q5QUFCRURRTUFtdFFCQUZ3UkFRQjcvZ0FBQ0E4Q0FHTFhBUUFMRkFcXFxuRUE0TllCQUlrVEFRQzEvZ0FBVXc4QkFHdlVBUUF0RVFFQXRoMEFBT0FBQVFCQk1RQUFUQVFCQUp6K0FBQTZEd0VBaE5RQkFFWVJBUUNkXFxcbk1nQUEvZ1VCQUREVkFRRGlFUUVBTXYwQUFQQU1BZ0JmL0FBQU5Rc0RBSHZ1QVFBN0ZRRUFEQThBQUlBQUFRQnYxUUVBR2hJQkFLcldBUVxcXG5CVEV3RUEzRE1BQUNVSkFnRGpKQUFBUUFNQkFDN3lBUUF5RmdFQXQ5UUJBSEVSQVFEUjFRRUFmQklCQUtiWEFRQlBGQUVBVGk4QUFLY0RcXFxuQVFDdTFnRUFWeE1CQVBJREFBQnFBQUVBZ0RJQUFPRUZBUUErSFFBQW1BQUJBTy83QUFCR0NnTUFBdkVCQUhZVkFnQlUvZ0FBM3c0QkFHXFxcbk15QUFDdkJRRUFtLzhBQUVNUUFRQ0UxUUVBTHhJQkFGRXpBQURJQndRQVZqRUFBR0VFQVFEeSt3QUFUd29EQUFMN0FBQ1hDUUlBZXpFQVxcXG5BSVlFQVFCTU1RQUFWd1FCQU1ZQkFBQXBBQU1BUDljQkFPZ1RBUUJON2dFQUhCVUJBRk1kQUFDc0FBRUEwVE1BQUFrSkFnQ0sxUUVBTlJcXFxuSUJBSVA5QUFDaERRTUFlQ0VBQUJNQ0FnQlIxd0VBK2hNQkFIZjlBQUI5RFFNQWVkUUJBRHNSQVFCZElRQUEyd0VEQUlmOUFBQ3REUU1BXFxcbmlqRUFBSlVFQVFBLzFBRUFBaEVCQU0wdkFBQW1CQUVBOE5RQkFLY1JBUUJaSFFBQXNnQUJBRi9XQVFBS0V3RUFrek1BQUhJSUF3Q1M3Z1xcXG5FQVR4VUJBSENuQUFDSUNRRUFDLzBBQUtJTUFnQ0tJQUFBV1FFQkFJRCtBQUFTRHdFQTg5Y0JBSm9VQVFBTi9RQUFwZ3dDQUVyVkFRRDJcXFxuRVFFQW1kWUJBRVFUQVFDUy9nQUFNQThCQUV6K0FBRFhEZ0lBVTlZQkFQNFNBUUJMNEFFQXdoUUJBTGpWQVFCakVnRUFXdFFCQUJ3UkFRXFxcbkJiTXdBQTZBY0NBSW5YQVFBeUZBRUE4cWNBQUlrSkFRQ2o3Z0VBV3hVQkFIei9BQUFrRUFFQWRpRUFBQXdDQXdDbS93QUFUaEFCQUZmL1xcXG5BQUQvRHdFQWVlNEJBRGtWQVFDdTFRRUFXUklCQUcvVUFRQXhFUUVBMmdJQUFFc0FBZ0JOTHdBQXBnTUJBTVg5QUFCaERnTUFoRE1BQUVcXFxuOElBZ0RBSkFBQUhRTUJBSHpWQVFBbkVnRUFzTmNCQUZrVUFRREwxUUVBZGhJQkFJUFhBUUFzRkFFQTZOUUJBSjhSQVFDTzFRRUFPUklCXFxcbkFBMy9BQUMxRHdFQVJOWUJBTzhTQVFERUpBQUFJUU1CQUZJdkFBQ3JBd0VBanRZQkFEa1RBUUFOMVFFQXdSRUJBR3Y3QUFEVUNRRUF5eVxcXG44QUFDUUVBUUF5L3dBQTJnOEJBS3YvQUFCVEVBRUFiREVBQUhjRUFRQndJQUFBUVFFQkFJMzlBQUMvRFFNQWRQNEFBUHdPQWdBeElRQUFcXFxubmdFQkFHVC9BQUFNRUFFQW16TUFBSVFJQWdCcTRBRUE0UlFCQUNUeUFRQW9GZ0VBQmRRQkFNZ1FBUUJKL3dBQThROEJBRGYvQUFEZkR3XFxcbkVBZFNBQUFFUUJBUUMrL2dBQVhBOEJBT2orQUFDR0R3RUErS2NBQUl3SkFRQysxd0VBWnhRQkFKMGRBQURIQUFFQXRnY0JBTDRRQVFCNVxcXG5Md0FBMGdNQkFCTHlBUUFWRmdFQTMvd0FBRVVNQXdDaDFRRUFUQklCQU1uOEFBQVpEQUlBRWU0QkFQVVVBUUNmTXdBQWpBZ0RBSVA3QUFcXFxuRHNDUUVBTWZFQkFPQVZBUUFJL3dBQXNBOEJBSjcrQUFBOER3RUFPZjRBQU1NT0FRQ0dNd0FBVXdnQ0FHLzlBQUJsRFFNQWk5VUJBRFlTXFxcbkFRRHoxUUVBbmhJQkFGOGRBQUM0QUFFQU1Qd0FBTllLQWdENk13QUFkQWtEQUZ2dUFRQWtGUUVBZUNRQUFGY0NBd0JIMXdFQThCTUJBUFxcXG5qOEFBQjhEQUlBWjlZQkFCSVRBUUNXMXdFQVB4UUJBQkVnQUFBZUFRRUFSUEVCQVBNVkFRQTkvUUFBQmcwQ0FIQXlBQUMrQlFJQWJESUFcXFxuQUxnRkFRREkxUUVBY3hJQkFJeldBUUEzRXdFQSsvMEFBS0VPQ0FDMi9RQUFOQTREQUpVZ0FBQmpBUUVBR1RJQUFQNEVCQUNaSkFBQXZBXFxcbklEQUZMdUFRQWdGUUVBM0FJQUFFOEFBZ0FPSVFBQWd3RUJBTTdWQVFCNUVnRUFoOVlCQURJVEFRQUMxd0VBcXhNQkFKTWdBQUJoQVFFQVxcXG5GZFlCQU1BU0FRQU1Md0FBWlFNQkFJVXhBQUNRQkFFQUt0UUJBTzBRQVFCN0pBQUFZQUlEQU83K0FBQ01Ed0VBaFFjQkFJOFFBUUNhSUFcXFxuQUFhQUVCQUhMN0FBRGJDUUVBNGpNQUFETUpBZ0IxL0FBQWJBc0NBTklrQUFBdkF3RUFXK0FCQU5JVUFRQXNJUUFBbWdFQkFIOGtBQUJ1XFxcbkFnUUFYdFFCQUNBUkFRRGovZ0FBZ1E4QkFCa3ZBQUJ5QXdFQUhqSUFBQlVGQmdBRkx3QUFYZ01CQUJiN0FBQ3BDUUlBUWpFQUFFMEVBUVxcXG5DbEJ3RUFyaEFCQUFFZ0FBQVVBUUVBaFB3QUFJb0xBZ0JjMVFFQUJ4SUJBTVRYQVFCdEZBRUFvQzhBQVBrREFRQkQ4UUVBOGhVQkFJOHZcXFxuQUFEb0F3RUF5U1FBQUNZREFRREZNZ0FBT2dZQ0FJOGtBQUNnQWdJQWhQOEFBQ3dRQVFBa013QUFIQWNFQUxmOEFBRDFDd0lBUWVBQkFMXFxcbmdVQVFEWkpBQUFOZ01CQUJiOUFBQzREQUlBVVRJQUFJNEZBZ0NTL0FBQXBnc0NBSS8rQUFBdER3RUF4UDBBQUY0T0F3QWNMd0FBZFFNQlxcXG5BQ3Z5QVFBdkZnRUEyOVVCQUlZU0FRQkJMd0FBbWdNQkFCdjlBQURDREFJQUZ6SUFBUFlFQkFCUThnRUFXeFlCQUNFekFBQVJCd1VBUUNcXFxuOEFBSmtEQVFES0x3QUFJd1FCQUtZSEFRQ3ZFQUVBaWRVQkFEUVNBUUEyTVFBQVFRUUJBSDM4QUFCOEN3SUFoL3NBQVBBSkFRQU8vQUFBXFxcbmtnb0NBQWJ4QVFCK0ZRSUFaUzhBQUw0REFRQlcvZ0FBNFE0QkFKejdBQUFGQ2dFQTVQNEFBSUlQQVFBRzdnRUE2aFFCQU5MV0FRQjdFd1xcXG5FQVhkUUJBQjhSQVFCZzFnRUFDeE1CQUJieUFRQWFGZ0VBQU5RQkFNTVFBUUFUK3dBQW93a0NBRy84QUFCZ0N3SUFwL3dBQU5VTEFnQVRcXFxuL2dBQXNBNEJBRXYrQUFEVkRnSUFqZGNCQURZVUFRQXUvd0FBMWc4QkFHc3ZBQURFQXdFQTV2c0FBRE1LQVFEMjFBRUFyUkVCQUtnSEFRXFxcbkN4RUFFQWl6SUFBT3dGQVFCY0hRQUF0UUFCQUdva0FBQTNBZ0lBdWZ3QUFQa0xBZ0RXK3dBQUlnb0JBUGN6QUFCckNRTUFDUDBBQUp3TVxcXG5BZ0RITWdBQVBnWUNBSVRXQVFBdkV3RUFvZTRCQUZrVkFRQjQvUUFBZ0EwREFJRHVBUUErRlFFQUpmSUJBQ2tXQVFDMjdnRUFiQlVCQUFcXFxuenVBUUR3RkFFQVhLc0FBSTRKQVFCYyt3QUF4UWtCQUM0eUFBQkZCUU1BUy93QUFBd0xBZ0RISkFBQUpBTUJBR0F6QUFEeUJ3SUFOOWNCXFxcbkFPQVRBUURRTXdBQUJ3a0NBSkQ4QUFDaUN3SUFzTzRCQUdZVkFRQ2gvUUFBOVEwREFIVXpBQUF0Q0FJQUFDOEFBRmtEQVFDYSt3QUFBd1xcXG5vQkFDb3lBQUE1QlFNQXFUSUFBQW9HQVFCeTFBRUFOQkVCQU5UVUFRQ0xFUUVBSWZJQkFDVVdBUUI3L3dBQUl4QUJBRVlkQUFDZ0FBRUFcXFxuc2Y4QUFGa1FBUUEyMUFFQStSQUJBSmd5QUFENUJRRUFRL3dBQVB3S0FnQXgvQUFBMkFvQ0FIbldBUUFrRXdFQVd6RUFBR1lFQVFBUzF3XFxcbkVBdXhNQkFKbitBQUEzRHdFQTBmNEFBRzhQQVFDYU13QUFnZ2dDQUtiVUFRQmpFUUVBMWZzQUFDRUtBUUFLSVFBQWZ3RUJBSmI3QUFEL1xcXG5DUUVBamk4QUFPY0RBUUNwMXdFQVVoUUJBRjc3QUFESENRRUFrd2NCQUp3UUFRQldMd0FBcndNQkFIMGdBQUJNQVFFQUovSUJBQ3NXQVFcXFxuQ1UvQUFBcWdzQ0FOUFVBUUNLRVFFQVovMEFBRTBOQXdBSi93QUFzUThCQUtUVkFRQlBFZ0VBYmVBQkFPUVVBUUE1SFFBQWxBQUJBQkF5XFxcbkFBRGFCQVFBSWRjQkFNb1RBUUNSL3dBQU9SQUJBQzNXQVFEWUVnRUF3TmNCQUdrVUFRQVQ4Z0VBRmhZQ0FERHhBUURmRlFFQTFkUUJBSVxcXG53UkFRQ3lIUUFBM0FBQkFKZ3ZBQUR4QXdFQWF0VUJBQlVTQVFCM0pBQUFWQUlEQUNiVkFRRFlFUUVBZFNRQUFFNENBd0M0QndFQXdCQUJcXFxuQUVMeUFRQkdGZ01BaHdVQUFHNEFBZ0N6MXdFQVhCUUJBSFlnQUFCRkFRRUE4dFlCQUpzVEFRQzgvUUFBUmc0REFLWWtBQURqQWdNQTFEXFxcbk1BQUJBSkFnRFkxQUVBanhFQkFBd3lBQURNQkFNQWU5VUJBQ1lTQVFBVjdnRUErUlFCQUtRa0FBRGRBZ01BU1NFQUFMSUJBUUQ0K3dBQVxcXG5ZUW9EQUFRdkFBQmRBd0VBeXRVQkFIVVNBUUJYSFFBQXNBQUJBQ0wvQUFES0R3RUFpOVlCQURZVEFRQzExd0VBWGhRQkFNalVBUUIvRVFcXFxuRUFpQ0FBQUZjQkFRQkFNd0FBaVFjRkFBZlZBUUM5RVFFQVhUSUFBS1lGQWdEKzFRRUFxUklCQUh3eEFBQ0hCQUVBUis0QkFCa1ZBUUN3XFxcbk13QUF3Z2dDQUliWEFRQXZGQUVBZy93QUFJZ0xBZ0JFMUFFQUJ4RUJBUEV5QUFCMkJnRUFVakVBQUYwRUFRQVQvd0FBdXc4QkFEaitBQVxcXG5EQ0RnRUE3TlFCQUtNUkFRQisvUUFBa2cwREFHOHpBQUFkQ0FNQTBBTUFBRjhBQVFEeDF3RUFtQlFCQUZIeUFRQmNGZ0VBc3gwQUFOMEFcXFxuQVFBVTFRRUF5QkVCQVBzekFBQjNDUU1BOGZzQUFFd0tBd0NFL1FBQXBBMERBUFA3QVFCZ0ZnRUFpaklBQU9zRkFRQ3JKQUFBOGdJREFPXFxcbmZYQVFDT0ZBRUFYRE1BQU9vSEFnQ0Yvd0FBTFJBQkFMM1VBUUIxRVFFQXRmMEFBREVPQXdEeS9RQUFjQTRFQUlQK0FBQVhEd0lBM1I4QVxcXG5BQUFCQXdCNy9BQUFlQXNDQUpveEFBQ2lCQUVBZFRJQUFNZ0ZBZ0FnL1FBQXpBd0NBQUxVQVFERkVBRUFaLzhBQUE4UUFRRGQxd0VBaEJcXFxuUUJBQzc4QUFEU0NnSUFCUDhBQUt3UEFRQ3g3Z0VBWnhVQkFCY3pBQURsQmdVQVp6TUFBQVVJQXdCUzFnRUEvUklCQUg0ekFBQkJDQUlBXFxcbm5CMEFBTVlBQVFDZUJ3RUFweEFCQUY4dkFBQzRBd0VBcHY0QUFFUVBBUUJtSFFBQXZ3QUJBSkR1QVFCTkZRRUFJOWNCQU13VEFRQitKQVxcXG5BQWFnSUVBR3NoQUFENkFRTUFUTmNCQVBVVEFRQ04xZ0VBT0JNQkFCRXlBQURlQkFRQWY5Y0JBQ2dVQVFDRy93QUFMaEFCQUJndkFBQnhcXFxuQXdFQVJ6TUFBS0VIQlFCeS9BQUFaZ3NDQUpiVUFRQllFUUVBS2ZFQkFOTVZBd0FOSVFBQWdnRUJBQTdVQVFEUkVBRUE0TlFCQUpjUkFRXFxcbkJ4MVFFQUhCSUJBQW9nQUFBZEFRRUFQZFVCQU80UkFRQ1pJQUFBWndFQkFIVXFBQUJQQXdJQVFQNEFBTW9PQVFDOS9nQUFXdzhCQUV2VVxcXG5BUUFPRVFFQTB6SUFBRmdHQVFCbTFnRUFFUk1CQUtyN0FBQVZDZ0VBZmk4QUFOY0RBUUIzL3dBQUh4QUJBQ1gvQUFETkR3RUFrOVlCQURcXFxuNFRBUUMyL2dBQVZBOEJBSlhXQVFCQUV3RUExZjhBQUhZUUFRQ1IxQUVBVXhFQkFGa3pBQURrQndJQWY5VUJBQ29TQVFEWC93QUFlQkFCXFxcbkFETHVBUUFSRlFFQVp6SUFBTE1GQVFBdy9RQUE3QXdDQU8zN0FBQkFDZ01BbFAwQUFNNE5Bd0I0TWdBQXpnVUNBSmYvQUFBL0VBRUFodFxcXG5ZQkFERVRBUUFJOFFFQWdoVUNBQ3d2QUFDRkF3RUEwZndBQUNrTUFnQm9KQUFBTkFJQkFENytBQURJRGdFQVp2OEFBQTRRQVFBVS93QUFcXFxudkE4QkFFM1hBUUQyRXdFQTlUSUFBSG9HQVFETk13QUFBUWtDQUdra0FBQTFBZ0lBdERJQUFCZ0dBZ0JiMWdFQUJoTUJBQlB4QVFDUkZRXFxcbk1BVlNFQUFNTUJBd0NxSFFBQTFBQUJBTmIrQUFCMER3RUF2ZFVCQUdnU0FRQkY0QUVBdkJRQkFQUDlBQUIwRGdRQWpQc0FBUFVKQVFEVVxcXG4xd0VBZXhRQkFMZ0NBQUJHQUFFQVpkVUJBQkFTQVFEVkx3QUFMZ1FCQUsvVUFRQnBFUUVBOHZ3QUFHME1Bd0JDOFFFQThSVUJBSlV4QUFcXFxuQ2RCQUVBYk5VQkFCY1NBUUFPL1FBQXFBd0NBTGZ1QVFCdEZRRUFWUDhBQVB3UEFRQjRCZ0FBZGdBQ0FPNzdBQUJEQ2dNQVFOVUJBUEFSXFxcbkFRQytNd0FBM2dnQ0FLMytBQUJMRHdFQUROUUJBTThRQVFBait3QUFzQWtCQU9iK0FBQ0VEd0VBb2Y4QUFFa1FBUUIwMWdFQUh4TUJBRFxcXG5ZZEFBQ1JBQUVBQmlFQUFIa0JBd0F4TWdBQVRnVURBRm51QVFBakZRRUFPRE1BQUdvSEJBREQxd0VBYkJRQkFMVUhBUUM5RUFFQXNBSUFcXFxuQUQ0QUFRQTIvQUFBNGdvQ0FEVHlBUUE0RmdFQWM5UUJBRFVSQVFBL01RQUFTZ1FCQUh2OUFBQ0pEUU1BVkRFQUFGOEVBUUF4N2dFQUVCXFxcblVCQUs3L0FBQldFQUVBU3gwQUFLVUFBUUJMN2dFQUd4VUJBSExXQVFBZEV3RUFPekVBQUVZRUFRQ3Uxd0VBVnhRQkFEWDlBQUQyREFJQVxcXG5BRElBQUtnRUF3QVovd0FBd1E4QkFEalZBUURxRVFFQUJmRUJBSHdWQWdBNkx3QUFrd01CQUMzL0FBRFZEd0VBQSs0QkFPZ1VBUURGTHdcXFxuQUFIZ1FCQUJuOEFBQ29DZ0lBSi9zQUFMUUpBUUF4THdBQWlnTUJBSFlxQUFCUkF3TUFWZFlCQUFBVEFRQisxQUVBUUJFQkFHOGtBQUJCXFxcbkFnSUFFeThBQUd3REFRQXo4Z0VBTnhZQkFKL1ZBUUJLRWdFQWx5UUFBTFlDQXdDZkxnQUFWd01CQU4weUFBQmlCZ0VBS1AwQUFOd01BZ1xcXG5DNzF3RUFaQlFCQU5MWEFRQjVGQUVBNFRJQUFHWUdBUUNiMWdFQVJoTUJBS3dIQVFDMUVBRUFrL3dBQUtnTEFnQTBMd0FBalFNQkFKQWtcXFxuQUFDaUFnSUFidnNBQU5jSkFRQXQ4UUVBMnhVQ0FLSDdBQUFLQ2dFQWpkUUJBRThSQVFBbzhnRUFMQllCQUhFa0FBQkZBZ0lBV2ZzQUFNXFxcbklKQVFERC9nQUFZUThCQUpveUFBRDdCUUVBeVRNQUFQa0lBZ0M5SFFBQTV3QUJBSFRVQVFBMkVRRUFjOVlCQUI0VEFRRGgvd0FBZlJBQlxcXG5BTVBVQVFCN0VRRUFTZFlCQVBRU0FRRFMvZ0FBY0E4QkFBVXlBQUMzQkFNQU45VUJBT2tSQVFEWi9BQUFPUXdDQUVBeEFBQkxCQUVBbnpcXFxuQUFBRGdFQWdCWS93QUFBQkFCQUFmWEFRQ3dFd0VBMk5VQkFJTVNBUUJlTHdBQXR3TUJBSnd5QUFEOUJRRUFqKzRCQUV3VkFRQWE4Z0VBXFxcbkhoWUJBTUVmQUFEMEFBTUFHOWNCQU1RVEFRQXA3Z0VBQ0JVQkFGMHZBQUMyQXdFQVJqTUFBSjRIQXdETU13QUEvd2dDQUhiV0FRQWhFd1xcXG5FQXdTOEFBQm9FQVFBRTFnRUFyeElCQU8zVUFRQ2tFUUVBQ05VQkFMNFJBUUJkL1FBQUx3MERBS2ZWQVFCU0VnRUFNK0FCQUtvVUFRQzRcXFxuQUFBQUN3QUNBTnIvQUFCNUVBRUFjeklBQU1RRkFnQWgvd0FBeVE4QkFNOGtBQUFzQXdFQU1qTUFBRThIQmdBVDFBRUExaEFCQUp3a0FBXFxcbkRGQWdNQU1QOEFBTmdQQVFCbzdnRUFLeFVCQUxEVkFRQmJFZ0VBMS9zQUFDTUtBUUF6TVFBQVBnUUJBRFA5QUFEeURBSUFFdndBQUpvS1xcXG5BZ0JLTXdBQXJBY0dBSS9VQVFCUkVRRUFGLzhBQUw4UEFRQS9BUUFBSEFBQ0FNZ3lBQUJBQmdJQVkvNEFBTzRPQVFEMzFnRUFvQk1CQU9cXFxuWXpBQUE3Q1FJQWlkWUJBRFFUQVFEODF3RUFveFFCQUdjaEFBRHhBUVFBb2gwQUFNd0FBUUNvN2dFQVh4VUJBR2t4QUFCMEJBRUFyd0FBXFxcbkFBUUFBZ0MyL0FBQTh3c0NBT3Y3QUFBNkNnTUFZZjRBQU93T0FRRDExZ0VBbmhNQkFIY3lBQURNQlFJQUd6SUFBQVlGQkFBby9BQUF4Z1xcXG5vQ0FCelZBUURQRVFFQWt2OEFBRG9RQVFDVk13QUFlQWdDQVAzVkFRQ29FZ0VBSXRjQkFNc1RBUUNaTHdBQThnTUJBS1F6QUFDYUNBTUFcXFxuMWdNQUFHY0FBUURvSkFBQVJRTUJBQzhoQUFDY0FRRUFBZklCQUJBV0FnREEvZ0FBWGc4QkFIM1dBUUFvRXdFQW9UTUFBSklJQWdDbS9BXFxcbkFBMHdzQ0FJVXZBQURlQXdFQWVnTUFBRmdBQWdEUE1nQUFVZ1lEQUFEeUFRQU9GZ0lBNUFJQUFGY0FBUUJlMXdFQUJ4UUJBS1hVQVFCaVxcXG5FUUVBMFA0QUFHNFBBUUJwTWdBQXRRVUJBRjdWQVFBSkVnRUFPZFFCQVB3UUFRQzExUUVBWUJJQkFHVDhBQUJFQ3dNQXNQNEFBRTRQQVFcXFxuRFkrd0FBSkFvQkFFY3hBQUJTQkFFQTQvc0FBREFLQVFBVElRQUFpQUVCQUYvZ0FRRFdGQUVBYURNQUFBZ0lBd0JPL3dBQTlnOEJBS25XXFxcbkFRQlNFd0VBYmZzQUFOWUpBUUFyTXdBQU1BY0dBRXd6QUFDMUJ3VUFVdnNBQUxzSkFRQW0xQUVBNlJBQkFGK3JBQUNSQ1FFQVhmNEFBT1xcXG5nT0FRQy8xZ0VBYUJNQkFMWFdBUUJlRXdFQXB2c0FBQkVLQVFEK0h3QUFFUUVDQU5UN0FBQWdDZ0VBYmZ3QUFGd0xBZ0FnL3dBQXlBOEJcXFxuQUt2VkFRQldFZ0VBOHRVQkFKMFNBUUJjTWdBQXBBVUNBRUwrQUFETURnRUFnek1BQUUwSUFnQWkrd0FBcndrQkFPelZBUUNYRWdFQVB0XFxcbllCQU9rU0FRQjYvQUFBZGdzQ0FNdlVBUUNDRVFFQW4vMEFBTzhOQXdDZk1RQUFwd1FCQUNIVkFRRFRFUUVBZnlFQUFCNENBUUE0TWdBQVxcXG5Zd1VEQURqVUFRRDdFQUVBcFA4QUFFd1FBUUNxSkFBQTd3SURBTG9BQUFBT0FBRUFlZndBQUhRTEFnQmIvZ0FBNWc0QkFBTHVBUURuRkFcXFxuRUEreklBQUlBR0FRRFlBZ0FBUndBQ0FOb3lBQUJmQmdFQWpETUFBR0lJQWdBci9RQUE0Z3dDQUFiOUFBQ1lEQUlBc0RJQUFCRUdBUUErXFxcbjRBRUF0UlFCQUtzdkFBQUVCQUVBRENFQUFJRUJBUURXL0FBQU13d0NBR1FoQUFEckFRRUFnLzhBQUNzUUFRQzBKQUFBRFFNREFKUXZBQVxcXG5EdEF3RUE3VElBQUhJR0FRQXlNZ0FBVVFVREFGa3ZBQUN5QXdFQU0vOEFBTnNQQVFCaU1nQUFyZ1VCQUE0ekFBQzlCZ1FBaVNRQUFKUUNcXFxuQWdDMUx3QUFEZ1FCQU9yK0FBQ0lEd0VBeUM4QUFDRUVBUUJlSVFBQTNnRURBQVgvQUFDdER3RUFpaThBQU9NREFRQWQ3Z0VBQVJVQkFMXFxcbnYrQUFCWkR3RUFmOVlCQUNvVEFRQ1QvZ0FBTVE4QkFNLytBQUJ0RHdFQSsvc0FBR29LQXdEVzFnRUFmeE1CQUZJaEFBQzVBUVFBdHgwQVxcXG5BT0VBQVFCSzhRRUErUlVDQU56N0FBQW9DZ0VBbE5ZQkFEOFRBUUJZSVFBQXpBRURBRDNXQVFEb0VnRUFBU0VBQUhBQkF3QTNJUUFBb3dcXFxuRUJBTUQ5QUFCU0RnTUFvOWNCQUV3VUFRQlVIUUFBclFBQkFKY0hBUUNnRUFFQWFESUFBTFFGQVFDVkJ3RUFuaEFCQUxrekFBRFVDQUlBXFxcbkF2d0FBSGNLQXdBdk13QUFSUWNFQUQwaEFBQ3FBUUVBZ3pJQUFPUUZBUUFWTHdBQWJnTUJBRlBVQVFBV0VRRUFzQWNCQUxrUUFRQXpMd1xcXG5BQWpBTUJBSC8rQUFBUUR3SUE2OWNCQUpJVUFRREtNZ0FBUlFZREFOd09BQUI4QUFJQTdmOEFBSWtRQVFESzF3RUFjeFFCQUdVeUFBQ3hcXFxuQlFFQWlUTUFBRm9JQkFDdi9BQUE1UXNDQUduOUFBQlREUU1BcERJQUFBVUdBUUIxTHdBQXpnTUJBSHdzQUFCVUF3RUFyaThBQUFjRUFRXFxcbkFzL3dBQTFBOEJBUEg5QUFCdERnTUFFOVlCQUw0U0FRQnovQUFBYUFzQ0FKWFVBUUJYRVFFQTZ0UUJBS0VSQVFEenB3QUFpZ2tCQU9YWFxcXG5BUUNNRkFFQWhmNEFBQnNQQWdEeTFBRUFxUkVCQUY3V0FRQUpFd0VBeHRjQkFHOFVBUUFESVFBQWRBRUNBSU1nQUFCU0FRRUFNL3dBQU5cXFxud0tBZ0E5TXdBQWZnY0ZBTy84QUFCbkRBSUF1UDRBQUZZUEFRRDlNZ0FBZ2dZQkFFdlhBUUQwRXdFQWZDUUFBR01DQXdDZEJ3RUFwaEFCXFxcbkFGTGdBUURKRkFFQUVPNEJBUFFVQVFCOUx3QUExZ01CQUtUOUFBRCtEUU1BT2pJQUFHa0ZBd0JYTVFBQVlnUUJBTUF6QUFEaUNBSUE4d1xcXG5FQUFEd0FBZ0JSL0FBQUdBc0NBQlgrQUFDeURnRUFCRElBQUxRRUF3Q1hNd0FBZkFnQ0FPTFVBUUNaRVFFQXpqSUFBRkFHQWdCcCt3QUFcXFxuMGdrQkFQeldBUUNsRXdFQXBUSUFBQVlHQVFDYS9nQUFPQThCQUw0ZEFBRG9BQUVBa0NBQUFGNEJBUURaK3dBQUpRb0JBSGpYQVFBaEZBXFxcbkVBMTlZQkFJQVRBUUMvMXdFQWFCUUJBS2o5QUFBS0RnTUFrVE1BQUd3SUF3QmIvQUFBTEFzQ0FHY2tBQUF6QWdFQThOY0JBSmNVQVFDR1xcXG5NUUFBa1FRQkFCQXZBQUJwQXdFQTQ5VUJBSTRTQVFEbC9BQUFVd3dDQUZyWEFRQURGQUVBK2FjQUFJMEpBUUNBMVFFQUt4SUJBSnZVQVFcXFxuQmRFUUVBVVNFQUFMWUJBd0E3OGdFQVB4WUJBSzM4QUFEaEN3SUF0eklBQUI0R0FnRFAxUUVBZWhJQkFKRFhBUUE1RkFFQXpkWUJBSFlUXFxcbkFRRE0vd0FBYnhBQkFBY3pBQUNpQmdZQTM5Y0JBSVlVQVFBSEx3QUFZQU1CQU5Va0FBQXlBd0VBb05VQkFFc1NBUUNGK3dBQTdna0JBQ1xcXG5EVkFRRFNFUUVBMGRRQkFJZ1JBUUJoSkFBQUxRSUJBRkxVQVFBVkVRRUFjUHNBQU5rSkFRQ2YxZ0VBU2hNQkFKVFZBUUEvRWdFQWNUSUFcXFxuQU1BRkFnQlg0QUVBemhRQkFFQWRBQUNhQUFFQUorNEJBQWNWQVFBMC9RQUE5QXdDQUpzZ0FBQnBBUUVBZU5VQkFDTVNBUUJXL3dBQS9nXFxcbjhCQUNFaEFBQ1RBUU1BU0RFQUFGTUVBUUE5THdBQWxnTUJBQ1RYQVFETkV3RUFaaUVBQU80QkF3QWJMd0FBZEFNQkFPclZBUUNWRWdFQVxcXG5CZndBQUlBS0FnQnFNd0FBRGdnREFLTWtBQURhQWdNQUlETUFBQXdIQlFDQzdnRUFRQlVCQUVRekFBQ1lCd01BQ3lFQUFJQUJBUUJnMVFcXFxuRUFDeElCQUREdUFRQVBGUUVBNVNRQUFFSURBUURxL3dBQWhoQUJBRGJ5QVFBNkZnRUFOeUFBQUM4QkF3QmE0QUVBMFJRQkFBQWdBQUFUXFxcbkFRRUE1dGNCQUkwVUFRQnQvd0FBRlJBQkFEWXdBQUF3QkFFQTlOWUJBSjBUQVFBWTdnRUEvQlFCQUFEdUFRRGxGQUVBdFA4QUFGd1FBUVxcXG5DbzFnRUFVUk1CQUdJekFBRDJCd01Bd3Y0QUFHQVBBUUFtTHdBQWZ3TUJBUDR6QUFDQUNRTUFOQ0FBQUNvQkF3RE1BUUFBTmdBQ0FPRXpcXFxuQUFBeENRSUF3UHdBQUFjTUFnRGVNd0FBS1FrREFMclZBUUJsRWdFQWZkUUJBRDhSQVFCMi93QUFIaEFCQU9MOEFBQk5EQUlBZWlFQUFCXFxcbllDQWdBcC9BQUF5QW9DQU9iV0FRQ1BFd0VBT2ZFQkFPZ1ZBUUF2L3dBQTF3OEJBS0xYQVFCTEZBRUFBREFBQUM4RUFRQ3kxZ0VBV3hNQlxcXG5BS2tIQVFDeUVBRUF5LzRBQUdrUEFRQUpMd0FBWWdNQkFCYitBQUN6RGdFQUFDRUFBRzBCQXdCcE13QUFDd2dEQUNJekFBQVdCd01BcVBcXFxud0FBTmNMQWdEZ0FnQUFVd0FCQU1QV0FRQnNFd0VBUnlFQUFMQUJBUUI2MVFFQUpSSUJBUC9XQVFDb0V3RUExOVVCQUlJU0FRQVAvd0FBXFxcbnR3OEJBRmt5QUFDZUJRSUFSUjBBQUo4QUFRRDEvZ0FBa3c4REFKVHVBUUJSRlFFQWJOY0JBQlVVQVFCdk1RQUFlZ1FCQUJFdkFBQnFBd1xcXG5FQUgvOEFBTWNQQVFBU01nQUE0Z1FFQU1BeUFBQXdCZ0lBdVA4QUFHQVFBUUFML0FBQWpBb0NBQVQ4QUFCOUNnTUFVZFlCQVB3U0FRQVZcXFxuOGdFQUdSWUJBQ1V6QUFBZ0J3TUFVOWNCQVB3VEFRQy9Md0FBR0FRQkFEN1hBUURuRXdFQUJ2OEFBSzRQQVFCbit3QUEwQWtCQUVJeUFBXFxcbkNCQlFNQXdkWUJBR29UQVFBVS9nQUFzUTRCQUVQWEFRRHNFd0VBeXY0QUFHZ1BBUUJEL2dBQXpRNEJBTkhYQVFCNEZBRUFZOVVCQUE0U1xcXG5BUUFmOGdFQUl4WUJBQTM4QUFDUUNnSUFmQzhBQU5VREFRQ0Mvd0FBS2hBQkFGQXlBQUNMQlFNQTM5WUJBSWdUQVFEQjF3RUFhaFFCQVBcXFxudjhBQUNDREFJQVVmMEFBQXNOQXdCWk1RQUFaQVFCQUNMVUFRRGxFQUVBQlBzQUFKd0pBd0E2TVFBQVJRUUJBRGpXQVFEakVnRUF5ek1BXFxcbkFQMElBZ0NnQndFQXFSQUJBSkxVQVFCVUVRRUFZQ1FBQUN3Q0FRQVExUUVBeEJFQkFIUXpBQUFxQ0FNQU11QUJBS2tVQVFBcCt3QUF0Z1xcXG5rQkFBSHVBUURtRkFFQUk5WUJBTTRTQVFBZE13QUFBUWNEQU9qL0FBQ0VFQUVBTWRVQkFPTVJBUUFxN2dFQUNSVUJBTGt2QUFBU0JBRUFcXFxuNlNRQUFFWURBUUR3L0FBQWFRd0NBT2ZVQVFDZUVRRUEweThBQUN3RUFRQmkvUUFBUGcwREFON1hBUUNGRkFFQUh1NEJBQUlWQVFDeS9RXFxcbkFBS0E0REFMUXZBQUFOQkFFQXd2OEFBR2NRQVFBc01nQUFQd1VEQUl6K0FBQXBEd0lBNzlZQkFKZ1RBUUNmTWdBQUFBWUJBSllIQVFDZlxcXG5FQUVBT0IwQUFKTUFBUUFlTXdBQUJBY0VBRnpXQVFBSEV3RUFkdnNBQU44SkFRQWQ4UUVBcnhVREFKWDhBQUNzQ3dJQUxQRUJBTm9WQVFcXFxuQ0kxUUVBTXhJQkFPNHpBQUJRQ1FNQXFTUUFBT3dDQXdBSk1nQUF3d1FEQUFJeUFBQ3VCQU1BS3RjQkFOTVRBUUF3SWdBQUtRSURBQ0h1XFxcbkFRQUVGUUVBZHpFQUFJSUVBUUJlTXdBQTdnY0NBTzMrQUFDTER3RUFFak1BQU0wR0JBQ1NNd0FBYndnREFCN1VBUURoRUFFQXFOVUJBRlxcXG5NU0FRQnIvd0FBRXhBQkFQSCtBQUNQRHdFQW16SUFBUHdGQVFDZCt3QUFCZ29CQUpyV0FRQkZFd0VBd3pJQUFEWUdBZ0N5TWdBQUZBWUNcXFxuQUkvOEFBQ2dDd0lBYkNFQUFQMEJBUUNaN2dFQVZoVUJBTDc5QUFCTURnTUF0eThBQUJBRUFRQmcxd0VBQ1JRQkFNUXpBQURzQ0FJQWl2XFxcbndBQUpZTEFnRDUxd0VBb0JRQkFEelZBUUR0RVFFQXl6SUFBRWdHQXdBcC9RQUEzZ3dDQUNqeEFRRFFGUU1Bb0IwQUFNb0FBUUNmL2dBQVxcXG5QUThCQUhFaEFBQUNBZ0lBYTlVQkFCWVNBUUJPMWdFQStSSUJBRExVQVFEMUVBRUFGVE1BQU5rR0JnQmsrd0FBelFrQkFJUXlBQURsQlFcXFxuRUFWek1BQU44SEF3QTEvQUFBNEFvQ0FKSXZBQURyQXdFQWJ5RUFBQUFDQVFDck13QUFyZ2dEQURUVUFRRDNFQUVBd2RRQkFIa1JBUUM5XFxcbi9RQUFTUTREQUwzV0FRQm1Fd0VBTk80QkFCSVZBUURNMWdFQWRSTUJBRFh4QVFEa0ZRRUFuL3dBQU1VTEFnQlcxUUVBQVJJQkFNY3pBQVxcXG5EMENBTUFBUHNBQUpNSkFnQmwxd0VBRGhRQkFFalhBUUR4RXdFQWhDQUFBRk1CQVFCSzFBRUFEUkVCQUdJZEFBQzdBQUVBakRFQUFKY0VcXFxuQVFCSklBQUFPZ0VDQU9ReUFBQnBCZ0VBVXRVQkFQMFJBUUJHMVFFQTlSRUJBQ1RXQVFEUEVnRUF1ZTRCQUc4VkFRRGExQUVBa1JFQkFNXFxcbm9CQUFBeUFBSUFRRElBQUhzRkF3Q28rd0FBRXdvQkFOei9BQUI3RUFFQUpUSUFBQ29GQXdDWjF3RUFRaFFCQUNMV0FRRE5FZ0VBS1BzQVxcXG5BTFVKQVFBNk1BQUFNd1FCQUxML0FBQmFFQUVBa3RVQkFEMFNBUUI3SUFBQVNnRUJBQ3J4QVFEV0ZRTUFILzBBQU1vTUFnQVg4Z0VBR3hcXFxuWUJBSFhWQVFBZ0VnRUE4ZndBQUdzTUFnQnUvUUFBWWcwREFOMGtBQUE2QXdFQUJkWUJBTEFTQVFBdjdnRUFEaFVCQUNmOUFBRGFEQUlBXFxcbkx0VUJBT0FSQVFBbzFBRUE2eEFCQURidUFRQVVGUUVBNnpJQUFIQUdBUUI0MWdFQUl4TUJBQlQ3QUFDbENRSUFFUDhBQUxnUEFRQU8xZ1xcXG5FQXVSSUJBSzM3QUFBWUNnRUFjTlVCQUJzU0FRQTRMd0FBa1FNQkFFb3ZBQUNqQXdFQU92OEFBT0lQQVFCQjF3RUE2aE1CQUlqWEFRQXhcXFxuRkFFQURUSUFBTThFQXdCTDFnRUE5aElCQUxFQ0FBQS9BQUVBcGpNQUFKOElBd0IwMXdFQUhSUUJBQ3o5QUFEa0RBSUFDU0VBQUgwQkFnXFxcbkFBOFFFQWNoVUNBQVA4QUFCNkNnTUFZUjBBQUxvQUFRRHkxd0VBbVJRQkFLdjdBQUFXQ2dFQXAvOEFBRThRQVFCazFnRUFEeE1CQU4zOFxcXG5BQUJCREFJQXZ0UUJBSFlSQVFEYU13QUFJUWtDQUdjZEFBREFBQUVBWUM4QUFMa0RBUUNnSkFBQTBRSURBRmI3QUFDL0NRRUF2U1FBQUJcXFxub0RBUURmK3dBQUxBb0JBTGYvQUFCZkVBRUFmZGNCQUNZVUFRQ1dNZ0FBOXdVQkFMZlZBUUJpRWdFQU92SUJBRDRXQVFCdU1RQUFlUVFCXFxcbkFHMHpBQUFYQ0FNQWZ2OEFBQ1lRQVFBMDFRRUE1aEVCQUtZeUFBQUhCZ0VBZk80QkFEd1ZBUUF0N2dFQURCVUJBRnY5QUFBcERRTUFHalxcXG5NQUFQUUdCZ0QwTWdBQWVRWUJBTHN5QUFBbUJnSUFRek1BQUpRSEJBRFVMd0FBTFFRQkFOTDhBQUFyREFJQWlTRUFBQjhDQXdDdUJ3RUFcXFxudHhBQkFOUC9BQUIwRUFFQUxTOEFBSVlEQVFCVy9RQUFHZzBEQUFVaEFBQjJBUU1BLy9zQUFIQUtBUURxK3dBQU53b0RBQjNYQVFER0V3XFxcbkVBUXU0QkFCZ1ZBUUQ4L1FBQXFRNEVBTmd6QUFBYUNRUUFkUVlBQUhBQUFnRExBUUFBTkFBQ0FHdjlBQUJaRFFNQUtqTUFBQzBIQXdDblxcXG4xd0VBVUJRQkFGSDdBQUM2Q1FFQS9UTUFBSDBKQXdCWDdnRUFJaFVCQUtBQUFBQUFBQUVBS3k4QUFJUURBUUFFMUFFQXh4QUJBSUVnQUFcXFxuQlFBUUVBZVE4QUFJUUFBd0RzL2dBQWlnOEJBQy84QUFEVUNnSUFVaDBBQUtzQUFRQkIvd0FBNlE4QkFLM1ZBUUJZRWdFQU15RUFBSjhCXFxcbkFRQ3Ixd0VBVkJRQkFHUFVBUUFsRVFFQWNmNEFBUGdPQWdDdit3QUFHZ29CQURiWEFRRGZFd0VBWGgwQUFMY0FBUURqQWdBQVZnQUJBS1xcXG5UK0FBQkNEd0VBTmVBQkFLd1VBUUJVTXdBQTBnY0ZBQm9oQUFDTkFRRUFpLzRBQUNjUEFnQmY3Z0VBSmhVQkFFL1hBUUQ0RXdFQWVCMEFcXFxuQU1RQUFRQS84UUVBN2hVQkFNZi9BQUJzRUFFQVN6RUFBRllFQVFDbTFRRUFVUklCQUFyOUFBQ2dEQUlBZGlRQUFGRUNBd0EzNEFFQXJoXFxcblFCQUdNZEFBQzhBQUVBWXZzQUFNc0pBUUQyL1FBQWdBNEVBSHI5QUFDR0RRTUFvdjhBQUVvUUFRREVBUUFBSXdBREFQVFVBUUNyRVFFQVxcXG5pRE1BQUZjSUF3Q2kxUUVBVFJJQkFKQXZBQURwQXdFQWdUSUFBT0lGQVFDeTFBRUFiQkVCQUJyV0FRREZFZ0VBeVB3QUFCY01BZ0FlMWdcXFxuRUF5UklCQUxQOEFBRHRDd0lBaHYwQUFLb05Bd0NXSUFBQVpBRUJBQlRYQVFDOUV3RUExLzRBQUhVUEFRQ00vd0FBTkJBQkFIY3ZBQURRXFxcbkF3RUF0QWNCQUx3UUFRQ0pJQUFBV0FFQkFBY3lBQUM5QkFNQUZmMEFBTFlNQWdDMzFnRUFZQk1CQURUeEFRRGpGUUVBV2Y0QUFPUU9BUVxcXG5EVTFnRUFmUk1CQUFqWEFRQ3hFd0VBOXRjQkFKMFVBUUJPMXdFQTl4TUJBTnZYQVFDQ0ZBRUF2dndBQUFNTUFnQ0dMd0FBM3dNQkFEVXZcXFxuQUFDT0F3RUFnZnNBQU9vSkFRQnAxUUVBRkJJQkFJa3hBQUNVQkFFQWNmd0FBR1FMQWdCYjFBRUFIUkVCQUV2L0FBRHpEd0VBMi9zQUFDXFxcbmNLQVFCRE1nQUFoQVVEQUxVQ0FBQkRBQUVBWk5VQkFBOFNBUUJ3TVFBQWV3UUJBTjM3QUFBcENnSUF6aThBQUNjRUFRQmFJUUFBMGdFRFxcXG5BSFVoQUFBS0FnSUFmLzBBQUpVTkF3Q0FNd0FBUndnQ0FFei9BQUQwRHdFQXk5WUJBSFFUQVFEaS9nQUFnQThCQU1YL0FBQnFFQUVBcmpcXFxuSUFBQThHQVFCcC9nQUE4dzRCQURVeUFBQmFCUU1BdkNRQUFCa0RBUUM3THdBQUZBUUJBS1AvQUFCTEVBRUFGak1BQU44R0JnQXI4UUVBXFxcbjJSVUJBQkg4QUFDWUNnSUFSQzhBQUowREFRRFQrd0FBSHdvQkFEdldBUURtRWdFQUQvMEFBS29NQWdCRzhRRUE5UlVCQUk0eUFBRHZCUVxcXG5FQW5EQUFBRFlFQWdDbUhRQUEwQUFCQUwweUFBQXFCZ0lBb3ZzQUFBc0tBUUFuMVFFQTJSRUJBTVg4QUFBUkRBSUFMVE1BQURvSEJRQmFcXFxuL2dBQTVRNEJBQXpXQVFDM0VnRUFnU1FBQUhZQ0JBQk8vZ0FBMmc0QkFFWC9BQUR0RHdFQTd6SUFBSFFHQVFBdEhRQUFpUUFCQURVeEFBXFxcbkJBQkFFQVFqTUFBSkVIQXdBWDhRRUFuUlVEQUN2WEFRRFVFd0VBUVIwQUFKc0FBUUJkL3dBQUJSQUJBQVA5QUFDU0RBSUF6UDRBQUdvUFxcXG5BUUF2MVFFQTRSRUJBQ1A4QUFDOENnSUFJdFVCQU5RUkFRRDRNZ0FBZlFZQkFFTXhBQUJPQkFFQVVOUUJBQk1SQVFEYkFnQUFUUUFDQU1cXFxudjhBQUFkREFJQXNTUUFBQVFEQXdEdTF3RUFsUlFCQUMzVkFRRGZFUUVBa3RjQkFEc1VBUUNwTHdBQUFnUUJBQVl5QUFDNkJBTUFJaThBXFxcbkFIc0RBUUFVTHdBQWJRTUJBSnN3QUFBMEJBSUFxZTRCQUdBVkFRQjAvUUFBZEEwREFHb2RBQUREQUFFQVh1QUJBTlVVQVFEVzFRRUFnUlxcXG5JQkFBVFZBUUM3RVFFQW52d0FBTU1MQWdCVElRQUF2UUVEQUNIVUFRRGtFQUVBcGU0QkFGd1ZBUUJuTHdBQXdBTUJBTlFEQUFCa0FBSUFcXFxuZ3Z3QUFJWUxBZ0NZN2dFQVZSVUJBQjh2QUFCNEF3RUEwOWNCQUhvVUFRQVRNd0FBMFFZR0FGNHlBQUNvQlFJQWRDOEFBTTBEQVFCc013XFxcbkFBRkFnREFJUWtBQUNDQWdRQVp2NEFBUEVPQVFDTEJ3RUFsQkFCQVBiK0FBQ1dEd01BaGYwQUFLY05Bd0NMMUFFQVRSRUJBSWNrQUFDT1xcXG5BZ1FBVDlZQkFQb1NBUUI5L2dBQURBOENBSHo5QUFDTURRTUF3ZndBQUFrTUFnQ2kxQUVBWVJFQkFENGdBQUEwQVFJQW1OVUJBRU1TQVFcXFxuQThNZ0FBYndVREFIb2tBQUJkQWdNQUV2MEFBTEFNQWdBcDFBRUE3QkFCQUJQdUFRRDNGQUVBamZ3QUFKd0xBZ0FwTHdBQWdnTUJBS0hXXFxcbkFRQk1Fd0VBRVBFQkFJZ1ZBd0FzSFFBQWlBQUJBTGpYQVFCaEZBRUE3RElBQUhFR0FRQkZNUUFBVUFRQkFMLzlBQUJQRGdNQVRkVUJBUFxcXG5rUkFRQ0JNUUFBakFRQkFHZjhBQUJOQ3dNQU5QOEFBTndQQVFEajFnRUFqQk1CQUhEOUFBQm9EUU1BQ05ZQkFMTVNBUUFSMXdFQXVoTUJcXFxuQUozL0FBQkZFQUVBSDlVQkFORVJBUUJ6MXdFQUhCUUJBSlg5QUFEUkRRTUFYLzhBQUFjUUFRQjBJUUFBQ1FJQkFNVCtBQUJpRHdFQUk5XFxcblVCQU5VUkFRQjhJQUFBU3dFQkFLb3ZBQUFEQkFFQW50WUJBRWtUQVFCVkx3QUFyZ01CQUlMVkFRQXRFZ0VBQWRZQkFLd1NBUUNxMXdFQVxcXG5VeFFCQUY4aEFBRGhBUUlBU3Y4QUFQSVBBUUIzMUFFQU9SRUJBQ1hWQVFEWEVRRUFvdjBBQVBnTkF3Q1Uvd0FBUEJBQkFJNy9BQUEyRUFcXFxuRUFPOVFCQVA0UUFRQUoxd0VBc2hNQkFHM1ZBUUFZRWdFQTZqTUFBRVFKQXdCMzdnRUFPQlVCQUt6dUFRQmlGUUVBVFRNQUFMb0hCQUNsXFxcbjFnRUFVQk1CQU1JekFBRG1DQVFBWWRZQkFBd1RBUUFCL1FBQWpnd0NBTkxWQVFCOUVnRUFDQ0FBQUJzQkFRQ1AvUUFBeFEwREFDY3lBQVxcXG5Bd0JRTUFSOVFCQUFvUkFRQ2RKQUFBeUFJREFFdnhBUUQ3RlFJQS9OVUJBS2NTQVFBSzFRRUF3QkVCQUliN0FBRHZDUUVBR2RjQkFNSVRcXFxuQVFBUE13QUF3UVlFQUdyOUFBQldEUU1BbmZ3QUFNRUxBZ0ErL0FBQThnb0NBR1RnQVFEYkZBRUEwUU1BQUdBQUFRQ3Yvd0FBVnhBQkFEXFxcblBVQVFEMkVBRUEvdnNBQUc4S0FRRGMxQUVBa3hFQkFQRDdBQUJKQ2dNQTNUTUFBQ2NKQWdEMS9BQUFkZ3dDQU9iOEFBQlZEQUlBVk5VQlxcXG5BUDhSQVFEZkh3QUFCZ0VEQUlJZ0FBQlJBUUVBci80QUFFMFBBUUE5MUFFQUFCRUJBTWtCQUFBd0FBSUFZT0FCQU5jVUFRQXAvd0FBMFFcXFxuOEJBTFl6QUFET0NBSUFWL3NBQU1BSkFRQ3kvZ0FBVUE4QkFBUFhBUUNzRXdFQTZkVUJBSlFTQVFEaEpBQUFQZ01CQUpRSEFRQ2RFQUVBXFxcbmp6SUFBUEFGQVFCSjRBRUF3QlFCQUl6VkFRQTNFZ0VBWFRNQUFPd0hBZ0E1TUFBQU1nUUJBRzNVQVFBdkVRRUFTUzhBQUtJREFRQWk4Z1xcXG5FQUpoWUJBUDR5QUFDREJnRUFuTmNCQUVVVUFRQjVNUUFBaEFRQkFKZldBUUJDRXdFQXlBRUFBQzRBQWdBNElRQUFwQUVCQUt6V0FRQlZcXFxuRXdFQUlQd0FBTFlLQWdCK01nQUEzd1VDQUNUOUFBRFVEQUlBM3pJQUFHUUdBUUJUL0FBQUhBc0NBTG4rQUFCWER3RUFidGNCQUJjVUFRXFxcbkI0TXdBQU13Z0RBSi8vQUFCSEVBRUFHZTRCQVAwVUFRQVo4UUVBb3hVREFJRFVBUUJDRVFFQUhmd0FBTEFLQWdEL01BQUFPZ1FDQUdQN1xcXG5BQURNQ1FFQU92RUJBT2tWQVFBOE13QUFlZ2NFQUlmOEFBQ1FDd0lBWE5RQkFCNFJBUUNwL2dBQVJ3OEJBQnJVQVFEZEVBRUF1KzRCQUhcXFxuRVZBUUJPMVFFQStoRUJBTVQvQUFCcEVBRUFJOVFCQU9ZUUFRRGMvQUFBUHd3Q0FJL1ZBUUE2RWdFQVZ0UUJBQmdSQVFDTS9RQUF2QTBEXFxcbkFNTFZBUUJ0RWdFQXUvMEFBRU1PQXdCODFnRUFKeE1CQUt2VUFRQm1FUUVBVjlVQkFBSVNBUURrL0FBQVVRd0NBQzh5QUFCSUJRTUF2RFxcXG5NQUFOb0lBZ0IrL2dBQURnOENBRS9VQVFBU0VRRUFTdGNCQVBNVEFRQm5NUUFBY2dRQkFKNzdBQUFIQ2dFQWJ2OEFBQllRQVFDUS93QUFcXFxuT0JBQkFBRFhBUUNwRXdFQU1kUUJBUFFRQVFCWjFBRUFHeEVCQURzaEFBQ21BUU1BZWRjQkFDSVVBUUJHL0FBQUFnc0NBRXN6QUFDeUJ3XFxcbk1BUWZ3QUFQZ0tBZ0I1TWdBQTBBVUNBSlF5QUFEMUJRRUE2OVFCQUtJUkFRQWYxd0VBeUJNQkFDZ3ZBQUNCQXdFQTZQc0FBRFVLQVFDaVxcXG5KQUFBMXdJREFGblhBUUFDRkFFQXV2d0FBUHNMQWdBdUhRQUFpZ0FCQUpmN0FBQUFDZ0VBakNRQUFKb0NBZ0NsSFFBQXp3QUJBTk16QUFcXFxuQU9DUUlBOVAwQUFIZ09CQUNqQndFQXJCQUJBSTB2QUFEbUF3RUE5L3NCQUdRV0FRQis3Z0VBUFJVQkFESC9BQURaRHdFQUJQMEFBSlFNXFxcbkFnQStNZ0FBZFFVREFHd2tBQUE3QWdJQTZkY0JBSkFVQVFCMi9RQUFlZzBEQUNnekFBQW9Cd0lBQXRZQkFLMFNBUUJnL2dBQTZ3NEJBRlxcXG5nZEFBQ3hBQUVBanYwQUFNSU5Bd0FMTWdBQXlRUURBS1F2QUFEOUF3RUEyUHdBQURjTUFnRFQvQUFBTFF3Q0FFYlVBUUFKRVFFQUVETUFcXFxuQU1VR0JBQnExZ0VBRlJNQkFNNHpBQUFEQ1FJQWR3OEFBSUVBQXdDMzF3RUFZQlFCQUlyN0FBRHpDUUVBTHk4QUFJZ0RBUUJ5TXdBQUpnXFxcbmdDQUhra0FBQmFBZ01BeUNRQUFDVURBUUNGMUFFQVJ4RUJBSGJVQVFBNEVRRUF3VE1BQU9RSUFnQjZMd0FBMHdNQkFQbldBUUNpRXdFQVxcXG5LOVFCQU80UUFRQjExQUVBTnhFQkFGSCtBQURkRGdFQXZ4MEFBT2tBQVFDQU1RQUFpd1FCQUNmVUFRRHFFQUVBQ0M4QUFHRURBUUE2NEFcXFxuRUFzUlFCQUlFekFBQkpDQUlBWHY4QUFBWVFBUUJmMXdFQUNCUUJBUElCQUFBNkFBSUFPZFVCQU9zUkFRRDUxQUVBc0JFQkFFTXZBQUNjXFxcbkF3RUFIZjBBQU1ZTUFnQWYvQUFBdEFvQ0FIMGtBQUJtQWdRQVB2OEFBT1lQQVFCMjF3RUFIeFFCQUo4ZEFBREpBQUVBRnU0QkFQb1VBUVxcXG5CV01nQUFtQVVDQUhyL0FBQWlFQUVBS2RZQkFOUVNBUUJVN2dFQUlSVUJBRm4vQUFBQkVBRUF6OVlCQUhnVEFRRDIxZ0VBbnhNQkFMVXpcXFxuQUFETUNBSUF1ZGNCQUdJVUFRRFMvd0FBY3hBQkFGZ3pBQURpQndJQUtpOEFBSU1EQVFEaEFnQUFWQUFCQUdqOEFBQlFDd01BS1RNQUFDXFxcbm9IQXdEaC9BQUFTd3dDQURMWEFRRGJFd0VBVlBzQUFMMEpBUURrMUFFQW14RUJBQzBpQUFBa0FnTUFzZjBBQUNVT0F3Q1Uxd0VBUFJRQlxcXG5BSWorQUFBaER3SUF5TmNCQUhFVUFRQkQvd0FBNnc4QkFDRFVBUURqRUFFQVBmd0FBUEFLQWdBWS9RQUF2QXdDQUlmK0FBQWZEd0lBMENcXFxuOEFBQ2tFQVFENSt3QUFaQW9EQURzeUFBQnNCUU1BaGRZQkFEQVRBUUNISUFBQVZnRUJBRjNYQVFBR0ZBRUFSeDBBQUtFQUFRQkMvQUFBXFxcbitnb0NBRDh2QUFDWUF3RUFndjRBQUJVUEFnREYxZ0VBYmhNQkFJanVBUUJHRlFFQTZUSUFBRzRHQVFCTjFBRUFFQkVCQUZMOEFBQWFDd1xcXG5JQUhESUFBQW9GQkFEdUh3QUFEQUVEQUVqVUFRQUxFUUVBU1RNQUFLb0hBZ0RpMVFFQWpSSUJBQlR5QVFBWUZnRUFPVElBQUdZRkF3QUZcXFxuSUFBQUdBRUJBQjd4QVFDeUZRTUFPUElCQUR3V0FRQTdMd0FBbEFNQkFLLzlBQUFmRGdNQTJ0WUJBSU1UQVFEcy93QUFpQkFCQUN6V0FRXFxcbkRYRWdFQUpqSUFBQzBGQXdDVC93QUFPeEFCQUJRekFBRFhCZ0lBZVNBQUFFZ0JBUUNQL3dBQU54QUJBSE14QUFCK0JBRUFnOVVCQUM0U1xcXG5BUUQ1K3dFQVpoWUJBTFFBQUFBSUFBSUF3djBBQUZnT0F3QXlIUUFBalFBQkFCalVBUURiRUFFQWYvOEFBQ2NRQVFBejhRRUE0aFVCQUtcXFxuQXlBQUFCQmdFQVkvMEFBRUVOQXdCeDF3RUFHaFFCQUswekFBQzBDQU1BdHdJQUFFVUFBUUFSOGdFQUZCWUJBR3Z4QVFBSUZnSUFkL3NBXFxcbkFPQUpBUUQ2L2dBQW9nOERBR0hVQVFBakVRRUE2aklBQUc4R0FRQlYxUUVBQUJJQkFLc2RBQURWQUFFQXZQNEFBRm9QQVFDeDFnRUFXaFxcXG5NQkFINHhBQUNKQkFFQXNkVUJBRndTQVFDVi9nQUFNdzhCQUI4ekFBQUlCd1FBRE5jQkFMVVRBUUJpMWdFQURSTUJBQTdYQVFDM0V3RUFcXFxuRjlRQkFOb1FBUUFRL0FBQWxnb0NBQnI4QUFDcUNnSUFWZGNCQVA0VEFRQTBNUUFBUHdRQkFBZ3pBQUNvQmdRQVFkVUJBUEVSQVFDSEJ3XFxcbkVBa0JBQkFLeitBQUJLRHdFQUtmSUJBQzBXQVFCRzRBRUF2UlFCQU1Na0FBQWdBd0VBSmlBQUFDUUJBd0JKQVFBQUlBQUNBT2N6QUFBOVxcXG5DUUlBSENFQUFJOEJBUUJZTHdBQXNRTUJBUC9WQVFDcUVnRUFtLzRBQURrUEFRQXYvUUFBNmd3Q0FCRFhBUUM1RXdFQVpSMEFBTDRBQVFcXFxuQWUvQUFBc2dvQ0FKMzlBQURwRFFNQWR5QUFBRVlCQVFETEpBQUFLQU1CQUxydUFRQndGUUVBRHY4QUFMWVBBUUIrK3dBQTV3a0JBRGN6XFxcbkFBQm5Cd01BalNRQUFKd0NBZ0NaL1FBQTNRMERBR1g5QUFCSERRTUFyTmNCQUZVVUFRQWM4UUVBckJVREFQOHlBQUNFQmdJQWV1NEJBRFxcXG5vVkFRQnI0QUVBNGhRQkFFZitBQURQRGdFQU45WUJBT0lTQVFCa01nQUFzQVVCQUZqOEFBQW1Dd0lBQTlZQkFLNFNBUUI0MUFFQU9oRUJcXFxuQUFyL0FBQ3lEd0VBby8wQUFQc05Bd0JFSFFBQW5nQUJBTkFrQUFBdEF3RUFYcXNBQUpBSkFRRDgvQUFBaEF3Q0FPRC9BQUI4RUFFQUN1XFxcbjRCQU80VUFRQTlNUUFBU0FRQkFKZ3pBQUIrQ0FJQTBQd0FBQ2NNQWdCdUx3QUF4d01CQUM4Z0FBQW5BUUVBcXZ3QUFOc0xBZ0E2MUFFQVxcXG4vUkFCQUNQOUFBRFNEQUlBOHk0QUFGZ0RBUUJmL2dBQTZnNEJBSk12QUFEc0F3RUFoaUFBQUZVQkFRQnQvUUFBWHcwREFKOGtBQURPQWdcXFxuTUFKTlFCQU9jUUFRRDQrd0VBWlJZQkFHTFVBUUFrRVFFQVRmNEFBTmtPQVFBNzFRRUE3QkVCQUVuK0FBRFJEZ0lBcTlZQkFGUVRBUUF5XFxcbk1RQUFQUVFCQU1MWEFRQnJGQUVBblAwQUFPWU5Bd0RDTHdBQUd3UUJBUFF6QUFCaUNRTUFQQ0VBQUtrQkFRRG8xd0VBanhRQkFJai9BQVxcXG5Bd0VBRUFuZGNCQUVZVUFRREJKQUFBSGdNQkFPQWtBQUE5QXdFQXVPNEJBRzRWQVFCdy9BQUFZZ3NDQUd6OEFBQmFDd0lBckM4QUFBVUVcXFxuQVFBQzhnRUFFaFlCQVBQN0FBQlNDZ01BZUM4QUFORURBUUJWTWdBQWxnVUNBQzR2QUFDSEF3RUFKUHNBQUxFSkFRQ3ZNZ0FBRUFZQkFFXFxcbm9kQUFDa0FBRUFKUzhBQUg0REFRQnU3Z0VBTUJVQkFDMzlBQURtREFJQWF2OEFBQklRQVFCbUpBQUFNZ0lCQUhuVkFRQWtFZ0VBTWZJQlxcXG5BRFVXQVFCaC9BQUFPd3NEQVAzWEFRQ2tGQUVBWC8wQUFEVU5Bd0FhN2dFQS9oUUJBRWd6QUFDbUJ3UUFxZnNBQUJRS0FRQmYxQUVBSVJcXFxuRUJBRzNXQVFBWUV3RUE2UHdBQUZrTUFnQmIrd0FBeEFrQkFHTHVBUUFvRlFFQVJqRUFBRkVFQVFDc013QUFzUWdEQUVueEFRRDRGUUVBXFxcbmxUSUFBUFlGQVFBek13QUFWUWNFQUEvOEFBQ1VDZ0lBaXY4QUFESVFBUUNITXdBQVZRZ0NBSFlHQUFCeUFBSUF6ZjhBQUhBUUFRQ0cvZ1xcXG5BQUhROENBT2pXQVFDUkV3RUFRUHdBQVBZS0FnQUsvQUFBaWdvQ0FJZ0hBUUNSRUFFQXdDOEFBQmtFQVFDMjFRRUFZUklCQUtqL0FBQlFcXFxuRUFFQWlUSUFBT29GQVFCNS9RQUFndzBEQUFBekFBQ0dCZ1VBVlIwQUFLNEFBUUMxSkFBQUVBTURBRXd2QUFDbEF3RUFZekVBQUc0RUFRXFxcbkFDSUFBQUZRRUJBRmN2QUFDd0F3RUEyL3dBQUQwTUFnQ2YxQUVBWUJFQkFJaldBUUF6RXdFQUdQOEFBTUFQQVFCVUx3QUFyUU1CQUlYdVxcXG5BUUJERlFFQTBTOEFBQ29FQVFERk13QUE3Z2dDQUZQN0FBQzhDUUVBbHpFQUFKOEVBUURQTHdBQUtBUUJBQmJWQVFESkVRRUFBVElBQUtcXFxuc0VBd0NDL1FBQW5nMERBQmIvQUFDK0R3RUFVQ0VBQUxNQkF3QUo4UUVBaEJVQ0FKMytBQUE3RHdFQUR5RUFBSVFCQVFBT01nQUEwZ1FFXFxcbkFFRGdBUUMzRkFFQUNqTUFBSzhHQXdBTzdnRUE4aFFCQUVYOEFBQUFDd0lBU1A4QUFQQVBBUUJIL0FBQUJBc0NBQVhWQVFDOEVRRUFhU1xcXG5FQUFQY0JBUURjSkFBQU9RTUJBTmpYQVFCL0ZBRUFWZnNBQUw0SkFRQ0UvZ0FBR1E4Q0FDTHVBUUFGRlFFQWN0Y0JBQnNVQVFEd013QUFcXFxuVmdrREFMSFVBUUJyRVFFQW1mOEFBRUVRQVFBdS9RQUE2QXdDQUZraEFBRFBBUU1BamRVQkFEZ1NBUUFuMWdFQTBoSUJBT3YrQUFDSkR3XFxcbkVBTkRNQUFGa0hCZ0FtOFFFQXloVURBRVF4QUFCUEJBRUFOdUFCQUswVUFRQzVIUUFBNHdBQkFPcldBUUNURXdFQTd0WUJBSmNUQVFER1xcXG4vZ0FBWkE4QkFFeldBUUQzRWdFQXUvd0FBUDBMQWdBeklBQUFLQUVDQUFrZ0FBQWNBUUVBZHpNQUFERUlBZ0JnTVFBQWF3UUJBSXpVQVFcXFxuQk9FUUVBc3lRQUFBb0RBd0RRMUFFQWh4RUJBTXYvQUFCdUVBRUFyZjBBQUJrT0F3Q0w3Z0VBU0JVQkFMSCtBQUJQRHdFQTZ2d0FBRjBNXFxcbkFnQjJMd0FBendNQkFMNHlBQUFzQmdJQXNkY0JBRm9VQVFENDFRRUFveElCQUhQOUFBQnhEUU1BR3Y4QUFNSVBBUUNpL0FBQXl3c0NBQlxcXG5zaEFBQ09BUUVBc3RVQkFGMFNBUUJnK3dBQXlRa0JBQzd1QVFBTkZRRUFjU0FBQUVJQkFRQzcxQUVBZEJFQkFQd3pBQUI2Q1FNQTcvNEFcXFxuQUkwUEFRRDcxQUVBc2hFQkFDalhBUURSRXdFQS8vd0FBSW9NQWdENDFnRUFvUk1CQURYVkFRRG5FUUVBTkIwQUFJOEFBUUJsSVFBQTdBXFxcbkVDQUN6dUFRQUxGUUVBM2RVQkFJZ1NBUUJBSVFBQXJRRUJBQzB5QUFCQ0JRTUFsdTRCQUZNVkFRQysvd0FBWmhBQkFMWHVBUUJyRlFFQVxcXG5FVE1BQU1rR0JBQ0ovUUFBc3cwREFOY3lBQUJjQmdFQWtTOEFBT29EQVFDWUJ3RUFvUkFCQUdza0FBQTVBZ0lBd2lRQUFCOERBUUFPMVFcXFxuRUF3aEVCQUx6L0FBQmtFQUVBbnYwQUFPd05Bd0FWSVFBQWlRRUJBQlhYQVFDK0V3RUFyUHdBQU44TEFnQ1kvQUFBc3dzREFHYjhBQUJLXFxcbkN3TUFieTBBQUZZREFRQ2MxUUVBUnhJQkFBSDhBQUIwQ2dNQVNlNEJBQm9WQVFBWklRQUFqQUVCQU5ja0FBQTBBd0VBUXRZQkFPMFNBUVxcXG5BRU13QUFsd1lGQUpneEFBQ2dCQUVBMVA0QUFISVBBUUJzTHdBQXhRTUJBQWJVQVFESkVBRUFIZFlCQU1nU0FRRFZNd0FBRWdrREFBZnVcXFxuQVFEckZBRUF6dFFCQUlVUkFRQUI4UUVBZEJVQ0FKSUhBUUNiRUFFQXZpUUFBQnNEQVFDOEx3QUFGUVFCQUUveEFRQUVGZ0lBRXY0QUFLXFxcbjhPQVFESC9nQUFaUThCQUMzOEFBRFFDZ0lBaWlRQUFKWUNBZ0R0SHdBQUNRRURBTlhXQVFCK0V3RUFzaThBQUFzRUFRQ0wvQUFBbUFzQ1xcXG5BRmd4QUFCakJBRUE0LzhBQUg4UUFnQ0Urd0FBN1FrQkFHWDdBQURPQ1FFQWsrNEJBRkFWQVFBSU1nQUF3QVFEQVB3eUFBQ0JCZ0VBbFBcXFxuNEFBRElQQVFCUEx3QUFxQU1CQUljdkFBRGdBd0VBZGU0QkFEWVZBUUJYSUFBQVBBRUVBQmZXQVFEQ0VnRUE0ZFVCQUl3U0FRQ3MvUUFBXFxcbkZnNERBQTR2QUFCbkF3RUFIU0VBQUpBQkFRQWNNd0FBL2dZREFJTXZBQURjQXdFQXc5VUJBRzRTQVFCek13QUFLQWdDQUR2eEFRRHFGUVxcXG5FQWhpUUFBSW9DQkFCbDFnRUFFQk1CQU9EOEFBQklEQU1BMHdNQUFHSUFBZ0FEMUFFQXhoQUJBRURXQVFEckVnRUFyQ1FBQVBVQ0F3QTVcXFxuTHdBQWtnTUJBRUR4QVFEdkZRRUFiL3NBQU5nSkFRQVQvUUFBc2d3Q0FNYlVBUUI5RVFFQVNQSUJBRmdXQXdDRE1RQUFqZ1FCQUM3V0FRXFxcbkRaRWdFQVNQRUJBUGNWQVFDSit3QUE4Z2tCQUlIdUFRQS9GUUVBSmZ3QUFNQUtBZ0FqOGdFQUp4WUJBRTR6QUFDK0J3UUEwaThBQUNzRVxcXG5BUUJVL1FBQUZBMERBQUgvQUFDcER3RUFRTmNCQU9rVEFRQzgxd0VBWlJRQkFMUWRBQURlQUFFQVB0UUJBQUVSQVFDcC9BQUEyUXNDQUNcXFxuTDlBQURRREFJQUl5OEFBSHdEQVFCT01RQUFXUVFCQUlyK0FBQWxEd0lBQS84QUFLc1BBUUNTTWdBQTh3VUJBUGI4QUFCNERBSUFQeDBBXFxcbkFKa0FBUUM0SFFBQTRnQUJBR2orQUFEeURnRUFhUjBBQU1JQUFRQ2JCd0VBcEJBQkFCc3pBQUQ2QmdRQXAvMEFBQWNPQXdEYi93QUFlaFxcXG5BQkFIejhBQUI2Q3dJQXBmMEFBQUVPQXdCQk13QUFqZ2NEQUtja0FBRG1BZ01BRmpJQUFQSUVCQUErTHdBQWx3TUJBSnovQUFCRUVBRUFcXFxuSVBzQUFLMEpBUUFXOFFFQW1oVURBRnN5QUFDaUJRSUE1dFVCQUpFU0FRQ2Uxd0VBUnhRQkFCVHVBUUQ0RkFFQVB6TUFBSWNIQWdEVU1nXFxcbkFBV1FZQkFDM3lBUUF4RmdFQWlQMEFBTEFOQXdEWjFBRUFrQkVCQUtyOUFBQVFEZ01BeHZ3QUFCTU1BZ0J1MVFFQUdSSUJBRG51QVFBV1xcXG5GUUVBaXRRQkFFd1JBUURRMXdFQWR4UUJBTGtBQUFBTkFBRUFJUEVCQUxnVkF3QUwxZ0VBdGhJQkFIQXZBQURKQXdFQSt0UUJBTEVSQVFcXFxuQmNMd0FBdFFNQkFLc3lBQUFNQmdFQW8vc0FBQXdLQVFBQ0x3QUFXd01CQUIveEFRQzFGUU1BYWZ3QUFGTUxBd0RVSkFBQU1RTUJBSkVrXFxcbkFBQ2tBZ01BYXpJQUFMY0ZBUUFJL0FBQWhnb0NBTExYQVFCYkZBRUEvek1BQUlNSkF3Q04rd0FBOWdrQkFQRDdBUUJkRmdFQVVqSUFBSlxcXG5BRkFnRGwxZ0VBamhNQkFLelZBUUJYRWdFQWxQc0FBUDBKQVFCakx3QUF2QU1CQUtJSEFRQ3JFQUVBQnZ3QUFJSUtBZ0JhL0FBQUtnc0NcXFxuQUhYL0FBQWRFQUVBMnY0QUFIZ1BBUUI1L3dBQUlSQUJBR0lrQUFBdUFnRUFDZndBQUlnS0FnQVJJUUFBaGdFQkFKNHhBQUNtQkFFQVVkXFxcblFCQUJRUkFRQWdMd0FBZVFNQkFLRFdBUUJMRXdFQWQ5VUJBQ0lTQVFDMjF3RUFYeFFCQUJYL0FBQzlEd0VBUk5jQkFPMFRBUUFjOGdFQVxcXG5JQllCQVBMN0FRQmZGZ0VBT3Z3QUFPb0tBZ0I3TXdBQU93Z0NBTGo5QUFBNkRnTUF3LzhBQUdnUUFRRGJNd0FBSXdrQ0FBei9BQUMwRHdcXFxuRUFLdFVCQU53UkFRQ2I3Z0VBV0JVQkFPSWtBQUEvQXdFQW52OEFBRVlRQVFEZU1nQUFZd1lCQUhUVkFRQWZFZ0VBZHU0QkFEY1ZBUUNlXFxcbjFRRUFTUklCQUVUeUFRQk1GZ01BTi9FQkFPWVZBUUNnL2dBQVBnOEJBQ3IvQUFEU0R3RUFUekVBQUZvRUFRQjgxQUVBUGhFQkFHZlVBUVxcXG5BcEVRRUFULzhBQVBjUEFRQ2gvZ0FBUHc4QkFLa3pBQUNwQ0FJQW1RY0JBS0lRQVFBUzdnRUE5aFFCQUpJa0FBQ25BZ01BbHRZQkFFRVRcXFxuQVFDci9BQUEzUXNDQUJuOUFBQytEQUlBNk5VQkFKTVNBUUFmN2dFQUF4VUJBSkgrQUFBdkR3RUF4d0VBQUN3QUFnQ0IxZ0VBTEJNQkFMXFxcbmNrQUFBVUF3RUFoTmNCQUMwVUFRQkMxd0VBNnhNQkFLSXpBQUNVQ0FNQVJkWUJBUEFTQVFCdzdnRUFNaFVCQUJIV0FRQzhFZ0VBZkRNQVxcXG5BRDBJQWdCQzFBRUFCUkVCQURMK0FBQzhEZ0VBTVIwQUFJd0FBUUE0TVFBQVF3UUJBSVVrQUFDR0FnUUFGUEVCQUpRVkF3RFExUUVBZXhcXFxuSUJBRFhXQVFEZ0VnRUFDVE1BQUt3R0F3QUkxQUVBeXhBQkFGRCtBQURjRGdFQWplNEJBRW9WQVFDVC9RQUF5dzBEQUh2V0FRQW1Fd0VBXFxcbjI5UUJBSklSQVFBMjhRRUE1UlVCQUMveUFRQXpGZ0VBN2RjQkFKUVVBUUQ1TWdBQWZnWUJBS295QUFBTEJnRUFyek1BQUx3SUJnRGtKQVxcXG5BQVFRTUJBQU1nQUFBV0FRRUFnUDBBQUpnTkF3Qk80QUVBeFJRQkFKdlZBUUJHRWdFQWhUSUFBT1lGQVFDTzF3RUFOeFFCQUhrekFBQTJcXFxuQ0FNQXNnY0JBTG9RQVFDMy9nQUFWUThCQUhBa0FBQkRBZ0lBSU5ZQkFNc1NBUUMwMUFFQWJoRUJBRlRYQVFEOUV3RUFSdklCQUZJV0F3XFxcbkJnSVFBQTR3RUJBQy9YQVFEWUV3RUFULzRBQU5zT0FRQjYxQUVBUEJFQkFNMGZBQUQzQUFNQWZUSUFBTnNGQkFDT013QUFaZ2dDQUxNelxcXG5BQURJQ0FJQUVQMEFBS3dNQWdBM0x3QUFrQU1CQUljeEFBQ1NCQUVBWFA4QUFBUVFBUUExSVFBQW9RRUJBRHZYQVFEa0V3RUFlREVBQUlcXFxuTUVBUUNHL0FBQWpnc0NBS1V2QUFEK0F3RUE4ZFlCQUpvVEFRQzFIUUFBM3dBQkFIMzdBQURtQ1FFQVNQd0FBQVlMQWdCV0hRQUFyd0FCXFxcbkFFZldBUUR5RWdFQVpmNEFBUEFPQVFBWS9BQUFwZ29DQVBFekFBQlpDUU1BakRJQUFPMEZBUUM1TWdBQUlnWUNBSG43QUFEaUNRRUE3dFxcXG5RQkFLVVJBUUNQTXdBQWFBZ0NBR1BXQVFBT0V3RUF0ek1BQU5BSUFnQmExUUVBQlJJQkFMSDhBQURwQ3dJQVZESUFBSlFGQWdEZSt3QUFcXFxuS3dvQkFITXZBQURNQXdFQWw5UUJBRmtSQVFDSi93QUFNUkFCQVBYVkFRQ2dFZ0VBSUFBQUFDQUFBQUFJQXdBQVlRQUFBQ0FBQUFBRUF3XFxcbkFBTWdBQUFETUFBQUFnQUFBQUFRTUFBTHdEQUFBZ0FBQUFKd01BQURFQUFBQnZBQUFBTVFBQUFFUWdBQUEwQUFBQU1RQUFBRVFnQUFBeVxcXG5BQUFBTXdBQUFFUWdBQUEwQUFBQVNRQUFBRW9BQUFCcEFBQUFhZ0FBQUV3QUFBQzNBQUFBYkFBQUFMY0FBQUM4QWdBQWJnQUFBSE1BQUFcXFxuQkVBQUFBV2dBQUFBd0RBQUJFQUFBQWVnQUFBQXdEQUFCa0FBQUFlZ0FBQUF3REFBQk1BQUFBU2dBQUFFd0FBQUJxQUFBQWJBQUFBR29BXFxcbkFBQk9BQUFBU2dBQUFFNEFBQUJxQUFBQWJnQUFBR29BQUFCRUFBQUFXZ0FBQUVRQUFBQjZBQUFBWkFBQUFIb0FBQUJvQUFBQVpnSUFBR1xcXG5vQUFBQnlBQUFBZVFJQUFIc0NBQUNCQWdBQWR3QUFBSGtBQUFBZ0FBQUFCZ01BQUNBQUFBQUhBd0FBSUFBQUFBb0RBQUFnQUFBQUtBTUFcXFxuQUNBQUFBQURBd0FBSUFBQUFBc0RBQUJqQWdBQWJBQUFBSE1BQUFCNEFBQUFsUUlBQUNBQUFBQkZBd0FBSUFBQUFBRURBQUFnQUFBQUNBXFxcbk1BQUFFREFBQ3lBd0FBdUFNQUFLVURBQUNsQXdBQUFRTUFBS1VEQUFBSUF3QUF4Z01BQU1BREFBQzZBd0FBd1FNQUFNSURBQUNZQXdBQVxcXG50UU1BQUtNREFBQmxCUUFBZ2dVQUFDY0dBQUIwQmdBQVNBWUFBSFFHQUFESEJnQUFkQVlBQUVvR0FBQjBCZ0FBVFE0QUFESU9BQURORGdcXFxuQUFzZzRBQUtzT0FBQ1pEZ0FBcXc0QUFLRU9BQUFMRHdBQXNnOEFBSEVQQUFDQUR3QUFzdzhBQUhFUEFBQ0FEd0FBM0JBQUFFRUFBQURHXFxcbkFBQUFRZ0FBQUVRQUFBQkZBQUFBamdFQUFFY0FBQUJJQUFBQVNRQUFBRW9BQUFCTEFBQUFUQUFBQUUwQUFBQk9BQUFBVHdBQUFDSUNBQVxcXG5CUUFBQUFVZ0FBQUZRQUFBQlZBQUFBVndBQUFHRUFBQUJRQWdBQVVRSUFBQUlkQUFCaUFBQUFaQUFBQUdVQUFBQlpBZ0FBV3dJQUFGd0NcXFxuQUFCbkFBQUFhd0FBQUcwQUFBQkxBUUFBYndBQUFGUUNBQUFXSFFBQUZ4MEFBSEFBQUFCMEFBQUFkUUFBQUIwZEFBQnZBZ0FBZGdBQUFDXFxcblVkQUFDeUF3QUFzd01BQUxRREFBREdBd0FBeHdNQUFHa0FBQUJ5QUFBQWRRQUFBSFlBQUFDeUF3QUFzd01BQU1FREFBREdBd0FBeHdNQVxcXG5BRDBFQUFCU0FnQUFZd0FBQUZVQ0FBRHdBQUFBWEFJQUFHWUFBQUJmQWdBQVlRSUFBR1VDQUFCb0FnQUFhUUlBQUdvQ0FBQjdIUUFBblFcXFxuSUFBRzBDQUFDRkhRQUFud0lBQUhFQ0FBQndBZ0FBY2dJQUFITUNBQUIwQWdBQWRRSUFBSGdDQUFDQ0FnQUFnd0lBQUtzQkFBQ0pBZ0FBXFxcbmlnSUFBQndkQUFDTEFnQUFqQUlBQUhvQUFBQ1FBZ0FBa1FJQUFKSUNBQUM0QXdBQVlRQUFBTDRDQUFCekFBQUFCd01BQUNBQUFBQVRBd1xcXG5BQUlBQUFBQk1EQUFBZ0FBQUFRZ01BQUNBQUFBQUlBd0FBUWdNQUFDQUFBQUFUQXdBQUFBTUFBQ0FBQUFBVEF3QUFBUU1BQUNBQUFBQVRcXFxuQXdBQVFnTUFBQ0FBQUFBVUF3QUFBQU1BQUNBQUFBQVVBd0FBQVFNQUFDQUFBQUFVQXdBQVFnTUFBQ0FBQUFBSUF3QUFBQU1BQUNBQUFBXFxcbkFJQXdBQUFRTUFBQ0FBQUFBQkF3QUFJQUFBQUJRREFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQVxcXG5BQUFnQUFBQUlBQUFBQkFnQUFBZ0FBQUFNd01BQUM0QUFBQXVBQUFBTGdBQUFDNEFBQUF1QUFBQUxnQUFBQ0FBQUFBeUlBQUFNaUFBQURcXFxuSWdBQUF5SUFBQU1pQUFBRFVnQUFBMUlBQUFOU0FBQURVZ0FBQTFJQUFBSVFBQUFDRUFBQUFnQUFBQUJRTUFBRDhBQUFBL0FBQUFQd0FBXFxcbkFDRUFBQUFoQUFBQVB3QUFBRElnQUFBeUlBQUFNaUFBQURJZ0FBQWdBQUFBTUFBQUFHa0FBQUEwQUFBQU5RQUFBRFlBQUFBM0FBQUFPQVxcXG5BQUFEa0FBQUFyQUFBQUVpSUFBRDBBQUFBb0FBQUFLUUFBQUc0QUFBQXdBQUFBTVFBQUFESUFBQUF6QUFBQU5BQUFBRFVBQUFBMkFBQUFcXFxuTndBQUFEZ0FBQUE1QUFBQUt3QUFBQklpQUFBOUFBQUFLQUFBQUNrQUFBQmhBQUFBWlFBQUFHOEFBQUI0QUFBQVdRSUFBR2dBQUFCckFBXFxcbkFBYkFBQUFHMEFBQUJ1QUFBQWNBQUFBSE1BQUFCMEFBQUFVZ0FBQUhNQUFBQmhBQUFBTHdBQUFHTUFBQUJoQUFBQUx3QUFBSE1BQUFCRFxcXG5BQUFBc0FBQUFFTUFBQUJqQUFBQUx3QUFBRzhBQUFCakFBQUFMd0FBQUhVQUFBQ1FBUUFBc0FBQUFFWUFBQUJuQUFBQVNBQUFBRWdBQUFcXFxuQklBQUFBYUFBQUFDY0JBQUJKQUFBQVNRQUFBRXdBQUFCc0FBQUFUZ0FBQUU0QUFBQnZBQUFBVUFBQUFGRUFBQUJTQUFBQVVnQUFBRklBXFxcbkFBQlRBQUFBVFFBQUFGUUFBQUJGQUFBQVRBQUFBRlFBQUFCTkFBQUFXZ0FBQUZvQUFBQkNBQUFBUXdBQUFHVUFBQUJGQUFBQVJnQUFBRVxcXG4wQUFBQnZBQUFBMEFVQUFORUZBQURTQlFBQTB3VUFBR2tBQUFCR0FBQUFRUUFBQUZnQUFBREFBd0FBc3dNQUFKTURBQUNnQXdBQUVTSUFcXFxuQUVRQUFBQmtBQUFBWlFBQUFHa0FBQUJxQUFBQU1RQUFBRVFnQUFBM0FBQUFNUUFBQUVRZ0FBQTVBQUFBTVFBQUFFUWdBQUF4QUFBQU1BXFxcbkFBQURFQUFBQkVJQUFBTXdBQUFESUFBQUJFSUFBQU13QUFBREVBQUFCRUlBQUFOUUFBQURJQUFBQkVJQUFBTlFBQUFETUFBQUJFSUFBQVxcXG5OUUFBQURRQUFBQkVJQUFBTlFBQUFERUFBQUJFSUFBQU5nQUFBRFVBQUFCRUlBQUFOZ0FBQURFQUFBQkVJQUFBT0FBQUFETUFBQUJFSUFcXFxuQUFPQUFBQURVQUFBQkVJQUFBT0FBQUFEY0FBQUJFSUFBQU9BQUFBREVBQUFCRUlBQUFTUUFBQUVrQUFBQkpBQUFBU1FBQUFFa0FBQUJKXFxcbkFBQUFTUUFBQUZZQUFBQldBQUFBVmdBQUFFa0FBQUJXQUFBQVNRQUFBRWtBQUFCV0FBQUFTUUFBQUVrQUFBQkpBQUFBU1FBQUFGZ0FBQVxcXG5CWUFBQUFXQUFBQUVrQUFBQllBQUFBU1FBQUFFa0FBQUJNQUFBQVF3QUFBRVFBQUFCTkFBQUFhUUFBQUdrQUFBQnBBQUFBYVFBQUFHa0FcXFxuQUFCcEFBQUFhUUFBQUhZQUFBQjJBQUFBZGdBQUFHa0FBQUIyQUFBQWFRQUFBR2tBQUFCMkFBQUFhUUFBQUdrQUFBQnBBQUFBYVFBQUFIXFxcbmdBQUFCNEFBQUFlQUFBQUdrQUFBQjRBQUFBYVFBQUFHa0FBQUJzQUFBQVl3QUFBR1FBQUFCdEFBQUFNQUFBQUVRZ0FBQXpBQUFBS3lJQVxcXG5BQ3NpQUFBcklnQUFLeUlBQUNzaUFBQXVJZ0FBTGlJQUFDNGlBQUF1SWdBQUxpSUFBREVBQUFBeUFBQUFNd0FBQURRQUFBQTFBQUFBTmdcXFxuQUFBRGNBQUFBNEFBQUFPUUFBQURFQUFBQXdBQUFBTVFBQUFERUFBQUF4QUFBQU1nQUFBREVBQUFBekFBQUFNUUFBQURRQUFBQXhBQUFBXFxcbk5RQUFBREVBQUFBMkFBQUFNUUFBQURjQUFBQXhBQUFBT0FBQUFERUFBQUE1QUFBQU1nQUFBREFBQUFBb0FBQUFNUUFBQUNrQUFBQW9BQVxcXG5BQU1nQUFBQ2tBQUFBb0FBQUFNd0FBQUNrQUFBQW9BQUFBTkFBQUFDa0FBQUFvQUFBQU5RQUFBQ2tBQUFBb0FBQUFOZ0FBQUNrQUFBQW9cXFxuQUFBQU53QUFBQ2tBQUFBb0FBQUFPQUFBQUNrQUFBQW9BQUFBT1FBQUFDa0FBQUFvQUFBQU1RQUFBREFBQUFBcEFBQUFLQUFBQURFQUFBXFxcbkF4QUFBQUtRQUFBQ2dBQUFBeEFBQUFNZ0FBQUNrQUFBQW9BQUFBTVFBQUFETUFBQUFwQUFBQUtBQUFBREVBQUFBMEFBQUFLUUFBQUNnQVxcXG5BQUF4QUFBQU5RQUFBQ2tBQUFBb0FBQUFNUUFBQURZQUFBQXBBQUFBS0FBQUFERUFBQUEzQUFBQUtRQUFBQ2dBQUFBeEFBQUFPQUFBQUNcXFxua0FBQUFvQUFBQU1RQUFBRGtBQUFBcEFBQUFLQUFBQURJQUFBQXdBQUFBS1FBQUFERUFBQUF1QUFBQU1nQUFBQzRBQUFBekFBQUFMZ0FBXFxcbkFEUUFBQUF1QUFBQU5RQUFBQzRBQUFBMkFBQUFMZ0FBQURjQUFBQXVBQUFBT0FBQUFDNEFBQUE1QUFBQUxnQUFBREVBQUFBd0FBQUFMZ1xcXG5BQUFERUFBQUF4QUFBQUxnQUFBREVBQUFBeUFBQUFMZ0FBQURFQUFBQXpBQUFBTGdBQUFERUFBQUEwQUFBQUxnQUFBREVBQUFBMUFBQUFcXFxuTGdBQUFERUFBQUEyQUFBQUxnQUFBREVBQUFBM0FBQUFMZ0FBQURFQUFBQTRBQUFBTGdBQUFERUFBQUE1QUFBQUxnQUFBRElBQUFBd0FBXFxcbkFBTGdBQUFDZ0FBQUJoQUFBQUtRQUFBQ2dBQUFCaUFBQUFLUUFBQUNnQUFBQmpBQUFBS1FBQUFDZ0FBQUJrQUFBQUtRQUFBQ2dBQUFCbFxcXG5BQUFBS1FBQUFDZ0FBQUJtQUFBQUtRQUFBQ2dBQUFCbkFBQUFLUUFBQUNnQUFBQm9BQUFBS1FBQUFDZ0FBQUJwQUFBQUtRQUFBQ2dBQUFcXFxuQnFBQUFBS1FBQUFDZ0FBQUJyQUFBQUtRQUFBQ2dBQUFCc0FBQUFLUUFBQUNnQUFBQnRBQUFBS1FBQUFDZ0FBQUJ1QUFBQUtRQUFBQ2dBXFxcbkFBQnZBQUFBS1FBQUFDZ0FBQUJ3QUFBQUtRQUFBQ2dBQUFCeEFBQUFLUUFBQUNnQUFBQnlBQUFBS1FBQUFDZ0FBQUJ6QUFBQUtRQUFBQ1xcXG5nQUFBQjBBQUFBS1FBQUFDZ0FBQUIxQUFBQUtRQUFBQ2dBQUFCMkFBQUFLUUFBQUNnQUFBQjNBQUFBS1FBQUFDZ0FBQUI0QUFBQUtRQUFcXFxuQUNnQUFBQjVBQUFBS1FBQUFDZ0FBQUI2QUFBQUtRQUFBRUVBQUFCQ0FBQUFRd0FBQUVRQUFBQkZBQUFBUmdBQUFFY0FBQUJJQUFBQVNRXFxcbkFBQUVvQUFBQkxBQUFBVEFBQUFFMEFBQUJPQUFBQVR3QUFBRkFBQUFCUkFBQUFVZ0FBQUZNQUFBQlVBQUFBVlFBQUFGWUFBQUJYQUFBQVxcXG5XQUFBQUZrQUFBQmFBQUFBWVFBQUFHSUFBQUJqQUFBQVpBQUFBR1VBQUFCbUFBQUFad0FBQUdnQUFBQnBBQUFBYWdBQUFHc0FBQUJzQUFcXFxuQUFiUUFBQUc0QUFBQnZBQUFBY0FBQUFIRUFBQUJ5QUFBQWN3QUFBSFFBQUFCMUFBQUFkZ0FBQUhjQUFBQjRBQUFBZVFBQUFIb0FBQUF3XFxcbkFBQUFLeUlBQUNzaUFBQXJJZ0FBS3lJQUFEb0FBQUE2QUFBQVBRQUFBRDBBQUFBOUFBQUFQUUFBQUQwQUFBQTlBQUFBYWdBQUFGWUFBQVxcXG5CaExRQUF6V3NBQUorZkFBQUFUZ0FBS0U0QUFEWk9BQUEvVGdBQVdVNEFBSVZPQUFDTVRnQUFvRTRBQUxwT0FBQS9VUUFBWlZFQUFHdFJcXFxuQUFDQ1VRQUFsbEVBQUt0UkFBRGdVUUFBOVZFQUFBQlNBQUNiVWdBQStWSUFBQlZUQUFBYVV3QUFPRk1BQUVGVEFBQmNVd0FBYVZNQUFJXFxcbkpUQUFDMlV3QUF5Rk1BQU9OVEFBRFhWZ0FBSDFjQUFPdFlBQUFDV1FBQUNsa0FBQlZaQUFBbldRQUFjMWtBQUZCYkFBQ0FXd0FBK0ZzQVxcXG5BQTljQUFBaVhBQUFPRndBQUc1Y0FBQnhYQUFBMjEwQUFPVmRBQUR4WFFBQS9sMEFBSEplQUFCNlhnQUFmMTRBQVBSZUFBRCtYZ0FBQzFcXFxuOEFBQk5mQUFCUVh3QUFZVjhBQUhOZkFBRERYd0FBQ0dJQUFEWmlBQUJMWWdBQUwyVUFBRFJsQUFDSFpRQUFsMlVBQUtSbEFBQzVaUUFBXFxcbjRHVUFBT1ZsQUFEd1pnQUFDR2NBQUNobkFBQWdhd0FBWW1zQUFIbHJBQUN6YXdBQXkyc0FBTlJyQUFEYmF3QUFEMndBQUJSc0FBQTBiQVxcXG5BQWEzQUFBQ3B5QUFBMmNnQUFPM0lBQUQ5eUFBQkhjZ0FBV1hJQUFGdHlBQUNzY2dBQWhITUFBSWx6QUFEY2RBQUE1blFBQUJoMUFBQWZcXFxuZFFBQUtIVUFBREIxQUFDTGRRQUFrblVBQUhaMkFBQjlkZ0FBcm5ZQUFMOTJBQUR1ZGdBQTIzY0FBT0ozQUFEemR3QUFPbmtBQUxoNUFBXFxcbkMrZVFBQWRIb0FBTXQ2QUFENWVnQUFjM3dBQVBoOEFBQTJmd0FBVVg4QUFJcC9BQUM5ZndBQUFZQUFBQXlBQUFBU2dBQUFNNEFBQUgrQVxcXG5BQUNKZ0FBQTQ0RUFBT3FCQUFEemdRQUEvSUVBQUF5Q0FBQWJnZ0FBSDRJQUFHNkNBQUJ5Z2dBQWVJSUFBRTJHQUFCcmhnQUFRSWdBQUVcXFxueUlBQUJqaUFBQWZva0FBSXVKQUFEU2lRQUFBSW9BQURlTUFBQkdqQUFBVll3QUFIaU1BQUNkakFBQVpJMEFBSENOQUFDempRQUFxNDRBXFxcbkFNcU9BQUNiandBQXNJOEFBTFdQQUFDUmtBQUFTWkVBQU1hUkFBRE1rUUFBMFpFQUFIZVZBQUNBbFFBQUhKWUFBTGFXQUFDNWxnQUE2SlxcXG5ZQUFGR1hBQUJlbHdBQVlwY0FBR21YQUFETGx3QUE3WmNBQVBPWEFBQUJtQUFBcUpnQUFOdVlBQURmbUFBQWxwa0FBSm1aQUFDc21RQUFcXFxucUpvQUFOaWFBQURmbWdBQUpac0FBQytiQUFBeW13QUFQSnNBQUZxYkFBRGxuQUFBZFo0QUFIK2VBQUNsbmdBQXU1NEFBTU9lQUFETm5nXFxcbkFBMFo0QUFQbWVBQUQ5bmdBQURwOEFBQk9mQUFBZ253QUFPNThBQUVxZkFBQlNud0FBalo4QUFKeWZBQUNnbndBQUlBQUFBQkl3QUFCQlxcXG5Vd0FBUkZNQUFFVlRBQUFnQUFBQW1UQUFBQ0FBQUFDYU1BQUFpREFBQUlvd0FBQ3pNQUFBeURBQUFBQVJBQUFCRVFBQXFoRUFBQUlSQUFcXFxuQ3NFUUFBclJFQUFBTVJBQUFFRVFBQUJSRUFBTEFSQUFDeEVRQUFzaEVBQUxNUkFBQzBFUUFBdFJFQUFCb1JBQUFHRVFBQUJ4RUFBQWdSXFxcbkFBQWhFUUFBQ1JFQUFBb1JBQUFMRVFBQURCRUFBQTBSQUFBT0VRQUFEeEVBQUJBUkFBQVJFUUFBRWhFQUFHRVJBQUJpRVFBQVl4RUFBR1xcXG5RUkFBQmxFUUFBWmhFQUFHY1JBQUJvRVFBQWFSRUFBR29SQUFCckVRQUFiQkVBQUcwUkFBQnVFUUFBYnhFQUFIQVJBQUJ4RVFBQWNoRUFcXFxuQUhNUkFBQjBFUUFBZFJFQUFHQVJBQUFVRVFBQUZSRUFBTWNSQUFESUVRQUF6QkVBQU00UkFBRFRFUUFBMXhFQUFOa1JBQUFjRVFBQTNSXFxcbkVBQU44UkFBQWRFUUFBSGhFQUFDQVJBQUFpRVFBQUl4RUFBQ2NSQUFBcEVRQUFLeEVBQUN3UkFBQXRFUUFBTGhFQUFDOFJBQUF5RVFBQVxcXG5OaEVBQUVBUkFBQkhFUUFBVEJFQUFQRVJBQUR5RVFBQVZ4RUFBRmdSQUFCWkVRQUFoQkVBQUlVUkFBQ0lFUUFBa1JFQUFKSVJBQUNVRVFcXFxuQUFuaEVBQUtFUkFBQUFUZ0FBakU0QUFBbE9BQURiVmdBQUNrNEFBQzFPQUFBTFRnQUFNblVBQUZsT0FBQVpUZ0FBQVU0QUFDbFpBQUF3XFxcblZ3QUF1azRBQUNnQUFBQUFFUUFBS1FBQUFDZ0FBQUFDRVFBQUtRQUFBQ2dBQUFBREVRQUFLUUFBQUNnQUFBQUZFUUFBS1FBQUFDZ0FBQVxcXG5BR0VRQUFLUUFBQUNnQUFBQUhFUUFBS1FBQUFDZ0FBQUFKRVFBQUtRQUFBQ2dBQUFBTEVRQUFLUUFBQUNnQUFBQU1FUUFBS1FBQUFDZ0FcXFxuQUFBT0VRQUFLUUFBQUNnQUFBQVBFUUFBS1FBQUFDZ0FBQUFRRVFBQUtRQUFBQ2dBQUFBUkVRQUFLUUFBQUNnQUFBQVNFUUFBS1FBQUFDXFxcbmdBQUFBQUVRQUFZUkVBQUNrQUFBQW9BQUFBQWhFQUFHRVJBQUFwQUFBQUtBQUFBQU1SQUFCaEVRQUFLUUFBQUNnQUFBQUZFUUFBWVJFQVxcXG5BQ2tBQUFBb0FBQUFCaEVBQUdFUkFBQXBBQUFBS0FBQUFBY1JBQUJoRVFBQUtRQUFBQ2dBQUFBSkVRQUFZUkVBQUNrQUFBQW9BQUFBQ3hcXFxuRUFBR0VSQUFBcEFBQUFLQUFBQUF3UkFBQmhFUUFBS1FBQUFDZ0FBQUFPRVFBQVlSRUFBQ2tBQUFBb0FBQUFEeEVBQUdFUkFBQXBBQUFBXFxcbktBQUFBQkFSQUFCaEVRQUFLUUFBQUNnQUFBQVJFUUFBWVJFQUFDa0FBQUFvQUFBQUVoRUFBR0VSQUFBcEFBQUFLQUFBQUF3UkFBQnVFUVxcXG5BQUtRQUFBQ2dBQUFBTEVRQUFhUkVBQUF3UkFBQmxFUUFBcXhFQUFDa0FBQUFvQUFBQUN4RUFBR2tSQUFBU0VRQUFiaEVBQUNrQUFBQW9cXFxuQUFBQUFFNEFBQ2tBQUFBb0FBQUFqRTRBQUNrQUFBQW9BQUFBQ1U0QUFDa0FBQUFvQUFBQTIxWUFBQ2tBQUFBb0FBQUFsRTRBQUNrQUFBXFxcbkFvQUFBQWJWRUFBQ2tBQUFBb0FBQUFBMDRBQUNrQUFBQW9BQUFBYTFFQUFDa0FBQUFvQUFBQVhVNEFBQ2tBQUFBb0FBQUFRVk1BQUNrQVxcXG5BQUFvQUFBQUNHY0FBQ2tBQUFBb0FBQUFhM0FBQUNrQUFBQW9BQUFBTkd3QUFDa0FBQUFvQUFBQUtHY0FBQ2tBQUFBb0FBQUEwWkVBQUNcXFxua0FBQUFvQUFBQUgxY0FBQ2tBQUFBb0FBQUE1V1VBQUNrQUFBQW9BQUFBS21nQUFDa0FBQUFvQUFBQUNXY0FBQ2tBQUFBb0FBQUFQbmtBXFxcbkFDa0FBQUFvQUFBQURWUUFBQ2tBQUFBb0FBQUFlWElBQUNrQUFBQW9BQUFBb1l3QUFDa0FBQUFvQUFBQVhYa0FBQ2tBQUFBb0FBQUF0RlxcXG5JQUFDa0FBQUFvQUFBQTQwNEFBQ2tBQUFBb0FBQUFmRlFBQUNrQUFBQW9BQUFBWmxzQUFDa0FBQUFvQUFBQTQzWUFBQ2tBQUFBb0FBQUFcXFxuQVU4QUFDa0FBQUFvQUFBQXg0d0FBQ2tBQUFBb0FBQUFWRk1BQUNrQUFBQW9BQUFBYlhrQUFDa0FBQUFvQUFBQUVVOEFBQ2tBQUFBb0FBXFxcbkFBNm9FQUFDa0FBQUFvQUFBQTg0RUFBQ2tBQUFCUFZRQUFmRjRBQUlkbEFBQ1Bld0FBVUFBQUFGUUFBQUJGQUFBQU1nQUFBREVBQUFBeVxcXG5BQUFBTWdBQUFESUFBQUF6QUFBQU1nQUFBRFFBQUFBeUFBQUFOUUFBQURJQUFBQTJBQUFBTWdBQUFEY0FBQUF5QUFBQU9BQUFBRElBQUFcXFxuQTVBQUFBTXdBQUFEQUFBQUF6QUFBQU1RQUFBRE1BQUFBeUFBQUFNd0FBQURNQUFBQXpBQUFBTkFBQUFETUFBQUExQUFBQUFCRUFBQUlSXFxcbkFBQURFUUFBQlJFQUFBWVJBQUFIRVFBQUNSRUFBQXNSQUFBTUVRQUFEaEVBQUE4UkFBQVFFUUFBRVJFQUFCSVJBQUFBRVFBQVlSRUFBQVxcXG5JUkFBQmhFUUFBQXhFQUFHRVJBQUFGRVFBQVlSRUFBQVlSQUFCaEVRQUFCeEVBQUdFUkFBQUpFUUFBWVJFQUFBc1JBQUJoRVFBQURCRUFcXFxuQUdFUkFBQU9FUUFBWVJFQUFBOFJBQUJoRVFBQUVCRUFBR0VSQUFBUkVRQUFZUkVBQUJJUkFBQmhFUUFBRGhFQUFHRVJBQUMzRVFBQUFCXFxcbkVBQUdrUkFBQU1FUUFBYmhFQUFBc1JBQUIwRVFBQUN4RUFBRzRSQUFBQVRnQUFqRTRBQUFsT0FBRGJWZ0FBbEU0QUFHMVJBQUFEVGdBQVxcXG5hMUVBQUYxT0FBQkJVd0FBQ0djQUFHdHdBQUEwYkFBQUtHY0FBTkdSQUFBZlZ3QUE1V1VBQUNwb0FBQUpad0FBUG5rQUFBMVVBQUI1Y2dcXFxuQUFvWXdBQUYxNUFBQzBVZ0FBMkhrQUFEZDFBQUJ6V1FBQWFaQUFBQ3BSQUFCd1V3QUE2R3dBQUFXWUFBQVJUd0FBbVZFQUFHTnJBQUFLXFxcblRnQUFMVTRBQUF0T0FBRG1YUUFBODFNQUFEdFRBQUNYV3dBQVpsc0FBT04yQUFBQlR3QUF4NHdBQUZSVEFBQWNXUUFBTXdBQUFEWUFBQVxcXG5BekFBQUFOd0FBQURNQUFBQTRBQUFBTXdBQUFEa0FBQUEwQUFBQU1BQUFBRFFBQUFBeEFBQUFOQUFBQURJQUFBQTBBQUFBTXdBQUFEUUFcXFxuQUFBMEFBQUFOQUFBQURVQUFBQTBBQUFBTmdBQUFEUUFBQUEzQUFBQU5BQUFBRGdBQUFBMEFBQUFPUUFBQURVQUFBQXdBQUFBTVFBQUFBXFxcbmhuQUFBeUFBQUFDR2NBQURNQUFBQUlad0FBTkFBQUFBaG5BQUExQUFBQUNHY0FBRFlBQUFBSVp3QUFOd0FBQUFobkFBQTRBQUFBQ0djQVxcXG5BRGtBQUFBSVp3QUFNUUFBQURBQUFBQUlad0FBTVFBQUFERUFBQUFJWndBQU1RQUFBRElBQUFBSVp3QUFTQUFBQUdjQUFBQmxBQUFBY2dcXFxuQUFBR2NBQUFCbEFBQUFWZ0FBQUV3QUFBQlVBQUFBUkFBQUFLSXdBQUNrTUFBQXBqQUFBS2d3QUFDcU1BQUFxekFBQUswd0FBQ3ZNQUFBXFxcbnNUQUFBTE13QUFDMU1BQUF0ekFBQUxrd0FBQzdNQUFBdlRBQUFMOHdBQURCTUFBQXhEQUFBTVl3QUFESU1BQUF5akFBQU1zd0FBRE1NQVxcXG5BQXpUQUFBTTR3QUFEUE1BQUEwakFBQU5Vd0FBRFlNQUFBMnpBQUFONHdBQURmTUFBQTREQUFBT0V3QUFEaU1BQUE1REFBQU9Zd0FBRG9cXFxuTUFBQTZUQUFBT293QUFEck1BQUE3REFBQU8wd0FBRHZNQUFBOERBQUFQRXdBQUR5TUFBQTVFNEFBSXhVQUFDaU1BQUF6ekFBQUpvd0FBXFxcbkQ4TUFBQXlEQUFBS0l3QUFEck1BQUExVEFBQUtFd0FBQ2lNQUFBOHpBQUFOZ3dBQUNhTUFBQW9qQUFBS0l3QUFEOE1BQUE2ekFBQUtRd1xcXG5BQURMTUFBQTh6QUFBSzh3QUFDWk1BQUFwREFBQVBNd0FBREJNQUFBcGpBQUFLa3dBQUR6TUFBQXFEQUFBTGt3QUFDdk1BQUEvREFBQU1cXFxuZ3dBQUNaTUFBQXFEQUFBUHd3QUFDck1BQUEvREFBQUtvd0FBRHpNQUFBdVRBQUFLb3dBQUQ4TUFBQTREQUFBS3N3QUFDa01BQUE2akFBXFxcbkFLc3dBQURwTUFBQXd6QUFBTWd3QUFDck1BQUE3VEFBQU9vd0FBRDhNQUFBcXpBQUFKa3dBQUR0TUFBQTh6QUFBS3N3QUFDWk1BQUE4elxcXG5BQUFONHdBQUN0TUFBQW1UQUFBS3N3QUFDWk1BQUFyVEFBQUprd0FBRExNQUFBL0RBQUFLMHdBQURsTUFBQTZqQUFBUHd3QUFDdE1BQUFcXFxubVRBQUFPc3dBQUMvTUFBQW1UQUFBUHd3QUFDdE1BQUE3VEFBQUswd0FBRHRNQUFBcnpBQUFKa3dBQURwTUFBQTREQUFBSzB3QUFEdE1BXFxcbkFBNFRBQUFQd3dBQURJTUFBQTZ6QUFBSzB3QUFEdE1BQUE3ekFBQU1Nd0FBRElNQUFBcnpBQUFKa3dBQURwTUFBQTREQUFBSzh3QUFDWlxcXG5NQUFBNlRBQUFPQXdBQURJTUFBQTh6QUFBSzh3QUFEck1BQUF1ekFBQUprd0FBQ2tNQUFBN1RBQUFLOHdBQUR0TUFBQS9EQUFBTTB3QUFcXFxuQ3hNQUFBL0RBQUFMa3dBQUN6TUFBQTZ6QUFBTW93QUFDek1BQUEvREFBQU5zd0FBQ2FNQUFBdFRBQUFLUXdBQUN2TUFBQTZ6QUFBTFV3XFxcbkFBRHpNQUFBd1RBQUFQd3dBQURnTUFBQXR6QUFBT293QUFEek1BQUFyekFBQUprd0FBQzdNQUFBOHpBQUFNRXdBQUM3TUFBQTh6QUFBTVxcXG5nd0FBQy9NQUFBbVRBQUFQd3dBQUM1TUFBQXhqQUFBSmt3QUFDM01BQUF5REFBQUprd0FBRHJNQUFBeURBQUFQTXdBQURLTUFBQXpqQUFcXFxuQU00d0FBRERNQUFBeURBQUFNOHdBQUNrTUFBQXhEQUFBTTh3QUFDYU1BQUEvREFBQUxzd0FBRHpNQUFBeURBQUFNOHdBQUNhTUFBQS9EXFxcbkFBQU1Rd0FBRFBNQUFBbVRBQUFQd3dBQURzTUFBQTZ6QUFBTkl3QUFDYU1BQUFvakFBQUxrd0FBRElNQUFBNnpBQUFOSXdBQUNhTUFBQVxcXG5yekFBQU9zd0FBRFNNQUFBbWpBQUFMTXdBQURTTUFBQW1UQUFBT3N3QUFEVk1BQUFvVEFBQU9rd0FBRERNQUFBeURBQUFKa3dBQURWTUFcXFxuQUFvekFBQVB3d0FBRElNQUFBMVRBQUFKa3dBQURETUFBQXR6QUFBS2N3QUFEck1BQUExVEFBQU9rd0FBRHpNQUFBMkRBQUFLOHdBQUMvXFxcbk1BQUEvREFBQU9zd0FBRFlNQUFBbWpBQUFMMHdBQURZTUFBQW1qQUFBTXN3QUFEU01BQUEyREFBQU9zd0FBREVNQUFBMkRBQUFKb3dBQVxcXG5Eek1BQUF1VEFBQU5nd0FBQ2FNQUFBL0RBQUFMY3dBQUNaTUFBQTJEQUFBSmt3QUFEOE1BQUF2ekFBQU5zd0FBQ2FNQUFBcERBQUFQTXdcXFxuQUFESU1BQUEyekFBQUprd0FBRHJNQUFBeURBQUFOc3dBQUR6TUFBQTJ6QUFBSm93QUFEek1BQUF5REFBQUprd0FBRGJNQUFBL0RBQUFPXFxcbnN3QUFEYk1BQUEvREFBQVBNd0FBRGVNQUFBcERBQUFLOHdBQUR0TUFBQTNqQUFBS1F3QUFEck1BQUEzakFBQU1Nd0FBRFBNQUFBM2pBQVxcXG5BT3N3QUFDdk1BQUEzakFBQVBNd0FBQzNNQUFBNXpBQUFQTXdBQURmTUFBQXJ6QUFBTzB3QUFEek1BQUEzekFBQU9vd0FBRGZNQUFBNmpcXFxuQUFBTTh3QUFDWk1BQUEvREFBQU9zd0FBRGhNQUFBcXpBQUFKa3dBQURoTUFBQXF6QUFBSmt3QUFESU1BQUE4ekFBQU9Fd0FBRDhNQUFBXFxcbnlEQUFBT3N3QUFEa01BQUEvREFBQU1nd0FBQ1pNQUFBNURBQUFQd3dBQURyTUFBQTVqQUFBS0l3QUFEek1BQUE2akFBQU1Nd0FBRElNQVxcXG5BQTZ6QUFBT293QUFEcE1BQUE2ekFBQU5Jd0FBQ2FNQUFBL0RBQUFPc3dBQUQ4TUFBQTFUQUFBSmt3QUFEck1BQUE3REFBQU9Bd0FBRHNcXFxuTUFBQTh6QUFBTWd3QUFDeE1BQUFtVEFBQVBNd0FBRHZNQUFBd3pBQUFNZ3dBQUF3QUFBQXVYQUFBREVBQUFDNWNBQUFNZ0FBQUxsd0FBXFxcbkF6QUFBQXVYQUFBRFFBQUFDNWNBQUFOUUFBQUxsd0FBQTJBQUFBdVhBQUFEY0FBQUM1Y0FBQU9BQUFBTGx3QUFBNUFBQUF1WEFBQURFQVxcXG5BQUF3QUFBQXVYQUFBREVBQUFBeEFBQUF1WEFBQURFQUFBQXlBQUFBdVhBQUFERUFBQUF6QUFBQXVYQUFBREVBQUFBMEFBQUF1WEFBQURcXFxuRUFBQUExQUFBQXVYQUFBREVBQUFBMkFBQUF1WEFBQURFQUFBQTNBQUFBdVhBQUFERUFBQUE0QUFBQXVYQUFBREVBQUFBNUFBQUF1WEFBXFxcbkFESUFBQUF3QUFBQXVYQUFBRElBQUFBeEFBQUF1WEFBQURJQUFBQXlBQUFBdVhBQUFESUFBQUF6QUFBQXVYQUFBRElBQUFBMEFBQUF1WFxcXG5BQUFHZ0FBQUJRQUFBQVlRQUFBR1FBQUFCaEFBQUFRUUFBQUZVQUFBQmlBQUFBWVFBQUFISUFBQUJ2QUFBQVZnQUFBSEFBQUFCakFBQUFcXFxuWkFBQUFHMEFBQUJrQUFBQWJRQUFBRElBQUFCa0FBQUFiUUFBQURNQUFBQkpBQUFBVlFBQUFITmVBQUFRWWdBQUxXWUFBSXhVQUFBbldRXFxcbkFBWTJzQUFBNW1BQUM3YkFBQUttZ0FBQTlmQUFBYVR3QUFQbmtBQUhBQUFBQkJBQUFBYmdBQUFFRUFBQUM4QXdBQVFRQUFBRzBBQUFCQlxcXG5BQUFBYXdBQUFFRUFBQUJMQUFBQVFnQUFBRTBBQUFCQ0FBQUFSd0FBQUVJQUFBQmpBQUFBWVFBQUFHd0FBQUJyQUFBQVl3QUFBR0VBQUFcXFxuQnNBQUFBY0FBQUFFWUFBQUJ1QUFBQVJnQUFBTHdEQUFCR0FBQUF2QU1BQUdjQUFBQnRBQUFBWndBQUFHc0FBQUJuQUFBQVNBQUFBSG9BXFxcbkFBQnJBQUFBU0FBQUFIb0FBQUJOQUFBQVNBQUFBSG9BQUFCSEFBQUFTQUFBQUhvQUFBQlVBQUFBU0FBQUFIb0FBQUM4QXdBQWJBQUFBR1xcXG4wQUFBQnNBQUFBWkFBQUFHd0FBQUJyQUFBQWJBQUFBR1lBQUFCdEFBQUFiZ0FBQUcwQUFBQzhBd0FBYlFBQUFHMEFBQUJ0QUFBQVl3QUFcXFxuQUcwQUFBQnJBQUFBYlFBQUFHMEFBQUJ0QUFBQU1nQUFBR01BQUFCdEFBQUFNZ0FBQUcwQUFBQXlBQUFBYXdBQUFHMEFBQUF5QUFBQWJRXFxcbkFBQUcwQUFBQXpBQUFBWXdBQUFHMEFBQUF6QUFBQWJRQUFBRE1BQUFCckFBQUFiUUFBQURNQUFBQnRBQUFBRlNJQUFITUFBQUJ0QUFBQVxcXG5GU0lBQUhNQUFBQXlBQUFBVUFBQUFHRUFBQUJyQUFBQVVBQUFBR0VBQUFCTkFBQUFVQUFBQUdFQUFBQkhBQUFBVUFBQUFHRUFBQUJ5QUFcXFxuQUFZUUFBQUdRQUFBQnlBQUFBWVFBQUFHUUFBQUFWSWdBQWN3QUFBSElBQUFCaEFBQUFaQUFBQUJVaUFBQnpBQUFBTWdBQUFIQUFBQUJ6XFxcbkFBQUFiZ0FBQUhNQUFBQzhBd0FBY3dBQUFHMEFBQUJ6QUFBQWNBQUFBRllBQUFCdUFBQUFWZ0FBQUx3REFBQldBQUFBYlFBQUFGWUFBQVxcXG5CckFBQUFWZ0FBQUUwQUFBQldBQUFBY0FBQUFGY0FBQUJ1QUFBQVZ3QUFBTHdEQUFCWEFBQUFiUUFBQUZjQUFBQnJBQUFBVndBQUFFMEFcXFxuQUFCWEFBQUFhd0FBQUtrREFBQk5BQUFBcVFNQUFHRUFBQUF1QUFBQWJRQUFBQzRBQUFCQ0FBQUFjUUFBQUdNQUFBQmpBQUFBWXdBQUFHXFxcblFBQUFCREFBQUFGU0lBQUdzQUFBQm5BQUFBUXdBQUFHOEFBQUF1QUFBQVpBQUFBRUlBQUFCSEFBQUFlUUFBQUdnQUFBQmhBQUFBU0FBQVxcXG5BRkFBQUFCcEFBQUFiZ0FBQUVzQUFBQkxBQUFBU3dBQUFFMEFBQUJyQUFBQWRBQUFBR3dBQUFCdEFBQUFiQUFBQUc0QUFBQnNBQUFBYndcXFxuQUFBR2NBQUFCc0FBQUFlQUFBQUcwQUFBQmlBQUFBYlFBQUFHa0FBQUJzQUFBQWJRQUFBRzhBQUFCc0FBQUFVQUFBQUVnQUFBQndBQUFBXFxcbkxnQUFBRzBBQUFBdUFBQUFVQUFBQUZBQUFBQk5BQUFBVUFBQUFGSUFBQUJ6QUFBQWNnQUFBRk1BQUFCMkFBQUFWd0FBQUdJQUFBQldBQVxcXG5BQUZTSUFBRzBBQUFCQkFBQUFGU0lBQUcwQUFBQXhBQUFBNVdVQUFESUFBQURsWlFBQU13QUFBT1ZsQUFBMEFBQUE1V1VBQURVQUFBRGxcXFxuWlFBQU5nQUFBT1ZsQUFBM0FBQUE1V1VBQURnQUFBRGxaUUFBT1FBQUFPVmxBQUF4QUFBQU1BQUFBT1ZsQUFBeEFBQUFNUUFBQU9WbEFBXFxcbkF4QUFBQU1nQUFBT1ZsQUFBeEFBQUFNd0FBQU9WbEFBQXhBQUFBTkFBQUFPVmxBQUF4QUFBQU5RQUFBT1ZsQUFBeEFBQUFOZ0FBQU9WbFxcXG5BQUF4QUFBQU53QUFBT1ZsQUFBeEFBQUFPQUFBQU9WbEFBQXhBQUFBT1FBQUFPVmxBQUF5QUFBQU1BQUFBT1ZsQUFBeUFBQUFNUUFBQU9cXFxuVmxBQUF5QUFBQU1nQUFBT1ZsQUFBeUFBQUFNd0FBQU9WbEFBQXlBQUFBTkFBQUFPVmxBQUF5QUFBQU5RQUFBT1ZsQUFBeUFBQUFOZ0FBXFxcbkFPVmxBQUF5QUFBQU53QUFBT1ZsQUFBeUFBQUFPQUFBQU9WbEFBQXlBQUFBT1FBQUFPVmxBQUF6QUFBQU1BQUFBT1ZsQUFBekFBQUFNUVxcXG5BQUFPVmxBQUJuQUFBQVlRQUFBR3dBQUFCS0JBQUFUQVFBQUcrbkFBQkRBQUFBUmdBQUFGRUFBQUFtQVFBQVV3RUFBQ2VuQUFBM3F3QUFcXFxuYXdJQUFGS3JBQUNOQWdBQVpnQUFBR1lBQUFCbUFBQUFhUUFBQUdZQUFBQnNBQUFBWmdBQUFHWUFBQUJwQUFBQVpnQUFBR1lBQUFCc0FBXFxcbkFBY3dBQUFIUUFBQUJ6QUFBQWRBQUFBSFFGQUFCMkJRQUFkQVVBQUdVRkFBQjBCUUFBYXdVQUFINEZBQUIyQlFBQWRBVUFBRzBGQUFEaVxcXG5CUUFBMEFVQUFOTUZBQURVQlFBQTJ3VUFBTndGQUFEZEJRQUE2QVVBQU9vRkFBQXJBQUFBMEFVQUFOd0ZBQUJ4QmdBQWNRWUFBSHNHQUFcXFxuQjdCZ0FBZXdZQUFIc0dBQUIrQmdBQWZnWUFBSDRHQUFCK0JnQUFnQVlBQUlBR0FBQ0FCZ0FBZ0FZQUFIb0dBQUI2QmdBQWVnWUFBSG9HXFxcbkFBQi9CZ0FBZndZQUFIOEdBQUIvQmdBQWVRWUFBSGtHQUFCNUJnQUFlUVlBQUtRR0FBQ2tCZ0FBcEFZQUFLUUdBQUNtQmdBQXBnWUFBS1xcXG5ZR0FBQ21CZ0FBaEFZQUFJUUdBQUNFQmdBQWhBWUFBSU1HQUFDREJnQUFnd1lBQUlNR0FBQ0dCZ0FBaGdZQUFJWUdBQUNHQmdBQWh3WUFcXFxuQUljR0FBQ0hCZ0FBaHdZQUFJMEdBQUNOQmdBQWpBWUFBSXdHQUFDT0JnQUFqZ1lBQUlnR0FBQ0lCZ0FBbUFZQUFKZ0dBQUNSQmdBQWtRXFxcbllBQUtrR0FBQ3BCZ0FBcVFZQUFLa0dBQUN2QmdBQXJ3WUFBSzhHQUFDdkJnQUFzd1lBQUxNR0FBQ3pCZ0FBc3dZQUFMRUdBQUN4QmdBQVxcXG5zUVlBQUxFR0FBQzZCZ0FBdWdZQUFMc0dBQUM3QmdBQXV3WUFBTHNHQUFEVkJnQUFWQVlBQU5VR0FBQlVCZ0FBd1FZQUFNRUdBQURCQmdcXFxuQUF3UVlBQUw0R0FBQytCZ0FBdmdZQUFMNEdBQURTQmdBQTBnWUFBTklHQUFCVUJnQUEwZ1lBQUZRR0FBQ3RCZ0FBclFZQUFLMEdBQUN0XFxcbkJnQUF4d1lBQU1jR0FBREdCZ0FBeGdZQUFNZ0dBQURJQmdBQXh3WUFBSFFHQUFETEJnQUF5d1lBQU1VR0FBREZCZ0FBeVFZQUFNa0dBQVxcXG5EUUJnQUEwQVlBQU5BR0FBRFFCZ0FBU1FZQUFFa0dBQUJLQmdBQVZBWUFBQ2NHQUFCS0JnQUFWQVlBQUNjR0FBQktCZ0FBVkFZQUFOVUdcXFxuQUFCS0JnQUFWQVlBQU5VR0FBQktCZ0FBVkFZQUFFZ0dBQUJLQmdBQVZBWUFBRWdHQUFCS0JnQUFWQVlBQU1jR0FBQktCZ0FBVkFZQUFNXFxcbmNHQUFCS0JnQUFWQVlBQU1ZR0FBQktCZ0FBVkFZQUFNWUdBQUJLQmdBQVZBWUFBTWdHQUFCS0JnQUFWQVlBQU1nR0FBQktCZ0FBVkFZQVxcXG5BTkFHQUFCS0JnQUFWQVlBQU5BR0FBQktCZ0FBVkFZQUFOQUdBQUJLQmdBQVZBWUFBRWtHQUFCS0JnQUFWQVlBQUVrR0FBQktCZ0FBVkFcXFxuWUFBRWtHQUFETUJnQUF6QVlBQU13R0FBRE1CZ0FBU2dZQUFGUUdBQUFzQmdBQVNnWUFBRlFHQUFBdEJnQUFTZ1lBQUZRR0FBQkZCZ0FBXFxcblNnWUFBRlFHQUFCSkJnQUFTZ1lBQUZRR0FBQktCZ0FBS0FZQUFDd0dBQUFvQmdBQUxRWUFBQ2dHQUFBdUJnQUFLQVlBQUVVR0FBQW9CZ1xcXG5BQVNRWUFBQ2dHQUFCS0JnQUFLZ1lBQUN3R0FBQXFCZ0FBTFFZQUFDb0dBQUF1QmdBQUtnWUFBRVVHQUFBcUJnQUFTUVlBQUNvR0FBQktcXFxuQmdBQUt3WUFBQ3dHQUFBckJnQUFSUVlBQUNzR0FBQkpCZ0FBS3dZQUFFb0dBQUFzQmdBQUxRWUFBQ3dHQUFCRkJnQUFMUVlBQUN3R0FBXFxcbkF0QmdBQVJRWUFBQzRHQUFBc0JnQUFMZ1lBQUMwR0FBQXVCZ0FBUlFZQUFETUdBQUFzQmdBQU13WUFBQzBHQUFBekJnQUFMZ1lBQURNR1xcXG5BQUJGQmdBQU5RWUFBQzBHQUFBMUJnQUFSUVlBQURZR0FBQXNCZ0FBTmdZQUFDMEdBQUEyQmdBQUxnWUFBRFlHQUFCRkJnQUFOd1lBQUNcXFxuMEdBQUEzQmdBQVJRWUFBRGdHQUFCRkJnQUFPUVlBQUN3R0FBQTVCZ0FBUlFZQUFEb0dBQUFzQmdBQU9nWUFBRVVHQUFCQkJnQUFMQVlBXFxcbkFFRUdBQUF0QmdBQVFRWUFBQzRHQUFCQkJnQUFSUVlBQUVFR0FBQkpCZ0FBUVFZQUFFb0dBQUJDQmdBQUxRWUFBRUlHQUFCRkJnQUFRZ1xcXG5ZQUFFa0dBQUJDQmdBQVNnWUFBRU1HQUFBbkJnQUFRd1lBQUN3R0FBQkRCZ0FBTFFZQUFFTUdBQUF1QmdBQVF3WUFBRVFHQUFCREJnQUFcXFxuUlFZQUFFTUdBQUJKQmdBQVF3WUFBRW9HQUFCRUJnQUFMQVlBQUVRR0FBQXRCZ0FBUkFZQUFDNEdBQUJFQmdBQVJRWUFBRVFHQUFCSkJnXFxcbkFBUkFZQUFFb0dBQUJGQmdBQUxBWUFBRVVHQUFBdEJnQUFSUVlBQUM0R0FBQkZCZ0FBUlFZQUFFVUdBQUJKQmdBQVJRWUFBRW9HQUFCR1xcXG5CZ0FBTEFZQUFFWUdBQUF0QmdBQVJnWUFBQzRHQUFCR0JnQUFSUVlBQUVZR0FBQkpCZ0FBUmdZQUFFb0dBQUJIQmdBQUxBWUFBRWNHQUFcXFxuQkZCZ0FBUndZQUFFa0dBQUJIQmdBQVNnWUFBRW9HQUFBc0JnQUFTZ1lBQUMwR0FBQktCZ0FBTGdZQUFFb0dBQUJGQmdBQVNnWUFBRWtHXFxcbkFBQktCZ0FBU2dZQUFEQUdBQUJ3QmdBQU1RWUFBSEFHQUFCSkJnQUFjQVlBQUNBQUFBQk1CZ0FBVVFZQUFDQUFBQUJOQmdBQVVRWUFBQ1xcXG5BQUFBQk9CZ0FBVVFZQUFDQUFBQUJQQmdBQVVRWUFBQ0FBQUFCUUJnQUFVUVlBQUNBQUFBQlJCZ0FBY0FZQUFFb0dBQUJVQmdBQU1RWUFcXFxuQUVvR0FBQlVCZ0FBTWdZQUFFb0dBQUJVQmdBQVJRWUFBRW9HQUFCVUJnQUFSZ1lBQUVvR0FBQlVCZ0FBU1FZQUFFb0dBQUJVQmdBQVNnXFxcbllBQUNnR0FBQXhCZ0FBS0FZQUFESUdBQUFvQmdBQVJRWUFBQ2dHQUFCR0JnQUFLQVlBQUVrR0FBQW9CZ0FBU2dZQUFDb0dBQUF4QmdBQVxcXG5LZ1lBQURJR0FBQXFCZ0FBUlFZQUFDb0dBQUJHQmdBQUtnWUFBRWtHQUFBcUJnQUFTZ1lBQUNzR0FBQXhCZ0FBS3dZQUFESUdBQUFyQmdcXFxuQUFSUVlBQUNzR0FBQkdCZ0FBS3dZQUFFa0dBQUFyQmdBQVNnWUFBRUVHQUFCSkJnQUFRUVlBQUVvR0FBQkNCZ0FBU1FZQUFFSUdBQUJLXFxcbkJnQUFRd1lBQUNjR0FBQkRCZ0FBUkFZQUFFTUdBQUJGQmdBQVF3WUFBRWtHQUFCREJnQUFTZ1lBQUVRR0FBQkZCZ0FBUkFZQUFFa0dBQVxcXG5CRUJnQUFTZ1lBQUVVR0FBQW5CZ0FBUlFZQUFFVUdBQUJHQmdBQU1RWUFBRVlHQUFBeUJnQUFSZ1lBQUVVR0FBQkdCZ0FBUmdZQUFFWUdcXFxuQUFCSkJnQUFSZ1lBQUVvR0FBQkpCZ0FBY0FZQUFFb0dBQUF4QmdBQVNnWUFBRElHQUFCS0JnQUFSUVlBQUVvR0FBQkdCZ0FBU2dZQUFFXFxcbmtHQUFCS0JnQUFTZ1lBQUVvR0FBQlVCZ0FBTEFZQUFFb0dBQUJVQmdBQUxRWUFBRW9HQUFCVUJnQUFMZ1lBQUVvR0FBQlVCZ0FBUlFZQVxcXG5BRW9HQUFCVUJnQUFSd1lBQUNnR0FBQXNCZ0FBS0FZQUFDMEdBQUFvQmdBQUxnWUFBQ2dHQUFCRkJnQUFLQVlBQUVjR0FBQXFCZ0FBTEFcXFxuWUFBQ29HQUFBdEJnQUFLZ1lBQUM0R0FBQXFCZ0FBUlFZQUFDb0dBQUJIQmdBQUt3WUFBRVVHQUFBc0JnQUFMUVlBQUN3R0FBQkZCZ0FBXFxcbkxRWUFBQ3dHQUFBdEJnQUFSUVlBQUM0R0FBQXNCZ0FBTGdZQUFFVUdBQUF6QmdBQUxBWUFBRE1HQUFBdEJnQUFNd1lBQUM0R0FBQXpCZ1xcXG5BQVJRWUFBRFVHQUFBdEJnQUFOUVlBQUM0R0FBQTFCZ0FBUlFZQUFEWUdBQUFzQmdBQU5nWUFBQzBHQUFBMkJnQUFMZ1lBQURZR0FBQkZcXFxuQmdBQU53WUFBQzBHQUFBNEJnQUFSUVlBQURrR0FBQXNCZ0FBT1FZQUFFVUdBQUE2QmdBQUxBWUFBRG9HQUFCRkJnQUFRUVlBQUN3R0FBXFxcbkJCQmdBQUxRWUFBRUVHQUFBdUJnQUFRUVlBQUVVR0FBQkNCZ0FBTFFZQUFFSUdBQUJGQmdBQVF3WUFBQ3dHQUFCREJnQUFMUVlBQUVNR1xcXG5BQUF1QmdBQVF3WUFBRVFHQUFCREJnQUFSUVlBQUVRR0FBQXNCZ0FBUkFZQUFDMEdBQUJFQmdBQUxnWUFBRVFHQUFCRkJnQUFSQVlBQUVcXFxuY0dBQUJGQmdBQUxBWUFBRVVHQUFBdEJnQUFSUVlBQUM0R0FBQkZCZ0FBUlFZQUFFWUdBQUFzQmdBQVJnWUFBQzBHQUFCR0JnQUFMZ1lBXFxcbkFFWUdBQUJGQmdBQVJnWUFBRWNHQUFCSEJnQUFMQVlBQUVjR0FBQkZCZ0FBUndZQUFIQUdBQUJLQmdBQUxBWUFBRW9HQUFBdEJnQUFTZ1xcXG5ZQUFDNEdBQUJLQmdBQVJRWUFBRW9HQUFCSEJnQUFTZ1lBQUZRR0FBQkZCZ0FBU2dZQUFGUUdBQUJIQmdBQUtBWUFBRVVHQUFBb0JnQUFcXFxuUndZQUFDb0dBQUJGQmdBQUtnWUFBRWNHQUFBckJnQUFSUVlBQUNzR0FBQkhCZ0FBTXdZQUFFVUdBQUF6QmdBQVJ3WUFBRFFHQUFCRkJnXFxcbkFBTkFZQUFFY0dBQUJEQmdBQVJBWUFBRU1HQUFCRkJnQUFSQVlBQUVVR0FBQkdCZ0FBUlFZQUFFWUdBQUJIQmdBQVNnWUFBRVVHQUFCS1xcXG5CZ0FBUndZQUFFQUdBQUJPQmdBQVVRWUFBRUFHQUFCUEJnQUFVUVlBQUVBR0FBQlFCZ0FBVVFZQUFEY0dBQUJKQmdBQU53WUFBRW9HQUFcXFxuQTVCZ0FBU1FZQUFEa0dBQUJLQmdBQU9nWUFBRWtHQUFBNkJnQUFTZ1lBQURNR0FBQkpCZ0FBTXdZQUFFb0dBQUEwQmdBQVNRWUFBRFFHXFxcbkFBQktCZ0FBTFFZQUFFa0dBQUF0QmdBQVNnWUFBQ3dHQUFCSkJnQUFMQVlBQUVvR0FBQXVCZ0FBU1FZQUFDNEdBQUJLQmdBQU5RWUFBRVxcXG5rR0FBQTFCZ0FBU2dZQUFEWUdBQUJKQmdBQU5nWUFBRW9HQUFBMEJnQUFMQVlBQURRR0FBQXRCZ0FBTkFZQUFDNEdBQUEwQmdBQVJRWUFcXFxuQURRR0FBQXhCZ0FBTXdZQUFERUdBQUExQmdBQU1RWUFBRFlHQUFBeEJnQUFOd1lBQUVrR0FBQTNCZ0FBU2dZQUFEa0dBQUJKQmdBQU9RXFxcbllBQUVvR0FBQTZCZ0FBU1FZQUFEb0dBQUJLQmdBQU13WUFBRWtHQUFBekJnQUFTZ1lBQURRR0FBQkpCZ0FBTkFZQUFFb0dBQUF0QmdBQVxcXG5TUVlBQUMwR0FBQktCZ0FBTEFZQUFFa0dBQUFzQmdBQVNnWUFBQzRHQUFCSkJnQUFMZ1lBQUVvR0FBQTFCZ0FBU1FZQUFEVUdBQUJLQmdcXFxuQUFOZ1lBQUVrR0FBQTJCZ0FBU2dZQUFEUUdBQUFzQmdBQU5BWUFBQzBHQUFBMEJnQUFMZ1lBQURRR0FBQkZCZ0FBTkFZQUFERUdBQUF6XFxcbkJnQUFNUVlBQURVR0FBQXhCZ0FBTmdZQUFERUdBQUEwQmdBQUxBWUFBRFFHQUFBdEJnQUFOQVlBQUM0R0FBQTBCZ0FBUlFZQUFETUdBQVxcXG5CSEJnQUFOQVlBQUVjR0FBQTNCZ0FBUlFZQUFETUdBQUFzQmdBQU13WUFBQzBHQUFBekJnQUFMZ1lBQURRR0FBQXNCZ0FBTkFZQUFDMEdcXFxuQUFBMEJnQUFMZ1lBQURjR0FBQkZCZ0FBT0FZQUFFVUdBQUFuQmdBQVN3WUFBQ2NHQUFCTEJnQUFLZ1lBQUN3R0FBQkZCZ0FBS2dZQUFDXFxcbjBHQUFBc0JnQUFLZ1lBQUMwR0FBQXNCZ0FBS2dZQUFDMEdBQUJGQmdBQUtnWUFBQzRHQUFCRkJnQUFLZ1lBQUVVR0FBQXNCZ0FBS2dZQVxcXG5BRVVHQUFBdEJnQUFLZ1lBQUVVR0FBQXVCZ0FBTEFZQUFFVUdBQUF0QmdBQUxBWUFBRVVHQUFBdEJnQUFMUVlBQUVVR0FBQktCZ0FBTFFcXFxuWUFBRVVHQUFCSkJnQUFNd1lBQUMwR0FBQXNCZ0FBTXdZQUFDd0dBQUF0QmdBQU13WUFBQ3dHQUFCSkJnQUFNd1lBQUVVR0FBQXRCZ0FBXFxcbk13WUFBRVVHQUFBdEJnQUFNd1lBQUVVR0FBQXNCZ0FBTXdZQUFFVUdBQUJGQmdBQU13WUFBRVVHQUFCRkJnQUFOUVlBQUMwR0FBQXRCZ1xcXG5BQU5RWUFBQzBHQUFBdEJnQUFOUVlBQUVVR0FBQkZCZ0FBTkFZQUFDMEdBQUJGQmdBQU5BWUFBQzBHQUFCRkJnQUFOQVlBQUN3R0FBQktcXFxuQmdBQU5BWUFBRVVHQUFBdUJnQUFOQVlBQUVVR0FBQXVCZ0FBTkFZQUFFVUdBQUJGQmdBQU5BWUFBRVVHQUFCRkJnQUFOZ1lBQUMwR0FBXFxcbkJKQmdBQU5nWUFBQzRHQUFCRkJnQUFOZ1lBQUM0R0FBQkZCZ0FBTndZQUFFVUdBQUF0QmdBQU53WUFBRVVHQUFBdEJnQUFOd1lBQUVVR1xcXG5BQUJGQmdBQU53WUFBRVVHQUFCS0JnQUFPUVlBQUN3R0FBQkZCZ0FBT1FZQUFFVUdBQUJGQmdBQU9RWUFBRVVHQUFCRkJnQUFPUVlBQUVcXFxuVUdBQUJKQmdBQU9nWUFBRVVHQUFCRkJnQUFPZ1lBQUVVR0FBQktCZ0FBT2dZQUFFVUdBQUJKQmdBQVFRWUFBQzRHQUFCRkJnQUFRUVlBXFxcbkFDNEdBQUJGQmdBQVFnWUFBRVVHQUFBdEJnQUFRZ1lBQUVVR0FBQkZCZ0FBUkFZQUFDMEdBQUJGQmdBQVJBWUFBQzBHQUFCS0JnQUFSQVxcXG5ZQUFDMEdBQUJKQmdBQVJBWUFBQ3dHQUFBc0JnQUFSQVlBQUN3R0FBQXNCZ0FBUkFZQUFDNEdBQUJGQmdBQVJBWUFBQzRHQUFCRkJnQUFcXFxuUkFZQUFFVUdBQUF0QmdBQVJBWUFBRVVHQUFBdEJnQUFSUVlBQUMwR0FBQXNCZ0FBUlFZQUFDMEdBQUJGQmdBQVJRWUFBQzBHQUFCS0JnXFxcbkFBUlFZQUFDd0dBQUF0QmdBQVJRWUFBQ3dHQUFCRkJnQUFSUVlBQUM0R0FBQXNCZ0FBUlFZQUFDNEdBQUJGQmdBQVJRWUFBQ3dHQUFBdVxcXG5CZ0FBUndZQUFFVUdBQUFzQmdBQVJ3WUFBRVVHQUFCRkJnQUFSZ1lBQUMwR0FBQkZCZ0FBUmdZQUFDMEdBQUJKQmdBQVJnWUFBQ3dHQUFcXFxuQkZCZ0FBUmdZQUFDd0dBQUJGQmdBQVJnWUFBQ3dHQUFCSkJnQUFSZ1lBQUVVR0FBQktCZ0FBUmdZQUFFVUdBQUJKQmdBQVNnWUFBRVVHXFxcbkFBQkZCZ0FBU2dZQUFFVUdBQUJGQmdBQUtBWUFBQzRHQUFCS0JnQUFLZ1lBQUN3R0FBQktCZ0FBS2dZQUFDd0dBQUJKQmdBQUtnWUFBQ1xcXG40R0FBQktCZ0FBS2dZQUFDNEdBQUJKQmdBQUtnWUFBRVVHQUFCS0JnQUFLZ1lBQUVVR0FBQkpCZ0FBTEFZQUFFVUdBQUJLQmdBQUxBWUFcXFxuQUMwR0FBQkpCZ0FBTEFZQUFFVUdBQUJKQmdBQU13WUFBQzRHQUFCSkJnQUFOUVlBQUMwR0FBQktCZ0FBTkFZQUFDMEdBQUJLQmdBQU5nXFxcbllBQUMwR0FBQktCZ0FBUkFZQUFDd0dBQUJLQmdBQVJBWUFBRVVHQUFCS0JnQUFTZ1lBQUMwR0FBQktCZ0FBU2dZQUFDd0dBQUJLQmdBQVxcXG5TZ1lBQUVVR0FBQktCZ0FBUlFZQUFFVUdBQUJLQmdBQVFnWUFBRVVHQUFCS0JnQUFSZ1lBQUMwR0FBQktCZ0FBUWdZQUFFVUdBQUF0QmdcXFxuQUFSQVlBQUMwR0FBQkZCZ0FBT1FZQUFFVUdBQUJLQmdBQVF3WUFBRVVHQUFCS0JnQUFSZ1lBQUN3R0FBQXRCZ0FBUlFZQUFDNEdBQUJLXFxcbkJnQUFSQVlBQUN3R0FBQkZCZ0FBUXdZQUFFVUdBQUJGQmdBQVJBWUFBQ3dHQUFCRkJnQUFSZ1lBQUN3R0FBQXRCZ0FBTEFZQUFDMEdBQVxcXG5CS0JnQUFMUVlBQUN3R0FBQktCZ0FBUlFZQUFDd0dBQUJLQmdBQVFRWUFBRVVHQUFCS0JnQUFLQVlBQUMwR0FBQktCZ0FBUXdZQUFFVUdcXFxuQUFCRkJnQUFPUVlBQUN3R0FBQkZCZ0FBTlFZQUFFVUdBQUJGQmdBQU13WUFBQzRHQUFCS0JnQUFSZ1lBQUN3R0FBQktCZ0FBTlFZQUFFXFxcblFHQUFEU0JnQUFRZ1lBQUVRR0FBRFNCZ0FBSndZQUFFUUdBQUJFQmdBQVJ3WUFBQ2NHQUFCREJnQUFLQVlBQURFR0FBQkZCZ0FBTFFZQVxcXG5BRVVHQUFBdkJnQUFOUVlBQUVRR0FBQTVCZ0FBUlFZQUFERUdBQUF6QmdBQVNBWUFBRVFHQUFBNUJnQUFSQVlBQUVvR0FBQkhCZ0FBU0FcXFxuWUFBRE1HQUFCRUJnQUFSUVlBQURVR0FBQkVCZ0FBU1FZQUFEVUdBQUJFQmdBQVNRWUFBQ0FBQUFBbkJnQUFSQVlBQUVRR0FBQkhCZ0FBXFxcbklBQUFBRGtHQUFCRUJnQUFTZ1lBQUVjR0FBQWdBQUFBU0FZQUFETUdBQUJFQmdBQVJRWUFBQ3dHQUFCRUJnQUFJQUFBQUN3R0FBQkVCZ1xcXG5BQUp3WUFBRVFHQUFCSEJnQUFNUVlBQU13R0FBQW5CZ0FBUkFZQUFDd0FBQUFCTUFBQUFqQUFBRG9BQUFBN0FBQUFJUUFBQUQ4QUFBQVdcXFxuTUFBQUZ6QUFBQzRBQUFBdUFBQUFMZ0FBQUM0QUFBQXVBQUFBRkNBQUFCTWdBQUJmQUFBQVh3QUFBQ2dBQUFBcEFBQUFld0FBQUgwQUFBXFxcbkFVTUFBQUZUQUFBQkF3QUFBUk1BQUFDakFBQUFzd0FBQUlNQUFBQ1RBQUFBd3dBQUFOTUFBQURqQUFBQTh3QUFCYkFBQUFYUUFBQUNBQVxcXG5BQUFGQXdBQUlBQUFBQVVEQUFBZ0FBQUFCUU1BQUNBQUFBQUZBd0FBWHdBQUFGOEFBQUJmQUFBQUxBQUFBQUV3QUFBdUFBQUFPd0FBQURcXFxub0FBQUEvQUFBQUlRQUFBQlFnQUFBb0FBQUFLUUFBQUhzQUFBQjlBQUFBRkRBQUFCVXdBQUFqQUFBQUpnQUFBQ29BQUFBckFBQUFMUUFBXFxcbkFEd0FBQUErQUFBQVBRQUFBRndBQUFBa0FBQUFKUUFBQUVBQUFBQWdBQUFBU3dZQUFFQUdBQUJMQmdBQUlBQUFBRXdHQUFBZ0FBQUFUUVxcXG5ZQUFDQUFBQUJPQmdBQVFBWUFBRTRHQUFBZ0FBQUFUd1lBQUVBR0FBQlBCZ0FBSUFBQUFGQUdBQUJBQmdBQVVBWUFBQ0FBQUFCUkJnQUFcXFxuUUFZQUFGRUdBQUFnQUFBQVVnWUFBRUFHQUFCU0JnQUFJUVlBQUNjR0FBQlRCZ0FBSndZQUFGTUdBQUFuQmdBQVZBWUFBQ2NHQUFCVUJnXFxcbkFBU0FZQUFGUUdBQUJJQmdBQVZBWUFBQ2NHQUFCVkJnQUFKd1lBQUZVR0FBQktCZ0FBVkFZQUFFb0dBQUJVQmdBQVNnWUFBRlFHQUFCS1xcXG5CZ0FBVkFZQUFDY0dBQUFuQmdBQUtBWUFBQ2dHQUFBb0JnQUFLQVlBQUNrR0FBQXBCZ0FBS2dZQUFDb0dBQUFxQmdBQUtnWUFBQ3NHQUFcXFxuQXJCZ0FBS3dZQUFDc0dBQUFzQmdBQUxBWUFBQ3dHQUFBc0JnQUFMUVlBQUMwR0FBQXRCZ0FBTFFZQUFDNEdBQUF1QmdBQUxnWUFBQzRHXFxcbkFBQXZCZ0FBTHdZQUFEQUdBQUF3QmdBQU1RWUFBREVHQUFBeUJnQUFNZ1lBQURNR0FBQXpCZ0FBTXdZQUFETUdBQUEwQmdBQU5BWUFBRFxcXG5RR0FBQTBCZ0FBTlFZQUFEVUdBQUExQmdBQU5RWUFBRFlHQUFBMkJnQUFOZ1lBQURZR0FBQTNCZ0FBTndZQUFEY0dBQUEzQmdBQU9BWUFcXFxuQURnR0FBQTRCZ0FBT0FZQUFEa0dBQUE1QmdBQU9RWUFBRGtHQUFBNkJnQUFPZ1lBQURvR0FBQTZCZ0FBUVFZQUFFRUdBQUJCQmdBQVFRXFxcbllBQUVJR0FBQkNCZ0FBUWdZQUFFSUdBQUJEQmdBQVF3WUFBRU1HQUFCREJnQUFSQVlBQUVRR0FBQkVCZ0FBUkFZQUFFVUdBQUJGQmdBQVxcXG5SUVlBQUVVR0FBQkdCZ0FBUmdZQUFFWUdBQUJHQmdBQVJ3WUFBRWNHQUFCSEJnQUFSd1lBQUVnR0FBQklCZ0FBU1FZQUFFa0dBQUJLQmdcXFxuQUFTZ1lBQUVvR0FBQktCZ0FBUkFZQUFDY0dBQUJUQmdBQVJBWUFBQ2NHQUFCVEJnQUFSQVlBQUNjR0FBQlVCZ0FBUkFZQUFDY0dBQUJVXFxcbkJnQUFSQVlBQUNjR0FBQlZCZ0FBUkFZQUFDY0dBQUJWQmdBQVJBWUFBQ2NHQUFCRUJnQUFKd1lBQUNFQUFBQWlBQUFBSXdBQUFDUUFBQVxcXG5BbEFBQUFKZ0FBQUNjQUFBQW9BQUFBS1FBQUFDb0FBQUFyQUFBQUxBQUFBQzBBQUFBdUFBQUFMd0FBQURBQUFBQXhBQUFBTWdBQUFETUFcXFxuQUFBMEFBQUFOUUFBQURZQUFBQTNBQUFBT0FBQUFEa0FBQUE2QUFBQU93QUFBRHdBQUFBOUFBQUFQZ0FBQUQ4QUFBQkFBQUFBUVFBQUFFXFxcbklBQUFCREFBQUFSQUFBQUVVQUFBQkdBQUFBUndBQUFFZ0FBQUJKQUFBQVNnQUFBRXNBQUFCTUFBQUFUUUFBQUU0QUFBQlBBQUFBVUFBQVxcXG5BRkVBQUFCU0FBQUFVd0FBQUZRQUFBQlZBQUFBVmdBQUFGY0FBQUJZQUFBQVdRQUFBRm9BQUFCYkFBQUFYQUFBQUYwQUFBQmVBQUFBWHdcXFxuQUFBR0FBQUFCaEFBQUFZZ0FBQUdNQUFBQmtBQUFBWlFBQUFHWUFBQUJuQUFBQWFBQUFBR2tBQUFCcUFBQUFhd0FBQUd3QUFBQnRBQUFBXFxcbmJnQUFBRzhBQUFCd0FBQUFjUUFBQUhJQUFBQnpBQUFBZEFBQUFIVUFBQUIyQUFBQWR3QUFBSGdBQUFCNUFBQUFlZ0FBQUhzQUFBQjhBQVxcXG5BQWZRQUFBSDRBQUFDRktRQUFoaWtBQUFJd0FBQU1NQUFBRFRBQUFBRXdBQUQ3TUFBQThqQUFBS0V3QUFDak1BQUFwVEFBQUtjd0FBQ3BcXFxuTUFBQTR6QUFBT1V3QUFEbk1BQUF3ekFBQVB3d0FBQ2lNQUFBcERBQUFLWXdBQUNvTUFBQXFqQUFBS3N3QUFDdE1BQUFyekFBQUxFd0FBXFxcbkN6TUFBQXRUQUFBTGN3QUFDNU1BQUF1ekFBQUwwd0FBQy9NQUFBd1RBQUFNUXdBQURHTUFBQXlEQUFBTW93QUFETE1BQUF6REFBQU0wd1xcXG5BQURPTUFBQXp6QUFBTkl3QUFEVk1BQUEyREFBQU5zd0FBRGVNQUFBM3pBQUFPQXdBQURoTUFBQTRqQUFBT1F3QUFEbU1BQUE2REFBQU9cXFxua3dBQURxTUFBQTZ6QUFBT3d3QUFEdE1BQUE3ekFBQVBNd0FBQ1pNQUFBbWpBQUFHQVJBQUFBRVFBQUFSRUFBS29SQUFBQ0VRQUFyQkVBXFxcbkFLMFJBQUFERVFBQUJCRUFBQVVSQUFDd0VRQUFzUkVBQUxJUkFBQ3pFUUFBdEJFQUFMVVJBQUFhRVFBQUJoRUFBQWNSQUFBSUVRQUFJUlxcXG5FQUFBa1JBQUFLRVFBQUN4RUFBQXdSQUFBTkVRQUFEaEVBQUE4UkFBQVFFUUFBRVJFQUFCSVJBQUJoRVFBQVloRUFBR01SQUFCa0VRQUFcXFxuWlJFQUFHWVJBQUJuRVFBQWFCRUFBR2tSQUFCcUVRQUFheEVBQUd3UkFBQnRFUUFBYmhFQUFHOFJBQUJ3RVFBQWNSRUFBSElSQUFCekVRXFxcbkFBZEJFQUFIVVJBQUNpQUFBQW93QUFBS3dBQUFBZ0FBQUFCQU1BQUtZQUFBQ2xBQUFBcVNBQUFBSWxBQUNRSVFBQWtTRUFBSkloQUFDVFxcXG5JUUFBb0NVQUFNc2xBQURRQWdBQTBRSUFBT1lBQUFDWkFnQUFVd0lBQUtNQ0FBQm1xd0FBcFFJQUFLUUNBQUJXQWdBQVZ3SUFBSkVkQUFcXFxuQllBZ0FBWGdJQUFLa0NBQUJrQWdBQVlnSUFBR0FDQUFDYkFnQUFKd0VBQUp3Q0FBQm5BZ0FBaEFJQUFLb0NBQUNyQWdBQWJBSUFBQVRmXFxcbkFRQ09wd0FBYmdJQUFBWGZBUUNPQWdBQUJ0OEJBUGdBQUFCMkFnQUFkd0lBQUhFQUFBQjZBZ0FBQ044QkFIMENBQUIrQWdBQWdBSUFBS1xcXG5nQ0FBQ21BZ0FBWjZzQUFLY0NBQUNJQWdBQWNTd0FBSThDQUFDaEFnQUFvZ0lBQUpnQ0FBREFBUUFBd1FFQUFNSUJBQUFLM3dFQUh0OEJcXFxuQUVFQUFBQkNBQUFBUXdBQUFFUUFBQUJGQUFBQVJnQUFBRWNBQUFCSUFBQUFTUUFBQUVvQUFBQkxBQUFBVEFBQUFFMEFBQUJPQUFBQVR3XFxcbkFBQUZBQUFBQlJBQUFBVWdBQUFGTUFBQUJVQUFBQVZRQUFBRllBQUFCWEFBQUFXQUFBQUZrQUFBQmFBQUFBWVFBQUFHSUFBQUJqQUFBQVxcXG5aQUFBQUdVQUFBQm1BQUFBWndBQUFHZ0FBQUJwQUFBQWFnQUFBR3NBQUFCc0FBQUFiUUFBQUc0QUFBQnZBQUFBY0FBQUFIRUFBQUJ5QUFcXFxuQUFjd0FBQUhRQUFBQjFBQUFBZGdBQUFIY0FBQUI0QUFBQWVRQUFBSG9BQUFCQkFBQUFRZ0FBQUVNQUFBQkVBQUFBUlFBQUFFWUFBQUJIXFxcbkFBQUFTQUFBQUVrQUFBQktBQUFBU3dBQUFFd0FBQUJOQUFBQVRnQUFBRThBQUFCUUFBQUFVUUFBQUZJQUFBQlRBQUFBVkFBQUFGVUFBQVxcXG5CV0FBQUFWd0FBQUZnQUFBQlpBQUFBV2dBQUFHRUFBQUJpQUFBQVl3QUFBR1FBQUFCbEFBQUFaZ0FBQUdjQUFBQnBBQUFBYWdBQUFHc0FcXFxuQUFCc0FBQUFiUUFBQUc0QUFBQnZBQUFBY0FBQUFIRUFBQUJ5QUFBQWN3QUFBSFFBQUFCMUFBQUFkZ0FBQUhjQUFBQjRBQUFBZVFBQUFIXFxcbm9BQUFCQkFBQUFRZ0FBQUVNQUFBQkVBQUFBUlFBQUFFWUFBQUJIQUFBQVNBQUFBRWtBQUFCS0FBQUFTd0FBQUV3QUFBQk5BQUFBVGdBQVxcXG5BRThBQUFCUUFBQUFVUUFBQUZJQUFBQlRBQUFBVkFBQUFGVUFBQUJXQUFBQVZ3QUFBRmdBQUFCWkFBQUFXZ0FBQUdFQUFBQmlBQUFBWXdcXFxuQUFBR1FBQUFCbEFBQUFaZ0FBQUdjQUFBQm9BQUFBYVFBQUFHb0FBQUJyQUFBQWJBQUFBRzBBQUFCdUFBQUFid0FBQUhBQUFBQnhBQUFBXFxcbmNnQUFBSE1BQUFCMEFBQUFkUUFBQUhZQUFBQjNBQUFBZUFBQUFIa0FBQUI2QUFBQVFRQUFBRU1BQUFCRUFBQUFSd0FBQUVvQUFBQkxBQVxcXG5BQVRnQUFBRThBQUFCUUFBQUFVUUFBQUZNQUFBQlVBQUFBVlFBQUFGWUFBQUJYQUFBQVdBQUFBRmtBQUFCYUFBQUFZUUFBQUdJQUFBQmpcXFxuQUFBQVpBQUFBR1lBQUFCb0FBQUFhUUFBQUdvQUFBQnJBQUFBYkFBQUFHMEFBQUJ1QUFBQWNBQUFBSEVBQUFCeUFBQUFjd0FBQUhRQUFBXFxcbkIxQUFBQWRnQUFBSGNBQUFCNEFBQUFlUUFBQUhvQUFBQkJBQUFBUWdBQUFFTUFBQUJFQUFBQVJRQUFBRVlBQUFCSEFBQUFTQUFBQUVrQVxcXG5BQUJLQUFBQVN3QUFBRXdBQUFCTkFBQUFUZ0FBQUU4QUFBQlFBQUFBVVFBQUFGSUFBQUJUQUFBQVZBQUFBRlVBQUFCV0FBQUFWd0FBQUZcXFxuZ0FBQUJaQUFBQVdnQUFBR0VBQUFCaUFBQUFZd0FBQUdRQUFBQmxBQUFBWmdBQUFHY0FBQUJvQUFBQWFRQUFBR29BQUFCckFBQUFiQUFBXFxcbkFHMEFBQUJ1QUFBQWJ3QUFBSEFBQUFCeEFBQUFjZ0FBQUhNQUFBQjBBQUFBZFFBQUFIWUFBQUIzQUFBQWVBQUFBSGtBQUFCNkFBQUFRUVxcXG5BQUFFSUFBQUJFQUFBQVJRQUFBRVlBQUFCSEFBQUFTZ0FBQUVzQUFBQk1BQUFBVFFBQUFFNEFBQUJQQUFBQVVBQUFBRkVBQUFCVEFBQUFcXFxuVkFBQUFGVUFBQUJXQUFBQVZ3QUFBRmdBQUFCWkFBQUFZUUFBQUdJQUFBQmpBQUFBWkFBQUFHVUFBQUJtQUFBQVp3QUFBR2dBQUFCcEFBXFxcbkFBYWdBQUFHc0FBQUJzQUFBQWJRQUFBRzRBQUFCdkFBQUFjQUFBQUhFQUFBQnlBQUFBY3dBQUFIUUFBQUIxQUFBQWRnQUFBSGNBQUFCNFxcXG5BQUFBZVFBQUFIb0FBQUJCQUFBQVFnQUFBRVFBQUFCRkFBQUFSZ0FBQUVjQUFBQkpBQUFBU2dBQUFFc0FBQUJNQUFBQVRRQUFBRThBQUFcXFxuQlRBQUFBVkFBQUFGVUFBQUJXQUFBQVZ3QUFBRmdBQUFCWkFBQUFZUUFBQUdJQUFBQmpBQUFBWkFBQUFHVUFBQUJtQUFBQVp3QUFBR2dBXFxcbkFBQnBBQUFBYWdBQUFHc0FBQUJzQUFBQWJRQUFBRzRBQUFCdkFBQUFjQUFBQUhFQUFBQnlBQUFBY3dBQUFIUUFBQUIxQUFBQWRnQUFBSFxcXG5jQUFBQjRBQUFBZVFBQUFIb0FBQUJCQUFBQVFnQUFBRU1BQUFCRUFBQUFSUUFBQUVZQUFBQkhBQUFBU0FBQUFFa0FBQUJLQUFBQVN3QUFcXFxuQUV3QUFBQk5BQUFBVGdBQUFFOEFBQUJRQUFBQVVRQUFBRklBQUFCVEFBQUFWQUFBQUZVQUFBQldBQUFBVndBQUFGZ0FBQUJaQUFBQVdnXFxcbkFBQUdFQUFBQmlBQUFBWXdBQUFHUUFBQUJsQUFBQVpnQUFBR2NBQUFCb0FBQUFhUUFBQUdvQUFBQnJBQUFBYkFBQUFHMEFBQUJ1QUFBQVxcXG5id0FBQUhBQUFBQnhBQUFBY2dBQUFITUFBQUIwQUFBQWRRQUFBSFlBQUFCM0FBQUFlQUFBQUhrQUFBQjZBQUFBUVFBQUFFSUFBQUJEQUFcXFxuQUFSQUFBQUVVQUFBQkdBQUFBUndBQUFFZ0FBQUJKQUFBQVNnQUFBRXNBQUFCTUFBQUFUUUFBQUU0QUFBQlBBQUFBVUFBQUFGRUFBQUJTXFxcbkFBQUFVd0FBQUZRQUFBQlZBQUFBVmdBQUFGY0FBQUJZQUFBQVdRQUFBRm9BQUFCaEFBQUFZZ0FBQUdNQUFBQmtBQUFBWlFBQUFHWUFBQVxcXG5CbkFBQUFhQUFBQUdrQUFBQnFBQUFBYXdBQUFHd0FBQUJ0QUFBQWJnQUFBRzhBQUFCd0FBQUFjUUFBQUhJQUFBQnpBQUFBZEFBQUFIVUFcXFxuQUFCMkFBQUFkd0FBQUhnQUFBQjVBQUFBZWdBQUFFRUFBQUJDQUFBQVF3QUFBRVFBQUFCRkFBQUFSZ0FBQUVjQUFBQklBQUFBU1FBQUFFXFxcbm9BQUFCTEFBQUFUQUFBQUUwQUFBQk9BQUFBVHdBQUFGQUFBQUJSQUFBQVVnQUFBRk1BQUFCVUFBQUFWUUFBQUZZQUFBQlhBQUFBV0FBQVxcXG5BRmtBQUFCYUFBQUFZUUFBQUdJQUFBQmpBQUFBWkFBQUFHVUFBQUJtQUFBQVp3QUFBR2dBQUFCcEFBQUFhZ0FBQUdzQUFBQnNBQUFBYlFcXFxuQUFBRzRBQUFCdkFBQUFjQUFBQUhFQUFBQnlBQUFBY3dBQUFIUUFBQUIxQUFBQWRnQUFBSGNBQUFCNEFBQUFlUUFBQUhvQUFBQkJBQUFBXFxcblFnQUFBRU1BQUFCRUFBQUFSUUFBQUVZQUFBQkhBQUFBU0FBQUFFa0FBQUJLQUFBQVN3QUFBRXdBQUFCTkFBQUFUZ0FBQUU4QUFBQlFBQVxcXG5BQVVRQUFBRklBQUFCVEFBQUFWQUFBQUZVQUFBQldBQUFBVndBQUFGZ0FBQUJaQUFBQVdnQUFBR0VBQUFCaUFBQUFZd0FBQUdRQUFBQmxcXFxuQUFBQVpnQUFBR2NBQUFCb0FBQUFhUUFBQUdvQUFBQnJBQUFBYkFBQUFHMEFBQUJ1QUFBQWJ3QUFBSEFBQUFCeEFBQUFjZ0FBQUhNQUFBXFxcbkIwQUFBQWRRQUFBSFlBQUFCM0FBQUFlQUFBQUhrQUFBQjZBQUFBUVFBQUFFSUFBQUJEQUFBQVJBQUFBRVVBQUFCR0FBQUFSd0FBQUVnQVxcXG5BQUJKQUFBQVNnQUFBRXNBQUFCTUFBQUFUUUFBQUU0QUFBQlBBQUFBVUFBQUFGRUFBQUJTQUFBQVV3QUFBRlFBQUFCVkFBQUFWZ0FBQUZcXFxuY0FBQUJZQUFBQVdRQUFBRm9BQUFCaEFBQUFZZ0FBQUdNQUFBQmtBQUFBWlFBQUFHWUFBQUJuQUFBQWFBQUFBR2tBQUFCcUFBQUFhd0FBXFxcbkFHd0FBQUJ0QUFBQWJnQUFBRzhBQUFCd0FBQUFjUUFBQUhJQUFBQnpBQUFBZEFBQUFIVUFBQUIyQUFBQWR3QUFBSGdBQUFCNUFBQUFlZ1xcXG5BQUFFRUFBQUJDQUFBQVF3QUFBRVFBQUFCRkFBQUFSZ0FBQUVjQUFBQklBQUFBU1FBQUFFb0FBQUJMQUFBQVRBQUFBRTBBQUFCT0FBQUFcXFxuVHdBQUFGQUFBQUJSQUFBQVVnQUFBRk1BQUFCVUFBQUFWUUFBQUZZQUFBQlhBQUFBV0FBQUFGa0FBQUJhQUFBQVlRQUFBR0lBQUFCakFBXFxcbkFBWkFBQUFHVUFBQUJtQUFBQVp3QUFBR2dBQUFCcEFBQUFhZ0FBQUdzQUFBQnNBQUFBYlFBQUFHNEFBQUJ2QUFBQWNBQUFBSEVBQUFCeVxcXG5BQUFBY3dBQUFIUUFBQUIxQUFBQWRnQUFBSGNBQUFCNEFBQUFlUUFBQUhvQUFBQXhBUUFBTndJQUFKRURBQUNTQXdBQWt3TUFBSlFEQUFcXFxuQ1ZBd0FBbGdNQUFKY0RBQUNZQXdBQW1RTUFBSm9EQUFDYkF3QUFuQU1BQUowREFBQ2VBd0FBbndNQUFLQURBQUNoQXdBQW1BTUFBS01EXFxcbkFBQ2tBd0FBcFFNQUFLWURBQUNuQXdBQXFBTUFBS2tEQUFBSElnQUFzUU1BQUxJREFBQ3pBd0FBdEFNQUFMVURBQUMyQXdBQXR3TUFBTFxcXG5nREFBQzVBd0FBdWdNQUFMc0RBQUM4QXdBQXZRTUFBTDREQUFDL0F3QUF3QU1BQU1FREFBRENBd0FBd3dNQUFNUURBQURGQXdBQXhnTUFcXFxuQU1jREFBRElBd0FBeVFNQUFBSWlBQUMxQXdBQXVBTUFBTG9EQUFER0F3QUF3UU1BQU1BREFBQ1JBd0FBa2dNQUFKTURBQUNVQXdBQWxRXFxcbk1BQUpZREFBQ1hBd0FBbUFNQUFKa0RBQUNhQXdBQW13TUFBSndEQUFDZEF3QUFuZ01BQUo4REFBQ2dBd0FBb1FNQUFKZ0RBQUNqQXdBQVxcXG5wQU1BQUtVREFBQ21Bd0FBcHdNQUFLZ0RBQUNwQXdBQUJ5SUFBTEVEQUFDeUF3QUFzd01BQUxRREFBQzFBd0FBdGdNQUFMY0RBQUM0QXdcXFxuQUF1UU1BQUxvREFBQzdBd0FBdkFNQUFMMERBQUMrQXdBQXZ3TUFBTUFEQUFEQkF3QUF3Z01BQU1NREFBREVBd0FBeFFNQUFNWURBQURIXFxcbkF3QUF5QU1BQU1rREFBQUNJZ0FBdFFNQUFMZ0RBQUM2QXdBQXhnTUFBTUVEQUFEQUF3QUFrUU1BQUpJREFBQ1RBd0FBbEFNQUFKVURBQVxcXG5DV0F3QUFsd01BQUpnREFBQ1pBd0FBbWdNQUFKc0RBQUNjQXdBQW5RTUFBSjREQUFDZkF3QUFvQU1BQUtFREFBQ1lBd0FBb3dNQUFLUURcXFxuQUFDbEF3QUFwZ01BQUtjREFBQ29Bd0FBcVFNQUFBY2lBQUN4QXdBQXNnTUFBTE1EQUFDMEF3QUF0UU1BQUxZREFBQzNBd0FBdUFNQUFMXFxcbmtEQUFDNkF3QUF1d01BQUx3REFBQzlBd0FBdmdNQUFMOERBQURBQXdBQXdRTUFBTUlEQUFEREF3QUF4QU1BQU1VREFBREdBd0FBeHdNQVxcXG5BTWdEQUFESkF3QUFBaUlBQUxVREFBQzRBd0FBdWdNQUFNWURBQURCQXdBQXdBTUFBSkVEQUFDU0F3QUFrd01BQUpRREFBQ1ZBd0FBbGdcXFxuTUFBSmNEQUFDWUF3QUFtUU1BQUpvREFBQ2JBd0FBbkFNQUFKMERBQUNlQXdBQW53TUFBS0FEQUFDaEF3QUFtQU1BQUtNREFBQ2tBd0FBXFxcbnBRTUFBS1lEQUFDbkF3QUFxQU1BQUtrREFBQUhJZ0FBc1FNQUFMSURBQUN6QXdBQXRBTUFBTFVEQUFDMkF3QUF0d01BQUxnREFBQzVBd1xcXG5BQXVnTUFBTHNEQUFDOEF3QUF2UU1BQUw0REFBQy9Bd0FBd0FNQUFNRURBQURDQXdBQXd3TUFBTVFEQUFERkF3QUF4Z01BQU1jREFBRElcXFxuQXdBQXlRTUFBQUlpQUFDMUF3QUF1QU1BQUxvREFBREdBd0FBd1FNQUFNQURBQUNSQXdBQWtnTUFBSk1EQUFDVUF3QUFsUU1BQUpZREFBXFxcbkNYQXdBQW1BTUFBSmtEQUFDYUF3QUFtd01BQUp3REFBQ2RBd0FBbmdNQUFKOERBQUNnQXdBQW9RTUFBSmdEQUFDakF3QUFwQU1BQUtVRFxcXG5BQUNtQXdBQXB3TUFBS2dEQUFDcEF3QUFCeUlBQUxFREFBQ3lBd0FBc3dNQUFMUURBQUMxQXdBQXRnTUFBTGNEQUFDNEF3QUF1UU1BQUxcXFxub0RBQUM3QXdBQXZBTUFBTDBEQUFDK0F3QUF2d01BQU1BREFBREJBd0FBd2dNQUFNTURBQURFQXdBQXhRTUFBTVlEQUFESEF3QUF5QU1BXFxcbkFNa0RBQUFDSWdBQXRRTUFBTGdEQUFDNkF3QUF4Z01BQU1FREFBREFBd0FBM0FNQUFOMERBQUF3QUFBQU1RQUFBRElBQUFBekFBQUFOQVxcXG5BQUFEVUFBQUEyQUFBQU53QUFBRGdBQUFBNUFBQUFNQUFBQURFQUFBQXlBQUFBTXdBQUFEUUFBQUExQUFBQU5nQUFBRGNBQUFBNEFBQUFcXFxuT1FBQUFEQUFBQUF4QUFBQU1nQUFBRE1BQUFBMEFBQUFOUUFBQURZQUFBQTNBQUFBT0FBQUFEa0FBQUF3QUFBQU1RQUFBRElBQUFBekFBXFxcbkFBTkFBQUFEVUFBQUEyQUFBQU53QUFBRGdBQUFBNUFBQUFNQUFBQURFQUFBQXlBQUFBTXdBQUFEUUFBQUExQUFBQU5nQUFBRGNBQUFBNFxcXG5BQUFBT1FBQUFEQUVBQUF4QkFBQU1nUUFBRE1FQUFBMEJBQUFOUVFBQURZRUFBQTNCQUFBT0FRQUFEb0VBQUE3QkFBQVBBUUFBRDRFQUFcXFxuQS9CQUFBUUFRQUFFRUVBQUJDQkFBQVF3UUFBRVFFQUFCRkJBQUFSZ1FBQUVjRUFBQklCQUFBU3dRQUFFMEVBQUJPQkFBQWlhWUFBTmtFXFxcbkFBQldCQUFBV0FRQUFPa0VBQUN2QkFBQXp3UUFBREFFQUFBeEJBQUFNZ1FBQURNRUFBQTBCQUFBTlFRQUFEWUVBQUEzQkFBQU9BUUFBRFxcXG5vRUFBQTdCQUFBUGdRQUFEOEVBQUJCQkFBQVF3UUFBRVFFQUFCRkJBQUFSZ1FBQUVjRUFBQklCQUFBU2dRQUFFc0VBQUNSQkFBQVZnUUFcXFxuQUZVRUFBQmZCQUFBcXdRQUFGR21BQUN4QkFBQUp3WUFBQ2dHQUFBc0JnQUFMd1lBQUVnR0FBQXlCZ0FBTFFZQUFEY0dBQUJLQmdBQVF3XFxcbllBQUVRR0FBQkZCZ0FBUmdZQUFETUdBQUE1QmdBQVFRWUFBRFVHQUFCQ0JnQUFNUVlBQURRR0FBQXFCZ0FBS3dZQUFDNEdBQUF3QmdBQVxcXG5OZ1lBQURnR0FBQTZCZ0FBYmdZQUFMb0dBQUNoQmdBQWJ3WUFBQ2dHQUFBc0JnQUFSd1lBQUMwR0FBQktCZ0FBUXdZQUFFUUdBQUJGQmdcXFxuQUFSZ1lBQURNR0FBQTVCZ0FBUVFZQUFEVUdBQUJDQmdBQU5BWUFBQ29HQUFBckJnQUFMZ1lBQURZR0FBQTZCZ0FBTEFZQUFDMEdBQUJLXFxcbkJnQUFSQVlBQUVZR0FBQXpCZ0FBT1FZQUFEVUdBQUJDQmdBQU5BWUFBQzRHQUFBMkJnQUFPZ1lBQUxvR0FBQnZCZ0FBS0FZQUFDd0dBQVxcXG5CSEJnQUFMUVlBQURjR0FBQktCZ0FBUXdZQUFFVUdBQUJHQmdBQU13WUFBRGtHQUFCQkJnQUFOUVlBQUVJR0FBQTBCZ0FBS2dZQUFDc0dcXFxuQUFBdUJnQUFOZ1lBQURnR0FBQTZCZ0FBYmdZQUFLRUdBQUFuQmdBQUtBWUFBQ3dHQUFBdkJnQUFSd1lBQUVnR0FBQXlCZ0FBTFFZQUFEXFxcbmNHQUFCS0JnQUFSQVlBQUVVR0FBQkdCZ0FBTXdZQUFEa0dBQUJCQmdBQU5RWUFBRUlHQUFBeEJnQUFOQVlBQUNvR0FBQXJCZ0FBTGdZQVxcXG5BREFHQUFBMkJnQUFPQVlBQURvR0FBQW9CZ0FBTEFZQUFDOEdBQUJJQmdBQU1nWUFBQzBHQUFBM0JnQUFTZ1lBQUVRR0FBQkZCZ0FBUmdcXFxuWUFBRE1HQUFBNUJnQUFRUVlBQURVR0FBQkNCZ0FBTVFZQUFEUUdBQUFxQmdBQUt3WUFBQzRHQUFBd0JnQUFOZ1lBQURnR0FBQTZCZ0FBXFxcbk1BQUFBQzRBQUFBd0FBQUFMQUFBQURFQUFBQXNBQUFBTWdBQUFDd0FBQUF6QUFBQUxBQUFBRFFBQUFBc0FBQUFOUUFBQUN3QUFBQTJBQVxcXG5BQUxBQUFBRGNBQUFBc0FBQUFPQUFBQUN3QUFBQTVBQUFBTEFBQUFDZ0FBQUJCQUFBQUtRQUFBQ2dBQUFCQ0FBQUFLUUFBQUNnQUFBQkRcXFxuQUFBQUtRQUFBQ2dBQUFCRUFBQUFLUUFBQUNnQUFBQkZBQUFBS1FBQUFDZ0FBQUJHQUFBQUtRQUFBQ2dBQUFCSEFBQUFLUUFBQUNnQUFBXFxcbkJJQUFBQUtRQUFBQ2dBQUFCSkFBQUFLUUFBQUNnQUFBQktBQUFBS1FBQUFDZ0FBQUJMQUFBQUtRQUFBQ2dBQUFCTUFBQUFLUUFBQUNnQVxcXG5BQUJOQUFBQUtRQUFBQ2dBQUFCT0FBQUFLUUFBQUNnQUFBQlBBQUFBS1FBQUFDZ0FBQUJRQUFBQUtRQUFBQ2dBQUFCUkFBQUFLUUFBQUNcXFxuZ0FBQUJTQUFBQUtRQUFBQ2dBQUFCVEFBQUFLUUFBQUNnQUFBQlVBQUFBS1FBQUFDZ0FBQUJWQUFBQUtRQUFBQ2dBQUFCV0FBQUFLUUFBXFxcbkFDZ0FBQUJYQUFBQUtRQUFBQ2dBQUFCWUFBQUFLUUFBQUNnQUFBQlpBQUFBS1FBQUFDZ0FBQUJhQUFBQUtRQUFBQlF3QUFCVEFBQUFGVFxcXG5BQUFFTUFBQUJTQUFBQVF3QUFBRVFBQUFCWEFBQUFXZ0FBQUVFQUFBQkNBQUFBUXdBQUFFUUFBQUJGQUFBQVJnQUFBRWNBQUFCSUFBQUFcXFxuU1FBQUFFb0FBQUJMQUFBQVRBQUFBRTBBQUFCT0FBQUFUd0FBQUZBQUFBQlJBQUFBVWdBQUFGTUFBQUJVQUFBQVZRQUFBRllBQUFCWEFBXFxcbkFBV0FBQUFGa0FBQUJhQUFBQVNBQUFBRllBQUFCTkFBQUFWZ0FBQUZNQUFBQkVBQUFBVXdBQUFGTUFBQUJRQUFBQVVBQUFBRllBQUFCWFxcXG5BQUFBUXdBQUFFMEFBQUJEQUFBQVRRQUFBRVFBQUFCTkFBQUFVZ0FBQUVRQUFBQktBQUFBZXpBQUFFc3dBQUN6TUFBQXN6QUFBTFV3QUFcXFxuQkxZZ0FBVjFzQUFNeFRBQURHTUFBQW1UQUFBSXhPQUFBYVdRQUE0NGtBQUNsWkFBQ2tUZ0FBSUdZQUFDRnhBQUNaWlFBQVRWSUFBSXhmXFxcbkFBQ05VUUFBc0dVQUFCMVNBQUJDZlFBQUgzVUFBS21NQUFEd1dBQUFPVlFBQUJSdkFBQ1ZZZ0FBVldNQUFBQk9BQUFKVGdBQVNwQUFBT1xcXG5aZEFBQXRUZ0FBODFNQUFBZGpBQUJ3alFBQVUySUFBSUY1QUFCNmVnQUFDRlFBQUlCdUFBQUpad0FBQ0djQUFETjFBQUJ5VWdBQXRsVUFcXFxuQUUyUkFBQVVNQUFBTEdjQUFCVXdBQUFVTUFBQUNVNEFBQlV3QUFBVU1BQUFqRTRBQUJVd0FBQVVNQUFBaVZzQUFCVXdBQUFVTUFBQXVYXFxcbkFBQUJVd0FBQVVNQUFBVTJJQUFCVXdBQUFVTUFBQTEzWUFBQlV3QUFBVU1BQUEzVklBQUJVd0FBQVVNQUFBVjJVQUFCVXdBQUNYWHdBQVxcXG43MU1BQURBQUFBQXhBQUFBTWdBQUFETUFBQUEwQUFBQU5RQUFBRFlBQUFBM0FBQUFPQUFBQURrQUFBRHcreEVBWWdBQUFFSUFBQUFhQUFcXFxuQUFBQUFBQUEwQUJBQU1BQVVBaVFZSEFBQUFBZ0FBQUFJQUF3QUFBQUFBcXdBQUFGZ0JBQUJhQU1ZQlF3RUFBQUVBQUFBRUFBQUFBQUFBXFxcbkFBWUFCQUFBQUpJQUFBQUFBRTBDQUFBSEFBQUFmd0FNQUFBQXh3QUFBRzBCQUFBQUFBQUEyZ0FFQUJrQUJRQUFBSk1BQmdCOEFCTUFHd1xcXG5FQUFBRUFDQUJZQUFBQVhBQ2xBQUFBQVFBQUFBQUFBQUMwQUFFQUFRQUFBQUVBQ0FBQUFIa0FCd0FBQUtBQU53QUFBQWNBTmdBRkFEa0FcXFxuQUFBQUFBSUFDUUFBQUFBQWN3QUJBQVVBQUFBQUFBQUFQUUFCQUFBQUJBQUFBRlFBQVFBQUFDY0FUUUQ2QUUwQUF3QWNBTjBBQmdBQkFDXFxcblFBUVFBQUFBQUFBQUFMQUFBQUJRQURBTFlBQUFBUEFBQUFBUUFXQUFBQUFBQ2VBQUVBQUFBaEFBQUFKUUFFQUJBQUJBQVZBQUlBQVFBalxcXG5BQVVBaEFBQUFBQUFEd0FLQUFJQU53QUJBQUFBUmdBTkFCSUFBQUFFQUFBQUFBQUFBQ1FBREFCS0FBSUFCQUFBQUVJQUFBQUVBQk1BQWdcXFxuQVRBSHNBUGdBQUFCRUFBZ0FIQUFFQUFBQXhBQU1BQUFBU0FBQUFBQUFBQURVQUJnQU9BQjRBd1FBQUFBQUFBQUFBQUFVQUFnQWNBQUFBXFxcbkNBQUFBQWtBQXdDTkFIQUFWQUFqQUJFQUh3QUZBQmNBQkFBQ0FBQUFSd0FYQUF3QUtnQUFBQU1BQUFBQUFBQUFCUUE0QUJFQUZRQTVBQVxcXG5ZQUFBQURBQU1BQVFBQUFBQUFBQUJUQUFRQUFRQUJBQUVBQWdBQUFBOEFCZ0FBQUFBQUFBQUVBQ2dBQkFBQUFBQUFFUUF1QUFZQUJBQUJcXFxuQUFFQUVnQUFBQUFBQUFBQ0FBVUFBQUFWQUM0QUFBQUJBQUFBQUFBR0FBQUFBQUFOQUFNQUFBQUFBRDhBQ0FBQUFBZ0FBQUFBQUJvQUFnXFxcbkFBQUFjQUFBQUtBQUFBQXdBTUFBQUFGQUFBQUFZQUFBQVpBQUVBQXdBREFBWUFFQUFTQUFFQUZnQUFBQVFBQVFBQUFBQUFBQUFBQUFNQVxcXG5BZ0FoQUFFQUF3QVRBQllBQUFBQUFBRUFCUUFBQUE0QUFBQUFBRGdBQWdBZ0FBTUFBQUFLQUE0QUFRQURBQUFBQUFBS0FBWUFBQUFBQUFcXFxuSUFBQUFBQUFBQUFnQUFBQVFBR0FBQkFBQUFBZ0FBQUF3QUFBQUFBQUVBQVFBQUFBRUFBQUFMQUFBQUFRQUNBQUFBQUFBYkFBWUFBQUFFXFxcbkFBQUFBQUFGQUNBQUFBQUpBQUFBQUFBQUFBQUFBZ0FBQUFFQUF3QUFBQXdBQUFBV0FBQUFBQUFEQUFBQUJ3QUFBQWdBQkFBQUFBQUFBQVxcXG5BQUFBQUFBUUFBQUFBQUFBQUFBQUFBSHdBS0FDZ0FBQUFCQUFBQUFBQUlBQTBBQUFBQUFBQUFBQUFBQUFFQUFBQUNBQUFBQUFBNkFBUUFcXFxuQ0FBTEFBQUFGd0FBQUFJQUFBQUFBQ0lBQUFBRUFBQUFBUUFDQUFZQUZ3QUhBQWtBSndBQUFBRUFFUUFIQUNNQUFRQUJBQUFBQUFBSkFBXFxcbmdBQWdBbkFBZ0FBQUFYQUF3QU93QUdBQUFBQUFBTUFBQUFCQUFBQUM0QUJRQUhBQWNBQUFBREFBOEFBUUFBQUFJQUFBQUdBQUlBQWdBRVxcXG5BQUFBQXdBUEFBQUFBUUFTQUNRQUFBQUFBQUFBQ3dBZkFCVUFEUUFBQUFFQUFBQUJBQUlBQUFBQkFBQUFDQUFBQUFBQURBQUJBQTRBQUFcXFxuQUVBQVFBQUFBQUFBRUFBd0FBQUFJQUFBQXVBQUFBRVFBQUFCc0FDZ0FUQUJJQUFnQUpBQUVBRFFBQUFBRUFBZ0FBQUEwQUFBQUxBQVlBXFxcbkFBQUFBQXNBQVFBQUFBQUFBZ0FUQUJZQURRQU9BQVFBRHdBTEFBSUFBQUFBQUFvQUFBQURBQUFBRFFBQ0FBc0FBQUFkQUFBQUFnQUhBQVxcXG5BQUFBQUJBQUFBQUFBQUFBY0FCZ0FPQUFRQUFBQUJBQWdBRkFBQUFBQUFGUUFBQUFFQUFBQUFBQUFBRUFBQUFBQUFCZ0FYQUFBQUFRQUFcXFxuQUJBQUFBQUFBQUFBQ2dBQUFBQUFBUUFHQUFRQUFBQUVBQUVBQVFBQ0FBSUFBQUFCQUFjQUFBQUFBQUlBQWdBSEFBSUFId0FKQUFBQUJBXFxcbkFIQUFBQUFRQUFBQUFBQUFBRUFBTUFCQUFBQUFBQUFBQUVBQUFBQUFBQkFBa0FGd0FHQUE4QURBQUFBQUFBQUFBUUFBQUFBZ0FDQUFBQVxcXG5CZ0FDQUFBQUF3QUNBQWtBQXdBQ0FBTUFBUUFBQUFBQUFBQVNBQVFBQUFBSUFBQUFBd0FZQUFBQUF3QU1BQUFBQWdBbUFBQUFBQUFDQUFcXFxuWUFBZ0FBQUFFQUNRQUlBQllBQVFBREFCRUFBQUFUQUFBQUFnQUhBQUFBQXdBQUFBQUFBQUFNQUJvQUFBQUFBQUVBQWdBQUFBSUFDUUFFXFxcbkFCSUFBQUFBQUJFQUNBQUFBQUFBQVFBREFBQUFBd0FHQUE4QUJBQUJBQU1BQUFBSEFBUUFDUUFFQUFFQUFBQUZBQVFBQUFBQkFBQUFBQVxcXG5BREFBSUFGUUFDQUFBQUNBQUFBQUlBQUFBREFCRUFCZ0FHQUEwQUFRQUFBQUVBQXdBR0FDQUFCQUFCQUFJQUN3QUJBQUFBQUFBQkFBRUFcXFxuRVFBQUFBRUFBQUFDQUFFQUFBQUFBQWNBQkFBRkFBTUFBQUFBQUFBQUJRQUFBQUlBQXdBQUFBTUFBQUFFQUFRQUFnQUFBQUlBR1FBRUFBXFxcbkVBRXdBQkFBSUFDUUFMQUFZQUJBQUFBQUVBQUFBQkFCb0FBQUFDQUFVQUFBQVBBQUFBQ0FBQUFBQUFBZ0FFQUJBQUFRQUJBQUlBRWdBQVxcXG5BQUFBQ1FBQUFCTUFBUUFDQUFRQUJnQUVBQVFBQUFBR0FBSUFGUUFBQUFFQUNRQU9BQUlBQXdBREFBQUFBUUFFQUFBQUFBQUZBQTRBQUFcXFxuQUhBQUFBQWdBQUFBc0FBZ0FBQUFFQUJBQUpBQUlBQUFBQUFBQUFBUUFCQUFBQUJBQUJBQTBBQXdBQUFBRUFBQUFFQUFNQUFRQUNBQUFBXFxcbkFnQUZBQUFBQXdBc0FBb0FBd0FBQUFrQUFBQUFBQUlBQUFBQkFBQUFBQUFuQUFJQUFBQUFBQUFBRlFBQkFBSUFCQUFBQUFJQUFBQURBQVxcXG5NQUFRQUFBQUlBQlFBS0FBa0FBUUFDQUFNQUFRQUZBQUVBQ0FBQkFBRUFEd0FBQUFNQUNnQURBQVFBRFFBREFBRUFBQUFNQUI0QUFRQUJcXFxuQUFvQUFRQURBQUFBQVFBQUFBWUFBQUFEQUFJQUJ3QURBQTRBQXdBRUFBOEFCQUFDQUFNQUNBQUFBQUlBQXdBQkFCQUFBZ0FDQUFJQUFBXFxcbkFBQUFVQUFnQUFBQUFBQlFBQUFBQUFBQUFBQUFBQUFBQUhBQWdBQUFBQUFBQUFCQUFBQUFBQUFBQUJBQU1BQUFBQUFBRUFBZ0FCQUFzQVxcXG5Cd0FBQUFNQUJRQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFnQUtBQW9BQlFBQkFBQUFBQUFBQUFJQUFRQUpBQUFBQWdBTEFBSUFBQUFBQUFcXFxuQUFBQUFJQUFFQURBQU1BQVFBQUFBQkFBUUFBd0FFQUFNQUFRQUhBQVVBQWdBRUFBRUFBUUFDQUFBQUFBQUlBQUVBQUFBQUFBQUFBUUFDXFxcbkFBRUFBZ0FBQUF3QUJRQUJBQUFBQWdBQ0FBWUFBQUFCQUFJQUFnQUFBQUFBQmdBQ0FBY0FBUUFBQUFBQUJRQUJBQW9BQUFBQ0FBQUFBUVxcXG5BQUFBQUFBUUFCQUF3QUFBQURBQUlBQ1FBQUFBSUFBd0FBQUFFQUFRQUZBQVFBQndBQkFBRUFBUUFDQUFFQUF3QURBQUFBQVFBREFBQUFcXFxuQWdBQ0FBQUFBUUFHQUFFQUNnQUFBQUFBQ0FBQUFBVUFBQUFCQUFJQUFBQUFBQUFBQndBQUFBSUFBQUFBQUFBQUFBQUFBQUlBRUFBSEFBXFxcbkVBQlFBT0FBQUFBQUFBQUFVQUJ3QUZBQUVBQUFBRUFBQUFCUUFEQUFJQUFBQUJBQUFBQUFBSkFBQUFCQUFDQUFNQUJnQUZBQUFBQVFBQlxcXG5BQUVBQXdBQ0FBUUFBZ0FDQUFJQUFBQURBQVlBQUFBQkFBRUFBQUFCQUFJQUZBQUFBQUFBQndBRkFBSUFBQUFCQUFBQUFBQUFBQUVBQmdcXFxuQUxBQVVBQUFBUEFBRUFBQUFHQUFrQUFRQUhBQUlBQUFBQkFBRUFBQUFBQUFFQUFRQUJBQVVBQndBQUFBQUFBQUFBQUFZQUJnQUFBQWNBXFxcbkFBQUJBQUFBQUFBREFBZ0FBQUFBQUFFQUFRQUdBQXNBQndBQUFBQUFBd0FBQUFFQUNBQUJBQUVBQlFBQ0FBRUFBZ0FLQUFBQUFRQUFBQVxcXG5BQUF3QUFBQUlBQWdBQUFBQUFBQUFBQUFFQUF3QUdBQUlBQUFBQ0FBRUFCQUFCQUFJQUFnQUFBQUFBQVFBRUFBSUFBUUFCQUFFQUFBQUNcXFxuQUFRQUF3QUNBQU1BQVFBQUFBRUFBQUFBQUFRQUFBQURBQU1BQUFBRkFBVUFBUUFEQUFZQUFBQUJBQUlBQUFBS0FBTUFBUUFCQUFJQUFBXFxcbkFBQUFJQUJBQURBQUlBQUFBQ0FBVUFBUUFBQUFzQUNnQUFBQUFBQVFBREFBQUFBd0FBQUFFQUFBQURBQWdBQWdBQUFBUUFBQUFCQUFBQVxcXG5DQUFDQUFBQUFRQUJBQUVBQUFBQUFBQUFCUUFEQUFZQUFnQVVBQUFBQVFBQUFBSUFBd0FEQUFFQUF3QUdBQWdBQVFBQkFBRUFBUUFEQUFcXFxuZ0FBQUFBQUFRQUJnQURBQUFBQXdBQUFBQUFDUUFLQUFNQUF3QUNBQVVBQndBQ0FBQUFDZ0FCQUFJQUFRQUJBQUFBQWdBQ0FBQUFBUUFHXFxcbkFBRUFBQUFBQUFzQUF3QUNBQU1BQUFBQUFBQUFCZ0FBQUFJQUVnQUJBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQVlBQVFBQUFBQUFBZ1xcXG5BQUFBTUFCQUFBQUFBQUFBQUJBQThBQXdBQ0FBNEFDUUFBQUFFQUJnQUFBQUVBQUFBQUFBRUFBd0FBQUFBQUJ3QUZBQUFBQXdBQUFBQUFcXFxuREFBQUFBTUFBQUFFQUFZQUJRQUJBQUFBQXdBQUFBRUFCQUFEQUFBQUF3QUVBQUFBQXdBQUFBQUFBUUFBQUFZQUFBQUdBQUFBQWdBQUFBXFxcbklBQXdBREFBVUFBUUFBQUFVQUJRQURBQUVBQVFBQkFBRUFCQUFBQUFBQUFBQUVBQUVBQVFBQ0FBQUFBUUFIQUFBQUFnQUFBQUFBQVFBQVxcXG5BQUFBQXdBQUFBQUFBUUFDQUFBQUFRQUJBQU1BQUFBQUFBUUFBZ0FGQUFFQUFnQURBQUFBQXdBQkFBQUFBQUFCQUFZQUFRQUJBQUFBQUFcXFxuQURBQVVBQUFBQUFBQUFBUUFEQUFBQUVRQUFBQUlBQlFBQkFBa0FBUUFBQUFVQUF3QUNBQUVBQUFBQUFBWUFBQUFFQUFBQUFnQUJBQUFBXFxcbkFBQUFBQUFBQ0FBQUFBQUFBUUFBQUFjQUFRQUFBQUVBQlFBQUFBRUFCZ0FDQUFNQUJRQUVBQUlBQVFBQkFBY0FBd0FDQUFNQUFRQUFBQVxcXG5JQUNBQUVBQUVBQUFBQkFBRUFBZ0FBQUFBQUFRQUNBQUFBQVFBREFBQUFBQUFMQUFJQUFnQVBBQUFBQWdBQkFBQUFBQUFGQUFBQUFnQUJcXFxuQUFBQUFBQUFBQUVBQWdBQUFBTUFBZ0FBQUFBQUFRQUJBQUFBQUFBQkFBSUFBQUFHQUFJQUFnQURBQUVBREFBQUFBRUFCZ0FDQUFNQUFnXFxcbkFCQUFJQUFRQURBQUlBQXdBQkFBSUFBUUFBQUFRQUJRQUFBQUFBQUFBQkFBQUFBd0FFQUFJQUN3QUFBQUlBQUFBQUFBQUFBUUFBQUFFQVxcXG5CQUFDQUFVQUFnQUhBQUFBQVFBQUFBQUFBQUFCQUFBQUJnQUFBQUFBQVFBRUFBQUFBQUFDQUFBQUFBQUZBQVlBQVFBQUFBRUFCUUFBQUFcXFxuQUFCQUFDQUFNQUFRQUFBQW9BQXdBS0FBSUFBZ0FCQUFFQUFnQUNBQU1BQkFBQ0FBRUFBQUFDQUFFQUJ3QUFBQU1BQVFBQkFBQUFBZ0FFXFxcbkFBRUFBQUFBQUFJQUJnQURBQUFBQVFBQUFBTUFDZ0FCQUFZQUFnQUFBQU1BQUFBQUFBQUFCZ0FEQUFBQUFnQUdBQU1BQkFBQUFBb0FBQVxcXG5BQ0FBQUFCQUFBQUFBQUJBQURBQUlBQWdBQUFBZ0FBUUFFQUFRQUFRQUJBQUVBQVFBQ0FBRUFBQUFCQUFJQUFRQUFBQUFBQXdBQUFBQUFcXFxuQlFBQkFBQUFDZ0FHQUFFQUFnQUVBQUlBQVFBQkFBQUFCUUFCQUFNQUF3QUFBQUFBQVFBR0FBVUFEQUFBQUFBQUNnQUJBQUVBQVFBQUFBXFxcbkFBQWdBQUFBUUFBUUFDQUFNQUFnQUVBQUFBQVFBQkFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUVBQUFBQUFBQVxcXG5BQUFBQXdBQUFBQUFBZ0FDQUFjQUFRQUVBQUlBQVFBQUFBQUFBQUFEQUFBQUJRQUNBQUVBQUFBQkFBb0FBQUFBQUFBQUFRQUNBQUlBQVFcXFxuQUFBQUFBQWdBQkFBQUFBQUFBQUFRQUJBQUJBQVFBQkFBQUFBRUFBUUFBQUFNQUFBQUVBQU1BQVFBQUFBWUFBUUFBQUFFQUFBQUNBQUVBXFxcbkF3QUFBQUFBQXdBREFBQUFBUUFDQUFJQUFRQURBQUFBQVFBQUFBc0FCd0FBQUFFQUJRQUJBQUFBQUFBSkFBRUFBd0FBQUFBQUFBQUFBQVxcXG5FQUFBQUFBQTRBQWdBQUFBUUFBd0FCQUFZQUFBQUFBQVFBQUFBRkFBTUFBUUFBQUFJQUFRQUFBQUVBQVFBREFBRUFBQUFCQUFVQUFRQUNcXFxuQUFFQUFBQUJBQUFBQWdBQkFBRUFCd0FCQUFFQUFnQUdBQVFBQWdBREFBRUFBUUFCQUFBQUFRQUFBQUVBQWdBQkFBTUFBQUFCQUFVQUFBXFxcbkFBQUFZQUFnQUNBQUVBQUFBQ0FBRUFBUUFCQUFJQUJBQUNBQUFBQUFBQUFBQUFBUUFEQUFJQUFBQUVBQUVBQkFBQ0FBQUFBQUFEQUFBQVxcXG5BZ0FBQUFNQUFBQUJBQUFBQVFBQkFBQUFBQUFGQUFNQUFRQUJBQUVBQUFBQkFBSUFBQUFIQUFRQUFBQUJBQUVBQUFBQkFBQUFCUUFCQUFcXFxuQUFBUUFBQUFJQUFBQUJBQUlBQWdBQ0FBRUFBZ0FGQUFJQUFRQUJBQU1BQUFBREFBRUFBQUFDQUFNQUJnQUFBQU1BQWdBQUFBVUFBQUFFXFxcbkFBUUFBd0FCQUFBQUFnQUlBQUFBQXdBQUFBQUFBQUFBQUFNQUFBQUNBQUlBQVFBQkFBQUFBd0FBQUFFQUFnQUFBQUFBQUFBQkFBTUFBUVxcXG5BRUFBRUFBZ0FDQUFJQUFnQUFBQUlBQkFBQkFBRUFBQUFDQUFBQUFBQUNBQVFBQkFBQkFBSUFBQUFCQUFJQUFRQUVBQUlBQXdBR0FBQUFcXFxuQVFBRkFBQUFBQUFBQUFBQUFBQUNBQUlBQVFBQUFBQUFBQUFDQUFJQUJBQUFBQUFBQUFBRUFBTUFBUUFCQUFrQUFRQUFBQUFBQXdBQUFBXFxcbkFBQWdBQkFBQUFBQUFCQUFNQUFBQUJBQUFBQWdBQ0FBRUFBQUFBQUFFQUF3QUNBQUlBQUFBQkFBRUFBQUFDQUFFQUJRQUNBQVFBQVFBQVxcXG5BQUlBQUFBSUFBQUFBd0FCQUFNQUFRQUNBQUVBQVFBQ0FBRUFBUUFEQUFNQUFRQUFBQU1BQVFBQ0FBSUFBUUFBQUFBQUFRQUVBQUFBQWdcXFxuQUFBQUFBQUFBQkFBTUFBUUFBQUFFQUF3QUJBQUFBQWdBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBXFxcbkFRQUJBQUFBQUFBQkFBVUFBZ0FBQUFBQUFRQUNBQWdBQUFBQUFBRUFBQUFSQUFFQUFBQUFBQUVBQUFBQkFBQUFBQUFBQUFJQUFRQUFBQVxcXG5BQUFBQUFBQUVBQUFBQkFBRUFBQUFCQUFVQUFBQUFBQVlBQXdBQUFBSUFBZ0FCQUFFQUJRQURBQUlBQWdBQUFBQUFBQUFDQUFBQUFRQUVcXFxuQUFFQUFnQUNBQUFBQVFBQ0FBSUFBUUFCQUFvQUFRQUJBQUFBQWdBQ0FBRUFCQUFHQUFFQUFRQUJBQUVBQUFBRUFBRUFBQUFCQUFBQUFBXFxcbkFDQUFzQUFRQUlBQUVBQVFBQkFBQUFBUUFBQUFVQUFBQURBQThBQVFBQkFBQUFBUUFDQUFFQUFBQUJBQUVBQVFBQkFBRUFBZ0FJQUFFQVxcXG5BUUFBQUFFQUFRQUJBQUFBQUFBQUFBRUFBUUFBQUFFQUFBQUNBQUFBQUFBQUFBSUFBUUFBQUFFQUF3QUFBTXNCRGdEZEZRRUFPZzRBQUVcXFxuRVVBUUEwQVE0QXNSd0JBTDBWQVFDdkR3QUEzQUVPQUlFUkFRQTBHUUVBZEJNQkFDTUlBQUI4cGdBQVRRb0FBRktwQUFBRDRBRUFTUTRBXFxcbkFMVVhBQUIwRUFBQS9pMEFBTDZvQUFEOUFRRUE0QUlCQUxFUEFBQzZxUUFBQUF3QUFLYmFBUUNpQlFBQUp2NEFBRUVLQUFDbUJ3QUFtQVxcXG5nQUFJSUxBQUQ3Q2dBQXV3OEFBSG9hQUFBYXp3RUFhMjhCQUhXbUFBQkZ6d0VBTHdFT0FFOEJEZ0E3SEFFQTl5MEFBTCtwQUFEcnFBQUFcXFxubnJ3QkFIUWFBQUM0RGdBQUxEQUFBRTBNQUFCUEJnQUFYaEFBQUVFSEFBQkUyZ0VBUkFzQUFDUVpBQUFkMmdFQXdBa0FBQzMrQUFBd0F3XFxcbkFBd3dFT0FKMFFBQUFpQXdBQUdNOEJBQUlNQUFBb0FRNEF5eGNBQU1zYUFBRGpBUTRBQXFnQUFISnZBUUFCRUFFQU5CWUJBSnZhQVFET1xcXG5DQUFBdHc0QUFFRVFBUUI3R2dBQVZ4QUFBRkFCRGdCdEd3QUE0Z3dBQU9hb0FBQStFQUVBR1FZQUFJRVFBUUNqRHdBQXd4UUJBSkFhQVFcXFxuQXNDQUFBY3hFQkFHWWFBQURVNkFFQWJ0RUJBTGdSQVFBMEdRQUFETThCQU00QkRnQTV6d0VBdmhFQkFOSUJEZ0FJMmdFQVFRRU9BRFlTXFxcbkFRRENFQUVBSmY0QUFEWnJBUUJYQmdBQVNRY0FBQkVEQUFERUFRNEEweUFBQUNIYUFRRHBHd0FBRHM4QkFGMXZBUUNDMFFFQVFjOEJBUFxcXG40SUFBQUYvZ0FBV1JvQkFPWWRBQURHR2dBQUlBRU9BRGdhQVFDM0VBRUE3QjBBQUZFREFBQUpBd0FBelIwQUFMd1ZBUUMxRkFFQWdHOEJcXFxuQUlJUkFRQnVid0VBcWh3QkFKZ0JEZ0RZRFFBQUM2Z0FBTW9PQUFEd0hRQUF4YWdBQUx3UEFBQnNFd0VBWkJBQUFDa2NBQURBRkFFQU1CXFxcbkFBQUwwYUFBQk1EZ0FBQWdvQUFEMFVBUUR0NUFFQTJDQUFBQVFhQVFBbXp3RUFGZ0VPQU13S0FBQk5Ed0VBN2FvQUFLb0hBQUFDQ1FBQVxcXG5RaFFCQUN3QkRnREhDZ0FBdnFvQUFDRVpBQUNjSEFFQVBoOEJBQUlSQVFCVENRQUFXOW9CQU9tb0FBQkVFQUVBTTJzQkFPTUlBQUJZQVFcXFxuNEFKcWdBQUVFZkFRQVpEd0FBV0JBQUFPOEJEZ0FkQVE0QXV4Y0FBQjhYQVFBeUVnRUExeHdBQUdRREFBQTFIQUFBUHdvQUFGb2FBQUJUXFxcbk5BRUFWUm9CQU84ZEFBQkNBd0FBVEFzQUFPb0JEZ0F5endFQWdoQUFBR01MQUFERkdnQUFOUllCQUdrYUFBQ0hCQUFBWkFFT0FEUGFBUVxcXG5BSEFRNEF3QXNBQUQ0Y0FRREJBUTRBcnRvQkFLRVBBQUNWSEFFQWNhWUFBRFljQUFCeEd3QUFnQnNBQUR3REFBRFZJQUFBcmhZQkFGVGFcXFxuQVFBWkNBQUFIK0FCQUFFREFBRGNHUUVBSmhjQkFCd0RBQUM0RndBQVd3RU9BTkFkQUFDZUR3QUFsQThBQUg4UEFBQXlIUUVBaXhvQkFOXFxcbm9kQUFCNkFRNEF0aFlCQUpzY0FRQ09Ed0FBSUJjQkFIMnFBQUNDRHdFQXRxa0FBRVFIQUFBQkh3RUFjMjhCQURJV0FRQTREZ0FBekFzQVxcXG5BRGNmQVFEeEJ3QUFRQU1BQUxNV0FRQUNFQUVBUnVrQkFCM1BBUUJKMmdFQUx0b0JBRDRiQUFBS0FRNEE0Z2tBQUMzUEFRQURDd0FBVHdcXFxua0FBSE1UQVFCSk5BRUFPQmdCQURhcUFBRE1EQUFBc0FFT0FLMEhBQUR4SFFBQXpSY0FBRlUwQVFEaUNnQUFQTThCQUNmUEFRQ0Zid0VBXFxcbkN1QUJBSjhjQVFCbzBRRUEzaGtCQURJWkFRREFIUUFBc0JBQkFFanBBUUFuMmdFQWVBTUJBQkFEQUFEeURRQUFPQkFCQUxRVUFRQTZDUVxcXG5BQTRCd0FBRXdKQUFCa2J3RUE3S2dBQUw4UkFRQXpFUUVBN0JzQUFEWGFBUUJOcVFBQUFNOEJBQzhEQUFBb3FRQUF4d1VBQUJrYUFBQlVcXFxuQXdBQVFoa0JBRFRQQVFDd0J3QUErZ29BQURJY0FBQU4yZ0VBSmM4QkFJc2RBUUMwRmdFQXh4b0FBTHlwQUFDSzBRRUFJZjRBQUlNQkRnXFxcbkNzQndBQVVEUUJBQzBCRGdEV0dRRUE0UjBBQUw0TUFBQmJCZ0FBRmdNQUFGa2FBQUFFNEFFQWNLWUFBRXZhQVFEZEZ3QUFDT0FCQUpFQlxcXG5EZ0FZRHdBQVB4UUJBSkFCRGdEanF3QUFUZG9CQU5VTUFBRGFEUUFBWXcwQUFEVU9BQUFlendFQUh0b0JBT2dCRGdDL0ZBRUFSZ2NBQU5cXFxuRWNBQUIxMmdFQTdPSUJBSllGQUFENkhRQUFOQU1BQUhkdkFRRGpDUUFBbndFT0FMb1hBQURCQ2dBQTR4MEFBRERoQVFDaEd3QUFxQUVPXFxcbkFNTWFBQUE0SEFFQXN4RUJBRmNEQUFBcUFRNEFyQllCQUhZUEFBRGdHUUVBY2hvQUFLSVBBQUJ5RndBQXN3VUFBUGNkQUFDMkhBRUFZOVxcXG5vQkFIQnZBUUQ0SEFBQVJ3Y0FBT1FTQVFEVDZBRUFNYW9BQU1NTUFBQU4vZ0FBTnhvQkFNc2RBQUFYQXdBQXlCMEFBQ3NjQUFDNkRnQUFcXFxuV2dnQUFEVVlBUUJzQXdBQXJ3VUFBRHNVQVFBUTJnRUFuaHdCQU9Hb0FBQmNBd0FBQXhzQUFHWURBQURFQlFBQURjOEJBSW9hQVFESUFRXFxcbjRBcVFFT0FPRUdBQUFrL2dBQUpxa0FBQ1NvQUFBdHFRQUF2QkVCQU9xckFBRDhDZ0FBN1IwQUFGb0dBQUJTQ1FBQVhkb0JBRllKQUFEaFxcXG5IQUFBTXhrQkFHZlJBUUNmcGdBQVBnMEFBTFVRQVFDeUZnRUFGK0FCQUQ0QkRnQ0EwUUVBWjlvQkFPdXFBQURSSFFBQXVLb0FBQ0xQQVFcXFxuRHhMQUFBMXdZQUFEQVpBQUEwMmdFQUpnTUFBRElRQUFEbkd3QUF4QWtBQUZmYUFRQnFFd0VBb2RvQkFIa0JEZ0RCREFBQUtSRUJBSU1QXFxcbkFRQTBFQUFBZ2dvQUFGR3BBQUJMTkFFQWZ5MEFBTWNKQUFBNUh3RUFOQjhCQUZ0dkFRQytDd0FBR2dNQUFJNGRBUUJKNlFFQXRob0FBRVxcXG5BYkFBQnQwUUVBZ2cwQUFFd1RBUUEvQXdBQVB4MEJBTllOQUFCRkZBRUFXQm9BQU40SUFBRENHZ0FBTkJzQUFQUWVBUUExSFFFQWxRRU9cXFxuQURjY0FBRGxxUUFBZ0trQUFJVUJEZ0NPQVE0QXVxZ0FBRHNaQUFBNzJnRUFTd2tBQUVnUEFRQThEUUFBeVIwQUFFWVFBUUFtR1FBQXNBXFxcblVBQUZVTUFBQThIQUVBNWdnQUFCY0dBQUFKQVE0QU5PRUJBQ3orQUFEbXF3QUFELzRBQVBZZEFBREpHZ0FBUEJBQUFEd0pBQUJVQVE0QVxcXG4ydzBBQUJQUEFRRENGQUVBNmlBQUFONEJEZ0RzQmdBQVh4QUFBRy9SQVFBbi9nQUF4UUVPQUlJQkRnQzFCUUFBQkFFT0FMNnBBQUFDNEFcXFxuRUF2d3dBQUlZWUFBQ0NHd0FBeGc4QUFDb0RBQUJ3QmdBQWdRa0FBSlVGQUFEZkNBQUF5Z2dBQUJVWEFBQkJDd0FBV0FZQUFNSWRBQUJjXFxcbkJnQUFNQUVPQUt3YkFBQWtIQUFBM2lBQUFMMFJBUUMwcUFBQWhnUUFBQUlEQUFBQ0FRNEFYaFFCQUQzYUFRQVJ6d0VBVVFFT0FMUUJEZ1xcXG5DM0JRQUF0Qm9BQUtJYkFBQ3QwUUVBTFJnQkFJdlJBUUM5RndBQUg4OEJBTWtLQUFDbkhBRUE2eDBBQUh2UkFRQm8yZ0VBekE0QUFEQWNcXFxuQUFDMUZnRUE1NmdBQUNvUkFRQTlHZ0VBYXhNQkFNVUZBQUJqRXdFQTlnZ0FBTEFhQUFBOUZnRUFnZ3dBQUVEUEFRQS9Ed0FBQUFFT0FOXFxcbk1OQUFBMUVBQUFkaG9BQUtUYUFRQVVBd0FBUmc4QkFIbHZBUUJaQVE0QW5BOEFBRHdCRGdBNkdBRUFBT0FCQUVIYUFRQkhHZ0VBTXdjQVxcXG5BR0RhQVFCQUZBRUFjaHNBQUs4SEFBQnpEd0FBSjZnQUFPa0JEZ0NXR2dFQUV1QUJBREFZQVFCRzJnRUE1aTBBQU5zY0FBQVdCZ0FBQWZcXFxuNEFBQUFUQVFCUkNRQUF2QW9BQUNtcUFBQXhHUUFBRjlvQkFHMGFBQUFqRndFQVNnOEJBQjRCRGdEa0JnQUFRd01BQU5JY0FBRFpJQUFBXFxcblBoWUJBS2dGQUFBdUVnRUE0QjBBQUQ0UUFBQXRFQUFBQzlvQkFNR3FBQUI4YndFQTJpQUFBRWlwQUFCNnBnQUFJODhCQURXcUFBQzhxQVxcXG5BQVZkb0JBTE1CRGdCWGJ3RUFCUW9CQUNvWEFRQjNHZ0FBc1JZQkFNRWRBQUFHendFQWRRb0FBSFZ2QVFCRkhRRUFQQnNBQURjUUFBQytcXFxuQVE0QXBRRU9BRE1ZQVFCVUNRQUFDLzRBQUc5dkFRRC9EZ0VBVGdZQUFDQURBQURQSFFBQUtmNEFBTDRKQUFBMUR3QUExZ3dBQUlrRUFBXFxcbkJLRFFBQXR4Y0FBUHdkQUFEb3F3QUF6aDBBQUd3YkFBRGZEUUFBa0c4QkFETVdBUUNVR2dFQVQ2a0FBRGNZQVFBQURRQUFjZEVCQUlzUVxcXG5BQUF5QndBQW1Sb0JBSWJSQVFBREF3QUFkd01CQUxNVUFRQVY0QUVBbnc4QUFNMEtBQURCcUFBQW85b0JBSmdjQVFDNkZRRUFld0VPQU1cXFxuY0xBQUJvRXdFQTV3Z0FBT01LQUFCTURBQUFOODhCQUQzUEFRRGpFZ0VBOFJzQUFPSVNBUUJ3MFFFQXM2a0FBR0lEQUFDRUR3QUFQd0VPXFxcbkFJTUVBQUN5QlFBQVlBRU9BSzRjQVFCUER3RUFZVzhCQU8rcUFBRFlBUTRBQmhvQkFEa0RBQUEyRmdFQXNoUUJBQzhjQVFBK0N3QUFPaFxcXG5ZQkFFa1BBUURxcUFBQVFRd0FBRlVHQUFBMEVnRUFMQU1BQUs4QkRnQi8wUUVBT3cwQUFDUGFBUUFlK3dBQXdnb0FBSzBiQUFBOEZnRUFcXFxubFE4QUFMK29BQUFvendFQU9RRU9BSVVQQVFDN0dnQUFLZG9CQVBRY0FBRG9CZ0FBMGVnQkFEd0xBQUFjQVE0QUUrQUJBTTRhQUFDckJRXFxcbkFBNWdvQkFPRWdBQUEvendFQSt4MEFBTTBJQUFBMkhBRUFPd2NBQUNvSUFBQzJGd0FBU0E0QUFPNGdBQUEzR1FFQTN4d0FBR0lCRGdBNlxcXG56d0VBMlFnQUFEY1dBUUQ3TFFBQWpBRU9BUGtkQUFCekVBRUFYeE1BQU5jSUFBQnpGd0FBNEFnQUFQTnFBUUFRQmdBQW5BRU9BQUVKQUFcXFxuQVk0QUVBSitBQkFDemFBUUJEQ3dBQURCZ0FBRk1YQUFDeEZBRUFzaFVCQU9lckFBQWRBd0FBQVF3QUFMUVJBUURpQVE0QTlRZ0FBTFVjXFxcbkFRQzhEQUFBR2hvQUFCVGFBUURISFFBQUdCb0FBR0lOQUFCQ0J3QUFXTm9CQUxrUkFRQTFHZ0VBdVJVQkFHa0RBQUNtQlFBQThLZ0FBR1xcXG5rQkRnQ3JGZ0VBeXc0QUFKa0ZBQUJaMmdFQTdDMEFBSmtjQVFCWUF3QUFLQkVCQUxXb0FBQVh6d0VBOG1vQkFEd1RBUUFSQndBQWFSTUJcXFxuQUhBYUFBQmlFQUFBVHFrQUFCSGFBUUNjQlFBQXVROEFBRUlkQVFBcXFRQUFrUjBCQUxvYUFBQnJHZ0FBTEJJQkFEWUJEZ0NHRUFBQVp4XFxcbkFBQUtJQkRnRDlDZ0FBRmRvQkFJTnZBUUFxMmdFQUtjOEJBQ2phQVFCd0d3QUF0QmNBQUxzT0FBQkhDUUFBY1JNQkFCc2FBQUJoQXdBQVxcXG5OQjBCQU5RY0FBQSt6d0VBTlJrQkFEQVJBUUJiR2dBQU5CRUJBRWtCRGdCR0ZBRUFZd01BQUlBQkRnQU0vZ0FBTlJ3QkFMWU9BQUNrRHdcXFxuQUFvQThBQVA4SUFBQzZGQUVBT1JRQkFIQUJEZ0JBRFFBQVh3RU9BTndHQUFESkVRRUFTQXdBQURRWEFBQkQyZ0VBTEtvQUFNME9BQUN4XFxcbkFRNEFJK0FCQUdCdkFRQ2RDQUFBVFE0QUFPNEhBQUFTQXdBQXhLZ0FBRXdEQUFBOEVBRUFLUWdBQUVMUEFRQ2kyZ0VBS1JjQkFGY0pBQVxcXG5EUkdRRUF4aDBBQUFqUEFRQy9HZ0FBbmdVQUFJRU5BQURUQVE0QUNkb0JBSDNSQVFEbEVnRUFrQjBCQUI3Z0FRQTE0UUVBRHdNQUFMSVFcXFxuQVFET0VRRUF4aGNBQU9Pb0FBQm1id0VBUGdvQUFETGhBUUJWQVE0QTd1UUJBS3NIQUFEdElBQUFZd2tBQU5BQkRnQy9BUTRBMHdnQUFOXFxcbjRjQUFDa0d3QUE0d3dBQURjVUFRQUNDd0FBUUF3QUFQUUlBQUE0SHdFQWlCQUFBRkNwQUFEdUd3QUFnYWdBQUtBQkRnQUFDUUFBMXVnQlxcXG5BQjRYQVFDMUFRNEFyQVVBQUNVQkRnRHZJQUFBdGdVQUFLY0JEZ0NOSFFFQWZBRU9BTXNNQUFBL0d3QUE2eUFBQUR3S0FBQlhBUTRBVnhcXFxub0FBS3pSQVFEdnFBQUFtQVVBQU9BU0FRQXJBUTRBZ0E4QUFOd2RBQUJMQXdBQWFCb0FBUENtQUFDYkJRQUFnUnNBQURKckFRQ3FEd0FBXFxcbm5CQUFBRTBEQUFBTUFRNEFHUU1BQUNVWkFBQTdHZ0VBR3dNQUFHUWFBQURVQ0FBQWQ2WUFBR0lMQUFCRkVBRUF5d29BQUM4UkFRRFVBUVxcXG40QUN0b0JBSzhWQVFBVEJnQUE5YW9BQVBFSUFBQldHZ0VBdndzQUFFeXFBQUI2QXdFQS94MEFBTDRLQUFBdU1BQUFPUnNBQUozYUFRQnFcXFxuR2dBQTloNEJBS29CRGdEcUVnRUFIT0FCQURrUUFBQzRCUUFBTkJ3QkFOc2dBQUF3RWdFQWd3d0FBRFlRQUFCSUNRQUEyeGtCQU8wQkRnXFxcbkF4SEFBQVB3b0JBTFVhQUFDVUhRRUFnNmtBQU0wTUFBREVGd0FBTVJrQkFFSWZBUUFvSEFBQU10b0JBRVVSQVFBcU1BQUFOUUVPQU1nS1xcXG5BQURIREFBQXJRRU9BQURhQVFBM0d3QUFid01BQUVNZEFRQ3RGZ0VBOVI0QkFQK29BQUFaMmdFQUNnTUFBTXdKQUFDc0RnRUFqQjBCQUFcXFxub2FBUUMwcWdBQUwvNEFBTUFLQUFDVUFRNEFYd1lBQUFjYUFRQmFBUTRBY3dFT0FDY2NBQURJRndBQUlBZ0FBRjBHQUFETEN3QUEzUUVPXFxcbkFFTVRBUUFKNEFFQVFRa0FBRklYQUFEa0hBQUFLUU1BQUJNWEFBQVlBUTRBMmhrQkFHcmFBUUR5Q0FBQWNROEFBRkZ2QVFDZUNBQUErQ1xcXG4wQUFBNEtBUURrTFFBQUtxb0FBSklCRGdEU0RRQUFnUXdBQU1jQkRnQTRDZ0VBZGdFT0FPa2dBQUNkQVE0QTV5QUFBQzREQUFBZDRBRUFcXFxuSk04QkFERUhBQURFQ2dBQWZRRU9BSHR2QVFBMEhBQUF0UlVCQUFZREFBQjJid0VBeUFzQUFCb0dBQUJKcVFBQThBZ0FBTEljQVFBL0V3XFxcbkVBdFJFQkFFUVRBUUF0Q0FBQTB4MEFBSExSQVFBTEFRNEE5aTBBQU9BR0FBQi9FQUVBZEc4QkFFY2RBUUJER1FFQU1Hc0JBQUVhQVFCTFxcXG5EUUFBZTZvQUFDTGFBUURzQVE0QVJ6UUJBQXZQQVFDYUhBRUEraTBBQU1JQkRnQWtGd0VBaFFRQUFGSWFBUUROQVE0QUE5b0JBTHVvQUFcXFxuQWlGd0VBTUJrQkFPMEdBQUFWQmdBQXFOb0JBRElCRGdBenp3RUFRaEFCQU5nY0FBQVhHZ0FBY1FFT0FKOElBQURkR1FFQVh0b0JBS3JSXFxcbkFRQWsyZ0VBQVFzQUFGNGFBQUE5SFFFQVpRRU9BR2NEQUFDMkVBRUFkQkFCQURqUEFRQTNFZ0VBOHgwQUFPVWRBQUJBQVE0QWNxWUFBRVxcXG5vSEFBQjJBd0VBRFJnQUFNa0JEZ0JqREFBQVRBWUFBS2diQUFCOER3QUFWVzhCQUEwQkRnQ0VCQUFBcnh3QkFBWUJEZ0FZQXdBQTVCa0JcXFxuQUNzREFBQnVBUTRBT0JRQkFLOFdBUURQRndBQVRUUUJBTy9rQVFBREh3RUFSOW9CQUcwUUFBRGZIUUFBUncwQUFFb01BQUJNQ2dBQTJoXFxcbndBQUpFRkFBQldDd0FBaDlFQkFFY0tBQUFNQ2dFQWdRb0FBTGFvQUFDVkhRRUF3QXdBQUlNS0FBQW5HUUFBMkFZQUFCc0JEZ0RXQmdBQVxcXG42aTBBQUdFYUFBQVhBUTRBNUNBQUFMaXBBQUNFRHdFQTNRZ0FBTHNCRGdEU0hRQUFCZG9CQUljUEFBRHFHd0FBMFJjQUFDZ1hBUURESFFcXFxuQUFzQlFCQUxtb0FBQThCd0FBU0FvQUFFNEpBQUJMcVFBQXRnOEFBTUVYQUFDbkJRQUE4aDBBQU5jTEFBQ0REUUFBTzg4QkFPUnZBUUQ5XFxcbkRnRUFaUU1BQUpvSUFBQ21Ed0FBUE5vQkFKMGNBUUFVQVE0QXR4b0FBQjhJQUFEb3FBQUFPeGtCQUxFT0FBQXRBd0FBTE04QkFPU29BQVxcXG5EWEFRNEFuUVVBQU8yckFBQjRid0VBQkJzQUFQTUlBQUFCRVFFQXZoVUJBREVkQVFBekhBQUFCODhCQUFjREFBQlJCZ0FBNVJ3QUFOa2RcXFxuQUFDNEZRRUFyQUVPQUQ0REFBQWdHUUFBNlFnQUFQa3RBQUJZYndFQTFRRU9BRzF2QVFCS0FRNEFUUTBBQUtBY0FRQUt6d0VBNkJ3QUFHXFxcbkFRQUFDV0hBRUFYZ01BQUlZQkRnQzdGUUVBMXhrQkFQUnFBUUNwMmdFQWdna0FBTE1jQVFBcXp3RUFwQndCQURzREFBQmRFd0FBTlJRQlxcXG5BTGdVQVFDOENRQUFCZUFCQUlJUUFRQ3IwUUVBQXdvQkFQR29BQUJLRGdBQW9od0JBT3lyQUFBY0NBQUE0aHdBQUE3YUFRRGZCZ0FBSXZcXFxuNEFBT1ljQUFDSEVBQUFqdzhBQUk4YUFRRENDUUFBVHRvQkFBYmdBUURRQ0FBQTJCMEFBQlFYQUFCQUNnQUFKZ0VPQUZNYUFRQlJOQUVBXFxcbldSQUFBR0hhQVFEdDRnRUFmTkVCQUhpbUFBQ1pNQUFBWlc4QkFERUJEZ0FtQ0FBQVBSd0JBUE1OQUFBUEdBQUFWaG9BQUlvZEFRRFpIQVxcXG5BQTRLZ0FBQ2tCRGdBNEdRQUFBQjhCQUVVREFBQUNHd0FBdmFrQUFFTVVBUUFHcUFBQXVha0FBQXphQVFEV0FRNEFEK0FCQURJWkFBQlVcXFxuTkFFQVN4TUJBQ29aQUFCNUR3QUFZQm9BQUZrR0FBQTZId0VBMWVnQkFBRU5BQUEwQndBQVJoRUJBQWdCRGdCVEFRNEE2d1lBQURzQkRnXFxcbkJ6R2dBQVp3RU9BSmdhQVFCeUR3QUFNUmdCQU13ZEFBQ0JEd0FBMVJrQkFHaHZBUUNRRHdBQXV4UUJBUDB0QUFBQS9nQUE5d2dBQUZiYVxcXG5BUUNIQVE0QXdLa0FBSk1QQUFCN3BnQUFSQU1BQU9JZ0FBRDZDQUFBS3dnQUFLRUZBQUNqR3dBQVF0b0JBQk1EQUFCbUV3RUFiQm9BQU5cXFxuc0JEZ0FwcVFBQTVRRU9BQnZhQVFDd0ZnRUFKQU1BQUw0WEFBREFGd0FBM1NBQUFEWVlBUUJRRHdFQVBRY0FBTDBCRGdEUkRRQUFNeGtBXFxcbkFCdlBBUUFiQ0FBQVE2b0FBTzRCRGdEY0ZRRUE1QjBBQUVrREFBQXlIQUVBaEFFT0FGT3BBQURzSUFBQVJ3RU9BREhQQVFBdHFnQUFSd1xcXG5zQUFNOElBQUFzcVFBQUpPQUJBQnZnQVFETkdnQUFnUUVPQUNRQkRnQmlHZ0FBdndrQUFKb0ZBQUJNRFFBQUp4Y0JBSnNRQUFEQUZRRUFcXFxuN3kwQUFBNEJEZ0R0SEFBQU1Lb0FBS29iQUFDL3FnQUFHTm9CQUsvYUFRQWEyZ0VBZ2RFQkFLWWJBQUFDendFQXFSd0JBTG9CRGdBRENRXFxcbkFBQmM4QkFMOEtBQUNNRUFBQXZ4VUJBRVlOQUFBUkFRNEFvQVVBQURvY0FRQWxGd0VBQkF3QUFOVUlBQUI1QXdFQUNBTUFBQ0RnQVFDYVxcXG5Ed0FBd3hjQUFBYitBQUJWR2dBQXNCVUJBTGNSQVFEVUlBQUFoMjhCQUFNS0FBQmpBUTRBS3hBQUFPSUdBQUM3cVFBQXFRY0FBRTJxQUFcXFxuQk1Ed0VBbHgwQkFMd1VBUUR3TEFBQXVCb0FBR2NhQUFCckVBQUFkUThBQUVnVEFRRDVIQUFBY0JBQkFGNEdBQUNaQVE0QWV3OEFBSG1tXFxcbkFBQUZHZ0VBc2hvQUFFb0RBQUFzcUFBQU51RUJBRXNQQVFEU0lBQUFSczhCQUo3YUFRRGJDQUFBT1E4QUFMc1JBUUFtMmdFQUpnMEJBQVxcXG56Z0FRQXNFQUFBaG04QkFDNEJEZ0JFNlFFQXR3OEFBRFliQUFCSERBQUFDeGdBQUZRR0FBQ3RIQUVBN0FnQUFHeHZBUUJFR3dBQXpnNEFcXFxuQU53TkFBRG5BUTRBZHdFT0FOY2RBQUJlQVE0QVZRc0FBUDhLQUFES0RBQUFPeFlCQUFFYkFBRG5FZ0VBQVFvQkFKa1BBQUErR2dFQUFkXFxcbm9CQUR3VUFRQ1hHZ0VBbmdFT0FKb0JEZ0JlRXdBQWl3RU9BRThEQUFBOUdRRUFhQU1BQU82cUFBQXJxZ0FBUnc4QkFFNFBBUUNSRHdBQVxcXG5FZ0VPQUVBV0FRRHVDQUFBZ0JBQkFETWNBUUIvYndFQTNoMEFBS3ZhQVFCK0FRNEFSUWtBQUpNRkFBQmEyZ0VBdXdVQUFFSUpBQUF3MmdcXFxuRUE5cW9BQUZEYUFRRHdid0VBdDZnQUFFQVpBUUJnQXdBQTlTMEFBRDhIQUFCNEdnQUEvZ2tBQU9VSUFBRE9Gd0FBVW04QkFDNytBQUF2XFxcbkhBQUFMaGdCQUg4QkRnRDBMUUFBb3dFT0FERVdBUUR3QndBQTh4NEJBTDBGQUFEK0hRQUFQaE1CQUFJYUFRQVFBUTRBL2dvQUFPNHRBQVxcXG5DbEJRQUFsQVVBQUFUYUFRRHZDQUFBUlFFT0FBNERBQUJIQXdBQVlnd0FBQW4rQUFBN0V3RUF2UlFCQUxZUkFRQVF6d0VBUHRvQkFMa0JcXFxuRGdCSTJnRUFUUXNBQU1VZEFBRFVEUUFBUmVrQkFCZ0dBQUIwRHdBQVF4QUJBSDhhQUFEV0NBQUFqK0FCQURBY0FRQ01HZ0VBeWdFT0FEXFxcbklEQUFEd2FnRUEzZzBBQUhwdkFRQVBDZ0VBMENBQUFHSVRBUUFONEFFQUt4RUJBS01GQUFCd0NnQUFaZG9CQUZzYUFRQzNxUUFBb3h3QlxcXG5BTGdQQUFBekVBQUF6eEVCQUJvQkRnQWlDQUFBd2dVQUFETVhBQUIxQVE0QXVSb0FBRTRCRGdBcTRBRUFQZzhBQUd3UUFBQTdDUUFBNVNcXFxuMEFBTXdYQUFEaklBQUFuOW9CQURnWkFRQTJCd0FBS2VBQkFBTU5BQUROQ3dBQXF4d0JBRGtRQVFEczVBRUFBODhCQUEwREFBQ0pFQUFBXFxcbkt6QUFBQUVUQVFBeEVRRUFLNmtBQUg3UkFRREtFUUVBME9nQkFGQUdBQUR6TFFBQTNBZ0FBQzRRQUFCTXFRQUFBd3dBQUxLcUFBQzFEZ1xcXG5BQTRxZ0FBSGNQQUFBNEFRNEE3UnNBQU04QkRnRHBFZ0VBUkFFT0FETWRBUURBR2dBQXRnRU9BTUlYQUFERkNnQUFSQjBCQURrSEFBQTVcXFxuR0FFQWhSZ0FBQUFSQVFCTEJnQUFwUnNBQUxNUUFRQkhEZ0FBMGdnQUFPOEhBQUExQXdBQWhnOEFBRjBhQUFBTUF3QUFmYVlBQUdYUkFRXFxcbkN3SEFFQVBRTUFBT3NiQUFDUGJ3RUFXaG9CQU9VS0FRQVQyZ0VBUFJBQUFCTFBBUUEyRGdBQU1CWUJBRVFKQUFDM3FnQUFPZ29CQURIYVxcXG5BUUF3endFQThnY0FBQW5QQVFCTUFRNEFGYzhCQUVJTkFBQkdDUUFBUU5vQkFNWU1BQURCQ1FBQTV3WUFBS2tQQUFDbkd3QUE4d3dBQUVcXFxuRURBQUM2QlFBQXpCb0FBTVlMQUFEYkhRQUFKd01BQUMzYUFRQjRBUTRBL3kwQUFEUnJBUURLQ3dBQU9Sa0FBT1liQUFDdER3QUEweGtCXFxcbkFMU3BBQUE2SFFFQWlBUUFBT0FnQUFBMnp3RUFOd01BQUw0YUFBQXhFQUFBMUIwQUFOY0pBQUEvRmdFQUljOEJBTVFkQUFBRS9nQUFpUVxcXG5FT0FHb0RBQURkSFFBQXRoUUJBSUFSQVFCcUFRNEFhbThCQVBGdkFRQW5BUTRBTVJJQkFFRVNBUUJXQmdBQVlRRU9BRVlEQUFBNkZBRUFcXFxuMWh3QUFFa0pBQUFtSEFBQXNSQUJBRFlVQVFBREdnRUFaeE1CQUs3aUFRQUsvZ0FBRHVBQkFDVURBQUNjMmdFQVpSb0FBSU1KQUFBSUdnXFxcbkVBdVJjQUFFc01BQUIwQVE0QVJOSUJBRTgwQVFEbkxRQUFPQnNBQURvQkRnRGNJQUFBSHdFT0FCblBBUURSQ0FBQUVPQUJBRlVKQUFCcFxcXG5id0VBcXc0QkFNY1hBQUJBRXdFQUhRZ0FBQ2dEQUFBbzRBRUF2QmNBQUxPcUFBQzNBUTRBVGc0QUFMd2FBQUJtMmdFQU1oY0FBSzRCRGdcXFxuQkR6d0VBUTlJQkFCSVhBQUJDREFBQVB3c0FBQzB3QUFEbUFRNEFITm9CQU8wdEFBQkJHd0FBdEJ3QkFFZ0JEZ0FqQVE0QWt4MEJBSElRXFxcbkFBQTJHUUFBWXhBQUFGWU1BQUE1R2dFQTcrSUJBS3NCRGdEUUZ3QUFRdElCQUZrREFBQStFZ0VBT1JZQkFITWJBQUJTQVE0QWpSb0JBUFxcXG5GcUFRQmJBd0FBd2dzQUFCTGFBUURhQVE0QWt4d0JBRW9KQUFBK0J3QUFjaE1CQUVnTkFBRHBIUUFBd1JRQkFLNEhBQUJVR2dFQU9Rb0JcXFxuQURnV0FRRHJMUUFBT2djQUFBL1BBUUNyRHdBQXlob0FBTU9vQUFDQnFRQUF4Qm9BQURQaEFRRGxxd0FBVXRvQkFEY09BQUFGQVE0QVZ4XFxcbk1CQURZREFBQStEQUFBRHdFT0FJZ0JEZ0RMRVFFQVJCUUJBRUFKQUFDc0hBRUE3YWdBQUxjVUFRQXlHQUVBUXdjQUFOZ0lBQUFtNEFFQVxcXG5VOW9CQUQ4Y0FRQUcyZ0VBbXdFT0FOSVpBUUEwcWdBQUFCc0FBREFIQUFCQU5BRUF4QXdBQUVZQkRnQWxIQUFBQ3dNQUFKVWFBUUFqQXdcXFxuQUFDK0FCQUVNSkFBQ05Ed0FBeWcwQUFDVU5BUURwTFFBQXF4c0FBTEVWQVFBcjJnRUF2QTRBQURIaEFRQ0tBUTRBSXhrQUFNRUZBQURmXFxcbklBQUFQUkFCQUNlcEFBQXVIQUFBN0FjQUFJSnZBUURrQVE0QUpkb0JBSG9QQUFBZ3p3RUFIUmNCQUVjVEFRRG1FZ0VBaU5FQkFFRWRBUVxcXG5Cb0VBQUFuQWdBQURZZkFRQkJFd0VBTDZvQUFGWURBQUEzQVE0QVREUUJBTEFQQUFCckFRNEE5QjBBQUMwUkFRRGlIUUFBT3hBQkFQa0lcXFxuQUFEQUFRNEFRQjhCQU44WkFRQ0RFQUFBTTZvQUFFZzBBUUMwRHdBQXd3b0FBT1NyQUFBOEdnRUFUUk1CQUxrVUFRQTZFQUFBSU5vQkFOXFxcbm9JQUFCV2J3RUFtakFBQUNjUkFRQ1RHZ0VBS3hrQUFKY1BBQURWSEFBQVg5b0JBSVFRQUFDMERnQUFjQk1CQVA0T0FRQnBFQUFBd0JFQlxcXG5BRFFZQVFEVUdRRUFQQmtCQUJ6UEFRQW9HUUFBdnhjQUFHemFBUUJXQVE0QThoc0FBQVFEQUFDaEhBRUFNeElCQUZrSUFBQkNDZ0FBTFJcXFxud0FBRGdIQUFDU0JRQUFieHNBQUZVREFBRGREUUFBY1JvQUFNRUxBQURmRWdFQVRqUUJBS3phQVFBVTRBRUFSQTBBQVBnZEFBQlBid0VBXFxcbjRBRU9BQmJhQVFBaEZ3RUFBZzBBQU9VZ0FBQzBGUUVBUWhzQUFFTWJBQUJBQ3dBQWJBRU9BTzBJQUFDYUVBQUFBeE1CQURYUEFRQktOQVxcXG5FQXhSY0FBRGtjQVFCdnBnQUFQd2tBQU5jZ0FBQ3VCUUFBRk04QkFCYmdBUURyQ0FBQVUyOEJBRVVIQUFCVEF3QUFQQXdBQUJVREFBQlVcXFxuYndFQXVRNEFBTDRVQVFETENBQUFnVzhCQU5zR0FBQ25Cd0FBU3dvQUFPWWdBQUQxSFFBQXBBRU9BQ1ArQUFBckZ3RUEyUTBBQUNrWkFBXFxcbkF2TUFBQVRRWUFBQUVLQUFESUNRQUEwU0FBQUk4QkRnRGxxQUFBd3FnQUFERnJBUUR4cGdBQWtnOEFBUDBIQUFCTkNRQUFTdzRBQUQ0WlxcXG5BUUFWQVE0QVBna0FBQ0VJQUFEUUhBQUFLaHdBQURVSEFBQWpxQUFBcEFVQUFDRUJEZ0JjQVE0QWVSb0FBSU1QQUFEaEVnRUFSNmtBQUZcXFxuNXZBUUFHQ2dFQTB4Y0FBSVhSQVFCWERRQUFZbThCQUpZUEFBQ3pGUUVBTlI4QkFCa0JEZ0I5YndFQUF2NEFBRVlNQUFCRXp3RUE0QzBBXFxcbkFDNnFBQUM2RVFFQXRCQUJBTkxvQVFDU0hBRUFhZEVCQUY4REFBQkFCd0FBM0J3QUFDMFNBUURvTFFBQVNBY0FBTWtPQUFCakdnQUFYTlxcXG5vQkFEVWJBQURDREFBQUxCRUJBQk1CRGdEYUJnQUFJaGtBQU9NdEFBQ3BHQUFBcVJzQUFNd0lBQUJYR2dFQUx4QUFBRGNIQUFCU0JnQUFcXFxuRFFvQkFMUUZBQUFBRUFFQXB3OEFBT01HQUFEekd3QUFwZ0VPQUZJREFBQUZBd0FBZ2c4QUFISUJEZ0ExRWdFQVF3MEFBR29RQUFEb0lBXFxcbkFBbEJ3QkFHNGJBQUN4QlFBQUZBWUFBUHNJQUFBeUVRRUFPeEFBQUxrUUFRRG9FZ0VBYXhzQUFHdmFBUUFzSEFBQU9oc0FBTHdCRGdCa1xcXG4yZ0VBaFJBQUFFWGFBUUEySFFFQThDQUFBQS9hQVFDWkNBQUEyUUVPQUI0REFBQ2xEd0FBTEJnQkFLRUJEZ0RHQVE0QVVBTUFBRkkwQVFcXFxuRGpIQUFBNFMwQUFQd3RBQUJLMmdFQUJNOEJBR052QVFDSjBRRUFBUUVPQUUwQkRnQ1NHZ0VBRndnQUFERWNBUUJBRUFFQTN3RU9BQ0hnXFxcbkFRQUNFd0VBNFFFT0FHWUJEZ0EwR2dFQXpCRUJBT3lxQUFCaUNRQUFCLzRBQUJiUEFRRHZHd0FBNmdnQUFCSGdBUUIrRHdBQXA5b0JBRFxcXG5jWkFBQnRBUTRBN2gwQUFDaitBQUJiQ0FBQVNxa0FBTlVkQUFEcUhRQUFieG9BQUFQK0FBQjFHZ0FBNmdZQUFINXZBUUEzRHdBQUx4Z0JcXFxuQUo4RkFBQnAyZ0VBckE4QUFEOE1BQUJCRFFBQWhHOEJBSzRQQUFCb0FRNEFSQXdBQUU0REFBRDhDQUFBdndVQUFOQU5BQUR3R3dBQTd5XFxcbndBQUxNYUFBQS9EUUFBSzg4QkFNQ29BQUJjR2dBQVoyOEJBS3JhQVFCdkFRNEFoTm9CQVBJdEFBQ3BCUUFBUFFFT0FFTU1BQUEyMmdFQVxcXG5Bd0VPQVAwSUFBQzZEd0FBeUE0QUFCL2FBUUMxcVFBQTZCc0FBQ3YrQUFDTkVBQUEyUVlBQU4wY0FBQVdDQUFBZHFZQUFCZ0lBQUJmYndcXFxuRUFxQThBQUpzUEFBQ2REd0FBTVE0QUFKRWFBUUFSQmdBQVN3c0FBRmNMQUFCZEFRNEFqeEFBQUFIZ0FRREtGd0FBNFFnQUFKMjhBUUR4XFxcbkxRQUFRZ3NBQUI0SUFBQlpid0VBSVA0QUFKY0ZBQUFCendFQU9CQUFBRm9EQUFDV0FRNEFiaG9BQUtYYUFRQWhBd0FBVWRvQkFOSVhBQVxcXG5DdDJnRUFPZ01BQUZZUUFBQ3hHZ0FBencwQUFFZnBBUUFBQXdBQUpBMEJBQUlLQVFCQ0V3RUE1eHdBQUI4REFBQnpFQUFBVXdZQUFMSVBcXFxuQUFBekdnRUF6QUVPQUFMYUFRQXpBUTRBNGkwQUFETURBQUJ4Q2dBQTZ3RU9BSllkQVFBU0JnQUF1S2dBQU9nSUFBQ21IQUVBNkIwQUFFXFxcbi9hQVFDb0J3QUFPUTRBQUlLcEFBQnVBd0FBT2hrQUFKRnZBUUFuRFFFQWVBOEFBRjBEQUFBdjJnRUFOaG9CQUxDcUFBQU8vZ0FBclFVQVxcXG5BTllkQUFCQ0FRNEEvUjBBQUM4U0FRRGtDQUFBZktvQUFEc2JBQUJJQ3dBQXZBVUFBTzZvQUFDWEhBRUF1QkFCQUxJQkRnQWlBUTRBamhcXFxub0JBRmdhQVFCckF3QUFNUU1BQUhGdkFRQStGQUVBdWhBQkFDNFJBUUNiQ0FBQXdSb0FBRU1CRGdEdEJ3QUFkS1lBQVBBdEFBQmkyZ0VBXFxcbnZhZ0FBRDBiQUFBOEhRRUFTd0VPQURLcUFBQlJHZ0VBa204QkFHYlJBUURJREFBQXloMEFBTGdCRGdESUdnQUF5UmNBQUFqK0FBQTRBd1xcXG5BQTV4MEFBSTBCRGdDZXBnQUFUTm9CQVBNSEFBQTFhd0VBVVFvQUFDV29BQUJ4RUFBQVB4OEJBRWdEQUFDM0ZnRUF3d2tBQU83aUFRQTBcXFxuRGdBQWJRTUFBT21yQUFEM0hBQUFOUmtBQUtvRkFBQS9FQUVBQ1JvQkFEL2FBUUNLRUFBQVhHOEJBTllnQUFEckJ3QUFLdjRBQUpNQkRnXFxcbkJBSFFFQXVRVUFBSDBQQUFCYWJ3RUFsd0VPQU0wSkFBQzFEd0FBQjlvQkFORUJEZ0NBcUFBQWZCb0FBS1VjQVFETENRQUFzdzhBQUNVSVxcXG5BQUE2RUFFQUp3Z0FBRXJwQVFENENBQUFmaTh1WTJGeVoyOHZjbVZuYVhOMGNua3ZjM0pqTDJsdVpHVjRMbU55WVhSbGN5NXBieTAyWmpcXFxuRTNaREl5WW1KaE1UVXdNREZtTDNWdWFXTnZaR1V0Ym05eWJXRnNhWHBoZEdsdmJpMHdMakV1TWpJdmMzSmpMM0JsY21abFkzUmZhR0Z6XFxcbmFDNXljd0JrSkJNQVp3QUFBQ3NBQUFBTkFBQUFaQ1FUQUdjQUFBQXNBQUFBRXdBQUFBQUFBQUFJQUFBQUF3QUFBQWtBQUFBSkFBQUFGUVxcXG5BQUFBb0FBQUFLQUFBQUFnQUFBQXNBQUFBTEFBQUFGUUFBQUF3QUFBQU1BQUFBRmdBQUFBMEFBQUFOQUFBQUFnQUFBQTRBQUFBYkFBQUFcXFxuQXdBQUFCd0FBQUFlQUFBQUFnQUFBQjhBQUFBZkFBQUFGUUFBQUNBQUFBQWdBQUFBRmdBQUFDRUFBQUFpQUFBQURnQUFBQ01BQUFBbEFBXFxcbkFBQndBQUFDWUFBQUFxQUFBQURnQUFBQ3NBQUFBckFBQUFCZ0FBQUN3QUFBQXNBQUFBQkFBQUFDMEFBQUF0QUFBQUJnQUFBQzRBQUFBdlxcXG5BQUFBQkFBQUFEQUFBQUE1QUFBQUJRQUFBRG9BQUFBNkFBQUFCQUFBQURzQUFBQkFBQUFBRGdBQUFFRUFBQUJhQUFBQUNRQUFBRnNBQUFcXFxuQmdBQUFBRGdBQUFHRUFBQUI2QUFBQUNRQUFBSHNBQUFCK0FBQUFEZ0FBQUg4QUFBQ0VBQUFBQXdBQUFJVUFBQUNGQUFBQUFnQUFBSVlBXFxcbkFBQ2ZBQUFBQXdBQUFLQUFBQUNnQUFBQUJBQUFBS0VBQUFDaEFBQUFEZ0FBQUtJQUFBQ2xBQUFBQndBQUFLWUFBQUNwQUFBQURnQUFBS1xcXG5vQUFBQ3FBQUFBQ1FBQUFLc0FBQUNzQUFBQURnQUFBSzBBQUFDdEFBQUFBd0FBQUs0QUFBQ3ZBQUFBRGdBQUFMQUFBQUN4QUFBQUJ3QUFcXFxuQUxJQUFBQ3pBQUFBQlFBQUFMUUFBQUMwQUFBQURnQUFBTFVBQUFDMUFBQUFDUUFBQUxZQUFBQzRBQUFBRGdBQUFMa0FBQUM1QUFBQUJRXFxcbkFBQUxvQUFBQzZBQUFBQ1FBQUFMc0FBQUMvQUFBQURnQUFBTUFBQUFEV0FBQUFDUUFBQU5jQUFBRFhBQUFBRGdBQUFOZ0FBQUQyQUFBQVxcXG5DUUFBQVBjQUFBRDNBQUFBRGdBQUFQZ0FBQUM0QWdBQUNRQUFBTGtDQUFDNkFnQUFEZ0FBQUxzQ0FBREJBZ0FBQ1FBQUFNSUNBQURQQWdcXFxuQUFEZ0FBQU5BQ0FBRFJBZ0FBQ1FBQUFOSUNBQURmQWdBQURnQUFBT0FDQUFEa0FnQUFDUUFBQU9VQ0FBRHRBZ0FBRGdBQUFPNENBQUR1XFxcbkFnQUFDUUFBQU84Q0FBRC9BZ0FBRGdBQUFBQURBQUJ2QXdBQURRQUFBSEFEQUFCekF3QUFDUUFBQUhRREFBQjFBd0FBRGdBQUFIWURBQVxcXG5CM0F3QUFDUUFBQUhvREFBQjlBd0FBQ1FBQUFINERBQUIrQXdBQURnQUFBSDhEQUFCL0F3QUFDUUFBQUlRREFBQ0ZBd0FBRGdBQUFJWURcXFxuQUFDR0F3QUFDUUFBQUljREFBQ0hBd0FBRGdBQUFJZ0RBQUNLQXdBQUNRQUFBSXdEQUFDTUF3QUFDUUFBQUk0REFBQ2hBd0FBQ1FBQUFLXFxcbk1EQUFEMUF3QUFDUUFBQVBZREFBRDJBd0FBRGdBQUFQY0RBQUNDQkFBQUNRQUFBSU1FQUFDSkJBQUFEUUFBQUlvRUFBQXZCUUFBQ1FBQVxcXG5BREVGQUFCV0JRQUFDUUFBQUZrRkFBQ0pCUUFBQ1FBQUFJb0ZBQUNLQlFBQURnQUFBSTBGQUFDT0JRQUFEZ0FBQUk4RkFBQ1BCUUFBQndcXFxuQUFBSkFGQUFDUUJRQUFFUUFBQUpFRkFBQzlCUUFBRFFBQUFMNEZBQUMrQlFBQUVRQUFBTDhGQUFDL0JRQUFEUUFBQU1BRkFBREFCUUFBXFxcbkVRQUFBTUVGQUFEQ0JRQUFEUUFBQU1NRkFBRERCUUFBRVFBQUFNUUZBQURGQlFBQURRQUFBTVlGQUFER0JRQUFFUUFBQU1jRkFBREhCUVxcXG5BQURRQUFBTWdGQUFEL0JRQUFFUUFBQUFBR0FBQUZCZ0FBQVFBQUFBWUdBQUFIQmdBQURnQUFBQWdHQUFBSUJnQUFBQUFBQUFrR0FBQUtcXFxuQmdBQUJ3QUFBQXNHQUFBTEJnQUFBQUFBQUF3R0FBQU1CZ0FBQkFBQUFBMEdBQUFOQmdBQUFBQUFBQTRHQUFBUEJnQUFEZ0FBQUJBR0FBXFxcbkFhQmdBQURRQUFBQnNHQUFCS0JnQUFBQUFBQUVzR0FBQmZCZ0FBRFFBQUFHQUdBQUJwQmdBQUFRQUFBR29HQUFCcUJnQUFCd0FBQUdzR1xcXG5BQUJzQmdBQUFRQUFBRzBHQUFCdkJnQUFBQUFBQUhBR0FBQndCZ0FBRFFBQUFIRUdBQURWQmdBQUFBQUFBTllHQUFEY0JnQUFEUUFBQU5cXFxuMEdBQURkQmdBQUFRQUFBTjRHQUFEZUJnQUFEZ0FBQU44R0FBRGtCZ0FBRFFBQUFPVUdBQURtQmdBQUFBQUFBT2NHQUFEb0JnQUFEUUFBXFxcbkFPa0dBQURwQmdBQURnQUFBT29HQUFEdEJnQUFEUUFBQU80R0FBRHZCZ0FBQUFBQUFQQUdBQUQ1QmdBQUJRQUFBUG9HQUFBUUJ3QUFBQVxcXG5BQUFCRUhBQUFSQndBQURRQUFBQklIQUFBdkJ3QUFBQUFBQURBSEFBQktCd0FBRFFBQUFFc0hBQUNsQndBQUFBQUFBS1lIQUFDd0J3QUFcXFxuRFFBQUFMRUhBQUMvQndBQUFBQUFBTUFIQUFEcUJ3QUFFUUFBQU9zSEFBRHpCd0FBRFFBQUFQUUhBQUQxQndBQUVRQUFBUFlIQUFENUJ3XFxcbkFBRGdBQUFQb0hBQUQ4QndBQUVRQUFBUDBIQUFEOUJ3QUFEUUFBQVA0SEFBQVZDQUFBRVFBQUFCWUlBQUFaQ0FBQURRQUFBQm9JQUFBYVxcXG5DQUFBRVFBQUFCc0lBQUFqQ0FBQURRQUFBQ1FJQUFBa0NBQUFFUUFBQUNVSUFBQW5DQUFBRFFBQUFDZ0lBQUFvQ0FBQUVRQUFBQ2tJQUFcXFxuQXRDQUFBRFFBQUFDNElBQUJZQ0FBQUVRQUFBRmtJQUFCYkNBQUFEUUFBQUZ3SUFBQmZDQUFBRVFBQUFHQUlBQUJxQ0FBQUFBQUFBR3NJXFxcbkFBQnZDQUFBRVFBQUFIQUlBQUNPQ0FBQUFBQUFBSThJQUFDUENBQUFFUUFBQUpBSUFBQ1JDQUFBQVFBQUFKSUlBQUNYQ0FBQUVRQUFBSlxcXG5nSUFBQ2ZDQUFBRFFBQUFLQUlBQURKQ0FBQUFBQUFBTW9JQUFEaENBQUFEUUFBQU9JSUFBRGlDQUFBQVFBQUFPTUlBQUFDQ1FBQURRQUFcXFxuQUFNSkFBQTVDUUFBQ1FBQUFEb0pBQUE2Q1FBQURRQUFBRHNKQUFBN0NRQUFDUUFBQUR3SkFBQThDUUFBRFFBQUFEMEpBQUJBQ1FBQUNRXFxcbkFBQUVFSkFBQklDUUFBRFFBQUFFa0pBQUJNQ1FBQUNRQUFBRTBKQUFCTkNRQUFEUUFBQUU0SkFBQlFDUUFBQ1FBQUFGRUpBQUJYQ1FBQVxcXG5EUUFBQUZnSkFBQmhDUUFBQ1FBQUFHSUpBQUJqQ1FBQURRQUFBR1FKQUFDQUNRQUFDUUFBQUlFSkFBQ0JDUUFBRFFBQUFJSUpBQUNEQ1FcXFxuQUFDUUFBQUlVSkFBQ01DUUFBQ1FBQUFJOEpBQUNRQ1FBQUNRQUFBSk1KQUFDb0NRQUFDUUFBQUtvSkFBQ3dDUUFBQ1FBQUFMSUpBQUN5XFxcbkNRQUFDUUFBQUxZSkFBQzVDUUFBQ1FBQUFMd0pBQUM4Q1FBQURRQUFBTDBKQUFEQUNRQUFDUUFBQU1FSkFBREVDUUFBRFFBQUFNY0pBQVxcXG5ESUNRQUFDUUFBQU1zSkFBRE1DUUFBQ1FBQUFNMEpBQUROQ1FBQURRQUFBTTRKQUFET0NRQUFDUUFBQU5jSkFBRFhDUUFBQ1FBQUFOd0pcXFxuQUFEZENRQUFDUUFBQU44SkFBRGhDUUFBQ1FBQUFPSUpBQURqQ1FBQURRQUFBT1lKQUFEeENRQUFDUUFBQVBJSkFBRHpDUUFBQndBQUFQXFxcblFKQUFENkNRQUFDUUFBQVBzSkFBRDdDUUFBQndBQUFQd0pBQUQ5Q1FBQUNRQUFBUDRKQUFEK0NRQUFEUUFBQUFFS0FBQUNDZ0FBRFFBQVxcXG5BQU1LQUFBRENnQUFDUUFBQUFVS0FBQUtDZ0FBQ1FBQUFBOEtBQUFRQ2dBQUNRQUFBQk1LQUFBb0NnQUFDUUFBQUNvS0FBQXdDZ0FBQ1FcXFxuQUFBRElLQUFBekNnQUFDUUFBQURVS0FBQTJDZ0FBQ1FBQUFEZ0tBQUE1Q2dBQUNRQUFBRHdLQUFBOENnQUFEUUFBQUQ0S0FBQkFDZ0FBXFxcbkNRQUFBRUVLQUFCQ0NnQUFEUUFBQUVjS0FBQklDZ0FBRFFBQUFFc0tBQUJOQ2dBQURRQUFBRkVLQUFCUkNnQUFEUUFBQUZrS0FBQmNDZ1xcXG5BQUNRQUFBRjRLQUFCZUNnQUFDUUFBQUdZS0FBQnZDZ0FBQ1FBQUFIQUtBQUJ4Q2dBQURRQUFBSElLQUFCMENnQUFDUUFBQUhVS0FBQjFcXFxuQ2dBQURRQUFBSFlLQUFCMkNnQUFDUUFBQUlFS0FBQ0NDZ0FBRFFBQUFJTUtBQUNEQ2dBQUNRQUFBSVVLQUFDTkNnQUFDUUFBQUk4S0FBXFxcbkNSQ2dBQUNRQUFBSk1LQUFDb0NnQUFDUUFBQUtvS0FBQ3dDZ0FBQ1FBQUFMSUtBQUN6Q2dBQUNRQUFBTFVLQUFDNUNnQUFDUUFBQUx3S1xcXG5BQUM4Q2dBQURRQUFBTDBLQUFEQUNnQUFDUUFBQU1FS0FBREZDZ0FBRFFBQUFNY0tBQURJQ2dBQURRQUFBTWtLQUFESkNnQUFDUUFBQU1cXFxuc0tBQURNQ2dBQUNRQUFBTTBLQUFETkNnQUFEUUFBQU5BS0FBRFFDZ0FBQ1FBQUFPQUtBQURoQ2dBQUNRQUFBT0lLQUFEakNnQUFEUUFBXFxcbkFPWUtBQUR3Q2dBQUNRQUFBUEVLQUFEeENnQUFCd0FBQVBrS0FBRDVDZ0FBQ1FBQUFQb0tBQUQvQ2dBQURRQUFBQUVMQUFBQkN3QUFEUVxcXG5BQUFBSUxBQUFEQ3dBQUNRQUFBQVVMQUFBTUN3QUFDUUFBQUE4TEFBQVFDd0FBQ1FBQUFCTUxBQUFvQ3dBQUNRQUFBQ29MQUFBd0N3QUFcXFxuQ1FBQUFESUxBQUF6Q3dBQUNRQUFBRFVMQUFBNUN3QUFDUUFBQUR3TEFBQThDd0FBRFFBQUFEMExBQUErQ3dBQUNRQUFBRDhMQUFBL0N3XFxcbkFBRFFBQUFFQUxBQUJBQ3dBQUNRQUFBRUVMQUFCRUN3QUFEUUFBQUVjTEFBQklDd0FBQ1FBQUFFc0xBQUJNQ3dBQUNRQUFBRTBMQUFCTlxcXG5Dd0FBRFFBQUFGVUxBQUJXQ3dBQURRQUFBRmNMQUFCWEN3QUFDUUFBQUZ3TEFBQmRDd0FBQ1FBQUFGOExBQUJoQ3dBQUNRQUFBR0lMQUFcXFxuQmpDd0FBRFFBQUFHWUxBQUIzQ3dBQUNRQUFBSUlMQUFDQ0N3QUFEUUFBQUlNTEFBQ0RDd0FBQ1FBQUFJVUxBQUNLQ3dBQUNRQUFBSTRMXFxcbkFBQ1FDd0FBQ1FBQUFKSUxBQUNWQ3dBQUNRQUFBSmtMQUFDYUN3QUFDUUFBQUp3TEFBQ2NDd0FBQ1FBQUFKNExBQUNmQ3dBQUNRQUFBS1xcXG5NTEFBQ2tDd0FBQ1FBQUFLZ0xBQUNxQ3dBQUNRQUFBSzRMQUFDNUN3QUFDUUFBQUw0TEFBQy9Dd0FBQ1FBQUFNQUxBQURBQ3dBQURRQUFcXFxuQU1FTEFBRENDd0FBQ1FBQUFNWUxBQURJQ3dBQUNRQUFBTW9MQUFETUN3QUFDUUFBQU0wTEFBRE5Dd0FBRFFBQUFOQUxBQURRQ3dBQUNRXFxcbkFBQU5jTEFBRFhDd0FBQ1FBQUFPWUxBQUR5Q3dBQUNRQUFBUE1MQUFENEN3QUFEZ0FBQVBrTEFBRDVDd0FBQndBQUFQb0xBQUQ2Q3dBQVxcXG5EZ0FBQUFBTUFBQUFEQUFBRFFBQUFBRU1BQUFEREFBQUNRQUFBQVFNQUFBRURBQUFEUUFBQUFVTUFBQU1EQUFBQ1FBQUFBNE1BQUFRREFcXFxuQUFDUUFBQUJJTUFBQW9EQUFBQ1FBQUFDb01BQUE1REFBQUNRQUFBRHdNQUFBOERBQUFEUUFBQUQwTUFBQTlEQUFBQ1FBQUFENE1BQUJBXFxcbkRBQUFEUUFBQUVFTUFBQkVEQUFBQ1FBQUFFWU1BQUJJREFBQURRQUFBRW9NQUFCTkRBQUFEUUFBQUZVTUFBQldEQUFBRFFBQUFGZ01BQVxcXG5CYURBQUFDUUFBQUYwTUFBQmREQUFBQ1FBQUFHQU1BQUJoREFBQUNRQUFBR0lNQUFCakRBQUFEUUFBQUdZTUFBQnZEQUFBQ1FBQUFIY01cXFxuQUFCM0RBQUFDUUFBQUhnTUFBQitEQUFBRGdBQUFIOE1BQUNBREFBQUNRQUFBSUVNQUFDQkRBQUFEUUFBQUlJTUFBQ01EQUFBQ1FBQUFJXFxcbjRNQUFDUURBQUFDUUFBQUpJTUFBQ29EQUFBQ1FBQUFLb01BQUN6REFBQUNRQUFBTFVNQUFDNURBQUFDUUFBQUx3TUFBQzhEQUFBRFFBQVxcXG5BTDBNQUFERURBQUFDUUFBQU1ZTUFBRElEQUFBQ1FBQUFNb01BQURMREFBQUNRQUFBTXdNQUFETkRBQUFEUUFBQU5VTUFBRFdEQUFBQ1FcXFxuQUFBTjBNQUFEZURBQUFDUUFBQU9BTUFBRGhEQUFBQ1FBQUFPSU1BQURqREFBQURRQUFBT1lNQUFEdkRBQUFDUUFBQVBFTUFBRHpEQUFBXFxcbkNRQUFBQUFOQUFBQkRRQUFEUUFBQUFJTkFBQU1EUUFBQ1FBQUFBNE5BQUFRRFFBQUNRQUFBQklOQUFBNkRRQUFDUUFBQURzTkFBQThEUVxcXG5BQURRQUFBRDBOQUFCQURRQUFDUUFBQUVFTkFBQkVEUUFBRFFBQUFFWU5BQUJJRFFBQUNRQUFBRW9OQUFCTURRQUFDUUFBQUUwTkFBQk5cXFxuRFFBQURRQUFBRTROQUFCUERRQUFDUUFBQUZRTkFBQmhEUUFBQ1FBQUFHSU5BQUJqRFFBQURRQUFBR1lOQUFCL0RRQUFDUUFBQUlFTkFBXFxcbkNCRFFBQURRQUFBSUlOQUFDRERRQUFDUUFBQUlVTkFBQ1dEUUFBQ1FBQUFKb05BQUN4RFFBQUNRQUFBTE1OQUFDN0RRQUFDUUFBQUwwTlxcXG5BQUM5RFFBQUNRQUFBTUFOQUFER0RRQUFDUUFBQU1vTkFBREtEUUFBRFFBQUFNOE5BQURSRFFBQUNRQUFBTklOQUFEVURRQUFEUUFBQU5cXFxuWU5BQURXRFFBQURRQUFBTmdOQUFEZkRRQUFDUUFBQU9ZTkFBRHZEUUFBQ1FBQUFQSU5BQUQwRFFBQUNRQUFBQUVPQUFBd0RnQUFDUUFBXFxcbkFERU9BQUF4RGdBQURRQUFBRElPQUFBekRnQUFDUUFBQURRT0FBQTZEZ0FBRFFBQUFEOE9BQUEvRGdBQUJ3QUFBRUFPQUFCR0RnQUFDUVxcXG5BQUFFY09BQUJPRGdBQURRQUFBRThPQUFCYkRnQUFDUUFBQUlFT0FBQ0NEZ0FBQ1FBQUFJUU9BQUNFRGdBQUNRQUFBSVlPQUFDS0RnQUFcXFxuQ1FBQUFJd09BQUNqRGdBQUNRQUFBS1VPQUFDbERnQUFDUUFBQUtjT0FBQ3dEZ0FBQ1FBQUFMRU9BQUN4RGdBQURRQUFBTElPQUFDekRnXFxcbkFBQ1FBQUFMUU9BQUM4RGdBQURRQUFBTDBPQUFDOURnQUFDUUFBQU1BT0FBREVEZ0FBQ1FBQUFNWU9BQURHRGdBQUNRQUFBTWdPQUFET1xcXG5EZ0FBRFFBQUFOQU9BQURaRGdBQUNRQUFBTndPQUFEZkRnQUFDUUFBQUFBUEFBQVhEd0FBQ1FBQUFCZ1BBQUFaRHdBQURRQUFBQm9QQUFcXFxuQTBEd0FBQ1FBQUFEVVBBQUExRHdBQURRQUFBRFlQQUFBMkR3QUFDUUFBQURjUEFBQTNEd0FBRFFBQUFEZ1BBQUE0RHdBQUNRQUFBRGtQXFxcbkFBQTVEd0FBRFFBQUFEb1BBQUE5RHdBQURnQUFBRDRQQUFCSER3QUFDUUFBQUVrUEFBQnNEd0FBQ1FBQUFIRVBBQUIrRHdBQURRQUFBSFxcXG44UEFBQi9Ed0FBQ1FBQUFJQVBBQUNFRHdBQURRQUFBSVVQQUFDRkR3QUFDUUFBQUlZUEFBQ0hEd0FBRFFBQUFJZ1BBQUNNRHdBQUNRQUFcXFxuQUkwUEFBQ1hEd0FBRFFBQUFKa1BBQUM4RHdBQURRQUFBTDRQQUFERkR3QUFDUUFBQU1ZUEFBREdEd0FBRFFBQUFNY1BBQURNRHdBQUNRXFxcbkFBQU00UEFBRGFEd0FBQ1FBQUFBQVFBQUFzRUFBQUNRQUFBQzBRQUFBd0VBQUFEUUFBQURFUUFBQXhFQUFBQ1FBQUFESVFBQUEzRUFBQVxcXG5EUUFBQURnUUFBQTRFQUFBQ1FBQUFEa1FBQUE2RUFBQURRQUFBRHNRQUFBOEVBQUFDUUFBQUQwUUFBQStFQUFBRFFBQUFEOFFBQUJYRUFcXFxuQUFDUUFBQUZnUUFBQlpFQUFBRFFBQUFGb1FBQUJkRUFBQUNRQUFBRjRRQUFCZ0VBQUFEUUFBQUdFUUFBQndFQUFBQ1FBQUFIRVFBQUIwXFxcbkVBQUFEUUFBQUhVUUFBQ0JFQUFBQ1FBQUFJSVFBQUNDRUFBQURRQUFBSU1RQUFDRUVBQUFDUUFBQUlVUUFBQ0dFQUFBRFFBQUFJY1FBQVxcXG5DTUVBQUFDUUFBQUkwUUFBQ05FQUFBRFFBQUFJNFFBQUNjRUFBQUNRQUFBSjBRQUFDZEVBQUFEUUFBQUo0UUFBREZFQUFBQ1FBQUFNY1FcXFxuQUFESEVBQUFDUUFBQU0wUUFBRE5FQUFBQ1FBQUFOQVFBQUJJRWdBQUNRQUFBRW9TQUFCTkVnQUFDUUFBQUZBU0FBQldFZ0FBQ1FBQUFGXFxcbmdTQUFCWUVnQUFDUUFBQUZvU0FBQmRFZ0FBQ1FBQUFHQVNBQUNJRWdBQUNRQUFBSW9TQUFDTkVnQUFDUUFBQUpBU0FBQ3dFZ0FBQ1FBQVxcXG5BTElTQUFDMUVnQUFDUUFBQUxnU0FBQytFZ0FBQ1FBQUFNQVNBQURBRWdBQUNRQUFBTUlTQUFERkVnQUFDUUFBQU1nU0FBRFdFZ0FBQ1FcXFxuQUFBTmdTQUFBUUV3QUFDUUFBQUJJVEFBQVZFd0FBQ1FBQUFCZ1RBQUJhRXdBQUNRQUFBRjBUQUFCZkV3QUFEUUFBQUdBVEFBQjhFd0FBXFxcbkNRQUFBSUFUQUFDUEV3QUFDUUFBQUpBVEFBQ1pFd0FBRGdBQUFLQVRBQUQxRXdBQUNRQUFBUGdUQUFEOUV3QUFDUUFBQUFBVUFBQUFGQVxcXG5BQURnQUFBQUVVQUFCL0ZnQUFDUUFBQUlBV0FBQ0FGZ0FBRmdBQUFJRVdBQUNhRmdBQUNRQUFBSnNXQUFDY0ZnQUFEZ0FBQUtBV0FBRDRcXFxuRmdBQUNRQUFBQUFYQUFBUkZ3QUFDUUFBQUJJWEFBQVVGd0FBRFFBQUFCVVhBQUFWRndBQUNRQUFBQjhYQUFBeEZ3QUFDUUFBQURJWEFBXFxcbkF6RndBQURRQUFBRFFYQUFBMkZ3QUFDUUFBQUVBWEFBQlJGd0FBQ1FBQUFGSVhBQUJURndBQURRQUFBR0FYQUFCc0Z3QUFDUUFBQUc0WFxcXG5BQUJ3RndBQUNRQUFBSElYQUFCekZ3QUFEUUFBQUlBWEFBQ3pGd0FBQ1FBQUFMUVhBQUMxRndBQURRQUFBTFlYQUFDMkZ3QUFDUUFBQUxcXFxuY1hBQUM5RndBQURRQUFBTDRYQUFERkZ3QUFDUUFBQU1ZWEFBREdGd0FBRFFBQUFNY1hBQURJRndBQUNRQUFBTWtYQUFEVEZ3QUFEUUFBXFxcbkFOUVhBQURhRndBQUNRQUFBTnNYQUFEYkZ3QUFCd0FBQU53WEFBRGNGd0FBQ1FBQUFOMFhBQURkRndBQURRQUFBT0FYQUFEcEZ3QUFDUVxcXG5BQUFQQVhBQUQ1RndBQURnQUFBQUFZQUFBS0dBQUFEZ0FBQUFzWUFBQU5HQUFBRFFBQUFBNFlBQUFPR0FBQUF3QUFBQThZQUFBUEdBQUFcXFxuRFFBQUFCQVlBQUFaR0FBQUNRQUFBQ0FZQUFCNEdBQUFDUUFBQUlBWUFBQ0VHQUFBQ1FBQUFJVVlBQUNHR0FBQURRQUFBSWNZQUFDb0dBXFxcbkFBQ1FBQUFLa1lBQUNwR0FBQURRQUFBS29ZQUFDcUdBQUFDUUFBQUxBWUFBRDFHQUFBQ1FBQUFBQVpBQUFlR1FBQUNRQUFBQ0FaQUFBaVxcXG5HUUFBRFFBQUFDTVpBQUFtR1FBQUNRQUFBQ2NaQUFBb0dRQUFEUUFBQUNrWkFBQXJHUUFBQ1FBQUFEQVpBQUF4R1FBQUNRQUFBRElaQUFcXFxuQXlHUUFBRFFBQUFETVpBQUE0R1FBQUNRQUFBRGtaQUFBN0dRQUFEUUFBQUVBWkFBQkFHUUFBRGdBQUFFUVpBQUJGR1FBQURnQUFBRVlaXFxcbkFBQnRHUUFBQ1FBQUFIQVpBQUIwR1FBQUNRQUFBSUFaQUFDckdRQUFDUUFBQUxBWkFBREpHUUFBQ1FBQUFOQVpBQURhR1FBQUNRQUFBTlxcXG40WkFBRC9HUUFBRGdBQUFBQWFBQUFXR2dBQUNRQUFBQmNhQUFBWUdnQUFEUUFBQUJrYUFBQWFHZ0FBQ1FBQUFCc2FBQUFiR2dBQURRQUFcXFxuQUI0YUFBQlZHZ0FBQ1FBQUFGWWFBQUJXR2dBQURRQUFBRmNhQUFCWEdnQUFDUUFBQUZnYUFBQmVHZ0FBRFFBQUFHQWFBQUJnR2dBQURRXFxcbkFBQUdFYUFBQmhHZ0FBQ1FBQUFHSWFBQUJpR2dBQURRQUFBR01hQUFCa0dnQUFDUUFBQUdVYUFBQnNHZ0FBRFFBQUFHMGFBQUJ5R2dBQVxcXG5DUUFBQUhNYUFBQjhHZ0FBRFFBQUFIOGFBQUIvR2dBQURRQUFBSUFhQUFDSkdnQUFDUUFBQUpBYUFBQ1pHZ0FBQ1FBQUFLQWFBQUN0R2dcXFxuQUFDUUFBQUxBYUFBRE9HZ0FBRFFBQUFBQWJBQUFER3dBQURRQUFBQVFiQUFBekd3QUFDUUFBQURRYkFBQTBHd0FBRFFBQUFEVWJBQUExXFxcbkd3QUFDUUFBQURZYkFBQTZHd0FBRFFBQUFEc2JBQUE3R3dBQUNRQUFBRHdiQUFBOEd3QUFEUUFBQUQwYkFBQkJHd0FBQ1FBQUFFSWJBQVxcXG5CQ0d3QUFEUUFBQUVNYkFBQk1Hd0FBQ1FBQUFGQWJBQUJxR3dBQUNRQUFBR3NiQUFCekd3QUFEUUFBQUhRYkFBQitHd0FBQ1FBQUFJQWJcXFxuQUFDQkd3QUFEUUFBQUlJYkFBQ2hHd0FBQ1FBQUFLSWJBQUNsR3dBQURRQUFBS1liQUFDbkd3QUFDUUFBQUtnYkFBQ3BHd0FBRFFBQUFLXFxcbm9iQUFDcUd3QUFDUUFBQUtzYkFBQ3RHd0FBRFFBQUFLNGJBQURsR3dBQUNRQUFBT1liQUFEbUd3QUFEUUFBQU9jYkFBRG5Hd0FBQ1FBQVxcXG5BT2diQUFEcEd3QUFEUUFBQU9vYkFBRHNHd0FBQ1FBQUFPMGJBQUR0R3dBQURRQUFBTzRiQUFEdUd3QUFDUUFBQU84YkFBRHhHd0FBRFFcXFxuQUFBUEliQUFEekd3QUFDUUFBQVB3YkFBQXJIQUFBQ1FBQUFDd2NBQUF6SEFBQURRQUFBRFFjQUFBMUhBQUFDUUFBQURZY0FBQTNIQUFBXFxcbkRRQUFBRHNjQUFCSkhBQUFDUUFBQUUwY0FBQ0lIQUFBQ1FBQUFKQWNBQUM2SEFBQUNRQUFBTDBjQUFESEhBQUFDUUFBQU5BY0FBRFNIQVxcXG5BQURRQUFBTk1jQUFEVEhBQUFDUUFBQU5RY0FBRGdIQUFBRFFBQUFPRWNBQURoSEFBQUNRQUFBT0ljQUFEb0hBQUFEUUFBQU9rY0FBRHNcXFxuSEFBQUNRQUFBTzBjQUFEdEhBQUFEUUFBQU80Y0FBRHpIQUFBQ1FBQUFQUWNBQUQwSEFBQURRQUFBUFVjQUFEM0hBQUFDUUFBQVBnY0FBXFxcbkQ1SEFBQURRQUFBUG9jQUFENkhBQUFDUUFBQUFBZEFBQy9IUUFBQ1FBQUFNQWRBQUQvSFFBQURRQUFBQUFlQUFBVkh3QUFDUUFBQUJnZlxcXG5BQUFkSHdBQUNRQUFBQ0FmQUFCRkh3QUFDUUFBQUVnZkFBQk5Id0FBQ1FBQUFGQWZBQUJYSHdBQUNRQUFBRmtmQUFCWkh3QUFDUUFBQUZcXFxuc2ZBQUJiSHdBQUNRQUFBRjBmQUFCZEh3QUFDUUFBQUY4ZkFBQjlId0FBQ1FBQUFJQWZBQUMwSHdBQUNRQUFBTFlmQUFDOEh3QUFDUUFBXFxcbkFMMGZBQUM5SHdBQURnQUFBTDRmQUFDK0h3QUFDUUFBQUw4ZkFBREJId0FBRGdBQUFNSWZBQURFSHdBQUNRQUFBTVlmQUFETUh3QUFDUVxcXG5BQUFNMGZBQURQSHdBQURnQUFBTkFmQUFEVEh3QUFDUUFBQU5ZZkFBRGJId0FBQ1FBQUFOMGZBQURmSHdBQURnQUFBT0FmQUFEc0h3QUFcXFxuQ1FBQUFPMGZBQUR2SHdBQURnQUFBUElmQUFEMEh3QUFDUUFBQVBZZkFBRDhId0FBQ1FBQUFQMGZBQUQrSHdBQURnQUFBQUFnQUFBS0lBXFxcbkFBRmdBQUFBc2dBQUFOSUFBQUF3QUFBQTRnQUFBT0lBQUFDUUFBQUE4Z0FBQVBJQUFBRVFBQUFCQWdBQUFuSUFBQURnQUFBQ2dnQUFBb1xcXG5JQUFBRmdBQUFDa2dBQUFwSUFBQUFnQUFBQ29nQUFBcUlBQUFDZ0FBQUNzZ0FBQXJJQUFBRWdBQUFDd2dBQUFzSUFBQUR3QUFBQzBnQUFcXFxuQXRJQUFBREFBQUFDNGdBQUF1SUFBQUZBQUFBQzhnQUFBdklBQUFCQUFBQURBZ0FBQTBJQUFBQndBQUFEVWdBQUJESUFBQURnQUFBRVFnXFxcbkFBQkVJQUFBQkFBQUFFVWdBQUJlSUFBQURnQUFBRjhnQUFCZklBQUFGZ0FBQUdBZ0FBQmtJQUFBQXdBQUFHWWdBQUJtSUFBQUN3QUFBR1xcXG5jZ0FBQm5JQUFBRXdBQUFHZ2dBQUJvSUFBQUNBQUFBR2tnQUFCcElBQUFFQUFBQUdvZ0FBQnZJQUFBQXdBQUFIQWdBQUJ3SUFBQUJRQUFcXFxuQUhFZ0FBQnhJQUFBQ1FBQUFIUWdBQUI1SUFBQUJRQUFBSG9nQUFCN0lBQUFCZ0FBQUh3Z0FBQitJQUFBRGdBQUFIOGdBQUIvSUFBQUNRXFxcbkFBQUlBZ0FBQ0pJQUFBQlFBQUFJb2dBQUNMSUFBQUJnQUFBSXdnQUFDT0lBQUFEZ0FBQUpBZ0FBQ2NJQUFBQ1FBQUFLQWdBQURQSUFBQVxcXG5Cd0FBQU5BZ0FBRHdJQUFBRFFBQUFBQWhBQUFCSVFBQURnQUFBQUloQUFBQ0lRQUFDUUFBQUFNaEFBQUdJUUFBRGdBQUFBY2hBQUFISVFcXFxuQUFDUUFBQUFnaEFBQUpJUUFBRGdBQUFBb2hBQUFUSVFBQUNRQUFBQlFoQUFBVUlRQUFEZ0FBQUJVaEFBQVZJUUFBQ1FBQUFCWWhBQUFZXFxcbklRQUFEZ0FBQUJraEFBQWRJUUFBQ1FBQUFCNGhBQUFqSVFBQURnQUFBQ1FoQUFBa0lRQUFDUUFBQUNVaEFBQWxJUUFBRGdBQUFDWWhBQVxcXG5BbUlRQUFDUUFBQUNjaEFBQW5JUUFBRGdBQUFDZ2hBQUFvSVFBQUNRQUFBQ2toQUFBcElRQUFEZ0FBQUNvaEFBQXRJUUFBQ1FBQUFDNGhcXFxuQUFBdUlRQUFCd0FBQUM4aEFBQTVJUUFBQ1FBQUFEb2hBQUE3SVFBQURnQUFBRHdoQUFBL0lRQUFDUUFBQUVBaEFBQkVJUUFBRGdBQUFFXFxcblVoQUFCSklRQUFDUUFBQUVvaEFBQk5JUUFBRGdBQUFFNGhBQUJQSVFBQUNRQUFBRkFoQUFCZklRQUFEZ0FBQUdBaEFBQ0lJUUFBQ1FBQVxcXG5BSWtoQUFDTElRQUFEZ0FBQUpBaEFBQVJJZ0FBRGdBQUFCSWlBQUFTSWdBQUJnQUFBQk1pQUFBVElnQUFCd0FBQUJRaUFBQTFJd0FBRGdcXFxuQUFBRFlqQUFCNkl3QUFDUUFBQUhzakFBQ1VJd0FBRGdBQUFKVWpBQUNWSXdBQUNRQUFBSllqQUFBbUpBQUFEZ0FBQUVBa0FBQktKQUFBXFxcbkRnQUFBR0FrQUFDSEpBQUFEZ0FBQUlna0FBQ2JKQUFBQlFBQUFKd2tBQURwSkFBQUNRQUFBT29rQUFDckpnQUFEZ0FBQUt3bUFBQ3NKZ1xcXG5BQUNRQUFBSzBtQUFEL0p3QUFEZ0FBQUFBb0FBRC9LQUFBQ1FBQUFBQXBBQUJ6S3dBQURnQUFBSFlyQUFDVkt3QUFEZ0FBQUpjckFBRC9cXFxuS3dBQURnQUFBQUFzQUFEa0xBQUFDUUFBQU9Vc0FBRHFMQUFBRGdBQUFPc3NBQUR1TEFBQUNRQUFBTzhzQUFEeExBQUFEUUFBQVBJc0FBXFxcbkR6TEFBQUNRQUFBUGtzQUFEL0xBQUFEZ0FBQUFBdEFBQWxMUUFBQ1FBQUFDY3RBQUFuTFFBQUNRQUFBQzB0QUFBdExRQUFDUUFBQURBdFxcXG5BQUJuTFFBQUNRQUFBRzh0QUFCd0xRQUFDUUFBQUg4dEFBQi9MUUFBRFFBQUFJQXRBQUNXTFFBQUNRQUFBS0F0QUFDbUxRQUFDUUFBQUtcXFxuZ3RBQUN1TFFBQUNRQUFBTEF0QUFDMkxRQUFDUUFBQUxndEFBQytMUUFBQ1FBQUFNQXRBQURHTFFBQUNRQUFBTWd0QUFET0xRQUFDUUFBXFxcbkFOQXRBQURXTFFBQUNRQUFBTmd0QUFEZUxRQUFDUUFBQU9BdEFBRC9MUUFBRFFBQUFBQXVBQUJkTGdBQURnQUFBSUF1QUFDWkxnQUFEZ1xcXG5BQUFKc3VBQUR6TGdBQURnQUFBQUF2QUFEVkx3QUFEZ0FBQVBBdkFBRDdMd0FBRGdBQUFBQXdBQUFBTUFBQUZnQUFBQUV3QUFBRU1BQUFcXFxuRGdBQUFBVXdBQUFITUFBQUNRQUFBQWd3QUFBZ01BQUFEZ0FBQUNFd0FBQXBNQUFBQ1FBQUFDb3dBQUF0TUFBQURRQUFBQzR3QUFBdk1BXFxcbkFBQ1FBQUFEQXdBQUF3TUFBQURnQUFBREV3QUFBMU1BQUFDUUFBQURZd0FBQTNNQUFBRGdBQUFEZ3dBQUE4TUFBQUNRQUFBRDB3QUFBL1xcXG5NQUFBRGdBQUFFRXdBQUNXTUFBQUNRQUFBSmt3QUFDYU1BQUFEUUFBQUpzd0FBQ2NNQUFBRGdBQUFKMHdBQUNmTUFBQUNRQUFBS0F3QUFcXFxuQ2dNQUFBRGdBQUFLRXdBQUQ2TUFBQUNRQUFBUHN3QUFEN01BQUFEZ0FBQVB3d0FBRC9NQUFBQ1FBQUFBVXhBQUF2TVFBQUNRQUFBREV4XFxcbkFBQ09NUUFBQ1FBQUFKQXhBQUMvTVFBQUNRQUFBTUF4QUFEak1RQUFEZ0FBQVBBeEFBQWNNZ0FBQ1FBQUFCMHlBQUFlTWdBQURnQUFBQ1xcXG5BeUFBQlBNZ0FBQ1FBQUFGQXlBQUJmTWdBQURnQUFBR0F5QUFCN01nQUFDUUFBQUh3eUFBQitNZ0FBRGdBQUFIOHlBQUN3TWdBQUNRQUFcXFxuQUxFeUFBQy9NZ0FBRGdBQUFNQXlBQURMTWdBQUNRQUFBTXd5QUFEUE1nQUFEZ0FBQU5BeUFBQjJNd0FBQ1FBQUFIY3pBQUI2TXdBQURnXFxcbkFBQUhzekFBRGRNd0FBQ1FBQUFONHpBQURmTXdBQURnQUFBT0F6QUFEK013QUFDUUFBQVA4ekFBRC9Nd0FBRGdBQUFBQTBBQUMvVFFBQVxcXG5DUUFBQU1CTkFBRC9UUUFBRGdBQUFBQk9BQUNNcEFBQUNRQUFBSkNrQUFER3BBQUFEZ0FBQU5Da0FBQU1wZ0FBQ1FBQUFBMm1BQUFQcGdcXFxuQUFEZ0FBQUJDbUFBQXJwZ0FBQ1FBQUFFQ21BQUJ1cGdBQUNRQUFBRyttQUFCeXBnQUFEUUFBQUhPbUFBQnpwZ0FBRGdBQUFIU21BQUI5XFxcbnBnQUFEUUFBQUg2bUFBQi9wZ0FBRGdBQUFJQ21BQUNkcGdBQUNRQUFBSjZtQUFDZnBnQUFEUUFBQUtDbUFBRHZwZ0FBQ1FBQUFQQ21BQVxcXG5EeHBnQUFEUUFBQVBLbUFBRDNwZ0FBQ1FBQUFBQ25BQUFocHdBQURnQUFBQ0tuQUFDSHB3QUFDUUFBQUlpbkFBQ0lwd0FBRGdBQUFJbW5cXFxuQUFES3B3QUFDUUFBQU5DbkFBRFJwd0FBQ1FBQUFOT25BQURUcHdBQUNRQUFBTlduQUFEWnB3QUFDUUFBQVBLbkFBQUJxQUFBQ1FBQUFBXFxcbktvQUFBQ3FBQUFEUUFBQUFPb0FBQUZxQUFBQ1FBQUFBYW9BQUFHcUFBQURRQUFBQWVvQUFBS3FBQUFDUUFBQUF1b0FBQUxxQUFBRFFBQVxcXG5BQXlvQUFBa3FBQUFDUUFBQUNXb0FBQW1xQUFBRFFBQUFDZW9BQUFucUFBQUNRQUFBQ2lvQUFBcnFBQUFEZ0FBQUN5b0FBQXNxQUFBRFFcXFxuQUFBRENvQUFBM3FBQUFDUUFBQURpb0FBQTVxQUFBQndBQUFFQ29BQUJ6cUFBQUNRQUFBSFNvQUFCM3FBQUFEZ0FBQUlDb0FBRERxQUFBXFxcbkNRQUFBTVNvQUFERnFBQUFEUUFBQU02b0FBRFpxQUFBQ1FBQUFPQ29BQUR4cUFBQURRQUFBUEtvQUFEK3FBQUFDUUFBQVArb0FBRC9xQVxcXG5BQURRQUFBQUNwQUFBbHFRQUFDUUFBQUNhcEFBQXRxUUFBRFFBQUFDNnBBQUJHcVFBQUNRQUFBRWVwQUFCUnFRQUFEUUFBQUZLcEFBQlRcXFxucVFBQUNRQUFBRitwQUFCOHFRQUFDUUFBQUlDcEFBQ0NxUUFBRFFBQUFJT3BBQUN5cVFBQUNRQUFBTE9wQUFDenFRQUFEUUFBQUxTcEFBXFxcbkMxcVFBQUNRQUFBTGFwQUFDNXFRQUFEUUFBQUxxcEFBQzdxUUFBQ1FBQUFMeXBBQUM5cVFBQURRQUFBTDZwQUFETnFRQUFDUUFBQU0rcFxcXG5BQURacVFBQUNRQUFBTjZwQUFEa3FRQUFDUUFBQU9XcEFBRGxxUUFBRFFBQUFPYXBBQUQrcVFBQUNRQUFBQUNxQUFBb3FnQUFDUUFBQUNcXFxubXFBQUF1cWdBQURRQUFBQytxQUFBd3FnQUFDUUFBQURHcUFBQXlxZ0FBRFFBQUFET3FBQUEwcWdBQUNRQUFBRFdxQUFBMnFnQUFEUUFBXFxcbkFFQ3FBQUJDcWdBQUNRQUFBRU9xQUFCRHFnQUFEUUFBQUVTcUFBQkxxZ0FBQ1FBQUFFeXFBQUJNcWdBQURRQUFBRTJxQUFCTnFnQUFDUVxcXG5BQUFGQ3FBQUJacWdBQUNRQUFBRnlxQUFCN3FnQUFDUUFBQUh5cUFBQjhxZ0FBRFFBQUFIMnFBQUN2cWdBQUNRQUFBTENxQUFDd3FnQUFcXFxuRFFBQUFMR3FBQUN4cWdBQUNRQUFBTEtxQUFDMHFnQUFEUUFBQUxXcUFBQzJxZ0FBQ1FBQUFMZXFBQUM0cWdBQURRQUFBTG1xQUFDOXFnXFxcbkFBQ1FBQUFMNnFBQUMvcWdBQURRQUFBTUNxQUFEQXFnQUFDUUFBQU1HcUFBREJxZ0FBRFFBQUFNS3FBQURDcWdBQUNRQUFBTnVxQUFEclxcXG5xZ0FBQ1FBQUFPeXFBQUR0cWdBQURRQUFBTzZxQUFEMXFnQUFDUUFBQVBhcUFBRDJxZ0FBRFFBQUFBR3JBQUFHcXdBQUNRQUFBQW1yQUFcXFxuQU9xd0FBQ1FBQUFCR3JBQUFXcXdBQUNRQUFBQ0NyQUFBbXF3QUFDUUFBQUNpckFBQXVxd0FBQ1FBQUFEQ3JBQUJwcXdBQUNRQUFBR3FyXFxcbkFBQnJxd0FBRGdBQUFIQ3JBQURrcXdBQUNRQUFBT1dyQUFEbHF3QUFEUUFBQU9hckFBRG5xd0FBQ1FBQUFPaXJBQURvcXdBQURRQUFBT1xcXG5tckFBRHNxd0FBQ1FBQUFPMnJBQUR0cXdBQURRQUFBUENyQUFENXF3QUFDUUFBQUFDc0FBQ2oxd0FBQ1FBQUFMRFhBQURHMXdBQUNRQUFcXFxuQU12WEFBRDcxd0FBQ1FBQUFBRGdBQUJ0K2dBQUNRQUFBSEQ2QUFEWitnQUFDUUFBQUFEN0FBQUcrd0FBQ1FBQUFCUDdBQUFYK3dBQUNRXFxcbkFBQUIzN0FBQWQrd0FBRVFBQUFCNzdBQUFlK3dBQURRQUFBQi83QUFBbyt3QUFFUUFBQUNuN0FBQXArd0FBQmdBQUFDcjdBQUJQK3dBQVxcXG5FUUFBQUZEN0FBQTkvUUFBQUFBQUFENzlBQUJQL1FBQURnQUFBRkQ5QUFETy9RQUFBQUFBQU0vOUFBRFAvUUFBRGdBQUFQRDlBQUQ4L1FcXFxuQUFBQUFBQVAzOUFBRC8vUUFBRGdBQUFBRCtBQUFQL2dBQURRQUFBQkQrQUFBWi9nQUFEZ0FBQUNEK0FBQXYvZ0FBRFFBQUFERCtBQUJQXFxcbi9nQUFEZ0FBQUZEK0FBQlEvZ0FBQkFBQUFGSCtBQUJSL2dBQURnQUFBRkwrQUFCUy9nQUFCQUFBQUZUK0FBQlUvZ0FBRGdBQUFGWCtBQVxcXG5CVi9nQUFCQUFBQUZiK0FBQmUvZ0FBRGdBQUFGLytBQUJmL2dBQUJ3QUFBR0QrQUFCaC9nQUFEZ0FBQUdMK0FBQmovZ0FBQmdBQUFHVCtcXFxuQUFCbS9nQUFEZ0FBQUdqK0FBQm8vZ0FBRGdBQUFHbitBQUJxL2dBQUJ3QUFBR3YrQUFCci9nQUFEZ0FBQUhEK0FBRCsvZ0FBQUFBQUFQXFxcbi8rQUFELy9nQUFBd0FBQUFIL0FBQUMvd0FBRGdBQUFBUC9BQUFGL3dBQUJ3QUFBQWIvQUFBSy93QUFEZ0FBQUF2L0FBQUwvd0FBQmdBQVxcXG5BQXovQUFBTS93QUFCQUFBQUEzL0FBQU4vd0FBQmdBQUFBNy9BQUFQL3dBQUJBQUFBQkQvQUFBWi93QUFCUUFBQUJyL0FBQWEvd0FBQkFcXFxuQUFBQnYvQUFBZy93QUFEZ0FBQUNIL0FBQTYvd0FBQ1FBQUFEdi9BQUJBL3dBQURnQUFBRUgvQUFCYS93QUFDUUFBQUZ2L0FBQmwvd0FBXFxcbkRnQUFBR2IvQUFDKy93QUFDUUFBQU1ML0FBREgvd0FBQ1FBQUFNci9BQURQL3dBQUNRQUFBTkwvQUFEWC93QUFDUUFBQU5yL0FBRGMvd1xcXG5BQUNRQUFBT0QvQUFEaC93QUFCd0FBQU9ML0FBRGsvd0FBRGdBQUFPWC9BQURtL3dBQUJ3QUFBT2ovQUFEdS93QUFEZ0FBQVBuL0FBRDlcXFxuL3dBQURnQUFBQUFBQVFBTEFBRUFDUUFBQUEwQUFRQW1BQUVBQ1FBQUFDZ0FBUUE2QUFFQUNRQUFBRHdBQVFBOUFBRUFDUUFBQUQ4QUFRXFxcbkJOQUFFQUNRQUFBRkFBQVFCZEFBRUFDUUFBQUlBQUFRRDZBQUVBQ1FBQUFBQUJBUUFBQVFFQUNRQUFBQUVCQVFBQkFRRUFEZ0FBQUFJQlxcXG5BUUFDQVFFQUNRQUFBQWNCQVFBekFRRUFDUUFBQURjQkFRQS9BUUVBQ1FBQUFFQUJBUUNNQVFFQURnQUFBSTBCQVFDT0FRRUFDUUFBQUpcXFxuQUJBUUNjQVFFQURnQUFBS0FCQVFDZ0FRRUFEZ0FBQU5BQkFRRDhBUUVBQ1FBQUFQMEJBUUQ5QVFFQURRQUFBSUFDQVFDY0FnRUFDUUFBXFxcbkFLQUNBUURRQWdFQUNRQUFBT0FDQVFEZ0FnRUFEUUFBQU9FQ0FRRDdBZ0VBQlFBQUFBQURBUUFqQXdFQUNRQUFBQzBEQVFCS0F3RUFDUVxcXG5BQUFGQURBUUIxQXdFQUNRQUFBSFlEQVFCNkF3RUFEUUFBQUlBREFRQ2RBd0VBQ1FBQUFKOERBUUREQXdFQUNRQUFBTWdEQVFEVkF3RUFcXFxuQ1FBQUFBQUVBUUNkQkFFQUNRQUFBS0FFQVFDcEJBRUFDUUFBQUxBRUFRRFRCQUVBQ1FBQUFOZ0VBUUQ3QkFFQUNRQUFBQUFGQVFBbkJRXFxcbkVBQ1FBQUFEQUZBUUJqQlFFQUNRQUFBRzhGQVFCNkJRRUFDUUFBQUh3RkFRQ0tCUUVBQ1FBQUFJd0ZBUUNTQlFFQUNRQUFBSlFGQVFDVlxcXG5CUUVBQ1FBQUFKY0ZBUUNoQlFFQUNRQUFBS01GQVFDeEJRRUFDUUFBQUxNRkFRQzVCUUVBQ1FBQUFMc0ZBUUM4QlFFQUNRQUFBQUFHQVFcXFxuQTJCd0VBQ1FBQUFFQUhBUUJWQndFQUNRQUFBR0FIQVFCbkJ3RUFDUUFBQUlBSEFRQ0ZCd0VBQ1FBQUFJY0hBUUN3QndFQUNRQUFBTElIXFxcbkFRQzZCd0VBQ1FBQUFBQUlBUUFlQ1FFQUVRQUFBQjhKQVFBZkNRRUFEZ0FBQUNBSkFRQUFDZ0VBRVFBQUFBRUtBUUFEQ2dFQURRQUFBQVxcXG5RS0FRQUVDZ0VBRVFBQUFBVUtBUUFHQ2dFQURRQUFBQWNLQVFBTENnRUFFUUFBQUF3S0FRQVBDZ0VBRFFBQUFCQUtBUUEzQ2dFQUVRQUFcXFxuQURnS0FRQTZDZ0VBRFFBQUFEc0tBUUErQ2dFQUVRQUFBRDhLQVFBL0NnRUFEUUFBQUVBS0FRRGtDZ0VBRVFBQUFPVUtBUURtQ2dFQURRXFxcbkFBQU9jS0FRQTRDd0VBRVFBQUFEa0xBUUEvQ3dFQURnQUFBRUFMQVFEL0RBRUFFUUFBQUFBTkFRQWpEUUVBQUFBQUFDUU5BUUFuRFFFQVxcXG5EUUFBQUNnTkFRQXZEUUVBRVFBQUFEQU5BUUE1RFFFQUFRQUFBRG9OQVFCZkRnRUFFUUFBQUdBT0FRQitEZ0VBQVFBQUFIOE9BUUNxRGdcXFxuRUFFUUFBQUtzT0FRQ3NEZ0VBRFFBQUFLME9BUUQ4RGdFQUVRQUFBUDBPQVFEL0RnRUFEUUFBQUFBUEFRQXZEd0VBRVFBQUFEQVBBUUJGXFxcbkR3RUFBQUFBQUVZUEFRQlFEd0VBRFFBQUFGRVBBUUJaRHdFQUFBQUFBRm9QQVFDQkR3RUFFUUFBQUlJUEFRQ0ZEd0VBRFFBQUFJWVBBUVxcXG5EL0R3RUFFUUFBQUFBUUFRQUFFQUVBQ1FBQUFBRVFBUUFCRUFFQURRQUFBQUlRQVFBM0VBRUFDUUFBQURnUUFRQkdFQUVBRFFBQUFFY1FcXFxuQVFCTkVBRUFDUUFBQUZJUUFRQmxFQUVBRGdBQUFHWVFBUUJ2RUFFQUNRQUFBSEFRQVFCd0VBRUFEUUFBQUhFUUFRQnlFQUVBQ1FBQUFIXFxcbk1RQVFCMEVBRUFEUUFBQUhVUUFRQjFFQUVBQ1FBQUFIOFFBUUNCRUFFQURRQUFBSUlRQVFDeUVBRUFDUUFBQUxNUUFRQzJFQUVBRFFBQVxcXG5BTGNRQVFDNEVBRUFDUUFBQUxrUUFRQzZFQUVBRFFBQUFMc1FBUURCRUFFQUNRQUFBTUlRQVFEQ0VBRUFEUUFBQU0wUUFRRE5FQUVBQ1FcXFxuQUFBTkFRQVFEb0VBRUFDUUFBQVBBUUFRRDVFQUVBQ1FBQUFBQVJBUUFDRVFFQURRQUFBQU1SQVFBbUVRRUFDUUFBQUNjUkFRQXJFUUVBXFxcbkRRQUFBQ3dSQVFBc0VRRUFDUUFBQUMwUkFRQTBFUUVBRFFBQUFEWVJBUUJIRVFFQUNRQUFBRkFSQVFCeUVRRUFDUUFBQUhNUkFRQnpFUVxcXG5FQURRQUFBSFFSQVFCMkVRRUFDUUFBQUlBUkFRQ0JFUUVBRFFBQUFJSVJBUUMxRVFFQUNRQUFBTFlSQVFDK0VRRUFEUUFBQUw4UkFRRElcXFxuRVFFQUNRQUFBTWtSQVFETUVRRUFEUUFBQU0wUkFRRE9FUUVBQ1FBQUFNOFJBUURQRVFFQURRQUFBTkFSQVFEZkVRRUFDUUFBQU9FUkFRXFxcbkQwRVFFQUNRQUFBQUFTQVFBUkVnRUFDUUFBQUJNU0FRQXVFZ0VBQ1FBQUFDOFNBUUF4RWdFQURRQUFBRElTQVFBekVnRUFDUUFBQURRU1xcXG5BUUEwRWdFQURRQUFBRFVTQVFBMUVnRUFDUUFBQURZU0FRQTNFZ0VBRFFBQUFEZ1NBUUE5RWdFQUNRQUFBRDRTQVFBK0VnRUFEUUFBQURcXFxuOFNBUUJBRWdFQUNRQUFBRUVTQVFCQkVnRUFEUUFBQUlBU0FRQ0dFZ0VBQ1FBQUFJZ1NBUUNJRWdFQUNRQUFBSW9TQVFDTkVnRUFDUUFBXFxcbkFJOFNBUUNkRWdFQUNRQUFBSjhTQVFDcEVnRUFDUUFBQUxBU0FRRGVFZ0VBQ1FBQUFOOFNBUURmRWdFQURRQUFBT0FTQVFEaUVnRUFDUVxcXG5BQUFPTVNBUURxRWdFQURRQUFBUEFTQVFENUVnRUFDUUFBQUFBVEFRQUJFd0VBRFFBQUFBSVRBUUFERXdFQUNRQUFBQVVUQVFBTUV3RUFcXFxuQ1FBQUFBOFRBUUFRRXdFQUNRQUFBQk1UQVFBb0V3RUFDUUFBQUNvVEFRQXdFd0VBQ1FBQUFESVRBUUF6RXdFQUNRQUFBRFVUQVFBNUV3XFxcbkVBQ1FBQUFEc1RBUUE4RXdFQURRQUFBRDBUQVFBL0V3RUFDUUFBQUVBVEFRQkFFd0VBRFFBQUFFRVRBUUJFRXdFQUNRQUFBRWNUQVFCSVxcXG5Fd0VBQ1FBQUFFc1RBUUJORXdFQUNRQUFBRkFUQVFCUUV3RUFDUUFBQUZjVEFRQlhFd0VBQ1FBQUFGMFRBUUJqRXdFQUNRQUFBR1lUQVFcXFxuQnNFd0VBRFFBQUFIQVRBUUIwRXdFQURRQUFBQUFVQVFBM0ZBRUFDUUFBQURnVUFRQS9GQUVBRFFBQUFFQVVBUUJCRkFFQUNRQUFBRUlVXFxcbkFRQkVGQUVBRFFBQUFFVVVBUUJGRkFFQUNRQUFBRVlVQVFCR0ZBRUFEUUFBQUVjVUFRQmJGQUVBQ1FBQUFGMFVBUUJkRkFFQUNRQUFBRlxcXG40VUFRQmVGQUVBRFFBQUFGOFVBUUJoRkFFQUNRQUFBSUFVQVFDeUZBRUFDUUFBQUxNVUFRQzRGQUVBRFFBQUFMa1VBUUM1RkFFQUNRQUFcXFxuQUxvVUFRQzZGQUVBRFFBQUFMc1VBUUMrRkFFQUNRQUFBTDhVQVFEQUZBRUFEUUFBQU1FVUFRREJGQUVBQ1FBQUFNSVVBUURERkFFQURRXFxcbkFBQU1RVUFRREhGQUVBQ1FBQUFOQVVBUURaRkFFQUNRQUFBSUFWQVFDeEZRRUFDUUFBQUxJVkFRQzFGUUVBRFFBQUFMZ1ZBUUM3RlFFQVxcXG5DUUFBQUx3VkFRQzlGUUVBRFFBQUFMNFZBUUMrRlFFQUNRQUFBTDhWQVFEQUZRRUFEUUFBQU1FVkFRRGJGUUVBQ1FBQUFOd1ZBUURkRlFcXFxuRUFEUUFBQUFBV0FRQXlGZ0VBQ1FBQUFETVdBUUE2RmdFQURRQUFBRHNXQVFBOEZnRUFDUUFBQUQwV0FRQTlGZ0VBRFFBQUFENFdBUUErXFxcbkZnRUFDUUFBQUQ4V0FRQkFGZ0VBRFFBQUFFRVdBUUJFRmdFQUNRQUFBRkFXQVFCWkZnRUFDUUFBQUdBV0FRQnNGZ0VBRGdBQUFJQVdBUVxcXG5DcUZnRUFDUUFBQUtzV0FRQ3JGZ0VBRFFBQUFLd1dBUUNzRmdFQUNRQUFBSzBXQVFDdEZnRUFEUUFBQUs0V0FRQ3ZGZ0VBQ1FBQUFMQVdcXFxuQVFDMUZnRUFEUUFBQUxZV0FRQzJGZ0VBQ1FBQUFMY1dBUUMzRmdFQURRQUFBTGdXQVFDNUZnRUFDUUFBQU1BV0FRREpGZ0VBQ1FBQUFBXFxcbkFYQVFBYUZ3RUFDUUFBQUIwWEFRQWZGd0VBRFFBQUFDQVhBUUFoRndFQUNRQUFBQ0lYQVFBbEZ3RUFEUUFBQUNZWEFRQW1Gd0VBQ1FBQVxcXG5BQ2NYQVFBckZ3RUFEUUFBQURBWEFRQkdGd0VBQ1FBQUFBQVlBUUF1R0FFQUNRQUFBQzhZQVFBM0dBRUFEUUFBQURnWUFRQTRHQUVBQ1FcXFxuQUFBRGtZQVFBNkdBRUFEUUFBQURzWUFRQTdHQUVBQ1FBQUFLQVlBUUR5R0FFQUNRQUFBUDhZQVFBR0dRRUFDUUFBQUFrWkFRQUpHUUVBXFxcbkNRQUFBQXdaQVFBVEdRRUFDUUFBQUJVWkFRQVdHUUVBQ1FBQUFCZ1pBUUExR1FFQUNRQUFBRGNaQVFBNEdRRUFDUUFBQURzWkFRQThHUVxcXG5FQURRQUFBRDBaQVFBOUdRRUFDUUFBQUQ0WkFRQStHUUVBRFFBQUFEOFpBUUJDR1FFQUNRQUFBRU1aQVFCREdRRUFEUUFBQUVRWkFRQkdcXFxuR1FFQUNRQUFBRkFaQVFCWkdRRUFDUUFBQUtBWkFRQ25HUUVBQ1FBQUFLb1pBUURUR1FFQUNRQUFBTlFaQVFEWEdRRUFEUUFBQU5vWkFRXFxcbkRiR1FFQURRQUFBTndaQVFEZkdRRUFDUUFBQU9BWkFRRGdHUUVBRFFBQUFPRVpBUURrR1FFQUNRQUFBQUFhQVFBQUdnRUFDUUFBQUFFYVxcXG5BUUFHR2dFQURRQUFBQWNhQVFBSUdnRUFDUUFBQUFrYUFRQUtHZ0VBRFFBQUFBc2FBUUF5R2dFQUNRQUFBRE1hQVFBNEdnRUFEUUFBQURcXFxua2FBUUE2R2dFQUNRQUFBRHNhQVFBK0dnRUFEUUFBQUQ4YUFRQkdHZ0VBQ1FBQUFFY2FBUUJIR2dFQURRQUFBRkFhQVFCUUdnRUFDUUFBXFxcbkFGRWFBUUJXR2dFQURRQUFBRmNhQVFCWUdnRUFDUUFBQUZrYUFRQmJHZ0VBRFFBQUFGd2FBUUNKR2dFQUNRQUFBSW9hQVFDV0dnRUFEUVxcXG5BQUFKY2FBUUNYR2dFQUNRQUFBSmdhQVFDWkdnRUFEUUFBQUpvYUFRQ2lHZ0VBQ1FBQUFMQWFBUUQ0R2dFQUNRQUFBQUFiQVFBSkd3RUFcXFxuQ1FBQUFBQWNBUUFJSEFFQUNRQUFBQW9jQVFBdkhBRUFDUUFBQURBY0FRQTJIQUVBRFFBQUFEZ2NBUUE5SEFFQURRQUFBRDRjQVFCRkhBXFxcbkVBQ1FBQUFGQWNBUUJzSEFFQUNRQUFBSEFjQVFDUEhBRUFDUUFBQUpJY0FRQ25IQUVBRFFBQUFLa2NBUUNwSEFFQUNRQUFBS29jQVFDd1xcXG5IQUVBRFFBQUFMRWNBUUN4SEFFQUNRQUFBTEljQVFDekhBRUFEUUFBQUxRY0FRQzBIQUVBQ1FBQUFMVWNBUUMySEFFQURRQUFBQUFkQVFcXFxuQUdIUUVBQ1FBQUFBZ2RBUUFKSFFFQUNRQUFBQXNkQVFBd0hRRUFDUUFBQURFZEFRQTJIUUVBRFFBQUFEb2RBUUE2SFFFQURRQUFBRHdkXFxcbkFRQTlIUUVBRFFBQUFEOGRBUUJGSFFFQURRQUFBRVlkQVFCR0hRRUFDUUFBQUVjZEFRQkhIUUVBRFFBQUFGQWRBUUJaSFFFQUNRQUFBR1xcXG5BZEFRQmxIUUVBQ1FBQUFHY2RBUUJvSFFFQUNRQUFBR29kQVFDT0hRRUFDUUFBQUpBZEFRQ1JIUUVBRFFBQUFKTWRBUUNVSFFFQUNRQUFcXFxuQUpVZEFRQ1ZIUUVBRFFBQUFKWWRBUUNXSFFFQUNRQUFBSmNkQVFDWEhRRUFEUUFBQUpnZEFRQ1lIUUVBQ1FBQUFLQWRBUUNwSFFFQUNRXFxcbkFBQU9BZUFRRHlIZ0VBQ1FBQUFQTWVBUUQwSGdFQURRQUFBUFVlQVFENEhnRUFDUUFBQUFBZkFRQUJId0VBRFFBQUFBSWZBUUFRSHdFQVxcXG5DUUFBQUJJZkFRQTFId0VBQ1FBQUFEWWZBUUE2SHdFQURRQUFBRDRmQVFBL0h3RUFDUUFBQUVBZkFRQkFId0VBRFFBQUFFRWZBUUJCSHdcXFxuRUFDUUFBQUVJZkFRQkNId0VBRFFBQUFFTWZBUUJaSHdFQUNRQUFBTEFmQVFDd0h3RUFDUUFBQU1BZkFRRFVId0VBQ1FBQUFOVWZBUURjXFxcbkh3RUFEZ0FBQU4wZkFRRGdId0VBQndBQUFPRWZBUUR4SHdFQURnQUFBUDhmQVFDWkl3RUFDUUFBQUFBa0FRQnVKQUVBQ1FBQUFIQWtBUVxcXG5CMEpBRUFDUUFBQUlBa0FRQkRKUUVBQ1FBQUFKQXZBUUR5THdFQUNRQUFBQUF3QVFBL05BRUFDUUFBQUVBMEFRQkFOQUVBRFFBQUFFRTBcXFxuQVFCR05BRUFDUUFBQUVjMEFRQlZOQUVBRFFBQUFBQkVBUUJHUmdFQUNRQUFBQUJvQVFBNGFnRUFDUUFBQUVCcUFRQmVhZ0VBQ1FBQUFHXFxcbkJxQVFCcGFnRUFDUUFBQUc1cUFRQythZ0VBQ1FBQUFNQnFBUURKYWdFQUNRQUFBTkJxQVFEdGFnRUFDUUFBQVBCcUFRRDBhZ0VBRFFBQVxcXG5BUFZxQVFEMWFnRUFDUUFBQUFCckFRQXZhd0VBQ1FBQUFEQnJBUUEyYXdFQURRQUFBRGRyQVFCRmF3RUFDUUFBQUZCckFRQlphd0VBQ1FcXFxuQUFBRnRyQVFCaGF3RUFDUUFBQUdOckFRQjNhd0VBQ1FBQUFIMXJBUUNQYXdFQUNRQUFBRUJ1QVFDYWJnRUFDUUFBQUFCdkFRQktid0VBXFxcbkNRQUFBRTl2QVFCUGJ3RUFEUUFBQUZCdkFRQ0hid0VBQ1FBQUFJOXZBUUNTYndFQURRQUFBSk52QVFDZmJ3RUFDUUFBQU9CdkFRRGhid1xcXG5FQUNRQUFBT0p2QVFEaWJ3RUFEZ0FBQU9OdkFRRGpid0VBQ1FBQUFPUnZBUURrYndFQURRQUFBUEJ2QVFEeGJ3RUFDUUFBQUFCd0FRRDNcXFxuaHdFQUNRQUFBQUNJQVFEVmpBRUFDUUFBQUFDTkFRQUlqUUVBQ1FBQUFQQ3ZBUUR6cndFQUNRQUFBUFd2QVFEN3J3RUFDUUFBQVAydkFRXFxcbkQrcndFQUNRQUFBQUN3QVFBaXNRRUFDUUFBQURLeEFRQXlzUUVBQ1FBQUFGQ3hBUUJTc1FFQUNRQUFBRld4QVFCVnNRRUFDUUFBQUdTeFxcXG5BUUJuc1FFQUNRQUFBSEN4QVFEN3NnRUFDUUFBQUFDOEFRQnF2QUVBQ1FBQUFIQzhBUUI4dkFFQUNRQUFBSUM4QVFDSXZBRUFDUUFBQUpcXFxuQzhBUUNadkFFQUNRQUFBSnk4QVFDY3ZBRUFDUUFBQUoyOEFRQ2V2QUVBRFFBQUFKKzhBUUNmdkFFQUNRQUFBS0M4QVFDanZBRUFBd0FBXFxcbkFBRFBBUUF0endFQURRQUFBRERQQVFCR3p3RUFEUUFBQUZEUEFRRER6d0VBQ1FBQUFBRFFBUUQxMEFFQUNRQUFBQURSQVFBbTBRRUFDUVxcXG5BQUFDblJBUUJtMFFFQUNRQUFBR2ZSQVFCcDBRRUFEUUFBQUdyUkFRQnkwUUVBQ1FBQUFIUFJBUUI2MFFFQUF3QUFBSHZSQVFDQzBRRUFcXFxuRFFBQUFJUFJBUUNFMFFFQUNRQUFBSVhSQVFDTDBRRUFEUUFBQUl6UkFRQ3AwUUVBQ1FBQUFLclJBUUN0MFFFQURRQUFBSzdSQVFEbzBRXFxcbkVBQ1FBQUFPblJBUURxMFFFQURnQUFBQURTQVFCQjBnRUFEZ0FBQUVMU0FRQkUwZ0VBRFFBQUFFWFNBUUJGMGdFQURnQUFBTURTQVFEVFxcXG4wZ0VBQ1FBQUFPRFNBUUR6MGdFQUNRQUFBQURUQVFCVzB3RUFEZ0FBQUdEVEFRQjQwd0VBQ1FBQUFBRFVBUUJVMUFFQUNRQUFBRmJVQVFcXFxuQ2MxQUVBQ1FBQUFKN1VBUUNmMUFFQUNRQUFBS0xVQVFDaTFBRUFDUUFBQUtYVUFRQ20xQUVBQ1FBQUFLblVBUUNzMUFFQUNRQUFBSzdVXFxcbkFRQzUxQUVBQ1FBQUFMdlVBUUM3MUFFQUNRQUFBTDNVQVFERDFBRUFDUUFBQU1YVUFRQUYxUUVBQ1FBQUFBZlZBUUFLMVFFQUNRQUFBQVxcXG4zVkFRQVUxUUVBQ1FBQUFCYlZBUUFjMVFFQUNRQUFBQjdWQVFBNTFRRUFDUUFBQUR2VkFRQSsxUUVBQ1FBQUFFRFZBUUJFMVFFQUNRQUFcXFxuQUViVkFRQkcxUUVBQ1FBQUFFclZBUUJRMVFFQUNRQUFBRkxWQVFDbDFnRUFDUUFBQUtqV0FRRGExZ0VBQ1FBQUFOdldBUURiMWdFQURnXFxcbkFBQU56V0FRQVUxd0VBQ1FBQUFCWFhBUUFWMXdFQURnQUFBQmJYQVFCTzF3RUFDUUFBQUUvWEFRQlAxd0VBRGdBQUFGRFhBUUNJMXdFQVxcXG5DUUFBQUluWEFRQ0oxd0VBRGdBQUFJclhBUURDMXdFQUNRQUFBTVBYQVFERDF3RUFEZ0FBQU1UWEFRREwxd0VBQ1FBQUFNN1hBUUQvMXdcXFxuRUFCUUFBQUFEWUFRRC8yUUVBQ1FBQUFBRGFBUUEyMmdFQURRQUFBRGZhQVFBNjJnRUFDUUFBQUR2YUFRQnMyZ0VBRFFBQUFHM2FBUUIwXFxcbjJnRUFDUUFBQUhYYUFRQjEyZ0VBRFFBQUFIYmFBUUNEMmdFQUNRQUFBSVRhQVFDRTJnRUFEUUFBQUlYYUFRQ0wyZ0VBQ1FBQUFKdmFBUVxcXG5DZjJnRUFEUUFBQUtIYUFRQ3YyZ0VBRFFBQUFBRGZBUUFlM3dFQUNRQUFBQ1hmQVFBcTN3RUFDUUFBQUFEZ0FRQUc0QUVBRFFBQUFBamdcXFxuQVFBWTRBRUFEUUFBQUJ2Z0FRQWg0QUVBRFFBQUFDUGdBUUFrNEFFQURRQUFBQ2JnQVFBcTRBRUFEUUFBQUREZ0FRQnQ0QUVBQ1FBQUFJXFxcbi9nQVFDUDRBRUFEUUFBQUFEaEFRQXM0UUVBQ1FBQUFERGhBUUEyNFFFQURRQUFBRGZoQVFBOTRRRUFDUUFBQUVEaEFRQko0UUVBQ1FBQVxcXG5BRTdoQVFCUDRRRUFDUUFBQUpEaUFRQ3Q0Z0VBQ1FBQUFLN2lBUUN1NGdFQURRQUFBTURpQVFEcjRnRUFDUUFBQU96aUFRRHY0Z0VBRFFcXFxuQUFBUERpQVFENTRnRUFDUUFBQVAvaUFRRC80Z0VBQndBQUFORGtBUURyNUFFQUNRQUFBT3prQVFEdjVBRUFEUUFBQVBEa0FRRDU1QUVBXFxcbkNRQUFBT0RuQVFEbTV3RUFDUUFBQU9qbkFRRHI1d0VBQ1FBQUFPM25BUUR1NXdFQUNRQUFBUERuQVFEKzV3RUFDUUFBQUFEb0FRRFA2QVxcXG5FQUVRQUFBTkRvQVFEVzZBRUFEUUFBQU5mb0FRQkQ2UUVBRVFBQUFFVHBBUUJLNlFFQURRQUFBRXZwQVFCdzdBRUFFUUFBQUhIc0FRQzBcXFxuN0FFQUFBQUFBTFhzQVFBQTdRRUFFUUFBQUFIdEFRQTk3UUVBQUFBQUFEN3RBUUQvN1FFQUVRQUFBQUR1QVFEdjdnRUFBQUFBQVBEdUFRXFxcbkR4N2dFQURnQUFBUEx1QVFELzdnRUFBQUFBQUFEdkFRRC83d0VBRVFBQUFBRHdBUUFyOEFFQURnQUFBRER3QVFDVDhBRUFEZ0FBQUtEd1xcXG5BUUN1OEFFQURnQUFBTEh3QVFDLzhBRUFEZ0FBQU1Id0FRRFA4QUVBRGdBQUFOSHdBUUQxOEFFQURnQUFBQUR4QVFBSzhRRUFCUUFBQUFcXFxudnhBUUFQOFFFQURnQUFBQkR4QVFBdThRRUFDUUFBQUMveEFRQXY4UUVBRGdBQUFERHhBUUJwOFFFQUNRQUFBR3J4QVFCdjhRRUFEZ0FBXFxcbkFIRHhBUUNzOFFFQUNRQUFBSzN4QVFDdDhRRUFEZ0FBQU9ieEFRQUM4Z0VBQ1FBQUFCRHlBUUE3OGdFQUNRQUFBRUR5QVFCSThnRUFDUVxcXG5BQUFGRHlBUUJSOGdFQUNRQUFBR0R5QVFCbDhnRUFEZ0FBQUFEekFRRFg5Z0VBRGdBQUFOejJBUURzOWdFQURnQUFBUEQyQVFEODlnRUFcXFxuRGdBQUFBRDNBUUIyOXdFQURnQUFBSHYzQVFEWjl3RUFEZ0FBQU9EM0FRRHI5d0VBRGdBQUFQRDNBUUR3OXdFQURnQUFBQUQ0QVFBTCtBXFxcbkVBRGdBQUFCRDRBUUJIK0FFQURnQUFBRkQ0QVFCWitBRUFEZ0FBQUdENEFRQ0grQUVBRGdBQUFKRDRBUUN0K0FFQURnQUFBTEQ0QVFDeFxcXG4rQUVBRGdBQUFBRDVBUUJUK2dFQURnQUFBR0Q2QVFCdCtnRUFEZ0FBQUhENkFRQjgrZ0VBRGdBQUFJRDZBUUNJK2dFQURnQUFBSkQ2QVFcXFxuQzkrZ0VBRGdBQUFMLzZBUURGK2dFQURnQUFBTTc2QVFEYitnRUFEZ0FBQU9ENkFRRG8rZ0VBRGdBQUFQRDZBUUQ0K2dFQURnQUFBQUQ3XFxcbkFRQ1Mrd0VBRGdBQUFKVDdBUURLK3dFQURnQUFBUEQ3QVFENSt3RUFCUUFBQUFBQUFnRGZwZ0lBQ1FBQUFBQ25BZ0E1dHdJQUNRQUFBRVxcXG5DM0FnQWR1QUlBQ1FBQUFDQzRBZ0NoemdJQUNRQUFBTERPQWdEZzZ3SUFDUUFBQUFENEFnQWQrZ0lBQ1FBQUFBQUFBd0JLRXdNQUNRQUFcXFxuQUZBVEF3Q3ZJd01BQ1FBQUFBRUFEZ0FCQUE0QUF3QUFBQ0FBRGdCL0FBNEFBd0FBQUFBQkRnRHZBUTRBRFFBQUFBQUFEd0Q5L3c4QUNRXFxcbkFBQUFBQUVBRDkveEFBQ1FBQUFHRnpjMlZ5ZEdsdmJpQm1ZV2xzWldRNklHMXBaQ0E4UFNCelpXeG1MbXhsYmlncGZpOHVZMkZ5WjI4dlxcXG5jbVZuYVhOMGNua3ZjM0pqTDJsdVpHVjRMbU55WVhSbGN5NXBieTAyWmpFM1pESXlZbUpoTVRVd01ERm1MM0JsY21ObGJuUXRaVzVqYjJcXFxuUnBibWN0TWk0ekxqQXZjM0pqTDJ4cFlpNXljd0RYYUJNQVdBQUFBTk1BQUFBb0FBQUFKVEF3SlRBeEpUQXlKVEF6SlRBMEpUQTFKVEEyXFxcbkpUQTNKVEE0SlRBNUpUQkJKVEJDSlRCREpUQkVKVEJGSlRCR0pURXdKVEV4SlRFeUpURXpKVEUwSlRFMUpURTJKVEUzSlRFNEpURTVKVFxcXG5GQkpURkNKVEZESlRGRUpURkZKVEZHSlRJd0pUSXhKVEl5SlRJekpUSTBKVEkxSlRJMkpUSTNKVEk0SlRJNUpUSkJKVEpDSlRKREpUSkVcXFxuSlRKRkpUSkdKVE13SlRNeEpUTXlKVE16SlRNMEpUTTFKVE0ySlRNM0pUTTRKVE01SlROQkpUTkNKVE5ESlRORUpUTkZKVE5HSlRRd0pUXFxcblF4SlRReUpUUXpKVFEwSlRRMUpUUTJKVFEzSlRRNEpUUTVKVFJCSlRSQ0pUUkRKVFJFSlRSRkpUUkdKVFV3SlRVeEpUVXlKVFV6SlRVMFxcXG5KVFUxSlRVMkpUVTNKVFU0SlRVNUpUVkJKVFZDSlRWREpUVkVKVFZGSlRWR0pUWXdKVFl4SlRZeUpUWXpKVFkwSlRZMUpUWTJKVFkzSlRcXFxuWTRKVFk1SlRaQkpUWkNKVFpESlRaRUpUWkZKVFpHSlRjd0pUY3hKVGN5SlRjekpUYzBKVGMxSlRjMkpUYzNKVGM0SlRjNUpUZEJKVGRDXFxcbkpUZERKVGRFSlRkRkpUZEdKVGd3SlRneEpUZ3lKVGd6SlRnMEpUZzFKVGcySlRnM0pUZzRKVGc1SlRoQkpUaENKVGhESlRoRUpUaEZKVFxcXG5oR0pUa3dKVGt4SlRreUpUa3pKVGswSlRrMUpUazJKVGszSlRrNEpUazVKVGxCSlRsQ0pUbERKVGxFSlRsRkpUbEdKVUV3SlVFeEpVRXlcXFxuSlVFekpVRTBKVUUxSlVFMkpVRTNKVUU0SlVFNUpVRkJKVUZDSlVGREpVRkVKVUZGSlVGR0pVSXdKVUl4SlVJeUpVSXpKVUkwSlVJMUpVXFxcbkkySlVJM0pVSTRKVUk1SlVKQkpVSkNKVUpESlVKRUpVSkZKVUpHSlVNd0pVTXhKVU15SlVNekpVTTBKVU0xSlVNMkpVTTNKVU00SlVNNVxcXG5KVU5CSlVOQ0pVTkRKVU5FSlVORkpVTkdKVVF3SlVReEpVUXlKVVF6SlVRMEpVUTFKVVEySlVRM0pVUTRKVVE1SlVSQkpVUkNKVVJESlVcXFxuUkVKVVJGSlVSR0pVVXdKVVV4SlVVeUpVVXpKVVUwSlVVMUpVVTJKVVUzSlVVNEpVVTVKVVZCSlVWQ0pVVkRKVVZFSlVWRkpVVkdKVVl3XFxcbkpVWXhKVVl5SlVZekpVWTBKVVkxSlVZMkpVWTNKVVk0SlVZNUpVWkJKVVpDSlVaREpVWkVKVVpGSlVaRzEyZ1RBRmdBQUFBVUFRQUFSd1xcXG5BQUFOZG9Fd0JZQUFBQW5RRUFBQ01BQUFEdEFBQUFDQUFBQUFRQUFBRHVBQUFBN3dBQUFPMEFBQUFJQUFBQUJBQUFBUEFBQUFCaElITjBcXFxuY21sdVoySjVkR1VnWVhKeVlYbHpkSEoxWTNRZ1UzbHpkR1Z0VkdsdFpYTjBjblZqZENCMllYSnBZVzUwQUFBQXAyd1RBQTRBQUFCMGRYXFxcbkJzWlNCMllYSnBZVzUwQUFBQXdHd1RBQTBBQUFCdVpYZDBlWEJsSUhaaGNtbGhiblFBMkd3VEFBOEFBQUIxYm1sMElIWmhjbWxoYm5Ud1xcXG5iQk1BREFBQUFHVnVkVzBFYlJNQUJBQUFBRzFoY0FBUWJSTUFBd0FBQUhObGNYVmxibU5sSEcwVEFBZ0FBQUJ1WlhkMGVYQmxJSE4wY25cXFxuVmpkQUFBTEcwVEFBNEFBQUJQY0hScGIyNGdkbUZzZFdWRWJSTUFEQUFBQUhWdWFYUWdkbUZzZFdVQUFGaHRFd0FLQUFBQWpHd1RBQW9BXFxcbkFBQnpkSEpwYm1jZ0FIUnRFd0FIQUFBQVkyaGhjbUZqZEdWeUlHQmdoRzBUQUFzQUFBQ1BiUk1BQVFBQUFHWnNiMkYwYVc1bklIQnZhV1xcXG41MElHQ2diUk1BRUFBQUFJOXRFd0FCQUFBQWFXNTBaV2RsY2lCZ0FBQUF3RzBUQUFrQUFBQ1BiUk1BQVFBQUFHSnZiMnhsWVc0Z1lBQUFcXFxuQU54dEV3QUpBQUFBajIwVEFBRUFBQUJ2Ym1VZ2IyWWdBUGh0RXdBSEFBQUFMQ0FBQUFodUV3QUNBQUFBajIwVEFBRUFBQUNQYlJNQUFRXFxcbkFBQUdBZ2IzSWdZQUFBajIwVEFBRUFBQUFrYmhNQUJnQUFBSTl0RXdBQkFBQUFmaTh1WTJGeVoyOHZjbVZuYVhOMGNua3ZjM0pqTDJsdVxcXG5aR1Y0TG1OeVlYUmxjeTVwYnkwMlpqRTNaREl5WW1KaE1UVXdNREZtTDNObGNtUmxMVEV1TUM0eE9ETXZjM0pqTDJSbEwyMXZaQzV5YzJcXFxuVjRjR3hwWTJsMElIQmhibWxqUkc0VEFGSUFBQURzQ0FBQUVnQUFBSFV6TW5VMk5BQUE4Z0FBQUFRQUFBQUVBQUFBOHdBQUFQUUFBQUQxXFxcbkFBQUFaR1Z6WTNKcGNIUnBiMjRvS1NCcGN5QmtaWEJ5WldOaGRHVmtPeUIxYzJVZ1JHbHpjR3hoZWRSdUV3QUFBQUFBOWdBQUFQY0FBQVxcXG5ENEFBQUErUUFBQVBvQUFBRDdBQUFBREFBQUFBUUFBQUQ4QUFBQSt3QUFBQXdBQUFBRUFBQUEvUUFBQVB3QUFBQVlieE1BL2dBQUFQOEFcXFxuQUFBQUFRQUEvZ0FBQUFFQkFBQUNBUUFBRUFBQUFBUUFBQUFEQVFBQUFnRUFBQkFBQUFBRUFBQUFCQUVBQUFNQkFBQlVieE1BQlFFQUFBXFxcbllCQUFBQUFRQUFCd0VBQUFFQkFBQTZJQUFBa0c4VEFBSUFBQUFLQ2tOaGRYTmxaQ0JpZVRxY2J4TUFEQUFBQUFvQUFBQ3dieE1BQVFBQVxcXG5BTlJ1RXdBQUFBQUFrRzhUQUFJQUFBQWdJQ0FnSUNBZ0lDQWdJR05oYkd4bFpDQmdUM0IwYVc5dU9qcDFibmR5WVhBb0tXQWdiMjRnWVNcXFxuQmdUbTl1WldBZ2RtRnNkV1V2Y25WemRHTXZaV0l5TmpJNU5tSTFOVFpqWldZeE1HWmlOekV6WVRNNFpqTmtNVFppT1RnNE5qQTRNR1l5XFxcbk5pOXNhV0p5WVhKNUwyTnZjbVV2YzNKakwzTnNhV05sTDJsMFpYSXVjbk1DY0JNQVRnQUFBT3dCQUFBaEFBQUFEQUVBQUFRQUFBQUVBQVxcXG5BQURRRUFBQTRCQUFBUEFRQUFiM1psY21ac2IzY2dhVzRnUkhWeVlYUnBiMjQ2T201bGR3QUFBSGh3RXdBWkFBQUFMM0oxYzNSakwyVmlcXFxuTWpZeU9UWmlOVFUyWTJWbU1UQm1ZamN4TTJFek9HWXpaREUyWWprNE9EWXdPREJtTWpZdmJHbGljbUZ5ZVM5amIzSmxMM055WXk5MGFXXFxcbjFsTG5Kem5IQVRBRWdBQUFES0FBQUFGUUFBQUVGalkyVnpjMFZ5Y205eWRYTmxJRzltSUhOMFpEbzZkR2h5WldGa09qcGpkWEp5Wlc1MFxcXG5LQ2tnYVhNZ2JtOTBJSEJ2YzNOcFlteGxJR0ZtZEdWeUlIUm9aU0IwYUhKbFlXUW5jeUJzYjJOaGJDQmtZWFJoSUdoaGN5QmlaV1Z1SUdcXFxuUmxjM1J5YjNsbFpHeHBZbkpoY25rdmMzUmtMM055WXk5MGFISmxZV1F2Ylc5a0xuSnpBQUJkY1JNQUhRQUFBTWNDQUFBakFBQUFabUZwXFxcbmJHVmtJSFJ2SUdkbGJtVnlZWFJsSUhWdWFYRjFaU0IwYUhKbFlXUWdTVVE2SUdKcGRITndZV05sSUdWNGFHRjFjM1JsWkFDTWNSTUFOd1xcXG5BQUFGMXhFd0FkQUFBQVFBUUFBQTBBQUFCNGNCTUFBQUFBQUhWdVkyRjBaV2R2Y21sNlpXUWdaWEp5YjNKdmRHaGxjaUJsY25KdmNtOTFcXFxuZENCdlppQnRaVzF2Y25sMWJtVjRjR1ZqZEdWa0lHVnVaQ0J2WmlCbWFXeGxkVzV6ZFhCd2IzSjBaV1J2Y0dWeVlYUnBiMjRnYVc1MFpYXFxcbkp5ZFhCMFpXUmhjbWQxYldWdWRDQnNhWE4wSUhSdmJ5QnNiMjVuYVc1MllXeHBaQ0JtYVd4bGJtRnRaWFJ2YnlCdFlXNTVJR3hwYm10elxcXG5ZM0p2YzNNdFpHVjJhV05sSUd4cGJtc2diM0lnY21WdVlXMWxaR1ZoWkd4dlkydGxlR1ZqZFhSaFlteGxJR1pwYkdVZ1luVnplWEpsYzJcXFxuOTFjbU5sSUdKMWMzbG1hV3hsSUhSdmJ5QnNZWEpuWldacGJHVnplWE4wWlcwZ2NYVnZkR0VnWlhoalpXVmtaV1J6WldWcklHOXVJSFZ1XFxcbmMyVmxhMkZpYkdVZ1ptbHNaVzV2SUhOMGIzSmhaMlVnYzNCaFkyVjNjbWwwWlNCNlpYSnZkR2x0WldRZ2IzVjBhVzUyWVd4cFpDQmtZWFxcXG5SaGFXNTJZV3hwWkNCcGJuQjFkQ0J3WVhKaGJXVjBaWEp6ZEdGc1pTQnVaWFIzYjNKcklHWnBiR1VnYUdGdVpHeGxabWxzWlhONWMzUmxcXFxuYlNCc2IyOXdJRzl5SUdsdVpHbHlaV04wYVc5dUlHeHBiV2wwSUNobExtY3VJSE41Yld4cGJtc2diRzl2Y0NseVpXRmtMVzl1YkhrZ1ptXFxcbmxzWlhONWMzUmxiU0J2Y2lCemRHOXlZV2RsSUcxbFpHbDFiV1JwY21WamRHOXllU0J1YjNRZ1pXMXdkSGxwY3lCaElHUnBjbVZqZEc5eVxcXG5lVzV2ZENCaElHUnBjbVZqZEc5eWVXOXdaWEpoZEdsdmJpQjNiM1ZzWkNCaWJHOWphMlZ1ZEdsMGVTQmhiSEpsWVdSNUlHVjRhWE4wYzJcXFxuSnliMnRsYmlCd2FYQmxibVYwZDI5eWF5QmtiM2R1WVdSa2NtVnpjeUJ1YjNRZ1lYWmhhV3hoWW14bFlXUmtjbVZ6Y3lCcGJpQjFjMlZ1XFxcbmIzUWdZMjl1Ym1WamRHVmtZMjl1Ym1WamRHbHZiaUJoWW05eWRHVmtibVYwZDI5eWF5QjFibkpsWVdOb1lXSnNaV2h2YzNRZ2RXNXlaV1xcXG5GamFHRmliR1ZqYjI1dVpXTjBhVzl1SUhKbGMyVjBZMjl1Ym1WamRHbHZiaUJ5WldaMWMyVmtjR1Z5YldsemMybHZiaUJrWlc1cFpXUmxcXFxuYm5ScGRIa2dibTkwSUdadmRXNWtSWEp5YjNKcmFXNWtBQUFRQVFBQUFRQUFBQUVBQUFBUkFRQUFiV1Z6YzJGblpRQU1BUUFBQ0FBQUFBXFxcblFBQUFBU0FRQUFTMmx1WkU5elkyOWtaUUFBREFFQUFBUUFBQUFFQUFBQUV3RUFBQlFCQUFBTUFBQUFCQUFBQUJVQkFBQWdLRzl6SUdWeVxcXG5jbTl5SUNsNGNCTUFBQUFBQURCMUV3QUxBQUFBTzNVVEFBRUFBQUJoYkhKbFlXUjVJR0p2Y25KdmQyVmtGZ0VBQUFBQUFBQUJBQUFBRndcXFxuRUFBR3hwWW5KaGNua3ZjM1JrTDNOeVl5OXdZWFJvTG5KekFIUjFFd0FYQUFBQTJBSUFBQmdBQUFCMGRSTUFGd0FBQVA4Q0FBQWpBQUFBXFxcbmRIVVRBQmNBQUFBQkF3QUFIUUFBQUhSMUV3QVhBQUFBRGdNQUFCNEFBQUIwZFJNQUZ3QUFBQm9EQUFBZUFBQUFkSFVUQUJjQUFBQzJBd1xcXG5BQUlnQUFBSFIxRXdBWEFBQUF3UU1BQUNZQUFBQjBkUk1BRndBQUFNZ0RBQUFtQUFBQWIzWmxjbVpzYjNjZ2QyaGxiaUJoWkdScGJtY2dcXFxuWkhWeVlYUnBiMjRnZEc4Z2FXNXpkR0Z1ZEd4cFluSmhjbmt2YzNSa0wzTnlZeTkwYVcxbExuSnpBRFIyRXdBWEFBQUFTQUlBQUI4QUFBXFxcbkJzYVdKeVlYSjVMM04wWkM5emNtTXZjM2x6WDJOdmJXMXZiaTkwYUhKbFlXUmZhVzVtYnk1eWN3QUFBRngyRXdBcEFBQUFGZ0FBQURNQVxcXG5BQUJ0WlcxdmNua2dZV3hzYjJOaGRHbHZiaUJ2WmlBZ1lubDBaWE1nWm1GcGJHVmtBQUNZZGhNQUZRQUFBSzEyRXdBTkFBQUFiR2xpY21cXFxuRnllUzl6ZEdRdmMzSmpMMkZzYkc5akxuSnp6SFlUQUJnQUFBQlZBUUFBQ1FBQUFHTmhibTV2ZENCdGIyUnBabmtnZEdobElIQmhibWxqXFxcbklHaHZiMnNnWm5KdmJTQmhJSEJoYm1samEybHVaeUIwYUhKbFlXVDBkaE1BTkFBQUFHeHBZbkpoY25rdmMzUmtMM055WXk5d1lXNXBZMlxcXG50cGJtY3Vjbk13ZHhNQUhBQUFBSWNBQUFBSkFBQUFNSGNUQUJ3QUFBQlFBZ0FBSGdBQUFEQjNFd0FjQUFBQVR3SUFBQjhBQUFBVUFRQUFcXFxuREFBQUFBUUFBQUFZQVFBQURBRUFBQWdBQUFBRUFBQUFHUUVBQUJvQkFBQVFBQUFBQkFBQUFCc0JBQUFjQVFBQURBRUFBQWdBQUFBRUFBXFxcbkFBSFFFQUFCNEJBQUFXQVFBQUFBQUFBQUVBQUFBZkFRQUFWVzV6ZFhCd2IzSjBaV1JEZFhOMGIyMWxjbkp2Y2dBQURBRUFBQVFBQUFBRVxcXG5BQUFBSUFFQUFGVnVZMkYwWldkdmNtbDZaV1JQZEdobGNrOTFkRTltVFdWdGIzSjVWVzVsZUhCbFkzUmxaRVZ2WmtsdWRHVnljblZ3ZEdcXFxuVmtRWEpuZFcxbGJuUk1hWE4wVkc5dlRHOXVaMGx1ZG1Gc2FXUkdhV3hsYm1GdFpWUnZiMDFoYm5sTWFXNXJjME55YjNOelpYTkVaWFpwXFxcblkyVnpSR1ZoWkd4dlkydEZlR1ZqZFhSaFlteGxSbWxzWlVKMWMzbFNaWE52ZFhKalpVSjFjM2xHYVd4bFZHOXZUR0Z5WjJWR2FXeGxjM1xcXG5semRHVnRVWFZ2ZEdGRmVHTmxaV1JsWkU1dmRGTmxaV3RoWW14bFUzUnZjbUZuWlVaMWJHeFhjbWwwWlZwbGNtOVVhVzFsWkU5MWRFbHVcXFxuZG1Gc2FXUkVZWFJoU1c1MllXeHBaRWx1Y0hWMFUzUmhiR1ZPWlhSM2IzSnJSbWxzWlVoaGJtUnNaVVpwYkdWemVYTjBaVzFNYjI5d1VtXFxcblZoWkU5dWJIbEdhV3hsYzNsemRHVnRSR2x5WldOMGIzSjVUbTkwUlcxd2RIbEpjMEZFYVhKbFkzUnZjbmxPYjNSQlJHbHlaV04wYjNKNVxcXG5WMjkxYkdSQ2JHOWphMEZzY21WaFpIbEZlR2x6ZEhOQ2NtOXJaVzVRYVhCbFRtVjBkMjl5YTBSdmQyNUJaR1J5VG05MFFYWmhhV3hoWW1cXFxueGxRV1JrY2tsdVZYTmxUbTkwUTI5dWJtVmpkR1ZrUTI5dWJtVmpkR2x2YmtGaWIzSjBaV1JPWlhSM2IzSnJWVzV5WldGamFHRmliR1ZJXFxcbmIzTjBWVzV5WldGamFHRmliR1ZEYjI1dVpXTjBhVzl1VW1WelpYUkRiMjV1WldOMGFXOXVVbVZtZFhObFpGQmxjbTFwYzNOcGIyNUVaV1xcXG41cFpXUk9iM1JHYjNWdVpHOXdaWEpoZEdsdmJpQnpkV05qWlhOelpuVnNBQkFBQUFBUkFBQUFFZ0FBQUJBQUFBQVFBQUFBRXdBQUFCSUFcXFxuQUFBTkFBQUFEZ0FBQUJVQUFBQU1BQUFBQ3dBQUFCVUFBQUFWQUFBQUR3QUFBQTRBQUFBVEFBQUFKZ0FBQURnQUFBQVpBQUFBRndBQUFBXFxcbndBQUFBSkFBQUFDZ0FBQUJBQUFBQVhBQUFBR1FBQUFBNEFBQUFOQUFBQUZBQUFBQWdBQUFBYkFBQUFEZ0FBQUJBQUFBQVdBQUFBRlFBQVxcXG5BQXNBQUFBV0FBQUFEUUFBQUFzQUFBQVRBQUFBd1hRVEFMQjBFd0NlZEJNQWpuUVRBSDUwRXdCcmRCTUFXWFFUQUV4MEV3QStkQk1BS1hcXFxuUVRBQjEwRXdBU2RCTUEvWE1UQU9oekV3RFpjeE1BeTNNVEFMaHpFd0NTY3hNQVduTVRBRUZ6RXdBcWN4TUFIbk1UQUJWekV3QUxjeE1BXFxcbiszSVRBT1J5RXdETGNoTUF2WElUQUxCeUV3Q2NjaE1BbEhJVEFIbHlFd0JyY2hNQVczSVRBRVZ5RXdBd2NoTUFKWElUQUE5eUV3QUNjaFxcXG5NQTkzRVRBT1J4RXdBSUFBQUFFQUFBQUJFQUFBQVBBQUFBRHdBQUFCSUFBQUFSQUFBQURBQUFBQWtBQUFBUUFBQUFDd0FBQUFvQUFBQU5cXFxuQUFBQUNnQUFBQTBBQUFBTUFBQUFFUUFBQUJJQUFBQU9BQUFBRmdBQUFBd0FBQUFMQUFBQUNBQUFBQWtBQUFBTEFBQUFDd0FBQUJjQUFBXFxcbkFNQUFBQURBQUFBQklBQUFBSUFBQUFEZ0FBQUF3QUFBQVBBQUFBRXdBQUFBc0FBQUFMQUFBQURRQUFBQXNBQUFBRkFBQUFEUUFBQUFkNlxcXG5Fd0QzZVJNQTVua1RBTmQ1RXdESWVSTUF0bmtUQUtWNUV3Q1plUk1Ba0hrVEFJQjVFd0IxZVJNQWEza1RBRjU1RXdCVWVSTUFSM2tUQURcXFxudDVFd0FxZVJNQUdIa1RBQXA1RXdEMGVCTUE2SGdUQU4xNEV3RFZlQk1BekhnVEFNRjRFd0MyZUJNQW4zZ1RBSk40RXdDSGVCTUFkWGdUXFxcbkFHMTRFd0JmZUJNQVUzZ1RBRVI0RXdBeGVCTUFKbmdUQU5SM0V3QVplQk1BRG5nVEFBbDRFd0Q4ZHhNQVNHRnphQ0IwWVdKc1pTQmpZWFxcXG5CaFkybDBlU0J2ZG1WeVpteHZkN1I4RXdBY0FBQUFMMk5oY21kdkwzSmxaMmx6ZEhKNUwzTnlZeTlwYm1SbGVDNWpjbUYwWlhNdWFXOHRcXFxuTm1ZeE4yUXlNbUppWVRFMU1EQXhaaTlvWVhOb1luSnZkMjR0TUM0eE15NHhMM055WXk5eVlYY3ZiVzlrTG5KejJId1RBRlFBQUFCYUFBXFxcbkFBS0FBQUFDRUJBQUFFQUFBQUJBQUFBQ0lCQUFBakFRQUFKQUVBQUNFQkFBQUVBQUFBQkFBQUFDVUJBQUJzYVdKeVlYSjVMMkZzYkc5alxcXG5MM055WXk5eVlYZGZkbVZqTG5KelkyRndZV05wZEhrZ2IzWmxjbVpzYjNjQUFBQ0FmUk1BRVFBQUFHUjlFd0FjQUFBQURBSUFBQVVBQUFcXFxuQmhJR1p2Y20xaGRIUnBibWNnZEhKaGFYUWdhVzF3YkdWdFpXNTBZWFJwYjI0Z2NtVjBkWEp1WldRZ1lXNGdaWEp5YjNJQUpnRUFBQUFBXFxcbkFBQUJBQUFBSndBQUFHeHBZbkpoY25rdllXeHNiMk12YzNKakwyWnRkQzV5Yy9COUV3QVlBQUFBWWdJQUFDQUFBQUJqWVd4c1pXUWdZRlxcXG5KbGMzVnNkRG82ZFc1M2NtRndLQ2xnSUc5dUlHRnVJR0JGY25KZ0lIWmhiSFZsQUNZQkFBQUFBQUFBQVFBQUFDY0JBQUJzYVdKeVlYSjVcXFxuTDJGc2JHOWpMM055WXk5emRISXVjbk5VZmhNQUdBQUFBSmdCQUFBdkFBQUFWSDRUQUJnQUFBQ1hBUUFBT3dBQUFPKy92V2x1ZG1Gc2FXXFxcblFnZFhSbUxUaHNhV0p5WVhKNUwyRnNiRzlqTDNOeVl5OXplVzVqTG5KekFBQUFuSDRUQUJrQUFBQmJBUUFBTWdBQUFITjNZWEJmY21WdFxcXG5iM1psSUdsdVpHVjRJQ2hwY3lBcElITm9iM1ZzWkNCaVpTQThJR3hsYmlBb2FYTWdLUUFBQU1oK0V3QVdBQUFBM240VEFCWUFBQUQwZmhcXFxuTUFBUUFBQUd4cFluSmhjbmt2WVd4c2IyTXZjM0pqTDNabFl5OXRiMlF1Y25NUWZ4TUFIQUFBQUhZRkFBQU5BQUFBS1NCemFHOTFiR1FnXFxcblltVWdQRDBnYkdWdUlDaHBjeUJ5WlcxdmRtRnNJR2x1WkdWNElDaHBjeUFBQUFCVGZ4TUFFZ0FBQU41K0V3QVdBQUFBOUg0VEFBRUFBQVxcXG5CZ1lYUmdJSE53YkdsMElHbHVaR1Y0SUNocGN5QUFBQUNBZnhNQUZRQUFBRHgvRXdBWEFBQUE5SDRUQUFFQUFBQVFmeE1BSEFBQUFESUlcXFxuQUFBTkFBQUFZbmwwWlhObGNuSnZjZ0FBSVFFQUFBUUFBQUFFQUFBQUtBRUFBRVp5YjIxVmRHWTRSWEp5YjNJQUFBQXBBUUFBREFBQUFBXFxcblFBQUFBcUFRQUFZWE56WlhKMGFXOXVJR1poYVd4bFpEb2daV1JsYkhSaElENDlJREJzYVdKeVlYSjVMMk52Y21VdmMzSmpMMjUxYlM5a1xcXG5hWGxmWm14dllYUXVjbk1BQUJtQUV3QWhBQUFBVEFBQUFBa0FBQUFaZ0JNQUlRQUFBRTRBQUFBSkFBQUFBZ0FBQUJRQUFBRElBQUFBMEFcXFxuY0FBQ0JPQUFCQURRTUFnSVFlQUFBdE1RRUF3dXNMQUpRMWR3QUF3Vy95aGlNQUFBQUFBSUh2cklWYlFXMHQ3Z1FBQUFBQUFBQUFBQUFBXFxcbkFSOXF2MlR0T0c3dGw2ZmE5UGsvNlFOUEdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFUNlZMZ21aM3dQOU9CVVBMK1IwSSt6MXo5TUkzQVxcXG5URTJyRE52QmwvTTZZREpoL3BUZ0lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWHd1bUZ1SDA3NXlcXFxubjluWWh5OFZFc1pRM210d2JrclBEOWlWMVc1eHNpYXdac2F0SkRZVkhWclRRandPVlA5andITlZ6QmZ2K1dYeUtMeFY5OGZjZ056dGJ2XFxcblRPNzl4ZjkxTUZBR3hwWW5KaGNua3ZZMjl5WlM5emNtTXZiblZ0TDJac2RESmtaV012YzNSeVlYUmxaM2t2WkhKaFoyOXVMbkp6WVhOelxcXG5aWEowYVc5dUlHWmhhV3hsWkRvZ1pDNXRZVzUwSUQ0Z01BQmNnUk1BTHdBQUFIVUFBQUFGQUFBQVlYTnpaWEowYVc5dUlHWmhhV3hsWkRcXFxub2daQzV0YVc1MWN5QStJREFBQUFCY2dSTUFMd0FBQUhZQUFBQUZBQUFBWVhOelpYSjBhVzl1SUdaaGFXeGxaRG9nWkM1d2JIVnpJRDRnXFxcbk1GeUJFd0F2QUFBQWR3QUFBQVVBQUFCaGMzTmxjblJwYjI0Z1ptRnBiR1ZrT2lCa0xtMWhiblF1WTJobFkydGxaRjloWkdRb1pDNXdiSFxcXG5WektTNXBjMTl6YjIxbEtDa0FBRnlCRXdBdkFBQUFlQUFBQUFVQUFBQmhjM05sY25ScGIyNGdabUZwYkdWa09pQmtMbTFoYm5RdVkyaGxcXFxuWTJ0bFpGOXpkV0lvWkM1dGFXNTFjeWt1YVhOZmMyOXRaU2dwQUZ5QkV3QXZBQUFBZVFBQUFBVUFBQUJoYzNObGNuUnBiMjRnWm1GcGJHXFxcblZrT2lCaWRXWXViR1Z1S0NrZ1BqMGdUVUZZWDFOSlIxOUVTVWRKVkZNQUFBQmNnUk1BTHdBQUFIb0FBQUFGQUFBQVhJRVRBQzhBQUFEQlxcXG5BQUFBQ1FBQUFGeUJFd0F2QUFBQStRQUFBRlFBQUFCY2dSTUFMd0FBQVBvQUFBQU5BQUFBWElFVEFDOEFBQUFCQVFBQU13QUFBRnlCRXdcXFxuQXZBQUFBQ2dFQUFBVUFBQUJjZ1JNQUx3QUFBQXNCQUFBRkFBQUFYSUVUQUM4QUFBQU1BUUFBQlFBQUFGeUJFd0F2QUFBQURRRUFBQVVBXFxcbkFBQmNnUk1BTHdBQUFBNEJBQUFGQUFBQVhJRVRBQzhBQUFCTEFRQUFId0FBQUZ5QkV3QXZBQUFBWlFFQUFBMEFBQUJjZ1JNQUx3QUFBSFxcXG5FQkFBQWtBQUFBWElFVEFDOEFBQUIyQVFBQVZBQUFBRnlCRXdBdkFBQUFnd0VBQURNQUFBQUFBQUFBMzBVYVBRUFBHdWJCKzh6K0FBQUFcXFxuQU1yR21zY1gvbkNyM1B2VS9nQUFBQUJQM0x5Ky9MRjMvL2I3M1A0QUFBQUFETlpyUWUrUlZyNFIvT1QrQUFBQUFEejhmNUN0SDlDTkxQXFxcbnpzL2dBQUFBQ0RtbFV4S0Z4UjAwYjg5UDRBQUFBQXRjbW1yWStzY1oxaC9QeitBQUFBQU11TDdpTjNJcHpxZS93RS93QUFBQUJ0VTNoQVxcXG5rVW5NcnBiOERQOEFBQUFBVjg2MlhYa1NQSUt4L0JUL0FBQUFBRGRXKzAwMmxCREN5L3djL3dBQUFBQlBtRWc0YitxV2tPYjhKUDhBQUFcXFxuQUF4enFDSmN1RmROY0EvU3ovQUFBQUFQU1h2NWZOejRhZ0cvMDAvd0FBQUFEbHJDb1htQW8wN3pYOVBQOEFBQUFBanJJMUt2dG5PTEpRXFxcbi9VVC9BQUFBQURzL3h0TGYxTWlFYS8xTS93QUFBQUM2emRNYUowVGR4WVg5VlA4QUFBQUFsc2tsdTg2ZmE1T2cvVnovQUFBQUFJU2xZblxcXG4wa2JLemJ1djFrL3dBQUFBRDIybDhOV0dhcm85WDliUDhBQUFBQUp2SEQzcFA0NHZQdi9YVC9BQUFBQUxpQS82cW9yYlcxQ3Y1OC93QUFcXFxuQUFDTFNueHNCVjlpaHlYK2hQOEFBQUFBVXpEQk5HRC92TWsvL296L0FBQUFBRlVtdXBHTWhVNldXdjZVL3dBQUFBQzlmaWx3SkhmNTMzXFxcblQrblA4QUFBQUFqN2psdUorOTM2YVAvcVQvQUFBQUFKUjlkSWpQWDZuNHFmNnMvd0FBQUFEUG02aVBrM0JFdWNUK3RQOEFBQUFBYXhVUFxcXG52L2p3Q0lyZi9yei9BQUFBQUxZeE1XVlZKYkROK2Y3RS93QUFBQUNzZjN2UXh1SS9tUlQvelA4QUFBQUFCanNyS3NRUVhPUXUvOVQvQUFcXFxuQUFBTk9TYzJtWkpDU3FTZi9jL3dBQUFBQU95Z0NEOHJXSC9XUC81UDhBQUFBQTZ4b1JrbVFJNWJ4Ky8rei9BQUFBQU15SVVHOEp6THlNXFxcbm1mLzAvd0FBQUFBc1pSbmlXQmUzMGJQLy9QOEFBQUFBQUFBQUFBQUFRSnpPL3dRQUFBQUFBQUFBQUFBUXBkVG82UDhNQUFBQUFBQUFBR1xcXG5Lc3hldDRyUU1BRkFBQUFBQUFoQW1VK0hnNVA0RWVBQndBQUFBQUFMTVZCOGw3enBmQU9BQWtBQUFBQUFCd1hPcDd6akorajFNQUxBQUFcXFxuQUFBQWFJRHBxNlE0MHRWdEFEUUFBQUFBQUVVaW1oY21KMCtmaUFBOEFBQUFBQUFuKzhUVU1hSmo3YUlBUkFBQUFBQUFxSzNJakRobDNyXFxcbkM5QUV3QUFBQUFBTnRscXhxT0NNZUQyQUJVQUFBQUFBQ2FIWEZDK1IxZHhQSUFYQUFBQUFBQVdPY2JwaXhwVFpJTkFXUUFBQUFBQU9xTlxcXG5jQnBrN2dIYUp3RnNBQUFBQUFCS2QrK2FtYU50b2tJQmRBQUFBQUFBaFd0OXRIdDRDZkpjQVh3QUFBQUFBSGNZM1htaDVGUzBkd0dFQUFcXFxuQUFBQURDeFp0YmtvWmJocElCakFBQUFBQUFQVjJXeU1WVE5jaXNBWlFBQUFBQUFMT2dsL3BjdENxVnh3R2NBQUFBQUFEalg2Q1p2WjlHXFxcbjN1RUJwQUFBQUFBQUpZdzUyelRDbTZYOEFhd0FBQUFBQUZ5Zm1LTnltc2IyRmdLMEFBQUFBQURPdnVsVVU3L2N0ekVDdkFBQUFBQUE0a1xcXG5FaThoZnovSWhNQXNRQUFBQUFBS1Y0WE5PYnppRE1aZ0xNQUFBQUFBRGZVeUY3ODFvV21JRUMxQUFBQUFBQU9qQWZsOXkxb09LYkF0d0FcXFxuQUFBQUFKYXo0MXhUMGRtb3RnTGtBQUFBQUFBOFJLZWsyWHliKzlBQzdBQUFBQUFBRUVTa3AweE1kcnZyQXZRQUFBQUFBQnFjUUxidmpxXFxcbnVMQmdQOEFBQUFBQUFzaEZlbUVPOGYwQ0FEQkFFQUFBQUFLVEdSNmVXa0VKczdBd3dCQUFBQUFKME1uS0g3bXhEblZRTVVBUUFBQUFBcFxcXG45RHRpMlNBb3JIQURIQUVBQUFBQWhjK25lbDVMUklDTEF5UUJBQUFBQUMzZHJBTkE1Q0cvcFFNc0FRQUFBQUNQLzBSZUw1eG5qc0FETkFcXFxuRUFBQUFBUWJpTW5KMFhNOVRhQXp3QkFBQUFBS2tiNDdTUzJ4bWU5UU5FQVFBQUFBRFpkOSs2YnIrVzZ3OEVUQUVBQUFBQWJHbGljbUZ5XFxcbmVTOWpiM0psTDNOeVl5OXVkVzB2Wm14ME1tUmxZeTl6ZEhKaGRHVm5lUzluY21semRTNXljd0FBMklnVEFDNEFBQUI5QUFBQUZRQUFBTlxcXG5pSUV3QXVBQUFBcVFBQUFBVUFBQURZaUJNQUxnQUFBS29BQUFBRkFBQUEySWdUQUM0QUFBQ3JBQUFBQlFBQUFOaUlFd0F1QUFBQXJBQUFcXFxuQUFVQUFBRFlpQk1BTGdBQUFLMEFBQUFGQUFBQTJJZ1RBQzRBQUFDdUFBQUFCUUFBQUdGemMyVnlkR2x2YmlCbVlXbHNaV1E2SUdRdWJXXFxcbkZ1ZENBcklHUXVjR3gxY3lBOElDZ3hJRHc4SURZeEtRQUFBTmlJRXdBdUFBQUFyd0FBQUFVQUFBRFlpQk1BTGdBQUFBb0JBQUFSQUFBQVxcXG5BQUFBQUFBQUFBQmhkSFJsYlhCMElIUnZJR1JwZG1sa1pTQmllU0I2WlhKdkFBQUEySWdUQUM0QUFBQU5BUUFBQ1FBQUFOaUlFd0F1QUFcXFxuQUFGZ0VBQUVJQUFBRFlpQk1BTGdBQUFFQUJBQUFKQUFBQVlYTnpaWEowYVc5dUlHWmhhV3hsWkRvZ0lXSjFaaTVwYzE5bGJYQjBlU2dwXFxcblkyRnNiR1ZrSUdCUGNIUnBiMjQ2T25WdWQzSmhjQ2dwWUNCdmJpQmhJR0JPYjI1bFlDQjJZV3gxWmRpSUV3QXVBQUFBM0FFQUFBVUFBQVxcXG5CaGMzTmxjblJwYjI0Z1ptRnBiR1ZrT2lCa0xtMWhiblFnUENBb01TQThQQ0EyTVNuWWlCTUFMZ0FBQU4wQkFBQUZBQUFBMklnVEFDNEFcXFxuQUFEZUFRQUFCUUFBQUFFQUFBQUtBQUFBWkFBQUFPZ0RBQUFRSndBQW9JWUJBRUJDRHdDQWxwZ0FBT0gxQlFES21qdllpQk1BTGdBQUFEXFxcbk1DQUFBUkFBQUEySWdUQUM0QUFBQTJBZ0FBQ1FBQUFOaUlFd0F1QUFBQWJBSUFBQWtBQUFEWWlCTUFMZ0FBQU13Q0FBQkhBQUFBMklnVFxcXG5BQzRBQUFEakFnQUFTd0FBQU5pSUV3QXVBQUFBN3dJQUFFY0FBQUJzYVdKeVlYSjVMMk52Y21VdmMzSmpMMjUxYlM5bWJIUXlaR1ZqTDJcXFxuMXZaQzV5Y3dCRWl4TUFJd0FBQUx3QUFBQUZBQUFBWVhOelpYSjBhVzl1SUdaaGFXeGxaRG9nWW5WbVd6QmRJRDRnWWx3bk1Gd25BQUFBXFxcblJJc1RBQ01BQUFDOUFBQUFCUUFBQUdGemMyVnlkR2x2YmlCbVlXbHNaV1E2SUhCaGNuUnpMbXhsYmlncElENDlJRFFBQUVTTEV3QWpBQVxcXG5BQXZnQUFBQVVBQUFBd0xpNHRLekJwYm1aT1lVNWhjM05sY25ScGIyNGdabUZwYkdWa09pQmlkV1l1YkdWdUtDa2dQajBnYldGNGJHVnVcXFxuQUFBQVJJc1RBQ01BQUFCL0FnQUFEUUFBQUdaeWIyMWZjM1J5WDNKaFpHbDRYMmx1ZERvZ2JYVnpkQ0JzYVdVZ2FXNGdkR2hsSUhKaGJtXFxcbmRsSUdCYk1pd2dNelpkWUNBdElHWnZkVzVrSUNTTUV3QThBQUFBYkdsaWNtRnllUzlqYjNKbEwzTnlZeTl1ZFcwdmJXOWtMbkp6QUdpTVxcXG5Fd0FiQUFBQW9nVUFBQVVBQUFBZ0tERWdQRHdnS2Z4L0V3QUFBQUFBbEl3VEFBY0FBQUNiakJNQUFRQUFBR3hwWW5KaGNua3ZZMjl5WlNcXFxuOXpjbU12Wm0xMEwyMXZaQzV5Y3k0dUFBQUF6NHdUQUFJQUFBQkNiM0p5YjNkTmRYUkZjbkp2Y2dBQS9IOFRBQUFBQUFEaWl4TUFBUUFBXFxcbkFPS0xFd0FCQUFBQTRvc1RBQUVBQUFBMkFRQUFCQUFBQUFRQUFBQTNBUUFBT0FFQUFEa0JBQUJqWVd4c1pXUWdZRkpsYzNWc2REbzZkV1xcXG41M2NtRndLQ2xnSUc5dUlHRnVJR0JGY25KZ0lIWmhiSFZsQURvQkFBQUFBQUFBQVFBQUFDY0FBQUJzYVdKeVlYSjVMMk52Y21VdmMzSmpcXFxuTDI1bGRDOXBjRjloWkdSeUxuSnpBR0NORXdBZkFBQUE1QU1BQUZRQUFBQnNhV0p5WVhKNUwyTnZjbVV2YzNKakwyNWxkQzlrYVhOd2JHXFxcbkY1WDJKMVptWmxjaTV5Y3dBQWtJMFRBQ1lBQUFBV0FBQUFPUUFBQVB4L0V3QUFBQUFBT2xzQUFQeC9Fd0FBQUFBQTBJMFRBQUVBQUFEUVxcXG5qUk1BQVFBQUFIQmhibWxqYTJWa0lHRjBJQ2NuTENENGpSTUFBUUFBQVBtTkV3QURBQUFBT2dFQUFBQUFBQUFCQUFBQU93RUFBR2x1WkdcXFxuVjRJRzkxZENCdlppQmliM1Z1WkhNNklIUm9aU0JzWlc0Z2FYTWdJR0oxZENCMGFHVWdhVzVrWlhnZ2FYTWdBQUFjamhNQUlBQUFBRHlPXFxcbkV3QVNBQUFBTmdFQUFBUUFBQUFFQUFBQVBBRUFBRzFoZEdOb1pYTWhQVDA5WVhOelpYSjBhVzl1SUdaaGFXeGxaRG9nWUNoc1pXWjBJQ1xcXG5CeWFXZG9kQ2xnQ2lBZ2JHVm1kRG9nWUdBc0NpQnlhV2RvZERvZ1lHQTZJQUFBQUh1T0V3QVpBQUFBbEk0VEFCSUFBQUNtamhNQURBQUFcXFxuQUxLT0V3QURBQUFBWUFBQUFIdU9Fd0FaQUFBQWxJNFRBQklBQUFDbWpoTUFEQUFBQU5pT0V3QUJBQUFBT2lBQUFQeC9Fd0FBQUFBQS9JXFxcbjRUQUFJQUFBQTJBUUFBREFBQUFBUUFBQUE5QVFBQVBnRUFBRDhCQUFBZ0lDQWdJSHNLTEFvc0lDQjdJSDBnZlNnS0tDd0tBQUEyQVFBQVxcXG5CQUFBQUFRQUFBQkFBUUFBWFd4cFluSmhjbmt2WTI5eVpTOXpjbU12Wm0xMEwyNTFiUzV5YzFHUEV3QWJBQUFBYVFBQUFCUUFBQUF3ZURcXFxuQXdNREV3TWpBek1EUXdOVEEyTURjd09EQTVNVEF4TVRFeU1UTXhOREUxTVRZeE56RTRNVGt5TURJeE1qSXlNekkwTWpVeU5qSTNNamd5XFxcbk9UTXdNekV6TWpNek16UXpOVE0yTXpjek9ETTVOREEwTVRReU5ETTBORFExTkRZME56UTRORGsxTURVeE5USTFNelUwTlRVMU5qVTNOVFxcXG5nMU9UWXdOakUyTWpZek5qUTJOVFkyTmpjMk9EWTVOekEzTVRjeU56TTNORGMxTnpZM056YzROems0TURneE9ESTRNemcwT0RVNE5qZzNcXFxuT0RnNE9Ua3dPVEU1TWprek9UUTVOVGsyT1RjNU9EazVBQUEyQVFBQUJBQUFBQVFBQUFCQkFRQUFRZ0VBQUVNQkFBQzBqQk1BR3dBQUFOXFxcbmdGQUFBZUFBQUFNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd1xcXG5NREF3TURBd01EQXdNREF3TUxTTUV3QWJBQUFBMGdVQUFDMEFBQUIwY25WbFptRnNjMlVBQUFDMGpCTUFHd0FBQUJRSkFBQWVBQUFBdElcXFxud1RBQnNBQUFBYkNRQUFGZ0FBQUd4cFluSmhjbmt2WTI5eVpTOXpjbU12YzJ4cFkyVXZiV1Z0WTJoeUxuSno3SkFUQUNBQUFBQ1JBQUFBXFxcbkdnQUFBT3lRRXdBZ0FBQUFyUUFBQUFVQUFBQnlZVzVuWlNCemRHRnlkQ0JwYm1SbGVDQWdiM1YwSUc5bUlISmhibWRsSUdadmNpQnpiR1xcXG5salpTQnZaaUJzWlc1bmRHZ2dMSkVUQUJJQUFBQStrUk1BSWdBQUFISmhibWRsSUdWdVpDQnBibVJsZUNCd2tSTUFFQUFBQUQ2UkV3QWlcXFxuQUFBQWMyeHBZMlVnYVc1a1pYZ2djM1JoY25SeklHRjBJQ0JpZFhRZ1pXNWtjeUJoZENBQWtKRVRBQllBQUFDbWtSTUFEUUFBQUdGMGRHXFxcblZ0Y0hSbFpDQjBieUJwYm1SbGVDQnpiR2xqWlNCMWNDQjBieUJ0WVhocGJYVnRJSFZ6YVhwbHhKRVRBQ3dBQUFCemIzVnlZMlVnYzJ4cFxcXG5ZMlVnYkdWdVozUm9JQ2dwSUdSdlpYTWdibTkwSUcxaGRHTm9JR1JsYzNScGJtRjBhVzl1SUhOc2FXTmxJR3hsYm1kMGFDQW8rSkVUQUJcXFxuVUFBQUFOa2hNQUt3QUFBSnVNRXdBQkFBQUFBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCXFxcbkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUVxcXG5FQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFcXFxuQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnXFxcbklDQWdJQ0FnSUNBZ0lEQXdNREF3TURBd01EQXdNREF3TURCQVFFQkFRQUFBQUFBQUFBQUFBQUFHbHVZMjl0Y0d4bGRHVWdkWFJtTFRnZ1xcXG5ZbmwwWlNCelpYRjFaVzVqWlNCbWNtOXRJR2x1WkdWNElBQUFVSk1UQUNvQUFBQnBiblpoYkdsa0lIVjBaaTA0SUhObGNYVmxibU5sSUdcXFxuOW1JQ0JpZVhSbGN5Qm1jbTl0SUdsdVpHVjRJSVNURXdBYUFBQUFucE1UQUJJQUFBQnNhV0p5WVhKNUwyTnZjbVV2YzNKakwzTjBjaTl3XFxcbllYUjBaWEp1TG5KekFNQ1RFd0FmQUFBQVFnVUFBQXdBQUFEQWt4TUFId0FBQUVJRkFBQWlBQUFBd0pNVEFCOEFBQUJXQlFBQU1BQUFBTVxcXG5DVEV3QWZBQUFBTlFZQUFCVUFBQURBa3hNQUh3QUFBR01HQUFBVkFBQUF3Sk1UQUI4QUFBQmtCZ0FBRlFBQUFBQmJMaTR1WFdKNWRHVWdcXFxuYVc1a1pYZ2dJR2x6SUc5MWRDQnZaaUJpYjNWdVpITWdiMllnWUFCR2xCTUFDd0FBQUZHVUV3QVdBQUFBMkk0VEFBRUFBQUJpWldkcGJpXFxcbkE4UFNCbGJtUWdLQ0E4UFNBcElIZG9aVzRnYzJ4cFkybHVaeUJnQUFDQWxCTUFEZ0FBQUk2VUV3QUVBQUFBa3BRVEFCQUFBQURZamhNQVxcXG5BUUFBQUNCcGN5QnViM1FnWVNCamFHRnlJR0p2ZFc1a1lYSjVPeUJwZENCcGN5QnBibk5wWkdVZ0lDaGllWFJsY3lBcElHOW1JR0JHbEJcXFxuTUFDd0FBQU1TVUV3QW1BQUFBNnBRVEFBZ0FBQUR5bEJNQUJnQUFBTmlPRXdBQkFBQUFiR2xpY21GeWVTOWpiM0psTDNOeVl5OXpkSEl2XFxcbmJXOWtMbkp6QUNDVkV3QWJBQUFBQndFQUFCMEFBQUJ2ZG1WeVpteHZkeUJwYmlCRWRYSmhkR2x2YmpvNmJtVjNBQUFBVEpVVEFCa0FBQVxcXG5Cc2FXSnlZWEo1TDJOdmNtVXZjM0pqTDNScGJXVXVjbk53bFJNQUdBQUFBTW9BQUFBVkFBQUFiM1psY21ac2IzY2dkMmhsYmlCemRXSjBcXFxuY21GamRHbHVaeUJrZFhKaGRHbHZibk1BY0pVVEFCZ0FBQUNpQXdBQUh3QUFBR3hwWW5KaGNua3ZZMjl5WlM5emNtTXZkVzVwWTI5a1pTXFxcbjl3Y21sdWRHRmliR1V1Y25NQUFBRE1sUk1BSlFBQUFBb0FBQUFjQUFBQXpKVVRBQ1VBQUFBYUFBQUFOZ0FBQUFBQkF3VUZCZ1lDQndZSVxcXG5Cd2tSQ2h3TEdRd2FEUkFPREE4RUVBTVNFaE1KRmdFWEJCZ0JHUU1hQnhzQkhBSWZGaUFES3dNdEN5NEJNQU14QWpJQnB3S3BBcW9FcXdcXFxuajZBdnNGL1FMK0EvOEpyWGg1aTQyaU1GZFlpNHlRSE4wT0QwdE0rL3d1THo5Y1hWL2loSTJPa1pLcHNicTd4Y2JKeXQ3azVmOEFCQkVTXFxcbktURTBOem83UFVsS1hZU09rcW14dExxN3hzck96K1RsQUFRTkRoRVNLVEUwT2p0RlJrbEtYbVJsaEpHYm5jbk96dzBSS1RvN1JVbFhXMVxcXG54ZVgyUmxqWkdwdExxN3hjbmY1T1h3RFJGRlNXUmxnSVN5dkw2LzFkZnc4WU9GaTZTbXZyL0Z4OC9hMjBpWXZjM0d6czlKVGs5WFdWNWZcXFxuaVk2UHNiYTN2OEhHeDljUkZoZGJYUGIzL3YrQWJYSGUzdzRmYm04Y0hWOTlmcTZ2Zjd1OEZoY2VIMFpIVGs5WVdseGVmbisxeGRUVjNQXFxcbkR4OVhKemozUjFsaVl1TDZldnQ3L0h6OWZmbWtDWG1EQ1BIOUxVenY5T1QxcGJCd2dQRUNjdjd1OXViemM5UDBKRmtKRlRaM1hJeWREUlxcXG4yTm5uL3Y4QUlGOGlndDhFZ2tRSUd3UUdFWUdzRG9DckJSOEpnUnNER1FnQkJDOEVOQVFIQXdFSEJnY1JDbEFQRWdkVkJ3TUVIQW9KQXdcXFxuZ0RCd01DQXdNRERBUUZBd3NHQVE0VkJVNEhHd2RYQndJR0Z3eFFCRU1ETFFNQkJCRUdEd3c2QkIwbFh5QnRCR29sZ01nRmdyQURHZ2FDXFxcbi9RTlpCeFlKR0FrVURCUU1hZ1lLQmhvR1dRY3JCVVlLTEFRTUJBRURNUXNzQkJvR0N3T0FyQVlLQmk4eFRRT0FwQWc4QXc4RFBBYzRDQ1xcXG5zRmd2OFJHQWd2RVMwRElROGhENENNQklLWEdRc1ZpSlFGTHdVN0J3SU9HQW1BdmlKMERJRFdHZ3dGZ1A4RmdOOE04cDBETndtQlhCU0FcXFxudUFpQXl3VUtHRHNEQ2dZNENFWUlEQVowQ3g0RFdnUlpDWUNER0J3S0ZnbE1CSUNLQnF1a0RCY0VNYUVFZ2RvbUJ3d0ZCWUNtRUlIMUJ3XFxcbkVnS2daTUJJQ05CSUMrQXhzRER3MEFCZ0VCQXdFRUFnVUhCd0lJQ0FrQ0NnVUxBZzRFRUFFUkFoSUZFeEVVQVJVQ0Z3SVpEUndGSFFnZlxcXG5BU1FCYWdSckFxOERzUUs4QXM4QzBRTFVETlVKMWdMWEF0b0I0QVhoQXVjRTZBTHVJUEFFK0FMNkEvc0JEQ2M3UGs1UGo1NmVuM3VMazVcXFxuYWlzcnFHc1FZSENUWTlQbGJ6ME5FRUZCZzJOMVpYZjZxdXI3MDE0QktIaVk2ZUJBME9FUklwTVRRNlJVWkpTazVQWkdWY3RyY2JIQWNJXFxcbkNnc1VGelk1T3FpcDJOa0pONUNScUFjS096NW1hWStTRVc5ZnYrN3ZXbUwwL1A5VFZKcWJMaThuS0ZXZG9LR2pwS2VvcmJxOHhBWUxEQlxcXG5VZE9qOUZVYWFuek0yZ0J4a2FJaVUrUCtmczcvL0Z4Z1FnSXlVbUtETTRPa2hLVEZCVFZWWllXbHhlWUdObFptdHplSDEvaXFTcXI3REFcXFxuMEs2dmJtKytrMTRpZXdVREJDMERaZ01CTHk2QWdoMERNUThjQkNRSkhnVXJCVVFFRGlxQXFnWWtCQ1FFS0FnMEMwNURnVGNKRmdvSUdEXFxcbnRGT1FOakNBa3dGZ1VoQXhzRkFVQTRCRXNGTHdRS0J3a0hRQ0FuQkF3Sk5nTTZCUm9IQkF3SFVFazNNdzB6Qnk0SUNvRW1Va3NyQ0NvV1xcXG5HaVljRkJjSlRnUWtDVVFOR1FjS0JrZ0lKd2wxQzBJK0tnWTdCUW9HVVFZQkJSQURCWUNMWWg1SUNBcUFwbDRpUlFzS0JnMFRPZ1lLTmlcXFxud0VGNEM1UEdSVERFZ0pDa1pGRzBnSVV3MUpCd3FBOWtZS0hRTkhTVGNERGdnS0Jqa0hDb0UyR1FjN0F4eFdBUTh5RFlPYlpuVUxnTVNLXFxcblRHTU5oREFRRm8rcWdrZWh1WUk1QnlvRVhBWW1Da1lLS0FVVGdyQmJaVXNFT1FjUlFBVUxBZzZYK0FpRTFpb0pvdWVCTXc4QkhRWU9CQVxcXG5pQmpJa0Vhd1VOQXdrSEVKSmdSd2wwUElEMkNuTUljQlZHZWhRTUZBeFhDUm1BaDRGSEE0VkNEeFdFVUI4R0JvRFZLd1UrSVFGd0xRTWFcXFxuQkFLQlFCOFJPZ1VCZ2RBcWd1YUE5eWxNQkFvRUFvTVJSRXc5Z01JOEJnRUVWUVViTkFLQkRpd0VaQXhXQ29DdU9CME5MQVFKQndJT0JvXFxcbkNhZzlnRUVRTU5BM2NFWHdZTUJBRVBEQVE0Q0FvR0tBZ2lUb0ZVREIwRENRYzJDQTRFQ1FjSkI0RExKUXFFQm14cFluSmhjbmt2WTI5eVxcXG5aUzl6Y21NdmRXNXBZMjlrWlM5MWJtbGpiMlJsWDJSaGRHRXVjbk13TVRJek5EVTJOemc1WVdKalpHVm1iR2xpY21GeWVTOWpiM0psTDNcXFxuTnlZeTlsYzJOaGNHVXVjbk1BQU1pYkV3QWFBQUFBTkFBQUFBVUFBQUJjZFhzQXlKc1RBQm9BQUFCaUFBQUFJd0FBQUd4cFluSmhjbmt2XFxcblkyOXlaUzl6Y21NdmJuVnRMMkpwWjI1MWJTNXljd0FBQ0p3VEFCNEFBQUNzQVFBQUFRQUFBR0Z6YzJWeWRHbHZiaUJtWVdsc1pXUTZJR1xcXG41dlltOXljbTkzWVhOelpYSjBhVzl1SUdaaGFXeGxaRG9nWkdsbmFYUnpJRHdnTkRCaGMzTmxjblJwYjI0Z1ptRnBiR1ZrT2lCdmRHaGxcXFxuY2lBK0lEQlRiMjFsVG05dVpRQUFOZ0VBQUFRQUFBQUVBQUFBTkFFQUFFVnljbTl5VlhSbU9FVnljbTl5ZG1Gc2FXUmZkWEJmZEc5bGNuXFxcbkp2Y2w5c1pXNEFBRFlCQUFBRUFBQUFCQUFBQUVRQkFBQ1FteE1BS0FBQUFGQUFBQUFvQUFBQWtKc1RBQ2dBQUFCY0FBQUFGZ0FBQUxBQ1xcXG5BQUJkRTZBQ0VoY2dJcjBmWUNKOExDQXdCVEJnTkJXZzREWDRwR0EzREthZ054Nzc0RGNBL3VCRC9RRmhSSUFISVVnQkN1RklKQTJoU2FcXFxuc09JVXN2R0dGTE94bGhXVEFjNFZuekhtRmRNRFFoWWZCcVlXSlBiK0ZpOEsraFk1MjhvV1FBejJGbFo5SGhaUURhWVdZQTRLRm5ydUloXFxcbmFldmtJV3ZRNktGcisvUGhhd0VBYm16d0FiOXNKd0VHQVFzQkl3RUJBVWNCQkFFQkFRUUJBZ0lBd0FRQ0JBRUpBZ0VCK3dmUEFRVUJNU1xcXG4wQkFRRUNBUUlCQVN3QkN3WUtDd0VCSXdFS0ZSQUJaUWdCQ2dFRUlRRUJBUjRiV3dzNkN3UUJBZ0VZR0NzRExBRUhBZ1lJS1RvM0FRRUJcXFxuQkFnRUFRTUhDZ0lOQVE4Qk9nRUVCQWdCRkFJYUFRSUNPUUVFQWdRQ0FnTURBUjRDQXdFTEFqa0JCQVVCQWdRQkZBSVdCZ0VCT2dFQ0FRXFxcbkVFQ0FFSEFnc0NIZ0U5QVF3Qk1nRURBVGNCQVFNRkF3RUVCd0lMQWgwQk9nRUNBUVlCQlFJVUFod0NPUUlFQkFnQkZBSWRBVWdCQndNQlxcXG5BVm9CQWdjTENXSUJBZ2tKQVFFSFNRSWJBUUVCQVFFM0RnRUZBUUlGQ3dFa0NRRm1CQUVHQVFJQ0Foa0NCQU1RQkEwQkFnSUdBUThCWGdcXFxuRUFBd0FESFFJZUFoNENRQUlCQndnQkFnc0RBUVVCTFFVekFVRUNJZ0YyQXdRQ0NRRUdBOXNDQWdFNkFRRUhBUUVCQVFJSUJnb0NBU2NCXFxcbkNCOHhCREFCQVFVQkFRVUJLQWtNQWlBRUFnSUJBemdCQVFJREFRRURPZ2dDQWtBR1VnTUJEUUVIQkFFR0FRTUNNajhOQVNKbEFBRUJBd1xcXG5zRERRTU5BdzBDREFVSUFnb0JBZ0VDQlRFRkFRb0JBUTBCRUEweklRQUNjUU45QVE4QllDQXZBUUFCSkFRREJRVUJYUVpkQXdBQkFBWUFcXFxuQVdJRUFRb0JBUndFVUFJT0lrNEJGd05uQXdNQ0NBRURBUVFCR1FJRkFaY0NHaElOQVNZSUdRc3VBekFCQWdRQ0FoRUJGUUpDQmdJQ0FnXFxcbklNQVFnQkl3RUxBVE1CQVFNQ0FnVUNBUUViQVE0Q0JRSUJBV1FGQ1FONUFRSUJCQUVBQVpNUkFCQURBUXdRSWdFQ0Fha0JCd0VHQVFzQlxcXG5Jd0VCQVM4QkxRSkRBUlVEQUFIaUFaVUZBQVlCS2dFSkFBTUJBZ1VFS0FNRUFhVUNBQVFBQWxBRFJnc3hCSHNCTmc4cEFRSUNDZ014QkFcXFxuSUNBZ0VFQVFvQk1nTWtCUUVJUGdFTUFqUUpDZ1FDQVY4REFnRUJBZ1lCQWdHZEFRTUlGUUk1QWdNQkpRY0RCY01JQWdNQkFSY0JWQVlCXFxcbkFRUUNBUUx1QkFZQ0FRSWJBbFVJQWdFQkFtb0JBUUVDQmdFQlpRTUNCQUVGQUFrQkFnQUNBUUVFQVpBRUFnSUVBU0FLS0FZQ0JBZ0JDUVxcXG5ZQ0F5NE5BUUlBQndFR0FRRlNGZ0lIQVFJQkFub0dBd0VCQWdFSEFRRklBZ01CQVFFQUFnc0NOQVVGQVFFQkFCRUdEd0FGT3djSkJBQUJcXFxuUHhGQUFnRUNBQVFCQndFQ0FBSUJCQUF1QWhjQUF3a1FBZ2NlQkpRREFEY0VNZ2dCRGdFV0JRRVBBQWNCRVFJSEFRSUJCUVUrSVFHZ0RnXFxcbkFCUFFRQUJRQUhiUWdBQlFBQkhtQ0E4QUFBb0JBQUFLQVQ0QWFBSENBSUZoK2dDTFlrd0FrQUxDQVRRS1pnRXpDcjRCUUErMkFYSWY4Z1xcXG5HQUFFb1JpQUJ5RVpnQXpoRzZBWTRSeEFibUVkQU5TaEhhYlc0UjBBMzRFaU1PQmhKUURwSVNZdzhXRW1pdkd5SmtFYUJob3ZBUW9CQkFcXFxuRUZGd0VmQWNNQkJBVFFBU1FIQWg0RllBRXFCQUlDQWdRQkFRWUJBUU1CQVFFVUFWTUJpd2ltQVNZSktRQW1BUUVGQVFJckFRUUFWZ0lHXFxcbkFBa0hLd0lEUU1CQUFBSUdBaVlDQmdJSUFRRUJBUUVCQVI4Q05RRUhBUUVEQXdFSEF3UUNCZ1FOQlFNQkIzUUJEUUVRRFdVQkJBRUNDZ1xcXG5FQkF3VUdBUUVCQVFFQkJBRUdCQUVDQkFVRkJBRVJJQU1DQURRQTVRWUVBd0lNSmdFQkJRRUFMaEllaEdZREJBRTdCUUlCQVFFRkdBVUJcXFxuQXdBckFRNEdVQUFIREFVQUdnWWFBRkJnSkFRa2RBc0JEd0VIQVFJQkN3RVBBUWNCQWdBQkFnTUJLZ0VKQURNTk13QkFBRUFBVlFGSEFRXFxcbklDQVFJQ0FnUUJEQUVCQVFjQlFRRUVBZ2dCQndFY0FRUUJCUUVCQXdjQkFBSVpBUmtCSHdFWkFSOEJHUUVmQVJrQkh3RVpBUWdBQ2dFVVxcXG5CZ1lBUGdCRUFCb0dHZ1lhQUFBQUF3QUFnd1FnQUpFRllBQmRFNkFBRWhjZ0h3d2dZQi92TEtBcktqQWdMRyttNEN3Q3FHQXRIdnRnTGdcXFxuRCtJRGFlLzJBMi9RSGhOZ0VLSVRja0RlRTNxdzVoT1M4WW9Ua3dIR0ZJOHg2aFRFQTBZVkR3YXFGUlQyOGhVcDI4b1ZJQXoyRlRaZEdoXFxcblV3RGFJVlFBNE9GVnJ1SmhWK3prSVZuUTZLRlpJQUR1V2ZBQmYxb0FjQUFIQUMwQkFRRUNBUUlCQVVnTE1CVVFBV1VIQWdZQ0FnRUVJd1xcXG5FZUcxc0xPZ2tKQVJnRUFRa0JBd0VGS3dNOENDb1lBU0EzQVFFQkJBZ0VBUU1IQ2dJZEFUb0JBUUVDQkFnQkNRRUtBaG9CQWdJNUFRUUNcXFxuQkFJQ0F3TUJIZ0lEQVFzQ09RRUVCUUVDQkFFVUFoWUdBUUU2QVFFQ0FRUUlBUWNEQ2dJZUFUc0JBUUVNQVFrQktBRURBVGNCQVFNRkF3XFxcbkVFQndJTEFoMEJPZ0VDQVFJQkF3RUZBZ2NDQ3dJY0Fqa0NBUUVDQkFnQkNRRUtBaDBCU0FFRUFRSURBUUVJQVZFQkFnY01DR0lCQWdrTFxcXG5CMGtDR3dFQkFRRUJOdzRCQlFFQ0JRc0JKQWtCWmdRQkJnRUNBZ0laQWdRREVBUU5BUUlDQmdFUEFRQURBQU1kQWg0Q0hnSkFBZ0VIQ0FcXFxuRUNDd2tCTFFNQkFYVUNJZ0YyQXdRQ0NRRUdBOXNDQWdFNkFRRUhBUUVCQVFJSUJnb0NBVEFmTVFRd0J3RUJCUUVvQ1F3Q0lBUUNBZ0VEXFxcbk9BRUJBZ01CQVFNNkNBSUNtQU1CRFFFSEJBRUdBUU1DeGtBQUFjTWhBQU9OQVdBZ0FBWnBBZ0FFQVFvZ0FsQUNBQUVEQVFRQkdRSUZBWlxcXG5jQ0doSU5BU1lJR1FzdUF6QUJBZ1FDQWljQlF3WUNBZ0lDREFFSUFTOEJNd0VCQXdJQ0JRSUJBU29DQ0FIdUFRSUJCQUVBQVFBUUVCQUFcXFxuQWdBQjRnR1ZCUUFEQVFJRkJDZ0RCQUdsQWdBRUFBSlFBMFlMTVFSN0FUWVBLUUVDQWdvRE1RUUNBZ2NCUFFNa0JRRUlQZ0VNQWpRSkNnXFxcblFDQVY4REFnRUJBZ1lCQWdHZEFRTUlGUUk1QWdFQkFRRVdBUTRIQXdYRENBSURBUUVYQVZFQkFnWUJBUUlCQVFJQkF1c0JBZ1FHQWdFQ1xcXG5Hd0pWQ0FJQkFRSnFBUUVCQWdZQkFXVURBZ1FCQlFBSkFRTDFBUW9DQVFFRUFaQUVBZ0lFQVNBS0tBWUNCQWdCQ1FZQ0F5NE5BUUlBQndcXFxuRUdBUUZTRmdJSEFRSUJBbm9HQXdFQkFnRUhBUUZJQWdNQkFRRUFBZ3NDTkFVRkFRRUJBQUVHRHdBRk93Y0FBVDhFVVFFQUFnQXVBaGNBXFxcbkFRRURCQVVJQ0FJSEhnU1VBd0EzQkRJSUFRNEJGZ1VCRHdBSEFSRUNCd0VDQVFWa0FhQUhBQUU5QkFBRUFBZHRCd0JnZ1BBQUFnSUNBZ1xcXG5JQ0FnSUNBd01CQVFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFJQ0FBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFcXFxuQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBXFxcbkFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVxcXG5BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFcXFxuQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREFBQUFBNEFBQUFNRUFBQURoQUFBQXdnQUFBT0lBQUFEREFBQUE0d0FBQU1RQUFBRGtBQUFBXFxcbnhRQUFBT1VBQUFER0FBQUE1Z0FBQU1jQUFBRG5BQUFBeUFBQUFPZ0FBQURKQUFBQTZRQUFBTW9BQUFEcUFBQUF5d0FBQU9zQUFBRE1BQVxcXG5BQTdBQUFBTTBBQUFEdEFBQUF6Z0FBQU80QUFBRFBBQUFBN3dBQUFOQUFBQUR3QUFBQTBRQUFBUEVBQUFEU0FBQUE4Z0FBQU5NQUFBRHpcXFxuQUFBQTFBQUFBUFFBQUFEVkFBQUE5UUFBQU5ZQUFBRDJBQUFBMkFBQUFQZ0FBQURaQUFBQStRQUFBTm9BQUFENkFBQUEyd0FBQVBzQUFBXFxcbkRjQUFBQS9BQUFBTjBBQUFEOUFBQUEzZ0FBQVA0QUFBQUFBUUFBQVFFQUFBSUJBQUFEQVFBQUJBRUFBQVVCQUFBR0FRQUFCd0VBQUFnQlxcXG5BQUFKQVFBQUNnRUFBQXNCQUFBTUFRQUFEUUVBQUE0QkFBQVBBUUFBRUFFQUFCRUJBQUFTQVFBQUV3RUFBQlFCQUFBVkFRQUFGZ0VBQUJcXFxuY0JBQUFZQVFBQUdRRUFBQm9CQUFBYkFRQUFIQUVBQUIwQkFBQWVBUUFBSHdFQUFDQUJBQUFoQVFBQUlnRUFBQ01CQUFBa0FRQUFKUUVBXFxcbkFDWUJBQUFuQVFBQUtBRUFBQ2tCQUFBcUFRQUFLd0VBQUN3QkFBQXRBUUFBTGdFQUFDOEJBQUF3QVFBQUFBQkFBRElCQUFBekFRQUFOQVxcXG5FQUFEVUJBQUEyQVFBQU53RUFBRGtCQUFBNkFRQUFPd0VBQUR3QkFBQTlBUUFBUGdFQUFEOEJBQUJBQVFBQVFRRUFBRUlCQUFCREFRQUFcXFxuUkFFQUFFVUJBQUJHQVFBQVJ3RUFBRWdCQUFCS0FRQUFTd0VBQUV3QkFBQk5BUUFBVGdFQUFFOEJBQUJRQVFBQVVRRUFBRklCQUFCVEFRXFxcbkFBVkFFQUFGVUJBQUJXQVFBQVZ3RUFBRmdCQUFCWkFRQUFXZ0VBQUZzQkFBQmNBUUFBWFFFQUFGNEJBQUJmQVFBQVlBRUFBR0VCQUFCaVxcXG5BUUFBWXdFQUFHUUJBQUJsQVFBQVpnRUFBR2NCQUFCb0FRQUFhUUVBQUdvQkFBQnJBUUFBYkFFQUFHMEJBQUJ1QVFBQWJ3RUFBSEFCQUFcXFxuQnhBUUFBY2dFQUFITUJBQUIwQVFBQWRRRUFBSFlCQUFCM0FRQUFlQUVBQVA4QUFBQjVBUUFBZWdFQUFIc0JBQUI4QVFBQWZRRUFBSDRCXFxcbkFBQ0JBUUFBVXdJQUFJSUJBQUNEQVFBQWhBRUFBSVVCQUFDR0FRQUFWQUlBQUljQkFBQ0lBUUFBaVFFQUFGWUNBQUNLQVFBQVZ3SUFBSVxcXG5zQkFBQ01BUUFBamdFQUFOMEJBQUNQQVFBQVdRSUFBSkFCQUFCYkFnQUFrUUVBQUpJQkFBQ1RBUUFBWUFJQUFKUUJBQUJqQWdBQWxnRUFcXFxuQUdrQ0FBQ1hBUUFBYUFJQUFKZ0JBQUNaQVFBQW5BRUFBRzhDQUFDZEFRQUFjZ0lBQUo4QkFBQjFBZ0FBb0FFQUFLRUJBQUNpQVFBQW93XFxcbkVBQUtRQkFBQ2xBUUFBcGdFQUFJQUNBQUNuQVFBQXFBRUFBS2tCQUFDREFnQUFyQUVBQUswQkFBQ3VBUUFBaUFJQUFLOEJBQUN3QVFBQVxcXG5zUUVBQUlvQ0FBQ3lBUUFBaXdJQUFMTUJBQUMwQVFBQXRRRUFBTFlCQUFDM0FRQUFrZ0lBQUxnQkFBQzVBUUFBdkFFQUFMMEJBQURFQVFcXFxuQUF4Z0VBQU1VQkFBREdBUUFBeHdFQUFNa0JBQURJQVFBQXlRRUFBTW9CQUFETUFRQUF5d0VBQU13QkFBRE5BUUFBemdFQUFNOEJBQURRXFxcbkFRQUEwUUVBQU5JQkFBRFRBUUFBMUFFQUFOVUJBQURXQVFBQTF3RUFBTmdCQUFEWkFRQUEyZ0VBQU5zQkFBRGNBUUFBM2dFQUFOOEJBQVxcXG5EZ0FRQUE0UUVBQU9JQkFBRGpBUUFBNUFFQUFPVUJBQURtQVFBQTV3RUFBT2dCQUFEcEFRQUE2Z0VBQU9zQkFBRHNBUUFBN1FFQUFPNEJcXFxuQUFEdkFRQUE4UUVBQVBNQkFBRHlBUUFBOHdFQUFQUUJBQUQxQVFBQTlnRUFBSlVCQUFEM0FRQUF2d0VBQVBnQkFBRDVBUUFBK2dFQUFQXFxcbnNCQUFEOEFRQUEvUUVBQVA0QkFBRC9BUUFBQUFJQUFBRUNBQUFDQWdBQUF3SUFBQVFDQUFBRkFnQUFCZ0lBQUFjQ0FBQUlBZ0FBQ1FJQVxcXG5BQW9DQUFBTEFnQUFEQUlBQUEwQ0FBQU9BZ0FBRHdJQUFCQUNBQUFSQWdBQUVnSUFBQk1DQUFBVUFnQUFGUUlBQUJZQ0FBQVhBZ0FBR0FcXFxuSUFBQmtDQUFBYUFnQUFHd0lBQUJ3Q0FBQWRBZ0FBSGdJQUFCOENBQUFnQWdBQW5nRUFBQ0lDQUFBakFnQUFKQUlBQUNVQ0FBQW1BZ0FBXFxcbkp3SUFBQ2dDQUFBcEFnQUFLZ0lBQUNzQ0FBQXNBZ0FBTFFJQUFDNENBQUF2QWdBQU1BSUFBREVDQUFBeUFnQUFNd0lBQURvQ0FBQmxMQVxcXG5BQU93SUFBRHdDQUFBOUFnQUFtZ0VBQUQ0Q0FBQm1MQUFBUVFJQUFFSUNBQUJEQWdBQWdBRUFBRVFDQUFDSkFnQUFSUUlBQUl3Q0FBQkdcXFxuQWdBQVJ3SUFBRWdDQUFCSkFnQUFTZ0lBQUVzQ0FBQk1BZ0FBVFFJQUFFNENBQUJQQWdBQWNBTUFBSEVEQUFCeUF3QUFjd01BQUhZREFBXFxcbkIzQXdBQWZ3TUFBUE1EQUFDR0F3QUFyQU1BQUlnREFBQ3RBd0FBaVFNQUFLNERBQUNLQXdBQXJ3TUFBSXdEQUFETUF3QUFqZ01BQU0wRFxcXG5BQUNQQXdBQXpnTUFBSkVEQUFDeEF3QUFrZ01BQUxJREFBQ1RBd0FBc3dNQUFKUURBQUMwQXdBQWxRTUFBTFVEQUFDV0F3QUF0Z01BQUpcXFxuY0RBQUMzQXdBQW1BTUFBTGdEQUFDWkF3QUF1UU1BQUpvREFBQzZBd0FBbXdNQUFMc0RBQUNjQXdBQXZBTUFBSjBEQUFDOUF3QUFuZ01BXFxcbkFMNERBQUNmQXdBQXZ3TUFBS0FEQUFEQUF3QUFvUU1BQU1FREFBQ2pBd0FBd3dNQUFLUURBQURFQXdBQXBRTUFBTVVEQUFDbUF3QUF4Z1xcXG5NQUFLY0RBQURIQXdBQXFBTUFBTWdEQUFDcEF3QUF5UU1BQUtvREFBREtBd0FBcXdNQUFNc0RBQURQQXdBQTF3TUFBTmdEQUFEWkF3QUFcXFxuMmdNQUFOc0RBQURjQXdBQTNRTUFBTjREQUFEZkF3QUE0QU1BQU9FREFBRGlBd0FBNHdNQUFPUURBQURsQXdBQTVnTUFBT2NEQUFEb0F3XFxcbkFBNlFNQUFPb0RBQURyQXdBQTdBTUFBTzBEQUFEdUF3QUE3d01BQVBRREFBQzRBd0FBOXdNQUFQZ0RBQUQ1QXdBQThnTUFBUG9EQUFEN1xcXG5Bd0FBL1FNQUFIc0RBQUQrQXdBQWZBTUFBUDhEQUFCOUF3QUFBQVFBQUZBRUFBQUJCQUFBVVFRQUFBSUVBQUJTQkFBQUF3UUFBRk1FQUFcXFxuQUVCQUFBVkFRQUFBVUVBQUJWQkFBQUJnUUFBRllFQUFBSEJBQUFWd1FBQUFnRUFBQllCQUFBQ1FRQUFGa0VBQUFLQkFBQVdnUUFBQXNFXFxcbkFBQmJCQUFBREFRQUFGd0VBQUFOQkFBQVhRUUFBQTRFQUFCZUJBQUFEd1FBQUY4RUFBQVFCQUFBTUFRQUFCRUVBQUF4QkFBQUVnUUFBRFxcXG5JRUFBQVRCQUFBTXdRQUFCUUVBQUEwQkFBQUZRUUFBRFVFQUFBV0JBQUFOZ1FBQUJjRUFBQTNCQUFBR0FRQUFEZ0VBQUFaQkFBQU9RUUFcXFxuQUJvRUFBQTZCQUFBR3dRQUFEc0VBQUFjQkFBQVBBUUFBQjBFQUFBOUJBQUFIZ1FBQUQ0RUFBQWZCQUFBUHdRQUFDQUVBQUJBQkFBQUlRXFxcblFBQUVFRUFBQWlCQUFBUWdRQUFDTUVBQUJEQkFBQUpBUUFBRVFFQUFBbEJBQUFSUVFBQUNZRUFBQkdCQUFBSndRQUFFY0VBQUFvQkFBQVxcXG5TQVFBQUNrRUFBQkpCQUFBS2dRQUFFb0VBQUFyQkFBQVN3UUFBQ3dFQUFCTUJBQUFMUVFBQUUwRUFBQXVCQUFBVGdRQUFDOEVBQUJQQkFcXFxuQUFZQVFBQUdFRUFBQmlCQUFBWXdRQUFHUUVBQUJsQkFBQVpnUUFBR2NFQUFCb0JBQUFhUVFBQUdvRUFBQnJCQUFBYkFRQUFHMEVBQUJ1XFxcbkJBQUFid1FBQUhBRUFBQnhCQUFBY2dRQUFITUVBQUIwQkFBQWRRUUFBSFlFQUFCM0JBQUFlQVFBQUhrRUFBQjZCQUFBZXdRQUFId0VBQVxcXG5COUJBQUFmZ1FBQUg4RUFBQ0FCQUFBZ1FRQUFJb0VBQUNMQkFBQWpBUUFBSTBFQUFDT0JBQUFqd1FBQUpBRUFBQ1JCQUFBa2dRQUFKTUVcXFxuQUFDVUJBQUFsUVFBQUpZRUFBQ1hCQUFBbUFRQUFKa0VBQUNhQkFBQW13UUFBSndFQUFDZEJBQUFuZ1FBQUo4RUFBQ2dCQUFBb1FRQUFLXFxcbklFQUFDakJBQUFwQVFBQUtVRUFBQ21CQUFBcHdRQUFLZ0VBQUNwQkFBQXFnUUFBS3NFQUFDc0JBQUFyUVFBQUs0RUFBQ3ZCQUFBc0FRQVxcXG5BTEVFQUFDeUJBQUFzd1FBQUxRRUFBQzFCQUFBdGdRQUFMY0VBQUM0QkFBQXVRUUFBTG9FQUFDN0JBQUF2QVFBQUwwRUFBQytCQUFBdndcXFxuUUFBTUFFQUFEUEJBQUF3UVFBQU1JRUFBRERCQUFBeEFRQUFNVUVBQURHQkFBQXh3UUFBTWdFQUFESkJBQUF5Z1FBQU1zRUFBRE1CQUFBXFxcbnpRUUFBTTRFQUFEUUJBQUEwUVFBQU5JRUFBRFRCQUFBMUFRQUFOVUVBQURXQkFBQTF3UUFBTmdFQUFEWkJBQUEyZ1FBQU5zRUFBRGNCQVxcXG5BQTNRUUFBTjRFQUFEZkJBQUE0QVFBQU9FRUFBRGlCQUFBNHdRQUFPUUVBQURsQkFBQTVnUUFBT2NFQUFEb0JBQUE2UVFBQU9vRUFBRHJcXFxuQkFBQTdBUUFBTzBFQUFEdUJBQUE3d1FBQVBBRUFBRHhCQUFBOGdRQUFQTUVBQUQwQkFBQTlRUUFBUFlFQUFEM0JBQUErQVFBQVBrRUFBXFxcbkQ2QkFBQSt3UUFBUHdFQUFEOUJBQUEvZ1FBQVA4RUFBQUFCUUFBQVFVQUFBSUZBQUFEQlFBQUJBVUFBQVVGQUFBR0JRQUFCd1VBQUFnRlxcXG5BQUFKQlFBQUNnVUFBQXNGQUFBTUJRQUFEUVVBQUE0RkFBQVBCUUFBRUFVQUFCRUZBQUFTQlFBQUV3VUFBQlFGQUFBVkJRQUFGZ1VBQUJcXFxuY0ZBQUFZQlFBQUdRVUFBQm9GQUFBYkJRQUFIQVVBQUIwRkFBQWVCUUFBSHdVQUFDQUZBQUFoQlFBQUlnVUFBQ01GQUFBa0JRQUFKUVVBXFxcbkFDWUZBQUFuQlFBQUtBVUFBQ2tGQUFBcUJRQUFLd1VBQUN3RkFBQXRCUUFBTGdVQUFDOEZBQUF4QlFBQVlRVUFBRElGQUFCaUJRQUFNd1xcXG5VQUFHTUZBQUEwQlFBQVpBVUFBRFVGQUFCbEJRQUFOZ1VBQUdZRkFBQTNCUUFBWndVQUFEZ0ZBQUJvQlFBQU9RVUFBR2tGQUFBNkJRQUFcXFxuYWdVQUFEc0ZBQUJyQlFBQVBBVUFBR3dGQUFBOUJRQUFiUVVBQUQ0RkFBQnVCUUFBUHdVQUFHOEZBQUJBQlFBQWNBVUFBRUVGQUFCeEJRXFxcbkFBUWdVQUFISUZBQUJEQlFBQWN3VUFBRVFGQUFCMEJRQUFSUVVBQUhVRkFBQkdCUUFBZGdVQUFFY0ZBQUIzQlFBQVNBVUFBSGdGQUFCSlxcXG5CUUFBZVFVQUFFb0ZBQUI2QlFBQVN3VUFBSHNGQUFCTUJRQUFmQVVBQUUwRkFBQjlCUUFBVGdVQUFINEZBQUJQQlFBQWZ3VUFBRkFGQUFcXFxuQ0FCUUFBVVFVQUFJRUZBQUJTQlFBQWdnVUFBRk1GQUFDREJRQUFWQVVBQUlRRkFBQlZCUUFBaFFVQUFGWUZBQUNHQlFBQW9CQUFBQUF0XFxcbkFBQ2hFQUFBQVMwQUFLSVFBQUFDTFFBQW94QUFBQU10QUFDa0VBQUFCQzBBQUtVUUFBQUZMUUFBcGhBQUFBWXRBQUNuRUFBQUJ5MEFBS1xcXG5nUUFBQUlMUUFBcVJBQUFBa3RBQUNxRUFBQUNpMEFBS3NRQUFBTExRQUFyQkFBQUF3dEFBQ3RFQUFBRFMwQUFLNFFBQUFPTFFBQXJ4QUFcXFxuQUE4dEFBQ3dFQUFBRUMwQUFMRVFBQUFSTFFBQXNoQUFBQkl0QUFDekVBQUFFeTBBQUxRUUFBQVVMUUFBdFJBQUFCVXRBQUMyRUFBQUZpXFxcbjBBQUxjUUFBQVhMUUFBdUJBQUFCZ3RBQUM1RUFBQUdTMEFBTG9RQUFBYUxRQUF1eEFBQUJzdEFBQzhFQUFBSEMwQUFMMFFBQUFkTFFBQVxcXG52aEFBQUI0dEFBQy9FQUFBSHkwQUFNQVFBQUFnTFFBQXdSQUFBQ0V0QUFEQ0VBQUFJaTBBQU1NUUFBQWpMUUFBeEJBQUFDUXRBQURGRUFcXFxuQUFKUzBBQU1jUUFBQW5MUUFBelJBQUFDMHRBQUNnRXdBQWNLc0FBS0VUQUFCeHF3QUFvaE1BQUhLckFBQ2pFd0FBYzZzQUFLUVRBQUIwXFxcbnF3QUFwUk1BQUhXckFBQ21Fd0FBZHFzQUFLY1RBQUIzcXdBQXFCTUFBSGlyQUFDcEV3QUFlYXNBQUtvVEFBQjZxd0FBcXhNQUFIdXJBQVxcXG5Dc0V3QUFmS3NBQUswVEFBQjlxd0FBcmhNQUFINnJBQUN2RXdBQWY2c0FBTEFUQUFDQXF3QUFzUk1BQUlHckFBQ3lFd0FBZ3FzQUFMTVRcXFxuQUFDRHF3QUF0Qk1BQUlTckFBQzFFd0FBaGFzQUFMWVRBQUNHcXdBQXR4TUFBSWVyQUFDNEV3QUFpS3NBQUxrVEFBQ0pxd0FBdWhNQUFJXFxcbnFyQUFDN0V3QUFpNnNBQUx3VEFBQ01xd0FBdlJNQUFJMnJBQUMrRXdBQWpxc0FBTDhUQUFDUHF3QUF3Qk1BQUpDckFBREJFd0FBa2FzQVxcXG5BTUlUQUFDU3F3QUF3eE1BQUpPckFBREVFd0FBbEtzQUFNVVRBQUNWcXdBQXhoTUFBSmFyQUFESEV3QUFsNnNBQU1nVEFBQ1lxd0FBeVJcXFxuTUFBSm1yQUFES0V3QUFtcXNBQU1zVEFBQ2Jxd0FBekJNQUFKeXJBQURORXdBQW5hc0FBTTRUQUFDZXF3QUF6eE1BQUorckFBRFFFd0FBXFxcbm9Lc0FBTkVUQUFDaHF3QUEwaE1BQUtLckFBRFRFd0FBbzZzQUFOUVRBQUNrcXdBQTFSTUFBS1dyQUFEV0V3QUFwcXNBQU5jVEFBQ25xd1xcXG5BQTJCTUFBS2lyQUFEWkV3QUFxYXNBQU5vVEFBQ3Fxd0FBMnhNQUFLdXJBQURjRXdBQXJLc0FBTjBUQUFDdHF3QUEzaE1BQUs2ckFBRGZcXFxuRXdBQXI2c0FBT0FUQUFDd3F3QUE0Uk1BQUxHckFBRGlFd0FBc3FzQUFPTVRBQUN6cXdBQTVCTUFBTFNyQUFEbEV3QUF0YXNBQU9ZVEFBXFxcbkMycXdBQTV4TUFBTGVyQUFEb0V3QUF1S3NBQU9rVEFBQzVxd0FBNmhNQUFMcXJBQURyRXdBQXU2c0FBT3dUQUFDOHF3QUE3Uk1BQUwyclxcXG5BQUR1RXdBQXZxc0FBTzhUQUFDL3F3QUE4Qk1BQVBnVEFBRHhFd0FBK1JNQUFQSVRBQUQ2RXdBQTh4TUFBUHNUQUFEMEV3QUEvQk1BQVBcXFxuVVRBQUQ5RXdBQWtCd0FBTkFRQUFDUkhBQUEwUkFBQUpJY0FBRFNFQUFBa3h3QUFOTVFBQUNVSEFBQTFCQUFBSlVjQUFEVkVBQUFsaHdBXFxcbkFOWVFBQUNYSEFBQTF4QUFBSmdjQUFEWUVBQUFtUndBQU5rUUFBQ2FIQUFBMmhBQUFKc2NBQURiRUFBQW5Cd0FBTndRQUFDZEhBQUEzUlxcXG5BQUFKNGNBQURlRUFBQW54d0FBTjhRQUFDZ0hBQUE0QkFBQUtFY0FBRGhFQUFBb2h3QUFPSVFBQUNqSEFBQTR4QUFBS1FjQUFEa0VBQUFcXFxucFJ3QUFPVVFBQUNtSEFBQTVoQUFBS2NjQUFEbkVBQUFxQndBQU9nUUFBQ3BIQUFBNlJBQUFLb2NBQURxRUFBQXF4d0FBT3NRQUFDc0hBXFxcbkFBN0JBQUFLMGNBQUR0RUFBQXJod0FBTzRRQUFDdkhBQUE3eEFBQUxBY0FBRHdFQUFBc1J3QUFQRVFBQUN5SEFBQThoQUFBTE1jQUFEelxcXG5FQUFBdEJ3QUFQUVFBQUMxSEFBQTlSQUFBTFljQUFEMkVBQUF0eHdBQVBjUUFBQzRIQUFBK0JBQUFMa2NBQUQ1RUFBQXVod0FBUG9RQUFcXFxuQzlIQUFBL1JBQUFMNGNBQUQrRUFBQXZ4d0FBUDhRQUFBQUhnQUFBUjRBQUFJZUFBQURIZ0FBQkI0QUFBVWVBQUFHSGdBQUJ4NEFBQWdlXFxcbkFBQUpIZ0FBQ2g0QUFBc2VBQUFNSGdBQURSNEFBQTRlQUFBUEhnQUFFQjRBQUJFZUFBQVNIZ0FBRXg0QUFCUWVBQUFWSGdBQUZoNEFBQlxcXG5jZUFBQVlIZ0FBR1I0QUFCb2VBQUFiSGdBQUhCNEFBQjBlQUFBZUhnQUFIeDRBQUNBZUFBQWhIZ0FBSWg0QUFDTWVBQUFrSGdBQUpSNEFcXFxuQUNZZUFBQW5IZ0FBS0I0QUFDa2VBQUFxSGdBQUt4NEFBQ3dlQUFBdEhnQUFMaDRBQUM4ZUFBQXdIZ0FBTVI0QUFESWVBQUF6SGdBQU5CXFxcbjRBQURVZUFBQTJIZ0FBTng0QUFEZ2VBQUE1SGdBQU9oNEFBRHNlQUFBOEhnQUFQUjRBQUQ0ZUFBQS9IZ0FBUUI0QUFFRWVBQUJDSGdBQVxcXG5ReDRBQUVRZUFBQkZIZ0FBUmg0QUFFY2VBQUJJSGdBQVNSNEFBRW9lQUFCTEhnQUFUQjRBQUUwZUFBQk9IZ0FBVHg0QUFGQWVBQUJSSGdcXFxuQUFVaDRBQUZNZUFBQlVIZ0FBVlI0QUFGWWVBQUJYSGdBQVdCNEFBRmtlQUFCYUhnQUFXeDRBQUZ3ZUFBQmRIZ0FBWGg0QUFGOGVBQUJnXFxcbkhnQUFZUjRBQUdJZUFBQmpIZ0FBWkI0QUFHVWVBQUJtSGdBQVp4NEFBR2dlQUFCcEhnQUFhaDRBQUdzZUFBQnNIZ0FBYlI0QUFHNGVBQVxcXG5CdkhnQUFjQjRBQUhFZUFBQnlIZ0FBY3g0QUFIUWVBQUIxSGdBQWRoNEFBSGNlQUFCNEhnQUFlUjRBQUhvZUFBQjdIZ0FBZkI0QUFIMGVcXFxuQUFCK0hnQUFmeDRBQUlBZUFBQ0JIZ0FBZ2g0QUFJTWVBQUNFSGdBQWhSNEFBSVllQUFDSEhnQUFpQjRBQUlrZUFBQ0tIZ0FBaXg0QUFJXFxcbndlQUFDTkhnQUFqaDRBQUk4ZUFBQ1FIZ0FBa1I0QUFKSWVBQUNUSGdBQWxCNEFBSlVlQUFDZUhnQUEzd0FBQUtBZUFBQ2hIZ0FBb2g0QVxcXG5BS01lQUFDa0hnQUFwUjRBQUtZZUFBQ25IZ0FBcUI0QUFLa2VBQUNxSGdBQXF4NEFBS3dlQUFDdEhnQUFyaDRBQUs4ZUFBQ3dIZ0FBc1JcXFxuNEFBTEllQUFDekhnQUF0QjRBQUxVZUFBQzJIZ0FBdHg0QUFMZ2VBQUM1SGdBQXVoNEFBTHNlQUFDOEhnQUF2UjRBQUw0ZUFBQy9IZ0FBXFxcbndCNEFBTUVlQUFEQ0hnQUF3eDRBQU1RZUFBREZIZ0FBeGg0QUFNY2VBQURJSGdBQXlSNEFBTW9lQUFETEhnQUF6QjRBQU0wZUFBRE9IZ1xcXG5BQXp4NEFBTkFlQUFEUkhnQUEwaDRBQU5NZUFBRFVIZ0FBMVI0QUFOWWVBQURYSGdBQTJCNEFBTmtlQUFEYUhnQUEyeDRBQU53ZUFBRGRcXFxuSGdBQTNoNEFBTjhlQUFEZ0hnQUE0UjRBQU9JZUFBRGpIZ0FBNUI0QUFPVWVBQURtSGdBQTV4NEFBT2dlQUFEcEhnQUE2aDRBQU9zZUFBXFxcbkRzSGdBQTdSNEFBTzRlQUFEdkhnQUE4QjRBQVBFZUFBRHlIZ0FBOHg0QUFQUWVBQUQxSGdBQTloNEFBUGNlQUFENEhnQUErUjRBQVBvZVxcXG5BQUQ3SGdBQS9CNEFBUDBlQUFEK0hnQUEveDRBQUFnZkFBQUFId0FBQ1I4QUFBRWZBQUFLSHdBQUFoOEFBQXNmQUFBREh3QUFEQjhBQUFcXFxuUWZBQUFOSHdBQUJSOEFBQTRmQUFBR0h3QUFEeDhBQUFjZkFBQVlId0FBRUI4QUFCa2ZBQUFSSHdBQUdoOEFBQklmQUFBYkh3QUFFeDhBXFxcbkFCd2ZBQUFVSHdBQUhSOEFBQlVmQUFBb0h3QUFJQjhBQUNrZkFBQWhId0FBS2g4QUFDSWZBQUFySHdBQUl4OEFBQ3dmQUFBa0h3QUFMUlxcXG44QUFDVWZBQUF1SHdBQUpoOEFBQzhmQUFBbkh3QUFPQjhBQURBZkFBQTVId0FBTVI4QUFEb2ZBQUF5SHdBQU94OEFBRE1mQUFBOEh3QUFcXFxuTkI4QUFEMGZBQUExSHdBQVBoOEFBRFlmQUFBL0h3QUFOeDhBQUVnZkFBQkFId0FBU1I4QUFFRWZBQUJLSHdBQVFoOEFBRXNmQUFCREh3XFxcbkFBVEI4QUFFUWZBQUJOSHdBQVJSOEFBRmtmQUFCUkh3QUFXeDhBQUZNZkFBQmRId0FBVlI4QUFGOGZBQUJYSHdBQWFCOEFBR0FmQUFCcFxcXG5Id0FBWVI4QUFHb2ZBQUJpSHdBQWF4OEFBR01mQUFCc0h3QUFaQjhBQUcwZkFBQmxId0FBYmg4QUFHWWZBQUJ2SHdBQVp4OEFBSWdmQUFcXFxuQ0FId0FBaVI4QUFJRWZBQUNLSHdBQWdoOEFBSXNmQUFDREh3QUFqQjhBQUlRZkFBQ05Id0FBaFI4QUFJNGZBQUNHSHdBQWp4OEFBSWNmXFxcbkFBQ1lId0FBa0I4QUFKa2ZBQUNSSHdBQW1oOEFBSklmQUFDYkh3QUFreDhBQUp3ZkFBQ1VId0FBblI4QUFKVWZBQUNlSHdBQWxoOEFBSlxcXG44ZkFBQ1hId0FBcUI4QUFLQWZBQUNwSHdBQW9SOEFBS29mQUFDaUh3QUFxeDhBQUtNZkFBQ3NId0FBcEI4QUFLMGZBQUNsSHdBQXJoOEFcXFxuQUtZZkFBQ3ZId0FBcHg4QUFMZ2ZBQUN3SHdBQXVSOEFBTEVmQUFDNkh3QUFjQjhBQUxzZkFBQnhId0FBdkI4QUFMTWZBQURJSHdBQWNoXFxcbjhBQU1rZkFBQnpId0FBeWg4QUFIUWZBQURMSHdBQWRSOEFBTXdmQUFEREh3QUEyQjhBQU5BZkFBRFpId0FBMFI4QUFOb2ZBQUIySHdBQVxcXG4yeDhBQUhjZkFBRG9Id0FBNEI4QUFPa2ZBQURoSHdBQTZoOEFBSG9mQUFEckh3QUFleDhBQU93ZkFBRGxId0FBK0I4QUFIZ2ZBQUQ1SHdcXFxuQUFlUjhBQVBvZkFBQjhId0FBK3g4QUFIMGZBQUQ4SHdBQTh4OEFBQ1loQUFESkF3QUFLaUVBQUdzQUFBQXJJUUFBNVFBQUFESWhBQUJPXFxcbklRQUFZQ0VBQUhBaEFBQmhJUUFBY1NFQUFHSWhBQUJ5SVFBQVl5RUFBSE1oQUFCa0lRQUFkQ0VBQUdVaEFBQjFJUUFBWmlFQUFIWWhBQVxcXG5CbklRQUFkeUVBQUdnaEFBQjRJUUFBYVNFQUFIa2hBQUJxSVFBQWVpRUFBR3NoQUFCN0lRQUFiQ0VBQUh3aEFBQnRJUUFBZlNFQUFHNGhcXFxuQUFCK0lRQUFieUVBQUg4aEFBQ0RJUUFBaENFQUFMWWtBQURRSkFBQXR5UUFBTkVrQUFDNEpBQUEwaVFBQUxra0FBRFRKQUFBdWlRQUFOXFxcblFrQUFDN0pBQUExU1FBQUx3a0FBRFdKQUFBdlNRQUFOY2tBQUMrSkFBQTJDUUFBTDhrQUFEWkpBQUF3Q1FBQU5va0FBREJKQUFBMnlRQVxcXG5BTUlrQUFEY0pBQUF3eVFBQU4wa0FBREVKQUFBM2lRQUFNVWtBQURmSkFBQXhpUUFBT0FrQUFESEpBQUE0U1FBQU1na0FBRGlKQUFBeVNcXFxuUUFBT01rQUFES0pBQUE1Q1FBQU1za0FBRGxKQUFBekNRQUFPWWtBQUROSkFBQTV5UUFBTTRrQUFEb0pBQUF6eVFBQU9ra0FBQUFMQUFBXFxcbk1Dd0FBQUVzQUFBeExBQUFBaXdBQURJc0FBQURMQUFBTXl3QUFBUXNBQUEwTEFBQUJTd0FBRFVzQUFBR0xBQUFOaXdBQUFjc0FBQTNMQVxcXG5BQUNDd0FBRGdzQUFBSkxBQUFPU3dBQUFvc0FBQTZMQUFBQ3l3QUFEc3NBQUFNTEFBQVBDd0FBQTBzQUFBOUxBQUFEaXdBQUQ0c0FBQVBcXFxuTEFBQVB5d0FBQkFzQUFCQUxBQUFFU3dBQUVFc0FBQVNMQUFBUWl3QUFCTXNBQUJETEFBQUZDd0FBRVFzQUFBVkxBQUFSU3dBQUJZc0FBXFxcbkJHTEFBQUZ5d0FBRWNzQUFBWUxBQUFTQ3dBQUJrc0FBQkpMQUFBR2l3QUFFb3NBQUFiTEFBQVN5d0FBQndzQUFCTUxBQUFIU3dBQUUwc1xcXG5BQUFlTEFBQVRpd0FBQjhzQUFCUExBQUFJQ3dBQUZBc0FBQWhMQUFBVVN3QUFDSXNBQUJTTEFBQUl5d0FBRk1zQUFBa0xBQUFWQ3dBQUNcXFxuVXNBQUJWTEFBQUppd0FBRllzQUFBbkxBQUFWeXdBQUNnc0FBQllMQUFBS1N3QUFGa3NBQUFxTEFBQVdpd0FBQ3NzQUFCYkxBQUFMQ3dBXFxcbkFGd3NBQUF0TEFBQVhTd0FBQzRzQUFCZUxBQUFMeXdBQUY4c0FBQmdMQUFBWVN3QUFHSXNBQUJyQWdBQVl5d0FBSDBkQUFCa0xBQUFmUVxcXG5JQUFHY3NBQUJvTEFBQWFTd0FBR29zQUFCckxBQUFiQ3dBQUcwc0FBQlJBZ0FBYml3QUFIRUNBQUJ2TEFBQVVBSUFBSEFzQUFCU0FnQUFcXFxuY2l3QUFITXNBQUIxTEFBQWRpd0FBSDRzQUFBL0FnQUFmeXdBQUVBQ0FBQ0FMQUFBZ1N3QUFJSXNBQUNETEFBQWhDd0FBSVVzQUFDR0xBXFxcbkFBaHl3QUFJZ3NBQUNKTEFBQWlpd0FBSXNzQUFDTUxBQUFqU3dBQUk0c0FBQ1BMQUFBa0N3QUFKRXNBQUNTTEFBQWt5d0FBSlFzQUFDVlxcXG5MQUFBbGl3QUFKY3NBQUNZTEFBQW1Td0FBSm9zQUFDYkxBQUFuQ3dBQUowc0FBQ2VMQUFBbnl3QUFLQXNBQUNoTEFBQW9pd0FBS01zQUFcXFxuQ2tMQUFBcFN3QUFLWXNBQUNuTEFBQXFDd0FBS2tzQUFDcUxBQUFxeXdBQUt3c0FBQ3RMQUFBcml3QUFLOHNBQUN3TEFBQXNTd0FBTElzXFxcbkFBQ3pMQUFBdEN3QUFMVXNBQUMyTEFBQXR5d0FBTGdzQUFDNUxBQUF1aXdBQUxzc0FBQzhMQUFBdlN3QUFMNHNBQUMvTEFBQXdDd0FBTVxcXG5Fc0FBRENMQUFBd3l3QUFNUXNBQURGTEFBQXhpd0FBTWNzQUFESUxBQUF5U3dBQU1vc0FBRExMQUFBekN3QUFNMHNBQURPTEFBQXp5d0FcXFxuQU5Bc0FBRFJMQUFBMGl3QUFOTXNBQURVTEFBQTFTd0FBTllzQUFEWExBQUEyQ3dBQU5rc0FBRGFMQUFBMnl3QUFOd3NBQURkTEFBQTNpXFxcbndBQU44c0FBRGdMQUFBNFN3QUFPSXNBQURqTEFBQTZ5d0FBT3dzQUFEdExBQUE3aXdBQVBJc0FBRHpMQUFBUUtZQUFFR21BQUJDcGdBQVxcXG5RNllBQUVTbUFBQkZwZ0FBUnFZQUFFZW1BQUJJcGdBQVNhWUFBRXFtQUFCTHBnQUFUS1lBQUUybUFBQk9wZ0FBVDZZQUFGQ21BQUJScGdcXFxuQUFVcVlBQUZPbUFBQlVwZ0FBVmFZQUFGYW1BQUJYcGdBQVdLWUFBRm1tQUFCYXBnQUFXNllBQUZ5bUFBQmRwZ0FBWHFZQUFGK21BQUJnXFxcbnBnQUFZYVlBQUdLbUFBQmpwZ0FBWktZQUFHV21BQUJtcGdBQVo2WUFBR2ltQUFCcHBnQUFhcVlBQUd1bUFBQnNwZ0FBYmFZQUFJQ21BQVxcXG5DQnBnQUFncVlBQUlPbUFBQ0VwZ0FBaGFZQUFJYW1BQUNIcGdBQWlLWUFBSW1tQUFDS3BnQUFpNllBQUl5bUFBQ05wZ0FBanFZQUFJK21cXFxuQUFDUXBnQUFrYVlBQUpLbUFBQ1RwZ0FBbEtZQUFKV21BQUNXcGdBQWw2WUFBSmltQUFDWnBnQUFtcVlBQUp1bUFBQWlwd0FBSTZjQUFDXFxcblNuQUFBbHB3QUFKcWNBQUNlbkFBQW9wd0FBS2FjQUFDcW5BQUFycHdBQUxLY0FBQzJuQUFBdXB3QUFMNmNBQURLbkFBQXpwd0FBTktjQVxcXG5BRFduQUFBMnB3QUFONmNBQURpbkFBQTVwd0FBT3FjQUFEdW5BQUE4cHdBQVBhY0FBRDZuQUFBL3B3QUFRS2NBQUVHbkFBQkNwd0FBUTZcXFxuY0FBRVNuQUFCRnB3QUFScWNBQUVlbkFBQklwd0FBU2FjQUFFcW5BQUJMcHdBQVRLY0FBRTJuQUFCT3B3QUFUNmNBQUZDbkFBQlJwd0FBXFxcblVxY0FBRk9uQUFCVXB3QUFWYWNBQUZhbkFBQlhwd0FBV0tjQUFGbW5BQUJhcHdBQVc2Y0FBRnluQUFCZHB3QUFYcWNBQUYrbkFBQmdwd1xcXG5BQVlhY0FBR0tuQUFCanB3QUFaS2NBQUdXbkFBQm1wd0FBWjZjQUFHaW5BQUJwcHdBQWFxY0FBR3VuQUFCc3B3QUFiYWNBQUc2bkFBQnZcXFxucHdBQWVhY0FBSHFuQUFCN3B3QUFmS2NBQUgybkFBQjVIUUFBZnFjQUFIK25BQUNBcHdBQWdhY0FBSUtuQUFDRHB3QUFoS2NBQUlXbkFBXFxcbkNHcHdBQWg2Y0FBSXVuQUFDTXB3QUFqYWNBQUdVQ0FBQ1Fwd0FBa2FjQUFKS25BQUNUcHdBQWxxY0FBSmVuQUFDWXB3QUFtYWNBQUpxblxcXG5BQUNicHdBQW5LY0FBSjJuQUFDZXB3QUFuNmNBQUtDbkFBQ2hwd0FBb3FjQUFLT25BQUNrcHdBQXBhY0FBS2FuQUFDbnB3QUFxS2NBQUtcXFxubW5BQUNxcHdBQVpnSUFBS3VuQUFCY0FnQUFyS2NBQUdFQ0FBQ3Rwd0FBYkFJQUFLNm5BQUJxQWdBQXNLY0FBSjRDQUFDeHB3QUFod0lBXFxcbkFMS25BQUNkQWdBQXM2Y0FBRk9yQUFDMHB3QUF0YWNBQUxhbkFBQzNwd0FBdUtjQUFMbW5BQUM2cHdBQXU2Y0FBTHluQUFDOXB3QUF2cVxcXG5jQUFMK25BQURBcHdBQXdhY0FBTUtuQUFERHB3QUF4S2NBQUpTbkFBREZwd0FBZ2dJQUFNYW5BQUNPSFFBQXg2Y0FBTWluQUFESnB3QUFcXFxueXFjQUFOQ25BQURScHdBQTFxY0FBTmVuQUFEWXB3QUEyYWNBQVBXbkFBRDJwd0FBSWY4QUFFSC9BQUFpL3dBQVF2OEFBQ1AvQUFCRC93XFxcbkFBSlA4QUFFVC9BQUFsL3dBQVJmOEFBQ2IvQUFCRy93QUFKLzhBQUVmL0FBQW8vd0FBU1A4QUFDbi9BQUJKL3dBQUt2OEFBRXIvQUFBclxcXG4vd0FBUy84QUFDei9BQUJNL3dBQUxmOEFBRTMvQUFBdS93QUFUdjhBQUMvL0FBQlAvd0FBTVA4QUFGRC9BQUF4L3dBQVVmOEFBREwvQUFcXFxuQlMvd0FBTS84QUFGUC9BQUEwL3dBQVZQOEFBRFgvQUFCVi93QUFOdjhBQUZiL0FBQTMvd0FBVi84QUFEai9BQUJZL3dBQU9mOEFBRm4vXFxcbkFBQTYvd0FBV3Y4QUFBQUVBUUFvQkFFQUFRUUJBQ2tFQVFBQ0JBRUFLZ1FCQUFNRUFRQXJCQUVBQkFRQkFDd0VBUUFGQkFFQUxRUUJBQVxcXG5ZRUFRQXVCQUVBQndRQkFDOEVBUUFJQkFFQU1BUUJBQWtFQVFBeEJBRUFDZ1FCQURJRUFRQUxCQUVBTXdRQkFBd0VBUUEwQkFFQURRUUJcXFxuQURVRUFRQU9CQUVBTmdRQkFBOEVBUUEzQkFFQUVBUUJBRGdFQVFBUkJBRUFPUVFCQUJJRUFRQTZCQUVBRXdRQkFEc0VBUUFVQkFFQVBBXFxcblFCQUJVRUFRQTlCQUVBRmdRQkFENEVBUUFYQkFFQVB3UUJBQmdFQVFCQUJBRUFHUVFCQUVFRUFRQWFCQUVBUWdRQkFCc0VBUUJEQkFFQVxcXG5IQVFCQUVRRUFRQWRCQUVBUlFRQkFCNEVBUUJHQkFFQUh3UUJBRWNFQVFBZ0JBRUFTQVFCQUNFRUFRQkpCQUVBSWdRQkFFb0VBUUFqQkFcXFxuRUFTd1FCQUNRRUFRQk1CQUVBSlFRQkFFMEVBUUFtQkFFQVRnUUJBQ2NFQVFCUEJBRUFzQVFCQU5nRUFRQ3hCQUVBMlFRQkFMSUVBUURhXFxcbkJBRUFzd1FCQU5zRUFRQzBCQUVBM0FRQkFMVUVBUURkQkFFQXRnUUJBTjRFQVFDM0JBRUEzd1FCQUxnRUFRRGdCQUVBdVFRQkFPRUVBUVxcXG5DNkJBRUE0Z1FCQUxzRUFRRGpCQUVBdkFRQkFPUUVBUUM5QkFFQTVRUUJBTDRFQVFEbUJBRUF2d1FCQU9jRUFRREFCQUVBNkFRQkFNRUVcXFxuQVFEcEJBRUF3Z1FCQU9vRUFRRERCQUVBNndRQkFNUUVBUURzQkFFQXhRUUJBTzBFQVFER0JBRUE3Z1FCQU1jRUFRRHZCQUVBeUFRQkFQXFxcbkFFQVFESkJBRUE4UVFCQU1vRUFRRHlCQUVBeXdRQkFQTUVBUURNQkFFQTlBUUJBTTBFQVFEMUJBRUF6Z1FCQVBZRUFRRFBCQUVBOXdRQlxcXG5BTkFFQVFENEJBRUEwUVFCQVBrRUFRRFNCQUVBK2dRQkFOTUVBUUQ3QkFFQWNBVUJBSmNGQVFCeEJRRUFtQVVCQUhJRkFRQ1pCUUVBY3dcXFxuVUJBSm9GQVFCMEJRRUFtd1VCQUhVRkFRQ2NCUUVBZGdVQkFKMEZBUUIzQlFFQW5nVUJBSGdGQVFDZkJRRUFlUVVCQUtBRkFRQjZCUUVBXFxcbm9RVUJBSHdGQVFDakJRRUFmUVVCQUtRRkFRQitCUUVBcFFVQkFIOEZBUUNtQlFFQWdBVUJBS2NGQVFDQkJRRUFxQVVCQUlJRkFRQ3BCUVxcXG5FQWd3VUJBS29GQVFDRUJRRUFxd1VCQUlVRkFRQ3NCUUVBaGdVQkFLMEZBUUNIQlFFQXJnVUJBSWdGQVFDdkJRRUFpUVVCQUxBRkFRQ0tcXFxuQlFFQXNRVUJBSXdGQVFDekJRRUFqUVVCQUxRRkFRQ09CUUVBdFFVQkFJOEZBUUMyQlFFQWtBVUJBTGNGQVFDUkJRRUF1QVVCQUpJRkFRXFxcbkM1QlFFQWxBVUJBTHNGQVFDVkJRRUF2QVVCQUlBTUFRREFEQUVBZ1F3QkFNRU1BUUNDREFFQXdnd0JBSU1NQVFERERBRUFoQXdCQU1RTVxcXG5BUUNGREFFQXhRd0JBSVlNQVFER0RBRUFod3dCQU1jTUFRQ0lEQUVBeUF3QkFJa01BUURKREFFQWlnd0JBTW9NQVFDTERBRUF5d3dCQUlcXFxud01BUURNREFFQWpRd0JBTTBNQVFDT0RBRUF6Z3dCQUk4TUFRRFBEQUVBa0F3QkFOQU1BUUNSREFFQTBRd0JBSklNQVFEU0RBRUFrd3dCXFxcbkFOTU1BUUNVREFFQTFBd0JBSlVNQVFEVkRBRUFsZ3dCQU5ZTUFRQ1hEQUVBMXd3QkFKZ01BUURZREFFQW1Rd0JBTmtNQVFDYURBRUEyZ1xcXG53QkFKc01BUURiREFFQW5Bd0JBTndNQVFDZERBRUEzUXdCQUo0TUFRRGVEQUVBbnd3QkFOOE1BUUNnREFFQTRBd0JBS0VNQVFEaERBRUFcXFxub2d3QkFPSU1BUUNqREFFQTR3d0JBS1FNQVFEa0RBRUFwUXdCQU9VTUFRQ21EQUVBNWd3QkFLY01BUURuREFFQXFBd0JBT2dNQVFDcERBXFxcbkVBNlF3QkFLb01BUURxREFFQXF3d0JBT3NNQVFDc0RBRUE3QXdCQUswTUFRRHREQUVBcmd3QkFPNE1BUUN2REFFQTd3d0JBTEFNQVFEd1xcXG5EQUVBc1F3QkFQRU1BUUN5REFFQThnd0JBS0FZQVFEQUdBRUFvUmdCQU1FWUFRQ2lHQUVBd2hnQkFLTVlBUURER0FFQXBCZ0JBTVFZQVFcXFxuQ2xHQUVBeFJnQkFLWVlBUURHR0FFQXB4Z0JBTWNZQVFDb0dBRUF5QmdCQUtrWUFRREpHQUVBcWhnQkFNb1lBUUNyR0FFQXl4Z0JBS3dZXFxcbkFRRE1HQUVBclJnQkFNMFlBUUN1R0FFQXpoZ0JBSzhZQVFEUEdBRUFzQmdCQU5BWUFRQ3hHQUVBMFJnQkFMSVlBUURTR0FFQXN4Z0JBTlxcXG5NWUFRQzBHQUVBMUJnQkFMVVlBUURWR0FFQXRoZ0JBTllZQVFDM0dBRUExeGdCQUxnWUFRRFlHQUVBdVJnQkFOa1lBUUM2R0FFQTJoZ0JcXFxuQUxzWUFRRGJHQUVBdkJnQkFOd1lBUUM5R0FFQTNSZ0JBTDRZQVFEZUdBRUF2eGdCQU44WUFRQkFiZ0VBWUc0QkFFRnVBUUJoYmdFQVFtXFxcbjRCQUdKdUFRQkRiZ0VBWTI0QkFFUnVBUUJrYmdFQVJXNEJBR1Z1QVFCR2JnRUFabTRCQUVkdUFRQm5iZ0VBU0c0QkFHaHVBUUJKYmdFQVxcXG5hVzRCQUVwdUFRQnFiZ0VBUzI0QkFHdHVBUUJNYmdFQWJHNEJBRTF1QVFCdGJnRUFUbTRCQUc1dUFRQlBiZ0VBYjI0QkFGQnVBUUJ3YmdcXFxuRUFVVzRCQUhGdUFRQlNiZ0VBY200QkFGTnVBUUJ6YmdFQVZHNEJBSFJ1QVFCVmJnRUFkVzRCQUZadUFRQjJiZ0VBVjI0QkFIZHVBUUJZXFxcbmJnRUFlRzRCQUZsdUFRQjViZ0VBV200QkFIcHVBUUJiYmdFQWUyNEJBRnh1QVFCOGJnRUFYVzRCQUgxdUFRQmViZ0VBZm00QkFGOXVBUVxcXG5CL2JnRUFBT2tCQUNMcEFRQUI2UUVBSStrQkFBTHBBUUFrNlFFQUEra0JBQ1hwQVFBRTZRRUFKdWtCQUFYcEFRQW42UUVBQnVrQkFDanBcXFxuQVFBSDZRRUFLZWtCQUFqcEFRQXE2UUVBQ2VrQkFDdnBBUUFLNlFFQUxPa0JBQXZwQVFBdDZRRUFET2tCQUM3cEFRQU42UUVBTCtrQkFBXFxcbjdwQVFBdzZRRUFEK2tCQURIcEFRQVE2UUVBTXVrQkFCSHBBUUF6NlFFQUV1a0JBRFRwQVFBVDZRRUFOZWtCQUJUcEFRQTI2UUVBRmVrQlxcXG5BRGZwQVFBVzZRRUFPT2tCQUJmcEFRQTU2UUVBR09rQkFEcnBBUUFaNlFFQU8ra0JBQnJwQVFBODZRRUFHK2tCQUQzcEFRQWM2UUVBUHVcXFxua0JBQjNwQVFBLzZRRUFIdWtCQUVEcEFRQWY2UUVBUWVrQkFDRHBBUUJDNlFFQUlla0JBRVBwQVFCTVlYbHZkWFJ6YVhwbFlXeHBaMjRBXFxcbk5nRUFBQVFBQUFBRUFBQUFSUUVBQUV4aGVXOTFkRVZ5Y205eUFFR0lwczhBQzJnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVxcXG5BQUFBQUFBQUFBQUFBQUFBQUFBQUFBbXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFcXFxuQUFBQUFBQUFuQUFBQUFBQUFBRGNMQkFBNkN3UUFBRDBqNGlBQUFSdVlXMWxBZW1QaUlBQXZBNEFOWGRoYzIxZlltbHVaR2RsYmpvNlgxXFxcbjkzWW1sdVpHZGxibDlsY25KdmNsOXVaWGM2T21nd01qbGhOR0UwWTJJd05qZ3dNVGs1QVR0M1lYTnRYMkpwYm1SblpXNDZPbDlmZDJKcFxcXG5ibVJuWlc1ZmIySnFaV04wWDJSeWIzQmZjbVZtT2pwb01tWXdNV0V4T1RJd05tTTJZMlU1TkFJMmQyRnpiVjlpYVc1a1oyVnVPanBmWDNcXFxuZGlhVzVrWjJWdVgzTjBjbWx1WjE5blpYUTZPbWhqTWpjeVlXRmpPR1UzWWpBMk16YzJBelozWVhOdFgySnBibVJuWlc0Nk9sOWZkMkpwXFxcbmJtUm5aVzVmYzNSeWFXNW5YMjVsZHpvNmFESTVZV0pqTldFNU5tVmxNek5oTjJNRVhtUmxibTlmWTJGamFHVmZaR2x5T2pwM1lYTnRPalxcXG5weVpXRmtYMlpwYkdWZllubDBaWE02T2w5ZmQySm5YM0psWVdSbWFXeGxZbmwwWlhOZk9XTmxPRGN3WkdVNE5tSXlZMk16TmpvNmFEWXpcXFxuTnpaaFpUSXhOMlUzTkRCa056UUZNM2RoYzIxZlltbHVaR2RsYmpvNlgxOTNZbWx1WkdkbGJsOXBjMTl1ZFd4c09qcG9OMkV3TVdGaE9EXFxcbk5rWkdFeU9XWTBOQVk0ZDJGemJWOWlhVzVrWjJWdU9qcGZYM2RpYVc1a1oyVnVYMmx6WDNWdVpHVm1hVzVsWkRvNmFHVTVZelZoTXpVNVxcXG5NR1l5TlRNeVpqY0hZbVJsYm05ZlkyRmphR1ZmWkdseU9qcDNZWE50T2pwaGRHOXRhV05mZDNKcGRHVmZabWxzWlRvNlgxOTNZbWRmWVhcXFxuUnZiV2xqZDNKcGRHVm1hV3hsWHpNeE1HTTFaRFk1TUdWa05HRXhPRFk2T21neE1ESXhNalprTWpZNU4yRTJaRE5pQ0Z0a1pXNXZYMk5oXFxcblkyaGxYMlJwY2pvNmQyRnpiVG82Ylc5a2FXWnBaV1JmZEdsdFpUbzZYMTkzWW1kZmJXOWthV1pwWldSMGFXMWxYelkzWldZeE4yRmpOR1xcXG5WbFltWTFNbU02T21nME5ESmtNRGRpTXpjNU1qVTJZbUV3Q1ZGa1pXNXZYMk5oWTJobFgyUnBjam82ZDJGemJUbzZkR2x0WlY5dWIzYzZcXFxuT2w5ZmQySm5YM1JwYldWdWIzZGZaVGhsWkRRM09XWTJZbUZrTWpZeU5qbzZhRGt3T1dVeU56Z3pNRGhoTm1aa01HRUtObmRoYzIxZlltXFxcbmx1WkdkbGJqbzZYMTkzWW1sdVpHZGxibDl1ZFcxaVpYSmZaMlYwT2pwb016a3hPVEExWWpKaE5EVXpNR0l4WmdzMWQyRnpiVjlpYVc1a1xcXG5aMlZ1T2pwZlgzZGlhVzVrWjJWdVgybHpYMjlpYW1WamREbzZhRGhtT0Rka1lXVTVNVFJsWkRkallUZ01PbmRoYzIxZlltbHVaR2RsYmpcXFxubzZYMTkzWW1sdVpHZGxibDlxYzNaaGJGOXNiMjl6WlY5bGNUbzZhRFJoWW1SaE5qYzBaalZqWmpVNFpEa05OM2RoYzIxZlltbHVaR2RsXFxcbmJqbzZYMTkzWW1sdVpHZGxibDlpYjI5c1pXRnVYMmRsZERvNmFHSTVOakExT0Rrd05qWTJOakl3WWpJT2VqeHpaWEprWlY5M1lYTnRYMlxcXG5KcGJtUm5aVzQ2T21WeWNtOXlPanBGY25KdmNpQmhjeUJqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGsrT2pwbWJYUTZPblJ2WDNOMGNtbHVcXFxuWnpvNlgxOTNZbWRmVTNSeWFXNW5Yemc0T0RFd1pHWmxZalF3TWpFNU1ESTZPbWhtWkRWallXWTJORE01Tm1SaFl6QTFEMUZ6WlhKa1pWXFxcbjkzWVhOdFgySnBibVJuWlc0Nk9rOWlhbVZqZEVWNGREbzZjMlYwT2pwZlgzZGlaMTl6WlhSZk9EUXhZV00xTjJObVpqTmtOamN5WWpvNlxcXG5hRFEyWXpWa01tSTRabUU1TjJGa016WVFVMk52Ym5OdmJHVmZaWEp5YjNKZmNHRnVhV05mYUc5dmF6bzZSWEp5YjNJNk9tNWxkem82WDFcXFxuOTNZbWRmYm1WM1gyRmlaR0UzTm1VNE9ETmlZVGhoTldZNk9taGtZakV5WmpBNFpHRTNPV0ZrT0RjeUVWZGpiMjV6YjJ4bFgyVnljbTl5XFxcblgzQmhibWxqWDJodmIyczZPa1Z5Y205eU9qcHpkR0ZqYXpvNlgxOTNZbWRmYzNSaFkydGZOalU0TWpjNVptVTBORFUwTVdObU5qbzZhR1xcXG5Vd1l6VmpZVFkyTnpSa1kyWm1NamNTVUdOdmJuTnZiR1ZmWlhKeWIzSmZjR0Z1YVdOZmFHOXZhem82WlhKeWIzSTZPbDlmZDJKblgyVnlcXFxuY205eVgyWTROVEUyTmpkaFpqY3hZbU5tWXpZNk9tZzFZVEUxTVRReE9Ua3hORGMwTUdWakV6VjNZWE50WDJKcGJtUm5aVzQ2T2w5ZmQyXFxcbkpwYm1SblpXNWZhWE5mYzNSeWFXNW5PanBvWkdRMk9XTXhPVGRpTVdNMU1qVmxOeFEzZDJGemJWOWlhVzVrWjJWdU9qcGZYM2RpYVc1a1xcXG5aMlZ1WDJselgyWjFibU4wYVc5dU9qcG9OamMzT1RKbE5tUTVPRGhpTm1ZM05SVS9hbk5mYzNsek9qcE5ZWEE2T201bGR6bzZYMTkzWW1cXFxuZGZibVYzWHpCbU1tSTNNV05oTW1ZeVlUWXdNams2T21neE5XRXhNVE15T1dSa01XVTJNemsxRm1wcWMxOXplWE02T2tsMFpYSmhkRzl5XFxcbk9qcHNiMjlyYzE5c2FXdGxYMmwwWlhKaGRHOXlPanBOWVhsaVpVbDBaWEpoZEc5eU9qcHVaWGgwT2pwZlgzZGlaMTl1WlhoMFgyWTBZbVxcXG5Nd1pUazJaV0UyTjJSaE5qZzZPbWcyTkRobU9EQmpNemN6TUdFd1pETmlGMHhxYzE5emVYTTZPa2wwWlhKaGRHOXlUbVY0ZERvNmRtRnNcXFxuZFdVNk9sOWZkMkpuWDNaaGJIVmxYekptTkdWbU1qQXpObUptWVdReU9HVTZPbWd4WW1KbE5HVXhaV1V4TldSbFlUQmtHRXhxYzE5emVYXFxcbk02T2xONWJXSnZiRG82YVhSbGNtRjBiM0k2T2w5ZmQySm5YMmwwWlhKaGRHOXlYemRqTjJVMU9HWTJNbVZpT0RRM01EQTZPbWhqTW1GaVxcXG5aRE14TURBeFlUWTFaakJpR1VKcWMxOXplWE02T2s5aWFtVmpkRG82Ym1WM09qcGZYM2RpWjE5dVpYZGZNbUkyWm1WaE5HVmhNRE5pTVdcXFxuSTVOVG82YUdOaE56Um1aRE16T1dGa01XRTJNRFlhUVdwelgzTjVjem82UVhKeVlYazZPbWRsZERvNlgxOTNZbWRmWjJWMFh6Y3pNRE5sXFxcblpESmxaakF5Tm1JeVpqVTZPbWcxTm1Oa05qZzFOMkk0TkdWa05XSm1HMGRxYzE5emVYTTZPa0Z5Y21GNU9qcHNaVzVuZEdnNk9sOWZkMlxcXG5KblgyeGxibWQwYUY4NE1qQmpOemcyT1RjellXSmtaRGhoT2pwb05HSmpPRFUzWVRjME4yTXpORGt6T1J5U0FXcHpYM041Y3pvNlh6bzZcXFxuUEdsdGNHd2dkMkZ6YlY5aWFXNWtaMlZ1T2pwallYTjBPanBLYzBOaGMzUWdabTl5SUdwelgzTjVjem82UVhKeVlYbENkV1ptWlhJK09qXFxcbnBwYm5OMFlXNWpaVzltT2pwZlgzZGlaMTlwYm5OMFlXNWpaVzltWDBGeWNtRjVRblZtWm1WeVgyVm1Nall6TW1GaE1HUTBZbVptWmpnNlxcXG5PbWhtTkdNek9EY3dZbUk0TmpOa05HTmhIVUZxYzE5emVYTTZPa1Z5Y205eU9qcHVaWGM2T2w5ZmQySm5YMjVsZDE4NE56STVOMll5TWpcXFxuazNNekUxTjJNNE9qcG9NRFk1TldNNU5HWXpOekkwWTJFMVpoNUhhbk5mYzNsek9qcEdkVzVqZEdsdmJqbzZZMkZzYkRBNk9sOWZkMkpuXFxcblgyTmhiR3hmTlRVM1lUSm1NbVJsWVdOak5Ea3hNam82YURSaU56VmhaamxsTXpKbFl6Wm1OR1FmUDJwelgzTjVjem82VFdGd09qcHpaWFxcXG5RNk9sOWZkMkpuWDNObGRGOWtZVGRpWlRkaVpqQmxNRE0zWWpFME9qcG9PRFF5WmpjMFltSTROalV3TkdNeE9DQkdhbk5mYzNsek9qcEpcXFxuZEdWeVlYUnZjam82Ym1WNGREbzZYMTkzWW1kZmJtVjRkRjlsWXpBMk1XVTBPR0V3WlRjeVlUazJPanBvTWpBd1pXUmlOV1E0TVdZM056XFxcbmd5WWlGS2FuTmZjM2x6T2pwSmRHVnlZWFJ2Y2s1bGVIUTZPbVJ2Ym1VNk9sOWZkMkpuWDJSdmJtVmZZalpoWW1JeU4yUTBNbUkyTXpnMlxcXG5Oem82YUdOa1lUVmtZamRqTURkaVl6TmpORE1pU21welgzTjVjem82VDJKcVpXTjBPanBsYm5SeWFXVnpPanBmWDNkaVoxOWxiblJ5YVdcXFxuVnpYekV6WlRBeE1UUTFNemMzTmpRMk9HWTZPbWhoTXpWa01XRmtPRFJoTVRObU5tRmtJME5xYzE5emVYTTZPbEpsWm14bFkzUTZPbWRsXFxcbmREbzZYMTkzWW1kZloyVjBYMlkxTTJNNU1qRXlPVEZqTXpneFltUTZPbWhpTkdZM1lqVm1NV0V4TjJWbFlqazRKRlZxYzE5emVYTTZPbFxcXG5kbFlrRnpjMlZ0WW14NU9qcE5aVzF2Y25rNk9tSjFabVpsY2pvNlgxOTNZbWRmWW5WbVptVnlYelUxWW1FM1lUWmlNV0k1TW1VeVlXTTZcXFxuT21neE9EQXlOR1ZrT1RobVpXWTBaVFEwSlVacWMxOXplWE02T2xWcGJuUTRRWEp5WVhrNk9tNWxkem82WDE5M1ltZGZibVYzWHpBNU9UXFxcbk00WVRka01ESXdaakEwT1dJNk9tZzBNak01WkdFM1ptVm1OekUxTW1RNEpwQUJhbk5mYzNsek9qcGZPam84YVcxd2JDQjNZWE50WDJKcFxcXG5ibVJuWlc0Nk9tTmhjM1E2T2twelEyRnpkQ0JtYjNJZ2FuTmZjM2x6T2pwVmFXNTBPRUZ5Y21GNVBqbzZhVzV6ZEdGdVkyVnZaam82WDFcXFxuOTNZbWRmYVc1emRHRnVZMlZ2Wmw5VmFXNTBPRUZ5Y21GNVh6RXpORGsyTkRCaFpqSmtZVEpsT0RnNk9tZ3hOVFZtWmpaaE0yVTJOVFpoXFxcbk1UVTRKMHhxYzE5emVYTTZPbFZwYm5RNFFYSnlZWGs2T214bGJtZDBhRG82WDE5M1ltZGZiR1Z1WjNSb1h6QmhZV0kzWm1aa05qVmhaRFxcXG5FNVpXUTZPbWhpWkRkallqYzBNalJoTjJFNU1UZ3hLRVpxYzE5emVYTTZPbFZwYm5RNFFYSnlZWGs2T25ObGREbzZYMTkzWW1kZmMyVjBcXFxuWHpNMk9UaGxNMk5oTlRFNVlqTmpNMk02T21oaVkyWXpOMkU0Wmpjek56bGhZelUxS1RoM1lYTnRYMkpwYm1SblpXNDZPbDlmZDJKcGJtXFxcblJuWlc1ZlpHVmlkV2RmYzNSeWFXNW5PanBvTmpRek5XRmtObVJoWWpNME5tRTJOU294ZDJGemJWOWlhVzVrWjJWdU9qcGZYM2RpYVc1a1xcXG5aMlZ1WDNSb2NtOTNPanBvWXpZeU9UWTNOV00zWkRWbU9EWXhZeXN5ZDJGemJWOWlhVzVrWjJWdU9qcGZYM2RpYVc1a1oyVnVYMjFsYldcXFxuOXllVG82YUdZd01HSTVNalV4WW1abE16ZzVNamdzU0dOdmNtVTZPbTUxYlRvNlpteDBNbVJsWXpvNmMzUnlZWFJsWjNrNk9tUnlZV2R2XFxcbmJqbzZabTl5YldGMFgzTm9iM0owWlhOME9qcG9OemM0TTJJd05qRTRNbVUwT0dNellpMUZZMjl5WlRvNmJuVnRPanBtYkhReVpHVmpPalxcXG5wemRISmhkR1ZuZVRvNlpISmhaMjl1T2pwbWIzSnRZWFJmWlhoaFkzUTZPbWcxTTJZd1ptVmxZemM1TmpZNE1HTTVManBrYkcxaGJHeHZcXFxuWXpvNlpHeHRZV3hzYjJNNk9rUnNiV0ZzYkc5alBFRStPanB0WVd4c2IyTTZPbWd3TURNNU5UWmlPRGd5TlRreVpHWXdMekoxY213Nk9uXFxcbkJoY25ObGNqbzZVR0Z5YzJWeU9qcHdZWEp6WlY5bWFXeGxPanBvTVdWbE1EUTBOVFZrTnpKbVlqVXlOekFxYVdSdVlUbzZkWFJ6TkRZNlxcXG5PbkJ5YjJObGMzTnBibWM2T21nellUVmtOMkV5WlRobU5UZGpPVGt4TVdnOEptMTFkQ0J6WlhKa1pWOXFjMjl1T2pwa1pUbzZSR1Z6WlhcXFxuSnBZV3hwZW1WeVBGSStJR0Z6SUhObGNtUmxPanBrWlRvNlJHVnpaWEpwWVd4cGVtVnlQam82WkdWelpYSnBZV3hwZW1WZmMzUnlkV04wXFxcbk9qcG9NbVZpT0Rjek16ZzBPRGs1T1RrM05qSkxZMjl5WlRvNmJuVnRPanBtYkhReVpHVmpPanB6ZEhKaGRHVm5lVG82WjNKcGMzVTZPbVxcXG5admNtMWhkRjl6YUc5eWRHVnpkRjl2Y0hRNk9taGpaREU0WXpRME5UQTVOamc1TjJWa00yZzhKbTExZENCelpYSmtaVjlxYzI5dU9qcGtcXFxuWlRvNlJHVnpaWEpwWVd4cGVtVnlQRkkrSUdGeklITmxjbVJsT2pwa1pUbzZSR1Z6WlhKcFlXeHBlbVZ5UGpvNlpHVnpaWEpwWVd4cGVtXFxcblZmYzNSeWRXTjBPanBvTnpRNU5EQXhNalZqT1dNNVptUm1NalJBWTI5eVpUbzZhWFJsY2pvNmRISmhhWFJ6T2pwcGRHVnlZWFJ2Y2pvNlxcXG5TWFJsY21GMGIzSTZPbVZ4WDJKNU9qcG9aamc0T0RrM1pHWTRZMk00T1dZMFlqVXRaR0YwWVY5MWNtdzZPa1JoZEdGVmNtdzZPbkJ5YjJcXFxuTmxjM002T21neFpUUXdPVGs1Wm1ZMU5tWXdaalZqTmw4OFlXeHNiMk02T25OMGNtbHVaem82VTNSeWFXNW5JR0Z6SUdOdmNtVTZPbWwwXFxcblpYSTZPblJ5WVdsMGN6bzZZMjlzYkdWamREbzZSWGgwWlc1a1BHTm9ZWEkrUGpvNlpYaDBaVzVrT2pwb01Ua3lORFl4WTJFek16Vm1PV1xcXG5FMFpqZG9QQ1p0ZFhRZ2MyVnlaR1ZmYW5OdmJqbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbGNqeFNQaUJoY3lCelpYSmtaVG82WkdVNk9rUmxcXFxuYzJWeWFXRnNhWHBsY2o0Nk9tUmxjMlZ5YVdGc2FYcGxYM04wY25WamREbzZhREJpTnpNeVptUTBPRGcxT0RObE5HRTRianh6ZEdRNk9uXFxcbkJoZEdnNk9rTnZiWEJ2Ym1WdWRITWdZWE1nWTI5eVpUbzZhWFJsY2pvNmRISmhhWFJ6T2pwa2IzVmliR1ZmWlc1a1pXUTZPa1J2ZFdKc1xcXG5aVVZ1WkdWa1NYUmxjbUYwYjNJK09qcHVaWGgwWDJKaFkyczZPbWcyT1RjNU1URXlOR1kxTkRCaE5UYzVPVHAxY213Nk9uQmhjbk5sY2pcXFxubzZVR0Z5YzJWeU9qcGhablJsY2w5a2IzVmliR1ZmYzJ4aGMyZzZPbWcwWTJZek1XWTBORGhoWTJabE4ySTRPamRqYjNKbE9qcHpkSEk2XFxcbk9uQmhkSFJsY200Nk9sTjBjbE5sWVhKamFHVnlPanB1WlhjNk9tZzBNalpoWVRNMU5HVTJNRGs0WkRBeU96ZGhiR3h2WXpvNmMzUnlPalxcXG5vOGFXMXdiQ0J6ZEhJK09qcDBiMTlzYjNkbGNtTmhjMlU2T21nNE5UYzJaV1EyTm1VM1lqZGhaamMzUERaMWNtdzZPbkJoY25ObGNqbzZcXFxuVUdGeWMyVnlPanB3WVhKelpWOXlaV3hoZEdsMlpUbzZhRFZoWVRGa016TmtZbVEwT1dNM1pUazlNWE4wWkRvNmNHRjBhRG82UTI5dGNHXFxcbjl1Wlc1MGN6bzZZWE5mY0dGMGFEbzZhR1ZoT1RZMllUWXpNalZrT1RGbE0yUStLWFZ5YkRvNmFHOXpkRG82U0c5emREbzZjR0Z5YzJVNlxcXG5PbWcxWlRnek56UXlOR0U0TnprM1ptVTRQMDVrWlc1dlgyTmhZMmhsWDJScGNqbzZiRzlqWVd3Nk9reHZZMkZzUTJGamFHVk5ZVzVwWm1cXFxuVnpkRHhGYm5ZK09qcHBibk5sY25SZlpHRjBZVG82YURFMFl6ZGhOREptWTJNME56YzJZV1JBTUhObGNtUmxYMnB6YjI0Nk9tVnljbTl5XFxcbk9qcHRZV3RsWDJWeWNtOXlPanBvTmpkbVpURTJORGt4TkdGbFpUWXhORUV5ZFhKc09qcHdZWEp6WlhJNk9sQmhjbk5sY2pvNmNHRnljMlxcXG5WZmNHRjBhRG82YURjMFpqTTJaVGsxTW1KbVltSm1PR1pDSzNWeWJEbzZVR0Z5YzJWUGNIUnBiMjV6T2pwd1lYSnpaVG82YUdZNU5qQTVcXFxuWmpFeE5XRmhPVFF3T0RKRE1XTnZjbVU2T25OMGNqbzZjMnhwWTJWZlpYSnliM0pmWm1GcGJGOXlkRG82YURrMU5qVmtPVGN4Wm1aaFlqXFxcblF5WmpCRU1uVnliRG82Y0dGeWMyVnlPanBRWVhKelpYSTZPbkJoY25ObFgyaHZjM1E2T21oaFpUVTFaR1psWlRVM05XSmhaV0UwUlU5a1xcXG5aVzV2WDJOaFkyaGxYMlJwY2pvNmJHOWpZV3c2T2t4dlkyRnNRMkZqYUdWTllXNXBabVZ6ZER4RmJuWStPanBuWlhSZmJXVjBZV1JoZEdcXFxuRTZPbWcwTkdVM01UQXdZMlZsWkRCak9UQmhSbEU4WkdGMFlWOTFjbXc2T20xcGJXVTZPazFwYldVZ1lYTWdZMjl5WlRvNmMzUnlPanAwXFxcbmNtRnBkSE02T2taeWIyMVRkSEkrT2pwbWNtOXRYM04wY2pvNmFHUmxNR05oWXpOaVpUTmpZemhrTjJKSExIVnliRG82YUc5emREbzZjR1xcXG5GeWMyVmZhWEIyTm1Ga1pISTZPbWd5TXpFMU9EUTRPVGd4TldZNU1UQTJTRXhrWlc1dlgyTmhZMmhsWDJScGNqbzZiRzlqWVd3Nk9uVnlcXFxuYkY5MGIxOXNiMk5oYkY5emRXSmZjR0YwYURvNmUzdGpiRzl6ZFhKbGZYMDZPbWhsTW1OaU5HVmhPR0kwTTJKbU1qa3lTVGhrYkcxaGJHXFxcbnh2WXpvNlpHeHRZV3hzYjJNNk9rUnNiV0ZzYkc5alBFRStPanBtY21WbE9qcG9ZVGM1WVRoak56VmxPVFU1TkRNMlpFcElZMjl5WlRvNlxcXG5iblZ0T2pwbWJIUXlaR1ZqT2pwemRISmhkR1ZuZVRvNlozSnBjM1U2T21admNtMWhkRjlsZUdGamRGOXZjSFE2T21nNU5UazBNbVZoTmpcXFxuWTBNalJrWVRJNVMyVThjMlZ5WkdWZmQyRnpiVjlpYVc1a1oyVnVPanBrWlRvNlJHVnpaWEpwWVd4cGVtVnlJR0Z6SUhObGNtUmxPanBrXFxcblpUbzZSR1Z6WlhKcFlXeHBlbVZ5UGpvNlpHVnpaWEpwWVd4cGVtVmZiV0Z3T2pwb01XSmxaak5qWTJWak1EVmxaakZoWkV3NFkyOXlaVFxcXG5vNmJuVnRPanBpYVdkdWRXMDZPa0pwWnpNeWVEUXdPanB0ZFd4ZmNHOTNNam82YUdReVl6Vm1NVFV4WlRoaU0yWTFNVEZOTUdGc2JHOWpcXFxuT2pwemRISTZPbXB2YVc1ZloyVnVaWEpwWTE5amIzQjVPanBvTTJVMU5UZGlNall4WmpVek1XUTNPVTR3WVd4c2IyTTZPbk4wY2pvNmFtXFxcbjlwYmw5blpXNWxjbWxqWDJOdmNIazZPbWd4TVRBMU9EaGpNMkl4TVRWalpEaGhUekpwWkc1aE9qcHdkVzU1WTI5a1pUbzZSR1ZqYjJSbFxcXG5jam82WkdWamIyUmxPanBvWVRobVltRXpNVFF6TmpGak5XTTFOVkJIY0dGeWEybHVaMTlzYjNRNk9uSmhkMTl5ZDJ4dlkyczZPbEpoZDFcXFxuSjNURzlqYXpvNmQyRnBkRjltYjNKZmNtVmhaR1Z5Y3pvNmFETTFNelppTWpkalltTXdaVEJpWm1KUlJUeHpaWEprWlRvNlpHVTZPbFZ1XFxcblpYaHdaV04wWldRZ1lYTWdZMjl5WlRvNlptMTBPanBFYVhOd2JHRjVQam82Wm0xME9qcG9PVEkwWkRFM05EUXdaRGt6TmpneU5GSkFjMlxcXG5WeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BqbzZhV2R1YjNKbFgzWmhiSFZsT2pwb01EVmpOREJsWmpBNU1ERTJcXFxuWlRjMk5sTXNZMjl5WlRvNlptMTBPanBHYjNKdFlYUjBaWEk2T25CaFpEbzZhR0V6WkRjeVlUZGlZMkkxWlRZM1pUWlVNMk52Y21VNk9uXFxcbk4wY2pvNlkyOTFiblE2T21SdlgyTnZkVzUwWDJOb1lYSnpPanBvWTJFMllqUTRObUV4T1RJMk5URTJOMVV4UEhOMGNpQmhjeUJqYjNKbFxcXG5PanBtYlhRNk9rUmxZblZuUGpvNlptMTBPanBvTmpFNE5EQmxaamhsTURObE9HUXpZbFpBYzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJcXFxuVnlhV0ZzYVhwbGNqeFNQam82YVdkdWIzSmxYM1poYkhWbE9qcG9NemsxTmpGaU5EQXpabVZsWlRKbVpWZEhhR0Z6YUdKeWIzZHVPanB5XFxcbllYYzZPbWx1Ym1WeU9qcFNZWGRVWVdKc1pUeFVMRUUrT2pweVpYTmxjblpsWDNKbGFHRnphRG82YURBek9EQTJNR0k1TlRNeVl6UmxZMlxcXG5WWVIyaGhjMmhpY205M2JqbzZjbUYzT2pwcGJtNWxjam82VW1GM1ZHRmliR1U4VkN4QlBqbzZjbVZ6WlhKMlpWOXlaV2hoYzJnNk9taGhcXFxuTkRSaU16QTNNMkZoTW1OaU5URmtXVWRvWVhOb1luSnZkMjQ2T25KaGR6bzZhVzV1WlhJNk9sSmhkMVJoWW14bFBGUXNRVDQ2T25KbGMyXFxcblZ5ZG1WZmNtVm9ZWE5vT2pwb1pXRTFOVEZrWldVeU9ETTBPR015TUZwWlpHVnViMTlqWVdOb1pWOWthWEk2T214dlkyRnNPanBNYjJOaFxcXG5iRWgwZEhCRFlXTm9aVHhGYm5ZK09qcGphR1ZqYTE5amIzQjVYMmRzYjJKaGJGOTBiMTlzYjJOaGJEbzZhR1EyTTJOaFlqWTROemsxTkdcXFxuVXlObUpiRFY5ZmNtUnNYM0psWVd4c2IyTmNRbU52Y21VNk9tNTFiVG82Wm14ME1tUmxZem82YzNSeVlYUmxaM2s2T21SeVlXZHZiam82XFxcbmJYVnNYM0J2ZHpFd09qcG9aVFF3TWpka05EZ3dObVkxTmpsa04xMUNZMjl5WlRvNlptMTBPanBtYkc5aGREbzZabXh2WVhSZmRHOWZaR1xcXG5WamFXMWhiRjlqYjIxdGIyNWZaWGhoWTNRNk9tZ3dZbUV5WkRVME1tVTVZekEyT1dRd1htVThKbTExZENCelpYSmtaVjlxYzI5dU9qcGtcXFxuWlRvNlJHVnpaWEpwWVd4cGVtVnlQRkkrSUdGeklITmxjbVJsT2pwa1pUbzZSR1Z6WlhKcFlXeHBlbVZ5UGpvNlpHVnpaWEpwWVd4cGVtXFxcblZmYldGd09qcG9PV1k0T1Rsak9HRTBOamt3WmpCalpsODZZMjl5WlRvNmJuVnRPanBpYVdkdWRXMDZPa0pwWnpNeWVEUXdPanB0ZFd4ZlxcXG5aR2xuYVhSek9qcG9ZMlUwTmpCa1lUVXhOMlJpT0dNMFltQTFZMjl5WlRvNlptMTBPanBHYjNKdFlYUjBaWEk2T25CaFpGOXBiblJsWjNcXFxuSmhiRG82YUdFeU5XSmlaV1kzTURjeVpqQXhNR1poUldOdmNtVTZPbU5vWVhJNk9tMWxkR2h2WkhNNk9qeHBiWEJzSUdOb1lYSStPanBsXFxcbmMyTmhjR1ZmWkdWaWRXZGZaWGgwT2pwb1ptUmtaVGd6Tm1Nek9HTXpNV1ZtTUdJeFkyOXlaVG82YzNSeU9qcGpiMjUyWlhKMGN6bzZablxcXG5KdmJWOTFkR1k0T2pwb1pXTTRPR0l6WVROallqZGxNRFJoTVdOUFpHVnViMTlqWVdOb1pWOWthWEk2T214dlkyRnNPanB0WVc1cFptVnpcXFxuZERvNlRHOWpZV3hEWVdOb1pVMWhibWxtWlhOMFJHRjBZVG82Ym1WM09qcG9OakV4TWpFME5UZGxNV014TUdFeE1XUXlZMjl0Y0dsc1pYXFxcbkpmWW5WcGJIUnBibk02T20xbGJUbzZiV1Z0Ylc5MlpUbzZhR0kxWXpVeFptTmpNbVl5T1RKbFltUmxPV0ZzYkc5ak9qcHpkSEpwYm1jNlxcXG5PbE4wY21sdVp6bzZabkp2YlY5MWRHWTRYMnh2YzNONU9qcG9ZMkV4TTJVeE9UTTJZbUl6TjJVME9XWXhjMlZ5WkdWZmFuTnZiam82Y21cXFxuVmhaRG82Y0dGeWMyVmZaWE5qWVhCbE9qcG9NbVZrTXpFNU1HRTBabVF3TWpOak1XYy9aR1Z1YjE5allXTm9aVjlrYVhJNk9teHZZMkZzXFxcbk9qcDFjbXhmZEc5ZmJHOWpZV3hmYzNWaVgzQmhkR2c2T21neVpUUTJOemxrTldaaE5EVTFNbVEyYUVWelpYSmtaVjlxYzI5dU9qcGtaVFxcXG5vNlJHVnpaWEpwWVd4cGVtVnlQRkkrT2pwd1pXVnJYMmx1ZG1Gc2FXUmZkSGx3WlRvNmFEQXhOR0l5TjJNeFpHWTVOMkpqTmpKcFJXTnZcXFxuY21VNk9tWnRkRG82Wm14dllYUTZPbVpzYjJGMFgzUnZYMlJsWTJsdFlXeGZZMjl0Ylc5dVgzTm9iM0owWlhOME9qcG9PR05qWmpSalltXFxcbkkxT0RjelpEbGlOV28rWTI5eVpUbzZabTEwT2pwR2IzSnRZWFIwWlhJNk9uZHlhWFJsWDJadmNtMWhkSFJsWkY5d1lYSjBjem82YUdVd1xcXG5NVEUzTVRNNE1HSmxNV1kxWkRGckxHTnZjbVU2T201MWJUbzZabkp2YlY5emRISmZjbUZrYVhnNk9tZ3pNekJtTWpBMk9ESXhPVGd3TWpcXFxuQXdiRUp5YVc1bk9qcGthV2RsYzNRNk9uTm9ZVEk2T2tkR2NGOXphR0V5TlRaZllteHZZMnRmWkdGMFlWOXZjbVJsY2pvNmFHTTFNV1ZoXFxcbk56QXdNelk1WWpNNE1EaHRJMk52Y21VNk9tWnRkRG82ZDNKcGRHVTZPbWhtTnpabU5EVTVNVEppTnpoaU56bGlia2R3WVhKcmFXNW5YMlxcXG54dmREbzZjbUYzWDNKM2JHOWphem82VW1GM1VuZE1iMk5yT2pwc2IyTnJYM05vWVhKbFpGOXpiRzkzT2pwb09XSXpOelEwTXpjeVkyTTBcXFxuWmpnelltOU1QR0Z1ZVdodmR6bzZabTEwT2pwSmJtUmxiblJsWkR4VVBpQmhjeUJqYjNKbE9qcG1iWFE2T2xkeWFYUmxQam82ZDNKcGRHXFxcblZmYzNSeU9qcG9ZV0ZoT0dRNFlUUXhaVEF6WldSbFluQW9kWEpzT2pwb2IzTjBPanAzY21sMFpWOXBjSFkyT2pwb09XTmtOMlptTm1ZMFxcXG5OamRpTURGa05IRThZMjl5WlRvNlptMTBPanBHYjNKdFlYUjBaWEk2T25CaFpGOW1iM0p0WVhSMFpXUmZjR0Z5ZEhNNk9tZ3hNbUV4WkRcXFxuWmpaRFUwTnprMk56YzNjaTlqYjNKbE9qcHpiR2xqWlRvNmJXVnRZMmh5T2pwdFpXMXlZMmh5T2pwb1lUUmxZVFUxWm1JME5EQXlObUUxXFxcblpITnNQR052Y21VNk9tbDBaWEk2T21Ga1lYQjBaWEp6T2pwamFHRnBiam82UTJoaGFXNDhRU3hDUGlCaGN5QmpiM0psT2pwcGRHVnlPalxcXG5wMGNtRnBkSE02T21sMFpYSmhkRzl5T2pwSmRHVnlZWFJ2Y2o0Nk9tNWxlSFE2T21nek56UTRZV1V4TnpnNVpUTTNNalV3ZEVSb1lYTm9cXFxuWW5KdmQyNDZPbkpoZHpvNlVtRjNWR0ZpYkdWSmJtNWxjanhCUGpvNmNtVm9ZWE5vWDJsdVgzQnNZV05sT2pwb05XWXdNRGxsTVRKa1kyXFxcbkZpT1RJeFpYVktjR0Z5YTJsdVoxOXNiM1E2T25KaGQxOXlkMnh2WTJzNk9sSmhkMUozVEc5amF6bzZiRzlqYTE5bGVHTnNkWE5wZG1WZlxcXG5jMnh2ZHpvNmFEZzFPRGMxWmpFM01XTmpZbUl3TmpsMk1HTnZjbVU2T25Oc2FXTmxPanB6YjNKME9qcHRaWEpuWlY5emIzSjBPanBvTmpcXFxuazBPVEF3TnpJMlpHWXlPV00xTjNkRlpHVnViMTlqWVdOb1pWOWthWEk2T21OdmJXMXZiam82WW1GelpWOTFjbXhmZEc5ZlptbHNaVzVoXFxcbmJXVmZjR0Z5ZEhNNk9tZ3dOamcxT1dZMFpXWmhZV1kxWWpOaWVFVnpaWEprWlY5cWMyOXVPanBrWlRvNlJHVnpaWEpwWVd4cGVtVnlQRlxcXG5JK09qcHdaV1ZyWDJsdWRtRnNhV1JmZEhsd1pUbzZhRE13T0RKaE1UWTFabVUwWlRBeU1qaDVOWEpwYm1jNk9tUnBaMlZ6ZERvNlFteHZcXFxuWTJ0RGIyNTBaWGgwT2pwbWFXNXBjMmc2T21nMk56RTVNak0zT0dGaE1EWXhNemRpZWxNOFkyOXlaVG82Wm0xME9qcGlkV2xzWkdWeWN6XFxcbm82VUdGa1FXUmhjSFJsY2lCaGN5QmpiM0psT2pwbWJYUTZPbGR5YVhSbFBqbzZkM0pwZEdWZmMzUnlPanBvTVRaaE5EZGtNMlV5TVdRM1xcXG5OVEl5Wm50b1BDWnRkWFFnYzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BpQmhjeUJ6WlhKa1pUbzZaR1U2T2tcXFxuUmxjMlZ5YVdGc2FYcGxjajQ2T21SbGMyVnlhV0ZzYVhwbFgzTjBjblZqZERvNmFHUmlNRFF4WkdZeFpUSTFObVkwTldKOFFXUnNiV0ZzXFxcbmJHOWpPanBrYkcxaGJHeHZZem82Ukd4dFlXeHNiMk04UVQ0Nk9tUnBjM0J2YzJWZlkyaDFibXM2T21nNU5XSXdPREEzWlRRMU1EWmxZalxcXG5jMmZVQmtaVzV2WDIxbFpHbGhYM1I1Y0dVNk9rMWxaR2xoVkhsd1pUbzZabkp2YlY5amIyNTBaVzUwWDNSNWNHVTZPbWhrT0RNNU5UQm1cXFxuTm1JNFpHVmpOV0ZrZmt4d1lYSnJhVzVuWDJ4dmREbzZjbUYzWDNKM2JHOWphem82VW1GM1VuZE1iMk5yT2pwMWJteHZZMnRmWlhoamJIXFxcblZ6YVhabFgzTnNiM2M2T21nellXRXpaREkyTVdSa09ESm1NVEprZnk1cFpHNWhPanB3ZFc1NVkyOWtaVG82Wlc1amIyUmxYMmx1ZEc4NlxcXG5PbWczTlRaa05UazJaREl4WTJaak56ZzJnQUU2WkdWdWIxOWpZV05vWlY5a2FYSTZPbWRzYjJKaGJEbzZkWEpzWDNSdlgyWnBiR1Z1WVdcXFxuMWxPanBvT1dNeU9EbGpOREEzT0RrNU16azRaSUVCUTNOMFpEbzZjR0YwYURvNlEyOXRjRzl1Wlc1MGN6bzZjR0Z5YzJWZmJtVjRkRjlqXFxcbmIyMXdiMjVsYm5SZlltRmphem82YURrMlpHVXhaVGxrTlRSak16SmlOeldDQVVCa1pXNXZYMjFsWkdsaFgzUjVjR1U2T2sxbFpHbGhWSFxcXG5sd1pUbzZabkp2YlY5amIyNTBaVzUwWDNSNWNHVTZPbWhoWXpBeU9ERmxNRE5tWTJSa09URmxnd0YwUEdSbGJtOWZZMkZqYUdWZlpHbHlcXFxuT2pwc2IyTmhiRG82VEc5allXeElkSFJ3UTJGamFHVThSVzUyUGlCaGN5QmtaVzV2WDJOaFkyaGxYMlJwY2pvNlkyRmphR1U2T2toMGRIXFxcbkJEWVdOb1pUNDZPbkpsWVdSZlptbHNaVjlpZVhSbGN6bzZhR0ZpTXpkaFlUZzBaVEZoWVdZNVkyU0VBV0U4WTI5eVpUbzZjM1J5T2pwc1xcXG5iM056ZVRvNlZYUm1PRU5vZFc1cmN5QmhjeUJqYjNKbE9qcHBkR1Z5T2pwMGNtRnBkSE02T21sMFpYSmhkRzl5T2pwSmRHVnlZWFJ2Y2pcXFxuNDZPbTVsZUhRNk9tZ3dZelExWlRFNE5tTTRZVFU1WlRBemhRRkdjMlZ5WkdWZmQyRnpiVjlpYVc1a1oyVnVPanBrWlRvNlJHVnpaWEpwXFxcbllXeHBlbVZ5T2pwcGJuWmhiR2xrWDNSNWNHVmZPanBvWkRCaU1URTNaakEyTkdVek56azVNSVlCWFR4cGJtUmxlRzFoY0RvNmMyVnlaR1xcXG5VNk9rbHVaR1Y0VFdGd1ZtbHphWFJ2Y2p4TExGWXNVejRnWVhNZ2MyVnlaR1U2T21SbE9qcFdhWE5wZEc5eVBqbzZkbWx6YVhSZmJXRndcXFxuT2pwb016Z3dNekV5WWpJNVlqRXlPRGc1WW9jQk4yUmxibTlmYldWa2FXRmZkSGx3WlRvNmJXRndYM1I1Y0dWelkzSnBjSFJmYkdsclpUXFxcbm82YUdJM056YzFNMkkxTVdRNFl6RXpZaldJQVROaGJHeHZZem82Wm0xME9qcG1iM0p0WVhRNk9tWnZjbTFoZEY5cGJtNWxjam82YURrelxcXG5ZekkwWkdaaU1tSTJNVE13WkdHSkFWZzhjMlZ5WkdWZmFuTnZiam82WkdVNk9rMWhjRUZqWTJWemN6eFNQaUJoY3lCelpYSmtaVG82WkdcXFxuVTZPazFoY0VGalkyVnpjejQ2T201bGVIUmZhMlY1WDNObFpXUTZPbWd5WlROaU5UTmxOems1TkdSaE16WTVpZ0ZHUEhOMFpEbzZjR0YwXFxcbmFEbzZRMjl0Y0c5dVpXNTBjeUJoY3lCamIzSmxPanBqYlhBNk9sQmhjblJwWVd4RmNUNDZPbVZ4T2pwb1lqRm1ZbUZqWVRRNFpHWmpNalxcXG5NM09Jc0JNWFZ5YkRvNmNHRnljMlZ5T2pwUVlYSnpaWEk2T21acGJHVmZhRzl6ZERvNmFERmhPRFk0T0RVNFpEUmlZV0ZrWWpLTUFVWmhcXFxuYm5sb2IzYzZPbVp0ZERvNlBHbHRjR3dnWVc1NWFHOTNPanBsY25KdmNqbzZSWEp5YjNKSmJYQnNQam82WkdWaWRXYzZPbWczTTJaalpXXFxcbk0zTmpreFpXSXhNMlkyalFGVlBITmxjbVJsWDJwemIyNDZPbkpsWVdRNk9sTnNhV05sVW1WaFpDQmhjeUJ6WlhKa1pWOXFjMjl1T2pweVxcXG5aV0ZrT2pwU1pXRmtQam82Y0dGeWMyVmZjM1J5T2pwb1pXSTBZMkZrWm1ZME1XWXpZalF6Wkk0Qk9HUmxibTlmYldWa2FXRmZkSGx3WlRcXFxubzZUV1ZrYVdGVWVYQmxPanBtY205dFgzQmhkR2c2T21nNU5EQTVPRGt6TXpRNFpEUTBNall5andGWVBITmxjbVJsWDJwemIyNDZPbVJsXFxcbk9qcE5ZWEJCWTJObGMzTThVajRnWVhNZ2MyVnlaR1U2T21SbE9qcE5ZWEJCWTJObGMzTStPanB1WlhoMFgydGxlVjl6WldWa09qcG9OalxcXG5KaFpHRXhORFkzWWpneFkyUmpOSkFCV0R4elpYSmtaVjlxYzI5dU9qcGtaVG82VFdGd1FXTmpaWE56UEZJK0lHRnpJSE5sY21SbE9qcGtcXFxuWlRvNlRXRndRV05qWlhOelBqbzZibVY0ZEY5clpYbGZjMlZsWkRvNmFEZGhObUppT1RNeU1EazNZbVpqTVdXUkFVQm9ZWE5vWW5KdmQyXFxcbjQ2T25KaGR6bzZVbUYzVkdGaWJHVThWQ3hCUGpvNmNtVnpaWEoyWlY5eVpXaGhjMmc2T21nM09EUTROamN3TVdVM05UaG1Zekpta2dGb1xcXG5QR1JsYm05ZlkyRmphR1ZmWkdseU9qcHNiMk5oYkRvNlRHOWpZV3hJZEhSd1EyRmphR1U4Ulc1MlBpQmhjeUJrWlc1dlgyTmhZMmhsWDJcXFxuUnBjam82WTJGamFHVTZPa2gwZEhCRFlXTm9aVDQ2T25ObGREbzZhRE13TlRsa04ySmtNR1JsTWpVelltYVRBVWRrWlc1dlgyTmhZMmhsXFxcblgyUnBjam82ZDJGemJUbzZSMnh2WW1Gc1NIUjBjRU5oWTJobE9qcG5aWFJmWm1sc1pWOTBaWGgwT2pwb1pqRmxNelkzT0dVeU1EbGxPVFxcXG5oaE01UUJPMk52Y21VNk9uTjBjam82Y0dGMGRHVnliam82VkhkdlYyRjVVMlZoY21Ob1pYSTZPbTVsZUhRNk9taGpNbU14WXpFMU1XSTJcXFxuWmpkak5EZzVsUUU4ZFc1cFkyOWtaVjl1YjNKdFlXeHBlbUYwYVc5dU9qcHViM0p0WVd4cGVtVTZPbU52YlhCdmMyVTZPbWd6WmpJeU5UXFxcbmxrTlRGalpqUXlZVEZrbGdFL2MyVnlaR1ZmYW5OdmJqbzZjMlZ5T2pwbWIzSnRZWFJmWlhOallYQmxaRjl6ZEhKZlkyOXVkR1Z1ZEhNNlxcXG5PbWczTVRCa09EYzBPVGN5TUdWak5UVTNsd0UwYVdSdVlUbzZkWFJ6TkRZNk9rbGtibUU2T25SdlgyRnpZMmxwWDJsdWJtVnlPanBvTm1cXFxuUTFPV0ZpWkdZMk9HUmpNMlF5T1pnQk5HTnZjbVU2T21oaGMyZzZPa0oxYVd4a1NHRnphR1Z5T2pwb1lYTm9YMjl1WlRvNmFEWXhZVFZpXFxcbk1UWmlaR0kwTm1aaU5tT1pBVjQ4WTI5eVpUbzZjM1J5T2pwcGRHVnlPanBUY0d4cGREeFFQaUJoY3lCamIzSmxPanBwZEdWeU9qcDBjbVxcXG5GcGRITTZPbWwwWlhKaGRHOXlPanBKZEdWeVlYUnZjajQ2T201bGVIUTZPbWcxWkRGbE1USTJaRGs1WVRCaU5UWTNtZ0ZCYzJWeVpHVmZcXFxuYW5OdmJqbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbGNqeFNQam82Y0dGeWMyVmZhVzUwWldkbGNqbzZhR1UxWXpNd1pXWXpZekl5WXpFeVlUXFxcbmliQVVGelpYSmtaVjlxYzI5dU9qcGtaVG82UkdWelpYSnBZV3hwZW1WeVBGSStPanB3WVhKelpWOXBiblJsWjJWeU9qcG9PRFJsWlRWbVxcXG5aalUxTWpnNVpXRTVOWndCTUhWeWJEbzZhRzl6ZERvNlNHOXpkRG82Y0dGeWMyVmZiM0JoY1hWbE9qcG9OamMwWkdaa016RXpaV1F6WW1cXFxuTXpacDBCWFR4cGJtUmxlRzFoY0RvNmMyVnlaR1U2T2tsdVpHVjRUV0Z3Vm1semFYUnZjanhMTEZZc1V6NGdZWE1nYzJWeVpHVTZPbVJsXFxcbk9qcFdhWE5wZEc5eVBqbzZkbWx6YVhSZmJXRndPanBvT0dOaU5qZ3lNbU5tTkdFNU9XUmtNcDRCTG5WeWJEbzZhRzl6ZERvNmNHRnljMlxcXG5WZmFYQjJORzUxYldKbGNqbzZhREZrT1ROa1pUUmpaRFUyTldObE56T2ZBV3c4WTI5eVpUbzZhWFJsY2pvNllXUmhjSFJsY25NNk9tTm9cXFxuWVdsdU9qcERhR0ZwYmp4QkxFSStJR0Z6SUdOdmNtVTZPbWwwWlhJNk9uUnlZV2wwY3pvNmFYUmxjbUYwYjNJNk9rbDBaWEpoZEc5eVBqXFxcbm82Wm05c1pEbzZhR1poWXpjNVpHSXdORFl4TVdGak0yYWdBVUp6WlhKa1pWOXFjMjl1T2pwa1pUbzZSR1Z6WlhKcFlXeHBlbVZ5UEZJK1xcXG5PanB3WVhKelpWOWxlSEJ2Ym1WdWREbzZhRFEyT0RZek1qVmlZamsyTURnMlpEV2hBVmc4YzJWeVpHVmZhbk52YmpvNlpHVTZPazFoY0VcXFxuRmpZMlZ6Y3p4U1BpQmhjeUJ6WlhKa1pUbzZaR1U2T2sxaGNFRmpZMlZ6Y3o0Nk9tNWxlSFJmYTJWNVgzTmxaV1E2T21nMFl6Y3pPREprXFxcbk56RmlaREZpTldKbW9nRkFhR0Z6YUdKeWIzZHVPanB5WVhjNk9sSmhkMVJoWW14bFBGUXNRVDQ2T25KbGMyVnlkbVZmY21Wb1lYTm9PalxcXG5wb05HTmlaR1UxWkRrME1EZGpPRFEzTUtNQlFuTmxjbVJsWDJwemIyNDZPbVJsT2pwRVpYTmxjbWxoYkdsNlpYSThVajQ2T25CaGNuTmxcXFxuWDJWNGNHOXVaVzUwT2pwb1ltSmxOell3Wmpkak4yVmpORGRsTUtRQldEeHpaWEprWlY5cWMyOXVPanBrWlRvNlRXRndRV05qWlhOelBGXFxcbkkrSUdGeklITmxjbVJsT2pwa1pUbzZUV0Z3UVdOalpYTnpQam82Ym1WNGRGOXJaWGxmYzJWbFpEbzZhRFppTm1WbFpURTNPVFUwWWpoalxcXG5ZalNsQVZ3OGMyVnlaR1ZmYW5OdmJqbzZaR1U2T2xObGNVRmpZMlZ6Y3p4U1BpQmhjeUJ6WlhKa1pUbzZaR1U2T2xObGNVRmpZMlZ6Y3pcXFxuNDZPbTVsZUhSZlpXeGxiV1Z1ZEY5elpXVmtPanBvTkdRMVpqWXhNalF4TkdJME0yUTNPS1lCUUdoaGMyaGljbTkzYmpvNmNtRjNPanBTXFxcbllYZFVZV0pzWlR4VUxFRStPanB5WlhObGNuWmxYM0psYUdGemFEbzZhR0UwTXpSa05qSXdOakkwTXprMVpUYW5BVUJvWVhOb1luSnZkMlxcXG40Nk9uSmhkem82VW1GM1ZHRmliR1U4VkN4QlBqbzZjbVZ6WlhKMlpWOXlaV2hoYzJnNk9taGtNVGMwT0RjM01tTXhZelZoTVRjeXFBRkJcXFxuY0dGeWEybHVaMTlzYjNSZlkyOXlaVG82Y0dGeWEybHVaMTlzYjNRNk9sUm9jbVZoWkVSaGRHRTZPbTVsZHpvNmFHVTROV1ZsTjJGbFpXXFxcblprWldWa1lqZXBBVVprWlc1dlgyTmhZMmhsWDJScGNqbzZkMkZ6YlRvNlRHOWpZV3hJZEhSd1EyRmphR1U2T21kbGRGOW1hV3hsWDNSbFxcXG5lSFE2T21nek1UTTRZMk01TkRBd05tUXpOMlF3cWdGWVBITmxjbVJsWDJwemIyNDZPbVJsT2pwTllYQkJZMk5sYzNNOFVqNGdZWE1nYzJcXFxuVnlaR1U2T21SbE9qcE5ZWEJCWTJObGMzTStPanB1WlhoMFgydGxlVjl6WldWa09qcG9ZekpsWWpkall6SmxNVFkzWW1ObU42c0JPbU52XFxcbmNtVTZPbk4wY2pvNmFYUmxjam82VTNCc2FYUkpiblJsY201aGJEeFFQam82Ym1WNGREbzZhRGM1TmpsbE9UVTJOekV6WTJVelpXT3NBV1xcXG5VOEptMTFkQ0J6WlhKa1pWOXFjMjl1T2pwa1pUbzZSR1Z6WlhKcFlXeHBlbVZ5UEZJK0lHRnpJSE5sY21SbE9qcGtaVG82UkdWelpYSnBcXFxuWVd4cGVtVnlQam82WkdWelpYSnBZV3hwZW1WZmJXRndPanBvTUdReU1qWTJNVEUzWWpabU5ETmxNSzBCWlR3bWJYVjBJSE5sY21SbFgyXFxcbnB6YjI0Nk9tUmxPanBFWlhObGNtbGhiR2w2WlhJOFVqNGdZWE1nYzJWeVpHVTZPbVJsT2pwRVpYTmxjbWxoYkdsNlpYSStPanBrWlhObFxcXG5jbWxoYkdsNlpWOXRZWEE2T21nME1EUmhPR1JsT1RWa016SmlaREkxcmdGbFBDWnRkWFFnYzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJcXFxuVnlhV0ZzYVhwbGNqeFNQaUJoY3lCelpYSmtaVG82WkdVNk9rUmxjMlZ5YVdGc2FYcGxjajQ2T21SbGMyVnlhV0ZzYVhwbFgyMWhjRG82XFxcbmFHVTFOREU1T1RGa01tTmhNR1ZpWTJTdkFWZzhjMlZ5WkdWZmFuTnZiam82WkdVNk9rMWhjRUZqWTJWemN6eFNQaUJoY3lCelpYSmtaVFxcXG5vNlpHVTZPazFoY0VGalkyVnpjejQ2T201bGVIUmZhMlY1WDNObFpXUTZPbWcwTW1ObE5qSmlOek0wWVdJMVl6QTVzQUZNUEdOdmNtVTZcXFxuT201bGREbzZhWEJmWVdSa2NqbzZTWEIyTkVGa1pISWdZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPanBvWWpaaE9UXFxcblZqWlRjek5XTXlObU0yTWJFQlhUeHBibVJsZUcxaGNEbzZjMlZ5WkdVNk9rbHVaR1Y0VFdGd1ZtbHphWFJ2Y2p4TExGWXNVejRnWVhNZ1xcXG5jMlZ5WkdVNk9tUmxPanBXYVhOcGRHOXlQam82ZG1semFYUmZiV0Z3T2pwb05qVmxPV0kxTXpobVl6WTNaV05rT2JJQk9XTnZjbVU2T21cXFxuOXdjem82Wm5WdVkzUnBiMjQ2T2tadVQyNWpaVG82WTJGc2JGOXZibU5sT2pwb1l6RXlaR0kzTURReU5qUmhORGczTXJNQk9XUmxibTlmXFxcblkyRmphR1ZmWkdseU9qcG5iRzlpWVd3Nk9uZHlhWFJsWDIxbGRHRmtZWFJoT2pwb1kyVTFaRFUwTldRMU9UbGpOemRpWnJRQk1HTnZjbVxcXG5VNk9uTnNhV05sT2pwemIzSjBPanB0WlhKblpWOXpiM0owT2pwb1lXUmtaV1V5WkRnNU1HTTRZV05sTmJVQlFEeHpaWEprWlRvNlpHVTZcXFxuT2s5dVpVOW1JR0Z6SUdOdmNtVTZPbVp0ZERvNlJHbHpjR3hoZVQ0Nk9tWnRkRG82YURSa1pEVmtPVEppWXpNek56azRZalcyQVZKaGJuXFxcbmxvYjNjNk9tVnljbTl5T2pvOGFXMXdiQ0JqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGtnWm05eUlHRnVlV2h2ZHpvNlJYSnliM0krT2pwbVxcXG5iWFE2T21nMVptSXdNVFprTXpRME5qWm1NRFU1dHdGWVkyOXlaVG82Ym5WdE9qcG1iSFF5WkdWak9qcHpkSEpoZEdWbmVUbzZaM0pwYzNcXFxuVTZPbVp2Y20xaGRGOWxlR0ZqZEY5dmNIUTZPbkJ2YzNOcFlteDVYM0p2ZFc1a09qcG9NV1k0WTJRME1ETTJNakkyT0RobE9MZ0JYRHh6XFxcblpYSmtaVjlxYzI5dU9qcGtaVG82VTJWeFFXTmpaWE56UEZJK0lHRnpJSE5sY21SbE9qcGtaVG82VTJWeFFXTmpaWE56UGpvNmJtVjRkRlxcXG45bGJHVnRaVzUwWDNObFpXUTZPbWc0TXpoaFpXUTFORFUyTldRMk56YzR1UUUyWTI5eVpUbzZjM1J5T2pvOGFXMXdiQ0J6ZEhJK09qcDBcXFxuY21sdFgyMWhkR05vWlhNNk9taGhOREpsWm1Vek5URTFaVFppT0dSbHVnRmNQSE5sY21SbFgycHpiMjQ2T21SbE9qcFRaWEZCWTJObGMzXFxcbk04VWo0Z1lYTWdjMlZ5WkdVNk9tUmxPanBUWlhGQlkyTmxjM00rT2pwdVpYaDBYMlZzWlcxbGJuUmZjMlZsWkRvNmFERmtNemszTkRZMVxcXG5PVEJrWXpFMFpqaTdBVnc4YzJWeVpHVmZhbk52YmpvNlpHVTZPbE5sY1VGalkyVnpjenhTUGlCaGN5QnpaWEprWlRvNlpHVTZPbE5sY1VcXFxuRmpZMlZ6Y3o0Nk9tNWxlSFJmWld4bGJXVnVkRjl6WldWa09qcG9ORGxqTlRZMll6QmtPV0pqWmpKbU9Md0JYRHh6WlhKa1pWOXFjMjl1XFxcbk9qcGtaVG82VTJWeFFXTmpaWE56UEZJK0lHRnpJSE5sY21SbE9qcGtaVG82VTJWeFFXTmpaWE56UGpvNmJtVjRkRjlsYkdWdFpXNTBYM1xcXG5ObFpXUTZPbWhtWVRRMVpqTTRaakl5T1Rjd05UZzV2UUU0WTI5eVpUbzZiblZ0T2pwbWJIUXlaR1ZqT2pwa2FXZHBkSE5mZEc5ZlpHVmpcXFxuWDNOMGNqbzZhRFZrTXpZeU56VmhNREJsTldReE9USytBVHhrYkcxaGJHeHZZem82Wkd4dFlXeHNiMk02T2tSc2JXRnNiRzlqUEVFK09qXFxcbnB0WlcxaGJHbG5iam82YURWak56aGtaV1JqWm1SaE16VTNObUsvQVRWemRHUTZPbkJoZEdnNk9sQmhkR2hDZFdZNk9sOXpaWFJmWlhoMFxcXG5aVzV6YVc5dU9qcG9abU01WVdKalpUazBNakJsTTJNMU9NQUJYRHh6WlhKa1pWOXFjMjl1T2pwa1pUbzZVMlZ4UVdOalpYTnpQRkkrSUdcXFxuRnpJSE5sY21SbE9qcGtaVG82VTJWeFFXTmpaWE56UGpvNmJtVjRkRjlsYkdWdFpXNTBYM05sWldRNk9tZzNaVEk0TWpjM1pHWXdaakl3XFxcblpHWXh3UUUzWTI5eVpUbzZjR0Z1YVdOcmFXNW5PanBoYzNObGNuUmZabUZwYkdWa1gybHVibVZ5T2pwb01tWmtaR0psWkRWaU9XRXlPR1xcXG5Fd01jSUJObk5sY21SbE9qcHpaWEk2T2xObGNtbGhiR2w2WlhJNk9tTnZiR3hsWTNSZmJXRndPanBvT0dOa01URXdNakEwTjJObFlURXlcXFxuTmNNQlJuTmxjbVJsWDJwemIyNDZPbVJsT2pwRVpYTmxjbWxoYkdsNlpYSThVajQ2T21SbGMyVnlhV0ZzYVhwbFgyNTFiV0psY2pvNmFEXFxcbmN6WXpFM05HVTVZVGs1TmpRM01HTEVBVnc4YzJWeVpHVmZhbk52YmpvNlpHVTZPbE5sY1VGalkyVnpjenhTUGlCaGN5QnpaWEprWlRvNlxcXG5aR1U2T2xObGNVRmpZMlZ6Y3o0Nk9tNWxlSFJmWld4bGJXVnVkRjl6WldWa09qcG9aamMxTVRobE4yUTFOMlk0WTJNd1k4VUJYRHh6WlhcXFxuSmtaVjlxYzI5dU9qcGtaVG82VTJWeFFXTmpaWE56UEZJK0lHRnpJSE5sY21SbE9qcGtaVG82VTJWeFFXTmpaWE56UGpvNmJtVjRkRjlsXFxcbmJHVnRaVzUwWDNObFpXUTZPbWcwWmpReU1qRTJaRGc0WVROa04yWmh4Z0ZUUEhObGNtUmxYMnB6YjI0Nk9uSmxZV1E2T2xOMGNsSmxZV1xcXG5RZ1lYTWdjMlZ5WkdWZmFuTnZiam82Y21WaFpEbzZVbVZoWkQ0Nk9uQmhjbk5sWDNOMGNqbzZhRFprWVRGaE56RTVOMkkyTnpCbE5UREhcXFxuQVdvOFkyOXlaVG82YVhSbGNqbzZZV1JoY0hSbGNuTTZPbkpsZGpvNlVtVjJQRWsrSUdGeklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6XFxcbm82YVhSbGNtRjBiM0k2T2tsMFpYSmhkRzl5UGpvNmRISjVYMlp2YkdRNk9taG1OelUyTjJGaU5UZ3hOR1kwWkRrNXlBRkhZMjl5WlRvNlxcXG5kVzVwWTI5a1pUbzZkVzVwWTI5a1pWOWtZWFJoT2pwbmNtRndhR1Z0WlY5bGVIUmxibVE2T214dmIydDFjRG82YUdWak5tSXlaakUzTWpcXFxuVTRaamRsT0diSkFVWmpiM0psT2pwMWJtbGpiMlJsT2pwMWJtbGpiMlJsWDJSaGRHRTZPbU5oYzJWZmFXZHViM0poWW14bE9qcHNiMjlyXFxcbmRYQTZPbWhqTVdJM09UY3hOak5qT1RnMVl6VTJ5Z0U5WTI5eVpUbzZkVzVwWTI5a1pUbzZkVzVwWTI5a1pWOWtZWFJoT2pwallYTmxaRFxcXG5vNmJHOXZhM1Z3T2pwb05HUmhZbVZrTkdWa09XUTVNREkxTmNzQm5RRThjMlZ5WkdVNk9tUmxPanBwYlhCc2N6bzZQR2x0Y0d3Z2MyVnlcXFxuWkdVNk9tUmxPanBFWlhObGNtbGhiR2w2WlNCbWIzSWdjM1JrT2pwMGFXMWxPanBUZVhOMFpXMVVhVzFsUGpvNlpHVnpaWEpwWVd4cGVtXFxcblU2T2tSMWNtRjBhVzl1Vm1semFYUnZjaUJoY3lCelpYSmtaVG82WkdVNk9sWnBjMmwwYjNJK09qcDJhWE5wZEY5dFlYQTZPbWcyTVRCbFxcXG5aRFJrWW1JMFlURTFORGt5ekFFMWNtbHVaem82WkdsblpYTjBPanB6YUdFeU5UWmZabTl5YldGMFgyOTFkSEIxZERvNmFEWTFNV1U0T0dcXFxuVm1NMlpqWlRjd01tTE5BVEpqYjNKbE9qcDFibWxqYjJSbE9qcHdjbWx1ZEdGaWJHVTZPbU5vWldOck9qcG9ZMll5WVdFd05UWXdaakU0XFxcbk1UZzRZODRCUlR4emRHUTZPbWx2T2pwbGNuSnZjam82UlhKeWIzSWdZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPalxcXG5wb01XUXlOVE0wTXpNMlpEUXdaR015TmM4QlJuTmxjbVJsWDJwemIyNDZPbVJsT2pwRVpYTmxjbWxoYkdsNlpYSThVajQ2T21SbGMyVnlcXFxuYVdGc2FYcGxYMjUxYldKbGNqbzZhRE0wWlRjNE5qZGxNemRtWWpoak1UZlFBVEJ5YVc1bk9qcGthV2RsYzNRNk9rTnZiblJsZUhRNk9uXFxcblZ3WkdGMFpUbzZhR000TVRFMU56Z3lZbVpoTjJJME1XVFJBVE4xY213Nk9uQmhjbk5sY2pvNlVHRnljMlZ5T2pwd1lYSnpaVjl4ZFdWeVxcXG5lVG82YURJeE5qbGxOVEU1TVdVd1lUWmtORFBTQVdkemRHUTZPbWx2T2pwbGNuSnZjam82UEdsdGNHd2dZMjl5WlRvNlptMTBPanBFWldcXFxuSjFaeUJtYjNJZ2MzUmtPanBwYnpvNlpYSnliM0k2T25KbGNISmZkVzV3WVdOclpXUTZPbEpsY0hJK09qcG1iWFE2T21nM1l6bGtPV0V5XFxcbk5ETmlaakJtTkRndzB3RTZZMjl5WlRvNlptMTBPanBpZFdsc1pHVnljem82UkdWaWRXZFRkSEoxWTNRNk9tWnBaV3hrT2pwb01tTTFOVFxcXG5NNU9XWmtNV0poWlRWbE1kUUJQV1JsYm05ZlkyRmphR1ZmWkdseU9qcDNZWE50T2pwSGJHOWlZV3hJZEhSd1EyRmphR1U2T25ObGREbzZcXFxuYURnMk1EYzVNamd4WlRSbVlUWTBaR1BWQVR4a1pXNXZYMk5oWTJobFgyUnBjam82ZDJGemJUbzZURzlqWVd4SWRIUndRMkZqYUdVNk9uXFxcbk5sZERvNmFERm1aalUwTnpnek5tVXlOVGxrTkRmV0FVMXBibVJsZUcxaGNEbzZiV0Z3T2pwamIzSmxPanBKYm1SbGVFMWhjRU52Y21VOFxcXG5TeXhXUGpvNmMzZGhjRjl5WlcxdmRtVmZabWx1YVhOb09qcG9aR0U1WldJM1ptWmhPV0UzWkRSa05OY0JSV1JsYm05ZlkyRmphR1ZmWkdcXFxubHlPanAzWVhOdE9qcEhiRzlpWVd4SWRIUndRMkZqYUdVNk9tZGxkRjlvWldGa1pYSnpPanBvWVdZMU1EUXpPVGN4WW1ZNU16aGhNTmdCXFxcblBIVnliRG82Y0dGeWMyVnlPanBRWVhKelpYSTZPbU5vWldOclgzVnliRjlqYjJSbFgzQnZhVzUwT2pwb016TXdOakUxTUdGbE9ETmhNVFxcXG5RNFpOa0JkRHhrWlc1dlgyTmhZMmhsWDJScGNqbzZaMnh2WW1Gc09qcEhiRzlpWVd4SWRIUndRMkZqYUdVOFJXNTJQaUJoY3lCa1pXNXZcXFxuWDJOaFkyaGxYMlJwY2pvNlkyRmphR1U2T2toMGRIQkRZV05vWlQ0Nk9uSmxZV1JmYldWMFlXUmhkR0U2T21nM05tTTBNakF3TXpZd1pEXFxcbkZoTkdGazJnRTRaR1Z1YjE5allXTm9aVjlrYVhJNk9uZGhjMjA2T25WeWJGOTBiMTltYVd4bGJtRnRaVG82YURSa016ZzRNakV5WkRBeFxcXG5aVFl3WkRMYkFTTjFjbXc2T2xWeWJEbzZiWFYwWVhSbE9qcG9OR1JoTm1VMU1EVXpNR0UwWVRSaE5kd0Jnd0Z3WlhKalpXNTBYMlZ1WTJcXFxuOWthVzVuT2pvOGFXMXdiQ0JqYjNKbE9qcGpiMjUyWlhKME9qcEdjbTl0UEhCbGNtTmxiblJmWlc1amIyUnBibWM2T2xCbGNtTmxiblJFXFxcblpXTnZaR1UrSUdadmNpQmhiR3h2WXpvNlltOXljbTkzT2pwRGIzYzhXM1U0WFQ0K09qcG1jbTl0T2pwb05XUTBPREkzTnpsbE5qTTNaR1xcXG5WaU1kMEJSRHhrWVhSaFgzVnliRG82YldsdFpUbzZUV2x0WlNCaGN5QmpiM0psT2pwbWJYUTZPa1JwYzNCc1lYaytPanBtYlhRNk9tZzFcXFxuWW1NeFl6TmxNMlE1TUdNeU56Qm0zZ0U3UENadGRYUWdWeUJoY3lCamIzSmxPanBtYlhRNk9sZHlhWFJsUGpvNmQzSnBkR1ZmWTJoaGNqXFxcbm82YURRME5tVXlNRFUwTjJaaU5EUmhPRFBmQVYwOGMzUmtPanBqYjJ4c1pXTjBhVzl1Y3pvNmFHRnphRG82YldGd09qcEVaV1poZFd4MFxcXG5TR0Z6YUdWeUlHRnpJR052Y21VNk9taGhjMmc2T2toaGMyaGxjajQ2T21acGJtbHphRG82YURGaU16UXdOVEU1TURnek16aGxPV2JnQVdcXFxuRThZMjl5WlRvNmMzUnlPanB3WVhSMFpYSnVPanBEYUdGeVUyVmhjbU5vWlhJZ1lYTWdZMjl5WlRvNmMzUnlPanB3WVhSMFpYSnVPanBUXFxcblpXRnlZMmhsY2o0Nk9tNWxlSFJmYldGMFkyZzZPbWhqTldNeE5UUmtObU5oTWpVNFl6YzQ0UUV1WVd4c2IyTTZPbk4wY21sdVp6bzZVM1xcXG5SeWFXNW5PanB3ZFhOb09qcG9abVE1WWprellXRTFaakZqTW1VMk1PSUJQanh6ZEdRNk9uQmhkR2c2T2xCaGRHZ2dZWE1nWTI5eVpUbzZcXFxuYUdGemFEbzZTR0Z6YUQ0Nk9taGhjMmc2T21nME1ESTNOMlk1TldFMU5XRXpNR1F3NHdFeFkyOXRjR2xzWlhKZlluVnBiSFJwYm5NNk9tXFxcbjFsYlRvNmJXVnRZM0I1T2pwb05UVXdNMkV6WWpBeVpESXdORFUwTitRQkwyTnZjbVU2T21adGREbzZiblZ0T2pwcGJYQTZPbVp0ZEY5MVxcXG5OalE2T21nNFlXUmlOelUyT0RZNFpETXpOR0kxNVFGU1BHTnZjbVU2T25CaGJtbGpPanB3WVc1cFkxOXBibVp2T2pwUVlXNXBZMGx1Wm1cXFxuOGdZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPanBvTkdJeFpUazNNemhqTm1Vd1pXRmhOdVlCUm1OdmNtVTZPbVp0XFxcbmREbzZiblZ0T2pvOGFXMXdiQ0JqYjNKbE9qcG1iWFE2T2tSbFluVm5JR1p2Y2lCMU9ENDZPbVp0ZERvNmFEYzNNMlkzTjJVNU56Um1NbVxcXG5NeFlXVG5BVWRqYjNKbE9qcG1iWFE2T201MWJUbzZQR2x0Y0d3Z1kyOXlaVG82Wm0xME9qcEVaV0oxWnlCbWIzSWdkVFkwUGpvNlptMTBcXFxuT2pwb01UbGpabVpqTmpsaE5tWTFObUl3TU9nQkxYTjBaRG82Y0dGMGFEbzZVR0YwYURvNlptbHNaVjl6ZEdWdE9qcG9ZMk0yWmpNNU5UXFxcblJsTldNM01UbGxaZWtCUVhObGNtUmxYMnB6YjI0Nk9tUmxPanBFWlhObGNtbGhiR2w2WlhJOFVqNDZPbkJoY25ObFgyUmxZMmx0WVd3NlxcXG5PbWhtTVdWaE5qUTROVFE1WVdObU1qTTA2Z0ZCYzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BqbzZjR0Z5YzJcXFxuVmZaR1ZqYVcxaGJEbzZhRGs1WVRjeU9XVm1OMkUwWXpjd05tYnJBVEp6YldGc2JIWmxZem82VTIxaGJHeFdaV004UVQ0Nk9uUnllVjluXFxcbmNtOTNPanBvWkRJek1ERTNPREJrTkdZMk5qQmxadXdCUjJOdmNtVTZPbVp0ZERvNmJuVnRPam84YVcxd2JDQmpiM0psT2pwbWJYUTZPa1xcXG5SbFluVm5JR1p2Y2lCMU16SStPanBtYlhRNk9tZzNObVZtT1dWa1pHWTRNamRsT1RVMDdRRTRkWEpzT2pwd1lYSnpaWEk2T2xCaGNuTmxcXFxuY2pvNmNHRnljMlZmY0dGMGFGOXpkR0Z5ZERvNmFHTXpNVEU0WlRjd1pUSXpOelUyWmpIdUFTNXBaRzVoT2pwMWRITTBOam82U1dSdVlUXFxcbm82ZEc5ZllYTmphV2s2T21neE9HUXpNRE5qTUdRMU1tTTFNMlZrN3dFNWMzUmtPanB3WVhSb09qcERiMjF3YjI1bGJuUnpPanBwYm1Oc1xcXG5kV1JsWDJOMWNsOWthWEk2T21nME5tTTFZalU0WmpSbE5qZzBOV1psOEFFcGMzUmtPanB3WVhSb09qcFFZWFJvT2pwZmFtOXBiam82YUdcXFxuVXlNamhrTnpSa1l6UXhaamcwTW1UeEFVdzhjMlZ5WkdWZmFuTnZiam82WlhKeWIzSTZPa1Z5Y205eVEyOWtaU0JoY3lCamIzSmxPanBtXFxcbmJYUTZPa1JwYzNCc1lYaytPanBtYlhRNk9tZzFaR05rTVRrMk5EWXdObVU1TlRVeThnRXRjM1JrT2pwd1lYUm9PanBRWVhSb09qcGxlSFxcXG5SbGJuTnBiMjQ2T21obE4yUm1NV0V5WlRJeVkyRXpOelU1OHdGSlpHVnViMTl0WldScFlWOTBlWEJsT2pwTlpXUnBZVlI1Y0dVNk9tWnlcXFxuYjIxZmMzQmxZMmxtYVdWeVgyRnVaRjlvWldGa1pYSnpPanBvTm1Wa056VXdNREUyT1RNeFlqSXhNZlFCT1dOdmNtVTZPbVp0ZERvNlluXFxcblZwYkdSbGNuTTZPa1JsWW5WblZIVndiR1U2T21acFpXeGtPanBvWlRZM01UbGtaRFkwTTJFNFlqTXpaUFVCWkR4elpYSmtaVG82WkdVNlxcXG5PblpoYkhWbE9qcE5ZWEJFWlhObGNtbGhiR2w2WlhJOFNTeEZQaUJoY3lCelpYSmtaVG82WkdVNk9rMWhjRUZqWTJWemN6NDZPbTVsZUhcXFxuUmZaVzUwY25sZmMyVmxaRG82YUdObE56SmhNVFV5WmpOaE1EbGxaV0gyQVVaa2JHMWhiR3h2WXpvNlpHeHRZV3hzYjJNNk9rUnNiV0ZzXFxcbmJHOWpQRUUrT2pwMWJteHBibXRmYkdGeVoyVmZZMmgxYm1zNk9tZzFZalk1WkRNMVlqRTJOR1ZrWmprNDl3RnFQR1JsYm05ZlkyRmphR1xcXG5WZlpHbHlPanBuYkc5aVlXdzZPa2RzYjJKaGJFaDBkSEJEWVdOb1pUeEZiblkrSUdGeklHUmxibTlmWTJGamFHVmZaR2x5T2pwallXTm9cXFxuWlRvNlNIUjBjRU5oWTJobFBqbzZjMlYwT2pwb05EWTRaVGMyTTJZNVpUWm1OR0UxTS9nQlJHUmxibTlmWTJGamFHVmZaR2x5T2pwM1lYXFxcbk50T2pwTWIyTmhiRWgwZEhCRFlXTm9aVG82WjJWMFgyaGxZV1JsY25NNk9taGhPV1ZpWXpjM04ySXpaVE0yTUdaaCtRRkNjMlZ5WkdWZlxcXG5hbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BqbzZhV2R1YjNKbFgybHVkR1ZuWlhJNk9tZ3lNR05oTVdObFpUZGlObVpoTlRcXFxuZzArZ0ZHWkd4dFlXeHNiMk02T21Sc2JXRnNiRzlqT2pwRWJHMWhiR3h2WXp4QlBqbzZhVzV6WlhKMFgyeGhjbWRsWDJOb2RXNXJPanBvXFxcbk5XRXdaall6TkRFNE5XUXhNMkU1TXZzQk1qeGphR0Z5SUdGeklHTnZjbVU2T21adGREbzZSR1ZpZFdjK09qcG1iWFE2T21obVl6VmlObVxcXG5ZMVptWmhZbVppTUdaaC9BRTdQQ1p0ZFhRZ1Z5QmhjeUJqYjNKbE9qcG1iWFE2T2xkeWFYUmxQam82ZDNKcGRHVmZZMmhoY2pvNmFESmxcXFxuTlRobU5ERXlNVEU0TlRObE5qRDlBVFpqYjNKbE9qcHpiR2xqWlRvNmJXVnRZMmh5T2pwdFpXMWphSEpmWVd4cFoyNWxaRG82YURnNE16XFxcblE1TWpZMVlUZ3habVl3WTJUK0FWcG9ZWE5vWW5KdmQyNDZPbkpoZHpvNmFXNXVaWEk2T2xKaGQxUmhZbXhsU1c1dVpYSThRVDQ2T21acFxcXG5ibVJmYjNKZlptbHVaRjlwYm5ObGNuUmZjMnh2ZEY5cGJtNWxjam82YUdGbE56QTRNV0U0TkRRM05EZzVNamIvQVRGamIyNXpiMnhsWDJcXFxuVnljbTl5WDNCaGJtbGpYMmh2YjJzNk9taHZiMnM2T21obFpUSTRNemxsTnpOaVpETTRZelkyZ0FKQ1kyOXlaVG82YzNSeU9qcDJZV3hwXFxcblpHRjBhVzl1Y3pvNmJtVjRkRjlqYjJSbFgzQnZhVzUwWDNKbGRtVnljMlU2T21neFlqYzNNemd4T0ROaVpqazJZVE5rZ1FJNVkyOXlaVFxcXG5vNlptMTBPanBpZFdsc1pHVnljem82UkdWaWRXZEpibTVsY2pvNlpXNTBjbms2T21nellUTmtaakU1TWpnNVpUQm1NV1UxZ2dKUlkyOXlcXFxuWlRvNmJuVnRPam84YVcxd2JDQmpiM0psT2pwemRISTZPblJ5WVdsMGN6bzZSbkp2YlZOMGNpQm1iM0lnZFRNeVBqbzZabkp2YlY5emRIXFxcbkk2T21oaU9UVTFNVEkxTXpSbFpXUXhNV0UwZ3dKQ2MyVnlaR1ZmYW5OdmJqbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbGNqeFNQam82YVdkdVxcXG5iM0psWDJsdWRHVm5aWEk2T21neU9XRmlNR1ZqTURkak1UWTVaV001aEFJMlkyOXlaVG82YzNSeU9qbzhhVzF3YkNCemRISStPanAwY21cXFxubHRYMjFoZEdOb1pYTTZPbWd6WXpVME16ZzBaVEV6TVdKa09HTXdoUUpQWkdWdWIxOWpZV05vWlY5a2FYSTZPbXh2WTJGc09qcE1iMk5oXFxcbmJFTmhZMmhsVFdGdWFXWmxjM1E4Ulc1MlBqbzZibVYzWDJsdWRHVnlibUZzT2pwb05EVXpaVE0xTURNM09XSTJOek0zTW9ZQ1FIQmhjbVxcXG50cGJtZGZiRzkwWDJOdmNtVTZPbkJoY210cGJtZGZiRzkwT2pwSVlYTm9WR0ZpYkdVNk9tNWxkem82YUdNM01XTTRNelpsTkRGaFptWXdcXFxuTnppSEFrbzhZV3hzYjJNNk9uTjBjbWx1WnpvNlUzUnlhVzVuSUdGeklHTnZjbVU2T21adGREbzZWM0pwZEdVK09qcDNjbWwwWlY5amFHXFxcbkZ5T2pwb1ltTXpNRGc1TUdJd1pqUTJObVV5Tm9nQ1NqeGhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWNnWVhNZ1kyOXlaVG82Wm0xMFxcXG5PanBYY21sMFpUNDZPbmR5YVhSbFgyTm9ZWEk2T21oaVl6TXdPRGt3WWpCbU5EWTJaVEkyaVFJclkyOXlaVG82YzJ4cFkyVTZPbk52Y25cXFxuUTZPbTFsY21kbE9qcG9ZbVZsTVRnM01XUmlaREE1WlRoaE1Zb0NLMk52Y21VNk9uTnNhV05sT2pwemIzSjBPanB0WlhKblpUbzZhRFU0XFxcblpEZzBNemRrTURCbVpUaGlZVE9MQWpROFkyaGhjaUJoY3lCamIzSmxPanBtYlhRNk9rUnBjM0JzWVhrK09qcG1iWFE2T21oaE5UWmlOelxcXG5BMU1tWTJNbVU1WWpSaWpBSTZZMjl5WlRvNmMzUnlPanAyWVd4cFpHRjBhVzl1Y3pvNmJtVjRkRjlqYjJSbFgzQnZhVzUwT2pwb05XSTFcXFxuWXpobFpURXdaak5tWTJGbU9JMENPbU52Y21VNk9uTjBjam82ZG1Gc2FXUmhkR2x2Ym5NNk9tNWxlSFJmWTI5a1pWOXdiMmx1ZERvNmFEXFxcblV4WVRKbE1EYzRNalJqTkRnNU4yV09BaU5xYzE5emVYTTZPblJ5ZVY5cGRHVnlPanBvTnpsbE16STFORFpqTUdWbE9HSm1OWThDT21OdlxcXG5jbVU2T25OMGNqbzZkbUZzYVdSaGRHbHZibk02T201bGVIUmZZMjlrWlY5d2IybHVkRG82YURVMk5tUmlaVEl4TkRsalpUWTVNVGVRQWtcXFxudGtiRzFoYkd4dll6bzZaR3h0WVd4c2IyTTZPa1JzYldGc2JHOWpQRUUrT2pweVpXeGxZWE5sWDNWdWRYTmxaRjl6WldkdFpXNTBjem82XFxcbmFEQTNabU01WVRNMk9UTTNORGRoT0RLUkFpZHBkRzloT2pwQ2RXWm1aWEk2T21admNtMWhkRG82YUdObU9EUTFNRFl5TmpGbE1UZzRZalxcXG5TU0FqbGtaVzV2WDIxbFpHbGhYM1I1Y0dVNk9tMWhjRjlxYzE5c2FXdGxYMlY0ZEdWdWMybHZiam82YUdNNVpEWmlZVGs0TURSbE16ZGxcXFxuWkRXVEFrZHBibVJsZUcxaGNEbzZiV0Z3T2pwamIzSmxPanBKYm1SbGVFMWhjRU52Y21VOFN5eFdQam82WjJWMFgybHVaR1Y0WDI5bU9qXFxcbnBvTm1ZM01XRXpNbUkyTkRreE5tTmlNWlFDTm1OdmNtVTZPbk4wY2pvNlBHbHRjR3dnYzNSeVBqbzZkSEpwYlY5dFlYUmphR1Z6T2pwb1xcXG5ZVGhsTkdVd00yVXhPRFF4TnpZMk01VUNKMmwwYjJFNk9rSjFabVpsY2pvNlptOXliV0YwT2pwb09ETmlPREl6WmpSbVlUTmpZakJrTTVcXFxuWUNiVHhqYjNKbE9qcHpkSEk2T25CaGRIUmxjbTQ2T2tOb1lYSlRaV0Z5WTJobGNpQmhjeUJqYjNKbE9qcHpkSEk2T25CaGRIUmxjbTQ2XFxcbk9sSmxkbVZ5YzJWVFpXRnlZMmhsY2o0Nk9tNWxlSFJmYldGMFkyaGZZbUZqYXpvNmFHUmlZelF6WTJKbE1EWXlaRGxoWlRXWEFrdG9ZWFxcXG5Ob1luSnZkMjQ2T25KaGR6bzZVbUYzVkdGaWJHVkpibTVsY2p4QlBqbzZabUZzYkdsaWJHVmZkMmwwYUY5allYQmhZMmwwZVRvNmFHRTNcXFxuTlRWaVpqY3pOV05sTWpabE56S1lBa2RwYm1SbGVHMWhjRG82YldGd09qcGpiM0psT2pwSmJtUmxlRTFoY0VOdmNtVThTeXhXUGpvNloyXFxcblYwWDJsdVpHVjRYMjltT2pwb01XSmxOV0UxWXpjMU1qTTVaV1V5T1prQ1IybHVaR1Y0YldGd09qcHRZWEE2T21OdmNtVTZPa2x1WkdWNFxcXG5UV0Z3UTI5eVpUeExMRlkrT2pwblpYUmZhVzVrWlhoZmIyWTZPbWc0TW1VMFlUWXlNamhrWlRCbU0yTTFtZ0pZUEdsa2JtRTZPblYwY3pcXFxuUTJPanBOWVhCd1pYSWdZWE1nWTI5eVpUbzZhWFJsY2pvNmRISmhhWFJ6T2pwcGRHVnlZWFJ2Y2pvNlNYUmxjbUYwYjNJK09qcHVaWGgwXFxcbk9qcG9OVGt5WVRWbVl6Y3paRFF3TWpNME41c0NaVHdtYlhWMElITmxjbVJsWDJwemIyNDZPbVJsT2pwRVpYTmxjbWxoYkdsNlpYSThValxcXG40Z1lYTWdjMlZ5WkdVNk9tUmxPanBFWlhObGNtbGhiR2w2WlhJK09qcGtaWE5sY21saGJHbDZaVjl6ZEhJNk9tZ3lNV1ZsTTJVM09HTTFcXFxuTVdZeU1XWTFuQUk5WkdWdWIxOXRaV1JwWVY5MGVYQmxPanBOWldScFlWUjVjR1U2T21aeWIyMWZjM0JsWTJsbWFXVnlPanBvTjJZell6XFxcbmcwWmpNeFpEazJaVGxtT1owQ1VtaGhjMmhpY205M2JqbzZjbUYzT2pwcGJtNWxjam82VW1GM1ZHRmliR1ZKYm01bGNqeEJQam82Wm1Gc1xcXG5iR2xpYkdWZmQybDBhRjlqWVhCaFkybDBlVG82YURkbVkyWXhPVGcyWW1ZME9UVXdaRENlQWpkamIzSmxPanBqYUdGeU9qcHRaWFJvYjJcXFxuUnpPanBsYm1OdlpHVmZkWFJtT0Y5eVlYYzZPbWcwWXpNMU5URmhORE15WkRVeU1XUmpud0kxZFhKc09qcHdZWEp6WlhJNk9sQmhjbk5sXFxcbmNqbzZabkpoWjIxbGJuUmZiMjVzZVRvNmFEQTNaV1kxWWpjNU1XSTRNamxtWWphZ0FtVThKbTExZENCelpYSmtaVjlxYzI5dU9qcGtaVFxcXG5vNlJHVnpaWEpwWVd4cGVtVnlQRkkrSUdGeklITmxjbVJsT2pwa1pUbzZSR1Z6WlhKcFlXeHBlbVZ5UGpvNlpHVnpaWEpwWVd4cGVtVmZcXFxuYzNSeU9qcG9NVEEwWXpGbU5EQTNZbVZqT1dNMk1LRUNNMk52Y21VNk9uTnNhV05sT2pvOGFXMXdiQ0JiVkYwK09qcHlaWFpsY25ObE9qXFxcbnBvT0Rsa1lUWXhZemhrTURnNU9ESTBOYUlDTUR3bVZDQmhjeUJqYjNKbE9qcG1iWFE2T2tSbFluVm5Qam82Wm0xME9qcG9NekkwTldaa1xcXG5aRGN4TUdZNU0yTmtOS01DS1dsa2JtRTZPblYwY3pRMk9qcG1hVzVrWDJOb1lYSTZPbWd5WXpNMU9UYzBPV1l4TkRJd1pUYzBwQUk3YUdcXFxuRnphR0p5YjNkdU9qcHRZWEE2T2toaGMyaE5ZWEE4U3l4V0xGTXNRVDQ2T21sdWMyVnlkRG82YURRd04yWTJaRGMwTTJSbVlqa3lOakdsXFxcbkFqOXpkR1E2T25ONWMxOWpiMjF0YjI0Nk9uUm9jbVZoWkY5cGJtWnZPanBqZFhKeVpXNTBYM1JvY21WaFpEbzZhR000TTJGak1ETTNNelxcXG5ka01HUXlOMlNtQWl0emRHUTZPbkJoYm1samEybHVaem82YzJWMFgyaHZiMnM2T21nd1pUVTFaRGMyWkRnMk4yWmtZV1V4cHdJMWIyNWpcXFxuWlY5alpXeHNPanBwYlhBNk9tbHVhWFJwWVd4cGVtVmZiM0pmZDJGcGREbzZhR05oWXpJeU1qVmhZVGhoWkRneFpUQ29BaVoxY213Nk9sXFxcblZ5YkRvNmMyVjBYM0YxWlhKNU9qcG9abVV3TVdaa05UUmtORFJtWlRFMk42a0NaRHh3WlhKalpXNTBYMlZ1WTI5a2FXNW5PanBRWlhKalxcXG5aVzUwUlc1amIyUmxJR0Z6SUdOdmNtVTZPbWwwWlhJNk9uUnlZV2wwY3pvNmFYUmxjbUYwYjNJNk9rbDBaWEpoZEc5eVBqbzZibVY0ZERcXFxubzZhR1EwTlRVM01EYzBNMkk1WkdNeVpUYXFBanM4Sm0xMWRDQlhJR0Z6SUdOdmNtVTZPbVp0ZERvNlYzSnBkR1UrT2pwM2NtbDBaVjlqXFxcbmFHRnlPanBvTkdWalpUUXdOams0WXpVeE5qaGlaYXNDZFR4amIzSmxPanB6ZEhJNk9tbDBaWEk2T2tOb1lYSkpibVJwWTJWeklHRnpJR1xcXG5OdmNtVTZPbWwwWlhJNk9uUnlZV2wwY3pvNlpHOTFZbXhsWDJWdVpHVmtPanBFYjNWaWJHVkZibVJsWkVsMFpYSmhkRzl5UGpvNmJtVjRcXFxuZEY5aVlXTnJPanBvWkROa01tUTNOVFV3Wm1FMU1qZzFaS3dDUUhWeWJEbzZjR0Z5YzJWeU9qcFFZWEp6WlhJNk9uQmhjbk5sWDNGMVpYXFxcbko1WDJGdVpGOW1jbUZuYldWdWREbzZhR0prTldNd00yRmhNbVE0Wm1ObE9EZXRBanR6WlhKa1pWOXFjMjl1T2pwa1pUbzZSR1Z6WlhKcFxcXG5ZV3hwZW1WeVBGSStPanBsYm1SZmMyVnhPanBvT1dVMk9EbGtOVGd6WkRVeVltUTBONjRDblFFOGMyVnlaR1U2T21SbE9qcHBiWEJzY3pcXFxubzZQR2x0Y0d3Z2MyVnlaR1U2T21SbE9qcEVaWE5sY21saGJHbDZaU0JtYjNJZ2MzUmtPanAwYVcxbE9qcFRlWE4wWlcxVWFXMWxQam82XFxcblpHVnpaWEpwWVd4cGVtVTZPa1IxY21GMGFXOXVWbWx6YVhSdmNpQmhjeUJ6WlhKa1pUbzZaR1U2T2xacGMybDBiM0krT2pwMmFYTnBkRlxcXG45elpYRTZPbWcyTnpObE9UUXdaR1l4TlRRNE5EYzByd0pvUEhObGNtUmxYM2RoYzIxZlltbHVaR2RsYmpvNmMyVnlPanBOWVhCVFpYSnBcXFxuWVd4cGVtVnlJR0Z6SUhObGNtUmxPanB6WlhJNk9sTmxjbWxoYkdsNlpVMWhjRDQ2T25ObGNtbGhiR2w2WlY5MllXeDFaVG82YURJME56XFxcbkV4WkRWa09ETTVaamxqTW1hd0FtczhaR1Z1YjE5allXTm9aVjlrYVhJNk9uZGhjMjA2T2xkaGMyMUZibllnWVhNZ1pHVnViMTlqWVdOb1xcXG5aVjlrYVhJNk9tTnZiVzF2YmpvNlJHVnViME5oWTJobFJXNTJQam82Y21WaFpGOW1hV3hsWDJKNWRHVnpPanBvT1RkaU5qZzRabVZqWmpcXFxuUm1NMkV4WWJFQ08zTmxjbVJsWDJwemIyNDZPbVJsT2pwRVpYTmxjbWxoYkdsNlpYSThVajQ2T21WdVpGOXpaWEU2T21nMk5XTTBObUprXFxcbk1EUmlPVFExTW1WbXNnSkZjR0Z5YTJsdVoxOXNiM1JmWTI5eVpUbzZkMjl5WkY5c2IyTnJPanBYYjNKa1RHOWphem82ZFc1c2IyTnJYM1xcXG5Oc2IzYzZPbWc0WWpGa05XTm1Oekk0TXpka01Ea3dzd0l3YVdSdVlUbzZkWFJ6TkRZNk9rTnZibVpwWnpvNmRHOWZZWE5qYVdrNk9taGlcXFxuTjJNNU1XRXpPRFUxTmpFMll6RTR0QUl2WTI5eVpUbzZabTEwT2pwWGNtbDBaVG82ZDNKcGRHVmZZMmhoY2pvNmFHSmpNMkl3T0RWaE0yXFxcbkpqTVRVNFlXSzFBamxqYjNKbE9qcDFibWxqYjJSbE9qcHdjbWx1ZEdGaWJHVTZPbWx6WDNCeWFXNTBZV0pzWlRvNmFHRXhNVEJpWldOaFxcXG5NMkZrWWpObVkyVzJBbXc4WTI5eVpUbzZhWFJsY2pvNllXUmhjSFJsY25NNk9tMWhjRG82VFdGd1BFa3NSajRnWVhNZ1kyOXlaVG82YVhcXFxuUmxjam82ZEhKaGFYUnpPanBwZEdWeVlYUnZjam82U1hSbGNtRjBiM0krT2pwMGNubGZabTlzWkRvNmFESmxaak16Tm1FM01ESTVORGRoXFxcblpUSzNBa3c4WTI5eVpUbzZhR0Z6YURvNmMybHdPanBJWVhOb1pYSThVejRnWVhNZ1kyOXlaVG82YUdGemFEbzZTR0Z6YUdWeVBqbzZkM1xcXG5KcGRHVTZPbWhsTm1Gak1qVTNZMlJpTVRJeFpqTmx1QUpNUEdOdmNtVTZPbWhoYzJnNk9uTnBjRG82U0dGemFHVnlQRk0rSUdGeklHTnZcXFxuY21VNk9taGhjMmc2T2toaGMyaGxjajQ2T25keWFYUmxPanBvWTJVelkyRmhPVEZpT1RSa09Ea3hPYmtDTm1OdmNtVTZPbk4wY2pvNlBHXFxcbmx0Y0d3Z2MzUnlQam82ZEhKcGJWOXRZWFJqYUdWek9qcG9aRGxsWkdabE5HUTROMk5rWlRGaE5ib0NOSFZ5YkRvNmNHRnljMlZ5T2pwUVxcXG5ZWEp6WlhJNk9uQmhjbk5sWDNOamFHVnRaVG82YURnellXWmlaalExWXpWaVlUQTNZV083QWtZOGMyVnlaR1ZmYW5OdmJqbzZaWEp5YjNcXFxuSTZPa1Z5Y205eUlHRnpJR052Y21VNk9tWnRkRG82UkdWaWRXYytPanBtYlhRNk9tZzVORE15TWpkaE1XSXlORGsyWXpSbHZBSTRjM1JrXFxcbk9qcDBhVzFsT2pwVGVYTjBaVzFVYVcxbE9qcGtkWEpoZEdsdmJsOXphVzVqWlRvNmFHRmhNems0TURCak1tRTNZakppT1dLOUFtZzhjM1xcXG5Sa09qcHdZVzVwWTJ0cGJtYzZPbUpsWjJsdVgzQmhibWxqWDJoaGJtUnNaWEk2T2xCaGJtbGpVR0Y1Ykc5aFpDQmhjeUJqYjNKbE9qcHdcXFxuWVc1cFl6bzZRbTk0VFdWVmNENDZPblJoYTJWZlltOTRPanBvWm1ObU1HRmpPR0U1TkRneVkyRmtNTDRDUUhObGNtUmxYMnB6YjI0Nk9tXFxcblJsT2pwRVpYTmxjbWxoYkdsNlpYSThVajQ2T25CaGNuTmxYMjUxYldKbGNqbzZhRFUxTXpaak16UmpPR1poTURRNVl6YS9Ba0J6WlhKa1xcXG5aVjlxYzI5dU9qcGtaVG82UkdWelpYSnBZV3hwZW1WeVBGSStPanB3WVhKelpWOXVkVzFpWlhJNk9tZzNNalJqT1RrNU5qWTBOR0l6TnpcXFxuaGh3QUpkUEhObGNtUmxYMnB6YjI0Nk9uSmxZV1E2T2xOc2FXTmxVbVZoWkNCaGN5QnpaWEprWlY5cWMyOXVPanB5WldGa09qcFNaV0ZrXFxcblBqbzZaR1ZqYjJSbFgyaGxlRjlsYzJOaGNHVTZPbWhsWkRKak5HVmtaR1V4WkdVMFlqSTV3UUpGWTI5eVpUbzZkVzVwWTI5a1pUbzZkV1xcXG41cFkyOWtaVjlrWVhSaE9qcGpiMjUyWlhKemFXOXVjem82ZEc5ZmJHOTNaWEk2T21nNE1HTXpOelprT1dFeFlUUXhOemszd2dKd1BHRnNcXFxuYkc5ak9qcDJaV002T2xabFl6eFVQaUJoY3lCaGJHeHZZem82ZG1Wak9qcHpjR1ZqWDJaeWIyMWZhWFJsY2w5dVpYTjBaV1E2T2xOd1pXXFxcbk5HY205dFNYUmxjazVsYzNSbFpEeFVMRWsrUGpvNlpuSnZiVjlwZEdWeU9qcG9NREZoWm1aalltRmpNMlprT0RWaE1jTUNRM05sY21SbFxcXG5YMnB6YjI0Nk9tUmxPanBFWlhObGNtbGhiR2w2WlhJOFVqNDZPbWxuYm05eVpWOWxlSEJ2Ym1WdWREbzZhRGd3TVRFMU16bG1OVGszTUdcXFxuRXdPVERFQWoxb1lYTm9Zbkp2ZDI0Nk9uSmhkem82YVc1dVpYSTZPbEpoZDFSaFlteGxQRlFzUVQ0Nk9tWnBibVE2T21nek5qbGhaREEyXFxcbk1UQmhNR0kxTkRkanhRSXBhV1J1WVRvNmRYUnpORFk2T21selgzTnBiWEJzWlRvNmFHSmtZVFUwTW1KbVkySmlObVk0TjJiR0FtZzhZMlxcXG45eVpUbzZhWFJsY2pvNllXUmhjSFJsY25NNk9tMWhjRG82VFdGd1BFa3NSajRnWVhNZ1kyOXlaVG82YVhSbGNqbzZkSEpoYVhSek9qcHBcXFxuZEdWeVlYUnZjam82U1hSbGNtRjBiM0krT2pwbWIyeGtPanBvT0RBMlkyWXdPVFZsWVRZNFptWmtaY2NDUW5ObGNtUmxYMnB6YjI0Nk9tXFxcblJsT2pwRVpYTmxjbWxoYkdsNlpYSThVajQ2T21ZMk5GOW1jbTl0WDNCaGNuUnpPanBvTXpnelpHSTBZemRqT0RaaE9UWXlZY2dDUldsdVxcXG5aR1Y0YldGd09qcHRZWEE2T21OdmNtVTZPa2x1WkdWNFRXRndRMjl5WlR4TExGWStPanB3ZFhOb1gyVnVkSEo1T2pwb1lURTRPRFl3TmpcXFxuUmtPRGsyWkdVeVpza0NRbk5sY21SbFgycHpiMjQ2T21SbE9qcEVaWE5sY21saGJHbDZaWEk4VWo0Nk9tWTJORjltY205dFgzQmhjblJ6XFxcbk9qcG9NbUpqT1RKbVpUazJNakU1WmpWaFljb0NhRHhqYjNKbE9qcHBkR1Z5T2pwaFpHRndkR1Z5Y3pvNmJXRndPanBOWVhBOFNTeEdQaVxcXG5CaGN5QmpiM0psT2pwcGRHVnlPanAwY21GcGRITTZPbWwwWlhKaGRHOXlPanBKZEdWeVlYUnZjajQ2T21admJHUTZPbWcxWVRKaU9XVTNcXFxuWXpRNU5HVTFObUUzeXdJM1kyOXlaVG82WTJoaGNqbzZiV1YwYUc5a2N6bzZaVzVqYjJSbFgzVjBaamhmY21GM09qcG9OR016TlRVeFlUXFxcblF6TW1RMU1qRmtZOHdDTjJOdmNtVTZPbU5vWVhJNk9tMWxkR2h2WkhNNk9tVnVZMjlrWlY5MWRHWTRYM0poZHpvNmFEUmpNelUxTVdFMFxcXG5NekprTlRJeFpHUE5BaTVoYkd4dll6bzZjbUYzWDNabFl6bzZabWx1YVhOb1gyZHliM2M2T21nMVlUSmpNR0U0TkdaaU1UUTVNemxsemdcXFxuSXVZV3hzYjJNNk9uSmhkMTkyWldNNk9tWnBibWx6YUY5bmNtOTNPanBvTWpGaE1HRmhOemRrTldZNE4yRTBNczhDTjJOdmNtVTZPbU5vXFxcbllYSTZPbTFsZEdodlpITTZPbVZ1WTI5a1pWOTFkR1k0WDNKaGR6bzZhRFJqTXpVMU1XRTBNekprTlRJeFpHUFFBaTVoYkd4dll6bzZjbVxcXG5GM1gzWmxZem82Wm1sdWFYTm9YMmR5YjNjNk9tZzFaV0kwTW1RMk5URmxPR0prTW1FejBRSTNZMjl5WlRvNlkyaGhjam82YldWMGFHOWtcXFxuY3pvNlpXNWpiMlJsWDNWMFpqaGZjbUYzT2pwb05HTXpOVFV4WVRRek1tUTFNakZrWTlJQ0kzVnliRG82VlhKc09qcHRkWFJoZEdVNk9tXFxcbmd4TXpFeFpHSmxOekZqWm1JNFpqVTAwd0kzWTI5eVpUbzZZMmhoY2pvNmJXVjBhRzlrY3pvNlpXNWpiMlJsWDNWMFpqaGZjbUYzT2pwb1xcXG5OR016TlRVeFlUUXpNbVExTWpGa1k5UUNMbUZzYkc5ak9qcHlZWGRmZG1Wak9qcG1hVzVwYzJoZlozSnZkem82YURsaU16bGtObUkyWldcXFxuSTRPVFl3WmpMVkFpNWhiR3h2WXpvNmNtRjNYM1psWXpvNlptbHVhWE5vWDJkeWIzYzZPbWhoWm1Oak5qUmtOR0ZrT1dRMlptTmkxZ0kzXFxcblkyOXlaVG82WTJoaGNqbzZiV1YwYUc5a2N6bzZaVzVqYjJSbFgzVjBaamhmY21GM09qcG9OR016TlRVeFlUUXpNbVExTWpGa1k5Y0NNMlxcXG5SbGJtOWZZMkZqYUdWZlpHbHlPanBqYjIxdGIyNDZPbU5vWldOcmMzVnRPanBvTW1JM01XUmpaRFJsTWpNeVlqVTVaZGdDWkR4a1pXNXZcXFxuWDJOaFkyaGxYMlJwY2pvNmQyRnpiVG82VjJGemJVVnVkaUJoY3lCa1pXNXZYMk5oWTJobFgyUnBjam82WTI5dGJXOXVPanBFWlc1dlEyXFxcbkZqYUdWRmJuWStPanB0YjJScFptbGxaRG82YUdJelltTmlZMk5tWVROalpqSTVNbVBaQWk1aGJHeHZZem82Y21GM1gzWmxZem82Wm1sdVxcXG5hWE5vWDJkeWIzYzZPbWd6WkdKa09URTBaREkyT0RVNU5qUTAyZ0k2WTI5eVpUbzZjMnhwWTJVNk9uTnZjblE2T20xbGNtZGxYM052Y25cXFxuUTZPbU52Ykd4aGNITmxPanBvWTJZMVkyRm1OVFJtTnpJME4yWXpadHNDTm5ObGNtUmxPanB6WlhJNk9sTmxjbWxoYkdsNlpYSTZPbU52XFxcbmJHeGxZM1JmYldGd09qcG9ZVFl4Wm1ZNFpqTmlOMkZtTXpNNVlkd0NSbWx1WkdWNGJXRndPanB0WVhBNk9tTnZjbVU2T2tsdVpHVjRUV1xcXG5Gd1EyOXlaVHhMTEZZK09qcHBibk5sY25SZlpuVnNiRG82YURobU9Ua3laV1ZtWTJWbVpqVTVOVERkQWo1aGJHeHZZem82Y21GM1gzWmxcXFxuWXpvNlVtRjNWbVZqUEZRc1FUNDZPbWR5YjNkZllXMXZjblJwZW1Wa09qcG9OamMwWTJJeE1ERXhNVGMxT0dNelpONENQbUZzYkc5ak9qXFxcbnB5WVhkZmRtVmpPanBTWVhkV1pXTThWQ3hCUGpvNlozSnZkMTloYlc5eWRHbDZaV1E2T21nM05URTROREF4T1dFMVl6bGpNalJsM3dJK1xcXG5ZV3hzYjJNNk9uSmhkMTkyWldNNk9sSmhkMVpsWXp4VUxFRStPanBuY205M1gyRnRiM0owYVhwbFpEbzZhR013WTJGa1lUYzNOak15T1dcXFxuUTRObVBnQWo1aGJHeHZZem82Y21GM1gzWmxZem82VW1GM1ZtVmpQRlFzUVQ0Nk9tZHliM2RmWVcxdmNuUnBlbVZrT2pwb1ptWmpPREZsXFxcblkyVmlZV1UxTVRJMU11RUNQbUZzYkc5ak9qcHlZWGRmZG1Wak9qcFNZWGRXWldNOFZDeEJQam82WjNKdmQxOWhiVzl5ZEdsNlpXUTZPbVxcXG5nNE1HWXlPVGxpWmpZNFpUWTJNVFptNGdJK1lXeHNiMk02T25KaGQxOTJaV002T2xKaGQxWmxZenhVTEVFK09qcG5jbTkzWDJGdGIzSjBcXFxuYVhwbFpEbzZhR1UzWTJFM1pXUmlaREExWTJReFlqTGpBajVoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDQ2T21keWIzXFxcbmRmWVcxdmNuUnBlbVZrT2pwb01UWTRNVFF3TnpaaFlUVTFNVFkzTWVRQ1BtRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlxcXG5Qam82WjNKdmQxOWhiVzl5ZEdsNlpXUTZPbWd6WmpRNU56TXlOVEZoWVdKbU1qWms1UUkrWVd4c2IyTTZPbkpoZDE5MlpXTTZPbEpoZDFcXFxuWmxZenhVTEVFK09qcG5jbTkzWDJGdGIzSjBhWHBsWkRvNmFERTNaakkzTm1GbFkyVTNNVEZsTVRMbUFqNWhiR3h2WXpvNmNtRjNYM1psXFxcbll6bzZVbUYzVm1WalBGUXNRVDQ2T21keWIzZGZZVzF2Y25ScGVtVmtPanBvWkdZNE1UWTFNamcxTkdWaFpURm1OdWNDU3p4amIzSmxPalxcXG5wemRISTZPbVZ5Y205eU9qcFZkR1k0UlhKeWIzSWdZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPanBvTnpWbU1qVmpcXFxuTWpreFpHWXhaV0pqWStnQ1NUeGpiM0psT2pwemRISTZPbVZ5Y205eU9qcFZkR1k0UlhKeWIzSWdZWE1nWTI5eVpUbzZabTEwT2pwRVpXXFxcbkoxWno0Nk9tWnRkRG82YURnMllXRXdOR05qTjJReU5EazNOR1RwQWtrOFkyOXlaVG82WVd4c2IyTTZPbXhoZVc5MWREbzZUR0Y1YjNWMFxcXG5JR0Z6SUdOdmNtVTZPbVp0ZERvNlJHVmlkV2MrT2pwbWJYUTZPbWhoTmpabE9EYzROakkzWVRWa04yTmw2Z0pDWTI5eVpUbzZabTEwT2pcXFxucEdiM0p0WVhSMFpYSTZPbVJsWW5WblgzUjFjR3hsWDJacFpXeGtNVjltYVc1cGMyZzZPbWcyWkRWbE1qQTJaV05pTWpVNE1EWTE2d0l2XFxcbllXeHNiMk02T25OMGNtbHVaem82VTNSeWFXNW5PanBrY21GcGJqbzZhR0ptWTJFNFltVm1ZV1ZtWXpWalpqTHNBbVk4WTI5eVpUbzZhWFxcXG5SbGNqbzZZV1JoY0hSbGNuTTZPbkpsZGpvNlVtVjJQRWsrSUdGeklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6bzZhWFJsY21GMGIzSTZcXFxuT2tsMFpYSmhkRzl5UGpvNmJtVjRkRG82YUdSak5qTmlPV0l5TkRobU5tRXhabUh0QWs1aGJHeHZZem82Y21GM1gzWmxZem82VW1GM1ZtXFxcblZqUEZRc1FUNDZPbkpsYzJWeWRtVTZPbVJ2WDNKbGMyVnlkbVZmWVc1a1gyaGhibVJzWlRvNmFHVTBORGs1TmpWaVpqVm1ZekZoTTJQdVxcXG5BazVoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDQ2T25KbGMyVnlkbVU2T21SdlgzSmxjMlZ5ZG1WZllXNWtYMmhoYm1cXFxuUnNaVG82YUdSbFlXTmpZVEUyWVdGallqY3lNR1h2QWk1aGJHeHZZem82Y21GM1gzWmxZem82Wm1sdWFYTm9YMmR5YjNjNk9tZzBPVFl4XFxcbk56UmlNVGMwTlRZNU1qTTU4QUl5YzJWeVpHVTZPbVJsT2pwRmNuSnZjam82ZFc1cmJtOTNibDltYVdWc1pEbzZhRE5qWldSbVlUZ3paalxcXG5sa1pHVmlZVGp4QWtCaGJHeHZZem82Y21GM1gzWmxZem82VW1GM1ZtVmpQRlFzUVQ0Nk9uSmxjMlZ5ZG1WZlptOXlYM0IxYzJnNk9tZzNcXFxuTURCaE5qZ3hOMk5rWm1GaE9XSmk4Z0lzYzNSa09qcHdZWFJvT2pwUVlYUm9RblZtT2pwZmNIVnphRG82YURZd01EUmlNemMwTWpjNFpEXFxcbmMyTldMekFrQmhiR3h2WXpvNmNtRjNYM1psWXpvNlVtRjNWbVZqUEZRc1FUNDZPbkpsYzJWeWRtVmZabTl5WDNCMWMyZzZPbWhpTVdZMFxcXG5ZV1k0T0daaE16WmlaV1ZsOUFKelBEeDFjbXc2T2xWeWJDQmhjeUJ6WlhKa1pUbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbFBqbzZaR1Z6WlhcXFxuSnBZV3hwZW1VNk9sVnliRlpwYzJsMGIzSWdZWE1nYzJWeVpHVTZPbVJsT2pwV2FYTnBkRzl5UGpvNmRtbHphWFJmYzNSeU9qcG9NRE5pXFxcbk9XWTJaamhrT1dNeFpERTVNL1VDUDNWeWJEbzZjR0Z5YzJWeU9qcFFZWEp6WlhJNk9uZHBkR2hmY1hWbGNubGZZVzVrWDJaeVlXZHRaV1xcXG41ME9qcG9ZV0l4TmpReE0yVmlNRGcxWXpZMU52WUNOM04wWkRvNmNHRnVhV05yYVc1bk9qcHlkWE4wWDNCaGJtbGpYM2RwZEdoZmFHOXZcXFxuYXpvNmFEWmtaalZrWWpkaFpEbG1OalZrWXpqM0FrWnBibVJsZUcxaGNEbzZiV0Z3T2pwamIzSmxPanBKYm1SbGVFMWhjRU52Y21VOFN5XFxcbnhXUGpvNmFXNXpaWEowWDJaMWJHdzZPbWd5TWpBM01UVXhNams0TjJOak1HRm0rQUkrWVd4c2IyTTZPbkpoZDE5MlpXTTZPbEpoZDFabFxcXG5ZenhVTEVFK09qcG5jbTkzWDJGdGIzSjBhWHBsWkRvNmFEZ3pZMlpoWkRJek9EWm1OVGRsTVRmNUFqNWhiR3h2WXpvNmNtRjNYM1psWXpcXFxubzZVbUYzVm1WalBGUXNRVDQ2T21keWIzZGZZVzF2Y25ScGVtVmtPanBvTlRJeVptWXhaREl3TkRsbFpEYzRNUG9DUDJOdmNtVTZPbk4wXFxcbmNqbzZhWFJsY2pvNlUzQnNhWFJKYm5SbGNtNWhiRHhRUGpvNmJtVjRkRjlpWVdOck9qcG9ZbVZoWkRZNU5EUTBaamMwWkRnNFpQc0NQbVxcXG5Gc2JHOWpPanB5WVhkZmRtVmpPanBTWVhkV1pXTThWQ3hCUGpvNlozSnZkMTloYlc5eWRHbDZaV1E2T21nek9UUTNNV1EyWm1Zek4yUTNcXFxuTldNNC9BSStZV3hzYjJNNk9uSmhkMTkyWldNNk9sSmhkMVpsWXp4VUxFRStPanBuY205M1gyRnRiM0owYVhwbFpEbzZhR1JqTkROaVl6XFxcbmhpTnpKall6Um1Oemo5QWpOemRHUTZPbk41Y3pvNmQyRnpiVG82YjI1alpUbzZUMjVqWlRvNlkyRnNiRG82YURBMU5EVmlPRGhtTkdOaVxcXG5OMkV4Tm1YK0FqOW9ZWE5vWW5KdmQyNDZPbkpoZHpvNlVtRjNWR0ZpYkdWSmJtNWxjanhCUGpvNlptbHVaRjlwYm01bGNqbzZhR1E1WldcXFxuRXpOVEV5WldSallXUmlOMlgvQWtOamIzSmxPanBtYlhRNk9rWnZjbTFoZEhSbGNqbzZaR1ZpZFdkZmMzUnlkV04wWDJacFpXeGtNbDltXFxcbmFXNXBjMmc2T21oa01HVmlabVZqTnpWbFpEUTFaVE5rZ0FNdWFXUnVZVG82ZFhSek5EWTZPbU5vWldOclgzWmhiR2xrYVhSNU9qcG9aR1xcXG5JNVlqYzNPVGMwTWpobU1qTXlOWUVEUW5WdWFXTnZaR1ZmYm05eWJXRnNhWHBoZEdsdmJqbzZjR1Z5Wm1WamRGOW9ZWE5vT2pwdGNHaGZcXFxuYkc5dmEzVndPanBvTlRrd1lUTTNaak16WVRSaE4yTXlNNElETG1Gc2JHOWpPanB5WVhkZmRtVmpPanBtYVc1cGMyaGZaM0p2ZHpvNmFHXFxcblZrTlRnNVltUXhPVFUwTTJWbVltS0RBMXM4WTI5eVpUbzZjM1J5T2pwcGRHVnlPanBEYUdGeWN5QmhjeUJqYjNKbE9qcHBkR1Z5T2pwMFxcXG5jbUZwZEhNNk9tbDBaWEpoZEc5eU9qcEpkR1Z5WVhSdmNqNDZPbTVsZUhRNk9tZ3lOV05tTlRKbU5tTmpNbVU0TkdSbGhBTlpaR1Z1YjFcXFxuOWpZV05vWlY5a2FYSTZPbXh2WTJGc09qcHRZVzVwWm1WemREbzZURzlqWVd4RFlXTm9aVTFoYm1sbVpYTjBSR0YwWVRvNllXUmtYMlJwXFxcbmNtVmpkRzl5ZVRvNmFEY3dNR0ZrWTJJeE9ETXdaamxrTWpDRkExczhZMjl5WlRvNmMzUnlPanBwZEdWeU9qcERhR0Z5Y3lCaGN5QmpiM1xcXG5KbE9qcHBkR1Z5T2pwMGNtRnBkSE02T21sMFpYSmhkRzl5T2pwSmRHVnlZWFJ2Y2o0Nk9tNWxlSFE2T21neU5XTm1OVEptTm1Oak1tVTRcXFxuTkdSbGhnTTJjMlZ5WkdWZmFuTnZiam82WkdVNk9sQmhjbk5sY2s1MWJXSmxjam82ZG1semFYUTZPbWd5WldVNVltSmtOR0ZtT0RRM01qXFxcblpsaHdORGMyVnlaR1ZmYW5OdmJqbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbGNqeFNQam82YVdkdWIzSmxYMlY0Y0c5dVpXNTBPanBvT0RrMlxcXG5Oamt4TVRVNE5qVmpaakUyTklnRFIyOXVZMlZmWTJWc2JEbzZhVzF3T2pwUGJtTmxRMlZzYkR4VVBqbzZhVzVwZEdsaGJHbDZaVG82ZTNcXFxudGpiRzl6ZFhKbGZYMDZPbWhsT0RWaVlqVmlaV0kzWVRnMk1XTmppUU5IYjI1alpWOWpaV3hzT2pwcGJYQTZPazl1WTJWRFpXeHNQRlErXFxcbk9qcHBibWwwYVdGc2FYcGxPanA3ZTJOc2IzTjFjbVY5ZlRvNmFHUmlZVFV3Tnpka09ETmxNV1V6WWpLS0ExTmtaVzV2WDJOaFkyaGxYMlxcXG5ScGNqbzZaMnh2WW1Gc09qcEhiRzlpWVd4SWRIUndRMkZqYUdVOFJXNTJQam82WjJWMFgyTmhZMmhsWDJacGJHVndZWFJvT2pwb1ptUXlcXFxuWTJSbFkyTmxPRFkwWkdVNU00c0RiVHhrWlc1dlgyTmhZMmhsWDJScGNqbzZkMkZ6YlRvNlYyRnpiVVZ1ZGlCaGN5QmtaVzV2WDJOaFkyXFxcbmhsWDJScGNqbzZZMjl0Ylc5dU9qcEVaVzV2UTJGamFHVkZiblkrT2pwaGRHOXRhV05mZDNKcGRHVmZabWxzWlRvNmFHRmxaalExTWpneFxcXG5PV05rWkROaE1HV01BelpoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDQ2T25Ob2NtbHVhem82YUdJM1pXWmhNVEZsWlRcXFxuaGpabUpqTTJXTkEwaDFjbXc2T25CaGNuTmxjam82YzNSaGNuUnpYM2RwZEdoZmQybHVaRzkzYzE5a2NtbDJaVjlzWlhSMFpYSmZjMlZuXFxcbmJXVnVkRG82YURneVpEQTFOMkpqWVRjd1l6ZG1aR2FPQXlwemRHUTZPbkJoZEdnNk9sQmhkR2c2T25CaGNtVnVkRG82YUdVMk1ETTBOVFxcXG5NeVltSmhNVGt5TVdTUEEwWnpaWEprWlY5cWMyOXVPanBrWlRvNlJHVnpaWEpwWVd4cGVtVnlQRkkrT2pwd1lYSnpaVjlzYjI1blgybHVcXFxuZEdWblpYSTZPbWcwTW1RNVpqSmpOMk14TkRoaVptRmxrQU5HYzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BqXFxcbm82Y0dGeWMyVmZiRzl1WjE5cGJuUmxaMlZ5T2pwb1lXUXdNbVl3WXpjNVptVTNNVFEyT1pFREtXeHZaem82WDE5d2NtbDJZWFJsWDJGd1xcXG5hVjlzYjJjNk9tZ3lOekl5WldRME9UVTROelUyWmpJM2tnTXhZMjl5WlRvNmMyeHBZMlU2T25OdmNuUTZPbVpwYm1SZmMzUnlaV0ZyT2pcXFxucG9ZVEkwWmpFellXWTFZbUpsTVRNMk9aTURRMk52Y21VNk9tWnRkRG82Um05eWJXRjBkR1Z5T2pwa1pXSjFaMTl6ZEhKMVkzUmZabWxsXFxcbmJHUXhYMlpwYm1semFEbzZhRGs0T1RVeFpqUm1ZelV4T1dJM1ltV1VBekZqYjIxd2FXeGxjbDlpZFdsc2RHbHVjem82YldWdE9qcHRaV1xcXG4xelpYUTZPbWcyTXpZM1pqTXpZamhsWmpObE9HRTNsUU0yYzJWeVpHVTZPbk5sY2pvNlUyVnlhV0ZzYVhwbGNqbzZZMjlzYkdWamRGOXRcXFxuWVhBNk9tZ3pNekUxWlRZMVlqRXpNREZtTWpWaWxnTTJjMlZ5WkdVNk9uTmxjam82VTJWeWFXRnNhWHBsY2pvNlkyOXNiR1ZqZEY5dFlYXFxcbkE2T21nMU9EWTFNREZtTWpkbU4yTmhZMk5sbHdNMmMyVnlaR1U2T25ObGNqbzZVMlZ5YVdGc2FYcGxjam82WTI5c2JHVmpkRjl0WVhBNlxcXG5PbWczTWpOaU1qRTJNVFZqWWpBek9ERmptQU5QUEhObGNtUmxYMnB6YjI0Nk9tVnljbTl5T2pwRmNuSnZjaUJoY3lCelpYSmtaVG82WkdcXFxuVTZPa1Z5Y205eVBqbzZhVzUyWVd4cFpGOTBlWEJsT2pwb1pURm1aV1EwWWpsbE4yRTJaR0V5WVprRFEzVnliRG82Y0dGeWMyVnlPanBRXFxcbllYSnpaWEk2T25CaGNuTmxYMk5oYm01dmRGOWlaVjloWDJKaGMyVmZjR0YwYURvNmFHTmpOR05sWW1ZeU1qVmlPV1JsWVRXYUF6SmpiM1xcXG5KbE9qcHpkSEk2T2p4cGJYQnNJSE4wY2o0Nk9tbHpYMkZ6WTJscE9qcG9PRFU0TnpSaU1qYzBZakU0WVRrek5wc0RZendtYlhWMElITmxcXFxuY21SbFgycHpiMjQ2T25ObGNqbzZVMlZ5YVdGc2FYcGxjanhYTEVZK0lHRnpJSE5sY21SbE9qcHpaWEk2T2xObGNtbGhiR2w2WlhJK09qXFxcbnB6WlhKcFlXeHBlbVZmYldGd09qcG9NelZrWW1Oa1pEQXlPVEZqWVRJNU41d0RUV2hoYzJoaWNtOTNiam82Y21GM09qcHBibTVsY2pvNlxcXG5VbUYzVkdGaWJHVkpibTVsY2p4QlBqbzZibVYzWDNWdWFXNXBkR2xoYkdsNlpXUTZPbWcyTVRoa1pHTTJPRGRrTURKaU4yTXluUU1QZFhcXFxuSnNYM1J2WDJacGJHVnVZVzFsbmdNVFoyeHZZbUZzYUhSMGNHTmhZMmhsWDNObGRKOERFbXh2WTJGc2FIUjBjR05oWTJobFgzTmxkS0FEXFxcblZqeHpaWEprWlY5cWMyOXVPanB5WldGa09qcFRiR2xqWlZKbFlXUWdZWE1nYzJWeVpHVmZhbk52YmpvNmNtVmhaRG82VW1WaFpENDZPbVxcXG5sbmJtOXlaVjl6ZEhJNk9tZzNNR1kwWXpnME5EVXlaakpoT0RrNW9RTlVjM1JrT2pwemVYTTZPbU52YlcxdmJqbzZkR2h5WldGa1gyeHZcXFxuWTJGc09qcHNZWHA1T2pwTVlYcDVTMlY1U1c1dVpYSThWRDQ2T21sdWFYUnBZV3hwZW1VNk9taGxObVJtTWpOaU5ETTRPV0ppTldZM29nXFxcbk5KUEc5dVkyVmZZMlZzYkRvNmFXMXdPanBIZFdGeVpDQmhjeUJqYjNKbE9qcHZjSE02T21SeWIzQTZPa1J5YjNBK09qcGtjbTl3T2pwb1xcXG5OV0k0TVRBME9HVTBNV1ZqT1RBeE5hTURRbk5sY21SbFgycHpiMjQ2T21SbE9qcEVaWE5sY21saGJHbDZaWEk4VWo0Nk9tbG5ibTl5WlZcXFxuOWtaV05wYldGc09qcG9aVEF6TmpjelptUmhabVZpWVRNellxUURPbUZzYkc5ak9qcHlZWGRmZG1Wak9qcFNZWGRXWldNOFZDeEJQam82XFxcblozSnZkMTlsZUdGamREbzZhRGc0WXpoaVlUZGpOekUwTlRneE5qZWxBenBoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVFxcXG40Nk9tZHliM2RmWlhoaFkzUTZPbWhoTTJWbE1qWXhaamt5TnpKbU1HRXlwZ002WVd4c2IyTTZPbkpoZDE5MlpXTTZPbEpoZDFabFl6eFVcXFxuTEVFK09qcG5jbTkzWDJWNFlXTjBPanBvWXpKaFpHSmhabUZrT1RJd1ltRTNOYWNEUzJsdVpHVjRiV0Z3T2pwdFlYQTZPbU52Y21VNk9rXFxcbmx1WkdWNFRXRndRMjl5WlR4TExGWStPanB6ZDJGd1gzSmxiVzkyWlY5bWRXeHNPanBvT0dKbU0yVmxPR0V6TURoaU4yTTFacWdETm1Gc1xcXG5iRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBqbzZjMmh5YVc1ck9qcG9aVEZpWTJGa1pHWXdOakpqWkdGbE1ha0RKWFZ5YkRcXFxubzZWWEpzT2pwelpYUmZjR0YwYURvNmFEWmpNVGt3WkdFMU5UUTJNR1ptTXpXcUF6VnpkR1E2T25ScGJXVTZPbE41YzNSbGJWUnBiV1U2XFxcbk9tTm9aV05yWldSZllXUmtPanBvTVRReU56RmhaV1ZtT1RZeU1tWXdaYXNEUm1sdVpHVjRiV0Z3T2pwdFlYQTZPbU52Y21VNk9rbHVaR1xcXG5WNFRXRndRMjl5WlR4TExGWStPanBwYm5ObGNuUmZablZzYkRvNmFEYzJOMkkwT1dFell6RXhPVFpoTkRDc0EwWm9ZWE5vWW5KdmQyNDZcXFxuT25KaGR6bzZVbUYzVkdGaWJHVkpibTVsY2p4QlBqbzZibVYzWDNWdWFXNXBkR2xoYkdsNlpXUTZPbWhtWXpjNE1EVm1OR0ZtTURNd05EXFxcbkEwclFOZVBHTnZjbVU2T25OMGNqbzZhWFJsY2pvNlUzQnNhWFE4VUQ0Z1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBwZEdWeVxcXG5ZWFJ2Y2pvNlNYUmxjbUYwYjNJK09qcHVaWGgwT2pwb01HTXpOemd3WVdJd01HWmxPVE0yTTY0RE1XTnZjbVU2T25Oc2FXTmxPanB6YjNcXFxuSjBPanBtYVc1a1gzTjBjbVZoYXpvNmFHRXhOemRsWm1VNE0yRXlabVF5T0dXdkEydHpaWEprWlRvNlpHVTZPbWx0Y0d4ek9qbzhhVzF3XFxcbmJDQnpaWEprWlRvNlpHVTZPa1JsYzJWeWFXRnNhWHBsSUdadmNpQmpiM0psT2pwdmNIUnBiMjQ2T2s5d2RHbHZianhVUGo0Nk9tUmxjMlxcXG5WeWFXRnNhWHBsT2pwb01HVmhOVGt5TVdZelpXTmtaamd3TWJBRFozTmxjbVJsT2pwelpYSTZPbWx0Y0d4ek9qbzhhVzF3YkNCelpYSmtcXFxuWlRvNmMyVnlPanBUWlhKcFlXeHBlbVVnWm05eUlITjBaRG82ZEdsdFpUbzZVM2x6ZEdWdFZHbHRaVDQ2T25ObGNtbGhiR2w2WlRvNmFHXFxcblptT0dZMk5qSm1ZbU16WVRWaE5ER3hBMTA4YzJWeVpHVmZkMkZ6YlY5aWFXNWtaMlZ1T2pwa1pUbzZUV0Z3UVdOalpYTnpJR0Z6SUhObFxcXG5jbVJsT2pwa1pUbzZUV0Z3UVdOalpYTnpQam82Ym1WNGRGOXJaWGxmYzJWbFpEbzZhR1V5WTJZek1tTXpZV1U0TmpRM00yR3lBeTV6YldcXFxuRnNiSFpsWXpvNlUyMWhiR3hXWldNOFFUNDZPbkIxYzJnNk9tZzNNR05sTldaaVptSTNZVEF3TXpsaXN3TndQR0ZzYkc5ak9qcDJaV002XFxcbk9sWmxZenhVUGlCaGN5QmhiR3h2WXpvNmRtVmpPanB6Y0dWalgyWnliMjFmYVhSbGNsOXVaWE4wWldRNk9sTndaV05HY205dFNYUmxja1xcXG41bGMzUmxaRHhVTEVrK1BqbzZabkp2YlY5cGRHVnlPanBvT1RoaU5ESmhNekUyWW1WbVpHWTVPYlFEUEdOdmNtVTZPbk4wY2pvNlBHbHRcXFxuY0d3Z2MzUnlQam82ZEhKcGJWOXpkR0Z5ZEY5dFlYUmphR1Z6T2pwb056UTVPRFkzTURBNVpEVXlNekZtT0xVRFJ6eGpiM0psT2pwMGFXXFxcbjFsT2pwRWRYSmhkR2x2YmlCaGN5QmpiM0psT2pwdmNITTZPbUZ5YVhSb09qcFRkV0krT2pwemRXSTZPbWhoWVRZMk16ZzNOV1kxWldZNFxcXG5aVEJtdGdOcWFXNWtaWGh0WVhBNk9tMWhjRG82WTI5eVpUbzZjbUYzT2pvOGFXMXdiQ0JwYm1SbGVHMWhjRG82YldGd09qcGpiM0psT2pcXFxucEpibVJsZUUxaGNFTnZjbVU4U3l4V1BqNDZPbVpwYm1SZmIzSmZhVzV6WlhKME9qcG9aalkxWm1aaE1HUXhNakEwTXpNd01iY0RhbWx1XFxcblpHVjRiV0Z3T2pwdFlYQTZPbU52Y21VNk9uSmhkem82UEdsdGNHd2dhVzVrWlhodFlYQTZPbTFoY0RvNlkyOXlaVG82U1c1a1pYaE5ZWFxcXG5CRGIzSmxQRXNzVmo0K09qcG1hVzVrWDI5eVgybHVjMlZ5ZERvNmFHVXlZV0psT0dOalpUY3lOMkkzWlRHNEEycHBibVJsZUcxaGNEbzZcXFxuYldGd09qcGpiM0psT2pweVlYYzZPanhwYlhCc0lHbHVaR1Y0YldGd09qcHRZWEE2T21OdmNtVTZPa2x1WkdWNFRXRndRMjl5WlR4TExGXFxcblkrUGpvNlptbHVaRjl2Y2w5cGJuTmxjblE2T21neE5EbGpOMlZsTTJVMk16QmpNak15dVFORmNHVnlZMlZ1ZEY5bGJtTnZaR2x1WnpvNlxcXG5VR1Z5WTJWdWRFUmxZMjlrWlRvNlpHVmpiMlJsWDNWMFpqaGZiRzl6YzNrNk9taGtOMlU0TkdZd016VTJPVFl3TVdKbHVnTmVQSE4wWkRcXFxubzZkR2x0WlRvNlUzbHpkR1Z0VkdsdFpTQmhjeUJqYjNKbE9qcHZjSE02T21GeWFYUm9PanBCWkdROFkyOXlaVG82ZEdsdFpUbzZSSFZ5XFxcbllYUnBiMjQrUGpvNllXUmtPanBvTmpGaFpqSTFOREU0WXpkbE1UQXlZYnNEUldsdVpHVjRiV0Z3T2pwdFlYQTZPbU52Y21VNk9rbHVaR1xcXG5WNFRXRndRMjl5WlR4TExGWStPanB3ZFhOb1gyVnVkSEo1T2pwb09URTNZalV5TlRFd01qTTBNalZtTjd3RFBtRnNiRzlqT2pweVlYZGZcXFxuZG1Wak9qcFNZWGRXWldNOFZDeEJQam82WjNKdmQxOWhiVzl5ZEdsNlpXUTZPbWd4WmpZME1tVXlOMll5WmpGaU5qRTV2UU5KY0dGeWEyXFxcbmx1WjE5c2IzUTZPbkpoZDE5eWQyeHZZMnM2T2xKaGQxSjNURzlqYXpvNmRXNXNiMk5yWDNOb1lYSmxaRjl6Ykc5M09qcG9ZV1ptTlRJNFxcXG5NR0poWm1ZMU1tSmtaTDRETm1Gc2JHOWpPanB5WVhkZmRtVmpPanBTWVhkV1pXTThWQ3hCUGpvNmMyaHlhVzVyT2pwb1lUUmpNVGRtTlRcXFxuYzFNVE01TUdNelliOEROWEpwYm1jNk9tUnBaMlZ6ZERvNlFteHZZMnREYjI1MFpYaDBPanAxY0dSaGRHVTZPbWd5TXpBMU16azRZVE16XFxcbk5tRmpNVEJpd0FNMWRHbHVlWFpsWXpvNmRHbHVlWFpsWXpvNlZHbHVlVlpsWXp4QlBqbzZjSFZ6YURvNmFETTFabUpsT1dSaFlUa3lZalxcXG5VM05EUEJBMFZwYm1SbGVHMWhjRG82YldGd09qcGpiM0psT2pwSmJtUmxlRTFoY0VOdmNtVThTeXhXUGpvNmNIVnphRjlsYm5SeWVUbzZcXFxuYURJNVltTm1OVGRpTXpSa05EUmlNekhDQXpwamIzSmxPanBtYlhRNk9tSjFhV3hrWlhKek9qcEVaV0oxWjFSMWNHeGxPanBtYVc1cGMyXFxcbmc2T21oa1pUa3hNVGt6WVRRMVl6WXhaRE5td3dNL2MyVnlaR1ZmYW5OdmJqbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbGNqeFNQam82Y0dGeVxcXG5jMlZmYVdSbGJuUTZPbWhpWlRNNVpUVTROVGhrWXpOaFlUZGl4QU03YzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2pcXFxueFNQam82Wlc1a1gyMWhjRG82YURCa1pHVmtaR1F4Tm1Wa1ptWmxOV0xGQXp0elpYSmtaVjlxYzI5dU9qcGtaVG82UkdWelpYSnBZV3hwXFxcbmVtVnlQRkkrT2pwbGJtUmZiV0Z3T2pwb016SXpZVEEwWlRoaU1EYzBNMkkzWk1ZRFBtRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV1xcXG5NOFZDeEJQam82WjNKdmQxOWhiVzl5ZEdsNlpXUTZPbWd5TWpReVpqTTVOREV4Tm1ZeE9Ua3h4d013ZFhKc09qcHdZWEp6WlhJNk9rbHVcXFxuY0hWME9qcHVaWGgwWDNWMFpqZzZPbWhrWTJNME5UTXhOVFF3T0RrMVpUWml5QU1qZFhKc09qcFZjbXc2T20xMWRHRjBaVG82YUdZM01tXFxcbk5qWm1JMU1XUmhZamcwTWpuSkF6RmpiM0psT2pwemJHbGpaVG82YzI5eWREbzZhVzV6WlhKMFgzUmhhV3c2T21nMllXUXlOemhpTm1SbFxcXG5NRE5pTVdGaHlnTkxjMlZ5WkdWZmFuTnZiam82WkdVNk9rUmxjMlZ5YVdGc2FYcGxjanhTUGpvNmNHRnljMlZmWlhod2IyNWxiblJmYjNcXFxuWmxjbVpzYjNjNk9taGhORFUyWmpJeE56a3hNamMzTlRnMXl3TTBaR1Z1YjE5allXTm9aVjlrYVhJNk9uZGhjMjA2T21GelgycHpYMlZ5XFxcbmNtOXlPanBvTURWa05qWXpNV1ZsTURWbE56RTRNc3dEcEFGa1pXNXZYMk5oWTJobFgyUnBjam82Ykc5allXdzZPbTFoYm1sbVpYTjBPalxcXG5wZk9qbzhhVzF3YkNCelpYSmtaVG82YzJWeU9qcFRaWEpwWVd4cGVtVWdabTl5SUdSbGJtOWZZMkZqYUdWZlpHbHlPanBzYjJOaGJEbzZcXFxuYldGdWFXWmxjM1E2T2xObGNtbGhiR2w2WldSTWIyTmhiRU5oWTJobFRXRnVhV1psYzNSRVlYUmhQam82YzJWeWFXRnNhWHBsT2pwb01tXFxcbk5rWVRobFlXRXlZV1V4TXpobE5NMERTM05sY21SbFgycHpiMjQ2T21SbE9qcEVaWE5sY21saGJHbDZaWEk4VWo0Nk9uQmhjbk5sWDJWNFxcXG5jRzl1Wlc1MFgyOTJaWEptYkc5M09qcG9PV0ptWTJOa1pURTRZekptTWpObVpzNERMSFZ5YkRvNlZYSnNPanAwWVd0bFgyRm1kR1Z5WDNcXFxuQmhkR2c2T21nNVlXUXdObVkyT1RJNE5HVTRPV0UyendORmRXNXBZMjlrWlY5aWFXUnBPanBqYUdGeVgyUmhkR0U2T21KelpXRnlZMmhmXFxcbmNtRnVaMlZmZG1Gc2RXVmZkR0ZpYkdVNk9taGlPVEV3TkRZM1pUQTVOVFZpWlRCazBBTkNjMlZ5WkdWZmFuTnZiam82WkdVNk9rUmxjMlxcXG5WeWFXRnNhWHBsY2p4U1BqbzZhV2R1YjNKbFgyUmxZMmx0WVd3Nk9tZzVZakl3WWpNNVpqWTNORE5rTVRrejBRTmZaR1Z1YjE5allXTm9cXFxuWlY5a2FYSTZPbU5oWTJobE9qcFRaWEpwWVd4cGVtVmtRMkZqYUdWa1ZYSnNUV1YwWVdSaGRHRTZPbWx1ZEc5ZlkyRmphR1ZrWDNWeWJGXFxcbjl0WlhSaFpHRjBZVG82YUdaaE9HTmtaRGt3TlRabE0ySXdZVGpTQTFOa1pXNXZYMk5oWTJobFgyUnBjam82Ykc5allXdzZPbTFoYm1sbVxcXG5aWE4wT2pwTWIyTmhiRU5oWTJobFRXRnVhV1psYzNSRVlYUmhPanBoYzE5cWMyOXVPanBvTmpVeU1qUTNaalZqTkdaa04yWmxOZE1ETDNcXFxuVnliRG82Y0dGeWMyVnlPanBKYm5CMWREbzZkMmwwYUY5c2IyYzZPbWhtTlROaFpUTTBaRFppTnpOaE1EZzQxQU14WTI5eVpUbzZjMnhwXFxcblkyVTZPbk52Y25RNk9tbHVjMlZ5ZEY5MFlXbHNPanBvTWpRMFpqRXpaV1E1WVdabFlqTXlOTlVET1dGc2JHOWpPanAyWldNNk9sWmxZelxcXG54VUxFRStPanBsZUhSbGJtUmZaR1Z6ZFdkaGNtVmtPanBvTWprMk9XVTVaV05sT0dFd1pUSTNOZFlEU1R4elpYSmtaVjlxYzI5dU9qcGxcXFxuY25KdmNqbzZSWEp5YjNJZ1lYTWdjMlZ5WkdVNk9tUmxPanBGY25KdmNqNDZPbU4xYzNSdmJUbzZhR1JrTlRjNU9ERm1OREZoWkdOall6XFxcbmZYQTNvOFkyOXlaVG82YzNSeU9qcHdZWFIwWlhKdU9qcERhR0Z5VUhKbFpHbGpZWFJsVTJWaGNtTm9aWEk4Umo0Z1lYTWdZMjl5WlRvNlxcXG5jM1J5T2pwd1lYUjBaWEp1T2pwU1pYWmxjbk5sVTJWaGNtTm9aWEkrT2pwdVpYaDBYM0psYW1WamRGOWlZV05yT2pwb09HRTJPRGMzWldcXFxuUTRNR1F6TmprM1pOZ0RianhqYjNKbE9qcHpkSEk2T25CaGRIUmxjbTQ2T2tOb1lYSlFjbVZrYVdOaGRHVlRaV0Z5WTJobGNqeEdQaUJoXFxcbmN5QmpiM0psT2pwemRISTZPbkJoZEhSbGNtNDZPbE5sWVhKamFHVnlQam82Ym1WNGRGOXlaV3BsWTNRNk9tZzVNR1ZpWWpnMllUTmxNelxcXG5kallqRTEyUU5LWTI5eVpUbzZabTEwT2pwdWRXMDZPanhwYlhCc0lHTnZjbVU2T21adGREbzZURzkzWlhKSVpYZ2dabTl5SUdreE5qNDZcXFxuT21adGREbzZhRGxpTldNMk16Tm1aRE5tWXpJd09USGFBMGxqYjNKbE9qcG1iWFE2T201MWJUbzZQR2x0Y0d3Z1kyOXlaVG82Wm0xME9qXFxcbnBWY0hCbGNraGxlQ0JtYjNJZ2FUZytPanBtYlhRNk9taGxPVFU0WkRVd01EYzNPVEE1TW1ZNDJ3TkpZMjl5WlRvNlptMTBPanB1ZFcwNlxcXG5PanhwYlhCc0lHTnZjbVU2T21adGREbzZURzkzWlhKSVpYZ2dabTl5SUdrNFBqbzZabTEwT2pwb1pqUXhabVppWW1NME16Y3pPVFZsTnRcXFxud0RSbWhoYzJoaWNtOTNiam82Y21GM09qcHBibTVsY2pvNlVtRjNWR0ZpYkdVOFZDeEJQam82WlhKaGMyVmZibTlmWkhKdmNEbzZhRE0yXFxcblptVmlNVFV5WlRBd09EQXdPV0xkQXp0a1pXNXZYMk5oWTJobFgyUnBjam82Ykc5allXdzZPblZ5YkY5d1lYUm9YM05sWjIxbGJuUnpPalxcXG5wb05XWXpNMkZsWWprNE5EYzNNek5qWnQ0RE5tTnZjbVU2T25OMGNqbzZQR2x0Y0d3Z2MzUnlQam82ZEhKcGJWOXRZWFJqYUdWek9qcG9cXFxuTjJNMllqWmhaVGN6TXpBMk9HRXdNdDhEU21OdmNtVTZPbVp0ZERvNmJuVnRPam84YVcxd2JDQmpiM0psT2pwbWJYUTZPa3h2ZDJWeVNHXFxcblY0SUdadmNpQnBNekkrT2pwbWJYUTZPbWhqTm1Zd01qTm1aRGd4TVdJMk1ESm00QU5LWTI5eVpUbzZabTEwT2pwdWRXMDZPanhwYlhCc1xcXG5JR052Y21VNk9tWnRkRG82VlhCd1pYSklaWGdnWm05eUlHa3pNajQ2T21adGREbzZhRFZrTXpZNFlUTmxOV1ptTlRRNU5qVGhBeTF6WlhcXFxuSmtaVjlxYzI5dU9qcGtaVG82Wm5KdmJWOTBjbUZwZERvNmFHRmtaVEF4T1RVNFlqQTBNekV5WVRIaUEwRnpaWEprWlY5M1lYTnRYMkpwXFxcbmJtUm5aVzQ2T21SbE9qcEVaWE5sY21saGJHbDZaWEk2T21GelgySjVkR1Z6T2pwb05XSTFaVEkwTVRsbFpUZzJZakpoTWVNRE5YTnRZV1xcXG54c2RtVmpPanBUYldGc2JGWmxZenhCUGpvNmRISjVYM0psYzJWeWRtVTZPbWhsWXpneE9URTFaR1ZqWmpVMU5qZ3c1QU5DUEVZZ1lYTWdcXFxuWTI5eVpUbzZjM1J5T2pwd1lYUjBaWEp1T2pwTmRXeDBhVU5vWVhKRmNUNDZPbTFoZEdOb1pYTTZPbWhsWmpKbE5qYzNPRGxoTldaak1UXFxcbmxoNVFNMllXeHNiMk02T25KaGQxOTJaV002T2xKaGQxWmxZenhVTEVFK09qcHphSEpwYm1zNk9tZzNZV1JtWVdaak5EZzVPR0V5TURneVxcXG41Z00yWVd4c2IyTTZPbkpoZDE5MlpXTTZPbEpoZDFabFl6eFVMRUUrT2pwemFISnBibXM2T21nNE5ESXpabVZpT1RnNU9XWTBOV0kzNXdcXFxuTTJkWEpzT2pwd1lYSnpaWEk2T2xCaGNuTmxjam82Y0dGeWMyVmZabkpoWjIxbGJuUTZPbWc0TlRGaE1qRXpaV1kwWkdZNVpURmw2QU5vXFxcblBHTnZjbVU2T21sMFpYSTZPbUZrWVhCMFpYSnpPanB0WVhBNk9rMWhjRHhKTEVZK0lHRnpJR052Y21VNk9tbDBaWEk2T25SeVlXbDBjelxcXG5vNmFYUmxjbUYwYjNJNk9rbDBaWEpoZEc5eVBqbzZabTlzWkRvNmFEVmpNV0UwWldGbFltSTJZelptTjJicEF5MXpaWEprWlY5cWMyOXVcXFxuT2pwa1pUbzZabkp2YlY5MGNtRnBkRG82YURoaU16TTVaV0V4T0Rjek1USmpZbVBxQTJzOGFHRnphR0p5YjNkdU9qcHRZWEE2T2toaGMyXFxcbmhOWVhBOFN5eFdMRk1zUVQ0Z1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBqYjJ4c1pXTjBPanBGZUhSbGJtUThLRXNzVmlrK1xcXG5Qam82WlhoMFpXNWtPanBvTVdKak5EaGtPR1UzWmpaaE5ESTJPZXNEYVhObGNtUmxPanBrWlRvNmFXMXdiSE02T2p4cGJYQnNJSE5sY21cXFxuUmxPanBrWlRvNlJHVnpaWEpwWVd4cGVtVWdabTl5SUhOMFpEbzZkR2x0WlRvNlUzbHpkR1Z0VkdsdFpUNDZPbVJsYzJWeWFXRnNhWHBsXFxcbk9qcG9OamMyWW1Jd00yRmxZVFkzTmpCak9ld0RPbU52Y21VNk9uTjBjam82UEdsdGNHd2djM1J5UGpvNmRISnBiVjlsYm1SZmJXRjBZMlxcXG5obGN6bzZhR05oT0RVeE9URmtOVFl3T0daaU1qWHRBemR3WlhKalpXNTBYMlZ1WTI5a2FXNW5PanBoWm5SbGNsOXdaWEpqWlc1MFgzTnBcXFxuWjI0Nk9tZzBZVGt4TlRSak9UQmpOamcwWkdVMjdnTXpjM1JrT2pwd1lYUm9PanBRWVhSb09qcGZkMmwwYUY5bGVIUmxibk5wYjI0Nk9tXFxcbmhqTkdaaE1qRmhZelUxWm1VNVpqYzU3d05EYzNSa09qcHdZVzVwWTJ0cGJtYzZPbUpsWjJsdVgzQmhibWxqWDJoaGJtUnNaWEk2T250N1xcXG5ZMnh2YzNWeVpYMTlPanBvTUdReE5qbG1ZVEk1TnpReE1XUTJaUEFETzJoaGMyaGljbTkzYmpvNmJXRndPanBJWVhOb1RXRndQRXNzVmlcXFxueFRMRUUrT2pwcGJuTmxjblE2T21neE9HTmtaakE1TXpOaE5UUTFPREJpOFFNYVoyeHZZbUZzYUhSMGNHTmhZMmhsWDJkbGRFaGxZV1JsXFxcbmNuUHlBeHRuYkc5aVlXeG9kSFJ3WTJGamFHVmZaMlYwUm1sc1pWUmxlSFR6QXhsc2IyTmhiR2gwZEhCallXTm9aVjluWlhSSVpXRmtaWFxcXG5KejlBTWFiRzlqWVd4b2RIUndZMkZqYUdWZloyVjBSbWxzWlZSbGVIVDFBelYwYVc1NWRtVmpPanAwYVc1NWRtVmpPanBVYVc1NVZtVmpcXFxuUEVFK09qcHdkWE5vT2pwb1lqY3hOMk5qTURBNE4yWXlabUV4T2ZZRFlUeHpkR1E2T21OdmJHeGxZM1JwYjI1ek9qcG9ZWE5vT2pwelpYXFxcblE2T2toaGMyaFRaWFE4VkQ0Z1lYTWdZMjl5WlRvNlkyOXVkbVZ5ZERvNlJuSnZiVHhiVkRzZ1RsMCtQam82Wm5KdmJUbzZhRFF4TVRZNVxcXG5PV0k1TjJaallXRm1aalQzQTJFOGMzUmtPanBqYjJ4c1pXTjBhVzl1Y3pvNmFHRnphRG82YzJWME9qcElZWE5vVTJWMFBGUStJR0Z6SUdcXFxuTnZjbVU2T21OdmJuWmxjblE2T2taeWIyMDhXMVE3SUU1ZFBqNDZPbVp5YjIwNk9taGpPREZqT1RKalkyWTNOelF5TUdObCtBTi9QSE4wXFxcblpEbzZZMjlzYkdWamRHbHZibk02T21oaGMyZzZPbTFoY0RvNlNHRnphRTFoY0R4TExGWXNVejRnWVhNZ1kyOXlaVG82YVhSbGNqbzZkSFxcXG5KaGFYUnpPanBqYjJ4c1pXTjBPanBHY205dFNYUmxjbUYwYjNJOEtFc3NWaWsrUGpvNlpuSnZiVjlwZEdWeU9qcG9ObVl5WVRKalpqZzJcXFxuTW1JMU9USmxZZmtEUEhObGNtUmxPanB6WlhJNk9sTmxjbWxoYkdsNlpVMWhjRG82YzJWeWFXRnNhWHBsWDJWdWRISjVPanBvWWpaallXXFxcblUxT0RNM00ySmpOMll3TlBvRFMyaGhjMmhpY205M2JqbzZjbUYzT2pwcGJtNWxjam82VkdGaWJHVk1ZWGx2ZFhRNk9tTmhiR04xYkdGMFxcXG5aVjlzWVhsdmRYUmZabTl5T2pwb09XSXlNVGRoTURWbVlURXhNekJrTS9zRFRHaGhjMmhpY205M2JqbzZjbUYzT2pwcGJtNWxjam82VW1cXFxuRjNWR0ZpYkdWSmJtNWxjanhCUGpvNlptbHVaRjlwYm5ObGNuUmZjMnh2ZERvNmFEWmtNamMyTkdJellXVTVZemRqWldMOEF6OXpaWEprXFxcblpWOXFjMjl1T2pwa1pUbzZSR1Z6WlhKcFlXeHBlbVZ5UEZJK09qcHdZWEp6WlY5cFpHVnVkRG82YURFM1l6bGxZVFZpWlRjM056azBNMlxcXG5MOUF6dGhiR3h2WXpvNmNtRjNYM1psWXpvNlVtRjNWbVZqUEZRc1FUNDZPbUZzYkc5allYUmxYMmx1T2pwb01UVTFOR1l4TVRObFpESmtcXFxuTXpVMVpQNERYenhoYkd4dll6bzZjM1J5YVc1bk9qcFRkSEpwYm1jZ1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBqYjJ4c1pXXFxcbk4wT2pwRmVIUmxibVE4WTJoaGNqNCtPanBsZUhSbGJtUTZPbWcwTmpJM01UTXhaV0ZsWXpsaU5tVXovd003WVd4c2IyTTZPbkpoZDE5MlxcXG5aV002T2xKaGQxWmxZenhVTEVFK09qcGhiR3h2WTJGMFpWOXBiam82YURGaE9XRmpZemhoT1RRek16STVNakNBQkg4OGMzUmtPanBqYjJcXFxueHNaV04wYVc5dWN6bzZhR0Z6YURvNmJXRndPanBJWVhOb1RXRndQRXNzVml4VFBpQmhjeUJqYjNKbE9qcHBkR1Z5T2pwMGNtRnBkSE02XFxcbk9tTnZiR3hsWTNRNk9rWnliMjFKZEdWeVlYUnZjandvU3l4V0tUNCtPanBtY205dFgybDBaWEk2T21nME9UVmxNV0ZoWkdFeE1UYzFPV1xcXG5SbWdRUXdkWEpzT2pwd1lYSnpaWEk2T2xCaGNuTmxjam82Y0c5d1gzQmhkR2c2T21oaU1EUm1NVFE1TmpFMk1tTXpaVE5oZ2dSYlBHbGtcXFxuYm1FNk9uQjFibmxqYjJSbE9qcEVaV052WkdVZ1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBwZEdWeVlYUnZjam82U1hSbGNtXFxcbkYwYjNJK09qcHVaWGgwT2pwb00ySmpOMlJoT1RWak9XUmpaVGN4Wm9NRU8yRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlxcXG5Qam82WVd4c2IyTmhkR1ZmYVc0Nk9tZ3laakEwTXpKa1ptWmxNVEV6TkdVeGhBUTdZV3hzYjJNNk9uSmhkMTkyWldNNk9sSmhkMVpsWXpcXFxueFVMRUUrT2pwaGJHeHZZMkYwWlY5cGJqbzZhR1prWTJOaE9EZ3pPVEppTnpobU1qR0ZCR004YzNSa09qcHdZVzVwWTJ0cGJtYzZPbUpsXFxcbloybHVYM0JoYm1salgyaGhibVJzWlhJNk9sQmhibWxqVUdGNWJHOWhaQ0JoY3lCamIzSmxPanB3WVc1cFl6bzZRbTk0VFdWVmNENDZPbVxcXG5kbGREbzZhREpsWldRNU5HUXlOalEyTmpBell6bUdCRVJvWVhOb1luSnZkMjQ2T25KaGR6bzZVbUYzVkdGaWJHVkpibTVsY2p4QlBqbzZcXFxuWVd4c2IyTmhkR2x2Ymw5cGJtWnZPanBvTjJaalptWTNZVE00WkdSak9UUm1Nb2NFUEhObGNtUmxPanB6WlhJNk9sTmxjbWxoYkdsNlpVXFxcbjFoY0RvNmMyVnlhV0ZzYVhwbFgyVnVkSEo1T2pwb1pERTFaREZtTVdRd09EWTBaamt6WklnRVBITmxjbVJsT2pwelpYSTZPbE5sY21saFxcXG5iR2w2WlUxaGNEbzZjMlZ5YVdGc2FYcGxYMlZ1ZEhKNU9qcG9aVGd4TmpRek1qWTJZak5tTkRSaFpJa0VPbWhoYzJoaWNtOTNiam82Y21cXFxuRjNPanBTWVhkVVlXSnNaVWx1Ym1WeVBFRStPanBsY21GelpUbzZhR1k0WVdZMU5qZGtOekZtTVRrM01HYUtCRXc4YzJWeVpHVmZhbk52XFxcbmJqbzZaWEp5YjNJNk9rVnljbTl5U1cxd2JDQmhjeUJqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGsrT2pwbWJYUTZPbWc1TXpNeE9XWmtNalxcXG5Cak56ZzBOakV5aXdSVWRXNXBZMjlrWlY5dWIzSnRZV3hwZW1GMGFXOXVPanBrWldOdmJYQnZjMlU2T2tSbFkyOXRjRzl6YVhScGIyNXpcXFxuUEVrK09qcHpiM0owWDNCbGJtUnBibWM2T21oaFpqUXhaVEE1TVdWalpUUTNPR0ZsakFSVWRXNXBZMjlrWlY5dWIzSnRZV3hwZW1GMGFXXFxcbjl1T2pwa1pXTnZiWEJ2YzJVNk9rUmxZMjl0Y0c5emFYUnBiMjV6UEVrK09qcHpiM0owWDNCbGJtUnBibWM2T21oaU1UazFZMlZoTnpVNVxcXG5ZVEJtT1dVNGpRUkNkVzVwWTI5a1pWOXViM0p0WVd4cGVtRjBhVzl1T2pwd1pYSm1aV04wWDJoaGMyZzZPbTF3YUY5c2IyOXJkWEE2T21cXFxuaGhOMlkwTVRVeE1EUXhNVE00TWpNeWpnUTdhR0Z6YUdKeWIzZHVPanB0WVhBNk9raGhjMmhOWVhBOFN5eFdMRk1zUVQ0Nk9tbHVjMlZ5XFxcbmREbzZhRFZqWlRsbE9EazFabU01TnpWak5qR1BCQ1ZoYkd4dll6bzZabTEwT2pwbWIzSnRZWFE2T21obU9UYzRaakZsWXpNM1l6a3laRFxcXG5BNWtBUnhQR052Y21VNk9tbDBaWEk2T21Ga1lYQjBaWEp6T2pwamFHRnBiam82UTJoaGFXNDhRU3hDUGlCaGN5QmpiM0psT2pwcGRHVnlcXFxuT2pwMGNtRnBkSE02T21sMFpYSmhkRzl5T2pwSmRHVnlZWFJ2Y2o0Nk9uTnBlbVZmYUdsdWREbzZhRGhsWVRJek9USTJPVEl3TkdSbE16XFxcbktSQkdnOGMyVnlaR1ZmZDJGemJWOWlhVzVrWjJWdU9qcGtaVG82UkdWelpYSnBZV3hwZW1WeUlHRnpJSE5sY21SbE9qcGtaVG82UkdWelxcXG5aWEpwWVd4cGVtVnlQam82WkdWelpYSnBZV3hwZW1WZmMzUnlhVzVuT2pwb01ETXdNakl3WlRSaE5EZGhPVFJpWXBJRU9tTnZjbVU2T25cXFxuTnNhV05sT2pwemIzSjBPanB3Y205MmFXUmxYM052Y25SbFpGOWlZWFJqYURvNmFETmhZbUl5TkRJMU1URXpPVFZoWm1XVEJEcGpiM0psXFxcbk9qcHpiR2xqWlRvNmMyOXlkRG82Y0hKdmRtbGtaVjl6YjNKMFpXUmZZbUYwWTJnNk9tZ3hPVFJoTldWa1pqTTBORE14TWpJNWxBUk5QSFxcXG5OMFpEbzZhVzg2T21WeWNtOXlPanBGY25KdmNpQmhjeUJqYjNKbE9qcGxjbkp2Y2pvNlJYSnliM0krT2pwa1pYTmpjbWx3ZEdsdmJqbzZcXFxuYUdRNU1qQXhNV1F3WldaaE5XWTFZV09WQkRBOEpsUWdZWE1nWTI5eVpUbzZabTEwT2pwRVpXSjFaejQ2T21adGREbzZhRFJpT0Rjd1lUXFxcbmcwTTJWbFlUUTNPV2FXQkdWa1pXNXZYMk5oWTJobFgyUnBjam82Ykc5allXdzZPa3h2WTJGc1NIUjBjRU5oWTJobFBFVnVkajQ2T21kbFxcXG5kRjkxY214ZmJXVjBZV1JoZEdGZlkyaGxZMnRwYm1kZloyeHZZbUZzWDJOaFkyaGxPanBvTkRnNVlqRTVaRFF4TW1Jek1qRXpOcGNFUkdcXFxuaGhjMmhpY205M2JqbzZjbUYzT2pwVVlXSnNaVXhoZVc5MWREbzZZMkZzWTNWc1lYUmxYMnhoZVc5MWRGOW1iM0k2T21nNFpqRTNNR1l6XFxcbk5XVXdZV05qTWprNG1BUW5jMjFoYkd4MlpXTTZPbVJsWVd4c2IyTmhkR1U2T21oaVpXVTFNVGczTXpCa09EVmhNekF5bVFRcWFuTmZjM1xcXG5sek9qcEpkR1Z5VTNSaGRHVTZPbTVsZUhRNk9taG1ZVFl3TURFek5tWm1aREEzWkdKbG1nUXBkWEpzT2pwVmNtdzZPbk5sZEY5bWNtRm5cXFxuYldWdWREbzZhREV4TlRCaE56UTVOMlV3TVRCaFpXYWJCQ3AxY213Nk9sVnliRG82ZEdGclpWOW1jbUZuYldWdWREbzZhR1ZtTVdRMk5HXFxcblJrT0RFek1EZGhZbUdjQkV0MGFXNTVkbVZqT2pwaGNuSmhlWFpsWXpvNlFYSnlZWGxXWldNOFFUNDZPbVJ5WVdsdVgzUnZYM1psWTE5aFxcXG5ibVJmY21WelpYSjJaVG82YURsaE1ERmlNV0prWW1FelptUXpZV0dkQkV0MGFXNTVkbVZqT2pwaGNuSmhlWFpsWXpvNlFYSnlZWGxXWldcXFxuTThRVDQ2T21SeVlXbHVYM1J2WDNabFkxOWhibVJmY21WelpYSjJaVG82YURBd09EbGpORGd6TkdWbE5EazBaV09lQkN4cFpHNWhPanAxXFxcbmRITTBOam82WkdWamIyUmxYM05zYVdObE9qcG9aVGhrWXpReU5tVTRaVFE1TWpJMU1KOEVPV0ZzYkc5ak9qcDJaV002T2xabFl6eFVMRVxcXG5FK09qcGxlSFJsYm1SZlpHVnpkV2RoY21Wa09qcG9ZalE1TXpkak9UVmlNREppTVdRME1xQUVMWE4wWkRvNmNHRjBhRG82VUdGMGFEbzZcXFxuWm1sc1pWOXVZVzFsT2pwb00ySXdOalk1TnpsbFpEYzRNelpoT2FFRVFHRnNiRzlqT2pwemVXNWpPanBoY21OcGJtNWxjbDlzWVhsdmRYXFxcblJmWm05eVgzWmhiSFZsWDJ4aGVXOTFkRG82YURNd1lqRXlPVFZtTmprMFltSmhZamVpQkRSamIzSmxPanBvWVhOb09qcENkV2xzWkVoaFxcXG5jMmhsY2pvNmFHRnphRjl2Ym1VNk9taG1PRFV6TVdZM1pEa3lORFJqT1RJM293UjRZMjl5WlRvNmMzUnlPanAwY21GcGRITTZPanhwYlhcXFxuQnNJR052Y21VNk9uTnNhV05sT2pwcGJtUmxlRG82VTJ4cFkyVkpibVJsZUR4emRISStJR1p2Y2lCamIzSmxPanB2Y0hNNk9uSmhibWRsXFxcbk9qcFNZVzVuWlR4MWMybDZaVDQrT2pwblpYUTZPbWd4TXpZd1ptSXdOelkwT1ROalptRXlwQVJCYzJWeVpHVmZhbk52YmpvNmNtVmhaRFxcXG5vNlUyeHBZMlZTWldGa09qcHdiM05wZEdsdmJsOXZabDlwYm1SbGVEbzZhR0prWW1FNU1XWXdabUk1TXpWa1lUQ2xCRU04ZDJGemJWOWlcXFxuYVc1a1oyVnVPanBLYzFaaGJIVmxJR0Z6SUdOdmNtVTZPbVp0ZERvNlJHVmlkV2MrT2pwbWJYUTZPbWc0T1RVd1pUWTBNRGcyWXpJME5tXFxcbk5ocGdSNFkyOXlaVG82YzNSeU9qcDBjbUZwZEhNNk9qeHBiWEJzSUdOdmNtVTZPbk5zYVdObE9qcHBibVJsZURvNlUyeHBZMlZKYm1SbFxcXG5lRHh6ZEhJK0lHWnZjaUJqYjNKbE9qcHZjSE02T25KaGJtZGxPanBTWVc1blpUeDFjMmw2WlQ0K09qcG5aWFE2T21neE16WXdabUl3TnpcXFxuWTBPVE5qWm1FeXB3UnhQR052Y21VNk9tbDBaWEk2T21Ga1lYQjBaWEp6T2pwamFHRnBiam82UTJoaGFXNDhRU3hDUGlCaGN5QmpiM0psXFxcbk9qcHBkR1Z5T2pwMGNtRnBkSE02T21sMFpYSmhkRzl5T2pwSmRHVnlZWFJ2Y2o0Nk9uTnBlbVZmYUdsdWREbzZhRGRtTmpjeFpqWXlZMlxcXG5ReVltSTBZVEtvQkRaelpYSmtaVjlxYzI5dU9qcGtaVG82VUdGeWMyVnlUblZ0WW1WeU9qcDJhWE5wZERvNmFHRXhZMlZqWlRNM00ySmlcXFxuTW1SaU1qYXBCRUJqYjNKbE9qcHBkR1Z5T2pwMGNtRnBkSE02T21sMFpYSmhkRzl5T2pwSmRHVnlZWFJ2Y2pvNlpYRmZZbms2T21nNE56XFxcblZtWW1aa056RTNOREE1T0dObXFnU0xBV1JsYm05ZlkyRmphR1ZmWkdseU9qcGpZV05vWlRvNlh6bzZQR2x0Y0d3Z2MyVnlaR1U2T25ObFxcXG5jam82VTJWeWFXRnNhWHBsSUdadmNpQmtaVzV2WDJOaFkyaGxYMlJwY2pvNlkyRmphR1U2T2xObGNtbGhiR2w2WldSRFlXTm9aV1JWY21cXFxueE5aWFJoWkdGMFlUNDZPbk5sY21saGJHbDZaVG82YUdNeU1tWXpaamhqWTJZd09USTFPV09yQkUxa1pXNXZYMk5oWTJobFgyUnBjam82XFxcbmJHOWpZV3c2T2t4dlkyRnNRMkZqYUdWVGRXSlFZWFJvT2pwaGMxOXlaV3hoZEdsMlpWOXdZWFJvT2pwb1lqVmpaVGM1TURBek5UVmlPRFxcXG5Vd05Ld0VNbk5sY21SbFgycHpiMjQ2T25KbFlXUTZPbWxuYm05eVpWOWxjMk5oY0dVNk9taGxNR05rWVRrek5UWmxObVF3TnpnMHJRUTlcXFxuWVd4c2IyTTZPbk4wY2pvNlBHbHRjR3dnYzNSeVBqbzZkRzlmWVhOamFXbGZiRzkzWlhKallYTmxPanBvT1RGbU5EZGlOemczWkRBMFpqXFxcblUwTnE0RVVYVnVhV052WkdWZmJtOXliV0ZzYVhwaGRHbHZiam82Ykc5dmEzVndjem82WTI5dGNHRjBhV0pwYkdsMGVWOW1kV3hzZVY5a1xcXG5aV052YlhCdmMyVmtPanBvTlRKbFpqY3daRFZtWVdNNE9UWTFZYThFVFhWdWFXTnZaR1ZmYm05eWJXRnNhWHBoZEdsdmJqbzZiRzl2YTNcXFxuVndjem82WTJGdWIyNXBZMkZzWDJaMWJHeDVYMlJsWTI5dGNHOXpaV1E2T21neE5ETmxOREZqTWpKallqbGlaREZtc0FSbllXNTVhRzkzXFxcbk9qcGphR0ZwYmpvNlBHbHRjR3dnWTI5eVpUbzZhWFJsY2pvNmRISmhhWFJ6T2pwcGRHVnlZWFJ2Y2pvNlNYUmxjbUYwYjNJZ1ptOXlJR1xcXG5GdWVXaHZkem82UTJoaGFXNCtPanB1WlhoME9qcG9aVEJoT0dWak1EZ3paRGhsWmpGa05MRUVMV052Y21VNk9taGhjMmc2T25OcGNEbzZcXFxuZFRoMGJ6WTBYMnhsT2pwb1pqUTBOalk0WmpSak56WmhOalpoTUxJRU9HaGhjMmhpY205M2JqbzZjbUYzT2pwU1lYZFVZV0pzWlR4VUxFXFxcbkUrT2pwcGJuTmxjblE2T21oa09UYzJOR1V6TXprek0yRmpOV0k0c3dRU2JHOWpZV3hvZEhSd1kyRmphR1ZmYm1WM3RBUXRZMjl5WlRvNlxcXG5hR0Z6YURvNmMybHdPanAxT0hSdk5qUmZiR1U2T21obU5EUTJOamhtTkdNM05tRTJObUV3dFFRcFpHRjBZVjkxY213Nk9tMXBiV1U2T25cXFxuTndiR2wwTWpvNmFHWTRNREk0TkROaU1UZzJOalpoT1dPMkJFUnpaWEprWlY5cWMyOXVPanBrWlRvNlJHVnpaWEpwWVd4cGVtVnlQRkkrXFxcbk9qcHdZWEp6WlY5M2FHbDBaWE53WVdObE9qcG9NRFU1Wm1GbFl6QTJabU5sWW1JM05iY0VSbk5sY21SbFgycHpiMjQ2T21SbE9qcEVaWFxcXG5ObGNtbGhiR2w2WlhJOFVqNDZPbkJoY25ObFgyOWlhbVZqZEY5amIyeHZiam82YURjek1UVTNOakUwWVRNeFpUQTBORFc0QkROelpYSmtcXFxuWlRvNlpHVTZPa1Z5Y205eU9qcHBiblpoYkdsa1gyeGxibWQwYURvNmFEVXdOR0pqTVRRd1lUWmtZVE14TVRtNUJFVm9ZWE5vWW5KdmQyXFxcbjQ2T25KaGR6bzZVbUYzVkdGaWJHVkpibTVsY2p4QlBqbzZabWx1WkY5cGJuTmxjblJmYzJ4dmREbzZhR0pqTWpRd1lXVTJPREk0WldVNFxcXG5NMkc2QkVSelpYSmtaVjlxYzI5dU9qcGtaVG82UkdWelpYSnBZV3hwZW1WeVBGSStPanB3WVhKelpWOTNhR2wwWlhOd1lXTmxPanBvTnpcXFxuVTJPVFl5WWpkallUTmhNV0ZsTjdzRVJuTmxjbVJsWDJwemIyNDZPbVJsT2pwRVpYTmxjbWxoYkdsNlpYSThVajQ2T25CaGNuTmxYMjlpXFxcbmFtVmpkRjlqYjJ4dmJqbzZhRGM0T0RaalpUVXlPRFE0WVdZMk56TzhCRHhqYjNKbE9qcHpkSEk2T2p4cGJYQnNJSE4wY2o0Nk9uUnlhV1xcXG4xZmMzUmhjblJmYldGMFkyaGxjem82YURsaE5ETmhNamsxTW1SaVpUa3pPR1c5QkNGMWNtdzZPbFZ5YkRvNmNHRjBhRG82YURJME9ETTJcXFxuTXpReFkyWmhNelUwTjJPK0JDMWhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWM2T25CdmNEbzZhRFF4TURjMlpERTFPR1EzTmpFd1pXXFxcbk8vQkVjOGRYSnNPanB3WVhKelpYSTZPbEJoY25ObFJYSnliM0lnWVhNZ1kyOXlaVG82Wm0xME9qcEVhWE53YkdGNVBqbzZabTEwT2pwb1xcXG5aVEZrTlRFd09UUmpOams1TkRVM05jQUVRM0JoY210cGJtZGZiRzkwWDJOdmNtVTZPbmR2Y21SZmJHOWphem82VjI5eVpFeHZZMnM2T21cXFxueHZZMnRmYzJ4dmR6bzZhRGhoT0RCaFpEbG1Zek5qTnpjeFptUEJCRmRqYjNKbE9qcHpiR2xqWlRvNmMyOXlkRG82YldWeVoyVmZjMjl5XFxcbmREbzZVblZ1Vm1WalBGSjFia0ZzYkc5alJpeFNkVzVFWldGc2JHOWpSajQ2T25KbGJXOTJaVG82YURWbVlUa3hOMlpqTVdNd1ltSXhaalxcXG5UQ0JDNWpiM0psT2pweVpYTjFiSFE2T25WdWQzSmhjRjltWVdsc1pXUTZPbWczTXpnd09XTmpNRFZoTnpnMlpUUTR3d1JLYzJWeVpHVmZcXFxuYW5OdmJqbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbGNqeFNQam82Y0dGeWMyVmZaR1ZqYVcxaGJGOXZkbVZ5Wm14dmR6bzZhRFkwTURVd1lUXFxcbmxtTVRrNFl6bGlOemZFQktvQlpHVnViMTlqWVdOb1pWOWthWEk2T214dlkyRnNPanB0WVc1cFptVnpkRG82WHpvNlBHbHRjR3dnYzJWeVxcXG5aR1U2T25ObGNqbzZVMlZ5YVdGc2FYcGxJR1p2Y2lCa1pXNXZYMk5oWTJobFgyUnBjam82Ykc5allXdzZPbTFoYm1sbVpYTjBPanBUWlhcXFxuSnBZV3hwZW1Wa1RHOWpZV3hEWVdOb1pVMWhibWxtWlhOMFJHRjBZVTF2WkhWc1pUNDZPbk5sY21saGJHbDZaVG82YUdNeU16QTNaR0k1XFxcbllUVXlaRGxtTW1URkJFTm9ZWE5vWW5KdmQyNDZPbkpoZHpvNlVtRjNWR0ZpYkdWSmJtNWxjanhCUGpvNmNISmxjR0Z5WlY5eVpYTnBlbVxcXG5VNk9taGhOV0ZtTWpKbU0yTm1NekprWkdVNHhnUktjMlZ5WkdWZmFuTnZiam82WkdVNk9rUmxjMlZ5YVdGc2FYcGxjanhTUGpvNmNHRnlcXFxuYzJWZlpHVmphVzFoYkY5dmRtVnlabXh2ZHpvNmFEUmhaamMxTkRaaE5EUTVOakExTjJMSEJGVmpiM0psT2pwemJHbGpaVG82YzI5eWREXFxcbm82YldWeVoyVmZjMjl5ZERvNlVuVnVWbVZqUEZKMWJrRnNiRzlqUml4U2RXNUVaV0ZzYkc5alJqNDZPbkIxYzJnNk9tZzJNR1F4TmpGaFxcXG5OVEV3T0RReVlqQXh5QVFJWDE5dGRXeDBhVFBKQkhNOGFXNWtaWGh0WVhBNk9tMWhjRG82U1c1a1pYaE5ZWEE4U3l4V01TeFRNVDRnWVhcXFxuTWdZMjl5WlRvNlkyMXdPanBRWVhKMGFXRnNSWEU4YVc1a1pYaHRZWEE2T20xaGNEbzZTVzVrWlhoTllYQThTeXhXTWl4VE1qNCtQam82XFxcblpYRTZPbWhsTmpWaVpqUmtNbUk1TVRBM056Y3p5Z1EvYUdGemFHSnliM2R1T2pweVlYYzZPbEpoZDFSaFlteGxQRlFzUVQ0Nk9tUnliM1xcXG5CZlpXeGxiV1Z1ZEhNNk9tZzRaak5pTVRNelkyUXhPVFJsT1RBNXl3US9hR0Z6YUdKeWIzZHVPanB5WVhjNk9sSmhkMVJoWW14bFBGUXNcXFxuUVQ0Nk9tUnliM0JmWld4bGJXVnVkSE02T21oak9EbG1ZVFZtWWpNM01qZ3hOalExekFSQmFHRnphR0p5YjNkdU9qcHRZWEE2T2toaGMyXFxcbmhOWVhBOFN5eFdMRk1zUVQ0Nk9tTnZiblJoYVc1elgydGxlVG82YUdFeU9UWmxNVFF3WTJGaFpUQTJaRGpOQkR0aGJHeHZZem82Y21GM1xcXG5YM1psWXpvNlVtRjNWbVZqUEZRc1FUNDZPbUZzYkc5allYUmxYMmx1T2pwb1pqSmtOVGd6Tm1VMk4yUTVNMkU0T000RUluVnliRG82VlhcXFxuSnNPanB4ZFdWeWVUbzZhR1kyWkRRME1HRXpObVZtTm1Fd01XWFBCQzkxY213Nk9sVnliRG82Y21WemRHOXlaVjloWm5SbGNsOXdZWFJvXFxcbk9qcG9OMlV6WXpZM01EVTNOREl6T0daalpkQUVQSFZ5YkRvNlZYSnNPanB5WlhOMGIzSmxYMkZzY21WaFpIbGZjR0Z5YzJWa1gyWnlZV1xcXG5kdFpXNTBPanBvTWpJek1XRmhNVEZtTWpWaVpqRXhOZEVFVW1SbGJtOWZZMkZqYUdWZlpHbHlPanBzYjJOaGJEbzZiV0Z1YVdabGMzUTZcXFxuT2t4dlkyRnNRMkZqYUdWTllXNXBabVZ6ZEVSaGRHRTZPbkpsYlc5MlpUbzZhRGN5WXpreE9UbGxZemsyTURjM056VFNCRHRoYkd4dll6XFxcbm82Y21GM1gzWmxZem82VW1GM1ZtVmpQRlFzUVQ0Nk9tRnNiRzlqWVhSbFgybHVPanBvWWpJeE1UZzNNakEyTTJNd056YzFOTk1FTzJGc1xcXG5iRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBqbzZZV3hzYjJOaGRHVmZhVzQ2T21neVlqVXpaV0UzT1RoaU5UVmxPRFJpMUFcXFxuUkxQR0ZzYkc5ak9qcGhiR3h2WXpvNlIyeHZZbUZzSUdGeklHTnZjbVU2T21Gc2JHOWpPanBCYkd4dlkyRjBiM0krT2pwemFISnBibXM2XFxcbk9tZ3hOelUyWlRaa1pUZzFNVE5pTWpBeDFRUTdZV3hzYjJNNk9uSmhkMTkyWldNNk9sSmhkMVpsWXp4VUxFRStPanBoYkd4dlkyRjBaVlxcXG45cGJqbzZhRFkwT1RBNU1EVTJaVGMzTVdKbVkyYldCRHRqYjNKbE9qcG1iWFE2T21KMWFXeGtaWEp6T2pwRVpXSjFaMU4wY25WamREbzZcXFxuWm1sdWFYTm9PanBvWXpaaE1qbGxPVEV4WVdKbFl6aGhPTmNFTkdOdmNtVTZPbWhoYzJnNk9rSjFhV3hrU0dGemFHVnlPanBvWVhOb1gyXFxcbjl1WlRvNmFHTm1PR1JqTlRGa01HVTJaR00yTkRuWUJDNWhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWM2T25CMWMyZzZPbWhtWkRsaVxcXG5PVE5oWVRWbU1XTXlaVFl3MlFROGMyVnlaR1U2T25ObGNqbzZVMlZ5YVdGc2FYcGxUV0Z3T2pwelpYSnBZV3hwZW1WZlpXNTBjbms2T21cXFxuZzRZamhpWW1GaVpEVTNNMlF6TVRRMDJnUmZQR0ZzYkc5ak9qcHpkSEpwYm1jNk9sTjBjbWx1WnlCaGN5QmpiM0psT2pwcGRHVnlPanAwXFxcbmNtRnBkSE02T21OdmJHeGxZM1E2T2tWNGRHVnVaRHhqYUdGeVBqNDZPbVY0ZEdWdVpEbzZhREUzTTJJMU1qSXlZamN4Wmpsa01HSGJCRFxcXG5kcGJtUmxlRzFoY0RvNmJXRndPanBKYm1SbGVFMWhjRHhMTEZZc1V6NDZPbWhoYzJnNk9tZzBNMkV4TURrNFkyUmlOVEF5WWpOajNBUmhcXFxuUEdOdmNtVTZPbk4wY2pvNmFYUmxjam82UTJoaGNrbHVaR2xqWlhNZ1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBwZEdWeVlYXFxcblJ2Y2pvNlNYUmxjbUYwYjNJK09qcHVaWGgwT2pwb1pHTTNZVFF4WkRCaE16WmxPV1UyWnQwRVlUeGpiM0psT2pwemRISTZPbWwwWlhJNlxcXG5Pa05vWVhKSmJtUnBZMlZ6SUdGeklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6bzZhWFJsY21GMGIzSTZPa2wwWlhKaGRHOXlQam82Ym1cXFxuVjRkRG82YUdSak4yRTBNV1F3WVRNMlpUbGxObWJlQkM1aGJHeHZZem82YzNSeWFXNW5PanBUZEhKcGJtYzZPbkIxYzJnNk9taG1aRGxpXFxcbk9UTmhZVFZtTVdNeVpUWXczd1JvUEdOdmNtVTZPbWwwWlhJNk9tRmtZWEIwWlhKek9qcHRZWEE2T2sxaGNEeEpMRVkrSUdGeklHTnZjbVxcXG5VNk9tbDBaWEk2T25SeVlXbDBjem82YVhSbGNtRjBiM0k2T2tsMFpYSmhkRzl5UGpvNlptOXNaRG82YURkaU1qTmlaVFJtWWpZd09EY3lcXFxuWVRUZ0JDNWhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWM2T25CMWMyZzZPbWhtWkRsaU9UTmhZVFZtTVdNeVpUWXc0UVE3WVd4c2IyXFxcbk02T25KaGQxOTJaV002T2xKaGQxWmxZenhVTEVFK09qcGhiR3h2WTJGMFpWOXBiam82YURRNVl6QmxOV1ppWmpNeFpHRmtZekxpQkdnOFxcXG5ZMjl5WlRvNmFYUmxjam82WVdSaGNIUmxjbk02T20xaGNEbzZUV0Z3UEVrc1JqNGdZWE1nWTI5eVpUbzZhWFJsY2pvNmRISmhhWFJ6T2pcXFxucHBkR1Z5WVhSdmNqbzZTWFJsY21GMGIzSStPanBtYjJ4a09qcG9Nek5tWlRKbE5HRmhNV0kwWlRCaU4rTUVOMmx1WkdWNGJXRndPanB0XFxcbllYQTZPa2x1WkdWNFRXRndQRXNzVml4VFBqbzZhR0Z6YURvNmFHSmhaV000Tm1JMU5qUmtaR05rWlRUa0JDNWhiR3h2WXpvNmMzUnlhV1xcXG41bk9qcFRkSEpwYm1jNk9uQjFjMmc2T21obVpEbGlPVE5oWVRWbU1XTXlaVFl3NVFSQWRYSnNPanB3WVhKelpYSTZPbk4wWVhKMGMxOTNcXFxuYVhSb1gzZHBibVJ2ZDNOZlpISnBkbVZmYkdWMGRHVnlPanBvTWpVeU9ESTNZelJoTkRVd01XVTFOT1lFUDJOdmNtVTZPbk5zYVdObE9qXFxcbnB6YjNKME9qcHBibk5sY25ScGIyNWZjMjl5ZEY5emFHbG1kRjlzWldaME9qcG9NRE01WWprNE5UQTNNR1JpWldRek9lY0VYenhoYkd4dlxcXG5Zem82YzNSeWFXNW5PanBUZEhKcGJtY2dZWE1nWTI5eVpUbzZhWFJsY2pvNmRISmhhWFJ6T2pwamIyeHNaV04wT2pwRmVIUmxibVE4WTJcXFxuaGhjajQrT2pwbGVIUmxibVE2T21nM1lUaGpZMlUxTXpjeFlUWmhaVEU0NkFSV1kyOXlaVG82YVhSbGNqbzZkSEpoYVhSek9qcHBkR1Z5XFxcbllYUnZjam82U1hSbGNtRjBiM0k2T21admNsOWxZV05vT2pwallXeHNPanA3ZTJOc2IzTjFjbVY5ZlRvNmFESm1NREJrTURabE5XUmtNalxcXG5RNFpUVHBCREp6WlhKa1pUbzZaR1U2T2tWeWNtOXlPanBwYm5aaGJHbGtYM1poYkhWbE9qcG9PRGc0WWpsbVptVTFOak13WW1abE9Pb0VcXFxuTjJsdVpHVjRiV0Z3T2pwdFlYQTZPa2x1WkdWNFRXRndQRXNzVml4VFBqbzZhR0Z6YURvNmFEbGxNMlJpWVdSbVlqUmlOMlUxTURUckJEXFxcbjFvWVhOb1luSnZkMjQ2T25KaGR6bzZVbUYzU1hSbGNsSmhibWRsUEZRK09qcHVaWGgwWDJsdGNHdzZPbWd5TmpkaU5ERmpOakUxWXpReFxcXG5OREJoN0FROWFHRnphR0p5YjNkdU9qcHlZWGM2T2xKaGQwbDBaWEpTWVc1blpUeFVQam82Ym1WNGRGOXBiWEJzT2pwb1pHWXdNRFkwTW1cXFxuVmhOekF3TnpNNU1lMEVVbVJsYm05ZlkyRmphR1ZmWkdseU9qcHNiMk5oYkRvNmJXRnVhV1psYzNRNk9reHZZMkZzUTJGamFHVk5ZVzVwXFxcblptVnpkRVJoZEdFNk9tbHVjMlZ5ZERvNmFEVXpaV1ZpTlRkaE5ETXpNVFptTVRudUJERnpaWEprWlRvNlpHVTZPa1Z5Y205eU9qcHBiblxcXG5aaGJHbGtYM1I1Y0dVNk9taGpORFEyTkROa00yVTFOR1l5WWpJMjd3UkZjR0Z5YTJsdVoxOXNiM1JmWTI5eVpUbzZjR0Z5YTJsdVoxOXNcXFxuYjNRNk9teHZZMnRmWW5WamEyVjBYMk5vWldOclpXUTZPbWcxTnpSbU56UmpNMlJoTlRGaVlUazU4QVE1WVd4c2IyTTZPblpsWXpvNlZtXFxcblZqUEZRc1FUNDZPbVY0ZEdWdVpGOWtaWE4xWjJGeVpXUTZPbWhoT1RreFlUbGxaRGxtWmpsallUSTE4UVJJUEdGc2JHOWpPanB6ZEhKcFxcXG5ibWM2T2tSeVlXbHVJR0Z6SUdOdmNtVTZPbTl3Y3pvNlpISnZjRG82UkhKdmNENDZPbVJ5YjNBNk9taGxOakZsWkRWaVpEa3hZVEprWVRcXFxubG04Z1JyUEdoaGMyaGljbTkzYmpvNmJXRndPanBJWVhOb1RXRndQRXNzVml4VExFRStJR0Z6SUdOdmNtVTZPbWwwWlhJNk9uUnlZV2wwXFxcbmN6bzZZMjlzYkdWamREbzZSWGgwWlc1a1BDaExMRllwUGo0Nk9tVjRkR1Z1WkRvNmFEQmhaREkxWlRFMFpXVTVZMlprTjJIekJEUmpiM1xcXG5KbE9qcG9ZWE5vT2pwQ2RXbHNaRWhoYzJobGNqbzZhR0Z6YUY5dmJtVTZPbWd5Tnpka1lURmhZelU0T0dRMU1HRTE5QVEwWTI5eVpUbzZcXFxuYUdGemFEbzZRblZwYkdSSVlYTm9aWEk2T21oaGMyaGZiMjVsT2pwb09UaG1NemxtTm1KaVpHRTFOelUzWS9VRU5ITmxjbVJsT2pwa1pUXFxcbm82YzJsNlpWOW9hVzUwT2pwbWNtOXRYMkp2ZFc1a2N6bzZhR1ZpT1RabU56UmpPREkwT0RnNFpXSDJCSFk4WkdWdWIxOWpZV05vWlY5a1xcXG5hWEk2T21kc2IySmhiRG82UjJ4dlltRnNTSFIwY0VOaFkyaGxQRVZ1ZGo0Z1lYTWdaR1Z1YjE5allXTm9aVjlrYVhJNk9tTmhZMmhsT2pcXFxucElkSFJ3UTJGamFHVStPanB5WldGa1gyWnBiR1ZmWW5sMFpYTTZPbWczWWpVNU5UTm1ZMll6TlRFMVpEVmw5d1FaWDE5M1ltZGZiRzlqXFxcbllXeG9kSFJ3WTJGamFHVmZabkpsWmZnRVl6eHpkR1E2T25CaGJtbGphMmx1WnpvNlltVm5hVzVmY0dGdWFXTTZPbEJoYm1salVHRjViR1xcXG45aFpEeEJQaUJoY3lCamIzSmxPanB3WVc1cFl6bzZRbTk0VFdWVmNENDZPblJoYTJWZlltOTRPanBvTlRReFltUmpNRFJoWVdNMk9UWXhcXFxuWXZrRVhEeGpiM0psT2pwamFHRnlPanBVYjB4dmQyVnlZMkZ6WlNCaGN5QmpiM0psT2pwcGRHVnlPanAwY21GcGRITTZPbWwwWlhKaGRHXFxcbjl5T2pwSmRHVnlZWFJ2Y2o0Nk9tNWxlSFE2T21nNU5EUXdOelEyWmpObVpURXlNek5rK2dRMmFXNWtaWGh0WVhBNk9tMWhjRG82U1c1a1xcXG5aWGhOWVhBOFN5eFdMRk0rT2pwblpYUTZPbWhpT1RZeVlqSmhZemRrWlRkak16Um0rd1E1WTI5eVpUbzZiM0J6T2pwbWRXNWpkR2x2YmpcXFxubzZSbTVQYm1ObE9qcGpZV3hzWDI5dVkyVTZPbWczT0RobU5ERTVZekF4TURBeE56VXcvQVJmUEdOdmNtVTZPbk4wY2pvNmFYUmxjam82XFxcblUzQnNhWFJPUEZBK0lHRnpJR052Y21VNk9tbDBaWEk2T25SeVlXbDBjem82YVhSbGNtRjBiM0k2T2tsMFpYSmhkRzl5UGpvNmJtVjRkRFxcXG5vNmFEUmpOVFptWlRGaU9ERTROMlV5WXpYOUJHNDhZMjl5WlRvNmIzQnpPanB5WVc1blpUbzZVbUZ1WjJWSmJtTnNkWE5wZG1VOGRYTnBcXFxuZW1VK0lHRnpJR052Y21VNk9uTnNhV05sT2pwcGJtUmxlRG82VTJ4cFkyVkpibVJsZUR4YlZGMCtQam82YVc1a1pYaGZiWFYwT2pwb1pUXFxcbmRpTURVeE4yUm1aRGcwTnpsaE1mNEVRMkZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrT2pwemQyRndYM0psYlc5MlpUbzZZWE56WlhKMFxcXG5YMlpoYVd4bFpEbzZhRFExTkRaalpXRXhNalZtT1RabU5XSC9CRDVoYkd4dll6bzZkbVZqT2pwV1pXTThWQ3hCUGpvNmNtVnRiM1psT2pcXFxucGhjM05sY25SZlptRnBiR1ZrT2pwb1lUQTRNbVkxTWpoaU4yWTFPVFkxTm9BRlFXRnNiRzlqT2pwMlpXTTZPbFpsWXp4VUxFRStPanB6XFxcbmNHeHBkRjl2Wm1ZNk9tRnpjMlZ5ZEY5bVlXbHNaV1E2T21nNU56QTFPRGxsWXpBMVlUSTRNalF4Z1FVMlkyOXlaVG82Y0dGdWFXTnJhV1xcXG41bk9qcHdZVzVwWTE5aWIzVnVaSE5mWTJobFkyczZPbWhqWlRJd056QTVObUk1TmpnMU5qRmtnZ1ZCWTI5eVpUbzZjMnhwWTJVNk9tbHVcXFxuWkdWNE9qcHpiR2xqWlY5emRHRnlkRjlwYm1SbGVGOXNaVzVmWm1GcGJEbzZhRE5sTVRBeVlqYzFaREkyTmpjMU5qV0RCVDlqYjNKbE9qXFxcbnB6YkdsalpUbzZhVzVrWlhnNk9uTnNhV05sWDJWdVpGOXBibVJsZUY5c1pXNWZabUZwYkRvNmFETTFNMk5sTW1VNU16WXlOemN4WlRpRVxcXG5CVDFqYjNKbE9qcHpiR2xqWlRvNmFXNWtaWGc2T25Oc2FXTmxYMmx1WkdWNFgyOXlaR1Z5WDJaaGFXdzZPbWcyWlRKbE5HRTFaalpoTW1cXFxuUmlZVEkzaFFWT1kyOXlaVG82YzJ4cFkyVTZPanhwYlhCc0lGdFVYVDQ2T21OdmNIbGZabkp2YlY5emJHbGpaVG82YkdWdVgyMXBjMjFoXFxcbmRHTm9YMlpoYVd3Nk9tZzVOalUzTm1Rek5qTXlZekUyT1dKaGhnVm9QR052Y21VNk9tbDBaWEk2T21Ga1lYQjBaWEp6T2pwdFlYQTZPa1xcXG4xaGNEeEpMRVkrSUdGeklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6bzZhWFJsY21GMGIzSTZPa2wwWlhKaGRHOXlQam82Wm05c1pEbzZcXFxuYURRMU16Y3lNRE0xWTJZelpEUmpPR1NIQlRacGJtUmxlRzFoY0RvNmJXRndPanBKYm1SbGVFMWhjRHhMTEZZc1V6NDZPbWRsZERvNmFHXFxcbkU1WVRNMU9HRTROak13TW1ReVptYUlCVHc4VkNCaGN5QmhiR3h2WXpvNmMzUnlhVzVuT2pwVWIxTjBjbWx1Wno0Nk9uUnZYM04wY21sdVxcXG5aem82YURSaE5UTTJabUZqT0RNeFpqZGxNVGlKQlROaGJHeHZZem82YzNSeWFXNW5PanBUZEhKcGJtYzZPbVp5YjIxZmRYUm1PRG82YUdcXFxuVTBOV1U0WkdFeU1UVmlNVFEzTURTS0JWTThZMjl5WlRvNmFHRnphRG82YzJsd09qcFRhWEF4TTFKdmRXNWtjeUJoY3lCamIzSmxPanBvXFxcbllYTm9PanB6YVhBNk9sTnBjRDQ2T21OZmNtOTFibVJ6T2pwb01HUTFOVGRoT1dOaE1EQXpaR1EyWVlzRlh6eHpaWEprWlY5cWMyOXVPalxcXG5welpYSTZPbEJ5WlhSMGVVWnZjbTFoZEhSbGNpQmhjeUJ6WlhKa1pWOXFjMjl1T2pwelpYSTZPa1p2Y20xaGRIUmxjajQ2T21WdVpGOXZcXFxuWW1wbFkzUTZPbWc1TURsbU16QXhaV0l4TWpSbE56TTNqQVUyYVc1a1pYaHRZWEE2T20xaGNEbzZTVzVrWlhoTllYQThTeXhXTEZNK09qXFxcbnBuWlhRNk9tZ3pZbVkxWW1FeFpHUmtOVEJpWmpkbGpRVTJhVzVrWlhodFlYQTZPbTFoY0RvNlNXNWtaWGhOWVhBOFN5eFdMRk0rT2pwblxcXG5aWFE2T21nMk56UmlPVEZtTVdWaE5XTmtOemxtamdVMmFHRnphR0p5YjNkdU9qcHlZWGM2T2xKaGQxUmhZbXhsUEZRc1FUNDZPbVpwYm1cXFxuUTZPbWd5TmpnM05qY3dNRGc1WXpneFpHWTJqd1ZUUEdOdmNtVTZPbWhoYzJnNk9uTnBjRG82VTJsd01UTlNiM1Z1WkhNZ1lYTWdZMjl5XFxcblpUbzZhR0Z6YURvNmMybHdPanBUYVhBK09qcGpYM0p2ZFc1a2N6bzZhREJrTlRVM1lUbGpZVEF3TTJSa05tR1FCVzQ4WTI5eVpUbzZhWFxcXG5SbGNqbzZZV1JoY0hSbGNuTTZPbVpwYkhSbGNqbzZSbWxzZEdWeVBFa3NVRDRnWVhNZ1kyOXlaVG82YVhSbGNqbzZkSEpoYVhSek9qcHBcXFxuZEdWeVlYUnZjam82U1hSbGNtRjBiM0krT2pwdVpYaDBPanBvTVdVNVkyRmxNRGxrT1RNeFpqbGlaWkVGS0dsa2JtRTZPbkIxYm5samIyXFxcblJsT2pwaFpHRndkRG82YUdSa1pqSm1aREZtWVdJME56QTJaVGVTQlR4a2JHMWhiR3h2WXpvNlpHeHRZV3hzYjJNNk9rUnNiV0ZzYkc5alxcXG5QRUUrT2pwcGJtbDBYM1J2Y0RvNmFEZ3dZemRsTlRneFpEWXdNelJsTXplVEJVbzhZMjl5WlRvNmIzQnpPanB5WVc1blpUbzZVbUZ1WjJcXFxuVThTV1I0UGlCaGN5QmpiM0psT2pwbWJYUTZPa1JsWW5WblBqbzZabTEwT2pwb1lUVTBaamxrTlRaaE4yTm1NakZpTVpRRk9qeDFjbXc2XFxcbk9sVnliQ0JoY3lCamIzSmxPanBqYkc5dVpUbzZRMnh2Ym1VK09qcGpiRzl1WlRvNmFHTmpPR0k1WXpnNU1HRTNZakZtWm1HVkJTeGpiM1xcXG5KbE9qcDBhVzFsT2pwRWRYSmhkR2x2YmpvNmJtVjNPanBvTVRnd05XRTRPRFE1WVdJNFlXVTNPWllGVkhOMFpEbzZjM2x6T2pwamIyMXRcXFxuYjI0Nk9uUm9jbVZoWkY5c2IyTmhiRG82YkdGNmVUbzZUR0Y2ZVV0bGVVbHVibVZ5UEZRK09qcHBibWwwYVdGc2FYcGxPanBvT0dJMFl6XFxcbkEzTldJd1pqZ3lOekZsTTVjRlBYTmxjbVJsWDJwemIyNDZPbVJsT2pwUVlYSnpaWEpPZFcxaVpYSTZPbWx1ZG1Gc2FXUmZkSGx3WlRvNlxcXG5hRFEwWXpoaU1XRXpaRFZpTXprNVlqS1lCUzlqYjNKbE9qcHpkSEk2T2p4cGJYQnNJSE4wY2o0Nk9uTndiR2wwT2pwb05UWXpOV0UwTVRcXFxua3lORFJqWkRoak1aa0ZMMk52Y21VNk9uTjBjam82UEdsdGNHd2djM1J5UGpvNmMzQnNhWFE2T21nME5XUXlOemxqWWpSak5EZzJaRGMwXFxcbm1nVXVhV1J1WVRvNmRYUnpORFk2T21selgySnBaR2xmWkc5dFlXbHVPanBvTTJSaFkyWXlOekpoT0dWaU1XWm1OcHNGWkR4d1pYSmpaV1xcXG41MFgyVnVZMjlrYVc1bk9qcFFaWEpqWlc1MFJHVmpiMlJsSUdGeklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6bzZhWFJsY21GMGIzSTZcXFxuT2tsMFpYSmhkRzl5UGpvNmJtVjRkRG82YURReFpHRTVZbVkyTVdZd01XVXdNamFjQlR3OFZDQmhjeUJoYkd4dll6bzZjM1J5YVc1bk9qXFxcbnBVYjFOMGNtbHVaejQ2T25SdlgzTjBjbWx1WnpvNmFETTFabVptTkdNMVl6ZGpaakUyWldhZEJVNWtaVzV2WDJOaFkyaGxYMlJwY2pvNlxcXG5iRzlqWVd3Nk9reHZZMkZzUTJGamFHVlRkV0pRWVhSb09qcGhjMTl3WVhSb1gyWnliMjFmY205dmREbzZhR1ZoWWpBd00yUmpOek0wWkRcXFxuUTNNRGllQlhJOFpHVnViMTlqWVdOb1pWOWthWEk2T25kaGMyMDZPa2RzYjJKaGJFaDBkSEJEWVdOb1pTQmhjeUIzWVhOdFgySnBibVJuXFxcblpXNDZPbU52Ym5abGNuUTZPblJ5WVdsMGN6bzZSbkp2YlZkaGMyMUJZbWsrT2pwbWNtOXRYMkZpYVRvNmFEUmxNemd6WkRSbE9XWXpPRFxcXG5Oak5ER2ZCVWM4WVd4c2IyTTZPbk4wY21sdVp6bzZVM1J5YVc1bklHRnpJR052Y21VNk9tTnNiMjVsT2pwRGJHOXVaVDQ2T21Oc2IyNWxcXFxuT2pwb05EY3dNbUZoWWpJNFpXSm1ORGRpWTZBRkwyRnNiRzlqT2pwMlpXTTZPbFpsWXp4VUxFRStPanB5WlcxdmRtVTZPbWhrTVRJNVlXXFxcblE1WlRZM05UbGxZV1Uzb1FWSGFXNWtaWGh0WVhBNk9tMWhjRG82WTI5eVpUbzZTVzVrWlhoTllYQkRiM0psUEVzc1ZqNDZPbWRsZEY5cFxcXG5ibVJsZUY5dlpqbzZhR015T1RjMFpHVmlPREEzTldVMk5ES2lCVXBwYm1SbGVHMWhjRG82YldGd09qcGpiM0psT2pwSmJtUmxlRTFoY0VcXFxuTnZjbVU4U3l4V1BqbzZjbVZ6WlhKMlpWOWxiblJ5YVdWek9qcG9OalV4TkdJek5UTm1PR1JqTjJZeE1hTUZTbWx1WkdWNGJXRndPanB0XFxcbllYQTZPbU52Y21VNk9rbHVaR1Y0VFdGd1EyOXlaVHhMTEZZK09qcHlaWE5sY25abFgyVnVkSEpwWlhNNk9taGpZMkZsWmpNelpUQmhZV1xcXG5RNU5UZzNwQVZLYVc1a1pYaHRZWEE2T20xaGNEbzZZMjl5WlRvNlNXNWtaWGhOWVhCRGIzSmxQRXNzVmo0Nk9uSmxjMlZ5ZG1WZlpXNTBcXFxuY21sbGN6bzZhRGsxTVRNNVptVmtObU14WTJFM01UQ2xCVFpvWVhOb1luSnZkMjQ2T25KaGR6bzZVbUYzVkdGaWJHVThWQ3hCUGpvNlptXFxcbmx1WkRvNmFEUmlNakl6TkRkaU1HWm1NakZsTkRTbUJUaG9ZWE5vWW5KdmQyNDZPbkpoZHpvNlVtRjNWR0ZpYkdVOFZDeEJQam82YVc1elxcXG5aWEowT2pwb1pUWTRORGMwTXpNMk9UUmlZVGczWmFjRlBHTnZjbVU2T25OMGNqbzZQR2x0Y0d3Z2MzUnlQam82ZEhKcGJWOXpkR0Z5ZEZcXFxuOXRZWFJqYUdWek9qcG9NMlpsTmpJNU1XUXlZbVEwTUdZeU1xZ0ZaanhqYjNKbE9qcHBkR1Z5T2pwaFpHRndkR1Z5Y3pvNmNtVjJPanBTXFxcblpYWThTVDRnWVhNZ1kyOXlaVG82YVhSbGNqbzZkSEpoYVhSek9qcHBkR1Z5WVhSdmNqbzZTWFJsY21GMGIzSStPanB1WlhoME9qcG9PR1xcXG5Rd1pqVTJZemhpWWpObU5qUTVZcWtGT2p3bWJYVjBJRmNnWVhNZ1kyOXlaVG82Wm0xME9qcFhjbWwwWlQ0Nk9uZHlhWFJsWDJadGREbzZcXFxuYURreVkyVXdZakZrWldFek5tVmtaVEdxQlRvOEptMTFkQ0JYSUdGeklHTnZjbVU2T21adGREbzZWM0pwZEdVK09qcDNjbWwwWlY5bWJYXFxcblE2T21nMU5EWTBPVGszTTJGbVptSXpaalZscXdVNlBDWnRkWFFnVnlCaGN5QmpiM0psT2pwbWJYUTZPbGR5YVhSbFBqbzZkM0pwZEdWZlxcXG5abTEwT2pwb09ERmhaREF6T1RRek9EWXhZV1k0WTZ3Rk9qd21iWFYwSUZjZ1lYTWdZMjl5WlRvNlptMTBPanBYY21sMFpUNDZPbmR5YVhcXFxuUmxYMlp0ZERvNmFHVTVNbVJqWXpRM1pEazBZVFEwTVdhdEJUSmpiM0psT2pwbWJYUTZPa1p2Y20xaGRIUmxjam82ZDNKcGRHVmZabTEwXFxcbk9qcG9OR1ZpWlRRNE56SXdaV0kzTnpNMk5LNEZhenhvWVhOb1luSnZkMjQ2T20xaGNEbzZTR0Z6YUUxaGNEeExMRllzVXl4QlBpQmhjeVxcXG5CamIzSmxPanBwZEdWeU9qcDBjbUZwZEhNNk9tTnZiR3hsWTNRNk9rVjRkR1Z1WkR3b1N5eFdLVDQrT2pwbGVIUmxibVE2T21obE5HWmxcXFxuTjJZeU9UZG1aVEppT1RrMnJ3VThjMlZ5WkdVNk9uTmxjam82VTJWeWFXRnNhWHBsVFdGd09qcHpaWEpwWVd4cGVtVmZaVzUwY25rNk9tXFxcbmhoTlRsaE5XRXdNV0ZtTkRkbE1UTmhzQVU4YzJWeVpHVTZPbk5sY2pvNlUyVnlhV0ZzYVhwbFRXRndPanB6WlhKcFlXeHBlbVZmWlc1MFxcXG5jbms2T21neU1qTTFZelZoT1dKaVkyUmxZVGc0c1FWZVBITmxjbVJsWDJwemIyNDZPbk5sY2pvNlEyOXRjRzkxYm1ROFZ5eEdQaUJoY3lcXFxuQnpaWEprWlRvNmMyVnlPanBUWlhKcFlXeHBlbVZOWVhBK09qcHpaWEpwWVd4cGVtVmZhMlY1T2pwb09HWTNNMkUxTTJFNE0yTXpPRE0wXFxcbk9MSUZQSE5sY21SbE9qcHpaWEk2T2xObGNtbGhiR2w2WlUxaGNEbzZjMlZ5YVdGc2FYcGxYMlZ1ZEhKNU9qcG9OREJrTlRVeE9XTXhOVFxcXG5jNFl6SXdZYk1GUEhObGNtUmxPanB6WlhJNk9sTmxjbWxoYkdsNlpVMWhjRG82YzJWeWFXRnNhWHBsWDJWdWRISjVPanBvT1RNd09USmlcXFxuTURSa1lUZ3lNekF3T2JRRlhqeHpaWEprWlY5cWMyOXVPanB6WlhJNk9rTnZiWEJ2ZFc1a1BGY3NSajRnWVhNZ2MyVnlaR1U2T25ObGNqXFxcbm82VTJWeWFXRnNhWHBsVFdGd1BqbzZjMlZ5YVdGc2FYcGxYMnRsZVRvNmFHTmlOR1JpTVdKbE9XWTJNMlk0TmphMUJUeHpaWEprWlRvNlxcXG5jMlZ5T2pwVFpYSnBZV3hwZW1WTllYQTZPbk5sY21saGJHbDZaVjlsYm5SeWVUbzZhRGszWWpRMVpEVXdOVFJsT1dVd01EZTJCVHh6WlhcXFxuSmtaVG82YzJWeU9qcFRaWEpwWVd4cGVtVk5ZWEE2T25ObGNtbGhiR2w2WlY5bGJuUnllVG82YUdFM1ptTTFaVGxrTkRKbE1EQmlObUczXFxcbkJUQnpaWEprWlY5cWMyOXVPanB5WldGa09qcHVaWGgwWDI5eVgyVnZaam82YUdSa1lqYzBPRE00WkdVMlpUUTNOamU0QlRGamIzSmxPalxcXG5wd1lXNXBZMnRwYm1jNk9tRnpjMlZ5ZEY5bVlXbHNaV1E2T21nM1lXRTBZV05tWlRabU5URXpaVEkydVFVeFkyOXlaVG82Y0dGdWFXTnJcXFxuYVc1bk9qcGhjM05sY25SZlptRnBiR1ZrT2pwb056aGpaV1F3TVdSa05EQTFOV0U1TUxvRk1XTnZjbVU2T25CaGJtbGphMmx1WnpvNllYXFxcbk56WlhKMFgyWmhhV3hsWkRvNmFEUXpNV0ptTlRNNU1HVmlaR0ZpWVRHN0Jaa0JQSE5sY21SbE9qcGtaVG82YVcxd2JITTZPanhwYlhCc1xcXG5JSE5sY21SbE9qcGtaVG82UkdWelpYSnBZV3hwZW1VZ1ptOXlJSE4wWkRvNmRHbHRaVG82VTNsemRHVnRWR2x0WlQ0Nk9tUmxjMlZ5YVdcXFxuRnNhWHBsT2pwR2FXVnNaQ0JoY3lCelpYSmtaVG82WkdVNk9rUmxjMlZ5YVdGc2FYcGxQam82WkdWelpYSnBZV3hwZW1VNk9taG1Zems0XFxcbk1tWmtPREUwT0dJeU1XVXl2QVZwYzJWeVpHVTZPbVJsT2pwcGJYQnNjem82UEdsdGNHd2djMlZ5WkdVNk9tUmxPanBFWlhObGNtbGhiR1xcXG5sNlpTQm1iM0lnWVd4c2IyTTZPbk4wY21sdVp6bzZVM1J5YVc1blBqbzZaR1Z6WlhKcFlXeHBlbVU2T21oa01XUmxZamc0T1dZd05qSTFcXFxuT0RobXZRVTJhR0Z6YUdKeWIzZHVPanB5WVhjNk9sSmhkMVJoWW14bFBGUXNRVDQ2T21acGJtUTZPbWcyWVdWaE5EWXlNR0V6TVRZNVkyXFxcblUzdmdVNGFHRnphR0p5YjNkdU9qcHlZWGM2T2xKaGQxUmhZbXhsUEZRc1FUNDZPbWx1YzJWeWREbzZhRGRoTm1NeVpUVTNabVl5WkRBd1xcXG5NMmEvQldselpYSmtaVG82WkdVNk9tbHRjR3h6T2pvOGFXMXdiQ0J6WlhKa1pUbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbElHWnZjaUJoYkdcXFxueHZZem82YzNSeWFXNW5PanBUZEhKcGJtYytPanBrWlhObGNtbGhiR2w2WlRvNmFEVTRORGd3TURnd1lqUTRORGszTUdQQUJUZHpkR1E2XFxcbk9tRnNiRzlqT2pwa1pXWmhkV3gwWDJGc2JHOWpYMlZ5Y205eVgyaHZiMnM2T21oa056a3pPV1l4TURZeU0yWmpNRGRrd1FWRWMyVnlaR1xcXG5VNk9tUmxPanAyWVd4MVpUbzZUV0Z3UkdWelpYSnBZV3hwZW1WeVBFa3NSVDQ2T201bGVIUmZjR0ZwY2pvNmFETTVNelkxT1RCbE1XVTVcXFxuTWpRNFpUakNCUzVqYjNKbE9qcG1iWFE2T2xkeWFYUmxPanAzY21sMFpWOW1iWFE2T21obE5UY3pPVFZpTkdaaFlqSmhZalJqd3dVdVkyXFxcbjl5WlRvNlptMTBPanBYY21sMFpUbzZkM0pwZEdWZlptMTBPanBvTVRoak9HTTROalJtWXpFMlltVTFOOFFGTldSbGJtOWZiV1ZrYVdGZlxcXG5kSGx3WlRvNmMzQmxZMmxtYVdWeVgzUnZYM0JoZEdnNk9taGtNVFE1WVRaa04yUmtOekE1TXpVenhRVTZZMjl5WlRvNmMzUnlPam84YVdcXFxuMXdiQ0J6ZEhJK09qcDBjbWx0WDJWdVpGOXRZWFJqYUdWek9qcG9abVZqWW1KbFpXRXpaamhpWXpabU44WUZMbVJoZEdGZmRYSnNPanB0XFxcbmFXMWxPanAyWVd4cFpGOTJZV3gxWlRvNmFEVmlOamhsTlRKbE9UVTBNR0ZtWkdMSEJTNWpiM0psT2pwbWJYUTZPbGR5YVhSbE9qcDNjbVxcXG5sMFpWOW1iWFE2T21nM05qRmxNVGt3TlRJMFlqazBNVGhoeUFVL1kyOXlaVG82YzJ4cFkyVTZPbk52Y25RNk9tbHVjMlZ5ZEdsdmJsOXpcXFxuYjNKMFgzTm9hV1owWDJ4bFpuUTZPbWd4WVRsbE4yUmpZemcyTldSaE9UQTV5UVV1WTI5eVpUbzZabTEwT2pwWGNtbDBaVG82ZDNKcGRHXFxcblZmWm0xME9qcG9OVGxpWlRVNVlUazJZVFEyTXpBeVljb0ZRanhoYkd4dll6bzZkbVZqT2pwV1pXTThWQ3hCUGlCaGN5QmpiM0psT2pwbVxcXG5iWFE2T2tSbFluVm5Qam82Wm0xME9qcG9aakl6T0dKbU1qVm1aR0ZqWWpCalljc0ZMbU52Y21VNk9tWnRkRG82VjNKcGRHVTZPbmR5YVhcXFxuUmxYMlp0ZERvNmFEaGhaR0ZoWXpWbVlUQTBOVEZrTWpmTUJYQThZV3hzYjJNNk9uWmxZem82Vm1WalBGUStJR0Z6SUdGc2JHOWpPanAyXFxcblpXTTZPbk53WldOZlpuSnZiVjlwZEdWeVgyNWxjM1JsWkRvNlUzQmxZMFp5YjIxSmRHVnlUbVZ6ZEdWa1BGUXNTVDQrT2pwbWNtOXRYMlxcXG5sMFpYSTZPbWczTlRCa1lUTm1ZV0kxTVdSbE9HSmt6UVV5YzJWeVpHVTZPbVJsT2pwRmNuSnZjam82YldsemMybHVaMTltYVdWc1pEbzZcXFxuYUdJMllqQXlOMlptTURnNE5UUXdaRGZPQlRSelpYSmtaVG82WkdVNk9rVnljbTl5T2pwa2RYQnNhV05oZEdWZlptbGxiR1E2T21oaE1XXFxcblV4TXpZek9XSmlNekEzTm1WaXp3VWpkWEpzT2pwVmNtdzZPbk5qYUdWdFpUbzZhREkxTnpJMk9Ea3pOVFEwTkdOaFpEVFFCVDVqYjNKbFxcXG5PanB2Y0hScGIyNDZPazl3ZEdsdmJqeFVQam82WjJWMFgyOXlYMmx1YzJWeWRGOTNhWFJvT2pwb1lUUmtaamsxWkRjNU16a3dZamd5TjlcXFxuRUZSenhqYUdGeUlHRnpJR052Y21VNk9uTjBjam82Y0dGMGRHVnliam82VUdGMGRHVnliajQ2T21sdWRHOWZjMlZoY21Ob1pYSTZPbWczXFxcbk0yVTJOekprWVdZMVptSm1ORFU1MGdWMVBHTnZjbVU2T25OMGNqbzZhWFJsY2pvNlEyaGhja2x1WkdsalpYTWdZWE1nWTI5eVpUbzZhWFxcXG5SbGNqbzZkSEpoYVhSek9qcGtiM1ZpYkdWZlpXNWtaV1E2T2tSdmRXSnNaVVZ1WkdWa1NYUmxjbUYwYjNJK09qcHVaWGgwWDJKaFkyczZcXFxuT21oa00yUXlaRGMxTlRCbVlUVXlPRFZrMHdWSFBHTm9ZWElnWVhNZ1kyOXlaVG82YzNSeU9qcHdZWFIwWlhKdU9qcFFZWFIwWlhKdVBqXFxcbm82YVc1MGIxOXpaV0Z5WTJobGNqbzZhRGN6WlRZM01tUmhaalZtWW1ZME5UblVCU3gxY213Nk9uQmhjbk5sY2pvNlpHVm1ZWFZzZEY5d1xcXG5iM0owT2pwb016STNNalUwTVdVNFkyVm1NekUxTWRVRlJ6eGphR0Z5SUdGeklHTnZjbVU2T25OMGNqbzZjR0YwZEdWeWJqbzZVR0YwZEdcXFxuVnliajQ2T21sdWRHOWZjMlZoY21Ob1pYSTZPbWczTTJVMk56SmtZV1kxWm1KbU5EVTUxZ1V2YzNSa09qcHdZWFJvT2pwUVlYUm9PanAwXFxcbmIxOXdZWFJvWDJKMVpqbzZhRGczWVdRelpHRmtNVEZpTTJFeE16YlhCVHB6ZEdRNk9uTjVjem82ZDJGemJUbzZiM05mYzNSeU9qcFRiR1xcXG5salpUbzZkRzlmYjNkdVpXUTZPbWd6TTJFMk5ETTJOalprWVdJd1pEQmoyQVUvYVc1a1pYaHRZWEE2T20xaGNEbzZTVzVrWlhoTllYQThcXFxuU3l4V0xGTStPanBuWlhSZmFXNWtaWGhmYjJZNk9taG1aR0ZtTjJFNFlqYzJZekE0TXpFNTJRVWpkWEpzT2pwVmNtdzZPbk5qYUdWdFpUXFxcbm82YURJMU56STJPRGt6TlRRME5HTmhaRFRhQlVROGRYSnNPanBWY213Z1lYTWdjMlZ5WkdVNk9tUmxPanBFWlhObGNtbGhiR2w2WlQ0NlxcXG5PbVJsYzJWeWFXRnNhWHBsT2pwb05qQXpPV0poWlRZMVpqRm1NV0kxWWRzRlBITmxjbVJsT2pwelpYSTZPbE5sY21saGJHbDZaVTFoY0RcXFxubzZjMlZ5YVdGc2FYcGxYMlZ1ZEhKNU9qcG9aVGMzTURNNE56STBZalUzWXpabU5kd0ZZRHh6WlhKa1pWOXFjMjl1T2pwelpYSTZPa052XFxcbmJYQnZkVzVrUEZjc1JqNGdZWE1nYzJWeVpHVTZPbk5sY2pvNlUyVnlhV0ZzYVhwbFRXRndQam82YzJWeWFXRnNhWHBsWDNaaGJIVmxPalxcXG5wb1ltWXdNV1ExWXpJMk9USmhOelpqTWQwRk9HaGhjMmhpY205M2JqbzZjbUYzT2pwU1lYZFVZV0pzWlR4VUxFRStPanBwYm5ObGNuUTZcXFxuT21nNFlXVTRZMlEwWlROak4yTm1ZMkpoM2dWa1BHUmxibTlmWTJGamFHVmZaR2x5T2pwbmJHOWlZV3c2T2xWeWJGUnZSbWxzWlc1aGJXXFxcblZEYjI1MlpYSnphVzl1UlhKeWIzSWdZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPanBvTjJNeU1UVXhaRGxpTURNelxcXG5Nekk1T2Q4Rk9qd21iWFYwSUZjZ1lYTWdZMjl5WlRvNlptMTBPanBYY21sMFpUNDZPbmR5YVhSbFgyWnRkRG82YURVeU5HSmpOV1JoWmpcXFxuTmpZVFpqTWpQZ0JUbzhKbTExZENCWElHRnpJR052Y21VNk9tWnRkRG82VjNKcGRHVStPanAzY21sMFpWOW1iWFE2T21nME5qazVOamRqXFxcbk9HTXdOVFZoTWpneTRRVTljR0Z5YTJsdVoxOXNiM1JmWTI5eVpUbzZjR0Z5YTJsdVoxOXNiM1E2T214dlkydGZZblZqYTJWME9qcG9PVFxcXG5FMFl6QTFOekEzWm1KbE9XTTRNK0lGUWp4MWNtdzZPbWh2YzNRNk9raHZjM1E4VXo0Z1lYTWdZMjl5WlRvNlptMTBPanBFYVhOd2JHRjVcXFxuUGpvNlptMTBPanBvTnpneE9XRXpaV1F5WVdWa1ptVTBNK01GT2p3bWJYVjBJRmNnWVhNZ1kyOXlaVG82Wm0xME9qcFhjbWwwWlQ0Nk9uXFxcbmR5YVhSbFgyWnRkRG82YURFME1HVXpaakE1Tm1WaE5HTmtObUhrQlRCMWNtdzZPbkJoY25ObGNqbzZVMk5vWlcxbFZIbHdaVG82Wm5KdlxcXG5iVG82YURnNE56UmhORGcyTm1FNU5UQTFNam5sQlhvOFkyOXlaVG82YzJ4cFkyVTZPbk52Y25RNk9tMWxjbWRsWDNOdmNuUTZPbEoxYmxcXFxuWmxZenhTZFc1QmJHeHZZMFlzVW5WdVJHVmhiR3h2WTBZK0lHRnpJR052Y21VNk9tOXdjem82YVc1a1pYZzZPa2x1WkdWNFBIVnphWHBsXFxcblBqNDZPbWx1WkdWNE9qcG9NR0pqT1dVM1pHSTBOV0V5WkRVNVpPWUZYenhoYkd4dll6bzZjM1J5YVc1bk9qcFRkSEpwYm1jZ1lYTWdZMlxcXG45eVpUbzZhWFJsY2pvNmRISmhhWFJ6T2pwamIyeHNaV04wT2pwRmVIUmxibVE4Sm5OMGNqNCtPanBsZUhSbGJtUTZPbWhsTURGallqUTVcXFxuWm1Fell6ZG1Nak5oNXdWUFBIQmxjbU5sYm5SZlpXNWpiMlJwYm1jNk9sQmxjbU5sYm5SRmJtTnZaR1VnWVhNZ1kyOXlaVG82Wm0xME9qXFxcbnBFYVhOd2JHRjVQam82Wm0xME9qcG9aVGsxTkdZM1pURmlNek13TnpObU9lZ0ZPandtYlhWMElGY2dZWE1nWTI5eVpUbzZabTEwT2pwWFxcXG5jbWwwWlQ0Nk9uZHlhWFJsWDJadGREbzZhRFJsTVdRMFlUQTNOalU0WlRNMk9UUHBCVEZoYkd4dll6bzZjM2x1WXpvNlFYSmpQRlErT2pcXFxucGtjbTl3WDNOc2IzYzZPbWhtWlRGaU5EUmhNR1kxTldSa1ptRXc2Z1ZXWTI5eVpUbzZjM1J5T2pwMGNtRnBkSE02T2p4cGJYQnNJR052XFxcbmNtVTZPbTl3Y3pvNmFXNWtaWGc2T2tsdVpHVjRQRWsrSUdadmNpQnpkSEkrT2pwcGJtUmxlRG82YURnM01XVTBPVE0yTm1Zd05qTm1ZMlxcXG5QckJZY0JZV3hzYjJNNk9uWmxZem82YVc1ZmNHeGhZMlZmWTI5c2JHVmpkRG82UEdsdGNHd2dZV3hzYjJNNk9uWmxZem82YzNCbFkxOW1cXFxuY205dFgybDBaWEk2T2xOd1pXTkdjbTl0U1hSbGNqeFVMRWsrSUdadmNpQmhiR3h2WXpvNmRtVmpPanBXWldNOFZENCtPanBtY205dFgyXFxcbmwwWlhJNk9tZ3pPREF6WXpjNVpXTmpabVl6T0RFMzdBVm1QSE5sY21SbFgzZGhjMjFmWW1sdVpHZGxiam82YzJWeU9qcE5ZWEJUWlhKcFxcXG5ZV3hwZW1WeUlHRnpJSE5sY21SbE9qcHpaWEk2T2xObGNtbGhiR2w2WlUxaGNENDZPbk5sY21saGJHbDZaVjlyWlhrNk9tZ3dOVEJqT1RcXFxuWXhPVE5rT0RCbU9EQms3UVUrYVc1a1pYaHRZWEE2T20xaGNEbzZTVzVrWlhoTllYQThTeXhXTEZNK09qcHpkMkZ3WDNKbGJXOTJaVG82XFxcbmFHSmlZVFZpWkRFek9XSmpNRFkzTXpmdUJUOXBibVJsZUcxaGNEbzZiV0Z3T2pwSmJtUmxlRTFoY0R4TExGWXNVejQ2T21kbGRGOXBibVxcXG5SbGVGOXZaam82YURRMk5tVTRNakF3T1RWa04yTXhOV1B2QlQ5cGJtUmxlRzFoY0RvNmJXRndPanBKYm1SbGVFMWhjRHhMTEZZc1V6NDZcXFxuT21kbGRGOXBibVJsZUY5dlpqbzZhRGRoTWpJek56TXlZV1V5TVdVMFlURHdCVDlwYm1SbGVHMWhjRG82YldGd09qcEpibVJsZUUxaGNEXFxcbnhMTEZZc1V6NDZPbWRsZEY5cGJtUmxlRjl2WmpvNmFHRmxOV0l4Tm1OaVlqa3hPVFV5TXpQeEJUeGtaVzV2WDJOaFkyaGxYMlJwY2pvNlxcXG5kMkZ6YlRvNlRHOWpZV3hJZEhSd1EyRmphR1U2T201bGR6bzZhR1EyTWpabFlqVTRNelpsTkdFNE9UTHlCV3c4WVd4c2IyTTZPbk4wY21cXFxubHVaem82VTNSeWFXNW5JR0Z6SUdOdmNtVTZPbTl3Y3pvNmFXNWtaWGc2T2tsdVpHVjRQR052Y21VNk9tOXdjem82Y21GdVoyVTZPbEpoXFxcbmJtZGxQSFZ6YVhwbFBqNCtPanBwYm1SbGVEbzZhRE0xWTJVd01tSXdOR1EyTUdOaE16UHpCWDVqYjNKbE9qcHpkSEk2T25SeVlXbDBjelxcXG5vNlBHbHRjR3dnWTI5eVpUbzZjMnhwWTJVNk9tbHVaR1Y0T2pwVGJHbGpaVWx1WkdWNFBITjBjajRnWm05eUlHTnZjbVU2T205d2N6bzZcXFxuY21GdVoyVTZPbEpoYm1kbFJuSnZiVHgxYzJsNlpUNCtPanBwYm1SbGVEbzZhRFkwTnpCaU1EQm1NamhoTVdFd09URDBCVU56WlhKa1pWXFxcbjlxYzI5dU9qcHlaV0ZrT2pwd1lYSnpaVjlsYzJOaGNHVTZPbVZ1WTI5a1pWOXpkWEp5YjJkaGRHVTZPbWcyWVRsa09EWmhOVGxoWmpSalxcXG5OR1U1OVFWV1kyOXlaVG82YzNSeU9qcDBjbUZwZEhNNk9qeHBiWEJzSUdOdmNtVTZPbTl3Y3pvNmFXNWtaWGc2T2tsdVpHVjRQRWsrSUdcXFxuWnZjaUJ6ZEhJK09qcHBibVJsZURvNmFHVmhZV001TlRJMll6Wm1aVEUwTmpmMkJUQnlhVzVuT2pwa2FXZGxjM1E2T2tOdmJuUmxlSFE2XFxcbk9tWnBibWx6YURvNmFHRm1PVGhrWTJFelpUQmpZek0wWm1UM0JXdzhZV3hzYjJNNk9uTjBjbWx1WnpvNlUzUnlhVzVuSUdGeklHTnZjbVxcXG5VNk9tOXdjem82YVc1a1pYZzZPa2x1WkdWNFBHTnZjbVU2T205d2N6bzZjbUZ1WjJVNk9sSmhibWRsUEhWemFYcGxQajQrT2pwcGJtUmxcXFxuZURvNmFETTFZMlV3TW1Jd05HUTJNR05oTXpQNEJUdGhiR3h2WXpvNmNtRjNYM1psWXpvNlVtRjNWbVZqUEZRc1FUNDZPbUZzYkc5allYXFxcblJsWDJsdU9qcG9OelExTUdKbU9UVTRObU0yWkRFM04va0ZmbU52Y21VNk9uTjBjam82ZEhKaGFYUnpPam84YVcxd2JDQmpiM0psT2pwelxcXG5iR2xqWlRvNmFXNWtaWGc2T2xOc2FXTmxTVzVrWlhnOGMzUnlQaUJtYjNJZ1kyOXlaVG82YjNCek9qcHlZVzVuWlRvNlVtRnVaMlZHY21cXFxuOXRQSFZ6YVhwbFBqNDZPbWx1WkdWNE9qcG9OalEzTUdJd01HWXlPR0V4WVRBNU1Qb0ZhRHhqYjNKbE9qcHBkR1Z5T2pwaFpHRndkR1Z5XFxcbmN6bzZiV0Z3T2pwTllYQThTU3hHUGlCaGN5QmpiM0psT2pwcGRHVnlPanAwY21GcGRITTZPbWwwWlhKaGRHOXlPanBKZEdWeVlYUnZjalxcXG40Nk9tWnZiR1E2T21oallqZGlZMkZpWVRKbE1XVTNObVEyK3dWK1kyOXlaVG82YzNSeU9qcDBjbUZwZEhNNk9qeHBiWEJzSUdOdmNtVTZcXFxuT25Oc2FXTmxPanBwYm1SbGVEbzZVMnhwWTJWSmJtUmxlRHh6ZEhJK0lHWnZjaUJqYjNKbE9qcHZjSE02T25KaGJtZGxPanBTWVc1blpVXFxcblp5YjIwOGRYTnBlbVUrUGpvNmFXNWtaWGc2T21nMk5EY3dZakF3WmpJNFlURmhNRGt3L0FVdWFXUnVZVG82ZFhSek5EWTZPa1Z5Y205eVxcXG5jem82YVhOZlpYSnlPanBvTkRZMlpHWTVaR1U1TnpBMll6ZGlNZjBGWXp4emRHUTZPbkJoYm1samEybHVaem82WW1WbmFXNWZjR0Z1YVdcXFxuTTZPbEJoYm1salVHRjViRzloWkR4QlBpQmhjeUJqYjNKbE9qcHdZVzVwWXpvNlFtOTRUV1ZWY0Q0Nk9uUmhhMlZmWW05NE9qcG9OV1k0XFxcbk56QXpZVGhoTmprd05UVTVOdjRGUnp4emRHUTZPbWx2T2pwbGNuSnZjam82UlhKeWIzSWdZWE1nWTI5eVpUbzZaWEp5YjNJNk9rVnljbVxcXG45eVBqbzZZMkYxYzJVNk9taGlaalEyTmpRMk4yUXhZMkV4TldJei93VklQSE4wWkRvNmFXODZPbVZ5Y205eU9qcEZjbkp2Y2lCaGN5QmpcXFxuYjNKbE9qcGxjbkp2Y2pvNlJYSnliM0krT2pwemIzVnlZMlU2T21nelpqbGpNV1l5WXpJM1lURmtObU5sZ0FadVBHRnNiRzlqT2pwemRIXFxcbkpwYm1jNk9sTjBjbWx1WnlCaGN5QmpiM0psT2pwdmNITTZPbWx1WkdWNE9qcEpibVJsZUR4amIzSmxPanB2Y0hNNk9uSmhibWRsT2pwU1xcXG5ZVzVuWlZSdlBIVnphWHBsUGo0K09qcHBibVJsZURvNmFEZGpOV1UxTVRnM01EbGhZVEl4T1dXQkJqaHpkR1E2T25Sb2NtVmhaRG82YkdcXFxuOWpZV3c2T2t4dlkyRnNTMlY1UEZRK09qcDNhWFJvT2pwb1lqUXlZalkzTldGalpEZzVNamRoWklJR1NtaGhjMmhpY205M2JqbzZjbUYzXFxcbk9qcHBibTVsY2pvNlVtRjNWR0ZpYkdVOFZDeEJQam82Wm1sdVpEbzZlM3RqYkc5emRYSmxmWDA2T21nek5tVTBaak00TldRM1pqTmxNelxcXG5VMWd3WTNZMjl5WlRvNmIzQjBhVzl1T2pwUGNIUnBiMjQ4VkQ0Nk9tMWhjRjl2Y2w5bGJITmxPanBvTVRnME9EWTFNemxtTjJNNE56TXhcXFxuTjRRR1BXTnZjbVU2T25OMGNqbzZhWFJsY2pvNlUzQnNhWFJKYm5SbGNtNWhiRHhRUGpvNloyVjBYMlZ1WkRvNmFERTROMlZoTVRobFlqXFxcbkZoTkdObFlXV0ZCbTQ4WVd4c2IyTTZPbk4wY21sdVp6bzZVM1J5YVc1bklHRnpJR052Y21VNk9tOXdjem82YVc1a1pYZzZPa2x1WkdWNFxcXG5QR052Y21VNk9tOXdjem82Y21GdVoyVTZPbEpoYm1kbFZHODhkWE5wZW1VK1BqNDZPbWx1WkdWNE9qcG9OMk0xWlRVeE9EY3dPV0ZoTWpcXFxuRTVaWVlHUFdOdmNtVTZPbU5vWVhJNk9tMWxkR2h2WkhNNk9qeHBiWEJzSUdOb1lYSStPanAwYjE5a2FXZHBkRG82YUdZeE1EUTNZVFZqXFxcbllqSm1ZVGMwTlRLSEJsbzhkWEpzT2pwb2IzTjBPanBJYjNOMFNXNTBaWEp1WVd3Z1lYTWdZMjl5WlRvNlkyOXVkbVZ5ZERvNlJuSnZiVFxcXG54MWNtdzZPbWh2YzNRNk9raHZjM1ErUGpvNlpuSnZiVG82YURWbFpUSXdNMkV5TnpVM1pEa3pZemVJQmtnOGRYSnNPanBvYjNOME9qcElcXFxuYjNOMFNXNTBaWEp1WVd3Z1lYTWdZMjl5WlRvNlkyMXdPanBRWVhKMGFXRnNSWEUrT2pwbGNUbzZhR00wTkRkbFkyTTNOelJtTlRBNE1XXFxcbk9KQm1nOFkyOXlaVG82YVhSbGNqbzZZV1JoY0hSbGNuTTZPbTFoY0RvNlRXRndQRWtzUmo0Z1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaFxcXG5hWFJ6T2pwcGRHVnlZWFJ2Y2pvNlNYUmxjbUYwYjNJK09qcG1iMnhrT2pwb056RTNZakV3TURRNVl6QmpaREE0WklvR0xtTnZjbVU2T21cXFxuOXdkR2x2YmpvNlpYaHdaV04wWDJaaGFXeGxaRG82YUROaFpqRXlOalkzWldOa05EZzROMk9MQmtGaGJHeHZZem82Y21GM1gzWmxZem82XFxcblVtRjNWbVZqUEZRc1FUNDZPblJ5ZVY5eVpYTmxjblpsWDJWNFlXTjBPanBvWVRjNE16UTJOREpsWW1ObFlqVTRPSXdHUVdGc2JHOWpPalxcXG5weVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBqbzZkSEo1WDNKbGMyVnlkbVZmWlhoaFkzUTZPbWhsT1dWaE5EVmpZVGRtTlRRelpXRXlcXFxualFaQllXeHNiMk02T25KaGQxOTJaV002T2xKaGQxWmxZenhVTEVFK09qcDBjbmxmY21WelpYSjJaVjlsZUdGamREbzZhRFZtWXpabFl6XFxcbmswT1RZM1pXTTFPREdPQmpob1lYTm9Zbkp2ZDI0Nk9uSmhkem82VW1GM1ZHRmliR1U4VkN4QlBqbzZjbVZ0YjNabE9qcG9aVFE1T1dSbVxcXG5NbU5tTVdVeE1XUTNaWThHY1R4a1pXNXZYMk5oWTJobFgyUnBjam82ZDJGemJUbzZURzlqWVd4SWRIUndRMkZqYUdVZ1lYTWdkMkZ6YlZcXFxuOWlhVzVrWjJWdU9qcGpiMjUyWlhKME9qcDBjbUZwZEhNNk9rWnliMjFYWVhOdFFXSnBQam82Wm5KdmJWOWhZbWs2T21nellUazRObU0wXFxcbk5qQTVaakZoTW1Zd2tBWkxQSE5sY21SbFgycHpiMjQ2T21WeWNtOXlPanBGY25KdmNpQmhjeUJqYjNKbE9qcGxjbkp2Y2pvNlJYSnliM1xcXG5JK09qcHpiM1Z5WTJVNk9tZzRPRFkyTmpSbVpEQTROelZqTURJeGtRWXhZV3hzYjJNNk9uTjVibU02T2tGeVl6eFVQam82WkhKdmNGOXpcXFxuYkc5M09qcG9PR014T1RFeFkyUmxPR1kyTkRWaVk1SUdObU52Y21VNk9uTjBjam82UEdsdGNHd2djM1J5UGpvNmMzUnlhWEJmY0hKbFptXFxcbmw0T2pwb1l6Wm1ZbVl3T0RobE16QTJaamRqWlpNR05tcHpYM041Y3pvNlZXbHVkRGhCY25KaGVUbzZjbUYzWDJOdmNIbGZkRzlmY0hSeVxcXG5PanBvT1RNd1pqYzFZVE14TmpBek4yRTNPWlFHTm1OdmNtVTZPbk4wY2pvNlBHbHRjR3dnYzNSeVBqbzZjM1J5YVhCZmNISmxabWw0T2pcXFxucG9NVEF4TkRjeFpqSTNOMkkwTVRSak1wVUdQendtYzNSeUlHRnpJSFZ5YkRvNmNHRnljMlZ5T2pwUVlYUjBaWEp1UGpvNmMzQnNhWFJmXFxcbmNISmxabWw0T2pwb1pEYzBNbVptTmpWaU1tUmhZVFJrWlpZR0kzVnliRG82VlhKc09qcGtiMjFoYVc0Nk9taGxNV1l3WVdVMU5XVTBPRFxcXG5NeE9UazJsd1k3YUdGemFHSnliM2R1T2pwdFlYQTZPa2hoYzJoTllYQThTeXhXTEZNc1FUNDZPbWx1YzJWeWREbzZhRGhqTlRRMk1tSTJcXFxuTjJSbE9UZzJaaldZQmpkelpYSmtaVjlxYzI5dU9qcGtaVG82UkdWelpYSnBZV3hwZW1WeVBGSStPanBsYm1RNk9tZ3dNV1prTW1KaE5tXFxcbll3T1RjNU5EWXptUVpGYzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BqbzZibVY0ZEY5amFHRnlYMjl5WDI1MVxcXG5iR3c2T21nek4yTTVabVF5Tldaa09UTXpObUV4bWdaRmMyVnlaR1ZmYW5OdmJqbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbGNqeFNQam82Ym1cXFxuVjRkRjlqYUdGeVgyOXlYMjUxYkd3Nk9taG1ZekJoT1RNellqRmhORGM0T0RZd213WTJjMlZ5WkdWZmFuTnZiam82YzJWeU9qcG1iM0p0XFxcbllYUmZaWE5qWVhCbFpGOXpkSEk2T21nMU5EVTJaR1F6WldKa01tUTNZVFJsbkFiS0FUdzhjMlZ5WkdVNk9tUmxPanBwYlhCc2N6bzZQR1xcXG5sdGNHd2djMlZ5WkdVNk9tUmxPanBFWlhObGNtbGhiR2w2WlNCbWIzSWdjM1JrT2pwMGFXMWxPanBUZVhOMFpXMVVhVzFsUGpvNlpHVnpcXFxuWlhKcFlXeHBlbVU2T2tacFpXeGtJR0Z6SUhObGNtUmxPanBrWlRvNlJHVnpaWEpwWVd4cGVtVStPanBrWlhObGNtbGhiR2w2WlRvNlJtXFxcbmxsYkdSV2FYTnBkRzl5SUdGeklITmxjbVJsT2pwa1pUbzZWbWx6YVhSdmNqNDZPblpwYzJsMFgzTjBjam82YUdJMk1tWmpOMk13Tm1FMlxcXG5NemcxT0dXZEJraG9ZWE5vWW5KdmQyNDZPbkpoZHpvNlVtRjNWR0ZpYkdVOFZDeEJQam82Wm1Gc2JHbGliR1ZmZDJsMGFGOWpZWEJoWTJcXFxubDBlVG82YURZMFlUTTFNekpoTldZeU1qTXhNRGFlQmhObmJHOWlZV3hvZEhSd1kyRmphR1ZmYm1WM253WTNjMlZ5WkdWZmFuTnZiam82XFxcblpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BqbzZaVzVrT2pwb00yRmtNbVpsWmpnelptWTNaamsxTktBR01tRnNiRzlqT2pwemRISnBibVxcXG5jNk9sTjBjbWx1WnpvNmRISjFibU5oZEdVNk9taG1ORGMyWW1Zd09XTm1Oak0yWWpWbG9RWVJjblZ6ZEY5aVpXZHBibDkxYm5kcGJtU2lcXFxuQmkxaGJHeHZZem82ZG1Wak9qcFdaV004VkN4QlBqbzZjSFZ6YURvNmFESXdOamt4WldFeFptTTVaakpsT0RDakJsbGhiR3h2WXpvNmRtXFxcblZqT2pwcGJuUnZYMmwwWlhJNk9rbHVkRzlKZEdWeVBGUXNRVDQ2T21admNtZGxkRjloYkd4dlkyRjBhVzl1WDJSeWIzQmZjbVZ0WVdsdVxcXG5hVzVuT2pwb05tRm1NbUZoWWpNd1pURXlPR1pqTXFRR1dqeHpiV0ZzYkhabFl6bzZTVzUwYjBsMFpYSThRVDRnWVhNZ1kyOXlaVG82YVhcXFxuUmxjam82ZEhKaGFYUnpPanBwZEdWeVlYUnZjam82U1hSbGNtRjBiM0krT2pwdVpYaDBPanBvWkdNMlpEVTJOVGM1WVRFMlpqWmtPS1VHXFxcblZqeHFjMTl6ZVhNNk9rRnljbUY1U1hSbGNpQmhjeUJqYjNKbE9qcHBkR1Z5T2pwMGNtRnBkSE02T21sMFpYSmhkRzl5T2pwSmRHVnlZWFxcXG5SdmNqNDZPbTVsZUhRNk9tZzVNVFZpTWpsaVlUQXhPRFpqWlRCbXBnWldZMjl5WlRvNmMzUnlPanAwY21GcGRITTZPanhwYlhCc0lHTnZcXFxuY21VNk9tOXdjem82YVc1a1pYZzZPa2x1WkdWNFBFaytJR1p2Y2lCemRISStPanBwYm1SbGVEbzZhR05oWWpGbFlXVmxNbUk0WkRGaU5UXFxcbmluQmlWMWNtdzZPbFZ5YkRvNmFHOXpkRjl6ZEhJNk9tZzVNREZoWkdZNFpURTJZV1U1TTJGbHFBWkVkVzVwWTI5a1pWOXViM0p0WVd4cFxcXG5lbUYwYVc5dU9qcHNiMjlyZFhCek9qcHBjMTlqYjIxaWFXNXBibWRmYldGeWF6bzZhR0U0TVdZME1EZ3lNREE0WXpWaU1EV3BCamx6WlhcXFxuSmtaVjlxYzI5dU9qcGxjbkp2Y2pvNlJYSnliM0k2T21acGVGOXdiM05wZEdsdmJqbzZhR1F3T0RBeFpEWTVOamsxTm1ReE1UaXFCa1ZvXFxcbllYTm9Zbkp2ZDI0Nk9uSmhkem82YVc1dVpYSTZPbEpoZDFSaFlteGxQRlFzUVQ0Nk9uSmxiVzkyWlY5bGJuUnllVG82YUdZMVlUZzFZbVxcXG5Sa056QXlOVGt5WXpDckJqdG9ZWE5vWW5KdmQyNDZPbTFoY0RvNlNHRnphRTFoY0R4TExGWXNVeXhCUGpvNmNtVnRiM1psT2pwb05EaG1cXFxuT0ROaFpEQmhOR1EzTmpBMlphd0dTbWhoYzJoaWNtOTNiam82Y21GM09qcFNZWGRVWVdKc1pVbHVibVZ5UEVFK09qcHlaV052Y21SZmFYXFxcblJsYlY5cGJuTmxjblJmWVhRNk9tZ3pNakV6WXpRd01qRmpaall6TnpnMHJRWjFQR1JsYm05ZlkyRmphR1ZmWkdseU9qcG5iRzlpWVd3NlxcXG5Pa2RzYjJKaGJFaDBkSEJEWVdOb1pUeEZiblkrSUdGeklHUmxibTlmWTJGamFHVmZaR2x5T2pwallXTm9aVG82U0hSMGNFTmhZMmhsUGpcXFxubzZZMkZqYUdWZmFYUmxiVjlyWlhrNk9tZzVObUZpTURZMVpUTmtOekppTlRrd3JnWXZZMjl5WlRvNlptMTBPanBCY21kMWJXVnVkSE02XFxcbk9tRnpYM04wY2pvNmFHWTVPR0kyTXpka1pEZzJPRGRoWWpXdkJqbHpaWEprWlY5cWMyOXVPanBsY25KdmNqbzZSWEp5YjNJNk9tWnBlRlxcXG45d2IzTnBkR2x2YmpvNmFEWXdZemMxTVdFek4ySmtOVFl4T1Rpd0JqOTNZWE50WDJKcGJtUm5aVzQ2T21OdmJuWmxjblE2T21Oc2IzTjFcXFxuY21Wek9qcHBiblp2YTJVelgyMTFkRG82YURjNE1XSXpaamhpWVRobE56Z3lOVEd4QmxaamIzSmxPanB6ZEhJNk9uUnlZV2wwY3pvNlBHXFxcbmx0Y0d3Z1kyOXlaVG82YjNCek9qcHBibVJsZURvNlNXNWtaWGc4U1Q0Z1ptOXlJSE4wY2o0Nk9tbHVaR1Y0T2pwb01HTm1aalUxWm1VMVxcXG5aVFZpTW1VNVpiSUdLblZ5YkRvNlZYSnNPanB3WVhSb1gzTmxaMjFsYm5Sek9qcG9NRGhtWldGbE5qUXhPRGRsTXpabFk3TUdOSFZ5YkRcXFxubzZjR0Z5YzJWeU9qcFFZWEp6WlhJNk9uTm9iM0owWlc1ZmNHRjBhRG82YURNNVpEWTVNamN6TURnM1l6WTNORGkwQm1VOFkyOXlaVG82XFxcbllYSnlZWGs2T21sMFpYSTZPa2x1ZEc5SmRHVnlQRlFzWHo0Z1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBwZEdWeVlYUnZjalxcXG5vNlNYUmxjbUYwYjNJK09qcHVaWGgwT2pwb09USmlabUppTWpFNE1tVmtOR0UwT2JVR09tOXVZMlZmWTJWc2JEbzZhVzF3T2pwUGJtTmxcXFxuUTJWc2JEeFVQam82YVc1cGRHbGhiR2w2WlRvNmFEVTVOelEzTURabFpEZGxZbUU1TXppMkJqcHZibU5sWDJObGJHdzZPbWx0Y0RvNlQyXFxcbjVqWlVObGJHdzhWRDQ2T21sdWFYUnBZV3hwZW1VNk9taGtOVGcwTm1NeE5XRXhZbVptWWpRMnR3WkNaR1Z1YjE5allXTm9aVjlrYVhJNlxcXG5PbXh2WTJGc09qcE1iMk5oYkVoMGRIQkRZV05vWlR4RmJuWStPanB1WlhjNk9tZ3hPVFJoTVRZd05ETTRPREEwTnpjNHVBWlpQSE5sY21cXFxuUmxYMnB6YjI0Nk9uSmxZV1E2T2xOc2FXTmxVbVZoWkNCaGN5QnpaWEprWlY5cWMyOXVPanB5WldGa09qcFNaV0ZrUGpvNmNHVmxhMTl3XFxcbmIzTnBkR2x2YmpvNmFHWXpaamcwWm1Vek1HUmpPRFprT0dLNUJqQnpaWEprWlY5cWMyOXVPanB5WldGa09qcHdaV1ZyWDI5eVgyVnZaalxcXG5vNmFESTNaR1UzTmpCa09HSXhNVFUwTkdLNkJraG9ZWE5vWW5KdmQyNDZPbkpoZHpvNmFXNXVaWEk2T2taaGJHeHBZbWxzYVhSNU9qcGpcXFxuWVhCaFkybDBlVjl2ZG1WeVpteHZkem82YUdZNE9ETmpOemN3TXprd1lXRTBNVEc3QmtGb1lYTm9Zbkp2ZDI0Nk9uSmhkem82Um1Gc2JHXFxcbmxpYVd4cGRIazZPbU5oY0dGamFYUjVYMjkyWlhKbWJHOTNPanBvWldZNVlqRXdZbVl3T0dSaFpXVmpOTHdHTVdOdmJYQnBiR1Z5WDJKMVxcXG5hV3gwYVc1ek9qcHRaVzA2T20xbGJXTnRjRG82YUdJeVlXWXhNVGhoWVdGa1ltVXlORFM5QmpoelpYSmtaVjkzWVhOdFgySnBibVJuWldcXFxuNDZPbVZ5Y205eU9qcEZjbkp2Y2pvNmJtVjNPanBvTldRNE16SXlZakJrTmpRMU9EQTNNYjRHTjNObGNtUmxYM2RoYzIxZlltbHVaR2RsXFxcbmJqbzZaR1U2T21OdmJuWmxjblJmY0dGcGNqbzZhRGt3WTJFMk5qTXlPRGhqWmpFMk1XRy9CbEE4YzJWeVpHVmZkMkZ6YlY5aWFXNWtaMlxcXG5WdU9qcGxjbkp2Y2pvNlJYSnliM0lnWVhNZ1kyOXlaVG82Wm0xME9qcEVhWE53YkdGNVBqbzZabTEwT2pwb01tTmhNalF3T1dVeE5tRmlcXFxuT0RCaVk4QUdTanh6YldGc2JIWmxZem82UTI5c2JHVmpkR2x2YmtGc2JHOWpSWEp5SUdGeklHTnZjbVU2T21adGREbzZSR1ZpZFdjK09qXFxcbnBtYlhRNk9taGtaV0UzTXpkak5XWm1aVGhpTTJaaHdRWldZMjl5WlRvNmMzUnlPanAwY21GcGRITTZPanhwYlhCc0lHTnZjbVU2T205d1xcXG5jem82YVc1a1pYZzZPa2x1WkdWNFBFaytJR1p2Y2lCemRISStPanBwYm1SbGVEbzZhRFF6TTJRMU0yTTRaR1UwTkdZMk1qZkNCalZqYjNcXFxuSmxPanB6YkdsalpUbzZQR2x0Y0d3Z1cxUmRQam82Wlc1a2MxOTNhWFJvT2pwb056Y3hPREUxWmpjell6Y3hObVJtWXNNR04yRnNiRzlqXFxcbk9qcDJaV002T2xabFl6eFVMRUUrT2pwbGVIUmxibVJmZEhKMWMzUmxaRG82YURjMk9XUmhNall3TW1FellqVmtOMmJFQmpkaGJHeHZZelxcXG5vNmRtVmpPanBXWldNOFZDeEJQam82WlhoMFpXNWtYM1J5ZFhOMFpXUTZPbWhqTWpkaU5UQTNZV0V5T1RFeVpqUTR4UVo2WTI5eVpUbzZcXFxuYzNSeU9qcDBjbUZwZEhNNk9qeHBiWEJzSUdOdmNtVTZPbk5zYVdObE9qcHBibVJsZURvNlUyeHBZMlZKYm1SbGVEeHpkSEkrSUdadmNpXFxcbkJqYjNKbE9qcHZjSE02T25KaGJtZGxPanBTWVc1blpWUnZQSFZ6YVhwbFBqNDZPbWRsZERvNmFEZzNNbVptWVRBd01UZzVPVEkyWTJiR1xcXG5Camh6WlhKa1pWOTNZWE50WDJKcGJtUm5aVzQ2T21WeWNtOXlPanBGY25KdmNqbzZibVYzT2pwb09XVXhNemsyTTJReE1UVXlOelZtWXNcXFxuY0djVHhrWlc1dlgyTmhZMmhsWDJScGNqbzZkMkZ6YlRvNlRHOWpZV3hJZEhSd1EyRmphR1VnWVhNZ2QyRnpiVjlpYVc1a1oyVnVPanBqXFxcbmIyNTJaWEowT2pwMGNtRnBkSE02T2tsdWRHOVhZWE50UVdKcFBqbzZhVzUwYjE5aFltazZPbWhqWkRSaVpqVTVZV1JtWXpJNVkyUmp5QVxcXG5Zd2QyRnpiVjlpYVc1a1oyVnVPanBLYzFaaGJIVmxPanBoYzE5bU5qUTZPbWhtT1RWalpUWXpabVV5T1RZeE5qaGh5UVkzWTI5eVpUbzZcXFxuYzJ4cFkyVTZPanhwYlhCc0lGdFVYVDQ2T25OMFlYSjBjMTkzYVhSb09qcG9abVppTTJSaVpESXlOVFE1WkRZMk5jb0dMbUZzYkc5ak9qXFxcbnB6ZEhKcGJtYzZPbE4wY21sdVp6bzZjSFZ6YURvNmFHWmtPV0k1TTJGaE5XWXhZekpsTmpETEJqZGpiM0psT2pwemJHbGpaVG82UEdsdFxcXG5jR3dnVzFSZFBqbzZjM1JoY25SelgzZHBkR2c2T21nMFltVTBPRGMyTTJZelpEQXlOekU1ekFZM1kyOXlaVG82YzJ4cFkyVTZPanhwYlhcXFxuQnNJRnRVWFQ0Nk9uTjBZWEowYzE5M2FYUm9PanBvWW1VNFpHRTBaVEZoWXpsaE1XRmpNYzBHTFdwelgzTjVjem82VldsdWREaEJjbkpoXFxcbmVUbzZkRzlmZG1Wak9qcG9NalpqWVRFMU9UQTFZVFJrWTJGbU9NNEdlbU52Y21VNk9uTjBjam82ZEhKaGFYUnpPam84YVcxd2JDQmpiM1xcXG5KbE9qcHpiR2xqWlRvNmFXNWtaWGc2T2xOc2FXTmxTVzVrWlhnOGMzUnlQaUJtYjNJZ1kyOXlaVG82YjNCek9qcHlZVzVuWlRvNlVtRnVcXFxuWjJWVWJ6eDFjMmw2WlQ0K09qcG5aWFE2T21nNE56Sm1abUV3TURFNE9Ua3lObU5tendaNlkyOXlaVG82YzNSeU9qcDBjbUZwZEhNNk9qXFxcbnhwYlhCc0lHTnZjbVU2T25Oc2FXTmxPanBwYm1SbGVEbzZVMnhwWTJWSmJtUmxlRHh6ZEhJK0lHWnZjaUJqYjNKbE9qcHZjSE02T25KaFxcXG5ibWRsT2pwU1lXNW5aVlJ2UEhWemFYcGxQajQ2T21kbGREbzZhRGczTW1abVlUQXdNVGc1T1RJMlkyYlFCajFqYjNKbE9qcGphR0Z5T2pcXFxucHRaWFJvYjJSek9qbzhhVzF3YkNCamFHRnlQam82ZEc5ZlpHbG5hWFE2T21obU1UQTBOMkUxWTJJeVptRTNORFV5MFFZc1kyOXlaVG82XFxcblpYSnliM0k2T2tWeWNtOXlPanBqWVhWelpUbzZhRGt5T1dGbE56TTBZekV6TjJZNVl6YlNCazQ4WVc1NWFHOTNPanBsY25KdmNqbzZSWFxcXG5KeWIzSkpiWEJzUEVVK0lHRnpJR052Y21VNk9tVnljbTl5T2pwRmNuSnZjajQ2T25OdmRYSmpaVG82YURNMk56TmpPV1l4WkRreU1XRTJcXFxuWXpiVEJqMXpaWEprWlY5cWMyOXVPanBrWlRvNlJHVnpaWEpwWVd4cGVtVnlQRkkrT2pwdVpYaDBYMk5vWVhJNk9tZzBOekkxT0RBMVl6XFxcbmRpTXpFMVlqTTUxQVkzWVd4c2IyTTZPblpsWXpvNlZtVmpQRlFzUVQ0Nk9tVjRkR1Z1WkY5MGNuVnpkR1ZrT2pwb1pEVXhOakl3TlRBM1xcXG5aV0kyTjJSaVpkVUdQbWx1WkdWNGJXRndPanB0WVhBNk9rbHVaR1Y0VFdGd1BFc3NWaXhUUGpvNmFXNXpaWEowWDJaMWJHdzZPbWhoTXpcXFxuVmpZMlprWWpnek5tWXlNRGhtMWdaa1BHUmxibTlmWTJGamFHVmZaR2x5T2pwM1lYTnRPanBYWVhOdFJXNTJJR0Z6SUdSbGJtOWZZMkZqXFxcbmFHVmZaR2x5T2pwamIyMXRiMjQ2T2tSbGJtOURZV05vWlVWdWRqNDZPblJwYldWZmJtOTNPanBvWkRZNVpEVXdPRGc0WVRWbE56WTFOZFxcXG5jR1ZUeHpaWEprWlRvNlpHVTZPbWx0Y0d4ek9qcFRkSEpwYm1kV2FYTnBkRzl5SUdGeklITmxjbVJsT2pwa1pUbzZWbWx6YVhSdmNqNDZcXFxuT25acGMybDBYM04wY2pvNmFEVmhOMlpoWVRNMlptRm1PRGc0WXpMWUJsQThjMlZ5WkdWZmFuTnZiam82Y21WaFpEbzZVMnhwWTJWU1pXXFxcbkZrSUdGeklITmxjbVJsWDJwemIyNDZPbkpsWVdRNk9sSmxZV1ErT2pwdVpYaDBPanBvWTJNeFpHVXhOMk0zTlRZME5EaG1OOWtHS21welxcXG5YM041Y3pvNlJuVnVZM1JwYjI0Nk9tTmhiR3d3T2pwb1lUYzJZamhqT0dGbVlqTmlPVGd4WmRvR0oycHpYM041Y3pvNlVtVm1iR1ZqZERcXFxubzZaMlYwT2pwb05UUTRNVEUxTjJKaE0ySmxNelJpT05zR00zVnliRG82Y0dGeWMyVnlPanBKYm5CMWREbzZjM0JzYVhSZmNISmxabWw0XFxcbk9qcG9ZVFV3TXpBeFlUUm1aamM0WlRCa045d0dVWFZ1YVdOdlpHVmZibTl5YldGc2FYcGhkR2x2YmpvNlpHVmpiMjF3YjNObE9qcEVaV1xcXG5OdmJYQnZjMmwwYVc5dWN6eEpQam82Y0hWemFGOWlZV05yT2pwb01Ua3pNemxqTmpCbVpHTmpZVFUxWXQwR1VYVnVhV052WkdWZmJtOXlcXFxuYldGc2FYcGhkR2x2YmpvNlpHVmpiMjF3YjNObE9qcEVaV052YlhCdmMybDBhVzl1Y3p4SlBqbzZjSFZ6YUY5aVlXTnJPanBvT0dGalpHXFxcbkpoT1dRM1pqazNaR1k0TTk0R04yTnZjbVU2T25Oc2FXTmxPam84YVcxd2JDQmJWRjArT2pwemRHRnlkSE5mZDJsMGFEbzZhRFppTWpBNVxcXG5NbVJoWkRrM05XVTFORGZmQmsxMGFXNTVkbVZqT2pwMGFXNTVkbVZqT2pwVWFXNTVWbVZqUEVFK09qcHdkWE5vT2pwa2NtRnBibDkwYjFcXFxuOW9aV0Z3WDJGdVpGOXdkWE5vT2pwb1lXWmtaamxoWm1Sa1pEVmhORGcxTXVBR09qd21iWFYwSUZjZ1lYTWdZMjl5WlRvNlptMTBPanBYXFxcbmNtbDBaVDQ2T25keWFYUmxYM04wY2pvNmFHSXlZV0V3TkRVd05tSTBOMlkyWVRqaEJoSmZYM0prYkY5aGJHeHZZMTk2WlhKdlpXVGlCalxcXG5vOEptMTFkQ0JYSUdGeklHTnZjbVU2T21adGREbzZWM0pwZEdVK09qcDNjbWwwWlY5emRISTZPbWhtT1RnM1pqWXdORFEyTWpZMFlqYzNcXFxuNHdZNlBDWnRkWFFnVnlCaGN5QmpiM0psT2pwbWJYUTZPbGR5YVhSbFBqbzZkM0pwZEdWZmMzUnlPanBvWXpZeU1qTTNPRGMzTURsaVlqXFxcbkV6Tk9RR1lUeGpiM0psT2pwdmNITTZPbkpoYm1kbE9qcFNZVzVuWlR4MWMybDZaVDRnWVhNZ1kyOXlaVG82YzJ4cFkyVTZPbWx1WkdWNFxcXG5PanBUYkdsalpVbHVaR1Y0UEZ0VVhUNCtPanBwYm1SbGVEbzZhRFpqWkRjMk16WTRaVGs1TjJRMU1qRGxCamxqYjNKbE9qcHZjSE02T21cXFxuWjFibU4wYVc5dU9qcEdiazl1WTJVNk9tTmhiR3hmYjI1alpUbzZhRFV5WW1JMU9HVTFOakE0T0RNeVpEVG1CdFFCWTI5eVpUbzZjSFJ5XFxcbk9qcGtjbTl3WDJsdVgzQnNZV05sUEdoaGMyaGljbTkzYmpvNmMyTnZjR1ZuZFdGeVpEbzZVMk52Y0dWSGRXRnlaRHhvWVhOb1luSnZkMlxcXG40Nk9uSmhkem82VW1GM1ZHRmliR1ZKYm01bGNqeGhiR3h2WXpvNllXeHNiMk02T2tkc2IySmhiRDRzYUdGemFHSnliM2R1T2pweVlYYzZcXFxuT2xKaGQxUmhZbXhsU1c1dVpYSThZV3hzYjJNNk9tRnNiRzlqT2pwSGJHOWlZV3crT2pwd2NtVndZWEpsWDNKbGMybDZaVG82ZTN0amJHXFxcbjl6ZFhKbGZYMCtQam82YUdFek16QXpOR1V4WlRaaE9XTTNOMlRuQmxROGMyVnlaR1ZmYW5OdmJqbzZjMlZ5T2pwRGIyMXdiM1Z1WkR4WFxcXG5MRVkrSUdGeklITmxjbVJsT2pwelpYSTZPbE5sY21saGJHbDZaVTFoY0Q0Nk9tVnVaRG82YUdReFpEVTNOR0U1TkRsaE9ERXhPV1BvQnNcXFxuRUJQR1JsYm05ZlkyRmphR1ZmWkdseU9qcGpZV05vWlRvNlh6bzZQR2x0Y0d3Z2MyVnlaR1U2T21SbE9qcEVaWE5sY21saGJHbDZaU0JtXFxcbmIzSWdaR1Z1YjE5allXTm9aVjlrYVhJNk9tTmhZMmhsT2pwVFpYSnBZV3hwZW1Wa1EyRmphR1ZrVlhKc1RXVjBZV1JoZEdFK09qcGtaWFxcXG5ObGNtbGhiR2w2WlRvNlgxOUdhV1ZzWkZacGMybDBiM0lnWVhNZ2MyVnlaR1U2T21SbE9qcFdhWE5wZEc5eVBqbzZkbWx6YVhSZmMzUnlcXFxuT2pwb09XTTBOalk1WlRNMVpUTTJOamhqTStrR1IyaGhjMmhpY205M2JqbzZjbUYzT2pwcGJtNWxjam82VW1GM1ZHRmliR1U4VkN4QlBqXFxcbm82YVc1elpYSjBYMmx1WDNOc2IzUTZPbWd5TldFMk4ySTRNVGcwWlRBM1l6TXg2Z1lyYzJWeVpHVmZhbk52YmpvNmNtVmhaRG82WVhOZlxcXG5jM1J5T2pwb1pXWTNOekUxWldJNE5tTm1NRFZqWStzR2FEeGhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWNnWVhNZ1kyOXlaVG82YVhcXFxuUmxjam82ZEhKaGFYUnpPanBqYjJ4c1pXTjBPanBHY205dFNYUmxjbUYwYjNJOFkyaGhjajQrT2pwbWNtOXRYMmwwWlhJNk9taGpabU5tXFxcbk1XWmxZVEZoWWpSbU16Umg3QVl6ZFhKc09qcHdZWEp6WlhJNk9rbHVjSFYwT2pwemNHeHBkRjl3Y21WbWFYZzZPbWc0TURnM01tTTJZelxcXG5KbU5qWXpNR0kxN1FZaWRYSnNPanBWY213Nk9uTnNhV05sT2pwb1pXUm1ZVFkxTnprMU0ySXlORGMxWk80R1pUeGpiM0psT2pwdmNITTZcXFxuT25KaGJtZGxPanBTWVc1blpUeDFjMmw2WlQ0Z1lYTWdZMjl5WlRvNmMyeHBZMlU2T21sdVpHVjRPanBUYkdsalpVbHVaR1Y0UEZ0VVhUXFxcbjQrT2pwcGJtUmxlRjl0ZFhRNk9taGhabVkxTkRjNE56SXdNV05pTXprMDd3WmxQR052Y21VNk9tOXdjem82Y21GdVoyVTZPbEpoYm1kbFxcXG5QSFZ6YVhwbFBpQmhjeUJqYjNKbE9qcHpiR2xqWlRvNmFXNWtaWGc2T2xOc2FXTmxTVzVrWlhnOFcxUmRQajQ2T21sdVpHVjRYMjExZERcXFxubzZhR0ppTmpsak4yWmtNamcwTlRjeU5HUHdCaTFoYkd4dll6bzZkbVZqT2pwV1pXTThWQ3hCUGpvNmNIVnphRG82YURJMVlqSmlPVEkyXFxcblptTTFNR0ZrTTJQeEJrMTBhVzU1ZG1Wak9qcDBhVzU1ZG1Wak9qcFVhVzU1Vm1WalBFRStPanB3ZFhOb09qcGtjbUZwYmw5MGIxOW9aV1xcXG5Gd1gyRnVaRjl3ZFhOb09qcG9aVGMzWkRNM09UWTNNVGhoWm1FeU0vSUdNMk52Y21VNk9tTm9ZWEk2T2tOaGMyVk5ZWEJ3YVc1blNYUmxcXFxuY2pvNmJtVjNPanBvTlRReU9EazBOelExTTJObVlUUTNNZk1HVGp4aGJubG9iM2M2T21WeWNtOXlPanBGY25KdmNrbHRjR3c4UlQ0Z1lYXFxcbk1nWTI5eVpUbzZaWEp5YjNJNk9rVnljbTl5UGpvNmMyOTFjbU5sT2pwb1ltWmxaREpoWlRBNU16RTRZalUzTWZRR1RqeGhibmxvYjNjNlxcXG5PbVZ5Y205eU9qcEZjbkp2Y2tsdGNHdzhSVDRnWVhNZ1kyOXlaVG82WlhKeWIzSTZPa1Z5Y205eVBqbzZjMjkxY21ObE9qcG9NMkZpTlRcXFxuTXpOREptTlRrNFpEazBaUFVHVGp4aGJubG9iM2M2T21WeWNtOXlPanBGY25KdmNrbHRjR3c4UlQ0Z1lYTWdZMjl5WlRvNlpYSnliM0k2XFxcbk9rVnljbTl5UGpvNmMyOTFjbU5sT2pwb1ltWm1ZVGRpTkRVM09ESXlNR0k0WXZZR1RqeGhibmxvYjNjNk9tVnljbTl5T2pwRmNuSnZja1xcXG5sdGNHdzhSVDRnWVhNZ1kyOXlaVG82WlhKeWIzSTZPa1Z5Y205eVBqbzZjMjkxY21ObE9qcG9aVFkxTW1SbU5UTTVZelE0TnpFNU5QY0dcXFxuUDJoaGMyaGljbTkzYmpvNmNtRjNPanBwYm01bGNqbzZVbUYzVkdGaWJHVThWQ3hCUGpvNmNtVnRiM1psT2pwb09ESmtZbVUzT1RjeE5UXFxcbmhsWmpBMk4vZ0dod0YzWVhOdFgySnBibVJuWlc0Nk9tTnZiblpsY25RNk9uTnNhV05sY3pvNlBHbHRjR3dnZDJGemJWOWlhVzVrWjJWdVxcXG5PanBqYjI1MlpYSjBPanAwY21GcGRITTZPa1p5YjIxWFlYTnRRV0pwSUdadmNpQmhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWMrT2pcXFxucG1jbTl0WDJGaWFUbzZhREJrTnpZelpUTTRPV00xTURSaU1URDVCa2s4YzIxaGJHeDJaV002T2xOdFlXeHNWbVZqUEVFK0lHRnpJR052XFxcbmNtVTZPbTl3Y3pvNlpISnZjRG82UkhKdmNENDZPbVJ5YjNBNk9tZzROamhsWmpnNU5qQXdaV014WlRZMitnWTBZMjl5WlRvNmNtVnpkV1xcXG54ME9qcFNaWE4xYkhROFZDeEZQam82ZFc1M2NtRndPanBvT1RabE9UWmhPVGd4TXpoa01EZzJadnNHT0dwelgzTjVjem82U1hSbGNtRjBcXFxuYjNJNk9teHZiMnR6WDJ4cGEyVmZhWFJsY21GMGIzSTZPbWhrWWprMk5UQTVZamd6T0RrM1pESmwvQVlwYW5OZmMzbHpPanBKZEdWeVlYXFxcblJ2Y2pvNmJtVjRkRG82YUdReU1UUmtOVGcwWW1JM1pUUTJNVEQ5QmpSamIzSmxPanB5WlhOMWJIUTZPbEpsYzNWc2REeFVMRVUrT2pwMVxcXG5ibmR5WVhBNk9tZ3hOVEJsTXpjeU5qSmhZekV4TVdJMi9nWm9QR0ZzYkc5ak9qcHpkSEpwYm1jNk9sTjBjbWx1WnlCaGN5QmpiM0psT2pcXFxucHBkR1Z5T2pwMGNtRnBkSE02T21OdmJHeGxZM1E2T2taeWIyMUpkR1Z5WVhSdmNqeGphR0Z5UGo0Nk9tWnliMjFmYVhSbGNqbzZhREU1XFxcbllUVTVOV1ExWkdWak16VXhabVgvQmlKMWNtdzZPbFZ5YkRvNmMyeHBZMlU2T21nMlptWTVNREEwWWpsbU1XWTJZelF6Z0FjaWRYSnNPalxcXG5wVmNtdzZPbk5zYVdObE9qcG9NalU1TVdaak16WXpNelJoTTJNeU5vRUhhenh6ZEdRNk9uQmhibWxqYTJsdVp6bzZZbVZuYVc1ZmNHRnVcXFxuYVdOZmFHRnVaR3hsY2pvNlUzUnlVR0Z1YVdOUVlYbHNiMkZrSUdGeklHTnZjbVU2T25CaGJtbGpPanBDYjNoTlpWVndQam82ZEdGclpWXFxcbjlpYjNnNk9taGlNR00xTXpsaU4yRTBPR1l6WmpRNGdnYzRjM1JrT2pwemVYTTZPbmRoYzIwNk9tOXpYM04wY2pvNlUyeHBZMlU2T25SdlxcXG5YM04wY2pvNmFHUTJNekEwTVdRMFpHRmlOelZrT0RlREJ5bGpiM0psT2pwd1lXNXBZMnRwYm1jNk9uQmhibWxqT2pwb01EUmlNamd6TldcXFxuVm1PV0kwTVdReE9ZUUhjRHhvWVhOb1luSnZkMjQ2T25KaGR6bzZhVzV1WlhJNk9tSnBkRzFoYzJzNk9rSnBkRTFoYzJ0SmRHVnlJR0Z6XFxcbklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6bzZhWFJsY21GMGIzSTZPa2wwWlhKaGRHOXlQam82Ym1WNGREbzZhR0V6TmpVMVl6TTBNV1xcXG5ZNU9ERTNPRGlGQjJFOFkyOXlaVG82YjNCek9qcHlZVzVuWlRvNlVtRnVaMlU4ZFhOcGVtVStJR0Z6SUdOdmNtVTZPbk5zYVdObE9qcHBcXFxuYm1SbGVEbzZVMnhwWTJWSmJtUmxlRHhiVkYwK1BqbzZhVzVrWlhnNk9taGhPV0V4TVRJME16YzBaamhsTjJNemhnY3djMlZ5WkdVNk9tXFxcblJsT2pwV2FYTnBkRzl5T2pwMmFYTnBkRjltTmpRNk9taGxNV1JoTlRFM01HVTBabVF3WVRBNGh3Y3djMlZ5WkdVNk9tUmxPanBXYVhOcFxcXG5kRzl5T2pwMmFYTnBkRjltTmpRNk9tZzJaamd4WkRaaE5UQXdNRFZqWVRVeGlBYzFZMjl1YzI5c1pWOWxjbkp2Y2w5d1lXNXBZMTlvYjJcXFxuOXJPanB6WlhSZmIyNWpaVG82YUROa01tWXdORGhpT1dJNE5XTmlPR0tKQjEwOGFXNWtaWGh0WVhBNk9uTmxjbVJsT2pwSmJtUmxlRTFoXFxcbmNGWnBjMmwwYjNJOFN5eFdMRk0rSUdGeklITmxjbVJsT2pwa1pUbzZWbWx6YVhSdmNqNDZPbVY0Y0dWamRHbHVaem82YURVek1UQTFNelxcXG5NMU1USTRNbVZsT0RpS0IzZGpiM0psT2pwcGRHVnlPanB5WVc1blpUbzZQR2x0Y0d3Z1kyOXlaVG82YVhSbGNqbzZkSEpoYVhSek9qcHBcXFxuZEdWeVlYUnZjam82U1hSbGNtRjBiM0lnWm05eUlHTnZjbVU2T205d2N6bzZjbUZ1WjJVNk9sSmhibWRsUEVFK1BqbzZiblJvT2pwb016XFxcbmxsWTJGbFpqVTBOV1U0WWprek5vc0hQanhSSUdGeklHaGhjMmhpY205M2JqbzZSWEYxYVhaaGJHVnVkRHhMUGo0Nk9tVnhkV2wyWVd4bFxcXG5iblE2T21obU9EbGpaamcwTWpJMk5EYzFPVEV3akFkVWMyVnlaR1U2T25ObGNqbzZhVzF3YkhNNk9qeHBiWEJzSUhObGNtUmxPanB6WlhcXFxuSTZPbE5sY21saGJHbDZaU0JtYjNJZ0psUStPanB6WlhKcFlXeHBlbVU2T21nd016TmlaRFpsTnpCbVpUazJZakJsalFjK2FXNWtaWGh0XFxcbllYQTZPbTFoY0RvNlNXNWtaWGhOWVhBOFN5eFdMRk0rT2pwcGJuTmxjblJmWm5Wc2JEbzZhR0k0T1Roa1pUVmxZVFUzT0ROaVpER09CelxcXG41cGJtUmxlRzFoY0RvNmJXRndPanBKYm1SbGVFMWhjRHhMTEZZc1V6NDZPbWx1YzJWeWRGOW1kV3hzT2pwb1pHSTNZMkkwWTJVNFlUY3lcXFxuWkRJMU1ZOEhQMmx1WkdWNGJXRndPanB0WVhBNk9tTnZjbVU2T21WeGRXbDJZV3hsYm5RNk9udDdZMnh2YzNWeVpYMTlPanBvWkdNeU5EXFxcbmhtTlRkbE9HTmxZV1JsT0pBSFAybHVaR1Y0YldGd09qcHRZWEE2T21OdmNtVTZPbVZ4ZFdsMllXeGxiblE2T250N1kyeHZjM1Z5WlgxOVxcXG5PanBvWkdZellUSTROelV3TmpNNFpHWm1ONUVIVkdoaGMyaGljbTkzYmpvNmNtRjNPanBwYm01bGNqbzZVbUYzVkdGaWJHVThWQ3hCUGpcXFxubzZjbVZ6WlhKMlpWOXlaV2hoYzJnNk9udDdZMnh2YzNWeVpYMTlPanBvT0dVeVpUQTJaRGxqWVRFd05qTTVZcElIVkdoaGMyaGljbTkzXFxcbmJqbzZjbUYzT2pwcGJtNWxjam82VW1GM1ZHRmliR1U4VkN4QlBqbzZjbVZ6WlhKMlpWOXlaV2hoYzJnNk9udDdZMnh2YzNWeVpYMTlPalxcXG5wb05tTm1OekV5TjJJNE56QTNPV0ZpWTVNSFZHaGhjMmhpY205M2JqbzZjbUYzT2pwcGJtNWxjam82VW1GM1ZHRmliR1U4VkN4QlBqbzZcXFxuY21WelpYSjJaVjl5WldoaGMyZzZPbnQ3WTJ4dmMzVnlaWDE5T2pwb1lqWmtNV1kyWm1abU1UTXdObVZsWnBRSFlUeGpiM0psT2pwdmNIXFxcbk02T25KaGJtZGxPanBTWVc1blpUeDFjMmw2WlQ0Z1lYTWdZMjl5WlRvNmMyeHBZMlU2T21sdVpHVjRPanBUYkdsalpVbHVaR1Y0UEZ0VVxcXG5YVDQrT2pwcGJtUmxlRG82YUdZMFpqVmpNV1ZtWVRJd09EZG1ZMkdWQnpSamIzSmxPanB2Y0hScGIyNDZPazl3ZEdsdmJqeFVQam82WVdcXFxuNWtYM1JvWlc0Nk9taGlPR0U1TWpnd016YzJaRE5pWkRabWxnZENjR0Z5YTJsdVoxOXNiM1JmWTI5eVpUbzZjR0Z5YTJsdVoxOXNiM1E2XFxcbk9tTnlaV0YwWlY5b1lYTm9kR0ZpYkdVNk9tZzFabVF5T0RjellUQTBPREF3TW1Zd2x3ZFBQR0ZzYkc5ak9qcHlZWGRmZG1Wak9qcFNZWFxcXG5kV1pXTThWQ3hCUGlCaGN5QmpiM0psT2pwdmNITTZPbVJ5YjNBNk9rUnliM0ErT2pwa2NtOXdPanBvT0dSbE16STRNVFJsWXpoaE9EVTFcXFxuTlpnSFlUeGpiM0psT2pwdmNITTZPbkpoYm1kbE9qcFNZVzVuWlR4MWMybDZaVDRnWVhNZ1kyOXlaVG82YzJ4cFkyVTZPbWx1WkdWNE9qXFxcbnBUYkdsalpVbHVaR1Y0UEZ0VVhUNCtPanBwYm1SbGVEbzZhR1F5Tmprell6WXlZelJqTldRek9EQ1pCMkU4WTI5eVpUbzZiM0J6T2pweVxcXG5ZVzVuWlRvNlVtRnVaMlU4ZFhOcGVtVStJR0Z6SUdOdmNtVTZPbk5zYVdObE9qcHBibVJsZURvNlUyeHBZMlZKYm1SbGVEeGJWRjArUGpcXFxubzZhVzVrWlhnNk9tZ3pZVEF6WlRCbE5qZGpNV0ZqTURReW1nZGxQR052Y21VNk9tOXdjem82Y21GdVoyVTZPbEpoYm1kbFBIVnphWHBsXFxcblBpQmhjeUJqYjNKbE9qcHpiR2xqWlRvNmFXNWtaWGc2T2xOc2FXTmxTVzVrWlhnOFcxUmRQajQ2T21sdVpHVjRYMjExZERvNmFEQmpZalxcXG5JeFlUVTBNelkzWVRZMk5HU2JCMkU4WTI5eVpUbzZiM0J6T2pweVlXNW5aVG82VW1GdVoyVThkWE5wZW1VK0lHRnpJR052Y21VNk9uTnNcXFxuYVdObE9qcHBibVJsZURvNlUyeHBZMlZKYm1SbGVEeGJWRjArUGpvNmFXNWtaWGc2T21obU1qSTRabUl3WlRJMVpURmhZVEJqbkFkS1BHXFxcbkZzYkc5ak9qcHpkSEpwYm1jNk9rWnliMjFWZEdZNFJYSnliM0lnWVhNZ1kyOXlaVG82Wm0xME9qcEVaV0oxWno0Nk9tWnRkRG82YURSbVxcXG5aVE5tTWpneE16UTJNakkzWmpPZEI0a0JkMkZ6YlY5aWFXNWtaMlZ1T2pwamIyNTJaWEowT2pwemJHbGpaWE02T2p4cGJYQnNJSGRoYzJcXFxuMWZZbWx1WkdkbGJqbzZZMjl1ZG1WeWREbzZkSEpoYVhSek9qcEdjbTl0VjJGemJVRmlhU0JtYjNJZ1lXeHNiMk02T21KdmVHVmtPanBDXFxcbmIzZzhXM1U0WFQ0K09qcG1jbTl0WDJGaWFUbzZhRGhsTW1VNE9EYzNNR1psTkdJeU0yT2VCemhqYjNKbE9qcHpiR2xqWlRvNlBHbHRjR1xcXG53Z1cxUmRQam82YzNCc2FYUmZZWFJmYlhWME9qcG9NalptWWpjNFlUZ3lOVE14TlRNd01wOEhOV052Y21VNk9uSmxjM1ZzZERvNlVtVnpcXFxuZFd4MFBGUXNSVDQ2T20xaGNGOWxjbkk2T21nMk1USTNOVEl6WVRFMllqQTFZak0wb0FmYUFUeGtaVzV2WDJOaFkyaGxYMlJwY2pvNmJHXFxcbjlqWVd3Nk9tMWhibWxtWlhOME9qcGZPam84YVcxd2JDQnpaWEprWlRvNlpHVTZPa1JsYzJWeWFXRnNhWHBsSUdadmNpQmtaVzV2WDJOaFxcXG5ZMmhsWDJScGNqbzZiRzlqWVd3Nk9tMWhibWxtWlhOME9qcFRaWEpwWVd4cGVtVmtURzlqWVd4RFlXTm9aVTFoYm1sbVpYTjBSR0YwWVRcXFxuNDZPbVJsYzJWeWFXRnNhWHBsT2pwZlgwWnBaV3hrVm1semFYUnZjaUJoY3lCelpYSmtaVG82WkdVNk9sWnBjMmwwYjNJK09qcDJhWE5wXFxcbmRGOXpkSEk2T21nM05HTXhaVEEzTURNNU5EaG1ZV05qb1Fkd1BHRnNiRzlqT2pwemRISnBibWM2T2xOMGNtbHVaeUJoY3lCamIzSmxPalxcXG5wdmNITTZPbWx1WkdWNE9qcEpibVJsZUR4amIzSmxPanB2Y0hNNk9uSmhibWRsT2pwU1lXNW5aVVp5YjIwOGRYTnBlbVUrUGo0Nk9tbHVcXFxuWkdWNE9qcG9ZalEwWVdJNU5HSXdZbUl5WXpoa042SUhjRHhoYkd4dll6bzZjM1J5YVc1bk9qcFRkSEpwYm1jZ1lYTWdZMjl5WlRvNmIzXFxcbkJ6T2pwcGJtUmxlRG82U1c1a1pYZzhZMjl5WlRvNmIzQnpPanB5WVc1blpUbzZVbUZ1WjJWR2NtOXRQSFZ6YVhwbFBqNCtPanBwYm1SbFxcXG5lRG82YUdJME5HRmlPVFJpTUdKaU1tTTRaRGVqQjNBOFlXeHNiMk02T25OMGNtbHVaem82VTNSeWFXNW5JR0Z6SUdOdmNtVTZPbTl3Y3pcXFxubzZhVzVrWlhnNk9rbHVaR1Y0UEdOdmNtVTZPbTl3Y3pvNmNtRnVaMlU2T2xKaGJtZGxSbkp2YlR4MWMybDZaVDQrUGpvNmFXNWtaWGc2XFxcbk9taGlORFJoWWprMFlqQmlZakpqT0dRM3BBY3VjM1JrT2pwd1lYUm9PanBRWVhSb09qcGpiMjF3YjI1bGJuUnpPanBvT0RCa1l6VmhPVFxcXG5aaU5qUmxPR1ZsWnFVSE1HRnNiRzlqT2pwaGJHeHZZem82WlhoamFHRnVaMlZmYldGc2JHOWpPanBvTm1Jek16TTFObVU1TVRVMVpUSXdcXFxuTTZZSFNEeGhiR3h2WXpvNmRtVmpPanBXWldNOFZDeEJQaUJoY3lCamIzSmxPanB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d09qXFxcbnBvT0RRek1UazNZemd5TW1VMFpqRXhZYWNITVdOdmNtVTZPbkIwY2pvNmMzZGhjRjl1YjI1dmRtVnliR0Z3Y0dsdVp6bzZhR1EyTURFMlxcXG5ZV05rTVdFeE0yVmtZek9vQjBnOFlXeHNiMk02T25abFl6bzZWbVZqUEZRc1FUNGdZWE1nWTI5eVpUbzZiM0J6T2pwa2NtOXdPanBFY21cXFxuOXdQam82WkhKdmNEbzZhRGd6WTJGaU1UbGpPR1EzTm1Sa09UbXBCMGs4YzJWeVpHVmZhbk52YmpvNlpYSnliM0k2T2tWeWNtOXlJR0Z6XFxcbklITmxjbVJsT2pwa1pUbzZSWEp5YjNJK09qcGpkWE4wYjIwNk9tZ3hZakE1WldKak9UZGtNRGM0TW1KanFnYzJZV3hzYjJNNk9uWmxZelxcXG5vNlZtVmpQRlFzUVQ0Nk9uTm9jbWx1YTE5MGIxOW1hWFE2T21obE4ySTNaVEpsT0dZNU1EY3lOVGxqcXdjd1lXeHNiMk02T21Gc2JHOWpcXFxuT2pwbGVHTm9ZVzVuWlY5dFlXeHNiMk02T21nMllqTXpNelUyWlRreE5UVmxNakF6ckFjMllXeHNiMk02T25abFl6bzZWbVZqUEZRc1FUXFxcbjQ2T25Ob2NtbHVhMTkwYjE5bWFYUTZPbWcwTlRaak5tWTRPVEUwTWpjME56WTNyUWMyWVd4c2IyTTZPblpsWXpvNlZtVmpQRlFzUVQ0NlxcXG5Pbk5vY21sdWExOTBiMTltYVhRNk9taGlOall4TW1NM01tVm1Nall6WmpRenJnY3dZV3hzYjJNNk9tRnNiRzlqT2pwbGVHTm9ZVzVuWlZcXFxuOXRZV3hzYjJNNk9tZzJZak16TXpVMlpUa3hOVFZsTWpBenJ3ZGpQSE4wWkRvNmNHRnVhV05yYVc1bk9qcGlaV2RwYmw5d1lXNXBZem82XFxcblVHRnVhV05RWVhsc2IyRmtQRUUrSUdGeklHTnZjbVU2T25CaGJtbGpPanBDYjNoTlpWVndQam82ZEdGclpWOWliM2c2T21oaFlXUmhZV1xcXG5ObU9ERXhZalE0WWpJNXNBZUFBVHhqYjNKbE9qcHBkR1Z5T2pwaFpHRndkR1Z5Y3pvNlkyOXdhV1ZrT2pwRGIzQnBaV1E4U1Q0Z1lYTWdcXFxuWTI5eVpUbzZhWFJsY2pvNmRISmhhWFJ6T2pwa2IzVmliR1ZmWlc1a1pXUTZPa1J2ZFdKc1pVVnVaR1ZrU1hSbGNtRjBiM0krT2pwdVpYXFxcbmgwWDJKaFkyczZPbWcyWlRjMk9HWmtZMlExTUdZd1pUZ3dzUWRYWTI5eVpUbzZjMnhwWTJVNk9tbHVaR1Y0T2pvOGFXMXdiQ0JqYjNKbFxcXG5PanB2Y0hNNk9tbHVaR1Y0T2pwSmJtUmxlRHhKUGlCbWIzSWdXMVJkUGpvNmFXNWtaWGc2T21obE16Rm1OVEV4WkdNNU56ZzRZelJqc2dcXFxuZGVZMjl5WlRvNmMyeHBZMlU2T21sdVpHVjRPam84YVcxd2JDQmpiM0psT2pwdmNITTZPbWx1WkdWNE9qcEpibVJsZUUxMWREeEpQaUJtXFxcbmIzSWdXMVJkUGpvNmFXNWtaWGhmYlhWME9qcG9ZV05qTkRJNU56UTFNemN4WkRBMlpiTUhXbU52Y21VNk9tRnljbUY1T2pvOGFXMXdiQ1xcXG5CamIzSmxPanB2Y0hNNk9tbHVaR1Y0T2pwSmJtUmxlRTExZER4SlBpQm1iM0lnVzFRN0lFNWRQam82YVc1a1pYaGZiWFYwT2pwb1l6RXdcXFxuWm1FNE1qa3dNamhqTVRWaFpyUUhObUZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrT2pwemFISnBibXRmZEc5ZlptbDBPanBvTm1ZeVpUXFxcblk0T1RObE5XWTJORGMyTUxVSE5tRnNiRzlqT2pwMlpXTTZPbFpsWXp4VUxFRStPanB6YUhKcGJtdGZkRzlmWm1sME9qcG9ZV05pTW1SaVxcXG5NalUzT0Rjd056YzFNYllITFhWeWJEbzZWWEpzT2pwallXNXViM1JmWW1WZllWOWlZWE5sT2pwb1pUY3lOMkUzTVdZNE1USmtZbU0zTjdcXFxuY0hiRHhqYjNKbE9qcHBkR1Z5T2pwaFpHRndkR1Z5Y3pvNmJXRndPanBOWVhBOFNTeEdQaUJoY3lCamIzSmxPanBwZEdWeU9qcDBjbUZwXFxcbmRITTZPbWwwWlhKaGRHOXlPanBKZEdWeVlYUnZjajQ2T25SeWVWOW1iMnhrT2pwb09UVTVPR0ptTVRGaFpUZGlOakl6TmJnSExXRnNiR1xcXG45ak9qcDJaV002T2xabFl6eFVMRUUrT2pwd2RYTm9PanBvTmprM1pUZ3daakUzWVdZeVpXUmtOcmtITUdGc2JHOWpPanBoYkd4dll6bzZcXFxuWlhoamFHRnVaMlZmYldGc2JHOWpPanBvTm1Jek16TTFObVU1TVRVMVpUSXdNN29ITG5OMFpEbzZhVzg2T21WeWNtOXlPanBGY25KdmNqXFxcbm82WDI1bGR6bzZhRGRoT0dVMk1ESXdOVGRpTVdabVpHVzdCMGc4YzNSa09qcHdZWFJvT2pwUVlYUm9RblZtSUdGeklHTnZjbVU2T21OdlxcXG5iblpsY25RNk9rWnliMjA4SmxRK1BqbzZabkp2YlRvNmFEZ3paV1UzWkdJNE1URTVZV0kzTURtOEJ5eGhiR3h2WXpvNmRtVmpPanBXWldcXFxuTThWQ3hCUGpvNmNHOXdPanBvWmpjek1XTTFNMkkwWWpjM1lUUm1NTDBITldOdmNtVTZPbkpsYzNWc2REbzZVbVZ6ZFd4MFBGUXNSVDQ2XFxcbk9tMWhjRjlsY25JNk9tZ3lZelU0WVdaak5UVTVaRGRoTVRBNXZnYzZZV3hzYjJNNk9uWmxZem82Vm1WalBGUXNRVDQ2T25SeWVWOXlaWFxcXG5ObGNuWmxYMlY0WVdOME9qcG9OREJoTmpJeVlUZ3dZVEE1TldSbFlyOEhPbUZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrT2pwMGNubGZcXFxuY21WelpYSjJaVjlsZUdGamREbzZhR0l6WTJSaU9EYzBabVkwTmprd1lqREFCenBoYkd4dll6bzZkbVZqT2pwV1pXTThWQ3hCUGpvNmRIXFxcbko1WDNKbGMyVnlkbVZmWlhoaFkzUTZPbWhqWlRnMFltWTFaR1V4WkRCbFpHTmh3UWNzWVc1NWFHOTNPanBsY25KdmNqbzZiMkpxWldOMFxcXG5YM0psWmpvNmFEQm1Nell6WmpVek5ESTBOVGxoTjJQQ0J5eGhibmxvYjNjNk9tVnljbTl5T2pwdlltcGxZM1JmY21WbU9qcG9OR1l3TXpcXFxuSXlaV0UyTm1Nek4yVTJZc01ITEdGdWVXaHZkem82WlhKeWIzSTZPbTlpYW1WamRGOXlaV1k2T21nMVptRTBNV1kzWlRoa09UWmhPV0V5XFxcbnhBY3NZVzU1YUc5M09qcGxjbkp2Y2pvNmIySnFaV04wWDNKbFpqbzZhRGswWXpoaFltRmlNRGswTURneE5XVEZCeXhoYm5sb2IzYzZPbVxcXG5WeWNtOXlPanB2WW1wbFkzUmZjbVZtT2pwb09UVmpaVEV4WmpFMFptSXhaV1kxTWNZSFFXRnVlV2h2ZHpvNlpYSnliM0k2T2p4cGJYQnNcXFxuSUdGdWVXaHZkem82UlhKeWIzSStPanBqYjI1emRISjFZM1E2T21nd1pEQTJNV0poTnpaaVlqSXlNekUxeHdjL2FXNWtaWGh0WVhBNk9tXFxcbjFoY0RvNlkyOXlaVG82WlhGMWFYWmhiR1Z1ZERvNmUzdGpiRzl6ZFhKbGZYMDZPbWc1WXpBeE16VmxaREk0TnpKbVlXVmx5QWRJYUdGelxcXG5hR0p5YjNkdU9qcHlZWGM2T2xKaGQxUmhZbXhsU1c1dVpYSThRVDQ2T25CeVpYQmhjbVZmYVc1elpYSjBYM05zYjNRNk9tZ3lPVGRqWkdcXFxuTTVPR1JtTUdOa056Z3h5UWRJYUdGemFHSnliM2R1T2pweVlYYzZPbWx1Ym1WeU9qcFNZWGRVWVdKc1pVbHVibVZ5UEVFK09qcG1jbVZsXFxcblgySjFZMnRsZEhNNk9taGtZbVEwWTJSaFpUUmlZMlZpWmpGa3lnY3FjMlZ5WkdWZmFuTnZiam82Y21WaFpEbzZaWEp5YjNJNk9tZzNOalxcXG5nM1lqRTFOalprTWpnME1tSml5d2NxYzJWeVpHVmZhbk52YmpvNmNtVmhaRG82WlhKeWIzSTZPbWd3TURnM01tUm1NbVptWkdJeVpERXlcXFxuekFjcWMyVnlaR1ZmYW5OdmJqbzZjbVZoWkRvNlpYSnliM0k2T21oall6Wm1NVGc0TkROa1lqRmxOV0V6elFjcWMyVnlaR1ZmYW5OdmJqXFxcbm82Y21WaFpEbzZaWEp5YjNJNk9taGhaV1ppWW1KaVl6UTFNalZtTXpFMXpnZHNQR052Y21VNk9tbDBaWEk2T21Ga1lYQjBaWEp6T2pwalxcXG5iM0JwWldRNk9rTnZjR2xsWkR4SlBpQmhjeUJqYjNKbE9qcHBkR1Z5T2pwMGNtRnBkSE02T21sMFpYSmhkRzl5T2pwSmRHVnlZWFJ2Y2pcXFxuNDZPbTVsZUhRNk9tZzNZMk5pWldJd01UQXdOV1kzWVRCanp3YzFZMjl5WlRvNmMzUnlPam84YVcxd2JDQnpkSEkrT2pwemRHRnlkSE5mXFxcbmQybDBhRG82YURrek1HWXhOVFEwTnpka05Ua3hNVFhRQjE4OEptMTFkQ0JKSUdGeklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6bzZaR1xcXG45MVlteGxYMlZ1WkdWa09qcEViM1ZpYkdWRmJtUmxaRWwwWlhKaGRHOXlQam82Ym1WNGRGOWlZV05yT2pwb1lUVXdPRGhrTlRZek9ESmhcXFxuWlRrMVlkRUhOV052Y21VNk9uTjBjam82UEdsdGNHd2djM1J5UGpvNmMzUmhjblJ6WDNkcGRHZzZPbWczWVdNeE56bGpZak13TW1VNE1XXFxcblkyMGdjelkyOXlaVG82YzNSeU9qbzhhVzF3YkNCemRISStPanBsYm1SelgzZHBkR2c2T21oaE1ETm1PR1JqTmpkallUQTBOR0l5MHdkYVxcXG5ZMjl5WlRvNllYSnlZWGs2T2p4cGJYQnNJR052Y21VNk9tOXdjem82YVc1a1pYZzZPa2x1WkdWNFRYVjBQRWsrSUdadmNpQmJWRHNnVGxcXFxuMCtPanBwYm1SbGVGOXRkWFE2T21oaE5ESTBPRFF4TURSa01UZ3lOelV5MUFkVlBHcHpYM041Y3pvNlNXNTBiMGwwWlhJZ1lYTWdZMjl5XFxcblpUbzZhWFJsY2pvNmRISmhhWFJ6T2pwcGRHVnlZWFJ2Y2pvNlNYUmxjbUYwYjNJK09qcHVaWGgwT2pwb09XRXhNR1V6TWpFM1pEWTJaRFxcXG5sak50VUhLblZ5YkRvNmNHRnljMlZ5T2pwSmJuQjFkRG82Ym1WM09qcG9Nek0wWldZNU16WmpORGcwWWpreU1kWUhNblZ5YkRvNmNHRnlcXFxuYzJWeU9qcHBjMTloYzJOcGFWOW9aWGhmWkdsbmFYUTZPbWcxTURNMk1EbGpOVGN6WXpVeVl6WTAxd2RzUEdOdmNtVTZPbWwwWlhJNk9tXFxcbkZrWVhCMFpYSnpPanBqYjNCcFpXUTZPa052Y0dsbFpEeEpQaUJoY3lCamIzSmxPanBwZEdWeU9qcDBjbUZwZEhNNk9tbDBaWEpoZEc5eVxcXG5PanBKZEdWeVlYUnZjajQ2T201bGVIUTZPbWczTUdGbVpEbGlNR1ZsWkRFd1lUVmoyQWMxWTI5eVpUbzZjM1J5T2pvOGFXMXdiQ0J6ZEhcXFxuSStPanB6ZEdGeWRITmZkMmwwYURvNmFEaGlZakExTVdFeVpUaGpaR1UzTVRIWkJ6TmpiM0psT2pwemRISTZPanhwYlhCc0lITjBjajQ2XFxcbk9tVnVaSE5mZDJsMGFEbzZhR05oWldJM00yUmtNMk0zWVdGbU1EUGFCekpoYm5sb2IzYzZPbVZ5Y205eU9qcEZjbkp2Y2tsdGNHdzZPbVxcXG5WeWNtOXlPanBvTURRMk4yWXpaVEV5WWpJeFpURXladHNIU0R4a2JHMWhiR3h2WXpvNmMzbHpPanBUZVhOMFpXMGdZWE1nWkd4dFlXeHNcXFxuYjJNNk9rRnNiRzlqWVhSdmNqNDZPbUZzYkc5ak9qcG9ZV0pqWWpjeVltSTJNR1F4TXpBNE1kd0hRMk52Y21VNk9tWnRkRG82Um05eWJXXFxcbkYwZEdWeU9qcHdZV1JmYVc1MFpXZHlZV3c2T25keWFYUmxYM0J5WldacGVEbzZhRFk1TVRVd1kyTTROakE1WVdVME9HUGRCMHRqYjNKbFxcXG5PanBtYlhRNk9tWnNiMkYwT2pvOGFXMXdiQ0JqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGtnWm05eUlHWTJORDQ2T21adGREbzZhREZqWWpcXFxuUXlOek14WlRNMU16WTJZV0hlQjFnOFlXeHNiMk02T25abFl6bzZhVzUwYjE5cGRHVnlPanBKYm5SdlNYUmxjanhVTEVFK0lHRnpJR052XFxcbmNtVTZPbTl3Y3pvNlpISnZjRG82UkhKdmNENDZPbVJ5YjNBNk9taGlNVE00T1RFMVpqVXpOVE5oTkRBMzN3YzNkMkZ6YlY5aWFXNWtaMlxcXG5WdU9qcGpZWE4wT2pwS2MwTmhjM1E2T21SNWJsOXBiblJ2T2pwb1pXSXdOMk0yT0RreVpHTXhNbUl5TXVBSFFtTnZjbVU2T25CMGNqbzZcXFxuWkhKdmNGOXBibDl3YkdGalpUeHpkR1E2T21sdk9qcGxjbkp2Y2pvNlJYSnliM0krT2pwb01URTFNMlUyWTJJMk9URTRPVGRoWStFSFNEXFxcbnhoYkd4dll6bzZkbVZqT2pwV1pXTThWQ3hCUGlCaGN5QmpiM0psT2pwdmNITTZPbVJ5YjNBNk9rUnliM0ErT2pwa2NtOXdPanBvTVdFM1xcXG5PR0k0WTJJek5USXlaak5sTU9JSE5HTnZjbVU2T25KbGMzVnNkRG82VW1WemRXeDBQRlFzUlQ0Nk9uVnVkM0poY0RvNmFHSTVOVE14TmpcXFxuQTBZbVUzTXpreU9ERGpCMDA4WVd4c2IyTTZPbUZzYkc5ak9qcEhiRzlpWVd3Z1lYTWdZMjl5WlRvNllXeHNiMk02T2tGc2JHOWpZWFJ2XFxcbmNqNDZPbUZzYkc5allYUmxPanBvWm1ZNFpqWTRPRGhsTWpWaVltWmhPT1FIVkR4aGJHeHZZem82WVd4c2IyTTZPa2RzYjJKaGJDQmhjeVxcXG5CamIzSmxPanBoYkd4dll6bzZRV3hzYjJOaGRHOXlQam82WVd4c2IyTmhkR1ZmZW1WeWIyVmtPanBvTXpnell6UXhaalkwTkROak9EZ3hcXFxuWWVVSE9XbHVaR1Y0YldGd09qcHRZWEE2T2tsdVpHVjRUV0Z3UEVzc1ZpeFRQam82YVc1elpYSjBPanBvTm1Jek5UVmpZV0ZoT1dRMFkyXFxcblpsTStZSE9XbHVaR1Y0YldGd09qcHRZWEE2T2tsdVpHVjRUV0Z3UEVzc1ZpeFRQam82YVc1elpYSjBPanBvTlRBNFptTmlaVFZoTVdNeVxcXG5ORFF6WStjSGVUeGtaVzV2WDJOaFkyaGxYMlJwY2pvNmQyRnpiVG82UjJ4dlltRnNTSFIwY0VOaFkyaGxJR0Z6SUhkaGMyMWZZbWx1WkdcXFxuZGxiam82WTI5dWRtVnlkRG82ZEhKaGFYUnpPanBTWldaR2NtOXRWMkZ6YlVGaWFUNDZPbkpsWmw5bWNtOXRYMkZpYVRvNmFEVmhOV1F4XFxcbk9XVmpaRFZqWldWbVlqZm9CM2c4WkdWdWIxOWpZV05vWlY5a2FYSTZPbmRoYzIwNk9reHZZMkZzU0hSMGNFTmhZMmhsSUdGeklIZGhjMlxcXG4xZlltbHVaR2RsYmpvNlkyOXVkbVZ5ZERvNmRISmhhWFJ6T2pwU1pXWkdjbTl0VjJGemJVRmlhVDQ2T25KbFpsOW1jbTl0WDJGaWFUbzZcXFxuYURBek9XUmtaVGsxTVRabE9XWmpaVFBwQjBKamIzSmxPanB3ZEhJNk9tUnliM0JmYVc1ZmNHeGhZMlU4YzNSa09qcHBiem82WlhKeWIzXFxcbkk2T2tWeWNtOXlQam82YURJNFkyWXlOVGxqT1Rsak1UTmtZV2JxQjAwOFlXeHNiMk02T21Gc2JHOWpPanBIYkc5aVlXd2dZWE1nWTI5eVxcXG5aVG82WVd4c2IyTTZPa0ZzYkc5allYUnZjajQ2T21Gc2JHOWpZWFJsT2pwb1ptWTRaalk0T0RobE1qVmlZbVpoT09zSFZEeGhiR3h2WXpcXFxubzZZV3hzYjJNNk9rZHNiMkpoYkNCaGN5QmpiM0psT2pwaGJHeHZZem82UVd4c2IyTmhkRzl5UGpvNllXeHNiMk5oZEdWZmVtVnliMlZrXFxcbk9qcG9Nemd6WXpReFpqWTBORE5qT0RneFlld0hWRHh6WlhKa1pWOXFjMjl1T2pweVpXRmtPanBUYkdsalpWSmxZV1FnWVhNZ2MyVnlaR1xcXG5WZmFuTnZiam82Y21WaFpEbzZVbVZoWkQ0Nk9uQnZjMmwwYVc5dU9qcG9NREkxTmpaaFlXUmxZVFZrTURWaE9PMEhUVHhoYkd4dll6bzZcXFxuWVd4c2IyTTZPa2RzYjJKaGJDQmhjeUJqYjNKbE9qcGhiR3h2WXpvNlFXeHNiMk5oZEc5eVBqbzZZV3hzYjJOaGRHVTZPbWhtWmpobU5qXFxcbmc0T0dVeU5XSmlabUU0N2dkSVBHRnNiRzlqT2pwMlpXTTZPbFpsWXp4VUxFRStJR0Z6SUdOdmNtVTZPbTl3Y3pvNlpISnZjRG82UkhKdlxcXG5jRDQ2T21SeWIzQTZPbWhoT0dRd05HRTBaRFZqTkdJeE9UWTU3d2RiUEdOdmNtVTZPbk4wY2pvNmFYUmxjam82UW5sMFpYTWdZWE1nWTJcXFxuOXlaVG82YVhSbGNqbzZkSEpoYVhSek9qcHBkR1Z5WVhSdmNqbzZTWFJsY21GMGIzSStPanB1WlhoME9qcG9ZalEzTXpVeE0yRTFNR1ZqXFxcbk5UZG1aZkFIVFR4aGJHeHZZem82WVd4c2IyTTZPa2RzYjJKaGJDQmhjeUJqYjNKbE9qcGhiR3h2WXpvNlFXeHNiMk5oZEc5eVBqbzZZV1xcXG54c2IyTmhkR1U2T21obVpqaG1Oamc0T0dVeU5XSmlabUU0OFFkTlBHRnNiRzlqT2pwaGJHeHZZem82UjJ4dlltRnNJR0Z6SUdOdmNtVTZcXFxuT21Gc2JHOWpPanBCYkd4dlkyRjBiM0krT2pwaGJHeHZZMkYwWlRvNmFHWm1PR1kyT0RnNFpUSTFZbUptWVRqeUIxUThZV3hzYjJNNk9tXFxcbkZzYkc5ak9qcEhiRzlpWVd3Z1lYTWdZMjl5WlRvNllXeHNiMk02T2tGc2JHOWpZWFJ2Y2o0Nk9tRnNiRzlqWVhSbFgzcGxjbTlsWkRvNlxcXG5hRE00TTJNME1XWTJORFF6WXpnNE1XSHpCenBqYjNKbE9qcHZjSE02T25KaGJtZGxPanBTWVc1blpVSnZkVzVrY3pvNlkyOXVkR0ZwYm5cXFxuTTZPbWd4TnpGa1lXRTFaR1ZsTWpBMVlqQmk5QWNzWTI5eVpUbzZjMnhwWTJVNk9tbHVaR1Y0T2pweVlXNW5aVG82YUdZME5tWTROREl5XFxcbk1USm1ZV0ZsT1dUMUJ5TjFjbXc2T2xWeWJEbzZjMk5vWlcxbE9qcG9NalUzTWpZNE9UTTFORFEwWTJGa05QWUhUenhoYkd4dll6bzZjbVxcXG5GM1gzWmxZem82VW1GM1ZtVmpQRlFzUVQ0Z1lYTWdZMjl5WlRvNmIzQnpPanBrY205d09qcEVjbTl3UGpvNlpISnZjRG82YURObVptRTFcXFxuTVRrNE0yWTJZakF5WmpuM0IwMDhZV3hzYjJNNk9tRnNiRzlqT2pwSGJHOWlZV3dnWVhNZ1kyOXlaVG82WVd4c2IyTTZPa0ZzYkc5allYXFxcblJ2Y2o0Nk9tRnNiRzlqWVhSbE9qcG9abVk0WmpZNE9EaGxNalZpWW1aaE9QZ0hWRHhoYkd4dll6bzZZV3hzYjJNNk9rZHNiMkpoYkNCaFxcXG5jeUJqYjNKbE9qcGhiR3h2WXpvNlFXeHNiMk5oZEc5eVBqbzZZV3hzYjJOaGRHVmZlbVZ5YjJWa09qcG9Nemd6WXpReFpqWTBORE5qT0RcXFxuZ3hZZmtIV3p4amIzSmxPanB6ZEhJNk9tbDBaWEk2T2tKNWRHVnpJR0Z6SUdOdmNtVTZPbWwwWlhJNk9uUnlZV2wwY3pvNmFYUmxjbUYwXFxcbmIzSTZPa2wwWlhKaGRHOXlQam82Ym1WNGREbzZhR0kwTnpNMU1UTmhOVEJsWXpVM1ptWDZCMDA4WVd4c2IyTTZPbUZzYkc5ak9qcEhiR1xcXG45aVlXd2dZWE1nWTI5eVpUbzZZV3hzYjJNNk9rRnNiRzlqWVhSdmNqNDZPbUZzYkc5allYUmxPanBvWm1ZNFpqWTRPRGhsTWpWaVltWmhcXFxuT1BzSFZEeGhiR3h2WXpvNllXeHNiMk02T2tkc2IySmhiQ0JoY3lCamIzSmxPanBoYkd4dll6bzZRV3hzYjJOaGRHOXlQam82WVd4c2IyXFxcbk5oZEdWZmVtVnliMlZrT2pwb016Z3pZelF4WmpZME5ETmpPRGd4WWZ3SFRUeGhiR3h2WXpvNllXeHNiMk02T2tkc2IySmhiQ0JoY3lCalxcXG5iM0psT2pwaGJHeHZZem82UVd4c2IyTmhkRzl5UGpvNllXeHNiMk5oZEdVNk9taG1aamhtTmpnNE9HVXlOV0ppWm1FNC9RY3ZZMjl5WlRcXFxubzZabTEwT2pwWGNtbDBaVG82ZDNKcGRHVmZZMmhoY2pvNmFESTJObUUzTUdZd1lqVmxNamMzWkREK0IwSmhibmxvYjNjNk9tVnljbTl5XFxcbk9qbzhhVzF3YkNCaGJubG9iM2M2T2tWeWNtOXlQam82Wm5KdmJWOWhaR2h2WXpvNmFEQXpNemhrWmpkbU56Y3pPV0UwWVRqL0IwczhZV1xcXG41NWFHOTNPanBsY25KdmNqbzZSWEp5YjNKSmJYQnNQRVUrSUdGeklHTnZjbVU2T21adGREbzZSR2x6Y0d4aGVUNDZPbVp0ZERvNmFEaG1cXFxuWkRRMk5EZzFOR0V3WWpVek1tR0FDR004Sm0xMWRDQnpaWEprWlY5cWMyOXVPanB6WlhJNk9sTmxjbWxoYkdsNlpYSThWeXhHUGlCaGN5XFxcbkJ6WlhKa1pUbzZjMlZ5T2pwVFpYSnBZV3hwZW1WeVBqbzZjMlZ5YVdGc2FYcGxYM04wY2pvNmFEQTVaakkyTkROaVptWmlOalF5T0dPQlxcXG5DRE5oYkd4dll6bzZZV3hzYjJNNk9rZHNiMkpoYkRvNllXeHNiMk5mYVcxd2JEbzZhREJtWWpWaU5tUmhaRFk1TmpBNE5qZUNDRWc4YzNcXFxuUmtPanB3WVhSb09qcFFZWFJvUW5WbUlHRnpJR052Y21VNk9tTnZiblpsY25RNk9rWnliMjA4SmxRK1BqbzZabkp2YlRvNmFETXdNak5sXFxcbk1qRTRNbUpqWVRjMk9XU0RDRUpvWVhOb1luSnZkMjQ2T25KaGR6bzZVbUYzVkdGaWJHVThWQ3hCUGpvNmQybDBhRjlqWVhCaFkybDBlVlxcXG45cGJqbzZhR1UzTmpBNFlXRXdNR0ptWWpVNFpUV0VDRDVrWlc1dlgyTmhZMmhsWDJScGNqbzZiRzlqWVd3Nk9taGxZV1JsY25OZlkyOXVcXFxuZEdWdWRGOTBlWEJsT2pwb1lqRmtOek16TURBMVpESTNPV013T0lVSVBXUmxibTlmWTJGamFHVmZaR2x5T2pwM1lYTnRPanBIYkc5aVlXXFxcbnhJZEhSd1EyRmphR1U2T201bGR6bzZhRFZsTlROaU9EVXpaall6TkdSaFlUV0dDRDV6WlhKa1pWOTNZWE50WDJKcGJtUm5aVzQ2T25ObFxcXG5jam82VFdGd1UyVnlhV0ZzYVhwbGNqbzZibVYzT2pwb05XTTBPRFkwWldWa1l6TXdOMlZpWkljSUxXRnNiRzlqT2pwMlpXTTZPbFpsWXpcXFxueFVMRUUrT2pwd2RYTm9PanBvWVdSaU9UUmxPRFEwTTJaaU9XVTBOb2dJTTJGc2JHOWpPanBoYkd4dll6bzZSMnh2WW1Gc09qcGhiR3h2XFxcblkxOXBiWEJzT2pwb01HWmlOV0kyWkdGa05qazJNRGcyTjRrSU0yRnNiRzlqT2pwaGJHeHZZem82UjJ4dlltRnNPanBoYkd4dlkxOXBiWFxcXG5Cc09qcG9NR1ppTldJMlpHRmtOamsyTURnMk40b0lTRHh6ZEdRNk9uQmhkR2c2T2xCaGRHaENkV1lnWVhNZ1kyOXlaVG82WTI5dWRtVnlcXFxuZERvNlJuSnZiVHdtVkQ0K09qcG1jbTl0T2pwb1pEQTJZV0kzTURFME1EaGtZV1poWllzSU0yRnNiRzlqT2pwaGJHeHZZem82UjJ4dlltXFxcbkZzT2pwaGJHeHZZMTlwYlhCc09qcG9NR1ppTldJMlpHRmtOamsyTURnMk40d0lOM2RoYzIxZlltbHVaR2RsYmpvNlkyRnpkRG82U25ORFxcXG5ZWE4wT2pwa2VXNWZhVzUwYnpvNmFEQTNNalkzTlRJeE56WTNZbUV5WWpXTkNEZDNZWE50WDJKcGJtUm5aVzQ2T21OaGMzUTZPa3B6UTJcXFxuRnpkRG82WkhsdVgybHVkRzg2T21nMVlURTBZVFZqT0RobE5UUTROakJsamdnellXeHNiMk02T21Gc2JHOWpPanBIYkc5aVlXdzZPbUZzXFxcbmJHOWpYMmx0Y0d3Nk9tZ3dabUkxWWpaa1lXUTJPVFl3T0RZM2p3Z3ZZMjl5WlRvNmMzUnlPam84YVcxd2JDQnpkSEkrT2pweVptbHVaRFxcXG5vNmFHSXlOR0k0TXpreE9HUmlNVFV4TUdhUUNFSjFjbXc2T25CaGNuTmxjam82YVhOZmJtOXliV0ZzYVhwbFpGOTNhVzVrYjNkelgyUnlcXFxuYVhabFgyeGxkSFJsY2pvNmFEZ3haakF4WTJVd01EYzVPV0ZrTUdHUkNETmhiR3h2WXpvNllXeHNiMk02T2tkc2IySmhiRG82WVd4c2IyXFxcbk5mYVcxd2JEbzZhREJtWWpWaU5tUmhaRFk1TmpBNE5qZVNDRE5oYkd4dll6bzZZV3hzYjJNNk9rZHNiMkpoYkRvNllXeHNiMk5mYVcxd1xcXG5iRG82YURCbVlqVmlObVJoWkRZNU5qQTROamVUQ0ROaGJHeHZZem82WVd4c2IyTTZPa2RzYjJKaGJEbzZZV3hzYjJOZmFXMXdiRG82YURcXFxuQm1ZalZpTm1SaFpEWTVOakE0TmplVUNETmhiR3h2WXpvNllXeHNiMk02T2tkc2IySmhiRG82WVd4c2IyTmZhVzF3YkRvNmFEQm1ZalZpXFxcbk5tUmhaRFk1TmpBNE5qZVZDRGh6ZEdRNk9uUm9jbVZoWkRvNlZHaHlaV0ZrU1dRNk9tNWxkem82Wlhob1lYVnpkR1ZrT2pwb1pXUm1ZMlxcXG5GbE9UTmlabUptT0daaFpaWUlKSE4wWkRvNmRHaHlaV0ZrT2pwd1lYSnJPanBvTUdFeVpUUmpZalkwTWpZM05URTNPWmNJTkdGc2JHOWpcXFxuT2pweVlYZGZkbVZqT2pwallYQmhZMmwwZVY5dmRtVnlabXh2ZHpvNmFEQmxPVGd5WXpZNU1Ea3lOMlU1TURPWUNDMWpiM0psT2pwd1lXXFxcbjVwWTJ0cGJtYzZPbkJoYm1salgyWnRkRG82YURKa00yTTFOVGcyTVRjMU1EazRaRG1aQ0VSamIzSmxPanB6YkdsalpUbzZhVzVrWlhnNlxcXG5Pbk5zYVdObFgyVnVaRjlwYm1SbGVGOXZkbVZ5Wm14dmQxOW1ZV2xzT2pwb1kySTVNalZpTW1ZM1lqVXlZekk1WVpvSVpUeG9ZWE5vWW5cXFxuSnZkMjQ2T25ObGREbzZTR0Z6YUZObGREeFVMRk1zUVQ0Z1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBqYjJ4c1pXTjBPanBGXFxcbmVIUmxibVE4VkQ0K09qcGxlSFJsYm1RNk9tZzRaR0psWWpVeVltUXlNV00wTmprd213aGxQR2hoYzJoaWNtOTNiam82YzJWME9qcElZWFxcXG5Ob1UyVjBQRlFzVXl4QlBpQmhjeUJqYjNKbE9qcHBkR1Z5T2pwMGNtRnBkSE02T21OdmJHeGxZM1E2T2tWNGRHVnVaRHhVUGo0Nk9tVjRcXFxuZEdWdVpEbzZhR1UwTURJNVpqRmpZakl6TVdVNFltS2NDREJqYjNKbE9qcHlaWE4xYkhRNk9sSmxjM1ZzZER4VUxFVStPanB2YXpvNmFHXFxcbkl3TXpnNE9XTXdZakprWXpsaVlqaWRDSllCUEdOdmNtVTZPbkpsYzNWc2REbzZVbVZ6ZFd4MFBGUXNSajRnWVhNZ1kyOXlaVG82YjNCelxcXG5PanAwY25sZmRISmhhWFE2T2taeWIyMVNaWE5wWkhWaGJEeGpiM0psT2pweVpYTjFiSFE2T2xKbGMzVnNkRHhqYjNKbE9qcGpiMjUyWlhcXFxuSjBPanBKYm1aaGJHeHBZbXhsTEVVK1BqNDZPbVp5YjIxZmNtVnphV1IxWVd3Nk9taGxPREZsWW1Vd05UZzJPVFEyWVRjem5nZ3NZMjl5XFxcblpUbzZaWEp5YjNJNk9rVnljbTl5T2pwallYVnpaVG82YURFeE5qa3hNalkyWVRkaU1qVTNZVENmQ0N4amIzSmxPanBsY25KdmNqbzZSWFxcXG5KeWIzSTZPbU5oZFhObE9qcG9NMlJqTWpVMk9USTRNbVl3WXpZM1lxQUlMR052Y21VNk9tVnljbTl5T2pwRmNuSnZjam82WTJGMWMyVTZcXFxuT21nMlptRXpPRFV3TWpnM01UZ3hNakEyb1Fnc1kyOXlaVG82WlhKeWIzSTZPa1Z5Y205eU9qcGpZWFZ6WlRvNmFHVXlPRFl6TTJFMk5tXFxcbkZrWWpWbU1UR2lDRUJvWVhOb1luSnZkMjQ2T25KaGR6bzZhVzV1WlhJNk9sSmhkMVJoWW14bFBGUXNRVDQ2T25KbGMyVnlkbVU2T21nNFxcXG5NbUZpT0RKa1pHVmhNakJrTWpneG93aEFhR0Z6YUdKeWIzZHVPanB5WVhjNk9tbHVibVZ5T2pwU1lYZFVZV0pzWlR4VUxFRStPanB5WlhcXFxuTmxjblpsT2pwb016SmxZbVF5WTJZMFpqVTVOVGd4TmFRSVFHaGhjMmhpY205M2JqbzZjbUYzT2pwcGJtNWxjam82VW1GM1ZHRmliR1U4XFxcblZDeEJQam82Y21WelpYSjJaVG82YUdVeE5ESmxPRGt4TVRVNE9EYzBaVGVsQ0Rob1lYTm9Zbkp2ZDI0Nk9uSmhkem82VW1GM1ZHRmliR1xcXG5VOFZDeEJQam82Y21WdGIzWmxPanBvWlRkak1HTTJOV1kxTmpobU9EQTBPS1lJWWp4a1pXNXZYMk5oWTJobFgyUnBjam82WjJ4dlltRnNcXFxuT2pwVmNteFViMFpwYkdWdVlXMWxRMjl1ZG1WeWMybHZia1Z5Y205eUlHRnpJR052Y21VNk9tWnRkRG82UkdWaWRXYytPanBtYlhRNk9tXFxcbmd3WkRZNVpHVTVORFprTVdRd1lqaGxwd2hEYzJWeVpHVmZkMkZ6YlY5aWFXNWtaMlZ1T2pwa1pUbzZSR1Z6WlhKcFlXeHBlbVZ5T2pwcFxcXG5jMTl1ZFd4c2FYTm9PanBvWVRZd01XVmpObUprTm1FMU9XTXlZYWdJTEdOdmNtVTZPbVZ5Y205eU9qcEZjbkp2Y2pvNlkyRjFjMlU2T21cXFxuaGlZVGMzTkdFM05ESXpaRFV3TldFMXFRaGJQR052Y21VNk9uTjBjam82YVhSbGNqbzZRMmhoY25NZ1lYTWdZMjl5WlRvNmFYUmxjam82XFxcbmRISmhhWFJ6T2pwcGRHVnlZWFJ2Y2pvNlNYUmxjbUYwYjNJK09qcHVaWGgwT2pwb01qVmpaalV5Wmpaall6SmxPRFJrWmFvSVBtUmhkR1xcXG5GZmRYSnNPanB0YVcxbE9qcHZibXg1WDJoMGRIQmZkRzlyWlc1ZlkyOWtaVjl3YjJsdWRITTZPbWcwWmpRMFlqVTNNVE5pTURWaE1UUXlcXFxucXdndGNtbHVaem82WkdsblpYTjBPanBEYjI1MFpYaDBPanB1WlhjNk9tZzRNVEZtT0RRMVpXSm1ZV0U0WWpBMnJBZ1JYMTkzWW1sdVpHXFxcbmRsYmw5dFlXeHNiMk90Q0ZzOFkyOXlaVG82YzNSeU9qcHBkR1Z5T2pwRGFHRnljeUJoY3lCamIzSmxPanBwZEdWeU9qcDBjbUZwZEhNNlxcXG5PbWwwWlhKaGRHOXlPanBKZEdWeVlYUnZjajQ2T201bGVIUTZPbWd5TldObU5USm1ObU5qTW1VNE5HUmxyZ2czWVd4c2IyTTZPblpsWXpcXFxubzZWbVZqUEZRc1FUNDZPbVY0ZEdWdVpGOTBjblZ6ZEdWa09qcG9ZekUxTURNd05UVmtPV1kzTTJKbU9hOElPV2hoYzJoaWNtOTNiam82XFxcbmNtRjNPanBTWVhkVVlXSnNaVHhVTEVFK09qcHlaWE5sY25abE9qcG9NRE0zWmpBMU1XWTVPV1l5Tm1WaE5MQUlPV2hoYzJoaWNtOTNialxcXG5vNmNtRjNPanBTWVhkVVlXSnNaVHhVTEVFK09qcHlaWE5sY25abE9qcG9ZMkptTkdNM09UazBaRGRrWmpFelliRUlPV2hoYzJoaWNtOTNcXFxuYmpvNmNtRjNPanBTWVhkVVlXSnNaVHhVTEVFK09qcHlaWE5sY25abE9qcG9aRFJqT0dNM05qa3dPR0V6WVRNeVk3SUlhenhvWVhOb1luXFxcbkp2ZDI0Nk9tMWhjRG82U0dGemFFMWhjRHhMTEZZc1V5eEJQaUJoY3lCamIzSmxPanBwZEdWeU9qcDBjbUZwZEhNNk9tTnZiR3hsWTNRNlxcXG5Pa1Y0ZEdWdVpEd29TeXhXS1Q0K09qcGxlSFJsYm1RNk9taGxPVEZpT1RVNE5HVmtNR1l4T1dSa3N3ZzVhR0Z6YUdKeWIzZHVPanB5WVhcXFxuYzZPbEpoZDFSaFlteGxQRlFzUVQ0Nk9uSmxjMlZ5ZG1VNk9taGxaakl3TUdZeE5HVXlNRGMzTkdNMnRBZzlkMkZ6YlY5aWFXNWtaMlZ1XFxcbk9qcGZYM0owT2pwWFlYTnRVbVZtUTJWc2JEeFVQam82WW05eWNtOTNPanBvT0RVME5XVTFZV016TkRnMU56ZzFNTFVJUFhkaGMyMWZZbVxcXG5sdVpHZGxiam82WDE5eWREbzZWMkZ6YlZKbFprTmxiR3c4VkQ0Nk9tSnZjbkp2ZHpvNmFHTmlPREF4TldVNU5EVTJORGxrWm1HMkNESmpcXFxuYjNKbE9qcDBhVzFsT2pwRWRYSmhkR2x2YmpvNlpuSnZiVjl6WldOek9qcG9PVEJsWmpFM09ETTFZVEkxWWpkaFpMY0lOV052Y21VNk9uXFxcbkpsYzNWc2REbzZVbVZ6ZFd4MFBGUXNSVDQ2T20xaGNGOWxjbkk2T21nd05EZzFNbUU1TVRZd1pHUTFNV015dUFoTFBHRnVlV2h2ZHpvNlxcXG5aWEp5YjNJNk9rVnljbTl5U1cxd2JEeEZQaUJoY3lCamIzSmxPanBtYlhRNk9rUnBjM0JzWVhrK09qcG1iWFE2T21neU1XWXhPREE1TWpcXFxuQmhaRGMyTkRrenVRaExQR0Z1ZVdodmR6bzZaWEp5YjNJNk9rVnljbTl5U1cxd2JEeEZQaUJoY3lCamIzSmxPanBtYlhRNk9rUnBjM0JzXFxcbllYaytPanBtYlhRNk9tZzBNREZpTm1JNU1HWmhaV1V4T0dJMHVnaExQR0Z1ZVdodmR6bzZaWEp5YjNJNk9rVnljbTl5U1cxd2JEeEZQaVxcXG5CaGN5QmpiM0psT2pwbWJYUTZPa1JwYzNCc1lYaytPanBtYlhRNk9tZzBPR1poTW1NMlkyUTNPRGsxTW1KaHV3aExQR0Z1ZVdodmR6bzZcXFxuWlhKeWIzSTZPa1Z5Y205eVNXMXdiRHhGUGlCaGN5QmpiM0psT2pwbWJYUTZPa1JwYzNCc1lYaytPanBtYlhRNk9tZzJObUZqTWpObVpUXFxcblZqTVdZNE1qQmp2QWcrYUdGemFHSnliM2R1T2pweVlYYzZPbEpoZDFSaFlteGxQRlFzUVQ0Nk9tWnlaV1ZmWW5WamEyVjBjem82YURneFxcXG5ZV1psTnpsaFlXTXdZekJtWTJTOUNENW9ZWE5vWW5KdmQyNDZPbkpoZHpvNlVtRjNWR0ZpYkdVOFZDeEJQam82Wm5KbFpWOWlkV05yWlhcXFxuUnpPanBvWVRJMU1USXdaRGcxWmpneU16Z3pZcjRJUG1oaGMyaGljbTkzYmpvNmNtRjNPanBTWVhkVVlXSnNaVHhVTEVFK09qcG1jbVZsXFxcblgySjFZMnRsZEhNNk9taGlabUkzTkRZeE9UYzVZakZsTXpjenZ3ZythR0Z6YUdKeWIzZHVPanB5WVhjNk9sSmhkMVJoWW14bFBGUXNRVFxcXG40Nk9tWnlaV1ZmWW5WamEyVjBjem82YURobE5UazJaRGRtWkdNNE9HUTBNRG5BQ0RscGJtUmxlRzFoY0RvNmJXRndPanBKYm1SbGVFMWhcXFxuY0R4TExGWXNVejQ2T21sdWMyVnlkRG82YUdNMllUazNNbU0xTkRoaE9EUm1PRFRCQ0Vkb1lYTm9Zbkp2ZDI0Nk9uSmhkem82YVc1dVpYXFxcbkk2T2xKaGQxUmhZbXhsU1c1dVpYSThRVDQ2T25ObGRGOWpkSEpzWDJneU9qcG9NV000WW1RM00yVmlNemxqWldOaFk4SUlTbk5sY21SbFxcXG5YM2RoYzIxZlltbHVaR2RsYmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2pvNllYTmZiMkpxWldOMFgyVnVkSEpwWlhNNk9taGhPV1kzTTJcXFxuVTJaRFE1WXpkaFpHRmt3d2czYzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BqbzZibVYzT2pwb09ESXhaVFUwXFxcbk9HRXlNV1ZqTWpGbVpjUUlOM05sY21SbFgycHpiMjQ2T21SbE9qcEVaWE5sY21saGJHbDZaWEk4VWo0Nk9tNWxkem82YUdVMlpHWmlNRFxcXG5CaE1qZzFNakJrTW1MRkNIaGpiM0psT2pwcGRHVnlPanB5WVc1blpUbzZQR2x0Y0d3Z1kyOXlaVG82YVhSbGNqbzZkSEpoYVhSek9qcHBcXFxuZEdWeVlYUnZjam82U1hSbGNtRjBiM0lnWm05eUlHTnZjbVU2T205d2N6bzZjbUZ1WjJVNk9sSmhibWRsUEVFK1BqbzZibVY0ZERvNmFEXFxcbkl6TkRFM01HVmlaalE1WWpVMVptWEdDREoxY213Nk9uQmhjbk5sY2pvNlNXNXdkWFE2T25Od2JHbDBYMlpwY25OME9qcG9OMlU1WlRBMVxcXG5NekJpTVRJd056Tmxac2NJWlR4amIzSmxPanB2Y0hNNk9uSmhibWRsT2pwU1lXNW5aVVp5YjIwOGRYTnBlbVUrSUdGeklHTnZjbVU2T25cXFxuTnNhV05sT2pwcGJtUmxlRG82VTJ4cFkyVkpibVJsZUR4YlZGMCtQam82YVc1a1pYZzZPbWc1WlRObU5XTmtObVZtTVRkallUSmp5QWd4XFxcbmFXUnVZVG82Y0hWdWVXTnZaR1U2T25aaGJIVmxYM1J2WDJScFoybDBPanBvTjJObE4yRmtNRE0xT0Roa1lqRTNNY2tJTDNObGNtUmxPalxcXG5wa1pUbzZjMmw2WlY5b2FXNTBPanBvWld4d1pYSTZPbWd5TlRBMU1UY3hOamc1Tm1Rek9HVXh5Z2hoUEdOdmNtVTZPbU5vWVhJNk9sUnZcXFxuVEc5M1pYSmpZWE5sSUdGeklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6bzZhWFJsY21GMGIzSTZPa2wwWlhKaGRHOXlQam82YzJsNlpWXFxcbjlvYVc1ME9qcG9ZelU0Tm1JMU5ERmpNakl3T0RNMlpjc0lMR052Y21VNk9tWnRkRG82Um05eWJXRjBkR1Z5T2pwdVpYYzZPbWc0T1RFMFxcXG5ZbVZtT1dOaU16TXpNalF3ekFnL2FXNWtaWGh0WVhBNk9tMWhjRG82U1c1a1pYaE5ZWEE4U3l4V0xGTStPanBqYjI1MFlXbHVjMTlyWlhcXFxuazZPbWd4TnpWbE5qVmlaams0TnpFd05UTXh6UWhvWTI5eVpUbzZiM0J6T2pwbWRXNWpkR2x2YmpvNmFXMXdiSE02T2p4cGJYQnNJR052XFxcbmNtVTZPbTl3Y3pvNlpuVnVZM1JwYjI0Nk9rWnVUWFYwUEVFK0lHWnZjaUFtYlhWMElFWStPanBqWVd4c1gyMTFkRG82YUdVek0yRXdOelxcXG5JNE1ESTNNVGhqWVdQT0NENXpaWEprWlY5cWMyOXVPanBrWlRvNlJHVnpaWEpwWVd4cGVtVnlQRkkrT2pwd1pXVnJYMlZ5Y205eU9qcG9cXFxuWkdGaE5Ea3hPV0l6TTJNMFlXWTJZYzhJT1hObGNtUmxYMnB6YjI0Nk9tUmxPanBFWlhObGNtbGhiR2w2WlhJOFVqNDZPbVZ5Y205eU9qXFxcbnBvWWpnNE5HUTRaR016TlRJNU1XVmtZdEFJWUR4emRHUTZPbU52Ykd4bFkzUnBiMjV6T2pwb1lYTm9PanB0WVhBNk9sSmhibVJ2YlZOMFxcXG5ZWFJsSUdGeklHTnZjbVU2T21SbFptRjFiSFE2T2tSbFptRjFiSFErT2pwa1pXWmhkV3gwT2pwb01tUmlPR1l5WWpVME1XWTJORGN6T05cXFxuRUlSWE5sY21SbFgzZGhjMjFmWW1sdVpHZGxiam82WkdVNk9rUmxjMlZ5YVdGc2FYcGxjam82YVc1MllXeHBaRjkwZVhCbE9qcG9NRFZqXFxcblpqSTBPVEZqWkdabE9EQTVNZElJUlhObGNtUmxYM2RoYzIxZlltbHVaR2RsYmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2pvNmFXNTJZV1xcXG54cFpGOTBlWEJsT2pwb016ZzVObVkxTVRCak1ERTVOV1ZsTU5NSUwzTmxjbVJsWDNkaGMyMWZZbWx1WkdkbGJqbzZkRzlmZG1Gc2RXVTZcXFxuT21nNU5UWXlNVGxpTVRrM1pUTTJOemRpMUFoZ1BITjBaRG82WTI5c2JHVmpkR2x2Ym5NNk9taGhjMmc2T20xaGNEbzZSR1ZtWVhWc2RFXFxcbmhoYzJobGNpQmhjeUJqYjNKbE9qcG9ZWE5vT2pwSVlYTm9aWEkrT2pwM2NtbDBaVjl6ZEhJNk9tZ3pPV1ZoTVRrNE0yRXdaR1ptTWpKbVxcXG4xUWcyWVd4c2IyTTZPblpsWXpvNlZtVmpQRlFzUVQ0Nk9uSmxjMlZ5ZG1WZlpYaGhZM1E2T21nd00yTTRaRE5qWWpZMU5qRTJNV0kwMWdcXFxuZzJZV3hzYjJNNk9uWmxZem82Vm1WalBGUXNRVDQ2T25KbGMyVnlkbVZmWlhoaFkzUTZPbWcxTkRsbFlqUmxOakl4WmpVeU0yRXoxd2cyXFxcbllXeHNiMk02T25abFl6bzZWbVZqUEZRc1FUNDZPbkpsYzJWeWRtVmZaWGhoWTNRNk9taG1NamxrWm1OaU1qY3hObVV3TjJGaTJBZ3hZV1xcXG54c2IyTTZPbk41Ym1NNk9rRnlZenhVUGpvNlpISnZjRjl6Ykc5M09qcG9OMlkxWmprNFpUSXdNbU5rTVdVeVk5a0lTRHhoYkd4dll6bzZcXFxuYzNsdVl6bzZWMlZoYXp4VVBpQmhjeUJqYjNKbE9qcHZjSE02T21SeWIzQTZPa1J5YjNBK09qcGtjbTl3T2pwb05HVm1ZVEU1WlRrek9XXFxcbk0zTXpsaFp0b0lQbWhoYzJoaWNtOTNiam82YldGd09qcElZWE5vVFdGd1BFc3NWaXhUTEVFK09qcG5aWFJmYVc1dVpYSTZPbWhtTmpBeFxcXG5OVFkwTUdWalpHUXhOVGxtMndoVmFHRnphR0p5YjNkdU9qcHlZWGM2T21sdWJtVnlPanBTWVhkVVlXSnNaVWx1Ym1WeVBFRStPanBtYVdcXFxuNWtYMmx1YzJWeWRGOXpiRzkwWDJsdVgyZHliM1Z3T2pwb01qUTVORE16T0RNMFpEZ3pZV001WTl3SVRqeHpaWEprWlY5M1lYTnRYMkpwXFxcbmJtUm5aVzQ2T21WeWNtOXlPanBGY25KdmNpQmhjeUJqYjNKbE9qcG1iWFE2T2tSbFluVm5Qam82Wm0xME9qcG9ZVFZoTlRabE1XWTFaV1xcXG5NNU4ySTNZdDBJUG5ObGNtUmxYMnB6YjI0Nk9tUmxPanBFWlhObGNtbGhiR2w2WlhJOFVqNDZPbkJsWld0ZlpYSnliM0k2T21nek5qQmpcXFxuTTJKaE1tSTNZelptWldVeDNnaEFjMlZ5WkdWZmFuTnZiam82WkdVNk9rUmxjMlZ5YVdGc2FYcGxjanhTUGpvNmNHVmxhMTl2Y2w5dWRXXFxcbnhzT2pwb1pqSXlZVGhtTmpKallUZzVOek0yT044SU9YTmxjbVJsWDJwemIyNDZPbVJsT2pwRVpYTmxjbWxoYkdsNlpYSThVajQ2T21WeVxcXG5jbTl5T2pwb1pEQmtNelprTlRKak1XTXlOREUxTitBSUtuTmxjbVJsWDJwemIyNDZPbkpsWVdRNk9tVnljbTl5T2pwb1lqSTNaR05sTVRcXFxuaGxPRFJqWXpaak5PRUlNRHdtVkNCaGN5QmpiM0psT2pwbWJYUTZPa1JsWW5WblBqbzZabTEwT2pwb1kyUXpNRGcxWW1Nek5EQTFOVFl5XFxcblkrSUlTRHhoYkd4dll6bzZjM2x1WXpvNlYyVmhhenhVUGlCaGN5QmpiM0psT2pwdmNITTZPbVJ5YjNBNk9rUnliM0ErT2pwa2NtOXdPalxcXG5wb01UUXhZell6TnpRNE5XWXdNamxtTWVNSVBtRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBqbzZZM1Z5Y21WdWRGOXRcXFxuWlcxdmNuazZPbWhsTW1NNU1HWmxOalExTnpCbE1qUTQ1QWd3UENaVUlHRnpJR052Y21VNk9tWnRkRG82UkdWaWRXYytPanBtYlhRNk9tXFxcbmhtWWpBeFltSTJPRFkzWVRBME4yRm01UWcwWTI5eVpUbzZjbVZ6ZFd4ME9qcFNaWE4xYkhROFZDeEZQam82ZFc1M2NtRndPanBvWVRaalxcXG5Namc1WXpJMU1tUTNOR0l6WStZSVh6eGhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWNnWVhNZ1kyOXlaVG82YVhSbGNqbzZkSEpoYVhcXFxuUnpPanBqYjJ4c1pXTjBPanBGZUhSbGJtUThZMmhoY2o0K09qcGxlSFJsYm1RNk9taG1OVGc0WVdOa01EVXpNRGt3TXpoazV3aFBZMjl5XFxcblpUbzZjMnhwWTJVNk9uTnZjblE2T20xbGNtZGxYM052Y25RNk9rSjFaa2QxWVhKa1BGUXNSV3hsYlVSbFlXeHNiMk5HUGpvNmJtVjNPalxcXG5wb1l6Sm1aR00yTWpNMk1USXpZall3WStnSUtHbGtibUU2T21SdmJXRnBibDkwYjE5aGMyTnBhVG82YURBNE1qSTRNbU15WldabU5ETTRcXFxuTkRqcENGZGpiM0psT2pwemJHbGpaVG82YVc1a1pYZzZPanhwYlhCc0lHTnZjbVU2T205d2N6bzZhVzVrWlhnNk9rbHVaR1Y0UEVrK0lHXFxcblp2Y2lCYlZGMCtPanBwYm1SbGVEbzZhRGMxTm1Ka09XVXhZamMzWm1RNU9XUHFDRTA4YzNSa09qcDBhSEpsWVdRNk9teHZZMkZzT2pwQlxcXG5ZMk5sYzNORmNuSnZjaUJoY3lCamIzSmxPanBtYlhRNk9rUmxZblZuUGpvNlptMTBPanBvT1RjM05UUm1OVFJtT1RsbE1HVTVOT3NJTURcXFxud21WQ0JoY3lCamIzSmxPanBtYlhRNk9rUmxZblZuUGpvNlptMTBPanBvWWpKbE5qRTBaV1kzWkRVM01UVXpNZXdJTkdOdmNtVTZPbVp0XFxcbmREbzZSbTl5YldGMGRHVnlPanBrWldKMVoxOTBkWEJzWlRvNmFHVTFOREJoWldJMk0yVTNNVFk0TURYdENHVThZMjl5WlRvNmIzQnpPalxcXG5weVlXNW5aVG82VW1GdVoyVkdjbTl0UEhWemFYcGxQaUJoY3lCamIzSmxPanB6YkdsalpUbzZhVzVrWlhnNk9sTnNhV05sU1c1a1pYZzhcXFxuVzFSZFBqNDZPbWx1WkdWNE9qcG9aakF3WVRWbE9HTmpPRFUxTldGaVkrNElTR052Y21VNk9tOXdjem82Wm5WdVkzUnBiMjQ2T2tadVQyXFxcbjVqWlRvNlkyRnNiRjl2Ym1ObGUzdDJkR0ZpYkdVdWMyaHBiWDE5T2pwb01tWXhaamN5TUdZMVltUXdabU5sTis4SVNHTnZjbVU2T205d1xcXG5jem82Wm5WdVkzUnBiMjQ2T2tadVQyNWpaVG82WTJGc2JGOXZibU5sZTN0MmRHRmliR1V1YzJocGJYMTlPanBvTTJKbU5qWXhOR0V5TWpcXFxuSTRZalJqTXZBSVNHTnZjbVU2T205d2N6bzZablZ1WTNScGIyNDZPa1p1VDI1alpUbzZZMkZzYkY5dmJtTmxlM3QyZEdGaWJHVXVjMmhwXFxcbmJYMTlPanBvT0dKa05XVmxZelkyTnpZd05URmpaUEVJU0dOdmNtVTZPbTl3Y3pvNlpuVnVZM1JwYjI0Nk9rWnVUMjVqWlRvNlkyRnNiRlxcXG45dmJtTmxlM3QyZEdGaWJHVXVjMmhwYlgxOU9qcG9aVEV5T1RWaFpqUTJOemxrWVdGa01mSUlRR0ZzYkc5ak9qcHlZWGRmZG1Wak9qcFNcXFxuWVhkV1pXTThWQ3hCUGpvNmNtVnpaWEoyWlY5bWIzSmZjSFZ6YURvNmFEWTBPRFEwTlRKaVpHTXlZelppTUdQekNFNWhiR3h2WXpvNmNtXFxcbkYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDQ2T25KbGMyVnlkbVU2T21SdlgzSmxjMlZ5ZG1WZllXNWtYMmhoYm1Sc1pUbzZhRGhpTmpKbVxcXG5NRFZrTVRabVlXRTROR1gwQ0VCaGJHeHZZem82Y21GM1gzWmxZem82VW1GM1ZtVmpQRlFzUVQ0Nk9uSmxjMlZ5ZG1WZlptOXlYM0IxYzJcXFxuZzZPbWcxWldZd01tRTJZV1V5T0dZeVlXTXo5UWhBWVd4c2IyTTZPbkpoZDE5MlpXTTZPbEpoZDFabFl6eFVMRUUrT2pweVpYTmxjblpsXFxcblgyWnZjbDl3ZFhOb09qcG9aR1JoTkRWaVpHTmxOelV5TVRaa1pmWUlRR0ZzYkc5ak9qcHlZWGRmZG1Wak9qcFNZWGRXWldNOFZDeEJQalxcXG5vNmNtVnpaWEoyWlY5bWIzSmZjSFZ6YURvNmFHVmtNbU5tWVRrNU4ySXhOMlJsTUdiM0NIdzhZV3hzYjJNNk9uWmxZem82Vm1WalBGUXNcXFxuUVQ0Z1lYTWdZV3hzYjJNNk9uWmxZem82YzNCbFkxOWxlSFJsYm1RNk9sTndaV05GZUhSbGJtUThKbFFzWTI5eVpUbzZjMnhwWTJVNk9tXFxcbmwwWlhJNk9rbDBaWEk4VkQ0K1BqbzZjM0JsWTE5bGVIUmxibVE2T21oa05UUm1NVEJpT0daaE56QXdaR05tK0FoQVlXeHNiMk02T25KaFxcXG5kMTkyWldNNk9sSmhkMVpsWXp4VUxFRStPanB5WlhObGNuWmxYMlp2Y2w5d2RYTm9PanBvTXpjd09UbGxNVFpsTmpRNE9UVTRNL2tJVG1cXFxuRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBqbzZjbVZ6WlhKMlpUbzZaRzlmY21WelpYSjJaVjloYm1SZmFHRnVaR3hsXFxcbk9qcG9ZV0ZqTW1VM09USXdNV0ZoWTJOaE9mb0lmRHhoYkd4dll6bzZkbVZqT2pwV1pXTThWQ3hCUGlCaGN5QmhiR3h2WXpvNmRtVmpPalxcXG5wemNHVmpYMlY0ZEdWdVpEbzZVM0JsWTBWNGRHVnVaRHdtVkN4amIzSmxPanB6YkdsalpUbzZhWFJsY2pvNlNYUmxjanhVUGo0K09qcHpcXFxuY0dWalgyVjRkR1Z1WkRvNmFHVmtaRE5pTXpGbVpqUTFOek00TURMN0NFQmhiR3h2WXpvNmNtRjNYM1psWXpvNlVtRjNWbVZqUEZRc1FUXFxcbjQ2T25KbGMyVnlkbVZmWm05eVgzQjFjMmc2T21nMFpqUmlZV1l3Tmpoa1ltTTNOamhrL0FoT1lXeHNiMk02T25KaGQxOTJaV002T2xKaFxcXG5kMVpsWXp4VUxFRStPanB5WlhObGNuWmxPanBrYjE5eVpYTmxjblpsWDJGdVpGOW9ZVzVrYkdVNk9tZ3lOMlV3WWpkak1XVmtNemd3TVdcXFxuWXovUWd6YzJWeVpHVmZhbk52YmpvNlpYSnliM0k2T2tWeWNtOXlPanB6ZVc1MFlYZzZPbWd6T1RRNE56a3pORFZsWXprMk5HSmovZ2hBXFxcbllXeHNiMk02T25KaGQxOTJaV002T2xKaGQxWmxZenhVTEVFK09qcHlaWE5sY25abFgyWnZjbDl3ZFhOb09qcG9PREJrWWpNeE5EWmxNV1xcXG5SbE5HVTNZLzhJUW1OdmNtVTZPbWwwWlhJNk9uUnlZV2wwY3pvNmFYUmxjbUYwYjNJNk9rbDBaWEpoZEc5eU9qcGpiMnhzWldOME9qcG9cXFxuTXpKak9XTXlObUl5TkdFNFpEY3haWUFKZkR4aGJHeHZZem82ZG1Wak9qcFdaV004VkN4QlBpQmhjeUJoYkd4dll6bzZkbVZqT2pwemNHXFxcblZqWDJWNGRHVnVaRG82VTNCbFkwVjRkR1Z1WkR3bVZDeGpiM0psT2pwemJHbGpaVG82YVhSbGNqbzZTWFJsY2p4VVBqNCtPanB6Y0dWalxcXG5YMlY0ZEdWdVpEbzZhRE16WVRkbU9HWTJZbUpoTm1aaU5tV0JDVTVoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDQ2T25cXFxuSmxjMlZ5ZG1VNk9tUnZYM0psYzJWeWRtVmZZVzVrWDJoaGJtUnNaVG82YUdWbU1qUXlZbVUxTVdSbE9ERm1aak9DQ1VCaGJHeHZZem82XFxcbmNtRjNYM1psWXpvNlVtRjNWbVZqUEZRc1FUNDZPbkpsYzJWeWRtVmZabTl5WDNCMWMyZzZPbWhrTnpRNVlUaGxNemhrTkRjd01UWTJnd1xcXG5sQVlXeHNiMk02T25KaGQxOTJaV002T2xKaGQxWmxZenhVTEVFK09qcHlaWE5sY25abFgyWnZjbDl3ZFhOb09qcG9aVE5pT1dGaU5HRmpcXFxuWldObE1HUTVPSVFKSzJSaGRHRmZkWEpzT2pwd1pYSmpaVzUwWDJWdVkyOWtaVG82YUdWbE0yWmxZV0l6TlRsaFpHUTBPREdGQ1dVOFkyXFxcbjl5WlRvNmIzQnpPanB5WVc1blpUbzZVbUZ1WjJWR2NtOXRQSFZ6YVhwbFBpQmhjeUJqYjNKbE9qcHpiR2xqWlRvNmFXNWtaWGc2T2xOc1xcXG5hV05sU1c1a1pYZzhXMVJkUGo0Nk9tbHVaR1Y0T2pwb05Ua3daR0pqTWpJME5XRXpOalEwT1lZSmZEeGhiR3h2WXpvNmRtVmpPanBXWldcXFxuTThWQ3hCUGlCaGN5QmhiR3h2WXpvNmRtVmpPanB6Y0dWalgyVjRkR1Z1WkRvNlUzQmxZMFY0ZEdWdVpEd21WQ3hqYjNKbE9qcHpiR2xqXFxcblpUbzZhWFJsY2pvNlNYUmxjanhVUGo0K09qcHpjR1ZqWDJWNGRHVnVaRG82YURkbE0yWTRORGN3TUdKallqbGhZV1dIQ1VCaGJHeHZZelxcXG5vNmNtRjNYM1psWXpvNlVtRjNWbVZqUEZRc1FUNDZPbkpsYzJWeWRtVmZabTl5WDNCMWMyZzZPbWcwWTJZMlpXRTBaamd5WlRJNE4yVm1cXFxuaUFsT1lXeHNiMk02T25KaGQxOTJaV002T2xKaGQxWmxZenhVTEVFK09qcHlaWE5sY25abE9qcGtiMTl5WlhObGNuWmxYMkZ1WkY5b1lXXFxcbjVrYkdVNk9tZzRPR0kwTUdNMk1ETTNPRFUxWlRBemlRbE9ZV3hzYjJNNk9uSmhkMTkyWldNNk9sSmhkMVpsWXp4VUxFRStPanB5WlhObFxcXG5jblpsT2pwa2IxOXlaWE5sY25abFgyRnVaRjlvWVc1a2JHVTZPbWczT0ROa01UazVOelV3TkdOaFlqSTRpZ2xBWVd4c2IyTTZPbkpoZDFcXFxuOTJaV002T2xKaGQxWmxZenhVTEVFK09qcHlaWE5sY25abFgyWnZjbDl3ZFhOb09qcG9PR1JsTmpsbU9UVmhPVFExTlRObVpJc0pTRHhqXFxcbmIzSmxPanB2Y0hScGIyNDZPazl3ZEdsdmJqeFVQaUJoY3lCamIzSmxPanBqYlhBNk9sQmhjblJwWVd4RmNUNDZPbVZ4T2pwb05XVXdOV1xcXG5GbFpERTFNbU16WkRBNU5vd0pMM1Z5YkRvNmNHRnljMlZ5T2pwSmJuQjFkRG82YVhOZlpXMXdkSGs2T21oaU1qRmpaak0xTUdaaFkyUTFcXFxuTjJFempRa3lkWEpzT2pwd1lYSnpaWEk2T2tsdWNIVjBPanB6ZEdGeWRITmZkMmwwYURvNmFEZG1aakpqTm1ObVlUTmxORFl5WW1HT0NVXFxcbkJoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDQ2T25KbGMyVnlkbVZmWm05eVgzQjFjMmc2T21neU5qVTBORGcyWXpNMFxcXG5NekUwT1dKaWp3bEFZV3hzYjJNNk9uSmhkMTkyWldNNk9sSmhkMVpsWXp4VUxFRStPanB5WlhObGNuWmxYMlp2Y2w5d2RYTm9PanBvTW1cXFxuVmpZVGs0TVRJeE1UUTJZak01TVpBSlRtRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBqbzZjbVZ6WlhKMlpUbzZaRzlmXFxcbmNtVnpaWEoyWlY5aGJtUmZhR0Z1Wkd4bE9qcG9NelUzTkRsa1ltVTNaakE1WXprMFk1RUpUbUZzYkc5ak9qcHlZWGRmZG1Wak9qcFNZWFxcXG5kV1pXTThWQ3hCUGpvNmNtVnpaWEoyWlRvNlpHOWZjbVZ6WlhKMlpWOWhibVJmYUdGdVpHeGxPanBvT1RNNU0yUTJZVE13Tmpaa1pUZG1cXFxuTVpJSmhnRnBaRzVoT2pwMWRITTBOam82UEdsdGNHd2dZMjl5WlRvNlkyOXVkbVZ5ZERvNlJuSnZiVHhwWkc1aE9qcDFkSE0wTmpvNlJYXFxcbkp5YjNKelBpQm1iM0lnWTI5eVpUbzZjbVZ6ZFd4ME9qcFNaWE4xYkhROEtDa3NhV1J1WVRvNmRYUnpORFk2T2tWeWNtOXljejQrT2pwbVxcXG5jbTl0T2pwb05ETmpZVEUzTkdWaU9EWTRPV0ZrWXBNSmZEeGhiR3h2WXpvNmRtVmpPanBXWldNOFZDeEJQaUJoY3lCaGJHeHZZem82ZG1cXFxuVmpPanB6Y0dWalgyVjRkR1Z1WkRvNlUzQmxZMFY0ZEdWdVpEd21WQ3hqYjNKbE9qcHpiR2xqWlRvNmFYUmxjam82U1hSbGNqeFVQajQrXFxcbk9qcHpjR1ZqWDJWNGRHVnVaRG82YURSak56SmlOMlZtWTJFMk1tUTJZV09VQ1U1aGJHeHZZem82Y21GM1gzWmxZem82VW1GM1ZtVmpQRlxcXG5Rc1FUNDZPbkpsYzJWeWRtVTZPbVJ2WDNKbGMyVnlkbVZmWVc1a1gyaGhibVJzWlRvNmFETXdZakEzWldSaFpHUmpZVGd3WVdLVkNVQmhcXFxuYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDQ2T25KbGMyVnlkbVZmWm05eVgzQjFjMmc2T21nNFptSmpPR0U0TVRrNVpHXFxcblJqWkRZM2xnbDhQR0ZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrSUdGeklHRnNiRzlqT2pwMlpXTTZPbk53WldOZlpYaDBaVzVrT2pwVFxcXG5jR1ZqUlhoMFpXNWtQQ1pVTEdOdmNtVTZPbk5zYVdObE9qcHBkR1Z5T2pwSmRHVnlQRlErUGo0Nk9uTndaV05mWlhoMFpXNWtPanBvTVdcXFxuRTRaV1ZoWVdKbE5ESTFaRE0wT1pjSlRtRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBqbzZjbVZ6WlhKMlpUbzZaRzlmXFxcbmNtVnpaWEoyWlY5aGJtUmZhR0Z1Wkd4bE9qcG9NakptTXpZeU56WmtOVFl3WmpBNVpwZ0pRR0ZzYkc5ak9qcHlZWGRmZG1Wak9qcFNZWFxcXG5kV1pXTThWQ3hCUGpvNmNtVnpaWEoyWlY5bWIzSmZjSFZ6YURvNmFERXdOR0kwWlRFMFlqRXhNRGczTW1HWkNTcHpaWEprWlY5cWMyOXVcXFxuT2pwelpYSTZPbWx1WkdWdWREbzZhR0ZpT0dRek5qbGxNRGhsWmpVNU4yT2FDU0oxY213Nk9sVnliRG82Y0dGeWMyVTZPbWhtTnpBMU9XXFxcblk0WWpRek5tWm1NekkxbXdrdGMzUmtPanBwYnpvNlpYSnliM0k2T2tWeWNtOXlPanB1WlhjNk9taGxOelk1WlRreE1tSTRORGc1TW1RNVxcXG5uQWxJWTI5eVpUbzZiM0J6T2pwbWRXNWpkR2x2YmpvNlJtNVBibU5sT2pwallXeHNYMjl1WTJWN2UzWjBZV0pzWlM1emFHbHRmWDA2T21cXFxuZzJNV1UwWmpaak1UTmlNVGt4WmpRM25RbElZMjl5WlRvNmIzQnpPanBtZFc1amRHbHZiam82Um01UGJtTmxPanBqWVd4c1gyOXVZMlY3XFxcbmUzWjBZV0pzWlM1emFHbHRmWDA2T21nM01UUXlaVE5oTkdNME1qTTFZamhsbmdsSVkyOXlaVG82YjNCek9qcG1kVzVqZEdsdmJqbzZSbVxcXG41UGJtTmxPanBqWVd4c1gyOXVZMlY3ZTNaMFlXSnNaUzV6YUdsdGZYMDZPbWc0WkRJNVpUQXhaR1k1Tmpsa056SXhud2xJWTI5eVpUbzZcXFxuYjNCek9qcG1kVzVqZEdsdmJqbzZSbTVQYm1ObE9qcGpZV3hzWDI5dVkyVjdlM1owWVdKc1pTNXphR2x0ZlgwNk9taGhNekF3WkRZNFlqXFxcbkpqTm1VM1ltTTJvQWxJWTI5eVpUbzZiM0J6T2pwbWRXNWpkR2x2YmpvNlJtNVBibU5sT2pwallXeHNYMjl1WTJWN2UzWjBZV0pzWlM1elxcXG5hR2x0ZlgwNk9taGpOamM0TkRCaE5qRmhPR1V5Tm1NNW9RbElZMjl5WlRvNmIzQnpPanBtZFc1amRHbHZiam82Um01UGJtTmxPanBqWVdcXFxueHNYMjl1WTJWN2UzWjBZV0pzWlM1emFHbHRmWDA2T21oalpEQXdaV0V5WTJJM09UWmtOemczb2dsSVkyOXlaVG82YjNCek9qcG1kVzVqXFxcbmRHbHZiam82Um01UGJtTmxPanBqWVd4c1gyOXVZMlY3ZTNaMFlXSnNaUzV6YUdsdGZYMDZPbWhsWXpRNU16SXpaREJoWXpoaE4yUTRvd1xcXG5sSVkyOXlaVG82YjNCek9qcG1kVzVqZEdsdmJqbzZSbTVQYm1ObE9qcGpZV3hzWDI5dVkyVjdlM1owWVdKc1pTNXphR2x0ZlgwNk9taG1cXFxuTkROa09HUTNOVE14TldGbE1tRXdwQWxsUEhObGNtUmxYMnB6YjI0Nk9uTmxjam82VUhKbGRIUjVSbTl5YldGMGRHVnlJR0Z6SUhObGNtXFxcblJsWDJwemIyNDZPbk5sY2pvNlJtOXliV0YwZEdWeVBqbzZZbVZuYVc1ZmIySnFaV04wWDJ0bGVUbzZhR0ZsTXprMk0yUTRNbUl3WkdJNVxcXG5OVGVsQ1VOcGJtUmxlRzFoY0RvNmJXRndPanBKYm1SbGVFMWhjRHhMTEZZc1V6NDZPbk4zWVhCZmNtVnRiM1psWDJaMWJHdzZPbWhpTWpcXFxuTXhZMll3Tnpsa1l6RmpaalZocGdsTGFHRnphR0p5YjNkdU9qcHlZWGM2T21sdWJtVnlPanBTWVhkVVlXSnNaVWx1Ym1WeVBFRStPanBtXFxcbmFYaGZhVzV6WlhKMFgzTnNiM1E2T21neE5EazNaakJsWVRaa01EUmlNelUwcHdrOWNHRnlhMmx1WjE5c2IzUmZZMjl5WlRvNmMzQnBiblxcXG5kaGFYUTZPbE53YVc1WFlXbDBPanB6Y0dsdU9qcG9OV1JrTURjeFl6azFORFEzTkRnME42Z0pQbUZzYkc5ak9qcHlZWGRmZG1Wak9qcFNcXFxuWVhkV1pXTThWQ3hCUGpvNlkzVnljbVZ1ZEY5dFpXMXZjbms2T21nM09HRTRPRGM1WkRjek4yRXlOREF4cVFrK1lXeHNiMk02T25KaGQxXFxcbjkyWldNNk9sSmhkMVpsWXp4VUxFRStPanBqZFhKeVpXNTBYMjFsYlc5eWVUbzZhRE01TlRZMU56WXpaamt3WVdFeU9UT3FDVVJ3WlhKalxcXG5aVzUwWDJWdVkyOWthVzVuT2pwQmMyTnBhVk5sZERvNmMyaHZkV3hrWDNCbGNtTmxiblJmWlc1amIyUmxPanBvTW1WbU56SXhNRE0wTldcXFxuTmlOMlptWnFzSlRqeGpiM0psT2pwdWRXMDZPbTV2Ym5wbGNtODZPazV2YmxwbGNtOVZjMmw2WlNCaGN5QmpiM0psT2pwbWJYUTZPa1JsXFxcblluVm5Qam82Wm0xME9qcG9ZVFUyT1dGalpqZGpZVFJsWVRVNU5hd0pPV052Y21VNk9tWnRkRG82WW5WcGJHUmxjbk02T2tSbFluVm5UR1xcXG5semREbzZabWx1YVhOb09qcG9aR1UxTnpoaVlqZ3dObVV3TXpkaVlhMEpOV052Y21VNk9tWnRkRG82Um05eWJXRjBkR1Z5T2pwa1pXSjFcXFxuWjE5emRISjFZM1E2T21neE5XUmtORFZpTm1GaFl6ZGtZbUU1cmdrelkyOXlaVG82Wm0xME9qcEdiM0p0WVhSMFpYSTZPbVJsWW5WblgyXFxcbnhwYzNRNk9taG1OV1ppTkRoaU9UVmhNRGRrWVRjMHJ3bEZZMjl5WlRvNmNIUnlPanBrY205d1gybHVYM0JzWVdObFBITmxjbVJsWDJwelxcXG5iMjQ2T21WeWNtOXlPanBGY25KdmNqNDZPbWd5WmpneU1ERXdOalV5TjJOaE1HVTBzQW1XQVR4amIzSmxPanB5WlhOMWJIUTZPbEpsYzNcXFxuVnNkRHhVTEVZK0lHRnpJR052Y21VNk9tOXdjem82ZEhKNVgzUnlZV2wwT2pwR2NtOXRVbVZ6YVdSMVlXdzhZMjl5WlRvNmNtVnpkV3gwXFxcbk9qcFNaWE4xYkhROFkyOXlaVG82WTI5dWRtVnlkRG82U1c1bVlXeHNhV0pzWlN4RlBqNCtPanBtY205dFgzSmxjMmxrZFdGc09qcG9abVxcXG5SaFptUmxOVFV6Wm1FNE0yVmtZckVKUVdGdWVXaHZkem82WlhKeWIzSTZPanhwYlhCc0lHRnVlV2h2ZHpvNlJYSnliM0krT2pwamIyNXpcXFxuZEhKMVkzUTZPbWcyTjJNelpUUTVaV1F5Tm1aaVl6SXpzZ2x5UEdSbGJtOWZZMkZqYUdWZlpHbHlPanAzWVhOdE9qcEhiRzlpWVd4SWRIXFxcblJ3UTJGamFHVWdZWE1nZDJGemJWOWlhVzVrWjJWdU9qcGpiMjUyWlhKME9qcDBjbUZwZEhNNk9rbHVkRzlYWVhOdFFXSnBQam82YVc1MFxcXG5iMTloWW1rNk9tZ3paamcyTjJJellUTTJOakl6TURBeXN3bEpZMjl5WlRvNmNIUnlPanBrY205d1gybHVYM0JzWVdObFBITmxjbVJsWDJcXFxucHpiMjQ2T21WeWNtOXlPanBGY25KdmNrTnZaR1UrT2pwb1pHRTJNV0l6TldZNU0yRTNOR0ZtTWJRSkozTnRZV3hzZG1Wak9qcHBibVpoXFxcbmJHeHBZbXhsT2pwb05HVTJPV0l6WmpGaE9ERTFPRFU0TXJVSk8zTjBaRG82Y0dGdWFXTnJhVzVuT2pwaVpXZHBibDl3WVc1cFl6bzZlM1xcXG50amJHOXpkWEpsZlgwNk9taGhPR0l5TldOa09UTXdNalF4TVdFMHRna3pZV3hzYjJNNk9tRnNiRzlqT2pwSGJHOWlZV3c2T21Gc2JHOWpcXFxuWDJsdGNHdzZPbWd3Wm1JMVlqWmtZV1EyT1RZd09EWTN0d2s3YzNSa09qcHdZVzVwWTJ0cGJtYzZPbUpsWjJsdVgzQmhibWxqT2pwN2UyXFxcbk5zYjNOMWNtVjlmVG82YUdObE16YzFOR05qWXpJMFkyRm1PVEM0Q1RaamIzSmxPanB6ZEhJNk9qeHBiWEJzSUhOMGNqNDZPbk4wY21sd1xcXG5YM0J5WldacGVEbzZhR0kwTldRMk16WmhZak0zWXpjellUZTVDVHR6ZEdRNk9uQmhibWxqYTJsdVp6bzZZbVZuYVc1ZmNHRnVhV002T25cXFxudDdZMnh2YzNWeVpYMTlPanBvTUdSaE1qSmlaVEV6TlRaak5qRTRON29KUjJOdmNtVTZPbVp0ZERvNmJuVnRPam84YVcxd2JDQmpiM0psXFxcbk9qcG1iWFE2T2tSbFluVm5JR1p2Y2lCcE16SStPanBtYlhRNk9tZzVORFprWmpZeU5ERTFOamMwTkRrMXV3azNaR3h0WVd4c2IyTTZPbVxcXG5Sc2JXRnNiRzlqT2pwRGFIVnVhem82YzJWMFgybHVkWE5sT2pwb1pHTTNNVFpsT0RReU5qSTFNR1psTWJ3SlFYZGhjMjFmWW1sdVpHZGxcXFxuYmpvNlgxOXlkRG82VjJGemJWSmxaa05sYkd3OFZENDZPbUp2Y25KdmQxOXRkWFE2T21oaE5UWTJPRGRrWXpsaFpXRTRORGt3dlFsQmQyXFxcbkZ6YlY5aWFXNWtaMlZ1T2pwZlgzSjBPanBYWVhOdFVtVm1RMlZzYkR4VVBqbzZZbTl5Y205M1gyMTFkRG82YUdObU1EazFPV1UyTkRreVxcXG5NR1E0WlRTK0NZa0JQRHhoYkd4dll6bzZkbVZqT2pwcGJuUnZYMmwwWlhJNk9rbHVkRzlKZEdWeVBGUXNRVDRnWVhNZ1kyOXlaVG82YjNcXFxuQnpPanBrY205d09qcEVjbTl3UGpvNlpISnZjRG82UkhKdmNFZDFZWEprUEZRc1FUNGdZWE1nWTI5eVpUbzZiM0J6T2pwa2NtOXdPanBFXFxcbmNtOXdQam82WkhKdmNEbzZhR1U1Tm1NNVl6QXhPRFpoWWpBNU5EaS9DVU5vWVhOb1luSnZkMjQ2T25KaGR6bzZVbUYzVkdGaWJHVThWQ1xcXG54QlBqbzZabWx1WkRvNmUzdGpiRzl6ZFhKbGZYMDZPbWhpTVRZMFlqWTFOVEV3WWpnd1pXSXh3QW1xQVdOdmNtVTZPbkIwY2pvNlpISnZcXFxuY0Y5cGJsOXdiR0ZqWlR4c2IyTnJYMkZ3YVRvNmNuZHNiMk5yT2pwU2QweHZZMnRTWldGa1IzVmhjbVE4Y0dGeWEybHVaMTlzYjNRNk9uXFxcbkpoZDE5eWQyeHZZMnM2T2xKaGQxSjNURzlqYXl4a1pXNXZYMk5oWTJobFgyUnBjam82Ykc5allXdzZPbTFoYm1sbVpYTjBPanBNYjJOaFxcXG5iRU5oWTJobFRXRnVhV1psYzNSRVlYUmhQajQ2T21nMU9EYzJaREJtWlRNM09XTmhPREl5d1FrMVkyOXlaVG82Y21WemRXeDBPanBTWlhcXFxuTjFiSFE4VkN4RlBqbzZiV0Z3WDJWeWNqbzZhRGd3Wm1VMFpEUm1Zemt5TnprNU1HSENDVnc4YzJWeVpHVmZkMkZ6YlY5aWFXNWtaMlZ1XFxcbk9qcHpaWEk2T2sxaGNGTmxjbWxoYkdsNlpYSWdZWE1nYzJWeVpHVTZPbk5sY2pvNlUyVnlhV0ZzYVhwbFRXRndQam82Wlc1a09qcG9NR1xcXG5aa05EWTRPRFJrWkdJMllXUm1PTU1KSG14dlp6bzZiRzluWjJWeU9qcG9ZekF6WTJJNU1qazFaak00WkRsaFpzUUpRSEJoY210cGJtZGZcXFxuYkc5MFgyTnZjbVU2T25kdmNtUmZiRzlqYXpvNlYyOXlaRXh2WTJzNk9uVnViRzlqYXpvNmFETXpPR1E1TkdJeFltWmlNV0UwWm1MRkNVXFxcbkJ3WVhKcmFXNW5YMnh2ZEY5amIzSmxPanAzYjNKa1gyeHZZMnM2T2xkdmNtUk1iMk5yT2pwMWJteHZZMnM2T21nek16aGtPVFJpTVdKbVxcXG5ZakZoTkdaaXhnbERhR0Z6YUdKeWIzZHVPanB5WVhjNk9sSmhkMVJoWW14bFBGUXNRVDQ2T21acGJtUTZPbnQ3WTJ4dmMzVnlaWDE5T2pcXFxucG9PVEkzTldJeE9UVmxPREkyTm1RNVpNY0pPbmRoYzIxZlltbHVaR2RsYmpvNlgxOXlkRG82ZEdGclpWOXNZWE4wWDJWNFkyVndkR2x2XFxcbmJqbzZhREEyWW1VMFpHSTJOamMwTWpneU9EaklDVmM4ZFhKc09qcHdZWEp6WlhJNk9rbHVjSFYwSUdGeklHTnZjbVU2T21sMFpYSTZPblxcXG5SeVlXbDBjem82YVhSbGNtRjBiM0k2T2tsMFpYSmhkRzl5UGpvNmJtVjRkRG82YURjMFptUTBZemN4WmpRek1EUmpaR0xKQ1lrQlBEeGhcXFxuYkd4dll6bzZkbVZqT2pwcGJuUnZYMmwwWlhJNk9rbHVkRzlKZEdWeVBGUXNRVDRnWVhNZ1kyOXlaVG82YjNCek9qcGtjbTl3T2pwRWNtXFxcbjl3UGpvNlpISnZjRG82UkhKdmNFZDFZWEprUEZRc1FUNGdZWE1nWTI5eVpUbzZiM0J6T2pwa2NtOXdPanBFY205d1BqbzZaSEp2Y0RvNlxcXG5hREZqWXpBeU0yWTJaVFl3WXpZNE1UbktDVDg4WTJoaGNpQmhjeUIxY213Nk9uQmhjbk5sY2pvNlVHRjBkR1Z5Ymo0Nk9uTndiR2wwWDNcXFxuQnlaV1pwZURvNmFHSXdaREpoWVdaak1UUTJORGN5WVRmTENUVmpiM0psT2pwemJHbGpaVG82UEdsdGNHd2dXMVJkUGpvNlpXNWtjMTkzXFxcbmFYUm9PanBvTVRoaU56Z3hZV1ppTUdFM01HSTBOc3dKaVFFOFBHRnNiRzlqT2pwMlpXTTZPbWx1ZEc5ZmFYUmxjam82U1c1MGIwbDBaWFxcXG5JOFZDeEJQaUJoY3lCamIzSmxPanB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d09qcEVjbTl3UjNWaGNtUThWQ3hCUGlCaGN5QmpcXFxuYjNKbE9qcHZjSE02T21SeWIzQTZPa1J5YjNBK09qcGtjbTl3T2pwb1pqUTRNek01TXpaaE9UUTFabU16T2MwSlFXRnVlV2h2ZHpvNlpYXFxcbkp5YjNJNk9qeHBiWEJzSUdGdWVXaHZkem82UlhKeWIzSStPanBqYjI1emRISjFZM1E2T21nMlpHVTBNR1ZqWWpkaE16VXpOelkyemdsNVxcXG5jMlZ5WkdVNk9tUmxPanBwYlhCc2N6bzZQR2x0Y0d3Z2MyVnlaR1U2T21SbE9qcEVaWE5sY21saGJHbDZaU0JtYjNJZ2MzUmtPanAwYVdcXFxuMWxPanBUZVhOMFpXMVVhVzFsUGpvNlpHVnpaWEpwWVd4cGVtVTZPbU5vWldOclgyOTJaWEptYkc5M09qcG9aVFZtWTJZNVpUZzVaalJrXFxcbllqZG1NODhKV2p4elpYSmtaVjlxYzI5dU9qcGtaVG82VFdGd1FXTmpaWE56UEZJK0lHRnpJSE5sY21SbE9qcGtaVG82VFdGd1FXTmpaWFxcXG5OelBqbzZibVY0ZEY5MllXeDFaVjl6WldWa09qcG9OMk14WTJabE56SmlabVUyTkRSaE9OQUpXanh6WlhKa1pWOXFjMjl1T2pwa1pUbzZcXFxuVFdGd1FXTmpaWE56UEZJK0lHRnpJSE5sY21SbE9qcGtaVG82VFdGd1FXTmpaWE56UGpvNmJtVjRkRjkyWVd4MVpWOXpaV1ZrT2pwb09EXFxcbkEyTXprNU5HTXpaakExT1Rjd1pkRUpObU52Y21VNk9uTjBjam82UEdsdGNHd2djM1J5UGpvNmMzUnlhWEJmYzNWbVptbDRPanBvTW1abFxcXG5PRFl5WVdReE1UZzRNREJtTWRJSldqeHpaWEprWlY5cWMyOXVPanBrWlRvNlRXRndRV05qWlhOelBGSStJR0Z6SUhObGNtUmxPanBrWlRcXFxubzZUV0Z3UVdOalpYTnpQam82Ym1WNGRGOTJZV3gxWlY5elpXVmtPanBvTVdNeE16VXpaVFkzTkdabFpqRTROOU1KV2p4elpYSmtaVjlxXFxcbmMyOXVPanBrWlRvNlRXRndRV05qWlhOelBGSStJR0Z6SUhObGNtUmxPanBrWlRvNlRXRndRV05qWlhOelBqbzZibVY0ZEY5MllXeDFaVlxcXG45elpXVmtPanBvTkRVM09HSXhZMlExTjJFMU9HTmpadFFKV2p4elpYSmtaVjlxYzI5dU9qcGtaVG82VFdGd1FXTmpaWE56UEZJK0lHRnpcXFxuSUhObGNtUmxPanBrWlRvNlRXRndRV05qWlhOelBqbzZibVY0ZEY5MllXeDFaVjl6WldWa09qcG9Oak0wTm1NMlpUWXhOREE1TnpSbU50XFxcblVKV2p4elpYSmtaVjlxYzI5dU9qcGtaVG82VFdGd1FXTmpaWE56UEZJK0lHRnpJSE5sY21SbE9qcGtaVG82VFdGd1FXTmpaWE56UGpvNlxcXG5ibVY0ZEY5MllXeDFaVjl6WldWa09qcG9ZakZtT1daalkyVTFaVFpsWldVME45WUpXanh6WlhKa1pWOXFjMjl1T2pwa1pUbzZUV0Z3UVdcXFxuTmpaWE56UEZJK0lHRnpJSE5sY21SbE9qcGtaVG82VFdGd1FXTmpaWE56UGpvNmJtVjRkRjkyWVd4MVpWOXpaV1ZrT2pwb1lqWmtNbVptXFxcbllUY3paV0l6WW1NMk50Y0pXanh6WlhKa1pWOXFjMjl1T2pwa1pUbzZUV0Z3UVdOalpYTnpQRkkrSUdGeklITmxjbVJsT2pwa1pUbzZUV1xcXG5Gd1FXTmpaWE56UGpvNmJtVjRkRjkyWVd4MVpWOXpaV1ZrT2pwb1l6RTJPVFpqTW1Wak1URmtNV1JsT2RnSldqeHpaWEprWlY5cWMyOXVcXFxuT2pwa1pUbzZUV0Z3UVdOalpYTnpQRkkrSUdGeklITmxjbVJsT2pwa1pUbzZUV0Z3UVdOalpYTnpQam82Ym1WNGRGOTJZV3gxWlY5elpXXFxcblZrT2pwb1kyTmpZMlkyWlRCbFltWmpaV0V5TTlrSldqeHpaWEprWlY5cWMyOXVPanBrWlRvNlRXRndRV05qWlhOelBGSStJR0Z6SUhObFxcXG5jbVJsT2pwa1pUbzZUV0Z3UVdOalpYTnpQam82Ym1WNGRGOTJZV3gxWlY5elpXVmtPanBvWkRWa09UTXhOREV6TURNeE9XWmhZOW9KTG5cXFxuTjBaRG82Y0dGdWFXTnJhVzVuT2pwaVpXZHBibDl3WVc1cFl6bzZhR1k0TURFek1UVmpaREpoT0RFM1lqSGJDVE5oYkd4dll6bzZZV3hzXFxcbmIyTTZPa2RzYjJKaGJEbzZZV3hzYjJOZmFXMXdiRG82YURCbVlqVmlObVJoWkRZNU5qQTROamZjQ1dFOFkyOXlaVG82YjNCek9qcHlZV1xcXG41blpUbzZVbUZ1WjJVOGRYTnBlbVUrSUdGeklHTnZjbVU2T25Oc2FXTmxPanBwYm1SbGVEbzZVMnhwWTJWSmJtUmxlRHhiVkYwK1BqbzZcXFxuYVc1a1pYZzZPbWc1TnpsbU1UUTJNelZtTURRMVpEWXkzUWxoUEdOdmNtVTZPbTl3Y3pvNmNtRnVaMlU2T2xKaGJtZGxQSFZ6YVhwbFBpXFxcbkJoY3lCamIzSmxPanB6YkdsalpUbzZhVzVrWlhnNk9sTnNhV05sU1c1a1pYZzhXMVJkUGo0Nk9tbHVaR1Y0T2pwb1pUUXdNRFl4WVRFM1xcXG5NR0prT0dVeU45NEpMbk4wWkRvNmNHRnVhV05yYVc1bk9qcGlaV2RwYmw5d1lXNXBZem82YURsall6RTBZV001TlRVMlpETmtPR0xmQ1NcXFxuNXpkR1E2T25CaGJtbGphMmx1WnpvNlltVm5hVzVmY0dGdWFXTTZPbWc1TURSbU1EazRNMlkxWVRZMFpXVm00QWxlWTI5eVpUbzZjSFJ5XFxcbk9qcGtjbTl3WDJsdVgzQnNZV05sUEhOMFpEbzZjR0Z1YVdOcmFXNW5PanBpWldkcGJsOXdZVzVwWTE5b1lXNWtiR1Z5T2pwUVlXNXBZMVxcXG5CaGVXeHZZV1ErT2pwb05UTmhZV0ZsWTJaaE1UUTVNRFZpT2VFSk5XUnNiV0ZzYkc5ak9qcGtiRzFoYkd4dll6bzZVMlZuYldWdWREbzZcXFxuYUc5c1pITTZPbWc0WVRJMVlqa3lZVGxsTURKaVlqQms0Z2t0YzJWeVpHVmZhbk52YmpvNlpHVTZPbVp5YjIxZmMyeHBZMlU2T21oaU1XXFxcbkkxWVdNeU5HWmlNak5oWWpoajR3a3JjMlZ5WkdWZmFuTnZiam82WkdVNk9tWnliMjFmYzNSeU9qcG9NR1JrT0RGaVpEVXlaREkxTVRBM1xcXG5OT1FKWGp4b1lYTm9Zbkp2ZDI0Nk9tMWhjRG82U1hSbGNqeExMRlkrSUdGeklHTnZjbVU2T21sMFpYSTZPblJ5WVdsMGN6bzZhWFJsY21cXFxuRjBiM0k2T2tsMFpYSmhkRzl5UGpvNmJtVjRkRG82YURVM1pXVmlPR0ptT1dRNE1EbG1ZVGZsQ1VOb1lYTm9Zbkp2ZDI0Nk9uSmhkem82XFxcblVtRjNWR0ZpYkdVOFZDeEJQam82Wm1sdVpEbzZlM3RqYkc5emRYSmxmWDA2T21neU5XSmxabVF6TURsaVkyRmhNak5sNWdsRVkyOXlaVFxcXG5vNmNIUnlPanBrY205d1gybHVYM0JzWVdObFBGdGhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWRkUGpvNmFESXhaRGMxTldZMFpqUTVcXFxuWWpReE56UG5DVHRqYjNKbE9qcHpiR2xqWlRvNlBHbHRjR3dnVzFSZFBqbzZZMjl3ZVY5bWNtOXRYM05zYVdObE9qcG9aREptTVdNd1lUXFxcbk13Tm1NME1XWTBOT2dKTVdGc2JHOWpPanB5WVhkZmRtVmpPanBvWVc1a2JHVmZjbVZ6WlhKMlpUbzZhR1ZpWldKbFlXWmtPVEkzTm1ObFxcXG5NR1BwQ1Y4OGFHRnphR0p5YjNkdU9qcHlZWGM2T2xKaGQwbDBaWEk4VkQ0Z1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBwZEdcXFxuVnlZWFJ2Y2pvNlNYUmxjbUYwYjNJK09qcHVaWGgwT2pwb09UTTNZamhrTXpBNU1qRmpaRGMwTWVvSlh6eG9ZWE5vWW5KdmQyNDZPbkpoXFxcbmR6bzZVbUYzU1hSbGNqeFVQaUJoY3lCamIzSmxPanBwZEdWeU9qcDBjbUZwZEhNNk9tbDBaWEpoZEc5eU9qcEpkR1Z5WVhSdmNqNDZPbVxcXG41bGVIUTZPbWhoWWpnM01qVTBORE13TWpjeVkyTTE2d2xCYUdGemFHSnliM2R1T2pwdFlYQTZPa2hoYzJoTllYQThTeXhXTEZNc1FUNDZcXFxuT21OdmJuUmhhVzV6WDJ0bGVUbzZhR1F4WTJGaU5tRTRNR1kwTjJaaE1qRHNDVDVvWVhOb1luSnZkMjQ2T25KaGR6bzZVbUYzVkdGaWJHXFxcblU4VkN4QlBqbzZjbVZ0YjNabFgyVnVkSEo1T2pwb01qa3hOakpqWkRJek9EWTBNRGRqWXUwSk1XRnNiRzlqT2pweVlYZGZkbVZqT2pwb1xcXG5ZVzVrYkdWZmNtVnpaWEoyWlRvNmFHVmlaV0psWVdaa09USTNObU5sTUdQdUNURmhiR3h2WXpvNmNtRjNYM1psWXpvNmFHRnVaR3hsWDNcXFxuSmxjMlZ5ZG1VNk9taGxZbVZpWldGbVpEa3lOelpqWlRCajd3a3hZV3hzYjJNNk9uSmhkMTkyWldNNk9taGhibVJzWlY5eVpYTmxjblpsXFxcbk9qcG9aV0psWW1WaFptUTVNamMyWTJVd1kvQUpRR052Y21VNk9uQjBjam82WkhKdmNGOXBibDl3YkdGalpUeHpkR1E2T25Sb2NtVmhaRFxcXG5vNlZHaHlaV0ZrUGpvNmFEVTJPREpoTWpsbU16UTBPREEwTWpMeENUNWtaVzV2WDIxbFpHbGhYM1I1Y0dVNk9rMWxaR2xoVkhsd1pUbzZcXFxuWVhOZmRITmZaWGgwWlc1emFXOXVPanBvTURRell6QXlZMkpqWmpneU56TXpOUElKTVdGc2JHOWpPanB5WVhkZmRtVmpPanBvWVc1a2JHXFxcblZmY21WelpYSjJaVG82YUdWaVpXSmxZV1prT1RJM05tTmxNR1B6Q1R0amIzSmxPanB6YkdsalpUbzZQR2x0Y0d3Z1cxUmRQam82WTI5d1xcXG5lVjltY205dFgzTnNhV05sT2pwb05XRmpOR0kyT1dRd04ySXpZVGt4WlBRSk1XRnNiRzlqT2pweVlYZGZkbVZqT2pwb1lXNWtiR1ZmY21cXFxuVnpaWEoyWlRvNmFHVmlaV0psWVdaa09USTNObU5sTUdQMUNURmhiR3h2WXpvNmNtRjNYM1psWXpvNmFHRnVaR3hsWDNKbGMyVnlkbVU2XFxcbk9taGxZbVZpWldGbVpEa3lOelpqWlRCajlna1NYMTkzWW1sdVpHZGxibDl5WldGc2JHOWo5d2t4WVd4c2IyTTZPbkpoZDE5MlpXTTZPbVxcXG5oaGJtUnNaVjl5WlhObGNuWmxPanBvWldKbFltVmhabVE1TWpjMlkyVXdZL2dKV0R4aGJHeHZZem82ZG1Wak9qcHBiblJ2WDJsMFpYSTZcXFxuT2tsdWRHOUpkR1Z5UEZRc1FUNGdZWE1nWTI5eVpUbzZiM0J6T2pwa2NtOXdPanBFY205d1BqbzZaSEp2Y0RvNmFEUmpZVEptT1dFNU1EXFxcbmcyWldKbU5qUDVDVlJqYjNKbE9qcHpiR2xqWlRvNmMyOXlkRG82YldWeVoyVmZjMjl5ZERvNlVuVnVWbVZqUEZKMWJrRnNiRzlqUml4U1xcXG5kVzVFWldGc2JHOWpSajQ2T201bGR6bzZhR0ZtTkdSa09ERmxaREEyTVRVNFpUbjZDVEZoYkd4dll6bzZjbUYzWDNabFl6bzZhR0Z1WkdcXFxueGxYM0psYzJWeWRtVTZPbWhsWW1WaVpXRm1aRGt5TnpaalpUQmord2xYWTI5eVpUbzZjMnhwWTJVNk9tbHVaR1Y0T2pvOGFXMXdiQ0JqXFxcbmIzSmxPanB2Y0hNNk9tbHVaR1Y0T2pwSmJtUmxlRHhKUGlCbWIzSWdXMVJkUGpvNmFXNWtaWGc2T21nMVlXSTJPVGd3WW1JelpHVTNPR1xcXG5JMS9Ba3hZV3hzYjJNNk9uSmhkMTkyWldNNk9taGhibVJzWlY5eVpYTmxjblpsT2pwb1pXSmxZbVZoWm1RNU1qYzJZMlV3WS8wSk1XRnNcXFxuYkc5ak9qcHlZWGRmZG1Wak9qcG9ZVzVrYkdWZmNtVnpaWEoyWlRvNmFHVmlaV0psWVdaa09USTNObU5sTUdQK0NWZzhZV3hzYjJNNk9uXFxcblpsWXpvNmFXNTBiMTlwZEdWeU9qcEpiblJ2U1hSbGNqeFVMRUUrSUdGeklHTnZjbVU2T205d2N6bzZaSEp2Y0RvNlJISnZjRDQ2T21SeVxcXG5iM0E2T21neE5XTTFZVEZqWXpJek1XTXhOVFZrL3dsQ1pHeHRZV3hzYjJNNk9tUnNiV0ZzYkc5ak9qcERhSFZ1YXpvNmMyVjBYMlp5WldcXFxuVmZkMmwwYUY5d2FXNTFjMlU2T21neU5HRmhaVFJtWldReVlUazVNamxtZ0FwT1kyOXlaVG82Wm0xME9qcHVkVzA2T21sdGNEbzZQR2x0XFxcbmNHd2dZMjl5WlRvNlptMTBPanBFYVhOd2JHRjVJR1p2Y2lCcE16SStPanBtYlhRNk9tZzBNbVUyTURNME9EWTJNRGs0TVRobWdRcElZMlxcXG45eVpUbzZiM0J6T2pwbWRXNWpkR2x2YmpvNlJtNVBibU5sT2pwallXeHNYMjl1WTJWN2UzWjBZV0pzWlM1emFHbHRmWDA2T21nMU1XTmhcXFxuTldVMU5ERm1PVFl5TkdSaWdncERhR0Z6YUdKeWIzZHVPanB5WVhjNk9sSmhkMVJoWW14bFBGUXNRVDQ2T21acGJtUTZPbnQ3WTJ4dmMzXFxcblZ5WlgxOU9qcG9NelZqTlRjMk1qZzBOek5qWkdZMk9ZTUtRMmhoYzJoaWNtOTNiam82Y21GM09qcFNZWGRVWVdKc1pUeFVMRUUrT2pwbVxcXG5hVzVrT2pwN2UyTnNiM04xY21WOWZUbzZhR015T0RnMVpqUXhObUpoT0RkaFl6ZUVDajVvWVhOb1luSnZkMjQ2T25KaGR6bzZVbUYzVkdcXFxuRmliR1U4VkN4QlBqbzZjbVZ0YjNabFgyVnVkSEo1T2pwb1ltUmxOVEkzTkRZMU9EZzJabVk1TTRVS1EyaGhjMmhpY205M2JqbzZjbUYzXFxcbk9qcFNZWGRVWVdKc1pUeFVMRUUrT2pwbWFXNWtPanA3ZTJOc2IzTjFjbVY5ZlRvNmFETmhaRFpoTVdNMk16UTRPR0l5T1RTR0NpOXpaWFxcXG5Ka1pWOXFjMjl1T2pwbGNuSnZjam82UlhKeWIzSTZPbWx2T2pwb05tVm1PVFpqTVdabE1HSTJOVFZtWW9jS1RtUmxibTlmYldWa2FXRmZcXFxuZEhsd1pUbzZUV1ZrYVdGVWVYQmxPanBtY205dFgzTndaV05wWm1sbGNsOWhibVJmWTI5dWRHVnVkRjkwZVhCbE9qcG9aV1V3TURnMU16XFxcblUxTjJWaE16QXhaWWdLUDNkaGMyMWZZbWx1WkdkbGJqbzZZMjl1ZG1WeWREbzZZMnh2YzNWeVpYTTZPbWx1ZG05clpUUmZiWFYwT2pwb1xcXG5PREpsTjJWa1lXRXpNR1UyTWpBMFpZa0thRHhqYjNKbE9qcHBkR1Z5T2pwaFpHRndkR1Z5Y3pvNmRHRnJaVG82VkdGclpUeEpQaUJoY3lcXFxuQmpiM0psT2pwcGRHVnlPanAwY21GcGRITTZPbWwwWlhKaGRHOXlPanBKZEdWeVlYUnZjajQ2T201bGVIUTZPbWc1TjJOaFpEa3pabVF6XFxcbk5ETTVOakZpaWdwTVBHRnNiRzlqT2pwaWIzSnliM2M2T2tOdmR6eENQaUJoY3lCamIzSmxPanB2Y0hNNk9tUmxjbVZtT2pwRVpYSmxaalxcXG40Nk9tUmxjbVZtT2pwb05HWmpZVGd6TnpKbE1HTTRNbVZoWTRzS1REeGhiR3h2WXpvNlltOXljbTkzT2pwRGIzYzhRajRnWVhNZ1kyOXlcXFxuWlRvNmIzQnpPanBrWlhKbFpqbzZSR1Z5WldZK09qcGtaWEpsWmpvNmFEVmlORFJrTlRZeFpqUTNNMkl5WW1TTUNrNWpiM0psT2pwbWJYXFxcblE2T201MWJUbzZhVzF3T2pvOGFXMXdiQ0JqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGtnWm05eUlHazJORDQ2T21adGREbzZhRFJqT1RsalxcXG5aRGszTVdaa016WTJaVEtOQ2sxb1lYTm9Zbkp2ZDI0Nk9uSmhkem82VW1GM1ZHRmliR1U4VkN4QlBqbzZjbVZ6WlhKMlpWOXlaV2hoYzJcXFxuZzZPbnQ3WTJ4dmMzVnlaWDE5T2pwb1pqQTNaRE5tTjJFd04yVXhOV1JsWkk0S1RXaGhjMmhpY205M2JqbzZjbUYzT2pwU1lYZFVZV0pzXFxcblpUeFVMRUUrT2pweVpYTmxjblpsWDNKbGFHRnphRG82ZTN0amJHOXpkWEpsZlgwNk9taGpaV1JpTm1Jd05USmpOMlk0WXprM2p3b3lZMlxcXG45eVpUbzZiM0IwYVc5dU9qcFBjSFJwYjI0OFZENDZPblZ1ZDNKaGNEbzZhR0l4T0RJeVpqazFOalZrTW1VelltV1FDakJoYkd4dll6bzZcXFxuZG1Wak9qcFdaV004VkN4QlBqbzZjbVZ6WlhKMlpUbzZhRGxsTldGa1pEQmlPVGN5WldVMVpHS1JDdUFCUEdSbGJtOWZZMkZqYUdWZlpHXFxcbmx5T2pwc2IyTmhiRG82YldGdWFXWmxjM1E2T2w4Nk9qeHBiWEJzSUhObGNtUmxPanBrWlRvNlJHVnpaWEpwWVd4cGVtVWdabTl5SUdSbFxcXG5ibTlmWTJGamFHVmZaR2x5T2pwc2IyTmhiRG82YldGdWFXWmxjM1E2T2xObGNtbGhiR2w2WldSTWIyTmhiRU5oWTJobFRXRnVhV1psYzNcXFxuUkVZWFJoVFc5a2RXeGxQam82WkdWelpYSnBZV3hwZW1VNk9sOWZSbWxsYkdSV2FYTnBkRzl5SUdGeklITmxjbVJsT2pwa1pUbzZWbWx6XFxcbmFYUnZjajQ2T25acGMybDBYM04wY2pvNmFHUTNNVEEyWmpKalltTXlNMlV6TXppU0NocGZYM2RpWjE5bmJHOWlZV3hvZEhSd1kyRmphR1xcXG5WZlpuSmxaWk1LTUdGc2JHOWpPanAyWldNNk9sWmxZenhVTEVFK09qcHlaWE5sY25abE9qcG9NMlF5Wm1VMlpqYzJaREUzTm1OaVlaUUtcXFxuTUdGc2JHOWpPanAyWldNNk9sWmxZenhVTEVFK09qcHlaWE5sY25abE9qcG9NbVJoTWpsaE5UWTBORE0zWVdOak1KVUtQbkJoY210cGJtXFxcbmRmYkc5MFgyTnZjbVU2T25kdmNtUmZiRzlqYXpvNlYyOXlaRXh2WTJzNk9teHZZMnM2T21nMk1tSmxNMkk0TURFeE1EVmlPVEV6bGdwQVxcXG5hR0Z6YUdKeWIzZHVPanB5WVhjNk9tbHVibVZ5T2pwR1lXeHNhV0pwYkdsMGVUbzZZV3hzYjJOZlpYSnlPanBvTXprMk16TXpZMlZqT0dcXFxuWXdOVFV6WkpjS01HRnNiRzlqT2pwMlpXTTZPbFpsWXp4VUxFRStPanB5WlhObGNuWmxPanBvWkRreVpUSmhOalZtTnpjd00yVmtNNWdLXFxcblJqeGJRVjBnWVhNZ1kyOXlaVG82YzJ4cFkyVTZPbU50Y0RvNlUyeHBZMlZRWVhKMGFXRnNSWEU4UWo0K09qcGxjWFZoYkRvNmFEa3hOV1xcXG5NNU5qTXlNR0l5Tm1NMk1XYVpDakJoYkd4dll6bzZkbVZqT2pwV1pXTThWQ3hCUGpvNmNtVnpaWEoyWlRvNmFEaGlOVGcwTVdabVltRTVcXFxuWm1WaE9UV2FDajkzWVhOdFgySnBibVJuWlc0Nk9tTnZiblpsY25RNk9tTnNiM04xY21Wek9qcHBiblp2YTJVelgyMTFkRG82YURBME5HXFxcbkkyTkRObE1qTTVaamcyWlRDYkNqOTNZWE50WDJKcGJtUm5aVzQ2T21OdmJuWmxjblE2T21Oc2IzTjFjbVZ6T2pwcGJuWnZhMlV6WDIxMVxcXG5kRG82YURGak5USTRNbVZsTWpoak56TXpaV2FjQ2o5M1lYTnRYMkpwYm1SblpXNDZPbU52Ym5abGNuUTZPbU5zYjNOMWNtVnpPanBwYm5cXFxuWnZhMlV6WDIxMWREbzZhREkwTTJGaE9XRXdOalZrT0dWallXU2RDajkzWVhOdFgySnBibVJuWlc0Nk9tTnZiblpsY25RNk9tTnNiM04xXFxcbmNtVnpPanBwYm5admEyVXpYMjExZERvNmFEVTBZakJpTkdOaU1qVTFOek0wWVRTZUNqOTNZWE50WDJKcGJtUm5aVzQ2T21OdmJuWmxjblxcXG5RNk9tTnNiM04xY21Wek9qcHBiblp2YTJVelgyMTFkRG82YURaalpUVTVZVE5rTmpBM09URTJNVE9mQ2o5M1lYTnRYMkpwYm1SblpXNDZcXFxuT21OdmJuWmxjblE2T21Oc2IzTjFjbVZ6T2pwcGJuWnZhMlV6WDIxMWREbzZhRGN4TW1FME5tSTFZek00TVRaa01UYWdDajkzWVhOdFgyXFxcbkpwYm1SblpXNDZPbU52Ym5abGNuUTZPbU5zYjNOMWNtVnpPanBwYm5admEyVXpYMjExZERvNmFEZG1PREUwTmpVMlpXVTVZVEkyWmpPaFxcXG5DajkzWVhOdFgySnBibVJuWlc0Nk9tTnZiblpsY25RNk9tTnNiM04xY21Wek9qcHBiblp2YTJVelgyMTFkRG82YUdZNE1qQTFaVGc1TUdcXFxuRTVOVEV4WVRlaUNrWThXMEZkSUdGeklHTnZjbVU2T25Oc2FXTmxPanBqYlhBNk9sTnNhV05sVUdGeWRHbGhiRVZ4UEVJK1BqbzZaWEYxXFxcbllXdzZPbWhqTXpVek5tUmtNemMyTldJNU9EaGhvd295WTI5eVpUbzZiM0IwYVc5dU9qcFBjSFJwYjI0OFZENDZPblZ1ZDNKaGNEbzZhRFxcXG5Vd05tWXpaVGM1TVRjNVltWTFaam1rQ2pCaGJHeHZZem82ZG1Wak9qcFdaV004VkN4QlBqbzZjbVZ6WlhKMlpUbzZhREk1TldVd01tSTFcXFxuWkRrM1kyVTBaV09sQ2tVOGRYSnNPanB3WVhKelpYSTZPbEJoY25ObFJYSnliM0lnWVhNZ1kyOXlaVG82Wm0xME9qcEVaV0oxWno0Nk9tXFxcblp0ZERvNmFHWXlaVE14WXpoaE5XTXlNamszWkdXbUNrWThXMEZkSUdGeklHTnZjbVU2T25Oc2FXTmxPanBqYlhBNk9sTnNhV05sVUdGeVxcXG5kR2xoYkVWeFBFSStQam82WlhGMVlXdzZPbWd6WVRrMU1tRmhNekE1TkdFelpXRXhwd293WVd4c2IyTTZPblpsWXpvNlZtVmpQRlFzUVRcXFxuNDZPbkpsYzJWeWRtVTZPbWcxTVRVMlpEWmtNR0kwWWpCbU0yVTFxQW93WVd4c2IyTTZPblpsWXpvNlZtVmpQRlFzUVQ0Nk9uSmxjMlZ5XFxcbmRtVTZPbWhpT0dFME1ERmhZekF5Tm1NM01qTTJxUW93WVd4c2IyTTZPblpsWXpvNlZtVmpQRlFzUVQ0Nk9uSmxjMlZ5ZG1VNk9tZ3hZbVxcXG5Ka05XWXdObVl5TW1ReVpERTFxZ293WVd4c2IyTTZPblpsWXpvNlZtVmpQRlFzUVQ0Nk9uSmxjMlZ5ZG1VNk9taGlaR0k1TVRneVpXWTJcXFxuWm1FMk5qUTJxd3BHUEZ0QlhTQmhjeUJqYjNKbE9qcHpiR2xqWlRvNlkyMXdPanBUYkdsalpWQmhjblJwWVd4RmNUeENQajQ2T21WeGRXXFxcbkZzT2pwb01qWXdPV1UzWmpFeFpEQTROVGM1WnF3S1JqeGJRVjBnWVhNZ1kyOXlaVG82YzJ4cFkyVTZPbU50Y0RvNlUyeHBZMlZRWVhKMFxcXG5hV0ZzUlhFOFFqNCtPanBsY1hWaGJEbzZhRFprWVRRd05HUXdZVFkwTVRSak5tU3RDa2M4YzNSa09qcHBiem82WlhKeWIzSTZPa1Z5Y21cXFxuOXlTMmx1WkNCaGN5QmpiM0psT2pwbWJYUTZPa1JsWW5WblBqbzZabTEwT2pwb05XUXhaalkyTm1ObVpHUmhZV001TjY0S1FtUnNiV0ZzXFxcbmJHOWpPanBrYkcxaGJHeHZZem82UTJoMWJtczZPbk5sZEY5cGJuVnpaVjloYm1SZmNHbHVkWE5sT2pwb1l6TmtaV0l6TnpreE5UazBOelxcXG5nNE9LOEtPV2hoYzJoaWNtOTNiam82Y21GM09qcEdZV3hzYVdKcGJHbDBlVG82WVd4c2IyTmZaWEp5T2pwb04yRTFOVEE1T1RNNVpURmhcXFxuWkdFelliQUtUenhoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDRnWVhNZ1kyOXlaVG82YjNCek9qcGtjbTl3T2pwRWNtXFxcbjl3UGpvNlpISnZjRG82YURrM016aGpOalF4TUdSbFpHRTROMkd4Q2t4emRHUTZPbk41Y3pvNlkyOXRiVzl1T2pwMGFISmxZV1JmYkc5alxcXG5ZV3c2T25OMFlYUnBZMTlzYjJOaGJEbzZTMlY1UEZRK09qcG5aWFE2T21obFltVTRNV05tTVRRd05tTTVZekExc2dwRGFHRnphR0p5YjNcXFxuZHVPanB5WVhjNk9sSmhkMVJoWW14bFBGUXNRVDQ2T21acGJtUTZPbnQ3WTJ4dmMzVnlaWDE5T2pwb1ltWmxZMlJtT1dRNU9XWTNOVGd6XFxcbk43TUtUenhoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDRnWVhNZ1kyOXlaVG82YjNCek9qcGtjbTl3T2pwRWNtOXdQalxcXG5vNlpISnZjRG82YUdVellXSmpaRGhtTXpoak5UZ3pOek8wQ2s4OFlXeHNiMk02T25KaGQxOTJaV002T2xKaGQxWmxZenhVTEVFK0lHRnpcXFxuSUdOdmNtVTZPbTl3Y3pvNlpISnZjRG82UkhKdmNENDZPbVJ5YjNBNk9taGhNVEl6WVdNMk5tVmlaV0V4WTJJMnRRcFBQR0ZzYkc5ak9qXFxcbnB5WVhkZmRtVmpPanBTWVhkV1pXTThWQ3hCUGlCaGN5QmpiM0psT2pwdmNITTZPbVJ5YjNBNk9rUnliM0ErT2pwa2NtOXdPanBvT1dGbVxcXG5ZekEwWm1ZNFpUSXpOV016TTdZS1FXRnVlV2h2ZHpvNlpYSnliM0k2T2p4cGJYQnNJR0Z1ZVdodmR6bzZSWEp5YjNJK09qcGpiMjV6ZEhcXFxuSjFZM1E2T21nME16UmtNall3TW1ZeVpqZzNNamd3dHdwUFBHRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBpQmhjeUJqXFxcbmIzSmxPanB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d09qcG9aV1UwT1dZMU9HTTJNakU1TkRCaU5yZ0tQbU52Y21VNk9uQjBjalxcXG5vNlpISnZjRjlwYmw5d2JHRmpaVHhrWVhSaFgzVnliRG82UkdGMFlWVnliRDQ2T21nM1pEYzJOak0yTldaaE1XWTBZelJrdVFwUFBHRnNcXFxuYkc5ak9qcHlZWGRmZG1Wak9qcFNZWGRXWldNOFZDeEJQaUJoY3lCamIzSmxPanB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d09qXFxcbnBvWWpjek5ETTBZelExWmpNeU56Y3hOYm9LUDNkaGMyMWZZbWx1WkdkbGJqbzZZMjl1ZG1WeWREbzZZMnh2YzNWeVpYTTZPbWx1ZG05clxcXG5aVEpmYlhWME9qcG9ZV1V3WmpreE5tVTFNakkwWkdJME03c0tUenhoYkd4dll6bzZjbUYzWDNabFl6bzZVbUYzVm1WalBGUXNRVDRnWVhcXFxuTWdZMjl5WlRvNmIzQnpPanBrY205d09qcEVjbTl3UGpvNlpISnZjRG82YURsaVlqazVPVFF3T1RNNE9UQmxNVG04Q2s4OFlXeHNiMk02XFxcbk9uSmhkMTkyWldNNk9sSmhkMVpsWXp4VUxFRStJR0Z6SUdOdmNtVTZPbTl3Y3pvNlpISnZjRG82UkhKdmNENDZPbVJ5YjNBNk9tZ3dZelxcXG5Rd09XWXdNamN4Tnprd04yWmx2UW84UEVZZ1lYTWdkWEpzT2pwd1lYSnpaWEk2T2xCaGRIUmxjbTQrT2pwemNHeHBkRjl3Y21WbWFYZzZcXFxuT21oaU9UWTJNalJqTkdRM01XVTRNamRqdmdwUFBHRnNiRzlqT2pweVlYZGZkbVZqT2pwU1lYZFdaV004VkN4QlBpQmhjeUJqYjNKbE9qXFxcbnB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d09qcG9ZVEV3T0RFeU5UTmxOalE1TTJabFpyOEtUenhoYkd4dll6bzZjbUYzWDNabFxcXG5Zem82VW1GM1ZtVmpQRlFzUVQ0Z1lYTWdZMjl5WlRvNmIzQnpPanBrY205d09qcEVjbTl3UGpvNlpISnZjRG82YURsa1kyRXhNV1V4WmpcXFxuUTNabU0zTVRMQUNrODhZV3hzYjJNNk9uSmhkMTkyWldNNk9sSmhkMVpsWXp4VUxFRStJR0Z6SUdOdmNtVTZPbTl3Y3pvNlpISnZjRG82XFxcblJISnZjRDQ2T21SeWIzQTZPbWcwTURoa1pHSTRZemcwTnpkaVl6Wm13UXBDWTI5eVpUbzZjSFJ5T2pwa2NtOXdYMmx1WDNCc1lXTmxQR1xcXG5Gc2JHOWpPanB6ZEhKcGJtYzZPbE4wY21sdVp6NDZPbWhqWVRVeVlXWmpaV1F3WmpsaFltRTF3Z3EvQVdOdmNtVTZPbkIwY2pvNlpISnZcXFxuY0Y5cGJsOXdiR0ZqWlR3OFlXeHNiMk02T21KdmVHVmtPanBDYjNnOFpIbHVJR052Y21VNk9tVnljbTl5T2pwRmNuSnZjaXRqYjNKbE9qXFxcbnB0WVhKclpYSTZPbE5sYm1RclkyOXlaVG82YldGeWEyVnlPanBUZVc1alBpQmhjeUJqYjNKbE9qcGpiMjUyWlhKME9qcEdjbTl0UEdGc1xcXG5iRzlqT2pwemRISnBibWM2T2xOMGNtbHVaejQrT2pwbWNtOXRPanBUZEhKcGJtZEZjbkp2Y2o0Nk9tZzFOVFF6TURKa04yWTFOVFpoTXpcXFxuYzV3d28wUEdKdmIyd2dZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPanBvWm1FNU9UbGxaRE5tWTJRd05qWmlNOFFLXFxcbk4yTnZjbVU2T25KbGMzVnNkRG82VW1WemRXeDBQRlFzUlQ0Nk9uVnVkM0poY0Y5dmNqbzZhRFZrWkRjMFpUVmtNamN3WW1NeE5EVEZDa1xcXG4xb1lYTm9Zbkp2ZDI0Nk9uSmhkem82VW1GM1ZHRmliR1U4VkN4QlBqbzZjbVZ6WlhKMlpWOXlaV2hoYzJnNk9udDdZMnh2YzNWeVpYMTlcXFxuT2pwb1pHWTFZalE0WmpkbU5qUXhPRGMwWnNZS1RXaGhjMmhpY205M2JqbzZjbUYzT2pwU1lYZFVZV0pzWlR4VUxFRStPanB5WlhObGNuXFxcblpsWDNKbGFHRnphRG82ZTN0amJHOXpkWEpsZlgwNk9taG1abVE1TUdSa05tRTVaVFl4TkdKanh3cGVhR0Z6YUdKeWIzZHVPanB5WVhjNlxcXG5PbWx1Ym1WeU9qcFNZWGRVWVdKc1pUeFVMRUUrT2pwbWFXNWtYMjl5WDJacGJtUmZhVzV6WlhKMFgzTnNiM1E2T250N1kyeHZjM1Z5WlhcXFxuMTlPanBvWlRsbU9UY3lOalppWW1abFpqVmlaY2dLWG1oaGMyaGljbTkzYmpvNmNtRjNPanBwYm01bGNqbzZVbUYzVkdGaWJHVThWQ3hCXFxcblBqbzZabWx1WkY5dmNsOW1hVzVrWDJsdWMyVnlkRjl6Ykc5ME9qcDdlMk5zYjNOMWNtVjlmVG82YURneU5XTmxORGcxWVdSbE16WXhaVFxcXG5ESkNsNW9ZWE5vWW5KdmQyNDZPbkpoZHpvNmFXNXVaWEk2T2xKaGQxUmhZbXhsUEZRc1FUNDZPbVpwYm1SZmIzSmZabWx1WkY5cGJuTmxcXFxuY25SZmMyeHZkRG82ZTN0amJHOXpkWEpsZlgwNk9taGxNekkxWlRnellqWTJORGxpT1RaanlncGZQSE5sY21SbFgzZGhjMjFmWW1sdVpHXFxcbmRsYmpvNlpHVTZPazFoY0VGalkyVnpjeUJoY3lCelpYSmtaVG82WkdVNk9rMWhjRUZqWTJWemN6NDZPbTVsZUhSZmRtRnNkV1ZmYzJWbFxcXG5aRG82YURBd1l6UTROVGxsTkdKaU1EYzRZVGJMQ2twb1lYTm9Zbkp2ZDI0Nk9uSmhkem82YVc1dVpYSTZPbEpoZDFSaFlteGxQRlFzUVRcXFxuNDZPbVpwYm1RNk9udDdZMnh2YzNWeVpYMTlPanBvTXpBeFltWXhPV1V4TURVNE1tVmlNc3dLU21oaGMyaGljbTkzYmpvNmNtRjNPanBwXFxcbmJtNWxjam82VW1GM1ZHRmliR1U4VkN4QlBqbzZabWx1WkRvNmUzdGpiRzl6ZFhKbGZYMDZPbWd5TkdZeVlqaGhORE14Tm1NelltRml6UVxcXG5wS2FHRnphR0p5YjNkdU9qcHlZWGM2T21sdWJtVnlPanBTWVhkVVlXSnNaVHhVTEVFK09qcG1hVzVrT2pwN2UyTnNiM04xY21WOWZUbzZcXFxuYURsbU5EVTVOak13WmpVelpXRTRPVGpPQ2s1a1pXNXZYMk5oWTJobFgyUnBjam82WjJ4dlltRnNPanBIYkc5aVlXeElkSFJ3UTJGamFHXFxcblU4Ulc1MlBqbzZhMlY1WDJacGJHVmZjR0YwYURvNmFERmhaalJtTXpZeE1EVXpPRGN4T1dIUENqbG9ZWE5vWW5KdmQyNDZPbkpoZHpvNlxcXG5ZV3hzYjJNNk9tbHVibVZ5T2pwa2IxOWhiR3h2WXpvNmFEVm1NVFJsWkROaFlqTXdaRFJqWmpmUUNreHpkR1E2T25ONWN6bzZZMjl0YldcXFxuOXVPanAwYUhKbFlXUmZiRzlqWVd3Nk9uTjBZWFJwWTE5c2IyTmhiRG82UzJWNVBGUStPanBuWlhRNk9taGxNVGRqTVRrd01XUTVaR1l3XFxcbk1ETTUwUXBlUEhOMFpEbzZjR0Z1YVdOcmFXNW5PanBpWldkcGJsOXdZVzVwWXpvNlVHRnVhV05RWVhsc2IyRmtQRUUrSUdGeklHTnZjbVxcXG5VNk9uQmhibWxqT2pwQ2IzaE5aVlZ3UGpvNloyVjBPanBvT0RVM01UUTNOakl4TVRGaVpHSmhNZElLUDNkaGMyMWZZbWx1WkdkbGJqbzZcXFxuWTI5dWRtVnlkRG82WTJ4dmMzVnlaWE02T21sdWRtOXJaVEZmYlhWME9qcG9OakUyTm1abU5HTTRaV05rTkdJMk10TUtKbXB6WDNONWN6XFxcbm82UVhKeVlYazZPbWwwWlhJNk9tZzVOMk0zTURRek5URmxNakZpTmpJMDFBbzNkWEpzT2pwd1lYSnpaWEk2T21selgzZHBibVJ2ZDNOZlxcXG5aSEpwZG1WZmJHVjBkR1Z5T2pwb1lqaGlOelEwWVRsbU5tVm1ZamMzTmRVS1hqeHpkR1E2T25CaGJtbGphMmx1WnpvNlltVm5hVzVmY0dcXFxuRnVhV002T2xCaGJtbGpVR0Y1Ykc5aFpEeEJQaUJoY3lCamIzSmxPanB3WVc1cFl6bzZRbTk0VFdWVmNENDZPbWRsZERvNmFHRXhOalV4XFxcbk5qWTRaV0UzTjJJd00yUFdDbDQ4YzNSa09qcHdZVzVwWTJ0cGJtYzZPbUpsWjJsdVgzQmhibWxqT2pwUVlXNXBZMUJoZVd4dllXUThRVFxcXG40Z1lYTWdZMjl5WlRvNmNHRnVhV002T2tKdmVFMWxWWEErT2pwblpYUTZPbWc1TURSaE9HUTVOV0kwWm1FelpUSTMxd283YzNSa09qcHpcXFxuZVhNNk9uZGhjMjA2T205elgzTjBjam82UW5WbU9qcG1jbTl0WDNOMGNtbHVaem82YURGbU1ESTVNbVUxTlRnMlptWXhPRGpZQ21SamIzXFxcbkpsT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJVOGFXNWtaWGh0WVhBNk9tMWhjRG82U1c1a1pYaE5ZWEE4ZFhKc09qcFZjbXdzWVd4c1xcXG5iMk02T25OMGNtbHVaem82VTNSeWFXNW5QajQ2T21nek5ESXdaV1l3TVdZNU5qSm1PV0kyMlFweFkyOXlaVG82Y0hSeU9qcGtjbTl3WDJcXFxubHVYM0JzWVdObFBHbHVaR1Y0YldGd09qcHRZWEE2T2tsdVpHVjRUV0Z3UEdGc2JHOWpPanB6ZEhKcGJtYzZPbE4wY21sdVp5eGhiR3h2XFxcbll6bzZjM1J5YVc1bk9qcFRkSEpwYm1jK1BqbzZhR0kxWXpBNE1qVmlNbU5oT0RZelptWGFDcFlCWTI5eVpUbzZjSFJ5T2pwa2NtOXdYMlxcXG5sdVgzQnNZV05sUEdsdVpHVjRiV0Z3T2pwdFlYQTZPa2x1WkdWNFRXRndQSFZ5YkRvNlZYSnNMR1JsYm05ZlkyRmphR1ZmWkdseU9qcHNcXFxuYjJOaGJEbzZiV0Z1YVdabGMzUTZPbE5sY21saGJHbDZaV1JNYjJOaGJFTmhZMmhsVFdGdWFXWmxjM1JFWVhSaFRXOWtkV3hsUGo0Nk9tXFxcbmc1TjJZNU1ESmpOV1EyTW1SaFlUVmsyd284YzJWeVpHVTZPbk5sY2pvNlUyVnlhV0ZzYVhwbFRXRndPanB6WlhKcFlXeHBlbVZmWlc1MFxcXG5jbms2T21nNU56WXpaalZrWWpBM1pXSTJZV013M0FwYVBITmxjbVJsWDJwemIyNDZPbVJsT2pwTllYQkJZMk5sYzNNOFVqNGdZWE1nYzJcXFxuVnlaR1U2T21SbE9qcE5ZWEJCWTJObGMzTStPanB1WlhoMFgzWmhiSFZsWDNObFpXUTZPbWd5WXprd01HSmtNREE1T0RjeFpEY3kzUXBhXFxcblBITmxjbVJsWDJwemIyNDZPbVJsT2pwTllYQkJZMk5sYzNNOFVqNGdZWE1nYzJWeVpHVTZPbVJsT2pwTllYQkJZMk5sYzNNK09qcHVaWFxcXG5oMFgzWmhiSFZsWDNObFpXUTZPbWhrT0RSa1ptUXpZMk0yWVRZMk9HWmwzZ3BPUEdGc2JHOWpPanAyWldNNk9sWmxZenhVTEVFK0lHRnpcXFxuSUdOdmNtVTZPbTl3Y3pvNmFXNWtaWGc2T2tsdVpHVjRQRWsrUGpvNmFXNWtaWGc2T21nMU1qVXdaamM1TWpsaU1URXlORE16M3dwQmFHXFxcbkZ6YUdKeWIzZHVPanB0WVhBNk9raGhjMmhOWVhBOFN5eFdMRk1zUVQ0Nk9uSmxiVzkyWlY5bGJuUnllVG82YUdZeFpXUTJZemd6WVdJMFxcXG5ZV1F4TlRiZ0NqbHpaWEprWlY5M1lYTnRYMkpwYm1SblpXNDZPbVJsT2pwTllYQkJZMk5sYzNNNk9tNWxkem82YURNNU5qWXdPVEptWmpcXFxuUTBPV000T1RUaENrODhZV3hzYjJNNk9uSmhkMTkyWldNNk9sSmhkMVpsWXp4VUxFRStJR0Z6SUdOdmNtVTZPbTl3Y3pvNlpISnZjRG82XFxcblJISnZjRDQ2T21SeWIzQTZPbWd3T0ROaFl6aGhPV0UwTkRjMk56Z3o0Z3BPUEdGc2JHOWpPanAyWldNNk9sWmxZenhVTEVFK0lHRnpJR1xcXG5OdmNtVTZPbTl3Y3pvNmFXNWtaWGc2T2tsdVpHVjRQRWsrUGpvNmFXNWtaWGc2T21nMk5HUmpZakJtWkRoaFpXWmhNVFV5NHdwUFBHRnNcXFxuYkc5ak9qcHlZWGRmZG1Wak9qcFNZWGRXWldNOFZDeEJQaUJoY3lCamIzSmxPanB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d09qXFxcbnBvWm1ZMVl6TTVOekptTkdWaE9ESTRZdVFLVHp4aGJHeHZZem82Y21GM1gzWmxZem82VW1GM1ZtVmpQRlFzUVQ0Z1lYTWdZMjl5WlRvNlxcXG5iM0J6T2pwa2NtOXdPanBFY205d1BqbzZaSEp2Y0RvNmFEaG1Nak5pTWpNMll6SmhOamd6WVdYbENtWmhiR3h2WXpvNmRtVmpPanBqYjNcXFxuYzZPanhwYlhCc0lHTnZjbVU2T21OdmJuWmxjblE2T2taeWIyMDhKbHRVWFQ0Z1ptOXlJR0ZzYkc5ak9qcGliM0p5YjNjNk9rTnZkenhiXFxcblZGMCtQam82Wm5KdmJUbzZhRFZrTjJFek5XTmhaalkwTkRRM1ptVG1Dazg4WVd4c2IyTTZPbkpoZDE5MlpXTTZPbEpoZDFabFl6eFVMRVxcXG5FK0lHRnpJR052Y21VNk9tOXdjem82WkhKdmNEbzZSSEp2Y0Q0Nk9tUnliM0E2T21nMlpETTBNekF4TURWbE5tRmxPREZqNXdwUFBHRnNcXFxuYkc5ak9qcHlZWGRmZG1Wak9qcFNZWGRXWldNOFZDeEJQaUJoY3lCamIzSmxPanB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d09qXFxcbnBvTVRBelkyUTNZbU0zWXpKbU1URTROZWdLTUR3bVZDQmhjeUJqYjNKbE9qcG1iWFE2T2tSbFluVm5Qam82Wm0xME9qcG9NV0k0TXpNMlxcXG5PRGd6TTJGbVpEZzJZK2tLQzE5ZmNtUnNYMkZzYkc5ajZncEFaR3h0WVd4c2IyTTZPbVJzYldGc2JHOWpPanBVY21WbFEyaDFibXM2T21cXFxueGxablJ0YjNOMFgyTm9hV3hrT2pwb09XVmlZVEV5WlRNeFpXVXpObVV3WnVzS0tITjBaRG82Y0dGMGFEbzZVR0YwYURvNmFtOXBiam82XFxcbmFEVXpOV00wT0RFNFlUQTFPREpsTnpQc0NrdGpiM0psT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJVOFkyOXlaVG82YjNCMGFXOXVPalxcXG5wUGNIUnBiMjQ4ZFhKc09qcFZjbXcrUGpvNmFHUmpOalV5TXpFNVlqTTFZamt3TjJMdENrRmhibmxvYjNjNk9tVnljbTl5T2pvOGFXMXdcXFxuYkNCaGJubG9iM2M2T2tWeWNtOXlQam82WTI5dWMzUnlkV04wT2pwb05tUTJOVFUxTVROa056RXdOelprWmU0S1FXRnVlV2h2ZHpvNlpYXFxcbkp5YjNJNk9qeHBiWEJzSUdGdWVXaHZkem82UlhKeWIzSStPanBqYjI1emRISjFZM1E2T21nd05EVTVaVFJtTUdSaFpESTVNbU0xN3dwQVxcXG5iMjVqWlY5alpXeHNPanB6ZVc1ak9qcFBibU5sUTJWc2JEeFVQam82WjJWMFgyOXlYM1J5ZVY5cGJtbDBPanBvWmpobU9XTTVaV0UxTkdcXFxuVTFOelV5WmZBS1FHOXVZMlZmWTJWc2JEbzZjM2x1WXpvNlQyNWpaVU5sYkd3OFZENDZPbWRsZEY5dmNsOTBjbmxmYVc1cGREbzZhR1poXFxcbk1tTmhNREZoWmpsbVpEYzJaRER4Q205a1pXNXZYMk5oWTJobFgyUnBjam82Ykc5allXdzZPa3h2WTJGc1EyRmphR1ZOWVc1cFptVnpkRFxcXG54RmJuWStPanBwYm5ObGNuUmZaR0YwWVRvNmMyaHZkV3hrWDJ0bFpYQmZZMjl1ZEdWdWRGOTBlWEJsWDJobFlXUmxjam82YUdZNU5EZGpcXFxuTURsaE1ESmpORGMzWWpIeUNqbGhiR3h2WXpvNmRtVmpPanBXWldNOFZDeEJQam82YVc1MGIxOWliM2hsWkY5emJHbGpaVG82YURjMVpUXFxcbmhqWW1aaE1HVmpOR0kyTXpYekNqbGhiR3h2WXpvNmRtVmpPanBXWldNOFZDeEJQam82YVc1MGIxOWliM2hsWkY5emJHbGpaVG82YURsa1xcXG5NMkUzWm1NMFkyRXhZMlEyTURuMENqbGhiR3h2WXpvNmRtVmpPanBXWldNOFZDeEJQam82YVc1MGIxOWliM2hsWkY5emJHbGpaVG82YUdcXFxuWm1aalE1TnprNU5qazNNR0kzTkRMMUNtcGpiM0psT2pwemJHbGpaVG82YVhSbGNqbzZQR2x0Y0d3Z1kyOXlaVG82YVhSbGNqbzZkSEpoXFxcbmFYUnpPanBqYjJ4c1pXTjBPanBKYm5SdlNYUmxjbUYwYjNJZ1ptOXlJQ1piVkYwK09qcHBiblJ2WDJsMFpYSTZPbWd4WmpReE1XVTRZalxcXG5kbE1qazVPR0pqOWdvNVlXeHNiMk02T25abFl6bzZWbVZqUEZRc1FUNDZPbWx1ZEc5ZlltOTRaV1JmYzJ4cFkyVTZPbWhrTkdWbU1UazRcXFxuWTJKaFpHRmlOR1E1OXdvNVlXeHNiMk02T25abFl6bzZWbVZqUEZRc1FUNDZPbWx1ZEc5ZlltOTRaV1JmYzJ4cFkyVTZPbWc1Tm1JM05EXFxcbkE1WlRVeE56WmtaV1F5K0FwUlkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEhScGJubDJaV002T25ScGJubDJaV002T2xScFxcXG5ibmxXWldNOFcyTm9ZWEk3SURSZFBqNDZPbWhrTVRZelpEUmhNbUk1TnpreE16TXkrUXBXWTI5eVpUbzZjSFJ5T2pwa2NtOXdYMmx1WDNcXFxuQnNZV05sUEhScGJubDJaV002T25ScGJubDJaV002T2xScGJubFdaV004V3loMU9DeGphR0Z5S1RzZ05GMCtQam82YURoaFptRmlaalV6XFxcbllqTXlNV1JqTXpMNkNpZHpkR1E2T25Sb2NtVmhaRG82WTNWeWNtVnVkRG82YURJMU1HTXlNV0ZqTVdFNFpqUm1NMlQ3Q2doZlgzSm5YMlxcXG45dmJmd0tQMlJzYldGc2JHOWpPanBrYkcxaGJHeHZZem82YkdWbWRITm9hV1owWDJadmNsOTBjbVZsWDJsdVpHVjRPanBvTlRVd01qVm1cXFxuWmpjMlpHWm1NVE5sTmYwS1QyUnNiV0ZzYkc5ak9qcGtiRzFoYkd4dll6bzZRMmgxYm1zNk9uTmxkRjl6YVhwbFgyRnVaRjl3YVc1MWMyXFxcblZmYjJaZlpuSmxaVjlqYUhWdWF6bzZhR0pqTVdSa05EWmpNamc1TVRCaE5qVCtDa2c4WTI5eVpUbzZZMlZzYkRvNlFtOXljbTkzVFhWMFxcXG5SWEp5YjNJZ1lYTWdZMjl5WlRvNlptMTBPanBFWldKMVp6NDZPbVp0ZERvNmFHVTBNR1kyT0dFNFl6VXdNbUptWTJIL0NqSmpiM0psT2pcXFxucG1iWFE2T2tadmNtMWhkSFJsY2pvNmQzSnBkR1ZmYzNSeU9qcG9Oek5qTXpGaU1UQTBZbVl6WkdZNVpZQUxQanhqYjNKbE9qcG1iWFE2XFxcbk9rVnljbTl5SUdGeklHTnZjbVU2T21adGREbzZSR1ZpZFdjK09qcG1iWFE2T21obFlqRTNOamsxWW1RME1qUTNOelppZ1F0T1BHTnZjbVxcXG5VNk9tRnNiRzlqT2pwc1lYbHZkWFE2T2t4aGVXOTFkRVZ5Y205eUlHRnpJR052Y21VNk9tWnRkRG82UkdWaWRXYytPanBtYlhRNk9tZzJcXFxuT0RjME4yWTJZak01WVRBelptWmhnZ3RHUEdGc2JHOWpPanB6ZEhKcGJtYzZPbE4wY21sdVp5QmhjeUJqYjNKbE9qcGpiWEE2T2xCaGNuXFxcblJwWVd4RmNUNDZPbVZ4T2pwb01ERTJOemM0WldNM01UWXpZbVV5Tm9NTFQyTnZjbVU2T21OdGNEbzZhVzF3YkhNNk9qeHBiWEJzSUdOdlxcXG5jbVU2T21OdGNEbzZVR0Z5ZEdsaGJFVnhQQ1pDUGlCbWIzSWdKa0UrT2pwbGNUbzZhR0psTVdRMk5qRmpOalJtWVdVeE1UV0VDMEpqYjNcXFxuSmxPanB3ZEhJNk9tUnliM0JmYVc1ZmNHeGhZMlU4ZDJGemJWOWlhVzVrWjJWdU9qcEtjMVpoYkhWbFBqbzZhR1kyWVRJMk5tUXlNR0UzXFxcbk5XUmlNR2FGQzFFOGFHRnphR0p5YjNkdU9qcHlZWGM2T2xKaGQxUmhZbXhsUEZRc1FUNGdZWE1nWTI5eVpUbzZiM0J6T2pwa2NtOXdPalxcXG5wRWNtOXdQam82WkhKdmNEbzZhRE15TkdaaU9UazFZamxoT1daa1lUS0dDMWhqYjNKbE9qcHdkSEk2T21SeWIzQmZhVzVmY0d4aFkyVThcXFxuWTI5eVpUbzZiM0IwYVc5dU9qcFBjSFJwYjI0OGQyRnpiVjlpYVc1a1oyVnVPanBLYzFaaGJIVmxQajQ2T21oalpUYzVNMlJpT0RjM1lUXFxcbll4Wmpnd2h3dFJQR2hoYzJoaWNtOTNiam82Y21GM09qcFNZWGRVWVdKc1pUeFVMRUUrSUdGeklHTnZjbVU2T205d2N6bzZaSEp2Y0RvNlxcXG5SSEp2Y0Q0Nk9tUnliM0E2T21obVpqZG1aakV3T1RCaFpUaGlaRGN6aUF0ZVBIZGhjMjFmWW1sdVpHZGxiam82U25OV1lXeDFaU0JoY3lcXFxuQmpiM0psT2pwamIyNTJaWEowT2pwR2NtOXRQR0ZzYkc5ak9qcHpkSEpwYm1jNk9sTjBjbWx1Wno0K09qcG1jbTl0T2pwb1pEZzBOelZoXFxcbk16Y3dZVFZqTVRRMU1Za0xRV2hoYzJoaWNtOTNiam82YldGd09qcElZWE5vVFdGd1BFc3NWaXhUTEVFK09qcHlaVzF2ZG1WZlpXNTBjblxcXG5rNk9tZ3dZekkwTVRCbU1qRTFOV0prTlRZMGlncy9hR0Z6YUdKeWIzZHVPanB5WVhjNk9sSmhkMVJoWW14bFBGUXNRVDQ2T21WeVlYTmxcXFxuWDI1dlgyUnliM0E2T21nMlltSTVZamxpTkdVM1pUbG1ZbUk1aXdzL2FHRnphR0p5YjNkdU9qcHlZWGM2T2xKaGQxUmhZbXhsUEZRc1FUXFxcbjQ2T21WeVlYTmxYMjV2WDJSeWIzQTZPbWc0WkRjNE9XVmtPV1ZpTjJKa1lURTFqQXRDWTI5eVpUbzZjSFJ5T2pwa2NtOXdYMmx1WDNCc1xcXG5ZV05sUEhkaGMyMWZZbWx1WkdkbGJqbzZTbk5XWVd4MVpUNDZPbWcxWkdZNU1qQTJNVGN4TXpFeFlqZzNqUXRnUEdGc2JHOWpPanAyWldcXFxuTTZPbFpsWXp4VUxFRStJR0Z6SUdOdmNtVTZPbU52Ym5abGNuUTZPa1p5YjIwOFlXeHNiMk02T21KdmVHVmtPanBDYjNnOFcxUmRMRUUrXFxcblBqNDZPbVp5YjIwNk9taGlNR1V6TmpKbU1XWTNOak01TUdWa2pnczRjMlZ5WkdWZmFuTnZiam82YzJWeU9qcFFjbVYwZEhsR2IzSnRZWFxcXG5SMFpYSTZPbTVsZHpvNmFEZ3pObVEyWW1RMFpUQTJabUZoTlRPUEN6TnpaWEprWlY5cWMyOXVPanB5WldGa09qcFRiR2xqWlZKbFlXUTZcXFxuT201bGR6bzZhR014Tmpjd05qazJNbVUwWkdVd09EaVFDekZ6WlhKa1pWOXFjMjl1T2pweVpXRmtPanBUZEhKU1pXRmtPanB1WlhjNk9tXFxcbmcwT1RBMU1HVXpOalpqTkRaaU1HSmtrUXRzWTI5eVpUbzZjSFJ5T2pwa2NtOXdYMmx1WDNCc1lXTmxQR052Y21VNk9tOXdkR2x2YmpvNlxcXG5UM0IwYVc5dVBIQmhjbXRwYm1kZmJHOTBYMk52Y21VNk9uQmhjbXRwYm1kZmJHOTBPanBVYUhKbFlXUkVZWFJoUGo0Nk9tZ3paV1ZtT1RcXFxuSTROMlZtWkRRME56RTRrZ3RQWTI5eVpUbzZZMjF3T2pwcGJYQnNjem82UEdsdGNHd2dZMjl5WlRvNlkyMXdPanBRWVhKMGFXRnNSWEU4XFxcbkprSStJR1p2Y2lBbVFUNDZPbTVsT2pwb05qYzNNbVl5Tm1ReE1HWTBNbUkwT1pNTE1tTnZjbVU2T205d2RHbHZiam82VDNCMGFXOXVQRlxcXG5RK09qcDFibmR5WVhBNk9tZ3dPREUzTURjME1XUTNaalUzTXpFMWxBdGdQR0ZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrSUdGeklHTnZcXFxuY21VNk9tTnZiblpsY25RNk9rWnliMjA4WVd4c2IyTTZPbUp2ZUdWa09qcENiM2c4VzFSZExFRStQajQ2T21aeWIyMDZPbWd4TldNeE5XXFxcblUwTm1ReU5XRTBOREZobFF0TmQyRnpiVjlpYVc1a1oyVnVPanBqYjI1MlpYSjBPanBwYlhCc2N6bzZWMkZ6YlU5d2RHbHZianhCWW1rK1xcXG5PanBwYm5SdlgyOXdkR2x2YmpvNmFESTFaRFZsWVRjM05qazFZbUV6TlRPV0MwSmpiM0psT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJcXFxuVThkMkZ6YlY5aWFXNWtaMlZ1T2pwS2MxWmhiSFZsUGpvNmFESTNPRGcwT1dSaE4ySXlabUppWVRPWEMwOWpiM0psT2pwamJYQTZPbWx0XFxcbmNHeHpPam84YVcxd2JDQmpiM0psT2pwamJYQTZPbEJoY25ScFlXeEZjVHdtUWo0Z1ptOXlJQ1pCUGpvNlpYRTZPbWcyTUdVMVpEQXlNVFxcXG5jM01EWXpPR0ZobUF0UFkyOXlaVG82WTIxd09qcHBiWEJzY3pvNlBHbHRjR3dnWTI5eVpUbzZZMjF3T2pwUVlYSjBhV0ZzUlhFOEprSStcXFxuSUdadmNpQW1RVDQ2T21WeE9qcG9OakJtTWpFek16TmxObVU0WXpBek1aa0xURHhoYkd4dll6bzZjM1J5YVc1bk9qcFRkSEpwYm1jZ1lYXFxcbk1nWTI5eVpUbzZZMjF3T2pwUVlYSjBhV0ZzUlhFOEpuTjBjajQrT2pwdVpUbzZhRFprWkRBell6bG1PRGM0WVdJMU5EbWFDeVIxY213NlxcXG5PbFZ5YkRvNmIzQjBhVzl1Y3pvNmFERXlPV1ZsWW1NNU1qTTJNV1JoWVRDYkN6RmhiR3h2WXpvNmRtVmpPanBXWldNOFZDeEJQam82ZEhcXFxuSjFibU5oZEdVNk9tZzRNbUpsTTJZMU9UZ3hPVE5rT1RrMW5Bc3ZaR3h0WVd4c2IyTTZPbVJzYldGc2JHOWpPanBoYkdsbmJsOTFjRG82XFxcbmFHSTNaakprTUdFNU5UVTVNamMzTWpPZEN6SThKbFFnWVhNZ1kyOXlaVG82Wm0xME9qcEVhWE53YkdGNVBqbzZabTEwT2pwb01EYzBPR1xcXG5FM05XVXlNRFUzTlRabU5KNExTVHhqYjNKbE9qcG1iWFE2T2tadmNtMWhkSFJsY2lCaGN5QmpiM0psT2pwbWJYUTZPbGR5YVhSbFBqbzZcXFxuZDNKcGRHVmZZMmhoY2pvNmFHUmxORFUwTVdaa09HWTFPRE13TURPZkMxVmpiM0psT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJVOFpHXFxcblZ1YjE5allXTm9aVjlrYVhJNk9tTmhZMmhsT2pwRFlXTm9aV1JWY214TlpYUmhaR0YwWVQ0Nk9taGlPREpqTUdObFkyRXhZbVU0TXpCbVxcXG5vQXRPYzNSa09qcHBiem82YVcxd2JITTZPanhwYlhCc0lITjBaRG82YVc4Nk9sZHlhWFJsSUdadmNpQW1iWFYwSUZjK09qcDNjbWwwWlZcXFxuOWhiR3c2T21nd05tUTFOMlpoWWpKbFpXUTFObVV3b1FzOWQyRnpiVjlpYVc1a1oyVnVPanBWYm5keVlYQlVhSEp2ZDBWNGREbzZkVzUzXFxcbmNtRndYM1JvY205M09qcG9OREEyWlRoa1lXVmhNVGd4T1RWa1pxSUxLM04wWkRvNmNHRjBhRG82VUdGMGFFSjFaam82Y0hWemFEbzZhR1xcXG5VNE5tVTVOMk5qTURnMlpUUmlOeldqQzRRQlkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEdOdmNtVTZPbkpsYzNWc2REbzZcXFxuVW1WemRXeDBQR052Y21VNk9tOXdkR2x2YmpvNlQzQjBhVzl1UEhOMFpEbzZkR2x0WlRvNlUzbHpkR1Z0VkdsdFpUNHNjM1JrT2pwcGJ6XFxcbm82WlhKeWIzSTZPa1Z5Y205eVBqNDZPbWd5TkdZME5HSmpNbVpqWlRVeU9HSmhwQXRQUEdGc2JHOWpPanBoYkd4dll6bzZSMnh2WW1Gc1xcXG5JR0Z6SUdOdmNtVTZPbUZzYkc5ak9qcEJiR3h2WTJGMGIzSStPanBrWldGc2JHOWpZWFJsT2pwb1ltUTROVE5oT1RVek9UQTFNamsyWXFcXFxuVUxhMk52Y21VNk9uQjBjam82WkhKdmNGOXBibDl3YkdGalpUeGpiM0psT2pwdmNIUnBiMjQ2T2s5d2RHbHZianhrWlc1dlgyTmhZMmhsXFxcblgyUnBjam82WTJGamFHVTZPa05oWTJobFpGVnliRTFsZEdGa1lYUmhQajQ2T21oaFpUY3laREEzWW1aaU5qQXdOV1ZpcGd0QlBIVnliRFxcXG5vNlZYSnNJR0Z6SUhObGNtUmxPanB6WlhJNk9sTmxjbWxoYkdsNlpUNDZPbk5sY21saGJHbDZaVG82YURSa1pXTXhZemd6WW1Jek5ERmpcXFxuWTJhbkN5MWhibmxvYjNjNk9tVnljbTl5T2pwdlltcGxZM1JmWkhKdmNEbzZhREl5WTJJM1ltWTNNR0poTXpSa05tU29DeTFoYm5sb2IzXFxcbmM2T21WeWNtOXlPanB2WW1wbFkzUmZaSEp2Y0RvNmFETTJNV00xWm1Jek5XRmxOR0l5TkRLcEN5MWhibmxvYjNjNk9tVnljbTl5T2pwdlxcXG5ZbXBsWTNSZlpISnZjRG82YURrMVptUTFaamMzTVRjMU56WmtZemlxQ3kxaGJubG9iM2M2T21WeWNtOXlPanB2WW1wbFkzUmZaSEp2Y0RcXFxubzZhR013T0RSaE5qbGhPR0V6T0Roa1lXYXJDekZoYm5sb2IzYzZPbVZ5Y205eU9qcHZZbXBsWTNSZlpHOTNibU5oYzNRNk9tZ3hNakUwXFxcbllXRTBOakEwTlRZMFpEVTNyQXN4WVc1NWFHOTNPanBsY25KdmNqbzZiMkpxWldOMFgyUnZkMjVqWVhOME9qcG9NakpsWmpneFpHTXpOVFxcXG5SaU9HTmhNYTBMTVdGdWVXaHZkem82WlhKeWIzSTZPbTlpYW1WamRGOWtiM2R1WTJGemREbzZhR0V4WXpFeE16ZGpaRFV4TmpJeFpEbXVcXFxuQ3pGaGJubG9iM2M2T21WeWNtOXlPanB2WW1wbFkzUmZaRzkzYm1OaGMzUTZPbWhsTnpkbU5EUTVNemxoTVRVNFlXRTByd3N4WVc1NWFHXFxcbjkzT2pwbGNuSnZjam82YjJKcVpXTjBYMlJ2ZDI1allYTjBPanBvWm1aaU1qa3lZVEUzT0Rnek1ERTRaTEFMRGw5ZmNuVnpkRjl5WldGc1xcXG5iRzlqc1F0aVBDWnpaWEprWlY5M1lYTnRYMkpwYm1SblpXNDZPbk5sY2pvNlUyVnlhV0ZzYVhwbGNpQmhjeUJ6WlhKa1pUbzZjMlZ5T2pcXFxucFRaWEpwWVd4cGVtVnlQam82YzJWeWFXRnNhWHBsWDNOMGNqbzZhRFJrT0RobVl6VTBOelUxTjJRek1qbXlDMDg4WVd4c2IyTTZPbUZzXFxcbmJHOWpPanBIYkc5aVlXd2dZWE1nWTI5eVpUbzZZV3hzYjJNNk9rRnNiRzlqWVhSdmNqNDZPbVJsWVd4c2IyTmhkR1U2T21oaVpEZzFNMlxcXG5FNU5UTTVNRFV5T1RaaXN3cy9jR0Z5YTJsdVoxOXNiM1JmWTI5eVpUbzZjR0Z5YTJsdVoxOXNiM1E2T21kbGRGOW9ZWE5vZEdGaWJHVTZcXFxuT21oa056WTJNREpoWXpWaVlUZGxNV015dEF0SlBITnRZV3hzZG1Wak9qcEpiblJ2U1hSbGNqeEJQaUJoY3lCamIzSmxPanB2Y0hNNk9tXFxcblJ5YjNBNk9rUnliM0ErT2pwa2NtOXdPanBvWkRZME5ESTJNR0V5TkdVM05tTTRZN1VMVHp4aGJHeHZZem82WVd4c2IyTTZPa2RzYjJKaFxcXG5iQ0JoY3lCamIzSmxPanBoYkd4dll6bzZRV3hzYjJOaGRHOXlQam82WkdWaGJHeHZZMkYwWlRvNmFHSmtPRFV6WVRrMU16a3dOVEk1Tm1cXFxuSzJDekE4SmxRZ1lYTWdZMjl5WlRvNlptMTBPanBFWldKMVp6NDZPbVp0ZERvNmFEaGpObU5tTldZMk0yTmtOMlZpTmpPM0MwODhZV3hzXFxcbmIyTTZPbUZzYkc5ak9qcEhiRzlpWVd3Z1lYTWdZMjl5WlRvNllXeHNiMk02T2tGc2JHOWpZWFJ2Y2o0Nk9tUmxZV3hzYjJOaGRHVTZPbVxcXG5oaVpEZzFNMkU1TlRNNU1EVXlPVFppdUF0cVkyOXlaVG82YzJ4cFkyVTZPbWwwWlhJNk9qeHBiWEJzSUdOdmNtVTZPbWwwWlhJNk9uUnlcXFxuWVdsMGN6bzZZMjlzYkdWamREbzZTVzUwYjBsMFpYSmhkRzl5SUdadmNpQW1XMVJkUGpvNmFXNTBiMTlwZEdWeU9qcG9ZbVJoTVdNek9UXFxcbmhtWldJMk1EZGhOcmtMTG5KcGJtYzZPbVZ1WkdsaGJqbzZZWE5mWW5sMFpWOXpiR2xqWlRvNmFEVmpaakEyWW1abE9HSXdaRGxtTVRlNlxcXG5DMDg4WVd4c2IyTTZPbUZzYkc5ak9qcEhiRzlpWVd3Z1lYTWdZMjl5WlRvNllXeHNiMk02T2tGc2JHOWpZWFJ2Y2o0Nk9tUmxZV3hzYjJcXFxuTmhkR1U2T21oaVpEZzFNMkU1TlRNNU1EVXlPVFppdXd0UFBHRnNiRzlqT2pwaGJHeHZZem82UjJ4dlltRnNJR0Z6SUdOdmNtVTZPbUZzXFxcbmJHOWpPanBCYkd4dlkyRjBiM0krT2pwa1pXRnNiRzlqWVhSbE9qcG9ZbVE0TlROaE9UVXpPVEExTWprMllyd0xEMTlmZDJKcGJtUm5aV1xcXG41ZlpuSmxaYjBMTWp3bVZDQmhjeUJqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGsrT2pwbWJYUTZPbWcyWXpRNFptUm1NamMxTnpKbVlqZzJcXFxudmdzOFkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEhWeWJEbzZhRzl6ZERvNlNHOXpkRDQ2T21nd1ptTmxZVFl4WmpZeE1XXFxcblppTjJZMHZ3dFBQR0ZzYkc5ak9qcGhiR3h2WXpvNlIyeHZZbUZzSUdGeklHTnZjbVU2T21Gc2JHOWpPanBCYkd4dlkyRjBiM0krT2pwa1xcXG5aV0ZzYkc5allYUmxPanBvWW1RNE5UTmhPVFV6T1RBMU1qazJZc0FMYXp4amIzSmxPanB6YkdsalpUbzZjMjl5ZERvNmJXVnlaMlZmYzJcXFxuOXlkRG82UW5WbVIzVmhjbVE4VkN4RmJHVnRSR1ZoYkd4dlkwWStJR0Z6SUdOdmNtVTZPbTl3Y3pvNlpISnZjRG82UkhKdmNENDZPbVJ5XFxcbmIzQTZPbWd6WldZelkyRTROVE0zTkRjMVlqazR3UXM1WVd4c2IyTTZPbk5zYVdObE9qcHpkR0ZpYkdWZmMyOXlkRG82ZTN0amJHOXpkWFxcXG5KbGZYMDZPbWc0Wm1SalptTTFaV00zTWpRd01tWTF3Z3N5WTI5eVpUbzZiM0IwYVc5dU9qcFBjSFJwYjI0OFZENDZPblZ1ZDNKaGNEbzZcXFxuYURObE9EZGlPVFk1TkRWbE16aGlOVG5EQzA4OFlXeHNiMk02T21Gc2JHOWpPanBIYkc5aVlXd2dZWE1nWTI5eVpUbzZZV3hzYjJNNk9rXFxcbkZzYkc5allYUnZjajQ2T21SbFlXeHNiMk5oZEdVNk9taGlaRGcxTTJFNU5UTTVNRFV5T1RaaXhBdFBQR0ZzYkc5ak9qcGhiR3h2WXpvNlxcXG5SMnh2WW1Gc0lHRnpJR052Y21VNk9tRnNiRzlqT2pwQmJHeHZZMkYwYjNJK09qcGtaV0ZzYkc5allYUmxPanBvWW1RNE5UTmhPVFV6T1RcXFxuQTFNamsyWXNVTExXRnVlV2h2ZHpvNlpYSnliM0k2T205aWFtVmpkRjlrY205d09qcG9ZelpqWVRVd1pHUXdNMlJtWkRZeU1NWUxMR0Z1XFxcbmVXaHZkem82WlhKeWIzSTZPbTlpYW1WamRGOXlaV1k2T21nM05qazJPR1F5WW1SbE1UazJaV0pqeHdzeFlXNTVhRzkzT2pwbGNuSnZjalxcXG5vNmIySnFaV04wWDJSdmQyNWpZWE4wT2pwb09UbGlaVEV6Tm1aak1tVmlNMkl3TU1nTE1HUnNiV0ZzYkc5ak9qcGtiRzFoYkd4dll6bzZcXFxuYkdWbWRGOWlhWFJ6T2pwb01qSTNNREF5TTJVNE1qZzBOR0k0WmNrTHlnRThQR0ZzYkc5ak9qcGliM2hsWkRvNlFtOTRQR1I1YmlCamIzXFxcbkpsT2pwbGNuSnZjam82UlhKeWIzSXJZMjl5WlRvNmJXRnlhMlZ5T2pwVFpXNWtLMk52Y21VNk9tMWhjbXRsY2pvNlUzbHVZejRnWVhNZ1xcXG5ZMjl5WlRvNlkyOXVkbVZ5ZERvNlJuSnZiVHhoYkd4dll6bzZjM1J5YVc1bk9qcFRkSEpwYm1jK1BqbzZabkp2YlRvNlUzUnlhVzVuUlhcXFxuSnliM0lnWVhNZ1kyOXlaVG82WlhKeWIzSTZPa1Z5Y205eVBqbzZaR1Z6WTNKcGNIUnBiMjQ2T21nNFptVTVZbUZtT1RBeVlUUTBaVGN3XFxcbnlnc3lQQ1pVSUdGeklHTnZjbVU2T21adGREbzZSR2x6Y0d4aGVUNDZPbVp0ZERvNmFETmhaREl5T1RJeVlUSTBPVEpsTTJITEMwUThZMlxcXG45eVpUbzZabTEwT2pwQmNtZDFiV1Z1ZEhNZ1lYTWdZMjl5WlRvNlptMTBPanBFYVhOd2JHRjVQam82Wm0xME9qcG9ObUk0TVRJM05ERmxcXFxuWkRsa1pEaGxOc3dMUkdOdmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d2JHRmpaVHhoYkd4dll6bzZZbTl5Y205M09qcERiM2M4YzNSeVBqXFxcbjQ2T21nM09ERmtabUZoTXpRelkyRTVNRFF4elF0NVkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEdOdmNtVTZPbTl3ZEdsdlxcXG5iam82VDNCMGFXOXVQR0ZzYkc5ak9qcDJaV002T21sdWRHOWZhWFJsY2pvNlNXNTBiMGwwWlhJOFlXeHNiMk02T25OMGNtbHVaem82VTNcXFxuUnlhVzVuUGo0K09qcG9NbUprTWpka09UZzNNR1prWW1abU04NExwd0ZrWlc1dlgyTmhZMmhsWDJScGNqbzZiRzlqWVd3Nk9tMWhibWxtXFxcblpYTjBPanBmT2pvOGFXMXdiQ0J6WlhKa1pUbzZaR1U2T2tSbGMyVnlhV0ZzYVhwbElHWnZjaUJrWlc1dlgyTmhZMmhsWDJScGNqbzZiR1xcXG45allXdzZPbTFoYm1sbVpYTjBPanBUWlhKcFlXeHBlbVZrVEc5allXeERZV05vWlUxaGJtbG1aWE4wUkdGMFlUNDZPbVJsYzJWeWFXRnNcXFxuYVhwbE9qcG9Zek0wTTJNMk1EZzBOR05qWXpJMU1zOExqZ0ZrWlc1dlgyTmhZMmhsWDJScGNqbzZZMkZqYUdVNk9sODZPanhwYlhCc0lIXFxcbk5sY21SbE9qcGtaVG82UkdWelpYSnBZV3hwZW1VZ1ptOXlJR1JsYm05ZlkyRmphR1ZmWkdseU9qcGpZV05vWlRvNlUyVnlhV0ZzYVhwbFxcXG5aRU5oWTJobFpGVnliRTFsZEdGa1lYUmhQam82WkdWelpYSnBZV3hwZW1VNk9tZzFaakU1TXprelpqSmxNemt3Wm1JMjBBdGVZMjl5WlRcXFxubzZjSFJ5T2pwa2NtOXdYMmx1WDNCc1lXTmxQR052Y21VNk9uSmxjM1ZzZERvNlVtVnpkV3gwUENncExITmxjbVJsWDJwemIyNDZPbVZ5XFxcbmNtOXlPanBGY25KdmNqNCtPanBvWlRJNU1XUTFaV1ppWmpVM056ZGpOOUVMTm5kaGMyMWZZbWx1WkdkbGJqbzZYMTl5ZERvNllYTnpaWFxcXG5KMFgyNXZkRjl1ZFd4c09qcG9Nakk1TXpOa1lUVTNOV0l4WkRBMU45SUxjR052Y21VNk9uQjBjam82WkhKdmNGOXBibDl3YkdGalpUeGpcXFxuYjNKbE9qcHZjSFJwYjI0Nk9rOXdkR2x2Ymp3b1lXeHNiMk02T25OMGNtbHVaem82VTNSeWFXNW5MR0ZzYkc5ak9qcHpkSEpwYm1jNk9sXFxcbk4wY21sdVp5aytQam82YURJMU5UazRZV0U1WlRSa1pqVmlOR0xUQzNwamIzSmxPanB3ZEhJNk9tUnliM0JmYVc1ZmNHeGhZMlU4WTI5eVxcXG5aVG82YjNCMGFXOXVPanBQY0hScGIyNDhhVzVrWlhodFlYQTZPbTFoY0RvNlNXNWtaWGhOWVhBOGRYSnNPanBWY213c1lXeHNiMk02T25cXFxuTjBjbWx1WnpvNlUzUnlhVzVuUGo0K09qcG9ZbVUxTm1KbVlqWmxNVGc1T0dWa010UUxpZ0ZqYjNKbE9qcHdkSEk2T21SeWIzQmZhVzVmXFxcbmNHeGhZMlU4WTI5eVpUbzZiM0IwYVc5dU9qcFBjSFJwYjI0OFpHVnViMTlqWVdOb1pWOWthWEk2T214dlkyRnNPanB0WVc1cFptVnpkRFxcXG5vNlUyVnlhV0ZzYVhwbFpFeHZZMkZzUTJGamFHVk5ZVzVwWm1WemRFUmhkR0ZOYjJSMWJHVStQam82YUdNMk5EWXhObVJoTkdabE1qTXlcXFxuTTJQVkMxZzhhR0Z6YUdKeWIzZHVPanB5WVhjNk9tbHVibVZ5T2pwU1lYZFVZV0pzWlR4VUxFRStJR0Z6SUdOdmNtVTZPbTl3Y3pvNlpIXFxcbkp2Y0RvNlJISnZjRDQ2T21SeWIzQTZPbWd5TUdVNE5EUmtaV1kxWVdOaU1qWmoxZ3VzQVdOdmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d1xcXG5iR0ZqWlR4amIzSmxPanB2Y0hScGIyNDZPazl3ZEdsdmJqeHBibVJsZUcxaGNEbzZiV0Z3T2pwSmJtUmxlRTFoY0R4MWNtdzZPbFZ5YkNcXFxueGtaVzV2WDJOaFkyaGxYMlJwY2pvNmJHOWpZV3c2T20xaGJtbG1aWE4wT2pwVFpYSnBZV3hwZW1Wa1RHOWpZV3hEWVdOb1pVMWhibWxtXFxcblpYTjBSR0YwWVUxdlpIVnNaVDQrUGpvNmFEWTNZV0kxWkRjek1qSmlZalV3TWpiWEN6NDhVU0JoY3lCb1lYTm9Zbkp2ZDI0Nk9rVnhkV1xcXG5sMllXeGxiblE4U3o0K09qcGxjWFZwZG1Gc1pXNTBPanBvTWpWak0yUTJPREZsT0RBMVlXWTRNOWdMclFGa1pXNXZYMk5oWTJobFgyUnBcXFxuY2pvNmJHOWpZV3c2T20xaGJtbG1aWE4wT2pwZk9qbzhhVzF3YkNCelpYSmtaVG82WkdVNk9rUmxjMlZ5YVdGc2FYcGxJR1p2Y2lCa1pXXFxcbjV2WDJOaFkyaGxYMlJwY2pvNmJHOWpZV3c2T20xaGJtbG1aWE4wT2pwVFpYSnBZV3hwZW1Wa1RHOWpZV3hEWVdOb1pVMWhibWxtWlhOMFxcXG5SR0YwWVUxdlpIVnNaVDQ2T21SbGMyVnlhV0ZzYVhwbE9qcG9ZamM1WlRNd09EWmxPRFkxWVRBeE1Oa0xVVHhvWVhOb1luSnZkMjQ2T25cXFxuSmhkem82VW1GM1ZHRmliR1U4VkN4QlBpQmhjeUJqYjNKbE9qcHZjSE02T21SeWIzQTZPa1J5YjNBK09qcGtjbTl3T2pwb1lqRmtNRFpqXFxcbk1XWmhaamc1TjJReU1Ob0xVVHhvWVhOb1luSnZkMjQ2T25KaGR6bzZVbUYzVkdGaWJHVThWQ3hCUGlCaGN5QmpiM0psT2pwdmNITTZPbVxcXG5SeWIzQTZPa1J5YjNBK09qcGtjbTl3T2pwb1ptVTJOR1V4TkdVNE5qYzVPVGcyT2RzTFEyTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdcXFxuYkdGalpUeHZibU5sWDJObGJHdzZPbWx0Y0RvNlYyRnBkR1Z5UGpvNmFEUmhabVJqTkRSbVkyRmlPV0V5TldUY0MxaGpiM0psT2pwd2RIXFxcbkk2T21SeWIzQmZhVzVmY0d4aFkyVThZMjl5WlRvNmIzQjBhVzl1T2pwUGNIUnBiMjQ4WVd4c2IyTTZPbk4wY21sdVp6bzZVM1J5YVc1blxcXG5QajQ2T21nd09XUXlORGczTURJeFpqaGhNVFJoM1FzK1BGRWdZWE1nYUdGemFHSnliM2R1T2pwRmNYVnBkbUZzWlc1MFBFcytQam82WlhcXFxuRjFhWFpoYkdWdWREbzZhR0l4TkRBME1XSTJZalExWkRJellUamVDeU5xYzE5emVYTTZPazFoY0RvNmMyVjBPanBvT0RCalpUQmpNRGt3XFxcbk5qa3hZamt4TWQ4TFJHTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR4aGJHeHZZem82WW05eWNtOTNPanBEYjNjOGMzUnlQalxcXG40Nk9tZzVOREprTm1WbE9XTTJaR0ZpWVdFMDRBc3lQQ1pVSUdGeklHTnZjbVU2T21adGREbzZSR2x6Y0d4aGVUNDZPbVp0ZERvNmFERmhcXFxuWkRreU1UVmxORE01WmpsbVlqbmhDMFpqYjNKbE9qcHdkSEk2T21SeWIzQmZhVzVmY0d4aFkyVThZVzU1YUc5M09qcGphR0ZwYmpvNlEyXFxcbmhoYVc1VGRHRjBaVDQ2T21oa1lqWmtNMkkzTlRnMk1tRTBNMlF4NGd0V1lXNTVhRzkzT2pwbGNuSnZjam82UEdsdGNHd2dZMjl5WlRvNlxcXG5iM0J6T2pwa2NtOXdPanBFY205d0lHWnZjaUJoYm5sb2IzYzZPa1Z5Y205eVBqbzZaSEp2Y0RvNmFESmtNV1ExWmprMk1qZ3dOV0V4WkRcXFxuSGpDekE4SmxRZ1lYTWdZMjl5WlRvNlptMTBPanBFWldKMVp6NDZPbVp0ZERvNmFEQTFOR0ptTTJNNE16UTJZV0UxWXpua0N5NWpiM0psXFxcbk9qcHpkSEk2T25Oc2FXTmxYMlZ5Y205eVgyWmhhV3c2T21nek4ySXlOalEzWTJReE0yWTJNamd4NVF0dVkyOXlaVG82Y0hSeU9qcGtjbVxcXG45d1gybHVYM0JzWVdObFBHUmxibTlmWTJGamFHVmZaR2x5T2pwc2IyTmhiRG82YldGdWFXWmxjM1E2T2xObGNtbGhiR2w2WldSTWIyTmhcXFxuYkVOaFkyaGxUV0Z1YVdabGMzUkVZWFJoUGpvNmFEZGhaakJrTWpneVlXRmxaalE1T1dibUN5dHpkR1E2T25CaGRHZzZPbEJoZEdoQ2RXXFxcblk2T25CMWMyZzZPbWd4WVdVMU16ZGhOemMzTUdJeVpUTTE1d3RGUEdGc2JHOWpPanB6ZEhKcGJtYzZPbE4wY21sdVp5QmhjeUJqYjNKbFxcXG5PanBtYlhRNk9rUnBjM0JzWVhrK09qcG1iWFE2T21oaFl6YzJOell6WmpneU4yTTJZakEzNkF0YVkyOXlaVG82Y0hSeU9qcGtjbTl3WDJcXFxubHVYM0JzWVdObFBDaGhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWNzWVd4c2IyTTZPbk4wY21sdVp6bzZVM1J5YVc1bktUNDZPbWd4XFxcblpqUTBNekZsTlRjd1l6WTJZVGhpNlF0RFkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEdGc2JHOWpPanBpYjNobFpEbzZRbVxcXG45NFBITjBjajQrT2pwb01XVTFZV1kyTkRWaVpqRmlOekpqTmVvTFNtTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR3b2MzUmtcXFxuT2pwd1lYUm9PanBRWVhSb1FuVm1MSFZ5YkRvNlZYSnNLVDQ2T21obU5ETmlZek16TVdZeE1XRTBNelJpNnd0RVBHRnNiRzlqT2pwemRIXFxcbkpwYm1jNk9sTjBjbWx1WnlCaGN5QmpiM0psT2pwb1lYTm9PanBJWVhOb1BqbzZhR0Z6YURvNmFESTBNRGt3TkRjMk5qUmtZMkU0WlRuc1xcXG5DMEU4YzNSa09qcHdZWFJvT2pwUVlYUm9RblZtSUdGeklHTnZjbVU2T21oaGMyZzZPa2hoYzJnK09qcG9ZWE5vT2pwb05USTJOemM0T0RcXFxuUmhOMlk0WVRJMU5PMExNbU52Y21VNk9tVnljbTl5T2pwRmNuSnZjam82WkdWelkzSnBjSFJwYjI0Nk9tZ3dNV1ZqWW1Fd09UQXlZakppXFxcbk1XWTE3Z3N5WTI5eVpUbzZaWEp5YjNJNk9rVnljbTl5T2pwa1pYTmpjbWx3ZEdsdmJqbzZhREF6WlRBMVpUa3paR0ppWmprNE1qZnZDMlxcXG5kelpYSmtaVG82YzJWeU9qcHBiWEJzY3pvNlBHbHRjR3dnYzJWeVpHVTZPbk5sY2pvNlUyVnlhV0ZzYVhwbElHWnZjaUJoYkd4dll6bzZcXFxuYzNSeWFXNW5PanBUZEhKcGJtYytPanB6WlhKcFlXeHBlbVU2T21nME1HTXlZV0l3TURnME1HRXpPR0k1OEFzdVlXNTVhRzkzT2pwbGNuXFxcbkp2Y2pvNmIySnFaV04wWDJKdmVHVmtPanBvTVRNd056UXlZalJoWWpBeU16Z3hOUEVMTG1GdWVXaHZkem82WlhKeWIzSTZPbTlpYW1WalxcXG5kRjlpYjNobFpEbzZhREU1T0dWbU1ESmlaR0UwWkdZeVpEYnlDeTVoYm5sb2IzYzZPbVZ5Y205eU9qcHZZbXBsWTNSZlltOTRaV1E2T21cXFxuZ3pZamsyT1Rjd1pHTmhOamRpWlRRMDh3c3VZVzU1YUc5M09qcGxjbkp2Y2pvNmIySnFaV04wWDJKdmVHVmtPanBvT0dNeU1UVm1ZMlF3XFxcbk16STRZVFJoTWZRTExtRnVlV2h2ZHpvNlpYSnliM0k2T205aWFtVmpkRjlpYjNobFpEbzZhRGhtWVRKbFpXUXpZVGd3TkRoalpXSDFDMFxcXG5Gb1lYTm9Zbkp2ZDI0Nk9tMWhjRG82U0dGemFFMWhjRHhMTEZZc1V5eEJQam82WTI5dWRHRnBibk5mYTJWNU9qcG9ZVEZoWkRGaVlURXpcXFxuWm1Vek9HSmlNL1lMU0dSbGJtOWZZMkZqYUdWZlpHbHlPanBqWVdOb1pUbzZRMkZqYUdWa1ZYSnNUV1YwWVdSaGRHRTZPbWx6WDNKbFpHXFxcbmx5WldOME9qcG9ZVEZqWmpobE5UbGpaVFpsTWpOaFl2Y0xERjlmY25WemRGOWhiR3h2WS9nTEUxOWZjblZ6ZEY5aGJHeHZZMTk2WlhKdlxcXG5aV1Q1Q3pJOEpsUWdZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPanBvTTJGak5EUmhOR0k1TkRjM1ltRmhNUG9MT3pcXFxud21iWFYwSUZjZ1lYTWdZMjl5WlRvNlptMTBPanBYY21sMFpUNDZPbmR5YVhSbFgyTm9ZWEk2T21nek5XUXpZMlF5WTJJeE5tTm1NV0V6XFxcbit3czZQQ1p0ZFhRZ1Z5QmhjeUJqYjNKbE9qcG1iWFE2T2xkeWFYUmxQam82ZDNKcGRHVmZjM1J5T2pwb05UWXdObVJrWmpsaE9HUmlZV1xcXG5ZNFpmd0xPbUZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrT2pwbGVIUmxibVJmWm5KdmJWOXpiR2xqWlRvNmFHTTFPVEJqT0RCaU1EWXlcXFxuTVdFMk1tWDlDekk4SmxRZ1lYTWdZMjl5WlRvNlptMTBPanBFYVhOd2JHRjVQam82Wm0xME9qcG9Nek14WlRrNE5UbGxNRGcxTmpJNE1QXFxcbjRMUldOdmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d2JHRmpaVHh6WlhKa1pWOXFjMjl1T2pwbGNuSnZjam82UlhKeWIzSStPanBvTm1ZM1xcXG5NbUl6WWpKak1tVXhNREpoTS84TE1tTnZjbVU2T21WeWNtOXlPanBGY25KdmNqbzZaR1Z6WTNKcGNIUnBiMjQ2T21oa1l6SXdZekZpWkRcXFxuQXpNVEZpTVRJM2dBdzZQQ1p0ZFhRZ1Z5QmhjeUJqYjNKbE9qcG1iWFE2T2xkeWFYUmxQam82ZDNKcGRHVmZjM1J5T2pwb1pEZzVOREZpXFxcbk1qVTVOR016WXpSaE5JRU1PbUZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrT2pwbGVIUmxibVJmWm5KdmJWOXpiR2xqWlRvNmFEWTFNRFxcXG5VNU5HVmxObVkwTmpOa05XYUNERU04WVd4c2IyTTZPbk4wY21sdVp6bzZVM1J5YVc1bklHRnpJR052Y21VNk9tWnRkRG82UkdWaWRXYytcXFxuT2pwbWJYUTZPbWc1TVRNM1ptVTNOMlJtWTJZME9XSm1nd3c4YzJWeVpHVmZhbk52YmpvNlpHVTZPa1JsYzJWeWFXRnNhWHBsY2p4U1BqXFxcbm82WldGMFgyTm9ZWEk2T21obFpXUXpOV0psT0RnNU5tRTFZbVkwaEF3MGMyVnlaR1ZmYW5OdmJqbzZaR1U2T2sxaGNFRmpZMlZ6Y3p4U1xcXG5Qam82Ym1WM09qcG9aak13TVRGaVlUVXpZemxtTUdFME1JVU1YVHh3WVhKcmFXNW5YMnh2ZEY5amIzSmxPanB3WVhKcmFXNW5YMnh2ZERcXFxubzZWR2h5WldGa1JHRjBZU0JoY3lCamIzSmxPanB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d09qcG9aR1ZsWVdGaE1tWXhaakprXFxcbk0yRmhZNFlNT21Gc2JHOWpPanAyWldNNk9sWmxZenhVTEVFK09qcGxlSFJsYm1SZlpuSnZiVjl6YkdsalpUbzZhRFV3TXpobE1HRm1NRFxcXG5BM1pHSmlZam1IRERJOEpsUWdZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPanBvTkRobE5EVTBPVGRpWlRGall6SXpcXFxuWm9nTU9tRnNiRzlqT2pwMlpXTTZPbFpsWXp4VUxFRStPanBsZUhSbGJtUmZabkp2YlY5emJHbGpaVG82YURsbVlUZGxNVEk0WmpJNE1EXFxcbkkzT0dLSkRFMTNZWE50WDJKcGJtUm5aVzQ2T21OdmJuWmxjblE2T21sdGNHeHpPanBYWVhOdFQzQjBhVzl1UEVGaWFUNDZPbWx1ZEc5ZlxcXG5iM0IwYVc5dU9qcG9NRFEyTnpnek9ETmhNbU00TWpObVpZb01QMkZzYkc5ak9qcHlZWGRmZG1Wak9qcFNZWGRXWldNOFZDeEJQam82YzJcXFxuVjBYM0IwY2w5aGJtUmZZMkZ3T2pwb01XSTNPRGs0WlRBMFlUUTFOamMxTllzTUttcHpYM041Y3pvNlZXbHVkRGhCY25KaGVUbzZjMlYwXFxcbk9qcG9NakJtTVdOaU5XRTBOV1UwTnpVMlk0d01KbUZzYkc5ak9qcGhiR3h2WXpvNllXeHNiMk02T21oaVpUTmxZMlpsTnpabU5qVmpaRFxcXG5rd2pReEZQR0ZzYkc5ak9qcHpkSEpwYm1jNk9sTjBjbWx1WnlCaGN5QmpiM0psT2pwbWJYUTZPa1JwYzNCc1lYaytPanBtYlhRNk9taGhcXFxuWXpjMk56WXpaamd5TjJNMllqQTNqZ3dVWDE5M1ltbHVaR2RsYmw5bGVHNWZjM1J2Y21XUEREbzhKbTExZENCWElHRnpJR052Y21VNk9tXFxcblp0ZERvNlYzSnBkR1UrT2pwM2NtbDBaVjl6ZEhJNk9taGlaVGM1WW1ZNE1qZGhaVE0wWlRNMWtBdzVZV3hzYjJNNk9uTnNhV05sT2pwelxcXG5kR0ZpYkdWZmMyOXlkRG82ZTN0amJHOXpkWEpsZlgwNk9tZ3hOVE5sWkRNMFpqbGtZelZsWVdKaGtRdytZMjl5WlRvNmNIUnlPanBrY21cXFxuOXdYMmx1WDNCc1lXTmxQR2xrYm1FNk9uVjBjelEyT2pwSlpHNWhQam82YURnNE16VTFNVGt6WmpGbU9EVXlNbVdTREV4MWJtbGpiMlJsXFxcblgyNXZjbTFoYkdsNllYUnBiMjQ2T214dmIydDFjSE02T21OaGJtOXVhV05oYkY5amIyMWlhVzVwYm1kZlkyeGhjM002T21nNE1UUXdOelxcXG5oaE0yWTJPRE5sTURZMmt3dzZZV3hzYjJNNk9uWmxZem82Vm1WalBGUXNRVDQ2T21WNGRHVnVaRjltY205dFgzTnNhV05sT2pwb016Wm1cXFxuTlRKaE9EZGtaRFE0TldOaU5KUU1PbUZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrT2pwbGVIUmxibVJmWm5KdmJWOXpiR2xqWlRvNmFHXFxcbkZqTVdWbE5ETTVNREUxWmpNMU9EbVZEREE4SmxRZ1lYTWdZMjl5WlRvNlptMTBPanBFWldKMVp6NDZPbVp0ZERvNmFHRmtOR1ZpWkRSaVxcXG5OR0U1TW1GbE1tR1dEREk4SmxRZ1lYTWdZMjl5WlRvNlptMTBPanBFYVhOd2JHRjVQam82Wm0xME9qcG9aVEJrTlRoa056UXhZV0V4WXpcXFxuWXhaWmNNTlR3bWMzUnlJR0Z6SUhObGNtUmxPanBrWlRvNlJYaHdaV04wWldRK09qcG1iWFE2T21nMFlXUTFZak0zTWpBMVpXSmxNVFUwXFxcbm1Bd3lZMjl5WlRvNlpYSnliM0k2T2tWeWNtOXlPanBrWlhOamNtbHdkR2x2YmpvNmFEUmhOemM1TlRrell6STRPR1JrTUdXWkRDNWhiblxcXG5sb2IzYzZPbVZ5Y205eU9qcHZZbXBsWTNSZlltOTRaV1E2T21oaU1HWTNORFpsT0dOaFpHTmlaR1JsbWd3dVlXNTVhRzkzT2pwd2RISTZcXFxuT2xKbFpqeFVQam82WW5sZmJYVjBPanBvTjJabVkyWXpNemcwTldRME5tSXpNSnNNVGp4aGJubG9iM2M2T25keVlYQndaWEk2T2sxbGMzXFxcbk5oWjJWRmNuSnZjanhOUGlCaGN5QmpiM0psT2pwbWJYUTZPa1JsWW5WblBqbzZabTEwT2pwb05HRXlNMkZpWlRnME9XUmxNalkyWlp3TVxcXG5VRHhoYm5sb2IzYzZPbmR5WVhCd1pYSTZPazFsYzNOaFoyVkZjbkp2Y2p4TlBpQmhjeUJqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGsrT2pcXFxucG1iWFE2T21oa09UQTNaRFF5TmpBNVpURXhZVFprblF3d1BDWlVJR0Z6SUdOdmNtVTZPbVp0ZERvNlJHVmlkV2MrT2pwbWJYUTZPbWd6XFxcbk5EZzNPVFprTjJVd1pXTTFOVGRtbmd3eVBDWlVJR0Z6SUdOdmNtVTZPbVp0ZERvNlJHbHpjR3hoZVQ0Nk9tWnRkRG82YURka056QXpZMlxcXG5NMlpqYzFZbUZsTVdHZkRFTThZV3hzYjJNNk9uTjBjbWx1WnpvNlUzUnlhVzVuSUdGeklHTnZjbVU2T21adGREbzZSR1ZpZFdjK09qcG1cXFxuYlhRNk9tZzVNVE0zWm1VM04yUm1ZMlkwT1dKbW9BeEZQR0ZzYkc5ak9qcHpkSEpwYm1jNk9sTjBjbWx1WnlCaGN5QmpiM0psT2pwbWJYXFxcblE2T2tScGMzQnNZWGsrT2pwbWJYUTZPbWhoWXpjMk56WXpaamd5TjJNMllqQTNvUXd2YzNSa09qcHdZWFJvT2pwUVlYUm9PanBoYzE5MVxcXG5PRjl6YkdsalpUbzZhRFE1TkRObFpXVmlObVZrTkdVNU5HU2lER1k4YzNSa09qcHdZVzVwWTJ0cGJtYzZPbUpsWjJsdVgzQmhibWxqWDJcXFxuaGhibVJzWlhJNk9sTjBjbEJoYm1salVHRjViRzloWkNCaGN5QmpiM0psT2pwd1lXNXBZem82UW05NFRXVlZjRDQ2T21kbGREbzZhR1kwXFxcbk5qRXpaVGt3TTJNeFlqSmlORGFqREQ1emRHUTZPbk41Y3pvNmQyRnpiVG82WTI5dGJXOXVPanBvWVhOb2JXRndYM0poYm1SdmJWOXJaWFxcXG5sek9qcG9PV0pqTURFelpUYzJPREUyTVRFd01LUU1OR1JzYldGc2JHOWpPanBrYkcxaGJHeHZZem82UTJoMWJtczZPbU5wYm5WelpUbzZcXFxuYURNd05qTmxOak15WmprMU1tTXpOekNsRERwa2JHMWhiR3h2WXpvNlpHeHRZV3hzYjJNNk9rTm9kVzVyT2pwamJHVmhjbDl3YVc1MWMyXFxcblU2T21neE9UUTNNamN5WTJSalpUY3pZVEUxcGd3elpHeHRZV3hzYjJNNk9tUnNiV0ZzYkc5ak9qcERhSFZ1YXpvNmFXNTFjMlU2T21nd1xcXG5NbVk0WkdJeE1EVmhPR1ZsWkdWbXB3ekNBVHc4WVd4c2IyTTZPbUp2ZUdWa09qcENiM2c4WkhsdUlHTnZjbVU2T21WeWNtOXlPanBGY25cXFxuSnZjaXRqYjNKbE9qcHRZWEpyWlhJNk9sTmxibVFyWTI5eVpUbzZiV0Z5YTJWeU9qcFRlVzVqUGlCaGN5QmpiM0psT2pwamIyNTJaWEowXFxcbk9qcEdjbTl0UEdGc2JHOWpPanB6ZEhKcGJtYzZPbE4wY21sdVp6NCtPanBtY205dE9qcFRkSEpwYm1kRmNuSnZjaUJoY3lCamIzSmxPalxcXG5wbWJYUTZPa1JwYzNCc1lYaytPanBtYlhRNk9tZzFZbUkyWXpObU9XRmpNRE5qTmpNenFBekFBVHc4WVd4c2IyTTZPbUp2ZUdWa09qcENcXFxuYjNnOFpIbHVJR052Y21VNk9tVnljbTl5T2pwRmNuSnZjaXRqYjNKbE9qcHRZWEpyWlhJNk9sTmxibVFyWTI5eVpUbzZiV0Z5YTJWeU9qXFxcbnBUZVc1alBpQmhjeUJqYjNKbE9qcGpiMjUyWlhKME9qcEdjbTl0UEdGc2JHOWpPanB6ZEhKcGJtYzZPbE4wY21sdVp6NCtPanBtY205dFxcXG5PanBUZEhKcGJtZEZjbkp2Y2lCaGN5QmpiM0psT2pwbWJYUTZPa1JsWW5WblBqbzZabTEwT2pwb01qSmtNVFU1TXpWaU5qTmtaams0TTZcXFxua01WRHhoYkd4dll6bzZjM1J5YVc1bk9qcEdjbTl0VlhSbU9FVnljbTl5SUdGeklHTnZjbVU2T21WeWNtOXlPanBGY25KdmNqNDZPbVJsXFxcbmMyTnlhWEIwYVc5dU9qcG9ORGN5WWpKbU9ESTFOVGd5Tm1WbFlxb01NandtVkNCaGN5QmpiM0psT2pwbWJYUTZPa1JwYzNCc1lYaytPalxcXG5wbWJYUTZPbWhoTkRRNFltRmxOMll5TVRaaE16STJxd3d5WTI5eVpUbzZabTEwT2pwR2IzSnRZWFIwWlhJNk9tRnNkR1Z5Ym1GMFpUbzZcXFxuYURNeU9EaGtNVE16TlRsbU5tWTFNelNzRERoamIzSmxPanBtYlhRNk9rWnZjbTFoZEhSbGNqbzZaR1ZpZFdkZmJHOTNaWEpmYUdWNE9qXFxcbnBvWWpCbU1qZ3lOR0ptTTJRM1pqRmxOYTBNT0dOdmNtVTZPbVp0ZERvNlJtOXliV0YwZEdWeU9qcGtaV0oxWjE5MWNIQmxjbDlvWlhnNlxcXG5PbWd3TURnNVpqUXlNR1ExT0dJd09EUXhyZ3cwWTI5eVpUbzZjM1J5T2pwc2IzTnplVG82VlhSbU9FTm9kVzVyY3pvNmJtVjNPanBvT0RcXFxuZGtPVFprTlRJNU5UYzJNRGczWTY4TVNEeGhiR3h2WXpvNmRtVmpPanBXWldNOFZDeEJQaUJoY3lCamIzSmxPanB2Y0hNNk9tUnliM0E2XFxcbk9rUnliM0ErT2pwa2NtOXdPanBvWW1RNE5qRXpZekV5WVRFeE1qaG1ON0FNU1R4aGJHeHZZem82YzNSeWFXNW5PanBUZEhKcGJtY2dZWFxcXG5NZ1kyOXlaVG82Wm0xME9qcFhjbWwwWlQ0Nk9uZHlhWFJsWDNOMGNqbzZhR1F3WWpjMk5qazVPVE14TXpNMVkyS3hER2M4YzJWeVpHVmZcXFxuYW5OdmJqbzZjMlZ5T2pwUWNtVjBkSGxHYjNKdFlYUjBaWElnWVhNZ2MyVnlaR1ZmYW5OdmJqbzZjMlZ5T2pwR2IzSnRZWFIwWlhJK09qXFxcbnBpWldkcGJsOXZZbXBsWTNSZmRtRnNkV1U2T21nek9XUmtZV0UwTXpCbE5UWXpOREF4c2d3T1gxOXlkWE4wWDJSbFlXeHNiMk96RERaM1xcXG5ZWE50WDJKcGJtUm5aVzQ2T21OaGMzUTZPa3B6UTJGemREbzZaSGx1WDNKbFpqbzZhR0poTkRFMllqa3pOVEl4TmpFMFl6aTBERFozWVhcXFxuTnRYMkpwYm1SblpXNDZPbU5oYzNRNk9rcHpRMkZ6ZERvNlpIbHVYM0psWmpvNmFHVmxZbU5sT1RrellUaGhNR0k1WW1LMURHSThKbk5sXFxcbmNtUmxYM2RoYzIxZlltbHVaR2RsYmpvNmMyVnlPanBUWlhKcFlXeHBlbVZ5SUdGeklITmxjbVJsT2pwelpYSTZPbE5sY21saGJHbDZaWFxcXG5JK09qcHpaWEpwWVd4cGVtVmZiV0Z3T2pwb1pURm1OMlZoTmpZellUQmtaakJsWkxZTU5YTmxjbVJsWDNkaGMyMWZZbWx1WkdkbGJqbzZcXFxuVDJKcVpXTjBSWGgwT2pwelpYUTZPbWhsTXpkalpHVXhaVGcwTlRNMk5tRmp0d3hKUEdGc2JHOWpPanB6ZEhKcGJtYzZPbE4wY21sdVp5XFxcbkJoY3lCamIzSmxPanBtYlhRNk9sZHlhWFJsUGpvNmQzSnBkR1ZmYzNSeU9qcG9aREJpTnpZMk9UazVNekV6TXpWallyZ01PendtYlhWMFxcXG5JRmNnWVhNZ1kyOXlaVG82Wm0xME9qcFhjbWwwWlQ0Nk9uZHlhWFJsWDJOb1lYSTZPbWc1WWpBM01XTmxZMlU1TVdGak5HWmp1UXhKUEdcXFxuRnNiRzlqT2pwemRISnBibWM2T2xOMGNtbHVaeUJoY3lCamIzSmxPanBtYlhRNk9sZHlhWFJsUGpvNmQzSnBkR1ZmYzNSeU9qcG9aREJpXFxcbk56WTJPVGs1TXpFek16VmpZcm9NaHdFOGNHRnlhMmx1WjE5c2IzUmZZMjl5WlRvNmRHaHlaV0ZrWDNCaGNtdGxjam82YVcxd09qcFVhSFxcXG5KbFlXUlFZWEpyWlhJZ1lYTWdjR0Z5YTJsdVoxOXNiM1JmWTI5eVpUbzZkR2h5WldGa1gzQmhjbXRsY2pvNlZHaHlaV0ZrVUdGeWEyVnlcXFxuVkQ0Nk9uQnlaWEJoY21WZmNHRnlhem82YURabE16UmxPVFl5TjJRMU5EQXpZMkc3RElZQlBIQmhjbXRwYm1kZmJHOTBYMk52Y21VNk9uXFxcblJvY21WaFpGOXdZWEpyWlhJNk9tbHRjRG82VkdoeVpXRmtVR0Z5YTJWeUlHRnpJSEJoY210cGJtZGZiRzkwWDJOdmNtVTZPblJvY21WaFxcXG5aRjl3WVhKclpYSTZPbFJvY21WaFpGQmhjbXRsY2xRK09qcDFibkJoY210ZmJHOWphem82YURBek9URTFZemhtWmpFeE5UUTVZVG04RElcXFxuUUJQSEJoY210cGJtZGZiRzkwWDJOdmNtVTZPblJvY21WaFpGOXdZWEpyWlhJNk9tbHRjRG82VkdoeVpXRmtVR0Z5YTJWeUlHRnpJSEJoXFxcbmNtdHBibWRmYkc5MFgyTnZjbVU2T25Sb2NtVmhaRjl3WVhKclpYSTZPbFJvY21WaFpGQmhjbXRsY2xRK09qcDBhVzFsWkY5dmRYUTZPbVxcXG5nek5EUTFZek5sWkdGaU9HTTVZemxqdlF4L1BIQmhjbXRwYm1kZmJHOTBYMk52Y21VNk9uUm9jbVZoWkY5d1lYSnJaWEk2T21sdGNEbzZcXFxuVkdoeVpXRmtVR0Z5YTJWeUlHRnpJSEJoY210cGJtZGZiRzkwWDJOdmNtVTZPblJvY21WaFpGOXdZWEpyWlhJNk9sUm9jbVZoWkZCaGNtXFxcbnRsY2xRK09qcHdZWEpyT2pwb05UWTRZamRoWTJWaFlqTm1OV0l6WWI0TWhRRThjR0Z5YTJsdVoxOXNiM1JmWTI5eVpUbzZkR2h5WldGa1xcXG5YM0JoY210bGNqbzZhVzF3T2pwVWFISmxZV1JRWVhKclpYSWdZWE1nY0dGeWEybHVaMTlzYjNSZlkyOXlaVG82ZEdoeVpXRmtYM0JoY21cXFxudGxjam82VkdoeVpXRmtVR0Z5YTJWeVZENDZPbkJoY210ZmRXNTBhV3c2T21nd01UaGlOekZpTXpRNE1EUmtaR0V4dnd3elkyOXlaVG82XFxcbmMzUnlPam84YVcxd2JDQnpkSEkrT2pwbGJtUnpYM2RwZEdnNk9tZ3hPRFl5WWpZNE9XSTVPRGN3TkRnd3dBeEpQR0ZzYkc5ak9qcHpkSFxcXG5KcGJtYzZPbE4wY21sdVp5QmhjeUJqYjNKbE9qcG1iWFE2T2xkeWFYUmxQam82ZDNKcGRHVmZjM1J5T2pwb1pEQmlOelkyT1RrNU16RXpcXFxuTXpWallzRU1OWGRoYzIxZlltbHVaR2RsYmpvNlNuTldZV3gxWlRvNmFYTmZablZ1WTNScGIyNDZPbWcwTXpBME5ETmtNVGcxWWpWaE1UXFxcbkJrd2d3M2QyRnpiVjlpYVc1a1oyVnVPanBqWVhOME9qcEtjME5oYzNRNk9taGhjMTkwZVhCbE9qcG9NemM0WkRreU56Wm1OMlF5WTJRMlxcXG5ac01NTTNkaGMyMWZZbWx1WkdkbGJqbzZTbk5XWVd4MVpUbzZhWE5mYjJKcVpXTjBPanBvWXpJMk16UTFaVFJqTWpjelpqZGtOY1FNTFdcXFxucHpYM041Y3pvNlNYUmxjbUYwYjNKT1pYaDBPanBrYjI1bE9qcG9PRGxtT0dOa1pqaGlOamt6TURWbVpzVU1ZMnB6WDNONWN6bzZYem82XFxcblBHbHRjR3dnZDJGemJWOWlhVzVrWjJWdU9qcGpZWE4wT2pwS2MwTmhjM1FnWm05eUlHcHpYM041Y3pvNlFYSnlZWGxDZFdabVpYSStPalxcXG5wcGJuTjBZVzVqWlc5bU9qcG9ZV05qTkRoak5HWXdZMkU0WVRRMFk4WU1ZbXB6WDNONWN6bzZYem82UEdsdGNHd2dkMkZ6YlY5aWFXNWtcXFxuWjJWdU9qcGpZWE4wT2pwS2MwTmhjM1FnWm05eUlHcHpYM041Y3pvNlZXbHVkRGhCY25KaGVUNDZPbWx1YzNSaGJtTmxiMlk2T21obU1EXFxcbkpoT0RnNFlUTmtNV0ptWXpCaHh3eFBZMjl5WlRvNlkyMXdPanBwYlhCc2N6bzZQR2x0Y0d3Z1kyOXlaVG82WTIxd09qcFFZWEowYVdGc1xcXG5SWEU4SmtJK0lHWnZjaUFtUVQ0Nk9tVnhPanBvWmpsbE5USmhORGt6TnpFME5XWTVPTWdNT3p3bWJYVjBJRmNnWVhNZ1kyOXlaVG82Wm1cXFxuMTBPanBYY21sMFpUNDZPbmR5YVhSbFgyTm9ZWEk2T21nd05UUTRZbUl4WldKbVpXRTBZVEpoeVF4SlBHRnNiRzlqT2pwemRISnBibWM2XFxcbk9sTjBjbWx1WnlCaGN5QmpiM0psT2pwbWJYUTZPbGR5YVhSbFBqbzZkM0pwZEdWZmMzUnlPanBvWkRCaU56WTJPVGs1TXpFek16VmpZc1xcXG5vTVRUeGpiM0psT2pwdVpYUTZPbWx3WDJGa1pISTZPa2x3ZGpaQlpHUnlJR0Z6SUdOdmNtVTZPbU50Y0RvNlVHRnlkR2xoYkVWeFBqbzZcXFxuWlhFNk9tZzJNRE14TldObE1UazVaRFV4T0dVMHl3eHdQR052Y21VNk9uTnNhV05sT2pwemIzSjBPanB0WlhKblpWOXpiM0owT2pwU2RXXFxcbjVXWldNOFVuVnVRV3hzYjJOR0xGSjFia1JsWVd4c2IyTkdQaUJoY3lCamIzSmxPanB2Y0hNNk9tUnliM0E2T2tSeWIzQStPanBrY205d1xcXG5PanBvT1dJMk5HSTBaVEJtT1RFelkyRmhaY3dNaFFFOGRXNXBZMjlrWlY5dWIzSnRZV3hwZW1GMGFXOXVPanBrWldOdmJYQnZjMlU2T2tcXFxuUmxZMjl0Y0c5emFYUnBiMjV6UEVrK0lHRnpJR052Y21VNk9tbDBaWEk2T25SeVlXbDBjem82YVhSbGNtRjBiM0k2T2tsMFpYSmhkRzl5XFxcblBqbzZibVY0ZERvNmUzdGpiRzl6ZFhKbGZYMDZPbWd3TTJZMU4yUmpNRGd3T1dGaFlqVmx6UXlGQVR4MWJtbGpiMlJsWDI1dmNtMWhiR1xcXG5sNllYUnBiMjQ2T21SbFkyOXRjRzl6WlRvNlJHVmpiMjF3YjNOcGRHbHZibk04U1Q0Z1lYTWdZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpcXFxuT2pwcGRHVnlZWFJ2Y2pvNlNYUmxjbUYwYjNJK09qcHVaWGgwT2pwN2UyTnNiM04xY21WOWZUbzZhRE13TVdVd1lUY3dZalZrWVRCak5EXFxcblhPREVkMWJtbGpiMlJsWDI1dmNtMWhiR2w2WVhScGIyNDZPbTV2Y20xaGJHbDZaVG82YVhOZmFHRnVaM1ZzWDNONWJHeGhZbXhsT2pwb1xcXG5OMlU0WkdSa1pERmpNVFk1TVRKaVk4OE1SenhrZVc0Z2MyVnlaR1U2T21SbE9qcEZlSEJsWTNSbFpDQmhjeUJqYjNKbE9qcG1iWFE2T2tcXFxuUnBjM0JzWVhrK09qcG1iWFE2T21nek9UVTNPRFF3TkdNME1EbGxOemxtMEF3NlBDWnRkWFFnVnlCaGN5QmpiM0psT2pwbWJYUTZPbGR5XFxcbmFYUmxQam82ZDNKcGRHVmZjM1J5T2pwb1lqSXlNR1UzTUdKa01qUXdZamM1T2RFTUNuSjFjM1JmY0dGdWFXUFNERms4YzNSa09qcHplWFxcXG5NNk9uZGhjMjA2T205dVkyVTZPa052YlhCc1pYUnBiMjVIZFdGeVpDQmhjeUJqYjNKbE9qcHZjSE02T21SeWIzQTZPa1J5YjNBK09qcGtcXFxuY205d09qcG9NakkxWmpZeU1qRTFNalF5WmpCa1lkTU1NR1JzYldGc2JHOWpPanBrYkcxaGJHeHZZem82YkdWaGMzUmZZbWwwT2pwb05XXFxcbkpsWkRkalpqZGtOV1UxTW1WbU45UU1OV1JzYldGc2JHOWpPanBrYkcxaGJHeHZZem82UTJoMWJtczZPbTF0WVhCd1pXUTZPbWc0WW1WaVxcXG5ZbVk1T1RsbE5HUmlZVGd3MVF4UVpHeHRZV3hzYjJNNk9tUnNiV0ZzYkc5ak9qcERhSFZ1YXpvNmMyVjBYM05wZW1WZllXNWtYM0JwYm5cXFxuVnpaVjl2Wmw5cGJuVnpaVjlqYUhWdWF6bzZhR0UwWTJGbU1tWTVNMlZpWm1ObU1HSFdERE5rYkcxaGJHeHZZem82Wkd4dFlXeHNiMk02XFxcbk9sTmxaMjFsYm5RNk9uUnZjRG82YURjMU16QXpPV0kzTmpSaU5UTmpOVGpYRERzOEptMTFkQ0JYSUdGeklHTnZjbVU2T21adGREbzZWM1xcXG5KcGRHVStPanAzY21sMFpWOWphR0Z5T2pwb1ltWmhObVJrTURFME5EazNabVkyT2RnTVREeGhiR3h2WXpvNmMzUnlhVzVuT2pwR2NtOXRcXFxuVlhSbU9FVnljbTl5SUdGeklHTnZjbVU2T21adGREbzZSR2x6Y0d4aGVUNDZPbVp0ZERvNmFESXhORGMyTkRkaU1EQTBaalk0WkdYWkREXFxcbmxqYjNKbE9qcHZjSE02T21aMWJtTjBhVzl1T2pwR2JrOXVZMlU2T21OaGJHeGZiMjVqWlRvNmFETmpabU0wT0RFek1EZzNORFpsTTJiYVxcXG5ERTVqYjNKbE9qcG1iWFE2T201MWJUbzZhVzF3T2pvOGFXMXdiQ0JqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGtnWm05eUlIVXpNajQ2T21cXFxuWnRkRG82YURNMU1tWmlNR1l4TXpCaU5tSmxZVGpiREUxamIzSmxPanBtYlhRNk9tNTFiVG82YVcxd09qbzhhVzF3YkNCamIzSmxPanBtXFxcbmJYUTZPa1JwYzNCc1lYa2dabTl5SUhVNFBqbzZabTEwT2pwb01URXdaREF5TWpabE5UZzNaV1ExTnR3TVRtTnZjbVU2T21adGREbzZiblxcXG5WdE9qcHBiWEE2T2p4cGJYQnNJR052Y21VNk9tWnRkRG82UkdsemNHeGhlU0JtYjNJZ2RURTJQam82Wm0xME9qcG9OMlkwTWpsaE1UQmlcXFxuTVdRMk16bGhNdDBNTjJOdmNtVTZPbVp0ZERvNlluVnBiR1JsY25NNk9rUmxZblZuVTJWME9qcGxiblJ5ZVRvNmFHRmpaRGhpWkRReE5tXFxcblpsTWpFek5UYmVERG84Sm0xMWRDQlhJR0Z6SUdOdmNtVTZPbVp0ZERvNlYzSnBkR1UrT2pwM2NtbDBaVjl6ZEhJNk9tZzJZek0xWmpVNVxcXG5NMk5oTURVMU0yVTIzd3hPWTI5eVpUbzZabTEwT2pwdWRXMDZPbWx0Y0RvNlBHbHRjR3dnWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1SUdcXFxuWnZjaUIxTmpRK09qcG1iWFE2T21nelpqYzFPVGRtTmpZM1pXSXpOamd5NEF3NFkyOXlaVG82Ym5WdE9qbzhhVzF3YkNCMU16SStPanBtXFxcbmNtOXRYM04wY2w5eVlXUnBlRG82YURZMVl6UmtaREppWXpJek1qSXlOalRoREI5ZlgzZGlhVzVrWjJWdVgyRmtaRjkwYjE5emRHRmphMVxcXG45d2IybHVkR1Z5NGd4VFkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEdGc2JHOWpPanAyWldNNk9sWmxZenhoYkd4dll6bzZcXFxuYzNSeWFXNW5PanBUZEhKcGJtYytQam82YURsbU1XUTBaVGhoTnpnMVpXUXlNelBqREVCamIzSmxPanB3ZEhJNk9tUnliM0JmYVc1ZmNHXFxcbnhoWTJVOFlXeHNiMk02T25abFl6bzZWbVZqUEhVNFBqNDZPbWcxWXpneU5tUTRZemc1WkdZeFlXVTE1QXdwWVd4c2IyTTZPbUZzYkc5alxcXG5PanBpYjNoZlpuSmxaVG82YUdNek1HWTBPR1kzWXpRNE5tWmhZekRsRERGelpYSmtaVjkzWVhOdFgySnBibVJuWlc0Nk9tWnliMjFmZG1cXFxuRnNkV1U2T21nME1HUTJNbUk0TnpSbFlqSmpOR1UwNWd5MUFUeHpaWEprWlRvNlpHVTZPbWx0Y0d4ek9qbzhhVzF3YkNCelpYSmtaVG82XFxcblpHVTZPa1JsYzJWeWFXRnNhWHBsSUdadmNpQnpkR1E2T21OdmJHeGxZM1JwYjI1ek9qcG9ZWE5vT2pwdFlYQTZPa2hoYzJoTllYQThTeVxcXG54V0xGTStQam82WkdWelpYSnBZV3hwZW1VNk9rMWhjRlpwYzJsMGIzSThTeXhXTEZNK0lHRnpJSE5sY21SbE9qcGtaVG82Vm1semFYUnZcXFxuY2o0Nk9tVjRjR1ZqZEdsdVp6bzZhRFpqWlRZMU1tVTNZMlEyWldZeU5USG5ETHdCUEdSbGJtOWZZMkZqYUdWZlpHbHlPanBqWVdOb1pUXFxcbm82WHpvNlBHbHRjR3dnYzJWeVpHVTZPbVJsT2pwRVpYTmxjbWxoYkdsNlpTQm1iM0lnWkdWdWIxOWpZV05vWlY5a2FYSTZPbU5oWTJobFxcXG5PanBUWlhKcFlXeHBlbVZrUTJGamFHVmtWWEpzVFdWMFlXUmhkR0UrT2pwa1pYTmxjbWxoYkdsNlpUbzZYMTlXYVhOcGRHOXlJR0Z6SUhcXFxuTmxjbVJsT2pwa1pUbzZWbWx6YVhSdmNqNDZPbVY0Y0dWamRHbHVaem82YUdNME5HWTFaVEUwTlRFeVlqbGhNMmJvRE5zQlBHUmxibTlmXFxcblkyRmphR1ZmWkdseU9qcHNiMk5oYkRvNmJXRnVhV1psYzNRNk9sODZPanhwYlhCc0lITmxjbVJsT2pwa1pUbzZSR1Z6WlhKcFlXeHBlbVxcXG5VZ1ptOXlJR1JsYm05ZlkyRmphR1ZmWkdseU9qcHNiMk5oYkRvNmJXRnVhV1psYzNRNk9sTmxjbWxoYkdsNlpXUk1iMk5oYkVOaFkyaGxcXFxuVFdGdWFXWmxjM1JFWVhSaFRXOWtkV3hsUGpvNlpHVnpaWEpwWVd4cGVtVTZPbDlmVm1semFYUnZjaUJoY3lCelpYSmtaVG82WkdVNk9sXFxcblpwYzJsMGIzSStPanBsZUhCbFkzUnBibWM2T21obVlqazBZV0ZoWVRNd1pUVXdaamd4NlF6VkFUeGtaVzV2WDJOaFkyaGxYMlJwY2pvNlxcXG5iRzlqWVd3Nk9tMWhibWxtWlhOME9qcGZPam84YVcxd2JDQnpaWEprWlRvNlpHVTZPa1JsYzJWeWFXRnNhWHBsSUdadmNpQmtaVzV2WDJcXFxuTmhZMmhsWDJScGNqbzZiRzlqWVd3Nk9tMWhibWxtWlhOME9qcFRaWEpwWVd4cGVtVmtURzlqWVd4RFlXTm9aVTFoYm1sbVpYTjBSR0YwXFxcbllUNDZPbVJsYzJWeWFXRnNhWHBsT2pwZlgxWnBjMmwwYjNJZ1lYTWdjMlZ5WkdVNk9tUmxPanBXYVhOcGRHOXlQam82Wlhod1pXTjBhV1xcXG41bk9qcG9aakF5WVRRNU9URm1aV1ZsTldNMFpPb01TR052Y21VNk9tOXdjem82Wm5WdVkzUnBiMjQ2T2tadVQyNWpaVG82WTJGc2JGOXZcXFxuYm1ObGUzdDJkR0ZpYkdVdWMyaHBiWDE5T2pwb09EQmpObVE1WWpBNE9HTTFObUU0WnVzTVNHTnZjbVU2T205d2N6bzZablZ1WTNScGIyXFxcbjQ2T2tadVQyNWpaVG82WTJGc2JGOXZibU5sZTN0MmRHRmliR1V1YzJocGJYMTlPanBvWXpGall6Y3dZakExWVRNMVpETmlNT3dNZTJOdlxcXG5jbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR4aGJubG9iM2M2T21WeWNtOXlPanBGY25KdmNrbHRjR3c4WkdWdWIxOWpZV05vWlZcXFxuOWthWEk2T21kc2IySmhiRG82VlhKc1ZHOUdhV3hsYm1GdFpVTnZiblpsY25OcGIyNUZjbkp2Y2o0K09qcG9NVEZpWVRKbFpHSmpPVFV4XFxcbk1XWXpNKzBNWEdOdmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d2JHRmpaVHhoYm5sb2IzYzZPbVZ5Y205eU9qcEZjbkp2Y2tsdGNHdzhjM1xcXG5Sa09qcHBiem82WlhKeWIzSTZPa1Z5Y205eVBqNDZPbWc0WlRBeU1UZGtOVEJsTTJReE9EaG03Z3hmWTI5eVpUbzZjSFJ5T2pwa2NtOXdcXFxuWDJsdVgzQnNZV05sUEdGdWVXaHZkem82WlhKeWIzSTZPa1Z5Y205eVNXMXdiRHh6WlhKa1pWOXFjMjl1T2pwbGNuSnZjam82UlhKeWIzXFxcbkkrUGpvNmFEaGxNakV4TlRFMFlUQmtOemhrTmpIdkRHTmpiM0psT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJVOFlXNTVhRzkzT2pwbFxcXG5jbkp2Y2pvNlJYSnliM0pKYlhCc1BHRnNiRzlqT2pwemRISnBibWM2T2taeWIyMVZkR1k0UlhKeWIzSStQam82YURRM016Qmpaall4WkdcXFxuVTRZamhoTnpid0RENDhVU0JoY3lCb1lYTm9Zbkp2ZDI0Nk9rVnhkV2wyWVd4bGJuUThTejQrT2pwbGNYVnBkbUZzWlc1ME9qcG9ZMlJrXFxcbk9XUmhaR1kwTVdKaE9XRXlPUEVNU2p4aGJHeHZZem82YzNSeWFXNW5PanBUZEhKcGJtY2dZWE1nWTI5eVpUbzZabTEwT2pwWGNtbDBaVFxcXG40Nk9uZHlhWFJsWDJOb1lYSTZPbWhpWXpNd09Ea3dZakJtTkRZMlpUSTI4Z3d0WVc1NWFHOTNPanBsY25KdmNqbzZiMkpxWldOMFgyUnlcXFxuYjNBNk9taGtPVEpqTldFM05UYzVNRGN4TVRkbTh3d3pZVzU1YUc5M09qcGxjbkp2Y2pvNmIySnFaV04wWDJSeWIzQmZabkp2Ym5RNk9tXFxcbmd3TURsaU16STFPR1EyT1RabE1UYzI5QXd6WVc1NWFHOTNPanBsY25KdmNqbzZiMkpxWldOMFgyUnliM0JmWm5KdmJuUTZPbWcyT1RabFxcXG5OREpqTVRFME5tSTFPV1U1OVF3ellXNTVhRzkzT2pwbGNuSnZjam82YjJKcVpXTjBYMlJ5YjNCZlpuSnZiblE2T21oaE1XWTFPRGsxTVRcXFxuVm1NR0k0WXpWaTlnd3pZVzU1YUc5M09qcGxjbkp2Y2pvNmIySnFaV04wWDJSeWIzQmZabkp2Ym5RNk9taGlZVFF4T1Raak56aGtNbVZsXFxcblpqazM5d3hGYUdGemFHSnliM2R1T2pweVlYYzZPbWx1Ym1WeU9qcFNZWGRVWVdKc1pUeFVMRUUrT2pwbWNtVmxYMkoxWTJ0bGRITTZPbVxcXG5oaFl6YzBOREZtTkRReE1HWXlNRGxqK0F4R1pHVnViMTlqWVdOb1pWOWthWEk2T214dlkyRnNPanBNYjJOaGJFTmhZMmhsVFdGdWFXWmxcXFxuYzNROFJXNTJQam82Ym1WM09qcG9aVEEwTkdRM09EWmpPREZrTmpJNU0va01HbDlmY25WemRGOWhiR3h2WTE5bGNuSnZjbDlvWVc1a2JHXFxcblZ5K2d4QVkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEdGc2JHOWpPanAyWldNNk9sWmxZengxT0Q0K09qcG9PRFkxWkdNNVxcXG5ZV015TnpNelptUXlZdnNNUW1OdmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d2JHRmpaVHhoYkd4dll6bzZjM1J5YVc1bk9qcFRkSEpwYm1cXFxuYytPanBvWmpWa1lUSXpaV1kzT1dZek5qYzFOUHdNS1dGc2JHOWpPanBoYkd4dll6bzZZbTk0WDJaeVpXVTZPbWczWlRKallUYzROMlEwXFxcbllUZGpZekUwL1F4S1BHRnNiRzlqT2pwemRISnBibWM2T2xOMGNtbHVaeUJoY3lCamIzSmxPanBtYlhRNk9sZHlhWFJsUGpvNmQzSnBkR1xcXG5WZlkyaGhjam82YUdKak16QTRPVEJpTUdZME5qWmxNamIrREVSelpYSmtaVjlxYzI5dU9qcGtaVG82UkdWelpYSnBZV3hwZW1WeVBGSStcXFxuT2pwd1lYSnpaVjloYm5sZmJuVnRZbVZ5T2pwb05tTTVZVE5qTmpaa05qWTBZV1JpWnY4TVNEeHpaWEprWlY5cWMyOXVPanBsY25KdmNqXFxcbm82UlhKeWIzSWdZWE1nWTI5eVpUbzZabTEwT2pwRWFYTndiR0Y1UGpvNlptMTBPanBvT0RFNFpURXdaREV4WmpKallqVTVOb0FOd1FGalxcXG5iM0psT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJVOGMyMWhiR3gyWldNNk9rbHVkRzlKZEdWeVBGc29LbU52Ym5OMElIQmhjbXRwYm1cXFxuZGZiRzkwWDJOdmNtVTZPbkJoY210cGJtZGZiRzkwT2pwVWFISmxZV1JFWVhSaExHTnZjbVU2T205d2RHbHZiam82VDNCMGFXOXVQSEJoXFxcbmNtdHBibWRmYkc5MFgyTnZjbVU2T25Sb2NtVmhaRjl3WVhKclpYSTZPbWx0Y0RvNlZXNXdZWEpyU0dGdVpHeGxQaWs3SURoZFBqNDZPbVxcXG5nM1lUSmpOR015TW1WbE16QmtaV0ZoZ1Ewd1BDWlVJR0Z6SUdOdmNtVTZPbVp0ZERvNlJHVmlkV2MrT2pwbWJYUTZPbWd5TWpBeE9XSmxcXFxuTkRBek56SXhNRGhpZ2cxQVkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEdGc2JHOWpPanAyWldNNk9sWmxZengxT0Q0K09qXFxcbnBvT1RobFl6VmhaakZsTWprd09UZzBOb01OUW1OdmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d2JHRmpaVHhoYkd4dll6bzZkbVZqT2pwV1xcXG5aV004Sm5OMGNqNCtPanBvWVdZeU56SXlPRFkyTWpReVpEVTBNNFFOTXp3bVZDQmhjeUJqYjNKbE9qcG1iWFE2T2t4dmQyVnlTR1Y0UGpcXFxubzZabTEwT2pwb09EVTBZelEwWTJOaE5UQTJZemt6WllVTk1Ed21WQ0JoY3lCamIzSmxPanBtYlhRNk9rUmxZblZuUGpvNlptMTBPanBvXFxcbk5Ea3hPVGMxTmpaaFpHWTJZVFl6TklZTkpXcHpYM041Y3pvNlFYSnlZWGs2T21kbGREbzZhRFZtWVdKa1pXVTVPV1UwTWpRM05HYUhEU1xcXG5wM1lYTnRYMkpwYm1SblpXNDZPblJvY205M1gzTjBjam82YUdZd1pHWTNaVEUyTW1ZMlpERTVaam1JRFRGM1lYTnRYMkpwYm1SblpXNDZcXFxuT2w5ZmNuUTZPblJvY205M1gyNTFiR3c2T21nM1pEUTNNemRsTjJZeE5EVmxPRGs0aVEweWQyRnpiVjlpYVc1a1oyVnVPanBmWDNKME9qXFxcbnBpYjNKeWIzZGZabUZwYkRvNmFEQXpOV1k0TnpBNVl6UXdOVEF3TldhS0RVQmpiM0psT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJVOFxcXG5ZV3hzYjJNNk9uWmxZem82Vm1WalBIVTRQajQ2T21nelpqTTVNR05rT1RReE1tUTVNV0ZqaXcxS1BHRnNiRzlqT2pwemRISnBibWM2T2xcXFxuTjBjbWx1WnlCaGN5QmpiM0psT2pwbWJYUTZPbGR5YVhSbFBqbzZkM0pwZEdWZlkyaGhjam82YUdKak16QTRPVEJpTUdZME5qWmxNamFNXFxcbkRUSThKbFFnWVhNZ1kyOXlaVG82Wm0xME9qcEVhWE53YkdGNVBqbzZabTEwT2pwb1lXWTVObVUxTVROaVpHVmlNalJsTVkwTlZUeHpaWFxcXG5Ka1pUbzZaR1U2T21sdGNHeHpPanBUZEhKcGJtZFdhWE5wZEc5eUlHRnpJSE5sY21SbE9qcGtaVG82Vm1semFYUnZjajQ2T21WNGNHVmpcXFxuZEdsdVp6bzZhRGs0WXpJeU1XWXdZVGRqTVRBeU5XR09EWjBCUEhObGNtUmxPanBrWlRvNmFXMXdiSE02T2p4cGJYQnNJSE5sY21SbE9qXFxcbnBrWlRvNlJHVnpaWEpwWVd4cGVtVWdabTl5SUhOMFpEbzZkR2x0WlRvNlUzbHpkR1Z0VkdsdFpUNDZPbVJsYzJWeWFXRnNhWHBsT2pwRVxcXG5kWEpoZEdsdmJsWnBjMmwwYjNJZ1lYTWdjMlZ5WkdVNk9tUmxPanBXYVhOcGRHOXlQam82Wlhod1pXTjBhVzVuT2pwb09EQTBObVk0TVRcXFxuaGtOV0poWkRsa1pJOE5qQUU4YzJWeVpHVTZPbVJsT2pwcGJYQnNjem82UEdsdGNHd2djMlZ5WkdVNk9tUmxPanBFWlhObGNtbGhiR2w2XFxcblpTQm1iM0lnZFRNeVBqbzZaR1Z6WlhKcFlXeHBlbVU2T2xCeWFXMXBkR2wyWlZacGMybDBiM0lnWVhNZ2MyVnlaR1U2T21SbE9qcFdhWFxcXG5OcGRHOXlQam82Wlhod1pXTjBhVzVuT2pwb01qTTNNelEyWlRKbE1UWTBPV1ZrTXBBTmpBRThjMlZ5WkdVNk9tUmxPanBwYlhCc2N6bzZcXFxuUEdsdGNHd2djMlZ5WkdVNk9tUmxPanBFWlhObGNtbGhiR2w2WlNCbWIzSWdkVFkwUGpvNlpHVnpaWEpwWVd4cGVtVTZPbEJ5YVcxcGRHXFxcbmwyWlZacGMybDBiM0lnWVhNZ2MyVnlaR1U2T21SbE9qcFdhWE5wZEc5eVBqbzZaWGh3WldOMGFXNW5PanBvWkRVM05XUTBaV0V4TXpVMlxcXG5OamM0TVpFTmUyTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR4aGJubG9iM2M2T21WeWNtOXlPanBGY25KdmNrbHRjR3c4WVdcXFxuNTVhRzkzT2pwM2NtRndjR1Z5T2pwTlpYTnpZV2RsUlhKeWIzSThZV3hzYjJNNk9uTjBjbWx1WnpvNlUzUnlhVzVuUGo0K09qcG9ZVEJoXFxcbk1HUTVZV0ZoTlRjNVpUWmhaSklOT3p3bWJYVjBJRmNnWVhNZ1kyOXlaVG82Wm0xME9qcFhjbWwwWlQ0Nk9uZHlhWFJsWDJOb1lYSTZPbVxcXG5neE9ERXlPVGt4TnpjeFltWXlZamt5a3cwellXNTVhRzkzT2pwbGNuSnZjam82YjJKcVpXTjBYMlJ5YjNCZlpuSnZiblE2T21nek5tUmlcXFxuTldSbU1qaGpNak5rTVRjd2xBMUJjM1JrT2pwemVYTTZPbmRoYzIwNk9tOXpYM04wY2pvNlUyeHBZMlU2T25SdlgzTjBjbWx1WjE5c2IzXFxcbk56ZVRvNmFESTNObVkyTVRoaU1tVTBOVFpqTWpLVkRUSmtiRzFoYkd4dll6bzZaR3h0WVd4c2IyTTZPa05vZFc1ck9qcHphWHBsT2pwb1xcXG5aVFprWldGbVl6azRZalZpT1dFeE5KWU5OR1JzYldGc2JHOWpPanBrYkcxaGJHeHZZem82UTJoMWJtczZPbkJwYm5WelpUbzZhREl5TTJcXFxuUmpaV1ZrWkRBeU5UTTBZamlYRFRsa2JHMWhiR3h2WXpvNlpHeHRZV3hzYjJNNk9sTmxaMjFsYm5RNk9tbHpYMlY0ZEdWeWJqbzZhR0pqXFxcbk1USmhObVZpTkdZNU5qbGxabU9ZRFRsa2JHMWhiR3h2WXpvNlpHeHRZV3hzYjJNNk9sTmxaMjFsYm5RNk9uTjVjMTltYkdGbmN6bzZhRFxcXG5FNFlUTm1NVFUzWkdGbVpHWmpOaktaRFRBOEpsUWdZWE1nWTI5eVpUbzZabTEwT2pwRVpXSjFaejQ2T21adGREbzZhR1V3TldRMVkyWmxcXFxuTW1ZeE16a3hNVE9hRFROaGJHeHZZem82WVd4c2IyTTZPbWhoYm1Sc1pWOWhiR3h2WTE5bGNuSnZjam82YURjeU4yRTFaalV6TnpNd01HXFxcblk1WlRtYkRUMWhiR3h2WXpvNllXeHNiMk02T21oaGJtUnNaVjloYkd4dlkxOWxjbkp2Y2pvNmNuUmZaWEp5YjNJNk9tZ3pNbUl3WldSbVxcXG5ObUV6WXpGaU5XSTRuQTB6UEhOMGNpQmhjeUJqYjNKbE9qcG1iWFE2T2tScGMzQnNZWGsrT2pwbWJYUTZPbWd5TmpJM1pqTmtOVFV5TTJcXFxuTTVOV1psblEwMVkyOXlaVG82YzNSeU9qcHNiM056ZVRvNlZYUm1PRU5vZFc1ck9qcDJZV3hwWkRvNmFESXpaRFJqTm1WbU5qYzRNR1prXFxcbk1EaWVEVGRqYjNKbE9qcHpkSEk2T214dmMzTjVPanBWZEdZNFEyaDFibXM2T21sdWRtRnNhV1E2T21neU1ETTRObVF5TXpVMk1EQXdNRFxcXG5ZNG53MHdQQ1pVSUdGeklHTnZjbVU2T21adGREbzZSR1ZpZFdjK09qcG1iWFE2T21nellUUmtNRGt5WVdFME5URXpZekExb0Ewd1BDWlVcXFxuSUdGeklHTnZjbVU2T21adGREbzZSR1ZpZFdjK09qcG1iWFE2T21nM1lXUTBNVGRpT1RRMk1qWXlaakl4b1EwR2JXVnRjMlYwb2cwR2JXXFxcblZ0WTIxd293MEhiV1Z0Ylc5MlphUU5CbTFsYldOd2VhVU5RR0Z1ZVdodmR6bzZaWEp5YjNJNk9qeHBiWEJzSUdGdWVXaHZkem82UlhKeVxcXG5iM0krT2pwbWNtOXRYM04wWkRvNmFEZzFaREF4WXprM1lXTmpabVZoWXpPbURVOXpkR1E2T21OdmJHeGxZM1JwYjI1ek9qcG9ZWE5vT2pcXFxucHRZWEE2T2xKaGJtUnZiVk4wWVhSbE9qcHVaWGM2T2t0RldWTTZPbDlmWjJWMGFYUTZPbWhtTVdaaU16SXhPRGcyT1RrMU1XVTVwdzB5XFxcblBGUWdZWE1nYzJWeVpHVTZPbVJsT2pwRmVIQmxZM1JsWkQ0Nk9tWnRkRG82YURJM01UVmxOemN5T0dOa01tVTBZVGFvRFRJOFZDQmhjeVxcXG5CelpYSmtaVG82WkdVNk9rVjRjR1ZqZEdWa1BqbzZabTEwT2pwb00yVmxPVEF6WkRGbFkyUTBaVEJsT2FrTk1qeFVJR0Z6SUhObGNtUmxcXFxuT2pwa1pUbzZSWGh3WldOMFpXUStPanBtYlhRNk9tZzBNak0xTldJNE1UZGpPREptWlRZeXFnMHlQRlFnWVhNZ2MyVnlaR1U2T21SbE9qXFxcbnBGZUhCbFkzUmxaRDQ2T21adGREbzZhRGMzTm1Ga09URmtaVGszWTJFMVpER3JEVEk4VkNCaGN5QnpaWEprWlRvNlpHVTZPa1Y0Y0dWalxcXG5kR1ZrUGpvNlptMTBPanBvWW1ReU4yVXdaRGd3WWpNd05tSXlNS3dOTWp4VUlHRnpJSE5sY21SbE9qcGtaVG82Ulhod1pXTjBaV1ErT2pcXFxucG1iWFE2T21oak5UTXdNekE1WkdZd1kyUTJNR1V5clEweVBGUWdZWE1nYzJWeVpHVTZPbVJsT2pwRmVIQmxZM1JsWkQ0Nk9tWnRkRG82XFxcbmFHUTRPRGsxT0RBeVpXWTBNVGsyWW1HdURUSThWQ0JoY3lCelpYSmtaVG82WkdVNk9rVjRjR1ZqZEdWa1BqbzZabTEwT2pwb1pUY3hZMlxcXG5GaVlqWTRaalJqT1RSbFk2OE5NanhVSUdGeklITmxjbVJsT2pwa1pUbzZSWGh3WldOMFpXUStPanBtYlhRNk9taGxPR1poTnpoaE0yVTJcXFxuWWpKa1lqTXpzQTBzWTI5eVpUbzZaWEp5YjNJNk9rVnljbTl5T2pwallYVnpaVG82YURjeVpqQmpNVEkxTXpsbVptSXhOVFd4RFN4amIzXFxcbkpsT2pwbGNuSnZjam82UlhKeWIzSTZPbU5oZFhObE9qcG9ZV0pqTXpZeFpXTXhNbVZqTUdWaU43SU5RR0Z1ZVdodmR6bzZaWEp5YjNJNlxcXG5PanhwYlhCc0lHRnVlV2h2ZHpvNlJYSnliM0krT2pwbWNtOXRYM04wWkRvNmFESmlPR0UxWmpoallUZzNNV1JoT1RlekRVQmhibmxvYjNcXFxuYzZPbVZ5Y205eU9qbzhhVzF3YkNCaGJubG9iM2M2T2tWeWNtOXlQam82Wm5KdmJWOXpkR1E2T21nellqUTFPVGRsTW1ZMllUbGxOVFUxXFxcbnRBMUFZVzU1YUc5M09qcGxjbkp2Y2pvNlBHbHRjR3dnWVc1NWFHOTNPanBGY25KdmNqNDZPbVp5YjIxZmMzUmtPanBvTkdVM01XWXhZelxcXG5Nd1lUWTBPVGxoTkxVTlFHRnVlV2h2ZHpvNlpYSnliM0k2T2p4cGJYQnNJR0Z1ZVdodmR6bzZSWEp5YjNJK09qcG1jbTl0WDNOMFpEbzZcXFxuYUdGaFltWXdZV0UwTjJKa1pqZ3daV0syRFVrOFlXNTVhRzkzT2pwbGNuSnZjam82UlhKeWIzSkpiWEJzUEVVK0lHRnpJR052Y21VNk9tXFxcblp0ZERvNlJHVmlkV2MrT2pwbWJYUTZPbWhoWkdNeU5qUmxNREV3T0RZellUSmt0dzFKUEdGdWVXaHZkem82WlhKeWIzSTZPa1Z5Y205eVxcXG5TVzF3YkR4RlBpQmhjeUJqYjNKbE9qcG1iWFE2T2tSbFluVm5Qam82Wm0xME9qcG9ZbUZtTVRObVl6WmlaRGRsTkRZeE03Z05TVHhoYm5cXFxubG9iM2M2T21WeWNtOXlPanBGY25KdmNrbHRjR3c4UlQ0Z1lYTWdZMjl5WlRvNlptMTBPanBFWldKMVp6NDZPbVp0ZERvNmFHSm1Oemt5XFxcblpUQTNNekk1WVRJeFlqYTVEVWs4WVc1NWFHOTNPanBsY25KdmNqbzZSWEp5YjNKSmJYQnNQRVUrSUdGeklHTnZjbVU2T21adGREbzZSR1xcXG5WaWRXYytPanBtYlhRNk9taG1PRGt5TnpNek0yUm1NVGN5WldFd3VnMDBiMjVqWlY5alpXeHNPanB6ZVc1ak9qcE1ZWHA1UEZRc1JqNDZcXFxuT21admNtTmxPanBvWlRjMk1HTTFZelkwTW1JNE5EazNOYnNOTkc5dVkyVmZZMlZzYkRvNmMzbHVZem82VEdGNmVUeFVMRVkrT2pwbWIzXFxcbkpqWlRvNmFESTVaV016TldWbFpqY3pNVFEyT1dXOERTeGpiM0psT2pwbGNuSnZjam82UlhKeWIzSTZPbU5oZFhObE9qcG9OVEpqTnpZNFxcXG5ZMk5rTkRJM09ERm1OcjBOUFhObGNtUmxYMnB6YjI0Nk9tUmxPanBFWlhObGNtbGhiR2w2WlhJOFVqNDZPbTVsZUhSZlkyaGhjam82YURcXFxuVXhZV0V5WWpNeU4yRmlNekV5WVRtK0RVQnpaWEprWlY5cWMyOXVPanBrWlRvNlJHVnpaWEpwWVd4cGVtVnlQRkkrT2pwbWFYaGZjRzl6XFxcbmFYUnBiMjQ2T21nMk9HRTNNemRpWXpWaU1tUXpaalUzdncxWWNHRnlhMmx1WjE5c2IzUmZZMjl5WlRvNmNHRnlhMmx1WjE5c2IzUTZPblxcXG5kcGRHaGZkR2h5WldGa1gyUmhkR0U2T2xSSVVrVkJSRjlFUVZSQk9qcGZYMmRsZEdsME9qcG9Nell3WWpjMU9EWXpZek5oTTJRMk9NQU5cXFxuU1hOMFpEbzZjM2x6WDJOdmJXMXZiam82WW1GamEzUnlZV05sT2pwZlgzSjFjM1JmWlc1a1gzTm9iM0owWDJKaFkydDBjbUZqWlRvNmFHXFxcblJsWXpRM09XRmtObVEyTkRBM05XYkJEU2hxYzE5emVYTTZPa0Z5Y21GNU9qcHNaVzVuZEdnNk9tZ3pOVGRsTVdNeFl6TXpZVFEwWkdVMFxcXG53ZzBsYW5OZmMzbHpPanBGY25KdmNqbzZibVYzT2pwb05qUTFOamxpWWpFNFl6Rm1OR1kxTnNNTkttcHpYM041Y3pvNlQySnFaV04wT2pcXFxucGxiblJ5YVdWek9qcG9aak5pWldZME9UUXlPR0k1T1RBME5jUU5MV3B6WDNONWN6bzZWV2x1ZERoQmNuSmhlVG82YkdWdVozUm9PanBvXFxcbk1ERmtORFptTURkbE5ESTNOVGN4T01VTkttcHpYM041Y3pvNlZXbHVkRGhCY25KaGVUbzZibVYzT2pwb09ERmxPR1ZpT0dZMFlqVXpaalxcXG5jeVk4WU5ZenhoYkd4dll6bzZkbVZqT2pwV1pXTThWRDRnWVhNZ1lXeHNiMk02T25abFl6bzZjM0JsWTE5bWNtOXRYMmwwWlhJNk9sTndcXFxuWldOR2NtOXRTWFJsY2p4VUxFaytQam82Wm5KdmJWOXBkR1Z5T2pwb01qZ3laRGd5TUdJMk9UVXdOVEU1TnNjTlNYTjBaRG82YzNselgyXFxcbk52YlcxdmJqbzZZbUZqYTNSeVlXTmxPanBmWDNKMWMzUmZaVzVrWDNOb2IzSjBYMkpoWTJ0MGNtRmpaVG82YUdReE4yWXpZVGxpTlRobVxcXG5NR1EzTmpMSURVbHpkR1E2T25ONWMxOWpiMjF0YjI0Nk9tSmhZMnQwY21GalpUbzZYMTl5ZFhOMFgyVnVaRjl6YUc5eWRGOWlZV05yZEhcXFxuSmhZMlU2T21neE1ESTFaalE1T1ROaFlXUXpOamsweVEwc1kyOXlaVG82WlhKeWIzSTZPa1Z5Y205eU9qcGpZWFZ6WlRvNmFHTTJaV1UyXFxcbk9UTXlOV0kzTkdSbE16ZktEVWs4WVc1NWFHOTNPanBsY25KdmNqbzZSWEp5YjNKSmJYQnNQRVUrSUdGeklHTnZjbVU2T21adGREbzZSR1xcXG5WaWRXYytPanBtYlhRNk9taGhNamcyWmpOak56WTNNRE0zTURNNXl3MUJjM1JrT2pwd1lXNXBZMnRwYm1jNk9uQmhibWxqWDJOdmRXNTBcXFxuT2pwcGMxOTZaWEp2WDNOc2IzZGZjR0YwYURvNmFESTBZamhsTVdObFl6a3paV1pqT0RqTURVTThjM1JrT2pwcGJ6bzZaWEp5YjNJNk9rXFxcblZ5Y205eUlHRnpJR052Y21VNk9tWnRkRG82UkdWaWRXYytPanBtYlhRNk9taGhaamhoWVRBd09XVmxNRFJpT0dVNHpRMUpjM1JrT2pwelxcXG5lWE5mWTI5dGJXOXVPanBpWVdOcmRISmhZMlU2T2w5ZmNuVnpkRjlsYm1SZmMyaHZjblJmWW1GamEzUnlZV05sT2pwb04yWmxOVEZtWWpcXFxuUmtNMkpoTmpBMk1NNE5PV1JzYldGc2JHOWpPanBrYkcxaGJHeHZZem82UTJoMWJtczZPbkJzZFhOZmIyWm1jMlYwT2pwb1lqZzBNMlF6XFxcbk1UY3dZV1V6TVdVNFpzOE5PbVJzYldGc2JHOWpPanBrYkcxaGJHeHZZem82UTJoMWJtczZPbTFwYm5WelgyOW1abk5sZERvNmFHVTBZV1xcXG5FNE5qQm1PRFE0TmpOak16alFEVFJrYkcxaGJHeHZZem82Wkd4dFlXeHNiMk02T2tOb2RXNXJPanAwYjE5dFpXMDZPbWhsTldVMU9USXdcXFxuTWpVMU9XVTVZMkZqMFEwMlpHeHRZV3hzYjJNNk9tUnNiV0ZzYkc5ak9qcERhSFZ1YXpvNlpuSnZiVjl0WlcwNk9tZzBNRFl5Wm1Ga016XFxcbmt6WTJJeE4yTmswZzB3WTI5eVpUbzZiM0J6T2pwbWRXNWpkR2x2YmpvNlJtNDZPbU5oYkd3Nk9taGhNVE14WVdRellUSTJZek5sTVdKaVxcXG4wdzAzWTI5eVpUbzZiM0J6T2pwbWRXNWpkR2x2YmpvNlJtNU5kWFE2T21OaGJHeGZiWFYwT2pwb05XSmtaVE5qWWpBNFlqSTVZMlZsT05cXFxuUU5TR052Y21VNk9tOXdjem82Wm5WdVkzUnBiMjQ2T2tadVQyNWpaVG82WTJGc2JGOXZibU5sZTN0MmRHRmliR1V1YzJocGJYMTlPanBvXFxcbk1EZGpOMkkxWkdReVptVm1OV1UxTjlVTnZ3RmpiM0psT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJVOFBHRnNiRzlqT2pwaWIzaGxaRFxcXG5vNlFtOTRQR1I1YmlCamIzSmxPanBsY25KdmNqbzZSWEp5YjNJclkyOXlaVG82YldGeWEyVnlPanBUWlc1a0syTnZjbVU2T20xaGNtdGxcXFxuY2pvNlUzbHVZejRnWVhNZ1kyOXlaVG82WTI5dWRtVnlkRG82Um5KdmJUeGhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWMrUGpvNlpuXFxcbkp2YlRvNlUzUnlhVzVuUlhKeWIzSStPanBvTldRNE56QmtPR1EyTWpBek4yRmlOOVlOU1dOdmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d1xcXG5iR0ZqWlR4aGJHeHZZem82YzNSeWFXNW5PanBHY205dFZYUm1PRVZ5Y205eVBqbzZhR00yTkRNeE5EZ3laR1V4TjJJNU56YlhEVTFqYjNcXFxuSmxPanB3ZEhJNk9tUnliM0JmYVc1ZmNHeGhZMlU4YzJWeVpHVmZkMkZ6YlY5aWFXNWtaMlZ1T2pwbGNuSnZjam82UlhKeWIzSStPanBvXFxcbk9EZGxPRGxsT0dVMU5USmhNRFV6TjlnTnZ3RmpiM0psT2pwd2RISTZPbVJ5YjNCZmFXNWZjR3hoWTJVOFBHRnNiRzlqT2pwaWIzaGxaRFxcXG5vNlFtOTRQR1I1YmlCamIzSmxPanBsY25KdmNqbzZSWEp5YjNJclkyOXlaVG82YldGeWEyVnlPanBUWlc1a0syTnZjbVU2T20xaGNtdGxcXFxuY2pvNlUzbHVZejRnWVhNZ1kyOXlaVG82WTI5dWRtVnlkRG82Um5KdmJUeGhiR3h2WXpvNmMzUnlhVzVuT2pwVGRISnBibWMrUGpvNlpuXFxcbkp2YlRvNlUzUnlhVzVuUlhKeWIzSStPanBvTkRZM01qRmtZelJtTnpreU5qazBaZGtOVkR4elpYSmtaVjlxYzI5dU9qcHlaV0ZrT2pwVFxcXG5kSEpTWldGa0lHRnpJSE5sY21SbFgycHpiMjQ2T25KbFlXUTZPbEpsWVdRK09qcHBaMjV2Y21WZmMzUnlPanBvTUdFek9XVTNOVFppTXpcXFxuTXpaREl4TXRvTlFtTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR4aGJHeHZZem82YzNSeWFXNW5PanBUZEhKcGJtYytPanBvXFxcbk9XWmtPV0kxWXpZelpqVmxabVptWTlzTk5YZGhjMjFmWW1sdVpHZGxiam82WDE5eWREbzZiV0ZzYkc5algyWmhhV3gxY21VNk9tZ3pOelxcXG5VMVpEUmpPR1k1WmpFMU5qQXczQTFDWTI5eVpUbzZjSFJ5T2pwa2NtOXdYMmx1WDNCc1lXTmxQR0ZzYkc5ak9qcHpkSEpwYm1jNk9sTjBcXFxuY21sdVp6NDZPbWcyTlRKbU1UQXhaRGRrTm1NelpUZGkzUTAyZFc1cFkyOWtaVjlpYVdScE9qcGphR0Z5WDJSaGRHRTZPbUpwWkdsZlkyXFxcbnhoYzNNNk9taGxOek5pTjJFNE5HVXdNamMwT1RsaTNnMWhZMjl5WlRvNmNIUnlPanBrY205d1gybHVYM0JzWVdObFBHRnVlV2h2ZHpvNlxcXG5kM0poY0hCbGNqbzZUV1Z6YzJGblpVVnljbTl5UEdGc2JHOWpPanB6ZEhKcGJtYzZPbE4wY21sdVp6NCtPanBvTVRJMlpEYzRabUZsTm1cXFxuRTNaRE16Tk44Tk8yRnVlV2h2ZHpvNlpYSnliM0k2T2p4cGJYQnNJR0Z1ZVdodmR6bzZSWEp5YjNJK09qcHRjMmM2T21obE9XVmhPV0k0XFxcbllqUmtZakl4T0RSaTRBME5YMTl5Wkd4ZlpHVmhiR3h2WStFTk5tUnNiV0ZzYkc5ak9qcGtiRzFoYkd4dll6bzZWSEpsWlVOb2RXNXJPalxcXG5wdVpYaDBPanBvTlRrek9UazJNVFl3TURGaU5qVXhOZUlOTm1Sc2JXRnNiRzlqT2pwa2JHMWhiR3h2WXpvNlZISmxaVU5vZFc1ck9qcHdcXFxuY21WMk9qcG9ObVUxWmpWbE1tRTVaakZsT1RsaVplTU5QbU52Y21VNk9uQmhibWxqT2pwd1lXNXBZMTlwYm1adk9qcFFZVzVwWTBsdVptXFxcbjg2T20xbGMzTmhaMlU2T21oaE9XRmtNakZsWlRKaVpEbG1NRFV3NUEwL1kyOXlaVG82Y0dGdWFXTTZPbkJoYm1salgybHVabTg2T2xCaFxcXG5ibWxqU1c1bWJ6bzZiRzlqWVhScGIyNDZPbWhrTlRBM05XSXpNamMxWkdJME5HVXk1UTFCWTI5eVpUbzZjR0Z1YVdNNk9uQmhibWxqWDJcXFxubHVabTg2T2xCaGJtbGpTVzVtYnpvNlkyRnVYM1Z1ZDJsdVpEbzZhR0l6TnpFeE1ERmhOams0TjJZMU5tUG1EUzVqYjNKbE9qcGxjbkp2XFxcbmNqbzZSWEp5YjNJNk9uUjVjR1ZmYVdRNk9tZ3hNR001WmpnM1pUTm1aV1F4WWpJejV3MHVZMjl5WlRvNlpYSnliM0k2T2tWeWNtOXlPalxcXG5wMGVYQmxYMmxrT2pwb05URTNOVGcwTUdabVlqZ3haVFptTWVnTkxtTnZjbVU2T21WeWNtOXlPanBGY25KdmNqbzZkSGx3WlY5cFpEbzZcXFxuYURVNU9HUTRaR1ZoTmpGaVpHVTJOR0xwRFM1amIzSmxPanBsY25KdmNqbzZSWEp5YjNJNk9uUjVjR1ZmYVdRNk9tZzJNbVZoT1Raa1l6XFxcbkZtT0daak5XWmk2ZzB1WTI5eVpUbzZaWEp5YjNJNk9rVnljbTl5T2pwMGVYQmxYMmxrT2pwb05qYzJZakpoTWpSaU5Ua3lZekZrTWVzTlxcXG5MbU52Y21VNk9tVnljbTl5T2pwRmNuSnZjam82ZEhsd1pWOXBaRG82YURkaFlqa3hNR00zT1dVME5qVXhaV1BzRFM1amIzSmxPanBsY25cXFxuSnZjam82UlhKeWIzSTZPblI1Y0dWZmFXUTZPbWhpWXpRNFlqQmtOalUyT1RVd05tVTM3UTB1WTI5eVpUbzZaWEp5YjNJNk9rVnljbTl5XFxcbk9qcDBlWEJsWDJsa09qcG9Zems0WW1aa05HTmtPRFV5Wm1RMlp1NE5MbU52Y21VNk9tVnljbTl5T2pwRmNuSnZjam82ZEhsd1pWOXBaRFxcXG5vNmFHTmpZalF5TkRZelpqZzNOelptWXpQdkRXazhjMlZ5WkdWZmQyRnpiVjlpYVc1a1oyVnVPanBsY25KdmNqbzZSWEp5YjNJZ1lYTWdcXFxuWTI5eVpUbzZZMjl1ZG1WeWREbzZSbkp2YlR4M1lYTnRYMkpwYm1SblpXNDZPa3B6Vm1Gc2RXVStQam82Wm5KdmJUbzZhR1ptTURRMU5XXFxcbkV6TlRFMU5HTTNaVG53RFR0elpYSmtaVjkzWVhOdFgySnBibVJuWlc0Nk9uTmxjam82VTJWeWFXRnNhWHBsY2pvNmJtVjNPanBvTXpZd1xcXG5PR00xTURNeE1ESTNPV1ZtWS9FTkxtTnZjbVU2T21WeWNtOXlPanBGY25KdmNqbzZkSGx3WlY5cFpEbzZhRGhtWmpCbE5UY3pNR00zTlRcXFxuVmlPR1R5RFM1amIzSmxPanBsY25KdmNqbzZSWEp5YjNJNk9uUjVjR1ZmYVdRNk9taGxaamhoTldWbU5HRTBNalptTXpJNTh3MDVQRlFnXFxcbllYTWdZMjl5WlRvNlltOXljbTkzT2pwQ2IzSnliM2M4VkQ0K09qcGliM0p5YjNjNk9tZzFZelZrWldRMFl6Z3lPR0l4TkRsazlBMDRQR1xcXG54dlp6bzZUbTl3VEc5bloyVnlJR0Z6SUd4dlp6bzZURzluUGpvNlpXNWhZbXhsWkRvNmFERmpaVEUyTldFMVpHUm1OV1l5TkRmMURURThcXFxuVkNCaGN5QmpiM0psT2pwaGJuazZPa0Z1ZVQ0Nk9uUjVjR1ZmYVdRNk9tZzFNalV5TjJZelptWTJZamRpTWpBNTlnMUZjR0Z5YTJsdVoxXFxcbjlzYjNSZlkyOXlaVG82ZEdoeVpXRmtYM0JoY210bGNqbzZhVzF3T2pwMGFISmxZV1JmZVdsbGJHUTZPbWczTUdKbVlXVXhaRGczTm1WbFxcXG5NV00zOXcwdlpHRjBZVjkxY213Nk9rUmhkR0ZWY213Nk9tMXBiV1ZmZEhsd1pUbzZhRGN4WlRkaFlqRXdOV1kxWkdZellURDREVHgzWVhcXFxuTnRYMkpwYm1SblpXNDZPbU5oYzNRNk9rcHpRMkZ6ZERvNmRXNWphR1ZqYTJWa1gzSmxaam82YURBellUQTVNR1ptTXpJNFptRmhOVEg1XFxcbkRUMTNZWE50WDJKcGJtUm5aVzQ2T21OaGMzUTZPa3B6UTJGemREbzZkVzVqYUdWamEyVmtYMmx1ZEc4Nk9tZ3dOelk1TXpjNU1XUTFZV1xcXG5RMk1tWmwrZzFEUEdwelgzTjVjem82VFdGd0lHRnpJR052Y21VNk9tUmxabUYxYkhRNk9rUmxabUYxYkhRK09qcGtaV1poZFd4ME9qcG9cXFxuWW1SbFpHWmlZakU1TUdFMU5qRTRNUHNOUmp4cWMxOXplWE02T2s5aWFtVmpkQ0JoY3lCamIzSmxPanBrWldaaGRXeDBPanBFWldaaGRXXFxcbngwUGpvNlpHVm1ZWFZzZERvNmFHVXdaR1kxTlRVeFpUTTFaVFV6WVREOERZWUJkMkZ6YlY5aWFXNWtaMlZ1T2pwamIyNTJaWEowT2pwcFxcXG5iWEJzY3pvNlBHbHRjR3dnZDJGemJWOWlhVzVrWjJWdU9qcGpiMjUyWlhKME9qcDBjbUZwZEhNNk9rbHVkRzlYWVhOdFFXSnBJR1p2Y2lcXFxuQjNZWE50WDJKcGJtUm5aVzQ2T2twelJYSnliM0krT2pwcGJuUnZYMkZpYVRvNmFHRTRNVEZrWldNeFptWTFNV1U0WXpqOURTZDNZWE50XFxcblgySnBibVJuWlc0Nk9tMWxiVzl5ZVRvNmFHTXhPRFJrWlRNM016QXpOakkzWldMK0RURThWQ0JoY3lCamIzSmxPanBoYm5rNk9rRnVlVFxcXG40Nk9uUjVjR1ZmYVdRNk9tZzNORGMyTkRZeE5XRXpPVFk0WmpoaS93MUJZMjl5WlRvNmFYUmxjam82ZEhKaGFYUnpPanBwZEdWeVlYUnZcXFxuY2pvNlNYUmxjbUYwYjNJNk9tSjVYM0psWmpvNmFEZzRaVEk0WkRNMU9HWmtNVGhrTmpHQURqRThWQ0JoY3lCamIzSmxPanBoYm5rNk9rXFxcbkZ1ZVQ0Nk9uUjVjR1ZmYVdRNk9tZ3daV1EwTTJVMU1XSmhaVGczT0dSaGdRNHVZMjl5WlRvNlpYSnliM0k2T2tWeWNtOXlPanAwZVhCbFxcXG5YMmxrT2pwb09HTmxPV0V4Wm1JNFpUTTJaR1ExTklJT0xtTnZjbVU2T21WeWNtOXlPanBGY25KdmNqbzZkSGx3WlY5cFpEbzZhR0ZpTlRcXFxubGhOVE5sWkdaak1HSXdObUtERGpFOFZDQmhjeUJqYjNKbE9qcGhibms2T2tGdWVUNDZPblI1Y0dWZmFXUTZPbWd4WWprNVpERmpNMk13XFxcbk56RXdNelEwaEE0eFBGUWdZWE1nWTI5eVpUbzZZVzU1T2pwQmJuaytPanAwZVhCbFgybGtPanBvWWpZelpEWTFNbVkwWkRnNFpqUmpNWVxcXG5VT01UeFVJR0Z6SUdOdmNtVTZPbUZ1ZVRvNlFXNTVQam82ZEhsd1pWOXBaRG82YUdZME1UTTJORFJsTURReFpXWmxaamFHRGkxemRHUTZcXFxuT25Sb2NtVmhaRG82U1c1dVpYSTZPbkJoY210bGNqbzZhR1psTWpVeVpUQTJaalJsWVdVek5UV0hEaVp6ZEdRNk9uQnliMk5sYzNNNk9tXFxcbkZpYjNKME9qcG9NbUprTWpRME56Qm1OV1UwTldNeE5JZ09FbDlmY25WemRGOXpkR0Z5ZEY5d1lXNXBZNGtPUEdSc2JXRnNiRzlqT2pwa1xcXG5iRzFoYkd4dll6bzZRMmgxYm1zNk9tWmxibU5sY0c5emRGOW9aV0ZrT2pwb1l6YzNPRGMzTXpVMU1qbG1PVGs1TUlvT09HUnNiV0ZzYkdcXFxuOWpPanBrYkcxaGJHeHZZem82UTJoMWJtczZPbTFsYlY5dlptWnpaWFE2T21nNE5qQmtZMk00TkRJd09UQmxZakEzaXc0M1pHeHRZV3hzXFxcbmIyTTZPbVJzYldGc2JHOWpPanBVY21WbFEyaDFibXM2T21Ob2RXNXJPanBvWWpVMU9XSXhOVFk1WWpJNVlUWXdNWXdPU0R4a2JHMWhiR1xcXG54dll6bzZjM2x6T2pwVGVYTjBaVzBnWVhNZ1pHeHRZV3hzYjJNNk9rRnNiRzlqWVhSdmNqNDZPbkpsYldGd09qcG9NV1F6TlRZNFl6YzJcXFxuTm1ZeFl6UXpObzBPVER4a2JHMWhiR3h2WXpvNmMzbHpPanBUZVhOMFpXMGdZWE1nWkd4dFlXeHNiMk02T2tGc2JHOWpZWFJ2Y2o0Nk9tXFxcblp5WldWZmNHRnlkRG82YUdGbVpEVXlZVEprT0dJNVkyUmpZaktPRGtjOFpHeHRZV3hzYjJNNk9uTjVjem82VTNsemRHVnRJR0Z6SUdSc1xcXG5iV0ZzYkc5ak9qcEJiR3h2WTJGMGIzSStPanBtY21WbE9qcG9NRGt5TkRNelpHTTRaVFJrTURSak9JOE9VenhrYkcxaGJHeHZZem82YzNcXFxubHpPanBUZVhOMFpXMGdZWE1nWkd4dFlXeHNiMk02T2tGc2JHOWpZWFJ2Y2o0Nk9tTmhibDl5Wld4bFlYTmxYM0JoY25RNk9taG1OakJqXFxcbk5ERmpZbU5pTkdVMll6WTBrQTVTUEdSc2JXRnNiRzlqT2pwemVYTTZPbE41YzNSbGJTQmhjeUJrYkcxaGJHeHZZem82UVd4c2IyTmhkR1xcXG45eVBqbzZZV3hzYjJOaGRHVnpYM3BsY205ek9qcG9aRFUxWlRsa09XTXdPVFkzTldNME9KRU9URHhrYkcxaGJHeHZZem82YzNsek9qcFRcXFxuZVhOMFpXMGdZWE1nWkd4dFlXeHNiMk02T2tGc2JHOWpZWFJ2Y2o0Nk9uQmhaMlZmYzJsNlpUbzZhREpqWWpabFlUQXhNemxoWkdObE56XFxcbkdTRGpFOFZDQmhjeUJqYjNKbE9qcGhibms2T2tGdWVUNDZPblI1Y0dWZmFXUTZPbWhqTVdVd01qSXlZVGxqWkdJNVlqSTVrdzV5WTI5eVxcXG5aVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUENacGJtUmxlRzFoY0RvNmJXRndPanBKYm1SbGVFMWhjRHhoYkd4dll6bzZjM1J5YVdcXFxuNW5PanBUZEhKcGJtY3NZV3hzYjJNNk9uTjBjbWx1WnpvNlUzUnlhVzVuUGo0Nk9tZ3laREUzTWpjNFpHSTBNVGd5WkRJeGxBNkRBV052XFxcbmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d2JHRmpaVHh6WlhKa1pUbzZaR1U2T21sdGNHeHpPam84YVcxd2JDQnpaWEprWlRvNlpHVTZPa1xcXG5SbGMyVnlhV0ZzYVhwbElHWnZjaUIxTXpJK09qcGtaWE5sY21saGJHbDZaVG82VUhKcGJXbDBhWFpsVm1semFYUnZjajQ2T21nMU1EaGpcXFxuWTJWbE5XUTRZakkyTVRSbWxRNHhZMjl5WlRvNmNIUnlPanBrY205d1gybHVYM0JzWVdObFBHSnZiMncrT2pwb1lUZG1NekptTm1ReE0yXFxcbk0wTURObE1KWU9MbU52Y21VNk9tVnljbTl5T2pwRmNuSnZjam82Y0hKdmRtbGtaVG82YURBM09USXlZek0zTVdFek9XUXpOakdYRGk1alxcXG5iM0psT2pwbGNuSnZjam82UlhKeWIzSTZPbkJ5YjNacFpHVTZPbWd3WmpobE56TmpNalJoTjJKa01ERTBtQTVEWTI5eVpUbzZjSFJ5T2pcXFxucGtjbTl3WDJsdVgzQnNZV05sUENaM1lYTnRYMkpwYm1SblpXNDZPa3B6Vm1Gc2RXVStPanBvTVdabVpqUTBOall6WkdReU56RTJPSmtPXFxcblBXTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR4amIzSmxPanBtYlhRNk9rVnljbTl5UGpvNmFEZ3lOell3WWpJNE5ERXhPRFxcXG5Bek1UaWFEa2RqYjNKbE9qcHdkSEk2T21SeWIzQmZhVzVmY0d4aFkyVThKbTExZENCaGJHeHZZem82YzNSeWFXNW5PanBUZEhKcGJtYytcXFxuT2pwb1pEWXlOMkUzWVdKbFpUTmxOVGhqTlpzT01tTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR4MWMybDZaVDQ2T21nMU16XFxcblkxT0RNeE9HRXhPV1F5WldabW5BNDlZMjl5WlRvNmNIUnlPanBrY205d1gybHVYM0JzWVdObFBHTnZjbVU2T21adGREbzZSWEp5YjNJK1xcXG5PanBvTkdZek9UbGlaV015TkdaaU1qYzRZWjBPTG1OdmNtVTZPbVZ5Y205eU9qcEZjbkp2Y2pvNmNISnZkbWxrWlRvNmFETXdZbUV6TjJcXFxuTTBZVFprWlRVMU0yS2VEanRqYjNKbE9qcHdkSEk2T21SeWIzQmZhVzVmY0d4aFkyVThiRzluT2pwT2IzQk1iMmRuWlhJK09qcG9PREJrXFxcbk5XWXdNekl3TUdFMk5EaGtZWjhPTkR4c2IyYzZPazV2Y0V4dloyZGxjaUJoY3lCc2IyYzZPa3h2Wno0Nk9teHZaem82YURFNU9XWXhNRFxcXG5Oak1Ea3pOV1psWXppZ0RqWThiRzluT2pwT2IzQk1iMmRuWlhJZ1lYTWdiRzluT2pwTWIyYytPanBtYkhWemFEbzZhR1poT0dNNE1qVTNcXFxuTVdaa05UZzFZaldoRGpKamIzSmxPanB3ZEhJNk9tUnliM0JmYVc1ZmNHeGhZMlU4Sm1KdmIydytPanBvWTJRek5UQmxNRGRoT0dNM1lUXFxcbkU0TktJT01tTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR4MWMybDZaVDQ2T21nNU5HTTFNV1JrWldJd1ptVTJORE00b3c1K1xcXG5QSEJoY210cGJtZGZiRzkwWDJOdmNtVTZPblJvY21WaFpGOXdZWEpyWlhJNk9tbHRjRG82VkdoeVpXRmtVR0Z5YTJWeUlHRnpJSEJoY21cXFxudHBibWRmYkc5MFgyTnZjbVU2T25Sb2NtVmhaRjl3WVhKclpYSTZPbFJvY21WaFpGQmhjbXRsY2xRK09qcHVaWGM2T21nME1ETTROelEwXFxcblltWm1NakU0TTJJeHBBNUpZMjl5WlRvNmNIUnlPanBrY205d1gybHVYM0JzWVdObFBDWmpiM0psT2pwaGJHeHZZem82YkdGNWIzVjBPalxcXG5wTVlYbHZkWFErT2pwb1pqazJPVE0xTUdSaFlXTTJNVFkyTktVT00yTnZjbVU2T25CMGNqbzZaSEp2Y0Y5cGJsOXdiR0ZqWlR3bWRYTnBcXFxuZW1VK09qcG9PREpoT0RFMVpXTXpNMkkxT1RBMVk2WU9QV052Y21VNk9uQjBjam82WkhKdmNGOXBibDl3YkdGalpUeGpiM0psT2pwbWJYXFxcblE2T2tWeWNtOXlQam82YUdKalltRXdPVFUwTm1KaVpHRTNNMmFuRGtnOFlXeHNiMk02T25abFl6bzZWbVZqUEZRc1FUNGdZWE1nWTI5eVxcXG5aVG82YjNCek9qcGtjbTl3T2pwRWNtOXdQam82WkhKdmNEbzZhRE0wTmpOaE1qUXdaRFl4TlRSbVpUV29Eak5qYjNKbE9qcHdkSEk2T21cXFxuUnliM0JmYVc1ZmNHeGhZMlU4Sm5WemFYcGxQam82YUdGa1ptUm1PR015T0dJNVpHVTROMmFwRGtnOFlXeHNiMk02T25abFl6bzZWbVZqXFxcblBGUXNRVDRnWVhNZ1kyOXlaVG82YjNCek9qcGtjbTl3T2pwRWNtOXdQam82WkhKdmNEbzZhREppWVdFelpqTTNNekJtTTJJeFpEV3FEalxcXG5GamIzSmxPanB3ZEhJNk9tUnliM0JmYVc1ZmNHeGhZMlU4WW05dmJENDZPbWhtTkdReE9UZzJZV1kyTjJFek9EQXdxdzR5WTI5eVpUbzZcXFxuY0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUEhWemFYcGxQam82YURZMFltWmxNVFF4WmpWaU1tVXdOakNzRGoxamIzSmxPanB3ZEhJNk9tXFxcblJ5YjNCZmFXNWZjR3hoWTJVOFkyOXlaVG82Wm0xME9qcEZjbkp2Y2o0Nk9taG1NMkU0TUdSbFpEUTVOelpsT0RRM3JRNUlQR0ZzYkc5alxcXG5PanAyWldNNk9sWmxZenhVTEVFK0lHRnpJR052Y21VNk9tOXdjem82WkhKdmNEbzZSSEp2Y0Q0Nk9tUnliM0E2T21oak9UaGpOMk14TTJcXFxuTTJNalEyWkRZeHJnNHdZMjl5WlRvNmNIUnlPanBrY205d1gybHVYM0JzWVdObFBDWjFPRDQ2T21oa1pUZGxPVGszWW1Ga01UVXlOelV5XFxcbnJ3NUlQR0ZzYkc5ak9qcDJaV002T2xabFl6eFVMRUUrSUdGeklHTnZjbVU2T205d2N6bzZaSEp2Y0RvNlJISnZjRDQ2T21SeWIzQTZPbVxcXG5nMVpXSm1abUl5TjJWbE5XVXhOekUxc0E1OVkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUENZb2MyVnlaR1U2T2w5ZmNISnBcXFxuZG1GMFpUbzZaR1U2T21OdmJuUmxiblE2T2tOdmJuUmxiblFzYzJWeVpHVTZPbDlmY0hKcGRtRjBaVG82WkdVNk9tTnZiblJsYm5RNk9rXFxcbk52Ym5SbGJuUXBQam82YUdJeU0yWmtNakJqWmpobU1tVTFPV0t4RGpOamIzSmxPanB3ZEhJNk9tUnliM0JmYVc1ZmNHeGhZMlU4Sm5WelxcXG5hWHBsUGpvNmFETXdOV0kzWVRVek5qQTBNRE13WmppeURpNWpiM0psT2pwbGNuSnZjam82UlhKeWIzSTZPbkJ5YjNacFpHVTZPbWcwWkRcXFxuaG1OR1kzT0dVMFlUWmhNbVkzc3c1cFkyOXlaVG82Y0hSeU9qcGtjbTl3WDJsdVgzQnNZV05sUENadGRYUWdjM1JrT2pwcGJ6bzZWM0pwXFxcbmRHVTZPbmR5YVhSbFgyWnRkRG82UVdSaGNIUmxjanhoYkd4dll6bzZkbVZqT2pwV1pXTThkVGcrUGo0Nk9tZ3dPRFEyTkdWak5EVTVOVFxcXG5jNU5UUTV0QTR4WTI5eVpUbzZjSFJ5T2pwa2NtOXdYMmx1WDNCc1lXTmxQR0p2YjJ3K09qcG9ZV1F3WTJRelpHUXdNbUk0WmpOaVliVU9cXFxuTDJOdmNtVTZPbkIwY2pvNlpISnZjRjlwYmw5d2JHRmpaVHdvS1Q0Nk9tZzNNbUUyWVdRNVlqVTRZVEZsT1RBNHRnNHNjM1JrT2pwbWN6XFxcbm82VDNCbGJrOXdkR2x2Ym5NNk9tNWxkem82YURReFpUQTNaREl6TXprMlpESXhZemUzRGtGemRHUTZPbk41Y3pvNmQyRnpiVG82ZEdoeVxcXG5aV0ZrWDNCaGNtdHBibWM2T2xCaGNtdGxjam82ZFc1d1lYSnJPanBvTWpReE9UZGlZall6WkRZME5UUmhPTGdPTW1OdmNtVTZPbkIwY2pcXFxubzZaSEp2Y0Y5cGJsOXdiR0ZqWlR4MWMybDZaVDQ2T21oalpUZGtaalF3TVRFMk5ETXpOR001dVE0OVkyOXlaVG82Y0hSeU9qcGtjbTl3XFxcblgybHVYM0JzWVdObFBHTnZjbVU2T21adGREbzZSWEp5YjNJK09qcG9NekF4TnpZM1pEQmtOamxsTkRRMk5yb09iMk52Y21VNk9uQjBjalxcXG5vNlpISnZjRjlwYmw5d2JHRmpaVHdtWTI5eVpUbzZhWFJsY2pvNllXUmhjSFJsY25NNk9tTnZjR2xsWkRvNlEyOXdhV1ZrUEdOdmNtVTZcXFxuT25Oc2FXTmxPanBwZEdWeU9qcEpkR1Z5UEhVNFBqNCtPanBvT0RkbU5ESmxOekpsTkRreE5XRTJaTHNPUFdOdmNtVTZPbkIwY2pvNlpIXFxcbkp2Y0Y5cGJsOXdiR0ZqWlR4amIzSmxPanBtYlhRNk9rVnljbTl5UGpvNmFETm1ORE14WVdNeE9UaGlNV0ZrTXpnQTc0Q0FnQUFKY0hKdlxcXG5aSFZqWlhKekFnaHNZVzVuZFdGblpRRUVVblZ6ZEFBTWNISnZZMlZ6YzJWa0xXSjVBd1Z5ZFhOMFl4MHhMamN4TGpFZ0tHVmlNall5T1RcXFxuWmlOU0F5TURJekxUQTRMVEF6S1FaM1lXeHlkWE1HTUM0eE9TNHdESGRoYzIwdFltbHVaR2RsYmdZd0xqSXVPRFlBcklDQWdBQVBkR0Z5XFxcbloyVjBYMlpsWVhSMWNtVnpBaXNQYlhWMFlXSnNaUzFuYkc5aVlXeHpLd2h6YVdkdUxXVjRkQT09XFxcblwiLFxuICApO1xuICBjb25zdCB3YXNtTW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh3YXNtQnl0ZXMpO1xuICByZXR1cm4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKHdhc21Nb2R1bGUsIGltcG9ydHMpO1xufVxuXG5mdW5jdGlvbiBiYXNlNjRkZWNvZGUoYjY0KSB7XG4gIGNvbnN0IGJpblN0cmluZyA9IGF0b2IoYjY0KTtcbiAgY29uc3Qgc2l6ZSA9IGJpblN0cmluZy5sZW5ndGg7XG4gIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgYnl0ZXNbaV0gPSBiaW5TdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgfVxuICByZXR1cm4gYnl0ZXM7XG59XG4iLCAiaW1wb3J0IHtcbiAgZXNidWlsZCxcbiAgZXh0bmFtZSxcbiAgZnJvbUZpbGVVcmwsXG4gIEltcG9ydE1hcCxcbiAgSlNPTkMsXG4gIHRvRmlsZVVybCxcbn0gZnJvbSBcIi4uL2RlcHMudHNcIjtcbmltcG9ydCB7IE1lZGlhVHlwZSB9IGZyb20gXCIuL2Rlbm8udHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMb2FkZXIge1xuICByZXNvbHZlKHNwZWNpZmllcjogVVJMKTogUHJvbWlzZTxMb2FkZXJSZXNvbHV0aW9uPjtcbiAgbG9hZEVzbShzcGVjaWZpZXI6IFVSTCk6IFByb21pc2U8ZXNidWlsZC5PbkxvYWRSZXN1bHQ+O1xuXG4gIHBhY2thZ2VJZEZyb21OYW1lSW5QYWNrYWdlPyhuYW1lOiBzdHJpbmcsIHBhcmVudFBhY2thZ2VJZDogc3RyaW5nKTogc3RyaW5nO1xuICBub2RlTW9kdWxlc0RpckZvclBhY2thZ2U/KG5wbVBhY2thZ2VJZD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPjtcbn1cblxuZXhwb3J0IHR5cGUgTG9hZGVyUmVzb2x1dGlvbiA9XG4gIHwgTG9hZGVyUmVzb2x1dGlvbkVzbVxuICB8IExvYWRlclJlc29sdXRpb25OcG1cbiAgfCBMb2FkZXJSZXNvbHV0aW9uTm9kZTtcblxuZXhwb3J0IGludGVyZmFjZSBMb2FkZXJSZXNvbHV0aW9uRXNtIHtcbiAga2luZDogXCJlc21cIjtcbiAgc3BlY2lmaWVyOiBVUkw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGVyUmVzb2x1dGlvbk5wbSB7XG4gIGtpbmQ6IFwibnBtXCI7XG4gIHBhY2thZ2VJZDogc3RyaW5nO1xuICBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGVyUmVzb2x1dGlvbk5vZGUge1xuICBraW5kOiBcIm5vZGVcIjtcbiAgcGF0aDogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVkaWFUeXBlVG9Mb2FkZXIobWVkaWFUeXBlOiBNZWRpYVR5cGUpOiBlc2J1aWxkLkxvYWRlciB7XG4gIHN3aXRjaCAobWVkaWFUeXBlKSB7XG4gICAgY2FzZSBcIkphdmFTY3JpcHRcIjpcbiAgICBjYXNlIFwiTWpzXCI6XG4gICAgICByZXR1cm4gXCJqc1wiO1xuICAgIGNhc2UgXCJKU1hcIjpcbiAgICAgIHJldHVybiBcImpzeFwiO1xuICAgIGNhc2UgXCJUeXBlU2NyaXB0XCI6XG4gICAgY2FzZSBcIk10c1wiOlxuICAgICAgcmV0dXJuIFwidHNcIjtcbiAgICBjYXNlIFwiVFNYXCI6XG4gICAgICByZXR1cm4gXCJ0c3hcIjtcbiAgICBjYXNlIFwiSnNvblwiOlxuICAgICAgcmV0dXJuIFwianNvblwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCBtZWRpYSB0eXBlICR7bWVkaWFUeXBlfS5gKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVzYnVpbGRSZXNvbHV0aW9uIHtcbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybFRvRXNidWlsZFJlc29sdXRpb24odXJsOiBVUkwpOiBFc2J1aWxkUmVzb2x1dGlvbiB7XG4gIGlmICh1cmwucHJvdG9jb2wgPT09IFwiZmlsZTpcIikge1xuICAgIHJldHVybiB7IHBhdGg6IGZyb21GaWxlVXJsKHVybCksIG5hbWVzcGFjZTogXCJmaWxlXCIgfTtcbiAgfVxuXG4gIGNvbnN0IG5hbWVzcGFjZSA9IHVybC5wcm90b2NvbC5zbGljZSgwLCAtMSk7XG4gIGNvbnN0IHBhdGggPSB1cmwuaHJlZi5zbGljZShuYW1lc3BhY2UubGVuZ3RoICsgMSk7XG4gIHJldHVybiB7IHBhdGgsIG5hbWVzcGFjZSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNidWlsZFJlc29sdXRpb25Ub1VSTChzcGVjaWZpZXI6IEVzYnVpbGRSZXNvbHV0aW9uKTogVVJMIHtcbiAgaWYgKHNwZWNpZmllci5uYW1lc3BhY2UgPT09IFwiZmlsZVwiKSB7XG4gICAgcmV0dXJuIHRvRmlsZVVybChzcGVjaWZpZXIucGF0aCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFVSTChgJHtzcGVjaWZpZXIubmFtZXNwYWNlfToke3NwZWNpZmllci5wYXRofWApO1xufVxuXG5pbnRlcmZhY2UgRGVub0NvbmZpZyB7XG4gIGltcG9ydHM/OiB1bmtub3duO1xuICBzY29wZXM/OiB1bmtub3duO1xuICBsb2NrPzogYm9vbGVhbiB8IHN0cmluZztcbiAgaW1wb3J0TWFwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZERlbm9Db25maWcocGF0aDogc3RyaW5nKTogUHJvbWlzZTxEZW5vQ29uZmlnPiB7XG4gIGNvbnN0IGZpbGUgPSBhd2FpdCBEZW5vLnJlYWRUZXh0RmlsZShwYXRoKTtcbiAgY29uc3QgcmVzID0gSlNPTkMucGFyc2UoZmlsZSk7XG4gIGlmICh0eXBlb2YgcmVzICE9PSBcIm9iamVjdFwiIHx8IHJlcyA9PT0gbnVsbCB8fCBBcnJheS5pc0FycmF5KHJlcykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYERlbm8gY29uZmlnIGF0ICR7cGF0aH0gbXVzdCBiZSBhbiBvYmplY3RgKTtcbiAgfVxuICBpZiAoXG4gICAgXCJpbXBvcnRzXCIgaW4gcmVzICYmXG4gICAgKHR5cGVvZiByZXMuaW1wb3J0cyAhPT0gXCJvYmplY3RcIiB8fCByZXMuaW1wb3J0cyA9PT0gbnVsbCB8fFxuICAgICAgQXJyYXkuaXNBcnJheShyZXMuaW1wb3J0cykpXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGVubyBjb25maWcgYXQgJHtwYXRofSBoYXMgaW52YWxpZCBcImltcG9ydHNcIiBrZXlgKTtcbiAgfVxuICBpZiAoXG4gICAgXCJzY29wZXNcIiBpbiByZXMgJiZcbiAgICAodHlwZW9mIHJlcy5zY29wZXMgIT09IFwib2JqZWN0XCIgfHwgcmVzLnNjb3BlcyA9PT0gbnVsbCB8fFxuICAgICAgQXJyYXkuaXNBcnJheShyZXMuc2NvcGVzKSlcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEZW5vIGNvbmZpZyBhdCAke3BhdGh9IGhhcyBpbnZhbGlkIFwic2NvcGVzXCIga2V5YCk7XG4gIH1cbiAgaWYgKFxuICAgIFwibG9ja1wiIGluIHJlcyAmJlxuICAgIHR5cGVvZiByZXMubG9jayAhPT0gXCJib29sZWFuXCIgJiYgdHlwZW9mIHJlcy5sb2NrICE9PSBcInN0cmluZ1wiXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGVubyBjb25maWcgYXQgJHtwYXRofSBoYXMgaW52YWxpZCBcImxvY2tcIiBrZXlgKTtcbiAgfVxuICBpZiAoXCJpbXBvcnRNYXBcIiBpbiByZXMgJiYgdHlwZW9mIHJlcy5pbXBvcnRNYXAgIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYERlbm8gY29uZmlnIGF0ICR7cGF0aH0gaGFzIGludmFsaWQgXCJpbXBvcnRNYXBcIiBrZXlgKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwQ29udGVudFR5cGUoXG4gIHNwZWNpZmllcjogVVJMLFxuICBjb250ZW50VHlwZTogc3RyaW5nIHwgbnVsbCxcbik6IE1lZGlhVHlwZSB7XG4gIGlmIChjb250ZW50VHlwZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGNvbnRlbnRUeXBlcyA9IGNvbnRlbnRUeXBlLnNwbGl0KFwiO1wiKTtcbiAgICBjb25zdCBtZWRpYVR5cGUgPSBjb250ZW50VHlwZXNbMF0udG9Mb3dlckNhc2UoKTtcbiAgICBzd2l0Y2ggKG1lZGlhVHlwZSkge1xuICAgICAgY2FzZSBcImFwcGxpY2F0aW9uL3R5cGVzY3JpcHRcIjpcbiAgICAgIGNhc2UgXCJ0ZXh0L3R5cGVzY3JpcHRcIjpcbiAgICAgIGNhc2UgXCJ2aWRlby92bmQuZGxuYS5tcGVnLXR0c1wiOlxuICAgICAgY2FzZSBcInZpZGVvL21wMnRcIjpcbiAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi94LXR5cGVzY3JpcHRcIjpcbiAgICAgICAgcmV0dXJuIG1hcEpzTGlrZUV4dGVuc2lvbihzcGVjaWZpZXIsIFwiVHlwZVNjcmlwdFwiKTtcbiAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCI6XG4gICAgICBjYXNlIFwidGV4dC9qYXZhc2NyaXB0XCI6XG4gICAgICBjYXNlIFwiYXBwbGljYXRpb24vZWNtYXNjcmlwdFwiOlxuICAgICAgY2FzZSBcInRleHQvZWNtYXNjcmlwdFwiOlxuICAgICAgY2FzZSBcImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdFwiOlxuICAgICAgY2FzZSBcImFwcGxpY2F0aW9uL25vZGVcIjpcbiAgICAgICAgcmV0dXJuIG1hcEpzTGlrZUV4dGVuc2lvbihzcGVjaWZpZXIsIFwiSmF2YVNjcmlwdFwiKTtcbiAgICAgIGNhc2UgXCJ0ZXh0L2pzeFwiOlxuICAgICAgICByZXR1cm4gXCJKU1hcIjtcbiAgICAgIGNhc2UgXCJ0ZXh0L3RzeFwiOlxuICAgICAgICByZXR1cm4gXCJUU1hcIjtcbiAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi9qc29uXCI6XG4gICAgICBjYXNlIFwidGV4dC9qc29uXCI6XG4gICAgICAgIHJldHVybiBcIkpzb25cIjtcbiAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi93YXNtXCI6XG4gICAgICAgIHJldHVybiBcIldhc21cIjtcbiAgICAgIGNhc2UgXCJ0ZXh0L3BsYWluXCI6XG4gICAgICBjYXNlIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI6XG4gICAgICAgIHJldHVybiBtZWRpYVR5cGVGcm9tU3BlY2lmaWVyKHNwZWNpZmllcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gXCJVbmtub3duXCI7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBtZWRpYVR5cGVGcm9tU3BlY2lmaWVyKHNwZWNpZmllcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFwSnNMaWtlRXh0ZW5zaW9uKFxuICBzcGVjaWZpZXI6IFVSTCxcbiAgZGVmYXVsdFR5cGU6IE1lZGlhVHlwZSxcbik6IE1lZGlhVHlwZSB7XG4gIGNvbnN0IHBhdGggPSBzcGVjaWZpZXIucGF0aG5hbWU7XG4gIHN3aXRjaCAoZXh0bmFtZShwYXRoKSkge1xuICAgIGNhc2UgXCIuanN4XCI6XG4gICAgICByZXR1cm4gXCJKU1hcIjtcbiAgICBjYXNlIFwiLm1qc1wiOlxuICAgICAgcmV0dXJuIFwiTWpzXCI7XG4gICAgY2FzZSBcIi5janNcIjpcbiAgICAgIHJldHVybiBcIkNqc1wiO1xuICAgIGNhc2UgXCIudHN4XCI6XG4gICAgICByZXR1cm4gXCJUU1hcIjtcbiAgICBjYXNlIFwiLnRzXCI6XG4gICAgICBpZiAocGF0aC5lbmRzV2l0aChcIi5kLnRzXCIpKSB7XG4gICAgICAgIHJldHVybiBcIkR0c1wiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRUeXBlO1xuICAgICAgfVxuICAgIGNhc2UgXCIubXRzXCI6IHtcbiAgICAgIGlmIChwYXRoLmVuZHNXaXRoKFwiLmQubXRzXCIpKSB7XG4gICAgICAgIHJldHVybiBcIkRtdHNcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VHlwZSA9PSBcIkphdmFTY3JpcHRcIiA/IFwiTWpzXCIgOiBcIk10c1wiO1xuICAgICAgfVxuICAgIH1cbiAgICBjYXNlIFwiLmN0c1wiOiB7XG4gICAgICBpZiAocGF0aC5lbmRzV2l0aChcIi5kLmN0c1wiKSkge1xuICAgICAgICByZXR1cm4gXCJEY3RzXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFR5cGUgPT0gXCJKYXZhU2NyaXB0XCIgPyBcIkNqc1wiIDogXCJDdHNcIjtcbiAgICAgIH1cbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkZWZhdWx0VHlwZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZWRpYVR5cGVGcm9tU3BlY2lmaWVyKHNwZWNpZmllcjogVVJMKTogTWVkaWFUeXBlIHtcbiAgY29uc3QgcGF0aCA9IHNwZWNpZmllci5wYXRobmFtZTtcbiAgc3dpdGNoIChleHRuYW1lKHBhdGgpKSB7XG4gICAgY2FzZSBcIlwiOlxuICAgICAgaWYgKHBhdGguZW5kc1dpdGgoXCIvLnRzYnVpbGRpbmZvXCIpKSB7XG4gICAgICAgIHJldHVybiBcIlRzQnVpbGRJbmZvXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gXCJVbmtub3duXCI7XG4gICAgICB9XG4gICAgY2FzZSBcIi50c1wiOlxuICAgICAgaWYgKHBhdGguZW5kc1dpdGgoXCIuZC50c1wiKSkge1xuICAgICAgICByZXR1cm4gXCJEdHNcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBcIlR5cGVTY3JpcHRcIjtcbiAgICAgIH1cbiAgICBjYXNlIFwiLm10c1wiOlxuICAgICAgaWYgKHBhdGguZW5kc1dpdGgoXCIuZC5tdHNcIikpIHtcbiAgICAgICAgcmV0dXJuIFwiRG10c1wiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFwiTXRzXCI7XG4gICAgICB9XG4gICAgY2FzZSBcIi5jdHNcIjpcbiAgICAgIGlmIChwYXRoLmVuZHNXaXRoKFwiLmQuY3RzXCIpKSB7XG4gICAgICAgIHJldHVybiBcIkRjdHNcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBcIkN0c1wiO1xuICAgICAgfVxuICAgIGNhc2UgXCIudHN4XCI6XG4gICAgICByZXR1cm4gXCJUU1hcIjtcbiAgICBjYXNlIFwiLmpzXCI6XG4gICAgICByZXR1cm4gXCJKYXZhU2NyaXB0XCI7XG4gICAgY2FzZSBcIi5qc3hcIjpcbiAgICAgIHJldHVybiBcIkpTWFwiO1xuICAgIGNhc2UgXCIubWpzXCI6XG4gICAgICByZXR1cm4gXCJNanNcIjtcbiAgICBjYXNlIFwiLmNqc1wiOlxuICAgICAgcmV0dXJuIFwiQ2pzXCI7XG4gICAgY2FzZSBcIi5qc29uXCI6XG4gICAgICByZXR1cm4gXCJKc29uXCI7XG4gICAgY2FzZSBcIi53YXNtXCI6XG4gICAgICByZXR1cm4gXCJXYXNtXCI7XG4gICAgY2FzZSBcIi50c2J1aWxkaW5mb1wiOlxuICAgICAgcmV0dXJuIFwiVHNCdWlsZEluZm9cIjtcbiAgICBjYXNlIFwiLm1hcFwiOlxuICAgICAgcmV0dXJuIFwiU291cmNlTWFwXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlVua25vd25cIjtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5wbVNwZWNpZmllciB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgcGF0aDogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTnBtU3BlY2lmaWVyKHNwZWNpZmllcjogVVJMKTogTnBtU3BlY2lmaWVyIHtcbiAgaWYgKHNwZWNpZmllci5wcm90b2NvbCAhPT0gXCJucG06XCIpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbnBtIHNwZWNpZmllclwiKTtcbiAgY29uc3QgcGF0aCA9IHNwZWNpZmllci5wYXRobmFtZTtcbiAgY29uc3Qgc3RhcnRJbmRleCA9IHBhdGhbMF0gPT09IFwiL1wiID8gMSA6IDA7XG4gIGxldCBwYXRoU3RhcnRJbmRleDtcbiAgbGV0IHZlcnNpb25TdGFydEluZGV4O1xuICBpZiAocGF0aFtzdGFydEluZGV4XSA9PT0gXCJAXCIpIHtcbiAgICBjb25zdCBmaXJzdFNsYXNoID0gcGF0aC5pbmRleE9mKFwiL1wiLCBzdGFydEluZGV4KTtcbiAgICBpZiAoZmlyc3RTbGFzaCA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBucG0gc3BlY2lmaWVyOiAke3NwZWNpZmllcn1gKTtcbiAgICB9XG4gICAgcGF0aFN0YXJ0SW5kZXggPSBwYXRoLmluZGV4T2YoXCIvXCIsIGZpcnN0U2xhc2ggKyAxKTtcbiAgICB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGguaW5kZXhPZihcIkBcIiwgZmlyc3RTbGFzaCArIDEpO1xuICB9IGVsc2Uge1xuICAgIHBhdGhTdGFydEluZGV4ID0gcGF0aC5pbmRleE9mKFwiL1wiLCBzdGFydEluZGV4KTtcbiAgICB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGguaW5kZXhPZihcIkBcIiwgc3RhcnRJbmRleCk7XG4gIH1cblxuICBpZiAocGF0aFN0YXJ0SW5kZXggPT09IC0xKSBwYXRoU3RhcnRJbmRleCA9IHBhdGgubGVuZ3RoO1xuICBpZiAodmVyc2lvblN0YXJ0SW5kZXggPT09IC0xKSB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGgubGVuZ3RoO1xuXG4gIGlmICh2ZXJzaW9uU3RhcnRJbmRleCA+IHBhdGhTdGFydEluZGV4KSB7XG4gICAgdmVyc2lvblN0YXJ0SW5kZXggPSBwYXRoU3RhcnRJbmRleDtcbiAgfVxuXG4gIGlmIChzdGFydEluZGV4ID09PSB2ZXJzaW9uU3RhcnRJbmRleCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBucG0gc3BlY2lmaWVyOiAke3NwZWNpZmllcn1gKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogcGF0aC5zbGljZShzdGFydEluZGV4LCB2ZXJzaW9uU3RhcnRJbmRleCksXG4gICAgdmVyc2lvbjogdmVyc2lvblN0YXJ0SW5kZXggPT09IHBhdGhTdGFydEluZGV4XG4gICAgICA/IG51bGxcbiAgICAgIDogcGF0aC5zbGljZSh2ZXJzaW9uU3RhcnRJbmRleCArIDEsIHBhdGhTdGFydEluZGV4KSxcbiAgICBwYXRoOiBwYXRoU3RhcnRJbmRleCA9PT0gcGF0aC5sZW5ndGggPyBudWxsIDogcGF0aC5zbGljZShwYXRoU3RhcnRJbmRleCksXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNyU3BlY2lmaWVyIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICBwYXRoOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VKc3JTcGVjaWZpZXIoc3BlY2lmaWVyOiBVUkwpOiBKc3JTcGVjaWZpZXIge1xuICBpZiAoc3BlY2lmaWVyLnByb3RvY29sICE9PSBcImpzcjpcIikgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBqc3Igc3BlY2lmaWVyXCIpO1xuICBjb25zdCBwYXRoID0gc3BlY2lmaWVyLnBhdGhuYW1lO1xuICBjb25zdCBzdGFydEluZGV4ID0gcGF0aFswXSA9PT0gXCIvXCIgPyAxIDogMDtcbiAgaWYgKHBhdGhbc3RhcnRJbmRleF0gIT09IFwiQFwiKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGpzciBzcGVjaWZpZXI6ICR7c3BlY2lmaWVyfWApO1xuICB9XG4gIGNvbnN0IGZpcnN0U2xhc2ggPSBwYXRoLmluZGV4T2YoXCIvXCIsIHN0YXJ0SW5kZXgpO1xuICBpZiAoZmlyc3RTbGFzaCA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQganNyIHNwZWNpZmllcjogJHtzcGVjaWZpZXJ9YCk7XG4gIH1cbiAgbGV0IHBhdGhTdGFydEluZGV4ID0gcGF0aC5pbmRleE9mKFwiL1wiLCBmaXJzdFNsYXNoICsgMSk7XG4gIGxldCB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGguaW5kZXhPZihcIkBcIiwgZmlyc3RTbGFzaCArIDEpO1xuXG4gIGlmIChwYXRoU3RhcnRJbmRleCA9PT0gLTEpIHBhdGhTdGFydEluZGV4ID0gcGF0aC5sZW5ndGg7XG4gIGlmICh2ZXJzaW9uU3RhcnRJbmRleCA9PT0gLTEpIHZlcnNpb25TdGFydEluZGV4ID0gcGF0aC5sZW5ndGg7XG5cbiAgaWYgKHZlcnNpb25TdGFydEluZGV4ID4gcGF0aFN0YXJ0SW5kZXgpIHtcbiAgICB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGhTdGFydEluZGV4O1xuICB9XG5cbiAgaWYgKHN0YXJ0SW5kZXggPT09IHZlcnNpb25TdGFydEluZGV4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGpzciBzcGVjaWZpZXI6ICR7c3BlY2lmaWVyfWApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBwYXRoLnNsaWNlKHN0YXJ0SW5kZXgsIHZlcnNpb25TdGFydEluZGV4KSxcbiAgICB2ZXJzaW9uOiB2ZXJzaW9uU3RhcnRJbmRleCA9PT0gcGF0aFN0YXJ0SW5kZXhcbiAgICAgID8gbnVsbFxuICAgICAgOiBwYXRoLnNsaWNlKHZlcnNpb25TdGFydEluZGV4ICsgMSwgcGF0aFN0YXJ0SW5kZXgpLFxuICAgIHBhdGg6IHBhdGhTdGFydEluZGV4ID09PSBwYXRoLmxlbmd0aCA/IG51bGwgOiBwYXRoLnNsaWNlKHBhdGhTdGFydEluZGV4KSxcbiAgfTtcbn1cblxuLy8gRm9yIGFsbCBwYWlycyBpbiBgaW1wb3J0c2Agd2hlcmUgdGhlIHNwZWNpZmllciBkb2VzIG5vdCBlbmQgaW4gYSAvLCBhbmQgdGhlXG4vLyB0YXJnZXQgc3RhcnRzIHdpdGggYGpzcjpgIG9yIGBucG06YCwgYW5kIG5vIGVudHJ5IGV4aXN0cyBmb3IgYCR7c3BlY2lmaWVyfS9gLFxuLy8gYWRkIGFuIGVudHJ5IGZvciBgJHtzcGVjaWZpZXJ9L2AgcG9pbnRpbmcgdG8gdGhlIHRhcmdldCB3aXRoIGEgLyBhcHBlbmRlZCxcbi8vIGFuZCBhIGAvYCBhcHBlbmRlZCB0byB0aGUgc2NoZW1lLCBpZiBub25lIGlzIHByZXNlbnQgdGhlcmUuXG5leHBvcnQgZnVuY3Rpb24gZXhwYW5kRW1iZWRkZWRJbXBvcnRNYXAoaW1wb3J0TWFwOiBJbXBvcnRNYXApIHtcbiAgaWYgKGltcG9ydE1hcC5pbXBvcnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBuZXdJbXBvcnRzOiBbc3RyaW5nLCBzdHJpbmcgfCBudWxsXVtdID0gW107XG4gICAgZm9yIChjb25zdCBbc3BlY2lmaWVyLCB0YXJnZXRdIG9mIE9iamVjdC5lbnRyaWVzKGltcG9ydE1hcC5pbXBvcnRzKSkge1xuICAgICAgbmV3SW1wb3J0cy5wdXNoKFtzcGVjaWZpZXIsIHRhcmdldF0pO1xuICAgICAgaWYgKFxuICAgICAgICAhc3BlY2lmaWVyLmVuZHNXaXRoKFwiL1wiKSAmJiB0YXJnZXQgJiZcbiAgICAgICAgKHRhcmdldC5zdGFydHNXaXRoKFwianNyOlwiKSB8fCB0YXJnZXQuc3RhcnRzV2l0aChcIm5wbTpcIikpICYmXG4gICAgICAgICFpbXBvcnRNYXAuaW1wb3J0c1tzcGVjaWZpZXIgKyBcIi9cIl1cbiAgICAgICkge1xuICAgICAgICBjb25zdCBuZXdTcGVjaWZpZXIgPSBzcGVjaWZpZXIgKyBcIi9cIjtcbiAgICAgICAgY29uc3QgbmV3VGFyZ2V0ID0gdGFyZ2V0LnNsaWNlKDAsIDQpICsgXCIvXCIgK1xuICAgICAgICAgIHRhcmdldC5zbGljZSh0YXJnZXRbNF0gPT09IFwiL1wiID8gNSA6IDQpICsgXCIvXCI7XG4gICAgICAgIG5ld0ltcG9ydHMucHVzaChbbmV3U3BlY2lmaWVyLCBuZXdUYXJnZXRdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaW1wb3J0TWFwLmltcG9ydHMgPSBPYmplY3QuZnJvbUVudHJpZXMobmV3SW1wb3J0cyk7XG4gIH1cbn1cbiIsICJpbXBvcnQge1xuICBlc2J1aWxkLFxuICBJbXBvcnRNYXAsXG4gIHJlc29sdmVJbXBvcnRNYXAsXG4gIHJlc29sdmVNb2R1bGVTcGVjaWZpZXIsXG4gIFNjb3BlcyxcbiAgU3BlY2lmaWVyTWFwLFxuICB0b0ZpbGVVcmwsXG59IGZyb20gXCIuLi9kZXBzLnRzXCI7XG5pbXBvcnQge1xuICBleHBhbmRFbWJlZGRlZEltcG9ydE1hcCxcbiAgcmVhZERlbm9Db25maWcsXG4gIHVybFRvRXNidWlsZFJlc29sdXRpb24sXG59IGZyb20gXCIuL3NoYXJlZC50c1wiO1xuXG5leHBvcnQgdHlwZSB7IEltcG9ydE1hcCwgU2NvcGVzLCBTcGVjaWZpZXJNYXAgfTtcblxuZXhwb3J0IGludGVyZmFjZSBEZW5vUmVzb2x2ZXJQbHVnaW5PcHRpb25zIHtcbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHBhdGggdG8gYSBkZW5vLmpzb24gY29uZmlnIGZpbGUgdG8gdXNlLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG9cbiAgICogdGhlIGAtLWNvbmZpZ2AgZmxhZyB0byB0aGUgRGVubyBleGVjdXRhYmxlLiBUaGlzIHBhdGggbXVzdCBiZSBhYnNvbHV0ZS5cbiAgICovXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IGEgVVJMIHRvIGFuIGltcG9ydCBtYXAgZmlsZSB0byB1c2Ugd2hlbiByZXNvbHZpbmcgaW1wb3J0XG4gICAqIHNwZWNpZmllcnMuIFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgYC0taW1wb3J0LW1hcGAgZmxhZyB0byB0aGUgRGVub1xuICAgKiBleGVjdXRhYmxlLiBUaGlzIFVSTCBtYXkgYmUgcmVtb3RlIG9yIGEgbG9jYWwgZmlsZSBVUkwuXG4gICAqXG4gICAqIElmIHRoaXMgb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBkZW5vLmpzb24gY29uZmlnIGZpbGUgaXMgY29uc3VsdGVkIHRvXG4gICAqIGRldGVybWluZSB3aGF0IGltcG9ydCBtYXAgdG8gdXNlLCBpZiBhbnkuXG4gICAqL1xuICBpbXBvcnRNYXBVUkw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBJTl9OT0RFX01PRFVMRVMgPSBTeW1ib2woXCJJTl9OT0RFX01PRFVMRVNcIik7XG5leHBvcnQgY29uc3QgSU5fTk9ERV9NT0RVTEVTX1JFU09MVkVEID0gU3ltYm9sKFwiSU5fTk9ERV9NT0RVTEVTX1JFU09MVkVEXCIpO1xuXG4vKipcbiAqIFRoZSBEZW5vIHJlc29sdmVyIHBsdWdpbiBwZXJmb3JtcyByZWxhdGl2ZS0+YWJzb2x1dGUgc3BlY2lmaWVyIHJlc29sdXRpb25cbiAqIGFuZCBpbXBvcnQgbWFwIHJlc29sdXRpb24uXG4gKlxuICogSWYgdXNpbmcgdGhlIHtAbGluayBkZW5vTG9hZGVyUGx1Z2lufSwgdGhpcyBwbHVnaW4gbXVzdCBiZSB1c2VkIGJlZm9yZSB0aGVcbiAqIGxvYWRlciBwbHVnaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZW5vUmVzb2x2ZXJQbHVnaW4oXG4gIG9wdGlvbnM6IERlbm9SZXNvbHZlclBsdWdpbk9wdGlvbnMgPSB7fSxcbik6IGVzYnVpbGQuUGx1Z2luIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBcImRlbm8tcmVzb2x2ZXJcIixcbiAgICBzZXR1cChidWlsZCkge1xuICAgICAgbGV0IGltcG9ydE1hcDogSW1wb3J0TWFwIHwgbnVsbCA9IG51bGw7XG4gICAgICBsZXQgbm9kZU1vZHVsZXNQYXRoczogU2V0PHN0cmluZz47XG5cbiAgICAgIGNvbnN0IGV4dGVybmFsUmVnZXhwczogUmVnRXhwW10gPSAoYnVpbGQuaW5pdGlhbE9wdGlvbnMuZXh0ZXJuYWwgPz8gW10pXG4gICAgICAgIC5tYXAoKGV4dGVybmFsKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgIFwiXlwiICsgZXh0ZXJuYWwucmVwbGFjZSgvWy0vXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCBcIlxcXFwkJlwiKS5yZXBsYWNlKFxuICAgICAgICAgICAgICAvXFwqL2csXG4gICAgICAgICAgICAgIFwiLipcIixcbiAgICAgICAgICAgICkgKyBcIiRcIixcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiByZWdleHA7XG4gICAgICAgIH0pO1xuXG4gICAgICBidWlsZC5vblN0YXJ0KGFzeW5jIGZ1bmN0aW9uIG9uU3RhcnQoKSB7XG4gICAgICAgIG5vZGVNb2R1bGVzUGF0aHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICBsZXQgaW1wb3J0TWFwVVJMOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gSWYgbm8gaW1wb3J0IG1hcCBVUkwgaXMgc3BlY2lmaWVkLCBhbmQgYSBjb25maWcgaXMgc3BlY2lmaWVkLCB3ZSB0cnlcbiAgICAgICAgLy8gdG8gZ2V0IGFuIGltcG9ydCBtYXAgZnJvbSB0aGUgY29uZmlnLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgb3B0aW9ucy5pbXBvcnRNYXBVUkwgPT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLmNvbmZpZ1BhdGggIT09IHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkRGVub0NvbmZpZyhvcHRpb25zLmNvbmZpZ1BhdGgpO1xuICAgICAgICAgIC8vIElmIGBpbXBvcnRzYCBvciBgc2NvcGVzYCBhcmUgc3BlY2lmaWVkLCB1c2UgdGhlIGNvbmZpZyBmaWxlIGFzIHRoZVxuICAgICAgICAgIC8vIGltcG9ydCBtYXAgZGlyZWN0bHkuXG4gICAgICAgICAgaWYgKGNvbmZpZy5pbXBvcnRzICE9PSB1bmRlZmluZWQgfHwgY29uZmlnLnNjb3BlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBjb25maWdJbXBvcnRNYXAgPSB7XG4gICAgICAgICAgICAgIGltcG9ydHM6IGNvbmZpZy5pbXBvcnRzLFxuICAgICAgICAgICAgICBzY29wZXM6IGNvbmZpZy5zY29wZXMsXG4gICAgICAgICAgICB9IGFzIEltcG9ydE1hcDtcbiAgICAgICAgICAgIGV4cGFuZEVtYmVkZGVkSW1wb3J0TWFwKGNvbmZpZ0ltcG9ydE1hcCk7XG4gICAgICAgICAgICBpbXBvcnRNYXAgPSByZXNvbHZlSW1wb3J0TWFwKFxuICAgICAgICAgICAgICBjb25maWdJbXBvcnRNYXAsXG4gICAgICAgICAgICAgIHRvRmlsZVVybChvcHRpb25zLmNvbmZpZ1BhdGgpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy5pbXBvcnRNYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB1c2UgdGhlIGltcG9ydCBtYXAgVVJMIHNwZWNpZmllZCBpbiB0aGUgY29uZmlnIGZpbGVcbiAgICAgICAgICAgIGltcG9ydE1hcFVSTCA9XG4gICAgICAgICAgICAgIG5ldyBVUkwoY29uZmlnLmltcG9ydE1hcCwgdG9GaWxlVXJsKG9wdGlvbnMuY29uZmlnUGF0aCkpLmhyZWY7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuaW1wb3J0TWFwVVJMICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbXBvcnRNYXBVUkwgPSBvcHRpb25zLmltcG9ydE1hcFVSTDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHdlIGhhdmUgYW4gaW1wb3J0IG1hcCBVUkwsIGZldGNoIGl0IGFuZCBwYXJzZSBpdC5cbiAgICAgICAgaWYgKGltcG9ydE1hcFVSTCkge1xuICAgICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaChpbXBvcnRNYXBVUkwpO1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwLmpzb24oKTtcbiAgICAgICAgICBpbXBvcnRNYXAgPSByZXNvbHZlSW1wb3J0TWFwKGRhdGEsIG5ldyBVUkwocmVzcC51cmwpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGJ1aWxkLm9uUmVzb2x2ZSh7IGZpbHRlcjogLy4qLyB9LCBhc3luYyBmdW5jdGlvbiBvblJlc29sdmUoYXJncykge1xuICAgICAgICAvLyBJZiB0aGlzIGlzIGEgbm9kZV9tb2R1bGVzIGludGVybmFsIHJlc29sdXRpb24sIGp1c3QgcGFzcyBpdCB0aHJvdWdoLlxuICAgICAgICAvLyBJbnRlcm5hbCByZXNvbHV0aW9uIGlzIGRldGVjdGVkIGJ5IGVpdGhlciB0aGUgXCJJTl9OT0RFX01PRFVMRVNcIiBmbGFnXG4gICAgICAgIC8vIGJlaW5nIHNldCBvbiB0aGUgcmVzb2x2ZSBhcmdzIHRocm91Z2ggdGhlIHBsdWdpbkRhdGEgZmllbGQsIG9yIGJ5XG4gICAgICAgIC8vIHRoZSBpbXBvcnRlciBiZWluZyBpbiB0aGUgbm9kZU1vZHVsZXNQYXRocyBzZXQuXG4gICAgICAgIGlmIChhcmdzLnBsdWdpbkRhdGEgPT09IElOX05PREVfTU9EVUxFU19SRVNPTFZFRCkgcmV0dXJuIHt9O1xuICAgICAgICBpZiAoYXJncy5wbHVnaW5EYXRhID09PSBJTl9OT0RFX01PRFVMRVMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChub2RlTW9kdWxlc1BhdGhzLmhhcyhhcmdzLmltcG9ydGVyKSkge1xuICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJ1aWxkLnJlc29sdmUoYXJncy5wYXRoLCB7XG4gICAgICAgICAgICBpbXBvcnRlcjogYXJncy5pbXBvcnRlcixcbiAgICAgICAgICAgIG5hbWVzcGFjZTogYXJncy5uYW1lc3BhY2UsXG4gICAgICAgICAgICBraW5kOiBhcmdzLmtpbmQsXG4gICAgICAgICAgICByZXNvbHZlRGlyOiBhcmdzLnJlc29sdmVEaXIsXG4gICAgICAgICAgICBwbHVnaW5EYXRhOiBJTl9OT0RFX01PRFVMRVMsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKCFyZXMuZXh0ZXJuYWwpIG5vZGVNb2R1bGVzUGF0aHMuYWRkKHJlcy5wYXRoKTtcbiAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIGZpcnN0IHBhc3MgcmVzb2x2ZXIgcGVyZm9ybXMgc3luY2hyb25vdXMgcmVzb2x1dGlvbi4gVGhpc1xuICAgICAgICAvLyBpbmNsdWRlcyByZWxhdGl2ZSB0byBhYnNvbHV0ZSBzcGVjaWZpZXIgcmVzb2x1dGlvbiBhbmQgaW1wb3J0IG1hcFxuICAgICAgICAvLyByZXNvbHV0aW9uLlxuXG4gICAgICAgIC8vIFdlIGhhdmUgdG8gZmlyc3QgZGV0ZXJtaW5lIHRoZSByZWZlcnJlciBVUkwgdG8gdXNlIHdoZW4gcmVzb2x2aW5nXG4gICAgICAgIC8vIHRoZSBzcGVjaWZpZXIuIFRoaXMgaXMgZWl0aGVyIHRoZSBpbXBvcnRlciBVUkwsIG9yIHRoZSByZXNvbHZlRGlyXG4gICAgICAgIC8vIFVSTCBpZiB0aGUgaW1wb3J0ZXIgaXMgbm90IHNwZWNpZmllZCAoaWUgaWYgdGhlIHNwZWNpZmllciBpcyBhdCB0aGVcbiAgICAgICAgLy8gcm9vdCkuXG4gICAgICAgIGxldCByZWZlcnJlcjogVVJMO1xuICAgICAgICBpZiAoYXJncy5pbXBvcnRlciAhPT0gXCJcIikge1xuICAgICAgICAgIGlmIChhcmdzLm5hbWVzcGFjZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiW2Fzc2VydF0gbmFtZXNwYWNlIGlzIGVtcHR5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZWZlcnJlciA9IG5ldyBVUkwoYCR7YXJncy5uYW1lc3BhY2V9OiR7YXJncy5pbXBvcnRlcn1gKTtcbiAgICAgICAgfSBlbHNlIGlmIChhcmdzLnJlc29sdmVEaXIgIT09IFwiXCIpIHtcbiAgICAgICAgICByZWZlcnJlciA9IG5ldyBVUkwoYCR7dG9GaWxlVXJsKGFyZ3MucmVzb2x2ZURpcikuaHJlZn0vYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdlIGNhbiB0aGVuIHJlc29sdmUgdGhlIHNwZWNpZmllciByZWxhdGl2ZSB0byB0aGUgcmVmZXJyZXIgVVJMLiBJZlxuICAgICAgICAvLyBhbiBpbXBvcnQgbWFwIGlzIHNwZWNpZmllZCwgd2UgdXNlIHRoYXQgdG8gcmVzb2x2ZSB0aGUgc3BlY2lmaWVyLlxuICAgICAgICBsZXQgcmVzb2x2ZWQ6IFVSTDtcbiAgICAgICAgaWYgKGltcG9ydE1hcCAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHJlcyA9IHJlc29sdmVNb2R1bGVTcGVjaWZpZXIoXG4gICAgICAgICAgICBhcmdzLnBhdGgsXG4gICAgICAgICAgICBpbXBvcnRNYXAsXG4gICAgICAgICAgICBuZXcgVVJMKHJlZmVycmVyKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlc29sdmVkID0gbmV3IFVSTChyZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmVkID0gbmV3IFVSTChhcmdzLnBhdGgsIHJlZmVycmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgZXh0ZXJuYWxSZWdleHAgb2YgZXh0ZXJuYWxSZWdleHBzKSB7XG4gICAgICAgICAgaWYgKGV4dGVybmFsUmVnZXhwLnRlc3QocmVzb2x2ZWQuaHJlZikpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHBhdGg6IHJlc29sdmVkLmhyZWYsXG4gICAgICAgICAgICAgIGV4dGVybmFsOiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOb3cgcGFzcyB0aGUgcmVzb2x2ZWQgc3BlY2lmaWVyIGJhY2sgaW50byB0aGUgcmVzb2x2ZXIsIGZvciBhIHNlY29uZFxuICAgICAgICAvLyBwYXNzLiBOb3cgcGx1Z2lucyBjYW4gcGVyZm9ybSBhbnkgcmVzb2x1dGlvbiB0aGV5IHdhbnQgb24gdGhlIGZ1bGx5XG4gICAgICAgIC8vIHJlc29sdmVkIHNwZWNpZmllci5cbiAgICAgICAgY29uc3QgeyBwYXRoLCBuYW1lc3BhY2UgfSA9IHVybFRvRXNidWlsZFJlc29sdXRpb24ocmVzb2x2ZWQpO1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBidWlsZC5yZXNvbHZlKHBhdGgsIHtcbiAgICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgICAga2luZDogYXJncy5raW5kLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlcy5wbHVnaW5EYXRhID09PSBJTl9OT0RFX01PRFVMRVMpIG5vZGVNb2R1bGVzUGF0aHMuYWRkKHJlcy5wYXRoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0pO1xuICAgIH0sXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgZXNidWlsZCwgZnJvbUZpbGVVcmwgfSBmcm9tIFwiLi4vZGVwcy50c1wiO1xuaW1wb3J0ICogYXMgZGVubyBmcm9tIFwiLi9kZW5vLnRzXCI7XG5pbXBvcnQge1xuICBMb2FkZXIsXG4gIExvYWRlclJlc29sdXRpb24sXG4gIG1hcENvbnRlbnRUeXBlLFxuICBtZWRpYVR5cGVUb0xvYWRlcixcbiAgcGFyc2VKc3JTcGVjaWZpZXIsXG4gIHBhcnNlTnBtU3BlY2lmaWVyLFxufSBmcm9tIFwiLi9zaGFyZWQudHNcIjtcblxuaW50ZXJmYWNlIE1vZHVsZSB7XG4gIHNwZWNpZmllcjogc3RyaW5nO1xuICBtZWRpYVR5cGU6IGRlbm8uTWVkaWFUeXBlO1xuICBkYXRhOiBVaW50OEFycmF5O1xufVxuXG5jb25zdCBKU1JfUkVHSVNUUllfVVJMID0gRGVuby5lbnYuZ2V0KFwiREVOT19SRUdJU1RSWV9VUkxcIikgPz8gXCJodHRwczovL2pzci5pb1wiO1xuXG5hc3luYyBmdW5jdGlvbiByZWFkTG9ja2ZpbGUocGF0aDogc3RyaW5nKTogUHJvbWlzZTxkZW5vLkxvY2tmaWxlIHwgbnVsbD4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBEZW5vLnJlYWRUZXh0RmlsZShwYXRoKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLk5vdEZvdW5kKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbmludGVyZmFjZSBQb3J0YWJsZUxvYWRlck9wdGlvbnMge1xuICBsb2NrPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUG9ydGFibGVMb2FkZXIgaW1wbGVtZW50cyBMb2FkZXIge1xuICAjb3B0aW9uczogUG9ydGFibGVMb2FkZXJPcHRpb25zO1xuICAjZmV0Y2hPbmdvaW5nID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+KCk7XG4gICNsb2NrZmlsZTogUHJvbWlzZTxkZW5vLkxvY2tmaWxlIHwgbnVsbD4gfCBkZW5vLkxvY2tmaWxlIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAjZmV0Y2hNb2R1bGVzID0gbmV3IE1hcDxzdHJpbmcsIE1vZHVsZT4oKTtcbiAgI2ZldGNoUmVkaXJlY3RzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBQb3J0YWJsZUxvYWRlck9wdGlvbnMpIHtcbiAgICB0aGlzLiNvcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIGFzeW5jIHJlc29sdmUoc3BlY2lmaWVyOiBVUkwpOiBQcm9taXNlPExvYWRlclJlc29sdXRpb24+IHtcbiAgICBzd2l0Y2ggKHNwZWNpZmllci5wcm90b2NvbCkge1xuICAgICAgY2FzZSBcImZpbGU6XCI6IHtcbiAgICAgICAgcmV0dXJuIHsga2luZDogXCJlc21cIiwgc3BlY2lmaWVyIH07XG4gICAgICB9XG4gICAgICBjYXNlIFwiaHR0cDpcIjpcbiAgICAgIGNhc2UgXCJodHRwczpcIjpcbiAgICAgIGNhc2UgXCJkYXRhOlwiOiB7XG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IGF3YWl0IHRoaXMuI2xvYWRSZW1vdGUoc3BlY2lmaWVyLmhyZWYpO1xuICAgICAgICByZXR1cm4geyBraW5kOiBcImVzbVwiLCBzcGVjaWZpZXI6IG5ldyBVUkwobW9kdWxlLnNwZWNpZmllcikgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJucG06XCI6IHtcbiAgICAgICAgY29uc3QgbnBtU3BlY2lmaWVyID0gcGFyc2VOcG1TcGVjaWZpZXIoc3BlY2lmaWVyKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBraW5kOiBcIm5wbVwiLFxuICAgICAgICAgIHBhY2thZ2VJZDogXCJcIixcbiAgICAgICAgICBwYWNrYWdlTmFtZTogbnBtU3BlY2lmaWVyLm5hbWUsXG4gICAgICAgICAgcGF0aDogbnBtU3BlY2lmaWVyLnBhdGggPz8gXCJcIixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJub2RlOlwiOiB7XG4gICAgICAgIHJldHVybiB7IGtpbmQ6IFwibm9kZVwiLCBwYXRoOiBzcGVjaWZpZXIucGF0aG5hbWUgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJqc3I6XCI6IHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRTcGVjaWZpZXIgPSBhd2FpdCB0aGlzLiNyZXNvbHZlSnNyU3BlY2lmaWVyKHNwZWNpZmllcik7XG4gICAgICAgIHJldHVybiB7IGtpbmQ6IFwiZXNtXCIsIHNwZWNpZmllcjogcmVzb2x2ZWRTcGVjaWZpZXIgfTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgc2NoZW1lOiAnJHtzcGVjaWZpZXIucHJvdG9jb2x9J2ApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jICNyZXNvbHZlSnNyU3BlY2lmaWVyKHNwZWNpZmllcjogVVJMKTogUHJvbWlzZTxVUkw+IHtcbiAgICAvLyBwYXJzZSB0aGUgSlNSIHNwZWNpZmllci5cbiAgICBjb25zdCBqc3JTcGVjaWZpZXIgPSBwYXJzZUpzclNwZWNpZmllcihzcGVjaWZpZXIpO1xuXG4gICAgLy8gQXR0ZW1wdCB0byBsb2FkIHRoZSBsb2NrZmlsZS5cbiAgICBpZiAodGhpcy4jbG9ja2ZpbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy4jbG9ja2ZpbGUgPSB0eXBlb2YgdGhpcy4jb3B0aW9ucy5sb2NrID09PSBcInN0cmluZ1wiXG4gICAgICAgID8gcmVhZExvY2tmaWxlKHRoaXMuI29wdGlvbnMubG9jaylcbiAgICAgICAgOiBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy4jbG9ja2ZpbGUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICB0aGlzLiNsb2NrZmlsZSA9IGF3YWl0IHRoaXMuI2xvY2tmaWxlO1xuICAgIH1cbiAgICBpZiAodGhpcy4jbG9ja2ZpbGUgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJqc3I6IHNwZWNpZmllcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHBvcnRhYmxlIGxvYWRlciB3aXRob3V0IGEgbG9ja2ZpbGVcIixcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGxvY2tmaWxlID0gdGhpcy4jbG9ja2ZpbGU7XG4gICAgaWYgKGxvY2tmaWxlLnZlcnNpb24gIT09IFwiM1wiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVW5zdXBwb3J0ZWQgbG9ja2ZpbGUgdmVyc2lvbjogXCIgKyBsb2NrZmlsZS52ZXJzaW9uLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBMb29rIHVwIHRoZSBwYWNrYWdlICsgY29uc3RyYWludCBpbiB0aGUgbG9ja2ZpbGUuXG4gICAgY29uc3QgaWQgPSBganNyOiR7anNyU3BlY2lmaWVyLm5hbWV9JHtcbiAgICAgIGpzclNwZWNpZmllci52ZXJzaW9uID8gYEAke2pzclNwZWNpZmllci52ZXJzaW9ufWAgOiBcIlwiXG4gICAgfWA7XG4gICAgY29uc3QgbG9ja2ZpbGVFbnRyeSA9IGxvY2tmaWxlLnBhY2thZ2VzPy5zcGVjaWZpZXJzPy5baWRdO1xuICAgIGlmICghbG9ja2ZpbGVFbnRyeSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTcGVjaWZpZXIgbm90IGZvdW5kIGluIGxvY2tmaWxlOiAke2lkfWApO1xuICAgIH1cbiAgICBjb25zdCBsb2NrZmlsZUVudHJ5UGFyc2VkID0gcGFyc2VKc3JTcGVjaWZpZXIobmV3IFVSTChsb2NrZmlsZUVudHJ5KSk7XG5cbiAgICAvLyBMb2FkIHRoZSBKU1IgbWFuaWZlc3QgdG8gZmluZCB0aGUgZXhwb3J0IHBhdGguXG4gICAgY29uc3QgbWFuaWZlc3RVcmwgPSBuZXcgVVJMKFxuICAgICAgYC4vJHtsb2NrZmlsZUVudHJ5UGFyc2VkLm5hbWV9LyR7bG9ja2ZpbGVFbnRyeVBhcnNlZFxuICAgICAgICAudmVyc2lvbiF9X21ldGEuanNvbmAsXG4gICAgICBKU1JfUkVHSVNUUllfVVJMLFxuICAgICk7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBhd2FpdCB0aGlzLiNsb2FkUmVtb3RlKG1hbmlmZXN0VXJsLmhyZWYpO1xuICAgIGlmIChtYW5pZmVzdC5tZWRpYVR5cGUgIT09IFwiSnNvblwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBFeHBlY3RlZCBKU09OIG1lZGlhIHR5cGUgZm9yIEpTUiBtYW5pZmVzdCwgZ290OiAke21hbmlmZXN0Lm1lZGlhVHlwZX1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgbWFuaWZlc3REYXRhID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKG1hbmlmZXN0LmRhdGEpO1xuICAgIGNvbnN0IG1hbmlmZXN0SnNvbiA9IEpTT04ucGFyc2UobWFuaWZlc3REYXRhKTtcblxuICAgIC8vIExvb2sgdXAgdGhlIGV4cG9ydCBwYXRoIGluIHRoZSBtYW5pZmVzdC5cbiAgICBjb25zdCBleHBvcnRFbnRyeSA9IGAuJHtqc3JTcGVjaWZpZXIucGF0aCA/PyBcIlwifWA7XG4gICAgY29uc3QgZXhwb3J0UGF0aCA9IG1hbmlmZXN0SnNvbi5leHBvcnRzW2V4cG9ydEVudHJ5XTtcbiAgICBpZiAoIWV4cG9ydFBhdGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFBhY2thZ2UgJyR7bG9ja2ZpbGVFbnRyeX0nIGhhcyBubyBleHBvcnQgbmFtZWQgJyR7ZXhwb3J0RW50cnl9J2AsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0aGUgcmVzb2x2ZWQgVVJMLlxuICAgIHJldHVybiBuZXcgVVJMKFxuICAgICAgYC4vJHtsb2NrZmlsZUVudHJ5UGFyc2VkLm5hbWV9LyR7bG9ja2ZpbGVFbnRyeVBhcnNlZFxuICAgICAgICAudmVyc2lvbiF9LyR7ZXhwb3J0UGF0aH1gLFxuICAgICAgSlNSX1JFR0lTVFJZX1VSTCxcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbG9hZEVzbSh1cmw6IFVSTCk6IFByb21pc2U8ZXNidWlsZC5PbkxvYWRSZXN1bHQ+IHtcbiAgICBsZXQgbW9kdWxlOiBNb2R1bGU7XG4gICAgc3dpdGNoICh1cmwucHJvdG9jb2wpIHtcbiAgICAgIGNhc2UgXCJmaWxlOlwiOiB7XG4gICAgICAgIG1vZHVsZSA9IGF3YWl0IHRoaXMuI2xvYWRMb2NhbCh1cmwpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJodHRwOlwiOlxuICAgICAgY2FzZSBcImh0dHBzOlwiOlxuICAgICAgY2FzZSBcImRhdGE6XCI6IHtcbiAgICAgICAgbW9kdWxlID0gYXdhaXQgdGhpcy4jbG9hZFJlbW90ZSh1cmwuaHJlZik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiW3VucmVhY2hhYmxlXSB1bnN1cHBvcnRlZCBlc20gc2NoZW1lIFwiICsgdXJsLnByb3RvY29sKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2FkZXIgPSBtZWRpYVR5cGVUb0xvYWRlcihtb2R1bGUubWVkaWFUeXBlKTtcblxuICAgIGNvbnN0IHJlczogZXNidWlsZC5PbkxvYWRSZXN1bHQgPSB7IGNvbnRlbnRzOiBtb2R1bGUuZGF0YSwgbG9hZGVyIH07XG4gICAgaWYgKHVybC5wcm90b2NvbCA9PT0gXCJmaWxlOlwiKSB7XG4gICAgICByZXMud2F0Y2hGaWxlcyA9IFtmcm9tRmlsZVVybChtb2R1bGUuc3BlY2lmaWVyKV07XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICAjcmVzb2x2ZVJlbW90ZShzcGVjaWZpZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI2ZldGNoUmVkaXJlY3RzLmdldChzcGVjaWZpZXIpID8/IHNwZWNpZmllcjtcbiAgfVxuXG4gIGFzeW5jICNsb2FkUmVtb3RlKHNwZWNpZmllcjogc3RyaW5nKTogUHJvbWlzZTxNb2R1bGU+IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyBpKyspIHtcbiAgICAgIHNwZWNpZmllciA9IHRoaXMuI3Jlc29sdmVSZW1vdGUoc3BlY2lmaWVyKTtcbiAgICAgIGNvbnN0IG1vZHVsZSA9IHRoaXMuI2ZldGNoTW9kdWxlcy5nZXQoc3BlY2lmaWVyKTtcbiAgICAgIGlmIChtb2R1bGUpIHJldHVybiBtb2R1bGU7XG5cbiAgICAgIGxldCBwcm9taXNlID0gdGhpcy4jZmV0Y2hPbmdvaW5nLmdldChzcGVjaWZpZXIpO1xuICAgICAgaWYgKCFwcm9taXNlKSB7XG4gICAgICAgIHByb21pc2UgPSB0aGlzLiNmZXRjaChzcGVjaWZpZXIpO1xuICAgICAgICB0aGlzLiNmZXRjaE9uZ29pbmcuc2V0KHNwZWNpZmllciwgcHJvbWlzZSk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHByb21pc2U7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVG9vIG1hbnkgcmVkaXJlY3RzLiBMYXN0IG9uZTogXCIgKyBzcGVjaWZpZXIpO1xuICB9XG5cbiAgYXN5bmMgI2ZldGNoKHNwZWNpZmllcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IGZldGNoKHNwZWNpZmllciwge1xuICAgICAgcmVkaXJlY3Q6IFwibWFudWFsXCIsXG4gICAgfSk7XG4gICAgaWYgKHJlc3Auc3RhdHVzIDwgMjAwICYmIHJlc3Auc3RhdHVzID49IDQwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRW5jb3VudGVyZWQgc3RhdHVzIGNvZGUgJHtyZXNwLnN0YXR1c30gd2hpbGUgZmV0Y2hpbmcgJHtzcGVjaWZpZXJ9LmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZXNwLnN0YXR1cyA+PSAzMDAgJiYgcmVzcC5zdGF0dXMgPCA0MDApIHtcbiAgICAgIGF3YWl0IHJlc3AuYm9keT8uY2FuY2VsKCk7XG4gICAgICBjb25zdCBsb2NhdGlvbiA9IHJlc3AuaGVhZGVycy5nZXQoXCJsb2NhdGlvblwiKTtcbiAgICAgIGlmICghbG9jYXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBSZWRpcmVjdGVkIHdpdGhvdXQgbG9jYXRpb24gaGVhZGVyIHdoaWxlIGZldGNoaW5nICR7c3BlY2lmaWVyfS5gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKGxvY2F0aW9uLCBzcGVjaWZpZXIpO1xuICAgICAgaWYgKHVybC5wcm90b2NvbCAhPT0gXCJodHRwczpcIiAmJiB1cmwucHJvdG9jb2wgIT09IFwiaHR0cDpcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFJlZGlyZWN0ZWQgdG8gdW5zdXBwb3J0ZWQgcHJvdG9jb2wgJyR7dXJsLnByb3RvY29sfScgd2hpbGUgZmV0Y2hpbmcgJHtzcGVjaWZpZXJ9LmAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI2ZldGNoUmVkaXJlY3RzLnNldChzcGVjaWZpZXIsIHVybC5ocmVmKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZW50VHlwZSA9IHJlc3AuaGVhZGVycy5nZXQoXCJjb250ZW50LXR5cGVcIik7XG4gICAgY29uc3QgbWVkaWFUeXBlID0gbWFwQ29udGVudFR5cGUobmV3IFVSTChzcGVjaWZpZXIpLCBjb250ZW50VHlwZSk7XG5cbiAgICBjb25zdCBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoYXdhaXQgcmVzcC5hcnJheUJ1ZmZlcigpKTtcbiAgICB0aGlzLiNmZXRjaE1vZHVsZXMuc2V0KHNwZWNpZmllciwge1xuICAgICAgc3BlY2lmaWVyLFxuICAgICAgbWVkaWFUeXBlLFxuICAgICAgZGF0YSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jICNsb2FkTG9jYWwoc3BlY2lmaWVyOiBVUkwpOiBQcm9taXNlPE1vZHVsZT4ge1xuICAgIGNvbnN0IHBhdGggPSBmcm9tRmlsZVVybChzcGVjaWZpZXIpO1xuXG4gICAgY29uc3QgbWVkaWFUeXBlID0gbWFwQ29udGVudFR5cGUoc3BlY2lmaWVyLCBudWxsKTtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgRGVuby5yZWFkRmlsZShwYXRoKTtcblxuICAgIHJldHVybiB7IHNwZWNpZmllcjogc3BlY2lmaWVyLmhyZWYsIG1lZGlhVHlwZSwgZGF0YSB9O1xuICB9XG59XG4iLCAiaW1wb3J0IHsgZGlybmFtZSwgZXNidWlsZCwgam9pbiB9IGZyb20gXCIuLi9kZXBzLnRzXCI7XG5pbXBvcnQgeyBOYXRpdmVMb2FkZXIgfSBmcm9tIFwiLi9sb2FkZXJfbmF0aXZlLnRzXCI7XG5pbXBvcnQgeyBQb3J0YWJsZUxvYWRlciB9IGZyb20gXCIuL2xvYWRlcl9wb3J0YWJsZS50c1wiO1xuaW1wb3J0IHtcbiAgSU5fTk9ERV9NT0RVTEVTLFxuICBJTl9OT0RFX01PRFVMRVNfUkVTT0xWRUQsXG59IGZyb20gXCIuL3BsdWdpbl9kZW5vX3Jlc29sdmVyLnRzXCI7XG5pbXBvcnQge1xuICBlc2J1aWxkUmVzb2x1dGlvblRvVVJMLFxuICBMb2FkZXIsXG4gIHJlYWREZW5vQ29uZmlnLFxuICB1cmxUb0VzYnVpbGRSZXNvbHV0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEZW5vTG9hZGVyUGx1Z2luT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IHdoaWNoIGxvYWRlciB0byB1c2UuIEJ5IGRlZmF1bHQgdGhpcyB3aWxsIHVzZSB0aGUgYG5hdGl2ZWAgbG9hZGVyLFxuICAgKiB1bmxlc3MgdGhlIGAtLWFsbG93LXJ1bmAgcGVybWlzc2lvbiBoYXMgbm90IGJlZW4gZ2l2ZW4uXG4gICAqXG4gICAqIFNlZSB7QGxpbmsgZGVub0xvYWRlclBsdWdpbn0gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGRpZmZlcmVudCBsb2FkZXJzLlxuICAgKi9cbiAgbG9hZGVyPzogXCJuYXRpdmVcIiB8IFwicG9ydGFibGVcIjtcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgcGF0aCB0byBhIGRlbm8uanNvbiBjb25maWcgZmlsZSB0byB1c2UuIFRoaXMgaXMgZXF1aXZhbGVudCB0b1xuICAgKiB0aGUgYC0tY29uZmlnYCBmbGFnIHRvIHRoZSBEZW5vIGV4ZWN1dGFibGUuIFRoaXMgcGF0aCBtdXN0IGJlIGFic29sdXRlLlxuICAgKlxuICAgKiBOT1RFOiBJbXBvcnQgbWFwcyBpbiB0aGUgY29uZmlnIGZpbGUgYXJlIG5vdCB1c2VkIHRvIGluZm9ybSByZXNvbHV0aW9uLCBhc1xuICAgKiB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gZG9uZSBieSB0aGUgYGRlbm9SZXNvbHZlclBsdWdpbmAuIFRoaXMgb3B0aW9uIGlzIG9ubHlcbiAgICogdXNlZCB3aGVuIHNwZWNpZnlpbmcgYGxvYWRlcjogXCJuYXRpdmVcImAgdG8gbW9yZSBlZmZpY2llbnRseSBsb2FkIG1vZHVsZXNcbiAgICogZnJvbSB0aGUgY2FjaGUuIFdoZW4gc3BlY2lmeWluZyBgbG9hZGVyOiBcIm5hdGl2ZVwiYCwgdGhpcyBvcHRpb24gbXVzdCBiZSBpblxuICAgKiBzeW5jIHdpdGggdGhlIGBjb25maWdQYXRoYCBvcHRpb24gZm9yIGBkZW5vUmVzb2x2ZXJQbHVnaW5gLlxuICAgKi9cbiAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBVUkwgdG8gYW4gaW1wb3J0IG1hcCBmaWxlIHRvIHVzZSB3aGVuIHJlc29sdmluZyBpbXBvcnRcbiAgICogc3BlY2lmaWVycy4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBgLS1pbXBvcnQtbWFwYCBmbGFnIHRvIHRoZSBEZW5vXG4gICAqIGV4ZWN1dGFibGUuIFRoaXMgVVJMIG1heSBiZSByZW1vdGUgb3IgYSBsb2NhbCBmaWxlIFVSTC5cbiAgICpcbiAgICogSWYgdGhpcyBvcHRpb24gaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlbm8uanNvbiBjb25maWcgZmlsZSBpcyBjb25zdWx0ZWQgdG9cbiAgICogZGV0ZXJtaW5lIHdoYXQgaW1wb3J0IG1hcCB0byB1c2UsIGlmIGFueS5cbiAgICpcbiAgICogTk9URTogSW1wb3J0IG1hcHMgaW4gdGhlIGNvbmZpZyBmaWxlIGFyZSBub3QgdXNlZCB0byBpbmZvcm0gcmVzb2x1dGlvbiwgYXNcbiAgICogdGhpcyBoYXMgYWxyZWFkeSBiZWVuIGRvbmUgYnkgdGhlIGBkZW5vUmVzb2x2ZXJQbHVnaW5gLiBUaGlzIG9wdGlvbiBpcyBvbmx5XG4gICAqIHVzZWQgd2hlbiBzcGVjaWZ5aW5nIGBsb2FkZXI6IFwibmF0aXZlXCJgIHRvIG1vcmUgZWZmaWNpZW50bHkgbG9hZCBtb2R1bGVzXG4gICAqIGZyb20gdGhlIGNhY2hlLiBXaGVuIHNwZWNpZnlpbmcgYGxvYWRlcjogXCJuYXRpdmVcImAsIHRoaXMgb3B0aW9uIG11c3QgYmUgaW5cbiAgICogc3luYyB3aXRoIHRoZSBgaW1wb3J0TWFwVVJMYCBvcHRpb24gZm9yIGBkZW5vUmVzb2x2ZXJQbHVnaW5gLlxuICAgKi9cbiAgaW1wb3J0TWFwVVJMPzogc3RyaW5nO1xuICAvKipcbiAgICogU3BlY2lmeSB0aGUgcGF0aCB0byBhIGxvY2sgZmlsZSB0byB1c2UuIFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgYC0tbG9ja2BcbiAgICogZmxhZyB0byB0aGUgRGVubyBleGVjdXRhYmxlLiBUaGlzIHBhdGggbXVzdCBiZSBhYnNvbHV0ZS5cbiAgICpcbiAgICogSWYgdGhpcyBvcHRpb24gaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlbm8uanNvbiBjb25maWcgZmlsZSBpcyBjb25zdWx0ZWQgdG9cbiAgICogZGV0ZXJtaW5lIHdoYXQgaW1wb3J0IG1hcCB0byB1c2UsIGlmIGFueS5cbiAgICpcbiAgICogQSBsb2NrZmlsZSBtdXN0IGJlIHByZXNlbnQgdG8gcmVzb2x2ZSBganNyOmAgc3BlY2lmaWVycyB3aXRoIHRoZSBgcG9ydGFibGVgXG4gICAqIGxvYWRlci4gV2hlbiB1c2luZyB0aGUgYG5hdGl2ZWAgbG9hZGVyLCBhIGxvY2tmaWxlIGlzIG5vdCByZXF1aXJlZCwgYnV0IHRvXG4gICAqIGVuc3VyZSBkZXBlbmRlbmNpZXMgYXJlIGRlLWR1cGxpY2F0ZWQgY29ycmVjdGx5LCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgYVxuICAgKiBsb2NrZmlsZS5cbiAgICpcbiAgICogTk9URTogd2hlbiB1c2luZyBgbG9hZGVyOiBcInBvcnRhYmxlXCJgLCBpbnRlZ3JpdHkgY2hlY2tzIGFyZSBub3QgcGVyZm9ybWVkXG4gICAqIGZvciBFU00gbW9kdWxlcy5cbiAgICovXG4gIGxvY2tQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogU3BlY2lmeSB3aGV0aGVyIHRvIGdlbmVyYXRlIGFuZCB1c2UgYSBsb2NhbCBgbm9kZV9tb2R1bGVzYCBkaXJlY3Rvcnkgd2hlblxuICAgKiB1c2luZyB0aGUgYG5hdGl2ZWAgbG9hZGVyLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGAtLW5vZGUtbW9kdWxlcy1kaXJgXG4gICAqIGZsYWcgdG8gdGhlIERlbm8gZXhlY3V0YWJsZS5cbiAgICpcbiAgICogVGhpcyBvcHRpb24gaXMgaWdub3JlZCB3aGVuIHVzaW5nIHRoZSBgcG9ydGFibGVgIGxvYWRlciwgYXMgdGhlIHBvcnRhYmxlXG4gICAqIGxvYWRlciBhbHdheXMgdXNlcyBhIGxvY2FsIGBub2RlX21vZHVsZXNgIGRpcmVjdG9yeS5cbiAgICovXG4gIG5vZGVNb2R1bGVzRGlyPzogYm9vbGVhbjtcbn1cblxuY29uc3QgTE9BREVSUyA9IFtcIm5hdGl2ZVwiLCBcInBvcnRhYmxlXCJdIGFzIGNvbnN0O1xuXG4vKiogVGhlIGRlZmF1bHQgbG9hZGVyIHRvIHVzZS4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xPQURFUjogdHlwZW9mIExPQURFUlNbbnVtYmVyXSA9XG4gIGF3YWl0IERlbm8ucGVybWlzc2lvbnMucXVlcnkoeyBuYW1lOiBcInJ1blwiIH0pXG4gICAgICAudGhlbigocmVzKSA9PiByZXMuc3RhdGUgIT09IFwiZ3JhbnRlZFwiKVxuICAgID8gXCJwb3J0YWJsZVwiXG4gICAgOiBcIm5hdGl2ZVwiO1xuXG5jb25zdCBCVUlMVElOX05PREVfTU9EVUxFUyA9IG5ldyBTZXQoW1xuICBcImFzc2VydFwiLFxuICBcImFzc2VydC9zdHJpY3RcIixcbiAgXCJhc3luY19ob29rc1wiLFxuICBcImJ1ZmZlclwiLFxuICBcImNoaWxkX3Byb2Nlc3NcIixcbiAgXCJjbHVzdGVyXCIsXG4gIFwiY29uc29sZVwiLFxuICBcImNvbnN0YW50c1wiLFxuICBcImNyeXB0b1wiLFxuICBcImRncmFtXCIsXG4gIFwiZGlhZ25vc3RpY3NfY2hhbm5lbFwiLFxuICBcImRuc1wiLFxuICBcImRucy9wcm9taXNlc1wiLFxuICBcImRvbWFpblwiLFxuICBcImV2ZW50c1wiLFxuICBcImZzXCIsXG4gIFwiZnMvcHJvbWlzZXNcIixcbiAgXCJodHRwXCIsXG4gIFwiaHR0cDJcIixcbiAgXCJodHRwc1wiLFxuICBcIm1vZHVsZVwiLFxuICBcIm5ldFwiLFxuICBcIm9zXCIsXG4gIFwicGF0aFwiLFxuICBcInBhdGgvcG9zaXhcIixcbiAgXCJwYXRoL3dpbjMyXCIsXG4gIFwicGVyZl9ob29rc1wiLFxuICBcInByb2Nlc3NcIixcbiAgXCJwdW55Y29kZVwiLFxuICBcInF1ZXJ5c3RyaW5nXCIsXG4gIFwicmVwbFwiLFxuICBcInJlYWRsaW5lXCIsXG4gIFwic3RyZWFtXCIsXG4gIFwic3RyZWFtL2NvbnN1bWVyc1wiLFxuICBcInN0cmVhbS9wcm9taXNlc1wiLFxuICBcInN0cmVhbS93ZWJcIixcbiAgXCJzdHJpbmdfZGVjb2RlclwiLFxuICBcInN5c1wiLFxuICBcInRlc3RcIixcbiAgXCJ0aW1lcnNcIixcbiAgXCJ0aW1lcnMvcHJvbWlzZXNcIixcbiAgXCJ0bHNcIixcbiAgXCJ0dHlcIixcbiAgXCJ1cmxcIixcbiAgXCJ1dGlsXCIsXG4gIFwidXRpbC90eXBlc1wiLFxuICBcInY4XCIsXG4gIFwidm1cIixcbiAgXCJ3b3JrZXJfdGhyZWFkc1wiLFxuICBcInpsaWJcIixcbl0pO1xuXG4vKipcbiAqIFRoZSBEZW5vIGxvYWRlciBwbHVnaW4gZm9yIGVzYnVpbGQuIFRoaXMgcGx1Z2luIHdpbGwgbG9hZCBmdWxseSBxdWFsaWZpZWRcbiAqIGBmaWxlYCwgYGh0dHBgLCBgaHR0cHNgLCBhbmQgYGRhdGFgIFVSTHMuXG4gKlxuICogKipOb3RlKiogdGhhdCB0aGlzIHBsdWdpbiBkb2VzIG5vdCBkbyByZWxhdGl2ZS0+YWJzb2x1dGUgc3BlY2lmaWVyXG4gKiByZXNvbHV0aW9uLCBvciBpbXBvcnQgbWFwIHJlc29sdXRpb24uIFlvdSBtdXN0IHVzZSB0aGUgYGRlbm9SZXNvbHZlclBsdWdpbmBcbiAqIF9iZWZvcmVfIHRoZSBgZGVub0xvYWRlclBsdWdpbmAgdG8gZG8gdGhhdC5cbiAqXG4gKiBUaGlzIHBsdWdpbiBjYW4gYmUgYmFja2VkIGJ5IHR3byBkaWZmZXJlbnQgbG9hZGVycywgdGhlIGBuYXRpdmVgIGxvYWRlciBhbmRcbiAqIHRoZSBgcG9ydGFibGVgIGxvYWRlci5cbiAqXG4gKiAjIyMgTmF0aXZlIExvYWRlclxuICpcbiAqIFRoZSBuYXRpdmUgbG9hZGVyIHNoZWxscyBvdXQgdG8gdGhlIERlbm8gZXhlY3V0YWJsZSB1bmRlciB0aGUgaG9vZCB0byBsb2FkXG4gKiBmaWxlcy4gUmVxdWlyZXMgYC0tYWxsb3ctcmVhZGAgYW5kIGAtLWFsbG93LXJ1bmAuIEluIHRoaXMgbW9kZSB0aGUgZG93bmxvYWRcbiAqIGNhY2hlIGlzIHNoYXJlZCB3aXRoIHRoZSBEZW5vIGV4ZWN1dGFibGUuIFRoaXMgbW9kZSByZXNwZWN0cyBkZW5vLmxvY2ssXG4gKiBERU5PX0RJUiwgREVOT19BVVRIX1RPS0VOUywgYW5kIGFsbCBzaW1pbGFyIGxvYWRpbmcgY29uZmlndXJhdGlvbi4gRmlsZXMgYXJlXG4gKiBjYWNoZWQgb24gZGlzayBpbiB0aGUgc2FtZSBEZW5vIGNhY2hlIGFzIHRoZSBEZW5vIGV4ZWN1dGFibGUsIGFuZCB3aWxsIG5vdCBiZVxuICogcmUtZG93bmxvYWRlZCBvbiBzdWJzZXF1ZW50IGJ1aWxkcy5cbiAqXG4gKiBOUE0gc3BlY2lmaWVycyBjYW4gYmUgdXNlZCBpbiB0aGUgbmF0aXZlIGxvYWRlciB3aXRob3V0IHJlcXVpcmluZyBhIGxvY2FsXG4gKiBgbm9kZV9tb2R1bGVzYCBkaXJlY3RvcnkuIE5QTSBwYWNrYWdlcyBhcmUgcmVzb2x2ZWQsIGRvd25sb2FkZWQsIGNhY2hlZCwgYW5kXG4gKiBsb2FkZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBEZW5vIGV4ZWN1dGFibGUgZG9lcy5cbiAqXG4gKiBKU1Igc3BlY2lmaWVycyBjYW4gYmUgdXNlZCB3aXRob3V0IHJlc3RyaWN0aW9ucyBpbiB0aGUgbmF0aXZlIGxvYWRlci4gVG9cbiAqIGVuc3VyZSBkZXBlbmRlbmNpZXMgYXJlIGRlLWR1cGxpY2F0ZWQgY29ycmVjdGx5LCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgYVxuICogbG9ja2ZpbGUuXG4gKlxuICogIyMjIFBvcnRhYmxlIExvYWRlclxuICpcbiAqIFRoZSBwb3J0YWJsZSBsb2FkZXIgZG9lcyBtb2R1bGUgZG93bmxvYWRpbmcgYW5kIGNhY2hpbmcgd2l0aCBvbmx5IFdlYiBBUElzLlxuICogUmVxdWlyZXMgYC0tYWxsb3ctcmVhZGAgYW5kL29yIGAtLWFsbG93LW5ldGAuIFRoaXMgbW9kZSBkb2VzIG5vdCByZXNwZWN0XG4gKiBkZW5vLmxvY2ssIERFTk9fRElSLCBERU5PX0FVVEhfVE9LRU5TLCBvciBhbnkgb3RoZXIgbG9hZGluZyBjb25maWd1cmF0aW9uLiBJdFxuICogZG9lcyBub3QgY2FjaGUgZG93bmxvYWRlZCBmaWxlcy4gSXQgd2lsbCByZS1kb3dubG9hZCBmaWxlcyBvbiBldmVyeSBidWlsZC5cbiAqXG4gKiBOUE0gc3BlY2lmaWVycyBjYW4gYmUgdXNlZCBpbiB0aGUgcG9ydGFibGUgbG9hZGVyLCBidXQgcmVxdWlyZSBhIGxvY2FsXG4gKiBgbm9kZV9tb2R1bGVzYCBkaXJlY3RvcnkuIFRoZSBgbm9kZV9tb2R1bGVzYCBkaXJlY3RvcnkgbXVzdCBiZSBjcmVhdGVkIHByaW9yXG4gKiB1c2luZyBEZW5vJ3MgYC0tbm9kZS1tb2R1bGVzLWRpcmAgZmxhZy5cbiAqXG4gKiBKU1Igc3BlY2lmaWVycyByZXF1aXJlIGEgbG9ja2ZpbGUgdG8gYmUgcHJlc2VudCB0byByZXNvbHZlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVub0xvYWRlclBsdWdpbihcbiAgb3B0aW9uczogRGVub0xvYWRlclBsdWdpbk9wdGlvbnMgPSB7fSxcbik6IGVzYnVpbGQuUGx1Z2luIHtcbiAgY29uc3QgbG9hZGVyID0gb3B0aW9ucy5sb2FkZXIgPz8gREVGQVVMVF9MT0FERVI7XG4gIGlmIChMT0FERVJTLmluZGV4T2YobG9hZGVyKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbG9hZGVyOiAke2xvYWRlcn1gKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwiZGVuby1sb2FkZXJcIixcbiAgICBzZXR1cChidWlsZCkge1xuICAgICAgY29uc3QgY3dkID0gYnVpbGQuaW5pdGlhbE9wdGlvbnMuYWJzV29ya2luZ0RpciA/PyBEZW5vLmN3ZCgpO1xuXG4gICAgICBsZXQgbm9kZU1vZHVsZXNEaXI6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgICAgaWYgKG9wdGlvbnMubm9kZU1vZHVsZXNEaXIpIHtcbiAgICAgICAgbm9kZU1vZHVsZXNEaXIgPSBqb2luKGN3ZCwgXCJub2RlX21vZHVsZXNcIik7XG4gICAgICB9XG5cbiAgICAgIGxldCBsb2FkZXJJbXBsOiBMb2FkZXI7XG5cbiAgICAgIGNvbnN0IHBhY2thZ2VJZE1hcHBpbmcgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gICAgICBidWlsZC5vblN0YXJ0KGFzeW5jIGZ1bmN0aW9uIG9uU3RhcnQoKSB7XG4gICAgICAgIHBhY2thZ2VJZE1hcHBpbmcuY2xlYXIoKTtcbiAgICAgICAgc3dpdGNoIChsb2FkZXIpIHtcbiAgICAgICAgICBjYXNlIFwibmF0aXZlXCI6XG4gICAgICAgICAgICBsb2FkZXJJbXBsID0gbmV3IE5hdGl2ZUxvYWRlcih7XG4gICAgICAgICAgICAgIGluZm9PcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgY3dkLFxuICAgICAgICAgICAgICAgIGNvbmZpZzogb3B0aW9ucy5jb25maWdQYXRoLFxuICAgICAgICAgICAgICAgIGltcG9ydE1hcDogb3B0aW9ucy5pbXBvcnRNYXBVUkwsXG4gICAgICAgICAgICAgICAgbG9jazogb3B0aW9ucy5sb2NrUGF0aCxcbiAgICAgICAgICAgICAgICBub2RlTW9kdWxlc0Rpcjogb3B0aW9ucy5ub2RlTW9kdWxlc0RpcixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcInBvcnRhYmxlXCI6IHtcbiAgICAgICAgICAgIGxldCBsb2NrUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucy5sb2NrUGF0aDtcbiAgICAgICAgICAgIGlmIChsb2NrUGF0aCA9PT0gdW5kZWZpbmVkICYmIG9wdGlvbnMuY29uZmlnUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWREZW5vQ29uZmlnKG9wdGlvbnMuY29uZmlnUGF0aCk7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uZmlnLmxvY2sgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBsb2NrUGF0aCA9IGpvaW4oZGlybmFtZShvcHRpb25zLmNvbmZpZ1BhdGgpLCBjb25maWcubG9jayk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLmxvY2sgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgbG9ja1BhdGggPSBqb2luKGRpcm5hbWUob3B0aW9ucy5jb25maWdQYXRoKSwgXCJkZW5vLmxvY2tcIik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvYWRlckltcGwgPSBuZXcgUG9ydGFibGVMb2FkZXIoe1xuICAgICAgICAgICAgICBsb2NrOiBsb2NrUGF0aCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVJbk5vZGVNb2R1bGVzKFxuICAgICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICAgIHBhY2thZ2VJZDogc3RyaW5nLFxuICAgICAgICBraW5kOiBlc2J1aWxkLkltcG9ydEtpbmQsXG4gICAgICAgIHJlc29sdmVEaXI6IHN0cmluZyxcbiAgICAgICAgaW1wb3J0ZXI6IHN0cmluZyxcbiAgICAgICAgbmFtZXNwYWNlOiBzdHJpbmcsXG4gICAgICApOiBQcm9taXNlPGVzYnVpbGQuT25SZXNvbHZlUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJ1aWxkLnJlc29sdmUocGF0aCwge1xuICAgICAgICAgIGtpbmQsXG4gICAgICAgICAgcmVzb2x2ZURpcixcbiAgICAgICAgICBpbXBvcnRlcixcbiAgICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgICAgcGx1Z2luRGF0YTogSU5fTk9ERV9NT0RVTEVTX1JFU09MVkVELFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0LnBsdWdpbkRhdGEgPSBJTl9OT0RFX01PRFVMRVM7XG4gICAgICAgIHBhY2thZ2VJZE1hcHBpbmcuc2V0KHJlc3VsdC5wYXRoLCBwYWNrYWdlSWQpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBhc3luYyBmdW5jdGlvbiBvblJlc29sdmUoXG4gICAgICAgIGFyZ3M6IGVzYnVpbGQuT25SZXNvbHZlQXJncyxcbiAgICAgICk6IFByb21pc2U8ZXNidWlsZC5PblJlc29sdmVSZXN1bHQgfCBudWxsIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChhcmdzLm5hbWVzcGFjZSA9PT0gXCJmaWxlXCIgJiYgYXJncy5wbHVnaW5EYXRhID09PSBJTl9OT0RFX01PRFVMRVMpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBCVUlMVElOX05PREVfTU9EVUxFUy5oYXMoYXJncy5wYXRoKSB8fFxuICAgICAgICAgICAgQlVJTFRJTl9OT0RFX01PRFVMRVMuaGFzKFwibm9kZTpcIiArIGFyZ3MucGF0aClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHBhdGg6IGFyZ3MucGF0aCxcbiAgICAgICAgICAgICAgZXh0ZXJuYWw6IHRydWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9kZU1vZHVsZXNEaXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJ1aWxkLnJlc29sdmUoYXJncy5wYXRoLCB7XG4gICAgICAgICAgICAgIGtpbmQ6IGFyZ3Mua2luZCxcbiAgICAgICAgICAgICAgcmVzb2x2ZURpcjogYXJncy5yZXNvbHZlRGlyLFxuICAgICAgICAgICAgICBpbXBvcnRlcjogYXJncy5pbXBvcnRlcixcbiAgICAgICAgICAgICAgbmFtZXNwYWNlOiBhcmdzLm5hbWVzcGFjZSxcbiAgICAgICAgICAgICAgcGx1Z2luRGF0YTogSU5fTk9ERV9NT0RVTEVTX1JFU09MVkVELFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXN1bHQucGx1Z2luRGF0YSA9IElOX05PREVfTU9EVUxFUztcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGxvYWRlckltcGwubm9kZU1vZHVsZXNEaXJGb3JQYWNrYWdlICYmXG4gICAgICAgICAgICBsb2FkZXJJbXBsLnBhY2thZ2VJZEZyb21OYW1lSW5QYWNrYWdlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRQYWNrYWdlSWQgPSBwYWNrYWdlSWRNYXBwaW5nLmdldChhcmdzLmltcG9ydGVyKTtcbiAgICAgICAgICAgIGlmICghcGFyZW50UGFja2FnZUlkKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgQ291bGQgbm90IGZpbmQgcGFja2FnZSBJRCBmb3IgaW1wb3J0ZXI6ICR7YXJncy5pbXBvcnRlcn1gLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFyZ3MucGF0aC5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZUluTm9kZU1vZHVsZXMoXG4gICAgICAgICAgICAgICAgYXJncy5wYXRoLFxuICAgICAgICAgICAgICAgIHBhcmVudFBhY2thZ2VJZCxcbiAgICAgICAgICAgICAgICBhcmdzLmtpbmQsXG4gICAgICAgICAgICAgICAgYXJncy5yZXNvbHZlRGlyLFxuICAgICAgICAgICAgICAgIGFyZ3MuaW1wb3J0ZXIsXG4gICAgICAgICAgICAgICAgYXJncy5uYW1lc3BhY2UsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsZXQgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgICAgICAgICAgICAgbGV0IHBhdGhQYXJ0czogc3RyaW5nW107XG4gICAgICAgICAgICAgIGlmIChhcmdzLnBhdGguc3RhcnRzV2l0aChcIkBcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbc2NvcGUsIG5hbWUsIC4uLnJlc3RdID0gYXJncy5wYXRoLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgICAgICAgICBwYWNrYWdlTmFtZSA9IGAke3Njb3BlfS8ke25hbWV9YDtcbiAgICAgICAgICAgICAgICBwYXRoUGFydHMgPSByZXN0O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtuYW1lLCAuLi5yZXN0XSA9IGFyZ3MucGF0aC5zcGxpdChcIi9cIik7XG4gICAgICAgICAgICAgICAgcGFja2FnZU5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBhdGhQYXJ0cyA9IHJlc3Q7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcGFja2FnZUlkID0gbG9hZGVySW1wbC5wYWNrYWdlSWRGcm9tTmFtZUluUGFja2FnZShcbiAgICAgICAgICAgICAgICBwYWNrYWdlTmFtZSxcbiAgICAgICAgICAgICAgICBwYXJlbnRQYWNrYWdlSWQsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVEaXIgPSBhd2FpdCBsb2FkZXJJbXBsLm5vZGVNb2R1bGVzRGlyRm9yUGFja2FnZShcbiAgICAgICAgICAgICAgICBwYWNrYWdlSWQsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBbcGFja2FnZU5hbWUsIC4uLnBhdGhQYXJ0c10uam9pbihcIi9cIik7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlSW5Ob2RlTW9kdWxlcyhcbiAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgIHBhY2thZ2VJZCxcbiAgICAgICAgICAgICAgICBhcmdzLmtpbmQsXG4gICAgICAgICAgICAgICAgcmVzb2x2ZURpcixcbiAgICAgICAgICAgICAgICBhcmdzLmltcG9ydGVyLFxuICAgICAgICAgICAgICAgIGFyZ3MubmFtZXNwYWNlLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBUbyB1c2UgXCJucG06XCIgc3BlY2lmaWVycywgeW91IG11c3Qgc3BlY2lmeSBcIm5vZGVNb2R1bGVzRGlyOiB0cnVlXCIsIG9yIHVzZSBcImxvYWRlcjogbmF0aXZlXCIuYCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNwZWNpZmllciA9IGVzYnVpbGRSZXNvbHV0aW9uVG9VUkwoYXJncyk7XG5cbiAgICAgICAgLy8gT25jZSB3ZSBoYXZlIGFuIGFic29sdXRlIHBhdGgsIGxldCB0aGUgbG9hZGVyIHJlc29sdmVyIGZpZ3VyZSBvdXRcbiAgICAgICAgLy8gd2hhdCB0byBkbyB3aXRoIGl0LlxuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBsb2FkZXJJbXBsLnJlc29sdmUoc3BlY2lmaWVyKTtcblxuICAgICAgICBzd2l0Y2ggKHJlcy5raW5kKSB7XG4gICAgICAgICAgY2FzZSBcImVzbVwiOiB7XG4gICAgICAgICAgICBjb25zdCB7IHNwZWNpZmllciB9ID0gcmVzO1xuICAgICAgICAgICAgcmV0dXJuIHVybFRvRXNidWlsZFJlc29sdXRpb24oc3BlY2lmaWVyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcIm5wbVwiOiB7XG4gICAgICAgICAgICBsZXQgcmVzb2x2ZURpcjogc3RyaW5nO1xuICAgICAgICAgICAgaWYgKG5vZGVNb2R1bGVzRGlyKSB7XG4gICAgICAgICAgICAgIHJlc29sdmVEaXIgPSBub2RlTW9kdWxlc0RpcjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobG9hZGVySW1wbC5ub2RlTW9kdWxlc0RpckZvclBhY2thZ2UpIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZURpciA9IGF3YWl0IGxvYWRlckltcGwubm9kZU1vZHVsZXNEaXJGb3JQYWNrYWdlKFxuICAgICAgICAgICAgICAgIHJlcy5wYWNrYWdlSWQsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFRvIHVzZSBcIm5wbTpcIiBzcGVjaWZpZXJzLCB5b3UgbXVzdCBzcGVjaWZ5IFwibm9kZU1vZHVsZXNEaXI6IHRydWVcIiwgb3IgdXNlIFwibG9hZGVyOiBuYXRpdmVcIi5gLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcGF0aCA9IGAke3Jlcy5wYWNrYWdlTmFtZX0ke3Jlcy5wYXRoID8/IFwiXCJ9YDtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlSW5Ob2RlTW9kdWxlcyhcbiAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgcmVzLnBhY2thZ2VJZCxcbiAgICAgICAgICAgICAgYXJncy5raW5kLFxuICAgICAgICAgICAgICByZXNvbHZlRGlyLFxuICAgICAgICAgICAgICBhcmdzLmltcG9ydGVyLFxuICAgICAgICAgICAgICBhcmdzLm5hbWVzcGFjZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJub2RlXCI6IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHBhdGg6IHJlcy5wYXRoLFxuICAgICAgICAgICAgICBleHRlcm5hbDogdHJ1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBidWlsZC5vblJlc29sdmUoeyBmaWx0ZXI6IC8uKi8sIG5hbWVzcGFjZTogXCJmaWxlXCIgfSwgb25SZXNvbHZlKTtcbiAgICAgIGJ1aWxkLm9uUmVzb2x2ZSh7IGZpbHRlcjogLy4qLywgbmFtZXNwYWNlOiBcImh0dHBcIiB9LCBvblJlc29sdmUpO1xuICAgICAgYnVpbGQub25SZXNvbHZlKHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IFwiaHR0cHNcIiB9LCBvblJlc29sdmUpO1xuICAgICAgYnVpbGQub25SZXNvbHZlKHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IFwiZGF0YVwiIH0sIG9uUmVzb2x2ZSk7XG4gICAgICBidWlsZC5vblJlc29sdmUoeyBmaWx0ZXI6IC8uKi8sIG5hbWVzcGFjZTogXCJucG1cIiB9LCBvblJlc29sdmUpO1xuICAgICAgYnVpbGQub25SZXNvbHZlKHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IFwianNyXCIgfSwgb25SZXNvbHZlKTtcbiAgICAgIGJ1aWxkLm9uUmVzb2x2ZSh7IGZpbHRlcjogLy4qLywgbmFtZXNwYWNlOiBcIm5vZGVcIiB9LCBvblJlc29sdmUpO1xuXG4gICAgICBhc3luYyBmdW5jdGlvbiBvbkxvYWQoXG4gICAgICAgIGFyZ3M6IGVzYnVpbGQuT25Mb2FkQXJncyxcbiAgICAgICk6IFByb21pc2U8ZXNidWlsZC5PbkxvYWRSZXN1bHQgfCBudWxsPiB7XG4gICAgICAgIGlmIChhcmdzLm5hbWVzcGFjZSA9PT0gXCJmaWxlXCIgJiYgYXJncy5wbHVnaW5EYXRhID09PSBJTl9OT0RFX01PRFVMRVMpIHtcbiAgICAgICAgICBjb25zdCBjb250ZW50cyA9IGF3YWl0IERlbm8ucmVhZEZpbGUoYXJncy5wYXRoKTtcbiAgICAgICAgICByZXR1cm4geyBsb2FkZXI6IFwianNcIiwgY29udGVudHMgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzcGVjaWZpZXIgPSBlc2J1aWxkUmVzb2x1dGlvblRvVVJMKGFyZ3MpO1xuICAgICAgICByZXR1cm4gbG9hZGVySW1wbC5sb2FkRXNtKHNwZWNpZmllcik7XG4gICAgICB9XG4gICAgICAvLyBUT0RPKGx1Y2FjYXNvbmF0byk6IG9uY2UgaHR0cHM6Ly9naXRodWIuY29tL2V2YW53L2VzYnVpbGQvcHVsbC8yOTY4IGlzIGZpeGVkLCByZW1vdmUgdGhlIGNhdGNoIGFsbCBcImZpbGVcIiBoYW5kbGVyXG4gICAgICBidWlsZC5vbkxvYWQoeyBmaWx0ZXI6IC8uKi8sIG5hbWVzcGFjZTogXCJmaWxlXCIgfSwgb25Mb2FkKTtcbiAgICAgIGJ1aWxkLm9uTG9hZCh7IGZpbHRlcjogLy4qLywgbmFtZXNwYWNlOiBcImh0dHBcIiB9LCBvbkxvYWQpO1xuICAgICAgYnVpbGQub25Mb2FkKHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IFwiaHR0cHNcIiB9LCBvbkxvYWQpO1xuICAgICAgYnVpbGQub25Mb2FkKHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IFwiZGF0YVwiIH0sIG9uTG9hZCk7XG4gICAgfSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgXCIuL2Rlbm8tbW9jay5qc1wiO1xuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcIi4vZXNidWlsZC13YXNtLnRzXCI7XG5pbXBvcnQgeyBkZW5vUmVzb2x2ZXJQbHVnaW4gfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQveC9lc2J1aWxkX2Rlbm9fbG9hZGVyQDAuOS4wL21vZC50c1wiO1xuXG4vLyBwb3J0ZWQgZnJvbSBodHRwczovL2Rlbm8ubGFuZC94L2VzYnVpbGRfZGVub19sb2FkZXJAMC45LjAvc3JjL3BsdWdpbl9kZW5vX3Jlc29sdmVyLnRzXG5leHBvcnQgaW50ZXJmYWNlIERlbm9SZXNvbHZlclBsdWdpbk9wdGlvbnMge1xuICAvKipcbiAgICogU3BlY2lmeSB0aGUgcGF0aCB0byBhIGRlbm8uanNvbiBjb25maWcgZmlsZSB0byB1c2UuIFRoaXMgaXMgZXF1aXZhbGVudCB0b1xuICAgKiB0aGUgYC0tY29uZmlnYCBmbGFnIHRvIHRoZSBEZW5vIGV4ZWN1dGFibGUuIFRoaXMgcGF0aCBtdXN0IGJlIGFic29sdXRlLlxuICAgKi9cbiAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBVUkwgdG8gYW4gaW1wb3J0IG1hcCBmaWxlIHRvIHVzZSB3aGVuIHJlc29sdmluZyBpbXBvcnRcbiAgICogc3BlY2lmaWVycy4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBgLS1pbXBvcnQtbWFwYCBmbGFnIHRvIHRoZSBEZW5vXG4gICAqIGV4ZWN1dGFibGUuIFRoaXMgVVJMIG1heSBiZSByZW1vdGUgb3IgYSBsb2NhbCBmaWxlIFVSTC5cbiAgICpcbiAgICogSWYgdGhpcyBvcHRpb24gaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlbm8uanNvbiBjb25maWcgZmlsZSBpcyBjb25zdWx0ZWQgdG9cbiAgICogZGV0ZXJtaW5lIHdoYXQgaW1wb3J0IG1hcCB0byB1c2UsIGlmIGFueS5cbiAgICovXG4gIGltcG9ydE1hcFVSTD86IHN0cmluZztcbn1cblxuLyoqICB7QGxpbmsgZGVub1Jlc29sdmVyUGx1Z2lufSBmb3IgYnJvd3NlciAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVyOiAob3B0aW9ucz86IERlbm9SZXNvbHZlclBsdWdpbk9wdGlvbnMpID0+IFBsdWdpbiA9XG4gIGRlbm9SZXNvbHZlclBsdWdpbiBhcyB1bmtub3duIGFzIChcbiAgICBvcHRpb25zPzogRGVub1Jlc29sdmVyUGx1Z2luT3B0aW9ucyxcbiAgKSA9PiBQbHVnaW47XG4iLCAiY29uc3QgRVJSX01TR19NVVNUX05PVF9SRVRVUk4gPSAnIG11c3Qgbm90IHJldHVybiAnO1xuY29uc3QgVFJBTlNGT1JNX0ZVTkNUSU9OX05BTUUgPSAnYHRyYW5zZm9ybWVyYCc7XG5jb25zdCBSRUNPVkVSWV9GVU5DVElPTl9OQU1FID0gJ2ByZWNvdmVyZXJgJztcbmNvbnN0IERFRkFVTFRfVkFMVUVfTkFNRSA9ICdgZGVmYXVsdFZhbHVlYCc7XG5leHBvcnQgY29uc3QgRVJSX01TR19UUkFOU0ZPUk1FUl9NVVNUX05PVF9SRVRVUk4gPSBUUkFOU0ZPUk1fRlVOQ1RJT05fTkFNRSArIEVSUl9NU0dfTVVTVF9OT1RfUkVUVVJOO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfQ0FMTEVEX1dJVEggPSAnY2FsbGVkIHdpdGggJztcbmV4cG9ydCBjb25zdCBFUlJfTVNHX0RFRkFVTFRfVkFMVUVfTVVTVF9OT1RfQkUgPSBERUZBVUxUX1ZBTFVFX05BTUUgKyAnIG11c3Qgbm90IGJlICc7XG5leHBvcnQgY29uc3QgRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOID0gUkVDT1ZFUllfRlVOQ1RJT05fTkFNRSArIEVSUl9NU0dfTVVTVF9OT1RfUkVUVVJOO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfSU5QVVRfSVNfRlJPWkVOX05PVF9DQVNUX1RPX01VVEFCTEUgPSAnaW5wdXQgaXMgZnJvemVuLCBjYW5ub3QgY2FzdCB0byBtdXRhYmxlJztcbiIsICJpbXBvcnQgeyBFUlJfTVNHX0NBTExFRF9XSVRIIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvZXJyb3JfbWVzc2FnZS5qcyc7XG5jb25zdCBPS19UWVBFX1NUUiA9ICdgT2tgJztcbmNvbnN0IEVSUl9UWVBFX1NUUiA9ICdgRXJyYCc7XG5leHBvcnQgY29uc3QgRVJSX01TR19VTldSQVBfT0tfQlVUX0lOUFVUX0lTX0VSUiA9IEVSUl9NU0dfQ0FMTEVEX1dJVEggKyBFUlJfVFlQRV9TVFI7XG5leHBvcnQgY29uc3QgRVJSX01TR19VTldSQVBfRVJSX0JVVF9JTlBVVF9JU19PSyA9IEVSUl9NU0dfQ0FMTEVEX1dJVEggKyBPS19UWVBFX1NUUjtcbmV4cG9ydCBjb25zdCBFUlJfTVNHX0ZPUl9FUlJPUl9PQkpFQ1RfR0VORVJBVEVEX0JZX1VOV1JBUF9PUl9USFJPVyA9ICdDYXJyeWluZyBgRWAgaW4gJyArIEVSUl9UWVBFX1NUUiArICcgaW5zdGVhZCBvZiB0aHJvd2luZyBpdCBkaXJlY3RseS4gU2VlIGAuY2F1c2VgJztcbmNvbnN0IE1TR19CVUlMVElOX0VSUk9SX0lOU1RBTkNFX09GX0NVUlJFTlRfUkVBTE0gPSAnYW4gaW5zdGFuY2Ugb2YgYEVycm9yYCBvZiB0aGUgY3VycmVudCByZWFsbS4nO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfVEhST1dOX1ZBTFVFX0lTX05PVF9CVUlMVElOX0VSUk9SX0lOU1RBTkNFID0gJ1RoZSB0aHJvd24gdmFsdWUgaXMgbm90ICcgKyBNU0dfQlVJTFRJTl9FUlJPUl9JTlNUQU5DRV9PRl9DVVJSRU5UX1JFQUxNO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfQ09OVEFJTkVEX1RZUEVfRV9TSE9VTERfQkVfQlVJTFRJTl9FUlJPUl9JTlNUQU5DRSA9ICdUaGUgY29udGFpbmVkIEUgc2hvdWxkIGJlICcgKyBNU0dfQlVJTFRJTl9FUlJPUl9JTlNUQU5DRV9PRl9DVVJSRU5UX1JFQUxNO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfRE9UX0NBVVNFX1BST1BTX0lTX05PVF9DVVJSRU5UX1JFQUxNX0JVSUxUSU5fRVJST1JfSU5TVEFOQ0UgPSAnVGhpcyBgLmNhdXNlYCBpcyBub3QgJyArIE1TR19CVUlMVElOX0VSUk9SX0lOU1RBTkNFX09GX0NVUlJFTlRfUkVBTE07XG4iLCAiaW1wb3J0IHsgRVJSX01TR19VTldSQVBfRVJSX0JVVF9JTlBVVF9JU19PSywgRVJSX01TR19VTldSQVBfT0tfQlVUX0lOUFVUX0lTX0VSUiwgfSBmcm9tICcuL2ludGVybmFsL2Vycm9yX21lc3NhZ2UuanMnO1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2soaW5wdXQpIHtcbiAgICByZXR1cm4gaW5wdXQub2s7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlT2sodmFsKSB7XG4gICAgY29uc3QgciA9IHtcbiAgICAgICAgb2s6IHRydWUsXG4gICAgICAgIHZhbCxcbiAgICAgICAgLy8gWFhYOlxuICAgICAgICAvLyAgV2UgbmVlZCB0byBmaWxsIHdpdGggYG51bGxgIHRvIGltcHJvdmUgdGhlIGNvbXBhdGliaWxpdHkgd2l0aCBOZXh0LmpzXG4gICAgICAgIC8vICBzZWUgaHR0cHM6Ly9naXRodWIuY29tL29wdGlvbi10L29wdGlvbi10L3B1bGwvMTI1NlxuICAgICAgICBlcnI6IG51bGwsXG4gICAgfTtcbiAgICByZXR1cm4gcjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0VycihpbnB1dCkge1xuICAgIHJldHVybiAhaW5wdXQub2s7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRXJyKGVycikge1xuICAgIGNvbnN0IHIgPSB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgLy8gWFhYOlxuICAgICAgICAvLyAgV2UgbmVlZCB0byBmaWxsIHdpdGggYG51bGxgIHRvIGltcHJvdmUgdGhlIGNvbXBhdGliaWxpdHkgd2l0aCBOZXh0LmpzXG4gICAgICAgIC8vICBzZWUgaHR0cHM6Ly9naXRodWIuY29tL29wdGlvbi10L29wdGlvbi10L3B1bGwvMTI1NlxuICAgICAgICB2YWw6IG51bGwsXG4gICAgICAgIGVycixcbiAgICB9O1xuICAgIHJldHVybiByO1xufVxuLyoqXG4gKiAgUmV0dXJuIHRoZSBpbm5lciBgVGAgb2YgYSBgT2soVClgLlxuICpcbiAqICBAdGhyb3dzIHtUeXBlRXJyb3J9XG4gKiAgICAgIFRocm93cyBpZiB0aGUgc2VsZiBpcyBhIGBFcnJgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwT2soaW5wdXQpIHtcbiAgICByZXR1cm4gZXhwZWN0T2soaW5wdXQsIEVSUl9NU0dfVU5XUkFQX09LX0JVVF9JTlBVVF9JU19FUlIpO1xufVxuLyoqXG4gKiAgUmV0dXJuIHRoZSBpbm5lciBgRWAgb2YgYSBgRXJyKEUpYC5cbiAqXG4gKiAgQHRocm93cyB7VHlwZUVycm9yfVxuICogICAgICBUaHJvd3MgaWYgdGhlIHNlbGYgaXMgYSBgT2tgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwRXJyKGlucHV0KSB7XG4gICAgcmV0dXJuIGV4cGVjdEVycihpbnB1dCwgRVJSX01TR19VTldSQVBfRVJSX0JVVF9JTlBVVF9JU19PSyk7XG59XG4vKipcbiAqICBSZXR1cm4gX2lucHV0XyBhcyBgVGAgaWYgdGhlIHBhc3NlZCBfaW5wdXRfIGlzIGBPayhUKWAuXG4gKiAgT3RoZXJ3aXNlLCB0aHJvdyBgVHlwZUVycm9yYCB3aXRoIHRoZSBwYXNzZWQgYG1zZ2AuXG4gKlxuICogIEB0aHJvd3Mge1R5cGVFcnJvcn1cbiAqICAgICAgVGhyb3dzIGlmIHRoZSBzZWxmIGlzIGEgYEVycmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBlY3RPayhpbnB1dCwgbXNnKSB7XG4gICAgaWYgKCFpbnB1dC5vaykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKG1zZyk7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dC52YWw7XG59XG4vKipcbiAqICBSZXR1cm4gX2lucHV0XyBhcyBgRWAgaWYgdGhlIHBhc3NlZCBfaW5wdXRfIGlzIGBFcnIoRSlgLlxuICogIE90aGVyd2lzZSwgdGhyb3cgYFR5cGVFcnJvcmAgd2l0aCB0aGUgcGFzc2VkIGBtc2dgLlxuICpcbiAqICBAdGhyb3dzIHtUeXBlRXJyb3J9XG4gKiAgICAgIFRocm93cyBpZiB0aGUgc2VsZiBpcyBhIGBPa2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBlY3RFcnIoaW5wdXQsIG1zZykge1xuICAgIGlmIChpbnB1dC5vaykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKG1zZyk7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dC5lcnI7XG59XG4iLCAiLyoqXG4gKiAgUmV0dXJucyBgRXJyKEUpYCBpZiB0aGUgX2lucHV0XyBpcyBgRXJyKEUpYCxcbiAqICBvdGhlcndpc2UgY2FsbHMgX3RyYW5zZm9ybWVyXyB3aXRoIHRoZSB2YWx1ZSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICpcbiAqICBYWFg6XG4gKiAgU29tZSBsYW5ndWFnZXMgY2FsbCB0aGlzIG9wZXJhdGlvbiBmbGF0bWFwLlxuICogIEJ1dCB3ZSBkb24ndCBwcm92aWRlIGBmbGF0TWFwKClgIGFzIGFsaWFzIG9mIHRoaXMgZnVuY3Rpb25cbiAqICB0byBzb3J0IHdpdGggb3RoZXIgQVBJcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFuZFRoZW5Gb3JSZXN1bHQoaW5wdXQsIHRyYW5zZm9ybWVyKSB7XG4gICAgaWYgKCFpbnB1dC5vaykge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IHRyYW5zZm9ybWVyKGlucHV0LnZhbCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsICJpbXBvcnQgeyBpc0VyciwgdW53cmFwT2sgfSBmcm9tICcuL3Jlc3VsdC5qcyc7XG4vKipcbiAqICBSZXR1cm5zIGBQcm9taXNlXHUwMDNjRXJyKEUpXHUwMDNlYCBpZiB0aGUgX2lucHV0XyBpcyBgRXJyKEUpYCxcbiAqICBvdGhlcndpc2UgY2FsbHMgX3RyYW5zZm9ybWVyXyB3aXRoIHRoZSB2YWx1ZSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICpcbiAqICBYWFg6XG4gKiAgU29tZSBsYW5ndWFnZXMgY2FsbCB0aGlzIG9wZXJhdGlvbiBmbGF0bWFwLlxuICogIEJ1dCB3ZSBkb24ndCBwcm92aWRlIGBmbGF0TWFwKClgIGFzIGFsaWFzIG9mIHRoaXMgZnVuY3Rpb25cbiAqICB0byBzb3J0IHdpdGggb3RoZXIgQVBJcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFuZFRoZW5Bc3luY0ZvclJlc3VsdChpbnB1dCwgdHJhbnNmb3JtZXIpIHtcbiAgICBpZiAoaXNFcnIoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG4gICAgY29uc3Qgc291cmNlID0gdW53cmFwT2soaW5wdXQpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybWVyKHNvdXJjZSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsICJpbXBvcnQgeyBhbmRUaGVuRm9yUmVzdWx0IH0gZnJvbSAnLi9hbmRfdGhlbi5qcyc7XG5mdW5jdGlvbiBmbGF0dGVuKGlucHV0KSB7XG4gICAgcmV0dXJuIGlucHV0O1xufVxuLyoqXG4gKiBDb252ZXJ0cyBmcm9tIGBSZXN1bHRcdTAwM2NSZXN1bHRcdTAwM2NULCBFXHUwMDNlLCBFXHUwMDNlYCB0byBgUmVzdWx0XHUwMDNjVCwgRVx1MDAzZWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5Gb3JSZXN1bHQoaW5wdXQpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhbmRUaGVuRm9yUmVzdWx0KGlucHV0LCBmbGF0dGVuKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZU9rLCBjcmVhdGVFcnIgfSBmcm9tICcuL3Jlc3VsdC5qcyc7XG4vKipcbiAqICBDb252ZXJ0IHtAbGluayBQcm9taXNlU2V0dGxlZFJlc3VsdFx1MDAzY1RcdTAwM2V9IHJldHVybmVkIGJ5IHtAbGluayBQcm9taXNlLmFsbFNldHRsZWR9IHRvIHtAbGluayBSZXN1bHR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tUHJvbWlzZVNldHRsZWRSZXN1bHRUb1Jlc3VsdChpbnB1dCkge1xuICAgIGNvbnN0IHN0YXR1cyA9IGlucHV0LnN0YXR1cztcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICBjYXNlICdmdWxmaWxsZWQnOiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGlucHV0LnZhbHVlO1xuICAgICAgICAgICAgY29uc3Qgb2tXcmFwcGVkID0gY3JlYXRlT2sodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIG9rV3JhcHBlZDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdyZWplY3RlZCc6IHtcbiAgICAgICAgICAgIGNvbnN0IHJlYXNvbiA9IGlucHV0LnJlYXNvbjtcbiAgICAgICAgICAgIGNvbnN0IGVycldyYXBwZWQgPSBjcmVhdGVFcnIocmVhc29uKTtcbiAgICAgICAgICAgIHJldHVybiBlcnJXcmFwcGVkO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1c1N0ciA9IFN0cmluZyhzdGF0dXMpO1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBcXGBQcm9taXNlU2V0dGxlZFJlc3VsdC5zdGF0dXM9JHtzdGF0dXNTdHJ9XFxgIGlzIG5vdCBzdXBwb3J0ZWRgO1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBpc0VyciwgaXNPayB9IGZyb20gJy4vcmVzdWx0LmpzJztcbi8qKlxuICogICogUmV0dXJuIF9pbnB1dF8gZGlyZWN0bHkuXG4gKiAgICAgICogVGhpcyB2YWx1ZSBpcyBwYXNzZWQgYXMgdGhlIGlucHV0LiBCdXQgaXQgbWF5YmUgbXV0YXRlZCBieSBjYWxsaW5nIF9lZmZlY3Rvcl8uXG4gKiAgKiBDYWxsIF9lZmZlY3Rvcl8gd2l0aCB0aGUgaW5uZXIgdmFsdWUgb2YgX2lucHV0XyBpZiBfaW5wdXRfIGlzIGBPayhUKWAuXG4gKiAgKiBUaGlzIG1haW4gcHVycG9zZSBpcyB0byBpbnNwZWN0IGFuIGlubmVyIHZhbHVlIGluIGEgY2hhaW5lZCBmdW5jdGlvbiBjYWxsaW5nLlxuICogICAgSWYgeW91IGRvbid0IGhhdmUgdG8gZG8gaXQsIHlvdSBzaG91bGQgbm90IG11dGF0ZSB0aGUgaW5uZXIgdmFsdWUuXG4gKiAgICBpZi1lbHNlIHN0YXRlbWVudCBtaWdodCBiZSBzdWZmaWNpZW50IHRvIG11dGF0ZSB0aGUgaW5uZXIgdmFsdWUgaW5zdGVhZCBvZiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0T2tGb3JSZXN1bHQoaW5wdXQsIGVmZmVjdG9yKSB7XG4gICAgaWYgKGlzT2soaW5wdXQpKSB7XG4gICAgICAgIGVmZmVjdG9yKGlucHV0LnZhbCk7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dDtcbn1cbi8qKlxuICogICogUmV0dXJuIF9pbnB1dF8gZGlyZWN0bHkuXG4gKiAgICAgICogVGhpcyB2YWx1ZSBpcyBwYXNzZWQgYXMgdGhlIGlucHV0LiBCdXQgaXQgbWF5YmUgbXV0YXRlZCBieSBjYWxsaW5nIF9lZmZlY3Rvcl8uXG4gKiAgKiBDYWxsIF9lZmZlY3Rvcl8gd2l0aCB0aGUgaW5uZXIgdmFsdWUgb2YgX2lucHV0XyBpZiBfaW5wdXRfIGlzIGBFcnIoRSlgLlxuICogICogVGhpcyBtYWluIHB1cnBvc2UgaXMgdG8gaW5zcGVjdCBhbiBpbm5lciB2YWx1ZSBpbiBhIGNoYWluZWQgZnVuY3Rpb24gY2FsbGluZy5cbiAqICAgIElmIHlvdSBkb24ndCBoYXZlIHRvIGRvIGl0LCB5b3Ugc2hvdWxkIG5vdCBtdXRhdGUgdGhlIGlubmVyIHZhbHVlLlxuICogICAgaWYtZWxzZSBzdGF0ZW1lbnQgbWlnaHQgYmUgc3VmZmljaWVudCB0byBtdXRhdGUgdGhlIGlubmVyIHZhbHVlIGluc3RlYWQgb2YgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdEVyckZvclJlc3VsdChpbnB1dCwgZWZmZWN0b3IpIHtcbiAgICBpZiAoaXNFcnIoaW5wdXQpKSB7XG4gICAgICAgIGVmZmVjdG9yKGlucHV0LmVycik7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dDtcbn1cbi8qKlxuICogICogUmV0dXJuIF9pbnB1dF8gZGlyZWN0bHkuXG4gKiAgICAgICogVGhpcyB2YWx1ZSBpcyBwYXNzZWQgYXMgdGhlIGlucHV0LiBCdXQgaXQgbWF5YmUgbXV0YXRlZCBieSBjYWxsaW5nIF9lZmZlY3Rvcl8uXG4gKiAgKiBDYWxsIF9va0VmZmVjdG9yXyB3aXRoIHRoZSBpbm5lciB2YWx1ZSBvZiBfaW5wdXRfIGlmIF9pbnB1dF8gaXMgYE9rKFQpYC5cbiAqICAgIE90aGVyd2lzZSwgY2FsbCBfZXJyRWZmZWN0b3JfIHdpdGggdGhlIGlubmVyIHZhbHVlIGlmIF9pbnB1dF8gaXMgYEVycihFKWBcbiAqICAqIFRoaXMgbWFpbiBwdXJwb3NlIGlzIHRvIGluc3BlY3QgYW4gaW5uZXIgdmFsdWUgaW4gYSBjaGFpbmVkIGZ1bmN0aW9uIGNhbGxpbmcuXG4gKiAgICBJZiB5b3UgZG9uJ3QgaGF2ZSB0byBkbyBpdCwgeW91IHNob3VsZCBub3QgbXV0YXRlIHRoZSBpbm5lciB2YWx1ZS5cbiAqICAgIGlmLWVsc2Ugc3RhdGVtZW50IG1pZ2h0IGJlIHN1ZmZpY2llbnQgdG8gbXV0YXRlIHRoZSBpbm5lciB2YWx1ZSBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc3BlY3RCb3RoRm9yUmVzdWx0KGlucHV0LCBva0VmZmVjdG9yLCBlcnJFZmZlY3Rvcikge1xuICAgIGlmIChpbnB1dC5vaykge1xuICAgICAgICBva0VmZmVjdG9yKGlucHV0LnZhbCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBlcnJFZmZlY3RvcihpbnB1dC5lcnIpO1xuICAgIH1cbiAgICByZXR1cm4gaW5wdXQ7XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlT2sgfSBmcm9tICcuL3Jlc3VsdC5qcyc7XG4vKipcbiAqICBNYXBzIGEgYFJlc3VsdFx1MDAzY1QsIEVcdTAwM2VgIHRvIGBSZXN1bHRcdTAwM2NVLCBFXHUwMDNlYCBieSBhcHBseWluZyBhIF90cmFuc2Zvcm1lcl8gZnVuY3Rpb25cbiAqICB0byBhbiBjb250YWluZWQgYE9rKFQpYCB2YWx1ZSwgbGVhdmluZyBhbiBgRXJyKEUpYCB2YWx1ZSB1bnRvdWNoZWQuXG4gKlxuICogIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29tcG9zZSB0aGUgcmVzdWx0cyBvZiB0d28gZnVuY3Rpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwRm9yUmVzdWx0KGlucHV0LCB0cmFuc2Zvcm1lcikge1xuICAgIGlmICghaW5wdXQub2spIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB0cmFuc2Zvcm1lcihpbnB1dC52YWwpO1xuICAgIHJldHVybiBjcmVhdGVPayhyZXN1bHQpO1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZU9rLCBpc0VyciwgdW53cmFwT2sgfSBmcm9tICcuL3Jlc3VsdC5qcyc7XG4vKipcbiAqICBNYXBzIGEgYFJlc3VsdFx1MDAzY1QsIEVcdTAwM2VgIHRvIGBSZXN1bHRcdTAwM2NVLCBFXHUwMDNlYCBieSBhcHBseWluZyBhIF90cmFuc2Zvcm1lcl8gZnVuY3Rpb25cbiAqICB0byBhbiBjb250YWluZWQgYE9rKFQpYCB2YWx1ZSwgbGVhdmluZyBhbiBgRXJyKEUpYCB2YWx1ZSB1bnRvdWNoZWQuXG4gKlxuICogIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29tcG9zZSB0aGUgcmVzdWx0cyBvZiB0d28gZnVuY3Rpb25zLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFwQXN5bmNGb3JSZXN1bHQoaW5wdXQsIHRyYW5zZm9ybWVyKSB7XG4gICAgaWYgKGlzRXJyKGlucHV0KSkge1xuICAgICAgICBjb25zdCBmYWxsYmFjayA9IGlucHV0O1xuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgfVxuICAgIGNvbnN0IGlubmVyID0gdW53cmFwT2soaW5wdXQpO1xuICAgIGNvbnN0IG1hcHBlZCA9IGF3YWl0IHRyYW5zZm9ybWVyKGlubmVyKTtcbiAgICBjb25zdCByZXN1bHQgPSBjcmVhdGVPayhtYXBwZWQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlRXJyIH0gZnJvbSAnLi9yZXN1bHQuanMnO1xuLyoqXG4gKiAgTWFwcyBhIGBSZXN1bHRcdTAwM2NULCBFXHUwMDNlYCB0byBgUmVzdWx0XHUwMDNjVCwgRlx1MDAzZWAgYnkgYXBwbHlpbmcgYSBfdHJhbnNmb3JtZXJfIGZ1bmN0aW9uIGBtYXBGblx1MDAzY0UsIEZcdTAwM2VgXG4gKiAgdG8gYW4gY29udGFpbmVkIGBFcnIoRSlgIHZhbHVlLCBsZWF2aW5nIGFuIGBPayhUKWAgdmFsdWUgdW50b3VjaGVkLlxuICpcbiAqICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHBhc3MgdGhyb3VnaCBhIHN1Y2Nlc3NmdWwgcmVzdWx0IHdoaWxlIGhhbmRsaW5nIGFuIGVycm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwRXJyRm9yUmVzdWx0KGlucHV0LCB0cmFuc2Zvcm1lcikge1xuICAgIGlmIChpbnB1dC5vaykge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IHRyYW5zZm9ybWVyKGlucHV0LmVycik7XG4gICAgcmV0dXJuIGNyZWF0ZUVycihyZXN1bHQpO1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUVyciwgaXNPayB9IGZyb20gJy4vcmVzdWx0LmpzJztcbi8qKlxuICogIE1hcHMgYSBgUmVzdWx0XHUwMDNjVCwgRVx1MDAzZWAgdG8gYFJlc3VsdFx1MDAzY1QsIEZcdTAwM2VgIGJ5IGFwcGx5aW5nIGEgX3RyYW5zZm9ybWVyXyBmdW5jdGlvbiBgbWFwRm5cdTAwM2NFLCBGXHUwMDNlYFxuICogIHRvIGFuIGNvbnRhaW5lZCBgRXJyKEUpYCB2YWx1ZSwgbGVhdmluZyBhbiBgT2soVClgIHZhbHVlIHVudG91Y2hlZC5cbiAqXG4gKiAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBwYXNzIHRocm91Z2ggYSBzdWNjZXNzZnVsIHJlc3VsdCB3aGlsZSBoYW5kbGluZyBhbiBlcnJvci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1hcEVyckFzeW5jRm9yUmVzdWx0KGlucHV0LCB0cmFuc2Zvcm1lcikge1xuICAgIGlmIChpc09rKGlucHV0KSkge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGNvbnN0IGUgPSBhd2FpdCB0cmFuc2Zvcm1lcihpbnB1dC5lcnIpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGNyZWF0ZUVycihlKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuIiwgIi8qKlxuICogIFJldHVybiB0aGUgcmVzdWx0IG9mIF90cmFuc2Zvcm1lcl8gd2l0aCB1c2luZyBfaW5wdXRfIGFzIGFuIGFyZ3VtZW50IGZvciBpdCBpZiBfaW5wdXRfIGlzIGBPayhUKWAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gX2RlZmF1bHRWYWx1ZV8uXG4gKlxuICogIEJhc2ljYWxseSwgdGhpcyBvcGVyYXRpb24gaXMgYSBjb21iaW5hdGlvbiBgbWFwKClgIGFuZCBgdW53cmFwT3IoKWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBPckZvclJlc3VsdChpbnB1dCwgZGVmYXVsdFZhbHVlLCB0cmFuc2Zvcm1lcikge1xuICAgIGlmIChpbnB1dC5vaykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0cmFuc2Zvcm1lcihpbnB1dC52YWwpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xufVxuIiwgImltcG9ydCB7IGlzRXJyLCB1bndyYXBPayB9IGZyb20gJy4vcmVzdWx0LmpzJztcbi8qKlxuICogIFJldHVybiB0aGUgcmVzdWx0IG9mIF90cmFuc2Zvcm1lcl8gd2l0aCB1c2luZyBfaW5wdXRfIGFzIGFuIGFyZ3VtZW50IGZvciBpdCBpZiBfaW5wdXRfIGlzIGBPayhUKWAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gX2RlZmF1bHRWYWx1ZV8uXG4gKlxuICogIEJhc2ljYWxseSwgdGhpcyBvcGVyYXRpb24gaXMgYSBjb21iaW5hdGlvbiBgbWFwQXN5bmMoKWAgYW5kIGB1bndyYXBPcigpYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1hcE9yQXN5bmNGb3JSZXN1bHQoaW5wdXQsIGRlZmF1bHRWYWx1ZSwgdHJhbnNmb3JtZXIpIHtcbiAgICBpZiAoaXNFcnIoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHNvdXJjZSA9IHVud3JhcE9rKGlucHV0KTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmFuc2Zvcm1lcihzb3VyY2UpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4iLCAiLyoqXG4gKiAgTWFwcyBhIGBSZXN1bHRcdTAwM2NULCBFXHUwMDNlYCB0byBgVWAgYnkgYXBwbHlpbmcgX3RyYW5zZm9ybWVyXyB0byBhIGNvbnRhaW5lZCBgT2soVClgIHZhbHVlIGluIF9pbnB1dF8sXG4gKiAgb3IgYSBfcmVjb3ZlcmVyXyBmdW5jdGlvbiB0byBhIGNvbnRhaW5lZCBgRXJyKEUpYCB2YWx1ZSBpbiBfaW5wdXRfLlxuICogIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gdW5wYWNrIGEgc3VjY2Vzc2Z1bCByZXN1bHQgd2hpbGUgaGFuZGxpbmcgYW4gZXJyb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBPckVsc2VGb3JSZXN1bHQoaW5wdXQsIHJlY292ZXJlciwgdHJhbnNmb3JtZXIpIHtcbiAgICBpZiAoaW5wdXQub2spIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdHJhbnNmb3JtZXIoaW5wdXQudmFsKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgZmFsbGJhY2sgPSByZWNvdmVyZXIoaW5wdXQuZXJyKTtcbiAgICByZXR1cm4gZmFsbGJhY2s7XG59XG4iLCAiaW1wb3J0IHsgaXNPaywgdW53cmFwT2ssIHVud3JhcEVyciB9IGZyb20gJy4vcmVzdWx0LmpzJztcbi8qKlxuICogIE1hcHMgYSBgUmVzdWx0XHUwMDNjVCwgRVx1MDAzZWAgdG8gYFVgIGJ5IGFwcGx5aW5nIF90cmFuc2Zvcm1lcl8gdG8gYSBjb250YWluZWQgYE9rKFQpYCB2YWx1ZSBpbiBfaW5wdXRfLFxuICogIG9yIGEgX3JlY292ZXJlcl8gZnVuY3Rpb24gdG8gYSBjb250YWluZWQgYEVycihFKWAgdmFsdWUgaW4gX2lucHV0Xy5cbiAqICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHVucGFjayBhIHN1Y2Nlc3NmdWwgcmVzdWx0IHdoaWxlIGhhbmRsaW5nIGFuIGVycm9yLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFwT3JFbHNlQXN5bmNGb3JSZXN1bHQoaW5wdXQsIHJlY292ZXJlciwgdHJhbnNmb3JtZXIpIHtcbiAgICBpZiAoaXNPayhpbnB1dCkpIHtcbiAgICAgICAgY29uc3QgaW5uZXIgPSB1bndyYXBPayhpbnB1dCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybWVyKGlubmVyKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgZXJyID0gdW53cmFwRXJyKGlucHV0KTtcbiAgICBjb25zdCBmYWxsYmFjayA9IGF3YWl0IHJlY292ZXJlcihlcnIpO1xuICAgIHJldHVybiBmYWxsYmFjaztcbn1cbiIsICIvKipcbiAqICBDYWxscyBfcmVjb3ZlcmVyXyBhbmQgcmV0dXJuIGl0cyByZXR1cm5lZCB2YWx1ZSBpZiBfaW5wdXRfIGlzIGBFcnIoRSlgLFxuICogIG90aGVyd2lzZSByZXR1cm5zIF9pbnB1dF8gYXMgYE9rKFQpYC5cbiAqICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGZvciBjb250cm9sIGZsb3cgYmFzZWQgb24gcmVzdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9yRWxzZUZvclJlc3VsdChpbnB1dCwgcmVjb3ZlcmVyKSB7XG4gICAgaWYgKGlucHV0Lm9rKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG4gICAgY29uc3QgZmFsbGJhY2sgPSByZWNvdmVyZXIoaW5wdXQuZXJyKTtcbiAgICByZXR1cm4gZmFsbGJhY2s7XG59XG4iLCAiaW1wb3J0IHsgaXNPaywgdW53cmFwRXJyIH0gZnJvbSAnLi9yZXN1bHQuanMnO1xuLyoqXG4gKiAgQ2FsbHMgX3JlY292ZXJlcl8gYW5kIHJldHVybiBpdHMgcmV0dXJuZWQgdmFsdWUgaWYgdGhlIHJlc3VsdCBpcyBgRXJyKEUpYCxcbiAqICBvdGhlcndpc2UgcmV0dXJucyB0aGUgYE9rKFQpYCB2YWx1ZSBvZiBzZWxmLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3JFbHNlQXN5bmNGb3JSZXN1bHQoaW5wdXQsIHJlY292ZXJlcikge1xuICAgIGlmIChpc09rKGlucHV0KSkge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGNvbnN0IGlubmVyID0gdW53cmFwRXJyKGlucHV0KTtcbiAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBhd2FpdCByZWNvdmVyZXIoaW5uZXIpO1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG59XG4iLCAiaW1wb3J0IHsgaXNPaywgdW53cmFwRXJyIH0gZnJvbSAnLi4vcmVzdWx0LmpzJztcbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBFcnJPckZvclJlc3VsdChpbnB1dCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgaWYgKGlzT2soaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHZhbCA9IHVud3JhcEVycihpbnB1dCk7XG4gICAgcmV0dXJuIHZhbDtcbn1cbiIsICIvKipcbiAqICBVbndyYXBzIGEgcmVzdWx0IF9pbnB1dF8sIHJldHVybnMgdGhlIGNvbnRlbnQgb2YgYW4gYE9rKFQpYC5cbiAqICBJZiB0aGUgdmFsdWUgaXMgYW4gYEVycihFKWAgdGhlbiByZXR1cm4gX2RlZmF1bHRWYWx1ZV8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBPckZvclJlc3VsdChpbnB1dCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgaWYgKGlucHV0Lm9rKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IGlucHV0LnZhbDtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbn1cbiIsICJpbXBvcnQgeyB1bndyYXBFcnJPckZvclJlc3VsdCB9IGZyb20gJy4vaW50ZXJuYWwvdW53cmFwX2Vycl9vci5qcyc7XG5pbXBvcnQgeyB1bndyYXBPckZvclJlc3VsdCB9IGZyb20gJy4vdW53cmFwX29yLmpzJztcbi8qKlxuICogIFVud3JhcCBgVGAgaWYgX2lucHV0XyBpcyBgT2soVClgLlxuICogIE90aGVyd2lzZSwgcmV0dXJuIGBudWxsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTnVsbGFibGVGcm9tT2soaW5wdXQpIHtcbiAgICBjb25zdCB2YWwgPSB1bndyYXBPckZvclJlc3VsdChpbnB1dCwgbnVsbCk7XG4gICAgcmV0dXJuIHZhbDtcbn1cbi8qKlxuICogIFVud3JhcCBgRWAgaWYgX2lucHV0XyBpcyBgRXJyKEUpYC5cbiAqICBPdGhlcndpc2UsIHJldHVybiBgbnVsbGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b051bGxhYmxlRnJvbUVycihpbnB1dCkge1xuICAgIGNvbnN0IGVyciA9IHVud3JhcEVyck9yRm9yUmVzdWx0KGlucHV0LCBudWxsKTtcbiAgICByZXR1cm4gZXJyO1xufVxuIiwgImltcG9ydCB7IHVud3JhcEVyck9yRm9yUmVzdWx0IH0gZnJvbSAnLi9pbnRlcm5hbC91bndyYXBfZXJyX29yLmpzJztcbmltcG9ydCB7IHVud3JhcE9yRm9yUmVzdWx0IH0gZnJvbSAnLi91bndyYXBfb3IuanMnO1xuLyoqXG4gKiAgVW53cmFwIGBUYCBpZiBfaW5wdXRfIGlzIGBPayhUKWAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1VuZGVmaW5hYmxlRnJvbU9rKGlucHV0KSB7XG4gICAgY29uc3QgdmFsID0gdW53cmFwT3JGb3JSZXN1bHQoaW5wdXQsIHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIHZhbDtcbn1cbi8qKlxuICogIFVud3JhcCBgRWAgaWYgX2lucHV0XyBpcyBgRXJyKEUpYC5cbiAqICBPdGhlcndpc2UsIHJldHVybiBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvVW5kZWZpbmFibGVGcm9tRXJyKGlucHV0KSB7XG4gICAgY29uc3QgZXJyID0gdW53cmFwRXJyT3JGb3JSZXN1bHQoaW5wdXQsIHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIGVycjtcbn1cbiIsICJpbXBvcnQgeyBFUlJfTVNHX1VOV1JBUF9OT19WQUxfRk9SX05VTExBQkxFIH0gZnJvbSAnLi9pbnRlcm5hbC9lcnJvcl9tZXNzYWdlLmpzJztcbmV4cG9ydCBmdW5jdGlvbiBpc05vdE51bGwoaW5wdXQpIHtcbiAgICByZXR1cm4gaW5wdXQgIT09IG51bGw7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsKGlucHV0KSB7XG4gICAgcmV0dXJuIGlucHV0ID09PSBudWxsO1xufVxuLyoqXG4gKiAgUmV0dXJuIF9pbnB1dF8gYXMgYFRgIGlmIHRoZSBwYXNzZWQgX2lucHV0XyBpcyBub3QgYG51bGxgLlxuICogIE90aGVyd2lzZSwgdGhyb3cgYFR5cGVFcnJvcmAgd2l0aCB0aGUgcGFzc2VkIGBtc2dgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwZWN0Tm90TnVsbChpbnB1dCwgbXNnKSB7XG4gICAgaWYgKGlzTm90TnVsbChpbnB1dCkpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKG1zZyk7XG59XG4vKipcbiAqICBSZXR1cm4gX2lucHV0XyBhcyBgVGAgaWYgdGhlIHBhc3NlZCBfaW5wdXRfIGlzIG5vdCBgbnVsbGAuXG4gKiAgT3RoZXJ3aXNlLCB0aHJvdyBgVHlwZUVycm9yYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcE51bGxhYmxlKGlucHV0KSB7XG4gICAgcmV0dXJuIGV4cGVjdE5vdE51bGwoaW5wdXQsIEVSUl9NU0dfVU5XUkFQX05PX1ZBTF9GT1JfTlVMTEFCTEUpO1xufVxuIiwgImltcG9ydCB7IEVSUl9NU0dfVU5XUkFQX05PX1ZBTF9GT1JfVU5ERUZJTkFCTEUgfSBmcm9tICcuL2ludGVybmFsL2Vycm9yX21lc3NhZ2UuanMnO1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm90VW5kZWZpbmVkKGlucHV0KSB7XG4gICAgcmV0dXJuIGlucHV0ICE9PSB1bmRlZmluZWQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNVbmRlZmluZWQoaW5wdXQpIHtcbiAgICByZXR1cm4gaW5wdXQgPT09IHVuZGVmaW5lZDtcbn1cbi8qKlxuICogIFJldHVybiBfaW5wdXRfIGFzIGBUYCBpZiB0aGUgcGFzc2VkIF9pbnB1dF8gaXMgbm90IGB1bmRlZmluZWRgLlxuICogIE90aGVyd2lzZSwgdGhyb3cgYFR5cGVFcnJvcmAgd2l0aCB0aGUgcGFzc2VkIGBtc2dgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwZWN0Tm90VW5kZWZpbmVkKGlucHV0LCBtc2cpIHtcbiAgICBpZiAoaXNOb3RVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihtc2cpO1xufVxuLyoqXG4gKiAgUmV0dXJuIF9pbnB1dF8gYXMgYFRgIGlmIHRoZSBwYXNzZWQgX2lucHV0XyBpcyBub3QgYHVuZGVmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCB0aHJvdyBgVHlwZUVycm9yYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcFVuZGVmaW5hYmxlKGlucHV0KSB7XG4gICAgcmV0dXJuIGV4cGVjdE5vdFVuZGVmaW5lZChpbnB1dCwgRVJSX01TR19VTldSQVBfTk9fVkFMX0ZPUl9VTkRFRklOQUJMRSk7XG59XG4iLCAiaW1wb3J0IHsgaXNOdWxsIH0gZnJvbSAnLi4vbnVsbGFibGUvbnVsbGFibGUuanMnO1xuaW1wb3J0IHsgaXNVbmRlZmluZWQgfSBmcm9tICcuLi91bmRlZmluYWJsZS91bmRlZmluYWJsZS5qcyc7XG5pbXBvcnQgeyBpc0VyciwgY3JlYXRlT2ssIHVud3JhcE9rIH0gZnJvbSAnLi9yZXN1bHQuanMnO1xuLyoqXG4gKiAgVHJhbnNwb3NlcyBhIGBSZXN1bHRgIG9mIGFuIGBOdWxsYWJsZVx1MDAzY1RcdTAwM2VgIGludG8gYW4gYE51bGxhYmxlXHUwMDNjVFx1MDAzZWAgb2YgYSBgUmVzdWx0YC5cbiAqXG4gKiAgLSBgT2soVClgIC1cdTAwM2UgYE9rKFQpYFxuICogIC0gYE9rKG51bGwpYCAtXHUwMDNlIGBudWxsYFxuICogIC0gYEVycihFKWAgLVx1MDAzZSBgRXJyKEUpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNwb3NlUmVzdWx0VG9OdWxsYWJsZShpbnB1dCkge1xuICAgIGlmIChpc0VycihpbnB1dCkpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICBjb25zdCBpbm5lciA9IHVud3JhcE9rKGlucHV0KTtcbiAgICBpZiAoaXNOdWxsKGlubmVyKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZU9rKGlubmVyKTtcbn1cbi8qKlxuICogIFRyYW5zcG9zZXMgYSBgUmVzdWx0YCBvZiBhbiBgVW5kZWZpbmFibGVcdTAwM2NUXHUwMDNlYCBpbnRvIGFuIGBVbmRlZmluYWJsZVx1MDAzY1RcdTAwM2VgIG9mIGEgYFJlc3VsdGAuXG4gKlxuICogIC0gYE9rKFQpYCAtXHUwMDNlIGBPayhUKWBcbiAqICAtIGBPayh1bmRlZmluZWQpYCAtXHUwMDNlIGB1bmRlZmluZWRgXG4gKiAgLSBgRXJyKEUpYCAtXHUwMDNlIGBFcnIoRSlgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2VSZXN1bHRUb1VuZGVmaW5hYmxlKGlucHV0KSB7XG4gICAgaWYgKGlzRXJyKGlucHV0KSkge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGNvbnN0IGlubmVyID0gdW53cmFwT2soaW5wdXQpO1xuICAgIGlmIChpc1VuZGVmaW5lZChpbm5lcikpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZU9rKGlubmVyKTtcbn1cbiIsICJpbXBvcnQgeyBFUlJfTVNHX0lOUFVUX0lTX0ZST1pFTl9OT1RfQ0FTVF9UT19NVVRBQkxFIH0gZnJvbSAnLi9lcnJvcl9tZXNzYWdlLmpzJztcbmV4cG9ydCBmdW5jdGlvbiBpc0N1cnJlbnRSZWFsbUVycm9ySW5zdGFuY2UoaW5wdXQpIHtcbiAgICBjb25zdCBvayA9IGlucHV0IGluc3RhbmNlb2YgRXJyb3I7XG4gICAgcmV0dXJuIG9rO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydElzRXJyb3JJbnN0YW5jZShpbnB1dCwgbWVzc2FnZSkge1xuICAgIGlmIChpc0N1cnJlbnRSZWFsbUVycm9ySW5zdGFuY2UoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gV2UgZG9uJ3QgdGhyb3cgTm9kZSdzIEFzc2VydGlvbkVycm9yIGJlY2F1c2UgdGhlIGNvZGUgc2l6ZSB3aWxsIGJlIGxhcmdlci5cbiAgICBjb25zdCBlID0gbmV3IFR5cGVFcnJvcihtZXNzYWdlLCB7XG4gICAgICAgIGNhdXNlOiBpbnB1dCxcbiAgICB9KTtcbiAgICB0aHJvdyBlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydElzRnJvemVuKGlucHV0KSB7XG4gICAgaWYgKE9iamVjdC5pc0Zyb3plbihpbnB1dCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihFUlJfTVNHX0lOUFVUX0lTX0ZST1pFTl9OT1RfQ0FTVF9UT19NVVRBQkxFKTtcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgaXNDdXJyZW50UmVhbG1FcnJvckluc3RhbmNlIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvYXNzZXJ0LmpzJztcbmltcG9ydCB7IEVSUl9NU0dfRE9UX0NBVVNFX1BST1BTX0lTX05PVF9DVVJSRU5UX1JFQUxNX0JVSUxUSU5fRVJST1JfSU5TVEFOQ0UgfSBmcm9tICcuL2Vycm9yX21lc3NhZ2UuanMnO1xuY29uc3QgV1JBUFBFUl9OQU1FID0gJ1Vua25vd25DYXVzYWxFcnJvcic7XG5leHBvcnQgY2xhc3MgVW5rbm93bkNhdXNhbEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKGNhdXNlKSB7XG4gICAgICAgIHN1cGVyKEVSUl9NU0dfRE9UX0NBVVNFX1BST1BTX0lTX05PVF9DVVJSRU5UX1JFQUxNX0JVSUxUSU5fRVJST1JfSU5TVEFOQ0UsIHtcbiAgICAgICAgICAgIGNhdXNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5uYW1lID0gV1JBUFBFUl9OQU1FO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiB3cmFwV2l0aE5ld0Vycm9ySWZDYXVzYWxJc1Vua25vd24oZSkge1xuICAgIGlmIChpc0N1cnJlbnRSZWFsbUVycm9ySW5zdGFuY2UoZSkpIHtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgfVxuICAgIGNvbnN0IHdyYXBwZXIgPSBuZXcgVW5rbm93bkNhdXNhbEVycm9yKGUpO1xuICAgIHJldHVybiB3cmFwcGVyO1xufVxuIiwgImltcG9ydCB7IHdyYXBXaXRoTmV3RXJyb3JJZkNhdXNhbElzVW5rbm93biB9IGZyb20gJy4vaW50ZXJuYWwvdW5rbm93bl9jYXVzYWxfY2Fycmllci5qcyc7XG5pbXBvcnQgeyBjcmVhdGVPaywgY3JlYXRlRXJyLCBpc09rLCB1bndyYXBFcnIgfSBmcm9tICcuL3Jlc3VsdC5qcyc7XG4vKipcbiAqICBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIHRoZSByZXR1cmVuZCB2YWx1ZSBmcm9tIF9wcm9kdWNlcl8gaW50byBgT2soVClgLlxuICogIElmIF9wcm9kdWNlcl8gdGhyb3cgYSBzb21ldGhpbmcsIHRoaXMgcmV0dXJucyBpdCB3aXRoIHdyYXBwaW5nIGBFcnIodW5rbm93bilgLlxuICpcbiAqICBOT1RFOlxuICogIDEuIEFuIHVzZXIgc2hvdWxkIG5hcnJvdyB0aGUgc2NvcGUgb2YgX3Byb2R1Y2VyXyB0byBtYWtlIGl0IHByZWRpY3RhYmxlIHRoYXQgaXMgaW4gYEVycihFKWAuXG4gKiAgMi4gQmFzaWNhbGx5LCB3ZSBkb24ndCByZWNvbW1lbnQgdG8gdXNlIHRoaXMgdG8gY3JlYXRlIGEgYFJlc3VsdFx1MDAzY1QsIEVcdTAwM2VgLlxuICogICAgIEdlbmVyYWxseSwgeW91IHNob3VsZCBkZWZpbmUgYW4gYEVycihFKWAgYnkgZGVwZW5kaW5nIG9uIGFuIHVzZSBjYXNlIGNvbnRleHRcbiAqICAgICBVc2UgdGhpcyBvcGVyYXRvciBqdXN0IHRvIG1ha2UgYSBicmlkZ2UgdG8gZXhpc3RpbmcgY29kZWJhc2VcbiAqICAgICB0aGF0IHlvdSBjYW5ub3QgaW5zcGVjdCBkZWVwbHkgdG8gZGV0YWlscy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyeUNhdGNoSW50b1Jlc3VsdChwcm9kdWNlcikge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcHJvZHVjZXIoKTtcbiAgICAgICAgY29uc3Qgb2tXcmFwcGVkID0gY3JlYXRlT2sodmFsdWUpO1xuICAgICAgICByZXR1cm4gb2tXcmFwcGVkO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBjb25zdCBlcnJXcmFwcGVkID0gY3JlYXRlRXJyKGUpO1xuICAgICAgICByZXR1cm4gZXJyV3JhcHBlZDtcbiAgICB9XG59XG4vKipcbiAqICAtIFRoaXMgZnVuY3Rpb24gY29udmVydHMgdGhlIHJldHVyZW5kIHZhbHVlIGZyb20gX3Byb2R1Y2VyXyBpbnRvIGBPayhUKWAuXG4gKiAgLSBJZiBfcHJvZHVjZXJfIHRocm93IGEgdmFsdWUgdGhhdCBpcyBhbiBpbnN0YW5jZSBvZiBgRXJyb3JgIG9mICoqY3VycmVudCBbcmVhbG1dW3JlYWxtXSoqLFxuICogICAgdGhpcyByZXR1cm5zIGl0IHdpdGggd3JhcHBpbmcgYEVycihFcnJvcilgLlxuICogIC0gT3RoZXJ3aXNlLCBpZiBfcHJvZHVjZXJfIHRocm93IGEgdmFsdWUgdGhhdCBpcyAqKm5vdCoqIGFuIGluc3RhbmNlIG9mIGN1cnJlbnQgcmVhbG0gaW5jbHVkaW5nXG4gKiAgICBhIG9uZSBjcmVhdGVkIGZyb20gY3Jvc3MtcmVhbSBgRXJyb3JgIGNvbnN0cnVjdG9yIChlLmcuIGBub2RlOnZtYCwgaWZyYW1lKSxcbiAqICAgIHRoZW4gdGhpcyBvcGVyYXRvciBjcmVhdGVzIGEgbmV3IGBFcnJvcmAgb2JqZWN0IGNyZWF0ZWQgZnJvbSB0aGUgY3VycmVudCByZWFsbSdzIGNvbnN0cnVjdG9yXG4gKiAgICBhbmQgdGhlIHRocm93biB2YWx1ZSB0byBpdHMgYEVycm9yLmNhdXNlYCwgbWFrZSBpdCBgRXJyKEVycm9yKWAsIGFuZCByZXR1cm4gaXQgZmluYWxseS5cbiAqXG4gKiAgW3JlYWxtXTogaHR0cHM6Ly8yNjIuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy8xNC4wLyNyZWFsbVxuICpcbiAqIC0tLS0tXG4gKlxuICogIFRoaXMganVzdCByZXR1cm5zIGl0IGRpcmVjdGx5IGlmIHRoZSB0aHJvd24gdmFsdWUgaXMgYW4gYEVycm9yYCBpbnN0YW5jZSBvZiB0aGUgY3VycmVudCByZWFsbS5cbiAqICBXZSBjYW4gZG8gdGhpcyBkdWUgdG8gdGhhdCB3ZSBjYW4gcmVnYXJkIGl0IGlzIGhhcHBlbiBpbiB0aGUgc2FtZSBvcGVyYXRpb24gc3RlcCB0byB0aHJvdyBhIHZhbHVlXG4gKiAgdW5saWtlIHRoZSBjb21iaW5hdGlvbiBvZiBgdHJ5Q2F0Y2hJbnRvUmVzdWx0YCArIGBtYXBFcnJGb3JSZXN1bHRgLlxuICogIFRoaXMgc2hvcnRjdXQgY2FuIHJlZHVjZSBhbiB1bm5lY2Vzc2FyeSBgRXJyb3IuY2F1c2VgIGNoYWluLlxuICpcbiAqIC0tLS0tXG4gKlxuICogIE5PVEU6XG4gKiAgMS4gQW4gdXNlciBzaG91bGQgbmFycm93IHRoZSBzY29wZSBvZiBfcHJvZHVjZXJfIHRvIG1ha2UgaXQgcHJlZGljdGFibGUgdGhhdCBpcyBpbiBgRXJyKEUpYC5cbiAqICAyLiBUaGlzIGZ1bmN0aW9uIHJlcXVpcmVzIEVTMjAyMidzIGBFcnJvci5jYXVzZWAgdG8gZ2V0IGFuIGFjdHVhbCB0aHJvd24gb2JqZWN0LlxuICogIDMuIEJhc2ljYWxseSwgd2UgZG9uJ3QgcmVjb21tZW50IHRvIHVzZSB0aGlzIHRvIGNyZWF0ZSBhIGBSZXN1bHRcdTAwM2NULCBFXHUwMDNlYC5cbiAqICAgICBHZW5lcmFsbHksIHlvdSBzaG91bGQgZGVmaW5lIGFuIGBFcnIoRSlgIGJ5IGRlcGVuZGluZyBvbiBhbiB1c2UgY2FzZSBjb250ZXh0XG4gKiAgICAgVXNlIHRoaXMgb3BlcmF0b3IganVzdCB0byBtYWtlIGEgYnJpZGdlIHRvIGV4aXN0aW5nIGNvZGViYXNlXG4gKiAgICAgdGhhdCB5b3UgY2Fubm90IGluc3BlY3QgZGVlcGx5IHRvIGRldGFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cnlDYXRjaEludG9SZXN1bHRXaXRoRW5zdXJlRXJyb3IocHJvZHVjZXIpIHtcbiAgICBjb25zdCByZXN1bHQgPSB0cnlDYXRjaEludG9SZXN1bHQocHJvZHVjZXIpO1xuICAgIGlmIChpc09rKHJlc3VsdCkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgdGhyb3duID0gdW53cmFwRXJyKHJlc3VsdCk7XG4gICAgY29uc3QgY2F1c2FsID0gd3JhcFdpdGhOZXdFcnJvcklmQ2F1c2FsSXNVbmtub3duKHRocm93bik7XG4gICAgY29uc3QgZXJyV3JhcHBlZCA9IGNyZWF0ZUVycihjYXVzYWwpO1xuICAgIHJldHVybiBlcnJXcmFwcGVkO1xufVxuIiwgImltcG9ydCB7IHdyYXBXaXRoTmV3RXJyb3JJZkNhdXNhbElzVW5rbm93biB9IGZyb20gJy4vaW50ZXJuYWwvdW5rbm93bl9jYXVzYWxfY2Fycmllci5qcyc7XG5pbXBvcnQgeyBjcmVhdGVPaywgY3JlYXRlRXJyLCB1bndyYXBFcnIsIGlzT2sgfSBmcm9tICcuL3Jlc3VsdC5qcyc7XG4vKipcbiAqICBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIHRoZSByZXR1cmVuZCB2YWx1ZSBmcm9tIF9wcm9kdWNlcl8gaW50byBgT2soVClgLlxuICogIElmIF9wcm9kdWNlcl8gdGhyb3cgYSBzb21ldGhpbmcsIHRoaXMgcmV0dXJucyBpdCB3aXRoIHdyYXBwaW5nIGBFcnIodW5rbm93bilgLlxuICpcbiAqICBOT1RFOlxuICogIDEuIEFuIHVzZXIgc2hvdWxkIG5hcnJvdyB0aGUgc2NvcGUgb2YgX3Byb2R1Y2VyXyB0byBtYWtlIGl0IHByZWRpY3RhYmxlIHRoYXQgaXMgaW4gYEVycihFKWAuXG4gKiAgMi4gQmFzaWNhbGx5LCB3ZSBkb24ndCByZWNvbW1lbnQgdG8gdXNlIHRoaXMgdG8gY3JlYXRlIGEgYFJlc3VsdFx1MDAzY1QsIEVcdTAwM2VgLlxuICogICAgIEdlbmVyYWxseSwgeW91IHNob3VsZCBkZWZpbmUgYW4gYEVycihFKWAgYnkgZGVwZW5kaW5nIG9uIGFuIHVzZSBjYXNlIGNvbnRleHRcbiAqICAgICBVc2UgdGhpcyBvcGVyYXRvciBqdXN0IHRvIG1ha2UgYSBicmlkZ2UgdG8gZXhpc3RpbmcgY29kZWJhc2VcbiAqICAgICB0aGF0IHlvdSBjYW5ub3QgaW5zcGVjdCBkZWVwbHkgdG8gZGV0YWlscy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyeUNhdGNoSW50b1Jlc3VsdEFzeW5jKHByb2R1Y2VyKSB7XG4gICAgbGV0IHZhbHVlO1xuICAgIHRyeSB7XG4gICAgICAgIHZhbHVlID0gYXdhaXQgcHJvZHVjZXIoKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc3QgZXJyV3JhcHBlZCA9IGNyZWF0ZUVycihlKTtcbiAgICAgICAgcmV0dXJuIGVycldyYXBwZWQ7XG4gICAgfVxuICAgIGNvbnN0IHdyYXBwZWQgPSBjcmVhdGVPayh2YWx1ZSk7XG4gICAgcmV0dXJuIHdyYXBwZWQ7XG59XG4vKipcbiAqICAtIFRoaXMgZnVuY3Rpb24gY29udmVydHMgdGhlIHJldHVyZW5kIHZhbHVlIGZyb20gX3Byb2R1Y2VyXyBpbnRvIGBPayhUKWAuXG4gKiAgLSBJZiBfcHJvZHVjZXJfIHRocm93IGEgdmFsdWUgdGhhdCBpcyBhbiBpbnN0YW5jZSBvZiBgRXJyb3JgIG9mICoqY3VycmVudCBbcmVhbG1dW3JlYWxtXSoqLFxuICogICAgdGhpcyByZXR1cm5zIGl0IHdpdGggd3JhcHBpbmcgYEVycihFcnJvcilgLlxuICogIC0gT3RoZXJ3aXNlLCBpZiBfcHJvZHVjZXJfIHRocm93IGEgdmFsdWUgdGhhdCBpcyAqKm5vdCoqIGFuIGluc3RhbmNlIG9mIGN1cnJlbnQgcmVhbG0gaW5jbHVkaW5nXG4gKiAgICBhIG9uZSBjcmVhdGVkIGZyb20gY3Jvc3MtcmVhbSBgRXJyb3JgIGNvbnN0cnVjdG9yIChlLmcuIGBub2RlOnZtYCwgaWZyYW1lKSxcbiAqICAgIHRoZW4gdGhpcyBvcGVyYXRvciBjcmVhdGVzIGEgbmV3IGBFcnJvcmAgb2JqZWN0IGNyZWF0ZWQgZnJvbSB0aGUgY3VycmVudCByZWFsbSdzIGNvbnN0cnVjdG9yXG4gKiAgICBhbmQgdGhlIHRocm93biB2YWx1ZSB0byBpdHMgYEVycm9yLmNhdXNlYCwgbWFrZSBpdCBgRXJyKEVycm9yKWAsIGFuZCByZXR1cm4gaXQgZmluYWxseS5cbiAqXG4gKiAgW3JlYWxtXTogaHR0cHM6Ly8yNjIuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy8xNC4wLyNyZWFsbVxuICpcbiAqIC0tLS0tXG4gKlxuICogIFRoaXMganVzdCByZXR1cm5zIGl0IGRpcmVjdGx5IGlmIHRoZSB0aHJvd24gdmFsdWUgaXMgYW4gYEVycm9yYCBpbnN0YW5jZSBvZiB0aGUgY3VycmVudCByZWFsbS5cbiAqICBXZSBjYW4gZG8gdGhpcyBkdWUgdG8gdGhhdCB3ZSBjYW4gcmVnYXJkIGl0IGlzIGhhcHBlbiBpbiB0aGUgc2FtZSBvcGVyYXRpb24gc3RlcCB0byB0aHJvdyBhIHZhbHVlXG4gKiAgdW5saWtlIHRoZSBjb21iaW5hdGlvbiBvZiBgdHJ5Q2F0Y2hJbnRvUmVzdWx0YCArIGBtYXBFcnJGb3JSZXN1bHRgLlxuICogIFRoaXMgc2hvcnRjdXQgY2FuIHJlZHVjZSBhbiB1bm5lY2Vzc2FyeSBgRXJyb3IuY2F1c2VgIGNoYWluLlxuICpcbiAqIC0tLS0tXG4gKlxuICogIE5PVEU6XG4gKiAgMS4gQW4gdXNlciBzaG91bGQgbmFycm93IHRoZSBzY29wZSBvZiBfcHJvZHVjZXJfIHRvIG1ha2UgaXQgcHJlZGljdGFibGUgdGhhdCBpcyBpbiBgRXJyKEUpYC5cbiAqICAyLiBUaGlzIGZ1bmN0aW9uIHJlcXVpcmVzIEVTMjAyMidzIGBFcnJvci5jYXVzZWAgdG8gZ2V0IGFuIGFjdHVhbCB0aHJvd24gb2JqZWN0LlxuICogIDMuIEJhc2ljYWxseSwgd2UgZG9uJ3QgcmVjb21tZW50IHRvIHVzZSB0aGlzIHRvIGNyZWF0ZSBhIGBSZXN1bHRcdTAwM2NULCBFXHUwMDNlYC5cbiAqICAgICBHZW5lcmFsbHksIHlvdSBzaG91bGQgZGVmaW5lIGFuIGBFcnIoRSlgIGJ5IGRlcGVuZGluZyBvbiBhbiB1c2UgY2FzZSBjb250ZXh0XG4gKiAgICAgVXNlIHRoaXMgb3BlcmF0b3IganVzdCB0byBtYWtlIGEgYnJpZGdlIHRvIGV4aXN0aW5nIGNvZGViYXNlXG4gKiAgICAgdGhhdCB5b3UgY2Fubm90IGluc3BlY3QgZGVlcGx5IHRvIGRldGFpbHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlDYXRjaEludG9SZXN1bHRXaXRoRW5zdXJlRXJyb3JBc3luYyhwcm9kdWNlcikge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyeUNhdGNoSW50b1Jlc3VsdEFzeW5jKHByb2R1Y2VyKTtcbiAgICBpZiAoaXNPayhyZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGNvbnN0IHRocm93biA9IHVud3JhcEVycihyZXN1bHQpO1xuICAgIGNvbnN0IGNhdXNhbCA9IHdyYXBXaXRoTmV3RXJyb3JJZkNhdXNhbElzVW5rbm93bih0aHJvd24pO1xuICAgIGNvbnN0IGVycldyYXBwZWQgPSBjcmVhdGVFcnIoY2F1c2FsKTtcbiAgICByZXR1cm4gZXJyV3JhcHBlZDtcbn1cbiIsICIvKipcbiAqICBVbndyYXBzIGEgcmVzdWx0IF9pbnB1dF8sIHJldHVybnMgdGhlIGNvbnRlbnQgb2YgYW4gYE9rKFQpYC5cbiAqICBJZiB0aGUgdmFsdWUgaXMgYW4gYEVycihFKWAgdGhlbiBpdCBjYWxscyBgZGVmYCB3aXRoIGl0cyB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcE9yRWxzZUZvclJlc3VsdChpbnB1dCwgcmVjb3ZlcmVyKSB7XG4gICAgaWYgKGlucHV0Lm9rKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IGlucHV0LnZhbDtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgY29uc3QgZmFsbGJhY2sgPSByZWNvdmVyZXIoaW5wdXQuZXJyKTtcbiAgICByZXR1cm4gZmFsbGJhY2s7XG59XG4iLCAiaW1wb3J0IHsgaXNPaywgdW53cmFwRXJyLCB1bndyYXBPayB9IGZyb20gJy4vcmVzdWx0LmpzJztcbi8qKlxuICogIFVud3JhcHMgX2lucHV0XywgcmV0dXJucyB0aGUgY29udGVudCBvZiBhbiBgT2soVClgLlxuICogIElmIHRoZSB2YWx1ZSBpcyBhbiBgRXJyKEUpYCB0aGVuIGl0IGNhbGxzIGByZWNvdmVyZXJgIHdpdGggaXRzIHZhbHVlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdW53cmFwT3JFbHNlQXN5bmNGb3JSZXN1bHQoaW5wdXQsIHJlY292ZXJlcikge1xuICAgIGlmIChpc09rKGlucHV0KSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHVud3JhcE9rKGlucHV0KTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBlcnJvciA9IHVud3JhcEVycihpbnB1dCk7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gYXdhaXQgcmVjb3ZlcmVyKGVycm9yKTtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xufVxuIiwgImltcG9ydCB7IEVSUl9NU0dfRk9SX0VSUk9SX09CSkVDVF9HRU5FUkFURURfQllfVU5XUkFQX09SX1RIUk9XIH0gZnJvbSAnLi9lcnJvcl9tZXNzYWdlLmpzJztcbmNvbnN0IFdSQVBQRVJfTkFNRSA9ICdDYXVzYWxDYXJyaWVyRXJyb3InO1xuZXhwb3J0IGNsYXNzIENhdXNhbENhcnJpZXJFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihjYXVzZSkge1xuICAgICAgICBzdXBlcihFUlJfTVNHX0ZPUl9FUlJPUl9PQkpFQ1RfR0VORVJBVEVEX0JZX1VOV1JBUF9PUl9USFJPVywge1xuICAgICAgICAgICAgY2F1c2UsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm5hbWUgPSBXUkFQUEVSX05BTUU7XG4gICAgfVxufVxuIiwgImltcG9ydCB7IFxuLy8gV2UgZG9uJ3QgZXhwb3NlIHRoaXMgYXMgYSBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuXG5DYXVzYWxDYXJyaWVyRXJyb3IsIH0gZnJvbSAnLi9pbnRlcm5hbC9jYXVzYWxfY2Fycmllci5qcyc7XG5pbXBvcnQgeyBpc09rLCB1bndyYXBPaywgdW53cmFwRXJyIH0gZnJvbSAnLi9yZXN1bHQuanMnO1xuLyoqXG4gKiAgVW53cmFwcyBfaW5wdXRfLCByZXR1cm5zIHRoZSBjb250ZW50IG9mIGFuIGBPayhUKWAuXG4gKiAgT3RoZXJ3aXNlLCB0aGlzIGZ1bmN0aW9uIHRocm93IGEgbmV3IGBFcnJvcmAgaW5zdGFuY2Ugd2l0aCBzZXR0aW5nIHRoZSBvcmlnaW5hbCBgRWBcbiAqICBpbiBgRXJyKEUpYCB0byBgLmNhdXNlYCBwcm9wZXJ0eSBvZiB0aGUgYEVycm9yYCBpbnN0YW5jZS5cbiAqXG4gKiAgVGhpcyBtYXRjaGVzIHRoZSBjb252ZW50aW9uIHRoYXQgaXMgXCJhIHRocm93biBvYmplY3QgaXMgYWx3YXlzIGFuIGBFcnJvcmAgaW5zdGFuY2VcIi5cbiAqICBUbyBhY2hpdmUgdGhpcywgdGhpcyBmdW5jdGlvbiByZXF1aXJlcyBgRXJyb3IuY2F1c2VgIHRvIGNhcnJ5IHRoZSBmYWlsdXJlIHJlYXNvbi5cbiAqXG4gKiAgX19XZSBETyBOT1QgUkVDQ09NRU5EIFRPIFVTRSBUSElTIGZ1bmN0aW9uIGdlbmVyYWxseV9fLlxuICpcbiAqICBUaGlzIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIG9ubHkgdG8gaW1wcm92ZSBhbiBpbnRlcm9wZXJhYmlsaXR5IHdpdGggdGhlIHdvcmxkIHVzaW5nIFwidGhyb3cgZXJyb3JcIiBjb252ZW50aW9uLlxuICogIF9fV2UgZG8gbm90IHJlY29tbWVuZCB0byB1c2UgdGhpcyBmdW5jdGlvbl9fLlxuICpcbiAqICBAdGhyb3dzIHtFcnJvcn1cbiAqICAgICAgSWYgdGhlIF9pbnB1dF8gaXMgYEVycihFKWAsXG4gKiAgICAgIHRoaXMgdGhyb3cgYW4gbmV3IGBFcnJvcmAgaW5zdGFuY2Ugd2l0aCBzZXR0aW5nIHRoZSBvcmlnaW5hbCBgRWAgdG8gYC5jYXVzZWAgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBPclRocm93Rm9yUmVzdWx0KGlucHV0KSB7XG4gICAgaWYgKGlzT2soaW5wdXQpKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHVud3JhcE9rKGlucHV0KTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgY29uc3QgY2F1c2UgPSB1bndyYXBFcnIoaW5wdXQpO1xuICAgIGNvbnN0IHdyYXBwZXIgPSBuZXcgQ2F1c2FsQ2FycmllckVycm9yKGNhdXNlKTtcbiAgICB0aHJvdyB3cmFwcGVyO1xufVxuIiwgImNvbnN0IEVSUl9NU0dfTVVTVF9OT1RfUkVUVVJOID0gJyBtdXN0IG5vdCByZXR1cm4gJztcbmNvbnN0IFRSQU5TRk9STV9GVU5DVElPTl9OQU1FID0gJ2B0cmFuc2Zvcm1lcmAnO1xuY29uc3QgUkVDT1ZFUllfRlVOQ1RJT05fTkFNRSA9ICdgcmVjb3ZlcmVyYCc7XG5jb25zdCBERUZBVUxUX1ZBTFVFX05BTUUgPSAnYGRlZmF1bHRWYWx1ZWAnO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOID0gVFJBTlNGT1JNX0ZVTkNUSU9OX05BTUUgKyBFUlJfTVNHX01VU1RfTk9UX1JFVFVSTjtcbmV4cG9ydCBjb25zdCBFUlJfTVNHX0NBTExFRF9XSVRIID0gJ2NhbGxlZCB3aXRoICc7XG5leHBvcnQgY29uc3QgRVJSX01TR19ERUZBVUxUX1ZBTFVFX01VU1RfTk9UX0JFID0gREVGQVVMVF9WQUxVRV9OQU1FICsgJyBtdXN0IG5vdCBiZSAnO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfUkVDT1ZFUkVSX01VU1RfTk9UX1JFVFVSTiA9IFJFQ09WRVJZX0ZVTkNUSU9OX05BTUUgKyBFUlJfTVNHX01VU1RfTk9UX1JFVFVSTjtcbmV4cG9ydCBjb25zdCBFUlJfTVNHX0lOUFVUX0lTX0ZST1pFTl9OT1RfQ0FTVF9UT19NVVRBQkxFID0gJ2lucHV0IGlzIGZyb3plbiwgY2Fubm90IGNhc3QgdG8gbXV0YWJsZSc7XG4iLCAiaW1wb3J0IHsgRVJSX01TR19UUkFOU0ZPUk1FUl9NVVNUX05PVF9SRVRVUk4sIEVSUl9NU0dfQ0FMTEVEX1dJVEgsIEVSUl9NU0dfREVGQVVMVF9WQUxVRV9NVVNUX05PVF9CRSwgRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOLCB9IGZyb20gJy4uLy4uL2ludGVybmFsL2Vycm9yX21lc3NhZ2UuanMnO1xuY29uc3QgTk9fVkFMX1ZBTFVFX1RZUEVfU1RSID0gJ2BudWxsYCBvciBgdW5kZWZpbmVkYCc7XG5leHBvcnQgY29uc3QgRVJSX01TR19UUkFOU0ZPUk1FUl9NVVNUX05PVF9SRVRVUk5fTk9fVkFMX0ZPUl9NQVlCRSA9IEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOICsgTk9fVkFMX1ZBTFVFX1RZUEVfU1RSO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfVU5XUkFQX05PX1ZBTF9GT1JfTUFZQkUgPSBFUlJfTVNHX0NBTExFRF9XSVRIICsgTk9fVkFMX1ZBTFVFX1RZUEVfU1RSO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfREVGQVVMVF9WQUxVRV9NVVNUX05PVF9CRV9OT19WQUxfRk9SX01BWUJFID0gRVJSX01TR19ERUZBVUxUX1ZBTFVFX01VU1RfTk9UX0JFICsgTk9fVkFMX1ZBTFVFX1RZUEVfU1RSO1xuZXhwb3J0IGNvbnN0IEVSUl9NU0dfUkVDT1ZFUkVSX01VU1RfTk9UX1JFVFVSTl9OT19WQUxfRk9SX01BWUJFID0gRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOICsgTk9fVkFMX1ZBTFVFX1RZUEVfU1RSO1xuIiwgImltcG9ydCB7IEVSUl9NU0dfVU5XUkFQX05PX1ZBTF9GT1JfTUFZQkUgfSBmcm9tICcuL2ludGVybmFsL2Vycm9yX21lc3NhZ2UuanMnO1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm90TnVsbE9yVW5kZWZpbmVkKGlucHV0KSB7XG4gICAgcmV0dXJuIGlucHV0ICE9PSB1bmRlZmluZWQgXHUwMDI2XHUwMDI2IGlucHV0ICE9PSBudWxsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKGlucHV0KSB7XG4gICAgcmV0dXJuIGlucHV0ID09PSB1bmRlZmluZWQgfHwgaW5wdXQgPT09IG51bGw7XG59XG4vKipcbiAqICBSZXR1cm4gX2lucHV0XyBhcyBgVGAgaWYgdGhlIHBhc3NlZCBfaW5wdXRfIGlzIG5vdCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgLlxuICogIE90aGVyd2lzZSwgdGhyb3cgYFR5cGVFcnJvcmAgd2l0aCB0aGUgcGFzc2VkIGBtc2dgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwZWN0Tm90TnVsbE9yVW5kZWZpbmVkKGlucHV0LCBtc2cpIHtcbiAgICBpZiAoaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihtc2cpO1xufVxuLyoqXG4gKiAgUmV0dXJuIF92YWx1ZV8gYXMgYFRgIGlmIHRoZSBwYXNzZWQgX3ZhbHVlXyBpcyBub3QgYG51bGxgIGFuZCBgdW5kZWZpbmVkYC5cbiAqICBPdGhlcndpc2UsIHRocm93IGBUeXBlRXJyb3JgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwTWF5YmUodmFsdWUpIHtcbiAgICByZXR1cm4gZXhwZWN0Tm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlLCBFUlJfTVNHX1VOV1JBUF9OT19WQUxfRk9SX01BWUJFKTtcbn1cbiIsICJpbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiAgUmV0dXJucyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIF9pbnB1dF8gaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLFxuICogIG90aGVyd2lzZSBjYWxscyBfdHJhbnNmb3JtZXJfIHdpdGggdGhlIHZhbHVlIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuXG4gKlxuICogIFhYWDpcbiAqICBTb21lIGxhbmd1YWdlcyBjYWxsIHRoaXMgb3BlcmF0aW9uIGZsYXRtYXAuXG4gKiAgQnV0IHdlIGRvbid0IHByb3ZpZGUgYGZsYXRNYXAoKWAgYXMgYWxpYXMgb2YgdGhpcyBmdW5jdGlvbi5cbiAqICBiZWNhdXNlIGl0J3MgdG9vIGhhcmQgdG8gdW5kYXJzdGFuZCB0aGF0IFwiZmxhdE1hcFwiIG9wZXJhdGlvbiBmb3IgYFQgfCBudWxsIHwgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFuZFRoZW5Gb3JNYXliZShpbnB1dCwgdHJhbnNmb3JtZXIpIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gdHJhbnNmb3JtZXIoaW5wdXQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4iLCAiaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICcuL21heWJlLmpzJztcbi8qKlxuICogIFJldHVybnMgYG51bGxgIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBfaW5wdXRfIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYCxcbiAqICBvdGhlcndpc2UgY2FsbHMgX3RyYW5zZm9ybWVyXyB3aXRoIHRoZSB2YWx1ZSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICpcbiAqICBYWFg6XG4gKiAgU29tZSBsYW5ndWFnZXMgY2FsbCB0aGlzIG9wZXJhdGlvbiBmbGF0bWFwLlxuICogIEJ1dCB3ZSBkb24ndCBwcm92aWRlIGBmbGF0TWFwKClgIGFzIGFsaWFzIG9mIHRoaXMgZnVuY3Rpb24uXG4gKiAgYmVjYXVzZSBpdCdzIHRvbyBoYXJkIHRvIHVuZGFyc3RhbmQgdGhhdCBcImZsYXRNYXBcIiBvcGVyYXRpb24gZm9yIGBUIHwgbnVsbCB8IHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhbmRUaGVuQXN5bmNGb3JNYXliZShpbnB1dCwgdHJhbnNmb3JtZXIpIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdHJhbnNmb3JtZXIoaW5wdXQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4iLCAiaW1wb3J0IHsgaXNOb3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICcuL21heWJlLmpzJztcbi8qKlxuICogICogUmV0dXJuIF9pbnB1dF8gZGlyZWN0bHkuXG4gKiAgICAgICogVGhpcyB2YWx1ZSBpcyBwYXNzZWQgYXMgdGhlIGlucHV0LiBCdXQgaXQgbWF5YmUgbXV0YXRlZCBieSBjYWxsaW5nIF9lZmZlY3Rvcl8uXG4gKiAgKiBDYWxsIF9lZmZlY3Rvcl8gd2l0aCBfaW5wdXRfIGlmIF9pbnB1dF8gaXMgbm90IGBudWxsYCBhbmQgYHVuZGVmaW5lZGAuXG4gKlxuICogICogVGhpcyB3YXMgYWRkZWQgdG8gc29ydCB3aXRoIG90aGVycyBvciBmdXR1cmUgZW5oYW5jZW1lbnQgdG8gYWNjZXB0IGNoYWluaW5nIGZ1bmN0aW9ucy5cbiAqICAgIFdlIHJlY29tbWVuZCB0byB1c2Ugc2ltcGxlIGBpZmAgc3RhdGVtZW50IG9yIHNpbWlsYXIgd2F5IGFuZCB0aGV5IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdE1heWJlKGlucHV0LCBlZmZlY3Rvcikge1xuICAgIGlmIChpc05vdE51bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgZWZmZWN0b3IoaW5wdXQpO1xuICAgIH1cbiAgICByZXR1cm4gaW5wdXQ7XG59XG4iLCAiaW1wb3J0IHsgRVJSX01TR19UUkFOU0ZPUk1FUl9NVVNUX05PVF9SRVRVUk5fTk9fVkFMX0ZPUl9NQVlCRSB9IGZyb20gJy4vaW50ZXJuYWwvZXJyb3JfbWVzc2FnZS5qcyc7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCwgZXhwZWN0Tm90TnVsbE9yVW5kZWZpbmVkLCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiAgUmV0dXJuIHRoZSByZXN1bHQgb2YgX3RyYW5zZm9ybWVyXyB3aXRoIHVzaW5nIF9pbnB1dF8gYXMgYW4gYXJndW1lbnQgZm9yIGl0IGlmIF9pbnB1dF8gaXMgbm90IGBudWxsYCBhbmQgYHVuZGVmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gYG51bGxgIG9yIGB1bmRlZmluZWRgIGlucHV0dGVkIGFzIF9pbnB1dF8uXG4gKlxuICogICogYFVgIG11c3Qgbm90IGJlIGBNYXliZVx1MDAzYypcdTAwM2VgLlxuICogICAgICAqIElmIHlvdSdkIGxpa2UgcmV0dXJuIGBNYXliZVx1MDAzYypcdTAwM2VgIGFzIGBVYCwgdXNlIGBhbmRUaGVuKClgLlxuICogICAgICAqIElmIHRoZSByZXN1bHQgb2YgX3RyYW5zZm9ybWVyXyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoaXMgdGhyb3cgYW4gYEVycm9yYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcEZvck1heWJlKGlucHV0LCB0cmFuc2Zvcm1lcikge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB0cmFuc2Zvcm1lcihpbnB1dCk7XG4gICAgLy8gWFhYOlxuICAgIC8vIElmIGBVYCBpcyBgTWF5YmVcdTAwM2NTb21lVHlwZVx1MDAzZWAsIHdlIHRoaW5rIG5hdHVyYWxseSB0aGUgcmV0dXJuZWQgdmFsdWUgb2YgdGhpcyBmdW5jdGlvbiB3b3VsZCBiZVxuICAgIC8vIHRoZSBuZXN0ZWQgdHlwZSBgTWF5YmVcdTAwM2NNYXliZVx1MDAzY1NvbWVUeXBlXHUwMDNlXHUwMDNlYC4gQnV0IHRoaXMgdHlwZSBtZWFucyBgKFNvbWVUeXBlIHwgbnVsbCB8IHVuZGVmaW5lZCkgfCBudWxsIHwgdW5kZWZpbmVkYC5cbiAgICAvLyBTbyBhIHR5cGUgY2hlY2tlciB3b3VsZCByZWNvZ25pemUgdGhpcyB0eXBlIGFzIGBTb21lVHlwZSB8IG51bGwgfCB1bmRlZmluZWRgLiBTbyBpdCdzIGZsYXR0ZW5lZC5cbiAgICAvLyBUaGVuIHRoZSB1c2VyIHNob3VsZCBjYWxsIGBhbmRUaGVuYCAoX2ZsYXRtYXBfKSBvcGVyYXRpb24gaW5zdGVhZCBvZiB0aGlzLlxuICAgIGNvbnN0IHBhc3NlZCA9IGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZChyZXN1bHQsIEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUpO1xuICAgIHJldHVybiBwYXNzZWQ7XG59XG4iLCAiaW1wb3J0IHsgRVJSX01TR19UUkFOU0ZPUk1FUl9NVVNUX05PVF9SRVRVUk5fTk9fVkFMX0ZPUl9NQVlCRSB9IGZyb20gJy4vaW50ZXJuYWwvZXJyb3JfbWVzc2FnZS5qcyc7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCwgZXhwZWN0Tm90TnVsbE9yVW5kZWZpbmVkLCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiAgUmV0dXJuIHRoZSByZXN1bHQgb2YgX3RyYW5zZm9ybWVyXyB3aXRoIHVzaW5nIF9pbnB1dF8gYXMgYW4gYXJndW1lbnQgZm9yIGl0IGlmIF9pbnB1dF8gaXMgbm90IGBudWxsYCBhbmQgYHVuZGVmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gYG51bGxgIG9yIGB1bmRlZmluZWRgIGlucHV0dGVkIGFzIF9pbnB1dF8uXG4gKlxuICogICogYFVgIG11c3Qgbm90IGJlIGBNYXliZVx1MDAzYypcdTAwM2VgLlxuICogICAgICAqIElmIHlvdSdkIGxpa2UgcmV0dXJuIGBNYXliZVx1MDAzYypcdTAwM2VgIGFzIGBVYCwgdXNlIGBhbmRUaGVuKClgLlxuICogICAgICAqIElmIHRoZSByZXN1bHQgb2YgX3RyYW5zZm9ybWVyXyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoaXMgdGhyb3cgYW4gYEVycm9yYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1hcEFzeW5jRm9yTWF5YmUoaW5wdXQsIHRyYW5zZm9ybWVyKSB7XG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybWVyKGlucHV0KTtcbiAgICAvLyBYWFg6XG4gICAgLy8gSWYgYFVgIGlzIGBNYXliZVx1MDAzY1NvbWVUeXBlXHUwMDNlYCwgd2UgdGhpbmsgbmF0dXJhbGx5IHRoZSByZXR1cm5lZCB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uIHdvdWxkIGJlXG4gICAgLy8gdGhlIG5lc3RlZCB0eXBlIGBNYXliZVx1MDAzY01heWJlXHUwMDNjU29tZVR5cGVcdTAwM2VcdTAwM2VgLiBCdXQgdGhpcyB0eXBlIG1lYW5zIGAoU29tZVR5cGUgfCBudWxsIHwgdW5kZWZpbmVkKSB8IG51bGwgfCB1bmRlZmluZWRgLlxuICAgIC8vIFNvIGEgdHlwZSBjaGVja2VyIHdvdWxkIHJlY29nbml6ZSB0aGlzIHR5cGUgYXMgYFNvbWVUeXBlIHwgbnVsbCB8IHVuZGVmaW5lZGAuIFNvIGl0J3MgZmxhdHRlbmVkLlxuICAgIC8vIFRoZW4gdGhlIHVzZXIgc2hvdWxkIGNhbGwgYGFuZFRoZW5gIChfZmxhdG1hcF8pIG9wZXJhdGlvbiBpbnN0ZWFkIG9mIHRoaXMuXG4gICAgY29uc3QgY2hlY2tlZCA9IGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZChyZXN1bHQsIEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUpO1xuICAgIHJldHVybiBjaGVja2VkO1xufVxuIiwgImltcG9ydCB7IEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUsIEVSUl9NU0dfREVGQVVMVF9WQUxVRV9NVVNUX05PVF9CRV9OT19WQUxfRk9SX01BWUJFLCB9IGZyb20gJy4vaW50ZXJuYWwvZXJyb3JfbWVzc2FnZS5qcyc7XG5pbXBvcnQgeyBleHBlY3ROb3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICcuL21heWJlLmpzJztcbi8qKlxuICogIFJldHVybiB0aGUgcmVzdWx0IG9mIF90cmFuc2Zvcm1lcl8gd2l0aCB1c2luZyBfaW5wdXRfIGFzIGFuIGFyZ3VtZW50IGZvciBpdCBpZiBfaW5wdXRfIGlzIG5vdCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgLlxuICogIE90aGVyd2lzZSwgcmV0dXJuIF9kZWZhdWx0VmFsdWVfLlxuICpcbiAqICBCYXNpY2FsbHksIHRoaXMgb3BlcmF0aW9uIGlzIGEgY29tYmluYXRpb24gYG1hcCgpYCBhbmQgYHVud3JhcE9yKClgLlxuICpcbiAqICAqIGBVYCBtdXN0IG5vdCBiZSBgTWF5YmVcdTAwM2MqXHUwMDNlYC5cbiAqICAgICAgKiBJZiB0aGUgcmVzdWx0IG9mIF90cmFuc2Zvcm1lcl8gaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLCB0aGlzIHRocm93IGFuIGBFcnJvcmAuXG4gKiAgICAgICogSWYgdGhlIHJlc3VsdCBvZiBfZGVmYXVsdFZhbHVlXyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoaXMgdGhyb3cgYW4gYEVycm9yYC5cbiAqICAqIElmIHlvdSdkIGxpa2UgdG8gYWNjZXB0IGBNYXliZVx1MDAzYypcdTAwM2VgIGFzIGBVYCwgdXNlIGEgY29tYmluYXRpb24gYGFuZFRoZW4oKWAgYW5kIGBvcigpYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcE9yRm9yTWF5YmUoaW5wdXQsIGRlZmF1bHRWYWx1ZSwgdHJhbnNmb3JtZXIpIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGxldCBtc2cgPSAnJztcbiAgICBpZiAoaW5wdXQgIT09IHVuZGVmaW5lZCBcdTAwMjZcdTAwMjYgaW5wdXQgIT09IG51bGwpIHtcbiAgICAgICAgcmVzdWx0ID0gdHJhbnNmb3JtZXIoaW5wdXQpO1xuICAgICAgICBtc2cgPSBFUlJfTVNHX1RSQU5TRk9STUVSX01VU1RfTk9UX1JFVFVSTl9OT19WQUxfRk9SX01BWUJFO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICBtc2cgPSBFUlJfTVNHX0RFRkFVTFRfVkFMVUVfTVVTVF9OT1RfQkVfTk9fVkFMX0ZPUl9NQVlCRTtcbiAgICB9XG4gICAgY29uc3QgcGFzc2VkID0gZXhwZWN0Tm90TnVsbE9yVW5kZWZpbmVkKHJlc3VsdCwgbXNnKTtcbiAgICByZXR1cm4gcGFzc2VkO1xufVxuIiwgImltcG9ydCB7IEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUsIEVSUl9NU0dfREVGQVVMVF9WQUxVRV9NVVNUX05PVF9CRV9OT19WQUxfRk9SX01BWUJFLCB9IGZyb20gJy4vaW50ZXJuYWwvZXJyb3JfbWVzc2FnZS5qcyc7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCwgZXhwZWN0Tm90TnVsbE9yVW5kZWZpbmVkLCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiAgUmV0dXJuIHRoZSByZXN1bHQgb2YgX3RyYW5zZm9ybWVyXyB3aXRoIHVzaW5nIF9pbnB1dF8gYXMgYW4gYXJndW1lbnQgZm9yIGl0IGlmIF9pbnB1dF8gaXMgbm90IGBudWxsYCBhbmQgYHVuZGVmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gX2RlZmF1bHRWYWx1ZV8uXG4gKlxuICogIEJhc2ljYWxseSwgdGhpcyBvcGVyYXRpb24gaXMgYSBjb21iaW5hdGlvbiBgbWFwKClgIGFuZCBgdW53cmFwT3IoKWAuXG4gKlxuICogICogYFVgIG11c3Qgbm90IGJlIGBNYXliZVx1MDAzYypcdTAwM2VgLlxuICogICAgICAqIElmIHRoZSByZXN1bHQgb2YgX3RyYW5zZm9ybWVyXyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoaXMgdGhyb3cgYW4gYEVycm9yYC5cbiAqICAgICAgKiBJZiB0aGUgcmVzdWx0IG9mIF9kZWZhdWx0VmFsdWVfIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYCwgdGhpcyB0aHJvdyBhbiBgRXJyb3JgLlxuICogICogSWYgeW91J2QgbGlrZSB0byBhY2NlcHQgYE1heWJlXHUwMDNjKlx1MDAzZWAgYXMgYFVgLCB1c2UgYSBjb21iaW5hdGlvbiBgYW5kVGhlbigpYCBhbmQgYG9yKClgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFwT3JBc3luY0Zvck1heWJlKGlucHV0LCBkZWZhdWx0VmFsdWUsIHRyYW5zZm9ybWVyKSB7XG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICBjb25zdCBub25OdWxsRGVmYXVsdCA9IGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZChkZWZhdWx0VmFsdWUsIEVSUl9NU0dfREVGQVVMVF9WQUxVRV9NVVNUX05PVF9CRV9OT19WQUxfRk9SX01BWUJFKTtcbiAgICAgICAgcmV0dXJuIG5vbk51bGxEZWZhdWx0O1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmFuc2Zvcm1lcihpbnB1dCk7XG4gICAgY29uc3QgY2hlY2tlZCA9IGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZChyZXN1bHQsIEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUpO1xuICAgIHJldHVybiBjaGVja2VkO1xufVxuIiwgImltcG9ydCB7IEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUsIEVSUl9NU0dfUkVDT1ZFUkVSX01VU1RfTk9UX1JFVFVSTl9OT19WQUxfRk9SX01BWUJFLCB9IGZyb20gJy4vaW50ZXJuYWwvZXJyb3JfbWVzc2FnZS5qcyc7XG5pbXBvcnQgeyBleHBlY3ROb3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICcuL21heWJlLmpzJztcbi8qKlxuICogIFJldHVybiB0aGUgcmVzdWx0IG9mIF90cmFuc2Zvcm1lcl8gd2l0aCB1c2luZyBfaW5wdXRfIGFzIGFuIGFyZ3VtZW50IGZvciBpdCBpZiBfaW5wdXRfIGlzIG5vdCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgLlxuICogIE90aGVyd2lzZSwgcmV0dXJuIHRoZSByZXN1bHQgb2YgX3JlY292ZXJlcl8uXG4gKlxuICogIEJhc2ljYWxseSwgdGhpcyBvcGVyYXRpb24gaXMgYSBjb21iaW5hdGlvbiBgbWFwKClgIGFuZCBgdW53cmFwT3JFbHNlKClgLlxuICpcbiAqICAqIGBVYCBtdXN0IG5vdCBiZSBgTWF5YmVcdTAwM2MqXHUwMDNlYC5cbiAqICAgICAgKiBJZiB0aGUgcmVzdWx0IG9mIF90cmFuc2Zvcm1lcl8gaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLCB0aGlzIHRocm93IGFuIGBFcnJvcmAuXG4gKiAgICAgICogSWYgdGhlIHJlc3VsdCBvZiBfcmVjb3ZlcmVyXyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoaXMgdGhyb3cgYW4gYEVycm9yYC5cbiAqICAqIElmIHlvdSdkIGxpa2UgdG8gYWNjZXB0IGBNYXliZVx1MDAzYypcdTAwM2VgIGFzIGBVYCwgdXNlIGEgY29tYmluYXRpb24gYGFuZFRoZW4oKWAgYW5kIGBvckVsc2UoKWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBPckVsc2VGb3JNYXliZShpbnB1dCwgcmVjb3ZlcmVyLCB0cmFuc2Zvcm1lcikge1xuICAgIGxldCByZXN1bHQ7XG4gICAgbGV0IG1zZyA9ICcnO1xuICAgIGlmIChpbnB1dCAhPT0gdW5kZWZpbmVkIFx1MDAyNlx1MDAyNiBpbnB1dCAhPT0gbnVsbCkge1xuICAgICAgICByZXN1bHQgPSB0cmFuc2Zvcm1lcihpbnB1dCk7XG4gICAgICAgIG1zZyA9IEVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXN1bHQgPSByZWNvdmVyZXIoKTtcbiAgICAgICAgbXNnID0gRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkU7XG4gICAgfVxuICAgIGNvbnN0IHBhc3NlZCA9IGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZChyZXN1bHQsIG1zZyk7XG4gICAgcmV0dXJuIHBhc3NlZDtcbn1cbiIsICJpbXBvcnQgeyBFUlJfTVNHX1RSQU5TRk9STUVSX01VU1RfTk9UX1JFVFVSTl9OT19WQUxfRk9SX01BWUJFLCBFUlJfTVNHX1JFQ09WRVJFUl9NVVNUX05PVF9SRVRVUk5fTk9fVkFMX0ZPUl9NQVlCRSwgfSBmcm9tICcuL2ludGVybmFsL2Vycm9yX21lc3NhZ2UuanMnO1xuaW1wb3J0IHsgaXNOb3ROdWxsT3JVbmRlZmluZWQsIGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZCwgfSBmcm9tICcuL21heWJlLmpzJztcbi8qKlxuICogIFJldHVybiB0aGUgcmVzdWx0IG9mIF90cmFuc2Zvcm1lcl8gd2l0aCB1c2luZyBfaW5wdXRfIGFzIGFuIGFyZ3VtZW50IGZvciBpdCBpZiBfaW5wdXRfIGlzIG5vdCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgLlxuICogIE90aGVyd2lzZSwgcmV0dXJuIHRoZSByZXN1bHQgb2YgX3JlY292ZXJlcl8uXG4gKlxuICogIEJhc2ljYWxseSwgdGhpcyBvcGVyYXRpb24gaXMgYSBjb21iaW5hdGlvbiBgbWFwKClgIGFuZCBgdW53cmFwT3JFbHNlKClgLlxuICpcbiAqICAqIGBVYCBtdXN0IG5vdCBiZSBgTWF5YmVcdTAwM2MqXHUwMDNlYC5cbiAqICAgICAgKiBJZiB0aGUgcmVzdWx0IG9mIF90cmFuc2Zvcm1lcl8gaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLCB0aGlzIHRocm93IGFuIGBFcnJvcmAuXG4gKiAgICAgICogSWYgdGhlIHJlc3VsdCBvZiBfcmVjb3ZlcmVyXyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoaXMgdGhyb3cgYW4gYEVycm9yYC5cbiAqICAqIElmIHlvdSdkIGxpa2UgdG8gYWNjZXB0IGBNYXliZVx1MDAzYypcdTAwM2VgIGFzIGBVYCwgdXNlIGEgY29tYmluYXRpb24gYGFuZFRoZW4oKWAgYW5kIGBvckVsc2UoKWAuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtYXBPckVsc2VBc3luY0Zvck1heWJlKGlucHV0LCByZWNvdmVyZXIsIHRyYW5zZm9ybWVyKSB7XG4gICAgbGV0IHJlc3VsdDtcbiAgICBsZXQgbWVzc2FnZUZvckV4cGVjdCA9ICcnO1xuICAgIGlmIChpc05vdE51bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgdHJhbnNmb3JtZXIoaW5wdXQpO1xuICAgICAgICBtZXNzYWdlRm9yRXhwZWN0ID0gRVJSX01TR19UUkFOU0ZPUk1FUl9NVVNUX05PVF9SRVRVUk5fTk9fVkFMX0ZPUl9NQVlCRTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IHJlY292ZXJlcigpO1xuICAgICAgICBtZXNzYWdlRm9yRXhwZWN0ID0gRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkU7XG4gICAgfVxuICAgIGNvbnN0IGNoZWNrZWQgPSBleHBlY3ROb3ROdWxsT3JVbmRlZmluZWQocmVzdWx0LCBtZXNzYWdlRm9yRXhwZWN0KTtcbiAgICByZXR1cm4gY2hlY2tlZDtcbn1cbiIsICJpbXBvcnQgeyBFUlJfTVNHX1VOV1JBUF9FUlJfQlVUX0lOUFVUX0lTX09LLCBFUlJfTVNHX1VOV1JBUF9PS19CVVRfSU5QVVRfSVNfRVJSLCB9IGZyb20gJy4vaW50ZXJuYWwvZXJyb3JfbWVzc2FnZS5qcyc7XG5leHBvcnQgZnVuY3Rpb24gaXNPayhpbnB1dCkge1xuICAgIHJldHVybiBpbnB1dC5vaztcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVPayh2YWwpIHtcbiAgICBjb25zdCByID0ge1xuICAgICAgICBvazogdHJ1ZSxcbiAgICAgICAgdmFsLFxuICAgICAgICAvLyBYWFg6XG4gICAgICAgIC8vICBXZSBuZWVkIHRvIGZpbGwgd2l0aCBgbnVsbGAgdG8gaW1wcm92ZSB0aGUgY29tcGF0aWJpbGl0eSB3aXRoIE5leHQuanNcbiAgICAgICAgLy8gIHNlZSBodHRwczovL2dpdGh1Yi5jb20vb3B0aW9uLXQvb3B0aW9uLXQvcHVsbC8xMjU2XG4gICAgICAgIGVycjogbnVsbCxcbiAgICB9O1xuICAgIHJldHVybiByO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRXJyKGlucHV0KSB7XG4gICAgcmV0dXJuICFpbnB1dC5vaztcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFcnIoZXJyKSB7XG4gICAgY29uc3QgciA9IHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICAvLyBYWFg6XG4gICAgICAgIC8vICBXZSBuZWVkIHRvIGZpbGwgd2l0aCBgbnVsbGAgdG8gaW1wcm92ZSB0aGUgY29tcGF0aWJpbGl0eSB3aXRoIE5leHQuanNcbiAgICAgICAgLy8gIHNlZSBodHRwczovL2dpdGh1Yi5jb20vb3B0aW9uLXQvb3B0aW9uLXQvcHVsbC8xMjU2XG4gICAgICAgIHZhbDogbnVsbCxcbiAgICAgICAgZXJyLFxuICAgIH07XG4gICAgcmV0dXJuIHI7XG59XG4vKipcbiAqICBSZXR1cm4gdGhlIGlubmVyIGBUYCBvZiBhIGBPayhUKWAuXG4gKlxuICogIEB0aHJvd3Mge1R5cGVFcnJvcn1cbiAqICAgICAgVGhyb3dzIGlmIHRoZSBzZWxmIGlzIGEgYEVycmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBPayhpbnB1dCkge1xuICAgIHJldHVybiBleHBlY3RPayhpbnB1dCwgRVJSX01TR19VTldSQVBfT0tfQlVUX0lOUFVUX0lTX0VSUik7XG59XG4vKipcbiAqICBSZXR1cm4gdGhlIGlubmVyIGBFYCBvZiBhIGBFcnIoRSlgLlxuICpcbiAqICBAdGhyb3dzIHtUeXBlRXJyb3J9XG4gKiAgICAgIFRocm93cyBpZiB0aGUgc2VsZiBpcyBhIGBPa2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBFcnIoaW5wdXQpIHtcbiAgICByZXR1cm4gZXhwZWN0RXJyKGlucHV0LCBFUlJfTVNHX1VOV1JBUF9FUlJfQlVUX0lOUFVUX0lTX09LKTtcbn1cbi8qKlxuICogIFJldHVybiBfaW5wdXRfIGFzIGBUYCBpZiB0aGUgcGFzc2VkIF9pbnB1dF8gaXMgYE9rKFQpYC5cbiAqICBPdGhlcndpc2UsIHRocm93IGBUeXBlRXJyb3JgIHdpdGggdGhlIHBhc3NlZCBgbXNnYC5cbiAqXG4gKiAgQHRocm93cyB7VHlwZUVycm9yfVxuICogICAgICBUaHJvd3MgaWYgdGhlIHNlbGYgaXMgYSBgRXJyYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cGVjdE9rKGlucHV0LCBtc2cpIHtcbiAgICBpZiAoIWlucHV0Lm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IobXNnKTtcbiAgICB9XG4gICAgcmV0dXJuIGlucHV0LnZhbDtcbn1cbi8qKlxuICogIFJldHVybiBfaW5wdXRfIGFzIGBFYCBpZiB0aGUgcGFzc2VkIF9pbnB1dF8gaXMgYEVycihFKWAuXG4gKiAgT3RoZXJ3aXNlLCB0aHJvdyBgVHlwZUVycm9yYCB3aXRoIHRoZSBwYXNzZWQgYG1zZ2AuXG4gKlxuICogIEB0aHJvd3Mge1R5cGVFcnJvcn1cbiAqICAgICAgVGhyb3dzIGlmIHRoZSBzZWxmIGlzIGEgYE9rYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cGVjdEVycihpbnB1dCwgbXNnKSB7XG4gICAgaWYgKGlucHV0Lm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IobXNnKTtcbiAgICB9XG4gICAgcmV0dXJuIGlucHV0LmVycjtcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVFcnIsIGNyZWF0ZU9rIH0gZnJvbSAnLi4vcGxhaW5fcmVzdWx0L3Jlc3VsdC5qcyc7XG5pbXBvcnQgeyBpc05vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSBgTWF5YmVcdTAwM2NUXHUwMDNlYCBpbnRvIGEgYFJlc3VsdFx1MDAzY1QsIEVcdTAwM2VgIGJ5IG1hcHBpbmcgYFRgIHRvIGBPayhUKWAuXG4gKiBJZiBgaW5wdXRgIGlzIGB1bmRlZmluZWRgIG9yIGBudWxsYCwgdGhlbiByZXR1cm4gYEVycihFKWAgd2l0aCBwYXNzZWQgYGVycmAuXG4gKlxuICogQXJndW1lbnRzIHBhc3NlZCB0byB0aGlzIGFyZSBlYWdlcmx5IGV2YWx1YXRlZDtcbiAqIGlmIHlvdSBhcmUgcGFzc2luZyB0aGUgcmVzdWx0IG9mIGEgZnVuY3Rpb24gY2FsbCwgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIG9rT3JFbHNlLFxuICogd2hpY2ggaXMgbGF6aWx5IGV2YWx1YXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9rT3JGb3JNYXliZShpbnB1dCwgZXJyKSB7XG4gICAgaWYgKGlzTm90TnVsbE9yVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICBjb25zdCBva1dyYXBwZWQgPSBjcmVhdGVPayhpbnB1dCk7XG4gICAgICAgIHJldHVybiBva1dyYXBwZWQ7XG4gICAgfVxuICAgIGNvbnN0IGVycldyYXBwZWQgPSBjcmVhdGVFcnIoZXJyKTtcbiAgICByZXR1cm4gZXJyV3JhcHBlZDtcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVFcnIsIGNyZWF0ZU9rIH0gZnJvbSAnLi4vcGxhaW5fcmVzdWx0L3Jlc3VsdC5qcyc7XG5pbXBvcnQgeyBpc05vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSBgTWF5YmVcdTAwM2NUXHUwMDNlYCBpbnRvIGEgYFJlc3VsdFx1MDAzY1QsIEVcdTAwM2VgIGJ5IG1hcHBpbmcgYFRgIHRvIGBPayhUKWAuXG4gKiBJZiBgaW5wdXRgIGlzIGB1bmRlZmluZWRgIG9yIGBudWxsYCwgdGhlbiByZXR1cm5zIGBFcnIoRSlgIHdpdGggdGhlIHJlc3VsdCBvZiBgcmVjb3ZlcmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBva09yRWxzZUZvck1heWJlKGlucHV0LCByZWNvdmVyZXIpIHtcbiAgICBpZiAoaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIGNvbnN0IG9rV3JhcHBlZCA9IGNyZWF0ZU9rKGlucHV0KTtcbiAgICAgICAgcmV0dXJuIG9rV3JhcHBlZDtcbiAgICB9XG4gICAgY29uc3QgZmFsbGJhY2sgPSByZWNvdmVyZXIoKTtcbiAgICBjb25zdCBlcnJXcmFwcGVkID0gY3JlYXRlRXJyKGZhbGxiYWNrKTtcbiAgICByZXR1cm4gZXJyV3JhcHBlZDtcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVFcnIsIGNyZWF0ZU9rIH0gZnJvbSAnLi4vcGxhaW5fcmVzdWx0L3Jlc3VsdC5qcyc7XG5pbXBvcnQgeyBpc05vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSBgTWF5YmVcdTAwM2NUXHUwMDNlYCBpbnRvIGEgYFJlc3VsdFx1MDAzY1QsIEVcdTAwM2VgIGJ5IG1hcHBpbmcgYFRgIHRvIGBPayhUKWAuXG4gKiBJZiBgaW5wdXRgIGlzIGB1bmRlZmluZWRgIG9yIGBudWxsYCwgdGhlbiByZXR1cm5zIGBFcnIoRSlgIHdpdGggdGhlIHJlc3VsdCBvZiBgcmVjb3ZlcmVyKClgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBva09yRWxzZUFzeW5jRm9yTWF5YmUoaW5wdXQsIHJlY292ZXJlcikge1xuICAgIGlmIChpc05vdE51bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgY29uc3Qgb2tXcmFwcGVkID0gY3JlYXRlT2soaW5wdXQpO1xuICAgICAgICByZXR1cm4gb2tXcmFwcGVkO1xuICAgIH1cbiAgICBjb25zdCBmYWxsYmFjayA9IGF3YWl0IHJlY292ZXJlcigpO1xuICAgIGNvbnN0IGVycldyYXBwZWQgPSBjcmVhdGVFcnIoZmFsbGJhY2spO1xuICAgIHJldHVybiBlcnJXcmFwcGVkO1xufVxuIiwgIi8qKlxuICogIFJldHVybiBfaW5wdXRfIGFzIGBUYCBpZiB0aGUgcGFzc2VkIF9pbnB1dF8gaXMgbm90IGBudWxsYCBhbmQgYHVuZGVmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHJlc3VsdCBvZiBfcmVjb3ZlcmVyXy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9yRWxzZUZvck1heWJlKGlucHV0LCByZWNvdmVyZXIpIHtcbiAgICBpZiAoaW5wdXQgIT09IHVuZGVmaW5lZCBcdTAwMjZcdTAwMjYgaW5wdXQgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICBjb25zdCBmYWxsYmFjayA9IHJlY292ZXJlcigpO1xuICAgIHJldHVybiBmYWxsYmFjaztcbn1cbiIsICJpbXBvcnQgeyBpc05vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiAgUmV0dXJuIF9pbnB1dF8gYXMgYFRgIGlmIHRoZSBwYXNzZWQgX2lucHV0XyBpcyBub3QgYG51bGxgIGFuZCBgdW5kZWZpbmVkYC5cbiAqICBPdGhlcndpc2UsIHJldHVybiB0aGUgcmVzdWx0IG9mIF9yZWNvdmVyZXJfLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3JFbHNlQXN5bmNGb3JNYXliZShpbnB1dCwgcmVjb3ZlcmVyKSB7XG4gICAgaWYgKGlzTm90TnVsbE9yVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGNvbnN0IGZhbGxiYWNrID0gYXdhaXQgcmVjb3ZlcmVyKCk7XG4gICAgcmV0dXJuIGZhbGxiYWNrO1xufVxuIiwgImltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnLi9tYXliZS5qcyc7XG4vKipcbiAqICBSZXR1cm4gYG51bGxgIGlmIF9pbnB1dF8gaXMgYG51bGxgIG9yIGB1bmRmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gYFRgIGRpcmVjdGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9OdWxsYWJsZUZyb21NYXliZShpbnB1dCkge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dDtcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVPaywgY3JlYXRlRXJyIH0gZnJvbSAnLi4vcGxhaW5fcmVzdWx0L3Jlc3VsdC5qcyc7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJy4vbWF5YmUuanMnO1xuLyoqXG4gKiAgUmV0dXJuIGBFcnJcdTAwM2N2b2lkXHUwMDNlYCBpZiBfaW5wdXRfIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqICBPdGhlcndpc2UsIHJldHVybiBgT2tcdTAwM2NUXHUwMDNlYCBkaXJlY3RseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUmVzdWx0T2tGcm9tTWF5YmUoaW5wdXQpIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFcnIodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gY3JlYXRlT2soaW5wdXQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4vKipcbiAqICBSZXR1cm4gYE9rXHUwMDNjdm9pZFx1MDAzZWAgaWYgX2lucHV0XyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gYEVyclx1MDAzY0VcdTAwM2VgIGRpcmVjdGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9SZXN1bHRFcnJGcm9tTWF5YmUoaW5wdXQpIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVPayh1bmRlZmluZWQpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBjcmVhdGVFcnIoaW5wdXQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4iLCAiaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICcuL21heWJlLmpzJztcbi8qKlxuICogIFJldHVybiBgdW5kZmluZWRgIGlmIF9pbnB1dF8gaXMgYG51bGxgIG9yIGB1bmRmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gYFRgIGRpcmVjdGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9VbmRlZmluYWJsZUZyb21NYXliZShpbnB1dCkge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGlucHV0O1xufVxuIiwgImltcG9ydCB7IEVSUl9NU0dfREVGQVVMVF9WQUxVRV9NVVNUX05PVF9CRV9OT19WQUxfRk9SX01BWUJFIH0gZnJvbSAnLi9pbnRlcm5hbC9lcnJvcl9tZXNzYWdlLmpzJztcbmltcG9ydCB7IGlzTm90TnVsbE9yVW5kZWZpbmVkLCBleHBlY3ROb3ROdWxsT3JVbmRlZmluZWQsIH0gZnJvbSAnLi9tYXliZS5qcyc7XG4vKipcbiAqICBSZXR1cm4gX2lucHV0XyBhcyBgVGAgaWYgdGhlIHBhc3NlZCBfaW5wdXRfIGlzIG5vdCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgLlxuICogIE90aGVyd2lzZSwgcmV0dXJuIF9kZWZhdWx0VmFsdWVfLlxuICpcbiAqICAqIF9kZWZhdWx0VmFsdWVfIG11c3Qgbm90IGJlIGBNYXliZVx1MDAzYypcdTAwM2VgLlxuICogICogSWYgdGhlIF9kZWZhdWx0VmFsdWVfIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYCwgdGhyb3cgYFR5cGVFcnJvcmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBPckZvck1heWJlKGlucHV0LCBkZWZhdWx0VmFsdWUpIHtcbiAgICBpZiAoaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG4gICAgY29uc3QgcGFzc2VkID0gZXhwZWN0Tm90TnVsbE9yVW5kZWZpbmVkKGRlZmF1bHRWYWx1ZSwgRVJSX01TR19ERUZBVUxUX1ZBTFVFX01VU1RfTk9UX0JFX05PX1ZBTF9GT1JfTUFZQkUpO1xuICAgIHJldHVybiBwYXNzZWQ7XG59XG4iLCAiaW1wb3J0IHsgRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUgfSBmcm9tICcuL2ludGVybmFsL2Vycm9yX21lc3NhZ2UuanMnO1xuaW1wb3J0IHsgaXNOb3ROdWxsT3JVbmRlZmluZWQsIGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZCwgfSBmcm9tICcuL21heWJlLmpzJztcbi8qKlxuICogIFJldHVybiBfaW5wdXRfIGFzIGBUYCBpZiB0aGUgcGFzc2VkIF9pbnB1dF8gaXMgbm90IGBudWxsYCBhbmQgYHVuZGVmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHJlc3VsdCBvZiBfcmVjb3ZlcmVyXy5cbiAqXG4gKiAgKiBUaGUgcmVzdWx0IG9mIF9yZWNvdmVyZXJfIG11c3Qgbm90IGJlIGBNYXliZVx1MDAzYypcdTAwM2VgLlxuICogICogSWYgdGhlIHJlc3VsdCBvZiBfcmVjb3ZlcmVyXyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRocm93IGBUeXBlRXJyb3JgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwT3JFbHNlRm9yTWF5YmUoaW5wdXQsIHJlY292ZXJlcikge1xuICAgIGlmIChpc05vdE51bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICBjb25zdCBmYWxsYmFjayA9IHJlY292ZXJlcigpO1xuICAgIGNvbnN0IHBhc3NlZCA9IGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZChmYWxsYmFjaywgRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUpO1xuICAgIHJldHVybiBwYXNzZWQ7XG59XG4iLCAiaW1wb3J0IHsgRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUgfSBmcm9tICcuL2ludGVybmFsL2Vycm9yX21lc3NhZ2UuanMnO1xuaW1wb3J0IHsgaXNOb3ROdWxsT3JVbmRlZmluZWQsIGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZCwgfSBmcm9tICcuL21heWJlLmpzJztcbi8qKlxuICogIFJldHVybiBfaW5wdXRfIGFzIGBUYCBpZiB0aGUgcGFzc2VkIF9pbnB1dF8gaXMgbm90IGBudWxsYCBhbmQgYHVuZGVmaW5lZGAuXG4gKiAgT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHJlc3VsdCBvZiBfcmVjb3ZlcmVyXy5cbiAqXG4gKiAgKiBUaGUgcmVzdWx0IG9mIF9yZWNvdmVyZXJfIG11c3Qgbm90IGJlIGBNYXliZVx1MDAzYypcdTAwM2VgLlxuICogICogSWYgdGhlIHJlc3VsdCBvZiBfcmVjb3ZlcmVyXyBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRocm93IGBUeXBlRXJyb3JgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdW53cmFwT3JFbHNlQXN5bmNGb3JNYXliZShpbnB1dCwgcmVjb3ZlcmVyKSB7XG4gICAgaWYgKGlzTm90TnVsbE9yVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGNvbnN0IGZhbGxiYWNrID0gYXdhaXQgcmVjb3ZlcmVyKCk7XG4gICAgY29uc3QgY2hlY2tlZCA9IGV4cGVjdE5vdE51bGxPclVuZGVmaW5lZChmYWxsYmFjaywgRVJSX01TR19SRUNPVkVSRVJfTVVTVF9OT1RfUkVUVVJOX05PX1ZBTF9GT1JfTUFZQkUpO1xuICAgIHJldHVybiBjaGVja2VkO1xufVxuIiwgIi8qKiBDU1Djga5jb25uZWN0LXNyY+OBp+ioseWPr+OBleOCjOOBpuOBhOOCi1VSTOOBi+OBqeOBhuOBi+WIpOWumuOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGlzQWxsb3dlZENvbm5lY3RTcmMgPSAodXJsOiBVUkwpOiBib29sZWFuID0+IHtcbiAgaWYgKGNvbm5lY3RTcmMuaW5jbHVkZXModXJsLmhvc3RuYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh1cmwuaG9zdG5hbWUuZW5kc1dpdGgoXCIub3BlbmFpLmF6dXJlLmNvbVwiKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmNvbnN0IGNvbm5lY3RTcmMgPSBbXG4gIFwiaS5neWF6by5jb21cIixcbiAgXCJ0Lmd5YXpvLmNvbVwiLFxuICBcInNjcmFwYm94LmlvXCIsXG4gIFwiYXBpLm9wZW5haS5jb21cIixcbiAgXCIqLm9wZW5haS5henVyZS5jb21cIixcbiAgXCJtYXBzLmdvb2dsZWFwaXMuY29tXCIsXG4gIFwidXBsb2FkLmd5YXpvLmNvbVwiLFxuICBcInN0b3JhZ2UuZ29vZ2xlYXBpcy5jb21cIixcbiAgXCJzZW50cnkuaW9cIixcbl07XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFBhdGgocGF0aD86IHN0cmluZykge1xuICBpZiAodHlwZW9mIHBhdGggIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYFBhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShwYXRoKX1gLFxuICAgICk7XG4gIH1cbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBhc3NlcnRQYXRoIH0gZnJvbSBcIi4vYXNzZXJ0X3BhdGgudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwU3VmZml4KG5hbWU6IHN0cmluZywgc3VmZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoc3VmZml4Lmxlbmd0aCA+PSBuYW1lLmxlbmd0aCkge1xuICAgIHJldHVybiBuYW1lO1xuICB9XG5cbiAgY29uc3QgbGVuRGlmZiA9IG5hbWUubGVuZ3RoIC0gc3VmZml4Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpID0gc3VmZml4Lmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgaWYgKG5hbWUuY2hhckNvZGVBdChsZW5EaWZmICsgaSkgIT09IHN1ZmZpeC5jaGFyQ29kZUF0KGkpKSB7XG4gICAgICByZXR1cm4gbmFtZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmFtZS5zbGljZSgwLCAtc3VmZml4Lmxlbmd0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXN0UGF0aFNlZ21lbnQoXG4gIHBhdGg6IHN0cmluZyxcbiAgaXNTZXA6IChjaGFyOiBudW1iZXIpID0+IGJvb2xlYW4sXG4gIHN0YXJ0ID0gMCxcbik6IHN0cmluZyB7XG4gIGxldCBtYXRjaGVkTm9uU2VwYXJhdG9yID0gZmFsc2U7XG4gIGxldCBlbmQgPSBwYXRoLmxlbmd0aDtcblxuICBmb3IgKGxldCBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyAtLWkpIHtcbiAgICBpZiAoaXNTZXAocGF0aC5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgaWYgKG1hdGNoZWROb25TZXBhcmF0b3IpIHtcbiAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghbWF0Y2hlZE5vblNlcGFyYXRvcikge1xuICAgICAgbWF0Y2hlZE5vblNlcGFyYXRvciA9IHRydWU7XG4gICAgICBlbmQgPSBpICsgMTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFyZ3MocGF0aDogc3RyaW5nLCBzdWZmaXg6IHN0cmluZykge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiBwYXRoO1xuICBpZiAodHlwZW9mIHN1ZmZpeCAhPT0gXCJzdHJpbmdcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBgU3VmZml4IG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkoc3VmZml4KX1gLFxuICAgICk7XG4gIH1cbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IHRoZSBCcm93c2VyaWZ5IGF1dGhvcnMuIE1JVCBMaWNlbnNlLlxuLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Jyb3dzZXJpZnkvcGF0aC1icm93c2VyaWZ5L1xuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBUcmFpbGluZ1NlcGFyYXRvcnMoXG4gIHNlZ21lbnQ6IHN0cmluZyxcbiAgaXNTZXA6IChjaGFyOiBudW1iZXIpID0+IGJvb2xlYW4sXG4pOiBzdHJpbmcge1xuICBpZiAoc2VnbWVudC5sZW5ndGggPD0gMSkge1xuICAgIHJldHVybiBzZWdtZW50O1xuICB9XG5cbiAgbGV0IGVuZCA9IHNlZ21lbnQubGVuZ3RoO1xuXG4gIGZvciAobGV0IGkgPSBzZWdtZW50Lmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICBpZiAoaXNTZXAoc2VnbWVudC5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgZW5kID0gaTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNlZ21lbnQuc2xpY2UoMCwgZW5kKTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IHRoZSBCcm93c2VyaWZ5IGF1dGhvcnMuIE1JVCBMaWNlbnNlLlxuLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Jyb3dzZXJpZnkvcGF0aC1icm93c2VyaWZ5L1xuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQge1xuICBDSEFSX0JBQ0tXQVJEX1NMQVNILFxuICBDSEFSX0ZPUldBUkRfU0xBU0gsXG4gIENIQVJfTE9XRVJDQVNFX0EsXG4gIENIQVJfTE9XRVJDQVNFX1osXG4gIENIQVJfVVBQRVJDQVNFX0EsXG4gIENIQVJfVVBQRVJDQVNFX1osXG59IGZyb20gXCIuLi9fY29tbW9uL2NvbnN0YW50cy50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNQb3NpeFBhdGhTZXBhcmF0b3IoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBjb2RlID09PSBDSEFSX0ZPUldBUkRfU0xBU0g7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1BhdGhTZXBhcmF0b3IoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBjb2RlID09PSBDSEFSX0ZPUldBUkRfU0xBU0ggfHwgY29kZSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2luZG93c0RldmljZVJvb3QoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgKGNvZGUgPj0gQ0hBUl9MT1dFUkNBU0VfQSAmJiBjb2RlIDw9IENIQVJfTE9XRVJDQVNFX1opIHx8XG4gICAgKGNvZGUgPj0gQ0hBUl9VUFBFUkNBU0VfQSAmJiBjb2RlIDw9IENIQVJfVVBQRVJDQVNFX1opXG4gICk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFyZyh1cmw6IFVSTCB8IHN0cmluZykge1xuICB1cmwgPSB1cmwgaW5zdGFuY2VvZiBVUkwgPyB1cmwgOiBuZXcgVVJMKHVybCk7XG4gIGlmICh1cmwucHJvdG9jb2wgIT09IFwiZmlsZTpcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJNdXN0IGJlIGEgZmlsZSBVUkwuXCIpO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgYXNzZXJ0QXJnIH0gZnJvbSBcIi4uL19jb21tb24vZnJvbV9maWxlX3VybC50c1wiO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZmlsZSBVUkwgdG8gYSBwYXRoIHN0cmluZy5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZnJvbUZpbGVVcmwgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9wYXRoL3dpbmRvd3MvZnJvbV9maWxlX3VybC50c1wiO1xuICpcbiAqIGZyb21GaWxlVXJsKFwiZmlsZTovLy9ob21lL2Zvb1wiKTsgLy8gXCJcXFxcaG9tZVxcXFxmb29cIlxuICogZnJvbUZpbGVVcmwoXCJmaWxlOi8vL0M6L1VzZXJzL2Zvb1wiKTsgLy8gXCJDOlxcXFxVc2Vyc1xcXFxmb29cIlxuICogZnJvbUZpbGVVcmwoXCJmaWxlOi8vbG9jYWxob3N0L2hvbWUvZm9vXCIpOyAvLyBcIlxcXFxcXFxcbG9jYWxob3N0XFxcXGhvbWVcXFxcZm9vXCJcbiAqIGBgYFxuICogQHBhcmFtIHVybCBvZiBhIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tRmlsZVVybCh1cmw6IFVSTCB8IHN0cmluZyk6IHN0cmluZyB7XG4gIHVybCA9IGFzc2VydEFyZyh1cmwpO1xuICBsZXQgcGF0aCA9IGRlY29kZVVSSUNvbXBvbmVudChcbiAgICB1cmwucGF0aG5hbWUucmVwbGFjZSgvXFwvL2csIFwiXFxcXFwiKS5yZXBsYWNlKC8lKD8hWzAtOUEtRmEtZl17Mn0pL2csIFwiJTI1XCIpLFxuICApLnJlcGxhY2UoL15cXFxcKihbQS1aYS16XTopKFxcXFx8JCkvLCBcIiQxXFxcXFwiKTtcbiAgaWYgKHVybC5ob3N0bmFtZSAhPT0gXCJcIikge1xuICAgIC8vIE5vdGU6IFRoZSBgVVJMYCBpbXBsZW1lbnRhdGlvbiBndWFyYW50ZWVzIHRoYXQgdGhlIGRyaXZlIGxldHRlciBhbmRcbiAgICAvLyBob3N0bmFtZSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBPdGhlcndpc2UgaXQgd291bGQgbm90IGhhdmUgYmVlbiB2YWxpZFxuICAgIC8vIHRvIGFwcGVuZCB0aGUgaG9zdG5hbWUgYW5kIHBhdGggbGlrZSB0aGlzLlxuICAgIHBhdGggPSBgXFxcXFxcXFwke3VybC5ob3N0bmFtZX0ke3BhdGh9YDtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBDSEFSX0NPTE9OIH0gZnJvbSBcIi4uL19jb21tb24vY29uc3RhbnRzLnRzXCI7XG5pbXBvcnQgeyBhc3NlcnRQYXRoIH0gZnJvbSBcIi4uL19jb21tb24vYXNzZXJ0X3BhdGgudHNcIjtcbmltcG9ydCB7IGlzUGF0aFNlcGFyYXRvciwgaXNXaW5kb3dzRGV2aWNlUm9vdCB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qKlxuICogVmVyaWZpZXMgd2hldGhlciBwcm92aWRlZCBwYXRoIGlzIGFic29sdXRlXG4gKiBAcGFyYW0gcGF0aCB0byBiZSB2ZXJpZmllZCBhcyBhYnNvbHV0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBYnNvbHV0ZShwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoMCk7XG4gIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGNvZGUpKSB7XG4gICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgIGlmIChsZW4gPiAyICYmIHBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTikge1xuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMikpKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmNvbnN0IFdISVRFU1BBQ0VfRU5DT0RJTkdTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBcIlxcdTAwMDlcIjogXCIlMDlcIixcbiAgXCJcXHUwMDBBXCI6IFwiJTBBXCIsXG4gIFwiXFx1MDAwQlwiOiBcIiUwQlwiLFxuICBcIlxcdTAwMENcIjogXCIlMENcIixcbiAgXCJcXHUwMDBEXCI6IFwiJTBEXCIsXG4gIFwiXFx1MDAyMFwiOiBcIiUyMFwiLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVdoaXRlc3BhY2Uoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2VBbGwoL1tcXHNdL2csIChjKSA9PiB7XG4gICAgcmV0dXJuIFdISVRFU1BBQ0VfRU5DT0RJTkdTW2NdID8/IGM7XG4gIH0pO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGVuY29kZVdoaXRlc3BhY2UgfSBmcm9tIFwiLi4vX2NvbW1vbi90b19maWxlX3VybC50c1wiO1xuaW1wb3J0IHsgaXNBYnNvbHV0ZSB9IGZyb20gXCIuL2lzX2Fic29sdXRlLnRzXCI7XG5cbi8qKlxuICogQ29udmVydHMgYSBwYXRoIHN0cmluZyB0byBhIGZpbGUgVVJMLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB0b0ZpbGVVcmwgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9wYXRoL3dpbmRvd3MvdG9fZmlsZV91cmwudHNcIjtcbiAqXG4gKiB0b0ZpbGVVcmwoXCJcXFxcaG9tZVxcXFxmb29cIik7IC8vIG5ldyBVUkwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpXG4gKiB0b0ZpbGVVcmwoXCJDOlxcXFxVc2Vyc1xcXFxmb29cIik7IC8vIG5ldyBVUkwoXCJmaWxlOi8vL0M6L1VzZXJzL2Zvb1wiKVxuICogdG9GaWxlVXJsKFwiXFxcXFxcXFwxMjcuMC4wLjFcXFxcaG9tZVxcXFxmb29cIik7IC8vIG5ldyBVUkwoXCJmaWxlOi8vMTI3LjAuMC4xL2hvbWUvZm9vXCIpXG4gKiBgYGBcbiAqIEBwYXJhbSBwYXRoIHRvIGNvbnZlcnQgdG8gZmlsZSBVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRmlsZVVybChwYXRoOiBzdHJpbmcpOiBVUkwge1xuICBpZiAoIWlzQWJzb2x1dGUocGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLlwiKTtcbiAgfVxuICBjb25zdCBbLCBob3N0bmFtZSwgcGF0aG5hbWVdID0gcGF0aC5tYXRjaChcbiAgICAvXig/OlsvXFxcXF17Mn0oW14vXFxcXF0rKSg/PVsvXFxcXF0oPzpbXi9cXFxcXXwkKSkpPyguKikvLFxuICApITtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChcImZpbGU6Ly8vXCIpO1xuICB1cmwucGF0aG5hbWUgPSBlbmNvZGVXaGl0ZXNwYWNlKHBhdGhuYW1lIS5yZXBsYWNlKC8lL2csIFwiJTI1XCIpKTtcbiAgaWYgKGhvc3RuYW1lICE9PSB1bmRlZmluZWQgJiYgaG9zdG5hbWUgIT09IFwibG9jYWxob3N0XCIpIHtcbiAgICB1cmwuaG9zdG5hbWUgPSBob3N0bmFtZTtcbiAgICBpZiAoIXVybC5ob3N0bmFtZSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgaG9zdG5hbWUuXCIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdXJsO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgdGhlIEJyb3dzZXJpZnkgYXV0aG9ycy4gTUlUIExpY2Vuc2UuXG4vLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYnJvd3NlcmlmeS9wYXRoLWJyb3dzZXJpZnkvXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IENIQVJfRk9SV0FSRF9TTEFTSCB9IGZyb20gXCIuLi9fY29tbW9uL2NvbnN0YW50cy50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNQb3NpeFBhdGhTZXBhcmF0b3IoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBjb2RlID09PSBDSEFSX0ZPUldBUkRfU0xBU0g7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHtcbiAgYXNzZXJ0QXJncyxcbiAgbGFzdFBhdGhTZWdtZW50LFxuICBzdHJpcFN1ZmZpeCxcbn0gZnJvbSBcIi4uL19jb21tb24vYmFzZW5hbWUudHNcIjtcbmltcG9ydCB7IHN0cmlwVHJhaWxpbmdTZXBhcmF0b3JzIH0gZnJvbSBcIi4uL19jb21tb24vc3RyaXBfdHJhaWxpbmdfc2VwYXJhdG9ycy50c1wiO1xuaW1wb3J0IHsgaXNQb3NpeFBhdGhTZXBhcmF0b3IgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG4vKipcbiAqIFJldHVybiB0aGUgbGFzdCBwb3J0aW9uIG9mIGEgYHBhdGhgLlxuICogVHJhaWxpbmcgZGlyZWN0b3J5IHNlcGFyYXRvcnMgYXJlIGlnbm9yZWQsIGFuZCBvcHRpb25hbCBzdWZmaXggaXMgcmVtb3ZlZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vcGF0aC9iYXNlbmFtZS50c1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGJhc2VuYW1lKFwiL2hvbWUvdXNlci9Eb2N1bWVudHMvXCIpKTsgLy8gXCJEb2N1bWVudHNcIlxuICogY29uc29sZS5sb2coYmFzZW5hbWUoXCIvaG9tZS91c2VyL0RvY3VtZW50cy9pbWFnZS5wbmdcIikpOyAvLyBcImltYWdlLnBuZ1wiXG4gKiBjb25zb2xlLmxvZyhiYXNlbmFtZShcIi9ob21lL3VzZXIvRG9jdW1lbnRzL2ltYWdlLnBuZ1wiLCBcIi5wbmdcIikpOyAvLyBcImltYWdlXCJcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBwYXRoIC0gcGF0aCB0byBleHRyYWN0IHRoZSBuYW1lIGZyb20uXG4gKiBAcGFyYW0gW3N1ZmZpeF0gLSBzdWZmaXggdG8gcmVtb3ZlIGZyb20gZXh0cmFjdGVkIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYXNlbmFtZShwYXRoOiBzdHJpbmcsIHN1ZmZpeCA9IFwiXCIpOiBzdHJpbmcge1xuICBhc3NlcnRBcmdzKHBhdGgsIHN1ZmZpeCk7XG5cbiAgY29uc3QgbGFzdFNlZ21lbnQgPSBsYXN0UGF0aFNlZ21lbnQocGF0aCwgaXNQb3NpeFBhdGhTZXBhcmF0b3IpO1xuICBjb25zdCBzdHJpcHBlZFNlZ21lbnQgPSBzdHJpcFRyYWlsaW5nU2VwYXJhdG9ycyhcbiAgICBsYXN0U2VnbWVudCxcbiAgICBpc1Bvc2l4UGF0aFNlcGFyYXRvcixcbiAgKTtcbiAgcmV0dXJuIHN1ZmZpeCA/IHN0cmlwU3VmZml4KHN0cmlwcGVkU2VnbWVudCwgc3VmZml4KSA6IHN0cmlwcGVkU2VnbWVudDtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBDSEFSX0RPVCB9IGZyb20gXCIuLi9fY29tbW9uL2NvbnN0YW50cy50c1wiO1xuaW1wb3J0IHsgYXNzZXJ0UGF0aCB9IGZyb20gXCIuLi9fY29tbW9uL2Fzc2VydF9wYXRoLnRzXCI7XG5pbXBvcnQgeyBpc1Bvc2l4UGF0aFNlcGFyYXRvciB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qKlxuICogUmV0dXJuIHRoZSBleHRlbnNpb24gb2YgdGhlIGBwYXRoYCB3aXRoIGxlYWRpbmcgcGVyaW9kLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZXh0bmFtZSB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL3BhdGgvZXh0bmFtZS50c1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGV4dG5hbWUoXCIvaG9tZS91c2VyL0RvY3VtZW50cy9cIikpOyAvLyBcIlwiXG4gKiBjb25zb2xlLmxvZyhleHRuYW1lKFwiL2hvbWUvdXNlci9Eb2N1bWVudHMvaW1hZ2UucG5nXCIpKTsgLy8gXCIucG5nXCJcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBwYXRoIHdpdGggZXh0ZW5zaW9uXG4gKiBAcmV0dXJucyBleHRlbnNpb24gKGV4LiBmb3IgYGZpbGUudHNgIHJldHVybnMgYC50c2ApXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRuYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgbGV0IHN0YXJ0RG90ID0gLTE7XG4gIGxldCBzdGFydFBhcnQgPSAwO1xuICBsZXQgZW5kID0gLTE7XG4gIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gIC8vIGFmdGVyIGFueSBwYXRoIHNlcGFyYXRvciB3ZSBmaW5kXG4gIGxldCBwcmVEb3RTdGF0ZSA9IDA7XG4gIGZvciAobGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICBpZiAoaXNQb3NpeFBhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgLy8gZXh0ZW5zaW9uXG4gICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgIGVuZCA9IGkgKyAxO1xuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gQ0hBUl9ET1QpIHtcbiAgICAgIC8vIElmIHRoaXMgaXMgb3VyIGZpcnN0IGRvdCwgbWFyayBpdCBhcyB0aGUgc3RhcnQgb2Ygb3VyIGV4dGVuc2lvblxuICAgICAgaWYgKHN0YXJ0RG90ID09PSAtMSkgc3RhcnREb3QgPSBpO1xuICAgICAgZWxzZSBpZiAocHJlRG90U3RhdGUgIT09IDEpIHByZURvdFN0YXRlID0gMTtcbiAgICB9IGVsc2UgaWYgKHN0YXJ0RG90ICE9PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgIC8vIGhhdmUgYSBnb29kIGNoYW5jZSBhdCBoYXZpbmcgYSBub24tZW1wdHkgZXh0ZW5zaW9uXG4gICAgICBwcmVEb3RTdGF0ZSA9IC0xO1xuICAgIH1cbiAgfVxuXG4gIGlmIChcbiAgICBzdGFydERvdCA9PT0gLTEgfHxcbiAgICBlbmQgPT09IC0xIHx8XG4gICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkb3RcbiAgICBwcmVEb3RTdGF0ZSA9PT0gMCB8fFxuICAgIC8vIFRoZSAocmlnaHQtbW9zdCkgdHJpbW1lZCBwYXRoIGNvbXBvbmVudCBpcyBleGFjdGx5ICcuLidcbiAgICAocHJlRG90U3RhdGUgPT09IDEgJiYgc3RhcnREb3QgPT09IGVuZCAtIDEgJiYgc3RhcnREb3QgPT09IHN0YXJ0UGFydCArIDEpXG4gICkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG4gIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGFzc2VydEFyZyB9IGZyb20gXCIuLi9fY29tbW9uL2Zyb21fZmlsZV91cmwudHNcIjtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZpbGUgVVJMIHRvIGEgcGF0aCBzdHJpbmcuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vcGF0aC9wb3NpeC9mcm9tX2ZpbGVfdXJsLnRzXCI7XG4gKlxuICogZnJvbUZpbGVVcmwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpOyAvLyBcIi9ob21lL2Zvb1wiXG4gKiBgYGBcbiAqIEBwYXJhbSB1cmwgb2YgYSBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUZpbGVVcmwodXJsOiBVUkwgfCBzdHJpbmcpOiBzdHJpbmcge1xuICB1cmwgPSBhc3NlcnRBcmcodXJsKTtcbiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChcbiAgICB1cmwucGF0aG5hbWUucmVwbGFjZSgvJSg/IVswLTlBLUZhLWZdezJ9KS9nLCBcIiUyNVwiKSxcbiAgKTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBhc3NlcnRQYXRoIH0gZnJvbSBcIi4uL19jb21tb24vYXNzZXJ0X3BhdGgudHNcIjtcbmltcG9ydCB7IGlzUG9zaXhQYXRoU2VwYXJhdG9yIH0gZnJvbSBcIi4vX3V0aWwudHNcIjtcblxuLyoqXG4gKiBWZXJpZmllcyB3aGV0aGVyIHByb3ZpZGVkIHBhdGggaXMgYWJzb2x1dGVcbiAqIEBwYXJhbSBwYXRoIHRvIGJlIHZlcmlmaWVkIGFzIGFic29sdXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuICByZXR1cm4gcGF0aC5sZW5ndGggPiAwICYmIGlzUG9zaXhQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgwKSk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgZW5jb2RlV2hpdGVzcGFjZSB9IGZyb20gXCIuLi9fY29tbW9uL3RvX2ZpbGVfdXJsLnRzXCI7XG5pbXBvcnQgeyBpc0Fic29sdXRlIH0gZnJvbSBcIi4vaXNfYWJzb2x1dGUudHNcIjtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIHBhdGggc3RyaW5nIHRvIGEgZmlsZSBVUkwuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRvRmlsZVVybCB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL3BhdGgvcG9zaXgvdG9fZmlsZV91cmwudHNcIjtcbiAqXG4gKiB0b0ZpbGVVcmwoXCIvaG9tZS9mb29cIik7IC8vIG5ldyBVUkwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpXG4gKiBgYGBcbiAqIEBwYXJhbSBwYXRoIHRvIGNvbnZlcnQgdG8gZmlsZSBVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRmlsZVVybChwYXRoOiBzdHJpbmcpOiBVUkwge1xuICBpZiAoIWlzQWJzb2x1dGUocGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLlwiKTtcbiAgfVxuXG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoXCJmaWxlOi8vL1wiKTtcbiAgdXJsLnBhdGhuYW1lID0gZW5jb2RlV2hpdGVzcGFjZShcbiAgICBwYXRoLnJlcGxhY2UoLyUvZywgXCIlMjVcIikucmVwbGFjZSgvXFxcXC9nLCBcIiU1Q1wiKSxcbiAgKTtcbiAgcmV0dXJuIHVybDtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vLyBLZWVwIHRoaXMgdXAtdG8tZGF0ZSB3aXRoIERlbm8uYnVpbGQub3NcbmV4cG9ydCB0eXBlIE9TVHlwZSA9XG4gIHwgXCJkYXJ3aW5cIlxuICB8IFwibGludXhcIlxuICB8IFwid2luZG93c1wiXG4gIHwgXCJmcmVlYnNkXCJcbiAgfCBcIm5ldGJzZFwiXG4gIHwgXCJhaXhcIlxuICB8IFwic29sYXJpc1wiXG4gIHwgXCJpbGx1bW9zXCI7XG5cbmV4cG9ydCBjb25zdCBvc1R5cGU6IE9TVHlwZSA9ICgoKSA9PiB7XG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gIGNvbnN0IHsgRGVubyB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gIGlmICh0eXBlb2YgRGVubz8uYnVpbGQ/Lm9zID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIERlbm8uYnVpbGQub3M7XG4gIH1cblxuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICBjb25zdCB7IG5hdmlnYXRvciB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gIGlmIChuYXZpZ2F0b3I/LmFwcFZlcnNpb24/LmluY2x1ZGVzPy4oXCJXaW5cIikpIHtcbiAgICByZXR1cm4gXCJ3aW5kb3dzXCI7XG4gIH1cblxuICByZXR1cm4gXCJsaW51eFwiO1xufSkoKTtcblxuZXhwb3J0IGNvbnN0IGlzV2luZG93cyA9IG9zVHlwZSA9PT0gXCJ3aW5kb3dzXCI7XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgaXNXaW5kb3dzIH0gZnJvbSBcIi4vX29zLnRzXCI7XG5pbXBvcnQgeyBmcm9tRmlsZVVybCBhcyBwb3NpeEZyb21GaWxlVXJsIH0gZnJvbSBcIi4vcG9zaXgvZnJvbV9maWxlX3VybC50c1wiO1xuaW1wb3J0IHsgZnJvbUZpbGVVcmwgYXMgd2luZG93c0Zyb21GaWxlVXJsIH0gZnJvbSBcIi4vd2luZG93cy9mcm9tX2ZpbGVfdXJsLnRzXCI7XG5cbi8qKlxuICogQ29udmVydHMgYSBmaWxlIFVSTCB0byBhIHBhdGggc3RyaW5nLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBmcm9tRmlsZVVybCB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL3BhdGgvZnJvbV9maWxlX3VybC50c1wiO1xuICpcbiAqIC8vIHBvc2l4XG4gKiBmcm9tRmlsZVVybChcImZpbGU6Ly8vaG9tZS9mb29cIik7IC8vIFwiL2hvbWUvZm9vXCJcbiAqXG4gKiAvLyB3aW4zMlxuICogZnJvbUZpbGVVcmwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpOyAvLyBcIlxcXFxob21lXFxcXGZvb1wiXG4gKiBmcm9tRmlsZVVybChcImZpbGU6Ly8vQzovVXNlcnMvZm9vXCIpOyAvLyBcIkM6XFxcXFVzZXJzXFxcXGZvb1wiXG4gKiBmcm9tRmlsZVVybChcImZpbGU6Ly9sb2NhbGhvc3QvaG9tZS9mb29cIik7IC8vIFwiXFxcXFxcXFxsb2NhbGhvc3RcXFxcaG9tZVxcXFxmb29cIlxuICogYGBgXG4gKiBAcGFyYW0gdXJsIG9mIGEgZmlsZSBVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyb21GaWxlVXJsKHVybDogc3RyaW5nIHwgVVJMKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzV2luZG93cyA/IHdpbmRvd3NGcm9tRmlsZVVybCh1cmwpIDogcG9zaXhGcm9tRmlsZVVybCh1cmwpO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuaW1wb3J0IHsgdG9GaWxlVXJsIGFzIHBvc2l4VG9GaWxlVXJsIH0gZnJvbSBcIi4vcG9zaXgvdG9fZmlsZV91cmwudHNcIjtcbmltcG9ydCB7IHRvRmlsZVVybCBhcyB3aW5kb3dzVG9GaWxlVXJsIH0gZnJvbSBcIi4vd2luZG93cy90b19maWxlX3VybC50c1wiO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgcGF0aCBzdHJpbmcgdG8gYSBmaWxlIFVSTC5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdG9GaWxlVXJsIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vcGF0aC90b19maWxlX3VybC50c1wiO1xuICpcbiAqIC8vIHBvc2l4XG4gKiB0b0ZpbGVVcmwoXCIvaG9tZS9mb29cIik7IC8vIG5ldyBVUkwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpXG4gKlxuICogLy8gd2luMzJcbiAqIHRvRmlsZVVybChcIlxcXFxob21lXFxcXGZvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8vaG9tZS9mb29cIilcbiAqIHRvRmlsZVVybChcIkM6XFxcXFVzZXJzXFxcXGZvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8vQzovVXNlcnMvZm9vXCIpXG4gKiB0b0ZpbGVVcmwoXCJcXFxcXFxcXDEyNy4wLjAuMVxcXFxob21lXFxcXGZvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8xMjcuMC4wLjEvaG9tZS9mb29cIilcbiAqIGBgYFxuICogQHBhcmFtIHBhdGggdG8gY29udmVydCB0byBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9GaWxlVXJsKHBhdGg6IHN0cmluZyk6IFVSTCB7XG4gIHJldHVybiBpc1dpbmRvd3MgPyB3aW5kb3dzVG9GaWxlVXJsKHBhdGgpIDogcG9zaXhUb0ZpbGVVcmwocGF0aCk7XG59XG4iLCAiLy8gcG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1Y2FjYXNvbmF0by9lc2J1aWxkX2Rlbm9fbG9hZGVyL2Jsb2IvMC4xMC4zL3NyYy9zaGFyZWQudHNcbi8vIENvcHlyaWdodCAyMDIxIEx1Y2EgQ2Fzb25hdG8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuXG5pbXBvcnQgeyBmcm9tRmlsZVVybCwgdG9GaWxlVXJsIH0gZnJvbSBcIi4vZGVwcy9wYXRoLnRzXCI7XG5cbi8qKiBFc2J1aWxkJ3MgcmVwcmVzZW50YXRpb24gb2YgYSBtb2R1bGUgc3BlY2lmaWVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFc2J1aWxkUmVzb2x1dGlvbiB7XG4gIC8qKiBUaGUgbmFtZXNwYWNlLCBsaWtlIGBmaWxlYCwgYGh0dHBzYCwgb3IgYG5wbWAuICovXG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICAvKiogVGhlIHBhdGguIFdoZW4gdGhlIG5hbWVzcGFjZSBpcyBgZmlsZWAsIHRoaXMgaXMgYSBmaWxlIHBhdGguIE90aGVyd2lzZVxuICAgKiB0aGlzIGlzIGV2ZXJ5dGhpbmcgaW4gYSBVUkwgd2l0aCB0aGUgbmFtZXNwYWNlIGFzIHRoZSBzY2hlbWUsIGFmdGVyIHRoZVxuICAgKiBgOmAgb2YgdGhlIHNjaGVtZS4gKi9cbiAgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFR1cm4gYSBVUkwgaW50byBhbiB7QGxpbmsgRXNidWlsZFJlc29sdXRpb259IGJ5IHNwbGl0dGluZyB0aGUgVVJMIGludG8gYVxuICogbmFtZXNwYWNlIGFuZCBwYXRoLlxuICpcbiAqIEZvciBmaWxlIFVSTHMsIHRoZSBwYXRoIHJldHVybmVkIGlzIGEgZmlsZSBwYXRoIG5vdCBhIFVSTCBwYXRoIHJlcHJlc2VudGluZyBhXG4gKiBmaWxlLlxuICovXG5leHBvcnQgY29uc3QgdXJsVG9Fc2J1aWxkUmVzb2x1dGlvbiA9ICh1cmw6IFVSTCk6IEVzYnVpbGRSZXNvbHV0aW9uID0+IHtcbiAgaWYgKHVybC5wcm90b2NvbCA9PT0gXCJmaWxlOlwiKSB7XG4gICAgcmV0dXJuIHsgcGF0aDogZnJvbUZpbGVVcmwodXJsKSwgbmFtZXNwYWNlOiBcImZpbGVcIiB9O1xuICB9XG5cbiAgY29uc3QgbmFtZXNwYWNlID0gdXJsLnByb3RvY29sLnNsaWNlKDAsIC0xKTtcbiAgY29uc3QgcGF0aCA9IHVybC5ocmVmLnNsaWNlKG5hbWVzcGFjZS5sZW5ndGggKyAxKTtcbiAgcmV0dXJuIHsgcGF0aCwgbmFtZXNwYWNlIH07XG59O1xuXG4vKipcbiAqIFR1cm4gYW4ge0BsaW5rIEVzYnVpbGRSZXNvbHV0aW9ufSBpbnRvIGEgVVJMIGJ5IGpvaW5pbmcgdGhlIG5hbWVzcGFjZSBhbmRcbiAqIHBhdGggaW50byBhIFVSTCBzdHJpbmcuXG4gKlxuICogRm9yIGZpbGUgVVJMcywgdGhlIHBhdGggaXMgaW50ZXJwcmV0ZWQgYXMgYSBmaWxlIHBhdGggbm90IGFzIGEgVVJMIHBhdGhcbiAqIHJlcHJlc2VudGluZyBhIGZpbGUuXG4gKi9cbmV4cG9ydCBjb25zdCBlc2J1aWxkUmVzb2x1dGlvblRvVVJMID0gKHNwZWNpZmllcjogRXNidWlsZFJlc29sdXRpb24pOiBVUkwgPT4ge1xuICBpZiAoc3BlY2lmaWVyLm5hbWVzcGFjZSA9PT0gXCJmaWxlXCIpIHtcbiAgICByZXR1cm4gdG9GaWxlVXJsKHNwZWNpZmllci5wYXRoKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgVVJMKGAke3NwZWNpZmllci5uYW1lc3BhY2V9OiR7c3BlY2lmaWVyLnBhdGh9YCk7XG59O1xuIiwgImltcG9ydCB7XG4gIGNyZWF0ZUVycixcbiAgY3JlYXRlT2ssXG4gIGlzRXJyLFxuICBva09yRWxzZUZvck1heWJlLFxuICBSZXN1bHQsXG4gIHVud3JhcE9rLFxufSBmcm9tIFwiLi9kZXBzL29wdGlvbi10LnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW52YWxpZFVSTEVycm9yIHtcbiAgbmFtZTogXCJJbnZhbGlkVVJMRXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBOb3RGb3VuZEVycm9yIHtcbiAgbmFtZTogXCJOb3RGb3VuZEVycm9yXCI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cbi8qKlxuICogRXh0cmFjdHMgdGhlIHNvdXJjZSBtYXAgVVJMIGZyb20gdGhlIGdpdmVuIGNvZGUuXG4gKlxuICogVGhpcyBjb2RlIGlzIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9ldmFudy9zb3VyY2UtbWFwLXZpc3VhbGl6YXRpb24vYmxvYi9mM2U5ZGZlYzIwZTdiZmQ5NjI1ZDAzZGQwZDQyN2FmZmE3NGE5YzQzL2NvZGUuanMjTDEwMy1MMTQ1IHVuZGVyIEBldmFudyAncyBsaWNlbnNlLlxuICpcbiAqIEBwYXJhbSBjb2RlIC0gVGhlIGNvZGUgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBzb3VyY2UgbWFwIFVSTC5cbiAqIEBwYXJhbSBfbGFuZyAtIFRoZSBsYW5ndWFnZSBvZiB0aGUgY29kZSAoY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgYFwianNcImApLlxuICogQHJldHVybnMgVGhlIGV4dHJhY3RlZCBzb3VyY2UgbWFwIFVSTCBhcyBhIGBVUkxgIG9iamVjdCwgb3IgYG51bGxgIGlmIG5vIHNvdXJjZSBtYXAgVVJMIGlzIGZvdW5kLlxuICovXG5leHBvcnQgY29uc3QgZXh0cmFjdFNvdXJjZU1hcFVSTCA9IChcbiAgY29kZTogc3RyaW5nLFxuICBiYXNlOiBzdHJpbmcgfCBVUkwgfCB1bmRlZmluZWQsXG4pOiBSZXN1bHQ8XG4gIHsgdXJsOiBVUkw7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyIH0sXG4gIEludmFsaWRVUkxFcnJvciB8IE5vdEZvdW5kRXJyb3Jcbj4gPT4ge1xuICBjb25zdCByZXN1bHQgPSBva09yRWxzZUZvck1heWJlKFxuICAgIGV4dHJhY3QoY29kZSksXG4gICAgKCkgPT4gKHtcbiAgICAgIG5hbWU6IFwiTm90Rm91bmRFcnJvclwiLFxuICAgICAgbWVzc2FnZTogXCJTb3VyY2UgbWFwIFVSTCBpcyBub3QgZm91bmRcIixcbiAgICB9IGFzIE5vdEZvdW5kRXJyb3IpLFxuICApO1xuICBpZiAoaXNFcnIocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgY29uc3QgeyB1cmwsIHN0YXJ0LCBlbmQgfSA9IHVud3JhcE9rKHJlc3VsdCk7XG4gIHJldHVybiBVUkwuY2FuUGFyc2UodXJsLCBiYXNlKVxuICAgID8gY3JlYXRlT2soeyB1cmw6IG5ldyBVUkwodXJsLCBiYXNlKSwgc3RhcnQsIGVuZCB9KVxuICAgIDogY3JlYXRlRXJyKHtcbiAgICAgIG5hbWU6IFwiSW52YWxpZFVSTEVycm9yXCIsXG4gICAgICBtZXNzYWdlOiBgSW52YWxpZCBVUkw6ICR7dXJsfWAsXG4gICAgfSk7XG59O1xuXG5jb25zdCBleHRyYWN0ID0gKGNvZGU6IHN0cmluZykgPT4ge1xuICAvLyBDaGVjayBmb3IgYm90aCBcIi8vXCIgYW5kIFwiLypcIiBjb21tZW50cy4gVGhpcyBpcyBtb3N0bHkgZG9uZSBtYW51YWxseVxuICAvLyBpbnN0ZWFkIG9mIGRvaW5nIGl0IGFsbCB3aXRoIGEgcmVndWxhciBleHByZXNzaW9uIGJlY2F1c2UgRmlyZWZveCdzXG4gIC8vIHJlZ3VsYXIgZXhwcmVzc2lvbiBlbmdpbmUgY3Jhc2hlcyB3aXRoIGFuIGludGVybmFsIGVycm9yIHdoZW4gdGhlXG4gIC8vIG1hdGNoIGlzIHRvbyBiaWcuXG4gIGZvciAoY29uc3QgbWF0Y2ggb2YgY29kZS5tYXRjaEFsbCgvXFwvKFsqL10pWyNAXSAqc291cmNlTWFwcGluZ1VSTD0vZykpIHtcbiAgICBjb25zdCBzdGFydCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoO1xuICAgIGNvbnN0IG4gPSBjb2RlLmxlbmd0aDtcbiAgICBsZXQgZW5kID0gc3RhcnQ7XG4gICAgd2hpbGUgKGVuZCA8IG4gJiYgY29kZS5jaGFyQ29kZUF0KGVuZCkgPiAzMikge1xuICAgICAgZW5kKys7XG4gICAgfVxuICAgIGlmIChlbmQgPT09IHN0YXJ0KSBjb250aW51ZTtcbiAgICBpZiAobWF0Y2hbMV0gPT09IFwiL1wiIHx8IGNvZGUuaW5kZXhPZihcIiovXCIsIGVuZCkgPiAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB1cmw6IGNvZGUuc2xpY2Uoc3RhcnQsIGVuZCksXG4gICAgICAgIHN0YXJ0LFxuICAgICAgICBlbmQsXG4gICAgICB9O1xuICAgIH1cbiAgfVxufTtcbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIFN0cmlwcyBhbnkgaGFzaCAoZWcuIGAjaGVhZGVyYCkgb3Igc2VhcmNoIHBhcmFtZXRlcnMgKGVnLiBgP2Zvbz1iYXJgKSBmcm9tIHRoZSBwcm92aWRlZCBVUkwuXG4gKlxuICogKE11dGF0ZXMgdGhlIG9yaWdpbmFsIHVybCBwcm92aWRlZClcbiAqIEBwYXJhbSB1cmwgdG8gYmUgc3RyaXBwZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcCh1cmw6IFVSTCkge1xuICB1cmwuaGFzaCA9IFwiXCI7XG4gIHVybC5zZWFyY2ggPSBcIlwiO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGJhc2VuYW1lIGFzIHBvc2l4QmFzZW5hbWUgfSBmcm9tIFwiLi4vcGF0aC9wb3NpeC9iYXNlbmFtZS50c1wiO1xuaW1wb3J0IHsgc3RyaXAgfSBmcm9tIFwiLi9fc3RyaXAudHNcIjtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIG5hbWUgb2YgYSBVUkwgb3IgVVJMIHN0cmluZywgb3B0aW9uYWxseSByZW1vdmluZyBhIHN1ZmZpeC5cbiAqXG4gKiBUcmFpbGluZyBgL2BzIGFyZSBpZ25vcmVkLiBJZiBubyBwYXRoIGlzIHByZXNlbnQsIHRoZSBob3N0IG5hbWUgaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHVybCBUaGUgVVJMIGZyb20gd2hpY2ggdG8gZXh0cmFjdCB0aGUgYmFzZSBuYW1lLlxuICogQHBhcmFtIHN1ZmZpeCBBbiBvcHRpb25hbCBzdWZmaXggdG8gcmVtb3ZlIGZyb20gdGhlIGJhc2UgbmFtZS5cbiAqIEByZXR1cm5zIFRoZSBiYXNlIG5hbWUgb2YgdGhlIFVSTC5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vdXJsL2Jhc2VuYW1lLnRzXCI7XG4gKlxuICogYmFzZW5hbWUoXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvYXNzZXJ0L21vZC50c1wiKTsgLy8gXCJtb2QudHNcIlxuICpcbiAqIGJhc2VuYW1lKG5ldyBVUkwoXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvYXNzZXJ0L21vZC50c1wiKSk7IC8vIFwibW9kLnRzXCJcbiAqXG4gKiBiYXNlbmFtZShcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9hc3NlcnQvbW9kLnRzP2E9YlwiKTsgLy8gXCJtb2QudHNcIlxuICpcbiAqIGJhc2VuYW1lKFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkL2Fzc2VydC9tb2QudHMjaGVhZGVyXCIpOyAvLyBcIm1vZC50c1wiXG4gKlxuICogYmFzZW5hbWUoXCJodHRwczovL2Rlbm8ubGFuZC9cIik7IC8vIFwiZGVuby5sYW5kXCJcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFJlbW92aW5nIGEgc3VmZml4XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi91cmwvYmFzZW5hbWUudHNcIjtcbiAqXG4gKiBiYXNlbmFtZShcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9hc3NlcnQvbW9kLnRzXCIsIFwiLnRzXCIpOyAvLyBcIm1vZFwiXG4gKlxuICogYmFzZW5hbWUobmV3IFVSTChcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9hc3NlcnQvbW9kLnRzXCIpLCBcIi50c1wiKTsgLy8gXCJtb2RcIlxuICpcbiAqIGJhc2VuYW1lKFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkL2Fzc2VydC9tb2QudHM/YT1iXCIsIFwiLnRzXCIpOyAvLyBcIm1vZFwiXG4gKlxuICogYmFzZW5hbWUoXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvYXNzZXJ0L21vZC50cyNoZWFkZXJcIiwgXCIudHNcIik7IC8vIFwibW9kLnRzXCJcbiAqIGBgYFxuICogRGVmaW5pbmcgYSBzdWZmaXggd2lsbCByZW1vdmUgaXQgZnJvbSB0aGUgYmFzZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFzZW5hbWUodXJsOiBzdHJpbmcgfCBVUkwsIHN1ZmZpeD86IHN0cmluZyk6IHN0cmluZyB7XG4gIHVybCA9IG5ldyBVUkwodXJsKTtcbiAgc3RyaXAodXJsKTtcbiAgcmV0dXJuIHBvc2l4QmFzZW5hbWUodXJsLmhyZWYsIHN1ZmZpeCk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgZXh0bmFtZSBhcyBwb3NpeEV4dG5hbWUgfSBmcm9tIFwiLi4vcGF0aC9wb3NpeC9leHRuYW1lLnRzXCI7XG5pbXBvcnQgeyBzdHJpcCB9IGZyb20gXCIuL19zdHJpcC50c1wiO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGZpbGUgZXh0ZW5zaW9uIG9mIGEgZ2l2ZW4gVVJMIG9yIHN0cmluZyB3aXRoIGxlYWRpbmcgcGVyaW9kLlxuICpcbiAqIFRoZSBleHRlbnNpb24gaXMgc291cmNlZCBmcm9tIHRoZSBwYXRoIHBvcnRpb24gb2YgdGhlIFVSTC4gSWYgdGhlcmUgaXMgbm9cbiAqIGV4dGVuc2lvbiwgYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB1cmwgVGhlIFVSTCBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIGV4dGVuc2lvbi5cbiAqIEByZXR1cm5zIFRoZSBleHRlbnNpb24gb2YgdGhlIFVSTC5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGV4dG5hbWUgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi91cmwvZXh0bmFtZS50c1wiO1xuICpcbiAqIGV4dG5hbWUoXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvcGF0aC9tb2QudHNcIik7IC8vIFwiLnRzXCJcbiAqXG4gKiBleHRuYW1lKFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkL3BhdGgvbW9kXCIpOyAvLyBcIlwiXG4gKlxuICogZXh0bmFtZShcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoL21vZC50cz9hPWJcIik7IC8vIFwiLnRzXCJcbiAqXG4gKiBleHRuYW1lKFwiaHR0cHM6Ly9kZW5vLmxhbmQvXCIpOyAvLyBcIlwiXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dG5hbWUodXJsOiBzdHJpbmcgfCBVUkwpOiBzdHJpbmcge1xuICB1cmwgPSBuZXcgVVJMKHVybCk7XG4gIHN0cmlwKHVybCk7XG4gIHJldHVybiBwb3NpeEV4dG5hbWUodXJsLnBhdGhuYW1lKTtcbn1cbiIsICJpbXBvcnQgeyBMb2FkZXIgfSBmcm9tIFwiLi9kZXBzL2VzYnVpbGQtd2FzbS50c1wiO1xuaW1wb3J0IHsgYmFzZW5hbWUsIGV4dG5hbWUgfSBmcm9tIFwiLi9kZXBzL3VybC50c1wiO1xuXG5jb25zdCBsb2FkZXJMaXN0OiBMb2FkZXJbXSA9IFtcbiAgXCJiYXNlNjRcIixcbiAgXCJiaW5hcnlcIixcbiAgXCJjb3B5XCIsXG4gIFwiY3NzXCIsXG4gIFwiZGF0YXVybFwiLFxuICBcImRlZmF1bHRcIixcbiAgXCJlbXB0eVwiLFxuICBcImZpbGVcIixcbiAgXCJqc1wiLFxuICBcImpzb25cIixcbiAgXCJqc3hcIixcbiAgXCJsb2NhbC1jc3NcIixcbiAgXCJ0ZXh0XCIsXG4gIFwidHNcIixcbiAgXCJ0c3hcIixcbl07XG5jb25zdCBpc0xvYWRlciA9IChsb2FkZXI6IHN0cmluZyk6IGxvYWRlciBpcyBMb2FkZXIgPT5cbiAgKGxvYWRlckxpc3QgYXMgc3RyaW5nW10pLmluY2x1ZGVzKGxvYWRlcik7XG5cbmV4cG9ydCBjb25zdCBpc0xvYWRlcldoaWNoQ2FuSW5jbHVkZVNvdXJjZU1hcHBpbmdVUkwgPSAoXG4gIGxvYWRlcjogTG9hZGVyLFxuKTogYm9vbGVhbiA9PiAvXmpzfF50c3xjc3MkLy50ZXN0KGxvYWRlcik7XG5cbmV4cG9ydCBjb25zdCByZXNwb25zZVRvTG9hZGVyID0gKHJlc3BvbnNlOiBSZXNwb25zZSk6IExvYWRlciA9PiB7XG4gIGNvbnN0IHVybCA9IHJlc3BvbnNlLnVybDtcbiAgY29uc3QgZmlsZW5hbWUgPSBiYXNlbmFtZSh1cmwpO1xuICBpZiAoaXNMb2FkZXIoZmlsZW5hbWUpKSByZXR1cm4gZmlsZW5hbWU7XG4gIGlmIChmaWxlbmFtZSA9PT0gXCJtanNcIikgcmV0dXJuIFwianNcIjtcbiAgY29uc3QgZXh0ID0gZXh0bmFtZSh1cmwpLnNsaWNlKDEpO1xuICBpZiAoaXNMb2FkZXIoZXh0KSkgcmV0dXJuIGV4dDtcbiAgaWYgKGV4dCA9PT0gXCJtanNcIikgcmV0dXJuIFwianNcIjtcbiAgY29uc3QgY29udGVudFR5cGUgPSByZXNwb25zZS5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKSA/PyBcInRleHQvcGxhaW5cIjtcbiAgY29uc3QgbWltZVR5cGUgPSBjb250ZW50VHlwZS5zcGxpdChcIjtcIilbMF0/LnRyaW0/LigpID8/IFwidGV4dC9wbGFpblwiO1xuICByZXR1cm4gbWltZVR5cGVUb0xvYWRlcihtaW1lVHlwZSk7XG59O1xuXG5leHBvcnQgY29uc3QgbWltZVR5cGVUb0xvYWRlciA9IChtaW1lVHlwZTogc3RyaW5nKTogTG9hZGVyID0+IHtcbiAgY29uc3Qgc3ViVHlwZSA9IG1pbWVUeXBlLnNwbGl0KFwiL1wiKVsxXSA/PyBcInBsYWluXCI7XG4gIGlmICgvKD86XnBsYWluJHxeeG1sfF5zdmd8Xng/aHRtbCkvLnRlc3Qoc3ViVHlwZSkpIHtcbiAgICByZXR1cm4gXCJ0ZXh0XCI7XG4gIH1cbiAgaWYgKHN1YlR5cGUuc3RhcnRzV2l0aChcImpzb25cIikpIHtcbiAgICByZXR1cm4gXCJqc29uXCI7XG4gIH1cbiAgc3dpdGNoIChzdWJUeXBlKSB7XG4gICAgY2FzZSBcImphdmFzY3JpcHRcIjpcbiAgICAgIHJldHVybiBcImpzXCI7XG4gICAgY2FzZSBcInR5cGVzY3JpcHRcIjpcbiAgICAgIHJldHVybiBcInRzXCI7XG4gICAgY2FzZSBcImNzc1wiOlxuICAgICAgcmV0dXJuIFwiY3NzXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcInRleHRcIjtcbiAgfVxufTtcbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuXG5pbXBvcnQgdHlwZSB7IENvbXBhcmF0b3IgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZU51bWJlcihcbiAgYTogbnVtYmVyLFxuICBiOiBudW1iZXIsXG4pOiAxIHwgMCB8IC0xIHtcbiAgaWYgKGlzTmFOKGEpIHx8IGlzTmFOKGIpKSB0aHJvdyBuZXcgRXJyb3IoXCJDb21wYXJpc29uIGFnYWluc3Qgbm9uLW51bWJlcnNcIik7XG4gIHJldHVybiBhID09PSBiID8gMCA6IGEgPCBiID8gLTEgOiAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJZGVudGlmaWVyKFxuICB2MTogUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXI+ID0gW10sXG4gIHYyOiBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlcj4gPSBbXSxcbik6IDEgfCAwIHwgLTEge1xuICAvLyBOT1QgaGF2aW5nIGEgcHJlcmVsZWFzZSBpcyA+IGhhdmluZyBvbmVcbiAgLy8gQnV0IE5PVCBoYXZpbmcgYSBidWlsZCBpcyA8IGhhdmluZyBvbmVcbiAgaWYgKHYxLmxlbmd0aCAmJiAhdjIubGVuZ3RoKSByZXR1cm4gLTE7XG4gIGlmICghdjEubGVuZ3RoICYmIHYyLmxlbmd0aCkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZUlkZW50aWZpZXIoXG4gIHYxOiBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlcj4gPSBbXSxcbiAgdjI6IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyPiA9IFtdLFxuKTogMSB8IDAgfCAtMSB7XG4gIGNvbnN0IGxlbmd0aCA9IE1hdGgubWF4KHYxLmxlbmd0aCwgdjIubGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGEgPSB2MVtpXTtcbiAgICBjb25zdCBiID0gdjJbaV07XG4gICAgLy8gc2FtZSBsZW5ndGggaXMgZXF1YWxcbiAgICBpZiAoYSA9PT0gdW5kZWZpbmVkICYmIGIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gICAgLy8gbG9uZ2VyID4gc2hvcnRlclxuICAgIGlmIChiID09PSB1bmRlZmluZWQpIHJldHVybiAxO1xuICAgIC8vIHNob3J0ZXIgPCBsb25nZXJcbiAgICBpZiAoYSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gLTE7XG4gICAgLy8gc3RyaW5nID4gbnVtYmVyXG4gICAgaWYgKHR5cGVvZiBhID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiBiID09PSBcIm51bWJlclwiKSByZXR1cm4gMTtcbiAgICAvLyBudW1iZXIgPCBzdHJpbmdcbiAgICBpZiAodHlwZW9mIGEgPT09IFwibnVtYmVyXCIgJiYgdHlwZW9mIGIgPT09IFwic3RyaW5nXCIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgIC8vIElmIHRoZXkncmUgZXF1YWwsIGNvbnRpbnVlIGNvbXBhcmluZyBzZWdtZW50cy5cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLyoqXG4gKiBBIHNpbmdsZSBgMGAsIG9yIGEgbm9uLXplcm8gZGlnaXQgZm9sbG93ZWQgYnkgemVybyBvciBtb3JlIGRpZ2l0cy5cbiAqL1xuY29uc3QgTlVNRVJJQ19JREVOVElGSUVSID0gXCIwfFsxLTldXFxcXGQqXCI7XG5cbi8qKlxuICogWmVybyBvciBtb3JlIGRpZ2l0cywgZm9sbG93ZWQgYnkgYSBsZXR0ZXIgb3IgaHlwaGVuLCBhbmQgdGhlbiB6ZXJvIG9yIG1vcmUgbGV0dGVycywgZGlnaXRzLCBvciBoeXBoZW5zLlxuICovXG5jb25zdCBOT05fTlVNRVJJQ19JREVOVElGSUVSID0gXCJcXFxcZCpbYS16QS1aLV1bYS16QS1aMC05LV0qXCI7XG5cbi8qKlxuICogVGhyZWUgZG90LXNlcGFyYXRlZCBudW1lcmljIGlkZW50aWZpZXJzLlxuICovXG5jb25zdCBWRVJTSU9OX0NPUkUgPVxuICBgKD88bWFqb3I+JHtOVU1FUklDX0lERU5USUZJRVJ9KVxcXFwuKD88bWlub3I+JHtOVU1FUklDX0lERU5USUZJRVJ9KVxcXFwuKD88cGF0Y2g+JHtOVU1FUklDX0lERU5USUZJRVJ9KWA7XG5cbi8qKlxuICogQSBudW1lcmljIGlkZW50aWZpZXIsIG9yIGEgbm9uLW51bWVyaWMgaWRlbnRpZmllci5cbiAqL1xuY29uc3QgUFJFUkVMRUFTRV9JREVOVElGSUVSID1cbiAgYCg/OiR7TlVNRVJJQ19JREVOVElGSUVSfXwke05PTl9OVU1FUklDX0lERU5USUZJRVJ9KWA7XG5cbi8qKlxuICogQSBoeXBoZW4sIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGRvdC1zZXBhcmF0ZWQgcHJlLXJlbGVhc2UgdmVyc2lvbiBpZGVudGlmaWVycy5cbiAqIEBleGFtcGxlIFwiLXByZS5yZWxlYXNlXCJcbiAqL1xuY29uc3QgUFJFUkVMRUFTRSA9XG4gIGAoPzotKD88cHJlcmVsZWFzZT4ke1BSRVJFTEVBU0VfSURFTlRJRklFUn0oPzpcXFxcLiR7UFJFUkVMRUFTRV9JREVOVElGSUVSfSkqKSlgO1xuXG4vKipcbiAqIEFueSBjb21iaW5hdGlvbiBvZiBkaWdpdHMsIGxldHRlcnMsIG9yIGh5cGhlbnMuXG4gKi9cbmNvbnN0IEJVSUxEX0lERU5USUZJRVIgPSBcIlswLTlBLVphLXotXStcIjtcblxuLyoqXG4gKiBBIHBsdXMgc2lnbiwgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgcGVyaW9kLXNlcGFyYXRlZCBidWlsZCBtZXRhZGF0YSBpZGVudGlmaWVycy5cbiAqIEBleGFtcGxlIFwiK2J1aWxkLm1ldGFcIlxuICovXG5jb25zdCBCVUlMRCA9XG4gIGAoPzpcXFxcKyg/PGJ1aWxkbWV0YWRhdGE+JHtCVUlMRF9JREVOVElGSUVSfSg/OlxcXFwuJHtCVUlMRF9JREVOVElGSUVSfSkqKSlgO1xuXG4vKipcbiAqIEEgdmVyc2lvbiwgZm9sbG93ZWQgb3B0aW9uYWxseSBieSBhIHByZS1yZWxlYXNlIHZlcnNpb24gYW5kIGJ1aWxkIG1ldGFkYXRhLlxuICovXG5jb25zdCBGVUxMX1ZFUlNJT04gPSBgdj8ke1ZFUlNJT05fQ09SRX0ke1BSRVJFTEVBU0V9PyR7QlVJTER9P2A7XG5cbmV4cG9ydCBjb25zdCBGVUxMX1JFR0VYUCA9IG5ldyBSZWdFeHAoYF4ke0ZVTExfVkVSU0lPTn0kYCk7XG5cbi8qKlxuICogQSBjb21wYXJhdG9yLlxuICogQGV4YW1wbGUgYD1gLCBgPGAsIGA8PWAsIGA+YCwgYD49YFxuICovXG5jb25zdCBDT01QQVJBVE9SID0gXCIoPzo8fD4pPz0/XCI7XG5cbi8qKlxuICogQSB3aWxkY2FyZCBpZGVudGlmaWVyLlxuICogQGV4YW1wbGUgXCJ4XCIsIFwiWFwiLCBcIipcIlxuICovXG5jb25zdCBXSUxEQ0FSRF9JREVOVElGSUVSID0gYHh8WHxcXFxcKmA7XG5cbmNvbnN0IFhSQU5HRV9JREVOVElGSUVSID0gYCR7TlVNRVJJQ19JREVOVElGSUVSfXwke1dJTERDQVJEX0lERU5USUZJRVJ9YDtcblxuLyoqXG4gKiBBIHZlcnNpb24gdGhhdCBjYW4gY29udGFpbiB3aWxkY2FyZHMuXG4gKiBAZXhhbXBsZSBcInhcIiwgXCIxLnhcIiwgXCIxLngueFwiLCBcIjEuMi54XCIsIFwiKlwiLCBcIjEuKlwiLCBcIjEuKi4qXCIsIFwiMS4yLipcIlxuICovXG5leHBvcnQgY29uc3QgWFJBTkdFID1cbiAgYFt2PVxcXFxzXSooPzxtYWpvcj4ke1hSQU5HRV9JREVOVElGSUVSfSkoPzpcXFxcLig/PG1pbm9yPiR7WFJBTkdFX0lERU5USUZJRVJ9KSg/OlxcXFwuKD88cGF0Y2g+JHtYUkFOR0VfSURFTlRJRklFUn0pJHtQUkVSRUxFQVNFfT8ke0JVSUxEfT8pPyk/YDtcblxuLyoqXG4gKiBBbiBvcGVyYXRvciAoYH5gLCBgfj5gLCBgXmAsIGA9YCwgYDxgLCBgPD1gLCBgPmAsIG9yIGA+PWApLCBmb2xsb3dlZCBieSBhbiB4LXJhbmdlLlxuICogQGV4YW1wbGUgXCJ+MS54LnhcIiwgXCJeMS4yLipcIiwgXCI+PTEuMi4zXCJcbiAqL1xuZXhwb3J0IGNvbnN0IE9QRVJBVE9SX1hSQU5HRV9SRUdFWFAgPSBuZXcgUmVnRXhwKFxuICBgXig/PG9wZXJhdG9yPn4+P3xcXFxcXnwke0NPTVBBUkFUT1J9KVxcXFxzKiR7WFJBTkdFfSRgLFxuKTtcblxuLyoqXG4gKiBBbiBlbXB0eSBzdHJpbmcgb3IgYSBjb21wYXJhdG9yIChgPWAsIGA8YCwgYDw9YCwgYD5gLCBvciBgPj1gKSwgZm9sbG93ZWQgYnkgYSB2ZXJzaW9uLlxuICogQGV4YW1wbGUgXCI+MS4yLjNcIlxuICovXG5leHBvcnQgY29uc3QgQ09NUEFSQVRPUl9SRUdFWFAgPSBuZXcgUmVnRXhwKFxuICBgXig/PG9wZXJhdG9yPiR7Q09NUEFSQVRPUn0pXFxcXHMqKCR7RlVMTF9WRVJTSU9OfSkkfF4kYCxcbik7XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBpcyBhIHZhbGlkIFNlbVZlciBudW1iZXIuXG4gKlxuICogTXVzdCBiZSBhIG51bWJlci4gTXVzdCBub3QgYmUgTmFOLiBDYW4gYmUgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW5maW5pdHkuXG4gKiBDYW4gYmUgYmV0d2VlbiAwIGFuZCBNQVhfU0FGRV9JTlRFR0VSLlxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVja1xuICogQHJldHVybnMgVHJ1ZSBpZiBpdHMgYSB2YWxpZCBzZW12ZXIgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTnVtYmVyKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgbnVtYmVyIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiZcbiAgICAhTnVtYmVyLmlzTmFOKHZhbHVlKSAmJlxuICAgICghTnVtYmVyLmlzRmluaXRlKHZhbHVlKSB8fFxuICAgICAgKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpKVxuICApO1xufVxuXG5leHBvcnQgY29uc3QgTUFYX0xFTkdUSCA9IDI1NjtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIHZhbHVlIGlzIGEgdmFsaWQgc2VtdmVyIHByZS1yZWxlYXNlIG9yIGJ1aWxkIGlkZW50aWZpZXIuXG4gKlxuICogTXVzdCBiZSBhIHN0cmluZy4gTXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDI1NiBjaGFyYWN0ZXJzIGxvbmcuIE11c3QgbWF0Y2hcbiAqIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gL1swLTlBLVphLXotXSsvLlxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVja1xuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYSB2YWxpZCBzZW12ZXIgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFN0cmluZyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHN0cmluZyB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmXG4gICAgdmFsdWUubGVuZ3RoID4gMCAmJlxuICAgIHZhbHVlLmxlbmd0aCA8PSBNQVhfTEVOR1RIICYmXG4gICAgL1swLTlBLVphLXotXSsvLnRlc3QodmFsdWUpXG4gICk7XG59XG5cbmNvbnN0IE5VTUVSSUNfSURFTlRJRklFUl9SRUdFWFAgPSBuZXcgUmVnRXhwKGBeJHtOVU1FUklDX0lERU5USUZJRVJ9JGApO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHJlcmVsZWFzZShwcmVyZWxlYXNlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHByZXJlbGVhc2VcbiAgICAuc3BsaXQoXCIuXCIpXG4gICAgLmZpbHRlcihCb29sZWFuKVxuICAgIC5tYXAoKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChOVU1FUklDX0lERU5USUZJRVJfUkVHRVhQLnRlc3QoaWQpKSB7XG4gICAgICAgIGNvbnN0IG51bWJlciA9IE51bWJlcihpZCk7XG4gICAgICAgIGlmIChpc1ZhbGlkTnVtYmVyKG51bWJlcikpIHJldHVybiBudW1iZXI7XG4gICAgICB9XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUJ1aWxkKGJ1aWxkbWV0YWRhdGE6IHN0cmluZykge1xuICByZXR1cm4gYnVpbGRtZXRhZGF0YS5zcGxpdChcIi5cIikuZmlsdGVyKEJvb2xlYW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VOdW1iZXIoaW5wdXQ6IHN0cmluZywgZXJyb3JNZXNzYWdlOiBzdHJpbmcpIHtcbiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKGlucHV0KTtcbiAgaWYgKCFpc1ZhbGlkTnVtYmVyKG51bWJlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgcmV0dXJuIG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2lsZGNhcmRDb21wYXJhdG9yKGM6IENvbXBhcmF0b3IpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBOdW1iZXIuaXNOYU4oYy5tYWpvcikgJiYgTnVtYmVyLmlzTmFOKGMubWlub3IpICYmIE51bWJlci5pc05hTihjLnBhdGNoKSAmJlxuICAgIChjLnByZXJlbGVhc2UgPT09IHVuZGVmaW5lZCB8fCBjLnByZXJlbGVhc2UubGVuZ3RoID09PSAwKSAmJlxuICAgIChjLmJ1aWxkID09PSB1bmRlZmluZWQgfHwgYy5idWlsZC5sZW5ndGggPT09IDApXG4gICk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cbmltcG9ydCB0eXBlIHsgU2VtVmVyIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7XG4gIGNoZWNrSWRlbnRpZmllcixcbiAgY29tcGFyZUlkZW50aWZpZXIsXG4gIGNvbXBhcmVOdW1iZXIsXG59IGZyb20gXCIuL19zaGFyZWQudHNcIjtcblxuLyoqXG4gKiBDb21wYXJlIHR3byBzZW1hbnRpYyB2ZXJzaW9uIG9iamVjdHMuXG4gKlxuICogUmV0dXJucyBgMGAgaWYgYHMwID09PSBzMWAsIG9yIGAxYCBpZiBgczBgIGlzIGdyZWF0ZXIsIG9yIGAtMWAgaWYgYHMxYCBpc1xuICogZ3JlYXRlci5cbiAqXG4gKiBTb3J0cyBpbiBhc2NlbmRpbmcgb3JkZXIgaWYgcGFzc2VkIHRvIGBBcnJheS5zb3J0KClgLFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZShcbiAgczA6IFNlbVZlcixcbiAgczE6IFNlbVZlcixcbik6IDEgfCAwIHwgLTEge1xuICBpZiAoczAgPT09IHMxKSByZXR1cm4gMDtcbiAgcmV0dXJuIChcbiAgICBjb21wYXJlTnVtYmVyKHMwLm1ham9yLCBzMS5tYWpvcikgfHxcbiAgICBjb21wYXJlTnVtYmVyKHMwLm1pbm9yLCBzMS5taW5vcikgfHxcbiAgICBjb21wYXJlTnVtYmVyKHMwLnBhdGNoLCBzMS5wYXRjaCkgfHxcbiAgICBjaGVja0lkZW50aWZpZXIoczAucHJlcmVsZWFzZSwgczEucHJlcmVsZWFzZSkgfHxcbiAgICBjb21wYXJlSWRlbnRpZmllcihzMC5wcmVyZWxlYXNlLCBzMS5wcmVyZWxlYXNlKVxuICApO1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5pbXBvcnQgdHlwZSB7IENvbXBhcmF0b3IsIFNlbVZlciB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5cbi8qKlxuICogTUFYIGlzIGEgc2VudGluZWwgdmFsdWUgdXNlZCBieSBzb21lIHJhbmdlIGNhbGN1bGF0aW9ucy5cbiAqIEl0IGlzIGVxdWl2YWxlbnQgdG8gYOKIni7iiJ4u4oieYC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BWDogU2VtVmVyID0ge1xuICBtYWpvcjogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICBtaW5vcjogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICBwYXRjaDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICBwcmVyZWxlYXNlOiBbXSxcbiAgYnVpbGQ6IFtdLFxufTtcblxuLyoqXG4gKiBUaGUgbWluaW11bSB2YWxpZCBTZW1WZXIgb2JqZWN0LiBFcXVpdmFsZW50IHRvIGAwLjAuMGAuXG4gKi9cbmV4cG9ydCBjb25zdCBNSU46IFNlbVZlciA9IHtcbiAgbWFqb3I6IDAsXG4gIG1pbm9yOiAwLFxuICBwYXRjaDogMCxcbiAgcHJlcmVsZWFzZTogW10sXG4gIGJ1aWxkOiBbXSxcbn07XG5cbi8qKlxuICogQSBzZW50aW5lbCB2YWx1ZSB1c2VkIHRvIGRlbm90ZSBhbiBpbnZhbGlkIFNlbVZlciBvYmplY3RcbiAqIHdoaWNoIG1heSBiZSB0aGUgcmVzdWx0IG9mIGltcG9zc2libGUgcmFuZ2VzIG9yIGNvbXBhcmF0b3Igb3BlcmF0aW9ucy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZXF1YWxzIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vc2VtdmVyL2VxdWFscy50c1wiO1xuICogaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9zZW12ZXIvcGFyc2UudHNcIjtcbiAqIGltcG9ydCB7IElOVkFMSUQgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9zZW12ZXIvY29uc3RhbnRzLnRzXCJcbiAqIGVxdWFscyhwYXJzZShcIjEuMi4zXCIpLCBJTlZBTElEKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgSU5WQUxJRDogU2VtVmVyID0ge1xuICBtYWpvcjogTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLFxuICBtaW5vcjogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICBwYXRjaDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICBwcmVyZWxlYXNlOiBbXSxcbiAgYnVpbGQ6IFtdLFxufTtcblxuLyoqXG4gKiBBTlkgaXMgYSBzZW50aW5lbCB2YWx1ZSB1c2VkIGJ5IHNvbWUgcmFuZ2UgY2FsY3VsYXRpb25zLiBJdCBpcyBub3QgYSB2YWxpZFxuICogU2VtVmVyIG9iamVjdCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5LlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBlcXVhbHMgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9zZW12ZXIvZXF1YWxzLnRzXCI7XG4gKiBpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL3NlbXZlci9wYXJzZS50c1wiO1xuICogaW1wb3J0IHsgQU5ZIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vc2VtdmVyL2NvbnN0YW50cy50c1wiXG4gKiBlcXVhbHMocGFyc2UoXCIxLjIuM1wiKSwgQU5ZKTsgLy8gZmFsc2VcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgQU5ZOiBTZW1WZXIgPSB7XG4gIG1ham9yOiBOdW1iZXIuTmFOLFxuICBtaW5vcjogTnVtYmVyLk5hTixcbiAgcGF0Y2g6IE51bWJlci5OYU4sXG4gIHByZXJlbGVhc2U6IFtdLFxuICBidWlsZDogW10sXG59O1xuXG4vKipcbiAqIEEgY29tcGFyYXRvciB3aGljaCB3aWxsIHNwYW4gYWxsIHZhbGlkIHNlbWFudGljIHZlcnNpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBBTEw6IENvbXBhcmF0b3IgPSB7XG4gIG9wZXJhdG9yOiB1bmRlZmluZWQsXG4gIC4uLkFOWSxcbn07XG5cbi8qKlxuICogQSBjb21wYXJhdG9yIHdoaWNoIHdpbGwgbm90IHNwYW4gYW55IHNlbWFudGljIHZlcnNpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBOT05FOiBDb21wYXJhdG9yID0ge1xuICBvcGVyYXRvcjogXCI8XCIsXG4gIC4uLk1JTixcbn07XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cbmltcG9ydCB0eXBlIHsgU2VtVmVyIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IGlzV2lsZGNhcmRDb21wYXJhdG9yIH0gZnJvbSBcIi4vX3NoYXJlZC50c1wiO1xuXG5mdW5jdGlvbiBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlcikge1xuICBpZiAodmFsdWUgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkge1xuICAgIHJldHVybiBcIuKInlwiO1xuICB9IGVsc2UgaWYgKHZhbHVlID09PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpIHtcbiAgICByZXR1cm4gXCLip55cIjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWUudG9GaXhlZCgwKTtcbiAgfVxufVxuXG4vKipcbiAqIEZvcm1hdCBhIFNlbVZlciBvYmplY3QgaW50byBhIHN0cmluZy5cbiAqXG4gKiBJZiBhbnkgbnVtYmVyIGlzIE5hTiB0aGVuIE5hTiB3aWxsIGJlIHByaW50ZWQuXG4gKlxuICogSWYgYW55IG51bWJlciBpcyBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbmZpbml0eSB0aGVuICfiiJ4nIG9yICfip54nIHdpbGwgYmUgcHJpbnRlZCBpbnN0ZWFkLlxuICpcbiAqIEBwYXJhbSBzZW12ZXIgVGhlIHNlbWFudGljIHZlcnNpb24gdG8gZm9ybWF0XG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgc2VtYW50aWMgdmVyc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdChzZW12ZXI6IFNlbVZlcik6IHN0cmluZyB7XG4gIGlmIChpc1dpbGRjYXJkQ29tcGFyYXRvcihzZW12ZXIpKSB7XG4gICAgcmV0dXJuIFwiKlwiO1xuICB9XG5cbiAgY29uc3QgbWFqb3IgPSBmb3JtYXROdW1iZXIoc2VtdmVyLm1ham9yKTtcbiAgY29uc3QgbWlub3IgPSBmb3JtYXROdW1iZXIoc2VtdmVyLm1pbm9yKTtcbiAgY29uc3QgcGF0Y2ggPSBmb3JtYXROdW1iZXIoc2VtdmVyLnBhdGNoKTtcbiAgY29uc3QgcHJlID0gc2VtdmVyLnByZXJlbGVhc2U/LmpvaW4oXCIuXCIpID8/IFwiXCI7XG4gIGNvbnN0IGJ1aWxkID0gc2VtdmVyLmJ1aWxkPy5qb2luKFwiLlwiKSA/PyBcIlwiO1xuXG4gIGNvbnN0IHByaW1hcnkgPSBgJHttYWpvcn0uJHttaW5vcn0uJHtwYXRjaH1gO1xuICBjb25zdCByZWxlYXNlID0gW3ByaW1hcnksIHByZV0uZmlsdGVyKCh2KSA9PiB2KS5qb2luKFwiLVwiKTtcbiAgcmV0dXJuIFtyZWxlYXNlLCBidWlsZF0uZmlsdGVyKCh2KSA9PiB2KS5qb2luKFwiK1wiKTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuXG5pbXBvcnQgdHlwZSB7IENvbXBhcmF0b3IsIFNlbVZlciB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBpc1dpbGRjYXJkQ29tcGFyYXRvciB9IGZyb20gXCIuL19zaGFyZWQudHNcIjtcbmltcG9ydCB7IGNvbXBhcmUgfSBmcm9tIFwiLi9jb21wYXJlLnRzXCI7XG5cbmZ1bmN0aW9uIHRlc3RDb21wYXJhdG9yKHZlcnNpb246IFNlbVZlciwgY29tcGFyYXRvcjogQ29tcGFyYXRvcik6IGJvb2xlYW4ge1xuICBpZiAoaXNXaWxkY2FyZENvbXBhcmF0b3IoY29tcGFyYXRvcikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zdCBjbXAgPSBjb21wYXJlKHZlcnNpb24sIGNvbXBhcmF0b3IpO1xuICBzd2l0Y2ggKGNvbXBhcmF0b3Iub3BlcmF0b3IpIHtcbiAgICBjYXNlIFwiPVwiOlxuICAgIGNhc2UgdW5kZWZpbmVkOiB7XG4gICAgICByZXR1cm4gY21wID09PSAwO1xuICAgIH1cbiAgICBjYXNlIFwiIT1cIjoge1xuICAgICAgcmV0dXJuIGNtcCAhPT0gMDtcbiAgICB9XG4gICAgY2FzZSBcIj5cIjoge1xuICAgICAgcmV0dXJuIGNtcCA+IDA7XG4gICAgfVxuICAgIGNhc2UgXCI8XCI6IHtcbiAgICAgIHJldHVybiBjbXAgPCAwO1xuICAgIH1cbiAgICBjYXNlIFwiPj1cIjoge1xuICAgICAgcmV0dXJuIGNtcCA+PSAwO1xuICAgIH1cbiAgICBjYXNlIFwiPD1cIjoge1xuICAgICAgcmV0dXJuIGNtcCA8PSAwO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVzdENvbXBhcmF0b3JTZXQoXG4gIHZlcnNpb246IFNlbVZlcixcbiAgc2V0OiBDb21wYXJhdG9yW10sXG4pOiBib29sZWFuIHtcbiAgZm9yIChjb25zdCBjb21wYXJhdG9yIG9mIHNldCkge1xuICAgIGlmICghdGVzdENvbXBhcmF0b3IodmVyc2lvbiwgY29tcGFyYXRvcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKHZlcnNpb24ucHJlcmVsZWFzZSAmJiB2ZXJzaW9uLnByZXJlbGVhc2UubGVuZ3RoID4gMCkge1xuICAgIC8vIEZpbmQgdGhlIGNvbXBhcmF0b3IgdGhhdCBpcyBhbGxvd2VkIHRvIGhhdmUgcHJlcmVsZWFzZXNcbiAgICAvLyBGb3IgZXhhbXBsZSwgXjEuMi4zLXByLjEgZGVzdWdhcnMgdG8gPj0xLjIuMy1wci4xIDwyLjAuMFxuICAgIC8vIFRoYXQgc2hvdWxkIGFsbG93IGAxLjIuMy1wci4yYCB0byBwYXNzLlxuICAgIC8vIEhvd2V2ZXIsIGAxLjIuNC1hbHBoYS5ub3RyZWFkeWAgc2hvdWxkIE5PVCBiZSBhbGxvd2VkLFxuICAgIC8vIGV2ZW4gdGhvdWdoIGl0J3Mgd2l0aGluIHRoZSByYW5nZSBzZXQgYnkgdGhlIGNvbXBhcmF0b3JzLlxuICAgIGZvciAoY29uc3QgY29tcGFyYXRvciBvZiBzZXQpIHtcbiAgICAgIGlmIChpc1dpbGRjYXJkQ29tcGFyYXRvcihjb21wYXJhdG9yKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgbWFqb3IsIG1pbm9yLCBwYXRjaCwgcHJlcmVsZWFzZSB9ID0gY29tcGFyYXRvcjtcbiAgICAgIGlmIChwcmVyZWxlYXNlICYmIHByZXJlbGVhc2UubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdmVyc2lvbi5tYWpvciA9PT0gbWFqb3IgJiYgdmVyc2lvbi5taW5vciA9PT0gbWlub3IgJiZcbiAgICAgICAgICB2ZXJzaW9uLnBhdGNoID09PSBwYXRjaFxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cblxuaW1wb3J0IHR5cGUgeyBSYW5nZSwgU2VtVmVyIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IHRlc3RDb21wYXJhdG9yU2V0IH0gZnJvbSBcIi4vX3Rlc3RfY29tcGFyYXRvcl9zZXQudHNcIjtcblxuLyoqXG4gKiBUZXN0IHRvIHNlZSBpZiB0aGUgdmVyc2lvbiBzYXRpc2ZpZXMgdGhlIHJhbmdlLlxuICogQHBhcmFtIHZlcnNpb24gVGhlIHZlcnNpb24gdG8gdGVzdFxuICogQHBhcmFtIHJhbmdlIFRoZSByYW5nZSB0byBjaGVja1xuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgdmVyc2lvbiBpcyBpbiB0aGUgcmFuZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhdGlzZmllcyhcbiAgdmVyc2lvbjogU2VtVmVyLFxuICByYW5nZTogUmFuZ2UsXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHJhbmdlLnNvbWUoKHNldCkgPT4gdGVzdENvbXBhcmF0b3JTZXQodmVyc2lvbiwgc2V0KSk7XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHR5cGUgeyBTZW1WZXIgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuaW1wb3J0IHsgY29tcGFyZSB9IGZyb20gXCIuL2NvbXBhcmUudHNcIjtcblxuLyoqXG4gKiBHcmVhdGVyIHRoYW4gY29tcGFyaXNvblxuICpcbiAqIFRoaXMgaXMgZXF1YWwgdG8gYGNvbXBhcmUoczAsIHMxKSA+IDBgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3JlYXRlclRoYW4oczA6IFNlbVZlciwgczE6IFNlbVZlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29tcGFyZShzMCwgczEpID4gMDtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuaW1wb3J0IHR5cGUgeyBSYW5nZSwgU2VtVmVyIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IHNhdGlzZmllcyB9IGZyb20gXCIuL3NhdGlzZmllcy50c1wiO1xuaW1wb3J0IHsgZ3JlYXRlclRoYW4gfSBmcm9tIFwiLi9ncmVhdGVyX3RoYW4udHNcIjtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBoaWdoZXN0IHZlcnNpb24gaW4gdGhlIGxpc3QgdGhhdCBzYXRpc2ZpZXMgdGhlIHJhbmdlLCBvciBgdW5kZWZpbmVkYFxuICogaWYgbm9uZSBvZiB0aGVtIGRvLlxuICogQHBhcmFtIHZlcnNpb25zIFRoZSB2ZXJzaW9ucyB0byBjaGVjay5cbiAqIEBwYXJhbSByYW5nZSBUaGUgcmFuZ2Ugb2YgcG9zc2libGUgdmVyc2lvbnMgdG8gY29tcGFyZSB0by5cbiAqIEByZXR1cm5zIFRoZSBoaWdoZXN0IHZlcnNpb24gaW4gdmVyc2lvbnMgdGhhdCBzYXRpc2ZpZXMgdGhlIHJhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWF4U2F0aXNmeWluZyhcbiAgdmVyc2lvbnM6IFNlbVZlcltdLFxuICByYW5nZTogUmFuZ2UsXG4pOiBTZW1WZXIgfCB1bmRlZmluZWQge1xuICBsZXQgbWF4O1xuICBmb3IgKGNvbnN0IHZlcnNpb24gb2YgdmVyc2lvbnMpIHtcbiAgICBpZiAoIXNhdGlzZmllcyh2ZXJzaW9uLCByYW5nZSkpIGNvbnRpbnVlO1xuICAgIG1heCA9IG1heCAmJiBncmVhdGVyVGhhbihtYXgsIHZlcnNpb24pID8gbWF4IDogdmVyc2lvbjtcbiAgfVxuICByZXR1cm4gbWF4O1xufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7XG4gIENPTVBBUkFUT1JfUkVHRVhQLFxuICBPUEVSQVRPUl9YUkFOR0VfUkVHRVhQLFxuICBwYXJzZUJ1aWxkLFxuICBwYXJzZU51bWJlcixcbiAgcGFyc2VQcmVyZWxlYXNlLFxuICBYUkFOR0UsXG59IGZyb20gXCIuL19zaGFyZWQudHNcIjtcbmltcG9ydCB7IEFMTCwgQU5ZLCBOT05FIH0gZnJvbSBcIi4vY29uc3RhbnRzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBhcmF0b3IsIE9wZXJhdG9yLCBSYW5nZSB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5cbnR5cGUgQ29tcGFyYXRvclJlZ0V4cEdyb3VwID0ge1xuICBvcGVyYXRvcjogT3BlcmF0b3I7XG4gIG1ham9yOiBzdHJpbmc7XG4gIG1pbm9yOiBzdHJpbmc7XG4gIHBhdGNoOiBzdHJpbmc7XG4gIHByZXJlbGVhc2U6IHN0cmluZztcbiAgYnVpbGRtZXRhZGF0YTogc3RyaW5nO1xufTtcblxuZnVuY3Rpb24gcGFyc2VDb21wYXJhdG9yKGNvbXBhcmF0b3I6IHN0cmluZyk6IENvbXBhcmF0b3Ige1xuICBjb25zdCBtYXRjaCA9IGNvbXBhcmF0b3IubWF0Y2goQ09NUEFSQVRPUl9SRUdFWFApO1xuICBjb25zdCBncm91cHMgPSBtYXRjaD8uZ3JvdXBzO1xuXG4gIGlmICghZ3JvdXBzKSByZXR1cm4gTk9ORTtcblxuICBjb25zdCB7IG9wZXJhdG9yLCBwcmVyZWxlYXNlLCBidWlsZG1ldGFkYXRhIH0gPVxuICAgIGdyb3VwcyBhcyBDb21wYXJhdG9yUmVnRXhwR3JvdXA7XG5cbiAgY29uc3Qgc2VtdmVyID0gZ3JvdXBzLm1ham9yXG4gICAgPyB7XG4gICAgICBtYWpvcjogcGFyc2VOdW1iZXIoZ3JvdXBzLm1ham9yLCBcIkludmFsaWQgbWFqb3IgdmVyc2lvblwiKSxcbiAgICAgIG1pbm9yOiBwYXJzZU51bWJlcihcbiAgICAgICAgZ3JvdXBzLm1pbm9yISxcbiAgICAgICAgXCJJbnZhbGlkIG1pbm9yIHZlcnNpb25cIixcbiAgICAgICksXG4gICAgICBwYXRjaDogcGFyc2VOdW1iZXIoXG4gICAgICAgIGdyb3Vwcy5wYXRjaCEsXG4gICAgICAgIFwiSW52YWxpZCBwYXRjaCB2ZXJzaW9uXCIsXG4gICAgICApLFxuICAgICAgcHJlcmVsZWFzZTogcHJlcmVsZWFzZSA/IHBhcnNlUHJlcmVsZWFzZShwcmVyZWxlYXNlKSA6IFtdLFxuICAgICAgYnVpbGQ6IGJ1aWxkbWV0YWRhdGEgPyBwYXJzZUJ1aWxkKGJ1aWxkbWV0YWRhdGEpIDogW10sXG4gICAgfVxuICAgIDogQU5ZO1xuXG4gIHJldHVybiB7IG9wZXJhdG9yOiBvcGVyYXRvciB8fCB1bmRlZmluZWQsIC4uLnNlbXZlciB9O1xufVxuXG5mdW5jdGlvbiBpc1dpbGRjYXJkKGlkPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAhaWQgfHwgaWQudG9Mb3dlckNhc2UoKSA9PT0gXCJ4XCIgfHwgaWQgPT09IFwiKlwiO1xufVxuXG50eXBlIFJhbmdlUmVnRXhwR3JvdXBzID0ge1xuICBvcGVyYXRvcjogc3RyaW5nO1xuICBtYWpvcjogc3RyaW5nO1xuICBtaW5vcjogc3RyaW5nO1xuICBwYXRjaDogc3RyaW5nO1xuICBwcmVyZWxlYXNlPzogc3RyaW5nO1xuICBidWlsZD86IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIGhhbmRsZUxlZnRIeXBoZW5SYW5nZUdyb3VwcyhcbiAgbGVmdEdyb3VwOiBSYW5nZVJlZ0V4cEdyb3Vwcyxcbik6IENvbXBhcmF0b3IgfCB1bmRlZmluZWQge1xuICBpZiAoaXNXaWxkY2FyZChsZWZ0R3JvdXAubWFqb3IpKSByZXR1cm47XG4gIGlmIChpc1dpbGRjYXJkKGxlZnRHcm91cC5taW5vcikpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb3BlcmF0b3I6IFwiPj1cIixcbiAgICAgIG1ham9yOiArbGVmdEdyb3VwLm1ham9yLFxuICAgICAgbWlub3I6IDAsXG4gICAgICBwYXRjaDogMCxcbiAgICAgIHByZXJlbGVhc2U6IFtdLFxuICAgICAgYnVpbGQ6IFtdLFxuICAgIH07XG4gIH1cbiAgaWYgKGlzV2lsZGNhcmQobGVmdEdyb3VwLnBhdGNoKSkge1xuICAgIHJldHVybiB7XG4gICAgICBvcGVyYXRvcjogXCI+PVwiLFxuICAgICAgbWFqb3I6ICtsZWZ0R3JvdXAubWFqb3IsXG4gICAgICBtaW5vcjogK2xlZnRHcm91cC5taW5vcixcbiAgICAgIHBhdGNoOiAwLFxuICAgICAgcHJlcmVsZWFzZTogW10sXG4gICAgICBidWlsZDogW10sXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG9wZXJhdG9yOiBcIj49XCIsXG4gICAgbWFqb3I6ICtsZWZ0R3JvdXAubWFqb3IsXG4gICAgbWlub3I6ICtsZWZ0R3JvdXAubWlub3IsXG4gICAgcGF0Y2g6ICtsZWZ0R3JvdXAucGF0Y2gsXG4gICAgcHJlcmVsZWFzZTogbGVmdEdyb3VwLnByZXJlbGVhc2VcbiAgICAgID8gcGFyc2VQcmVyZWxlYXNlKGxlZnRHcm91cC5wcmVyZWxlYXNlKVxuICAgICAgOiBbXSxcbiAgICBidWlsZDogW10sXG4gIH07XG59XG5mdW5jdGlvbiBoYW5kbGVSaWdodEh5cGhlblJhbmdlR3JvdXBzKFxuICByaWdodEdyb3VwczogUmFuZ2VSZWdFeHBHcm91cHMsXG4pOiBDb21wYXJhdG9yIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGlzV2lsZGNhcmQocmlnaHRHcm91cHMubWFqb3IpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChpc1dpbGRjYXJkKHJpZ2h0R3JvdXBzLm1pbm9yKSkge1xuICAgIHJldHVybiB7XG4gICAgICBvcGVyYXRvcjogXCI8XCIsXG4gICAgICBtYWpvcjogK3JpZ2h0R3JvdXBzLm1ham9yISArIDEsXG4gICAgICBtaW5vcjogMCxcbiAgICAgIHBhdGNoOiAwLFxuICAgICAgcHJlcmVsZWFzZTogW10sXG4gICAgICBidWlsZDogW10sXG4gICAgfTtcbiAgfVxuICBpZiAoaXNXaWxkY2FyZChyaWdodEdyb3Vwcy5wYXRjaCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb3BlcmF0b3I6IFwiPFwiLFxuICAgICAgbWFqb3I6ICtyaWdodEdyb3Vwcy5tYWpvcixcbiAgICAgIG1pbm9yOiArcmlnaHRHcm91cHMubWlub3IhICsgMSxcbiAgICAgIHBhdGNoOiAwLFxuICAgICAgcHJlcmVsZWFzZTogW10sXG4gICAgICBidWlsZDogW10sXG4gICAgfTtcbiAgfVxuICBpZiAocmlnaHRHcm91cHMucHJlcmVsZWFzZSkge1xuICAgIHJldHVybiB7XG4gICAgICBvcGVyYXRvcjogXCI8PVwiLFxuICAgICAgbWFqb3I6ICtyaWdodEdyb3Vwcy5tYWpvcixcbiAgICAgIG1pbm9yOiArcmlnaHRHcm91cHMubWlub3IsXG4gICAgICBwYXRjaDogK3JpZ2h0R3JvdXBzLnBhdGNoLFxuICAgICAgcHJlcmVsZWFzZTogcGFyc2VQcmVyZWxlYXNlKHJpZ2h0R3JvdXBzLnByZXJlbGVhc2UpLFxuICAgICAgYnVpbGQ6IFtdLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBvcGVyYXRvcjogXCI8PVwiLFxuICAgIG1ham9yOiArcmlnaHRHcm91cHMubWFqb3IsXG4gICAgbWlub3I6ICtyaWdodEdyb3Vwcy5taW5vcixcbiAgICBwYXRjaDogK3JpZ2h0R3JvdXBzLnBhdGNoLFxuICAgIHByZXJlbGVhc2U6IHJpZ2h0R3JvdXBzLnByZXJlbGVhc2VcbiAgICAgID8gcGFyc2VQcmVyZWxlYXNlKHJpZ2h0R3JvdXBzLnByZXJlbGVhc2UpXG4gICAgICA6IFtdLFxuICAgIGJ1aWxkOiBbXSxcbiAgfTtcbn1cbmZ1bmN0aW9uIHBhcnNlSHlwaGVuUmFuZ2UocmFuZ2U6IHN0cmluZyk6IENvbXBhcmF0b3JbXSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGxlZnRNYXRjaCA9IHJhbmdlLm1hdGNoKG5ldyBSZWdFeHAoYF4ke1hSQU5HRX1gKSk7XG4gIGNvbnN0IGxlZnRHcm91cCA9IGxlZnRNYXRjaD8uZ3JvdXBzO1xuICBpZiAoIWxlZnRHcm91cCkgcmV0dXJuO1xuICBjb25zdCBsZWZ0TGVuZ3RoID0gbGVmdE1hdGNoWzBdLmxlbmd0aDtcblxuICBjb25zdCBoeXBoZW5NYXRjaCA9IHJhbmdlLnNsaWNlKGxlZnRMZW5ndGgpLm1hdGNoKC9eXFxzKy1cXHMrLyk7XG4gIGlmICghaHlwaGVuTWF0Y2gpIHJldHVybjtcbiAgY29uc3QgaHlwaGVuTGVuZ3RoID0gaHlwaGVuTWF0Y2hbMF0ubGVuZ3RoO1xuXG4gIGNvbnN0IHJpZ2h0TWF0Y2ggPSByYW5nZS5zbGljZShsZWZ0TGVuZ3RoICsgaHlwaGVuTGVuZ3RoKS5tYXRjaChcbiAgICBuZXcgUmVnRXhwKGBeJHtYUkFOR0V9XFxcXHMqJGApLFxuICApO1xuICBjb25zdCByaWdodEdyb3VwcyA9IHJpZ2h0TWF0Y2g/Lmdyb3VwcztcbiAgaWYgKCFyaWdodEdyb3VwcykgcmV0dXJuO1xuXG4gIGNvbnN0IGZyb20gPSBoYW5kbGVMZWZ0SHlwaGVuUmFuZ2VHcm91cHMobGVmdEdyb3VwIGFzIFJhbmdlUmVnRXhwR3JvdXBzKTtcbiAgY29uc3QgdG8gPSBoYW5kbGVSaWdodEh5cGhlblJhbmdlR3JvdXBzKHJpZ2h0R3JvdXBzIGFzIFJhbmdlUmVnRXhwR3JvdXBzKTtcbiAgcmV0dXJuIFtmcm9tLCB0b10uZmlsdGVyKEJvb2xlYW4pIGFzIENvbXBhcmF0b3JbXTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlQ2FyZXRPcGVyYXRvcihncm91cHM6IFJhbmdlUmVnRXhwR3JvdXBzKTogQ29tcGFyYXRvcltdIHtcbiAgY29uc3QgbWFqb3JJc1dpbGRjYXJkID0gaXNXaWxkY2FyZChncm91cHMubWFqb3IpO1xuICBjb25zdCBtaW5vcklzV2lsZGNhcmQgPSBpc1dpbGRjYXJkKGdyb3Vwcy5taW5vcik7XG4gIGNvbnN0IHBhdGNoSXNXaWxkY2FyZCA9IGlzV2lsZGNhcmQoZ3JvdXBzLnBhdGNoKTtcblxuICBjb25zdCBtYWpvciA9ICtncm91cHMubWFqb3I7XG4gIGNvbnN0IG1pbm9yID0gK2dyb3Vwcy5taW5vcjtcbiAgY29uc3QgcGF0Y2ggPSArZ3JvdXBzLnBhdGNoO1xuXG4gIGlmIChtYWpvcklzV2lsZGNhcmQpIHJldHVybiBbQUxMXTtcbiAgaWYgKG1pbm9ySXNXaWxkY2FyZCkge1xuICAgIHJldHVybiBbXG4gICAgICB7IG9wZXJhdG9yOiBcIj49XCIsIG1ham9yLCBtaW5vcjogMCwgcGF0Y2g6IDAgfSxcbiAgICAgIHsgb3BlcmF0b3I6IFwiPFwiLCBtYWpvcjogbWFqb3IgKyAxLCBtaW5vcjogMCwgcGF0Y2g6IDAgfSxcbiAgICBdO1xuICB9XG4gIGlmIChwYXRjaElzV2lsZGNhcmQpIHtcbiAgICBpZiAobWFqb3IgPT09IDApIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHsgb3BlcmF0b3I6IFwiPj1cIiwgbWFqb3IsIG1pbm9yLCBwYXRjaDogMCB9LFxuICAgICAgICB7IG9wZXJhdG9yOiBcIjxcIiwgbWFqb3IsIG1pbm9yOiBtaW5vciArIDEsIHBhdGNoOiAwIH0sXG4gICAgICBdO1xuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgeyBvcGVyYXRvcjogXCI+PVwiLCBtYWpvciwgbWlub3IsIHBhdGNoOiAwIH0sXG4gICAgICB7IG9wZXJhdG9yOiBcIjxcIiwgbWFqb3I6IG1ham9yICsgMSwgbWlub3I6IDAsIHBhdGNoOiAwIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IHByZXJlbGVhc2UgPSBwYXJzZVByZXJlbGVhc2UoZ3JvdXBzLnByZXJlbGVhc2UgPz8gXCJcIik7XG4gIGlmIChtYWpvciA9PT0gMCkge1xuICAgIGlmIChtaW5vciA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgeyBvcGVyYXRvcjogXCI+PVwiLCBtYWpvciwgbWlub3IsIHBhdGNoLCBwcmVyZWxlYXNlIH0sXG4gICAgICAgIHsgb3BlcmF0b3I6IFwiPFwiLCBtYWpvciwgbWlub3IsIHBhdGNoOiBwYXRjaCArIDEgfSxcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICB7IG9wZXJhdG9yOiBcIj49XCIsIG1ham9yLCBtaW5vciwgcGF0Y2gsIHByZXJlbGVhc2UgfSxcbiAgICAgIHsgb3BlcmF0b3I6IFwiPFwiLCBtYWpvciwgbWlub3I6IG1pbm9yICsgMSwgcGF0Y2g6IDAgfSxcbiAgICBdO1xuICB9XG4gIHJldHVybiBbXG4gICAgeyBvcGVyYXRvcjogXCI+PVwiLCBtYWpvciwgbWlub3IsIHBhdGNoLCBwcmVyZWxlYXNlIH0sXG4gICAgeyBvcGVyYXRvcjogXCI8XCIsIG1ham9yOiBtYWpvciArIDEsIG1pbm9yOiAwLCBwYXRjaDogMCB9LFxuICBdO1xufVxuZnVuY3Rpb24gaGFuZGxlVGlsZGVPcGVyYXRvcihncm91cHM6IFJhbmdlUmVnRXhwR3JvdXBzKTogQ29tcGFyYXRvcltdIHtcbiAgY29uc3QgbWFqb3JJc1dpbGRjYXJkID0gaXNXaWxkY2FyZChncm91cHMubWFqb3IpO1xuICBjb25zdCBtaW5vcklzV2lsZGNhcmQgPSBpc1dpbGRjYXJkKGdyb3Vwcy5taW5vcik7XG4gIGNvbnN0IHBhdGNoSXNXaWxkY2FyZCA9IGlzV2lsZGNhcmQoZ3JvdXBzLnBhdGNoKTtcblxuICBjb25zdCBtYWpvciA9ICtncm91cHMubWFqb3I7XG4gIGNvbnN0IG1pbm9yID0gK2dyb3Vwcy5taW5vcjtcbiAgY29uc3QgcGF0Y2ggPSArZ3JvdXBzLnBhdGNoO1xuXG4gIGlmIChtYWpvcklzV2lsZGNhcmQpIHJldHVybiBbQUxMXTtcbiAgaWYgKG1pbm9ySXNXaWxkY2FyZCkge1xuICAgIHJldHVybiBbXG4gICAgICB7IG9wZXJhdG9yOiBcIj49XCIsIG1ham9yLCBtaW5vcjogMCwgcGF0Y2g6IDAgfSxcbiAgICAgIHsgb3BlcmF0b3I6IFwiPFwiLCBtYWpvcjogbWFqb3IgKyAxLCBtaW5vcjogMCwgcGF0Y2g6IDAgfSxcbiAgICBdO1xuICB9XG4gIGlmIChwYXRjaElzV2lsZGNhcmQpIHtcbiAgICByZXR1cm4gW1xuICAgICAgeyBvcGVyYXRvcjogXCI+PVwiLCBtYWpvciwgbWlub3IsIHBhdGNoOiAwIH0sXG4gICAgICB7IG9wZXJhdG9yOiBcIjxcIiwgbWFqb3IsIG1pbm9yOiBtaW5vciArIDEsIHBhdGNoOiAwIH0sXG4gICAgXTtcbiAgfVxuICBjb25zdCBwcmVyZWxlYXNlID0gcGFyc2VQcmVyZWxlYXNlKGdyb3Vwcy5wcmVyZWxlYXNlID8/IFwiXCIpO1xuICByZXR1cm4gW1xuICAgIHsgb3BlcmF0b3I6IFwiPj1cIiwgbWFqb3IsIG1pbm9yLCBwYXRjaCwgcHJlcmVsZWFzZSB9LFxuICAgIHsgb3BlcmF0b3I6IFwiPFwiLCBtYWpvciwgbWlub3I6IG1pbm9yICsgMSwgcGF0Y2g6IDAgfSxcbiAgXTtcbn1cbmZ1bmN0aW9uIGhhbmRsZUxlc3NUaGFuT3BlcmF0b3IoZ3JvdXBzOiBSYW5nZVJlZ0V4cEdyb3Vwcyk6IENvbXBhcmF0b3JbXSB7XG4gIGNvbnN0IG1ham9ySXNXaWxkY2FyZCA9IGlzV2lsZGNhcmQoZ3JvdXBzLm1ham9yKTtcbiAgY29uc3QgbWlub3JJc1dpbGRjYXJkID0gaXNXaWxkY2FyZChncm91cHMubWlub3IpO1xuICBjb25zdCBwYXRjaElzV2lsZGNhcmQgPSBpc1dpbGRjYXJkKGdyb3Vwcy5wYXRjaCk7XG5cbiAgY29uc3QgbWFqb3IgPSArZ3JvdXBzLm1ham9yO1xuICBjb25zdCBtaW5vciA9ICtncm91cHMubWlub3I7XG4gIGNvbnN0IHBhdGNoID0gK2dyb3Vwcy5wYXRjaDtcblxuICBpZiAobWFqb3JJc1dpbGRjYXJkKSByZXR1cm4gW3sgb3BlcmF0b3I6IFwiPFwiLCBtYWpvcjogMCwgbWlub3I6IDAsIHBhdGNoOiAwIH1dO1xuICBpZiAobWlub3JJc1dpbGRjYXJkKSB7XG4gICAgaWYgKHBhdGNoSXNXaWxkY2FyZCkgcmV0dXJuIFt7IG9wZXJhdG9yOiBcIjxcIiwgbWFqb3IsIG1pbm9yOiAwLCBwYXRjaDogMCB9XTtcbiAgICByZXR1cm4gW3sgb3BlcmF0b3I6IFwiPFwiLCBtYWpvciwgbWlub3IsIHBhdGNoOiAwIH1dO1xuICB9XG4gIGlmIChwYXRjaElzV2lsZGNhcmQpIHJldHVybiBbeyBvcGVyYXRvcjogXCI8XCIsIG1ham9yLCBtaW5vciwgcGF0Y2g6IDAgfV07XG4gIGNvbnN0IHByZXJlbGVhc2UgPSBwYXJzZVByZXJlbGVhc2UoZ3JvdXBzLnByZXJlbGVhc2UgPz8gXCJcIik7XG4gIGNvbnN0IGJ1aWxkID0gcGFyc2VCdWlsZChncm91cHMuYnVpbGQgPz8gXCJcIik7XG4gIHJldHVybiBbeyBvcGVyYXRvcjogXCI8XCIsIG1ham9yLCBtaW5vciwgcGF0Y2gsIHByZXJlbGVhc2UsIGJ1aWxkIH1dO1xufVxuZnVuY3Rpb24gaGFuZGxlTGVzc1RoYW5PckVxdWFsT3BlcmF0b3IoXG4gIGdyb3VwczogUmFuZ2VSZWdFeHBHcm91cHMsXG4pOiBDb21wYXJhdG9yW10ge1xuICBjb25zdCBtaW5vcklzV2lsZGNhcmQgPSBpc1dpbGRjYXJkKGdyb3Vwcy5taW5vcik7XG4gIGNvbnN0IHBhdGNoSXNXaWxkY2FyZCA9IGlzV2lsZGNhcmQoZ3JvdXBzLnBhdGNoKTtcblxuICBjb25zdCBtYWpvciA9ICtncm91cHMubWFqb3I7XG4gIGNvbnN0IG1pbm9yID0gK2dyb3Vwcy5taW5vcjtcbiAgY29uc3QgcGF0Y2ggPSArZ3JvdXBzLnBhdGNoO1xuXG4gIGlmIChtaW5vcklzV2lsZGNhcmQpIHtcbiAgICBpZiAocGF0Y2hJc1dpbGRjYXJkKSB7XG4gICAgICByZXR1cm4gW3sgb3BlcmF0b3I6IFwiPFwiLCBtYWpvcjogbWFqb3IgKyAxLCBtaW5vcjogMCwgcGF0Y2g6IDAgfV07XG4gICAgfVxuICAgIHJldHVybiBbeyBvcGVyYXRvcjogXCI8XCIsIG1ham9yLCBtaW5vcjogbWlub3IgKyAxLCBwYXRjaDogMCB9XTtcbiAgfVxuICBpZiAocGF0Y2hJc1dpbGRjYXJkKSB7XG4gICAgcmV0dXJuIFt7IG9wZXJhdG9yOiBcIjxcIiwgbWFqb3IsIG1pbm9yOiBtaW5vciArIDEsIHBhdGNoOiAwIH1dO1xuICB9XG4gIGNvbnN0IHByZXJlbGVhc2UgPSBwYXJzZVByZXJlbGVhc2UoZ3JvdXBzLnByZXJlbGVhc2UgPz8gXCJcIik7XG4gIGNvbnN0IGJ1aWxkID0gcGFyc2VCdWlsZChncm91cHMuYnVpbGQgPz8gXCJcIik7XG4gIHJldHVybiBbeyBvcGVyYXRvcjogXCI8PVwiLCBtYWpvciwgbWlub3IsIHBhdGNoLCBwcmVyZWxlYXNlLCBidWlsZCB9XTtcbn1cbmZ1bmN0aW9uIGhhbmRsZUdyZWF0ZXJUaGFuT3BlcmF0b3IoZ3JvdXBzOiBSYW5nZVJlZ0V4cEdyb3Vwcyk6IENvbXBhcmF0b3JbXSB7XG4gIGNvbnN0IG1ham9ySXNXaWxkY2FyZCA9IGlzV2lsZGNhcmQoZ3JvdXBzLm1ham9yKTtcbiAgY29uc3QgbWlub3JJc1dpbGRjYXJkID0gaXNXaWxkY2FyZChncm91cHMubWlub3IpO1xuICBjb25zdCBwYXRjaElzV2lsZGNhcmQgPSBpc1dpbGRjYXJkKGdyb3Vwcy5wYXRjaCk7XG5cbiAgY29uc3QgbWFqb3IgPSArZ3JvdXBzLm1ham9yO1xuICBjb25zdCBtaW5vciA9ICtncm91cHMubWlub3I7XG4gIGNvbnN0IHBhdGNoID0gK2dyb3Vwcy5wYXRjaDtcblxuICBpZiAobWFqb3JJc1dpbGRjYXJkKSByZXR1cm4gW3sgb3BlcmF0b3I6IFwiPFwiLCBtYWpvcjogMCwgbWlub3I6IDAsIHBhdGNoOiAwIH1dO1xuXG4gIGlmIChtaW5vcklzV2lsZGNhcmQpIHtcbiAgICByZXR1cm4gW3sgb3BlcmF0b3I6IFwiPj1cIiwgbWFqb3I6IG1ham9yICsgMSwgbWlub3I6IDAsIHBhdGNoOiAwIH1dO1xuICB9XG4gIGlmIChwYXRjaElzV2lsZGNhcmQpIHtcbiAgICByZXR1cm4gW3sgb3BlcmF0b3I6IFwiPj1cIiwgbWFqb3IsIG1pbm9yOiBtaW5vciArIDEsIHBhdGNoOiAwIH1dO1xuICB9XG4gIGNvbnN0IHByZXJlbGVhc2UgPSBwYXJzZVByZXJlbGVhc2UoZ3JvdXBzLnByZXJlbGVhc2UgPz8gXCJcIik7XG4gIGNvbnN0IGJ1aWxkID0gcGFyc2VCdWlsZChncm91cHMuYnVpbGQgPz8gXCJcIik7XG4gIHJldHVybiBbeyBvcGVyYXRvcjogXCI+XCIsIG1ham9yLCBtaW5vciwgcGF0Y2gsIHByZXJlbGVhc2UsIGJ1aWxkIH1dO1xufVxuZnVuY3Rpb24gaGFuZGxlR3JlYXRlck9yRXF1YWxPcGVyYXRvcihncm91cHM6IFJhbmdlUmVnRXhwR3JvdXBzKTogQ29tcGFyYXRvcltdIHtcbiAgY29uc3QgbWFqb3JJc1dpbGRjYXJkID0gaXNXaWxkY2FyZChncm91cHMubWFqb3IpO1xuICBjb25zdCBtaW5vcklzV2lsZGNhcmQgPSBpc1dpbGRjYXJkKGdyb3Vwcy5taW5vcik7XG4gIGNvbnN0IHBhdGNoSXNXaWxkY2FyZCA9IGlzV2lsZGNhcmQoZ3JvdXBzLnBhdGNoKTtcblxuICBjb25zdCBtYWpvciA9ICtncm91cHMubWFqb3I7XG4gIGNvbnN0IG1pbm9yID0gK2dyb3Vwcy5taW5vcjtcbiAgY29uc3QgcGF0Y2ggPSArZ3JvdXBzLnBhdGNoO1xuXG4gIGlmIChtYWpvcklzV2lsZGNhcmQpIHJldHVybiBbQUxMXTtcbiAgaWYgKG1pbm9ySXNXaWxkY2FyZCkge1xuICAgIGlmIChwYXRjaElzV2lsZGNhcmQpIHJldHVybiBbeyBvcGVyYXRvcjogXCI+PVwiLCBtYWpvciwgbWlub3I6IDAsIHBhdGNoOiAwIH1dO1xuICAgIHJldHVybiBbeyBvcGVyYXRvcjogXCI+PVwiLCBtYWpvciwgbWlub3IsIHBhdGNoOiAwIH1dO1xuICB9XG4gIGlmIChwYXRjaElzV2lsZGNhcmQpIHJldHVybiBbeyBvcGVyYXRvcjogXCI+PVwiLCBtYWpvciwgbWlub3IsIHBhdGNoOiAwIH1dO1xuICBjb25zdCBwcmVyZWxlYXNlID0gcGFyc2VQcmVyZWxlYXNlKGdyb3Vwcy5wcmVyZWxlYXNlID8/IFwiXCIpO1xuICBjb25zdCBidWlsZCA9IHBhcnNlQnVpbGQoZ3JvdXBzLmJ1aWxkID8/IFwiXCIpO1xuICByZXR1cm4gW3sgb3BlcmF0b3I6IFwiPj1cIiwgbWFqb3IsIG1pbm9yLCBwYXRjaCwgcHJlcmVsZWFzZSwgYnVpbGQgfV07XG59XG5mdW5jdGlvbiBoYW5kbGVFcXVhbE9wZXJhdG9yKGdyb3VwczogUmFuZ2VSZWdFeHBHcm91cHMpOiBDb21wYXJhdG9yW10ge1xuICBjb25zdCBtYWpvcklzV2lsZGNhcmQgPSBpc1dpbGRjYXJkKGdyb3Vwcy5tYWpvcik7XG4gIGNvbnN0IG1pbm9ySXNXaWxkY2FyZCA9IGlzV2lsZGNhcmQoZ3JvdXBzLm1pbm9yKTtcbiAgY29uc3QgcGF0Y2hJc1dpbGRjYXJkID0gaXNXaWxkY2FyZChncm91cHMucGF0Y2gpO1xuXG4gIGNvbnN0IG1ham9yID0gK2dyb3Vwcy5tYWpvcjtcbiAgY29uc3QgbWlub3IgPSArZ3JvdXBzLm1pbm9yO1xuICBjb25zdCBwYXRjaCA9ICtncm91cHMucGF0Y2g7XG5cbiAgaWYgKG1ham9ySXNXaWxkY2FyZCkgcmV0dXJuIFtBTExdO1xuICBpZiAobWlub3JJc1dpbGRjYXJkKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHsgb3BlcmF0b3I6IFwiPj1cIiwgbWFqb3IsIG1pbm9yOiAwLCBwYXRjaDogMCB9LFxuICAgICAgeyBvcGVyYXRvcjogXCI8XCIsIG1ham9yOiBtYWpvciArIDEsIG1pbm9yOiAwLCBwYXRjaDogMCB9LFxuICAgIF07XG4gIH1cbiAgaWYgKHBhdGNoSXNXaWxkY2FyZCkge1xuICAgIHJldHVybiBbXG4gICAgICB7IG9wZXJhdG9yOiBcIj49XCIsIG1ham9yLCBtaW5vciwgcGF0Y2g6IDAgfSxcbiAgICAgIHsgb3BlcmF0b3I6IFwiPFwiLCBtYWpvciwgbWlub3I6IG1pbm9yICsgMSwgcGF0Y2g6IDAgfSxcbiAgICBdO1xuICB9XG4gIGNvbnN0IHByZXJlbGVhc2UgPSBwYXJzZVByZXJlbGVhc2UoZ3JvdXBzLnByZXJlbGVhc2UgPz8gXCJcIik7XG4gIGNvbnN0IGJ1aWxkID0gcGFyc2VCdWlsZChncm91cHMuYnVpbGQgPz8gXCJcIik7XG4gIHJldHVybiBbeyBvcGVyYXRvcjogdW5kZWZpbmVkLCBtYWpvciwgbWlub3IsIHBhdGNoLCBwcmVyZWxlYXNlLCBidWlsZCB9XTtcbn1cblxuZnVuY3Rpb24gcGFyc2VPcGVyYXRvclJhbmdlKHN0cmluZzogc3RyaW5nKTogQ29tcGFyYXRvciB8IENvbXBhcmF0b3JbXSB7XG4gIGNvbnN0IGdyb3VwcyA9IHN0cmluZy5tYXRjaChPUEVSQVRPUl9YUkFOR0VfUkVHRVhQKVxuICAgID8uZ3JvdXBzIGFzIFJhbmdlUmVnRXhwR3JvdXBzO1xuICBpZiAoIWdyb3VwcykgcmV0dXJuIHBhcnNlQ29tcGFyYXRvcihzdHJpbmcpO1xuXG4gIHN3aXRjaCAoZ3JvdXBzLm9wZXJhdG9yKSB7XG4gICAgY2FzZSBcIl5cIjpcbiAgICAgIHJldHVybiBoYW5kbGVDYXJldE9wZXJhdG9yKGdyb3Vwcyk7XG4gICAgY2FzZSBcIn5cIjpcbiAgICBjYXNlIFwifj5cIjpcbiAgICAgIHJldHVybiBoYW5kbGVUaWxkZU9wZXJhdG9yKGdyb3Vwcyk7XG4gICAgY2FzZSBcIjxcIjpcbiAgICAgIHJldHVybiBoYW5kbGVMZXNzVGhhbk9wZXJhdG9yKGdyb3Vwcyk7XG4gICAgY2FzZSBcIjw9XCI6XG4gICAgICByZXR1cm4gaGFuZGxlTGVzc1RoYW5PckVxdWFsT3BlcmF0b3IoZ3JvdXBzKTtcbiAgICBjYXNlIFwiPlwiOlxuICAgICAgcmV0dXJuIGhhbmRsZUdyZWF0ZXJUaGFuT3BlcmF0b3IoZ3JvdXBzKTtcbiAgICBjYXNlIFwiPj1cIjpcbiAgICAgIHJldHVybiBoYW5kbGVHcmVhdGVyT3JFcXVhbE9wZXJhdG9yKGdyb3Vwcyk7XG4gICAgY2FzZSBcIj1cIjpcbiAgICBjYXNlIFwiXCI6XG4gICAgICByZXR1cm4gaGFuZGxlRXF1YWxPcGVyYXRvcihncm91cHMpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2dyb3Vwcy5vcGVyYXRvcn0nIGlzIG5vdCBhIHZhbGlkIG9wZXJhdG9yLmApO1xuICB9XG59XG5mdW5jdGlvbiBwYXJzZU9wZXJhdG9yUmFuZ2VzKHN0cmluZzogc3RyaW5nKTogQ29tcGFyYXRvcltdIHtcbiAgcmV0dXJuIHN0cmluZy5zcGxpdCgvXFxzKy8pLmZsYXRNYXAocGFyc2VPcGVyYXRvclJhbmdlKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSByYW5nZSBzdHJpbmcgaW50byBhIFJhbmdlIG9iamVjdCBvciB0aHJvd3MgYSBUeXBlRXJyb3IuXG4gKiBAcGFyYW0gcmFuZ2UgVGhlIHJhbmdlIHNldCBzdHJpbmdcbiAqIEByZXR1cm5zIEEgdmFsaWQgc2VtYW50aWMgcmFuZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmFuZ2UocmFuZ2U6IHN0cmluZyk6IFJhbmdlIHtcbiAgcmV0dXJuIHJhbmdlXG4gICAgLy8gcmVtb3ZlIHNwYWNlcyBiZXR3ZWVuIG9wZXJhdG9ycyBhbmQgdmVyc2lvbnNcbiAgICAucmVwbGFjZUFsbCgvKD88PTx8Pnw9KSArL2csIFwiXCIpXG4gICAgLnNwbGl0KC9cXHMqXFx8XFx8XFxzKi8pXG4gICAgLm1hcCgoc3RyaW5nKSA9PiBwYXJzZUh5cGhlblJhbmdlKHN0cmluZykgfHwgcGFyc2VPcGVyYXRvclJhbmdlcyhzdHJpbmcpKTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuaW1wb3J0IHR5cGUgeyBTZW1WZXIgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuaW1wb3J0IHsgcGFyc2VCdWlsZCwgcGFyc2VOdW1iZXIsIHBhcnNlUHJlcmVsZWFzZSB9IGZyb20gXCIuL19zaGFyZWQudHNcIjtcbmltcG9ydCB7IEZVTExfUkVHRVhQLCBNQVhfTEVOR1RIIH0gZnJvbSBcIi4vX3NoYXJlZC50c1wiO1xuXG4vKipcbiAqIEF0dGVtcHQgdG8gcGFyc2UgYSBzdHJpbmcgYXMgYSBzZW1hbnRpYyB2ZXJzaW9uLCByZXR1cm5pbmcgZWl0aGVyIGEgYFNlbVZlcmBcbiAqIG9iamVjdCBvciB0aHJvd3MgYSBUeXBlRXJyb3IuXG4gKiBAcGFyYW0gdmVyc2lvbiBUaGUgdmVyc2lvbiBzdHJpbmcgdG8gcGFyc2VcbiAqIEByZXR1cm5zIEEgdmFsaWQgU2VtVmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZSh2ZXJzaW9uOiBzdHJpbmcpOiBTZW1WZXIge1xuICBpZiAodHlwZW9mIHZlcnNpb24gIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYHZlcnNpb24gbXVzdCBiZSBhIHN0cmluZ2AsXG4gICAgKTtcbiAgfVxuXG4gIGlmICh2ZXJzaW9uLmxlbmd0aCA+IE1BWF9MRU5HVEgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYHZlcnNpb24gaXMgbG9uZ2VyIHRoYW4gJHtNQVhfTEVOR1RIfSBjaGFyYWN0ZXJzYCxcbiAgICApO1xuICB9XG5cbiAgdmVyc2lvbiA9IHZlcnNpb24udHJpbSgpO1xuXG4gIGNvbnN0IGdyb3VwcyA9IHZlcnNpb24ubWF0Y2goRlVMTF9SRUdFWFApPy5ncm91cHM7XG4gIGlmICghZ3JvdXBzKSB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIFZlcnNpb246ICR7dmVyc2lvbn1gKTtcblxuICBjb25zdCBtYWpvciA9IHBhcnNlTnVtYmVyKGdyb3Vwcy5tYWpvciEsIFwiSW52YWxpZCBtYWpvciB2ZXJzaW9uXCIpO1xuICBjb25zdCBtaW5vciA9IHBhcnNlTnVtYmVyKGdyb3Vwcy5taW5vciEsIFwiSW52YWxpZCBtaW5vciB2ZXJzaW9uXCIpO1xuICBjb25zdCBwYXRjaCA9IHBhcnNlTnVtYmVyKGdyb3Vwcy5wYXRjaCEsIFwiSW52YWxpZCBwYXRjaCB2ZXJzaW9uXCIpO1xuXG4gIGNvbnN0IHByZXJlbGVhc2UgPSBncm91cHMucHJlcmVsZWFzZVxuICAgID8gcGFyc2VQcmVyZWxlYXNlKGdyb3Vwcy5wcmVyZWxlYXNlKVxuICAgIDogW107XG4gIGNvbnN0IGJ1aWxkID0gZ3JvdXBzLmJ1aWxkbWV0YWRhdGEgPyBwYXJzZUJ1aWxkKGdyb3Vwcy5idWlsZG1ldGFkYXRhKSA6IFtdO1xuXG4gIHJldHVybiB7XG4gICAgbWFqb3IsXG4gICAgbWlub3IsXG4gICAgcGF0Y2gsXG4gICAgcHJlcmVsZWFzZSxcbiAgICBidWlsZCxcbiAgfTtcbn1cbiIsICIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgdHlwZSB7IFJhbmdlIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IHBhcnNlUmFuZ2UgfSBmcm9tIFwiLi9wYXJzZV9yYW5nZS50c1wiO1xuXG4vKipcbiAqIEEgdHJpZXMgdG8gcGFyc2UgYSB2YWxpZCBSYW5nZSBzdHJpbmcgb3IgcmV0dXJucyB1bmRlZmluZWRcbiAqIEBwYXJhbSByYW5nZSBUaGUgcmFuZ2Ugc3RyaW5nXG4gKiBAcmV0dXJucyBBIFJhbmdlIG9iamVjdCBpZiB2YWxpZCBvdGhlcndpc2UgYHVuZGVmaW5lZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyeVBhcnNlUmFuZ2UoXG4gIHJhbmdlOiBzdHJpbmcsXG4pOiBSYW5nZSB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgLy8gUmV0dXJuICcqJyBpbnN0ZWFkIG9mICcnIHNvIHRoYXQgdHJ1dGhpbmVzcyB3b3Jrcy5cbiAgICAvLyBUaGlzIHdpbGwgdGhyb3cgaWYgaXQncyBpbnZhbGlkIGFueXdheVxuICAgIHJldHVybiBwYXJzZVJhbmdlKHJhbmdlKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIiwgIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5pbXBvcnQgdHlwZSB7IFNlbVZlciB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCIuL3BhcnNlLnRzXCI7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGFyc2VkIHZlcnNpb24sIG9yIHVuZGVmaW5lZCBpZiBpdCdzIG5vdCB2YWxpZC5cbiAqIEBwYXJhbSB2ZXJzaW9uIFRoZSB2ZXJzaW9uIHN0cmluZyB0byBwYXJzZVxuICogQHJldHVybnMgQSB2YWxpZCBTZW1WZXIgb3IgYHVuZGVmaW5lZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyeVBhcnNlKHZlcnNpb24/OiBzdHJpbmcpOiBTZW1WZXIgfCB1bmRlZmluZWQge1xuICBpZiAodmVyc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBwYXJzZSh2ZXJzaW9uKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZUVyciwgY3JlYXRlT2ssIFJlc3VsdCB9IGZyb20gXCIuL2RlcHMvb3B0aW9uLXQudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrRXJyb3Ige1xuICBuYW1lOiBcIk5ldHdvcmtFcnJvclwiO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHJlcXVlc3Q6IFJlcXVlc3Q7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFib3J0RXJyb3Ige1xuICBuYW1lOiBcIkFib3J0RXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICByZXF1ZXN0OiBSZXF1ZXN0O1xufVxuZXhwb3J0IGludGVyZmFjZSBIVFRQRXJyb3Ige1xuICBuYW1lOiBcIkhUVFBFcnJvclwiO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHJlc3BvbnNlOiBSZXNwb25zZTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIHJvYnVzdCBmZXRjaCBvcGVyYXRpb24uXG4gKlxuICogQHBhcmFtIHJlcSAtIFRoZSByZXF1ZXN0IHRvIGJlIGZldGNoZWQuXG4gKiBAcGFyYW0gY2FjaGVGaXJzdCAtIE9wdGlvbmFsIHBhcmFtZXRlciBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gcHJpb3JpdGl6ZSBjYWNoZSBvdmVyIG5ldHdvcmsuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgdHVwbGUgY29udGFpbmluZyB0aGUgcmVzcG9uc2UgYW5kIGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSByZXNwb25zZSB3YXMgcmV0cmlldmVkIGZyb20gY2FjaGUuXG4gKi9cbi8qKlxuICogUmVwcmVzZW50cyBhIGZ1bmN0aW9uIHRoYXQgbWFrZXMgYSByb2J1c3QgSFRUUCByZXF1ZXN0LlxuICpcbiAqIC0gSWYgdGhlIHJlcXVlc3QgaXMgc3VjY2Vzc2Z1bCwgcmV0dXJucyBhIGBSZXN1bHRgIG9iamVjdCB3aXRoIHRoZSBzdWNjZXNzZnVsIHJlc3BvbnNlIGFuZCBhbiBlcnJvciBmbGFnIHNldCB0byBmYWxzZS5cbiAqIC0gSWYgdGhlIHJlcXVlc3QgZmFpbHMgZHVlIHRvIGEgbmV0d29yayBlcnJvciwgcmV0dXJucyBhIGBSZXN1bHRgIG9iamVjdCB3aXRoIGEge0BsaW5rIE5ldHdvcmtFcnJvcn0uXG4gKiAtIElmIHRoZSByZXF1ZXN0IGlzIGFib3J0ZWQsIHJldHVybnMgYSBgUmVzdWx0YCBvYmplY3Qgd2l0aCBhbiB7QGxpbmsgQWJvcnRFcnJvcn0uXG4gKiAtIElmIHRoZSByZXF1ZXN0IGZhaWxzIGR1ZSB0byBhbiBIVFRQIGVycm9yIHN0YXR1cywgcmV0dXJucyBhIGBSZXN1bHRgIG9iamVjdCB3aXRoIGFuIHtAbGluayBIVFRQRXJyb3J9LlxuICpcbiAqIEBwYXJhbSByZXF1ZXN0IC0gVGhlIHJlcXVlc3QgdG8gYmUgc2VudC5cbiAqIEBwYXJhbSBjYWNoZUZpcnN0IC0gT3B0aW9uYWwgcGFyYW1ldGVyIGluZGljYXRpbmcgd2hldGhlciB0byBwcmlvcml0aXplIGNhY2hlIG92ZXIgbmV0d29yay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBgcmVzdWx0YCBvYmplY3QsIHdoaWNrIGNvbnRhaW5zIGVpdGhlciBhIHR1cGxlIGNvbnRhaW5pbmcgYSBzdWNjZXNzZnVsIHJlc3BvbnNlIGFuZCBhIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgcmVzcG9uc2Ugd2FzIHJldHJpZXZlZCBmcm9tIGNhY2hlLCBvciBhbiBlcnJvci5cbiAqL1xuZXhwb3J0IHR5cGUgUm9idXN0RmV0Y2ggPSAoXG4gIHJlcTogUmVxdWVzdCxcbiAgY2FjaGVGaXJzdD86IGJvb2xlYW4sXG4pID0+IFByb21pc2U8XG4gIFJlc3VsdDxbUmVzcG9uc2UsIGJvb2xlYW5dLCBOZXR3b3JrRXJyb3IgfCBBYm9ydEVycm9yIHwgSFRUUEVycm9yPlxuPjtcblxuLyoqXG4gKiBUaGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIGEge0BsaW5rIFJvYnVzdEZldGNofSBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gcmVxdWVzdCAtIFRoZSByZXF1ZXN0IHRvIGJlIHNlbnQuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGByZXN1bHRgIG9iamVjdCwgd2hpY2sgY29udGFpbnMgZWl0aGVyIGEgdHVwbGUgY29udGFpbmluZyBhIHN1Y2Nlc3NmdWwgcmVzcG9uc2UgYW5kIGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSByZXNwb25zZSB3YXMgcmV0cmlldmVkIGZyb20gY2FjaGUsIG9yIGFuIGVycm9yLlxuICovXG5leHBvcnQgY29uc3Qgcm9idXN0RmV0Y2g6IFJvYnVzdEZldGNoID0gYXN5bmMgKHJlcXVlc3QpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChyZXF1ZXN0KTtcbiAgICByZXR1cm4gcmVzLm9rID8gY3JlYXRlT2soW3JlcywgZmFsc2VdKSA6IGNyZWF0ZUVycih7XG4gICAgICBuYW1lOiBcIkhUVFBFcnJvclwiLFxuICAgICAgbWVzc2FnZTogYCR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH1gLFxuICAgICAgcmVzcG9uc2U6IHJlcyxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgIGlmIChlIGluc3RhbmNlb2YgVHlwZUVycm9yKSB7XG4gICAgICByZXR1cm4gY3JlYXRlRXJyKHtcbiAgICAgICAgbmFtZTogXCJOZXR3b3JrRXJyb3JcIixcbiAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChlIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uKSB7XG4gICAgICByZXR1cm4gY3JlYXRlRXJyKHtcbiAgICAgICAgbmFtZTogXCJBYm9ydEVycm9yXCIsXG4gICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG59O1xuIiwgImltcG9ydCB7IG1hcEFzeW5jRm9yUmVzdWx0LCBSZXN1bHQgfSBmcm9tIFwiLi9kZXBzL29wdGlvbi10LnRzXCI7XG5pbXBvcnQge1xuICBBYm9ydEVycm9yLFxuICBIVFRQRXJyb3IsXG4gIE5ldHdvcmtFcnJvcixcbiAgUm9idXN0RmV0Y2gsXG4gIHJvYnVzdEZldGNoLFxufSBmcm9tIFwiLi9yb2J1c3RGZXRjaC50c1wiO1xuXG4vLyBjZi4gaHR0cHM6Ly9naXRodWIuY29tL2pzci1pby9qc3IvYmxvYi9jMmE4YjY2NDQ5YTdhODI5MGIyNDlkZmE3MTQ0NjhjZTc1ZDgzYTg4L2FwaS9zcmMvbWV0YWRhdGEucnMjTDM4LUw2NFxuZXhwb3J0IGludGVyZmFjZSBKc3JQYWNrYWdlTWV0YWRhdGEge1xuICBzY29wZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhdGVzdD86IHN0cmluZztcbiAgdmVyc2lvbnM6IFJlY29yZDxzdHJpbmcsIHsgeWFua2VkPzogdHJ1ZSB9Pjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgR2V0SnNyUGFja2FnZU1ldGFkYXRhT3B0aW9ucyB7XG4gIGVuZHBvaW50Pzogc3RyaW5nO1xuICBmZXRjaD86IFJvYnVzdEZldGNoO1xuICBjYWNoZUZpcnN0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IEpTUl9SRUdJU1RPUllfRU5EUE9JTlQgPSBcImh0dHBzOi8vanNyLmlvXCI7XG5cbi8qKiBHZXQgaHR0cHM6Ly9qc3IuaW8ve3Njb3BlfS97bmFtZX0vbWV0YS5qc29uXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL2pzci5pby9kb2NzL2FwaSNwYWNrYWdlLW1ldGFkYXRhXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRKc3JQYWNrYWdlTWV0YWRhdGEgPSBhc3luYyAoXG4gIG5hbWU6IHN0cmluZyxcbiAgb3B0aW9ucz86IEdldEpzclBhY2thZ2VNZXRhZGF0YU9wdGlvbnMsXG4pOiBQcm9taXNlPFxuICBSZXN1bHQ8SnNyUGFja2FnZU1ldGFkYXRhLCBOZXR3b3JrRXJyb3IgfCBBYm9ydEVycm9yIHwgSFRUUEVycm9yPlxuPiA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IChvcHRpb25zPy5mZXRjaCA/PyByb2J1c3RGZXRjaCkoXG4gICAgbmV3IFJlcXVlc3QoXG4gICAgICBgJHtvcHRpb25zPy5lbmRwb2ludCA/PyBKU1JfUkVHSVNUT1JZX0VORFBPSU5UfS8ke25hbWV9L21ldGEuanNvbmAsXG4gICAgKSxcbiAgICBvcHRpb25zPy5jYWNoZUZpcnN0LFxuICApO1xuICByZXR1cm4gbWFwQXN5bmNGb3JSZXN1bHQoXG4gICAgcmVzdWx0LFxuICAgIChbcmVzXSkgPT4gcmVzLmpzb24oKSBhcyBQcm9taXNlPEpzclBhY2thZ2VNZXRhZGF0YT4sXG4gICk7XG59O1xuIiwgImltcG9ydCB7IG1hcEFzeW5jRm9yUmVzdWx0LCBSZXN1bHQgfSBmcm9tIFwiLi9kZXBzL29wdGlvbi10LnRzXCI7XG5pbXBvcnQge1xuICBHZXRKc3JQYWNrYWdlTWV0YWRhdGFPcHRpb25zLFxuICBKU1JfUkVHSVNUT1JZX0VORFBPSU5ULFxufSBmcm9tIFwiLi9nZXRKc3JQYWNrYWdlTWV0YWRhdGEudHNcIjtcbmltcG9ydCB7XG4gIEFib3J0RXJyb3IsXG4gIEhUVFBFcnJvcixcbiAgTmV0d29ya0Vycm9yLFxuICByb2J1c3RGZXRjaCxcbn0gZnJvbSBcIi4vcm9idXN0RmV0Y2gudHNcIjtcblxuLy8gY2YuIGh0dHBzOi8vZ2l0aHViLmNvbS9qc3ItaW8vanNyL2Jsb2IvYzJhOGI2NjQ0OWE3YTgyOTBiMjQ5ZGZhNzE0NDY4Y2U3NWQ4M2E4OC9hcGkvc3JjL21ldGFkYXRhLnJzI0w3My1MMTE2XG5leHBvcnQgaW50ZXJmYWNlIEpzclBhY2thZ2VWZXJzaW9uTWV0YWRhdGEge1xuICBtYW5pZmVzdDogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RFbnRyeT47XG4gIG1vZHVsZUdyYXBoMT86IFJlY29yZDxzdHJpbmcsIHsgeWFua2VkPzogdHJ1ZSB9PjtcbiAgbW9kdWxlR3JhcGgyPzogUmVjb3JkPHN0cmluZywgeyB5YW5rZWQ/OiB0cnVlIH0+O1xuICBleHBvcnRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vLyBjZi4gaHR0cHM6Ly9naXRodWIuY29tL2pzci1pby9qc3IvYmxvYi9jMmE4YjY2NDQ5YTdhODI5MGIyNDlkZmE3MTQ0NjhjZTc1ZDgzYTg4L2FwaS9zcmMvbWV0YWRhdGEucnMjTDExOC1MMTIyXG5leHBvcnQgaW50ZXJmYWNlIE1hbmlmZXN0RW50cnkge1xuICBzaXplOiBudW1iZXI7XG4gIGNoZWNrc3VtOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEdldEpzclBhY2thZ2VWZXJzaW9uTWV0YWRhdGFPcHRpb25zXG4gIGV4dGVuZHMgR2V0SnNyUGFja2FnZU1ldGFkYXRhT3B0aW9ucyB7fVxuXG4vKiogR2V0IGh0dHBzOi8vanNyLmlvL3tzY29wZX0ve25hbWV9L3t2ZXJzaW9ufV9tZXRhLmpzb25cbiAqXG4gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vanNyLmlvL2RvY3MvYXBpI3BhY2thZ2UtdmVyc2lvbi1tZXRhZGF0YVxuICovXG5leHBvcnQgY29uc3QgZ2V0SnNyUGFja2FnZVZlcnNpb25NZXRhZGF0YSA9IGFzeW5jIChcbiAgbmFtZTogc3RyaW5nLFxuICB2ZXJzaW9uOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBHZXRKc3JQYWNrYWdlVmVyc2lvbk1ldGFkYXRhT3B0aW9ucyxcbik6IFByb21pc2U8XG4gIFJlc3VsdDxKc3JQYWNrYWdlVmVyc2lvbk1ldGFkYXRhLCBOZXR3b3JrRXJyb3IgfCBBYm9ydEVycm9yIHwgSFRUUEVycm9yPlxuPiA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IChvcHRpb25zPy5mZXRjaCA/PyByb2J1c3RGZXRjaCkoXG4gICAgbmV3IFJlcXVlc3QoXG4gICAgICBgJHtcbiAgICAgICAgb3B0aW9ucz8uZW5kcG9pbnQgPz8gSlNSX1JFR0lTVE9SWV9FTkRQT0lOVFxuICAgICAgfS8ke25hbWV9LyR7dmVyc2lvbn1fbWV0YS5qc29uYCxcbiAgICApLFxuICAgIG9wdGlvbnM/LmNhY2hlRmlyc3QsXG4gICk7XG4gIHJldHVybiBtYXBBc3luY0ZvclJlc3VsdChcbiAgICByZXN1bHQsXG4gICAgKFtyZXNdKSA9PiByZXMuanNvbigpIGFzIFByb21pc2U8SnNyUGFja2FnZVZlcnNpb25NZXRhZGF0YT4sXG4gICk7XG59O1xuIiwgImltcG9ydCB7IG1hcEFzeW5jRm9yUmVzdWx0LCBSZXN1bHQgfSBmcm9tIFwiLi9kZXBzL29wdGlvbi10LnRzXCI7XG5pbXBvcnQge1xuICBBYm9ydEVycm9yLFxuICBIVFRQRXJyb3IsXG4gIE5ldHdvcmtFcnJvcixcbiAgUm9idXN0RmV0Y2gsXG4gIHJvYnVzdEZldGNoLFxufSBmcm9tIFwiLi9yb2J1c3RGZXRjaC50c1wiO1xuXG4vKiogUmVwcmVzZW50cyB0aGUgbWV0YWRhdGEgb2YgYW4gTlBNIHBhY2thZ2UgaW4gYWJicmV2aWF0ZWQgZm9ybVxuICpcbiAqIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbnBtL3JlZ2lzdHJ5L2Jsb2IvYzE2NGMxZGRkZDkxMzdiYTJkMGEyNjUxNTlmYjk5NmIzZmEyNGVkNi9kb2NzL3Jlc3BvbnNlcy9wYWNrYWdlLW1ldGFkYXRhLm1kI2FiYnJldmlhdGVkLW1ldGFkYXRhLWZvcm1hdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5wbVBhY2thZ2VNZXRhZGF0YSB7XG4gIC8qKiB0aGUgcGFja2FnZSBuYW1lICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKiogYSBtYXBwaW5nIG9mIGRpc3QgdGFncyB0byB0aGUgdmVyc2lvbnMgdGhleSBwb2ludCB0byAqL1xuICBcImRpc3QtdGFnc1wiOiBEaXN0VGFncztcblxuICAvKiogSVNPIHN0cmluZyBvZiB0aGUgbGFzdCB0aW1lIHRoaXMgcGFja2FnZSB3YXMgbW9kaWZpZWQgKi9cbiAgbW9kaWZpZWQ6IG51bWJlcjtcblxuICAvKiogYSBtYXBwaW5nIG9mIHZlcnNpb24gbnVtYmVycyB0byBvYmplY3RzIGNvbnRhaW5pbmcgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBpbnN0YWxsIHRoYXQgdmVyc2lvbiAqL1xuICB2ZXJzaW9uczogUmVjb3JkPHN0cmluZywgQWJicmV2aWF0ZWRWZXJzaW9uT2JqZWN0Pjtcbn1cblxuLyoqIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gaW5zdGFsbCB0aGF0IHZlcnNpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJicmV2aWF0ZWRWZXJzaW9uT2JqZWN0IHtcbiAgLyoqIHRoZSBwYWNrYWdlIG5hbWUgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKiB0aGUgdmVyc2lvbiBzdHJpbmcgZm9yIHRoaXMgdmVyc2lvbiAqL1xuICB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqIHRoZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBtZXNzYWdlIG9mIHRoaXMgdmVyc2lvbiAqL1xuICBkZXByZWNhdGVkPzogc3RyaW5nO1xuXG4gIC8qKiBhIG1hcHBpbmcgb2Ygb3RoZXIgcGFja2FnZXMgdGhpcyB2ZXJzaW9uIGRlcGVuZHMgb24gdG8gdGhlIHJlcXVpcmVkIHNlbXZlciByYW5nZXMgKi9cbiAgZGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKiogYW4gb2JqZWN0IG1hcHBpbmcgcGFja2FnZSBuYW1lcyB0byB0aGUgcmVxdWlyZWQgc2VtdmVyIHJhbmdlcyBvZiBvcHRpb25hbCBkZXBlbmRlbmNpZXMgKi9cbiAgb3B0aW9uYWxEZXBlbmRlbmNpZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKiBhIG1hcHBpbmcgb2YgcGFja2FnZSBuYW1lcyB0byB0aGUgcmVxdWlyZWQgc2VtdmVyIHJhbmdlcyBvZiBkZXZlbG9wbWVudCBkZXBlbmRlbmNpZXMgKi9cbiAgZGV2RGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKiogYW4gYXJyYXkgb2YgZGVwZW5kZW5jaWVzIGJ1bmRsZWQgd2l0aCB0aGlzIHZlcnNpb24gKi9cbiAgYnVuZGxlRGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgLyoqIGEgbWFwcGluZyBvZiBwYWNrYWdlIG5hbWVzIHRvIHRoZSByZXF1aXJlZCBzZW12ZXIgcmFuZ2VzIG9mIHBlZXIgZGVwZW5kZW5jaWVzICovXG4gIHBlZXJEZXBlbmRlbmNpZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKiBhIG1hcHBpbmcgb2YgcGVlciBwYWNrYWdlIG5hbWVzIHRvIGFkZGl0aW9uYWwgbWV0YSBpbmZvcm1hdGlvbiBmb3IgdGhvc2UgcGVlcnMgKi9cbiAgcGVlckRlcGVuZGVuY2llc01ldGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKiBhIG1hcHBpbmcgb2YgYmluIGNvbW1hbmRzIHRvIHNldCB1cCBmb3IgdGhpcyB2ZXJzaW9uICovXG4gIGJpbj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgZXhwb3J0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIC8qKiBhbiBhcnJheSBvZiBkaXJlY3RvcmllcyBpbmNsdWRlZCBieSB0aGlzIHZlcnNpb24gKi9cbiAgZGlyZWN0b3JpZXM/OiBzdHJpbmdbXTtcblxuICAvKiogYSBkaXN0IG9iamVjdCAqL1xuICBkaXN0OiBEaXN0O1xuXG4gIC8qKiB0aGUgbm9kZSBlbmdpbmVzIHJlcXVpcmVkIGZvciB0aGlzIHZlcnNpb24gdG8gcnVuLCBpZiBzcGVjaWZpZWQgKi9cbiAgZW5naW5lcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqIC0gYHRydWVgIGlmIHRoaXMgdmVyc2lvbiBpcyBrbm93biB0byBoYXZlIGEgc2hyaW5rd3JhcCB0aGF0IG11c3QgYmUgdXNlZCB0byBpbnN0YWxsIGl0O1xuICAgKiAtIGBmYWxzZWAgaWYgdGhpcyB2ZXJzaW9uIGlzIGtub3duIG5vdCB0byBoYXZlIGEgc2hyaW5rd3JhcC5cbiAgICogLSBJZiB0aGlzIGZpZWxkIGlzIGB1bmRlZmluZWRgLCB0aGUgY2xpZW50IG11c3QgZGV0ZXJtaW5lIHRocm91Z2ggb3RoZXIgbWVhbnMgaWYgYSBzaHJpbmt3cmFwIGV4aXN0cy5cbiAgICovXG4gIF9oYXNTaHJpbmt3cmFwPzogYm9vbGVhbjtcbiAgLyoqIGB0cnVlYCBpZiB0aGlzIHZlcnNpb24gaGFzIHRoZSBpbnN0YWxsIHNjcmlwdHMuICovXG4gIGhhc0luc3RhbGxTY3JpcHQ/OiBib29sZWFuO1xuXG4gIC8qKiBhbiBhcnJheSBvZiBDUFUgYXJjaGl0ZWN0dXJlcyBzdXBwb3J0ZWQgYnkgdGhlIHBhY2thZ2UgKi9cbiAgY3B1Pzogc3RyaW5nW107XG5cbiAgLyoqIGFuIGFycmF5IG9mIG9wZXJhdGluZyBzeXN0ZW1zIHN1cHBvcnRlZCBieSB0aGUgcGFja2FnZSAqL1xuICBvcz86IHN0cmluZ1tdO1xufVxuXG4vKiogQSBtYXBwaW5nIG9mIGRpc3QgdGFncyB0byB0aGUgdmVyc2lvbnMgdGhleSBwb2ludCB0by4gKi9cbmV4cG9ydCB0eXBlIERpc3RUYWdzID0gUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiAmIHsgbGF0ZXN0OiBzdHJpbmcgfTtcblxuLyoqIFRoZSBkaXN0IG9iamVjdCBpcyBnZW5lcmF0ZWQgYnkgbnBtIGFuZCBtYXkgYmUgcmVsaWVkIHVwb24uICovXG5leHBvcnQgaW50ZXJmYWNlIERpc3Qge1xuICAvKiogdGhlIHVybCBvZiB0aGUgdGFyYmFsbCBjb250YWluaW5nIHRoZSBwYXlsb2FkIGZvciB0aGlzIHBhY2thZ2UgKi9cbiAgdGFyYmFsbDogc3RyaW5nO1xuXG4gIC8qKiB0aGUgU0hBLTEgc3VtIG9mIHRoZSB0YXJiYWxsICovXG4gIHNoYXN1bTogc3RyaW5nO1xuXG4gIC8qKiBzaW5jZSBBcHIgMjAxNywgc3RyaW5nIGluIHRoZSBmb3JtYXQgYDxoYXNoQWxnb3JpdGhtPi08YmFzZTY0LWhhc2g+YCwgcmVmZXIgdGhlIFtTdWJyZXNvdXJjZSBJbnRlZ3JpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1N1YnJlc291cmNlX0ludGVncml0eSkgYW5kIFtjYWNhY2hlXShodHRwczovL2dpdGh1Yi5jb20vbnBtL2NhY2FjaGUjaW50ZWdyaXR5KSBwYWNrYWdlIGZvciBtb3JlICovXG4gIGludGVncml0eT86IHN0cmluZztcblxuICAvKiogc2luY2UgRmViIDIwMTgsIHRoZSBudW1iZXIgb2YgZmlsZXMgaW4gdGhlIHRhcmJhbGwsIGZvbGRlciBleGNsdWRlZCAqL1xuICBmaWxlQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqIHNpbmNlIEZlYiAyMDE4LCB0aGUgdG90YWwgYnl0ZSBvZiB0aGUgdW5wYWNrZWQgZmlsZXMgaW4gdGhlIHRhcmJhbGwgKi9cbiAgdW5wYWNrZWRTaXplPzogbnVtYmVyO1xuXG4gIC8qKiBzaW5jZSBBcHIgMjAxOCwgYSBQR1Agc2lnbmF0dXJlIG9mIGA8cGFja2FnZT5APHZlcnNpb24+OjxpbnRlZ3JpdHk+YCwgcmVmZXIgdGhlIG5wbSBbYmxvZ10oaHR0cHM6Ly9ibG9nLm5wbWpzLm9yZy9wb3N0LzE3Mjk5OTU0ODM5MC9uZXctcGdwLW1hY2hpbmVyeSkgYW5kIFtkb2NdKGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vYWJvdXQtcGdwLXNpZ25hdHVyZXMtZm9yLXBhY2thZ2VzLWluLXRoZS1wdWJsaWMtcmVnaXN0cnkpIGZvciBtb3JlICovXG4gIFwibnBtLXNpZ25hdHVyZVwiPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldE5wbVBhY2thZ2VNZXRhZGF0YU9wdGlvbnMge1xuICBlbmRwb2ludD86IHN0cmluZztcbiAgZmV0Y2g/OiBSb2J1c3RGZXRjaDtcbiAgY2FjaGVGaXJzdD86IGJvb2xlYW47XG59XG5cbi8qKiBydW4gYGh0dHBzOi8vcmVnaXN0b3J5Lm5wbWpzLm9yZy97cGFja2FnZX1gIHRvIGdldCB0aGUgcGFja2FnZSBtZXRhZGF0YVxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL25wbS9yZWdpc3RyeS9ibG9iL2MxNjRjMWRkZGQ5MTM3YmEyZDBhMjY1MTU5ZmI5OTZiM2ZhMjRlZDYvZG9jcy9SRUdJU1RSWS1BUEkubWQjZ2V0cGFja2FnZVxuICovXG5leHBvcnQgY29uc3QgZ2V0TnBtUGFja2FnZU1ldGFkYXRhID0gYXN5bmMgKFxuICBuYW1lOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBHZXROcG1QYWNrYWdlTWV0YWRhdGFPcHRpb25zLFxuKTogUHJvbWlzZTxcbiAgUmVzdWx0PE5wbVBhY2thZ2VNZXRhZGF0YSwgTmV0d29ya0Vycm9yIHwgQWJvcnRFcnJvciB8IEhUVFBFcnJvcj5cbj4gPT4ge1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCAob3B0aW9ucz8uZmV0Y2ggPz8gcm9idXN0RmV0Y2gpKFxuICAgIG5ldyBSZXF1ZXN0KFxuICAgICAgYCR7b3B0aW9ucz8uZW5kcG9pbnQgPz8gXCJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZ1wifS8ke25hbWV9YCxcbiAgICApLFxuICAgIG9wdGlvbnM/LmNhY2hlRmlyc3QsXG4gICk7XG4gIHJldHVybiBtYXBBc3luY0ZvclJlc3VsdChcbiAgICByZXN1bHQsXG4gICAgKFtyZXNdKSA9PiByZXMuanNvbigpIGFzIFByb21pc2U8TnBtUGFja2FnZU1ldGFkYXRhPixcbiAgKTtcbn07XG4iLCAiaW1wb3J0IHtcbiAgY3JlYXRlRXJyLFxuICBjcmVhdGVPayxcbiAgaXNFcnIsXG4gIFJlc3VsdCxcbiAgdW53cmFwT2ssXG59IGZyb20gXCIuL2RlcHMvb3B0aW9uLXQudHNcIjtcbmltcG9ydCB7XG4gIGZvcm1hdCxcbiAgbWF4U2F0aXNmeWluZyxcbiAgUmFuZ2UsXG4gIFNlbVZlcixcbiAgdHJ5UGFyc2UsXG59IGZyb20gXCIuL2RlcHMvc2VtdmVyLnRzXCI7XG5pbXBvcnQgeyBnZXRKc3JQYWNrYWdlTWV0YWRhdGEgfSBmcm9tIFwiLi9nZXRKc3JQYWNrYWdlTWV0YWRhdGEudHNcIjtcbmltcG9ydCB7IGdldEpzclBhY2thZ2VWZXJzaW9uTWV0YWRhdGEgfSBmcm9tIFwiLi9nZXRKc3JQYWNrYWdlVmVyc2lvbk1ldGFkYXRhLnRzXCI7XG5pbXBvcnQgeyBnZXROcG1QYWNrYWdlTWV0YWRhdGEgfSBmcm9tIFwiLi9nZXROcG1QYWNrYWdlTWV0YWRhdGEudHNcIjtcbmltcG9ydCB7XG4gIEFib3J0RXJyb3IsXG4gIEhUVFBFcnJvcixcbiAgTmV0d29ya0Vycm9yLFxuICBSb2J1c3RGZXRjaCxcbn0gZnJvbSBcIi4vcm9idXN0RmV0Y2gudHNcIjtcbmltcG9ydCB7IEpzclNwZWNpZmllciwgTnBtU3BlY2lmaWVyIH0gZnJvbSBcIi4vc3BlY2lmaWVycy50c1wiO1xuXG5leHBvcnQgdHlwZSBwYWNrYWdlVmVyc2lvbk1hcHBpbmcgPSBNYXA8XG4gIHN0cmluZyxcbiAgW1NlbVZlciwgUmVjb3JkPHN0cmluZywgc3RyaW5nPl1bXVxuPjtcblxuZXhwb3J0IGludGVyZmFjZSBJbnZhbGlkUGFja2FnZVZlcnNpb25FcnJvciB7XG4gIG5hbWU6IFwiSW52YWxpZFBhY2thZ2VWZXJzaW9uRXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICByYW5nZTogUmFuZ2U7XG4gIHRhZz86IHN0cmluZztcbiAgZW50cnlQb2ludDogXCIuXCIgfCBgLi8ke3N0cmluZ31gO1xuICBhdmFpbGFibGVWZXJzaW9uczogc3RyaW5nW107XG59XG5jb25zdCBpbnZhbGlkUGFja2FnZVZlcnNpb25FcnJvciA9IChcbiAgc3BlY2lmaWVyOiBOcG1TcGVjaWZpZXIsXG4gIGF2YWlsYWJsZVZlcnNpb25zOiBzdHJpbmdbXSxcbik6IEludmFsaWRQYWNrYWdlVmVyc2lvbkVycm9yID0+ICh7XG4gIG5hbWU6IFwiSW52YWxpZFBhY2thZ2VWZXJzaW9uRXJyb3JcIixcbiAgbWVzc2FnZTogYE5vIHZlcnNpb24gb2YgJHtzcGVjaWZpZXIubmFtZX0gc2F0aXNmaWVzIFwiJHtcbiAgICBzcGVjaWZpZXIudGFnID8/IFwiKlwiXG4gIH1cIiAoYXZhaWxhYmxlOiAke2F2YWlsYWJsZVZlcnNpb25zLnNsaWNlKDAsIDEwKS5qb2luKFwiLCBcIil9JHtcbiAgICBhdmFpbGFibGVWZXJzaW9ucy5sZW5ndGggPiAxMFxuICAgICAgPyBgLCAuLi4gKCR7YXZhaWxhYmxlVmVyc2lvbnMubGVuZ3RoIC0gMTB9IG1vcmUgdmVyc2lvbnMpYFxuICAgICAgOiBcIlwiXG4gIH0pYCxcbiAgcGFja2FnZU5hbWU6IHNwZWNpZmllci5uYW1lLFxuICByYW5nZTogc3BlY2lmaWVyLnJhbmdlLFxuICB0YWc6IHNwZWNpZmllci50YWcsXG4gIGVudHJ5UG9pbnQ6IHNwZWNpZmllci5lbnRyeVBvaW50LFxuICBhdmFpbGFibGVWZXJzaW9ucyxcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEludmFsaWRFbnRyeVBvaW50RXJyb3Ige1xuICBuYW1lOiBcIkludmFsaWRFbnRyeVBvaW50RXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICByYW5nZTogUmFuZ2U7XG4gIHRhZz86IHN0cmluZztcbiAgZW50cnlQb2ludDogXCIuXCIgfCBgLi8ke3N0cmluZ31gO1xuICBhdmFpbGFibGVFbnRyeVBvaW50czogc3RyaW5nW107XG59XG5jb25zdCBpbnZhbGlkRW50cnlQb2ludEVycm9yID0gKFxuICBzcGVjaWZpZXI6IE5wbVNwZWNpZmllcixcbiAgYXZhaWxhYmxlRW50cnlQb2ludHM6IHN0cmluZ1tdLFxuKTogSW52YWxpZEVudHJ5UG9pbnRFcnJvciA9PiAoe1xuICBuYW1lOiBcIkludmFsaWRFbnRyeVBvaW50RXJyb3JcIixcbiAgbWVzc2FnZTpcbiAgICBgJHtzcGVjaWZpZXIuZW50cnlQb2ludH0gaXMgbm90IGEgdmFsaWQgZW50cnkgcG9pbnQgZm9yICR7c3BlY2lmaWVyLm5hbWV9QCR7XG4gICAgICBzcGVjaWZpZXIudGFnID8/IFwiKlwiXG4gICAgfSAoYXZhaWxhYmxlOiAke2F2YWlsYWJsZUVudHJ5UG9pbnRzLmpvaW4oXCIsIFwiKX0pYCxcbiAgcGFja2FnZU5hbWU6IHNwZWNpZmllci5uYW1lLFxuICByYW5nZTogc3BlY2lmaWVyLnJhbmdlLFxuICB0YWc6IHNwZWNpZmllci50YWcsXG4gIGVudHJ5UG9pbnQ6IHNwZWNpZmllci5lbnRyeVBvaW50LFxuICBhdmFpbGFibGVFbnRyeVBvaW50cyxcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVTcGVjaWZpZXJPcHRpb25zIHtcbiAgcmVzb2x2ZWRWZXJzaW9ucz86IHBhY2thZ2VWZXJzaW9uTWFwcGluZztcbiAgZmV0Y2g/OiBSb2J1c3RGZXRjaDtcbiAgY2FjaGVGaXJzdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlTnBtU3BlY2lmaWVyID0gYXN5bmMgKFxuICBucG06IE5wbVNwZWNpZmllcixcbiAgb3B0aW9ucz86IFJlc29sdmVTcGVjaWZpZXJPcHRpb25zLFxuKTogUHJvbWlzZTxcbiAgUmVzdWx0PFxuICAgIFVSTCxcbiAgICB8IEludmFsaWRQYWNrYWdlVmVyc2lvbkVycm9yXG4gICAgfCBJbnZhbGlkRW50cnlQb2ludEVycm9yXG4gICAgfCBOZXR3b3JrRXJyb3JcbiAgICB8IEFib3J0RXJyb3JcbiAgICB8IEhUVFBFcnJvclxuICA+XG4+ID0+IHtcbiAgaWYgKG9wdGlvbnM/LnJlc29sdmVkVmVyc2lvbnMpIHtcbiAgICBjb25zdCB2ZXJzaW9ucyA9IG5ldyBNYXAob3B0aW9ucy5yZXNvbHZlZFZlcnNpb25zLmdldChucG0ubmFtZSkgPz8gW10pO1xuICAgIGNvbnN0IHZlcnNpb24gPSBtYXhTYXRpc2Z5aW5nKFsuLi52ZXJzaW9ucy5rZXlzKCldLCBucG0ucmFuZ2UpO1xuICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICBjb25zdCBleHBvcnRzID0gdmVyc2lvbnMuZ2V0KHZlcnNpb24pID8/IGRlZmF1bHRFeHBvcnRzO1xuICAgICAgY29uc3QgcGF0aCA9IGV4cG9ydHNbbnBtLmVudHJ5UG9pbnRdO1xuXG4gICAgICBpZiAodHlwZW9mIHBhdGggIT09IFwic3RyaW5nXCIpIGNvbnNvbGUubG9nKHBhdGgpO1xuICAgICAgcmV0dXJuIHBhdGhcbiAgICAgICAgPyBjcmVhdGVPayh0b0VzbVNoVXJsKG5wbS5uYW1lLCBmb3JtYXQodmVyc2lvbiksIHBhdGgpKVxuICAgICAgICA6IGNyZWF0ZUVycihcbiAgICAgICAgICBpbnZhbGlkRW50cnlQb2ludEVycm9yKG5wbSwgT2JqZWN0LmtleXMoZXhwb3J0cykpLFxuICAgICAgICApO1xuICAgIH1cbiAgfVxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXROcG1QYWNrYWdlTWV0YWRhdGEobnBtLm5hbWUsIG9wdGlvbnMpO1xuICBpZiAoaXNFcnIocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgY29uc3QgbWV0YWRhdGEgPSB1bndyYXBPayhyZXN1bHQpO1xuICBjb25zdCB2ZXJzaW9ucyA9IG5ldyBNYXAoXG4gICAgT2JqZWN0LmVudHJpZXMobWV0YWRhdGEudmVyc2lvbnMpLmZsYXRNYXAoKFt2LCB7IGV4cG9ydHMgfV0pID0+IHtcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB0cnlQYXJzZSh2KTtcbiAgICAgIHJldHVybiB2ZXJzaW9uID8gW1t2ZXJzaW9uLCBleHBvcnRzID8/IGRlZmF1bHRFeHBvcnRzXV0gOiBbXTtcbiAgICB9KSxcbiAgKTtcbiAgY29uc3QgdmVyc2lvbiA9IG1heFNhdGlzZnlpbmcoWy4uLnZlcnNpb25zLmtleXMoKV0sIG5wbS5yYW5nZSk7XG4gIGlmICghdmVyc2lvbikge1xuICAgIHJldHVybiBjcmVhdGVFcnIoXG4gICAgICBpbnZhbGlkUGFja2FnZVZlcnNpb25FcnJvcihucG0sIE9iamVjdC5rZXlzKG1ldGFkYXRhLnZlcnNpb25zKSksXG4gICAgKTtcbiAgfVxuICBjb25zdCBleHBvcnRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyAuLi5kZWZhdWx0RXhwb3J0cyB9O1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2ZXJzaW9ucy5nZXQodmVyc2lvbikgPz8gZGVmYXVsdEV4cG9ydHMpKSB7XG4gICAgZXhwb3J0c1trZXldID0ga2V5O1xuICB9XG4gIGNvbnN0IHBhdGggPSBleHBvcnRzW25wbS5lbnRyeVBvaW50XTtcbiAgaWYgKHBhdGgpIHtcbiAgICBvcHRpb25zPy5yZXNvbHZlZFZlcnNpb25zPy5zZXQobnBtLm5hbWUsIFtcbiAgICAgIC4uLihvcHRpb25zLnJlc29sdmVkVmVyc2lvbnMuZ2V0KG5wbS5uYW1lKSA/PyBbXSksXG4gICAgICBbdmVyc2lvbiwgZXhwb3J0c10sXG4gICAgXSk7XG4gICAgcmV0dXJuIGNyZWF0ZU9rKHRvRXNtU2hVcmwobnBtLm5hbWUsIGZvcm1hdCh2ZXJzaW9uKSwgcGF0aCkpO1xuICB9XG4gIHJldHVybiBjcmVhdGVFcnIoaW52YWxpZEVudHJ5UG9pbnRFcnJvcihucG0sIE9iamVjdC5rZXlzKGV4cG9ydHMpKSk7XG59O1xuXG5jb25zdCB0b0VzbVNoVXJsID0gKG5hbWU6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBVUkwgPT5cbiAgbmV3IFVSTChwYXRoLCBgaHR0cHM6Ly9lc20uc2gvJHtuYW1lfUAke3ZlcnNpb259L2ApO1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUpzclNwZWNpZmllciA9IGFzeW5jIChcbiAganNyOiBKc3JTcGVjaWZpZXIsXG4gIG9wdGlvbnM/OiBSZXNvbHZlU3BlY2lmaWVyT3B0aW9ucyxcbik6IFByb21pc2U8XG4gIFJlc3VsdDxcbiAgICBVUkwsXG4gICAgfCBJbnZhbGlkUGFja2FnZVZlcnNpb25FcnJvclxuICAgIHwgSW52YWxpZEVudHJ5UG9pbnRFcnJvclxuICAgIHwgTmV0d29ya0Vycm9yXG4gICAgfCBBYm9ydEVycm9yXG4gICAgfCBIVFRQRXJyb3JcbiAgPlxuPiA9PiB7XG4gIGlmIChvcHRpb25zPy5yZXNvbHZlZFZlcnNpb25zKSB7XG4gICAgY29uc3QgdmVyc2lvbnMgPSBuZXcgTWFwKG9wdGlvbnMucmVzb2x2ZWRWZXJzaW9ucy5nZXQoanNyLm5hbWUpID8/IFtdKTtcbiAgICBjb25zdCB2ZXJzaW9uID0gbWF4U2F0aXNmeWluZyhbLi4udmVyc2lvbnMua2V5cygpXSwganNyLnJhbmdlKTtcbiAgICBpZiAodmVyc2lvbikge1xuICAgICAgY29uc3QgZXhwb3J0cyA9IHZlcnNpb25zLmdldCh2ZXJzaW9uKSA/PyBkZWZhdWx0RXhwb3J0cztcbiAgICAgIGNvbnN0IHBhdGggPSBleHBvcnRzW2pzci5lbnRyeVBvaW50XTtcbiAgICAgIHJldHVybiBwYXRoXG4gICAgICAgID8gY3JlYXRlT2sodG9Kc3JVcmwoanNyLm5hbWUsIGZvcm1hdCh2ZXJzaW9uKSwgcGF0aCkpXG4gICAgICAgIDogY3JlYXRlRXJyKFxuICAgICAgICAgIGludmFsaWRFbnRyeVBvaW50RXJyb3IoanNyLCBPYmplY3Qua2V5cyhleHBvcnRzKSksXG4gICAgICAgICk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc29sdmVKc3JWZXJzaW9uKGpzciwgb3B0aW9ucyk7XG4gIGlmIChpc0VycihyZXN1bHQpKSByZXR1cm4gcmVzdWx0O1xuICBjb25zdCB2ZXJzaW9uID0gdW53cmFwT2socmVzdWx0KTtcbiAgY29uc3QgcmVzdWx0MiA9IGF3YWl0IGdldEpzclBhY2thZ2VWZXJzaW9uTWV0YWRhdGEoXG4gICAganNyLm5hbWUsXG4gICAgZm9ybWF0KHZlcnNpb24pLFxuICAgIG9wdGlvbnMsXG4gICk7XG4gIGlmIChpc0VycihyZXN1bHQyKSkgcmV0dXJuIHJlc3VsdDI7XG4gIGNvbnN0IGV4cG9ydHMgPSB1bndyYXBPayhyZXN1bHQyKS5leHBvcnRzO1xuICBjb25zdCBwYXRoID0gZXhwb3J0c1tqc3IuZW50cnlQb2ludF07XG4gIGlmIChwYXRoKSB7XG4gICAgb3B0aW9ucz8ucmVzb2x2ZWRWZXJzaW9ucz8uc2V0KGpzci5uYW1lLCBbXG4gICAgICAuLi4ob3B0aW9ucy5yZXNvbHZlZFZlcnNpb25zLmdldChqc3IubmFtZSkgPz8gW10pLFxuICAgICAgW3ZlcnNpb24sIGV4cG9ydHNdLFxuICAgIF0pO1xuXG4gICAgcmV0dXJuIGNyZWF0ZU9rKHRvSnNyVXJsKGpzci5uYW1lLCBmb3JtYXQodmVyc2lvbiksIHBhdGgpKTtcbiAgfVxuICByZXR1cm4gY3JlYXRlRXJyKFxuICAgIGludmFsaWRFbnRyeVBvaW50RXJyb3IoanNyLCBPYmplY3Qua2V5cyh1bndyYXBPayhyZXN1bHQyKS5leHBvcnRzKSksXG4gICk7XG59O1xuXG5jb25zdCB0b0pzclVybCA9IChuYW1lOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgcGF0aDogc3RyaW5nKTogVVJMID0+XG4gIG5ldyBVUkwocGF0aCwgYGh0dHBzOi8vanNyLmlvLyR7bmFtZX0vJHt2ZXJzaW9ufS9gKTtcblxuY29uc3QgcmVzb2x2ZUpzclZlcnNpb24gPSBhc3luYyAoXG4gIGpzcjogSnNyU3BlY2lmaWVyLFxuICBvcHRpb25zPzogUmVzb2x2ZVNwZWNpZmllck9wdGlvbnMsXG4pOiBQcm9taXNlPFxuICBSZXN1bHQ8XG4gICAgU2VtVmVyLFxuICAgIEludmFsaWRQYWNrYWdlVmVyc2lvbkVycm9yIHwgTmV0d29ya0Vycm9yIHwgQWJvcnRFcnJvciB8IEhUVFBFcnJvclxuICA+XG4+ID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0SnNyUGFja2FnZU1ldGFkYXRhKGpzci5uYW1lLCBvcHRpb25zKTtcbiAgaWYgKGlzRXJyKHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gIGNvbnN0IG1ldGFkYXRhID0gdW53cmFwT2socmVzdWx0KTtcbiAgY29uc3QgdmVyc2lvbnMgPSBPYmplY3Qua2V5cyhtZXRhZGF0YS52ZXJzaW9ucykuZmxhdE1hcCgodikgPT4ge1xuICAgIGNvbnN0IHZlcnNpb24gPSB0cnlQYXJzZSh2KTtcbiAgICByZXR1cm4gdmVyc2lvbiA/IFt2ZXJzaW9uXSA6IFtdO1xuICB9KTtcbiAgY29uc3QgdmVyc2lvbiA9IG1heFNhdGlzZnlpbmcodmVyc2lvbnMsIGpzci5yYW5nZSk7XG4gIHJldHVybiB2ZXJzaW9uID8gY3JlYXRlT2sodmVyc2lvbikgOiBjcmVhdGVFcnIoXG4gICAgaW52YWxpZFBhY2thZ2VWZXJzaW9uRXJyb3IoanNyLCBPYmplY3Qua2V5cyhtZXRhZGF0YS52ZXJzaW9ucykpLFxuICApO1xufTtcblxuY29uc3QgZGVmYXVsdEV4cG9ydHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IFwiLlwiOiBcIi4vXCIgfTtcbiIsICIvLyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vbHVjYWNhc29uYXRvL2VzYnVpbGRfZGVub19sb2FkZXIvYmxvYi8wLjEwLjMvc3JjL3NoYXJlZC50c1xuLy8gQ29weXJpZ2h0IDIwMjEgTHVjYSBDYXNvbmF0by4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG5cbmltcG9ydCB7IGNyZWF0ZUVyciwgY3JlYXRlT2ssIFJlc3VsdCB9IGZyb20gXCIuL2RlcHMvb3B0aW9uLXQudHNcIjtcbmltcG9ydCB7IEFMTCwgUmFuZ2UsIHRyeVBhcnNlUmFuZ2UgfSBmcm9tIFwiLi9kZXBzL3NlbXZlci50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5wbVNwZWNpZmllciB7XG4gIG5hbWU6IHN0cmluZztcbiAgcmFuZ2U6IFJhbmdlO1xuICAvKiogcmF3IHZlcnNpb24gc3RyaW5nICovXG4gIHRhZz86IHN0cmluZztcbiAgZW50cnlQb2ludDogXCIuXCIgfCBgLi8ke3N0cmluZ31gO1xufVxuZXhwb3J0IGludGVyZmFjZSBOb3ROcG1Qcm90b2NvbEVycm9yIHtcbiAgbmFtZTogXCJOb3ROcG1Qcm90b2NvbEVycm9yXCI7XG4gIHNwZWNpZmllcjogVVJMO1xufVxuZXhwb3J0IGludGVyZmFjZSBPbmx5U2NvcGVQcm92aWRlZEVycm9yIHtcbiAgbmFtZTogXCJPbmx5U2NvcGVQcm92aWRlZEVycm9yXCI7XG4gIHNwZWNpZmllcjogVVJMO1xufVxuY29uc3Qgb25seVNjb3BlUHJvdmlkZWRFcnJvciA9IChzcGVjaWZpZXI6IFVSTCk6IE9ubHlTY29wZVByb3ZpZGVkRXJyb3IgPT4gKHtcbiAgbmFtZTogXCJPbmx5U2NvcGVQcm92aWRlZEVycm9yXCIsXG4gIHNwZWNpZmllcixcbn0pO1xuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlTm90Rm91bmRFcnJvciB7XG4gIG5hbWU6IFwiUGFja2FnZU5vdEZvdW5kRXJyb3JcIjtcbiAgc3BlY2lmaWVyOiBVUkw7XG59XG5jb25zdCBwYWNrYWdlTm90Rm91bmRFcnJvciA9IChzcGVjaWZpZXI6IFVSTCk6IFBhY2thZ2VOb3RGb3VuZEVycm9yID0+ICh7XG4gIG5hbWU6IFwiUGFja2FnZU5vdEZvdW5kRXJyb3JcIixcbiAgc3BlY2lmaWVyLFxufSk7XG5leHBvcnQgaW50ZXJmYWNlIEludmFsaWROcG1TcGVjaWZpZXJFcnJvciB7XG4gIG5hbWU6IFwiSW52YWxpZE5wbVNwZWNpZmllckVycm9yXCI7XG4gIHNwZWNpZmllcjogVVJMO1xufVxuXG5leHBvcnQgY29uc3QgcGFyc2VOcG1TcGVjaWZpZXIgPSAoXG4gIHNwZWNpZmllcjogVVJMLFxuKTogUmVzdWx0PFxuICBOcG1TcGVjaWZpZXIsXG4gIE5vdE5wbVByb3RvY29sRXJyb3IgfCBPbmx5U2NvcGVQcm92aWRlZEVycm9yIHwgUGFja2FnZU5vdEZvdW5kRXJyb3Jcbj4gPT4ge1xuICBpZiAoc3BlY2lmaWVyLnByb3RvY29sICE9PSBcIm5wbTpcIikge1xuICAgIHJldHVybiBjcmVhdGVFcnIoeyBuYW1lOiBcIk5vdE5wbVByb3RvY29sRXJyb3JcIiwgc3BlY2lmaWVyIH0pO1xuICB9XG4gIGNvbnN0IHBhdGggPSBzcGVjaWZpZXIucGF0aG5hbWU7XG4gIGNvbnN0IHN0YXJ0SW5kZXggPSBwYXRoWzBdID09PSBcIi9cIiA/IDEgOiAwO1xuICBsZXQgcGF0aFN0YXJ0SW5kZXg7XG4gIGxldCB2ZXJzaW9uU3RhcnRJbmRleDtcbiAgaWYgKHBhdGhbc3RhcnRJbmRleF0gPT09IFwiQFwiKSB7XG4gICAgY29uc3QgZmlyc3RTbGFzaCA9IHBhdGguaW5kZXhPZihcIi9cIiwgc3RhcnRJbmRleCk7XG4gICAgaWYgKGZpcnN0U2xhc2ggPT09IC0xKSByZXR1cm4gY3JlYXRlRXJyKG9ubHlTY29wZVByb3ZpZGVkRXJyb3Ioc3BlY2lmaWVyKSk7XG4gICAgcGF0aFN0YXJ0SW5kZXggPSBwYXRoLmluZGV4T2YoXCIvXCIsIGZpcnN0U2xhc2ggKyAxKTtcbiAgICB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGguaW5kZXhPZihcIkBcIiwgZmlyc3RTbGFzaCArIDEpO1xuICB9IGVsc2Uge1xuICAgIHBhdGhTdGFydEluZGV4ID0gcGF0aC5pbmRleE9mKFwiL1wiLCBzdGFydEluZGV4KTtcbiAgICB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGguaW5kZXhPZihcIkBcIiwgc3RhcnRJbmRleCk7XG4gIH1cblxuICBpZiAocGF0aFN0YXJ0SW5kZXggPT09IC0xKSBwYXRoU3RhcnRJbmRleCA9IHBhdGgubGVuZ3RoO1xuICBpZiAodmVyc2lvblN0YXJ0SW5kZXggPT09IC0xKSB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGgubGVuZ3RoO1xuXG4gIHZlcnNpb25TdGFydEluZGV4ID0gTWF0aC5taW4odmVyc2lvblN0YXJ0SW5kZXgsIHBhdGhTdGFydEluZGV4KTtcblxuICBpZiAoc3RhcnRJbmRleCA9PT0gdmVyc2lvblN0YXJ0SW5kZXgpIHtcbiAgICByZXR1cm4gY3JlYXRlRXJyKHBhY2thZ2VOb3RGb3VuZEVycm9yKHNwZWNpZmllcikpO1xuICB9XG5cbiAgY29uc3QgbmFtZSA9IHBhdGguc2xpY2Uoc3RhcnRJbmRleCwgdmVyc2lvblN0YXJ0SW5kZXgpO1xuICBjb25zdCB0YWcgPSBwYXRoLnNsaWNlKHZlcnNpb25TdGFydEluZGV4ICsgMSwgcGF0aFN0YXJ0SW5kZXgpO1xuICBjb25zdCByYW5nZSA9IHRhZyA/IHRyeVBhcnNlUmFuZ2UodGFnKSA/PyBbW0FMTF1dIDogW1tBTExdXTtcbiAgY29uc3QgcmF3RW50cnlQb2ludCA9IHBhdGguc2xpY2UocGF0aFN0YXJ0SW5kZXggKyAxKTtcbiAgY29uc3QgZW50cnlQb2ludCA9IHJhd0VudHJ5UG9pbnRcbiAgICA/IGAuLyR7cmF3RW50cnlQb2ludH1gIGFzIGNvbnN0XG4gICAgOiBcIi5cIiBhcyBjb25zdDtcbiAgY29uc3QgbnBtOiBOcG1TcGVjaWZpZXIgPSB7IG5hbWUsIHJhbmdlLCBlbnRyeVBvaW50IH07XG4gIGlmICh0YWcpIG5wbS50YWcgPSB0YWc7XG5cbiAgcmV0dXJuIGNyZWF0ZU9rKG5wbSk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEpzclNwZWNpZmllciBleHRlbmRzIE5wbVNwZWNpZmllciB7fVxuZXhwb3J0IGludGVyZmFjZSBOb3RKc3JQcm90b2NvbEVycm9yIHtcbiAgbmFtZTogXCJOb3RKc3JQcm90b2NvbEVycm9yXCI7XG4gIHNwZWNpZmllcjogVVJMO1xufVxuZXhwb3J0IGludGVyZmFjZSBTY29wZU5vdEZvdW5kRXJyb3Ige1xuICBuYW1lOiBcIlNjb3BlTm90Rm91bmRFcnJvclwiO1xuICBzcGVjaWZpZXI6IFVSTDtcbn1cblxuZXhwb3J0IGNvbnN0IHBhcnNlSnNyU3BlY2lmaWVyID0gKFxuICBzcGVjaWZpZXI6IFVSTCxcbik6IFJlc3VsdDxcbiAgSnNyU3BlY2lmaWVyLFxuICBOb3RKc3JQcm90b2NvbEVycm9yIHwgU2NvcGVOb3RGb3VuZEVycm9yIHwgUGFja2FnZU5vdEZvdW5kRXJyb3Jcbj4gPT4ge1xuICBpZiAoc3BlY2lmaWVyLnByb3RvY29sICE9PSBcImpzcjpcIikge1xuICAgIHJldHVybiBjcmVhdGVFcnIoeyBuYW1lOiBcIk5vdEpzclByb3RvY29sRXJyb3JcIiwgc3BlY2lmaWVyIH0pO1xuICB9XG4gIGNvbnN0IHBhdGggPSBzcGVjaWZpZXIucGF0aG5hbWU7XG4gIGNvbnN0IHN0YXJ0SW5kZXggPSBwYXRoWzBdID09PSBcIi9cIiA/IDEgOiAwO1xuICBpZiAocGF0aFtzdGFydEluZGV4XSAhPT0gXCJAXCIpIHtcbiAgICByZXR1cm4gY3JlYXRlRXJyKHsgbmFtZTogXCJTY29wZU5vdEZvdW5kRXJyb3JcIiwgc3BlY2lmaWVyIH0pO1xuICB9XG4gIGNvbnN0IGZpcnN0U2xhc2ggPSBwYXRoLmluZGV4T2YoXCIvXCIsIHN0YXJ0SW5kZXgpO1xuICBpZiAoZmlyc3RTbGFzaCA9PT0gLTEpIHJldHVybiBjcmVhdGVFcnIocGFja2FnZU5vdEZvdW5kRXJyb3Ioc3BlY2lmaWVyKSk7XG4gIGxldCBwYXRoU3RhcnRJbmRleCA9IHBhdGguaW5kZXhPZihcIi9cIiwgZmlyc3RTbGFzaCArIDEpO1xuICBsZXQgdmVyc2lvblN0YXJ0SW5kZXggPSBwYXRoLmluZGV4T2YoXCJAXCIsIGZpcnN0U2xhc2ggKyAxKTtcblxuICBpZiAocGF0aFN0YXJ0SW5kZXggPT09IC0xKSBwYXRoU3RhcnRJbmRleCA9IHBhdGgubGVuZ3RoO1xuICBpZiAodmVyc2lvblN0YXJ0SW5kZXggPT09IC0xKSB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGgubGVuZ3RoO1xuXG4gIHZlcnNpb25TdGFydEluZGV4ID0gTWF0aC5taW4odmVyc2lvblN0YXJ0SW5kZXgsIHBhdGhTdGFydEluZGV4KTtcbiAgY29uc3QgbmFtZSA9IHBhdGguc2xpY2Uoc3RhcnRJbmRleCwgdmVyc2lvblN0YXJ0SW5kZXgpO1xuICBjb25zdCB0YWcgPSBwYXRoLnNsaWNlKHZlcnNpb25TdGFydEluZGV4ICsgMSwgcGF0aFN0YXJ0SW5kZXgpO1xuICBjb25zdCByYW5nZSA9IHRhZyA/IHRyeVBhcnNlUmFuZ2UodGFnKSA/PyBbW0FMTF1dIDogW1tBTExdXTtcbiAgY29uc3QgcmF3RW50cnlQb2ludCA9IHBhdGguc2xpY2UocGF0aFN0YXJ0SW5kZXggKyAxKTtcbiAgY29uc3QgZW50cnlQb2ludCA9IHJhd0VudHJ5UG9pbnRcbiAgICA/IGAuLyR7cmF3RW50cnlQb2ludH1gIGFzIGNvbnN0XG4gICAgOiBcIi5cIiBhcyBjb25zdDtcbiAgY29uc3QganNyOiBKc3JTcGVjaWZpZXIgPSB7IG5hbWUsIHJhbmdlLCBlbnRyeVBvaW50IH07XG4gIGlmICh0YWcpIGpzci50YWcgPSB0YWc7XG5cbiAgcmV0dXJuIGNyZWF0ZU9rKGpzcik7XG59O1xuIiwgIi8qKlxuICogQ29udmVydHMgYSBCbG9iIG9iamVjdCB0byBhIGRhdGEgVVJMIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gZGF0YSAtIFRoZSBCbG9iIG9iamVjdCB0byBjb252ZXJ0LlxuICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgZGF0YSBVUkwgc3RyaW5nLlxuICovXG5leHBvcnQgY29uc3QgdG9EYXRhVVJMID0gKGRhdGE6IEJsb2IpOiBQcm9taXNlPHN0cmluZz4gPT5cbiAgbmV3IFByb21pc2UoXG4gICAgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICBcImxvYWRcIixcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGFVUkwgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGRhdGFVUkwuaW5kZXhPZihcIjtcIik7XG4gICAgICAgICAgaWYgKGRhdGFVUkwuc3RhcnRzV2l0aChcIjsgY2hhcnNldD11dGYtOFwiLCBpbmRleCkpIHtcbiAgICAgICAgICAgIHJlc29sdmUoYCR7ZGF0YVVSTC5zbGljZSgwLCBpbmRleCl9JHtkYXRhVVJMLnNsaWNlKGluZGV4ICsgMTUpfWApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKGRhdGFVUkwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsICgpID0+IHJlamVjdChyZWFkZXIuZXJyb3IpKTtcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGRhdGEpO1xuICAgIH0sXG4gICk7XG4iLCAiaW1wb3J0IHtcbiAgTG9hZGVyLFxuICBPbkxvYWRSZXN1bHQsXG4gIE9uUmVzb2x2ZUFyZ3MsXG4gIE9uUmVzb2x2ZVJlc3VsdCxcbiAgUGx1Z2luLFxufSBmcm9tIFwiLi9kZXBzL2VzYnVpbGQtd2FzbS50c1wiO1xuaW1wb3J0IHsgaXNFcnIsIGlzT2ssIFJlc3VsdCwgdW53cmFwRXJyLCB1bndyYXBPayB9IGZyb20gXCIuL2RlcHMvb3B0aW9uLXQudHNcIjtcbmltcG9ydCB7XG4gIGVzYnVpbGRSZXNvbHV0aW9uVG9VUkwsXG4gIHVybFRvRXNidWlsZFJlc29sdXRpb24sXG59IGZyb20gXCIuL2VzYnVpbGRSZXNvbHV0aW9uLnRzXCI7XG5pbXBvcnQgeyBleHRyYWN0U291cmNlTWFwVVJMIH0gZnJvbSBcIi4vZXh0cmFjdFNvdXJjZU1hcFVSTC50c1wiO1xuaW1wb3J0IHtcbiAgaXNMb2FkZXJXaGljaENhbkluY2x1ZGVTb3VyY2VNYXBwaW5nVVJMLFxuICByZXNwb25zZVRvTG9hZGVyLFxufSBmcm9tIFwiLi9sb2FkZXIudHNcIjtcbmltcG9ydCB7XG4gIHBhY2thZ2VWZXJzaW9uTWFwcGluZyxcbiAgcmVzb2x2ZUpzclNwZWNpZmllcixcbiAgcmVzb2x2ZU5wbVNwZWNpZmllcixcbn0gZnJvbSBcIi4vcmVzb2x2ZS50c1wiO1xuaW1wb3J0IHsgUm9idXN0RmV0Y2gsIHJvYnVzdEZldGNoIH0gZnJvbSBcIi4vcm9idXN0RmV0Y2gudHNcIjtcbmltcG9ydCB7XG4gIE5vdEpzclByb3RvY29sRXJyb3IsXG4gIE5vdE5wbVByb3RvY29sRXJyb3IsXG4gIE5wbVNwZWNpZmllcixcbiAgT25seVNjb3BlUHJvdmlkZWRFcnJvcixcbiAgUGFja2FnZU5vdEZvdW5kRXJyb3IsXG4gIHBhcnNlSnNyU3BlY2lmaWVyLFxuICBwYXJzZU5wbVNwZWNpZmllcixcbiAgU2NvcGVOb3RGb3VuZEVycm9yLFxufSBmcm9tIFwiLi9zcGVjaWZpZXJzLnRzXCI7XG5pbXBvcnQgeyB0b0RhdGFVUkwgfSBmcm9tIFwiLi90b0RhdGFVUkwudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSZW1vdGVMb2FkZXJJbml0IHtcbiAgaW1wb3J0TWFwVVJMPzogVVJMO1xuICByZWxvYWQ/OiBib29sZWFuIHwgVVJMUGF0dGVybltdO1xuICBmZXRjaD86IFJvYnVzdEZldGNoO1xuXG4gIG9uUHJvZ3Jlc3M/OiAobWVzc2FnZTogTG9hZEV2ZW50KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvYWRFdmVudCB7XG4gIHBhdGg6IFVSTDtcbiAgZG9uZTogUHJvbWlzZTx7IHNpemU6IG51bWJlcjsgbG9hZGVyOiBMb2FkZXI7IGlzQ2FjaGU6IGJvb2xlYW4gfT47XG59XG5leHBvcnQgY29uc3QgcmVtb3RlTG9hZGVyID0gKFxuICBpbml0OiBSZW1vdGVMb2FkZXJJbml0LFxuKTogUGx1Z2luID0+IHtcbiAgY29uc3QgcmVzb2x2ZWRWZXJzaW9uczogcGFja2FnZVZlcnNpb25NYXBwaW5nID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0IHByb3h5ID0gYXN5bmMgKFxuICAgIGFyZ3M6IE9uUmVzb2x2ZUFyZ3MsXG4gICk6IFByb21pc2U8T25SZXNvbHZlUmVzdWx0PiA9PiB7XG4gICAgY29uc3QgaXNOcG0gPSBhcmdzLm5hbWVzcGFjZSA9PT0gXCJucG1cIjtcbiAgICBjb25zdCByZXN1bHQ6IFJlc3VsdDxcbiAgICAgIE5wbVNwZWNpZmllcixcbiAgICAgIHwgTm90TnBtUHJvdG9jb2xFcnJvclxuICAgICAgfCBPbmx5U2NvcGVQcm92aWRlZEVycm9yXG4gICAgICB8IFBhY2thZ2VOb3RGb3VuZEVycm9yXG4gICAgICB8IE5vdEpzclByb3RvY29sRXJyb3JcbiAgICAgIHwgU2NvcGVOb3RGb3VuZEVycm9yXG4gICAgPiA9IChpc05wbSA/IHBhcnNlTnBtU3BlY2lmaWVyIDogcGFyc2VKc3JTcGVjaWZpZXIpKFxuICAgICAgZXNidWlsZFJlc29sdXRpb25Ub1VSTChhcmdzKSxcbiAgICApO1xuICAgIGlmIChpc0VycihyZXN1bHQpKSB7XG4gICAgICBjb25zdCBkZXRhaWwgPSB1bndyYXBFcnIocmVzdWx0KTtcbiAgICAgIHJldHVybiB7IGVycm9yczogW3sgdGV4dDogZGV0YWlsLm5hbWUsIGRldGFpbCB9XSB9O1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQyID0gYXdhaXQgKGlzTnBtID8gcmVzb2x2ZU5wbVNwZWNpZmllciA6IHJlc29sdmVKc3JTcGVjaWZpZXIpKFxuICAgICAgdW53cmFwT2socmVzdWx0KSxcbiAgICAgIHsgcmVzb2x2ZWRWZXJzaW9ucywgLi4uaW5pdCB9LFxuICAgICk7XG5cbiAgICBpZiAoaXNFcnIocmVzdWx0MikpIHtcbiAgICAgIGNvbnN0IGRldGFpbCA9IHVud3JhcEVycihyZXN1bHQyKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVycm9yczogW3sgdGV4dDogYCR7ZGV0YWlsLm5hbWV9ICR7ZGV0YWlsLm1lc3NhZ2V9YCwgZGV0YWlsIH1dLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsVG9Fc2J1aWxkUmVzb2x1dGlvbih1bndyYXBPayhyZXN1bHQyKSk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBcInJlbW90ZS1sb2FkZXJcIixcbiAgICBzZXR1cCh7IG9uTG9hZCwgb25SZXNvbHZlLCBpbml0aWFsT3B0aW9ucyB9KSB7XG4gICAgICBmb3IgKFxuICAgICAgICBjb25zdCBwcm90b2NvbCBvZiBbLi4uc3VwcG9ydGVkUHJvdG9jb2xzLCAuLi5ub3RTdXBwb3J0ZWRQcm90b2NvbHNdXG4gICAgICApIHtcbiAgICAgICAgb25SZXNvbHZlKFxuICAgICAgICAgIHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IHByb3RvY29sLnNsaWNlKDAsIC0xKSB9LFxuICAgICAgICAgIGhhbmRsZVJlc29sdmUsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIG9uUmVzb2x2ZSh7IGZpbHRlcjogLy4qLywgbmFtZXNwYWNlOiBcIm5wbVwiIH0sIHByb3h5KTtcbiAgICAgIG9uUmVzb2x2ZSh7IGZpbHRlcjogLy4qLywgbmFtZXNwYWNlOiBcImpzclwiIH0sIHByb3h5KTtcblxuICAgICAgZm9yIChjb25zdCBwcm90b2NvbCBvZiBzdXBwb3J0ZWRQcm90b2NvbHMpIHtcbiAgICAgICAgb25Mb2FkKFxuICAgICAgICAgIHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IHByb3RvY29sLnNsaWNlKDAsIC0xKSB9LFxuICAgICAgICAgIChhcmdzKSA9PlxuICAgICAgICAgICAgbG9hZChlc2J1aWxkUmVzb2x1dGlvblRvVVJMKGFyZ3MpLCB7XG4gICAgICAgICAgICAgIC4uLmluaXQsXG4gICAgICAgICAgICAgIHNvdXJjZW1hcDogaW5pdGlhbE9wdGlvbnMuc291cmNlbWFwICE9PSBmYWxzZSAmJlxuICAgICAgICAgICAgICAgIGluaXRpYWxPcHRpb25zLnNvdXJjZW1hcCAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IHByb3RvY29sIG9mIG5vdFN1cHBvcnRlZFByb3RvY29scykge1xuICAgICAgICBvbkxvYWQoeyBmaWx0ZXI6IC8uKi8sIG5hbWVzcGFjZTogcHJvdG9jb2wuc2xpY2UoMCwgLTEpIH0sICgpID0+IHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cHJvdG9jb2x9IGltcG9ydCBpcyBub3Qgc3VwcG9ydGVkIHlldC5gKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn07XG5cbmNvbnN0IGhhbmRsZVJlc29sdmUgPSAoXG4gIGFyZ3M6IE9uUmVzb2x2ZUFyZ3MsXG4pOiBPblJlc29sdmVSZXN1bHQgfCBQcm9taXNlPE9uUmVzb2x2ZVJlc3VsdD4gPT4gKHtcbiAgcGF0aDogYXJncy5wYXRoLFxuICBuYW1lc3BhY2U6IGFyZ3MubmFtZXNwYWNlLFxufSk7XG5cbmNvbnN0IHN1cHBvcnRlZFByb3RvY29scyA9IFtcbiAgXCJodHRwOlwiLFxuICBcImh0dHBzOlwiLFxuICBcImRhdGE6XCIsXG5dIGFzIGNvbnN0O1xuY29uc3Qgbm90U3VwcG9ydGVkUHJvdG9jb2xzID0gW1wibm9kZTpcIl0gYXMgY29uc3Q7XG5cbmludGVyZmFjZSBMb2FkSW5pdCBleHRlbmRzIFJlbW90ZUxvYWRlckluaXQge1xuICBzb3VyY2VtYXA6IGJvb2xlYW47XG59XG5jb25zdCBsb2FkID0gYXN5bmMgKFxuICB1cmw6IFVSTCxcbiAgaW5pdDogTG9hZEluaXQsXG4pOiBQcm9taXNlPE9uTG9hZFJlc3VsdD4gPT4ge1xuICBjb25zdCBjYWNoZUZpcnN0ID0gIWluaXQucmVsb2FkXG4gICAgPyB0cnVlXG4gICAgOiBpbml0LnJlbG9hZCA9PT0gdHJ1ZVxuICAgID8gZmFsc2VcbiAgICA6ICFpbml0LnJlbG9hZC5zb21lKChwYXR0ZXJuKSA9PiBwYXR0ZXJuLnRlc3QodXJsKSk7XG4gIGNvbnN0IGZldGNoID0gaW5pdC5mZXRjaCA/PyByb2J1c3RGZXRjaDtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaChuZXcgUmVxdWVzdCh1cmwpLCBjYWNoZUZpcnN0KTtcbiAgaWYgKGlzRXJyKHJlc3VsdCkpIHtcbiAgICBjb25zdCBkZXRhaWwgPSB1bndyYXBFcnIocmVzdWx0KTtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3JzOiBbe1xuICAgICAgICB0ZXh0OiBgWyR7ZGV0YWlsLm1lc3NhZ2V9XSBGYWlsZWQgdG8gZmV0Y2ggJHt1cmx9YCxcbiAgICAgICAgZGV0YWlsOiB1bndyYXBFcnIocmVzdWx0KSxcbiAgICAgIH1dLFxuICAgIH07XG4gIH1cbiAgY29uc3QgW3JlcywgaXNDYWNoZV0gPSB1bndyYXBPayhyZXN1bHQpO1xuICBjb25zdCBsb2FkZXIgPSByZXNwb25zZVRvTG9hZGVyKHJlcyk7XG4gIGluaXQub25Qcm9ncmVzcz8uKHtcbiAgICBwYXRoOiB1cmwsXG4gICAgZG9uZTogcmVzLmNsb25lKCkuYmxvYigpLnRoZW4oKGJsb2IpID0+ICh7XG4gICAgICBzaXplOiBibG9iLnNpemUsXG4gICAgICBsb2FkZXIsXG4gICAgICBpc0NhY2hlLFxuICAgIH0pKSxcbiAgfSk7XG4gIGNvbnN0IGJsb2IgPSBhd2FpdCByZXMuYmxvYigpO1xuICBpZiAoaW5pdC5zb3VyY2VtYXAgJiYgaXNMb2FkZXJXaGljaENhbkluY2x1ZGVTb3VyY2VNYXBwaW5nVVJMKGxvYWRlcikpIHtcbiAgICBjb25zdCBjb250ZW50cyA9IGF3YWl0IGJsb2IudGV4dCgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGV4dHJhY3RTb3VyY2VNYXBVUkwoY29udGVudHMsIHVybCk7XG4gICAgaWYgKGlzT2socmVzdWx0KSkge1xuICAgICAgY29uc3QgeyB1cmw6IHNvdXJjZU1hcHBpbmdVUkwsIHN0YXJ0LCBlbmQgfSA9IHVud3JhcE9rKHJlc3VsdCk7XG4gICAgICBpZiAoc291cmNlTWFwcGluZ1VSTC5wcm90b2NvbCAhPT0gXCJkYXRhOlwiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKG5ldyBSZXF1ZXN0KHNvdXJjZU1hcHBpbmdVUkwpLCBjYWNoZUZpcnN0KTtcbiAgICAgICAgaWYgKGlzRXJyKHJlcykpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29udGVudHMsXG4gICAgICAgICAgICBsb2FkZXIsXG4gICAgICAgICAgICB3YXJuaW5nczogW3tcbiAgICAgICAgICAgICAgdGV4dDogYFske1xuICAgICAgICAgICAgICAgIHVud3JhcEVycihyZXMpLm1lc3NhZ2VcbiAgICAgICAgICAgICAgfV0gRmFpbGVkIHRvIGZldGNoIHRoZSBzb3VyY2UgbWFwIFVSTGAsXG4gICAgICAgICAgICAgIG5vdGVzOiBbe1xuICAgICAgICAgICAgICAgIHRleHQ6IGBTb3VyY2UgbWFwIFVSTDogJHtzb3VyY2VNYXBwaW5nVVJMfWAsXG4gICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBgT3JpZ2luYWwgVVJMOiAke3VybH1gLFxuICAgICAgICAgICAgICB9XSxcbiAgICAgICAgICAgICAgZGV0YWlsOiB1bndyYXBFcnIocmVzKSxcbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YVVSTCA9IGF3YWl0IHVud3JhcE9rKHJlcylbMF0uYmxvYigpLnRoZW4odG9EYXRhVVJMKTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWQgPSBjb250ZW50cy5zbGljZSgwLCBzdGFydCkgKyBkYXRhVVJMICtcbiAgICAgICAgICBjb250ZW50cy5zbGljZShlbmQpO1xuICAgICAgICByZXR1cm4geyBjb250ZW50czogcmVwbGFjZWQsIGxvYWRlciB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGNvbnRlbnRzOiBuZXcgVWludDhBcnJheShhd2FpdCBibG9iLmFycmF5QnVmZmVyKCkpLCBsb2FkZXIgfTtcbn07XG4iLCAidmFyIFI9Y2xhc3N7dHlwZT0zO25hbWU9XCJcIjtwcmVmaXg9XCJcIjt2YWx1ZT1cIlwiO3N1ZmZpeD1cIlwiO21vZGlmaWVyPTM7Y29uc3RydWN0b3IodCxyLG4sbyxjLGwpe3RoaXMudHlwZT10LHRoaXMubmFtZT1yLHRoaXMucHJlZml4PW4sdGhpcy52YWx1ZT1vLHRoaXMuc3VmZml4PWMsdGhpcy5tb2RpZmllcj1sfWhhc0N1c3RvbU5hbWUoKXtyZXR1cm4gdGhpcy5uYW1lIT09XCJcIlx1MDAyNlx1MDAyNnR5cGVvZiB0aGlzLm5hbWUhPVwibnVtYmVyXCJ9fSxiZT0vWyRfXFxwe0lEX1N0YXJ0fV0vdSxQZT0vWyRfXFx1MjAwQ1xcdTIwMERcXHB7SURfQ29udGludWV9XS91LE09XCIuKlwiO2Z1bmN0aW9uIFJlKGUsdCl7cmV0dXJuKHQ/L15bXFx4MDAtXFx4RkZdKiQvOi9eW1xceDAwLVxceDdGXSokLykudGVzdChlKX1mdW5jdGlvbiB2KGUsdD0hMSl7bGV0IHI9W10sbj0wO2Zvcig7blx1MDAzY2UubGVuZ3RoOyl7bGV0IG89ZVtuXSxjPWZ1bmN0aW9uKGwpe2lmKCF0KXRocm93IG5ldyBUeXBlRXJyb3IobCk7ci5wdXNoKHt0eXBlOlwiSU5WQUxJRF9DSEFSXCIsaW5kZXg6bix2YWx1ZTplW24rK119KX07aWYobz09PVwiKlwiKXtyLnB1c2goe3R5cGU6XCJBU1RFUklTS1wiLGluZGV4Om4sdmFsdWU6ZVtuKytdfSk7Y29udGludWV9aWYobz09PVwiK1wifHxvPT09XCI/XCIpe3IucHVzaCh7dHlwZTpcIk9USEVSX01PRElGSUVSXCIsaW5kZXg6bix2YWx1ZTplW24rK119KTtjb250aW51ZX1pZihvPT09XCJcXFxcXCIpe3IucHVzaCh7dHlwZTpcIkVTQ0FQRURfQ0hBUlwiLGluZGV4Om4rKyx2YWx1ZTplW24rK119KTtjb250aW51ZX1pZihvPT09XCJ7XCIpe3IucHVzaCh7dHlwZTpcIk9QRU5cIixpbmRleDpuLHZhbHVlOmVbbisrXX0pO2NvbnRpbnVlfWlmKG89PT1cIn1cIil7ci5wdXNoKHt0eXBlOlwiQ0xPU0VcIixpbmRleDpuLHZhbHVlOmVbbisrXX0pO2NvbnRpbnVlfWlmKG89PT1cIjpcIil7bGV0IGw9XCJcIixzPW4rMTtmb3IoO3NcdTAwM2NlLmxlbmd0aDspe2xldCBpPWUuc3Vic3RyKHMsMSk7aWYocz09PW4rMVx1MDAyNlx1MDAyNmJlLnRlc3QoaSl8fHMhPT1uKzFcdTAwMjZcdTAwMjZQZS50ZXN0KGkpKXtsKz1lW3MrK107Y29udGludWV9YnJlYWt9aWYoIWwpe2MoYE1pc3NpbmcgcGFyYW1ldGVyIG5hbWUgYXQgJHtufWApO2NvbnRpbnVlfXIucHVzaCh7dHlwZTpcIk5BTUVcIixpbmRleDpuLHZhbHVlOmx9KSxuPXM7Y29udGludWV9aWYobz09PVwiKFwiKXtsZXQgbD0xLHM9XCJcIixpPW4rMSxhPSExO2lmKGVbaV09PT1cIj9cIil7YyhgUGF0dGVybiBjYW5ub3Qgc3RhcnQgd2l0aCBcIj9cIiBhdCAke2l9YCk7Y29udGludWV9Zm9yKDtpXHUwMDNjZS5sZW5ndGg7KXtpZighUmUoZVtpXSwhMSkpe2MoYEludmFsaWQgY2hhcmFjdGVyICcke2VbaV19JyBhdCAke2l9LmApLGE9ITA7YnJlYWt9aWYoZVtpXT09PVwiXFxcXFwiKXtzKz1lW2krK10rZVtpKytdO2NvbnRpbnVlfWlmKGVbaV09PT1cIilcIil7aWYobC0tLGw9PT0wKXtpKys7YnJlYWt9fWVsc2UgaWYoZVtpXT09PVwiKFwiXHUwMDI2XHUwMDI2KGwrKyxlW2krMV0hPT1cIj9cIikpe2MoYENhcHR1cmluZyBncm91cHMgYXJlIG5vdCBhbGxvd2VkIGF0ICR7aX1gKSxhPSEwO2JyZWFrfXMrPWVbaSsrXX1pZihhKWNvbnRpbnVlO2lmKGwpe2MoYFVuYmFsYW5jZWQgcGF0dGVybiBhdCAke259YCk7Y29udGludWV9aWYoIXMpe2MoYE1pc3NpbmcgcGF0dGVybiBhdCAke259YCk7Y29udGludWV9ci5wdXNoKHt0eXBlOlwiUkVHRVhcIixpbmRleDpuLHZhbHVlOnN9KSxuPWk7Y29udGludWV9ci5wdXNoKHt0eXBlOlwiQ0hBUlwiLGluZGV4Om4sdmFsdWU6ZVtuKytdfSl9cmV0dXJuIHIucHVzaCh7dHlwZTpcIkVORFwiLGluZGV4Om4sdmFsdWU6XCJcIn0pLHJ9ZnVuY3Rpb24gRChlLHQ9e30pe2xldCByPXYoZSk7dC5kZWxpbWl0ZXI/Pz1cIi8jP1wiLHQucHJlZml4ZXM/Pz1cIi4vXCI7bGV0IG49YFteJHtTKHQuZGVsaW1pdGVyKX1dKz9gLG89W10sYz0wLGw9MCxzPVwiXCIsaT1uZXcgU2V0LGE9aD1cdTAwM2V7aWYobFx1MDAzY3IubGVuZ3RoXHUwMDI2XHUwMDI2cltsXS50eXBlPT09aClyZXR1cm4gcltsKytdLnZhbHVlfSxmPSgpPVx1MDAzZWEoXCJPVEhFUl9NT0RJRklFUlwiKT8/YShcIkFTVEVSSVNLXCIpLGQ9aD1cdTAwM2V7bGV0IHU9YShoKTtpZih1IT09dm9pZCAwKXJldHVybiB1O2xldHt0eXBlOnAsaW5kZXg6QX09cltsXTt0aHJvdyBuZXcgVHlwZUVycm9yKGBVbmV4cGVjdGVkICR7cH0gYXQgJHtBfSwgZXhwZWN0ZWQgJHtofWApfSxUPSgpPVx1MDAzZXtsZXQgaD1cIlwiLHU7Zm9yKDt1PWEoXCJDSEFSXCIpPz9hKFwiRVNDQVBFRF9DSEFSXCIpOyloKz11O3JldHVybiBofSxTZT1oPVx1MDAzZWgsTD10LmVuY29kZVBhcnR8fFNlLEk9XCJcIixVPWg9XHUwMDNle0krPWh9LCQ9KCk9XHUwMDNle0kubGVuZ3RoXHUwMDI2XHUwMDI2KG8ucHVzaChuZXcgUigzLFwiXCIsXCJcIixMKEkpLFwiXCIsMykpLEk9XCJcIil9LFY9KGgsdSxwLEEsWSk9XHUwMDNle2xldCBnPTM7c3dpdGNoKFkpe2Nhc2VcIj9cIjpnPTE7YnJlYWs7Y2FzZVwiKlwiOmc9MDticmVhaztjYXNlXCIrXCI6Zz0yO2JyZWFrfWlmKCF1XHUwMDI2XHUwMDI2IXBcdTAwMjZcdTAwMjZnPT09Myl7VShoKTtyZXR1cm59aWYoJCgpLCF1XHUwMDI2XHUwMDI2IXApe2lmKCFoKXJldHVybjtvLnB1c2gobmV3IFIoMyxcIlwiLFwiXCIsTChoKSxcIlwiLGcpKTtyZXR1cm59bGV0IG07cD9wPT09XCIqXCI/bT1NOm09cDptPW47bGV0IE89MjttPT09bj8oTz0xLG09XCJcIik6bT09PU1cdTAwMjZcdTAwMjYoTz0wLG09XCJcIik7bGV0IFA7aWYodT9QPXU6cFx1MDAyNlx1MDAyNihQPWMrKyksaS5oYXMoUCkpdGhyb3cgbmV3IFR5cGVFcnJvcihgRHVwbGljYXRlIG5hbWUgJyR7UH0nLmApO2kuYWRkKFApLG8ucHVzaChuZXcgUihPLFAsTChoKSxtLEwoQSksZykpfTtmb3IoO2xcdTAwM2NyLmxlbmd0aDspe2xldCBoPWEoXCJDSEFSXCIpLHU9YShcIk5BTUVcIikscD1hKFwiUkVHRVhcIik7aWYoIXVcdTAwMjZcdTAwMjYhcFx1MDAyNlx1MDAyNihwPWEoXCJBU1RFUklTS1wiKSksdXx8cCl7bGV0IGc9aD8/XCJcIjt0LnByZWZpeGVzLmluZGV4T2YoZyk9PT0tMVx1MDAyNlx1MDAyNihVKGcpLGc9XCJcIiksJCgpO2xldCBtPWYoKTtWKGcsdSxwLFwiXCIsbSk7Y29udGludWV9bGV0IEE9aD8/YShcIkVTQ0FQRURfQ0hBUlwiKTtpZihBKXtVKEEpO2NvbnRpbnVlfWlmKGEoXCJPUEVOXCIpKXtsZXQgZz1UKCksbT1hKFwiTkFNRVwiKSxPPWEoXCJSRUdFWFwiKTshbVx1MDAyNlx1MDAyNiFPXHUwMDI2XHUwMDI2KE89YShcIkFTVEVSSVNLXCIpKTtsZXQgUD1UKCk7ZChcIkNMT1NFXCIpO2xldCB4ZT1mKCk7VihnLG0sTyxQLHhlKTtjb250aW51ZX0kKCksZChcIkVORFwiKX1yZXR1cm4gb31mdW5jdGlvbiBTKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbLisqP14ke30oKVtcXF18L1xcXFxdKS9nLFwiXFxcXCQxXCIpfWZ1bmN0aW9uIFgoZSl7cmV0dXJuIGVcdTAwMjZcdTAwMjZlLmlnbm9yZUNhc2U/XCJ1aVwiOlwidVwifWZ1bmN0aW9uIFooZSx0LHIpe3JldHVybiBGKEQoZSxyKSx0LHIpfWZ1bmN0aW9uIGsoZSl7c3dpdGNoKGUpe2Nhc2UgMDpyZXR1cm5cIipcIjtjYXNlIDE6cmV0dXJuXCI/XCI7Y2FzZSAyOnJldHVyblwiK1wiO2Nhc2UgMzpyZXR1cm5cIlwifX1mdW5jdGlvbiBGKGUsdCxyPXt9KXtyLmRlbGltaXRlcj8/PVwiLyM/XCIsci5wcmVmaXhlcz8/PVwiLi9cIixyLnNlbnNpdGl2ZT8/PSExLHIuc3RyaWN0Pz89ITEsci5lbmQ/Pz0hMCxyLnN0YXJ0Pz89ITAsci5lbmRzV2l0aD1cIlwiO2xldCBuPXIuc3RhcnQ/XCJeXCI6XCJcIjtmb3IobGV0IHMgb2YgZSl7aWYocy50eXBlPT09Myl7cy5tb2RpZmllcj09PTM/bis9UyhzLnZhbHVlKTpuKz1gKD86JHtTKHMudmFsdWUpfSkke2socy5tb2RpZmllcil9YDtjb250aW51ZX10XHUwMDI2XHUwMDI2dC5wdXNoKHMubmFtZSk7bGV0IGk9YFteJHtTKHIuZGVsaW1pdGVyKX1dKz9gLGE9cy52YWx1ZTtpZihzLnR5cGU9PT0xP2E9aTpzLnR5cGU9PT0wXHUwMDI2XHUwMDI2KGE9TSksIXMucHJlZml4Lmxlbmd0aFx1MDAyNlx1MDAyNiFzLnN1ZmZpeC5sZW5ndGgpe3MubW9kaWZpZXI9PT0zfHxzLm1vZGlmaWVyPT09MT9uKz1gKCR7YX0pJHtrKHMubW9kaWZpZXIpfWA6bis9YCgoPzoke2F9KSR7ayhzLm1vZGlmaWVyKX0pYDtjb250aW51ZX1pZihzLm1vZGlmaWVyPT09M3x8cy5tb2RpZmllcj09PTEpe24rPWAoPzoke1Mocy5wcmVmaXgpfSgke2F9KSR7UyhzLnN1ZmZpeCl9KWAsbis9ayhzLm1vZGlmaWVyKTtjb250aW51ZX1uKz1gKD86JHtTKHMucHJlZml4KX1gLG4rPWAoKD86JHthfSkoPzpgLG4rPVMocy5zdWZmaXgpLG4rPVMocy5wcmVmaXgpLG4rPWAoPzoke2F9KSkqKSR7UyhzLnN1ZmZpeCl9KWAscy5tb2RpZmllcj09PTBcdTAwMjZcdTAwMjYobis9XCI/XCIpfWxldCBvPWBbJHtTKHIuZW5kc1dpdGgpfV18JGAsYz1gWyR7UyhyLmRlbGltaXRlcil9XWA7aWYoci5lbmQpcmV0dXJuIHIuc3RyaWN0fHwobis9YCR7Y30/YCksci5lbmRzV2l0aC5sZW5ndGg/bis9YCg/PSR7b30pYDpuKz1cIiRcIixuZXcgUmVnRXhwKG4sWChyKSk7ci5zdHJpY3R8fChuKz1gKD86JHtjfSg/PSR7b30pKT9gKTtsZXQgbD0hMTtpZihlLmxlbmd0aCl7bGV0IHM9ZVtlLmxlbmd0aC0xXTtzLnR5cGU9PT0zXHUwMDI2XHUwMDI2cy5tb2RpZmllcj09PTNcdTAwMjZcdTAwMjYobD1yLmRlbGltaXRlci5pbmRleE9mKHMpXHUwMDNlLTEpfXJldHVybiBsfHwobis9YCg/PSR7Y318JHtvfSlgKSxuZXcgUmVnRXhwKG4sWChyKSl9dmFyIHg9e2RlbGltaXRlcjpcIlwiLHByZWZpeGVzOlwiXCIsc2Vuc2l0aXZlOiEwLHN0cmljdDohMH0sQj17ZGVsaW1pdGVyOlwiLlwiLHByZWZpeGVzOlwiXCIsc2Vuc2l0aXZlOiEwLHN0cmljdDohMH0scT17ZGVsaW1pdGVyOlwiL1wiLHByZWZpeGVzOlwiL1wiLHNlbnNpdGl2ZTohMCxzdHJpY3Q6ITB9O2Z1bmN0aW9uIEooZSx0KXtyZXR1cm4gZS5sZW5ndGg/ZVswXT09PVwiL1wiPyEwOiF0fHxlLmxlbmd0aFx1MDAzYzI/ITE6KGVbMF09PVwiXFxcXFwifHxlWzBdPT1cIntcIilcdTAwMjZcdTAwMjZlWzFdPT1cIi9cIjohMX1mdW5jdGlvbiBRKGUsdCl7cmV0dXJuIGUuc3RhcnRzV2l0aCh0KT9lLnN1YnN0cmluZyh0Lmxlbmd0aCxlLmxlbmd0aCk6ZX1mdW5jdGlvbiBFZShlLHQpe3JldHVybiBlLmVuZHNXaXRoKHQpP2Uuc3Vic3RyKDAsZS5sZW5ndGgtdC5sZW5ndGgpOmV9ZnVuY3Rpb24gVyhlKXtyZXR1cm4hZXx8ZS5sZW5ndGhcdTAwM2MyPyExOmVbMF09PT1cIltcInx8KGVbMF09PT1cIlxcXFxcInx8ZVswXT09PVwie1wiKVx1MDAyNlx1MDAyNmVbMV09PT1cIltcIn12YXIgZWU9W1wiZnRwXCIsXCJmaWxlXCIsXCJodHRwXCIsXCJodHRwc1wiLFwid3NcIixcIndzc1wiXTtmdW5jdGlvbiBOKGUpe2lmKCFlKXJldHVybiEwO2ZvcihsZXQgdCBvZiBlZSlpZihlLnRlc3QodCkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gdGUoZSx0KXtpZihlPVEoZSxcIiNcIiksdHx8ZT09PVwiXCIpcmV0dXJuIGU7bGV0IHI9bmV3IFVSTChcImh0dHBzOi8vZXhhbXBsZS5jb21cIik7cmV0dXJuIHIuaGFzaD1lLHIuaGFzaD9yLmhhc2guc3Vic3RyaW5nKDEsci5oYXNoLmxlbmd0aCk6XCJcIn1mdW5jdGlvbiByZShlLHQpe2lmKGU9UShlLFwiP1wiKSx0fHxlPT09XCJcIilyZXR1cm4gZTtsZXQgcj1uZXcgVVJMKFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiKTtyZXR1cm4gci5zZWFyY2g9ZSxyLnNlYXJjaD9yLnNlYXJjaC5zdWJzdHJpbmcoMSxyLnNlYXJjaC5sZW5ndGgpOlwiXCJ9ZnVuY3Rpb24gbmUoZSx0KXtyZXR1cm4gdHx8ZT09PVwiXCI/ZTpXKGUpP2ooZSk6eihlKX1mdW5jdGlvbiBzZShlLHQpe2lmKHR8fGU9PT1cIlwiKXJldHVybiBlO2xldCByPW5ldyBVUkwoXCJodHRwczovL2V4YW1wbGUuY29tXCIpO3JldHVybiByLnBhc3N3b3JkPWUsci5wYXNzd29yZH1mdW5jdGlvbiBpZShlLHQpe2lmKHR8fGU9PT1cIlwiKXJldHVybiBlO2xldCByPW5ldyBVUkwoXCJodHRwczovL2V4YW1wbGUuY29tXCIpO3JldHVybiByLnVzZXJuYW1lPWUsci51c2VybmFtZX1mdW5jdGlvbiBhZShlLHQscil7aWYocnx8ZT09PVwiXCIpcmV0dXJuIGU7aWYodFx1MDAyNlx1MDAyNiFlZS5pbmNsdWRlcyh0KSlyZXR1cm4gbmV3IFVSTChgJHt0fToke2V9YCkucGF0aG5hbWU7bGV0IG49ZVswXT09XCIvXCI7cmV0dXJuIGU9bmV3IFVSTChuP2U6XCIvLVwiK2UsXCJodHRwczovL2V4YW1wbGUuY29tXCIpLnBhdGhuYW1lLG58fChlPWUuc3Vic3RyaW5nKDIsZS5sZW5ndGgpKSxlfWZ1bmN0aW9uIG9lKGUsdCxyKXtyZXR1cm4gXyh0KT09PWVcdTAwMjZcdTAwMjYoZT1cIlwiKSxyfHxlPT09XCJcIj9lOksoZSl9ZnVuY3Rpb24gY2UoZSx0KXtyZXR1cm4gZT1FZShlLFwiOlwiKSx0fHxlPT09XCJcIj9lOnkoZSl9ZnVuY3Rpb24gXyhlKXtzd2l0Y2goZSl7Y2FzZVwid3NcIjpjYXNlXCJodHRwXCI6cmV0dXJuXCI4MFwiO2Nhc2VcInd3c1wiOmNhc2VcImh0dHBzXCI6cmV0dXJuXCI0NDNcIjtjYXNlXCJmdHBcIjpyZXR1cm5cIjIxXCI7ZGVmYXVsdDpyZXR1cm5cIlwifX1mdW5jdGlvbiB5KGUpe2lmKGU9PT1cIlwiKXJldHVybiBlO2lmKC9eWy0rLkEtWmEtejAtOV0qJC8udGVzdChlKSlyZXR1cm4gZS50b0xvd2VyQ2FzZSgpO3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgcHJvdG9jb2wgJyR7ZX0nLmApfWZ1bmN0aW9uIGxlKGUpe2lmKGU9PT1cIlwiKXJldHVybiBlO2xldCB0PW5ldyBVUkwoXCJodHRwczovL2V4YW1wbGUuY29tXCIpO3JldHVybiB0LnVzZXJuYW1lPWUsdC51c2VybmFtZX1mdW5jdGlvbiBmZShlKXtpZihlPT09XCJcIilyZXR1cm4gZTtsZXQgdD1uZXcgVVJMKFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiKTtyZXR1cm4gdC5wYXNzd29yZD1lLHQucGFzc3dvcmR9ZnVuY3Rpb24geihlKXtpZihlPT09XCJcIilyZXR1cm4gZTtpZigvW1xcdFxcblxcciAjJS86XHUwMDNjXHUwMDNlP0BbXFxdXlxcXFx8XS9nLnRlc3QoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBob3N0bmFtZSAnJHtlfSdgKTtsZXQgdD1uZXcgVVJMKFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiKTtyZXR1cm4gdC5ob3N0bmFtZT1lLHQuaG9zdG5hbWV9ZnVuY3Rpb24gaihlKXtpZihlPT09XCJcIilyZXR1cm4gZTtpZigvW14wLTlhLWZBLUZbXFxdOl0vZy50ZXN0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgSVB2NiBob3N0bmFtZSAnJHtlfSdgKTtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIEsoZSl7aWYoZT09PVwiXCJ8fC9eWzAtOV0qJC8udGVzdChlKVx1MDAyNlx1MDAyNnBhcnNlSW50KGUpXHUwMDNjPTY1NTM1KXJldHVybiBlO3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgcG9ydCAnJHtlfScuYCl9ZnVuY3Rpb24gaGUoZSl7aWYoZT09PVwiXCIpcmV0dXJuIGU7bGV0IHQ9bmV3IFVSTChcImh0dHBzOi8vZXhhbXBsZS5jb21cIik7cmV0dXJuIHQucGF0aG5hbWU9ZVswXSE9PVwiL1wiP1wiLy1cIitlOmUsZVswXSE9PVwiL1wiP3QucGF0aG5hbWUuc3Vic3RyaW5nKDIsdC5wYXRobmFtZS5sZW5ndGgpOnQucGF0aG5hbWV9ZnVuY3Rpb24gdWUoZSl7cmV0dXJuIGU9PT1cIlwiP2U6bmV3IFVSTChgZGF0YToke2V9YCkucGF0aG5hbWV9ZnVuY3Rpb24gZGUoZSl7aWYoZT09PVwiXCIpcmV0dXJuIGU7bGV0IHQ9bmV3IFVSTChcImh0dHBzOi8vZXhhbXBsZS5jb21cIik7cmV0dXJuIHQuc2VhcmNoPWUsdC5zZWFyY2guc3Vic3RyaW5nKDEsdC5zZWFyY2gubGVuZ3RoKX1mdW5jdGlvbiBwZShlKXtpZihlPT09XCJcIilyZXR1cm4gZTtsZXQgdD1uZXcgVVJMKFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiKTtyZXR1cm4gdC5oYXNoPWUsdC5oYXNoLnN1YnN0cmluZygxLHQuaGFzaC5sZW5ndGgpfXZhciBIPWNsYXNzeyNpOyNuPVtdOyN0PXt9OyNlPTA7I3M9MTsjbD0wOyNvPTA7I2Q9MDsjcD0wOyNnPSExO2NvbnN0cnVjdG9yKHQpe3RoaXMuI2k9dH1nZXQgcmVzdWx0KCl7cmV0dXJuIHRoaXMuI3R9cGFyc2UoKXtmb3IodGhpcy4jbj12KHRoaXMuI2ksITApO3RoaXMuI2VcdTAwM2N0aGlzLiNuLmxlbmd0aDt0aGlzLiNlKz10aGlzLiNzKXtpZih0aGlzLiNzPTEsdGhpcy4jblt0aGlzLiNlXS50eXBlPT09XCJFTkRcIil7aWYodGhpcy4jbz09PTApe3RoaXMuI2IoKSx0aGlzLiNmKCk/dGhpcy4jcig5LDEpOnRoaXMuI2goKT90aGlzLiNyKDgsMSk6dGhpcy4jcig3LDApO2NvbnRpbnVlfWVsc2UgaWYodGhpcy4jbz09PTIpe3RoaXMuI3UoNSk7Y29udGludWV9dGhpcy4jcigxMCwwKTticmVha31pZih0aGlzLiNkXHUwMDNlMClpZih0aGlzLiNBKCkpdGhpcy4jZC09MTtlbHNlIGNvbnRpbnVlO2lmKHRoaXMuI1QoKSl7dGhpcy4jZCs9MTtjb250aW51ZX1zd2l0Y2godGhpcy4jbyl7Y2FzZSAwOnRoaXMuI1AoKVx1MDAyNlx1MDAyNnRoaXMuI3UoMSk7YnJlYWs7Y2FzZSAxOmlmKHRoaXMuI1AoKSl7dGhpcy4jQygpO2xldCB0PTcscj0xO3RoaXMuI0UoKT8odD0yLHI9Myk6dGhpcy4jZ1x1MDAyNlx1MDAyNih0PTIpLHRoaXMuI3IodCxyKX1icmVhaztjYXNlIDI6dGhpcy4jUygpP3RoaXMuI3UoMyk6KHRoaXMuI3goKXx8dGhpcy4jaCgpfHx0aGlzLiNmKCkpXHUwMDI2XHUwMDI2dGhpcy4jdSg1KTticmVhaztjYXNlIDM6dGhpcy4jTygpP3RoaXMuI3IoNCwxKTp0aGlzLiNTKClcdTAwMjZcdTAwMjZ0aGlzLiNyKDUsMSk7YnJlYWs7Y2FzZSA0OnRoaXMuI1MoKVx1MDAyNlx1MDAyNnRoaXMuI3IoNSwxKTticmVhaztjYXNlIDU6dGhpcy4jeSgpP3RoaXMuI3ArPTE6dGhpcy4jdygpXHUwMDI2XHUwMDI2KHRoaXMuI3AtPTEpLHRoaXMuI2soKVx1MDAyNlx1MDAyNiF0aGlzLiNwP3RoaXMuI3IoNiwxKTp0aGlzLiN4KCk/dGhpcy4jcig3LDApOnRoaXMuI2goKT90aGlzLiNyKDgsMSk6dGhpcy4jZigpXHUwMDI2XHUwMDI2dGhpcy4jcig5LDEpO2JyZWFrO2Nhc2UgNjp0aGlzLiN4KCk/dGhpcy4jcig3LDApOnRoaXMuI2goKT90aGlzLiNyKDgsMSk6dGhpcy4jZigpXHUwMDI2XHUwMDI2dGhpcy4jcig5LDEpO2JyZWFrO2Nhc2UgNzp0aGlzLiNoKCk/dGhpcy4jcig4LDEpOnRoaXMuI2YoKVx1MDAyNlx1MDAyNnRoaXMuI3IoOSwxKTticmVhaztjYXNlIDg6dGhpcy4jZigpXHUwMDI2XHUwMDI2dGhpcy4jcig5LDEpO2JyZWFrO2Nhc2UgOTpicmVhaztjYXNlIDEwOmJyZWFrfX10aGlzLiN0Lmhvc3RuYW1lIT09dm9pZCAwXHUwMDI2XHUwMDI2dGhpcy4jdC5wb3J0PT09dm9pZCAwXHUwMDI2XHUwMDI2KHRoaXMuI3QucG9ydD1cIlwiKX0jcih0LHIpe3N3aXRjaCh0aGlzLiNvKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMuI3QucHJvdG9jb2w9dGhpcy4jYygpO2JyZWFrO2Nhc2UgMjpicmVhaztjYXNlIDM6dGhpcy4jdC51c2VybmFtZT10aGlzLiNjKCk7YnJlYWs7Y2FzZSA0OnRoaXMuI3QucGFzc3dvcmQ9dGhpcy4jYygpO2JyZWFrO2Nhc2UgNTp0aGlzLiN0Lmhvc3RuYW1lPXRoaXMuI2MoKTticmVhaztjYXNlIDY6dGhpcy4jdC5wb3J0PXRoaXMuI2MoKTticmVhaztjYXNlIDc6dGhpcy4jdC5wYXRobmFtZT10aGlzLiNjKCk7YnJlYWs7Y2FzZSA4OnRoaXMuI3Quc2VhcmNoPXRoaXMuI2MoKTticmVhaztjYXNlIDk6dGhpcy4jdC5oYXNoPXRoaXMuI2MoKTticmVhaztjYXNlIDEwOmJyZWFrfXRoaXMuI28hPT0wXHUwMDI2XHUwMDI2dCE9PTEwXHUwMDI2XHUwMDI2KFsxLDIsMyw0XS5pbmNsdWRlcyh0aGlzLiNvKVx1MDAyNlx1MDAyNls2LDcsOCw5XS5pbmNsdWRlcyh0KVx1MDAyNlx1MDAyNih0aGlzLiN0Lmhvc3RuYW1lPz89XCJcIiksWzEsMiwzLDQsNSw2XS5pbmNsdWRlcyh0aGlzLiNvKVx1MDAyNlx1MDAyNls4LDldLmluY2x1ZGVzKHQpXHUwMDI2XHUwMDI2KHRoaXMuI3QucGF0aG5hbWU/Pz10aGlzLiNnP1wiL1wiOlwiXCIpLFsxLDIsMyw0LDUsNiw3XS5pbmNsdWRlcyh0aGlzLiNvKVx1MDAyNlx1MDAyNnQ9PT05XHUwMDI2XHUwMDI2KHRoaXMuI3Quc2VhcmNoPz89XCJcIikpLHRoaXMuI1IodCxyKX0jUih0LHIpe3RoaXMuI289dCx0aGlzLiNsPXRoaXMuI2Urcix0aGlzLiNlKz1yLHRoaXMuI3M9MH0jYigpe3RoaXMuI2U9dGhpcy4jbCx0aGlzLiNzPTB9I3UodCl7dGhpcy4jYigpLHRoaXMuI289dH0jbSh0KXtyZXR1cm4gdFx1MDAzYzBcdTAwMjZcdTAwMjYodD10aGlzLiNuLmxlbmd0aC10KSx0XHUwMDNjdGhpcy4jbi5sZW5ndGg/dGhpcy4jblt0XTp0aGlzLiNuW3RoaXMuI24ubGVuZ3RoLTFdfSNhKHQscil7bGV0IG49dGhpcy4jbSh0KTtyZXR1cm4gbi52YWx1ZT09PXJcdTAwMjZcdTAwMjYobi50eXBlPT09XCJDSEFSXCJ8fG4udHlwZT09PVwiRVNDQVBFRF9DSEFSXCJ8fG4udHlwZT09PVwiSU5WQUxJRF9DSEFSXCIpfSNQKCl7cmV0dXJuIHRoaXMuI2EodGhpcy4jZSxcIjpcIil9I0UoKXtyZXR1cm4gdGhpcy4jYSh0aGlzLiNlKzEsXCIvXCIpXHUwMDI2XHUwMDI2dGhpcy4jYSh0aGlzLiNlKzIsXCIvXCIpfSNTKCl7cmV0dXJuIHRoaXMuI2EodGhpcy4jZSxcIkBcIil9I08oKXtyZXR1cm4gdGhpcy4jYSh0aGlzLiNlLFwiOlwiKX0jaygpe3JldHVybiB0aGlzLiNhKHRoaXMuI2UsXCI6XCIpfSN4KCl7cmV0dXJuIHRoaXMuI2EodGhpcy4jZSxcIi9cIil9I2goKXtpZih0aGlzLiNhKHRoaXMuI2UsXCI/XCIpKXJldHVybiEwO2lmKHRoaXMuI25bdGhpcy4jZV0udmFsdWUhPT1cIj9cIilyZXR1cm4hMTtsZXQgdD10aGlzLiNtKHRoaXMuI2UtMSk7cmV0dXJuIHQudHlwZSE9PVwiTkFNRVwiXHUwMDI2XHUwMDI2dC50eXBlIT09XCJSRUdFWFwiXHUwMDI2XHUwMDI2dC50eXBlIT09XCJDTE9TRVwiXHUwMDI2XHUwMDI2dC50eXBlIT09XCJBU1RFUklTS1wifSNmKCl7cmV0dXJuIHRoaXMuI2EodGhpcy4jZSxcIiNcIil9I1QoKXtyZXR1cm4gdGhpcy4jblt0aGlzLiNlXS50eXBlPT1cIk9QRU5cIn0jQSgpe3JldHVybiB0aGlzLiNuW3RoaXMuI2VdLnR5cGU9PVwiQ0xPU0VcIn0jeSgpe3JldHVybiB0aGlzLiNhKHRoaXMuI2UsXCJbXCIpfSN3KCl7cmV0dXJuIHRoaXMuI2EodGhpcy4jZSxcIl1cIil9I2MoKXtsZXQgdD10aGlzLiNuW3RoaXMuI2VdLHI9dGhpcy4jbSh0aGlzLiNsKS5pbmRleDtyZXR1cm4gdGhpcy4jaS5zdWJzdHJpbmcocix0LmluZGV4KX0jQygpe2xldCB0PXt9O09iamVjdC5hc3NpZ24odCx4KSx0LmVuY29kZVBhcnQ9eTtsZXQgcj1aKHRoaXMuI2MoKSx2b2lkIDAsdCk7dGhpcy4jZz1OKHIpfX07dmFyIEc9W1wicHJvdG9jb2xcIixcInVzZXJuYW1lXCIsXCJwYXNzd29yZFwiLFwiaG9zdG5hbWVcIixcInBvcnRcIixcInBhdGhuYW1lXCIsXCJzZWFyY2hcIixcImhhc2hcIl0sRT1cIipcIjtmdW5jdGlvbiBnZShlLHQpe2lmKHR5cGVvZiBlIT1cInN0cmluZ1wiKXRocm93IG5ldyBUeXBlRXJyb3IoXCJwYXJhbWV0ZXIgMSBpcyBub3Qgb2YgdHlwZSAnc3RyaW5nJy5cIik7bGV0IHI9bmV3IFVSTChlLHQpO3JldHVybntwcm90b2NvbDpyLnByb3RvY29sLnN1YnN0cmluZygwLHIucHJvdG9jb2wubGVuZ3RoLTEpLHVzZXJuYW1lOnIudXNlcm5hbWUscGFzc3dvcmQ6ci5wYXNzd29yZCxob3N0bmFtZTpyLmhvc3RuYW1lLHBvcnQ6ci5wb3J0LHBhdGhuYW1lOnIucGF0aG5hbWUsc2VhcmNoOnIuc2VhcmNoIT09XCJcIj9yLnNlYXJjaC5zdWJzdHJpbmcoMSxyLnNlYXJjaC5sZW5ndGgpOnZvaWQgMCxoYXNoOnIuaGFzaCE9PVwiXCI/ci5oYXNoLnN1YnN0cmluZygxLHIuaGFzaC5sZW5ndGgpOnZvaWQgMH19ZnVuY3Rpb24gYihlLHQpe3JldHVybiB0P0MoZSk6ZX1mdW5jdGlvbiB3KGUsdCxyKXtsZXQgbjtpZih0eXBlb2YgdC5iYXNlVVJMPT1cInN0cmluZ1wiKXRyeXtuPW5ldyBVUkwodC5iYXNlVVJMKSx0LnByb3RvY29sPT09dm9pZCAwXHUwMDI2XHUwMDI2KGUucHJvdG9jb2w9YihuLnByb3RvY29sLnN1YnN0cmluZygwLG4ucHJvdG9jb2wubGVuZ3RoLTEpLHIpKSwhclx1MDAyNlx1MDAyNnQucHJvdG9jb2w9PT12b2lkIDBcdTAwMjZcdTAwMjZ0Lmhvc3RuYW1lPT09dm9pZCAwXHUwMDI2XHUwMDI2dC5wb3J0PT09dm9pZCAwXHUwMDI2XHUwMDI2dC51c2VybmFtZT09PXZvaWQgMFx1MDAyNlx1MDAyNihlLnVzZXJuYW1lPWIobi51c2VybmFtZSxyKSksIXJcdTAwMjZcdTAwMjZ0LnByb3RvY29sPT09dm9pZCAwXHUwMDI2XHUwMDI2dC5ob3N0bmFtZT09PXZvaWQgMFx1MDAyNlx1MDAyNnQucG9ydD09PXZvaWQgMFx1MDAyNlx1MDAyNnQudXNlcm5hbWU9PT12b2lkIDBcdTAwMjZcdTAwMjZ0LnBhc3N3b3JkPT09dm9pZCAwXHUwMDI2XHUwMDI2KGUucGFzc3dvcmQ9YihuLnBhc3N3b3JkLHIpKSx0LnByb3RvY29sPT09dm9pZCAwXHUwMDI2XHUwMDI2dC5ob3N0bmFtZT09PXZvaWQgMFx1MDAyNlx1MDAyNihlLmhvc3RuYW1lPWIobi5ob3N0bmFtZSxyKSksdC5wcm90b2NvbD09PXZvaWQgMFx1MDAyNlx1MDAyNnQuaG9zdG5hbWU9PT12b2lkIDBcdTAwMjZcdTAwMjZ0LnBvcnQ9PT12b2lkIDBcdTAwMjZcdTAwMjYoZS5wb3J0PWIobi5wb3J0LHIpKSx0LnByb3RvY29sPT09dm9pZCAwXHUwMDI2XHUwMDI2dC5ob3N0bmFtZT09PXZvaWQgMFx1MDAyNlx1MDAyNnQucG9ydD09PXZvaWQgMFx1MDAyNlx1MDAyNnQucGF0aG5hbWU9PT12b2lkIDBcdTAwMjZcdTAwMjYoZS5wYXRobmFtZT1iKG4ucGF0aG5hbWUscikpLHQucHJvdG9jb2w9PT12b2lkIDBcdTAwMjZcdTAwMjZ0Lmhvc3RuYW1lPT09dm9pZCAwXHUwMDI2XHUwMDI2dC5wb3J0PT09dm9pZCAwXHUwMDI2XHUwMDI2dC5wYXRobmFtZT09PXZvaWQgMFx1MDAyNlx1MDAyNnQuc2VhcmNoPT09dm9pZCAwXHUwMDI2XHUwMDI2KGUuc2VhcmNoPWIobi5zZWFyY2guc3Vic3RyaW5nKDEsbi5zZWFyY2gubGVuZ3RoKSxyKSksdC5wcm90b2NvbD09PXZvaWQgMFx1MDAyNlx1MDAyNnQuaG9zdG5hbWU9PT12b2lkIDBcdTAwMjZcdTAwMjZ0LnBvcnQ9PT12b2lkIDBcdTAwMjZcdTAwMjZ0LnBhdGhuYW1lPT09dm9pZCAwXHUwMDI2XHUwMDI2dC5zZWFyY2g9PT12b2lkIDBcdTAwMjZcdTAwMjZ0Lmhhc2g9PT12b2lkIDBcdTAwMjZcdTAwMjYoZS5oYXNoPWIobi5oYXNoLnN1YnN0cmluZygxLG4uaGFzaC5sZW5ndGgpLHIpKX1jYXRjaHt0aHJvdyBuZXcgVHlwZUVycm9yKGBpbnZhbGlkIGJhc2VVUkwgJyR7dC5iYXNlVVJMfScuYCl9aWYodHlwZW9mIHQucHJvdG9jb2w9PVwic3RyaW5nXCJcdTAwMjZcdTAwMjYoZS5wcm90b2NvbD1jZSh0LnByb3RvY29sLHIpKSx0eXBlb2YgdC51c2VybmFtZT09XCJzdHJpbmdcIlx1MDAyNlx1MDAyNihlLnVzZXJuYW1lPWllKHQudXNlcm5hbWUscikpLHR5cGVvZiB0LnBhc3N3b3JkPT1cInN0cmluZ1wiXHUwMDI2XHUwMDI2KGUucGFzc3dvcmQ9c2UodC5wYXNzd29yZCxyKSksdHlwZW9mIHQuaG9zdG5hbWU9PVwic3RyaW5nXCJcdTAwMjZcdTAwMjYoZS5ob3N0bmFtZT1uZSh0Lmhvc3RuYW1lLHIpKSx0eXBlb2YgdC5wb3J0PT1cInN0cmluZ1wiXHUwMDI2XHUwMDI2KGUucG9ydD1vZSh0LnBvcnQsZS5wcm90b2NvbCxyKSksdHlwZW9mIHQucGF0aG5hbWU9PVwic3RyaW5nXCIpe2lmKGUucGF0aG5hbWU9dC5wYXRobmFtZSxuXHUwMDI2XHUwMDI2IUooZS5wYXRobmFtZSxyKSl7bGV0IG89bi5wYXRobmFtZS5sYXN0SW5kZXhPZihcIi9cIik7b1x1MDAzZT0wXHUwMDI2XHUwMDI2KGUucGF0aG5hbWU9YihuLnBhdGhuYW1lLnN1YnN0cmluZygwLG8rMSkscikrZS5wYXRobmFtZSl9ZS5wYXRobmFtZT1hZShlLnBhdGhuYW1lLGUucHJvdG9jb2wscil9cmV0dXJuIHR5cGVvZiB0LnNlYXJjaD09XCJzdHJpbmdcIlx1MDAyNlx1MDAyNihlLnNlYXJjaD1yZSh0LnNlYXJjaCxyKSksdHlwZW9mIHQuaGFzaD09XCJzdHJpbmdcIlx1MDAyNlx1MDAyNihlLmhhc2g9dGUodC5oYXNoLHIpKSxlfWZ1bmN0aW9uIEMoZSl7cmV0dXJuIGUucmVwbGFjZSgvKFsrKj86e30oKVxcXFxdKS9nLFwiXFxcXCQxXCIpfWZ1bmN0aW9uIE9lKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbLisqP14ke30oKVtcXF18L1xcXFxdKS9nLFwiXFxcXCQxXCIpfWZ1bmN0aW9uIGtlKGUsdCl7dC5kZWxpbWl0ZXI/Pz1cIi8jP1wiLHQucHJlZml4ZXM/Pz1cIi4vXCIsdC5zZW5zaXRpdmU/Pz0hMSx0LnN0cmljdD8/PSExLHQuZW5kPz89ITAsdC5zdGFydD8/PSEwLHQuZW5kc1dpdGg9XCJcIjtsZXQgcj1cIi4qXCIsbj1gW14ke09lKHQuZGVsaW1pdGVyKX1dKz9gLG89L1skX1xcdTIwMENcXHUyMDBEXFxwe0lEX0NvbnRpbnVlfV0vdSxjPVwiXCI7Zm9yKGxldCBsPTA7bFx1MDAzY2UubGVuZ3RoOysrbCl7bGV0IHM9ZVtsXTtpZihzLnR5cGU9PT0zKXtpZihzLm1vZGlmaWVyPT09Myl7Yys9QyhzLnZhbHVlKTtjb250aW51ZX1jKz1geyR7QyhzLnZhbHVlKX19JHtrKHMubW9kaWZpZXIpfWA7Y29udGludWV9bGV0IGk9cy5oYXNDdXN0b21OYW1lKCksYT0hIXMuc3VmZml4Lmxlbmd0aHx8ISFzLnByZWZpeC5sZW5ndGhcdTAwMjZcdTAwMjYocy5wcmVmaXgubGVuZ3RoIT09MXx8IXQucHJlZml4ZXMuaW5jbHVkZXMocy5wcmVmaXgpKSxmPWxcdTAwM2UwP2VbbC0xXTpudWxsLGQ9bFx1MDAzY2UubGVuZ3RoLTE/ZVtsKzFdOm51bGw7aWYoIWFcdTAwMjZcdTAwMjZpXHUwMDI2XHUwMDI2cy50eXBlPT09MVx1MDAyNlx1MDAyNnMubW9kaWZpZXI9PT0zXHUwMDI2XHUwMDI2ZFx1MDAyNlx1MDAyNiFkLnByZWZpeC5sZW5ndGhcdTAwMjZcdTAwMjYhZC5zdWZmaXgubGVuZ3RoKWlmKGQudHlwZT09PTMpe2xldCBUPWQudmFsdWUubGVuZ3RoXHUwMDNlMD9kLnZhbHVlWzBdOlwiXCI7YT1vLnRlc3QoVCl9ZWxzZSBhPSFkLmhhc0N1c3RvbU5hbWUoKTtpZighYVx1MDAyNlx1MDAyNiFzLnByZWZpeC5sZW5ndGhcdTAwMjZcdTAwMjZmXHUwMDI2XHUwMDI2Zi50eXBlPT09Myl7bGV0IFQ9Zi52YWx1ZVtmLnZhbHVlLmxlbmd0aC0xXTthPXQucHJlZml4ZXMuaW5jbHVkZXMoVCl9YVx1MDAyNlx1MDAyNihjKz1cIntcIiksYys9QyhzLnByZWZpeCksaVx1MDAyNlx1MDAyNihjKz1gOiR7cy5uYW1lfWApLHMudHlwZT09PTI/Yys9YCgke3MudmFsdWV9KWA6cy50eXBlPT09MT9pfHwoYys9YCgke259KWApOnMudHlwZT09PTBcdTAwMjZcdTAwMjYoIWlcdTAwMjZcdTAwMjYoIWZ8fGYudHlwZT09PTN8fGYubW9kaWZpZXIhPT0zfHxhfHxzLnByZWZpeCE9PVwiXCIpP2MrPVwiKlwiOmMrPWAoJHtyfSlgKSxzLnR5cGU9PT0xXHUwMDI2XHUwMDI2aVx1MDAyNlx1MDAyNnMuc3VmZml4Lmxlbmd0aFx1MDAyNlx1MDAyNm8udGVzdChzLnN1ZmZpeFswXSlcdTAwMjZcdTAwMjYoYys9XCJcXFxcXCIpLGMrPUMocy5zdWZmaXgpLGFcdTAwMjZcdTAwMjYoYys9XCJ9XCIpLHMubW9kaWZpZXIhPT0zXHUwMDI2XHUwMDI2KGMrPWsocy5tb2RpZmllcikpfXJldHVybiBjfXZhciBtZT1jbGFzc3sjaTsjbj17fTsjdD17fTsjZT17fTsjcz17fTsjbD0hMTtjb25zdHJ1Y3Rvcih0PXt9LHIsbil7dHJ5e2xldCBvO2lmKHR5cGVvZiByPT1cInN0cmluZ1wiP289cjpuPXIsdHlwZW9mIHQ9PVwic3RyaW5nXCIpe2xldCBpPW5ldyBIKHQpO2lmKGkucGFyc2UoKSx0PWkucmVzdWx0LG89PT12b2lkIDBcdTAwMjZcdTAwMjZ0eXBlb2YgdC5wcm90b2NvbCE9XCJzdHJpbmdcIil0aHJvdyBuZXcgVHlwZUVycm9yKFwiQSBiYXNlIFVSTCBtdXN0IGJlIHByb3ZpZGVkIGZvciBhIHJlbGF0aXZlIGNvbnN0cnVjdG9yIHN0cmluZy5cIik7dC5iYXNlVVJMPW99ZWxzZXtpZighdHx8dHlwZW9mIHQhPVwib2JqZWN0XCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcInBhcmFtZXRlciAxIGlzIG5vdCBvZiB0eXBlICdzdHJpbmcnIGFuZCBjYW5ub3QgY29udmVydCB0byBkaWN0aW9uYXJ5LlwiKTtpZihvKXRocm93IG5ldyBUeXBlRXJyb3IoXCJwYXJhbWV0ZXIgMSBpcyBub3Qgb2YgdHlwZSAnc3RyaW5nJy5cIil9dHlwZW9mIG5cdTAwM2VcInVcIlx1MDAyNlx1MDAyNihuPXtpZ25vcmVDYXNlOiExfSk7bGV0IGM9e2lnbm9yZUNhc2U6bi5pZ25vcmVDYXNlPT09ITB9LGw9e3BhdGhuYW1lOkUscHJvdG9jb2w6RSx1c2VybmFtZTpFLHBhc3N3b3JkOkUsaG9zdG5hbWU6RSxwb3J0OkUsc2VhcmNoOkUsaGFzaDpFfTt0aGlzLiNpPXcobCx0LCEwKSxfKHRoaXMuI2kucHJvdG9jb2wpPT09dGhpcy4jaS5wb3J0XHUwMDI2XHUwMDI2KHRoaXMuI2kucG9ydD1cIlwiKTtsZXQgcztmb3IocyBvZiBHKXtpZighKHMgaW4gdGhpcy4jaSkpY29udGludWU7bGV0IGk9e30sYT10aGlzLiNpW3NdO3N3aXRjaCh0aGlzLiN0W3NdPVtdLHMpe2Nhc2VcInByb3RvY29sXCI6T2JqZWN0LmFzc2lnbihpLHgpLGkuZW5jb2RlUGFydD15O2JyZWFrO2Nhc2VcInVzZXJuYW1lXCI6T2JqZWN0LmFzc2lnbihpLHgpLGkuZW5jb2RlUGFydD1sZTticmVhaztjYXNlXCJwYXNzd29yZFwiOk9iamVjdC5hc3NpZ24oaSx4KSxpLmVuY29kZVBhcnQ9ZmU7YnJlYWs7Y2FzZVwiaG9zdG5hbWVcIjpPYmplY3QuYXNzaWduKGksQiksVyhhKT9pLmVuY29kZVBhcnQ9ajppLmVuY29kZVBhcnQ9ejticmVhaztjYXNlXCJwb3J0XCI6T2JqZWN0LmFzc2lnbihpLHgpLGkuZW5jb2RlUGFydD1LO2JyZWFrO2Nhc2VcInBhdGhuYW1lXCI6Tih0aGlzLiNuLnByb3RvY29sKT8oT2JqZWN0LmFzc2lnbihpLHEsYyksaS5lbmNvZGVQYXJ0PWhlKTooT2JqZWN0LmFzc2lnbihpLHgsYyksaS5lbmNvZGVQYXJ0PXVlKTticmVhaztjYXNlXCJzZWFyY2hcIjpPYmplY3QuYXNzaWduKGkseCxjKSxpLmVuY29kZVBhcnQ9ZGU7YnJlYWs7Y2FzZVwiaGFzaFwiOk9iamVjdC5hc3NpZ24oaSx4LGMpLGkuZW5jb2RlUGFydD1wZTticmVha310cnl7dGhpcy4jc1tzXT1EKGEsaSksdGhpcy4jbltzXT1GKHRoaXMuI3Nbc10sdGhpcy4jdFtzXSxpKSx0aGlzLiNlW3NdPWtlKHRoaXMuI3Nbc10saSksdGhpcy4jbD10aGlzLiNsfHx0aGlzLiNzW3NdLnNvbWUoZj1cdTAwM2VmLnR5cGU9PT0yKX1jYXRjaHt0aHJvdyBuZXcgVHlwZUVycm9yKGBpbnZhbGlkICR7c30gcGF0dGVybiAnJHt0aGlzLiNpW3NdfScuYCl9fX1jYXRjaChvKXt0aHJvdyBuZXcgVHlwZUVycm9yKGBGYWlsZWQgdG8gY29uc3RydWN0ICdVUkxQYXR0ZXJuJzogJHtvLm1lc3NhZ2V9YCl9fXRlc3QodD17fSxyKXtsZXQgbj17cGF0aG5hbWU6XCJcIixwcm90b2NvbDpcIlwiLHVzZXJuYW1lOlwiXCIscGFzc3dvcmQ6XCJcIixob3N0bmFtZTpcIlwiLHBvcnQ6XCJcIixzZWFyY2g6XCJcIixoYXNoOlwiXCJ9O2lmKHR5cGVvZiB0IT1cInN0cmluZ1wiXHUwMDI2XHUwMDI2cil0aHJvdyBuZXcgVHlwZUVycm9yKFwicGFyYW1ldGVyIDEgaXMgbm90IG9mIHR5cGUgJ3N0cmluZycuXCIpO2lmKHR5cGVvZiB0XHUwMDNlXCJ1XCIpcmV0dXJuITE7dHJ5e3R5cGVvZiB0PT1cIm9iamVjdFwiP249dyhuLHQsITEpOm49dyhuLGdlKHQsciksITEpfWNhdGNoe3JldHVybiExfWxldCBvO2ZvcihvIG9mIEcpaWYoIXRoaXMuI25bb10uZXhlYyhuW29dKSlyZXR1cm4hMTtyZXR1cm4hMH1leGVjKHQ9e30scil7bGV0IG49e3BhdGhuYW1lOlwiXCIscHJvdG9jb2w6XCJcIix1c2VybmFtZTpcIlwiLHBhc3N3b3JkOlwiXCIsaG9zdG5hbWU6XCJcIixwb3J0OlwiXCIsc2VhcmNoOlwiXCIsaGFzaDpcIlwifTtpZih0eXBlb2YgdCE9XCJzdHJpbmdcIlx1MDAyNlx1MDAyNnIpdGhyb3cgbmV3IFR5cGVFcnJvcihcInBhcmFtZXRlciAxIGlzIG5vdCBvZiB0eXBlICdzdHJpbmcnLlwiKTtpZih0eXBlb2YgdFx1MDAzZVwidVwiKXJldHVybjt0cnl7dHlwZW9mIHQ9PVwib2JqZWN0XCI/bj13KG4sdCwhMSk6bj13KG4sZ2UodCxyKSwhMSl9Y2F0Y2h7cmV0dXJuIG51bGx9bGV0IG89e307cj9vLmlucHV0cz1bdCxyXTpvLmlucHV0cz1bdF07bGV0IGM7Zm9yKGMgb2YgRyl7bGV0IGw9dGhpcy4jbltjXS5leGVjKG5bY10pO2lmKCFsKXJldHVybiBudWxsO2xldCBzPXt9O2ZvcihsZXRbaSxhXW9mIHRoaXMuI3RbY10uZW50cmllcygpKWlmKHR5cGVvZiBhPT1cInN0cmluZ1wifHx0eXBlb2YgYT09XCJudW1iZXJcIil7bGV0IGY9bFtpKzFdO3NbYV09Zn1vW2NdPXtpbnB1dDpuW2NdPz9cIlwiLGdyb3VwczpzfX1yZXR1cm4gb31zdGF0aWMgY29tcGFyZUNvbXBvbmVudCh0LHIsbil7bGV0IG89KGksYSk9XHUwMDNle2ZvcihsZXQgZiBvZltcInR5cGVcIixcIm1vZGlmaWVyXCIsXCJwcmVmaXhcIixcInZhbHVlXCIsXCJzdWZmaXhcIl0pe2lmKGlbZl1cdTAwM2NhW2ZdKXJldHVybi0xO2lmKGlbZl09PT1hW2ZdKWNvbnRpbnVlO3JldHVybiAxfXJldHVybiAwfSxjPW5ldyBSKDMsXCJcIixcIlwiLFwiXCIsXCJcIiwzKSxsPW5ldyBSKDAsXCJcIixcIlwiLFwiXCIsXCJcIiwzKSxzPShpLGEpPVx1MDAzZXtsZXQgZj0wO2Zvcig7Zlx1MDAzY01hdGgubWluKGkubGVuZ3RoLGEubGVuZ3RoKTsrK2Ype2xldCBkPW8oaVtmXSxhW2ZdKTtpZihkKXJldHVybiBkfXJldHVybiBpLmxlbmd0aD09PWEubGVuZ3RoPzA6byhpW2ZdPz9jLGFbZl0/P2MpfTtyZXR1cm4hci4jZVt0XVx1MDAyNlx1MDAyNiFuLiNlW3RdPzA6ci4jZVt0XVx1MDAyNlx1MDAyNiFuLiNlW3RdP3Moci4jc1t0XSxbbF0pOiFyLiNlW3RdXHUwMDI2XHUwMDI2bi4jZVt0XT9zKFtsXSxuLiNzW3RdKTpzKHIuI3NbdF0sbi4jc1t0XSl9Z2V0IHByb3RvY29sKCl7cmV0dXJuIHRoaXMuI2UucHJvdG9jb2x9Z2V0IHVzZXJuYW1lKCl7cmV0dXJuIHRoaXMuI2UudXNlcm5hbWV9Z2V0IHBhc3N3b3JkKCl7cmV0dXJuIHRoaXMuI2UucGFzc3dvcmR9Z2V0IGhvc3RuYW1lKCl7cmV0dXJuIHRoaXMuI2UuaG9zdG5hbWV9Z2V0IHBvcnQoKXtyZXR1cm4gdGhpcy4jZS5wb3J0fWdldCBwYXRobmFtZSgpe3JldHVybiB0aGlzLiNlLnBhdGhuYW1lfWdldCBzZWFyY2goKXtyZXR1cm4gdGhpcy4jZS5zZWFyY2h9Z2V0IGhhc2goKXtyZXR1cm4gdGhpcy4jZS5oYXNofWdldCBoYXNSZWdFeHBHcm91cHMoKXtyZXR1cm4gdGhpcy4jbH19O2V4cG9ydHttZSBhcyBVUkxQYXR0ZXJufTtcbiIsICJpbXBvcnQgeyBVUkxQYXR0ZXJuIH0gZnJvbSBcIi4vZGlzdC91cmxwYXR0ZXJuLmpzXCI7XG5cbmV4cG9ydCB7IFVSTFBhdHRlcm4gfTtcblxuaWYgKCFnbG9iYWxUaGlzLlVSTFBhdHRlcm4pIHtcbiAgZ2xvYmFsVGhpcy5VUkxQYXR0ZXJuID0gVVJMUGF0dGVybjtcbn1cbiIsICJpbXBvcnQgeyBidWlsZCwgaW5pdGlhbGl6ZSB9IGZyb20gXCIuL2RlcHMvZXNidWlsZC13YXNtLnRzXCI7XG5pbXBvcnQgeyByZXNvbHZlciB9IGZyb20gXCIuL2RlcHMvZXNidWlsZF9kZW5vX2xvYWRlci50c1wiO1xuaW1wb3J0IHsgY3JlYXRlRXJyLCBjcmVhdGVPayB9IGZyb20gXCIuL2RlcHMvb3B0aW9uLXQudHNcIjtcbmltcG9ydCB7IGZpbmRMYXRlc3RDYWNoZSwgc2F2ZUFwaUNhY2hlIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuaW1wb3J0IHsgQXZhaWxhYmxlRXh0ZW5zaW9ucyB9IGZyb20gXCIuL2V4dGVuc2lvbi50c1wiO1xuaW1wb3J0IHsgaXNBbGxvd2VkQ29ubmVjdFNyYyB9IGZyb20gXCIuL2lzQWxsb3dlZENvbm5lY3RTcmMudHNcIjtcbmltcG9ydCB7IHJlbW90ZUxvYWRlciB9IGZyb20gXCIuL3JlbW90ZUxvYWRlci50c1wiO1xuaW1wb3J0IHsgUm9idXN0RmV0Y2ggfSBmcm9tIFwiLi9yb2J1c3RGZXRjaC50c1wiO1xuaW1wb3J0IFwiLi9kZXBzL3VybHBhdHRlcm4tcG9seWZpbGwudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCdW5kbGVPcHRpb25zIHtcbiAgZXh0ZW5zaW9uOiBBdmFpbGFibGVFeHRlbnNpb25zO1xuICBmaWxlTmFtZT86IHN0cmluZztcbiAgZGlyVVJMOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVuZGxlUmVzdWx0IHtcbiAgLyoqIGJ1aWx0IGNvZGUgKi9cbiAgY29udGVudHM6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQnVpbGRlciA9IChlbnRyeVBvaW50OiBzdHJpbmcpID0+IFByb21pc2U8QnVuZGxlUmVzdWx0PjtcblxubGV0IGluaXRpYWxpemVkOiBQcm9taXNlPHZvaWQ+IHwgdW5kZWZpbmVkO1xuXG4vKiogZXNidWlsZOOCkuiqreOBv+i+vOOBv+OAgWJ1aWxkZXLjgpLov5TjgZkgKi9cbmV4cG9ydCBjb25zdCBsb2FkID0gYXN5bmMgKFxuICB3YXNtOiBXZWJBc3NlbWJseS5Nb2R1bGUsXG4gIHdvcmtlclVSTDogc3RyaW5nIHwgVVJMLFxuKTogUHJvbWlzZTxCdWlsZGVyPiA9PiB7XG4gIGluaXRpYWxpemVkID8/PSBpbml0aWFsaXplKHtcbiAgICB3YXNtTW9kdWxlOiB3YXNtLFxuICAgIHdvcmtlclVSTCxcbiAgfSk7XG4gIGF3YWl0IGluaXRpYWxpemVkO1xuXG4gIHJldHVybiBhc3luYyAoZW50cnlQb2ludCkgPT4ge1xuICAgIGNvbnN0IHsgb3V0cHV0RmlsZXMgfSA9IGF3YWl0IGJ1aWxkKHtcbiAgICAgIGVudHJ5UG9pbnRzOiBbZW50cnlQb2ludF0sXG4gICAgICBmb3JtYXQ6IFwiZXNtXCIsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBtaW5pZnk6IHRydWUsXG4gICAgICBjaGFyc2V0OiBcInV0ZjhcIixcbiAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgcmVzb2x2ZXIoKSxcbiAgICAgICAgcmVtb3RlTG9hZGVyKHtcbiAgICAgICAgICBmZXRjaDogZmV0Y2hDT1JTLFxuICAgICAgICAgIHJlbG9hZDogW1xuICAgICAgICAgICAgbmV3IFVSTFBhdHRlcm4oeyBob3N0bmFtZTogbG9jYXRpb24uaG9zdG5hbWUgfSksXG4gICAgICAgICAgICBuZXcgVVJMUGF0dGVybih7IGhvc3RuYW1lOiBcInNjcmFwYm94LmlvXCIgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnRzOiBvdXRwdXRGaWxlc1swXS50ZXh0LFxuICAgIH07XG4gIH07XG59O1xuXG5kZWNsYXJlIGNvbnN0IEdNX2ZldGNoOiAodHlwZW9mIGdsb2JhbFRoaXMuZmV0Y2gpIHwgdW5kZWZpbmVkO1xuY29uc3QgZmV0Y2hDT1JTOiBSb2J1c3RGZXRjaCA9IGFzeW5jIChcbiAgcmVxLFxuICBjYWNoZUZpcnN0LFxuKSA9PiB7XG4gIGNvbnN0IGZldGNoXyA9IGlzQWxsb3dlZENvbm5lY3RTcmMobmV3IFVSTChyZXEudXJsKSkgfHwgIUdNX2ZldGNoXG4gICAgPyBnbG9iYWxUaGlzLmZldGNoXG4gICAgOiBHTV9mZXRjaDtcbiAgaWYgKGNhY2hlRmlyc3QpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhdHRlbXB0RnJvbUNhY2hlKHJlcSk7XG4gICAgaWYgKHJlc3VsdCkgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoXyhyZXEpO1xuICAgIGlmIChyZXMub2spIHtcbiAgICAgIGlmIChmZXRjaF8gPT09IEdNX2ZldGNoICYmICFyZXEudXJsLnN0YXJ0c1dpdGgoXCJkYXRhOlwiKSkge1xuICAgICAgICBhd2FpdCBzYXZlQXBpQ2FjaGUocmVxLCByZXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNyZWF0ZU9rKFtyZXMsIGZhbHNlXSk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF0dGVtcHRGcm9tQ2FjaGUocmVxKTtcbiAgICByZXR1cm4gcmVzdWx0ID8/IGNyZWF0ZUVycih7XG4gICAgICBuYW1lOiBcIkhUVFBFcnJvclwiLFxuICAgICAgbWVzc2FnZTogYCR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH1gLFxuICAgICAgcmVzcG9uc2U6IHJlcyxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF0dGVtcHRGcm9tQ2FjaGUocmVxKTtcbiAgICBpZiAocmVzdWx0KSByZXR1cm4gcmVzdWx0O1xuICAgIGlmIChlIGluc3RhbmNlb2YgVHlwZUVycm9yKSB7XG4gICAgICByZXR1cm4gY3JlYXRlRXJyKHtcbiAgICAgICAgbmFtZTogXCJOZXR3b3JrRXJyb3JcIixcbiAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICByZXF1ZXN0OiByZXEsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBET01FeGNlcHRpb24pIHtcbiAgICAgIHJldHVybiBjcmVhdGVFcnIoe1xuICAgICAgICBuYW1lOiBcIkFib3J0RXJyb3JcIixcbiAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICByZXF1ZXN0OiByZXEsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufTtcblxuY29uc3QgYXR0ZW1wdEZyb21DYWNoZSA9IGFzeW5jIChyZXE6IFJlcXVlc3QpID0+IHtcbiAgaWYgKHJlcS51cmwuc3RhcnRzV2l0aChcImRhdGE6XCIpKSByZXR1cm47XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZpbmRMYXRlc3RDYWNoZShyZXEpO1xuICBpZiAocmVzKSB7XG4gICAgaWYgKCFyZXMudXJsKSBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzLCBcInVybFwiLCB7IHZhbHVlOiByZXEudXJsIH0pO1xuICAgIHJldHVybiBjcmVhdGVPayhbcmVzLCB0cnVlXSBhcyBbUmVzcG9uc2UsIGJvb2xlYW5dKTtcbiAgfVxufTtcbiIsICJpbXBvcnQgeyBMb2FkZXIgfSBmcm9tIFwiLi9kZXBzL2VzYnVpbGQtd2FzbS50c1wiO1xuXG5leHBvcnQgdHlwZSBBdmFpbGFibGVFeHRlbnNpb25zID1cbiAgfCBcInRzXCJcbiAgfCBcImpzXCJcbiAgfCBcInRzeFwiXG4gIHwgXCJqc3hcIlxuICB8IFwibWpzXCJcbiAgfCBcImphdmFzY3JpcHRcIlxuICB8IFwidHlwZXNjcmlwdFwiO1xuZXhwb3J0IGNvbnN0IGlzQXZhaWxhYmxlRXh0ZW5zaW9ucyA9IChcbiAgZXh0ZW5zaW9uOiBzdHJpbmcsXG4pOiBleHRlbnNpb24gaXMgQXZhaWxhYmxlRXh0ZW5zaW9ucyA9PlxuICBbXCJ0c1wiLCBcImpzXCIsIFwidHN4XCIsIFwianN4XCIsIFwibWpzXCIsIFwiamF2YXNjcmlwdFwiLCBcInR5cGVzY3JpcHRcIl0uaW5jbHVkZXMoXG4gICAgZXh0ZW5zaW9uLFxuICApO1xuXG5leHBvcnQgY29uc3QgZXh0ZW5zaW9uVG9Mb2FkZXIgPSAoZXh0ZW5zaW9uOiBBdmFpbGFibGVFeHRlbnNpb25zKTogTG9hZGVyID0+IHtcbiAgc3dpdGNoIChleHRlbnNpb24pIHtcbiAgICBjYXNlIFwiamF2YXNjcmlwdFwiOlxuICAgIGNhc2UgXCJqc1wiOlxuICAgIGNhc2UgXCJtanNcIjpcbiAgICAgIHJldHVybiBcImpzXCIgYXMgY29uc3Q7XG4gICAgY2FzZSBcInR5cGVzY3JpcHRcIjpcbiAgICBjYXNlIFwidHNcIjpcbiAgICAgIHJldHVybiBcInRzXCIgYXMgY29uc3Q7XG4gICAgY2FzZSBcImpzeFwiOlxuICAgICAgcmV0dXJuIFwianN4XCIgYXMgY29uc3Q7XG4gICAgY2FzZSBcInRzeFwiOlxuICAgICAgcmV0dXJuIFwidHN4XCIgYXMgY29uc3Q7XG4gIH1cbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIvPlxuXG5leHBvcnQgY29uc3QgY2hlY2tDaXJjbGVGaWxsID0gKCkgPT4ge1xuICBjb25zdCBpY29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlcIik7XG4gIGljb24uY2xhc3NMaXN0LmFkZChcImthbW9uXCIsIFwia2Ftb24tY2hlY2stY2lyY2xlLWZpbGxcIik7XG4gIGljb24uc3R5bGUuY29sb3IgPSBcImhzbCgxMzMsIDQ2LjElLCA0Ny4zJSlcIjtcbiAgcmV0dXJuIGljb247XG59O1xuXG5leHBvcnQgY29uc3QgY3Jvc3NDaXJjbGUgPSAoKSA9PiB7XG4gIGNvbnN0IGljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaVwiKTtcbiAgaWNvbi5jbGFzc0xpc3QuYWRkKFwia2Ftb25cIiwgXCJrYW1vbi1jcm9zcy1jaXJjbGVcIik7XG4gIGljb24uc3R5bGUuY29sb3IgPSBcImhzbCgxLjcsIDY0LjUlLCA1OCUpXCI7XG4gIHJldHVybiBpY29uO1xufTtcblxuZXhwb3J0IGNvbnN0IHNwaW5uZXIgPSAoKSA9PiB7XG4gIGNvbnN0IGljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaVwiKTtcbiAgaWNvbi5jbGFzc0xpc3QuYWRkKFwiaVwiLCBcImZhXCIsIFwiZmEtc3Bpbm5lclwiKTtcbiAgcmV0dXJuIGljb247XG59O1xuXG5leHBvcnQgY29uc3QgcGxheSA9ICgpID0+IHtcbiAgY29uc3QgaWNvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpXCIpO1xuICBpY29uLmNsYXNzTGlzdC5hZGQoXCJrYW1vblwiLCBcImthbW9uLXBsYXlcIik7XG4gIHJldHVybiBpY29uO1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIi8+XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9zaXRpb24ge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IHRvb2x0aXAgPSAoKSA9PiB7XG4gIGxldCB0b29sdGlwOiBIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICBjb25zdCBzaG93ID0gKHRleHQ6IHN0cmluZywgeyB4LCB5IH06IFBvc2l0aW9uKSA9PiB7XG4gICAgdG9vbHRpcCA9IGNyZWF0ZUNvbnRhaW5lcigpO1xuICAgIHRvb2x0aXAuYXBwZW5kKGlubmVyKHRleHQpKTtcbiAgICAvLyDopovjgYjjgarjgYTnirbmhYvjgadET03jgpLlrp/kvZPljJbjgZXjgZvjgabjgIHluYXjgajpq5jjgZXjgpLoqIjnrpfjgZnjgotcbiAgICB0b29sdGlwLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHRvb2x0aXApO1xuICAgIGNvbnN0IHsgaGVpZ2h0IH0gPSB0b29sdGlwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHRvb2x0aXAuc3R5bGUudG9wID0gYCR7eSAtIGhlaWdodH1weGA7XG4gICAgdG9vbHRpcC5zdHlsZS5sZWZ0ID0gYCR7eH1weGA7XG4gICAgdG9vbHRpcC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcInZpc2liaWxpdHlcIik7XG4gIH07XG4gIGNvbnN0IGhpZGUgPSBhc3luYyAoKSA9PiB7XG4gICAgdG9vbHRpcD8uY2xhc3NMaXN0Py5yZW1vdmU/LihcImluXCIpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDE1MCkpO1xuICAgIHRvb2x0aXA/LnJlbW92ZT8uKCk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBzaG93LFxuICAgIGhpZGUsXG4gIH07XG59O1xuXG5jb25zdCBjcmVhdGVDb250YWluZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHRvb2x0aXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICB0b29sdGlwLnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJ0b29sdGlwXCIpO1xuICB0b29sdGlwLmNsYXNzTGlzdC5hZGQoXCJmYWRlXCIsIFwiaW5cIiwgXCJ0b29sdGlwXCIsIFwidG9wXCIpO1xuICByZXR1cm4gdG9vbHRpcDtcbn07XG5cbmNvbnN0IGlubmVyID0gKHRleHQ6IHN0cmluZykgPT4ge1xuICBjb25zdCBpbm5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJwcmVcIik7XG4gIGlubmVyLmNsYXNzTGlzdC5hZGQoXCJ0b29sdGlwLWlubmVyXCIpO1xuICBpbm5lci5zdHlsZS50ZXh0QWxpZ24gPSBcInVuc2V0XCI7XG4gIGlubmVyLnN0eWxlLm1heFdpZHRoID0gXCI3MHZ3XCI7XG4gIGlubmVyLnN0eWxlLm1hcmdpbiA9IFwidW5zZXRcIjtcbiAgaW5uZXIuaW5uZXJUZXh0ID0gdGV4dDtcbiAgcmV0dXJuIGlubmVyO1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIi8+XG5cbmltcG9ydCB7IGNoZWNrQ2lyY2xlRmlsbCwgY3Jvc3NDaXJjbGUsIHNwaW5uZXIgfSBmcm9tIFwiLi9pY29ucy50c1wiO1xuaW1wb3J0IHsgdG9vbHRpcCB9IGZyb20gXCIuL3Rvb2x0aXAudHNcIjtcbmV4cG9ydCB0eXBlIFN0YXR1cyA9IFwibG9hZGluZ1wiIHwgXCJwYXNzXCIgfCBcImZhaWxcIiB8IFwibm9uZVwiO1xuXG5leHBvcnQgY29uc3Qgc3RhdHVzQnV0dG9uID0gKCkgPT4ge1xuICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gIGEuY2xhc3NMaXN0LmFkZChcInRvb2wtYnRuXCIpO1xuICBhLnR5cGUgPSBcImJ1dHRvblwiO1xuICBhLnNldEF0dHJpYnV0ZShcImFyaWEtaGFzcG9wdXBcIiwgXCJ0cnVlXCIpO1xuICBsZXQgdmlzaWJsZSA9IGZhbHNlO1xuICBjb25zdCB7IHNob3csIGhpZGUgfSA9IHRvb2x0aXAoKTtcblxuICBjb25zdCBzZXRTdGF0dXMgPSBhc3luYyAoc3RhdHVzOiBTdGF0dXMsIG1lc3NhZ2U/OiBzdHJpbmcpID0+IHtcbiAgICBhLnRleHRDb250ZW50ID0gXCJcIjtcbiAgICBhd2FpdCBoaWRlKCk7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgXCJsb2FkaW5nXCI6XG4gICAgICAgIGEuYXBwZW5kKHNwaW5uZXIoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInBhc3NcIjpcbiAgICAgICAgYS5hcHBlbmQoY2hlY2tDaXJjbGVGaWxsKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJmYWlsXCI6XG4gICAgICAgIGEuYXBwZW5kKGNyb3NzQ2lyY2xlKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJub25lXCI6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZSAhPT0gdW5kZWZpbmVkICYmIHN0YXR1cyAhPT0gXCJub25lXCIpIHtcbiAgICAgIGEuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJwb2ludGVyLWV2ZW50c1wiKTtcbiAgICAgIGEub25jbGljayA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKHZpc2libGUpIHtcbiAgICAgICAgICBhd2FpdCBoaWRlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgeyB0b3AsIGxlZnQgfSA9IGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgc2hvdyhtZXNzYWdlLCB7XG4gICAgICAgICAgICB5OiB0b3AgKyBnbG9iYWxUaGlzLnNjcm9sbFksXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZpc2libGUgPSAhdmlzaWJsZTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEuc3R5bGUucG9pbnRlckV2ZW50cyA9IFwibm9uZVwiO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGNvbXBvbmVudDogYSxcbiAgICBzZXRTdGF0dXMsXG4gIH07XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiLz5cblxuaW1wb3J0IHsgcGxheSB9IGZyb20gXCIuL2ljb25zLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBleGVjQnV0dG9uID0gKG9uQ2xpY2s6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZCkgPT4ge1xuICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gIGEuY2xhc3NMaXN0LmFkZChcInRvb2wtYnRuXCIpO1xuICBhLnR5cGUgPSBcImJ1dHRvblwiO1xuICBhLnNldEF0dHJpYnV0ZShcImFyaWEtaGFzcG9wdXBcIiwgXCJ0cnVlXCIpO1xuICBhLmFwcGVuZChwbGF5KCkpO1xuICBhLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBvbkNsaWNrKTtcbiAgcmV0dXJuIGE7XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiLz5cblxuaW1wb3J0IHsgc3RhdHVzQnV0dG9uIH0gZnJvbSBcIi4vc3RhdHVzLnRzXCI7XG5pbXBvcnQgeyBleGVjQnV0dG9uIH0gZnJvbSBcIi4vZXhlY0J1dHRvbi50c1wiO1xuXG5leHBvcnQgY29uc3QgZXhlY01lbnUgPSAob25DbGljazogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkKSA9PiB7XG4gIGNvbnN0IHsgY29tcG9uZW50OiBzdGF0dXMsIHNldFN0YXR1cyB9ID0gc3RhdHVzQnV0dG9uKCk7XG4gIGNvbnN0IG1lbnUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICBtZW51LnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuICBtZW51LnN0eWxlLmxlZnQgPSBcIi0yZW1cIjtcbiAgbWVudS5zdHlsZS56SW5kZXggPSBcIjFcIjtcbiAgbWVudS5zdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XG4gIG1lbnUuc3R5bGUuZmxleEZsb3cgPSBcImNvbHVtblwiO1xuICBtZW51LmFwcGVuZChleGVjQnV0dG9uKG9uQ2xpY2spLCBzdGF0dXMpO1xuICByZXR1cm4geyBtZW51LCBzZXRTdGF0dXMgfTtcbn07XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIHNsZWVwKG1pbGxpc2Vjb25kczogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtaWxsaXNlY29uZHMpKTtcbn1cbiIsICJpbXBvcnQgeyBzbGVlcCB9IGZyb20gXCIuL3NsZWVwLnRzXCI7XG5cbi8qKiBPcHRpb25zIGZvciBgdGhyb3R0bGVgICovXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xuICAvKiogSWYgaXQncyBzZXQgdG8gYHRydWVgIGFuZCBxdWV1ZSBpc24ndCBlbXB0eSwgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGFnYWluIGF0IHRoZSBlbmQuXG4gICAqXG4gICAqIGRlZmF1bHQ6IGBmYWxzZWBcbiAgICovXG4gIHRyYWlsaW5nPzogYm9vbGVhbjtcblxuICBpbnRlcnZhbD86IG51bWJlcjtcbn1cbi8qKiBSZXN1bHQgb2YgYHRocm90dGxlYCAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXN1bHQ8VT4ge1xuICAvKiogd2hldGhlciB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgKi9cbiAgZXhlY3V0ZWQ6IGJvb2xlYW47XG4gIC8qKiB0aGUgcmVzdWx0IG9mIHRoZSBwcm92aWRlZCBmdW5jdGlvblxuICAgKlxuICAgKiBJZiB0aGUgZnVuY3Rpb24gaXMgbm90IGV4ZWN1dGVkLCBpdCBpcyBzZXQgdG8gYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlc3VsdD86IFU7XG59XG5cbnR5cGUgUmVzb2x2ZTxUPiA9IChfdmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPikgPT4gdm9pZDtcbnR5cGUgUmVqZWN0ID0gKHJlYXNvbj86IHVua25vd24pID0+IHZvaWQ7XG50eXBlIFF1ZXVlPFQsIFU+ID0ge1xuICBwYXJhbWV0ZXJzOiBUO1xuICByZXNvbHZlOiBSZXNvbHZlPFJlc3VsdDxVPj47XG4gIHJlamVjdDogUmVqZWN0O1xufTtcblxuLyoqIE1ha2UgdGhlIGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgb25seSBhdCBhIHRpbWVcbiAqXG4gKiBAcGFyYW0gY2FsbGJhY2sgdGhlIGFzeW5jIGZ1bmN0aW9uIG1ha2luZyBleGVjdXRlIG9ubHkgYXQgYSB0aW1lXG4gKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aHJvdHRsZTxUIGV4dGVuZHMgdW5rbm93bltdLCBVPihcbiAgY2FsbGJhY2s6ICguLi5fYXJnczogVCkgPT4gUHJvbWlzZTxVPixcbiAgb3B0aW9ucz86IE9wdGlvbnMsXG4pOiAoLi4ucGFyYW1ldGVyczogVCkgPT4gUHJvbWlzZTxSZXN1bHQ8VT4+IHtcbiAgY29uc3QgeyB0cmFpbGluZyA9IGZhbHNlLCBpbnRlcnZhbCA9IDAgfSA9IG9wdGlvbnMgPz8ge307XG4gIGxldCBxdWV1ZTogUXVldWU8VCwgVT4gfCB1bmRlZmluZWQ7XG4gIGxldCBydW5uaW5nID0gZmFsc2U7XG4gIGNvbnN0IHB1c2ggPSAoZGF0YT86IFF1ZXVlPFQsIFU+KSA9PiB7XG4gICAgcXVldWU/LnJlc29sdmU/Lih7IGV4ZWN1dGVkOiBmYWxzZSB9KTtcbiAgICBxdWV1ZSA9IGRhdGE7XG4gIH07XG4gIGNvbnN0IHBvcCA9ICgpOiBRdWV1ZTxULCBVPiA9PiB7XG4gICAgY29uc3QgeyAuLi5kYXRhIH0gPSBxdWV1ZTtcbiAgICBxdWV1ZSA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gZGF0YTtcbiAgfTtcblxuICBjb25zdCBydW5OZXh0ID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChydW5uaW5nIHx8ICFxdWV1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBydW5uaW5nID0gdHJ1ZTtcbiAgICBpZiAoaW50ZXJ2YWwgPiAwKSB7XG4gICAgICBhd2FpdCBzbGVlcChpbnRlcnZhbCk7XG4gICAgfVxuICAgIGNvbnN0IHsgcGFyYW1ldGVycywgcmVzb2x2ZSwgcmVqZWN0IH0gPSBwb3AoKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2FsbGJhY2soLi4ucGFyYW1ldGVycyk7XG5cbiAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgIHJlc29sdmUoeyByZXN1bHQsIGV4ZWN1dGVkOiB0cnVlIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHRyYWlsaW5nKSB7XG4gICAgICAgIGF3YWl0IHJ1bk5leHQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHB1c2goKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoLi4ucGFyYW1ldGVyczogVCkgPT5cbiAgICBuZXcgUHJvbWlzZTxSZXN1bHQ8VT4+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHB1c2goeyBwYXJhbWV0ZXJzLCByZXNvbHZlLCByZWplY3QgfSk7XG4gICAgICBydW5OZXh0KCk7XG4gICAgfSk7XG59XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tLml0ZXJhYmxlXCIvPlxuaW1wb3J0IHsgZ2V0Q29kZUZpbGVzIH0gZnJvbSBcIi4vY29kZUZpbGUudHNcIjtcbmltcG9ydCB7IEJ1aWxkZXIsIGxvYWQgfSBmcm9tIFwiLi9idW5kbGUudHNcIjtcbmltcG9ydCB7IGlzQXZhaWxhYmxlRXh0ZW5zaW9ucyB9IGZyb20gXCIuL2V4dGVuc2lvbi50c1wiO1xuaW1wb3J0IHsgZXZlbnROYW1lLCBTY3JhcGJveCwgdGFrZUludGVybmFsTGluZXMgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyBleGVjTWVudSB9IGZyb20gXCIuL2NvbXBvbmVudHMvZXhlY01lbnUudHNcIjtcbmltcG9ydCB7IHRocm90dGxlIH0gZnJvbSBcIi4vZGVwcy90aHJvdHRsZS50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmxldCBidW5kbGU6IEJ1aWxkZXIgfCB1bmRlZmluZWQ7XG5cbi8qKiBTY3JhcEp1cHl0ZXLjgpLotbfli5XjgZnjgotcbiAqXG4gKiBAcGFyYW0gd2FzbSBlc2J1aWxkLndhc23jga7jg4fjg7zjgr9cbiAqIEBwYXJhbSB3b3JrZXJVUkwgV2ViV29ya2VyIGNvZGXjgbjjga5VUkxcbiAqIEByZXR1cm4g57WC5LqG5Ye95pWwXG4gKi9cbmV4cG9ydCBjb25zdCBzZXR1cCA9IGFzeW5jIChcbiAgd2FzbTogV2ViQXNzZW1ibHkuTW9kdWxlLFxuICB3b3JrZXJVUkw6IHN0cmluZyB8IFVSTCxcbikgPT4ge1xuICBjb25zdCBtZW51cyA9IFtdIGFzIFJldHVyblR5cGU8dHlwZW9mIGV4ZWNNZW51PltdO1xuXG4gIGNvbnN0IHVwZGF0ZSA9IGFzeW5jICgpID0+IHtcbiAgICAvLyDjg5zjgr/jg7PjgpLlhajpg6jjg6rjgrvjg4Pjg4jjgZnjgotcbiAgICBtZW51cy5mb3JFYWNoKCh7IG1lbnUsIHNldFN0YXR1cyB9KSA9PiB7XG4gICAgICBzZXRTdGF0dXMoXCJub25lXCIpO1xuICAgICAgbWVudS5yZW1vdmUoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZpbGVzID0gZ2V0Q29kZUZpbGVzKFxuICAgICAgc2NyYXBib3guUHJvamVjdC5uYW1lLFxuICAgICAgc2NyYXBib3guUGFnZS50aXRsZSA/PyBcIlwiLFxuICAgICAgdGFrZUludGVybmFsTGluZXMoKSxcbiAgICApO1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZS5sYW5nLnRvTG93ZXJDYXNlKCk7XG4gICAgICAvLyBUUy9KU+S7peWkluOBr+eEoeimllxuICAgICAgaWYgKCFpc0F2YWlsYWJsZUV4dGVuc2lvbnMoZXh0ZW5zaW9uKSkgY29udGludWU7XG4gICAgICBmb3IgKGNvbnN0IGlkIG9mIGZpbGUuc3RhcnRJZHMpIHtcbiAgICAgICAgY29uc3QgbGluZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBMJHtpZH1gKTtcbiAgICAgICAgY29uc3QgeyBtZW51LCBzZXRTdGF0dXMgfSA9IGV4ZWNNZW51KFxuICAgICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHNldFN0YXR1cyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBidW5kbGUgPz89IGF3YWl0IGxvYWQod2FzbSwgd29ya2VyVVJMKTtcbiAgICAgICAgICAgICAgY29uc3QgeyBjb250ZW50cyB9ID0gYXdhaXQgYnVuZGxlKGZpbGUucGF0aCk7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoXCJleGVjdXRlOlwiLCBjb250ZW50cyk7XG4gICAgICAgICAgICAgIGF3YWl0IEZ1bmN0aW9uKGByZXR1cm4gKGFzeW5jKCk9Pnske2NvbnRlbnRzfX0pKClgKSgpO1xuICAgICAgICAgICAgICBhd2FpdCBzZXRTdGF0dXMoXCJwYXNzXCIpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICBhd2FpdCBzZXRTdGF0dXMoXCJmYWlsXCIsIGAke2V9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgbWVudXMucHVzaCh7IG1lbnUsIHNldFN0YXR1cyB9KTtcbiAgICAgICAgbGluZT8uaW5zZXJ0QmVmb3JlPy4obWVudSwgbGluZT8uZmlyc3RFbGVtZW50Q2hpbGQpO1xuICAgICAgfVxuICAgIH1cbiAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcbiAgfTtcbiAgY29uc3QgY2FsbGJhY2sgPSB0aHJvdHRsZSh1cGRhdGUsIHtcbiAgICBpbnRlcnZhbDogMTAwLFxuICAgIHRyYWlsaW5nOiB0cnVlLFxuICB9KTtcbiAgYXdhaXQgY2FsbGJhY2soKTtcbiAgc2NyYXBib3guYWRkTGlzdGVuZXIoXCJsaW5lczpjaGFuZ2VkXCIgYXMgZXZlbnROYW1lLCBjYWxsYmFjayk7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBzY3JhcGJveC5yZW1vdmVMaXN0ZW5lcihcImxpbmVzOmNoYW5nZWRcIiBhcyBldmVudE5hbWUsIGNhbGxiYWNrKTtcbiAgICBtZW51cy5mb3JFYWNoKCh7IG1lbnUsIHNldFN0YXR1cyB9KSA9PiB7XG4gICAgICBzZXRTdGF0dXMoXCJub25lXCIpO1xuICAgICAgbWVudS5yZW1vdmUoKTtcbiAgICB9KTtcbiAgfTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuLyoqIEBqc3hGcmFnIEZyYWdtZW50ICovXG5cbmltcG9ydCB7IEZyYWdtZW50LCBoLCB1c2VDYWxsYmFjayB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgZW5jb2RlVGl0bGVVUkkgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuZGlkYXRlUHJvcHMge1xuICB0aXRsZTogc3RyaW5nO1xuICBwcm9qZWN0czoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBtYXJrOiBzdHJpbmcgfCBVUkw7XG4gICAgY29uZmlybTogKCkgPT4gdm9pZDtcbiAgfVtdO1xuICBjb25maXJtOiAoKSA9PiB2b2lkO1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IENhbmRpZGF0ZSA9IChcbiAgeyB0aXRsZSwgcHJvamVjdHMsIHNlbGVjdGVkLCBjb25maXJtIH06IENhbmRpZGF0ZVByb3BzLFxuKSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2BjYW5kaWRhdGUke3NlbGVjdGVkID8gXCIgc2VsZWN0ZWRcIiA6IFwiXCJ9YH1cbiAgPlxuICAgIDxCdXR0b24gdGl0bGU9e3RpdGxlfSBjb25maXJtPXtjb25maXJtfSAvPlxuICAgIHtwcm9qZWN0cy5tYXAoKHByb2plY3QpID0+IChcbiAgICAgIDxNYXJrXG4gICAgICAgIHByb2plY3Q9e3Byb2plY3QubmFtZX1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBtYXJrPXtwcm9qZWN0Lm1hcmt9XG4gICAgICAgIGNvbmZpcm09e3Byb2plY3QuY29uZmlybX1cbiAgICAgIC8+XG4gICAgKSl9XG4gIDwvZGl2PlxuKTtcblxuaW50ZXJmYWNlIEJ1dHRvblByb3BzIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgY29uZmlybTogKCkgPT4gdm9pZDtcbn1cblxuY29uc3QgQnV0dG9uID0gKFxuICB7IHRpdGxlLCBjb25maXJtIH06IEJ1dHRvblByb3BzLFxuKSA9PiAoXG4gIDxhXG4gICAgY2xhc3NOYW1lPVwiYnV0dG9uXCJcbiAgICB0YWJJbmRleD17MH1cbiAgICByb2xlPVwibWVudWl0ZW1cIlxuICAgIGhyZWY9e2AuLyR7ZW5jb2RlVGl0bGVVUkkodGl0bGUpfWB9XG4gICAgb25DbGljaz17dXNlQ29uZmlybShjb25maXJtKX1cbiAgPlxuICAgIHt0aXRsZX1cbiAgPC9hPlxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBNYXJrUHJvcHMge1xuICBwcm9qZWN0OiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIC8qKiDnqbrmloflrZfjga7loLTlkIjjga/jgIHkvZXjgoLooajnpLrjgZfjgarjgYQgKi9cbiAgbWFyazogc3RyaW5nIHwgVVJMO1xuICBjb25maXJtOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgTWFyayA9IChcbiAgeyBwcm9qZWN0LCB0aXRsZSwgbWFyaywgY29uZmlybSB9OiBNYXJrUHJvcHMsXG4pID0+IChtYXJrID09PSBcIlwiID8gPD48Lz4gOiAoXG4gIDxhXG4gICAgY2xhc3NOYW1lPVwibWFya1wiXG4gICAgdGFiSW5kZXg9ezB9XG4gICAgaHJlZj17YC4uLyR7cHJvamVjdH0vJHtlbmNvZGVUaXRsZVVSSSh0aXRsZSl9YH1cbiAgICBvbkNsaWNrPXt1c2VDb25maXJtKGNvbmZpcm0pfVxuICAgIHRpdGxlPXtgLyR7cHJvamVjdH0vJHtlbmNvZGVUaXRsZVVSSSh0aXRsZSl9YH1cbiAgPlxuICAgIHttYXJrIGluc3RhbmNlb2YgVVJMID8gPGltZyBzcmM9e21hcmsuaHJlZn0gLz4gOiBgWyR7bWFya31dYH1cbiAgPC9hPlxuKSk7XG5cbi8qKiDkv67po77jgq3jg7zjgYzmirzjgZXjgozjgabjgYTjgarjgYTjgajjgY3jga7jgb/norrlrprjgZnjgosgZXZlbnQgaGFuZGxlcuOCkuS9nOOCi2hvb2sgKi9cbmNvbnN0IHVzZUNvbmZpcm0gPSAoY29uZmlybTogKCkgPT4gdm9pZCkgPT5cbiAgdXNlQ2FsbGJhY2soXG4gICAgKGU6IGguSlNYLlRhcmdldGVkTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHtcbiAgICAgIGlmIChlLm1ldGFLZXkgfHwgZS5jdHJsS2V5IHx8IGUuYWx0S2V5IHx8IGUuc2hpZnRLZXkpIHJldHVybjtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBjb25maXJtKCk7XG4gICAgfSxcbiAgICBbY29uZmlybV0sXG4gICk7XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5cbi8qKiB1c2VTZWxlY3Tjga7miLvjgorlgKQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlU2VsZWN0UmVzdWx0IHtcbiAgc2VsZWN0ZWRJZDogc3RyaW5nIHwgbnVsbDtcbiAgbmV4dDogKGluaXQ/OiBTZWxlY3RJbml0KSA9PiB2b2lkO1xuICBwcmV2OiAoaW5pdD86IFNlbGVjdEluaXQpID0+IHZvaWQ7XG4gIHNlbGVjdEZpcnN0OiAoKSA9PiB2b2lkO1xuICBzZWxlY3RMYXN0OiAoKSA9PiB2b2lkO1xufVxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RJbml0IHtcbiAgLyoqIOWFiOmgreOBruWJjeWAmeijnOOCkuacq+WwvuOBq+OAgeacq+WwvuOBruasoeWAmeijnOOCkuWFiOmgreOBq+OBmeOCi+OBi+OBqeOBhuOBi1xuICAgKlxuICAgKiAtIGB0cnVlYDog44GZ44KLXG4gICAqIC0gYGZhbHNlYDog44GX44Gq44GEICjlhYjpoK3jgb7jgZ/jga/mnKvlsL7jga7opoHntKDjgavjgajjganjgb7jgorntprjgZHjgospXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjeWNsaWM/OiBib29sZWFuO1xufVxuXG4vKiog6YG45oqe54q25oWL44KS5YiH44KK5pu/44GI44KLaG9vayAqL1xuZXhwb3J0IGNvbnN0IHVzZVNlbGVjdCA9IDxUPihcbiAgaXRlbXM6IFRbXSxcbiAgc2VsZWN0b3I6IChpdGVtOiBUKSA9PiBzdHJpbmcsXG4pOiBVc2VTZWxlY3RSZXN1bHQgPT4ge1xuICBjb25zdCBbc2VsZWN0ZWRJZCwgc2V0U2VsZWN0ZWRJZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBuZXh0ID0gdXNlQ2FsbGJhY2soKGluaXQ/OiBTZWxlY3RJbml0KSA9PlxuICAgIHNldFNlbGVjdGVkSWQoXG4gICAgICAocHJldikgPT4ge1xuICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgICAgICAgaWYgKHByZXYgPT09IG51bGwpIHJldHVybiBzZWxlY3RvcihpdGVtc1swXSk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBzZWxlY3RvcihpdGVtKSA9PT0gcHJldik7XG4gICAgICAgIHJldHVybiBzZWxlY3RvcihcbiAgICAgICAgICBpbml0Py5jeWNsaWNcbiAgICAgICAgICAgID8gaXRlbXNbKGluZGV4ICsgMSkgJSBpdGVtcy5sZW5ndGhdXG4gICAgICAgICAgICA6IGl0ZW1zLmF0KGluZGV4ICsgMSkgPz8gaXRlbXNbMF0sXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICksIFtpdGVtcywgc2VsZWN0b3JdKTtcbiAgY29uc3QgcHJldiA9IHVzZUNhbGxiYWNrKChpbml0PzogU2VsZWN0SW5pdCkgPT5cbiAgICBzZXRTZWxlY3RlZElkKFxuICAgICAgKHByZXYpID0+IHtcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmIChwcmV2ID09PSBudWxsKSByZXR1cm4gc2VsZWN0b3IoaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV0pO1xuICAgICAgICBjb25zdCBpbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gc2VsZWN0b3IoaXRlbSkgPT09IHByZXYpO1xuICAgICAgICBpZiAoaW5kZXggPCAwKSByZXR1cm4gc2VsZWN0b3IoaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV0pO1xuICAgICAgICByZXR1cm4gc2VsZWN0b3IoXG4gICAgICAgICAgaW5pdD8uY3ljbGljXG4gICAgICAgICAgICA/IGl0ZW1zWyhpbmRleCAtIDEgKyBpdGVtcy5sZW5ndGgpICUgaXRlbXMubGVuZ3RoXVxuICAgICAgICAgICAgOiBpdGVtcy5hdChpbmRleCAtIDEpID8/IGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICApLCBbaXRlbXMsIHNlbGVjdG9yXSk7XG4gIGNvbnN0IHNlbGVjdEZpcnN0ID0gdXNlQ2FsbGJhY2soXG4gICAgKCkgPT4gc2V0U2VsZWN0ZWRJZChpdGVtcy5sZW5ndGggPT09IDAgPyBudWxsIDogc2VsZWN0b3IoaXRlbXNbMF0pKSxcbiAgICBbaXRlbXMsIHNlbGVjdG9yXSxcbiAgKTtcbiAgY29uc3Qgc2VsZWN0TGFzdCA9IHVzZUNhbGxiYWNrKFxuICAgICgpID0+XG4gICAgICBzZXRTZWxlY3RlZElkKFxuICAgICAgICBpdGVtcy5sZW5ndGggPT09IDAgPyBudWxsIDogc2VsZWN0b3IoaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV0pLFxuICAgICAgKSxcbiAgICBbXG4gICAgICBpdGVtcyxcbiAgICAgIHNlbGVjdG9yLFxuICAgIF0sXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBzZWxlY3RlZElkLFxuICAgIG5leHQsXG4gICAgcHJldixcbiAgICBzZWxlY3RGaXJzdCxcbiAgICBzZWxlY3RMYXN0LFxuICB9IGFzIGNvbnN0O1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5pbXBvcnQgeyBoLCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgZ2V0Q2hhckRPTSwgUG9zaXRpb24gfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5cbi8qKiDoo5zlrozjg6rjgrnjg4jjga7ooajnpLrkvY3nva7jgpLoqIjnrpfjgZnjgotob29rICovXG5leHBvcnQgY29uc3QgdXNlUG9zaXRpb24gPSAoXG4gIHBvczogUG9zaXRpb24sXG4pOiBQaWNrPGguSlNYLkNTU1Byb3BlcnRpZXMsIFwidG9wXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIj4gJiB7XG4gIHVwZGF0ZVN0YW5kYXJkRWxlbWVudDogKGVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsKSA9PiB2b2lkO1xufSA9PiB7XG4gIGNvbnN0IFtzdGFuZGFyZEVsZW1lbnQsIHVwZGF0ZVN0YW5kYXJkRWxlbWVudF0gPSB1c2VTdGF0ZTxFbGVtZW50IHwgbnVsbD4oXG4gICAgbnVsbCxcbiAgKTtcblxuICBjb25zdCBzdHlsZSA9IHVzZU1lbW88UGljazxoLkpTWC5DU1NQcm9wZXJ0aWVzLCBcInRvcFwiIHwgXCJsZWZ0XCI+PigoKSA9PiB7XG4gICAgLyoqIOWfuua6luW6p+aomSAqL1xuICAgIGNvbnN0IHBhcmVudFJlY3QgPSBzdGFuZGFyZEVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdD8uKCk7XG4gICAgLyoqIOWQiOOCj+OBm+OBn+OBhERPTeOBruW6p+aomSAqL1xuICAgIGNvbnN0IGNoYXIgPSBnZXRDaGFyRE9NKHBvcy5saW5lLCBwb3MuY2hhcik7XG4gICAgY29uc3QgcmVjdCA9IGNoYXI/LmdldEJvdW5kaW5nQ2xpZW50UmVjdD8uKCk7XG4gICAgaWYgKCFyZWN0IHx8ICFwYXJlbnRSZWN0KSByZXR1cm4ge307XG5cbiAgICByZXR1cm4ge1xuICAgICAgdG9wOiBgJHtyZWN0LmJvdHRvbSAtIHBhcmVudFJlY3QudG9wfXB4YCxcbiAgICAgIGxlZnQ6IGAkeyhyZWN0Py5sZWZ0ID8/IDAgLSBwYXJlbnRSZWN0LmxlZnQpfXB4YCxcbiAgICAgIC8vIOWPs+err+OBi+OCieS9jee9ruWQiOOCj+OBm+OBl+OBn+OBhOOBqOOBjeOBq+S9v+OBhlxuICAgICAgcmlnaHQ6IGAkeyhwYXJlbnRSZWN0LnJpZ2h0IC0gKHJlY3Q/LmxlZnQgPz8gMCkpfXB4YCxcbiAgICB9O1xuICB9LCBbc3RhbmRhcmRFbGVtZW50LCBwb3MubGluZSwgcG9zLmNoYXJdKTtcblxuICByZXR1cm4geyB1cGRhdGVTdGFuZGFyZEVsZW1lbnQsIC4uLnN0eWxlIH07XG59O1xuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBTY3JhcGJveCB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5jb25zdCBrZXkgPSBcImVuYWJsZVByb2plY3RzT25TdWdnZXN0aW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgdXNlUHJvamVjdEZpbHRlck9wdGlvbnMge1xuICAvKiogc2NyaXB044KS5a6f6KGM44GX44Gm44GE44KLcHJvamVjdOOBruOCveODvOOCueOCkuOAgeioreWumuOBq+mWouOCj+OCieOBmueEoeadoeS7tuOBp+acieWKueOBq+OBmeOCi+OBi+OBqeOBhuOBiyAqL1xuICBlbmFibGVTZWxmUHJvamVjdE9uU3RhcnQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlUHJvamVjdEZpbHRlclJlc3VsdCB7XG4gIC8qKiDmpJzntKLlr77osaHjga5wcm9qZWN0c+OBruODquOCueODiCAqL1xuICBwcm9qZWN0czogc3RyaW5nW107XG5cbiAgLyoqIOaMh+WumuOBl+OBn3Byb2plY3Tjga7mnInlirnnhKHlirnjgpLoqK3lrprjgZnjgosgKi9cbiAgc2V0OiAocHJvamVjdDogc3RyaW5nLCBmbGFnOiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG4vKiog5qSc57Si5a++6LGh44GucHJvamVjdHPjga7oqK3lrprjgpLoqq3jgb/ovrzjgoBob29rc1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0cyDoqK3lrprjgpLlj5blvpfjgZfjgZ/jgYRwcm9qZWN0c+OBruODquOCueODiFxuICogQHJldHVybiDmpJzntKLlr77osaHjga5wcm9qZWN0c+OBruODquOCueODiFxuICovXG5leHBvcnQgY29uc3QgdXNlUHJvamVjdEZpbHRlciA9IChcbiAgcHJvamVjdHM6IEl0ZXJhYmxlPHN0cmluZz4sXG4gIG9wdGlvbnM6IHVzZVByb2plY3RGaWx0ZXJPcHRpb25zLFxuKTogVXNlUHJvamVjdEZpbHRlclJlc3VsdCA9PiB7XG4gIGNvbnN0IFtlbmFibGVQcm9qZWN0cywgc2V0RW5hYmxlUHJvamVjdHNdID0gdXNlU3RhdGUoXG4gICAgZ2V0RW5hYmxlcyhbLi4ucHJvamVjdHNdLCBvcHRpb25zKSxcbiAgKTtcbiAgY29uc3Qgc2V0ID0gdXNlQ2FsbGJhY2soKHByb2plY3Q6IHN0cmluZywgZmxhZzogYm9vbGVhbikgPT4ge1xuICAgIHNldEZyYWcocHJvamVjdCwgZmxhZywgcHJvamVjdHMsIG9wdGlvbnMpO1xuICAgIHNldEVuYWJsZVByb2plY3RzKGdldEVuYWJsZXMoWy4uLnByb2plY3RzXSwgb3B0aW9ucykpO1xuICB9LCBbcHJvamVjdHMsIG9wdGlvbnMuZW5hYmxlU2VsZlByb2plY3RPblN0YXJ0XSk7XG5cbiAgLy/mm7TmlrDpgJrnn6XjgpLlj5fjgZHlj5bjgotcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBsaXN0ZW5lciA9IChlOiBTdG9yYWdlRXZlbnQpID0+IHtcbiAgICAgIGlmIChlLmtleSAhPT0ga2V5KSByZXR1cm47XG4gICAgICBzZXRFbmFibGVQcm9qZWN0cyhnZXRFbmFibGVzKFsuLi5wcm9qZWN0c10sIG9wdGlvbnMpKTtcbiAgICB9O1xuICAgIGFkZEV2ZW50TGlzdGVuZXIoXCJzdG9yYWdlXCIsIGxpc3RlbmVyKTtcbiAgICByZXR1cm4gKCkgPT4gcmVtb3ZlRXZlbnRMaXN0ZW5lcihcInN0b3JhZ2VcIiwgbGlzdGVuZXIpO1xuICB9LCBbcHJvamVjdHMsIG9wdGlvbnMuZW5hYmxlU2VsZlByb2plY3RPblN0YXJ0XSk7XG5cbiAgcmV0dXJuIHsgcHJvamVjdHM6IGVuYWJsZVByb2plY3RzLCBzZXQgfTtcbn07XG5cbmxldCBlbmFibGVTZWxmUHJvamVjdCA9IHRydWU7XG5cbi8qKiDmnInlirnljJbjgZXjgozjgabjgYTjgotwcm9qZWN0c+OBruODquOCueODiOOCkuWPluW+l+OBmeOCi1xuICpcbiAqIOWApOOBjOioreWumuOBleOCjOOBpuOBhOOBquOBi+OBo+OBn+OCiuOAgeWei+OBjOmBleOBo+OBpuOBhOOBn+WgtOWQiOOBr+OAgeWIneacn+WApOOCkuWFpeOCjOOCi1xuICovXG5jb25zdCBnZXRFbmFibGVzID0gKFxuICBpbml0OiBzdHJpbmdbXSxcbiAgb3B0aW9uczogdXNlUHJvamVjdEZpbHRlck9wdGlvbnMsXG4pOiBzdHJpbmdbXSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgc2V0RW5hYmxlcyhpbml0KTtcbiAgICAgIHJldHVybiBpbml0O1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSBKU09OLnBhcnNlKHZhbHVlKTtcbiAgICBpZiAoXG4gICAgICBBcnJheS5pc0FycmF5KGxpc3QpICYmXG4gICAgICBsaXN0LmV2ZXJ5KChwcm9qZWN0KSA9PiB0eXBlb2YgcHJvamVjdCA9PT0gXCJzdHJpbmdcIilcbiAgICApIHtcbiAgICAgIGlmICghb3B0aW9ucy5lbmFibGVTZWxmUHJvamVjdE9uU3RhcnQpIHJldHVybiBsaXN0O1xuICAgICAgaWYgKCFpbml0LmluY2x1ZGVzKHNjcmFwYm94LlByb2plY3QubmFtZSkpIHJldHVybiBsaXN0O1xuICAgICAgcmV0dXJuIGxpc3QuaW5jbHVkZXMoc2NyYXBib3guUHJvamVjdC5uYW1lKVxuICAgICAgICA/IGVuYWJsZVNlbGZQcm9qZWN0XG4gICAgICAgICAgPyBsaXN0XG4gICAgICAgICAgOiBsaXN0LmZpbHRlcigocCkgPT4gcCAhPT0gc2NyYXBib3guUHJvamVjdC5uYW1lKVxuICAgICAgICA6IGVuYWJsZVNlbGZQcm9qZWN0XG4gICAgICAgID8gWy4uLmxpc3QsIHNjcmFwYm94LlByb2plY3QubmFtZV1cbiAgICAgICAgOiBsaXN0O1xuICAgIH1cbiAgICBzZXRFbmFibGVzKGluaXQpO1xuICAgIHJldHVybiBpbml0O1xuICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgaWYgKCEoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikpIHRocm93IGU7XG4gICAgc2V0RW5hYmxlcyhpbml0KTtcbiAgICByZXR1cm4gaW5pdDtcbiAgfVxufTtcblxuY29uc3Qgc2V0RnJhZyA9IChcbiAgcHJvamVjdDogc3RyaW5nLFxuICBmbGFnOiBib29sZWFuLFxuICBpbml0OiBJdGVyYWJsZTxzdHJpbmc+LFxuICBvcHRpb25zOiB1c2VQcm9qZWN0RmlsdGVyT3B0aW9ucyxcbik6IHZvaWQgPT4ge1xuICBjb25zdCBvbGQgPSBnZXRFbmFibGVzKFsuLi5pbml0XSwgb3B0aW9ucyk7XG4gIGlmIChvcHRpb25zLmVuYWJsZVNlbGZQcm9qZWN0T25TdGFydCAmJiBwcm9qZWN0ID09PSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUpIHtcbiAgICBlbmFibGVTZWxmUHJvamVjdCA9IGZsYWc7XG4gIH1cbiAgc2V0RW5hYmxlcyhmbGFnID8gWy4uLm9sZCwgcHJvamVjdF0gOiBvbGQuZmlsdGVyKChwKSA9PiBwICE9PSBwcm9qZWN0KSk7XG59O1xuXG5jb25zdCBzZXRFbmFibGVzID0gKHByb2plY3RzOiBzdHJpbmdbXSk6IHZvaWQgPT5cbiAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeShwcm9qZWN0cykpO1xuIiwgImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcblxuLyoqIFVzZXJBZ2VudOWIpOWumiAqL1xuZXhwb3J0IGNvbnN0IHVzZU9TID0gKCkgPT5cbiAgdXNlTWVtbygoKSA9PiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZGF0YXNldC5vcyA/PyBcIlwiLCBbXSk7XG4iLCAiLyoqIFVSTOaWh+Wtl+WIl+OCklVSTOOBq+WkieaPm+OBmeOCiyovXG5leHBvcnQgY29uc3QgZGV0ZWN0VVJMID0gKFxuICB0ZXh0OiBVUkwgfCBzdHJpbmcsXG4gIGJhc2U/OiBVUkwgfCBzdHJpbmcsXG4pOiBVUkwgfCBzdHJpbmcgPT4ge1xuICBpZiAodGV4dCBpbnN0YW5jZW9mIFVSTCkgcmV0dXJuIHRleHQ7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBVUkwodGV4dCk7XG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICBpZiAoIShlIGluc3RhbmNlb2YgVHlwZUVycm9yKSkgdGhyb3cgZTtcbiAgICBpZiAoIWJhc2UpIHJldHVybiB0ZXh0O1xuICAgIC8vIOebuOWvvuODkeOCueOBuOOBruWkieaPm+OCkuippuOBv+OCi1xuICAgIC8vIC4v44KELi4v44KEL+OBp+Wni+OBvuOCieOBquOBhOaWh+Wtl+WIl+OBr+OAgeebuOWvvuODkeOCueaJseOBhOOBl+OBquOBhFxuICAgIGlmICghL15cXC5cXC98XlxcLlxcLlxcL3xeXFwvLy50ZXN0KHRleHQpKSByZXR1cm4gdGV4dDtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBVUkwodGV4dCwgYmFzZSk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikpIHRocm93IGU7XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG4gIH1cbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuaW1wb3J0IHsgRnVuY3Rpb25Db21wb25lbnQsIGggfSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcblxuZXhwb3J0IGNvbnN0IFByb2dyZXNzOiBGdW5jdGlvbkNvbXBvbmVudDx7IHByb2dyZXNzOiBudW1iZXIgfT4gPSAoXG4gIHsgcHJvZ3Jlc3MgfSxcbikgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPVwicHJvZ3Jlc3NcIlxuICAgIHN0eWxlPXtgYmFja2dyb3VuZDogIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdmFyKC0tc2VsZWN0LXN1Z2dlc3QtYm9yZGVyLWNvbG9yLCAjZWVlKSAke1xuICAgICAgKHByb2dyZXNzICogMTAwKS50b1ByZWNpc2lvbigzKVxuICAgIH0lLCB0cmFuc3BhcmVudCAkeyhwcm9ncmVzcyAqIDEwMCkudG9QcmVjaXNpb24oMyl9JSlgfVxuICAvPlxuKTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG4vKiogQGpzeCBoICovXG4vKiogQGpzeEZyYWcgRnJhZ21lbnQgKi9cblxuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIEZ1bmN0aW9uQ29tcG9uZW50LFxuICBoLFxuICBSZWZDYWxsYmFjayxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbn0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBTY3JhcGJveCwgdGV4dElucHV0IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuaW1wb3J0IHtcbiAgQ2FuZGlkYXRlIGFzIENhbmRpZGF0ZUNvbXBvbmVudCxcbiAgQ2FuZGlkYXRlUHJvcHMsXG59IGZyb20gXCIuL0NhbmRpZGF0ZS50c3hcIjtcbmltcG9ydCB7IFNlbGVjdEluaXQsIHVzZVNlbGVjdCB9IGZyb20gXCIuL3VzZVNlbGVjdC50c1wiO1xuaW1wb3J0IHsgdXNlUG9zaXRpb24gfSBmcm9tIFwiLi91c2VQb3NpdGlvbi50c1wiO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0IH0gZnJvbSBcIi4vdXNlU2VhcmNoLnRzXCI7XG5pbXBvcnQge1xuICB1c2VQcm9qZWN0RmlsdGVyLFxuICBVc2VQcm9qZWN0RmlsdGVyUmVzdWx0LFxufSBmcm9tIFwiLi91c2VQcm9qZWN0RmlsdGVyLnRzXCI7XG5pbXBvcnQgeyB1c2VPUyB9IGZyb20gXCIuL3VzZU9TLnRzXCI7XG5pbXBvcnQgeyBVc2VMaWZlY3ljbGVSZXN1bHQgfSBmcm9tIFwiLi91c2VMaWZlY3ljbGUudHNcIjtcbmltcG9ydCB7IENvbXBsZXRpb25TdGF0ZSB9IGZyb20gXCIuL3JlZHVjZXIudHNcIjtcbmltcG9ydCB7IGRldGVjdFVSTCB9IGZyb20gXCIuL2RldGVjdFVSTC50c1wiO1xuaW1wb3J0IHsgUHJvZ3Jlc3MgfSBmcm9tIFwiLi9Qcm9ncmVzcy50c3hcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsZXRpb25Qcm9wcyBleHRlbmRzXG4gIFBpY2s8XG4gICAgVXNlTGlmZWN5Y2xlUmVzdWx0LFxuICAgIFwiY29uZmlybUFmdGVyXCIgfCBcImNhbmNlbFwiIHwgXCJmcmVlemVVbnRpbFwiXG4gID4sXG4gIE9taXQ8Q29tcGxldGlvblN0YXRlLCBcInR5cGVcIj4sXG4gIFNlYXJjaFJlc3VsdCB7XG4gIGxpbWl0OiBudW1iZXI7XG4gIGVuYWJsZVNlbGZQcm9qZWN0T25TdGFydDogYm9vbGVhbjtcbiAgY2FsbGJhY2s6IChvcGVyYXRvcnM/OiBPcGVyYXRvcnMpID0+IHZvaWQ7XG4gIG1hcms6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IFVSTD47XG4gIHByb2plY3RzOiBTZXQ8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcGVyYXRvcnMge1xuICBzZWxlY3ROZXh0OiAoaW5pdD86IFNlbGVjdEluaXQpID0+IGJvb2xlYW47XG4gIHNlbGVjdFByZXY6IChpbml0PzogU2VsZWN0SW5pdCkgPT4gYm9vbGVhbjtcbiAgc2VsZWN0Rmlyc3Q6ICgpID0+IGJvb2xlYW47XG4gIHNlbGVjdExhc3Q6ICgpID0+IGJvb2xlYW47XG4gIGNvbmZpcm06ICgpID0+IGJvb2xlYW47XG4gIGNhbmNlbDogKCkgPT4gYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IENvbXBsZXRpb246IEZ1bmN0aW9uQ29tcG9uZW50PENvbXBsZXRpb25Qcm9wcz4gPSAoXG4gIHtcbiAgICBwb3NpdGlvbixcbiAgICBzdGFydCxcbiAgICBlbmFibGVTZWxmUHJvamVjdE9uU3RhcnQsXG4gICAgcHJvamVjdHMsXG4gICAgLi4ucHJvcHNcbiAgfSxcbikgPT4ge1xuICBjb25zdCB7IHByb2plY3RzOiBlbmFibGVQcm9qZWN0cywgc2V0IH0gPSB1c2VQcm9qZWN0RmlsdGVyKHByb2plY3RzLCB7XG4gICAgZW5hYmxlU2VsZlByb2plY3RPblN0YXJ0LFxuICB9KTtcblxuICBjb25zdCB7IHVwZGF0ZVN0YW5kYXJkRWxlbWVudCwgdG9wLCBsZWZ0LCByaWdodCB9ID0gdXNlUG9zaXRpb24oe1xuICAgIGxpbmU6IHBvc2l0aW9uLmxpbmUsXG4gICAgY2hhcjogc3RhcnQsXG4gIH0pO1xuICBjb25zdCBvcyA9IHVzZU9TKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFNvdXJjZUZpbHRlclxuICAgICAgICBpdGVtQ291bnQ9e3Byb3BzLml0ZW1zLmxlbmd0aH1cbiAgICAgICAgey4uLntcbiAgICAgICAgICBlbmFibGVQcm9qZWN0cyxcbiAgICAgICAgICBwcm9qZWN0cyxcbiAgICAgICAgICB0b3AsXG4gICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgc2V0LFxuICAgICAgICAgIG9zLFxuICAgICAgICB9fVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgICAgPEl0ZW1MaXN0XG4gICAgICAgIHsuLi57XG4gICAgICAgICAgdXBkYXRlU3RhbmRhcmRFbGVtZW50LFxuICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgIGVuYWJsZVByb2plY3RzLFxuICAgICAgICAgIHByb2plY3RzLFxuICAgICAgICAgIHRvcCxcbiAgICAgICAgICBsZWZ0LFxuICAgICAgICAgIG9zLFxuICAgICAgICB9fVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuaW50ZXJmYWNlIEl0ZW1MaXN0UHJvcHMgZXh0ZW5kc1xuICBQaWNrPFxuICAgIENvbXBsZXRpb25Qcm9wcyAmIFNlYXJjaFJlc3VsdCAmIGguSlNYLkNTU1Byb3BlcnRpZXMsXG4gICAgfCBcInN0YXJ0XCJcbiAgICB8IFwiY29uZmlybUFmdGVyXCJcbiAgICB8IFwiY2FuY2VsXCJcbiAgICB8IFwicXVlcnlcIlxuICAgIHwgXCJpdGVtc1wiXG4gICAgfCBcInByb2dyZXNzXCJcbiAgICB8IFwiY2FsbGJhY2tcIlxuICAgIHwgXCJsaW1pdFwiXG4gICAgfCBcIm1hcmtcIlxuICAgIHwgXCJ0b3BcIlxuICAgIHwgXCJsZWZ0XCJcbiAgPiB7XG4gIHVwZGF0ZVN0YW5kYXJkRWxlbWVudDogKGVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsKSA9PiB2b2lkO1xuICBlbmFibGVQcm9qZWN0czogc3RyaW5nW107XG4gIHByb2plY3RzOiBTZXQ8c3RyaW5nPjtcbiAgb3M6IHN0cmluZztcbn1cblxuY29uc3QgSXRlbUxpc3QgPSAoXG4gIHtcbiAgICBzdGFydCxcbiAgICB1cGRhdGVTdGFuZGFyZEVsZW1lbnQsXG4gICAgY29uZmlybUFmdGVyLFxuICAgIGNhbmNlbCxcbiAgICBxdWVyeSxcbiAgICBlbmFibGVQcm9qZWN0cyxcbiAgICBwcm9qZWN0cyxcbiAgICBpdGVtcyxcbiAgICB0b3AsXG4gICAgbGVmdCxcbiAgICBwcm9ncmVzcyxcbiAgICBjYWxsYmFjayxcbiAgICBsaW1pdCxcbiAgICBtYXJrLFxuICAgIG9zLFxuICB9OiBJdGVtTGlzdFByb3BzLFxuKSA9PiB7XG4gIC8qKiDoo5zlrozlgJnoo5zjgpLmjL/lhaXjgZnjgovlh73mlbBcbiAgICpcbiAgICog6LW35YuV44GX44Gm44GE44KL6KOc5a6M44Gu56iu6aGe44Gr5b+c44GY44Gm5oyZ5YuV44KS5aSJ44GI44KLXG4gICAqL1xuICBjb25zdCBjb25maXJtID0gdXNlQ2FsbGJhY2soKHRpdGxlOiBzdHJpbmcsIHByb2plY3Q/OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB0ZXh0ID0gcHJvamVjdCA/IGBbLyR7cHJvamVjdH0vJHt0aXRsZX1dYCA6IGBbJHt0aXRsZX1dYDtcbiAgICAvLyDjg6bjg7zjgrbjg7zjgYzmloflrZfjgpLlhaXlipvjgZfjgZ/jgajoo5zlrozliKTlrprjgafoqqToqo3orZjjgZXjgozjgarjgYTjgojjgYbjgIHkuIDml6boo5zlrozjgpLliIfjgaPjgabjgYvjgonnt6jpm4bjgZnjgotcbiAgICBjb25maXJtQWZ0ZXIoKFxuICAgICAgcHJldixcbiAgICAgIHsgbGluZSB9LFxuICAgICkgPT4gW1xuICAgICAgYCR7Wy4uLnByZXZdLnNsaWNlKDAsIHN0YXJ0KS5qb2luKFwiXCIpfSR7dGV4dH0ke1xuICAgICAgICBbLi4ucHJldl0uc2xpY2Uoc3RhcnQgKyBbLi4ucXVlcnldLmxlbmd0aCkuam9pbihcIlwiKVxuICAgICAgfWAsXG4gICAgICB7IGxpbmUsIGNoYXI6IHN0YXJ0ICsgWy4uLnRleHRdLmxlbmd0aCB9LFxuICAgIF0pO1xuICB9LCBbc3RhcnQsIHF1ZXJ5XSk7XG5cbiAgLyoqIOijnOWujOOCveODvOOCueOBq+WklumDqHByb2plY3TjgYzlkKvjgb7jgozjgabjgYTjgovjgYvjganjgYbjgYtcbiAgICpcbiAgICog5ZCr44G+44KM44Gm44GE44KL5aC05ZCI44GvPE1hcmsgLz7jgpLooajnpLrjgZnjgotcbiAgICovXG4gIGNvbnN0IGlzRXh0ZXJuYWxQcm9qZWN0TW9kZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gcHJvamVjdHMuc2l6ZSA+IDEgfHwgIXByb2plY3RzLmhhcyhzY3JhcGJveC5Qcm9qZWN0Lm5hbWUpLFxuICAgIFtwcm9qZWN0c10sXG4gICk7XG5cbiAgLy8g6KGo56S644GZ44KL5YCZ6KOc44Gu44G/44CBVUnnlKjjg4fjg7zjgr/jgpLkvZzjgotcbiAgY29uc3QgY2FuZGlkYXRlc1Byb3BzID0gdXNlTWVtbzxPbWl0PENhbmRpZGF0ZVByb3BzLCBcInNlbGVjdGVkXCI+W10+KCgpID0+IHtcbiAgICAvLyDntZ7jgorovrzjgb/jgpLjgYvjgZHjgarjgYzjgonlpInmj5vjgZnjgotcbiAgICBjb25zdCByZXN1bHQ6IE9taXQ8Q2FuZGlkYXRlUHJvcHMsIFwic2VsZWN0ZWRcIj5bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IGxpbWl0KSBicmVhaztcbiAgICAgIGlmICghaXRlbS5wcm9qZWN0cy5zb21lKChwcm9qZWN0KSA9PiBlbmFibGVQcm9qZWN0cy5pbmNsdWRlcyhwcm9qZWN0KSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgIHByb2plY3RzOiBpdGVtLnByb2plY3RzLmZsYXRNYXAoKHByb2plY3QpID0+XG4gICAgICAgICAgZW5hYmxlUHJvamVjdHMuaW5jbHVkZXMocHJvamVjdClcbiAgICAgICAgICAgID8gW3tcbiAgICAgICAgICAgICAgbmFtZTogcHJvamVjdCxcbiAgICAgICAgICAgICAgbWFyazogaXNFeHRlcm5hbFByb2plY3RNb2RlXG4gICAgICAgICAgICAgICAgPyBkZXRlY3RVUkwobWFya1twcm9qZWN0XSA/PyBcIlwiLCBpbXBvcnQubWV0YS51cmwpIHx8IHByb2plY3RbMF1cbiAgICAgICAgICAgICAgICA6IFwiXCIsXG4gICAgICAgICAgICAgIGNvbmZpcm06ICgpID0+IGNvbmZpcm0oaXRlbS50aXRsZSwgcHJvamVjdCksXG4gICAgICAgICAgICB9XVxuICAgICAgICAgICAgOiBbXVxuICAgICAgICApLFxuICAgICAgICBjb25maXJtOiAoKSA9PiBjb25maXJtKGl0ZW0udGl0bGUpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwgW2VuYWJsZVByb2plY3RzLCBpc0V4dGVybmFsUHJvamVjdE1vZGUsIGl0ZW1zLCBsaW1pdCwgbWFyaywgY29uZmlybV0pO1xuXG4gIC8vIOWAmeijnOmBuOaKnlxuICBjb25zdCB7IHNlbGVjdGVkSWQsIG5leHQsIHByZXYsIHNlbGVjdExhc3QsIHNlbGVjdEZpcnN0IH0gPSB1c2VTZWxlY3QoXG4gICAgY2FuZGlkYXRlc1Byb3BzLFxuICAgIHNlbGVjdG9yLFxuICApO1xuICBjb25zdCBjb25maXJtU2VsZWN0ZWQgPSB1c2VDYWxsYmFjayhcbiAgICAoKSA9PlxuICAgICAgc2VsZWN0ZWRJZCA9PT0gbnVsbFxuICAgICAgICA/IGZhbHNlXG4gICAgICAgIDogKGNhbmRpZGF0ZXNQcm9wcy5maW5kKChjYW5kaWRhdGUpID0+XG4gICAgICAgICAgc2VsZWN0b3IoY2FuZGlkYXRlKSA9PT0gc2VsZWN0ZWRJZFxuICAgICAgICApPy5jb25maXJtPy4oKSxcbiAgICAgICAgICB0cnVlKSxcbiAgICBbc2VsZWN0ZWRJZCwgY2FuZGlkYXRlc1Byb3BzXSxcbiAgKTtcbiAgdXNlRWZmZWN0KCgpID0+XG4gICAgY2FsbGJhY2soXG4gICAgICBjYW5kaWRhdGVzUHJvcHMubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDoge1xuICAgICAgICBzZWxlY3ROZXh0OiAoaW5pdD86IFNlbGVjdEluaXQpID0+IChuZXh0KGluaXQpLCB0cnVlKSxcbiAgICAgICAgc2VsZWN0UHJldjogKGluaXQ/OiBTZWxlY3RJbml0KSA9PiAocHJldihpbml0KSwgdHJ1ZSksXG4gICAgICAgIHNlbGVjdEZpcnN0OiAoKSA9PiAoc2VsZWN0Rmlyc3QoKSwgdHJ1ZSksXG4gICAgICAgIHNlbGVjdExhc3Q6ICgpID0+IChzZWxlY3RMYXN0KCksIHRydWUpLFxuICAgICAgICBjb25maXJtOiBjb25maXJtU2VsZWN0ZWQsXG4gICAgICAgIGNhbmNlbDogKCkgPT4gKGNhbmNlbCgpLCB0cnVlKSxcbiAgICAgIH0gYXMgY29uc3QsXG4gICAgKSwgW1xuICAgIGNhbGxiYWNrLFxuICAgIGNhbmRpZGF0ZXNQcm9wcy5sZW5ndGgsXG4gICAgbmV4dCxcbiAgICBwcmV2LFxuICAgIHNlbGVjdEZpcnN0LFxuICAgIHNlbGVjdExhc3QsXG4gICAgY29uZmlybVNlbGVjdGVkLFxuICBdKTtcblxuICAvKiog6KOc5a6Md2luZG9344Gu44K544K/44Kk44OrICovXG4gIGNvbnN0IHN0eWxlID0gdXNlTWVtbzxoLkpTWC5DU1NQcm9wZXJ0aWVzPihcbiAgICAoKSA9PlxuICAgICAgLy8gdW5kZWZpbmVk44GobnVsbOOCkuOBvuOBqOOCgeOBpuWIpOWumuOBl+OBn+OBhOOBruOBp+OAgeWOs+WvhuavlOi8gyE9PeOBr+S9v+OCj+OBquOBhFxuICAgICAgY2FuZGlkYXRlc1Byb3BzLmxlbmd0aCA+IDAgJiYgdG9wICE9IG51bGwgJiZcbiAgICAgICAgbGVmdCAhPSBudWxsXG4gICAgICAgID8geyB0b3AsIGxlZnQgfVxuICAgICAgICA6IHsgZGlzcGxheTogXCJub25lXCIgfSxcbiAgICBbY2FuZGlkYXRlc1Byb3BzLmxlbmd0aCwgdG9wLCBsZWZ0XSxcbiAgKTtcblxuICBjb25zdCByZWY6IFJlZkNhbGxiYWNrPEhUTUxEaXZFbGVtZW50PiA9IHVzZUNhbGxiYWNrKChlbGVtZW50KSA9PiB7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICB1cGRhdGVTdGFuZGFyZEVsZW1lbnQoZWxlbWVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8g5qyh44Gu44KI44GG44GqRE9N5qeL6YCg44KS5pyf5b6F44GX44Gm44GE44KLOlxuICAgIC8vXG4gICAgLy8gPGRpdiBkYXRhLXVzZXJzY3JpcHQtbmFtZT1cInNjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uXCI+IOKGkCByb290Lmhvc3RcbiAgICAvLyAgI3NoYWRvdy1yb290IChvcGVuKSDihpAgcm9vdFxuICAgIC8vICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiAvPiDihpAgZWxlbWVudFxuICAgIC8vIDwvZGl2ID5cblxuICAgIGNvbnN0IHJvb3QgPSBlbGVtZW50LnBhcmVudE5vZGU7XG4gICAgaWYgKCEocm9vdCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgVGhlIHBhcmVudCBvZiBcImRpdi5jb250YWluZXJcIiBtdXN0IGJlIFNoYWRvd1Jvb3RgKTtcbiAgICB9XG5cbiAgICAvLyBgPGRpdiAvPmDjgYxyb2906KaB57Sg44Gr44Gq44KL44GT44Go44Gv44Gq44GE44Gu44Gn44CBYHJvb3QuaG9zdC5wYXJlbnRFbGVtZW50YOOBr2BudWxsYOOBq+OBquOCieOBquOBhOOBr+OBmlxuICAgIHVwZGF0ZVN0YW5kYXJkRWxlbWVudChyb290Lmhvc3QucGFyZW50RWxlbWVudCk7XG4gIH0sIFt1cGRhdGVTdGFuZGFyZEVsZW1lbnRdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPVwiY29udGFpbmVyIGNhbmRpZGF0ZXNcIlxuICAgICAgZGF0YS1vcz17b3N9XG4gICAgICBzdHlsZT17c3R5bGV9XG4gICAgPlxuICAgICAge2NhbmRpZGF0ZXNQcm9wcy5tYXAoKHByb3BzKSA9PiAoXG4gICAgICAgIDxDYW5kaWRhdGVDb21wb25lbnRcbiAgICAgICAgICBrZXk9e3Byb3BzLnRpdGxlfVxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWRJZCA9PT0gcHJvcHMudGl0bGV9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHtpdGVtcy5sZW5ndGggPiBsaW1pdCAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY291bnRlclwiPlxuICAgICAgICAgIHtgJHtpdGVtcy5sZW5ndGggLSBsaW1pdH0gbW9yZSBsaW5rc2B9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIDxQcm9ncmVzcyBwcm9ncmVzcz17cHJvZ3Jlc3N9IC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5pbnRlcmZhY2UgU291cmNlRmlsdGVyUHJvcHMgZXh0ZW5kc1xuICBQaWNrPFxuICAgICYgQ29tcGxldGlvblByb3BzXG4gICAgJiBTZWFyY2hSZXN1bHRcbiAgICAmIGguSlNYLkNTU1Byb3BlcnRpZXNcbiAgICAmIFVzZVByb2plY3RGaWx0ZXJSZXN1bHQsXG4gICAgfCBcIm1hcmtcIlxuICAgIHwgXCJ0b3BcIlxuICAgIHwgXCJyaWdodFwiXG4gICAgfCBcInNldFwiXG4gICAgfCBcInByb2plY3RTY29yZVwiXG4gICAgfCBcImZyZWV6ZVVudGlsXCJcbiAgPiB7XG4gIGVuYWJsZVByb2plY3RzOiBzdHJpbmdbXTtcbiAgcHJvamVjdHM6IFNldDxzdHJpbmc+O1xuICBvczogc3RyaW5nO1xuICBpdGVtQ291bnQ6IG51bWJlcjtcbn1cblxuY29uc3QgU291cmNlRmlsdGVyID0gKFxuICB7XG4gICAgZW5hYmxlUHJvamVjdHMsXG4gICAgcHJvamVjdHMsXG4gICAgcHJvamVjdFNjb3JlLFxuICAgIG1hcmssXG4gICAgaXRlbUNvdW50LFxuICAgIHRvcCxcbiAgICByaWdodCxcbiAgICBzZXQsXG4gICAgb3MsXG4gICAgZnJlZXplVW50aWwsXG4gIH06IFNvdXJjZUZpbHRlclByb3BzLFxuKSA9PiB7XG4gIC8vIHByb2plY3Tjga7ntZ7jgorovrzjgb9cbiAgY29uc3QgcHJvamVjdFByb3BzID0gdXNlTWVtbygoKSA9PlxuICAgIC8vIOS6iOOCgeioreWumuOBleOCjOOBn3Byb2plY3Rz44GL44KJ44CB5qSc57Si44Gn6KaL44Gk44GL44Gj44Gf44KC44Gu44Gu44G/6KGo56S644GZ44KLXG4gICAgWy4uLnByb2plY3RzXS5zb3J0KChhLCBiKSA9PlxuICAgICAgKHByb2plY3RTY29yZS5nZXQoYikgPz8gMCkgLSAocHJvamVjdFNjb3JlLmdldChhKSA/PyAwKVxuICAgICkuZmxhdE1hcCgocHJvamVjdCkgPT5cbiAgICAgIHByb2plY3RTY29yZS5oYXMocHJvamVjdClcbiAgICAgICAgPyBbe1xuICAgICAgICAgIG5hbWU6IHByb2plY3QsXG4gICAgICAgICAgZW5hYmxlOiBlbmFibGVQcm9qZWN0cy5pbmNsdWRlcyhwcm9qZWN0KSxcbiAgICAgICAgICBtYXJrOiBkZXRlY3RVUkwobWFya1twcm9qZWN0XSA/PyBcIlwiLCBpbXBvcnQubWV0YS51cmwpIHx8IHByb2plY3RbMF0sXG4gICAgICAgICAgc2NvcmU6IHByb2plY3RTY29yZS5nZXQocHJvamVjdCkhLFxuICAgICAgICAgIG9uQ2xpY2s6ICgpID0+XG4gICAgICAgICAgICBmcmVlemVVbnRpbCgoKSA9PiB7XG4gICAgICAgICAgICAgIHNldChwcm9qZWN0LCAhZW5hYmxlUHJvamVjdHMuaW5jbHVkZXMocHJvamVjdCkpO1xuICAgICAgICAgICAgICB0ZXh0SW5wdXQoKSEuZm9jdXMoKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB9XVxuICAgICAgICA6IFtdXG4gICAgKSwgW3Byb2plY3RzLCBwcm9qZWN0U2NvcmUsIGVuYWJsZVByb2plY3RzLCBtYXJrXSk7XG5cbiAgLyoqIHByb2plY3TntZ7jgorovrzjgb/jg5Hjg43jg6vjga7jgrnjgr/jgqTjg6tcbiAgICpcbiAgICogcHJvamVjdOOBjOS4gOOBpOOBl+OBi+aMh+WumuOBleOCjOOBpuOBhOOBquOBkeOCjOOBsOihqOekuuOBl+OBquOBhFxuICAgKlxuICAgKiDpnZ7ooajnpLrjga7mpJzntKLlgJnoo5zjgYzjgYLjgozjgbDooajnpLrjgZfntprjgZHjgotcbiAgICovXG4gIGNvbnN0IHN0eWxlID0gdXNlTWVtbzxoLkpTWC5DU1NQcm9wZXJ0aWVzPihcbiAgICAoKSA9PlxuICAgICAgLy8gdW5kZWZpbmVk44GobnVsbOOCkuOBvuOBqOOCgeOBpuWIpOWumuOBl+OBn+OBhOOBruOBp+OAgeWOs+WvhuavlOi8gyE9PeOBr+S9v+OCj+OBquOBhFxuICAgICAgaXRlbUNvdW50ID4gMCAmJiB0b3AgIT0gbnVsbCAmJlxuICAgICAgICByaWdodCAhPSBudWxsICYmXG4gICAgICAgIHByb2plY3RzLnNpemUgPiAxXG4gICAgICAgID8geyB0b3AsIHJpZ2h0IH1cbiAgICAgICAgOiB7IGRpc3BsYXk6IFwibm9uZVwiIH0sXG4gICAgW3RvcCwgcmlnaHQsIGl0ZW1Db3VudCwgcHJvamVjdHMuc2l6ZV0sXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJjb250YWluZXIgcHJvamVjdHNcIlxuICAgICAgZGF0YS1vcz17b3N9XG4gICAgICBzdHlsZT17c3R5bGV9XG4gICAgPlxuICAgICAge3Byb2plY3RQcm9wcy5tYXAoKHByb3BzKSA9PiA8TWFyayBrZXk9e3Byb3BzLm5hbWV9IHsuLi5wcm9wc30gLz4pfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgTWFyayA9IChcbiAgcHJvcHM6IHtcbiAgICBlbmFibGU6IGJvb2xlYW47XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHNjb3JlOiBudW1iZXI7XG4gICAgb25DbGljazogaC5KU1guTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xuICAgIG1hcms6IFVSTCB8IHN0cmluZztcbiAgfSxcbikgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtwcm9wcy5lbmFibGUgPyBcIm1hcmtcIiA6IFwibWFyayBkaXNhYmxlZFwifVxuICAgIGRhdGEtc2NvcmU9e3Byb3BzLnNjb3JlLnRvUHJlY2lzaW9uKDMpfVxuICAgIG9uQ2xpY2s9e3Byb3BzLm9uQ2xpY2t9XG4gICAgdGl0bGU9e3Byb3BzLm5hbWV9XG4gID5cbiAgICB7cHJvcHMubWFyayBpbnN0YW5jZW9mIFVSTFxuICAgICAgPyA8aW1nIHNyYz17cHJvcHMubWFyay5ocmVmfSAvPlxuICAgICAgOiBgWyR7cHJvcHMubWFya31dYH1cbiAgPC9kaXY+XG4pO1xuXG5jb25zdCBzZWxlY3RvciA9IDxUIGV4dGVuZHMgeyB0aXRsZTogc3RyaW5nIH0+KGl0ZW06IFQpOiBzdHJpbmcgPT4gaXRlbS50aXRsZTtcbiIsICJsZXQgZGVidWdNb2RlOiBib29sZWFuIHwgU2V0PHN0cmluZz4gPSBmYWxzZTtcblxuLyoqIGNhY2hl5ZGo44KK44GuZGVidWflh7rlipvjga7mnInlirnjg7vnhKHlirnjga7liIfjgormm7/jgYjjgpLooYzjgYZcbiAqXG4gKiBAcGFyYW0gbW9kZSBgdHJ1ZWDvvJrlhajjgabjga5kZWJ1Z+WHuuWKm+OCkuacieWKueOBq+OBmeOCiywgYGZhbHNlYO+8muWFqOOBpuOBrmRlYnVn5Ye65Yqb44KS54Sh5Yq544Gr44GZ44KLLCDjgZ3jgozku6XlpJbvvJrmjIflrprjgZfjgZ/jg5XjgqHjgqTjg6vkuK3jga5kZWJ1Z+WHuuWKm+OBruOBv+acieWKueOBq+OBmeOCi1xuICovXG5leHBvcnQgY29uc3Qgc2V0RGVidWdNb2RlID0gKG1vZGU6IGJvb2xlYW4gfCBJdGVyYWJsZTxzdHJpbmc+KTogdm9pZCA9PiB7XG4gIGRlYnVnTW9kZSA9IHR5cGVvZiBtb2RlID09PSBcImJvb2xlYW5cIiA/IG1vZGUgOiBuZXcgU2V0KG1vZGUpO1xufTtcblxuLyoqIGRlYnVnIG1vZGXjga7jgajjgY3jgaDjgZHmnInlirnjgapjb25zb2xl44KS44OV44Kh44Kk44Or44GU44Go44Gr5L2c44KLXG4gKlxuICogQHBhcmFtIGZpbGVuYW1lIOOCs+ODs+OCveODvOODq+WHuuWKm+OCkuWRvOOBs+WHuuOBl+OBn+ODleOCoeOCpOODq+WQjVxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlRGVidWcgPSAoZmlsZW5hbWU6IHN0cmluZyk6IENvbnNvbGUgPT5cbiAgT2JqZWN0LmZyb21FbnRyaWVzKFsuLi5PYmplY3QuZW50cmllcyhjb25zb2xlKV0ubWFwKFxuICAgIChba2V5LCB2YWx1ZV06IFtzdHJpbmcsIHVua25vd25dKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBba2V5LCB2YWx1ZV07XG4gICAgICBzd2l0Y2ggKGtleSBhcyBrZXlvZiBDb25zb2xlKSB7XG4gICAgICAgIGNhc2UgXCJ3YXJuXCI6XG4gICAgICAgIGNhc2UgXCJlcnJvclwiOlxuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAoLi4uYXJnczogdW5rbm93bltdKSA9PlxuICAgICAgICAgICAgICB2YWx1ZShgJWMke2ZpbGVuYW1lfWAsIFwiY29sb3I6IGdyYXlcIiwgLi4uYXJncyksXG4gICAgICAgICAgXTtcbiAgICAgICAgY2FzZSBcImxvZ1wiOlxuICAgICAgICBjYXNlIFwiaW5mb1wiOlxuICAgICAgICBjYXNlIFwiZGVidWdcIjpcbiAgICAgICAgICByZXR1cm4gW2tleSwgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBkZWJ1Z01vZGUgIT09IHRydWUgJiYgKCFkZWJ1Z01vZGUgfHwgIWRlYnVnTW9kZS5oYXMoZmlsZW5hbWUpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbHVlKGAlYyR7ZmlsZW5hbWV9YCwgXCJjb2xvcjogZ3JheVwiLCAuLi5hcmdzKTtcbiAgICAgICAgICB9XTtcbiAgICAgICAgY2FzZSBcImFzc2VydFwiOlxuICAgICAgICAgIHJldHVybiBba2V5LCAoYXNzZXJ0aW9uOiBib29sZWFuLCAuLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZGVidWdNb2RlICE9PSB0cnVlICYmICghZGVidWdNb2RlIHx8ICFkZWJ1Z01vZGUuaGFzKGZpbGVuYW1lKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWx1ZShhc3NlcnRpb24sIGAlYyR7ZmlsZW5hbWV9YCwgXCJjb2xvcjogZ3JheVwiLCAuLi5hcmdzKTtcbiAgICAgICAgICB9XTtcbiAgICAgICAgY2FzZSBcInRpbWVcIjpcbiAgICAgICAgY2FzZSBcInRpbWVFbmRcIjpcbiAgICAgICAgICByZXR1cm4gW2tleSwgKGxhYmVsOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZGVidWdNb2RlICE9PSB0cnVlICYmICghZGVidWdNb2RlIHx8ICFkZWJ1Z01vZGUuaGFzKGZpbGVuYW1lKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWx1ZShgJHtmaWxlbmFtZX0gJHtsYWJlbH1gKTtcbiAgICAgICAgICB9XTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gW2tleSwgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBkZWJ1Z01vZGUgIT09IHRydWUgJiYgKCFkZWJ1Z01vZGUgfHwgIWRlYnVnTW9kZS5oYXMoZmlsZW5hbWUpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSguLi5hcmdzKTtcbiAgICAgICAgICB9XTtcbiAgICAgIH1cbiAgICB9LFxuICApKSBhcyB1bmtub3duIGFzIENvbnNvbGU7XG4iLCAiLyoqIOWcp+e4ruOBl+OBn+ODquODs+OCr+ODh+ODvOOCv1xuICpcbiAqIHByb3BlcnR5IG5hbWXjgpLnnIHnlaXjgZnjgovjgZPjgajjgafjg4fjg7zjgr/ph4/jgpLmuJvjgonjgZfjgabjgYTjgotcbiAqL1xuZXhwb3J0IHR5cGUgQ29tcHJlc3NlZExpbmsgPSBbXG4gIHN0cmluZywgLy8gdGl0bGU7IHBhZ2UgdGl0bGVcbiAgc3RyaW5nIHwgdW5kZWZpbmVkLCAvLyBpbWFnZSBwYWdlIHRodW1ibmFpbFxuICBudW1iZXIsIC8vIHVwZGF0ZWQ7IOepuuODmuODvOOCuOOBruOBqOOBjeOBry0x44Gr44Gq44KLXG4gIC4uLnN0cmluZ1tdLCAvLyBsaW5rc1xuXTtcblxuLyoqIGxpbmsgZGF0YSAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW5rIHtcbiAgLyoqIHBhZ2UgdGl0bGUgKi9cbiAgdGl0bGU6IHN0cmluZztcblxuICAvKiogbGlua3MgdGhlIHBhZ2UgaGFzICovXG4gIGxpbmtzOiBzdHJpbmdbXTtcblxuICAvKiogcGFnZSB0aHVtYm5haWwgKi9cbiAgaW1hZ2U/OiBzdHJpbmc7XG5cbiAgLyoqIHdoZXRoZXIgdGhlIHBhZ2UgZXhpc3RzICovXG4gIGV4aXN0czogYm9vbGVhbjtcblxuICAvKiogdXBkYXRlZCB0aW1lIChVTklYIHRpbWUpICovXG4gIHVwZGF0ZWQ6IG51bWJlcjtcbn1cblxuLyoqIOWcp+e4ruOBl+OBn+ODquODs+OCr+aDheWgseOCkuimi+OChOOBmeOBj+OBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGRlY29kZSA9IChsaW5rOiBDb21wcmVzc2VkTGluayk6IExpbmsgPT4ge1xuICBjb25zdCBbdGl0bGUsIGltYWdlLCB1cGRhdGVkLCAuLi5saW5rc10gPSBsaW5rO1xuXG4gIHJldHVybiB7XG4gICAgdGl0bGUsXG4gICAgbGlua3MsXG4gICAgaW1hZ2UsXG4gICAgZXhpc3RzOiB1cGRhdGVkID49IDAsXG4gICAgdXBkYXRlZDogTWF0aC5taW4oMCwgdXBkYXRlZCksXG4gIH07XG59O1xuXG4vKiog44Oq44Oz44Kv5oOF5aCx44KSRELnlKjjgavlnKfnuK7jgZnjgosgKi9cbmV4cG9ydCBjb25zdCBlbmNvZGUgPSAoXG4gIGxpbms6IExpbmssXG4pOiBDb21wcmVzc2VkTGluayA9PiBbXG4gIGxpbmsudGl0bGUsXG4gIGxpbmsuaW1hZ2UsXG4gIGxpbmsuZXhpc3RzID8gbGluay51cGRhdGVkIDogLTEsXG4gIC4uLmxpbmsubGlua3MsXG5dO1xuIiwgImltcG9ydCB7IFNlYXJjaGVkVGl0bGUsIHRvVGl0bGVMYyB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmltcG9ydCB7IENvbXByZXNzZWRMaW5rLCBlbmNvZGUsIExpbmsgfSBmcm9tIFwiLi9saW5rLnRzXCI7XG5cbi8qKiBTZWFyY2ggVGl0bGUgQVBJ44GL44KJ5Y+W5b6X44GX44Gf44Oq44Oz44Kv44OH44O844K/44KS44CBRELjgavmoLzntI3jgZnjgovlvaLlvI/jgavlpInmj5vjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBjb252ZXJ0TGlua3MgPSAocGFnZXM6IFNlYXJjaGVkVGl0bGVbXSk6IENvbXByZXNzZWRMaW5rW10gPT4ge1xuICBjb25zdCBsaW5rTWFwID0gbmV3IE1hcDxzdHJpbmcsIExpbms+KCk7XG5cbiAgZm9yIChjb25zdCBwYWdlIG9mIHBhZ2VzKSB7XG4gICAgY29uc3QgdGl0bGVMYyA9IHRvVGl0bGVMYyhwYWdlLnRpdGxlKTtcbiAgICBsaW5rTWFwLnNldCh0aXRsZUxjLCB7XG4gICAgICB0aXRsZTogcGFnZS50aXRsZSxcbiAgICAgIGltYWdlOiBwYWdlLmltYWdlLFxuICAgICAgdXBkYXRlZDogcGFnZS51cGRhdGVkLFxuICAgICAgbGlua3M6IHBhZ2UubGlua3MsXG4gICAgICBleGlzdHM6IHRydWUsXG4gICAgfSk7XG5cbiAgICBmb3IgKGNvbnN0IGxpbmsgb2YgcGFnZS5saW5rcykge1xuICAgICAgY29uc3QgbGlua0xjID0gdG9UaXRsZUxjKGxpbmspO1xuXG4gICAgICBpZiAobGlua01hcC5oYXMobGlua0xjKSkgY29udGludWU7XG5cbiAgICAgIGxpbmtNYXAuc2V0KGxpbmtMYywge1xuICAgICAgICB0aXRsZTogbGluayxcbiAgICAgICAgdXBkYXRlZDogMCxcbiAgICAgICAgbGlua3M6IFtdLFxuICAgICAgICBleGlzdHM6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFsuLi5saW5rTWFwLnZhbHVlcygpXS5tYXAoKGxpbmspID0+IGVuY29kZShsaW5rKSk7XG59O1xuIiwgImltcG9ydCB7XG4gIGdldExpbmtzLFxuICBJbnZhbGlkRm9sbG93aW5nSWRFcnJvcixcbiAgUmVzdWx0LFxufSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IENvbXByZXNzZWRMaW5rIH0gZnJvbSBcIi4vbGluay50c1wiO1xuaW1wb3J0IHsgY3JlYXRlRGVidWcgfSBmcm9tIFwiLi9kZWJ1Zy50c1wiO1xuaW1wb3J0IHtcbiAgTm90Rm91bmRFcnJvcixcbiAgTm90TG9nZ2VkSW5FcnJvcixcbiAgU2VhcmNoZWRUaXRsZSxcbn0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuaW1wb3J0IHsgY29udmVydExpbmtzIH0gZnJvbSBcIi4vY29udmVydExpbmtzLnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZURlYnVnKFwic2NyYXBib3gtc3RvcmFnZTpyZW1vdGUudHNcIik7XG5cbi8qKiByZW1vdGXjgYvjgonjg6rjg7Pjgq/jg4fjg7zjgr/jgpLlj5blvpfjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBkb3dubG9hZExpbmtzID0gYXN5bmMgKFxuICBwcm9qZWN0OiBzdHJpbmcsXG4pOiBQcm9taXNlPFxuICBSZXN1bHQ8XG4gICAgQ29tcHJlc3NlZExpbmtbXSxcbiAgICBOb3RGb3VuZEVycm9yIHwgTm90TG9nZ2VkSW5FcnJvciB8IEludmFsaWRGb2xsb3dpbmdJZEVycm9yXG4gID5cbj4gPT4ge1xuICBsZXQgZm9sbG93aW5nSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY29uc3QgcGFnZXM6IFNlYXJjaGVkVGl0bGVbXSA9IFtdO1xuXG4gIGNvbnN0IHRhZyA9IGBkb3dubG9hZCBhbmQgY3JlYXRlIExpbmtzIG9mIFwiJHtwcm9qZWN0fVwiYDtcbiAgbG9nZ2VyLnRpbWUodGFnKTtcblxuICBkbyB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZ2V0TGlua3MocHJvamVjdCwgeyBmb2xsb3dpbmdJZCB9KTtcbiAgICBpZiAoIXJlcy5vaykgcmV0dXJuIHJlcztcbiAgICBmb2xsb3dpbmdJZCA9IHJlcy52YWx1ZS5mb2xsb3dpbmdJZDtcbiAgICBwYWdlcy5wdXNoKC4uLnJlcy52YWx1ZS5wYWdlcyk7XG4gIH0gd2hpbGUgKGZvbGxvd2luZ0lkKTtcbiAgY29uc3QgcmVzdWx0ID0gY29udmVydExpbmtzKHBhZ2VzKTtcblxuICBsb2dnZXIudGltZUVuZCh0YWcpO1xuXG4gIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogcmVzdWx0IH07XG59O1xuIiwgImltcG9ydCB7IGdldFByb2plY3QsIGxpc3RQcm9qZWN0cywgUmVzdWx0IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1yZXN0LnRzXCI7XG5pbXBvcnQge1xuICBOb3RGb3VuZEVycm9yLFxuICBOb3RMb2dnZWRJbkVycm9yLFxuICBOb3RNZW1iZXJFcnJvcixcbiAgUHJvamVjdCxcbn0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3RTdGF0dXMge1xuICAvKiogcHJvamVjdCBuYW1lIChrZXkpICovXG4gIHByb2plY3Q6IHN0cmluZztcblxuICAvKiogcHJvamVjdCBpZFxuICAgKlxuICAgKiBwcm9qZWN0c+OBruabtOaWsOaXpeaZguOCkuS4gOaLrOWPluW+l+OBmeOCi+OBqOOBjeOBq+S9v+OBhlxuICAgKi9cbiAgaWQ/OiBzdHJpbmc7XG5cbiAgLyoqIOacieWKueOBqnByb2plY3TjgYvjganjgYbjgYtcbiAgICpcbiAgICog44Ki44Kv44K744K55qip44Gu44Gq44GEcHJvamVjdOOBqOWtmOWcqOOBl+OBquOBhHByb2plY3Tjga7loLTlkIjjga9mYWxzZeOBq+OBquOCi1xuICAgKi9cbiAgaXNWYWxpZDogdHJ1ZTtcblxuICAvKiogcHJvamVjdOOBruacgOe1guabtOaWsOaXpeaZglxuICAgKlxuICAgKiDjg6rjg7Pjgq/jg4fjg7zjgr/jga7mm7TmlrDjgpLnorroqo3jgZnjgovjgajjgY3jgavkvb/jgYZcbiAgICovXG4gIHVwZGF0ZWQ6IG51bWJlcjtcblxuICAvKiog44OH44O844K/44Gu5pyA57WC56K66KqN5pel5pmCICovXG4gIGNoZWNrZWQ6IG51bWJlcjtcblxuICAvKiog5pu05paw5Lit44OV44Op44KwICovXG4gIHVwZGF0aW5nOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludmFsaWRQcm9qZWN0U3RhdHVzIHtcbiAgLyoqIHByb2plY3QgbmFtZSAoa2V5KSAqL1xuICBwcm9qZWN0OiBzdHJpbmc7XG5cbiAgLyoqIOacieWKueOBqnByb2plY3TjgYvjganjgYbjgYtcbiAgICpcbiAgICog44Ki44Kv44K744K55qip44Gu44Gq44GEcHJvamVjdOOBqOWtmOWcqOOBl+OBquOBhHByb2plY3Tjga7loLTlkIjjga9mYWxzZeOBq+OBquOCi1xuICAgKi9cbiAgaXNWYWxpZDogZmFsc2U7XG59XG5cbi8qKiBwcm9qZWN044Gu5oOF5aCx44KS5LiA5ous5Y+W5b6X44GZ44KLICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIGZldGNoUHJvamVjdFN0YXR1cyhcbiAgcHJvamVjdHM6IFByb2plY3RTdGF0dXNbXSxcbik6IEFzeW5jR2VuZXJhdG9yPFxuICBSZXN1bHQ8XG4gICAgUHJvamVjdCAmIHsgY2hlY2tlZDogbnVtYmVyIH0sXG4gICAgKE5vdExvZ2dlZEluRXJyb3IgfCBOb3RGb3VuZEVycm9yIHwgTm90TWVtYmVyRXJyb3IpICYgeyBwcm9qZWN0OiBzdHJpbmcgfVxuICA+LFxuICB2b2lkLFxuICB1bmtub3duXG4+IHtcbiAgLy8gaWTjgYzjgYLjgovjgoLjga7jgajjgarjgYTjgoLjga7jgajjgavliIbjgZHjgotcbiAgY29uc3QgcHJvamVjdElkczogc3RyaW5nW10gPSBbXTtcbiAgbGV0IG5ld1Byb2plY3RzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBjaGVja2VkTWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgZm9yIChjb25zdCBwcm9qZWN0IG9mIHByb2plY3RzKSB7XG4gICAgaWYgKHByb2plY3QuaWQpIHtcbiAgICAgIHByb2plY3RJZHMucHVzaChwcm9qZWN0LmlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3UHJvamVjdHMucHVzaChwcm9qZWN0LnByb2plY3QpO1xuICAgIH1cbiAgICBjaGVja2VkTWFwLnNldChwcm9qZWN0LnByb2plY3QsIHByb2plY3QuY2hlY2tlZCk7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbGlzdFByb2plY3RzKHByb2plY3RJZHMpO1xuICBpZiAoIXJlc3VsdC5vaykge1xuICAgIC8vIGxvZyBpbuOBl+OBpuOBhOOBquOBhOOBqOOBjeOBr+OAgWdldFByb2plY3QoKeOBp+WFqOOBpuOBrnByb2plY3Tjga7jg4fjg7zjgr/jgpLlj5blvpfjgZnjgotcbiAgICBuZXdQcm9qZWN0cyA9IHByb2plY3RzLm1hcCgocHJvamVjdCkgPT4gcHJvamVjdC5wcm9qZWN0KTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKGNvbnN0IHByb2plY3Qgb2YgcmVzdWx0LnZhbHVlLnByb2plY3RzKSB7XG4gICAgICBpZiAoIWNoZWNrZWRNYXAuaGFzKHByb2plY3QubmFtZSkpIGNvbnRpbnVlO1xuICAgICAgeWllbGQge1xuICAgICAgICBvazogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IHsgLi4ucHJvamVjdCwgY2hlY2tlZDogY2hlY2tlZE1hcC5nZXQocHJvamVjdC5uYW1lKSA/PyAwIH0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBmb3IgKGNvbnN0IG5hbWUgb2YgbmV3UHJvamVjdHMpIHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBnZXRQcm9qZWN0KG5hbWUpO1xuICAgIHlpZWxkIHJlcy5va1xuICAgICAgPyB7XG4gICAgICAgIG9rOiB0cnVlLFxuICAgICAgICB2YWx1ZTogeyAuLi5yZXMudmFsdWUsIGNoZWNrZWQ6IGNoZWNrZWRNYXAuZ2V0KG5hbWUpID8/IDAgfSxcbiAgICAgIH1cbiAgICAgIDogeyBvazogZmFsc2UsIHZhbHVlOiB7IC4uLnJlcy52YWx1ZSwgcHJvamVjdDogbmFtZSB9IH07XG4gIH1cbn1cbiIsICJjb25zdCBpbnN0YW5jZU9mQW55ID0gKG9iamVjdCwgY29uc3RydWN0b3JzKSA9XHUwMDNlIGNvbnN0cnVjdG9ycy5zb21lKChjKSA9XHUwMDNlIG9iamVjdCBpbnN0YW5jZW9mIGMpO1xuXG5sZXQgaWRiUHJveHlhYmxlVHlwZXM7XG5sZXQgY3Vyc29yQWR2YW5jZU1ldGhvZHM7XG4vLyBUaGlzIGlzIGEgZnVuY3Rpb24gdG8gcHJldmVudCBpdCB0aHJvd2luZyB1cCBpbiBub2RlIGVudmlyb25tZW50cy5cbmZ1bmN0aW9uIGdldElkYlByb3h5YWJsZVR5cGVzKCkge1xuICAgIHJldHVybiAoaWRiUHJveHlhYmxlVHlwZXMgfHxcbiAgICAgICAgKGlkYlByb3h5YWJsZVR5cGVzID0gW1xuICAgICAgICAgICAgSURCRGF0YWJhc2UsXG4gICAgICAgICAgICBJREJPYmplY3RTdG9yZSxcbiAgICAgICAgICAgIElEQkluZGV4LFxuICAgICAgICAgICAgSURCQ3Vyc29yLFxuICAgICAgICAgICAgSURCVHJhbnNhY3Rpb24sXG4gICAgICAgIF0pKTtcbn1cbi8vIFRoaXMgaXMgYSBmdW5jdGlvbiB0byBwcmV2ZW50IGl0IHRocm93aW5nIHVwIGluIG5vZGUgZW52aXJvbm1lbnRzLlxuZnVuY3Rpb24gZ2V0Q3Vyc29yQWR2YW5jZU1ldGhvZHMoKSB7XG4gICAgcmV0dXJuIChjdXJzb3JBZHZhbmNlTWV0aG9kcyB8fFxuICAgICAgICAoY3Vyc29yQWR2YW5jZU1ldGhvZHMgPSBbXG4gICAgICAgICAgICBJREJDdXJzb3IucHJvdG90eXBlLmFkdmFuY2UsXG4gICAgICAgICAgICBJREJDdXJzb3IucHJvdG90eXBlLmNvbnRpbnVlLFxuICAgICAgICAgICAgSURCQ3Vyc29yLnByb3RvdHlwZS5jb250aW51ZVByaW1hcnlLZXksXG4gICAgICAgIF0pKTtcbn1cbmNvbnN0IHRyYW5zYWN0aW9uRG9uZU1hcCA9IG5ldyBXZWFrTWFwKCk7XG5jb25zdCB0cmFuc2Zvcm1DYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG5jb25zdCByZXZlcnNlVHJhbnNmb3JtQ2FjaGUgPSBuZXcgV2Vha01hcCgpO1xuZnVuY3Rpb24gcHJvbWlzaWZ5UmVxdWVzdChyZXF1ZXN0KSB7XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID1cdTAwM2Uge1xuICAgICAgICBjb25zdCB1bmxpc3RlbiA9ICgpID1cdTAwM2Uge1xuICAgICAgICAgICAgcmVxdWVzdC5yZW1vdmVFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgc3VjY2Vzcyk7XG4gICAgICAgICAgICByZXF1ZXN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3IpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBzdWNjZXNzID0gKCkgPVx1MDAzZSB7XG4gICAgICAgICAgICByZXNvbHZlKHdyYXAocmVxdWVzdC5yZXN1bHQpKTtcbiAgICAgICAgICAgIHVubGlzdGVuKCk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGVycm9yID0gKCkgPVx1MDAzZSB7XG4gICAgICAgICAgICByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICAgICAgICB1bmxpc3RlbigpO1xuICAgICAgICB9O1xuICAgICAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBzdWNjZXNzKTtcbiAgICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGVycm9yKTtcbiAgICB9KTtcbiAgICAvLyBUaGlzIG1hcHBpbmcgZXhpc3RzIGluIHJldmVyc2VUcmFuc2Zvcm1DYWNoZSBidXQgZG9lc24ndCBkb2Vzbid0IGV4aXN0IGluIHRyYW5zZm9ybUNhY2hlLiBUaGlzXG4gICAgLy8gaXMgYmVjYXVzZSB3ZSBjcmVhdGUgbWFueSBwcm9taXNlcyBmcm9tIGEgc2luZ2xlIElEQlJlcXVlc3QuXG4gICAgcmV2ZXJzZVRyYW5zZm9ybUNhY2hlLnNldChwcm9taXNlLCByZXF1ZXN0KTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cbmZ1bmN0aW9uIGNhY2hlRG9uZVByb21pc2VGb3JUcmFuc2FjdGlvbih0eCkge1xuICAgIC8vIEVhcmx5IGJhaWwgaWYgd2UndmUgYWxyZWFkeSBjcmVhdGVkIGEgZG9uZSBwcm9taXNlIGZvciB0aGlzIHRyYW5zYWN0aW9uLlxuICAgIGlmICh0cmFuc2FjdGlvbkRvbmVNYXAuaGFzKHR4KSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGRvbmUgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9XHUwMDNlIHtcbiAgICAgICAgY29uc3QgdW5saXN0ZW4gPSAoKSA9XHUwMDNlIHtcbiAgICAgICAgICAgIHR4LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgY29tcGxldGUpO1xuICAgICAgICAgICAgdHgucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3InLCBlcnJvcik7XG4gICAgICAgICAgICB0eC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGVycm9yKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY29tcGxldGUgPSAoKSA9XHUwMDNlIHtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIHVubGlzdGVuKCk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGVycm9yID0gKCkgPVx1MDAzZSB7XG4gICAgICAgICAgICByZWplY3QodHguZXJyb3IgfHwgbmV3IERPTUV4Y2VwdGlvbignQWJvcnRFcnJvcicsICdBYm9ydEVycm9yJykpO1xuICAgICAgICAgICAgdW5saXN0ZW4oKTtcbiAgICAgICAgfTtcbiAgICAgICAgdHguYWRkRXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCBjb21wbGV0ZSk7XG4gICAgICAgIHR4LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3IpO1xuICAgICAgICB0eC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGVycm9yKTtcbiAgICB9KTtcbiAgICAvLyBDYWNoZSBpdCBmb3IgbGF0ZXIgcmV0cmlldmFsLlxuICAgIHRyYW5zYWN0aW9uRG9uZU1hcC5zZXQodHgsIGRvbmUpO1xufVxubGV0IGlkYlByb3h5VHJhcHMgPSB7XG4gICAgZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIElEQlRyYW5zYWN0aW9uKSB7XG4gICAgICAgICAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIGZvciB0cmFuc2FjdGlvbi5kb25lLlxuICAgICAgICAgICAgaWYgKHByb3AgPT09ICdkb25lJylcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb25Eb25lTWFwLmdldCh0YXJnZXQpO1xuICAgICAgICAgICAgLy8gTWFrZSB0eC5zdG9yZSByZXR1cm4gdGhlIG9ubHkgc3RvcmUgaW4gdGhlIHRyYW5zYWN0aW9uLCBvciB1bmRlZmluZWQgaWYgdGhlcmUgYXJlIG1hbnkuXG4gICAgICAgICAgICBpZiAocHJvcCA9PT0gJ3N0b3JlJykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWNlaXZlci5vYmplY3RTdG9yZU5hbWVzWzFdXG4gICAgICAgICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIDogcmVjZWl2ZXIub2JqZWN0U3RvcmUocmVjZWl2ZXIub2JqZWN0U3RvcmVOYW1lc1swXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gRWxzZSB0cmFuc2Zvcm0gd2hhdGV2ZXIgd2UgZ2V0IGJhY2suXG4gICAgICAgIHJldHVybiB3cmFwKHRhcmdldFtwcm9wXSk7XG4gICAgfSxcbiAgICBzZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSkge1xuICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBoYXModGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBJREJUcmFuc2FjdGlvbiBcdTAwMjZcdTAwMjZcbiAgICAgICAgICAgIChwcm9wID09PSAnZG9uZScgfHwgcHJvcCA9PT0gJ3N0b3JlJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9wIGluIHRhcmdldDtcbiAgICB9LFxufTtcbmZ1bmN0aW9uIHJlcGxhY2VUcmFwcyhjYWxsYmFjaykge1xuICAgIGlkYlByb3h5VHJhcHMgPSBjYWxsYmFjayhpZGJQcm94eVRyYXBzKTtcbn1cbmZ1bmN0aW9uIHdyYXBGdW5jdGlvbihmdW5jKSB7XG4gICAgLy8gRHVlIHRvIGV4cGVjdGVkIG9iamVjdCBlcXVhbGl0eSAod2hpY2ggaXMgZW5mb3JjZWQgYnkgdGhlIGNhY2hpbmcgaW4gYHdyYXBgKSwgd2VcbiAgICAvLyBvbmx5IGNyZWF0ZSBvbmUgbmV3IGZ1bmMgcGVyIGZ1bmMuXG4gICAgLy8gQ3Vyc29yIG1ldGhvZHMgYXJlIHNwZWNpYWwsIGFzIHRoZSBiZWhhdmlvdXIgaXMgYSBsaXR0bGUgbW9yZSBkaWZmZXJlbnQgdG8gc3RhbmRhcmQgSURCLiBJblxuICAgIC8vIElEQiwgeW91IGFkdmFuY2UgdGhlIGN1cnNvciBhbmQgd2FpdCBmb3IgYSBuZXcgJ3N1Y2Nlc3MnIG9uIHRoZSBJREJSZXF1ZXN0IHRoYXQgZ2F2ZSB5b3UgdGhlXG4gICAgLy8gY3Vyc29yLiBJdCdzIGtpbmRhIGxpa2UgYSBwcm9taXNlIHRoYXQgY2FuIHJlc29sdmUgd2l0aCBtYW55IHZhbHVlcy4gVGhhdCBkb2Vzbid0IG1ha2Ugc2Vuc2VcbiAgICAvLyB3aXRoIHJlYWwgcHJvbWlzZXMsIHNvIGVhY2ggYWR2YW5jZSBtZXRob2RzIHJldHVybnMgYSBuZXcgcHJvbWlzZSBmb3IgdGhlIGN1cnNvciBvYmplY3QsIG9yXG4gICAgLy8gdW5kZWZpbmVkIGlmIHRoZSBlbmQgb2YgdGhlIGN1cnNvciBoYXMgYmVlbiByZWFjaGVkLlxuICAgIGlmIChnZXRDdXJzb3JBZHZhbmNlTWV0aG9kcygpLmluY2x1ZGVzKGZ1bmMpKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgLy8gQ2FsbGluZyB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gd2l0aCB0aGUgcHJveHkgYXMgJ3RoaXMnIGNhdXNlcyBJTExFR0FMIElOVk9DQVRJT04sIHNvIHdlIHVzZVxuICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIG9iamVjdC5cbiAgICAgICAgICAgIGZ1bmMuYXBwbHkodW53cmFwKHRoaXMpLCBhcmdzKTtcbiAgICAgICAgICAgIHJldHVybiB3cmFwKHRoaXMucmVxdWVzdCk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAvLyBDYWxsaW5nIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiB3aXRoIHRoZSBwcm94eSBhcyAndGhpcycgY2F1c2VzIElMTEVHQUwgSU5WT0NBVElPTiwgc28gd2UgdXNlXG4gICAgICAgIC8vIHRoZSBvcmlnaW5hbCBvYmplY3QuXG4gICAgICAgIHJldHVybiB3cmFwKGZ1bmMuYXBwbHkodW53cmFwKHRoaXMpLCBhcmdzKSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHRyYW5zZm9ybUNhY2hhYmxlVmFsdWUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKVxuICAgICAgICByZXR1cm4gd3JhcEZ1bmN0aW9uKHZhbHVlKTtcbiAgICAvLyBUaGlzIGRvZXNuJ3QgcmV0dXJuLCBpdCBqdXN0IGNyZWF0ZXMgYSAnZG9uZScgcHJvbWlzZSBmb3IgdGhlIHRyYW5zYWN0aW9uLFxuICAgIC8vIHdoaWNoIGlzIGxhdGVyIHJldHVybmVkIGZvciB0cmFuc2FjdGlvbi5kb25lIChzZWUgaWRiT2JqZWN0SGFuZGxlcikuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgSURCVHJhbnNhY3Rpb24pXG4gICAgICAgIGNhY2hlRG9uZVByb21pc2VGb3JUcmFuc2FjdGlvbih2YWx1ZSk7XG4gICAgaWYgKGluc3RhbmNlT2ZBbnkodmFsdWUsIGdldElkYlByb3h5YWJsZVR5cGVzKCkpKVxuICAgICAgICByZXR1cm4gbmV3IFByb3h5KHZhbHVlLCBpZGJQcm94eVRyYXBzKTtcbiAgICAvLyBSZXR1cm4gdGhlIHNhbWUgdmFsdWUgYmFjayBpZiB3ZSdyZSBub3QgZ29pbmcgdG8gdHJhbnNmb3JtIGl0LlxuICAgIHJldHVybiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIHdyYXAodmFsdWUpIHtcbiAgICAvLyBXZSBzb21ldGltZXMgZ2VuZXJhdGUgbXVsdGlwbGUgcHJvbWlzZXMgZnJvbSBhIHNpbmdsZSBJREJSZXF1ZXN0IChlZyB3aGVuIGN1cnNvcmluZyksIGJlY2F1c2VcbiAgICAvLyBJREIgaXMgd2VpcmQgYW5kIGEgc2luZ2xlIElEQlJlcXVlc3QgY2FuIHlpZWxkIG1hbnkgcmVzcG9uc2VzLCBzbyB0aGVzZSBjYW4ndCBiZSBjYWNoZWQuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgSURCUmVxdWVzdClcbiAgICAgICAgcmV0dXJuIHByb21pc2lmeVJlcXVlc3QodmFsdWUpO1xuICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgdHJhbnNmb3JtZWQgdGhpcyB2YWx1ZSBiZWZvcmUsIHJldXNlIHRoZSB0cmFuc2Zvcm1lZCB2YWx1ZS5cbiAgICAvLyBUaGlzIGlzIGZhc3RlciwgYnV0IGl0IGFsc28gcHJvdmlkZXMgb2JqZWN0IGVxdWFsaXR5LlxuICAgIGlmICh0cmFuc2Zvcm1DYWNoZS5oYXModmFsdWUpKVxuICAgICAgICByZXR1cm4gdHJhbnNmb3JtQ2FjaGUuZ2V0KHZhbHVlKTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRyYW5zZm9ybUNhY2hhYmxlVmFsdWUodmFsdWUpO1xuICAgIC8vIE5vdCBhbGwgdHlwZXMgYXJlIHRyYW5zZm9ybWVkLlxuICAgIC8vIFRoZXNlIG1heSBiZSBwcmltaXRpdmUgdHlwZXMsIHNvIHRoZXkgY2FuJ3QgYmUgV2Vha01hcCBrZXlzLlxuICAgIGlmIChuZXdWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgdHJhbnNmb3JtQ2FjaGUuc2V0KHZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgICAgIHJldmVyc2VUcmFuc2Zvcm1DYWNoZS5zZXQobmV3VmFsdWUsIHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld1ZhbHVlO1xufVxuY29uc3QgdW53cmFwID0gKHZhbHVlKSA9XHUwMDNlIHJldmVyc2VUcmFuc2Zvcm1DYWNoZS5nZXQodmFsdWUpO1xuXG4vKipcbiAqIE9wZW4gYSBkYXRhYmFzZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBkYXRhYmFzZS5cbiAqIEBwYXJhbSB2ZXJzaW9uIFNjaGVtYSB2ZXJzaW9uLlxuICogQHBhcmFtIGNhbGxiYWNrcyBBZGRpdGlvbmFsIGNhbGxiYWNrcy5cbiAqL1xuZnVuY3Rpb24gb3BlbkRCKG5hbWUsIHZlcnNpb24sIHsgYmxvY2tlZCwgdXBncmFkZSwgYmxvY2tpbmcsIHRlcm1pbmF0ZWQgfSA9IHt9KSB7XG4gICAgY29uc3QgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKG5hbWUsIHZlcnNpb24pO1xuICAgIGNvbnN0IG9wZW5Qcm9taXNlID0gd3JhcChyZXF1ZXN0KTtcbiAgICBpZiAodXBncmFkZSkge1xuICAgICAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3VwZ3JhZGVuZWVkZWQnLCAoZXZlbnQpID1cdTAwM2Uge1xuICAgICAgICAgICAgdXBncmFkZSh3cmFwKHJlcXVlc3QucmVzdWx0KSwgZXZlbnQub2xkVmVyc2lvbiwgZXZlbnQubmV3VmVyc2lvbiwgd3JhcChyZXF1ZXN0LnRyYW5zYWN0aW9uKSwgZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGJsb2NrZWQpIHtcbiAgICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdibG9ja2VkJywgKGV2ZW50KSA9XHUwMDNlIGJsb2NrZWQoXG4gICAgICAgIC8vIENhc3RpbmcgZHVlIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC1ET00tbGliLWdlbmVyYXRvci9wdWxsLzE0MDVcbiAgICAgICAgZXZlbnQub2xkVmVyc2lvbiwgZXZlbnQubmV3VmVyc2lvbiwgZXZlbnQpKTtcbiAgICB9XG4gICAgb3BlblByb21pc2VcbiAgICAgICAgLnRoZW4oKGRiKSA9XHUwMDNlIHtcbiAgICAgICAgaWYgKHRlcm1pbmF0ZWQpXG4gICAgICAgICAgICBkYi5hZGRFdmVudExpc3RlbmVyKCdjbG9zZScsICgpID1cdTAwM2UgdGVybWluYXRlZCgpKTtcbiAgICAgICAgaWYgKGJsb2NraW5nKSB7XG4gICAgICAgICAgICBkYi5hZGRFdmVudExpc3RlbmVyKCd2ZXJzaW9uY2hhbmdlJywgKGV2ZW50KSA9XHUwMDNlIGJsb2NraW5nKGV2ZW50Lm9sZFZlcnNpb24sIGV2ZW50Lm5ld1ZlcnNpb24sIGV2ZW50KSk7XG4gICAgICAgIH1cbiAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPVx1MDAzZSB7IH0pO1xuICAgIHJldHVybiBvcGVuUHJvbWlzZTtcbn1cbi8qKlxuICogRGVsZXRlIGEgZGF0YWJhc2UuXG4gKlxuICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgZGF0YWJhc2UuXG4gKi9cbmZ1bmN0aW9uIGRlbGV0ZURCKG5hbWUsIHsgYmxvY2tlZCB9ID0ge30pIHtcbiAgICBjb25zdCByZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKG5hbWUpO1xuICAgIGlmIChibG9ja2VkKSB7XG4gICAgICAgIHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcignYmxvY2tlZCcsIChldmVudCkgPVx1MDAzZSBibG9ja2VkKFxuICAgICAgICAvLyBDYXN0aW5nIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQtRE9NLWxpYi1nZW5lcmF0b3IvcHVsbC8xNDA1XG4gICAgICAgIGV2ZW50Lm9sZFZlcnNpb24sIGV2ZW50KSk7XG4gICAgfVxuICAgIHJldHVybiB3cmFwKHJlcXVlc3QpLnRoZW4oKCkgPVx1MDAzZSB1bmRlZmluZWQpO1xufVxuXG5jb25zdCByZWFkTWV0aG9kcyA9IFsnZ2V0JywgJ2dldEtleScsICdnZXRBbGwnLCAnZ2V0QWxsS2V5cycsICdjb3VudCddO1xuY29uc3Qgd3JpdGVNZXRob2RzID0gWydwdXQnLCAnYWRkJywgJ2RlbGV0ZScsICdjbGVhciddO1xuY29uc3QgY2FjaGVkTWV0aG9kcyA9IG5ldyBNYXAoKTtcbmZ1bmN0aW9uIGdldE1ldGhvZCh0YXJnZXQsIHByb3ApIHtcbiAgICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBJREJEYXRhYmFzZSBcdTAwMjZcdTAwMjZcbiAgICAgICAgIShwcm9wIGluIHRhcmdldCkgXHUwMDI2XHUwMDI2XG4gICAgICAgIHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY2FjaGVkTWV0aG9kcy5nZXQocHJvcCkpXG4gICAgICAgIHJldHVybiBjYWNoZWRNZXRob2RzLmdldChwcm9wKTtcbiAgICBjb25zdCB0YXJnZXRGdW5jTmFtZSA9IHByb3AucmVwbGFjZSgvRnJvbUluZGV4JC8sICcnKTtcbiAgICBjb25zdCB1c2VJbmRleCA9IHByb3AgIT09IHRhcmdldEZ1bmNOYW1lO1xuICAgIGNvbnN0IGlzV3JpdGUgPSB3cml0ZU1ldGhvZHMuaW5jbHVkZXModGFyZ2V0RnVuY05hbWUpO1xuICAgIGlmIChcbiAgICAvLyBCYWlsIGlmIHRoZSB0YXJnZXQgZG9lc24ndCBleGlzdCBvbiB0aGUgdGFyZ2V0LiBFZywgZ2V0QWxsIGlzbid0IGluIEVkZ2UuXG4gICAgISh0YXJnZXRGdW5jTmFtZSBpbiAodXNlSW5kZXggPyBJREJJbmRleCA6IElEQk9iamVjdFN0b3JlKS5wcm90b3R5cGUpIHx8XG4gICAgICAgICEoaXNXcml0ZSB8fCByZWFkTWV0aG9kcy5pbmNsdWRlcyh0YXJnZXRGdW5jTmFtZSkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbWV0aG9kID0gYXN5bmMgZnVuY3Rpb24gKHN0b3JlTmFtZSwgLi4uYXJncykge1xuICAgICAgICAvLyBpc1dyaXRlID8gJ3JlYWR3cml0ZScgOiB1bmRlZmluZWQgZ3ppcHBzIGJldHRlciwgYnV0IGZhaWxzIGluIEVkZ2UgOihcbiAgICAgICAgY29uc3QgdHggPSB0aGlzLnRyYW5zYWN0aW9uKHN0b3JlTmFtZSwgaXNXcml0ZSA/ICdyZWFkd3JpdGUnIDogJ3JlYWRvbmx5Jyk7XG4gICAgICAgIGxldCB0YXJnZXQgPSB0eC5zdG9yZTtcbiAgICAgICAgaWYgKHVzZUluZGV4KVxuICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LmluZGV4KGFyZ3Muc2hpZnQoKSk7XG4gICAgICAgIC8vIE11c3QgcmVqZWN0IGlmIG9wIHJlamVjdHMuXG4gICAgICAgIC8vIElmIGl0J3MgYSB3cml0ZSBvcGVyYXRpb24sIG11c3QgcmVqZWN0IGlmIHR4LmRvbmUgcmVqZWN0cy5cbiAgICAgICAgLy8gTXVzdCByZWplY3Qgd2l0aCBvcCByZWplY3Rpb24gZmlyc3QuXG4gICAgICAgIC8vIE11c3QgcmVzb2x2ZSB3aXRoIG9wIHZhbHVlLlxuICAgICAgICAvLyBNdXN0IGhhbmRsZSBib3RoIHByb21pc2VzIChubyB1bmhhbmRsZWQgcmVqZWN0aW9ucylcbiAgICAgICAgcmV0dXJuIChhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICB0YXJnZXRbdGFyZ2V0RnVuY05hbWVdKC4uLmFyZ3MpLFxuICAgICAgICAgICAgaXNXcml0ZSBcdTAwMjZcdTAwMjYgdHguZG9uZSxcbiAgICAgICAgXSkpWzBdO1xuICAgIH07XG4gICAgY2FjaGVkTWV0aG9kcy5zZXQocHJvcCwgbWV0aG9kKTtcbiAgICByZXR1cm4gbWV0aG9kO1xufVxucmVwbGFjZVRyYXBzKChvbGRUcmFwcykgPVx1MDAzZSAoe1xuICAgIC4uLm9sZFRyYXBzLFxuICAgIGdldDogKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpID1cdTAwM2UgZ2V0TWV0aG9kKHRhcmdldCwgcHJvcCkgfHwgb2xkVHJhcHMuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpLFxuICAgIGhhczogKHRhcmdldCwgcHJvcCkgPVx1MDAzZSAhIWdldE1ldGhvZCh0YXJnZXQsIHByb3ApIHx8IG9sZFRyYXBzLmhhcyh0YXJnZXQsIHByb3ApLFxufSkpO1xuXG5jb25zdCBhZHZhbmNlTWV0aG9kUHJvcHMgPSBbJ2NvbnRpbnVlJywgJ2NvbnRpbnVlUHJpbWFyeUtleScsICdhZHZhbmNlJ107XG5jb25zdCBtZXRob2RNYXAgPSB7fTtcbmNvbnN0IGFkdmFuY2VSZXN1bHRzID0gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IGl0dHJQcm94aWVkQ3Vyc29yVG9PcmlnaW5hbFByb3h5ID0gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IGN1cnNvckl0ZXJhdG9yVHJhcHMgPSB7XG4gICAgZ2V0KHRhcmdldCwgcHJvcCkge1xuICAgICAgICBpZiAoIWFkdmFuY2VNZXRob2RQcm9wcy5pbmNsdWRlcyhwcm9wKSlcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXRbcHJvcF07XG4gICAgICAgIGxldCBjYWNoZWRGdW5jID0gbWV0aG9kTWFwW3Byb3BdO1xuICAgICAgICBpZiAoIWNhY2hlZEZ1bmMpIHtcbiAgICAgICAgICAgIGNhY2hlZEZ1bmMgPSBtZXRob2RNYXBbcHJvcF0gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgICAgIGFkdmFuY2VSZXN1bHRzLnNldCh0aGlzLCBpdHRyUHJveGllZEN1cnNvclRvT3JpZ2luYWxQcm94eS5nZXQodGhpcylbcHJvcF0oLi4uYXJncykpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FjaGVkRnVuYztcbiAgICB9LFxufTtcbmFzeW5jIGZ1bmN0aW9uKiBpdGVyYXRlKC4uLmFyZ3MpIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tdGhpcy1hc3NpZ25tZW50XG4gICAgbGV0IGN1cnNvciA9IHRoaXM7XG4gICAgaWYgKCEoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yKSkge1xuICAgICAgICBjdXJzb3IgPSBhd2FpdCBjdXJzb3Iub3BlbkN1cnNvciguLi5hcmdzKTtcbiAgICB9XG4gICAgaWYgKCFjdXJzb3IpXG4gICAgICAgIHJldHVybjtcbiAgICBjdXJzb3IgPSBjdXJzb3I7XG4gICAgY29uc3QgcHJveGllZEN1cnNvciA9IG5ldyBQcm94eShjdXJzb3IsIGN1cnNvckl0ZXJhdG9yVHJhcHMpO1xuICAgIGl0dHJQcm94aWVkQ3Vyc29yVG9PcmlnaW5hbFByb3h5LnNldChwcm94aWVkQ3Vyc29yLCBjdXJzb3IpO1xuICAgIC8vIE1hcCB0aGlzIGRvdWJsZS1wcm94eSBiYWNrIHRvIHRoZSBvcmlnaW5hbCwgc28gb3RoZXIgY3Vyc29yIG1ldGhvZHMgd29yay5cbiAgICByZXZlcnNlVHJhbnNmb3JtQ2FjaGUuc2V0KHByb3hpZWRDdXJzb3IsIHVud3JhcChjdXJzb3IpKTtcbiAgICB3aGlsZSAoY3Vyc29yKSB7XG4gICAgICAgIHlpZWxkIHByb3hpZWRDdXJzb3I7XG4gICAgICAgIC8vIElmIG9uZSBvZiB0aGUgYWR2YW5jaW5nIG1ldGhvZHMgd2FzIG5vdCBjYWxsZWQsIGNhbGwgY29udGludWUoKS5cbiAgICAgICAgY3Vyc29yID0gYXdhaXQgKGFkdmFuY2VSZXN1bHRzLmdldChwcm94aWVkQ3Vyc29yKSB8fCBjdXJzb3IuY29udGludWUoKSk7XG4gICAgICAgIGFkdmFuY2VSZXN1bHRzLmRlbGV0ZShwcm94aWVkQ3Vyc29yKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpc0l0ZXJhdG9yUHJvcCh0YXJnZXQsIHByb3ApIHtcbiAgICByZXR1cm4gKChwcm9wID09PSBTeW1ib2wuYXN5bmNJdGVyYXRvciBcdTAwMjZcdTAwMjZcbiAgICAgICAgaW5zdGFuY2VPZkFueSh0YXJnZXQsIFtJREJJbmRleCwgSURCT2JqZWN0U3RvcmUsIElEQkN1cnNvcl0pKSB8fFxuICAgICAgICAocHJvcCA9PT0gJ2l0ZXJhdGUnIFx1MDAyNlx1MDAyNiBpbnN0YW5jZU9mQW55KHRhcmdldCwgW0lEQkluZGV4LCBJREJPYmplY3RTdG9yZV0pKSk7XG59XG5yZXBsYWNlVHJhcHMoKG9sZFRyYXBzKSA9XHUwMDNlICh7XG4gICAgLi4ub2xkVHJhcHMsXG4gICAgZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgaWYgKGlzSXRlcmF0b3JQcm9wKHRhcmdldCwgcHJvcCkpXG4gICAgICAgICAgICByZXR1cm4gaXRlcmF0ZTtcbiAgICAgICAgcmV0dXJuIG9sZFRyYXBzLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICB9LFxuICAgIGhhcyh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIGlzSXRlcmF0b3JQcm9wKHRhcmdldCwgcHJvcCkgfHwgb2xkVHJhcHMuaGFzKHRhcmdldCwgcHJvcCk7XG4gICAgfSxcbn0pKTtcblxuZXhwb3J0IHsgZGVsZXRlREIsIG9wZW5EQiwgdW53cmFwLCB3cmFwIH07XG4iLCAiaW1wb3J0IHsgREJTY2hlbWEsIElEQlBEYXRhYmFzZSwgb3BlbkRCIH0gZnJvbSBcIi4vZGVwcy9pZGIudHNcIjtcbmltcG9ydCB7IEludmFsaWRQcm9qZWN0U3RhdHVzLCBQcm9qZWN0U3RhdHVzIH0gZnJvbSBcIi4vc3RhdHVzLnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVEZWJ1ZyB9IGZyb20gXCIuL2RlYnVnLnRzXCI7XG5pbXBvcnQgeyBDb21wcmVzc2VkTGluayB9IGZyb20gXCIuL2xpbmsudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlRGVidWcoXCJzY3JhcGJveC1zdG9yYWdlOmRiLnRzXCIpO1xuXG4vKiog44Oq44Oz44Kv44OH44O844K/44Gq44Gp44KS566h55CG44GZ44KLRGF0YWJhc2UgKi9cbmxldCBkYjogSURCUERhdGFiYXNlPExpbmtEQj47XG5cbi8qKiBEQuOCkuWPluW+l+OBmeOCi+OAguOBvuOBoOmWi+OBhOOBpuOBhOOBquOBkeOCjOOBsOS4gOW6puOBoOOBkemWi+OBjyAqL1xuZXhwb3J0IGNvbnN0IG9wZW4gPSBhc3luYyAoKTogUHJvbWlzZTxJREJQRGF0YWJhc2U8TGlua0RCPj4gPT4ge1xuICBkYiA/Pz0gYXdhaXQgb3BlbkRCPExpbmtEQj4oXCJzY3JhcGJveC1zdG9yYWdlXCIsIDEsIHtcbiAgICB1cGdyYWRlKGRiKSB7XG4gICAgICBsb2dnZXIudGltZShcInVwZGF0ZSBEQlwiKTtcblxuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIGRiLm9iamVjdFN0b3JlTmFtZXMpIHtcbiAgICAgICAgZGIuZGVsZXRlT2JqZWN0U3RvcmUobmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKFwibGlua3NcIiwgeyBrZXlQYXRoOiBcInByb2plY3RcIiB9KTtcbiAgICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKFwic3RhdHVzXCIsIHsga2V5UGF0aDogXCJwcm9qZWN0XCIgfSk7XG5cbiAgICAgIGxvZ2dlci50aW1lRW5kKFwidXBkYXRlIERCXCIpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiBkYjtcbn07XG5cbi8qKiBEQuOBruijnOWujOOCveODvOOCueOCkuabtOaWsOOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IHdyaXRlID0gYXN5bmMgKGRhdGE6IFNvdXJjZSkgPT4gKGF3YWl0IG9wZW4oKSkucHV0KFwibGlua3NcIiwgZGF0YSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlIHtcbiAgLyoqIHByb2plY3QgbmFtZSAoa2V5KSAqL1xuICBwcm9qZWN0OiBzdHJpbmc7XG5cbiAgLyoqIGxpbmsgZGF0YSAqL1xuICBsaW5rczogQ29tcHJlc3NlZExpbmtbXTtcbn1cblxuLyoqIOODquODs+OCr+ODh+ODvOOCv0RC44Guc2NoZW1hICovXG5pbnRlcmZhY2UgTGlua0RCIGV4dGVuZHMgREJTY2hlbWEge1xuICAvKiogbGluayBkYXRh44KS5qC857SN44GZ44KLc3RvcmUgKi9cbiAgbGlua3M6IHtcbiAgICB2YWx1ZTogU291cmNlO1xuICAgIGtleTogc3RyaW5nO1xuICB9O1xuXG4gIC8qKiBwcm9qZWN044Gu5pu05paw54q25rOB44KS5qC857SN44GZ44KLc3RvcmUgKi9cbiAgc3RhdHVzOiB7XG4gICAgdmFsdWU6IFNvdXJjZVN0YXR1cztcbiAgICBrZXk6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU291cmNlU3RhdHVzID0gUHJvamVjdFN0YXR1cyB8IEludmFsaWRQcm9qZWN0U3RhdHVzO1xuIiwgImV4cG9ydCB0eXBlIExpc3RlbmVyID0gKG5vdGlmeTogTGlua0V2ZW50KSA9PiB2b2lkO1xuLyoqIHByb2plY3TjgpJrZXksIGxpc3RlbmVy44KSdmFsdWXjgajjgZnjgottYXAgKi9cbmNvbnN0IGxpc3RlbmVycyA9IG5ldyBNYXA8c3RyaW5nLCBTZXQ8TGlzdGVuZXI+PigpO1xuXG4vKiogYnJvYWRjYXN0IGNoYW5uZWzjgafmtYHjgZnjg4fjg7zjgr8gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlua0V2ZW50IHtcbiAgdHlwZTogXCJ1cGRhdGVcIjtcbiAgLyoqIOabtOaWsOOBleOCjOOBn3Byb2plY3QgKi9cbiAgcHJvamVjdHM6IHN0cmluZ1tdO1xufVxuXG4vKiog44Oq44Oz44Kv44OH44O844K/44Gu5pu05paw44KS6YCa55+l44GZ44KLICovXG5leHBvcnQgY29uc3QgZW1pdENoYW5nZSA9IChwcm9qZWN0czogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgZXZlbnQ6IExpbmtFdmVudCA9IHsgdHlwZTogXCJ1cGRhdGVcIiwgcHJvamVjdHMgfTtcbiAgZW1pdENoYW5nZV8oZXZlbnQpO1xuICBjb25zdCBiYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKG5vdGlmeUNoYW5uZWxOYW1lKTtcbiAgYmMucG9zdE1lc3NhZ2UoZXZlbnQpO1xuICBiYy5jbG9zZSgpO1xufTtcblxuY29uc3QgZW1pdENoYW5nZV8gPSAoZXZlbnQ6IExpbmtFdmVudCkgPT4ge1xuICBmb3IgKFxuICAgIGNvbnN0IGxpc3RlbmVyIG9mIG5ldyBTZXQoXG4gICAgICBldmVudC5wcm9qZWN0cy5mbGF0TWFwKChwcm9qZWN0KSA9PiBbLi4uKGxpc3RlbmVycy5nZXQocHJvamVjdCkgPz8gW10pXSksXG4gICAgKVxuICApIHtcbiAgICBsaXN0ZW5lcj8uKGV2ZW50KTtcbiAgfVxufTtcblxuLyoqIOabtOaWsOmAmuefpeeUqGJyb2FkY2FzdCBjaGFubmVs44Gu5ZCN5YmNICovXG5jb25zdCBub3RpZnlDaGFubmVsTmFtZSA9IFwic2NyYXBib3gtc3RvcmFnZS1ub3RpZnlcIjtcbi8vIOS7luOBrnNlc3Npb25z44Gn44Gu5pu05paw44KS6LO86Kqt44GZ44KLXG5jb25zdCBiYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKG5vdGlmeUNoYW5uZWxOYW1lKTtcbmJjLmFkZEV2ZW50TGlzdGVuZXIoXG4gIFwibWVzc2FnZVwiLFxuICAoZTogTWVzc2FnZUV2ZW50PExpbmtFdmVudD4pID0+IGVtaXRDaGFuZ2VfKGUuZGF0YSksXG4pO1xuXG4vKiog44Oq44Oz44Kv44OH44O844K/44Gu5pu05paw44KS6LO86Kqt44GZ44KLXG4gKlxuICogQHBhcmFtIHByb2plY3RzIOOBk+OBk+OBq+aMh+WumuOBleOCjOOBn3Byb2plY3Tjga7mm7TmlrDjga7jgb/jgpLlj5fjgZHlj5bjgotcbiAqIEBwYXJhbSBsaXN0ZW5lciDmm7TmlrDjgpLlj5fjgZHlj5bjgotsaXN0ZW5lclxuICogQHJldHVybSBsaXN0ZW5lcuino+mZpOOBquOBqeOCkuOBmeOCi+W+jOWni+acq+WHveaVsFxuICovXG5leHBvcnQgY29uc3Qgc3Vic2NyaWJlID0gKFxuICBwcm9qZWN0czogcmVhZG9ubHkgc3RyaW5nW10sXG4gIGxpc3RlbmVyOiBMaXN0ZW5lcixcbik6ICgpID0+IHZvaWQgPT4ge1xuICBmb3IgKGNvbnN0IHByb2plY3Qgb2YgcHJvamVjdHMpIHtcbiAgICBjb25zdCBsaXN0ZW5lcnMyID0gbGlzdGVuZXJzLmdldChwcm9qZWN0KSA/PyBuZXcgU2V0KCk7XG4gICAgbGlzdGVuZXJzMi5hZGQobGlzdGVuZXIpO1xuICAgIGxpc3RlbmVycy5zZXQocHJvamVjdCwgbGlzdGVuZXJzMik7XG4gIH1cbiAgcmV0dXJuICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IHByb2plY3Qgb2YgcHJvamVjdHMpIHtcbiAgICAgIGxpc3RlbmVycy5nZXQocHJvamVjdCk/LmRlbGV0ZT8uKGxpc3RlbmVyKTtcbiAgICB9XG4gIH07XG59O1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cblxuaW1wb3J0IHsgY3JlYXRlRGVidWcgfSBmcm9tIFwiLi9kZWJ1Zy50c1wiO1xuaW1wb3J0IHsgZG93bmxvYWRMaW5rcyB9IGZyb20gXCIuL3JlbW90ZS50c1wiO1xuaW1wb3J0IHsgZmV0Y2hQcm9qZWN0U3RhdHVzLCBQcm9qZWN0U3RhdHVzIH0gZnJvbSBcIi4vc3RhdHVzLnRzXCI7XG5pbXBvcnQgeyBvcGVuLCBTb3VyY2UsIFNvdXJjZVN0YXR1cywgd3JpdGUgfSBmcm9tIFwiLi9kYi50c1wiO1xuaW1wb3J0IHsgZW1pdENoYW5nZSB9IGZyb20gXCIuL3N1YnNjcmliZS50c1wiO1xuZXhwb3J0IHsgc3Vic2NyaWJlIH0gZnJvbSBcIi4vc3Vic2NyaWJlLnRzXCI7XG5leHBvcnQgdHlwZSB7IExpbmtFdmVudCwgTGlzdGVuZXIgfSBmcm9tIFwiLi9zdWJzY3JpYmUudHNcIjtcbmV4cG9ydCB7IHNldERlYnVnTW9kZSB9IGZyb20gXCIuL2RlYnVnLnRzXCI7XG5leHBvcnQgdHlwZSB7IFNvdXJjZSB9O1xuZXhwb3J0ICogZnJvbSBcIi4vbGluay50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVEZWJ1ZyhcInNjcmFwYm94LXN0b3JhZ2U6bW9kLnRzXCIpO1xuXG4vKiog5omL5YuV44Gn5pu05paw44KS56K66KqN44GZ44KL44CC5pu05paw44GM44GC44KM44GwRELjgavlj43mmKDjgZnjgovjgIJcbiAqXG4gKiBAcGFyYW0gcHJvamVjdHMg5pu05paw44KS56K66KqN44GX44Gf44GE6KOc5a6M44K944O844K544GucHJvamVjdCBuYW1lc1xuICogQHBhcmFtIHVwZGF0ZUludGVydmFsIOacgOW+jOOBq+abtOaWsOOCkueiuuiqjeOBl+OBpuOBi+OCieOBqeOBruOBj+OCieOBhOe1jOmBjuOBl+OBn+ODh+ODvOOCv+OCkuabtOaWsOOBmeOBueOBjeOBiyAo5Y2Y5L2N44Gv56eSKVxuICogQHJldHVybiDmm7TmlrDjgYzjgYLjgaPjgZ9wcm9qZWN044Gu44Oq44Oz44Kv44OH44O844K/XG4gKi9cbmV4cG9ydCBjb25zdCBjaGVjayA9IGFzeW5jIChcbiAgcHJvamVjdHM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICB1cGRhdGVJbnRlcnZhbDogbnVtYmVyLFxuKTogUHJvbWlzZTxTb3VyY2VbXT4gPT4ge1xuICBjb25zdCBkYiA9IGF3YWl0IG9wZW4oKTtcblxuICBjb25zdCBwcm9qZWN0c01heWJlTmVlZGVkVXBncmFkZTogUHJvamVjdFN0YXR1c1tdID0gW107XG4gIGNvbnN0IHByb2plY3RTdGF0dXM6IFNvdXJjZVN0YXR1c1tdID0gW107XG4gIHRyeSB7XG4gICAgLy8g5pu05paw44GZ44KL5b+F6KaB44Gu44GC44KL44OH44O844K/44KS5o6i44GX44CB5pu05paw5Lit44OV44Op44Kw44KS56uL44Gm44KLXG4gICAge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwiY2hlY2sgdXBkYXRlcyBvZiBsaW5rcy4uLlwiKTtcblxuICAgICAgY29uc3QgdHggPSBkYi50cmFuc2FjdGlvbihcInN0YXR1c1wiLCBcInJlYWR3cml0ZVwiKTtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb2plY3RzLm1hcChhc3luYyAocHJvamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0eC5zdG9yZS5nZXQocHJvamVjdCk7XG5cbiAgICAgICAgaWYgKHN0YXR1cz8uaXNWYWxpZCA9PT0gZmFsc2UpIHJldHVybjtcblxuICAgICAgICBjb25zdCBjaGVja2VkID0gc3RhdHVzPy5jaGVja2VkID8/IDA7XG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMDtcbiAgICAgICAgLy8g5pu05paw44GV44KM44Gf44Gw44GL44KK44Gu44OH44O844K/44Gv6aOb44Gw44GZXG4gICAgICAgIGlmIChjaGVja2VkICsgdXBkYXRlSW50ZXJ2YWwgPiBub3cpIHJldHVybjtcbiAgICAgICAgLy8g5pu05paw5Lit44Gr44K/44OW44GM5by35Yi257WC5LqG44GX44Gf5Y+v6IO95oCn44KS6ICD5oWu44GX44Gm44CB5pu05paw5Lit44OV44Op44Kw44GM57WM44Gj44Gf5pmC5Yi744KI44KKMTDliIbntYzpgY7jgZfjgabjgYTjgZ/jgonjg4fjg7zjgr/mm7TmlrDlr77osaHjgavlkKvjgoHjgotcbiAgICAgICAgaWYgKHN0YXR1cz8udXBkYXRpbmcgJiYgY2hlY2tlZCArIDYwMCA+IG5vdykgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHRlbXBTdGF0dXM6IFByb2plY3RTdGF0dXMgPSB7XG4gICAgICAgICAgcHJvamVjdCxcbiAgICAgICAgICBpZDogc3RhdHVzPy5pZCxcbiAgICAgICAgICBpc1ZhbGlkOiB0cnVlLFxuICAgICAgICAgIGNoZWNrZWQsXG4gICAgICAgICAgdXBkYXRlZDogc3RhdHVzPy51cGRhdGVkID8/IDAsXG4gICAgICAgICAgdXBkYXRpbmc6IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgcHJvamVjdHNNYXliZU5lZWRlZFVwZ3JhZGUucHVzaCh0ZW1wU3RhdHVzKTtcbiAgICAgICAgdHguc3RvcmUucHV0KHRlbXBTdGF0dXMpO1xuICAgICAgfSkpO1xuICAgICAgYXdhaXQgdHguZG9uZTtcblxuICAgICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgICBgY2hlY2tlZC4gJHtwcm9qZWN0c01heWJlTmVlZGVkVXBncmFkZS5sZW5ndGh9IHByb2plY3RzIG1heWJlIG5lZWQgdXBncmFkZS5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyDmm7TmlrDjgZnjgotwcm9qZWN0c+OBjOOBquOBkeOCjOOBsOS9leOCguOBl+OBquOBhFxuICAgIGlmIChwcm9qZWN0c01heWJlTmVlZGVkVXBncmFkZS5sZW5ndGggPT09IDApIHJldHVybiBbXTtcblxuICAgIC8qKiDmm7TmlrDjgZXjgozjgZ9wcm9qZWN0cyAqL1xuICAgIGNvbnN0IHVwZGF0ZWRQcm9qZWN0czogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCByZXN1bHQ6IFNvdXJjZVtdID0gW107XG5cbiAgICAvLyDkuIDjgaTjgaXjgaTmm7TmlrDjgZnjgotcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHJlcyBvZiBmZXRjaFByb2plY3RTdGF0dXMocHJvamVjdHNNYXliZU5lZWRlZFVwZ3JhZGUpKSB7XG4gICAgICAvLyBwcm9qZWN0IGRhdGHjgpLlj5blvpfjgafjgY3jgarjgYTjgajjgY3jga/jgIHnhKHlirnjgapwcm9qZWN044Gr5YiG6aGe44GX44Gm44GK44GPXG4gICAgICBpZiAoIXJlcy5vaykge1xuICAgICAgICBwcm9qZWN0U3RhdHVzLnB1c2goeyBwcm9qZWN0OiByZXMudmFsdWUucHJvamVjdCwgaXNWYWxpZDogZmFsc2UgfSk7XG4gICAgICAgIHN3aXRjaCAocmVzLnZhbHVlLm5hbWUpIHtcbiAgICAgICAgICBjYXNlIFwiTm90Rm91bmRFcnJvclwiOlxuICAgICAgICAgICAgbG9nZ2VyLndhcm4oYFwiJHtyZXMudmFsdWUucHJvamVjdH1cIiBpcyBub3QgZm91bmQuYCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICBjYXNlIFwiTm90TWVtYmVyRXJyb3JcIjpcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKGBZb3UgYXJlIG5vdCBhIG1lbWJlciBvZiBcIiR7cmVzLnZhbHVlLnByb2plY3R9XCIuYCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICBjYXNlIFwiTm90TG9nZ2VkSW5FcnJvclwiOlxuICAgICAgICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgICAgICAgIGBZb3UgYXJlIG5vdCBhIG1lbWJlciBvZiBcIiR7cmVzLnZhbHVlLnByb2plY3R9XCIgb3IgWW91IGFyZSBub3QgbG9nZ2VkIGluIHlldC5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHByb2plY3Tjga7mnIDntYLmm7TmlrDml6XmmYLjgYvjgonjgIF1cGRhdGXjga7opoHkuI3opoHjgpLoqr/jgbnjgotcbiAgICAgIGlmIChyZXMudmFsdWUudXBkYXRlZCA8IHJlcy52YWx1ZS5jaGVja2VkKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1Zyhgbm8gdXBkYXRlcyBpbiBcIiR7cmVzLnZhbHVlLm5hbWV9XCJgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlczIgPSBhd2FpdCBkb3dubG9hZExpbmtzKHJlcy52YWx1ZS5uYW1lKTtcbiAgICAgICAgaWYgKCFyZXMyLm9rKSB7XG4gICAgICAgICAgdGhyb3cgRXJyb3IoYCR7cmVzMi52YWx1ZS5uYW1lfSAke3JlczIudmFsdWUubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDjg6rjg7Pjgq/jg4fjg7zjgr/jgpLmm7TmlrDjgZnjgotcbiAgICAgICAgY29uc3QgZGF0YTogU291cmNlID0ge1xuICAgICAgICAgIHByb2plY3Q6IHJlcy52YWx1ZS5uYW1lLFxuICAgICAgICAgIGxpbmtzOiByZXMyLnZhbHVlLFxuICAgICAgICB9O1xuICAgICAgICByZXN1bHQucHVzaChkYXRhKTtcblxuICAgICAgICBsb2dnZXIudGltZShgd3JpdGUgZGF0YSBvZiBcIiR7cmVzLnZhbHVlLm5hbWV9XCJgKTtcbiAgICAgICAgYXdhaXQgd3JpdGUoZGF0YSk7XG4gICAgICAgIHVwZGF0ZWRQcm9qZWN0cy5wdXNoKHJlcy52YWx1ZS5uYW1lKTtcbiAgICAgICAgbG9nZ2VyLnRpbWVFbmQoYHdyaXRlIGRhdGEgb2YgXCIke3Jlcy52YWx1ZS5uYW1lfVwiYCk7XG4gICAgICB9XG5cbiAgICAgIHByb2plY3RTdGF0dXMucHVzaCh7XG4gICAgICAgIHByb2plY3Q6IHJlcy52YWx1ZS5uYW1lLFxuICAgICAgICBpc1ZhbGlkOiB0cnVlLFxuICAgICAgICBpZDogcmVzLnZhbHVlLmlkLFxuICAgICAgICBjaGVja2VkOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDAsXG4gICAgICAgIHVwZGF0ZWQ6IHJlcy52YWx1ZS51cGRhdGVkLFxuICAgICAgICB1cGRhdGluZzogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyDmm7TmlrDpgJrnn6XjgpLlh7rjgZlcbiAgICBpZiAodXBkYXRlZFByb2plY3RzLmxlbmd0aCA+IDApIGVtaXRDaGFuZ2UodXBkYXRlZFByb2plY3RzKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gZmluYWxseSB7XG4gICAgLy8g44Ko44Op44O844GM6LW344GN44Gf5aC05ZCI44KC5ZCr44KB44CB44OV44Op44Kw44KS44KC44Go44Gr5oi744GX44Gm44GK44GPXG4gICAgY29uc3QgdHggPSBkYi50cmFuc2FjdGlvbihcInN0YXR1c1wiLCBcInJlYWR3cml0ZVwiKTtcbiAgICBjb25zdCBzdG9yZSA9IHR4LnN0b3JlO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcHJvamVjdFN0YXR1cy5tYXAoKHN0YXR1cykgPT4gc3RvcmUucHV0KHN0YXR1cykpLFxuICAgICk7XG4gICAgYXdhaXQgdHguZG9uZTtcbiAgfVxufTtcblxuLyoqIOODquODs+OCr+ODh+ODvOOCv+OCkkRC44GL44KJ5Y+W5b6X44GZ44KL44CC44OH44O844K/44Gu5pu05paw44Gv6KGM44KP44Gq44GE44CCXG4gKlxuICogQHBhcmFtIHByb2plY3RzIOWPluW+l+OBl+OBn+OBhOijnOWujOOCveODvOOCueOBrnByb2plY3QgbmFtZeOBruODquOCueODiFxuICogQHJldHVybiDjg6rjg7Pjgq/jg4fjg7zjgr/jga7jg6rjgrnjg4ggcHJvamVjdHPjgajlkIzjgZjpoIbnlarjgafkuKbjgpPjgafjgYTjgotcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWQgPSBhc3luYyAoXG4gIHByb2plY3RzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IFByb21pc2U8U291cmNlW10+ID0+IHtcbiAgY29uc3QgbGlzdDogU291cmNlW10gPSBbXTtcblxuICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7XG4gIHtcbiAgICBjb25zdCB0eCA9IChhd2FpdCBvcGVuKCkpLnRyYW5zYWN0aW9uKFwibGlua3NcIiwgXCJyZWFkb25seVwiKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9qZWN0cy5tYXAoYXN5bmMgKHByb2plY3QpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGF3YWl0IHR4LnN0b3JlLmdldChwcm9qZWN0KTtcbiAgICAgIGxpc3QucHVzaChzb3VyY2UgPz8geyBwcm9qZWN0LCBsaW5rczogW10gfSk7XG4gICAgfSkpO1xuICAgIGF3YWl0IHR4LmRvbmU7XG4gIH1cbiAgY29uc3QgbXMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHN0YXJ0LmdldFRpbWUoKTtcbiAgbG9nZ2VyLmRlYnVnKGBSZWFkIGxpbmtzIG9mICR7cHJvamVjdHMubGVuZ3RofSBwcm9qZWN0cyBpbiAke21zfW1zYCk7XG5cbiAgcmV0dXJuIGxpc3Q7XG59O1xuIiwgImV4cG9ydCAqIGZyb20gXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvc2NyYXBib3gtc3RvcmFnZS8wLjEuMy9tb2QudHNcIjtcblxuaW1wb3J0IHsgZGVsZXRlREIgfSBmcm9tIFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3NjcmFwYm94LXN0b3JhZ2UvMC4xLjMvZGVwcy9pZGIudHNcIjtcbi8vIOaXp3Zlci7jgafkvb/jgaPjgabjgYTjgZ9EQuOCkuWJiumZpOOBmeOCi1xuZGVsZXRlREIoXCJ1c2Vyc2NyaXB0LWxpbmtzXCIpLmNhdGNoKChlKSA9PiBjb25zb2xlLmVycm9yKGUpKTtcbiIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgY2hlY2ssIGRlY29kZSwgbG9hZCwgU291cmNlLCBzdWJzY3JpYmUgfSBmcm9tIFwiLi9kZXBzL3N0b3JhZ2UudHNcIjtcbmltcG9ydCB7IGNyZWF0ZURlYnVnIH0gZnJvbSBcIi4vZGVwcy9kZWJ1Zy50c1wiO1xuaW1wb3J0IHsgQ2FuZGlkYXRlIH0gZnJvbSBcIi4vc291cmNlLnRzXCI7XG5pbXBvcnQgeyB0b1RpdGxlTGMgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZURlYnVnKFwic2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb246dXNlU291cmNlLnRzXCIpO1xuXG4vKiog6KOc5a6M44K944O844K544KS5o+Q5L6b44GZ44KLaG9vayAqL1xuZXhwb3J0IGNvbnN0IHVzZVNvdXJjZSA9IChcbiAgcHJvamVjdHM6IEl0ZXJhYmxlPHN0cmluZz4sXG4pOiBDYW5kaWRhdGVbXSA9PiB7XG4gIGNvbnN0IFtjYW5kaWRhdGVzLCBzZXRDYW5kaWRhdGVzXSA9IHVzZVN0YXRlPENhbmRpZGF0ZVtdPihbXSk7XG5cbiAgY29uc3QgdXBkYXRlID0gdXNlQ2FsbGJhY2soXG4gICAgKHNvdXJjZXM6IFNvdXJjZVtdKSA9PiB7XG4gICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8c3RyaW5nLCBPbWl0PENhbmRpZGF0ZSwgXCJ0aXRsZUxjXCI+PigpO1xuICAgICAgZm9yIChjb25zdCB7IHByb2plY3QsIGxpbmtzIH0gb2Ygc291cmNlcykge1xuICAgICAgICBmb3IgKGNvbnN0IGNvbXByZXNzZWRMaW5rIG9mIGxpbmtzKSB7XG4gICAgICAgICAgY29uc3QgeyB0aXRsZSwgdXBkYXRlZCwgaW1hZ2UgfSA9IGRlY29kZShjb21wcmVzc2VkTGluayk7XG4gICAgICAgICAgY29uc3QgdGl0bGVMYyA9IHRvVGl0bGVMYyh0aXRsZSk7XG4gICAgICAgICAgY29uc3QgY2FuZGlkYXRlID0gcmVzdWx0LmdldCh0aXRsZUxjKTtcbiAgICAgICAgICByZXN1bHQuc2V0KHRpdGxlTGMsIHtcbiAgICAgICAgICAgIHRpdGxlOiBjYW5kaWRhdGU/LnRpdGxlID8/IHRpdGxlLFxuICAgICAgICAgICAgdXBkYXRlZDogTWF0aC5tYXgoY2FuZGlkYXRlPy51cGRhdGVkID8/IDAsIHVwZGF0ZWQpLFxuICAgICAgICAgICAgbWV0YWRhdGE6IFsuLi4oY2FuZGlkYXRlPy5tZXRhZGF0YSA/PyBbXSksIHsgcHJvamVjdCwgaW1hZ2UgfV0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBbLi4ucmVzdWx0LmVudHJpZXMoKV0ubWFwKChbdGl0bGVMYywgZGF0YV0pID0+ICh7XG4gICAgICAgIHRpdGxlTGMsXG4gICAgICAgIC4uLmRhdGEsXG4gICAgICB9KSk7XG5cbiAgICAgIGNvbnN0IG1zID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLSBzdGFydC5nZXRUaW1lKCk7XG4gICAgICBsb2dnZXIuZGVidWcoYENvbXBpbGVkICR7Y2FuZGlkYXRlcy5sZW5ndGh9IHNvdXJjZSBpbiAke21zfW1zYCk7XG4gICAgICBsb2dnZXIuZGVidWcoXCJEZXRlY3QgY2hhbmdlcyFcIik7XG5cbiAgICAgIHNldENhbmRpZGF0ZXMoY2FuZGlkYXRlcyk7XG4gICAgfSxcbiAgICBbXSxcbiAgKTtcblxuICAvLyDliJ3mnJ/ljJblj4rjgbPmm7TmlrDoqK3lrppcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgdGVybWluYXRlID0gZmFsc2U7XG5cbiAgICBjb25zdCB1cGRhdGVfID0gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlcyA9IGF3YWl0IGxvYWQoWy4uLnByb2plY3RzXSk7XG4gICAgICBpZiAodGVybWluYXRlKSByZXR1cm47XG5cbiAgICAgIHVwZGF0ZShzb3VyY2VzKTtcbiAgICB9O1xuXG4gICAgLy8g5Yid5pyf5YyWXG4gICAgdXBkYXRlXygpO1xuXG4gICAgLy8g5pu05paw6YCa55+l44KS5Y+X44GR5Y+W44KLXG4gICAgY29uc3QgY2xlYW51cCA9IHN1YnNjcmliZShcbiAgICAgIFsuLi5wcm9qZWN0c10sXG4gICAgICAoeyBwcm9qZWN0cyB9KSA9PiB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgRGV0ZWN0ICR7cHJvamVjdHMubGVuZ3RofSBwcm9qZWN0cycgdXBkYXRlOmAsIHByb2plY3RzKTtcbiAgICAgICAgdXBkYXRlXygpO1xuICAgICAgfSxcbiAgICApO1xuXG4gICAgLy8g5a6a5pyf55qE44Gr5pu05paw44GZ44KLXG4gICAgY29uc3QgY2FsbGJhY2sgPSAoKSA9PiBjaGVjayhbLi4ucHJvamVjdHNdLCA2MDApO1xuICAgIGNhbGxiYWNrKCk7XG4gICAgY29uc3QgaW50ZXJ2YWxUaW1lciA9IHNldEludGVydmFsKGNhbGxiYWNrLCA2MDAgKiAxMDAwKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbFRpbWVyKTtcbiAgICAgIGNsZWFudXAoKTtcbiAgICB9O1xuICB9LCBbcHJvamVjdHNdKTtcblxuICByZXR1cm4gY2FuZGlkYXRlcztcbn07XG4iLCAiLyoqIEBqc3ggaCAqL1xuLyoqIEBqc3hGcmFnIEZyYWdtZW50ICovXG5pbXBvcnQgeyBGcmFnbWVudCwgaCwgdXNlTWVtbyB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgZGV0ZWN0VVJMIH0gZnJvbSBcIi4vZGV0ZWN0VVJMLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckNTU1Byb3BzIHtcbiAgLyoqIENTU+OCguOBl+OBj+OBr0NTU+OBuOOBrlVSTCAqL1xuICBzdHlsZTogc3RyaW5nIHwgVVJMO1xufVxuXG4vKiogVXNlckNTU+OCkuaMv+WFpeOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IFVzZXJDU1MgPSAocHJvcHM6IFVzZXJDU1NQcm9wcykgPT4ge1xuICBjb25zdCB1cmwgPSB1c2VNZW1vKCgpID0+IGRldGVjdFVSTChwcm9wcy5zdHlsZSwgaW1wb3J0Lm1ldGEudXJsKSwgW1xuICAgIHByb3BzLnN0eWxlLFxuICBdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7dXJsICE9PSBcIlwiICYmICh1cmwgaW5zdGFuY2VvZiBVUkxcbiAgICAgICAgPyA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj17dXJsLmhyZWZ9IC8+XG4gICAgICAgIDogPHN0eWxlPnt1cmx9PC9zdHlsZT4pfVxuICAgIDwvPlxuICApO1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG4vKiogQGpzeCBoICovXG5cbmltcG9ydCB7IGggfSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcblxuZXhwb3J0IGNvbnN0IENTUyA9ICgpID0+IChcbiAgPHN0eWxlPlxuICAgIHtgLmNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLXRvcDogMTRweDtcbiAgbWF4LWhlaWdodDogODB2aDtcbiAgei1pbmRleDogMzAxO1xuXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlbGVjdC1zdWdnZXN0LWJnLCAjMTExKTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLXNlbGVjdC1zdWdnZXN0LWZvbnQtZmFtaWx5LCBcIk9wZW4gU2Fuc1wiLCBIZWx2ZXRpY2EsIEFyaWFsLCBcIkhpcmFnaW5vIFNhbnNcIiwgc2Fucy1zZXJpZik7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6IHZhcigtLXNlbGVjdC1zdWdnZXN0LXRleHQtY29sb3IsICNlZWUpO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG4uY2FuZGlkYXRlcyB7XG4gIG1heC13aWR0aDogODB2dztcbn1cbi5jYW5kaWRhdGVzOm5vdChbZGF0YS1vcyo9XCJhbmRyb2lkXCJdKTpub3QoW2RhdGEtb3MqPVwiaW9zXCJdKSB7XG4gIGZvbnQtc2l6ZToxMXB4O1xuXG59XG4ucHJvamVjdHMge1xuICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoNCwgbWluLWNvbnRlbnQpO1xuICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xuICBkaXJlY3Rpb246IHJ0bDtcbn1cbi5wcm9qZWN0czppcyhbZGF0YS1vcyo9XCJhbmRyb2lkXCJdLCBbZGF0YS1vcyo9XCJpb3NcIl0pID4gKiB7XG4gIHBhZGRpbmc6IDZweDtcbn1cblxuLmNhbmRpZGF0ZXMgPiA6bm90KDpmaXJzdC1jaGlsZCkge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc2VsZWN0LXN1Z2dlc3QtYm9yZGVyLWNvbG9yLCAjZWVlKTtcbn1cbi5jYW5kaWRhdGVzID4gKntcbiAgbGluZS1oZWlnaHQ6IDEuMmVtO1xuICBwYWRkaW5nOiAwLjVlbSAxMHB4O1xufVxuXG4uY2FuZGlkYXRlIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuYTpub3QoLm1hcmspIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4uc2VsZWN0ZWQgYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlbGVjdC1zdWdnZXN0LXNlbGVjdGVkLWJnLCAjMjIyKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmVcbn1cbmltZyB7XG4gIGhlaWdodDogMS4zZW07XG4gIHdpZHRoOiAxLjNlbTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgb2JqZWN0LXBvc2l0aW9uOiAwJSAwJTtcbn1cbi5kaXNhYmxlZCB7XG4gIGZpbHRlcjogZ3JheXNjYWxlKDEuMCkgb3BhY2l0eSgwLjUpO1xufVxuLmNvdW50ZXIge1xuICBjb2xvcjogdmFyKC0tc2VsZWN0LXN1Z2dlc3QtaW5mb3JtYXRpb24tdGV4dC1jb2xvciwgI2FhYSk7XG4gIGZvbnQtc2l6ZTogODAlO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG4ucHJvZ3Jlc3Nbc3R5bGVdIHtcbiAgcGFkZGluZzogdW5zZXQ7XG4gIGJvcmRlcjogdW5zZXQ7XG4gIGhlaWdodDogMC41cHg7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xcztcbn1gfVxuICA8L3N0eWxlPlxuKTtcbiIsICJpbXBvcnQgeyBMaW5lLCBOb2RlIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpbmsge1xuICB3aG9sZTogc3RyaW5nO1xuICBzdGFydDogbnVtYmVyO1xufVxuXG4vKiog5oyH5a6a44GX44Gf6KGM44Gr5ZCr44G+44KM44KL44GZ44G544Gm44Gu44Oq44Oz44Kv44KS5L2N572u5LuY44GN44Gn6L+U44GZXG4gKlxuICogQHBhcmFtIGxpbmUg6Kq/44G544KL6KGMXG4gKiBAcmV0dXJuIOihjOS4reOBruODquODs+OCr+OCkumghuasoei/lOOBmVxuICovXG5leHBvcnQgZnVuY3Rpb24qIGNyYXdsTGluayhsaW5lOiBMaW5lKTogR2VuZXJhdG9yPExpbmssIHZvaWQsIHVua25vd24+IHtcbiAgaWYgKCEoXCJub2Rlc1wiIGluIGxpbmUpKSByZXR1cm47XG5cbiAgLyoqIOePvuWcqOiqreOBv+i+vOOCk+OBp+OBhOOCi25vZGXjga7oqp7poK3jga7opoHntKDnlarlj7cgKi9cbiAgbGV0IGNoYXIgPSAwO1xuXG4gIGZ1bmN0aW9uKiBjcmF3bChub2RlczogTm9kZVtdIHwgTm9kZSk6IEdlbmVyYXRvcjxMaW5rLCB2b2lkLCB1bmtub3duPiB7XG4gICAgZm9yIChcbiAgICAgIGNvbnN0IG5vZGUgb2YgQXJyYXkuaXNBcnJheShub2RlcykgPyBub2RlcyA6IFtub2Rlc11cbiAgICApIHtcbiAgICAgIGlmICh0eXBlb2Ygbm9kZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBjaGFyICs9IFsuLi5ub2RlXS5sZW5ndGg7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIFwibGlua1wiOlxuICAgICAgICAgIHlpZWxkIHsgd2hvbGU6IG5vZGUudW5pdC53aG9sZSwgc3RhcnQ6IGNoYXIgfTtcbiAgICAgICAgICBjaGFyICs9IFsuLi5ub2RlLnVuaXQud2hvbGVdLmxlbmd0aDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImluZGVudFwiOlxuICAgICAgICBjYXNlIFwicXVvdGVcIjpcbiAgICAgICAgICBjaGFyICs9IFsuLi5ub2RlLnVuaXQudGFnXS5sZW5ndGg7XG4gICAgICAgICAgeWllbGQqIGNyYXdsKG5vZGUuY2hpbGRyZW4pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiZGVjb1wiOlxuICAgICAgICAgIGNoYXIgKz0gWy4uLm5vZGUudW5pdC5kZWNvXS5sZW5ndGggKyAyO1xuICAgICAgICAgIHlpZWxkKiBjcmF3bChub2RlLmNoaWxkcmVuKTtcbiAgICAgICAgICBjaGFyKys7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJzdHJvbmdcIjpcbiAgICAgICAgICBjaGFyICs9IDI7XG4gICAgICAgICAgeWllbGQqIGNyYXdsKG5vZGUuY2hpbGRyZW4pO1xuICAgICAgICAgIGNoYXIgKz0gMjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjaGFyICs9IFsuLi5ub2RlLnVuaXQud2hvbGVdLmxlbmd0aDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB5aWVsZCogY3Jhd2wobGluZS5ub2Rlcyk7XG59XG4iLCAiaW1wb3J0IHsgY3Jhd2xMaW5rLCBMaW5rIH0gZnJvbSBcIi4vY3Jhd2xMaW5rLnRzXCI7XG5pbXBvcnQgeyBMaW5lLCBQb3NpdGlvbiwgUmFuZ2UgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5cbi8vID86IHVuZGVmaW5lZOOBr+OAgXByb3BlcnR544Gu5pyJ54Sh44Gr44GL44GL44KP44KJ44Ga44Ki44Kv44K744K544Gn44GN44KL44KI44GG44Gr44GZ44KL44Gf44KB44Gr5oyH5a6a44GX44Gm44GC44KLXG5leHBvcnQgdHlwZSBTdGF0ZSA9XG4gIHwge1xuICAgIHR5cGU6IFwicmVhZHlcIjtcbiAgICBsb2NrPzogdHJ1ZTtcbiAgICBpc01hbnVhbGx5RGlzYWJsZWQ/OiB1bmRlZmluZWQ7XG4gICAgY29udGV4dD86IHVuZGVmaW5lZDtcbiAgICBxdWVyeT86IHVuZGVmaW5lZDtcbiAgICBzdGFydD86IHVuZGVmaW5lZDtcbiAgICBwb3NpdGlvbj86IHVuZGVmaW5lZDtcbiAgfVxuICB8IHtcbiAgICB0eXBlOiBcImRpc2FibGVkXCI7XG4gICAgbG9jaz86IHRydWU7XG4gICAgaXNNYW51YWxseURpc2FibGVkPzogdHJ1ZTtcbiAgICBjb250ZXh0PzogdW5kZWZpbmVkO1xuICAgIHF1ZXJ5PzogdW5kZWZpbmVkO1xuICAgIHN0YXJ0PzogdW5kZWZpbmVkO1xuICAgIHBvc2l0aW9uPzogdW5kZWZpbmVkO1xuICB9XG4gIHwgQ29tcGxldGlvblN0YXRlXG4gIHwge1xuICAgIHR5cGU6IFwiY2FuY2VsbGVkXCI7XG4gICAgbG9jaz86IHRydWU7XG4gICAgY29udGV4dDogXCJpbnB1dFwiIHwgXCJzZWxlY3Rpb25cIjtcbiAgICBpc01hbnVhbGx5RGlzYWJsZWQ/OiB1bmRlZmluZWQ7XG4gICAgcXVlcnk/OiB1bmRlZmluZWQ7XG4gICAgc3RhcnQ/OiB1bmRlZmluZWQ7XG4gICAgcG9zaXRpb24/OiB1bmRlZmluZWQ7XG4gIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGxldGlvblN0YXRlIHtcbiAgdHlwZTogXCJjb21wbGV0aW9uXCI7XG4gIGNvbnRleHQ6IFwiaW5wdXRcIiB8IFwic2VsZWN0aW9uXCI7XG4gIGxvY2s/OiB0cnVlO1xuICBxdWVyeTogc3RyaW5nO1xuICBzdGFydDogbnVtYmVyO1xuICBwb3NpdGlvbjogUG9zaXRpb247XG4gIGlzTWFudWFsbHlEaXNhYmxlZD86IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCB0eXBlIEFjdGlvbiA9IHtcbiAgdHlwZTpcbiAgICB8IFwiZW5hYmxlXCJcbiAgICB8IFwiZGlzYWJsZVwiXG4gICAgfCBcImxvY2tcIlxuICAgIHwgXCJ1bmxvY2tcIlxuICAgIHwgXCJjYW5jZWxcIjtcbiAgbGluZXM/OiB1bmRlZmluZWQ7XG59IHwge1xuICB0eXBlOiBcImxpbmVzOmNoYW5nZWRcIiB8IFwiY3Vyc29yOmNoYW5nZWRcIiB8IFwic2VsZWN0aW9uOmNoYW5nZWRcIjtcbiAgLyoqIExheW91dCAhPT0gXCJwYWdlXCIg44Gu44Go44GN44GvdW5kZWZpbmVk44Gr44Gq44KLICovXG4gIGxpbmVzPzogTGluZVtdO1xuICBwb3NpdGlvbjogUG9zaXRpb247XG4gIHJhbmdlOiBSYW5nZTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWR1Y2VyID0gKHN0YXRlOiBTdGF0ZSwgYWN0aW9uOiBBY3Rpb24pOiBTdGF0ZSA9PiB7XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gXCJ1bmxvY2tcIikge1xuICAgIGlmICghc3RhdGUubG9jaykgcmV0dXJuIHN0YXRlO1xuICAgIGNvbnN0IHsgbG9jazogXywgLi4ucHJvcHMgfSA9IHN0YXRlO1xuICAgIHJldHVybiB7IC4uLnByb3BzIH07XG4gIH1cbiAgaWYgKHN0YXRlLmxvY2spIHJldHVybiBzdGF0ZTtcblxuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBcImxvY2tcIjoge1xuICAgICAgY29uc3QgeyBsb2NrOiBfLCAuLi5wcm9wcyB9ID0gc3RhdGU7XG4gICAgICByZXR1cm4geyBsb2NrOiB0cnVlLCAuLi5wcm9wcyB9O1xuICAgIH1cbiAgICBjYXNlIFwiZW5hYmxlXCI6XG4gICAgICByZXR1cm4gc3RhdGUudHlwZSA9PT0gXCJkaXNhYmxlZFwiICYmIHN0YXRlLmlzTWFudWFsbHlEaXNhYmxlZFxuICAgICAgICA/IHsgdHlwZTogXCJyZWFkeVwiIH1cbiAgICAgICAgOiBzdGF0ZTtcbiAgICBjYXNlIFwiZGlzYWJsZVwiOlxuICAgICAgcmV0dXJuIHN0YXRlLnR5cGUgPT09IFwiZGlzYWJsZWRcIiAmJiBzdGF0ZS5pc01hbnVhbGx5RGlzYWJsZWRcbiAgICAgICAgPyBzdGF0ZVxuICAgICAgICA6IHsgdHlwZTogXCJkaXNhYmxlZFwiLCBpc01hbnVhbGx5RGlzYWJsZWQ6IHRydWUgfTtcbiAgfVxuICBpZiAoc3RhdGUudHlwZSA9PT0gXCJkaXNhYmxlZFwiKSB7XG4gICAgaWYgKHN0YXRlLmlzTWFudWFsbHlEaXNhYmxlZCB8fCAhYWN0aW9uLmxpbmVzKSByZXR1cm4gc3RhdGU7XG4gICAgLy8gTGF5b3V044GMXCJwYWdlXCLjgavmiLvjgaPjgZ/jgolyZWFkeeOBq+W+qeW4sOOBmeOCi1xuICAgIHJldHVybiB7IHR5cGU6IFwicmVhZHlcIiB9O1xuICB9XG5cbiAgLy8g6KOc5a6M44KS5Lit5pat44GZ44KLXG4gIGlmIChhY3Rpb24udHlwZSA9PT0gXCJjYW5jZWxcIikge1xuICAgIHJldHVybiBzdGF0ZS50eXBlID09PSBcImNvbXBsZXRpb25cIlxuICAgICAgPyB7IHR5cGU6IFwiY2FuY2VsbGVkXCIsIGNvbnRleHQ6IHN0YXRlLmNvbnRleHQgfVxuICAgICAgOiBzdGF0ZTtcbiAgfVxuXG4gIC8vIExheW91dCAhPT0gXCJwYWdlXCLjga7jgajjgY3jga/nhKHlirlcbiAgaWYgKCFhY3Rpb24ubGluZXMpIHJldHVybiB7IHR5cGU6IFwiZGlzYWJsZWRcIiB9O1xuXG4gIC8vIGxheW91dOOBjHBhZ2Xjga7jgajjgY3jga7lh6bnkIZcblxuICBjb25zdCBzdGFydCA9IE1hdGgubWluKGFjdGlvbi5yYW5nZS5zdGFydC5jaGFyLCBhY3Rpb24ucmFuZ2UuZW5kLmNoYXIpO1xuICBjb25zdCBlbmQgPSBNYXRoLm1heChhY3Rpb24ucmFuZ2Uuc3RhcnQuY2hhciwgYWN0aW9uLnJhbmdlLmVuZC5jaGFyKTtcblxuICAvKiog6YG45oqe44GX44Gm44GE44KL44OG44Kt44K544OIXG4gICAqXG4gICAqIOikh+aVsOihjOmBuOaKnuOBr+ecn+mdouebruOBq+ioiOeul+OBl+OBquOBhOOAguikh+aVsOihjOOBi+OBqeOBhuOBi+OBoOOBkeWIpOWumuOBp+OBjeOCi+OCiOOBhuOAgeaUueihjOaWh+Wtl+OCkuWFpeOCjOOBpuOBiuOBj1xuICAgKi9cbiAgY29uc3Qgc2VsZWN0ZWRUZXh0ID0gIWFjdGlvbi5saW5lc1xuICAgID8gXCJcIlxuICAgIDogYWN0aW9uLnJhbmdlLnN0YXJ0LmxpbmUgIT09IGFjdGlvbi5yYW5nZS5lbmQubGluZVxuICAgID8gXCJcXG5cIlxuICAgIDogWy4uLmFjdGlvbi5saW5lc1thY3Rpb24ucmFuZ2Uuc3RhcnQubGluZV0udGV4dF0uc2xpY2Uoc3RhcnQsIGVuZClcbiAgICAgIC5qb2luKFwiXCIpO1xuXG4gIC8vIOWNmOS4gOihjOOBrumBuOaKnuevhOWbsuOBjOOBguOCjOOBsOOAgemBuOaKnuevhOWbsuijnOWujOOCkuWEquWFiOOBl+OBpui1t+WLleOBmeOCi1xuICBpZiAoXG4gICAgaXNTZWxlY3RNb2RlKGFjdGlvbi5saW5lc1thY3Rpb24ucG9zaXRpb24ubGluZV0sIHNlbGVjdGVkVGV4dClcbiAgKSB7XG4gICAgaWYgKHN0YXRlLnR5cGUgIT09IFwiY2FuY2VsbGVkXCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwiY29tcGxldGlvblwiLFxuICAgICAgICBjb250ZXh0OiBcInNlbGVjdGlvblwiLFxuICAgICAgICBxdWVyeTogc2VsZWN0ZWRUZXh0LFxuICAgICAgICBzdGFydCxcbiAgICAgICAgcG9zaXRpb246IGFjdGlvbi5wb3NpdGlvbixcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8g6YG45oqe56+E5Zuy6KOc5a6M44Gn44GN44Gq44GE54q25oWL44Gn5paH5a2X6YG45oqe44GV44KM44Gm44GE44KL44Go44GN44Gv44CB44Gq44Gr44KC6LW35YuV44GX44Gq44GEXG4gIGlmIChzZWxlY3RlZFRleHQgIT09IFwiXCIpIHtcbiAgICByZXR1cm4gc3RhdGUudHlwZSA9PT0gXCJjb21wbGV0aW9uXCIgPyB7IHR5cGU6IFwicmVhZHlcIiB9IDogc3RhdGU7XG4gIH1cblxuICAvLyDku6XpmY3jgIHmloflrZfpgbjmip7jgZXjgozjgabjgYTjgarjgYTnirbmhYtcblxuICBjb25zdCBsaW5rID0gZGV0ZWN0TGluayhcbiAgICBhY3Rpb24ubGluZXNbYWN0aW9uLnBvc2l0aW9uLmxpbmVdLFxuICAgIGFjdGlvbi5wb3NpdGlvbi5jaGFyLFxuICApO1xuICBpZiAoIWxpbmspIHJldHVybiBzdGF0ZS50eXBlID09PSBcInJlYWR5XCIgPyBzdGF0ZSA6IHsgdHlwZTogXCJyZWFkeVwiIH07XG4gIGlmIChzdGF0ZS50eXBlID09PSBcImNhbmNlbGxlZFwiICYmIHN0YXRlLmNvbnRleHQgPT09IFwiaW5wdXRcIikgcmV0dXJuIHN0YXRlO1xuICBpZiAoc3RhdGUudHlwZSA9PT0gXCJjb21wbGV0aW9uXCIgfHwgYWN0aW9uLnR5cGUgPT09IFwibGluZXM6Y2hhbmdlZFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiY29tcGxldGlvblwiLFxuICAgICAgY29udGV4dDogXCJpbnB1dFwiLFxuICAgICAgcXVlcnk6IGxpbmsud2hvbGUsXG4gICAgICBzdGFydDogbGluay5zdGFydCxcbiAgICAgIHBvc2l0aW9uOiBhY3Rpb24ucG9zaXRpb24sXG4gICAgfTtcbiAgfVxuICByZXR1cm4gc3RhdGUudHlwZSA9PT0gXCJyZWFkeVwiID8gc3RhdGUgOiB7IHR5cGU6IFwicmVhZHlcIiB9O1xufTtcblxuLyoqIGNoYXLjgpLlkKvjgoDjg6rjg7Pjgq/jgpLmjqLjgZkgKi9cbmNvbnN0IGRldGVjdExpbmsgPSAoXG4gIGxpbmU6IExpbmUsXG4gIGNoYXI6IG51bWJlcixcbik6IExpbmsgfCB1bmRlZmluZWQgPT4ge1xuICBmb3IgKGNvbnN0IHsgd2hvbGUsIHN0YXJ0IH0gb2YgY3Jhd2xMaW5rKGxpbmUpKSB7XG4gICAgaWYgKGNoYXIgPD0gc3RhcnQgfHwgc3RhcnQgKyBbLi4ud2hvbGVdLmxlbmd0aCA8PSBjaGFyKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcmV0dXJuIHsgd2hvbGUsIHN0YXJ0IH07XG4gIH1cbn07XG5cbi8qKiDpgbjmip7nr4Tlm7LlhaXlipvoo5zlrozjgpLlrp/ooYzjgafjgY3jgovjgYvjganjgYbjgYvov5TjgZnlh73mlbBcbiAqXG4gKiDoo5zlrozjgZfjgarjgYTmnaHku7ZcbiAqIC0g6YG45oqe56+E5Zuy44GM56m6XG4gKiAtIOikh+aVsOihjOOCkumBuOaKnuOBl+OBpuOBhOOCi1xuICogLSDjgrPjg7zjg4njg5bjg63jg4Pjgq/jgIHjgr/jgqTjg4jjg6vooYzjgIHjg4bjg7zjg5bjg6vjga7jgr/jgqTjg4jjg6vjgavjgYTjgotcbiAqL1xuY29uc3QgaXNTZWxlY3RNb2RlID0gKGN1cnNvckxpbmU6IExpbmUsIHNlbGVjdGVkVGV4dDogc3RyaW5nKSA9PlxuICAhKHNlbGVjdGVkVGV4dC50cmltKCkgPT09IFwiXCIgfHwgc2VsZWN0ZWRUZXh0LmluY2x1ZGVzKFwiXFxuXCIpIHx8XG4gICAgXCJjb2RlQmxvY2tcIiBpbiBjdXJzb3JMaW5lIHx8XG4gICAgXCJ0aXRsZVwiIGluIGN1cnNvckxpbmUgfHxcbiAgICAoXCJ0YWJsZUJsb2NrXCIgaW4gY3Vyc29yTGluZSAmJiBjdXJzb3JMaW5lLnRhYmxlQmxvY2suc3RhcnQpKTtcbiIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IExpbmUsIFNjcmFwYm94IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbi8qKiBzY3JhcGJveC5QYWdlLmxpbmVz44KS6YGF5bu25Y+W5b6X44GZ44KLaG9va3NcbiAqXG4gKiBzY3JhcGJveC5QYWdlLmxpbmVz44Gu55Sf5oiQ44Gr44Gv5pmC6ZaT44GM44GL44GL44KL44Gu44Gn44CB5a6f6Zqb44Gr5b+F6KaB44Gr44Gq44KL44G+44Gn5ZG844Gz5Ye644GV44Gq44GE44KI44GG44Gr44GZ44KLXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VDYWNoZWRMaW5lcyA9ICgpOiAoKSA9PiBMaW5lW10gfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBsaW5lcyA9IHVzZVJlZihzY3JhcGJveC5QYWdlLmxpbmVzKTtcbiAgY29uc3QgaXNVcGRhdGVkWWV0ID0gdXNlUmVmKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgaXNVcGRhdGVkWWV0LmN1cnJlbnQgPSB0cnVlO1xuICAgIH07XG4gICAgc2NyYXBib3guYWRkTGlzdGVuZXIoXCJsaW5lczpjaGFuZ2VkXCIsIGNhbGxiYWNrKTtcbiAgICBzY3JhcGJveC5hZGRMaXN0ZW5lcihcImxheW91dDpjaGFuZ2VkXCIsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgc2NyYXBib3gucmVtb3ZlTGlzdGVuZXIoXCJsaW5lczpjaGFuZ2VkXCIsIGNhbGxiYWNrKTtcbiAgICAgIHNjcmFwYm94LnJlbW92ZUxpc3RlbmVyKFwibGF5b3V0OmNoYW5nZWRcIiwgY2FsbGJhY2spO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICByZXR1cm4gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIOabtOaWsOOBjOOBguOCjOOBsOOAgeaWsOOBl+OBhGxpbmVz44Gr5Y+W44KK5pu/44GI44KLXG4gICAgaWYgKGlzVXBkYXRlZFlldC5jdXJyZW50KSB7XG4gICAgICBsaW5lcy5jdXJyZW50ID0gc2NyYXBib3guUGFnZS5saW5lcztcbiAgICAgIGlzVXBkYXRlZFlldC5jdXJyZW50ID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBsaW5lcy5jdXJyZW50ID8/IHVuZGVmaW5lZDtcbiAgfSwgW10pO1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbmltcG9ydCB7IGNyZWF0ZURlYnVnIH0gZnJvbSBcIi4vZGVwcy9kZWJ1Zy50c1wiO1xuaW1wb3J0IHtcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVkdWNlcixcbiAgdXNlU3RhdGUsXG59IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHtcbiAgaW5zZXJ0VGV4dCxcbiAgUG9zaXRpb24sXG4gIFNjcmFwYm94LFxuICB0YWtlQ3Vyc29yLFxuICB0YWtlU2VsZWN0aW9uLFxuICB0YWtlU3RvcmVzLFxufSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyByZWR1Y2VyLCBTdGF0ZSB9IGZyb20gXCIuL3JlZHVjZXIudHNcIjtcbmltcG9ydCB7IHVzZUNhY2hlZExpbmVzIH0gZnJvbSBcIi4vdXNlQ2FjaGVkTGluZXMudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVEZWJ1ZyhcInNjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uOnVzZUxpZmVjeWNsZS50c1wiKTtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VMaWZlY3ljbGVSZXN1bHQge1xuICAvKiog54++5Zyo44Gu54q25oWLICovXG4gIHN0YXRlOiBTdGF0ZTtcblxuICAvKiog5YWl5Yqb6KOc5a6M44Gu5pyJ5Yq5L+eEoeWKueWIh+OCiuabv+OBiCAqL1xuICBzZXRFbmFibGU6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcblxuICAvKiog54++5Zyo44Gu5YWl5Yqb6KOc5a6M44KS5Lit5q2i44GZ44KLICovXG4gIGNhbmNlbDogKCkgPT4gdm9pZDtcblxuICAvKiog5LiO44GI44KJ44KM44Gf6Zai5pWw44KS5a6f6KGM44GX57WC44GI44KL44G+44Gn54q25oWL6YG356e744KS54Sh5Yq544Gr44GZ44KLICovXG4gIGZyZWV6ZVVudGlsOiB7XG4gICAgKGpvYjogKCkgPT4gdm9pZCk6IHZvaWQ7XG4gICAgKGpvYjogKCkgPT4gUHJvbWlzZTx2b2lkPik6IFByb21pc2U8dm9pZD47XG4gIH07XG5cbiAgLyoqIOePvuWcqOihjOOCkuabuOOBjeaPm+OBiOOBpuOAgeijnOWujOOCkue1guS6huOBmeOCiyAqL1xuICBjb25maXJtQWZ0ZXI6IChcbiAgICB1cGRhdG9yOiAocHJldjogc3RyaW5nLCBwb3NpdGlvbjogUG9zaXRpb24pID0+IFtzdHJpbmcsIFBvc2l0aW9uXSxcbiAgKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKiog5YWl5Yqb6KOc5a6M44Gu54q25oWL566h55CG44KS6KGM44GGaG9va3MgKi9cbmV4cG9ydCBjb25zdCB1c2VMaWZlY3ljbGUgPSAoKTogVXNlTGlmZWN5Y2xlUmVzdWx0ID0+IHtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyKHJlZHVjZXIsIHsgdHlwZTogXCJyZWFkeVwiIH0pO1xuXG4gIGNvbnN0IGdldExpbmVzID0gdXNlQ2FjaGVkTGluZXMoKTtcbiAgLyoqIGRpc3BhdGNo44KSZGVib3VuY2XjgZfjgZ/jgoLjga5cbiAgICpcbiAgICogY3Vyc29yOmNoYW5nZWTjga7jgb8xMDBtc+W+heapn+OBleOBm+OCi1xuICAgKi9cbiAgY29uc3QgZGVib3VuY2VkRGlzcGF0Y2ggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBsZXQgdGltZXI6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKHR5cGU6IFwibGluZXM6Y2hhbmdlZFwiIHwgXCJzZWxlY3Rpb246Y2hhbmdlZFwiIHwgXCJjdXJzb3I6Y2hhbmdlZFwiKSA9PiB7XG4gICAgICBpZiAodGltZXIgIT09IHVuZGVmaW5lZCkgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgIHRpbWVyID0gc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgY3Vyc29yLCBzZWxlY3Rpb24gfSA9IHRha2VTdG9yZXMoKTtcbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgbGluZXM6IGdldExpbmVzKCksXG4gICAgICAgICAgICByYW5nZTogc2VsZWN0aW9uLmdldFJhbmdlKHsgbm9ybWFsaXplT3JkZXI6IHRydWUgfSksXG4gICAgICAgICAgICBwb3NpdGlvbjogY3Vyc29yLmdldFBvc2l0aW9uKCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGUgPT09IFwiY3Vyc29yOmNoYW5nZWRcIiA/IDEwMCA6IHVuZGVmaW5lZCxcbiAgICAgICk7XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlTGluZUNoYW5nZWQgPSAoKSA9PiB7XG4gICAgICBkZWJvdW5jZWREaXNwYXRjaChcImxpbmVzOmNoYW5nZWRcIik7XG4gICAgfTtcbiAgICAvLyDjg4bjgq3jgrnjg4jlhaXlipvnm6PoppZcbiAgICBzY3JhcGJveC5hZGRMaXN0ZW5lcihcImxpbmVzOmNoYW5nZWRcIiwgaGFuZGxlTGluZUNoYW5nZWQpO1xuICAgIHNjcmFwYm94LmFkZExpc3RlbmVyKFwibGF5b3V0OmNoYW5nZWRcIiwgaGFuZGxlTGluZUNoYW5nZWQpO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdGlvbkNoYW5nZWQgPSAoKSA9PiB7XG4gICAgICBkZWJvdW5jZWREaXNwYXRjaChcInNlbGVjdGlvbjpjaGFuZ2VkXCIpO1xuICAgIH07XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGFrZVNlbGVjdGlvbigpO1xuICAgIC8vIOmBuOaKnuevhOWbsuWkieabtOebo+imllxuICAgIHNlbGVjdGlvbi5hZGRDaGFuZ2VMaXN0ZW5lcihoYW5kbGVTZWxlY3Rpb25DaGFuZ2VkKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgc2NyYXBib3gucmVtb3ZlTGlzdGVuZXIoXCJsaW5lczpjaGFuZ2VkXCIsIGhhbmRsZUxpbmVDaGFuZ2VkKTtcbiAgICAgIHNjcmFwYm94LnJlbW92ZUxpc3RlbmVyKFwibGF5b3V0OmNoYW5nZWRcIiwgaGFuZGxlTGluZUNoYW5nZWQpO1xuICAgICAgc2VsZWN0aW9uLnJlbW92ZUNoYW5nZUxpc3RlbmVyKGhhbmRsZVNlbGVjdGlvbkNoYW5nZWQpO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICAvLyDjgqvjg7zjgr3jg6vmk43kvZznm6PoppZcbiAgLy8g5YWl5Yqb6KOc5a6M44GM6LW35YuV44GX44Gm44GE44KL44Go44GN44Gu44G/55uj6KaW44GZ44KLXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXRlLmNvbnRleHQgIT09IFwiaW5wdXRcIikgcmV0dXJuO1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgZGVib3VuY2VkRGlzcGF0Y2goXCJjdXJzb3I6Y2hhbmdlZFwiKTtcbiAgICB9O1xuICAgIGNvbnN0IGN1cnNvciA9IHRha2VDdXJzb3IoKTtcbiAgICBjdXJzb3IuYWRkQ2hhbmdlTGlzdGVuZXIoY2FsbGJhY2spO1xuICAgIHJldHVybiAoKSA9PiBjdXJzb3IucmVtb3ZlQ2hhbmdlTGlzdGVuZXIoY2FsbGJhY2spO1xuICB9LCBbc3RhdGUuY29udGV4dF0pO1xuXG4gIGNvbnN0IFtwcmV2U3RhdGUsIHNldFByZXZTdGF0ZV0gPSB1c2VTdGF0ZTxTdGF0ZT4oc3RhdGUpO1xuICBpZiAocHJldlN0YXRlICE9PSBzdGF0ZSkge1xuICAgIHNldFByZXZTdGF0ZShzdGF0ZSk7XG4gICAgbG9nZ2VyLmRlYnVnKFwiRGV0ZWN0IGNoYW5nZXNcIiwgc3RhdGUpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0ZSxcbiAgICBzZXRFbmFibGU6IHVzZUNhbGxiYWNrKFxuICAgICAgKGZsYWc6IGJvb2xlYW4pID0+IGRpc3BhdGNoKHsgdHlwZTogZmxhZyA/IFwiZW5hYmxlXCIgOiBcImRpc2FibGVcIiB9KSxcbiAgICAgIFtdLFxuICAgICksXG4gICAgY2FuY2VsOiB1c2VDYWxsYmFjaygoKSA9PiBkaXNwYXRjaCh7IHR5cGU6IFwiY2FuY2VsXCIgfSksIFtdKSxcbiAgICBmcmVlemVVbnRpbDogdXNlQ2FsbGJhY2soXG4gICAgICAoKGpvYikgPT4ge1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwibG9ja1wiIH0pO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gam9iKCk7XG4gICAgICAgIGlmIChwcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgIHJldHVybiBwcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcInVubG9ja1wiIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJ1bmxvY2tcIiB9KTtcbiAgICAgICAgfVxuICAgICAgfSkgYXMgVXNlTGlmZWN5Y2xlUmVzdWx0W1wiZnJlZXplVW50aWxcIl0sXG4gICAgICBbXSxcbiAgICApLFxuICAgIGNvbmZpcm1BZnRlcjogdXNlQ2FsbGJhY2soXG4gICAgICBhc3luYyAodXBkYXRvcikgPT4ge1xuICAgICAgICBjb25zdCBsaW5lcyA9IGdldExpbmVzKCk7XG4gICAgICAgIC8vIOijnOWujOOBjOeEoeWKueOBruOBqOOBjeOBr+S9leOCguOBl+OBquOBhFxuICAgICAgICBpZiAoIWxpbmVzKSByZXR1cm47XG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJsb2NrXCIgfSk7XG4gICAgICAgIGNvbnN0IHsgY3Vyc29yLCBzZWxlY3Rpb24gfSA9IHRha2VTdG9yZXMoKTtcbiAgICAgICAgY29uc3QgbGluZSA9IGN1cnNvci5nZXRQb3NpdGlvbigpLmxpbmU7XG4gICAgICAgIGNvbnN0IHByZXYgPSBsaW5lc1tsaW5lXS50ZXh0O1xuICAgICAgICBjb25zdCBbdGV4dCwgcG9zaXRpb25dID0gdXBkYXRvcihwcmV2LCBjdXJzb3IuZ2V0UG9zaXRpb24oKSk7XG5cbiAgICAgICAgLy8g5LiK5pu444GNXG4gICAgICAgIHNlbGVjdGlvbi5zZXRSYW5nZSh7XG4gICAgICAgICAgc3RhcnQ6IHsgbGluZSwgY2hhcjogMCB9LFxuICAgICAgICAgIGVuZDogeyBsaW5lLCBjaGFyOiBbLi4ucHJldl0ubGVuZ3RoIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBpbnNlcnRUZXh0KHRleHQpO1xuICAgICAgICBjdXJzb3Iuc2V0UG9zaXRpb24ocG9zaXRpb24pO1xuICAgICAgICBjdXJzb3IuZm9jdXMoKTtcbiAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcInVubG9ja1wiIH0pO1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiY2FuY2VsXCIgfSk7XG4gICAgICB9LFxuICAgICAgW10sXG4gICAgKSxcbiAgfTtcbn07XG4iLCAiaW1wb3J0IHsgTWF0Y2hJbmZvIH0gZnJvbSBcIi4vc2VhcmNoLnRzXCI7XG5pbXBvcnQgeyBDYW5kaWRhdGUgfSBmcm9tIFwiLi9zb3VyY2UudHNcIjtcblxuLyoqIOWAmeijnOOCkuaYh+mghuOBq+avlOi8g+OBmeOCi+WHveaVsOOCkuS9nOOCi1xuICpcbiAqIOi/lOOCiuWApOOBruaEj+WRs+OBr0FycmF5LnByb3RvdHlwZS5zb3J0KCnjgavjgo/jgZ/jgZnlh73mlbDjgajlkIzjgZhcbiAqXG4gKiBAcGFyYW0gcHJvamVjdHMgcHJvamVjdOOBruWEquWFiOmghuS9jeS7mOOBkeOBq+S9v+OBhumFjeWIl+OAguWEquWFiOW6puOBrumrmOOBhOmghuOBq3Byb2plY3TjgpLkuKbjgbnjgotcbiAqIEByZXR1cm4g5piH6aCG44Gr5q+U6LyD44GZ44KL5Ye95pWwXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wYXJlQXNlID0gKFxuICBhOiBDYW5kaWRhdGUgJiBNYXRjaEluZm8sXG4gIGI6IENhbmRpZGF0ZSAmIE1hdGNoSW5mbyxcbik6IG51bWJlciA9PiB7XG4gIC8vIDEuIOe3qOmbhui3nembouOBjOefreOBhOmghlxuICBjb25zdCBkaWZmID0gYS5kaXN0IC0gYi5kaXN0O1xuICBpZiAoZGlmZiAhPT0gMCkgcmV0dXJuIGRpZmY7XG5cbiAgLy8gMi4g44Oe44OD44OB5L2N572u44GM5pep44GE6aCGXG4gIGNvbnN0IHNhID0gYS5tYXRjaGVzLm1hcCgoW3NdKSA9PiBzKS5zb3J0KCk7XG4gIGNvbnN0IHNiID0gYi5tYXRjaGVzLm1hcCgoW3NdKSA9PiBzKS5zb3J0KCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2EubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBzZGlmZiA9IHNhW2ldIC0gKHNiW2ldID8/IHNiLmxlbmd0aCk7XG4gICAgaWYgKHNkaWZmICE9PSAwKSByZXR1cm4gc2RpZmY7XG4gIH1cblxuICAvLyAzLiDmloflrZfliJfjgYznn63jgYTpoIZcbiAgY29uc3QgbGRpZmYgPSBhLnRpdGxlLmxlbmd0aCAtIGIudGl0bGUubGVuZ3RoO1xuICBpZiAobGRpZmYgIT09IDApIHJldHVybiBsZGlmZjtcblxuICAvLyA0LiDmm7TmlrDml6XmmYLjgYzmlrDjgZfjgYTpoIZcbiAgcmV0dXJuIGIudXBkYXRlZCAtIGEudXBkYXRlZDtcbn07XG4iLCAiLyoqIOaknOe0ouWHveaVsCAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXIge1xuICAvKiog5LiO44GI44Gf5paH5a2X5YiX44Gr5LiA6Ie044GZ44KL57eo6ZuG6Led6Zui44Gu44Oq44K544OI44KS6KiI566X44GZ44KLXG4gICAqXG4gICAqIEBwYXJhbSB0ZXh0IOaknOe0ouWvvuixoeOBruaWh+Wtl+WIl1xuICAgKiBAcmV0dXJuIGnnlarnm67jgavjgIF0ZXh044GuaeeVquebruOBrui/keS8vOaWh+Wtl+WIl+WHuuePvuOBrue3qOmbhui3nembouOCkuagvOe0jeOBl+OBn+mFjeWIl1xuICAgKi9cbiAgKHRleHQ6IHN0cmluZyk6IG51bWJlcltdO1xufVxuXG4vKiog44GC44GE44G+44GE5qSc57Si44GZ44KLXG4gKlxuICogQHBhcmFtIHF1ZXJ5IOaknOe0ouaWh+Wtl+WIl1xuICogQHJldHVybiDmpJzntKLnlKjlh73mlbBcbiAqL1xuZXhwb3J0IGNvbnN0IGJpdERQID0gKHF1ZXJ5OiBzdHJpbmcpOiBGaWx0ZXIgPT4ge1xuICAvLyDmnKvlsL7jgYzmnIDliJ3jga7mloflrZfjga7jg5Pjg4Pjg4jjgpLooajjgZlcbiAgY29uc3QgUGVxID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgY29uc3QgcnF1ZXJ5ID0gWy4uLnF1ZXJ5XS5yZXZlcnNlKCk7IC8vIOabuOiomOe0oOOBq+WIhuWJsuOBl+OBpuOBiuOBj1xuICB7XG4gICAgbGV0IGkgPSAxO1xuICAgIGZvciAoY29uc3QgcSBvZiBycXVlcnkpIHtcbiAgICAgIFBlcS5zZXQocSwgKFBlcS5nZXQocSkgPz8gMCkgfCBpKTtcbiAgICAgIGNvbnN0IHBpbCA9IHEudG9Mb3dlckNhc2UoKTtcbiAgICAgIFBlcS5zZXQocGlsLCAoUGVxLmdldChwaWwpID8/IDApIHwgaSk7XG4gICAgICBjb25zdCBwaXUgPSBxLnRvVXBwZXJDYXNlKCk7XG4gICAgICBQZXEuc2V0KHBpdSwgKFBlcS5nZXQocGl1KSA/PyAwKSB8IGkpO1xuICAgICAgaSA8PD0gMTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBtID0gcnF1ZXJ5Lmxlbmd0aDsgLy/mloflrZfliJfmlbBcbiAgY29uc3QgUHYwID0gfih+KDApIDw8IG0pOyAvLyDlj7PlgbTjgYvjgolt5YCL44GuYml0c+OBjOeri+OBo+OBn+ODk+ODg+ODiOWIl1xuICBjb25zdCBhY2NlcHQgPSAxIDw8IChtIC0gMSk7XG5cbiAgcmV0dXJuICh0ZXh0OiBzdHJpbmcpOiBudW1iZXJbXSA9PiB7XG4gICAgbGV0IE12ID0gMDtcbiAgICBsZXQgUHYgPSBQdjA7XG4gICAgY29uc3QgcnRleHQgPSBbLi4udGV4dF0ucmV2ZXJzZSgpO1xuICAgIGNvbnN0IENtOiBudW1iZXJbXSA9IFtdO1xuICAgIGxldCBqID0gcnRleHQubGVuZ3RoO1xuICAgIENtW2pdID0gbTtcblxuICAgIGZvciAoY29uc3QgdCBvZiBydGV4dCkge1xuICAgICAgY29uc3QgRXEgPSBQZXEuZ2V0KHQpID8/IDA7XG4gICAgICBjb25zdCBYdiA9IEVxIHwgTXY7XG4gICAgICBjb25zdCBYaCA9ICgoKEVxICYgUHYpICsgUHYpIF4gUHYpIHwgRXE7XG4gICAgICBjb25zdCBQaCA9IE12IHwgfihYaCB8IFB2KTtcbiAgICAgIGNvbnN0IE1oID0gUHYgJiBYaDtcbiAgICAgIENtW2ogLSAxXSA9IENtW2pdICtcbiAgICAgICAgKChQaCAmIGFjY2VwdCkgIT09IDAgPyAxIDogKE1oICYgYWNjZXB0KSAhPT0gMCA/IC0xIDogMCk7XG5cbiAgICAgIFB2ID0gKE1oIDw8IDEpIHwgfihYdiB8IChQaCA8PCAxKSk7XG4gICAgICBNdiA9IChQaCA8PCAxKSAmIFh2O1xuICAgICAgai0tO1xuICAgIH1cblxuICAgIHJldHVybiBDbTtcbiAgfTtcbn07XG4iLCAiaW1wb3J0IHsgcmV2ZXJ0VGl0bGVMYyB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmltcG9ydCB7IGJpdERQIH0gZnJvbSBcIi4vYml0RFAudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDYW5kaWRhdGUge1xuICB0aXRsZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBNYXRjaEluZm8ge1xuICAvKiog57eo6ZuG6Led6ZuiICovXG4gIGRpc3Q6IG51bWJlcjtcblxuICAvKiogcXVlcnnjgYzjg57jg4Pjg4HjgZfjgZ/kvY3nva5cbiAgICpcbiAgICogLSAx55Wq55uu77ya6ZaL5aeL5L2N572uXG4gICAqIC0gMueVquebru+8mue1guS6huS9jee9rlxuICAgKi9cbiAgbWF0Y2hlczogW251bWJlciwgbnVtYmVyXVtdO1xufVxuXG4vLyBkZW5vLWZtdC1pZ25vcmVcbmNvbnN0IGdldE1heERpc3RhbmNlID0gW1xuICAwLCAvLyDnqbrmloflrZfjga7jgajjgY1cbiAgMCwgMCxcbiAgMSwgMSxcbiAgMiwgMiwgMiwgMixcbiAgMywgMywgMywgMywgMywgMyxcbiAgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCxcbiAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNixcbl07XG5cbi8qKiDkuIDoh7TjgZnjgovlgJnoo5zjgpLjgZfjgbzjgorjgZPjgoDlh73mlbAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXI8VCBleHRlbmRzIENhbmRpZGF0ZT4ge1xuICAvKiog5LiA6Ie044GZ44KL5YCZ6KOc44KS44GX44G844KK44GT44KA5Ye95pWwXG4gICAqXG4gICAqIEBwYXJhbSBzb3VyY2Ug5qSc57Si5YCZ6KOc44Oq44K544OIXG4gICAqIEByZXR1cm4g5LiA6Ie044GX44Gf5YCZ6KOcXG4gICAqL1xuICAoc291cmNlOiByZWFkb25seSBUW10pOiAoVCAmIE1hdGNoSW5mbylbXTtcbn1cblxuLyoqIGBxdWVyeWDjgavmm5bmmKfkuIDoh7TjgZnjgovlgJnoo5zjgpLntZ7jgorovrzjgoDlh73mlbDjgpLkvZzjgotcbiAqXG4gKiBAcGFyYW0gcXVlcnkg5qSc57Si6Kqe5Y+lXG4gKiBAcmV0dXJuIOaknOe0ouWHveaVsOOAguaknOe0ouS4jeimgeOBquOBqOOBjeOBr2B1bmRlZmluZWRg44KS6L+U44GZXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlRmlsdGVyID0gPFQgZXh0ZW5kcyBDYW5kaWRhdGU+KFxuICBxdWVyeTogc3RyaW5nLFxuKTogRmlsdGVyPFQ+IHwgdW5kZWZpbmVkID0+IHtcbiAgLyoqIOOCreODvOODr+ODvOODieODquOCueODiFxuICAgKlxuICAgKiAtIOepuueZveOBr+WPluOCiumZpOOBj1xuICAgKiAtIGBfYOOBr+epuueZveOBqOOBv+OBquOBmVxuICAgKiAtIOmVt+OBhOmghuOBq+S4puOBs+abv+OBiOOBpuOBiuOBj1xuICAgKiAgIC0g6ZW344GEcXVlcnnjgYvjgonmpJzntKLjgZfjgZ/jgbvjgYbjgYzjgIHlsJHjgarjgY/ntZ7jgorovrzjgoHjgotcbiAgICovXG4gIGNvbnN0IHF1ZXJpZXMgPSByZXZlcnRUaXRsZUxjKHF1ZXJ5LnRyaW0oKSkuc3BsaXQoL1xccysvKVxuICAgIC5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKTtcbiAgaWYgKHF1ZXJpZXMubGVuZ3RoID09PSAwIHx8IHF1ZXJpZXMuZXZlcnkoKHEpID0+IHEgPT09IFwiXCIpKSByZXR1cm47XG5cbiAgcmV0dXJuIChzb3VyY2UpID0+IHtcbiAgICBsZXQgcmVzdWx0ID0gWy4uLnNvdXJjZV07XG4gICAgZm9yIChjb25zdCBxdWVyeSBvZiBxdWVyaWVzKSB7XG4gICAgICByZXN1bHQgPSBmaWx0ZXIocXVlcnksIHJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQgYXMgKFQgJiBNYXRjaEluZm8pW107XG4gIH07XG59O1xuXG5jb25zdCBmaWx0ZXIgPSA8VCBleHRlbmRzIENhbmRpZGF0ZT4oXG4gIHF1ZXJ5OiBzdHJpbmcsXG4gIHNvdXJjZTogKFQgJiBQYXJ0aWFsPE1hdGNoSW5mbz4pW10sXG4pOiAoVCAmIE1hdGNoSW5mbylbXSA9PiB7XG4gIGNvbnN0IG0gPSBbLi4ucXVlcnldLmxlbmd0aDtcbiAgY29uc3QgbWF4RGlzdGFuY2UgPSBnZXRNYXhEaXN0YW5jZVttXTtcbiAgY29uc3QgZmlsdGVyXyA9IGJpdERQKHF1ZXJ5KTtcblxuICByZXR1cm4gc291cmNlLmZsYXRNYXAoXG4gICAgKHsgdGl0bGUsIGRpc3QsIG1hdGNoZXMsIC4uLnByb3BzIH0pID0+IHtcbiAgICAgIG1hdGNoZXMgPz89IFtdO1xuICAgICAgZGlzdCA/Pz0gMDtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gZmlsdGVyXyh0aXRsZSlcbiAgICAgICAgLmZsYXRNYXAoKGQsIGkpID0+XG4gICAgICAgICAgZCA8PSBtYXhEaXN0YW5jZSAmJlxuICAgICAgICAgICAgLy8g5Yil44GucXVlcnnjgafjg57jg4Pjg4HjgZfjgZ/nrofmiYDjga/pmaTjgY9cbiAgICAgICAgICAgIG1hdGNoZXMhLmV2ZXJ5KChbcywgZV0pID0+IGkgKyBtIDw9IHMgfHwgZSA8IGkpXG4gICAgICAgICAgICA/IFtbaSwgZF1dXG4gICAgICAgICAgICA6IFtdXG4gICAgICAgICk7XG4gICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuXG4gICAgICBjb25zdCBuZXdNYXRjaCA9IHJlc3VsdC5yZWR1Y2UoKHByZXYsIFtpLCBkaXN0XSkgPT4ge1xuICAgICAgICBpZiAocHJldi5kaXN0IDw9IGRpc3QpIHJldHVybiBwcmV2O1xuICAgICAgICBwcmV2LmRpc3QgPSBkaXN0O1xuICAgICAgICBwcmV2LnN0YXJ0ID0gaTtcbiAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICB9LCB7IGRpc3Q6IG0sIHN0YXJ0OiAwIH0pO1xuXG4gICAgICBtYXRjaGVzLnB1c2goW25ld01hdGNoLnN0YXJ0LCBuZXdNYXRjaC5zdGFydCArIG0gLSAxXSk7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgZGlzdDogbmV3TWF0Y2guZGlzdCArIGRpc3QsXG4gICAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgfSBhcyAoVCAmIE1hdGNoSW5mbyksXG4gICAgICBdO1xuICAgIH0sXG4gICk7XG59O1xuIiwgImltcG9ydCB7IENhbmRpZGF0ZSwgbWFrZUZpbHRlciwgTWF0Y2hJbmZvIH0gZnJvbSBcIi4vc2VhcmNoLnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVEZWJ1ZyB9IGZyb20gXCIuL2RlcHMvZGVidWcudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlRGVidWcoXCJzY3JhcGJveC1zZWxlY3Qtc3VnZ2VzdGlvbjpjYW5jZWxhYmxlU2VhcmNoLnRzXCIpO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbmNlbGFibGVTZWFyY2hPcHRpb25zIHtcbiAgLyoqIOS4gOW6puOBq+aknOe0ouOBmeOCi+WAmeijnOOBruacgOWkp+aVsFxuICAgKlxuICAgKiBAZGVmYXVsdCAxMDAwXG4gICAqL1xuICBjaHVuaz86IG51bWJlcjtcbn1cblxuLyoqIOS4reaWreWPr+iDveOBquaknOe0oiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBjYW5jZWxhYmxlU2VhcmNoPEl0ZW0gZXh0ZW5kcyBDYW5kaWRhdGU+KFxuICBxdWVyeTogc3RyaW5nLFxuICBzb3VyY2U6IEl0ZW1bXSxcbiAgb3B0aW9ucz86IENhbmNlbGFibGVTZWFyY2hPcHRpb25zLFxuKTogQXN5bmNHZW5lcmF0b3I8WyhJdGVtICYgTWF0Y2hJbmZvKVtdLCBudW1iZXJdLCB2b2lkLCB1bmtub3duPiB7XG4gIGNvbnN0IGZpbHRlciA9IG1ha2VGaWx0ZXI8SXRlbT4ocXVlcnkpO1xuICBpZiAoIWZpbHRlcikgcmV0dXJuO1xuXG4gIGNvbnN0IGNodW5rID0gb3B0aW9ucz8uY2h1bmsgPz8gMTAwMDtcbiAgY29uc3QgdG90YWwgPSBNYXRoLmZsb29yKHNvdXJjZS5sZW5ndGggLyBjaHVuaykgKyAxO1xuICBsZXQgaSA9IDA7XG4gIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTtcbiAgdHJ5IHtcbiAgICBmb3IgKDsgaSA8IHRvdGFsOyBpKyspIHtcbiAgICAgIC8vIOaknOe0ouS4reaWreWRveS7pOOCkuWPl+OBkeS7mOOBkeOCi+OBn+OCgeOBrmludGVydmFsXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlc29sdmUpKTtcbiAgICAgIHlpZWxkIFtmaWx0ZXIoc291cmNlLnNsaWNlKGkgKiBjaHVuaywgKGkgKyAxKSAqIGNodW5rKSksIChpICsgMSkgLyB0b3RhbF07XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgbXMgPSBlbmQuZ2V0VGltZSgpIC0gc3RhcnQuZ2V0VGltZSgpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBzZWFyY2ggJHtcbiAgICAgICAgKGkgLyB0b3RhbCAqIDEwMCkudG9QcmVjaXNpb24oMylcbiAgICAgIH0lIG9mIHRoZSBzb3VyY2UgZm9yIFwiJHtxdWVyeX1cIiBpbiAke21zfW1zYCxcbiAgICApO1xuICB9XG59XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLyoqXG4gKiBBIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgZGVsYXllZCBieSBhIGdpdmVuIGB3YWl0YFxuICogdGltZSBpbiBtaWxsaXNlY29uZHMuIElmIHRoZSBtZXRob2QgaXMgY2FsbGVkIGFnYWluIGJlZm9yZVxuICogdGhlIHRpbWVvdXQgZXhwaXJlcywgdGhlIHByZXZpb3VzIGNhbGwgd2lsbCBiZSBhYm9ydGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlYm91bmNlZEZ1bmN0aW9uPFQgZXh0ZW5kcyBBcnJheTx1bmtub3duPj4ge1xuICAoLi4uYXJnczogVCk6IHZvaWQ7XG4gIC8qKiBDbGVhcnMgdGhlIGRlYm91bmNlIHRpbWVvdXQgYW5kIG9taXRzIGNhbGxpbmcgdGhlIGRlYm91bmNlZCBmdW5jdGlvbi4gKi9cbiAgY2xlYXIoKTogdm9pZDtcbiAgLyoqIENsZWFycyB0aGUgZGVib3VuY2UgdGltZW91dCBhbmQgY2FsbHMgdGhlIGRlYm91bmNlZCBmdW5jdGlvbiBpbW1lZGlhdGVseS4gKi9cbiAgZmx1c2goKTogdm9pZDtcbiAgLyoqIFJldHVybnMgYSBib29sZWFuIHdoZXRoZXIgYSBkZWJvdW5jZSBjYWxsIGlzIHBlbmRpbmcgb3Igbm90LiAqL1xuICByZWFkb25seSBwZW5kaW5nOiBib29sZWFuO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBkZWJvdW5jZWQgZnVuY3Rpb24gdGhhdCBkZWxheXMgdGhlIGdpdmVuIGBmdW5jYFxuICogYnkgYSBnaXZlbiBgd2FpdGAgdGltZSBpbiBtaWxsaXNlY29uZHMuIElmIHRoZSBtZXRob2QgaXMgY2FsbGVkXG4gKiBhZ2FpbiBiZWZvcmUgdGhlIHRpbWVvdXQgZXhwaXJlcywgdGhlIHByZXZpb3VzIGNhbGwgd2lsbCBiZVxuICogYWJvcnRlZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vYXN5bmMvZGVib3VuY2UudHNcIjtcbiAqXG4gKiBhd2FpdCBBcnJheS5mcm9tQXN5bmMoXG4gKiAgIERlbm8ud2F0Y2hGcygnLi8nKSxcbiAqICAgZGVib3VuY2UoKGV2ZW50KSA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coJ1slc10gJXMnLCBldmVudC5raW5kLCBldmVudC5wYXRoc1swXSk7XG4gKiAgIH0sIDIwMCksXG4gKiApO1xuICogLy8gd2FpdCAyMDBtcyAuLi5cbiAqIC8vIG91dHB1dDogRnVuY3Rpb24gZGVib3VuY2VkIGFmdGVyIDIwMG1zIHdpdGggYmF6XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZm4gICAgVGhlIGZ1bmN0aW9uIHRvIGRlYm91bmNlLlxuICogQHBhcmFtIHdhaXQgIFRoZSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byBkZWxheSB0aGUgZnVuY3Rpb24uXG4gKi9cbi8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gZGVib3VuY2U8VCBleHRlbmRzIEFycmF5PGFueT4+KFxuICBmbjogKHRoaXM6IERlYm91bmNlZEZ1bmN0aW9uPFQ+LCAuLi5hcmdzOiBUKSA9PiB2b2lkLFxuICB3YWl0OiBudW1iZXIsXG4pOiBEZWJvdW5jZWRGdW5jdGlvbjxUPiB7XG4gIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgbGV0IGZsdXNoOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICBjb25zdCBkZWJvdW5jZWQ6IERlYm91bmNlZEZ1bmN0aW9uPFQ+ID0gKCguLi5hcmdzOiBUKSA9PiB7XG4gICAgZGVib3VuY2VkLmNsZWFyKCk7XG4gICAgZmx1c2ggPSAoKSA9PiB7XG4gICAgICBkZWJvdW5jZWQuY2xlYXIoKTtcbiAgICAgIGZuLmNhbGwoZGVib3VuY2VkLCAuLi5hcmdzKTtcbiAgICB9O1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGZsdXNoLCB3YWl0KTtcbiAgfSkgYXMgRGVib3VuY2VkRnVuY3Rpb248VD47XG5cbiAgZGVib3VuY2VkLmNsZWFyID0gKCkgPT4ge1xuICAgIGlmICh0eXBlb2YgdGltZW91dCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICBmbHVzaCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGRlYm91bmNlZC5mbHVzaCA9ICgpID0+IHtcbiAgICBmbHVzaD8uKCk7XG4gIH07XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRlYm91bmNlZCwgXCJwZW5kaW5nXCIsIHtcbiAgICBnZXQ6ICgpID0+IHR5cGVvZiB0aW1lb3V0ID09PSBcIm51bWJlclwiLFxuICB9KTtcblxuICByZXR1cm4gZGVib3VuY2VkO1xufVxuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VSZWR1Y2VyIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBjb21wYXJlQXNlIH0gZnJvbSBcIi4vc29ydC50c1wiO1xuaW1wb3J0IHsgQ2FuZGlkYXRlIH0gZnJvbSBcIi4vc291cmNlLnRzXCI7XG5pbXBvcnQgeyBNYXRjaEluZm8gfSBmcm9tIFwiLi9zZWFyY2gudHNcIjtcbmltcG9ydCB7IGNhbmNlbGFibGVTZWFyY2ggfSBmcm9tIFwiLi9jYW5jZWxhYmxlU2VhcmNoLnRzXCI7XG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gXCIuL2RlcHMvYXN5bmMudHNcIjtcbmltcG9ydCB7IGNyZWF0ZURlYnVnIH0gZnJvbSBcIi4vZGVwcy9kZWJ1Zy50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVEZWJ1ZyhcInNjcmFwYm94LXNlbGVjdC1zdWdnZXN0aW9uOnVzZVNlYXJjaC50c1wiKTtcblxuZXhwb3J0IGludGVyZmFjZSBJdGVtIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGlzdDogbnVtYmVyO1xuICBwcm9qZWN0czogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoUmVzdWx0IHtcbiAgLyoqIOWQhHByb2plY3Tjga7kuKbjgbPpoIbjgpLmsbrjgoHjgovlgKQgKi9cbiAgcHJvamVjdFNjb3JlOiBNYXA8c3RyaW5nLCBudW1iZXI+O1xuICAvKiog5qSc57Si57WQ5p6cICovXG4gIGl0ZW1zOiBJdGVtW107XG4gIC8qKiDmpJzntKLjga7pgLLmjZfnjocgKi9cbiAgcHJvZ3Jlc3M6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hBY3Rpb24ge1xuICAvKiog5qSc57Si44KS5a6f6KGM44GZ44KLXG4gICAqXG4gICAqIEBwYXJhbSBxdWVyeSDmpJzntKLjgq/jgqjjg6pcbiAgICovXG4gIHNlYXJjaDogKHF1ZXJ5OiBzdHJpbmcpID0+IHZvaWQ7XG5cbiAgLyoqIOOCveODvOOCueOCkuabtOaWsOOBl+OAgeWGjeaknOe0ouOBmeOCi1xuICAgKlxuICAgKiBAcGFyYW0gc291cmNlIOaWsOOBl+OBhOOCveODvOOCuVxuICAgKi9cbiAgdXBkYXRlOiAoc291cmNlOiBDYW5kaWRhdGVbXSkgPT4gdm9pZDtcbn1cblxuLyoqIOOBguOBhOOBvuOBhOaknOe0ouOBmeOCi2hvb2tzICovXG5leHBvcnQgY29uc3QgdXNlU2VhcmNoID0gKFxuICBpbml0aWFsU291cmNlOiBDYW5kaWRhdGVbXSxcbik6IFtTZWFyY2hSZXN1bHQgfCB1bmRlZmluZWQsIFNlYXJjaEFjdGlvbl0gPT4ge1xuICBjb25zdCBleGVjdXRlU2VhcmNoOiBTZWFyY2hlciA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIHF1ZXJ5LFxuICAgICAgc291cmNlLFxuICAgICAgZXhlY3V0ZWRCeVNvdXJjZVVwZGF0ZSxcbiAgICApID0+IHtcbiAgICAgIGxldCBhYm9ydGVkID0gZmFsc2U7XG4gICAgICBjb25zdCBpdGVyYXRvciA9IGNhbmNlbGFibGVTZWFyY2gocXVlcnksIHNvdXJjZSwge1xuICAgICAgICBjaHVuazogNTAwMCxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBydW46IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAvLyDjgr3jg7zjgrnmm7TmlrDjgpLjg4jjg6rjgqzjg7zjgavjgZfjgZ/lho3mpJzntKLjga/jgIHjgZnjgbnjgabmpJzntKLjgZfntYLjgo/jgaPjgabjgYvjgonov5TjgZlcbiAgICAgICAgICBpZiAoZXhlY3V0ZWRCeVNvdXJjZVVwZGF0ZSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhY2s6IChDYW5kaWRhdGUgJiBNYXRjaEluZm8pW10gPSBbXTtcbiAgICAgICAgICAgIGZvciBhd2FpdCAoY29uc3QgW2NhbmRpZGF0ZXNdIG9mIGl0ZXJhdG9yKSB7XG4gICAgICAgICAgICAgIGlmIChhYm9ydGVkKSByZXR1cm47XG4gICAgICAgICAgICAgIHN0YWNrLnB1c2goLi4uY2FuZGlkYXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaXNwYXRjaCh7IHByb2dyZXNzOiAxLjAsIGNhbmRpZGF0ZXM6IHN0YWNrIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBkZWJvdW5jZWREaXNwYXRjaCA9IGRlYm91bmNlKGRpc3BhdGNoLCA1MDApO1xuICAgICAgICAgIGxldCByZXR1cm5lZCA9IGZhbHNlO1xuICAgICAgICAgIGxldCBzdGFjazogKENhbmRpZGF0ZSAmIE1hdGNoSW5mbylbXSA9IFtdO1xuICAgICAgICAgIGZvciBhd2FpdCAoY29uc3QgW2NhbmRpZGF0ZXMsIHByb2dyZXNzXSBvZiBpdGVyYXRvcikge1xuICAgICAgICAgICAgaWYgKGFib3J0ZWQpIHtcbiAgICAgICAgICAgICAgZGVib3VuY2VkRGlzcGF0Y2guY2xlYXIoKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g6Z2e56C05aOK55qE44Grc3RhY2vjgavov73liqDjgZnjgovjgZPjgajjgafjgIFgcmVkdWNlcmDlhoXjgafjga5gPT09YOavlOi8g+OBjOWKueOBj+OCiOOBhuOBq+OBmeOCi1xuICAgICAgICAgICAgc3RhY2sgPSBbLi4uc3RhY2ssIC4uLmNhbmRpZGF0ZXNdO1xuXG4gICAgICAgICAgICAvLyDpgLLmjZfnjofjgpLmm7TmlrDjgZnjgotcbiAgICAgICAgICAgIGRpc3BhdGNoKHsgcHJvZ3Jlc3MgfSk7XG5cbiAgICAgICAgICAgIC8vIOimi+OBpOOBi+OCieOBquOBkeOCjOOBsOabtOaWsOOBl+OBquOBhFxuICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXMubGVuZ3RoID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICAgICAgLy8gNTAwbXPjgZTjgajjgavov5TljbTjgZnjgotcbiAgICAgICAgICAgIGRlYm91bmNlZERpc3BhdGNoKHsgcHJvZ3Jlc3MsIGNhbmRpZGF0ZXM6IHN0YWNrIH0pO1xuXG4gICAgICAgICAgICAvLyDliJ3lm57jga/ljbPluqfjgavntZDmnpzjgpLov5TjgZlcbiAgICAgICAgICAgIGlmICghcmV0dXJuZWQpIHtcbiAgICAgICAgICAgICAgZGVib3VuY2VkRGlzcGF0Y2guZmx1c2goKTtcbiAgICAgICAgICAgICAgcmV0dXJuZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyDmnIDkvY7kuIDluqbjga/ov5TljbTjgZnjgotcbiAgICAgICAgICAvLyDjgb7jgZ/jgIF0aW1lcuOBjOe1guS6huOBl+OBpuOBhOOBquOBi+OBo+OBn+WgtOWQiOOBr+OAgeOBneOCjOOCkuatouOCgeOBpuS7o+OCj+OCiuOBq+OBk+OBk+OBp+Wun+ihjOOBmeOCi1xuICAgICAgICAgIGRlYm91bmNlZERpc3BhdGNoKHsgcHJvZ3Jlc3M6IDEuMCwgY2FuZGlkYXRlczogc3RhY2sgfSk7XG4gICAgICAgICAgZGVib3VuY2VkRGlzcGF0Y2guZmx1c2goKTtcbiAgICAgICAgfSxcbiAgICAgICAgYWJvcnQ6ICgpID0+IGFib3J0ZWQgPSB0cnVlLFxuICAgICAgfTtcbiAgICB9LFxuICAgIFtdLFxuICApO1xuICBjb25zdCBbdXNlU2VhcmNoU3RhdGUsIGRpc3BhdGNoXSA9IHVzZVJlZHVjZXIoXG4gICAgdXNlTWVtbygoKSA9PiBjcmVhdGVSZWR1Y2VyKGV4ZWN1dGVTZWFyY2gpLCBbZXhlY3V0ZVNlYXJjaF0pLFxuICAgIHtcbiAgICAgIHNvdXJjZTogaW5pdGlhbFNvdXJjZSxcbiAgICB9LFxuICApO1xuXG4gIHJldHVybiBbXG4gICAgdXNlTWVtbyhcbiAgICAgICgpOiBTZWFyY2hSZXN1bHQgfCB1bmRlZmluZWQgPT4ge1xuICAgICAgICBpZiAoIWlzU2VhcmNoaW5nKHVzZVNlYXJjaFN0YXRlKSkgcmV0dXJuO1xuXG4gICAgICAgIC8vIOS4puOBueabv+OBiCAmIOWKoOW3peOBl+OBpui/lOWNtOOBmeOCi1xuICAgICAgICBjb25zdCBbcHJvamVjdFNjb3JlLCBpdGVtc10gPSBzb3J0QW5kU2NvcmluZyh1c2VTZWFyY2hTdGF0ZS5jYW5kaWRhdGVzKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiRGV0ZWN0IGNoYW5nZXNcIiwge1xuICAgICAgICAgIHByb2dyZXNzOiB1c2VTZWFyY2hTdGF0ZS5wcm9ncmVzcyxcbiAgICAgICAgICBpdGVtcyxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcHJvZ3Jlc3M6IHVzZVNlYXJjaFN0YXRlLnByb2dyZXNzLFxuICAgICAgICAgIHByb2plY3RTY29yZSxcbiAgICAgICAgICBpdGVtcyxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBbdXNlU2VhcmNoU3RhdGVdLFxuICAgICksXG4gICAge1xuICAgICAgc2VhcmNoOiB1c2VDYWxsYmFjaygocXVlcnk6IHN0cmluZykgPT4gZGlzcGF0Y2goeyBxdWVyeSB9KSwgW10pLFxuICAgICAgdXBkYXRlOiB1c2VDYWxsYmFjaygoc291cmNlOiBDYW5kaWRhdGVbXSkgPT4gZGlzcGF0Y2goeyBzb3VyY2UgfSksIFtdKSxcbiAgICB9LFxuICBdO1xufTtcblxudHlwZSBTZWFyY2hlciA9IChcbiAgc3RhdGU6IHN0cmluZyxcbiAgc291cmNlOiBDYW5kaWRhdGVbXSxcbiAgZXhlY3V0ZWRCeVNvdXJjZVVwZGF0ZTogYm9vbGVhbixcbikgPT4ge1xuICBydW46ICgpID0+IFByb21pc2U8dm9pZD47XG4gIGFib3J0OiAoKSA9PiB2b2lkO1xufTtcblxuaW50ZXJmYWNlIEpvYiB7XG4gIGRvbmU6IFByb21pc2U8dm9pZD47XG4gIGFib3J0OiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG5pbnRlcmZhY2UgSWRsZVN0YXRlIHtcbiAgc291cmNlOiBDYW5kaWRhdGVbXTtcbn1cbmludGVyZmFjZSBTZWFyY2hpbmdTdGF0ZSB7XG4gIHNvdXJjZTogQ2FuZGlkYXRlW107XG4gIHF1ZXJ5OiBzdHJpbmc7XG4gIGpvYjogSm9iO1xuICBwcm9ncmVzczogbnVtYmVyO1xuICBjYW5kaWRhdGVzOiAoQ2FuZGlkYXRlICYgTWF0Y2hJbmZvKVtdO1xufVxuY29uc3QgaXNTZWFyY2hpbmcgPSAoc3RhdGU6IFN0YXRlKTogc3RhdGUgaXMgU2VhcmNoaW5nU3RhdGUgPT4gXCJxdWVyeVwiIGluIHN0YXRlO1xudHlwZSBTdGF0ZSA9IElkbGVTdGF0ZSB8IFNlYXJjaGluZ1N0YXRlO1xudHlwZSBBY3Rpb24gPSB7IHNvdXJjZTogQ2FuZGlkYXRlW10gfSB8IHsgcXVlcnk6IHN0cmluZyB9IHwge1xuICBwcm9ncmVzczogbnVtYmVyO1xuICBjYW5kaWRhdGVzPzogKENhbmRpZGF0ZSAmIE1hdGNoSW5mbylbXTtcbn07XG5cbmNvbnN0IGNyZWF0ZVJlZHVjZXIgPSAoXG4gIHNlYXJjaGVyOiBTZWFyY2hlcixcbikgPT5cbihzdGF0ZTogU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogU3RhdGUgPT4ge1xuICBpZiAoXCJxdWVyeVwiIGluIGFjdGlvbikge1xuICAgIGNvbnN0IHByZXZRdWVyeSA9IGlzU2VhcmNoaW5nKHN0YXRlKSA/IHN0YXRlLnF1ZXJ5IDogXCJcIjtcbiAgICBpZiAoYWN0aW9uLnF1ZXJ5ID09PSBwcmV2UXVlcnkpIHJldHVybiBzdGF0ZTtcbiAgICBjb25zdCBwcmV2Sm9iID0gaXNTZWFyY2hpbmcoc3RhdGUpID8gc3RhdGUuam9iIDogdW5kZWZpbmVkO1xuICAgIGlmICghYWN0aW9uLnF1ZXJ5KSB7XG4gICAgICBwcmV2Sm9iPy5hYm9ydD8uKCk7XG4gICAgICByZXR1cm4geyBzb3VyY2U6IHN0YXRlLnNvdXJjZSB9O1xuICAgIH1cbiAgICBjb25zdCB7IHJ1biwgYWJvcnQgfSA9IHNlYXJjaGVyKGFjdGlvbi5xdWVyeSwgc3RhdGUuc291cmNlLCBmYWxzZSk7XG4gICAgLy8g5YmN5Zue44Gu5qSc57Si44KS5Lit5pat44GX44Gm44GL44KJ5paw44GX44GE5qSc57Si44KS5a6f6KGM44GZ44KLXG4gICAgY29uc3QgZG9uZSA9IHByZXZKb2I/LmFib3J0Py4oKT8udGhlbj8uKHJ1bikgPz8gcnVuKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHF1ZXJ5OiBhY3Rpb24ucXVlcnksXG4gICAgICBzb3VyY2U6IHN0YXRlLnNvdXJjZSxcbiAgICAgIGpvYjoge1xuICAgICAgICBkb25lLFxuICAgICAgICBhYm9ydDogKCkgPT4ge1xuICAgICAgICAgIGFib3J0KCk7XG4gICAgICAgICAgcmV0dXJuIGRvbmU7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcHJvZ3Jlc3M6IDAsXG4gICAgICAvLyDmpJzntKLkuK0gKOWJjeWbnuOBrnF1ZXJ544GM56m644Gn44Gq44GEKeOBr+WJjeWbnuOBrue1kOaenOOCkua2iOOBleOBmuOBq+ihqOekuuOBmeOCi1xuICAgICAgLy8g44Gn44Gq44GE44Go5paH5a2X5YWl5Yqb44GZ44KL44Gf44Gz44GrY29tcG9uZW5044GM44Oq44K744OD44OI44GV44KM44Gm44GX44G+44GE44CB5aSn5aSJ44Gh44KJ44Gk44GPXG4gICAgICBjYW5kaWRhdGVzOiAhcHJldlF1ZXJ5IHx8ICFpc1NlYXJjaGluZyhzdGF0ZSkgPyBbXSA6IHN0YXRlLmNhbmRpZGF0ZXMsXG4gICAgfTtcbiAgfVxuICBpZiAoXCJzb3VyY2VcIiBpbiBhY3Rpb24pIHtcbiAgICAvLyDmpJzntKLkuK3jgafjgarjgZHjgozjgbDjgIHjgr3jg7zjgrnjgpLmm7TmlrDjgZnjgovjgaDjgZFcbiAgICBpZiAoIWlzU2VhcmNoaW5nKHN0YXRlKSkge1xuICAgICAgcmV0dXJuIGFjdGlvbi5zb3VyY2UgPT09IHN0YXRlLnNvdXJjZSA/IHN0YXRlIDogYWN0aW9uO1xuICAgIH1cbiAgICBjb25zdCB7IHNvdXJjZTogcHJldlNvdXJjZSwgam9iOiBwcmV2Sm9iLCAuLi5yZXN0IH0gPSBzdGF0ZTtcbiAgICBpZiAoYWN0aW9uLnNvdXJjZSA9PT0gcHJldlNvdXJjZSkgcmV0dXJuIHN0YXRlO1xuICAgIGNvbnN0IHsgcnVuLCBhYm9ydCB9ID0gc2VhcmNoZXIoc3RhdGUucXVlcnksIHByZXZTb3VyY2UsIGZhbHNlKTtcbiAgICAvLyDliY3lm57jga7mpJzntKLjgYzntYLjgo/jgovjgb7jgaflvoXjgaPjgabjgYvjgonmlrDjgZfjgYTmpJzntKLjgpLlrp/ooYzjgZnjgotcbiAgICBjb25zdCBkb25lID0gcHJldkpvYi5kb25lLnRoZW4ocnVuKTtcbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlOiBhY3Rpb24uc291cmNlLFxuICAgICAgam9iOiB7XG4gICAgICAgIGRvbmUsXG4gICAgICAgIGFib3J0OiAoKSA9PlxuICAgICAgICAgIC8vIOWJjeWbnuOBruaknOe0ouOCkuS4reaWreOBl+OBpuOBi+OCieOAgeS7iuWbnuOBruaknOe0ouOCkuS4reaWreOBmeOCi1xuICAgICAgICAgIHByZXZKb2IuYWJvcnQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGFib3J0KCk7XG4gICAgICAgICAgICByZXR1cm4gZG9uZTtcbiAgICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgICAuLi5yZXN0LFxuICAgIH07XG4gIH1cbiAgLy8g5qSc57Si5Lit44Gn44Gq44GE44Go44GN44Gr5p2l44Gf5qSc57Si57WQ5p6c44Gv54Sh6KaW44GZ44KLXG4gIGlmICghaXNTZWFyY2hpbmcoc3RhdGUpKSByZXR1cm4gc3RhdGU7XG5cbiAgaWYgKCFhY3Rpb24uY2FuZGlkYXRlcykge1xuICAgIGNvbnN0IHsgcHJvZ3Jlc3M6IHByZXZQcm9ncmVzcywgLi4ucmVzdCB9ID0gc3RhdGU7XG4gICAgcmV0dXJuIHByZXZQcm9ncmVzcyA9PT0gYWN0aW9uLnByb2dyZXNzXG4gICAgICA/IHN0YXRlXG4gICAgICA6IHsgcHJvZ3Jlc3M6IGFjdGlvbi5wcm9ncmVzcywgLi4ucmVzdCB9O1xuICB9XG5cbiAgY29uc3QgeyBjYW5kaWRhdGVzOiBwcmV2Q2FuZGlkYXRlcywgcHJvZ3Jlc3M6IHByZXZQcm9ncmVzcywgLi4ucmVzdCB9ID0gc3RhdGU7XG5cbiAgcmV0dXJuIHByZXZDYW5kaWRhdGVzID09PSBhY3Rpb24uY2FuZGlkYXRlcyAmJlxuICAgICAgcHJldlByb2dyZXNzID09PSBhY3Rpb24ucHJvZ3Jlc3NcbiAgICA/IHN0YXRlXG4gICAgOiB7XG4gICAgICBjYW5kaWRhdGVzOiBhY3Rpb24uY2FuZGlkYXRlcyA/PyBwcmV2Q2FuZGlkYXRlcyxcbiAgICAgIHByb2dyZXNzOiBhY3Rpb24ucHJvZ3Jlc3MsXG4gICAgICAuLi5yZXN0LFxuICAgIH07XG59O1xuXG4vKiog5qSc57Si57WQ5p6c44KS5Lim44G55pu/44GI44CBcHJvamVjdOOBlOOBqOOBq+OCueOCs+OCouODquODs+OCsOOBmeOCi1xuICpcbiAqIEBwYXJhbSBjYW5kaWRhdGVzIOaknOe0oue1kOaenFxuICogQHJldHVybnMgcHJvamVjdOOBlOOBqOOBruOCueOCs+OCouOBqOOAgeS4puOBs+abv+OBiOOBn+aknOe0oue1kOaenFxuICovXG5jb25zdCBzb3J0QW5kU2NvcmluZyA9IChcbiAgY2FuZGlkYXRlczogKENhbmRpZGF0ZSAmIE1hdGNoSW5mbylbXSxcbik6IFtNYXA8c3RyaW5nLCBudW1iZXI+LCBJdGVtW11dID0+IHtcbiAgY29uc3QgcHJvamVjdFNjb3JlID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgY29uc3QgaXRlbXM6IEl0ZW1bXSA9IFtdO1xuICBmb3IgKGNvbnN0IHBhZ2Ugb2YgY2FuZGlkYXRlcy5zb3J0KGNvbXBhcmVBc2UpKSB7XG4gICAgY29uc3QgcHJvamVjdHMgPSBwYWdlLm1ldGFkYXRhLm1hcCgoeyBwcm9qZWN0IH0pID0+IHByb2plY3QpO1xuXG4gICAgLy8gc2NvcmXoqIjnrpdcbiAgICAvLyDjgZPjga7lgKTjgafjgIFwcm9qZWN057We44KK6L6844G/44OR44ON44Or44Gn44Gu5Lim44Gz6aCG44KS5rG644KB44KLXG4gICAgZm9yIChjb25zdCBwcm9qZWN0IG9mIHByb2plY3RzKSB7XG4gICAgICBwcm9qZWN0U2NvcmUuc2V0KFxuICAgICAgICBwcm9qZWN0LFxuICAgICAgICAocHJvamVjdFNjb3JlLmdldChwcm9qZWN0KSA/PyAwKSArIDAuNSAqKiBwYWdlLmRpc3QsXG4gICAgICApO1xuICAgIH1cblxuICAgIGl0ZW1zLnB1c2goe1xuICAgICAgdGl0bGU6IHBhZ2UudGl0bGUsXG4gICAgICBkaXN0OiBwYWdlLmRpc3QsXG4gICAgICBwcm9qZWN0cyxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBbcHJvamVjdFNjb3JlLCBpdGVtc107XG59O1xuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5cbi8qKiBSZWFjdOOBruWkluOBq+WApOOCkuWFrOmWi+OBmeOCi2hvb2tzICovXG5leHBvcnQgY29uc3QgdXNlRXhwb3J0cyA9IDxcbiAgRXhwb3J0TmFtZXMgZXh0ZW5kcyBzdHJpbmcsXG4gIEV4cG9ydE9iamVjdCBleHRlbmRzIFJlY29yZDxFeHBvcnROYW1lcywgdW5rbm93bj4sXG4+KFxuICBleHBvcnRlcjogKFxuICAgIGV4cG9ydE9iamVjdDogRXhwb3J0T2JqZWN0IHwgUmVjb3JkPEV4cG9ydE5hbWVzLCB1bmRlZmluZWQ+LFxuICApID0+IHZvaWQsXG4gIGV4cG9ydE9iamVjdDogRXhwb3J0T2JqZWN0LFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxFeHBvcnRPYmplY3Q+KHsgLi4uZXhwb3J0T2JqZWN0IH0pO1xuICB1c2VFZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgT2JqZWN0LmFzc2lnbihyZWYuY3VycmVudCwgZXhwb3J0T2JqZWN0KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGV4cG9ydE9iamVjdCkpIHtcbiAgICAgICAgICBkZWxldGUgcmVmLmN1cnJlbnRba2V5IGFzIEV4cG9ydE5hbWVzXTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LFxuICAgIFsuLi5PYmplY3Qua2V5cyhleHBvcnRPYmplY3QpXS5zb3J0KCkubWFwKChrZXkpID0+XG4gICAgICBleHBvcnRPYmplY3Rba2V5IGFzIEV4cG9ydE5hbWVzXVxuICAgICksXG4gICk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZXhwb3J0ZXIocmVmLmN1cnJlbnQpO1xuICB9LCBbZXhwb3J0ZXJdKTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuLyoqIEBqc3hGcmFnIEZyYWdtZW50ICovXG5cbmltcG9ydCB7IEZyYWdtZW50LCBoLCB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IENvbXBsZXRpb24sIE9wZXJhdG9ycyBhcyBPcGVyYXRvcnNCYXNlIH0gZnJvbSBcIi4vQ29tcGxldGlvbi50c3hcIjtcbmltcG9ydCB7IHVzZVNvdXJjZSB9IGZyb20gXCIuL3VzZVNvdXJjZS50c1wiO1xuaW1wb3J0IHsgVXNlckNTUyB9IGZyb20gXCIuL1VzZXJDU1MudHN4XCI7XG5pbXBvcnQgeyBTZWxlY3RJbml0IH0gZnJvbSBcIi4vdXNlU2VsZWN0LnRzXCI7XG5pbXBvcnQgeyBDU1MgfSBmcm9tIFwiLi9DU1MudHN4XCI7XG5pbXBvcnQgeyB1c2VMaWZlY3ljbGUgfSBmcm9tIFwiLi91c2VMaWZlY3ljbGUudHNcIjtcbmltcG9ydCB7IHVzZVNlYXJjaCB9IGZyb20gXCIuL3VzZVNlYXJjaC50c1wiO1xuaW1wb3J0IHsgdXNlRXhwb3J0cyB9IGZyb20gXCIuL3VzZUV4cG9ydHMudHNcIjtcblxuLyoqIOWklumDqOmWi+aUvueUqEFQSSAqL1xuZXhwb3J0IGludGVyZmFjZSBPcGVyYXRvcnMge1xuICAvKiog5qyh5YCZ6KOc44KS6YG45oqe44GZ44KLXG4gICAqXG4gICAqIEByZXR1cm4g6KOc5a6M5YCZ6KOc44GM44Gq44GR44KM44GwYGZhbHNlYFxuICAgKi9cbiAgc2VsZWN0TmV4dDogKGluaXQ/OiBTZWxlY3RJbml0KSA9PiBib29sZWFuO1xuXG4gIC8qKiDliY3lgJnoo5zjgpLpgbjmip7jgZnjgotcbiAgICpcbiAgICogQHJldHVybiDoo5zlrozlgJnoo5zjgYzjgarjgZHjgozjgbBgZmFsc2VgXG4gICAqL1xuICBzZWxlY3RQcmV2OiAoaW5pdD86IFNlbGVjdEluaXQpID0+IGJvb2xlYW47XG5cbiAgLyoqIOacgOWIneOBruWAmeijnOOCkumBuOaKnuOBmeOCi1xuICAgKlxuICAgKiBAcmV0dXJuIOijnOWujOWAmeijnOOBjOOBquOBkeOCjOOBsGBmYWxzZWBcbiAgICovXG4gIHNlbGVjdEZpcnN0OiAoKSA9PiBib29sZWFuO1xuXG4gIC8qKiDmnIDlvozjga7lgJnoo5zjgpLpgbjmip7jgZnjgotcbiAgICpcbiAgICogQHJldHVybiDoo5zlrozlgJnoo5zjgYzjgarjgZHjgozjgbBgZmFsc2VgXG4gICAqL1xuICBzZWxlY3RMYXN0OiAoKSA9PiBib29sZWFuO1xuXG4gIC8qKiDnj77lnKjpgbjmip7jgZfjgabjgYTjgovlgJnoo5zjgafoo5zlrozjgpLlrp/ooYzjgZnjgotcbiAgICpcbiAgICogQHJldHVybiDoo5zlrozjgpLlrp/ooYzjgZfjgarjgYvjgaPjgZ/jgolgZmFsc2VgXG4gICAqL1xuICBjb25maXJtOiAoKSA9PiBib29sZWFuO1xuXG4gIC8qKiDkuIDmmYLnmoTjgavoo5zlrozjgpLkuK3mlq3jgZnjgotcbiAgICpcbiAgICog5LiA5pem6KOc5a6M5p2h5Lu244GL44KJ5oqc44GR44KL44G+44Gn6KOc5a6M44KS5a6f6KGM44GX44Gq44GEXG4gICAqXG4gICAqIEByZXR1cm4g6KOc5a6M44GM6ZaL5aeL44GV44KM44Gm44GE44Gq44GR44KM44GwYGZhbHNlYFxuICAgKi9cbiAgY2FuY2VsOiAoKSA9PiBib29sZWFuO1xuXG4gIC8qKiDjgZPjga5Vc2VyU2NyaXB044KS5pyJ5Yq55YyW44GZ44KLXG4gICAqXG4gICAqIGRlZmF1bHTjgafmnInlirlcbiAgICovXG4gIGVuYWJsZTogKCkgPT4gdm9pZDtcblxuICAvKiog44GT44GuVXNlclNjcmlwdOOCkueEoeWKueWMluOBmeOCiyAqL1xuICBkaXNhYmxlOiAoKSA9PiB2b2lkO1xufVxuXG4vKiog5aSW6YOo6ZaL5pS+55SoQVBJ44Gu5Yid5pyf5YCkICovXG5leHBvcnQgY29uc3Qgb3BJbml0OiBPcGVyYXRvcnNCYXNlID0ge1xuICBzZWxlY3ROZXh0OiAoKSA9PiBmYWxzZSxcbiAgc2VsZWN0UHJldjogKCkgPT4gZmFsc2UsXG4gIHNlbGVjdEZpcnN0OiAoKSA9PiBmYWxzZSxcbiAgc2VsZWN0TGFzdDogKCkgPT4gZmFsc2UsXG4gIGNvbmZpcm06ICgpID0+IGZhbHNlLFxuICBjYW5jZWw6ICgpID0+IGZhbHNlLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGludGVyZmFjZSBBcHBQcm9wcyB7XG4gIC8qKiDooajnpLrjgZnjgovmnIDlpKflgJnoo5zmlbAgKi9cbiAgbGltaXQ6IG51bWJlcjtcbiAgY2FsbGJhY2s6IChvcGVyYXRvcnM6IE9wZXJhdG9ycyB8IFJlY29yZDxrZXlvZiBPcGVyYXRvcnMsIHVuZGVmaW5lZD4pID0+IHZvaWQ7XG4gIHByb2plY3RzOiBTZXQ8c3RyaW5nPjtcbiAgbWFyazogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgVVJMPjtcbiAgc3R5bGU6IHN0cmluZyB8IFVSTDtcbiAgZW5hYmxlU2VsZlByb2plY3RPblN0YXJ0OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgQXBwID0gKHByb3BzOiBBcHBQcm9wcykgPT4ge1xuICBjb25zdCBzb3VyY2UgPSB1c2VTb3VyY2UocHJvcHMucHJvamVjdHMpO1xuICBjb25zdCBbc2VhcmNoUmVzdWx0LCB7IHVwZGF0ZSwgc2VhcmNoIH1dID0gdXNlU2VhcmNoKHNvdXJjZSk7XG4gIGNvbnN0IHsgc3RhdGUsIHNldEVuYWJsZSwgLi4ub3BzIH0gPSB1c2VMaWZlY3ljbGUoKTtcblxuICB1cGRhdGUoc291cmNlKTtcbiAgc2VhcmNoKFxuICAgIHN0YXRlLnR5cGUgPT09IFwiY29tcGxldGlvblwiXG4gICAgICA/IHN0YXRlLmNvbnRleHQgPT09IFwiaW5wdXRcIiA/IHN0YXRlLnF1ZXJ5LnNsaWNlKDEsIC0xKSA6IHN0YXRlLnF1ZXJ5XG4gICAgICA6IFwiXCIsXG4gICk7XG5cbiAgLy8gQVBJ5o+Q5L6bXG4gIGNvbnN0IFtvcGVyYXRvcnMsIHNldE9wZXJhdG9yc10gPSB1c2VTdGF0ZTxPcGVyYXRvcnNCYXNlIHwgdW5kZWZpbmVkPigpO1xuICBjb25zdCB7IGNhbGxiYWNrLCBzdHlsZSwgLi4ub3B0aW9ucyB9ID0gcHJvcHM7XG4gIHVzZUV4cG9ydHMoY2FsbGJhY2ssIHtcbiAgICBlbmFibGU6IHVzZUNhbGxiYWNrKCgpID0+IHNldEVuYWJsZSh0cnVlKSwgW10pLFxuICAgIGRpc2FibGU6IHVzZUNhbGxiYWNrKCgpID0+IHNldEVuYWJsZShmYWxzZSksIFtdKSxcbiAgICAuLi4oKHN0YXRlLnR5cGUgIT09IFwiY29tcGxldGlvblwiKSB8fCAhb3BlcmF0b3JzID8gb3BJbml0IDogb3BlcmF0b3JzKSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPENTUyAvPlxuICAgICAgPFVzZXJDU1Mgc3R5bGU9e3N0eWxlfSAvPlxuICAgICAge3N0YXRlLnR5cGUgPT09IFwiY29tcGxldGlvblwiICYmIHNlYXJjaFJlc3VsdCAmJlxuICAgICAgICAoXG4gICAgICAgICAgPENvbXBsZXRpb25cbiAgICAgICAgICAgIGNhbGxiYWNrPXtzZXRPcGVyYXRvcnN9XG4gICAgICAgICAgICB7Li4uc2VhcmNoUmVzdWx0fVxuICAgICAgICAgICAgey4uLnN0YXRlfVxuICAgICAgICAgICAgey4uLm9wc31cbiAgICAgICAgICAgIHsuLi5vcHRpb25zfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuIiwgIi8qKiBAanN4IGggKi9cblxuaW1wb3J0IHsgaCwgcmVuZGVyIH0gZnJvbSBcIi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBTZWxlY3RJbml0IH0gZnJvbSBcIi4vdXNlU2VsZWN0LnRzXCI7XG5pbXBvcnQgeyBBcHAsIE9wZXJhdG9ycyB9IGZyb20gXCIuL0FwcC50c3hcIjtcbmltcG9ydCB7IFNjcmFwYm94IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuZXhwb3J0IHR5cGUgeyBPcGVyYXRvcnMsIFNlbGVjdEluaXQgfTtcbmltcG9ydCB7IHNldERlYnVnTW9kZSB9IGZyb20gXCIuL2RlcHMvZGVidWcudHNcIjtcbmltcG9ydCB7IHNldERlYnVnTW9kZSBhcyBzZXRTdG9yYWdlRGVidWdNb2RlIH0gZnJvbSBcIi4vZGVwcy9zdG9yYWdlLnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuZXhwb3J0IGludGVyZmFjZSBTZXR1cEluaXQge1xuICAvKiog6KGo56S644GZ44KL5pyA5aSn5YCZ6KOc5pWwXG4gICAqXG4gICAqIEBkZWZhdWx0IDVcbiAgICovXG4gIGxpbWl0PzogbnVtYmVyO1xuXG4gIC8qKiBgdHJ1ZWAg44GnZGVidWcgbW9kZeOBq+OBquOCi1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGVidWc/OiBib29sZWFuO1xuXG4gIC8qKiDoo5zlrozjgr3jg7zjgrnjgavlkKvjgoHjgotwcm9qZWN0IG5hbWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbc2NyYXBib3guUHJvamVjdC5uYW1lXWBcbiAgICpcbiAgICogYGVuYWJsZVNlbGZQcm9qZWN0T25TdGFydGDjgpJgdHJ1ZWDjgavjgZnjgovjgajjgIHoh6rli5Xjgadgc2NyYXBib3guUHJvamVjdC5uYW1lYOOBjOi/veWKoOOBleOCjOOCi1xuICAgKi9cbiAgcHJvamVjdHM/OiBJdGVyYWJsZTxzdHJpbmc+O1xuXG4gIC8qKiDlgJnoo5zjga7jgr3jg7zjgrnlhYPjga7orZjliKXlrZDjgavkvb/jgYbmloflrZfliJfjgoLjgZfjgY/jga/jgqLjgqTjgrPjg7Pjga5VUkxcbiAgICpcbiAgICogZGVmYXVsdOOBoOOBqOOAgXByb2plY3QgbmFtZeOBrumgreaWh+Wtl+OBjOihqOekuuOBleOCjOOCi1xuICAgKi9cbiAgbWFyaz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IFVSTD47XG5cbiAgLyoqIOOCq+OCueOCv+ODoENTU1xuICAgKlxuICAgKiBVUkwgb3IgVVJM5paH5a2X5YiX44Gu5aC05ZCI44Gv44CBQ1NT44OV44Kh44Kk44Or44G444GuVVJM44Gg44Go44G/44Gq44GX44GmPGxpbmsgLz7jgafoqq3jgb/ovrzjgoBcbiAgICog44Gd44KM5Lul5aSW44Gu5aC05ZCI44Gv44CB44Kk44Oz44Op44Kk44OzQ1NT44Go44GX44GmPHN0eWxlIC8+44Gn6Kqt44G/6L6844KAXG4gICAqL1xuICBzdHlsZT86IFVSTCB8IHN0cmluZztcblxuICAvKiogc2NyaXB044KS5a6f6KGM44GX44Gm44GE44KLcHJvamVjdOOBruOCveODvOOCueOCkuOAgeioreWumuOBq+mWouOCj+OCieOBmueEoeadoeS7tuOBp+acieWKueOBq+OBmeOCi+OBi+OBqeOBhuOBi1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlICjjgr3jg7zjgrnjgavlkKvjgoHjgospXG4gICAqL1xuICBlbmFibGVTZWxmUHJvamVjdE9uU3RhcnQ/OiBib29sZWFuO1xufVxuXG4vKiogc2NyYXBib3gtc2VsZWN0LXN1Z2dlc3Rpb27jgpLotbfli5XjgZnjgotcbiAqXG4gKiBAcGFyYW0gaW5pdCDliJ3mnJ/oqK3lrppcbiAqIEByZXR1cm4g44GT44GuVXNlclNjcmlwdOOBruaTjeS9nOWHveaVsOOBp+ino+axuuOBleOCjOOCi1Byb21pc2VcbiAqL1xuZXhwb3J0IGNvbnN0IHNldHVwID0gKFxuICBpbml0PzogU2V0dXBJbml0LFxuKTogUHJvbWlzZTxPcGVyYXRvcnMgfCBSZWNvcmQ8a2V5b2YgT3BlcmF0b3JzLCB1bmRlZmluZWQ+PiA9PiB7XG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGFwcC5kYXRhc2V0LnVzZXJzY3JpcHROYW1lID0gXCJzY3JhcGJveC1zZWxlY3Qtc3VnZ2VzdGlvblwiO1xuICBjb25zdCBzaGFkb3dSb290ID0gYXBwLmF0dGFjaFNoYWRvdyh7IG1vZGU6IFwib3BlblwiIH0pO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZChhcHApO1xuXG4gIGNvbnN0IHtcbiAgICBsaW1pdCA9IDUsXG4gICAgZGVidWcgPSBmYWxzZSxcbiAgICBtYXJrID0ge30sXG4gICAgc3R5bGUgPSBcIlwiLFxuICAgIGVuYWJsZVNlbGZQcm9qZWN0T25TdGFydCA9IHRydWUsXG4gIH0gPSBpbml0ID8/IHt9O1xuICBjb25zdCBwcm9qZWN0cyA9IG5ldyBTZXQoW1xuICAgIC4uLihlbmFibGVTZWxmUHJvamVjdE9uU3RhcnQgPyBbc2NyYXBib3guUHJvamVjdC5uYW1lXSA6IFtdKSxcbiAgICAuLi4oaW5pdD8ucHJvamVjdHMgPz8gW3NjcmFwYm94LlByb2plY3QubmFtZV0pLFxuICBdKTtcblxuICBzZXREZWJ1Z01vZGUoZGVidWcpO1xuICBzZXRTdG9yYWdlRGVidWdNb2RlKGRlYnVnKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKFxuICAgIChyZXNvbHZlKSA9PlxuICAgICAgcmVuZGVyKFxuICAgICAgICA8QXBwXG4gICAgICAgICAgbGltaXQ9e2xpbWl0fVxuICAgICAgICAgIHByb2plY3RzPXtwcm9qZWN0c31cbiAgICAgICAgICBtYXJrPXttYXJrfVxuICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICBjYWxsYmFjaz17cmVzb2x2ZX1cbiAgICAgICAgICBlbmFibGVTZWxmUHJvamVjdE9uU3RhcnQ9e2VuYWJsZVNlbGZQcm9qZWN0T25TdGFydH1cbiAgICAgICAgLz4sXG4gICAgICAgIHNoYWRvd1Jvb3QsXG4gICAgICApLFxuICApO1xufTtcbiIsICJleHBvcnQgdHlwZSBCbG9ja3M8TGluZSBleHRlbmRzIHsgaWQ6IHN0cmluZzsgdGV4dDogc3RyaW5nIH0+ID1cbiAgcmVhZG9ubHkgTGluZVtdW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZUJsb2NrPExpbmUgZXh0ZW5kcyB7IGlkOiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9PiB7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG4gIGJsb2NrczogQmxvY2tzPExpbmU+O1xufVxuXG5leHBvcnQgY29uc3QgY29udGVudCA9IDxMaW5lIGV4dGVuZHMgeyBpZDogc3RyaW5nOyB0ZXh0OiBzdHJpbmcgfT4oXG4gIGJsb2NrczogQmxvY2tzPExpbmU+LFxuKTogc3RyaW5nID0+XG4gIGJsb2Nrcy5mbGF0TWFwKFxuICAgIChibG9jaykgPT4ge1xuICAgICAgY29uc3QgbGluZXMgPSBibG9jay5zbGljZSgxKTtcbiAgICAgIGNvbnN0IGluZGVudCA9IE1hdGgubWluKFxuICAgICAgICAuLi5saW5lcy5tYXAoKGxpbmUpID0+IGxpbmUudGV4dC5sZW5ndGggLSBsaW5lLnRleHQudHJpbVN0YXJ0KCkubGVuZ3RoKSxcbiAgICAgICk7XG4gICAgICByZXR1cm4gbGluZXMubWFwKChsaW5lKSA9PiBsaW5lLnRleHQuc2xpY2UoaW5kZW50KSk7XG4gICAgfSxcbiAgKS5qb2luKFwiXFxuXCIpLnRyaW0oKTtcbiIsICJpbXBvcnQgeyBCbG9ja3MsIENvZGVCbG9jaywgY29udGVudCB9IGZyb20gXCIuL2NvZGVCbG9jay50c1wiO1xuaW1wb3J0IHsgQmFzZUxpbmUgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlmZiB7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG4gIGNoYW5nZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogZGlmZjxcbiAgTGluZTEgZXh0ZW5kcyBCYXNlTGluZSxcbiAgTGluZTIgZXh0ZW5kcyBCYXNlTGluZSxcbiAgQmxvY2sxIGV4dGVuZHMgQ29kZUJsb2NrPExpbmUxPixcbj4oXG4gIG9sZE1hcDogTWFwPHN0cmluZywgQmxvY2sxPixcbiAgbmV3TWFwOiBNYXA8c3RyaW5nLCBCbG9ja3M8TGluZTI+Pixcbik6IEdlbmVyYXRvcjxEaWZmPiB7XG4gIGZvciAoY29uc3QgW2ZpbGVuYW1lLCBibG9ja3NdIG9mIG5ld01hcC5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBvbGRDb2RlID0gb2xkTWFwLmdldChmaWxlbmFtZSk7XG4gICAgaWYgKG9sZENvZGUgJiYgY29udGVudChvbGRDb2RlLmJsb2NrcykgPT09IGNvbnRlbnQoYmxvY2tzKSkge1xuICAgICAgeWllbGQgeyBjaGFuZ2VkOiBmYWxzZSwgZmlsZW5hbWUgfTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB5aWVsZCB7IGNoYW5nZWQ6IHRydWUsIGZpbGVuYW1lIH07XG4gIH1cbiAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBvbGRNYXAua2V5cygpKSB7XG4gICAgaWYgKG5ld01hcC5oYXMoZmlsZW5hbWUpKSBjb250aW51ZTtcbiAgICB5aWVsZCB7IGNoYW5nZWQ6IHRydWUsIGZpbGVuYW1lIH07XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtcGFyc2VyLnRzXCI7XG5pbXBvcnQgeyBCbG9ja3MgfSBmcm9tIFwiLi9jb2RlQmxvY2sudHNcIjtcblxuZXhwb3J0IGNvbnN0IHJlYWRDb2RlQmxvY2tzID0gPExpbmUgZXh0ZW5kcyB7IGlkOiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9PihcbiAgbGluZXM6IHJlYWRvbmx5IExpbmVbXSxcbik6IE1hcDxzdHJpbmcsIEJsb2NrczxMaW5lPj4gPT4ge1xuICBjb25zdCBjb2RlQmxvY2tzID0gbmV3IE1hcDxzdHJpbmcsIExpbmVbXVtdPigpO1xuICBpZiAobGluZXMubGVuZ3RoID09PSAwKSByZXR1cm4gY29kZUJsb2NrcztcbiAgY29uc3QgcGFja3MgPSBwYXJzZShcbiAgICBsaW5lcy5tYXAoKGxpbmUpID0+IGxpbmUudGV4dCkuam9pbihcIlxcblwiKSxcbiAgICB7IGhhc1RpdGxlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqIOePvuWcqOiqreOCk+OBp+OBhOOCi2BwYWNrLnJvd3Ng44Gu6KGM55Wq5Y+3ICovXG4gIGxldCBjb3VudGVyID0gMDtcblxuICBmb3IgKGNvbnN0IGJsb2NrIG9mIHBhY2tzKSB7XG4gICAgc3dpdGNoIChibG9jay50eXBlKSB7XG4gICAgICBjYXNlIFwidGl0bGVcIjpcbiAgICAgIGNhc2UgXCJsaW5lXCI6XG4gICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidGFibGVcIjpcbiAgICAgICAgY291bnRlciArPSBibG9jay5jZWxscy5sZW5ndGggKyAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJjb2RlQmxvY2tcIjoge1xuICAgICAgICBjb25zdCBibG9ja3MgPSBjb2RlQmxvY2tzLmdldChibG9jay5maWxlTmFtZSkgPz9cbiAgICAgICAgICBbXTtcbiAgICAgICAgY29uc3QgbGluZUNvdW50ID0gYmxvY2suY29udGVudC5zcGxpdChcIlxcblwiKS5sZW5ndGggKyAxO1xuICAgICAgICBibG9ja3MucHVzaChsaW5lcy5zbGljZShjb3VudGVyLCBjb3VudGVyICsgbGluZUNvdW50KSk7XG4gICAgICAgIGNvZGVCbG9ja3Muc2V0KGJsb2NrLmZpbGVOYW1lLCBibG9ja3MpO1xuICAgICAgICBjb3VudGVyICs9IGxpbmVDb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjb2RlQmxvY2tzO1xufTtcbiIsICJleHBvcnQgdHlwZSBSZXN1bHQ8VCwgRSA9IHVua25vd24+ID0geyB0eXBlOiBcInJlc29sdmVcIjsgdmFsdWU6IFQgfSB8IHtcbiAgdHlwZTogXCJyZWplY3RcIjtcbiAgdmFsdWU6IEU7XG59IHwgeyB0eXBlOiBcImNhbmNlbFwiIH07XG5leHBvcnQgY29uc3QgZGVib3VuY2UgPSA8QXJncyBleHRlbmRzIHVua25vd25bXSwgVD4oXG4gIGZ1bmM6ICguLi5hcmdzOiBBcmdzKSA9PiBQcm9taXNlPFQ+LFxuKTogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2U8UmVzdWx0PFQ+PiA9PiB7XG4gIGxldCBqb2I6IFtcbiAgICBBcmdzLFxuICAgICh2YWx1ZTogUmVzdWx0PFQ+IHwgUHJvbWlzZUxpa2U8UmVzdWx0PFQ+PikgPT4gdm9pZCxcbiAgXSB8IHVuZGVmaW5lZDtcbiAgbGV0IHJ1bm5pbmc6IFByb21pc2U8dm9pZD4gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3QgcnVuID0gYXN5bmMgKCkgPT4ge1xuICAgIHdoaWxlIChqb2IpIHtcbiAgICAgIGNvbnN0IFthcmdzLCByZXNvbHZlXSA9IGpvYjtcbiAgICAgIGpvYiA9IHVuZGVmaW5lZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZ1bmMoLi4uYXJncyk7XG4gICAgICAgIHJlc29sdmUoeyB0eXBlOiBcInJlc29sdmVcIiwgdmFsdWU6IHJlc3VsdCB9KTtcbiAgICAgIH0gY2F0Y2ggKHZhbHVlKSB7XG4gICAgICAgIHJlc29sdmUoeyB0eXBlOiBcInJlamVjdFwiLCB2YWx1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcnVubmluZyA9IHVuZGVmaW5lZDtcbiAgfTtcbiAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgY29uc3QgeyByZXNvbHZlLCBwcm9taXNlIH0gPSBQcm9taXNlLndpdGhSZXNvbHZlcnM8UmVzdWx0PFQ+PigpO1xuICAgIGpvYj8uWzFdPy4oeyB0eXBlOiBcImNhbmNlbFwiIH0pO1xuICAgIGpvYiA9IFthcmdzLCByZXNvbHZlXTtcbiAgICBydW5uaW5nID8/PSBydW4oKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfTtcbn07XG4iLCAiaW1wb3J0IHsgQmFzZUxpbmUgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyBCbG9ja3MsIENvZGVCbG9jaywgY29udGVudCB9IGZyb20gXCIuL2NvZGVCbG9jay50c1wiO1xuaW1wb3J0IHsgUHJldmlldyB9IGZyb20gXCIuL3ByZXZpZXcudHNcIjtcbmltcG9ydCB7IGdldExpbmVET00gfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LXN0ZC1icm93c2VyLnRzXCI7XG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gXCIuL2RlYm91bmNlLnRzXCI7XG5pbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi9kZWJvdW5jZS50c1wiO1xuXG5leHBvcnQgY2xhc3MgVmlld2VyPExpbmUgZXh0ZW5kcyBCYXNlTGluZT4gaW1wbGVtZW50cyBDb2RlQmxvY2s8TGluZT4ge1xuICBnZXQgZmlsZW5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZW5hbWU7XG4gIH1cbiAgZ2V0IGJsb2NrcygpOiBCbG9ja3M8TGluZT4ge1xuICAgIHJldHVybiB0aGlzLl9ibG9ja3MgPz8gW107XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9maWxlbmFtZTogc3RyaW5nLFxuICAgIHByZXZpZXc6IFByZXZpZXcsXG4gICkge1xuICAgIHRoaXMuX3ByZXZpZXcgPSBkZWJvdW5jZShhc3luYyAoYmVmb3JlLCBhZnRlciwgYXJlYSkgPT4ge1xuICAgICAgLy8gcHJldmlld2Vy44Gu5a6f6KGMXG4gICAgICB0aGlzLl9kaXNwb3NlID0gYXdhaXQgcHJldmlldyhcbiAgICAgICAgYXJlYVxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgZmlsZW5hbWU6IHRoaXMuZmlsZW5hbWUsXG4gICAgICAgICAgICBiZWZvcmUsXG4gICAgICAgICAgICBhZnRlcixcbiAgICAgICAgICAgIHJlbmRlcjogKC4uLmVsZW1lbnRzOiBOb2RlW10pID0+IHtcbiAgICAgICAgICAgICAgYXJlYS50ZXh0Q29udGVudCA9IFwiXCI7XG4gICAgICAgICAgICAgIGFyZWEuYXBwZW5kKC4uLmVsZW1lbnRzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICAgIDogeyBmaWxlbmFtZTogdGhpcy5maWxlbmFtZSwgYmVmb3JlIH0sXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlKGFmdGVyPzogQmxvY2tzPExpbmU+KTogUHJvbWlzZTxSZXN1bHQ8Ym9vbGVhbj4+IHtcbiAgICBhd2FpdCB0aGlzLl9kaXNwb3NlPy4oKTtcbiAgICBpZiAoIWFmdGVyIHx8IGNvbnRlbnQoYWZ0ZXIpID09PSBcIlwiKSB7XG4gICAgICAvLyDjgrPjg7zjg4njg5bjg63jg4Pjgq/jgYzliYrpmaTjgZXjgozjgZ/jgajjgY3jga7lh6bnkIZcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuX3ByZXZpZXcodGhpcy5ibG9ja3MpO1xuICAgICAgaWYgKHJlc3VsdC50eXBlID09PSBcImNhbmNlbFwiKSByZXR1cm4gcmVzdWx0O1xuICAgICAgaWYgKHJlc3VsdC50eXBlID09PSBcInJlamVjdFwiKSB0aHJvdyByZXN1bHQudmFsdWU7XG4gICAgICB0aGlzLl9hcmVhPy5yZW1vdmU/LigpO1xuICAgICAgdGhpcy5fc3R5bGU/LnJlbW92ZT8uKCk7XG4gICAgICB0aGlzLl9hcmVhID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fc3R5bGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9ibG9ja3MgPSB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiBcInJlc29sdmVcIiwgdmFsdWU6IHRydWUgfTtcbiAgICB9XG4gICAgY29uc3QgYmVmb3JlID0gdGhpcy5ibG9ja3M7XG4gICAgdGhpcy5fYmxvY2tzID0gYWZ0ZXI7XG5cbiAgICAvLyDmj4/nlLvpoJjln5/jga7mp4vnr4lcbiAgICB0aGlzLm1ha2VTdHlsZSgpO1xuICAgIGNvbnN0IGFyZWEgPSB0aGlzLm1ha2VBcmVhKCk7XG5cbiAgICAvLyDmjL/lhaXkvY3nva7jga7nibnlrprjgajmjL/lhaVcbiAgICBjb25zdCBpZCA9IGFmdGVyLmF0KDApPy5hdD8uKC0xKT8uaWQ7XG4gICAgY29uc3QgbGluZURPTSA9IGdldExpbmVET00oaWQpO1xuICAgIGlmICghbGluZURPTSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBcImRpdi5saW5lcyNMJHtpZH1cIiBjb3VsZCBub3QgYmUgZm91bmQuYCk7XG4gICAgfVxuICAgIGxpbmVET00uaW5zZXJ0QWRqYWNlbnRFbGVtZW50KFwiYWZ0ZXJlbmRcIiwgYXJlYSk7XG5cbiAgICAvLyDjgqTjg7Pjg4fjg7Pjg4jjgpLliY3jga7ooYzjgavov73pmo/jgZXjgZvjgotcbiAgICBjb25zdCBmaXhNYXJnaW4gPSAoKSA9PiB7XG4gICAgICBjb25zdCBpbmRlbnQgPSBsaW5lRE9NLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJpbmRlbnRcIilbMF07XG4gICAgICBpZiAoIShpbmRlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHJldHVybjtcbiAgICAgIGFyZWEuc3R5bGUubWFyZ2luTGVmdCA9IGluZGVudC5zdHlsZS5tYXJnaW5MZWZ0O1xuICAgIH07XG4gICAgdGhpcy5fb2JzZXJ2ZXI/LmRpc2Nvbm5lY3Q/LigpO1xuICAgIGZpeE1hcmdpbigpO1xuICAgIHRoaXMuX29ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZml4TWFyZ2luKTtcbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKGxpbmVET00sIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuX3ByZXZpZXcoYmVmb3JlLCBhZnRlciwgYXJlYSk7XG4gIH1cblxuICAvKiogcHJldmlld+OBruihqOekuumgmOWfn+OCkuS9nOaIkOOBmeOCiyAqL1xuICBwcml2YXRlIG1ha2VBcmVhKCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICBpZiAodGhpcy5fYXJlYSkgcmV0dXJuIHRoaXMuX2FyZWE7XG4gICAgY29uc3QgYXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgYXJlYS5jbGFzc0xpc3QuYWRkKFwic2NyYXAtcnVuXCIpO1xuICAgIGFyZWEuZGF0YXNldC5maWxlbmFtZSA9IHRoaXMuZmlsZW5hbWU7XG4gICAgdGhpcy5fYXJlYSA9IGFyZWE7XG4gICAgcmV0dXJuIGFyZWE7XG4gIH1cblxuICBwcml2YXRlIG1ha2VTdHlsZSgpOiB2b2lkIHtcbiAgICBjb25zdCBib2R5SWRzID0gdGhpcy5ibG9ja3MuZmxhdE1hcCgobGluZXMpID0+XG4gICAgICBsaW5lcy5zbGljZSgxKS5tYXAoKHsgaWQgfSkgPT4gYCNMJHtpZH1gKVxuICAgICk7XG4gICAgY29uc3QgaWRzID0gdGhpcy5ibG9ja3MuZmxhdE1hcCgobGluZXMpID0+XG4gICAgICBsaW5lcy5tYXAoKHsgaWQgfSkgPT4gYCNMJHtpZH1gKVxuICAgICk7XG5cbiAgICBpZiAoIXRoaXMuX3N0eWxlKSB7XG4gICAgICB0aGlzLl9zdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kKHRoaXMuX3N0eWxlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdHlsZS50ZXh0Q29udGVudCA9IGAubGluZXM6bm90KDpoYXMoOmlzKCR7XG4gICAgICBbLi4uaWRzXS5qb2luKFwiLFwiKVxuICAgIH0pLmN1cnNvci1saW5lKSkgOmlzKCR7Wy4uLmJvZHlJZHNdLmpvaW4oXCIsXCIpfSl7ZGlzcGxheTpub25lfWA7XG4gIH1cblxuICBwcml2YXRlIF9ibG9ja3M6IEJsb2NrczxMaW5lPiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfZGlzcG9zZTogKCgpID0+IFByb21pc2U8dm9pZD4pIHwgdW5kZWZpbmVkO1xuICAvKiog44Kz44O844OJ44OW44Ot44OD44Kv44Gu5pu05paw44KS5Y+N5pig44GZ44KLXG4gICAqXG4gICAqIEBwYXJhbSBhZnRlciDmm7TmlrDlvozjga7jgrPjg7zjg4njg5bjg63jg4Pjgq9cbiAgICogQHJldHVybnMg5YmK6Zmk44GV44KM44Gf5aC05ZCI44GvdHJ1ZVxuICAgKi9cbiAgcHJpdmF0ZSBfcHJldmlldzogKFxuICAgIGJlZm9yZTogQmxvY2tzPExpbmU+LFxuICAgIGFmdGVyPzogQmxvY2tzPExpbmU+LFxuICAgIGFyZWE/OiBIVE1MRGl2RWxlbWVudCxcbiAgKSA9PiBQcm9taXNlPFJlc3VsdDxib29sZWFuPj47XG4gIHByaXZhdGUgX2FyZWE6IEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9vYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfc3R5bGU6IEhUTUxTdHlsZUVsZW1lbnQgfCB1bmRlZmluZWQ7XG59XG4iLCAiaW1wb3J0IHsgUHJldmlldyB9IGZyb20gXCIuL3ByZXZpZXcudHNcIjtcbmltcG9ydCB7IHRha2VJbnRlcm5hbExpbmVzIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1zdGQtYnJvd3Nlci50c1wiO1xuaW1wb3J0IHsgQmFzZUxpbmUsIFNjcmFwYm94IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuaW1wb3J0IHsgZGlmZiB9IGZyb20gXCIuL2RpZmYudHNcIjtcbmltcG9ydCB7IHJlYWRDb2RlQmxvY2tzIH0gZnJvbSBcIi4vcmVhZENvZGVCbG9ja3MudHNcIjtcbmltcG9ydCB7IFZpZXdlciB9IGZyb20gXCIuL3ZpZXdlci50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJldmlld2VyIHtcbiAgd2hlbjogUmVnRXhwO1xuICBwcmV2aWV3OiBQcmV2aWV3O1xufVxuXG4vKiogU2NyYXBSdW7jgpLotbfli5XjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBzZXR1cCA9IChcbiAgeyBwcmV2aWV3ZXJzIH06IHsgcHJldmlld2VyczogUHJldmlld2VyW10gfSxcbik6ICgpID0+IHZvaWQgPT4ge1xuICBjb25zdCB2aWV3ZXJzID0gbmV3IE1hcDxzdHJpbmcsIFZpZXdlcjxCYXNlTGluZT4+KCk7XG4gIGNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgICBjb25zdCBjb2RlQmxvY2tzID0gcmVhZENvZGVCbG9ja3ModGFrZUludGVybmFsTGluZXMoKSk7XG4gICAgZm9yIChjb25zdCB7IGNoYW5nZWQsIGZpbGVuYW1lIH0gb2YgZGlmZih2aWV3ZXJzLCBjb2RlQmxvY2tzKSkge1xuICAgICAgaWYgKCFjaGFuZ2VkKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IG5ld0Jsb2NrcyA9IGNvZGVCbG9ja3MuZ2V0KGZpbGVuYW1lKTtcbiAgICAgIGxldCB2aWV3ZXIgPSB2aWV3ZXJzLmdldChmaWxlbmFtZSk7XG4gICAgICBpZiAoIXZpZXdlcikge1xuICAgICAgICBpZiAoIW5ld0Jsb2NrcykgY29udGludWU7XG4gICAgICAgIC8vIGNyZWF0ZVxuICAgICAgICBjb25zdCBjb21waWxlID0gcHJldmlld2Vycy5maW5kKCh7IHdoZW4gfSkgPT4gd2hlbi50ZXN0KGZpbGVuYW1lKSlcbiAgICAgICAgICA/LnByZXZpZXc7XG4gICAgICAgIGlmICghY29tcGlsZSkgY29udGludWU7XG4gICAgICAgIHZpZXdlciA9IG5ldyBWaWV3ZXIoZmlsZW5hbWUsIGNvbXBpbGUpO1xuICAgICAgICB2aWV3ZXJzLnNldChmaWxlbmFtZSwgdmlld2VyKTtcbiAgICAgIH1cbiAgICAgIC8vIGNyZWF0ZSBvciB1cGRhdGUgb3IgZGVsZXRlXG4gICAgICB2aWV3ZXIudXBkYXRlKG5ld0Jsb2NrcykudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVzdWx0LnR5cGUpIHtcbiAgICAgICAgICBjYXNlIFwicmVzb2x2ZVwiOlxuICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSkgdmlld2Vycy5kZWxldGUoZmlsZW5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGNhc2UgXCJyZWplY3RcIjpcbiAgICAgICAgICAgIHRocm93IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgICBjYXNlIFwiY2FuY2VsXCI6XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBhZ2VDaGFuZ2VkID0gKCkgPT4ge1xuICAgIGlmIChzY3JhcGJveC5MYXlvdXQgIT09IFwicGFnZVwiKSB7XG4gICAgICBzY3JhcGJveC5vZmYoXCJsaW5lczpjaGFuZ2VkXCIsIHVwZGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHVwZGF0ZSgpO1xuICAgIHNjcmFwYm94Lm9uKFwibGluZXM6Y2hhbmdlZFwiLCB1cGRhdGUpO1xuICB9O1xuXG4gIGhhbmRsZVBhZ2VDaGFuZ2VkKCk7XG4gIHNjcmFwYm94Lm9uKFwicGFnZTpjaGFuZ2VkXCIsIGhhbmRsZVBhZ2VDaGFuZ2VkKTtcblxuICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgc3R5bGUudGV4dENvbnRlbnQgPSBgLnNjcmFwLXJ1bntkaXNwbGF5OmJsb2NrO3dpZHRoOjk1JX1gO1xuICBkb2N1bWVudC5oZWFkLmFwcGVuZChzdHlsZSk7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBzY3JhcGJveC5vZmYoXCJwYWdlOmNoYW5nZWRcIiwgaGFuZGxlUGFnZUNoYW5nZWQpO1xuICAgIHN0eWxlLnJlbW92ZSgpO1xuICB9O1xufTtcbiIsICJleHBvcnQgY29uc3QgdG9EYXRhVVJMID0gKGJsb2I6IEJsb2IpID0+IHtcbiAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlKSA9PlxuICAgIGZpbGVSZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShmaWxlUmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpXG4gICk7XG4gIGZpbGVSZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcbiAgcmV0dXJuIHByb21pc2U7XG59O1xuIiwgImltcG9ydCB7IGNvbnRlbnQgfSBmcm9tIFwiLi4vY29kZUJsb2NrLnRzXCI7XG5pbXBvcnQgeyBQcmV2aWV3IH0gZnJvbSBcIi4uL3ByZXZpZXcudHNcIjtcbmltcG9ydCB7IHRvRGF0YVVSTCB9IGZyb20gXCIuLi9kZXBzL2R2aTJodG1sLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBwcmV2aWV3U1ZHOiBQcmV2aWV3ID0gYXN5bmMgKHByZXZpZXdJbml0KSA9PiB7XG4gIGlmICghKFwiYWZ0ZXJcIiBpbiBwcmV2aWV3SW5pdCkpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHN2ZyA9IGNvbnRlbnQocHJldmlld0luaXQuYWZ0ZXIpO1xuICBjb25zdCBkb20gPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHN2ZywgXCJpbWFnZS9zdmcreG1sXCIpO1xuICBjb25zdCBlcnJvciA9IGRvbS5xdWVyeVNlbGVjdG9yKFwicGFyc2VyZXJyb3JcIik7XG4gIC8vIGlmIGZhaWxlZCB0byBwYXJzZVxuICBpZiAoZXJyb3IpIHtcbiAgICBjb25zdCBwcmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwicHJlXCIpO1xuICAgIGNvbnN0IGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY29kZVwiKTtcbiAgICBjb2RlLmlubmVyVGV4dCA9IGVycm9yLmlubmVySFRNTDtcbiAgICBwcmUuYXBwZW5kKGNvZGUpO1xuICAgIHByZXZpZXdJbml0LnJlbmRlcihwcmUpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHVybCA9IGF3YWl0IHRvRGF0YVVSTChuZXcgQmxvYihbc3ZnXSwgeyB0eXBlOiBcImltYWdlL3N2Zyt4bWxcIiB9KSk7XG4gIGNvbnN0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7XG4gIGltZy5zcmMgPSB1cmw7XG4gIHByZXZpZXdJbml0LnJlbmRlcihpbWcpO1xufTtcbiIsICJ2YXIgd2luO1xuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHdpbiA9IHdpbmRvdztcbn0gZWxzZSBpZiAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHdpbiA9IGdsb2JhbDtcbn0gZWxzZSBpZiAodHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIpe1xuICAgIHdpbiA9IHNlbGY7XG59IGVsc2Uge1xuICAgIHdpbiA9IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdpbjtcbiIsICJpbXBvcnQgKiBhcyBfX21vZHVsZSBmcm9tIFwiZ2xvYmFsL3dpbmRvd1wiO2NvbnN0IHsgZGVmYXVsdDogX19kZWZhdWx0LCAuLi5fX3Jlc3QgfSA9IF9fbW9kdWxlO2V4cG9ydCBkZWZhdWx0IChfX2RlZmF1bHQgIT09IHVuZGVmaW5lZCA/IF9fZGVmYXVsdCA6IF9fcmVzdCk7ZXhwb3J0ICogZnJvbSBcImdsb2JhbC93aW5kb3dcIjsiLCAibW9kdWxlLmV4cG9ydHMgPSBpc0Z1bmN0aW9uXG5cbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdcblxuZnVuY3Rpb24gaXNGdW5jdGlvbiAoZm4pIHtcbiAgaWYgKCFmbikge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHZhciBzdHJpbmcgPSB0b1N0cmluZy5jYWxsKGZuKVxuICByZXR1cm4gc3RyaW5nID09PSAnW29iamVjdCBGdW5jdGlvbl0nIHx8XG4gICAgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyBcdTAwMjZcdTAwMjYgc3RyaW5nICE9PSAnW29iamVjdCBSZWdFeHBdJykgfHxcbiAgICAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgXHUwMDI2XHUwMDI2XG4gICAgIC8vIElFOCBhbmQgYmVsb3dcbiAgICAgKGZuID09PSB3aW5kb3cuc2V0VGltZW91dCB8fFxuICAgICAgZm4gPT09IHdpbmRvdy5hbGVydCB8fFxuICAgICAgZm4gPT09IHdpbmRvdy5jb25maXJtIHx8XG4gICAgICBmbiA9PT0gd2luZG93LnByb21wdCkpXG59O1xuIiwgImltcG9ydCAqIGFzIF9fbW9kdWxlIGZyb20gXCJpcy1mdW5jdGlvblwiO2NvbnN0IHsgZGVmYXVsdDogX19kZWZhdWx0LCAuLi5fX3Jlc3QgfSA9IF9fbW9kdWxlO2V4cG9ydCBkZWZhdWx0IChfX2RlZmF1bHQgIT09IHVuZGVmaW5lZCA/IF9fZGVmYXVsdCA6IF9fcmVzdCk7ZXhwb3J0ICogZnJvbSBcImlzLWZ1bmN0aW9uXCI7IiwgInZhciB0cmltID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpO1xufVxuICAsIGlzQXJyYXkgPSBmdW5jdGlvbihhcmcpIHtcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJnKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbiAgICB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGhlYWRlcnMpIHtcbiAgaWYgKCFoZWFkZXJzKVxuICAgIHJldHVybiB7fVxuXG4gIHZhciByZXN1bHQgPSB7fVxuXG4gIHZhciBoZWFkZXJzQXJyID0gdHJpbShoZWFkZXJzKS5zcGxpdCgnXFxuJylcblxuICBmb3IgKHZhciBpID0gMDsgaSBcdTAwM2MgaGVhZGVyc0Fyci5sZW5ndGg7IGkrKykge1xuICAgIHZhciByb3cgPSBoZWFkZXJzQXJyW2ldXG4gICAgdmFyIGluZGV4ID0gcm93LmluZGV4T2YoJzonKVxuICAgICwga2V5ID0gdHJpbShyb3cuc2xpY2UoMCwgaW5kZXgpKS50b0xvd2VyQ2FzZSgpXG4gICAgLCB2YWx1ZSA9IHRyaW0ocm93LnNsaWNlKGluZGV4ICsgMSkpXG5cbiAgICBpZiAodHlwZW9mKHJlc3VsdFtrZXldKSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsdWVcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkocmVzdWx0W2tleV0pKSB7XG4gICAgICByZXN1bHRba2V5XS5wdXNoKHZhbHVlKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRba2V5XSA9IFsgcmVzdWx0W2tleV0sIHZhbHVlIF1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG4iLCAiaW1wb3J0ICogYXMgX19tb2R1bGUgZnJvbSBcInBhcnNlLWhlYWRlcnNcIjtjb25zdCB7IGRlZmF1bHQ6IF9fZGVmYXVsdCwgLi4uX19yZXN0IH0gPSBfX21vZHVsZTtleHBvcnQgZGVmYXVsdCAoX19kZWZhdWx0ICE9PSB1bmRlZmluZWQgPyBfX2RlZmF1bHQgOiBfX3Jlc3QpO2V4cG9ydCAqIGZyb20gXCJwYXJzZS1oZWFkZXJzXCI7IiwgIm1vZHVsZS5leHBvcnRzID0gZXh0ZW5kXG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIGV4dGVuZCgpIHtcbiAgICB2YXIgdGFyZ2V0ID0ge31cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIFx1MDAzYyBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXVxuXG4gICAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRcbn1cbiIsICJpbXBvcnQgKiBhcyBfX21vZHVsZSBmcm9tIFwieHRlbmRcIjtjb25zdCB7IGRlZmF1bHQ6IF9fZGVmYXVsdCwgLi4uX19yZXN0IH0gPSBfX21vZHVsZTtleHBvcnQgZGVmYXVsdCAoX19kZWZhdWx0ICE9PSB1bmRlZmluZWQgPyBfX2RlZmF1bHQgOiBfX3Jlc3QpO2V4cG9ydCAqIGZyb20gXCJ4dGVuZFwiOyIsICJcInVzZSBzdHJpY3RcIjtcbnZhciB3aW5kb3cgPSByZXF1aXJlKFwiZ2xvYmFsL3dpbmRvd1wiKVxudmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKFwiaXMtZnVuY3Rpb25cIilcbnZhciBwYXJzZUhlYWRlcnMgPSByZXF1aXJlKFwicGFyc2UtaGVhZGVyc1wiKVxudmFyIHh0ZW5kID0gcmVxdWlyZShcInh0ZW5kXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlWEhSXG4vLyBBbGxvdyB1c2Ugb2YgZGVmYXVsdCBpbXBvcnQgc3ludGF4IGluIFR5cGVTY3JpcHRcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBjcmVhdGVYSFI7XG5jcmVhdGVYSFIuWE1MSHR0cFJlcXVlc3QgPSB3aW5kb3cuWE1MSHR0cFJlcXVlc3QgfHwgbm9vcFxuY3JlYXRlWEhSLlhEb21haW5SZXF1ZXN0ID0gXCJ3aXRoQ3JlZGVudGlhbHNcIiBpbiAobmV3IGNyZWF0ZVhIUi5YTUxIdHRwUmVxdWVzdCgpKSA/IGNyZWF0ZVhIUi5YTUxIdHRwUmVxdWVzdCA6IHdpbmRvdy5YRG9tYWluUmVxdWVzdFxuXG5mb3JFYWNoQXJyYXkoW1wiZ2V0XCIsIFwicHV0XCIsIFwicG9zdFwiLCBcInBhdGNoXCIsIFwiaGVhZFwiLCBcImRlbGV0ZVwiXSwgZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgY3JlYXRlWEhSW21ldGhvZCA9PT0gXCJkZWxldGVcIiA/IFwiZGVsXCIgOiBtZXRob2RdID0gZnVuY3Rpb24odXJpLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICAgICAgICBvcHRpb25zID0gaW5pdFBhcmFtcyh1cmksIG9wdGlvbnMsIGNhbGxiYWNrKVxuICAgICAgICBvcHRpb25zLm1ldGhvZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpXG4gICAgICAgIHJldHVybiBfY3JlYXRlWEhSKG9wdGlvbnMpXG4gICAgfVxufSlcblxuZnVuY3Rpb24gZm9yRWFjaEFycmF5KGFycmF5LCBpdGVyYXRvcikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIFx1MDAzYyBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpdGVyYXRvcihhcnJheVtpXSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzRW1wdHkob2JqKXtcbiAgICBmb3IodmFyIGkgaW4gb2JqKXtcbiAgICAgICAgaWYob2JqLmhhc093blByb3BlcnR5KGkpKSByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gaW5pdFBhcmFtcyh1cmksIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHBhcmFtcyA9IHVyaVxuXG4gICAgaWYgKGlzRnVuY3Rpb24ob3B0aW9ucykpIHtcbiAgICAgICAgY2FsbGJhY2sgPSBvcHRpb25zXG4gICAgICAgIGlmICh0eXBlb2YgdXJpID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSB7dXJpOnVyaX1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcmFtcyA9IHh0ZW5kKG9wdGlvbnMsIHt1cmk6IHVyaX0pXG4gICAgfVxuXG4gICAgcGFyYW1zLmNhbGxiYWNrID0gY2FsbGJhY2tcbiAgICByZXR1cm4gcGFyYW1zXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVhIUih1cmksIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgb3B0aW9ucyA9IGluaXRQYXJhbXModXJpLCBvcHRpb25zLCBjYWxsYmFjaylcbiAgICByZXR1cm4gX2NyZWF0ZVhIUihvcHRpb25zKVxufVxuXG5mdW5jdGlvbiBfY3JlYXRlWEhSKG9wdGlvbnMpIHtcbiAgICBpZih0eXBlb2Ygb3B0aW9ucy5jYWxsYmFjayA9PT0gXCJ1bmRlZmluZWRcIil7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImNhbGxiYWNrIGFyZ3VtZW50IG1pc3NpbmdcIilcbiAgICB9XG5cbiAgICB2YXIgY2FsbGVkID0gZmFsc2VcbiAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbiBjYk9uY2UoZXJyLCByZXNwb25zZSwgYm9keSl7XG4gICAgICAgIGlmKCFjYWxsZWQpe1xuICAgICAgICAgICAgY2FsbGVkID0gdHJ1ZVxuICAgICAgICAgICAgb3B0aW9ucy5jYWxsYmFjayhlcnIsIHJlc3BvbnNlLCBib2R5KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVhZHlzdGF0ZWNoYW5nZSgpIHtcbiAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGxvYWRGdW5jLCAwKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Qm9keSgpIHtcbiAgICAgICAgLy8gQ2hyb21lIHdpdGggcmVxdWVzdFR5cGU9YmxvYiB0aHJvd3MgZXJyb3JzIGFycm91bmQgd2hlbiBldmVuIHRlc3RpbmcgYWNjZXNzIHRvIHJlc3BvbnNlVGV4dFxuICAgICAgICB2YXIgYm9keSA9IHVuZGVmaW5lZFxuXG4gICAgICAgIGlmICh4aHIucmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGJvZHkgPSB4aHIucmVzcG9uc2VcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJvZHkgPSB4aHIucmVzcG9uc2VUZXh0IHx8IGdldFhtbCh4aHIpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNKc29uKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGJvZHkgPSBKU09OLnBhcnNlKGJvZHkpXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJvZHlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlcnJvckZ1bmMoZXZ0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0VGltZXIpXG4gICAgICAgIGlmKCEoZXZ0IGluc3RhbmNlb2YgRXJyb3IpKXtcbiAgICAgICAgICAgIGV2dCA9IG5ldyBFcnJvcihcIlwiICsgKGV2dCB8fCBcIlVua25vd24gWE1MSHR0cFJlcXVlc3QgRXJyb3JcIikgKVxuICAgICAgICB9XG4gICAgICAgIGV2dC5zdGF0dXNDb2RlID0gMFxuICAgICAgICByZXR1cm4gY2FsbGJhY2soZXZ0LCBmYWlsdXJlUmVzcG9uc2UpXG4gICAgfVxuXG4gICAgLy8gd2lsbCBsb2FkIHRoZSBkYXRhIFx1MDAyNiBwcm9jZXNzIHRoZSByZXNwb25zZSBpbiBhIHNwZWNpYWwgcmVzcG9uc2Ugb2JqZWN0XG4gICAgZnVuY3Rpb24gbG9hZEZ1bmMoKSB7XG4gICAgICAgIGlmIChhYm9ydGVkKSByZXR1cm5cbiAgICAgICAgdmFyIHN0YXR1c1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dFRpbWVyKVxuICAgICAgICBpZihvcHRpb25zLnVzZVhEUiBcdTAwMjZcdTAwMjYgeGhyLnN0YXR1cz09PXVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy9JRTggQ09SUyBHRVQgc3VjY2Vzc2Z1bCByZXNwb25zZSBkb2Vzbid0IGhhdmUgYSBzdGF0dXMgZmllbGQsIGJ1dCBib2R5IGlzIGZpbmVcbiAgICAgICAgICAgIHN0YXR1cyA9IDIwMFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhdHVzID0gKHhoci5zdGF0dXMgPT09IDEyMjMgPyAyMDQgOiB4aHIuc3RhdHVzKVxuICAgICAgICB9XG4gICAgICAgIHZhciByZXNwb25zZSA9IGZhaWx1cmVSZXNwb25zZVxuICAgICAgICB2YXIgZXJyID0gbnVsbFxuXG4gICAgICAgIGlmIChzdGF0dXMgIT09IDApe1xuICAgICAgICAgICAgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICAgICAgYm9keTogZ2V0Qm9keSgpLFxuICAgICAgICAgICAgICAgIHN0YXR1c0NvZGU6IHN0YXR1cyxcbiAgICAgICAgICAgICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgICAgICAgICB1cmw6IHVyaSxcbiAgICAgICAgICAgICAgICByYXdSZXF1ZXN0OiB4aHJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMpeyAvL3JlbWVtYmVyIHhociBjYW4gaW4gZmFjdCBiZSBYRFIgZm9yIENPUlMgaW4gSUVcbiAgICAgICAgICAgICAgICByZXNwb25zZS5oZWFkZXJzID0gcGFyc2VIZWFkZXJzKHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVyciA9IG5ldyBFcnJvcihcIkludGVybmFsIFhNTEh0dHBSZXF1ZXN0IEVycm9yXCIpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVyciwgcmVzcG9uc2UsIHJlc3BvbnNlLmJvZHkpXG4gICAgfVxuXG4gICAgdmFyIHhociA9IG9wdGlvbnMueGhyIHx8IG51bGxcblxuICAgIGlmICgheGhyKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmNvcnMgfHwgb3B0aW9ucy51c2VYRFIpIHtcbiAgICAgICAgICAgIHhociA9IG5ldyBjcmVhdGVYSFIuWERvbWFpblJlcXVlc3QoKVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHhociA9IG5ldyBjcmVhdGVYSFIuWE1MSHR0cFJlcXVlc3QoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGtleVxuICAgIHZhciBhYm9ydGVkXG4gICAgdmFyIHVyaSA9IHhoci51cmwgPSBvcHRpb25zLnVyaSB8fCBvcHRpb25zLnVybFxuICAgIHZhciBtZXRob2QgPSB4aHIubWV0aG9kID0gb3B0aW9ucy5tZXRob2QgfHwgXCJHRVRcIlxuICAgIHZhciBib2R5ID0gb3B0aW9ucy5ib2R5IHx8IG9wdGlvbnMuZGF0YVxuICAgIHZhciBoZWFkZXJzID0geGhyLmhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgfHwge31cbiAgICB2YXIgc3luYyA9ICEhb3B0aW9ucy5zeW5jXG4gICAgdmFyIGlzSnNvbiA9IGZhbHNlXG4gICAgdmFyIHRpbWVvdXRUaW1lclxuICAgIHZhciBmYWlsdXJlUmVzcG9uc2UgPSB7XG4gICAgICAgIGJvZHk6IHVuZGVmaW5lZCxcbiAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgIHN0YXR1c0NvZGU6IDAsXG4gICAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgICB1cmw6IHVyaSxcbiAgICAgICAgcmF3UmVxdWVzdDogeGhyXG4gICAgfVxuXG4gICAgaWYgKFwianNvblwiIGluIG9wdGlvbnMgXHUwMDI2XHUwMDI2IG9wdGlvbnMuanNvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgaXNKc29uID0gdHJ1ZVxuICAgICAgICBoZWFkZXJzW1wiYWNjZXB0XCJdIHx8IGhlYWRlcnNbXCJBY2NlcHRcIl0gfHwgKGhlYWRlcnNbXCJBY2NlcHRcIl0gPSBcImFwcGxpY2F0aW9uL2pzb25cIikgLy9Eb24ndCBvdmVycmlkZSBleGlzdGluZyBhY2NlcHQgaGVhZGVyIGRlY2xhcmVkIGJ5IHVzZXJcbiAgICAgICAgaWYgKG1ldGhvZCAhPT0gXCJHRVRcIiBcdTAwMjZcdTAwMjYgbWV0aG9kICE9PSBcIkhFQURcIikge1xuICAgICAgICAgICAgaGVhZGVyc1tcImNvbnRlbnQtdHlwZVwiXSB8fCBoZWFkZXJzW1wiQ29udGVudC1UeXBlXCJdIHx8IChoZWFkZXJzW1wiQ29udGVudC1UeXBlXCJdID0gXCJhcHBsaWNhdGlvbi9qc29uXCIpIC8vRG9uJ3Qgb3ZlcnJpZGUgZXhpc3RpbmcgYWNjZXB0IGhlYWRlciBkZWNsYXJlZCBieSB1c2VyXG4gICAgICAgICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5qc29uID09PSB0cnVlID8gYm9keSA6IG9wdGlvbnMuanNvbilcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSByZWFkeXN0YXRlY2hhbmdlXG4gICAgeGhyLm9ubG9hZCA9IGxvYWRGdW5jXG4gICAgeGhyLm9uZXJyb3IgPSBlcnJvckZ1bmNcbiAgICAvLyBJRTkgbXVzdCBoYXZlIG9ucHJvZ3Jlc3MgYmUgc2V0IHRvIGEgdW5pcXVlIGZ1bmN0aW9uLlxuICAgIHhoci5vbnByb2dyZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBJRSBtdXN0IGRpZVxuICAgIH1cbiAgICB4aHIub25hYm9ydCA9IGZ1bmN0aW9uKCl7XG4gICAgICAgIGFib3J0ZWQgPSB0cnVlO1xuICAgIH1cbiAgICB4aHIub250aW1lb3V0ID0gZXJyb3JGdW5jXG4gICAgeGhyLm9wZW4obWV0aG9kLCB1cmksICFzeW5jLCBvcHRpb25zLnVzZXJuYW1lLCBvcHRpb25zLnBhc3N3b3JkKVxuICAgIC8vaGFzIHRvIGJlIGFmdGVyIG9wZW5cbiAgICBpZighc3luYykge1xuICAgICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gISFvcHRpb25zLndpdGhDcmVkZW50aWFsc1xuICAgIH1cbiAgICAvLyBDYW5ub3Qgc2V0IHRpbWVvdXQgd2l0aCBzeW5jIHJlcXVlc3RcbiAgICAvLyBub3Qgc2V0dGluZyB0aW1lb3V0IG9uIHRoZSB4aHIgb2JqZWN0LCBiZWNhdXNlIG9mIG9sZCB3ZWJraXRzIGV0Yy4gbm90IGhhbmRsaW5nIHRoYXQgY29ycmVjdGx5XG4gICAgLy8gYm90aCBucG0ncyByZXF1ZXN0IGFuZCBqcXVlcnkgMS54IHVzZSB0aGlzIGtpbmQgb2YgdGltZW91dCwgc28gdGhpcyBpcyBiZWluZyBjb25zaXN0ZW50XG4gICAgaWYgKCFzeW5jIFx1MDAyNlx1MDAyNiBvcHRpb25zLnRpbWVvdXQgXHUwMDNlIDAgKSB7XG4gICAgICAgIHRpbWVvdXRUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGlmIChhYm9ydGVkKSByZXR1cm5cbiAgICAgICAgICAgIGFib3J0ZWQgPSB0cnVlLy9JRTkgbWF5IHN0aWxsIGNhbGwgcmVhZHlzdGF0ZWNoYW5nZVxuICAgICAgICAgICAgeGhyLmFib3J0KFwidGltZW91dFwiKVxuICAgICAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IoXCJYTUxIdHRwUmVxdWVzdCB0aW1lb3V0XCIpXG4gICAgICAgICAgICBlLmNvZGUgPSBcIkVUSU1FRE9VVFwiXG4gICAgICAgICAgICBlcnJvckZ1bmMoZSlcbiAgICAgICAgfSwgb3B0aW9ucy50aW1lb3V0IClcbiAgICB9XG5cbiAgICBpZiAoeGhyLnNldFJlcXVlc3RIZWFkZXIpIHtcbiAgICAgICAgZm9yKGtleSBpbiBoZWFkZXJzKXtcbiAgICAgICAgICAgIGlmKGhlYWRlcnMuaGFzT3duUHJvcGVydHkoa2V5KSl7XG4gICAgICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoa2V5LCBoZWFkZXJzW2tleV0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuaGVhZGVycyBcdTAwMjZcdTAwMjYgIWlzRW1wdHkob3B0aW9ucy5oZWFkZXJzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJIZWFkZXJzIGNhbm5vdCBiZSBzZXQgb24gYW4gWERvbWFpblJlcXVlc3Qgb2JqZWN0XCIpXG4gICAgfVxuXG4gICAgaWYgKFwicmVzcG9uc2VUeXBlXCIgaW4gb3B0aW9ucykge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gb3B0aW9ucy5yZXNwb25zZVR5cGVcbiAgICB9XG5cbiAgICBpZiAoXCJiZWZvcmVTZW5kXCIgaW4gb3B0aW9ucyBcdTAwMjZcdTAwMjZcbiAgICAgICAgdHlwZW9mIG9wdGlvbnMuYmVmb3JlU2VuZCA9PT0gXCJmdW5jdGlvblwiXG4gICAgKSB7XG4gICAgICAgIG9wdGlvbnMuYmVmb3JlU2VuZCh4aHIpXG4gICAgfVxuXG4gICAgLy8gTWljcm9zb2Z0IEVkZ2UgYnJvd3NlciBzZW5kcyBcInVuZGVmaW5lZFwiIHdoZW4gc2VuZCBpcyBjYWxsZWQgd2l0aCB1bmRlZmluZWQgdmFsdWUuXG4gICAgLy8gWE1MSHR0cFJlcXVlc3Qgc3BlYyBzYXlzIHRvIHBhc3MgbnVsbCBhcyBib2R5IHRvIGluZGljYXRlIG5vIGJvZHlcbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL25hdWd0dXIveGhyL2lzc3Vlcy8xMDAuXG4gICAgeGhyLnNlbmQoYm9keSB8fCBudWxsKVxuXG4gICAgcmV0dXJuIHhoclxuXG5cbn1cblxuZnVuY3Rpb24gZ2V0WG1sKHhocikge1xuICAgIC8vIHhoci5yZXNwb25zZVhNTCB3aWxsIHRocm93IEV4Y2VwdGlvbiBcIkludmFsaWRTdGF0ZUVycm9yXCIgb3IgXCJET01FeGNlcHRpb25cIlxuICAgIC8vIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvcmVzcG9uc2VYTUwuXG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHhoci5yZXNwb25zZVR5cGUgPT09IFwiZG9jdW1lbnRcIikge1xuICAgICAgICAgICAgcmV0dXJuIHhoci5yZXNwb25zZVhNTFxuICAgICAgICB9XG4gICAgICAgIHZhciBmaXJlZm94QnVnVGFrZW5FZmZlY3QgPSB4aHIucmVzcG9uc2VYTUwgXHUwMDI2XHUwMDI2IHhoci5yZXNwb25zZVhNTC5kb2N1bWVudEVsZW1lbnQubm9kZU5hbWUgPT09IFwicGFyc2VyZXJyb3JcIlxuICAgICAgICBpZiAoeGhyLnJlc3BvbnNlVHlwZSA9PT0gXCJcIiBcdTAwMjZcdTAwMjYgIWZpcmVmb3hCdWdUYWtlbkVmZmVjdCkge1xuICAgICAgICAgICAgcmV0dXJuIHhoci5yZXNwb25zZVhNTFxuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge31cblxuICAgIHJldHVybiBudWxsXG59XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuIiwgImltcG9ydCAqIGFzIF9fbW9kdWxlIGZyb20gXCJ4aHJcIjtjb25zdCB7IGRlZmF1bHQ6IF9fZGVmYXVsdCwgLi4uX19yZXN0IH0gPSBfX21vZHVsZTtleHBvcnQgZGVmYXVsdCAoX19kZWZhdWx0ICE9PSB1bmRlZmluZWQgPyBfX2RlZmF1bHQgOiBfX3Jlc3QpO2V4cG9ydCAqIGZyb20gXCJ4aHJcIjsiLCAiaW1wb3J0IHhociBmcm9tICd4aHInO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiBcdTAwMjZcdTAwMjYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmo7XG59IDogZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqIFx1MDAyNlx1MDAyNiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgXHUwMDI2XHUwMDI2IG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sIFx1MDAyNlx1MDAyNiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajtcbn07XG5cblxuXG5cblxudmFyIGFzeW5jR2VuZXJhdG9yID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBBd2FpdFZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZnVuY3Rpb24gQXN5bmNHZW5lcmF0b3IoZ2VuKSB7XG4gICAgdmFyIGZyb250LCBiYWNrO1xuXG4gICAgZnVuY3Rpb24gc2VuZChrZXksIGFyZykge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIHJlcXVlc3QgPSB7XG4gICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgYXJnOiBhcmcsXG4gICAgICAgICAgcmVzb2x2ZTogcmVzb2x2ZSxcbiAgICAgICAgICByZWplY3Q6IHJlamVjdCxcbiAgICAgICAgICBuZXh0OiBudWxsXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGJhY2spIHtcbiAgICAgICAgICBiYWNrID0gYmFjay5uZXh0ID0gcmVxdWVzdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmcm9udCA9IGJhY2sgPSByZXF1ZXN0O1xuICAgICAgICAgIHJlc3VtZShrZXksIGFyZyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc3VtZShrZXksIGFyZykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGdlbltrZXldKGFyZyk7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcblxuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBd2FpdFZhbHVlKSB7XG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlLnZhbHVlKS50aGVuKGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgICAgIHJlc3VtZShcIm5leHRcIiwgYXJnKTtcbiAgICAgICAgICB9LCBmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgICAgICByZXN1bWUoXCJ0aHJvd1wiLCBhcmcpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldHRsZShyZXN1bHQuZG9uZSA/IFwicmV0dXJuXCIgOiBcIm5vcm1hbFwiLCByZXN1bHQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgc2V0dGxlKFwidGhyb3dcIiwgZXJyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXR0bGUodHlwZSwgdmFsdWUpIHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFwicmV0dXJuXCI6XG4gICAgICAgICAgZnJvbnQucmVzb2x2ZSh7XG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICBkb25lOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBcInRocm93XCI6XG4gICAgICAgICAgZnJvbnQucmVqZWN0KHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGZyb250LnJlc29sdmUoe1xuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgZG9uZTogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZnJvbnQgPSBmcm9udC5uZXh0O1xuXG4gICAgICBpZiAoZnJvbnQpIHtcbiAgICAgICAgcmVzdW1lKGZyb250LmtleSwgZnJvbnQuYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJhY2sgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2ludm9rZSA9IHNlbmQ7XG5cbiAgICBpZiAodHlwZW9mIGdlbi5yZXR1cm4gIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhpcy5yZXR1cm4gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiBcdTAwMjZcdTAwMjYgU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHtcbiAgICBBc3luY0dlbmVyYXRvci5wcm90b3R5cGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgfVxuXG4gIEFzeW5jR2VuZXJhdG9yLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiB0aGlzLl9pbnZva2UoXCJuZXh0XCIsIGFyZyk7XG4gIH07XG5cbiAgQXN5bmNHZW5lcmF0b3IucHJvdG90eXBlLnRocm93ID0gZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiB0aGlzLl9pbnZva2UoXCJ0aHJvd1wiLCBhcmcpO1xuICB9O1xuXG4gIEFzeW5jR2VuZXJhdG9yLnByb3RvdHlwZS5yZXR1cm4gPSBmdW5jdGlvbiAoYXJnKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ludm9rZShcInJldHVyblwiLCBhcmcpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgd3JhcDogZnVuY3Rpb24gKGZuKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IEFzeW5jR2VuZXJhdG9yKGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICAgICAgfTtcbiAgICB9LFxuICAgIGF3YWl0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJldHVybiBuZXcgQXdhaXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9O1xufSgpO1xuXG5cblxuXG5cbnZhciBjbGFzc0NhbGxDaGVjayA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59O1xuXG52YXIgY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIFx1MDAzYyBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgICBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICAgIGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfTtcbn0oKTtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG52YXIgdG9Db25zdW1hYmxlQXJyYXkgPSBmdW5jdGlvbiAoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIFx1MDAzYyBhcnIubGVuZ3RoOyBpKyspIGFycjJbaV0gPSBhcnJbaV07XG5cbiAgICByZXR1cm4gYXJyMjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShhcnIpO1xuICB9XG59O1xuXG52YXIgbGFzdEVycm9yID0gJyc7XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgSFRMTSBmb3IgYSBmYWlsdXJlIG1lc3NhZ2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBjYW52YXNDb250YWluZXJJZCBpZCBvZiBjb250YWluZXIgb2YgdGhcbiAqICAgICAgICBjYW52YXMuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBodG1sLlxuICovXG5mdW5jdGlvbiBtYWtlRmFpbEhUTUwobXNnKSB7XG4gICAgcmV0dXJuICdcXG5cdTAwM2N0YWJsZSBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICM4Q0U7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XCJcdTAwM2VcdTAwM2N0clx1MDAzZVxcblx1MDAzY3RkIGFsaWduPVwiY2VudGVyXCJcdTAwM2VcXG5cdTAwM2NkaXYgc3R5bGU9XCJkaXNwbGF5OiB0YWJsZS1jZWxsOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1wiXHUwMDNlXFxuXHUwMDNjZGl2IHN0eWxlPVwiXCJcdTAwM2UnICsgbXNnICsgJ1x1MDAzYy9kaXZcdTAwM2VcXG5cdTAwM2MvZGl2XHUwMDNlXFxuXHUwMDNjL3RkXHUwMDNlXHUwMDNjL3RyXHUwMDNlXHUwMDNjL3RhYmxlXHUwMDNlXFxuJztcbn1cblxuLyoqXG4gKiBNZXNzYWdlIGZvciBnZXR0aW5nIGEgd2ViZ2wgYnJvd3NlclxuICogQHR5cGUge3N0cmluZ31cbiAqL1xudmFyIEdFVF9BX1dFQkdMX0JST1dTRVIgPSAnXFxuXFx0VGhpcyBwYWdlIHJlcXVpcmVzIGEgYnJvd3NlciB0aGF0IHN1cHBvcnRzIFdlYkdMLlx1MDAzY2JyL1x1MDAzZVxcblxcdFx1MDAzY2EgaHJlZj1cImh0dHA6Ly9nZXQud2ViZ2wub3JnXCJcdTAwM2VDbGljayBoZXJlIHRvIHVwZ3JhZGUgeW91ciBicm93c2VyLlx1MDAzYy9hXHUwMDNlXFxuJztcblxuLyoqXG4gKiBNZXNzYWdlIGZvciBuZWVkIGJldHRlciBoYXJkd2FyZVxuICogQHR5cGUge3N0cmluZ31cbiAqL1xudmFyIE9USEVSX1BST0JMRU0gPSAnXFxuXFx0SXQgZG9lcyBub3QgYXBwZWFyIHlvdXIgY29tcHV0ZXIgY2FuIHN1cHBvcnQgV2ViR0wuXHUwMDNjYnIvXHUwMDNlXFxuXFx0XHUwMDNjYSBocmVmPVwiaHR0cDovL2dldC53ZWJnbC5vcmcvdHJvdWJsZXNob290aW5nL1wiXHUwMDNlQ2xpY2sgaGVyZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cdTAwM2MvYVx1MDAzZVxcbic7XG5cbi8qKlxuICogQ29kZSB0byByZXR1cm4gaW4gYG9uRXJyb3JgIGNhbGxiYWNrIHdoZW4gdGhlIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IHdlYmdsXG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG52YXIgRVJST1JfQlJPV1NFUl9TVVBQT1JUID0gMTtcblxuLyoqXG4gKiBDb2RlIHRvIHJldHVybiBpbiBgb25FcnJvcmAgY2FsbGJhY2sgdGhlcmUncyBhbnkgb3RoZXIgcHJvYmxlbSByZWxhdGVkIHRvIHdlYmdsXG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG52YXIgRVJST1JfT1RIRVIgPSAyO1xuXG4vKipcbiAqIENyZWF0ZXMgYSB3ZWJnbCBjb250ZXh0LiBJZiBjcmVhdGlvbiBmYWlscyBpdCB3aWxsXG4gKiBjaGFuZ2UgdGhlIGNvbnRlbnRzIG9mIHRoZSBjb250YWluZXIgb2YgdGhlIFx1MDAzY2NhbnZhc1x1MDAzZVxuICogdGFnIHRvIGFuIGVycm9yIG1lc3NhZ2Ugd2l0aCB0aGUgY29ycmVjdCBsaW5rcyBmb3IgV2ViR0wsXG4gKiB1bmxlc3MgYG9uRXJyb3JgIG9wdGlvbiBpcyBkZWZpbmVkIHRvIGEgY2FsbGJhY2ssXG4gKiB3aGljaCBhbGxvd3MgZm9yIGN1c3RvbSBlcnJvciBoYW5kbGluZy4uXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGNhbnZhcy4gVGhlIGNhbnZhcyBlbGVtZW50IHRvIGNyZWF0ZSBhXG4gKiAgICAgY29udGV4dCBmcm9tLlxuICogQHBhcmFtIHtXZWJHTENvbnRleHRDcmVhdGlvbkF0dHJpYnV0ZXN9IG9wdEF0dHJpYnMgQW55XG4gKiAgICAgY3JlYXRpb24gYXR0cmlidXRlcyB5b3Ugd2FudCB0byBwYXNzIGluLlxuICogQHJldHVybiB7V2ViR0xSZW5kZXJpbmdDb250ZXh0fSBUaGUgY3JlYXRlZCBjb250ZXh0LlxuICovXG5mdW5jdGlvbiBzZXR1cFdlYkdMKGNhbnZhcywgb3B0QXR0cmlicywgb25FcnJvcikge1xuICAgIGZ1bmN0aW9uIHNob3dMaW5rKHN0cikge1xuICAgICAgICB2YXIgY29udGFpbmVyID0gY2FudmFzLnBhcmVudE5vZGU7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBtYWtlRmFpbEhUTUwoc3RyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUVycm9yKGVycm9yQ29kZSwgbXNnKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb25FcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgb25FcnJvcihlcnJvckNvZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2hvd0xpbmsobXNnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICghd2luZG93LldlYkdMUmVuZGVyaW5nQ29udGV4dCkge1xuICAgICAgICBoYW5kbGVFcnJvcihFUlJPUl9CUk9XU0VSX1NVUFBPUlQsIEdFVF9BX1dFQkdMX0JST1dTRVIpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dChjYW52YXMsIG9wdEF0dHJpYnMpO1xuICAgIGlmICghY29udGV4dCkge1xuICAgICAgICBoYW5kbGVFcnJvcihFUlJPUl9PVEhFUiwgT1RIRVJfUFJPQkxFTSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29udGV4dC5nZXRFeHRlbnNpb24oJ09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcycpO1xuICAgIH1cbiAgICByZXR1cm4gY29udGV4dDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgd2ViZ2wgY29udGV4dC5cbiAqIEBwYXJhbSB7IUNhbnZhc30gY2FudmFzIFRoZSBjYW52YXMgdGFnIHRvIGdldCBjb250ZXh0XG4gKiAgICAgZnJvbS4gSWYgb25lIGlzIG5vdCBwYXNzZWQgaW4gb25lIHdpbGwgYmUgY3JlYXRlZC5cbiAqIEByZXR1cm4geyFXZWJHTENvbnRleHR9IFRoZSBjcmVhdGVkIGNvbnRleHQuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZTNEQ29udGV4dChjYW52YXMsIG9wdEF0dHJpYnMpIHtcbiAgICB2YXIgbmFtZXMgPSBbJ3dlYmdsJywgJ2V4cGVyaW1lbnRhbC13ZWJnbCddO1xuICAgIHZhciBjb250ZXh0ID0gbnVsbDtcbiAgICBmb3IgKHZhciBpaSA9IDA7IGlpIFx1MDAzYyBuYW1lcy5sZW5ndGg7ICsraWkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChuYW1lc1tpaV0sIG9wdEF0dHJpYnMpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb250ZXh0O1xufVxuXG4vKlxuICpcdENyZWF0ZSBhIFZlcnRleCBvZiBhIHNwZWNpZmljIHR5cGUgKGdsLlZFUlRFWF9TSEFERVIvKVxuICovXG5mdW5jdGlvbiBjcmVhdGVTaGFkZXIobWFpbiwgc291cmNlLCB0eXBlLCBvZmZzZXQpIHtcbiAgICB2YXIgZ2wgPSBtYWluLmdsO1xuXG4gICAgdmFyIHNoYWRlciA9IGdsLmNyZWF0ZVNoYWRlcih0eXBlKTtcbiAgICBnbC5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzb3VyY2UpO1xuICAgIGdsLmNvbXBpbGVTaGFkZXIoc2hhZGVyKTtcblxuICAgIHZhciBjb21waWxlZCA9IGdsLmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXIsIGdsLkNPTVBJTEVfU1RBVFVTKTtcblxuICAgIGlmICghY29tcGlsZWQpIHtcbiAgICAgICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIGNvbXBpbGF0aW9uOyBnZXQgdGhlIGVycm9yXG4gICAgICAgIGxhc3RFcnJvciA9IGdsLmdldFNoYWRlckluZm9Mb2coc2hhZGVyKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignKioqIEVycm9yIGNvbXBpbGluZyBzaGFkZXIgJyArIHNoYWRlciArICc6JyArIGxhc3RFcnJvcik7XG4gICAgICAgIG1haW4udHJpZ2dlcignZXJyb3InLCB7XG4gICAgICAgICAgICBzaGFkZXI6IHNoYWRlcixcbiAgICAgICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgIGVycm9yOiBsYXN0RXJyb3IsXG4gICAgICAgICAgICBvZmZzZXQ6IG9mZnNldCB8fCAwXG4gICAgICAgIH0pO1xuICAgICAgICBnbC5kZWxldGVTaGFkZXIoc2hhZGVyKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNoYWRlcjtcbn1cblxuLyoqXG4gKiBMb2FkcyBhIHNoYWRlci5cbiAqIEBwYXJhbSB7IVdlYkdMQ29udGV4dH0gZ2wgVGhlIFdlYkdMQ29udGV4dCB0byB1c2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gc2hhZGVyU291cmNlIFRoZSBzaGFkZXIgc291cmNlLlxuICogQHBhcmFtIHtudW1iZXJ9IHNoYWRlclR5cGUgVGhlIHR5cGUgb2Ygc2hhZGVyLlxuICogQHBhcmFtIHtmdW5jdGlvbihzdHJpbmcpOiB2b2lkKSBvcHRfZXJyb3JDYWxsYmFjayBjYWxsYmFjayBmb3IgZXJyb3JzLlxuICogQHJldHVybiB7IVdlYkdMU2hhZGVyfSBUaGUgY3JlYXRlZCBzaGFkZXIuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVByb2dyYW0obWFpbiwgc2hhZGVycywgb3B0QXR0cmlicywgb3B0TG9jYXRpb25zKSB7XG4gICAgdmFyIGdsID0gbWFpbi5nbDtcblxuICAgIHZhciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpO1xuICAgIGZvciAodmFyIGlpID0gMDsgaWkgXHUwMDNjIHNoYWRlcnMubGVuZ3RoOyArK2lpKSB7XG4gICAgICAgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXJzW2lpXSk7XG4gICAgfVxuICAgIGlmIChvcHRBdHRyaWJzKSB7XG4gICAgICAgIGZvciAodmFyIF9paSA9IDA7IF9paSBcdTAwM2Mgb3B0QXR0cmlicy5sZW5ndGg7ICsrX2lpKSB7XG4gICAgICAgICAgICBnbC5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgb3B0TG9jYXRpb25zID8gb3B0TG9jYXRpb25zW19paV0gOiBfaWksIG9wdEF0dHJpYnNbX2lpXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7XG5cbiAgICAvLyBDaGVjayB0aGUgbGluayBzdGF0dXNcbiAgICB2YXIgbGlua2VkID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyk7XG4gICAgaWYgKCFsaW5rZWQpIHtcbiAgICAgICAgLy8gc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgbGlua1xuICAgICAgICBsYXN0RXJyb3IgPSBnbC5nZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtKTtcbiAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHByb2dyYW0gbGlua2luZzonICsgbGFzdEVycm9yKTtcbiAgICAgICAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBwcm9ncmFtO1xufVxuXG4vLyBCeSBCcmV0dCBDYW1iZXIgb25cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YW5ncmFtcy90YW5ncmFtL2Jsb2IvbWFzdGVyL3NyYy9nbC9nbHNsLmpzXG5mdW5jdGlvbiBwYXJzZVVuaWZvcm1zKHVuaWZvcm1zKSB7XG4gICAgdmFyIHByZWZpeCA9IGFyZ3VtZW50cy5sZW5ndGggXHUwMDNlIDEgXHUwMDI2XHUwMDI2IGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogbnVsbDtcblxuICAgIHZhciBwYXJzZWQgPSBbXTtcblxuICAgIGZvciAodmFyIG5hbWUgaW4gdW5pZm9ybXMpIHtcbiAgICAgICAgdmFyIHVuaWZvcm0gPSB1bmlmb3Jtc1tuYW1lXTtcbiAgICAgICAgdmFyIHUgPSB2b2lkIDA7XG5cbiAgICAgICAgaWYgKHByZWZpeCkge1xuICAgICAgICAgICAgbmFtZSA9IHByZWZpeCArICcuJyArIG5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaW5nbGUgZmxvYXRcbiAgICAgICAgaWYgKHR5cGVvZiB1bmlmb3JtID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgcGFyc2VkLnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdmbG9hdCcsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnMWYnLFxuICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHVuaWZvcm1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFycmF5OiB2ZWN0b3IsIGFycmF5IG9mIGZsb2F0cywgYXJyYXkgb2YgdGV4dHVyZXMsIG9yIGFycmF5IG9mIHN0cnVjdHNcbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh1bmlmb3JtKSkge1xuICAgICAgICAgICAgICAgIC8vIE51bWVyaWMgdmFsdWVzXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB1bmlmb3JtWzBdID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBmbG9hdCB2ZWN0b3JzICh2ZWMyLCB2ZWMzLCB2ZWM0KVxuICAgICAgICAgICAgICAgICAgICBpZiAodW5pZm9ybS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZmxvYXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJzFmJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmlmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBmbG9hdCB2ZWN0b3JzICh2ZWMyLCB2ZWMzLCB2ZWM0KVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh1bmlmb3JtLmxlbmd0aCBcdTAwM2U9IDIgXHUwMDI2XHUwMDI2IHVuaWZvcm0ubGVuZ3RoIFx1MDAzYz0gNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3ZlYycgKyB1bmlmb3JtLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiB1bmlmb3JtLmxlbmd0aCArICdmdicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmlmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmbG9hdCBhcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodW5pZm9ybS5sZW5ndGggXHUwMDNlIDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Zsb2F0W10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnMWZ2JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUgKyAnWzBdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmlmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogYXNzdW1lIG1hdHJpeCBmb3IgKHR5cGVvZiA9PSBGbG9hdDMyQXJyYXkgXHUwMDI2XHUwMDI2IGxlbmd0aCA9PSAxNik/XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEFycmF5IG9mIHRleHR1cmVzXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHVuaWZvcm1bMF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3NhbXBsZXIyRCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnMWknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuaWZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIEFycmF5IG9mIGFycmF5cyAtIGJ1dCBvbmx5IGFycmF5cyBvZiB2ZWN0b3JzIGFyZSBhbGxvd2VkIGluIHRoaXMgY2FzZVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHVuaWZvcm1bMF0pIFx1MDAyNlx1MDAyNiB0eXBlb2YgdW5pZm9ybVswXVswXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmbG9hdCB2ZWN0b3JzICh2ZWMyLCB2ZWMzLCB2ZWM0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmlmb3JtWzBdLmxlbmd0aCBcdTAwM2U9IDIgXHUwMDI2XHUwMDI2IHVuaWZvcm1bMF0ubGVuZ3RoIFx1MDAzYz0gNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQgZWFjaCB2ZWN0b3IgaW4gdGhlIGFycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodSA9IDA7IHUgXHUwMDNjIHVuaWZvcm0ubGVuZ3RoOyB1KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndmVjJyArIHVuaWZvcm1bMF0ubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogdW5pZm9ybVt1XS5sZW5ndGggKyAnZnYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUgKyAnWycgKyB1ICsgJ10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmlmb3JtW3VdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbHNlIGVycm9yP1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXJyYXkgb2Ygc3RydWN0dXJlc1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoX3R5cGVvZih1bmlmb3JtWzBdKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0gMDsgdSBcdTAwM2MgdW5pZm9ybS5sZW5ndGg7IHUrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGVhY2ggc3RydWN0IGluIHRoZSBhcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnB1c2guYXBwbHkocGFyc2VkLCB0b0NvbnN1bWFibGVBcnJheShwYXJzZVVuaWZvcm1zKHVuaWZvcm1bdV0sIG5hbWUgKyAnWycgKyB1ICsgJ10nKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQm9vbGVhblxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHVuaWZvcm0gPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYm9vbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICcxaScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuaWZvcm1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFRleHR1cmVcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdW5pZm9ybSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2FtcGxlcjJEJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICcxaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5pZm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gU3RydWN0dXJlXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCh0eXBlb2YgdW5pZm9ybSA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YodW5pZm9ybSkpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBlYWNoIGZpZWxkIGluIHRoZSBzdHJ1Y3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQucHVzaC5hcHBseShwYXJzZWQsIHRvQ29uc3VtYWJsZUFycmF5KHBhcnNlVW5pZm9ybXModW5pZm9ybSwgbmFtZSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgLy8gVE9ETzogc3VwcG9ydCBvdGhlciBub24tZmxvYXQgdHlwZXM/IChpbnQsIGV0Yy4pXG4gICAgfVxuICAgIHJldHVybiBwYXJzZWQ7XG59XG5cbmZ1bmN0aW9uIGlzQ2FudmFzVmlzaWJsZShjYW52YXMpIHtcbiAgICB2YXIgYm91bmQgPSBjYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgcmV0dXJuIGJvdW5kLnRvcCArIGJvdW5kLmhlaWdodCBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgYm91bmQudG9wIFx1MDAzYyAod2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpO1xufVxuXG5mdW5jdGlvbiBpc1Bvd2VyT2YyKHZhbHVlKSB7XG4gICAgcmV0dXJuICh2YWx1ZSBcdTAwMjYgdmFsdWUgLSAxKSA9PT0gMDtcbn1cblxuZnVuY3Rpb24gaXNTYWZhcmkoKSB7XG4gICAgcmV0dXJuICgvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpXG4gICAgKTtcbn1cblxuXG5cblxuXG5cblxuZnVuY3Rpb24gaXNEaWZmKGEsIGIpIHtcbiAgICBpZiAoYSBcdTAwMjZcdTAwMjYgYikge1xuICAgICAgICByZXR1cm4gYS50b1N0cmluZygpICE9PSBiLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0RmlsZSh1cmwpIHtcbiAgICB2YXIgaHR0cFJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICBodHRwUmVxdWVzdC5vcGVuKFwiR0VUXCIsIHVybCwgZmFsc2UpO1xuICAgIGh0dHBSZXF1ZXN0LnNlbmQoKTtcbiAgICBpZiAoaHR0cFJlcXVlc3Quc3RhdHVzID09IDIwMCkgcmV0dXJuIGh0dHBSZXF1ZXN0LnJlc3BvbnNlVGV4dDtlbHNlIHJldHVybiBcIlwiO1xufVxuXG5mdW5jdGlvbiBzdWJzY3JpYmVNaXhpbiQxKHRhcmdldCkge1xuICAgIHZhciBsaXN0ZW5lcnMgPSBuZXcgU2V0KCk7XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih0YXJnZXQsIHtcbiAgICAgICAgb246IGZ1bmN0aW9uIG9uKHR5cGUsIGYpIHtcbiAgICAgICAgICAgIHZhciBsaXN0ZW5lciA9IHt9O1xuICAgICAgICAgICAgbGlzdGVuZXJbdHlwZV0gPSBmO1xuICAgICAgICAgICAgbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7XG4gICAgICAgIH0sXG4gICAgICAgIG9mZjogZnVuY3Rpb24gb2ZmKHR5cGUsIGYpIHtcbiAgICAgICAgICAgIGlmIChmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxpc3RlbmVyID0ge307XG4gICAgICAgICAgICAgICAgbGlzdGVuZXJbdHlwZV0gPSBmO1xuICAgICAgICAgICAgICAgIGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdmFyIF9pdGVyYXRvckVycm9yID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gbGlzdGVuZXJzW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBfc3RlcC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IyID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBPYmplY3Qua2V5cyhpdGVtKVtTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMjsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IChfc3RlcDIgPSBfaXRlcmF0b3IyLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gX3N0ZXAyLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IHR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVycy5kZWxldGUoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvckVycm9yMiA9IGVycjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiBcdTAwMjZcdTAwMjYgX2l0ZXJhdG9yMi5yZXR1cm4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIucmV0dXJuKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBfaXRlcmF0b3JFcnJvciA9IGVycjtcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uIFx1MDAyNlx1MDAyNiBfaXRlcmF0b3IucmV0dXJuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yLnJldHVybigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGxpc3RTdWJzY3JpcHRpb25zOiBmdW5jdGlvbiBsaXN0U3Vic2NyaXB0aW9ucygpIHtcbiAgICAgICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IHRydWU7XG4gICAgICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IzID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IzID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSBsaXN0ZW5lcnNbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDM7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgPSAoX3N0ZXAzID0gX2l0ZXJhdG9yMy5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBfc3RlcDMudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3JFcnJvcjMgPSBlcnI7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgXHUwMDI2XHUwMDI2IF9pdGVyYXRvcjMucmV0dXJuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfaXRlcmF0b3IzLnJldHVybigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzdWJzY3JpYmU6IGZ1bmN0aW9uIHN1YnNjcmliZShsaXN0ZW5lcikge1xuICAgICAgICAgICAgbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7XG4gICAgICAgIH0sXG4gICAgICAgIHVuc3Vic2NyaWJlOiBmdW5jdGlvbiB1bnN1YnNjcmliZShsaXN0ZW5lcikge1xuICAgICAgICAgICAgbGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcik7XG4gICAgICAgIH0sXG4gICAgICAgIHVuc3Vic2NyaWJlQWxsOiBmdW5jdGlvbiB1bnN1YnNjcmliZUFsbCgpIHtcbiAgICAgICAgICAgIGxpc3RlbmVycy5jbGVhcigpO1xuICAgICAgICB9LFxuICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbiB0cmlnZ2VyKGV2ZW50KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgZGF0YSA9IEFycmF5KF9sZW4gXHUwMDNlIDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSBcdTAwM2MgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgICAgICAgICAgZGF0YVtfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCA9IHRydWU7XG4gICAgICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3I0ID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3I0ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjQgPSBsaXN0ZW5lcnNbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDQ7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQgPSAoX3N0ZXA0ID0gX2l0ZXJhdG9yNC5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCA9IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxpc3RlbmVyID0gX3N0ZXA0LnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXJbZXZlbnRdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcltldmVudF0uYXBwbHkobGlzdGVuZXIsIHRvQ29uc3VtYWJsZUFycmF5KGRhdGEpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNCA9IHRydWU7XG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yRXJyb3I0ID0gZXJyO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb240IFx1MDAyNlx1MDAyNiBfaXRlcmF0b3I0LnJldHVybikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yNC5yZXR1cm4oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yNDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG4vLyBUZXh0dXJlIG1hbmFnZW1lbnRcbi8vIEdMIHRleHR1cmUgd3JhcHBlciBvYmplY3QgZm9yIGtlZXBpbmcgdHJhY2sgb2YgYSBnbG9iYWwgc2V0IG9mIHRleHR1cmVzLCBrZXllZCBieSBhIHVuaXF1ZSB1c2VyLWRlZmluZWQgbmFtZVxuXG52YXIgVGV4dHVyZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBUZXh0dXJlKGdsLCBuYW1lKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCBcdTAwM2UgMiBcdTAwMjZcdTAwMjYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTtcbiAgICAgICAgY2xhc3NDYWxsQ2hlY2sodGhpcywgVGV4dHVyZSk7XG5cbiAgICAgICAgc3Vic2NyaWJlTWl4aW4kMSh0aGlzKTtcblxuICAgICAgICB0aGlzLmdsID0gZ2w7XG4gICAgICAgIHRoaXMudGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTtcbiAgICAgICAgaWYgKHRoaXMudGV4dHVyZSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iaW5kKCk7XG5cbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICAgICAgICB0aGlzLnNvdXJjZVR5cGUgPSBudWxsO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBudWxsOyAvLyBhIFByb21pc2Ugb2JqZWN0IHRvIHRyYWNrIHRoZSBsb2FkaW5nIHN0YXRlIG9mIHRoaXMgdGV4dHVyZVxuXG4gICAgICAgIC8vIERlZmF1bHQgdG8gYSAxLXBpeGVsIGJsYWNrIHRleHR1cmUgc28gd2UgY2FuIHNhZmVseSByZW5kZXIgd2hpbGUgd2Ugd2FpdCBmb3IgYW4gaW1hZ2UgdG8gbG9hZFxuICAgICAgICAvLyBTZWU6IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTk3MjIyNDcvd2ViZ2wtd2FpdC1mb3ItdGV4dHVyZS10by1sb2FkXG4gICAgICAgIHRoaXMuc2V0RGF0YSgxLCAxLCBuZXcgVWludDhBcnJheShbMCwgMCwgMCwgMjU1XSksIHsgZmlsdGVyaW5nOiAnbGluZWFyJyB9KTtcbiAgICAgICAgdGhpcy5zZXRGaWx0ZXJpbmcob3B0aW9ucy5maWx0ZXJpbmcpO1xuXG4gICAgICAgIHRoaXMubG9hZChvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvLyBEZXN0cm95IGEgc2luZ2xlIHRleHR1cmUgaW5zdGFuY2VcblxuXG4gICAgY3JlYXRlQ2xhc3MoVGV4dHVyZSwgW3tcbiAgICAgICAga2V5OiAnZGVzdHJveScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5nbC5kZWxldGVUZXh0dXJlKHRoaXMudGV4dHVyZSk7XG4gICAgICAgICAgICB0aGlzLnRleHR1cmUgPSBudWxsO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuZGF0YTtcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2JpbmQnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gYmluZCh1bml0KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHVuaXQgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgaWYgKFRleHR1cmUuYWN0aXZlVW5pdCAhPT0gdW5pdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdsLmFjdGl2ZVRleHR1cmUodGhpcy5nbC5URVhUVVJFMCArIHVuaXQpO1xuICAgICAgICAgICAgICAgICAgICBUZXh0dXJlLmFjdGl2ZVVuaXQgPSB1bml0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChUZXh0dXJlLmFjdGl2ZVRleHR1cmUgIT09IHRoaXMudGV4dHVyZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2wuYmluZFRleHR1cmUodGhpcy5nbC5URVhUVVJFXzJELCB0aGlzLnRleHR1cmUpO1xuICAgICAgICAgICAgICAgIFRleHR1cmUuYWN0aXZlVGV4dHVyZSA9IHRoaXMudGV4dHVyZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnbG9hZCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBsb2FkKCkge1xuICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMudXJsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnVybCA9PT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMudXJsICE9PSB0aGlzLnVybCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFVybChvcHRpb25zLnVybCwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEVsZW1lbnQob3B0aW9ucy5lbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhIFx1MDAyNlx1MDAyNiBvcHRpb25zLndpZHRoIFx1MDAyNlx1MDAyNiBvcHRpb25zLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YShvcHRpb25zLndpZHRoLCBvcHRpb25zLmhlaWdodCwgb3B0aW9ucy5kYXRhLCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldHMgdGV4dHVyZSBmcm9tIGFuIHVybFxuXG4gICAgfSwge1xuICAgICAgICBrZXk6ICdzZXRVcmwnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gc2V0VXJsKHVybCkge1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIFx1MDAzZSAxIFx1MDAyNlx1MDAyNiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudXJsID0gdXJsOyAvLyBzYXZlIFVSTCByZWZlcmVuY2UgKHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2hlbiBlbGVtZW50IGlzIGxvYWRlZCBiZWxvdylcbiAgICAgICAgICAgIHRoaXMuc291cmNlID0gdGhpcy51cmw7XG4gICAgICAgICAgICB0aGlzLnNvdXJjZVR5cGUgPSAndXJsJztcblxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgICAgIHZhciBleHQgPSB1cmwuc3BsaXQoJy4nKS5wb3AoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHZhciBpc1ZpZGVvID0gZXh0ID09PSAnb2d2JyB8fCBleHQgPT09ICd3ZWJtJyB8fCBleHQgPT09ICdtcDQnO1xuXG4gICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgaWYgKGlzVmlkZW8pIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYXV0b3BsYXkgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubXV0ZWQgPSB0cnVlOyAvKiByZXF1aXJlZCBmb3IgbW9kZXJuIGJyb3dzZXJzIHRvIGF1dG9wbGF5IHZpZGVvICovXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5wbGF5KCk7IC8qIGRvZXNuJ3QgYmxvY2sgcHJvbWlzZSBidXQgbmVlZHMgYSBtb3JlIGVsZWdhbnQgc29sdXRpb24gKi9cbiAgICAgICAgICAgICAgICAgICAgfSwgMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5maWx0ZXJpbmcgPSAnbmVhcmVzdCc7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQucHJlbG9hZCA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgICAgICAgICAvLyBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlbGVtZW50Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnNldEVsZW1lbnQoZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdUZXh0dXJlIFxcJycgKyBfdGhpcy5uYW1lICsgJ1xcJzogZmFpbGVkIHRvIGxvYWQgdXJsOiBcXCcnICsgX3RoaXMuc291cmNlICsgJ1xcJycsIGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoX3RoaXMpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZWxlbWVudC5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2FybiBhbmQgcmVzb2x2ZSBvbiBlcnJvclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnVGV4dHVyZSBcXCcnICsgX3RoaXMubmFtZSArICdcXCc6IGZhaWxlZCB0byBsb2FkIHVybDogXFwnJyArIF90aGlzLnNvdXJjZSArICdcXCcnLCBlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShfdGhpcyk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIC8vIFNhZmFyaSBoYXMgYSBidWcgbG9hZGluZyBkYXRhLVVSTCBlbGVtZW50cyB3aXRoIENPUlMgZW5hYmxlZCwgc28gaXQgbXVzdCBiZSBkaXNhYmxlZCBpbiB0aGF0IGNhc2VcbiAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzOTc4XG4gICAgICAgICAgICAgICAgaWYgKCEoaXNTYWZhcmkoKSBcdTAwMjZcdTAwMjYgX3RoaXMuc291cmNlLnNsaWNlKDAsIDUpID09PSAnZGF0YTonKSkge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZWxlbWVudC5zcmMgPSBfdGhpcy5zb3VyY2U7XG4gICAgICAgICAgICAgICAgaWYgKGlzVmlkZW8pIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuc2V0RWxlbWVudChlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXRzIHRleHR1cmUgdG8gYSByYXcgaW1hZ2UgYnVmZmVyXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3NldERhdGEnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gc2V0RGF0YSh3aWR0aCwgaGVpZ2h0LCBkYXRhKSB7XG4gICAgICAgICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggXHUwMDNlIDMgXHUwMDI2XHUwMDI2IGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDoge307XG5cbiAgICAgICAgICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuXG4gICAgICAgICAgICB0aGlzLnNvdXJjZSA9IGRhdGE7XG4gICAgICAgICAgICB0aGlzLnNvdXJjZVR5cGUgPSAnZGF0YSc7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlKG9wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJpbmcob3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IFByb21pc2UucmVzb2x2ZSh0aGlzKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXRzIHRoZSB0ZXh0dXJlIHRvIHRyYWNrIGEgZWxlbWVudCAoY2FudmFzL2ltYWdlKVxuXG4gICAgfSwge1xuICAgICAgICBrZXk6ICdzZXRFbGVtZW50JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHNldEVsZW1lbnQoZWxlbWVudCwgb3B0aW9ucykge1xuICAgICAgICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgICAgICAgIHZhciBlbCA9IGVsZW1lbnQ7XG5cbiAgICAgICAgICAgIC8vIGEgc3RyaW5nIGVsZW1lbnQgaXMgaW50ZXJwZXRlZCBhcyBhIENTUyBzZWxlY3RvclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50IHx8IGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50IHx8IGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zb3VyY2UgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIHRoaXMuc291cmNlVHlwZSA9ICdlbGVtZW50JztcblxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTFZpZGVvRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndpZHRoID0gdGhpcy5zb3VyY2UudmlkZW9XaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLnNvdXJjZS52aWRlb0hlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjYW5wbGF5dGhyb3VnaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzMi5pbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzMi51cGRhdGUob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxNSk7XG4gICAgICAgICAgICAgICAgICAgIH0sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5jdXJyZW50VGltZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnBsYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGUob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyaW5nKG9wdGlvbnMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgbXNnID0gJ3RoZSBcXCdlbGVtZW50XFwnIHBhcmFtZXRlciAoYGVsZW1lbnQ6ICcgKyBKU09OLnN0cmluZ2lmeShlbCkgKyAnYCkgbXVzdCBiZSBhIENTUyAnO1xuICAgICAgICAgICAgICAgIG1zZyArPSAnc2VsZWN0b3Igc3RyaW5nLCBvciBhIFx1MDAzY2NhbnZhc1x1MDAzZSwgXHUwMDNjaW1hZ2VcdTAwM2Ugb3IgXHUwMDNjdmlkZW9cdTAwM2Ugb2JqZWN0JztcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnVGV4dHVyZSBcXCcnICsgdGhpcy5uYW1lICsgJ1xcJzogJyArIG1zZywgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IFByb21pc2UucmVzb2x2ZSh0aGlzKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRpbmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVcGxvYWRzIGN1cnJlbnQgaW1hZ2Ugb3IgYnVmZmVyIHRvIHRoZSBHUFUgKGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSBhbmltYXRlZCB0ZXh0dXJlcyBvbiB0aGUgZmx5KVxuXG4gICAgfSwge1xuICAgICAgICBrZXk6ICd1cGRhdGUnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuYmluZCgpO1xuICAgICAgICAgICAgdGhpcy5nbC5waXhlbFN0b3JlaSh0aGlzLmdsLlVOUEFDS19GTElQX1lfV0VCR0wsIG9wdGlvbnMuVU5QQUNLX0ZMSVBfWV9XRUJHTCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWUpO1xuICAgICAgICAgICAgdGhpcy5nbC5waXhlbFN0b3JlaSh0aGlzLmdsLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCwgb3B0aW9ucy5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wgfHwgZmFsc2UpO1xuXG4gICAgICAgICAgICAvLyBJbWFnZSBvciBDYW52YXMgZWxlbWVudFxuICAgICAgICAgICAgaWYgKHRoaXMuc291cmNlVHlwZSA9PT0gJ2VsZW1lbnQnIFx1MDAyNlx1MDAyNiAodGhpcy5zb3VyY2UgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudCB8fCB0aGlzLnNvdXJjZSBpbnN0YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQgfHwgdGhpcy5zb3VyY2UgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50IFx1MDAyNlx1MDAyNiB0aGlzLnNvdXJjZS5jb21wbGV0ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3VyY2UgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2lkdGggPSB0aGlzLnNvdXJjZS52aWRlb1dpZHRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlaWdodCA9IHRoaXMuc291cmNlLnZpZGVvSGVpZ2h0O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2lkdGggPSB0aGlzLnNvdXJjZS53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLnNvdXJjZS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZ2wudGV4SW1hZ2UyRCh0aGlzLmdsLlRFWFRVUkVfMkQsIDAsIHRoaXMuZ2wuUkdCQSwgdGhpcy5nbC5SR0JBLCB0aGlzLmdsLlVOU0lHTkVEX0JZVEUsIHRoaXMuc291cmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFJhdyBpbWFnZSBidWZmZXJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc291cmNlVHlwZSA9PT0gJ2RhdGEnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2wudGV4SW1hZ2UyRCh0aGlzLmdsLlRFWFRVUkVfMkQsIDAsIHRoaXMuZ2wuUkdCQSwgdGhpcy53aWR0aCwgdGhpcy5oZWlnaHQsIDAsIHRoaXMuZ2wuUkdCQSwgdGhpcy5nbC5VTlNJR05FRF9CWVRFLCB0aGlzLnNvdXJjZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCdsb2FkZWQnLCB0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERldGVybWluZXMgYXBwcm9wcmlhdGUgZmlsdGVyaW5nIG1vZGVcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnc2V0RmlsdGVyaW5nJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHNldEZpbHRlcmluZygpIHtcbiAgICAgICAgICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnBvd2VyT2YyID0gaXNQb3dlck9mMih0aGlzLndpZHRoKSBcdTAwMjZcdTAwMjYgaXNQb3dlck9mMih0aGlzLmhlaWdodCk7XG4gICAgICAgICAgICAvLyBsZXQgZGVmdWFsdEZpbHRlciA9ICh0aGlzLnBvd2VyT2YyID8gJ21pcG1hcCcgOiAnbGluZWFyJyk7XG4gICAgICAgICAgICAvLyB0aGlzLmZpbHRlcmluZyA9IG9wdGlvbnMuZmlsdGVyaW5nIHx8IGRlZnVhbHRGaWx0ZXI7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmluZyA9IG9wdGlvbnMuZmlsdGVyaW5nIHx8ICdsaW5lYXInO1xuXG4gICAgICAgICAgICB2YXIgZ2wgPSB0aGlzLmdsO1xuICAgICAgICAgICAgdGhpcy5iaW5kKCk7XG5cbiAgICAgICAgICAgIC8vIEZvciBwb3dlci1vZi0yIHRleHR1cmVzLCB0aGUgZm9sbG93aW5nIHByZXNldHMgYXJlIGF2YWlsYWJsZTpcbiAgICAgICAgICAgIC8vIG1pcG1hcDogbGluZWFyIGJsZW5kIGZyb20gbmVhcmVzdCBtaXBcbiAgICAgICAgICAgIC8vIGxpbmVhcjogbGluZWFyIGJsZW5kIGZyb20gb3JpZ2luYWwgaW1hZ2UgKG5vIG1pcHMpXG4gICAgICAgICAgICAvLyBuZWFyZXN0OiBuZWFyZXN0IHBpeGVsIGZyb20gb3JpZ2luYWwgaW1hZ2UgKG5vIG1pcHMsICdibG9ja3knIGxvb2spXG4gICAgICAgICAgICBpZiAodGhpcy5wb3dlck9mMikge1xuICAgICAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIG9wdGlvbnMuVEVYVFVSRV9XUkFQX1MgfHwgZ2wuUkVQRUFUKTtcbiAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBvcHRpb25zLlRFWFRVUkVfV1JBUF9UIHx8IGdsLlJFUEVBVCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJpbmcgPT09ICdtaXBtYXAnKSB7XG4gICAgICAgICAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVJfTUlQTUFQX0xJTkVBUik7IC8vIFRPRE86IHVzZSB0cmlsaW5lYXIgZmlsdGVyaW5nIGJ5IGRlZnVhbHQgaW5zdGVhZD9cbiAgICAgICAgICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7XG4gICAgICAgICAgICAgICAgICAgIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5maWx0ZXJpbmcgPT09ICdsaW5lYXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpO1xuICAgICAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyaW5nID09PSAnbmVhcmVzdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpO1xuICAgICAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBXZWJHTCBoYXMgc3RyaWN0IHJlcXVpcmVtZW50cyBvbiBub24tcG93ZXItb2YtMiB0ZXh0dXJlczpcbiAgICAgICAgICAgICAgICAvLyBObyBtaXBtYXBzIGFuZCBtdXN0IGNsYW1wIHRvIGVkZ2VcbiAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTtcbiAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcmluZyA9PT0gJ21pcG1hcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJpbmcgPSAnbGluZWFyJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJpbmcgPT09ICduZWFyZXN0Jykge1xuICAgICAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7XG4gICAgICAgICAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHRvIGxpbmVhciBmb3Igbm9uLXBvd2VyLW9mLTIgdGV4dHVyZXNcbiAgICAgICAgICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7XG4gICAgICAgICAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1dKTtcbiAgICByZXR1cm4gVGV4dHVyZTtcbn0oKTtcblxuVGV4dHVyZS5nZXRNYXhUZXh0dXJlU2l6ZSA9IGZ1bmN0aW9uIChnbCkge1xuICAgIHJldHVybiBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1RFWFRVUkVfU0laRSk7XG59O1xuXG4vLyBHbG9iYWwgc2V0IG9mIHRleHR1cmVzLCBieSBuYW1lXG5UZXh0dXJlLmFjdGl2ZVVuaXQgPSAtMTtcblxuLypcblRoZSBNSVQgTGljZW5zZSAoTUlUKVxuXG5Db3B5cmlnaHQgKGMpIDIwMTUgUGF0cmljaW8gR29uemFsZXogVml2byAoIGh0dHA6Ly93d3cucGF0cmljaW9nb256YWxlenZpdm8uY29tIClcblxuUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZlxudGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgJ1NvZnR3YXJlJyksIHRvIGRlYWwgaW5cbnRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG9cbnVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mXG50aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sXG5zdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG5jb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgJ0FTIElTJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1NcbkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUlxuQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSXG5JTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTlxuQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiovXG5cbnZhciBHbHNsQ2FudmFzID0gZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEdsc2xDYW52YXMoY2FudmFzLCBjb250ZXh0T3B0aW9ucywgb3B0aW9ucykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAgIGNsYXNzQ2FsbENoZWNrKHRoaXMsIEdsc2xDYW52YXMpO1xuXG4gICAgICAgIHN1YnNjcmliZU1peGluJDEodGhpcyk7XG5cbiAgICAgICAgY29udGV4dE9wdGlvbnMgPSBjb250ZXh0T3B0aW9ucyB8fCB7fTtcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgICAgaWYgKGNhbnZhcy5oYXNBdHRyaWJ1dGUoJ2RhdGEtZnVsbHNjcmVlbicpIFx1MDAyNlx1MDAyNiAoY2FudmFzLmdldEF0dHJpYnV0ZSgnZGF0YS1mdWxsc2NyZWVuJykgPT0gXCIxXCIgfHwgY2FudmFzLmdldEF0dHJpYnV0ZSgnZGF0YS1mdWxsc2NyZWVuJykgPT0gXCJ0cnVlXCIpKSB7XG4gICAgICAgICAgICB0aGlzLndpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgICAgICB0aGlzLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMud2lkdGggPSBjYW52YXMuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICB0aGlzLmhlaWdodCA9IGNhbnZhcy5jbGllbnRIZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhbnZhcyA9IGNhbnZhcztcbiAgICAgICAgdGhpcy5nbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5kZXBzID0ge307XG4gICAgICAgIHRoaXMucHJvZ3JhbSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy50ZXh0dXJlcyA9IHt9O1xuICAgICAgICB0aGlzLmJ1ZmZlcnMgPSB7fTtcbiAgICAgICAgdGhpcy51bmlmb3JtcyA9IHt9O1xuICAgICAgICB0aGlzLnZibyA9IHt9O1xuICAgICAgICB0aGlzLmlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hbmltYXRpb25GcmFtZVJlcXVlc3QgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5CVUZGRVJfQ09VTlQgPSAwO1xuICAgICAgICAvLyB0aGlzLlRFWFRVUkVfQ09VTlQgPSAwO1xuXG4gICAgICAgIHRoaXMudmVydGV4U3RyaW5nID0gY29udGV4dE9wdGlvbnMudmVydGV4U3RyaW5nIHx8ICdcXG4jaWZkZWYgR0xfRVNcXG5wcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcXG4jZW5kaWZcXG5cXG5hdHRyaWJ1dGUgdmVjMiBhX3Bvc2l0aW9uO1xcbmF0dHJpYnV0ZSB2ZWMyIGFfdGV4Y29vcmQ7XFxuXFxudmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbiwgMC4wLCAxLjApO1xcbiAgICB2X3RleGNvb3JkID0gYV90ZXhjb29yZDtcXG59XFxuJztcbiAgICAgICAgdGhpcy5mcmFnbWVudFN0cmluZyA9IGNvbnRleHRPcHRpb25zLmZyYWdtZW50U3RyaW5nIHx8ICdcXG4jaWZkZWYgR0xfRVNcXG5wcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcXG4jZW5kaWZcXG5cXG52YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDtcXG5cXG52b2lkIG1haW4oKXtcXG4gICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xcbn1cXG4nO1xuXG4gICAgICAgIC8vIEdMIENvbnRleHRcbiAgICAgICAgdmFyIGdsID0gc2V0dXBXZWJHTChjYW52YXMsIGNvbnRleHRPcHRpb25zLCBvcHRpb25zLm9uRXJyb3IpO1xuICAgICAgICBpZiAoIWdsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nbCA9IGdsO1xuICAgICAgICB0aGlzLnRpbWVMb2FkID0gdGhpcy50aW1lUHJldiA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgICAgICB0aGlzLnRpbWVEZWx0YSA9IDAuMDtcbiAgICAgICAgdGhpcy5mb3JjZVJlbmRlciA9IHRydWU7XG4gICAgICAgIHRoaXMucGF1c2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVhbFRvQ1NTUGl4ZWxzID0gd2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMTtcblxuICAgICAgICAvLyBBbGxvdyBhbHBoYVxuICAgICAgICBjYW52YXMuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gY29udGV4dE9wdGlvbnMuYmFja2dyb3VuZENvbG9yIHx8ICdyZ2JhKDEsMSwxLDApJztcblxuICAgICAgICAvLyBMb2FkIHNoYWRlclxuICAgICAgICBpZiAoY2FudmFzLmhhc0F0dHJpYnV0ZSgnZGF0YS1mcmFnbWVudCcpKSB7XG4gICAgICAgICAgICB0aGlzLmZyYWdtZW50U3RyaW5nID0gY2FudmFzLmdldEF0dHJpYnV0ZSgnZGF0YS1mcmFnbWVudCcpO1xuICAgICAgICB9IGVsc2UgaWYgKGNhbnZhcy5oYXNBdHRyaWJ1dGUoJ2RhdGEtZnJhZ21lbnQtdXJsJykpIHtcbiAgICAgICAgICAgIHZhciBzb3VyY2UgPSBjYW52YXMuZ2V0QXR0cmlidXRlKCdkYXRhLWZyYWdtZW50LXVybCcpO1xuICAgICAgICAgICAgeGhyLmdldChzb3VyY2UsIGZ1bmN0aW9uIChlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5sb2FkKGJvZHksIF90aGlzLnZlcnRleFN0cmluZyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExvYWQgc2hhZGVyXG4gICAgICAgIGlmIChjYW52YXMuaGFzQXR0cmlidXRlKCdkYXRhLXZlcnRleCcpKSB7XG4gICAgICAgICAgICB0aGlzLnZlcnRleFN0cmluZyA9IGNhbnZhcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmVydGV4Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2FudmFzLmhhc0F0dHJpYnV0ZSgnZGF0YS12ZXJ0ZXgtdXJsJykpIHtcbiAgICAgICAgICAgIHZhciBfc291cmNlID0gY2FudmFzLmdldEF0dHJpYnV0ZSgnZGF0YS12ZXJ0ZXgtdXJsJyk7XG4gICAgICAgICAgICB4aHIuZ2V0KF9zb3VyY2UsIGZ1bmN0aW9uIChlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5sb2FkKF90aGlzLmZyYWdtZW50U3RyaW5nLCBib2R5KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2FkKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnByb2dyYW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERlZmluZSBWZXJ0ZXggYnVmZmVyXG4gICAgICAgIHZhciB0ZXhDb29yZHNMb2MgPSBnbC5nZXRBdHRyaWJMb2NhdGlvbih0aGlzLnByb2dyYW0sICdhX3RleGNvb3JkJyk7XG4gICAgICAgIHRoaXMudmJvLnRleENvb3JkcyA9IGdsLmNyZWF0ZUJ1ZmZlcigpO1xuICAgICAgICB0aGlzLmdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB0aGlzLnZiby50ZXhDb29yZHMpO1xuICAgICAgICB0aGlzLmdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFswLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDEuMCwgMS4wLCAwLjAsIDEuMCwgMS4wXSksIGdsLlNUQVRJQ19EUkFXKTtcbiAgICAgICAgdGhpcy5nbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh0ZXhDb29yZHNMb2MpO1xuICAgICAgICB0aGlzLmdsLnZlcnRleEF0dHJpYlBvaW50ZXIodGV4Q29vcmRzTG9jLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApO1xuXG4gICAgICAgIHZhciB2ZXJ0aWNlc0xvYyA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHRoaXMucHJvZ3JhbSwgJ2FfcG9zaXRpb24nKTtcbiAgICAgICAgdGhpcy52Ym8udmVydGljZXMgPSBnbC5jcmVhdGVCdWZmZXIoKTtcbiAgICAgICAgdGhpcy5nbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdGhpcy52Ym8udmVydGljZXMpO1xuICAgICAgICB0aGlzLmdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFstMS4wLCAtMS4wLCAxLjAsIC0xLjAsIC0xLjAsIDEuMCwgLTEuMCwgMS4wLCAxLjAsIC0xLjAsIDEuMCwgMS4wXSksIGdsLlNUQVRJQ19EUkFXKTtcbiAgICAgICAgdGhpcy5nbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh2ZXJ0aWNlc0xvYyk7XG4gICAgICAgIHRoaXMuZ2wudmVydGV4QXR0cmliUG9pbnRlcih2ZXJ0aWNlc0xvYywgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTtcblxuICAgICAgICAvLyBsb2FkIFRFWFRVUkVTXG4gICAgICAgIGlmIChjYW52YXMuaGFzQXR0cmlidXRlKCdkYXRhLXRleHR1cmVzJykpIHtcbiAgICAgICAgICAgIHZhciBpbWdMaXN0ID0gY2FudmFzLmdldEF0dHJpYnV0ZSgnZGF0YS10ZXh0dXJlcycpLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICBmb3IgKHZhciBuSW1nIGluIGltZ0xpc3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFVuaWZvcm0oJ3VfdGV4JyArIG5JbWcsIGltZ0xpc3RbbkltZ10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT0gRVZFTlRTXG4gICAgICAgIHZhciBtb3VzZSA9IHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAwXG4gICAgICAgIH07XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBtb3VzZS54ID0gZS5jbGllbnRYIHx8IGUucGFnZVg7XG4gICAgICAgICAgICBtb3VzZS55ID0gZS5jbGllbnRZIHx8IGUucGFnZVk7XG4gICAgICAgIH0sIGZhbHNlKTtcblxuICAgICAgICB2YXIgc2FuZGJveCA9IHRoaXM7XG4gICAgICAgIGZ1bmN0aW9uIFJlbmRlckxvb3AoKSB7XG4gICAgICAgICAgICBpZiAoc2FuZGJveC5uTW91c2UgXHUwMDNlIDEpIHtcbiAgICAgICAgICAgICAgICBzYW5kYm94LnNldE1vdXNlKG1vdXNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNhbmRib3gucmVzaXplKCkpIHtcbiAgICAgICAgICAgICAgICBzYW5kYm94LmZvcmNlUmVuZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2FuZGJveC5yZW5kZXIoKTtcbiAgICAgICAgICAgIHNhbmRib3guYW5pbWF0aW9uRnJhbWVSZXF1ZXN0ID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShSZW5kZXJMb29wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0YXJ0XG4gICAgICAgIHRoaXMuc2V0TW91c2UoeyB4OiAwLCB5OiAwIH0pO1xuICAgICAgICBSZW5kZXJMb29wKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNyZWF0ZUNsYXNzKEdsc2xDYW52YXMsIFt7XG4gICAgICAgIGtleTogJ2Rlc3Ryb3knLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgICAgIC8vIFN0b3AgdGhlIGFuaW1hdGlvblxuICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRpb25GcmFtZVJlcXVlc3QpO1xuXG4gICAgICAgICAgICB0aGlzLmFuaW1hdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAodmFyIHRleCBpbiB0aGlzLnRleHR1cmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRleC5kZXN0cm95KSB7XG4gICAgICAgICAgICAgICAgICAgIHRleC5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50ZXh0dXJlcyA9IHt9O1xuICAgICAgICAgICAgZm9yICh2YXIgYXR0IGluIHRoaXMuYXR0cmlicykge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2wuZGVsZXRlQnVmZmVyKHRoaXMuYXR0cmlic1thdHRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZ2wudXNlUHJvZ3JhbShudWxsKTtcbiAgICAgICAgICAgIHRoaXMuZ2wuZGVsZXRlUHJvZ3JhbSh0aGlzLnByb2dyYW0pO1xuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuYnVmZmVycykge1xuICAgICAgICAgICAgICAgIHZhciBidWZmZXIgPSB0aGlzLmJ1ZmZlcnNba2V5XTtcbiAgICAgICAgICAgICAgICB0aGlzLmdsLmRlbGV0ZVByb2dyYW0oYnVmZmVyLnByb2dyYW0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnByb2dyYW0gPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5nbCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2xvYWQnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gbG9hZChmcmFnU3RyaW5nLCB2ZXJ0U3RyaW5nKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgICAgICAgLy8gTG9hZCB2ZXJ0ZXggc2hhZGVyIGlmIHRoZXJlIGlzIG9uZVxuICAgICAgICAgICAgaWYgKHZlcnRTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZlcnRleFN0cmluZyA9IHZlcnRTdHJpbmc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIExvYWQgZnJhZ21lbnQgc2hhZGVyIGlmIHRoZXJlIGlzIG9uZVxuICAgICAgICAgICAgaWYgKGZyYWdTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZyYWdtZW50U3RyaW5nID0gZnJhZ1N0cmluZztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGxpbmVzID0gdGhpcy5mcmFnbWVudFN0cmluZy5zcGxpdCgvXFxyP1xcbi8pO1xuICAgICAgICAgICAgdGhpcy5mcmFnbWVudFN0cmluZyA9IFwiI2RlZmluZSBQTEFURk9STV9XRUJHTFxcbiNsaW5lIDBcXG5cIjtcblxuICAgICAgICAgICAgbGluZXMuZm9yRWFjaChmdW5jdGlvbiAobGluZSwgaSkge1xuICAgICAgICAgICAgICAgIHZhciBsaW5lX3RyaW0gPSBsaW5lLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBpZiAobGluZV90cmltLnN0YXJ0c1dpdGgoJyNpbmNsdWRlIFxcXCJseWdpYScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkZXAgPSBsaW5lX3RyaW0uc3Vic3RyaW5nKDE1KS5yZXBsYWNlKC9cXCd8XFxcInxcXDt8XFxzL2csICcnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlcC5lbmRzV2l0aCgnZ2xzbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXMyLmRlcHNbZGVwXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFwiaHR0cHM6Ly9seWdpYS54eXpcIiArIGRlcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczIuZGVwc1tkZXBdID0gZ2V0RmlsZSh1cmwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMyLmZyYWdtZW50U3RyaW5nICs9IF90aGlzMi5kZXBzW2RlcF0gKyAnXFxuI2xpbmUgJyArIChpICsgMSkgKyAnXFxuJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBfdGhpczIuZnJhZ21lbnRTdHJpbmcgKz0gbGluZSArICdcXG4nO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZnJhZ21lbnRTdHJpbmcpO1xuXG4gICAgICAgICAgICB0aGlzLmFuaW1hdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm5EZWx0YSA9ICh0aGlzLmZyYWdtZW50U3RyaW5nLm1hdGNoKC91X2RlbHRhL2cpIHx8IFtdKS5sZW5ndGg7XG4gICAgICAgICAgICB0aGlzLm5UaW1lID0gKHRoaXMuZnJhZ21lbnRTdHJpbmcubWF0Y2goL3VfdGltZS9nKSB8fCBbXSkubGVuZ3RoO1xuICAgICAgICAgICAgdGhpcy5uRGF0ZSA9ICh0aGlzLmZyYWdtZW50U3RyaW5nLm1hdGNoKC91X2RhdGUvZykgfHwgW10pLmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMubk1vdXNlID0gKHRoaXMuZnJhZ21lbnRTdHJpbmcubWF0Y2goL3VfbW91c2UvZykgfHwgW10pLmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMuYW5pbWF0ZWQgPSB0aGlzLm5EYXRlIFx1MDAzZSAxIHx8IHRoaXMublRpbWUgXHUwMDNlIDEgfHwgdGhpcy5uTW91c2UgXHUwMDNlIDE7XG5cbiAgICAgICAgICAgIHZhciBuVGV4dHVyZXMgPSB0aGlzLmZyYWdtZW50U3RyaW5nLnNlYXJjaCgvc2FtcGxlcjJEL2cpO1xuICAgICAgICAgICAgaWYgKG5UZXh0dXJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfbGluZXMgPSB0aGlzLmZyYWdtZW50U3RyaW5nLnNwbGl0KCdcXG4nKTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSBcdTAwM2MgX2xpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IF9saW5lc1tpXS5tYXRjaCgvdW5pZm9ybVxccypzYW1wbGVyMkRcXHMqKFtcXHddKik7XFxzKlxcL1xcL1xccyooW1xcd3xcXDpcXC9cXC98XFwufFxcLXxcXF9dKikvaSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGV4dCA9IG1hdGNoWzJdLnNwbGl0KCcuJykucG9wKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaFsxXSBcdTAwMjZcdTAwMjYgbWF0Y2hbMl0gXHUwMDI2XHUwMDI2IChleHQgPT09ICdqcGcnIHx8IGV4dCA9PT0gJ2pwZWcnIHx8IGV4dCA9PT0gJ3BuZycgfHwgZXh0ID09PSAnb2d2JyB8fCBleHQgPT09ICd3ZWJtJyB8fCBleHQgPT09ICdtcDQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VW5pZm9ybShtYXRjaFsxXSwgbWF0Y2hbMl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYWluID0gX2xpbmVzW2ldLm1hdGNoKC9cXHMqdm9pZFxccyptYWluXFxzKi9nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1haW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgdmVydGV4U2hhZGVyID0gY3JlYXRlU2hhZGVyKHRoaXMsIHRoaXMudmVydGV4U3RyaW5nLCB0aGlzLmdsLlZFUlRFWF9TSEFERVIpO1xuICAgICAgICAgICAgdmFyIGZyYWdtZW50U2hhZGVyID0gY3JlYXRlU2hhZGVyKHRoaXMsIHRoaXMuZnJhZ21lbnRTdHJpbmcsIHRoaXMuZ2wuRlJBR01FTlRfU0hBREVSKTtcblxuICAgICAgICAgICAgLy8gSWYgRnJhZ21lbnQgc2hhZGVyIGZhaWxzIGxvYWQgYSBlbXB0eSBvbmUgdG8gc2lnbiB0aGUgZXJyb3JcbiAgICAgICAgICAgIGlmICghZnJhZ21lbnRTaGFkZXIpIHtcbiAgICAgICAgICAgICAgICBmcmFnbWVudFNoYWRlciA9IGNyZWF0ZVNoYWRlcih0aGlzLCAndm9pZCBtYWluKCl7XFxuXFx0Z2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xcbn0nLCB0aGlzLmdsLkZSQUdNRU5UX1NIQURFUik7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENyZWF0ZSBhbmQgdXNlIHByb2dyYW1cbiAgICAgICAgICAgIHZhciBwcm9ncmFtID0gY3JlYXRlUHJvZ3JhbSh0aGlzLCBbdmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcl0pOyAvLywgWzAsMV0sWydhX3RleGNvb3JkJywnYV9wb3NpdGlvbiddKTtcbiAgICAgICAgICAgIHRoaXMuZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTtcblxuICAgICAgICAgICAgLy8gRGVsZXRlIHNoYWRlcnNcbiAgICAgICAgICAgIC8vIHRoaXMuZ2wuZGV0YWNoU2hhZGVyKHByb2dyYW0sIHZlcnRleFNoYWRlcik7XG4gICAgICAgICAgICAvLyB0aGlzLmdsLmRldGFjaFNoYWRlcihwcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7XG4gICAgICAgICAgICB0aGlzLmdsLmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpO1xuICAgICAgICAgICAgdGhpcy5nbC5kZWxldGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIpO1xuXG4gICAgICAgICAgICB0aGlzLnByb2dyYW0gPSBwcm9ncmFtO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2UgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLkJVRkZFUl9DT1VOVCA9IDA7XG4gICAgICAgICAgICB2YXIgYnVmZmVycyA9IHRoaXMuZ2V0QnVmZmVycyh0aGlzLmZyYWdtZW50U3RyaW5nKTtcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhidWZmZXJzKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRQcm9ncmFtcyhidWZmZXJzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYnVmZmVycyA9IGJ1ZmZlcnM7XG4gICAgICAgICAgICB0aGlzLnRleHVyZUluZGV4ID0gdGhpcy5CVUZGRVJfQ09VTlQ7XG5cbiAgICAgICAgICAgIC8vIFRyaWdnZXIgZXZlbnRcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlcignbG9hZCcsIHt9KTtcblxuICAgICAgICAgICAgdGhpcy5mb3JjZVJlbmRlciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICd0ZXN0JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHRlc3QoY2FsbGJhY2ssIGZyYWdTdHJpbmcsIHZlcnRTdHJpbmcpIHtcbiAgICAgICAgICAgIC8vIFRoYW5rcyB0byBAdGhlc3BpdGUgZm9yIHRoZSBoZWxwIGhlcmVcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL2V4dGVuc2lvbnMvRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5L1xuICAgICAgICAgICAgdmFyIHByZV90ZXN0X3ZlcnQgPSB0aGlzLnZlcnRleFN0cmluZztcbiAgICAgICAgICAgIHZhciBwcmVfdGVzdF9mcmFnID0gdGhpcy5mcmFnbWVudFN0cmluZztcbiAgICAgICAgICAgIHZhciBwcmVfdGVzdF9wYXVzZWQgPSB0aGlzLnBhdXNlZDtcblxuICAgICAgICAgICAgdmFyIGV4dCA9IHRoaXMuZ2wuZ2V0RXh0ZW5zaW9uKCdFWFRfZGlzam9pbnRfdGltZXJfcXVlcnknKTtcbiAgICAgICAgICAgIHZhciBxdWVyeSA9IGV4dC5jcmVhdGVRdWVyeUVYVCgpO1xuICAgICAgICAgICAgdmFyIHdhc1ZhbGlkID0gdGhpcy5pc1ZhbGlkO1xuXG4gICAgICAgICAgICBpZiAoZnJhZ1N0cmluZyB8fCB2ZXJ0U3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkKGZyYWdTdHJpbmcsIHZlcnRTdHJpbmcpO1xuICAgICAgICAgICAgICAgIHdhc1ZhbGlkID0gdGhpcy5pc1ZhbGlkO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9yY2VSZW5kZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGV4dC5iZWdpblF1ZXJ5RVhUKGV4dC5USU1FX0VMQVBTRURfRVhULCBxdWVyeSk7XG4gICAgICAgICAgICB0aGlzLmZvcmNlUmVuZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgICAgICBleHQuZW5kUXVlcnlFWFQoZXh0LlRJTUVfRUxBUFNFRF9FWFQpO1xuXG4gICAgICAgICAgICB2YXIgc2FuZGJveCA9IHRoaXM7XG4gICAgICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkge1xuICAgICAgICAgICAgICAgIC8vIFJldmVydCBjaGFuZ2VzLi4uIGdvIGJhY2sgdG8gbm9ybWFsXG4gICAgICAgICAgICAgICAgc2FuZGJveC5wYXVzZWQgPSBwcmVfdGVzdF9wYXVzZWQ7XG4gICAgICAgICAgICAgICAgaWYgKGZyYWdTdHJpbmcgfHwgdmVydFN0cmluZykge1xuICAgICAgICAgICAgICAgICAgICBzYW5kYm94LmxvYWQocHJlX3Rlc3RfZnJhZywgcHJlX3Rlc3RfdmVydCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gd2FpdEZvclRlc3QoKSB7XG4gICAgICAgICAgICAgICAgc2FuZGJveC5mb3JjZVJlbmRlciA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2FuZGJveC5yZW5kZXIoKTtcbiAgICAgICAgICAgICAgICB2YXIgYXZhaWxhYmxlID0gZXh0LmdldFF1ZXJ5T2JqZWN0RVhUKHF1ZXJ5LCBleHQuUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQpO1xuICAgICAgICAgICAgICAgIHZhciBkaXNqb2ludCA9IHNhbmRib3guZ2wuZ2V0UGFyYW1ldGVyKGV4dC5HUFVfRElTSk9JTlRfRVhUKTtcbiAgICAgICAgICAgICAgICBpZiAoYXZhaWxhYmxlIFx1MDAyNlx1MDAyNiAhZGlzam9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhc1ZhbGlkOiB3YXNWYWxpZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYWc6IGZyYWdTdHJpbmcgfHwgc2FuZGJveC5mcmFnbWVudFN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnQ6IHZlcnRTdHJpbmcgfHwgc2FuZGJveC52ZXJ0ZXhTdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lRWxhcHNlZE1zOiBleHQuZ2V0UXVlcnlPYmplY3RFWFQocXVlcnksIGV4dC5RVUVSWV9SRVNVTFRfRVhUKSAvIDEwMDAwMDAuMFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJldCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh3YWl0Rm9yVGVzdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2FpdEZvclRlc3QoKTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnbG9hZFRleHR1cmUnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gbG9hZFRleHR1cmUobmFtZSwgdXJsRWxlbWVudE9yRGF0YSwgb3B0aW9ucykge1xuICAgICAgICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgICAgICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiB1cmxFbGVtZW50T3JEYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMudXJsID0gdXJsRWxlbWVudE9yRGF0YTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKHR5cGVvZiB1cmxFbGVtZW50T3JEYXRhID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZih1cmxFbGVtZW50T3JEYXRhKSkgPT09ICdvYmplY3QnIFx1MDAyNlx1MDAyNiB1cmxFbGVtZW50T3JEYXRhLmRhdGEgXHUwMDI2XHUwMDI2IHVybEVsZW1lbnRPckRhdGEud2lkdGggXHUwMDI2XHUwMDI2IHVybEVsZW1lbnRPckRhdGEuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhID0gdXJsRWxlbWVudE9yRGF0YS5kYXRhO1xuICAgICAgICAgICAgICAgIG9wdGlvbnMud2lkdGggPSB1cmxFbGVtZW50T3JEYXRhLndpZHRoO1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuaGVpZ2h0ID0gdXJsRWxlbWVudE9yRGF0YS5oZWlnaHQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCh0eXBlb2YgdXJsRWxlbWVudE9yRGF0YSA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YodXJsRWxlbWVudE9yRGF0YSkpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuZWxlbWVudCA9IHVybEVsZW1lbnRPckRhdGE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRleHR1cmVzW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGV4dHVyZXNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0dXJlc1tuYW1lXS5sb2FkKG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHR1cmVzW25hbWVdLm9uKCdsb2FkZWQnLCBmdW5jdGlvbiAoYXJncykge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMzLmZvcmNlUmVuZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRleHR1cmVzW25hbWVdID0gbmV3IFRleHR1cmUodGhpcy5nbCwgbmFtZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgdGhpcy50ZXh0dXJlc1tuYW1lXS5vbignbG9hZGVkJywgZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMzLmZvcmNlUmVuZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAncmVmcmVzaFVuaWZvcm1zJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlZnJlc2hVbmlmb3JtcygpIHtcbiAgICAgICAgICAgIHRoaXMudW5pZm9ybXMgPSB7fTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnc2V0VW5pZm9ybScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRVbmlmb3JtKG5hbWUpIHtcbiAgICAgICAgICAgIHZhciB1ID0ge307XG5cbiAgICAgICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCB2YWx1ZSA9IEFycmF5KF9sZW4gXHUwMDNlIDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSBcdTAwM2MgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB1W25hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLnNldFVuaWZvcm1zKHUpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdzZXRVbmlmb3JtcycsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRVbmlmb3Jtcyh1bmlmb3Jtcykge1xuICAgICAgICAgICAgdmFyIHBhcnNlZCA9IHBhcnNlVW5pZm9ybXModW5pZm9ybXMpO1xuICAgICAgICAgICAgLy8gU2V0IGVhY2ggdW5pZm9ybVxuICAgICAgICAgICAgZm9yICh2YXIgdSBpbiBwYXJzZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFyc2VkW3VdLnR5cGUgPT09ICdzYW1wbGVyMkQnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEZvciB0ZXh0dXJlcywgd2UgbmVlZCB0byB0cmFjayB0ZXh0dXJlIHVuaXRzLCBzbyB3ZSBoYXZlIGEgc3BlY2lhbCBzZXR0ZXJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy51bmlmb3JtVGV4dHVyZShwYXJzZWRbdV0ubmFtZSwgcGFyc2VkW3VdLnZhbHVlWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkVGV4dHVyZShwYXJzZWRbdV0ubmFtZSwgcGFyc2VkW3VdLnZhbHVlWzBdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuaWZvcm0ocGFyc2VkW3VdLm1ldGhvZCwgcGFyc2VkW3VdLnR5cGUsIHBhcnNlZFt1XS5uYW1lLCBwYXJzZWRbdV0udmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZm9yY2VSZW5kZXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdzZXRNb3VzZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRNb3VzZShtb3VzZSkge1xuICAgICAgICAgICAgLy8gc2V0IHRoZSBtb3VzZSB1bmlmb3JtXG4gICAgICAgICAgICB2YXIgcmVjdCA9IHRoaXMuY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgaWYgKG1vdXNlIFx1MDAyNlx1MDAyNiBtb3VzZS54IFx1MDAyNlx1MDAyNiBtb3VzZS54IFx1MDAzZT0gcmVjdC5sZWZ0IFx1MDAyNlx1MDAyNiBtb3VzZS54IFx1MDAzYz0gcmVjdC5yaWdodCBcdTAwMjZcdTAwMjYgbW91c2UueSBcdTAwMjZcdTAwMjYgbW91c2UueSBcdTAwM2U9IHJlY3QudG9wIFx1MDAyNlx1MDAyNiBtb3VzZS55IFx1MDAzYz0gcmVjdC5ib3R0b20pIHtcblxuICAgICAgICAgICAgICAgIHZhciBtb3VzZV94ID0gKG1vdXNlLnggLSByZWN0LmxlZnQpICogdGhpcy5yZWFsVG9DU1NQaXhlbHM7XG4gICAgICAgICAgICAgICAgdmFyIG1vdXNlX3kgPSB0aGlzLmNhbnZhcy5oZWlnaHQgLSAobW91c2UueSAtIHJlY3QudG9wKSAqIHRoaXMucmVhbFRvQ1NTUGl4ZWxzO1xuXG4gICAgICAgICAgICAgICAgdGhpcy51bmlmb3JtKCcyZicsICd2ZWMyJywgJ3VfbW91c2UnLCBtb3VzZV94LCBtb3VzZV95KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGV4OiBwcm9ncmFtLnVuaWZvcm0oJzNmJywgJ3Bvc2l0aW9uJywgeCwgeSwgeik7XG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3VuaWZvcm0nLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdW5pZm9ybShtZXRob2QsIHR5cGUsIG5hbWUpIHtcbiAgICAgICAgICAgIC8vICd2YWx1ZScgaXMgYSBtZXRob2QtYXBwcm9wcmlhdGUgYXJndW1lbnRzIGxpc3RcbiAgICAgICAgICAgIHRoaXMudW5pZm9ybXNbbmFtZV0gPSB0aGlzLnVuaWZvcm1zW25hbWVdIHx8IHt9O1xuICAgICAgICAgICAgdmFyIHVuaWZvcm0gPSB0aGlzLnVuaWZvcm1zW25hbWVdO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIHZhbHVlID0gQXJyYXkoX2xlbjIgXHUwMDNlIDMgPyBfbGVuMiAtIDMgOiAwKSwgX2tleTIgPSAzOyBfa2V5MiBcdTAwM2MgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgICAgICAgICB2YWx1ZVtfa2V5MiAtIDNdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGNoYW5nZSA9IGlzRGlmZih1bmlmb3JtLnZhbHVlLCB2YWx1ZSk7XG5cbiAgICAgICAgICAgIC8vIHJlbWVtYmVyIGFuZCBrZWVwIHRyYWNrIG9mIHVuaWZvcm1zIGxvY2F0aW9uIHRvIHNhdmUgY2FsbHNcbiAgICAgICAgICAgIGlmIChjaGFuZ2UgfHwgdGhpcy5jaGFuZ2UgfHwgIXVuaWZvcm0ubG9jYXRpb24gfHwgIXVuaWZvcm0udmFsdWUpIHtcbiAgICAgICAgICAgICAgICB1bmlmb3JtLm5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHVuaWZvcm0udHlwZSA9IHR5cGU7XG4gICAgICAgICAgICAgICAgdW5pZm9ybS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHVuaWZvcm0ubWV0aG9kID0gJ3VuaWZvcm0nICsgbWV0aG9kO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2wudXNlUHJvZ3JhbSh0aGlzLnByb2dyYW0pO1xuICAgICAgICAgICAgICAgIHVuaWZvcm0ubG9jYXRpb24gPSB0aGlzLmdsLmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0sIG5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2xbdW5pZm9ybS5tZXRob2RdLmFwcGx5KHRoaXMuZ2wsIFt1bmlmb3JtLmxvY2F0aW9uXS5jb25jYXQodW5pZm9ybS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGNoYW5nZSB1cGRhdGUgYW5kIHRoZXJlIGlzIGJ1ZmZlciB1cGRhdGUgbWFudWFsbHkgb25lIGJ5IG9uZVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLmJ1ZmZlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJ1ZmZlciA9IHRoaXMuYnVmZmVyc1trZXldO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdsLnVzZVByb2dyYW0oYnVmZmVyLnByb2dyYW0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb24gPSB0aGlzLmdsLmdldFVuaWZvcm1Mb2NhdGlvbihidWZmZXIucHJvZ3JhbSwgbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2xbdW5pZm9ybS5tZXRob2RdLmFwcGx5KHRoaXMuZ2wsIFtsb2NhdGlvbl0uY29uY2F0KHVuaWZvcm0udmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3VuaWZvcm1UZXh0dXJlJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHVuaWZvcm1UZXh0dXJlKG5hbWUsIHRleHR1cmUsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRleHR1cmVzW25hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRUZXh0dXJlKG5hbWUsIHRleHR1cmUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuaWZvcm0oJzFpJywgJ3NhbXBsZXIyRCcsIG5hbWUsIHRoaXMudGV4dXJlSW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuYnVmZmVycykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYnVmZmVyID0gdGhpcy5idWZmZXJzW2tleV07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2wudXNlUHJvZ3JhbShidWZmZXIucHJvZ3JhbSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2wuYWN0aXZlVGV4dHVyZSh0aGlzLmdsLlRFWFRVUkUwICsgdGhpcy50ZXh1cmVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2wuYmluZFRleHR1cmUodGhpcy5nbC5URVhUVVJFXzJELCB0aGlzLnRleHR1cmVzW25hbWVdLnRleHR1cmUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmdsLnVzZVByb2dyYW0odGhpcy5wcm9ncmFtKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdsLmFjdGl2ZVRleHR1cmUodGhpcy5nbC5URVhUVVJFMCArIHRoaXMudGV4dXJlSW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2wuYmluZFRleHR1cmUodGhpcy5nbC5URVhUVVJFXzJELCB0aGlzLnRleHR1cmVzW25hbWVdLnRleHR1cmUpO1xuICAgICAgICAgICAgICAgIHRoaXMudW5pZm9ybSgnMmYnLCAndmVjMicsIG5hbWUgKyAnUmVzb2x1dGlvbicsIHRoaXMudGV4dHVyZXNbbmFtZV0ud2lkdGgsIHRoaXMudGV4dHVyZXNbbmFtZV0uaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAncmVzaXplJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2l6ZSgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLndpZHRoICE9PSB0aGlzLmNhbnZhcy5jbGllbnRXaWR0aCB8fCB0aGlzLmhlaWdodCAhPT0gdGhpcy5jYW52YXMuY2xpZW50SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFsVG9DU1NQaXhlbHMgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuXG4gICAgICAgICAgICAgICAgLy8gTG9va3VwIHRoZSBzaXplIHRoZSBicm93c2VyIGlzIGRpc3BsYXlpbmcgdGhlIGNhbnZhcyBpbiBDU1MgcGl4ZWxzXG4gICAgICAgICAgICAgICAgLy8gYW5kIGNvbXB1dGUgYSBzaXplIG5lZWRlZCB0byBtYWtlIG91ciBkcmF3aW5nYnVmZmVyIG1hdGNoIGl0IGluXG4gICAgICAgICAgICAgICAgLy8gZGV2aWNlIHBpeGVscy5cbiAgICAgICAgICAgICAgICB2YXIgZGlzcGxheVdpZHRoID0gTWF0aC5mbG9vcih0aGlzLmdsLmNhbnZhcy5jbGllbnRXaWR0aCAqIHRoaXMucmVhbFRvQ1NTUGl4ZWxzKTtcbiAgICAgICAgICAgICAgICB2YXIgZGlzcGxheUhlaWdodCA9IE1hdGguZmxvb3IodGhpcy5nbC5jYW52YXMuY2xpZW50SGVpZ2h0ICogdGhpcy5yZWFsVG9DU1NQaXhlbHMpO1xuXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGNhbnZhcyBpcyBub3QgdGhlIHNhbWUgc2l6ZS5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5nbC5jYW52YXMud2lkdGggIT09IGRpc3BsYXlXaWR0aCB8fCB0aGlzLmdsLmNhbnZhcy5oZWlnaHQgIT09IGRpc3BsYXlIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSB0aGUgY2FudmFzIHRoZSBzYW1lIHNpemVcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nbC5jYW52YXMud2lkdGggPSBkaXNwbGF5V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2wuY2FudmFzLmhlaWdodCA9IGRpc3BsYXlIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgdmlld3BvcnQgdG8gbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nbC52aWV3cG9ydCgwLCAwLCB0aGlzLmdsLmNhbnZhcy53aWR0aCwgdGhpcy5nbC5jYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy53aWR0aCA9IHRoaXMuY2FudmFzLmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5jYW52YXMuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplU3dhcHBhYmxlQnVmZmVycygpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3JlbmRlcicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSBpc0NhbnZhc1Zpc2libGUodGhpcy5jYW52YXMpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9yY2VSZW5kZXIgfHwgdGhpcy5jaGFuZ2UgfHwgdGhpcy5hbmltYXRlZCBcdTAwMjZcdTAwMjYgdGhpcy52aXNpYmxlIFx1MDAyNlx1MDAyNiAhdGhpcy5wYXVzZWQpIHtcblxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBVbmlmb3JtcyB3aGVuIGFyZSBuZWVkXG4gICAgICAgICAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgIHZhciBub3cgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVEZWx0YSA9IChub3cgLSB0aGlzLnRpbWVQcmV2KSAvIDEwMDAuMDtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVQcmV2ID0gbm93O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5EZWx0YSBcdTAwM2UgMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdGhlIGRlbHRhIHRpbWUgdW5pZm9ybVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuaWZvcm0oJzFmJywgJ2Zsb2F0JywgJ3VfZGVsdGEnLCB0aGlzLnRpbWVEZWx0YSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMublRpbWUgXHUwMDNlIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRoZSBlbGFwc2VkIHRpbWUgdW5pZm9ybVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuaWZvcm0oJzFmJywgJ2Zsb2F0JywgJ3VfdGltZScsIChub3cgLSB0aGlzLnRpbWVMb2FkKSAvIDEwMDAuMCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubkRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGRhdGUgdW5pZm9ybTogeWVhci9tb250aC9kYXkvdGltZV9pbl9zZWNcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51bmlmb3JtKCc0ZicsICdmbG9hdCcsICd1X2RhdGUnLCBkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCksIGRhdGUuZ2V0SG91cnMoKSAqIDM2MDAgKyBkYXRlLmdldE1pbnV0ZXMoKSAqIDYwICsgZGF0ZS5nZXRTZWNvbmRzKCkgKyBkYXRlLmdldE1pbGxpc2Vjb25kcygpICogMC4wMDEpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIHNldCB0aGUgcmVzb2x1dGlvbiB1bmlmb3JtXG4gICAgICAgICAgICAgICAgdGhpcy51bmlmb3JtKCcyZicsICd2ZWMyJywgJ3VfcmVzb2x1dGlvbicsIHRoaXMuY2FudmFzLndpZHRoLCB0aGlzLmNhbnZhcy5oZWlnaHQpO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuYnVmZmVycykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYnVmZmVyID0gdGhpcy5idWZmZXJzW2tleV07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5pZm9ybSgnMWknLCAnc2FtcGxlcjJEJywgYnVmZmVyLm5hbWUsIGJ1ZmZlci5idW5kbGUuaW5wdXQuaW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudGV4dXJlSW5kZXggPSB0aGlzLkJVRkZFUl9DT1VOVDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciB0ZXggaW4gdGhpcy50ZXh0dXJlcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuaWZvcm1UZXh0dXJlKHRleCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dXJlSW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclByb2dyYW1zKCk7XG5cbiAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyIGV2ZW50XG4gICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCdyZW5kZXInLCB7fSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcmNlUmVuZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3BhdXNlJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgICAgICAgICAgdGhpcy5wYXVzZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdwbGF5JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHBsYXkoKSB7XG4gICAgICAgICAgICB0aGlzLnBhdXNlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVuZGVyIG1haW4gYW5kIGJ1ZmZlcnMgcHJvZ3JhbXNcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiAncmVuZGVyUHJvZ3JhbXMnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyUHJvZ3JhbXMoKSB7XG4gICAgICAgICAgICB2YXIgZ2wgPSB0aGlzLmdsO1xuICAgICAgICAgICAgdmFyIFcgPSBnbC5jYW52YXMud2lkdGg7XG4gICAgICAgICAgICB2YXIgSCA9IGdsLmNhbnZhcy5oZWlnaHQ7XG5cbiAgICAgICAgICAgIGdsLnZpZXdwb3J0KDAsIDAsIFcsIEgpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5idWZmZXJzKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJ1ZmZlciA9IHRoaXMuYnVmZmVyc1trZXldO1xuICAgICAgICAgICAgICAgIGJ1ZmZlci5idW5kbGUucmVuZGVyKFcsIEgsIGJ1ZmZlci5wcm9ncmFtLCBidWZmZXIubmFtZSk7XG4gICAgICAgICAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbSh0aGlzLnByb2dyYW0pO1xuICAgICAgICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcGFyc2UgaW5wdXQgc3RyaW5nc1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6ICdnZXRCdWZmZXJzJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldEJ1ZmZlcnMoZnJhZ1N0cmluZykge1xuICAgICAgICAgICAgdmFyIGJ1ZmZlcnMgPSB7fTtcbiAgICAgICAgICAgIGlmIChmcmFnU3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgZnJhZ1N0cmluZy5yZXBsYWNlKC8oPzpeXFxzKikoKD86I2lmfCNlbGlmKSg/OlxccyopKGRlZmluZWRcXHMqXFwoXFxzKkJVRkZFUl8pKFxcZCspKD86XFxzKlxcKSl8KD86I2lmZGVmKSg/OlxccypCVUZGRVJfKShcXGQrKSg/OlxccyopKS9nbSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50c1szXSB8fCBhcmd1bWVudHNbNF07XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnNbJ3VfYnVmZmVyJyArIGldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQ6ICcjZGVmaW5lIEJVRkZFUl8nICsgaSArICdcXG4nICsgZnJhZ1N0cmluZ1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcnM7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBsb2FkIGJ1ZmZlcnMgcHJvZ3JhbXNcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnbG9hZFByb2dyYW1zJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGxvYWRQcm9ncmFtcyhidWZmZXJzKSB7XG4gICAgICAgICAgICB2YXIgZ2xzbCA9IHRoaXM7XG4gICAgICAgICAgICB2YXIgZ2wgPSB0aGlzLmdsO1xuICAgICAgICAgICAgdmFyIHZlcnRleCA9IGNyZWF0ZVNoYWRlcihnbHNsLCBnbHNsLnZlcnRleFN0cmluZywgZ2wuVkVSVEVYX1NIQURFUik7XG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gYnVmZmVycykge1xuICAgICAgICAgICAgICAgIHZhciBidWZmZXIgPSBidWZmZXJzW2tleV07XG4gICAgICAgICAgICAgICAgdmFyIGZyYWdtZW50ID0gY3JlYXRlU2hhZGVyKGdsc2wsIGJ1ZmZlci5mcmFnbWVudCwgZ2wuRlJBR01FTlRfU0hBREVSLCAxKTtcbiAgICAgICAgICAgICAgICBpZiAoIWZyYWdtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gY3JlYXRlU2hhZGVyKGdsc2wsICd2b2lkIG1haW4oKXtcXG5cXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XFxufScsIGdsLkZSQUdNRU5UX1NIQURFUik7XG4gICAgICAgICAgICAgICAgICAgIGdsc2wuaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGdsc2wuaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBwcm9ncmFtID0gY3JlYXRlUHJvZ3JhbShnbHNsLCBbdmVydGV4LCBmcmFnbWVudF0pO1xuICAgICAgICAgICAgICAgIGJ1ZmZlci5uYW1lID0ga2V5O1xuICAgICAgICAgICAgICAgIGJ1ZmZlci5wcm9ncmFtID0gcHJvZ3JhbTtcbiAgICAgICAgICAgICAgICBidWZmZXIuYnVuZGxlID0gZ2xzbC5jcmVhdGVTd2FwcGFibGVCdWZmZXIoZ2xzbC5jYW52YXMud2lkdGgsIGdsc2wuY2FudmFzLmhlaWdodCwgcHJvZ3JhbSk7XG4gICAgICAgICAgICAgICAgZ2wuZGVsZXRlU2hhZGVyKGZyYWdtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdsLmRlbGV0ZVNoYWRlcih2ZXJ0ZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlIGFuIGlucHV0IC8gb3V0cHV0IHN3YXBwYWJsZSBidWZmZXJcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnY3JlYXRlU3dhcHBhYmxlQnVmZmVyJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVN3YXBwYWJsZUJ1ZmZlcihXLCBILCBwcm9ncmFtKSB7XG4gICAgICAgICAgICB2YXIgaW5wdXQgPSB0aGlzLmNyZWF0ZUJ1ZmZlcihXLCBILCBwcm9ncmFtKTtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSB0aGlzLmNyZWF0ZUJ1ZmZlcihXLCBILCBwcm9ncmFtKTtcbiAgICAgICAgICAgIHZhciBnbCA9IHRoaXMuZ2w7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGlucHV0OiBpbnB1dCxcbiAgICAgICAgICAgICAgICBvdXRwdXQ6IG91dHB1dCxcbiAgICAgICAgICAgICAgICBzd2FwOiBmdW5jdGlvbiBzd2FwKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IGlucHV0O1xuICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IG91dHB1dDtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gdGVtcDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dCA9IGlucHV0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dCA9IG91dHB1dDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKFcsIEgsIHByb2dyYW0sIG5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTtcbiAgICAgICAgICAgICAgICAgICAgZ2wudmlld3BvcnQoMCwgMCwgVywgSCk7XG4gICAgICAgICAgICAgICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgdGhpcy5pbnB1dC5idWZmZXIpO1xuICAgICAgICAgICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRoaXMub3V0cHV0LnRleHR1cmUsIDApO1xuICAgICAgICAgICAgICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3dhcCgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVzaXplOiBmdW5jdGlvbiByZXNpemUoVywgSCwgcHJvZ3JhbSwgbmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pO1xuICAgICAgICAgICAgICAgICAgICBnbC52aWV3cG9ydCgwLCAwLCBXLCBIKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5yZXNpemUoVywgSCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3V0cHV0LnJlc2l6ZShXLCBIKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlIGEgYnVmZmVyc1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6ICdjcmVhdGVCdWZmZXInLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlQnVmZmVyKFcsIEgsIHByb2dyYW0pIHtcbiAgICAgICAgICAgIHZhciBnbCA9IHRoaXMuZ2w7XG4gICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLkJVRkZFUl9DT1VOVDtcbiAgICAgICAgICAgIHRoaXMuQlVGRkVSX0NPVU5UICs9IDI7XG4gICAgICAgICAgICBnbC5nZXRFeHRlbnNpb24oJ09FU190ZXh0dXJlX2Zsb2F0Jyk7XG4gICAgICAgICAgICB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTtcbiAgICAgICAgICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTAgKyBpbmRleCk7XG4gICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTtcbiAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgVywgSCwgMCwgZ2wuUkdCQSwgZ2wuRkxPQVQsIG51bGwpO1xuICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpO1xuICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpO1xuICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7XG4gICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTtcbiAgICAgICAgICAgIHZhciBidWZmZXIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgdGV4dHVyZTogdGV4dHVyZSxcbiAgICAgICAgICAgICAgICBidWZmZXI6IGJ1ZmZlcixcbiAgICAgICAgICAgICAgICBXOiBXLFxuICAgICAgICAgICAgICAgIEg6IEgsXG4gICAgICAgICAgICAgICAgcmVzaXplOiBmdW5jdGlvbiByZXNpemUoVywgSCkge1xuICAgICAgICAgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtaW5XID0gTWF0aC5taW4oVywgdGhpcy5XKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1pbkggPSBNYXRoLm1pbihILCB0aGlzLkgpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGl4ZWxzID0gbmV3IEZsb2F0MzJBcnJheShtaW5XICogbWluSCAqIDQpO1xuICAgICAgICAgICAgICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIG1pblcsIG1pbkgsIGdsLlJHQkEsIGdsLkZMT0FULCBwaXhlbHMpO1xuICAgICAgICAgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmV3SW5kZXggPSBpbmRleCArIDE7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdUZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpO1xuICAgICAgICAgICAgICAgICAgICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUwICsgbmV3SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBuZXdUZXh0dXJlKTtcbiAgICAgICAgICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBXLCBILCAwLCBnbC5SR0JBLCBnbC5GTE9BVCwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTtcbiAgICAgICAgICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpO1xuICAgICAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTtcbiAgICAgICAgICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7XG4gICAgICAgICAgICAgICAgICAgIGdsLnRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgbWluVywgbWluSCwgZ2wuUkdCQSwgZ2wuRkxPQVQsIHBpeGVscyk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdCdWZmZXIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpO1xuICAgICAgICAgICAgICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpO1xuICAgICAgICAgICAgICAgICAgICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUwICsgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBuZXdUZXh0dXJlKTtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSB0aGlzLmluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRleHR1cmUgPSB0aGlzLnRleHR1cmUgPSBuZXdUZXh0dXJlO1xuICAgICAgICAgICAgICAgICAgICBidWZmZXIgPSB0aGlzLmJ1ZmZlciA9IG5ld0J1ZmZlcjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5XID0gVztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5IID0gSDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVzaXplIGJ1ZmZlcnMgb24gY2FudmFzIHJlc2l6ZVxuICAgICAgICAvLyBjb25zaWRlciBhcHBseWluZyBhIHRocm90dGxlIG9mIDUwIG1zIG9uIGNhbnZhcyByZXNpemVcbiAgICAgICAgLy8gdG8gYXZvaWQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGFuZCBHbCB2aW9sYXRpb25zXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3Jlc2l6ZVN3YXBwYWJsZUJ1ZmZlcnMnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcmVzaXplU3dhcHBhYmxlQnVmZmVycygpIHtcbiAgICAgICAgICAgIHZhciBnbCA9IHRoaXMuZ2w7XG4gICAgICAgICAgICB2YXIgVyA9IGdsLmNhbnZhcy53aWR0aCxcbiAgICAgICAgICAgICAgICBIID0gZ2wuY2FudmFzLmhlaWdodDtcbiAgICAgICAgICAgIGdsLnZpZXdwb3J0KDAsIDAsIFcsIEgpO1xuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuYnVmZmVycykge1xuICAgICAgICAgICAgICAgIHZhciBidWZmZXIgPSB0aGlzLmJ1ZmZlcnNba2V5XTtcbiAgICAgICAgICAgICAgICBidWZmZXIuYnVuZGxlLnJlc2l6ZShXLCBILCBidWZmZXIucHJvZ3JhbSwgYnVmZmVyLm5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ2wudXNlUHJvZ3JhbSh0aGlzLnByb2dyYW0pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICd2ZXJzaW9uJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHZlcnNpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gJzAuMS43JztcbiAgICAgICAgfVxuICAgIH1dKTtcbiAgICByZXR1cm4gR2xzbENhbnZhcztcbn0oKTtcblxuZnVuY3Rpb24gbG9hZEFsbEdsc2xDYW52YXMoKSB7XG4gICAgdmFyIGxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdnbHNsQ2FudmFzJyk7XG4gICAgaWYgKGxpc3QubGVuZ3RoIFx1MDAzZSAwKSB7XG4gICAgICAgIHdpbmRvdy5nbHNsQ2FudmFzZXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgXHUwMDNjIGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBzYW5kYm94ID0gbmV3IEdsc2xDYW52YXMobGlzdFtpXSk7XG4gICAgICAgICAgICBpZiAoc2FuZGJveC5pc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgd2luZG93Lmdsc2xDYW52YXNlcy5wdXNoKHNhbmRib3gpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBsb2FkQWxsR2xzbENhbnZhcygpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IEdsc2xDYW52YXM7XG4iLCAiaW1wb3J0IHsgY29udGVudCB9IGZyb20gXCIuLi9jb2RlQmxvY2sudHNcIjtcbmltcG9ydCB7IFByZXZpZXcgfSBmcm9tIFwiLi4vcHJldmlldy50c1wiO1xuaW1wb3J0IHsgR2xzbENhbnZhcyB9IGZyb20gXCIuLi9kZXBzL2dsc2xDYW52YXMudHNcIjtcblxuZXhwb3J0IGNvbnN0IHByZXZpZXdHTFNMOiBQcmV2aWV3ID0gKHByZXZpZXdJbml0KSA9PiB7XG4gIGlmICghKFwiYWZ0ZXJcIiBpbiBwcmV2aWV3SW5pdCkpIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY29uc3Qgc2FuZGJveCA9IG5ldyBHbHNsQ2FudmFzKGNhbnZhcyk7XG4gIHNhbmRib3gubG9hZChjb250ZW50KHByZXZpZXdJbml0LmFmdGVyKSk7XG4gIHByZXZpZXdJbml0LnJlbmRlcihjYW52YXMpO1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG59O1xuIiwgIi8vIGJhc2VkIG9uIGh0dHA6Ly9wbGFudHVtbC5zb3VyY2Vmb3JnZS5uZXQvY29kZWphdmFzY3JpcHQyLmh0bWxcbmV4cG9ydCBjb25zdCBlbmNvZGU2NCA9IChkYXRhOiBVaW50OEFycmF5KTogc3RyaW5nID0+IHtcbiAgbGV0IHIgPSBcIlwiO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpICs9IDMpIHtcbiAgICBpZiAoaSArIDIgPT09IGRhdGEubGVuZ3RoKSB7XG4gICAgICByICs9IGFwcGVuZDNieXRlcyhkYXRhW2ldLCBkYXRhW2kgKyAxXSwgMCk7XG4gICAgfSBlbHNlIGlmIChpICsgMSA9PT0gZGF0YS5sZW5ndGgpIHtcbiAgICAgIHIgKz0gYXBwZW5kM2J5dGVzKGRhdGFbaV0sIDAsIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICByICs9IGFwcGVuZDNieXRlcyhkYXRhW2ldLCBkYXRhW2kgKyAxXSwgZGF0YVtpICsgMl0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcjtcbn07XG5cbmNvbnN0IGVuY29kZTZiaXQgPSAoYjogbnVtYmVyKSA9PiB7XG4gIGlmIChiIDwgMTApIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDQ4ICsgYik7XG4gIGIgLT0gMTA7XG4gIGlmIChiIDwgMjYpIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY1ICsgYik7XG4gIGIgLT0gMjY7XG4gIGlmIChiIDwgMjYpIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDk3ICsgYik7XG4gIGIgLT0gMjY7XG4gIGlmIChiID09PSAwKSByZXR1cm4gXCItXCI7XG4gIGlmIChiID09PSAxKSByZXR1cm4gXCJfXCI7XG4gIHJldHVybiBcIj9cIjtcbn07XG5cbmNvbnN0IGFwcGVuZDNieXRlcyA9IChiMTogbnVtYmVyLCBiMjogbnVtYmVyLCBiMzogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IGMxID0gYjEgPj4gMjtcbiAgY29uc3QgYzIgPSAoKGIxICYgMHgzKSA8PCA0KSB8IChiMiA+PiA0KTtcbiAgY29uc3QgYzMgPSAoKGIyICYgMHhGKSA8PCAyKSB8IChiMyA+PiA2KTtcbiAgY29uc3QgYzQgPSBiMyAmIDB4M0Y7XG4gIHJldHVybiBlbmNvZGU2Yml0KGMxICYgMHgzRikgK1xuICAgIGVuY29kZTZiaXQoYzIgJiAweDNGKSArXG4gICAgZW5jb2RlNmJpdChjMyAmIDB4M0YpICtcbiAgICBlbmNvZGU2Yml0KGM0ICYgMHgzRik7XG59O1xuXG5leHBvcnQgY29uc3QgdGV4dFRvQnVmZmVyID0gKHRleHQ6IHN0cmluZyk6IFVpbnQ4QXJyYXkgPT4ge1xuICBjb25zdCBhc2NpaV9zdHJpbmcgPSB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodGV4dCkpOyAvLyDplpPjgavjgZPjgozjgpLlmZvjgb7jgZXjgarjgYTjgajmloflrZfljJbjgZHjgZnjgotcbiAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoYXNjaWlfc3RyaW5nLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXNjaWlfc3RyaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgYnVmZmVyW2ldID0gYXNjaWlfc3RyaW5nLmNoYXJDb2RlQXQoaSk7XG4gIH1cblxuICByZXR1cm4gYnVmZmVyO1xufTtcbiIsICJpbXBvcnQgeyBlbmNvZGU2NCB9IGZyb20gXCIuL2VuY29kZS50c1wiO1xuXG5leHBvcnQgY29uc3QgdG9QbGFudFVNTCA9IGFzeW5jIChcbiAgdW1sOiBzdHJpbmcsXG4gIHR5cGU6IFwic3ZnXCIgfCBcInBuZ1wiIHwgXCJkc3ZnXCIgfCBcImRwbmdcIiA9IFwic3ZnXCIsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBzdHJlYW0gPSBuZXcgQmxvYihbbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHVtbCldKS5zdHJlYW0oKVxuICAgIC5waXBlVGhyb3VnaChcbiAgICAgIG5ldyBDb21wcmVzc2lvblN0cmVhbShcImRlZmxhdGVcIiksXG4gICAgKTtcbiAgY29uc3QgY29tcHJlc3NlZCA9IG5ldyBVaW50OEFycmF5KGF3YWl0IG5ldyBSZXNwb25zZShzdHJlYW0pLmFycmF5QnVmZmVyKCkpO1xuXG4gIHJldHVybiBgaHR0cHM6Ly93d3cucGxhbnR1bWwuY29tL3BsYW50dW1sLyR7dHlwZX0vfjEke2VuY29kZTY0KGNvbXByZXNzZWQpfWA7XG59O1xuIiwgImltcG9ydCB7IGNvbnRlbnQgfSBmcm9tIFwiLi4vLi4vY29kZUJsb2NrLnRzXCI7XG5pbXBvcnQgeyBQcmV2aWV3IH0gZnJvbSBcIi4uLy4uL3ByZXZpZXcudHNcIjtcbmltcG9ydCB7IHRvUGxhbnRVTUwgfSBmcm9tIFwiLi90b1BsYW50dW1sVVJMLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBwcmV2aWV3UGxhbnRVTUw6IFByZXZpZXcgPSBhc3luYyAocHJldmlld0luaXQpID0+IHtcbiAgaWYgKCEoXCJhZnRlclwiIGluIHByZXZpZXdJbml0KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKTtcbiAgY29uc3QgdXJsID0gYXdhaXQgdG9QbGFudFVNTChjb250ZW50KHByZXZpZXdJbml0LmFmdGVyKSk7XG4gIGltZy5zcmMgPSB1cmw7XG4gIHByZXZpZXdJbml0LnJlbmRlcihpbWcpO1xuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiIsICJpbXBvcnQgeyBTVkdSZXN1bHQgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuaW1wb3J0IHsgV29ya2VyQ29tbWFuZCwgV29ya2VyUmVzdWx0IH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcblxubGV0IGpvYiA9IFByb21pc2UucmVzb2x2ZTxTVkdSZXN1bHQ+KHsgbG9nOiBuZXcgVWludDhBcnJheSgwKSB9KTtcbmxldCB3b3JrZXI6IFdvcmtlciB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGNvbnN0IHJlbmRlclRvU1ZHID0gKFxuICB0aWt6OiBzdHJpbmcsXG4gIHdvcmtlclVSTDogc3RyaW5nIHwgVVJMLFxuICB6aXBwZWRBc3NldFVSTDogc3RyaW5nIHwgVVJMLFxuICBjb25zb2xlOiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkLFxuKSA9PiB7XG4gIGpvYiA9IChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgam9iO1xuICAgIHdvcmtlciA/Pz0gYXdhaXQgaW5pdCh3b3JrZXJVUkwsIHppcHBlZEFzc2V0VVJMKTtcblxuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxTVkdSZXN1bHQ+KFxuICAgICAgKHJlc29sdmUpID0+IHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSAoZTogTWVzc2FnZUV2ZW50PFdvcmtlclJlc3VsdD4pID0+IHtcbiAgICAgICAgICBpZiAoZS5kYXRhLnR5cGUgPT09IFwic3Rkb3V0XCIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUoZS5kYXRhLm1lc3NhZ2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZS5kYXRhLnR5cGUgIT09IFwiY29tcGlsZVwiKSByZXR1cm47XG4gICAgICAgICAgcmVzb2x2ZShlLmRhdGEpO1xuICAgICAgICAgIHdvcmtlciEucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB3b3JrZXIhLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGNhbGxiYWNrKTtcbiAgICAgIH0sXG4gICAgKTtcbiAgICBjb25zdCBjb21tYW5kOiBXb3JrZXJDb21tYW5kID0geyB0eXBlOiBcImNvbXBpbGVcIiwgaW5wdXQ6IHRpa3ogfTtcbiAgICB3b3JrZXIucG9zdE1lc3NhZ2UoY29tbWFuZCk7XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfSkoKTtcblxuICByZXR1cm4gam9iO1xufTtcblxuY29uc3QgaW5pdCA9IGFzeW5jICh3b3JrZXJVUkw6IHN0cmluZyB8IFVSTCwgemlwcGVkQXNzZXRVUkw6IHN0cmluZyB8IFVSTCkgPT4ge1xuICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKHdvcmtlclVSTCwgeyB0eXBlOiBcIm1vZHVsZVwiIH0pO1xuICBjb25zdCBpbml0aWFsaXplZCA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAoZTogTWVzc2FnZUV2ZW50PFdvcmtlclJlc3VsdD4pID0+IHtcbiAgICAgIGlmIChlLmRhdGEudHlwZSAhPT0gXCJhc3NldC11cmxcIikgcmV0dXJuO1xuICAgICAgcmVzb2x2ZSgpO1xuICAgICAgd29ya2VyIS5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBjYWxsYmFjayk7XG4gICAgfTtcbiAgICB3b3JrZXIhLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGNhbGxiYWNrKTtcbiAgfSk7XG4gIGNvbnN0IGNvbW1hbmQ6IFdvcmtlckNvbW1hbmQgPSB7XG4gICAgdHlwZTogXCJhc3NldC11cmxcIixcbiAgICB1cmw6IGAke3ppcHBlZEFzc2V0VVJMfWAsXG4gIH07XG4gIHdvcmtlci5wb3N0TWVzc2FnZShjb21tYW5kKTtcbiAgYXdhaXQgaW5pdGlhbGl6ZWQ7XG4gIHJldHVybiB3b3JrZXI7XG59O1xuIiwgImltcG9ydCB7IGNvbnRlbnQgfSBmcm9tIFwiLi4vLi4vY29kZUJsb2NrLnRzXCI7XG5pbXBvcnQgeyBQcmV2aWV3IH0gZnJvbSBcIi4uLy4uL3ByZXZpZXcudHNcIjtcbmltcG9ydCB7IHJlbmRlclRvU1ZHIH0gZnJvbSBcIi4vcmVuZGVyVG9TVkcudHNcIjtcbmltcG9ydCB7IHRvRGF0YVVSTCB9IGZyb20gXCIuLi8uLi9kZXBzL2R2aTJodG1sLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBwcmV2aWV3VGlrWiA9IChcbiAgd29ya2VyVVJMOiBzdHJpbmcgfCBVUkwsXG4gIHppcHBlZEFzc2V0VVJMOiBzdHJpbmcgfCBVUkwsXG4pOiBQcmV2aWV3ID0+XG5hc3luYyAocHJldmlld0luaXQpID0+IHtcbiAgaWYgKCEoXCJhZnRlclwiIGluIHByZXZpZXdJbml0KSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBsb2dnZXIgPSBtYWtlTG9nZ2VyKCk7XG4gIGxldCBjb21waWxlTG9nID0gXCJDb21waWxlIGlzIG5vdCBzdGFydGVkIHlldC4gUGxlYXNlIHdhaXQuLi5cIjtcbiAgY29uc3QgbG9nID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgIGNvbXBpbGVMb2cgPSBbLi4uY29tcGlsZUxvZy5zcGxpdChcIlxcblwiKSwgbWVzc2FnZV0uam9pbihcIlxcblwiKTtcbiAgICBsb2dnZXIubG9nKGNvbXBpbGVMb2cpO1xuICB9O1xuICBjb25zdCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW1nXCIpO1xuICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIHByZXZpZXdJbml0LnJlbmRlcihsb2dnZXIuZGl2KTtcbiAgICBsb2dnZXIubG9nKGNvbXBpbGVMb2cpO1xuICB9LCAyMDAwKTtcbiAgY29uc3QgeyBzdmcgfSA9IGF3YWl0IHJlbmRlclRvU1ZHKFxuICAgIGNvbnRlbnQocHJldmlld0luaXQuYWZ0ZXIpLFxuICAgIHdvcmtlclVSTCxcbiAgICB6aXBwZWRBc3NldFVSTCxcbiAgICBsb2csXG4gICk7XG4gIGNsZWFyVGltZW91dCh0aW1lcik7XG5cbiAgaWYgKCFzdmcpIHtcbiAgICBwcmV2aWV3SW5pdC5yZW5kZXIobG9nZ2VyLmRpdik7XG4gICAgbG9nZ2VyLmxvZyhjb21waWxlTG9nKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpbWcuc3JjID0gYXdhaXQgdG9EYXRhVVJMKG5ldyBCbG9iKFtzdmddLCB7IHR5cGU6IFwiaW1hZ2Uvc3ZnK3htbFwiIH0pKTtcbiAgcHJldmlld0luaXQucmVuZGVyKGltZyk7XG59O1xuY29uc3QgbWFrZUxvZ2dlciA9ICgpID0+IHtcbiAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgY29uc3Qgc2hhZG93Um9vdCA9IGRpdi5hdHRhY2hTaGFkb3coeyBtb2RlOiBcIm9wZW5cIiB9KTtcbiAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIHN0eWxlLnRleHRDb250ZW50ID1cbiAgICAnKntib3gtc2l6aW5nOmJvcmRlci1ib3g7fXByZXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6OS41cHg7bWFyZ2luOjAgMCAxMHB4O2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjRweDtoZWlnaHQ6MjBlbTtvdmVyZmxvdzphdXRvO2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDI5O31wcmUgY29kZXtwYWRkaW5nOjA7Zm9udC1mYW1pbHk6TWVubG8sTW9uYWNvLENvbnNvbGFzLFwiQ291cmllciBOZXdcIixtb25vc3BhY2U7Zm9udC1zaXplOmluaGVyaXQ7d29yZC1icmVhazpicmVhay1hbGw7d29yZC13cmFwOmJyZWFrLXdvcmQ7d2hpdGUtc3BhY2U6cHJlLXdyYXA7Y29sb3I6dmFyKC0tY29kZS1jb2xvciwjMzQyZDljKTtiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLDApO2JvcmRlci1yYWRpdXM6MDt9JztcbiAgc2hhZG93Um9vdC5hcHBlbmQoc3R5bGUpO1xuICBjb25zdCBwcmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwicHJlXCIpO1xuICBjb25zdCBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNvZGVcIik7XG4gIHByZS5hcHBlbmQoY29kZSk7XG4gIHNoYWRvd1Jvb3QuYXBwZW5kKHByZSk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXYsXG4gICAgbG9nOiAobWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb2RlLnRleHRDb250ZW50ID0gbWVzc2FnZTtcbiAgICAgIC8vIOacgOS4i+mDqOOBvuOBp+OCueOCr+ODreODvOODq+OBl+OBpuOAgeOCqOODqeODvOmDqOWIhuOBjOOBmeOBkOimi+OBiOOCi+OCiOOBhuOBq+OBmeOCi1xuICAgICAgcHJlLnNjcm9sbCgwLCBwcmUuc2Nyb2xsSGVpZ2h0KTtcbiAgICB9LFxuICB9O1xufTtcbiIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCIuL2RlcHMvcHJlYWN0LnRzeFwiO1xuXG4vKiog6Z2e5ZCM5pyf5Ye95pWw44Gu5oi744KK5YCk44KS5Y+W5b6X44GZ44KLXG4gKlxuICogY2YuIGh0dHBzOi8vbG9nLnBvY2thLmlvL2phL3Bvc3RzL3R5cGVzY3JpcHQtcHJvbWlzZXR5cGUvXG4gKi9cbmV4cG9ydCB0eXBlIEFzeW5jUmV0dXJuVHlwZTxcbiAgVCBleHRlbmRzICguLi5hcmdzOiB1bmtub3duW10pID0+IFByb21pc2VMaWtlPHVua25vd24+LFxuPiA9IFJldHVyblR5cGU8VD4gZXh0ZW5kcyBQcm9taXNlTGlrZTxpbmZlciBQPiA/IFAgOiBuZXZlcjtcblxudHlwZSBSZXN1bHQ8VD4gPSB7IG9rOiB0cnVlOyB2YWx1ZTogVCB9IHwgeyBvazogZmFsc2U7IHZhbHVlOiB1bmtub3duIH07XG5cbmV4cG9ydCB0eXBlIEFzeW5jU3RhdGU8VD4gPSB7XG4gIHN0YXRlOiBcInVuaW5pdGlhbGl6ZWRcIiB8IFwicGVuZGluZ1wiIHwgXCJyZXNvbHZlZFwiO1xuICByZXN1bHQ6IFQ7XG59IHwgeyBzdGF0ZTogXCJyZWplY3RlZFwiOyByZXN1bHQ6IHVua25vd24gfTtcblxuLyoqIOmdnuWQjOacn+WHveaVsOOCkuWun+ihjOOBmeOCi2hvb2tzXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrIOWun+ihjOOBmeOCi+mdnuWQjOacn+WHveaVsCBgdW5kZWZpbmVkYOOCkui/lOOBmeOBqOWJjeWbnuOBrue1kOaenOOCkuS4iuabuOOBjeOBm+OBmuOBneOBruOBvuOBvui/lOOBmVxuICogQHBhcmFtIGluaXRpYWxWYWx1ZSDliJ3mnJ/lgKRcbiAqIEBwYXJhbSBbZGVsYXk9MF0g5a6f6KGM5Lit5Yik5a6a44KS5Ye644GZ44G+44Gn44Gu6Kix5a655pmC6ZaTKG1zKVxuICogQHBhcmFtIFtkZXBzPVtdXSDkvp3lrZjphY3liJdcbiAqL1xuZXhwb3J0IGNvbnN0IHVzZUFzeW5jID0gPFxuICBGbiBleHRlbmRzICgpID0+IFByb21pc2VMaWtlPHVua25vd24+LFxuICBUIGV4dGVuZHMgdW5rbm93bixcbj4oXG4gIGNhbGxiYWNrOiBGbixcbiAgaW5pdGlhbFZhbHVlOiBFeGNsdWRlPEFzeW5jUmV0dXJuVHlwZTxGbj4sIHVuZGVmaW5lZD4sXG4gIGRlbGF5ID0gMCxcbiAgZGVwczogVFtdID0gW10sXG4pOiBBc3luY1N0YXRlPEV4Y2x1ZGU8QXN5bmNSZXR1cm5UeXBlPEZuPiwgdW5kZWZpbmVkPj4gPT4ge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlPFwidW5pbml0aWFsaXplZFwiIHwgXCJwZW5kaW5nXCIgfCBcInJlc29sdmVkXCI+KFxuICAgIFwidW5pbml0aWFsaXplZFwiLFxuICApO1xuICBjb25zdCBbcmVzdWx0LCBzZXRSZXN1bHRdID0gdXNlU3RhdGU8XG4gICAgUmVzdWx0PEV4Y2x1ZGU8QXN5bmNSZXR1cm5UeXBlPEZuPiwgdW5kZWZpbmVkPj5cbiAgPih7IG9rOiB0cnVlLCB2YWx1ZTogaW5pdGlhbFZhbHVlIH0pO1xuICBjb25zdCBjYWNoZWRDYWxsYmFjayA9IHVzZUNhbGxiYWNrKGNhbGxiYWNrLCBkZXBzKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4gc2V0U3RhdGUoXCJwZW5kaW5nXCIpLCBkZWxheSk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSAoYXdhaXQgY2FjaGVkQ2FsbGJhY2soKSkgYXNcbiAgICAgICAgICB8IEV4Y2x1ZGU8QXN5bmNSZXR1cm5UeXBlPEZuPiwgdW5kZWZpbmVkPlxuICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICAgICAgc2V0UmVzdWx0KHsgb2s6IHRydWUsIHZhbHVlOiByZXN1bHQgfSk7XG4gICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgIHNldFJlc3VsdCh7IG9rOiBmYWxzZSwgdmFsdWU6IGUgfSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICBzZXRTdGF0ZShcInJlc29sdmVkXCIpO1xuICAgICAgfVxuICAgIH0pKCk7XG4gIH0sIFtjYWNoZWRDYWxsYmFjaywgZGVsYXksIC4uLmRlcHNdKTtcblxuICByZXR1cm4gcmVzdWx0Lm9rXG4gICAgPyB7IHJlc3VsdDogcmVzdWx0LnZhbHVlLCBzdGF0ZSB9XG4gICAgOiB7IHJlc3VsdDogcmVzdWx0LnZhbHVlLCBzdGF0ZTogXCJyZWplY3RlZFwiIH07XG59O1xuIiwgImltcG9ydCB0eXBlIHtcbiAgQ2hhbmdlLFxuICBDb21taXQsXG4gIExpbmVJZCxcbiAgVW5peFRpbWUsXG4gIFVzZXJJZCxcbn0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNuYXBTaG90IHtcbiAgdGV4dD86IHN0cmluZztcbiAgdHlwZTogXCJpbnNlcnRcIiB8IFwidXBkYXRlXCIgfCBcImRlbGV0ZVwiO1xuICB1c2VySWQ6IFVzZXJJZDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTGluZVNuYXBTaG90IHtcbiAgaWQ6IExpbmVJZDtcbiAgc25hcHNob3RzOiBNYXA8VW5peFRpbWUsIFNuYXBTaG90Pjtcbn1cbi8qKiBjb21taXRz44GL44KJ5bGl5q2044KS5L2c5oiQ44GZ44KLXG4gKlxuICogQHBhcmFtIGNvbW1pdHMg5aSJ5o+b44GX44Gf44GEY29tbWl044GubGlzdFxuICovXG5leHBvcnQgY29uc3QgY29udmVydCA9IChcbiAgY29tbWl0czogQ29tbWl0W10sXG4pOiB7IGhpc3Rvcnk6IExpbmVTbmFwU2hvdFtdOyByYW5nZTogVW5peFRpbWVbXSB9ID0+IHtcbiAgLy8gX2luc2VydCwgX3VwZGF0ZSwgX2RlbGV0ZeS7peWkluOCkueEoeimluOBmeOCi1xuICBjb25zdCBjaGFuZ2VzID0gY29tbWl0cy5mbGF0TWFwKFxuICAgICh7IGNoYW5nZXMsIGNyZWF0ZWQsIHVzZXJJZCB9KSA9PlxuICAgICAgY2hhbmdlcy5mbGF0TWFwKChjaGFuZ2UpID0+IHtcbiAgICAgICAgY29uc3QgY2hhbmdlSW5mbyA9IG1ha2VDaGFuZ2VJbmZvKGNoYW5nZSwgdXNlcklkLCBjcmVhdGVkKTtcbiAgICAgICAgcmV0dXJuIGNoYW5nZUluZm8gPyBbY2hhbmdlSW5mb10gOiBbXTtcbiAgICAgIH0pLFxuICApO1xuXG4gIGNvbnN0IHJhbmdlID0gWy4uLm5ldyBTZXQoY2hhbmdlcy5tYXAoKHsgY3JlYXRlZCB9KSA9PiBjcmVhdGVkKSldLnNvcnQoKTtcblxuICAvLyBMaW5lU25hcHNob3TjgavlpInmj5vjgZnjgotcbiAgY29uc3QgbGluZXMgPSBjaGFuZ2VzLnJlZHVjZSgobGluZXMsIGNoYW5nZSkgPT4ge1xuICAgIGlmIChjaGFuZ2UudHlwZSA9PT0gXCJpbnNlcnRcIikge1xuICAgICAgY29uc3Qgc25hcHNob3RzID0gbmV3IE1hcDxVbml4VGltZSwgU25hcFNob3Q+KCk7XG4gICAgICBzbmFwc2hvdHMuc2V0KGNoYW5nZS5jcmVhdGVkLCB7XG4gICAgICAgIHRleHQ6IGNoYW5nZS50ZXh0LFxuICAgICAgICB0eXBlOiBjaGFuZ2UudHlwZSxcbiAgICAgICAgdXNlcklkOiBjaGFuZ2UudXNlcklkLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBsaW5lOiBMaW5lU25hcFNob3QgPSB7XG4gICAgICAgIGlkOiBjaGFuZ2UuaWQsXG4gICAgICAgIHNuYXBzaG90cyxcbiAgICAgIH07XG4gICAgICBpZiAoY2hhbmdlLnBhcmVudElkID09PSBcIl9lbmRcIikgcmV0dXJuIFsuLi5saW5lcywgbGluZV07XG5cbiAgICAgIC8vIHBhcmVudElk44Gu44OH44O844K/44Gu5YmN44Gr5oy/5YWl44GZ44KLXG4gICAgICBjb25zdCBpbmRleCA9IGxpbmVzLmZpbmRJbmRleCgoeyBpZCB9KSA9PiBpZCA9PT0gY2hhbmdlLnBhcmVudElkKTtcbiAgICAgIC8vIHBhcmVudElk44Gu44OH44O844K/44GM5a2Y5Zyo44GX44Gq44GL44Gj44Gf44KJ44CB44Go44KK44GC44GI44Ga5pyr5bC+44Gr5oy/5YWl44GZ44KLXG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgW3NjcmFwYm94LXNuYXBzaG90QDAuMS4wXSBUaGUgcGFyZW50IGxpbmUgdGhlIHNuYXBzaG90IHdvdWxkIGluc2VydCBiZWZvcmUgaXMgbm90IGZvdW5kLiBjaGFuZ2U6IGAsXG4gICAgICAgICAgY2hhbmdlLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gWy4uLmxpbmVzLCBsaW5lXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbLi4ubGluZXMuc2xpY2UoMCwgaW5kZXgpLCBsaW5lLCAuLi5saW5lcy5zbGljZShpbmRleCldO1xuICAgIH1cblxuICAgIC8vIOihjOODh+ODvOOCv+OCkui/veWKoOOBmeOCi3NuYXBzaG9044KS5o6i44GZXG4gICAgY29uc3QgaW5kZXggPSBsaW5lcy5maW5kSW5kZXgoKHsgaWQgfSkgPT4gaWQgPT09IGNoYW5nZS5pZCk7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW3NjcmFwYm94LXNuYXBzaG90QDAuMS4wXSBUaGUgbGluZSBkYXRhIHRvIGJlIGFwcGVuZCB0aGUgY2hhbmdlIGlzIG5vdCBmb3VuZC4gY2hhbmdlOiBgLFxuICAgICAgICBjaGFuZ2UsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGxpbmVzO1xuICAgIH1cblxuICAgIGxpbmVzW2luZGV4XS5zbmFwc2hvdHMuc2V0KGNoYW5nZS5jcmVhdGVkLCB7XG4gICAgICB0ZXh0OiBjaGFuZ2UudHlwZSA9PT0gXCJ1cGRhdGVcIiA/IGNoYW5nZS50ZXh0IDogdW5kZWZpbmVkLFxuICAgICAgdHlwZTogY2hhbmdlLnR5cGUsXG4gICAgICB1c2VySWQ6IGNoYW5nZS51c2VySWQsXG4gICAgfSk7XG4gICAgcmV0dXJuIGxpbmVzO1xuICB9LCBbXSBhcyBMaW5lU25hcFNob3RbXSk7XG5cbiAgcmV0dXJuIHsgaGlzdG9yeTogbGluZXMsIHJhbmdlIH07XG59O1xuXG5jb25zdCBtYWtlQ2hhbmdlSW5mbyA9IChjaGFuZ2U6IENoYW5nZSwgdXNlcklkOiBVc2VySWQsIGNyZWF0ZWQ6IFVuaXhUaW1lKSA9PiB7XG4gIGlmIChcIl9pbnNlcnRcIiBpbiBjaGFuZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJpbnNlcnRcIixcbiAgICAgIGlkOiBjaGFuZ2UubGluZXMuaWQsXG4gICAgICBwYXJlbnRJZDogY2hhbmdlLl9pbnNlcnQsXG4gICAgICB0ZXh0OiBjaGFuZ2UubGluZXMudGV4dCxcbiAgICAgIHVzZXJJZCxcbiAgICAgIGNyZWF0ZWQsXG4gICAgfSBhcyBjb25zdDtcbiAgfVxuICBpZiAoXCJfdXBkYXRlXCIgaW4gY2hhbmdlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwidXBkYXRlXCIsXG4gICAgICBpZDogY2hhbmdlLl91cGRhdGUsXG4gICAgICB0ZXh0OiBjaGFuZ2UubGluZXMudGV4dCxcbiAgICAgIHVzZXJJZCxcbiAgICAgIGNyZWF0ZWQsXG4gICAgfSBhcyBjb25zdDtcbiAgfVxuICBpZiAoXCJfZGVsZXRlXCIgaW4gY2hhbmdlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZGVsZXRlXCIsXG4gICAgICBpZDogY2hhbmdlLl9kZWxldGUsXG4gICAgICB1c2VySWQsXG4gICAgICBjcmVhdGVkLFxuICAgIH0gYXMgY29uc3Q7XG4gIH1cbiAgcmV0dXJuO1xufTtcbiIsICJpbXBvcnQgeyBjb252ZXJ0LCBMaW5lU25hcFNob3QgfSBmcm9tIFwiLi9jb252ZXJ0LnRzXCI7XG5pbXBvcnQgdHlwZSB7IENvbW1pdHNSZXNwb25zZSwgUGFnZVNuYXBzaG90IH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC50c1wiO1xuXG5leHBvcnQgY29uc3QgZ2V0Q29tbWl0SGlzdG9yeSA9IGFzeW5jIChcbiAgcHJvamVjdDogc3RyaW5nLFxuICBwYWdlSWQ6IHN0cmluZyxcbik6IFByb21pc2U8eyByYW5nZTogbnVtYmVyW107IGhpc3Rvcnk6IExpbmVTbmFwU2hvdFtdIH0+ID0+IHtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goXG4gICAgYC9hcGkvY29tbWl0cy8ke3Byb2plY3R9LyR7cGFnZUlkfWAsXG4gICk7XG4gIGNvbnN0IHsgY29tbWl0cyB9ID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIENvbW1pdHNSZXNwb25zZTtcbiAgcmV0dXJuIGNvbnZlcnQoY29tbWl0cyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UGFnZUhpc3RvcnkgPSBhc3luYyAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgcGFnZUlkOiBzdHJpbmcsXG4pID0+IHtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goXG4gICAgYC9hcGkvcGFnZS1zbmFwc2hvdHMvJHtwcm9qZWN0fS8ke3BhZ2VJZH1gLFxuICApO1xuICBjb25zdCB7IHNuYXBzaG90cyB9ID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIFBhZ2VTbmFwc2hvdDtcblxuICBjb25zdCBwYWdlcyA9IG5ldyBNYXAoXG4gICAgc25hcHNob3RzLm1hcCgoeyBsaW5lcywgY3JlYXRlZCB9KSA9PiBbY3JlYXRlZCwgbGluZXNdKSxcbiAgKTtcbiAgY29uc3QgcmFuZ2UgPSBzbmFwc2hvdHMubWFwKCh7IGNyZWF0ZWQgfSkgPT4gY3JlYXRlZCkuc29ydCgpO1xuICByZXR1cm4geyBwYWdlcywgcmFuZ2UgfTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuLyoqIEBqc3hGcmFnIEZyYWdtZW50ICovXG5cbmltcG9ydCB7XG4gIEZyYWdtZW50LFxuICBoLFxuICByZW5kZXIsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwiLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IGxpZ2h0Rm9ybWF0IH0gZnJvbSBcIi4vZGVwcy9kYXRlLWZucy50c1wiO1xuaW1wb3J0IHsgdXNlQXN5bmMgfSBmcm9tIFwiLi91c2VBc3luYy50c1wiO1xuaW1wb3J0IHsgZ2V0Q29tbWl0SGlzdG9yeSwgZ2V0UGFnZUhpc3RvcnkgfSBmcm9tIFwiLi9mZXRjaC50c1wiO1xuaW1wb3J0IHR5cGUgeyBTY3JhcGJveCB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyb2xsZXIge1xuICBvcGVuOiAoKSA9PiB2b2lkO1xuICBjbG9zZTogKCkgPT4gdm9pZDtcbiAgdG9nZ2xlOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3Qgc2V0dXAgPSAocHJvamVjdHM6IHN0cmluZ1tdKTogUHJvbWlzZTxDb250cm9sbGVyPiA9PiB7XG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGFwcC5kYXRhc2V0LnVzZXJzY3JpcHROYW1lID0gXCJ0YWtrZXI5OS9zY3JhcGJveC1oaXN0b3J5LXNsaWRlclwiO1xuICBjb25zdCBzaGFkb3dSb290ID0gYXBwLmF0dGFjaFNoYWRvdyh7IG1vZGU6IFwib3BlblwiIH0pO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZChhcHApO1xuICByZXR1cm4gbmV3IFByb21pc2UoXG4gICAgKHJlc29sdmUpID0+XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxBcHAgZ2V0Q29udHJvbGxlcj17KGNvbnRyb2xsZXIpID0+IHJlc29sdmUoY29udHJvbGxlcil9IC8+LFxuICAgICAgICBzaGFkb3dSb290LFxuICAgICAgKSxcbiAgKTtcbn07XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGdldENvbnRyb2xsZXI6IChjb250cm9sbGVyOiBDb250cm9sbGVyKSA9PiB2b2lkO1xufVxuXG5jb25zdCBBcHAgPSAoeyBnZXRDb250cm9sbGVyIH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IFtjbG9zZWQsIHNldENsb3NlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3Qgb3BlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHNldENsb3NlZChmYWxzZSksIFtdKTtcbiAgY29uc3QgY2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiBzZXRDbG9zZWQodHJ1ZSksIFtdKTtcbiAgY29uc3QgdG9nZ2xlID0gdXNlQ2FsbGJhY2soKCkgPT4gc2V0Q2xvc2VkKChwcmV2KSA9PiAhcHJldiksIFtdKTtcbiAgdXNlRWZmZWN0KCgpID0+IGdldENvbnRyb2xsZXIoeyBvcGVuLCBjbG9zZSwgdG9nZ2xlIH0pLCBbZ2V0Q29udHJvbGxlcl0pO1xuICBjb25zdCBoYW5kbGVDbG9zZSA9IHVzZUNhbGxiYWNrKChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCEoZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHJldHVybjtcbiAgICBpZiAoZS50YXJnZXQuaWQgIT09IFwiYmFja2dyb3VuZFwiKSByZXR1cm47XG4gICAgY2xvc2UoKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHsgc3RhdGUsIHJlc3VsdCB9ID0gdXNlQXN5bmMoXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKGNsb3NlZCkgcmV0dXJuO1xuICAgICAgaWYgKHNjcmFwYm94LkxheW91dCAhPT0gXCJwYWdlXCIpIHJldHVybjtcbiAgICAgIGNvbnN0IFtjb21taXQsIHBhZ2VdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICBnZXRDb21taXRIaXN0b3J5KFxuICAgICAgICAgIHNjcmFwYm94LlByb2plY3QubmFtZSxcbiAgICAgICAgICBzY3JhcGJveC5QYWdlLmlkLFxuICAgICAgICApLFxuICAgICAgICBnZXRQYWdlSGlzdG9yeShcbiAgICAgICAgICBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUsXG4gICAgICAgICAgc2NyYXBib3guUGFnZS5pZCxcbiAgICAgICAgKSxcbiAgICAgIF0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLyoqIOWxpeattOmAo+eVqiAqL1xuICAgICAgICByYW5nZTogWy4uLnBhZ2UucmFuZ2UsIC4uLmNvbW1pdC5yYW5nZV0sXG4gICAgICAgIC8qKiDlsaXmrbTpgKPnlarjgavlr77lv5zjgZnjgovjg4bjgq3jgrnjg4jjgpLlvpfjgovplqLmlbAqL1xuICAgICAgICBnZXRTbmFwc2hvdDogKHRpbWU6IG51bWJlcik6IHN0cmluZ1tdID0+IHtcbiAgICAgICAgICAvLyDnr4Tlm7LlpJbjgarjgolwYWdlSGlzdG9yeeOBi+OCieWPluW+l+OBmeOCi1xuICAgICAgICAgIGlmICghY29tbWl0LnJhbmdlLmluY2x1ZGVzKHRpbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFnZS5wYWdlcy5nZXQodGltZSk/Lm1hcD8uKChsaW5lKSA9PiBsaW5lLnRleHQpID8/IFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb21taXQuaGlzdG9yeS5mbGF0TWFwKCh7IHNuYXBzaG90cyB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gc25hcHNob3RzLmdldCh0aW1lKTtcbiAgICAgICAgICAgIC8vIGxpbmXjgYzlrZjlnKjjgZfjgaZ0ZXh044GM56m644Gq44KJ44CB5YmK6Zmk44GV44KM44Gf6KGM44Gn44GC44KLXG4gICAgICAgICAgICBpZiAobGluZSkgcmV0dXJuIGxpbmUudGV4dCA9PT0gdW5kZWZpbmVkID8gW10gOiBbbGluZS50ZXh0XTtcblxuICAgICAgICAgICAgLy8g5LiA44Gk5YmN44Gu5bGl5q2044KS5o6i44GX5Ye644GZXG4gICAgICAgICAgICBjb25zdCBwcmV2VXBkYXRlZCA9IE1hdGgubWF4KFxuICAgICAgICAgICAgICAuLi5bLi4uc25hcHNob3RzLmtleXMoKV0uZmlsdGVyKCh1cGRhdGVkKSA9PiB1cGRhdGVkIDwgdGltZSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHByZXZVcGRhdGVkID09PSB0aW1lKSByZXR1cm4gW107XG4gICAgICAgICAgICBjb25zdCBwcmV2VGV4dCA9IHNuYXBzaG90cy5nZXQocHJldlVwZGF0ZWQpPy50ZXh0O1xuICAgICAgICAgICAgcmV0dXJuIHByZXZUZXh0ID09PSB1bmRlZmluZWQgPyBbXSA6IFtwcmV2VGV4dF07XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0sXG4gICAgeyByYW5nZTogW10sIGdldFNuYXBzaG90OiAoKSA9PiBbXSB9LFxuICAgIDEwMDAsXG4gICAgW2Nsb3NlZF0sXG4gICk7XG5cbiAgLy8gcmFuZ2XjgYzlpInmm7TjgZXjgozjgZ/jgajjgY3jgaDjgZFzbGlkZXLjga7kvY3nva7jgpJyZXNldOOBmeOCi1xuICBjb25zdCBbbWF4LCBzZXRNYXhdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IFtpbmRleCwgc2V0SW5kZXhdID0gdXNlU3RhdGUoMCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXRlICE9PSBcInJlc29sdmVkXCIpIHJldHVybjtcbiAgICBjb25zdCB2YWx1ZSA9IE1hdGgubWF4KDAsIHJlc3VsdC5yYW5nZS5sZW5ndGggLSAxKTtcbiAgICBzZXRNYXgodmFsdWUpO1xuICAgIHNldEluZGV4KHZhbHVlKTtcbiAgfSwgW3Jlc3VsdF0pO1xuXG4gIGNvbnN0IG9uU2xpZGVyQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBoLkpTWC5UYXJnZXRlZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICAgICAgc2V0SW5kZXgocGFyc2VJbnQoZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZSkpLFxuICAgIFtdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxzdHlsZT5cbiAgICAgICAgeycubW9kYWx7cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDt6LWluZGV4OjEwNTA7YmFja2dyb3VuZC1jb2xvcjojMDAwYztkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtyb3ctZ2FwOjEwcHg7cGFkZGluZzoxMHB4fS5jbG9zZWR7ZGlzcGxheTpub25lfS5tb2RhbD4qe2NvbG9yOnZhcigtLXBhZ2UtdGV4dC1jb2xvciwgIzRhNGE0YSk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wYWdlLWJnLCAjZmVmZWZlKTtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWJvZHktYmcsICNkY2RkZTApO2JvcmRlci1yYWRpdXM6NHB4O3BhZGRpbmc6NXB4O3dpZHRoOmNhbGModmFyKC0taXRlbS13aWR0aCwgMTAwJSkgLSAxMHB4KX1AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpey5tb2RhbHtwYWRkaW5nOjMwcHh9fS5jb250cm9sbGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZTtnYXA6LjJlbX1pbnB1dHt3aWR0aDoxMDAlfXRpbWV7d2hpdGUtc3BhY2U6bm93cmFwfS52aWV3ZXJ7b3ZlcmZsb3cteTpzY3JvbGx9cHJle3dpZHRoOjEwMCU7Zm9udC1mYW1pbHk6dmFyKC0taGlzdG9yeS1zbGlkZXItcHJlLWZvbnQsIE1lbmxvLE1vbmFjbyxDb25zb2xhcyxcIkNvdXJpZXIgTmV3XCIsbW9ub3NwYWNlKTt3b3JkLWJyZWFrOmJyZWFrLWFsbDt3b3JkLXdyYXA6YnJlYWstd29yZDt3aGl0ZS1zcGFjZTpwcmUtd3JhcH0nfVxuICAgICAgPC9zdHlsZT5cbiAgICAgIDxkaXZcbiAgICAgICAgaWQ9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgY2xhc3NOYW1lPXtgbW9kYWwke2Nsb3NlZCA/IFwiIGNsb3NlZFwiIDogXCJcIn1gfVxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbG9zZX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250cm9sbGVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJjbG9zZS1idXR0b25cIiBvbkNsaWNrPXtjbG9zZX0+eDwvYnV0dG9uPlxuICAgICAgICAgIHtzdGF0ZSA9PT0gXCJyZXNvbHZlZFwiICYmIHJlc3VsdC5yYW5nZS5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibm90LWZvdW5kXCI+XG4gICAgICAgICAgICAgIG5vIGhpc3RvcnkgZm91bmQuXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7c3RhdGUgIT09IFwicmVqZWN0ZWRcIiAmJiByZXN1bHQucmFuZ2UubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJhbmdlXCJcbiAgICAgICAgICAgICAgICAgIG1heD17bWF4fVxuICAgICAgICAgICAgICAgICAgbWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICB0aXRsZT17bGlnaHRGb3JtYXQoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKHJlc3VsdC5yYW5nZVtpbmRleF0gKiAxMDAwKSxcbiAgICAgICAgICAgICAgICAgICAgXCJ5eXl5LU1NLWRkIEhIOm1tOnNzXCIsXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgb25JbnB1dD17b25TbGlkZXJDaGFuZ2V9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8dGltZVxuICAgICAgICAgICAgICAgICAgZGF0ZVRpbWU9e2xpZ2h0Rm9ybWF0KFxuICAgICAgICAgICAgICAgICAgICBuZXcgRGF0ZShyZXN1bHQucmFuZ2VbaW5kZXhdICogMTAwMCksXG4gICAgICAgICAgICAgICAgICAgIFwieXl5eS1NTS1kZCBISDptbTpzc1wiLFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7bGlnaHRGb3JtYXQoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKHJlc3VsdC5yYW5nZVtpbmRleF0gKiAxMDAwKSxcbiAgICAgICAgICAgICAgICAgICAgXCJ5eXl5LU1NLWRkIEhIOm1tOnNzXCIsXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvdGltZT5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3N0YXRlICE9PSBcInJlamVjdGVkXCJcbiAgICAgICAgICA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidmlld2VyXCI+XG4gICAgICAgICAgICAgIDxwcmU+XG4gICAgICAgICAgICAgICAgICAgIHtyZXN1bHQuZ2V0U25hcHNob3QocmVzdWx0LnJhbmdlW2luZGV4XSkuam9pbihcIlxcblwiKX1cbiAgICAgICAgICAgICAgPC9wcmU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApXG4gICAgICAgICAgOiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImVycm9yIHZpZXdlclwiPlxuICAgICAgICAgICAgICB7YEVycm9yOiAke0pTT04uc3RyaW5naWZ5KHJlc3VsdCl9YH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn07XG4iLCAiZXhwb3J0IGNvbnN0IGlzTW9iaWxlID0gKCkgPT4gL21vYmlsZS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkiLCAiaW1wb3J0IHR5cGUgeyBSZXN1bHQgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24qIHBvb2w8VCwgVSwgRSA9IHVua25vd24+KFxuICB0aHJlc2hvbGQ6IG51bWJlcixcbiAgYXJnczogSXRlcmFibGU8VD4sXG4gIGZ1bmM6ICh2YWx1ZTogVCwgaWQ6IG51bWJlcikgPT4gUHJvbWlzZTxVPixcbik6IEdlbmVyYXRvcjxQcm9taXNlPFJlc3VsdDxVLCBFPj4sIHZvaWQsIHVua25vd24+IHtcbiAgbGV0IHJ1bm5pbmcgPSAwO1xuICBjb25zdCB3YWl0aW5ncyA9IFtdIGFzICgodmFsdWU6IG51bWJlciB8IFByb21pc2VMaWtlPG51bWJlcj4pID0+IHZvaWQpW107XG4gIGNvbnN0IHdhaXRGb3JSZWFkeSA9IGFzeW5jICgpID0+IHtcbiAgICBydW5uaW5nKys7XG4gICAgaWYgKHJ1bm5pbmcgPD0gdGhyZXNob2xkKSByZXR1cm4gcnVubmluZyAtIDE7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPG51bWJlcj4oXG4gICAgICAocmVzb2x2ZSkgPT4gd2FpdGluZ3MucHVzaChyZXNvbHZlKSxcbiAgICApO1xuICB9O1xuICBmb3IgKGNvbnN0IGFyZyBvZiBhcmdzKSB7XG4gICAgeWllbGQgKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gYXdhaXQgd2FpdEZvclJlYWR5KCk7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgdmFsdWU6IGF3YWl0IGZ1bmMoYXJnLCBpZCksXG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgcmVhc29uOiBlIGFzIEUsXG4gICAgICAgIH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBydW5uaW5nLS07XG4gICAgICAgIHdhaXRpbmdzLnNoaWZ0KCk/LihpZCk7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgfVxuICAvLyDlrp/ooYzjgZfjgY3jgozjgarjgYTlj6/og73mgKfjga/jgYLjgovvvJ9cbn1cbiIsICJpbXBvcnQge1xuICBkaXNjb25uZWN0LFxuICBtYWtlU29ja2V0LFxuICBwYXRjaCxcbiAgcmVwbGFjZUxpbmtzLFxuICBTb2NrZXQsXG59IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9tb2QudHNcIjtcbmltcG9ydCB0eXBlIHsgRXJyb3JMaWtlIH0gZnJvbSBcIi4uL3NjcmFwYm94LWpwJTJGdHlwZXMvcmVzdC50c1wiO1xuaW1wb3J0IHsgcG9vbCB9IGZyb20gXCIuLi9hc3luYy1saWIvbW9kLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGluayB7XG4gIGJlZm9yZTogc3RyaW5nO1xuICBhZnRlcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxhY2VTdGF0ZSB7XG4gIGxpbms6IExpbms7XG4gIHByb2plY3RDb3VudDogbnVtYmVyO1xuICByZXBsYWNlZDogbnVtYmVyO1xuICBkb25lOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlcGxhY2UgPSBhc3luYyAoXG4gIGxpbmtzOiBMaW5rW10sXG4gIHByb2plY3RzOiBJdGVyYWJsZTxzdHJpbmc+LFxuICBjYWxsYmFjazogKHN0YXRlOiBSZXBsYWNlU3RhdGUpID0+IHZvaWQsXG4pID0+IHtcbiAgaWYgKGxpbmtzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICBpZiAobGlua3MuZXZlcnkoKHsgYmVmb3JlLCBhZnRlciB9KSA9PiBiZWZvcmUgPT09IGFmdGVyKSlyZXR1cm47XG4gIFxuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBtYWtlU29ja2V0KCk7XG4gIFxuICB0cnkge1xuICAgIGNvbnN0IGl0ZXIxID0gcG9vbChcbiAgICAgIDUsXG4gICAgICBsaW5rcyxcbiAgICAgIGFzeW5jIChsaW5rKSA9PiB7XG4gICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgIGxldCByZXBsYWNlZCA9IDA7XG4gICAgICAgIGlmIChsaW5rLmJlZm9yZSA9PT0gbGluay5hZnRlcikge1xuICAgICAgICAgIGNhbGxiYWNrKHsgbGluaywgcHJvamVjdENvdW50OiAwLCByZXBsYWNlZDogMCwgZG9uZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgaXRlcjIgPSBwb29sKFxuICAgICAgICAgIDIsXG4gICAgICAgICAgWy4uLm5ldyBTZXQocHJvamVjdHMpXSxcbiAgICAgICAgICBhc3luYyAocHJvamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVwbGFjZUFsaW5rKGxpbmssIHByb2plY3QsIHNvY2tldCk7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgICAgICAgICB0aHJvdyB0b0Vycm9yKHJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgcmVwbGFjZWQgKz0gcmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgY2FsbGJhY2soeyBsaW5rLCBwcm9qZWN0Q291bnQ6IGNvdW50LCByZXBsYWNlZCwgZG9uZTogZmFsc2UgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWy4uLml0ZXIyXSk7XG4gICAgICAgIGNhbGxiYWNrKHsgbGluaywgcHJvamVjdENvdW50OiBjb3VudCwgcmVwbGFjZWQsIGRvbmU6IHRydWUgfSk7XG4gICAgICB9LFxuICAgICk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoWy4uLml0ZXIxXSk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZGlzY29ubmVjdChzb2NrZXQpO1xuICB9XG59O1xuXG4vKiog5LiA44Gk44Gu44Oq44Oz44Kv44KS5LiA44Gk44GucHJvamVjdOOBp+e9ruaPm+OBmeOCi1xuICpcbiAqIEByZXR1cm4gcmVwbGFjZUxpbmtz44Go5ZCM44GYXG4gKi9cbmNvbnN0IHJlcGxhY2VBbGluayA9IGFzeW5jIChsaW5rOiBMaW5rLCBwcm9qZWN0OiBzdHJpbmcsIHNvY2tldDogU29ja2V0KSA9PiB7XG4gIGNvbnN0IFtyZXN1bHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgIC8vIOacrOW9k+OBr2hhc0JhY2tMaW5rc09ySWNvbnMgPT09IHRydWXjga7jgajjgY3jga7jgb/nva7mj5vjgZfjgZ/jgYRcbiAgICByZXBsYWNlTGlua3MocHJvamVjdCwgbGluay5iZWZvcmUsIGxpbmsuYWZ0ZXIpLFxuICAgIHBhdGNoKHByb2plY3QsIGxpbmsuYmVmb3JlLCAobGluZXMsIHsgcGVyc2lzdGVudCB9KSA9PiB7XG4gICAgICBpZiAoIXBlcnNpc3RlbnQpIHJldHVybjtcblxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgbGluay5hZnRlcixcbiAgICAgICAgLi4ubGluZXMubWFwKChsaW5lKSA9PiBsaW5lLnRleHQpLnNsaWNlKDEpLFxuICAgICAgXTtcbiAgICB9LCB7IHNvY2tldCB9KSxcbiAgXSk7XG4gIFxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExpbmtzID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZ1tdID0+XG4gIHRleHQuc3BsaXQoXCJcXG5cIilcbiAgLmZsYXRNYXAoXG4gICAgKGxpbmUpID0+IFsuLi5saW5lLm1hdGNoQWxsKC9cXFsoKD86W15cXFshXCIjJSYnKClcXCpcXCssXFwtXFwuXFwvXFx7XFx8XFx9PD5ffl0gfC5bXiBdKilbXlxcW1xcXV0qKVxcXS9nKV1cbiAgKVxuICAubWFwKChbLCBsaW5rXSkgPT4gbGluayk7XG5cbmNvbnN0IHRvRXJyb3IgPSAoZTogRXJyb3JMaWtlKTogRXJyb3IgPT4ge1xuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigpO1xuICBlcnJvci5uYW1lID0gZS5uYW1lO1xuICBlcnJvci5tZXNzYWdlID0gZS5tZXNzYWdlO1xuICByZXR1cm4gZXJyb3I7XG59O1xuIiwgImV4cG9ydCAqIGZyb20gXCJucG06QHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDlcIjsiLCAiaW1wb3J0IHtcbiAgQ29kZUJsb2NrLFxuICBMaW5lLFxuICBOb2RlLFxuICBwYXJzZSxcbiAgVGFibGUsXG59IGZyb20gXCIuLi9zY3JhcGJveC1wYXJzZXIvbW9kLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0ID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGJsb2NrcyA9IHBhcnNlKHRleHQsIHsgaGFzVGl0bGU6IGZhbHNlIH0pO1xuICByZXR1cm4gYmxvY2tzLmZsYXRNYXAoKGJsb2NrKSA9PiB7XG4gICAgc3dpdGNoIChibG9jay50eXBlKSB7XG4gICAgICBjYXNlIFwidGl0bGVcIjpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgY2FzZSBcImNvZGVCbG9ja1wiOlxuICAgICAgICByZXR1cm4gY29udmVydENvZGVCbG9jayhibG9jayk7XG4gICAgICBjYXNlIFwidGFibGVcIjpcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRUYWJsZShibG9jayk7XG4gICAgICBjYXNlIFwibGluZVwiOlxuICAgICAgICByZXR1cm4gY29udmVydExpbmUoYmxvY2spO1xuICAgIH1cbiAgfSlcbiAgICAubWFwKChsaW5lKSA9PiBsaW5lKS5qb2luKFwiXFxuXCIpO1xufTtcblxuLyoqIOOCs+ODvOODieODluODreODg+OCr+OBr+OBneOBruOBvuOBvuW+qeWFg+OBmeOCiyAqL1xuY29uc3QgY29udmVydENvZGVCbG9jayA9IChcbiAgeyBmaWxlTmFtZSwgY29udGVudCwgaW5kZW50IH06IENvZGVCbG9jayxcbikgPT4ge1xuICBjb25zdCB0YWcgPSBcIiBcIi5yZXBlYXQoaW5kZW50KTtcblxuICByZXR1cm4gW1xuICAgIGAke3RhZ31jb2RlOiR7ZmlsZU5hbWV9YCxcbiAgICAuLi5jb250ZW50LnNwbGl0KFwiXFxuXCIpLm1hcCgobGluZSkgPT4gYCR7dGFnfSAke2xpbmV9YCksXG4gIF07XG59O1xuXG4vKiog44OG44O844OW44Or5Lit44Gu44Oq44Oz44Kv44KS5aSW44GZICovXG5jb25zdCBjb252ZXJ0VGFibGUgPSAoeyBmaWxlTmFtZSwgY2VsbHMsIGluZGVudCB9OiBUYWJsZSkgPT4ge1xuICBjb25zdCB0YWcgPSBcIiBcIi5yZXBlYXQoaW5kZW50KTtcblxuICByZXR1cm4gW1xuICAgIGAke3RhZ310YWJsZToke2ZpbGVOYW1lfWAsXG4gICAgLi4uY2VsbHMubWFwKChjZWxsKSA9PlxuICAgICAgYCR7dGFnfSAke1xuICAgICAgICBjZWxsLm1hcCgobm9kZXMpID0+IG5vZGVzLm1hcCgobm9kZSkgPT4gY29udmVydE5vZGUobm9kZSkpLmpvaW4oXCJcIikpLmpvaW4oXCJcXHRcIilcbiAgICAgIH1gXG4gICAgKSxcbiAgXTtcbn07XG5cbi8qKiDooYzlhoXjg6rjg7Pjgq/jgpLlpJbjgZkgKi9cbmNvbnN0IGNvbnZlcnRMaW5lID0gKHsgbm9kZXMsIGluZGVudCB9OiBMaW5lKSA9PiBbXG4gIGAke1wiIFwiLnJlcGVhdChpbmRlbnQpfSR7XG4gICAgbm9kZXMubWFwKChub2RlKSA9PiBgJHtjb252ZXJ0Tm9kZShub2RlKX1gKS5qb2luKFxuICAgICAgXCJcIixcbiAgICApXG4gIH1gLFxuXTtcblxuLyoqIOODquODs+OCr+OCkuWkluOBl+OBn25vZGXjgpLkvZzjgosgKi9cbmNvbnN0IGNvbnZlcnROb2RlID0gKG5vZGU6IE5vZGUpOiBzdHJpbmcgPT4ge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIGNhc2UgXCJxdW90ZVwiOlxuICAgICAgcmV0dXJuIGA+ICR7bm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IGNvbnZlcnROb2RlKG5vZGUpKS5qb2luKFwiXCIpfWA7XG4gICAgY2FzZSBcInN0cm9uZ1wiOlxuICAgICAgcmV0dXJuIGBbWyR7bm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IGNvbnZlcnROb2RlKG5vZGUpKS5qb2luKFwiXCIpfV1dYDtcbiAgICBjYXNlIFwiZGVjb3JhdGlvblwiOiB7XG4gICAgICBjb25zdCBkZWNvID0gbm9kZS5kZWNvcy5tYXAoKGRlY28pID0+IHtcbiAgICAgICAgY29uc3QgbnVtID0gcGFyc2VJbnQoZGVjby5tYXRjaCgvXFwqLShcXGQpLyk/LlsxXSA/PyBcIjBcIik7XG4gICAgICAgIHJldHVybiBudW0gPiAwID8gXCIqXCIucmVwZWF0KG51bSkgOiBkZWNvO1xuICAgICAgfSkuam9pbihcIlwiKTtcblxuICAgICAgcmV0dXJuIGBbJHtkZWNvID8gYCR7ZGVjb30gYCA6IFwiXCJ9JHtcbiAgICAgICAgbm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IGNvbnZlcnROb2RlKG5vZGUpKS5qb2luKFwiXCIpXG4gICAgICB9XWA7XG4gICAgfVxuICAgIGNhc2UgXCJoYXNoVGFnXCI6XG4gICAgICByZXR1cm4gbm9kZS5ocmVmO1xuICAgIC8vIGxpbnRlcuOBruODkOOCsOOBp+OAgeS9leaVheOBi+itpuWRiuOBjOWHuuOCi1xuICAgIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZmFsbHRocm91Z2hcbiAgICBjYXNlIFwibGlua1wiOiBcbiAgICAgIHJldHVybiBub2RlLnBhdGhUeXBlID09PSBcImFic29sdXRlXCIgPyBub2RlLnJhdyA6IG5vZGUuaHJlZjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG5vZGUucmF3O1xuICB9XG59O1xuXG4gIiwgImltcG9ydCB7IFNjcmFwYm94IH0gZnJvbSBcIi4uL3NjcmFwYm94LWpwJTJGdHlwZXMvdXNlcnNjcmlwdC50c1wiO1xuaW1wb3J0IHsgZ2V0TGlua3MgfSBmcm9tICBcIi4uL+ikh+aVsOOBruODquODs+OCr+OCkuOBvuOBqOOCgeOBpue9ruaPm+OBmeOCi1VzZXJTY3JpcHQvbW9kLnRzXCI7XG5pbXBvcnQgeyBjb252ZXJ0IH0gZnJvbSBcIi4vbW9kLnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gIHRpdGxlOiAodGV4dCkgPT4gZ2V0TGlua3ModGV4dCkubGVuZ3RoID4gMCA/IFwiXFx1ZjEyN1wiIDogXCJcIixcbiAgb25DbGljazogKHRleHQpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBjb252ZXJ0KHRleHQpO1xuICAgIC8vIOODhuODreODoeOCouOBjOeEoemnhOOBq+abtOaWsOOBleOCjOOCi+OBruOCkumYsuOBkFxuICAgIGlmKHRleHQgPT0gcmVzdWx0KSByZXR1cm47XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCAiaW1wb3J0IHtcbiAgdXNlU3RhdHVzQmFyLFxuICBzbGVlcCxcbiAgcGF0Y2gsXG59IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9tb2QudHNcIjtcbmltcG9ydCB7IFNjcmFwYm94IH0gZnJvbSBcIi4uL3NjcmFwYm94LWpwJTJGdHlwZXMvdXNlcnNjcmlwdC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmNvbnN0IGVuYWJsZSA9ICh0ZXh0OiBzdHJpbmcpID0+XG4gICF0ZXh0LmluY2x1ZGVzKFwiXFxuXCIpICYmIC9cXFtbXlxcXV0rXFxdLy50ZXN0KHRleHQpO1xuXG5zY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcbiAgdGl0bGU6ICh0ZXh0KSA9PiBlbmFibGUodGV4dCkgPyBcIltdW11cIiA6IFwiXCIsXG4gIG9uQ2xpY2s6ICh0ZXh0KSA9PiB7XG4gICAgaWYgKCFlbmFibGUodGV4dCkpIHJldHVybjtcbiAgICBjb25zdCB0aXRsZSA9IHRleHQucmVwbGFjZUFsbChcIltcIiwgXCJcIikucmVwbGFjZUFsbChcIl1cIiwgXCJcIik7XG4gICAgKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVuZGVyLCBkaXNwb3NlIH0gPSB1c2VTdGF0dXNCYXIoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHByb2plY3QgPSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWU7XG4gICAgICAgIHJlbmRlcihcbiAgICAgICAgICB7IHR5cGU6IFwic3Bpbm5lclwiIH0sXG4gICAgICAgICAgeyB0eXBlOiBcInRleHRcIiwgdGV4dDogYGNyZWF0ZSAvJHtwcm9qZWN0fS8ke3RpdGxlfWAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgcGF0Y2goXG4gICAgICAgICAgcHJvamVjdCxcbiAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAoW3sgdGV4dDogdGl0bGUgfV0sIHsgcGVyc2lzdGVudCB9KSA9PiB7XG4gICAgICAgICAgICAvLyDkuK3ouqvjgYzjgYLjgovjgajjgY3jga/kvZXjgoLjgZfjgarjgYRcbiAgICAgICAgICAgIGlmIChwZXJzaXN0ZW50KSByZXR1cm47XG4gICAgICAgICAgICByZXR1cm4gW3RpdGxlLCB0ZXh0XTtcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgICByZW5kZXIoXG4gICAgICAgICAgeyB0eXBlOiBcImNoZWNrLWNpcmNsZVwiIH0sXG4gICAgICAgICAgeyB0eXBlOiBcInRleHRcIiwgdGV4dDogYGNyZWF0ZSAvJHtwcm9qZWN0fS8ke3RpdGxlfWAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgRXJyb3IpKSB0aHJvdyBlO1xuICAgICAgICByZW5kZXIoXG4gICAgICAgICAgeyB0eXBlOiBcImV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCIgfSxcbiAgICAgICAgICB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBgJHtlLm5hbWV9ICR7ZS5tZXNzYWdlfWAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IHNsZWVwKDIwMDApO1xuICAgICAgICBkaXNwb3NlKCk7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgICBcbiAgICByZXR1cm4gYFske3RpdGxlfV1gO1xuICB9LFxufSk7XG4iLCAiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydChcImh0dHBzOi8vZXNtLnNoL0Bwcm9nZmF5L3NjcmFwYm94LXBhcnNlckA3LjIuMFwiKS5CbG9ja30gQmxvY2tcbiAqIEB0eXBlZGVmIHtpbXBvcnQoXCJodHRwczovL2VzbS5zaC9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJANy4yLjBcIikuVGFibGV9IFRhYmxlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KFwiaHR0cHM6Ly9lc20uc2gvQHByb2dmYXkvc2NyYXBib3gtcGFyc2VyQDcuMi4wXCIpLkxpbmV9IExpbmVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoXCJodHRwczovL2VzbS5zaC9AcHJvZ2ZheS9zY3JhcGJveC1wYXJzZXJANy4yLjBcIikuTm9kZX0gTm9kZVR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc2NyYXBib3gtanAvdHlwZXMvMC4zLjQvc2NyYXBib3gudHNcIikuU2NyYXBib3h9IFNjcmFwYm94XG4gKi9cblxuLyoqIFNjcmFwYm946KiY5rOV44KSTWFya2Rvd27oqJjms5XjgavlpInjgYjjgotcbiAqXG4gKiBAcGFyYW0ge0Jsb2NrfSBibG9ja1xuICogQHBhcmFtIHtudW1iZXJ9IHRvcEluZGVudExldmVsXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBjb252ZXJ0U2IyTWQgPSAoYmxvY2ssIHRvcEluZGVudExldmVsKSA9PiB7XG4gIHN3aXRjaCAoYmxvY2sudHlwZSkge1xuICAgIGNhc2UgXCJ0aXRsZVwiOlxuICAgICAgcmV0dXJuIFwiXCI7IC8vIOOCv+OCpOODiOODq+OBr+mBuOaKnuevhOWbsuOBq+WFpeOCieOBquOBhOOBruOBp+eEoeimllxuICAgIGNhc2UgXCJjb2RlQmxvY2tcIjpcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGJsb2NrLmZpbGVOYW1lLFxuICAgICAgICBgXFxuXFxgXFxgXFxgJHtnZXRGaWxlVHlwZShibG9jay5maWxlTmFtZSl9YCxcbiAgICAgICAgYmxvY2suY29udGVudCxcbiAgICAgICAgXCJcXGBcXGBcXGBcXG5cIixcbiAgICAgIF0uam9pbihcIlxcblwiKTtcbiAgICBjYXNlIFwidGFibGVcIjpcbiAgICAgIHJldHVybiBjb252ZXJ0VGFibGUoYmxvY2spO1xuICAgIGNhc2UgXCJsaW5lXCI6XG4gICAgICByZXR1cm4gY29udmVydExpbmUoYmxvY2ssIHRvcEluZGVudExldmVsKTtcbiAgfVxufTtcblxuLyoqIFRhYmxl6KiY5rOV44Gu5aSJ5o+bXG4gKlxuICogQHBhcmFtIHtUYWJsZX0gdGFibGVcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuY29uc3QgY29udmVydFRhYmxlID0gKHRhYmxlKSA9PiB7XG4gIGNvbnN0IGxpbmUgPSBbdGFibGUuZmlsZU5hbWVdO1xuICAvLyBjb2x1bW5z44Gu5pyA5aSn6ZW344KS6KiI566X44GZ44KLXG4gIGNvbnN0IG1heENvbCA9IE1hdGgubWF4KC4uLnRhYmxlLmNlbGxzLm1hcCgocm93KSA9PiByb3cubGVuZ3RoKSk7XG4gIHRhYmxlLmNlbGxzLmZvckVhY2goKHJvdywgaSkgPT4ge1xuICAgIGxpbmUucHVzaChcbiAgICAgIGB8ICR7XG4gICAgICAgIHJvdy5tYXAoKGNvbHVtbikgPT4gY29sdW1uLm1hcCgobm9kZSkgPT4gY29udmVydE5vZGUobm9kZSkpLmpvaW4oXCJcIikpXG4gICAgICAgICAgLmpvaW4oXCIgfCBcIilcbiAgICAgIH0gfGAsXG4gICAgKTtcbiAgICBpZiAoaSA9PT0gMCkgbGluZS5wdXNoKGB8JHtcIiAtLSB8XCIucmVwZWF0KG1heENvbCl9YCk7XG4gIH0pO1xuICByZXR1cm4gbGluZS5qb2luKFwiXFxuXCIpO1xufTtcblxuY29uc3QgSU5ERU5UID0gXCIgICAgXCI7IC8vIOOCpOODs+ODh+ODs+ODiOOBq+S9v+OBhuaWh+Wtl1xuXG4vKiog6KGM44Gu5aSJ5o+bXG4gKlxuICogQHBhcmFtIHtMaW5lfSBsaW5lXG4gKiBAcGFyYW0ge251bWJlcn0gdG9wSW5kZW50TGV2ZWxcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuY29uc3QgY29udmVydExpbmUgPSAobGluZSwgdG9wSW5kZW50TGV2ZWwpID0+IHtcbiAgY29uc3QgY29udGVudCA9IGxpbmUubm9kZXNcbiAgICAubWFwKChub2RlKSA9PlxuICAgICAgY29udmVydE5vZGUobm9kZSwgeyBzZWN0aW9uOiBsaW5lLmluZGVudCA9PT0gdG9wSW5kZW50TGV2ZWwgfSlcbiAgICApLmpvaW4oXCJcIikudHJpbSgpO1xuICBpZiAoY29udGVudCA9PT0gXCJcIikgcmV0dXJuIFwiXCI7IC8vIOepuuihjOOBr+OBneOBruOBvuOBvui/lOOBmVxuXG4gIC8vIOODquOCueODiOOCkuS9nOOCi1xuICBpZiAobGluZS5pbmRlbnQgPT09IHRvcEluZGVudExldmVsKSByZXR1cm4gY29udGVudDsgLy8g44OI44OD44OX44Os44OZ44Or44Gu6KGM44Gv44Kk44Oz44OH44Oz44OI44Gr44GX44Gq44GEXG4gIGxldCByZXN1bHQgPSBJTkRFTlQucmVwZWF0KGxpbmUuaW5kZW50IC0gdG9wSW5kZW50TGV2ZWwgLSAxKTtcbiAgaWYgKCEvXlxcZCtcXC4gLy50ZXN0KGNvbnRlbnQpKSByZXN1bHQgKz0gXCItIFwiOyAvLyDnlarlj7fjgarjgZfjga7ooYzjga9gLWDjgpLlhaXjgozjgotcbiAgcmV0dXJuIHJlc3VsdCArIGNvbnRlbnQ7XG59O1xuXG4vKiogTm9kZeOCkuWkieaPm+OBmeOCi1xuICpcbiAqIEBwYXJhbSB7Tm9kZVR5cGV9IG5vZGVcbiAqIEBwYXJhbSB7e3NlY3Rpb24/OmJvb2xlYW59fSBbaW5pdF1cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuY29uc3QgY29udmVydE5vZGUgPSAobm9kZSwgaW5pdCkgPT4ge1xuICBjb25zdCB7IHNlY3Rpb24gPSBmYWxzZSB9ID0gaW5pdCA/PyB7fTtcbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICBjYXNlIFwicXVvdGVcIjpcbiAgICAgIHJldHVybiBgPiAke25vZGUubm9kZXMubWFwKChub2RlKSA9PiBjb252ZXJ0Tm9kZShub2RlKSkuam9pbihcIlwiKX1gO1xuICAgIGNhc2UgXCJoZWxwZmVlbFwiOlxuICAgICAgcmV0dXJuIGBcXGA/ICR7bm9kZS50ZXh0fVxcYGA7XG4gICAgY2FzZSBcImltYWdlXCI6XG4gICAgY2FzZSBcInN0cm9uZ0ltYWdlXCI6XG4gICAgICByZXR1cm4gYCFbaW1hZ2VdKCR7bm9kZS5zcmN9KWA7XG4gICAgY2FzZSBcImljb25cIjpcbiAgICBjYXNlIFwic3Ryb25nSWNvblwiOlxuICAgICAgLy8g5LuV5YiH44KK57ea44Gg44GR5aSJ5o+b44GZ44KLXG4gICAgICByZXR1cm4gW1wiL2ljb25zL2hyXCIsIFwiL3NjcmFwYm94bGFiL2hyXCJdXG4gICAgICAgICAgLmluY2x1ZGVzKG5vZGUucGF0aClcbiAgICAgICAgPyBcIi0tLVwiXG4gICAgICAgIDogXCJcIjtcbiAgICBjYXNlIFwic3Ryb25nXCI6XG4gICAgICByZXR1cm4gYCoqJHtub2RlLm5vZGVzLm1hcCgobm9kZSkgPT4gY29udmVydE5vZGUobm9kZSkpLmpvaW4oXCJcIil9KipgO1xuICAgIGNhc2UgXCJmb3JtdWxhXCI6XG4gICAgICByZXR1cm4gYCQke25vZGUuZm9ybXVsYX0kYDtcbiAgICBjYXNlIFwiZGVjb3JhdGlvblwiOiB7XG4gICAgICBsZXQgcmVzdWx0ID0gbm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IGNvbnZlcnROb2RlKG5vZGUpKS5qb2luKFwiXCIpO1xuICAgICAgaWYgKG5vZGUuZGVjb3MuaW5jbHVkZXMoXCIvXCIpKSByZXN1bHQgPSBgKiR7cmVzdWx0fSpgO1xuICAgICAgLy8g6KaL5Ye644GX44Gu5aSJ5o+bXG4gICAgICAvLyDjgYrlpb3jgb/jgaflpInjgYjjgabkuIvjgZXjgYRcbiAgICAgIGlmIChzZWN0aW9uKSB7XG4gICAgICAgIGlmIChub2RlLmRlY29zLmluY2x1ZGVzKFwiKi0zXCIpKSByZXN1bHQgPSBgIyAke3Jlc3VsdH1cXG5gO1xuICAgICAgICBpZiAobm9kZS5kZWNvcy5pbmNsdWRlcyhcIiotMlwiKSkgcmVzdWx0ID0gYCMjICR7cmVzdWx0fVxcbmA7XG4gICAgICAgIGlmIChub2RlLmRlY29zLmluY2x1ZGVzKFwiKi0xXCIpKSByZXN1bHQgPSBgIyMjICR7cmVzdWx0fVxcbmA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobm9kZS5kZWNvcy5zb21lKChkZWNvKSA9PiAvXFwqLS8udGVzdChkZWNvWzBdKSkpIHtcbiAgICAgICAgICByZXN1bHQgPSBgKioke3Jlc3VsdH0qKmA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmRlY29zLmluY2x1ZGVzKFwiflwiKSkgcmVzdWx0ID0gYH5+JHtyZXN1bHR9fn5gO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgY2FzZSBcImNvZGVcIjpcbiAgICAgIHJldHVybiBgXFxgJHtub2RlLnRleHR9XFxgYDtcbiAgICBjYXNlIFwiY29tbWFuZExpbmVcIjpcbiAgICAgIHJldHVybiBgXFxgJHtub2RlLnN5bWJvbH0gJHtub2RlLnRleHR9XFxgYDtcbiAgICBjYXNlIFwibGlua1wiOlxuICAgICAgc3dpdGNoIChub2RlLnBhdGhUeXBlKSB7XG4gICAgICAgIGNhc2UgXCJyb290XCI6XG4gICAgICAgICAgcmV0dXJuIGBbJHtub2RlLmhyZWZ9XShodHRwczovL3NjcmFwYm94LmlvJHtub2RlLmhyZWZ9KWA7XG4gICAgICAgIGNhc2UgXCJyZWxhdGl2ZVwiOlxuICAgICAgICAgIC8vQHRzLWlnbm9yZSBkZWNsYXJl5a6j6KiA44GM5L2/44GI44Gq44GE44Gf44KB44CBYHNjcmFwYm94YOOBq+Wei+Wumue+qeOCkuOBpOOBkeOCieOCjOOBquOBhFxuICAgICAgICAgIHJldHVybiBgWyR7bm9kZS5ocmVmfV0oaHR0cHM6Ly9zY3JhcGJveC5pby8ke3NjcmFwYm94LlByb2plY3QubmFtZX0vJHtub2RlLmhyZWZ9KWA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG5vZGUuY29udGVudCA9PT0gXCJcIiA/XG4gICAgICAgICAgICBgICR7bm9kZS5ocmVmfSBgIDpcbiAgICAgICAgICAgIGBbJHtub2RlLmNvbnRlbnR9XSgke25vZGUuaHJlZn0pYDtcbiAgICAgIH1cbiAgICBjYXNlIFwiZ29vZ2xlTWFwXCI6XG4gICAgICByZXR1cm4gYFske25vZGUucGxhY2V9XSgke25vZGUudXJsfSlgO1xuICAgIGNhc2UgXCJoYXNoVGFnXCI6XG4gICAgICAvL0B0cy1pZ25vcmUgZGVjbGFyZeWuo+iogOOBjOS9v+OBiOOBquOBhOOBn+OCgeOAgWBzY3JhcGJveGDjgavlnovlrprnvqnjgpLjgaTjgZHjgonjgozjgarjgYRcbiAgICAgIHJldHVybiBgWyMke25vZGUuaHJlZn1dKGh0dHBzOi8vc2NyYXBib3guaW8vJHtzY3JhcGJveC5Qcm9qZWN0Lm5hbWV9LyR7bm9kZS5ocmVmfSlgO1xuICAgIGNhc2UgXCJudW1iZXJMaXN0XCI6XG4gICAgICByZXR1cm4gYCR7bm9kZS5udW1iZXJ9LiAke25vZGUubm9kZXMubWFwKChub2RlKSA9PiBjb252ZXJ0Tm9kZShub2RlKSkuam9pbihcIlwiKX1gO1xuICAgIGNhc2UgXCJibGFua1wiOlxuICAgIGNhc2UgXCJwbGFpblwiOlxuICAgICAgcmV0dXJuIG5vZGUudGV4dDtcbiAgfVxufTtcblxuY29uc3QgZXh0ZW5zaW9uRGF0YSA9IFtcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcImphdmFzY3JpcHRcIiwgXCJqc1wiXSxcbiAgICBmaWxlVHlwZTogXCJqYXZhc2NyaXB0XCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJ0eXBlc2NyaXB0XCIsIFwidHNcIl0sXG4gICAgZmlsZVR5cGU6IFwidHlwZXNjcmlwdFwiLFxuICB9LFxuICB7XG4gICAgZXh0ZW5zaW9uczogW1wiY3BwXCIsIFwiaHBwXCJdLFxuICAgIGZpbGVUeXBlOiBcImNwcFwiLFxuICB9LFxuICB7XG4gICAgZXh0ZW5zaW9uczogW1wiY1wiLCBcImNjXCIsIFwiaFwiXSxcbiAgICBmaWxlVHlwZTogXCJjXCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJjc1wiLCBcImNzaGFycFwiXSxcbiAgICBmaWxlVHlwZTogXCJjc1wiLFxuICB9LFxuICB7XG4gICAgZXh0ZW5zaW9uczogW1wibWFya2Rvd25cIiwgXCJtZFwiXSxcbiAgICBmaWxlVHlwZTogXCJtYXJrZG93blwiLFxuICB9LFxuICB7XG4gICAgZXh0ZW5zaW9uczogW1wiaHRtXCIsIFwiaHRtbFwiXSxcbiAgICBmaWxlVHlwZTogXCJodG1sXCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJqc29uXCJdLFxuICAgIGZpbGVUeXBlOiBcImpzb25cIixcbiAgfSxcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcInhtbFwiXSxcbiAgICBmaWxlVHlwZTogXCJ4bWxcIixcbiAgfSxcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcInlhbWxcIiwgXCJ5bWxcIl0sXG4gICAgZmlsZVR5cGU6IFwieWFtbFwiLFxuICB9LFxuICB7XG4gICAgZXh0ZW5zaW9uczogW1widG9tbFwiXSxcbiAgICBmaWxlVHlwZTogXCJ0b21sXCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJpbmlcIl0sXG4gICAgZmlsZVR5cGU6IFwiaW5pXCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJ0ZXhcIiwgXCJzdHlcIl0sXG4gICAgZmlsZVR5cGU6IFwidGV4XCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJzdmdcIl0sXG4gICAgZmlsZVR5cGU6IFwic3ZnXCIsXG4gIH0sXG5dO1xuXG4vKiog44OV44Kh44Kk44Or5ZCN44Gu5ouh5by15a2Q44GL44KJ6KiA6Kqe44KS5Y+W5b6X44GZ44KLXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGVuYW1lXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmNvbnN0IGdldEZpbGVUeXBlID0gKGZpbGVuYW1lKSA9PiB7XG4gIGNvbnN0IGZpbGVuYW1lRXh0ZW50aW9uID0gZmlsZW5hbWUucmVwbGFjZSgvXi4qXFwuKFxcdyspJC8sIFwiJDFcIik7XG4gIHJldHVybiBleHRlbnNpb25EYXRhXG4gICAgLmZpbmQoKGRhdGEpID0+IGRhdGEuZXh0ZW5zaW9ucy5pbmNsdWRlcyhmaWxlbmFtZUV4dGVudGlvbikpPy5maWxlVHlwZSA/P1xuICAgIFwiXCI7XG59O1xuIiwgImltcG9ydCB7IGNvbnZlcnRTYjJNZCB9IGZyb20gXCIuL2NvbnZlcnQuanNcIjtcbmltcG9ydCB7IFNjcmFwYm94UGFyc2VyIH0gZnJvbSBcIi4uL3NjcmFwYm94LXBhcnNlci5taW4uanMvcGFyc2VyLmpzXCI7XG5cbi8vIG1hcmtkb3du5aSJ5o+bXG5zY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcbiAgdGl0bGU6IFwiXFx1ZjYwZlwiLFxuICBvbkNsaWNrOiAodGV4dCkgPT4ge1xuICAgIChhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBibG9ja3MgPSBTY3JhcGJveFBhcnNlci5wYXJzZSh0ZXh0LCB7IGhhc1RpdGxlOiBmYWxzZSB9KTtcbiAgICAgICAgLy9jb25zb2xlLmxvZygnUGFyc2VyZCB0ZXh0OicpO1xuICAgICAgICAvL2NvbnNvbGUubG9nKGJsb2Nrcyk7XG5cbiAgICAgICAgLy8g44GT44GuaW5kZW50IGxldmVs44KS5Z+65rqW44Gr44GZ44KLXG4gICAgICAgIGNvbnN0IHRvcEluZGVudExldmVsID0gTWF0aC5taW4oLi4uYmxvY2tzLm1hcCgoYmxvY2spID0+IGJsb2NrLmluZGVudCkpO1xuICAgICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChcbiAgICAgICAgICBibG9ja3MubWFwKChibG9jaykgPT4gY29udmVydFNiMk1kKGJsb2NrLCB0b3BJbmRlbnRMZXZlbCkpLmpvaW4oXCJcXG5cIiksXG4gICAgICAgICk7XG4gICAgICAgIC8vY29uc29sZS5sb2coJ0NvcGllZC4nKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgYWxlcnQoYEZhaWxlZCB0byBjb3B5OlxcbiR7SlNPTi5zdHJpbmdpZnkoZSl9YCk7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgfSxcbn0pO1xuIiwgImV4cG9ydCBjb25zdCBpc1N0cmluZyA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHN0cmluZyA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XG4iLCAiaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tIFwiLi9pcy50c1wiO1xuXG4vKiogVVJM5aSJ5o+b55So6Zai5pWwXG4gKlxuICogQHBhcmFtIHVybCDlpInmj5vjgZnjgotVUkxcbiAqIEByZXR1cm4g5aSJ5o+b5b6M44GuVVJM44CC5aSJ5o+b44GM5LiN6KaB44Gg44Gj44Gf44Go44GN44GvYHVybGDjgpLjgZ3jga7jgb7jgb7ov5TjgZnjgILjgZPjgozku6XkuIrlpInmj5vjgYzkuI3opoHjgarloLTlkIjjga/jgIHmloflrZfliJfjgavjgZfjgabov5TjgZlcbiAqL1xuZXhwb3J0IHR5cGUgTWlkZGxld2FyZSA9ICh1cmw6IFVSTCkgPT4gVVJMIHwgc3RyaW5nIHwgUHJvbWlzZTxVUkwgfCBzdHJpbmc+O1xuXG4vKiogVVJM44KS5aSJ5o+b44GZ44KLXG4gKiBAcGFyYW0gdGV4dCBVUkzjgoLjgZfjgY/jga9VUkzjgpIw5YCL5Lul5LiK5ZCr44KT44Gg44OG44Kt44K544OIXG4gKiBAcGFyYW0gbWlkZGxld2FyZXMgVVJM44KS5aSJ5o+b44GZ44KL6Zai5pWw44CC5pyA5Yid44Gr5oyH5a6a44GX44Gf44KC44Gu44GL44KJ6aCG44Gr6YGp55So44GV44KM44KL44CC5paH5a2X5YiX44KS6L+U44GZ44Go44Gd44GT44Gn5Yem55CG44GM57WC44KP44KK44CB44Gd44Gu5paH5a2X5YiX44GM5YWD44GuVVJM44Gu5aSJ5o+b5b6M44Gu5paH5a2X5YiX44Go44GX44Gm5o6h55So44GV44KM44KLXG4gKiBAcmV0dXJuIOWkieaPm+W+jOOBruaWh+Wtl+WIl+OAguS9v+eUqOOBleOCjOOBn21pZGRsZXdhcmVz44Gu44Gp44KM44GL5LiA44Gk44GM6Z2e5ZCM5pyf5Yem55CG44GX44Gf5aC05ZCI44CBUHJvbWlzZeOBp+i/lOOBleOCjOOCi1xuICovXG5leHBvcnQgY29uc3QgY29udmVydCA9IChcbiAgdXJsOiBVUkwsXG4gIC4uLm1pZGRsZXdhcmVzOiBNaWRkbGV3YXJlW11cbik6IFByb21pc2U8c3RyaW5nPiB8IHN0cmluZyA9PiB7XG4gIGxldCBwcmV2OiBVUkwgfCBQcm9taXNlPFVSTCB8IHN0cmluZz4gPSB1cmw7XG4gIGZvciAoY29uc3QgbWlkZGxld2FyZSBvZiBtaWRkbGV3YXJlcykge1xuICAgIGNvbnN0IG5leHQ6IFVSTCB8IHN0cmluZyB8IFByb21pc2U8VVJMIHwgc3RyaW5nPiA9IHByZXYgaW5zdGFuY2VvZiBQcm9taXNlXG4gICAgICA/IHByZXYudGhlbigodXJsKSA9PiBpc1N0cmluZyh1cmwpID8gdXJsIDogbWlkZGxld2FyZSh1cmwpKVxuICAgICAgOiBtaWRkbGV3YXJlKHByZXYpO1xuICAgIGlmIChpc1N0cmluZyhuZXh0KSkgcmV0dXJuIG5leHQ7XG4gICAgLy8g5paw44GX44GEVVJM44Gr5L2c44KK55u044GZXG4gICAgcHJldiA9IG5leHQgaW5zdGFuY2VvZiBVUkxcbiAgICAgID8gbmV3IFVSTChuZXh0KVxuICAgICAgOiBuZXh0LnRoZW4oKGNvbnZlcnRlZCkgPT5cbiAgICAgICAgaXNTdHJpbmcoY29udmVydGVkKSA/IGNvbnZlcnRlZCA6IG5ldyBVUkwoY29udmVydGVkKVxuICAgICAgKTtcbiAgfVxuICByZXR1cm4gcHJldiBpbnN0YW5jZW9mIFByb21pc2UgPyBwcmV2LnRoZW4oKHVybCkgPT4gYCR7dXJsfWApIDogYCR7dXJsfWA7XG59O1xuIiwgImV4cG9ydCBpbnRlcmZhY2UgSFRUUEVycm9yIHtcbiAgbmFtZTogXCJIVFRQRXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICByZXNwb25zZTogUmVzcG9uc2U7XG59XG5cbmV4cG9ydCBjb25zdCBtYWtlSFRUUEVycm9yID0gKHJlc3BvbnNlOiBSZXNwb25zZSk6IEhUVFBFcnJvciB8IHVuZGVmaW5lZCA9PlxuICByZXNwb25zZS5vayA/IHVuZGVmaW5lZCA6ICh7XG4gICAgbmFtZTogXCJIVFRQRXJyb3JcIixcbiAgICBtZXNzYWdlOiBgJHtyZXNwb25zZS5zdGF0dXN9ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gLFxuICAgIHJlc3BvbnNlLFxuICB9KTtcbiIsICIvLyDoqqzmmI7jga7kuIDpg6jjga8gaHR0cHM6Ly9kZXZlbG9wZXIudHdpdHRlci5jb20vZW4vZG9jcy90d2l0dGVyLWFwaSDjgYvjgonjgrPjg5Tjg5rjgZfjgZ9cbmltcG9ydCB7IEhUVFBFcnJvciwgbWFrZUhUVFBFcnJvciB9IGZyb20gXCIuLi9lcnJvci50c1wiO1xuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBHTV9mZXRjaDogKHR5cGVvZiBmZXRjaCkgfCB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqIHR3ZWV044KS5Y+W5b6X44GZ44KLXG4gKlxuICogQHBhcmFtIHR3ZWV0SWQg5Y+W5b6X44GX44Gf44GEdHdlZXTjga5JRFxuICogQHJldHVybiDmiJDlip/jgZnjgovjgah0d2VldHlwZW9mIGNvbnZlcnRlZCA9PT0gXCJzdHJpbmdcInTjga7lkITnqK7mg4XloLHjgpLov5TjgZnjgIJgR01fZmV0Y2hg44GM44Gq44GE44Go44GN44GvYHVuZGVmaW5lZGDjgpLlkIzmnJ/jgafov5TjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFR3ZWV0ID0gKFxuICB0d2VldElkOiBzdHJpbmcsXG4pOiBQcm9taXNlPFJlc3VsdDxUd2VldCwgSFRUUEVycm9yPj4gfCB1bmRlZmluZWQgPT4ge1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLXdpbmRvd1xuICBpZiAoIXdpbmRvdy5HTV9mZXRjaCkgcmV0dXJuO1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLXdpbmRvd1xuICBjb25zdCBmZXRjaF8gPSB3aW5kb3cuR01fZmV0Y2g7XG5cbiAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2hfKFxuICAgICAgYGh0dHBzOi8vY2RuLnN5bmRpY2F0aW9uLnR3aW1nLmNvbS90d2VldC1yZXN1bHQ/aWQ9JHt0d2VldElkfSZ0b2tlbj14YCxcbiAgICApO1xuICAgIGNvbnN0IGVycm9yID0gbWFrZUhUVFBFcnJvcihyZXMpO1xuICAgIGlmIChlcnJvcikgcmV0dXJuIHsgb2s6IGZhbHNlLCB2YWx1ZTogZXJyb3IgfTtcbiAgICBjb25zdCB0d2VldCA9IChhd2FpdCByZXMuanNvbigpKSBhcyBUd2VldDtcbiAgICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHR3ZWV0IH07XG4gIH0pKCk7XG59O1xuXG4vKiogVGhlIHJlc3BvbnNlIG9mIGBodHRwczovL2Nkbi5zeW5kaWNhdGlvbi50d2ltZy5jb20vdHdlZXQtcmVzdWx0P2lkPTp0d2VldElkYCAqL1xuZXhwb3J0IGludGVyZmFjZSBUd2VldCB7XG4gIF9fdHlwZW5hbWU6IFwiVHdlZXRcIjtcblxuICAvKiogdGhlIHNjcmVlbiBuYW1lIG9mIHRoZSB1c2VyIHRoZSBhdXRob3IgcmVwbHkgdG8gKi9cbiAgaW5fcmVwbHlfdG9fc2NyZWVuX25hbWU/OiBzdHJpbmc7XG4gIC8qKiB0aGUgdXNlciBpZCBvZiB0aGUgdXNlciB0aGUgYXV0aG9yIHJlcGx5IHRvICovXG4gIGluX3JlcGx5X3RvX3VzZXJfaWRfc3RyPzogc3RyaW5nO1xuICAvKiogdGhlIGlkIG9mIHRoZSB0d2VldCB0aGUgYXV0aG9yIHJlcGx5IHRvICovXG4gIGluX3JlcGx5X3RvX3N0YXR1c19pZF9zdHI/OiBzdHJpbmc7XG4gIHNlbGZfdGhyZWFkPzoge1xuICAgIGlkX3N0cjogc3RyaW5nO1xuICB9O1xuXG4gIHBsYWNlPzogUGxhY2U7XG5cbiAgLyoqIHRoZSB0d2VldCBpZCAqL1xuICBpZF9zdHI6IHN0cmluZztcblxuICAvKiogdGhlIGxhbmd1YWdlIG9mIHRoZSB0d2VldCAqL1xuICBsYW5nOiBzdHJpbmc7XG5cbiAgLyoqIHRoZSB0d2VldCBjb250ZW50ICovXG4gIHRleHQ6IHN0cmluZztcblxuICAvKiogdGhlIGF1dGhvciBvZiB0aGUgdHdlZXQgKi9cbiAgdXNlcjogVXNlcjtcblxuICAvKiogdGhlIG51bWJlciBvZiBmYXZvcml0ZSAqL1xuICBmYXZvcml0ZV9jb3VudDogbnVtYmVyO1xuXG4gIC8qKiB0aGUgbnVtYmVyIG9mIHJlcGxpZXMgKi9cbiAgY29udmVyc2F0aW9uX2NvdW50OiBudW1iZXI7XG5cbiAgZGlzcGxheV90ZXh0X3JhbmdlOiBJbmRpY2VzO1xuICBjcmVhdGVkX2F0OiBzdHJpbmc7XG5cbiAgZW50aXRpZXM6IEVudGl0aWVzO1xuICBtZWRpYURldGFpbHM/OiBNZWRpYURldGFpbFtdO1xuICBwaG90b3M/OiBQaG90b1tdO1xuICB2aWRlbz86IFZpZGVvO1xuXG4gIG5ld3NfYWN0aW9uX3R5cGU6IFwiY292aWQxOVwiIHwgXCJjb252ZXJzYXRpb25cIjtcblxuICAvKiogdGhlIHR3ZWV0IHRvIGJlIHJlcGxpZWQgdG8gKi9cbiAgcGFyZW50PzogUmVmVHdlZXQ7XG5cbiAgLyoqIHRoZSB0d2VldCB0byBiZSBxdW90ZWQgKi9cbiAgcXVvdGVkX3R3ZWV0PzogUmVmVHdlZXQ7XG5cbiAgY2FyZD86IENhcmQ7XG5cbiAgcG9zc2libHlfc2Vuc2l0aXZlPzogYm9vbGVhbjtcblxuICBlZGl0X2NvbnRyb2w6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpc0VkaXRlZDogYm9vbGVhbjtcblxuICBpc1N0YWxlRWRpdDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyIHtcbiAgLyoqIHVzZXIgaWQgKi9cbiAgaWRfc3RyOiBzdHJpbmc7XG5cbiAgLyoqIERpc3BsYXkgbmFtZSBvZiB0aGUgcmVmZXJlbmNlZCB1c2VyLlxuICAgKlxuICAgKiBAZXhhbXBsZSBuYW1lOiBcIlR3aXR0ZXIgQVBJXCJcbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKiogU2NyZWVuIG5hbWUgb2YgdGhlIHJlZmVyZW5jZWQgdXNlclxuICAgKlxuICAgKiBAZXhhbXBsZSBzY3JlZW5fbmFtZTogXCJ0d2l0dGVyYXBpXCJcbiAgICovXG4gIHNjcmVlbl9uYW1lOiBzdHJpbmc7XG5cbiAgLyoqIHByb2ZpbGUgaW1hZ2UgVVJMICovXG4gIHByb2ZpbGVfaW1hZ2VfdXJsX2h0dHBzOiBzdHJpbmc7XG5cbiAgLyoqIHdoZXRoZXIgdG8gYSB2ZXJpZmllZCBhY2NvdW50ICovXG4gIHZlcmlmaWVkOiBib29sZWFuO1xuXG4gIHZlcmlmaWVkX3R5cGU/OiBzdHJpbmc7XG5cbiAgLyoqIHdoZXRoZXIgdG8gYSBibHVlLXZlcmlmaWVkIGFjY291bnQgKi9cbiAgaXNfYmx1ZV92ZXJpZmllZDogYm9vbGVhbjtcblxuICBoaWdobGlnaHRlZF9sYWJlbD86IHtcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIHVzZXJfbGFiZWxfdHlwZTogc3RyaW5nO1xuICAgIGJhZGdlOiB7IHVybDogc3RyaW5nIH07XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhY2Uge1xuICAvKiogSUQgcmVwcmVzZW50aW5nIHRoaXMgcGxhY2UgKi9cbiAgaWQ6IHN0cmluZztcblxuICAvKiogRnVsbCBodW1hbi1yZWFkYWJsZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGxhY2XigJlzIG5hbWUgKi9cbiAgZnVsbF9uYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmVHdlZXRcbiAgZXh0ZW5kcyBPbWl0PFR3ZWV0LCBcIl9fdHlwZW5hbWVcIiB8IFwiY29udmVyc2F0aW9uX2NvdW50XCI+IHtcbiAgLyoqIHRoZSBudW1iZXIgb2YgcmVwbGllcyAqL1xuICByZXBseV9jb3VudDogbnVtYmVyO1xuXG4gIC8qKiB0aGUgbnVtYmVyIG9mIHJldHdlZXRzICovXG4gIHJldHdlZXRfY291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdGllcyB7XG4gIGhhc2h0YWdzOiBIYXNodGFnRW50aXR5W107XG4gIHVybHM6IFVybEVudGl0eVtdO1xuICB1c2VyX21lbnRpb25zOiBVc2VyTWVudGlvbkVudGl0eVtdO1xuICBzeW1ib2xzOiBTeW1ib2xFbnRpdHlbXTtcbiAgbWVkaWE/OiBVcmxFbnRpdHlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIYXNodGFnRW50aXR5IGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqIE5hbWUgb2YgdGhlIGhhc2h0YWcsIG1pbnVzIHRoZSBsZWFkaW5nIOKAmCPigJkgY2hhcmFjdGVyICovXG4gIHRleHQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTeW1ib2xFbnRpdHkgZXh0ZW5kcyBFbnRpdHkge1xuICAvKiogTmFtZSBvZiB0aGUgY2FzaHRhZywgbWludXMgdGhlIGxlYWRpbmcg4oCYJOKAmSBjaGFyYWN0ZXIgKi9cbiAgdGV4dDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVybEVudGl0eSBleHRlbmRzIEVudGl0eSB7XG4gIC8qKiBXcmFwcGVkIFVSTCwgY29ycmVzcG9uZGluZyB0byB0aGUgdmFsdWUgZW1iZWRkZWQgZGlyZWN0bHkgaW50byB0aGUgcmF3IFR3ZWV0IHRleHQsIGFuZCB0aGUgdmFsdWVzIGZvciB0aGUgaW5kaWNlcyBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIEBleGFtcGxlIFwidXJsXCI6XCJodHRwczovL3QuY28veXpvY05Gdkp1TFwiXG4gICAqL1xuICB1cmw6IHN0cmluZztcblxuICAvKiogRXhwYW5kZWQgdmVyc2lvbiBvZiBgZGlzcGxheV91cmxgXG4gICAqXG4gICAqIEBleGFtcGxlIFwiZXhwYW5kZWRfdXJsXCI6XCJodHRwOi8vYml0Lmx5LzJzbzQ5bjJcIlxuICAgKi9cbiAgZXhwYW5kZWRfdXJsOiBzdHJpbmc7XG5cbiAgLyoqIFVSTCBwYXN0ZWQvdHlwZWQgaW50byBUd2VldFxuICAgKlxuICAgKiBAZXhhbXBsZSBcImRpc3BsYXlfdXJsXCI6XCJiaXQubHkvMnNvNDluMlwiXG4gICAqL1xuICBkaXNwbGF5X3VybDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJNZW50aW9uRW50aXR5IGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqIHRoZSBtZW50aW9uZWQgdXNlciBpZCAqL1xuICBpZF9zdHI6IHN0cmluZztcblxuICAvKiogRGlzcGxheSBuYW1lIG9mIHRoZSBtZW50aW9uZWQgdXNlciAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIFNjcmVlbiBuYW1lIG9mIHRoZSBtZW50aW9uZWQgdXNlciAqL1xuICBzY3JlZW5fbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eSB7XG4gIC8qKiBBbiBhcnJheSBvZiBpbnRlZ2VycyByZXByZXNlbnRpbmcgb2Zmc2V0cyB3aXRoaW4gdGhlIFR3ZWV0IHRleHQgd2hlcmUgdGhlIGVudGl0eSBiZWdpbnMgYW5kIGVuZHMuXG4gICAqIFRoZSBmaXJzdCBpbnRlZ2VyIHJlcHJlc2VudHMgdGhlIGxvY2F0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGVudGl0eSBpbiB0aGUgVHdlZXQgdGV4dC5cbiAgICogVGhlIHNlY29uZCBpbnRlZ2VyIHJlcHJlc2VudHMgdGhlIGxvY2F0aW9uIG9mIHRoZSBmaXJzdCBub24tZW50aXR5IGNoYXJhY3RlciBhZnRlciB0aGUgZW5kIG9mIHRoZSBlbnRpdHkuXG4gICAqXG4gICAqIEBleGFtcGxlIFwiaW5kaWNlc1wiOlszMCw1M11cbiAgICovXG4gIGluZGljZXM6IEluZGljZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVkaWFEZXRhaWwgZXh0ZW5kcyBVcmxFbnRpdHkge1xuICB0eXBlOiBcInBob3RvXCIgfCBcInZpZGVvXCIgfCBcImFuaW1hdGVkX2dpZlwiO1xuICBleHRfbWVkaWFfYXZhaWxhYmlsaXR5OiBNZWRpYUF2YWlsYWJpbGl0eTtcbiAgZXh0X21lZGlhX3N0YXRzPzoge1xuICAgIHZpZXdfY291bnQ6IG51bWJlcjtcbiAgfTtcbiAgZXh0X2FsdF90ZXh0Pzogc3RyaW5nO1xuICBtZWRpYV91cmxfaHR0cHM6IHN0cmluZztcbiAgb3JpZ2luYWxfaW5mbzoge1xuICAgIGhlaWdodDogbnVtYmVyO1xuICAgIHdpZHRoOiBudW1iZXI7XG4gICAgZm9jdXNfcmVjdHM/OiBDb29yZGluYXRlW107XG4gIH07XG4gIHNpemVzOiBSZWNvcmQ8XG4gICAgXCJsYXJnZVwiIHwgXCJtZWRpdW1cIiB8IFwic21hbGxcIiB8IFwidGh1bWJcIixcbiAgICB7IHc6IG51bWJlcjsgaDogbnVtYmVyOyByZXNpemU6IFwiZml0XCIgfCBcImNyb3BcIiB9XG4gID47XG4gIGFkZGl0aW9uYWxfbWVkaWFfaW5mbz86IHtcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgZW1iZWRkYWJsZTogYm9vbGVhbjtcbiAgfTtcbiAgc2Vuc2l0aXZlX21lZGlhX3dhcm5pbmc/OiB7IHNpemU6IHN0cmluZyB9O1xuICB2aWRlb19pbmZvPzoge1xuICAgIGFzcGVjdF9yYXRpbzogW251bWJlciwgbnVtYmVyXTtcbiAgICBkdXJhdGlvbl9taWxsaXM/OiBudW1iZXI7XG4gICAgdmFyaWFudHM6IHsgYml0cmF0ZT86IG51bWJlcjsgY29udGVudF90eXBlOiBzdHJpbmc7IHVybDogc3RyaW5nIH1bXTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWRlbyB7XG4gIGFzcGVjdFJhdGlvOiBbbnVtYmVyLCBudW1iZXJdO1xuICBwb3N0ZXI6IHN0cmluZztcbiAgY29udGVudFR5cGU/OiBcIm1lZGlhX2VudGl0eVwiIHwgXCJnaWZcIiB8IFwidm1hcFwiIHwgXCJicm9hZGNhc3RcIjtcbiAgZHVyYXRpb25Ncz86IG51bWJlcjtcbiAgbWVkaWFBdmFpbGFiaWxpdHk/OiBNZWRpYUF2YWlsYWJpbGl0eTtcbiAgdmlkZW9JZD86IFZpZGVvSWQ7XG4gIHZpZXdDb3VudD86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTWVkaWFBdmFpbGFiaWxpdHkge1xuICBzdGF0dXM6IFwiQXZhaWxhYmxlXCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFyaWFudCB7XG4gIHR5cGU6IHN0cmluZztcbiAgc3JjOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlkZW9JZCB7XG4gIHR5cGU6IFwidHdlZXRcIiB8IFwiZG1cIiB8IFwiYnJvYWRjYXN0XCIgfCBcInN0YXRpY19icm9hZGNhc3RcIiB8IFwiYXVkaW9fc3BhY2VcIjtcbiAgaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaG90byB7XG4gIGFjY2Vzc2liaWxpdHlMYWJlbD86IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBDb2xvcjtcbiAgY3JvcENvb3JkaW5hdGVzOiBDb29yZGluYXRlW107XG4gIGV4cGFuZGVkVXJsOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2xvciB7XG4gIHJlZDogbnVtYmVyO1xuICBncmVlbjogbnVtYmVyO1xuICBibHVlOiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvb3JkaW5hdGUge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgdzogbnVtYmVyO1xuICBoOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIEluZGljZXMgPSBbbnVtYmVyLCBudW1iZXJdO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhcmQge1xuICBjYXJkX3BsYXRmb3JtOiB7XG4gICAgcGxhdGZvcm06IHtcbiAgICAgIGF1ZGllbmNlOiB7IG5hbWU6IHN0cmluZyB9O1xuICAgICAgZGV2aWNlOiB7XG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgdmVyc2lvbjogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICBuYW1lOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBiaW5kaW5nX3ZhbHVlczogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICBTdHJpbmdWYWx1ZSB8IEJvb2xlYW5WYWx1ZSB8IEltYWdlVmFsdWUgfCBJbWFnZUNvbG9yVmFsdWUgfCBVc2VyVmFsdWVcbiAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdWYWx1ZSB7XG4gIHR5cGU6IFwiU1RSSU5HXCI7XG4gIHN0cmluZ192YWx1ZTogc3RyaW5nO1xuICBzY3JpYmVfa2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5WYWx1ZSB7XG4gIHR5cGU6IFwiQk9PTEVBTlwiO1xuICBib29sZWFuX3ZhbHVlOiBib29sZWFuO1xuICBzY3JpYmVfa2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlVmFsdWUge1xuICB0eXBlOiBcIklNQUdFXCI7XG4gIGltYWdlX3ZhbHVlOiB7XG4gICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICB1cmw6IHN0cmluZztcbiAgfTtcbiAgc2NyaWJlX2tleT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZUNvbG9yVmFsdWUge1xuICB0eXBlOiBcIklNQUdFX0NPTE9SXCI7XG4gIGltYWdlX2NvbG9yX3ZhbHVlOiB7XG4gICAgcGFsZXR0ZToge1xuICAgICAgcmdiOiBDb2xvcjtcbiAgICAgIHBlcmNlbnRhZ2U6IG51bWJlcjtcbiAgICB9W107XG4gIH07XG4gIHNjcmliZV9rZXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclZhbHVlIHtcbiAgdHlwZTogXCJVU0VSXCI7XG4gIHVzZXJfdmFsdWU6IHtcbiAgICBpZF9zdHI6IHN0cmluZztcbiAgICBwYXRoOiB1bmtub3duW107XG4gIH07XG4gIHNjcmliZV9rZXk/OiBzdHJpbmc7XG59XG4iLCAiZXhwb3J0IHR5cGUgVGltZXN0YW1wID0gc3RyaW5nO1xuXG4vKiog5q2j5bi45YCk44Go55Ww5bi45YCk44KS5qC857SN44GZ44KL5Z6LICovXG5leHBvcnQgdHlwZSBSZXN1bHQ8VCwgRT4gPSB7IG9rOiB0cnVlOyB2YWx1ZTogVCB9IHwgeyBvazogZmFsc2U7IHZhbHVlOiBFIH07XG5cbi8qKiBuZXR3b3Jr44GL44KJZGF0YeOCkuOBqOOBo+OBpuOBj+OCi+WHpueQhlxuICpcbiAqIGludGVyZmFjZeOBr2BmZXRjaCgpYOOBqOWQjOOBmFxuICovXG5leHBvcnQgdHlwZSBGZXRjaCA9IChcbiAgaW5wdXQ6IHN0cmluZyB8IFJlcXVlc3QsXG4gIGluaXQ/OiBSZXF1ZXN0SW5pdCxcbikgPT4gUHJvbWlzZTxSZXNwb25zZT47XG5cbi8qKiDlhajjgabjga5SRVNUIEFQSeOBq+WFsemAmuOBmeOCi29waXRvbnMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZU9wdGlvbnMge1xuICAvKiog44OH44O844K/44Gu5Y+W5b6X44Gr5L2/44GG5Yem55CGXG4gICAqXG4gICAqIEBkZWZhdWx0IGZldGNoXG4gICAqL1xuICBmZXRjaD86IEZldGNoO1xufVxuXG4vKiogT0F1dGggQVBJ55Sob3B0aW9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBPQXV0aE9wdGlvbnMgZXh0ZW5kcyBCYXNlT3B0aW9ucyB7XG4gIC8qKiB1c2VyIGFjY291bnTjgavntJDku5jjgYTjgZ9hY2Nlc3MgdG9rZW4gKi9cbiAgYWNjZXNzVG9rZW46IHN0cmluZztcbn1cblxuLyoqIEJhc2VPcHRpb25z44Gu5pei5a6a5YCk44KS5Z+L44KB44KLICovXG5leHBvcnQgY29uc3Qgc2V0RGVmYXVsdHMgPSA8VCBleHRlbmRzIEJhc2VPcHRpb25zID0gQmFzZU9wdGlvbnM+KFxuICBvcHRpb25zOiBULFxuKTogT21pdDxULCBcImZldGNoXCI+ICYgUmVxdWlyZWQ8UGljazxCYXNlT3B0aW9ucywgXCJmZXRjaFwiPj4gPT4ge1xuICBjb25zdCB7IGZldGNoID0gZ2xvYmFsVGhpcy5mZXRjaCwgLi4ucmVzdCB9ID0gb3B0aW9ucztcbiAgcmV0dXJuIHsgZmV0Y2gsIC4uLnJlc3QgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc09iamVjdCA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbDtcbiIsICJpbXBvcnQgeyBpc09iamVjdCwgUmVzdWx0IH0gZnJvbSBcIi4vdXRpbC50c1wiO1xuXG5leHBvcnQgY2xhc3MgVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIG5hbWUgPSBcIlVuZXhwZWN0ZWRSZXNwb25zZUVycm9yXCI7XG4gIHN0YXR1czogbnVtYmVyO1xuICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgcGF0aDogVVJMO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluaXQ6IHsgc3RhdHVzOiBudW1iZXI7IHN0YXR1c1RleHQ6IHN0cmluZzsgYm9keTogc3RyaW5nOyBwYXRoOiBVUkwgfSxcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBgJHtpbml0LnN0YXR1c30gJHtpbml0LnN0YXR1c1RleHR9IHdoZW4gZmV0Y2hpbmcgJHtpbml0LnBhdGgudG9TdHJpbmcoKX1gLFxuICAgICk7XG5cbiAgICB0aGlzLnN0YXR1cyA9IGluaXQuc3RhdHVzO1xuICAgIHRoaXMuc3RhdHVzVGV4dCA9IGluaXQuc3RhdHVzVGV4dDtcbiAgICB0aGlzLmJvZHkgPSBpbml0LmJvZHk7XG4gICAgdGhpcy5wYXRoID0gaW5pdC5wYXRoO1xuXG4gICAgLy8gQHRzLWlnbm9yZSBvbmx5IGF2YWlsYWJsZSBvbiBWOFxuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgICAgLy8gQHRzLWlnbm9yZSBvbmx5IGF2YWlsYWJsZSBvbiBWOFxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgaXNVbmV4cGVjdGVkUmVzcG9uc2VFcnJvciA9IChcbiAgZTogdW5rbm93bixcbik6IGUgaXMgVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IgPT5cbiAgKGUgaW5zdGFuY2VvZiBFcnJvcikgJiYgZS5uYW1lID09PSBcIlVuZXhwZWN0ZWRSZXNwb25zZUVycm9yXCI7XG5cbi8qKiA0MDDjga7jgajjgY3jga5lcnJvciBvYmplY3QgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFkUmVxdWVzdEVycm9yIHtcbiAgbmFtZTogXCJCYWRSZXF1ZXN0RXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuLyoqIDQwMeOBruOBqOOBjeOBrmVycm9yIG9iamVjdCAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmF1dGhvcml6ZWRFcnJvciB7XG4gIG5hbWU6IFwiVW5hdXRob3JpemVkRXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuLyoqIDQwM+OBruOBqOOBjeOBrmVycm9yIG9iamVjdCAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RQcml2aWxlZ2VFcnJvciB7XG4gIG5hbWU6IFwiTm90UHJpdmlsZWdlRXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuLyoqIDQwNOOBruOBqOOBjeOBrmVycm9yIG9iamVjdCAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RGb3VuZEVycm9yIHtcbiAgbmFtZTogXCJOb3RGb3VuZEVycm9yXCI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cbi8qKiA0MjLjga7jgajjgY3jga5lcnJvciBvYmplY3QgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW52YWxpZFBhcmFtZXRlckVycm9yIHtcbiAgbmFtZTogXCJJbnZhbGlkUGFyYW1ldGVyRXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuLyoqIDQyOeOBruOBqOOBjeOBrmVycm9yIG9iamVjdCAqL1xuZXhwb3J0IGludGVyZmFjZSBSYXRlTGltaXRFcnJvciB7XG4gIG5hbWU6IFwiUmF0ZUxpbWl0RXJyb3JcIjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgR3lhem9BUElFcnJvciA9XG4gIHwgQmFkUmVxdWVzdEVycm9yXG4gIHwgVW5hdXRob3JpemVkRXJyb3JcbiAgfCBOb3RQcml2aWxlZ2VFcnJvclxuICB8IE5vdEZvdW5kRXJyb3JcbiAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgfCBSYXRlTGltaXRFcnJvcjtcblxuLyoqIHJlc3BvbnNl44GM5q2j5bi444GL44Gp44GG44GL44KS56K644GL44KB44KLXG4gKlxuICogQHBhcmFtIHJlc3BvbnNlIOeiuuOBi+OCgeOBn+OBhFJlc3BvbnNlXG4gKiBAcmV0dXJuIOWkieaPm+OBp+OBjeOBn+OCieOBneOBrm9iamVjdOOCkui/lOOBmVxuICogQHRocm93cyB7VW5leHBlY3RlZFJlc3BvbnNlRXJyb3J9XG4gKi9cbmV4cG9ydCBjb25zdCBjaGVja1Jlc3BvbnNlID0gYXN5bmMgKFxuICByZXNwb25zZTogUmVzcG9uc2UsXG4pOiBQcm9taXNlPFxuICBSZXN1bHQ8XG4gICAgc3RyaW5nLFxuICAgIEd5YXpvQVBJRXJyb3JcbiAgPlxuPiA9PiB7XG4gIGNvbnN0IHRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gIGlmIChyZXNwb25zZS5vaykgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiB0ZXh0IH07XG5cbiAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9rOiBmYWxzZSxcbiAgICAgIHZhbHVlOiB7IG5hbWU6IFwiQmFkUmVxdWVzdEVycm9yXCIsIG1lc3NhZ2U6IHRleHQgfSxcbiAgICB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBqc29uOiB1bmtub3duID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICBpZiAoIWlzT2JqZWN0KGpzb24pIHx8IHR5cGVvZiBqc29uLm1lc3NhZ2UgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkUmVzcG9uc2VFcnJvcih7XG4gICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiByZXNwb25zZS5zdGF0dXNUZXh0LFxuICAgICAgICBib2R5OiB0ZXh0LFxuICAgICAgICBwYXRoOiBuZXcgVVJMKHJlc3BvbnNlLnVybCksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICAgIHZhbHVlOiB7IG5hbWU6IFwiVW5hdXRob3JpemVkRXJyb3JcIiwgbWVzc2FnZToganNvbi5tZXNzYWdlIH0sXG4gICAgICAgIH07XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvazogZmFsc2UsXG4gICAgICAgICAgdmFsdWU6IHsgbmFtZTogXCJOb3RQcml2aWxlZ2VFcnJvclwiLCBtZXNzYWdlOiBqc29uLm1lc3NhZ2UgfSxcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgNDA0OlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgICB2YWx1ZTogeyBuYW1lOiBcIk5vdEZvdW5kRXJyb3JcIiwgbWVzc2FnZToganNvbi5tZXNzYWdlIH0sXG4gICAgICAgIH07XG4gICAgICBjYXNlIDQyMjpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvazogZmFsc2UsXG4gICAgICAgICAgdmFsdWU6IHsgbmFtZTogXCJJbnZhbGlkUGFyYW1ldGVyRXJyb3JcIiwgbWVzc2FnZToganNvbi5tZXNzYWdlIH0sXG4gICAgICAgIH07XG4gICAgICBjYXNlIDQyOTpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvazogZmFsc2UsXG4gICAgICAgICAgdmFsdWU6IHsgbmFtZTogXCJSYXRlTGltaXRFcnJvclwiLCBtZXNzYWdlOiBqc29uLm1lc3NhZ2UgfSxcbiAgICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkUmVzcG9uc2VFcnJvcih7XG4gICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcbiAgICAgICAgICBib2R5OiB0ZXh0LFxuICAgICAgICAgIHBhdGg6IG5ldyBVUkwocmVzcG9uc2UudXJsKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICB9IGNhdGNoIChlMjogdW5rbm93bikge1xuICAgIGlmIChlMiBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFJlc3BvbnNlRXJyb3Ioe1xuICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcbiAgICAgICAgYm9keTogdGV4dCxcbiAgICAgICAgcGF0aDogbmV3IFVSTChyZXNwb25zZS51cmwpLFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIEpTT07jga5wYXJzZSBlcnJvcuS7peWkluOBr+OBneOBruOBvuOBvuaKleOBkuOCi1xuICAgIHRocm93IGUyO1xuICB9XG59O1xuIiwgImltcG9ydCB7IE9BdXRoT3B0aW9ucywgUmVzdWx0LCBzZXREZWZhdWx0cywgVGltZXN0YW1wIH0gZnJvbSBcIi4vdXRpbC50c1wiO1xuaW1wb3J0IHsgY2hlY2tSZXNwb25zZSwgR3lhem9BUElFcnJvciB9IGZyb20gXCIuL2Vycm9yLnRzXCI7XG5cbi8qKiBtZXRhZGF0YSBhbmQgYWNjZXNzIHRva2VucyAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRJbml0IGV4dGVuZHMgT0F1dGhPcHRpb25zIHtcbiAgLyoqIHRoZSBpbWFnZSB0aXRsZVxuICAgKlxuICAgKiBHeWF6b+OBrlwiRnJvbSB4eHhcIuashOOBq+ihqOekuuOBleOCjOOCi1xuICAgKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgaW1hZ2VcbiAgICpcbiAgICogR3lhem/jga5oYXNodGFn44KS5pu444GN6L6844KA5aC05omA44Gr6KGo56S644GV44KM44KLXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKiogVW5peCB0aW1lIHdoaWNoIHRoZSBpbWFnZSB3YXMgY3JlYXRlZCBhdCAqL1xuICBjcmVhdGVkPzogbnVtYmVyO1xuXG4gIC8qKiB3aGV0aGVyIHRvIG1ha2UgdGhlIG1ldGFkYXRhIG9mIHRoZSBpbWFnZSBwdWJsaWNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2UgKHByaXZhdGUpXG4gICAqL1xuICBtZXRhZGF0YUlzUHVibGljPzogYm9vbGVhbjtcblxuICAvKiogY29sbGVjdGlvbiBpZCB0aGUgaW1hZ2UgaXMgYWRkZWQgdG8gKi9cbiAgY29sbGVjdGlvbklkPzogc3RyaW5nO1xuXG4gIC8qKiBVUkwgcmVsYXRlZCB0byB0aGUgaW1hZ2UgKi9cbiAgcmVmZXJlclVSTD86IHN0cmluZyB8IFVSTDtcblxuICAvKiogQXBwIG5hbWUgd2hpY2ggY3JlYXRlIHRoZSBpbWFnZSAqL1xuICBhcHA/OiBzdHJpbmc7XG59XG5cbi8qKiB0aGUgcmVzdWx0IG9mIGB1cGxvYWQoKWBcbiAqXG4gKiB0aGlzIGluY2x1ZGVzIFVSTHMgb2YgdGhlIHVwbG9hZGVkIGltYWdlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkUmVzdWx0IHtcbiAgLyoqIGltYWdlIGlkICovXG4gIGltYWdlX2lkOiBzdHJpbmc7XG5cbiAgLyoqIHBlcm1hbGluayB1cmwgKi9cbiAgcGVybWFsaW5rX3VybDogc3RyaW5nO1xuXG4gIC8qKiBpbWFnZSAgdXJsICovXG4gIHVybDogc3RyaW5nO1xuXG4gIC8qKiBmaWxlIGV4dGVuc2lvbiAqL1xuICB0eXBlOiBcInBuZ1wiIHwgXCJqcGdcIjtcblxuICAvKiogdGh1bWJuYWlsIHVybCAqL1xuICB0aHVtYl91cmw6IHN0cmluZztcblxuICAvKiogdGltZXN0YW1wIHdoaWNoIHRoZSBpbWFnZSBpcyBjcmVhdGVkIGF0ICovXG4gIGNyZWF0ZWRfYXQ6IFRpbWVzdGFtcDtcbn1cblxuLyoqIEd5YXpv44G455S75YOP44KSdXBsb2Fk44GZ44KLXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYWlvbiwgc2VlIGh0dHBzOi8vZ3lhem8uY29tL2FwaS9kb2NzL2ltYWdlI3VwbG9hZFxuICpcbiAqIEBwYXJhbSBpbWFnZSB1cGxvYWTjgZnjgovnlLvlg4/jg4fjg7zjgr9cbiAqIEBwYXJhbSBpbml0IHRva2Vu44GobWV0YWRhdGFcbiAqL1xuZXhwb3J0IGNvbnN0IHVwbG9hZCA9IGFzeW5jIChcbiAgaW1hZ2U6IEJsb2IsXG4gIGluaXQ6IFVwbG9hZEluaXQsXG4pOiBQcm9taXNlPFJlc3VsdDxVcGxvYWRSZXN1bHQsIEd5YXpvQVBJRXJyb3I+PiA9PiB7XG4gIGNvbnN0IHtcbiAgICB0aXRsZSxcbiAgICBkZXNjcmlwdGlvbixcbiAgICBtZXRhZGF0YUlzUHVibGljLFxuICAgIGNvbGxlY3Rpb25JZCxcbiAgICByZWZlcmVyVVJMLFxuICAgIGFjY2Vzc1Rva2VuLFxuICAgIGNyZWF0ZWQsXG4gICAgYXBwLFxuICAgIGZldGNoLFxuICB9ID0gc2V0RGVmYXVsdHMoaW5pdCk7XG5cbiAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgZm9ybURhdGEuYXBwZW5kKFwiaW1hZ2VkYXRhXCIsIGltYWdlKTtcbiAgZm9ybURhdGEuYXBwZW5kKFwiYWNjZXNzX3Rva2VuXCIsIGFjY2Vzc1Rva2VuKTtcbiAgaWYgKHJlZmVyZXJVUkwpIGZvcm1EYXRhLmFwcGVuZChcInJlZmVyZXJfdXJsXCIsIHJlZmVyZXJVUkwudG9TdHJpbmcoKSk7XG4gIGlmIChhcHAgIT09IHVuZGVmaW5lZCkgZm9ybURhdGEuYXBwZW5kKFwiYXBwXCIsIGFwcCk7XG4gIGlmICh0aXRsZSAhPT0gdW5kZWZpbmVkKSBmb3JtRGF0YS5hcHBlbmQoXCJ0aXRsZVwiLCB0aXRsZSk7XG4gIGlmIChkZXNjcmlwdGlvbiAhPSB1bmRlZmluZWQpIGZvcm1EYXRhLmFwcGVuZChcImRlc2NcIiwgZGVzY3JpcHRpb24pO1xuICBpZiAoY29sbGVjdGlvbklkKSBmb3JtRGF0YS5hcHBlbmQoXCJjb2xsZWN0aW9uX2lkXCIsIGNvbGxlY3Rpb25JZCk7XG4gIGlmIChtZXRhZGF0YUlzUHVibGljKSBmb3JtRGF0YS5hcHBlbmQoXCJtZXRhZGF0YV9pc19wdWJsaWNcIiwgXCJ0cnVlXCIpO1xuICBpZiAoY3JlYXRlZCAhPT0gdW5kZWZpbmVkKSBmb3JtRGF0YS5hcHBlbmQoXCJjcmVhdGVkX2F0XCIsIGAke2NyZWF0ZWR9YCk7XG5cbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goXG4gICAgXCJodHRwczovL3VwbG9hZC5neWF6by5jb20vYXBpL3VwbG9hZFwiLFxuICAgIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBtb2RlOiBcImNvcnNcIixcbiAgICAgIGNyZWRlbnRpYWxzOiBcIm9taXRcIixcbiAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgY2hlY2tlZCA9IGF3YWl0IGNoZWNrUmVzcG9uc2UocmVzKTtcbiAgaWYgKCFjaGVja2VkLm9rKSByZXR1cm4gY2hlY2tlZDtcbiAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBKU09OLnBhcnNlKGNoZWNrZWQudmFsdWUpIH07XG59O1xuIiwgIi8qKiBUYW1wZXJNb25rZXnjgYvjgonms6jlhaXjgZXjgozjgZ/lh73mlbBcbiAqXG4gKiDjgZPjga5tb2R1bGXjga7lh73mlbDjga/jgIFHTV9mZXRjaOOBjOOBguOCi+adoeS7tuOBp+OBl+OBi+S9v+OCj+OBquOBhOOBruOBp+OAgWB1bmRlZmluZWRg44Gu5Y+v6IO95oCn44KS5o6S6Zmk44GX44Gm44GE44KLXG4gKi9cbmRlY2xhcmUgY29uc3QgR01fZmV0Y2g6IHR5cGVvZiBmZXRjaDtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZFRvR3lhem9HSUYgPSAoXG4gIHZpZGVvOiBGaWxlLFxuICBvcHRpb25zPzogeyB0ZWFtcz86IGJvb2xlYW4gfSxcbik6IFByb21pc2U8UmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgZm9ybURhdGEuYXBwZW5kKFwiZGF0YVwiLCB2aWRlbyk7XG4gIGZvcm1EYXRhLmFwcGVuZChcbiAgICBcIm1ldGFkYXRhXCIsXG4gICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgYXBwOiBcIkd5YXpvXCIsXG4gICAgICB0aXRsZTogdmlkZW8ubmFtZSxcbiAgICB9KSxcbiAgKTtcbiAgcmV0dXJuIEdNX2ZldGNoKFxuICAgIGBodHRwczovL2dpZi5neWF6by5jb20vJHtvcHRpb25zPy50ZWFtcyA/IFwidGVhbXNcIiA6IFwiZ2lmXCJ9L3VwbG9hZGAsXG4gICAge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgY3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBPcmlnaW46IFwiaHR0cHM6Ly9neWF6by5jb21cIixcbiAgICAgICAgXCJzZWMtZmV0Y2gtc2l0ZVwiOiBcInNhbWUtc2l0ZVwiLFxuICAgICAgfSxcbiAgICAgIHJlZmVycmVyOiBcImh0dHBzOi8vZ3lhem8uY29tL1wiLFxuICAgIH0sXG4gICk7XG59O1xuIiwgImltcG9ydCB7IHVwbG9hZCB9IGZyb20gXCIuLi9kZXBzL2Rlbm8tZ3lhem8udHNcIjtcbmltcG9ydCB7IGdldEd5YXpvVG9rZW4sIHVwbG9hZFRvR0NTIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuaW1wb3J0IHsgdXBsb2FkVG9HeWF6b0dJRiB9IGZyb20gXCIuL3VwbG9hZFZpZGVvLnRzXCI7XG4vKiogVGFtcGVyTW9ua2V544GL44KJ5rOo5YWl44GV44KM44Gf5Ye95pWwXG4gKlxuICog44GT44GubW9kdWxl44Gu5Ye95pWw44Gv44CBR01fZmV0Y2jjgYzjgYLjgovmnaHku7bjgafjgZfjgYvkvb/jgo/jgarjgYTjga7jgafjgIFgdW5kZWZpbmVkYOOBruWPr+iDveaAp+OCkuaOkumZpOOBl+OBpuOBhOOCi1xuICovXG5kZWNsYXJlIGNvbnN0IEdNX2ZldGNoOiB0eXBlb2YgZmV0Y2g7XG5cbmxldCB0b2tlbiA9IFwiXCI7XG5sZXQgY2hlY2tlZCA9IGZhbHNlO1xuY29uc3QgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgVVJMPigpO1xuXG5leHBvcnQgY29uc3QgdXBsb2FkVHdpbWcgPSBhc3luYyAoXG4gIHVybDogVVJMLFxuICB0d2VldFVSTDogVVJMLFxuICBwcm9qZWN0SWQ6IHN0cmluZyxcbiAgZGVzY3JpcHRpb246IHN0cmluZyxcbik6IFByb21pc2U8VVJMIHwgdW5kZWZpbmVkPiA9PiB7XG4gIGNvbnN0IGNhY2hlZFVSTCA9IGNhY2hlLmdldCh1cmwuaHJlZik7XG4gIGlmIChjYWNoZWRVUkwpIHJldHVybiBjYWNoZWRVUkw7XG4gIGlmICh1cmwuaG9zdG5hbWUgPT09IFwidmlkZW8udHdpbWcuY29tXCIgfHwgYCR7dXJsfWAuZW5kc1dpdGgoXCIuc3ZnXCIpKSB7XG4gICAgLy8gdXBsb2FkIHRoZSB2aWRlbyB0byBzY3JhcGJveC5pb1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IEdNX2ZldGNoKHVybCk7XG4gICAgaWYgKCFyZXMub2spIHJldHVybjtcbiAgICBjb25zdCB0eXBlID0gcmVzLmhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpPy5zcGxpdD8uKFwiO1wiKT8uWzBdID8/XG4gICAgICAgIGAke3VybH1gLmVuZHNXaXRoKFwiLm1wNFwiKVxuICAgICAgPyBcInZpZGVvL21wNFwiXG4gICAgICA6IFwidmlkZW8vd2VibVwiO1xuICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbYXdhaXQgcmVzLmJsb2IoKV0sIGRlc2NyaXB0aW9uIHx8IGAke3R3ZWV0VVJMfWAsIHtcbiAgICAgIHR5cGUsXG4gICAgfSk7XG4gICAgaWYgKHR5cGUgPT09IFwidmlkZW8vbXA0XCIpIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHVwbG9hZFRvR3lhem9HSUYoZmlsZSk7XG4gICAgICBpZiAocmVzLm9rKSB7XG4gICAgICAgIGNvbnN0IGZpbGVVUkwgPSBuZXcgVVJMKGF3YWl0IHJlcy50ZXh0KCkpO1xuICAgICAgICBjYWNoZS5zZXQodXJsLmhyZWYsIGZpbGVVUkwpO1xuICAgICAgICByZXR1cm4gZmlsZVVSTDtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdXBsb2FkVG9HQ1MoZmlsZSwgcHJvamVjdElkKTtcbiAgICBpZiAoIXJlc3VsdC5vaykgdGhyb3cgRXJyb3IocmVzdWx0LnZhbHVlLm5hbWUpO1xuICAgIGNvbnN0IGZpbGVVUkwgPSBuZXcgVVJMKHJlc3VsdC52YWx1ZS5lbWJlZFVybCk7XG5cbiAgICBjYWNoZS5zZXQodXJsLmhyZWYsIGZpbGVVUkwpO1xuXG4gICAgcmV0dXJuIGZpbGVVUkw7XG4gIH1cbiAgaWYgKHVybC5ob3N0bmFtZSAhPT0gXCJwYnMudHdpbWcuY29tXCIpIHJldHVybjtcbiAgaWYgKCF1cmwucGF0aG5hbWUuc3RhcnRzV2l0aChcIi9tZWRpYVwiKSkgcmV0dXJuO1xuXG4gIGlmICghY2hlY2tlZCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldEd5YXpvVG9rZW4oKTtcbiAgICBjaGVja2VkID0gdHJ1ZTtcbiAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgYWxlcnQoXG4gICAgICAgIFwiWW91IGhhdmVuJ3QgbG9nZ2VkIGluIEd5YXpvIHlldCwgc28geW91IGNhbiBvbmx5IHVwbG9hZCBpbWFnZXMgdG8gc2NyYXBib3guaW8uXCIsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0b2tlbiA9IHJlc3VsdC52YWx1ZSB8fCBcIlwiO1xuICAgIGlmICghdG9rZW4pIHtcbiAgICAgIGFsZXJ0KFxuICAgICAgICBcIllvdSBoYXZlbid0IGNvbm5lY3QgR3lhem8gdG8gc2NyYXBib3guaW8geWV0LlwiLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoIXRva2VuKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzID0gYXdhaXQgR01fZmV0Y2godXJsKTtcbiAgaWYgKCFyZXMub2spIHJldHVybjtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCB1cGxvYWQoYXdhaXQgcmVzLmJsb2IoKSwge1xuICAgIGFjY2Vzc1Rva2VuOiB0b2tlbixcbiAgICByZWZlcmVyVVJMOiB0d2VldFVSTCxcbiAgICBkZXNjcmlwdGlvbixcbiAgfSk7XG4gIGlmICghcmVzdWx0Lm9rKSB0aHJvdyBFcnJvcihyZXN1bHQudmFsdWUubmFtZSk7XG5cbiAgY29uc3QgZ3lhem9VUkwgPSBuZXcgVVJMKHJlc3VsdC52YWx1ZS5wZXJtYWxpbmtfdXJsKTtcblxuICBjYWNoZS5zZXQodXJsLmhyZWYsIGd5YXpvVVJMKTtcblxuICByZXR1cm4gZ3lhem9VUkw7XG59O1xuIiwgImNvbnN0IG1hcCA9IHtcbiAgXCImbHQ7XCI6IFwiPFwiLFxuICBcIiZndDtcIjogXCI+XCIsXG4gIFwiJmFtcDtcIjogXCImXCIsXG4gIFwiJnF1b3Q7XCI6ICdcIicsXG4gIFwiJiN4Mjc7XCI6IFwiJ1wiLFxuICBcIiYjeDYwO1wiOiBcImBcIixcbn07XG5cbi8qKiB1bmVzY2FwZSBub3RhYmxlIEhUTUwgc3BlY2lhbCBjaGFyYWN0ZXJzXG4gKlxuICogY2YuIGh0dHBzOi8vc2hhbmFicmlhbi5jb20vd2ViL2phdmFzY3JpcHQvdW5lc2NhcGUtaHRtbC5waHBcbiAqL1xuZXhwb3J0IGNvbnN0IHVuZXNjYXBlSFRNTCA9ICh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgdGV4dC5yZXBsYWNlKFxuICAgIC8mKGx0fGd0fGFtcHxxdW90fCN4Mjd8I3g2MCk7L2csXG4gICAgKG1hdGNoKSA9PiBtYXBbbWF0Y2ggYXMga2V5b2YgdHlwZW9mIG1hcF0sXG4gICk7XG4iLCAiaW1wb3J0IHR5cGUgeyBSZWZUd2VldCwgVHdlZXQgfSBmcm9tIFwiLi9nZXRUd2VldC50c1wiO1xuaW1wb3J0IHsgdW5lc2NhcGVIVE1MIH0gZnJvbSBcIi4vdW5lc2NhcGVIVE1MLnRzXCI7XG5cbi8qKiBBUEnjgYvjgonlj5blvpfjgZfjgZ9Ud2VldCBvYmplY3TjgpLjgIHkvb/jgYTjgoTjgZnjgYTjgojjgYblpInmj5vjgZfjgabov5TjgZlcbiAqXG4gKiDlhoXlrrlcbiAqIC0gdHdlZXTmnKzmlofkuK3jga5oYXNodGFn44KEVVJM44KS5bGV6ZaL44GZ44KLXG4gKiAtIOefree4rlVSTOOCkuWFg+OBrlVSTOOBq+OBmeOCi1xuICogLSBPR1Djga50aXRsZeOBqGRlc2NyaXB0aW9u44KS5Y+N5pig44GZ44KLXG4gKlxuICogcG9sbOOBr+eEoeimluOBl+OBpuOBhOOCi1xuICpcbiAqIEBwYXJhbSB0d2VldCDlpInmj5vjgZfjgZ/jgYR0d2VldCBvYmplY3RcbiAqIEByZXR1cm4g5aSJ5o+b5b6M44GudHdlZXQgb2JqZWN0XG4gKi9cbmV4cG9ydCBjb25zdCBwcm9jZXNzVHdlZXQgPSAoXG4gIHR3ZWV0OiBUd2VldCB8IFJlZlR3ZWV0LFxuKTogUHJvY2Vzc2VkVHdlZXQgPT4ge1xuICBjb25zdCBhdXRob3IgPSB7XG4gICAgbmFtZTogdHdlZXQudXNlci5uYW1lLFxuICAgIHNjcmVlbk5hbWU6IHR3ZWV0LnVzZXIuc2NyZWVuX25hbWUsXG4gIH07XG5cbiAgY29uc3QgcG9zdGVkID0gbmV3IERhdGUodHdlZXQuY3JlYXRlZF9hdCk7XG5cbiAgY29uc3QgZW50aXRpZXMgPSBbXG4gICAgLi4udHdlZXQuZW50aXRpZXMuaGFzaHRhZ3MubWFwKChoYXNodGFnKSA9PlxuICAgICAgKHtcbiAgICAgICAgdHlwZTogXCJoYXNodGFnXCIsXG4gICAgICAgIC4uLmhhc2h0YWcsXG4gICAgICB9KSBhcyBjb25zdFxuICAgICksXG4gICAgLi4udHdlZXQuZW50aXRpZXMuc3ltYm9scy5tYXAoKHN5bWJvbCkgPT5cbiAgICAgICh7XG4gICAgICAgIHR5cGU6IFwic3ltYm9sXCIsXG4gICAgICAgIC4uLnN5bWJvbCxcbiAgICAgIH0pIGFzIGNvbnN0XG4gICAgKSxcbiAgICAuLi50d2VldC5lbnRpdGllcy51c2VyX21lbnRpb25zLm1hcCgobWVudGlvbikgPT5cbiAgICAgICh7XG4gICAgICAgIHR5cGU6IFwibWVudGlvblwiLFxuICAgICAgICBuYW1lOiBtZW50aW9uLm5hbWUsXG4gICAgICAgIHNjcmVlbk5hbWU6IG1lbnRpb24uc2NyZWVuX25hbWUsXG4gICAgICAgIGluZGljZXM6IG1lbnRpb24uaW5kaWNlcyxcbiAgICAgIH0pIGFzIGNvbnN0XG4gICAgKSxcbiAgICAuLi50d2VldC5lbnRpdGllcy51cmxzLm1hcCgodXJsKSA9PiB7XG4gICAgICBjb25zdCBlbnRpdHkgPSB7XG4gICAgICAgIHR5cGU6IFwidXJsXCIsXG4gICAgICAgIGluZGljZXM6IHVybC5pbmRpY2VzLFxuICAgICAgICB1cmw6IG5ldyBVUkwodXJsLmV4cGFuZGVkX3VybCksXG4gICAgICB9IGFzIHtcbiAgICAgICAgdHlwZTogXCJ1cmxcIjtcbiAgICAgICAgaW5kaWNlczogW251bWJlciwgbnVtYmVyXTtcbiAgICAgICAgdXJsOiBVUkw7XG4gICAgICAgIHRpdGxlPzogc3RyaW5nO1xuICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICAgIH07XG5cbiAgICAgIGlmICh0d2VldC5jYXJkICYmIHR3ZWV0LmNhcmQ/LnVybCA9PT0gdXJsLnVybCkge1xuICAgICAgICBjb25zdCB7IGRlc2NyaXB0aW9uLCB0aXRsZSB9ID0gdHdlZXQuY2FyZC5iaW5kaW5nX3ZhbHVlcztcbiAgICAgICAgY29uc3Qga2V5ID0gXCJTVFJJTkdcIjtcbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uPy50eXBlID09PSBrZXkpIHtcbiAgICAgICAgICBlbnRpdHkuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5zdHJpbmdfdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRpdGxlPy50eXBlID09PSBrZXkpIHtcbiAgICAgICAgICBlbnRpdHkudGl0bGUgPSB0aXRsZS5zdHJpbmdfdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVudGl0eTtcbiAgICB9KSxcbiAgICAuLi50d2VldC5lbnRpdGllcy5tZWRpYT8ubWFwPy4oKG1lZGlhKSA9PlxuICAgICAgKHtcbiAgICAgICAgdHlwZTogXCJtZWRpYVwiLFxuICAgICAgICBpbmRpY2VzOiBtZWRpYS5pbmRpY2VzLFxuICAgICAgICBtZWRpYTogdHdlZXQubWVkaWFEZXRhaWxzPy5mbGF0TWFwPy4oKGRldGFpbCkgPT5cbiAgICAgICAgICBkZXRhaWwudXJsID09PSBtZWRpYS51cmxcbiAgICAgICAgICAgID8gW3tcbiAgICAgICAgICAgICAgdHlwZTogZGV0YWlsLnR5cGUsXG4gICAgICAgICAgICAgIHVybDogbmV3IFVSTChcbiAgICAgICAgICAgICAgICBkZXRhaWwudmlkZW9faW5mbz8udmFyaWFudHM/LnNvcnQ/LigoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgIChiLmJpdHJhdGUgPz8gMCkgLSAoYS5iaXRyYXRlID8/IDApXG4gICAgICAgICAgICAgICAgKT8uWzBdLnVybCA/PyBkZXRhaWwubWVkaWFfdXJsX2h0dHBzLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIDogW11cbiAgICAgICAgKSA/PyBbXSxcbiAgICAgIH0pIGFzIGNvbnN0XG4gICAgKSA/PyBbXSxcbiAgXS5zb3J0KChhLCBiKSA9PiBhLmluZGljZXNbMF0gLSBiLmluZGljZXNbMF0pO1xuXG4gIGNvbnN0IGNvbnRlbnQ6IFR3ZWV0Tm9kZVtdID0gW107XG4gIHtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBsZXQgdGV4dCA9IHR3ZWV0LnRleHQ7XG4gICAgZm9yIChjb25zdCB7IGluZGljZXMsIC4uLmVudGl0eSB9IG9mIGVudGl0aWVzKSB7XG4gICAgICBjb25zdCBiZWZvcmUgPSBbLi4udGV4dF0uc2xpY2UoMCwgaW5kaWNlc1swXSAtIG9mZnNldCkuam9pbihcIlwiKTtcbiAgICAgIGNvbnRlbnQucHVzaCh7IHR5cGU6IFwicGxhaW5cIiwgdGV4dDogdW5lc2NhcGVIVE1MKGJlZm9yZSkgfSk7XG5cbiAgICAgIGNvbnRlbnQucHVzaChlbnRpdHkpO1xuXG4gICAgICB0ZXh0ID0gWy4uLnRleHRdLnNsaWNlKGluZGljZXNbMV0gLSBvZmZzZXQpLmpvaW4oXCJcIik7XG4gICAgICBvZmZzZXQgPSBpbmRpY2VzWzFdO1xuICAgIH1cbiAgICBpZiAodGV4dCkgY29udGVudC5wdXNoKHsgdHlwZTogXCJwbGFpblwiLCB0ZXh0OiB1bmVzY2FwZUhUTUwodGV4dCkgfSk7XG4gIH1cblxuICBjb25zdCBwcm9jZXNzZWQ6IFByb2Nlc3NlZFR3ZWV0ID0ge1xuICAgIGlkOiB0d2VldC5pZF9zdHIsXG4gICAgY29udGVudCxcbiAgICBhdXRob3IsXG4gICAgcG9zdGVkLFxuICAgIHJlcGx5Q291bnQ6IFwicmVwbHlfY291bnRcIiBpbiB0d2VldFxuICAgICAgPyB0d2VldC5yZXBseV9jb3VudFxuICAgICAgOiB0d2VldC5jb252ZXJzYXRpb25fY291bnQsXG4gIH07XG4gIGlmICh0d2VldC5zZWxmX3RocmVhZCkgcHJvY2Vzc2VkLnJvb3RJZCA9IHR3ZWV0LnNlbGZfdGhyZWFkLmlkX3N0cjtcbiAgaWYgKHR3ZWV0LmluX3JlcGx5X3RvX3N0YXR1c19pZF9zdHIpIHtcbiAgICBwcm9jZXNzZWQucmVwbHlJZCA9IHR3ZWV0LmluX3JlcGx5X3RvX3N0YXR1c19pZF9zdHI7XG4gIH1cbiAgaWYgKHR3ZWV0LnBhcmVudCkgcHJvY2Vzc2VkLnJlcGx5VG8gPSBwcm9jZXNzVHdlZXQodHdlZXQucGFyZW50KTtcbiAgaWYgKHR3ZWV0LnF1b3RlZF90d2VldCkgcHJvY2Vzc2VkLnF1b3RlID0gcHJvY2Vzc1R3ZWV0KHR3ZWV0LnF1b3RlZF90d2VldCk7XG5cbiAgcmV0dXJuIHByb2Nlc3NlZDtcbn07XG5cbi8qKiDliqDlt6XjgZfjgZ9Ud2VldCBkYXRhICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NlZFR3ZWV0IHtcbiAgLyoqIHR3ZWV0IGlkICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqIHR3ZWV05pys5paHICovXG4gIGNvbnRlbnQ6IFR3ZWV0Tm9kZVtdO1xuXG4gIC8qKiDmipXnqL/ogIUgKi9cbiAgYXV0aG9yOiBQcm9jZXNzZWRVc2VyO1xuXG4gIC8qKiDmipXnqL/ml6XmmYIgKi9cbiAgcG9zdGVkOiBEYXRlO1xuXG4gIC8qKiBzZWxmIHRocmVhZOOBoOOBo+OBn+WgtOWQiOOBruOAgeacgOWIneOBrnR3ZWV044GuaWQgKi9cbiAgcm9vdElkPzogc3RyaW5nO1xuXG4gIC8qKiDov5Tkv6HlhYh0d2VldOOBrmlkICovXG4gIHJlcGx5SWQ/OiBzdHJpbmc7XG5cbiAgLyoqIOi/lOS/oeWFiHR3ZWV0ICovXG4gIHJlcGx5VG8/OiBQcm9jZXNzZWRUd2VldDtcblxuICAvKiog6L+U5L+h5pWwICovXG4gIHJlcGx5Q291bnQ6IG51bWJlcjtcblxuICAvKiog5byV55So5YWDdHdlZXQgKi9cbiAgcXVvdGU/OiBQcm9jZXNzZWRUd2VldDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzZWRVc2VyIHtcbiAgLyoqIOihqOekuuS4iuOBruWQjeWJjSAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIOS4gOaEj+OBqnVzZXJuYW1lICovXG4gIHNjcmVlbk5hbWU6IHN0cmluZztcbn1cblxuLyoqIHR3ZWV05pys5paH44Gu6Kej5p6Q5oOF5aCxICovXG5leHBvcnQgdHlwZSBUd2VldE5vZGUgPVxuICB8IFBsYWluVGV4dFxuICB8IEhhc2h0YWdcbiAgfCBTeW1ib2xUYWdcbiAgfCBVcmxOb2RlXG4gIHwgTWVudGlvblxuICB8IE1lZGlhTm9kZTtcblxuZXhwb3J0IGludGVyZmFjZSBIYXNodGFnIHtcbiAgdHlwZTogXCJoYXNodGFnXCI7XG4gIHRleHQ6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU3ltYm9sVGFnIHtcbiAgdHlwZTogXCJzeW1ib2xcIjtcbiAgdGV4dDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVybE5vZGUge1xuICB0eXBlOiBcInVybFwiO1xuICB1cmw6IFVSTDtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lZGlhTm9kZSB7XG4gIHR5cGU6IFwibWVkaWFcIjtcbiAgbWVkaWE6IE1lZGlhW107XG59XG5leHBvcnQgaW50ZXJmYWNlIE1lZGlhIHtcbiAgdHlwZTogXCJwaG90b1wiIHwgXCJ2aWRlb1wiIHwgXCJhbmltYXRlZF9naWZcIjtcbiAgdXJsOiBVUkw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVudGlvbiB7XG4gIHR5cGU6IFwibWVudGlvblwiO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNjcmVlbk5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFpblRleHQge1xuICB0eXBlOiBcInBsYWluXCI7XG4gIHRleHQ6IHN0cmluZztcbn1cbiIsICJpbXBvcnQgdHlwZSB7IFNjcmFwYm94IH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5jb25zdCByZXNlcnZlZE5hbWVzID0gW1xuICBcImxhbmRpbmdcIixcbiAgXCJwcm9kdWN0XCIsXG4gIFwiZW50ZXJwcmlzZVwiLFxuICBcInByaWNpbmdcIixcbiAgXCJ0cnktZW50ZXJwcmlzZVwiLFxuICBcImNvbnRhY3RcIixcbiAgXCJ0ZXJtc1wiLFxuICBcInByaXZhY3lcIixcbiAgXCJqcC1jb21tZXJjaWFsLWFjdFwiLFxuICBcInN1cHBvcnRcIixcbiAgXCJjYXNlXCIsXG4gIFwiZmVhdHVyZXNcIixcbiAgXCJidXNpbmVzc1wiLFxuICBcImF1dGhcIixcbiAgXCJsb2dpblwiLFxuICBcImxvZ291dFwiLFxuICBcIm9hdXRoMlwiLFxuICBcIl9cIixcbiAgXCJhcGlcIixcbiAgXCJhcHAuaHRtbFwiLFxuICBcImFzc2V0c1wiLFxuICBcImZpbGVcIixcbiAgXCJmaWxlc1wiLFxuICBcImJpbGxpbmdcIixcbiAgXCJiaWxsaW5nc1wiLFxuICBcImNvbmZpZ1wiLFxuICBcImZlZWRcIixcbiAgXCJpbmRleFwiLFxuICBcImlvXCIsXG4gIFwibmV3XCIsXG4gIFwib3BlbnNlYXJjaFwiLFxuICBcInByb2plY3RcIixcbiAgXCJwcm9qZWN0c1wiLFxuICBcInNlYXJjaFwiLFxuICBcInNldHRpbmdcIixcbiAgXCJzZXR0aW5nc1wiLFxuICBcInNldHVwLXByb2ZpbGVcIixcbiAgXCJzbGlkZVwiLFxuICBcInNvY2tldC5pb1wiLFxuICBcInN0cmVhbVwiLFxuICBcInVzZXJcIixcbiAgXCJ1c2Vyc1wiLFxuXTtcblxuLyoqIHNjcmFwYm9444GuVVJM44KS5YaF6YOo44Oq44Oz44Kv6KiY5rOV44Gr5aSJ44GI44KLXG4gKlxuICogQHBhcmFtIHVybCBVUkxcbiAqIEByZXR1cm4gc2NyYXBib3jjga5VUkzjga7jgajjgY3jgIHlhoXpg6jjg6rjg7Pjgq/oqJjms5XjgavjgZfjgabov5TjgZnjgILjgZ3jgozku6XlpJbjga7loLTlkIjjga/lhYPjga5VUkzjgpLjgZ3jga7jgb7jgb7ov5TjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbnZlcnRTY3JhcGJveFVSTCA9IChcbiAgc2VsZiA9IHNjcmFwYm94LlByb2plY3QubmFtZSxcbiAgaG9zdCA9IGxvY2F0aW9uLmhvc3QsXG4pOiAodXJsOiBVUkwpID0+IHN0cmluZyB8IFVSTCA9PlxuKHVybCkgPT4ge1xuICBpZiAodXJsLmhvc3QgIT09IGhvc3QpIHJldHVybiB1cmw7XG4gIGNvbnN0IFssIHByb2plY3QsIHRpdGxlXSA9XG4gICAgdXJsLnBhdGhuYW1lLm1hdGNoKC9eXFwvKFtcXHdcXGRdW1xcd1xcZC1dezAsMjJ9W1xcd1xcZF0pKD86XFwvP3xcXC8oLispKSQvKSA/PyBbXTtcbiAgaWYgKCFwcm9qZWN0KSByZXR1cm4gdXJsO1xuICBpZiAocmVzZXJ2ZWROYW1lcy5pbmNsdWRlcyhwcm9qZWN0KSkgcmV0dXJuIHVybDtcbiAgaWYgKCF0aXRsZSkgcmV0dXJuIGBbLyR7cHJvamVjdH1dYDtcbiAgcmV0dXJuIHByb2plY3QgPT09IHNlbGZcbiAgICA/IGBbJHtkZWNvZGVVUklDb21wb25lbnQodGl0bGUpfV1gXG4gICAgOiBgWy8ke3Byb2plY3R9LyR7ZGVjb2RlVVJJQ29tcG9uZW50KHRpdGxlKX1dYDtcbn07XG4iLCAiaW1wb3J0IHsgZ2V0VHdlZXQsIFJlZlR3ZWV0LCBUd2VldCB9IGZyb20gXCIuLi9pbnRlcm5hbC9nZXRUd2VldC50c1wiO1xuaW1wb3J0IHsgdXBsb2FkVHdpbWcgfSBmcm9tIFwiLi4vaW50ZXJuYWwvdXBsb2FkVHdpbWcudHNcIjtcbmltcG9ydCB7IGdldFByb2plY3QsIGdldFR3ZWV0SW5mbywgVHdlZXRJbmZvIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuaW1wb3J0IHtcbiAgTWVkaWEsXG4gIFByb2Nlc3NlZFR3ZWV0LFxuICBwcm9jZXNzVHdlZXQsXG59IGZyb20gXCIuLi9pbnRlcm5hbC9wcm9jZXNzVHdlZXQudHNcIjtcbmltcG9ydCB7IGNvbnZlcnRTY3JhcGJveFVSTCB9IGZyb20gXCIuL2NvbnZlcnRTY3JhcGJveFVSTC50c1wiO1xuaW1wb3J0IHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmV4cG9ydCB0eXBlIHsgTWVkaWEsIFByb2Nlc3NlZFR3ZWV0LCBUd2VldCwgVHdlZXRJbmZvIH07XG5leHBvcnQgaW50ZXJmYWNlIFR3ZWV0VmlhUHJveHkgZXh0ZW5kcyBUd2VldEluZm8ge1xuICAvKiogdHdlZXQgaWQgKi9cbiAgaWQ6IHN0cmluZztcbn1cblxuLyoqIHR3ZWV044KSc2NyYXBib3jjgavmm7jjgY3ovrzjgoDpmpvjga7lpInmj5tmb3JtYXQgKi9cbmV4cG9ydCB0eXBlIFR3ZWV0Rm9ybWF0dGVyID0gKFxuICB0d2VldDogVHdlZXQgfCBUd2VldFZpYVByb3h5LFxuICB1cmw6IFVSTCxcbikgPT4gUHJvbWlzZTxzdHJpbmc+O1xuXG4vKiogdHdlZXTjgpLlsZXplovjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBmb3JtYXRUd2VldCA9IChcbiAgZm9ybWF0OiBUd2VldEZvcm1hdHRlciA9IGRlZmF1bHRGb3JtYXQsXG4pOiAodXJsOiBVUkwpID0+IFByb21pc2U8c3RyaW5nPiB8IFVSTCA9PlxuKHVybCkgPT4ge1xuICAvLyBmcm9tIGh0dHBzOi8vc2NyYXBib3guaW8vYXNzZXQvaW5kZXguanNcbiAgY29uc3QgWywgaWRdID0gdXJsLmhyZWYubWF0Y2goXG4gICAgL15odHRwczpcXC9cXC8oPzooPzp3d3dcXC58bW9iaWxlXFwufG1cXC4pP3R3aXR0ZXJ8eClcXC5jb21cXC9bXFx3XFxkX10rXFwvKD86c3RhdHVzfHN0YXR1c2VzKVxcLyhcXGQrKS8sXG4gICkgPz8gW107XG4gIGlmICghaWQpIHJldHVybiB1cmw7XG5cbiAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgKGdldFR3ZWV0KGlkKSA/PyBnZXRUd2VldEluZm8odXJsLmhyZWYpKTtcbiAgICBpZiAoIXJlc3VsdC5vaykgdGhyb3cgcmVzdWx0LnZhbHVlO1xuICAgIHJldHVybiBmb3JtYXQoXG4gICAgICBcImltYWdlc1wiIGluIHJlc3VsdC52YWx1ZSA/IHsgLi4ucmVzdWx0LnZhbHVlLCBpZCB9IDogcmVzdWx0LnZhbHVlLFxuICAgICAgdXJsLFxuICAgICk7XG4gIH0pKCk7XG59O1xuXG4vKiogc2NyYXBib3guaW/jgYzkvb/jgaPjgabjgYTjgotmb3JtYXTjgavjgIHov5Tkv6HlhYjjgajlvJXnlKjlhYN0d2VldOOCkuWKoOOBiOOBn+OCguOBriAqL1xuY29uc3QgZGVmYXVsdEZvcm1hdCA9IGFzeW5jIChcbiAgdHdlZXQ6IFR3ZWV0IHwgUmVmVHdlZXQgfCBUd2VldFZpYVByb3h5LFxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgaWYgKFwiaW1hZ2VzXCIgaW4gdHdlZXQpIHJldHVybiBzdHJpbmdpZnkodHdlZXQpO1xuXG4gIGNvbnN0IHsgcXVvdGUsIHJlcGx5VG8sIC4uLnByb2Nlc3NlZCB9ID0gcHJvY2Vzc1R3ZWV0KHR3ZWV0KTtcblxuICByZXR1cm4gW1xuICAgIC4uLihyZXBseVRvXG4gICAgICA/IFtcbiAgICAgICAgLi4uKGF3YWl0IHN0cmluZ2lmeShyZXBseVRvKSkuc3BsaXQoXCJcXG5cIikubWFwKChsaW5lKSA9PiBgID4gJHtsaW5lfWApLFxuICAgICAgICAuLi4ocmVwbHlUby5xdW90ZVxuICAgICAgICAgID8gKGF3YWl0IHN0cmluZ2lmeShyZXBseVRvLnF1b3RlKSkuc3BsaXQoXCJcXG5cIikubWFwKChsaW5lKSA9PlxuICAgICAgICAgICAgYCAgPiAke2xpbmV9YFxuICAgICAgICAgIClcbiAgICAgICAgICA6IFtdKSxcbiAgICAgIF1cbiAgICAgIDogW10pLFxuICAgIC4uLihhd2FpdCBzdHJpbmdpZnkocHJvY2Vzc2VkKSkuc3BsaXQoXCJcXG5cIikubWFwKChsaW5lKSA9PiBgPiAke2xpbmV9YCksXG4gICAgLi4uKHF1b3RlXG4gICAgICA/IChhd2FpdCBzdHJpbmdpZnkocXVvdGUpKS5zcGxpdChcIlxcblwiKS5tYXAoKGxpbmUpID0+IGA+ID4gJHtsaW5lfWApXG4gICAgICA6IFtdKSxcbiAgXS5qb2luKFwiXFxuXCIpO1xufTtcblxuLyoqIENvbnZlcnRzIGEgcHJvY2Vzc2VkIHR3ZWV0IG9yIGEgdHdlZXQgdmlhIC9hcGkvZW1iZWQtdGV4dC90d2l0dGVyIGludG8gYSBmb3JtYXR0ZWQgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB0d2VldCBUaGUgcHJvY2Vzc2VkIHR3ZWV0IG9yIHR3ZWV0IHZpYSBwcm94eSBvYmplY3QuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZm9ybWF0dGVkIHN0cmluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IHN0cmluZ2lmeSA9IGFzeW5jIChcbiAgdHdlZXQ6IFByb2Nlc3NlZFR3ZWV0IHwgVHdlZXRWaWFQcm94eSxcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoXG4gICAgYGh0dHBzOi8vdHdpdHRlci5jb20vJHtcbiAgICAgIFwiYXV0aG9yXCIgaW4gdHdlZXQgPyB0d2VldC5hdXRob3Iuc2NyZWVuTmFtZSA6IHR3ZWV0LnNjcmVlbk5hbWVcbiAgICB9L3N0YXR1cy8ke3R3ZWV0LmlkfWAsXG4gICk7XG4gIGlmIChcImltYWdlc1wiIGluIHR3ZWV0KSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGA+IFtAJHtlc2NhcGVGb3JFbWJlZCh0d2VldC5zY3JlZW5OYW1lKX0gJHt1cmwub3JpZ2lufSR7dXJsLnBhdGhuYW1lfV1gLFxuICAgICAgLi4uKHR3ZWV0LmRlc2NyaXB0aW9uPy5zcGxpdD8uKFwiXFxuXCIpPy5tYXA/LigobGluZSkgPT5cbiAgICAgICAgYD4gJHtlc2NhcGVGb3JFbWJlZChsaW5lKX1gXG4gICAgICApID8/IFtcIj4gWy8gbm8gZGVzY3JpcHRpb24gcHJvdmlkZWRdXCJdKSxcbiAgICAgIC4uLih0d2VldC5pbWFnZXMubGVuZ3RoID4gMFxuICAgICAgICA/IFtgPiAke3R3ZWV0LmltYWdlcy5tYXAoKGltYWdlKSA9PiBgWyR7aW1hZ2V9XWApfWBdXG4gICAgICAgIDogW10pLFxuICAgIF0uam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIGNvbnN0IGNvbnRlbnQgPSB0d2VldC5jb250ZW50O1xuICBjb25zdCBzY3JlZW5OYW1lID0gdHdlZXQuYXV0aG9yLnNjcmVlbk5hbWU7XG5cbiAgcmV0dXJuIFtcbiAgICBgW0Ake2VzY2FwZUZvckVtYmVkKHNjcmVlbk5hbWUpfSAke3VybH1dYCxcbiAgICAuLi4oYXdhaXQgUHJvbWlzZS5hbGwoY29udGVudC5tYXAoYXN5bmMgKG5vZGUpID0+IHtcbiAgICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJwbGFpblwiOlxuICAgICAgICAgIHJldHVybiBub2RlLnRleHQ7XG4gICAgICAgIGNhc2UgXCJoYXNodGFnXCI6XG4gICAgICAgICAgcmV0dXJuIGAgIyR7bm9kZS50ZXh0fSBgO1xuICAgICAgICBjYXNlIFwic3ltYm9sXCI6XG4gICAgICAgICAgcmV0dXJuIGAgIyQke25vZGUudGV4dH0gYDtcbiAgICAgICAgY2FzZSBcIm1lbnRpb25cIjpcbiAgICAgICAgICByZXR1cm4gYFtAJHtub2RlLnNjcmVlbk5hbWV9IGh0dHBzOi8vdHdpdHRlci5jb20vJHtub2RlLnNjcmVlbk5hbWV9XWA7XG4gICAgICAgIGNhc2UgXCJtZWRpYVwiOiB7XG4gICAgICAgICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG4gICAgICAgICAgbGV0IGkgPSAxO1xuICAgICAgICAgIGZvciAoOyBpIDwgbm9kZS5tZWRpYS5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICAgICAgbGluZXMucHVzaChcbiAgICAgICAgICAgICAgYFske2F3YWl0IHVwbG9hZE1lZGlhKFxuICAgICAgICAgICAgICAgIG5vZGUubWVkaWFbaSAtIDFdLFxuICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgKX1dIFske2F3YWl0IHVwbG9hZE1lZGlhKFxuICAgICAgICAgICAgICAgIG5vZGUubWVkaWFbaV0sXG4gICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICApfV1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGkgPT09IG5vZGUubWVkaWEubGVuZ3RoKSB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGBbJHthd2FpdCB1cGxvYWRNZWRpYShub2RlLm1lZGlhW2kgLSAxXSwgdXJsKX1dYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBgXFxuJHtsaW5lcy5qb2luKFwiXFxuXCIpfVxcbmA7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInVybFwiOlxuICAgICAgICAgIHJldHVybiBgJHtjb252ZXJ0U2NyYXBib3hVUkwoKShub2RlLnVybCl9IGA7XG4gICAgICB9XG4gICAgfSkpKS5qb2luKFwiXCIpLnNwbGl0KFwiXFxuXCIpLFxuICBdLmpvaW4oXCJcXG5cIik7XG59O1xuXG5sZXQgcHJvamVjdElkID0gXCJcIjtcbmNvbnN0IGdldFByb2plY3RJZCA9IGFzeW5jICgpID0+IHtcbiAgaWYgKHByb2plY3RJZCkgcmV0dXJuIHByb2plY3RJZDtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0UHJvamVjdChzY3JhcGJveC5Qcm9qZWN0Lm5hbWUpO1xuICBpZiAoIXJlc3VsdC5vaykgdGhyb3cgbmV3IEVycm9yKHJlc3VsdC52YWx1ZS5uYW1lKTtcbiAgcHJvamVjdElkID0gcmVzdWx0LnZhbHVlLmlkO1xuICByZXR1cm4gcHJvamVjdElkO1xufTtcblxuLyoqIFVwbG9hZHMgbWVkaWEgdG8gR3lhem8gb3Igc2NyYXBib3guaW8gYW5kIHJldHVybnMgdGhlIFVSTCBvZiB0aGUgdXBsb2FkZWQgbWVkaWEuXG4gKiBJZiB0aGUgdXBsb2FkIGZhaWxzLCBpdCByZXR1cm5zIHRoZSBvcmlnaW5hbCBtZWRpYSBVUkwuXG4gKlxuICogQHBhcmFtIG1lZGlhIC0gVGhlIG1lZGlhIHRvIHVwbG9hZC5cbiAqIEBwYXJhbSB0d2VldFVSTCAtIFRoZSBVUkwgb2YgdGhlIHR3ZWV0LlxuICogQHJldHVybnMgVGhlIFVSTCBvZiB0aGUgdXBsb2FkZWQgbWVkaWEgb3IgdGhlIG9yaWdpbmFsIG1lZGlhIFVSTC5cbiAqL1xuZXhwb3J0IGNvbnN0IHVwbG9hZE1lZGlhID0gYXN5bmMgKG1lZGlhOiBNZWRpYSwgdHdlZXRVUkw6IFVSTCk6IFByb21pc2U8VVJMPiA9PlxuICAoYXdhaXQgdXBsb2FkVHdpbWcobWVkaWEudXJsLCB0d2VldFVSTCwgYXdhaXQgZ2V0UHJvamVjdElkKCksIFwiXCIpKSA/P1xuICAgIG1lZGlhLnVybDtcblxuLyoqIHNjcmFwYm9444Gu6KiY5rOV44Go5bmy5riJ44GZ44KL5paH5a2X44KS5Y+W44KK6Zmk44GPXG4gKlxuICogcG9ydGVkIGZyb20gaHR0cHM6Ly9zY3JhcGJveC5pby9hc3NldC9pbmRleC5qc1xuICpcbiAqIEBwYXJhbSB0ZXh0IOWkieaPm+WJjeOBruaWh+Wtl+WIl1xuICogQHJldHVybnMg5aSJ5o+b5b6M44Gu5paH5a2X5YiXXG4gKi9cbmV4cG9ydCBjb25zdCBlc2NhcGVGb3JFbWJlZCA9ICh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgdGV4dFxuICAgIC5yZXBsYWNlKC9cXGIvZ20sIFwiXCIpXG4gICAgLnJlcGxhY2UoL1tcXHNcXHJcXG5cXHUyMDI4XFx1MjAyOV0rL2dtLCBcIiBcIilcbiAgICAucmVwbGFjZSgvXFxzKltbXFxdYF1cXHMqL2csIFwiIFwiKVxuICAgIC50cmltKCk7XG4iLCAiaW1wb3J0IHsgSFRUUEVycm9yLCBtYWtlSFRUUEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yLnRzXCI7XG5pbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1yZXN0LnRzXCI7XG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIEdNX2ZldGNoOiAodHlwZW9mIGZldGNoKSB8IHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKiogdHdpdHRlcuOBrmh0dHBzOi8vdC5jby94eHgg5b2i5byP44Gu55+t57iuVVJM44KS5bGV6ZaL44GZ44KLXG4gKlxuICogQHBhcmFtIHNob3J0SWQg55+t57iuVVJM44GuSUTpg6jliIZcbiAqIEByZXR1cm4g5bGV6ZaL5YWIVVJMLCBHTV9mZXRjaOOBjOOBquOBkeOCjOOBsGB1bmRlZmluZWRg44KS5ZCM5pyf55qE44Gr6L+U44GZXG4gKi9cbmV4cG9ydCBjb25zdCBleHBhbmRUd2l0dGVyU2hvcnRVUkwgPSAoXG4gIHNob3J0SWQ6IHN0cmluZyxcbik6IFByb21pc2U8UmVzdWx0PHN0cmluZywgSFRUUEVycm9yPj4gfCB1bmRlZmluZWQgPT4ge1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLXdpbmRvd1xuICBpZiAoIXdpbmRvdy5HTV9mZXRjaCkgcmV0dXJuO1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLXdpbmRvd1xuICBjb25zdCBmZXRjaF8gPSB3aW5kb3cuR01fZmV0Y2g7XG5cbiAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2hfKGBodHRwczovL3QuY28vJHtzaG9ydElkfWApO1xuICAgIGNvbnN0IGVycm9yID0gbWFrZUhUVFBFcnJvcihyZXMpO1xuICAgIGlmIChlcnJvcikgcmV0dXJuIHsgb2s6IGZhbHNlLCB2YWx1ZTogZXJyb3IgfTtcbiAgICBjb25zdCBkb20gPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGF3YWl0IHJlcy50ZXh0KCksIFwidGV4dC9odG1sXCIpO1xuICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogZG9tLnRpdGxlIH07XG4gIH0pKCk7XG59O1xuIiwgImltcG9ydCB7IGV4cGFuZFR3aXR0ZXJTaG9ydFVSTCB9IGZyb20gXCIuLi9pbnRlcm5hbC9leHBhbmRUd2l0dGVyU2hvcnRVUkwudHNcIjtcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBHTV9mZXRjaDogKHR5cGVvZiBmZXRjaCkgfCB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqIOWQhOeoruOBruefree4rlVSTOOCkuWxlemWi+OBmeOCi1xuICpcbiAqIOWvvuW/nOOBl+OBpuOBhOOCi+efree4rlVSTFxuICogLSBiaXQubHlcbiAqIC0gYW16bi50b1xuICogLSBhbXpuLmFzaWFcbiAqIC0gZ29vLmdsXG4gKiAtIHMubmlra2VpLmNvbVxuICogLSBhcHBsZS5jb1xuICogLSB0LmNvXG4gKiAtIG5pY28ubXNcbiAqIC0gdy53aWtpXG4gKi9cbmV4cG9ydCBjb25zdCBleHBhbmRTaG9ydFVSTCA9ICh1cmw6IFVSTCk6IFByb21pc2U8VVJMPiB8IFVSTCA9PiB7XG4gIGlmIChcbiAgICBbXG4gICAgICBcImJpdC5seVwiLFxuICAgICAgXCJhbXpuLnRvXCIsXG4gICAgICBcImFtem4uYXNpYVwiLFxuICAgICAgXCJnb28uZ2xcIixcbiAgICAgIFwicy5uaWtrZWkuY29tXCIsXG4gICAgICBcImFwcGxlLmNvXCIsXG4gICAgICBcIm5pY28ubXNcIixcbiAgICAgIFwidy53aWtpXCIsXG4gICAgXS5pbmNsdWRlcyhcbiAgICAgIHVybC5ob3N0bmFtZSxcbiAgICAgIC8vIGRlbm8tbGludC1pZ25vcmUgbm8td2luZG93XG4gICAgKSAmJiB3aW5kb3cuR01fZmV0Y2hcbiAgKSB7XG4gICAgLy8gZGVuby1saW50LWlnbm9yZSBuby13aW5kb3dcbiAgICByZXR1cm4gd2luZG93LkdNX2ZldGNoKHVybCkudGhlbigocmVzKSA9PiByZXMub2sgPyBuZXcgVVJMKHJlcy51cmwpIDogdXJsKTtcbiAgfVxuXG4gIGlmICh1cmwuaG9zdG5hbWUgIT09IFwidC5jb1wiKSByZXR1cm4gdXJsO1xuICBjb25zdCBwcm9taXNlID0gZXhwYW5kVHdpdHRlclNob3J0VVJMKHVybC5wYXRobmFtZS5zbGljZSgxKSk7XG4gIGlmICghcHJvbWlzZSkgcmV0dXJuIHVybDtcblxuICByZXR1cm4gKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm9taXNlO1xuICAgIGlmICghcmVzdWx0Lm9rKSB0aHJvdyByZXN1bHQudmFsdWU7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBVUkwocmVzdWx0LnZhbHVlKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikgcmV0dXJuIHVybDtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9KSgpO1xufTtcbiIsICIvKiogd2lraXBlZGlh44Gu44Oq44Oz44Kv44KS5aSJ5o+b44GZ44KLICovXG5leHBvcnQgY29uc3QgZm9ybWF0V2lraXBlZGlhID0gKHVybDogVVJMKTogc3RyaW5nIHwgVVJMID0+IHtcbiAgaWYgKCF1cmwucGF0aG5hbWUuc3RhcnRzV2l0aChcIi93aWtpL1wiKSkgcmV0dXJuIHVybDtcbiAgaWYgKCEvXlxcdytcXC53aWtpcGVkaWFcXC5vcmckLy50ZXN0KHVybC5ob3N0bmFtZSkpIHtcbiAgICBjb25zdCBbLCBsYW5nXSA9IHVybC5ob3N0bmFtZS5tYXRjaCgvXihcXHcrKVxcLm1cXC53aWtpcGVkaWFcXC5vcmckLykgPz8gW107XG4gICAgaWYgKCFsYW5nKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cbiAgICB1cmwuaG9zdG5hbWUgPSBgJHtsYW5nfS53aWtpcGVkaWEub3JnYDtcbiAgfVxuXG4gIGNvbnN0IHRpdGxlID0gZGVjb2RlVVJJQ29tcG9uZW50KHVybC5wYXRobmFtZS5zbGljZSg2KSk7XG4gIGNvbnN0IHNlY3Rpb24gPSB1cmwuaGFzaCA/IGRlY29kZVVSSUNvbXBvbmVudCh1cmwuaGFzaC5zbGljZSgxKSkgOiBcIlwiO1xuXG4gIGNvbnN0IGhyZWYgPSBgJHt1cmwub3JpZ2lufS93aWtpLyR7dGl0bGV9YDtcbiAgcmV0dXJuIHNlY3Rpb25cbiAgICA/IGBbJHtzZWN0aW9ufSB8ICR7dGl0bGV9IC0gV2lraXBlZGlhICR7aHJlZn0jJHtzZWN0aW9ufV1gXG4gICAgOiBgWyR7dGl0bGV9IC0gV2lraXBlZGlhICR7aHJlZn1dYDtcbn07XG4iLCAiLyoqIHdpa2l3YW5k44KSd2lraXBlZGlh44GuVVJM44Gr44GZ44KLICovXG5leHBvcnQgY29uc3QgcmVkaXJlY3RXaWtpd2FuZCA9ICh1cmw6IFVSTCk6IFVSTCA9PiB7XG4gIGlmICh1cmwuaG9zdG5hbWUgIT09IFwid3d3Lndpa2l3YW5kLmNvbVwiKSByZXR1cm4gdXJsO1xuICBjb25zdCBbLCBsYW5nLCBwYWdlTmFtZV0gPSB1cmwucGF0aG5hbWUubWF0Y2goL15cXC8oW15cXC9dKylcXC8oW15cXC9dKykvKSA/P1xuICAgIFtdO1xuICBpZiAoIWxhbmcgfHwgIXBhZ2VOYW1lKSByZXR1cm4gdXJsO1xuICB1cmwuaG9zdG5hbWUgPSBgJHtsYW5nfS53aWtpcGVkaWEub3JnYDtcbiAgdXJsLnBhdGhuYW1lID0gYC93aWtpLyR7cGFnZU5hbWV9YDtcbiAgdXJsLmhhc2ggPSB1cmwuaGFzaC5zdGFydHNXaXRoKFwiIy9cIikgPyBgIyR7dXJsLmhhc2guc2xpY2UoMil9YCA6IHVybC5oYXNoO1xuICByZXR1cm4gdXJsO1xufTtcbiIsICIvKiogR29vZ2xl44Gu5qSc57Si57WQ5p6cVVJM44KS44Oq44OA44Kk44Os44Kv44OI5YWIVVJM44Gr44GZ44KLICovXG5leHBvcnQgY29uc3QgcmVkaXJlY3RHb29nbGVTZWFyY2ggPSAodXJsOiBVUkwpOiBVUkwgPT4ge1xuICBpZiAoIXVybC5ob3N0bmFtZS5zdGFydHNXaXRoKFwid3d3Lmdvb2dsZS5cIikpIHJldHVybiB1cmw7XG4gIGNvbnN0IGVuY29kZWRVUkwgPSB1cmwuc2VhcmNoUGFyYW1zLmdldChcInVybFwiKTtcbiAgcmV0dXJuIGVuY29kZWRVUkwgPyBuZXcgVVJMKGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkVVJMKSkgOiB1cmw7XG59O1xuIiwgImltcG9ydCB7IEhUVFBFcnJvciwgbWFrZUhUVFBFcnJvciB9IGZyb20gXCIuLi9lcnJvci50c1wiO1xuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtcmVzdC50c1wiO1xuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBHTV9mZXRjaDogKHR5cGVvZiBmZXRjaCkgfCB1bmRlZmluZWQ7XG4gIH1cbn1cblxuY29uc3QgY2hhcnNldFJlZ0V4cCA9IC9jaGFyc2V0PShbXjtdKykvO1xuXG4vKiogd2ViIHBhZ2XjgpLlj5blvpfjgZnjgotcbiAqXG4gKiBAcGFyYW0gdXJsIOWPluW+l+OBl+OBn+OBhHdlYiBwYWdl44GuVVJMXG4gKiBAcmV0dXJuIGh0bWwgdGV4dC4gR01fZmV0Y2jjgYzjgarjgZHjgozjgbBgdW5kZWZpbmVkYOOCkuWQjOacn+eahOOBq+i/lOOBmVxuICovXG5leHBvcnQgY29uc3QgZ2V0V2ViUGFnZSA9IChcbiAgdXJsOiBVUkwsXG4pOiBQcm9taXNlPFJlc3VsdDxzdHJpbmcsIEhUVFBFcnJvcj4+IHwgdW5kZWZpbmVkID0+IHtcbiAgLy8gZGVuby1saW50LWlnbm9yZSBuby13aW5kb3dcbiAgaWYgKCF3aW5kb3cuR01fZmV0Y2gpIHJldHVybjtcbiAgLy8gZGVuby1saW50LWlnbm9yZSBuby13aW5kb3dcbiAgY29uc3QgZmV0Y2hfID0gd2luZG93LkdNX2ZldGNoO1xuXG4gIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoXyhgJHt1cmx9YCk7XG4gICAgY29uc3QgZXJyb3IgPSBtYWtlSFRUUEVycm9yKHJlcyk7XG4gICAgaWYgKGVycm9yKSByZXR1cm4geyBvazogZmFsc2UsIHZhbHVlOiBlcnJvciB9O1xuXG4gICAgY29uc3QgY29udGVudFR5cGUgPVxuICAgICAgcmVzLmhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpPy5tYXRjaD8uKGNoYXJzZXRSZWdFeHApPy5bMV0gPz9cbiAgICAgICAgYXdhaXQgZGV0ZWN0RW5jb2RpbmcocmVzLmNsb25lKCkpO1xuICAgIGNvbnN0IGh0bWwgPSBuZXcgVGV4dERlY29kZXIoY29udGVudFR5cGUpLmRlY29kZShhd2FpdCByZXMuYXJyYXlCdWZmZXIoKSk7XG4gICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBodG1sIH07XG4gIH0pKCk7XG59O1xuXG5jb25zdCBkZXRlY3RFbmNvZGluZyA9IGFzeW5jIChyZXM6IFJlc3BvbnNlKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgY29uc3QgZG9tID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhhd2FpdCByZXMudGV4dCgpLCBcInRleHQvaHRtbFwiKTtcbiAgcmV0dXJuIGRvbS5xdWVyeVNlbGVjdG9yKFwibWV0YVtjaGFyc2V0XVwiKT8uZ2V0QXR0cmlidXRlPy4oXCJjaGFyc2V0XCIpID8/XG4gICAgZG9tLnF1ZXJ5U2VsZWN0b3IoJ21ldGFbaHR0cC1lcXVpdj1cImNvbnRlbnQtdHlwZVwiXScpPy5nZXRBdHRyaWJ1dGU/LihcbiAgICAgIFwiY29udGVudFwiLFxuICAgICk/Lm1hdGNoPy4oY2hhcnNldFJlZ0V4cCk/LlsxXSA/PyBcInV0Zi04XCI7XG59O1xuIiwgImltcG9ydCB7IGdldFdlYlBhZ2VUaXRsZSB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXJlc3QudHNcIjtcbmltcG9ydCB7IGdldFdlYlBhZ2UgfSBmcm9tIFwiLi4vaW50ZXJuYWwvZ2V0V2ViUGFnZS50c1wiO1xuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tIFwiLi4vaXMudHNcIjtcblxuLyoqIFVSTOWFiOOBruODh+ODvOOCv+OCkuS9v+OBo+OBpuWklumDqOODquODs+OCr+iomOazleOBq+OBmeOCi+mWouaVsOOCkuS9nOOCi1xuICpcbiAqIOS7u+aEj+OBrlVSTOOCkuWPl+OBkeS7mOOBkeOCi1xuICpcbiAqIOWkieaPm+aWueazleOCkmBmb3JtYXRg44Gn5oyH5a6a44Gn44GN44KLXG4gKiAtIGBHTV9mZXRjaGDjgYzkvb/jgYjjgovjgajjgY3jga93ZWIgcGFnZeOBrkRPTeOCkuOAgeS9v+OBiOOBquOBhOOBqOOBjeOBr+ODmuODvOOCuOOCv+OCpOODiOODq+OCkuWPl+OBkeWPluOCjOOCi1xuICpcbiAqICAgQHBhcmFtIGZvcm1hdCDlpInmj5vplqLmlbDjgIJkZWZhdWx044Gg44Go44Oa44O844K444K/44Kk44OI44Or44GoVVJMIGZyYWdtZW5044KS57WE44G/5ZCI44KP44Gb44Gf5paH5a2X5YiX44KS5L2/44Gj44Gm5aSW6YOo44Oq44Oz44Kv6KiY5rOV44KS5L2c44KLXG4gKiAgIEByZXR1cm4gTWlkZGxld2FyZVxuICovXG5leHBvcnQgY29uc3QgZm9ybWF0VVJMID0gKFxuICBmb3JtYXQ6IChtYXRlcmlhbDogRG9jdW1lbnQgfCBzdHJpbmcsIHVybDogVVJMKSA9PiBzdHJpbmcgPSBkZWZhdWx0Rm9ybWF0LFxuKTogKHVybDogVVJMKSA9PiBQcm9taXNlPHN0cmluZz4gPT5cbmFzeW5jICh1cmwpID0+IGZvcm1hdChhd2FpdCBnZXREb2N1bWVudE9yVGl0bGUodXJsKSwgdXJsKTtcblxuY29uc3QgZGVmYXVsdEZvcm1hdCA9IChtYXRlcmlhbDogRG9jdW1lbnQgfCBzdHJpbmcsIHVybDogVVJMKSA9PiB7XG4gIGNvbnN0IHRpdGxlID0gKGlzU3RyaW5nKG1hdGVyaWFsKSA/IG1hdGVyaWFsIDogbWF0ZXJpYWwudGl0bGUpXG4gICAgLnJlcGxhY2UoL1xccy9nLCBcIiBcIikgLy8g44K544Oa44O844K544Go5pS56KGM44KS5YWo44Gm5Y2K6KeS44K544Oa44O844K544Gr44GZ44KLXG4gICAgLnJlcGxhY2VBbGwoXCJbXCIsIFwi77y7XCIpXG4gICAgLnJlcGxhY2VBbGwoXCJdXCIsIFwi77y9XCIpO1xuICByZXR1cm4gdGl0bGVcbiAgICA/IGBbJHtcbiAgICAgIHVybC5oYXNoID8gYCR7ZGVjb2RlVVJJQ29tcG9uZW50KHVybC5oYXNoLnNsaWNlKDEpKX0gfCBgIDogXCJcIlxuICAgIH0ke3RpdGxlfSAke3VybH1dYFxuICAgIDogYCR7dXJsfWA7XG59O1xuXG5jb25zdCBnZXREb2N1bWVudE9yVGl0bGUgPSBhc3luYyAodXJsOiBVUkwpOiBQcm9taXNlPERvY3VtZW50IHwgc3RyaW5nPiA9PiB7XG4gIGNvbnN0IHByb21pc2UgPSBnZXRXZWJQYWdlKHVybCk7XG4gIGlmICghcHJvbWlzZSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldFdlYlBhZ2VUaXRsZSh1cmwpO1xuICAgIGlmICghcmVzdWx0Lm9rKSB0aHJvdyByZXN1bHQudmFsdWU7XG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb21pc2U7XG4gIGlmICghcmVzdWx0Lm9rKSB0aHJvdyByZXN1bHQudmFsdWU7XG4gIHJldHVybiBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHJlc3VsdC52YWx1ZSwgXCJ0ZXh0L2h0bWxcIik7XG59O1xuIiwgIi8qKiBBbWF6b27jga5VUkzjgpLnn63jgY/jgZnjgotcbiAqXG4gKiBjZi5cbiAqIC0gaHR0cDovL3VyYmFucWVlLmNvbS9odG1sL2FtYXpvbi9hbWF6b24tdXJsLXNob3J0ZW5lZC5odG1sXG4gKiAtIGh0dHBzOi8vcGVucGVuLWRldi5jb20vYmxvZy9hbWEtZG9tYWluL1xuICovXG5leHBvcnQgY29uc3Qgc2hvcnRlbkFtYXpvblVSTCA9ICh1cmw6IFVSTCk6IFVSTCA9PiB7XG4gIGlmIChcbiAgICAhL14oPzp3d3dcXC4pP2FtYXpvbig/OlxcLmNvfGNvbSk/XFwuKD86YXV8YnJ8Y2F8ZnJ8ZGV8aW58aXR8anB8bXh8bmx8c2d8ZXN8dHJ8YWV8dWt8Y24pJC9cbiAgICAgIC50ZXN0KHVybC5ob3N0bmFtZSlcbiAgKSByZXR1cm4gdXJsO1xuICBjb25zdCBbLCBhc2luXSA9IHVybC5wYXRobmFtZS5tYXRjaCgvXFwvZHBcXC8oW1xcd1xcZF0rKS8pID8/XG4gICAgdXJsLnBhdGhuYW1lLm1hdGNoKC9cXC9ncFxcL3Byb2R1Y3RcXC8oW1xcd1xcZF0rKS8pID8/XG4gICAgdXJsLnBhdGhuYW1lLm1hdGNoKC9cXC9leGVjXFwvb2JpZG9zXFwvYXNpblxcLyhbXFx3XFxkXSspLykgPz9cbiAgICB1cmwucGF0aG5hbWUubWF0Y2goL1xcL29cXC9BU0lOXFwvKFtcXHdcXGRdKykvKSA/PyBbXTtcbiAgaWYgKCFhc2luKSByZXR1cm4gdXJsO1xuICB1cmwuaGFzaCA9IFwiXCI7XG4gIHVybC5zZWFyY2ggPSBcIlwiO1xuICB1cmwucGF0aG5hbWUgPSBgL2RwLyR7YXNpbn1gO1xuICByZXR1cm4gdXJsO1xufTtcbiIsICIvKiogR3lhem/jga5VUkzjgpLnlLvlg4/jgavjgZnjgotcbiAqXG4gKiBAcGFyYW0gdXJsIFVSTFxuICogQHJldHVybiBHeWF6b+OBrlVSTOOBruOBqOOBjeOAgeeUu+WDj+iomOazleOBq+OBl+OBpui/lOOBmeOAguOBneOCjOS7peWkluOBruWgtOWQiOOBr+WFg+OBrlVSTOOCkuOBneOBruOBvuOBvui/lOOBmVxuICovXG5leHBvcnQgY29uc3QgY29udmVydEd5YXpvVVJMID0gKHVybDogVVJMKTogc3RyaW5nIHwgVVJMID0+IHtcbiAgaWYgKCEvKD86WzAtOWEtei1dXFwuKT9neWF6b1xcLmNvbS8udGVzdCh1cmwuaG9zdG5hbWUpKSByZXR1cm4gdXJsO1xuICBjb25zdCBbLCBneWF6b0lkXSA9IHVybC5wYXRobmFtZS5tYXRjaCgvXlxcLyhbMC05YS1mXXszMn0pKD86XFwvcmF3KT8kLykgPz8gW107XG4gIGlmICghZ3lhem9JZCkgcmV0dXJuIHVybDtcbiAgcmV0dXJuIGBbaHR0cHM6Ly9neWF6by5jb20vJHtneWF6b0lkfV1gO1xufTtcbiIsICJpbXBvcnQgeyB1c2VTdGF0dXNCYXIgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyBjb252ZXJ0IGFzIGNvbnZlcnRVUkwsIE1pZGRsZXdhcmUgfSBmcm9tIFwiLi9jb252ZXJ0LnRzXCI7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gXCIuL2lzLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1pZGRsZXdhcmUgfTtcbmV4cG9ydCAqIGZyb20gXCIuL21pZGRsZXdhcmVzL21vZC50c1wiO1xuZXhwb3J0IHsgY29udmVydFVSTCB9O1xuXG4vKiogVVJM44KC44GX44GP44GvVVJM44KSMOWAi+S7peS4iuWQq+OCk+OBoOODhuOCreOCueODiOOCkuWkieaPm+OBmeOCi1xuICpcbiAqIEBwYXJhbSB0ZXh0IFVSTOOCguOBl+OBj+OBr1VSTOOCkjDlgIvku6XkuIrlkKvjgpPjgaDjg4bjgq3jgrnjg4hcbiAqIEBwYXJhbSBtaWRkbGV3YXJlcyBVUkzjgpLlpInmj5vjgZnjgovplqLmlbDjgILmnIDliJ3jgavmjIflrprjgZfjgZ/jgoLjga7jgYvjgonpoIbjgavpgannlKjjgZXjgozjgovjgILmloflrZfliJfjgpLov5TjgZnjgajjgZ3jgZPjgaflh6bnkIbjgYzntYLjgo/jgorjgIHjgZ3jga7mloflrZfliJfjgYzlhYPjga5VUkzjga7lpInmj5vlvozjga7mloflrZfliJfjgajjgZfjgabmjqHnlKjjgZXjgozjgotcbiAqIEByZXR1cm4g5aSJ5o+b5b6M44Gu5paH5a2X5YiX44CC5L2/55So44GV44KM44GfbWlkZGxld2FyZXPjga7jganjgozjgYvkuIDjgaTjgYzpnZ7lkIzmnJ/lh6bnkIbjgZfjgZ/loLTlkIjjgIFQcm9taXNl44Gn6L+U44GV44KM44KLXG4gKi9cbmV4cG9ydCBjb25zdCBjb252ZXJ0ID0gKFxuICB0ZXh0OiBzdHJpbmcgfCBVUkwsXG4gIC4uLm1pZGRsZXdhcmVzOiBNaWRkbGV3YXJlW11cbik6IFByb21pc2U8c3RyaW5nPiB8IHN0cmluZyA9PiB7XG4gIGlmICh0ZXh0IGluc3RhbmNlb2YgVVJMKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRVUkwobmV3IFVSTCh0ZXh0KSwgLi4ubWlkZGxld2FyZXMpO1xuICB9XG4gIGxldCB0b3RhbCA9IDA7XG4gIGxldCBkb25lID0gMDtcbiAgbGV0IGZhaWxlZCA9IDA7XG4gIGxldCBoYXNQcm9taXNlID0gZmFsc2U7XG4gIGNvbnN0IG5vZGVzID0gdGV4dC5zcGxpdCgvKGh0dHBzPzpcXC9cXC9cXFMrKS9nKS5tYXAoKG5vZGUpID0+IHtcbiAgICBpZiAoIS9eaHR0cHM/OlxcL1xcL1xcUyskLy50ZXN0KG5vZGUpKSByZXR1cm4gbm9kZTtcbiAgICB0b3RhbCsrO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb252ZXJ0ZWQgPSBjb252ZXJ0VVJMKG5ldyBVUkwobm9kZSksIC4uLm1pZGRsZXdhcmVzKTtcbiAgICAgIC8vIOWQjOacn+OBp+WkieaPm+OBleOCjOOBn+WgtOWQiOOBr+OAgeOBk+OBk+OBp+aIkOWQpuOCkuOCq+OCpuODs+ODiOOBmeOCi1xuICAgICAgaWYgKGlzU3RyaW5nKGNvbnZlcnRlZCkpIHtcbiAgICAgICAgZG9uZSsrO1xuICAgICAgICByZXR1cm4gY29udmVydGVkO1xuICAgICAgfVxuICAgICAgaGFzUHJvbWlzZSA9IHRydWU7XG4gICAgICAvLyB3b3Jkc+OBr+WkieaPm+WkseaVl+aZguOBrmZhbGxiYWNr55So44Gr5L+d5oyB44GX44Gm44GK44GPXG4gICAgICByZXR1cm4gW2NvbnZlcnRlZCwgbm9kZV0gYXMgY29uc3Q7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgLy8g5ZCM5pyf44Gn5aSJ5o+b44GV44KM44Gf5aC05ZCI44Gv44CB44GT44GT44Gn5oiQ5ZCm44KS44Kr44Km44Oz44OI44GZ44KLXG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgZmFpbGVkKys7XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICghaGFzUHJvbWlzZSkgcmV0dXJuIChub2RlcyBhcyBzdHJpbmdbXSkuam9pbihcIlwiKTtcblxuICAvLyDpnZ7lkIzmnJ/lpInmj5vjgYznmbrnlJ/jgZfjgZ/loLTlkIjjga/jgIHpgLLmjZfnirbms4HjgpLooajnpLrjgZnjgotcbiAgY29uc3QgeyByZW5kZXIsIGRpc3Bvc2UgfSA9IHVzZVN0YXR1c0JhcigpO1xuICBjb25zdCByZW5kZXJfID0gKCkgPT5cbiAgICByZW5kZXIoXG4gICAgICB7IHR5cGU6IFwic3Bpbm5lclwiIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgVVJMOiAke2RvbmV9LyR7dG90YWx9IGNvbnZlcnRlZCwgJHtmYWlsZWR9IGZhaWxlZGAsXG4gICAgICB9LFxuICAgICk7XG4gIHJlbmRlcl8oKTtcbiAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgIG5vZGVzLm1hcChhc3luYyAobm9kZSkgPT4ge1xuICAgICAgaWYgKGlzU3RyaW5nKG5vZGUpKSByZXR1cm4gbm9kZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZCA9IGF3YWl0IG5vZGVbMF07XG4gICAgICAgIGRvbmUrKztcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRlZDtcbiAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgLy8g5aSJ5o+b44Gr5aSx5pWX44GX44Gf44Go44GN44Gv44CB5YWD44Gu5paH5a2X5YiX44KS6L+U44GZXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIGZhaWxlZCsrO1xuICAgICAgICByZXR1cm4gbm9kZVsxXTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHJlbmRlcl8oKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgKS50aGVuKChmcmFnbWVudHMpID0+IHtcbiAgICByZW5kZXIoXG4gICAgICB7IHR5cGU6IFwiY2hlY2stY2lyY2xlXCIgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IGBVUkw6ICR7ZG9uZX0vJHt0b3RhbH0gY29udmVydGVkLCAke2ZhaWxlZH0gZmFpbGVkYCxcbiAgICAgIH0sXG4gICAgKTtcbiAgICByZXR1cm4gZnJhZ21lbnRzLmpvaW4oXCJcIik7XG4gIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgIHNldFRpbWVvdXQoZGlzcG9zZSwgMTAwMCk7XG4gIH0pO1xufTtcbiIsICJleHBvcnQgY29uc3QgZm9ybWF0Tmljb25pY28gPSAodXJsOiBVUkwpOiBVUkwgfCBzdHJpbmcgPT4ge1xuICBpZiAoIS9eKD86XFx3K1xcLm5pY292aWRlb1xcLmpwfG5pY29cXC5tcykkLy50ZXN0KHVybC5ob3N0bmFtZSkpIHJldHVybiB1cmw7XG4gIGNvbnN0IGlkID0gdXJsLnBhdGhuYW1lLm1hdGNoKC8oPzpzbXxubXxzb3xjYXxheHx5b3xubHxpZ3xuYXxjd3x6W2EtZV18b218c2t8eWt8bHYpXFxkezEsMTR9JC8pPy5bMF07XG4gIHJldHVybiBpZCA/IGBbaHR0cHM6Ly9uaWNvdGh1bWIyaW1nLnZlcmNlbC5hcHAvaW1hZ2UvJHtpZH0jLnBuZyBodHRwczovL25pY28ubXMvJHtpZH1dYCA6IHVybDtcbn07XG4iLCAiaW1wb3J0IHtcbiAgQ29kZUJsb2NrLFxuICBMaW5lLFxuICBOb2RlLFxuICBwYXJzZSxcbiAgVGFibGUsXG59IGZyb20gXCIuLi9zY3JhcGJveC1wYXJzZXIvbW9kLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0ID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGJsb2NrcyA9IHBhcnNlKHRleHQsIHsgaGFzVGl0bGU6IGZhbHNlIH0pO1xuICByZXR1cm4gYmxvY2tzLmZsYXRNYXAoKGJsb2NrKSA9PiB7XG4gICAgc3dpdGNoIChibG9jay50eXBlKSB7XG4gICAgICBjYXNlIFwidGl0bGVcIjpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgY2FzZSBcImNvZGVCbG9ja1wiOlxuICAgICAgICByZXR1cm4gY29udmVydENvZGVCbG9jayhibG9jayk7XG4gICAgICBjYXNlIFwidGFibGVcIjpcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRUYWJsZShibG9jayk7XG4gICAgICBjYXNlIFwibGluZVwiOlxuICAgICAgICByZXR1cm4gY29udmVydExpbmUoYmxvY2spO1xuICAgIH1cbiAgfSlcbiAgICAubWFwKChsaW5lKSA9PiBsaW5lKS5qb2luKFwiXFxuXCIpO1xufTtcblxuY29uc3QgY29udmVydENvZGVCbG9jayA9IChcbiAgeyBmaWxlTmFtZSwgY29udGVudCwgaW5kZW50IH06IENvZGVCbG9jayxcbikgPT4ge1xuICBjb25zdCB0YWcgPSBcIiBcIi5yZXBlYXQoaW5kZW50KTtcblxuICByZXR1cm4gW1xuICAgIGAke3RhZ31jb2RlOiR7ZmlsZU5hbWV9YCxcbiAgICAuLi5jb250ZW50LnNwbGl0KFwiXFxuXCIpLm1hcCgobGluZSkgPT4gYCR7dGFnfSAke2xpbmV9YCksXG4gIF07XG59O1xuY29uc3QgY29udmVydFRhYmxlID0gKHsgZmlsZU5hbWUsIGNlbGxzLCBpbmRlbnQgfTogVGFibGUpID0+IHtcbiAgY29uc3QgdGFnID0gXCIgXCIucmVwZWF0KGluZGVudCk7XG5cbiAgcmV0dXJuIFtcbiAgICBgJHt0YWd9dGFibGU6JHtmaWxlTmFtZX1gLFxuICAgIC4uLmNlbGxzLm1hcCgoY2VsbCkgPT5cbiAgICAgIGAke3RhZ30gJHtcbiAgICAgICAgY2VsbC5tYXAoKG5vZGVzKSA9PiBub2Rlcy5tYXAoKG5vZGUpID0+IG5vZGUucmF3KS5qb2luKFwiXCIpKS5qb2luKFwiXFx0XCIpXG4gICAgICB9YFxuICAgICksXG4gIF07XG59O1xuY29uc3QgY29udmVydExpbmUgPSAoeyBub2RlcywgaW5kZW50IH06IExpbmUpID0+IFtcbiAgYCR7XCIgXCIucmVwZWF0KGluZGVudCl9JHtcbiAgICBub2Rlcy5tYXAoKG5vZGUpID0+IGAke2NvbnZlcnROb2RlKG5vZGUpfWApLmpvaW4oXG4gICAgICBcIlwiLFxuICAgIClcbiAgfWAsXG5dO1xuXG5jb25zdCBjb252ZXJ0Tm9kZSA9IChub2RlOiBOb2RlKTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICBjYXNlIFwicXVvdGVcIjpcbiAgICAgIHJldHVybiBgPiAke25vZGUubm9kZXMubWFwKChub2RlKSA9PiBjb252ZXJ0Tm9kZShub2RlKSkuam9pbihcIlwiKX1gO1xuICAgIGNhc2UgXCJoZWxwZmVlbFwiOlxuICAgICAgcmV0dXJuIGBbLT8gJHtub2RlLnRleHR9XWA7XG4gICAgY2FzZSBcImNvbW1hbmRMaW5lXCI6XG4gICAgICByZXR1cm4gYFstJHtub2RlLnN5bWJvbH0gJHtub2RlLnRleHR9XWA7XG4gICAgY2FzZSBcImljb25cIjpcbiAgICBjYXNlIFwic3Ryb25nSWNvblwiOlxuICAgIGNhc2UgXCJpbWFnZVwiOlxuICAgIGNhc2UgXCJzdHJvbmdJbWFnZVwiOlxuICAgIGNhc2UgXCJmb3JtdWxhXCI6XG4gICAgY2FzZSBcImNvZGVcIjpcbiAgICBjYXNlIFwiZ29vZ2xlTWFwXCI6XG4gICAgICByZXR1cm4gbm9kZS5yYXc7XG4gICAgY2FzZSBcInN0cm9uZ1wiOlxuICAgICAgcmV0dXJuIGBbWyR7bm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IGNvbnZlcnROb2RlKG5vZGUpKS5qb2luKFwiXCIpfV1dYDtcbiAgICBjYXNlIFwiZGVjb3JhdGlvblwiOiB7XG4gICAgICBpZiAoIW5vZGUuZGVjb3MuaW5jbHVkZXMoXCItXCIpKSBub2RlLmRlY29zLnB1c2goXCItXCIpO1xuICAgICAgY29uc3QgZGVjbyA9IG5vZGUuZGVjb3MubWFwKChkZWNvKSA9PiB7XG4gICAgICAgIGNvbnN0IG51bSA9IHBhcnNlSW50KGRlY28ubWF0Y2goL1xcKi0oXFxkKS8pPy5bMV0gPz8gXCIwXCIpO1xuICAgICAgICByZXR1cm4gbnVtID4gMCA/IFwiKlwiLnJlcGVhdChudW0pIDogZGVjbztcbiAgICAgIH0pLmpvaW4oXCJcIik7XG5cbiAgICAgIHJldHVybiBgWyR7ZGVjbyA/IGAke2RlY299IGAgOiBcIlwifSR7XG4gICAgICAgIG5vZGUubm9kZXMubWFwKChub2RlKSA9PiBjb252ZXJ0Tm9kZShub2RlKSkuam9pbihcIlwiKVxuICAgICAgfV1gO1xuICAgIH1cbiAgICAvLyBsaW50ZXLjga7jg5DjgrDjgafjgIHkvZXmlYXjgYvorablkYrjgYzlh7rjgotcbiAgICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWZhbGx0aHJvdWdoXG4gICAgY2FzZSBcImxpbmtcIjoge1xuICAgICAgc3dpdGNoIChub2RlLnBhdGhUeXBlKSB7XG4gICAgICAgIGNhc2UgXCJyb290XCI6XG4gICAgICAgIGNhc2UgXCJyZWxhdGl2ZVwiOlxuICAgICAgICAgIHJldHVybiBgWy0gWyR7bm9kZS5ocmVmfV1dYDtcbiAgICAgICAgY2FzZSBcImFic29sdXRlXCI6XG4gICAgICAgICAgcmV0dXJuIGBbLSAke25vZGUuY29udGVudCA/IGAke25vZGUuY29udGVudH0gYCA6IFwiXCJ9JHtub2RlLmhyZWZ9XV1gO1xuICAgICAgfVxuICAgIH1cbiAgICBjYXNlIFwiaGFzaFRhZ1wiOlxuICAgICAgcmV0dXJuIGBbLSAjJHtub2RlLmhyZWZ9XWA7XG4gICAgY2FzZSBcIm51bWJlckxpc3RcIjpcbiAgICAgIHJldHVybiBgJHtub2RlLm51bWJlcn0uICR7bm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IGNvbnZlcnROb2RlKG5vZGUpKS5qb2luKFwiXCIpfWA7XG4gICAgY2FzZSBcImJsYW5rXCI6XG4gICAgY2FzZSBcInBsYWluXCI6XG4gICAgICByZXR1cm4gYFstICR7bm9kZS50ZXh0fV1gO1xuICB9XG59O1xuIiwgImltcG9ydCB7IGNvbnZlcnQgfSBmcm9tIFwiLi4v6KSH5pWw6KGM44Gr5omT44Gh5raI44GX57ea44KS5byV44GPVXNlclNjcmlwdC9tb2QudHNcIjtcblxuc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gIHRpdGxlOiAnXFx1ZjBjYycsXG4gIG9uQ2xpY2s6IHRleHQgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnQodGV4dCk7XG4gICAgaWYgKHRleHQgPT09IHJlc3VsdCkgcmV0dXJuOyAvLyDlpInmm7TjgYzjgarjgZHjgozjgbDkvZXjgoLjgZfjgarjgYRcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LFxufSk7XG4iLCAiLy8gQHRzLWNoZWNrXG4vKiogQHBhcmFtIHtzdHJpbmd9IHRleHRcbiAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH0g572u5o+b44GM5a6f6KGM44GV44KM44Gq44GE44Go44GN44GvYHVuZGVmaW5lZGDjgpLov5TjgZlcbiAqL1xuZXhwb3J0IGNvbnN0IGV4ZWMgPSAodGV4dCkgPT4ge1xuICBjb25zdCBzcGxpdFBvcyA9IHRleHQuaW5kZXhPZihcIlxcblxcblwiKTtcbiAgaWYgKHNwbGl0UG9zIDwgMCkgcmV0dXJuO1xuICBjb25zdCBjb21tYW5kcyA9IHRleHQuc2xpY2UoMCwgc3BsaXRQb3MpLnNwbGl0KFwiXFxuXCIpLm1hcChcbiAgICAoY29tbWFuZCkgPT4ge1xuICAgICAgY29uc3QgW2JlZm9yZSA9IFwiXCIsIGFmdGVyID0gXCJcIl0gPSBjb21tYW5kLnNwbGl0KFwiID0+IFwiLCAyKTtcbiAgICAgIHJldHVybiBbYmVmb3JlLCBhZnRlcl07XG4gICAgfVxuICApO1xuICBpZiAoY29tbWFuZHMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gIFxuICBsZXQgbGluZXMgPSB0ZXh0LnNsaWNlKHNwbGl0UG9zICsgMikuc3BsaXQoXCJcXG5cIik7XG4gIGlmIChsaW5lcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgZm9yIChjb25zdCBbYmVmb3JlLCBhZnRlcl0gb2YgY29tbWFuZHMpIHtcbiAgICBjb25zdCBtYXRjaCA9IGJlZm9yZS5tYXRjaCgvXlxcLyguKj8pXFwvKFtnaW15XSopJC8pO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChtYXRjaFsxXSwgbWF0Y2hbMl0pO1xuICAgICAgbGluZXMgPSBsaW5lcy5tYXAoXG4gICAgICAgIChsaW5lKSA9PiBsaW5lLnJlcGxhY2UocmVnLCBhZnRlci5yZXBsYWNlQWxsKFwiXFxcXG5cIiwgXCJcXG5cIikpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaW5lcyA9IGxpbmVzLm1hcChcbiAgICAgICAgKGxpbmUpID0+IGxpbmUucmVwbGFjZUFsbChiZWZvcmUsIGFmdGVyLnJlcGxhY2VBbGwoXCJcXFxcblwiLCBcIlxcblwiKSlcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIFxuICBjb25zdCBuZXdUZXh0ID0gYCR7dGV4dC5zbGljZSgwLCBzcGxpdFBvcyArIDIpfSR7bGluZXMuam9pbihcIlxcblwiKX1gO1xuICBpZiAodGV4dCA9PT0gbmV3VGV4dCkgcmV0dXJuO1xuICByZXR1cm4gbmV3VGV4dDtcbn07XG4iLCAiaW1wb3J0IHsgZXhlYyB9IGZyb20gXCIuL21vZC5qc1wiO1xuXG5zY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcbiAgdGl0bGU6ICh0ZXh0KSA9PiBleGVjKHRleHQpID8gXCJyZXBsYWNlXCIgOiBcIlwiLFxuICBvbkNsaWNrOiAodGV4dCkgPT4ge1xuICAgIGNvbnN0IHJlcGxhY2VkID0gZXhlYyh0ZXh0KTtcbiAgICBpZiAocmVwbGFjZWQgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIHJldHVybiByZXBsYWNlZDtcbiAgfSxcbn0pO1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cblxuZXhwb3J0IGludGVyZmFjZSBMaW5rIHtcbiAgYmVmb3JlOiBzdHJpbmc7XG4gIGFmdGVyOiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBDb252ZXJ0T3JkZXIgPSB7XG4gIGNvbnZlcnQ6IGZhbHNlO1xufSB8IHtcbiAgY29udmVydDogdHJ1ZTtcbiAgbGlua3M6IExpbmtbXTtcbn07XG5cbmV4cG9ydCBjb25zdCB3YWl0Rm9yQ29udmVydE9yZGVyID0gKGxpbmtzOiBzdHJpbmdbXSk6IFByb21pc2U8Q29udmVydE9yZGVyPiA9PiB7XG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICBjb25zdCBzaGFkb3dSb290ID0gcm9vdC5hdHRhY2hTaGFkb3coeyBtb2RlOiBcIm9wZW5cIiB9KTtcbiAgXG4gIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBzdHlsZS50ZXh0Q29udGVudCA9IGBkaWFsb2c6OmJhY2tkcm9we2JhY2tncm91bmQtY29sb3I6IzAwMGN9ZGlhbG9ne2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7cm93LWdhcDoxMHB4O3BhZGRpbmc6MTBweDtiYWNrZ3JvdW5kOnVuc2V0O21hcmdpbi10b3A6dW5zZXQ7bWFyZ2luLWJvdHRvbTp1bnNldDtib3JkZXI6dW5zZXQ7aGVpZ2h0OnVuc2V0fWRpYWxvZ1tvcGVuXXtkaXNwbGF5OmZsZXh9ZGlhbG9nPip7Y29sb3I6dmFyKC0tcGFnZS10ZXh0LWNvbG9yLCAjNGE0YTRhKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRyb3Bkb3duLW1lbnUtYmcsICNmZmYpO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMik7Ym9yZGVyLXJhZGl1czo2cHh9QG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KXtkaWFsb2d7cGFkZGluZzozMHB4IDB9fS5jb250YWluZXJ7ZGlzcGxheTpmbGV4O3BhZGRpbmc6NXB4O2dhcDowLjJlbTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47d2lkdGg6MTAwJTt9LmJ1dHRvbi1jb250YWluZXJ7ZmxleC1kaXJlY3Rpb246dW5zZXQ7fS5idXR0b24tY29udGFpbmVyPip7ZmxleDoxO31gO1xuICBzaGFkb3dSb290LmFwcGVuZChzdHlsZSk7XG4gIGNvbnN0IGRpYWxvZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaWFsb2dcIik7XG4gIGRpYWxvZy5pbnNlcnRBZGphY2VudEhUTUwoXCJiZWZvcmVlbmRcIiwgYFxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgIFJlcGxhY2UgTGlua3M6XG4gICAgICA8dGV4dGFyZWEgY2xhc3M9XCJlZGl0b3JcIj48L3RleHRhcmVhPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lciBidXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWxcIj5jYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlcGxhY2VcIj5yZXBsYWNlPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCk7XG4gIHNoYWRvd1Jvb3QuYXBwZW5kKGRpYWxvZyk7XG4gIFxuICBjb25zdCBlZGl0b3IgPSBkaWFsb2cucXVlcnlTZWxlY3RvcihcIi5lZGl0b3JcIikgYXMgSFRNTFRleHRBcmVhRWxlbWVudDtcbiAgZWRpdG9yLnJvd3MgPSBsaW5rcy5sZW5ndGg7XG4gIGVkaXRvci52YWx1ZSA9IGxpbmtzLmpvaW4oXCJcXG5cIik7XG4gIGNvbnN0IGFkanVzdFdpZHRoID0gKCkgPT4ge1xuICAgIGRpYWxvZy5zdHlsZS5taW5XaWR0aCA9IGAke1xuICAgICAgTWF0aC5tYXgoLi4uZWRpdG9yLnZhbHVlLnNwbGl0KFwiXFxuXCIpLm1hcCgobGluZSkgPT4gWy4uLmxpbmVdLmxlbmd0aCkpICsgNlxuICAgIH1lbWA7XG4gIH07XG4gIGFkanVzdFdpZHRoKCk7XG4gIGVkaXRvci5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgYWRqdXN0V2lkdGgpO1xuICBcbiAgY29uc3QgY2FuY2VsID0gZGlhbG9nLnF1ZXJ5U2VsZWN0b3IoXCIuY2FuY2VsXCIpIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuICBjb25zdCBjb25maXJtID0gZGlhbG9nLnF1ZXJ5U2VsZWN0b3IoXCIucmVwbGFjZVwiKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlPENvbnZlcnRPcmRlcj4oKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBvbkNsb3NlID0gKCkgPT4ge1xuICAgICAgcmVzb2x2ZSh7IGNvbnZlcnQ6IGZhbHNlIH0pO1xuICAgICAgcm9vdC5yZW1vdmUoKTtcbiAgICB9O1xuICAgIGRpYWxvZy5hZGRFdmVudExpc3RlbmVyKFwiY2xvc2VcIiwgb25DbG9zZSk7XG4gICAgZGlhbG9nLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBvbkNsb3NlKTtcbiAgICBjYW5jZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIG9uQ2xvc2UpO1xuICAgIGNvbmZpcm0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IG5ld0xpbmVzID0gZWRpdG9yLnZhbHVlLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIGNvbnZlcnQ6IHRydWUsXG4gICAgICAgIGxpbmtzOiBsaW5rcy5mbGF0TWFwKFxuICAgICAgICAgIChiZWZvcmUsIGkpID0+IHtcbiAgICAgICAgICAgIC8vIOepuuaWh+Wtl+OBruWgtOWQiOOBqOOAgeWkieWMluOBjOOBquOBhOWgtOWQiOOBr+mjm+OBsOOBmVxuICAgICAgICAgICAgaWYgKGJlZm9yZSA9PT0gbmV3TGluZXNbaV0gfHwgYmVmb3JlID09PSBcIlwiIHx8ICFuZXdMaW5lc1tpXSkgcmV0dXJuIFtdO1xuICAgICAgICAgICAgcmV0dXJuIFt7IGJlZm9yZSwgYWZ0ZXI6IG5ld0xpbmVzW2ldID8/IGJlZm9yZSB9XTtcbiAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICAgIHJvb3QucmVtb3ZlKCk7XG4gICAgfSk7XG4gICAgZGlhbG9nLnF1ZXJ5U2VsZWN0b3IoXCIuY29udGFpbmVyXCIpIS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKGUpID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG4gIH0pO1xuICBcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmQocm9vdCk7XG4gIGRpYWxvZy5zaG93TW9kYWwoKTtcbiAgXG4gIHJldHVybiBwcm9taXNlO1xufTsiLCAiaW1wb3J0IHsgdXNlU3RhdHVzQmFyIH0gZnJvbSBcIi4uL3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkL21vZC50c1wiO1xuaW1wb3J0IHsgcmVwbGFjZSwgZ2V0TGlua3MgfSBmcm9tIFwiLi9tb2QudHNcIjtcbmltcG9ydCB7IHdhaXRGb3JDb252ZXJ0T3JkZXIgfSBmcm9tIFwiLi9jb252ZXJ0ZXIudHNcIjtcbmV4cG9ydCB7IGdldExpbmtzIH07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVSZXBsYWNlID0gYXN5bmMgKHRleHQ6IHN0cmluZywgcHJvamVjdHM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGxpbmtzID0gZ2V0TGlua3ModGV4dCk7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHdhaXRGb3JDb252ZXJ0T3JkZXIoWy4uLm5ldyBTZXQobGlua3MpXSk7XG4gIGlmICghcmVzdWx0LmNvbnZlcnQgfHwgcmVzdWx0LmxpbmtzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICBcbiAgY29uc3QgYmFycyA9IG5ldyBNYXAocmVzdWx0LmxpbmtzLm1hcCgobGluaykgPT4gW2xpbmsuYmVmb3JlLCB1c2VTdGF0dXNCYXIoKV0pKTtcbiAgYXdhaXQgcmVwbGFjZShyZXN1bHQubGlua3MsIHByb2plY3RzLCAoc3RhdHVzKSA9PiB7XG4gICAgY29uc3QgeyBsaW5rLCBwcm9qZWN0Q291bnQsIHJlcGxhY2VkLCBkb25lIH0gPSBzdGF0dXM7XG4gICAgY29uc3QgYmFyID0gYmFycy5nZXQobGluay5iZWZvcmUpO1xuICAgIGlmICghYmFyKSByZXR1cm47XG4gICAgaWYgKGRvbmUpIHtcbiAgICAgIGJhci5yZW5kZXIoXG4gICAgICAgIHsgdHlwZTogXCJjaGVjay1jaXJjbGVcIn0sXG4gICAgICAgIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IGBcIiR7bGluay5hZnRlcn1cIiwgJHtyZXBsYWNlZH1sLiAke3Byb2plY3RDb3VudH1wLmAgfSxcbiAgICAgICk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IGJhci5kaXNwb3NlKCksIDEwMDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBiYXIucmVuZGVyKFxuICAgICAgeyB0eXBlOiBcInNwaW5uZXJcIn0sXG4gICAgICB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBgXCIke2xpbmsuYWZ0ZXJ9XCIsICR7cmVwbGFjZWR9bC4gJHtwcm9qZWN0Q291bnR9cC5gIH0sXG4gICAgKTtcbiAgfSk7XG59OyIsICJpbXBvcnQge1xuICBkaXNjb25uZWN0LFxuICBtYWtlU29ja2V0LFxuICBwYXRjaCxcbiAgcmVwbGFjZUxpbmtzLFxuICB1c2VTdGF0dXNCYXIsXG59IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9tb2QudHNcIjtcbmltcG9ydCB0eXBlIHtcbiAgRXJyb3JMaWtlLFxufSBmcm9tIFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NjcmFwYm94LWpwL3R5cGVzLzAuMC44L21vZC50c1wiO1xuaW1wb3J0IHsgZ2V0TGlua3MgfSBmcm9tICBcIi4uL+ikh+aVsOOBruODquODs+OCr+OCkuOBvuOBqOOCgeOBpue9ruaPm+OBmeOCi1VzZXJTY3JpcHQvbW9kLnRzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXBsYWNlKHRleHQ6IHN0cmluZywgcHJvamVjdHM6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IGxpbmsgPSBnZXRMaW5rcyh0ZXh0KVswXTtcbiAgaWYgKCFsaW5rKSByZXR1cm47XG5cbiAgY29uc3QgbmV3TGluayA9IHdpbmRvdy5wcm9tcHQoXG4gICAgYFJlcGxhY2UgXCIke2xpbmt9XCIgdG8gdGhpcyBpbiAke1xuICAgICAgcHJvamVjdHMubWFwKChwcm9qZWN0KSA9PiBgXCIvJHtwcm9qZWN0fVwiYCkuam9pbihcIiwgXCIpXG4gICAgfWAsXG4gICAgbGluayxcbiAgKVxuICAgID8ucmVwbGFjZT8uKC9bXFxbXFxdXFxuXS9nLCBcIiBcIikgPz8gXCJcIjtcbiAgaWYgKG5ld0xpbmsgPT09IFwiXCIpIHJldHVybjtcblxuICBjb25zdCB7IHJlbmRlciwgZGlzcG9zZSB9ID0gdXNlU3RhdHVzQmFyKCk7XG5cbiAgY29uc3Qgc29ja2V0ID0gYXdhaXQgbWFrZVNvY2tldCgpO1xuICB0cnkge1xuICAgIHJlbmRlcihcbiAgICAgIHsgdHlwZTogXCJzcGlubmVyXCIgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IGBSZXBsYWNpbmcgbGlua3MgaW4gJHtwcm9qZWN0cy5sZW5ndGh9IHByb2plY3RzLi4uYCxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGNvbnN0IHJlcGxhY2VkTnVtcyA9IGF3YWl0IFByb21pc2UuYWxsKHByb2plY3RzLm1hcChhc3luYyAocHJvamVjdCkgPT4ge1xuICAgICAgY29uc3QgW3Jlc3VsdF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIC8vIOacrOW9k+OBr2hhc0JhY2tMaW5rc09ySWNvbnMgPT09IHRydWXjga7jgajjgY3jga7jgb/nva7mj5vjgZfjgZ/jgYRcbiAgICAgICAgcmVwbGFjZUxpbmtzKHByb2plY3QsIGxpbmssIG5ld0xpbmspLFxuICAgICAgICBwYXRjaChwcm9qZWN0LCBsaW5rLCAobGluZXMsIHsgcGVyc2lzdGVudCB9KSA9PiB7XG4gICAgICAgICAgaWYgKCFwZXJzaXN0ZW50KSByZXR1cm47XG5cbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3TGluayxcbiAgICAgICAgICAgIC4uLmxpbmVzLm1hcCgobGluZSkgPT4gbGluZS50ZXh0KS5zbGljZSgxKSxcbiAgICAgICAgICBdO1xuICAgICAgICB9LCB7IHNvY2tldCB9KSxcbiAgICAgIF0pO1xuICAgICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgICAgcmVuZGVyKFxuICAgICAgICAgIHsgdHlwZTogXCJleGNsYW1hdGlvbi10cmlhbmdsZVwiIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICB0ZXh0OiBgJHtyZXN1bHQudmFsdWUubmFtZX0gJHtyZXN1bHQudmFsdWUubWVzc2FnZX1gLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICAgIHRocm93IHRvRXJyb3IocmVzdWx0LnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGNvdW50Kys7XG4gICAgICByZW5kZXIoXG4gICAgICAgIHsgdHlwZTogXCJzcGlubmVyXCIgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IGBSZXBsYWNpbmcgbGlua3MgaW4gJHtwcm9qZWN0cy5sZW5ndGggLSBjb3VudH0gcHJvamVjdHMuLi5gLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gICAgfSkpO1xuXG4gICAgY29uc3QgcmVwbGFjZWQgPSByZXBsYWNlZE51bXMucmVkdWNlKChhY2MsIGN1cikgPT4gYWNjICsgY3VyLCAwKTtcbiAgICByZW5kZXIoXG4gICAgICB7IHR5cGU6IFwiY2hlY2stY2lyY2xlXCIgfSxcbiAgICAgIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IGBTdWNjZXNzZnVsbHkgcmVwbGFjZWQgJHtyZXBsYWNlZH0gbGlua3MuYCB9LFxuICAgICk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZGlzY29ubmVjdChzb2NrZXQpO1xuICAgIHNldFRpbWVvdXQoZGlzcG9zZSwgMTAwMCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9FcnJvcihlOiBFcnJvckxpa2UpIHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoKTtcbiAgZXJyb3IubmFtZSA9IGUubmFtZTtcbiAgZXJyb3IubWVzc2FnZSA9IGUubWVzc2FnZTtcbiAgcmV0dXJuIGVycm9yO1xufVxuIiwgImltcG9ydCB7IGhhbmRsZVJlcGxhY2UsIGdldExpbmtzIH0gZnJvbSBcIi4vbWFpbi50c1wiO1xuaW1wb3J0IHsgcmVwbGFjZSB9IGZyb20gXCIuLi9Qcm9qZWN044KS5qiq5pat44GX44Gm44Oq44Oz44Kv44KS572u5o+b44GZ44KLVXNlclNjcmlwdC9tb2QudHNcIjtcbmltcG9ydCB0eXBlIHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vc2NyYXBib3gtanAlMkZ0eXBlcy91c2Vyc2NyaXB0LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuZXhwb3J0IGNvbnN0IHNldHVwID0gKHByb2plY3RzOiBJdGVyYWJsZTxzdHJpbmc+KTogdm9pZCA9PiB7XG4gIGNvbnN0IHAgPSBbc2NyYXBib3guUHJvamVjdC5uYW1lLCAuLi5wcm9qZWN0c107XG4gIHNjcmFwYm94LlBvcHVwTWVudS5hZGRCdXR0b24oe1xuICAgIHRpdGxlOiAodGV4dCkgPT4ge1xuICAgICAgY29uc3QgbGlua0NvdW50ID0gZ2V0TGlua3ModGV4dCkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxpbmtDb3VudCA+IDEgPyBcInVwZGF0ZSBsaW5rc1wiIDogbGlua0NvdW50ID09PSAxID8gXCJ1cGRhdGUgYSBsaW5rXCIgOiBcIlwiO1xuICAgIH0sXG4gICAgb25DbGljazogKHRleHQpOiB1bmRlZmluZWQgPT4ge1xuICAgICAgY29uc3QgbGlua0NvdW50ID0gZ2V0TGlua3ModGV4dCkubGVuZ3RoO1xuICAgICAgaWYgKGxpbmtDb3VudCA+IDEpIHtcbiAgICAgICAgaGFuZGxlUmVwbGFjZSh0ZXh0LCBwKTtcbiAgICAgIH0gZWxzZSBpZiAobGlua0NvdW50ID09PSAxKSB7XG4gICAgICAgIHJlcGxhY2UodGV4dCwgcCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0sXG4gIH0pO1xufTtcbiIsICJzY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcbiAgdGl0bGU6ICh0ZXh0KSA9PiAvW1xcbu+8ji7jgIJdLy50ZXN0KHRleHQpID8gXCJcXFxcblwiIDogXCJcIixcbiAgb25DbGljazogKHRleHQpID0+IHRleHRcbiAgICAucmVwbGFjZSgvKFxcdylcXG4oXFx3KS9nLCBcIiQxICQyXCIpXG4gICAgLnJlcGxhY2VBbGwoXCJcXG5cIiwgXCJcIilcbiAgICAucmVwbGFjZUFsbChcIu+8jlwiLCBcIu+8jlxcblwiKVxuICAgIC5yZXBsYWNlQWxsKFwiLlwiLCBcIi5cXG5cIilcbiAgICAucmVwbGFjZUFsbChcIuOAglwiLCBcIuOAglxcblwiKSxcbn0pOyIsICJzY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcbiAgdGl0bGU6ICh0ZXh0KSA9PiAvaHR0cHM6XFwvXFwvKD86dGh1bWJcXC58aVxcLik/Z3lhem9cXC5jb21cXC9bYS16MC05XSsvLnRlc3QodGV4dClcbiAgICA/IGdsb2JhbFRoaXMuR01fZmV0Y2hcbiAgICA/IFwiY29weSBHeWF6byBPQ1JcIlxuICAgIDogXCJvcGVuIEd5YXpvXCJcbiAgICA6IFwiXCIsXG4gIG9uQ2xpY2s6IGFzeW5jICh0ZXh0KSA9PiB7XG4gICAgY29uc3QgaWQgPSB0ZXh0Lm1hdGNoKC9odHRwczpcXC9cXC8oPzp0aHVtYlxcLnxpXFwuKT9neWF6b1xcLmNvbVxcLyhbYS16MC05XSspLyk/LlsxXTtcbiAgICBpZiAoIWlkKSByZXR1cm47XG4gICAgaWYgKCFnbG9iYWxUaGlzLkdNX2ZldGNoKSB7XG4gICAgICB3aW5kb3cub3BlbihgaHR0cHM6Ly9neWF6by5jb20vJHtpZH1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVzID0gYXdhaXQgR01fZmV0Y2goYGh0dHBzOi8vZ3lhem8uY29tLyR7aWR9Lmpzb25gKTtcbiAgICBjb25zdCBvY3IgPSAoYXdhaXQgcmVzLmpzb24oKSkubWV0YWRhdGE/Lm9jcj8uZGVzY3JpcHRpb247XG4gICAgaWYgKCFvY3IpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQob2NyKTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICBhbGVydChgJHtlLm5hbWV9ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfSxcbn0pO1xuIiwgInNjcmFwYm94LlBvcHVwTWVudS5hZGRCdXR0b24oe1xuICB0aXRsZTogKHRleHQpID0+IC9odHRwczpcXC9cXC9neWF6b1xcLmNvbVxcL1thLXowLTldKy8udGVzdCh0ZXh0KSA/IFwiXFx1ZjU2NVwiIDogXCJcIixcbiAgb25DbGljazogKHRleHQpID0+IHtcbiAgICBjb25zdCBpZCA9IHRleHQubWF0Y2goL2h0dHBzOlxcL1xcL2d5YXpvXFwuY29tXFwvKFthLXowLTldKykvKT8uWzFdO1xuICAgIGlmICghaWQpIHJldHVybjtcbiAgICB3aW5kb3cub3BlbihgaHR0cHM6Ly9neWF6by5jb20vJHtpZH0vdHJhbnNmb3JtYCk7XG4gIH0sXG59KTsiLCAiaW1wb3J0IHR5cGUgeyBCbG9jaywgQ29kZUJsb2NrLCBUYWJsZSwgTGluZSwgTm9kZSBhcyBOb2RlVHlwZSB9IGZyb20gXCIuLi9zY3JhcGJveC1wYXJzZXIvbW9kLnRzXCI7XG5cbi8qKiBTY3JhcGJveOiomOazleOCkk1hcmtkb3du6KiY5rOV44Gr5aSJ44GI44KLICovXG5leHBvcnQgY29uc3QgY29udmVydCA9IChibG9ja3M6IEJsb2NrW10pOiBzdHJpbmcgPT4ge1xuICAvKiog5aSJ5o+b5b6M44Gu5paH5a2X5YiXICovXG4gIGxldCBsYXRleCA9IFwiXCI7XG4gIC8qKiDnj77lnKjop6PmnpDjgZfjgabjgYTjgovooYzjga7jgqTjg7Pjg4fjg7Pjg4jjga7mt7HjgZVcbiAgICpcbiAgICog44GT44Gu5pa55rOV44Gg44Go55Wq5Y+344Gk44GN566H5p2h5pu444GN44KS44KS5Yy65Yil44Gn44GN44Gq44GE44GM44CB5oiR5oWi44GZ44KLXG4gICAqL1xuICBsZXQgbGV2ZWwgPSAwO1xuICBmb3IgKGNvbnN0IGJsb2NrIG9mIGJsb2Nrcykge1xuICAgIC8vIOOCv+OCpOODiOODq+OBr+S7iuOBruOBqOOBk+OCjeeEoeimluOBl+OBpuOBiuOBj1xuICAgIGlmIChibG9jay50eXBlID09PSBcInRpdGxlXCIpIGNvbnRpbnVlO1xuICAgIC8vIOOCpOODs+ODh+ODs+ODiOOCkuS4i+OBkuOCi1xuICAgIGlmIChibG9jay5pbmRlbnQgPiBsZXZlbCkge1xuICAgICAgZm9yIChsZXQgaSA9IGxldmVsOyBpIDwgYmxvY2suaW5kZW50OyBpKyspIHtcbiAgICAgICAgbGF0ZXggKz0gaW5kZW50KGAkeyBpICE9PSBsZXZlbCA/IFwiXFxcXGl0ZW1cIiA6IFwiXCJ9XFxcXGJlZ2lue2l0ZW1pemV9YCwgaSAqIDIpICsgXCJcXG5cIjtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8g44Kk44Oz44OH44Oz44OI44KS5LiK44GS44KLXG4gICAgaWYgKGJsb2NrLmluZGVudCA8IGxldmVsKSB7XG4gICAgICBmb3IgKGxldCBpID0gbGV2ZWw7IGkgPiBibG9jay5pbmRlbnQ7IGktLSkge1xuICAgICAgICBsYXRleCArPSBpbmRlbnQoXCJcXFxcZW5ke2l0ZW1pemV9XCIsIChpIC0gMSkgKiAyKSArIFwiXFxuXCI7XG4gICAgICB9XG4gICAgfVxuICAgIGxldmVsID0gYmxvY2suaW5kZW50O1xuICAgIGxhdGV4ICs9IGluZGVudChgJHtsZXZlbCA+IDAgPyBcIlxcXFxpdGVtIFwiIDogXCJcIn0ke2Zyb21CbG9jayhibG9jayl9YCwgbGV2ZWwgKiAyKSArIFwiXFxuXCI7XG4gIH1cbiAgLy8g5YWo44Gm44Gu44Kk44Oz44OH44Oz44OI44KS6ZaJ44GY44KLXG4gIGZvciAobGV0IGkgPSBsZXZlbDsgaSA+IDA7IGktLSkge1xuICAgIGxhdGV4ICs9IGluZGVudChcIlxcXFxlbmR7aXRlbWl6ZX1cIiwgKGkgLSAxKSAqIDIpICsgXCJcXG5cIjtcbiAgfVxuICByZXR1cm4gbGF0ZXg7XG59O1xuXG4vKiogQmxvY2vjga7lpInmj5sgKi9cbmNvbnN0IGZyb21CbG9jayA9IChibG9jazogQ29kZUJsb2NrIHwgVGFibGUgfCBMaW5lKTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChibG9jay50eXBlKSB7XG4gICAgY2FzZSBcImNvZGVCbG9ja1wiOlxuICAgICAgcmV0dXJuIGZyb21Db2RlQmxvY2soYmxvY2spO1xuICAgIGNhc2UgXCJ0YWJsZVwiOlxuICAgICAgcmV0dXJuIGZyb21UYWJsZShibG9jayk7XG4gICAgY2FzZSBcImxpbmVcIjpcbiAgICAgIHJldHVybiBmcm9tTGluZShibG9jayk7XG4gIH1cbn1cblxuLyoqIENvZGVCbG9ja+iomOazleOBruWkieaPm1xuICpcbiAqIGluZGVudOOBr+eEoeimluOBmeOCi1xuICovXG5jb25zdCBmcm9tQ29kZUJsb2NrID0gKGJsb2NrOiBDb2RlQmxvY2spOiBzdHJpbmcgPT4gXG5gXFxcXGJlZ2lue2xzdGxpc3Rpbmd9W2xhbmd1YWdlPSR7ZXNjYXBlKGdldEZpbGVUeXBlKGJsb2NrLmZpbGVOYW1lKSl9LGNhcHRpb249JHtlc2NhcGUoYmxvY2suZmlsZU5hbWUpfSxsYWJlbD1sYW5nOiR7YmxvY2suZmlsZU5hbWV9LG51bWJlcnM9bGVmdF1cbiR7YmxvY2suY29udGVudH1cblxcXFxlbmR7bHN0bGlzdGluZ31gO1xuXG4vKiogVGFibGXoqJjms5Xjga7lpInmj5tcbiAqXG4gKiBpbmRlbnTjga/nhKHoppbjgZnjgotcbiAqL1xuY29uc3QgZnJvbVRhYmxlID0gKHRhYmxlOiBUYWJsZSk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGNhcHRpb24gPSBgXFxcXGNhcHRpb257JHtlc2NhcGUodGFibGUuZmlsZU5hbWUpfX1cXFxcbGFiZWx7dGFibGU6JHtlc2NhcGUodGFibGUuZmlsZU5hbWUpfX1gO1xuICAvLyBjb2x1bW5z44Gu5pyA5aSn6ZW344KS6KiI566X44GZ44KLXG4gIGNvbnN0IG1heENvbCA9IE1hdGgubWF4KC4uLnRhYmxlLmNlbGxzLm1hcCgocm93KSA9PiByb3cubGVuZ3RoKSk7XG4gIFxuICAvLyDooYzjgpLlpInmj5vjgZnjgotcbiAgY29uc3Qgcm93cyA9IHRhYmxlLmNlbGxzXG4gICAgLm1hcChcbiAgICAgIChyb3cpID0+IGAgICAgICR7cm93Lm1hcChcbiAgICAgICAgKGNvbHVtbikgPT4gY29sdW1uLm1hcCgobm9kZSkgPT4gZnJvbU5vZGUobm9kZSkpLmpvaW4oXCJcIilcbiAgICAgICkuam9pbihcIiAmIFwiKX1cXFxcXFxcXGBcbiAgICApO1xuICBcbiAgcmV0dXJuIGBcXFxcYmVnaW57dGFibGV9W2h0YnBdXG4gICR7Y2FwdGlvbn1cbiAgXFxcXGNlbnRlcmluZ1xuICBcXFxcYmVnaW57dGFidWxhcn17JHtcImNcIi5yZXBlYXQobWF4Q29sKX19XG4gICAgJHtyb3dzLmxlbmd0aCA9PT0gMCA/XG4gICAgICAgIC8vIOepuuOBruWgtOWQiFxuICAgICAgICBcIlwiIDpcbiAgICAgICAgcm93cy5sZW5ndGggPT09IDEgP1xuICAgICAgICAgIC8vIOS4gOihjOOBruOBv+OBruWgtOWQiOOBr1xcbWlkcnVsZeOCkuWFpeOCjOOBquOBhFxuICAgICAgICAgIGAgICAgXFxcXHRvcHJ1bGVcbiR7cm93cy5qb2luKFwiXFxuXCIpfVxuICAgIFxcXFxib3R0b21ydWxlYCA6XG4gICAgICAgICBgICAgIFxcXFx0b3BydWxlXG4ke3Jvd3NbMF19XG4gICAgXFxcXG1pZHJ1bGVcbiR7cm93cy5zbGljZSgxKS5qb2luKFwiXFxuXCIpfVxuICAgIFxcXFxib3R0b21ydWxlYFxuICAgIH1cbiAgXFxcXGVuZHt0YWJ1bGFyfVxuXFxcXGVuZHt0YWJsZX1gO1xufTtcblxuLyoqIOihjOOBruWkieaPmyAqL1xuY29uc3QgZnJvbUxpbmUgPSAobGluZTogTGluZSk6IHN0cmluZyA9PlxuICBsaW5lLm5vZGVzLm1hcCgobm9kZSkgPT4gZnJvbU5vZGUobm9kZSkpLmpvaW4oXCJcIik7XG4gIFxuLyoqIE5vZGXjgpLlpInmj5vjgZnjgosgKi9cbmNvbnN0IGZyb21Ob2RlID0gKG5vZGU6IE5vZGVUeXBlKTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICBjYXNlIFwicXVvdGVcIjpcbiAgICAgIHJldHVybiBgXFxcXGJlZ2lue3F1b3RlfVxuJHtpbmRlbnQobm9kZS5ub2Rlcy5tYXAoKG5vZGUpID0+IGZyb21Ob2RlKG5vZGUpKS5qb2luKFwiXCIpLCAyKX1cblxcXFxlbmR7cXVvdGV9YDtcbiAgICBjYXNlIFwiaW1hZ2VcIjpcbiAgICBjYXNlIFwic3Ryb25nSW1hZ2VcIjpcbiAgICAgIHJldHVybiBgXFxcXGJlZ2lue2ZpZ3VyZX1baGJ0cF1cbiAgaWFtZ2U6XFxcXHVybHske25vZGUuc3JjfX1cblxcXFxlbmR7ZmlndXJlfWA7XG4gICAgY2FzZSBcImljb25cIjpcbiAgICBjYXNlIFwic3Ryb25nSWNvblwiOlxuICAgICAgcmV0dXJuIGBcXFxcdGV4dGl0eyR7ZXNjYXBlKG5vZGUucGF0aCl9fWA7XG4gICAgY2FzZSBcInN0cm9uZ1wiOlxuICAgICByZXR1cm4gYFxcXFx0ZXh0YmZ7JHtub2RlLm5vZGVzLm1hcCgobm9kZSkgPT4gZnJvbU5vZGUobm9kZSkpLmpvaW4oXCJcIil9fWA7XG4gICAgY2FzZSBcImZvcm11bGFcIjpcbiAgICAgIHJldHVybiBgJCR7bm9kZS5mb3JtdWxhfSRgO1xuICAgIGNhc2UgXCJkZWNvcmF0aW9uXCI6IHtcbiAgICAgIGxldCByZXN1bHQgPSBub2RlLm5vZGVzLm1hcCgobm9kZSkgPT4gZnJvbU5vZGUobm9kZSkpLmpvaW4oXCJcIik7XG4gICAgICBpZiAobm9kZS5kZWNvcy5pbmNsdWRlcyhcIi9cIikpIHJlc3VsdCA9IGBcXFxcdGV4dGl0eyR7cmVzdWx0fX1gO1xuICAgICAgaWYgKG5vZGUuZGVjb3Muc29tZSgoZGVjbykgPT4gL1xcKi0vLnRlc3QoZGVjb1swXSkpKSB7XG4gICAgICAgIHJlc3VsdCA9IGBcXFxcdGV4dGJmeyR7cmVzdWx0fX1gO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUuZGVjb3MuaW5jbHVkZXMoXCJfXCIpKSByZXN1bHQgPSBgXFxcXHVsaW5leyR7cmVzdWx0fX1gO1xuICAgICAgaWYgKG5vZGUuZGVjb3MuaW5jbHVkZXMoXCItXCIpKSByZXN1bHQgPSBgXFxcXHNvdXR7JHtyZXN1bHR9fWA7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBjYXNlIFwibnVtYmVyTGlzdFwiOlxuICAgICAgcmV0dXJuIGAke25vZGUubnVtYmVyfS4gJHtub2RlLm5vZGVzLm1hcCgobm9kZSkgPT4gZnJvbU5vZGUobm9kZSkpLmpvaW4oXCJcIil9YDtcbiAgICBjYXNlIFwiaGVscGZlZWxcIjpcbiAgICAgIHJldHVybiBgXFxcXGxzdGlubGluZSE/ICR7ZXNjYXBlKG5vZGUudGV4dCl9IWA7XG4gICAgY2FzZSBcImNvZGVcIjpcbiAgICAgIHJldHVybiBgXFxcXGxzdGlubGluZSEke2VzY2FwZShub2RlLnRleHQpfSFgO1xuICAgIGNhc2UgXCJjb21tYW5kTGluZVwiOlxuICAgICAgcmV0dXJuIGBcXFxcbHN0aW5saW5lISR7ZXNjYXBlKG5vZGUuc3ltYm9sKX0gJHtlc2NhcGUobm9kZS50ZXh0KX0hYDtcbiAgICBjYXNlIFwibGlua1wiOlxuICAgICAgcmV0dXJuIG5vZGUucGF0aFR5cGUgPT09IFwiYWJzb2x1dGVcIiA/XG4gICAgICAgIG5vZGUuY29udGVudCA9PT0gXCJcIiA/XG4gICAgICAgICAgYFxcXFx1cmx7JHtub2RlLmhyZWZ9fWAgOlxuICAgICAgICAgIGBcXFxcaHJlZnske25vZGUuaHJlZn19eyR7ZXNjYXBlKG5vZGUuY29udGVudCl9fWAgOlxuICAgICAgICBlc2NhcGUobm9kZS5ocmVmKTtcbiAgICBjYXNlIFwiZ29vZ2xlTWFwXCI6XG4gICAgICByZXR1cm4gYFxcXFxocmVmeyR7bm9kZS51cmx9fXske2VzY2FwZShub2RlLnBsYWNlKX19YDtcbiAgICBjYXNlIFwiaGFzaFRhZ1wiOlxuICAgICAgcmV0dXJuIGVzY2FwZShgIyR7bm9kZS5ocmVmfWApO1xuICAgIGNhc2UgXCJibGFua1wiOlxuICAgIGNhc2UgXCJwbGFpblwiOlxuICAgICAgcmV0dXJuIGVzY2FwZShub2RlLnRleHQpO1xuICB9XG59O1xuXG5jb25zdCBleHRlbnNpb25EYXRhID0gW1xuICB7XG4gICAgZXh0ZW5zaW9uczogW1wiamF2YXNjcmlwdFwiLCBcImpzXCJdLFxuICAgIGZpbGVUeXBlOiBcImphdmFzY3JpcHRcIixcbiAgfSxcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcInR5cGVzY3JpcHRcIiwgXCJ0c1wiXSxcbiAgICBmaWxlVHlwZTogXCJ0eXBlc2NyaXB0XCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJjcHBcIiwgXCJocHBcIl0sXG4gICAgZmlsZVR5cGU6IFwiQysrXCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJjXCIsIFwiY2NcIiwgXCJoXCJdLFxuICAgIGZpbGVUeXBlOiBcIkNcIixcbiAgfSxcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcImNzXCIsIFwiY3NoYXJwXCJdLFxuICAgIGZpbGVUeXBlOiBcImNzXCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJtYXJrZG93blwiLCBcIm1kXCJdLFxuICAgIGZpbGVUeXBlOiBcIm1hcmtkb3duXCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJodG1cIiwgXCJodG1sXCJdLFxuICAgIGZpbGVUeXBlOiBcImh0bWxcIixcbiAgfSxcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcImpzb25cIl0sXG4gICAgZmlsZVR5cGU6IFwianNvblwiLFxuICB9LFxuICB7XG4gICAgZXh0ZW5zaW9uczogW1wieG1sXCJdLFxuICAgIGZpbGVUeXBlOiBcInhtbFwiLFxuICB9LFxuICB7XG4gICAgZXh0ZW5zaW9uczogW1wieWFtbFwiLCBcInltbFwiXSxcbiAgICBmaWxlVHlwZTogXCJ5YW1sXCIsXG4gIH0sXG4gIHtcbiAgICBleHRlbnNpb25zOiBbXCJ0b21sXCJdLFxuICAgIGZpbGVUeXBlOiBcInRvbWxcIixcbiAgfSxcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcImluaVwiXSxcbiAgICBmaWxlVHlwZTogXCJpbmlcIixcbiAgfSxcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcInRleFwiLCBcInN0eVwiXSxcbiAgICBmaWxlVHlwZTogXCJ0ZXhcIixcbiAgfSxcbiAge1xuICAgIGV4dGVuc2lvbnM6IFtcInN2Z1wiXSxcbiAgICBmaWxlVHlwZTogXCJzdmdcIixcbiAgfSxcbl07XG5cbi8qKiDjg5XjgqHjgqTjg6vlkI3jga7mi6HlvLXlrZDjgYvjgonoqIDoqp7jgpLlj5blvpfjgZnjgosgKi9cbmNvbnN0IGdldEZpbGVUeXBlID0gKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBmaWxlbmFtZUV4dGVudGlvbiA9IGZpbGVuYW1lLnJlcGxhY2UoL14uKlxcLihcXHcrKSQvLCBcIiQxXCIpO1xuICByZXR1cm4gZXh0ZW5zaW9uRGF0YVxuICAgIC5maW5kKChkYXRhKSA9PiBkYXRhLmV4dGVuc2lvbnMuaW5jbHVkZXMoZmlsZW5hbWVFeHRlbnRpb24pKT8uZmlsZVR5cGUgPz9cbiAgICBcIlwiO1xufTtcblxuY29uc3QgZXNjYXBlID0odGV4dDogc3RyaW5nKTogc3RyaW5nID0+IHRleHRcbiAgLnJlcGxhY2VBbGwoXCJcXFxcXCIsIFwiXFxcXHRleHRiYWNrc2xhc2ggXCIpXG4gIC5yZXBsYWNlQWxsKFwiI1wiLCBcIlxcXFwjXCIpXG4gIC5yZXBsYWNlQWxsKFwiJVwiLCBcIlxcXFwlXCIpXG4gIC5yZXBsYWNlQWxsKFwiJFwiLCBcIlxcXFwkXCIpXG4gIC5yZXBsYWNlQWxsKFwiJlwiLCBcIlxcXFwmXCIpXG4gIC5yZXBsYWNlQWxsKFwiflwiLCBcIlxcXFx0ZXh0YXNjaWl0aWxkZSBcIilcbiAgLnJlcGxhY2VBbGwoXCJeXCIsIFwiXFxcXHRleHRhc2NpaWNpcmN1bSBcIilcbiAgLnJlcGxhY2VBbGwoXCJfXCIsIFwiXFxcXF9cIilcbiAgLnJlcGxhY2VBbGwoXCJ7XCIsIFwiXFxcXHtcIilcbiAgLnJlcGxhY2VBbGwoXCJ9XCIsIFwiXFxcXH1cIilcbiAgLnJlcGxhY2VBbGwoXCJ8XCIsIFwiXFxcXHRleHRiYXIgXCIpXG4gIC5yZXBsYWNlQWxsKFwiPFwiLCBcIlxcXFx0ZXh0bGVzcyBcIilcbiAgLnJlcGxhY2VBbGwoXCI+XCIsIFwiXFxcXHRleHRncmVhdGVyIFwiKTtcbiAgIFx0XG5jb25zdCBpbmRlbnQgPSAodGV4dDogc3RyaW5nLCBpbmRlbnROdW06IG51bWJlcik6IHN0cmluZyA9PlxuICB0ZXh0LnNwbGl0KFwiXFxuXCIpLm1hcCgobGluZSkgPT5gJHtcIiBcIi5yZXBlYXQoaW5kZW50TnVtKX0ke2xpbmV9YCkuam9pbihcIlxcblwiKTtcbiIsICJpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCIuLi9zY3JhcGJveC1wYXJzZXIvbW9kLnRzXCI7XG5pbXBvcnQgeyBjb252ZXJ0IH0gZnJvbSBcIi4uL1NjcmFwYm946KiY5rOV44KSVGVY6KiY5rOV44Gr5aSJ5o+b44GZ44KLU2NyaXB0L21vZC50c1wiO1xuaW1wb3J0IHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vc2NyYXBib3gtanAlMkZ0eXBlcy91c2Vyc2NyaXB0LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gIHRpdGxlOiBcIlRlWFwiLFxuICBvbkNsaWNrOiAodGV4dCkgPT4ge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbnZlcnQocGFyc2UodGV4dCkpKVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIGFsZXJ0KGAke2UubmFtZX0gJHtlLm1lc3NhZ2V9XFxuXFxuJHtlLnN0YWNrfWApO1xuICAgICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSxcbn0pO1xuIiwgImV4cG9ydCBjb25zdCBBUElST09UID0gXCJodHRwczovL2tlaWNoby5oZXJva3VhcHAuY29tL2FwaS9cIjtcbiIsICJpbXBvcnQgeyBBUElST09UIH0gZnJvbSBcIi4vQVBJUk9PVC50c1wiO1xuaW1wb3J0IHsgR01GZXRjaE5vdEF2YWlsYWJsZUVycm9yLCBSZXNwb25zZUVycm9yLCBSZXN1bHQgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIEdNX2ZldGNoOiAodHlwZW9mIGZldGNoKSB8IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFuc3dlciB7XG4gIHRleHQ6IHN0cmluZztcbiAgYnV0dG9uczogc3RyaW5nW107XG4gIGNhbklucHV0OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgYXNrID0gYXN5bmMgKFxuICB0ZXh0OiBzdHJpbmcsXG4gIHRhbGtJZDogc3RyaW5nLFxuKTogUHJvbWlzZTxSZXN1bHQ8QW5zd2VyLCBSZXNwb25zZUVycm9yIHwgR01GZXRjaE5vdEF2YWlsYWJsZUVycm9yPj4gPT4ge1xuICBpZiAoIXdpbmRvdy5HTV9mZXRjaCkge1xuICAgIHJldHVybiB7IG9rOiBmYWxzZSwgdmFsdWU6IHsgbmFtZTogXCJHTUZldGNoTm90QXZhaWxhYmxlRXJyb3JcIiB9IH07XG4gIH1cblxuICBjb25zdCByZXMgPSBhd2FpdCB3aW5kb3cuR01fZmV0Y2goYCR7QVBJUk9PVH13ZWIvYCwge1xuICAgIG1vZGU6IFwiY29yc1wiLFxuICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyB1c2VyOiBcIm5vYm9keVwiLCB0YWxrOiB0YWxrSWQsIHRleHQgfSksXG4gICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICB9KTtcblxuICBpZiAoIXJlcy5vaykgcmV0dXJuIHsgb2s6IGZhbHNlLCB2YWx1ZTogeyBuYW1lOiBcIlJlc3BvbnNlRXJyb3JcIiwgcmVzIH0gfTtcblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgcmV0dXJuIHtcbiAgICBvazogdHJ1ZSxcbiAgICB2YWx1ZTogeyB0ZXh0OiBkYXRhLnRleHQsIGJ1dHRvbnM6IGRhdGEuYnV0dG9ucywgY2FuSW5wdXQ6IGRhdGEuY2FuX2lucHV0IH0sXG4gIH07XG59O1xuIiwgImltcG9ydCB7IGVkaXRvciwgdGFrZUN1cnNvciB9IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtZG9tLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uIHtcbiAgdGV4dDogc3RyaW5nO1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3B1cE1lbnVCYXIge1xuICByZW5kZXI6ICguLi5idXR0b25zOiBCdXR0b25bXSkgPT4gdm9pZDtcbiAgdmlzaWJsZTogKCkgPT4gYm9vbGVhbjtcbiAgb3BlbjogKCkgPT4gdm9pZDtcbiAgY2xvc2U6ICgpID0+IHZvaWQ7XG4gIHRvZ2dsZTogKCkgPT4gdm9pZDtcbiAgZGlzcG9zZTogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBQb3B1cE1lbnXjgYvjgonkuInop5LlvaLjgpLlj5bjgorpmaTjgYTjgZ/jgojjgYbjgarjgoLjga7jgpLjgqvjg7zjgr3jg6vjga7jgZnjgZDkuIvjgavooajnpLrjgZnjgotcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVBvcHVwTWVudUJhciA9ICgpID0+IHtcbiAgY29uc3QgeyBwb3B1cE1lbnUsIHJlbmRlciB9ID0gY3JlYXRlUG9wdXBDb250YWluZXIoKTtcbiAgZWRpdG9yKCk/LmFwcGVuZD8uKHBvcHVwTWVudSk7XG5cbiAgY29uc3QgY3Vyc29yID0gdGFrZUN1cnNvcigpO1xuICBjb25zdCBjYWxsYmFjayA9ICgpID0+IHtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgY29uc3QgY3Vyc29yRE9NID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcbiAgICAgICAgXCJjdXJzb3JcIixcbiAgICAgIClbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBwb3B1cE1lbnUuc3R5bGUudG9wID0gYCR7XG4gICAgICAgIHBhcnNlSW50KGN1cnNvckRPTS5zdHlsZS50b3ApICtcbiAgICAgICAgcGFyc2VJbnQoY3Vyc29yRE9NLnN0eWxlLmhlaWdodCkgKyA0XG4gICAgICB9cHhgO1xuICAgIH0pO1xuICB9O1xuICBjdXJzb3IuYWRkQ2hhbmdlTGlzdGVuZXIoY2FsbGJhY2spO1xuXG4gIHJldHVybiB7XG4gICAgcmVuZGVyLFxuICAgIHZpc2libGU6ICgpID0+ICFwb3B1cE1lbnUuaGlkZGVuLFxuICAgIG9wZW46ICgpID0+IHBvcHVwTWVudS5oaWRkZW4gPSBmYWxzZSxcbiAgICBjbG9zZTogKCkgPT4gcG9wdXBNZW51LmhpZGRlbiA9IHRydWUsXG4gICAgdG9nZ2xlOiAoKSA9PiBwb3B1cE1lbnUuaGlkZGVuID0gIXBvcHVwTWVudS5oaWRkZW4sXG4gICAgZGlzcG9zZTogKCkgPT4ge1xuICAgICAgcG9wdXBNZW51LnJlbW92ZSgpO1xuICAgICAgY3Vyc29yLnJlbW92ZUNoYW5nZUxpc3RlbmVyKGNhbGxiYWNrKTtcbiAgICB9LFxuICB9O1xufTtcblxuY29uc3QgY3JlYXRlUG9wdXBDb250YWluZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHBvcHVwTWVudSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGNvbnN0IHNoYWRvd1Jvb3QgPSBwb3B1cE1lbnUuYXR0YWNoU2hhZG93KHsgbW9kZTogXCJvcGVuXCIgfSk7XG4gIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gYFxuICAgIDxzdHlsZT5cbiAgICAgIDpob3N0IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiAwcHg7XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgIHotaW5kZXg6MzAwO1xuICAgICAgICB1c2VyLXNlbGVjdDpub25lO1xuICAgICAgICBmb250LWZhbWlseTpcIk9wZW4gU2Fuc1wiLEhlbHZldGljYSxBcmlhbCxcIkhpcmFnaW5vIFNhbnNcIixzYW5zLXNlcmlmO1xuICAgICAgICBwb2ludGVyLWV2ZW50czpub25lXG4gICAgICB9XG4gICAgICAuYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIG1heC13aWR0aDo3MHZ3O1xuICAgICAgICBtaW4td2lkdGg6ODBweDtcbiAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IzExMTtcbiAgICAgICAgcGFkZGluZzowIDFweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czo0cHg7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOmF1dG9cbiAgICAgIH1cbiAgICAgIGh0bWxbZGF0YS1vcyo9J2FuZHJvaWQnXSAuYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDo5MHZ3XG4gICAgICB9XG4gICAgICBodG1sW2RhdGEtb3MqPSdpb3MnXSAuYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDo5MHZ3XG4gICAgICB9XG4gICAgICAuYnV0dG9uIHtcbiAgICAgICAgZm9udC1zaXplOjExcHg7XG4gICAgICAgIGNvbG9yOiNlZWU7XG4gICAgICAgIGN1cnNvcjpwb2ludGVyO1xuICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgcGFkZGluZzowIDVweFxuICAgICAgfVxuICAgICAgLmJ1dHRvbjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgYm9yZGVyOjA7XG4gICAgICAgIGJvcmRlci1sZWZ0OjFweCBzb2xpZCAjZWVlXG4gICAgICB9XG4gICAgICAuYnV0dG9uLnNlbGVjdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjojMjIyO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lXG4gICAgICB9XG4gICAgICBodG1sW2RhdGEtb3MqPSdhbmRyb2lkJ10gLmJ1dHRvbiB7XG4gICAgICAgIGZvbnQtc2l6ZToxM3B4O1xuICAgICAgICBwYWRkaW5nOjZweDtcbiAgICAgICAgbWluLXdpZHRoOjEydndcbiAgICAgIH1cbiAgICAgIGh0bWxbZGF0YS1vcyo9J2lvcyddIC5idXR0b257XG4gICAgICAgIGZvbnQtc2l6ZToxM3B4O1xuICAgICAgICBwYWRkaW5nOjZweDtcbiAgICAgICAgbWluLXdpZHRoOjEydndcbiAgICAgIH1cbiAgICAgIC5idXR0b24gZGl2Lmljb24ge1xuICAgICAgICBoZWlnaHQ6MmVtO1xuICAgICAgICBtYXgtd2lkdGg6MTBlbTtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIG92ZXJmbG93OmhpZGRlbjtcbiAgICAgICAgbWFyZ2luLWxlZnQ6MXB4O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjp0b3BcbiAgICAgIH1cbiAgICAgIC5idXR0b24gZGl2Lmljb24gaW1nIHtcbiAgICAgICAgbWF4LWhlaWdodDoxMDAlO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjp1bnNldFxuICAgICAgfVxuICAgIDwvc3R5bGU+XG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250YWluZXJcIj48L2Rpdj5cbiAgYDtcbiAgY29uc3QgYnV0dG9uQ29udGFpbmVyID0gc2hhZG93Um9vdC5sYXN0RWxlbWVudENoaWxkITtcbiAgcmV0dXJuIHtcbiAgICBwb3B1cE1lbnUsXG4gICAgcmVuZGVyOiAoLi4uYnV0dG9uczogQnV0dG9uW10pID0+IHtcbiAgICAgIGJ1dHRvbkNvbnRhaW5lci50ZXh0Q29udGVudCA9IFwiXCI7XG4gICAgICBidXR0b25Db250YWluZXIuYXBwZW5kKC4uLmJ1dHRvbnMubWFwKCh7IHRleHQsIG9uQ2xpY2sgfSkgPT4ge1xuICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBkaXYuY2xhc3NMaXN0LmFkZChcImJ1dHRvblwiKTtcbiAgICAgICAgZGl2LnRleHRDb250ZW50ID0gdGV4dDtcbiAgICAgICAgaWYgKG9uQ2xpY2spIGRpdi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4gb25DbGljaygpKTtcbiAgICAgICAgcmV0dXJuIGRpdjtcbiAgICAgIH0pKTtcbiAgICB9LFxuICB9O1xufTtcbiIsICJpbXBvcnQgeyBBUElST09UIH0gZnJvbSBcIi4vQVBJUk9PVC50c1wiO1xuaW1wb3J0IHsgR01GZXRjaE5vdEF2YWlsYWJsZUVycm9yLCBSZXNwb25zZUVycm9yLCBSZXN1bHQgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIEdNX2ZldGNoOiAodHlwZW9mIGZldGNoKSB8IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBNb2RlID0gXCJub3JtYWxcIiB8IFwiZW1wYXRoeV93cml0aW5nXCIgfCBcIktQVFwiIHwgXCJ2YWx1ZV9oeXBvdGhlc2lzXCI7XG5cbmV4cG9ydCBjb25zdCBnZXROZXdUYWxrSWQgPSBhc3luYyAoXG4gIG1vZGU6IE1vZGUgPSBcIm5vcm1hbFwiLFxuKTogUHJvbWlzZTxSZXN1bHQ8c3RyaW5nLCBSZXNwb25zZUVycm9yIHwgR01GZXRjaE5vdEF2YWlsYWJsZUVycm9yPj4gPT4ge1xuICBpZiAoIXdpbmRvdy5HTV9mZXRjaCkge1xuICAgIHJldHVybiB7IG9rOiBmYWxzZSwgdmFsdWU6IHsgbmFtZTogXCJHTUZldGNoTm90QXZhaWxhYmxlRXJyb3JcIiB9IH07XG4gIH1cblxuICBjb25zdCByZXMgPSBhd2FpdCB3aW5kb3cuR01fZmV0Y2goYCR7QVBJUk9PVH13ZWIvY3JlYXRlLz9tb2RlPSR7bW9kZX1gLCB7XG4gICAgbW9kZTogXCJjb3JzXCIsXG4gIH0pO1xuXG4gIHJldHVybiByZXMub2tcbiAgICA/IHsgb2s6IHRydWUsIHZhbHVlOiBhd2FpdCByZXMudGV4dCgpIH1cbiAgICA6IHsgb2s6IGZhbHNlLCB2YWx1ZTogeyBuYW1lOiBcIlJlc3BvbnNlRXJyb3JcIiwgcmVzIH0gfTtcbn07XG4iLCAiZXhwb3J0IGNvbnN0IG1ha2VTaGFyZVVSTCA9ICh0YWxrSWQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICBgaHR0cHM6Ly9rZWljaG8ubmV0bGlmeS5hcHAvI3RhbGs9JHt0YWxrSWR9YDtcbiIsICIvKiogcGFyc2UgYSByZXBseSBieSBrZWljaG9ib3QgYW5kIGNvbnZlcnQgaXQgdG8gU2NyYXBib3ggc3ludGF4LlxuICpcbiAqIEBwYXJhbSByZXBseSByZXBseSBieSBrZWljaG9ib3RcbiAqIEByZXR1cm4gU2NyYXBib3ggc3ludGF4XG4gKi9cbmV4cG9ydCBjb25zdCBxdWVzdGlvblRvU2NyYXBib3ggPSAocXVlc3Rpb246IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHNwbGl0dGVkID0gcXVlc3Rpb24uc3BsaXQoXCJcXG5cXG5cIik7XG4gIGNvbnN0IHEgPSBzcGxpdHRlZFsxXSA/PyBzcGxpdHRlZFswXTtcbiAgY29uc3QgcXVvdGUgPSBxdWVzdGlvbiA9PT0gc3BsaXR0ZWRbMF0gPyBcIlwiIDogc3BsaXR0ZWRbMF07XG4gIHJldHVybiBxdW90ZSA/IFtxdW90ZS50cmltKCksIHFdLmpvaW4oXCJcXG5cIikgOiBxO1xufTtcbiIsICJpbXBvcnQgeyBpbnNlcnRUZXh0LCB0YWtlQ3Vyc29yLCB0YWtlU2VsZWN0aW9uIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1kb20udHNcIjtcbmltcG9ydCB7IEJhc2VMaW5lIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1zdGQudHNcIjtcblxuLyoqIGBiYXNlYOOBruS4i+OBq+abuOOBjei+vOOCgCAqL1xuZXhwb3J0IGNvbnN0IHdyaXRlQWZ0ZXIgPSBhc3luYyAoXG4gIHRleHQ6IHN0cmluZyxcbiAgYmFzZTogQmFzZUxpbmUsXG4gIGxpbmVObzogbnVtYmVyLFxuKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3QgY3Vyc29yID0gdGFrZUN1cnNvcigpO1xuXG4gIC8vIOaMv+WFpeS9jee9ruOCkuaOouOBmVxuXG4gIC8vIDEuIGJhc2Xjga5pZOOBqOS4gOiHtOOBmeOCi+ihjFxuICBsZXQgaW5zZXJ0Tm8gPSBjdXJzb3IubGluZXMuZmluZEluZGV4KChsaW5lKSA9PiBsaW5lLmlkID09PSBiYXNlLmlkKTtcbiAgaWYgKGluc2VydE5vIDwgMCkge1xuICAgIC8vIDIuIGJhc2Xjga50ZXh044Go5LiA6Ie044GZ44KL6KGMXG4gICAgaW5zZXJ0Tm8gPSBjdXJzb3IubGluZXMuZmluZEluZGV4KChsaW5lKSA9PiBsaW5lLnRleHQgPT09IGJhc2UudGV4dCk7XG4gIH1cbiAgaWYgKGluc2VydE5vIDwgMCkge1xuICAgIC8vIDMuIGJhc2Xjga7ooYznlarlj7fjgYvjgonmjqjlrprjgZnjgotcbiAgICBpbnNlcnRObyA9IE1hdGgubWluKGxpbmVObywgTWF0aC5tYXgoMCwgY3Vyc29yLmxpbmVzLmxlbmd0aCAtIDEpKTtcbiAgfVxuXG4gIC8v5pu444GN6L6844KAXG4gIGNvbnN0IHByZXZUZXh0ID0gY3Vyc29yLmxpbmVzW2luc2VydE5vXS50ZXh0O1xuICB0YWtlU2VsZWN0aW9uKCkuY2xlYXIoKTtcbiAgY3Vyc29yLnNldFBvc2l0aW9uKHsgbGluZTogaW5zZXJ0Tm8sIGNoYXI6IFsuLi5wcmV2VGV4dF0ubGVuZ3RoIH0pO1xuICBhd2FpdCBpbnNlcnRUZXh0KGBcXG4ke3RleHR9YCk7XG5cbiAgcmV0dXJuIGN1cnNvci5nZXRQb3NpdGlvbigpLmxpbmU7XG59O1xuIiwgImltcG9ydCB7IE5vZGUsIHBhcnNlIH0gZnJvbSBcIi4vZGVwcy9zY3JhcGJveC1wYXJzZXIudHNcIjtcblxuLyoqIHB1cmdlIHNjcmFwYm94IHN5bnRheFxuICpcbiAqIEBwYXJhbSB0ZXh0IHRleHQgdG8gcHVyZ2VcbiAqIEByZXR1cm4gcGxhaW4gdGV4dFxuICovXG5leHBvcnQgY29uc3QgbWFrZVBsYWluID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICBwYXJzZSh0ZXh0LCB7IGhhc1RpdGxlOiBmYWxzZSB9KVxuICAgIC5tYXAoKGJsb2NrKSA9PiB7XG4gICAgICBpZiAoYmxvY2sudHlwZSA9PT0gXCJ0aXRsZVwiKSByZXR1cm4gYmxvY2sudGV4dC50cmltRW5kKCk7XG4gICAgICBjb25zdCBpbmRlbnQgPSBcIiBcIi5yZXBlYXQoYmxvY2suaW5kZW50KTtcbiAgICAgIHN3aXRjaCAoYmxvY2sudHlwZSkge1xuICAgICAgICBjYXNlIFwiY29kZUJsb2NrXCI6XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIGAke2luZGVudH0ke2Jsb2NrLmZpbGVOYW1lfWAsXG4gICAgICAgICAgICAuLi5ibG9jay5jb250ZW50LnNwbGl0KFwiXFxuXCIpLm1hcCgobGluZSkgPT4gYCR7aW5kZW50fSAke2xpbmV9YCksXG4gICAgICAgICAgXS5qb2luKFwiXFxuXCIpLnRyaW1FbmQoKTtcbiAgICAgICAgY2FzZSBcInRhYmxlXCI6XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIGAke2luZGVudH0ke2Jsb2NrLmZpbGVOYW1lfWAsXG4gICAgICAgICAgICAuLi5ibG9jay5jZWxscy5tYXAoKHJvdykgPT5cbiAgICAgICAgICAgICAgYCR7aW5kZW50fSAke1xuICAgICAgICAgICAgICAgIHJvdy5mbGF0TWFwKChjZWxsKSA9PiBjZWxsLm1hcCgobm9kZSkgPT4gcGxhaW5Ob2RlKG5vZGUpKSkuam9pbihcbiAgICAgICAgICAgICAgICAgIFwiXFx0XCIsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdLmpvaW4oXCJcXG5cIikudHJpbUVuZCgpO1xuICAgICAgICBjYXNlIFwibGluZVwiOlxuICAgICAgICAgIHJldHVybiBgJHtpbmRlbnR9JHtcbiAgICAgICAgICAgIGJsb2NrLm5vZGVzLm1hcCgobm9kZSkgPT4gcGxhaW5Ob2RlKG5vZGUpKS5qb2luKFwiXCIpXG4gICAgICAgICAgfWAudHJpbUVuZCgpO1xuICAgICAgfVxuICAgIH0pLmpvaW4oXCJcXG5cIik7XG5cbmNvbnN0IHBsYWluTm9kZSA9IChub2RlOiBOb2RlKTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICBjYXNlIFwicXVvdGVcIjpcbiAgICAgIHJldHVybiBgPiAke25vZGUubm9kZXMubWFwKChub2RlKSA9PiBwbGFpbk5vZGUobm9kZSkpLmpvaW4oXCJcIil9YDtcbiAgICBjYXNlIFwiaGVscGZlZWxcIjpcbiAgICBjYXNlIFwiY29tbWFuZExpbmVcIjpcbiAgICAgIHJldHVybiBub2RlLnJhdztcbiAgICBjYXNlIFwic3Ryb25nSW1hZ2VcIjpcbiAgICBjYXNlIFwiaW1hZ2VcIjpcbiAgICBjYXNlIFwic3Ryb25nSWNvblwiOlxuICAgIGNhc2UgXCJpY29uXCI6XG4gICAgY2FzZSBcImdvb2dsZU1hcFwiOlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgY2FzZSBcInN0cm9uZ1wiOlxuICAgIGNhc2UgXCJkZWNvcmF0aW9uXCI6XG4gICAgY2FzZSBcIm51bWJlckxpc3RcIjpcbiAgICAgIHJldHVybiBub2RlLm5vZGVzLm1hcCgobm9kZSkgPT4gcGxhaW5Ob2RlKG5vZGUpKS5qb2luKFwiXCIpO1xuICAgIGNhc2UgXCJmb3JtdWxhXCI6XG4gICAgICByZXR1cm4gYFxcXFwoJHtub2RlLmZvcm11bGF9XFxcXClgO1xuICAgIGNhc2UgXCJjb2RlXCI6XG4gICAgICByZXR1cm4gYCAke25vZGUudGV4dH0gYDtcbiAgICBjYXNlIFwiYmxhbmtcIjpcbiAgICBjYXNlIFwicGxhaW5cIjpcbiAgICAgIHJldHVybiBub2RlLnJhdztcbiAgICBjYXNlIFwiaGFzaFRhZ1wiOlxuICAgICAgcmV0dXJuIG5vZGUuaHJlZjtcbiAgICBjYXNlIFwibGlua1wiOlxuICAgICAgc3dpdGNoIChub2RlLnBhdGhUeXBlKSB7XG4gICAgICAgIGNhc2UgXCJhYnNvbHV0ZVwiOlxuICAgICAgICAgIHJldHVybiBub2RlLmNvbnRlbnQgPyBgICR7bm9kZS5jb250ZW50fSBgIDogXCJcIjtcbiAgICAgICAgY2FzZSBcInJvb3RcIjpcbiAgICAgICAgICByZXR1cm4gbm9kZS5ocmVmLnNwbGl0KFwiL1wiKS5wb3AoKSA/PyBcIlwiO1xuICAgICAgICBjYXNlIFwicmVsYXRpdmVcIjpcbiAgICAgICAgICByZXR1cm4gbm9kZS5ocmVmO1xuICAgICAgfVxuICB9XG59O1xuIiwgIi8qKiBEZXRlY3Qgd2hldGhlciBgdGV4dGAgaXMgYSBjb21tZW50IG9yIG5vdCAqL1xuZXhwb3J0IGNvbnN0IGlzQ29tbWVudCA9ICh0ZXh0OiBzdHJpbmcpOiBib29sZWFuID0+IC9eWyjvvIhdLy50ZXN0KHRleHQpO1xuIiwgImltcG9ydCB7IEFuc3dlciwgYXNrIH0gZnJvbSBcIi4vYXNrLnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3B1cE1lbnVCYXIgfSBmcm9tIFwiLi9wb3B1cEJhci50c1wiO1xuaW1wb3J0IHsgaW5zZXJ0VGV4dCwgU2NyYXBib3gsIHRha2VTdG9yZXMgfSBmcm9tIFwiLi9kZXBzL3NjcmFwYm94LWRvbS50c1wiO1xuaW1wb3J0IHtcbiAgQmFzZUxpbmUsXG4gIGdldEluZGVudENvdW50LFxuICBnZXRJbmRlbnRMaW5lQ291bnQsXG59IGZyb20gXCIuL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5pbXBvcnQgeyBnZXROZXdUYWxrSWQsIE1vZGUgfSBmcm9tIFwiLi9nZXROZXdUYWxrSWQudHNcIjtcbmltcG9ydCB7IG1ha2VTaGFyZVVSTCB9IGZyb20gXCIuL21ha2VTaGFyZVVSTC50c1wiO1xuaW1wb3J0IHsgcXVlc3Rpb25Ub1NjcmFwYm94IH0gZnJvbSBcIi4vcXVlc3Rpb25Ub1NjcmFwYm94LnRzXCI7XG5pbXBvcnQgeyB3cml0ZUFmdGVyIH0gZnJvbSBcIi4vd3JpdGVBZnRlci50c1wiO1xuaW1wb3J0IHsgbWFrZVBsYWluIH0gZnJvbSBcIi4vbWFrZVBsYWluLnRzXCI7XG5pbXBvcnQgeyBpc0NvbW1lbnQgfSBmcm9tIFwiLi9pc0NvbW1lbnQudHNcIjtcbmltcG9ydCB7IEdNRmV0Y2hOb3RBdmFpbGFibGVFcnJvciwgUmVzcG9uc2VFcnJvciwgUmVzdWx0IH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0VGFsa0luaXQge1xuICB0YWxrSWQ/OiBzdHJpbmc7XG4gIGJvdEljb24/OiBzdHJpbmc7XG4gIG1vZGU/OiBNb2RlO1xuICBlbnRpcmU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0VGFsa1Jlc3VsdCB7XG4gIGFzazogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgb3BlbjogKCkgPT4gdm9pZDtcbiAgY2xvc2U6ICgpID0+IHZvaWQ7XG4gIHZpc2libGU6ICgpID0+IGJvb2xlYW47XG4gIGV4aXQ6ICgpID0+IHZvaWQ7XG4gIG9uRXhpdDogKGxpc3RlbmVyOiAoKSA9PiB2b2lkKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3Qgc3RhcnRUYWxrID0gYXN5bmMgKFxuICBpbml0PzogU3RhcnRUYWxrSW5pdCxcbik6IFByb21pc2U8U3RhcnRUYWxrUmVzdWx0IHwgdW5kZWZpbmVkPiA9PiB7XG4gIGNvbnN0IGxpbmVzID0gc2NyYXBib3guUGFnZS5saW5lcztcbiAgaWYgKCFsaW5lcykgcmV0dXJuO1xuICBjb25zdCB7IGN1cnNvciwgc2VsZWN0aW9uIH0gPSB0YWtlU3RvcmVzKCk7XG4gIGNvbnN0IHNlbGVjdEFsbCA9IGluaXQ/LmVudGlyZSB8fCBzZWxlY3Rpb24uaGFzU2VsZWN0aW9uQWxsKCk7XG4gIGNvbnN0IGluaXRpYWxUZXh0ID0gc2VsZWN0QWxsXG4gICAgPyBsaW5lcy5tYXAoKGxpbmUpID0+IGxpbmUudGV4dCkuam9pbihcIlxcblwiKVxuICAgIDogc2VsZWN0aW9uLmdldFNlbGVjdGVkVGV4dCgpO1xuXG4gIGNvbnN0IGJvdEljb24gPSBpbml0Py5ib3RJY29uID8/IFwiWy9uaXNoaW8vbmlzYm90Lmljb25dXCI7XG5cbiAgY29uc3QgeyByZW5kZXIsIHZpc2libGUsIG9wZW4sIGNsb3NlLCBkaXNwb3NlIH0gPSBjcmVhdGVQb3B1cE1lbnVCYXIoKTtcbiAgY2xvc2UoKTtcblxuICBjb25zdCBsaXN0ZW5lcnMgPSBuZXcgU2V0PCgpID0+IHZvaWQ+KCk7XG4gIGNvbnN0IGV4aXQgPSAoKSA9PiB7XG4gICAgZGlzcG9zZSgpO1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgbGlzdGVuZXJzKSBsaXN0ZW5lcigpO1xuICB9O1xuICBjb25zdCBvbkV4aXQgPSAobGlzdGVuZXI6ICgpID0+IHZvaWQpID0+IGxpc3RlbmVycy5hZGQobGlzdGVuZXIpO1xuXG4gIGNvbnN0IEV4aXQgPSB7XG4gICAgdGV4dDogXCJFeGl0XCIsXG4gICAgb25DbGljazogZXhpdCxcbiAgfTtcblxuICBsZXQgdGFsa0lkXyA9IGluaXQ/LnRhbGtJZCB8fCBmaW5kVGFsa0lkKGluaXRpYWxUZXh0KSB8fFxuICAgIChzZWxlY3RBbGwgPyBcIlwiIDogZmluZFRhbGtJZChcbiAgICAgIGxpbmVzLnNsaWNlKDAsIDEgKyBjdXJzb3IuZ2V0UG9zaXRpb24oKS5saW5lKS5tYXAoKGxpbmUpID0+IGxpbmUudGV4dClcbiAgICAgICAgLmpvaW4oXCJcXG5cIiksXG4gICAgKSk7XG4gIGNvbnN0IG5ld1RhbGtJZCA9ICF0YWxrSWRfO1xuICBpZiAoIXRhbGtJZF8pIHtcbiAgICBjb25zdCBwZW5kaW5nID0gZ2V0TmV3VGFsa0lkKGluaXQ/Lm1vZGUpO1xuICAgIGxldCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgcmVuZGVyKHsgdGV4dDogXCJTdGFydCB0YWxraW5nLi4uXCIgfSk7XG4gICAgICBvcGVuKCk7XG4gICAgICBsZXQgaSA9IDA7XG4gICAgICB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgcmVuZGVyKHsgdGV4dDogYFN0YXJ0IHRhbGtpbmcke1wiLlwiLnJlcGVhdChpICUgMyl9YCB9KTtcbiAgICAgICAgaSsrO1xuICAgICAgfSwgMTAwMCk7XG4gICAgfSwgMTAwMCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGVuZGluZztcbiAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuXG4gICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgIGlmIChyZXN1bHQudmFsdWUubmFtZSA9PT0gXCJHTUZldGNoTm90QXZhaWxhYmxlRXJyb3JcIikge1xuICAgICAgICBhbGVydChcbiAgICAgICAgICBcImBHTV9mZXRjaGAgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIHVzZSBUYW1wZXJtb25rZXkgYW5kIGluc3RhbGwgYEdNX2ZldGhjYC5cIixcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdC52YWx1ZS5uYW1lID09PSBcIlJlc3BvbnNlRXJyb3JcIikge1xuICAgICAgICByZW5kZXIoe1xuICAgICAgICAgIHRleHQ6XG4gICAgICAgICAgICBgRXJyb3I6ICR7cmVzdWx0LnZhbHVlLnJlcy5zdGF0dXN9ICR7cmVzdWx0LnZhbHVlLnJlcy5zdGF0dXNUZXh0fWAsXG4gICAgICAgIH0sIEV4aXQpO1xuICAgICAgICBvcGVuKCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYEVycm9yOiAke3Jlc3VsdC52YWx1ZS5yZXMuc3RhdHVzfSAke3Jlc3VsdC52YWx1ZS5yZXMuc3RhdHVzVGV4dH1gLFxuICAgICAgICAgIGF3YWl0IHJlc3VsdC52YWx1ZS5yZXMudGV4dCgpLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGFsa0lkXyA9IHJlc3VsdC52YWx1ZTtcbiAgfVxuXG4gIC8qKiB0YWxrIElEICovXG4gIGNvbnN0IHRhbGtJZCA9IHRhbGtJZF87XG4gIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLm5vcm1hbGl6ZU9yZGVyKHNlbGVjdGlvbi5nZXRSYW5nZSgpKTtcbiAgbGV0IGxhc3RJbnNlcnRlZE5vID0gc2VsZWN0QWxsID8gbGluZXMubGVuZ3RoIC0gMSA6IHJhbmdlLmVuZC5saW5lO1xuICBsZXQgbGFzdEluc2VydGVkTGluZTogQmFzZUxpbmUgPSBsaW5lc1tsYXN0SW5zZXJ0ZWROb107XG4gIGxldCBpbmRlbnQgPSBzZWxlY3RBbGwgPyBcIlwiIDogXCIgXCIucmVwZWF0KFxuICAgIE1hdGgubWluKFxuICAgICAgLi4ubGluZXMuc2xpY2UocmFuZ2Uuc3RhcnQubGluZSwgcmFuZ2UuZW5kLmxpbmUgKyAxKS5tYXAoKGxpbmUpID0+XG4gICAgICAgIGdldEluZGVudENvdW50KGxpbmUudGV4dClcbiAgICAgICksXG4gICAgKSxcbiAgKTtcblxuICBjb25zdCBzZW5kID0gYXN5bmMgKGFuc3dlcjogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXNrKGFuc3dlciwgdGFsa0lkKTtcbiAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgc3dpdGNoIChyZXN1bHQudmFsdWUubmFtZSkge1xuICAgICAgICBjYXNlIFwiUmVzcG9uc2VFcnJvclwiOlxuICAgICAgICAgIHJlbmRlcih7XG4gICAgICAgICAgICB0ZXh0OlxuICAgICAgICAgICAgICBgRXJyb3I6ICR7cmVzdWx0LnZhbHVlLnJlcy5zdGF0dXN9ICR7cmVzdWx0LnZhbHVlLnJlcy5zdGF0dXNUZXh0fWAsXG4gICAgICAgICAgfSwgRXhpdCk7XG4gICAgICAgICAgb3BlbigpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgRXJyb3I6ICR7cmVzdWx0LnZhbHVlLnJlcy5zdGF0dXN9ICR7cmVzdWx0LnZhbHVlLnJlcy5zdGF0dXNUZXh0fWAsXG4gICAgICAgICAgICBhd2FpdCByZXN1bHQudmFsdWUucmVzLnRleHQoKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIGNhc2UgXCJHTUZldGNoTm90QXZhaWxhYmxlRXJyb3JcIjpcbiAgICAgICAgICBhbGVydChcbiAgICAgICAgICAgIFwiYEdNX2ZldGNoYCBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgdXNlIFRhbXBlcm1vbmtleSBhbmQgaW5zdGFsbCBgR01fZmV0aGNgLlwiLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvKiog5YmN5Zue6YCB5L+h44GX44Gf5Zue562U44GM44Kz44Oh44Oz44OI44Gu44G/44Gu5aC05ZCI44Gv44CB6YeN6KSH6YCB5L+h44KS6Ziy44GQ44Gf44KB44Gd44KM44KS6Kaa44GI44Gm44GK44GPICovXG4gIGxldCBjb21tZW50TGFzdFNlbnQgPSBcIlwiO1xuICBjb25zdCBzZW5kTXVsdGlwbGUgPSBhc3luYyAoYW5zd2VyOiBzdHJpbmcpID0+IHtcbiAgICBsZXQgcGxhaW4gPSBtYWtlUGxhaW4oYW5zd2VyKVxuICAgICAgLy8g56m655m944Go56m66KGM44KS5YmK6Zmk44GZ44KLXG4gICAgICAuc3BsaXQoXCJcXG5cIikubWFwKChsaW5lKSA9PiBsaW5lLnRyaW0oKSkuam9pbihcIlxcblwiKS50cmltKCk7XG4gICAgLy8g6YCB5L+h5riI44G/44GuY29tbWVudHPjgpLliYrpmaRcbiAgICBpZiAocGxhaW4uc3RhcnRzV2l0aChjb21tZW50TGFzdFNlbnQpKSB7XG4gICAgICBwbGFpbiA9IHBsYWluLnNsaWNlKGNvbW1lbnRMYXN0U2VudC5sZW5ndGgpO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmVzID0gcGxhaW4uc3BsaXQoXCJcXG5cIik7XG4gICAgaWYgKGxpbmVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGlmIChsaW5lcy5ldmVyeSgobGluZSkgPT4gaXNDb21tZW50KGxpbmUpKSkge1xuICAgICAgY29tbWVudExhc3RTZW50ID0gcGxhaW47XG4gICAgfVxuXG4gICAgLy8g5YWo44Gm44Kz44Oh44Oz44OI44GL44CBMeihjOOBoOOBkeWbnuetlOOBjOOBguOCi+WgtOWQiOOBr+OAgeOBneOBruOBvuOBvumAgeS/oeOBmeOCi1xuICAgIGNvbnN0IGFuc3dlckxpbmVzID0gbGluZXMuZmlsdGVyKChsaW5lKSA9PiAhaXNDb21tZW50KGxpbmUpKTtcbiAgICBpZiAoYW5zd2VyTGluZXMubGVuZ3RoIDwgMikge1xuICAgICAgbGV0IHF1ZXN0aW9uOlxuICAgICAgICB8IFJlc3VsdDxBbnN3ZXIsIFJlc3BvbnNlRXJyb3IgfCBHTUZldGNoTm90QXZhaWxhYmxlRXJyb3I+XG4gICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IHJlc3VsdDogUmVzdWx0PEFuc3dlciwgUmVzcG9uc2VFcnJvciB8IEdNRmV0Y2hOb3RBdmFpbGFibGVFcnJvcj47XG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgc2VuZChsaW5lKTtcbiAgICAgICAgaWYgKCFyZXN1bHQub2spIHJldHVybiByZXN1bHQ7XG4gICAgICAgIGlmICghaXNDb21tZW50KGxpbmUpKSBxdWVzdGlvbiA9IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBxdWVzdGlvbiA/PyByZXN1bHQhO1xuICAgIH1cblxuICAgIC8vIOWbnuetlOOBjDLooYzku6XkuIrjgYLjgovloLTlkIjjga/nm7jmp4zjg6Ljg7zjg4njgpLkvb/jgYZcbiAgICBsZXQgaW5kZXggPSAwO1xuICAgIHtcbiAgICAgIGxldCByZXN1bHQ6IFJlc3VsdDxBbnN3ZXIsIFJlc3BvbnNlRXJyb3IgfCBHTUZldGNoTm90QXZhaWxhYmxlRXJyb3I+O1xuICAgICAgLy8g5YWI6aCt44GuY29tbWVudHPjga/jgZ3jga7jgb7jgb7pgIHkv6HjgZnjgotcbiAgICAgIGZvciAoOyBpbmRleCA8IGxpbmVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBpZiAoIWlzQ29tbWVudChsaW5lc1tpbmRleF0pKSBicmVhaztcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgc2VuZChsaW5lc1tpbmRleF0pO1xuICAgICAgICBpZiAoIXJlc3VsdC5vaykgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2VuZChcIuOBvuOBmuiBnuOBhOOBplwiKTtcbiAgICAgIGlmICghcmVzdWx0Lm9rKSByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBmb3IgKDsgaW5kZXggPCBsaW5lcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGlmIChpc0NvbW1lbnQobGluZXNbaW5kZXhdKSkgYnJlYWs7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZW5kKGxpbmVzW2luZGV4XSk7XG4gICAgICBpZiAoIXJlc3VsdC5vaykgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHNlbmQoXCLjgYrjgZfjgb7jgYRcIik7XG4gIH07XG5cbiAgY29uc3Qgc2VuZEFuZFdyaXRlID0gYXN5bmMgKGFuc3dlcjogc3RyaW5nKSA9PiB7XG4gICAgaWYgKHNjcmFwYm94LkxheW91dCAhPT0gXCJwYWdlXCIpIHJldHVybjtcbiAgICBpZiAoYW5zd2VyID09PSBcIlwiKSByZXR1cm47XG4gICAgY29uc3QgcGVuZGluZyA9IHNlbmRNdWx0aXBsZShhbnN3ZXIpO1xuICAgIC8vIOaZgumWk+OBjOOBi+OBi+OCi+OCiOOBhuOBp+OBguOCjOOBsOiqreOBv+i+vOOBv+S4reihqOekuuOCkuOBmeOCi1xuICAgIGxldCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgcmVuZGVyKHsgdGV4dDogXCJBc2tpbmcuLi5cIiB9KTtcbiAgICAgIG9wZW4oKTtcbiAgICAgIGxldCBpID0gMDtcbiAgICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICByZW5kZXIoeyB0ZXh0OiBgQXNraW5nJHtcIi5cIi5yZXBlYXQoaSAlIDMpfWAgfSk7XG4gICAgICAgIGkrKztcbiAgICAgIH0sIDEwMDApO1xuICAgIH0sIDEwMDApO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBlbmRpbmc7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICBpZiAoIXJlc3VsdCkgcmV0dXJuO1xuICAgIGlmICghcmVzdWx0Lm9rKSByZXR1cm47XG5cbiAgICBjb25zdCB7IHRleHQ6IHF1ZXN0aW9uLCBidXR0b25zIH0gPSByZXN1bHQudmFsdWU7XG4gICAgY29uc3QgZm9ybWF0dGVkID0gcXVlc3Rpb25Ub1NjcmFwYm94KHF1ZXN0aW9uKTtcbiAgICBpZiAoZm9ybWF0dGVkLnRyaW0oKSkge1xuICAgICAgY29uc3QgYm90VGFsayA9IGAke2luZGVudH0ke2JvdEljb259JHtcbiAgICAgICAgZm9ybWF0dGVkLmluY2x1ZGVzKFwiXFxuXCIpXG4gICAgICAgICAgPyBgXFxuJHtcbiAgICAgICAgICAgIGZvcm1hdHRlZC5zcGxpdChcIlxcblwiKS5tYXAoKGxpbmUpID0+IGAgJHtpbmRlbnR9JHtsaW5lfWApLmpvaW4oXCJcXG5cIilcbiAgICAgICAgICB9YFxuICAgICAgICAgIDogZm9ybWF0dGVkXG4gICAgICB9XFxuJHtpbmRlbnR9YDtcblxuICAgICAgbGFzdEluc2VydGVkTm8gPSBhd2FpdCB3cml0ZUFmdGVyKFxuICAgICAgICBib3RUYWxrLFxuICAgICAgICBsYXN0SW5zZXJ0ZWRMaW5lLFxuICAgICAgICBsYXN0SW5zZXJ0ZWRObyxcbiAgICAgICk7XG4gICAgICBsYXN0SW5zZXJ0ZWRMaW5lID0gbGluZXNbbGFzdEluc2VydGVkTm9dO1xuICAgIH1cblxuICAgIHJlbmRlcihcbiAgICAgIHtcbiAgICAgICAgdGV4dDogXCJTZW5kXCIsXG4gICAgICAgIG9uQ2xpY2s6IGFza18sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0ZXh0OiBcIvCfmYJcIixcbiAgICAgICAgb25DbGljazogKCkgPT4gaW5zZXJ0VGV4dChcIvCfmYJcIiksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0ZXh0OiBcIvCfmYFcIixcbiAgICAgICAgb25DbGljazogKCkgPT4gaW5zZXJ0VGV4dChcIvCfmYFcIiksXG4gICAgICB9LFxuICAgICAgLi4uYnV0dG9ucy5tYXAoKGJ1dHRvbikgPT4gKHtcbiAgICAgICAgdGV4dDogYnV0dG9uLFxuICAgICAgICBvbkNsaWNrOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgbGFzdEluc2VydGVkTm8gPSBhd2FpdCB3cml0ZUFmdGVyKFxuICAgICAgICAgICAgYnV0dG9uLFxuICAgICAgICAgICAgbGFzdEluc2VydGVkTGluZSxcbiAgICAgICAgICAgIGxhc3RJbnNlcnRlZE5vLFxuICAgICAgICAgICk7XG4gICAgICAgICAgbGFzdEluc2VydGVkTGluZSA9IGxpbmVzW2xhc3RJbnNlcnRlZE5vXTtcblxuICAgICAgICAgIGF3YWl0IHNlbmRBbmRXcml0ZShidXR0b24pO1xuICAgICAgICB9LFxuICAgICAgfSkpLFxuICAgICAgRXhpdFxuICAgICk7XG4gICAgb3BlbigpO1xuICB9O1xuXG4gIGNvbnN0IGFza18gPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKHNjcmFwYm94LkxheW91dCAhPT0gXCJwYWdlXCIpIHJldHVybjtcbiAgICBjb25zdCBsaW5lcyA9IHNjcmFwYm94LlBhZ2UubGluZXM7XG4gICAgY29uc3QgY3Vyc29yTGluZU5vID0gY3Vyc29yLmdldFBvc2l0aW9uKCkubGluZTtcbiAgICBjb25zdCBbYW5zd2VyLCBzdGFydExpbmVObywgZW5kTGluZU5vXSA9IHJlYWRBbnN3ZXIoXG4gICAgICBsaW5lcyxcbiAgICAgIGN1cnNvckxpbmVObyxcbiAgICAgIGJvdEljb24sXG4gICAgKTtcbiAgICBpZiAoYW5zd2VyID09PSBcIlwiKSByZXR1cm47XG5cbiAgICBsYXN0SW5zZXJ0ZWRObyA9IGVuZExpbmVObztcbiAgICBsYXN0SW5zZXJ0ZWRMaW5lID0gbGluZXNbbGFzdEluc2VydGVkTm9dO1xuICAgIGluZGVudCA9IFwiIFwiLnJlcGVhdChcbiAgICAgIE1hdGgubWluKFxuICAgICAgICAuLi5saW5lcy5zbGljZShzdGFydExpbmVObywgZW5kTGluZU5vICsgMSkubWFwKChsaW5lKSA9PlxuICAgICAgICAgIGdldEluZGVudENvdW50KGxpbmUudGV4dClcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKTtcblxuICAgIGF3YWl0IHNlbmRBbmRXcml0ZShhbnN3ZXIpO1xuICB9O1xuXG4gIGlmIChuZXdUYWxrSWQpIHtcbiAgICBsYXN0SW5zZXJ0ZWRObyA9IGF3YWl0IHdyaXRlQWZ0ZXIoXG4gICAgICBtYWtlU2hhcmVVUkwodGFsa0lkKSxcbiAgICAgIGxhc3RJbnNlcnRlZExpbmUsXG4gICAgICBsYXN0SW5zZXJ0ZWRObyxcbiAgICApO1xuICAgIGxhc3RJbnNlcnRlZExpbmUgPSBsaW5lc1tsYXN0SW5zZXJ0ZWROb107XG4gIH1cbiAgYXdhaXQgc2VuZEFuZFdyaXRlKGluaXRpYWxUZXh0KTtcblxuICByZXR1cm4geyBhc2s6IGFza18sIG9wZW4sIGNsb3NlLCB2aXNpYmxlLCBleGl0LCBvbkV4aXQgfTtcbn07XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSB0YWxrIElEIGZyb20gdGhlIHNlbGVjdGVkIHN0cmluZy4gVGhlIGxhc3QgdGFsayBJRCBpcyBzZWxlY3RlZC5cbiAqIEBwYXJhbSBzZWxlY3RlZCAtIFRoZSBzZWxlY3RlZCBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgdGFsayBJRC5cbiAqL1xuY29uc3QgZmluZFRhbGtJZCA9IChzZWxlY3RlZDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgZm9yIChjb25zdCBsaW5lIG9mIHNlbGVjdGVkLnNwbGl0KFwiXFxuXCIpLnJldmVyc2UoKSkge1xuICAgIGNvbnN0IHRhbGtJZCA9IGxpbmUubWF0Y2goL2h0dHBzPzpcXC9cXC9rZWljaG9cXC5uZXRsaWZ5XFwuYXBwXFwvI3RhbGs9KFxcdyspLylcbiAgICAgID8uWzFdO1xuICAgIGlmICh0YWxrSWQpIHJldHVybiB0YWxrSWQ7XG4gIH1cbn07XG5cbmNvbnN0IHJlYWRBbnN3ZXIgPSA8TGluZSBleHRlbmRzIEJhc2VMaW5lPihcbiAgbGluZXM6IExpbmVbXSxcbiAgZW5kTGluZU5vOiBudW1iZXIsXG4gIGJvdEljb246IHN0cmluZyxcbik6IFtzdHJpbmcsIG51bWJlciwgbnVtYmVyXSA9PiB7XG4gIGNvbnN0IGljb25MaW5lTm8gPSBNYXRoLm1heChcbiAgICBsaW5lcy5maW5kTGFzdEluZGV4KChsaW5lLCBpbmRleCkgPT5cbiAgICAgIGluZGV4IDwgZW5kTGluZU5vICYmIGxpbmUudGV4dC50cmltKCkuc3RhcnRzV2l0aChib3RJY29uKVxuICAgICksXG4gICAgLy8g44Ki44Kk44Kz44Oz6KGM44GM44Gq44GR44KM44Gw44CB44K/44Kk44OI44Or44Gu5qyh44Gu6KGM44GL44KJ44OG44Kt44K544OI44KS5Y+W5b6X44GZ44KLXG4gICAgMSxcbiAgKTtcbiAgLy8g44G244KJ5LiL44GM44Gj44Gm44GE44KL6KGM44Gv5ZCr44KB44Gq44GEXG4gIGNvbnN0IHN0YXJ0TGluZU5vID0gaWNvbkxpbmVObyArIGdldEluZGVudExpbmVDb3VudChpY29uTGluZU5vLCBsaW5lcykgK1xuICAgIC8vIOOCouOCpOOCs+ODs+ihjOOCkumZpOOBj1xuICAgIDE7XG5cbiAgcmV0dXJuIFtcbiAgICBsaW5lcy5zbGljZShzdGFydExpbmVObywgZW5kTGluZU5vICsgMSkubWFwKChsaW5lKSA9PiBsaW5lLnRleHQudHJpbSgpKVxuICAgICAgLmpvaW4oXCJcXG5cIikudHJpbSgpLFxuICAgIHN0YXJ0TGluZU5vLFxuICAgIGVuZExpbmVObyxcbiAgXTtcbn07XG4iLCAiaW1wb3J0IFwiLi4vdW5saW5rX1BvcHVwX21lbnUvc2NyaXB0LnRzXCI7XG5cbmltcG9ydCB0eXBlIHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vc2NyYXBib3gtanAlMkZ0eXBlcy91c2Vyc2NyaXB0LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuLy8g6YG45oqe56+E5Zuy44Gr5LiL57ea44KS5byV44GPXG5zY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcblx0dGl0bGU6ICdcXHVmMGNkJyxcbiBcdG9uQ2xpY2s6IHRleHQgPT4gYFtfICR7dGV4dH1dYFxufSk7XG4gXG5zY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcblx0dGl0bGU6IFwiXFx1ZjY5OFwiLFxuIFx0b25DbGljazogdGV4dCA9PiBgWyQgJHt0ZXh0fV1gXG59KTtcbiBcbmltcG9ydCBcIi4uL+mVt+OBhOOCv+OCpOODiOODq+OCkuWIu+OCgOODmuODvOOCuOOCkuewoeWNmOOBq+S9nOOCjOOCi1VzZXJTY3JpcHQvbWFpbi50c1wiO1xuaW1wb3J0IHsgbWFrZU5ld1BhZ2UgfSBmcm9tIFwiLi4vY3VzdG9tLW5ldy1wYWdlL21vZC50c1wiO1xuaW1wb3J0IHtcbiAgbmV3UGFnZUhvb2ssXG4gIHNwbGl0dGVkTGlua0hvb2ssXG4gIHRhc2tMaW5lSG9vayxcbn0gZnJvbSBcIi4uL2Zvci1jdXN0b20tbmV3LXBhZ2UvbW9kLnRzXCI7XG5cbmNvbnN0IGhvb2tzID0gW3Rhc2tMaW5lSG9vaywgbmV3UGFnZUhvb2ssIHNwbGl0dGVkTGlua0hvb2tdO1xuc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gIHRpdGxlOiAodGV4dCkgPT4ge1xuICAgIGNvbnN0IGhvb2sgPSBtYWtlTmV3UGFnZSh7IHByb2plY3Q6IHNjcmFwYm94LlByb2plY3QubmFtZSwgbW9kZTogXCJub29wZW5cIiwgaG9va3MgfSk7XG4gICAgaWYgKCFob29rIHx8IGhvb2suaG9va05hbWUuaW5jbHVkZXMoXCJkZWZhdWx0XCIpKSByZXR1cm4gXCJcIjtcbiAgICBpZiAoaG9vay5ob29rTmFtZS5pbmNsdWRlcyhcInRhc2tcIikpIHJldHVybiBcIlxcdWYwYzRcXHVmNDZkXCI7XG4gICAgaWYgKGhvb2suaG9va05hbWUuaW5jbHVkZXMoXCJzcGxpdFwiKSkgcmV0dXJuIFwiXFx1ZjBjNFxcdWY1OTVcIjtcbiAgICByZXR1cm4gXCJcXHVmMGM0XCI7XG4gIH0sXG4gIG9uQ2xpY2s6ICgpID0+IHtcbiAgICBjb25zdCBwcm9qZWN0ID0gd2luZG93LnByb21wdChcIkNyZWF0ZSBhIG5ldyBwYWdlIGF0XCIsIHNjcmFwYm94LlByb2plY3QubmFtZSk7XG4gICAgaWYgKCFwcm9qZWN0KSByZXR1cm47XG4gICAgbWFrZU5ld1BhZ2UoeyBwcm9qZWN0LCBtb2RlOiBcIm5vb3BlblwiLCBob29rcyB9KT8uKCk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSxcbn0pO1xuXG57XG4gIC8qKiBmcm9tIHNjcmFwYm94LXBhcnNlciAqL1xuICBzY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcbiAgICB0aXRsZTogKHRleHQpID0+IC8oaHR0cHM/OlxcL1xcL1teXFxzXSspL2cudGVzdCh0ZXh0KSA/IFwiXFx1ZjAzZVwiIDogXCJcIixcbiAgICBvbkNsaWNrOiAodGV4dCkgPT4ge1xuICAgICAgY29uc3QgbmV3VGV4dCA9IHRleHQucmVwbGFjZSgvKGh0dHBzPzpcXC9cXC9bXlxcc10rKS9nLCBcIlskMSMuanBnXVwiKTtcbiAgXHQgIFxuICAgICAgaWYgKHRleHQgPT09IG5ld1RleHQpIHJldHVybjtcbiAgICAgIHJldHVybiBuZXdUZXh0O1xuICAgIH0sXG4gIH0pO1xufVxuXG4vL2ltcG9ydCAnL2FwaS9jb2RlL3NjcmFwYm94bGFiL+OBhOOBhOaEn+OBmOOBq+ODquODs+OCr+OBmeOCi29tYWthc2UtbGlua3Mvc2NyaXB0LmpzJztcblxuLy8g6YG45oqe44GV44KM44Gf5paH5a2X5YiX44KSU2NyYXBib3jjg5fjg63jgrjjgqfjgq/jg4jlhoXjgafmpJzntKLjgZnjgotcbi8vIFNjYXBib3jmpJzntKLjg5zjg4Pjgq/jgrnjgpLkvb/jgaPjgZ/jgajjgY3jgajlkIzjgZjntZDmnpzjg5rjg7zjgrjjgpLplovjgY9cbnNjcmFwYm94LlBvcHVwTWVudS5hZGRCdXR0b24oe1xuICB0aXRsZTogXCJTXCIsXG4gIG9uQ2xpY2s6ICh0ZXh0KSA9PiB7XG4gICAgd2luZG93Lm9wZW4oYGh0dHBzOi8vc2NyYXBib3guaW8vJHtzY3JhcGJveC5Qcm9qZWN0Lm5hbWV9L3NlYXJjaC9wYWdlP3E9JHt0ZXh0fWApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sXG59KTtcblxuc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gIHRpdGxlOiAnXFx1ZjFhMCcsXG4gIG9uQ2xpY2s6IHRleHQgPT4ge1xuICAgIC8vIOiomOazleOCkuino+mZpOOBmeOCi1xuICAgIGNvbnN0IGtleXdvcmQgPSB0ZXh0LnNwbGl0KC9cXG4vKVxuICAgICAgLm1hcChsaW5lID0+IGxpbmUucmVwbGFjZSgvXFxbKC4qKVxcXS9nLCckMScpKS5qb2luKCdcXG4nKTtcbiAgICB3aW5kb3cub3BlbihgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0ke2VuY29kZVVSSUNvbXBvbmVudChrZXl3b3JkKX1gKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59KTtcbnNjcmFwYm94LlBvcHVwTWVudS5hZGRCdXR0b24oe1xuXHR0aXRsZTogXCJcXHVmMWFiXCIsXG5cdG9uQ2xpY2s6IHRleHQgPT4ge1xuXHRcdGNvbnN0IGlzSmFwYW5lc2UgPSAoc3RyOiBzdHJpbmcpID0+IFsuLi5zdHJdLnNvbWUoY2hhciA9PiBjaGFyLmNoYXJDb2RlQXQoMCkgPiAyNTUpO1xuXHRcdFxuXHRcdC8vIOiomOazleOCkuino+mZpOOBmeOCi1xuXHRcdGNvbnN0IGtleXdvcmQgPSB0ZXh0LnNwbGl0KC9cXG4vKVxuICAgICAgICBcdC5tYXAobGluZSA9PiBsaW5lLnJlcGxhY2UoL1xcWyguKilcXF0vZywnJDEnKSkuam9pbignXFxuJykudHJpbSgpLnJlcGxhY2UoL1xccysvZywnKycpO1xuIFx0XHRpZiAoaXNKYXBhbmVzZShrZXl3b3JkKSkge1xuIFx0XHRcdHdpbmRvdy5vcGVuKGBodHRwczovL3d3dy5sZG9jZW9ubGluZS5jb20vc2VhcmNoL2phcGFuZXNlLWVuZ2xpc2gvZGlyZWN0Lz9xPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleXdvcmQpfWApO1xuIFx0XHR9IGVsc2Uge1xuICAgICAgICBcdFx0d2luZG93Lm9wZW4oYGh0dHBzOi8vd3d3Lm94Zm9yZGxlYXJuZXJzZGljdGlvbmFyaWVzLmNvbS9zZWFyY2gvZW5nbGlzaC8/cT0ke2VuY29kZVVSSUNvbXBvbmVudChrZXl3b3JkKX1gKTtcbiAgICAgICAgfVxuICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICBcdH1cbn0pO1xuc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gICAgdGl0bGU6ICdcXHVmMDAyJyxcbiAgICBvbkNsaWNrOiB0ZXh0ID0+IHtcbiAgICAgIFx0XHQvLyDoqJjms5XjgpLop6PpmaTjgZnjgotcbiAgICAgIFx0XHRjb25zdCBrZXl3b3JkID0gdGV4dC5zcGxpdCgvXFxuLylcbiAgICAgICAgICAgICAgXHQubWFwKGxpbmUgPT4gbGluZS5yZXBsYWNlKC9cXFsoLiopXFxdL2csJyQxJykpLmpvaW4oJ1xcbicpO1xuICAgICAgICAgICAgd2luZG93Lm9wZW4oYGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9JHtlbmNvZGVVUklDb21wb25lbnQoa2V5d29yZCl9K3NpdGU6c2NyYXBib3guaW9gKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICBcdH1cbn0pO1xuXG4vLyDjgqTjg7Pjg6njgqTjg7PlvJXnlKhcbnNjcmFwYm94LlBvcHVwTWVudS5hZGRCdXR0b24oe1xuICAgIHRpdGxlOiAnXFx1ZjEwZScsXG4gICAgb25DbGljazogdGV4dCA9PiBgW1wiICR7dGV4dH1dYFxufSk7XG4gLy8g5ouh5by16KiY5rOVXG4gLy8g6YG45oqe44GX44Gf5paH5a2X5YiX44Gr44Oe44O844Kr44O8XG4gc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gICAgIHRpdGxlOiAn8J+WjScsXG4gICAgIG9uQ2xpY2s6IHRleHQgPT4gYFtbJHt0ZXh0fV1dYFxuIH0pO1xuaW1wb3J0ICcuLi/pgbjmip7nr4Tlm7LjgpJNYXJrZG93buiomOazleOBq+WkieaPm+OBl+OBpmNsaXBfYm9hcmTjgatjb3B544GZ44KLUG9wdXBNZW51L3NjcmlwdC5qcyc7XG5zY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcbiAgICB0aXRsZTogdGV4dCA9PiAvXFwkKFteJF0rKVxcJC8udGVzdCh0ZXh0KSA/ICdMJyA6ICcnLFxuICAgIG9uQ2xpY2s6IHRleHQgPT4ge1xuXHRcdGNvbnN0IHJlc3VsdCA9IHRleHQuc3BsaXQoL1xcbi8pXG4gICAgIFx0XHQubWFwKGxpbmUgPT4gbGluZS5yZXBsYWNlKC9cXCQoW14kXSspXFwkL2csYFskICQxXWApKS5qb2luKCdcXG4nKTtcbiAgICAgXHQvLyDjg4bjg63jg6HjgqLjgYznhKHpp4Tjgavmm7TmlrDjgZXjgozjgovjga7jgpLpmLLjgZBcbiAgICAgXHRpZih0ZXh0ID09IHJlc3VsdCkgcmV0dXJuO1xuICAgICBcdHJldHVybiByZXN1bHQ7XG5cdH1cbn0pO1xuaW1wb3J0IHtcbiAgY29udmVydCxcbiAgY29udmVydEd5YXpvVVJMLFxuICBjb252ZXJ0U2NyYXBib3hVUkwsXG4gIGV4cGFuZFNob3J0VVJMLFxuICBmb3JtYXRUd2VldCxcbiAgZm9ybWF0VVJMLFxuICBmb3JtYXRXaWtpcGVkaWEsXG4gIE1pZGRsZXdhcmUsXG4gIHJlZGlyZWN0R29vZ2xlU2VhcmNoLFxuICByZWRpcmVjdFdpa2l3YW5kLFxuICBzaG9ydGVuQW1hem9uVVJMLFxufSBmcm9tIFwiLi4vdGFra2VyOTklMkZzY3JhcGJveC11cmwtY3VzdG9taXplci9tb2QudHNcIjtcbmltcG9ydCB7IGZvcm1hdE5pY29uaWNvIH0gZnJvbSBcIi4uL25pY290aHVtYjJpbWcvbWlkZGxld2FyZS50c1wiO1xuaW1wb3J0IHsgaW5zZXJ0VGV4dCB9IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcblxuLy8g5q+O5ZueZnVuY3Rpb25z44KS5L2c44KL44Gu44Gv54Sh6aeE44Gq44Gu44Gn44CBZ2xvYmFs44Gr5L+d5oyB44GX44Gm44GK44GPXG5jb25zdCBtaWRkbGV3YXJlczogTWlkZGxld2FyZVtdID0gW1xuICByZWRpcmVjdEdvb2dsZVNlYXJjaCxcbiAgZXhwYW5kU2hvcnRVUkwsXG4gIHJlZGlyZWN0R29vZ2xlU2VhcmNoLFxuICByZWRpcmVjdFdpa2l3YW5kLFxuICBzaG9ydGVuQW1hem9uVVJMLFxuICBjb252ZXJ0U2NyYXBib3hVUkwoKSxcbiAgY29udmVydEd5YXpvVVJMLFxuICBmb3JtYXRUd2VldCgpLFxuICBmb3JtYXRXaWtpcGVkaWEsXG4gICh1cmwpID0+IHtcbiAgICBpZiAodXJsLmhvc3RuYW1lICE9PSBcImVraXRhbi5jb21cIikgcmV0dXJuIHVybDtcbiAgICBpZiAoIS9eXFwvdHJhbnNpdFxcLyg/OnJvdXRlfGZpcnN0fGxhc3QpXFwvLy50ZXN0KHVybC5wYXRobmFtZSkpIHJldHVybiB1cmw7XG4gICAgY29uc3QgZHQgPSB1cmwuc2VhcmNoUGFyYW1zLmdldChcImR0XCIpO1xuICAgIGNvbnN0IHRtID0gdXJsLnNlYXJjaFBhcmFtcy5nZXQoXCJ0bVwiKTtcbiAgICBjb25zdCBzciA9IHVybC5zZWFyY2hQYXJhbXMuZ2V0KFwic3JcIik7XG4gICAgLy8gVVJMLnNlYXJjaFBhcmFtc+OBr3NldHRlcuOBjOOBquOBhOOBruOBp3Jlc2V044Gn44GN44Gq44GE44CC5Luj44KP44KK44GrVVJMLnNlYXJjaOe1jOeUseOBp3Jlc2V044GZ44KLXG4gICAgdXJsLnNlYXJjaCA9IFwiXCI7XG4gICAgaWYgKGR0KSB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcImR0XCIsIGR0KTtcbiAgICBpZiAodXJsLnBhdGhuYW1lLnN0YXJ0c1dpdGgoXCIvdHJhbnNpdC9yb3V0ZS9cIikpIHtcbiAgICAgIGlmICh0bSkgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJ0bVwiLCB0bSk7XG4gICAgICBpZiAoc3IpIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKFwic3JcIiwgc3IpO1xuICAgIH1cbiAgICByZXR1cm4gdXJsO1xuICB9LFxuICAodXJsKSA9PiB7XG4gICAgaWYgKHVybC5ob3N0ICE9PSBsb2NhdGlvbi5ob3N0KSByZXR1cm4gdXJsO1xuICAgIGlmICghdXJsLnBhdGhuYW1lLnN0YXJ0c1dpdGgoXCIvYXBpL2NvZGUvXCIpKSByZXR1cm4gdXJsO1xuICAgIGNvbnN0IHBhdGggPSBlbmNvZGVVUklDb21wb25lbnQoYCR7dXJsLm9yaWdpbn0ke3VybC5wYXRobmFtZX1gKTtcbiAgICByZXR1cm4gYCR7dXJsfWAuZW5kc1dpdGgoXCIuc3ZnXCIpXG4gICAgICA/IGBbaHR0cHM6Ly9zdmctaG9zdGluZy52ZXJjZWwuYXBwL2FwaS9zdmc/dXJsPSR7cGF0aH0gJHt1cmx9XWBcbiAgICAgIDogYCR7dXJsfWAuZW5kc1dpdGgoXCIubWx0XCIpXG4gICAgICA/IGBbaHR0cHM6Ly9hYTJzdmcudmVyY2VsLmFwcC9zdmcvJHtwYXRofT93aWR0aD0xMDAwICR7dXJsfV1gIDogdXJsO1xuICB9LFxuICAodXJsKSA9PiB7XG4gICAgaWYgKHVybC5ob3N0bmFtZSA9PT0gXCJyYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tXCIpIHtcbiAgICAgIHJldHVybiBgW2h0dHBzOi8vY29kZTJzdmcudmVyY2VsLmFwcC9zdmcvJHt1cmwub3JpZ2lufSR7dXJsLnBhdGhuYW1lfSMuc3ZnICR7dXJsfV1gO1xuICAgIH1cbiAgICBpZiAodXJsLmhvc3RuYW1lICE9PSBcImdpdGh1Yi5jb21cIikgcmV0dXJuIHVybDtcbiAgICBjb25zdCBbdXNlciwgcmVwbywgZmlsZXBhdGhdID1cbiAgICAgIHVybC5wYXRobmFtZS5tYXRjaCgvXlxcLyhbXlxcXFxdKylcXC8oW15cXFxcXSspXFwvYmxvYlxcLyguKykkLyk/LnNsaWNlPy4oMSkgPz9cbiAgICAgICAgW107XG4gICAgaWYgKCF1c2VyIHx8ICFyZXBvIHx8ICFmaWxlcGF0aCkgcmV0dXJuIHVybDtcbiAgICBjb25zdCBbLCBzdGFydCwgZW5kXSA9IHVybC5oYXNoLm1hdGNoKC9MKFxcZCspLUwoXFxkKykvKSA/P1xuICAgICAgdXJsLmhhc2gubWF0Y2goL0woXFxkKykvKSA/PyBbXTtcbiAgICByZXR1cm4gYFtodHRwczovL2NvZGUyc3ZnLnZlcmNlbC5hcHAvc3ZnLyR7XG4gICAgICBzdGFydCAmJiBlbmQgPyBgTCR7c3RhcnR9LSR7ZW5kfS9gIDogc3RhcnQgPyBgTCR7c3RhcnR9L2AgOiBcIlwiXG4gICAgfWh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS8ke3VzZXJ9LyR7cmVwb30vJHtmaWxlcGF0aH0jLnN2ZyAke3VybH1dYDtcbiAgfSxcbiAgLy8gZ2l0aHVi44Gv44Gd44Gu44G+44G+6L+U44GZXG4gICh1cmwpID0+IHVybC5ob3N0bmFtZSA9PT0gXCJnaXRodWIuY29tXCIgPyBgJHt1cmx9YCA6IHVybCxcbiAgZm9ybWF0Tmljb25pY28sXG4gIGZvcm1hdFVSTCgpLFxuXTtcblxuc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gIHRpdGxlOiAodGV4dCkgPT4gL2h0dHBzPzpcXC9cXC9cXFMrLy50ZXN0KHRleHQpID8gXCJVUkxcIiA6IFwiXCIsXG4gIG9uQ2xpY2s6ICh0ZXh0KSA9PiB7XG4gICAgY29uc3QgcHJvbWlzZSA9IGNvbnZlcnQodGV4dCwgLi4ubWlkZGxld2FyZXMpO1xuICAgIGlmICh0eXBlb2YgcHJvbWlzZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgLy8g5paH5a2X5YiX44Gr6YGV44GE44GM44GC44KL44Go44GN44Gu44G/5pu05pawXG4gICAgICByZXR1cm4gdGV4dCA9PT0gcHJvbWlzZSA/IHVuZGVmaW5lZCA6IHByb21pc2U7XG4gICAgfVxuICAgIFxuICAgIC8vIOmBuOaKnuevhOWbsuOBq+WkieaPm+W+jOOBruaWh+Wtl+WIl+OCkuS4iuabuOOBjeOBmeOCi1xuICAgIC8vIOWkieaPm+S4reOBq+mBuOaKnuevhOWbsuOBjOWkieOCj+OCi+OBqOOAgeOBmuOCjOOBn+S9jee9ruOBq+aMv+WFpeOBleOCjOOCi+OBruOBp+azqOaEj1xuICAgIHByb21pc2UudGhlbigoY29udmVydGVkKSA9PiB7XG4gICAgICBpZiAodGV4dCA9PT0gY29udmVydGVkKSByZXR1cm47XG4gICAgICByZXR1cm4gaW5zZXJ0VGV4dChjb252ZXJ0ZWQpO1xuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sXG59KTtcblxuaW1wb3J0ICcuLi/opIfmlbDooYzjgavmiZPjgaHmtojjgZfnt5rjgpLlvJXjgY9Qb3B1cCBNZW51QDAuMy4wL3NjcmlwdC5qcyc7XG5pbXBvcnQgXCIuLi9yZXBsYWNlX3RleHRfVXNlclNjcmlwdOWGjeWun+ijheeJiC9zY3JpcHQuanNcIjtcbmltcG9ydCB7IHNldHVwIH0gZnJvbSAgXCIuLi/opIfmlbDjga7jg6rjg7Pjgq/jgpLjgb7jgajjgoHjgabnva7mj5vjgZnjgotVc2VyU2NyaXB0L2V4YW1wbGUudHNcIjtcblxuc2V0dXAoW1widGFra2VyXCIsIFwidGFra2VyLW1lbWV4XCIsIFwidGFra2VyLXByaXZhdGVcIiwgXCJ0YWtrZXItYm9va3NcIl0pO1xuaW1wb3J0IFwiLi4v5LiA5pem5pS56KGM44KS5raI44GX44Gm5Y+l54K544Gn5pS56KGM44GX55u044GZUG9wdXBNZW51L3NjcmlwdC5qc1wiO1xuaW1wb3J0IFwiLi4v6YG45oqe44GX44GfR3lhem/jga5PQ1Ljg4bjgq3jgrnjg4jjgpLjgrPjg5Tjg7zjgZnjgotVc2VyU2NyaXB0L3BvcHVwTWVudS5qc1wiO1xuaW1wb3J0IFwiLi4v6YG45oqe44GX44GfR3lhem/nlLvlg4/jga50cmltbWluZ+ODmuODvOOCuOOCkumWi+OBj1BvcHVwX01lbnUvc2NyaXB0LmpzXCI7XG5pbXBvcnQgXCIuLi9TY3JhcGJveOiomOazleOCklRlWOiomOazleOBq+WkieaPm+OBmeOCi1BvcHVwTWVudS9zY3JpcHQudHNcIjtcblxuaW1wb3J0IHsgc3RhcnRUYWxrIH0gZnJvbSBcIi4uL3NjcmFwYm94LWtlaWNob2JvdC9tb2QudHNcIjtcbmltcG9ydCB7IHRleHRJbnB1dCB9IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcblxuaWYgKCEvbW9iaWxlL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSkge1xuICBjb25zdCB0YWxrID0gKHRleHQ6IHN0cmluZywgbW9kZT86IFwibm9ybWFsXCIgfCBcImVtcGF0aHlfd3JpdGluZ1wiIHwgXCJLUFRcIiB8IFwidmFsdWVfaHlwb3RoZXNpc1wiKSA9PiB7XG4gICAgaWYgKHRleHQudHJpbSgpID09PSBcIlwiKSByZXR1cm4gdW5kZWZpbmVkO1xuICBcbiAgICBzdGFydFRhbGsoeyBtb2RlIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKCFyZXN1bHQpIHJldHVybjtcbiAgICAgIGNvbnN0IHsgYXNrLCB2aXNpYmxlLCBvbkV4aXQgfSA9IHJlc3VsdDtcbiAgICAgIGNvbnN0IGhhbmRsZUtleWRvd24gPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIXZpc2libGUoKSB8fCBlLmtleSAhPT0gXCJFbnRlclwiIHx8ICFlLmN0cmxLZXkgfHwgZS5hbHRLZXkgfHxcbiAgICAgICAgICBlLnNoaWZ0S2V5XG4gICAgICAgICkgcmV0dXJuO1xuICBcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBhc2soKTtcbiAgICAgIH07XG4gICAgICB0ZXh0SW5wdXQoKSEuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5ZG93bik7XG4gICAgICBvbkV4aXQoKCkgPT4gdGV4dElucHV0KCkhLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleWRvd24pKTtcbiAgICB9KTtcbiAgfTtcbiAgc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gICAgdGl0bGU6ICgpID0+IFwi8J+kllwiLFxuICAgIG9uQ2xpY2s6ICh0ZXh0KSA9PiB0YWxrKHRleHQpLFxuICB9KTtcbiAgLypcbiAgc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gICAgdGl0bGU6ICgpID0+IFwi8J+kluKcje+4j1wiLFxuICAgIG9uQ2xpY2s6ICh0ZXh0KSA9PiB0YWxrKHRleHQsIFwiZW1wYXRoeV93cml0aW5nXCIpLFxuICB9KTtcbiAgc2NyYXBib3guUG9wdXBNZW51LmFkZEJ1dHRvbih7XG4gICAgdGl0bGU6ICgpID0+IFwi8J+klvCfkqFcIixcbiAgICBvbkNsaWNrOiAodGV4dCkgPT4gdGFsayh0ZXh0LCBcInZhbHVlX2h5cG90aGVzaXNcIiksXG4gIH0pOyovXG59IiwgImltcG9ydCB7XG4gIGFkZERheXMsXG4gIGdldFdlZWssXG4gIGdldFllYXIsXG4gIGxpZ2h0Rm9ybWF0LFxuICBzdGFydE9mV2VlayxcbiAgc3ViRGF5cyxcbn0gZnJvbSBcIi4uL2RlcHMvZGF0ZS1mbnMudHNcIjtcblxuLyoqXG4gKiBSZXBsYWNlcyBwbGFjZWhvbGRlcnMgaW4gdGhlIHRlbXBsYXRlIHdpdGggZm9ybWF0dGVkIGRhdGUgdmFsdWVzLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgdXNlZCBmb3IgcmVwbGFjZW1lbnQuXG4gKiBAcGFyYW0gdGVtcGxhdGUgLSBUaGUgdGVtcGxhdGUgY29udGFpbmluZyBwbGFjZWhvbGRlcnMgdG8gYmUgcmVwbGFjZWQuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHJpbmdzIHdpdGggdGhlIHJlcGxhY2VkIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlbXBsYXRlID0gKGRhdGU6IERhdGUsIHRlbXBsYXRlOiBzdHJpbmdbXSk6IHN0cmluZ1tdID0+XG4gIHRlbXBsYXRlLm1hcCgobGluZSkgPT5cbiAgICBsaW5lLnJlcGxhY2UoXG4gICAgICAvQHl5eXktTU0tZGQgSEg6bW06c3NAL2csXG4gICAgICBsaWdodEZvcm1hdChkYXRlLCBcInl5eXktTU0tZGQgSEg6bW06c3NcIiksXG4gICAgKVxuICAgICAgLnJlcGxhY2UoL0B5eXl5LU1NLWRkQC9nLCBsaWdodEZvcm1hdChkYXRlLCBcInl5eXktTU0tZGRcIikpXG4gICAgICAucmVwbGFjZShcbiAgICAgICAgL0B5eXl5LU1NLWRkKD86KFsrLV0pKFxcZCspKHc/KSk/KD86XFwoKFN1bnxNb258VHVlfFdlZHxUaHV8RnJpfFNhdClcXCkpP0AvZyxcbiAgICAgICAgKF8sIHBtLCBkYXlzLCBpc1dlZWssIGRheSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0RhdGUgPSAhcG1cbiAgICAgICAgICAgID8gZGF0ZVxuICAgICAgICAgICAgOiBwbSA9PT0gXCIrXCJcbiAgICAgICAgICAgID8gYWRkRGF5cyhkYXRlLCBwYXJzZUludChkYXlzKSAqIChpc1dlZWsgPT09IFwid1wiID8gNyA6IDEpKVxuICAgICAgICAgICAgOiBzdWJEYXlzKGRhdGUsIHBhcnNlSW50KGRheXMpICogKGlzV2VlayA9PT0gXCJ3XCIgPyA3IDogMSkpO1xuICAgICAgICAgIHJldHVybiBsaWdodEZvcm1hdChcbiAgICAgICAgICAgICFkYXkgPyBuZXdEYXRlIDogYWRkRGF5cyhzdGFydE9mV2VlayhuZXdEYXRlKSwgZGF5VG9OdW1iZXIoZGF5KSksXG4gICAgICAgICAgICBcInl5eXktTU0tZGRcIixcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgKVxuICAgICAgLnJlcGxhY2UoXG4gICAgICAgIC9AeXl5eS13d0AvZyxcbiAgICAgICAgYCR7Z2V0WWVhcihkYXRlKX0tdyR7YCR7Z2V0V2VlayhkYXRlKX1gLnBhZFN0YXJ0KDIsIFwiMFwiKX1gLFxuICAgICAgKVxuICAgICAgLnJlcGxhY2UoXG4gICAgICAgIC9AeXl5eS13dyhbKy1dKShcXGQrKSh3PylAL2csXG4gICAgICAgIChfLCBwbSwgd2Vla3MsIGlzV2VlaykgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0RhdGUgPSBwbSA9PT0gXCIrXCJcbiAgICAgICAgICAgID8gYWRkRGF5cyhkYXRlLCBwYXJzZUludCh3ZWVrcykgKiAoaXNXZWVrID09PSBcIndcIiA/IDcgOiAxKSlcbiAgICAgICAgICAgIDogc3ViRGF5cyhkYXRlLCBwYXJzZUludCh3ZWVrcykgKiAoaXNXZWVrID09PSBcIndcIiA/IDcgOiAxKSk7XG4gICAgICAgICAgcmV0dXJuIGAke2dldFllYXIobmV3RGF0ZSl9LXcke1xuICAgICAgICAgICAgYCR7Z2V0V2VlayhuZXdEYXRlKX1gLnBhZFN0YXJ0KDIsIFwiMFwiKVxuICAgICAgICAgIH1gO1xuICAgICAgICB9LFxuICAgICAgKVxuICApO1xuXG5jb25zdCBkYXlUb051bWJlciA9IChkYXk6IHN0cmluZyk6IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDYgPT4ge1xuICBzd2l0Y2ggKGRheSkge1xuICAgIGNhc2UgXCJTdW5cIjpcbiAgICAgIHJldHVybiAwO1xuICAgIGNhc2UgXCJNb25cIjpcbiAgICAgIHJldHVybiAxO1xuICAgIGNhc2UgXCJUdWVcIjpcbiAgICAgIHJldHVybiAyO1xuICAgIGNhc2UgXCJXZWRcIjpcbiAgICAgIHJldHVybiAzO1xuICAgIGNhc2UgXCJUaHVcIjpcbiAgICAgIHJldHVybiA0O1xuICAgIGNhc2UgXCJGcmlcIjpcbiAgICAgIHJldHVybiA1O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gNjtcbiAgfVxufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlc25leHRcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIi8+XG5pbXBvcnQgeyBTY3JhcGJveCwgdXNlU3RhdHVzQmFyIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtc3RkLWRvbS50c1wiO1xuaW1wb3J0IHsgZ2V0Q29kZUJsb2NrLCBzbGVlcCB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXN0ZC50c1wiO1xuaW1wb3J0IHtcbiAgZGlzY29ubmVjdCxcbiAgbWFrZVNvY2tldCxcbiAgcGF0Y2gsXG4gIFNvY2tldCxcbn0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtd2Vic29ja2V0LnRzXCI7XG5pbXBvcnQge1xuICBhZGREYXlzLFxuICBlYWNoRGF5T2ZJbnRlcnZhbCxcbiAgZWFjaFdlZWtPZkludGVydmFsLFxuICBpc1NhbWVEYXksXG59IGZyb20gXCIuLi9kZXBzL2RhdGUtZm5zLnRzXCI7XG5pbXBvcnQgeyB0ZW1wbGF0ZSB9IGZyb20gXCIuL3RlbXBsYXRlLnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuLyoqXG4gKiBDcmVhdGUgZGFpbHkgYW5kIHJldmlldyBwYWdlcy5cbiAqXG4gKiBAcGFyYW0gcHJvamVjdCAtIFRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0LlxuICogQHBhcmFtIGRhaWx5VGVtcGxhdGUgLSBUaGUgZGFpbHkgdGVtcGxhdGUgZm9yIHJldmlldyBwYWdlcy5cbiAqIEBwYXJhbSB3ZWVrbHlUZW1wbGF0ZSAtIFRoZSB3ZWVrbHkgdGVtcGxhdGUgZm9yIHJldmlldyBwYWdlcy5cbiAqIEByZXR1cm5zIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHJldmlldyBwYWdlcyBhcmUgY3JlYXRlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1haW4gPSBhc3luYyAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgZGFpbHlUZW1wbGF0ZTogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddLFxuICB3ZWVrbHlUZW1wbGF0ZTogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddLFxuKTogUHJvbWlzZTwoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPj4gPT4ge1xuICBpZiAoc2NyYXBib3guUHJvamVjdC5uYW1lICE9PSBwcm9qZWN0KSByZXR1cm4gKCkgPT4ge307XG5cbiAgLy8gc2NyYXBib3guUHJvamVjdC5wYWdlc+OBjOeUn+aIkOOBleOCjOOCi+OBvuOBp+W+heOBpFxuICAvLyDnlJ/miJDjgZfjgZ9wYWdlc+OBr2NhY2hl44GX44Gm44GK44GPXG4gIGxldCBwYWdlcyA9IHNjcmFwYm94LlByb2plY3QucGFnZXM7XG4gIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgdGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAocGFnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHBhZ2VzID0gc2NyYXBib3guUHJvamVjdC5wYWdlcztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSwgMjAwMCk7XG4gIH0pO1xuXG4gIGxldCBzdGFydCA9IG5ldyBEYXRlKDIwMjMsIDEsIDMpO1xuICBjb25zdCBjYWxsYmFjayA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGludGVydmFsID0geyBzdGFydCwgZW5kOiBhZGREYXlzKG5vdywgMSkgfTtcblxuICAgIGNvbnN0IHsgcmVuZGVyLCBkaXNwb3NlIH0gPSB1c2VTdGF0dXNCYXIoKTtcbiAgICBsZXQgc29ja2V0OiBTb2NrZXQgfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIC8vIOODhuODs+ODl+ODrOODvOODiOOCkuWPluW+l1xuICAgICAgY29uc3QgZGFpbHlUZW1wbGF0ZVRleHQgPSBhd2FpdCBmZXRjaFRlbXBsYXRlKGRhaWx5VGVtcGxhdGUpO1xuICAgICAgY29uc3Qgd2Vla2x5VGVtcGxhdGVUZXh0ID0gYXdhaXQgZmV0Y2hUZW1wbGF0ZSh3ZWVrbHlUZW1wbGF0ZSk7XG5cbiAgICAgIC8qIOeUn+aIkOOBmeOCi+aMr+OCiui/lOOCiuODmuODvOOCuOOBruaXpeS7mOODquOCueODiCAqL1xuICAgICAgY29uc3QgZGF0ZXMgPSBlYWNoRGF5T2ZJbnRlcnZhbChpbnRlcnZhbCkuZmlsdGVyKChkYXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gdGVtcGxhdGUoZGF0ZSwgZGFpbHlUZW1wbGF0ZVRleHQpWzBdO1xuICAgICAgICBjb25zdCBwYWdlID0gcGFnZXMuZmluZCgocGFnZSkgPT4gcGFnZS50aXRsZSA9PT0gdGl0bGUpO1xuICAgICAgICByZXR1cm4gIXBhZ2UgfHwgIXBhZ2UuZXhpc3RzO1xuICAgICAgfSk7XG4gICAgICAvKiDnlJ/miJDjgZnjgosx6YCx6ZaT44Gu5oyv44KK6L+U44KK44Oa44O844K444Gu5pel5LuY44Oq44K544OIICovXG4gICAgICBjb25zdCB3ZWVrbHlEYXRlcyA9IGVhY2hXZWVrT2ZJbnRlcnZhbChpbnRlcnZhbCkuZmlsdGVyKChkYXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gdGVtcGxhdGUoZGF0ZSwgd2Vla2x5VGVtcGxhdGVUZXh0KVswXTtcbiAgICAgICAgY29uc3QgcGFnZSA9IHBhZ2VzLmZpbmQoKHBhZ2UpID0+IHBhZ2UudGl0bGUgPT09IHRpdGxlKTtcbiAgICAgICAgcmV0dXJuICFwYWdlIHx8ICFwYWdlLmV4aXN0cztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZGF0ZXMubGVuZ3RoID09PSAwICYmIHdlZWtseURhdGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgICAvLyDku4rml6Xku6XlpJbjga7ml6Xku5jjg5rjg7zjgrjjgpLlpJbjgZlcbiAgICAgIGxldCBjb3VudGVyID0gZGF0ZXMubGVuZ3RoICsgd2Vla2x5RGF0ZXMubGVuZ3RoO1xuICAgICAgcmVuZGVyKFxuICAgICAgICB7IHR5cGU6IFwic3Bpbm5lclwiIH0sXG4gICAgICAgIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IGBjcmVhdGUgJHtjb3VudGVyfSByZXZpZXcgcGFnZXMuLi5gIH0sXG4gICAgICApO1xuXG4gICAgICBzb2NrZXQgPSBhd2FpdCBtYWtlU29ja2V0KCk7XG4gICAgICBmb3IgKFxuICAgICAgICBjb25zdCBsaW5lcyBvZiBbXG4gICAgICAgICAgLi4uZGF0ZXMubWFwKChkYXRlKSA9PiB0ZW1wbGF0ZShkYXRlLCBkYWlseVRlbXBsYXRlVGV4dCkpLFxuICAgICAgICAgIC4uLndlZWtseURhdGVzLm1hcCgoZGF0ZSkgPT4gdGVtcGxhdGUoZGF0ZSwgd2Vla2x5VGVtcGxhdGVUZXh0KSksXG4gICAgICAgIF1cbiAgICAgICkge1xuICAgICAgICBhd2FpdCBwYXRjaChcbiAgICAgICAgICBwcm9qZWN0LFxuICAgICAgICAgIGxpbmVzWzBdLFxuICAgICAgICAgIChfLCBtZXRhZGF0YSkgPT4gbWV0YWRhdGEucGVyc2lzdGVudCA/IHVuZGVmaW5lZCA6IGxpbmVzLFxuICAgICAgICAgIHNvY2tldCA/IHsgc29ja2V0IH0gOiB7fSxcbiAgICAgICAgKTtcbiAgICAgICAgY291bnRlci0tO1xuICAgICAgICByZW5kZXIoXG4gICAgICAgICAgeyB0eXBlOiBcInNwaW5uZXJcIiB9LFxuICAgICAgICAgIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IGBjcmVhdGUgJHtjb3VudGVyfSByZXZpZXcgcGFnZXMuLi5gIH0sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZW5kZXIoXG4gICAgICAgIHsgdHlwZTogXCJjaGVjay1jaXJjbGVcIiB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYGNyZWF0ZWQgJHtkYXRlcy5sZW5ndGggKyB3ZWVrbHlEYXRlcy5sZW5ndGh9IHJldmlldyBwYWdlcy5gLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIHN0YXJ0ID0gbm93O1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgeyB0eXBlOiBcImV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCIgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IGUgaW5zdGFuY2VvZiBFcnJvclxuICAgICAgICAgICAgPyBgJHtlLm5hbWV9ICR7ZS5tZXNzYWdlfWBcbiAgICAgICAgICAgIDogYFVua25vd24gZXJyb3IhIChzZWUgZGV2ZWxvcHBlciBjb25zb2xlKWAsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHNvY2tldCkgYXdhaXQgZGlzY29ubmVjdChzb2NrZXQpO1xuICAgICAgYXdhaXQgc2xlZXAoMTAwMCk7XG4gICAgICBkaXNwb3NlKCk7XG4gICAgfVxuICB9O1xuXG4gIGxldCBkb25lID0gY2FsbGJhY2soKTtcblxuICAvLyDml6Xku5jlpInmm7Tnt5rjgpLotorjgYjjgovjgZ/jgbPjgavlrp/ooYxcbiAgLy8g56uv5pyr44GM44K544Oq44O844OX44GZ44KL44Go44K/44Kk44Oe44O844GM5q2i44G+44KL44Gu44Gn44CBMTDnp5LjgZTjgajjgavjg4Hjgqfjg4Pjgq/jgZnjgotcbiAgbGV0IGNoZWNrZWQgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGlmIChpc1NhbWVEYXkoY2hlY2tlZCwgbm93KSkgcmV0dXJuO1xuICAgIGNoZWNrZWQgPSBub3c7XG4gICAgZG9uZS50aGVuKCgpID0+IGRvbmUgPSBjYWxsYmFjaygpKTtcbiAgfSwgMTAwMDApO1xuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICByZXR1cm4gZG9uZTtcbiAgfTtcbn07XG5cbmNvbnN0IGZldGNoVGVtcGxhdGUgPSBhc3luYyAocGF0aDogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldENvZGVCbG9jayhwYXRoWzBdLCBwYXRoWzFdLCBwYXRoWzJdKTtcbiAgaWYgKCFyZXN1bHQub2spIHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigpO1xuICAgIGVycm9yLm5hbWUgPSByZXN1bHQudmFsdWUubmFtZTtcbiAgICBlcnJvci5tZXNzYWdlID0gYCR7cmVzdWx0LnZhbHVlLm1lc3NhZ2V9IGF0IGZldGNoaW5nIC8ke3BhdGhbMF19LyR7XG4gICAgICBwYXRoWzFdXG4gICAgfS8ke3BhdGhbMl19YDtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIGNvbnN0IHRlbXBsYXRlID0gcmVzdWx0LnZhbHVlLnNwbGl0KFwiXFxuXCIpO1xuICBpZiAodGVtcGxhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0ZW1wbGF0ZSBcIi8ke3BhdGhbMF19LyR7cGF0aFsxXX0vJHtwYXRoWzJdfVwiIGlzIGVtcHR5IWApO1xuICB9XG4gIHJldHVybiB0ZW1wbGF0ZTtcbn07XG4iLCAiZXhwb3J0IGludGVyZmFjZSBJdGVtR3JvdXAge1xuICB0eXBlOiBcImdyb3VwXCI7XG4gIGl0ZW1zOiBJdGVtW107XG59XG5leHBvcnQgdHlwZSBJY29uID1cbiAgfCBcInNwaW5uZXJcIlxuICB8IFwiY2hlY2stY2lyY2xlXCJcbiAgfCBcImd5YXpvXCJcbiAgfCBcIm9jclwiXG4gIHwgXCJjYWxlbmRhclwiXG4gIHwgXCJ0cmltXCJcbiAgfCBcImV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCJcbiAgfCBgY2FyZXQtJHtcInVwXCIgfCBcImRvd25cIiB8IFwibGVmdFwiIHwgXCJyaWdodFwifWBcbiAgfCBgYWxpZ24tJHtcImxlZnRcIiB8IFwiY2VudGVyXCIgfCBcImp1c3RpZnlcIiB8IFwicmlnaHRcIn1gXG4gIHwgXCJjb3B5XCJcbiAgfCBcImN1dFwiXG4gIHwgXCJjbGlwYm9hcmRcIlxuICB8IFwiZXhwYW5kXCJcbiAgfCBcInN0cmlrZXRocm91Z2hcIlxuICB8IFwiaS1jdXJzb3JcIlxuICB8IFwidW5kb1wiXG4gIHwgXCJyZWRvXCJcbiAgfCBcInRpbWVzXCJcbiAgfCBcInNsYXNoXCJcbiAgfCBcImJhblwiXG4gIHwgXCJtYXJrZG93blwiXG4gIHwgXCJsaW5rXCJcbiAgfCBcInVubGlua1wiXG4gIHwgXCJib2xkXCJcbiAgfCBcInN0cmlrZXRocm91Z2hcIlxuICB8IFwiaGlnaGxpZ2h0ZXJcIlxuICB8IFwicmVtb3ZlLWZvcm1hdFwiXG4gIHwgXCJpdGFsaWNcIlxuICB8IFwibWFya2VyXCJcbiAgfCBcImdvb2dsZVwiXG4gIHwgXCJjb2RlXCJcbiAgfCBcInNlYXJjaFwiXG4gIHwgXCJsYW5ndWFnZVwiXG4gIHwgXCJ1bmRlcmxpbmVcIjtcbmV4cG9ydCB0eXBlIEl0ZW0gPVxuICB8IHN0cmluZ1xuICB8IHtcbiAgICB0eXBlOiBJY29uIHwgW0ljb24sIEljb25dO1xuICB9XG4gIHwgeyB0eXBlOiBcInRleHRcIjsgdGV4dDogc3RyaW5nIH1cbiAgfCBJdGVtR3JvdXA7XG5cbmV4cG9ydCBjb25zdCBtYWtlR3JvdXAgPSAoLi4uaXRlbXM6IEl0ZW1bXSk6IEhUTUxTcGFuRWxlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IG5vZGVzID0gaXRlbXMuZmxhdE1hcCgoaXRlbSkgPT4ge1xuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIFttYWtlSXRlbShpdGVtKV07XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0udHlwZSkpIHtcbiAgICAgIHJldHVybiBbbWFrZUljb24oaXRlbS50eXBlKV07XG4gICAgfVxuICAgIHN3aXRjaCAoaXRlbS50eXBlKSB7XG4gICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgICByZXR1cm4gW21ha2VJdGVtKGl0ZW0udGV4dCldO1xuICAgICAgY2FzZSBcImdyb3VwXCI6IHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBtYWtlR3JvdXAoLi4uaXRlbS5pdGVtcyk7XG4gICAgICAgIHJldHVybiBncm91cCA/IFtncm91cF0gOiBbXTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBbbWFrZUljb24oaXRlbS50eXBlKV07XG4gICAgfVxuICB9KTtcbiAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICBpZiAobm9kZXMubGVuZ3RoID09PSAxKSByZXR1cm4gbm9kZXNbMF07XG5cbiAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICBzcGFuLmNsYXNzTGlzdC5hZGQoXCJpdGVtLWdyb3VwXCIpO1xuICBzcGFuLmFwcGVuZCguLi5ub2Rlcyk7XG4gIHJldHVybiBzcGFuO1xufTtcblxuY29uc3QgbWFrZUl0ZW0gPSAoY2hpbGQ6IHN0cmluZyB8IE5vZGUpOiBIVE1MU3BhbkVsZW1lbnQgPT4ge1xuICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gIHNwYW4uY2xhc3NMaXN0LmFkZChcIml0ZW1cIik7XG4gIHNwYW4uYXBwZW5kKGNoaWxkKTtcbiAgcmV0dXJuIHNwYW47XG59O1xuXG5jb25zdCBtYWtlSWNvbiA9IChpY29uOiBJY29uIHwgW0ljb24sIEljb25dKTogSFRNTFNwYW5FbGVtZW50ID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoaWNvbikpIHtcbiAgICBjb25zdCBzdGFjayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgIHN0YWNrLmNsYXNzTGlzdC5hZGQoXCJmYS1zdGFja1wiKTtcbiAgICBjb25zdCBpY29uMSA9IG1ha2VJY29uQmFzZShpY29uWzBdKTtcbiAgICBpY29uMS5jbGFzc0xpc3QuYWRkKFwiZmEtc3RhY2stMXhcIik7XG4gICAgY29uc3QgaWNvbjIgPSBtYWtlSWNvbkJhc2UoaWNvblsxXSk7XG4gICAgaWNvbjIuY2xhc3NMaXN0LmFkZChcImZhLXN0YWNrLTF4XCIpO1xuICAgIHN0YWNrLmFwcGVuZChpY29uMSwgaWNvbjIpO1xuICAgIHJldHVybiBtYWtlSXRlbShzdGFjayk7XG4gIH1cbiAgcmV0dXJuIG1ha2VJdGVtKG1ha2VJY29uQmFzZShpY29uKSk7XG59O1xuXG5jb25zdCBtYWtlSWNvbkJhc2UgPSAoaWNvbjogSWNvbik6IEhUTUxFbGVtZW50ID0+IHtcbiAgY29uc3QgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpXCIpO1xuICBzd2l0Y2ggKGljb24pIHtcbiAgICBjYXNlIFwic3Bpbm5lclwiOlxuICAgICAgaS5jbGFzc0xpc3QuYWRkKFwiZmFcIiwgXCJmYS1zcGlubmVyXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNoZWNrLWNpcmNsZVwiOlxuICAgIGNhc2UgXCJneWF6b1wiOlxuICAgIGNhc2UgXCJvY3JcIjpcbiAgICBjYXNlIFwiY2FsZW5kYXJcIjpcbiAgICBjYXNlIFwidHJpbVwiOlxuICAgICAgaS5jbGFzc0xpc3QuYWRkKFwia2Ftb25cIiwgYGthbW9uLSR7aWNvbn1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJtYXJrZG93blwiOlxuICAgIGNhc2UgXCJnb29nbGVcIjpcbiAgICAgIGkuY2xhc3NMaXN0LmFkZChcImZhYlwiLCBgZmEtJHtpY29ufWApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNvcHlcIjpcbiAgICBjYXNlIFwiY2xpcGJvYXJkXCI6XG4gICAgICBpLmNsYXNzTGlzdC5hZGQoXCJmYXJcIiwgYGZhLSR7aWNvbn1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBpLmNsYXNzTGlzdC5hZGQoXCJmYXNcIiwgYGZhLSR7aWNvbn1gKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBpO1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5pbXBvcnQgeyBJdGVtLCBtYWtlR3JvdXAgfSBmcm9tIFwiLi9pdGVtLnRzXCI7XG5pbXBvcnQgeyBDdXJzb3IsIFNlbGVjdGlvbiwgdGFrZVN0b3JlcyB9IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcbmltcG9ydCB0eXBlIHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vc2NyYXBib3gtanAlMkZ0eXBlcy91c2Vyc2NyaXB0LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuY29uc3QgeyBjdXJzb3IsIHNlbGVjdGlvbiB9ID0gdGFrZVN0b3JlcygpO1xuXG4vKiog44Oc44K/44Oz44Gu6Kit5a6aICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvbiB7XG4gIC8qKiAuc3RhdHVzLWJhciA+IGRpdiDjgavjgaTjgZHjgotjbGFzcyBuYW1lICovXG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgLyoqIOODnOOCv+ODs+OBq+ihqOekuuOBmeOCi+OCouOCpOODhuODoFxuICAgKlxuICAgKiDnqbrmloflrZfjgpLmuKHjgZnjgajpnZ7ooajnpLrjgavjgarjgotcbiAgICpcbiAgICog5Ye95pWw57O744Gv44CB44Kr44O844K944Or44GM5YuV44GP44Gf44Gz44Gr5ZG844Gz5Ye644GV44KM44KLXG4gICAqL1xuICBkaXNwbGF5OiBJdGVtIHwgSXRlbVtdIHwgKChwcm9wczogT21pdDxDbGlja1Byb3BzLCBcInNldERpc3BsYXlcIj4pID0+IEl0ZW0gfCBJdGVtW10pO1xuICBvbkNsaWNrOiAocHJvcHM6IENsaWNrUHJvcHMpID0+IHZvaWQ7XG4gIC8qKiDjg5zjgr/jg7PjgpLooajnpLrjgZnjgovjg5rjg7zjgrjjga7nqK7poZ5cbiAgICpcbiAgICog44OI44OD44OX44Oa44O844K444KEc3RyZWFt44Gq44Gp44CB54m55q6K44Gq44Oa44O844K444Gn5L2/44GE44Gf44GE44Oc44K/44Oz44GM44GC44KM44Gw5oyH5a6a44GZ44KLXG4gICAqXG4gICAqIEBkZWZhdWx0IFwicGFnZVwiXG4gICAqL1xuICBjb250ZXh0PzogQ29udGV4dDtcbn07XG5leHBvcnQgaW50ZXJmYWNlIENsaWNrUHJvcHMge1xuICBjdXJzb3I6IEN1cnNvcjtcbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb247IFxuICBzZXREaXNwbGF5OiAoLi4uaXRlbXM6IEl0ZW1bXSkgPT4gdm9pZDtcbn1cbmV4cG9ydCB0eXBlIENvbnRleHQgPSBcInBhZ2VcIiB8IFwic3RyZWFtXCIgfCBcImxpc3RcIjtcblxuLyoqIOODnOOCv+ODs+OBruaPj+eUu+aDheWgsSAqL1xuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Db21wb25lbnQge1xuICBzdGF0dXM6IEhUTUxEaXZFbGVtZW50O1xuICBjb250ZXh0OiBDb250ZXh0O1xuICB1cGRhdGU6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBtYWtlQnV0dG9uID0gKGluaXQ6IEJ1dHRvbik6IEJ1dHRvbkNvbXBvbmVudCA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lLCBkaXNwbGF5LCBvbkNsaWNrLCBjb250ZXh0ID0gXCJwYWdlXCIgfSA9IGluaXQ7XG4gIGNvbnN0IHN0YXR1cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGlmIChjbGFzc05hbWUpIHN0YXR1cy5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7XG4gIGlmICghaXNDb250ZXh0KGNvbnRleHQpKSBzdGF0dXMuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICBcbiAgY29uc3Qgc2V0RGlzcGxheSA9ICguLi5pdGVtczogSXRlbVtdKSA9PiB7XG4gICAgLy8g56m65paH5a2X44Gu5aC05ZCI44Gv6Z2e6KGo56S644Gr44GZ44KLXG4gICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMSAmJiBpdGVtc1swXSA9PT0gXCJcIikge1xuICAgICAgc3RhdHVzLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3RhdHVzLnRleHRDb250ZW50ID0gXCJcIjtcbiAgICBjb25zdCBncm91cCA9IG1ha2VHcm91cCguLi5pdGVtcyk7XG4gICAgaWYgKGdyb3VwKSBzdGF0dXMuYXBwZW5kKGdyb3VwKTtcbiAgfTtcbiAgY29uc3QgaXRlbUxpc3QgPSB0eXBlb2YgZGlzcGxheSA9PT0gXCJmdW5jdGlvblwiID8gZGlzcGxheSh7IGN1cnNvciwgc2VsZWN0aW9uIH0pIDogZGlzcGxheTtcbiAgc2V0RGlzcGxheSguLi4oQXJyYXkuaXNBcnJheShpdGVtTGlzdCkgPyBpdGVtTGlzdCA6IFtpdGVtTGlzdF0pKTtcbiAgc3RhdHVzLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIG9uQ2xpY2soeyBjdXJzb3IsIHNlbGVjdGlvbiwgc2V0RGlzcGxheSB9KTtcbiAgfSk7XG4gIFxuICBjb25zdCB1cGRhdGUgPSAoKSA9PiB7XG4gICAgaWYgKGlzQ29udGV4dChjb250ZXh0KSkge1xuICAgICAgc3RhdHVzLnJlbW92ZUF0dHJpYnV0ZShcInN0eWxlXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0dXMuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRpc3BsYXkgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgY29uc3QgaXRlbUxpc3QgPSBkaXNwbGF5KHsgY3Vyc29yLCBzZWxlY3Rpb24gfSk7XG4gICAgICBzZXREaXNwbGF5KC4uLihBcnJheS5pc0FycmF5KGl0ZW1MaXN0KSA/IGl0ZW1MaXN0IDogW2l0ZW1MaXN0XSkpO1xuICAgIH1cbiAgfTtcbiAgXG4gIHJldHVybiB7IHN0YXR1cywgY29udGV4dCwgdXBkYXRlIH07XG59O1xuXG5jb25zdCBpc0NvbnRleHQgPSAoY29udGV4dDogQ29udGV4dCk6IGJvb2xlYW4gPT4gXG4gIGNvbnRleHQgIT09IFwic3RyZWFtXCIgP1xuICAgIHNjcmFwYm94LkxheW91dCA9PT0gY29udGV4dCA6XG4gICAgc2NyYXBib3guTGF5b3V0ID09PSBcImxpc3RcIiAmJiBsb2NhdGlvbi5wYXRobmFtZS5zdGFydHNXaXRoKFwiL3N0cmVhbVwiKTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbmV4cG9ydCBjb25zdCBtYWtlTGVmdFN0YXR1c0JhciA9ICgpOiBIVE1MRGl2RWxlbWVudCA9PiB7XG4gIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBzdHlsZS50ZXh0Q29udGVudCA9IGAuc3RhdHVzLWJhci5sZWZ0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIG1heC13aWR0aDogODB2dztcbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xufVxuLnN0YXR1cy1iYXIubGVmdDplbXB0eSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uc3RhdHVzLWJhci5sZWZ0ID4gZGl2IHtcbiAgYm9yZGVyLWxlZnQ6IHVuc2V0O1xufVxuLnN0YXR1cy1iYXIubGVmdCA+IGRpdiB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLXRvb2wtbGlnaHQtY29sb3IsICNhOWFhYWYpO1xufVxuLnN0YXR1cy1iYXIubGVmdCA+IGRpdjpmaXJzdC1vZi10eXBlIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogdW5zZXQ7XG59XG4uc3RhdHVzLWJhci5sZWZ0ID4gZGl2Omxhc3Qtb2YtdHlwZSB7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7XG59YDtcbiAgZG9jdW1lbnQuaGVhZC5hcHBlbmQoc3R5bGUpO1xuXG4gIGNvbnN0IHN0YXR1c0JhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIHN0YXR1c0Jhci5jbGFzc0xpc3QuYWRkKFwic3RhdHVzLWJhclwiLCBcImxlZnRcIik7XG5cbiAgY29uc3QgZm9vdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImZvb3RlclwiKVswXSE7XG4gIGZvb3Rlci5hcHBlbmQoc3RhdHVzQmFyKTtcblxuICByZXR1cm4gc3RhdHVzQmFyO1xufTsiLCAiaW1wb3J0IHsgQnV0dG9uLCBCdXR0b25Db21wb25lbnQsIENvbnRleHQsIG1ha2VCdXR0b24gfSBmcm9tIFwiLi9idXR0b24udHNcIjtcbmltcG9ydCB7IG1ha2VMZWZ0U3RhdHVzQmFyIH0gZnJvbSBcIi4vc3RhdHVzQmFyLnRzXCI7XG5pbXBvcnQgeyB0YWtlU3RvcmVzIH0gZnJvbSBcIi4uL3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkL2RvbS50c1wiO1xuaW1wb3J0IHR5cGUgeyBTY3JhcGJveCB9IGZyb20gXCIuLi9zY3JhcGJveC1qcCUyRnR5cGVzL3VzZXJzY3JpcHQudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuZXhwb3J0IHR5cGUgeyBCdXR0b24sIENvbnRleHQgfTtcblxubGV0IGFuaW1hdGlvbklkOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4vKiog54++5Zyo55m76Yyy44GV44KM44Gm44GE44KL44Oc44K/44Oz44Gu5o+P55S75oOF5aCxICovXG5jb25zdCBidXR0b25zID0gbmV3IFNldDxCdXR0b25Db21wb25lbnQ+KCk7XG5jb25zdCB7IGN1cnNvciwgc2VsZWN0aW9uIH0gPSB0YWtlU3RvcmVzKCk7XG5jb25zdCBzdGF0dXNCYXIgPSBtYWtlTGVmdFN0YXR1c0JhcigpO1xuXG4vKiog5YWo44Gm44Gu44Oc44K/44Oz44KS5YmK6Zmk44GZ44KLXG4gKlxuICogQHBhcmFtIFtjb250ZXh0XSDjgZPjgZPjgavmjIflrprjgZXjgozjgZ/jg5rjg7zjgrjjga7nqK7poZ7jgafooajnpLrjgZnjgovjg5zjgr/jg7Pjga7jgb/liYrpmaTjgZnjgovjgILkvZXjgoLmjIflrprjgZfjgarjgYTjgajjgY3jga/lhajjgabjga7jg5zjgr/jg7PjgpLliYrpmaTjgZnjgotcbiAqL1xuZXhwb3J0IGNvbnN0IHJlbW92ZUFsbEJ1dHRvbnMgPSAoY29udGV4dD86IENvbnRleHQpOiB2b2lkID0+IHtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgc3RhdHVzQmFyLnRleHRDb250ZW50ID0gXCJcIjtcbiAgICBidXR0b25zLmNsZWFyKCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGZvciAoY29uc3QgYnV0dG9uIG9mIGJ1dHRvbnMpIHtcbiAgICBpZiAoYnV0dG9uLmNvbnRleHQgIT09IGNvbnRleHQpIGNvbnRpbnVlO1xuICAgIGJ1dHRvbi5zdGF0dXMucmVtb3ZlKCk7XG4gICAgYnV0dG9ucy5kZWxldGUoYnV0dG9uKTtcbiAgfVxufTtcblxuLyoqIOODnOOCv+ODs+OCkui/veWKoOOBmeOCi1xuICpcbiAqIEBwYXJhbSBpbml0IOODnOOCv+ODs+OBruioreWumlxuICogQHJldHVybiDliYrpmaTnlKjlh73mlbBcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEJ1dHRvbiA9IChpbml0OiBCdXR0b24pOiAoKSA9PiB2b2lkID0+IHtcbiAgY29uc3QgYnV0dG9uID0gbWFrZUJ1dHRvbihpbml0KTtcbiAgYnV0dG9ucy5hZGQoYnV0dG9uKTtcbiAgc3RhdHVzQmFyLmFwcGVuZChidXR0b24uc3RhdHVzKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBidXR0b24uc3RhdHVzLnJlbW92ZSgpO1xuICAgIGJ1dHRvbnMuZGVsZXRlKGJ1dHRvbik7XG4gIH07XG59O1xuXG4vLyDjgqvjg7zjgr3jg6vkvY3nva7jgajpgbjmip7nr4Tlm7Ljga7lpInljJbjgafmj4/nlLvjgZfnm7TjgZlcbmNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgZm9yIChjb25zdCB7IHVwZGF0ZSB9IG9mIGJ1dHRvbnMpIHtcbiAgICB1cGRhdGUoKTtcbiAgfVxufTtcblxuY3Vyc29yLmFkZENoYW5nZUxpc3RlbmVyKCgpID0+IHVwZGF0ZSgpKTtcbnNlbGVjdGlvbi5hZGRDaGFuZ2VMaXN0ZW5lcigoKSA9PiB1cGRhdGUoKSk7XG5zY3JhcGJveC5hZGRMaXN0ZW5lcihcImxheW91dDpjaGFuZ2VkXCIsIHVwZGF0ZSk7XG4iLCAiaW1wb3J0IHR5cGUgeyBDdXJzb3IsIFNlbGVjdGlvbiB9IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcbmltcG9ydCB7XG4gIGdldFRleHQsXG4gIGluc2VydFRleHQsXG4gIHByZXNzLFxufSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvZG9tLnRzXCI7XG5cbi8qKiBwb3J0ZXLjga7mjJnli5XjgavlkIjjgo/jgZvjgZ9jb3B5IGNvbW1hbmQgKi9cbmV4cG9ydCBjb25zdCBwb3J0ZXJDb3B5ID0gYXN5bmMgKGN1cnNvcjogQ3Vyc29yLCBzZWxlY3Rpb246IFNlbGVjdGlvbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHRleHQgPSBzZWxlY3Rpb24uZ2V0U2VsZWN0ZWRUZXh0KCkgfHwgZ2V0VGV4dChjdXJzb3IuZ2V0UG9zaXRpb24oKS5saW5lKTtcbiAgICBpZiAoIXRleHQpIHJldHVybjtcbiAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTtcbiAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgYWxlcnQoYEZhaWxkIHRvIGNvcHk6XFxuJHtKU09OLnN0cmluZ2lmeShlKX1gKTtcbiAgfVxufTtcblxuLyoqIHBvcnRlcuOBruaMmeWLleOBq+WQiOOCj+OBm+OBn2N1dCBjb21tYW5kICovXG5leHBvcnQgY29uc3QgcG9ydGVyQ3V0ID0gYXN5bmMgKGN1cnNvcjogQ3Vyc29yLCBzZWxlY3Rpb246IFNlbGVjdGlvbik6IFByb21pc2U8dm9pZD4gPT4ge1xuIHRyeSB7XG4gICBjb25zdCBoYXNTZWxlY3Rpb24gPSBzZWxlY3Rpb24uaGFzU2VsZWN0aW9uKCk7XG4gICBjb25zdCBzdGFydCA9IGhhc1NlbGVjdGlvbiA/XG4gICAgIHNlbGVjdGlvbi5nZXRSYW5nZSgpLnN0YXJ0LmxpbmUgOlxuICAgICBjdXJzb3IuZ2V0UG9zaXRpb24oKS5saW5lO1xuICAgY29uc3QgdGV4dCA9IGhhc1NlbGVjdGlvblxuICAgICA/IHNlbGVjdGlvbi5nZXRTZWxlY3RlZFRleHQoKVxuICAgICA6IGdldFRleHQoc3RhcnQpO1xuICAgaWYgKCF0ZXh0KSByZXR1cm47XG4gICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTtcbiAgIGlmICghaGFzU2VsZWN0aW9uKSB7XG4gICAgIHNlbGVjdGlvbi5zZXRSYW5nZSh7XG4gICAgICAgc3RhcnQ6IHsgbGluZTogc3RhcnQsIGNoYXI6IDAgfSxcbiAgICAgICBlbmQ6IHsgbGluZTogc3RhcnQsIGNoYXI6IHRleHQubGVuZ3RoIH0sXG4gICAgIH0pO1xuICAgfVxuICAgY3Vyc29yLmZvY3VzKCk7XG4gICBwcmVzcyhcIkRlbGV0ZVwiKTtcbiB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICBjb25zb2xlLmVycm9yKGUpO1xuICAgYWxlcnQoYEZhaWxkIHRvIGN1dDpcXG4ke0pTT04uc3RyaW5naWZ5KGUpfWApO1xuIH1cbn07XG5cbi8qKiBwb3J0ZXLjga7mjJnli5XjgavlkIjjgo/jgZvjgZ9wYXN0ZSBjb21tYW5kICovXG5leHBvcnQgY29uc3QgcG9ydGVyUGFzdGUgPSBhc3luYyAoY3Vyc29yOiBDdXJzb3IpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB0ZXh0ID0gYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkVGV4dCgpO1xuICAgIGlmICghdGV4dCkgcmV0dXJuO1xuICAgIGN1cnNvci5mb2N1cygpO1xuICAgIGF3YWl0IGluc2VydFRleHQodGV4dCk7XG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIGFsZXJ0KGBGYWlsZCB0byBwYXN0ZTpcXG4ke0pTT04uc3RyaW5naWZ5KGUpfWApO1xuICB9XG59O1xuXG4vKiogY3Vyc29y44KS6KGo56S644KS5YiH44KK5pu/44GI44KLXG4gKlxuICogbW9iaWxl44Gg44GocG9wdXAgbWVudeOCkuihqOekuuOBmeOCi2NvbW1hbmTjgajjgZfjgabjgoLkvb/jgYjjgotcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZUNhcmV0ID0gKGN1cnNvcjogQ3Vyc29yKSA9PiB7XG4gIFxuICBpZiAoY3Vyc29yLmdldFZpc2libGUoKSAmJiBjdXJzb3IuaGFzRm9jdXNcbiAgICAvLyBAdHMtaWdub3JlIHByaXZhdGXmibHjgYTjgaDjgZHjganjgIHjgZPjgozjgZfjgYvjgqLjgq/jgrvjgrnmlrnms5XjgYzjgarjgYTjgZ/jgoHkvb/jgo/jgZvjgabjgYTjgZ/jgaDjgY9cbiAgICAmJiBjdXJzb3IudmlzaWJsZVBvcHVwTWVudSkge1xuICAgIGN1cnNvci5oaWRlKCk7XG4gIH0gZWxzZSB7XG4gICAgY3Vyc29yLmZvY3VzKCk7XG4gICAgY3Vyc29yLnNob3dFZGl0UG9wdXBNZW51KCk7XG4gIH1cbn07XG4iLCAiaW1wb3J0IHsgdGFrZUN1cnNvciB9IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcbmdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgKGUpID0+IHtcbiAgaWYgKGUua2V5ICE9PSBcImlcIiB8fCBlLnNoaWZ0S2V5IHx8IGUuYWx0S2V5IHx8IGUubWV0YUtleSB8fCAhZS5jdHJsS2V5KSByZXR1cm47XG4gIGlmIChlLmlzQ29tcG9zaW5nKSByZXR1cm47XG4gIGNvbnN0IGN1cnNvciA9IHRha2VDdXJzb3IoKTtcbiAgaWYgKGN1cnNvci5oYXNGb2N1cykgcmV0dXJuO1xuICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIGN1cnNvci5mb2N1cygpO1xufSk7IiwgImNsYXNzIFNjcmFwYm94RE9NIHtcbiAgZ2V0IGVkaXRvcigpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpO1xuICB9XG4gIGdldCBsaW5lcygpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluZXMnKT8uWzBdO1xuICB9XG4gIGdldCBjb21wdXRlTGluZSgpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbXB1dGUtbGluZScpO1xuICB9XG4gIGdldCBncmlkKCkge1xuICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyZWxhdGVkLXBhZ2UtbGlzdCBjbGVhcmZpeCcpPy5bMF1cbiAgICAgID8uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ3JpZCcpPy5bMF07XG4gIH1cbiAgZ2V0IGN1cnNvckxpbmUoKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2N1cnNvci1saW5lJyk/LlswXTtcbiAgfVxuICBnZXQgdGV4dElucHV0KCkge1xuICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dC1pbnB1dCcpO1xuICB9XG4gIGdldCBjdXJzb3IoKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2N1cnNvcicpPy5bMF07XG4gIH1cbiAgZ2V0IHNlbGVjdGlvbnMoKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3NlbGVjdGlvbnMnKT8uWzBdO1xuICB9XG4gIGdldCBwb3B1cE1lbnUoKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3BvcHVwLW1lbnUnKT8uWzBdO1xuICB9XG4gIGdldCBwYWdlTWVudXMoKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3BhZ2UtbWVudScpPy5bMF07XG4gIH1cbiAgZ2V0IHBhZ2VJbmZvTWVudSgpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtaW5mby1tZW51Jyk7XG4gIH1cbiAgZ2V0IHBhZ2VFZGl0TWVudSgpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtZWRpdC1tZW51Jyk7XG4gIH1cbiAgZ2V0IHBhZ2VFZGl0QnV0dG9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlRWRpdE1lbnUubmV4dEVsZW1lbnRTaWJsaW5nLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhJyk7XG4gIH1cbiAgZ2V0IHJhbmRvbUp1bXBCdXR0b24oKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3JhbmRvbS1qdW1wLWJ1dHRvbicpPy5bMF07XG4gIH1cbiAgZ2V0IHBhZ2VDdXN0b21CdXR0b25zKCkge1xuICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwYWdlLW1lbnUtZXh0ZW5zaW9uJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNjcmFwYm94RE9NID0gbmV3IFNjcmFwYm94RE9NKCk7IiwgImV4cG9ydCBjb25zdCBzbGVlcCA9IChtaWxsaXNlY29uZHMpID0+IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtaWxsaXNlY29uZHMpKTsiLCAiaW1wb3J0IHtzY3JhcGJveERPTX0gZnJvbSAnLi4vc2NyYXBib3gtZG9tLWFjY2Vzc29yL3NjcmlwdC5qcyc7XG5pbXBvcnQge3NsZWVwfSBmcm9tICcuLi9zbGVlcC9zY3JpcHQuanMnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5zZXJ0VGV4dCh0ZXh0LCB7d2FpdCA9IDF9ID0ge30pIHtcbiAgY29uc3QgY3Vyc29yID0gc2NyYXBib3hET00udGV4dElucHV0O1xuICBjdXJzb3IuZm9jdXMoKTtcbiAgY3Vyc29yLnZhbHVlID0gdGV4dDtcbiAgXG4gIGNvbnN0IHVpRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnVUlFdmVudCcpO1xuICB1aUV2ZW50LmluaXRFdmVudCgnaW5wdXQnLCB0cnVlLCBmYWxzZSk7XG4gIGN1cnNvci5kaXNwYXRjaEV2ZW50KHVpRXZlbnQpO1xuICBhd2FpdCBzbGVlcCh3YWl0KTtcbn0iLCAiaW1wb3J0IHtsaWdodEZvcm1hdH0gZnJvbSAnLi4vZGF0ZS1mbnMubWluLmpzL3NjcmlwdC5qcyc7XG5pbXBvcnQge2luc2VydFRleHR9IGZyb20gJy9hcGkvY29kZS90YWtrZXIvc2NyYXBib3gtaW5zZXJ0LXRleHQtMi9zY3JpcHQuanMnO1xuaW1wb3J0IHtpc01vYmlsZX0gZnJvbSAnLi4vbW9iaWxl54mIc2NyYXBib3jjga7liKTlrpovc2NyaXB0LmpzJztcblxuaWYgKGlzTW9iaWxlKCkpIHtcbiAgY29uc3QgaWQgPSAnVGltZXN0YW1wJztcbiAgc2NyYXBib3guUGFnZU1lbnUuYWRkTWVudSh7XG4gICAgdGl0bGU6IGlkLFxuICAgIGltYWdlOiAnaHR0cHM6Ly9pbWcuaWNvbnM4LmNvbS9pb3MvMTgwL0ZGRkZGRi9hZGQtdGltZS5wbmcnLFxuICAgIC8vIGxpZ2h0IHRoZW1l44Gu44Go44GN44Gv4oaT44KS5L2/44GGXG4gICAgLy9pbWFnZTogJ2h0dHBzOi8vaW1nLmljb25zOC5jb20vaW9zLzE4MC9hZGQtdGltZS5wbmcnLFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiAnI1lZWVktTU0tREQgSEg6bW06c3MgJyxcbiAgICBvbkNsaWNrOiAoKSA9PiBpbnNlcnRUZXh0KGxpZ2h0Rm9ybWF0KG5ldyBEYXRlKCksICcjeXl5eS1NTS1kZCBISDptbTpzcyAnKSksXG4gIH0pO1xuICBzY3JhcGJveC5QYWdlTWVudShpZCkuYWRkSXRlbSh7XG4gICAgdGl0bGU6ICdZWVlZLU1NLUREIEhIOm1tOnNzICcsXG4gICAgb25DbGljazogKCkgPT4gaW5zZXJ0VGV4dChsaWdodEZvcm1hdChuZXcgRGF0ZSgpLCAneXl5eS1NTS1kZCBISDptbTpzcyAnKSksXG4gIH0pO1xuICBzY3JhcGJveC5QYWdlTWVudShpZCkuYWRkSXRlbSh7XG4gICAgdGl0bGU6ICdZWVlZLU1NLUREJyxcbiAgICBvbkNsaWNrOiAoKSA9PiBpbnNlcnRUZXh0KGxpZ2h0Rm9ybWF0KG5ldyBEYXRlKCksICd5eXl5LU1NLWRkJykpLFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiAnSEg6bW06c3MgJyxcbiAgICBvbkNsaWNrOiAoKSA9PiBpbnNlcnRUZXh0KGxpZ2h0Rm9ybWF0KG5ldyBEYXRlKCksICdISDptbTpzcyAnKSksXG4gIH0pO1xuICBzY3JhcGJveC5QYWdlTWVudShpZCkuYWRkSXRlbSh7XG4gICAgdGl0bGU6ICfirJwnLFxuICAgIG9uQ2xpY2s6ICgpID0+IGluc2VydFRleHQoJ+KsnCcpLFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiAn8J+apycsXG4gICAgb25DbGljazogKCkgPT4gaW5zZXJ0VGV4dCgn8J+apycpLFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiAn4oybJyxcbiAgICBvbkNsaWNrOiAoKSA9PiBpbnNlcnRUZXh0KCfijJsnKSxcbiAgfSk7XG4gIHNjcmFwYm94LlBhZ2VNZW51KGlkKS5hZGRJdGVtKHtcbiAgICB0aXRsZTogJ/Cfk50nLFxuICAgIG9uQ2xpY2s6ICgpID0+IGluc2VydFRleHQoJ/Cfk50nKSxcbiAgfSk7XG4gIHNjcmFwYm94LlBhZ2VNZW51KGlkKS5hZGRJdGVtKHtcbiAgICB0aXRsZTogJ+KchScsXG4gICAgb25DbGljazogKCkgPT4gaW5zZXJ0VGV4dCgn4pyFJyksXG4gIH0pO1xuICBzY3JhcGJveC5QYWdlTWVudShpZCkuYWRkSXRlbSh7XG4gICAgdGl0bGU6ICfinYwnLFxuICAgIG9uQ2xpY2s6ICgpID0+IGluc2VydFRleHQoJ+KdjCcpLFxuICB9KTtcbn0iLCAic2NyYXBib3guUGFnZU1lbnUuYWRkSXRlbSh7XG4gIHRpdGxlOiBcIk9wZW4ga2FrZXJ1XCIsXG4gIGltYWdlOiBcImh0dHBzOi8vaS5rYWtlcnUuYXBwLzE1YzNiMWE0MGI2YjNjMmViZDY4ZjMzZjRjODZiM2Y2LW9wYXF1ZS5wbmdcIixcbiAgb25DbGljazogKCkgPT4gd2luZG93Lm9wZW4oXCJodHRwczovL2tha2VydS5hcHBcIiksXG59KTsiLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuaW1wb3J0IHsgZGVsZXRlUGFnZSwgZ2V0UGFnZSwgcGF0Y2ggfSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvbW9kLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNwb3J0SW5pdCB7XG4gIC8qKiDou6LpgIHlhYNwcm9qZWN0ICovXG4gIGZyb206IHN0cmluZztcbiAgLyoqIOi7oumAgeWFiHByb2plY3QgKi9cbiAgdG86IHN0cmluZztcbiAgLyoqIOi7oumAgeWFiOOBq+WQjOOBmOOCv+OCpOODiOODq+OBruODmuODvOOCuOOBjOOBguOBo+OBn+OBqOOBjeOBruaMmeWLlVxuICAgKlxuICAgKiAtIGB0cnVlYDog5pyr5bC+44Gr6L+96KiY44GZ44KLXG4gICAqIC0gYGZhbHNlYDog5L2V44KC44GX44Gq44GEXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBtZXJnZT86IGJvb2xlYW47XG59XG5leHBvcnQgdHlwZSBUcmFuc3BvcnRSZXN1bHQgPSB7XG4gIHN1Y2Nlc3M6IHRydWU7XG4gIC8qKiDlkIzlkI3jga7jg5rjg7zjgrjjgYzou6LpgIHlhYjjgavjgYLjgaPjgZ/jgol0cnVlICovXG4gIGR1cDogYm9vbGVhbjtcbn0gfCB7XG4gIHN1Y2Nlc3M6IGZhbHNlO1xuICBhdDogXCJmcm9tXCIgfCBcInRvXCI7XG4gIG5hbWU6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufTtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cmFuc3BvcnQodGl0bGU6IHN0cmluZywge1xuICBmcm9tLFxuICB0byxcbiAgbWVyZ2UsXG59OiBUcmFuc3BvcnRJbml0KTogUHJvbWlzZTxUcmFuc3BvcnRSZXN1bHQ+IHtcbiAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBkdXA6IGZhbHNlIH07XG5cbiAgLy8g6Lui6YCB44GZ44KL44Oa44O844K444KS5Y+W5b6XXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGdldFBhZ2UoZnJvbSwgdGl0bGUpO1xuICBpZiAoIXJlcy5vaykge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGF0OiBcImZyb21cIixcbiAgICAgIG5hbWU6IHJlcy52YWx1ZS5uYW1lLFxuICAgICAgbWVzc2FnZTogcmVzLnZhbHVlLm1lc3NhZ2UsXG4gICAgfTtcbiAgfVxuICBjb25zdCBwYWdlID0gcmVzLnZhbHVlO1xuICBpZiAoIXBhZ2UucGVyc2lzdGVudCkge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGF0OiBcImZyb21cIixcbiAgICAgIG5hbWU6IFwiRW1wdHlQYWdlRXJyb3JcIixcbiAgICAgIG1lc3NhZ2U6IFwiVGhlIHJlcXVlc3QgcGFnZSBpcyBlbXB0eS5cIixcbiAgICB9O1xuICB9XG5cbiAgLy8g6Lui6YCB5YWI44Oa44O844K444GM44GC44KL44GL44Gp44GG44GL44KS6Kq/44G544KLXG4gIGNvbnN0IHJlczIgPSBhd2FpdCBnZXRQYWdlKHRvLCB0aXRsZSk7XG4gIGlmICghcmVzMi5vaykge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGF0OiBcInRvXCIsXG4gICAgICBuYW1lOiByZXMyLnZhbHVlLm5hbWUsXG4gICAgICBtZXNzYWdlOiByZXMyLnZhbHVlLm1lc3NhZ2UsXG4gICAgfTtcbiAgfVxuICBjb25zdCBwYWdlMiA9IHJlcy52YWx1ZTtcbiAgaWYgKHBhZ2UyLnBlcnNpc3RlbnQgJiYgIW1lcmdlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgYXQ6IFwidG9cIixcbiAgICAgIG5hbWU6IFwiTm9FbXB0eVBhZ2VFcnJvclwiLFxuICAgICAgbWVzc2FnZTogYFRoZSBzYW1lIHBhZ2UgYWxyZWFkeSBleGlzdHMgaW4gXCIvJHt0b31cImAsXG4gICAgfTtcbiAgfVxuXG4gIC8vIOi7oumAgeOBmeOCi1xuICBhd2FpdCBwYXRjaChcbiAgICB0byxcbiAgICB0aXRsZSxcbiAgICAobGluZXMpID0+IFsuLi5saW5lcywgLi4ucGFnZS5saW5lcy5zbGljZSgxKV0ubWFwKChsaW5lKSA9PiBsaW5lLnRleHQpLFxuICApO1xuICBhd2FpdCBkZWxldGVQYWdlKGZyb20sIHRpdGxlKTtcbiAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgZHVwOiBwYWdlMi5wZXJzaXN0ZW50IH07XG59IiwgImltcG9ydCB7IHRyYW5zcG9ydCB9IGZyb20gXCIuL21vZC50c1wiO1xuaW1wb3J0IHtcbiAgdXNlU3RhdHVzQmFyLFxuICBlbmNvZGVUaXRsZVVSSSxcbn0gZnJvbSBcIi4uL3NjcmFwYm94LXVzZXJzY3JpcHQtc3RkL2RvbS50c1wiO1xuaW1wb3J0IHR5cGUge1xuICBTY3JhcGJveFxufSBmcm9tIFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NjcmFwYm94LWpwL3R5cGVzLzAuMC44L21vZC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmV4cG9ydCBjb25zdCB0cmFuc3BvcnRQYWdlID0gYXN5bmMgKCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiA9PiB7XG4gIGNvbnN0IHRpdGxlID0gc2NyYXBib3guUGFnZS50aXRsZSE7XG4gIGNvbnN0IGZyb20gPSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWU7XG4gIGNvbnN0IHRvID0gd2luZG93LnByb21wdChcbiAgICBgVGFrZSBcIi8ke2Zyb219LyR7dGl0bGV9XCIgZnJvbSBcIiR7ZnJvbX1cIiB0bzpgLFxuICAgIFwidGFra2VyXCIsXG4gICk7XG4gIGlmICghdG8pIHJldHVybjtcbiAgXG4gIGNvbnN0IHsgcmVuZGVyLCBkaXNwb3NlIH0gPSB1c2VTdGF0dXNCYXIoKTtcbiAgcmVuZGVyKFxuICAgIHsgdHlwZTogXCJzcGlubmVyXCIgfSxcbiAgICB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBgLyR7ZnJvbX0vJHt0aXRsZX0g4oaSIC8ke3RvfS8ke3RpdGxlfWAgfVxuICApO1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zcG9ydCh0aXRsZSwgeyBmcm9tLCB0bywgbWVyZ2U6IHRydWUgfSk7XG4gICAgaWYgKCFyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgcmVuZGVyKFxuICAgICAgICB7IHR5cGU6IFwiZXhjbGFtYXRpb24tdHJpYW5nbGVcIiB9LFxuICAgICAgICB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBgJHtyZXN1bHQubmFtZX0gJHtyZXN1bHQubWVzc2FnZX1gLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgcmVuZGVyKFxuICAgICAgeyB0eXBlOiBcImNoZWNrLWNpcmNsZVwiIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgTW92ZWQgJHtyZXN1bHQuZHVwID8gXCJhbmQgbWVyZ2VkIFwiIDogXCJcIn10byBcIi8ke3RvfS8ke3RpdGxlfVwiLmBcbiAgICAgIH0sXG4gICAgKTtcbiAgICByZXR1cm4gYGh0dHBzOi8vc2NyYXBib3guaW8vJHt0b30vJHtlbmNvZGVUaXRsZVVSSSh0aXRsZSl9YDtcbiAgfSBjYXRjaChlOiB1bmtub3duKSB7XG4gICAgcmVuZGVyKFxuICAgICAgeyB0eXBlOiBcImV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCIgfSxcbiAgICAgIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IGUgaW5zdGFuY2VvZiBFcnJvciA/XG4gICAgICAgIGAke2UubmFtZX0gJHtlLm1lc3NhZ2V9YCA6XG4gICAgICAgIGBVbmtub3duIGVycm9yISAoc2VlIGRldmVsb3BwZXIgY29uc29sZSlgLFxuICAgICAgfSxcbiAgICApO1xuICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gIH0gZmluYWxseSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiBkaXNwb3NlKCksIDEwMDApO1xuICB9XG59O1xuIiwgImltcG9ydCB7IHRyYW5zcG9ydFBhZ2UgfSBmcm9tIFwiLi90cmFuc3BvcnRQYWdlLnRzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIFNjcmFwYm94XG59IGZyb20gXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc2NyYXBib3gtanAvdHlwZXMvMC4wLjgvbW9kLnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcblxuc2NyYXBib3guUGFnZU1lbnUuYWRkSXRlbSh7XG4gIHRpdGxlOiBcIlRyYW5zcG9ydFwiLFxuICBvbkNsaWNrOiBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdHJhbnNwb3J0UGFnZSgpO1xuICB9LFxufSk7XG5zY3JhcGJveC5QYWdlTWVudS5hZGRJdGVtKHtcbiAgdGl0bGU6IFwiVHJhbnNwb3J0IGFuZCBPcGVuXCIsXG4gIG9uQ2xpY2s6IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1cmwgPSBhd2FpdCB0cmFuc3BvcnRQYWdlKCk7XG4gICAgaWYgKCF1cmwpIHJldHVybjtcbiAgICB3aW5kb3cub3Blbih1cmwpO1xuICB9LFxufSk7XG4gICAiLCAiZXhwb3J0IGNvbnN0IGZvcm1hdFRpdGxlID0gKHRpdGxlOiBzdHJpbmcpID0+IHRpdGxlXG4gIC5yZXBsYWNlKC9bXFxbXFxdXS9nLCBcIlwiKVxuICAucmVwbGFjZSgvXFxzL2csIFwiIFwiKTtcblxuY29uc3QgemVybyA9IChuOiBudW1iZXIpID0+IGAke259YC5wYWRTdGFydCgyLCBcIjBcIik7XG5leHBvcnQgY29uc3QgdG9ZWVlZTU1ERF9ISE1NU1MgPSAoZGF0ZTogRGF0ZSkgPT5cbiAgYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0ke3plcm8oZGF0ZS5nZXRNb250aCgpICsgMSl9LSR7XG4gICAgemVybyhkYXRlLmdldERhdGUoKSlcbiAgfSAke3plcm8oZGF0ZS5nZXRIb3VycygpKX06JHtcbiAgICB6ZXJvKGRhdGUuZ2V0TWludXRlcygpKVxuICB9OiR7emVybyhkYXRlLmdldFNlY29uZHMoKSl9YDtcbmV4cG9ydCBjb25zdCB0b1lZWVlNTUREID0gKGRhdGU6IERhdGUpID0+XG4gIGAke2RhdGUuZ2V0RnVsbFllYXIoKX0tJHt6ZXJvKGRhdGUuZ2V0TW9udGgoKSArIDEpfS0ke1xuICAgIHplcm8oZGF0ZS5nZXREYXRlKCkpXG4gIH1gO1xuIiwgImltcG9ydCB7XG4gIHBhdGNoLFxuICB1c2VTdGF0dXNCYXIsXG4gIG9wZW5JblRoZVNhbWVUYWIsXG4gIFNvY2tldCxcbiAgbWFrZVNvY2tldCxcbiAgZGlzY29ubmVjdCxcbiAgc2xlZXAsXG4gIGNhcmV0LFxufSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvbW9kLnRzXCI7XG5pbXBvcnQge1xuICBnZXRJbmRlbnRMaW5lQ291bnQsXG4gIGdldEluZGVudENvdW50LFxufSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvdGV4dC50c1wiO1xuaW1wb3J0IHsgZm9ybWF0VGl0bGUsIHRvWVlZWU1NRERfSEhNTVNTLCB0b1lZWVlNTUREIH0gZnJvbSBcIi4vdXRpbC50c1wiO1xuXG50eXBlIFBhZ2UgPSBzdHJpbmdbXTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZFRvSW5ib3goXG4gIHByb2plY3Q6IHN0cmluZywgdGl0bGU6IHN0cmluZywgbGluZXM6IHN0cmluZ1tdLFxuICBvcHRpb25zPzogeyBzb2NrZXQ6IFNvY2tldCB9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgcmVuZGVyLCBkaXNwb3NlIH0gPSB1c2VTdGF0dXNCYXIoKTtcbiAgXG4gIGNvbnN0IGl0ZW1zOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBwYWdlczogUGFnZVtdID0gW107XG4gIGZvciAoY29uc3QgYmxvY2sgb2YgcGFyc2UobGluZXMpKSB7XG4gICAgaWYgKGJsb2NrLnR5cGUgPT09IFwibGluZVwiKSB7XG4gICAgICBpdGVtcy5wdXNoKGBbJHtmb3JtYXRUaXRsZShibG9jay50ZXh0KX1+QCR7dG9ZWVlZTU1ERChuZXcgRGF0ZSgpKX1dYCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgdGl0bGUgPSBgJHtmb3JtYXRUaXRsZShibG9jay5saW5lc1swXSl9fkAke3RvWVlZWU1NREQobmV3IERhdGUoKSl9YDtcbiAgICBwYWdlcy5wdXNoKFtcbiAgICAgIHRpdGxlLFxuICAgICAgLi4uYmxvY2subGluZXMuc2xpY2UoMSksXG4gICAgICBcIlwiLFxuICAgICAgYCMke3RvWVlZWU1NRERfSEhNTVNTKG5ldyBEYXRlKCkpfWAsXG4gICAgXSk7XG4gICAgaXRlbXMucHVzaChgWyR7dGl0bGV9XWApO1xuICB9XG5cbiAgbGV0IHNvY2tldCA9IG9wdGlvbnM/LnNvY2tldDtcbiAgdHJ5IHtcbiAgICBzb2NrZXQgPz89IGF3YWl0IG1ha2VTb2NrZXQoKTtcbiAgICByZW5kZXIoXG4gICAgICB7IHR5cGU6IFwic3Bpbm5lclwiIH0sXG4gICAgICB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBgQWRkaW5nICR7aXRlbXMubGVuZ3RofSBpdGVtcy4uLmAgfSxcbiAgICApO1xuICAgIGF3YWl0IHBhdGNoKHByb2plY3QsIHRpdGxlLCAoX2xpbmVzKSA9PiB7XG4gICAgICBjb25zdCBsaW5lcyA9IF9saW5lcy5tYXAoKGxpbmUpID0+IGxpbmUudGV4dCk7XG4gICAgICBjb25zdCBsYXN0U2VwYXJhdG9ySW5kZXggPSBsaW5lcy5mbGF0TWFwKFxuICAgICAgICAobGluZSwgaSkgPT4gbGluZS50cmltKCkgPT09IFwiWy9pY29ucy9oci5pY29uXVwiID8gW2ldIDogW11cbiAgICAgICkucG9wKCkgPz8gLTE7XG4gICAgICAvLyDku5XliIfjgornt5rjgYzopovjgaTjgYvjgonjgarjgZHjgozjgbDjgIHmnKvlsL7jgavov73oqJjjgZnjgotcbiAgICAgIGlmIChsYXN0U2VwYXJhdG9ySW5kZXggPCAwKSByZXR1cm4gWy4uLmxpbmVzLCAuLi5pdGVtc107XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi5saW5lcy5zbGljZSgwLCBsYXN0U2VwYXJhdG9ySW5kZXgpLFxuICAgICAgICAuLi5pdGVtcyxcbiAgICAgICAgLi4ubGluZXMuc2xpY2UobGFzdFNlcGFyYXRvckluZGV4KSxcbiAgICAgIF07XG4gICAgfSwgeyBzb2NrZXQgfSk7XG4gICAgcmVuZGVyKFxuICAgICAgeyB0eXBlOiBcInNwaW5uZXJcIiB9LFxuICAgICAgeyB0eXBlOiBcInRleHRcIiwgdGV4dDogYENyZWF0ZSAke3BhZ2VzLmxlbmd0aH0gcGFnZXMuLi5gIH0sXG4gICAgKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChwYWdlcy5tYXAoXG4gICAgICAocGFnZSkgPT4gcGF0Y2gocHJvamVjdCwgcGFnZVswXSwgKGxpbmVzKSA9PiBbXG4gICAgICAgIGxpbmVzWzBdLnRleHQsXG4gICAgICAgIC4uLmxpbmVzLnNsaWNlKDEpLm1hcCgobGluZSkgPT4gbGluZS50ZXh0KSxcbiAgICAgICAgLi4ucGFnZS5zbGljZSgxKSxcbiAgICAgIF0sIHsgc29ja2V0IH0pXG4gICAgKSk7XG4gICAgcmVuZGVyKFxuICAgICAgeyB0eXBlOiBcImNoZWNrLWNpcmNsZVwiIH0sXG4gICAgICB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBcIkFkZGVkIHRvIHRoZSBpbmJveC5cIiB9LFxuICAgICk7XG4gIH0gY2F0Y2goZTogdW5rbm93bikge1xuICAgIHJlbmRlcihcbiAgICAgIHsgdHlwZTogXCJleGNsYW1hdGlvbi10cmlhbmdsZVwiIH0sXG4gICAgICB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBcIkZhaWxlZCB0byBhZGQgKHNlZSBjb25zb2xlKS4gV3JpdGUgZGlyZWN0b3J5IGluc3RlYWQuXCIgfSxcbiAgICApO1xuICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgb3BlbkluVGhlU2FtZVRhYihwcm9qZWN0LCB0aXRsZSwgWy4uLml0ZW1zLCAuLi5wYWdlc10uam9pbihcIlxcblwiKSk7XG4gIH0gZmluYWxseSB7XG4gICAgY29uc3Qgd2FpdGluZyA9IHNsZWVwKDEwMDApO1xuICAgIGlmIChzb2NrZXQpIGF3YWl0IGRpc2Nvbm5lY3Qoc29ja2V0KTtcbiAgICBhd2FpdCB3YWl0aW5nO1xuICAgIGRpc3Bvc2UoKTtcbiAgfVxufVxuXG50eXBlIEJsb2NrID0geyB0eXBlOiBcImxpbmVcIjsgdGV4dDogc3RyaW5nOyB9IHwgeyB0eXBlOiBcImJsb2NrXCI7IGxpbmVzOiBzdHJpbmdbXTsgfTtcbmZ1bmN0aW9uKiBwYXJzZShsaW5lczogc3RyaW5nW10pOiBHZW5lcmF0b3I8QmxvY2ssIHZvaWQsIHVua25vd24+IHtcbiAgbGV0IGluZGV4ID0gMDtcbiAgd2hpbGUgKGluZGV4IDwgbGluZXMubGVuZ3RoKSB7XG4gICAgY29uc3QgY291bnQgPSBnZXRJbmRlbnRMaW5lQ291bnQoaW5kZXgsIGxpbmVzKTtcbiAgICBpZiAoY291bnQgPT09IDApIHtcbiAgICAgIHlpZWxkIHsgdHlwZTogXCJsaW5lXCIsIHRleHQ6IGxpbmVzW2luZGV4XS50cmltKCkgfTtcbiAgICAgIGluZGV4Kys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgaW5kZW50TnVtID0gZ2V0SW5kZW50Q291bnQobGluZXNbaW5kZXhdKTtcbiAgICB5aWVsZCB7XG4gICAgICB0eXBlOiBcImJsb2NrXCIsXG4gICAgICBsaW5lczogbGluZXMuc2xpY2UoaW5kZXgsIGluZGV4ICsgY291bnQgKyAxKVxuICAgICAgICAubWFwKGxpbmUgPT4gbGluZS5zbGljZShpbmRlbnROdW0pKSxcbiAgICB9O1xuICAgIGluZGV4ICs9IGNvdW50ICsgMTtcbiAgfVxufVxuIiwgImltcG9ydCB7IGFkZFRvSW5ib3ggfSBmcm9tIFwiLi9hZGRUb0luYm94LnRzXCI7XG5pbXBvcnQge1xuICBjYXJldCxcbiAgcGF0Y2gsXG4gIGdldExpbmVzLFxuICBtYWtlU29ja2V0LFxufSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvbW9kLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFNjcmFwYm94IH0gZnJvbSBcImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9zY3JhcGJveC1qcC90eXBlcy8wLjAuOC9tb2QudHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG4vKiogUHJvbXB044GL44KJaW5ib3jjgavmipXlhaXjgZnjgotcbiAgKlxuICAqIEBwYXJhbSBwcm9qZWN0IOaKleWFpeWFiGluYm9444Oa44O844K444GM44GC44KLcHJvamVjdFxuICAqIEBwYXJhbSB0aXRsZSDmipXlhaXlhYhpbmJveOODmuODvOOCuOOBruOCv+OCpOODiOODq1xuICAqL1xuZXhwb3J0IGNvbnN0IGFkZFRvSW5ib3hGcm9tUHJvbXB0ID0gYXN5bmMgKFxuICBwcm9qZWN0OiBzdHJpbmcsXG4gIHRpdGxlOiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgdGV4dCA9IHdpbmRvdy5wcm9tcHQoXCJUeXBlIGFsbCB5b3UgdGhpbmsgb2ZcIiwgXCJcIik7XG4gIGlmICghdGV4dCB8fCB0ZXh0LnRyaW0oKSA9PT0gXCJcIikgcmV0dXJuO1xuICBjb25zdCBpdGVtcyA9IHRleHQudHJpbSgpLnNwbGl0KC9cXHMrLyk7XG4gIFxuICBhd2FpdCBhZGRUb0luYm94KHByb2plY3QsIHRpdGxlLCBpdGVtcyk7XG59O1xuXG4vKiog6YG45oqe56+E5Zuy44Gr44GL44GL44Gj44Gm44GE44KL6KGM44KSaW5ib3jjgavmipXlhaXjgZnjgotcbiAgKlxuICAqIEBwYXJhbSBwcm9qZWN0IOaKleWFpeWFiGluYm9444Oa44O844K444GM44GC44KLcHJvamVjdFxuICAqIEBwYXJhbSB0aXRsZSDmipXlhaXlhYhpbmJveOODmuODvOOCuOOBruOCv+OCpOODiOODq1xuICAqIEBwYXJhbSBvcHRpb24gYGZhbGxiYWNrVG9Qcm9tcHRg44KSYHRydWVg44Gr44GZ44KL44Go44CB6YG45oqe56+E5Zuy44GM44Gq44GE44Go44GrYGFkZFRvSW5ib3hGcm9tUHJvbXB0KClg44KS6LW35YuV44GZ44KL44KI44GG44Gr44Gq44KLXG4gICovXG5leHBvcnQgY29uc3QgYWRkVG9JbmJveEZyb21TZWxlY3Rpb24gPSBhc3luYyAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgdGl0bGU6IHN0cmluZyxcbiAgb3B0aW9uPzogeyBmYWxsYmFja1RvUHJvbXB0PzogYm9vbGVhbiB9LFxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIC8vIHNjcmFwYm94LlBhZ2UudGl0bGUg44GMbnVsbOOBp+OBquOBhOadoeS7tlxuICBpZiAoc2NyYXBib3guTGF5b3V0ICE9PSBcInBhZ2VcIikgcmV0dXJuO1xuICBjb25zdCB7IHNlbGVjdGlvblJhbmdlLCBzZWxlY3RlZFRleHQgfSA9IGNhcmV0KCk7XG4gIGlmIChzZWxlY3RlZFRleHQgPT09IFwiXCIpIHtcbiAgICBpZiAoIW9wdGlvbj8uZmFsbGJhY2tUb1Byb21wdCkgcmV0dXJuO1xuICAgIHJldHVybiBhZGRUb0luYm94RnJvbVByb21wdChwcm9qZWN0LCB0aXRsZSk7IFxuICB9XG4gIFxuICBjb25zdCBzdGFydCA9IE1hdGgubWluKFxuICAgIHNlbGVjdGlvblJhbmdlLnN0YXJ0LmxpbmUsXG4gICAgc2VsZWN0aW9uUmFuZ2UuZW5kLmxpbmUsXG4gICk7XG4gIGNvbnN0IGVuZCA9IE1hdGgubWF4KFxuICAgIHNlbGVjdGlvblJhbmdlLnN0YXJ0LmxpbmUsXG4gICAgc2VsZWN0aW9uUmFuZ2UuZW5kLmxpbmUsXG4gICk7XG4gIGNvbnN0IGxpbmVzID0gZ2V0TGluZXMoKS5zbGljZShzdGFydCwgZW5kICsgMSk7XG4gIGNvbnN0IHNvY2tldCA9IGF3YWl0IG1ha2VTb2NrZXQoKTtcbiAgYXdhaXQgYWRkVG9JbmJveChwcm9qZWN0LCB0aXRsZSwgbGluZXMubWFwKChsaW5lKSA9PiBsaW5lLnRleHQpLCB7IHNvY2tldCB9KTtcbiAgXG4gIGF3YWl0IHBhdGNoKFxuICAgIHNjcmFwYm94LlByb2plY3QubmFtZSxcbiAgICBzY3JhcGJveC5QYWdlLnRpdGxlLFxuICAgIChsaW5lc18pID0+IHtcbiAgICAgIGNvbnN0IGxpbmVzMiA9IGxpbmVzXy5tYXAoKGxpbmUpID0+IGxpbmUudGV4dCk7XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi5saW5lczIuc2xpY2UoMCwgc3RhcnQpLFxuICAgICAgICAuLi5saW5lczIuc2xpY2UoZW5kICsgMSksXG4gICAgICBdO1xuICAgIH0sXG4gICAgeyBzb2NrZXQgfSxcbiAgKTtcbn07IiwgImNvbnN0IGJ1dHRvbkZpbGVOYW1lID0gJ2J1dHRvbi4nO1xuXG5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBhc3luYyBlID0+IHtcbiAgY29uc3QgdCA9IGUudGFyZ2V0O1xuICBpZiAoISh0LnRhZ05hbWUgPT09ICdJTUcnICYmIHQuY2xhc3NMaXN0LmNvbnRhaW5zKCdpY29uJykgJiYgdC50aXRsZS5lbmRzV2l0aCgnLWJ1dHRvbicpKSlyZXR1cm47IFxuXHRcbiAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICB0cnkge1xuICAgIGNvbnN0IHBhdGggPSBgLi4vJHtlbmNvZGVVUklDb21wb25lbnQodC50aXRsZSl9LyR7YnV0dG9uRmlsZU5hbWV9YFxuICAgIGNvbnN0IHtleGVjdXRlfSA9IGF3YWl0IGltcG9ydChwYXRoKTtcbiAgICBleGVjdXRlKCk7XG4gIH0gY2F0Y2goZSkge1xuICAgIGNvbnNvbGUubG9nKGUpO1xuICB9XG59KTsiLCAic2NyYXBib3guUGFnZU1lbnUuYWRkSXRlbSh7XG4gIHRpdGxlOiBcIkNvcHkgbGluayBmb3IgTWFya2Rvd25cIixcbiAgb25DbGljazogKCkgPT4ge1xuICAgIGNvbnN0IHRpdGxlID0gc2NyYXBib3guUGFnZS50aXRsZVxuICAgICAgLnJlcGxhY2VBbGwoXCIgXCIsIFwiX1wiKVxuICAgICAgLnJlcGxhY2UoL1svPyNcXHt9Xnw8Pl0vZywgKGNoYXIpID0+IGVuY29kZVVSSUNvbXBvbmVudChjaGFyKSk7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZFxuICAgICAgLndyaXRlVGV4dChgWyR7c2NyYXBib3guUGFnZS50aXRsZX1dKGh0dHBzOi8vJHtsb2NhdGlvbi5ob3N0bmFtZX0vJHtzY3JhcGJveC5Qcm9qZWN0Lm5hbWV9LyR7dGl0bGV9JHtsb2NhdGlvbi5oYXNofSlgKVxuICAgICAgLmNhdGNoKGU9PmFsZXJ0KGAke2UubmFtZX06ICR7ZS5tZXNzYWdlfWApKTtcbiAgfSxcbn0pOyIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCIuLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7XG4gIEludmFsaWREYXRlRXJyb3IsXG4gIHBhcnNlLFxuICBUYXNrIGFzIFRhc2tCYXNlLFxuICBUYXNrUmFuZ2VFcnJvcixcbn0gZnJvbSBcIi4uL2hvd20vcGFyc2UudHNcIjtcbmltcG9ydCB7XG4gIGNoZWNrLFxuICBkZWNvZGUsXG4gIGxvYWQgYXMgbG9hZExpbmtzLFxuICBzdWJzY3JpYmUsXG59IGZyb20gXCIuLi9kZXBzL3N0b3JhZ2UudHNcIjtcbmltcG9ydCB7IHRvVGl0bGVMYyB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXN0ZC50c1wiO1xuaW1wb3J0IHsgUGF0aCB9IGZyb20gXCIuL3BhdGgudHNcIjtcblxuZXhwb3J0IHR5cGUgeyBJbnZhbGlkRGF0ZUVycm9yLCBUYXNrQmFzZSwgVGFza1JhbmdlRXJyb3IgfTtcbmV4cG9ydCB0eXBlIFRhc2sgPSBUYXNrQmFzZSAmIFBhdGg7XG5cbmV4cG9ydCB0eXBlIFRhc2tFcnJvciA9IFBhdGggJiAoSW52YWxpZERhdGVFcnJvciB8IFRhc2tSYW5nZUVycm9yKTtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VUYXNrQ3Jhd2xlclJlc3VsdCB7XG4gIC8qKiDoqq3jgb/ovrzjgpPjgaDkuojlrprjgajjgr/jgrnjgq8gKi9cbiAgdGFza3M6IFRhc2tbXTtcbiAgLyoqIOani+aWh+OCqOODqeODvOOBjOeUn+OBmOOBn+OCv+OCueOCr+OBruOCqOODqeODvOaDheWgsSAqL1xuICBlcnJvcnM6IFRhc2tFcnJvcltdO1xuICAvKiog44K/44K544Kv44KS6Kqt44G/6L6844KAICovXG4gIGxvYWQ6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIC8qKiDkuojlrprjg7vjgr/jgrnjgq/jgpLoqq3jgb/ovrzjgb/kuK3jgarjgolgdHJ1ZWAgKi9cbiAgbG9hZGluZzogYm9vbGVhbjtcbn1cblxuLyoqIOaMh+WumuOBleOCjOOBn3Byb2plY3Rz44GL44KJ5LqI5a6a44Go44K/44K544Kv44KS44GZ44G544Gm6Kqt44G/6L6844KAaG9va1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0cyDoqq3jgb/ovrzjgoDjg5fjg63jgrjjgqfjgq/jg4jlkI3jga7phY3liJdcbiAqIEByZXR1cm4g6Kqt44G/6L6844KT44Gg44OH44O844K/44Go5pON5L2c5Ye95pWwXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VUYXNrQ3Jhd2xlciA9IChwcm9qZWN0czogc3RyaW5nW10pOiBVc2VUYXNrQ3Jhd2xlclJlc3VsdCA9PiB7XG4gIGNvbnN0IFt0YXNrcywgc2V0VGFza3NdID0gdXNlU3RhdGU8VGFza1tdPihbXSk7XG4gIGNvbnN0IFtlcnJvcnMsIHNldEVycm9yc10gPSB1c2VTdGF0ZTxcbiAgICBUYXNrRXJyb3JbXVxuICA+KFtdKTtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIC8qKiDjgr/jgrnjgq/jgpLlhajjgabmi77jgYTkuIrjgZLjgosgKi9cbiAgY29uc3QgY3Jhd2wgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGl0bGVMY3MgPSBuZXcgU2V0PHN0cmluZz4oKTsgLy8g6YeN6KSH6Zmk5aSW55SoXG5cbiAgICBzZXRMb2FkaW5nKHRydWUpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbG9hZExpbmtzKHByb2plY3RzKTtcbiAgICBjb25zdCBlcnJvcnM6IFRhc2tFcnJvcltdID0gW107XG4gICAgY29uc3QgdGFza3MgPSByZXN1bHQuZmxhdE1hcCgoeyBsaW5rcywgcHJvamVjdCB9KSA9PlxuICAgICAgbGlua3MuZmxhdE1hcCgobGluaykgPT4ge1xuICAgICAgICBjb25zdCB7IHRpdGxlIH0gPSBkZWNvZGUobGluayk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlKHRpdGxlKTtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiBbXTtcbiAgICAgICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgICAgICBlcnJvcnMucHVzaCh7IHByb2plY3QsIHRpdGxlLCAuLi5yZXN1bHQudmFsdWUgfSk7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g6YeN6KSH6Zmk5Y67XG4gICAgICAgIGNvbnN0IHRpdGxlTGMgPSB0b1RpdGxlTGModGl0bGUpO1xuICAgICAgICBpZiAodGl0bGVMY3MuaGFzKHRpdGxlTGMpKSByZXR1cm4gW107XG4gICAgICAgIHRpdGxlTGNzLmFkZCh0aXRsZUxjKTtcblxuICAgICAgICByZXR1cm4gW3sgcHJvamVjdCwgdGl0bGUsIC4uLnJlc3VsdC52YWx1ZSB9XTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICBzZXRUYXNrcyh0YXNrcyk7XG4gICAgc2V0RXJyb3JzKGVycm9ycyk7XG5cbiAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgfSwgW3Byb2plY3RzXSk7XG5cbiAgLyoqIOOCv+OCueOCr+ODh+ODvOOCv+OCkk5ldHdvcmvjgYvjgonoqq3jgb/ovrzjgoAgKi9cbiAgY29uc3QgbG9hZCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgIGF3YWl0IGNoZWNrKHByb2plY3RzLCA2MCk7XG4gICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gIH0sIFtwcm9qZWN0c10pO1xuXG4gIC8qKiDmm7TmlrDjgYzjgYLjgozjgbDlho3oqq3ovrzjgZnjgosgKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjcmF3bCgpO1xuICAgIHJldHVybiBzdWJzY3JpYmUocHJvamVjdHMsIGNyYXdsKTtcbiAgfSwgW3Byb2plY3RzLCBjcmF3bF0pO1xuXG4gIHJldHVybiB7IHRhc2tzLCBlcnJvcnMsIGxvYWQsIGxvYWRpbmcgfTtcbn07XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tIFwiLi4vZGVwcy9wcmVhY3QudHN4XCI7XG5cbi8qKiBIb29rcyBmb3Igc3RvcHBpbmcgZXZlbnQgcHJvcGFnYXRpb24gKi9cbmV4cG9ydCBjb25zdCB1c2VTdG9wUHJvcGFnYXRpb24gPSAoKTogKGU6IEV2ZW50KSA9PiB2b2lkID0+XG4gIHVzZUNhbGxiYWNrKFxuICAgIChlOiBnbG9iYWxUaGlzLkV2ZW50KSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpLFxuICAgIFtdLFxuICApO1xuIiwgIi8qKiBAanN4IGggKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50Q2hpbGRyZW4sXG4gIEZ1bmN0aW9uQ29tcG9uZW50LFxuICBoLFxuICBSZWZDYWxsYmFjayxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG4gIHVzZVJlZHVjZXIsXG59IGZyb20gXCIuLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IHVzZVN0b3BQcm9wYWdhdGlvbiB9IGZyb20gXCIuL3VzZVN0b3BQcm9wYWdhdGlvbi50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZURpYWxvZ1Jlc3VsdCB7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgb3BlbjogVm9pZEZ1bmN0aW9uO1xuICBjbG9zZTogVm9pZEZ1bmN0aW9uO1xuICBEaWFsb2c6IEZ1bmN0aW9uQ29tcG9uZW50PHsgY2hpbGRyZW4/OiBDb21wb25lbnRDaGlsZHJlbiB9Pjtcbn1cblxuZXhwb3J0IGNvbnN0IHVzZURpYWxvZyA9ICgpOiBVc2VEaWFsb2dSZXN1bHQgPT4ge1xuICBjb25zdCBbZGlhbG9nU3RhdGUsIGNoYW5nZURpYWxvZ1N0YXRlXSA9IHVzZVJlZHVjZXIoZGlhbG9nU3RhdGVSZWR1Y2VyLCB7XG4gICAgaXNPcGVuOiBmYWxzZSxcbiAgICBwcmV2T3ZlcmZsb3dZOiBcIlwiLFxuICB9KTtcblxuICBjb25zdCBvcGVuID0gdXNlQ2FsbGJhY2soKCkgPT4gY2hhbmdlRGlhbG9nU3RhdGUodHJ1ZSksIFtdKTtcbiAgY29uc3QgY2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiBjaGFuZ2VEaWFsb2dTdGF0ZShmYWxzZSksIFtdKTtcblxuICBjb25zdCBEaWFsb2c6IEZ1bmN0aW9uQ29tcG9uZW50PHsgY2hpbGRyZW4/OiBDb21wb25lbnRDaGlsZHJlbiB9PiA9XG4gICAgdXNlQ2FsbGJhY2soKFxuICAgICAgeyBjaGlsZHJlbiB9LFxuICAgICkgPT4ge1xuICAgICAgLyoqIGRpYWxvZ+OCr+ODquODg+OCr+OBp+OBr21vZGFs44KS6ZaJ44GY44Gq44GE44KI44GG44Gr44GZ44KLICovXG4gICAgICBjb25zdCBzdG9wUHJvcGFnYXRpb24gPSB1c2VTdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgY29uc3QgcmVmOiBSZWZDYWxsYmFjazxIVE1MRGlhbG9nRWxlbWVudD4gPSB1c2VNZW1vKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgbGV0IGNsZWFudXA6IFZvaWRGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXR1cm4gKGRpYWxvZykgPT4ge1xuICAgICAgICAgICAgaWYgKCFkaWFsb2cpIHtcbiAgICAgICAgICAgICAgY2xlYW51cD8uKCk7XG4gICAgICAgICAgICAgIGNoYW5nZURpYWxvZ1N0YXRlKGRpYWxvZyk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgICAgIGRpYWxvZy5hZGRFdmVudExpc3RlbmVyKFwiY2FuY2VsXCIsICgpID0+IGNoYW5nZURpYWxvZ1N0YXRlKGZhbHNlKSwge1xuICAgICAgICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjaGFuZ2VEaWFsb2dTdGF0ZShkaWFsb2cpO1xuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIFtdLFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpYWxvZyByZWY9e3JlZn0gb25DbGljaz17Y2xvc2V9PlxuICAgICAgICAgIHtjaGlsZHJlbiAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRpYWxvZy1pbm5lclwiIG9uQ2xpY2s9e3N0b3BQcm9wYWdhdGlvbn0+XG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGlhbG9nPlxuICAgICAgKTtcbiAgICB9LCBbXSk7XG5cbiAgcmV0dXJuIHsgaXNPcGVuOiBkaWFsb2dTdGF0ZS5pc09wZW4sIG9wZW4sIGNsb3NlLCBEaWFsb2cgfTtcbn07XG5cbmludGVyZmFjZSBEaWFsb2dTdGF0ZSB7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgZGlhbG9nPzogSFRNTERpYWxvZ0VsZW1lbnQgfCBudWxsO1xuICBwcmV2T3ZlcmZsb3dZOiBzdHJpbmc7XG59XG5cbmNvbnN0IGRpYWxvZ1N0YXRlUmVkdWNlciA9IChcbiAgc3RhdGU6IERpYWxvZ1N0YXRlLFxuICBpc09wZW46IGJvb2xlYW4gfCBIVE1MRGlhbG9nRWxlbWVudCB8IG51bGwsXG4pOiBEaWFsb2dTdGF0ZSA9PiB7XG4gIGNvbnN0IGlzT3Blbk5vdyA9IHN0YXRlLmRpYWxvZz8ub3BlbiA/PyBmYWxzZTtcbiAgaWYgKGlzT3BlbiBpbnN0YW5jZW9mIEhUTUxEaWFsb2dFbGVtZW50IHx8IGlzT3BlbiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBpc09wZW5Ob3cgPT09IHN0YXRlLmlzT3BlbiAmJiBpc09wZW4gPT09IHN0YXRlLmRpYWxvZyA/IHN0YXRlIDoge1xuICAgICAgaXNPcGVuOiBpc09wZW5Ob3csXG4gICAgICBkaWFsb2c6IGlzT3BlbixcbiAgICAgIHByZXZPdmVyZmxvd1k6IHN0YXRlLnByZXZPdmVyZmxvd1ksXG4gICAgfTtcbiAgfVxuICBpZiAoaXNPcGVuKSB7XG4gICAgc3RhdGUuZGlhbG9nPy5zaG93TW9kYWw/LigpO1xuICAgIGNvbnN0IHByZXZPdmVyZmxvd1kgPSAhc3RhdGUuaXNPcGVuXG4gICAgICA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvd1lcbiAgICAgIDogc3RhdGUucHJldk92ZXJmbG93WTtcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3dZID0gXCJoaWRkZW5cIjtcbiAgICByZXR1cm4gc3RhdGUuaXNPcGVuICYmIGlzT3Blbk5vd1xuICAgICAgPyBzdGF0ZVxuICAgICAgOiB7IGlzT3BlbjogdHJ1ZSwgcHJldk92ZXJmbG93WSwgZGlhbG9nOiBzdGF0ZS5kaWFsb2cgfTtcbiAgfVxuICBzdGF0ZS5kaWFsb2c/LmNsb3NlPy4oKTtcbiAgaWYgKHN0YXRlLnByZXZPdmVyZmxvd1kgPT09IFwiXCIpIHtcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJvdmVyZmxvdy15XCIpO1xuICB9IGVsc2Uge1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvd1kgPSBzdGF0ZS5wcmV2T3ZlcmZsb3dZO1xuICB9XG4gIHJldHVybiAhc3RhdGUuaXNPcGVuICYmICFpc09wZW5Ob3dcbiAgICA/IHN0YXRlXG4gICAgOiB7IGlzT3BlbjogZmFsc2UsIHByZXZPdmVyZmxvd1k6IFwiXCIsIGRpYWxvZzogc3RhdGUuZGlhbG9nIH07XG59O1xuIiwgIi8vIGRlbm8tZm10LWlnbm9yZS1maWxlXG5leHBvcnQgY29uc3QgQ1NTID0gU3RyaW5nLnJhd2AuZmEsLmZhcntmb250LXdlaWdodDo5MDA7Zm9udC1mYW1pbHk6XCJGb250IEF3ZXNvbWUgNSBGcmVlXCI7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDt0ZXh0LXJlbmRlcmluZzphdXRvO2xpbmUtaGVpZ2h0OjF9LmZhcntmb250LXdlaWdodDo0MDB9LmZhLXNwaW5uZXJ7YW5pbWF0aW9uOnNwaW4gMnMgaW5maW5pdGUgbGluZWFyfUBrZXlmcmFtZXMgc3BpbnswJXt0cmFuc2Zvcm06cm90YXRlKDApfXRve3RyYW5zZm9ybTpyb3RhdGUoMzU5ZGVnKX19LmZhLXNwaW5uZXI6YmVmb3Jle2NvbnRlbnQ6XCJcXGYxMTBcIn0uZmEtc3luYzpiZWZvcmV7Y29udGVudDpcIlxcZjAyMVwifS5mYS1ib29rbWFyazpiZWZvcmV7Y29udGVudDpcIlxcZjAyZVwifS5mYS1md3t0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxLjI1ZW19LmthbW9uOmJlZm9yZXtmb250LWZhbWlseTpBcHBJY29uczstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZTtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LXRyYW5zZm9ybTpub25lfS5rYW1vbi1jaGVjay1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwMThcIn0udGltZWxpbmUtd3JhcHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlO292ZXJmbG93LXk6aGlkZGVuOy0tdGltZWxpbmUtYmc6IHZhcigtLWRyb3Bkb3duLW1lbnUtYmcsICNmZmYpOy0tdGltZWxpbmUtdGV4dC1jb2xvcjogdmFyKC0tcGFnZS10ZXh0LWNvbG9yLCAjNGE0YTRhKTstLXRpbWVsaW5lLWxpbmstY29sb3I6IHZhcigtLXBhZ2UtbGluay1jb2xvciwgIzVlOGFmNyk7LS1yb3ctaGVhZGVyLXdpZHRoOiA0MHB4Oy0tdGltZWxpbmUtYm9yZGVyLWNvbG9yOiAjODg4Oy0tdGltZWxpbmUtYm9yZGVyOiBzb2xpZCAxcHggdmFyKC0tdGltZWxpbmUtYm9yZGVyLWNvbG9yKTstLXRpbWVsaW5lLWhvdXItaGVpZ2h0OiA0MHB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tdGltZWxpbmUtYmcpO2NvbG9yOnZhcigtLXRpbWVsaW5lLXRleHQtY29sb3IpOy5jb2x1bW4taGVhZGVye2ZsZXg6bm9uZTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93Oy5jZWxse2ZsZXg6MSAxIDFweDtoMntmb250LXdlaWdodDo0MDA7bWFyZ2luOjA7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MTAwJX19fS53ZWVrLWNvbnRhaW5lcntwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MTAwJTtvdmVyZmxvdy15OmF1dG87c2Nyb2xsYmFyLXdpZHRoOm5vbmU7LndlZWt7ZmxleDphdXRvO2Rpc3BsYXk6ZmxleDt3aWR0aDoxMDAlOy5ib3JkZXJzey5ib3JkZXJ7aGVpZ2h0OnZhcigtLXRpbWVsaW5lLWhvdXItaGVpZ2h0KX0uYm9yZGVyOmFmdGVye2NvbnRlbnQ6YXR0cihkYXRhLXRpbWUpO2ZvbnQtc2l6ZToxMHB4O3RleHQtYWxpZ246cmlnaHQ7Ym9yZGVyLXRvcDp2YXIoLS10aW1lbGluZS1ib3JkZXIpO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDotMXB4O3BvaW50ZXItZXZlbnRzOm5vbmV9fS50aW1lbGluZXtmbGV4OmF1dG87Ym9yZGVyLWxlZnQ6dmFyKC0tdGltZWxpbmUtYm9yZGVyKTtwb3NpdGlvbjpyZWxhdGl2ZTsuaW5kaWNhdG9ye3Bvc2l0aW9uOmFic29sdXRlO3RvcDpjYWxjKHZhcigtLXN0YXJ0KSAqIDQwcHggLSAuNXB4KTt3aWR0aDoxMDAlO2hlaWdodDoxcHg7YmFja2dyb3VuZC1jb2xvcjpyZWR9LmNvcHl7cG9zaXRpb246YWJzb2x1dGU7dG9wOjEuNWVtfS5ldmVudHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6Y2FsYyh2YXIoLS1zdGFydCkgKiA0MHB4IC0gMXB4KTtoZWlnaHQ6Y2FsYyg0MHB4ICogdmFyKC0tZHVyYXRpb24pIC8gNjApO291dGxpbmU6bm9uZTstLWV2ZW50LWJnMjogdmFyKC0tdGltZWxpbmUtdGV4dC1jb2xvcik7LS1ldmVudC1iZzogdmFyKC0tdGltZWxpbmUtYmcpOy0tZXZlbnQtYmctcmF0aW86IDUwJTstLWV2ZW50LWNvbG9yLXJhdGlvOiAwJTstLWV2ZW50LWJvcmRlci1jb2xvci1yYXRpbzogMCU7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gc3JnYix2YXIoLS1ldmVudC1iZykgdmFyKC0tZXZlbnQtYmctcmF0aW8pLHZhcigtLWV2ZW50LWJnMikpO2NvbG9yOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWV2ZW50LWJnKSB2YXIoLS1ldmVudC1jb2xvci1yYXRpbyksdmFyKC0tdGltZWxpbmUtdGV4dC1jb2xvcikpO2JvcmRlcjp2YXIoLS10aW1lbGluZS1ib3JkZXIpO2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gc3JnYix2YXIoLS1ldmVudC1iZykgdmFyKC0tZXZlbnQtYm9yZGVyLWNvbG9yLXJhdGlvKSx2YXIoLS10aW1lbGluZS1ib3JkZXItY29sb3IpKTtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzpoaWRkZW47dGV4dC13cmFwOm5vd3JhcDttYXgtd2lkdGg6MTAwJTt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5ldmVudFtkYXRhLXN0YXR1cz1kb25lXXstLWV2ZW50LWJnLXJhdGlvOiA5MCU7LS1ldmVudC1jb2xvci1yYXRpbzogNTAlOy0tZXZlbnQtYm9yZGVyLWNvbG9yLXJhdGlvOiA1MCV9LmV2ZW50W2RhdGEtc3RhdHVzPWV4cGlyZWRde2ZvbnQtd2VpZ2h0OjcwMH1hLmV2ZW50ey0tZXZlbnQtYmcyOiB2YXIoLS10aW1lbGluZS1saW5rLWNvbG9yKTt0ZXh0LWRlY29yYXRpb246bm9uZX19LnRpbWVsaW5lOmZpcnN0LWNoaWxke2JvcmRlci1yaWdodDp2YXIoLS10aW1lbGluZS1ib3JkZXIpfX19fS53ZWRnZXR7cG9zaXRpb246Zml4ZWQ7dG9wOjYwcHg7bGVmdDoxMHB4O21heC1oZWlnaHQ6Y2FsYyg5MHZoIC0gNjBweCk7bWF4LXdpZHRoOjEwMHB4O3dpZHRoOmNhbGMoMTAwdncgLyA3NjcgKiAxMDAgLSAxMHB4KTttaW4td2lkdGg6NjBweDtib3JkZXI6c29saWQgMXB4ICM4ODg7Ym9yZGVyLXJhZGl1czo0cHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRyb3Bkb3duLW1lbnUtYmcsICNmZmYpO2NvbG9yOnZhcigtLXBhZ2UtdGV4dC1jb2xvciwgIzRhNGE0YSk7Jjpub3QoLm9wZW4pe2Rpc3BsYXk6bm9uZX19ZGlhbG9neyY6OmJhY2tkcm9we2JhY2tncm91bmQtY29sb3I6IzAwMGN9cGFkZGluZzoxMHB4O2JhY2tncm91bmQ6dW5zZXQ7bWFyZ2luLXRvcDp1bnNldDttYXJnaW4tYm90dG9tOnVuc2V0O2JvcmRlcjp1bnNldDtoZWlnaHQ6dW5zZXQ7b3ZlcmZsb3cteTpoaWRkZW47JltvcGVuXT4uZGlhbG9nLWlubmVye2Rpc3BsYXk6ZmxleH0+LmRpYWxvZy1pbm5lcntmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO3Jvdy1nYXA6MTBweDtoZWlnaHQ6MTAwJTs+Kntjb2xvcjp2YXIoLS1wYWdlLXRleHQtY29sb3IsICM0YTRhNGEpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHJvcGRvd24tbWVudS1iZywgI2ZmZik7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4yKTtib3JkZXItcmFkaXVzOjZweH19fUBtZWRpYSAobWluLXdpZHRoOiA3NjhweCl7ZGlhbG9ne3BhZGRpbmc6MzBweCAwOy0taXRlbS13aWR0aDogNjAwcHh9fS5yZXN1bHR7cGFkZGluZzoxNXB4O3dpZHRoOmNhbGModmFyKC0taXRlbS13aWR0aCwgMTAwJSkgLSAzMHB4KTtvdmVyZmxvdy15OnNjcm9sbH0uY29udHJvbGxlcntwYWRkaW5nOjVweDt3aWR0aDpjYWxjKHZhcigtLWl0ZW0td2lkdGgsIDEwMCUpIC0gMTBweCk7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2ZsZXg6bm9uZTtnYXA6LjJlbX0ucHJvZ3Jlc3N7ZmxleC1ncm93OjE7Pip7cGFkZGluZzowIDJweH19YXt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjp2YXIoLS1wYWdlLWxpbmstY29sb3IsICM1ZThhZjcpOyY6aG92ZXJ7Y29sb3I6dmFyKC0tcGFnZS1saW5rLWhvdmVyLWNvbG9yLCAjMmQ2N2Y1KX19YnV0dG9ue2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6dW5zZXQ7Y29sb3I6dW5zZXQ7Ym9yZGVyOnVuc2V0fS5jb3B5LC5jbG9zZSwudG9kYXl7Zm9udC1mYW1pbHk6XCJGb250IEF3ZXNvbWUgNSBGcmVlXCJ9Lm5hdml7Zm9udC1mYW1pbHk6QXBwSWNvbnM7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGU7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDo0MDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC10cmFuc2Zvcm06bm9uZX0uY2xvc2UsLnRvZGF5e2ZvbnQtd2VpZ2h0OjkwMH11bHtsaXN0LXN0eWxlLXR5cGU6bm9uZTt3b3JkLWJyZWFrOmJyZWFrLWFsbH0udGFzay1saXN0IGxpOm5vdChbZGF0YS1mcmVzaG5lc3NePVwiLVwiXSk6bm90KFtkYXRhLWZyZXNobmVzcz1cIjBcIl0pe2ZvbnQtd2VpZ2h0OjcwMH0uc2NoZWR1bGVyIGRldGFpbHMgbGl7JltkYXRhLXN0YXR1cz1kb25lXXtvcGFjaXR5Oi40fSZbZGF0YS1zdGF0dXM9ZXhwaXJlZF17Zm9udC13ZWlnaHQ6NzAwfX0udGFzay1saXN0IGxpeyZbZGF0YS10eXBlPWRlYWRsaW5lXSAubGFiZWwudHlwZXtjb2xvcjp2YXIoLS10YWtrZXItc2NoZWR1bGVyLWxhYmVsLWRlYWRsaW5lLWNvbG9yLCByZ2IoMjU1LCA3NSwgMCkpfSZbZGF0YS10eXBlPXRvZG9dIC5sYWJlbC50eXBle2NvbG9yOnZhcigtLXRha2tlci1zY2hlZHVsZXItbGFiZWwtdG9kby1jb2xvciwgcmdiKDI0NiwgMTcwLCAwKSl9JltkYXRhLXR5cGU9bm90ZV0gLmxhYmVsLnR5cGV7Y29sb3I6dmFyKC0tdGFra2VyLXNjaGVkdWxlci1sYWJlbC1ub3RlLWNvbG9yLCByZ2IoMjAwLCAyMDAsIDIwMykpfSZbZGF0YS10eXBlPXVwLWRvd25dIC5sYWJlbC50eXBle2NvbG9yOnZhcigtLXRha2tlci1zY2hlZHVsZXItbGFiZWwtdXAtZG93bi1jb2xvciwgcmdiKDc3LCAxOTYsIDI1NSkpfX06aXMoW2RhdGEtcGFnZS1ubz1leHBpcmVkXSxbZGF0YS1wYWdlLW5vPWVycm9yc10pIGxpe29wYWNpdHk6MSFpbXBvcnRhbnR9LnNjaGVkdWxlcnstLXRha2tlci1zY2hlZHVsZXItc3VtbWFyeS1tZXRlci13aWR0aDogMTBlbTtvdmVyZmxvdy15OmhpZGRlbn0ubGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjkwJTtwYWRkaW5nOjAgM3B4fS50eXBle3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjIuNWVtO2JvcmRlcjoxcHggc29saWQ7Ym9yZGVyLXJhZGl1czozcHh9LmZyZXNobmVzc3t0ZXh0LWFsaWduOnJpZ2h0O3dpZHRoOjIuNWVtfS5zdGFydCwuZHVyYXRpb257dGV4dC1hbGlnbjpyaWdodDt3aWR0aDozZW19XG5gOyIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG4vKiogQGpzeCBoICovXG5cbmltcG9ydCB7XG4gIEZ1bmN0aW9uQ29tcG9uZW50LFxuICBoLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlU3RhdGUsXG59IGZyb20gXCIuLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IHNsZWVwIH0gZnJvbSBcIi4uL2RlcHMvc2NyYXBib3gtc3RkLnRzXCI7XG5cbi8qKiDjgrPjg5Tjg7zjg5zjgr/jg7MgKi9cbmV4cG9ydCBjb25zdCBDb3B5OiBGdW5jdGlvbkNvbXBvbmVudDx7IHRleHQ6IHN0cmluZzsgdGl0bGU/OiBzdHJpbmcgfT4gPSAoXG4gIHsgdGV4dCwgdGl0bGUgfSxcbikgPT4ge1xuICBjb25zdCBbYnV0dG9uTGFiZWwsIHNldEJ1dHRvbkxhYmVsXSA9IHVzZVN0YXRlKFwiXFx1ZjBjNVwiKTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoZTogaC5KU1guVGFyZ2V0ZWRNb3VzZUV2ZW50PEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTtcbiAgICAgICAgc2V0QnV0dG9uTGFiZWwoXCJDb3BpZWRcIik7XG4gICAgICAgIGF3YWl0IHNsZWVwKDEwMDApO1xuICAgICAgICBzZXRCdXR0b25MYWJlbChcIlxcdWYwYzVcIik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGFsZXJ0KGBGYWlsZWQgdG8gY29weSB0aGUgY29kZSBibG9ja1xcbkVycm9yOiR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3RleHRdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJjb3B5XCIgdGl0bGU9e3RpdGxlID8/IFwiQ29weVwifSBvbkNsaWNrPXtoYW5kbGVDbGlja30+XG4gICAgICB7YnV0dG9uTGFiZWx9XG4gICAgPC9idXR0b24+XG4gICk7XG59O1xuIiwgImltcG9ydCB7IExvY2FsRGF0ZSwgTG9jYWxEYXRlVGltZSwgdG9EYXRlIH0gZnJvbSBcIi4vbG9jYWxEYXRlLnRzXCI7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tIFwiLi9zdGF0dXMudHNcIjtcblxuLyoqIDHml6XjgpLjg5/jg6rnp5LljZjkvY3jgafooajjgZfjgZ/jgoLjga4gKi9cbmNvbnN0IG9uZWRheSA9IDYwICogNjAgKiAyNCAqIDEwMDA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnJlc2huZXNzIHtcbiAgLyoqIGhvd23oqJjlj7cgKi9cbiAgc3RhdHVzOiBTdGF0dXM7XG5cbiAgLyoqIGhvd27oqJjlj7fjga7jgqrjg5fjgrfjg6fjg7MgKi9cbiAgc3BlZWQ/OiBudW1iZXI7XG5cbiAgLyoqIOaXrOW6puioiOeul+eUqOOBrui1t+eCueOBqOOBquOCi+aXpeaZgiAqL1xuICByZWZEYXRlOiBMb2NhbERhdGUgfCBMb2NhbERhdGVUaW1lO1xufVxuXG4vKiog44K/44K544Kv44Gu5pes5bqm44KS6KiI566X44GZ44KLXG4gKlxuICogIOiHquWIhihAdGFra2VyKeeUqOOBq3R1bmluZ+OBl+OBpuOBguOCi+OAguS7luOBruioiOeul+OCouODq+OCtOODquOCuuODoOOBq+OBl+OBn+OBhOOBqOOBjeOBr+OAgeWQhOiHquOBp+WIpemAlOS9nOOCi+OBk+OBqFxuICpcbiAqICBAcGFyYW0gZnJlc2huZXNzIHRhc2tcbiAqICBAcGFyYW0gbm93IOePvuWcqOaXpeaZglxuICogIEByZXR1cm4gdGFza+OBruaXrOW6plxuICovXG5leHBvcnQgY29uc3QgY2FsY0ZyZXNobmVzcyA9IChmcmVzaG5lc3M6IEZyZXNobmVzcywgbm93OiBEYXRlKTogbnVtYmVyID0+IHtcbiAgY29uc3Qgc3RhcnQgPSB0b0RhdGUoZnJlc2huZXNzLnJlZkRhdGUpO1xuICBjb25zdCBwcmlvcml0eSA9IChub3cuZ2V0VGltZSgpIC0gc3RhcnQuZ2V0VGltZSgpKSAvIG9uZWRheTtcbiAgc3RhcnQuc2V0SG91cnMoMCk7XG4gIHN0YXJ0LnNldE1pbnV0ZXMoMCk7XG5cbiAgc3dpdGNoIChmcmVzaG5lc3Muc3RhdHVzKSB7XG4gICAgY2FzZSBcImRvbmVcIjpcbiAgICAgIC8vIOW4uOOBq+acgOS9jlxuICAgICAgcmV0dXJuIC1JbmZpbml0eTtcbiAgICBjYXNlIFwiZGVhZGxpbmVcIjpcbiAgICAgIC8vIOW9k+aXpTDjgavjgarjgovjgojjgYbkuIrmmIdcbiAgICAgIHJldHVybiBwcmlvcml0eSAvIChmcmVzaG5lc3Muc3BlZWQgPz8gMSk7XG4gICAgY2FzZSBcInRvZG9cIjpcbiAgICAgIC8vIOW9k+aXpeOBvuOBp+S4iuaYh1xuICAgICAgcmV0dXJuIE1hdGgubWluKHByaW9yaXR5IC8gKGZyZXNobmVzcy5zcGVlZCA/PyAxKSwgMCk7XG4gICAgY2FzZSBcIm5vdGVcIjpcbiAgICAgIC8vIOW9k+aXpeOBi+OCieS4i+mZjVxuICAgICAgcmV0dXJuIG5vdy5nZXRUaW1lKCkgPCBzdGFydC5nZXRUaW1lKClcbiAgICAgICAgPyAtSW5maW5pdHlcbiAgICAgICAgOiAtcHJpb3JpdHkgLyAoZnJlc2huZXNzLnNwZWVkID8/IDEpO1xuICAgIGNhc2UgXCJ1cC1kb3duXCI6IHtcbiAgICAgIGNvbnN0IHBlcmlvZCA9IGZyZXNobmVzcy5zcGVlZCA/PyAzMDtcbiAgICAgIC8vIOW9k+aXpeOBi+OCieS4i+mZjeOBqOS4iuaYh+OCkue5sOOCiui/lOOBmVxuICAgICAgcmV0dXJuIHBlcmlvZCAqICgtMSArIE1hdGguY29zKE1hdGguUEkgKiAyICogcHJpb3JpdHkgLyBwZXJpb2QpKTtcbiAgICB9XG4gIH1cbn07XG4iLCAiaW1wb3J0IHsgRnJlc2huZXNzIH0gZnJvbSBcIi4vZnJlc2huZXNzLnRzXCI7XG5pbXBvcnQgeyBpc0JlZm9yZSB9IGZyb20gXCIuL2xvY2FsRGF0ZS50c1wiO1xuaW1wb3J0IHsgRXZlbnQsIGdldFN0YXJ0LCBSZW1pbmRlciB9IGZyb20gXCIuL3BhcnNlLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjb21wYXJlRm4gPSAoXG4gIGE6XG4gICAgJiAoXG4gICAgICB8IFJlbWluZGVyXG4gICAgICB8IChPbWl0PEV2ZW50LCBcImZyZXNobmVzc1wiPiAmIFJlcXVpcmVkPFBpY2s8RXZlbnQsIFwiZnJlc2huZXNzXCI+PilcbiAgICApXG4gICAgJiB7IHNjb3JlOiBudW1iZXIgfSxcbiAgYjpcbiAgICAmIChcbiAgICAgIHwgUmVtaW5kZXJcbiAgICAgIHwgKE9taXQ8RXZlbnQsIFwiZnJlc2huZXNzXCI+ICYgUmVxdWlyZWQ8UGljazxFdmVudCwgXCJmcmVzaG5lc3NcIj4+KVxuICAgIClcbiAgICAmIHsgc2NvcmU6IG51bWJlciB9LFxuKTogbnVtYmVyID0+IHtcbiAgaWYgKGIuc2NvcmUgIT09IGEuc2NvcmUpIHJldHVybiBiLnNjb3JlIC0gYS5zY29yZTtcbiAgY29uc3Qgc2EgPSBzb3J0VHlwZShhLmZyZXNobmVzcyk7XG4gIGNvbnN0IHNiID0gc29ydFR5cGUoYi5mcmVzaG5lc3MpO1xuICBpZiAoc2EgIT09IHNiKSByZXR1cm4gc2IgLSBzYTtcblxuICByZXR1cm4gaXNCZWZvcmUoZ2V0U3RhcnQoYSksIGdldFN0YXJ0KGIpKSA/IC0xIDogMTtcbn07XG5cbmNvbnN0IHNvcnRUeXBlID0gKGZyZXNobmVzczogRnJlc2huZXNzKTogbnVtYmVyID0+IHtcbiAgc3dpdGNoIChmcmVzaG5lc3Muc3RhdHVzKSB7XG4gICAgY2FzZSBcInRvZG9cIjpcbiAgICAgIHJldHVybiAzO1xuICAgIGNhc2UgXCJub3RlXCI6XG4gICAgICByZXR1cm4gMjtcbiAgICBjYXNlIFwiZGVhZGxpbmVcIjpcbiAgICAgIHJldHVybiA1O1xuICAgIGNhc2UgXCJ1cC1kb3duXCI6XG4gICAgICByZXR1cm4gMTtcbiAgICBjYXNlIFwiZG9uZVwiOlxuICAgICAgcmV0dXJuIDA7XG4gIH1cbn07XG4iLCAiaW1wb3J0IHtcbiAgZ2V0V2VlayxcbiAgZ2V0V2Vla1llYXIsXG4gIHNldFdlZWssXG4gIHN0YXJ0T2ZXZWVrLFxufSBmcm9tIFwiLi4vZGVwcy9kYXRlLWZucy50c1wiO1xuaW1wb3J0IHsgTG9jYWxEYXRlIH0gZnJvbSBcIi4uL2hvd20vbG9jYWxEYXRlLnRzXCI7XG5pbXBvcnQgeyB6ZXJvIH0gZnJvbSBcIi4uL3plcm8udHNcIjtcblxuZXhwb3J0IHR5cGUgS2V5ID0gYCR7bnVtYmVyfS0ke3N0cmluZ30tJHtzdHJpbmd9YDtcbmV4cG9ydCB0eXBlIFdlZWtLZXkgPSBgJHtudW1iZXJ9LXcke3N0cmluZ31gO1xuXG4vKiog5pel5LuY44GU44Go44Gr5LiA5oSP44Gqa2V544KS55Sf5oiQ44GZ44KLICovXG5leHBvcnQgY29uc3QgdG9LZXkgPSAoZGF0ZTogRGF0ZSk6IEtleSA9PlxuICBgJHtkYXRlLmdldEZ1bGxZZWFyKCl9LSR7emVybyhkYXRlLmdldE1vbnRoKCkgKyAxKX0tJHt6ZXJvKGRhdGUuZ2V0RGF0ZSgpKX1gO1xuZXhwb3J0IGNvbnN0IHRvTG9jYWxEYXRlID0gKGtleTogS2V5KTogTG9jYWxEYXRlID0+IHtcbiAgY29uc3QgW3llYXIsIG1vbnRoLCBkYXRlXSA9IGtleS5zcGxpdChcIi1cIikubWFwKChzKSA9PiBwYXJzZUludChzLCAxMCkpO1xuICByZXR1cm4geyB5ZWFyLCBtb250aCwgZGF0ZSB9O1xufTtcblxuLyoqIOaXpeS7mOOBjOWxnuOBmeOCi+mAseOBlOOBqOOBq+S4gOaEj+OBqmtleeOCkueUn+aIkOOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IHRvV2Vla0tleSA9IChkYXRlOiBEYXRlKTogV2Vla0tleSA9PlxuICBgJHtnZXRXZWVrWWVhcihkYXRlKX0tdyR7emVybyhnZXRXZWVrKGRhdGUpKX1gO1xuZXhwb3J0IGNvbnN0IHRvU3RhcnRPZldlZWsgPSAoa2V5OiBXZWVrS2V5KTogRGF0ZSA9PiB7XG4gIGNvbnN0IFt5ZWFyLCB3ZWVrXSA9IGtleS5zcGxpdChcIi13XCIpLm1hcCgocykgPT4gcGFyc2VJbnQocywgMTApKTtcbiAgcmV0dXJuIHN0YXJ0T2ZXZWVrKHNldFdlZWsobmV3IERhdGUoeWVhciwgMCwgMSksIHdlZWspKTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuXG5pbXBvcnQgeyBGdW5jdGlvbkNvbXBvbmVudCwgaCB9IGZyb20gXCIuLi9kZXBzL3ByZWFjdC50c3hcIjtcblxuLyoqIOiqrei+vOS4reOBr+aKvOOBm+OBquOBj+OBquOCi+ODnOOCv+ODsyAqL1xuZXhwb3J0IGNvbnN0IExvYWRCdXR0b246IEZ1bmN0aW9uQ29tcG9uZW50PFxuICB7IGxvYWRpbmc6IGJvb2xlYW47IG9uQ2xpY2s/OiBoLkpTWC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MQnV0dG9uRWxlbWVudD4gfVxuPiA9IChcbiAgeyBsb2FkaW5nLCBvbkNsaWNrIH0sXG4pID0+IChsb2FkaW5nXG4gID8gKFxuICAgIDxkaXY+XG4gICAgICA8aSBjbGFzc05hbWU9XCJmYSBmYS1zcGlubmVyXCIgLz5cbiAgICA8L2Rpdj5cbiAgKVxuICA6IDxidXR0b24gY2xhc3NOYW1lPVwibmF2aSByZWxvYWRcIiBvbkNsaWNrPXtvbkNsaWNrfT57XCJcXHVlMDZkXCJ9PC9idXR0b24+KTtcbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcIi4uL2RlcHMvcHJlYWN0LnRzeFwiO1xuLyoqIDHliIbjgZTjgajjgatEYXRl44KS55Sf5oiQ44GX44Gm6L+U44GZaG9va3MgKi9cbmV4cG9ydCBjb25zdCB1c2VNaW51dGVzID0gKCk6IERhdGUgPT4ge1xuICBjb25zdCBbZGF0ZSwgc2V0RGF0ZV0gPSB1c2VTdGF0ZShuZXcgRGF0ZSgpKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHNldERhdGUobmV3IERhdGUoKSksIDEwMDAgKiA2MCk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgcmV0dXJuIGRhdGU7XG59O1xuIiwgImltcG9ydCB7IFN0YXR1cyB9IGZyb20gXCIuLi8uLi9ob3dtL3N0YXR1cy50c1wiO1xuXG5leHBvcnQgY29uc3QgdG9TdGF0dXNMYWJlbCA9IChcbiAgc3RhdHVzOiBTdGF0dXMsXG4pOiBcIlRvRG9cIiB8IFwi6Kaa5pu4XCIgfCBcIue3oOWIh1wiIHwgXCLmta7pgYpcIiB8IFwi5a6M5LqGXCIgPT4ge1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgXCJ0b2RvXCI6XG4gICAgICByZXR1cm4gXCJUb0RvXCI7XG4gICAgY2FzZSBcIm5vdGVcIjpcbiAgICAgIHJldHVybiBcIuimmuabuFwiO1xuICAgIGNhc2UgXCJkZWFkbGluZVwiOlxuICAgICAgcmV0dXJuIFwi57eg5YiHXCI7XG4gICAgY2FzZSBcInVwLWRvd25cIjpcbiAgICAgIHJldHVybiBcIua1rumBilwiO1xuICAgIGNhc2UgXCJkb25lXCI6XG4gICAgICByZXR1cm4gXCLlrozkuoZcIjtcbiAgfVxufTtcbiIsICJpbXBvcnQgeyBlbmNvZGVUaXRsZVVSSSB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXN0ZC50c1wiO1xuXG4vKiogU2NyYXBib3jjga7jg6rjg7Pjgq/jgpLooajjgZkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF0aCB7XG4gIHByb2plY3Q6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbn1cblxuLyoqIFBhdGjjgYvjgolVUkzjgpLkvZzjgosgKi9cbmV4cG9ydCBjb25zdCBtYWtlTGluayA9IChwYXRoOiBQYXRoLCBiYXNlPzogc3RyaW5nIHwgVVJMKTogVVJMID0+XG4gIG5ldyBVUkwoXG4gICAgYC8ke3BhdGgucHJvamVjdH0vJHtlbmNvZGVUaXRsZVVSSShwYXRoLnRpdGxlKX1gLFxuICAgIGJhc2UgPz8gbG9jYXRpb24uaHJlZixcbiAgKTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG4vKiogQGpzeCBoICovXG5cbmltcG9ydCB7IEZ1bmN0aW9uQ29tcG9uZW50LCBoIH0gZnJvbSBcIi4uL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHR5cGUgeyBTY3JhcGJveCB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXN0ZC1kb20udHNcIjtcbmltcG9ydCB7IG1ha2VMaW5rLCBQYXRoIH0gZnJvbSBcIi4vcGF0aC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbi8qKiDlhoXpg6hwcm9qZWN044Gn44GvU1BB44KS57at5oyB44GX44Gm6YG356e744GZ44KL44Oq44Oz44KvICovXG5leHBvcnQgY29uc3QgU2NyYXBib3hMaW5rOiBGdW5jdGlvbkNvbXBvbmVudDxcbiAgJiBQYXRoXG4gICYgT21pdDxcbiAgICBoLkpTWC5IVE1MQXR0cmlidXRlczxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgXCJyZWxcIiB8IFwidGFyZ2V0XCIgfCBcInR5cGVcIiB8IFwiaHJlZlwiXG4gID5cbj4gPSAoXG4gIHsgY2hpbGRyZW4sIHByb2plY3QsIHRpdGxlLCBjbGFzc05hbWUsIC4uLmF0cmlidXRlcyB9LFxuKSA9PiAoXG4gIDxhXG4gICAgey4uLmF0cmlidXRlc31cbiAgICBjbGFzc05hbWU9e1tjbGFzc05hbWUgPz8gXCJcIiwgXCJwYWdlLWxpbmtcIl0uam9pbihcIiBcIil9XG4gICAgdHlwZT1cImxpbmtcIlxuICAgIGhyZWY9e21ha2VMaW5rKHsgcHJvamVjdCwgdGl0bGUgfSkucGF0aG5hbWV9XG4gICAgey4uLihwcm9qZWN0ID09PSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWVcbiAgICAgID8gKHsgcmVsOiBcInJvdXRlXCIgfSlcbiAgICAgIDogKHsgcmVsOiBcIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiwgdGFyZ2V0OiBcIl9ibGFua1wiIH0pKX1cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9hPlxuKTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG4vKiogQGpzeCBoICovXG5cbmltcG9ydCB7IEZ1bmN0aW9uQ29tcG9uZW50LCBoLCB1c2VNZW1vIH0gZnJvbSBcIi4uLy4uL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgQ29weSB9IGZyb20gXCIuLi9Db3B5LnRzeFwiO1xuaW1wb3J0IHsgYWRkTWludXRlcywgaXNBZnRlciB9IGZyb20gXCIuLi8uLi9kZXBzL2RhdGUtZm5zLnRzXCI7XG5pbXBvcnQgeyBmb3JtYXQsIHRvRGF0ZSB9IGZyb20gXCIuLi8uLi9ob3dtL2xvY2FsRGF0ZS50c1wiO1xuaW1wb3J0IHsgZ2V0RHVyYXRpb24sIGdldFN0YXJ0IH0gZnJvbSBcIi4uLy4uL2hvd20vcGFyc2UudHNcIjtcbmltcG9ydCB7IHVzZU1pbnV0ZXMgfSBmcm9tIFwiLi4vdXNlTWludXRlcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBTY3JhcGJveCB9IGZyb20gXCIuLi8uLi9kZXBzL3NjcmFwYm94LXN0ZC1kb20udHNcIjtcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gXCIuL21vZC50c3hcIjtcbmltcG9ydCB7IHRvU3RhdHVzTGFiZWwgfSBmcm9tIFwiLi90b1N0YXR1c0xhYmVsLnRzXCI7XG5pbXBvcnQgeyBTY3JhcGJveExpbmsgfSBmcm9tIFwiLi4vU2NyYXBib3hMaW5rLnRzeFwiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbi8qKiDjgr/jgrnjgq/jga7mg4XloLHjgpIx6KGM44Gr6KGo56S644GZ44KL6YOo5ZOBXG4gKlxuICogQHBhcmFtIGFjdGlvbiDooajnpLrjgZnjgovjgr/jgrnjgq9cbiAqIEBwYXJhbSBwQWN0aW9ucyDjgZ3jga7ku5bjga7jgr/jgrnjgq8g44Kz44OU44O855So44OG44Kt44K544OI44KS5L2c5oiQ44GZ44KL5pmC44Gr5L2/44GGXG4gKi9cbmV4cG9ydCBjb25zdCBUYXNrSXRlbTogRnVuY3Rpb25Db21wb25lbnQ8XG4gIHsgYWN0aW9uOiBBY3Rpb247IHBBY3Rpb25zOiBBY3Rpb25bXSB9XG4+ID0gKFxuICB7IGFjdGlvbiwgcEFjdGlvbnMgfSxcbikgPT4ge1xuICBjb25zdCB0eXBlID0gdXNlTWVtbygoKSA9PiB0b1N0YXR1c0xhYmVsKGFjdGlvbi5mcmVzaG5lc3Muc3RhdHVzKSwgW1xuICAgIGFjdGlvbi5mcmVzaG5lc3Muc3RhdHVzLFxuICBdKTtcbiAgY29uc3Qgc3RhcnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB0aW1lID0gZm9ybWF0KGdldFN0YXJ0KGFjdGlvbikpLnNsaWNlKDExKTtcbiAgICByZXR1cm4gdGltZSB8fCBcIiAgICAgXCI7XG4gIH0sIFtnZXRTdGFydChhY3Rpb24pXSk7XG4gIGNvbnN0IGR1cmF0aW9uID0gdXNlTWVtbygoKSA9PiBnZXREdXJhdGlvbihhY3Rpb24pLCBbYWN0aW9uXSk7XG4gIGNvbnN0IGZyZXNobmVzc0xldmVsID0gTWF0aC5mbG9vcihNYXRoLnJvdW5kKGFjdGlvbi5zY29yZSkgLyA3KTtcblxuICBjb25zdCBub3cgPSB1c2VNaW51dGVzKCk7XG4gIC8qKiDnj77lnKjmmYLliLvku6XpmY3jgavlrp/ooYzml6XmmYLjgYzoqK3lrprjgZXjgozjgabjgYTjgozjgbBgdHJ1ZWBcbiAgICpcbiAgICog5YaN6YWN572u44GX44Gf44K/44K544Kv44GL44Gp44GG44GL44KS6KGo44GX44Gm44GE44KLXG4gICAqL1xuICBjb25zdCBzY2hlZHVsZWQgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBhY3Rpb24uZXhlY3V0ZWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgaXNBZnRlcihcbiAgICAgICAgYWRkTWludXRlcyh0b0RhdGUoYWN0aW9uLmV4ZWN1dGVkLnN0YXJ0KSwgYWN0aW9uLmV4ZWN1dGVkLmR1cmF0aW9uKSxcbiAgICAgICAgbm93LFxuICAgICAgKSxcbiAgICBbYWN0aW9uLmV4ZWN1dGVkPy5zdGFydCwgYWN0aW9uLmV4ZWN1dGVkPy5kdXJhdGlvbiwgbm93XSxcbiAgKTtcblxuICAvKiog44Kz44OU44O855So44OG44Kt44K544OIICovXG4gIGNvbnN0IHRleHQgPSB1c2VNZW1vKFxuICAgICgpID0+IFsuLi5wQWN0aW9ucywgYWN0aW9uXS5tYXAoKGFjdGlvbikgPT4gYFske2FjdGlvbi5yYXd9XWApLmpvaW4oXCJcXG5cIiksXG4gICAgW3BBY3Rpb25zLCBhY3Rpb25dLFxuICApO1xuICByZXR1cm4gKFxuICAgIDxsaVxuICAgICAgZGF0YS10eXBlPXthY3Rpb24uZnJlc2huZXNzLnN0YXR1c31cbiAgICAgIGRhdGEtZnJlc2huZXNzPXthY3Rpb24uc2NvcmUudG9GaXhlZCgwKX1cbiAgICAgIGRhdGEtbGV2ZWw9e2ZyZXNobmVzc0xldmVsfVxuICAgICAgey4uLihmcmVzaG5lc3NMZXZlbCA8IDBcbiAgICAgICAgPyB7XG4gICAgICAgICAgc3R5bGU6IHsgb3BhY2l0eTogdGFza09wYWNpdHkoYWN0aW9uKS50b0ZpeGVkKDIpIH0sXG4gICAgICAgIH1cbiAgICAgICAgOiB7fSl9XG4gICAgPlxuICAgICAgPENvcHkgdGV4dD17dGV4dH0gdGl0bGU9XCLjgZPjgZPjgb7jgafjgrPjg5Tjg7xcIiAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibGFiZWwgdHlwZVwiPnt0eXBlfTwvc3Bhbj5cbiAgICAgIDxpIGNsYXNzTmFtZT17YGxhYmVsIGZhciBmYS1mdyR7c2NoZWR1bGVkID8gXCIgZmEtYm9va21hcmtcIiA6IFwiXCJ9YH0gLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImxhYmVsIGZyZXNobmVzc1wiPnthY3Rpb24uc2NvcmUudG9GaXhlZCgwKX08L3NwYW4+XG4gICAgICA8dGltZSBjbGFzc05hbWU9XCJsYWJlbCBzdGFydFwiPntzdGFydH08L3RpbWU+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJsYWJlbCBkdXJhdGlvblwiPntkdXJhdGlvbn1tPC9zcGFuPlxuICAgICAgPFNjcmFwYm94TGluayBwcm9qZWN0PXthY3Rpb24ucHJvamVjdH0gdGl0bGU9e2FjdGlvbi5yYXd9PlxuICAgICAgICB7YWN0aW9uLm5hbWV9XG4gICAgICA8L1NjcmFwYm94TGluaz5cbiAgICA8L2xpPlxuICApO1xufTtcblxuLyoqIOaXrOW6puOBq+W/nOOBmOOBpuihqOekuuOBmeOCi+OCv+OCueOCr+OBrumAj+aYjuW6puOCkuWkieOBiOOCi1xuICpcbiAqIOaXrOW6pjDjgac3MCUsIOaXrOW6pi0344GnNjAl44Gr44Gq44KL44KI44GG6Kq/56+A44GX44GfXG4gKi9cbmNvbnN0IHRhc2tPcGFjaXR5ID0gKGFjdGlvbjogQWN0aW9uKTogbnVtYmVyID0+XG4gIE1hdGgubWF4KFxuICAgIDAuOCAqIE1hdGguZXhwKE1hdGgubG9nKDggLyA3KSAvIDcgKiBhY3Rpb24uc2NvcmUpLFxuICAgIDAuMDUsXG4gICk7XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcIi4uLy4uL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4uLy4uL2hvd20vbG9jYWxEYXRlLnRzXCI7XG5pbXBvcnQgeyBLZXksIHRvS2V5LCB0b0xvY2FsRGF0ZSB9IGZyb20gXCIuLi9rZXkudHNcIjtcblxuZXhwb3J0IHR5cGUgUGFnZU5vID0gS2V5IHwgXCJleHBpcmVkXCIgfCBcImVycm9yc1wiO1xuXG5leHBvcnQgY29uc3QgdXNlTmF2aWdhdGlvbiA9IChcbiAgZGVmYXVsdFBhZ2VObzogUGFnZU5vID0gdG9LZXkobmV3IERhdGUoKSksXG4pID0+IHtcbiAgLyoqIOaXpeS7mOOBruWgtOWQiOOBr+ePvuWcqOihqOekuuOBl+OBpuOBhOOCi+OCv+OCueOCr+ODquOCueODiOOBruWfuua6lueCueOCkuihqOOBmVxuICAgKiBgZXhwaXJlZGDjga7jgajjgY3jga/jgoTjgormrovjgZfjgZ/kuojlrprjgpLooajnpLrjgZnjgotcbiAgICogYGVycm9yYOOBruOBqOOBjeOBr+OCqOODqeODvOOCkuihqOekuuOBmeOCi1xuICAgKi9cbiAgY29uc3QgW3BhZ2VObywgc2V0UGFnZU5vXSA9IHVzZVN0YXRlPFBhZ2VObz4oZGVmYXVsdFBhZ2VObyk7XG5cbiAgY29uc3QgbmV4dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRQYWdlTm8oKHBhZ2VObykgPT4ge1xuICAgICAgc3dpdGNoIChwYWdlTm8pIHtcbiAgICAgICAgY2FzZSBcImVycm9yc1wiOlxuICAgICAgICAgIHJldHVybiBcImV4cGlyZWRcIjtcbiAgICAgICAgY2FzZSBcImV4cGlyZWRcIjpcbiAgICAgICAgICByZXR1cm4gdG9LZXkobmV3IERhdGUoKSk7XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBjb25zdCBkYXRlID0gdG9EYXRlKHRvTG9jYWxEYXRlKHBhZ2VObykpO1xuICAgICAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIDEpO1xuICAgICAgICAgIHJldHVybiB0b0tleShkYXRlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHByZXYgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0UGFnZU5vKChwYWdlTm8pID0+IHtcbiAgICAgIGNvbnN0IG5vd0tleSA9IHRvS2V5KG5ldyBEYXRlKCkpO1xuICAgICAgc3dpdGNoIChwYWdlTm8pIHtcbiAgICAgICAgY2FzZSBcImVycm9yc1wiOlxuICAgICAgICAgIHJldHVybiBcImVycm9yc1wiO1xuICAgICAgICBjYXNlIFwiZXhwaXJlZFwiOlxuICAgICAgICAgIHJldHVybiBcImVycm9yc1wiO1xuICAgICAgICBjYXNlIG5vd0tleTpcbiAgICAgICAgICByZXR1cm4gXCJleHBpcmVkXCI7XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBjb25zdCBkYXRlID0gdG9EYXRlKHRvTG9jYWxEYXRlKHBhZ2VObykpO1xuICAgICAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSAtIDEpO1xuICAgICAgICAgIHJldHVybiB0b0tleShkYXRlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHsgcGFnZU5vLCBuZXh0LCBwcmV2IH07XG59O1xuIiwgImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCIuLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnROYW1lLCBTY3JhcGJveCB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXN0ZC1kb20udHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG5leHBvcnQgY29uc3QgdXNlVXNlclNjcmlwdEV2ZW50ID0gKFxuICBldmVudE5hbWU6IEV2ZW50TmFtZSxcbiAgY2FsbGJhY2s6ICgpID0+IHZvaWQsXG4pOiB2b2lkID0+XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2NyYXBib3gub24oZXZlbnROYW1lLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuICgpID0+IHNjcmFwYm94Lm9mZihldmVudE5hbWUsIGNhbGxiYWNrKTtcbiAgfSwgW10pO1xuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSBcIi4uL2RlcHMvcHJlYWN0LnRzeFwiO1xuXG5leHBvcnQgY29uc3QgdXNlRXhwb3J0cyA9IDxcbiAgRXhwb3J0TmFtZXMgZXh0ZW5kcyBzdHJpbmcsXG4gIEV4cG9ydE9iamVjdCBleHRlbmRzIFJlY29yZDxFeHBvcnROYW1lcywgdW5rbm93bj4sXG4+KFxuICBleHBvcnRlcjogKFxuICAgIGV4cG9ydE9iamVjdDogRXhwb3J0T2JqZWN0IHwgUmVjb3JkPEV4cG9ydE5hbWVzLCB1bmRlZmluZWQ+LFxuICApID0+IHZvaWQsXG4gIGV4cG9ydE9iamVjdDogRXhwb3J0T2JqZWN0LFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxFeHBvcnRPYmplY3Q+KHsgLi4uZXhwb3J0T2JqZWN0IH0pO1xuICB1c2VFZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgT2JqZWN0LmFzc2lnbihyZWYuY3VycmVudCwgZXhwb3J0T2JqZWN0KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGV4cG9ydE9iamVjdCkpIHtcbiAgICAgICAgICBkZWxldGUgcmVmLmN1cnJlbnRba2V5IGFzIEV4cG9ydE5hbWVzXTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LFxuICAgIFsuLi5PYmplY3Qua2V5cyhleHBvcnRPYmplY3QpXS5zb3J0KCkubWFwKChrZXkpID0+XG4gICAgICBleHBvcnRPYmplY3Rba2V5IGFzIEV4cG9ydE5hbWVzXVxuICAgICksXG4gICk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZXhwb3J0ZXIocmVmLmN1cnJlbnQpO1xuICB9LCBbZXhwb3J0ZXJdKTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuLyoqIEBqc3hGcmFnIEZyYWdtZW50ICovXG5cbmltcG9ydCB7IEZyYWdtZW50LCBoLCByZW5kZXIsIHVzZU1lbW8gfSBmcm9tIFwiLi4vLi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyB1c2VUYXNrQ3Jhd2xlciB9IGZyb20gXCIuLi91c2VUYXNrQ3Jhd2xlci50c1wiO1xuaW1wb3J0IHsgdXNlRGlhbG9nIH0gZnJvbSBcIi4uL3VzZURpYWxvZy50c3hcIjtcbmltcG9ydCB7IENTUyB9IGZyb20gXCIuLi92aWV3ZXIubWluLmNzcy50c1wiO1xuaW1wb3J0IHsgQ29weSB9IGZyb20gXCIuLi9Db3B5LnRzeFwiO1xuaW1wb3J0IHsgZnJvbURhdGUsIGlzQmVmb3JlLCB0b0RhdGUgfSBmcm9tIFwiLi4vLi4vaG93bS9sb2NhbERhdGUudHNcIjtcbmltcG9ydCB7IGNhbGNGcmVzaG5lc3MgfSBmcm9tIFwiLi4vLi4vaG93bS9mcmVzaG5lc3MudHNcIjtcbmltcG9ydCB7XG4gIGdldEVuZCxcbiAgZ2V0U3RhcnQsXG4gIGlzUmVjdXJyZW5jZSxcbiAgaXNSZW1pbmRlcixcbiAgUmVtaW5kZXIsXG59IGZyb20gXCIuLi8uLi9ob3dtL3BhcnNlLnRzXCI7XG5pbXBvcnQgeyBQZXJpb2QgfSBmcm9tIFwiLi4vLi4vaG93bS9QZXJpb2QudHNcIjtcbmltcG9ydCB7IGNvbXBhcmVGbiB9IGZyb20gXCIuLi8uLi9ob3dtL3NvcnQudHNcIjtcbmltcG9ydCB7IFN0YXR1cyB9IGZyb20gXCIuLi8uLi9ob3dtL3N0YXR1cy50c1wiO1xuaW1wb3J0IHsgdG9Mb2NhbERhdGUgfSBmcm9tIFwiLi4va2V5LnRzXCI7XG5pbXBvcnQgeyBMb2FkQnV0dG9uIH0gZnJvbSBcIi4uL0xvYWRCdXR0b24udHN4XCI7XG5pbXBvcnQgeyBUYXNrSXRlbSB9IGZyb20gXCIuL1Rhc2tJdGVtLnRzeFwiO1xuaW1wb3J0IHsgdXNlTmF2aWdhdGlvbiB9IGZyb20gXCIuL3VzZU5hdmlnYXRpb24udHN4XCI7XG5pbXBvcnQgeyB1c2VVc2VyU2NyaXB0RXZlbnQgfSBmcm9tIFwiLi4vdXNlVXNlclNjcmlwdEV2ZW50LnRzXCI7XG5pbXBvcnQgeyB1c2VFeHBvcnRzIH0gZnJvbSBcIi4uL3VzZUV4cG9ydHMudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZENvbnRyb2xsZXIge1xuICAvKiogY2FsZW5kYXLjgpLplovjgY8gKi9cbiAgb3BlbjogKCkgPT4gdm9pZDtcbiAgLyoqIGNhbGVuZGFy44KS6ZaJ44GY44KLICovXG4gIGNsb3NlOiAoKSA9PiB2b2lkO1xufVxuZXhwb3J0IHR5cGUgSW52YWxpZENvbnRyb2xsZXIgPSBSZWNvcmQ8a2V5b2YgVmFsaWRDb250cm9sbGVyLCB1bmRlZmluZWQ+O1xuLyoqIGNhbGVuZWRhcuOBrmNvbnRyb2xsZXJcbiAqXG4gKiBtZXRob2Rz44Gve0BsaW5rIFZhbGlkQ29udHJvbGxlcn3jgpLlj4LnhadcbiAqXG4gKiBjYWxlbmRhcuOBjHVtb3VudOOBleOCjOOBn+W+jOOBr3tAbGluayBJbnZhbGlkQ29udHJvbGxlcn0o5YWo44Gm44GubWV0aG9kc+OBjGB1bmRlZmluZWRgKeOBq+OBquOCi1xuICovXG5leHBvcnQgdHlwZSBDb250cm9sbGVyID0gVmFsaWRDb250cm9sbGVyIHwgSW52YWxpZENvbnRyb2xsZXI7XG5cbmV4cG9ydCBjb25zdCBzZXR1cCA9IChwcm9qZWN0czogc3RyaW5nW10pOiBQcm9taXNlPENvbnRyb2xsZXI+ID0+IHtcbiAgY29uc3QgYXBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgYXBwLmRhdGFzZXQudXNlcnNjcmlwdE5hbWUgPSBcInRha2tlci13b3JrZmxvd0AwLjAuMS9uZXh0LWFjdGlvbi12aWV3ZXJcIjtcbiAgY29uc3Qgc2hhZG93Um9vdCA9IGFwcC5hdHRhY2hTaGFkb3coeyBtb2RlOiBcIm9wZW5cIiB9KTtcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmQoYXBwKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKFxuICAgIChyZXNvbHZlKSA9PlxuICAgICAgcmVuZGVyKDxBcHAgZ2V0Q29udHJvbGxlcj17cmVzb2x2ZX0gcHJvamVjdHM9e3Byb2plY3RzfSAvPiwgc2hhZG93Um9vdCksXG4gICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbiBleHRlbmRzIFJlbWluZGVyIHtcbiAgZXhlY3V0ZWQ/OiBQZXJpb2Q7XG4gIHByb2plY3Q6IHN0cmluZztcbiAgc2NvcmU6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgZ2V0Q29udHJvbGxlcjogKGNvbnRyb2xsZXI6IENvbnRyb2xsZXIpID0+IHZvaWQ7XG4gIHByb2plY3RzOiBzdHJpbmdbXTtcbn1cbmNvbnN0IEFwcCA9ICh7IGdldENvbnRyb2xsZXIsIHByb2plY3RzIH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdGFza3MsIGVycm9ycywgbG9hZCwgbG9hZGluZyB9ID0gdXNlVGFza0NyYXdsZXIocHJvamVjdHMpO1xuICBjb25zdCB7IHBhZ2VObywgbmV4dCwgcHJldiB9ID0gdXNlTmF2aWdhdGlvbigpO1xuXG4gIC8qKiDooajnpLrjgZnjgovjgr/jgrnjgq8gKi9cbiAgY29uc3QgYWN0aW9uczogQWN0aW9uW10gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAocGFnZU5vID09PSBcImVycm9yc1wiKSB7XG4gICAgICAvLyDjgqjjg6njg7zjgavjgarjgaPjgZ/jgr/jgrnjgq/jgpLooajnpLpcbiAgICAgIHJldHVybiBlcnJvcnMubWFwKChlcnJvcikgPT4gKHtcbiAgICAgICAgbmFtZTogYCR7ZXJyb3IudGl0bGV9XFxubmFtZToke2Vycm9yLm5hbWV9XFxubWVzc2FnZToke2Vycm9yLm1lc3NhZ2V9YCxcbiAgICAgICAgcmF3OiBlcnJvci50aXRsZSxcbiAgICAgICAgZnJlc2huZXNzOiB7XG4gICAgICAgICAgcmVmRGF0ZTogeyB5ZWFyOiA5OTk5LCBtb250aDogMSwgZGF0ZTogMSB9LFxuICAgICAgICAgIHN0YXR1czogXCJ0b2RvXCIgYXMgU3RhdHVzLFxuICAgICAgICB9LFxuICAgICAgICBwcm9qZWN0OiBlcnJvci5wcm9qZWN0LFxuICAgICAgICBnZW5lcmF0ZWQ6IHRydWUsXG4gICAgICAgIHNjb3JlOiAwLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmIChwYWdlTm8gPT09IFwiZXhwaXJlZFwiKSB7XG4gICAgICAvLyDmnJ/pmZDliIfjgozjga7kuojlrprjgpLooajnpLpcbiAgICAgIC8vIOOCv+OCueOCr+OBr+ihqOekuuOBl+OBquOBhFxuICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgIHJldHVybiB0YXNrcy5mbGF0TWFwPEFjdGlvbj4oKHRhc2spID0+XG4gICAgICAgICFpc1JlbWluZGVyKHRhc2spICYmIGlzQmVmb3JlKGdldEVuZCh0YXNrKSwgZnJvbURhdGUobm93KSkgJiZcbiAgICAgICAgICB0YXNrLmZyZXNobmVzcyA9PT0gdW5kZWZpbmVkICYmIHRhc2sucmVjdXJyZW5jZSA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC4uLnRhc2ssXG4gICAgICAgICAgICAgIHNjb3JlOiAwLFxuICAgICAgICAgICAgICBmcmVzaG5lc3M6IHsgcmVmRGF0ZTogdGFzay5leGVjdXRlZC5zdGFydCwgc3RhdHVzOiBcInRvZG9cIiB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgICAgOiBbXVxuICAgICAgKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gaXNCZWZvcmUoZ2V0U3RhcnQoYSksIGdldFN0YXJ0KGIpKSA/IC0xIDogMCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZSA9IHRvRGF0ZSh0b0xvY2FsRGF0ZShwYWdlTm8pKSE7XG4gICAgLy8g5oyH5a6a44GV44KM44Gf5pel5LuY44KS6LW354K544Gr6KiI566X44GX44Gf5pes5bqm44Gr5Z+644Gl44GE44Gm44K944O844OI44GZ44KLXG4gICAgLy8g5LiA5b+c44CB5LiA5a6a5pyq5rqA44Gu5pes5bqm44Gu44K/44K544Kv44Gv6KGo56S644GX44Gq44GE44GM44CB5q2j55u044GT44Gu5Yi26ZmQ44Gv44GE44KJ44Gq44GE44KI44GG44Gr5oCd44GGXG4gICAgcmV0dXJuIHRhc2tzLmZsYXRNYXAoKHRhc2spID0+IHtcbiAgICAgIGlmICghdGFzay5mcmVzaG5lc3MpIHJldHVybiBbXTtcbiAgICAgIGlmIChpc1JlY3VycmVuY2UodGFzaykpIHJldHVybiBbXTtcbiAgICAgIGNvbnN0IHNjb3JlID0gY2FsY0ZyZXNobmVzcyh0YXNrLmZyZXNobmVzcywgZGF0ZSk7XG4gICAgICByZXR1cm4gc2NvcmUgPiAtOTk5ID8gW3sgLi4udGFzaywgc2NvcmUgfSBhcyBBY3Rpb25dIDogW107XG4gICAgfSkuc29ydChjb21wYXJlRm4pO1xuICB9LCBbdGFza3MsIGVycm9ycywgcGFnZU5vXSk7XG5cbiAgLy8gVUnjga7plovplolcbiAgY29uc3QgeyBEaWFsb2csIG9wZW4sIGNsb3NlIH0gPSB1c2VEaWFsb2coKTtcbiAgdXNlRXhwb3J0cyhnZXRDb250cm9sbGVyLCB7IG9wZW4sIGNsb3NlIH0pO1xuXG4gIC8qKiDjgrPjg5Tjg7znlKjjg4bjgq3jgrnjg4ggKi9cbiAgY29uc3QgdGV4dCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gW3BhZ2VObywgLi4uYWN0aW9ucy5tYXAoKGFjdGlvbikgPT4gYCBbJHthY3Rpb24ucmF3fV1gKV0uam9pbihcIlxcblwiKSxcbiAgICBbYWN0aW9ucywgcGFnZU5vXSxcbiAgKTtcblxuICAvLyDlkIzjgZjjgr/jg5bjgafliKXjga7jg5rjg7zjgrjjgavpgbfnp7vjgZfjgZ/jgajjgY3jga9tb2RhbOOCkumWieOBmOOCi1xuICB1c2VVc2VyU2NyaXB0RXZlbnQoXCJwYWdlOmNoYW5nZWRcIiwgY2xvc2UpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxzdHlsZT57Q1NTfTwvc3R5bGU+XG4gICAgICA8RGlhbG9nPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRyb2xsZXJcIj5cbiAgICAgICAgICA8Q29weSB0ZXh0PXt0ZXh0fSB0aXRsZT1cIkNvcHkgQWxsIFRhc2tzXCIgLz5cbiAgICAgICAgICA8c3Bhbj57cGFnZU5vfTwvc3Bhbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cIm5hdmkgbGVmdFwiIG9uQ2xpY2s9e3ByZXZ9PntcIlxcdWUwMmNcIn08L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cIm5hdmkgcmlnaHRcIiBvbkNsaWNrPXtuZXh0fT57XCJcXHVlMDJkXCJ9PC9idXR0b24+XG4gICAgICAgICAgPExvYWRCdXR0b24gbG9hZGluZz17bG9hZGluZ30gb25DbGljaz17bG9hZH0gLz5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImNsb3NlXCIgb25DbGljaz17Y2xvc2V9PntcIlxcdWYwMGRcIn08L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx1bCBjbGFzc05hbWU9XCJyZXN1bHQgdGFzay1saXN0XCIgZGF0YS1wYWdlLW5vPXtwYWdlTm99PlxuICAgICAgICAgIHthY3Rpb25zLm1hcCgoYWN0aW9uLCBpKSA9PiAoXG4gICAgICAgICAgICA8VGFza0l0ZW1cbiAgICAgICAgICAgICAga2V5PXthY3Rpb24ucmF3fVxuICAgICAgICAgICAgICBhY3Rpb249e2FjdGlvbn1cbiAgICAgICAgICAgICAgcEFjdGlvbnM9e2FjdGlvbnMuc2xpY2UoMCwgaSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L3VsPlxuICAgICAgPC9EaWFsb2c+XG4gICAgPC8+XG4gICk7XG59O1xuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwiLi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBnZXRQYWdlLCB0b1RpdGxlTGMgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1zdGQudHNcIjtcbmltcG9ydCB7IFNjcmFwYm94LCB0YWtlSW50ZXJuYWxMaW5lcyB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXN0ZC1kb20udHNcIjtcbmRlY2xhcmUgY29uc3Qgc2NyYXBib3g6IFNjcmFwYm94O1xuXG50eXBlIEtleSA9IGAvJHtzdHJpbmd9LyR7c3RyaW5nfWA7XG5jb25zdCB0b0tleSA9IChwcm9qZWN0OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBLZXkgPT5cbiAgYC8ke3Byb2plY3R9LyR7dG9UaXRsZUxjKHRpdGxlKX1gO1xuY29uc3QgcGFnZXMgPSBuZXcgTWFwPEtleSwgc3RyaW5nW10+KCk7XG50eXBlIExpc3RlbmVyID0gKGxpbmVzOiBzdHJpbmdbXSkgPT4gdm9pZDtcbmNvbnN0IGxpc3RlbmVycyA9IG5ldyBNYXA8S2V5LCBTZXQ8TGlzdGVuZXI+PigpO1xuY29uc3QgZW1pdENoYW5nZSA9IChrZXk6IEtleSwgbGluZXM6IHN0cmluZ1tdKSA9PiB7XG4gIHBhZ2VzLnNldChrZXksIGxpbmVzKTtcbiAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMuZ2V0KGtleSkgPz8gW10pIHtcbiAgICBsaXN0ZW5lcihsaW5lcyk7XG4gIH1cbn07XG4vLyDlhaXlipvjgZnjgovjgZ/jgbPjgavmm7TmlrDjgZnjgotcbi8vIOabtOaWsOOBr2BnZXQoKWDjgacx5Zue5Lul5LiK5ZG844Gz5Ye644GV44KM44GfcGFnZXPjga7jgb/jgpLlr77osaHjgajjgZnjgotcbmNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgaWYgKHRpbWVyICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICB0aW1lciA9IHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBwcm9qZWN0ID0gc2NyYXBib3guUHJvamVjdC5uYW1lO1xuICBjb25zdCB0aXRsZSA9IHNjcmFwYm94LlBhZ2UudGl0bGUgPz8gXCJcIjtcbiAgY29uc3Qga2V5ID0gdG9LZXkocHJvamVjdCwgdGl0bGUpO1xuICBpZiAoIXBhZ2VzLmhhcyhrZXkpKSByZXR1cm47XG5cbiAgY29uc3QgbGluZXMgPSB0YWtlSW50ZXJuYWxMaW5lcygpLm1hcCgobGluZSkgPT4gbGluZS50ZXh0KTtcbiAgLy8g5pu05paw44Gu44K/44Kk44Of44Oz44Kw44Gu5b2x6Z+/44Gn44CB5pys5paH44GM44G+44Gg5pu05paw44GV44KM44Gm44GE44Gq44GE5Y+v6IO95oCn44GM44GC44KLXG4gIC8vIOOBneOBruWgtOWQiOOBr2B0aXRsZWDjgajmnKzmloflhYjpoK3jga7mloflrZfliJfjgYzkuIDoh7TjgZnjgovjgb7jgaflvoXmqZ/jgZnjgotcbiAgdGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgaWYgKHRvVGl0bGVMYyh0aXRsZSkgIT09IHRvVGl0bGVMYyhsaW5lc1swXSkpIHJldHVybjtcbiAgICBlbWl0Q2hhbmdlKGtleSwgbGluZXMpO1xuICAgIGlmICh0aW1lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICAgIHRpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSwgMTAwMCk7XG59O1xubGV0IHRpbWVyOiB1bmRlZmluZWQgfCBudW1iZXI7XG57XG4gIHNjcmFwYm94Lm9uKFwicGFnZTpjaGFuZ2VkXCIsICgpID0+IHtcbiAgICBzY3JhcGJveC5vZmYoXCJsaW5lczpjaGFuZ2VkXCIsIHVwZGF0ZSk7XG5cbiAgICBjb25zdCBwcm9qZWN0ID0gc2NyYXBib3guUHJvamVjdC5uYW1lO1xuICAgIGNvbnN0IHRpdGxlID0gc2NyYXBib3guUGFnZS50aXRsZSA/PyBcIlwiO1xuICAgIGNvbnN0IGtleSA9IHRvS2V5KHByb2plY3QsIHRpdGxlKTtcbiAgICBpZiAoIXBhZ2VzLmhhcyhrZXkpKSByZXR1cm47XG5cbiAgICBzY3JhcGJveC5vbihcImxpbmVzOmNoYW5nZWRcIiwgdXBkYXRlKTtcbiAgfSk7XG59XG5cbmNvbnN0IGdldCA9IChwcm9qZWN0OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IGtleSA9IHRvS2V5KHByb2plY3QsIHRpdGxlKTtcbiAgY29uc3QgcmVzdWx0ID0gcGFnZXMuZ2V0KGtleSk7XG4gIGlmICghcmVzdWx0KSB7XG4gICAgLy8g5LiA5bqm44GX44GL5Yid5pyf5YyW5Yem55CG44GM6LWw44KJ44Gq44GE44KI44GG44Gr44GZ44KLXG4gICAgLy8gZHVtbXnjga7jgYvjgonphY3liJfjgpLlhaXjgozjgovjgaDjgZHjgarjga7jgafjgIEgYGVtaXRDaGFuZ2Vg44GnbGlzdGVuZXJz44Gv5ZG844Gz5Ye644GV44Gq44GP44Gm44GE44GEXG4gICAgcGFnZXMuc2V0KGtleSwgW10pO1xuXG4gICAgZ2V0UGFnZShwcm9qZWN0LCB0aXRsZSlcbiAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKCFyZXN1bHQub2spIHJldHVybiBbXTtcbiAgICAgICAgY29uc3QgbGluZXMgPSByZXN1bHQudmFsdWUubGluZXMubWFwKChsaW5lKSA9PiBsaW5lLnRleHQpO1xuICAgICAgICBlbWl0Q2hhbmdlKGtleSwgbGluZXMpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0bGUgPT09IHNjcmFwYm94LlBhZ2UudGl0bGUgJiZcbiAgICAgICAgICAhc2NyYXBib3gubGlzdGVuZXJzKFwibGluZXM6Y2hhbmdlZFwiKS5pbmNsdWRlcyh1cGRhdGUpXG4gICAgICAgICkge1xuICAgICAgICAgIHNjcmFwYm94Lm9uKFwibGluZXM6Y2hhbmdlZFwiLCB1cGRhdGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0ID8/IFtdO1xufTtcblxuLyoqIHNjcmFwYm9444Gu44Oa44O844K444OG44Kt44K544OI44KS5qC857SN44O75Y+C54Wn44GZ44KLaG9va3MgKi9cbmV4cG9ydCBjb25zdCB1c2VMaW5lcyA9IChwcm9qZWN0OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IFtsaW5lcywgc2V0TGluZXNdID0gdXNlU3RhdGU8c3RyaW5nW10+KGdldChwcm9qZWN0LCB0aXRsZSkpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gdG9LZXkocHJvamVjdCwgdGl0bGUpO1xuICAgIGNvbnN0IHNldCA9IGxpc3RlbmVycy5nZXQoa2V5KSA/PyBuZXcgU2V0KCk7XG4gICAgc2V0LmFkZChzZXRMaW5lcyk7XG4gICAgbGlzdGVuZXJzLnNldChrZXksIHNldCk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHNldC5kZWxldGUoc2V0TGluZXMpO1xuICAgIH07XG4gIH0sIFtwcm9qZWN0LCB0aXRsZV0pO1xuXG4gIHJldHVybiBsaW5lcztcbn07XG4iLCAiaW1wb3J0IHsgYWRkTWludXRlcyB9IGZyb20gXCIuLi9kZXBzL2RhdGUtZm5zLnRzXCI7XG5pbXBvcnQgeyBmcm9tRGF0ZSwgTG9jYWxEYXRlVGltZSwgdG9EYXRlIH0gZnJvbSBcIi4vbG9jYWxEYXRlLnRzXCI7XG5cbi8qIOOBhOOBmuOCjOWun+ijheOBmeOCi1xuLyoqIOabnOaXpeaMh+WumuaDheWgseOCkuWKoOOBiOOBn0RhdGUgKlxuZXhwb3J0IGludGVyZmFjZSBFeERhdGUge1xuICBiYXNlOiBEYXRlO1xuICBzdGFydE9mRGF5OiAwIHwgMSB8IDIgfCAzIHwgNCB8IDUgfCA2O1xuICB3ZWVrTnVtOiBudW1iZXI7XG59XG4qL1xuXG4vKiog54m55a6a44Gu5pmC6ZaT5bivICovXG5leHBvcnQgaW50ZXJmYWNlIFBlcmlvZCB7XG4gIC8qKiDplovlp4vml6XmmYIgKi9cbiAgc3RhcnQ6IExvY2FsRGF0ZVRpbWU7XG5cbiAgLyoqIOaJgOimgeaZgumWkyAobWluKSAqL1xuICBkdXJhdGlvbjogbnVtYmVyO1xufVxuXG4vKiog57WC5LqG5pmC5Yi744GM5pyq5a6a44Gu6KiY6YyyICovXG5leHBvcnQgaW50ZXJmYWNlIExvZyB7XG4gIC8qKiDplovlp4vml6XmmYIgKi9cbiAgc3RhcnQ6IExvY2FsRGF0ZVRpbWU7XG5cbiAgLyoqIOa2iOiyu+aZgumWkyAobWluKSAqL1xuICBkdXJhdGlvbj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEVuZCA9IDxUIGV4dGVuZHMgTG9nPihcbiAgcGVyaW9kOiBULFxuKTogVCBleHRlbmRzIHsgZHVyYXRpb246IG51bWJlciB9ID8gTG9jYWxEYXRlVGltZSA6IExvY2FsRGF0ZVRpbWUgfCB1bmRlZmluZWQgPT5cbiAgcGVyaW9kLmR1cmF0aW9uID09PSB1bmRlZmluZWRcbiAgICA/ICh1bmRlZmluZWQgYXMgVCBleHRlbmRzIHsgZHVyYXRpb246IG51bWJlciB9ID8gTG9jYWxEYXRlVGltZSA6IHVuZGVmaW5lZClcbiAgICA6IGZyb21EYXRlKGFkZE1pbnV0ZXModG9EYXRlKHBlcmlvZC5zdGFydCksIHBlcmlvZC5kdXJhdGlvbikpO1xuXG4vKiog54m55a6a5pel5pmC44Gn5YiG5Ymy44GZ44KLICovXG5leHBvcnQgY29uc3Qgc3BsaXQgPSAoXG4gIHBlcmlvZDogUGVyaW9kLFxuICBkYXRlOiBEYXRlLFxuKTogW1BlcmlvZCwgdW5kZWZpbmVkXSB8IFtQZXJpb2QsIFBlcmlvZF0gfCBbdW5kZWZpbmVkLCBQZXJpb2RdID0+IHtcbiAgY29uc3Qgc3RhcnQgPSB0b0RhdGUocGVyaW9kLnN0YXJ0KTtcbiAgY29uc3QgcGFydGl0aW9uID0gZGF0ZS5nZXRUaW1lKCk7XG4gIGNvbnN0IGZvcndvcmRNaW4gPSBNYXRoLnJvdW5kKChwYXJ0aXRpb24gLSBzdGFydC5nZXRUaW1lKCkpIC8gKDYwICogMTAwMCkpO1xuXG4gIGlmIChmb3J3b3JkTWluIDw9IDApIHJldHVybiBbdW5kZWZpbmVkLCBwZXJpb2RdO1xuICBpZiAocGVyaW9kLmR1cmF0aW9uIDw9IGZvcndvcmRNaW4pIHJldHVybiBbcGVyaW9kLCB1bmRlZmluZWRdO1xuICBjb25zdCBmb3J3YXJkID0geyBzdGFydDogcGVyaW9kLnN0YXJ0LCBkdXJhdGlvbjogZm9yd29yZE1pbiB9O1xuICByZXR1cm4gW2ZvcndhcmQsIHtcbiAgICBzdGFydDogZ2V0RW5kKGZvcndhcmQpLFxuICAgIGR1cmF0aW9uOiBwZXJpb2QuZHVyYXRpb24gLSBmb3J3b3JkTWluLFxuICB9XTtcbn07XG4iLCAiaW1wb3J0IHsgZGlmZmVyZW5jZUluTWludXRlcyB9IGZyb20gXCIuLi8uLi9kZXBzL2RhdGUtZm5zLnRzXCI7XG5pbXBvcnQgeyBQZXJpb2QgfSBmcm9tIFwiLi4vLi4vaG93bS9QZXJpb2QudHNcIjtcbmltcG9ydCB7IGdldEVuZCwgTG9nIH0gZnJvbSBcIi4uLy4uL2hvd20vUGVyaW9kLnRzXCI7XG5pbXBvcnQgeyBmcm9tRGF0ZSwgaXNCZWZvcmUgfSBmcm9tIFwiLi4vLi4vaG93bS9sb2NhbERhdGUudHNcIjtcbmltcG9ydCB7XG4gIEV2ZW50IGFzIEhvd21FdmVudCxcbiAgZ2V0TGlua1RpdGxlLFxuICBpc1JlbWluZGVyLFxuICBwYXJzZSxcbn0gZnJvbSBcIi4uLy4uL2hvd20vcGFyc2UudHNcIjtcbmltcG9ydCB7IFN0YXR1cyB9IGZyb20gXCIuLi8uLi9ob3dtL3N0YXR1cy50c1wiO1xuaW1wb3J0IHsgVGFzayBhcyBUYXNrTGluZSB9IGZyb20gXCIuLi8uLi90YXNrLnRzXCI7XG5pbXBvcnQgeyBQYXRoIH0gZnJvbSBcIi4uL3BhdGgudHNcIjtcblxuLyoqIOS6iOWumuihqOeUqOOBq+S/ruato+OBl+OBn0V2ZW50IG9iamVjdCAqL1xuZXhwb3J0IHR5cGUgRXZlbnQgPSBQbGFpbkV2ZW50IHwgRXZlbnRXaXRoTGluaztcblxuLyoqIHRhc2sgbmFtZeOBjOOCv+OCueOCr+ODquODs+OCr+OBp+OBquOBhOOBqOOBjeOBrkV2ZW50ICovXG5leHBvcnQgaW50ZXJmYWNlIFBsYWluRXZlbnQge1xuICAvKiogZXZlbnQgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIOOCv+OCueOCr+ODqeOCpOODs+OBq+WNsOWtl+OBleOCjOOBn+S6iOWumumWi+Wni+aXpeaZgiAqL1xuICBwbGFuOiBQZXJpb2Q7XG5cbiAgLyoqIOWun+e4vumWi+Wni+aXpeaZguOBqOa2iOiyu+aZgumWkyAqL1xuICByZWNvcmQ/OiBMb2c7XG59XG5cbi8qKiB0YXNrIG5hbWXjgYzjgr/jgrnjgq/jg6rjg7Pjgq/jgaDjgaPjgZ/jgajjgY3jga5FdmVudCAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudFdpdGhMaW5rIGV4dGVuZHMgUGxhaW5FdmVudCwgUGF0aCB7XG4gIC8qKiDlrp/ooYzml6XmmYIgKi9cbiAgZXhlY3V0ZWQ/OiBQZXJpb2Q7XG5cbiAgLyoqIOOCv+OCueOCr+OBrueKtuaFiyAqL1xuICBzdGF0dXM/OiBTdGF0dXM7XG59XG5cbi8qKiDjgr/jgrnjgq/jg6rjg7Pjgq/jgarjgolgdHJ1ZWAgKi9cbmV4cG9ydCBjb25zdCBpc0xpbmsgPSAoXG4gIGV2ZW50OiBFdmVudCxcbik6IGV2ZW50IGlzIEV2ZW50V2l0aExpbmsgPT4gXCJ0aXRsZVwiIGluIGV2ZW50O1xuXG4vKiog6KiY6Yyy44GM57WC5LqG44GX44Gf44K/44K544Kv44Gq44KJYHRydWVgICovXG5leHBvcnQgY29uc3QgaXNMb2dnZWQgPSAoZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiA9PlxuICBldmVudC5yZWNvcmQ/LmR1cmF0aW9uICE9PSB1bmRlZmluZWQ7XG5cbi8qKiDnj77lnKjmmYLliLvjgYvjgonmsbrlrprjgZXjgozjgovjgr/jgrnjgq/jga7nirbmhYtcbiAqXG4gKiAtIGRvbmU6IOWujOS6hlxuICogLSBleHBpcmVkOiDmmYLplpPliIfjgoxcbiAqIC0gbW92ZWQ6IOacquadpeOBq+S6iOWumuOCkuOBmuOCieOBl+OBn1xuICogLSB1bmRvbmU6IOacquWujOS6hlxuICovXG5leHBvcnQgdHlwZSBFdmVudFN0YXR1cyA9IFwiZG9uZVwiIHwgXCJtb3ZlZFwiIHwgXCJ1bmRvbmVcIiB8IFwiZXhwaXJlZFwiO1xuXG4vKiog54++5Zyo5pmC5Yi744KS44KC44Go44Gr44K/44K544Kv44Gu54q25oWL44KS5rG644KB44KLICovXG5leHBvcnQgY29uc3QgZ2V0RXZlbnRTdGF0dXMgPSAoXG4gIGV2ZW50OiBFdmVudCxcbiAgbm93OiBEYXRlLFxuKTogRXZlbnRTdGF0dXMgPT4ge1xuICBpZiAoaXNMaW5rKGV2ZW50KSAmJiBldmVudC5zdGF0dXMgPT09IFwiZG9uZVwiKSByZXR1cm4gZXZlbnQuc3RhdHVzO1xuICBpZiAoaXNMb2dnZWQoZXZlbnQpKSB7XG4gICAgcmV0dXJuIGlzTGluayhldmVudCkgJiYgZXZlbnQuZXhlY3V0ZWRcbiAgICAgIC8vIOODquODs+OCr+OBjOacquWujOS6hueKtuaFi+OBruOCv+OCueOCr+ODquODs+OCr+OBr+OAgeePvuWcqOaZguWIu+S7pemZjeOBq+mWi+Wni+aXpeaZguOBjOOBmuOCieOBleOCjOOBpuOBhOOCi+OBquOCiW1vdmVk44Go44GZ44KLXG4gICAgICA/IGlzQmVmb3JlKGZyb21EYXRlKG5vdyksIGV2ZW50LmV4ZWN1dGVkLnN0YXJ0KSA/IFwibW92ZWRcIiA6IFwiZXhwaXJlZFwiXG4gICAgICA6IFwiZG9uZVwiO1xuICB9XG4gIHJldHVybiBpc0JlZm9yZShnZXRFbmQoZXZlbnQucGxhbiksIGZyb21EYXRlKG5vdykpXG4gICAgLy8g44Oq44Oz44Kv44Gq44GX44K/44K544Kv44Gv44CB5a6f6KGM44GX44Gf44GL44Gp44GG44GL44Gr6Zai44KP44KJ44Ga44CB57WC5LqG5pel5pmC44GM6YGO44GO44Gm44GE44KM44GwZG9uZeOBqOOBmeOCi1xuICAgID8gaXNMaW5rKGV2ZW50KSA/IFwiZXhwaXJlZFwiIDogXCJkb25lXCJcbiAgICA6IFwidW5kb25lXCI7XG59O1xuXG4vKiog54++5Zyo5pmC5Yi744GL44KJRXZlbnTjga7jgoTjgormrovjgZfmmYLplpPjgpLmsYLjgoHjgosgKi9cbmV4cG9ydCBjb25zdCBnZXRSZW1haW5zID0gKGV2ZW50OiBFdmVudCwgbm93OiBEYXRlKTogbnVtYmVyID0+IHtcbiAgY29uc3Qgc3RhdHVzID0gZ2V0RXZlbnRTdGF0dXMoZXZlbnQsIG5vdyk7XG4gIGlmIChzdGF0dXMgPT09IFwiZG9uZVwiIHx8IHN0YXR1cyA9PT0gXCJtb3ZlZFwiKSByZXR1cm4gMDtcbiAgcmV0dXJuIGV2ZW50LnBsYW4uZHVyYXRpb247XG59O1xuXG4vKiogVGFza0xpbmXjgYvjgolFdmVudOOCkueUn+aIkOOBmeOCi1xuICpcbiAqIC0g5LqI5a6a6ZaL5aeL5pel5pmC44Gu44Gq44GEVGFza0xpbmXjga/lpInmj5vlr77osaHlpJZcbiAqIC0gdGFzayBuYW1l44GM44K/44K544Kv44Oq44Oz44Kv44Gu5aC05ZCI44Gn44KC44CBVGFza0xpbmXjgYvjgonlvpfjgZ/kuojlrprplovlp4vml6XmmYLjgpLkvb/jgaPjgaZFdmVudOOCkueUn+aIkOOBmeOCi1xuICpcbiAqIEBwYXJhbSB0YXNrIFRhc2tMaW5lXG4gKiBAcGFyYW0gcHJvamVjdCBwcm9qZWN0IG5hbWUsIOOCv+OCueOCr+ODquODs+OCr+OBruODkeOCueOCkuS9nOOCi+OBqOOBjeOBq+S9v+OBhlxuICogQHJldHVybiBgRXZlbnRgLCDkuojlrprplovlp4vml6XmmYLjgYzjgarjgYRUYXNrTGluZeOBruOBqOOBjeOBr2B1bmRlZmluZWRgXG4gKi9cbmV4cG9ydCBjb25zdCBmcm9tVGFza0xpbmUgPSAoXG4gIHRhc2s6IFRhc2tMaW5lLFxuICBwcm9qZWN0OiBzdHJpbmcsXG4pOiBFdmVudCB8IHVuZGVmaW5lZCA9PiB7XG4gIC8vIOOCv+OCueOCr+ODquODs+OCr+OBoOOBo+OBn+WgtOWQiOOCkuiAg+aFruOBl+OBpuOAgVtd5YiG44KS5aSW44GX44Gm6Kej5p6Q44GZ44KLXG4gIC8vIOino+aekOOBp+OBjeOBquOBi+OBo+OBn+WgtOWQiOOBr1td44KS5aSW44GZ5YmN44Gu44KS5L2/44GG44Gu44Gn5ZWP6aGM44Gq44GEXG4gIGNvbnN0IHJlc3VsdCA9IHBhcnNlKHRhc2sudGl0bGUuc2xpY2UoMSwgLTEpKTtcblxuICAvLyDkuojlrprplovlp4vml6XmmYLjgYzjgYLjgovjgoLjga7jga7jgb/lr77osaHjgajjgZnjgotcbiAgaWYgKCF0YXNrLnBsYW4uc3RhcnQpIHJldHVybjtcblxuICBjb25zdCBldmVudDogUGxhaW5FdmVudCA9IHtcbiAgICBuYW1lOiByZXN1bHQ/Lm9rID8gcmVzdWx0LnZhbHVlLm5hbWUgOiB0YXNrLnRpdGxlLFxuICAgIHBsYW46IHtcbiAgICAgIHN0YXJ0OiBmcm9tRGF0ZSh0YXNrLnBsYW4uc3RhcnQpLFxuICAgICAgZHVyYXRpb246ICh0YXNrLnBsYW4uZHVyYXRpb24gPz8gMCkgLyA2MCxcbiAgICB9LFxuICB9O1xuICAvLyBvcHRpb25hbCBwYXJhbWV0ZXJz44KS5Z+L44KB44Gm44GE44GPXG4gIGlmICh0YXNrLnJlY29yZC5zdGFydCkge1xuICAgIGV2ZW50LnJlY29yZCA9IHtcbiAgICAgIHN0YXJ0OiBmcm9tRGF0ZSh0YXNrLnJlY29yZC5zdGFydCksXG4gICAgfTtcbiAgICBpZiAodGFzay5yZWNvcmQuZW5kKSB7XG4gICAgICBldmVudC5yZWNvcmQuZHVyYXRpb24gPSBkaWZmZXJlbmNlSW5NaW51dGVzKFxuICAgICAgICB0YXNrLnJlY29yZC5lbmQsXG4gICAgICAgIHRhc2sucmVjb3JkLnN0YXJ0LFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFyZXN1bHQ/Lm9rKSByZXR1cm4gZXZlbnQ7XG5cbiAgY29uc3QgZXZlbnRXaXRoTGluazogRXZlbnRXaXRoTGluayA9IHtcbiAgICAuLi5ldmVudCxcbiAgICB0aXRsZTogcmVzdWx0LnZhbHVlLnJhdyxcbiAgICBwcm9qZWN0LFxuICB9O1xuICBpZiAocmVzdWx0LnZhbHVlLmZyZXNobmVzcykge1xuICAgIGV2ZW50V2l0aExpbmsuc3RhdHVzID0gcmVzdWx0Py52YWx1ZS5mcmVzaG5lc3Muc3RhdHVzO1xuICB9XG4gIGlmICghaXNSZW1pbmRlcihyZXN1bHQudmFsdWUpKSB7XG4gICAgZXZlbnRXaXRoTGluay5leGVjdXRlZCA9IHJlc3VsdC52YWx1ZS5leGVjdXRlZDtcbiAgfVxuICByZXR1cm4gZXZlbnRXaXRoTGluaztcbn07XG5cbi8qKiBob3dt44GuRXZlbnTjgYvjgolFdmVudOOCkueUn+aIkOOBmeOCiyAqL1xuZXhwb3J0IGNvbnN0IGZyb21Ib3dtRXZlbnQgPSAoXG4gIGV2ZW50OiBIb3dtRXZlbnQsXG4gIHByb2plY3Q6IHN0cmluZyxcbik6IEV2ZW50ID0+IHtcbiAgY29uc3QgdGl0bGUgPSBnZXRMaW5rVGl0bGUoZXZlbnQpO1xuXG4gIHJldHVybiB0aXRsZSAhPT0gdW5kZWZpbmVkXG4gICAgPyB7XG4gICAgICBuYW1lOiBldmVudC5uYW1lLFxuICAgICAgcHJvamVjdCxcbiAgICAgIHRpdGxlLFxuICAgICAgZXhlY3V0ZWQ6IGV2ZW50LmV4ZWN1dGVkLFxuICAgICAgcGxhbjogZXZlbnQuZXhlY3V0ZWQsXG4gICAgICBzdGF0dXM6IGV2ZW50LmZyZXNobmVzcz8uc3RhdHVzLFxuICAgIH1cbiAgICA6IHtcbiAgICAgIG5hbWU6IGV2ZW50Lm5hbWUsXG4gICAgICBwbGFuOiBldmVudC5leGVjdXRlZCxcbiAgICB9O1xufTtcbiIsICJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcIi4uLy4uL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gXCIuLi91c2VUYXNrQ3Jhd2xlci50c1wiO1xuaW1wb3J0IHsgcGFyc2VMaW5lcyB9IGZyb20gXCIuLi8uLi90YXNrLnRzXCI7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gXCIuLi8uLi91dGlscy50c1wiO1xuaW1wb3J0IHtcbiAgYWRkRGF5cyxcbiAgZW5kT2ZEYXksXG4gIGlzU2FtZURheSxcbiAgc3RhcnRPZkRheSxcbiAgc3ViRGF5cyxcbn0gZnJvbSBcIi4uLy4uL2RlcHMvZGF0ZS1mbnMudHNcIjtcbmltcG9ydCB7IGlzQmVmb3JlLCB0b0RhdGUgfSBmcm9tIFwiLi4vLi4vaG93bS9sb2NhbERhdGUudHNcIjtcbmltcG9ydCB7IGlzUmVjdXJyZW5jZSwgaXNSZW1pbmRlciwgbWFrZVJlcGVhdCB9IGZyb20gXCIuLi8uLi9ob3dtL3BhcnNlLnRzXCI7XG5pbXBvcnQgeyB0b1RpdGxlIH0gZnJvbSBcIi4uLy4uL2RpYXJ5LnRzXCI7XG5pbXBvcnQgeyB1c2VMaW5lcyB9IGZyb20gXCIuLi91c2VMaW5lcy50c1wiO1xuaW1wb3J0IHsgRXZlbnQsIGZyb21Ib3dtRXZlbnQsIGZyb21UYXNrTGluZSB9IGZyb20gXCIuL2V2ZW50LnRzXCI7XG5pbXBvcnQgeyBzcGxpdCB9IGZyb20gXCIuLi8uLi9ob3dtL1BlcmlvZC50c1wiO1xuXG4vKiog5oyH5a6a44GX44Gf5pel5LuY44Gu5LqI5a6a44KS5Y+W5b6X44GZ44KLXG4gKlxuICog5pel5LuY44KS44G+44Gf44GQ5LqI5a6a44Gv44CB5oyH5a6a44GX44Gf5pel5LuY44Gr44GL44G244KL6ZW344GV44Gr5YmK44Gj44Gm5Y+W5b6X44GZ44KLXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VFdmVudHMgPSAoXG4gIHByb2plY3Q6IHN0cmluZyxcbiAgZGF0ZTogRGF0ZSxcbiAgdGFza3M6IFRhc2tbXSxcbik6IEV2ZW50W10gPT4ge1xuICAvLyDml6XliIroqJjpjLJzaGVldOOBi+OCieOAgeWJjeaXpeODu+W9k+aXpeODu+e/jOaXpeOBruS6iOWumuOCkuWPluW+l+OBmeOCi1xuICAvLyDml6XjgpLjgb7jgZ/jgZDkuojlrprjgavlr77lv5zjgZnjgovjgZ/jgoHjgIHliY3lvozml6Xjga7kuojlrprjgoLlj5blvpfjgZnjgotcbiAgLy8g5b2T5pel44Gu5LqI5a6a5YCL5pWw5Yik5a6a44KS5b6M44Gn44KE44KL44Gu44Gn44CB5Yil44CF44Gr5LqI5a6a44KS5Y+W44KK5Ye644GX44Gm44GK44GPXG4gIGNvbnN0IGV2ZW50c18gPSBbXG4gICAgdXNlRXZlbnRzXyhwcm9qZWN0LCBzdWJEYXlzKGRhdGUsIDEpLCB0YXNrcyksXG4gICAgdXNlRXZlbnRzXyhwcm9qZWN0LCBkYXRlLCB0YXNrcyksXG4gICAgdXNlRXZlbnRzXyhwcm9qZWN0LCBhZGREYXlzKGRhdGUsIDEpLCB0YXNrcyksXG4gIF07XG4gIGNvbnN0IGV2ZW50cyA9IHVzZU1lbW8oKCkgPT4gZXZlbnRzXy5mbGF0KCksIGV2ZW50c18pO1xuXG4gIC8vIOaXpeS7mOOCkuOBvuOBn+OBkOS6iOWumuOBr+OAgeaMh+WumuOBl+OBn+aXpeS7mOOBq+OBi+OBtuOCi+mVt+OBleOBq+WJiuOBo+OBpuWPluW+l+OBmeOCi1xuICByZXR1cm4gdXNlTWVtbygoKSA9PiB7XG4gICAgLyoqIOOBk+OBruaZguWIu+S7pemZjeOBruS6iOWumuOBoOOBkeihqOekuuOBmeOCiyAqL1xuICAgIGNvbnN0IHNQYXJ0aXRpb24gPSBzdGFydE9mRGF5KGRhdGUpO1xuICAgIC8qKiDjgZPjga7mmYLliLvku6XliY3jga7kuojlrprjgaDjgZHooajnpLrjgZnjgosgKi9cbiAgICBjb25zdCBlUGFydGl0aW9uID0gZW5kT2ZEYXkoZGF0ZSk7XG5cbiAgICAvLyDlvZPml6XlhoXjga7kuojlrprjgaDjgZHliIfjgorlh7rjgZlcbiAgICByZXR1cm4gZXZlbnRzLmZsYXRNYXAoXG4gICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgWywgYmFja3dhcmRdID0gc3BsaXQoZXZlbnQucGxhbiwgc1BhcnRpdGlvbik7XG4gICAgICAgIGlmICghYmFja3dhcmQpIHJldHVybiBbXTtcbiAgICAgICAgY29uc3QgW2ZvcndhcmRdID0gc3BsaXQoYmFja3dhcmQsIGVQYXJ0aXRpb24pO1xuICAgICAgICBpZiAoIWZvcndhcmQpIHJldHVybiBbXTtcbiAgICAgICAgY29uc3QgeyBwbGFuOiBfLCAuLi5yZXN0IH0gPSBldmVudDtcbiAgICAgICAgcmV0dXJuIFt7IHBsYW46IGZvcndhcmQsIC4uLnJlc3QgfV07XG4gICAgICB9LFxuICAgICkuc29ydCgoYSwgYikgPT4gaXNCZWZvcmUoYS5wbGFuLnN0YXJ0LCBiLnBsYW4uc3RhcnQpID8gLTEgOiAwKTtcbiAgfSwgW2V2ZW50cywgZGF0ZV0pO1xufTtcblxuY29uc3QgdXNlRXZlbnRzXyA9IChwcm9qZWN0OiBzdHJpbmcsIGRhdGU6IERhdGUsIHRhc2tzOiBUYXNrW10pID0+IHtcbiAgY29uc3QgbGluZXMgPSB1c2VMaW5lcyhwcm9qZWN0LCB0b1RpdGxlKGRhdGUpKTtcbiAgLyoqIOaXpeWIiuiomOmMsnNoZWV044GL44KJ5Y+W44KK5Ye644GX44GfZXZlbnRzICovXG4gIGNvbnN0IGV2ZW50c0Zyb21MaW5lcyA9IHVzZU1lbW8oKCkgPT4gZ2V0RXZlbnRzRnJvbUxpbmVzKGxpbmVzLCBwcm9qZWN0KSwgW1xuICAgIGxpbmVzLFxuICAgIHByb2plY3QsXG4gIF0pO1xuXG4gIHJldHVybiB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBldmVudHNGcm9tTGluZXMubGVuZ3RoICE9PSAwXG4gICAgICAgID8gZXZlbnRzRnJvbUxpbmVzXG4gICAgICAgIC8v5b2T5pel44Gu5pel5YiK6KiY6Yyyc2hlZXTjgYvjgonkuIDjgaTjgoLlj5blvpfjgafjgY3jgarjgYvjgaPjgZ/loLTlkIjjga/jgIHjgr/jgrnjgq/jg6rjg7Pjgq/jgYvjgonnlJ/miJDjgZnjgotcbiAgICAgICAgOiBnZXRFdmVudHNGcm9tTGlua3MoZGF0ZSwgdGFza3MpLFxuICAgIFtldmVudHNGcm9tTGluZXMsIGRhdGUsIHRhc2tzXSxcbiAgKTtcbn07XG5cbi8qKiDjgr/jgrnjgq/jg6rjg7Pjgq/jgYvjgonjgIFFdmVudHPjgpLnlJ/miJDjgZnjgotcbiAqXG4gKiDkuojlrprplovlp4vml6XmmYLjgYzjgYLjgaPjgabjgIHjgb7jgaDntYLjgo/jgaPjgabjgYTjgarjgYTjgr/jgrnjgq/jgpLlr77osaHjgajjgZnjgovjgIJcbiAqL1xuY29uc3QgZ2V0RXZlbnRzRnJvbUxpbmtzID0gKGRhdGU6IERhdGUsIHRhc2tzOiBUYXNrW10pOiBFdmVudFtdID0+XG4gIHRhc2tzLmZsYXRNYXAoKHRhc2spID0+IHtcbiAgICBpZiAodGFzay5mcmVzaG5lc3M/LnN0YXR1cyA9PT0gXCJkb25lXCIpIHJldHVybiBbXTtcbiAgICBpZiAoaXNSZW1pbmRlcih0YXNrKSkgcmV0dXJuIFtdO1xuICAgIGlmIChpc1JlY3VycmVuY2UodGFzaykpIHtcbiAgICAgIGNvbnN0IGdlbmVyYXRlZCA9IG1ha2VSZXBlYXQodGFzaywgZGF0ZSk7XG4gICAgICByZXR1cm4gZ2VuZXJhdGVkID8gW2Zyb21Ib3dtRXZlbnQoZ2VuZXJhdGVkLCB0YXNrLnByb2plY3QpXSA6IFtdO1xuICAgIH1cbiAgICBjb25zdCBzdGFydCA9IHRvRGF0ZSh0YXNrLmV4ZWN1dGVkLnN0YXJ0KTtcbiAgICByZXR1cm4gaXNTYW1lRGF5KHN0YXJ0LCBkYXRlKSA/IFtmcm9tSG93bUV2ZW50KHRhc2ssIHRhc2sucHJvamVjdCldIDogW107XG4gIH0pO1xuXG4vKiog5pel5YiK6KiY6Yyyc2hlZXTjgYvjgonjgIFFdmVudHPjgpLnlJ/miJDjgZnjgotcbiAqXG4gKiDkuojlrprplovlp4vml6XmmYLjgYzjgYLjgovjgoLjga7jga7jgb/lr77osaHjgajjgZnjgovjgILlrozkuoYv5pyq5a6M5LqG44Gv6ICD5oWu44GX44Gq44GEXG4gKi9cbmNvbnN0IGdldEV2ZW50c0Zyb21MaW5lcyA9IChcbiAgbGluZXM6IHN0cmluZ1tdLFxuICBwcm9qZWN0OiBzdHJpbmcsXG4pOiBFdmVudFtdID0+IHtcbiAgY29uc3QgZXZlbnRzOiBFdmVudFtdID0gW107XG4gIGZvciAoY29uc3QgdGFzayBvZiBwYXJzZUxpbmVzKGxpbmVzKSkge1xuICAgIGlmIChpc1N0cmluZyh0YXNrKSkgY29udGludWU7XG5cbiAgICBjb25zdCBldmVudCA9IGZyb21UYXNrTGluZSh0YXNrLCBwcm9qZWN0KTtcbiAgICBpZiAoIWV2ZW50KSBjb250aW51ZTtcblxuICAgIGV2ZW50cy5wdXNoKGV2ZW50KTtcbiAgfVxuICByZXR1cm4gZXZlbnRzO1xufTtcbiIsICIvKiogQGpzeCBoICovXG5cbmltcG9ydCB7IEZ1bmN0aW9uQ29tcG9uZW50LCBoLCB1c2VNZW1vIH0gZnJvbSBcIi4uLy4uL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgRXZlbnQsIGdldEV2ZW50U3RhdHVzLCBpc0xpbmsgfSBmcm9tIFwiLi4vc2NoZWR1bGVyL2V2ZW50LnRzXCI7XG5pbXBvcnQgeyBTY3JhcGJveExpbmsgfSBmcm9tIFwiLi4vU2NyYXBib3hMaW5rLnRzeFwiO1xuaW1wb3J0IHsgdXNlTWludXRlcyB9IGZyb20gXCIuLi91c2VNaW51dGVzLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBFdmVudEl0ZW06IEZ1bmN0aW9uQ29tcG9uZW50PHsgZXZlbnQ6IEV2ZW50IH0+ID0gKHsgZXZlbnQgfSkgPT4ge1xuICBjb25zdCBzdGFydCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZXZlbnQucGxhbi5zdGFydC5ob3VycyArIGV2ZW50LnBsYW4uc3RhcnQubWludXRlcyAvIDYwLFxuICAgIFtldmVudC5wbGFuLnN0YXJ0XSxcbiAgKTtcbiAgY29uc3Qgc3R5bGUgPSB1c2VNZW1vKFxuICAgICgpID0+IGAtLXN0YXJ0OiAke3N0YXJ0fTsgLS1kdXJhdGlvbjogJHtldmVudC5wbGFuLmR1cmF0aW9ufTtgLFxuICAgIFtzdGFydCwgZXZlbnQucGxhbi5kdXJhdGlvbl0sXG4gICk7XG5cbiAgY29uc3Qgbm93ID0gdXNlTWludXRlcygpO1xuICBjb25zdCB0eXBlID0gdXNlTWVtbygoKSA9PiBnZXRFdmVudFN0YXR1cyhldmVudCwgbm93KSwgW2V2ZW50LCBub3ddKTtcblxuICByZXR1cm4gIWlzTGluayhldmVudClcbiAgICA/IChcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwiZXZlbnRcIlxuICAgICAgICBkYXRhLXN0YXR1cz17dHlwZX1cbiAgICAgICAgdGl0bGU9e2V2ZW50Lm5hbWV9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgID5cbiAgICAgICAge2V2ZW50Lm5hbWV9XG4gICAgICA8L2Rpdj5cbiAgICApXG4gICAgOiAoXG4gICAgICA8U2NyYXBib3hMaW5rXG4gICAgICAgIGNsYXNzTmFtZT1cImV2ZW50XCJcbiAgICAgICAgZGF0YS1zdGF0dXM9e3R5cGV9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgdGl0bGU9e2V2ZW50LnRpdGxlfVxuICAgICAgICBwcm9qZWN0PXtldmVudC5wcm9qZWN0fVxuICAgICAgPlxuICAgICAgICB7ZXZlbnQubmFtZX1cbiAgICAgIDwvU2NyYXBib3hMaW5rPlxuICAgICk7XG59O1xuIiwgIi8qKiBAanN4IGggKi9cbi8qKiBAanN4RnJhZyBGcmFnbWVudCAqL1xuXG5pbXBvcnQgeyBGcmFnbWVudCwgRnVuY3Rpb25Db21wb25lbnQsIGgsIHVzZU1lbW8gfSBmcm9tIFwiLi4vLi4vZGVwcy9wcmVhY3QudHN4XCI7XG5pbXBvcnQgeyBUYXNrIH0gZnJvbSBcIi4uL3VzZVRhc2tDcmF3bGVyLnRzXCI7XG5pbXBvcnQgeyB1c2VFdmVudHMgfSBmcm9tIFwiLi4vc2NoZWR1bGVyL3VzZUV2ZW50cy50c1wiO1xuaW1wb3J0IHsgaXNTYW1lRGF5IH0gZnJvbSBcIi4uLy4uL2RlcHMvZGF0ZS1mbnMudHNcIjtcbmltcG9ydCB7IHVzZU1pbnV0ZXMgfSBmcm9tIFwiLi4vdXNlTWludXRlcy50c1wiO1xuaW1wb3J0IHsgZ2V0SG91cnMgfSBmcm9tIFwiLi4vLi4vZGVwcy9kYXRlLWZucy50c1wiO1xuaW1wb3J0IHsgZ2V0TWludXRlcyB9IGZyb20gXCIuLi8uLi9kZXBzL2RhdGUtZm5zLnRzXCI7XG5pbXBvcnQgeyBFdmVudEl0ZW0gfSBmcm9tIFwiLi9FdmVudEl0ZW0udHN4XCI7XG5pbXBvcnQgeyBpc0xpbmsgfSBmcm9tIFwiLi4vc2NoZWR1bGVyL2V2ZW50LnRzXCI7XG5pbXBvcnQgeyBDb3B5IH0gZnJvbSBcIi4uL0NvcHkudHN4XCI7XG5cbmV4cG9ydCBjb25zdCBUaW1lTGluZTogRnVuY3Rpb25Db21wb25lbnQ8XG4gIHsgcHJvamVjdDogc3RyaW5nOyBkYXRlOiBEYXRlOyB0YXNrczogVGFza1tdIH1cbj4gPSAoeyBwcm9qZWN0LCBkYXRlLCB0YXNrcyB9KSA9PiB7XG4gIGNvbnN0IGV2ZW50cyA9IHVzZUV2ZW50cyhwcm9qZWN0LCBkYXRlLCB0YXNrcyk7XG4gIGNvbnN0IGxpbmtMaXN0ID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgZXZlbnRzLmZsYXRNYXAoKGV2ZW50KSA9PiBpc0xpbmsoZXZlbnQpID8gW2BbJHtldmVudC50aXRsZX1dYF0gOiBbXSkuam9pbihcbiAgICAgICAgXCJcXG5cIixcbiAgICAgICksXG4gICAgW2V2ZW50c10sXG4gICk7XG4gIGNvbnN0IG5vdyA9IHVzZU1pbnV0ZXMoKTtcbiAgY29uc3QgaW5kaWNhdG9yID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgaXNTYW1lRGF5KG5vdywgZGF0ZSlcbiAgICAgICAgPyAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5kaWNhdG9yXCJcbiAgICAgICAgICAgIHN0eWxlPXtgLS1zdGFydDogJHtnZXRIb3Vycyhub3cpICsgZ2V0TWludXRlcyhub3cpIC8gNjB9YH1cbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICAgIDogPD48Lz4sXG4gICAgW25vdywgZGF0ZV0sXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInRpbWVsaW5lXCIgcm9sZT1cImdyaWRjZWxsXCI+XG4gICAgICB7ZXZlbnRzLm1hcCgoZXZlbnQpID0+IDxFdmVudEl0ZW0ga2V5PXtldmVudC5uYW1lfSBldmVudD17ZXZlbnR9IC8+KX1cbiAgICAgIHtpbmRpY2F0b3J9XG4gICAgICA8Q29weSB0ZXh0PXtsaW5rTGlzdH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCAiLy8vIDxyZWZlcmVuY2Ugbm8tZGVmYXVsdC1saWI9XCJ0cnVlXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiIC8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuLyoqIEBqc3ggaCAqL1xuXG5pbXBvcnQgeyBGdW5jdGlvbkNvbXBvbmVudCwgaCB9IGZyb20gXCIuLi8uLi9kZXBzL3ByZWFjdC50c3hcIjtcbmltcG9ydCB7IFRhc2sgfSBmcm9tIFwiLi4vdXNlVGFza0NyYXdsZXIudHNcIjtcbmltcG9ydCB7IGdldERhdGUgfSBmcm9tIFwiLi4vLi4vZGVwcy9kYXRlLWZucy50c1wiO1xuaW1wb3J0IHsgVGltZUxpbmUgfSBmcm9tIFwiLi9UaW1lTGluZS50c3hcIjtcbmltcG9ydCB7IHplcm8gfSBmcm9tIFwiLi4vLi4vemVyby50c1wiO1xuaW1wb3J0IHsgdG9LZXkgfSBmcm9tIFwiLi4va2V5LnRzXCI7XG5cbi8qKiDnibnlrprjga7ml6Xku5jjga7jgr/jgrnjgq/jgpLkuIDopqfjgZnjgotDb21wb25lbnRcbiAqXG4gKiBAcGFyYW0gZGF0ZSDooajnpLrjgZnjgovml6Xku5hcbiAqIEBwYXJhbSB0YXNrcyDjgZ3jga7ml6Xjga7jgr/jgrnjgq9cbiAqIEBwYXJhbSBwcm9qZWN0IOOBneOBruaXpeOBruOCv+OCueOCr+OBjOWxnuOBmeOCi3Byb2plY3RcbiAqL1xuZXhwb3J0IGNvbnN0IFRpbWVHcmlkOiBGdW5jdGlvbkNvbXBvbmVudDxcbiAgeyBkYXRlTGlzdDogRGF0ZVtdOyB0YXNrczogVGFza1tdOyBwcm9qZWN0OiBzdHJpbmc7IGhhc0NvbHVtbj86IGJvb2xlYW4gfVxuPiA9IChcbiAgeyBkYXRlTGlzdCwgdGFza3MsIHByb2plY3QsIGhhc0NvbHVtbiB9LFxuKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwidGltZWxpbmUtd3JhcFwiIHJvbGU9XCJncmlkXCI+XG4gICAgeyhoYXNDb2x1bW4gPz8gdHJ1ZSkgJiYgKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2x1bW4taGVhZGVyXCIgcm9sZT1cInJvd1wiPlxuICAgICAgICB7ZGF0ZUxpc3QubWFwKChkYXRlKSA9PiAoXG4gICAgICAgICAgPGRpdiBrZXk9e3RvS2V5KGRhdGUpfSBjbGFzc05hbWU9XCJjZWxsXCIgcm9sZT1cImNvbHVtbmhlYWRlclwiPlxuICAgICAgICAgICAgPGgyPntnZXREYXRlKGRhdGUpfTwvaDI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkpfVxuICAgICAgPC9kaXY+XG4gICAgKX1cblxuICAgIDxkaXYgY2xhc3NOYW1lPVwid2Vlay1jb250YWluZXJcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIndlZWtcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyc1wiPlxuICAgICAgICAgIHtbLi4uQXJyYXkoMjQpLmtleXMoKV0ubWFwKChpKSA9PiAoXG4gICAgICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPVwiYm9yZGVyXCIgZGF0YS10aW1lPXtgJHt6ZXJvKGkpfTowMGB9IC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7ZGF0ZUxpc3QubWFwKFxuICAgICAgICAgIChkYXRlKSA9PiAoXG4gICAgICAgICAgICA8VGltZUxpbmVcbiAgICAgICAgICAgICAga2V5PXt0b0tleShkYXRlKX1cbiAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgZGF0ZT17ZGF0ZX1cbiAgICAgICAgICAgICAgdGFza3M9e3Rhc2tzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApLFxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuKTtcbiIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tIFwiLi4vLi4vZGVwcy9wcmVhY3QudHN4XCI7XG5cbmV4cG9ydCBjb25zdCB1c2VOYXZpZ2F0aW9uID0gPFBhZ2VObywgVCA9IFBhZ2VObz4oXG4gIGRlZmF1bHRQYWdlTm86IFBhZ2VObyxcbiAgbmV4dEZuOiAocGFnZU5vOiBQYWdlTm8pID0+IFBhZ2VObyxcbiAgcHJldkZuOiAocGFnZU5vOiBQYWdlTm8pID0+IFBhZ2VObyxcbikgPT4ge1xuICAvKiog54++5Zyo6KGo56S644GZ44KL6YCx55Wq5Y+344KS5qC857SN44GZ44KLICovXG4gIGNvbnN0IFtwYWdlTm8sIHNldFBhZ2VOb10gPSB1c2VTdGF0ZTxQYWdlTm8+KGRlZmF1bHRQYWdlTm8pO1xuXG4gIGNvbnN0IG5leHQgPSB1c2VDYWxsYmFjaygoKSA9PiBzZXRQYWdlTm8obmV4dEZuKSwgW25leHRGbl0pO1xuICBjb25zdCBwcmV2ID0gdXNlQ2FsbGJhY2soKCkgPT4gc2V0UGFnZU5vKHByZXZGbiksIFtuZXh0Rm5dKTtcblxuICBjb25zdCBqdW1wID0gdXNlQ2FsbGJhY2soKHBhZ2VObzogUGFnZU5vKSA9PiBzZXRQYWdlTm8ocGFnZU5vKSwgW10pO1xuICByZXR1cm4geyBwYWdlTm8sIG5leHQsIHByZXYsIGp1bXAgfTtcbn07XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwiLi4vZGVwcy9wcmVhY3QudHN4XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlT3BlblJlc3VsdCB7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgb3BlbjogVm9pZEZ1bmN0aW9uO1xuICBjbG9zZTogVm9pZEZ1bmN0aW9uO1xuICB0b2dnbGU6IFZvaWRGdW5jdGlvbjtcbiAgb25PcGVuOiAobGlzdGVuZXI6ICgpID0+IHZvaWQpID0+ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCB1c2VPcGVuID0gKGluaXRpYWxTdGF0ZTogYm9vbGVhbik6IFVzZU9wZW5SZXN1bHQgPT4ge1xuICBjb25zdCBsaXN0ZW5lcnMgPSB1c2VSZWY8U2V0PCgpID0+IHZvaWQ+PihuZXcgU2V0KCkpO1xuICBjb25zdCBbaXNPcGVuLCBzZXRPcGVuZF0gPSB1c2VTdGF0ZShpbml0aWFsU3RhdGUpO1xuXG4gIGNvbnN0IGVtaXRDaGFuZ2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMuY3VycmVudCkge1xuICAgICAgbGlzdGVuZXIoKTtcbiAgICB9XG4gIH0sIFtdKTtcbiAgY29uc3Qgb3BlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRPcGVuZCh0cnVlKTtcbiAgICBlbWl0Q2hhbmdlKCk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBjbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHNldE9wZW5kKGZhbHNlKSwgW10pO1xuICBjb25zdCB0b2dnbGUgPSB1c2VDYWxsYmFjaygoKSA9PlxuICAgIHNldE9wZW5kKChzdGF0ZSkgPT4ge1xuICAgICAgaWYgKCFzdGF0ZSkgZW1pdENoYW5nZSgpO1xuICAgICAgcmV0dXJuICFzdGF0ZTtcbiAgICB9KSwgW10pO1xuXG4gIGNvbnN0IG9uT3BlbiA9IHVzZUNhbGxiYWNrKChsaXN0ZW5lcjogKCkgPT4gdm9pZCkgPT4ge1xuICAgIGxpc3RlbmVycy5jdXJyZW50LmFkZChsaXN0ZW5lcik7XG4gICAgcmV0dXJuICgpID0+IGxpc3RlbmVycy5jdXJyZW50LmRlbGV0ZShsaXN0ZW5lcik7XG4gIH0sIFtdKTtcblxuICByZXR1cm4geyBpc09wZW4sIG9wZW4sIGNsb3NlLCB0b2dnbGUsIG9uT3BlbiB9O1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG4vKiogQGpzeCBoICovXG4vKiogQGpzeEZyYWcgRnJhZ21lbnQgKi9cblxuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIEZ1bmN0aW9uQ29tcG9uZW50LFxuICBoLFxuICBSZWZDYWxsYmFjayxcbiAgcmVuZGVyLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlTWVtbyxcbn0gZnJvbSBcIi4uLy4uL2RlcHMvcHJlYWN0LnRzeFwiO1xuaW1wb3J0IHsgdXNlVGFza0NyYXdsZXIgfSBmcm9tIFwiLi4vdXNlVGFza0NyYXdsZXIudHNcIjtcbmltcG9ydCB7IHVzZURpYWxvZyB9IGZyb20gXCIuLi91c2VEaWFsb2cudHN4XCI7XG5pbXBvcnQgeyBDU1MgfSBmcm9tIFwiLi4vdmlld2VyLm1pbi5jc3MudHNcIjtcbmltcG9ydCB7IGFkZERheXMsIGFkZFdlZWtzLCBzdWJEYXlzLCBzdWJXZWVrcyB9IGZyb20gXCIuLi8uLi9kZXBzL2RhdGUtZm5zLnRzXCI7XG5pbXBvcnQgeyB0b0tleSwgdG9TdGFydE9mV2VlaywgdG9XZWVrS2V5LCBXZWVrS2V5IH0gZnJvbSBcIi4uL2tleS50c1wiO1xuaW1wb3J0IHsgTG9hZEJ1dHRvbiB9IGZyb20gXCIuLi9Mb2FkQnV0dG9uLnRzeFwiO1xuaW1wb3J0IHsgdXNlVXNlclNjcmlwdEV2ZW50IH0gZnJvbSBcIi4uL3VzZVVzZXJTY3JpcHRFdmVudC50c1wiO1xuaW1wb3J0IHsgVGltZUdyaWQgfSBmcm9tIFwiLi9UaW1lR3JpZC50c3hcIjtcbmltcG9ydCB7IHVzZU5hdmlnYXRpb24gfSBmcm9tIFwiLi4vc2NoZWR1bGVyL3VzZU5hdmlnYXRpb24udHNcIjtcbmltcG9ydCB7IHVzZU9wZW4gfSBmcm9tIFwiLi4vdXNlT3Blbi50c1wiO1xuaW1wb3J0IHsgdXNlRXhwb3J0cyB9IGZyb20gXCIuLi91c2VFeHBvcnRzLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRDb250cm9sbGVyIHtcbiAgLyoqIGNhbGVuZGFy44KS6ZaL44GPICovXG4gIG9wZW46ICgpID0+IHZvaWQ7XG4gIC8qKiBjYWxlbmRhcuOCkumWieOBmOOCiyAqL1xuICBjbG9zZTogKCkgPT4gdm9pZDtcblxuICBpc09wZW46IGJvb2xlYW47XG59XG5leHBvcnQgdHlwZSBJbnZhbGlkQ29udHJvbGxlciA9IFJlY29yZDxrZXlvZiBWYWxpZENvbnRyb2xsZXIsIHVuZGVmaW5lZD47XG4vKiogY2FsZW5lZGFy44GuY29udHJvbGxlclxuICpcbiAqIG1ldGhvZHPjga97QGxpbmsgVmFsaWRDb250cm9sbGVyfeOCkuWPgueFp1xuICpcbiAqIGNhbGVuZGFy44GMdW1vdW5044GV44KM44Gf5b6M44Gve0BsaW5rIEludmFsaWRDb250cm9sbGVyfSjlhajjgabjga5tZXRob2Rz44GMYHVuZGVmaW5lZGAp44Gr44Gq44KLXG4gKi9cbmV4cG9ydCB0eXBlIENvbnRyb2xsZXIgPSBWYWxpZENvbnRyb2xsZXIgfCBJbnZhbGlkQ29udHJvbGxlcjtcblxuLyoqIOmAseWNmOS9jeOBruOCq+ODrOODs+ODgOODvOOCkui1t+WLleOBmeOCi1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0cyDjgr/jgrnjgq/jga7lj5blvpflhYhwcm9qZWN044Gu44Oq44K544OIXG4gKiBAcmV0dXJuIHZpZXdlcuOBrmNvbnRyb2xsZXJcbiAqL1xuZXhwb3J0IGNvbnN0IHNldHVwID0gKFxuICBwcm9qZWN0czogc3RyaW5nW10sXG4pOiBQcm9taXNlPENvbnRyb2xsZXI+ID0+IHtcbiAgY29uc3QgYXBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgYXBwLmRhdGFzZXQudXNlcnNjcmlwdE5hbWUgPSBcInRha2tlci1zY2hlZHVsZXIvd2Vla2x5LXNjaGVkdWxlclwiO1xuICBjb25zdCBzaGFkb3dSb290ID0gYXBwLmF0dGFjaFNoYWRvdyh7IG1vZGU6IFwib3BlblwiIH0pO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZChhcHApO1xuICByZXR1cm4gbmV3IFByb21pc2UoXG4gICAgKHJlc29sdmUpID0+XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxBcHBcbiAgICAgICAgICBnZXRDb250cm9sbGVyPXtyZXNvbHZlfVxuICAgICAgICAgIHByb2plY3RzPXtwcm9qZWN0c31cbiAgICAgICAgICBtYWluUHJvamVjdD17cHJvamVjdHNbMF19XG4gICAgICAgIC8+LFxuICAgICAgICBzaGFkb3dSb290LFxuICAgICAgKSxcbiAgKTtcbn07XG5cbi8qKiDlvZPml6Xjga50aW1lbGluZeOCkuW3pumaheOBq+ihqOekuuOBmeOCi1xuICpcbiAqIEBwYXJhbSBwcm9qZWN0cyDjgr/jgrnjgq/jga7lj5blvpflhYhwcm9qZWN044Gu44Oq44K544OIXG4gKiBAcmV0dXJuIHZpZXdlcuOBrmNvbnRyb2xsZXJcbiAqL1xuZXhwb3J0IGNvbnN0IHNldHVwV2VkZ2V0ID0gKFxuICBwcm9qZWN0czogc3RyaW5nW10sXG4gIG9wZW46IGJvb2xlYW4sXG4pOiBQcm9taXNlPENvbnRyb2xsZXI+ID0+IHtcbiAgY29uc3QgYXBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgYXBwLmRhdGFzZXQudXNlcnNjcmlwdE5hbWUgPSBcInRha2tlci1zY2hlZHVsZXIvdGltZWxpbmUtd2VkZ2V0XCI7XG4gIGNvbnN0IHNoYWRvd1Jvb3QgPSBhcHAuYXR0YWNoU2hhZG93KHsgbW9kZTogXCJvcGVuXCIgfSk7XG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kKGFwcCk7XG4gIHJldHVybiBuZXcgUHJvbWlzZShcbiAgICAocmVzb2x2ZSkgPT5cbiAgICAgIHJlbmRlcihcbiAgICAgICAgPFdlZGdldFxuICAgICAgICAgIGdldENvbnRyb2xsZXI9e3Jlc29sdmV9XG4gICAgICAgICAgcHJvamVjdHM9e3Byb2plY3RzfVxuICAgICAgICAgIG1haW5Qcm9qZWN0PXtwcm9qZWN0c1swXX1cbiAgICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICAvPixcbiAgICAgICAgc2hhZG93Um9vdCxcbiAgICAgICksXG4gICk7XG59O1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICBnZXRDb250cm9sbGVyOiAoY29udHJvbGxlcjogQ29udHJvbGxlcikgPT4gdm9pZDtcbiAgcHJvamVjdHM6IHN0cmluZ1tdO1xuXG4gIC8qKiDml6XliIroqJjpjLJzaGVldOOBjOe9ruOBhOOBpuOBguOCi3Byb2plY3QgKi9cbiAgbWFpblByb2plY3Q6IHN0cmluZztcbn1cblxuLyoqIHtAbGluayBBcHB944KSMeWbnuS7peS4iumWi+OBhOOBn+OBi+OBqeOBhuOBi+OCkuS/neaMgeOBmeOCi+ODleODqeOCsCAqL1xubGV0IHNjcm9sbGVkVG9JbmRpY2F0b3JJbkFwcCA9IGZhbHNlO1xuY29uc3QgQXBwOiBGdW5jdGlvbkNvbXBvbmVudDxQcm9wcz4gPSAoXG4gIHsgZ2V0Q29udHJvbGxlciwgcHJvamVjdHMsIG1haW5Qcm9qZWN0IH0sXG4pID0+IHtcbiAgY29uc3QgeyB0YXNrcywgbG9hZCwgbG9hZGluZyB9ID0gdXNlVGFza0NyYXdsZXIocHJvamVjdHMpO1xuICBjb25zdCB7IHBhZ2VObywgbmV4dCwgcHJldiwganVtcCB9ID0gdXNlTmF2aWdhdGlvbihcbiAgICB0b1dlZWtLZXkobmV3IERhdGUoKSksXG4gICAgbmV4dFdlZWtLZXksXG4gICAgcHJldldlZWtLZXksXG4gICk7XG5cbiAgLyoqIOihqOekuuWvvuixoeOBruaXpeS7mFxuICAgKlxuICAgKiDmjIflrprjgZfjgZ/pgLHjga7ml6Xmm5zml6XjgYvjgonlnJ/mm5zml6Xjgb7jgafjga7ml6Xku5jjgpLmoLzntI3jgZnjgotcbiAgICovXG4gIGNvbnN0IGRhdGVMaXN0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3Qgc3RhcnQgPSB0b1N0YXJ0T2ZXZWVrKHBhZ2VObyk7XG4gICAgcmV0dXJuIFswLCAxLCAyLCAzLCA0LCA1LCA2XS5tYXAoKGkpID0+IGFkZERheXMoc3RhcnQsIGkpKTtcbiAgfSwgW3BhZ2VOb10pO1xuXG4gIC8vIFVJ44Gu6ZaL6ZaJXG4gIGNvbnN0IHsgb3BlbiwgY2xvc2UsIERpYWxvZywgaXNPcGVuIH0gPSB1c2VEaWFsb2coKTtcbiAgc2Nyb2xsZWRUb0luZGljYXRvckluQXBwIHx8PSBpc09wZW47XG4gIHVzZUV4cG9ydHMoZ2V0Q29udHJvbGxlciwgeyBvcGVuLCBjbG9zZSwgaXNPcGVuIH0pO1xuXG4gIC8vIOWQjOOBmOOCv+ODluOBp+WIpeOBruODmuODvOOCuOOBq+mBt+enu+OBl+OBn+OBqOOBjeOBr21vZGFs44KS6ZaJ44GY44KLXG4gIHVzZVVzZXJTY3JpcHRFdmVudChcInBhZ2U6Y2hhbmdlZFwiLCBjbG9zZSk7XG5cbiAgY29uc3QgZ29Ub2RheSA9IHVzZUNhbGxiYWNrKCgpID0+IGp1bXAodG9XZWVrS2V5KG5ldyBEYXRlKCkpKSwgW2p1bXBdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8c3R5bGU+e0NTU308L3N0eWxlPlxuICAgICAgPERpYWxvZz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250cm9sbGVyXCI+XG4gICAgICAgICAgPHNwYW4+e3BhZ2VOb308L3NwYW4+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJuYXZpIGxlZnRcIiBvbkNsaWNrPXtwcmV2fT57XCJcXHVlMDJjXCJ9PC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJuYXZpIHJpZ2h0XCIgb25DbGljaz17bmV4dH0+e1wiXFx1ZTAyZFwifTwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwidG9kYXlcIiBvbkNsaWNrPXtnb1RvZGF5fT57XCJcXHVmNzgzXCJ9PC9idXR0b24+XG4gICAgICAgICAgPExvYWRCdXR0b24gbG9hZGluZz17bG9hZGluZ30gb25DbGljaz17bG9hZH0gLz5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImNsb3NlXCIgb25DbGljaz17Y2xvc2V9PntcIlxcdWYwMGRcIn08L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAge3Njcm9sbGVkVG9JbmRpY2F0b3JJbkFwcCAmJiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgcmVmPXtzY3JvbGxUb0luZGljYXRvcn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInJlc3VsdCBzY2hlZHVsZXJcIlxuICAgICAgICAgICAgZGF0YS1wYWdlLW5vPXtwYWdlTm99XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRpbWVHcmlkIGRhdGVMaXN0PXtkYXRlTGlzdH0gdGFza3M9e3Rhc2tzfSBwcm9qZWN0PXttYWluUHJvamVjdH0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvRGlhbG9nPlxuICAgIDwvPlxuICApO1xufTtcblxuLyoqIHtAbGluayBXZWRnZXR944KSMeWbnuS7peS4iumWi+OBhOOBn+OBi+OBqeOBhuOBi+OCkuS/neaMgeOBmeOCi+ODleODqeOCsCAqL1xubGV0IHNjcm9sbGVkVG9JbmRpY2F0b3JJbldlZGdldCA9IGZhbHNlO1xuY29uc3QgV2VkZ2V0OiBGdW5jdGlvbkNvbXBvbmVudDxQcm9wcyAmIHsgb3BlbjogYm9vbGVhbiB9PiA9IChcbiAgeyBwcm9qZWN0cywgbWFpblByb2plY3QsIGdldENvbnRyb2xsZXIsIG9wZW46IG9wZW5fIH0sXG4pID0+IHtcbiAgY29uc3QgeyB0YXNrcywgbG9hZCwgbG9hZGluZyB9ID0gdXNlVGFza0NyYXdsZXIocHJvamVjdHMpO1xuXG4gIGNvbnN0IHsgcGFnZU5vLCBuZXh0LCBwcmV2LCBqdW1wIH0gPSB1c2VOYXZpZ2F0aW9uKFxuICAgIG5ldyBEYXRlKCksXG4gICAgbmV4dERhdGUsXG4gICAgcHJldkRhdGUsXG4gICk7XG4gIGNvbnN0IGRhdGVzID0gdXNlTWVtbygoKSA9PiBbcGFnZU5vXSwgW3BhZ2VOb10pO1xuXG4gIGNvbnN0IGdvVG9kYXkgPSB1c2VDYWxsYmFjaygoKSA9PiBqdW1wKG5ldyBEYXRlKCkpLCBbanVtcF0pO1xuXG4gIC8vIFVJ44Gu6ZaL6ZaJXG4gIGNvbnN0IHsgaXNPcGVuLCBvcGVuLCBjbG9zZSB9ID0gdXNlT3BlbihvcGVuXyk7XG4gIHNjcm9sbGVkVG9JbmRpY2F0b3JJbldlZGdldCB8fD0gaXNPcGVuO1xuXG4gIHVzZUV4cG9ydHMoZ2V0Q29udHJvbGxlciwgeyBvcGVuLCBjbG9zZSwgaXNPcGVuIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxzdHlsZT57Q1NTfTwvc3R5bGU+XG4gICAgICB7Lyog5LiA5bqmcmVuZGVyaW5n44GV44KM44Gf5b6M44Gv44CBdW5tb3VudOOBleOCjOOCi+OBvuOBp0RPTeOCkuihqOekuuOBl+e2muOBkeOCiyAqL31cbiAgICAgIHtzY3JvbGxlZFRvSW5kaWNhdG9ySW5XZWRnZXQgJiYgKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtgd2VkZ2V0JHtpc09wZW4gPyBcIiBvcGVuXCIgOiBcIlwifWB9XG4gICAgICAgICAgcmVmPXtzY3JvbGxUb0luZGljYXRvcn1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udHJvbGxlclwiPlxuICAgICAgICAgICAgPHNwYW4+e3RvS2V5KHBhZ2VObyl9PC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJuYXZpIGxlZnRcIiBvbkNsaWNrPXtwcmV2fT57XCJcXHVlMDJjXCJ9PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cIm5hdmkgcmlnaHRcIiBvbkNsaWNrPXtuZXh0fT5cbiAgICAgICAgICAgICAge1wiXFx1ZTAyZFwifVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInRvZGF5XCIgb25DbGljaz17Z29Ub2RheX0+e1wiXFx1Zjc4M1wifTwvYnV0dG9uPlxuICAgICAgICAgICAgPExvYWRCdXR0b24gbG9hZGluZz17bG9hZGluZ30gb25DbGljaz17bG9hZH0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8VGltZUdyaWRcbiAgICAgICAgICAgIGRhdGVMaXN0PXtkYXRlc31cbiAgICAgICAgICAgIHRhc2tzPXt0YXNrc31cbiAgICAgICAgICAgIHByb2plY3Q9e21haW5Qcm9qZWN0fVxuICAgICAgICAgICAgaGFzQ29sdW1uPXtmYWxzZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5jb25zdCBuZXh0V2Vla0tleSA9IChwYWdlTm86IFdlZWtLZXkpID0+XG4gIHRvV2Vla0tleShhZGRXZWVrcyh0b1N0YXJ0T2ZXZWVrKHBhZ2VObyksIDEpKTtcbmNvbnN0IHByZXZXZWVrS2V5ID0gKHBhZ2VObzogV2Vla0tleSkgPT5cbiAgdG9XZWVrS2V5KHN1YldlZWtzKHRvU3RhcnRPZldlZWsocGFnZU5vKSwgMSkpO1xuXG5jb25zdCBuZXh0RGF0ZSA9IChkYXRlOiBEYXRlKSA9PiBhZGREYXlzKGRhdGUsIDEpO1xuY29uc3QgcHJldkRhdGUgPSAoZGF0ZTogRGF0ZSkgPT4gc3ViRGF5cyhkYXRlLCAxKTtcblxuLyoqIOWIneWbnnJlbmRlcmluZ+OBruOBv+OAgWAuaW5kaWNhdG9yYOOCkuS4reWkruOBq+OCueOCr+ODreODvOODq+OBmeOCiyAqL1xuY29uc3Qgc2Nyb2xsVG9JbmRpY2F0b3I6IFJlZkNhbGxiYWNrPEhUTUxEaXZFbGVtZW50PiA9IChhbmNlc3RlcikgPT4ge1xuICBjb25zdCBlbCA9IGFuY2VzdGVyPy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPy4oXCJpbmRpY2F0b3JcIik/LlswXTtcbiAgaWYgKCFlbCkgcmV0dXJuO1xuICBjb25zdCBzY3JvbGxZID0gZ2xvYmFsVGhpcy5zY3JvbGxZO1xuICBlbC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiBcImNlbnRlclwiIH0pO1xuICBnbG9iYWxUaGlzLnNjcm9sbCgwLCBzY3JvbGxZKTtcbn07XG4iLCAiaW1wb3J0IHsgc3luYyB9IGZyb20gXCIuLi9zY3JhcGJveC13YXRjaGxpc3Qtc3luYy9zY3JpcHQudHNcIjtcblxuc3luYyh7IHByb2plY3Q6IFwidGFra2VyLWRpc3RcIiB9KTtcblxuaW1wb3J0IFwiLi4vT3Blbl9HeWF6b19wYWdlX21lbnUvc2NyaXB0LmpzXCI7XG5cbmltcG9ydCB7IHNldHVwIGFzIHNldHVwU2VhcmNoIH0gZnJvbSBcIi4uL3Rha2tlcjk5JTJGc2NyYXBib3gtaW5jcmVtZW50YWwtZnVsbHRleHQtc2VhcmNoL21vZC50c3hcIjtcblxuc2V0dXBTZWFyY2goKS50aGVuKChvcHMpID0+IHtcbiAgc2NyYXBib3guUGFnZU1lbnUuYWRkSXRlbSh7XG4gICAgdGl0bGU6IFwiRnVsbHRleHQgU2VhcmNoXCIsXG4gICAgb25DbGljazogKCkgPT4ge1xuICAgICAgb3BzLnRvZ2dsZSgpO1xuICAgIH0sXG4gIH0pO1xufSk7XG5cbmltcG9ydCB7IHNjcmFwQmluZGluZ3MgfSBmcm9tIFwiLi9iaW5kaW5ncy50c1wiO1xuZXhwb3J0IHsgc2NyYXBCaW5kaW5ncyB9O1xuaW1wb3J0IFwiLi9zY3JhcEJ1YmJsZS50c1wiO1xuaW1wb3J0IHtcbiAgc2V0dXAgYXMgc2V0dXBKdXB5dGVyXG59IGZyb20gXCIuLi9AdGFra2VyJTJGU2NyYXBKdXB5dGVyL21vZC50c1wiO1xuaW1wb3J0IHsgZmluZExhdGVzdENhY2hlLCBzYXZlQXBpQ2FjaGUgfSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvZG9tLnRzXCI7XG5cbi8vIHYwLjIxLjVcbmNvbnN0IFdBU01fVVJMID0gXCJodHRwczovL3NjcmFwYm94LmlvL2ZpbGVzLzY2NmFjOTc3MjY0ZjdkMDAxY2U5ZDEyNS53YXNtXCI7XG5jb25zdCBXT1JLRVJfVVJMID0gXCIvYXBpL2NvZGUvdGFra2VyLWRpc3QvZm9yLWFueS1wcm9qZWN0LW1pbi9lc2J1aWxkLXdvcmtlci5qc1wiO1xuXG4oYXN5bmMgKCkgPT4ge1xuICBjb25zdCByZXEgPSBuZXcgUmVxdWVzdChXQVNNX1VSTCk7XG4gIGxldCByZXMgPSBhd2FpdCBmaW5kTGF0ZXN0Q2FjaGUocmVxKTtcbiAgaWYgKCFyZXMpIHtcbiAgICByZXMgPSBhd2FpdCBmZXRjaChyZXEpO1xuICAgIGF3YWl0IHNhdmVBcGlDYWNoZShyZXEsIHJlcyk7XG4gIH1cbiAgYXdhaXQgc2V0dXBKdXB5dGVyKFxuICAgIGF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGVTdHJlYW1pbmcocmVzKSxcbiAgICBXT1JLRVJfVVJMLFxuICApO1xufSkoKTtcblxuaW1wb3J0IHsgc2V0dXAgYXMgc2V0dXBTZWxlY3RTdWdnZXN0aW9uIH0gZnJvbSBcIi4uL+mBuOaKnuevhOWbsuOBq+S8vOOBpuOBhOOCi+ODquODs+OCr+OCkuWFpeWKm+ijnOWujOOBmeOCi1VzZXJTY3JpcHQvbW9kLnRzeFwiO1xuaW1wb3J0IHsgYWRkVGV4dElucHV0RXZlbnRMaXN0ZW5lciB9IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcbmltcG9ydCB7IFNjcmFwYm94IH0gZnJvbSBcIi4uL3NjcmFwYm94LWpwJTJGdHlwZXMvdXNlcnNjcmlwdC50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbihhc3luYyAoKSA9PiB7XG5cbiBjb25zdCBwcm9qZWN0cyA9IFtcbiAgc2NyYXBib3guUHJvamVjdC5uYW1lLFxuICBcInRha2tlclwiLCBcInRha2tlci1tZW1leFwiLCBcInRha2tlci1ib29rc1wiLCBcInRha2tlci1wcml2YXRlXCIsXG4gIFwidmlsbGFnZXB1bXBcIiwgXCJodWJcIiwgXCJhcnBsYVwiLFxuICBcInVubmFtZWRjYW1wXCIsIFwidW5uYW1lZC1wcm9qZWN0XCIsXG4gIFwibmlzaGlvXCIsIFwiZW5jaGlcIiwgXCJyYXNoaXRhbWVtb1wiLCBcIm1vdG9zb1wiLFxuICBcInNob2thaVwiLCBcIm1hc3VpXCIsIFwicmFrdXNhaVwiLCBcInl1aXNla2lcIiwgXCJha2lyb29tXCIsXG4gIFwiYzRqXCIsIFwibWl5YW1vbnpcIiwgXCJtcnNla3V0LXBcIiwgXCJtYXN1aWxhYlwiLFxuICBcImtpZGFhYW0tOTIwMjIyODRcIiwgXCJud3RnY2tcIiwgXCJqdW5lYm9rdVwiLFxuICBcIm1hcnNobWFsbG93LXJtXCIsIFwic3VzaGl0ZWN0dXJlXCIsIFwic25vMndtYW5cIiwgXCJpbnRlbHRhbmtcIixcbiAgXCJpc3NhYy0zNzc2NTY3OVwiLCBcImJsdTNtb1wiLCBcInlvc2lkZXJcIiwgXCJNaWppbmtvXCIsIFwiTWlqaW5rby1vdGhlclwiLFxuICBcInNjcmFwYm94LWRyaW5rdXBcIiwgXCJub3RhLXRlY2hjb25mXCIsXG4gIFwiY3VzdG9taXplXCIsIFwic2NyYXBib3hsYWJcIiwgXCJzY3Jhc29ib3hcIiwgXCJwcm9ncmFtbWluZy1ub3Rlc1wiLFxuICBcInR1cy1hbHBpbmVcIiwgXCJ0dXMtYWxwaW5lLXByaXZhdGVcIixcbiAgXCJndWlsYW5kXCIsXG5dO1xuXG5jb25zdCBvcHMgPSBhd2FpdCBzZXR1cFNlbGVjdFN1Z2dlc3Rpb24oe1xuICBwcm9qZWN0cyxcbiAgbWFyazoge1xuICAgIC4uLk9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIFtcbiAgICAgICAgW1widGFra2VyXCIsIFwidGFra2VyXCJdLFxuICAgICAgICBbXCJ0YWtrZXItbWVtZXhcIiwgXCJ0YWtrZXJcIl0sXG4gICAgICAgIFtcInRha2tlci1ib29rc1wiLCBcInRha2tlci1ib29rc1wiXSxcbiAgICAgICAgW1widGFra2VyLXByaXZhdGVcIiwgXCJ0YWtrZXItcHJpdmF0ZVwiXSxcbiAgICAgICAgW1wibmlzaGlvXCIsIFwibmlzaGlvXCJdLFxuICAgICAgICBbXCJyYXNoaXRhbWVtb1wiLCBcInJhc2hpdGFcIl0sXG4gICAgICAgIFtcImVuY2hpXCIsIFwi6ZuR6KuHXzIwMjItMDQtMTJ+XCJdLFxuICAgICAgICBbXCJyYWt1c2FpXCIsIFwicmFrdXNhaVwiXSxcbiAgICAgICAgW1wibWFzdWlcIiwgXCLmpoLopoFcIl0sXG4gICAgICAgIFtcInNob2thaVwiLCBcInNob2thaVwiXSxcbiAgICAgICAgW1wieXVpc2VraVwiLCBcInl1aXNla2lcIl0sXG4gICAgICAgIFtcImFraXJvb21cIiwgXCLjga/jgZjjgoHjgatcIl0sXG4gICAgICAgIFtcImludGVsdGFua1wiLCBcInNhd2FjaGluXCJdLFxuICAgICAgICBbXCJtb3Rvc29cIiwgXCLjgoLjgajjgZ3jga7jgoLjgahcIl0sXG4gICAgICAgIFtcInZpbGxhZ2VwdW1wXCIsIFwi5LqV5oi456uvXCJdLFxuICAgICAgICBbXCJodWJcIiwgXCJzY3JhcGJveC5pbyUyRmh1Yl/jgavjgaTjgYTjgaZcIl0sXG4gICAgICAgIFtcIm1hc3VpbGFiXCIsIFwi5aKX5LqV56CU44Gr5YWl44Gj44Gf44KJ44G+44Ga44KE44KL44GT44GoXCJdLFxuICAgICAgICBbXCJtYXJzaG1hbGxvdy1ybVwiLCBcIuiqreabuOeMv+ODnuOCt+ODpeODnuODreWFqOizquWVj+WbnuetlFwiXSxcbiAgICAgICAgW1wibWl5YW1vbnpcIiwgXCJtaXlhbW9uelwiXSxcbiAgICAgICAgW1wibXJzZWt1dC1wXCIsIFwibXJzZWt1dFwiXSxcbiAgICAgICAgW1wia2lkYWFhbS05MjAyMjI4NFwiLCBcImtpZG9vb21cIl0sXG4gICAgICAgIFtcImM0alwiLCBcIkNvZGVfZm9yX0phcGFuXCJdLFxuICAgICAgICBbXCJzdXRvM1wiLCBcInN1dG8zXCJdLFxuICAgICAgICBbXCJibHUzbW9cIiwgXCJibHUzbW9cIl0sXG4gICAgICAgIFtcIm53dGdja1wiLCBcIm53dGdja1wiXSxcbiAgICAgICAgW1wianVuZWJva3VcIiwgXCJqdW5lYm9rdVwiXSxcbiAgICAgICAgW1wiamlnc2F3XCIsIFwiamdzXCJdLFxuICAgICAgICBbXCJzbm8yd21hblwiLCBcIlNuTzJXTWFOXCJdLFxuICAgICAgICBbXCJzdXNoaXRlY3R1cmVcIiwgXCJoYXNocm9ja1wiXSxcbiAgICAgICAgW1widW5uYW1lZGNhbXBcIiwgXCLnn6XjgpLllrbjgoBcIl0sXG4gICAgICAgIFtcInVubmFtZWQtcHJvamVjdFwiLCBcInVubmFtZWQtcHJvamVjdFwiXSxcbiAgICAgICAgW1wiaXNzYWMtMzc3NjU2NzlcIiwgXCJjRlEyZjdMUnVMWVBcIl0sXG4gICAgICAgIFtcImJsdTNtb1wiLCBcImJsdTNtb1wiXSxcbiAgICAgICAgW1wieW9zaWRlclwiLCBcInlvc2lkZXJcIl0sXG4gICAgICAgIFtcIk1pamlua29cIiwgXCJNaWppbmtvX1NEXCJdLFxuICAgICAgICBbXCJNaWppbmtvLW90aGVyXCIsIFwiTWlqaW5rb19TRFwiXSxcbiAgICAgICAgW1wiY3VzdG9taXplXCIsIFwi44G/44KT44Gq44Gu44Kr44K544K/44Oe44Kk44K6XCJdLFxuICAgICAgICBbXCJzY3JhcGJveGxhYlwiLCBcIuWFpeS8muaJi+e2muOBjVwiXSxcbiAgICAgICAgW1wic2NyYXNvYm94XCIsIFwiU2NyYXBib3jjgajjgYLjgZ3jgbZcIl0sXG4gICAgICAgIFtcInByb2dyYW1taW5nLW5vdGVzXCIsIFwi5Y+C5Yqg44GZ44KLXCJdLFxuICAgICAgICBbXCJndWlsYW5kXCIsIFwi5qaC6KaB44Go5Y+C5Yqg5pa55rOVXCJdLFxuICAgICAgXS5tYXAoKFtwLCB0XSkgPT4gW3AsIGBodHRwczovL3NjcmFwYm94LmlvL2FwaS9wYWdlcy8ke3B9LyR7dH0vaWNvbmBdKVxuICAgICksXG4gICAgXCJORExTSC1TQlwiOiBcIvCfk5pcIixcbiAgICBcInNjcmFwYm94LWRyaW5rdXBcIjogXCJodHRwczovL3NjcmFwYm94LmlvL2Fzc2V0cy9pbWcvcGFnZS1pY29uL3NjcmFwYm94X2JlYXZlci5wbmdcIixcbiAgICBcIm5vdGEtdGVjaGNvbmZcIjogXCJodHRwczovL2kuZ3lhem8uY29tLzcyN2Y0MmJiZDllMjUzNGQ5OWQ3MGU2ZWE5MDcwNWIzLmpwZ1wiLFxuICAgIFwicGx1cmFsaXR5LWphcGFuZXNlXCI6IFwi4r+7XCIsXG4gIH0sXG4gIGVuYWJsZVNlbGZQcm9qZWN0T25TdGFydDogdHJ1ZSxcbn0pO1xuXG5jb25zdCBwdnNwID0gKGU6IEV2ZW50KTogdm9pZCA9PiB7XG4gIGUucHJldmVudERlZmF1bHQoKTtcbiAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbn07XG5jb25zdCBoYXNQb3B1cCA9ICgpOiBib29sZWFuID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIubGluZSAucG9wdXAtbWVudVwiKSAhPT0gbnVsbDtcbnNjcmFwQmluZGluZ3MuYmluZCh7XG4gIFwiPFRhYj5cIjogICAoZSkgPT4geyBpZihoYXNQb3B1cCgpKSByZXR1cm47IGlmKCFvcHMuc2VsZWN0TmV4dD8uKHsgY3ljbGljOiB0cnVlIH0pKSByZXR1cm47IHB2c3AoZSk7IH0sXG4gIFwiPFMtVGFiPlwiOiAoZSkgPT4geyBpZihoYXNQb3B1cCgpKSByZXR1cm47IGlmKCFvcHMuc2VsZWN0UHJldj8uKHsgY3ljbGljOiB0cnVlIH0pKSByZXR1cm47IHB2c3AoZSk7IH0sXG4gIFwiPEVudGVyPlwiOiAoZSkgPT4geyBpZihoYXNQb3B1cCgpKSByZXR1cm47IGlmKCFvcHMuY29uZmlybT8uKCkpIHJldHVybjsgcHZzcChlKTsgfSxcbiAgXCI8RXNjPlwiOiAgIChlKSA9PiB7IGlmKGhhc1BvcHVwKCkpIHJldHVybjsgaWYoIW9wcy5jYW5jZWw/LigpKSByZXR1cm47IHB2c3AoZSk7IH0sXG59KTtcbn0pKCk7XG5cbmltcG9ydCB7IHNldHVwIGFzIHNldFVwUnVuLCBwcmV2aWV3U1ZHLCBwcmV2aWV3R0xTTCwgcHJldmlld1BsYW50VU1MLCBwcmV2aWV3VGlrWiB9IGZyb20gXCIuLi9TY3JhcFJ1bi9tb2QudHNcIjtcblxuc2V0VXBSdW4oeyBwcmV2aWV3ZXJzOiBbXG4gIHsgd2hlbjogLyg/Ol58XFwuKXN2ZyQvLCBwcmV2aWV3OiBwcmV2aWV3U1ZHIH0sXG4gIHsgd2hlbjogLyg/Ol58XFwuKWdsc2wkLywgcHJldmlldzogcHJldmlld0dMU0wgfSxcbiAgeyB3aGVuOiAvKD86XnxcXC4pKD86cGxhbnR1bWx8cHVtbHxwdSkkLywgcHJldmlldzogcHJldmlld1BsYW50VU1MIH0sXG4gIHsgd2hlbjogLyg/Ol58XFwuKXRpa3pcXCh0ZXhcXCkkLywgcHJldmlldzogcHJldmlld1Rpa1ooXG4gICAgXCIvYXBpL2NvZGUvdGFra2VyLWRpc3QvZm9yLWFueS1wcm9qZWN0LW1pbi90ZXgtd29ya2VyLmpzXCIsXG4gICAgXCJodHRwczovL3NjcmFwYm94LmlvL2ZpbGVzLzY1ZDE2NDVjMTljZDhlMDAyNDMzYzNkZlwiLFxuICApIH0sXG5dfSk7XG5cbmltcG9ydCB7IHNldHVwIGFzIHNldHVwU2xpZGVyIH0gZnJvbSBcImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9zY3JhcGJveC1oaXN0b3J5LXNsaWRlci8wLjIuMS9BcHAudHN4XCI7XG5cbihhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHsgdG9nZ2xlIH0gPSBhd2FpdCBzZXR1cFNsaWRlcihbXSk7XG4gIHNjcmFwYm94LlBhZ2VNZW51LmFkZEl0ZW0oe1xuICAgIHRpdGxlOiBcIuWxpeattOOCueODqeOCpOODgOODvFwiLFxuICAgIGltYWdlOiBcImh0dHBzOi8vMS5icC5ibG9nc3BvdC5jb20vLVVadGtTRVgwd2g0L1U1bDVfZE5jRXNJL0FBQUFBQUFBaFdzL1V6SkdWenlpWDhZL3M4MDAva2FpY2h1X2Rva2VpLnBuZ1wiLFxuICAgIG9uQ2xpY2s6IHRvZ2dsZSxcbiAgfSk7XG59KSgpO1xuXG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gXCIuLi9tb2JpbGXniYhzY3JhcGJveOOBruWIpOWumi9zY3JpcHQuanNcIjtcbiAgXG5pbXBvcnQgXCIuLi9wb3B1cC9zY3JpcHQudHNcIjtcbmltcG9ydCB7IG1haW4gfSBmcm9tIFwiLi4vdGFra2VyOTklMkZ0YWtrZXItc2NoZWR1bGVyL2F1dG8tcmV2aWV3LnRzXCI7XG5cbm1haW4oXG4gIFwidGFra2VyXCIsXG4gIFtcInRha2tlclwiLCBcIuaMr+OCiui/lOOCiih0YWtrZXItd29ya2Zsb3dAMC4wLjEp44GudGVtcGxhdGVcIiwgXCJ0eHRcIl0sXG4gIFtcInRha2tlclwiLCBcIjHpgLHplpPjga7mjK/jgorov5TjgooodGFra2VyLXdvcmtmbG93QDAuMC4xKeOBrnRlbXBsYXRlXCIsIFwidHh0XCJdXG4pO1xuXG5pbXBvcnQgeyBhZGRCdXR0b24gfSBmcm9tIFwiLi4vUG9ydGVy44Gj44G944GE57eo6ZuG44OQ44O844KS55Sf44KE44GZVXNlclNjcmlwdEAxLjAuMC9tb2QudHNcIjtcbmltcG9ydCB7XG4gIHBvcnRlckNvcHksIHBvcnRlckN1dCwgcG9ydGVyUGFzdGUsIHRvZ2dsZUNhcmV0XG59IGZyb20gXCIuLi9Qb3J0ZXLjgaPjgb3jgYTnt6jpm4bjg5Djg7zjgpLnlJ/jgoTjgZlVc2VyU2NyaXB0QDEuMC4wL2NvbW1hbmRzLnRzXCI7XG5pbXBvcnQge1xuICBkb3duQmxvY2tzLFxuICBkb3duTGluZXMsXG4gIGluZGVudEJsb2NrcyxcbiAgaW5kZW50TGluZXMsXG4gIGluc2VydFRleHQsXG4gIG91dGRlbnRCbG9ja3MsXG4gIG91dGRlbnRMaW5lcyxcbiAgdXBCbG9ja3MsXG4gIHVwTGluZXMsXG4gIHJlZG8sXG4gIHVuZG8sXG59IGZyb20gXCIuLi9zY3JhcGJveC11c2Vyc2NyaXB0LXN0ZC9kb20udHNcIjtcblxuaWYgKGlzTW9iaWxlKCkpIHtcbiAgYWRkQnV0dG9uKHtcbiAgICBkaXNwbGF5OiB7IHR5cGU6IFwiY2FyZXQtbGVmdFwiIH0sXG4gICAgb25DbGljazogKHsgY3Vyc29yLCBzZWxlY3Rpb24gfSkgPT4ge1xuICAgICAgY3Vyc29yLmZvY3VzKCk7XG4gICAgICBzZWxlY3Rpb24uZ2V0U2VsZWN0ZWRUZXh0KCkgPT09IFwiXCIgPyBvdXRkZW50QmxvY2tzKCkgOiBvdXRkZW50TGluZXMoKTtcbiAgICB9LFxuICB9KTtcbiAgYWRkQnV0dG9uKHtcbiAgICBkaXNwbGF5OiB7IHR5cGU6IFwiY2FyZXQtcmlnaHRcIiB9LFxuICAgIG9uQ2xpY2s6ICh7IGN1cnNvciwgc2VsZWN0aW9uIH0pID0+IHtcbiAgICAgIGN1cnNvci5mb2N1cygpO1xuICAgICAgc2VsZWN0aW9uLmdldFNlbGVjdGVkVGV4dCgpID09PSBcIlwiID8gaW5kZW50QmxvY2tzKCkgOiBpbmRlbnRMaW5lcygpO1xuICAgIH0sXG4gIH0pO1xuICBhZGRCdXR0b24oe1xuICAgIGRpc3BsYXk6IHsgdHlwZTogXCJjYXJldC11cFwiIH0sXG4gICAgb25DbGljazogKHsgY3Vyc29yLCBzZWxlY3Rpb24gfSkgPT4ge1xuICAgICAgY3Vyc29yLmZvY3VzKCk7XG4gICAgICBzZWxlY3Rpb24uZ2V0U2VsZWN0ZWRUZXh0KCkgPT09IFwiXCIgPyB1cEJsb2NrcygpIDogdXBMaW5lcygpO1xuICAgIH0sXG4gIH0pO1xuICBhZGRCdXR0b24oe1xuICAgIGRpc3BsYXk6IHsgdHlwZTogXCJjYXJldC1kb3duXCIgfSxcbiAgICBvbkNsaWNrOiAoeyBjdXJzb3IsIHNlbGVjdGlvbiB9KSA9PiB7XG4gICAgICBjdXJzb3IuZm9jdXMoKTtcbiAgICAgIHNlbGVjdGlvbi5nZXRTZWxlY3RlZFRleHQoKSA9PT0gXCJcIiA/IGRvd25CbG9ja3MoKSA6IGRvd25MaW5lcygpXG4gICAgfSxcbiAgfSk7XG4gIGFkZEJ1dHRvbih7XG4gICAgZGlzcGxheTogeyB0eXBlOiBcImNvcHlcIiB9LFxuICAgIG9uQ2xpY2s6IGFzeW5jICh7IGN1cnNvciwgc2VsZWN0aW9uIH0pID0+IGF3YWl0IHBvcnRlckNvcHkoY3Vyc29yLCBzZWxlY3Rpb24pLFxuICB9KTtcbiAgYWRkQnV0dG9uKHtcbiAgICBkaXNwbGF5OiB7IHR5cGU6IFwiY3V0XCIgfSxcbiAgICBvbkNsaWNrOiBhc3luYyAoeyBjdXJzb3IsIHNlbGVjdGlvbiB9KSA9PiBhd2FpdCBwb3J0ZXJDdXQoY3Vyc29yLCBzZWxlY3Rpb24pLFxuICB9KTtcbiAgYWRkQnV0dG9uKHtcbiAgICBkaXNwbGF5OiB7IHR5cGU6IFwiY2xpcGJvYXJkXCIgfSxcbiAgICBvbkNsaWNrOiBhc3luYyAoeyBjdXJzb3IgfSkgPT4gYXdhaXQgcG9ydGVyUGFzdGUoY3Vyc29yKSxcbiAgfSk7XG4gIGFkZEJ1dHRvbih7XG4gICAgZGlzcGxheTogeyB0eXBlOiBcInVuZG9cIiB9LFxuICAgIG9uQ2xpY2s6ICgpID0+IHVuZG8oKSxcbiAgfSk7XG4gIGFkZEJ1dHRvbih7XG4gICAgZGlzcGxheTogeyB0eXBlOiBcInJlZG9cIiB9LFxuICAgIG9uQ2xpY2s6ICgpID0+IHJlZG8oKSxcbiAgfSk7XG4gIGFkZEJ1dHRvbih7XG4gICAgZGlzcGxheTogKHsgY3Vyc29yIH0pID0+IGN1cnNvci5nZXRWaXNpYmxlKCkgJiYgY3Vyc29yLmhhc0ZvY3VzXG4gICAgIC8vIEB0cy1pZ25vcmUgcHJpdmF0ZeaJseOBhOOBoOOBkeOBqeOAgeOBk+OCjOOBl+OBi+OCouOCr+OCu+OCueaWueazleOBjOOBquOBhOOBn+OCgeS9v+OCj+OBm+OBpuOBhOOBn+OBoOOBj1xuICAgICAmJiBjdXJzb3IudmlzaWJsZVBvcHVwTWVudSA/XG4gICAgICB7IHR5cGU6IFtcImktY3Vyc29yXCIsIFwic2xhc2hcIl0gfSA6XG4gICAgICB7IHR5cGU6IFwiaS1jdXJzb3JcIiB9LFxuICAgIG9uQ2xpY2s6ICh7IGN1cnNvciB9KSA9PiB0b2dnbGVDYXJldChjdXJzb3IpLFxuICB9KTtcbn1cblxuaW1wb3J0IFwiLi4vc2NyYXBib3gtZWRpdG9yLWJlZ2luLWVkaXQvc2NyaXB0LnRzXCI7XG5pbXBvcnQgXCIuLi9tb2JpbGXjgYvjgol0aW1lc3RhbXDjgpLooYzpoK3jgavmjL/lhaXjgZnjgotVc2VyU2NyaXB0L3NjcmlwdC5qc1wiO1xuaW1wb3J0IFwiLi4vS2FrZXJ144KS6ZaL44GPUGFnZV9NZW51L3NjcmlwdC5qc1wiO1xuaW1wb3J0IHtcbiAgdHJhbnNwb3J0LCBjcmVhdGVUYXNrLFxufSBmcm9tIFwiLi4vdGFra2VyOTklMkZ0YWtrZXItc2NoZWR1bGVyL2RlcHMudHNcIjtcblxuaWYgKGlzTW9iaWxlKCkgJiYgc2NyYXBib3guUHJvamVjdC5uYW1lICE9PSBcInRha2tlci1tZW1leFwiKSB7XG4gIGNvbnN0IGlkID0gXCJ0YXNrXCI7XG4gIHNjcmFwYm94LlBhZ2VNZW51LmFkZE1lbnUoe1xuICAgIHRpdGxlOiBpZCxcbiAgICBpbWFnZTogJ2h0dHBzOi8vaW1nLmljb25zOC5jb20vaW9zLzE4MC9GRkZGRkYvdG9kby1saXN0LS12Mi5wbmcnLFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiAnQm9vayBzdGFydGluZycsXG4gICAgaW1hZ2U6ICdodHRwczovL2ltZy5pY29uczguY29tL2lvcy8xODAvRkZGRkZGL3BsdXMtMWRheS5wbmcnLFxuICAgIG9uQ2xpY2s6IGNyZWF0ZVRhc2ssXG4gIH0pO1xuICBzY3JhcGJveC5QYWdlTWVudShpZCkuYWRkSXRlbSh7XG4gICAgdGl0bGU6ICdUcmFuc3BvcnQnLFxuICAgIG9uQ2xpY2s6ICgpID0+IHRyYW5zcG9ydCh7XG4gICAgICBmcm9tOiB7XG4gICAgICAgIHByb2plY3Q6IHNjcmFwYm94LlByb2plY3QubmFtZSxcbiAgICAgICAgdGl0bGU6IHNjcmFwYm94LlBhZ2UudGl0bGUhLFxuICAgICAgfSxcbiAgICAgIHRvOiBcInRha2tlci1tZW1leFwiLFxuICAgIH0pLFxuICB9KTtcbn1cblxuaW1wb3J0IHsgbWFrZU5ld1BhZ2UgfSBmcm9tIFwiLi4vY3VzdG9tLW5ldy1wYWdlL21vZC50c1wiO1xuaW1wb3J0IHtcbiAgbmV3UGFnZUhvb2ssXG4gIHNwbGl0dGVkTGlua0hvb2ssXG4gIHRhc2tMaW5lSG9vayxcbn0gZnJvbSBcIi4uL2Zvci1jdXN0b20tbmV3LXBhZ2UvbW9kLnRzXCI7XG5cbmlmIChpc01vYmlsZSgpKSB7XG4gIGNvbnN0IGlkID0gXCJOZXcgUGFnZVwiO1xuICBjb25zdCBob29rcyA9IFt0YXNrTGluZUhvb2ssIG5ld1BhZ2VIb29rLCBzcGxpdHRlZExpbmtIb29rXTtcbiAgc2NyYXBib3guUGFnZU1lbnUuYWRkTWVudSh7XG4gICAgdGl0bGU6IGlkLFxuICAgIGltYWdlOiBcImh0dHBzOi8vaW1nLmljb25zOC5jb20vaW9zLzE4MC9GRkZGRkYvY3V0LXBhcGVyLnBuZ1wiLFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiBcIk5ldyBQYWdlXCIsXG4gICAgb25DbGljazogKCkgPT4ge1xuICAgICAgY29uc3QgcHJvamVjdCA9IHdpbmRvdy5wcm9tcHQoXCJDcmVhdGUgYSBuZXcgcGFnZSBhdFwiLCBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUpO1xuICAgICAgaWYgKCFwcm9qZWN0KSByZXR1cm47XG4gICAgICBtYWtlTmV3UGFnZSh7IHByb2plY3QsIG1vZGU6IFwibm9vcGVuXCIsIGhvb2tzIH0pPy4oKTtcbiAgICB9LFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiBcIk5ldyBQYWdlIGFuZCBPcGVuXCIsXG4gICAgb25DbGljazogKCkgPT4ge1xuICAgICAgY29uc3QgcHJvamVjdCA9IHdpbmRvdy5wcm9tcHQoXCJDcmVhdGUgYSBuZXcgcGFnZSBhdFwiLCBzY3JhcGJveC5Qcm9qZWN0Lm5hbWUpO1xuICAgICAgaWYgKCFwcm9qZWN0KSByZXR1cm47XG4gICAgICBtYWtlTmV3UGFnZSh7IHByb2plY3QsIG1vZGU6IFwic2VsZlwiLCBob29rcyB9KT8uKCk7XG4gICAgfSxcbiAgfSk7XG59XG5cbmltcG9ydCBcIi4uL+ODmuODvOOCuOOCkui7oumAgeOBmeOCi1VzZXJTY3JpcHQvcGFnZU1lbnUudHNcIjtcbmltcG9ydCB7IGFkZFRvSW5ib3hGcm9tUHJvbXB0IH0gZnJvbSBcIi4uL0luYm9444Gr57Sg5pep44GP5YWl44KM44KLVXNlclNjcmlwdC9tb2QudHNcIjtcblxuc2NyYXBib3guUGFnZU1lbnUuYWRkTWVudSh7XG4gIHRpdGxlOiBcIkFkZCB0byBpbmJveFwiLFxuICBpbWFnZTogXCJodHRwczovL2ltZy5pY29uczguY29tL2lvcy8xODAvRkZGRkZGL2luYm94LnBuZ1wiLFxuICBvbkNsaWNrOiAoKSA9PiAgYWRkVG9JbmJveEZyb21Qcm9tcHQoXG4gICAgXCJ0YWtrZXItbWVtZXhcIixcbiAgICBcIuODoeODouW4s1wiLFxuICApLFxufSk7XG5cbmltcG9ydCBcIi4uL3NjcmFwYm94LWljb24tYnV0dG9uL3NjcmlwdC5qc1wiO1xuaW1wb3J0IFwiLi4vTWFya2Rvd27lvaLlvI/jgafjg5rjg7zjgrjjga5VUkzjgpLjgrPjg5Tjg7zjgZnjgotQYWdlTWVudS9zY3JpcHQuanNcIjtcbmltcG9ydCB7XG4gIHNldHVwIGFzIHNldHVwQWN0aW9uc1xufSBmcm9tIFwiLi4vdGFra2VyOTklMkZ0YWtrZXItc2NoZWR1bGVyL3ZpZXdlci50c3hcIjtcbmltcG9ydCB7XG4gIHNldHVwIGFzIHNldHVwU2NoZWR1bGVyLFxuICBzZXR1cFdlZGdldFxufSBmcm9tIFwiLi4vdGFra2VyOTklMkZ0YWtrZXItc2NoZWR1bGVyL3dlZWtseS1zY2hlZHVsZXIudHN4XCI7XG5cbihhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGlkID0gXCJuZXh0LWFjdGlvblwiO1xuICBjb25zdCBzZWxlY3RvciA9IGBoZWFkIHN0eWxlW2RhdGEtdXNlcnNjcmlwdC1uYW1lPVwiJHtpZH1cIl1gO1xuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKT8ucmVtb3ZlPy4oKTtcbiAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIHN0eWxlLmRhdGFzZXQudXNlcnNjcmlwdE5hbWUgPSBpZDtcbiAgc3R5bGUudGV4dENvbnRlbnQgPSBgXG5idXR0b246aXMoIyR7aWR9LCAjc2NoZWR1bGVyKS50b29sLWJ0bjo6YmVmb3JlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBmb250OiA5MDAgMjBweC80NnB4IFwiRm9udCBBd2Vzb21lIDUgRnJlZVwiO1xufVxuYnV0dG9uIyR7aWR9LnRvb2wtYnRuOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcXFxmMGFlXCI7XG59XG5idXR0b24jc2NoZWR1bGVyLnRvb2wtYnRuOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcXFxmMDczXCI7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5idXR0b246aXMoIyR7aWR9LCAjc2NoZWR1bGVyKS50b29sLWJ0biBpbWcge1xuICBvcGFjaXR5OiAwO1xufWA7XG4gIGRvY3VtZW50LmhlYWQuYXBwZW5kKHN0eWxlKTtcbiAgY29uc3QgcHJvamVjdHMgPSBbXCJ0YWtrZXItbWVtZXhcIiwgXCJ0YWtrZXJcIl07XG4gIGNvbnN0IHsgb3BlbiB9ID0gYXdhaXQgc2V0dXBBY3Rpb25zKHByb2plY3RzKTtcbiAgc2NyYXBib3guUGFnZU1lbnUuYWRkTWVudSh7XG4gICAgdGl0bGU6IGlkLFxuICAgIGltYWdlOiBcIi9hc3NldHMvaW1nL2Zhdmljb24vYXBwbGUtdG91Y2gtaWNvbi5wbmdcIixcbiAgICBvbkNsaWNrOiBvcGVuLFxuICB9KTtcbiAgY29uc3Qgc2NoZWR1bGVyID0gYXdhaXQgc2V0dXBTY2hlZHVsZXIocHJvamVjdHMpO1xuICBzY3JhcGJveC5QYWdlTWVudS5hZGRNZW51KHtcbiAgICB0aXRsZTogXCJzY2hlZHVsZXJcIixcbiAgICBpbWFnZTogXCIvYXNzZXRzL2ltZy9mYXZpY29uL2FwcGxlLXRvdWNoLWljb24ucG5nXCIsXG4gICAgb25DbGljazogc2NoZWR1bGVyLm9wZW4sXG4gIH0pO1xuICB7XG4gICAgY29uc3Qga2V5ID0gXCJ0YWtrZXItc2NoZWR1bGVyL3dlZGdldFwiO1xuICAgIGxldCBzZXR0aW5ncyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSA/PyBcInt9XCIpO1xuICAgIGNvbnN0IHByb2plY3QgPSBzY3JhcGJveC5Qcm9qZWN0Lm5hbWU7XG4gICAgc2V0dGluZ3NbcHJvamVjdF0gPz89IGZhbHNlO1xuICAgIGNvbnN0IHdlZGdldCA9IGF3YWl0IHNldHVwV2VkZ2V0KHByb2plY3RzLCBzZXR0aW5nc1twcm9qZWN0XSk7XG4gICAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgICAgc2V0dGluZ3NbcHJvamVjdF0gPSAhd2VkZ2V0LmlzT3BlbjtcbiAgICAgIGlmICh3ZWRnZXQuaXNPcGVuKSB7IHdlZGdldC5jbG9zZSgpOyB9IGVsc2UgeyB3ZWRnZXQub3BlbigpOyB9XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KHNldHRpbmdzKSk7XG4gICAgfTtcbiAgICBpZiAoIWlzTW9iaWxlKCkpIHtcbiAgICAgIHNjcmFwYm94LlBhZ2VNZW51LmFkZEl0ZW0oe1xuICAgICAgICB0aXRsZTogXCJ0b2dnbGUgd2VkZ2V0XCIsXG4gICAgICAgIG9uQ2xpY2s6IHRvZ2dsZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhZGRCdXR0b24oe1xuICAgICAgICBkaXNwbGF5OiB7IHR5cGU6IFwiY2FsZW5kYXJcIiB9LFxuICAgICAgICBvbkNsaWNrOiB0b2dnbGUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn0pKCk7XG5cbmV4cG9ydCB7IGFkZEJ1dHRvbiwgaW5zZXJ0VGV4dCwgIH07IiwgImltcG9ydCB7cGFnZUV4aXN0c30gZnJvbSAnL2FwaS9jb2RlL3Rha2tlci9zY3JhcGJveOOBq+eJueWumuOBruODmuODvOOCuOOBjOWtmOWcqOOBmeOCi+OBi+OBqeOBhuOBi+eiuuOBi+OCgeOCiy9wYWdlRXhpc3RzLmpzJztcblxuLy8g5pmC6ZaT6Zai6YCjXG5jb25zdCB6ZXJvID0gbiA9PiBTdHJpbmcobikucGFkU3RhcnQoMiwgJzAnKTtcbmNvbnN0IHRvWVlZWU1NREQgPSBkID0+IGAke2QuZ2V0RnVsbFllYXIoKX0tJHt6ZXJvKGQuZ2V0TW9udGgoKSArIDEpfS0ke3plcm8oZC5nZXREYXRlKCkpfWA7XG5jb25zdCB0b0hIbW1zcyA9IGQgPT4gYCR7emVybyhkLmdldEhvdXJzKCkpfToke3plcm8oZC5nZXRNaW51dGVzKCkpfToke3plcm8oZC5nZXRTZWNvbmRzKCkpfWA7XG5jb25zdCB0b0hIbW0gPSBkID0+IGAke3plcm8oZC5nZXRIb3VycygpKX06JHt6ZXJvKGQuZ2V0TWludXRlcygpKX1gO1xuY29uc3QgYURheUFnbyA9IGQgPT4ge2xldCB5ZXN0ZXJkYXkgPSBuZXcgRGF0ZShkKTsgeWVzdGVyZGF5LnNldERhdGUoZC5nZXREYXRlKCkgLSAxKTsgcmV0dXJuIHllc3RlcmRheTt9O1xuXG5hc3luYyBmdW5jdGlvbiBvcGVuSWZFeGlzdChwcm9qZWN0LCB0aXRsZSkge1xuICAgIGNvbnN0IGlzRXhpc3QgPSBhd2FpdCBwYWdlRXhpc3RzKHByb2plY3QsIHRpdGxlKTtcbiAgICBpZiAoaXNFeGlzdCkgd2luZG93Lm9wZW4oYGh0dHBzOi8vc2NyYXBib3guaW8vJHtwcm9qZWN0fS8ke3RpdGxlfWApO1xuXHRyZXR1cm4gaXNFeGlzdDtcbn1cbi8vIOS9v+OBhOaWuTpcbi8vIGlmIChhd2FpdCBvcGVuSWZFeGlzdChwcm9qZWN0LCB0aXRsZSkpIHJldHVybjtcblxuZnVuY3Rpb24gb3Blbk5ld1BhZ2UocHJvamVjdCwgdGl0bGUsIGxpbmVzKSB7XG5cdGNvbnN0IGJvZHkgPSBlbmNvZGVVUklDb21wb25lbnQobGluZXMuam9pbignXFxuJykpO1xuICAgIHdpbmRvdy5vcGVuKGBodHRwczovL3NjcmFwYm94LmlvLyR7cHJvamVjdH0vJHtlbmNvZGVVUklDb21wb25lbnQodGl0bGUpfT9ib2R5PSR7Ym9keX1gKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlUGFnZShtYWtlTGluZXMpIHtcblx0Y29uc3QgcHJvamVjdF9uYW1lID0gc2NyYXBib3guUHJvamVjdC5uYW1lO1xuICAgIGNvbnN0IHRvZGF5ID0gdG9ZWVlZTU1ERChuZXcgRGF0ZSgpKTtcbiAgICBjb25zdCB0aW1lID0gdG9ISG1tc3MobmV3IERhdGUoKSk7XG4gICAgXG4gICAgLy8g44K/44Kk44OI44Or44Go5Lit6Lqr44KSdXNlcuOBq+S9nOOCieOBm+OCi1xuICAgIGNvbnN0IFt0aXRsZSwgbGluZXMgXSA9IG1ha2VMaW5lcyh0b2RheSwgdGltZSwgbmV3IERhdGUoKSk7XG4gIFx0aWYgKHRpdGxlICE9PSAnbmV3JyAmJiBhd2FpdCBvcGVuSWZFeGlzdChwcm9qZWN0X25hbWUsIHRpdGxlKSkgcmV0dXJuO1xuICAgICBcdFx0XG4gIFx0Ly8gcGFnZeOCkueUn+aIkFxuICAgXHRvcGVuTmV3UGFnZShwcm9qZWN0X25hbWUsIHRpdGxlLCBsaW5lcyk7XG59XG5cblxuZXhwb3J0IHt6ZXJvLCB0b1lZWVlNTURELCB0b0hIbW1zcywgdG9ISG1tLCBhRGF5QWdvLCBvcGVuSWZFeGlzdCwgb3Blbk5ld1BhZ2UsIGNyZWF0ZVBhZ2V9OyIsICJpbXBvcnQge3RvWVlZWU1NRER9IGZyb20gJy9hcGkvY29kZS90YWtrZXIvU2NyYXBib3hfdGVtcGxhdGVfdXRpbGl0aWVzL3V0aWxpdGllcy5qcyc7XG5cbmZvciAoY29uc3QgYnV0dG9uIG9mIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ25ldy1idXR0b24nKSkge1xuXHRjb25zdCB0aW1lc3RhbXAgPSBgIyR7dG9ZWVlZTU1ERChuZXcgRGF0ZSgpKX1gO1xuXHRidXR0b24uaHJlZiA9IGAvJHtzY3JhcGJveC5Qcm9qZWN0Lm5hbWV9L25ldz9ib2R5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KCdcXG5cXG4nK3RpbWVzdGFtcCl9YDtcbn1cbmNvbnNvbGUubG9nKCdUaGUgaHJlZnMgb2YgXCJOZXcgQnV0dG9uXCIgaGF2ZSBiZWVuIGNoYW5nZWQuJykiLCAiaW1wb3J0IHtTY3JhcGJveFBhcnNlcn0gZnJvbSAnL2FwaS9jb2RlL3Rha2tlci9zY3JhcGJveC1wYXJzZXIubWluLmpzL3BhcnNlci5qcyc7XG5cbi8vIG1hcmtkb3du5aSJ5o+bXG5zY3JhcGJveC5Qb3B1cE1lbnUuYWRkQnV0dG9uKHtcblx0dGl0bGU6IFwiXFx1ZjEzYlwiLFxuXHRvbkNsaWNrOiB0ZXh0ID0+IHtcbiAgICBcdGNvbnN0IGJsb2NrcyA9IFNjcmFwYm94UGFyc2VyLnBhcnNlKHRleHQsIHtoYXNUaXRsZTogZmFsc2V9KTtcbiAgICBcdGNvbnNvbGUubG9nKCdQYXJzZXJkIHRleHQ6Jyk7XG4gICAgXHRjb25zb2xlLmxvZyhibG9ja3MpO1xuICAgIFx0aWYobmF2aWdhdG9yLmNsaXBib2FyZCl7XG4gICAgXHRcdGNvbnN0IGNvcGllZFRleHQgPSBjb252ZXJ0U2IySFRNTChibG9ja3MpLmpvaW4oJ1xcbicpO1xuICAgIFx0XHRjb25zb2xlLmxvZyhjb3BpZWRUZXh0KTtcbiAgICAgICAgIFx0bmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29waWVkVGV4dCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUpKTtcbiAgICAgICAgXHRjb25zb2xlLmxvZygnQ29waWVkLicpO1xuICAgICAgXHR9XG4gICAgICBcdHJldHVybjtcbiAgICB9XG59KTtcbmZ1bmN0aW9uIGNvbnZlcnRTYjJIVE1MKGJsb2Nrcykge1xuXHQvLyDjgZPjga5pbmRlbnQgbGV2ZWzjgpLln7rmupbjgavjgZnjgotcblx0Y29uc3QgdG9wSW5kZW50TGV2ZWwgPSBNYXRoLm1pbiguLi5ibG9ja3MubWFwKGJsb2NrID0+IGJsb2NrLmluZGVudCkpO1xuXHRcblx0bGV0IGluZGVudExldmVsID0gdG9wSW5kZW50TGV2ZWw7XG5cdGNvbnN0IHJlc3VsdCA9IFsnPHA+J107XG5cdGZvciAoY29uc3QgYmxvY2sgb2YgYmxvY2tzLmZpbHRlcihibG9jayA9PiBibG9jay50eXBlID09PSAnbGluZScpKSB7XG5cdFx0Ly8g5YmNbG9vcOOBi+OCieOBrmluZGVudCBsZXZlbOOBruWil+a4m1xuXHRcdGNvbnN0IGRpZmYgPSBibG9jay5pbmRlbnQgLSBpbmRlbnRMZXZlbDtcbiAgICBcdC8vIGluZGVudCBsZXZlbOOBjOa4m+OBo+OBn+OCiTwvdWw+44KS6L+95Yqg44GZ44KLXG4gICAgXHRpZiAoZGlmZiA8IDApIHJlc3VsdC5wdXNoKC4uLlsuLi5BcnJheSgtZGlmZildLm1hcChfID0+ICc8L3VsPicpKTtcblx0XHQvLyBpbmRlbnQgbGV2ZWzjgYzlopfjgYjjgZ/jgok8dWw+44KS6L+95Yqg44GZ44KLXG5cdFx0aWYgKGRpZmYgPiAwKSByZXN1bHQucHVzaCguLi5bLi4uQXJyYXkoZGlmZildLm1hcChfID0+ICc8dWwgc3R5bGU9XCJtYXJnaW4tdG9wOiA1cHg7bWFyZ2luLWJvdHRvbTogNXB4O1wiPicpKTtcblx0XHRcblx0XHRjb25zdCBjb250ZW50ID0gYmxvY2subm9kZXMubWFwKG5vZGUgPT4gY29udmVydE5vZGUobm9kZSkpLmpvaW4oJycpO1xuXHRcdGlmIChibG9jay5pbmRlbnQgPiB0b3BJbmRlbnRMZXZlbCkge1xuICAgIFx0XHRyZXN1bHQucHVzaChgPGxpPiR7Y29udGVudH08L2xpPmApO1xuICAgIFx0fSBlbHNlIHtcbiAgICBcdFx0cmVzdWx0LnB1c2goYCR7Y29udGVudH08YnIvPmApO1xuICAgIFx0fVxuICAgIFx0XG4gICAgXHRpbmRlbnRMZXZlbCA9IGJsb2NrLmluZGVudDtcblx0fVxuXHQvLyA8L3VsPuOBruS4jei2s+WIhuOCkuijnOOBhlxuXHRyZXN1bHQucHVzaCguLi5bLi4uQXJyYXkoaW5kZW50TGV2ZWwgLSB0b3BJbmRlbnRMZXZlbCldLm1hcChfID0+ICc8L3VsPicpKTtcblx0cmVzdWx0LnB1c2goJzwvcD4nKTtcblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY29udmVydE5vZGUobm9kZSkge1xuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICAgIGNhc2UgJ3F1b3RlJzpcbiAgICAgICAgXHQvLyBzY3JhcGJveOOBrmNzc+OBi+OCieODkeOCr+OBo+OBn1xuICAgICAgICBcdHJldHVybiBgPHNwYW4gc3R5bGU9XCJcbiAgICAgICAgXHRmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyOCwxMjgsMTI4LDAuMSk7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiBzb2xpZCA0cHggI2EwYTBhMDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNHB4O1wiPiR7bm9kZS5ub2Rlcy5tYXAobm9kZSA9PiBjb252ZXJ0Tm9kZShub2RlKSkuam9pbignJyl9PC9zcGFuPmA7XG4gICAgICAgIGNhc2UgJ2ltYWdlJzpcbiAgICAgICAgY2FzZSAnc3Ryb25nSW1hZ2UnOlxuICAgICAgICAgICAgcmV0dXJuIGA8aW1nIHNyYz1cIiR7bm9kZS5zcmN9XCIgc3R5bGU9XCJtYXgtd2lkdGg6IDUwdnc7XCIvPmA7XG4gICAgICAgIGNhc2UgJ2ljb24nOlxuICAgICAgICBcdGxldCBzcmMgPSAnJztcbiAgICAgICAgXHRsZXQgaHJlZiA9ICcnO1xuICAgICAgICBcdGxldCBhbHQgPSAnJztcbiAgICAgICAgXHRzd2l0Y2gobm9kZS5wYXRoVHlwZSkge1xuICAgICAgICAgIFx0XHRjYXNlICdyb290JzpcbiAgICAgICAgICBcdFx0XHRocmVmID0gYGh0dHBzOi8vc2NyYXBib3guaW8ke25vZGUucGF0aH1gO1xuICAgICAgICAgIFx0XHRcdHNyYyA9IGBodHRwczovL3NjcmFwYm94LmlvL2FwaS9wYWdlcy8ke25vZGUucGF0aH0vaWNvbmA7XG4gICAgICAgICAgXHRcdFx0YWx0ID0gbm9kZS5wYXRoLnJlcGxhY2UoL15cXC9bXlxcL10rXFwvKC4qKS8sJyQxJyk7XG4gICAgICAgICAgXHRcdFx0YnJlYWs7XG4gICAgICAgICAgXHRcdGNhc2UgJ3JlbGF0aXZlJzpcbiAgICAgICAgICBcdFx0XHRocmVmID0gYGh0dHBzOi8vc2NyYXBib3guaW8vJHtzY3JhcGJveC5Qcm9qZWN0Lm5hbWV9LyR7bm9kZS5wYXRofWA7XG4gICAgICAgICAgXHRcdFx0c3JjID0gYGh0dHBzOi8vc2NyYXBib3guaW8vYXBpL3BhZ2VzLyR7c2NyYXBib3guUHJvamVjdC5uYW1lfS8ke25vZGUucGF0aH0vaWNvbmA7XG4gICAgICAgICAgXHRcdFx0YWx0ID0gbm9kZS5wYXRoO1xuICAgICAgICAgIFx0XHRcdGJyZWFrO1xuICAgICAgICAgIFx0fVxuICAgICAgICBcdHJldHVybiBgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIiR7aHJlZn1cIj48aW1nIHN0eWxlPVwiXG4gICAgICAgIFx0XHRoZWlnaHQ6IDEuM2VtO1xuICAgXHRcdFx0XHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1wiIHNyYz1cIiR7c3JjfVwiIGFsdD1cIiR7YWx0fVwiIC8+PC9hPmA7XG4gICAgICAgIGNhc2UgJ3N0cm9uZ0ljb24nOlxuICAgICAgICAgICAgcmV0dXJuICcnOyAvL+eEoeimllxuICAgICAgICBjYXNlICdmb3JtdWxhJzpcbiAgICAgICAgICAgIHJldHVybiBgXFxcXCggJHtub2RlLmZvcm11bGF9IFxcXFwpYDtcbiAgICAgICAgY2FzZSAnaGVscGZlZWwnOlxuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICBjYXNlICdkZWNvcmF0aW9uJzpcbiAgICAgICAgXHRsZXQgcmVzdWx0ID0gbm9kZS5ub2Rlcy5tYXAobm9kZSA9PiBjb252ZXJ0Tm9kZShub2RlKSkuam9pbignJyk7XG4gICAgICAgIFx0aWYgKG5vZGUuZGVjb3MuaW5jbHVkZXMoJyotNCcpKSByZXN1bHQgPSBgPGg0PiR7cmVzdWx0fTwvaDQ+YDtcbiAgICAgICAgXHRpZiAobm9kZS5kZWNvcy5pbmNsdWRlcygnKi0zJykpIHJlc3VsdCA9IGA8aDU+JHtyZXN1bHR9PC9oNT5gO1xuICAgICAgICBcdGlmIChub2RlLmRlY29zLmluY2x1ZGVzKCcqLTInKSkgcmVzdWx0ID0gYDxoNj4ke3Jlc3VsdH08L2g2PmA7XG4gICAgICAgICAgICBpZiAobm9kZS5kZWNvcy5pbmNsdWRlcygnKi0xJykpIHJlc3VsdCA9IGA8c3Ryb25nPiR7cmVzdWx0fTwvc3Ryb25nPmA7XG4gICAgICAgIFx0aWYgKG5vZGUuZGVjb3MuaW5jbHVkZXMoJy8nKSkgcmVzdWx0ID0gYDxpPiR7cmVzdWx0fTwvaT5gO1xuICAgICAgICBcdGlmIChub2RlLmRlY29zLmluY2x1ZGVzKCctJykpIHJlc3VsdCA9IGA8c3RyaWtlPiR7cmVzdWx0fTwvc3RyaWtlPmA7XG4gICAgICAgIFx0aWYgKG5vZGUuZGVjb3MuaW5jbHVkZXMoJyEnKSkgcmVzdWx0ID0gYDxwcmU+JHtyZXN1bHR9PC9wcmU+YDtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIGNhc2UgJ3N0cm9uZyc6XG4gICAgICAgICAgICByZXR1cm4gYDxzdHJvbmc+JHtub2RlLm5vZGVzLm1hcChub2RlID0+IGNvbnZlcnROb2RlKG5vZGUpKS5qb2luKCcnKX08L3N0cm9uZz5gO1xuICAgICAgICBjYXNlICdjb2RlJzpcbiAgICAgICAgICAgIHJldHVybiBgPGNvZGU+JHtub2RlLnRleHR9PC9jb2RlPmBcbiAgICAgICAgY2FzZSAnY29tbWFuZExpbmUnOlxuICAgICAgICBjYXNlICdnb29nbGVNYXAnOlxuICAgICAgICAgICAgcmV0dXJuICcnOyAvLyDku4rlm57jga/nhKHoppZcbiAgICAgICAgY2FzZSAnYmxhbmsnOlxuICAgICAgICAgICAgcmV0dXJuIGA8c3Bhbj4ke25vZGUudGV4dH08L3NwYW4+YDtcbiAgICAgICAgY2FzZSAnbGluayc6XG4gICAgICAgIFx0c3dpdGNoKG5vZGUucGF0aFR5cGUpIHtcbiAgICAgICAgXHRcdGNhc2UgJ3Jvb3QnOlxuICAgICAgICBcdFx0XHRyZXR1cm4gYDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3NjcmFwYm94LmlvJHtub2RlLmhyZWZ9XCI+JHtub2RlLmhyZWZ9PC9hPmA7XG4gICAgICAgIFx0XHRjYXNlICdyZWxhdGl2ZSc6XG4gICAgICAgIFx0XHRcdHJldHVybiBgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vc2NyYXBib3guaW8vJHtzY3JhcGJveC5Qcm9qZWN0Lm5hbWV9LyR7bm9kZS5ocmVmfVwiPiR7bm9kZS5ocmVmfTwvYT5gO1xuICAgICAgICBcdFx0Y2FzZSAnYWJzb2x1dGUnOlxuICAgICAgICBcdFx0XHRyZXR1cm4gYDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIke25vZGUuaHJlZn1cIj4ke25vZGUuY29udGVudCB8fCBub2RlLmhyZWZ9PC9hPmA7XG4gICAgICAgIFx0fVxuICAgICAgICBjYXNlICdoYXNoVGFnJzpcbiAgICAgICAgICAgIHJldHVybiBgPGEgaHJlZj1cImh0dHBzOi8vc2NyYXBib3guaW8vJHtzY3JhcGJveC5Qcm9qZWN0Lm5hbWV9LyR7bm9kZS5ocmVmfVwiPiMke25vZGUuaHJlZn08L2E+YDtcbiAgICAgICAgY2FzZSAncGxhaW4nOlxuICAgICAgICAgICAgcmV0dXJuIGA8c3Bhbj4ke25vZGUudGV4dH08L3NwYW4+YDtcbiAgICB9XG59IiwgInNjcmFwYm94LlBvcHVwTWVudS5hZGRCdXR0b24oe1xuICB0aXRsZTogXCJcXHVmODkxXCIsXG4gIG9uQ2xpY2s6IHRleHQgPT4ge1xuICAgIGNvbnN0IGNoZWNrUGFnZSA9IHdpbmRvdy5vcGVuKCk7XG4gICAgLy9jaGVja1BhZ2UuZG9jdW1lbnQub3BlbigpO1xuICAgIGNoZWNrUGFnZS5kb2N1bWVudC53cml0ZShcbmA8aHRtbD5cbiAgPGJvZHk+XG4gICAgPHRleHRhcmVhIHNwZWxsY2hlY2s9XCJ0cnVlXCI+JHt0ZXh0fTwvdGV4dGFyZWE+XG4gIDwvYm9keT5cbjwvaHRtbD5gKTtcbiAgICBjaGVja1BhZ2UuZG9jdW1lbnQuY2xvc2UoKTsgIFxuICB9LFxufSk7IiwgInNjcmFwYm94LlBvcHVwTWVudS5hZGRCdXR0b24oe1xuICB0aXRsZTogdGV4dCA9PiB7XG4gICAgY29uc3QgY2hhcnMgPSB0ZXh0LnJlcGxhY2UoL1tcXHJcXG5dL2csICcnKS5sZW5ndGg7XG4gICAgY29uc3Qgd29yZHMgPSB0ZXh0LnRyaW0oKS5zcGxpdCgvW1xcclxcblxcc10rLykubGVuZ3RoO1xuICAgIHJldHVybiBgJHtjaGFyc31jICR7d29yZHN9d2BcbiAgfSxcbiAgb25DbGljazogKCkgPT4gbnVsbFxufSk7IiwgImltcG9ydCB7XG4gIGFkZFRhc2ssIHN0YXJ0VGFzaywgZW5kVGFzaywgcG9zdGVyaW9yaUVuZFRhc2ssXG4gIHdhbGtEYXksIG1vdmVUb2RheSwgdG9nZ2xlVGFzayxcbiAgdHJhbnNwb3J0LCBjcmVhdGVUYXNrLCB0b1N0cmluZywgZm9ybWF0XG59IGZyb20gXCIuLi90YWtrZXI5OSUyRnRha2tlci1zY2hlZHVsZXIvZGVwcy50c1wiO1xuaW1wb3J0IHtcbiAgcGFyc2UsXG4gIHRvVGFza0xpbmUsXG59IGZyb20gXCIuLi90YWtrZXI5OSUyRnRha2tlci1zY2hlZHVsZXIvd29ya2Zsb3cudHNcIjtcbmltcG9ydCB7XG4gIGNhcmV0LCBnZXRMaW5lcywgcmVwbGFjZUxpbmVzLCBvcGVuSW5UaGVTYW1lVGFiLFxufSBmcm9tIFwiLi4vc2NyYXBib3gtdXNlcnNjcmlwdC1zdGQvZG9tLnRzXCI7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gXCIuLi9tb2JpbGXniYhzY3JhcGJveOOBruWIpOWumi9zY3JpcHQuanNcIjtcbmltcG9ydCB0eXBlIHsgU2NyYXBib3ggfSBmcm9tIFwiLi4vc2NyYXBib3gtanAlMkZ0eXBlcy91c2Vyc2NyaXB0LnRzXCI7XG5kZWNsYXJlIGNvbnN0IHNjcmFwYm94OiBTY3JhcGJveDtcbiAgXG5cbmlmIChpc01vYmlsZSgpKSB7XG4gIGNvbnN0IGlkID0gXCJ0YXNrXCI7XG4gIHNjcmFwYm94LlBhZ2VNZW51LmFkZE1lbnUoe1xuICAgIHRpdGxlOiBpZCxcbiAgICBpbWFnZTogJ2h0dHBzOi8vaW1nLmljb25zOC5jb20vaW9zLzE4MC9GRkZGRkYvdG9kby1saXN0LS12Mi5wbmcnLFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUuYWRkTWVudSh7XG4gICAgdGl0bGU6ICdUb2dnbGUgdGFzaycsXG4gICAgaW1hZ2U6ICdodHRwczovL2ltZy5pY29uczguY29tL2lvcy8xODAvRkZGRkZGL3JlcGVhdC5wbmcnLFxuICAgIG9uQ2xpY2s6IHRvZ2dsZVRhc2ssXG4gIH0pO1xuICBzY3JhcGJveC5QYWdlTWVudShpZCkuYWRkSXRlbSh7XG4gICAgdGl0bGU6ICdBZGQgdGFzaycsXG4gICAgaW1hZ2U6ICdodHRwczovL2ltZy5pY29uczguY29tL2lvcy8xODAvRkZGRkZGL3BsdXMtbWF0aC5wbmcnLFxuICAgIG9uQ2xpY2s6IGFkZFRhc2ssXG4gIH0pO1xuICBzY3JhcGJveC5QYWdlTWVudShpZCkuYWRkSXRlbSh7XG4gICAgdGl0bGU6ICdTdGFydCB0YXNrJyxcbiAgICBpbWFnZTogJ2h0dHBzOi8vaW1nLmljb25zOC5jb20vaW9zLzE4MC9GRkZGRkYvc3RhcnQtLXYxLnBuZycsXG4gICAgb25DbGljazogc3RhcnRUYXNrLFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiAnRW5kIHRhc2snLFxuICAgIGltYWdlOiAnaHR0cHM6Ly9pbWcuaWNvbnM4LmNvbS9pb3MvMTgwL0ZGRkZGRi9zdG9wLXNxdWFyZWQucG5nJyxcbiAgICBvbkNsaWNrOiBlbmRUYXNrLFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiAnUG9zdGVyaW9yaSBlbmQgdGFzaycsXG4gICAgaW1hZ2U6ICdodHRwczovL2ltZy5pY29uczguY29tL2lvcy8xODAvRkZGRkZGL2VuZC0tdjEucG5nJyxcbiAgICBvbkNsaWNrOiBwb3N0ZXJpb3JpRW5kVGFzayxcbiAgfSk7XG4gIHNjcmFwYm94LlBhZ2VNZW51KGlkKS5hZGRJdGVtKHtcbiAgICB0aXRsZTogJ0Jvb2sgc3RhcnRpbmcnLFxuICAgIGltYWdlOiAnaHR0cHM6Ly9pbWcuaWNvbnM4LmNvbS9pb3MvMTgwL0ZGRkZGRi9wbHVzLTFkYXkucG5nJyxcbiAgICBvbkNsaWNrOiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBbc3RhcnQsIGVuZF0gPSBnZXRMaW5lUmFuZ2UoKTtcbiAgICAgIGNvbnN0IHRleHQgPSBnZXRMaW5lcygpLnNsaWNlKHN0YXJ0LCBlbmQgKyAxKS5tYXAoKGxpbmUpID0+IHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGxpbmUudGV4dDtcbiAgICAgICAgY29uc3QgbGluayA9IGxpbmUudGV4dC5tYXRjaCgvXFxbKFteXFxdXSspXFxdLyk/LlsxXTtcbiAgICAgICAgaWYgKCFsaW5rKSByZXR1cm4gdGV4dDtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcGFyc2UobGluayk7XG4gICAgICAgIGlmICghcmVzdWx0IHx8ICFyZXN1bHQub2spIHJldHVybiB0ZXh0O1xuICAgICAgICBjb25zdCB0YXNrID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICBpZiAodGFzay5mcmVzaG5lc3M/LnN0YXR1cyA9PT0gXCJkb25lXCIpIHJldHVybiB0ZXh0O1xuICAgICAgICBjb25zdCB0YXNrTGluZSA9IHRvVGFza0xpbmUodGFzayk7XG4gICAgICAgIHRhc2tMaW5lLnRpdGxlID0gYFske2xpbmt9XWA7XG4gICAgICAgIGlmICghdGFza0xpbmUpIHJldHVybiB0ZXh0O1xuICAgICAgICByZXR1cm4gdG9TdHJpbmcodGFza0xpbmUpO1xuICAgICAgfSkuam9pbihcIlxcblwiKTtcbiAgICAgIGF3YWl0IHJlcGxhY2VMaW5lcyhzdGFydCwgZW5kLCB0ZXh0KTtcbiAgICAgIGF3YWl0IGNyZWF0ZVRhc2soKTtcbiAgICB9LFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiAnV2FsayBhIGRheScsXG4gICAgaW1hZ2U6ICdodHRwczovL2ltZy5pY29uczguY29tL2lvcy8xODAvRkZGRkZGL3BsdXMtMWRheS5wbmcnLFxuICAgIG9uQ2xpY2s6ICgpID0+IHdhbGtEYXkoKSxcbiAgfSk7XG4gIHNjcmFwYm94LlBhZ2VNZW51KGlkKS5hZGRJdGVtKHtcbiAgICB0aXRsZTogJ01vdmUgdG9kYXknLFxuICAgIGltYWdlOiAnaHR0cHM6Ly9pbWcuaWNvbnM4LmNvbS9pb3MvMTgwL0ZGRkZGRi9kYXRlLXRvLnBuZycsXG4gICAgb25DbGljazogKCkgPT4gbW92ZVRvZGF5KCksXG4gIH0pO1xuICBzY3JhcGJveC5QYWdlTWVudShpZCkuYWRkSXRlbSh7XG4gICAgdGl0bGU6ICdGb3JtYXQnLFxuICAgIGltYWdlOiAnaHR0cHM6Ly9pbWcuaWNvbnM4LmNvbS9pb3MvMTgwL0ZGRkZGRi9zb3J0LWJ5LXN0YXJ0LWRhdGUucG5nJyxcbiAgICBvbkNsaWNrOiAoKSA9PiBmb3JtYXQoc2NyYXBib3guUHJvamVjdC5uYW1lLCBzY3JhcGJveC5QYWdlLnRpdGxlISksXG4gIH0pO1xuICBzY3JhcGJveC5QYWdlTWVudShpZCkuYWRkSXRlbSh7XG4gICAgdGl0bGU6ICdUcmFuc3BvcnQnLFxuICAgIG9uQ2xpY2s6ICgpID0+IHRyYW5zcG9ydCh7XG4gICAgICBmcm9tOiB7XG4gICAgICAgIHByb2plY3Q6IHNjcmFwYm94LlByb2plY3QubmFtZSxcbiAgICAgICAgdGl0bGU6IHNjcmFwYm94LlBhZ2UudGl0bGUhLFxuICAgICAgfSxcbiAgICAgIHRvOiBcInRha2tlci1tZW1leFwiLFxuICAgIH0pLFxuICB9KTtcbiAgc2NyYXBib3guUGFnZU1lbnUoaWQpLmFkZEl0ZW0oe1xuICAgIHRpdGxlOiAnU3luYycsXG4gICAgb25DbGljazogKCkgPT4gd2luZG93Lm9wZW4oXG4gICAgICBcImh0dHBzOi8vc2NyaXB0Lmdvb2dsZS5jb20vbWFjcm9zL3MvQUtmeWNieUFnTjhubVVYalZYTF90YWhEelZ5eXJNekZhSTRDSlZtSWFwazhHMEd1eHhWTi03b1VidURKT2YzMWZQN1NGang5L2V4ZWNcIixcbiAgICApLFxuICB9KTtcbn1cbiAgXG4vKiog6YG45oqe56+E5Zuy44Gr5ZCr44G+44KM44KL6KGM44GL44Kr44O844K944Or44GM44GE44KL6KGM44KS6L+U44GZXG4gKlxuICogcG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3Rha2tlcjk5L3Rha2tlci1zY2hlZHVsZXIvYmxvYi8wLjcuNi9jb21tYW5kcy9nZXRMaW5lUmFuZ2UudHNcbiAqL1xuY29uc3QgZ2V0TGluZVJhbmdlID0gKCk6IHJlYWRvbmx5IFtudW1iZXIsIG51bWJlcl0gPT4ge1xuICBjb25zdCB7IHNlbGVjdGlvblJhbmdlOiB7IHN0YXJ0LCBlbmQgfSwgc2VsZWN0ZWRUZXh0LCBwb3NpdGlvbiB9ID0gY2FyZXQoKTtcbiAgcmV0dXJuIHNlbGVjdGVkVGV4dCA9PT0gXCJcIlxuICAgID8gW3Bvc2l0aW9uLmxpbmUsIHBvc2l0aW9uLmxpbmVdXG4gICAgOiBzdGFydC5saW5lID4gZW5kLmxpbmVcbiAgICA/IFtlbmQubGluZSwgc3RhcnQubGluZV1cbiAgICA6IFtzdGFydC5saW5lLCBlbmQubGluZV0gYXMgY29uc3Q7XG59O1xuIiwgImNvbnN0IElEID0gJ3NjcmFwYm94LWVwaXNvcGFzcyc7XG5sZXQgaXNSdW5uaW5nID0gZmFsc2U7XG5cbnNjcmFwYm94LlBvcHVwTWVudS5hZGRCdXR0b24oe1xuICB0aXRsZTogdGV4dCA9PiB7XG4gICAgaWYgKGlzUnVubmluZykgcmV0dXJuICdyZW1vdmUgRVAnO1xuICAgIGlmICgvaHR0cHM6XFwvXFwvc2NyYXBib3hcXC5pb1xcL2ZpbGVzXFwvXFx3K1xcLmh0bWwvLnRlc3QodGV4dCkpIHJldHVybiAncnVuIEVQJztcbiAgICByZXR1cm4gJyc7XG4gIH0sXG4gIG9uQ2xpY2s6IGFzeW5jIHRleHQgPT4ge1xuICAgIC8vIOS4gOaXpnJlc2V0XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoSUQpPy5yZW1vdmUoKTtcbiAgICBpZiAoaXNSdW5uaW5nKSB7XG4gICAgICBpc1J1bm5pbmcgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCEvaHR0cHM6XFwvXFwvc2NyYXBib3hcXC5pb1xcL2ZpbGVzXFwvXFx3K1xcLmh0bWwvLnRlc3QodGV4dCkpIHJldHVybjtcbiAgICBcbiAgICBjb25zdCBmaWxlUGF0aCA9IHRleHQubWF0Y2goL2h0dHBzOlxcL1xcL3NjcmFwYm94XFwuaW8oXFwvZmlsZXNcXC9cXHcrXFwuaHRtbCkvKVsxXTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goZmlsZVBhdGgpO1xuICAgICAgY29uc3QgaHRtbCA9IGF3YWl0IHJlcy50ZXh0KCk7XG4gICAgICAvLyBFcGlzb1Bhc3Pjga5odG1s44OV44Kh44Kk44Or44GL44Gp44GG44GL5Yik5a6a44GZ44KLXG4gICAgICBpZiAoIWh0bWwuaW5jbHVkZXMoJzx0aXRsZT5FcGlzb1Bhc3M8L3RpdGxlPicpKSByZXR1cm47XG4gICAgICBjb25zdCBodG1sQmxvYkRhdGEgPSBuZXcgQmxvYihbaHRtbF0sIHt0eXBlOiAndGV4dC9odG1sJ30pO1xuICAgICAgY29uc3QgaHRtbERpcmVjdFVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoaHRtbEJsb2JEYXRhKTtcbiAgICAgIC8vIOOCq+ODvOOCveODq+ihjOOBruebtOS4i+OBq+aMv+WFpeOBmeOCi1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY3Vyc29yLWxpbmUnKVswXVxuICAgICAgICAuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLFxuICAgICAgICBgPGlmcmFtZSBpZD1cIiR7SUR9XCIgc3JjPVwiJHtodG1sRGlyZWN0VVJMfVwiIHdpZHRoPVwiODAwXCIgaGVpZ2h0PVwiNDAwXCI+PC9pZnJhbWU+YCk7XG4gICAgICBpc1J1bm5pbmcgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH0gY2F0Y2goZSkge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGxvYWQgYW4gRXBpc29QYXNzIGh0bWw6ICcsIGUpO1xuICAgIH1cbiAgfSxcbn0pO1xuIiwgIi8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImVzbmV4dFwiLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiLz5cbmltcG9ydCB7XG4gIGRpc2Nvbm5lY3QsXG4gIG1ha2VTb2NrZXQsXG4gIHBhdGNoLFxuICBTb2NrZXQsXG59IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXdlYnNvY2tldC50c1wiO1xuaW1wb3J0IHsgU2NyYXBib3gsIHVzZVN0YXR1c0JhciB9IGZyb20gXCIuLi9kZXBzL3NjcmFwYm94LXN0ZC1kb20udHNcIjtcbmltcG9ydCB7IHNsZWVwLCB0b1RpdGxlTGMgfSBmcm9tIFwiLi4vZGVwcy9zY3JhcGJveC1zdGQudHNcIjtcbmltcG9ydCB7IGVhY2hEYXlPZkludGVydmFsLCBpc1NhbWVEYXksIGxpZ2h0Rm9ybWF0IH0gZnJvbSBcIi4uL2RlcHMvZGF0ZS1mbnMudHNcIjtcbmltcG9ydCB7IFRhc2ssIHRvU3RyaW5nIH0gZnJvbSBcIi4uL3Rhc2sudHNcIjtcbmltcG9ydCB7IGZvcm1hdCwgdG9UaXRsZSB9IGZyb20gXCIuLi9kaWFyeS50c1wiO1xuaW1wb3J0IHsgdG9UYXNrTGluZSB9IGZyb20gXCIuLi9ob3dtL3RvVGFza0xpbmUudHNcIjtcbmltcG9ydCB7IGRlY29kZSwgbG9hZCB9IGZyb20gXCIuLi9kZXBzL3N0b3JhZ2UudHNcIjtcbmltcG9ydCB7IGlzUmVjdXJyZW5jZSwgcGFyc2UgfSBmcm9tIFwiLi4vaG93bS9wYXJzZS50c1wiO1xuaW1wb3J0IHsgS2V5LCB0b0tleSB9IGZyb20gXCIuL2tleS50c1wiO1xuZGVjbGFyZSBjb25zdCBzY3JhcGJveDogU2NyYXBib3g7XG5cbmNvbnN0IHByb2plY3QgPSBcInRha2tlci1tZW1leFwiO1xuXG4vKiog54++5Zyo5pel44G+44Gn44Gu5pel5YiK6KiY6Yyyc2hlZXTjgpLnlJ/miJDjgZnjgosgKi9cbmV4cG9ydCBjb25zdCBtYWluID0gYXN5bmMgKCk6IFByb21pc2U8KCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4+ID0+IHtcbiAgaWYgKHNjcmFwYm94LlByb2plY3QubmFtZSAhPT0gcHJvamVjdCkgcmV0dXJuICgpID0+IHt9O1xuXG4gIC8vIHNjcmFwYm94LlByb2plY3QucGFnZXPjgYznlJ/miJDjgZXjgozjgovjgb7jgaflvoXjgaRcbiAgLy8g55Sf5oiQ44GX44GfcGFnZXPjga9jYWNoZeOBl+OBpuOBiuOBj1xuICBsZXQgcGFnZXMgPSBzY3JhcGJveC5Qcm9qZWN0LnBhZ2VzO1xuICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKHBhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBwYWdlcyA9IHNjcmFwYm94LlByb2plY3QucGFnZXM7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0sIDIwMDApO1xuICB9KTtcblxuICBsZXQgc3RhcnQgPSBuZXcgRGF0ZSgyMDIzLCAwLCAyNCk7XG4gIGNvbnN0IGNhbGxiYWNrID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSB7IHN0YXJ0LCBlbmQ6IG5vdyB9O1xuICAgIC8vY29uc29sZS5kZWJ1ZyhlYWNoRGF5T2ZJbnRlcnZhbChpbnRlcnZhbCkpO1xuXG4gICAgLy8g55Sf5oiQ44GZ44KL5oyv44KK6L+U44KK44Oa44O844K444Gu5pel5LuY44Oq44K544OIXG4gICAgY29uc3QgZGF0ZXMgPSBlYWNoRGF5T2ZJbnRlcnZhbChpbnRlcnZhbCkuZmlsdGVyKChkYXRlKSA9PiB7XG4gICAgICBjb25zdCB0aXRsZSA9IHRvVGl0bGUoZGF0ZSk7XG4gICAgICBjb25zdCBwYWdlID0gcGFnZXMuZmluZCgocGFnZSkgPT4gcGFnZS50aXRsZSA9PT0gdGl0bGUpO1xuICAgICAgcmV0dXJuICFwYWdlIHx8ICFwYWdlLmV4aXN0cztcbiAgICB9KTtcbiAgICAvL2NvbnNvbGUuZGVidWcoXCJjcmVhdGUgdGhlIGZvbGxvd2luZyBkaWFyaWVzOlwiLCBkYXRlcylcblxuICAgIGlmIChkYXRlcy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IHsgcmVuZGVyLCBkaXNwb3NlIH0gPSB1c2VTdGF0dXNCYXIoKTtcbiAgICBsZXQgc29ja2V0OiBTb2NrZXQgfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgeyB0eXBlOiBcInNwaW5uZXJcIiB9LFxuICAgICAgICB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBgbG9hZCB0YXNrcyBmb3IgJHtkYXRlcy5sZW5ndGh9IGRpYXJ5IHBhZ2VzYCB9LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgdGFza3MgPSBuZXcgTWFwPEtleSwgVGFza1tdPigpO1xuICAgICAgY29uc3QgdGl0bGVMY3MgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgIGNvbnN0IGRheUtleXMgPSBkYXRlcy5tYXAoKGRhdGUpID0+IHRvS2V5KGRhdGUpKTtcblxuICAgICAgLy8gcHJvamVjdOOBq+OBguOCi+WFqOOBpuOBruOCv+OCueOCr+ODquODs+OCr+OCknRhc2sgbGluZeOBq+WkieaPm+OBl+OBpnRhc2tz44Gr5qC857SN44GZ44KLXG4gICAgICBmb3IgKGNvbnN0IHsgbGlua3MsIHByb2plY3QgfSBvZiBhd2FpdCBsb2FkKFtcInRha2tlclwiLCBcInRha2tlci1tZW1leFwiXSkpIHtcbiAgICAgICAgZm9yIChjb25zdCBsaW5rIG9mIGxpbmtzKSB7XG4gICAgICAgICAgY29uc3QgeyB0aXRsZSB9ID0gZGVjb2RlKGxpbmspO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlKHRpdGxlKTtcbiAgICAgICAgICBpZiAoIXJlc3VsdCkgY29udGludWU7XG4gICAgICAgICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIGBbLyR7cHJvamVjdH0vJHt0aXRsZX1dOiAke3Jlc3VsdC52YWx1ZS5uYW1lfSAke3Jlc3VsdC52YWx1ZS5tZXNzYWdlfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8g6YeN6KSH6Zmk5Y67XG4gICAgICAgICAgY29uc3QgdGl0bGVMYyA9IHRvVGl0bGVMYyh0aXRsZSk7XG4gICAgICAgICAgaWYgKHRpdGxlTGNzLmhhcyh0aXRsZUxjKSkgY29udGludWU7XG4gICAgICAgICAgdGl0bGVMY3MuYWRkKHRpdGxlTGMpO1xuXG4gICAgICAgICAgLy8g5LiA6YOo44Gu44K544OG44O844K/44K544Gu44K/44K544Kv44KS6Zmk5aSW44GZ44KLXG4gICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZS5mcmVzaG5lc3M/LnN0YXR1cyA9PT0gXCJkb25lXCIpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBkYXRlIG9mIGRhdGVzKSB7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gdG9UYXNrTGluZShyZXN1bHQudmFsdWUsIGRhdGUpO1xuICAgICAgICAgICAgaWYgKCF0YXNrKSBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHRvS2V5KHRhc2suYmFzZSk7XG4gICAgICAgICAgICBpZiAoIWRheUtleXMuaW5jbHVkZXMoa2V5KSkgY29udGludWU7XG4gICAgICAgICAgICB0YXNrcy5zZXQoa2V5LCBbLi4uKHRhc2tzLmdldChrZXkpID8/IFtdKSwgdGFza10pO1xuICAgICAgICAgICAgLy8g57mw44KK6L+U44GX44K/44K544Kv44Gn44Gq44GR44KM44Gw44CB5YWo44Gm44Gu5pel5LuY44KS6Kmm44GZ5b+F6KaB44GM44Gq44GEXG4gICAgICAgICAgICBpZiAoIWlzUmVjdXJyZW5jZShyZXN1bHQudmFsdWUpKSBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8g44Oa44O844K444KS5L2c44KLXG4gICAgICBzb2NrZXQgPSBhd2FpdCBtYWtlU29ja2V0KCk7XG4gICAgICBsZXQgY291bnRlciA9IDA7XG4gICAgICByZW5kZXIoXG4gICAgICAgIHsgdHlwZTogXCJzcGlubmVyXCIgfSxcbiAgICAgICAgeyB0eXBlOiBcInRleHRcIiwgdGV4dDogYGNyZWF0ZSAwLyR7ZGF0ZXMubGVuZ3RofSBkaWFyeSBwYWdlcy4uLmAgfSxcbiAgICAgICk7XG4gICAgICBmb3IgKGNvbnN0IGRhdGUgb2YgZGF0ZXMpIHtcbiAgICAgICAgY29uc3QgdGl0bGUgPSB0b1RpdGxlKGRhdGUpO1xuICAgICAgICBjb25zdCBsaW5lcyA9IHRhc2tzLmdldCh0b0tleShkYXRlKSk/Lm1hcD8uKCh0YXNrKSA9PiB0b1N0cmluZyh0YXNrKSkgPz9cbiAgICAgICAgICBbXTtcbiAgICAgICAgY29uc3QgZGF0ZVRhZyA9IGAjJHtsaWdodEZvcm1hdChkYXRlLCBcInl5eXktTU0tZGRcIil9YDtcbiAgICAgICAgY29uc3QgZGF0ZXRpbWVUYWcgPSBgIyR7bGlnaHRGb3JtYXQoZGF0ZSwgXCJ5eXl5LU1NLWRkIEhIOm1tOnNzXCIpfWA7XG5cbiAgICAgICAgYXdhaXQgcGF0Y2goXG4gICAgICAgICAgcHJvamVjdCxcbiAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAob2xkTGluZXMsIHsgcGVyc2lzdGVudCB9KSA9PiB7XG4gICAgICAgICAgICAvLyDmlrDopo/kvZzmiJDjga7jgb9cbiAgICAgICAgICAgIGlmIChwZXJzaXN0ZW50KSByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBuZXdMaW5lcyA9IFsuLi5vbGRMaW5lcy5tYXAoKGxpbmUpID0+IGxpbmUudGV4dCksIC4uLmxpbmVzXTtcbiAgICAgICAgICAgIGlmIChuZXdMaW5lcy5zb21lKChsaW5lKSA9PiBsaW5lLmluY2x1ZGVzKGRhdGVUYWcpKSkge1xuICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0KG5ld0xpbmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmb3JtYXQoWy4uLm5ld0xpbmVzLCBkYXRldGltZVRhZ10pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBzb2NrZXQgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBjb3VudGVyKys7XG4gICAgICAgIHJlbmRlcihcbiAgICAgICAgICB7IHR5cGU6IFwic3Bpbm5lclwiIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICB0ZXh0OiBgY3JlYXRlICR7Y291bnRlcn0vJHtkYXRlcy5sZW5ndGh9IGRpYXJ5IHBhZ2VzLi4uYCxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZW5kZXIoXG4gICAgICAgIHsgdHlwZTogXCJjaGVjay1jaXJjbGVcIiB9LFxuICAgICAgICB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBgY3JlYXRlZCAke2RhdGVzLmxlbmd0aH0gZGlhcnkgcGFnZXMuYCB9LFxuICAgICAgKTtcbiAgICAgIHN0YXJ0ID0gbm93O1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgeyB0eXBlOiBcImV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCIgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IGUgaW5zdGFuY2VvZiBFcnJvclxuICAgICAgICAgICAgPyBgJHtlLm5hbWV9ICR7ZS5tZXNzYWdlfWBcbiAgICAgICAgICAgIDogYFVua25vd24gZXJyb3IhIChzZWUgZGV2ZWxvcHBlciBjb25zb2xlKWAsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHNvY2tldCkgYXdhaXQgZGlzY29ubmVjdChzb2NrZXQpO1xuICAgICAgYXdhaXQgc2xlZXAoMTAwMCk7XG4gICAgICBkaXNwb3NlKCk7XG4gICAgfVxuICB9O1xuXG4gIGxldCBkb25lID0gY2FsbGJhY2soKTtcblxuICAvLyDml6Xku5jlpInmm7Tnt5rjgpLotorjgYjjgovjgZ/jgbPjgavlrp/ooYxcbiAgLy8g56uv5pyr44GM44K544Oq44O844OX44GZ44KL44Go44K/44Kk44Oe44O844GM5q2i44G+44KL44Gu44Gn44CBMTDnp5LjgZTjgajjgavjg4Hjgqfjg4Pjgq/jgZnjgotcbiAgbGV0IGNoZWNrZWQgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGlmIChpc1NhbWVEYXkoY2hlY2tlZCwgbm93KSkgcmV0dXJuO1xuICAgIGNoZWNrZWQgPSBub3c7XG4gICAgZG9uZS50aGVuKCgpID0+IGRvbmUgPSBjYWxsYmFjaygpKTtcbiAgfSwgMTAwMDApO1xuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICByZXR1cm4gZG9uZTtcbiAgfTtcbn07XG4iLCAiaW1wb3J0IFwiLi4vZm9yLWFueS1wcm9qZWN0L3NjcmlwdC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4uL2Zvci1hbnktcHJvamVjdC9zY3JpcHQudHNcIjtcbmltcG9ydCBcIi4uL05ld19CdXR0b27jgafplovjgY/jg5rjg7zjgrjjgpLlpInmm7TjgZnjgosvc2NyaXB0LmpzXCI7XG5pbXBvcnQgXCIuLi9MRVRVU19vbmxpbmVfZWRpdG9y5b2i5byP44Gr5aSJ5o+b44GX44GmY29weeOBmeOCi1BvcHVwTWVudS9zY3JpcHQuanNcIjtcbmltcG9ydCBcIi4uL+mBuOaKnuevhOWbsuOCknNwZWxsX2NoZWNr44GZ44KLUG9wdXBNZW51L3NjcmlwdC5qc1wiO1xuaW1wb3J0IFwiLi4v5paH5a2X44Kr44Km44Oz44OIXyhzY3JhcGJveCkvc2NyaXB0LmpzXCI7XG5pbXBvcnQgXCIuLi90YWtrZXI5OSUyRnRha2tlci1zY2hlZHVsZXIlMkZtb2JpbGUvc2NyaXB0LnRzXCI7XG5pbXBvcnQgXCIuLi9zY3JhcGJveC1vcGVuLWVwaXNvcGFzcy9zY3JpcHQuanNcIjtcbmltcG9ydCB7IG1haW4gfSBmcm9tIFwiLi4vdGFra2VyOTklMkZ0YWtrZXItc2NoZWR1bGVyL2F1dG8tZGlhcnkudHNcIjtcbm1haW4oKTtcbiJdLAogICJtYXBwaW5ncyI6ICI2RkFpSk8sSUFB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QUFDLE9BQU9BLEVBQUUsaUJBQWlCLGtCQUFrQixLQUFLVSxDQUFDLENBQUMsQ0FBQyxTQUFTQyxHQUFFRCxFQUFFVixFQUFFLEdBQUcsQ0FBQyxJQUFJQyxFQUFFLENBQUMsRUFBRUMsRUFBRSxFQUFFLEtBQUtBLEVBQUVRLEVBQUUsUUFBUSxDQUFDLElBQUlQLEVBQUVPLEVBQUVSLENBQUMsRUFBRUUsRUFBRSxTQUFTQyxFQUFFLENBQUMsR0FBRyxDQUFDTCxFQUFFLE1BQU0sSUFBSSxVQUFVSyxDQUFDLEVBQUVKLEVBQUUsS0FBSyxDQUFDLEtBQUssZUFBZSxNQUFNQyxFQUFFLE1BQU1RLEVBQUVSLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHQyxJQUFJLElBQUksQ0FBQ0YsRUFBRSxLQUFLLENBQUMsS0FBSyxXQUFXLE1BQU1DLEVBQUUsTUFBTVEsRUFBRVIsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsR0FBR0MsSUFBSSxLQUFLQSxJQUFJLElBQUksQ0FBQ0YsRUFBRSxLQUFLLENBQUMsS0FBSyxpQkFBaUIsTUFBTUMsRUFBRSxNQUFNUSxFQUFFUixHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHQyxJQUFJLEtBQUssQ0FBQ0YsRUFBRSxLQUFLLENBQUMsS0FBSyxlQUFlLE1BQU1DLElBQUksTUFBTVEsRUFBRVIsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsR0FBR0MsSUFBSSxJQUFJLENBQUNGLEVBQUUsS0FBSyxDQUFDLEtBQUssT0FBTyxNQUFNQyxFQUFFLE1BQU1RLEVBQUVSLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUdDLElBQUksSUFBSSxDQUFDRixFQUFFLEtBQUssQ0FBQyxLQUFLLFFBQVEsTUFBTUMsRUFBRSxNQUFNUSxFQUFFUixHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHQyxJQUFJLElBQUksQ0FBQyxJQUFJRSxFQUFFLEdBQUdPLEVBQUVWLEVBQUUsRUFBRSxLQUFLVSxFQUFFRixFQUFFLFFBQVEsQ0FBQyxJQUFJRyxFQUFFSCxFQUFFLE9BQU9FLEVBQUUsQ0FBQyxFQUFFLEdBQUdBLElBQUlWLEVBQUUsR0FBR0ksR0FBRyxLQUFLTyxDQUFDLEdBQUdELElBQUlWLEVBQUUsR0FBR0ssR0FBRyxLQUFLTSxDQUFDLEVBQUUsQ0FBQ1IsR0FBR0ssRUFBRUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDUCxFQUFFLENBQUNELEVBQUUsNkJBQTZCRixDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUNELEVBQUUsS0FBSyxDQUFDLEtBQUssT0FBTyxNQUFNQyxFQUFFLE1BQU1HLENBQUMsQ0FBQyxFQUFFSCxFQUFFVSxFQUFFLFFBQVEsQ0FBQyxHQUFHVCxJQUFJLElBQUksQ0FBQyxJQUFJRSxFQUFFLEVBQUVPLEVBQUUsR0FBR0MsRUFBRVgsRUFBRSxFQUFFWSxFQUFFLEdBQUcsR0FBR0osRUFBRUcsQ0FBQyxJQUFJLElBQUksQ0FBQ1QsRUFBRSxvQ0FBb0NTLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxLQUFLQSxFQUFFSCxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUNELEdBQUdDLEVBQUVHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQ1QsRUFBRSxzQkFBc0JNLEVBQUVHLENBQUMsQ0FBQyxRQUFRQSxDQUFDLEdBQUcsRUFBRUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHSixFQUFFRyxDQUFDLElBQUksS0FBSyxDQUFDRCxHQUFHRixFQUFFRyxHQUFHLEVBQUVILEVBQUVHLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBR0gsRUFBRUcsQ0FBQyxJQUFJLEtBQUssR0FBR1IsSUFBSUEsSUFBSSxFQUFFLENBQUNRLElBQUksS0FBSyxVQUFVSCxFQUFFRyxDQUFDLElBQUksTUFBTVIsSUFBSUssRUFBRUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDVCxFQUFFLHVDQUF1Q1MsQ0FBQyxFQUFFLEVBQUVDLEVBQUUsR0FBRyxLQUFLLENBQUNGLEdBQUdGLEVBQUVHLEdBQUcsQ0FBQyxDQUFDLEdBQUdD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Q0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPUCxJQUFJSCxHQUFHLE1BQU1FLENBQUMsSUFBSUQsQ0FBQyxLQUFLLElBQUksT0FBT0QsRUFBRWtDLEdBQUVuQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUl1QyxHQUFFLENBQUMsVUFBVSxHQUFHLFNBQVMsR0FBRyxVQUFVLEdBQUcsT0FBTyxFQUFFLEVBQUVDLEdBQUUsQ0FBQyxVQUFVLElBQUksU0FBUyxHQUFHLFVBQVUsR0FBRyxPQUFPLEVBQUUsRUFBRUMsR0FBRSxDQUFDLFVBQVUsSUFBSSxTQUFTLElBQUksVUFBVSxHQUFHLE9BQU8sRUFBRSxFQUFFLFNBQVNDLEdBQUVqQyxFQUFFVixFQUFFLENBQUMsT0FBT1UsRUFBRSxPQUFPQSxFQUFFLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQ1YsR0FBR1UsRUFBRSxPQUFPLEVBQUUsSUFBSUEsRUFBRSxDQUFDLEdBQUcsTUFBTUEsRUFBRSxDQUFDLEdBQUcsTUFBTUEsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsU0FBU2tDLEdBQUVsQyxFQUFFVixFQUFFLENBQUMsT0FBT1UsRUFBRSxXQUFXVixDQUFDLEVBQUVVLEVBQUUsVUFBVVYsRUFBRSxPQUFPVSxFQUFFLE1BQU0sRUFBRUEsQ0FBQyxDQUFDLFNBQVNtQyxHQUFHbkMsRUFBRVYsRUFBRSxDQUFDLE9BQU9VLEVBQUUsU0FBU1YsQ0FBQyxFQUFFVSxFQUFFLE9BQU8sRUFBRUEsRUFBRSxPQUFPVixFQUFFLE1BQU0sRUFBRVUsQ0FBQyxDQUFDLFNBQVNvQyxHQUFFcEMsRUFBRSxDQUFDLE1BQU0sQ0FBQ0EsR0FBR0EsRUFBRSxPQUFPLEVBQUUsR0FBR0EsRUFBRSxDQUFDLElBQUksTUFBTUEsRUFBRSxDQUFDLElBQUksTUFBTUEsRUFBRSxDQUFDLElBQUksTUFBTUEsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUlxQyxHQUFHLENBQUMsTUFBTSxPQUFPLE9BQU8sUUFBUSxLQUFLLEtBQUssRUFBRSxTQUFTQyxHQUFFdEMsRUFBRSxDQUFD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LEtBQUtULEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBS0MsR0FBRyxFQUFFLEtBQUtELEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBS0QsR0FBRyxHQUFHLEtBQUtDLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxJQUFLLEdBQUUsS0FBS1MsR0FBRyxFQUFFLEtBQUtULEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBS0MsR0FBRyxFQUFFLEtBQUtELEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBS0QsR0FBRyxHQUFHLEtBQUtDLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxJQUFLLEdBQUUsS0FBS0MsR0FBRyxFQUFFLEtBQUtELEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBS0QsR0FBRyxHQUFHLEtBQUtDLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxJQUFLLEdBQUUsS0FBS0QsR0FBRyxHQUFHLEtBQUtDLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxJQUFLLEdBQUUsTUFBTSxJQUFLLElBQUcsS0FBSyxDQUFDLENBQUMsS0FBS1YsR0FBRyxXQUFXLFFBQVEsS0FBS0EsR0FBRyxPQUFPLFNBQVMsS0FBS0EsR0FBRyxLQUFLLEdBQUcsQ0FBQ1UsR0FBR2pGLEVBQUVDLEVBQUUsQ0FBQyxPQUFPLEtBQUswRSxHQUFHLENBQUMsSUFBSyxHQUFFLE1BQU0sSUFBSyxHQUFFLEtBQUtKLEdBQUcsU0FBUyxLQUFLd0IsR0FBRyxFQUFFLE1BQU0sSUFBSyxHQUFFLE1BQU0sSUFBSyxHQUFFLEtBQUt4QixHQUFHLFNBQVMsS0FBS3dCLEdBQUcsRUFBRSxNQUFNLElBQUssR0FBRSxLQUFLeEIsR0FBRyxTQUFTLEtBQUt3QixHQUFHLEVBQUUsTUFBTSxJQUFLLEdBQUUsS0FBS3hCLEdBQUcsU0FBUyxLQUFLd0IsR0FBRyxFQUFFLE1BQU0sSUFBSyxHQUFFLEtBQUt4QixHQUFHLEtBQUssS0FBS3dCLEdBQUcsRUFBRSxNQUFNLElBQUssR0FBRSxLQUFLeEIsR0FBRyxTQUFTLEtBQUt3QixHQUFHLEVBQUUsTUFBTSxJQUFLLEdBQUUs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QUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsU0FBU3FHLEdBQUU1RixFQUFFVixFQUFFLENBQUMsT0FBT0EsRUFBRXVHLEdBQUU3RixDQUFDLEVBQUVBLENBQUMsQ0FBQyxTQUFTOEYsR0FBRTlGLEVBQUVWLEVBQUVDLEVBQUUsQ0FBQyxJQUFJQyxFQUFFLEdBQUcsT0FBT0YsRUFBRSxTQUFTLFNBQVMsR0FBRyxDQUFDRSxFQUFFLElBQUksSUFBSUYsRUFBRSxPQUFPLEVBQUVBLEVBQUUsV0FBVyxTQUFTVSxFQUFFLFNBQVM0RixHQUFFcEcsRUFBRSxTQUFTLFVBQVUsRUFBRUEsRUFBRSxTQUFTLE9BQU8sQ0FBQyxFQUFFRCxDQUFDLEdBQUcsQ0FBQ0EsR0FBR0QsRUFBRSxXQUFXLFFBQVFBLEVBQUUsV0FBVyxRQUFRQSxFQUFFLE9BQU8sUUFBUUEsRUFBRSxXQUFXLFNBQVNVLEVBQUUsU0FBUzRGLEdBQUVwRyxFQUFFLFNBQVNELENBQUMsR0FBRyxDQUFDQSxHQUFHRCxFQUFFLFdBQVcsUUFBUUEsRUFBRSxXQUFXLFFBQVFBLEVBQUUsT0FBTyxRQUFRQSxFQUFFLFdBQVcsUUFBUUEsRUFBRSxXQUFXLFNBQVNVLEVBQUUsU0FBUzRGLEdBQUVwRyxFQUFFLFNBQVNELENBQUMsR0FBR0QsRUFBRSxXQUFXLFFBQVFBLEVBQUUsV0FBVyxTQUFTVSxFQUFFLFNBQVM0RixHQUFFcEcsRUFBRSxTQUFTRCxDQUFDLEdBQUdELEVBQUUsV0FBVyxRQUFRQSxFQUFFLFdBQVcsUUFBUUEsRUFBRSxPQUFPLFNBQVNVLEVBQUUsS0FBSzRGLEdBQUVwRyxFQUFFLEtBQUtELENBQUMsR0FBR0QsRUFBRSxXQUFXLFFBQVFBLEVBQUUsV0FBVyxRQUFRQSxFQUFFLE9BQU8sUUFBUUEsRUFBRSxXQUFXLFNBQVNVLEVBQUUsU0FBUzRGLEdBQUVwRyxFQUFFLFNBQVNELENBQUMsR0FBR0QsRUFBRSxXQUFXLFFBQVFBLEVBQUUsV0FBVyxRQUFRQSxFQUFFLE9BQU8sUUFBUUEsRUFBRSxXQUFXLFFBQVFBLEVBQUUsU0FBUyxTQUFTVSxF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RUFDdkIsQ0FBRSxLQUFNLE9BQVEsS0FBTSxXQUFXTixFQUFNLE1BQU0sZUFBZ0IsQ0FDL0QsRUFDQUgsRUFBUUUsQ0FDVixPQUFTd0MsRUFBWSxDQUNuQmpDLEVBQ0UsQ0FBRSxLQUFNLHNCQUF1QixFQUMvQixDQUNFLEtBQU0sT0FDTixLQUFNaUMsYUFBYSxNQUNmLEdBQUdBLEVBQUUsSUFBSSxJQUFJQSxFQUFFLE9BQU8sR0FDdEIseUNBQ04sQ0FDRixFQUNBLFFBQVEsTUFBTUEsQ0FBQyxDQUNqQixRQUFFLENBQ0k5QixHQUFRLE1BQU0rQixHQUFXL0IsQ0FBTSxFQUNuQyxNQUFNZ0MsR0FBTSxHQUFJLEVBQ2hCbEMsRUFBUSxDQUNWLENBQ0YsRUFFSW1DLEVBQU81QyxFQUFTLEVBSWhCNkMsRUFBVSxJQUFJLEtBQ1ovQyxFQUFRLFlBQVksSUFBTSxDQUM5QixJQUFNRyxFQUFNLElBQUksS0FDWjZDLEdBQVVELEVBQVM1QyxDQUFHLElBQzFCNEMsRUFBVTVDLEVBQ1YyQyxFQUFLLEtBQUssSUFBTUEsRUFBTzVDLEVBQVMsQ0FBQyxFQUNuQyxFQUFHLEdBQUssRUFFUixNQUFPLEtBQ0wsYUFBYUYsQ0FBSyxFQUNYOEMsRUFFWCxFQzFLQUcsR0FBSyIsCiAgIm5hbWVzIjogWyJpc1BhZ2VDb21taXRFcnJvciIsICJlcnJvciIsICJwYWdlQ29tbWl0RXJyb3JOYW1lcyIsICJzb2NrZXRJTyIsICJzb2NrZXQiLCAiaW1wb3J0U29ja2V0SU8iLCAicmVzb2x2ZSIsICJyZWplY3QiLCAib25EaXNjb25uZWN0IiwgInJlYXNvbiIsICJ2ZXJzaW9uIiwgInVybCIsICJlcnJvciIsICJzY3JpcHQiLCAiZSIsICJpZCIsICJ3cmFwIiwgInNvY2tldCIsICJ0aW1lb3V0IiwgInJlcXVlc3QiLCAiZXZlbnQiLCAiZGF0YSIsICJpZCIsICJyZXNvbHZlIiwgInJlamVjdCIsICJvbkRpc2Nvbm5lY3QiLCAibWVzc2FnZSIsICJyZXNwb25zZSIsICJpc1BhZ2VDb21taXRFcnJvciIsICJldmVudHMiLCAiX3Jlc29sdmUiLCAid2FpdEZvckV2ZW50IiwgInJlcyIsICJtYWtlU29ja2V0IiwgInNvY2tldElPIiwgImNvbm5lY3QiLCAic29ja2V0IiwgIndhaXRpbmciLCAicmVzb2x2ZSIsICJkaXNjb25uZWN0IiwgIm9uRGlzY29ubmVjdCIsICJyZWFzb24iLCAiZGlmZiIsICJsZWZ0IiwgInJpZ2h0IiwgInJldmVyc2VkIiwgImEiLCAiYiIsICJvZmZzZXQiLCAiTUFYU0laRSIsICJwYXRoIiwgInBhdGhwb3MiLCAic25ha2UiLCAiayIsICJwIiwgInBwIiwgInkiLCAieCIsICJmcCIsICJkZWx0YSIsICJlcGMiLCAiciIsICJ4SW5kZXgiLCAieUluZGV4IiwgInJldmVyc2UiLCAidG9FeHRlbmRlZENoYW5nZXMiLCAiY2hhbmdlcyIsICJhZGRlZExpc3QiLCAiZGVsZXRlZExpc3QiLCAiZmx1c2giLCAiaSIsICJtYWtlUmVwbGFjZWQiLCAiY2hhbmdlIiwgImxpc3QiLCAic2V0RGVmYXVsdHMiLCAib3B0aW9ucyIsICJmZXRjaCIsICJob3N0TmFtZSIsICJyZXN0IiwgImlzTm9uZSIsICJ2YWx1ZSIsICJpc1N0cmluZyIsICJpc051bWJlciIsICJpc09iamVjdCIsICJ2YWx1ZSIsICJpc0Vycm9yTGlrZSIsICJlIiwgInRyeVRvRXJyb3JMaWtlIiwgImpzb24iLCAiZTIiLCAiVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IiLCAiX1VuZXhwZWN0ZWRSZXNwb25zZUVycm9yIiwgInJlc3BvbnNlIiwgIm1ha2VFcnJvciIsICJyZXMiLCAidGV4dCIsICJ2YWx1ZSIsICJ0cnlUb0Vycm9yTGlrZSIsICJnZXRQcm9maWxlIiwgImluaXQiLCAic2lkIiwgImhvc3ROYW1lIiwgImZldGNoIiwgInNldERlZmF1bHRzIiwgInJlcXVlc3QiLCAiY29va2llIiwgInJlc3BvbnNlIiwgIlVuZXhwZWN0ZWRSZXNwb25zZUVycm9yIiwgImNvb2tpZSIsICJzaWQiLCAiZ2V0Q1NSRlRva2VuIiwgImluaXQiLCAiZ2V0UHJvZmlsZSIsICJnZXRQcm9qZWN0X3RvUmVxdWVzdCIsICJwcm9qZWN0IiwgImluaXQiLCAic2lkIiwgImhvc3ROYW1lIiwgInNldERlZmF1bHRzIiwgImNvb2tpZSIsICJnZXRQcm9qZWN0X2Zyb21SZXNwb25zZSIsICJyZXMiLCAibWFrZUVycm9yIiwgImdldFByb2plY3QiLCAiZmV0Y2giLCAicmVxIiwgIkxpc3RQcm9qZWN0X3RvUmVxdWVzdCIsICJwcm9qZWN0SWRzIiwgInBhcmFtIiwgImlkIiwgIkxpc3RQcm9qZWN0X2Zyb21SZXNwb25zZSIsICJsaXN0UHJvamVjdHMiLCAidXNlcklkIiwgImdldFVzZXJJZCIsICJ1c2VyIiwgImdldFByb2ZpbGUiLCAicHJvamVjdE1hcCIsICJnZXRQcm9qZWN0SWQiLCAicHJvamVjdCIsICJjYWNoZWRJZCIsICJyZXN1bHQiLCAiZ2V0UHJvamVjdCIsICJuYW1lIiwgIm1lc3NhZ2UiLCAiaWQiLCAiemVybyIsICJuIiwgImNyZWF0ZU5ld0xpbmVJZCIsICJ0aW1lIiwgInJhbmQiLCAiZGlmZlRvQ2hhbmdlcyIsICJsZWZ0IiwgInJpZ2h0IiwgInVzZXJJZCIsICJidWlsZFNFUyIsICJkaWZmIiwgInRleHQiLCAibGluZU5vIiwgImxpbmVJZCIsICJjaGFuZ2UiLCAidG9FeHRlbmRlZENoYW5nZXMiLCAiY3JlYXRlTmV3TGluZUlkIiwgImNvbnZlcnRUb1RpdGxlIiwgInBhY2siLCAiY29udmVydFRvQ29kZUJsb2NrIiwgImhlYWQiLCAiYm9keSIsICJpbmRlbnQiLCAidGV4dCIsICJmaWxlTmFtZSIsICJyb3ciLCAiY3JlYXRlTm9kZVBhcnNlciIsICJub2RlQ3JlYXRvciIsICJwYXJzZU9uTmVzdGVkIiwgInBhcnNlT25RdW90ZWQiLCAicGF0dGVybnMiLCAib3B0cyIsICJuZXh0IiwgInAiLCAibCIsICJtIiwgInUiLCAiZiIsICJOIiwgIl9hIiwgIl9iIiwgInBhdHRlcm4iLCAibWF0Y2giLCAibGVmdCIsICJyaWdodCIsICJfZCIsICJfYyIsICJub2RlIiwgIl9lIiwgImNvbnZlcnRUb05vZGVzIiwgIl9mIiwgImNyZWF0ZVBsYWluTm9kZSIsICJyYXciLCAiUGxhaW5Ob2RlUGFyc2VyIiwgInF1b3RlUmVnRXhwIiwgImNyZWF0ZVF1b3RlTm9kZSIsICJRdW90ZU5vZGVQYXJzZXIiLCAiaGVscGZlZWxSZWdFeHAiLCAiY3JlYXRlSGVscGZlZWxOb2RlIiwgIkhlbHBmZWVsTm9kZVBhcnNlciIsICJzdHJvbmdJbWFnZVJlZ0V4cCIsICJzdHJvbmdHeWF6b0ltYWdlUmVnRXhwIiwgImNyZWF0ZVN0cm9uZ0ltYWdlTm9kZSIsICJzcmMiLCAiaXNHeWF6b0ltYWdlIiwgIlN0cm9uZ0ltYWdlTm9kZVBhcnNlciIsICJpY29uUmVnRXhwIiwgImdlbmVyYXRlSWNvbk5vZGVDcmVhdG9yIiwgInR5cGUiLCAidGFyZ2V0IiwgImluZGV4IiwgInBhdGgiLCAicGF0aFR5cGUiLCAibnVtU3RyIiwgIm51bSIsICJjcmVhdGVJY29uTm9kZSIsICJJY29uTm9kZVBhcnNlciIsICJzdHJvbmdJY29uUmVnRXhwIiwgImNyZWF0ZVN0cm9uZ0ljb25Ob2RlIiwgIlN0cm9uZ0ljb25Ob2RlUGFyc2VyIiwgInN0cm9uZ1JlZ0V4cCIsICJjcmVhdGVTdHJvbmdOb2RlIiwgIlN0cm9uZ05vZGVQYXJzZXIiLCAiZm9ybXVsYVdpdGhUYWlsSGFsZlNwYWNlUmVnRXhwIiwgImZvcm11bGFSZWdFeHAiLCAiY3JlYXRlRm9ybXVsYU5vZGUiLCAiRm9ybXVsYU5vZGVQYXJzZXIiLCAiZGVjb3JhdGlvblJlZ0V4cCIsICJjcmVhdGVEZWNvcmF0aW9uTm9kZSIsICJzZXBhcmF0b3JJbmRleCIsICJyYXdEZWNvcyIsICJkZWNvU2V0IiwgImFzdGVyaXNrQ291bnQiLCAiRGVjb3JhdGlvbk5vZGVQYXJzZXIiLCAiY29kZVJlZ0V4cCIsICJjcmVhdGVDb2RlTm9kZSIsICJDb2RlTm9kZVBhcnNlciIsICJjb21tYW5kTGluZVJlZ0V4cCIsICJjcmVhdGVDb21tYW5kTGluZU5vZGUiLCAibyIsICJzeW1ib2wiLCAiQ29tbWFuZExpbmVOb2RlUGFyc2VyIiwgImJsYW5rUmVnRXhwIiwgImNyZWF0ZUJsYW5rTm9kZSIsICJCbGFua05vZGVQYXJzZXIiLCAic3JjRmlyc3RTdHJvbmdJbWFnZVJlZ0V4cCIsICJsaW5rRmlyc3RTdHJvbmdJbWFnZVJlZ0V4cCIsICJzcmNGaXJzdFN0cm9uZ0d5YXpvSW1hZ2VSZWdFeHAiLCAibGlua0ZpcnN0U3Ryb25nR3lhem9JbWFnZVJlZ0V4cCIsICJpc0ltYWdlVXJsIiwgImlzR3lhem9JbWFnZVVybCIsICJjcmVhdGVJbWFnZU5vZGUiLCAiZmlyc3QiLCAic2Vjb25kIiwgImxpbmsiLCAiSW1hZ2VOb2RlUGFyc2VyIiwgImhyZWZGaXJzdFVybFJlZ0V4cCIsICJjb250ZW50Rmlyc3RVcmxSZWdFeHAiLCAiYnJhY2tldGVkVXJsUmVnRXhwIiwgImh0dHBSZWdFeHAiLCAiY3JlYXRlRXh0ZXJuYWxMaW5rTm9kZSIsICJpbm5lciIsICJpc0hyZWZGaXJzdCIsICJjb250ZW50IiwgIkV4dGVybmFsTGlua05vZGVQYXJzZXIiLCAicGxhY2VGaXJzdEdvb2dsZU1hcFJlZ0V4cCIsICJjb29yZEZpcnN0R29vZ2xlTWFwUmVnRXhwIiwgInBhcnNlQ29vcmRpbmF0ZSIsICJmb3JtYXQiLCAibGF0IiwgImxuZyIsICJ6IiwgImxhdGl0dWRlIiwgImxvbmdpdHVkZSIsICJ6b29tIiwgImNyZWF0ZUdvb2dsZU1hcE5vZGUiLCAiaXNDb29yZEZpcnN0IiwgImNvb3JkIiwgInBsYWNlIiwgInVybCIsICJHb29nbGVNYXBOb2RlUGFyc2VyIiwgImludGVybmFsTGlua1JlZ0V4cCIsICJjcmVhdGVJbnRlcm5hbExpbmtOb2RlIiwgImhyZWYiLCAiSW50ZXJuYWxMaW5rTm9kZVBhcnNlciIsICJoYXNoVGFnUmVnRXhwIiwgImNyZWF0ZUhhc2hUYWdOb2RlIiwgInNwYWNlIiwgInRhZyIsICJIYXNoVGFnTm9kZVBhcnNlciIsICJudW1iZXJMaXN0UmVnRXhwIiwgImNyZWF0ZU51bWJlckxpc3ROb2RlIiwgInJhd051bWJlciIsICJudW1iZXIiLCAiTnVtYmVyTGlzdE5vZGVQYXJzZXIiLCAiRmFsc3lFbGltaW5hdG9yIiwgIl8iLCAiciIsICJjb21iaW5lTm9kZVBhcnNlcnMiLCAicGFyc2VycyIsICJhY2MiLCAicGFyc2VyIiwgImNvbnZlcnRUb1RhYmxlIiwgImJsb2NrIiwgImNvbnZlcnRUb0xpbmUiLCAiY29udmVydFRvQmxvY2siLCAicGFyc2VUb1Jvd3MiLCAiaW5wdXQiLCAibiIsICJpc0NoaWxkUm93T2ZQYWNrIiwgInBhY2tpbmciLCAicGFja3MiLCAibGFzdFBhY2siLCAicGFja1Jvd3MiLCAicm93cyIsICJ0aXRsZSIsICJwYXJzZSIsICJnZXRUaXRsZSIsICJ0IiwgInRvVGl0bGVMYyIsICJ0ZXh0IiwgInJldmVydFRpdGxlTGMiLCAiZW5jb2RlVGl0bGVVUkkiLCAidGl0bGUiLCAiY2hhciIsICJpbmRleCIsICJub0VuY29kZUNoYXJzIiwgIm5vVGFpbENoYXJzIiwgInlvdXR1YmVSZWdFeHAiLCAieW91dHViZURvdEJlUmVnRXhwIiwgInlvdXR1YmVTaG9ydFJlZ0V4cCIsICJ5b3V0dWJlTGlzdFJlZ0V4cCIsICJwYXJzZVlvdXR1YmUiLCAidXJsIiwgInBhcmFtcyIsICJ2aWRlb0lkIiwgIm1hdGNoZXMiLCAibGlzdElkIiwgImZpbmRNZXRhZGF0YSIsICJ0ZXh0IiwgImJsb2NrcyIsICJxZSIsICJibG9jayIsICJsaW5rc0xjIiwgImxpbmtzIiwgInByb2plY3RMaW5rc0xjIiwgInByb2plY3RMaW5rcyIsICJpY29uc0xjIiwgImljb25zIiwgImltYWdlIiwgImZpbGVzIiwgImhlbHBmZWVscyIsICJmaWxlVXJsUGF0dGVybiIsICJsb29rdXAiLCAibm9kZSIsICJ0b1RpdGxlTGMiLCAibGluayIsICJjdXRJZCIsICJwcm9wcyIsICJwYXJzZVlvdXR1YmUiLCAiZmlsZUlkIiwgIm4iLCAiaW5mb2JveERlZmluaXRpb24iLCAicm93IiwgIm5vZGVzIiwgImNlbGwiLCAiZ2V0SGVscGZlZWxzIiwgImxpbmVzIiwgImlzU2FtZUFycmF5IiwgImEiLCAiYiIsICJ4IiwgIm1ha2VDaGFuZ2VzIiwgImJlZm9yZSIsICJhZnRlciIsICJ1c2VySWQiLCAiYWZ0ZXJfIiwgInRleHQiLCAiY2hhbmdlIiwgImRpZmZUb0NoYW5nZXMiLCAibGVmdERlc2NyaXB0aW9ucyIsICJsaW5lIiwgInJpZ2h0RGVzY3JpcHRpb25zIiwgImxpbmtzIiwgInByb2plY3RMaW5rcyIsICJpY29ucyIsICJpbWFnZSIsICJmaWxlcyIsICJoZWxwZmVlbHMiLCAiaW5mb2JveERlZmluaXRpb24iLCAiZmluZE1ldGFkYXRhIiwgImlzU2FtZUFycmF5IiwgImdldEhlbHBmZWVscyIsICJnZXRQYWdlX3RvUmVxdWVzdCIsICJwcm9qZWN0IiwgInRpdGxlIiwgIm9wdGlvbnMiLCAic2lkIiwgImhvc3ROYW1lIiwgImZvbGxvd1JlbmFtZSIsICJwcm9qZWN0cyIsICJzZXREZWZhdWx0cyIsICJwYXJhbXMiLCAiaWQiLCAicGF0aCIsICJlbmNvZGVUaXRsZVVSSSIsICJjb29raWUiLCAiZ2V0UGFnZV9mcm9tUmVzcG9uc2UiLCAicmVzIiwgIm1ha2VFcnJvciIsICJnZXRQYWdlIiwgImZldGNoIiwgInJlcSIsICJsaXN0UGFnZXNfdG9SZXF1ZXN0IiwgInNvcnQiLCAibGltaXQiLCAic2tpcCIsICJsaXN0UGFnZXNfZnJvbVJlc3BvbnNlIiwgImxpc3RQYWdlcyIsICJwdWxsIiwgInByb2plY3QiLCAidGl0bGUiLCAicmVzdWx0IiwgImdldFBhZ2UiLCAic2xlZXAiLCAibWlsbGlzZWNvbmRzIiwgInJlc29sdmUiLCAicHVzaCIsICJwcm9qZWN0IiwgInRpdGxlIiwgIm1ha2VDb21taXQiLCAib3B0aW9ucyIsICJpbmplY3RlZFNvY2tldCIsICJzb2NrZXQiLCAic29ja2V0SU8iLCAiY29ubmVjdCIsICJwYWdlIiwgInB1bGwiLCAiZ2V0UHJvamVjdElkIiwgImdldFVzZXJJZCIsICJwYWdlXyIsICJwcm9qZWN0SWQiLCAidXNlcklkIiwgInJlcXVlc3QiLCAid3JhcCIsICJhdHRlbXB0cyIsICJjaGFuZ2VzIiwgInJlYXNvbiIsICJwZW5kaW5nIiwgImRhdGEiLCAicmVzdWx0IiwgIm5hbWUiLCAiZXJyb3IiLCAic2xlZXAiLCAiZGlzY29ubmVjdCIsICJzdWdnZXN0VW5EdXBUaXRsZSIsICJ0aXRsZSIsICJtYXRjaGVkIiwgInRpdGxlXyIsICJudW0iLCAicGF0Y2giLCAicHJvamVjdCIsICJ0aXRsZSIsICJ1cGRhdGUiLCAib3B0aW9ucyIsICJwdXNoIiwgInBhZ2UiLCAiYXR0ZW1wdHMiLCAicHJldiIsICJyZWFzb24iLCAiZmFsbGJhY2tUaXRsZSIsICJzdWdnZXN0VW5EdXBUaXRsZSIsICJjaGFuZ2UiLCAicGVuZGluZyIsICJuZXdMaW5lcyIsICJtYWtlQ2hhbmdlcyIsICJkZWxldGVQYWdlIiwgInByb2plY3QiLCAidGl0bGUiLCAib3B0aW9ucyIsICJwdXNoIiwgInBhZ2UiLCAiZ2V0VGFibGVfdG9SZXF1ZXN0IiwgInByb2plY3QiLCAidGl0bGUiLCAiZmlsZW5hbWUiLCAib3B0aW9ucyIsICJzaWQiLCAiaG9zdE5hbWUiLCAic2V0RGVmYXVsdHMiLCAicGF0aCIsICJlbmNvZGVUaXRsZVVSSSIsICJjb29raWUiLCAiZ2V0VGFibGVfZnJvbVJlc3BvbnNlIiwgInJlcyIsICJtYWtlRXJyb3IiLCAiZ2V0VGFibGUiLCAiZmV0Y2giLCAicmVxIiwgInJlcGxhY2VMaW5rcyIsICJwcm9qZWN0IiwgImZyb20iLCAidG8iLCAiaW5pdCIsICJzaWQiLCAiaG9zdE5hbWUiLCAiZmV0Y2giLCAiY3NyZiIsICJzZXREZWZhdWx0cyIsICJyZXEiLCAiZ2V0Q1NSRlRva2VuIiwgImNvb2tpZSIsICJyZXMiLCAibWFrZUVycm9yIiwgIm1lc3NhZ2UiLCAiZ2V0TGlua3MiLCAicHJvamVjdCIsICJvcHRpb25zIiwgInNpZCIsICJob3N0TmFtZSIsICJmZXRjaCIsICJmb2xsb3dpbmdJZCIsICJzZXREZWZhdWx0cyIsICJyZXEiLCAiY29va2llIiwgInJlcyIsICJtYWtlRXJyb3IiLCAic2VhcmNoRm9yUGFnZXMiLCAicXVlcnkiLCAicHJvamVjdCIsICJpbml0IiwgInNpZCIsICJob3N0TmFtZSIsICJmZXRjaCIsICJzZXREZWZhdWx0cyIsICJyZXEiLCAiY29va2llIiwgInJlcyIsICJtYWtlRXJyb3IiLCAiZ2V0V2ViUGFnZVRpdGxlIiwgInVybCIsICJpbml0IiwgInNpZCIsICJob3N0TmFtZSIsICJmZXRjaCIsICJjc3JmIiwgInNldERlZmF1bHRzIiwgInJlcSIsICJnZXRDU1JGVG9rZW4iLCAiY29va2llIiwgInJlcyIsICJtYWtlRXJyb3IiLCAidGl0bGUiLCAiZ2V0VHdlZXRJbmZvIiwgInVybCIsICJpbml0IiwgInNpZCIsICJob3N0TmFtZSIsICJmZXRjaCIsICJjc3JmIiwgInNldERlZmF1bHRzIiwgInJlcSIsICJnZXRDU1JGVG9rZW4iLCAiY29va2llIiwgInJlcyIsICJtYWtlRXJyb3IiLCAiZ2V0R3lhem9Ub2tlbiIsICJpbml0IiwgInNpZCIsICJob3N0TmFtZSIsICJneWF6b1RlYW1zTmFtZSIsICJzZXREZWZhdWx0cyIsICJyZXEiLCAiY29va2llIiwgInJlcyIsICJtYWtlRXJyb3IiLCAidG9rZW4iLCAiZ2V0Q29kZUJsb2NrX3RvUmVxdWVzdCIsICJwcm9qZWN0IiwgInRpdGxlIiwgImZpbGVuYW1lIiwgIm9wdGlvbnMiLCAic2lkIiwgImhvc3ROYW1lIiwgInNldERlZmF1bHRzIiwgInBhdGgiLCAiZW5jb2RlVGl0bGVVUkkiLCAiY29va2llIiwgImdldENvZGVCbG9ja19mcm9tUmVzcG9uc2UiLCAicmVzIiwgIm1ha2VFcnJvciIsICJnZXRDb2RlQmxvY2siLCAiZmV0Y2giLCAicmVxIiwgImhleFRhYmxlIiwgImVuY29kZSIsICJzcmMiLCAiZHN0IiwgImkiLCAidiIsICJoZXhUYWJsZSIsICJUWVBFX0VSUk9SX01TRyIsICJCTE9DS19TSVpFIiwgIk1kNSIsICIjYSIsICIjYiIsICIjYyIsICIjZCIsICIjYmxvY2siLCAiI3BvcyIsICIjbjAiLCAiI24xIiwgIiNhZGRMZW5ndGgiLCAibGVuIiwgIm4wIiwgIiNoYXNoIiwgImJsb2NrIiwgImEiLCAiYiIsICJjIiwgImQiLCAiYmxrIiwgImkiLCAicm9sMzIiLCAieCIsICJuIiwgIngwIiwgIngxIiwgIngyIiwgIngzIiwgIng0IiwgIng1IiwgIng2IiwgIng3IiwgIng4IiwgIng5IiwgInhhIiwgInhiIiwgInhjIiwgInhkIiwgInhlIiwgInhmIiwgImRhdGEiLCAibXNnIiwgInBvcyIsICJmcmVlIiwgInBhZExlbiIsICJwYWQiLCAibjEiLCAiaGFzaCIsICJoYXNoVmlldyIsICJmb3JtYXQiLCAiZW5jb2RlIiwgImRhdGFTdHJpbmciLCAidXBsb2FkVG9HQ1MiLCAiZmlsZSIsICJwcm9qZWN0SWQiLCAib3B0aW9ucyIsICJtZDUiLCAiTWQ1IiwgInJlcyIsICJ1cGxvYWRSZXF1ZXN0IiwgInJlczIiLCAidXBsb2FkIiwgInZlcmlmeSIsICJpbml0IiwgInNpZCIsICJob3N0TmFtZSIsICJmZXRjaCIsICJjc3JmIiwgInNldERlZmF1bHRzIiwgImJvZHkiLCAidG9rZW4iLCAiZ2V0Q1NSRlRva2VuIiwgInJlcSIsICJjb29raWUiLCAibWFrZUVycm9yIiwgInNpZ25lZFVybCIsICJVbmV4cGVjdGVkUmVzcG9uc2VFcnJvciIsICJmaWxlSWQiLCAic3luYyIsICJpbml0IiwgInRpdGxlIiwgImZpbGVuYW1lIiwgInJlcyIsICJnZXRDb2RlQmxvY2siLCAianNvbiIsICJwcmV2IiwgImtleXMiLCAibmV3RGF0YSIsICJrZXkiLCAiYSIsICJiIiwgIm5ld1RleHQiLCAicGF0Y2giLCAic2xpY2UiLCAib3B0aW9ucyIsICJ2bm9kZUlkIiwgImlzVmFsaWRFbGVtZW50IiwgInJlcmVuZGVyUXVldWUiLCAicHJldkRlYm91bmNlIiwgImRlZmVyIiwgImRlcHRoU29ydCIsICJldmVudENsb2NrIiwgImV2ZW50UHJveHkiLCAiZXZlbnRQcm94eUNhcHR1cmUiLCAiaSIsICJFTVBUWV9PQkoiLCAiRU1QVFlfQVJSIiwgIklTX05PTl9ESU1FTlNJT05BTCIsICJpc0FycmF5IiwgIkFycmF5IiwgImFzc2lnbiIsICJvYmoiLCAicHJvcHMiLCAicmVtb3ZlTm9kZSIsICJub2RlIiwgInBhcmVudE5vZGUiLCAicmVtb3ZlQ2hpbGQiLCAiY3JlYXRlRWxlbWVudCIsICJ0eXBlIiwgImNoaWxkcmVuIiwgImtleSIsICJyZWYiLCAibm9ybWFsaXplZFByb3BzIiwgImFyZ3VtZW50cyIsICJsZW5ndGgiLCAiY2FsbCIsICJkZWZhdWx0UHJvcHMiLCAiY3JlYXRlVk5vZGUiLCAib3JpZ2luYWwiLCAidm5vZGUiLCAiX19rIiwgIl9fIiwgIl9fYiIsICJfX2UiLCAiX19kIiwgIl9fYyIsICJjb25zdHJ1Y3RvciIsICJfX3YiLCAiX19pIiwgIl9fdSIsICJGcmFnbWVudCIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJCYXNlQ29tcG9uZW50IiwgImNvbnRleHQiLCAidGhpcyIsICJnZXREb21TaWJsaW5nIiwgInZub2RlIiwgImNoaWxkSW5kZXgiLCAiX18iLCAiX19pIiwgInNpYmxpbmciLCAiX19rIiwgImxlbmd0aCIsICJfX2UiLCAidHlwZSIsICJ1cGRhdGVQYXJlbnREb21Qb2ludGVycyIsICJpIiwgImNoaWxkIiwgIl9fYyIsICJiYXNlIiwgImVucXVldWVSZW5kZXIiLCAiYyIsICJfX2QiLCAicmVyZW5kZXJRdWV1ZSIsICJwdXNoIiwgInByb2Nlc3MiLCAiX19yIiwgInByZXZEZWJvdW5jZSIsICJvcHRpb25zIiwgImRlYm91bmNlUmVuZGVyaW5nIiwgImRlZmVyIiwgInJlbmRlclF1ZXVlTGVuZ3RoIiwgImNvbXBvbmVudCIsICJuZXdWTm9kZSIsICJvbGRWTm9kZSIsICJvbGREb20iLCAiY29tbWl0UXVldWUiLCAicmVmUXVldWUiLCAic29ydCIsICJkZXB0aFNvcnQiLCAic2hpZnQiLCAiX192IiwgIl9fUCIsICJhc3NpZ24iLCAiZGlmZiIsICJfX24iLCAibmFtZXNwYWNlVVJJIiwgIl9fdSIsICJjb21taXRSb290IiwgImRpZmZDaGlsZHJlbiIsICJwYXJlbnREb20iLCAicmVuZGVyUmVzdWx0IiwgIm5ld1BhcmVudFZOb2RlIiwgIm9sZFBhcmVudFZOb2RlIiwgImdsb2JhbENvbnRleHQiLCAibmFtZXNwYWNlIiwgImV4Y2Vzc0RvbUNoaWxkcmVuIiwgImlzSHlkcmF0aW5nIiwgImNoaWxkVk5vZGUiLCAibmV3RG9tIiwgImZpcnN0Q2hpbGREb20iLCAib2xkQ2hpbGRyZW4iLCAiRU1QVFlfQVJSIiwgIm5ld0NoaWxkcmVuTGVuZ3RoIiwgImNvbnN0cnVjdE5ld0NoaWxkcmVuQXJyYXkiLCAiRU1QVFlfT0JKIiwgInJlZiIsICJhcHBseVJlZiIsICJpbnNlcnQiLCAibmV4dFNpYmxpbmciLCAic2tld2VkSW5kZXgiLCAibWF0Y2hpbmdJbmRleCIsICJvbGRDaGlsZHJlbkxlbmd0aCIsICJyZW1haW5pbmdPbGRDaGlsZHJlbiIsICJza2V3IiwgImNvbnN0cnVjdG9yIiwgIlN0cmluZyIsICJjcmVhdGVWTm9kZSIsICJpc0FycmF5IiwgIl9fYiIsICJrZXkiLCAiZmluZE1hdGNoaW5nSW5kZXgiLCAidW5tb3VudCIsICJwYXJlbnRWTm9kZSIsICJjb250YWlucyIsICJpbnNlcnRCZWZvcmUiLCAibm9kZVR5cGUiLCAiZmluZE1hdGNoaW5nSW5kZXgiLCAiY2hpbGRWTm9kZSIsICJvbGRDaGlsZHJlbiIsICJza2V3ZWRJbmRleCIsICJyZW1haW5pbmdPbGRDaGlsZHJlbiIsICJrZXkiLCAidHlwZSIsICJ4IiwgInkiLCAib2xkVk5vZGUiLCAiX191IiwgImxlbmd0aCIsICJzZXRTdHlsZSIsICJzdHlsZSIsICJ2YWx1ZSIsICJzZXRQcm9wZXJ0eSIsICJJU19OT05fRElNRU5TSU9OQUwiLCAidGVzdCIsICJkb20iLCAibmFtZSIsICJvbGRWYWx1ZSIsICJuYW1lc3BhY2UiLCAidXNlQ2FwdHVyZSIsICJvIiwgImNzc1RleHQiLCAicmVwbGFjZSIsICJ0b0xvd2VyQ2FzZSIsICJzbGljZSIsICJsIiwgIl9hdHRhY2hlZCIsICJldmVudENsb2NrIiwgImFkZEV2ZW50TGlzdGVuZXIiLCAiZXZlbnRQcm94eUNhcHR1cmUiLCAiZXZlbnRQcm94eSIsICJyZW1vdmVFdmVudExpc3RlbmVyIiwgImUiLCAicmVtb3ZlQXR0cmlidXRlIiwgInNldEF0dHJpYnV0ZSIsICJjcmVhdGVFdmVudFByb3h5IiwgInRoaXMiLCAiZXZlbnRIYW5kbGVyIiwgIl9kaXNwYXRjaGVkIiwgIm9wdGlvbnMiLCAiZXZlbnQiLCAiZGlmZiIsICJwYXJlbnREb20iLCAibmV3Vk5vZGUiLCAiZ2xvYmFsQ29udGV4dCIsICJleGNlc3NEb21DaGlsZHJlbiIsICJjb21taXRRdWV1ZSIsICJvbGREb20iLCAiaXNIeWRyYXRpbmciLCAicmVmUXVldWUiLCAidG1wIiwgImMiLCAiaXNOZXciLCAib2xkUHJvcHMiLCAib2xkU3RhdGUiLCAic25hcHNob3QiLCAiY2xlYXJQcm9jZXNzaW5nRXhjZXB0aW9uIiwgIm5ld1Byb3BzIiwgImlzQ2xhc3NDb21wb25lbnQiLCAicHJvdmlkZXIiLCAiY29tcG9uZW50Q29udGV4dCIsICJpIiwgInJlbmRlckhvb2siLCAiY291bnQiLCAicmVuZGVyUmVzdWx0IiwgIm5ld1R5cGUiLCAiY29uc3RydWN0b3IiLCAiX19lIiwgIl9fYiIsICJvdXRlciIsICJwcm9wcyIsICJwcm90b3R5cGUiLCAicmVuZGVyIiwgImNvbnRleHRUeXBlIiwgIl9fYyIsICJfXyIsICJfX0UiLCAiQmFzZUNvbXBvbmVudCIsICJkb1JlbmRlciIsICJzdWIiLCAic3RhdGUiLCAiY29udGV4dCIsICJfX24iLCAiX19kIiwgIl9faCIsICJfc2IiLCAiX19zIiwgImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsICJhc3NpZ24iLCAiX192IiwgImNvbXBvbmVudFdpbGxNb3VudCIsICJjb21wb25lbnREaWRNb3VudCIsICJwdXNoIiwgImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCAic2hvdWxkQ29tcG9uZW50VXBkYXRlIiwgIl9fayIsICJmb3JFYWNoIiwgInZub2RlIiwgImNvbXBvbmVudFdpbGxVcGRhdGUiLCAiY29tcG9uZW50RGlkVXBkYXRlIiwgIl9fUCIsICJfX3IiLCAiZ2V0Q2hpbGRDb250ZXh0IiwgImdldFNuYXBzaG90QmVmb3JlVXBkYXRlIiwgImRpZmZDaGlsZHJlbiIsICJpc0FycmF5IiwgIkZyYWdtZW50IiwgImNoaWxkcmVuIiwgImJhc2UiLCAiTU9ERV9IWURSQVRFIiwgIm5vZGVUeXBlIiwgIm5leHRTaWJsaW5nIiwgImluZGV4T2YiLCAiZGlmZkVsZW1lbnROb2RlcyIsICJkaWZmZWQiLCAiY29tbWl0Um9vdCIsICJyb290IiwgImFwcGx5UmVmIiwgInNvbWUiLCAiY2IiLCAiY2FsbCIsICJuZXdIdG1sIiwgIm9sZEh0bWwiLCAibmV3Q2hpbGRyZW4iLCAiaW5wdXRWYWx1ZSIsICJjaGVja2VkIiwgImxvY2FsTmFtZSIsICJkb2N1bWVudCIsICJjcmVhdGVUZXh0Tm9kZSIsICJjcmVhdGVFbGVtZW50TlMiLCAiaXMiLCAiZGF0YSIsICJjaGlsZE5vZGVzIiwgIkVNUFRZX09CSiIsICJhdHRyaWJ1dGVzIiwgIl9faHRtbCIsICJpbm5lckhUTUwiLCAiZ2V0RG9tU2libGluZyIsICJyZW1vdmVOb2RlIiwgInJlZiIsICJoYXNSZWZVbm1vdW50IiwgImN1cnJlbnQiLCAidW5tb3VudCIsICJwYXJlbnRWTm9kZSIsICJza2lwUmVtb3ZlIiwgInIiLCAiY29tcG9uZW50V2lsbFVubW91bnQiLCAicmVwbGFjZU5vZGUiLCAiY3JlYXRlRWxlbWVudCIsICJuYW1lc3BhY2VVUkkiLCAiZmlyc3RDaGlsZCIsICJjcmVhdGVDb250ZXh0IiwgImRlZmF1bHRWYWx1ZSIsICJjb250ZXh0SWQiLCAiY29udGV4dCIsICJfX2MiLCAiaSIsICJfXyIsICJDb25zdW1lciIsICJwcm9wcyIsICJjb250ZXh0VmFsdWUiLCAiY2hpbGRyZW4iLCAiUHJvdmlkZXIiLCAic3VicyIsICJjdHgiLCAidGhpcyIsICJnZXRDaGlsZENvbnRleHQiLCAiY29tcG9uZW50V2lsbFVubW91bnQiLCAic2hvdWxkQ29tcG9uZW50VXBkYXRlIiwgIl9wcm9wcyIsICJ2YWx1ZSIsICJzb21lIiwgImMiLCAiX19lIiwgImVucXVldWVSZW5kZXIiLCAic3ViIiwgInB1c2giLCAib2xkIiwgInNwbGljZSIsICJpbmRleE9mIiwgImNhbGwiLCAiY29udGV4dFR5cGUiLCAic2xpY2UiLCAiRU1QVFlfQVJSIiwgIm9wdGlvbnMiLCAiZXJyb3IiLCAidm5vZGUiLCAib2xkVk5vZGUiLCAiZXJyb3JJbmZvIiwgImNvbXBvbmVudCIsICJjdG9yIiwgImhhbmRsZWQiLCAiY29uc3RydWN0b3IiLCAiZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yIiwgInNldFN0YXRlIiwgIl9fZCIsICJjb21wb25lbnREaWRDYXRjaCIsICJfX0UiLCAiZSIsICJ2bm9kZUlkIiwgImlzVmFsaWRFbGVtZW50IiwgInVuZGVmaW5lZCIsICJCYXNlQ29tcG9uZW50IiwgInByb3RvdHlwZSIsICJ1cGRhdGUiLCAiY2FsbGJhY2siLCAicyIsICJfX3MiLCAic3RhdGUiLCAiYXNzaWduIiwgIl9fdiIsICJfc2IiLCAiZm9yY2VVcGRhdGUiLCAiX19oIiwgInJlbmRlciIsICJGcmFnbWVudCIsICJyZXJlbmRlclF1ZXVlIiwgImRlZmVyIiwgIlByb21pc2UiLCAidGhlbiIsICJiaW5kIiwgInJlc29sdmUiLCAic2V0VGltZW91dCIsICJkZXB0aFNvcnQiLCAiYSIsICJiIiwgIl9fYiIsICJwcm9jZXNzIiwgIl9fciIsICJldmVudENsb2NrIiwgImV2ZW50UHJveHkiLCAiY3JlYXRlRXZlbnRQcm94eSIsICJldmVudFByb3h5Q2FwdHVyZSIsICJjdXJyZW50SW5kZXgiLCAiY3VycmVudENvbXBvbmVudCIsICJwcmV2aW91c0NvbXBvbmVudCIsICJwcmV2UmFmIiwgImN1cnJlbnRIb29rIiwgImFmdGVyUGFpbnRFZmZlY3RzIiwgIm9wdGlvbnMiLCAiX29wdGlvbnMiLCAib2xkQmVmb3JlRGlmZiIsICJfX2IiLCAib2xkQmVmb3JlUmVuZGVyIiwgIl9fciIsICJvbGRBZnRlckRpZmYiLCAiZGlmZmVkIiwgIm9sZENvbW1pdCIsICJfX2MiLCAib2xkQmVmb3JlVW5tb3VudCIsICJ1bm1vdW50IiwgIm9sZFJvb3QiLCAiX18iLCAiZ2V0SG9va1N0YXRlIiwgImluZGV4IiwgInR5cGUiLCAiX19oIiwgImhvb2tzIiwgIl9fSCIsICJsZW5ndGgiLCAicHVzaCIsICJ1c2VTdGF0ZSIsICJpbml0aWFsU3RhdGUiLCAidXNlUmVkdWNlciIsICJpbnZva2VPclJldHVybiIsICJyZWR1Y2VyIiwgImluaXQiLCAiaG9va1N0YXRlIiwgIl9yZWR1Y2VyIiwgImFjdGlvbiIsICJjdXJyZW50VmFsdWUiLCAiX19OIiwgIm5leHRWYWx1ZSIsICJzZXRTdGF0ZSIsICJfaGFzU2N1RnJvbUhvb2tzIiwgInVwZGF0ZUhvb2tTdGF0ZSIsICJwIiwgInMiLCAiYyIsICJzdGF0ZUhvb2tzIiwgImZpbHRlciIsICJ4IiwgImV2ZXJ5IiwgInByZXZTY3UiLCAiY2FsbCIsICJ0aGlzIiwgInNob3VsZFVwZGF0ZSIsICJmb3JFYWNoIiwgImhvb2tJdGVtIiwgInByb3BzIiwgInNob3VsZENvbXBvbmVudFVwZGF0ZSIsICJwcmV2Q1dVIiwgImNvbXBvbmVudFdpbGxVcGRhdGUiLCAiX19lIiwgInRtcCIsICJ1c2VFZmZlY3QiLCAiY2FsbGJhY2siLCAiYXJncyIsICJzdGF0ZSIsICJfX3MiLCAiYXJnc0NoYW5nZWQiLCAiX3BlbmRpbmdBcmdzIiwgInVzZUxheW91dEVmZmVjdCIsICJ1c2VSZWYiLCAiaW5pdGlhbFZhbHVlIiwgInVzZU1lbW8iLCAiY3VycmVudCIsICJ1c2VNZW1vIiwgImZhY3RvcnkiLCAiYXJncyIsICJzdGF0ZSIsICJnZXRIb29rU3RhdGUiLCAiY3VycmVudEluZGV4IiwgImFyZ3NDaGFuZ2VkIiwgIl9fSCIsICJfXyIsICJfX2giLCAidXNlQ2FsbGJhY2siLCAiY2FsbGJhY2siLCAiY3VycmVudEhvb2siLCAidXNlQ29udGV4dCIsICJjb250ZXh0IiwgInByb3ZpZGVyIiwgImN1cnJlbnRDb21wb25lbnQiLCAiX19jIiwgImMiLCAic3ViIiwgInByb3BzIiwgInZhbHVlIiwgImZsdXNoQWZ0ZXJQYWludEVmZmVjdHMiLCAiY29tcG9uZW50IiwgImFmdGVyUGFpbnRFZmZlY3RzIiwgInNoaWZ0IiwgIl9fUCIsICJfX0giLCAiX19oIiwgImZvckVhY2giLCAiaW52b2tlQ2xlYW51cCIsICJpbnZva2VFZmZlY3QiLCAiZSIsICJvcHRpb25zIiwgIl9fZSIsICJfX3YiLCAiX19iIiwgInZub2RlIiwgImN1cnJlbnRDb21wb25lbnQiLCAib2xkQmVmb3JlRGlmZiIsICJfXyIsICJwYXJlbnREb20iLCAiX19rIiwgIl9fbSIsICJvbGRSb290IiwgIl9fciIsICJvbGRCZWZvcmVSZW5kZXIiLCAiY3VycmVudEluZGV4IiwgImhvb2tzIiwgIl9fYyIsICJwcmV2aW91c0NvbXBvbmVudCIsICJob29rSXRlbSIsICJfX04iLCAiX3BlbmRpbmdBcmdzIiwgImRpZmZlZCIsICJvbGRBZnRlckRpZmYiLCAiYyIsICJsZW5ndGgiLCAicHVzaCIsICJwcmV2UmFmIiwgInJlcXVlc3RBbmltYXRpb25GcmFtZSIsICJhZnRlck5leHRGcmFtZSIsICJjb21taXRRdWV1ZSIsICJzb21lIiwgImZpbHRlciIsICJjYiIsICJvbGRDb21taXQiLCAidW5tb3VudCIsICJvbGRCZWZvcmVVbm1vdW50IiwgImhhc0Vycm9yZWQiLCAicyIsICJIQVNfUkFGIiwgImNhbGxiYWNrIiwgInJhZiIsICJkb25lIiwgImNsZWFyVGltZW91dCIsICJ0aW1lb3V0IiwgImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwgInNldFRpbWVvdXQiLCAiaG9vayIsICJjb21wIiwgImNsZWFudXAiLCAiYXJnc0NoYW5nZWQiLCAib2xkQXJncyIsICJuZXdBcmdzIiwgImFyZyIsICJpbmRleCIsICJpbnZva2VPclJldHVybiIsICJmIiwgImVuc3VyZUFycmF5IiwgInZhbHVlIiwgIm5hbWUiLCAiaXNMYXRlc3REYXRhIiwgImxpbmVzIiwgImdldENhY2hlZExpbmVzIiwgImVuc3VyZUhUTUxEaXZFbGVtZW50IiwgInZhbHVlIiwgIm5hbWUiLCAiZW5zdXJlSFRNTFRleHRBcmVhRWxlbWVudCIsICJ2YWx1ZSIsICJuYW1lIiwgImVkaXRvciIsICJjaGVja0RpdiIsICJsaW5lcyIsICJ0ZXh0SW5wdXQiLCAidGV4dGFyZWEiLCAiZW5zdXJlSFRNTFRleHRBcmVhRWxlbWVudCIsICJwb3B1cE1lbnUiLCAiY2hlY2tEaXYiLCAic3RhdHVzQmFyIiwgImNoZWNrRGl2IiwgImRpdiIsICJuYW1lIiwgImVuc3VyZUhUTUxEaXZFbGVtZW50IiwgInRha2VJbnRlcm5hbExpbmVzIiwgImxpbmVzRWwiLCAibGluZXMiLCAicmVhY3RLZXkiLCAia2V5IiwgImdldEluZGVudENvdW50IiwgInRleHQiLCAiZ2V0SW5kZW50TGluZUNvdW50IiwgImluZGV4IiwgImxpbmVzIiwgImJhc2UiLCAiZ2V0VGV4dCIsICJjb3VudCIsICJsaW5lIiwgImlzU3RyaW5nIiwgImdldExpbmVJZCIsICJ2YWx1ZSIsICJpc05vbmUiLCAiaXNOdW1iZXIiLCAiZ2V0QmFzZUxpbmUiLCAiaXNTdHJpbmciLCAibGluZSIsICJnZXRMaW5lTm8iLCAiaWQiLCAidGFrZUludGVybmFsTGluZXMiLCAiZ2V0QmFzZUxpbmUiLCAidmFsdWUiLCAiaXNOb25lIiwgImlzTnVtYmVyIiwgInRha2VJbnRlcm5hbExpbmVzIiwgImlkIiwgImdldExpbmVJZCIsICJsaW5lIiwgImdldExpbmVET00iLCAiaXNMaW5lRE9NIiwgImRvbSIsICJnZXRMaW5lcyIsICJsaW5lcyIsICJnZXRDYWNoZWRMaW5lcyIsICJlbnN1cmVBcnJheSIsICJnZXRUZXh0IiwgInZhbHVlIiwgImlzTm9uZSIsICJpc051bWJlciIsICJpc1N0cmluZyIsICJnZXRCYXNlTGluZSIsICJpc0xpbmVET00iLCAidGFrZUludGVybmFsTGluZXMiLCAidGV4dCIsICJjaGFycyIsICJsaW5lIiwgImRvbSIsICJnZXRDaGFycyIsICJnZXRJbmRleCIsICJnZXRIZWFkTGluZURPTSIsICJsaW5lIiwgImxpbmVzIiwgImlzTm9uZSIsICJnZXRUYWlsTGluZURPTSIsICJnZXRJbmRlbnRMaW5lQ291bnQiLCAidmFsdWUiLCAiaW5kZXgiLCAiZ2V0TGluZU5vIiwgImlzTm9uZSIsICJnZXRMaW5lcyIsICJnZXRDaGFycyIsICJjaGFycyIsICJpIiwgImlzQ2hhckRPTSIsICJkb20iLCAiZ2V0SW5kZXgiLCAiZ2V0SGVhZENoYXJET00iLCAiY2hhciIsICJnZXRDaGFyRE9NIiwgImxpbmUiLCAicG9zIiwgImNoYXIiLCAiZ2V0TGluZURPTSIsICJpc0NoYXJET00iLCAicHJlc3MiLCAia2V5IiwgInByZXNzT3B0aW9ucyIsICJub01vZGlmaWVkS2V5cyIsICJyZXN0IiwgIm9wdGlvbnMiLCAiS0VZQ09ERV9NQVAiLCAidGV4dGFyZWEiLCAidGV4dElucHV0IiwgImNsaWNrIiwgImVsZW1lbnQiLCAib3B0aW9ucyIsICJtb3VzZU9wdGlvbnMiLCAic2xlZXAiLCAiY2FyZXQiLCAidGV4dGFyZWEiLCAidGV4dElucHV0IiwgInJlYWN0S2V5IiwgImtleSIsICJpc0hlaWdodFZpZXdhYmxlIiwgImVsZW1lbnQiLCAidG9wIiwgImJvdHRvbSIsICJyYW5nZSIsICJzdGFydCIsICJlbmQiLCAiaSIsICJnb0hlYWQiLCAicHJlc3MiLCAiZ29IZWFkTGluZSIsICJ0YXJnZXQiLCAiZ2V0SGVhZExpbmVET00iLCAiaXNIZWlnaHRWaWV3YWJsZSIsICJjaGFyRE9NIiwgImdldEhlYWRDaGFyRE9NIiwgImxlZnQiLCAidG9wIiwgImNsaWNrIiwgImdvTGFzdExpbmUiLCAiX2dvTGluZSIsICJnZXRUYWlsTGluZURPTSIsICJnb0xpbmUiLCAidmFsdWUiLCAiZ2V0TGluZURPTSIsICJyaWdodCIsICJoZWlnaHQiLCAidW5kbyIsICJjb3VudCIsICJfIiwgInJhbmdlIiwgInByZXNzIiwgInJlZG8iLCAiaW5zZXJ0TGluZSIsICJsaW5lTm8iLCAidGV4dCIsICJnb0xpbmUiLCAiZ29IZWFkIiwgInByZXNzIiwgImluc2VydFRleHQiLCAicmVwbGFjZUxpbmVzIiwgInN0YXJ0IiwgImVuZCIsICJfIiwgInJhbmdlIiwgImluZGVudExpbmVzIiwgImNvdW50IiwgIl8iLCAicmFuZ2UiLCAicHJlc3MiLCAib3V0ZGVudExpbmVzIiwgInVwTGluZXMiLCAiY291bnQiLCAiXyIsICJyYW5nZSIsICJwcmVzcyIsICJkb3duTGluZXMiLCAiaW5kZW50QmxvY2tzIiwgIm91dGRlbnRCbG9ja3MiLCAidXBCbG9ja3MiLCAiY291bnQiLCAiXyIsICJyYW5nZSIsICJwcmVzcyIsICJkb3duQmxvY2tzIiwgImluc2VydFRleHQiLCAidGV4dCIsICJjdXJzb3IiLCAidGV4dElucHV0IiwgImV2ZW50IiwgInNsZWVwIiwgInVzZVN0YXR1c0JhciIsICJiYXIiLCAic3RhdHVzQmFyIiwgInN0YXR1cyIsICJpdGVtcyIsICJjaGlsZCIsICJtYWtlR3JvdXAiLCAibm9kZXMiLCAiaXRlbSIsICJtYWtlU3Bpbm5lciIsICJtYWtlQ2hlY2tDaXJjbGUiLCAibWFrZUV4Y2xhbWF0aW9uVHJpYW5nbGUiLCAibWFrZUl0ZW0iLCAiZ3JvdXAiLCAic3BhbiIsICJpIiwgInB1c2hQYWdlVHJhbnNpdGlvbiIsICJjb250ZXh0IiwgInBhZ2VUcmFuc2l0aW9uQ29udGV4dCIsICJ2YWx1ZSIsICJ0b1RpdGxlTGMiLCAib3BlbiIsICJwcm9qZWN0IiwgInRpdGxlIiwgIm9wdGlvbnMiLCAidXJsIiwgImVuY29kZVRpdGxlVVJJIiwgInB1c2hQYWdlVHJhbnNpdGlvbiIsICJhIiwgIm9wZW5JblRoZVNhbWVUYWIiLCAiYm9keSIsICJmaW5kTGF0ZXN0Q2FjaGUiLCAicmVxdWVzdCIsICJvcHRpb25zIiwgImNhY2hlTmFtZXMiLCAiZGF0ZSIsICJyZXMiLCAic2F2ZUFwaUNhY2hlIiwgInJlc3BvbnNlIiwgImdlbmVyYXRlQ2FjaGVOYW1lIiwgInRha2VTdG9yZXMiLCAidGV4dGFyZWEiLCAidGV4dElucHV0IiwgInJlYWN0S2V5IiwgImtleSIsICJzdG9yZXMiLCAiY3Vyc29yIiwgInN0b3JlIiwgInNlbGVjdGlvbiIsICJ0YWtlQ3Vyc29yIiwgInRha2VTdG9yZXMiLCAidGFrZVNlbGVjdGlvbiIsICJ0YWtlU3RvcmVzIiwgImVuY29kZSIsICJvcHRpb25zIiwgImRlY29kZSIsICJlbmNvZGVkIiwgImxpc3RlbmVyTWFwIiwgIm9uY2VMaXN0ZW5lck1hcCIsICJhZGRUZXh0SW5wdXRFdmVudExpc3RlbmVyIiwgIm5hbWUiLCAibGlzdGVuZXIiLCAib3B0aW9ucyIsICJhcmdNYXAiLCAiZW5jb2RlZE9wdGlvbnMiLCAiZW5jb2RlIiwgIm9uY2VNYXAiLCAiZW5jb2RlZCIsICJvbmNlTGlzdGVuZXIiLCAiZXZlbnQiLCAicmVtb3ZlVGV4dElucHV0RXZlbnRMaXN0ZW5lciIsICJ0ZXh0aW5wdXQiLCAidGV4dElucHV0IiwgImRlY29kZSIsICJlc2NhcGVSZWdFeHAiLCAidGV4dCIsICJDYXJkIiwgInByb2plY3QiLCAidGl0bGUiLCAid29yZHMiLCAibGluZXMiLCAicXVlcnkiLCAiY2xvc2UiLCAiaGFuZGxlQ2xpY2siLCAiTSIsICJlIiwgInB1c2hQYWdlVHJhbnNpdGlvbiIsICJoaWdobGlnaHRlZExpbmVzIiwgIlQiLCAicmVnRXhwIiwgIndvcmQiLCAiZXNjYXBlUmVnRXhwIiwgImxpbmUiLCAic2UiLCAiaSIsICJlbmNvZGVUaXRsZVVSSSIsICJ1c2VPcGVuIiwgImZsYWciLCAiaXNPcGVuIiwgInNldE9wZW4iLCAiQiIsICJvcGVuIiwgIk0iLCAiY2xvc2UiLCAidG9nZ2xlIiwgInByZXYiLCAidXNlU2VhcmNoIiwgInByb2plY3QiLCAicXVlcnkiLCAicmVzdWx0IiwgInNldEl0ZW1zIiwgIkIiLCAibG9hZGluZyIsICJzZXRMb2FkaW5nIiwgImRvbmUiLCAieiIsICJ3IiwgInRlcm1pbmF0ZSIsICJzZWFyY2hGb3JQYWdlcyIsICJDU1MiLCAic2UiLCAiU3Bpbm5lciIsICJzZSIsICJBcHAiLCAiZXhwb3J0T3BzIiwgInF1ZXJ5IiwgInNldFF1ZXJ5IiwgIkIiLCAicHJvamVjdCIsICJsb2FkaW5nIiwgInJlc3VsdCIsICJ1c2VTZWFyY2giLCAiaGFuZGxlSW5wdXQiLCAiTSIsICJlIiwgImlzT3BlbiIsICJvcGVuIiwgImNsb3NlIiwgInRvZ2dsZSIsICJ1c2VPcGVuIiwgImV4cG9ydFJlZiIsICJ6IiwgInciLCAiaGFuZGxlQ2xvc2UiLCAiTiIsICJDU1MiLCAiaXRlbSIsICJDYXJkIiwgInNldHVwIiwgImFwcCIsICJzaGFkb3dSb290IiwgInJlc29sdmUiLCAiZGUiLCAic2UiLCAiQXBwIiwgImhhcyIsICJvYmoiLCAia2V5IiwgImFsaWFzZXMiLCAiYWxpYXMiLCAia2V5TG93ZXIiLCAiZW5Vc1RyYW5zbGF0aW9ucyIsICJjb2RlVG9FblVzUXdlcnR5IiwgImNvZGUiLCAic2hpZnQiLCAic3BlY2lhbENhc2VzIiwgImlnbm9yZWQiLCAic3RyaW5naWZ5IiwgImV2ZW50IiwgIm1vZGlmaWVycyIsICJtb2RpZmllck1hcCIsICJwYXJzZSIsICJrZXlTdHJpbmciLCAibWF0Y2giLCAibW9kaWZpZXIiLCAibW9kaWZpZXJMb3dlciIsICJtb2RpZmllck5hbWUiLCAibm9ybWFsaXplIiwgInJlc3VsdCIsICJwYXJzZVNlcXVlbmNlIiwgImtleVNlcXVlbmNlIiwgImRlYnVnTW9kZSIsICJzZXREZWJ1Z01vZGUiLCAibW9kZSIsICJjcmVhdGVEZWJ1ZyIsICJmaWxlbmFtZSIsICJrZXkiLCAidmFsdWUiLCAiYXJncyIsICJhc3NlcnRpb24iLCAibGFiZWwiLCAibG9nZ2VyIiwgImNyZWF0ZURlYnVnIiwgIk1vdXNldHJhcCIsICJ0YXJnZXQiLCAib3B0aW9ucyIsICJzZXF1ZW5jZSIsICJjb21tYW5kIiwgImVycm9yTWFwIiwgInNlcXVlbmNlcyIsICJzZXEiLCAiY21kIiwgInJlc3VsdCIsICJub3JtYWxpemVTZXF1ZW5jZSIsICJlcnJvciIsICJub3JtYWxpemVkIiwgImNoYW5nZWQiLCAidmltS2V5IiwgInN0cmluZ2lmeSIsICJiZXN0TWF0Y2hDb21tYW5kIiwgImtleSIsICJzaXplIiwgImludmFsaWRTZXF1ZW5jZUVycm9yIiwgImtleXMiLCAicGFyc2VTZXF1ZW5jZSIsICJub3JtYWxpemVkU2VxdWVuY2UiLCAiZXJyb3JzIiwgIm5vcm1hbGl6ZSIsICJ2aW1lb1JlZ0V4cCIsICJwYXJzZVZpbWVvIiwgInVybCIsICJtYXRjaGVzIiwgInNwb3RpZnlSZWdFeHAiLCAicGFyc2VTcG90aWZ5IiwgInVybCIsICJtYXRjaGVzIiwgInBhdGhUeXBlIiwgInZpZGVvSWQiLCAiQW5jaG9yRk1SZWdFeHAiLCAicGFyc2VBbmNob3JGTSIsICJ1cmwiLCAibWF0Y2hlcyIsICJ2aWRlb0lkIiwgInBhcnNlQWJzb2x1dGVMaW5rIiwgImxpbmsiLCAiXyIsICJfXyIsICJjb250ZW50IiwgImhyZWYiLCAiYmFzZUxpbmsiLCAieW91dHViZSIsICJwYXJzZVlvdXR1YmUiLCAidmltZW9JZCIsICJwYXJzZVZpbWVvIiwgInNwb3RpZnkiLCAicGFyc2VTcG90aWZ5IiwgImFuY2hvckZNSWQiLCAicGFyc2VBbmNob3JGTSIsICJpc1ZpZGVvVVJMIiwgImlzQXVkaW9VUkwiLCAidXJsIiwgImdldFNlbGVjdGlvbiIsICJzZWxlY3Rpb25SYW5nZSIsICJzZWxlY3RlZFRleHQiLCAicG9zaXRpb24iLCAiY2FyZXQiLCAiY291bnQiLCAiZ2V0SW5kZW50TGluZUNvdW50IiwgImdldFRleHQiLCAibGluZSIsICJzdGFydCIsICJlbmQiLCAibGFyZ2VyIiwgInN0YXJ0TGluZSIsICJzdGFydENoYXIiLCAiZW5kTGluZSIsICJlbmRDaGFyIiwgImRlZmF1bHRIb29rIiwgInRleHQiLCAidGl0bGUiLCAicHJvamVjdFRvIiwgIm1vZGUiLCAicmF3VGl0bGUiLCAibGluZXMiLCAibmV3VGl0bGUiLCAibWluSW5kZW50TnVtIiwgImxpbmUiLCAiZ2V0SW5kZW50Q291bnQiLCAibmV3TGluZXMiLCAibWFrZU5ld1BhZ2UiLCAiaW5pdCIsICJwcm9qZWN0IiwgIm1vZGUiLCAiaG9va3MiLCAiZGVmYXVsdEhvb2siLCAic3RhcnQiLCAiZW5kIiwgInNlbGVjdGVkVGV4dCIsICJnZXRTZWxlY3Rpb24iLCAicmVzdWx0IiwgImhvb2siLCAidGFrZUludGVybmFsTGluZXMiLCAiaG9va05hbWUiLCAicHJvbWlzZSIsICJjdXQiLCAic29ja2V0IiwgInJlbmRlciIsICJkaXNwb3NlIiwgInVzZVN0YXR1c0JhciIsICJsZW5ndGgiLCAibWFrZVNvY2tldCIsICJjb3VudGVyIiwgInBhZ2UiLCAidXBkYXRlciIsICJsaW5lcyIsICJsaW5lIiwgInBhdGNoIiwgInRleHQiLCAibGluZXNfIiwgIm9wZW5JblRoZVNhbWVUYWIiLCAiZW5jb2RlVGl0bGVVUkkiLCAiZSIsICJ3YWl0aW5nIiwgInNsZWVwIiwgImRpc2Nvbm5lY3QiLCAidG9EYXRlIiwgImFyZ3VtZW50IiwgImFyZ1N0ciIsICJkZWZhdWx0T3B0aW9ucyIsICJnZXREZWZhdWx0T3B0aW9ucyIsICJzdGFydE9mV2VlayIsICJkYXRlIiwgIm9wdGlvbnMiLCAid2Vla1N0YXJ0c09uIiwgIl9kYXRlIiwgImRheSIsICJkaWZmIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAic3RhcnRPZkRheSIsICJkYXRlIiwgIl9kYXRlIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiZWFjaERheU9mSW50ZXJ2YWwiLCAiaW50ZXJ2YWwiLCAib3B0aW9ucyIsICJzdGFydERhdGUiLCAiZW5kRGF0ZSIsICJyZXZlcnNlZCIsICJlbmRUaW1lIiwgImN1cnJlbnREYXRlIiwgInN0ZXAiLCAiZGF0ZXMiLCAiaXNEYXRlIiwgInZhbHVlIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiaXNWYWxpZCIsICJkYXRlIiwgIl9kYXRlIiwgImFkZExlYWRpbmdaZXJvcyIsICJudW1iZXIiLCAidGFyZ2V0TGVuZ3RoIiwgInNpZ24iLCAib3V0cHV0IiwgImxpZ2h0Rm9ybWF0dGVycyIsICJ0b2tlbiIsICJzaWduZWRZZWFyIiwgInllYXIiLCAibW9udGgiLCAiZGF5UGVyaW9kRW51bVZhbHVlIiwgIm51bWJlck9mRGlnaXRzIiwgIm1pbGxpc2Vjb25kcyIsICJmcmFjdGlvbmFsU2Vjb25kcyIsICJmb3JtYXR0aW5nVG9rZW5zUmVnRXhwIiwgImVzY2FwZWRTdHJpbmdSZWdFeHAiLCAiZG91YmxlUXVvdGVSZWdFeHAiLCAidW5lc2NhcGVkTGF0aW5DaGFyYWN0ZXJSZWdFeHAiLCAibGlnaHRGb3JtYXQiLCAiZm9ybWF0U3RyIiwgInRva2VucyIsICJzdWJzdHJpbmciLCAiZmlyc3RDaGFyYWN0ZXIiLCAiY2xlYW5Fc2NhcGVkU3RyaW5nIiwgImZvcm1hdHRlciIsICJpbnB1dCIsICJtYXRjaGVzIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiY29uc3RydWN0RnJvbSIsICJkYXRlIiwgInZhbHVlIiwgImFkZERheXMiLCAiYW1vdW50IiwgIl9kYXRlIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiY29uc3RydWN0RnJvbSIsICJkYXRlIiwgInZhbHVlIiwgImFkZERheXMiLCAiYW1vdW50IiwgIl9kYXRlIiwgInN1YkRheXMiLCAidG9EYXRlIiwgImFyZ3VtZW50IiwgImFyZ1N0ciIsICJjb25zdHJ1Y3RGcm9tIiwgImRhdGUiLCAidmFsdWUiLCAiYWRkTWlsbGlzZWNvbmRzIiwgImFtb3VudCIsICJ0aW1lc3RhbXAiLCAiYWRkU2Vjb25kcyIsICJ0b0RhdGUiLCAiYXJndW1lbnQiLCAiYXJnU3RyIiwgImNvbnN0cnVjdEZyb20iLCAiZGF0ZSIsICJ2YWx1ZSIsICJhZGREYXlzIiwgImFtb3VudCIsICJfZGF0ZSIsICJhZGRXZWVrcyIsICJkYXlzIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiZ2V0RGF0ZSIsICJkYXRlIiwgIm1heFRpbWUiLCAibWluVGltZSIsICJtaWxsaXNlY29uZHNJbldlZWsiLCAic2Vjb25kc0luSG91ciIsICJzZWNvbmRzSW5EYXkiLCAic2Vjb25kc0luV2VlayIsICJzZWNvbmRzSW5ZZWFyIiwgInNlY29uZHNJbk1vbnRoIiwgInNlY29uZHNJblF1YXJ0ZXIiLCAidG9EYXRlIiwgImFyZ3VtZW50IiwgImFyZ1N0ciIsICJkZWZhdWx0T3B0aW9ucyIsICJnZXREZWZhdWx0T3B0aW9ucyIsICJzdGFydE9mV2VlayIsICJkYXRlIiwgIm9wdGlvbnMiLCAid2Vla1N0YXJ0c09uIiwgIl9kYXRlIiwgImRheSIsICJkaWZmIiwgImNvbnN0cnVjdEZyb20iLCAidmFsdWUiLCAiZ2V0V2Vla1llYXIiLCAieWVhciIsICJmaXJzdFdlZWtDb250YWluc0RhdGUiLCAiZmlyc3RXZWVrT2ZOZXh0WWVhciIsICJzdGFydE9mTmV4dFllYXIiLCAiZmlyc3RXZWVrT2ZUaGlzWWVhciIsICJzdGFydE9mVGhpc1llYXIiLCAic3RhcnRPZldlZWtZZWFyIiwgImZpcnN0V2VlayIsICJnZXRXZWVrIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiZ2V0TW9udGgiLCAiZGF0ZSIsICJ0b0RhdGUiLCAiYXJndW1lbnQiLCAiYXJnU3RyIiwgImdldFllYXIiLCAiZGF0ZSIsICJ0b0RhdGUiLCAiYXJndW1lbnQiLCAiYXJnU3RyIiwgInN0YXJ0T2ZEYXkiLCAiZGF0ZSIsICJfZGF0ZSIsICJpc1NhbWVEYXkiLCAiZGF0ZUxlZnQiLCAiZGF0ZVJpZ2h0IiwgImRhdGVMZWZ0U3RhcnRPZkRheSIsICJkYXRlUmlnaHRTdGFydE9mRGF5IiwgImdldEVhY2hMYXRlc3REYXRlIiwgImRhdGVzIiwgIm1hcCIsICJkYXRlIiwgImtleSIsICJyIiwgIm4iLCAic2FtZURhdGUiLCAidG9EYXRlIiwgImFyZ3VtZW50IiwgImFyZ1N0ciIsICJjb25zdHJ1Y3RGcm9tIiwgImRhdGUiLCAidmFsdWUiLCAiYWRkRGF5cyIsICJhbW91bnQiLCAiX2RhdGUiLCAiYWRkTW9udGhzIiwgImRheU9mTW9udGgiLCAiZW5kT2ZEZXNpcmVkTW9udGgiLCAiZGF5c0luTW9udGgiLCAiYWRkIiwgImR1cmF0aW9uIiwgInllYXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJkYXRlV2l0aE1vbnRocyIsICJkYXRlV2l0aERheXMiLCAibWludXRlc1RvQWRkIiwgIm1zVG9BZGQiLCAidG9EYXRlIiwgImFyZ3VtZW50IiwgImFyZ1N0ciIsICJjb25zdHJ1Y3RGcm9tIiwgImRhdGUiLCAidmFsdWUiLCAiYWRkTWlsbGlzZWNvbmRzIiwgImFtb3VudCIsICJ0aW1lc3RhbXAiLCAibWF4VGltZSIsICJtaW5UaW1lIiwgIm1pbGxpc2Vjb25kc0luSG91ciIsICJzZWNvbmRzSW5Ib3VyIiwgInNlY29uZHNJbkRheSIsICJzZWNvbmRzSW5XZWVrIiwgInNlY29uZHNJblllYXIiLCAic2Vjb25kc0luTW9udGgiLCAic2Vjb25kc0luUXVhcnRlciIsICJhZGRIb3VycyIsICJ0b0RhdGUiLCAiYXJndW1lbnQiLCAiYXJnU3RyIiwgImNvbnN0cnVjdEZyb20iLCAiZGF0ZSIsICJ2YWx1ZSIsICJhZGRNaWxsaXNlY29uZHMiLCAiYW1vdW50IiwgInRpbWVzdGFtcCIsICJtYXhUaW1lIiwgIm1pblRpbWUiLCAibWlsbGlzZWNvbmRzSW5NaW51dGUiLCAic2Vjb25kc0luSG91ciIsICJzZWNvbmRzSW5EYXkiLCAic2Vjb25kc0luV2VlayIsICJzZWNvbmRzSW5ZZWFyIiwgInNlY29uZHNJbk1vbnRoIiwgInNlY29uZHNJblF1YXJ0ZXIiLCAiYWRkTWludXRlcyIsICJ0b0RhdGUiLCAiYXJndW1lbnQiLCAiYXJnU3RyIiwgImNvbXBhcmVBc2MiLCAiZGF0ZUxlZnQiLCAiZGF0ZVJpZ2h0IiwgIl9kYXRlTGVmdCIsICJfZGF0ZVJpZ2h0IiwgImRpZmYiLCAibWF4VGltZSIsICJtaW5UaW1lIiwgIm1pbGxpc2Vjb25kc0luRGF5IiwgInNlY29uZHNJbkhvdXIiLCAic2Vjb25kc0luRGF5IiwgInNlY29uZHNJbldlZWsiLCAic2Vjb25kc0luWWVhciIsICJzZWNvbmRzSW5Nb250aCIsICJzZWNvbmRzSW5RdWFydGVyIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAic3RhcnRPZkRheSIsICJkYXRlIiwgIl9kYXRlIiwgImdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMiLCAidXRjRGF0ZSIsICJkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMiLCAiZGF0ZUxlZnQiLCAiZGF0ZVJpZ2h0IiwgInN0YXJ0T2ZEYXlMZWZ0IiwgInN0YXJ0T2ZEYXlSaWdodCIsICJ0aW1lc3RhbXBMZWZ0IiwgInRpbWVzdGFtcFJpZ2h0IiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiZGlmZmVyZW5jZUluQ2FsZW5kYXJNb250aHMiLCAiZGF0ZUxlZnQiLCAiZGF0ZVJpZ2h0IiwgIl9kYXRlTGVmdCIsICJfZGF0ZVJpZ2h0IiwgInllYXJEaWZmIiwgIm1vbnRoRGlmZiIsICJnZXRSb3VuZGluZ01ldGhvZCIsICJtZXRob2QiLCAibnVtYmVyIiwgInJlc3VsdCIsICJtYXhUaW1lIiwgIm1pblRpbWUiLCAibWlsbGlzZWNvbmRzSW5NaW51dGUiLCAic2Vjb25kc0luSG91ciIsICJzZWNvbmRzSW5EYXkiLCAic2Vjb25kc0luV2VlayIsICJzZWNvbmRzSW5ZZWFyIiwgInNlY29uZHNJbk1vbnRoIiwgInNlY29uZHNJblF1YXJ0ZXIiLCAidG9EYXRlIiwgImFyZ3VtZW50IiwgImFyZ1N0ciIsICJkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMiLCAiZGF0ZUxlZnQiLCAiZGF0ZVJpZ2h0IiwgImRpZmZlcmVuY2VJbk1pbnV0ZXMiLCAib3B0aW9ucyIsICJkaWZmIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiY29uc3RydWN0RnJvbSIsICJkYXRlIiwgInZhbHVlIiwgImFkZERheXMiLCAiYW1vdW50IiwgIl9kYXRlIiwgImFkZFdlZWtzIiwgImRheXMiLCAiZGVmYXVsdE9wdGlvbnMiLCAiZ2V0RGVmYXVsdE9wdGlvbnMiLCAic3RhcnRPZldlZWsiLCAib3B0aW9ucyIsICJ3ZWVrU3RhcnRzT24iLCAiZGF5IiwgImRpZmYiLCAiZWFjaFdlZWtPZkludGVydmFsIiwgImludGVydmFsIiwgInN0YXJ0RGF0ZSIsICJlbmREYXRlIiwgInJldmVyc2VkIiwgInN0YXJ0RGF0ZVdlZWsiLCAiZW5kRGF0ZVdlZWsiLCAiZW5kVGltZSIsICJjdXJyZW50RGF0ZSIsICJzdGVwIiwgImRhdGVzIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiZW5kT2ZEYXkiLCAiZGF0ZSIsICJfZGF0ZSIsICJ0b0RhdGUiLCAiYXJndW1lbnQiLCAiYXJnU3RyIiwgImdldEhvdXJzIiwgImRhdGUiLCAidG9EYXRlIiwgImFyZ3VtZW50IiwgImFyZ1N0ciIsICJnZXRNaW51dGVzIiwgImRhdGUiLCAiY29uc3RydWN0RnJvbSIsICJkYXRlIiwgInZhbHVlIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiZGVmYXVsdE9wdGlvbnMiLCAiZ2V0RGVmYXVsdE9wdGlvbnMiLCAic3RhcnRPZldlZWsiLCAib3B0aW9ucyIsICJ3ZWVrU3RhcnRzT24iLCAiX2RhdGUiLCAiZGF5IiwgImRpZmYiLCAiZ2V0V2Vla1llYXIiLCAieWVhciIsICJmaXJzdFdlZWtDb250YWluc0RhdGUiLCAiZmlyc3RXZWVrT2ZOZXh0WWVhciIsICJzdGFydE9mTmV4dFllYXIiLCAiZmlyc3RXZWVrT2ZUaGlzWWVhciIsICJzdGFydE9mVGhpc1llYXIiLCAibWF4VGltZSIsICJtaW5UaW1lIiwgInNlY29uZHNJbkhvdXIiLCAic2Vjb25kc0luRGF5IiwgInNlY29uZHNJbldlZWsiLCAic2Vjb25kc0luWWVhciIsICJzZWNvbmRzSW5Nb250aCIsICJzZWNvbmRzSW5RdWFydGVyIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiaXNBZnRlciIsICJkYXRlIiwgImRhdGVUb0NvbXBhcmUiLCAiX2RhdGUiLCAiX2RhdGVUb0NvbXBhcmUiLCAiaXNEYXRlIiwgInZhbHVlIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiaXNWYWxpZCIsICJkYXRlIiwgIl9kYXRlIiwgImNvbnN0cnVjdEZyb20iLCAiZGF0ZSIsICJ2YWx1ZSIsICJ0b0RhdGUiLCAiYXJndW1lbnQiLCAiYXJnU3RyIiwgImdldERheXNJbk1vbnRoIiwgIl9kYXRlIiwgInllYXIiLCAibW9udGhJbmRleCIsICJsYXN0RGF5T2ZNb250aCIsICJzZXRNb250aCIsICJtb250aCIsICJkYXkiLCAiZGF0ZVdpdGhEZXNpcmVkTW9udGgiLCAiZGF5c0luTW9udGgiLCAic2V0IiwgInZhbHVlcyIsICJtYXhUaW1lIiwgIm1pblRpbWUiLCAibWlsbGlzZWNvbmRzSW5XZWVrIiwgInNlY29uZHNJbkhvdXIiLCAic2Vjb25kc0luRGF5IiwgInNlY29uZHNJbldlZWsiLCAic2Vjb25kc0luWWVhciIsICJzZWNvbmRzSW5Nb250aCIsICJzZWNvbmRzSW5RdWFydGVyIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiZGVmYXVsdE9wdGlvbnMiLCAiZ2V0RGVmYXVsdE9wdGlvbnMiLCAic3RhcnRPZldlZWsiLCAiZGF0ZSIsICJvcHRpb25zIiwgIndlZWtTdGFydHNPbiIsICJfZGF0ZSIsICJkYXkiLCAiZGlmZiIsICJjb25zdHJ1Y3RGcm9tIiwgInZhbHVlIiwgImdldFdlZWtZZWFyIiwgInllYXIiLCAiZmlyc3RXZWVrQ29udGFpbnNEYXRlIiwgImZpcnN0V2Vla09mTmV4dFllYXIiLCAic3RhcnRPZk5leHRZZWFyIiwgImZpcnN0V2Vla09mVGhpc1llYXIiLCAic3RhcnRPZlRoaXNZZWFyIiwgInN0YXJ0T2ZXZWVrWWVhciIsICJmaXJzdFdlZWsiLCAiZ2V0V2VlayIsICJzZXRXZWVrIiwgIndlZWsiLCAibWF4VGltZSIsICJtaW5UaW1lIiwgInNlY29uZHNJbkhvdXIiLCAic2Vjb25kc0luRGF5IiwgInNlY29uZHNJbldlZWsiLCAic2Vjb25kc0luWWVhciIsICJzZWNvbmRzSW5Nb250aCIsICJzZWNvbmRzSW5RdWFydGVyIiwgInRvRGF0ZSIsICJhcmd1bWVudCIsICJhcmdTdHIiLCAiY29uc3RydWN0RnJvbSIsICJkYXRlIiwgInZhbHVlIiwgImFkZERheXMiLCAiYW1vdW50IiwgIl9kYXRlIiwgImFkZFdlZWtzIiwgImRheXMiLCAic3ViV2Vla3MiLCAiaXNOb25lIiwgInZhbHVlIiwgImlzU3RyaW5nIiwgIm9uZUJ5T25lIiwgInByb21pc2VzIiwgInF1ZXVlIiwgInJlc29sdmUiLCAicHVzaCIsICJpdGVtIiwgInBvcCIsICJyZXMiLCAiY291bnQiLCAicHJvbWlzZSIsICJyZWFzb24iLCAiaSIsICJwYXJzZVRhc2siLCAidGV4dCIsICJtYXRjaGVkIiwgInllYXIiLCAibW9udGgiLCAiZGF0ZSIsICJwaG91cnMiLCAicG1pbnV0ZXMiLCAiZHVyYXRpb24iLCAic2hvdXJzIiwgInNtaW51dGVzIiwgInNzZWNvbmRzIiwgImVob3VycyIsICJlbWludXRlcyIsICJlc2Vjb25kcyIsICJ0aXRsZSIsICJ0YXNrIiwgInN0YXJ0IiwgImVuZCIsICJuIiwgInN0YXJ0RGF0ZSIsICJ0YXNrIiwgImVuZERhdGUiLCAiaXNOb25lIiwgImkiLCAidG9TdHJpbmciLCAidGl0bGUiLCAiYmFzZSIsICJwbGFuIiwgInJlY29yZCIsICJ4IiwgInBhcnNlQmxvY2siLCAibGluZXMiLCAiZGF0YSIsICJwYXJzZUxpbmVzIiwgImlzU3RyaW5nIiwgImkiLCAibGluZV8iLCAibGluZSIsICJjb3VudCIsICJnZXRJbmRlbnRMaW5lQ291bnQiLCAidGFzayIsICJwYXJzZVRhc2siLCAiaW50ZXJ2YWwiLCAiYWRkVGFzayIsICJsaW5lUG9zIiwgImNhcmV0IiwgInRhc2tMaW5lIiwgInBhcnNlVGFzayIsICJnZXRUZXh0IiwgImJhc2UiLCAicGxhbiIsICJpIiwgImluc2VydExpbmUiLCAidG9TdHJpbmciLCAic3RhcnRUYXNrIiwgImxpbmVQb3MiLCAiY2FyZXQiLCAidGFza0xpbmUiLCAicGFyc2VUYXNrIiwgImdldFRleHQiLCAic3RhcnQiLCAiZW5kIiwgInJlc3QiLCAicmVwbGFjZUxpbmVzIiwgInRvU3RyaW5nIiwgImVuZFRhc2siLCAibGluZVBvcyIsICJjYXJldCIsICJ0YXNrTGluZSIsICJwYXJzZVRhc2siLCAiZ2V0VGV4dCIsICJzdGFydCIsICJlbmQiLCAicmVzdCIsICJyZXBsYWNlTGluZXMiLCAidG9TdHJpbmciLCAidG9nZ2xlVGFzayIsICJsaW5lUG9zIiwgImNhcmV0IiwgInRhc2tMaW5lIiwgInBhcnNlVGFzayIsICJnZXRUZXh0IiwgInN0YXJ0IiwgImVuZCIsICJyZXN0IiwgInN0YXJ0VGFzayIsICJlbmRUYXNrIiwgInJlcGxhY2VMaW5lcyIsICJ0b1N0cmluZyIsICJwb3N0ZXJpb3JpRW5kVGFzayIsICJsaW5lUG9zIiwgImNhcmV0IiwgInRhc2tMaW5lIiwgInBhcnNlVGFzayIsICJnZXRUZXh0IiwgInN0YXJ0IiwgImVuZCIsICJyZXN0IiwgImVuZFRhc2siLCAicHJldkVuZCIsICJ0ZXh0IiwgImdldExpbmVzIiwgInJlY29yZCIsICJub3ciLCAicmVwbGFjZUxpbmVzIiwgInRvU3RyaW5nIiwgImdldExpbmVSYW5nZSIsICJzdGFydCIsICJlbmQiLCAic2VsZWN0ZWRUZXh0IiwgInBvc2l0aW9uIiwgImNhcmV0IiwgImNhbGNTdGFydCIsICJoYXBwZW4iLCAiZHVyYXRpb24iLCAicGFyc2VTcGVjaWZpZXIiLCAidGV4dCIsICJiYXNlIiwgImR1cmF0aW9uIiwgIm5hbWUiLCAicGFyYW0iLCAidHlwZSIsICJwYXJ0cyIsICJ0ZXN0IiwgInBhcnNlIiwgInBhcnNlcnMiLCAibWF0Y2hlcyIsICJkYXRhIiwgImRhdGUiLCAiTiIsICJwIiwgImNhbGNTdGFydCIsICJtYXRjaCIsICJjcmVhdGVUYXNrIiwgImJhc2UiLCAic3RhcnQiLCAiZW5kIiwgImdldExpbmVSYW5nZSIsICJsaW5lcyIsICJnZXRMaW5lcyIsICJsaW5lIiwgInRleHQiLCAibmFtZSIsICJkdXJhdGlvbiIsICJwYXJzZVNwZWNpZmllciIsICJ0b1N0cmluZyIsICJyZXBsYWNlTGluZXMiLCAibW9kaWZ5VGFza3MiLCAic3RhcnQiLCAiZW5kIiwgImNoYW5nZSIsICJsaW5lcyIsICJpIiwgInRleHQiLCAiZ2V0VGV4dCIsICJ0YXNrIiwgInBhcnNlVGFzayIsICJ0b1N0cmluZyIsICJyZXBsYWNlTGluZXMiLCAid2Fsa0RheSIsICJjb3VudCIsICJzdGFydCIsICJlbmQiLCAiZ2V0TGluZVJhbmdlIiwgIm1vZGlmeVRhc2tzIiwgInRhc2siLCAiYyIsICJtb3ZlVG9kYXkiLCAic3RhcnQiLCAiZW5kIiwgImdldExpbmVSYW5nZSIsICJub3ciLCAibW9kaWZ5VGFza3MiLCAidGFzayIsICJuIiwgImJhc2VUaXRsZSIsICJkaWFyeVJlZ0V4cCIsICJzZWN0aW9ucyIsICJ0b0RhdGUiLCAidGl0bGUiLCAibWF0Y2hlZCIsICJkaWFyeVJlZ0V4cCIsICJ5ZWFyIiwgIm1vbnRoIiwgImRhdGUiLCAiZCIsICJuIiwgInRvVGl0bGUiLCAieCIsICJiYXNlVGl0bGUiLCAiZm9ybWF0IiwgImxpbmVzIiwgInRvZGF5IiwgImxhYmVsIiwgIm1ha2VCYWNrTGFiZWwiLCAidGFza0Jsb2NrcyIsICJvdGhlckxpbmVzIiwgIml0ZW0iLCAicGFyc2VMaW5lcyIsICJzZWN0aW9ucyIsICJzb3J0ZWRUYXNrQmxvY2tzIiwgImEiLCAiYiIsICJmIiwgInN0YXJ0RGF0ZSIsICJpbnNlcnRQb2ludCIsICJpIiwgInN0YXJ0IiwgInUiLCAibG93ZXJUYXNrSW5kZXgiLCAidGFzayIsICJzIiwgImUiLCAiZW5kRGF0ZSIsICJibG9jayIsICJqIiwgImsiLCAidG9TdHJpbmciLCAiZm9ybWF0IiwgInByb2plY3QiLCAidGl0bGUiLCAicmVtb3ZlIiwgInRpbWVyIiwgInJlbmRlciIsICJkaXNwb3NlIiwgInVzZVN0YXR1c0JhciIsICJwYXRjaCIsICJsaW5lcyIsICJsaW5lIiwgInB1c2hUYXNrcyIsICJwcm9qZWN0IiwgInRhc2tzIiwgImluaXQiLCAic3RhY2tzIiwgInByb21pc2VzIiwgInRhc2siLCAiZGF0ZSIsICJ0YXNrc18iLCAiaSIsICJuIiwgInBhdGNoIiwgInRvVGl0bGUiLCAibGluZXMiLCAiZm9ybWF0IiwgImxpbmUiLCAidG9TdHJpbmciLCAib25lQnlPbmUiLCAidHJhbnNwb3J0IiwgInByb2plY3QiLCAidGl0bGUiLCAidG8iLCAicmVzdWx0IiwgImdldFBhZ2UiLCAiZGF0ZSIsICJ0b0RhdGUiLCAibGluZXMiLCAidGFza3MiLCAidGFzayIsICJwYXJzZUJsb2NrIiwgIm4iLCAicmVuZGVyIiwgImRpc3Bvc2UiLCAidXNlU3RhdHVzQmFyIiwgInNvY2tldCIsICJtYWtlU29ja2V0IiwgImNvdW50IiwgImZhaWxlZCIsICJwdXNoVGFza3MiLCAicGF0Y2giLCAibmV3TGluZXMiLCAibGluZSIsICJwYXJzZUxpbmVzIiwgImlzU3RyaW5nIiwgInRvU3RyaW5nIiwgImRpc2Nvbm5lY3QiLCAic2xlZXAiLCAiemVybyIsICJuIiwgImlzTG9jYWxEYXRlVGltZSIsICJkYXRlIiwgImlzQmVmb3JlIiwgImZpcnN0IiwgInNlY29uZCIsICJmb3JtYXQiLCAiemVybyIsICJ0b0RhdGUiLCAic3RyIiwgImZyb21EYXRlIiwgInRvRnJlcXVlbmN5IiwgInN5bWJvbCIsICJ0b1N0YXR1cyIsICJzeW1ib2wiLCAiZnJvbVN0YXR1cyIsICJzdGF0dXMiLCAicGFyc2UiLCAidGV4dCIsICJtYXRjaGVkIiwgIm1hdGNoZWRUZXh0IiwgInN0YXR1c1N5bSIsICJzcGVlZFN0ciIsICJzeWVhciIsICJzbW9udGgiLCAic2RhdGUiLCAic2hvdXJzIiwgInNtaW51dGVzIiwgImVob3VyczIiLCAiZW1pbnV0ZXMyIiwgImV5ZWFyIiwgImVtb250aCIsICJlZGF0ZSIsICJlaG91cnMiLCAiZW1pbnV0ZXMiLCAiZHVyYXRpb25TdHIiLCAic3ltYm9sIiwgImNvdW50U3RyIiwgInNzaG91cnMyIiwgInNzbWludXRlczIiLCAic3N5ZWFyIiwgInNzbW9udGgiLCAic3NkYXRlIiwgInNzaG91cnMiLCAic3NtaW51dGVzIiwgImVlaG91cnMyIiwgImVlbWludXRlczIiLCAiZWV5ZWFyIiwgImVlbW9udGgiLCAiZWVkYXRlIiwgImVlaG91cnMiLCAiZWVtaW51dGVzIiwgImR1cmF0aW9uU3RyMiIsICJuYW1lIiwgInJlZkRhdGUiLCAiZml4U3RhcnQiLCAibiIsICJ0b0RhdGUiLCAiZm9ybWF0IiwgImVzdGltYXRlZCIsICJmaXhFbmQiLCAiaXNOdW1iZXIiLCAiaXNCZWZvcmUiLCAiZnJvbURhdGUiLCAidSIsICJzdGF0dXMiLCAidG9TdGF0dXMiLCAiZnJlc2huZXNzIiwgInN0YXJ0IiwgImR1cmF0aW9uIiwgImV4ZWN1dGVkIiwgImlzTG9jYWxEYXRlVGltZSIsICJldmVudCIsICJ0b0ZyZXF1ZW5jeSIsICJ0YXNrIiwgImlzUmVtaW5kZXIiLCAiaXNSZWN1cnJlbmNlIiwgImlzQWxsRGF5IiwgImdldER1cmF0aW9uIiwgImdldFN0YXJ0IiwgImdldEVuZCIsICJlbmQiLCAiYyIsICJ0b1N0cmluZyIsICJmcm9tU3RhdHVzIiwgImJhc2UiLCAibWFrZVJlcGVhdCIsICJkYXRlIiwgImxvY2FsRGF0ZSIsICJyZWN1cnJlbmNlIiwgImkiLCAiaW50ZXJ2YWwiLCAibSIsICJnZW5lcmF0ZWQiLCAiZ2V0TGlua1RpdGxlIiwgInllYXIiLCAibW9udGgiLCAiaG91cnMiLCAibWludXRlcyIsICJiYXNlU3RhcnQiLCAidG9UYXNrTGluZSIsICJ0YXNrIiwgImRhdGUiLCAiaXNSZWN1cnJlbmNlIiwgImdlbmVyYXRlZCIsICJtYWtlUmVwZWF0IiwgInN0YXJ0IiwgInRvRGF0ZSIsICJpc1JlbWluZGVyIiwgImR1cmF0aW9uTWluIiwgImdldER1cmF0aW9uIiwgInRpdGxlIiwgImdldExpbmtUaXRsZSIsICJpc0FsbERheSIsICJmb29kVHlwZSIsICJ0YXNrTGluZUhvb2siLCAidGV4dCIsICJ0aXRsZSIsICJwcm9qZWN0VG8iLCAibW9kZSIsICJ0YXNrTGluZSIsICJsaW5lcyIsICJwYXJzZWQiLCAicGFyc2VUYXNrIiwgInRhc2tOYW1lIiwgImJhc2UiLCAicmVjb3JkIiwgInJlc3QiLCAibmV3VGl0bGUiLCAibWFrZVRhc2tUaXRsZSIsICJuZXdUYXNrTGluZSIsICJ0b1N0cmluZyIsICJtaW5JbmRlbnROdW0iLCAibGluZSIsICJnZXRJbmRlbnRDb3VudCIsICJuZXdMaW5lcyIsICJtYWtlVXBkYXRlciIsICJkYXRlIiwgIngiLCAicGFyc2UiLCAiZmlyc3QiLCAibmV3UGFnZUhvb2siLCAidGl0bGVGcm9tIiwgIm1ldGFMaW5lcyIsICJyYXdUaXRsZSIsICJkYXRlcyIsICJnZXRFYWNoTGF0ZXN0RGF0ZSIsICJ1cGRhdGVkIiwgImEiLCAiYiIsICJzcGxpdHRlZExpbmtIb29rIiwgImluZGVudCIsICJzdHIiLCAibGlua3NMY0luVGV4dCIsICJtYXRjaCIsICJ0b1RpdGxlTGMiLCAicHJldiIsICJsaW5rcyIsICJsaW5rc0xjIiwgImxpbmsiLCAibGlua0xjIiwgImZyb21MaW5lIiwgImRhdGVUYWdzIiwgInl5eXlNTWRkIiwgIkhIbW1zcyIsICJwcmV2TGluZXMiLCAiaW5kZXgiLCAiaW5zZXJ0QmVmb3JlIiwgInBkIiwgImUiLCAic3AiLCAidGFza0NvbW1vbiIsICJzdGFydCIsICJlbmQiLCAiZ2V0TGluZVJhbmdlIiwgInRleHQiLCAiZ2V0TGluZXMiLCAibGluZSIsICJsaW5rIiwgInJlc3VsdCIsICJwYXJzZSIsICJ0YXNrIiwgInRhc2tMaW5lIiwgInRvVGFza0xpbmUiLCAidG9TdHJpbmciLCAicmVwbGFjZUxpbmVzIiwgImNyZWF0ZVRhc2siLCAidHJhbnNwb3J0IiwgInNlbGVjdGVkVGV4dCIsICJwb3NpdGlvbiIsICJjYXJldCIsICJwZCIsICJlIiwgInNwIiwgInRhc2siLCAiYWRkVGFzayIsICJzdGFydFRhc2siLCAiZW5kVGFzayIsICJwb3N0ZXJpb3JpRW5kVGFzayIsICJ3YWxrRGF5IiwgIm1vdmVUb2RheSIsICJmb3JtYXQiLCAicGQiLCAiZSIsICJzcCIsICJjbGlja1BvcHVwIiwgImJ1dHRvbk5hbWUiLCAiYnV0dG9ucyIsICJwb3B1cE1lbnUiLCAiYnV0dG9uIiwgInBvcHVwIiwgIm5hdmlnYXRpb24iLCAibGluZSIsICJjaGFyIiwgImNhcmV0IiwgImEiLCAiZ2V0Q2hhckRPTSIsICJnZXRMaW5lRE9NIiwgIm1vdGlvbiIsICJnb0hlYWRMaW5lIiwgImdvTGFzdExpbmUiLCAiaG9va3MiLCAidGFza0xpbmVIb29rIiwgIm5ld1BhZ2VIb29rIiwgInNwbGl0dGVkTGlua0hvb2siLCAiZWRpdCIsICJwcm9qZWN0IiwgIm1ha2VOZXdQYWdlIiwgIm91dGRlbnRMaW5lcyIsICJkb3duTGluZXMiLCAidXBMaW5lcyIsICJpbmRlbnRMaW5lcyIsICJvdXRkZW50QmxvY2tzIiwgImRvd25CbG9ja3MiLCAidXBCbG9ja3MiLCAiaW5kZW50QmxvY2tzIiwgInRpbWVzdGFtcCIsICJpbnNlcnRUZXh0IiwgIngiLCAiY29uZmlnIiwgInRhc2tDb21tb24iLCAicmVuZGVyIiwgInVzZVN0YXR1c0JhciIsICJhbmltYXRpb25JZCIsICJvblNlcXVlbmNlVXBkYXRlIiwgInRleHQiLCAic2NyYXBCaW5kaW5ncyIsICJNb3VzZXRyYXAiLCAiYWRkVGV4dElucHV0RXZlbnRMaXN0ZW5lciIsICJyZW1vdmVUZXh0SW5wdXRFdmVudExpc3RlbmVyIiwgImVycm9ycyIsICJjb25maWciLCAidGFzayIsICJzZXEiLCAibWVzc2FnZXMiLCAibWVzc2FnZSIsICJnZXRXYXRjaExpc3QiLCAidmFsdWUiLCAibGlzdCIsICJpZHMiLCAiYSIsICJiIiwgInByb2plY3RJZCIsICJyZXN1bHQiLCAibGlzdFByb2plY3RzIiwgImpvaW5lZElkcyIsICJwcm9qZWN0IiwgImlkIiwgImthdGV4IiwgImRlZmF1bHRWZXJzaW9uIiwgImluaXRpYWxpemVkIiwgImltcG9ydEthVGVYIiwgInZlcnNpb24iLCAidXJsIiwgInJlc29sdmUiLCAidGltZXIiLCAic2NyaXB0IiwgInJlamVjdCIsICJlIiwgInVzZUthVGVYIiwgIl9mb3JtdWxhIiwgIm9wdGlvbnMiLCAicmVmIiwgInoiLCAiZm9ybXVsYSIsICJzZXRGb3JtdWxhIiwgIkIiLCAiZXJyb3IiLCAic2V0RXJyb3IiLCAidyIsICJyZW5kZXIiLCAiaW1wb3J0S2FUZVgiLCAiZSIsICJtYWtlVGhyb3R0bGUiLCAibWF4IiwgInF1ZXVlIiwgInBlbmRpbmdzIiwgInJ1bk5leHQiLCAicHJldiIsICJ0YXNrIiwgInByb21pc2UiLCAicmVzdWx0IiwgImVycm9yIiwgImpvYiIsICJyZXNvbHZlIiwgInJlamVjdCIsICJjYWNoZVZlcnNpb24iLCAiY2FjaGVOYW1lIiwgImNhY2hlIiwgIm5hbWUiLCAidGhyb3R0bGUiLCAibWFrZVRocm90dGxlIiwgImNhY2hlRmlyc3RGZXRjaCIsICJyZXEiLCAib3B0aW9ucyIsICJjYWNoZVByb21pc2UiLCAiZmluZExhdGVzdENhY2hlIiwgInJlcyIsICJ0aW1lciIsICJzbGVlcCIsICJmaXJzdCIsICJuZXR3b3JrUHJvbWlzZSIsICJ0eXBlIiwgImlzRXhwaXJlZCIsICJyZXNwb25zZSIsICJtYXhBZ2UiLCAibWFrZUVtaXR0ZXIiLCAibGlzdGVuZXJzTWFwIiwgImV2ZW50TmFtZSIsICJ2YWx1ZSIsICJsaXN0ZW5lcnMiLCAibGlzdGVuZXIiLCAiZGVidWdNb2RlIiwgInNldERlYnVnTW9kZSIsICJtb2RlIiwgImNyZWF0ZURlYnVnIiwgImZpbGVuYW1lIiwgImtleSIsICJ2YWx1ZSIsICJhcmdzIiwgImFzc2VydGlvbiIsICJsYWJlbCIsICJlbWl0dGVyIiwgIm1ha2VFbWl0dGVyIiwgInByb2plY3RNYXAiLCAibG9nZ2VyIiwgImNyZWF0ZURlYnVnIiwgInVzZVByb2plY3QiLCAicHJvamVjdCIsICJwcm9qZWN0UmVzdWx0IiwgInNldFByb2plY3RSZXN1bHQiLCAiQiIsICJ3IiwgInN0YXRlIiwgInJlcSIsICJnZXRQcm9qZWN0IiwgInJlcyIsICJjYWNoZUZpcnN0RmV0Y2giLCAicmVzdWx0IiwgImUiLCAiZGVmYXVsdHMiLCAicGFwZXJzIiwgInN0YXRpb25hcmllcyIsICJoYWNrZXJzIiwgInNlYXNvbnMiLCAidHJvcGljYWxzIiwgImNpdGllcyIsICJnYW1lcyIsICJsaWdodFRoZW1lcyIsICJ0aGVtZXMiLCAiZGVmYXVsdHMiLCAicGFwZXJzIiwgInN0YXRpb25hcmllcyIsICJoYWNrZXJzIiwgInNlYXNvbnMiLCAidHJvcGljYWxzIiwgImNpdGllcyIsICJnYW1lcyIsICJpc1RoZW1lIiwgInRoZW1lIiwgImRlZmF1bHRUaGVtZSIsICJ1c2VUaGVtZSIsICJwcm9qZWN0IiwgInJlcyIsICJ1c2VQcm9qZWN0IiwgIlQiLCAidGhlbWUiLCAiaXNUaGVtZSIsICJzdGF5SG92ZXJpbmciLCAiZWxlbWVudCIsICJpbnRlcnZhbCIsICJyZXNvbHZlIiwgImNhbmNlbGVkIiwgImhhbmRsZUNhbmNlbCIsICJjYWxjQnViYmxlUG9zaXRpb24iLCAidGFyZ2V0IiwgInRvcCIsICJyaWdodCIsICJsZWZ0IiwgImJvdHRvbSIsICJyb290IiwgImFkanVzdFJpZ2h0IiwgIkNhcmQiLCAicHJvamVjdCIsICJ0aXRsZSIsICJkZXNjcmlwdGlvbnMiLCAidGh1bWJuYWlsIiwgImxpbmtUbyIsICJidWJibGUiLCAiZGVsYXkiLCAicHJlZmV0Y2giLCAiYmxvY2tzIiwgIlQiLCAicWUiLCAidGhlbWUiLCAidXNlVGhlbWUiLCAiaGFuZGxlRW50ZXIiLCAiTSIsICJhIiwgInN0YXlIb3ZlcmluZyIsICJjYWxjQnViYmxlUG9zaXRpb24iLCAiaGFuZGxlQ2xpY2siLCAicHVzaFBhZ2VUcmFuc2l0aW9uIiwgInNlIiwgImVuY29kZVRpdGxlVVJJIiwgImJsb2NrIiwgImluZGV4IiwgIm5vZGUiLCAiU3VtbWFyeU5vZGUiLCAiRm9ybXVsYSIsICJOIiwgIkljb24iLCAiSGFzaFRhZyIsICJMaW5rIiwgImZvcm11bGEiLCAicmVmIiwgImVycm9yIiwgInNldEZvcm11bGEiLCAidXNlS2FUZVgiLCAicGF0aFR5cGUiLCAicGF0aCIsICJfcHJvamVjdCIsICJocmVmIiwgImNvbnRlbnQiLCAidG9JZCIsICJwcm9qZWN0IiwgInRpdGxlIiwgInRvVGl0bGVMYyIsICJmcm9tSWQiLCAiaWQiLCAibWF0Y2hlcyIsICJOT1RISU5HIiwgIkRSQUZUQUJMRSIsICJEUkFGVF9TVEFURSIsICJkaWUiLCAiZXJyb3IiLCAiYXJncyIsICJnZXRQcm90b3R5cGVPZiIsICJpc0RyYWZ0IiwgInZhbHVlIiwgImlzRHJhZnRhYmxlIiwgImlzUGxhaW5PYmplY3QiLCAiaXNNYXAiLCAiaXNTZXQiLCAib2JqZWN0Q3RvclN0cmluZyIsICJwcm90byIsICJDdG9yIiwgImVhY2giLCAib2JqIiwgIml0ZXIiLCAiZ2V0QXJjaHR5cGUiLCAia2V5IiwgImVudHJ5IiwgImluZGV4IiwgInRoaW5nIiwgInN0YXRlIiwgIkRSQUZUX1NUQVRFIiwgImlzTWFwIiwgImlzU2V0IiwgImhhcyIsICJwcm9wIiwgInNldCIsICJ0aGluZyIsICJwcm9wT3JPbGRWYWx1ZSIsICJ2YWx1ZSIsICJ0IiwgImdldEFyY2h0eXBlIiwgImlzIiwgIngiLCAieSIsICJpc01hcCIsICJ0YXJnZXQiLCAiaXNTZXQiLCAibGF0ZXN0IiwgInN0YXRlIiwgInNoYWxsb3dDb3B5IiwgImJhc2UiLCAic3RyaWN0IiwgImlzUGxhaW4iLCAiaXNQbGFpbk9iamVjdCIsICJkZXNjcmlwdG9ycyIsICJEUkFGVF9TVEFURSIsICJrZXlzIiwgImkiLCAia2V5IiwgImRlc2MiLCAiZ2V0UHJvdG90eXBlT2YiLCAicHJvdG8iLCAib2JqIiwgImZyZWV6ZSIsICJkZWVwIiwgImlzRnJvemVuIiwgImlzRHJhZnQiLCAiaXNEcmFmdGFibGUiLCAiZG9udE11dGF0ZUZyb3plbkNvbGxlY3Rpb25zIiwgImRpZSIsICJwbHVnaW5zIiwgImdldFBsdWdpbiIsICJwbHVnaW5LZXkiLCAicGx1Z2luIiwgImxvYWRQbHVnaW4iLCAiaW1wbGVtZW50YXRpb24iLCAiY3VycmVudFNjb3BlIiwgImdldEN1cnJlbnRTY29wZSIsICJjcmVhdGVTY29wZSIsICJwYXJlbnRfIiwgImltbWVyXyIsICJ1c2VQYXRjaGVzSW5TY29wZSIsICJzY29wZSIsICJwYXRjaExpc3RlbmVyIiwgInJldm9rZVNjb3BlIiwgImxlYXZlU2NvcGUiLCAicmV2b2tlRHJhZnQiLCAiZW50ZXJTY29wZSIsICJpbW1lciIsICJkcmFmdCIsICJwcm9jZXNzUmVzdWx0IiwgInJlc3VsdCIsICJiYXNlRHJhZnQiLCAiZmluYWxpemUiLCAibWF5YmVGcmVlemUiLCAiTk9USElORyIsICJyb290U2NvcGUiLCAicGF0aCIsICJlYWNoIiwgImNoaWxkVmFsdWUiLCAiZmluYWxpemVQcm9wZXJ0eSIsICJyZXN1bHRFYWNoIiwgInBhcmVudFN0YXRlIiwgInRhcmdldE9iamVjdCIsICJwcm9wIiwgInJvb3RQYXRoIiwgInRhcmdldElzU2V0IiwgImhhcyIsICJyZXMiLCAiY3JlYXRlUHJveHlQcm94eSIsICJwYXJlbnQiLCAiaXNBcnJheSIsICJ0cmFwcyIsICJvYmplY3RUcmFwcyIsICJhcnJheVRyYXBzIiwgInJldm9rZSIsICJwcm94eSIsICJzb3VyY2UiLCAicmVhZFByb3BGcm9tUHJvdG8iLCAicGVlayIsICJwcmVwYXJlQ29weSIsICJjcmVhdGVQcm94eSIsICJnZXREZXNjcmlwdG9yRnJvbVByb3RvIiwgImN1cnJlbnQiLCAiY3VycmVudFN0YXRlIiwgIm1hcmtDaGFuZ2VkIiwgIm93bmVyIiwgImZuIiwgIkltbWVyIiwgImNvbmZpZyIsICJyZWNpcGUiLCAiZGVmYXVsdEJhc2UiLCAic2VsZiIsICJhcmdzIiwgImhhc0Vycm9yIiwgInAiLCAiaXAiLCAicGF0Y2hlcyIsICJpbnZlcnNlUGF0Y2hlcyIsICJwYXRjaCIsICJhcHBseVBhdGNoZXNJbXBsIiwgImN1cnJlbnRJbXBsIiwgImNvcHkiLCAiZW5hYmxlTWFwU2V0IiwgIkRyYWZ0TWFwIiwgInRhcmdldCIsICJwYXJlbnQiLCAiRFJBRlRfU1RBVEUiLCAiZ2V0Q3VycmVudFNjb3BlIiwgImxhdGVzdCIsICJrZXkiLCAidmFsdWUiLCAic3RhdGUiLCAiYXNzZXJ0VW5yZXZva2VkIiwgInByZXBhcmVNYXBDb3B5IiwgIm1hcmtDaGFuZ2VkIiwgImVhY2giLCAiY2IiLCAidGhpc0FyZyIsICJfdmFsdWUiLCAiX21hcCIsICJpc0RyYWZ0YWJsZSIsICJkcmFmdCIsICJjcmVhdGVQcm94eSIsICJpdGVyYXRvciIsICJyIiwgInByb3h5TWFwXyIsICJEcmFmdFNldCIsICJwcmVwYXJlU2V0Q29weSIsICJyZXN1bHQiLCAicHJveHlTZXRfIiwgImRpZSIsICJsb2FkUGx1Z2luIiwgImltbWVyIiwgIkltbWVyIiwgInByb2R1Y2UiLCAicHJvZHVjZVdpdGhQYXRjaGVzIiwgInNldEF1dG9GcmVlemUiLCAic2V0VXNlU3RyaWN0U2hhbGxvd0NvcHkiLCAiYXBwbHlQYXRjaGVzIiwgImNyZWF0ZURyYWZ0IiwgImZpbmlzaERyYWZ0IiwgInZlIiwgImlzRW1wdHlMaW5rIiwgImJ1YmJsZXMiLCAibGlua2VkIiwgImJ1YmJsZSIsICJ1cGRhdGUiLCAicHJldiIsICJjdXJyZW50IiwgInplIiwgImRyYWZ0IiwgImxpbmVzIiwgInByb2plY3RMaW5rZWQiLCAicmVzdCIsICJpc0R1bW15IiwgImNvbnZlcnQiLCAicHJvamVjdCIsICJwYWdlIiwgInN0b3JhZ2UiLCAidGl0bGVMYyIsICJ0b1RpdGxlTGMiLCAibGluayIsICJidWJibGUiLCAibWFrZUR1bW15IiwgInRvSWQiLCAicGFnZUlkIiwgInByb2plY3RMaW5rc0xjIiwgImlkIiwgImZyb21JZCIsICJwYWdlQnViYmxlIiwgInRvQnViYmxlIiwgImxpbmtzTGMiLCAiY2FyZCIsICJsaW5rTGMiLCAiY2FyZElkIiwgImxpbmtlZCIsICJwcm9qZWN0TGlua2VkIiwgInRleHQiLCAidGl0bGUiLCAibG9nZ2VyIiwgImNyZWF0ZURlYnVnIiwgInN0b3JhZ2UiLCAibG9hZGluZ0lkcyIsICJlbWl0dGVyIiwgIm1ha2VFbWl0dGVyIiwgImxvYWQiLCAicGFnZUlkcyIsICJwYWdlSWQiLCAic3Vic2NyaWJlIiwgImxpc3RlbmVyIiwgInVuc3Vic2NyaWJlIiwgInByZWZldGNoIiwgInRpdGxlIiwgInByb2plY3RzIiwgIndhdGNoTGlzdCIsICJvcHRpb25zIiwgInByb21pc2VzIiwgInByb2plY3QiLCAiaWQiLCAidG9JZCIsICJ1cGRhdGVBcGlDYWNoZSIsICJjb3VudGVyIiwgImkiLCAidGltZVRhZyIsICJyZXEiLCAiZ2V0UGFnZSIsICJ0eXBlIiwgInJlcyIsICJjYWNoZUZpcnN0RmV0Y2giLCAicmVzdWx0IiwgImNvbnZlcnRlZCIsICJjb252ZXJ0IiwgImJ1YmJsZUlkIiwgImJ1YmJsZSIsICJwcmV2IiwgInVwZGF0ZWRCdWJibGUiLCAidXBkYXRlIiwgImlzRXhwaXJlZCIsICJlIiwgImxvZ2dlciIsICJjcmVhdGVEZWJ1ZyIsICJ1c2VCdWJibGVEYXRhIiwgInBhZ2VJZHMiLCAiYnViYmxlcyIsICJzZXRCdWJibGVzIiwgIkIiLCAibWFrZUJ1YmJsZXMiLCAidyIsICJ0aW1lciIsICJ1cGRhdGVEYXRhIiwgImlkIiwgInN1YnNjcmliZSIsICJ1bnN1YnNjcmliZSIsICJsb2FkIiwgImJ1YmJsZSIsICJDYXJkTGlzdCIsICJzb3VyY2UiLCAibGlua2VkIiwgImV4dGVybmFsTGlua2VkIiwgInByb2plY3RzRm9yU29ydF8iLCAicHJvcHMiLCAiaWRzIiwgIlQiLCAiY2FyZHMiLCAidXNlQnViYmxlRGF0YSIsICJwcm9qZWN0c0ZvclNvcnQiLCAic29ydGVkQ2FyZHMiLCAiY29tcGFyZSIsICJhIiwgImIiLCAiYUluZGV4IiwgImJJbmRleCIsICJjYXJkU3R5bGUiLCAic2UiLCAicHJvamVjdCIsICJ0aXRsZUxjIiwgInRpdGxlIiwgImRlc2NyaXB0aW9ucyIsICJpbWFnZSIsICJrZXkiLCAidG9JZCIsICJsaW5rVG8iLCAiQ2FyZCIsICJwYXJzZUxpbmsiLCAibGluayIsICJwcm9qZWN0IiwgInRpdGxlIiwgImhhc2giLCAiaGFzTGluayIsICJsaW5rIiwgIm5vZGVzIiwgIm5vZGUiLCAiaXNSZWxhdGl2ZSIsICJ0b1RpdGxlTGMiLCAicHJvamVjdCIsICJ0aXRsZSIsICJwYXJzZUxpbmsiLCAiY29udGV4dCIsICJtZSIsICJQYWdlIiwgImxpbmVzIiwgInByb2plY3QiLCAidGl0bGUiLCAid2hpdGVMaXN0IiwgIm5vSW5kZW50IiwgImhhc2giLCAibGlua1RvIiwgInByb3BzIiwgImxpbmVJZHMiLCAiVCIsICJsaW5lIiwgImJsb2NrcyIsICJjb3VudGVyIiwgInFlIiwgImJsb2NrIiwgInN0YXJ0IiwgInNjcm9sbElkIiwgImhhc0xpbmsiLCAicmVmIiwgInoiLCAidyIsICJ0YXJnZXRMaW5lIiwgInNjcm9sbFkiLCAidGhlbWUiLCAidXNlVGhlbWUiLCAic2UiLCAiTiIsICJMaW5lIiwgImVuY29kZVRpdGxlVVJJIiwgIkNvZGVCbG9jayIsICJUYWJsZSIsICJub2RlIiwgIk5vZGUiLCAiaW5kZXgiLCAiaW5kZW50IiwgImNoaWxkcmVuIiwgInBlcm1hbGluayIsICJmaWxlTmFtZSIsICJjb250ZW50IiwgImlkcyIsICJHIiwgImJ1dHRvbkxhYmVsIiwgInNldEJ1dHRvbkxhYmVsIiwgIkIiLCAiaGFuZGxlQ2xpY2siLCAiTSIsICJlIiwgInNsZWVwIiwgImNlbGxzIiwgImNlbGwiLCAiaSIsICJyb3ciLCAiRm9ybXVsYSIsICJDb21tYW5kTGluZSIsICJEZWNvcmF0aW9uIiwgIkhhc2hUYWciLCAiTGluayIsICJHb29nbGVNYXAiLCAiSWNvbiIsICJJbWFnZSIsICJmb3JtdWxhIiwgImVycm9yIiwgInNldEZvcm11bGEiLCAidXNlS2FUZVgiLCAiZGVjb3MiLCAibm9kZXMiLCAiZGVjbyIsICJwbGFjZSIsICJsYXRpdHVkZSIsICJsb25naXR1ZGUiLCAiem9vbSIsICJwYXRoVHlwZSIsICJwYXRoIiwgInN0cm9uZyIsICJfcHJvamVjdCIsICJ0aXRsZUxjIiwgImxpbmsiLCAic3JjIiwgImhyZWYiLCAiZW1wdHlMaW5rIiwgInVzZUVtcHR5TGluayIsICJoYW5kbGVIb3ZlciIsICJ1c2VIb3ZlciIsICJTY3JhcGJveExpbmsiLCAibGlua05vZGUiLCAicGFyc2VBYnNvbHV0ZUxpbmsiLCAiWW91dHViZSIsICJWaW1lbyIsICJTcG90aWZ5IiwgIkFuY2hvckZNIiwgIkF1ZGlvIiwgIlZpZGVvIiwgInByb2plY3RfIiwgInBhcnNlTGluayIsICJ2aWRlb0lkIiwgIkF1ZGlvTGluayIsICJ0b2dnbGVQbGF5IiwgInBhZ2VJZHMiLCAidG9JZCIsICJidWJibGVzIiwgInVzZUJ1YmJsZURhdGEiLCAiaXNFbXB0eUxpbmsiLCAidHlwZSIsICJkZWxheSIsICJidWJibGUiLCAicHJlZmV0Y2giLCAiYSIsICJzdGF5SG92ZXJpbmciLCAiY2FsY0J1YmJsZVBvc2l0aW9uIiwgIlRleHRCdWJibGUiLCAicGFnZXMiLCAib25DbGljayIsICJzb3VyY2UiLCAid2hpdGVMaXN0IiwgInJlc3QiLCAiYWN0aXZlVGFiIiwgInNldEFjdGl2ZVRhYiIsICJCIiwgInRvSWQiLCAicGFnZVN0eWxlIiwgIlQiLCAic2UiLCAicGFnZSIsICJUYWIiLCAiVGFiUGFuZWwiLCAicHJvamVjdCIsICJ0aXRsZUxjIiwgInRhYlNlbGVjdG9yIiwgInNlbGVjdGVkIiwgImhhbmRsZUNsaWNrIiwgIk0iLCAidGhlbWUiLCAidXNlVGhlbWUiLCAiUGFnZSIsICJsb2dnZXIiLCAiY3JlYXRlRGVidWciLCAiQnViYmxlIiwgInNvdXJjZSIsICJwYXJlbnRUaXRsZXMiLCAid2hpdGVMaXN0IiwgInByb3BzIiwgInByb2plY3RzIiwgIlQiLCAibGlua2VkIiwgImV4dGVybmFsTGlua2VkIiwgInBhZ2VzIiwgInVzZUJ1YmJsZUZpbHRlciIsICJzZSIsICJOIiwgImhhc09uZUJ1YmJsZSIsICJUZXh0QnViYmxlIiwgIkNhcmRMaXN0IiwgInNldEJ1YmJsZURhdGEiLCAiQiIsICJwYWdlSWRzIiwgInByb2plY3QiLCAidG9JZCIsICJidWJibGVzIiwgInVzZUJ1YmJsZURhdGEiLCAicGFyZW50c0xjIiwgInRpdGxlIiwgInRvVGl0bGVMYyIsICJSIiwgImJ1YmJsZSIsICJlTGlua1RvIiwgImlkIiwgInRpdGxlTGMiLCAiZnJvbUlkIiwgImxpbmtUbyIsICJsaW5rTGMiLCAiemUiLCAiZHJhZnQiLCAia2V5IiwgInZhbHVlIiwgImRldGVjdFVSTCIsICJ0ZXh0IiwgImJhc2UiLCAiZSIsICJVc2VyQ1NTIiwgInByb3BzIiwgInVybCIsICJUIiwgImRldGVjdFVSTCIsICJzZSIsICJOIiwgIkNTUyIsICJ1c2VCdWJibGVzIiwgImJ1YmJsZXMiLCAic2V0QnViYmxlcyIsICJCIiwgInNvdXJjZSIsICJjaGFuZ2UiLCAiTSIsICJkZXB0aCIsICJmaXJzdCIsICJwcmV2IiwgImJ1YmJsZSIsICJ1c2VFdmVudExpc3RlbmVyIiwgImVsZW1lbnQiLCAidHlwZSIsICJsaXN0ZW5lciIsICJvcHRpb25zIiwgImRlcHMiLCAidyIsICJpc1RpdGxlIiwgImVsZW1lbnQiLCAiaXNQYWdlTGluayIsICJ1c2Vyc2NyaXB0TmFtZSIsICJBcHAiLCAiZGVsYXkiLCAid2hpdGVMaXN0IiwgIndhdGNoTGlzdCIsICJzdHlsZSIsICJidWJibGUiLCAiaGlkZSIsICJidWJibGVzIiwgInVzZUJ1YmJsZXMiLCAicHJlZmV0Y2giLCAiTSIsICJwcm9qZWN0IiwgInRpdGxlIiwgInVzZUV2ZW50TGlzdGVuZXIiLCAiZXZlbnQiLCAibGluayIsICJpc1BhZ2VMaW5rIiwgImlzVGl0bGUiLCAiZW5jb2RlZFRpdGxlIiwgImhhc2giLCAicGFyc2VMaW5rIiwgInN0YXlIb3ZlcmluZyIsICJjYWxjQnViYmxlUG9zaXRpb24iLCAiZ2V0TGlua1R5cGUiLCAiZSIsICJ3IiwgInNlIiwgIk4iLCAiQ1NTIiwgIlVzZXJDU1MiLCAiQnViYmxlIiwgInRvSWQiLCAiZWxlbWVudCIsICJtb3VudCIsICJpbml0IiwgImRlbGF5IiwgIndoaXRlTGlzdCIsICJ3YXRjaExpc3QiLCAiZ2V0V2F0Y2hMaXN0IiwgInN0eWxlIiwgImRlYnVnIiwgInNldERlYnVnTW9kZSIsICJhcHAiLCAidXNlcnNjcmlwdE5hbWUiLCAic2hhZG93Um9vdCIsICJkZSIsICJzZSIsICJBcHAiLCAidGFra2VyX2xpc3QiLCAiYWRkaXRpb25hbF9saXN0IiwgIm1vdW50IiwgInBhcnNlQ29kZVRpdGxlIiwgInRpdGxlIiwgIm1hdGNoIiwgImxhbmciLCAiZ2V0Q29kZUZpbGVzIiwgInByb2plY3QiLCAidGl0bGUiLCAibGluZXMiLCAiaW5wdXQiLCAibGluZSIsICJibG9ja3MiLCAicWUiLCAiY29kZXMiLCAiY291bnRlciIsICJibG9jayIsICJmaWxlTmFtZSIsICJsYW5nIiwgInBhcnNlQ29kZVRpdGxlIiwgInByZXYiLCAiZW5jb2RlVGl0bGVVUkkiLCAiZW5jb2RlUGFja2V0IiwgInBhY2tldCIsICJ2aXNpdCIsICJ2YWx1ZSIsICJiYiIsICJlbmNvZGVVVEY4IiwgIml0ZW0iLCAia2V5cyIsICJrZXkiLCAiQnl0ZUJ1ZmZlciIsICJ3cml0ZVVJbnQzMkxFIiwgImRlY29kZVBhY2tldCIsICJieXRlcyIsICJkZWNvZGVVVEY4IiwgImNvdW50IiwgImkiLCAiaWQiLCAiaXNSZXF1ZXN0IiwgImJ1ZiIsICJkZWx0YSIsICJjbG9uZSIsICJvZmZzZXQiLCAicmVhZFVJbnQzMkxFIiwgImxlbmd0aCIsICJwdHIiLCAiZW5jb2RlSW52YXJpYW50IiwgImVuY29kZXIiLCAiZGVjb2RlciIsICJ0ZXh0IiwgImJ1ZmZlciIsICJFU0JVSUxEX1ZFUlNJT04iLCAicXVvdGUiLCAiYnVpbGRMb2dMZXZlbERlZmF1bHQiLCAidHJhbnNmb3JtTG9nTGV2ZWxEZWZhdWx0IiwgInZhbGlkYXRlVGFyZ2V0IiwgInRhcmdldCIsICJ2YWxpZGF0ZVN0cmluZ1ZhbHVlIiwgImNhbkJlQW55dGhpbmciLCAibXVzdEJlQm9vbGVhbiIsICJ2YWx1ZSIsICJtdXN0QmVTdHJpbmciLCAibXVzdEJlUmVnRXhwIiwgIm11c3RCZUludGVnZXIiLCAibXVzdEJlRnVuY3Rpb24iLCAibXVzdEJlQXJyYXkiLCAibXVzdEJlT2JqZWN0IiwgIm11c3RCZUVudHJ5UG9pbnRzIiwgIm11c3RCZVdlYkFzc2VtYmx5TW9kdWxlIiwgIm11c3RCZU9iamVjdE9yTnVsbCIsICJtdXN0QmVTdHJpbmdPckJvb2xlYW4iLCAibXVzdEJlU3RyaW5nT3JPYmplY3QiLCAibXVzdEJlU3RyaW5nT3JBcnJheSIsICJtdXN0QmVTdHJpbmdPclVpbnQ4QXJyYXkiLCAibXVzdEJlU3RyaW5nT3JVUkwiLCAiZ2V0RmxhZyIsICJvYmplY3QiLCAia2V5cyIsICJrZXkiLCAibXVzdEJlRm4iLCAibXVzdEJlIiwgImNoZWNrRm9ySW52YWxpZEZsYWdzIiwgIndoZXJlIiwgInZhbGlkYXRlSW5pdGlhbGl6ZU9wdGlvbnMiLCAib3B0aW9ucyIsICJ3YXNtTW9kdWxlIiwgIndvcmtlclVSTCIsICJ2YWxpZGF0ZU1hbmdsZUNhY2hlIiwgIm1hbmdsZUNhY2hlIiwgInZhbGlkYXRlZCIsICJwdXNoTG9nRmxhZ3MiLCAiZmxhZ3MiLCAiaXNUVFkiLCAibG9nTGV2ZWxEZWZhdWx0IiwgImNvbG9yIiwgImxvZ0xldmVsIiwgImxvZ0xpbWl0IiwgIndoYXQiLCAicHVzaENvbW1vbkZsYWdzIiwgImxlZ2FsQ29tbWVudHMiLCAic291cmNlUm9vdCIsICJzb3VyY2VzQ29udGVudCIsICJmb3JtYXQiLCAiZ2xvYmFsTmFtZSIsICJtYW5nbGVQcm9wcyIsICJyZXNlcnZlUHJvcHMiLCAibWFuZ2xlUXVvdGVkIiwgIm1pbmlmeSIsICJtaW5pZnlTeW50YXgiLCAibWluaWZ5V2hpdGVzcGFjZSIsICJtaW5pZnlJZGVudGlmaWVycyIsICJsaW5lTGltaXQiLCAiZHJvcCIsICJkcm9wTGFiZWxzIiwgImNoYXJzZXQiLCAidHJlZVNoYWtpbmciLCAiaWdub3JlQW5ub3RhdGlvbnMiLCAianN4IiwgImpzeEZhY3RvcnkiLCAianN4RnJhZ21lbnQiLCAianN4SW1wb3J0U291cmNlIiwgImpzeERldiIsICJqc3hTaWRlRWZmZWN0cyIsICJkZWZpbmUiLCAibG9nT3ZlcnJpZGUiLCAic3VwcG9ydGVkIiwgInB1cmUiLCAia2VlcE5hbWVzIiwgInBsYXRmb3JtIiwgInRzY29uZmlnUmF3IiwgImZuIiwgImZsYWdzRm9yQnVpbGRPcHRpb25zIiwgImNhbGxOYW1lIiwgIndyaXRlRGVmYXVsdCIsICJlbnRyaWVzIiwgInN0ZGluQ29udGVudHMiLCAic3RkaW5SZXNvbHZlRGlyIiwgInNvdXJjZW1hcCIsICJidW5kbGUiLCAic3BsaXR0aW5nIiwgInByZXNlcnZlU3ltbGlua3MiLCAibWV0YWZpbGUiLCAib3V0ZmlsZSIsICJvdXRkaXIiLCAib3V0YmFzZSIsICJ0c2NvbmZpZyIsICJyZXNvbHZlRXh0ZW5zaW9ucyIsICJub2RlUGF0aHNJbnB1dCIsICJtYWluRmllbGRzIiwgImNvbmRpdGlvbnMiLCAiZXh0ZXJuYWwiLCAicGFja2FnZXMiLCAiYWxpYXMiLCAibG9hZGVyIiwgIm91dEV4dGVuc2lvbiIsICJwdWJsaWNQYXRoIiwgImVudHJ5TmFtZXMiLCAiY2h1bmtOYW1lcyIsICJhc3NldE5hbWVzIiwgImluamVjdCIsICJiYW5uZXIiLCAiZm9vdGVyIiwgImVudHJ5UG9pbnRzIiwgImFic1dvcmtpbmdEaXIiLCAic3RkaW4iLCAid3JpdGUiLCAiYWxsb3dPdmVyd3JpdGUiLCAidmFsdWVzIiwgIm5hbWUiLCAib2xkIiwgInR5cGUiLCAicGF0aCIsICJleHQiLCAiaSIsICJuIiwgImVudHJ5UG9pbnQiLCAiZW50cnlQb2ludEtleXMiLCAiaW5wdXQiLCAib3V0cHV0IiwgInN0ZGluS2V5cyIsICJjb250ZW50cyIsICJyZXNvbHZlRGlyIiwgInNvdXJjZWZpbGUiLCAiZW5jb2RlVVRGOCIsICJub2RlUGF0aHMiLCAiZmxhZ3NGb3JUcmFuc2Zvcm1PcHRpb25zIiwgImNyZWF0ZUNoYW5uZWwiLCAic3RyZWFtSW4iLCAicmVxdWVzdENhbGxiYWNrc0J5S2V5IiwgImNsb3NlRGF0YSIsICJyZXNwb25zZUNhbGxiYWNrcyIsICJuZXh0UmVxdWVzdElEIiwgIm5leHRCdWlsZEtleSIsICJzdGRvdXQiLCAic3Rkb3V0VXNlZCIsICJyZWFkRnJvbVN0ZG91dCIsICJjaHVuayIsICJsaW1pdCIsICJzd2FwIiwgIm9mZnNldCIsICJsZW5ndGgiLCAicmVhZFVJbnQzMkxFIiwgImhhbmRsZUluY29taW5nUGFja2V0IiwgImFmdGVyQ2xvc2UiLCAiZXJyb3IiLCAidGV4dCIsICJpZCIsICJzZW5kUmVxdWVzdCIsICJyZWZzIiwgImNhbGxiYWNrIiwgInJlc3BvbnNlIiwgImVuY29kZVBhY2tldCIsICJzZW5kUmVzcG9uc2UiLCAiaGFuZGxlUmVxdWVzdCIsICJyZXF1ZXN0IiwgInJlcXVlc3RDYWxsYmFja3MiLCAiZSIsICJlcnJvcnMiLCAiZXh0cmFjdEVycm9yTWVzc2FnZVY4IiwgImlzRmlyc3RQYWNrZXQiLCAiYnl0ZXMiLCAiYmluYXJ5VmVyc2lvbiIsICJFU0JVSUxEX1ZFUlNJT04iLCAicGFja2V0IiwgImRlY29kZVBhY2tldCIsICJkZWZhdWx0V0QiLCAicmVmQ291bnQiLCAiYnVpbGRLZXkiLCAiYnVpbGRSZWZzIiwgImJ1aWxkT3JDb250ZXh0SW1wbCIsICJlcnIiLCAicmVzIiwgImZzIiwgImRldGFpbHMiLCAiY3JlYXRlT2JqZWN0U3Rhc2giLCAic3RhcnQiLCAiaW5wdXRQYXRoIiwgInJlcGxhY2VEZXRhaWxzSW5NZXNzYWdlcyIsICJ3YXJuaW5ncyIsICJvdXRzdGFuZGluZyIsICJuZXh0IiwgInJlc3VsdCIsICJmYWlsdXJlRXJyb3JXaXRoTG9nIiwgIm1lc3NhZ2VzIiwgImtpbmQiLCAidGVybWluYWxXaWR0aCIsICJzYW5pdGl6ZU1lc3NhZ2VzIiwgInZlcmJvc2UiLCAiaXNDb250ZXh0IiwgImhhbmRsZUVycm9yIiwgInBsdWdpbk5hbWUiLCAibWVzc2FnZSIsICJwbHVnaW5zIiwgImhhbmRsZVBsdWdpbnMiLCAiYnVpbGRPckNvbnRleHRDb250aW51ZSIsICJkb25lIiwgInJlcXVlc3RQbHVnaW5zIiwgInJ1bk9uRW5kQ2FsbGJhY2tzIiwgInNjaGVkdWxlT25EaXNwb3NlQ2FsbGJhY2tzIiwgImJ1aWxkUmVzcG9uc2VUb1Jlc3VsdCIsICJvcmlnaW5hbEVycm9ycyIsICJvcmlnaW5hbFdhcm5pbmdzIiwgImNvbnZlcnRPdXRwdXRGaWxlcyIsICJkZWNvZGVVVEY4IiwgIm9uRW5kRXJyb3JzIiwgIm9uRW5kV2FybmluZ3MiLCAibGF0ZXN0UmVzdWx0UHJvbWlzZSIsICJwcm92aWRlTGF0ZXN0UmVzdWx0IiwgInJlc29sdmUiLCAiZGlkRGlzcG9zZSIsICJyZWplY3QiLCAic2V0dGxlUHJvbWlzZSIsICJ0cmlnZ2VyQW5vdGhlckJ1aWxkIiwgInBvcnQiLCAiaG9zdCIsICJzZXJ2ZWRpciIsICJrZXlmaWxlIiwgImNlcnRmaWxlIiwgImZhbGxiYWNrIiwgIm9uUmVxdWVzdCIsICJpbml0aWFsT3B0aW9ucyIsICJvblN0YXJ0Q2FsbGJhY2tzIiwgIm9uRW5kQ2FsbGJhY2tzIiwgIm9uUmVzb2x2ZUNhbGxiYWNrcyIsICJvbkxvYWRDYWxsYmFja3MiLCAib25EaXNwb3NlQ2FsbGJhY2tzIiwgIm5leHRDYWxsYmFja0lEIiwgImlzU2V0dXBEb25lIiwgIml0ZW0iLCAic2V0dXAiLCAicGx1Z2luIiwgInByb21pc2UiLCAiaW1wb3J0ZXIiLCAibmFtZXNwYWNlIiwgInBsdWdpbkRhdGEiLCAiaW1wb3J0QXR0cmlidXRlcyIsICJzYW5pdGl6ZVN0cmluZ01hcCIsICJyZWdpc3RlcmVkVGV4dCIsICJyZWdpc3RlcmVkTm90ZSIsICJleHRyYWN0Q2FsbGVyVjgiLCAiZmlsdGVyIiwgIm5vdGUiLCAic3VmZml4IiwgInNpZGVFZmZlY3RzIiwgIndhdGNoRmlsZXMiLCAid2F0Y2hEaXJzIiwgInNhbml0aXplU3RyaW5nQXJyYXkiLCAibmV3RXJyb3JzIiwgIm5ld1dhcm5pbmdzIiwgImNiIiwgIm1hcCIsICJuZXh0SUQiLCAiaWRlbnQiLCAidHJpZWQiLCAibGluZXMiLCAibG9jYXRpb24iLCAicGFyc2VTdGFja0xpbmVzVjgiLCAic3Rhc2giLCAiYXQiLCAibGluZSIsICJtYXRjaCIsICJsaW5lVGV4dCIsICJjb2x1bW4iLCAiZmlsZSIsICJwbHVnaW5UZXh0IiwgInNhbml0aXplTG9jYXRpb24iLCAic3VnZ2VzdGlvbiIsICJyZWxldmFudEFTQ0lJIiwgInByb3BlcnR5IiwgImZhbGxiYWNrUGx1Z2luTmFtZSIsICJtZXNzYWdlc0Nsb25lIiwgImluZGV4IiwgIm5vdGVzIiwgImRldGFpbCIsICJub3Rlc0Nsb25lIiwgIm5vdGVLZXlzIiwgIm5vdGVUZXh0IiwgIm5vdGVMb2NhdGlvbiIsICJoYXNoIiwgImJpbmFyeSIsICJ2ZXJzaW9uIiwgIkVTQlVJTERfVkVSU0lPTiIsICJidWlsZCIsICJvcHRpb25zIiwgImVuc3VyZVNlcnZpY2VJc1J1bm5pbmciLCAidHJhbnNmb3JtIiwgImlucHV0IiwgImZvcm1hdE1lc3NhZ2VzIiwgIm1lc3NhZ2VzIiwgImFuYWx5emVNZXRhZmlsZSIsICJtZXRhZmlsZSIsICJpbml0aWFsaXplUHJvbWlzZSIsICJzdG9wU2VydmljZSIsICJsb25nTGl2ZWRTZXJ2aWNlIiwgImVuc3VyZVNlcnZpY2VJc1J1bm5pbmciLCAiaW5pdGlhbGl6ZSIsICJvcHRpb25zIiwgInZhbGlkYXRlSW5pdGlhbGl6ZU9wdGlvbnMiLCAid2FzbU1vZHVsZSIsICJ3b3JrZXJVUkwiLCAic3RhcnRSdW5uaW5nU2VydmljZSIsICJ3b3JrZXIiLCAiZmlyc3RNZXNzYWdlUmVzb2x2ZSIsICJmaXJzdE1lc3NhZ2VSZWplY3QiLCAiZmlyc3RNZXNzYWdlUHJvbWlzZSIsICJyZXNvbHZlIiwgInJlamVjdCIsICJlcnJvciIsICJkYXRhIiwgInJlYWRGcm9tU3Rkb3V0IiwgInNlcnZpY2UiLCAiY3JlYXRlQ2hhbm5lbCIsICJieXRlcyIsICJidWlsZCIsICJ0cmFuc2Zvcm0iLCAiZm9ybWF0TWVzc2FnZXMiLCAiYW5hbHl6ZU1ldGFmaWxlIiwgInZlcnNpb24iLCAiZXJyIiwgInJlcyIsICJpbnB1dCIsICJfIiwgImNhbGxiYWNrIiwgIm1lc3NhZ2VzIiwgIm1ldGFmaWxlIiwgImFzc2VydFBhdGgiLCAicGF0aCIsICJpc1BhdGhTZXBhcmF0b3IiLCAiY29kZSIsICJpc1dpbmRvd3NEZXZpY2VSb290IiwgImFzc2VydEFyZyIsICJ1cmwiLCAiZnJvbUZpbGVVcmwiLCAidXJsIiwgImFzc2VydEFyZyIsICJwYXRoIiwgImlzQWJzb2x1dGUiLCAicGF0aCIsICJhc3NlcnRQYXRoIiwgImxlbiIsICJjb2RlIiwgImlzUGF0aFNlcGFyYXRvciIsICJpc1dpbmRvd3NEZXZpY2VSb290IiwgIkFzc2VydGlvbkVycm9yIiwgIm1lc3NhZ2UiLCAiYXNzZXJ0IiwgImV4cHIiLCAibXNnIiwgIkFzc2VydGlvbkVycm9yIiwgIldISVRFU1BBQ0VfRU5DT0RJTkdTIiwgImVuY29kZVdoaXRlc3BhY2UiLCAic3RyaW5nIiwgImMiLCAidG9GaWxlVXJsIiwgInBhdGgiLCAiaXNBYnNvbHV0ZSIsICJob3N0bmFtZSIsICJwYXRobmFtZSIsICJ1cmwiLCAiZW5jb2RlV2hpdGVzcGFjZSIsICJpc1Bvc2l4UGF0aFNlcGFyYXRvciIsICJjb2RlIiwgImZyb21GaWxlVXJsIiwgInVybCIsICJhc3NlcnRBcmciLCAiaXNBYnNvbHV0ZSIsICJwYXRoIiwgImFzc2VydFBhdGgiLCAiaXNQb3NpeFBhdGhTZXBhcmF0b3IiLCAidG9GaWxlVXJsIiwgInBhdGgiLCAiaXNBYnNvbHV0ZSIsICJ1cmwiLCAiZW5jb2RlV2hpdGVzcGFjZSIsICJvc1R5cGUiLCAiRGVubyIsICJuYXZpZ2F0b3IiLCAiaXNXaW5kb3dzIiwgImZyb21GaWxlVXJsIiwgInVybCIsICJpc1dpbmRvd3MiLCAidG9GaWxlVXJsIiwgInBhdGgiLCAiaXNXaW5kb3dzIiwgImlzV2luZG93cyIsICJpc1dpbmRvd3MiLCAiRVhJU1RTX0VSUk9SIiwgImlzV2luZG93cyIsICJMRiIsICJDUkxGIiwgIkVPTCIsICJtb2RfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJwYXJzZSIsICJwYXJzZSIsICJ0ZXh0IiwgImFsbG93VHJhaWxpbmdDb21tYSIsICJKU09OQ1BhcnNlciIsICJvcmlnaW5hbEpTT05QYXJzZSIsICIjd2hpdGVzcGFjZSIsICIjbnVtYmVyRW5kVG9rZW4iLCAiI3RleHQiLCAiI2xlbmd0aCIsICIjdG9rZW5pemVkIiwgIiNvcHRpb25zIiwgIm9wdGlvbnMiLCAiI3Rva2VuaXplIiwgInRva2VuIiwgIiNnZXROZXh0IiwgInJlcyIsICIjcGFyc2VKc29uVmFsdWUiLCAiZG9uZSIsICJ2YWx1ZSIsICJidWlsZEVycm9yTWVzc2FnZSIsICJpIiwgImhhc0VuZE9mQ29tbWVudCIsICJzdGFydEluZGV4IiwgInNob3VsZEVzY2FwZU5leHQiLCAiI3BhcnNlT2JqZWN0IiwgIiNwYXJzZUFycmF5IiwgIiNwYXJzZU51bGxPclRydWVPckZhbHNlT3JOdW1iZXIiLCAiI3BhcnNlU3RyaW5nIiwgInRhcmdldCIsICJpc0ZpcnN0IiwgInRva2VuMSIsICJrZXkiLCAidG9rZW4yIiwgInRva2VuMyIsICJ0b2tlbjQiLCAicGFyc2VkIiwgImFzc2VydCIsICJ0eXBlIiwgInNvdXJjZVRleHQiLCAicG9zaXRpb24iLCAiZW5jb2RlciIsICJsb29rdXAiLCAicmV2TG9va3VwIiwgImNvZGUiLCAiaSIsICJsZW4iLCAiaXNPYmplY3QiLCAib2JqZWN0IiwgInNvcnRPYmplY3QiLCAibm9ybWFsaXplZCIsICJzb3J0ZWQiLCAic29ydGVkS2V5cyIsICJhIiwgImIiLCAia2V5IiwgImlzSW1wb3J0TWFwIiwgImltcG9ydE1hcCIsICJpc0ltcG9ydHMiLCAiaXNTY29wZXMiLCAiaW1wb3J0c01hcCIsICJzY29wZXMiLCAidmFsdWUiLCAiaXNTcGVjaWZpZXJNYXAiLCAic3BlY2lmaWVyTWFwIiwgImlzVVJMIiwgInVybCIsICJzb3J0QW5kTm9ybWFsaXplU3BlY2lmaWVyTWFwIiwgIm9yaWdpbmFsTWFwIiwgImJhc2VVUkwiLCAibm9ybWFsaXplZCIsICJzcGVjaWZpZXJLZXkiLCAidmFsdWUiLCAibm9ybWFsaXplZFNwZWNpZmllcktleSIsICJub3JtYWxpemVTcGVjaWZpZXJLZXkiLCAiYWRkcmVzc1VSTCIsICJwYXJzZVVybExpa2VJbXBvcnRTcGVjaWZpZXIiLCAic2VyaWFsaXplVVJMIiwgInNvcnRPYmplY3QiLCAidXJsIiwgInNvcnRBbmROb3JtYWxpemVTY29wZXMiLCAic2NvcGVQcmVmaXgiLCAicG90ZW50aWFsU3BlY2lmaWVyTWFwIiwgImlzU3BlY2lmaWVyTWFwIiwgInNjb3BlUHJlZml4VVJMIiwgIm5vcm1hbGl6ZWRTY29wZVByZWZpeCIsICJzb3J0ZWQiLCAia2V5IiwgInNwZWNpZmllciIsICJzcGVjaWFsU2NoZW1lcyIsICJpc1NwZWNpYWwiLCAiYXNVUkwiLCAic2NoZW1lIiwgInJlc29sdmVJbXBvcnRzTWF0Y2giLCAibm9ybWFsaXplZFNwZWNpZmllciIsICJzcGVjaWZpZXJNYXAiLCAicmVzb2x1dGlvblJlc3VsdCIsICJpc1VSTCIsICJhZnRlclByZWZpeCIsICJyZXNvbHZlSW1wb3J0TWFwIiwgImltcG9ydE1hcCIsICJzb3J0ZWRBbmROb3JtYWxpemVkSW1wb3J0cyIsICJpc0ltcG9ydE1hcCIsICJpbXBvcnRzIiwgInNjb3BlcyIsICJpc0ltcG9ydHMiLCAic29ydGVkQW5kTm9ybWFsaXplZFNjb3BlcyIsICJpc1Njb3BlcyIsICJyZXNvbHZlTW9kdWxlU3BlY2lmaWVyIiwgImJhc2VVUkxTdHJpbmciLCAic2NvcGVJbXBvcnRzIiwgInNjb3BlSW1wb3J0c01hdGNoIiwgInRvcExldmVsSW1wb3J0c01hdGNoIiwgIm9zVHlwZSIsICJEZW5vIiwgIm5hdmlnYXRvciIsICJpc1dpbmRvd3MiLCAid2luMzJfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJiYXNlbmFtZSIsICJkZWxpbWl0ZXIiLCAiZGlybmFtZSIsICJleHRuYW1lIiwgImZvcm1hdCIsICJmcm9tRmlsZVVybCIsICJpc0Fic29sdXRlIiwgImpvaW4iLCAibm9ybWFsaXplIiwgInBhcnNlIiwgInJlbGF0aXZlIiwgInJlc29sdmUiLCAic2VwIiwgInRvRmlsZVVybCIsICJ0b05hbWVzcGFjZWRQYXRoIiwgImFzc2VydFBhdGgiLCAicGF0aCIsICJpc1Bvc2l4UGF0aFNlcGFyYXRvciIsICJjb2RlIiwgImlzUGF0aFNlcGFyYXRvciIsICJpc1dpbmRvd3NEZXZpY2VSb290IiwgIm5vcm1hbGl6ZVN0cmluZyIsICJhbGxvd0Fib3ZlUm9vdCIsICJzZXBhcmF0b3IiLCAicmVzIiwgImxhc3RTZWdtZW50TGVuZ3RoIiwgImxhc3RTbGFzaCIsICJkb3RzIiwgImkiLCAibGVuIiwgImxhc3RTbGFzaEluZGV4IiwgIl9mb3JtYXQiLCAic2VwIiwgInBhdGhPYmplY3QiLCAiZGlyIiwgImJhc2UiLCAiV0hJVEVTUEFDRV9FTkNPRElOR1MiLCAiZW5jb2RlV2hpdGVzcGFjZSIsICJzdHJpbmciLCAiYyIsICJEZW5vU3RkSW50ZXJuYWxFcnJvciIsICJtZXNzYWdlIiwgImFzc2VydCIsICJleHByIiwgIm1zZyIsICJzZXAiLCAiZGVsaW1pdGVyIiwgInJlc29sdmUiLCAicGF0aFNlZ21lbnRzIiwgInJlc29sdmVkRGV2aWNlIiwgInJlc29sdmVkVGFpbCIsICJyZXNvbHZlZEFic29sdXRlIiwgImkiLCAicGF0aCIsICJEZW5vIiwgImFzc2VydFBhdGgiLCAibGVuIiwgInJvb3RFbmQiLCAiZGV2aWNlIiwgImlzQWJzb2x1dGUiLCAiY29kZSIsICJpc1BhdGhTZXBhcmF0b3IiLCAiaiIsICJsYXN0IiwgImZpcnN0UGFydCIsICJpc1dpbmRvd3NEZXZpY2VSb290IiwgIm5vcm1hbGl6ZVN0cmluZyIsICJub3JtYWxpemUiLCAidGFpbCIsICJqb2luIiwgInBhdGhzIiwgInBhdGhzQ291bnQiLCAiam9pbmVkIiwgIm5lZWRzUmVwbGFjZSIsICJzbGFzaENvdW50IiwgImFzc2VydCIsICJmaXJzdExlbiIsICJyZWxhdGl2ZSIsICJmcm9tIiwgInRvIiwgImZyb21PcmlnIiwgInRvT3JpZyIsICJmcm9tU3RhcnQiLCAiZnJvbUVuZCIsICJmcm9tTGVuIiwgInRvU3RhcnQiLCAidG9FbmQiLCAidG9MZW4iLCAibGVuZ3RoIiwgImxhc3RDb21tb25TZXAiLCAiZnJvbUNvZGUiLCAidG9Db2RlIiwgIm91dCIsICJ0b05hbWVzcGFjZWRQYXRoIiwgInJlc29sdmVkUGF0aCIsICJkaXJuYW1lIiwgImVuZCIsICJtYXRjaGVkU2xhc2giLCAib2Zmc2V0IiwgImJhc2VuYW1lIiwgImV4dCIsICJzdGFydCIsICJkcml2ZSIsICJleHRJZHgiLCAiZmlyc3ROb25TbGFzaEVuZCIsICJleHRuYW1lIiwgInN0YXJ0RG90IiwgInN0YXJ0UGFydCIsICJwcmVEb3RTdGF0ZSIsICJmb3JtYXQiLCAicGF0aE9iamVjdCIsICJfZm9ybWF0IiwgInBhcnNlIiwgInJldCIsICJmcm9tRmlsZVVybCIsICJ1cmwiLCAidG9GaWxlVXJsIiwgImhvc3RuYW1lIiwgInBhdGhuYW1lIiwgImVuY29kZVdoaXRlc3BhY2UiLCAicG9zaXhfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJiYXNlbmFtZSIsICJkZWxpbWl0ZXIiLCAiZGlybmFtZSIsICJleHRuYW1lIiwgImZvcm1hdCIsICJmcm9tRmlsZVVybCIsICJpc0Fic29sdXRlIiwgImpvaW4iLCAibm9ybWFsaXplIiwgInBhcnNlIiwgInJlbGF0aXZlIiwgInJlc29sdmUiLCAic2VwIiwgInRvRmlsZVVybCIsICJ0b05hbWVzcGFjZWRQYXRoIiwgInNlcCIsICJkZWxpbWl0ZXIiLCAicmVzb2x2ZSIsICJwYXRoU2VnbWVudHMiLCAicmVzb2x2ZWRQYXRoIiwgInJlc29sdmVkQWJzb2x1dGUiLCAiaSIsICJwYXRoIiwgIkRlbm8iLCAiYXNzZXJ0UGF0aCIsICJub3JtYWxpemVTdHJpbmciLCAiaXNQb3NpeFBhdGhTZXBhcmF0b3IiLCAibm9ybWFsaXplIiwgImlzQWJzb2x1dGUiLCAidHJhaWxpbmdTZXBhcmF0b3IiLCAiam9pbiIsICJwYXRocyIsICJqb2luZWQiLCAibGVuIiwgInJlbGF0aXZlIiwgImZyb20iLCAidG8iLCAiZnJvbVN0YXJ0IiwgImZyb21FbmQiLCAiZnJvbUxlbiIsICJ0b1N0YXJ0IiwgInRvRW5kIiwgInRvTGVuIiwgImxlbmd0aCIsICJsYXN0Q29tbW9uU2VwIiwgImZyb21Db2RlIiwgInRvQ29kZSIsICJvdXQiLCAidG9OYW1lc3BhY2VkUGF0aCIsICJkaXJuYW1lIiwgImhhc1Jvb3QiLCAiZW5kIiwgIm1hdGNoZWRTbGFzaCIsICJiYXNlbmFtZSIsICJleHQiLCAic3RhcnQiLCAiZXh0SWR4IiwgImZpcnN0Tm9uU2xhc2hFbmQiLCAiY29kZSIsICJleHRuYW1lIiwgInN0YXJ0RG90IiwgInN0YXJ0UGFydCIsICJwcmVEb3RTdGF0ZSIsICJmb3JtYXQiLCAicGF0aE9iamVjdCIsICJfZm9ybWF0IiwgInBhcnNlIiwgInJldCIsICJmcm9tRmlsZVVybCIsICJ1cmwiLCAidG9GaWxlVXJsIiwgImVuY29kZVdoaXRlc3BhY2UiLCAicGF0aCIsICJpc1dpbmRvd3MiLCAid2luMzJfZXhwb3J0cyIsICJwb3NpeF9leHBvcnRzIiwgImpvaW4iLCAibm9ybWFsaXplIiwgInBhdGgiLCAiaXNXaW5kb3dzIiwgIndpbjMyX2V4cG9ydHMiLCAicG9zaXhfZXhwb3J0cyIsICJiYXNlbmFtZSIsICJkZWxpbWl0ZXIiLCAiZGlybmFtZSIsICJleHRuYW1lIiwgImZvcm1hdCIsICJmcm9tRmlsZVVybCIsICJpc0Fic29sdXRlIiwgImpvaW4iLCAibm9ybWFsaXplIiwgInBhcnNlIiwgInJlbGF0aXZlIiwgInJlc29sdmUiLCAic2VwIiwgInRvRmlsZVVybCIsICJ0b05hbWVzcGFjZWRQYXRoIiwgInBhdGgiLCAiRGVubyIsICJub0NvbG9yIiwgIkFOU0lfUEFUVEVSTiIsICJNSU5fUkVBRCIsICJNQVhfU0laRSIsICJERUZBVUxUX0JVRkZFUl9TSVpFIiwgIndhc20iLCAiY2FjaGVkVGV4dERlY29kZXIiLCAiaGVhcCIsICJoZWFwX25leHQiLCAiY2FjaGVkVGV4dEVuY29kZXIiLCAiR2xvYmFsSHR0cENhY2hlRmluYWxpemF0aW9uIiwgInB0ciIsICJ3YXNtIiwgIkxvY2FsSHR0cENhY2hlRmluYWxpemF0aW9uIiwgInB0ciIsICJ3YXNtIiwgInVybFRvRXNidWlsZFJlc29sdXRpb24iLCAidXJsIiwgImZyb21GaWxlVXJsIiwgIm5hbWVzcGFjZSIsICJyZWFkRGVub0NvbmZpZyIsICJwYXRoIiwgImZpbGUiLCAicmVzIiwgIm1vZF9leHBvcnRzIiwgImV4cGFuZEVtYmVkZGVkSW1wb3J0TWFwIiwgImltcG9ydE1hcCIsICJuZXdJbXBvcnRzIiwgInNwZWNpZmllciIsICJ0YXJnZXQiLCAibmV3U3BlY2lmaWVyIiwgIm5ld1RhcmdldCIsICJJTl9OT0RFX01PRFVMRVMiLCAiSU5fTk9ERV9NT0RVTEVTX1JFU09MVkVEIiwgImRlbm9SZXNvbHZlclBsdWdpbiIsICJvcHRpb25zIiwgImJ1aWxkIiwgImltcG9ydE1hcCIsICJub2RlTW9kdWxlc1BhdGhzIiwgImV4dGVybmFsUmVnZXhwcyIsICJleHRlcm5hbCIsICJpbXBvcnRNYXBVUkwiLCAiY29uZmlnIiwgInJlYWREZW5vQ29uZmlnIiwgImNvbmZpZ0ltcG9ydE1hcCIsICJleHBhbmRFbWJlZGRlZEltcG9ydE1hcCIsICJyZXNvbHZlSW1wb3J0TWFwIiwgInRvRmlsZVVybCIsICJyZXNwIiwgImRhdGEiLCAiYXJncyIsICJyZXMiLCAicmVmZXJyZXIiLCAicmVzb2x2ZWQiLCAicmVzb2x2ZU1vZHVsZVNwZWNpZmllciIsICJleHRlcm5hbFJlZ2V4cCIsICJwYXRoIiwgIm5hbWVzcGFjZSIsICJ1cmxUb0VzYnVpbGRSZXNvbHV0aW9uIiwgIkpTUl9SRUdJU1RSWV9VUkwiLCAiREVGQVVMVF9MT0FERVIiLCAicmVzIiwgInJlc29sdmVyIiwgImRlbm9SZXNvbHZlclBsdWdpbiIsICJFUlJfTVNHX01VU1RfTk9UX1JFVFVSTiIsICJUUkFOU0ZPUk1fRlVOQ1RJT05fTkFNRSIsICJSRUNPVkVSWV9GVU5DVElPTl9OQU1FIiwgIkRFRkFVTFRfVkFMVUVfTkFNRSIsICJFUlJfTVNHX1RSQU5TRk9STUVSX01VU1RfTk9UX1JFVFVSTiIsICJFUlJfTVNHX0NBTExFRF9XSVRIIiwgIkVSUl9NU0dfREVGQVVMVF9WQUxVRV9NVVNUX05PVF9CRSIsICJFUlJfTVNHX1JFQ09WRVJFUl9NVVNUX05PVF9SRVRVUk4iLCAiT0tfVFlQRV9TVFIiLCAiRVJSX1RZUEVfU1RSIiwgIkVSUl9NU0dfVU5XUkFQX09LX0JVVF9JTlBVVF9JU19FUlIiLCAiRVJSX01TR19VTldSQVBfRVJSX0JVVF9JTlBVVF9JU19PSyIsICJFUlJfTVNHX0ZPUl9FUlJPUl9PQkpFQ1RfR0VORVJBVEVEX0JZX1VOV1JBUF9PUl9USFJPVyIsICJNU0dfQlVJTFRJTl9FUlJPUl9JTlNUQU5DRV9PRl9DVVJSRU5UX1JFQUxNIiwgIkVSUl9NU0dfVEhST1dOX1ZBTFVFX0lTX05PVF9CVUlMVElOX0VSUk9SX0lOU1RBTkNFIiwgIkVSUl9NU0dfQ09OVEFJTkVEX1RZUEVfRV9TSE9VTERfQkVfQlVJTFRJTl9FUlJPUl9JTlNUQU5DRSIsICJFUlJfTVNHX0RPVF9DQVVTRV9QUk9QU19JU19OT1RfQ1VSUkVOVF9SRUFMTV9CVUlMVElOX0VSUk9SX0lOU1RBTkNFIiwgImlzT2siLCAiaW5wdXQiLCAiY3JlYXRlT2siLCAidmFsIiwgImlzRXJyIiwgImNyZWF0ZUVyciIsICJlcnIiLCAidW53cmFwT2siLCAiZXhwZWN0T2siLCAidW53cmFwRXJyIiwgImV4cGVjdEVyciIsICJtc2ciLCAibWFwQXN5bmNGb3JSZXN1bHQiLCAiaW5wdXQiLCAidHJhbnNmb3JtZXIiLCAiaXNFcnIiLCAiaW5uZXIiLCAidW53cmFwT2siLCAibWFwcGVkIiwgImNyZWF0ZU9rIiwgIkVSUl9NU0dfTVVTVF9OT1RfUkVUVVJOIiwgIlRSQU5TRk9STV9GVU5DVElPTl9OQU1FIiwgIlJFQ09WRVJZX0ZVTkNUSU9OX05BTUUiLCAiREVGQVVMVF9WQUxVRV9OQU1FIiwgIkVSUl9NU0dfVFJBTlNGT1JNRVJfTVVTVF9OT1RfUkVUVVJOIiwgIkVSUl9NU0dfQ0FMTEVEX1dJVEgiLCAiRVJSX01TR19ERUZBVUxUX1ZBTFVFX01VU1RfTk9UX0JFIiwgIkVSUl9NU0dfUkVDT1ZFUkVSX01VU1RfTk9UX1JFVFVSTiIsICJOT19WQUxfVkFMVUVfVFlQRV9TVFIiLCAiRVJSX01TR19UUkFOU0ZPUk1FUl9NVVNUX05PVF9SRVRVUk5fTk9fVkFMX0ZPUl9NQVlCRSIsICJFUlJfTVNHX1VOV1JBUF9OT19WQUxfRk9SX01BWUJFIiwgIkVSUl9NU0dfREVGQVVMVF9WQUxVRV9NVVNUX05PVF9CRV9OT19WQUxfRk9SX01BWUJFIiwgIkVSUl9NU0dfUkVDT1ZFUkVSX01VU1RfTk9UX1JFVFVSTl9OT19WQUxfRk9SX01BWUJFIiwgImlzTm90TnVsbE9yVW5kZWZpbmVkIiwgImlucHV0IiwgImNyZWF0ZU9rIiwgInZhbCIsICJjcmVhdGVFcnIiLCAiZXJyIiwgIm9rT3JFbHNlRm9yTWF5YmUiLCAiaW5wdXQiLCAicmVjb3ZlcmVyIiwgImlzTm90TnVsbE9yVW5kZWZpbmVkIiwgImNyZWF0ZU9rIiwgImZhbGxiYWNrIiwgImNyZWF0ZUVyciIsICJpc0FsbG93ZWRDb25uZWN0U3JjIiwgInVybCIsICJjb25uZWN0U3JjIiwgImFzc2VydFBhdGgiLCAicGF0aCIsICJzdHJpcFN1ZmZpeCIsICJuYW1lIiwgInN1ZmZpeCIsICJsZW5EaWZmIiwgImkiLCAibGFzdFBhdGhTZWdtZW50IiwgInBhdGgiLCAiaXNTZXAiLCAic3RhcnQiLCAibWF0Y2hlZE5vblNlcGFyYXRvciIsICJlbmQiLCAiYXNzZXJ0QXJncyIsICJhc3NlcnRQYXRoIiwgInN0cmlwVHJhaWxpbmdTZXBhcmF0b3JzIiwgInNlZ21lbnQiLCAiaXNTZXAiLCAiZW5kIiwgImkiLCAiaXNQYXRoU2VwYXJhdG9yIiwgImNvZGUiLCAiaXNXaW5kb3dzRGV2aWNlUm9vdCIsICJhc3NlcnRBcmciLCAidXJsIiwgImZyb21GaWxlVXJsIiwgInVybCIsICJhc3NlcnRBcmciLCAicGF0aCIsICJpc0Fic29sdXRlIiwgInBhdGgiLCAiYXNzZXJ0UGF0aCIsICJsZW4iLCAiY29kZSIsICJpc1BhdGhTZXBhcmF0b3IiLCAiaXNXaW5kb3dzRGV2aWNlUm9vdCIsICJXSElURVNQQUNFX0VOQ09ESU5HUyIsICJlbmNvZGVXaGl0ZXNwYWNlIiwgInN0cmluZyIsICJjIiwgInRvRmlsZVVybCIsICJwYXRoIiwgImlzQWJzb2x1dGUiLCAiaG9zdG5hbWUiLCAicGF0aG5hbWUiLCAidXJsIiwgImVuY29kZVdoaXRlc3BhY2UiLCAiaXNQb3NpeFBhdGhTZXBhcmF0b3IiLCAiY29kZSIsICJiYXNlbmFtZSIsICJwYXRoIiwgInN1ZmZpeCIsICJhc3NlcnRBcmdzIiwgImxhc3RTZWdtZW50IiwgImxhc3RQYXRoU2VnbWVudCIsICJpc1Bvc2l4UGF0aFNlcGFyYXRvciIsICJzdHJpcHBlZFNlZ21lbnQiLCAic3RyaXBUcmFpbGluZ1NlcGFyYXRvcnMiLCAic3RyaXBTdWZmaXgiLCAiZXh0bmFtZSIsICJwYXRoIiwgImFzc2VydFBhdGgiLCAic3RhcnREb3QiLCAic3RhcnRQYXJ0IiwgImVuZCIsICJtYXRjaGVkU2xhc2giLCAicHJlRG90U3RhdGUiLCAiaSIsICJjb2RlIiwgImlzUG9zaXhQYXRoU2VwYXJhdG9yIiwgImZyb21GaWxlVXJsIiwgInVybCIsICJhc3NlcnRBcmciLCAiaXNBYnNvbHV0ZSIsICJwYXRoIiwgImFzc2VydFBhdGgiLCAiaXNQb3NpeFBhdGhTZXBhcmF0b3IiLCAidG9GaWxlVXJsIiwgInBhdGgiLCAiaXNBYnNvbHV0ZSIsICJ1cmwiLCAiZW5jb2RlV2hpdGVzcGFjZSIsICJvc1R5cGUiLCAiRGVubyIsICJuYXZpZ2F0b3IiLCAiaXNXaW5kb3dzIiwgImZyb21GaWxlVXJsIiwgInVybCIsICJpc1dpbmRvd3MiLCAidG9GaWxlVXJsIiwgInBhdGgiLCAiaXNXaW5kb3dzIiwgInVybFRvRXNidWlsZFJlc29sdXRpb24iLCAidXJsIiwgImZyb21GaWxlVXJsIiwgIm5hbWVzcGFjZSIsICJlc2J1aWxkUmVzb2x1dGlvblRvVVJMIiwgInNwZWNpZmllciIsICJ0b0ZpbGVVcmwiLCAiZXh0cmFjdFNvdXJjZU1hcFVSTCIsICJjb2RlIiwgImJhc2UiLCAicmVzdWx0IiwgIlkiLCAiZXh0cmFjdCIsICJsIiwgInVybCIsICJzdGFydCIsICJlbmQiLCAicyIsICJhIiwgImMiLCAibWF0Y2giLCAibiIsICJzdHJpcCIsICJ1cmwiLCAiYmFzZW5hbWUiLCAidXJsIiwgInN1ZmZpeCIsICJzdHJpcCIsICJleHRuYW1lIiwgInVybCIsICJzdHJpcCIsICJsb2FkZXJMaXN0IiwgImlzTG9hZGVyIiwgImxvYWRlciIsICJpc0xvYWRlcldoaWNoQ2FuSW5jbHVkZVNvdXJjZU1hcHBpbmdVUkwiLCAicmVzcG9uc2VUb0xvYWRlciIsICJyZXNwb25zZSIsICJ1cmwiLCAiZmlsZW5hbWUiLCAiYmFzZW5hbWUiLCAiZXh0IiwgImV4dG5hbWUiLCAibWltZVR5cGUiLCAibWltZVR5cGVUb0xvYWRlciIsICJzdWJUeXBlIiwgImNvbXBhcmVOdW1iZXIiLCAiYSIsICJiIiwgImNoZWNrSWRlbnRpZmllciIsICJ2MSIsICJ2MiIsICJjb21wYXJlSWRlbnRpZmllciIsICJsZW5ndGgiLCAiaSIsICJOVU1FUklDX0lERU5USUZJRVIiLCAiTk9OX05VTUVSSUNfSURFTlRJRklFUiIsICJWRVJTSU9OX0NPUkUiLCAiUFJFUkVMRUFTRV9JREVOVElGSUVSIiwgIlBSRVJFTEVBU0UiLCAiQlVJTERfSURFTlRJRklFUiIsICJCVUlMRCIsICJGVUxMX1ZFUlNJT04iLCAiRlVMTF9SRUdFWFAiLCAiQ09NUEFSQVRPUiIsICJXSUxEQ0FSRF9JREVOVElGSUVSIiwgIlhSQU5HRV9JREVOVElGSUVSIiwgIlhSQU5HRSIsICJPUEVSQVRPUl9YUkFOR0VfUkVHRVhQIiwgIkNPTVBBUkFUT1JfUkVHRVhQIiwgImlzVmFsaWROdW1iZXIiLCAidmFsdWUiLCAiTUFYX0xFTkdUSCIsICJOVU1FUklDX0lERU5USUZJRVJfUkVHRVhQIiwgIk5VTUVSSUNfSURFTlRJRklFUiIsICJwYXJzZVByZXJlbGVhc2UiLCAicHJlcmVsZWFzZSIsICJpZCIsICJudW1iZXIiLCAiaXNWYWxpZE51bWJlciIsICJwYXJzZUJ1aWxkIiwgImJ1aWxkbWV0YWRhdGEiLCAicGFyc2VOdW1iZXIiLCAiaW5wdXQiLCAiZXJyb3JNZXNzYWdlIiwgImlzV2lsZGNhcmRDb21wYXJhdG9yIiwgImMiLCAiY29tcGFyZSIsICJzMCIsICJzMSIsICJjb21wYXJlTnVtYmVyIiwgImNoZWNrSWRlbnRpZmllciIsICJjb21wYXJlSWRlbnRpZmllciIsICJNQVgiLCAiTUlOIiwgIklOVkFMSUQiLCAiQU5ZIiwgIkFMTCIsICJOT05FIiwgImZvcm1hdE51bWJlciIsICJ2YWx1ZSIsICJmb3JtYXQiLCAic2VtdmVyIiwgImlzV2lsZGNhcmRDb21wYXJhdG9yIiwgIm1ham9yIiwgIm1pbm9yIiwgInBhdGNoIiwgInByZSIsICJidWlsZCIsICJ2IiwgInRlc3RDb21wYXJhdG9yIiwgInZlcnNpb24iLCAiY29tcGFyYXRvciIsICJpc1dpbGRjYXJkQ29tcGFyYXRvciIsICJjbXAiLCAiY29tcGFyZSIsICJ0ZXN0Q29tcGFyYXRvclNldCIsICJzZXQiLCAibWFqb3IiLCAibWlub3IiLCAicGF0Y2giLCAicHJlcmVsZWFzZSIsICJzYXRpc2ZpZXMiLCAidmVyc2lvbiIsICJyYW5nZSIsICJzZXQiLCAidGVzdENvbXBhcmF0b3JTZXQiLCAiZ3JlYXRlclRoYW4iLCAiczAiLCAiczEiLCAiY29tcGFyZSIsICJtYXhTYXRpc2Z5aW5nIiwgInZlcnNpb25zIiwgInJhbmdlIiwgIm1heCIsICJ2ZXJzaW9uIiwgInNhdGlzZmllcyIsICJncmVhdGVyVGhhbiIsICJwYXJzZUNvbXBhcmF0b3IiLCAiY29tcGFyYXRvciIsICJncm91cHMiLCAiQ09NUEFSQVRPUl9SRUdFWFAiLCAiTk9ORSIsICJvcGVyYXRvciIsICJwcmVyZWxlYXNlIiwgImJ1aWxkbWV0YWRhdGEiLCAic2VtdmVyIiwgInBhcnNlTnVtYmVyIiwgInBhcnNlUHJlcmVsZWFzZSIsICJwYXJzZUJ1aWxkIiwgIkFOWSIsICJpc1dpbGRjYXJkIiwgImlkIiwgImhhbmRsZUxlZnRIeXBoZW5SYW5nZUdyb3VwcyIsICJsZWZ0R3JvdXAiLCAiaGFuZGxlUmlnaHRIeXBoZW5SYW5nZUdyb3VwcyIsICJyaWdodEdyb3VwcyIsICJwYXJzZUh5cGhlblJhbmdlIiwgInJhbmdlIiwgImxlZnRNYXRjaCIsICJYUkFOR0UiLCAibGVmdExlbmd0aCIsICJoeXBoZW5NYXRjaCIsICJoeXBoZW5MZW5ndGgiLCAiZnJvbSIsICJ0byIsICJoYW5kbGVDYXJldE9wZXJhdG9yIiwgIm1ham9ySXNXaWxkY2FyZCIsICJtaW5vcklzV2lsZGNhcmQiLCAicGF0Y2hJc1dpbGRjYXJkIiwgIm1ham9yIiwgIm1pbm9yIiwgInBhdGNoIiwgIkFMTCIsICJoYW5kbGVUaWxkZU9wZXJhdG9yIiwgImhhbmRsZUxlc3NUaGFuT3BlcmF0b3IiLCAiYnVpbGQiLCAiaGFuZGxlTGVzc1RoYW5PckVxdWFsT3BlcmF0b3IiLCAiaGFuZGxlR3JlYXRlclRoYW5PcGVyYXRvciIsICJoYW5kbGVHcmVhdGVyT3JFcXVhbE9wZXJhdG9yIiwgImhhbmRsZUVxdWFsT3BlcmF0b3IiLCAicGFyc2VPcGVyYXRvclJhbmdlIiwgInN0cmluZyIsICJPUEVSQVRPUl9YUkFOR0VfUkVHRVhQIiwgInBhcnNlT3BlcmF0b3JSYW5nZXMiLCAicGFyc2VSYW5nZSIsICJwYXJzZSIsICJ2ZXJzaW9uIiwgIk1BWF9MRU5HVEgiLCAiZ3JvdXBzIiwgIkZVTExfUkVHRVhQIiwgIm1ham9yIiwgInBhcnNlTnVtYmVyIiwgIm1pbm9yIiwgInBhdGNoIiwgInByZXJlbGVhc2UiLCAicGFyc2VQcmVyZWxlYXNlIiwgImJ1aWxkIiwgInBhcnNlQnVpbGQiLCAidHJ5UGFyc2VSYW5nZSIsICJyYW5nZSIsICJwYXJzZVJhbmdlIiwgInRyeVBhcnNlIiwgInZlcnNpb24iLCAicGFyc2UiLCAicm9idXN0RmV0Y2giLCAicmVxdWVzdCIsICJyZXMiLCAiYSIsICJjIiwgIkpTUl9SRUdJU1RPUllfRU5EUE9JTlQiLCAiZ2V0SnNyUGFja2FnZU1ldGFkYXRhIiwgIm5hbWUiLCAib3B0aW9ucyIsICJyZXN1bHQiLCAicm9idXN0RmV0Y2giLCAiZyIsICJyZXMiLCAiZ2V0SnNyUGFja2FnZVZlcnNpb25NZXRhZGF0YSIsICJuYW1lIiwgInZlcnNpb24iLCAib3B0aW9ucyIsICJyZXN1bHQiLCAicm9idXN0RmV0Y2giLCAiSlNSX1JFR0lTVE9SWV9FTkRQT0lOVCIsICJnIiwgInJlcyIsICJnZXROcG1QYWNrYWdlTWV0YWRhdGEiLCAibmFtZSIsICJvcHRpb25zIiwgInJlc3VsdCIsICJyb2J1c3RGZXRjaCIsICJnIiwgInJlcyIsICJpbnZhbGlkUGFja2FnZVZlcnNpb25FcnJvciIsICJzcGVjaWZpZXIiLCAiYXZhaWxhYmxlVmVyc2lvbnMiLCAiaW52YWxpZEVudHJ5UG9pbnRFcnJvciIsICJhdmFpbGFibGVFbnRyeVBvaW50cyIsICJyZXNvbHZlTnBtU3BlY2lmaWVyIiwgIm5wbSIsICJvcHRpb25zIiwgInZlcnNpb25zIiwgInZlcnNpb24iLCAibWF4U2F0aXNmeWluZyIsICJleHBvcnRzIiwgImRlZmF1bHRFeHBvcnRzIiwgInBhdGgiLCAiYSIsICJ0b0VzbVNoVXJsIiwgImZvcm1hdCIsICJjIiwgInJlc3VsdCIsICJnZXROcG1QYWNrYWdlTWV0YWRhdGEiLCAibCIsICJtZXRhZGF0YSIsICJzIiwgInYiLCAidHJ5UGFyc2UiLCAia2V5IiwgIm5hbWUiLCAicmVzb2x2ZUpzclNwZWNpZmllciIsICJqc3IiLCAidG9Kc3JVcmwiLCAicmVzb2x2ZUpzclZlcnNpb24iLCAicmVzdWx0MiIsICJnZXRKc3JQYWNrYWdlVmVyc2lvbk1ldGFkYXRhIiwgImdldEpzclBhY2thZ2VNZXRhZGF0YSIsICJvbmx5U2NvcGVQcm92aWRlZEVycm9yIiwgInNwZWNpZmllciIsICJwYWNrYWdlTm90Rm91bmRFcnJvciIsICJwYXJzZU5wbVNwZWNpZmllciIsICJjIiwgInBhdGgiLCAic3RhcnRJbmRleCIsICJwYXRoU3RhcnRJbmRleCIsICJ2ZXJzaW9uU3RhcnRJbmRleCIsICJmaXJzdFNsYXNoIiwgIm5hbWUiLCAidGFnIiwgInJhbmdlIiwgInRyeVBhcnNlUmFuZ2UiLCAiQUxMIiwgInJhd0VudHJ5UG9pbnQiLCAiZW50cnlQb2ludCIsICJucG0iLCAiYSIsICJwYXJzZUpzclNwZWNpZmllciIsICJqc3IiLCAidG9EYXRhVVJMIiwgImRhdGEiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAicmVhZGVyIiwgImRhdGFVUkwiLCAiaW5kZXgiLCAicmVtb3RlTG9hZGVyIiwgImluaXQiLCAicmVzb2x2ZWRWZXJzaW9ucyIsICJwcm94eSIsICJhcmdzIiwgImlzTnBtIiwgInJlc3VsdCIsICJwYXJzZU5wbVNwZWNpZmllciIsICJwYXJzZUpzclNwZWNpZmllciIsICJlc2J1aWxkUmVzb2x1dGlvblRvVVJMIiwgImwiLCAiZGV0YWlsIiwgInUiLCAicmVzdWx0MiIsICJyZXNvbHZlTnBtU3BlY2lmaWVyIiwgInJlc29sdmVKc3JTcGVjaWZpZXIiLCAicyIsICJ1cmxUb0VzYnVpbGRSZXNvbHV0aW9uIiwgIm9uTG9hZCIsICJvblJlc29sdmUiLCAiaW5pdGlhbE9wdGlvbnMiLCAicHJvdG9jb2wiLCAic3VwcG9ydGVkUHJvdG9jb2xzIiwgIm5vdFN1cHBvcnRlZFByb3RvY29scyIsICJoYW5kbGVSZXNvbHZlIiwgImxvYWQiLCAidXJsIiwgImNhY2hlRmlyc3QiLCAicGF0dGVybiIsICJmZXRjaCIsICJyb2J1c3RGZXRjaCIsICJyZXMiLCAiaXNDYWNoZSIsICJsb2FkZXIiLCAicmVzcG9uc2VUb0xvYWRlciIsICJibG9iIiwgImlzTG9hZGVyV2hpY2hDYW5JbmNsdWRlU291cmNlTWFwcGluZ1VSTCIsICJjb250ZW50cyIsICJleHRyYWN0U291cmNlTWFwVVJMIiwgIm4iLCAic291cmNlTWFwcGluZ1VSTCIsICJzdGFydCIsICJlbmQiLCAiZGF0YVVSTCIsICJ0b0RhdGFVUkwiLCAiUiIsICJ0IiwgInIiLCAibiIsICJvIiwgImMiLCAibCIsICJiZSIsICJQZSIsICJNIiwgIlJlIiwgImUiLCAidiIsICJzIiwgImkiLCAiYSIsICJEIiwgIlMiLCAiaCIsICJmIiwgImQiLCAidSIsICJwIiwgIkEiLCAiVCIsICJTZSIsICJMIiwgIkkiLCAiVSIsICIkIiwgIlYiLCAiWSIsICJnIiwgIm0iLCAiTyIsICJQIiwgInhlIiwgIlgiLCAiWiIsICJGIiwgImsiLCAieCIsICJCIiwgInEiLCAiSiIsICJRIiwgIkVlIiwgIlciLCAiZWUiLCAiTiIsICJ0ZSIsICJyZSIsICJuZSIsICJqIiwgInoiLCAic2UiLCAiaWUiLCAiYWUiLCAib2UiLCAiXyIsICJLIiwgImNlIiwgInkiLCAibGUiLCAiZmUiLCAiaGUiLCAidWUiLCAiZGUiLCAicGUiLCAiSCIsICIjaSIsICIjbiIsICIjdCIsICIjZSIsICIjcyIsICIjbCIsICIjbyIsICIjZCIsICIjcCIsICIjZyIsICIjYiIsICIjZiIsICIjciIsICIjaCIsICIjdSIsICIjQSIsICIjVCIsICIjUCIsICIjQyIsICIjRSIsICIjUyIsICIjeCIsICIjTyIsICIjeSIsICIjdyIsICIjayIsICIjYyIsICIjUiIsICIjbSIsICIjYSIsICJHIiwgIkUiLCAiZ2UiLCAiYiIsICJDIiwgInciLCAiT2UiLCAia2UiLCAibWUiLCAiVVJMUGF0dGVybiIsICJpbml0aWFsaXplZCIsICJsb2FkIiwgIndhc20iLCAid29ya2VyVVJMIiwgImluaXRpYWxpemUiLCAiZW50cnlQb2ludCIsICJvdXRwdXRGaWxlcyIsICJidWlsZCIsICJyZXNvbHZlciIsICJyZW1vdGVMb2FkZXIiLCAiZmV0Y2hDT1JTIiwgInJlcSIsICJjYWNoZUZpcnN0IiwgImZldGNoXyIsICJpc0FsbG93ZWRDb25uZWN0U3JjIiwgInJlc3VsdCIsICJhdHRlbXB0RnJvbUNhY2hlIiwgInJlcyIsICJzYXZlQXBpQ2FjaGUiLCAiYSIsICJjIiwgImUiLCAiZmluZExhdGVzdENhY2hlIiwgImlzQXZhaWxhYmxlRXh0ZW5zaW9ucyIsICJleHRlbnNpb24iLCAiY2hlY2tDaXJjbGVGaWxsIiwgImljb24iLCAiY3Jvc3NDaXJjbGUiLCAic3Bpbm5lciIsICJwbGF5IiwgInRvb2x0aXAiLCAidGV4dCIsICJ4IiwgInkiLCAiY3JlYXRlQ29udGFpbmVyIiwgImlubmVyIiwgImhlaWdodCIsICJyZXNvbHZlIiwgInN0YXR1c0J1dHRvbiIsICJhIiwgInZpc2libGUiLCAic2hvdyIsICJoaWRlIiwgInRvb2x0aXAiLCAic3RhdHVzIiwgIm1lc3NhZ2UiLCAic3Bpbm5lciIsICJjaGVja0NpcmNsZUZpbGwiLCAiY3Jvc3NDaXJjbGUiLCAidG9wIiwgImxlZnQiLCAiZXhlY0J1dHRvbiIsICJvbkNsaWNrIiwgImEiLCAicGxheSIsICJleGVjTWVudSIsICJvbkNsaWNrIiwgInN0YXR1cyIsICJzZXRTdGF0dXMiLCAic3RhdHVzQnV0dG9uIiwgIm1lbnUiLCAiZXhlY0J1dHRvbiIsICJzbGVlcCIsICJtaWxsaXNlY29uZHMiLCAicmVzb2x2ZSIsICJ0aHJvdHRsZSIsICJjYWxsYmFjayIsICJvcHRpb25zIiwgInRyYWlsaW5nIiwgImludGVydmFsIiwgInF1ZXVlIiwgInJ1bm5pbmciLCAicHVzaCIsICJkYXRhIiwgInBvcCIsICJydW5OZXh0IiwgInNsZWVwIiwgInBhcmFtZXRlcnMiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAicmVzdWx0IiwgImUiLCAiYnVuZGxlIiwgInNldHVwIiwgIndhc20iLCAid29ya2VyVVJMIiwgIm1lbnVzIiwgImNhbGxiYWNrIiwgInRocm90dGxlIiwgIm1lbnUiLCAic2V0U3RhdHVzIiwgImZpbGVzIiwgImdldENvZGVGaWxlcyIsICJ0YWtlSW50ZXJuYWxMaW5lcyIsICJmaWxlIiwgImV4dGVuc2lvbiIsICJpc0F2YWlsYWJsZUV4dGVuc2lvbnMiLCAiaWQiLCAibGluZSIsICJleGVjTWVudSIsICJsb2FkIiwgImNvbnRlbnRzIiwgImUiLCAiQ2FuZGlkYXRlIiwgInRpdGxlIiwgInByb2plY3RzIiwgInNlbGVjdGVkIiwgImNvbmZpcm0iLCAic2UiLCAiQnV0dG9uIiwgInByb2plY3QiLCAiTWFyayIsICJlbmNvZGVUaXRsZVVSSSIsICJ1c2VDb25maXJtIiwgIm1hcmsiLCAiTiIsICJNIiwgInVzZVNlbGVjdCIsICJpdGVtcyIsICJzZWxlY3RvciIsICJzZWxlY3RlZElkIiwgInNldFNlbGVjdGVkSWQiLCAiQiIsICJuZXh0IiwgIk0iLCAiaW5pdCIsICJwcmV2IiwgImluZGV4IiwgIml0ZW0iLCAic2VsZWN0Rmlyc3QiLCAic2VsZWN0TGFzdCIsICJ1c2VQb3NpdGlvbiIsICJwb3MiLCAic3RhbmRhcmRFbGVtZW50IiwgInVwZGF0ZVN0YW5kYXJkRWxlbWVudCIsICJCIiwgInN0eWxlIiwgIlQiLCAicGFyZW50UmVjdCIsICJyZWN0IiwgImdldENoYXJET00iLCAia2V5IiwgInVzZVByb2plY3RGaWx0ZXIiLCAicHJvamVjdHMiLCAib3B0aW9ucyIsICJlbmFibGVQcm9qZWN0cyIsICJzZXRFbmFibGVQcm9qZWN0cyIsICJCIiwgImdldEVuYWJsZXMiLCAic2V0IiwgIk0iLCAicHJvamVjdCIsICJmbGFnIiwgInNldEZyYWciLCAidyIsICJsaXN0ZW5lciIsICJlIiwgImVuYWJsZVNlbGZQcm9qZWN0IiwgImluaXQiLCAidmFsdWUiLCAic2V0RW5hYmxlcyIsICJsaXN0IiwgInAiLCAib2xkIiwgInVzZU9TIiwgIlQiLCAiZGV0ZWN0VVJMIiwgInRleHQiLCAiYmFzZSIsICJlIiwgIlByb2dyZXNzIiwgInByb2dyZXNzIiwgInNlIiwgIkNvbXBsZXRpb24iLCAicG9zaXRpb24iLCAic3RhcnQiLCAiZW5hYmxlU2VsZlByb2plY3RPblN0YXJ0IiwgInByb2plY3RzIiwgInByb3BzIiwgImVuYWJsZVByb2plY3RzIiwgInNldCIsICJ1c2VQcm9qZWN0RmlsdGVyIiwgInVwZGF0ZVN0YW5kYXJkRWxlbWVudCIsICJ0b3AiLCAibGVmdCIsICJyaWdodCIsICJ1c2VQb3NpdGlvbiIsICJvcyIsICJ1c2VPUyIsICJzZSIsICJOIiwgIlNvdXJjZUZpbHRlciIsICJJdGVtTGlzdCIsICJjb25maXJtQWZ0ZXIiLCAiY2FuY2VsIiwgInF1ZXJ5IiwgIml0ZW1zIiwgInByb2dyZXNzIiwgImNhbGxiYWNrIiwgImxpbWl0IiwgIm1hcmsiLCAiY29uZmlybSIsICJNIiwgInRpdGxlIiwgInByb2plY3QiLCAidGV4dCIsICJwcmV2IiwgImxpbmUiLCAiaXNFeHRlcm5hbFByb2plY3RNb2RlIiwgIlQiLCAiY2FuZGlkYXRlc1Byb3BzIiwgInJlc3VsdCIsICJpdGVtIiwgImRldGVjdFVSTCIsICJzZWxlY3RlZElkIiwgIm5leHQiLCAic2VsZWN0TGFzdCIsICJzZWxlY3RGaXJzdCIsICJ1c2VTZWxlY3QiLCAic2VsZWN0b3IiLCAiY29uZmlybVNlbGVjdGVkIiwgImNhbmRpZGF0ZSIsICJ3IiwgImluaXQiLCAic3R5bGUiLCAicmVmIiwgImVsZW1lbnQiLCAicm9vdCIsICJDYW5kaWRhdGUiLCAiUHJvZ3Jlc3MiLCAicHJvamVjdFNjb3JlIiwgIml0ZW1Db3VudCIsICJmcmVlemVVbnRpbCIsICJwcm9qZWN0UHJvcHMiLCAiYSIsICJiIiwgInRleHRJbnB1dCIsICJNYXJrIiwgImRlYnVnTW9kZSIsICJzZXREZWJ1Z01vZGUiLCAibW9kZSIsICJjcmVhdGVEZWJ1ZyIsICJmaWxlbmFtZSIsICJrZXkiLCAidmFsdWUiLCAiYXJncyIsICJhc3NlcnRpb24iLCAibGFiZWwiLCAiZGVjb2RlIiwgImxpbmsiLCAidGl0bGUiLCAiaW1hZ2UiLCAidXBkYXRlZCIsICJsaW5rcyIsICJlbmNvZGUiLCAiY29udmVydExpbmtzIiwgInBhZ2VzIiwgImxpbmtNYXAiLCAicGFnZSIsICJ0aXRsZUxjIiwgInRvVGl0bGVMYyIsICJsaW5rIiwgImxpbmtMYyIsICJlbmNvZGUiLCAibG9nZ2VyIiwgImNyZWF0ZURlYnVnIiwgImRvd25sb2FkTGlua3MiLCAicHJvamVjdCIsICJmb2xsb3dpbmdJZCIsICJwYWdlcyIsICJ0YWciLCAicmVzIiwgImdldExpbmtzIiwgInJlc3VsdCIsICJjb252ZXJ0TGlua3MiLCAiZmV0Y2hQcm9qZWN0U3RhdHVzIiwgInByb2plY3RzIiwgInByb2plY3RJZHMiLCAibmV3UHJvamVjdHMiLCAiY2hlY2tlZE1hcCIsICJwcm9qZWN0IiwgInJlc3VsdCIsICJsaXN0UHJvamVjdHMiLCAibmFtZSIsICJyZXMiLCAiZ2V0UHJvamVjdCIsICJpbnN0YW5jZU9mQW55IiwgIm9iamVjdCIsICJjb25zdHJ1Y3RvcnMiLCAiYyIsICJpZGJQcm94eWFibGVUeXBlcyIsICJjdXJzb3JBZHZhbmNlTWV0aG9kcyIsICJnZXRJZGJQcm94eWFibGVUeXBlcyIsICJnZXRDdXJzb3JBZHZhbmNlTWV0aG9kcyIsICJ0cmFuc2FjdGlvbkRvbmVNYXAiLCAidHJhbnNmb3JtQ2FjaGUiLCAicmV2ZXJzZVRyYW5zZm9ybUNhY2hlIiwgInByb21pc2lmeVJlcXVlc3QiLCAicmVxdWVzdCIsICJwcm9taXNlIiwgInJlc29sdmUiLCAicmVqZWN0IiwgInVubGlzdGVuIiwgInN1Y2Nlc3MiLCAiZXJyb3IiLCAid3JhcCIsICJjYWNoZURvbmVQcm9taXNlRm9yVHJhbnNhY3Rpb24iLCAidHgiLCAiZG9uZSIsICJjb21wbGV0ZSIsICJpZGJQcm94eVRyYXBzIiwgInRhcmdldCIsICJwcm9wIiwgInJlY2VpdmVyIiwgInZhbHVlIiwgInJlcGxhY2VUcmFwcyIsICJjYWxsYmFjayIsICJ3cmFwRnVuY3Rpb24iLCAiZnVuYyIsICJhcmdzIiwgInVud3JhcCIsICJ0cmFuc2Zvcm1DYWNoYWJsZVZhbHVlIiwgIm5ld1ZhbHVlIiwgIm9wZW5EQiIsICJuYW1lIiwgInZlcnNpb24iLCAiYmxvY2tlZCIsICJ1cGdyYWRlIiwgImJsb2NraW5nIiwgInRlcm1pbmF0ZWQiLCAib3BlblByb21pc2UiLCAiZXZlbnQiLCAiZGIiLCAiZGVsZXRlREIiLCAicmVhZE1ldGhvZHMiLCAid3JpdGVNZXRob2RzIiwgImNhY2hlZE1ldGhvZHMiLCAiZ2V0TWV0aG9kIiwgInRhcmdldEZ1bmNOYW1lIiwgInVzZUluZGV4IiwgImlzV3JpdGUiLCAibWV0aG9kIiwgInN0b3JlTmFtZSIsICJvbGRUcmFwcyIsICJhZHZhbmNlTWV0aG9kUHJvcHMiLCAibWV0aG9kTWFwIiwgImFkdmFuY2VSZXN1bHRzIiwgIml0dHJQcm94aWVkQ3Vyc29yVG9PcmlnaW5hbFByb3h5IiwgImN1cnNvckl0ZXJhdG9yVHJhcHMiLCAiY2FjaGVkRnVuYyIsICJpdGVyYXRlIiwgImN1cnNvciIsICJwcm94aWVkQ3Vyc29yIiwgImlzSXRlcmF0b3JQcm9wIiwgImxvZ2dlciIsICJjcmVhdGVEZWJ1ZyIsICJkYiIsICJvcGVuIiwgIkYiLCAibmFtZSIsICJ3cml0ZSIsICJkYXRhIiwgImxpc3RlbmVycyIsICJlbWl0Q2hhbmdlIiwgInByb2plY3RzIiwgImV2ZW50IiwgImVtaXRDaGFuZ2VfIiwgImJjIiwgIm5vdGlmeUNoYW5uZWxOYW1lIiwgImxpc3RlbmVyIiwgInByb2plY3QiLCAiZSIsICJzdWJzY3JpYmUiLCAibGlzdGVuZXJzMiIsICJsb2dnZXIiLCAiY3JlYXRlRGVidWciLCAiY2hlY2siLCAicHJvamVjdHMiLCAidXBkYXRlSW50ZXJ2YWwiLCAiZGIiLCAib3BlbiIsICJwcm9qZWN0c01heWJlTmVlZGVkVXBncmFkZSIsICJwcm9qZWN0U3RhdHVzIiwgInR4IiwgInByb2plY3QiLCAic3RhdHVzIiwgImNoZWNrZWQiLCAibm93IiwgInRlbXBTdGF0dXMiLCAidXBkYXRlZFByb2plY3RzIiwgInJlc3VsdCIsICJyZXMiLCAiZmV0Y2hQcm9qZWN0U3RhdHVzIiwgInJlczIiLCAiZG93bmxvYWRMaW5rcyIsICJkYXRhIiwgIndyaXRlIiwgImVtaXRDaGFuZ2UiLCAic3RvcmUiLCAibG9hZCIsICJsaXN0IiwgInN0YXJ0IiwgInNvdXJjZSIsICJtcyIsICJrIiwgImUiLCAibG9nZ2VyIiwgImNyZWF0ZURlYnVnIiwgInVzZVNvdXJjZSIsICJwcm9qZWN0cyIsICJjYW5kaWRhdGVzIiwgInNldENhbmRpZGF0ZXMiLCAiQiIsICJ1cGRhdGUiLCAiTSIsICJzb3VyY2VzIiwgInN0YXJ0IiwgInJlc3VsdCIsICJwcm9qZWN0IiwgImxpbmtzIiwgImNvbXByZXNzZWRMaW5rIiwgInRpdGxlIiwgInVwZGF0ZWQiLCAiaW1hZ2UiLCAiZGVjb2RlIiwgInRpdGxlTGMiLCAidG9UaXRsZUxjIiwgImNhbmRpZGF0ZSIsICJkYXRhIiwgIm1zIiwgInciLCAidGVybWluYXRlIiwgInVwZGF0ZV8iLCAibG9hZCIsICJjbGVhbnVwIiwgInN1YnNjcmliZSIsICJjYWxsYmFjayIsICJjaGVjayIsICJpbnRlcnZhbFRpbWVyIiwgIlVzZXJDU1MiLCAicHJvcHMiLCAidXJsIiwgIlQiLCAiZGV0ZWN0VVJMIiwgInNlIiwgIk4iLCAiQ1NTIiwgInNlIiwgImNyYXdsTGluayIsICJsaW5lIiwgImNoYXIiLCAiY3Jhd2wiLCAibm9kZXMiLCAibm9kZSIsICJyZWR1Y2VyIiwgInN0YXRlIiwgImFjdGlvbiIsICJfIiwgInByb3BzIiwgInN0YXJ0IiwgImVuZCIsICJzZWxlY3RlZFRleHQiLCAiaXNTZWxlY3RNb2RlIiwgImxpbmsiLCAiZGV0ZWN0TGluayIsICJsaW5lIiwgImNoYXIiLCAid2hvbGUiLCAiY3Jhd2xMaW5rIiwgImN1cnNvckxpbmUiLCAidXNlQ2FjaGVkTGluZXMiLCAibGluZXMiLCAieiIsICJpc1VwZGF0ZWRZZXQiLCAidyIsICJjYWxsYmFjayIsICJNIiwgImxvZ2dlciIsICJjcmVhdGVEZWJ1ZyIsICJ1c2VMaWZlY3ljbGUiLCAic3RhdGUiLCAiZGlzcGF0Y2giLCAiSSIsICJyZWR1Y2VyIiwgImdldExpbmVzIiwgInVzZUNhY2hlZExpbmVzIiwgImRlYm91bmNlZERpc3BhdGNoIiwgIlQiLCAidGltZXIiLCAidHlwZSIsICJjdXJzb3IiLCAic2VsZWN0aW9uIiwgInRha2VTdG9yZXMiLCAidyIsICJoYW5kbGVMaW5lQ2hhbmdlZCIsICJoYW5kbGVTZWxlY3Rpb25DaGFuZ2VkIiwgInRha2VTZWxlY3Rpb24iLCAiY2FsbGJhY2siLCAidGFrZUN1cnNvciIsICJwcmV2U3RhdGUiLCAic2V0UHJldlN0YXRlIiwgIkIiLCAiTSIsICJmbGFnIiwgImpvYiIsICJwcm9taXNlIiwgInVwZGF0b3IiLCAibGluZXMiLCAibGluZSIsICJwcmV2IiwgInRleHQiLCAicG9zaXRpb24iLCAiaW5zZXJ0VGV4dCIsICJjb21wYXJlQXNlIiwgImEiLCAiYiIsICJkaWZmIiwgInNhIiwgInMiLCAic2IiLCAiaSIsICJzZGlmZiIsICJsZGlmZiIsICJiaXREUCIsICJxdWVyeSIsICJQZXEiLCAicnF1ZXJ5IiwgImkiLCAicSIsICJwaWwiLCAicGl1IiwgIm0iLCAiUHYwIiwgImFjY2VwdCIsICJ0ZXh0IiwgIk12IiwgIlB2IiwgInJ0ZXh0IiwgIkNtIiwgImoiLCAidCIsICJFcSIsICJYdiIsICJYaCIsICJQaCIsICJNaCIsICJnZXRNYXhEaXN0YW5jZSIsICJtYWtlRmlsdGVyIiwgInF1ZXJ5IiwgInF1ZXJpZXMiLCAicmV2ZXJ0VGl0bGVMYyIsICJhIiwgImIiLCAicSIsICJzb3VyY2UiLCAicmVzdWx0IiwgImZpbHRlciIsICJtIiwgIm1heERpc3RhbmNlIiwgImZpbHRlcl8iLCAiYml0RFAiLCAidGl0bGUiLCAiZGlzdCIsICJtYXRjaGVzIiwgInByb3BzIiwgImQiLCAiaSIsICJzIiwgImUiLCAibmV3TWF0Y2giLCAicHJldiIsICJsb2dnZXIiLCAiY3JlYXRlRGVidWciLCAiY2FuY2VsYWJsZVNlYXJjaCIsICJxdWVyeSIsICJzb3VyY2UiLCAib3B0aW9ucyIsICJmaWx0ZXIiLCAibWFrZUZpbHRlciIsICJjaHVuayIsICJ0b3RhbCIsICJpIiwgInN0YXJ0IiwgInJlc29sdmUiLCAibXMiLCAiZGVib3VuY2UiLCAiZm4iLCAid2FpdCIsICJ0aW1lb3V0IiwgImZsdXNoIiwgImRlYm91bmNlZCIsICJhcmdzIiwgImxvZ2dlciIsICJjcmVhdGVEZWJ1ZyIsICJ1c2VTZWFyY2giLCAiaW5pdGlhbFNvdXJjZSIsICJleGVjdXRlU2VhcmNoIiwgIk0iLCAicXVlcnkiLCAic291cmNlIiwgImV4ZWN1dGVkQnlTb3VyY2VVcGRhdGUiLCAiYWJvcnRlZCIsICJpdGVyYXRvciIsICJjYW5jZWxhYmxlU2VhcmNoIiwgInN0YWNrIiwgImNhbmRpZGF0ZXMiLCAiZGlzcGF0Y2giLCAiZGVib3VuY2VkRGlzcGF0Y2giLCAiZGVib3VuY2UiLCAicmV0dXJuZWQiLCAicHJvZ3Jlc3MiLCAidXNlU2VhcmNoU3RhdGUiLCAiSSIsICJUIiwgImNyZWF0ZVJlZHVjZXIiLCAiaXNTZWFyY2hpbmciLCAicHJvamVjdFNjb3JlIiwgIml0ZW1zIiwgInNvcnRBbmRTY29yaW5nIiwgInN0YXRlIiwgInNlYXJjaGVyIiwgImFjdGlvbiIsICJwcmV2UXVlcnkiLCAicHJldkpvYiIsICJydW4iLCAiYWJvcnQiLCAiZG9uZSIsICJwcmV2U291cmNlIiwgInJlc3QiLCAicHJldlByb2dyZXNzIiwgInByZXZDYW5kaWRhdGVzIiwgInBhZ2UiLCAiY29tcGFyZUFzZSIsICJwcm9qZWN0cyIsICJwcm9qZWN0IiwgInVzZUV4cG9ydHMiLCAiZXhwb3J0ZXIiLCAiZXhwb3J0T2JqZWN0IiwgInJlZiIsICJ6IiwgInciLCAia2V5IiwgIm9wSW5pdCIsICJBcHAiLCAicHJvcHMiLCAic291cmNlIiwgInVzZVNvdXJjZSIsICJzZWFyY2hSZXN1bHQiLCAidXBkYXRlIiwgInNlYXJjaCIsICJ1c2VTZWFyY2giLCAic3RhdGUiLCAic2V0RW5hYmxlIiwgIm9wcyIsICJ1c2VMaWZlY3ljbGUiLCAib3BlcmF0b3JzIiwgInNldE9wZXJhdG9ycyIsICJCIiwgImNhbGxiYWNrIiwgInN0eWxlIiwgIm9wdGlvbnMiLCAidXNlRXhwb3J0cyIsICJNIiwgInNlIiwgIk4iLCAiQ1NTIiwgIlVzZXJDU1MiLCAiQ29tcGxldGlvbiIsICJzZXR1cCIsICJpbml0IiwgImFwcCIsICJzaGFkb3dSb290IiwgImxpbWl0IiwgImRlYnVnIiwgIm1hcmsiLCAic3R5bGUiLCAiZW5hYmxlU2VsZlByb2plY3RPblN0YXJ0IiwgInByb2plY3RzIiwgInNldERlYnVnTW9kZSIsICJyZXNvbHZlIiwgImRlIiwgInNlIiwgIkFwcCIsICJjb250ZW50IiwgImJsb2NrcyIsICJibG9jayIsICJsaW5lcyIsICJpbmRlbnQiLCAibGluZSIsICJkaWZmIiwgIm9sZE1hcCIsICJuZXdNYXAiLCAiZmlsZW5hbWUiLCAiYmxvY2tzIiwgIm9sZENvZGUiLCAiY29udGVudCIsICJyZWFkQ29kZUJsb2NrcyIsICJsaW5lcyIsICJjb2RlQmxvY2tzIiwgInBhY2tzIiwgInFlIiwgImxpbmUiLCAiY291bnRlciIsICJibG9jayIsICJibG9ja3MiLCAibGluZUNvdW50IiwgImRlYm91bmNlIiwgImZ1bmMiLCAiam9iIiwgInJ1bm5pbmciLCAicnVuIiwgImFyZ3MiLCAicmVzb2x2ZSIsICJyZXN1bHQiLCAidmFsdWUiLCAicHJvbWlzZSIsICJWaWV3ZXIiLCAiX2ZpbGVuYW1lIiwgInByZXZpZXciLCAiZGVib3VuY2UiLCAiYmVmb3JlIiwgImFmdGVyIiwgImFyZWEiLCAiZWxlbWVudHMiLCAiY29udGVudCIsICJyZXN1bHQiLCAiaWQiLCAibGluZURPTSIsICJnZXRMaW5lRE9NIiwgImZpeE1hcmdpbiIsICJpbmRlbnQiLCAiYm9keUlkcyIsICJsaW5lcyIsICJpZHMiLCAic2V0dXAiLCAicHJldmlld2VycyIsICJ2aWV3ZXJzIiwgInVwZGF0ZSIsICJjb2RlQmxvY2tzIiwgInJlYWRDb2RlQmxvY2tzIiwgInRha2VJbnRlcm5hbExpbmVzIiwgImNoYW5nZWQiLCAiZmlsZW5hbWUiLCAiZGlmZiIsICJuZXdCbG9ja3MiLCAidmlld2VyIiwgImNvbXBpbGUiLCAid2hlbiIsICJWaWV3ZXIiLCAicmVzdWx0IiwgImhhbmRsZVBhZ2VDaGFuZ2VkIiwgInN0eWxlIiwgInRvRGF0YVVSTCIsICJibG9iIiwgImZpbGVSZWFkZXIiLCAicHJvbWlzZSIsICJyZXNvbHZlIiwgInByZXZpZXdTVkciLCAicHJldmlld0luaXQiLCAic3ZnIiwgImNvbnRlbnQiLCAiZXJyb3IiLCAicHJlIiwgImNvZGUiLCAidXJsIiwgInRvRGF0YVVSTCIsICJpbWciLCAicmVxdWlyZV93aW5kb3ciLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJ3aW4iLCAiX19nbG9iYWwkIiwgImJ1aWxkX2V4cG9ydHMiLCAiX19leHBvcnQiLCAiYnVpbGRfZGVmYXVsdCIsICJfX21vZHVsZSIsICJhIiwgInIiLCAiX19yZUV4cG9ydCIsICJfX2RlZmF1bHQiLCAiX19yZXN0IiwgInJlcXVpcmVfaXNfZnVuY3Rpb24iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJpc0Z1bmN0aW9uIiwgInRvU3RyaW5nIiwgImZuIiwgInN0cmluZyIsICJidWlsZF9leHBvcnRzIiwgIl9fZXhwb3J0IiwgImJ1aWxkX2RlZmF1bHQiLCAiX19tb2R1bGUiLCAidyIsICJwIiwgIl9fcmVFeHBvcnQiLCAiX19kZWZhdWx0IiwgIl9fcmVzdCIsICJyZXF1aXJlX3BhcnNlX2hlYWRlcnMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJ0cmltIiwgInN0cmluZyIsICJpc0FycmF5IiwgImFyZyIsICJoZWFkZXJzIiwgInJlc3VsdCIsICJoZWFkZXJzQXJyIiwgImkiLCAicm93IiwgImluZGV4IiwgImtleSIsICJ2YWx1ZSIsICJidWlsZF9leHBvcnRzIiwgIl9fZXhwb3J0IiwgImJ1aWxkX2RlZmF1bHQiLCAiX19tb2R1bGUiLCAiXyIsICJwIiwgIl9fcmVFeHBvcnQiLCAiX19kZWZhdWx0IiwgIl9fcmVzdCIsICJyZXF1aXJlX2ltbXV0YWJsZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4dGVuZCIsICJoYXNPd25Qcm9wZXJ0eSIsICJ0YXJnZXQiLCAiaSIsICJzb3VyY2UiLCAia2V5IiwgImJ1aWxkX2V4cG9ydHMiLCAiX19leHBvcnQiLCAiYnVpbGRfZGVmYXVsdCIsICJfX21vZHVsZSIsICJ1IiwgImwiLCAiX19yZUV4cG9ydCIsICJfX2RlZmF1bHQiLCAiX19yZXN0IiwgInJlcXVpcmVfeGhyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAid2luZG93IiwgImgiLCAiaXNGdW5jdGlvbiIsICJwYXJzZUhlYWRlcnMiLCAieHRlbmQiLCAiY3JlYXRlWEhSIiwgIm5vb3AiLCAiZm9yRWFjaEFycmF5IiwgIm1ldGhvZCIsICJ1cmkiLCAib3B0aW9ucyIsICJjYWxsYmFjayIsICJpbml0UGFyYW1zIiwgIl9jcmVhdGVYSFIiLCAiYXJyYXkiLCAiaXRlcmF0b3IiLCAiaSIsICJpc0VtcHR5IiwgIm9iaiIsICJwYXJhbXMiLCAiY2FsbGVkIiwgImVyciIsICJyZXNwb25zZSIsICJib2R5IiwgInJlYWR5c3RhdGVjaGFuZ2UiLCAieGhyIiwgImxvYWRGdW5jIiwgImdldEJvZHkiLCAiZ2V0WG1sIiwgImlzSnNvbiIsICJlcnJvckZ1bmMiLCAiZXZ0IiwgInRpbWVvdXRUaW1lciIsICJmYWlsdXJlUmVzcG9uc2UiLCAiYWJvcnRlZCIsICJzdGF0dXMiLCAia2V5IiwgImhlYWRlcnMiLCAic3luYyIsICJlIiwgImZpcmVmb3hCdWdUYWtlbkVmZmVjdCIsICJidWlsZF9leHBvcnRzIiwgIl9fZXhwb3J0IiwgImJ1aWxkX2RlZmF1bHQiLCAiX19tb2R1bGUiLCAiQyIsICJFIiwgIl9fcmVFeHBvcnQiLCAiX19kZWZhdWx0IiwgIl9fcmVzdCIsICJfdHlwZW9mIiwgIm9iaiIsICJhc3luY0dlbmVyYXRvciIsICJBd2FpdFZhbHVlIiwgInZhbHVlIiwgIkFzeW5jR2VuZXJhdG9yIiwgImdlbiIsICJmcm9udCIsICJiYWNrIiwgInNlbmQiLCAia2V5IiwgImFyZyIsICJyZXNvbHZlIiwgInJlamVjdCIsICJyZXF1ZXN0IiwgInJlc3VtZSIsICJyZXN1bHQiLCAic2V0dGxlIiwgImVyciIsICJ0eXBlIiwgImZuIiwgImNsYXNzQ2FsbENoZWNrIiwgImluc3RhbmNlIiwgIkNvbnN0cnVjdG9yIiwgImNyZWF0ZUNsYXNzIiwgImRlZmluZVByb3BlcnRpZXMiLCAidGFyZ2V0IiwgInByb3BzIiwgImkiLCAiZGVzY3JpcHRvciIsICJwcm90b1Byb3BzIiwgInN0YXRpY1Byb3BzIiwgInRvQ29uc3VtYWJsZUFycmF5IiwgImFyciIsICJhcnIyIiwgImxhc3RFcnJvciIsICJtYWtlRmFpbEhUTUwiLCAibXNnIiwgIkdFVF9BX1dFQkdMX0JST1dTRVIiLCAiT1RIRVJfUFJPQkxFTSIsICJFUlJPUl9CUk9XU0VSX1NVUFBPUlQiLCAiRVJST1JfT1RIRVIiLCAic2V0dXBXZWJHTCIsICJjYW52YXMiLCAib3B0QXR0cmlicyIsICJvbkVycm9yIiwgInNob3dMaW5rIiwgInN0ciIsICJjb250YWluZXIiLCAiaGFuZGxlRXJyb3IiLCAiZXJyb3JDb2RlIiwgImNvbnRleHQiLCAiY3JlYXRlM0RDb250ZXh0IiwgIm5hbWVzIiwgImlpIiwgImNyZWF0ZVNoYWRlciIsICJtYWluIiwgInNvdXJjZSIsICJvZmZzZXQiLCAiZ2wiLCAic2hhZGVyIiwgImNvbXBpbGVkIiwgImNyZWF0ZVByb2dyYW0iLCAic2hhZGVycyIsICJvcHRMb2NhdGlvbnMiLCAicHJvZ3JhbSIsICJfaWkiLCAibGlua2VkIiwgInBhcnNlVW5pZm9ybXMiLCAidW5pZm9ybXMiLCAicHJlZml4IiwgInBhcnNlZCIsICJuYW1lIiwgInVuaWZvcm0iLCAidSIsICJpc0NhbnZhc1Zpc2libGUiLCAiYm91bmQiLCAiaXNQb3dlck9mMiIsICJpc1NhZmFyaSIsICJpc0RpZmYiLCAiYSIsICJiIiwgImdldEZpbGUiLCAidXJsIiwgImh0dHBSZXF1ZXN0IiwgInN1YnNjcmliZU1peGluJDEiLCAibGlzdGVuZXJzIiwgImYiLCAibGlzdGVuZXIiLCAiX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiIsICJfZGlkSXRlcmF0b3JFcnJvciIsICJfaXRlcmF0b3JFcnJvciIsICJfaXRlcmF0b3IiLCAiX3N0ZXAiLCAiaXRlbSIsICJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiIsICJfZGlkSXRlcmF0b3JFcnJvcjIiLCAiX2l0ZXJhdG9yRXJyb3IyIiwgIl9pdGVyYXRvcjIiLCAiX3N0ZXAyIiwgIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zIiwgIl9kaWRJdGVyYXRvckVycm9yMyIsICJfaXRlcmF0b3JFcnJvcjMiLCAiX2l0ZXJhdG9yMyIsICJfc3RlcDMiLCAiZXZlbnQiLCAiX2xlbiIsICJkYXRhIiwgIl9rZXkiLCAiX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQiLCAiX2RpZEl0ZXJhdG9yRXJyb3I0IiwgIl9pdGVyYXRvckVycm9yNCIsICJfaXRlcmF0b3I0IiwgIl9zdGVwNCIsICJUZXh0dXJlIiwgIm9wdGlvbnMiLCAidW5pdCIsICJfdGhpcyIsICJleHQiLCAiaXNWaWRlbyIsICJlbGVtZW50IiwgImUiLCAid2lkdGgiLCAiaGVpZ2h0IiwgIl90aGlzMiIsICJlbCIsICJHbHNsQ2FudmFzIiwgImNvbnRleHRPcHRpb25zIiwgInhociIsICJlcnJvciIsICJyZXNwb25zZSIsICJib2R5IiwgIl9zb3VyY2UiLCAidGV4Q29vcmRzTG9jIiwgInZlcnRpY2VzTG9jIiwgImltZ0xpc3QiLCAibkltZyIsICJtb3VzZSIsICJzYW5kYm94IiwgIlJlbmRlckxvb3AiLCAidGV4IiwgImF0dCIsICJidWZmZXIiLCAiZnJhZ1N0cmluZyIsICJ2ZXJ0U3RyaW5nIiwgImxpbmVzIiwgImxpbmUiLCAibGluZV90cmltIiwgImRlcCIsICJuVGV4dHVyZXMiLCAiX2xpbmVzIiwgIm1hdGNoIiwgInZlcnRleFNoYWRlciIsICJmcmFnbWVudFNoYWRlciIsICJidWZmZXJzIiwgImNhbGxiYWNrIiwgInByZV90ZXN0X3ZlcnQiLCAicHJlX3Rlc3RfZnJhZyIsICJwcmVfdGVzdF9wYXVzZWQiLCAicXVlcnkiLCAid2FzVmFsaWQiLCAiZmluaXNoVGVzdCIsICJ3YWl0Rm9yVGVzdCIsICJhdmFpbGFibGUiLCAiZGlzam9pbnQiLCAicmV0IiwgInVybEVsZW1lbnRPckRhdGEiLCAiX3RoaXMzIiwgImFyZ3MiLCAicmVjdCIsICJtb3VzZV94IiwgIm1vdXNlX3kiLCAibWV0aG9kIiwgIl9sZW4yIiwgIl9rZXkyIiwgImNoYW5nZSIsICJsb2NhdGlvbiIsICJ0ZXh0dXJlIiwgImRpc3BsYXlXaWR0aCIsICJkaXNwbGF5SGVpZ2h0IiwgImRhdGUiLCAibm93IiwgIlciLCAiSCIsICJnbHNsIiwgInZlcnRleCIsICJmcmFnbWVudCIsICJpbnB1dCIsICJvdXRwdXQiLCAidGVtcCIsICJpbmRleCIsICJtaW5XIiwgIm1pbkgiLCAicGl4ZWxzIiwgIm5ld0luZGV4IiwgIm5ld1RleHR1cmUiLCAibmV3QnVmZmVyIiwgImxvYWRBbGxHbHNsQ2FudmFzIiwgImxpc3QiLCAiR2xzbENhbnZhc19lc19kZWZhdWx0IiwgInByZXZpZXdHTFNMIiwgInByZXZpZXdJbml0IiwgImNhbnZhcyIsICJxIiwgImNvbnRlbnQiLCAiZW5jb2RlNjQiLCAiZGF0YSIsICJyIiwgImkiLCAiYXBwZW5kM2J5dGVzIiwgImVuY29kZTZiaXQiLCAiYiIsICJiMSIsICJiMiIsICJiMyIsICJjMSIsICJjMiIsICJjMyIsICJjNCIsICJ0b1BsYW50VU1MIiwgInVtbCIsICJ0eXBlIiwgInN0cmVhbSIsICJjb21wcmVzc2VkIiwgImVuY29kZTY0IiwgInByZXZpZXdQbGFudFVNTCIsICJwcmV2aWV3SW5pdCIsICJpbWciLCAidXJsIiwgInRvUGxhbnRVTUwiLCAiY29udGVudCIsICJqb2IiLCAid29ya2VyIiwgInJlbmRlclRvU1ZHIiwgInRpa3oiLCAid29ya2VyVVJMIiwgInppcHBlZEFzc2V0VVJMIiwgImNvbnNvbGUiLCAiaW5pdCIsICJwcm9taXNlIiwgInJlc29sdmUiLCAiY2FsbGJhY2siLCAiZSIsICJjb21tYW5kIiwgImluaXRpYWxpemVkIiwgInByZXZpZXdUaWtaIiwgIndvcmtlclVSTCIsICJ6aXBwZWRBc3NldFVSTCIsICJwcmV2aWV3SW5pdCIsICJsb2dnZXIiLCAibWFrZUxvZ2dlciIsICJjb21waWxlTG9nIiwgImxvZyIsICJtZXNzYWdlIiwgImltZyIsICJ0aW1lciIsICJzdmciLCAicmVuZGVyVG9TVkciLCAiY29udGVudCIsICJ0b0RhdGFVUkwiLCAiZGl2IiwgInNoYWRvd1Jvb3QiLCAic3R5bGUiLCAicHJlIiwgImNvZGUiLCAidXNlQXN5bmMiLCAiY2FsbGJhY2siLCAiaW5pdGlhbFZhbHVlIiwgImRlbGF5IiwgImRlcHMiLCAic3RhdGUiLCAic2V0U3RhdGUiLCAiQiIsICJyZXN1bHQiLCAic2V0UmVzdWx0IiwgImNhY2hlZENhbGxiYWNrIiwgIk0iLCAidyIsICJ0aW1lciIsICJlIiwgImNvbnZlcnQiLCAiY29tbWl0cyIsICJjaGFuZ2VzIiwgImNyZWF0ZWQiLCAidXNlcklkIiwgImNoYW5nZSIsICJjaGFuZ2VJbmZvIiwgIm1ha2VDaGFuZ2VJbmZvIiwgInJhbmdlIiwgImxpbmVzIiwgInNuYXBzaG90cyIsICJsaW5lIiwgImluZGV4IiwgImlkIiwgImdldENvbW1pdEhpc3RvcnkiLCAicHJvamVjdCIsICJwYWdlSWQiLCAicmVzIiwgImNvbW1pdHMiLCAiY29udmVydCIsICJnZXRQYWdlSGlzdG9yeSIsICJzbmFwc2hvdHMiLCAicGFnZXMiLCAibGluZXMiLCAiY3JlYXRlZCIsICJyYW5nZSIsICJzZXR1cCIsICJwcm9qZWN0cyIsICJhcHAiLCAic2hhZG93Um9vdCIsICJyZXNvbHZlIiwgImRlIiwgInNlIiwgIkFwcCIsICJjb250cm9sbGVyIiwgImdldENvbnRyb2xsZXIiLCAiY2xvc2VkIiwgInNldENsb3NlZCIsICJCIiwgIm9wZW4iLCAiTSIsICJjbG9zZSIsICJ0b2dnbGUiLCAicHJldiIsICJ3IiwgImhhbmRsZUNsb3NlIiwgImUiLCAic3RhdGUiLCAicmVzdWx0IiwgInVzZUFzeW5jIiwgImNvbW1pdCIsICJwYWdlIiwgImdldENvbW1pdEhpc3RvcnkiLCAiZ2V0UGFnZUhpc3RvcnkiLCAidGltZSIsICJzbmFwc2hvdHMiLCAibGluZSIsICJwcmV2VXBkYXRlZCIsICJ1cGRhdGVkIiwgInByZXZUZXh0IiwgIm1heCIsICJzZXRNYXgiLCAiaW5kZXgiLCAic2V0SW5kZXgiLCAidmFsdWUiLCAib25TbGlkZXJDaGFuZ2UiLCAiZXZlbnQiLCAiTiIsICJ4IiwgImlzTW9iaWxlIiwgInBvb2wiLCAidGhyZXNob2xkIiwgImFyZ3MiLCAiZnVuYyIsICJydW5uaW5nIiwgIndhaXRpbmdzIiwgIndhaXRGb3JSZWFkeSIsICJyZXNvbHZlIiwgImFyZyIsICJpZCIsICJlIiwgInJlcGxhY2UiLCAibGlua3MiLCAicHJvamVjdHMiLCAiY2FsbGJhY2siLCAiYmVmb3JlIiwgImFmdGVyIiwgInNvY2tldCIsICJtYWtlU29ja2V0IiwgIml0ZXIxIiwgInBvb2wiLCAibGluayIsICJjb3VudCIsICJyZXBsYWNlZCIsICJpdGVyMiIsICJwcm9qZWN0IiwgInJlc3VsdCIsICJyZXBsYWNlQWxpbmsiLCAidG9FcnJvciIsICJkaXNjb25uZWN0IiwgInJlcGxhY2VMaW5rcyIsICJwYXRjaCIsICJsaW5lcyIsICJwZXJzaXN0ZW50IiwgImxpbmUiLCAiZ2V0TGlua3MiLCAidGV4dCIsICJlIiwgImVycm9yIiwgIm1vZF9leHBvcnRzIiwgIl9fZXhwb3J0IiwgImplIiwgInFlIiwgImNvbnZlcnQiLCAidGV4dCIsICJxZSIsICJibG9jayIsICJjb252ZXJ0Q29kZUJsb2NrIiwgImNvbnZlcnRUYWJsZSIsICJjb252ZXJ0TGluZSIsICJsaW5lIiwgImZpbGVOYW1lIiwgImNvbnRlbnQiLCAiaW5kZW50IiwgInRhZyIsICJjZWxscyIsICJjZWxsIiwgIm5vZGVzIiwgIm5vZGUiLCAiY29udmVydE5vZGUiLCAiZGVjbyIsICJudW0iLCAidGV4dCIsICJnZXRMaW5rcyIsICJyZXN1bHQiLCAiY29udmVydCIsICJlbmFibGUiLCAidGV4dCIsICJ0aXRsZSIsICJyZW5kZXIiLCAiZGlzcG9zZSIsICJ1c2VTdGF0dXNCYXIiLCAicHJvamVjdCIsICJwYXRjaCIsICJwZXJzaXN0ZW50IiwgImUiLCAic2xlZXAiLCAiY29udmVydFNiMk1kIiwgImJsb2NrIiwgInRvcEluZGVudExldmVsIiwgImdldEZpbGVUeXBlIiwgImNvbnZlcnRUYWJsZSIsICJjb252ZXJ0TGluZSIsICJ0YWJsZSIsICJsaW5lIiwgIm1heENvbCIsICJyb3ciLCAiaSIsICJjb2x1bW4iLCAibm9kZSIsICJjb252ZXJ0Tm9kZSIsICJJTkRFTlQiLCAiY29udGVudCIsICJyZXN1bHQiLCAiaW5pdCIsICJzZWN0aW9uIiwgImRlY28iLCAiZXh0ZW5zaW9uRGF0YSIsICJmaWxlbmFtZSIsICJmaWxlbmFtZUV4dGVudGlvbiIsICJkYXRhIiwgInRleHQiLCAiYmxvY2tzIiwgIm1vZF9leHBvcnRzIiwgInRvcEluZGVudExldmVsIiwgImJsb2NrIiwgImNvbnZlcnRTYjJNZCIsICJpc1N0cmluZyIsICJ2YWx1ZSIsICJjb252ZXJ0IiwgInVybCIsICJtaWRkbGV3YXJlcyIsICJwcmV2IiwgIm1pZGRsZXdhcmUiLCAibmV4dCIsICJpc1N0cmluZyIsICJjb252ZXJ0ZWQiLCAibWFrZUhUVFBFcnJvciIsICJyZXNwb25zZSIsICJnZXRUd2VldCIsICJ0d2VldElkIiwgImZldGNoXyIsICJyZXMiLCAiZXJyb3IiLCAibWFrZUhUVFBFcnJvciIsICJzZXREZWZhdWx0cyIsICJvcHRpb25zIiwgImZldGNoIiwgInJlc3QiLCAiaXNPYmplY3QiLCAidmFsdWUiLCAiVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IiLCAiX1VuZXhwZWN0ZWRSZXNwb25zZUVycm9yIiwgImluaXQiLCAiY2hlY2tSZXNwb25zZSIsICJyZXNwb25zZSIsICJ0ZXh0IiwgImpzb24iLCAiaXNPYmplY3QiLCAiVW5leHBlY3RlZFJlc3BvbnNlRXJyb3IiLCAiZTIiLCAidXBsb2FkIiwgImltYWdlIiwgImluaXQiLCAidGl0bGUiLCAiZGVzY3JpcHRpb24iLCAibWV0YWRhdGFJc1B1YmxpYyIsICJjb2xsZWN0aW9uSWQiLCAicmVmZXJlclVSTCIsICJhY2Nlc3NUb2tlbiIsICJjcmVhdGVkIiwgImFwcCIsICJmZXRjaCIsICJzZXREZWZhdWx0cyIsICJmb3JtRGF0YSIsICJyZXMiLCAiY2hlY2tlZCIsICJjaGVja1Jlc3BvbnNlIiwgInVwbG9hZFRvR3lhem9HSUYiLCAidmlkZW8iLCAib3B0aW9ucyIsICJmb3JtRGF0YSIsICJ0b2tlbiIsICJjaGVja2VkIiwgImNhY2hlIiwgInVwbG9hZFR3aW1nIiwgInVybCIsICJ0d2VldFVSTCIsICJwcm9qZWN0SWQiLCAiZGVzY3JpcHRpb24iLCAiY2FjaGVkVVJMIiwgInJlcyIsICJ0eXBlIiwgImZpbGUiLCAidXBsb2FkVG9HeWF6b0dJRiIsICJmaWxlVVJMIiwgInJlc3VsdCIsICJ1cGxvYWRUb0dDUyIsICJnZXRHeWF6b1Rva2VuIiwgInVwbG9hZCIsICJneWF6b1VSTCIsICJtYXAiLCAidW5lc2NhcGVIVE1MIiwgInRleHQiLCAibWF0Y2giLCAicHJvY2Vzc1R3ZWV0IiwgInR3ZWV0IiwgImF1dGhvciIsICJwb3N0ZWQiLCAiZW50aXRpZXMiLCAiaGFzaHRhZyIsICJzeW1ib2wiLCAibWVudGlvbiIsICJ1cmwiLCAiZW50aXR5IiwgImRlc2NyaXB0aW9uIiwgInRpdGxlIiwgImtleSIsICJtZWRpYSIsICJkZXRhaWwiLCAiYSIsICJiIiwgImNvbnRlbnQiLCAib2Zmc2V0IiwgInRleHQiLCAiaW5kaWNlcyIsICJiZWZvcmUiLCAidW5lc2NhcGVIVE1MIiwgInByb2Nlc3NlZCIsICJyZXNlcnZlZE5hbWVzIiwgImNvbnZlcnRTY3JhcGJveFVSTCIsICJzZWxmIiwgImhvc3QiLCAidXJsIiwgInByb2plY3QiLCAidGl0bGUiLCAiZm9ybWF0VHdlZXQiLCAiZm9ybWF0IiwgImRlZmF1bHRGb3JtYXQiLCAidXJsIiwgImlkIiwgInJlc3VsdCIsICJnZXRUd2VldCIsICJnZXRUd2VldEluZm8iLCAidHdlZXQiLCAic3RyaW5naWZ5IiwgInF1b3RlIiwgInJlcGx5VG8iLCAicHJvY2Vzc2VkIiwgInByb2Nlc3NUd2VldCIsICJsaW5lIiwgImVzY2FwZUZvckVtYmVkIiwgImltYWdlIiwgImNvbnRlbnQiLCAic2NyZWVuTmFtZSIsICJub2RlIiwgImxpbmVzIiwgImkiLCAidXBsb2FkTWVkaWEiLCAiY29udmVydFNjcmFwYm94VVJMIiwgInByb2plY3RJZCIsICJnZXRQcm9qZWN0SWQiLCAiZ2V0UHJvamVjdCIsICJtZWRpYSIsICJ0d2VldFVSTCIsICJ1cGxvYWRUd2ltZyIsICJ0ZXh0IiwgImV4cGFuZFR3aXR0ZXJTaG9ydFVSTCIsICJzaG9ydElkIiwgImZldGNoXyIsICJyZXMiLCAiZXJyb3IiLCAibWFrZUhUVFBFcnJvciIsICJleHBhbmRTaG9ydFVSTCIsICJ1cmwiLCAicmVzIiwgInByb21pc2UiLCAiZXhwYW5kVHdpdHRlclNob3J0VVJMIiwgInJlc3VsdCIsICJlIiwgImZvcm1hdFdpa2lwZWRpYSIsICJ1cmwiLCAibGFuZyIsICJ0aXRsZSIsICJzZWN0aW9uIiwgImhyZWYiLCAicmVkaXJlY3RXaWtpd2FuZCIsICJ1cmwiLCAibGFuZyIsICJwYWdlTmFtZSIsICJyZWRpcmVjdEdvb2dsZVNlYXJjaCIsICJ1cmwiLCAiZW5jb2RlZFVSTCIsICJjaGFyc2V0UmVnRXhwIiwgImdldFdlYlBhZ2UiLCAidXJsIiwgImZldGNoXyIsICJyZXMiLCAiZXJyb3IiLCAibWFrZUhUVFBFcnJvciIsICJjb250ZW50VHlwZSIsICJkZXRlY3RFbmNvZGluZyIsICJkb20iLCAiZm9ybWF0VVJMIiwgImZvcm1hdCIsICJkZWZhdWx0Rm9ybWF0IiwgInVybCIsICJnZXREb2N1bWVudE9yVGl0bGUiLCAibWF0ZXJpYWwiLCAidGl0bGUiLCAiaXNTdHJpbmciLCAicHJvbWlzZSIsICJnZXRXZWJQYWdlIiwgInJlc3VsdCIsICJnZXRXZWJQYWdlVGl0bGUiLCAic2hvcnRlbkFtYXpvblVSTCIsICJ1cmwiLCAiYXNpbiIsICJjb252ZXJ0R3lhem9VUkwiLCAidXJsIiwgImd5YXpvSWQiLCAiY29udmVydCIsICJ0ZXh0IiwgIm1pZGRsZXdhcmVzIiwgInRvdGFsIiwgImRvbmUiLCAiZmFpbGVkIiwgImhhc1Byb21pc2UiLCAibm9kZXMiLCAibm9kZSIsICJjb252ZXJ0ZWQiLCAiaXNTdHJpbmciLCAiZSIsICJyZW5kZXIiLCAiZGlzcG9zZSIsICJ1c2VTdGF0dXNCYXIiLCAicmVuZGVyXyIsICJmcmFnbWVudHMiLCAiZm9ybWF0Tmljb25pY28iLCAidXJsIiwgImlkIiwgImNvbnZlcnQiLCAidGV4dCIsICJxZSIsICJibG9jayIsICJjb252ZXJ0Q29kZUJsb2NrIiwgImNvbnZlcnRUYWJsZSIsICJjb252ZXJ0TGluZSIsICJsaW5lIiwgImZpbGVOYW1lIiwgImNvbnRlbnQiLCAiaW5kZW50IiwgInRhZyIsICJjZWxscyIsICJjZWxsIiwgIm5vZGVzIiwgIm5vZGUiLCAiY29udmVydE5vZGUiLCAiZGVjbyIsICJudW0iLCAidGV4dCIsICJyZXN1bHQiLCAiY29udmVydCIsICJleGVjIiwgInRleHQiLCAic3BsaXRQb3MiLCAiY29tbWFuZHMiLCAiY29tbWFuZCIsICJiZWZvcmUiLCAiYWZ0ZXIiLCAibGluZXMiLCAibWF0Y2giLCAicmVnIiwgImxpbmUiLCAibmV3VGV4dCIsICJ0ZXh0IiwgImV4ZWMiLCAicmVwbGFjZWQiLCAid2FpdEZvckNvbnZlcnRPcmRlciIsICJsaW5rcyIsICJyb290IiwgInNoYWRvd1Jvb3QiLCAic3R5bGUiLCAiZGlhbG9nIiwgImVkaXRvciIsICJhZGp1c3RXaWR0aCIsICJsaW5lIiwgImNhbmNlbCIsICJjb25maXJtIiwgInByb21pc2UiLCAicmVzb2x2ZSIsICJvbkNsb3NlIiwgIm5ld0xpbmVzIiwgImJlZm9yZSIsICJpIiwgImUiLCAiaGFuZGxlUmVwbGFjZSIsICJ0ZXh0IiwgInByb2plY3RzIiwgImxpbmtzIiwgImdldExpbmtzIiwgInJlc3VsdCIsICJ3YWl0Rm9yQ29udmVydE9yZGVyIiwgImJhcnMiLCAibGluayIsICJ1c2VTdGF0dXNCYXIiLCAicmVwbGFjZSIsICJzdGF0dXMiLCAicHJvamVjdENvdW50IiwgInJlcGxhY2VkIiwgImRvbmUiLCAiYmFyIiwgInJlcGxhY2UiLCAidGV4dCIsICJwcm9qZWN0cyIsICJsaW5rIiwgImdldExpbmtzIiwgIm5ld0xpbmsiLCAicHJvamVjdCIsICJyZW5kZXIiLCAiZGlzcG9zZSIsICJ1c2VTdGF0dXNCYXIiLCAic29ja2V0IiwgIm1ha2VTb2NrZXQiLCAiY291bnQiLCAicmVwbGFjZWQiLCAicmVzdWx0IiwgInJlcGxhY2VMaW5rcyIsICJwYXRjaCIsICJsaW5lcyIsICJwZXJzaXN0ZW50IiwgImxpbmUiLCAidG9FcnJvciIsICJhY2MiLCAiY3VyIiwgImRpc2Nvbm5lY3QiLCAiZSIsICJlcnJvciIsICJzZXR1cCIsICJwcm9qZWN0cyIsICJwIiwgInRleHQiLCAibGlua0NvdW50IiwgImdldExpbmtzIiwgImhhbmRsZVJlcGxhY2UiLCAicmVwbGFjZSIsICJ0ZXh0IiwgInRleHQiLCAiaWQiLCAib2NyIiwgImUiLCAidGV4dCIsICJpZCIsICJjb252ZXJ0IiwgImJsb2NrcyIsICJsYXRleCIsICJsZXZlbCIsICJibG9jayIsICJpIiwgImluZGVudCIsICJmcm9tQmxvY2siLCAiZnJvbUNvZGVCbG9jayIsICJmcm9tVGFibGUiLCAiZnJvbUxpbmUiLCAiZXNjYXBlIiwgImdldEZpbGVUeXBlIiwgInRhYmxlIiwgImNhcHRpb24iLCAibWF4Q29sIiwgInJvdyIsICJyb3dzIiwgImNvbHVtbiIsICJub2RlIiwgImZyb21Ob2RlIiwgImxpbmUiLCAicmVzdWx0IiwgImRlY28iLCAiZXh0ZW5zaW9uRGF0YSIsICJmaWxlbmFtZSIsICJmaWxlbmFtZUV4dGVudGlvbiIsICJkYXRhIiwgInRleHQiLCAiaW5kZW50TnVtIiwgInRleHQiLCAiY29udmVydCIsICJxZSIsICJBUElST09UIiwgImFzayIsICJ0ZXh0IiwgInRhbGtJZCIsICJyZXMiLCAiQVBJUk9PVCIsICJkYXRhIiwgImNyZWF0ZVBvcHVwTWVudUJhciIsICJwb3B1cE1lbnUiLCAicmVuZGVyIiwgImNyZWF0ZVBvcHVwQ29udGFpbmVyIiwgImVkaXRvciIsICJjdXJzb3IiLCAidGFrZUN1cnNvciIsICJjYWxsYmFjayIsICJjdXJzb3JET00iLCAic2hhZG93Um9vdCIsICJidXR0b25Db250YWluZXIiLCAiYnV0dG9ucyIsICJ0ZXh0IiwgIm9uQ2xpY2siLCAiZGl2IiwgImdldE5ld1RhbGtJZCIsICJtb2RlIiwgInJlcyIsICJBUElST09UIiwgIm1ha2VTaGFyZVVSTCIsICJ0YWxrSWQiLCAicXVlc3Rpb25Ub1NjcmFwYm94IiwgInF1ZXN0aW9uIiwgInNwbGl0dGVkIiwgInEiLCAicXVvdGUiLCAid3JpdGVBZnRlciIsICJ0ZXh0IiwgImJhc2UiLCAibGluZU5vIiwgImN1cnNvciIsICJ0YWtlQ3Vyc29yIiwgImluc2VydE5vIiwgImxpbmUiLCAicHJldlRleHQiLCAidGFrZVNlbGVjdGlvbiIsICJpbnNlcnRUZXh0IiwgIm1ha2VQbGFpbiIsICJ0ZXh0IiwgInFlIiwgImJsb2NrIiwgImluZGVudCIsICJsaW5lIiwgInJvdyIsICJjZWxsIiwgIm5vZGUiLCAicGxhaW5Ob2RlIiwgImlzQ29tbWVudCIsICJ0ZXh0IiwgInN0YXJ0VGFsayIsICJpbml0IiwgImxpbmVzIiwgImN1cnNvciIsICJzZWxlY3Rpb24iLCAidGFrZVN0b3JlcyIsICJzZWxlY3RBbGwiLCAiaW5pdGlhbFRleHQiLCAibGluZSIsICJib3RJY29uIiwgInJlbmRlciIsICJ2aXNpYmxlIiwgIm9wZW4iLCAiY2xvc2UiLCAiZGlzcG9zZSIsICJjcmVhdGVQb3B1cE1lbnVCYXIiLCAibGlzdGVuZXJzIiwgImV4aXQiLCAibGlzdGVuZXIiLCAib25FeGl0IiwgIkV4aXQiLCAidGFsa0lkXyIsICJmaW5kVGFsa0lkIiwgIm5ld1RhbGtJZCIsICJwZW5kaW5nIiwgImdldE5ld1RhbGtJZCIsICJ0aW1lciIsICJpIiwgInJlc3VsdCIsICJ0YWxrSWQiLCAicmFuZ2UiLCAibGFzdEluc2VydGVkTm8iLCAibGFzdEluc2VydGVkTGluZSIsICJpbmRlbnQiLCAiZ2V0SW5kZW50Q291bnQiLCAic2VuZCIsICJhbnN3ZXIiLCAiYXNrIiwgImNvbW1lbnRMYXN0U2VudCIsICJzZW5kTXVsdGlwbGUiLCAicGxhaW4iLCAibWFrZVBsYWluIiwgImlzQ29tbWVudCIsICJxdWVzdGlvbiIsICJpbmRleCIsICJzZW5kQW5kV3JpdGUiLCAiYnV0dG9ucyIsICJmb3JtYXR0ZWQiLCAicXVlc3Rpb25Ub1NjcmFwYm94IiwgImJvdFRhbGsiLCAid3JpdGVBZnRlciIsICJhc2tfIiwgImluc2VydFRleHQiLCAiYnV0dG9uIiwgImN1cnNvckxpbmVObyIsICJzdGFydExpbmVObyIsICJlbmRMaW5lTm8iLCAicmVhZEFuc3dlciIsICJtYWtlU2hhcmVVUkwiLCAic2VsZWN0ZWQiLCAiaWNvbkxpbmVObyIsICJnZXRJbmRlbnRMaW5lQ291bnQiLCAidGV4dCIsICJob29rcyIsICJ0YXNrTGluZUhvb2siLCAibmV3UGFnZUhvb2siLCAic3BsaXR0ZWRMaW5rSG9vayIsICJob29rIiwgIm1ha2VOZXdQYWdlIiwgInByb2plY3QiLCAibmV3VGV4dCIsICJrZXl3b3JkIiwgImxpbmUiLCAiaXNKYXBhbmVzZSIsICJzdHIiLCAiY2hhciIsICJyZXN1bHQiLCAibWlkZGxld2FyZXMiLCAicmVkaXJlY3RHb29nbGVTZWFyY2giLCAiZXhwYW5kU2hvcnRVUkwiLCAicmVkaXJlY3RXaWtpd2FuZCIsICJzaG9ydGVuQW1hem9uVVJMIiwgImNvbnZlcnRTY3JhcGJveFVSTCIsICJjb252ZXJ0R3lhem9VUkwiLCAiZm9ybWF0VHdlZXQiLCAiZm9ybWF0V2lraXBlZGlhIiwgInVybCIsICJkdCIsICJ0bSIsICJzciIsICJwYXRoIiwgInVzZXIiLCAicmVwbyIsICJmaWxlcGF0aCIsICJzdGFydCIsICJlbmQiLCAiZm9ybWF0Tmljb25pY28iLCAiZm9ybWF0VVJMIiwgInByb21pc2UiLCAiY29udmVydCIsICJjb252ZXJ0ZWQiLCAiaW5zZXJ0VGV4dCIsICJzZXR1cCIsICJ0YWxrIiwgIm1vZGUiLCAic3RhcnRUYWxrIiwgImFzayIsICJ2aXNpYmxlIiwgIm9uRXhpdCIsICJoYW5kbGVLZXlkb3duIiwgImUiLCAidGV4dElucHV0IiwgInRlbXBsYXRlIiwgImRhdGUiLCAibGluZSIsICJ4IiwgIl8iLCAicG0iLCAiZGF5cyIsICJpc1dlZWsiLCAiZGF5IiwgIm5ld0RhdGUiLCAiYyIsICJmIiwgInAiLCAiZGF5VG9OdW1iZXIiLCAiciIsICJnIiwgIndlZWtzIiwgIm1haW4iLCAicHJvamVjdCIsICJkYWlseVRlbXBsYXRlIiwgIndlZWtseVRlbXBsYXRlIiwgInBhZ2VzIiwgInJlc29sdmUiLCAidGltZXIiLCAic3RhcnQiLCAiY2FsbGJhY2siLCAibm93IiwgImludGVydmFsIiwgImMiLCAicmVuZGVyIiwgImRpc3Bvc2UiLCAidXNlU3RhdHVzQmFyIiwgInNvY2tldCIsICJkYWlseVRlbXBsYXRlVGV4dCIsICJmZXRjaFRlbXBsYXRlIiwgIndlZWtseVRlbXBsYXRlVGV4dCIsICJkYXRlcyIsICJpIiwgImRhdGUiLCAidGl0bGUiLCAidGVtcGxhdGUiLCAicGFnZSIsICJ3ZWVrbHlEYXRlcyIsICJrIiwgImNvdW50ZXIiLCAibWFrZVNvY2tldCIsICJsaW5lcyIsICJwYXRjaCIsICJfIiwgIm1ldGFkYXRhIiwgImUiLCAiZGlzY29ubmVjdCIsICJzbGVlcCIsICJkb25lIiwgImNoZWNrZWQiLCAibiIsICJwYXRoIiwgInJlc3VsdCIsICJnZXRDb2RlQmxvY2siLCAiZXJyb3IiLCAibWFrZUdyb3VwIiwgIml0ZW1zIiwgIm5vZGVzIiwgIml0ZW0iLCAibWFrZUl0ZW0iLCAibWFrZUljb24iLCAiZ3JvdXAiLCAic3BhbiIsICJjaGlsZCIsICJpY29uIiwgInN0YWNrIiwgImljb24xIiwgIm1ha2VJY29uQmFzZSIsICJpY29uMiIsICJpIiwgImN1cnNvciIsICJzZWxlY3Rpb24iLCAidGFrZVN0b3JlcyIsICJtYWtlQnV0dG9uIiwgImluaXQiLCAiY2xhc3NOYW1lIiwgImRpc3BsYXkiLCAib25DbGljayIsICJjb250ZXh0IiwgInN0YXR1cyIsICJpc0NvbnRleHQiLCAic2V0RGlzcGxheSIsICJpdGVtcyIsICJncm91cCIsICJtYWtlR3JvdXAiLCAiaXRlbUxpc3QiLCAiZSIsICJtYWtlTGVmdFN0YXR1c0JhciIsICJzdHlsZSIsICJzdGF0dXNCYXIiLCAiYnV0dG9ucyIsICJjdXJzb3IiLCAic2VsZWN0aW9uIiwgInRha2VTdG9yZXMiLCAic3RhdHVzQmFyIiwgIm1ha2VMZWZ0U3RhdHVzQmFyIiwgImFkZEJ1dHRvbiIsICJpbml0IiwgImJ1dHRvbiIsICJtYWtlQnV0dG9uIiwgImJ1dHRvbnMiLCAic3RhdHVzQmFyIiwgInVwZGF0ZSIsICJjdXJzb3IiLCAic2VsZWN0aW9uIiwgInBvcnRlckNvcHkiLCAiY3Vyc29yIiwgInNlbGVjdGlvbiIsICJ0ZXh0IiwgImdldFRleHQiLCAiZSIsICJwb3J0ZXJDdXQiLCAiaGFzU2VsZWN0aW9uIiwgInN0YXJ0IiwgInByZXNzIiwgInBvcnRlclBhc3RlIiwgImluc2VydFRleHQiLCAidG9nZ2xlQ2FyZXQiLCAiZSIsICJjdXJzb3IiLCAidGFrZUN1cnNvciIsICJTY3JhcGJveERPTSIsICJzY3JhcGJveERPTSIsICJzbGVlcCIsICJtaWxsaXNlY29uZHMiLCAicmVzb2x2ZSIsICJpbnNlcnRUZXh0IiwgInRleHQiLCAid2FpdCIsICJjdXJzb3IiLCAic2NyYXBib3hET00iLCAidWlFdmVudCIsICJzbGVlcCIsICJpc01vYmlsZSIsICJpZCIsICJpbnNlcnRUZXh0IiwgIngiLCAidHJhbnNwb3J0IiwgInRpdGxlIiwgImZyb20iLCAidG8iLCAibWVyZ2UiLCAicmVzIiwgImdldFBhZ2UiLCAicGFnZSIsICJyZXMyIiwgInBhZ2UyIiwgInBhdGNoIiwgImxpbmVzIiwgImxpbmUiLCAiZGVsZXRlUGFnZSIsICJ0cmFuc3BvcnRQYWdlIiwgInRpdGxlIiwgImZyb20iLCAidG8iLCAicmVuZGVyIiwgImRpc3Bvc2UiLCAidXNlU3RhdHVzQmFyIiwgInJlc3VsdCIsICJ0cmFuc3BvcnQiLCAiZW5jb2RlVGl0bGVVUkkiLCAiZSIsICJ0cmFuc3BvcnRQYWdlIiwgInVybCIsICJmb3JtYXRUaXRsZSIsICJ0aXRsZSIsICJ6ZXJvIiwgIm4iLCAidG9ZWVlZTU1ERF9ISE1NU1MiLCAiZGF0ZSIsICJ0b1lZWVlNTUREIiwgImFkZFRvSW5ib3giLCAicHJvamVjdCIsICJ0aXRsZSIsICJsaW5lcyIsICJvcHRpb25zIiwgInJlbmRlciIsICJkaXNwb3NlIiwgInVzZVN0YXR1c0JhciIsICJpdGVtcyIsICJwYWdlcyIsICJibG9jayIsICJwYXJzZSIsICJmb3JtYXRUaXRsZSIsICJ0b1lZWVlNTUREIiwgInRvWVlZWU1NRERfSEhNTVNTIiwgInNvY2tldCIsICJtYWtlU29ja2V0IiwgInBhdGNoIiwgIl9saW5lcyIsICJsaW5lIiwgImxhc3RTZXBhcmF0b3JJbmRleCIsICJpIiwgInBhZ2UiLCAiZSIsICJvcGVuSW5UaGVTYW1lVGFiIiwgIndhaXRpbmciLCAic2xlZXAiLCAiZGlzY29ubmVjdCIsICJpbmRleCIsICJjb3VudCIsICJnZXRJbmRlbnRMaW5lQ291bnQiLCAiaW5kZW50TnVtIiwgImdldEluZGVudENvdW50IiwgImFkZFRvSW5ib3hGcm9tUHJvbXB0IiwgInByb2plY3QiLCAidGl0bGUiLCAidGV4dCIsICJpdGVtcyIsICJhZGRUb0luYm94IiwgImJ1dHRvbkZpbGVOYW1lIiwgImUiLCAidCIsICJwYXRoIiwgImV4ZWN1dGUiLCAidGl0bGUiLCAiY2hhciIsICJ1c2VUYXNrQ3Jhd2xlciIsICJwcm9qZWN0cyIsICJ0YXNrcyIsICJzZXRUYXNrcyIsICJCIiwgImVycm9ycyIsICJzZXRFcnJvcnMiLCAibG9hZGluZyIsICJzZXRMb2FkaW5nIiwgImNyYXdsIiwgIk0iLCAidGl0bGVMY3MiLCAicmVzdWx0IiwgImxvYWQiLCAibGlua3MiLCAicHJvamVjdCIsICJsaW5rIiwgInRpdGxlIiwgImRlY29kZSIsICJwYXJzZSIsICJ0aXRsZUxjIiwgInRvVGl0bGVMYyIsICJjaGVjayIsICJ3IiwgInN1YnNjcmliZSIsICJ1c2VTdG9wUHJvcGFnYXRpb24iLCAiTSIsICJlIiwgInVzZURpYWxvZyIsICJkaWFsb2dTdGF0ZSIsICJjaGFuZ2VEaWFsb2dTdGF0ZSIsICJJIiwgImRpYWxvZ1N0YXRlUmVkdWNlciIsICJvcGVuIiwgIk0iLCAiY2xvc2UiLCAiRGlhbG9nIiwgImNoaWxkcmVuIiwgInN0b3BQcm9wYWdhdGlvbiIsICJ1c2VTdG9wUHJvcGFnYXRpb24iLCAicmVmIiwgIlQiLCAiY2xlYW51cCIsICJkaWFsb2ciLCAiY29udHJvbGxlciIsICJzZSIsICJzdGF0ZSIsICJpc09wZW4iLCAiaXNPcGVuTm93IiwgInByZXZPdmVyZmxvd1kiLCAiQ1NTIiwgIkNvcHkiLCAidGV4dCIsICJ0aXRsZSIsICJidXR0b25MYWJlbCIsICJzZXRCdXR0b25MYWJlbCIsICJCIiwgImhhbmRsZUNsaWNrIiwgIk0iLCAiZSIsICJzbGVlcCIsICJzZSIsICJvbmVkYXkiLCAiY2FsY0ZyZXNobmVzcyIsICJmcmVzaG5lc3MiLCAibm93IiwgInN0YXJ0IiwgInRvRGF0ZSIsICJwcmlvcml0eSIsICJwZXJpb2QiLCAiY29tcGFyZUZuIiwgImEiLCAiYiIsICJzYSIsICJzb3J0VHlwZSIsICJzYiIsICJpc0JlZm9yZSIsICJnZXRTdGFydCIsICJmcmVzaG5lc3MiLCAidG9LZXkiLCAiZGF0ZSIsICJ6ZXJvIiwgInRvTG9jYWxEYXRlIiwgImtleSIsICJ5ZWFyIiwgIm1vbnRoIiwgInMiLCAidG9XZWVrS2V5IiwgImsiLCAiZyIsICJ0b1N0YXJ0T2ZXZWVrIiwgIndlZWsiLCAicCIsICJ3IiwgIkxvYWRCdXR0b24iLCAibG9hZGluZyIsICJvbkNsaWNrIiwgInNlIiwgInVzZU1pbnV0ZXMiLCAiZGF0ZSIsICJzZXREYXRlIiwgIkIiLCAidyIsICJ0aW1lciIsICJ0b1N0YXR1c0xhYmVsIiwgInN0YXR1cyIsICJtYWtlTGluayIsICJwYXRoIiwgImJhc2UiLCAiZW5jb2RlVGl0bGVVUkkiLCAiU2NyYXBib3hMaW5rIiwgImNoaWxkcmVuIiwgInByb2plY3QiLCAidGl0bGUiLCAiY2xhc3NOYW1lIiwgImF0cmlidXRlcyIsICJzZSIsICJtYWtlTGluayIsICJUYXNrSXRlbSIsICJhY3Rpb24iLCAicEFjdGlvbnMiLCAidHlwZSIsICJUIiwgInRvU3RhdHVzTGFiZWwiLCAic3RhcnQiLCAiZm9ybWF0IiwgImdldFN0YXJ0IiwgImR1cmF0aW9uIiwgImdldER1cmF0aW9uIiwgImZyZXNobmVzc0xldmVsIiwgIm5vdyIsICJ1c2VNaW51dGVzIiwgInNjaGVkdWxlZCIsICJuIiwgInUiLCAidG9EYXRlIiwgInRleHQiLCAic2UiLCAidGFza09wYWNpdHkiLCAiQ29weSIsICJTY3JhcGJveExpbmsiLCAidXNlTmF2aWdhdGlvbiIsICJkZWZhdWx0UGFnZU5vIiwgInRvS2V5IiwgInBhZ2VObyIsICJzZXRQYWdlTm8iLCAiQiIsICJuZXh0IiwgIk0iLCAiZGF0ZSIsICJ0b0RhdGUiLCAidG9Mb2NhbERhdGUiLCAicHJldiIsICJub3dLZXkiLCAidXNlVXNlclNjcmlwdEV2ZW50IiwgImV2ZW50TmFtZSIsICJjYWxsYmFjayIsICJ3IiwgInVzZUV4cG9ydHMiLCAiZXhwb3J0ZXIiLCAiZXhwb3J0T2JqZWN0IiwgInJlZiIsICJ6IiwgInciLCAia2V5IiwgInNldHVwIiwgInByb2plY3RzIiwgImFwcCIsICJzaGFkb3dSb290IiwgInJlc29sdmUiLCAiZGUiLCAic2UiLCAiQXBwIiwgImdldENvbnRyb2xsZXIiLCAidGFza3MiLCAiZXJyb3JzIiwgImxvYWQiLCAibG9hZGluZyIsICJ1c2VUYXNrQ3Jhd2xlciIsICJwYWdlTm8iLCAibmV4dCIsICJwcmV2IiwgInVzZU5hdmlnYXRpb24iLCAiYWN0aW9ucyIsICJUIiwgImVycm9yIiwgIm5vdyIsICJ0YXNrIiwgImlzUmVtaW5kZXIiLCAiaXNCZWZvcmUiLCAiZ2V0RW5kIiwgImZyb21EYXRlIiwgImEiLCAiYiIsICJnZXRTdGFydCIsICJkYXRlIiwgInRvRGF0ZSIsICJ0b0xvY2FsRGF0ZSIsICJpc1JlY3VycmVuY2UiLCAic2NvcmUiLCAiY2FsY0ZyZXNobmVzcyIsICJjb21wYXJlRm4iLCAiRGlhbG9nIiwgIm9wZW4iLCAiY2xvc2UiLCAidXNlRGlhbG9nIiwgInVzZUV4cG9ydHMiLCAidGV4dCIsICJhY3Rpb24iLCAidXNlVXNlclNjcmlwdEV2ZW50IiwgIk4iLCAiQ1NTIiwgIkNvcHkiLCAiTG9hZEJ1dHRvbiIsICJpIiwgIlRhc2tJdGVtIiwgInRvS2V5IiwgInByb2plY3QiLCAidGl0bGUiLCAidG9UaXRsZUxjIiwgInBhZ2VzIiwgImxpc3RlbmVycyIsICJlbWl0Q2hhbmdlIiwgImtleSIsICJsaW5lcyIsICJsaXN0ZW5lciIsICJ1cGRhdGUiLCAidGltZXIiLCAidGFrZUludGVybmFsTGluZXMiLCAibGluZSIsICJnZXQiLCAicmVzdWx0IiwgImdldFBhZ2UiLCAidXNlTGluZXMiLCAic2V0TGluZXMiLCAiQiIsICJ3IiwgInNldCIsICJnZXRFbmQiLCAicGVyaW9kIiwgImZyb21EYXRlIiwgInUiLCAidG9EYXRlIiwgInNwbGl0IiwgImRhdGUiLCAic3RhcnQiLCAicGFydGl0aW9uIiwgImZvcndvcmRNaW4iLCAiZm9yd2FyZCIsICJpc0xpbmsiLCAiZXZlbnQiLCAiaXNMb2dnZWQiLCAiZ2V0RXZlbnRTdGF0dXMiLCAibm93IiwgImlzQmVmb3JlIiwgImZyb21EYXRlIiwgImdldEVuZCIsICJmcm9tVGFza0xpbmUiLCAidGFzayIsICJwcm9qZWN0IiwgInJlc3VsdCIsICJwYXJzZSIsICJldmVudCIsICJmcm9tRGF0ZSIsICJhIiwgImV2ZW50V2l0aExpbmsiLCAiaXNSZW1pbmRlciIsICJmcm9tSG93bUV2ZW50IiwgInRpdGxlIiwgImdldExpbmtUaXRsZSIsICJ1c2VFdmVudHMiLCAicHJvamVjdCIsICJkYXRlIiwgInRhc2tzIiwgImV2ZW50c18iLCAidXNlRXZlbnRzXyIsICJmIiwgImMiLCAiZXZlbnRzIiwgIlQiLCAic1BhcnRpdGlvbiIsICJyIiwgImVQYXJ0aXRpb24iLCAiZXZlbnQiLCAiYmFja3dhcmQiLCAic3BsaXQiLCAiZm9yd2FyZCIsICJfIiwgInJlc3QiLCAiYSIsICJiIiwgImlzQmVmb3JlIiwgImxpbmVzIiwgInVzZUxpbmVzIiwgInRvVGl0bGUiLCAiZXZlbnRzRnJvbUxpbmVzIiwgImdldEV2ZW50c0Zyb21MaW5lcyIsICJnZXRFdmVudHNGcm9tTGlua3MiLCAidGFzayIsICJpc1JlbWluZGVyIiwgImlzUmVjdXJyZW5jZSIsICJnZW5lcmF0ZWQiLCAibWFrZVJlcGVhdCIsICJmcm9tSG93bUV2ZW50IiwgInN0YXJ0IiwgInRvRGF0ZSIsICJuIiwgInBhcnNlTGluZXMiLCAiaXNTdHJpbmciLCAiZnJvbVRhc2tMaW5lIiwgIkV2ZW50SXRlbSIsICJldmVudCIsICJzdGFydCIsICJUIiwgInN0eWxlIiwgIm5vdyIsICJ1c2VNaW51dGVzIiwgInR5cGUiLCAiZ2V0RXZlbnRTdGF0dXMiLCAiaXNMaW5rIiwgInNlIiwgIlNjcmFwYm94TGluayIsICJUaW1lTGluZSIsICJwcm9qZWN0IiwgImRhdGUiLCAidGFza3MiLCAiZXZlbnRzIiwgInVzZUV2ZW50cyIsICJsaW5rTGlzdCIsICJUIiwgImV2ZW50IiwgImlzTGluayIsICJub3ciLCAidXNlTWludXRlcyIsICJpbmRpY2F0b3IiLCAibiIsICJzZSIsICJyIiwgIk4iLCAiRXZlbnRJdGVtIiwgIkNvcHkiLCAiVGltZUdyaWQiLCAiZGF0ZUxpc3QiLCAidGFza3MiLCAicHJvamVjdCIsICJoYXNDb2x1bW4iLCAic2UiLCAiZGF0ZSIsICJ0b0tleSIsICJyIiwgImkiLCAiemVybyIsICJUaW1lTGluZSIsICJ1c2VOYXZpZ2F0aW9uIiwgImRlZmF1bHRQYWdlTm8iLCAibmV4dEZuIiwgInByZXZGbiIsICJwYWdlTm8iLCAic2V0UGFnZU5vIiwgIkIiLCAibmV4dCIsICJNIiwgInByZXYiLCAianVtcCIsICJ1c2VPcGVuIiwgImluaXRpYWxTdGF0ZSIsICJsaXN0ZW5lcnMiLCAieiIsICJpc09wZW4iLCAic2V0T3BlbmQiLCAiQiIsICJlbWl0Q2hhbmdlIiwgIk0iLCAibGlzdGVuZXIiLCAib3BlbiIsICJjbG9zZSIsICJ0b2dnbGUiLCAic3RhdGUiLCAib25PcGVuIiwgInNldHVwIiwgInByb2plY3RzIiwgImFwcCIsICJzaGFkb3dSb290IiwgInJlc29sdmUiLCAiZGUiLCAic2UiLCAiQXBwIiwgInNldHVwV2VkZ2V0IiwgIm9wZW4iLCAiV2VkZ2V0IiwgInNjcm9sbGVkVG9JbmRpY2F0b3JJbkFwcCIsICJnZXRDb250cm9sbGVyIiwgIm1haW5Qcm9qZWN0IiwgInRhc2tzIiwgImxvYWQiLCAibG9hZGluZyIsICJ1c2VUYXNrQ3Jhd2xlciIsICJwYWdlTm8iLCAibmV4dCIsICJwcmV2IiwgImp1bXAiLCAidXNlTmF2aWdhdGlvbiIsICJ0b1dlZWtLZXkiLCAibmV4dFdlZWtLZXkiLCAicHJldldlZWtLZXkiLCAiZGF0ZUxpc3QiLCAiVCIsICJzdGFydCIsICJ0b1N0YXJ0T2ZXZWVrIiwgImkiLCAiYyIsICJjbG9zZSIsICJEaWFsb2ciLCAiaXNPcGVuIiwgInVzZURpYWxvZyIsICJ1c2VFeHBvcnRzIiwgInVzZVVzZXJTY3JpcHRFdmVudCIsICJnb1RvZGF5IiwgIk0iLCAiTiIsICJDU1MiLCAiTG9hZEJ1dHRvbiIsICJzY3JvbGxUb0luZGljYXRvciIsICJUaW1lR3JpZCIsICJzY3JvbGxlZFRvSW5kaWNhdG9ySW5XZWRnZXQiLCAib3Blbl8iLCAibmV4dERhdGUiLCAicHJldkRhdGUiLCAiZGF0ZXMiLCAidXNlT3BlbiIsICJ0b0tleSIsICJmIiwgInMiLCAiZGF0ZSIsICJhbmNlc3RlciIsICJlbCIsICJzY3JvbGxZIiwgInN5bmMiLCAic2V0dXAiLCAib3BzIiwgIldBU01fVVJMIiwgIldPUktFUl9VUkwiLCAicmVxIiwgInJlcyIsICJmaW5kTGF0ZXN0Q2FjaGUiLCAic2F2ZUFwaUNhY2hlIiwgInNldHVwIiwgInByb2plY3RzIiwgIm9wcyIsICJwIiwgInQiLCAicHZzcCIsICJlIiwgImhhc1BvcHVwIiwgInNjcmFwQmluZGluZ3MiLCAicHJldmlld1NWRyIsICJwcmV2aWV3R0xTTCIsICJwcmV2aWV3UGxhbnRVTUwiLCAicHJldmlld1Rpa1oiLCAidG9nZ2xlIiwgIm1haW4iLCAiaXNNb2JpbGUiLCAiYWRkQnV0dG9uIiwgImN1cnNvciIsICJzZWxlY3Rpb24iLCAib3V0ZGVudEJsb2NrcyIsICJvdXRkZW50TGluZXMiLCAiaW5kZW50QmxvY2tzIiwgImluZGVudExpbmVzIiwgInVwQmxvY2tzIiwgInVwTGluZXMiLCAiZG93bkJsb2NrcyIsICJkb3duTGluZXMiLCAicG9ydGVyQ29weSIsICJwb3J0ZXJDdXQiLCAicG9ydGVyUGFzdGUiLCAidW5kbyIsICJyZWRvIiwgInRvZ2dsZUNhcmV0IiwgImlkIiwgImNyZWF0ZVRhc2siLCAidHJhbnNwb3J0IiwgImhvb2tzIiwgInRhc2tMaW5lSG9vayIsICJuZXdQYWdlSG9vayIsICJzcGxpdHRlZExpbmtIb29rIiwgInByb2plY3QiLCAibWFrZU5ld1BhZ2UiLCAiYWRkVG9JbmJveEZyb21Qcm9tcHQiLCAic2VsZWN0b3IiLCAic3R5bGUiLCAib3BlbiIsICJzY2hlZHVsZXIiLCAia2V5IiwgInNldHRpbmdzIiwgIndlZGdldCIsICJzZXR1cFdlZGdldCIsICJ6ZXJvIiwgIm4iLCAidG9ZWVlZTU1ERCIsICJkIiwgImJ1dHRvbiIsICJ0aW1lc3RhbXAiLCAidG9ZWVlZTU1ERCIsICJ0ZXh0IiwgImJsb2NrcyIsICJtb2RfZXhwb3J0cyIsICJjb3BpZWRUZXh0IiwgImNvbnZlcnRTYjJIVE1MIiwgImUiLCAidG9wSW5kZW50TGV2ZWwiLCAiYmxvY2siLCAiaW5kZW50TGV2ZWwiLCAicmVzdWx0IiwgImRpZmYiLCAiXyIsICJjb250ZW50IiwgIm5vZGUiLCAiY29udmVydE5vZGUiLCAic3JjIiwgImhyZWYiLCAiYWx0IiwgInRleHQiLCAiY2hlY2tQYWdlIiwgInRleHQiLCAiY2hhcnMiLCAid29yZHMiLCAiaXNNb2JpbGUiLCAiaWQiLCAidG9nZ2xlVGFzayIsICJhZGRUYXNrIiwgInN0YXJ0VGFzayIsICJlbmRUYXNrIiwgInBvc3RlcmlvcmlFbmRUYXNrIiwgInN0YXJ0IiwgImVuZCIsICJnZXRMaW5lUmFuZ2UiLCAidGV4dCIsICJnZXRMaW5lcyIsICJsaW5lIiwgImxpbmsiLCAicmVzdWx0IiwgInBhcnNlIiwgInRhc2siLCAidGFza0xpbmUiLCAidG9UYXNrTGluZSIsICJ0b1N0cmluZyIsICJyZXBsYWNlTGluZXMiLCAiY3JlYXRlVGFzayIsICJ3YWxrRGF5IiwgIm1vdmVUb2RheSIsICJmb3JtYXQiLCAidHJhbnNwb3J0IiwgInNlbGVjdGVkVGV4dCIsICJwb3NpdGlvbiIsICJjYXJldCIsICJJRCIsICJpc1J1bm5pbmciLCAidGV4dCIsICJmaWxlUGF0aCIsICJodG1sIiwgImh0bWxCbG9iRGF0YSIsICJodG1sRGlyZWN0VVJMIiwgImUiLCAicHJvamVjdCIsICJtYWluIiwgInBhZ2VzIiwgInJlc29sdmUiLCAidGltZXIiLCAic3RhcnQiLCAiY2FsbGJhY2siLCAibm93IiwgImRhdGVzIiwgImkiLCAiZGF0ZSIsICJ0aXRsZSIsICJ0b1RpdGxlIiwgInBhZ2UiLCAicmVuZGVyIiwgImRpc3Bvc2UiLCAidXNlU3RhdHVzQmFyIiwgInNvY2tldCIsICJ0YXNrcyIsICJ0aXRsZUxjcyIsICJkYXlLZXlzIiwgInRvS2V5IiwgImxpbmtzIiwgImxvYWQiLCAibGluayIsICJkZWNvZGUiLCAicmVzdWx0IiwgInBhcnNlIiwgInRpdGxlTGMiLCAidG9UaXRsZUxjIiwgInRhc2siLCAidG9UYXNrTGluZSIsICJrZXkiLCAiaXNSZWN1cnJlbmNlIiwgIm1ha2VTb2NrZXQiLCAiY291bnRlciIsICJsaW5lcyIsICJ0b1N0cmluZyIsICJkYXRlVGFnIiwgIngiLCAiZGF0ZXRpbWVUYWciLCAicGF0Y2giLCAib2xkTGluZXMiLCAicGVyc2lzdGVudCIsICJuZXdMaW5lcyIsICJsaW5lIiwgImZvcm1hdCIsICJlIiwgImRpc2Nvbm5lY3QiLCAic2xlZXAiLCAiZG9uZSIsICJjaGVja2VkIiwgIm4iLCAibWFpbiJdCn0K
code:tex-worker.js
var ht=Object.defineProperty;var Ge=(t,e)=>{for(var r in e)ht(t,r,{get:er,enumerable:!0})};var be={};Ge(be,{close:()=>Et,deleteEverything:()=>ue,eof:()=>Rt,eoln:()=>$t,erstat:()=>Lt,executeAsync:()=>xe,get:()=>At,inputln:()=>Mt,pages:()=>C,printBoolean:()=>Pt,printChar:()=>Ut,printFloat:()=>St,printInteger:()=>vt,printNewline:()=>kt,printString:()=>Tt,put:()=>Nt,readFileSync:()=>se,reset:()=>Ft,rewrite:()=>Ct,setConsole:()=>de,setFileLoader:()=>ge,setInput:()=>he,setMemory:()=>me,tex_final_end:()=>ye,writeFileSync:()=>fe});var X={},m=[],re,O="",P=null,G=null,N=null,F=null,W=null,He=null,H=null,C=1100,z=(C-100)*1024*64,gt=C*1024*64,oe=0,I=!1,xt=()=>{W&&(Wz>>2=z+8,Wz+4>>2=gt),F.asyncify_start_unwind(z),oe=oe+1},yt=()=>{F.asyncify_start_rewind(z),F.main()},bt=()=>{oe=oe-1,F.asyncify_stop_rewind()},ue=()=>{m=[],X={},P=null,G=null,N=null,re=void 0,H=null,F=null,W=null,I=!1},fe=(t,e)=>{Xt=e},se=t=>{for(let e of m)if(e.filename==t)return e.content.slice(0,e.position);throw Error(Could not find file ${t})},Be=(t,e)=>{let r=I;I&&(bt(),I=!1);let n=new Uint8Array;if(Xt)n=Xt;else if(e=="r"&&m.findIndex(s=>s.filename==t&&!s.erstat)==-1)return r||t.match(/\.(aux|log|dvi)$/)?(m.push({filename:t,erstat:1}),m.length-1):(xt(),I=!0,setTimeout(async()=>{try{let s=await He(t);Xt=s}catch{}yt()},0),-1);return m.push({filename:t,position:0,position2:0,erstat:0,eoln:!1,content:n,descriptor:m.length}),m.length-1},wt=()=>{},$=(t,e,r,n)=>{for(r===void 0&&(r=0),n===void 0&&(n=e.length-r);n>t.content.length-t.position;){let o=new Uint8Array(1+t.content.length*2);o.set(t.content),t.content=o}t.content.subarray(t.position).set(e.subarray(r,r+n)),t.position+=n},_t=(t,e,r,n,o)=>(r===void 0&&(r=0),n===void 0&&(n=e.length-r),n>t.content.length-o&&(n=t.content.length-o),e.subarray(r).set(t.content.subarray(o,o+n)),n),M=t=>{if(re&&(O+=t,O.indexOf(` )>=0)){let e=O.split(
);O=e.pop();for(let r of e)r.length&&re(r)}},de=t=>{re=t},me=t=>{P=t,W=new Int32Array(t)},he=(t,e)=>{G=t,e&&(N=e)},ge=t=>{He=t},xe=t=>(F=t,H=Promise.withResolvers(),F.main(),F.asyncify_stop_unwind(),H.promise),Tt=(t,e)=>{let r=t<0?{stdout:!0}:m[t],n=new Uint8Array(P,e,1)[0],o=new Uint8Array(P,e+1,n),s=String.fromCharCode.apply(null,o);if(r.stdout){M(s);return}$(r,new TextEncoder().encode(s))},Pt=(t,e)=>{let r=t<0?{stdout:!0}:m[t],n=e?"TRUE":"FALSE";if(r.stdout){M(n);return}$(r,new TextEncoder().encode(n))},Ut=(t,e)=>{let r=t<0?{stdout:!0}:m[t];if(r.stdout){M(String.fromCharCode(e));return}let n=new Uint8Array(1);n[0]=e,$(r,n)},vt=(t,e)=>{let r=t<0?{stdout:!0}:m[t];if(r.stdout){M(e.toString());return}$(r,new TextEncoder().encode(${e}))},St=(t,e)=>{let r=t<0?{stdout:!0}:m[t];if(r.stdout){M(e.toString());return}$(r,new TextEncoder().encode(${e}))},kt=(t,e)=>{let r=t<0?{stdout:!0}:m[t];if(r.stdout){M(
);return}$(r,new TextEncoder().encode(
))},Ft=(t,e)=>{let r=new Uint8Array(P,e,t),n=String.fromCharCode.apply(null,r);return n=n.replace(/\000+$/g,""),n.startsWith("{")&&(n=n.replace(/^{/g,""),n=n.replace(/}.*/g,"")),n.startsWith('"')&&(n=n.replace(/^"/g,""),n=n.replace(/".*/g,"")),n=n.replace(/ +$/g,""),n=n.replace(/^\*/,""),n=n.replace(/^TeXfonts:/,""),n=="TeXformats:TEX.POOL"&&(n="tex.pool"),n=="TTY:"?(m.push({filename:"stdin",stdin:!0,position:0,position2:0,erstat:0,eoln:!1,content:new TextEncoder().encode(G)}),m.length-1):Be(n,"r")},Ct=(t,e)=>{let r=new Uint8Array(P,e,t),n=String.fromCharCode.apply(null,r);return n=n.replace(/ +$/g,""),n.startsWith('"')&&(n=n.replace(/^"/g,""),n=n.replace(/".*/g,"")),n=="TTY:"?(m.push({filename:"stdout",stdout:!0,erstat:0}),m.length-1):Be(n,"w")},Et=t=>{let e=m[t];e.descriptor&&wt(e.descriptor)},Rt=t=>m[t].eof?1:0,Lt=t=>m[t].erstat,$t=t=>m[t].eoln?1:0,Mt=(t,e,r,n,o,s,a)=>{let i=m[t],c=new Uint8Array(P,r,a),d=new Uint32Array(P,n,4),l=new Uint32Array(P,o,4);l[0]=d[0],e&&!i.eof&&i.eoln&&(i.position2=i.position2+1);let h=i.content.indexOf(10,i.position2);if(h<0&&(h=i.content.length),i.position2>=i.content.length)return i.stdin&&(N&&N(),ye()),i.eof=!0,!1;for(c.subarray(d[0]).set(i.content.subarray(i.position2,h)),l[0]=d[0]+h-i.position2;c[l[0]-1]==32;)l[0]=l[0]-1;return i.position2=h,i.eoln=!0,!0},At=(t,e,r)=>{let n=m[t],o=new Uint8Array(P);if(n.stdin)n.position>=G.length?(o[e]=13,n.eof=!0,N&&N(),ye()):o[e]=G[n.position].charCodeAt(0);else if(n.descriptor){if(_t(n,o,e,r,n.position)==0){o[e]=0,n.eof=!0,n.eoln=!0;return}}else{n.eof=!0,n.eoln=!0;return}n.eoln=!1,o[e]==10&&(n.eoln=!0),o[e]==13&&(n.eoln=!0),n.position=n.position+r},Nt=(t,e,r)=>{let n=m[t],o=new Uint8Array(P);$(n,o,e,r)},ye=()=>{O.length&&M(
),H&&H.resolve()};var we={};Ge(we,{getCurrentDay:()=>Ot,getCurrentMinutes:()=>Dt,getCurrentMonth:()=>zt,getCurrentYear:()=>It});var Dt=()=>{let t=new Date;return 60*t.getHours()+t.getMinutes()},Ot=()=>new Date().getDate(),zt=()=>new Date().getMonth()+1,It=()=>new Date().getFullYear();var Ve,Ye,Ze=async(t,e)=>{Ye??=await e.fileLoader("tex.wasm"),Ve??=new Uint8Array(await e.fileLoader("core.dump"),0,C*65536),fe("input.tex",new TextEncoder().encode(t));let r=new WebAssembly.Memory({initial:C,maximum:C});new Uint8Array(r.buffer,0,C*65536).set(Ve.slice(0)),me(r.buffer),he( input.tex
\\end
),ge(e.fileLoader),e.console&&de(e.console);let o=await WebAssembly.instantiate(Ye,{library:{...be,...we},env:{memory:r}});await xe(o.instance.exports);let s=se("input.log");try{return{dvi:se("input.dvi"),log:s}}catch{return{log:s}}finally{ue()}};async function*qe(t){let e=await new Response(t).arrayBuffer(),r=new DataView(e),n=e.byteLength-4;for(;r.getUint32(n,!0)!==101010256;)n--;let o=n;o+=4,o+=4;let s=r.getUint16(o,!0);o+=2,o+=2,o+=4;let a=r.getUint32(o,!0);o+=4,o=a;for(let i=0;i<s;i++){o+=4,o+=4,o+=4,o+=4,o+=4;let c=r.getUint32(o,!0);o+=4;let d=r.getUint32(o,!0);o+=4;let l=r.getUint16(o,!0);o+=2;let h=r.getUint16(o,!0);o+=2;let w=r.getUint16(o,!0);o+=2,o+=8;let _=r.getUint32(o,!0);o+=4,o+=l+h+w,yield Xt(r,_,c,d)}}var Xt=(t,e,r,n)=>{e+=4,e+=2,e+=2;let o=t.getUint16(e,!0);e+=2,e+=4,e+=4,e+=8;let s=t.getUint16(e,!0);e+=2;let a=t.getUint16(e,!0);e+=2;let i=new TextDecoder().decode(new Uint8Array(t.buffer,t.byteOffset+e,s));e+=s,e+=a;let c=new Uint8Array(t.buffer,t.byteOffset+e,r);if(o==0)return Ke(i,r,n,c,!0);if(o==8)return Ke(i,r,n,c,!1);throw"unknown compression method: "+o},Ke=(t,e,r,n,o)=>{if(o)return{name:t,csize:e,usize:r,arrayBuffer:()=>Promise.resolve(n),file:()=>Promise.resolve(new File([n],t)),text:()=>Promise.resolve(new TextDecoder().decode(n))};let s,a=async()=>(s??=await Wt(n),s);return{name:t,csize:e,usize:r,arrayBuffer:a,file:async()=>new File([await a()],t),text:async()=>new TextDecoder().decode(await a())}};var zn=(()=>{let t=new Uint32Array(256);for(let e=0;e<256;e++){let r=e;for(let n=0;n<8;n++)r&1?r=3988292384^r>>>1:r=r>>>1;t[e]=r}return t})();var Wt=t=>new Response(new Response(t).body.pipeThrough(new DecompressionStream("deflate-raw"))).arrayBuffer();var je=async(t,e)=>{let r=await globalThis.caches.keys();for(let n of r.sort().reverse()){let s=await(await caches.open(n)).match(t,e);if(s)return s}},Qe=async(t,e)=>{let n=(await globalThis.caches.keys()).filter(s=>s.startsWith("api")).sort().reverse().at(0);if(!n)return;await(await caches.open(n)).put(t,e.clone())};var Je=[1,0,0,1,0,0],Gt=t=>Math.abs(t[0]-1)<Number.EPSILON&&Math.abs(t[1])<Number.EPSILON&&Math.abs(t[2])<Number.EPSILON&&Math.abs(t[3]-1)<Number.EPSILON&&Math.abs(t[4])<Number.EPSILON&&Math.abs(t[5])<Number.EPSILON;var _e=(t,e,r)=>[t[0]*e,t[1]*e,t[2]*r,t[3]*r,t[4],t[5]],Te=(t,e,r)=>[t[0],t[1],t[2],t[3],t[0]*e+t[2]*r+t[4],t[1]*e+t[3]*r+t[5]],Pe=(t,e)=>{let r=e*Math.PI/180,n=Math.cos(r),o=Math.sin(r);return[t[0]*n+t[2]*o,t[1]*n+t[3]*o,-t[0]*o+t[2]*n,-t[1]*o+t[3]*n,t[4],t[5]]},Ue=t=>Gt(t)?"":transform="matrix(${t.join(" ")})";var et=t=>{let e=new FileReader,r=new Promise(n=>e.onload=()=>n(e.result));return e.readAsDataURL(t),r};var tt=async(t,e)=>(await Promise.all([...t].sort().map(async r=>[r.slice(0,-4),await et(new Blob([await e(r)],{type:"font/truetype"}))]))).map(([r,n])=>@font-face{font-family:${r};src:local(${r}),url(${n})format("truetype");}.${r}{font-family:${r};}).join("");var nt=async(t,e)=>{let r=0,n="black",o=e.svg?1:0,s=[...Je],a="",i=0,c="",d=0,l=0,h=0,w=0,_=new Set;for(let u of t)switch(u.type){case"text":{let p=0,b=0,f="";for(let L of u.text){let y=L.codePointAt(0)??0,pe=u.font.metrics.characters.at(y);if(pe===void 0)throw Error(Could not find font metric for ${y});p+=pe.width,b=Math.max(b,pe.height),f+=String.fromCodePoint(y>=0&&y<=9?161+y:y>=10&&y<=19?173+y-10:y===20?8729:y>=21&&y<=32?184+y-21:y===127?196:y)}let T=u.font.metrics.design_size/1048576*65536/1048576,g=u.left*r,x=p*r*T,v=b*r*T,le=u.top*r;a=u.font.name,i=u.font.metrics.design_size/1048576*u.font.scaleFactor/u.font.designSize;let ne=["#000","black"].includes(n)?"CanvasText":n;if(_.add(${a}.ttf),o<=0){let L=d==u.top&&g>l+2;c+=<span class="text ${a}" style="top:${le-v}pt;left:${g}pt;color:${ne};font-size:${i}pt;"><span ${L?'class="has-space" ':""} style="vertical-align:${-v}pt;">${f}</span></span>
,d=u.top,l=g+x}else{let L=u.top*r;c+=<text alignment-baseline="baseline" y="${L}" x="${g}" fill="${ne}" font-size="${i}" font-family="${a}">${f}</text>
}break}case"rect":{let p=u.height*r,b=u.width*r,f=u.left*r,g=u.top*r-p,x=["#000","black"].includes(n)?"CanvasText":n;c+=o>0?<rect x="${f}" y="${g}" width="${b}" height="${p}" fill="${x}" ${Ue(s)}></rect>
:<span class="rect" style="background: ${x}; top: ${g}pt; left: ${f}pt; width: ${b}pt; height: ${p}pt;"></span>
;break}case"special":break;case"info":{r=u.magnification*u.numerator/1e3/u.denominator*72.27/1e5/2.54;break}case"svg":{let p=u.svg;for(let T of u.svg.matchAll(/<svg\s[^>]+>/g)){let g=T[0];g==="<svg beginpicture>"&&(p=p.replace(g,o>0?"":ve(h,w))),o++}for(let T of u.svg.matchAll(/<\/svg\s[^>]+>/g)){let g=T[0];g==="</svg endpicture>"&&(p=p.replace(g,o===1?"</svg>":"")),o=Math.max(0,o-1)}let b=u.top*r,f=u.left*r;c+=p.replaceAll("{?x}",${f}).replaceAll("{?y}",${b});break}case"papersize":w=u.height,h=u.width;break;case"color":n=u.color;break;case"ps":s=u.interpret(s);break;case"psfile":c+=o>0?u.toSVG(s):${ve(h,w)}${u.toSVG(s)}</svg>};break}for(let u=o;u>0;u--)c+="</svg>";let k=<title>${e.title??"input.tex"}</title>,U=<style>${await tt(_,e.fileLoader)}:root{color-scheme:light dark;background-color:Canvas;color:CanvasText;}.page{position:relative;width:100%;}.text{line-height:0;position:absolute;overflow:visible;}.rect{position:absolute;min-width:1px;min-height:1px;}</style>;return c=c.replace(/("#000"|"black")/g,'"CanvasText"').replace(/("#fff"|"white")/g,'"var(--background-primary, Canvas)"'),e.svg?${ve(h,w)}${k}${U}${c}:<!DOCTYPE html><html><head><meta charset="UTF-8">${k}${U}</head><body>${c}</body></html>},ve=(t,e)=><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="${t}pt" height="${e}pt" viewBox="-72 -72 ${t} ${e}">;var rt=t=>{let e=new DataView(t.buffer,t.byteOffset,t.byteLength),r=e.getUint16(0),n=e.getUint16(2),o=e.getUint16(4),s=e.getUint16(6),a={header:Math.max(18,n),character_info:s-o+1,width:e.getUint16(8),height:e.getUint16(10),depth:e.getUint16(12),italic_correction:e.getUint16(14),lig_kern:e.getUint16(16),kern:e.getUint16(18),extensible_character:e.getUint16(20),font_parameter:e.getUint16(22)};if(!(o<=s+1&&s<256))throw new Error(Smallest character code (${o}) must be larger than largest character code (${s}) and largest character code must be less than 256 (actual: ${s}));if(a.extensible_character>256)throw new Error(Extensible character must be less than 256 (actual: ${a.extensible_character}));{let x=6+n+a.character_info+a.width+a.height+a.depth+a.italic_correction+a.lig_kern+a.kern+a.extensible_character+a.font_parameter;if(r!==x)throw new Error(entire_file_length must be ${x} (actual: ${r}))}let i=24,c=x=>[...Array(x).keys()].map(v=>e.getUint32(i+v*4)),d=e.buffer.slice(i,i+a.header*4);i+=a.header*4;let l=c(a.character_info);i+=a.character_info*4;let h=c(a.width);i+=a.width*4;let w=c(a.height);i+=a.height*4;let _=c(a.depth);i+=a.depth*4;let k=c(a.italic_correction);i+=a.italic_correction*4;let U=c(a.lig_kern);i+=a.lig_kern*4;let u=c(a.kern);i+=a.kern*4;let p=c(a.extensible_character);i+=a.extensible_character*4;let b=c(a.font_parameter);i+=a.font_parameter*4;let f=Ht(d),T=Bt(l),g=Yt(b,f.coding_scheme);return{checksum:f.checksum,design_size:f.design_size,family:f.family,face:f.face,ligKernPrograms:Vt(U),characters:T.map(x=>{let{width_index:v,height_index:le,depth_index:ne,italic_index:L}=x,y={width:h[v],height:w.at(le)??0,depth:_.at(ne)??0,italic_correction:k.at(L)??0};switch(x.type){case"lig":y.lig_kern_program=U[x.lig_kern_index];break;case"link":y.next_larger_char=x.next_larger_char;break;case"ext":y.extensible_recipe=p[x.extensible_index];break;default:break}return y}),...g}},Ht=t=>{let e=new DataView(t),r=e.getUint32(0),n=e.getUint32(4),o=e.getUint8(8);if(o>39)throw new Error("Invalid TFM file");let s=new TextDecoder().decode(t.slice(9,9+o)),a=e.getUint8(48);if(a>20)throw new Error("Invalid TFM file");let i=new TextDecoder().decode(t.slice(49,49+a)),c=new Uint8Array(t,68,4),d=c[0],l=c[3];return{checksum:r,design_size:n,coding_scheme:s,family:i,seven_bit_safe_flag:d,face:l}},Bt=t=>t.map(e=>{let r=e>>24,n=e>>20&15,o=e>>16&15,s=e>>10&1118481,a=e>>8&3,i=e&255;switch(a){case 1:return{type:"lig",width_index:r,height_index:n,depth_index:o,italic_index:s,lig_kern_index:i};case 2:return{type:"link",width_index:r,height_index:n,depth_index:o,italic_index:s,next_larger_char:i};case 3:return{type:"ext",width_index:r,height_index:n,depth_index:o,italic_index:s,extensible_index:i};default:return{width_index:r,height_index:n,depth_index:o,italic_index:s}}}),Vt=t=>t.map((e,r)=>{let n=e>>24;if((r===0||r===t.length)&&n===255)throw Error(Font has ${r===0?"right":"left"} boundary char. This is not supported yet.);let o=e>>16&255,s=e>>8&255,a=e&255;if(s>=128){let h=256*(s-128)+a;return{skip_byte:n,next_char:o,op_byte:s,kern:a}}let i=s>>2,c=(s&2)==0,d=(s&1)==0,l=a;return n>=128?{skip_byte:n,next_char:o,op_byte:s,remainder:a}:{skip_byte:n,next_char:o,op_byte:s,kern:a}}),Yt=(t,e)=>{let r=t[0],n=t[1],o=t[2],s=t[3],a=t[4],i=t[5];if(e==="TeX math italic")return{coding_scheme:e,slant:r,spacing:n,space_stretch:o,space_shrink:s,x_height:a,quad:i};let c=t[6];if(e==="TeX math symbols"){let d=t[7],l=t[8],h=t[9],w=t[10],_=t[11],k=t[12],U=t[13],u=t[14],p=t[15],b=t[16],f=t[17],T=t[18],g=t[19],x=t[20],v=t[21];return{coding_scheme:e,slant:r,spacing:n,space_stretch:o,space_shrink:s,x_height:a,quad:i,extra_space:c,num1:d,num2:l,num3:h,denom1:w,denom2:_,sup1:k,sup2:U,sup3:u,sub1:p,sub2:b,supdrop:f,subdrop:T,delim1:g,delim2:x,axis_height:v}}if(e==="TeX math extension"||e==="euler substitutions only"){let d=t[7],l=t.slice(8,13);return{coding_scheme:e,slant:r,spacing:n,space_stretch:o,space_shrink:s,x_height:a,quad:i,extra_space:c,default_rule_thickness:d,big_op_spacing:l}}return{coding_scheme:e,slant:r,spacing:n,space_stretch:o,space_shrink:s,x_height:a,quad:i,extra_space:c}};var Cn=t=>{let e=t[0];if(0<=e&&e<128)return[{opcode:0,c:e},1];if(171<=e&&e<235)return[{opcode:171,k:e-171},1];if(249<e&&e<=255)return[{opcode:138},1];let r=new DataView(t.buffer,t.byteOffset,t.byteLength);switch(e){case 128:case 129:case 130:case 131:{let n=e-128+1;return t.byteLength<n+1?void 0:[{opcode:0,c:Se(t,1,n)},n+1]}case 132:case 137:return t.byteLength<9?void 0:[{opcode:e,a:r.getInt32(1),b:r.getInt32(5)},9];case 133:case 134:case 135:case 136:{let n=e-128+1;return t.byteLength<n+1?void 0:[{opcode:133,c:Se(t,1,n)},n+1]}case 138:case 140:case 141:case 142:return[{opcode:e},1];case 139:return t.byteLength<45?void 0:[{opcode:e,c_0:r.getUint32(1),c_1:r.getUint32(5),c_2:r.getUint32(9),c_3:r.getUint32(13),c_4:r.getUint32(17),c_5:r.getUint32(21),c_6:r.getUint32(25),c_7:r.getUint32(29),c_8:r.getUint32(33),c_9:r.getUint32(37),p:r.getInt32(41)},45];case 143:case 144:case 145:case 146:{let n=e-143+1;return t.byteLength<n+1?void 0:[{opcode:143,b:E(t,1,n)},n+1]}case 147:case 152:return[{opcode:e,b:0},1];case 148:case 149:case 150:case 151:{let n=e-147;return t.byteLength<n+1?void 0:[{opcode:147,b:E(t,1,n)},n+1]}case 153:case 154:case 155:case 156:{let n=e-152;return t.byteLength<n+1?void 0:[{opcode:152,b:E(t,1,n)},n+1]}case 157:case 158:case 159:case 160:{let n=e-157+1;return t.byteLength<n+1?void 0:[{opcode:157,a:E(t,1,n)},n+1]}case 161:case 166:return[{opcode:e,a:0},1];case 162:case 163:case 164:case 165:{let n=e-161;return t.byteLength<n+1?void 0:[{opcode:161,a:E(t,1,n)},n+1]}case 167:case 168:case 169:case 170:{let n=e-166;return t.byteLength<n+1?void 0:[{opcode:166,a:E(t,1,n)},n+1]}case 235:case 236:case 237:case 238:{let n=e-235+1;return t.byteLength<n+1?void 0:[{opcode:171,k:E(t,1,n)},n+1]}case 239:case 240:case 241:case 242:{let n=e-239+1;if(t.byteLength<n+1)return;let o=Se(t,1,n);return t.byteLength<n+1+o?void 0:[{opcode:239,x:t.subarray(n+1,n+1+o),k:o},n+1+o]}case 243:case 244:case 245:case 246:{let n=e-243+1;if(t.byteLength<n+1)return;let o=E(t,1,n);if(t.byteLength<n+15)return;let s=t[n+13],a=t[n+14];return t.byteLength<n+15+s+a?void 0:[{opcode:243,k:o,c:r.getUint32(n+1),s:r.getUint32(n+5),d:r.getUint32(n+9),a:s,l:a,n:new TextDecoder().decode(t.subarray(n+15,n+15+s+a))},n+15+s+a]}case 247:{if(t.byteLength<15)return;let n=t[1],o=t[14];return t.byteLength<15+o?void 0:[{opcode:e,i:n,num:r.getUint32(2),den:r.getUint32(6),mag:r.getUint32(10),x:new TextDecoder().decode(t.subarray(15,15+o)),k:o},15+o]}case 248:return t.byteLength<29?void 0:[{opcode:e,p:r.getUint32(1),num:r.getUint32(5),den:r.getUint32(9),mag:r.getUint32(13),l:r.getUint32(17),u:r.getUint32(21),s:r.getUint16(25),t:r.getUint16(27)},29];case 249:return t.byteLength<6?void 0:[{opcode:e,q:r.getUint32(1),i:r.getUint8(5)},6]}};function*ot(t){let e=t,r=0;for(;r<t.byteLength;){let[n,o]=Cn(e)??[,0];if(r+=o,e=e.subarray(o),!n)break;if(n.opcode===249){if(e.every(s=>s===223))break;throw Error("Only 223 bytes are permitted after the post-postamble.")}yield n}}var Se=(t,e,r)=>[...t.subarray(e,e+r)].reduce((n,o,s)=>n+o*256**(r-s-1),0),E=(t,e,r)=>{switch(r){case 1:return t[e];case 2:{let n=t[e]*256+t[e+1];return n|(n&2**15)*131070}case 3:{let n=t[e]*65536+t[e+1]*256+t[e+2];return n|(n&2**23)*510}case 4:return(t[e]<<24)+t[e+1]*2**16+t[e+2]*2**8+t[e+3]}};var st=()=>{let t=[],e="black";return r=>{let n=new TextDecoder().decode(r.data);if(n.startsWith("color push "))return t.push(e),e=it(n.slice(11)),{type:"color",color:e};if(n.startsWith("color pop")){let o=t.pop();if(!o)throw new Error("Popped from empty color stack");return e=o,{type:"color",color:e}}}},En=t=>${Math.round(t).toString(16)}.padStart(2,"0"),it=t=>{if(t==="gray 0")return"black";if(t==="gray 1")return"white";if(t.startsWith("rgb "))return#${t.split(" ").slice(1).map(e=>En(parseFloat(e)*255)).join("")};if(t.startsWith("gray ")){let e=t.split(" ")[1];return it(rgb ${e} ${e} ${e})}return"black"};var at=()=>{let t="";return(e,r)=>{let n=new TextDecoder().decode(e.data);if(!n.startsWith("dvisvgm:raw "))return;if(t+=n.slice(12),r?.type==="special"){let s=new TextDecoder().decode(r.data);if(e.horizontal===r.horizontal&&e.vertical===r.vertical&&s.startsWith("dvisvgm:raw "))return null}let o=t.replaceAll("{?nl}", );return t="",{type:"svg",svg:o,left:e.horizontal,top:e.vertical}}};var ct=t=>{let e=new TextDecoder().decode(t.data);if(!e.startsWith("papersize="))return;let[r,n]=e.slice(10).split(",");if(r===void 0||n===void 0)throw Error("Papersize special requires two arguments.");if(!r.endsWith("pt"))throw Error("Papersize special width must be in points.");if(!n.endsWith("pt"))throw Error("Papersize special height must be in points.");return{type:"papersize",width:parseFloat(r.slice(0,-2)),height:parseFloat(n.slice(0,-2))}};var lt=[],pt=(t,e,r,n)=>{let o=[],s={matrix:e,horizontal:r,vertical:n},a={pop:()=>o.pop(),exch:()=>{let i=o.pop(),c=o.pop();i&&o.push(i),c&&o.push(c)},dup:()=>{o.push(o[o.length-1])},mark:()=>o.push(new ze),neg:()=>{let i=o.pop();i&&o.push(new S(-i.value))},add:()=>{let i=o.pop(),c=o.pop();i&&c&&o.push(new S(i.value+c.value))},sub:()=>{let i=o.pop(),c=o.pop();i&&c&&o.push(new S(c.value-i.value))},mul:()=>{let i=o.pop(),c=o.pop();i&&c&&o.push(new S(i.value*c.value))},div:()=>{let i=o.pop(),c=o.pop();i&&c&&o.push(new S(c.value/i.value))},gsave:()=>lt.push([...e]),grestore:()=>{let i=lt.pop();i&&(s.matrix=i)},currentpoint:()=>o.push(new S(s.horizontal),new S(s.vertical)),moveto:()=>{let i=o.pop(),c=o.pop();s.horizontal=c?.value,s.vertical=i?.value},scale:()=>{let i=o.pop(),c=o.pop();c&&i&&(s.matrix=_e(s.matrix,c.value,i.value))},translate:()=>{let i=o.pop(),c=o.pop();c&&i&&(s.matrix=Te(s.matrix,c.value,i.value))},rotate:()=>{let i=o.pop();i&&(s.matrix=Pe(s.matrix,i.value))}};for(let i of Rn(t)){if(/^[+-]?\d+(\.\d*)?$/.test(i)){o.push(new S(i));continue}if(i[0]==="("){o.push(new De(i));continue}if(i==="["){a.mark();continue}if(i==="]"){let c=new Oe,d=o.pop();if(!d)continue;for(;d.name!=="mark";)c.push(d);o.push(c)}if(i[0]==="/"&&o.push(new Ie(i)),i[0]==="{"&&o.push(new Xe(i)),i in a){a[i](void 0);continue}throw Error("Invalid or unimplemented postscript expression")}return s};function*Rn(t){let e="",r=0,n=0,o=t[Symbol.iterator]();for(let s of o){let a;switch(s){case" ":case" ":case
:if(n){e[e.length-1]!==" "&&(e+=" ");continue}if(r){switch(s){case" ":e+=" ";break;case
:e+="\\n";break;case" ":e+="\\t";break}continue}e&&(yield e,e="");continue;case"[":case"]":if(!n&&!r){e&&(yield e),e="",yield s;continue}e+=s;continue;case"{":r||(n==0&&e&&(yield e),++n),e+=s;continue;case"}":if(e+=s,r||(--n,n))continue;yield e,e="";continue;case"(":++r,e&&!n&&r==1&&(yield e),r>1&&(e+="\\"),e+=s;continue;case")":if(--r,r&&(e+="\\"),e+=s,n||r)continue;yield e,e="";continue;case"\\":if(e+=s,a=o.next(),a.done)throw Error("Invalid escape character.");a.done||(e+=a.value);continue;case"/":!n&&!r&&e&&(yield e),e+=s;continue;case"%":do a=o.next();while(!a.done&&a.value!==
);continue;default:e+=s}}e&&(yield e)}var R=class{name;value;constructor(e){this.name=e}},S=class extends R{constructor(e){super("number"),this.value=typeof e=="number"?e:parseFloat(e)}},De=class extends R{constructor(e){super("string"),this.value=e.replace(/^\(|\)$/g,"")}},Oe=class extends R{constructor(e){super("array"),this.value=e||[]}push(e){this.value.push(e)}pop(){return this.value.pop()}},ze=class extends R{constructor(){super("mark"),this.value="-mark-"}},Ie=class extends R{constructor(e){super("identifier"),this.value=e.replace(/^\//,"")}},Xe=class extends R{constructor(e){super("procedure"),this.value=e}};var ut=()=>{let t="";return(e,r)=>{let n=new TextDecoder().decode(e.data);if(!n.startsWith("ps: "))return;if(t+=n.slice(4),r?.type==="special"&&new TextDecoder().decode(r.data).startsWith("ps: "))return null;let o=s=>{let a=pt(t,s,e.horizontal,e.vertical);return e.emitChange({horizontal:a.horizontal,vertical:a.vertical,w:e.w,x:e.x,y:e.y,z:e.z}),a.matrix};return t="",{type:"ps",ps:t,interpret:o}}};async function*ft(t,e){let r=Ln(t,e.tfmLoader),n=await r.next(),o=n.done?void 0:n.value;for(;o;){let s=o,a=await r.next();if(o=a.done?void 0:a.value,s.type==="special"&&e.plugins){let i=!1;for(let c of e.plugins){let d=c(s,o);if(d!==void 0){d!==null&&(yield d),i=!0;break}}i||(yield s);continue}yield s}}async function*Ln(t,e){let r=2,n=254e5,o=473628672,s=1e3,a="",i=0,c=0,d=0,l={horizontal:0,vertical:0,w:0,x:0,y:0,z:0,fontNum:0},h=[],w=new Map,_="",k=ot(t),U=k.next(),u=U.done?void 0:U.value;for(;u;){let p=u,b=k.next();switch(u=b.done?void 0:b.value,p.opcode){case 0:case 133:if(_+=String.fromCharCode(p.c),u?.opcode!==0&&u?.opcode!==133||!u){let f=w.get(l.fontNum);if(!f)throw Error(Font "${l.fontNum}" is not loaded);yield{type:"text",text:_,font:f,top:l.vertical,left:l.horizontal},p.opcode===0&&(l.horizontal+=$n(_,f)),_=""}break;case 132:case 137:p.a>0&&p.b>0&&(yield{type:"rect",left:l.horizontal,top:l.vertical,height:p.a,width:p.b}),p.opcode===132&&(l.horizontal+=p.b);break;case 138:case 140:break;case 139:l.horizontal=0,l.vertical=0,l.w=0,l.x=0,l.y=0,l.z=0,l.fontNum=0,h.splice(0,h.length);break;case 141:h.push({...l});break;case 142:{let f=h.pop();f&&(l.horizontal=f.horizontal,l.vertical=f.vertical,l.w=f.w,l.x=f.x,l.y=f.y,l.z=f.z);break}case 143:l.horizontal+=p.b;break;case 147:p.b!==0&&(l.w=p.b),l.horizontal+=l.w;break;case 152:p.b!==0&&(l.x=p.b),l.horizontal+=l.x;break;case 157:l.vertical+=p.a;break;case 161:p.a!==0&&(l.y=p.a),l.vertical+=l.y;break;case 166:p.a!==0&&(l.z=p.a),l.vertical+=l.z;break;case 171:case 235:case 236:case 237:case 238:l.fontNum=p.k;break;case 239:yield{type:"special",data:p.x,...l,emitChange:f=>{l.horizontal=f.horizontal,l.vertical=f.vertical,l.w=f.w,l.x=f.x,l.y=f.y,l.z=f.z}};break;case 243:{if(w.has(p.k))break;let f=p.n,T=p.s,g=p.d,x=p.c,v=rt(new Uint32Array((await e(${p.n}.tfm)).buffer));w.set(p.k,{name:f,checksum:x,scaleFactor:T,designSize:g,metrics:v});break}case 247:r=p.i,n=p.num,o=p.den,s=p.mag,a=p.x,yield{type:"info",version:r,numerator:n,denominator:o,magnification:s,comment:a};break;case 248:i=p.l,c=p.u,d=p.t;break;case 249:yield{type:"info",version:r,numerator:n,denominator:o,magnification:s,comment:a,maxHeight:i,maxWidth:c,pages:d,dviVersion:p.i};break}}}var $n=(t,e)=>{let r=0;for(let o of t){let s=o.codePointAt(0)??0,a=e.metrics.characters.at(s);if(a===void 0)throw Error(Could not find font metric for ${s});r+=a.width}let n=e.metrics.design_size/1048576*65536/1048576;return r*n*e.scaleFactor/e.designSize};globalThis.onmessage=async t=>{let e=t.data;switch(e.type){case"asset-url":{mt=e.url;let r={type:e.type};globalThis.postMessage(r)}break;case"compile":{let{dvi:r,log:n}=await Ze(e.input,{fileLoader:We,console:c=>{let d={type:"stdout",message:c};globalThis.postMessage(d)}});if(!r){let c={type:e.type,log:n};globalThis.postMessage(c,[n.buffer]);return}let o=[],s=new Set;for await(let c of ft(r,{plugins:[ct,ut(),at(),st()],tfmLoader:We}))o.push(c),c.type==="text"&&s.add(c.font.name);let a=await nt(o,{fileLoader:We,svg:!0}),i={type:e.type,svg:a,log:n};globalThis.postMessage(i,[n.buffer])}break}};var dt,We=async t=>{dt??=await Mn();let e=dt.get(t);if(!e){let r=new Error(File ${t} not found in assets`);throw console.log(r),r}return new Uint8Array(await e())},mt="",Mn=async()=>{let t=new Request(mt),e=await je(t,{ignoreSearch:!0}),r=e??await fetch(t);e||await Qe(t,r);let n=new Map;for await(let{name:o,arrayBuffer:s}of qe(await r.arrayBuffer()))n.set(o,s);return n};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L3Rpa3pqYXgvMC40LjAvbGlicmFyeS5qcyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGlrempheC8wLjQuMC90aW1lQmFjay50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvdGlrempheC8wLjQuMC9tb2QudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L2Rlbm8temlwLzAuMC4yL21vZC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvU2NyYXBSdW4vMC40LjEvcHJldmlld2Vycy9UaWtaL2NhY2hlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9kdmkyaHRtbC8wLjQuMi9kdmkvc3BlY2lhbHMvbWF0cml4LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9kdmkyaHRtbC8wLjQuMi90b0RhdGFVUkwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L2R2aTJodG1sLzAuNC4yL21ha2VGb250Q1NTLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9kdmkyaHRtbC8wLjQuMi9tb2QudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L2R2aTJodG1sLzAuNC4yL3RmbS9tb2QudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L2R2aTJodG1sLzAuNC4yL2R2aS90b2tlbml6ZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvZHZpMmh0bWwvMC40LjIvZHZpL3NwZWNpYWxzL2NvbG9yLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9kdmkyaHRtbC8wLjQuMi9kdmkvc3BlY2lhbHMvc3ZnLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9kdmkyaHRtbC8wLjQuMi9kdmkvc3BlY2lhbHMvcGFwZXJzaXplLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9kdmkyaHRtbC8wLjQuMi9kdmkvc3BlY2lhbHMvcHNpbnRlcnByZXRlci50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvZHZpMmh0bWwvMC40LjIvZHZpL3NwZWNpYWxzL3BzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9kdmkyaHRtbC8wLjQuMi9kdmkvbW9kLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9TY3JhcFJ1bi8wLjQuMS9wcmV2aWV3ZXJzL1Rpa1ovd29ya2VyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJsZXQgZmlsZXN5c3RlbSA9IHt9O1xubGV0IGZpbGVzID0gW107XG4vKiogQHR5cGV7KCh4OiBzdHJpbmcpID0+IHZvaWQpIHwgdW5kZWZpbmVkfSAqL1xubGV0IGNvbnNvbGVMb2c7XG5sZXQgY29uc29sZUJ1ZmZlciA9IFwiXCI7XG5sZXQgbWVtb3J5ID0gbnVsbDtcbmxldCBpbnB1dEJ1ZmZlciA9IG51bGw7XG5sZXQgY2FsbGJhY2sgPSBudWxsO1xuXG5sZXQgd2FzbUV4cG9ydHMgPSBudWxsO1xubGV0IHZpZXcgPSBudWxsO1xubGV0IGZpbGVMb2FkZXIgPSBudWxsO1xubGV0IGZpbmlzaGVkID0gbnVsbDtcblxuZXhwb3J0IGNvbnN0IHBhZ2VzID0gMTEwMDtcblxuY29uc3QgREFUQV9BRERSID0gKHBhZ2VzIC0gMTAwKSAqIDEwMjQgKiA2NDtcbmNvbnN0IEVORF9BRERSID0gcGFnZXMgKiAxMDI0ICogNjQ7XG5sZXQgd2luZGluZ0RlcHRoID0gMDtcbmxldCBzbGVlcGluZyA9IGZhbHNlO1xuXG5jb25zdCBzdGFydFVud2luZCA9ICgpID0+IHtcbiAgaWYgKHZpZXcpIHtcbiAgICB2aWV3W0RBVEFfQUREUiA+PiAyXSA9IERBVEFfQUREUiArIDg7XG4gICAgdmlld1tEQVRBX0FERFIgKyA0ID4+IDJdID0gRU5EX0FERFI7XG4gIH1cblxuICB3YXNtRXhwb3J0cy5hc3luY2lmeV9zdGFydF91bndpbmQoREFUQV9BRERSKTtcbiAgd2luZGluZ0RlcHRoID0gd2luZGluZ0RlcHRoICsgMTtcbn07XG5cbmNvbnN0IHN0YXJ0UmV3aW5kID0gKCkgPT4ge1xuICB3YXNtRXhwb3J0cy5hc3luY2lmeV9zdGFydF9yZXdpbmQoREFUQV9BRERSKTtcbiAgd2FzbUV4cG9ydHMubWFpbigpO1xufTtcblxuY29uc3Qgc3RvcFJld2luZCA9ICgpID0+IHtcbiAgd2luZGluZ0RlcHRoID0gd2luZGluZ0RlcHRoIC0gMTtcbiAgd2FzbUV4cG9ydHMuYXN5bmNpZnlfc3RvcF9yZXdpbmQoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVFdmVyeXRoaW5nID0gKCkgPT4ge1xuICBmaWxlcyA9IFtdO1xuICBmaWxlc3lzdGVtID0ge307XG4gIG1lbW9yeSA9IG51bGw7XG4gIGlucHV0QnVmZmVyID0gbnVsbDtcbiAgY2FsbGJhY2sgPSBudWxsO1xuICBjb25zb2xlTG9nID0gdW5kZWZpbmVkO1xuICBmaW5pc2hlZCA9IG51bGw7XG4gIHdhc21FeHBvcnRzID0gbnVsbDtcbiAgdmlldyA9IG51bGw7XG4gIHNsZWVwaW5nID0gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3Qgd3JpdGVGaWxlU3luYyA9IChmaWxlbmFtZSwgYnVmZmVyKSA9PiB7XG4gIGZpbGVzeXN0ZW1bZmlsZW5hbWVdID0gYnVmZmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlYWRGaWxlU3luYyA9IChmaWxlbmFtZSkgPT4ge1xuICBmb3IgKGNvbnN0IGYgb2YgZmlsZXMpIHtcbiAgICBpZiAoZi5maWxlbmFtZSA9PSBmaWxlbmFtZSkge1xuICAgICAgcmV0dXJuIGYuY29udGVudC5zbGljZSgwLCBmLnBvc2l0aW9uKTtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBFcnJvcihgQ291bGQgbm90IGZpbmQgZmlsZSAke2ZpbGVuYW1lfWApO1xufTtcblxuY29uc3Qgb3BlblN5bmMgPSAoZmlsZW5hbWUsIG1vZGUpID0+IHtcbiAgY29uc3QgaW5pdGlhbFNsZWVwU3RhdGUgPSBzbGVlcGluZztcbiAgaWYgKHNsZWVwaW5nKSB7XG4gICAgc3RvcFJld2luZCgpO1xuICAgIHNsZWVwaW5nID0gZmFsc2U7XG4gIH1cblxuICBsZXQgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoKTtcblxuICBpZiAoZmlsZXN5c3RlbVtmaWxlbmFtZV0pIHtcbiAgICBidWZmZXIgPSBmaWxlc3lzdGVtW2ZpbGVuYW1lXTtcbiAgfSBlbHNlIGlmIChtb2RlID09IFwiclwiKSB7XG4gICAgLy8gSWYgdGhpcyBmaWxlIGhhcyBiZWVuIG9wZW5lZCBiZWZvcmUgd2l0aG91dCBhbiBlcnJvciwgdGhhdCBtZWFucyBpdCB3YXMgd3JpdHRlbiB0by5cbiAgICAvLyBJbiB0aGF0IGNhc2UgYXNzdW1lIHRoZSBmaWxlIGNhbiBub3cgYmUgb3BlbmVkLCBzbyBmYWxsIHRocm91Z2ggYW5kIGNyZWF0ZSBhIGZha2UgZmlsZSBiZWxvdy5cbiAgICAvLyBPdGhlcndpc2UgYXR0ZW1wdCB0byBmaW5kIGl0LlxuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBmaWxlcy5maW5kSW5kZXgoKGVsZW1lbnQpID0+XG4gICAgICBlbGVtZW50LmZpbGVuYW1lID09IGZpbGVuYW1lICYmICFlbGVtZW50LmVyc3RhdFxuICAgICk7XG4gICAgaWYgKGRlc2NyaXB0b3IgPT0gLTEpIHtcbiAgICAgIGlmIChpbml0aWFsU2xlZXBTdGF0ZSB8fCBmaWxlbmFtZS5tYXRjaCgvXFwuKGF1eHxsb2d8ZHZpKSQvKSkge1xuICAgICAgICAvLyBJZiB3ZSBhcmUgcmV0dXJuaW5nIGZyb20gc2xlZXAgYW5kIHRoZSBmaWxlIGlzIHN0aWxsIG5vdCBpbiB0aGUgZmlsZXN5c3RlbSxcbiAgICAgICAgLy8gb3IgaXQgaXMgYW4gYXV4LCBsb2csIG9yIGR2aSBmaWxlLCB0aGVuIHJlcG9ydCBpdCBhcyBub3QgZm91bmQuXG4gICAgICAgIGZpbGVzLnB1c2goe1xuICAgICAgICAgIGZpbGVuYW1lOiBmaWxlbmFtZSxcbiAgICAgICAgICBlcnN0YXQ6IDEsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmlsZXMubGVuZ3RoIC0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFBhdXNlIHRoZSB3ZWIgYXNzZW1ibHkgZXhlY3V0aW9uLCBhbmQgYXR0ZW1wdCB0byBsb2FkIHRoZSBmaWxlLlxuICAgICAgICBzdGFydFVud2luZCgpO1xuICAgICAgICBzbGVlcGluZyA9IHRydWU7XG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIC8vIEF0dGVtcHQgdG8gbG9hZCB0aGUgZmlsZS5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGZpbGVMb2FkZXIoZmlsZW5hbWUpO1xuICAgICAgICAgICAgZmlsZXN5c3RlbVtmaWxlbmFtZV0gPSBkYXRhO1xuICAgICAgICAgICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1lbXB0eVxuICAgICAgICAgIH0gY2F0Y2ggKF8pIHt9XG4gICAgICAgICAgc3RhcnRSZXdpbmQoKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmaWxlcy5wdXNoKHtcbiAgICBmaWxlbmFtZTogZmlsZW5hbWUsXG4gICAgcG9zaXRpb246IDAsXG4gICAgcG9zaXRpb24yOiAwLFxuICAgIGVyc3RhdDogMCxcbiAgICBlb2xuOiBmYWxzZSxcbiAgICBjb250ZW50OiBidWZmZXIsXG4gICAgZGVzY3JpcHRvcjogZmlsZXMubGVuZ3RoLFxuICB9KTtcblxuICByZXR1cm4gZmlsZXMubGVuZ3RoIC0gMTtcbn07XG5cbmNvbnN0IGNsb3NlU3luYyA9ICgpID0+IHsgLy8gaWdub3JlIHRoaXMuXG59O1xuXG5jb25zdCB3cml0ZVN5bmMgPSAoZmlsZSwgYnVmZmVyLCBwb2ludGVyLCBsZW5ndGgpID0+IHtcbiAgaWYgKHBvaW50ZXIgPT09IHVuZGVmaW5lZCkgcG9pbnRlciA9IDA7XG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCAtIHBvaW50ZXI7XG5cbiAgd2hpbGUgKGxlbmd0aCA+IGZpbGUuY29udGVudC5sZW5ndGggLSBmaWxlLnBvc2l0aW9uKSB7XG4gICAgY29uc3QgYiA9IG5ldyBVaW50OEFycmF5KDEgKyBmaWxlLmNvbnRlbnQubGVuZ3RoICogMik7XG4gICAgYi5zZXQoZmlsZS5jb250ZW50KTtcbiAgICBmaWxlLmNvbnRlbnQgPSBiO1xuICB9XG5cbiAgZmlsZS5jb250ZW50LnN1YmFycmF5KGZpbGUucG9zaXRpb24pLnNldChcbiAgICBidWZmZXIuc3ViYXJyYXkocG9pbnRlciwgcG9pbnRlciArIGxlbmd0aCksXG4gICk7XG4gIGZpbGUucG9zaXRpb24gKz0gbGVuZ3RoO1xufTtcblxuY29uc3QgcmVhZFN5bmMgPSAoZmlsZSwgYnVmZmVyLCBwb2ludGVyLCBsZW5ndGgsIHNlZWspID0+IHtcbiAgaWYgKHBvaW50ZXIgPT09IHVuZGVmaW5lZCkgcG9pbnRlciA9IDA7XG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCAtIHBvaW50ZXI7XG5cbiAgaWYgKGxlbmd0aCA+IGZpbGUuY29udGVudC5sZW5ndGggLSBzZWVrKSB7XG4gICAgbGVuZ3RoID0gZmlsZS5jb250ZW50Lmxlbmd0aCAtIHNlZWs7XG4gIH1cblxuICBidWZmZXIuc3ViYXJyYXkocG9pbnRlcikuc2V0KGZpbGUuY29udGVudC5zdWJhcnJheShzZWVrLCBzZWVrICsgbGVuZ3RoKSk7XG5cbiAgcmV0dXJuIGxlbmd0aDtcbn07XG5cbmNvbnN0IHdyaXRlVG9Db25zb2xlID0gKHgpID0+IHtcbiAgaWYgKCFjb25zb2xlTG9nKSByZXR1cm47XG4gIGNvbnNvbGVCdWZmZXIgKz0geDtcbiAgaWYgKGNvbnNvbGVCdWZmZXIuaW5kZXhPZihcIlxcblwiKSA+PSAwKSB7XG4gICAgY29uc3QgbGluZXMgPSBjb25zb2xlQnVmZmVyLnNwbGl0KFwiXFxuXCIpO1xuICAgIGNvbnNvbGVCdWZmZXIgPSBsaW5lcy5wb3AoKTtcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgIGlmIChsaW5lLmxlbmd0aCkgY29uc29sZUxvZyhsaW5lKTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDb25zb2xlID0gKGNvbnNvbGUpID0+IHtcbiAgY29uc29sZUxvZyA9IGNvbnNvbGU7XG59O1xuXG4vLyBzZXR1cFxuXG5leHBvcnQgY29uc3Qgc2V0TWVtb3J5ID0gKG0pID0+IHtcbiAgbWVtb3J5ID0gbTtcbiAgdmlldyA9IG5ldyBJbnQzMkFycmF5KG0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldElucHV0ID0gKGlucHV0LCBjYikgPT4ge1xuICBpbnB1dEJ1ZmZlciA9IGlucHV0O1xuICBpZiAoY2IpIGNhbGxiYWNrID0gY2I7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0RmlsZUxvYWRlciA9IChjKSA9PiB7XG4gIGZpbGVMb2FkZXIgPSBjO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4ZWN1dGVBc3luYyA9IChfd2FzbUV4cG9ydHMpID0+IHtcbiAgd2FzbUV4cG9ydHMgPSBfd2FzbUV4cG9ydHM7XG5cbiAgZmluaXNoZWQgPSBQcm9taXNlLndpdGhSZXNvbHZlcnMoKTtcblxuICB3YXNtRXhwb3J0cy5tYWluKCk7XG4gIHdhc21FeHBvcnRzLmFzeW5jaWZ5X3N0b3BfdW53aW5kKCk7XG5cbiAgcmV0dXJuIGZpbmlzaGVkLnByb21pc2U7XG59O1xuXG4vLyBwcmludFxuXG5leHBvcnQgY29uc3QgcHJpbnRTdHJpbmcgPSAoZGVzY3JpcHRvciwgeCkgPT4ge1xuICBjb25zdCBmaWxlID0gKGRlc2NyaXB0b3IgPCAwKSA/IHsgc3Rkb3V0OiB0cnVlIH0gOiBmaWxlc1tkZXNjcmlwdG9yXTtcbiAgY29uc3QgbGVuZ3RoID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LCB4LCAxKVswXTtcbiAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LCB4ICsgMSwgbGVuZ3RoKTtcbiAgY29uc3Qgc3RyaW5nID0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBidWZmZXIpO1xuXG4gIGlmIChmaWxlLnN0ZG91dCkge1xuICAgIHdyaXRlVG9Db25zb2xlKHN0cmluZyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgd3JpdGVTeW5jKGZpbGUsIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShzdHJpbmcpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBwcmludEJvb2xlYW4gPSAoZGVzY3JpcHRvciwgeCkgPT4ge1xuICBjb25zdCBmaWxlID0gKGRlc2NyaXB0b3IgPCAwKSA/IHsgc3Rkb3V0OiB0cnVlIH0gOiBmaWxlc1tkZXNjcmlwdG9yXTtcblxuICBjb25zdCByZXN1bHQgPSB4ID8gXCJUUlVFXCIgOiBcIkZBTFNFXCI7XG5cbiAgaWYgKGZpbGUuc3Rkb3V0KSB7XG4gICAgd3JpdGVUb0NvbnNvbGUocmVzdWx0KTtcbiAgICByZXR1cm47XG4gIH1cblxuICB3cml0ZVN5bmMoZmlsZSwgbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHJlc3VsdCkpO1xufTtcbmV4cG9ydCBjb25zdCBwcmludENoYXIgPSAoZGVzY3JpcHRvciwgeCkgPT4ge1xuICBjb25zdCBmaWxlID0gKGRlc2NyaXB0b3IgPCAwKSA/IHsgc3Rkb3V0OiB0cnVlIH0gOiBmaWxlc1tkZXNjcmlwdG9yXTtcbiAgaWYgKGZpbGUuc3Rkb3V0KSB7XG4gICAgd3JpdGVUb0NvbnNvbGUoU3RyaW5nLmZyb21DaGFyQ29kZSh4KSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYiA9IG5ldyBVaW50OEFycmF5KDEpO1xuICBiWzBdID0geDtcbiAgd3JpdGVTeW5jKGZpbGUsIGIpO1xufTtcblxuZXhwb3J0IGNvbnN0IHByaW50SW50ZWdlciA9IChkZXNjcmlwdG9yLCB4KSA9PiB7XG4gIGNvbnN0IGZpbGUgPSAoZGVzY3JpcHRvciA8IDApID8geyBzdGRvdXQ6IHRydWUgfSA6IGZpbGVzW2Rlc2NyaXB0b3JdO1xuICBpZiAoZmlsZS5zdGRvdXQpIHtcbiAgICB3cml0ZVRvQ29uc29sZSh4LnRvU3RyaW5nKCkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHdyaXRlU3luYyhmaWxlLCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoYCR7eH1gKSk7XG59O1xuXG5leHBvcnQgY29uc3QgcHJpbnRGbG9hdCA9IChkZXNjcmlwdG9yLCB4KSA9PiB7XG4gIGNvbnN0IGZpbGUgPSAoZGVzY3JpcHRvciA8IDApID8geyBzdGRvdXQ6IHRydWUgfSA6IGZpbGVzW2Rlc2NyaXB0b3JdO1xuICBpZiAoZmlsZS5zdGRvdXQpIHtcbiAgICB3cml0ZVRvQ29uc29sZSh4LnRvU3RyaW5nKCkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHdyaXRlU3luYyhmaWxlLCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoYCR7eH1gKSk7XG59O1xuXG5leHBvcnQgY29uc3QgcHJpbnROZXdsaW5lID0gKGRlc2NyaXB0b3IsIF8pID0+IHtcbiAgY29uc3QgZmlsZSA9IChkZXNjcmlwdG9yIDwgMCkgPyB7IHN0ZG91dDogdHJ1ZSB9IDogZmlsZXNbZGVzY3JpcHRvcl07XG5cbiAgaWYgKGZpbGUuc3Rkb3V0KSB7XG4gICAgd3JpdGVUb0NvbnNvbGUoXCJcXG5cIik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgd3JpdGVTeW5jKGZpbGUsIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShcIlxcblwiKSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXQgPSAobGVuZ3RoLCBwb2ludGVyKSA9PiB7XG4gIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KG1lbW9yeSwgcG9pbnRlciwgbGVuZ3RoKTtcbiAgbGV0IGZpbGVuYW1lID0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBidWZmZXIpO1xuXG4gIGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZSgvXFwwMDArJC9nLCBcIlwiKTtcblxuICBpZiAoZmlsZW5hbWUuc3RhcnRzV2l0aChcIntcIikpIHtcbiAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnJlcGxhY2UoL157L2csIFwiXCIpO1xuICAgIGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZSgvfS4qL2csIFwiXCIpO1xuICB9XG5cbiAgaWYgKGZpbGVuYW1lLnN0YXJ0c1dpdGgoJ1wiJykpIHtcbiAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnJlcGxhY2UoL15cIi9nLCBcIlwiKTtcbiAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnJlcGxhY2UoL1wiLiovZywgXCJcIik7XG4gIH1cblxuICBmaWxlbmFtZSA9IGZpbGVuYW1lLnJlcGxhY2UoLyArJC9nLCBcIlwiKTtcbiAgZmlsZW5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlKC9eXFwqLywgXCJcIik7XG4gIGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZSgvXlRlWGZvbnRzOi8sIFwiXCIpO1xuXG4gIGlmIChmaWxlbmFtZSA9PSBcIlRlWGZvcm1hdHM6VEVYLlBPT0xcIikge1xuICAgIGZpbGVuYW1lID0gXCJ0ZXgucG9vbFwiO1xuICB9XG5cbiAgaWYgKGZpbGVuYW1lID09IFwiVFRZOlwiKSB7XG4gICAgZmlsZXMucHVzaCh7XG4gICAgICBmaWxlbmFtZTogXCJzdGRpblwiLFxuICAgICAgc3RkaW46IHRydWUsXG4gICAgICBwb3NpdGlvbjogMCxcbiAgICAgIHBvc2l0aW9uMjogMCxcbiAgICAgIGVyc3RhdDogMCxcbiAgICAgIGVvbG46IGZhbHNlLFxuICAgICAgY29udGVudDogbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGlucHV0QnVmZmVyKSxcbiAgICB9KTtcbiAgICByZXR1cm4gZmlsZXMubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIHJldHVybiBvcGVuU3luYyhmaWxlbmFtZSwgXCJyXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJld3JpdGUgPSAobGVuZ3RoLCBwb2ludGVyKSA9PiB7XG4gIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KG1lbW9yeSwgcG9pbnRlciwgbGVuZ3RoKTtcbiAgbGV0IGZpbGVuYW1lID0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBidWZmZXIpO1xuXG4gIGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZSgvICskL2csIFwiXCIpO1xuXG4gIGlmIChmaWxlbmFtZS5zdGFydHNXaXRoKCdcIicpKSB7XG4gICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlKC9eXCIvZywgXCJcIik7XG4gICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlKC9cIi4qL2csIFwiXCIpO1xuICB9XG5cbiAgaWYgKGZpbGVuYW1lID09IFwiVFRZOlwiKSB7XG4gICAgZmlsZXMucHVzaCh7XG4gICAgICBmaWxlbmFtZTogXCJzdGRvdXRcIixcbiAgICAgIHN0ZG91dDogdHJ1ZSxcbiAgICAgIGVyc3RhdDogMCxcbiAgICB9KTtcbiAgICByZXR1cm4gZmlsZXMubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIHJldHVybiBvcGVuU3luYyhmaWxlbmFtZSwgXCJ3XCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsb3NlID0gKGRlc2NyaXB0b3IpID0+IHtcbiAgY29uc3QgZmlsZSA9IGZpbGVzW2Rlc2NyaXB0b3JdO1xuXG4gIGlmIChmaWxlLmRlc2NyaXB0b3IpIHtcbiAgICBjbG9zZVN5bmMoZmlsZS5kZXNjcmlwdG9yKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGVvZiA9IChkZXNjcmlwdG9yKSA9PiB7XG4gIGNvbnN0IGZpbGUgPSBmaWxlc1tkZXNjcmlwdG9yXTtcblxuICBpZiAoZmlsZS5lb2YpIHJldHVybiAxO1xuICBlbHNlIHJldHVybiAwO1xufTtcblxuZXhwb3J0IGNvbnN0IGVyc3RhdCA9IChkZXNjcmlwdG9yKSA9PiB7XG4gIGNvbnN0IGZpbGUgPSBmaWxlc1tkZXNjcmlwdG9yXTtcbiAgcmV0dXJuIGZpbGUuZXJzdGF0O1xufTtcblxuZXhwb3J0IGNvbnN0IGVvbG4gPSAoZGVzY3JpcHRvcikgPT4ge1xuICBjb25zdCBmaWxlID0gZmlsZXNbZGVzY3JpcHRvcl07XG5cbiAgaWYgKGZpbGUuZW9sbikgcmV0dXJuIDE7XG4gIGVsc2UgcmV0dXJuIDA7XG59O1xuXG5leHBvcnQgY29uc3QgaW5wdXRsbiA9IChcbiAgZGVzY3JpcHRvcixcbiAgYnlwYXNzX2VvbG4sXG4gIGJ1ZmZlcnAsXG4gIGZpcnN0cCxcbiAgbGFzdHAsXG4gIF8sXG4gIGJ1Zl9zaXplLFxuKSA9PiB7XG4gIGNvbnN0IGZpbGUgPSBmaWxlc1tkZXNjcmlwdG9yXTtcblxuICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheShtZW1vcnksIGJ1ZmZlcnAsIGJ1Zl9zaXplKTtcbiAgY29uc3QgZmlyc3QgPSBuZXcgVWludDMyQXJyYXkobWVtb3J5LCBmaXJzdHAsIDQpO1xuICBjb25zdCBsYXN0ID0gbmV3IFVpbnQzMkFycmF5KG1lbW9yeSwgbGFzdHAsIDQpO1xuXG4gIC8vIGNmLiBNYXR0aGV3IDE5OjMwXG4gIGxhc3RbMF0gPSBmaXJzdFswXTtcblxuICAvLyBJbnB1dCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBsaW5lIGludG8gfGZefFxuICBpZiAoYnlwYXNzX2VvbG4gJiYgIWZpbGUuZW9mICYmIGZpbGUuZW9sbikge1xuICAgIGZpbGUucG9zaXRpb24yID0gZmlsZS5wb3NpdGlvbjIgKyAxO1xuICB9XG5cbiAgbGV0IGVuZE9mTGluZSA9IGZpbGUuY29udGVudC5pbmRleE9mKDEwLCBmaWxlLnBvc2l0aW9uMik7XG4gIGlmIChlbmRPZkxpbmUgPCAwKSBlbmRPZkxpbmUgPSBmaWxlLmNvbnRlbnQubGVuZ3RoO1xuXG4gIGlmIChmaWxlLnBvc2l0aW9uMiA+PSBmaWxlLmNvbnRlbnQubGVuZ3RoKSB7XG4gICAgaWYgKGZpbGUuc3RkaW4pIHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICAgIHRleF9maW5hbF9lbmQoKTtcbiAgICB9XG5cbiAgICBmaWxlLmVvZiA9IHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIGJ1ZmZlci5zdWJhcnJheShmaXJzdFswXSkuc2V0KFxuICAgICAgZmlsZS5jb250ZW50LnN1YmFycmF5KGZpbGUucG9zaXRpb24yLCBlbmRPZkxpbmUpLFxuICAgICk7XG5cbiAgICBsYXN0WzBdID0gZmlyc3RbMF0gKyBlbmRPZkxpbmUgLSBmaWxlLnBvc2l0aW9uMjtcblxuICAgIHdoaWxlIChidWZmZXJbbGFzdFswXSAtIDFdID09IDMyKSB7XG4gICAgICBsYXN0WzBdID0gbGFzdFswXSAtIDE7XG4gICAgfVxuXG4gICAgZmlsZS5wb3NpdGlvbjIgPSBlbmRPZkxpbmU7XG4gICAgZmlsZS5lb2xuID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldCA9IChkZXNjcmlwdG9yLCBwb2ludGVyLCBsZW5ndGgpID0+IHtcbiAgY29uc3QgZmlsZSA9IGZpbGVzW2Rlc2NyaXB0b3JdO1xuXG4gIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KG1lbW9yeSk7XG5cbiAgaWYgKGZpbGUuc3RkaW4pIHtcbiAgICBpZiAoZmlsZS5wb3NpdGlvbiA+PSBpbnB1dEJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgIGJ1ZmZlcltwb2ludGVyXSA9IDEzO1xuICAgICAgZmlsZS5lb2YgPSB0cnVlO1xuICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xuICAgICAgdGV4X2ZpbmFsX2VuZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWZmZXJbcG9pbnRlcl0gPSBpbnB1dEJ1ZmZlcltmaWxlLnBvc2l0aW9uXS5jaGFyQ29kZUF0KDApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoZmlsZS5kZXNjcmlwdG9yKSB7XG4gICAgICBpZiAocmVhZFN5bmMoZmlsZSwgYnVmZmVyLCBwb2ludGVyLCBsZW5ndGgsIGZpbGUucG9zaXRpb24pID09IDApIHtcbiAgICAgICAgYnVmZmVyW3BvaW50ZXJdID0gMDtcbiAgICAgICAgZmlsZS5lb2YgPSB0cnVlO1xuICAgICAgICBmaWxlLmVvbG4gPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbGUuZW9mID0gdHJ1ZTtcbiAgICAgIGZpbGUuZW9sbiA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgZmlsZS5lb2xuID0gZmFsc2U7XG4gIGlmIChidWZmZXJbcG9pbnRlcl0gPT0gMTApIGZpbGUuZW9sbiA9IHRydWU7XG4gIGlmIChidWZmZXJbcG9pbnRlcl0gPT0gMTMpIGZpbGUuZW9sbiA9IHRydWU7XG5cbiAgZmlsZS5wb3NpdGlvbiA9IGZpbGUucG9zaXRpb24gKyBsZW5ndGg7XG59O1xuXG5leHBvcnQgY29uc3QgcHV0ID0gKGRlc2NyaXB0b3IsIHBvaW50ZXIsIGxlbmd0aCkgPT4ge1xuICBjb25zdCBmaWxlID0gZmlsZXNbZGVzY3JpcHRvcl07XG5cbiAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5KTtcblxuICB3cml0ZVN5bmMoZmlsZSwgYnVmZmVyLCBwb2ludGVyLCBsZW5ndGgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHRleF9maW5hbF9lbmQgPSAoKSA9PiB7XG4gIGlmIChjb25zb2xlQnVmZmVyLmxlbmd0aCkgd3JpdGVUb0NvbnNvbGUoXCJcXG5cIik7XG4gIGlmIChmaW5pc2hlZCkgZmluaXNoZWQucmVzb2x2ZSgpO1xufTtcbiIsICJleHBvcnQgY29uc3QgZ2V0Q3VycmVudE1pbnV0ZXMgPSAoKTogbnVtYmVyID0+IHtcbiAgY29uc3QgZCA9IG5ldyBEYXRlKCk7XG4gIHJldHVybiA2MCAqIChkLmdldEhvdXJzKCkpICsgZC5nZXRNaW51dGVzKCk7XG59O1xuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnREYXkgPSAoKTogbnVtYmVyID0+IChuZXcgRGF0ZSgpKS5nZXREYXRlKCk7XG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudE1vbnRoID0gKCk6IG51bWJlciA9PiAobmV3IERhdGUoKSkuZ2V0TW9udGgoKSArIDE7XG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudFllYXIgPSAoKTogbnVtYmVyID0+IChuZXcgRGF0ZSgpKS5nZXRGdWxsWWVhcigpO1xuIiwgImltcG9ydCAqIGFzIGxpYnJhcnkgZnJvbSBcIi4vbGlicmFyeS5qc1wiO1xuaW1wb3J0ICogYXMgdGltZWJhY2sgZnJvbSBcIi4vdGltZUJhY2sudHNcIjtcblxubGV0IGNvcmVkdW1wOiBVaW50OEFycmF5IHwgdW5kZWZpbmVkO1xubGV0IGNvZGU6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZUluaXQge1xuICBmaWxlTG9hZGVyOiAoZmlsZW5hbWU6IHN0cmluZykgPT4gUHJvbWlzZTxVaW50OEFycmF5PjtcbiAgY29uc29sZT86IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZVJlc3VsdCB7XG4gIGR2aT86IFVpbnQ4QXJyYXk7XG4gIGxvZzogVWludDhBcnJheTtcbn1cblxuZXhwb3J0IGNvbnN0IGNvbXBpbGUgPSBhc3luYyAoXG4gIGlucHV0OiBzdHJpbmcsXG4gIGluaXQ6IENvbXBpbGVJbml0LFxuKTogUHJvbWlzZTxDb21waWxlUmVzdWx0PiA9PiB7XG4gIGNvZGUgPz89IGF3YWl0IGluaXQuZmlsZUxvYWRlcihcInRleC53YXNtXCIpO1xuICBjb3JlZHVtcCA/Pz0gbmV3IFVpbnQ4QXJyYXkoXG4gICAgYXdhaXQgaW5pdC5maWxlTG9hZGVyKFwiY29yZS5kdW1wXCIpLFxuICAgIDAsXG4gICAgbGlicmFyeS5wYWdlcyAqIDY1NTM2LFxuICApO1xuICBsaWJyYXJ5LndyaXRlRmlsZVN5bmMoXCJpbnB1dC50ZXhcIiwgbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGlucHV0KSk7XG5cbiAgLy8gU2V0IHVwIHRoZSB0ZXggd2ViIGFzc2VtYmx5LlxuICBjb25zdCBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtcbiAgICBpbml0aWFsOiBsaWJyYXJ5LnBhZ2VzLFxuICAgIG1heGltdW06IGxpYnJhcnkucGFnZXMsXG4gIH0pO1xuXG4gIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIsIDAsIGxpYnJhcnkucGFnZXMgKiA2NTUzNik7XG4gIGJ1ZmZlci5zZXQoY29yZWR1bXAhLnNsaWNlKDApKTtcblxuICBsaWJyYXJ5LnNldE1lbW9yeShtZW1vcnkuYnVmZmVyKTtcbiAgbGlicmFyeS5zZXRJbnB1dChcIiBpbnB1dC50ZXggXFxuXFxcXGVuZFxcblwiKTtcbiAgbGlicmFyeS5zZXRGaWxlTG9hZGVyKGluaXQuZmlsZUxvYWRlcik7XG4gIGlmIChpbml0LmNvbnNvbGUpIGxpYnJhcnkuc2V0Q29uc29sZShpbml0LmNvbnNvbGUpO1xuXG4gIGNvbnN0IHdhc20gPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShjb2RlISwge1xuICAgIGxpYnJhcnk6IHsgLi4ubGlicmFyeSwgLi4udGltZWJhY2sgfSxcbiAgICBlbnY6IHsgbWVtb3J5IH0sXG4gIH0pO1xuXG4gIC8vIEV4ZWN1dGUgdGhlIHRleCB3ZWIgYXNzZW1ibHkuXG4gIGF3YWl0IGxpYnJhcnkuZXhlY3V0ZUFzeW5jKHdhc20uaW5zdGFuY2UuZXhwb3J0cyk7XG5cbiAgY29uc3QgbG9nID0gbGlicmFyeS5yZWFkRmlsZVN5bmMoXCJpbnB1dC5sb2dcIik7XG4gIHRyeSB7XG4gICAgLy8gRXh0cmFjdCB0aGUgZ2VuZXJhdGVkIGR2aSBmaWxlLlxuICAgIGNvbnN0IGR2aSA9IGxpYnJhcnkucmVhZEZpbGVTeW5jKFwiaW5wdXQuZHZpXCIpO1xuICAgIHJldHVybiB7IGR2aSwgbG9nIH07XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICByZXR1cm4geyBsb2cgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBDbGVhbiB1cCB0aGUgbGlicmFyeSBmb3IgdGhlIG5leHQgcnVuLlxuICAgIGxpYnJhcnkuZGVsZXRlRXZlcnl0aGluZygpO1xuICB9XG59O1xuIiwgIi8qKlxuICogRGVjb2RlIGEgemlwIGZpbGUgYW5kIGV4dHJhY3RzIGl0cyBjb250ZW50cy5cbiAqIEBwYXJhbSB6aXAgdGhlIHppcCBmaWxlIGRhdGEuXG4gKiBAcGFyYW0gb25seU5hbWVzIElmIHRydWUsIG9ubHkgdGhlIG5hbWVzIG9mIHRoZSBmaWxlcyB3aWxsIGJlIHJldHVybmVkLlxuICogQHJldHVybnMgQSByZWNvcmQgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGV4dHJhY3RlZCBmaWxlcywgd2hlcmUgdGhlIGtleXMgYXJlIHRoZSBmaWxlIG5hbWVzIGFuZCB0aGUgdmFsdWVzIGFyZSBlaXRoZXIgdGhlIGZpbGUgZGF0YSBvciBhbiBvYmplY3Qgd2l0aCB0aGUgcHJvcGVydGllcyBgc2l6ZWAgYW5kIGBjc2l6ZWAuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogZGVjb2RlKFxuICB6aXA6IFJlYWRvbmx5PElucHV0VHlwZT4sXG4pOiBBc3luY0dlbmVyYXRvcjxFbnRyeSwgdm9pZCwgdm9pZD4ge1xuICBjb25zdCBidWZmZXIgPSBhd2FpdCBuZXcgUmVzcG9uc2UoemlwKS5hcnJheUJ1ZmZlcigpO1xuXG4gIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTtcblxuICBsZXQgZW9jZCA9IGJ1ZmZlci5ieXRlTGVuZ3RoIC0gNDtcbiAgd2hpbGUgKHZpZXcuZ2V0VWludDMyKGVvY2QsIHRydWUpICE9PSAweDA2MDU0YjUwKSBlb2NkLS07XG5cbiAgbGV0IG8gPSBlb2NkO1xuICBvICs9IDQ7IC8vIHNpZ24gID0gMHgwNjA1NGI1MFxuICBvICs9IDQ7IC8vIGRpc2tzID0gMDtcbiAgY29uc3QgY251ID0gdmlldy5nZXRVaW50MTYobywgdHJ1ZSk7XG4gIG8gKz0gMjtcbiAgLy8gICBjb25zdCBjbnQgPSByZWFkVXNob3J0KGRhdGEsIG8pO1xuICBvICs9IDI7XG5cbiAgLy8gICBjb25zdCBjc2l6ZSA9IHJlYWRVaW50KGRhdGEsIG8pO1xuICBvICs9IDQ7XG4gIGNvbnN0IGNvZmZzID0gdmlldy5nZXRVaW50MzIobywgdHJ1ZSk7XG4gIG8gKz0gNDtcblxuICBvID0gY29mZnM7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY251OyBpKyspIHtcbiAgICAvLyBjb25zdCBzaWduID0gcmVhZFVpbnQoZGF0YSwgbyk7XG4gICAgbyArPSA0O1xuICAgIG8gKz0gNDsgLy8gdmVyc2lvbnM7XG4gICAgbyArPSA0OyAvLyBmbGFnICsgY29tcHJcbiAgICBvICs9IDQ7IC8vIHRpbWVcblxuICAgIC8vIGNvbnN0IGNyYzMyID0gcmVhZFVpbnQoZGF0YSwgbyk7XG4gICAgbyArPSA0O1xuICAgIGNvbnN0IGNzaXplID0gdmlldy5nZXRVaW50MzIobywgdHJ1ZSk7XG4gICAgbyArPSA0O1xuICAgIGNvbnN0IHVzaXplID0gdmlldy5nZXRVaW50MzIobywgdHJ1ZSk7XG4gICAgbyArPSA0O1xuXG4gICAgY29uc3QgbmwgPSB2aWV3LmdldFVpbnQxNihvLCB0cnVlKTtcbiAgICBvICs9IDI7XG4gICAgY29uc3QgZWwgPSB2aWV3LmdldFVpbnQxNihvLCB0cnVlKTtcbiAgICBvICs9IDI7XG4gICAgY29uc3QgY2wgPSB2aWV3LmdldFVpbnQxNihvLCB0cnVlKTtcbiAgICBvICs9IDI7XG4gICAgbyArPSA4OyAvLyBkaXNrLCBhdHRyaWJzXG5cbiAgICBjb25zdCByb2ZmID0gdmlldy5nZXRVaW50MzIobywgdHJ1ZSk7XG4gICAgbyArPSA0O1xuICAgIG8gKz0gbmwgKyBlbCArIGNsO1xuXG4gICAgeWllbGQgcmVhZExvY2FsKHZpZXcsIHJvZmYsIGNzaXplLCB1c2l6ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRyeSB7XG4gIG5hbWU6IHN0cmluZztcbiAgY3NpemU6IG51bWJlcjtcbiAgdXNpemU6IG51bWJlcjtcbiAgYXJyYXlCdWZmZXI6ICgpID0+IFByb21pc2U8QXJyYXlCdWZmZXI+O1xuICBmaWxlOiAoKSA9PiBQcm9taXNlPEZpbGU+O1xuICB0ZXh0OiAoKSA9PiBQcm9taXNlPHN0cmluZz47XG59XG5cbmV4cG9ydCB0eXBlIElucHV0VHlwZSA9IEJ1ZmZlclNvdXJjZSB8IEJsb2IgfCBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5PjtcblxuY29uc3QgcmVhZExvY2FsID0gKFxuICB2aWV3OiBSZWFkb25seTxEYXRhVmlldz4sXG4gIG86IG51bWJlcixcbiAgY3NpemU6IG51bWJlcixcbiAgdXNpemU6IG51bWJlcixcbik6IEVudHJ5ID0+IHtcbiAgLy8gICBjb25zdCBzaWduID0gcmVhZFVpbnQoZGF0YSwgbyk7XG4gIG8gKz0gNDtcbiAgLy8gICBjb25zdCB2ZXIgPSByZWFkVXNob3J0KGRhdGEsIG8pO1xuICBvICs9IDI7XG4gIC8vICAgY29uc3QgZ3BmbGcgPSByZWFkVXNob3J0KGRhdGEsIG8pO1xuICBvICs9IDI7XG4gIC8vaWYoKGdwZmxnJjgpIT0wKSB0aHJvdyBcInVua25vd24gc2l6ZXNcIjtcbiAgY29uc3QgY21wciA9IHZpZXcuZ2V0VWludDE2KG8sIHRydWUpO1xuICBvICs9IDI7XG5cbiAgLy8gICBjb25zdCB0aW1lID0gcmVhZFVpbnQoZGF0YSwgbyk7XG4gIG8gKz0gNDtcblxuICAvLyAgIGNvbnN0IGNyYzMyID0gcmVhZFVpbnQoZGF0YSwgbyk7XG4gIG8gKz0gNDtcbiAgLy92YXIgY3NpemUgPSByZWFkVWludChkYXRhLCBvKTsgIG8rPTQ7XG4gIC8vdmFyIHVzaXplID0gcmVhZFVpbnQoZGF0YSwgbyk7ICBvKz00O1xuICBvICs9IDg7XG5cbiAgY29uc3QgbmxlbiA9IHZpZXcuZ2V0VWludDE2KG8sIHRydWUpO1xuICBvICs9IDI7XG4gIGNvbnN0IGVsZW4gPSB2aWV3LmdldFVpbnQxNihvLCB0cnVlKTtcbiAgbyArPSAyO1xuICBjb25zdCBuYW1lID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKFxuICAgIG5ldyBVaW50OEFycmF5KHZpZXcuYnVmZmVyLCB2aWV3LmJ5dGVPZmZzZXQgKyBvLCBubGVuKSxcbiAgKTtcbiAgbyArPSBubGVuOyAvL2NvbnNvbGUubG9nKG5hbWUpO1xuICBvICs9IGVsZW47XG5cbiAgY29uc3QgZmlsZSA9IG5ldyBVaW50OEFycmF5KHZpZXcuYnVmZmVyLCB2aWV3LmJ5dGVPZmZzZXQgKyBvLCBjc2l6ZSk7XG4gIGlmIChjbXByID09IDApIHtcbiAgICByZXR1cm4gbWFrZUVudHJ5KG5hbWUsIGNzaXplLCB1c2l6ZSwgZmlsZSwgdHJ1ZSk7XG4gIH0gZWxzZSBpZiAoY21wciA9PSA4KSB7XG4gICAgcmV0dXJuIG1ha2VFbnRyeShuYW1lLCBjc2l6ZSwgdXNpemUsIGZpbGUsIGZhbHNlKTtcbiAgfSBlbHNlIHRocm93IFwidW5rbm93biBjb21wcmVzc2lvbiBtZXRob2Q6IFwiICsgY21wcjtcbn07XG5cbmNvbnN0IG1ha2VFbnRyeSA9IChcbiAgbmFtZTogc3RyaW5nLFxuICBjc2l6ZTogbnVtYmVyLFxuICB1c2l6ZTogbnVtYmVyLFxuICBjb21wcmVzc2VkOiBVaW50OEFycmF5LFxuICBub0NvbXByZXNzaW9uOiBib29sZWFuLFxuKTogRW50cnkgPT4ge1xuICBpZiAobm9Db21wcmVzc2lvbikge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lLFxuICAgICAgY3NpemUsXG4gICAgICB1c2l6ZSxcbiAgICAgIGFycmF5QnVmZmVyOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoY29tcHJlc3NlZCksXG4gICAgICBmaWxlOiAoKSA9PiBQcm9taXNlLnJlc29sdmUobmV3IEZpbGUoW2NvbXByZXNzZWRdLCBuYW1lKSksXG4gICAgICB0ZXh0OiAoKSA9PiBQcm9taXNlLnJlc29sdmUobmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGNvbXByZXNzZWQpKSxcbiAgICB9O1xuICB9XG5cbiAgbGV0IGRlY29tcHJlc3NlZDogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IGRlY29tcHJlc3MgPSBhc3luYyAoKSA9PiB7XG4gICAgZGVjb21wcmVzc2VkID8/PSBhd2FpdCBpbmZsYXRlUmF3KGNvbXByZXNzZWQpO1xuICAgIHJldHVybiBkZWNvbXByZXNzZWQ7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lLFxuICAgIGNzaXplLFxuICAgIHVzaXplLFxuICAgIGFycmF5QnVmZmVyOiBkZWNvbXByZXNzLFxuICAgIGZpbGU6IGFzeW5jICgpID0+IG5ldyBGaWxlKFthd2FpdCBkZWNvbXByZXNzKCldLCBuYW1lKSxcbiAgICB0ZXh0OiBhc3luYyAoKSA9PiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoYXdhaXQgZGVjb21wcmVzcygpKSxcbiAgfTtcbn07XG5cbmludGVyZmFjZSBGaWxlSW5aaXAge1xuICBjcHI6IGJvb2xlYW47XG4gIHVzaXplOiBudW1iZXI7XG4gIGNyYzogbnVtYmVyO1xuICBmaWxlOiBVaW50OEFycmF5O1xufVxuXG4vKipcbiAqIENvbXByZXNzZXMgYW4gb2JqZWN0IHdoZXJlIHRoZSBrZXlzIHJlcHJlc2VudCBmaWxlIG5hbWVzIGFuZCB0aGUgdmFsdWVzIHJlcHJlc2VudCBkYXRhLCBhbmQgY3JlYXRlcyBhIHppcCBmaWxlLlxuICpcbiAqIEBwYXJhbSBmaWxlcyAtIFRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgZGF0YSB0byBiZSBjb21wcmVzc2VkLlxuICogQHBhcmFtIG5vQ29tcHJlc3Npb24gLSBPcHRpb25hbC4gSWYgc2V0IHRvIHRydWUsIGNvbXByZXNzaW9uIHdpbGwgYmUgZGlzYWJsZWQuIERlZmF1bHQgaXMgZmFsc2UuXG4gKiBAcmV0dXJucyBUaGUgY29tcHJlc3NlZCBkYXRhXG4gKi9cbmV4cG9ydCBjb25zdCBlbmNvZGUgPSBhc3luYyAoXG4gIGZpbGVzOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBJbnB1dFR5cGU+PixcbiAgbm9Db21wcmVzc2lvbj86IGJvb2xlYW4sXG4pOiBQcm9taXNlPEFycmF5QnVmZmVyPiA9PiB7XG4gIG5vQ29tcHJlc3Npb24gPz89IGZhbHNlO1xuICBjb25zdCB6cGQ6IFJlY29yZDxzdHJpbmcsIFByb21pc2U8RmlsZUluWmlwPj4gPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgWy4uLk9iamVjdC5lbnRyaWVzKGZpbGVzKV0ubWFwKFxuICAgICAgKFtrZXksIGJ1Zl0pID0+IHtcbiAgICAgICAgY29uc3QgY3ByID0gIW5vTmVlZChrZXkpICYmICFub0NvbXByZXNzaW9uO1xuICAgICAgICBjb25zdCBmaWxlID0gKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBidWZmZXIgPSBidWYgaW5zdGFuY2VvZiBVaW50OEFycmF5XG4gICAgICAgICAgICA/IGJ1ZlxuICAgICAgICAgICAgOiBuZXcgVWludDhBcnJheShhd2FpdCBuZXcgUmVzcG9uc2UoYnVmKS5hcnJheUJ1ZmZlcigpKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3ByOiBjcHIsXG4gICAgICAgICAgICB1c2l6ZTogYnVmZmVyLmJ5dGVMZW5ndGgsXG4gICAgICAgICAgICBjcmM6IGNyYyhidWZmZXIsIDAsIGJ1ZmZlci5sZW5ndGgpLFxuICAgICAgICAgICAgZmlsZTogKGNwciA/IGF3YWl0IGRlZmxhdGVSYXcoYnVmKSA6IGJ1ZmZlciksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSkoKTtcblxuICAgICAgICByZXR1cm4gW2tleSwgZmlsZV07XG4gICAgICB9LFxuICAgICksXG4gICk7XG5cbiAgbGV0IHRvdCA9IDA7XG4gIGZvciAoY29uc3QgcCBpbiB6cGQpIHtcbiAgICB0b3QgKz0gKGF3YWl0IHpwZFtwXSkuZmlsZS5sZW5ndGggKyAzMCArIDQ2ICtcbiAgICAgIDIgKiAobmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHApKS5sZW5ndGg7XG4gIH1cbiAgdG90ICs9IDIyO1xuXG4gIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKHRvdCkpO1xuICBsZXQgbyA9IDA7XG4gIGNvbnN0IGZvZiA9IFtdO1xuXG4gIGZvciAoY29uc3QgcCBpbiB6cGQpIHtcbiAgICBjb25zdCBmaWxlID0genBkW3BdO1xuICAgIGZvZi5wdXNoKG8pO1xuICAgIG8gPSB3cml0ZUhlYWRlcih2aWV3LCBvLCBwLCBhd2FpdCBmaWxlLCAwKTtcbiAgfVxuICBsZXQgaSA9IDA7XG4gIGNvbnN0IGlvZmYgPSBvO1xuICBmb3IgKGNvbnN0IHAgaW4genBkKSB7XG4gICAgY29uc3QgZmlsZSA9IHpwZFtwXTtcbiAgICBmb2YucHVzaChvKTtcbiAgICBvID0gd3JpdGVIZWFkZXIodmlldywgbywgcCwgYXdhaXQgZmlsZSwgMSwgZm9mW2krK10pO1xuICB9XG4gIGNvbnN0IGNzaXplID0gbyAtIGlvZmY7XG5cbiAgdmlldy5zZXRVaW50MzIobywgMHgwNjA1NGI1MCwgdHJ1ZSk7XG4gIG8gKz0gNDtcbiAgbyArPSA0OyAvLyBkaXNrc1xuICB2aWV3LnNldFVpbnQzMihvLCBpLCB0cnVlKTtcbiAgbyArPSAyO1xuICB2aWV3LnNldFVpbnQzMihvLCBpLCB0cnVlKTtcbiAgbyArPSAyOyAvLyBudW1iZXIgb2YgYyBkIHJlY29yZHNcbiAgdmlldy5zZXRVaW50MzIobywgY3NpemUsIHRydWUpO1xuICBvICs9IDQ7XG4gIHZpZXcuc2V0VWludDMyKG8sIGlvZmYsIHRydWUpO1xuICBvICs9IDQ7XG4gIG8gKz0gMjtcbiAgcmV0dXJuIHZpZXcuYnVmZmVyO1xufTtcblxuLyoqIG5vIG5lZWQgdG8gY29tcHJlc3MgLlBORywgLlpJUCwgLkpQRUcgLi4uLiovXG5jb25zdCBub05lZWQgPSAoZm46IHN0cmluZykgPT4ge1xuICBjb25zdCBleHQgPSBmbi5zcGxpdChcIi5cIikucG9wKCkhLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBbXCJwbmdcIiwgXCJqcGdcIiwgXCJqcGVnXCIsIFwiemlwXCJdLmluY2x1ZGVzKGV4dCk7XG59O1xuXG5jb25zdCB3cml0ZUhlYWRlciA9IChcbiAgdmlldzogRGF0YVZpZXcsXG4gIG86IG51bWJlcixcbiAgcDogc3RyaW5nLFxuICBvYmo6IEZpbGVJblppcCxcbiAgdDogMCB8IDEsXG4gIHJvZmY/OiBudW1iZXIsXG4pID0+IHtcbiAgY29uc3QgZmlsZSA9IG9iai5maWxlO1xuXG4gIHZpZXcuc2V0VWludDMyKG8sIHQgPT0gMCA/IDB4MDQwMzRiNTAgOiAweDAyMDE0YjUwLCB0cnVlKTtcbiAgbyArPSA0OyAvLyBzaWduXG4gIGlmICh0ID09IDEpIG8gKz0gMjsgLy8gdmVyIG1hZGUgYnlcbiAgdmlldy5zZXRVaW50MTYobywgMjAsIHRydWUpO1xuICBvICs9IDI7IC8vIHZlclxuICB2aWV3LnNldFVpbnQxNihvLCAwLCB0cnVlKTtcbiAgbyArPSAyOyAvLyBnZmxpcFxuICB2aWV3LnNldFVpbnQxNihvLCBvYmouY3ByID8gOCA6IDAsIHRydWUpO1xuICBvICs9IDI7IC8vIGNtcHJcblxuICB2aWV3LnNldFVpbnQzMihvLCAwLCB0cnVlKTtcbiAgbyArPSA0OyAvLyB0aW1lXG4gIHZpZXcuc2V0VWludDMyKG8sIG9iai5jcmMsIHRydWUpO1xuICBvICs9IDQ7IC8vIGNyYzMyXG4gIHZpZXcuc2V0VWludDMyKG8sIGZpbGUubGVuZ3RoLCB0cnVlKTtcbiAgbyArPSA0OyAvLyBjc2l6ZVxuICB2aWV3LnNldFVpbnQzMihvLCBvYmoudXNpemUsIHRydWUpO1xuICBvICs9IDQ7IC8vIHVzaXplXG5cbiAgY29uc3QgcEJ1ZiA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShwKTtcbiAgdmlldy5zZXRVaW50MTYobywgcEJ1Zi5sZW5ndGgsIHRydWUpO1xuICBvICs9IDI7IC8vIG5sZW5cbiAgdmlldy5zZXRVaW50MTYobywgMCwgdHJ1ZSk7XG4gIG8gKz0gMjsgLy8gZWxlblxuXG4gIGlmICh0ID09IDEpIHtcbiAgICBvICs9IDI7IC8vIGNvbW1lbnQgbGVuZ3RoXG4gICAgbyArPSAyOyAvLyBkaXNrIG51bWJlclxuICAgIG8gKz0gNjsgLy8gYXR0cmlidXRlc1xuICAgIHZpZXcuc2V0VWludDMyKG8sIHJvZmYhLCB0cnVlKTtcbiAgICBvICs9IDQ7IC8vIHVzaXplXG4gIH1cbiAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkodmlldy5idWZmZXIsdmlldy5ieXRlT2Zmc2V0KTtcbiAgYnVmZmVyLnNldChwQnVmLCBvKTtcbiAgbyArPSBwQnVmLmxlbmd0aDtcbiAgaWYgKHQgPT0gMCkge1xuICAgIGJ1ZmZlci5zZXQoZmlsZSwgbyk7XG4gICAgbyArPSBmaWxlLmxlbmd0aDtcbiAgfVxuICByZXR1cm4gbztcbn07XG5cbmNvbnN0IGNyYyA9IChiOiBVaW50OEFycmF5LCBvOiBudW1iZXIsIGw6IG51bWJlcikgPT5cbiAgdXBkYXRlKDB4ZmZmZmZmZmYsIGIsIG8sIGwpIF4gMHhmZmZmZmZmZjtcblxuY29uc3QgdGFibGUgPSAoKCkgPT4ge1xuICBjb25zdCB0YWIgPSBuZXcgVWludDMyQXJyYXkoMjU2KTtcbiAgZm9yIChsZXQgbiA9IDA7IG4gPCAyNTY7IG4rKykge1xuICAgIGxldCBjID0gbjtcbiAgICBmb3IgKGxldCBrID0gMDsgayA8IDg7IGsrKykge1xuICAgICAgaWYgKGMgJiAxKSBjID0gMHhlZGI4ODMyMCBeIChjID4+PiAxKTtcbiAgICAgIGVsc2UgYyA9IGMgPj4+IDE7XG4gICAgfVxuICAgIHRhYltuXSA9IGM7XG4gIH1cbiAgcmV0dXJuIHRhYjtcbn0pKCk7XG5cbmNvbnN0IHVwZGF0ZSA9IChjOiBudW1iZXIsIGJ1ZjogVWludDhBcnJheSwgb2ZmOiBudW1iZXIsIGxlbjogbnVtYmVyKSA9PiB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjID0gdGFibGVbKGMgXiBidWZbb2ZmICsgaV0pICYgMHhmZl0gXiAoYyA+Pj4gOCk7XG4gIH1cbiAgcmV0dXJuIGM7XG59O1xuY29uc3QgaW5mbGF0ZVJhdyA9IChcbiAgYnVmZmVyOiBCbG9iIHwgQnVmZmVyU291cmNlIHwgUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4sXG4pID0+XG4gIG5ldyBSZXNwb25zZShcbiAgICBuZXcgUmVzcG9uc2UoYnVmZmVyKS5ib2R5IS5waXBlVGhyb3VnaChcbiAgICAgIG5ldyBEZWNvbXByZXNzaW9uU3RyZWFtKFwiZGVmbGF0ZS1yYXdcIiksXG4gICAgKSxcbiAgKS5hcnJheUJ1ZmZlcigpO1xuXG5jb25zdCBkZWZsYXRlUmF3ID0gYXN5bmMgKFxuICBidWZmZXI6IEJsb2IgfCBCdWZmZXJTb3VyY2UgfCBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5PixcbikgPT5cbiAgbmV3IFVpbnQ4QXJyYXkoXG4gICAgYXdhaXQgbmV3IFJlc3BvbnNlKFxuICAgICAgbmV3IFJlc3BvbnNlKGJ1ZmZlcikuYm9keSEucGlwZVRocm91Z2goXG4gICAgICAgIG5ldyBDb21wcmVzc2lvblN0cmVhbShcImRlZmxhdGUtcmF3XCIpLFxuICAgICAgKSxcbiAgICApLmFycmF5QnVmZmVyKCksXG4gICk7XG4iLCAiZXhwb3J0IGNvbnN0IGZpbmRMYXRlc3RDYWNoZSA9IGFzeW5jIChcbiAgcmVxdWVzdDogUmVxdWVzdCxcbiAgb3B0aW9ucz86IENhY2hlUXVlcnlPcHRpb25zLFxuKTogUHJvbWlzZTxSZXNwb25zZSB8IHVuZGVmaW5lZD4gPT4ge1xuICBjb25zdCBjYWNoZU5hbWVzID0gYXdhaXQgZ2xvYmFsVGhpcy5jYWNoZXMua2V5cygpO1xuXG4gIGZvciAoY29uc3QgZGF0ZSBvZiBjYWNoZU5hbWVzLnNvcnQoKS5yZXZlcnNlKCkpIHtcbiAgICBjb25zdCBjYWNoZSA9IGF3YWl0IGNhY2hlcy5vcGVuKGRhdGUpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGNhY2hlLm1hdGNoKHJlcXVlc3QsIG9wdGlvbnMpO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzYXZlQ2FjaGUgPSBhc3luYyAocmVxdWVzdDogUmVxdWVzdCwgcmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gIGNvbnN0IGNhY2hlTmFtZXMgPSAoYXdhaXQgZ2xvYmFsVGhpcy5jYWNoZXMua2V5cygpKS5maWx0ZXIoKG5hbWUpID0+XG4gICAgbmFtZS5zdGFydHNXaXRoKFwiYXBpXCIpXG4gICk7XG4gIGNvbnN0IGNhY2hlTmFtZSA9IGNhY2hlTmFtZXMuc29ydCgpLnJldmVyc2UoKS5hdCgwKTtcbiAgaWYgKCFjYWNoZU5hbWUpIHJldHVybjtcbiAgY29uc3QgY2FjaGUgPSBhd2FpdCBjYWNoZXMub3BlbihjYWNoZU5hbWUpO1xuICBhd2FpdCBjYWNoZS5wdXQocmVxdWVzdCwgcmVzcG9uc2UuY2xvbmUoKSk7XG59O1xuIiwgIi8qKiBUaGUgbWF0cml4IGlzIGluIHRoZSBmb3JtYXQgb2YgYW4gc3ZnIHRyYW5zZm9ybSBtYXRyaXguICBJbiBvdGhlciB3b3JkcyBpdCBpcyB0aGUgbWF0cml4XG4gKlxuICogW1sgdmFsdWVzWzBdLCB2YWx1ZXNbMl0sIHZhbHVlc1s0XSBdLFxuICpcbiAqICBbIHZhbHVlc1sxXSwgdmFsdWVzWzNdLCB2YWx1ZXNbNV0gXSxcbiAqXG4gKiAgWyAgICAgMCAgICAsICAgICAwICAgICwgICAgIDEgICAgIF1dXG4gKi9cbmV4cG9ydCB0eXBlIE1hdHJpeCA9IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IGlkZW50aWZ5TWF0cml4OiBNYXRyaXggPSBbMSwgMCwgMCwgMSwgMCwgMF07XG5cbmV4cG9ydCBjb25zdCBpc0lkZW50aXR5ID0gKFxuICBtOiBNYXRyaXgsXG4pOiBib29sZWFuID0+IChNYXRoLmFicyhtWzBdIC0gMSkgPCBOdW1iZXIuRVBTSUxPTiAmJlxuICBNYXRoLmFicyhtWzFdKSA8IE51bWJlci5FUFNJTE9OICYmXG4gIE1hdGguYWJzKG1bMl0pIDwgTnVtYmVyLkVQU0lMT04gJiYgTWF0aC5hYnMobVszXSAtIDEpIDwgTnVtYmVyLkVQU0lMT04gJiZcbiAgTWF0aC5hYnMobVs0XSkgPCBOdW1iZXIuRVBTSUxPTiAmJiBNYXRoLmFicyhtWzVdKSA8IE51bWJlci5FUFNJTE9OKTtcblxuLy8gQSAqIEJcbmV4cG9ydCBjb25zdCBtdWx0aXBseSA9IChBOiBNYXRyaXgsIEI6IE1hdHJpeCk6IE1hdHJpeCA9PiBbXG4gIEFbMF0gKiBCWzBdICsgQVsyXSAqIEJbMV0sXG4gIEFbMV0gKiBCWzBdICsgQVszXSAqIEJbMV0sXG4gIEFbMF0gKiBCWzJdICsgQVsyXSAqIEJbM10sXG4gIEFbMV0gKiBCWzJdICsgQVszXSAqIEJbM10sXG4gIEFbMF0gKiBCWzRdICsgQVsyXSAqIEJbNV0gKyBBWzRdLFxuICBBWzFdICogQls0XSArIEFbM10gKiBCWzVdICsgQVs1XSxcbl07XG5cbi8vIHRoaXMgPSB0aGlzICogW1t4LCAwLCAwXSwgWzAsIHksIDBdLCBbMCwgMCwgMV1dXG5leHBvcnQgY29uc3Qgc2NhbGUgPSAoXG4gIG06IE1hdHJpeCxcbiAgeDogbnVtYmVyLFxuICB5OiBudW1iZXIsXG4pOiBNYXRyaXggPT4gW21bMF0gKiB4LCBtWzFdICogeCwgbVsyXSAqIHksIG1bM10gKiB5LCBtWzRdLCBtWzVdXTtcblxuLy8gdGhpcyA9IHRoaXMgKiBbWzEsIDAsIHhdLCBbMCwgMSwgeV0sIFswLCAwLCAxXV1cbmV4cG9ydCBjb25zdCB0cmFuc2xhdGUgPSAobTogTWF0cml4LCB4OiBudW1iZXIsIHk6IG51bWJlcik6IE1hdHJpeCA9PiBbXG4gIG1bMF0sXG4gIG1bMV0sXG4gIG1bMl0sXG4gIG1bM10sXG4gIG1bMF0gKiB4ICsgbVsyXSAqIHkgKyBtWzRdLFxuICBtWzFdICogeCArIG1bM10gKiB5ICsgbVs1XSxcbl07XG5cbi8vIHRoaXMgPSB0aGlzICogW1tjb3MoeCksIHNpbih4KSwgMF0sIFstc2luKHgpLCBjb3MoeCksIDBdLCBbMCwgMCwgMV1dXG4vLyB4IGlzIGluIGRlZ3JlZXNcbmV4cG9ydCBjb25zdCByb3RhdGUgPSAobTogTWF0cml4LCB4OiBudW1iZXIpOiBNYXRyaXggPT4ge1xuICBjb25zdCByYWQgPSB4ICogTWF0aC5QSSAvIDE4MDtcbiAgY29uc3QgYyA9IE1hdGguY29zKHJhZCk7XG4gIGNvbnN0IHMgPSBNYXRoLnNpbihyYWQpO1xuICByZXR1cm4gW1xuICAgIG1bMF0gKiBjICsgbVsyXSAqIHMsXG4gICAgbVsxXSAqIGMgKyBtWzNdICogcyxcbiAgICAtbVswXSAqIHMgKyBtWzJdICogYyxcbiAgICAtbVsxXSAqIHMgKyBtWzNdICogYyxcbiAgICBtWzRdLFxuICAgIG1bNV0sXG4gIF07XG59O1xuXG5leHBvcnQgY29uc3QgdG9TVkdUcmFuc2Zvcm0gPSAobTogTWF0cml4KTogc3RyaW5nID0+XG4gIGlzSWRlbnRpdHkobSkgPyBcIlwiIDogYHRyYW5zZm9ybT1cIm1hdHJpeCgke20uam9pbihcIiBcIil9KVwiYDtcbiIsICJleHBvcnQgY29uc3QgdG9EYXRhVVJMID0gKGJsb2I6IEJsb2IpID0+IHtcbiAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlKSA9PlxuICAgIGZpbGVSZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShmaWxlUmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpXG4gICk7XG4gIGZpbGVSZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcbiAgcmV0dXJuIHByb21pc2U7XG59O1xuIiwgImltcG9ydCB7IHRvRGF0YVVSTCB9IGZyb20gXCIuL3RvRGF0YVVSTC50c1wiO1xuXG5leHBvcnQgY29uc3QgbWFrZUZvbnRDU1MgPSBhc3luYyAoXG4gIGZvbnRGaWxlbmFtZXM6IEl0ZXJhYmxlPHN0cmluZz4sXG4gIGZpbGVMb2FkZXI6IChmaWxlbmFtZTogc3RyaW5nKSA9PiBQcm9taXNlPFVpbnQ4QXJyYXk+LFxuKTogUHJvbWlzZTxzdHJpbmc+ID0+XG4gIChhd2FpdCBQcm9taXNlLmFsbChcbiAgICBbLi4uZm9udEZpbGVuYW1lc10uc29ydCgpLm1hcChhc3luYyAoZm9udEZpbGVuYW1lKSA9PiBbXG4gICAgICBmb250RmlsZW5hbWUuc2xpY2UoMCwgLTQpLFxuICAgICAgYXdhaXQgdG9EYXRhVVJMKFxuICAgICAgICBuZXcgQmxvYihbYXdhaXQgZmlsZUxvYWRlcihmb250RmlsZW5hbWUpXSwgeyB0eXBlOiBcImZvbnQvdHJ1ZXR5cGVcIiB9KSxcbiAgICAgICksXG4gICAgXSksXG4gICkpLm1hcCgoW2ssIGZvbnRdKSA9PlxuICAgIGBAZm9udC1mYWNle2ZvbnQtZmFtaWx5OiR7a307c3JjOmxvY2FsKCR7a30pLHVybCgke2ZvbnR9KWZvcm1hdChcInRydWV0eXBlXCIpO30uJHtrfXtmb250LWZhbWlseToke2t9O31gXG4gICkuam9pbihcIlwiKTtcbiIsICJpbXBvcnQge1xuICBpZGVudGlmeU1hdHJpeCxcbiAgTWF0cml4LFxuICB0b1NWR1RyYW5zZm9ybSxcbn0gZnJvbSBcIi4vZHZpL3NwZWNpYWxzL21hdHJpeC50c1wiO1xuaW1wb3J0IHtcbiAgQ29sb3IsXG4gIFBhcGVyc2l6ZSxcbiAgUGFyc2VJbmZvLFxuICBQUyxcbiAgUFNGaWxlLFxuICBSdWxlLFxuICBTcGVjaWFsLFxuICBTVkcsXG4gIFRleENvbG9yLFxuICBUZXh0LFxufSBmcm9tIFwiLi9kdmkvbW9kLnRzXCI7XG5pbXBvcnQgeyBtYWtlRm9udENTUyB9IGZyb20gXCIuL21ha2VGb250Q1NTLnRzXCI7XG5cbi8qKiBPcHRpb25zIGZvciBjb252ZXJ0aW5nIHRvIEhUTUwuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnRUb0hUTUxJbml0IHtcbiAgLyoqIFNldCB0byBgdHJ1ZWAgdG8gZ2V0IHN0YW5kYWxvbmUgU1ZHLiAgKi9cbiAgc3ZnPzogYm9vbGVhbjtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGZpbGVMb2FkZXI6IChmaWxlbmFtZTogc3RyaW5nKSA9PiBQcm9taXNlPFVpbnQ4QXJyYXk+O1xufVxuXG5leHBvcnQgY29uc3QgY29udmVydFRvSFRNTCA9IGFzeW5jIChcbiAgY29tbWFuZHM6IEl0ZXJhYmxlPFxuICAgIHwgVGV4dFxuICAgIHwgUnVsZVxuICAgIHwgU3BlY2lhbFxuICAgIHwgUGFyc2VJbmZvXG4gICAgfCBQU0ZpbGVcbiAgICB8IFBTXG4gICAgfCBTVkdcbiAgICB8IFBhcGVyc2l6ZVxuICAgIHwgQ29sb3JcbiAgPixcbiAgaW5pdDogQ29udmVydFRvSFRNTEluaXQsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBsZXQgcG9pbnRzUGVyRHZpVW5pdCA9IDA7XG5cbiAgbGV0IGNvbG9yOiBUZXhDb2xvciA9IFwiYmxhY2tcIjtcbiAgbGV0IGRlcHRoID0gaW5pdC5zdmcgPyAxIDogMDtcbiAgbGV0IG1hdHJpeDogTWF0cml4ID0gWy4uLmlkZW50aWZ5TWF0cml4XTtcbiAgbGV0IGZvbnROYW1lID0gXCJcIjtcbiAgbGV0IGZvbnRTaXplID0gMDtcbiAgbGV0IGh0bWwgPSBcIlwiO1xuXG4gIGxldCBsYXN0VGV4dFYgPSAwO1xuICBsZXQgbGFzdFRleHRSaWdodCA9IDA7XG5cbiAgbGV0IHBhcGVyd2lkdGggPSAwO1xuICBsZXQgcGFwZXJoZWlnaHQgPSAwO1xuXG4gIGNvbnN0IHVzZWRGb250RmlsZW5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgZm9yIChjb25zdCBjb21tYW5kIG9mIGNvbW1hbmRzKSB7XG4gICAgc3dpdGNoIChjb21tYW5kLnR5cGUpIHtcbiAgICAgIGNhc2UgXCJ0ZXh0XCI6IHtcbiAgICAgICAgbGV0IHRleHRXaWR0aCA9IDA7XG4gICAgICAgIGxldCB0ZXh0SGVpZ2h0ID0gMDtcblxuICAgICAgICBsZXQgaHRtbFRleHQgPSBcIlwiO1xuXG4gICAgICAgIGZvciAoY29uc3QgYyBvZiBjb21tYW5kLnRleHQpIHtcbiAgICAgICAgICBjb25zdCBjb2RlUG9pbnQgPSBjLmNvZGVQb2ludEF0KDApID8/IDA7XG4gICAgICAgICAgY29uc3QgbWV0cmljcyA9IGNvbW1hbmQuZm9udC5tZXRyaWNzLmNoYXJhY3RlcnMuYXQoY29kZVBvaW50KTtcbiAgICAgICAgICBpZiAobWV0cmljcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgQ291bGQgbm90IGZpbmQgZm9udCBtZXRyaWMgZm9yICR7Y29kZVBvaW50fWApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRleHRXaWR0aCArPSBtZXRyaWNzLndpZHRoO1xuICAgICAgICAgIHRleHRIZWlnaHQgPSBNYXRoLm1heCh0ZXh0SGVpZ2h0LCBtZXRyaWNzLmhlaWdodCk7XG5cbiAgICAgICAgICBodG1sVGV4dCArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgcmlkaWN1bG91cy5cbiAgICAgICAgICAgIChjb2RlUG9pbnQgPj0gMCAmJiBjb2RlUG9pbnQgPD0gOSlcbiAgICAgICAgICAgICAgPyAxNjEgKyBjb2RlUG9pbnRcbiAgICAgICAgICAgICAgOiAoY29kZVBvaW50ID49IDEwICYmIGNvZGVQb2ludCA8PSAxOSlcbiAgICAgICAgICAgICAgPyAxNzMgKyBjb2RlUG9pbnQgLSAxMFxuICAgICAgICAgICAgICA6IChjb2RlUG9pbnQgPT09IDIwKVxuICAgICAgICAgICAgICA/IDg3MjkgLy8gTyBSTExZPyFcbiAgICAgICAgICAgICAgOiAoY29kZVBvaW50ID49IDIxICYmIGNvZGVQb2ludCA8PSAzMilcbiAgICAgICAgICAgICAgPyAxODQgKyBjb2RlUG9pbnQgLSAyMVxuICAgICAgICAgICAgICA6IChjb2RlUG9pbnQgPT09IDEyNylcbiAgICAgICAgICAgICAgPyAxOTZcbiAgICAgICAgICAgICAgOiBjb2RlUG9pbnQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRmbSBpcyBiYXNlZCBvbiAxLzJeMTYgcHQgdW5pdHMsIHJhdGhlciB0aGFuIGR2aXVuaXQgd2hpY2ggaXMgMTBe4oiSNyBtZXRlcnNcbiAgICAgICAgY29uc3QgZHZpVW5pdHNQZXJGb250VW5pdCA9IGNvbW1hbmQuZm9udC5tZXRyaWNzLmRlc2lnbl9zaXplIC9cbiAgICAgICAgICAxMDQ4NTc2LjAgKlxuICAgICAgICAgIDY1NTM2IC8gMTA0ODU3NjtcblxuICAgICAgICBjb25zdCBsZWZ0ID0gY29tbWFuZC5sZWZ0ICogcG9pbnRzUGVyRHZpVW5pdDtcblxuICAgICAgICBjb25zdCB3aWR0aCA9IHRleHRXaWR0aCAqIHBvaW50c1BlckR2aVVuaXQgKiBkdmlVbml0c1BlckZvbnRVbml0O1xuICAgICAgICBjb25zdCBoZWlnaHQgPSB0ZXh0SGVpZ2h0ICogcG9pbnRzUGVyRHZpVW5pdCAqIGR2aVVuaXRzUGVyRm9udFVuaXQ7XG4gICAgICAgIGNvbnN0IHRvcCA9IGNvbW1hbmQudG9wICogcG9pbnRzUGVyRHZpVW5pdDtcblxuICAgICAgICBmb250TmFtZSA9IGNvbW1hbmQuZm9udC5uYW1lO1xuICAgICAgICBmb250U2l6ZSA9IChjb21tYW5kLmZvbnQubWV0cmljcy5kZXNpZ25fc2l6ZSAvIDEwNDg1NzYuMCkgKlxuICAgICAgICAgIGNvbW1hbmQuZm9udC5zY2FsZUZhY3RvciAvIGNvbW1hbmQuZm9udC5kZXNpZ25TaXplO1xuICAgICAgICBjb25zdCB0ZXh0Q29sb3IgPSBbXCIjMDAwXCIsIFwiYmxhY2tcIl0uaW5jbHVkZXMoY29sb3IpXG4gICAgICAgICAgPyBcIkNhbnZhc1RleHRcIlxuICAgICAgICAgIDogY29sb3I7XG5cbiAgICAgICAgdXNlZEZvbnRGaWxlbmFtZXMuYWRkKGAke2ZvbnROYW1lfS50dGZgKTtcbiAgICAgICAgaWYgKGRlcHRoIDw9IDApIHtcbiAgICAgICAgICBjb25zdCBoYXNTcGFjZSA9IChsYXN0VGV4dFYgPT0gY29tbWFuZC50b3ApICYmXG4gICAgICAgICAgICAobGVmdCA+IGxhc3RUZXh0UmlnaHQgKyAyKTtcblxuICAgICAgICAgIGh0bWwgKz0gYDxzcGFuIGNsYXNzPVwidGV4dCAke2ZvbnROYW1lfVwiIHN0eWxlPVwidG9wOiR7XG4gICAgICAgICAgICB0b3AgLSBoZWlnaHRcbiAgICAgICAgICB9cHQ7bGVmdDoke2xlZnR9cHQ7Y29sb3I6JHt0ZXh0Q29sb3J9O2ZvbnQtc2l6ZToke2ZvbnRTaXplfXB0O1wiPjxzcGFuICR7XG4gICAgICAgICAgICBoYXNTcGFjZSA/ICdjbGFzcz1cImhhcy1zcGFjZVwiICcgOiBcIlwiXG4gICAgICAgICAgfSBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiR7LWhlaWdodH1wdDtcIj4ke2h0bWxUZXh0fTwvc3Bhbj48L3NwYW4+XFxuYDtcbiAgICAgICAgICBsYXN0VGV4dFYgPSBjb21tYW5kLnRvcDtcbiAgICAgICAgICBsYXN0VGV4dFJpZ2h0ID0gbGVmdCArIHdpZHRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IGNvbW1hbmQudG9wICogcG9pbnRzUGVyRHZpVW5pdDtcbiAgICAgICAgICAvLyBObyAncHQnIG9uIGZvbnRzaXplIHNpbmNlIHRob3NlIHVuaXRzIGFyZSBwb3RlbnRpYWxseSBzY2FsZWRcbiAgICAgICAgICBodG1sICs9XG4gICAgICAgICAgICBgPHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPVwiYmFzZWxpbmVcIiB5PVwiJHtib3R0b219XCIgeD1cIiR7bGVmdH1cIiBmaWxsPVwiJHt0ZXh0Q29sb3J9XCIgZm9udC1zaXplPVwiJHtmb250U2l6ZX1cIiBmb250LWZhbWlseT1cIiR7Zm9udE5hbWV9XCI+JHtodG1sVGV4dH08L3RleHQ+XFxuYDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJyZWN0XCI6IHtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gY29tbWFuZC5oZWlnaHQgKiBwb2ludHNQZXJEdmlVbml0O1xuICAgICAgICBjb25zdCB3aWR0aCA9IGNvbW1hbmQud2lkdGggKiBwb2ludHNQZXJEdmlVbml0O1xuICAgICAgICBjb25zdCBsZWZ0ID0gY29tbWFuZC5sZWZ0ICogcG9pbnRzUGVyRHZpVW5pdDtcbiAgICAgICAgY29uc3QgYm90dG9tID0gY29tbWFuZC50b3AgKiBwb2ludHNQZXJEdmlVbml0O1xuICAgICAgICBjb25zdCB0b3AgPSBib3R0b20gLSBoZWlnaHQ7XG5cbiAgICAgICAgY29uc3QgdGV4dENvbG9yID0gW1wiIzAwMFwiLCBcImJsYWNrXCJdLmluY2x1ZGVzKGNvbG9yKVxuICAgICAgICAgID8gXCJDYW52YXNUZXh0XCJcbiAgICAgICAgICA6IGNvbG9yO1xuICAgICAgICBodG1sICs9IGRlcHRoID4gMFxuICAgICAgICAgID8gYDxyZWN0IHg9XCIke2xlZnR9XCIgeT1cIiR7dG9wfVwiIHdpZHRoPVwiJHt3aWR0aH1cIiBoZWlnaHQ9XCIke2hlaWdodH1cIiBmaWxsPVwiJHt0ZXh0Q29sb3J9XCIgJHtcbiAgICAgICAgICAgIHRvU1ZHVHJhbnNmb3JtKG1hdHJpeClcbiAgICAgICAgICB9PjwvcmVjdD5cXG5gXG4gICAgICAgICAgLy8gaHR0cHM6Ly9hbm51YWxiZXRhLmNvbS9ibG9nLzFweC1oYWlybGluZS1jc3MtYm9yZGVycy1vbi1oaWRwaS1zY3JlZW5zL1xuICAgICAgICAgIDogYDxzcGFuIGNsYXNzPVwicmVjdFwiIHN0eWxlPVwiYmFja2dyb3VuZDogJHt0ZXh0Q29sb3J9OyB0b3A6ICR7dG9wfXB0OyBsZWZ0OiAke2xlZnR9cHQ7IHdpZHRoOiAke3dpZHRofXB0OyBoZWlnaHQ6ICR7aGVpZ2h0fXB0O1wiPjwvc3Bhbj5cXG5gO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJzcGVjaWFsXCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImluZm9cIjoge1xuICAgICAgICBjb25zdCBkdmlVbml0ID0gY29tbWFuZC5tYWduaWZpY2F0aW9uICogY29tbWFuZC5udW1lcmF0b3IgLyAxMDAwLjAgL1xuICAgICAgICAgIGNvbW1hbmQuZGVub21pbmF0b3I7XG4gICAgICAgIHBvaW50c1BlckR2aVVuaXQgPSBkdmlVbml0ICogNzIuMjcgLyAxMDAwMDAuMCAvIDIuNTQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBcInN2Z1wiOiB7XG4gICAgICAgIGxldCBzdmcgPSBjb21tYW5kLnN2ZztcbiAgICAgICAgZm9yIChjb25zdCBtYXRjaCBvZiBjb21tYW5kLnN2Zy5tYXRjaEFsbCgvPHN2Z1xcc1tePl0rPi9nKSkge1xuICAgICAgICAgIGNvbnN0IHRhZyA9IG1hdGNoWzBdO1xuICAgICAgICAgIGlmICh0YWcgPT09IFwiPHN2ZyBiZWdpbnBpY3R1cmU+XCIpIHtcbiAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBhcmUgaW5zaWRlIGFub3RoZXIgc3ZnIGVsZW1lbnQgc28gZHJvcCB0aGUgc3ZnIHN0YXJ0IHRhZ3MuXG4gICAgICAgICAgICBzdmcgPSBzdmcucmVwbGFjZShcbiAgICAgICAgICAgICAgdGFnLFxuICAgICAgICAgICAgICBkZXB0aCA+IDAgPyBcIlwiIDogc3RhbmRhbG9uZVNWR0JlZ2luVGFnKHBhcGVyd2lkdGgsIHBhcGVyaGVpZ2h0KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVwdGgrKztcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgbWF0Y2ggb2YgY29tbWFuZC5zdmcubWF0Y2hBbGwoLzxcXC9zdmdcXHNbXj5dKz4vZykpIHtcbiAgICAgICAgICBjb25zdCB0YWcgPSBtYXRjaFswXTtcbiAgICAgICAgICBpZiAodGFnID09PSBcIjxcXC9zdmcgZW5kcGljdHVyZT5cIikge1xuICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGluc2lkZSBhbm90aGVyIHN2ZyBlbGVtZW50LCB0aGVuIGRyb3AgdGhlIHN2ZyBlbmQgdGFnLlxuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGp1c3QgcmVtb3ZlIHRoZSBcIiBlbmRwaWN0dXJlXCIgYml0LlxuICAgICAgICAgICAgc3ZnID0gc3ZnLnJlcGxhY2UodGFnLCBkZXB0aCA9PT0gMSA/IFwiPFxcL3N2Zz5cIiA6IFwiXCIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRlcHRoID0gTWF0aC5tYXgoMCwgZGVwdGggLSAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvcCA9IGNvbW1hbmQudG9wICogcG9pbnRzUGVyRHZpVW5pdDtcbiAgICAgICAgY29uc3QgbGVmdCA9IGNvbW1hbmQubGVmdCAqIHBvaW50c1BlckR2aVVuaXQ7XG4gICAgICAgIGh0bWwgKz0gc3ZnLnJlcGxhY2VBbGwoXCJ7P3h9XCIsIGAke2xlZnR9YCkucmVwbGFjZUFsbChcbiAgICAgICAgICBcIns/eX1cIixcbiAgICAgICAgICBgJHt0b3B9YCxcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFwicGFwZXJzaXplXCI6XG4gICAgICAgIHBhcGVyaGVpZ2h0ID0gY29tbWFuZC5oZWlnaHQ7XG4gICAgICAgIHBhcGVyd2lkdGggPSBjb21tYW5kLndpZHRoO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJjb2xvclwiOlxuICAgICAgICBjb2xvciA9IGNvbW1hbmQuY29sb3I7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInBzXCI6XG4gICAgICAgIG1hdHJpeCA9IGNvbW1hbmQuaW50ZXJwcmV0KG1hdHJpeCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInBzZmlsZVwiOlxuICAgICAgICBodG1sICs9IGRlcHRoID4gMFxuICAgICAgICAgID8gY29tbWFuZC50b1NWRyhtYXRyaXgpXG4gICAgICAgICAgOiBgJHtzdGFuZGFsb25lU1ZHQmVnaW5UYWcocGFwZXJ3aWR0aCwgcGFwZXJoZWlnaHQpfSR7XG4gICAgICAgICAgICBjb21tYW5kLnRvU1ZHKG1hdHJpeClcbiAgICAgICAgICB9PC9zdmc+fWA7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGZvciAobGV0IF8gPSBkZXB0aDsgXyA+IDA7IF8tLSkgaHRtbCArPSBcIjwvc3ZnPlwiO1xuXG4gIGNvbnN0IHRpdGxlID0gYDx0aXRsZT4ke2luaXQudGl0bGUgPz8gXCJpbnB1dC50ZXhcIn08L3RpdGxlPmA7XG4gIGNvbnN0IHN0eWxlID0gYDxzdHlsZT4ke2F3YWl0IG1ha2VGb250Q1NTKFxuICAgIHVzZWRGb250RmlsZW5hbWVzLFxuICAgIGluaXQuZmlsZUxvYWRlcixcbiAgKX06cm9vdHtjb2xvci1zY2hlbWU6bGlnaHQgZGFyaztiYWNrZ3JvdW5kLWNvbG9yOkNhbnZhcztjb2xvcjpDYW52YXNUZXh0O30ucGFnZXtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO30udGV4dHtsaW5lLWhlaWdodDowO3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OnZpc2libGU7fS5yZWN0e3Bvc2l0aW9uOmFic29sdXRlO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHg7fTwvc3R5bGU+YDtcblxuICAvLyBwb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYXJ0aXN0aWNhdDEvb2JzaWRpYW4tdGlrempheC9ibG9iLzAuNS4xL21haW4udHMjTDEzOC1MMTQzXG4gIC8vIFJlcGxhY2UgdGhlIGNvbG9yIFwiYmxhY2tcIiB3aXRoIENhbnZhc1RleHQgKHRoZSBjdXJyZW50IHRleHQgY29sb3IpXG4gIC8vIHNvIHRoYXQgZGlhZ3JhbSBheGVzLCBldGMgYXJlIHZpc2libGUgaW4gZGFyayBtb2RlXG4gIC8vIEFuZCByZXBsYWNlIFwid2hpdGVcIiB3aXRoIENhbnZhc1xuICBodG1sID0gaHRtbC5yZXBsYWNlKC8oXCIjMDAwXCJ8XCJibGFja1wiKS9nLCAnXCJDYW52YXNUZXh0XCInKVxuICAgIC5yZXBsYWNlKC8oXCIjZmZmXCJ8XCJ3aGl0ZVwiKS9nLCAnXCJ2YXIoLS1iYWNrZ3JvdW5kLXByaW1hcnksIENhbnZhcylcIicpO1xuXG4gIHJldHVybiBpbml0LnN2Z1xuICAgID8gYCR7c3RhbmRhbG9uZVNWR0JlZ2luVGFnKHBhcGVyd2lkdGgsIHBhcGVyaGVpZ2h0KX0ke3RpdGxlfSR7c3R5bGV9JHtodG1sfWBcbiAgICA6IGA8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PVwiVVRGLThcIj4ke3RpdGxlfSR7c3R5bGV9PC9oZWFkPjxib2R5PiR7aHRtbH08L2JvZHk+PC9odG1sPmA7XG59O1xuXG5jb25zdCBzdGFuZGFsb25lU1ZHQmVnaW5UYWcgPSAod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpID0+XG4gIGA8c3ZnIHZlcnNpb249XCIxLjFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgd2lkdGg9XCIke3dpZHRofXB0XCIgaGVpZ2h0PVwiJHtoZWlnaHR9cHRcIiB2aWV3Qm94PVwiLTcyIC03MiAke3dpZHRofSAke2hlaWdodH1cIj5gO1xuIiwgImNvbnN0IExJR19UQUcgPSAxO1xuY29uc3QgTElTVF9UQUcgPSAyO1xuY29uc3QgRVhUX1RBRyA9IDM7XG5cbmNvbnN0IEtFUk5fT1BDT0RFID0gMTI4O1xuZXhwb3J0IGNvbnN0IHBhcnNlID0gKHRmbTogVWludDMyQXJyYXkpOiBURk0gPT4ge1xuICAvLyBSZWFkIGFuZCBzZXQgdGhlIHRhYmxlIGxlbmd0aHNcbiAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyh0Zm0uYnVmZmVyLCB0Zm0uYnl0ZU9mZnNldCwgdGZtLmJ5dGVMZW5ndGgpO1xuXG4gIGNvbnN0IGVudGlyZV9maWxlX2xlbmd0aCA9IHZpZXcuZ2V0VWludDE2KDApO1xuICBjb25zdCBoZWFkZXJfbGVuZ3RoID0gdmlldy5nZXRVaW50MTYoMik7XG4gIGNvbnN0IHNtYWxsZXN0X2NoYXJhY3Rlcl9jb2RlID0gdmlldy5nZXRVaW50MTYoNCk7XG4gIGNvbnN0IGxhcmdlc3RfY2hhcmFjdGVyX2NvZGUgPSB2aWV3LmdldFVpbnQxNig2KTtcblxuICBjb25zdCB0YWJsZV9sZW5ndGhzID0ge1xuICAgIGhlYWRlcjogTWF0aC5tYXgoMTgsIGhlYWRlcl9sZW5ndGgpLFxuICAgIGNoYXJhY3Rlcl9pbmZvOiBsYXJnZXN0X2NoYXJhY3Rlcl9jb2RlIC0gc21hbGxlc3RfY2hhcmFjdGVyX2NvZGUgKyAxLFxuICAgIHdpZHRoOiB2aWV3LmdldFVpbnQxNig4KSxcbiAgICBoZWlnaHQ6IHZpZXcuZ2V0VWludDE2KDEwKSxcbiAgICBkZXB0aDogdmlldy5nZXRVaW50MTYoMTIpLFxuICAgIGl0YWxpY19jb3JyZWN0aW9uOiB2aWV3LmdldFVpbnQxNigxNCksXG4gICAgbGlnX2tlcm46IHZpZXcuZ2V0VWludDE2KDE2KSxcbiAgICBrZXJuOiB2aWV3LmdldFVpbnQxNigxOCksXG4gICAgZXh0ZW5zaWJsZV9jaGFyYWN0ZXI6IHZpZXcuZ2V0VWludDE2KDIwKSxcbiAgICBmb250X3BhcmFtZXRlcjogdmlldy5nZXRVaW50MTYoMjIpLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8vIGNoZWNrIHZhbGlkYXRpb25cbiAgaWYgKFxuICAgICEoc21hbGxlc3RfY2hhcmFjdGVyX2NvZGUgPD0gbGFyZ2VzdF9jaGFyYWN0ZXJfY29kZSArIDEgJiZcbiAgICAgIGxhcmdlc3RfY2hhcmFjdGVyX2NvZGUgPCAyNTYpXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBTbWFsbGVzdCBjaGFyYWN0ZXIgY29kZSAoJHtzbWFsbGVzdF9jaGFyYWN0ZXJfY29kZX0pIG11c3QgYmUgbGFyZ2VyIHRoYW4gbGFyZ2VzdCBjaGFyYWN0ZXIgY29kZSAoJHtsYXJnZXN0X2NoYXJhY3Rlcl9jb2RlfSkgYW5kIGxhcmdlc3QgY2hhcmFjdGVyIGNvZGUgbXVzdCBiZSBsZXNzIHRoYW4gMjU2IChhY3R1YWw6ICR7bGFyZ2VzdF9jaGFyYWN0ZXJfY29kZX0pYCxcbiAgICApO1xuICB9XG4gIGlmICh0YWJsZV9sZW5ndGhzLmV4dGVuc2libGVfY2hhcmFjdGVyID4gMjU2KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEV4dGVuc2libGUgY2hhcmFjdGVyIG11c3QgYmUgbGVzcyB0aGFuIDI1NiAoYWN0dWFsOiAke3RhYmxlX2xlbmd0aHMuZXh0ZW5zaWJsZV9jaGFyYWN0ZXJ9KWAsXG4gICAgKTtcbiAgfVxuICB7XG4gICAgY29uc3QgYWN0dWFsID0gNiArIGhlYWRlcl9sZW5ndGggKyB0YWJsZV9sZW5ndGhzLmNoYXJhY3Rlcl9pbmZvICtcbiAgICAgIHRhYmxlX2xlbmd0aHMud2lkdGggK1xuICAgICAgdGFibGVfbGVuZ3Rocy5oZWlnaHQgKyB0YWJsZV9sZW5ndGhzLmRlcHRoICtcbiAgICAgIHRhYmxlX2xlbmd0aHMuaXRhbGljX2NvcnJlY3Rpb24gKyB0YWJsZV9sZW5ndGhzLmxpZ19rZXJuICtcbiAgICAgIHRhYmxlX2xlbmd0aHMua2VybiArIHRhYmxlX2xlbmd0aHMuZXh0ZW5zaWJsZV9jaGFyYWN0ZXIgK1xuICAgICAgdGFibGVfbGVuZ3Rocy5mb250X3BhcmFtZXRlcjtcblxuICAgIGlmIChcbiAgICAgIGVudGlyZV9maWxlX2xlbmd0aCAhPT0gYWN0dWFsXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBlbnRpcmVfZmlsZV9sZW5ndGggbXVzdCBiZSAke2FjdHVhbH0gKGFjdHVhbDogJHtlbnRpcmVfZmlsZV9sZW5ndGh9KWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlYWQgdGhlIHRhYmxlc1xuICBsZXQgcG9zaXRpb24gPSAyNDtcbiAgY29uc3Qgc2xpY2UgPSAobGVuZ3RoOiBudW1iZXIpID0+XG4gICAgWy4uLkFycmF5KGxlbmd0aCkua2V5cygpXS5tYXAoKGkpID0+IHZpZXcuZ2V0VWludDMyKHBvc2l0aW9uICsgaSAqIDQpKTtcblxuICBjb25zdCBoZWFkZXJXb3JkcyA9IHZpZXcuYnVmZmVyLnNsaWNlKFxuICAgIHBvc2l0aW9uLFxuICAgIHBvc2l0aW9uICsgdGFibGVfbGVuZ3Rocy5oZWFkZXIgKiA0LFxuICApO1xuICBwb3NpdGlvbiArPSB0YWJsZV9sZW5ndGhzLmhlYWRlciAqIDQ7XG4gIGNvbnN0IGNoYXJhY3Rlcl9pbmZvID0gc2xpY2UodGFibGVfbGVuZ3Rocy5jaGFyYWN0ZXJfaW5mbyk7XG4gIHBvc2l0aW9uICs9IHRhYmxlX2xlbmd0aHMuY2hhcmFjdGVyX2luZm8gKiA0O1xuICBjb25zdCB3aWR0aCA9IHNsaWNlKHRhYmxlX2xlbmd0aHMud2lkdGgpO1xuICBwb3NpdGlvbiArPSB0YWJsZV9sZW5ndGhzLndpZHRoICogNDtcbiAgY29uc3QgaGVpZ2h0ID0gc2xpY2UodGFibGVfbGVuZ3Rocy5oZWlnaHQpO1xuICBwb3NpdGlvbiArPSB0YWJsZV9sZW5ndGhzLmhlaWdodCAqIDQ7XG4gIGNvbnN0IGRlcHRoID0gc2xpY2UodGFibGVfbGVuZ3Rocy5kZXB0aCk7XG4gIHBvc2l0aW9uICs9IHRhYmxlX2xlbmd0aHMuZGVwdGggKiA0O1xuICBjb25zdCBpdGFsaWNfY29ycmVjdGlvbiA9IHNsaWNlKHRhYmxlX2xlbmd0aHMuaXRhbGljX2NvcnJlY3Rpb24pO1xuICBwb3NpdGlvbiArPSB0YWJsZV9sZW5ndGhzLml0YWxpY19jb3JyZWN0aW9uICogNDtcbiAgY29uc3QgbGlnX2tlcm4gPSBzbGljZSh0YWJsZV9sZW5ndGhzLmxpZ19rZXJuKTtcbiAgcG9zaXRpb24gKz0gdGFibGVfbGVuZ3Rocy5saWdfa2VybiAqIDQ7XG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tdW51c2VkLXZhcnNcbiAgY29uc3Qga2VybiA9IHNsaWNlKHRhYmxlX2xlbmd0aHMua2Vybik7XG4gIHBvc2l0aW9uICs9IHRhYmxlX2xlbmd0aHMua2VybiAqIDQ7XG4gIGNvbnN0IGV4dGVuc2libGVfY2hhcmFjdGVyID0gc2xpY2UodGFibGVfbGVuZ3Rocy5leHRlbnNpYmxlX2NoYXJhY3Rlcik7XG4gIHBvc2l0aW9uICs9IHRhYmxlX2xlbmd0aHMuZXh0ZW5zaWJsZV9jaGFyYWN0ZXIgKiA0O1xuICBjb25zdCBmb250X3BhcmFtZXRlciA9IHNsaWNlKHRhYmxlX2xlbmd0aHMuZm9udF9wYXJhbWV0ZXIpO1xuICBwb3NpdGlvbiArPSB0YWJsZV9sZW5ndGhzLmZvbnRfcGFyYW1ldGVyICogNDtcblxuICBjb25zdCBoZWFkZXIgPSByZWFkSGVhZGVyKGhlYWRlcldvcmRzKTtcbiAgY29uc3QgY2hhcmVjdGVySW5mbyA9IHJlYWRDaGFyYWN0ZXJJbmZvKGNoYXJhY3Rlcl9pbmZvKTtcblxuICBjb25zdCBmb250UGFyYW1ldGVycyA9IHJlYWRGb250UGFyYW1lcnRlcnMoXG4gICAgZm9udF9wYXJhbWV0ZXIsXG4gICAgaGVhZGVyLmNvZGluZ19zY2hlbWUsXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBjaGVja3N1bTogaGVhZGVyLmNoZWNrc3VtLFxuICAgIGRlc2lnbl9zaXplOiBoZWFkZXIuZGVzaWduX3NpemUsXG4gICAgZmFtaWx5OiBoZWFkZXIuZmFtaWx5LFxuICAgIGZhY2U6IGhlYWRlci5mYWNlLFxuICAgIGxpZ0tlcm5Qcm9ncmFtczogcmVhZExpZ0tlcm5Qcm9ncmFtcyhsaWdfa2VybiksXG4gICAgY2hhcmFjdGVyczogY2hhcmVjdGVySW5mby5tYXAoXG4gICAgICAoY2hhckluZm8pID0+IHtcbiAgICAgICAgY29uc3QgeyB3aWR0aF9pbmRleCwgaGVpZ2h0X2luZGV4LCBkZXB0aF9pbmRleCwgaXRhbGljX2luZGV4IH0gPVxuICAgICAgICAgIGNoYXJJbmZvO1xuICAgICAgICBjb25zdCBjaGFyOiBURk1DaGFyID0ge1xuICAgICAgICAgIHdpZHRoOiB3aWR0aFt3aWR0aF9pbmRleF0sXG4gICAgICAgICAgaGVpZ2h0OiBoZWlnaHQuYXQoaGVpZ2h0X2luZGV4KSA/PyAwLFxuICAgICAgICAgIGRlcHRoOiBkZXB0aC5hdChkZXB0aF9pbmRleCkgPz8gMCxcbiAgICAgICAgICBpdGFsaWNfY29ycmVjdGlvbjogaXRhbGljX2NvcnJlY3Rpb24uYXQoaXRhbGljX2luZGV4KSA/PyAwLFxuICAgICAgICB9O1xuICAgICAgICBzd2l0Y2ggKGNoYXJJbmZvLnR5cGUpIHtcbiAgICAgICAgICBjYXNlIFwibGlnXCI6XG4gICAgICAgICAgICBjaGFyLmxpZ19rZXJuX3Byb2dyYW0gPSBsaWdfa2VybltjaGFySW5mby5saWdfa2Vybl9pbmRleF07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwibGlua1wiOlxuICAgICAgICAgICAgY2hhci5uZXh0X2xhcmdlcl9jaGFyID0gY2hhckluZm8ubmV4dF9sYXJnZXJfY2hhcjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJleHRcIjpcbiAgICAgICAgICAgIGNoYXIuZXh0ZW5zaWJsZV9yZWNpcGUgPVxuICAgICAgICAgICAgICBleHRlbnNpYmxlX2NoYXJhY3RlcltjaGFySW5mby5leHRlbnNpYmxlX2luZGV4XTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hhcjtcbiAgICAgIH0sXG4gICAgKSxcbiAgICAuLi5mb250UGFyYW1ldGVycyxcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFRGTSA9XG4gICYgKFxuICAgIHwgU3ltYm9sRm9udFBhcmFtZXRlclxuICAgIHwgRXh0ZW5zaW9uRm9udFBhcmFtZXRlclxuICAgIHwgSXRhbGljRm9udFBhcmFtZXRlclxuICAgIHwgRm9udFBhcmFtZXRlclxuICApXG4gICYge1xuICAgIGNoZWNrc3VtOiBudW1iZXI7XG4gICAgZGVzaWduX3NpemU6IG51bWJlcjtcbiAgICBmYW1pbHk6IHN0cmluZztcbiAgICBmYWNlOiBudW1iZXI7XG4gICAgbGlnS2VyblByb2dyYW1zOiB1bmtub3duW107XG4gICAgY2hhcmFjdGVyczogVEZNQ2hhcltdO1xuICB9O1xuZXhwb3J0IGludGVyZmFjZSBURk1DaGFyIHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIGRlcHRoOiBudW1iZXI7XG4gIGl0YWxpY19jb3JyZWN0aW9uOiBudW1iZXI7XG4gIGxpZ19rZXJuX3Byb2dyYW0/OiB1bmtub3duO1xuICBuZXh0X2xhcmdlcl9jaGFyPzogbnVtYmVyO1xuICBleHRlbnNpYmxlX3JlY2lwZT86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIEhlYWRlciB7XG4gIGNoZWNrc3VtOiBudW1iZXI7XG4gIGRlc2lnbl9zaXplOiBudW1iZXI7XG4gIGNvZGluZ19zY2hlbWU6IHN0cmluZztcbiAgZmFtaWx5OiBzdHJpbmc7XG4gIHNldmVuX2JpdF9zYWZlX2ZsYWc6IG51bWJlcjtcbiAgZmFjZTogbnVtYmVyO1xufVxuXG4vKiogVGhlIGZpcnN0IGRhdGEgYXJyYXkgaXMgYSBibG9jayBvZiBoZWFkZXIgaW5mb3JtYXRpb24sIHdoaWNoIGNvbnRhaW5zIGdlbmVyYWwgZmFjdHMgYWJvdXQgdGhlIGZvbnQuXG4gKiBUaGUgaGVhZGVyIG11c3QgY29udGFpbiBhdCBsZWFzdCB0d28gd29yZHMsIGFuZCBmb3IgVEZNIGZpbGVzIHRvIGJlIHVzZWQgd2l0aCBYZXJveCBwcmludGluZyBzb2Z0d2FyZSBpdCBtdXN0IGNvbnRhaW4gYXQgbGVhc3QgMTggd29yZHMsIGFsbG9jYXRlZCBhcyBkZXNjcmliZWQgYmVsb3cuXG4gKlxuICogYGBoZWFkZXJbMF1gYCBpcyBhIDMyLWJpdCBjaGVjayBzdW0gdGhhdCBURVggd2lsbCBjb3B5IGludG8gdGhlIERWSSBvdXRwdXQgZmlsZSB3aGVuZXZlciBpdCB1c2VzIHRoZSBmb250LiAgTGF0ZXIgb24gd2hlbiB0aGUgRFZJIGZpbGUgaXMgcHJpbnRlZCwgcG9zc2libHkgb24gYW5vdGhlciBjb21wdXRlciwgdGhlIGFjdHVhbCBmb250IHRoYXQgZ2V0cyB1c2VkIGlzIHN1cHBvc2VkIHRvIGhhdmUgYSBjaGVjayBzdW0gdGhhdCBhZ3JlZXMgd2l0aCB0aGUgb25lIGluIHRoZSBURk0gZmlsZSB1c2VkIGJ5IFRFWC5cbiAqIEluIHRoaXMgd2F5LCB1c2VycyB3aWxsIGJlIHdhcm5lZCBhYm91dCBwb3RlbnRpYWwgaW5jb21wYXRpYmlsaXRpZXMuXG4gKiAoSG93ZXZlciwgaWYgdGhlIGNoZWNrIHN1bSBpcyB6ZXJvIGluIGVpdGhlciB0aGUgZm9udCBmaWxlIG9yIHRoZSBURk0gZmlsZSwgbm8gY2hlY2sgaXMgbWFkZS4pXG4gKiBUaGUgYWN0dWFsIHJlbGF0aW9uIGJldHdlZW4gdGhpcyBjaGVjayBzdW0gYW5kIHRoZSByZXN0IG9mIHRoZSBURk0gZmlsZSBpcyBub3QgaW1wb3J0YW50OyB0aGUgY2hlY2sgc3VtIGlzIHNpbXBseSBhbiBpZGVudGlmaWNhdGlvbiBudW1iZXIgd2l0aCB0aGUgcHJvcGVydHkgdGhhdCBpbmNvbXBhdGlibGUgZm9udHMgYWxtb3N0IGFsd2F5cyBoYXZlIGRpc3RpbmN0IGNoZWNrIHN1bXMuXG4gKlxuICogYGBoZWFkZXJbMV1gYCBpcyBhIGZpeCB3b3JkIGNvbnRhaW5pbmcgdGhlIGRlc2lnbiBzaXplIG9mIHRoZSBmb250LCBpbiB1bml0cyBvZiBURVggcG9pbnRzICg3MjI3IFRFWCBwb2ludHMgPSAyNTQgY20pLlxuICogVGhpcyBudW1iZXIgbXVzdCBiZSBhdCBsZWFzdCAxLjA7IGl0IGlzIGZhaXJseSBhcmJpdHJhcnksIGJ1dCB1c3VhbGx5IHRoZSBkZXNpZ24gc2l6ZSBpcyAxMC4wIGZvciBhIFwiMTAgcG9pbnRcIiBmb250LCBpLmUuLCBhIGZvbnQgdGhhdCB3YXMgZGVzaWduZWQgdG8gbG9vayBiZXN0IGF0IGEgMTAtcG9pbnQgc2l6ZSwgd2hhdGV2ZXIgdGhhdCByZWFsbHkgbWVhbnMuXG4gKiBXaGVuIGEgVEVYIHVzZXIgYXNrcyBmb3IgYSBmb250IFwiYXQgZGVsdGEgcHRcIiwgdGhlIGVmZmVjdCBpcyB0byBvdmVycmlkZSB0aGUgZGVzaWduIHNpemUgYW5kIHJlcGxhY2UgaXQgYnkgZGVsdGEsIGFuZCB0byBtdWx0aXBseSB0aGUgeCBhbmQgeSBjb29yZGluYXRlcyBvZiB0aGUgcG9pbnRzIGluIHRoZSBmb250IGltYWdlIGJ5IGEgZmFjdG9yIG9mIGRlbHRhIGRpdmlkZWQgYnkgdGhlIGRlc2lnbiBzaXplLlxuICogQWxsIG90aGVyIGRpbWVuc2lvbnMgaW4gdGhlIFRGTSBmaWxlIGFyZSBmaXggd29yZCBudW1iZXJzIGluIGRlc2lnbi1zaXplIHVuaXRzLlxuICogVGh1cywgZm9yIGV4YW1wbGUsIHRoZSB2YWx1ZSBvZiBgYHBhcmFtWzZdYGAsIG9uZSBlbSBvciBgYFxccXVhZGBgLCBpcyBvZnRlbiB0aGUgZml4IHdvcmQgdmFsdWUgYGAyKioyMCA9IDEuMGBgLCBzaW5jZSBtYW55IGZvbnRzIGhhdmUgYSBkZXNpZ24gc2l6ZSBlcXVhbCB0byBvbmUgZW0uXG4gKiBUaGUgb3RoZXIgZGltZW5zaW9ucyBtdXN0IGJlIGxlc3MgdGhhbiAxNiBkZXNpZ24tc2l6ZSB1bml0cyBpbiBhYnNvbHV0ZSB2YWx1ZTsgdGh1cywgYGBoZWFkZXJbMV1gYCBhbmQgYGBwYXJhbVsxXWBgIGFyZSB0aGUgb25seSBmaXggd29yZCBlbnRyaWVzIGluIHRoZSB3aG9sZSBURk0gZmlsZSB3aG9zZSBmaXJzdCBieXRlIG1pZ2h0IGJlIHNvbWV0aGluZyBiZXNpZGVzIDAgb3IgMjU1LlxuICpcbiAqIGBgaGVhZGVyWzIgLi4uIDExXWBgLCBpZiBwcmVzZW50LCBjb250YWlucyA0MCBieXRlcyB0aGF0IGlkZW50aWZ5IHRoZSBjaGFyYWN0ZXIgY29kaW5nIHNjaGVtZS5cbiAqIFRoZSBmaXJzdCBieXRlLCB3aGljaCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMzksIGlzIHRoZSBudW1iZXIgb2Ygc3Vic2VxdWVudCBBU0NJSSBieXRlcyBhY3R1YWxseSByZWxldmFudCBpbiB0aGlzIHN0cmluZywgd2hpY2ggaXMgaW50ZW5kZWQgdG8gc3BlY2lmeSB3aGF0IGNoYXJhY3Rlci1jb2RlLXRvLXN5bWJvbCBjb252ZW50aW9uIGlzIHByZXNlbnQgaW4gdGhlIGZvbnQuXG4gKiBFeGFtcGxlcyBhcmUgQVNDSUkgZm9yIHN0YW5kYXJkIEFTQ0lJLCBUZVggdGV4dCBmb3IgZm9udHMgbGlrZSBjbXIxMCBhbmQgY210aTksIFRlWCBtYXRoIGV4dGVuc2lvbiBmb3IgY21leDEwLCBYRVJPWCB0ZXh0IGZvciBYZXJveCBmb250cywgR1JBUEhJQyBmb3Igc3BlY2lhbC1wdXJwb3NlIG5vbi0gYWxwaGFiZXRpYyBmb250cywgVU5TUEVDSUZJRUQgZm9yIHRoZSBkZWZhdWx0IGNhc2Ugd2hlbiB0aGVyZSBpcyBubyBpbmZvcm1hdGlvbi5cbiAqIFBhcmVudGhlc2VzIHNob3VsZCBub3QgYXBwZWFyIGluIHRoaXMgbmFtZS5cbiAqIChTdWNoIGEgc3RyaW5nIGlzIHNhaWQgdG8gYmUgaW4gQkNQTCBmb3JtYXQuKVxuICpcbiAqIGBgaGVhZGVyWzEyIC4uLiAxNl1gYCwgaWYgcHJlc2VudCwgY29udGFpbnMgMjAgYnl0ZXMgdGhhdCBuYW1lIHRoZSBmb250IGZhbWlseSAoZS5nLiwgQ01SIG9yIEhFTFZFVElDQSksIGluIEJDUEwgZm9ybWF0LlxuICogVGhpcyBmaWVsZCBpcyBhbHNvIGtub3duIGFzIHRoZSBcImZvbnQgaWRlbnRpZmllci5cIlxuICpcbiAqIGBgaGVhZGVyWzE3XWBgLCBpZiBwcmVzZW50LCBjb250YWlucyBhIGZpcnN0IGJ5dGUgY2FsbGVkIHRoZSBgYHNldmVuX2JpdF9zYWZlX2ZsYWdgYCwgdGhlbiB0d28gYnl0ZXMgdGhhdCBhcmUgaWdub3JlZCwgYW5kIGEgZm91cnRoIGJ5dGUgY2FsbGVkIHRoZSBgYGZhY2VgYC5cbiAqIElmIHRoZSB2YWx1ZSBvZiB0aGUgZm91cnRoIGJ5dGUgaXMgbGVzcyB0aGFuIDE4LCBpdCBoYXMgdGhlIGZvbGxvd2luZyBpbnRlcnByZXRhdGlvbiBhcyBhIFwid2VpZ2h0LCBzbG9wZSwgYW5kIGV4cGFuc2lvblwiOiBBZGQgMCBvciAyIG9yIDQgKGZvciBtZWRpdW0gb3IgYm9sZCBvciBsaWdodCkgdG8gMCBvciAxIChmb3Igcm9tYW4gb3IgaXRhbGljKSB0byAwIG9yIDYgb3IgMTIgKGZvciByZWd1bGFyIG9yIGNvbmRlbnNlZCBvciBleHRlbmRlZCkuXG4gKiBGb3IgZXhhbXBsZSwgMTMgaXMgYGAwKzErMTJgYCwgc28gaXQgcmVwcmVzZW50cyBtZWRpdW0gaXRhbGljIGV4dGVuZGVkLlxuICogQSB0aHJlZS1sZXR0ZXIgY29kZSAoZS5nLiwgTUlFKSBjYW4gYmUgdXNlZCBmb3Igc3VjaCBmYWNlIGRhdGEuXG4gKlxuICogYGBoZWFkZXJbMTggLi4uIHdoYXRldmVyXWBgIG1pZ2h0IGFsc28gYmUgcHJlc2VudDsgdGhlIGluZGl2aWR1YWwgd29yZHMgYXJlIHNpbXBseSBjYWxsZWQgYGBoZWFkZXJbMThdYGAsIGBgaGVhZGVyWzE5XWBgLCBldGMuLCBhdCB0aGUgbW9tZW50LlxuICovXG5jb25zdCByZWFkSGVhZGVyID0gKGJ1ZmZlcjogQXJyYXlCdWZmZXIpOiBIZWFkZXIgPT4ge1xuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7XG4gIGNvbnN0IGNoZWNrc3VtID0gdmlldy5nZXRVaW50MzIoMCk7XG4gIGNvbnN0IGRlc2lnbl9zaXplID0gdmlldy5nZXRVaW50MzIoNCk7XG5cbiAgY29uc3QgY29kaW5nU2NoZW1lTGVuZ3RoID0gdmlldy5nZXRVaW50OCg4KTtcbiAgaWYgKGNvZGluZ1NjaGVtZUxlbmd0aCA+IDM5KSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIFRGTSBmaWxlXCIpO1xuXG4gIGNvbnN0IGNvZGluZ19zY2hlbWUgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoXG4gICAgYnVmZmVyLnNsaWNlKDksIDkgKyBjb2RpbmdTY2hlbWVMZW5ndGgpLFxuICApO1xuXG4gIGNvbnN0IGZhbWlseUxlbmd0aCA9IHZpZXcuZ2V0VWludDgoNDgpO1xuICBpZiAoZmFtaWx5TGVuZ3RoID4gMjApIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgVEZNIGZpbGVcIik7XG4gIGNvbnN0IGZhbWlseSA9IG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShidWZmZXIuc2xpY2UoNDksIDQ5ICsgZmFtaWx5TGVuZ3RoKSk7XG5cbiAgY29uc3QgaGVhZGVyMTcgPSBuZXcgVWludDhBcnJheShidWZmZXIsIDY4LCA0KTtcbiAgY29uc3Qgc2V2ZW5fYml0X3NhZmVfZmxhZyA9IGhlYWRlcjE3WzBdO1xuICBjb25zdCBmYWNlID0gaGVhZGVyMTdbM107XG5cbiAgcmV0dXJuIHtcbiAgICBjaGVja3N1bSxcbiAgICBkZXNpZ25fc2l6ZSxcbiAgICBjb2Rpbmdfc2NoZW1lLFxuICAgIGZhbWlseSxcbiAgICBzZXZlbl9iaXRfc2FmZV9mbGFnLFxuICAgIGZhY2UsXG4gIH07XG59O1xuXG5pbnRlcmZhY2UgQ2hhckluZm9CYXNlIHtcbiAgd2lkdGhfaW5kZXg6IG51bWJlcjtcbiAgaGVpZ2h0X2luZGV4OiBudW1iZXI7XG4gIGRlcHRoX2luZGV4OiBudW1iZXI7XG4gIGl0YWxpY19pbmRleDogbnVtYmVyO1xufVxuaW50ZXJmYWNlIE5vcm1hbENoYXJJbmZvIGV4dGVuZHMgQ2hhckluZm9CYXNlIHtcbiAgdHlwZT86IHVuZGVmaW5lZDtcbn1cbmludGVyZmFjZSBMaWdLZXJuQ2hhckluZm8gZXh0ZW5kcyBDaGFySW5mb0Jhc2Uge1xuICB0eXBlOiBcImxpZ1wiO1xuICBsaWdfa2Vybl9pbmRleDogbnVtYmVyO1xufVxuaW50ZXJmYWNlIExpbmtDaGFySW5mbyBleHRlbmRzIENoYXJJbmZvQmFzZSB7XG4gIHR5cGU6IFwibGlua1wiO1xuICBuZXh0X2xhcmdlcl9jaGFyOiBudW1iZXI7XG59XG5pbnRlcmZhY2UgRXh0ZW5zaWJsZUNoYXJJbmZvIGV4dGVuZHMgQ2hhckluZm9CYXNlIHtcbiAgdHlwZTogXCJleHRcIjtcbiAgZXh0ZW5zaWJsZV9pbmRleDogbnVtYmVyO1xufVxudHlwZSBDaGFySW5mbyA9XG4gIHwgTm9ybWFsQ2hhckluZm9cbiAgfCBMaWdLZXJuQ2hhckluZm9cbiAgfCBMaW5rQ2hhckluZm9cbiAgfCBFeHRlbnNpYmxlQ2hhckluZm87XG5cbi8qKiBOZXh0IGNvbWVzIHRoZSBjaGFyIGluZm8gYXJyYXksIHdoaWNoIGNvbnRhaW5zIG9uZSBjaGFyIGluZm8gd29yZCBwZXIgY2hhcmFjdGVyLlxuICogRWFjaCBjaGFyIGluZm8gd29yZCBjb250YWlucyBzaXggZmllbGRzIHBhY2tlZCBpbnRvIGZvdXIgYnl0ZXMgYXMgZm9sbG93cy5cbiAqXG4gKiAtIGZpcnN0IGJ5dGU6IGBgd2lkdGhfaW5kZXhgYCAoOCBiaXRzKVxuICogLSBzZWNvbmQgYnl0ZTogYGBoZWlnaHRfaW5kZXhgYCAoNCBiaXRzKSB0aW1lcyAxNiwgcGx1cyBgYGRlcHRoX2luZGV4YGAgKDQgYml0cylcbiAqIC0gdGhpcmQgYnl0ZTogYGBpdGFsaWNfaW5kZXhgYCAoNiBiaXRzKSB0aW1lcyA0LCBwbHVzIGBgdGFnYGAgKDIgYml0cylcbiAqIC0gZm91cnRoIGJ5dGU6IGBgcmVtYWluZGVyYGAgKDggYml0cylcbiAqXG4gKiBUaGUgYWN0dWFsIHdpZHRoIG9mIGEgY2hhcmFjdGVyIGlzIGBgd2lkdGhbd2lkdGhfaW5kZXhdYGAsIGluIGRlc2lnbi1zaXplIHVuaXRzOyB0aGlzIGlzIGEgZGV2aWNlIGZvciBjb21wcmVzc2luZyBpbmZvcm1hdGlvbiwgc2luY2UgbWFueSBjaGFyYWN0ZXJzIGhhdmUgdGhlIHNhbWUgd2lkdGguXG4gKiBTaW5jZSBpdCBpcyBxdWl0ZSBjb21tb24gZm9yIG1hbnkgY2hhcmFjdGVycyB0byBoYXZlIHRoZSBzYW1lIGhlaWdodCwgZGVwdGgsIG9yIGl0YWxpYyBjb3JyZWN0aW9uLCB0aGUgVEZNIGZvcm1hdCBpbXBvc2VzIGEgbGltaXQgb2YgMTYgZGlmZmVyZW50IGhlaWdodHMsIDE2IGRpZmZlcmVudCBkZXB0aHMsIGFuZCA2NCBkaWZmZXJlbnQgaXRhbGljIGNvcnJlY3Rpb25zLlxuICpcbiAqIEluY2lkZW50YWxseSwgdGhlIHJlbGF0aW9uIGBgd2lkdGhbMF0gPSBoZWlnaHRbMF0gPSBkZXB0aFswXSA9IGl0YWxpY1swXSA9IDBgYCBzaG91bGQgYWx3YXlzIGhvbGQsIHNvIHRoYXQgYW4gaW5kZXggb2YgemVybyBpbXBsaWVzIGEgdmFsdWUgb2YgemVyby5cbiAqIFRoZSB3aWR0aCBpbmRleCBzaG91bGQgbmV2ZXIgYmUgemVybyB1bmxlc3MgdGhlIGNoYXJhY3RlciBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZm9udCwgc2luY2UgYSBjaGFyYWN0ZXIgaXMgdmFsaWQgaWYgYW5kIG9ubHkgaWYgaXQgbGllcyBiZXR3ZWVuIGBgYmNgYCBhbmQgYGBlY2BgIGFuZCBoYXMgYSBub256ZXJvIHdpZHRoIGluZGV4LlxuICpcbiAqIFRoZSB0YWcgZmllbGQgaW4gYSBjaGFyIGluZm8gd29yZCBoYXMgZm91ciB2YWx1ZXMgdGhhdCBleHBsYWluIGhvdyB0byBpbnRlcnByZXQgdGhlIHJlbWFpbmRlciBmaWVsZC5cbiAqXG4gKiAtIGBgdGFnID0gMGBgIChgYG5vX3RhZ2BgKSBtZWFucyB0aGF0IHJlbWFpbmRlciBpcyB1bnVzZWQuXG4gKiAtIGBgdGFnID0gMWBgIChgYGxpZ190YWdgYCkgbWVhbnMgdGhhdCB0aGlzIGNoYXJhY3RlciBoYXMgYSBsaWdhdHVyZS9rZXJuaW5nIHByb2dyYW0gc3RhcnRpbmcgYXQgYGBsaWdfa2VybltyZW1haW5kZXJdYGAuXG4gKiAtIGBgdGFnID0gMmBgIChgYGxpc3RfdGFnYGApIG1lYW5zIHRoYXQgdGhpcyBjaGFyYWN0ZXIgaXMgcGFydCBvZiBhIGNoYWluIG9mIGNoYXJhY3RlcnMgb2YgYXNjZW5kaW5nIHNpemVzLCBhbmQgbm90IHRoZSBsYXJnZXN0IGluIHRoZSBjaGFpbi5cbiAqIFRoZSByZW1haW5kZXIgZmllbGQgZ2l2ZXMgdGhlIGNoYXJhY3RlciBjb2RlIG9mIHRoZSBuZXh0IGxhcmdlciBjaGFyYWN0ZXIuXG4gKiAtIGBgdGFnID0gM2BgIChgYGV4dF90YWdgYCkgbWVhbnMgdGhhdCB0aGlzIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgYW4gZXh0ZW5zaWJsZSBjaGFyYWN0ZXIsIGkuZS4sIGEgY2hhcmFjdGVyIHRoYXQgaXMgYnVpbHQgdXAgb2Ygc21hbGxlciBwaWVjZXMgc28gdGhhdCBpdCBjYW4gYmUgbWFkZSBhcmJpdHJhcmlseSBsYXJnZS5cbiAqIFRoZSBwaWVjZXMgYXJlIHNwZWNpZmllZCBpbiBgYGV4dGVuW3JlbWFpbmRlcl1gYC5cbiAqIC0gYGBub190YWcgPSAwYGAgdmFuaWxsYSBjaGFyYWN0ZXJcbiAqIC0gYGBsaWdfdGFnID0gMWBgIGNoYXJhY3RlciBoYXMgYSBsaWdhdHVyZS9rZXJuaW5nIHByb2dyYW1cbiAqIC0gYGBsaXN0X3RhZyA9IDJgYCBjaGFyYWN0ZXIgaGFzIGEgc3VjY2Vzc29yIGluIGEgY2hhcmxpc3RcbiAqIC0gYGBleHRfdGFnID0gM2BgIGNoYXJhY3RlciBpcyBleHRlbnNpYmxlXG4gKi9cbmNvbnN0IHJlYWRDaGFyYWN0ZXJJbmZvID0gKFxuICBidWZmZXI6IG51bWJlcltdLFxuKTogQ2hhckluZm9bXSA9PlxuICBidWZmZXIubWFwKChjaGFySW5mbykgPT4ge1xuICAgIGNvbnN0IHdpZHRoX2luZGV4ID0gY2hhckluZm8gPj4gMjQ7XG4gICAgY29uc3QgaGVpZ2h0X2luZGV4ID0gKGNoYXJJbmZvID4+IDIwKSAmIDBiMTExMTtcbiAgICBjb25zdCBkZXB0aF9pbmRleCA9IChjaGFySW5mbyA+PiAxNikgJiAwYjExMTE7XG4gICAgY29uc3QgaXRhbGljX2luZGV4ID0gKGNoYXJJbmZvID4+IDEwKSAmIDB4MTExMTExO1xuICAgIGNvbnN0IHRhZyA9IChjaGFySW5mbyA+PiA4KSAmIDBiMTE7XG4gICAgY29uc3QgcmVtYWluZGVyID0gY2hhckluZm8gJiAwYjExMTExMTExO1xuICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICBjYXNlIExJR19UQUc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJsaWdcIixcbiAgICAgICAgICB3aWR0aF9pbmRleCxcbiAgICAgICAgICBoZWlnaHRfaW5kZXgsXG4gICAgICAgICAgZGVwdGhfaW5kZXgsXG4gICAgICAgICAgaXRhbGljX2luZGV4LFxuICAgICAgICAgIGxpZ19rZXJuX2luZGV4OiByZW1haW5kZXIsXG4gICAgICAgIH07XG4gICAgICBjYXNlIExJU1RfVEFHOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwibGlua1wiLFxuICAgICAgICAgIHdpZHRoX2luZGV4LFxuICAgICAgICAgIGhlaWdodF9pbmRleCxcbiAgICAgICAgICBkZXB0aF9pbmRleCxcbiAgICAgICAgICBpdGFsaWNfaW5kZXgsXG4gICAgICAgICAgbmV4dF9sYXJnZXJfY2hhcjogcmVtYWluZGVyLFxuICAgICAgICB9O1xuICAgICAgY2FzZSBFWFRfVEFHOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiZXh0XCIsXG4gICAgICAgICAgd2lkdGhfaW5kZXgsXG4gICAgICAgICAgaGVpZ2h0X2luZGV4LFxuICAgICAgICAgIGRlcHRoX2luZGV4LFxuICAgICAgICAgIGl0YWxpY19pbmRleCxcbiAgICAgICAgICBleHRlbnNpYmxlX2luZGV4OiByZW1haW5kZXIsXG4gICAgICAgIH07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHdpZHRoX2luZGV4LFxuICAgICAgICAgIGhlaWdodF9pbmRleCxcbiAgICAgICAgICBkZXB0aF9pbmRleCxcbiAgICAgICAgICBpdGFsaWNfaW5kZXgsXG4gICAgICAgIH07XG4gICAgfVxuICB9KTtcblxuLyoqIFRoZSBsaWcga2VybiBhcnJheSBjb250YWlucyBpbnN0cnVjdGlvbnMgaW4gYSBzaW1wbGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdGhhdCBleHBsYWlucyB3aGF0IHRvIGRvIGZvciBzcGVjaWFsIGxldHRlciBwYWlycy5cbiAqIEVhY2ggd29yZCBpcyBhIGxpZyBrZXJuIGNvbW1hbmQgb2YgZm91ciBieXRlcy5cbiAqXG4gKiAtIGZpcnN0IGJ5dGU6IGBgc2tpcF9ieXRlYGAsIGluZGljYXRlcyB0aGF0IHRoaXMgaXMgdGhlIGZpbmFsIHByb2dyYW0gc3RlcCBpZiB0aGUgYnl0ZSBpcyAxMjggb3IgbW9yZSwgb3RoZXJ3aXNlIHRoZSBuZXh0IHN0ZXAgaXMgb2J0YWluZWQgYnkgc2tpcHBpbmcgdGhpcyBudW1iZXIgb2YgaW50ZXJ2ZW5pbmcgc3RlcHMuXG4gKiAtIHNlY29uZCBieXRlOiBgYG5leHRfY2hhcmBgLCBcImlmIGBgbmV4dF9jaGFyYGAgZm9sbG93cyB0aGUgY3VycmVudCBjaGFyYWN0ZXIsIHRoZW4gcGVyZm9ybSB0aGUgb3BlcmF0aW9uIGFuZCBzdG9wLCBvdGhlcndpc2UgY29udGludWUuXCJcbiAqIC0gdGhpcmQgYnl0ZTogYGBvcF9ieXRlYGAsIGluZGljYXRlcyBhIGxpZ2F0dXJlIHN0ZXAgaWYgbGVzcyB0aGFuIDEyOCwgYSBrZXJuIHN0ZXAgb3RoZXJ3aXNlLlxuICogLSBmb3VydGggYnl0ZTogYGByZW1haW5kZXJgYC5cbiAqXG4gKiBJbiBhIGtlcm4gc3RlcCwgYW4gYWRkaXRpb25hbCBzcGFjZSBlcXVhbCB0byBgYGtlcm5bMjU2ICogKG9wX2J5dGUgKyAxMjgpICsgcmVtYWluZGVyXWBgIGlzIGluc2VydGVkIGJldHdlZW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGFuZCBuZXh0IGNoYXIuXG4gKiBUaGlzIGFtb3VudCBpcyBvZnRlbiBuZWdhdGl2ZSwgc28gdGhhdCB0aGUgY2hhcmFjdGVycyBhcmUgYnJvdWdodCBjbG9zZXIgdG9nZXRoZXIgYnkga2VybmluZzsgYnV0IGl0IG1pZ2h0IGJlIHBvc2l0aXZlLlxuICpcbiAqIFRoZXJlIGFyZSBlaWdodCBraW5kcyBvZiBsaWdhdHVyZSBzdGVwcywgaGF2aW5nIGBgb3BfYnl0ZWBgIGNvZGVzIGBgNGErMmIrY2BgIHdoZXJlIGBgMCA8PSBhIDw9IGIrY2BgIGFuZCBgYDAgPD0gYjsgYyA8PSAxYGAuXG4gKiBUaGUgY2hhcmFjdGVyIHdob3NlIGNvZGUgaXMgcmVtYWluZGVyIGlzIGluc2VydGVkIGJldHdlZW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGFuZCBuZXh0IGNoYXI7IHRoZW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzIGRlbGV0ZWQgaWYgYGBiID0gMGBgLCBhbmQgbmV4dCBjaGFyIGlzIGRlbGV0ZWQgaWYgYGBjID0gMGBgOyB0aGVuIHdlIHBhc3Mgb3ZlciBhIGNoYXJhY3RlcnMgdG8gcmVhY2ggdGhlIG5leHQgY3VycmVudCBjaGFyYWN0ZXIgKHdoaWNoIG1heSBoYXZlIGEgbGlnYXR1cmUva2VybmluZyBwcm9ncmFtIG9mIGl0cyBvd24pLlxuICpcbiAqIE5vdGljZSB0aGF0IGlmIGBgYSA9IDBgYCBhbmQgYGBiID0gMWBgLCB0aGUgY3VycmVudCBjaGFyYWN0ZXIgaXMgdW5jaGFuZ2VkOyBpZiBgYGEgPSBiYGAgYW5kIGBgYyA9IDFgYCwgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzIGNoYW5nZWQgYnV0IHRoZSBuZXh0IGNoYXJhY3RlciBpcyB1bmNoYW5nZWQuXG4gKlxuICogSWYgdGhlIHZlcnkgZmlyc3QgaW5zdHJ1Y3Rpb24gb2YgdGhlIGxpZyBrZXJuIGFycmF5IGhhcyBgYHNraXBfYnl0ZSA9IDI1NWBgLCB0aGUgYGBuZXh0X2NoYXJgYCBieXRlIGlzIHRoZSBzby1jYWxsZWQgcmlnaHQgYm91bmRhcnkgY2hhcmFjdGVyIG9mIHRoaXMgZm9udDsgdGhlIHZhbHVlIG9mIGBgbmV4dF9jaGFyYGAgbmVlZCBub3QgbGllIGJldHdlZW4gYGBiY2BgIGFuZCBgYGVjYGAuXG4gKiBJZiB0aGUgdmVyeSBsYXN0IGluc3RydWN0aW9uIG9mIHRoZSBsaWcga2VybiBhcnJheSBoYXMgYGBza2lwX2J5dGUgPSAyNTVgYCwgdGhlcmUgaXMgYSBzcGVjaWFsIGxpZ2F0dXJlL2tlcm5pbmcgcHJvZ3JhbSBmb3IgYSBsZWZ0IGJvdW5kYXJ5IGNoYXJhY3RlciwgYmVnaW5uaW5nIGF0IGxvY2F0aW9uIGBgMjU2ICogb3BfYnl0ZSArIHJlbWFpbmRlcmBgLlxuICogVGhlIGludGVycHJldGF0aW9uIGlzIHRoYXQgVEVYIHB1dHMgaW1wbGljaXQgYm91bmRhcnkgY2hhcmFjdGVycyBiZWZvcmUgYW5kIGFmdGVyIGVhY2ggY29uc2VjdXRpdmUgc3RyaW5nIG9mIGNoYXJhY3RlcnMgZnJvbSB0aGUgc2FtZSBmb250LlxuICogVGhlc2UgaW1wbGljaXQgY2hhcmFjdGVycyBkbyBub3QgYXBwZWFyIGluIHRoZSBvdXRwdXQsIGJ1dCB0aGV5IGNhbiBhZmZlY3QgbGlnYXR1cmVzIGFuZCBrZXJuaW5nLlxuICpcbiAqIElmIHRoZSB2ZXJ5IGZpcnN0IGluc3RydWN0aW9uIG9mIGEgY2hhcmFjdGVyJ3MgYGBsaWdfa2VybmBgIHByb2dyYW0gaGFzIGBgc2tpcF9ieXRlID4gMTI4YGAsIHRoZSBwcm9ncmFtIGFjdHVhbGx5IGJlZ2lucyBpbiBsb2NhdGlvbiBgYDI1NiAqIG9wX2J5dGUgKyByZW1haW5kZXJgYC5cbiAqIFRoaXMgZmVhdHVyZSBhbGxvd3MgYWNjZXNzIHRvIGxhcmdlIGxpZyBrZXJuIGFycmF5cywgYmVjYXVzZSB0aGUgZmlyc3QgaW5zdHJ1Y3Rpb24gbXVzdCBvdGhlcndpc2UgYXBwZWFyIGluIGEgbG9jYXRpb24gYGA8PSAyNTVgYC5cbiAqXG4gKiBBbnkgaW5zdHJ1Y3Rpb24gd2l0aCBgYHNraXBfYnl0ZSA+IDEyOGBgIGluIHRoZSBsaWcga2VybiBhcnJheSBtdXN0IGhhdmUgYGAyNTYgKiBvcF9ieXRlICsgcmVtYWluZGVyIDwgbmxgYC5cbiAqIElmIHN1Y2ggYW4gaW5zdHJ1Y3Rpb24gaXMgZW5jb3VudGVyZWQgZHVyaW5nIG5vcm1hbCBwcm9ncmFtIGV4ZWN1dGlvbiwgaXQgZGVub3RlcyBhbiB1bmNvbmRpdGlvbmFsIGhhbHQ7IG5vIGxpZ2F0dXJlIGNvbW1hbmQgaXMgcGVyZm9ybWVkLlxuICovXG5jb25zdCByZWFkTGlnS2VyblByb2dyYW1zID0gKGJ1ZmZlcjogbnVtYmVyW10pID0+XG4gIGJ1ZmZlci5tYXAoKGxpZ19rZXJuZWwsIGkpID0+IHtcbiAgICBjb25zdCBza2lwX2J5dGUgPSBsaWdfa2VybmVsID4+IDI0O1xuICAgIGlmICgoaSA9PT0gMCB8fCBpID09PSBidWZmZXIubGVuZ3RoKSAmJiBza2lwX2J5dGUgPT09IDI1NSkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIGBGb250IGhhcyAke1xuICAgICAgICAgIGkgPT09IDAgPyBcInJpZ2h0XCIgOiBcImxlZnRcIlxuICAgICAgICB9IGJvdW5kYXJ5IGNoYXIuIFRoaXMgaXMgbm90IHN1cHBvcnRlZCB5ZXQuYCxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IG5leHRfY2hhciA9IChsaWdfa2VybmVsID4+IDE2KSAmIDB4ZmY7XG4gICAgY29uc3Qgb3BfYnl0ZSA9IChsaWdfa2VybmVsID4+IDgpICYgMHhmZjtcbiAgICBjb25zdCByZW1haW5kZXIgPSBsaWdfa2VybmVsICYgMHhmZjtcblxuICAgIGlmIChvcF9ieXRlID49IEtFUk5fT1BDT0RFKSB7XG4gICAgICAvLyBrZXJuIHN0ZXBcbiAgICAgIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIGNvbnN0IGtlcm5faW5kZXggPSAyNTYgKiAob3BfYnl0ZSAtIEtFUk5fT1BDT0RFKSArIHJlbWFpbmRlcjtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNraXBfYnl0ZSxcbiAgICAgICAgbmV4dF9jaGFyLFxuICAgICAgICBvcF9ieXRlLFxuICAgICAgICBrZXJuOiByZW1haW5kZXIsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIExpZ2F0dXJlIHN0ZXBcbiAgICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLXVudXNlZC12YXJzXG4gICAgY29uc3QgbnVtYmVyX29mX2NoYXJzX3RvX3Bhc3Nfb3ZlciA9IG9wX2J5dGUgPj4gMjtcbiAgICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLXVudXNlZC12YXJzXG4gICAgY29uc3QgY3VycmVudF9jaGFyX2lzX2RlbGV0ZWQgPSAob3BfYnl0ZSAmIDB4MDIpID09IDA7XG4gICAgLy8gZGVuby1saW50LWlnbm9yZSBuby11bnVzZWQtdmFyc1xuICAgIGNvbnN0IG5leHRfY2hhcl9pc19kZWxldGVkID0gKG9wX2J5dGUgJiAweDAxKSA9PSAwO1xuICAgIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tdW51c2VkLXZhcnNcbiAgICBjb25zdCBsaWdhdHVyZV9jaGFyX2NvZGUgPSByZW1haW5kZXI7XG4gICAgcmV0dXJuIHNraXBfYnl0ZSA+PSAxMjhcbiAgICAgID8ge1xuICAgICAgICBza2lwX2J5dGUsXG4gICAgICAgIG5leHRfY2hhcixcbiAgICAgICAgb3BfYnl0ZSxcbiAgICAgICAgcmVtYWluZGVyLFxuICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgIHNraXBfYnl0ZSxcbiAgICAgICAgbmV4dF9jaGFyLFxuICAgICAgICBvcF9ieXRlLFxuICAgICAgICBrZXJuOiByZW1haW5kZXIsXG4gICAgICB9O1xuICB9KTtcblxuZXhwb3J0IHR5cGUgU3ltYm9sRm9udFBhcmFtZXRlciA9IE9taXQ8Rm9udFBhcmFtZXRlciwgXCJjb2Rpbmdfc2NoZW1lXCI+ICYge1xuICBjb2Rpbmdfc2NoZW1lOiBcIlRlWCBtYXRoIHN5bWJvbHNcIjtcbiAgbnVtMTogbnVtYmVyO1xuICBudW0yOiBudW1iZXI7XG4gIG51bTM6IG51bWJlcjtcbiAgZGVub20xOiBudW1iZXI7XG4gIGRlbm9tMjogbnVtYmVyO1xuICBzdXAxOiBudW1iZXI7XG4gIHN1cDI6IG51bWJlcjtcbiAgc3VwMzogbnVtYmVyO1xuICBzdWIxOiBudW1iZXI7XG4gIHN1YjI6IG51bWJlcjtcbiAgc3VwZHJvcDogbnVtYmVyO1xuICBzdWJkcm9wOiBudW1iZXI7XG4gIGRlbGltMTogbnVtYmVyO1xuICBkZWxpbTI6IG51bWJlcjtcbiAgYXhpc19oZWlnaHQ6IG51bWJlcjtcbiAgZGVmYXVsdF9ydWxlX3RoaWNrbmVzcz86IHVuZGVmaW5lZDtcbiAgYmlnX29wX3NwYWNpbmc/OiB1bmRlZmluZWQ7XG59O1xuZXhwb3J0IHR5cGUgRXh0ZW5zaW9uRm9udFBhcmFtZXRlciA9IE9taXQ8Rm9udFBhcmFtZXRlciwgXCJjb2Rpbmdfc2NoZW1lXCI+ICYge1xuICBjb2Rpbmdfc2NoZW1lOiBcIlRlWCBtYXRoIGV4dGVuc2lvblwiIHwgXCJldWxlciBzdWJzdGl0dXRpb25zIG9ubHlcIjtcbiAgZGVmYXVsdF9ydWxlX3RoaWNrbmVzczogbnVtYmVyO1xuICBiaWdfb3Bfc3BhY2luZzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbn07XG5cbmV4cG9ydCB0eXBlIEl0YWxpY0ZvbnRQYXJhbWV0ZXIgPVxuICAmIE9taXQ8Rm9udFBhcmFtZXRlciwgXCJjb2Rpbmdfc2NoZW1lXCIgfCBcImV4dHJhX3NwYWNlXCI+XG4gICYge1xuICAgIGNvZGluZ19zY2hlbWU6IFwiVGVYIG1hdGggaXRhbGljXCI7XG4gIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9udFBhcmFtZXRlciB7XG4gIGNvZGluZ19zY2hlbWU6IHN0cmluZztcbiAgc2xhbnQ6IG51bWJlcjtcbiAgc3BhY2luZzogbnVtYmVyO1xuICBzcGFjZV9zdHJldGNoOiBudW1iZXI7XG4gIHNwYWNlX3NocmluazogbnVtYmVyO1xuICB4X2hlaWdodDogbnVtYmVyO1xuICBxdWFkOiBudW1iZXI7XG4gIGV4dHJhX3NwYWNlOiBudW1iZXI7XG59XG5cbi8qKiBUaGUgZmluYWwgcG9ydGlvbiBvZiBhIFRGTSBmaWUgaXMgdGhlIHBhcmFtIGFycmF5LCB3aGljaCBpcyBhbm90aGVyIHNlcXVlbmNlIG9mIGZpeCB3b3JkIHZhbHVlcy5cbiAqXG4gKiAtIHBhcmFtWzFdID0gYGBzbGFudGBgIGlzIHRoZSBhbW91bnQgb2YgaXRhbGljIHNsYW50LCB3aGljaCBpcyB1c2VkIHRvIGhlbHAgcG9zaXRpb24gYWNjZW50cy5cbiAqIEZvciBleGFtcGxlLCBgYHNsYW50ID0gLjI1YGAgbWVhbnMgdGhhdCB3aGVuIHlvdSBnbyB1cCBvbmUgdW5pdCwgeW91IGFsc28gZ28gLjI1IHVuaXRzIHRvIHRoZSByaWdodC5cbiAqIFRoZSBzbGFudCBpcyBhIHB1cmUgbnVtYmVyOyBpdCdzIHRoZSBvbmx5IGZpeCB3b3JkIG90aGVyIHRoYW4gdGhlIGRlc2lnbiBzaXplIGl0c2VsZiB0aGF0IGlzIG5vdCBzY2FsZWQgYnkgdGhlIGRlc2lnbiBzaXplLlxuICogLSBwYXJhbVsyXSA9IGBgc3BhY2VgYCBpcyB0aGUgbm9ybWFsIHNwYWNpbmcgYmV0d2VlbiB3b3JkcyBpbiB0ZXh0LiBOb3RlIHRoYXQgY2hhcmFjdGVyIFwiIFwiIGluIHRoZSBmb250IG5lZWQgbm90IGhhdmUgYW55dGhpbmcgdG8gZG8gd2l0aCBibGFuayBzcGFjZXMuXG4gKiAtIHBhcmFtWzNdID0gYGBzcGFjZV9zdHJldGNoYGAgaXMgdGhlIGFtb3VudCBvZiBnbHVlIHN0cmV0Y2hpbmcgYmV0d2VlbiB3b3Jkcy5cbiAqIC0gcGFyYW1bNF0gPSBgYHNwYWNlX3Nocmlua2BgIGlzIHRoZSBhbW91bnQgb2YgZ2x1ZSBzaHJpbmtpbmcgYmV0d2VlbiB3b3Jkcy5cbiAqIC0gcGFyYW1bNV0gPSBgYHhfaGVpZ2h0YGAgaXMgdGhlIGhlaWdodCBvZiBsZXR0ZXJzIGZvciB3aGljaCBhY2NlbnRzIGRvbid0IGhhdmUgdG8gYmUgcmFpc2VkIG9yIGxvd2VyZWQuXG4gKiAtIHBhcmFtWzZdID0gYGBxdWFkYGAgaXMgdGhlIHNpemUgb2Ygb25lIGVtIGluIHRoZSBmb250LlxuICogLSBwYXJhbVs3XSA9IGBgZXh0cmFfc3BhY2VgYCBpcyB0aGUgYW1vdW50IGFkZGVkIHRvIHBhcmFtWzJdIGF0IHRoZSBlbmRzIG9mIHNlbnRlbmNlcy5cbiAqXG4gKiBXaGVuIHRoZSBjaGFyYWN0ZXIgY29kaW5nIHNjaGVtZSBpcyBgYFRlWCBtYXRoIHN5bWJvbHNgYCwgdGhlIGZvbnQgaXMgc3VwcG9zZWQgdG8gaGF2ZSAxNSBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgY2FsbGVkIGBgbnVtMWBgLCBgYG51bTJgYCwgYGBudW0zYGAsIGBgZGVub20xYGAsIGBgZGVub20yYGAsIGBgc3VwMWBgLCBgYHN1cDJgYCwgYGBzdXAzYGAsIGBgc3ViMWBgLCBgYHN1YjJgYCwgYGBzdXBkcm9wYGAsIGBgc3ViZHJvcGBgLCBgYGRlbGltMWBgLCBgYGRlbGltMmBgLCBhbmQgYGBheGlzX2hlaWdodGBgLCByZXNwZWN0aXZlbHkuXG4gKiBXaGVuIHRoZSBjaGFyYWN0ZXIgY29kaW5nIHNjaGVtZSBpcyBgYFRlWCBtYXRoIGV4dGVuc2lvbmBgLCB0aGUgZm9udCBpcyBzdXBwb3NlZCB0byBoYXZlIHNpeCBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgY2FsbGVkIGBgZGVmYXVsX3J1bGVfdGhpY2tuZXNzYGAgYW5kIGBgYmlnX29wX3NwYWNpbmcxYGAgdGhyb3VnaCBgYGJpZ19vcF9zcGFjaW5nNWBgLlxuICovXG5jb25zdCByZWFkRm9udFBhcmFtZXJ0ZXJzID0gKFxuICBidWZmZXI6IG51bWJlcltdLFxuICBjb2RpbmdTY2hlbWU6IHN0cmluZyxcbik6XG4gIHwgU3ltYm9sRm9udFBhcmFtZXRlclxuICB8IEV4dGVuc2lvbkZvbnRQYXJhbWV0ZXJcbiAgfCBJdGFsaWNGb250UGFyYW1ldGVyXG4gIHwgRm9udFBhcmFtZXRlciA9PiB7XG4gIC8vICBTZXQgdGhlIGZvbnQgcGFyYW1ldGVycy5cbiAgY29uc3Qgc2xhbnQgPSBidWZmZXJbMF07XG4gIGNvbnN0IHNwYWNpbmcgPSBidWZmZXJbMV07XG4gIGNvbnN0IHNwYWNlX3N0cmV0Y2ggPSBidWZmZXJbMl07XG4gIGNvbnN0IHNwYWNlX3NocmluayA9IGJ1ZmZlclszXTtcbiAgY29uc3QgeF9oZWlnaHQgPSBidWZmZXJbNF07XG4gIGNvbnN0IHF1YWQgPSBidWZmZXJbNV07XG4gIGlmIChjb2RpbmdTY2hlbWUgPT09IFwiVGVYIG1hdGggaXRhbGljXCIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29kaW5nX3NjaGVtZTogY29kaW5nU2NoZW1lLFxuICAgICAgc2xhbnQsXG4gICAgICBzcGFjaW5nLFxuICAgICAgc3BhY2Vfc3RyZXRjaCxcbiAgICAgIHNwYWNlX3NocmluayxcbiAgICAgIHhfaGVpZ2h0LFxuICAgICAgcXVhZCxcbiAgICB9O1xuICB9XG4gIGNvbnN0IGV4dHJhX3NwYWNlID0gYnVmZmVyWzZdO1xuXG4gIGlmIChjb2RpbmdTY2hlbWUgPT09IFwiVGVYIG1hdGggc3ltYm9sc1wiKSB7XG4gICAgLyogIFNldCB0aGUgbWF0aCBzeW1ib2xzIHBhcmFtZXRlcnMuICAqL1xuICAgIGNvbnN0IG51bTEgPSBidWZmZXJbN107XG4gICAgY29uc3QgbnVtMiA9IGJ1ZmZlcls4XTtcbiAgICBjb25zdCBudW0zID0gYnVmZmVyWzldO1xuICAgIGNvbnN0IGRlbm9tMSA9IGJ1ZmZlclsxMF07XG4gICAgY29uc3QgZGVub20yID0gYnVmZmVyWzExXTtcbiAgICBjb25zdCBzdXAxID0gYnVmZmVyWzEyXTtcbiAgICBjb25zdCBzdXAyID0gYnVmZmVyWzEzXTtcbiAgICBjb25zdCBzdXAzID0gYnVmZmVyWzE0XTtcbiAgICBjb25zdCBzdWIxID0gYnVmZmVyWzE1XTtcbiAgICBjb25zdCBzdWIyID0gYnVmZmVyWzE2XTtcbiAgICBjb25zdCBzdXBkcm9wID0gYnVmZmVyWzE3XTtcbiAgICBjb25zdCBzdWJkcm9wID0gYnVmZmVyWzE4XTtcbiAgICBjb25zdCBkZWxpbTEgPSBidWZmZXJbMTldO1xuICAgIGNvbnN0IGRlbGltMiA9IGJ1ZmZlclsyMF07XG4gICAgY29uc3QgYXhpc19oZWlnaHQgPSBidWZmZXJbMjFdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGluZ19zY2hlbWU6IGNvZGluZ1NjaGVtZSxcbiAgICAgIHNsYW50LFxuICAgICAgc3BhY2luZyxcbiAgICAgIHNwYWNlX3N0cmV0Y2gsXG4gICAgICBzcGFjZV9zaHJpbmssXG4gICAgICB4X2hlaWdodCxcbiAgICAgIHF1YWQsXG4gICAgICBleHRyYV9zcGFjZSxcbiAgICAgIG51bTEsXG4gICAgICBudW0yLFxuICAgICAgbnVtMyxcbiAgICAgIGRlbm9tMSxcbiAgICAgIGRlbm9tMixcbiAgICAgIHN1cDEsXG4gICAgICBzdXAyLFxuICAgICAgc3VwMyxcbiAgICAgIHN1YjEsXG4gICAgICBzdWIyLFxuICAgICAgc3VwZHJvcCxcbiAgICAgIHN1YmRyb3AsXG4gICAgICBkZWxpbTEsXG4gICAgICBkZWxpbTIsXG4gICAgICBheGlzX2hlaWdodCxcbiAgICB9O1xuICB9XG5cbiAgaWYgKFxuICAgIGNvZGluZ1NjaGVtZSA9PT0gXCJUZVggbWF0aCBleHRlbnNpb25cIiB8fFxuICAgIGNvZGluZ1NjaGVtZSA9PT0gXCJldWxlciBzdWJzdGl0dXRpb25zIG9ubHlcIlxuICApIHtcbiAgICBjb25zdCBkZWZhdWx0X3J1bGVfdGhpY2tuZXNzID0gYnVmZmVyWzddO1xuICAgIGNvbnN0IGJpZ19vcF9zcGFjaW5nID0gYnVmZmVyLnNsaWNlKDgsIDggKyA1KSBhcyBbXG4gICAgICBudW1iZXIsXG4gICAgICBudW1iZXIsXG4gICAgICBudW1iZXIsXG4gICAgICBudW1iZXIsXG4gICAgICBudW1iZXIsXG4gICAgXTtcbiAgICByZXR1cm4ge1xuICAgICAgY29kaW5nX3NjaGVtZTogY29kaW5nU2NoZW1lLFxuICAgICAgc2xhbnQsXG4gICAgICBzcGFjaW5nLFxuICAgICAgc3BhY2Vfc3RyZXRjaCxcbiAgICAgIHNwYWNlX3NocmluayxcbiAgICAgIHhfaGVpZ2h0LFxuICAgICAgcXVhZCxcbiAgICAgIGV4dHJhX3NwYWNlLFxuICAgICAgZGVmYXVsdF9ydWxlX3RoaWNrbmVzcyxcbiAgICAgIGJpZ19vcF9zcGFjaW5nLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNvZGluZ19zY2hlbWU6IGNvZGluZ1NjaGVtZSxcbiAgICBzbGFudCxcbiAgICBzcGFjaW5nLFxuICAgIHNwYWNlX3N0cmV0Y2gsXG4gICAgc3BhY2Vfc2hyaW5rLFxuICAgIHhfaGVpZ2h0LFxuICAgIHF1YWQsXG4gICAgZXh0cmFfc3BhY2UsXG4gIH07XG59O1xuIiwgImltcG9ydCB7XG4gIEJPUCxcbiAgRE9XTixcbiAgRE9XTjIsXG4gIERPV04zLFxuICBET1dONCxcbiAgRU9QLFxuICBGTlQsXG4gIEZOVDEsXG4gIEZOVDIsXG4gIEZOVDMsXG4gIEZOVDQsXG4gIEZOVF9ERUYsXG4gIEZOVF9ERUYyLFxuICBGTlRfREVGMyxcbiAgRk5UX0RFRjQsXG4gIE5PUCxcbiAgUE9QLFxuICBQT1NULFxuICBQT1NUX1BPU1QsXG4gIFBSRSxcbiAgUFVTSCxcbiAgUFVUMixcbiAgUFVUMyxcbiAgUFVUNCxcbiAgUFVUX0NIQVIsXG4gIFBVVF9SVUxFLFxuICBSSUdIVCxcbiAgUklHSFQyLFxuICBSSUdIVDMsXG4gIFJJR0hUNCxcbiAgU0VUMSxcbiAgU0VUMixcbiAgU0VUMyxcbiAgU0VUNCxcbiAgU0VUX0NIQVIsXG4gIFNFVF9SVUxFLFxuICBXLFxuICBXMSxcbiAgVzIsXG4gIFczLFxuICBXNCxcbiAgWCxcbiAgWDEsXG4gIFgyLFxuICBYMyxcbiAgWDQsXG4gIFhYWCxcbiAgWFhYMixcbiAgWFhYMyxcbiAgWFhYNCxcbiAgWSxcbiAgWTEsXG4gIFkyLFxuICBZMyxcbiAgWTQsXG4gIFosXG4gIFoxLFxuICBaMixcbiAgWjMsXG4gIFo0LFxufSBmcm9tIFwiLi9jb25zdC50c1wiO1xuXG4vLyAxMzNcdHB1dDFcdGNbMV1cdHR5cGVzZXQgYSBjaGFyYWN0ZXJcbi8vIDEzNFx0cHV0Mlx0Y1syXVxuLy8gMTM1XHRwdXQzXHRjWzNdXG4vLyAxMzZcdHB1dDRcdGNbNF1cbmV4cG9ydCBpbnRlcmZhY2UgUHV0Q2hhciB7XG4gIG9wY29kZTogdHlwZW9mIFBVVF9DSEFSO1xuICBjOiBudW1iZXI7XG59XG5cbi8vIDAuLi4xMjdcdHNldF9jaGFyX2lcdFx0dHlwZXNldCBhIGNoYXJhY3RlciBhbmQgbW92ZSByaWdodFxuLy8gMTI4XHRzZXQxXHRjWzFdXHQgICAgICAgICAgICAgICAgdHlwZXNldCBhIGNoYXJhY3RlciBhbmQgbW92ZSByaWdodFxuLy8gMTI5XHRzZXQyXHRjWzJdXG4vLyAxMzBcdHNldDNcdGNbM11cbi8vIDEzMVx0c2V0NFx0Y1s0XVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldENoYXIge1xuICBvcGNvZGU6IHR5cGVvZiBTRVRfQ0hBUjtcbiAgYzogbnVtYmVyO1xufVxuXG4vLyAxMzdcdHB1dF9ydWxlXHRhWzRdLCBiWzRdXHR0eXBlc2V0IGEgcnVsZVxuZXhwb3J0IGludGVyZmFjZSBQdXRSdWxlIHtcbiAgb3Bjb2RlOiB0eXBlb2YgUFVUX1JVTEU7XG4gIGE6IG51bWJlcjtcbiAgYjogbnVtYmVyO1xufVxuXG4vLyAxMzJcdHNldF9ydWxlXHRhWzRdLCBiWzRdXHR0eXBlc2V0IGEgcnVsZSBhbmQgbW92ZSByaWdodFxuXG5leHBvcnQgaW50ZXJmYWNlIFNldFJ1bGUge1xuICBvcGNvZGU6IHR5cGVvZiBTRVRfUlVMRTtcbiAgYTogbnVtYmVyO1xuICBiOiBudW1iZXI7XG59XG5cbi8vIDEzOFx0bm9wXHRcdG5vIG9wZXJhdGlvblxuXG5leHBvcnQgaW50ZXJmYWNlIE5vcCB7XG4gIG9wY29kZTogdHlwZW9mIE5PUDtcbn1cblxuLy8gMTM5XHRib3BcdGNfMFs0XS4uY185WzRdLCBwWzRdXHRiZWdpbm5pbmcgb2YgcGFnZVxuZXhwb3J0IGludGVyZmFjZSBCb3Age1xuICBvcGNvZGU6IHR5cGVvZiBCT1A7XG4gIGNfMDogbnVtYmVyO1xuICBjXzE6IG51bWJlcjtcbiAgY18yOiBudW1iZXI7XG4gIGNfMzogbnVtYmVyO1xuICBjXzQ6IG51bWJlcjtcbiAgY181OiBudW1iZXI7XG4gIGNfNjogbnVtYmVyO1xuICBjXzc6IG51bWJlcjtcbiAgY184OiBudW1iZXI7XG4gIGNfOTogbnVtYmVyO1xuICBwOiBudW1iZXI7XG59XG5cbi8vIDE0MFx0ZW9wXHRcdGVuZGluZyBvZiBwYWdlXG5leHBvcnQgaW50ZXJmYWNlIEVvcCB7XG4gIG9wY29kZTogdHlwZW9mIEVPUDtcbn1cblxuLy8gMTQxXHRwdXNoXHRcdHNhdmUgdGhlIGN1cnJlbnQgcG9zaXRpb25zXG5leHBvcnQgaW50ZXJmYWNlIFB1c2gge1xuICBvcGNvZGU6IHR5cGVvZiBQVVNIO1xufVxuXG4vLyAxNDJcdHBvcFx0XHRyZXN0b3JlIHByZXZpb3VzIHBvc2l0aW9uc1xuZXhwb3J0IGludGVyZmFjZSBQb3Age1xuICBvcGNvZGU6IHR5cGVvZiBQT1A7XG59XG5cbi8vIDE0M1x0cmlnaHQxXHRiWzFdXHRtb3ZlIHJpZ2h0XG4vLyAxNDRcdHJpZ2h0Mlx0YlsyXVxuLy8gMTQ1XHRyaWdodDNcdGJbM11cbi8vIDE0Nlx0cmlnaHQ0XHRiWzRdXG5leHBvcnQgaW50ZXJmYWNlIE1vdmVSaWdodCB7XG4gIG9wY29kZTogdHlwZW9mIFJJR0hUO1xuICBiOiBudW1iZXI7XG59XG5cbi8vIDE0N1x0dzBcdFx0bW92ZSByaWdodCBieSB3XG4vLyAxNDhcdHcxXHRiWzFdXHRtb3ZlIHJpZ2h0IGFuZCBzZXQgd1xuLy8gMTQ5XHR3Mlx0YlsyXVxuLy8gMTUwXHR3M1x0YlszXVxuLy8gMTUxXHR3NFx0Yls0XVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vdmVXIHtcbiAgb3Bjb2RlOiB0eXBlb2YgVztcbiAgYjogbnVtYmVyO1xufVxuXG4vLyAxNTJcdHgwXHRcdG1vdmUgcmlnaHQgYnkgeFxuLy8gMTUzXHR4MVx0YlsxXVx0bW92ZSByaWdodCBhbmQgc2V0IHhcbi8vIDE1NFx0eDJcdGJbMl1cbi8vIDE1NVx0eDNcdGJbM11cbi8vIDE1Nlx0eDRcdGJbNF1cblxuZXhwb3J0IGludGVyZmFjZSBNb3ZlWCB7XG4gIG9wY29kZTogdHlwZW9mIFg7XG4gIGI6IG51bWJlcjtcbn1cblxuLy8gMTU3XHRkb3duMVx0YVsxXVx0bW92ZSBkb3duXG4vLyAxNThcdGRvd24yXHRhWzJdXG4vLyAxNTlcdGRvd24zXHRhWzNdXG4vLyAxNjBcdGRvd240XHRhWzRdXG5cbmV4cG9ydCBpbnRlcmZhY2UgTW92ZURvd24ge1xuICBvcGNvZGU6IHR5cGVvZiBET1dOO1xuICBhOiBudW1iZXI7XG59XG5cbi8vIDE2MVx0eTBcdFx0bW92ZSBkb3duIGJ5IHlcbi8vIDE2Mlx0eTFcdGFbMV1cdG1vdmUgZG93biBhbmQgc2V0IHlcbi8vIDE2M1x0eTJcdGFbMl1cbi8vIDE2NFx0eTNcdGFbM11cbi8vIDE2NVx0eTRcdGFbNF1cblxuZXhwb3J0IGludGVyZmFjZSBNb3ZlWSB7XG4gIG9wY29kZTogdHlwZW9mIFk7XG4gIGE6IG51bWJlcjtcbn1cblxuLy8gMTY2XHR6MFx0XHRtb3ZlIGRvd24gYnkgelxuLy8gMTY3XHR6MVx0YVsxXVx0bW92ZSBkb3duIGFuZCBzZXQgelxuLy8gMTY4XHR6Mlx0YVsyXVxuLy8gMTY5XHR6M1x0YVszXVxuLy8gMTcwXHR6NFx0YVs0XVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vdmVaIHtcbiAgb3Bjb2RlOiB0eXBlb2YgWjtcbiAgYTogbnVtYmVyO1xufVxuXG4vLyAxNzEuLi4yMzRcdGZudF9udW1faVx0XHRzZXQgY3VycmVudCBmb250IHRvIGlcbi8vIDIzNVx0Zm50MVx0a1sxXVx0c2V0IGN1cnJlbnQgZm9udFxuLy8gMjM2XHRmbnQyXHRrWzJdXG4vLyAyMzdcdGZudDNcdGtbM11cbi8vIDIzOFx0Zm50NFx0a1s0XVxuZXhwb3J0IGludGVyZmFjZSBTZXRGb250IHtcbiAgb3Bjb2RlOlxuICAgIHwgdHlwZW9mIEZOVFxuICAgIHwgdHlwZW9mIEZOVDFcbiAgICB8IHR5cGVvZiBGTlQyXG4gICAgfCB0eXBlb2YgRk5UM1xuICAgIHwgdHlwZW9mIEZOVDQ7XG4gIGs6IG51bWJlcjtcbn1cblxuLy8gMjM5XHR4eHgxXHRrWzFdLCB4W2tdXHRleHRlbnNpb24gdG8gRFZJIHByaW1pdGl2ZXNcbi8vIDI0MFx0eHh4Mlx0a1syXSwgeFtrXVxuLy8gMjQxXHR4eHgzXHRrWzNdLCB4W2tdXG4vLyAyNDJcdHh4eDRcdGtbNF0sIHhba11cbmV4cG9ydCBpbnRlcmZhY2UgWFhYIHtcbiAgb3Bjb2RlOiB0eXBlb2YgWFhYO1xuICB4OiBVaW50OEFycmF5O1xuICBrOiBudW1iZXI7XG59XG5cbi8vIDI0M1x0Zm50X2RlZjFcdGtbMV0sIGNbNF0sIHNbNF0sIGRbNF0sXG4vLyBhWzFdLCBsWzFdLCBuW2ErbF1cdGRlZmluZSB0aGUgbWVhbmluZyBvZiBhIGZvbnQgbnVtYmVyXG4vLyAyNDRcdGZudF9kZWYyXHRrWzJdLCBjWzRdLCBzWzRdLCBkWzRdLFxuLy8gYVsxXSwgbFsxXSwgblthK2xdXG4vLyAyNDVcdGZudF9kZWYzXHRrWzNdLCBjWzRdLCBzWzRdLCBkWzRdLFxuLy8gYVsxXSwgbFsxXSwgblthK2xdXG4vLyAyNDZcdGZudF9kZWY0XHRrWzRdLCBjWzRdLCBzWzRdLCBkWzRdLFxuLy8gYVsxXSwgbFsxXSwgblthK2xdXG5leHBvcnQgaW50ZXJmYWNlIEZvbnREZWZpbml0aW9uIHtcbiAgb3Bjb2RlOiB0eXBlb2YgRk5UX0RFRjtcbiAgLyoqIGZvbnQgaWQgKi9cbiAgazogbnVtYmVyO1xuICAvKiogY2hlY2tzdW0gKi9cbiAgYzogbnVtYmVyO1xuICAvKiogZml4ZWQtcG9pbnQgc2NhbGUgZmFjdG9yIChhcHBsaWVkIHRvIGNoYXIgd2lkdGhzIG9mIGZvbnQpICovXG4gIHM6IG51bWJlcjtcbiAgLyoqIGRlc2lnbi1zaXplIGZhY3RvcnMgd2l0aCB0aGUgbWFnbmlmaWNhdGlvbiAoYHMvMTAwMGApICovXG4gIGQ6IG51bWJlcjtcbiAgLyoqIGxlbmd0aCBvZiBkaXJlY3RvcnkgcGF0aCBvZiBmb250IChgLi9gIGlmIGEgPSAwKSAqL1xuICBhOiBudW1iZXI7XG4gIC8qKiBsZW5ndGggb2YgZm9udCBuYW1lICovXG4gIGw6IG51bWJlcjtcbiAgLyoqIGZvbnQgbmFtZSAoZmlyc3QgYGFgIGJ5dGVzIGlzIGRpciwgcmVtYWluaW5nIGBsYCA9IG5hbWUpICovXG4gIG46IHN0cmluZztcbn1cblxuLy8gMjQ3XHRwcmVcdGlbMV0sIG51bVs0XSwgZGVuWzRdLCBtYWdbNF0sICBrWzFdLCB4W2tdXHRwcmVhbWJsZVxuZXhwb3J0IGludGVyZmFjZSBQcmVhbWJsZSB7XG4gIG9wY29kZTogdHlwZW9mIFBSRTtcbiAgaTogbnVtYmVyO1xuICBudW06IG51bWJlcjtcbiAgZGVuOiBudW1iZXI7XG4gIG1hZzogbnVtYmVyO1xuICB4OiBzdHJpbmc7XG4gIGs6IG51bWJlcjtcbn1cblxuLy8gMjQ4XHRwb3N0XHRwWzRdLCBudW1bNF0sIGRlbls0XSwgbWFnWzRdLCBsWzRdLCB1WzRdLCBzWzJdLCB0WzJdXG4vLyA8IGZvbnQgZGVmaW5pdGlvbnMgPlx0cG9zdGFtYmxlIGJlZ2lubmluZ1xuZXhwb3J0IGludGVyZmFjZSBQb3N0IHtcbiAgb3Bjb2RlOiB0eXBlb2YgUE9TVDtcbiAgcDogbnVtYmVyO1xuICBudW06IG51bWJlcjtcbiAgZGVuOiBudW1iZXI7XG4gIG1hZzogbnVtYmVyO1xuICBsOiBudW1iZXI7XG4gIHU6IG51bWJlcjtcbiAgczogbnVtYmVyO1xuICB0OiBudW1iZXI7XG59XG5cbi8vIDI0OVx0cG9zdF9wb3N0XHRxWzRdLCBpWzFdOyAyMjMnc1x0cG9zdGFtYmxlIGVuZGluZ1xuXG5leHBvcnQgaW50ZXJmYWNlIFBvc3RQb3N0IHtcbiAgb3Bjb2RlOiB0eXBlb2YgUE9TVF9QT1NUO1xuICBxOiBudW1iZXI7XG4gIGk6IG51bWJlcjtcbn1cblxuLy8gMjUwLi4uMjU1XHR1bmRlZmluZWRcblxuZXhwb3J0IHR5cGUgQ29tbWFuZCA9IFJlYWRvbmx5PFxuICB8IFNldENoYXJcbiAgfCBTZXRSdWxlXG4gIHwgUHV0Q2hhclxuICB8IFB1dFJ1bGVcbiAgfCBOb3BcbiAgfCBCb3BcbiAgfCBFb3BcbiAgfCBQdXNoXG4gIHwgUG9wXG4gIHwgTW92ZVJpZ2h0XG4gIHwgTW92ZVdcbiAgfCBNb3ZlWFxuICB8IE1vdmVEb3duXG4gIHwgTW92ZVlcbiAgfCBNb3ZlWlxuICB8IFNldEZvbnRcbiAgfCBYWFhcbiAgfCBGb250RGVmaW5pdGlvblxuICB8IFByZWFtYmxlXG4gIHwgUG9zdFxuICB8IFBvc3RQb3N0XG4+O1xuXG5leHBvcnQgaW50ZXJmYWNlIER2aUNvbW1hbmQge1xuICBvcGNvZGU6IG51bWJlcjtcbn1cblxuY29uc3QgcGFyc2VDb21tYW5kID0gKFxuICBidWZmZXI6IFVpbnQ4QXJyYXksXG4pOiBbQ29tbWFuZCwgbnVtYmVyXSB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IG9wY29kZSA9IGJ1ZmZlclswXTtcbiAgaWYgKChTRVRfQ0hBUiA8PSBvcGNvZGUpICYmIChvcGNvZGUgPCBTRVQxKSkge1xuICAgIHJldHVybiBbeyBvcGNvZGU6IFNFVF9DSEFSLCBjOiBvcGNvZGUgfSwgMV07XG4gIH1cblxuICBpZiAoKEZOVCA8PSBvcGNvZGUpICYmIChvcGNvZGUgPCBGTlQxKSkge1xuICAgIHJldHVybiBbeyBvcGNvZGU6IEZOVCwgazogb3Bjb2RlIC0gRk5UIH0sIDFdO1xuICB9XG5cbiAgLy8gVGVjaG5pY2FsbHkgdGhlc2UgYXJlIHVuZGVmaW5lZCBvcGNvZGVzLCBidXQgd2UnbGwgcHJldGVuZCB0aGV5IGFyZSBOT1BzXG4gIGlmICgoUE9TVF9QT1NUIDwgb3Bjb2RlKSAmJiAob3Bjb2RlIDw9IDI1NSkpIHtcbiAgICByZXR1cm4gW3sgb3Bjb2RlOiBOT1AgfSwgMV07XG4gIH1cblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KFxuICAgIGJ1ZmZlci5idWZmZXIsXG4gICAgYnVmZmVyLmJ5dGVPZmZzZXQsXG4gICAgYnVmZmVyLmJ5dGVMZW5ndGgsXG4gICk7XG5cbiAgc3dpdGNoIChvcGNvZGUpIHtcbiAgICBjYXNlIFNFVDE6XG4gICAgY2FzZSBTRVQyOlxuICAgIGNhc2UgU0VUMzpcbiAgICBjYXNlIFNFVDQ6IHtcbiAgICAgIGNvbnN0IGNoYXJMZW5ndGggPSAob3Bjb2RlIC0gU0VUMSArIDEpIGFzICgxIHwgMiB8IDMgfCA0KTtcbiAgICAgIGlmIChidWZmZXIuYnl0ZUxlbmd0aCA8IGNoYXJMZW5ndGggKyAxKSByZXR1cm47XG4gICAgICByZXR1cm4gW3tcbiAgICAgICAgb3Bjb2RlOiBTRVRfQ0hBUixcbiAgICAgICAgYzogcmVhZFVpbnQoYnVmZmVyLCAxLCBjaGFyTGVuZ3RoKSxcbiAgICAgIH0sIGNoYXJMZW5ndGggKyAxXTtcbiAgICB9XG4gICAgY2FzZSBTRVRfUlVMRTpcbiAgICBjYXNlIFBVVF9SVUxFOlxuICAgICAgaWYgKGJ1ZmZlci5ieXRlTGVuZ3RoIDwgOSkgcmV0dXJuO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgeyBvcGNvZGUsIGE6IHZpZXcuZ2V0SW50MzIoMSksIGI6IHZpZXcuZ2V0SW50MzIoNSkgfSxcbiAgICAgICAgOSxcbiAgICAgIF07XG4gICAgY2FzZSBQVVRfQ0hBUjpcbiAgICBjYXNlIFBVVDI6XG4gICAgY2FzZSBQVVQzOlxuICAgIGNhc2UgUFVUNDoge1xuICAgICAgY29uc3QgY2hhckxlbmd0aCA9IChvcGNvZGUgLSBTRVQxICsgMSkgYXMgKDEgfCAyIHwgMyB8IDQpO1xuICAgICAgaWYgKGJ1ZmZlci5ieXRlTGVuZ3RoIDwgY2hhckxlbmd0aCArIDEpIHJldHVybjtcbiAgICAgIHJldHVybiBbe1xuICAgICAgICBvcGNvZGU6IFBVVF9DSEFSLFxuICAgICAgICBjOiByZWFkVWludChidWZmZXIsIDEsIGNoYXJMZW5ndGgpLFxuICAgICAgfSwgY2hhckxlbmd0aCArIDFdO1xuICAgIH1cbiAgICBjYXNlIE5PUDpcbiAgICBjYXNlIEVPUDpcbiAgICBjYXNlIFBVU0g6XG4gICAgY2FzZSBQT1A6XG4gICAgICByZXR1cm4gW3sgb3Bjb2RlIH0sIDFdO1xuICAgIGNhc2UgQk9QOlxuICAgICAgaWYgKGJ1ZmZlci5ieXRlTGVuZ3RoIDwgNDUpIHJldHVybjtcbiAgICAgIHJldHVybiBbe1xuICAgICAgICBvcGNvZGUsXG4gICAgICAgIGNfMDogdmlldy5nZXRVaW50MzIoMSksXG4gICAgICAgIGNfMTogdmlldy5nZXRVaW50MzIoNSksXG4gICAgICAgIGNfMjogdmlldy5nZXRVaW50MzIoOSksXG4gICAgICAgIGNfMzogdmlldy5nZXRVaW50MzIoMTMpLFxuICAgICAgICBjXzQ6IHZpZXcuZ2V0VWludDMyKDE3KSxcbiAgICAgICAgY181OiB2aWV3LmdldFVpbnQzMigyMSksXG4gICAgICAgIGNfNjogdmlldy5nZXRVaW50MzIoMjUpLFxuICAgICAgICBjXzc6IHZpZXcuZ2V0VWludDMyKDI5KSxcbiAgICAgICAgY184OiB2aWV3LmdldFVpbnQzMigzMyksXG4gICAgICAgIGNfOTogdmlldy5nZXRVaW50MzIoMzcpLFxuICAgICAgICBwOiB2aWV3LmdldEludDMyKDQxKSxcbiAgICAgIH0sIDQ1XTtcbiAgICBjYXNlIFJJR0hUOlxuICAgIGNhc2UgUklHSFQyOlxuICAgIGNhc2UgUklHSFQzOlxuICAgIGNhc2UgUklHSFQ0OiB7XG4gICAgICBjb25zdCBsZW5ndGggPSAob3Bjb2RlIC0gUklHSFQgKyAxKSBhcyAoMSB8IDIgfCAzIHwgNCk7XG4gICAgICBpZiAoYnVmZmVyLmJ5dGVMZW5ndGggPCBsZW5ndGggKyAxKSByZXR1cm47XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgb3Bjb2RlOiBSSUdIVCxcbiAgICAgICAgICBiOiByZWFkSW50KGJ1ZmZlciwgMSwgbGVuZ3RoKSxcbiAgICAgICAgfSxcbiAgICAgICAgbGVuZ3RoICsgMSxcbiAgICAgIF07XG4gICAgfVxuICAgIGNhc2UgVzpcbiAgICBjYXNlIFg6XG4gICAgICByZXR1cm4gW3sgb3Bjb2RlLCBiOiAwIH0sIDFdO1xuICAgIGNhc2UgVzE6XG4gICAgY2FzZSBXMjpcbiAgICBjYXNlIFczOlxuICAgIGNhc2UgVzQ6IHtcbiAgICAgIGNvbnN0IGxlbmd0aCA9IChvcGNvZGUgLSBXKSBhcyAoMSB8IDIgfCAzIHwgNCk7XG4gICAgICBpZiAoYnVmZmVyLmJ5dGVMZW5ndGggPCBsZW5ndGggKyAxKSByZXR1cm47XG4gICAgICByZXR1cm4gW3tcbiAgICAgICAgb3Bjb2RlOiBXLFxuICAgICAgICBiOiByZWFkSW50KGJ1ZmZlciwgMSwgbGVuZ3RoKSxcbiAgICAgIH0sIGxlbmd0aCArIDFdO1xuICAgIH1cbiAgICBjYXNlIFgxOlxuICAgIGNhc2UgWDI6XG4gICAgY2FzZSBYMzpcbiAgICBjYXNlIFg0OiB7XG4gICAgICBjb25zdCBsZW5ndGggPSAob3Bjb2RlIC0gWCkgYXMgKDEgfCAyIHwgMyB8IDQpO1xuICAgICAgaWYgKGJ1ZmZlci5ieXRlTGVuZ3RoIDwgbGVuZ3RoICsgMSkgcmV0dXJuO1xuICAgICAgcmV0dXJuIFt7XG4gICAgICAgIG9wY29kZTogWCxcbiAgICAgICAgYjogcmVhZEludChidWZmZXIsIDEsIGxlbmd0aCksXG4gICAgICB9LCBsZW5ndGggKyAxXTtcbiAgICB9XG4gICAgY2FzZSBET1dOOlxuICAgIGNhc2UgRE9XTjI6XG4gICAgY2FzZSBET1dOMzpcbiAgICBjYXNlIERPV040OiB7XG4gICAgICBjb25zdCBsZW5ndGggPSAob3Bjb2RlIC0gRE9XTiArIDEpIGFzICgxIHwgMiB8IDMgfCA0KTtcbiAgICAgIGlmIChidWZmZXIuYnl0ZUxlbmd0aCA8IGxlbmd0aCArIDEpIHJldHVybjtcbiAgICAgIHJldHVybiBbe1xuICAgICAgICBvcGNvZGU6IERPV04sXG4gICAgICAgIGE6IHJlYWRJbnQoYnVmZmVyLCAxLCBsZW5ndGgpLFxuICAgICAgfSwgbGVuZ3RoICsgMV07XG4gICAgfVxuICAgIGNhc2UgWTpcbiAgICBjYXNlIFo6XG4gICAgICByZXR1cm4gW3sgb3Bjb2RlLCBhOiAwIH0sIDFdO1xuICAgIGNhc2UgWTE6XG4gICAgY2FzZSBZMjpcbiAgICBjYXNlIFkzOlxuICAgIGNhc2UgWTQ6IHtcbiAgICAgIGNvbnN0IGxlbmd0aCA9IChvcGNvZGUgLSBZKSBhcyAoMSB8IDIgfCAzIHwgNCk7XG4gICAgICBpZiAoYnVmZmVyLmJ5dGVMZW5ndGggPCBsZW5ndGggKyAxKSByZXR1cm47XG4gICAgICByZXR1cm4gW3tcbiAgICAgICAgb3Bjb2RlOiBZLFxuICAgICAgICBhOiByZWFkSW50KGJ1ZmZlciwgMSwgbGVuZ3RoKSxcbiAgICAgIH0sIGxlbmd0aCArIDFdO1xuICAgIH1cbiAgICBjYXNlIFoxOlxuICAgIGNhc2UgWjI6XG4gICAgY2FzZSBaMzpcbiAgICBjYXNlIFo0OiB7XG4gICAgICBjb25zdCBsZW5ndGggPSAob3Bjb2RlIC0gWikgYXMgKDEgfCAyIHwgMyB8IDQpO1xuICAgICAgaWYgKGJ1ZmZlci5ieXRlTGVuZ3RoIDwgbGVuZ3RoICsgMSkgcmV0dXJuO1xuICAgICAgcmV0dXJuIFt7XG4gICAgICAgIG9wY29kZTogWixcbiAgICAgICAgYTogcmVhZEludChidWZmZXIsIDEsIGxlbmd0aCksXG4gICAgICB9LCBsZW5ndGggKyAxXTtcbiAgICB9XG4gICAgY2FzZSBGTlQxOlxuICAgIGNhc2UgRk5UMjpcbiAgICBjYXNlIEZOVDM6XG4gICAgY2FzZSBGTlQ0OiB7XG4gICAgICBjb25zdCBsZW5ndGggPSAob3Bjb2RlIC0gRk5UMSArIDEpIGFzICgxIHwgMiB8IDMgfCA0KTtcbiAgICAgIGlmIChidWZmZXIuYnl0ZUxlbmd0aCA8IGxlbmd0aCArIDEpIHJldHVybjtcbiAgICAgIHJldHVybiBbe1xuICAgICAgICBvcGNvZGU6IEZOVCxcbiAgICAgICAgazogcmVhZEludChidWZmZXIsIDEsIGxlbmd0aCksXG4gICAgICB9LCBsZW5ndGggKyAxXTtcbiAgICB9XG4gICAgY2FzZSBYWFg6XG4gICAgY2FzZSBYWFgyOlxuICAgIGNhc2UgWFhYMzpcbiAgICBjYXNlIFhYWDQ6IHtcbiAgICAgIGNvbnN0IGxlbmd0aCA9IChvcGNvZGUgLSBYWFggKyAxKSBhcyAoMSB8IDIgfCAzIHwgNCk7XG4gICAgICBpZiAoYnVmZmVyLmJ5dGVMZW5ndGggPCBsZW5ndGggKyAxKSByZXR1cm47XG4gICAgICBjb25zdCBrID0gcmVhZFVpbnQoYnVmZmVyLCAxLCBsZW5ndGgpO1xuICAgICAgaWYgKGJ1ZmZlci5ieXRlTGVuZ3RoIDwgbGVuZ3RoICsgMSArIGspIHJldHVybjtcbiAgICAgIHJldHVybiBbe1xuICAgICAgICBvcGNvZGU6IFhYWCxcbiAgICAgICAgeDogYnVmZmVyLnN1YmFycmF5KGxlbmd0aCArIDEsIGxlbmd0aCArIDEgKyBrKSxcbiAgICAgICAgayxcbiAgICAgIH0sIGxlbmd0aCArIDEgKyBrXTtcbiAgICB9XG4gICAgY2FzZSBGTlRfREVGOlxuICAgIGNhc2UgRk5UX0RFRjI6XG4gICAgY2FzZSBGTlRfREVGMzpcbiAgICBjYXNlIEZOVF9ERUY0OiB7XG4gICAgICBjb25zdCBsZW5ndGggPSAob3Bjb2RlIC0gRk5UX0RFRiArIDEpIGFzICgxIHwgMiB8IDMgfCA0KTtcbiAgICAgIGlmIChidWZmZXIuYnl0ZUxlbmd0aCA8IGxlbmd0aCArIDEpIHJldHVybjtcbiAgICAgIGNvbnN0IGsgPSByZWFkSW50KGJ1ZmZlciwgMSwgbGVuZ3RoKTtcbiAgICAgIGlmIChidWZmZXIuYnl0ZUxlbmd0aCA8IGxlbmd0aCArIDE1KSByZXR1cm47XG4gICAgICBjb25zdCBhID0gYnVmZmVyW2xlbmd0aCArIDEzXTtcbiAgICAgIGNvbnN0IGwgPSBidWZmZXJbbGVuZ3RoICsgMTRdO1xuICAgICAgaWYgKGJ1ZmZlci5ieXRlTGVuZ3RoIDwgbGVuZ3RoICsgMTUgKyBhICsgbCkgcmV0dXJuO1xuICAgICAgcmV0dXJuIFt7XG4gICAgICAgIG9wY29kZTogRk5UX0RFRixcbiAgICAgICAgayxcbiAgICAgICAgYzogdmlldy5nZXRVaW50MzIobGVuZ3RoICsgMSksXG4gICAgICAgIHM6IHZpZXcuZ2V0VWludDMyKGxlbmd0aCArIDUpLFxuICAgICAgICBkOiB2aWV3LmdldFVpbnQzMihsZW5ndGggKyA5KSxcbiAgICAgICAgYSxcbiAgICAgICAgbCxcbiAgICAgICAgbjogbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKFxuICAgICAgICAgIGJ1ZmZlci5zdWJhcnJheShsZW5ndGggKyAxNSwgbGVuZ3RoICsgMTUgKyBhICsgbCksXG4gICAgICAgICksXG4gICAgICB9LCBsZW5ndGggKyAxNSArIGEgKyBsXTtcbiAgICB9XG4gICAgY2FzZSBQUkU6IHtcbiAgICAgIGlmIChidWZmZXIuYnl0ZUxlbmd0aCA8IDE1KSByZXR1cm47XG4gICAgICBjb25zdCBpID0gYnVmZmVyWzFdO1xuICAgICAgY29uc3QgayA9IGJ1ZmZlclsxNF07XG4gICAgICBpZiAoYnVmZmVyLmJ5dGVMZW5ndGggPCAxNSArIGspIHJldHVybjtcbiAgICAgIHJldHVybiBbe1xuICAgICAgICBvcGNvZGUsXG4gICAgICAgIGksXG4gICAgICAgIG51bTogdmlldy5nZXRVaW50MzIoMiksXG4gICAgICAgIGRlbjogdmlldy5nZXRVaW50MzIoNiksXG4gICAgICAgIG1hZzogdmlldy5nZXRVaW50MzIoMTApLFxuICAgICAgICB4OiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoYnVmZmVyLnN1YmFycmF5KDE1LCAxNSArIGspKSxcbiAgICAgICAgayxcbiAgICAgIH0sIDE1ICsga107XG4gICAgfVxuICAgIGNhc2UgUE9TVDpcbiAgICAgIGlmIChidWZmZXIuYnl0ZUxlbmd0aCA8IDI5KSByZXR1cm47XG4gICAgICByZXR1cm4gW3tcbiAgICAgICAgb3Bjb2RlLFxuICAgICAgICBwOiB2aWV3LmdldFVpbnQzMigxKSxcbiAgICAgICAgbnVtOiB2aWV3LmdldFVpbnQzMig1KSxcbiAgICAgICAgZGVuOiB2aWV3LmdldFVpbnQzMig5KSxcbiAgICAgICAgbWFnOiB2aWV3LmdldFVpbnQzMigxMyksXG4gICAgICAgIGw6IHZpZXcuZ2V0VWludDMyKDE3KSxcbiAgICAgICAgdTogdmlldy5nZXRVaW50MzIoMjEpLFxuICAgICAgICBzOiB2aWV3LmdldFVpbnQxNigyNSksXG4gICAgICAgIHQ6IHZpZXcuZ2V0VWludDE2KDI3KSxcbiAgICAgIH0sIDI5XTtcbiAgICBjYXNlIFBPU1RfUE9TVDpcbiAgICAgIGlmIChidWZmZXIuYnl0ZUxlbmd0aCA8IDYpIHJldHVybjtcbiAgICAgIHJldHVybiBbe1xuICAgICAgICBvcGNvZGUsXG4gICAgICAgIHE6IHZpZXcuZ2V0VWludDMyKDEpLFxuICAgICAgICBpOiB2aWV3LmdldFVpbnQ4KDUpLFxuICAgICAgfSwgNl07XG4gIH1cbiAgcmV0dXJuO1xufTtcblxuLyoqXG4gKiBQYXJzZXMgdGhlIGdpdmVuIERWSSAoRGV2aWNlIEluZGVwZW5kZW50KSBkYXRhIGFuZCB5aWVsZHMgYSBzZXF1ZW5jZSBvZiBjb21tYW5kcy5cbiAqXG4gKiBAcGFyYW0gZHZpIC0gVGhlIERWSSBkYXRhIHRvIHBhcnNlLCByZXByZXNlbnRlZCBhcyBhIFVpbnQ4QXJyYXkuXG4gKiBAcmV0dXJucyBBIGdlbmVyYXRvciB0aGF0IHlpZWxkcyBlYWNoIHBhcnNlZCBjb21tYW5kLlxuICogQHRocm93cyBBbiBlcnJvciBpZiBhbiBpbnZhbGlkIGNvbW1hbmQgaXMgZW5jb3VudGVyZWQgb3IgaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiAyMjMgYnl0ZXMgYWZ0ZXIgdGhlIHBvc3QtcG9zdGFtYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24qIHRva2VuaXplKGR2aTogVWludDhBcnJheSk6IEdlbmVyYXRvcjxDb21tYW5kPiB7XG4gIGxldCBidWZmZXIgPSBkdmk7XG4gIGxldCBvZmZzZXQgPSAwO1xuXG4gIHdoaWxlIChvZmZzZXQgPCBkdmkuYnl0ZUxlbmd0aCkge1xuICAgIGNvbnN0IFtjb21tYW5kLCBsZW5ndGhdID0gcGFyc2VDb21tYW5kKGJ1ZmZlcikgPz8gWywgMF07XG4gICAgb2Zmc2V0ICs9IGxlbmd0aDtcbiAgICBidWZmZXIgPSBidWZmZXIuc3ViYXJyYXkobGVuZ3RoKTtcbiAgICBpZiAoIWNvbW1hbmQpIGJyZWFrO1xuICAgIGlmIChjb21tYW5kLm9wY29kZSA9PT0gUE9TVF9QT1NUKSB7XG4gICAgICBpZiAoYnVmZmVyLmV2ZXJ5KChieXRlKSA9PiBieXRlID09PSAyMjMpKSBicmVhaztcbiAgICAgIHRocm93IEVycm9yKFwiT25seSAyMjMgYnl0ZXMgYXJlIHBlcm1pdHRlZCBhZnRlciB0aGUgcG9zdC1wb3N0YW1ibGUuXCIpO1xuICAgIH1cbiAgICB5aWVsZCBjb21tYW5kO1xuICB9XG59XG5cbi8qKiByZWFkIGJ5dGVzIGFzIEJpZyBFbmRpYW4gKi9cbmNvbnN0IHJlYWRVaW50ID0gKFxuICBidWZmZXI6IFVpbnQ4QXJyYXksXG4gIG9mZnNldDogbnVtYmVyLFxuICBsZW5ndGg6IG51bWJlcixcbikgPT5cbiAgWy4uLmJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbmd0aCldLnJlZHVjZShcbiAgICAoYWNjLCBjdXIsIGkpID0+IGFjYyArIGN1ciAqIDI1NiAqKiAobGVuZ3RoIC0gaSAtIDEpLFxuICAgIDAsXG4gICk7XG5cbmNvbnN0IHJlYWRJbnQgPSAoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IG51bWJlciwgbGVuZ3RoOiAxIHwgMiB8IDMgfCA0KSA9PiB7XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIGJ1ZmZlcltvZmZzZXRdO1xuICAgIGNhc2UgMjoge1xuICAgICAgY29uc3QgdmFsID0gYnVmZmVyW29mZnNldF0gKiAyICoqIDggKyBidWZmZXJbb2Zmc2V0ICsgMV07XG4gICAgICByZXR1cm4gdmFsIHwgKHZhbCAmIDIgKiogMTUpICogMHgxZmZmZTtcbiAgICB9XG4gICAgY2FzZSAzOiB7XG4gICAgICBjb25zdCB2YWwgPSBidWZmZXJbb2Zmc2V0XSAqIDIgKiogMTYgKyBidWZmZXJbb2Zmc2V0ICsgMV0gKiAyICoqIDggK1xuICAgICAgICBidWZmZXJbb2Zmc2V0ICsgMl07XG4gICAgICByZXR1cm4gdmFsIHwgKHZhbCAmIDIgKiogMjMpICogMHgxZmU7XG4gICAgfVxuICAgIGNhc2UgNDpcbiAgICAgIHJldHVybiAoYnVmZmVyW29mZnNldF0gPDwgMjQpICtcbiAgICAgICAgYnVmZmVyW29mZnNldCArIDFdICogMiAqKiAxNiArIGJ1ZmZlcltvZmZzZXQgKyAyXSAqIDIgKiogOCArXG4gICAgICAgIGJ1ZmZlcltvZmZzZXQgKyAzXTtcbiAgfVxufTtcbiIsICJpbXBvcnQgeyBTcGVjaWFsUGx1Z2luIH0gZnJvbSBcIi4uL21vZC50c1wiO1xuXG5leHBvcnQgdHlwZSBUZXhDb2xvciA9IFwiYmxhY2tcIiB8IFwid2hpdGVcIiB8IGAjJHtzdHJpbmd9YDtcblxuZXhwb3J0IGludGVyZmFjZSBDb2xvciB7XG4gIHR5cGU6IFwiY29sb3JcIjtcbiAgY29sb3I6IFRleENvbG9yO1xufVxuXG5leHBvcnQgY29uc3QgY29sb3I6ICgpID0+IFNwZWNpYWxQbHVnaW48Q29sb3I+ID0gKCkgPT4ge1xuICBjb25zdCBzdGFjazogVGV4Q29sb3JbXSA9IFtdO1xuICBsZXQgbm93Q29sb3I6IFRleENvbG9yID0gXCJibGFja1wiO1xuXG4gIHJldHVybiAoY29tbWFuZCkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoY29tbWFuZC5kYXRhKTtcbiAgICBpZiAoZGF0YS5zdGFydHNXaXRoKFwiY29sb3IgcHVzaCBcIikpIHtcbiAgICAgIHN0YWNrLnB1c2gobm93Q29sb3IpO1xuICAgICAgbm93Q29sb3IgPSB0ZXhDb2xvcihkYXRhLnNsaWNlKDExKSk7XG4gICAgICByZXR1cm4geyB0eXBlOiBcImNvbG9yXCIsIGNvbG9yOiBub3dDb2xvciB9O1xuICAgIH1cbiAgICBpZiAoZGF0YS5zdGFydHNXaXRoKFwiY29sb3IgcG9wXCIpKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBzdGFjay5wb3AoKTtcbiAgICAgIGlmICghcmVzdWx0KSB0aHJvdyBuZXcgRXJyb3IoXCJQb3BwZWQgZnJvbSBlbXB0eSBjb2xvciBzdGFja1wiKTtcbiAgICAgIG5vd0NvbG9yID0gcmVzdWx0O1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJjb2xvclwiLCBjb2xvcjogbm93Q29sb3IgfTtcbiAgICB9XG4gIH07XG59O1xuXG5jb25zdCBpbnRUb0hleCA9IChuOiBudW1iZXIpID0+XG4gIGAke01hdGgucm91bmQobikudG9TdHJpbmcoMTYpfWAucGFkU3RhcnQoMiwgXCIwXCIpO1xuXG5jb25zdCB0ZXhDb2xvciA9IChuYW1lOiBzdHJpbmcpOiBUZXhDb2xvciA9PiB7XG4gIGlmIChuYW1lID09PSBcImdyYXkgMFwiKSByZXR1cm4gXCJibGFja1wiO1xuICBpZiAobmFtZSA9PT0gXCJncmF5IDFcIikgcmV0dXJuIFwid2hpdGVcIjtcbiAgaWYgKG5hbWUuc3RhcnRzV2l0aChcInJnYiBcIikpIHtcbiAgICByZXR1cm4gYCMke1xuICAgICAgbmFtZS5zcGxpdChcIiBcIikuc2xpY2UoMSkubWFwKCh4KSA9PiBpbnRUb0hleChwYXJzZUZsb2F0KHgpICogMjU1KSkuam9pbihcbiAgICAgICAgXCJcIixcbiAgICAgIClcbiAgICB9YDtcbiAgfVxuICBpZiAobmFtZS5zdGFydHNXaXRoKFwiZ3JheSBcIikpIHtcbiAgICBjb25zdCB4ID0gbmFtZS5zcGxpdChcIiBcIilbMV07XG4gICAgcmV0dXJuIHRleENvbG9yKGByZ2IgJHt4fSAke3h9ICR7eH1gKTtcbiAgfVxuICByZXR1cm4gXCJibGFja1wiO1xufTtcbiIsICJpbXBvcnQgeyBTcGVjaWFsUGx1Z2luIH0gZnJvbSBcIi4uL21vZC50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNWRyB7XG4gIHR5cGU6IFwic3ZnXCI7XG4gIHN2Zzogc3RyaW5nO1xuICBsZWZ0OiBudW1iZXI7XG4gIHRvcDogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3Qgc3ZnOiAoKSA9PiBTcGVjaWFsUGx1Z2luPFNWRz4gPSAoKSA9PiB7XG4gIGxldCBzdmdUZXh0ID0gXCJcIjtcblxuICByZXR1cm4gKGNvbW1hbmQsIG5leHQpID0+IHtcbiAgICBjb25zdCBkYXRhID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGNvbW1hbmQuZGF0YSk7XG4gICAgaWYgKCFkYXRhLnN0YXJ0c1dpdGgoXCJkdmlzdmdtOnJhdyBcIikpIHJldHVybjtcbiAgICBzdmdUZXh0ICs9IGRhdGEuc2xpY2UoMTIpO1xuXG4gICAgaWYgKG5leHQ/LnR5cGUgPT09IFwic3BlY2lhbFwiKSB7XG4gICAgICBjb25zdCBuZXh0RGF0YSA9IG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShuZXh0LmRhdGEpO1xuICAgICAgaWYgKFxuICAgICAgICBjb21tYW5kLmhvcml6b250YWwgPT09IG5leHQuaG9yaXpvbnRhbCAmJlxuICAgICAgICBjb21tYW5kLnZlcnRpY2FsID09PSBuZXh0LnZlcnRpY2FsICYmXG4gICAgICAgIG5leHREYXRhLnN0YXJ0c1dpdGgoXCJkdmlzdmdtOnJhdyBcIilcbiAgICAgICkgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHN2ZyA9IHN2Z1RleHQucmVwbGFjZUFsbChcIns/bmx9XCIsIFwiXFxuXCIpO1xuICAgIHN2Z1RleHQgPSBcIlwiO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInN2Z1wiLFxuICAgICAgc3ZnLFxuICAgICAgbGVmdDogY29tbWFuZC5ob3Jpem9udGFsLFxuICAgICAgdG9wOiBjb21tYW5kLnZlcnRpY2FsLFxuICAgIH07XG4gIH07XG59O1xuIiwgImltcG9ydCB7IFNwZWNpYWxQbHVnaW4gfSBmcm9tIFwiLi4vbW9kLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFwZXJzaXplIHtcbiAgdHlwZTogXCJwYXBlcnNpemVcIjtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBwYXBlcnNpemU6IFNwZWNpYWxQbHVnaW48UGFwZXJzaXplPiA9IChjb21tYW5kKSA9PiB7XG4gIGNvbnN0IGRhdGEgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoY29tbWFuZC5kYXRhKTtcbiAgaWYgKCFkYXRhLnN0YXJ0c1dpdGgoXCJwYXBlcnNpemU9XCIpKSByZXR1cm47XG4gIGNvbnN0IFt3aWR0aCwgaGVpZ2h0XSA9IGRhdGEuc2xpY2UoMTApLnNwbGl0KFwiLFwiKTtcbiAgaWYgKHdpZHRoID09PSB1bmRlZmluZWQgfHwgaGVpZ2h0ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBFcnJvcihcIlBhcGVyc2l6ZSBzcGVjaWFsIHJlcXVpcmVzIHR3byBhcmd1bWVudHMuXCIpO1xuICB9XG5cbiAgaWYgKCF3aWR0aC5lbmRzV2l0aChcInB0XCIpKSB7XG4gICAgdGhyb3cgRXJyb3IoXCJQYXBlcnNpemUgc3BlY2lhbCB3aWR0aCBtdXN0IGJlIGluIHBvaW50cy5cIik7XG4gIH1cbiAgaWYgKCFoZWlnaHQuZW5kc1dpdGgoXCJwdFwiKSkge1xuICAgIHRocm93IEVycm9yKFwiUGFwZXJzaXplIHNwZWNpYWwgaGVpZ2h0IG11c3QgYmUgaW4gcG9pbnRzLlwiKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHR5cGU6IFwicGFwZXJzaXplXCIsXG4gICAgd2lkdGg6IHBhcnNlRmxvYXQod2lkdGguc2xpY2UoMCwgLTIpKSxcbiAgICBoZWlnaHQ6IHBhcnNlRmxvYXQoaGVpZ2h0LnNsaWNlKDAsIC0yKSksXG4gIH07XG59O1xuIiwgImltcG9ydCB7IE1hdHJpeCwgcm90YXRlLCBzY2FsZSwgdHJhbnNsYXRlIH0gZnJvbSBcIi4vbWF0cml4LnRzXCI7XG5cbmNvbnN0IHN0YXRlUXVldWU6IE1hdHJpeFtdID0gW107XG5cbi8qKiBQb3N0c2NyaXB0IGludGVycHJldGVyLlxuICogTW9zdCBwb3N0c2NyaXB0IGlzIG5vdCBpbXBsZW1lbnRlZC5cbiAqIFRoZXJlIGlzIGVub3VnaCBpbXBsZW1lbnRlZCB0byBwZXJmb3JtIHRoZSBiYXNpYyBvcGVyYXRpb25zIHRoYXQgcmVzdWx0IGZyb20gdGhlIExhVGVYIGNvbW1hbmRzIFxcc2NhbGVib3gsXG4gKiBcXHJvdGF0ZWJveCwgYW5kIFxccmVzaXplYm94LCBhbmQgYSBsaXR0bGUgbW9yZSB0aGF0IGlzIGluY29tcGxldGUgYW5kIG1vc3RseSB1bnRlc3RlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGludGVycHJldCA9IChcbiAgcHNJbnB1dDogc3RyaW5nLFxuICBtYXRyaXg6IE1hdHJpeCxcbiAgaG9yaXpvbnRhbDogbnVtYmVyLFxuICB2ZXJ0aWNhbDogbnVtYmVyLFxuKSA9PiB7XG4gIGNvbnN0IHN0YWNrOiBTdGFja09iamVjdFtdID0gW107XG4gIGNvbnN0IHRlbXAgPSB7IG1hdHJpeCwgaG9yaXpvbnRhbCwgdmVydGljYWwgfTtcblxuICAvKiogVGhlIHZhbHVlIG9mIGVhY2gga2V5IGlzIHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyBmcm9tIHRoZSBzdGFjayBpdCBuZWVkcy4gKi9cbiAgY29uc3Qgb3BlcmF0b3JzID0ge1xuICAgIC8vIFN0YWNrIG9wZXJhdG9yc1xuICAgIHBvcDogKCkgPT4gc3RhY2sucG9wKCksXG5cbiAgICBleGNoOiAoKSA9PiB7XG4gICAgICBjb25zdCBhMSA9IHN0YWNrLnBvcCgpO1xuICAgICAgY29uc3QgYTIgPSBzdGFjay5wb3AoKTtcbiAgICAgIGlmIChhMSkgc3RhY2sucHVzaChhMSk7XG4gICAgICBpZiAoYTIpIHN0YWNrLnB1c2goYTIpO1xuICAgIH0sXG5cbiAgICBkdXA6ICgpID0+IHtcbiAgICAgIHN0YWNrLnB1c2goc3RhY2tbc3RhY2subGVuZ3RoIC0gMV0pO1xuICAgIH0sXG5cbiAgICBtYXJrOiAoKSA9PiBzdGFjay5wdXNoKG5ldyBQU01hcmsoKSksXG5cbiAgICAvLyBNYXRoIG9wZXJhdG9yc1xuICAgIG5lZzogKCkgPT4ge1xuICAgICAgY29uc3QgeCA9IHN0YWNrLnBvcCgpO1xuICAgICAgaWYgKCF4KSByZXR1cm47XG4gICAgICBzdGFjay5wdXNoKG5ldyBQU051bWJlcigteC52YWx1ZSkpO1xuICAgIH0sXG5cbiAgICBhZGQ6ICgpID0+IHtcbiAgICAgIGNvbnN0IHggPSBzdGFjay5wb3AoKTtcbiAgICAgIGNvbnN0IHkgPSBzdGFjay5wb3AoKTtcbiAgICAgIGlmICgheCkgcmV0dXJuO1xuICAgICAgaWYgKCF5KSByZXR1cm47XG4gICAgICBzdGFjay5wdXNoKG5ldyBQU051bWJlcih4LnZhbHVlICsgeS52YWx1ZSkpO1xuICAgIH0sXG5cbiAgICBzdWI6ICgpID0+IHtcbiAgICAgIGNvbnN0IHggPSBzdGFjay5wb3AoKTtcbiAgICAgIGNvbnN0IHkgPSBzdGFjay5wb3AoKTtcbiAgICAgIGlmICgheCkgcmV0dXJuO1xuICAgICAgaWYgKCF5KSByZXR1cm47XG4gICAgICBzdGFjay5wdXNoKG5ldyBQU051bWJlcih5LnZhbHVlIC0geC52YWx1ZSkpO1xuICAgIH0sXG5cbiAgICBtdWw6ICgpID0+IHtcbiAgICAgIGNvbnN0IHggPSBzdGFjay5wb3AoKTtcbiAgICAgIGNvbnN0IHkgPSBzdGFjay5wb3AoKTtcbiAgICAgIGlmICgheCkgcmV0dXJuO1xuICAgICAgaWYgKCF5KSByZXR1cm47XG4gICAgICBzdGFjay5wdXNoKG5ldyBQU051bWJlcih4LnZhbHVlICogeS52YWx1ZSkpO1xuICAgIH0sXG5cbiAgICBkaXY6ICgpID0+IHtcbiAgICAgIGNvbnN0IHggPSBzdGFjay5wb3AoKTtcbiAgICAgIGNvbnN0IHkgPSBzdGFjay5wb3AoKTtcbiAgICAgIGlmICgheCkgcmV0dXJuO1xuICAgICAgaWYgKCF5KSByZXR1cm47XG4gICAgICBzdGFjay5wdXNoKG5ldyBQU051bWJlcih5LnZhbHVlIC8geC52YWx1ZSkpO1xuICAgIH0sXG5cbiAgICAvLyBHcmFwaGljcyBzdGF0ZSBvcGVyYXRvcnNcbiAgICBnc2F2ZTogKCkgPT4gc3RhdGVRdWV1ZS5wdXNoKFsuLi5tYXRyaXhdKSxcblxuICAgIGdyZXN0b3JlOiAoKSA9PiB7XG4gICAgICBjb25zdCBtYXQgPSBzdGF0ZVF1ZXVlLnBvcCgpO1xuICAgICAgaWYgKCFtYXQpIHJldHVybjtcbiAgICAgIHRlbXAubWF0cml4ID0gbWF0O1xuICAgIH0sXG5cbiAgICAvLyBQYXRoIGNvbnN0cnVjdGlvbiBvcGVyYXRvcnNcbiAgICBjdXJyZW50cG9pbnQ6ICgpID0+XG4gICAgICBzdGFjay5wdXNoKG5ldyBQU051bWJlcih0ZW1wLmhvcml6b250YWwpLCBuZXcgUFNOdW1iZXIodGVtcC52ZXJ0aWNhbCkpLFxuXG4gICAgbW92ZXRvOiAoKSA9PiB7XG4gICAgICBjb25zdCB5ID0gc3RhY2sucG9wKCk7XG4gICAgICBjb25zdCB4ID0gc3RhY2sucG9wKCk7XG4gICAgICB0ZW1wLmhvcml6b250YWwgPSB4Py52YWx1ZTtcbiAgICAgIHRlbXAudmVydGljYWwgPSB5Py52YWx1ZTtcbiAgICB9LFxuXG4gICAgLy8gQ29vcmRpbmF0ZSBzeXN0ZW0gYW5kIG1hdHJpeCBvcGVyYXRvcnNcbiAgICBzY2FsZTogKCkgPT4ge1xuICAgICAgY29uc3QgeSA9IHN0YWNrLnBvcCgpO1xuICAgICAgY29uc3QgeCA9IHN0YWNrLnBvcCgpO1xuICAgICAgaWYgKCF4KSByZXR1cm47XG4gICAgICBpZiAoIXkpIHJldHVybjtcbiAgICAgIHRlbXAubWF0cml4ID0gc2NhbGUodGVtcC5tYXRyaXgsIHgudmFsdWUsIHkudmFsdWUpO1xuICAgIH0sXG5cbiAgICB0cmFuc2xhdGU6ICgpID0+IHtcbiAgICAgIGNvbnN0IHkgPSBzdGFjay5wb3AoKTtcbiAgICAgIGNvbnN0IHggPSBzdGFjay5wb3AoKTtcbiAgICAgIGlmICgheCkgcmV0dXJuO1xuICAgICAgaWYgKCF5KSByZXR1cm47XG4gICAgICB0ZW1wLm1hdHJpeCA9IHRyYW5zbGF0ZSh0ZW1wLm1hdHJpeCwgeC52YWx1ZSwgeS52YWx1ZSk7XG4gICAgfSxcblxuICAgIHJvdGF0ZTogKCkgPT4ge1xuICAgICAgLy8gciBpcyBpbiBkZWdyZWVzXG4gICAgICBjb25zdCByID0gc3RhY2sucG9wKCk7XG4gICAgICBpZiAoIXIpIHJldHVybjtcbiAgICAgIHRlbXAubWF0cml4ID0gcm90YXRlKHRlbXAubWF0cml4LCByLnZhbHVlKTtcbiAgICB9LFxuICB9O1xuXG4gIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zKHBzSW5wdXQpKSB7XG4gICAgLy8gTnVtZXJpYyBsaXRlcmFsc1xuICAgIGlmICgvXlsrLV0/XFxkKyhcXC5cXGQqKT8kLy50ZXN0KHRva2VuKSkge1xuICAgICAgc3RhY2sucHVzaChuZXcgUFNOdW1iZXIodG9rZW4pKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICAvLyBTdHJpbmcgbGl0ZXJhbHNcbiAgICBpZiAodG9rZW5bMF0gPT09IFwiKFwiKSB7XG4gICAgICBzdGFjay5wdXNoKG5ldyBQU1N0cmluZyh0b2tlbikpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIC8vIEFycmF5IHN0YXJ0IChzYW1lIGFzIGEgbWFyaylcbiAgICBpZiAodG9rZW4gPT09IFwiW1wiKSB7XG4gICAgICBvcGVyYXRvcnMubWFyaygpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIC8vIEFycmF5IGVuZFxuICAgIGlmICh0b2tlbiA9PT0gXCJdXCIpIHtcbiAgICAgIGNvbnN0IGFycmF5ID0gbmV3IFBTQXJyYXkoKTtcbiAgICAgIGNvbnN0IGVsdCA9IHN0YWNrLnBvcCgpO1xuICAgICAgaWYgKCFlbHQpIGNvbnRpbnVlO1xuICAgICAgd2hpbGUgKGVsdC5uYW1lICE9PSBcIm1hcmtcIikgYXJyYXkucHVzaChlbHQpO1xuICAgICAgc3RhY2sucHVzaChhcnJheSk7XG4gICAgfVxuICAgIC8vIElkZW50aWZpZXJzIChpLmUuIFZhcmlhYmxlcylcbiAgICBpZiAodG9rZW5bMF0gPT09IFwiL1wiKSB7XG4gICAgICBzdGFjay5wdXNoKG5ldyBQU0lkZW50aWZpZXIodG9rZW4pKTtcbiAgICB9XG4gICAgLy8gUHJvY2VkdXJlc1xuICAgIGlmICh0b2tlblswXSA9PT0gXCJ7XCIpIHtcbiAgICAgIHN0YWNrLnB1c2gobmV3IFBTUHJvY2VkdXJlKHRva2VuKSk7XG4gICAgfVxuICAgIC8vIE9wZXJhdG9yc1xuICAgIGlmICh0b2tlbiBpbiBvcGVyYXRvcnMpIHtcbiAgICAgIC8vQHRzLWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICAgIG9wZXJhdG9yc1t0b2tlbl0odGhpcyk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdGhyb3cgRXJyb3IoXCJJbnZhbGlkIG9yIHVuaW1wbGVtZW50ZWQgcG9zdHNjcmlwdCBleHByZXNzaW9uXCIpO1xuICB9XG5cbiAgcmV0dXJuIHRlbXA7XG59O1xuXG4vLyBQYXJzZSBhIHN0cmluZyBpbnRvIHRva2Vucy4gIFRoaXMgbWV0aG9kIGF0dGVtcHRzIHRvIGVtdWxhdGUgZ2hvc3RzY3JpcHQncyBwYXJzaW5nLlxuZnVuY3Rpb24qIHRva2VucyhpbnB1dDogc3RyaW5nKSB7XG4gIGxldCB0b2tlbiA9IFwiXCI7XG4gIGxldCBzdHJpbmdMZXZlbCA9IDA7XG4gIGxldCBwcm9jZWR1cmVMZXZlbCA9IDA7XG5cbiAgY29uc3QgY2hhckdlbiA9IGlucHV0W1N5bWJvbC5pdGVyYXRvcl0oKTtcbiAgZm9yIChjb25zdCBjaGFyYWN0ZXIgb2YgY2hhckdlbikge1xuICAgIGxldCBuZXh0Q2hhcjogSXRlcmF0b3JSZXN1bHQ8c3RyaW5nPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBzd2l0Y2ggKGNoYXJhY3Rlcikge1xuICAgICAgY2FzZSBcIiBcIjogLy8gV2hpdGUgc3BhY2UgY2hhcmFjdGVyc1xuICAgICAgY2FzZSBcIlxcdFwiOlxuICAgICAgY2FzZSBcIlxcblwiOlxuICAgICAgICBpZiAocHJvY2VkdXJlTGV2ZWwpIHtcbiAgICAgICAgICBpZiAodG9rZW5bdG9rZW4ubGVuZ3RoIC0gMV0gIT09IFwiIFwiKSB0b2tlbiArPSBcIiBcIjtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RyaW5nTGV2ZWwpIHtcbiAgICAgICAgICBzd2l0Y2ggKGNoYXJhY3Rlcikge1xuICAgICAgICAgICAgY2FzZSBcIiBcIjpcbiAgICAgICAgICAgICAgdG9rZW4gKz0gXCIgXCI7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIlxcblwiOlxuICAgICAgICAgICAgICB0b2tlbiArPSBcIlxcXFxuXCI7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIlxcdFwiOlxuICAgICAgICAgICAgICB0b2tlbiArPSBcIlxcXFx0XCI7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICB5aWVsZCB0b2tlbjtcbiAgICAgICAgICB0b2tlbiA9IFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICBjYXNlIFwiW1wiOiAvLyBBcnJheSBkZWxpbWl0ZXJzXG4gICAgICBjYXNlIFwiXVwiOlxuICAgICAgICBpZiAoIXByb2NlZHVyZUxldmVsICYmICFzdHJpbmdMZXZlbCkge1xuICAgICAgICAgIGlmICh0b2tlbikgeWllbGQgdG9rZW47XG4gICAgICAgICAgdG9rZW4gPSBcIlwiO1xuICAgICAgICAgIHlpZWxkIGNoYXJhY3RlcjtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB0b2tlbiArPSBjaGFyYWN0ZXI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgY2FzZSBcIntcIjogLy8gUHJvY2VkdXJlIGRlbGltaXRlcnNcbiAgICAgICAgaWYgKCFzdHJpbmdMZXZlbCkge1xuICAgICAgICAgIGlmIChwcm9jZWR1cmVMZXZlbCA9PSAwICYmIHRva2VuKSB5aWVsZCB0b2tlbjtcbiAgICAgICAgICArK3Byb2NlZHVyZUxldmVsO1xuICAgICAgICB9XG4gICAgICAgIHRva2VuICs9IGNoYXJhY3RlcjtcbiAgICAgICAgY29udGludWU7XG4gICAgICBjYXNlIFwifVwiOlxuICAgICAgICB0b2tlbiArPSBjaGFyYWN0ZXI7XG4gICAgICAgIGlmIChzdHJpbmdMZXZlbCkgY29udGludWU7XG4gICAgICAgIC0tcHJvY2VkdXJlTGV2ZWw7XG4gICAgICAgIGlmIChwcm9jZWR1cmVMZXZlbCkgY29udGludWU7XG4gICAgICAgIHlpZWxkIHRva2VuO1xuICAgICAgICB0b2tlbiA9IFwiXCI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgY2FzZSBcIihcIjogLy8gU3RyaW5nIGRlbGltaXRlcnNcbiAgICAgICAgKytzdHJpbmdMZXZlbDtcbiAgICAgICAgaWYgKHRva2VuICYmICFwcm9jZWR1cmVMZXZlbCAmJiBzdHJpbmdMZXZlbCA9PSAxKSB5aWVsZCB0b2tlbjtcbiAgICAgICAgaWYgKHN0cmluZ0xldmVsID4gMSkgdG9rZW4gKz0gXCJcXFxcXCI7XG4gICAgICAgIHRva2VuICs9IGNoYXJhY3RlcjtcbiAgICAgICAgY29udGludWU7XG4gICAgICBjYXNlIFwiKVwiOlxuICAgICAgICAtLXN0cmluZ0xldmVsO1xuICAgICAgICBpZiAoc3RyaW5nTGV2ZWwpIHRva2VuICs9IFwiXFxcXFwiO1xuICAgICAgICB0b2tlbiArPSBjaGFyYWN0ZXI7XG4gICAgICAgIGlmIChwcm9jZWR1cmVMZXZlbCB8fCBzdHJpbmdMZXZlbCkgY29udGludWU7XG4gICAgICAgIHlpZWxkIHRva2VuO1xuICAgICAgICB0b2tlbiA9IFwiXCI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgY2FzZSBcIlxcXFxcIjogLy8gRXNjYXBlIGNoYXJhY3RlclxuICAgICAgICB0b2tlbiArPSBjaGFyYWN0ZXI7XG4gICAgICAgIG5leHRDaGFyID0gY2hhckdlbi5uZXh0KCk7XG4gICAgICAgIGlmIChuZXh0Q2hhci5kb25lKSB0aHJvdyBFcnJvcihcIkludmFsaWQgZXNjYXBlIGNoYXJhY3Rlci5cIik7XG4gICAgICAgIGlmICghbmV4dENoYXIuZG9uZSkgdG9rZW4gKz0gbmV4dENoYXIudmFsdWU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgY2FzZSBcIi9cIjogLy8gTmFtZSBzdGFydFxuICAgICAgICBpZiAoIXByb2NlZHVyZUxldmVsICYmICFzdHJpbmdMZXZlbCAmJiB0b2tlbikgeWllbGQgdG9rZW47XG4gICAgICAgIHRva2VuICs9IGNoYXJhY3RlcjtcbiAgICAgICAgY29udGludWU7XG4gICAgICBjYXNlIFwiJVwiOiAvLyBDb21tZW50c1xuICAgICAgICBkbyB7XG4gICAgICAgICAgbmV4dENoYXIgPSBjaGFyR2VuLm5leHQoKTtcbiAgICAgICAgfSB3aGlsZSAoIW5leHRDaGFyLmRvbmUgJiYgbmV4dENoYXIudmFsdWUgIT09IFwiXFxuXCIpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIGRlZmF1bHQ6IC8vIEFueSBvdGhlciBjaGFyYWN0ZXJcbiAgICAgICAgdG9rZW4gKz0gY2hhcmFjdGVyO1xuICAgIH1cbiAgfVxuICBpZiAodG9rZW4pIHlpZWxkIHRva2VuO1xufVxuXG4vLyBQb3N0c2NyaXB0IHN0YWNrIG9iamVjdHNcbmFic3RyYWN0IGNsYXNzIFN0YWNrT2JqZWN0IHtcbiAgbmFtZTogc3RyaW5nO1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICB2YWx1ZTogYW55O1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG59XG5cbi8vIFN0YWNrIG51bWJlclxuY2xhc3MgUFNOdW1iZXIgZXh0ZW5kcyBTdGFja09iamVjdCB7XG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICBzdXBlcihcIm51bWJlclwiKTtcbiAgICB0aGlzLnZhbHVlID0gdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiID8gdmFsdWUgOiBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgfVxufVxuXG4vLyBTdGFjayBzdHJpbmdcbmNsYXNzIFBTU3RyaW5nIGV4dGVuZHMgU3RhY2tPYmplY3Qge1xuICBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoXCJzdHJpbmdcIik7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL15cXCh8XFwpJC9nLCBcIlwiKTtcbiAgfVxufVxuXG4vLyBTdGFjayBhcnJheVxuY2xhc3MgUFNBcnJheSBleHRlbmRzIFN0YWNrT2JqZWN0IHtcbiAgY29uc3RydWN0b3IodmFsdWU/OiBTdGFja09iamVjdFtdKSB7XG4gICAgc3VwZXIoXCJhcnJheVwiKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgW107XG4gIH1cblxuICBwdXNoKGVsdDogU3RhY2tPYmplY3QpIHtcbiAgICB0aGlzLnZhbHVlLnB1c2goZWx0KTtcbiAgfVxuXG4gIHBvcCgpOiBTdGFja09iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUucG9wKCk7XG4gIH1cbn1cblxuLy8gU3RhY2sgbWFya1xuY2xhc3MgUFNNYXJrIGV4dGVuZHMgU3RhY2tPYmplY3Qge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIm1hcmtcIik7XG4gICAgdGhpcy52YWx1ZSA9IFwiLW1hcmstXCI7XG4gIH1cbn1cblxuLy8gU3RhY2sgaWRlbnRpZmllclxuY2xhc3MgUFNJZGVudGlmaWVyIGV4dGVuZHMgU3RhY2tPYmplY3Qge1xuICBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoXCJpZGVudGlmaWVyXCIpO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9eXFwvLywgXCJcIik7XG4gIH1cbn1cblxuLy8gU3RhY2sgcHJvY2VkdXJlIG9iamVjdFxuY2xhc3MgUFNQcm9jZWR1cmUgZXh0ZW5kcyBTdGFja09iamVjdCB7XG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcInByb2NlZHVyZVwiKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBpbnRlcnByZXQgYXMgaW50ZXJwcmV0UFMgfSBmcm9tIFwiLi9wc2ludGVycHJldGVyLnRzXCI7XG5pbXBvcnQgeyBTcGVjaWFsUGx1Z2luIH0gZnJvbSBcIi4uL21vZC50c1wiO1xuaW1wb3J0IHsgTWF0cml4IH0gZnJvbSBcIi4vbWF0cml4LnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUFMge1xuICB0eXBlOiBcInBzXCI7XG4gIHBzOiBzdHJpbmc7XG4gIGludGVycHJldDogKG1hdHJpeDogTWF0cml4KSA9PiBNYXRyaXg7XG59XG5cbmV4cG9ydCBjb25zdCBwczogKCkgPT4gU3BlY2lhbFBsdWdpbjxQUz4gPSAoKSA9PiB7XG4gIGxldCBwc1RleHQgPSBcIlwiO1xuXG4gIHJldHVybiAoY29tbWFuZCwgbmV4dCkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoY29tbWFuZC5kYXRhKTtcbiAgICBpZiAoIWRhdGEuc3RhcnRzV2l0aChcInBzOiBcIikpIHJldHVybjtcbiAgICBwc1RleHQgKz0gZGF0YS5zbGljZSg0KTtcblxuICAgIGlmIChuZXh0Py50eXBlID09PSBcInNwZWNpYWxcIikge1xuICAgICAgY29uc3QgbmV4dERhdGEgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUobmV4dC5kYXRhKTtcbiAgICAgIGlmIChuZXh0RGF0YS5zdGFydHNXaXRoKFwicHM6IFwiKSkgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGludGVycHJldDogUFNbXCJpbnRlcnByZXRcIl0gPSAobWF0cml4KSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpbnRlcnByZXRQUyhcbiAgICAgICAgcHNUZXh0LFxuICAgICAgICBtYXRyaXgsXG4gICAgICAgIGNvbW1hbmQuaG9yaXpvbnRhbCxcbiAgICAgICAgY29tbWFuZC52ZXJ0aWNhbCxcbiAgICAgICk7XG4gICAgICBjb21tYW5kLmVtaXRDaGFuZ2Uoe1xuICAgICAgICBob3Jpem9udGFsOiByZXN1bHQuaG9yaXpvbnRhbCxcbiAgICAgICAgdmVydGljYWw6IHJlc3VsdC52ZXJ0aWNhbCxcbiAgICAgICAgdzogY29tbWFuZC53LFxuICAgICAgICB4OiBjb21tYW5kLngsXG4gICAgICAgIHk6IGNvbW1hbmQueSxcbiAgICAgICAgejogY29tbWFuZC56LFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0Lm1hdHJpeDtcbiAgICB9O1xuXG4gICAgcHNUZXh0ID0gXCJcIjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJwc1wiLFxuICAgICAgcHM6IHBzVGV4dCxcbiAgICAgIGludGVycHJldCxcbiAgICB9O1xuICB9O1xufTtcbiIsICJpbXBvcnQgeyBwYXJzZSBhcyBwYXJzZVRGTSwgVEZNIH0gZnJvbSBcIi4uL3RmbS9tb2QudHNcIjtcbmltcG9ydCB7IHRva2VuaXplIH0gZnJvbSBcIi4vdG9rZW5pemUudHNcIjtcbmltcG9ydCB7XG4gIEJPUCxcbiAgRE9XTixcbiAgRU9QLFxuICBGTlQsXG4gIEZOVDEsXG4gIEZOVDIsXG4gIEZOVDMsXG4gIEZOVDQsXG4gIEZOVF9ERUYsXG4gIE5PUCxcbiAgUE9QLFxuICBQT1NULFxuICBQT1NUX1BPU1QsXG4gIFBSRSxcbiAgUFVTSCxcbiAgUFVUX0NIQVIsXG4gIFBVVF9SVUxFLFxuICBSSUdIVCxcbiAgU0VUX0NIQVIsXG4gIFNFVF9SVUxFLFxuICBXLFxuICBYLFxuICBYWFgsXG4gIFksXG4gIFosXG59IGZyb20gXCIuL2NvbnN0LnRzXCI7XG5cbmV4cG9ydCB0eXBlIHsgVEZNIH07XG5leHBvcnQgKiBmcm9tIFwiLi9zcGVjaWFscy9jb2xvci50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3BlY2lhbHMvc3ZnLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcGVjaWFscy9wYXBlcnNpemUudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NwZWNpYWxzL3BzLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcGVjaWFscy9wc2ZpbGUudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWF0cml4IH0gZnJvbSBcIi4vc3BlY2lhbHMvbWF0cml4LnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXIge1xuICBob3Jpem9udGFsOiBudW1iZXI7XG4gIHZlcnRpY2FsOiBudW1iZXI7XG4gIHc6IG51bWJlcjtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHo6IG51bWJlcjtcbiAgZm9udE51bTogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBUZXh0IHtcbiAgdHlwZTogXCJ0ZXh0XCI7XG4gIHRleHQ6IHN0cmluZztcbiAgZm9udDogRHZpRm9udDtcbiAgdG9wOiBudW1iZXI7XG4gIGxlZnQ6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZSB7XG4gIHR5cGU6IFwicmVjdFwiO1xuICBsZWZ0OiBudW1iZXI7XG4gIHRvcDogbnVtYmVyO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU3BlY2lhbCBleHRlbmRzIE9taXQ8UmVnaXN0ZXIsIFwiZm9udE51bVwiPiB7XG4gIHR5cGU6IFwic3BlY2lhbFwiO1xuICBkYXRhOiBVaW50OEFycmF5O1xuICBlbWl0Q2hhbmdlOiAocmVnaXN0ZXI6IE9taXQ8UmVnaXN0ZXIsIFwiZm9udE51bVwiPikgPT4gdm9pZDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VJbmZvIHtcbiAgdHlwZTogXCJpbmZvXCI7XG4gIHZlcnNpb246IG51bWJlcjtcbiAgbnVtZXJhdG9yOiBudW1iZXI7XG4gIGRlbm9taW5hdG9yOiBudW1iZXI7XG4gIG1hZ25pZmljYXRpb246IG51bWJlcjtcbiAgY29tbWVudDogc3RyaW5nO1xuICBtYXhIZWlnaHQ/OiBudW1iZXI7XG4gIG1heFdpZHRoPzogbnVtYmVyO1xuICBwYWdlcz86IG51bWJlcjtcbiAgZHZpVmVyc2lvbj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEdmlGb250IHtcbiAgbmFtZTogc3RyaW5nO1xuICBjaGVja3N1bTogbnVtYmVyO1xuICBzY2FsZUZhY3RvcjogbnVtYmVyO1xuICBkZXNpZ25TaXplOiBudW1iZXI7XG4gIG1ldHJpY3M6IFRGTTtcbn1cblxuLyoqIFBsdWdpbiB0byB0cmFuc2Zvcm0gU3BlY2lhbCBhY2NvcmRpbmcgdG8gY2VydGFpbiBydWxlc1xuICpcbiAqIEBwYXJhbSBjdXJyZW50IEN1cnJlbnQgU3BlY2lhbFxuICogQHBhcmFtIG5leHQgTmV4dCBTcGVjaWFsXG4gKiBAcmV0dXJuIGBudWxsYCBpZiB0aGUgU3BlY2lhbCBzaG91bGQgYmUgZHJvcHBlZCwgYHVuZGVmaW5lZGAgaWYgdGhlIHBsdWdpbiBkb2Vzbid0IGRlYWwgd2l0aCB0aGUgU3BlY2lhbCwgb3IgYSBuZXcgU3BlY2lhbFxuICovXG5leHBvcnQgdHlwZSBTcGVjaWFsUGx1Z2luPFQ+ID0gKFxuICBjdXJyZW50OiBTcGVjaWFsLFxuICBuZXh0PzogVGV4dCB8IFJ1bGUgfCBTcGVjaWFsIHwgUGFyc2VJbmZvLFxuKSA9PiBUIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZUluaXQ8XG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gIFBsdWdpbnMgZXh0ZW5kcyBTcGVjaWFsUGx1Z2luPGFueT5bXSxcbj4ge1xuICB0Zm1Mb2FkZXI6IChmaWxlbmFtZTogc3RyaW5nKSA9PiBQcm9taXNlPFVpbnQ4QXJyYXk+O1xuICBwbHVnaW5zPzogUGx1Z2lucztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBwYXJzZTxcbiAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgUGx1Z2lucyBleHRlbmRzIFNwZWNpYWxQbHVnaW48YW55PltdID0gU3BlY2lhbFBsdWdpbjxTcGVjaWFsPltdLFxuPihcbiAgZHZpOiBVaW50OEFycmF5LFxuICBpbml0OiBQYXJzZUluaXQ8UGx1Z2lucz4sXG4pOiBBc3luY0dlbmVyYXRvcjxcbiAgfCBUZXh0XG4gIHwgUnVsZVxuICB8IFNwZWNpYWxcbiAgfCBQYXJzZUluZm9cbiAgfCB7XG4gICAgW0sgaW4ga2V5b2YgUGx1Z2luc106IFBsdWdpbnNbS10gZXh0ZW5kcyBTcGVjaWFsUGx1Z2luPGluZmVyIFU+ID8gVSA6IG5ldmVyO1xuICB9W251bWJlcl1cbj4ge1xuICBjb25zdCBpdGVyYXRvciA9IG1pZGRsZVBhcnNlcihkdmksIGluaXQudGZtTG9hZGVyKTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaXRlcmF0b3IubmV4dCgpO1xuICBsZXQgbmV4dCA9ICFyZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IHVuZGVmaW5lZDtcblxuICB3aGlsZSAobmV4dCkge1xuICAgIGNvbnN0IGNvbW1hbmQgPSBuZXh0O1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGl0ZXJhdG9yLm5leHQoKTtcbiAgICBuZXh0ID0gIXJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGNvbW1hbmQudHlwZSA9PT0gXCJzcGVjaWFsXCIgJiYgaW5pdC5wbHVnaW5zKSB7XG4gICAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIGluaXQucGx1Z2lucykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBwbHVnaW4oY29tbWFuZCwgbmV4dCk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHlpZWxkIHJlc3VsdDtcbiAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmICghZm91bmQpIHlpZWxkIGNvbW1hbmQ7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgeWllbGQgY29tbWFuZDtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiogbWlkZGxlUGFyc2VyKFxuICBkdmk6IFVpbnQ4QXJyYXksXG4gIHRmbUxvYWRlcjogKGZpbGVuYW1lOiBzdHJpbmcpID0+IFByb21pc2U8VWludDhBcnJheT4sXG4pOiBBc3luY0dlbmVyYXRvcjxcbiAgfCBUZXh0XG4gIHwgUnVsZVxuICB8IFNwZWNpYWxcbiAgfCBQYXJzZUluZm9cbj4ge1xuICBsZXQgdmVyc2lvbiA9IDI7XG4gIGxldCBudW1lcmF0b3IgPSAyNTQwMDAwMDtcbiAgbGV0IGRlbm9taW5hdG9yID0gNDczNjI4NjcyO1xuICBsZXQgbWFnbmlmaWNhdGlvbiA9IDEwMDA7XG4gIGxldCBjb21tZW50ID0gXCJcIjtcbiAgbGV0IG1heEhlaWdodCA9IDA7XG4gIGxldCBtYXhXaWR0aCA9IDA7XG4gIGxldCBwYWdlcyA9IDA7XG4gIGNvbnN0IHJlZ2lzdGVyOiBSZWdpc3RlciA9IHtcbiAgICBob3Jpem9udGFsOiAwLFxuICAgIHZlcnRpY2FsOiAwLFxuICAgIHc6IDAsXG4gICAgeDogMCxcbiAgICB5OiAwLFxuICAgIHo6IDAsXG4gICAgZm9udE51bTogMCxcbiAgfTtcbiAgY29uc3Qgc3RhY2s6IE9taXQ8UmVnaXN0ZXIsIFwiZm9udE51bVwiPltdID0gW107XG4gIGNvbnN0IGZvbnRzID0gbmV3IE1hcDxudW1iZXIsIER2aUZvbnQ+KCk7XG5cbiAgbGV0IHRleHQgPSBcIlwiO1xuXG4gIGNvbnN0IGl0ZXJhdG9yID0gdG9rZW5pemUoZHZpKTtcbiAgY29uc3QgcmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpO1xuICBsZXQgbmV4dCA9ICFyZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IHVuZGVmaW5lZDtcblxuICB3aGlsZSAobmV4dCkge1xuICAgIGNvbnN0IGNvbW1hbmQgPSBuZXh0O1xuICAgIGNvbnN0IHJlc3VsdCA9IGl0ZXJhdG9yLm5leHQoKTtcbiAgICBuZXh0ID0gIXJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogdW5kZWZpbmVkO1xuXG4gICAgc3dpdGNoIChjb21tYW5kLm9wY29kZSkge1xuICAgICAgY2FzZSBTRVRfQ0hBUjpcbiAgICAgIGNhc2UgUFVUX0NIQVI6XG4gICAgICAgIHRleHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjb21tYW5kLmMpO1xuICAgICAgICBpZiAoKG5leHQ/Lm9wY29kZSAhPT0gU0VUX0NIQVIgJiYgbmV4dD8ub3Bjb2RlICE9PSBQVVRfQ0hBUikgfHwgIW5leHQpIHtcbiAgICAgICAgICBjb25zdCBmb250ID0gZm9udHMuZ2V0KHJlZ2lzdGVyLmZvbnROdW0pO1xuICAgICAgICAgIGlmICghZm9udCkgdGhyb3cgRXJyb3IoYEZvbnQgXCIke3JlZ2lzdGVyLmZvbnROdW19XCIgaXMgbm90IGxvYWRlZGApO1xuICAgICAgICAgIHlpZWxkIHtcbiAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgIGZvbnQsXG4gICAgICAgICAgICB0b3A6IHJlZ2lzdGVyLnZlcnRpY2FsLFxuICAgICAgICAgICAgbGVmdDogcmVnaXN0ZXIuaG9yaXpvbnRhbCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChjb21tYW5kLm9wY29kZSA9PT0gU0VUX0NIQVIpIHtcbiAgICAgICAgICAgIHJlZ2lzdGVyLmhvcml6b250YWwgKz0gZ2V0VGV4dFdpZHRoKHRleHQsIGZvbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0ZXh0ID0gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU0VUX1JVTEU6XG4gICAgICBjYXNlIFBVVF9SVUxFOlxuICAgICAgICBpZiAoY29tbWFuZC5hID4gMCAmJiBjb21tYW5kLmIgPiAwKSB7XG4gICAgICAgICAgeWllbGQge1xuICAgICAgICAgICAgdHlwZTogXCJyZWN0XCIsXG4gICAgICAgICAgICBsZWZ0OiByZWdpc3Rlci5ob3Jpem9udGFsLFxuICAgICAgICAgICAgdG9wOiByZWdpc3Rlci52ZXJ0aWNhbCxcbiAgICAgICAgICAgIGhlaWdodDogY29tbWFuZC5hLFxuICAgICAgICAgICAgd2lkdGg6IGNvbW1hbmQuYixcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21tYW5kLm9wY29kZSA9PT0gU0VUX1JVTEUpIHtcbiAgICAgICAgICByZWdpc3Rlci5ob3Jpem9udGFsICs9IGNvbW1hbmQuYjtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTk9QOlxuICAgICAgY2FzZSBFT1A6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCT1A6XG4gICAgICAgIHJlZ2lzdGVyLmhvcml6b250YWwgPSAwO1xuICAgICAgICByZWdpc3Rlci52ZXJ0aWNhbCA9IDA7XG4gICAgICAgIHJlZ2lzdGVyLncgPSAwO1xuICAgICAgICByZWdpc3Rlci54ID0gMDtcbiAgICAgICAgcmVnaXN0ZXIueSA9IDA7XG4gICAgICAgIHJlZ2lzdGVyLnogPSAwO1xuICAgICAgICByZWdpc3Rlci5mb250TnVtID0gMDtcbiAgICAgICAgc3RhY2suc3BsaWNlKDAsIHN0YWNrLmxlbmd0aCk7XG4gICAgICAgIC8vIGNvdW50MCA9IGNvbW1hbmQuY18wO1xuICAgICAgICAvLyBjb3VudDEgPSBjb21tYW5kLmNfMTtcbiAgICAgICAgLy8gY291bnQyID0gY29tbWFuZC5jXzI7XG4gICAgICAgIC8vIGNvdW50MyA9IGNvbW1hbmQuY18zO1xuICAgICAgICAvLyBjb3VudDQgPSBjb21tYW5kLmNfNDtcbiAgICAgICAgLy8gY291bnQ1ID0gY29tbWFuZC5jXzU7XG4gICAgICAgIC8vIGNvdW50NiA9IGNvbW1hbmQuY182O1xuICAgICAgICAvLyBjb3VudDcgPSBjb21tYW5kLmNfNztcbiAgICAgICAgLy8gY291bnQ4ID0gY29tbWFuZC5jXzg7XG4gICAgICAgIC8vIGNvdW50OSA9IGNvbW1hbmQuY185O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUFVTSDpcbiAgICAgICAgc3RhY2sucHVzaCh7IC4uLnJlZ2lzdGVyIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUE9QOiB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdGVyXyA9IHN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAocmVnaXN0ZXJfKSB7XG4gICAgICAgICAgcmVnaXN0ZXIuaG9yaXpvbnRhbCA9IHJlZ2lzdGVyXy5ob3Jpem9udGFsO1xuICAgICAgICAgIHJlZ2lzdGVyLnZlcnRpY2FsID0gcmVnaXN0ZXJfLnZlcnRpY2FsO1xuICAgICAgICAgIHJlZ2lzdGVyLncgPSByZWdpc3Rlcl8udztcbiAgICAgICAgICByZWdpc3Rlci54ID0gcmVnaXN0ZXJfLng7XG4gICAgICAgICAgcmVnaXN0ZXIueSA9IHJlZ2lzdGVyXy55O1xuICAgICAgICAgIHJlZ2lzdGVyLnogPSByZWdpc3Rlcl8uejtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgUklHSFQ6XG4gICAgICAgIHJlZ2lzdGVyLmhvcml6b250YWwgKz0gY29tbWFuZC5iO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVzpcbiAgICAgICAgaWYgKGNvbW1hbmQuYiAhPT0gMCkgcmVnaXN0ZXIudyA9IGNvbW1hbmQuYjtcbiAgICAgICAgcmVnaXN0ZXIuaG9yaXpvbnRhbCArPSByZWdpc3Rlci53O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgWDpcbiAgICAgICAgaWYgKGNvbW1hbmQuYiAhPT0gMCkgcmVnaXN0ZXIueCA9IGNvbW1hbmQuYjtcbiAgICAgICAgcmVnaXN0ZXIuaG9yaXpvbnRhbCArPSByZWdpc3Rlci54O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRE9XTjpcbiAgICAgICAgcmVnaXN0ZXIudmVydGljYWwgKz0gY29tbWFuZC5hO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgWTpcbiAgICAgICAgaWYgKGNvbW1hbmQuYSAhPT0gMCkgcmVnaXN0ZXIueSA9IGNvbW1hbmQuYTtcbiAgICAgICAgcmVnaXN0ZXIudmVydGljYWwgKz0gcmVnaXN0ZXIueTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFo6XG4gICAgICAgIGlmIChjb21tYW5kLmEgIT09IDApIHJlZ2lzdGVyLnogPSBjb21tYW5kLmE7XG4gICAgICAgIHJlZ2lzdGVyLnZlcnRpY2FsICs9IHJlZ2lzdGVyLno7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBGTlQ6XG4gICAgICBjYXNlIEZOVDE6XG4gICAgICBjYXNlIEZOVDI6XG4gICAgICBjYXNlIEZOVDM6XG4gICAgICBjYXNlIEZOVDQ6XG4gICAgICAgIHJlZ2lzdGVyLmZvbnROdW0gPSBjb21tYW5kLms7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBYWFg6XG4gICAgICAgIHlpZWxkIHtcbiAgICAgICAgICB0eXBlOiBcInNwZWNpYWxcIixcbiAgICAgICAgICBkYXRhOiBjb21tYW5kLngsXG4gICAgICAgICAgLi4ucmVnaXN0ZXIsXG4gICAgICAgICAgZW1pdENoYW5nZTogKG5ld1JlZ2lzdGVyKSA9PiB7XG4gICAgICAgICAgICByZWdpc3Rlci5ob3Jpem9udGFsID0gbmV3UmVnaXN0ZXIuaG9yaXpvbnRhbDtcbiAgICAgICAgICAgIHJlZ2lzdGVyLnZlcnRpY2FsID0gbmV3UmVnaXN0ZXIudmVydGljYWw7XG4gICAgICAgICAgICByZWdpc3Rlci53ID0gbmV3UmVnaXN0ZXIudztcbiAgICAgICAgICAgIHJlZ2lzdGVyLnggPSBuZXdSZWdpc3Rlci54O1xuICAgICAgICAgICAgcmVnaXN0ZXIueSA9IG5ld1JlZ2lzdGVyLnk7XG4gICAgICAgICAgICByZWdpc3Rlci56ID0gbmV3UmVnaXN0ZXIuejtcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRk5UX0RFRjoge1xuICAgICAgICBpZiAoZm9udHMuaGFzKGNvbW1hbmQuaykpIGJyZWFrO1xuICAgICAgICBjb25zdCBuYW1lID0gY29tbWFuZC5uO1xuICAgICAgICBjb25zdCBzY2FsZUZhY3RvciA9IGNvbW1hbmQucztcbiAgICAgICAgY29uc3QgZGVzaWduU2l6ZSA9IGNvbW1hbmQuZDtcbiAgICAgICAgY29uc3QgY2hlY2tzdW0gPSBjb21tYW5kLmM7XG4gICAgICAgIGNvbnN0IGZvbnQgPSBwYXJzZVRGTShcbiAgICAgICAgICBuZXcgVWludDMyQXJyYXkoKGF3YWl0IHRmbUxvYWRlcihgJHtjb21tYW5kLm59LnRmbWApKS5idWZmZXIpLFxuICAgICAgICApO1xuICAgICAgICBmb250cy5zZXQoY29tbWFuZC5rLCB7XG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBjaGVja3N1bSxcbiAgICAgICAgICBzY2FsZUZhY3RvcixcbiAgICAgICAgICBkZXNpZ25TaXplLFxuICAgICAgICAgIG1ldHJpY3M6IGZvbnQsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgUFJFOlxuICAgICAgICB2ZXJzaW9uID0gY29tbWFuZC5pO1xuICAgICAgICBudW1lcmF0b3IgPSBjb21tYW5kLm51bTtcbiAgICAgICAgZGVub21pbmF0b3IgPSBjb21tYW5kLmRlbjtcbiAgICAgICAgbWFnbmlmaWNhdGlvbiA9IGNvbW1hbmQubWFnO1xuICAgICAgICBjb21tZW50ID0gY29tbWFuZC54O1xuICAgICAgICB5aWVsZCB7XG4gICAgICAgICAgdHlwZTogXCJpbmZvXCIsXG4gICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICBudW1lcmF0b3IsXG4gICAgICAgICAgZGVub21pbmF0b3IsXG4gICAgICAgICAgbWFnbmlmaWNhdGlvbixcbiAgICAgICAgICBjb21tZW50LFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUE9TVDpcbiAgICAgICAgbWF4SGVpZ2h0ID0gY29tbWFuZC5sO1xuICAgICAgICBtYXhXaWR0aCA9IGNvbW1hbmQudTtcbiAgICAgICAgcGFnZXMgPSBjb21tYW5kLnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQT1NUX1BPU1Q6XG4gICAgICAgIHlpZWxkIHtcbiAgICAgICAgICB0eXBlOiBcImluZm9cIixcbiAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgIG51bWVyYXRvcixcbiAgICAgICAgICBkZW5vbWluYXRvcixcbiAgICAgICAgICBtYWduaWZpY2F0aW9uLFxuICAgICAgICAgIGNvbW1lbnQsXG4gICAgICAgICAgbWF4SGVpZ2h0LFxuICAgICAgICAgIG1heFdpZHRoLFxuICAgICAgICAgIHBhZ2VzLFxuICAgICAgICAgIGR2aVZlcnNpb246IGNvbW1hbmQuaSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGdldFRleHRXaWR0aCA9ICh0ZXh0OiBzdHJpbmcsIGZvbnQ6IER2aUZvbnQpID0+IHtcbiAgbGV0IHdpZHRoID0gMDtcbiAgZm9yIChjb25zdCBjaGFyIG9mIHRleHQpIHtcbiAgICBjb25zdCBjb2RlUG9pbnQgPSBjaGFyLmNvZGVQb2ludEF0KDApID8/IDA7XG4gICAgY29uc3QgbWV0cmljcyA9IGZvbnQubWV0cmljcy5jaGFyYWN0ZXJzLmF0KGNvZGVQb2ludCk7XG4gICAgaWYgKG1ldHJpY3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGZvbnQgbWV0cmljIGZvciAke2NvZGVQb2ludH1gKTtcbiAgICB9XG4gICAgd2lkdGggKz0gbWV0cmljcy53aWR0aDtcbiAgfVxuXG4gIC8vIHRmbSBpcyBiYXNlZCBvbiAxLzJeMTYgcHQgdW5pdHMsIHJhdGhlciB0aGFuIGR2aXVuaXQgd2hpY2ggaXMgMTBe4oiSNyBtZXRlcnNcbiAgY29uc3QgZHZpVW5pdHNQZXJGb250VW5pdCA9IGZvbnQubWV0cmljcy5kZXNpZ25fc2l6ZSAvXG4gICAgMTA0ODU3Ni4wICpcbiAgICA2NTUzNiAvIDEwNDg1NzY7XG4gIHJldHVybiB3aWR0aCAqIGR2aVVuaXRzUGVyRm9udFVuaXQgKiBmb250LnNjYWxlRmFjdG9yIC8gZm9udC5kZXNpZ25TaXplO1xufTtcbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZGVuby53b3JrZXJcIiAvPlxuXG5pbXBvcnQgeyBjb21waWxlIH0gZnJvbSBcIi4uLy4uL2RlcHMvdGlrempheC50c1wiO1xuaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSBcImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YWtrZXI5OS9kZW5vLXppcC8wLjAuMi9tb2QudHNcIjtcbmltcG9ydCB7IFdvcmtlckNvbW1hbmQsIFdvcmtlclJlc3VsdCB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBmaW5kTGF0ZXN0Q2FjaGUsIHNhdmVDYWNoZSB9IGZyb20gXCIuL2NhY2hlLnRzXCI7XG5pbXBvcnQge1xuICBDb2xvcixcbiAgY29sb3IsXG4gIGNvbnZlcnRUb0hUTUwsXG4gIFBhcGVyc2l6ZSxcbiAgcGFwZXJzaXplLFxuICBwYXJzZSxcbiAgUGFyc2VJbmZvLFxuICBQUyxcbiAgcHMsXG4gIFJ1bGUsXG4gIFNwZWNpYWwsXG4gIFNWRyxcbiAgc3ZnLFxuICBUZXh0LFxufSBmcm9tIFwiLi4vLi4vZGVwcy9kdmkyaHRtbC50c1wiO1xuXG5nbG9iYWxUaGlzLm9ubWVzc2FnZSA9IGFzeW5jIChlKSA9PiB7XG4gIGNvbnN0IGRhdGE6IFdvcmtlckNvbW1hbmQgPSBlLmRhdGE7XG4gIHN3aXRjaCAoZGF0YS50eXBlKSB7XG4gICAgY2FzZSBcImFzc2V0LXVybFwiOlxuICAgICAge1xuICAgICAgICBhc3NldHNVUkwgPSBkYXRhLnVybDtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBXb3JrZXJSZXN1bHQgPSB7IHR5cGU6IGRhdGEudHlwZSB9O1xuICAgICAgICBnbG9iYWxUaGlzLnBvc3RNZXNzYWdlKHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY29tcGlsZVwiOlxuICAgICAge1xuICAgICAgICBjb25zdCB7IGR2aSwgbG9nIH0gPSBhd2FpdCBjb21waWxlKGRhdGEuaW5wdXQsIHtcbiAgICAgICAgICBmaWxlTG9hZGVyOiBsb2FkRGVjb21wcmVzcyxcbiAgICAgICAgICBjb25zb2xlOiAobWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IFdvcmtlclJlc3VsdCA9IHsgdHlwZTogXCJzdGRvdXRcIiwgbWVzc2FnZSB9O1xuICAgICAgICAgICAgZ2xvYmFsVGhpcy5wb3N0TWVzc2FnZShyZXN1bHQpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWR2aSkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdDogV29ya2VyUmVzdWx0ID0geyB0eXBlOiBkYXRhLnR5cGUsIGxvZyB9O1xuICAgICAgICAgIGdsb2JhbFRoaXMucG9zdE1lc3NhZ2UocmVzdWx0LCBbbG9nLmJ1ZmZlcl0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbW1hbmRzOlxuICAgICAgICAgIChTcGVjaWFsIHwgUFMgfCBQYXBlcnNpemUgfCBTVkcgfCBDb2xvciB8IFRleHQgfCBSdWxlIHwgUGFyc2VJbmZvKVtdID1cbiAgICAgICAgICAgIFtdO1xuICAgICAgICBjb25zdCBmb250TmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgZm9yIGF3YWl0IChcbiAgICAgICAgICBjb25zdCBjb21tYW5kIG9mIHBhcnNlKGR2aSwge1xuICAgICAgICAgICAgcGx1Z2luczogW3BhcGVyc2l6ZSwgcHMoKSwgc3ZnKCksIGNvbG9yKCldLFxuICAgICAgICAgICAgdGZtTG9hZGVyOiBsb2FkRGVjb21wcmVzcyxcbiAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICBjb21tYW5kcy5wdXNoKGNvbW1hbmQpO1xuICAgICAgICAgIGlmIChjb21tYW5kLnR5cGUgIT09IFwidGV4dFwiKSBjb250aW51ZTtcbiAgICAgICAgICBmb250TmFtZXMuYWRkKGNvbW1hbmQuZm9udC5uYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB4bWwgPSBhd2FpdCBjb252ZXJ0VG9IVE1MKGNvbW1hbmRzLCB7XG4gICAgICAgICAgZmlsZUxvYWRlcjogbG9hZERlY29tcHJlc3MsXG4gICAgICAgICAgc3ZnOiB0cnVlLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByZXN1bHQ6IFdvcmtlclJlc3VsdCA9IHsgdHlwZTogZGF0YS50eXBlLCBzdmc6IHhtbCwgbG9nIH07XG4gICAgICAgIGdsb2JhbFRoaXMucG9zdE1lc3NhZ2UocmVzdWx0LCBbbG9nLmJ1ZmZlcl0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbn07XG5cbmxldCBmaWxlczogTWFwPHN0cmluZywgKCkgPT4gUHJvbWlzZTxBcnJheUJ1ZmZlcj4+IHwgdW5kZWZpbmVkO1xuXG5jb25zdCBsb2FkRGVjb21wcmVzcyA9IGFzeW5jIChmaWxlOiBzdHJpbmcpID0+IHtcbiAgZmlsZXMgPz89IGF3YWl0IGxvYWRBc3NldHMoKTtcbiAgY29uc3QgZXh0cmFjdCA9IGZpbGVzLmdldChmaWxlKTtcbiAgaWYgKCFleHRyYWN0KSB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYEZpbGUgJHtmaWxlfSBub3QgZm91bmQgaW4gYXNzZXRzYCk7XG4gICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgIHRocm93IGVycm9yO1xuICB9XG4gIHJldHVybiBuZXcgVWludDhBcnJheShhd2FpdCBleHRyYWN0KCkpO1xufTtcblxubGV0IGFzc2V0c1VSTCA9IFwiXCI7XG5jb25zdCBsb2FkQXNzZXRzID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCByZXEgPSBuZXcgUmVxdWVzdChhc3NldHNVUkwpO1xuICBjb25zdCBjYWNoZVJlcyA9IGF3YWl0IGZpbmRMYXRlc3RDYWNoZShyZXEsIHsgaWdub3JlU2VhcmNoOiB0cnVlIH0pO1xuICBjb25zdCByZXMgPSBjYWNoZVJlcyA/PyBhd2FpdCBmZXRjaChyZXEpO1xuICBpZiAoIWNhY2hlUmVzKSBhd2FpdCBzYXZlQ2FjaGUocmVxLCByZXMpO1xuXG4gIGNvbnN0IGZpbGVzID0gbmV3IE1hcDxzdHJpbmcsICgpID0+IFByb21pc2U8QXJyYXlCdWZmZXI+PigpO1xuICBmb3IgYXdhaXQgKGNvbnN0IHsgbmFtZSwgYXJyYXlCdWZmZXIgfSBvZiBkZWNvZGUoYXdhaXQgcmVzLmFycmF5QnVmZmVyKCkpKSB7XG4gICAgZmlsZXMuc2V0KG5hbWUsIGFycmF5QnVmZmVyKTtcbiAgfVxuICByZXR1cm4gZmlsZXM7XG59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LElBQUksUUFBUXRCLEVBQVMsRUFDM0J1QixFQUFXLE1BQU1DLEdBQWdCRixFQUFLLENBQUUsYUFBYyxFQUFLLENBQUMsRUFDNURHLEVBQU1GLEdBQVksTUFBTSxNQUFNRCxDQUFHLEVBQ2xDQyxHQUFVLE1BQU1HLEdBQVVKLEVBQUtHLENBQUcsRUFFdkMsSUFBTVIsRUFBUSxJQUFJLElBQ2xCLGFBQWlCLENBQUUsS0FBQVUsRUFBTSxZQUFBQyxDQUFZLElBQUtDLEdBQU8sTUFBTUosRUFBSSxZQUFZLENBQUMsRUFDdEVSLEVBQU0sSUFBSVUsRUFBTUMsQ0FBVyxFQUU3QixPQUFPWCxDQUNUIiwKICAibmFtZXMiOiBbImxpYnJhcnlfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJjbG9zZSIsICJkZWxldGVFdmVyeXRoaW5nIiwgImVvZiIsICJlb2xuIiwgImVyc3RhdCIsICJleGVjdXRlQXN5bmMiLCAiZ2V0IiwgImlucHV0bG4iLCAicGFnZXMiLCAicHJpbnRCb29sZWFuIiwgInByaW50Q2hhciIsICJwcmludEZsb2F0IiwgInByaW50SW50ZWdlciIsICJwcmludE5ld2xpbmUiLCAicHJpbnRTdHJpbmciLCAicHV0IiwgInJlYWRGaWxlU3luYyIsICJyZXNldCIsICJyZXdyaXRlIiwgInNldENvbnNvbGUiLCAic2V0RmlsZUxvYWRlciIsICJzZXRJbnB1dCIsICJzZXRNZW1vcnkiLCAidGV4X2ZpbmFsX2VuZCIsICJ3cml0ZUZpbGVTeW5jIiwgImZpbGVzeXN0ZW0iLCAiZmlsZXMiLCAiY29uc29sZUxvZyIsICJjb25zb2xlQnVmZmVyIiwgIm1lbW9yeSIsICJpbnB1dEJ1ZmZlciIsICJjYWxsYmFjayIsICJ3YXNtRXhwb3J0cyIsICJ2aWV3IiwgImZpbGVMb2FkZXIiLCAiZmluaXNoZWQiLCAiREFUQV9BRERSIiwgIkVORF9BRERSIiwgIndpbmRpbmdEZXB0aCIsICJzbGVlcGluZyIsICJzdGFydFVud2luZCIsICJzdGFydFJld2luZCIsICJzdG9wUmV3aW5kIiwgImZpbGVuYW1lIiwgImJ1ZmZlciIsICJmIiwgIm9wZW5TeW5jIiwgIm1vZGUiLCAiaW5pdGlhbFNsZWVwU3RhdGUiLCAiZWxlbWVudCIsICJkYXRhIiwgImNsb3NlU3luYyIsICJ3cml0ZVN5bmMiLCAiZmlsZSIsICJwb2ludGVyIiwgImxlbmd0aCIsICJiIiwgInJlYWRTeW5jIiwgInNlZWsiLCAid3JpdGVUb0NvbnNvbGUiLCAieCIsICJsaW5lcyIsICJsaW5lIiwgImNvbnNvbGUiLCAibSIsICJpbnB1dCIsICJjYiIsICJjIiwgIl93YXNtRXhwb3J0cyIsICJkZXNjcmlwdG9yIiwgInN0cmluZyIsICJyZXN1bHQiLCAiXyIsICJieXBhc3NfZW9sbiIsICJidWZmZXJwIiwgImZpcnN0cCIsICJsYXN0cCIsICJidWZfc2l6ZSIsICJmaXJzdCIsICJsYXN0IiwgImVuZE9mTGluZSIsICJ0aW1lQmFja19leHBvcnRzIiwgIl9fZXhwb3J0IiwgImdldEN1cnJlbnREYXkiLCAiZ2V0Q3VycmVudE1pbnV0ZXMiLCAiZ2V0Q3VycmVudE1vbnRoIiwgImdldEN1cnJlbnRZZWFyIiwgImQiLCAiY29yZWR1bXAiLCAiY29kZSIsICJjb21waWxlIiwgImlucHV0IiwgImluaXQiLCAicGFnZXMiLCAid3JpdGVGaWxlU3luYyIsICJtZW1vcnkiLCAic2V0TWVtb3J5IiwgInNldElucHV0IiwgInNldEZpbGVMb2FkZXIiLCAic2V0Q29uc29sZSIsICJ3YXNtIiwgImxpYnJhcnlfZXhwb3J0cyIsICJ0aW1lQmFja19leHBvcnRzIiwgImV4ZWN1dGVBc3luYyIsICJsb2ciLCAicmVhZEZpbGVTeW5jIiwgImRlbGV0ZUV2ZXJ5dGhpbmciLCAiZGVjb2RlIiwgInppcCIsICJidWZmZXIiLCAidmlldyIsICJlb2NkIiwgImNudSIsICJjb2ZmcyIsICJjc2l6ZSIsICJ1c2l6ZSIsICJubCIsICJlbCIsICJjbCIsICJyb2ZmIiwgInJlYWRMb2NhbCIsICJvIiwgImNtcHIiLCAibmxlbiIsICJlbGVuIiwgIm5hbWUiLCAiZmlsZSIsICJtYWtlRW50cnkiLCAiY29tcHJlc3NlZCIsICJub0NvbXByZXNzaW9uIiwgImRlY29tcHJlc3NlZCIsICJkZWNvbXByZXNzIiwgImluZmxhdGVSYXciLCAidGFibGUiLCAidGFiIiwgIm4iLCAiYyIsICJrIiwgImluZmxhdGVSYXciLCAiYnVmZmVyIiwgImZpbmRMYXRlc3RDYWNoZSIsICJyZXF1ZXN0IiwgIm9wdGlvbnMiLCAiY2FjaGVOYW1lcyIsICJkYXRlIiwgInJlcyIsICJzYXZlQ2FjaGUiLCAicmVzcG9uc2UiLCAiY2FjaGVOYW1lIiwgIm5hbWUiLCAiaWRlbnRpZnlNYXRyaXgiLCAiaXNJZGVudGl0eSIsICJtIiwgInNjYWxlIiwgIm0iLCAieCIsICJ5IiwgInRyYW5zbGF0ZSIsICJyb3RhdGUiLCAicmFkIiwgImMiLCAicyIsICJ0b1NWR1RyYW5zZm9ybSIsICJpc0lkZW50aXR5IiwgInRvRGF0YVVSTCIsICJibG9iIiwgImZpbGVSZWFkZXIiLCAicHJvbWlzZSIsICJyZXNvbHZlIiwgIm1ha2VGb250Q1NTIiwgImZvbnRGaWxlbmFtZXMiLCAiZmlsZUxvYWRlciIsICJmb250RmlsZW5hbWUiLCAidG9EYXRhVVJMIiwgImsiLCAiZm9udCIsICJjb252ZXJ0VG9IVE1MIiwgImNvbW1hbmRzIiwgImluaXQiLCAicG9pbnRzUGVyRHZpVW5pdCIsICJjb2xvciIsICJkZXB0aCIsICJtYXRyaXgiLCAiaWRlbnRpZnlNYXRyaXgiLCAiZm9udE5hbWUiLCAiZm9udFNpemUiLCAiaHRtbCIsICJsYXN0VGV4dFYiLCAibGFzdFRleHRSaWdodCIsICJwYXBlcndpZHRoIiwgInBhcGVyaGVpZ2h0IiwgInVzZWRGb250RmlsZW5hbWVzIiwgImNvbW1hbmQiLCAidGV4dFdpZHRoIiwgInRleHRIZWlnaHQiLCAiaHRtbFRleHQiLCAiYyIsICJjb2RlUG9pbnQiLCAibWV0cmljcyIsICJkdmlVbml0c1BlckZvbnRVbml0IiwgImxlZnQiLCAid2lkdGgiLCAiaGVpZ2h0IiwgInRvcCIsICJ0ZXh0Q29sb3IiLCAiaGFzU3BhY2UiLCAiYm90dG9tIiwgInRvU1ZHVHJhbnNmb3JtIiwgInN2ZyIsICJtYXRjaCIsICJ0YWciLCAic3RhbmRhbG9uZVNWR0JlZ2luVGFnIiwgIl8iLCAidGl0bGUiLCAic3R5bGUiLCAibWFrZUZvbnRDU1MiLCAicGFyc2UiLCAidGZtIiwgInZpZXciLCAiZW50aXJlX2ZpbGVfbGVuZ3RoIiwgImhlYWRlcl9sZW5ndGgiLCAic21hbGxlc3RfY2hhcmFjdGVyX2NvZGUiLCAibGFyZ2VzdF9jaGFyYWN0ZXJfY29kZSIsICJ0YWJsZV9sZW5ndGhzIiwgImFjdHVhbCIsICJwb3NpdGlvbiIsICJzbGljZSIsICJsZW5ndGgiLCAiaSIsICJoZWFkZXJXb3JkcyIsICJjaGFyYWN0ZXJfaW5mbyIsICJ3aWR0aCIsICJoZWlnaHQiLCAiZGVwdGgiLCAiaXRhbGljX2NvcnJlY3Rpb24iLCAibGlnX2tlcm4iLCAia2VybiIsICJleHRlbnNpYmxlX2NoYXJhY3RlciIsICJmb250X3BhcmFtZXRlciIsICJoZWFkZXIiLCAicmVhZEhlYWRlciIsICJjaGFyZWN0ZXJJbmZvIiwgInJlYWRDaGFyYWN0ZXJJbmZvIiwgImZvbnRQYXJhbWV0ZXJzIiwgInJlYWRGb250UGFyYW1lcnRlcnMiLCAicmVhZExpZ0tlcm5Qcm9ncmFtcyIsICJjaGFySW5mbyIsICJ3aWR0aF9pbmRleCIsICJoZWlnaHRfaW5kZXgiLCAiZGVwdGhfaW5kZXgiLCAiaXRhbGljX2luZGV4IiwgImNoYXIiLCAiYnVmZmVyIiwgImNoZWNrc3VtIiwgImRlc2lnbl9zaXplIiwgImNvZGluZ1NjaGVtZUxlbmd0aCIsICJjb2Rpbmdfc2NoZW1lIiwgImZhbWlseUxlbmd0aCIsICJmYW1pbHkiLCAiaGVhZGVyMTciLCAic2V2ZW5fYml0X3NhZmVfZmxhZyIsICJmYWNlIiwgInRhZyIsICJyZW1haW5kZXIiLCAibGlnX2tlcm5lbCIsICJza2lwX2J5dGUiLCAibmV4dF9jaGFyIiwgIm9wX2J5dGUiLCAia2Vybl9pbmRleCIsICJudW1iZXJfb2ZfY2hhcnNfdG9fcGFzc19vdmVyIiwgImN1cnJlbnRfY2hhcl9pc19kZWxldGVkIiwgIm5leHRfY2hhcl9pc19kZWxldGVkIiwgImxpZ2F0dXJlX2NoYXJfY29kZSIsICJjb2RpbmdTY2hlbWUiLCAic2xhbnQiLCAic3BhY2luZyIsICJzcGFjZV9zdHJldGNoIiwgInNwYWNlX3NocmluayIsICJ4X2hlaWdodCIsICJxdWFkIiwgImV4dHJhX3NwYWNlIiwgIm51bTEiLCAibnVtMiIsICJudW0zIiwgImRlbm9tMSIsICJkZW5vbTIiLCAic3VwMSIsICJzdXAyIiwgInN1cDMiLCAic3ViMSIsICJzdWIyIiwgInN1cGRyb3AiLCAic3ViZHJvcCIsICJkZWxpbTEiLCAiZGVsaW0yIiwgImF4aXNfaGVpZ2h0IiwgImRlZmF1bHRfcnVsZV90aGlja25lc3MiLCAiYmlnX29wX3NwYWNpbmciLCAicGFyc2VDb21tYW5kIiwgImJ1ZmZlciIsICJvcGNvZGUiLCAidmlldyIsICJjaGFyTGVuZ3RoIiwgInJlYWRVaW50IiwgImxlbmd0aCIsICJyZWFkSW50IiwgImsiLCAiYSIsICJsIiwgImkiLCAidG9rZW5pemUiLCAiZHZpIiwgIm9mZnNldCIsICJjb21tYW5kIiwgImJ5dGUiLCAiYWNjIiwgImN1ciIsICJ2YWwiLCAiY29sb3IiLCAic3RhY2siLCAibm93Q29sb3IiLCAiY29tbWFuZCIsICJkYXRhIiwgInRleENvbG9yIiwgInJlc3VsdCIsICJpbnRUb0hleCIsICJuIiwgIm5hbWUiLCAieCIsICJzdmciLCAic3ZnVGV4dCIsICJjb21tYW5kIiwgIm5leHQiLCAiZGF0YSIsICJuZXh0RGF0YSIsICJwYXBlcnNpemUiLCAiY29tbWFuZCIsICJkYXRhIiwgIndpZHRoIiwgImhlaWdodCIsICJzdGF0ZVF1ZXVlIiwgImludGVycHJldCIsICJwc0lucHV0IiwgIm1hdHJpeCIsICJob3Jpem9udGFsIiwgInZlcnRpY2FsIiwgInN0YWNrIiwgInRlbXAiLCAib3BlcmF0b3JzIiwgImExIiwgImEyIiwgIlBTTWFyayIsICJ4IiwgIlBTTnVtYmVyIiwgInkiLCAibWF0IiwgInNjYWxlIiwgInRyYW5zbGF0ZSIsICJyIiwgInJvdGF0ZSIsICJ0b2tlbiIsICJ0b2tlbnMiLCAiUFNTdHJpbmciLCAiYXJyYXkiLCAiUFNBcnJheSIsICJlbHQiLCAiUFNJZGVudGlmaWVyIiwgIlBTUHJvY2VkdXJlIiwgImlucHV0IiwgInN0cmluZ0xldmVsIiwgInByb2NlZHVyZUxldmVsIiwgImNoYXJHZW4iLCAiY2hhcmFjdGVyIiwgIm5leHRDaGFyIiwgIlN0YWNrT2JqZWN0IiwgIm5hbWUiLCAidmFsdWUiLCAicHMiLCAicHNUZXh0IiwgImNvbW1hbmQiLCAibmV4dCIsICJkYXRhIiwgImludGVycHJldCIsICJtYXRyaXgiLCAicmVzdWx0IiwgInBhcnNlIiwgImR2aSIsICJpbml0IiwgIml0ZXJhdG9yIiwgIm1pZGRsZVBhcnNlciIsICJyZXN1bHQiLCAibmV4dCIsICJjb21tYW5kIiwgImZvdW5kIiwgInBsdWdpbiIsICJ0Zm1Mb2FkZXIiLCAidmVyc2lvbiIsICJudW1lcmF0b3IiLCAiZGVub21pbmF0b3IiLCAibWFnbmlmaWNhdGlvbiIsICJjb21tZW50IiwgIm1heEhlaWdodCIsICJtYXhXaWR0aCIsICJwYWdlcyIsICJyZWdpc3RlciIsICJzdGFjayIsICJmb250cyIsICJ0ZXh0IiwgInRva2VuaXplIiwgImZvbnQiLCAiZ2V0VGV4dFdpZHRoIiwgInJlZ2lzdGVyXyIsICJuZXdSZWdpc3RlciIsICJuYW1lIiwgInNjYWxlRmFjdG9yIiwgImRlc2lnblNpemUiLCAiY2hlY2tzdW0iLCAid2lkdGgiLCAiY2hhciIsICJjb2RlUG9pbnQiLCAibWV0cmljcyIsICJkdmlVbml0c1BlckZvbnRVbml0IiwgImUiLCAiZGF0YSIsICJhc3NldHNVUkwiLCAicmVzdWx0IiwgImR2aSIsICJsb2ciLCAiY29tcGlsZSIsICJsb2FkRGVjb21wcmVzcyIsICJtZXNzYWdlIiwgImNvbW1hbmRzIiwgImZvbnROYW1lcyIsICJjb21tYW5kIiwgInBhcnNlIiwgInBhcGVyc2l6ZSIsICJwcyIsICJzdmciLCAiY29sb3IiLCAieG1sIiwgImNvbnZlcnRUb0hUTUwiLCAiZmlsZXMiLCAiZmlsZSIsICJsb2FkQXNzZXRzIiwgImV4dHJhY3QiLCAiZXJyb3IiLCAicmVxIiwgImNhY2hlUmVzIiwgImZpbmRMYXRlc3RDYWNoZSIsICJyZXMiLCAic2F2ZUNhY2hlIiwgIm5hbWUiLCAiYXJyYXlCdWZmZXIiLCAiZGVjb2RlIl0KfQo=
code:esbuild-worker.js
var y="0.21.5";(()=>{let r=()=>{let c=new Error("not implemented");return c.code="ENOSYS",c};if(!globalThis.fs){let c="";globalThis.fs={constants:{O_WRONLY:-1,O_RDWR:-1,O_CREAT:-1,O_TRUNC:-1,O_APPEND:-1,O_EXCL:-1},writeSync(n,s){c+=g.decode(s);let i=c.lastIndexOf(`
);return i!=-1&&(console.log(c.substring(0,i)),c=c.substring(i+1)),s.length},write(n,s,i,a,h,u){if(i!==0||a!==s.length||h!==null){u(r());return}let d=this.writeSync(n,s);u(null,d)},chmod(n,s,i){i(r())},chown(n,s,i,a){a(r())},close(n,s){s(r())},fchmod(n,s,i){i(r())},fchown(n,s,i,a){a(r())},fstat(n,s){s(r())},fsync(n,s){s(null)},ftruncate(n,s,i){i(r())},lchown(n,s,i,a){a(r())},link(n,s,i){i(r())},lstat(n,s){s(r())},mkdir(n,s,i){i(r())},open(n,s,i,a){a(r())},read(n,s,i,a,h,u){u(r())},readdir(n,s){s(r())},readlink(n,s){s(r())},rename(n,s,i){i(r())},rmdir(n,s){s(r())},stat(n,s){s(r())},symlink(n,s,i){i(r())},truncate(n,s,i){i(r())},unlink(n,s){s(r())},utimes(n,s,i,a){a(r())}}}if(globalThis.process||(globalThis.process={getuid(){return-1},getgid(){return-1},geteuid(){return-1},getegid(){return-1},getgroups(){throw r()},pid:-1,ppid:-1,umask(){throw r()},cwd(){throw r()},chdir(){throw r()}}),!globalThis.crypto)throw new Error("globalThis.crypto is not available, polyfill required (crypto.getRandomValues only)");if(!globalThis.performance)throw new Error("globalThis.performance is not available, polyfill required (performance.now only)");if(!globalThis.TextEncoder)throw new Error("globalThis.TextEncoder is not available, polyfill required");if(!globalThis.TextDecoder)throw new Error("globalThis.TextDecoder is not available, polyfill required");let f=new TextEncoder("utf-8"),g=new TextDecoder("utf-8");globalThis.Go=class{constructor(){this.argv=["js"],this.env={},this.exit=t=>{t!==0&&console.warn("exit code:",t)},this._exitPromise=new Promise(t=>{this._resolveExitPromise=t}),this._pendingEvent=null,this._scheduledTimeouts=new Map,this._nextCallbackTimeoutID=1;let c=(t,e)=>{this.mem.setUint32(t+0,e,!0),this.mem.setUint32(t+4,Math.floor(e/4294967296),!0)},n=t=>{let e=this.mem.getUint32(t+0,!0),o=this.mem.getInt32(t+4,!0);return e+o*4294967296},s=t=>{let e=this.mem.getFloat64(t,!0);if(e===0)return;if(!isNaN(e))return e;let o=this.mem.getUint32(t,!0);return this._values[o]},i=(t,e)=>{if(typeof e=="number"&&e!==0){if(isNaN(e)){this.mem.setUint32(t+4,2146959360,!0),this.mem.setUint32(t,0,!0);return}this.mem.setFloat64(t,e,!0);return}if(e===void 0){this.mem.setFloat64(t,0,!0);return}let l=this._ids.get(e);l===void 0&&(l=this._idPool.pop(),l===void 0&&(l=this._values.length),this._values[l]=e,this._goRefCounts[l]=0,this._ids.set(e,l)),this._goRefCounts[l]++;let m=0;switch(typeof e){case"object":e!==null&&(m=1);break;case"string":m=2;break;case"symbol":m=3;break;case"function":m=4;break}this.mem.setUint32(t+4,2146959360|m,!0),this.mem.setUint32(t,l,!0)},a=t=>{let e=n(t+0),o=n(t+8);return new Uint8Array(this._inst.exports.mem.buffer,e,o)},h=t=>{let e=n(t+0),o=n(t+8),l=new Array(o);for(let m=0;m<o;m++)l[m]=s(e+m*8);return l},u=t=>{let e=n(t+0),o=n(t+8);return g.decode(new DataView(this._inst.exports.mem.buffer,e,o))},d=Date.now()-performance.now();this.importObject={go:{"runtime.wasmExit":t=>{t>>>=0;let e=this.mem.getInt32(t+8,!0);this.exited=!0,delete this._inst,delete this._values,delete this._goRefCounts,delete this._ids,delete this._idPool,this.exit(e)},"runtime.wasmWrite":t=>{t>>>=0;let e=n(t+8),o=n(t+16),l=this.mem.getInt32(t+24,!0);fs.writeSync(e,new Uint8Array(this._inst.exports.mem.buffer,o,l))},"runtime.resetMemoryDataView":t=>{t>>>=0,this.mem=new DataView(this._inst.exports.mem.buffer)},"runtime.nanotime1":t=>{t>>>=0,c(t+8,(d+performance.now())*1e6)},"runtime.walltime":t=>{t>>>=0;let e=new Date().getTime();c(t+8,e/1e3),this.mem.setInt32(t+16,e%1e3*1e6,!0)},"runtime.scheduleTimeoutEvent":t=>{t>>>=0;let e=this._nextCallbackTimeoutID;this._nextCallbackTimeoutID++,this._scheduledTimeouts.set(e,setTimeout(()=>{for(this._resume();this._scheduledTimeouts.has(e);)console.warn("scheduleTimeoutEvent: missed timeout event"),this._resume()},n(t+8)+1)),this.mem.setInt32(t+16,e,!0)},"runtime.clearTimeoutEvent":t=>{t>>>=0;let e=this.mem.getInt32(t+8,!0);clearTimeout(this._scheduledTimeouts.get(e)),this._scheduledTimeouts.delete(e)},"runtime.getRandomData":t=>{t>>>=0,crypto.getRandomValues(a(t+8))},"syscall/js.finalizeRef":t=>{t>>>=0;let e=this.mem.getUint32(t+8,!0);if(this._goRefCounts[e]--,this._goRefCounts[e]===0){let o=this._values[e];this._values[e]=null,this._ids.delete(o),this._idPool.push(e)}},"syscall/js.stringVal":t=>{t>>>=0,i(t+24,u(t+8))},"syscall/js.valueGet":t=>{t>>>=0;let e=Reflect.get(s(t+8),u(t+16));t=this._inst.exports.getsp()>>>0,i(t+32,e)},"syscall/js.valueSet":t=>{t>>>=0,Reflect.set(s(t+8),u(t+16),s(t+32))},"syscall/js.valueDelete":t=>{t>>>=0,Reflect.deleteProperty(s(t+8),u(t+16))},"syscall/js.valueIndex":t=>{t>>>=0,i(t+24,Reflect.get(s(t+8),n(t+16)))},"syscall/js.valueSetIndex":t=>{t>>>=0,Reflect.set(s(t+8),n(t+16),s(t+24))},"syscall/js.valueCall":t=>{t>>>=0;try{let e=s(t+8),o=Reflect.get(e,u(t+16)),l=h(t+32),m=Reflect.apply(o,e,l);t=this._inst.exports.getsp()>>>0,i(t+56,m),this.mem.setUint8(t+64,1)}catch(e){t=this._inst.exports.getsp()>>>0,i(t+56,e),this.mem.setUint8(t+64,0)}},"syscall/js.valueInvoke":t=>{t>>>=0;try{let e=s(t+8),o=h(t+16),l=Reflect.apply(e,void 0,o);t=this._inst.exports.getsp()>>>0,i(t+40,l),this.mem.setUint8(t+48,1)}catch(e){t=this._inst.exports.getsp()>>>0,i(t+40,e),this.mem.setUint8(t+48,0)}},"syscall/js.valueNew":t=>{t>>>=0;try{let e=s(t+8),o=h(t+16),l=Reflect.construct(e,o);t=this._inst.exports.getsp()>>>0,i(t+40,l),this.mem.setUint8(t+48,1)}catch(e){t=this._inst.exports.getsp()>>>0,i(t+40,e),this.mem.setUint8(t+48,0)}},"syscall/js.valueLength":t=>{t>>>=0,c(t+16,parseInt(s(t+8).length))},"syscall/js.valuePrepareString":t=>{t>>>=0;let e=f.encode(String(s(t+8)));i(t+16,e),c(t+24,e.length)},"syscall/js.valueLoadString":t=>{t>>>=0;let e=s(t+8);a(t+16).set(e)},"syscall/js.valueInstanceOf":t=>{t>>>=0,this.mem.setUint8(t+24,s(t+8)instanceof s(t+16)?1:0)},"syscall/js.copyBytesToGo":t=>{t>>>=0;let e=a(t+8),o=s(t+32);if(!(o instanceof Uint8Array||o instanceof Uint8ClampedArray)){this.mem.setUint8(t+48,0);return}let l=o.subarray(0,e.length);e.set(l),c(t+40,l.length),this.mem.setUint8(t+48,1)},"syscall/js.copyBytesToJS":t=>{t>>>=0;let e=s(t+8),o=a(t+16);if(!(e instanceof Uint8Array||e instanceof Uint8ClampedArray)){this.mem.setUint8(t+48,0);return}let l=o.subarray(0,e.length);e.set(l),c(t+40,l.length),this.mem.setUint8(t+48,1)},debug:t=>{console.log(t)}}}}async run(c){if(!(c instanceof WebAssembly.Instance))throw new Error("Go.run: WebAssembly.Instance expected");this._inst=c,this.mem=new DataView(this._inst.exports.mem.buffer),this._values=[NaN,0,null,!0,!1,globalThis,this],this._goRefCounts=new Array(this._values.length).fill(1/0),this._ids=new Map([[0,1],[null,2],[!0,3],[!1,4],[globalThis,5],[this,6]]),this._idPool=[],this.exited=!1;let n=4096,s=t=>{let e=n,o=f.encode(t+"\0");return new Uint8Array(this.mem.buffer,n,o.length).set(o),n+=o.length,n%8!==0&&(n+=8-n%8),e},i=this.argv.length,a=[];this.argv.forEach(t=>{a.push(s(t))}),a.push(0),Object.keys(this.env).sort().forEach(t=>{a.push(s(${t}=${this.envt}))}),a.push(0);let u=n;if(a.forEach(t=>{this.mem.setUint32(n,t,!0),this.mem.setUint32(n+4,0,!0),n+=8}),n>=12288)throw new Error("total length of command line and environment variables exceeds limit");this._inst.exports.run(i,u),this.exited&&this._resolveExitPromise(),await this._exitPromise}_resume(){if(this.exited)throw new Error("Go program has already exited");this._inst.exports.resume(),this.exited&&this._resolveExitPromise()}_makeFuncWrapper(c){let n=this;return function(){let s={id:c,this:this,args:arguments};return n._pendingEvent=s,n._resume(),s.result}}}})();onmessage=({data:r})=>{let f=new TextDecoder,g=globalThis.fs,c="";g.writeSync=(h,u)=>{if(h===1)postMessage(u);else if(h===2){c+=f.decode(u);let d=c.split( );d.length>1&&console.log(d.slice(0,-1).join(
)),c=d[d.length-1]}else throw new Error("Bad write");return u.length};let n=[],s,i=0;onmessage=({data:h})=>(h.length>0&&(n.push(h),s&&s()),a),g.read=(h,u,d,t,e,o)=>{if(h!==0||d!==0||t!==u.length||e!==null)throw new Error("Bad read");if(n.length===0){s=()=>g.read(h,u,d,t,e,o);return}let l=n[0],m=Math.max(0,Math.min(t,l.length-i));u.set(l.subarray(i,i+m),d),i+=m,i===l.length&&(n.shift(),i=0),o(null,m)};let a=new globalThis.Go;return a.argv=["",--service=${ESBUILD_VERSION}],b(r,a).then(h=>{postMessage(null),a.run(h)},h=>{postMessage(h)}),a};async function b(r,f){if(r instanceof WebAssembly.Module)return WebAssembly.instantiate(r,f.importObject);let g=await fetch(r);if(!g.ok)throw new Error(Failed to download ${JSON.stringify(r)}`);if("instantiateStreaming"in WebAssembly&&/^application\/wasm($|;)/i.test(g.headers.get("Content-Type")||""))return(await WebAssembly.instantiateStreaming(g,f.importObject)).instance;let c=await g.arrayBuffer();return(await WebAssembly.instantiate(c,f.importObject)).instance}globalThis.ESBUILD_VERSION=y;
/** @license
* esbuild-wasm@0.21.5
*
* MIT License
*
* Copyright (c) 2020 Evan Wallace
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rha2tlcjk5L2VzYnVpbGQtd2FzbS1uby1ibG9iLzAuMjEuNS92ZXJzaW9uLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9nb2xhbmcvZ28vZ28xLjIwLjEyL21pc2Mvd2FzbS93YXNtX2V4ZWMuanMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2V2YW53L2VzYnVpbGQvdjAuMjEuNS9saWIvc2hhcmVkL3dvcmtlci50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFra2VyOTkvZXNidWlsZC13YXNtLW5vLWJsb2IvMC4yMS41L3dvcmtlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiZXhwb3J0IGNvbnN0IEVTQlVJTERfVkVSU0lPTiA9IFwiMC4yMS41XCI7XG4iLCAiLy8gQ29weXJpZ2h0IDIwMTggVGhlIEdvIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZVxuLy8gbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLlxuXG5cInVzZSBzdHJpY3RcIjtcblxuKCgpID0+IHtcblx0Y29uc3QgZW5vc3lzID0gKCkgPT4ge1xuXHRcdGNvbnN0IGVyciA9IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcblx0XHRlcnIuY29kZSA9IFwiRU5PU1lTXCI7XG5cdFx0cmV0dXJuIGVycjtcblx0fTtcblxuXHRpZiAoIWdsb2JhbFRoaXMuZnMpIHtcblx0XHRsZXQgb3V0cHV0QnVmID0gXCJcIjtcblx0XHRnbG9iYWxUaGlzLmZzID0ge1xuXHRcdFx0Y29uc3RhbnRzOiB7IE9fV1JPTkxZOiAtMSwgT19SRFdSOiAtMSwgT19DUkVBVDogLTEsIE9fVFJVTkM6IC0xLCBPX0FQUEVORDogLTEsIE9fRVhDTDogLTEgfSwgLy8gdW51c2VkXG5cdFx0XHR3cml0ZVN5bmMoZmQsIGJ1Zikge1xuXHRcdFx0XHRvdXRwdXRCdWYgKz0gZGVjb2Rlci5kZWNvZGUoYnVmKTtcblx0XHRcdFx0Y29uc3QgbmwgPSBvdXRwdXRCdWYubGFzdEluZGV4T2YoXCJcXG5cIik7XG5cdFx0XHRcdGlmIChubCAhPSAtMSkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKG91dHB1dEJ1Zi5zdWJzdHJpbmcoMCwgbmwpKTtcblx0XHRcdFx0XHRvdXRwdXRCdWYgPSBvdXRwdXRCdWYuc3Vic3RyaW5nKG5sICsgMSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGJ1Zi5sZW5ndGg7XG5cdFx0XHR9LFxuXHRcdFx0d3JpdGUoZmQsIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uLCBjYWxsYmFjaykge1xuXHRcdFx0XHRpZiAob2Zmc2V0ICE9PSAwIHx8IGxlbmd0aCAhPT0gYnVmLmxlbmd0aCB8fCBwb3NpdGlvbiAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdGNhbGxiYWNrKGVub3N5cygpKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgbiA9IHRoaXMud3JpdGVTeW5jKGZkLCBidWYpO1xuXHRcdFx0XHRjYWxsYmFjayhudWxsLCBuKTtcblx0XHRcdH0sXG5cdFx0XHRjaG1vZChwYXRoLCBtb2RlLCBjYWxsYmFjaykgeyBjYWxsYmFjayhlbm9zeXMoKSk7IH0sXG5cdFx0XHRjaG93bihwYXRoLCB1aWQsIGdpZCwgY2FsbGJhY2spIHsgY2FsbGJhY2soZW5vc3lzKCkpOyB9LFxuXHRcdFx0Y2xvc2UoZmQsIGNhbGxiYWNrKSB7IGNhbGxiYWNrKGVub3N5cygpKTsgfSxcblx0XHRcdGZjaG1vZChmZCwgbW9kZSwgY2FsbGJhY2spIHsgY2FsbGJhY2soZW5vc3lzKCkpOyB9LFxuXHRcdFx0ZmNob3duKGZkLCB1aWQsIGdpZCwgY2FsbGJhY2spIHsgY2FsbGJhY2soZW5vc3lzKCkpOyB9LFxuXHRcdFx0ZnN0YXQoZmQsIGNhbGxiYWNrKSB7IGNhbGxiYWNrKGVub3N5cygpKTsgfSxcblx0XHRcdGZzeW5jKGZkLCBjYWxsYmFjaykgeyBjYWxsYmFjayhudWxsKTsgfSxcblx0XHRcdGZ0cnVuY2F0ZShmZCwgbGVuZ3RoLCBjYWxsYmFjaykgeyBjYWxsYmFjayhlbm9zeXMoKSk7IH0sXG5cdFx0XHRsY2hvd24ocGF0aCwgdWlkLCBnaWQsIGNhbGxiYWNrKSB7IGNhbGxiYWNrKGVub3N5cygpKTsgfSxcblx0XHRcdGxpbmsocGF0aCwgbGluaywgY2FsbGJhY2spIHsgY2FsbGJhY2soZW5vc3lzKCkpOyB9LFxuXHRcdFx0bHN0YXQocGF0aCwgY2FsbGJhY2spIHsgY2FsbGJhY2soZW5vc3lzKCkpOyB9LFxuXHRcdFx0bWtkaXIocGF0aCwgcGVybSwgY2FsbGJhY2spIHsgY2FsbGJhY2soZW5vc3lzKCkpOyB9LFxuXHRcdFx0b3BlbihwYXRoLCBmbGFncywgbW9kZSwgY2FsbGJhY2spIHsgY2FsbGJhY2soZW5vc3lzKCkpOyB9LFxuXHRcdFx0cmVhZChmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24sIGNhbGxiYWNrKSB7IGNhbGxiYWNrKGVub3N5cygpKTsgfSxcblx0XHRcdHJlYWRkaXIocGF0aCwgY2FsbGJhY2spIHsgY2FsbGJhY2soZW5vc3lzKCkpOyB9LFxuXHRcdFx0cmVhZGxpbmsocGF0aCwgY2FsbGJhY2spIHsgY2FsbGJhY2soZW5vc3lzKCkpOyB9LFxuXHRcdFx0cmVuYW1lKGZyb20sIHRvLCBjYWxsYmFjaykgeyBjYWxsYmFjayhlbm9zeXMoKSk7IH0sXG5cdFx0XHRybWRpcihwYXRoLCBjYWxsYmFjaykgeyBjYWxsYmFjayhlbm9zeXMoKSk7IH0sXG5cdFx0XHRzdGF0KHBhdGgsIGNhbGxiYWNrKSB7IGNhbGxiYWNrKGVub3N5cygpKTsgfSxcblx0XHRcdHN5bWxpbmsocGF0aCwgbGluaywgY2FsbGJhY2spIHsgY2FsbGJhY2soZW5vc3lzKCkpOyB9LFxuXHRcdFx0dHJ1bmNhdGUocGF0aCwgbGVuZ3RoLCBjYWxsYmFjaykgeyBjYWxsYmFjayhlbm9zeXMoKSk7IH0sXG5cdFx0XHR1bmxpbmsocGF0aCwgY2FsbGJhY2spIHsgY2FsbGJhY2soZW5vc3lzKCkpOyB9LFxuXHRcdFx0dXRpbWVzKHBhdGgsIGF0aW1lLCBtdGltZSwgY2FsbGJhY2spIHsgY2FsbGJhY2soZW5vc3lzKCkpOyB9LFxuXHRcdH07XG5cdH1cblxuXHRpZiAoIWdsb2JhbFRoaXMucHJvY2Vzcykge1xuXHRcdGdsb2JhbFRoaXMucHJvY2VzcyA9IHtcblx0XHRcdGdldHVpZCgpIHsgcmV0dXJuIC0xOyB9LFxuXHRcdFx0Z2V0Z2lkKCkgeyByZXR1cm4gLTE7IH0sXG5cdFx0XHRnZXRldWlkKCkgeyByZXR1cm4gLTE7IH0sXG5cdFx0XHRnZXRlZ2lkKCkgeyByZXR1cm4gLTE7IH0sXG5cdFx0XHRnZXRncm91cHMoKSB7IHRocm93IGVub3N5cygpOyB9LFxuXHRcdFx0cGlkOiAtMSxcblx0XHRcdHBwaWQ6IC0xLFxuXHRcdFx0dW1hc2soKSB7IHRocm93IGVub3N5cygpOyB9LFxuXHRcdFx0Y3dkKCkgeyB0aHJvdyBlbm9zeXMoKTsgfSxcblx0XHRcdGNoZGlyKCkgeyB0aHJvdyBlbm9zeXMoKTsgfSxcblx0XHR9XG5cdH1cblxuXHRpZiAoIWdsb2JhbFRoaXMuY3J5cHRvKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiZ2xvYmFsVGhpcy5jcnlwdG8gaXMgbm90IGF2YWlsYWJsZSwgcG9seWZpbGwgcmVxdWlyZWQgKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMgb25seSlcIik7XG5cdH1cblxuXHRpZiAoIWdsb2JhbFRoaXMucGVyZm9ybWFuY2UpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJnbG9iYWxUaGlzLnBlcmZvcm1hbmNlIGlzIG5vdCBhdmFpbGFibGUsIHBvbHlmaWxsIHJlcXVpcmVkIChwZXJmb3JtYW5jZS5ub3cgb25seSlcIik7XG5cdH1cblxuXHRpZiAoIWdsb2JhbFRoaXMuVGV4dEVuY29kZXIpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJnbG9iYWxUaGlzLlRleHRFbmNvZGVyIGlzIG5vdCBhdmFpbGFibGUsIHBvbHlmaWxsIHJlcXVpcmVkXCIpO1xuXHR9XG5cblx0aWYgKCFnbG9iYWxUaGlzLlRleHREZWNvZGVyKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiZ2xvYmFsVGhpcy5UZXh0RGVjb2RlciBpcyBub3QgYXZhaWxhYmxlLCBwb2x5ZmlsbCByZXF1aXJlZFwiKTtcblx0fVxuXG5cdGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoXCJ1dGYtOFwiKTtcblx0Y29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcihcInV0Zi04XCIpO1xuXG5cdGdsb2JhbFRoaXMuR28gPSBjbGFzcyB7XG5cdFx0Y29uc3RydWN0b3IoKSB7XG5cdFx0XHR0aGlzLmFyZ3YgPSBbXCJqc1wiXTtcblx0XHRcdHRoaXMuZW52ID0ge307XG5cdFx0XHR0aGlzLmV4aXQgPSAoY29kZSkgPT4ge1xuXHRcdFx0XHRpZiAoY29kZSAhPT0gMCkge1xuXHRcdFx0XHRcdGNvbnNvbGUud2FybihcImV4aXQgY29kZTpcIiwgY29kZSk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHR0aGlzLl9leGl0UHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cdFx0XHRcdHRoaXMuX3Jlc29sdmVFeGl0UHJvbWlzZSA9IHJlc29sdmU7XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMuX3BlbmRpbmdFdmVudCA9IG51bGw7XG5cdFx0XHR0aGlzLl9zY2hlZHVsZWRUaW1lb3V0cyA9IG5ldyBNYXAoKTtcblx0XHRcdHRoaXMuX25leHRDYWxsYmFja1RpbWVvdXRJRCA9IDE7XG5cblx0XHRcdGNvbnN0IHNldEludDY0ID0gKGFkZHIsIHYpID0+IHtcblx0XHRcdFx0dGhpcy5tZW0uc2V0VWludDMyKGFkZHIgKyAwLCB2LCB0cnVlKTtcblx0XHRcdFx0dGhpcy5tZW0uc2V0VWludDMyKGFkZHIgKyA0LCBNYXRoLmZsb29yKHYgLyA0Mjk0OTY3Mjk2KSwgdHJ1ZSk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGdldEludDY0ID0gKGFkZHIpID0+IHtcblx0XHRcdFx0Y29uc3QgbG93ID0gdGhpcy5tZW0uZ2V0VWludDMyKGFkZHIgKyAwLCB0cnVlKTtcblx0XHRcdFx0Y29uc3QgaGlnaCA9IHRoaXMubWVtLmdldEludDMyKGFkZHIgKyA0LCB0cnVlKTtcblx0XHRcdFx0cmV0dXJuIGxvdyArIGhpZ2ggKiA0Mjk0OTY3Mjk2O1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBsb2FkVmFsdWUgPSAoYWRkcikgPT4ge1xuXHRcdFx0XHRjb25zdCBmID0gdGhpcy5tZW0uZ2V0RmxvYXQ2NChhZGRyLCB0cnVlKTtcblx0XHRcdFx0aWYgKGYgPT09IDApIHtcblx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghaXNOYU4oZikpIHtcblx0XHRcdFx0XHRyZXR1cm4gZjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGlkID0gdGhpcy5tZW0uZ2V0VWludDMyKGFkZHIsIHRydWUpO1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5fdmFsdWVzW2lkXTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3Qgc3RvcmVWYWx1ZSA9IChhZGRyLCB2KSA9PiB7XG5cdFx0XHRcdGNvbnN0IG5hbkhlYWQgPSAweDdGRjgwMDAwO1xuXG5cdFx0XHRcdGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIiAmJiB2ICE9PSAwKSB7XG5cdFx0XHRcdFx0aWYgKGlzTmFOKHYpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLm1lbS5zZXRVaW50MzIoYWRkciArIDQsIG5hbkhlYWQsIHRydWUpO1xuXHRcdFx0XHRcdFx0dGhpcy5tZW0uc2V0VWludDMyKGFkZHIsIDAsIHRydWUpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLm1lbS5zZXRGbG9hdDY0KGFkZHIsIHYsIHRydWUpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh2ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHR0aGlzLm1lbS5zZXRGbG9hdDY0KGFkZHIsIDAsIHRydWUpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCBpZCA9IHRoaXMuX2lkcy5nZXQodik7XG5cdFx0XHRcdGlmIChpZCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0aWQgPSB0aGlzLl9pZFBvb2wucG9wKCk7XG5cdFx0XHRcdFx0aWYgKGlkID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdGlkID0gdGhpcy5fdmFsdWVzLmxlbmd0aDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5fdmFsdWVzW2lkXSA9IHY7XG5cdFx0XHRcdFx0dGhpcy5fZ29SZWZDb3VudHNbaWRdID0gMDtcblx0XHRcdFx0XHR0aGlzLl9pZHMuc2V0KHYsIGlkKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLl9nb1JlZkNvdW50c1tpZF0rKztcblx0XHRcdFx0bGV0IHR5cGVGbGFnID0gMDtcblx0XHRcdFx0c3dpdGNoICh0eXBlb2Ygdikge1xuXHRcdFx0XHRcdGNhc2UgXCJvYmplY3RcIjpcblx0XHRcdFx0XHRcdGlmICh2ICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdHR5cGVGbGFnID0gMTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJzdHJpbmdcIjpcblx0XHRcdFx0XHRcdHR5cGVGbGFnID0gMjtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJzeW1ib2xcIjpcblx0XHRcdFx0XHRcdHR5cGVGbGFnID0gMztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJmdW5jdGlvblwiOlxuXHRcdFx0XHRcdFx0dHlwZUZsYWcgPSA0O1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5tZW0uc2V0VWludDMyKGFkZHIgKyA0LCBuYW5IZWFkIHwgdHlwZUZsYWcsIHRydWUpO1xuXHRcdFx0XHR0aGlzLm1lbS5zZXRVaW50MzIoYWRkciwgaWQsIHRydWUpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBsb2FkU2xpY2UgPSAoYWRkcikgPT4ge1xuXHRcdFx0XHRjb25zdCBhcnJheSA9IGdldEludDY0KGFkZHIgKyAwKTtcblx0XHRcdFx0Y29uc3QgbGVuID0gZ2V0SW50NjQoYWRkciArIDgpO1xuXHRcdFx0XHRyZXR1cm4gbmV3IFVpbnQ4QXJyYXkodGhpcy5faW5zdC5leHBvcnRzLm1lbS5idWZmZXIsIGFycmF5LCBsZW4pO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBsb2FkU2xpY2VPZlZhbHVlcyA9IChhZGRyKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGFycmF5ID0gZ2V0SW50NjQoYWRkciArIDApO1xuXHRcdFx0XHRjb25zdCBsZW4gPSBnZXRJbnQ2NChhZGRyICsgOCk7XG5cdFx0XHRcdGNvbnN0IGEgPSBuZXcgQXJyYXkobGVuKTtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0XHRcdGFbaV0gPSBsb2FkVmFsdWUoYXJyYXkgKyBpICogOCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGE7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGxvYWRTdHJpbmcgPSAoYWRkcikgPT4ge1xuXHRcdFx0XHRjb25zdCBzYWRkciA9IGdldEludDY0KGFkZHIgKyAwKTtcblx0XHRcdFx0Y29uc3QgbGVuID0gZ2V0SW50NjQoYWRkciArIDgpO1xuXHRcdFx0XHRyZXR1cm4gZGVjb2Rlci5kZWNvZGUobmV3IERhdGFWaWV3KHRoaXMuX2luc3QuZXhwb3J0cy5tZW0uYnVmZmVyLCBzYWRkciwgbGVuKSk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHRpbWVPcmlnaW4gPSBEYXRlLm5vdygpIC0gcGVyZm9ybWFuY2Uubm93KCk7XG5cdFx0XHR0aGlzLmltcG9ydE9iamVjdCA9IHtcblx0XHRcdFx0Z286IHtcblx0XHRcdFx0XHQvLyBHbydzIFNQIGRvZXMgbm90IGNoYW5nZSBhcyBsb25nIGFzIG5vIEdvIGNvZGUgaXMgcnVubmluZy4gU29tZSBvcGVyYXRpb25zIChlLmcuIGNhbGxzLCBnZXR0ZXJzIGFuZCBzZXR0ZXJzKVxuXHRcdFx0XHRcdC8vIG1heSBzeW5jaHJvbm91c2x5IHRyaWdnZXIgYSBHbyBldmVudCBoYW5kbGVyLiBUaGlzIG1ha2VzIEdvIGNvZGUgZ2V0IGV4ZWN1dGVkIGluIHRoZSBtaWRkbGUgb2YgdGhlIGltcG9ydGVkXG5cdFx0XHRcdFx0Ly8gZnVuY3Rpb24uIEEgZ29yb3V0aW5lIGNhbiBzd2l0Y2ggdG8gYSBuZXcgc3RhY2sgaWYgdGhlIGN1cnJlbnQgc3RhY2sgaXMgdG9vIHNtYWxsIChzZWUgbW9yZXN0YWNrIGZ1bmN0aW9uKS5cblx0XHRcdFx0XHQvLyBUaGlzIGNoYW5nZXMgdGhlIFNQLCB0aHVzIHdlIGhhdmUgdG8gdXBkYXRlIHRoZSBTUCB1c2VkIGJ5IHRoZSBpbXBvcnRlZCBmdW5jdGlvbi5cblxuXHRcdFx0XHRcdC8vIGZ1bmMgd2FzbUV4aXQoY29kZSBpbnQzMilcblx0XHRcdFx0XHRcInJ1bnRpbWUud2FzbUV4aXRcIjogKHNwKSA9PiB7XG5cdFx0XHRcdFx0XHRzcCA+Pj49IDA7XG5cdFx0XHRcdFx0XHRjb25zdCBjb2RlID0gdGhpcy5tZW0uZ2V0SW50MzIoc3AgKyA4LCB0cnVlKTtcblx0XHRcdFx0XHRcdHRoaXMuZXhpdGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGRlbGV0ZSB0aGlzLl9pbnN0O1xuXHRcdFx0XHRcdFx0ZGVsZXRlIHRoaXMuX3ZhbHVlcztcblx0XHRcdFx0XHRcdGRlbGV0ZSB0aGlzLl9nb1JlZkNvdW50cztcblx0XHRcdFx0XHRcdGRlbGV0ZSB0aGlzLl9pZHM7XG5cdFx0XHRcdFx0XHRkZWxldGUgdGhpcy5faWRQb29sO1xuXHRcdFx0XHRcdFx0dGhpcy5leGl0KGNvZGUpO1xuXHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHQvLyBmdW5jIHdhc21Xcml0ZShmZCB1aW50cHRyLCBwIHVuc2FmZS5Qb2ludGVyLCBuIGludDMyKVxuXHRcdFx0XHRcdFwicnVudGltZS53YXNtV3JpdGVcIjogKHNwKSA9PiB7XG5cdFx0XHRcdFx0XHRzcCA+Pj49IDA7XG5cdFx0XHRcdFx0XHRjb25zdCBmZCA9IGdldEludDY0KHNwICsgOCk7XG5cdFx0XHRcdFx0XHRjb25zdCBwID0gZ2V0SW50NjQoc3AgKyAxNik7XG5cdFx0XHRcdFx0XHRjb25zdCBuID0gdGhpcy5tZW0uZ2V0SW50MzIoc3AgKyAyNCwgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRmcy53cml0ZVN5bmMoZmQsIG5ldyBVaW50OEFycmF5KHRoaXMuX2luc3QuZXhwb3J0cy5tZW0uYnVmZmVyLCBwLCBuKSk7XG5cdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdC8vIGZ1bmMgcmVzZXRNZW1vcnlEYXRhVmlldygpXG5cdFx0XHRcdFx0XCJydW50aW1lLnJlc2V0TWVtb3J5RGF0YVZpZXdcIjogKHNwKSA9PiB7XG5cdFx0XHRcdFx0XHRzcCA+Pj49IDA7XG5cdFx0XHRcdFx0XHR0aGlzLm1lbSA9IG5ldyBEYXRhVmlldyh0aGlzLl9pbnN0LmV4cG9ydHMubWVtLmJ1ZmZlcik7XG5cdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdC8vIGZ1bmMgbmFub3RpbWUxKCkgaW50NjRcblx0XHRcdFx0XHRcInJ1bnRpbWUubmFub3RpbWUxXCI6IChzcCkgPT4ge1xuXHRcdFx0XHRcdFx0c3AgPj4+PSAwO1xuXHRcdFx0XHRcdFx0c2V0SW50NjQoc3AgKyA4LCAodGltZU9yaWdpbiArIHBlcmZvcm1hbmNlLm5vdygpKSAqIDEwMDAwMDApO1xuXHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHQvLyBmdW5jIHdhbGx0aW1lKCkgKHNlYyBpbnQ2NCwgbnNlYyBpbnQzMilcblx0XHRcdFx0XHRcInJ1bnRpbWUud2FsbHRpbWVcIjogKHNwKSA9PiB7XG5cdFx0XHRcdFx0XHRzcCA+Pj49IDA7XG5cdFx0XHRcdFx0XHRjb25zdCBtc2VjID0gKG5ldyBEYXRlKS5nZXRUaW1lKCk7XG5cdFx0XHRcdFx0XHRzZXRJbnQ2NChzcCArIDgsIG1zZWMgLyAxMDAwKTtcblx0XHRcdFx0XHRcdHRoaXMubWVtLnNldEludDMyKHNwICsgMTYsIChtc2VjICUgMTAwMCkgKiAxMDAwMDAwLCB0cnVlKTtcblx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0Ly8gZnVuYyBzY2hlZHVsZVRpbWVvdXRFdmVudChkZWxheSBpbnQ2NCkgaW50MzJcblx0XHRcdFx0XHRcInJ1bnRpbWUuc2NoZWR1bGVUaW1lb3V0RXZlbnRcIjogKHNwKSA9PiB7XG5cdFx0XHRcdFx0XHRzcCA+Pj49IDA7XG5cdFx0XHRcdFx0XHRjb25zdCBpZCA9IHRoaXMuX25leHRDYWxsYmFja1RpbWVvdXRJRDtcblx0XHRcdFx0XHRcdHRoaXMuX25leHRDYWxsYmFja1RpbWVvdXRJRCsrO1xuXHRcdFx0XHRcdFx0dGhpcy5fc2NoZWR1bGVkVGltZW91dHMuc2V0KGlkLCBzZXRUaW1lb3V0KFxuXHRcdFx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5fcmVzdW1lKCk7XG5cdFx0XHRcdFx0XHRcdFx0d2hpbGUgKHRoaXMuX3NjaGVkdWxlZFRpbWVvdXRzLmhhcyhpZCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGZvciBzb21lIHJlYXNvbiBHbyBmYWlsZWQgdG8gcmVnaXN0ZXIgdGhlIHRpbWVvdXQgZXZlbnQsIGxvZyBhbmQgdHJ5IGFnYWluXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyAodGVtcG9yYXJ5IHdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9nb2xhbmcvZ28vaXNzdWVzLzI4OTc1KVxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS53YXJuKFwic2NoZWR1bGVUaW1lb3V0RXZlbnQ6IG1pc3NlZCB0aW1lb3V0IGV2ZW50XCIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5fcmVzdW1lKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRnZXRJbnQ2NChzcCArIDgpICsgMSwgLy8gc2V0VGltZW91dCBoYXMgYmVlbiBzZWVuIHRvIGZpcmUgdXAgdG8gMSBtaWxsaXNlY29uZCBlYXJseVxuXHRcdFx0XHRcdFx0KSk7XG5cdFx0XHRcdFx0XHR0aGlzLm1lbS5zZXRJbnQzMihzcCArIDE2LCBpZCwgdHJ1ZSk7XG5cdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdC8vIGZ1bmMgY2xlYXJUaW1lb3V0RXZlbnQoaWQgaW50MzIpXG5cdFx0XHRcdFx0XCJydW50aW1lLmNsZWFyVGltZW91dEV2ZW50XCI6IChzcCkgPT4ge1xuXHRcdFx0XHRcdFx0c3AgPj4+PSAwO1xuXHRcdFx0XHRcdFx0Y29uc3QgaWQgPSB0aGlzLm1lbS5nZXRJbnQzMihzcCArIDgsIHRydWUpO1xuXHRcdFx0XHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMuX3NjaGVkdWxlZFRpbWVvdXRzLmdldChpZCkpO1xuXHRcdFx0XHRcdFx0dGhpcy5fc2NoZWR1bGVkVGltZW91dHMuZGVsZXRlKGlkKTtcblx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0Ly8gZnVuYyBnZXRSYW5kb21EYXRhKHIgW11ieXRlKVxuXHRcdFx0XHRcdFwicnVudGltZS5nZXRSYW5kb21EYXRhXCI6IChzcCkgPT4ge1xuXHRcdFx0XHRcdFx0c3AgPj4+PSAwO1xuXHRcdFx0XHRcdFx0Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyhsb2FkU2xpY2Uoc3AgKyA4KSk7XG5cdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdC8vIGZ1bmMgZmluYWxpemVSZWYodiByZWYpXG5cdFx0XHRcdFx0XCJzeXNjYWxsL2pzLmZpbmFsaXplUmVmXCI6IChzcCkgPT4ge1xuXHRcdFx0XHRcdFx0c3AgPj4+PSAwO1xuXHRcdFx0XHRcdFx0Y29uc3QgaWQgPSB0aGlzLm1lbS5nZXRVaW50MzIoc3AgKyA4LCB0cnVlKTtcblx0XHRcdFx0XHRcdHRoaXMuX2dvUmVmQ291bnRzW2lkXS0tO1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuX2dvUmVmQ291bnRzW2lkXSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB2ID0gdGhpcy5fdmFsdWVzW2lkXTtcblx0XHRcdFx0XHRcdFx0dGhpcy5fdmFsdWVzW2lkXSA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2lkcy5kZWxldGUodik7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2lkUG9vbC5wdXNoKGlkKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0Ly8gZnVuYyBzdHJpbmdWYWwodmFsdWUgc3RyaW5nKSByZWZcblx0XHRcdFx0XHRcInN5c2NhbGwvanMuc3RyaW5nVmFsXCI6IChzcCkgPT4ge1xuXHRcdFx0XHRcdFx0c3AgPj4+PSAwO1xuXHRcdFx0XHRcdFx0c3RvcmVWYWx1ZShzcCArIDI0LCBsb2FkU3RyaW5nKHNwICsgOCkpO1xuXHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHQvLyBmdW5jIHZhbHVlR2V0KHYgcmVmLCBwIHN0cmluZykgcmVmXG5cdFx0XHRcdFx0XCJzeXNjYWxsL2pzLnZhbHVlR2V0XCI6IChzcCkgPT4ge1xuXHRcdFx0XHRcdFx0c3AgPj4+PSAwO1xuXHRcdFx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gUmVmbGVjdC5nZXQobG9hZFZhbHVlKHNwICsgOCksIGxvYWRTdHJpbmcoc3AgKyAxNikpO1xuXHRcdFx0XHRcdFx0c3AgPSB0aGlzLl9pbnN0LmV4cG9ydHMuZ2V0c3AoKSA+Pj4gMDsgLy8gc2VlIGNvbW1lbnQgYWJvdmVcblx0XHRcdFx0XHRcdHN0b3JlVmFsdWUoc3AgKyAzMiwgcmVzdWx0KTtcblx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0Ly8gZnVuYyB2YWx1ZVNldCh2IHJlZiwgcCBzdHJpbmcsIHggcmVmKVxuXHRcdFx0XHRcdFwic3lzY2FsbC9qcy52YWx1ZVNldFwiOiAoc3ApID0+IHtcblx0XHRcdFx0XHRcdHNwID4+Pj0gMDtcblx0XHRcdFx0XHRcdFJlZmxlY3Quc2V0KGxvYWRWYWx1ZShzcCArIDgpLCBsb2FkU3RyaW5nKHNwICsgMTYpLCBsb2FkVmFsdWUoc3AgKyAzMikpO1xuXHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHQvLyBmdW5jIHZhbHVlRGVsZXRlKHYgcmVmLCBwIHN0cmluZylcblx0XHRcdFx0XHRcInN5c2NhbGwvanMudmFsdWVEZWxldGVcIjogKHNwKSA9PiB7XG5cdFx0XHRcdFx0XHRzcCA+Pj49IDA7XG5cdFx0XHRcdFx0XHRSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KGxvYWRWYWx1ZShzcCArIDgpLCBsb2FkU3RyaW5nKHNwICsgMTYpKTtcblx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0Ly8gZnVuYyB2YWx1ZUluZGV4KHYgcmVmLCBpIGludCkgcmVmXG5cdFx0XHRcdFx0XCJzeXNjYWxsL2pzLnZhbHVlSW5kZXhcIjogKHNwKSA9PiB7XG5cdFx0XHRcdFx0XHRzcCA+Pj49IDA7XG5cdFx0XHRcdFx0XHRzdG9yZVZhbHVlKHNwICsgMjQsIFJlZmxlY3QuZ2V0KGxvYWRWYWx1ZShzcCArIDgpLCBnZXRJbnQ2NChzcCArIDE2KSkpO1xuXHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHQvLyB2YWx1ZVNldEluZGV4KHYgcmVmLCBpIGludCwgeCByZWYpXG5cdFx0XHRcdFx0XCJzeXNjYWxsL2pzLnZhbHVlU2V0SW5kZXhcIjogKHNwKSA9PiB7XG5cdFx0XHRcdFx0XHRzcCA+Pj49IDA7XG5cdFx0XHRcdFx0XHRSZWZsZWN0LnNldChsb2FkVmFsdWUoc3AgKyA4KSwgZ2V0SW50NjQoc3AgKyAxNiksIGxvYWRWYWx1ZShzcCArIDI0KSk7XG5cdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdC8vIGZ1bmMgdmFsdWVDYWxsKHYgcmVmLCBtIHN0cmluZywgYXJncyBbXXJlZikgKHJlZiwgYm9vbClcblx0XHRcdFx0XHRcInN5c2NhbGwvanMudmFsdWVDYWxsXCI6IChzcCkgPT4ge1xuXHRcdFx0XHRcdFx0c3AgPj4+PSAwO1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdiA9IGxvYWRWYWx1ZShzcCArIDgpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBtID0gUmVmbGVjdC5nZXQodiwgbG9hZFN0cmluZyhzcCArIDE2KSk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGFyZ3MgPSBsb2FkU2xpY2VPZlZhbHVlcyhzcCArIDMyKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gUmVmbGVjdC5hcHBseShtLCB2LCBhcmdzKTtcblx0XHRcdFx0XHRcdFx0c3AgPSB0aGlzLl9pbnN0LmV4cG9ydHMuZ2V0c3AoKSA+Pj4gMDsgLy8gc2VlIGNvbW1lbnQgYWJvdmVcblx0XHRcdFx0XHRcdFx0c3RvcmVWYWx1ZShzcCArIDU2LCByZXN1bHQpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLm1lbS5zZXRVaW50OChzcCArIDY0LCAxKTtcblx0XHRcdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRcdFx0XHRzcCA9IHRoaXMuX2luc3QuZXhwb3J0cy5nZXRzcCgpID4+PiAwOyAvLyBzZWUgY29tbWVudCBhYm92ZVxuXHRcdFx0XHRcdFx0XHRzdG9yZVZhbHVlKHNwICsgNTYsIGVycik7XG5cdFx0XHRcdFx0XHRcdHRoaXMubWVtLnNldFVpbnQ4KHNwICsgNjQsIDApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHQvLyBmdW5jIHZhbHVlSW52b2tlKHYgcmVmLCBhcmdzIFtdcmVmKSAocmVmLCBib29sKVxuXHRcdFx0XHRcdFwic3lzY2FsbC9qcy52YWx1ZUludm9rZVwiOiAoc3ApID0+IHtcblx0XHRcdFx0XHRcdHNwID4+Pj0gMDtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHYgPSBsb2FkVmFsdWUoc3AgKyA4KTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYXJncyA9IGxvYWRTbGljZU9mVmFsdWVzKHNwICsgMTYpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCByZXN1bHQgPSBSZWZsZWN0LmFwcGx5KHYsIHVuZGVmaW5lZCwgYXJncyk7XG5cdFx0XHRcdFx0XHRcdHNwID0gdGhpcy5faW5zdC5leHBvcnRzLmdldHNwKCkgPj4+IDA7IC8vIHNlZSBjb21tZW50IGFib3ZlXG5cdFx0XHRcdFx0XHRcdHN0b3JlVmFsdWUoc3AgKyA0MCwgcmVzdWx0KTtcblx0XHRcdFx0XHRcdFx0dGhpcy5tZW0uc2V0VWludDgoc3AgKyA0OCwgMSk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0XHRcdFx0c3AgPSB0aGlzLl9pbnN0LmV4cG9ydHMuZ2V0c3AoKSA+Pj4gMDsgLy8gc2VlIGNvbW1lbnQgYWJvdmVcblx0XHRcdFx0XHRcdFx0c3RvcmVWYWx1ZShzcCArIDQwLCBlcnIpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLm1lbS5zZXRVaW50OChzcCArIDQ4LCAwKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0Ly8gZnVuYyB2YWx1ZU5ldyh2IHJlZiwgYXJncyBbXXJlZikgKHJlZiwgYm9vbClcblx0XHRcdFx0XHRcInN5c2NhbGwvanMudmFsdWVOZXdcIjogKHNwKSA9PiB7XG5cdFx0XHRcdFx0XHRzcCA+Pj49IDA7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB2ID0gbG9hZFZhbHVlKHNwICsgOCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGFyZ3MgPSBsb2FkU2xpY2VPZlZhbHVlcyhzcCArIDE2KTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QodiwgYXJncyk7XG5cdFx0XHRcdFx0XHRcdHNwID0gdGhpcy5faW5zdC5leHBvcnRzLmdldHNwKCkgPj4+IDA7IC8vIHNlZSBjb21tZW50IGFib3ZlXG5cdFx0XHRcdFx0XHRcdHN0b3JlVmFsdWUoc3AgKyA0MCwgcmVzdWx0KTtcblx0XHRcdFx0XHRcdFx0dGhpcy5tZW0uc2V0VWludDgoc3AgKyA0OCwgMSk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0XHRcdFx0c3AgPSB0aGlzLl9pbnN0LmV4cG9ydHMuZ2V0c3AoKSA+Pj4gMDsgLy8gc2VlIGNvbW1lbnQgYWJvdmVcblx0XHRcdFx0XHRcdFx0c3RvcmVWYWx1ZShzcCArIDQwLCBlcnIpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLm1lbS5zZXRVaW50OChzcCArIDQ4LCAwKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0Ly8gZnVuYyB2YWx1ZUxlbmd0aCh2IHJlZikgaW50XG5cdFx0XHRcdFx0XCJzeXNjYWxsL2pzLnZhbHVlTGVuZ3RoXCI6IChzcCkgPT4ge1xuXHRcdFx0XHRcdFx0c3AgPj4+PSAwO1xuXHRcdFx0XHRcdFx0c2V0SW50NjQoc3AgKyAxNiwgcGFyc2VJbnQobG9hZFZhbHVlKHNwICsgOCkubGVuZ3RoKSk7XG5cdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdC8vIHZhbHVlUHJlcGFyZVN0cmluZyh2IHJlZikgKHJlZiwgaW50KVxuXHRcdFx0XHRcdFwic3lzY2FsbC9qcy52YWx1ZVByZXBhcmVTdHJpbmdcIjogKHNwKSA9PiB7XG5cdFx0XHRcdFx0XHRzcCA+Pj49IDA7XG5cdFx0XHRcdFx0XHRjb25zdCBzdHIgPSBlbmNvZGVyLmVuY29kZShTdHJpbmcobG9hZFZhbHVlKHNwICsgOCkpKTtcblx0XHRcdFx0XHRcdHN0b3JlVmFsdWUoc3AgKyAxNiwgc3RyKTtcblx0XHRcdFx0XHRcdHNldEludDY0KHNwICsgMjQsIHN0ci5sZW5ndGgpO1xuXHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHQvLyB2YWx1ZUxvYWRTdHJpbmcodiByZWYsIGIgW11ieXRlKVxuXHRcdFx0XHRcdFwic3lzY2FsbC9qcy52YWx1ZUxvYWRTdHJpbmdcIjogKHNwKSA9PiB7XG5cdFx0XHRcdFx0XHRzcCA+Pj49IDA7XG5cdFx0XHRcdFx0XHRjb25zdCBzdHIgPSBsb2FkVmFsdWUoc3AgKyA4KTtcblx0XHRcdFx0XHRcdGxvYWRTbGljZShzcCArIDE2KS5zZXQoc3RyKTtcblx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0Ly8gZnVuYyB2YWx1ZUluc3RhbmNlT2YodiByZWYsIHQgcmVmKSBib29sXG5cdFx0XHRcdFx0XCJzeXNjYWxsL2pzLnZhbHVlSW5zdGFuY2VPZlwiOiAoc3ApID0+IHtcblx0XHRcdFx0XHRcdHNwID4+Pj0gMDtcblx0XHRcdFx0XHRcdHRoaXMubWVtLnNldFVpbnQ4KHNwICsgMjQsIChsb2FkVmFsdWUoc3AgKyA4KSBpbnN0YW5jZW9mIGxvYWRWYWx1ZShzcCArIDE2KSkgPyAxIDogMCk7XG5cdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdC8vIGZ1bmMgY29weUJ5dGVzVG9Hbyhkc3QgW11ieXRlLCBzcmMgcmVmKSAoaW50LCBib29sKVxuXHRcdFx0XHRcdFwic3lzY2FsbC9qcy5jb3B5Qnl0ZXNUb0dvXCI6IChzcCkgPT4ge1xuXHRcdFx0XHRcdFx0c3AgPj4+PSAwO1xuXHRcdFx0XHRcdFx0Y29uc3QgZHN0ID0gbG9hZFNsaWNlKHNwICsgOCk7XG5cdFx0XHRcdFx0XHRjb25zdCBzcmMgPSBsb2FkVmFsdWUoc3AgKyAzMik7XG5cdFx0XHRcdFx0XHRpZiAoIShzcmMgaW5zdGFuY2VvZiBVaW50OEFycmF5IHx8IHNyYyBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLm1lbS5zZXRVaW50OChzcCArIDQ4LCAwKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y29uc3QgdG9Db3B5ID0gc3JjLnN1YmFycmF5KDAsIGRzdC5sZW5ndGgpO1xuXHRcdFx0XHRcdFx0ZHN0LnNldCh0b0NvcHkpO1xuXHRcdFx0XHRcdFx0c2V0SW50NjQoc3AgKyA0MCwgdG9Db3B5Lmxlbmd0aCk7XG5cdFx0XHRcdFx0XHR0aGlzLm1lbS5zZXRVaW50OChzcCArIDQ4LCAxKTtcblx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0Ly8gZnVuYyBjb3B5Qnl0ZXNUb0pTKGRzdCByZWYsIHNyYyBbXWJ5dGUpIChpbnQsIGJvb2wpXG5cdFx0XHRcdFx0XCJzeXNjYWxsL2pzLmNvcHlCeXRlc1RvSlNcIjogKHNwKSA9PiB7XG5cdFx0XHRcdFx0XHRzcCA+Pj49IDA7XG5cdFx0XHRcdFx0XHRjb25zdCBkc3QgPSBsb2FkVmFsdWUoc3AgKyA4KTtcblx0XHRcdFx0XHRcdGNvbnN0IHNyYyA9IGxvYWRTbGljZShzcCArIDE2KTtcblx0XHRcdFx0XHRcdGlmICghKGRzdCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgfHwgZHN0IGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMubWVtLnNldFVpbnQ4KHNwICsgNDgsIDApO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjb25zdCB0b0NvcHkgPSBzcmMuc3ViYXJyYXkoMCwgZHN0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRkc3Quc2V0KHRvQ29weSk7XG5cdFx0XHRcdFx0XHRzZXRJbnQ2NChzcCArIDQwLCB0b0NvcHkubGVuZ3RoKTtcblx0XHRcdFx0XHRcdHRoaXMubWVtLnNldFVpbnQ4KHNwICsgNDgsIDEpO1xuXHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHRcImRlYnVnXCI6ICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2codmFsdWUpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0YXN5bmMgcnVuKGluc3RhbmNlKSB7XG5cdFx0XHRpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5Lkluc3RhbmNlKSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJHby5ydW46IFdlYkFzc2VtYmx5Lkluc3RhbmNlIGV4cGVjdGVkXCIpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5faW5zdCA9IGluc3RhbmNlO1xuXHRcdFx0dGhpcy5tZW0gPSBuZXcgRGF0YVZpZXcodGhpcy5faW5zdC5leHBvcnRzLm1lbS5idWZmZXIpO1xuXHRcdFx0dGhpcy5fdmFsdWVzID0gWyAvLyBKUyB2YWx1ZXMgdGhhdCBHbyBjdXJyZW50bHkgaGFzIHJlZmVyZW5jZXMgdG8sIGluZGV4ZWQgYnkgcmVmZXJlbmNlIGlkXG5cdFx0XHRcdE5hTixcblx0XHRcdFx0MCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdGdsb2JhbFRoaXMsXG5cdFx0XHRcdHRoaXMsXG5cdFx0XHRdO1xuXHRcdFx0dGhpcy5fZ29SZWZDb3VudHMgPSBuZXcgQXJyYXkodGhpcy5fdmFsdWVzLmxlbmd0aCkuZmlsbChJbmZpbml0eSk7IC8vIG51bWJlciBvZiByZWZlcmVuY2VzIHRoYXQgR28gaGFzIHRvIGEgSlMgdmFsdWUsIGluZGV4ZWQgYnkgcmVmZXJlbmNlIGlkXG5cdFx0XHR0aGlzLl9pZHMgPSBuZXcgTWFwKFsgLy8gbWFwcGluZyBmcm9tIEpTIHZhbHVlcyB0byByZWZlcmVuY2UgaWRzXG5cdFx0XHRcdFswLCAxXSxcblx0XHRcdFx0W251bGwsIDJdLFxuXHRcdFx0XHRbdHJ1ZSwgM10sXG5cdFx0XHRcdFtmYWxzZSwgNF0sXG5cdFx0XHRcdFtnbG9iYWxUaGlzLCA1XSxcblx0XHRcdFx0W3RoaXMsIDZdLFxuXHRcdFx0XSk7XG5cdFx0XHR0aGlzLl9pZFBvb2wgPSBbXTsgICAvLyB1bnVzZWQgaWRzIHRoYXQgaGF2ZSBiZWVuIGdhcmJhZ2UgY29sbGVjdGVkXG5cdFx0XHR0aGlzLmV4aXRlZCA9IGZhbHNlOyAvLyB3aGV0aGVyIHRoZSBHbyBwcm9ncmFtIGhhcyBleGl0ZWRcblxuXHRcdFx0Ly8gUGFzcyBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gV2ViQXNzZW1ibHkgYnkgd3JpdGluZyB0aGVtIHRvIHRoZSBsaW5lYXIgbWVtb3J5LlxuXHRcdFx0bGV0IG9mZnNldCA9IDQwOTY7XG5cblx0XHRcdGNvbnN0IHN0clB0ciA9IChzdHIpID0+IHtcblx0XHRcdFx0Y29uc3QgcHRyID0gb2Zmc2V0O1xuXHRcdFx0XHRjb25zdCBieXRlcyA9IGVuY29kZXIuZW5jb2RlKHN0ciArIFwiXFwwXCIpO1xuXHRcdFx0XHRuZXcgVWludDhBcnJheSh0aGlzLm1lbS5idWZmZXIsIG9mZnNldCwgYnl0ZXMubGVuZ3RoKS5zZXQoYnl0ZXMpO1xuXHRcdFx0XHRvZmZzZXQgKz0gYnl0ZXMubGVuZ3RoO1xuXHRcdFx0XHRpZiAob2Zmc2V0ICUgOCAhPT0gMCkge1xuXHRcdFx0XHRcdG9mZnNldCArPSA4IC0gKG9mZnNldCAlIDgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBwdHI7XG5cdFx0XHR9O1xuXG5cdFx0XHRjb25zdCBhcmdjID0gdGhpcy5hcmd2Lmxlbmd0aDtcblxuXHRcdFx0Y29uc3QgYXJndlB0cnMgPSBbXTtcblx0XHRcdHRoaXMuYXJndi5mb3JFYWNoKChhcmcpID0+IHtcblx0XHRcdFx0YXJndlB0cnMucHVzaChzdHJQdHIoYXJnKSk7XG5cdFx0XHR9KTtcblx0XHRcdGFyZ3ZQdHJzLnB1c2goMCk7XG5cblx0XHRcdGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmVudikuc29ydCgpO1xuXHRcdFx0a2V5cy5mb3JFYWNoKChrZXkpID0+IHtcblx0XHRcdFx0YXJndlB0cnMucHVzaChzdHJQdHIoYCR7a2V5fT0ke3RoaXMuZW52W2tleV19YCkpO1xuXHRcdFx0fSk7XG5cdFx0XHRhcmd2UHRycy5wdXNoKDApO1xuXG5cdFx0XHRjb25zdCBhcmd2ID0gb2Zmc2V0O1xuXHRcdFx0YXJndlB0cnMuZm9yRWFjaCgocHRyKSA9PiB7XG5cdFx0XHRcdHRoaXMubWVtLnNldFVpbnQzMihvZmZzZXQsIHB0ciwgdHJ1ZSk7XG5cdFx0XHRcdHRoaXMubWVtLnNldFVpbnQzMihvZmZzZXQgKyA0LCAwLCB0cnVlKTtcblx0XHRcdFx0b2Zmc2V0ICs9IDg7XG5cdFx0XHR9KTtcblxuXHRcdFx0Ly8gVGhlIGxpbmtlciBndWFyYW50ZWVzIGdsb2JhbCBkYXRhIHN0YXJ0cyBmcm9tIGF0IGxlYXN0IHdhc21NaW5EYXRhQWRkci5cblx0XHRcdC8vIEtlZXAgaW4gc3luYyB3aXRoIGNtZC9saW5rL2ludGVybmFsL2xkL2RhdGEuZ286d2FzbU1pbkRhdGFBZGRyLlxuXHRcdFx0Y29uc3Qgd2FzbU1pbkRhdGFBZGRyID0gNDA5NiArIDgxOTI7XG5cdFx0XHRpZiAob2Zmc2V0ID49IHdhc21NaW5EYXRhQWRkcikge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJ0b3RhbCBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZXhjZWVkcyBsaW1pdFwiKTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5faW5zdC5leHBvcnRzLnJ1bihhcmdjLCBhcmd2KTtcblx0XHRcdGlmICh0aGlzLmV4aXRlZCkge1xuXHRcdFx0XHR0aGlzLl9yZXNvbHZlRXhpdFByb21pc2UoKTtcblx0XHRcdH1cblx0XHRcdGF3YWl0IHRoaXMuX2V4aXRQcm9taXNlO1xuXHRcdH1cblxuXHRcdF9yZXN1bWUoKSB7XG5cdFx0XHRpZiAodGhpcy5leGl0ZWQpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiR28gcHJvZ3JhbSBoYXMgYWxyZWFkeSBleGl0ZWRcIik7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9pbnN0LmV4cG9ydHMucmVzdW1lKCk7XG5cdFx0XHRpZiAodGhpcy5leGl0ZWQpIHtcblx0XHRcdFx0dGhpcy5fcmVzb2x2ZUV4aXRQcm9taXNlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0X21ha2VGdW5jV3JhcHBlcihpZCkge1xuXHRcdFx0Y29uc3QgZ28gPSB0aGlzO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0Y29uc3QgZXZlbnQgPSB7IGlkOiBpZCwgdGhpczogdGhpcywgYXJnczogYXJndW1lbnRzIH07XG5cdFx0XHRcdGdvLl9wZW5kaW5nRXZlbnQgPSBldmVudDtcblx0XHRcdFx0Z28uX3Jlc3VtZSgpO1xuXHRcdFx0XHRyZXR1cm4gZXZlbnQucmVzdWx0O1xuXHRcdFx0fTtcblx0XHR9XG5cdH1cbn0pKCk7XG4iLCAiLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHdlYiB3b3JrZXIgc291cmNlIGNvZGVcblxuaW50ZXJmYWNlIEdvIHtcbiAgYXJndjogc3RyaW5nW11cbiAgaW1wb3J0T2JqZWN0OiBXZWJBc3NlbWJseS5JbXBvcnRzXG4gIHJ1bihpbnN0YW5jZTogV2ViQXNzZW1ibHkuSW5zdGFuY2UpOiB2b2lkXG59XG5cbmRlY2xhcmUgY29uc3QgRVNCVUlMRF9WRVJTSU9OOiBzdHJpbmdcbmRlY2xhcmUgZnVuY3Rpb24gcG9zdE1lc3NhZ2UobWVzc2FnZTogYW55KTogdm9pZFxuXG5vbm1lc3NhZ2UgPSAoeyBkYXRhOiB3YXNtIH06IHsgZGF0YTogV2ViQXNzZW1ibHkuTW9kdWxlIHwgc3RyaW5nIH0pID0+IHtcbiAgbGV0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICBsZXQgZnMgPSAoZ2xvYmFsVGhpcyBhcyBhbnkpLmZzXG5cbiAgbGV0IHN0ZGVyciA9ICcnXG4gIGZzLndyaXRlU3luYyA9IChmZDogbnVtYmVyLCBidWZmZXI6IFVpbnQ4QXJyYXkpID0+IHtcbiAgICBpZiAoZmQgPT09IDEpIHtcbiAgICAgIHBvc3RNZXNzYWdlKGJ1ZmZlcilcbiAgICB9IGVsc2UgaWYgKGZkID09PSAyKSB7XG4gICAgICBzdGRlcnIgKz0gZGVjb2Rlci5kZWNvZGUoYnVmZmVyKVxuICAgICAgbGV0IHBhcnRzID0gc3RkZXJyLnNwbGl0KCdcXG4nKVxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIGNvbnNvbGUubG9nKHBhcnRzLnNsaWNlKDAsIC0xKS5qb2luKCdcXG4nKSlcbiAgICAgIHN0ZGVyciA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQmFkIHdyaXRlJylcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmZlci5sZW5ndGhcbiAgfVxuXG4gIGxldCBzdGRpbjogVWludDhBcnJheVtdID0gW11cbiAgbGV0IHJlc3VtZVN0ZGluOiAoKSA9PiB2b2lkXG4gIGxldCBzdGRpblBvcyA9IDBcblxuICBvbm1lc3NhZ2UgPSAoeyBkYXRhIH0pID0+IHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICBzdGRpbi5wdXNoKGRhdGEpXG4gICAgICBpZiAocmVzdW1lU3RkaW4pIHJlc3VtZVN0ZGluKClcbiAgICB9XG4gICAgcmV0dXJuIGdvXG4gIH1cblxuICBmcy5yZWFkID0gKFxuICAgIGZkOiBudW1iZXIsIGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLFxuICAgIHBvc2l0aW9uOiBudWxsLCBjYWxsYmFjazogKGVycjogRXJyb3IgfCBudWxsLCBjb3VudD86IG51bWJlcikgPT4gdm9pZCxcbiAgKSA9PiB7XG4gICAgaWYgKGZkICE9PSAwIHx8IG9mZnNldCAhPT0gMCB8fCBsZW5ndGggIT09IGJ1ZmZlci5sZW5ndGggfHwgcG9zaXRpb24gIT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQmFkIHJlYWQnKVxuICAgIH1cblxuICAgIGlmIChzdGRpbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJlc3VtZVN0ZGluID0gKCkgPT4gZnMucmVhZChmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24sIGNhbGxiYWNrKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgbGV0IGZpcnN0ID0gc3RkaW5bMF1cbiAgICBsZXQgY291bnQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihsZW5ndGgsIGZpcnN0Lmxlbmd0aCAtIHN0ZGluUG9zKSlcbiAgICBidWZmZXIuc2V0KGZpcnN0LnN1YmFycmF5KHN0ZGluUG9zLCBzdGRpblBvcyArIGNvdW50KSwgb2Zmc2V0KVxuICAgIHN0ZGluUG9zICs9IGNvdW50XG4gICAgaWYgKHN0ZGluUG9zID09PSBmaXJzdC5sZW5ndGgpIHtcbiAgICAgIHN0ZGluLnNoaWZ0KClcbiAgICAgIHN0ZGluUG9zID0gMFxuICAgIH1cbiAgICBjYWxsYmFjayhudWxsLCBjb3VudClcbiAgfVxuXG4gIGxldCBnbzogR28gPSBuZXcgKGdsb2JhbFRoaXMgYXMgYW55KS5HbygpXG4gIGdvLmFyZ3YgPSBbJycsIGAtLXNlcnZpY2U9JHtFU0JVSUxEX1ZFUlNJT059YF1cblxuICAvLyBUcnkgdG8gaW5zdGFudGlhdGUgdGhlIG1vZHVsZSBpbiB0aGUgd29ya2VyLCB0aGVuIHJlcG9ydCBiYWNrIHRvIHRoZSBtYWluIHRocmVhZFxuICB0cnlUb0luc3RhbnRpYXRlTW9kdWxlKHdhc20sIGdvKS50aGVuKFxuICAgIGluc3RhbmNlID0+IHtcbiAgICAgIHBvc3RNZXNzYWdlKG51bGwpXG4gICAgICBnby5ydW4oaW5zdGFuY2UpXG4gICAgfSxcbiAgICBlcnJvciA9PiB7XG4gICAgICBwb3N0TWVzc2FnZShlcnJvcilcbiAgICB9LFxuICApXG5cbiAgcmV0dXJuIGdvXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRyeVRvSW5zdGFudGlhdGVNb2R1bGUod2FzbTogV2ViQXNzZW1ibHkuTW9kdWxlIHwgc3RyaW5nLCBnbzogR28pOiBQcm9taXNlPFdlYkFzc2VtYmx5Lkluc3RhbmNlPiB7XG4gIGlmICh3YXNtIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuTW9kdWxlKSB7XG4gICAgcmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHdhc20sIGdvLmltcG9ydE9iamVjdClcbiAgfVxuXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHdhc20pXG4gIGlmICghcmVzLm9rKSB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkb3dubG9hZCAke0pTT04uc3RyaW5naWZ5KHdhc20pfWApXG5cbiAgLy8gQXR0ZW1wdCB0byB1c2UgdGhlIHN1cGVyaW9yIFwiaW5zdGFudGlhdGVTdHJlYW1pbmdcIiBBUEkgZmlyc3RcbiAgaWYgKCdpbnN0YW50aWF0ZVN0cmVhbWluZycgaW4gV2ViQXNzZW1ibHkgJiYgL15hcHBsaWNhdGlvblxcL3dhc20oJHw7KS9pLnRlc3QocmVzLmhlYWRlcnMuZ2V0KCdDb250ZW50LVR5cGUnKSB8fCAnJykpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhyZXMsIGdvLmltcG9ydE9iamVjdClcbiAgICByZXR1cm4gcmVzdWx0Lmluc3RhbmNlXG4gIH1cblxuICAvLyBPdGhlcndpc2UsIGZhbGwgYmFjayB0byB0aGUgaW5mZXJpb3IgXCJpbnN0YW50aWF0ZVwiIEFQSVxuICBjb25zdCBieXRlcyA9IGF3YWl0IHJlcy5hcnJheUJ1ZmZlcigpXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGJ5dGVzLCBnby5pbXBvcnRPYmplY3QpXG4gIHJldHVybiByZXN1bHQuaW5zdGFuY2Vcbn1cbiIsICIvLy8gPHJlZmVyZW5jZSBuby1kZWZhdWx0LWxpYj1cInRydWVcIiAvPlxuLy8vIDxyZWZlcmVuY2UgbGliPVwiZXNuZXh0XCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRlbm8ud29ya2VyXCIgLz5cblxuLyoqIEBsaWNlbnNlXG4gKiBlc2J1aWxkLXdhc21AMC4yMS41XG4gKlxuICogTUlUIExpY2Vuc2VcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXZhbiBXYWxsYWNlXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBFU0JVSUxEX1ZFUlNJT04gfSBmcm9tIFwiLi92ZXJzaW9uLnRzXCI7XG4vL0B0cy1pZ25vcmUgbGV0IGVudmlyb25tZW50YWwgdmFyaWFibGVcbmdsb2JhbFRoaXMuRVNCVUlMRF9WRVJTSU9OID0gRVNCVUlMRF9WRVJTSU9OO1xuaW1wb3J0IFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2dvbGFuZy9nby9nbzEuMjAuMTIvbWlzYy93YXNtL3dhc21fZXhlYy5qc1wiO1xuaW1wb3J0IFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2V2YW53L2VzYnVpbGQvdjAuMjEuNS9saWIvc2hhcmVkL3dvcmtlci50c1wiO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBQU8sSUFBTUEsRUFBa0IsVUNNOUIsSUFBTSxDQUNOLElBQU1DLEVBQVMsSUFBTSxDQUNwQixJQUFNQyxFQUFNLElBQUksTUFBTSxpQkFBaUIsRUFDdkMsT0FBQUEsRUFBSSxLQUFPLFNBQ0pBLENBQ1IsRUFFQSxHQUFJLENBQUMsV0FBVyxHQUFJLENBQ25CLElBQUlDLEVBQVksR0FDaEIsV0FBVyxHQUFLLENBQ2YsVUFBVyxDQUFFLFNBQVUsR0FBSSxPQUFRLEdBQUksUUFBUyxHQUFJLFFBQVMsR0FBSSxTQUFVLEdBQUksT0FBUSxFQUFHLEVBQzFGLFVBQVVDLEVBQUlDLEVBQUssQ0FDbEJGLEdBQWFHLEVBQVEsT0FBT0QsQ0FBRyxFQUMvQixJQUFNRSxFQUFLSixFQUFVLFlBQVk7QUFBQSxDQUFJLEVBQ3JDLE9BQUlJLEdBQU0sS0FDVCxRQUFRLElBQUlKLEVBQVUsVUFBVSxFQUFHSSxDQUFFLENBQUMsRUFDdENKLEVBQVlBLEVBQVUsVUFBVUksRUFBSyxDQUFDLEdBRWhDRixFQUFJLE1BQ1osRUFDQSxNQUFNRCxFQUFJQyxFQUFLRyxFQUFRQyxFQUFRQyxFQUFVQyxFQUFVLENBQ2xELEdBQUlILElBQVcsR0FBS0MsSUFBV0osRUFBSSxRQUFVSyxJQUFhLEtBQU0sQ0FDL0RDLEVBQVNWLEVBQU8sQ0FBQyxFQUNqQixNQUNELENBQ0EsSUFBTVcsRUFBSSxL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T0FEZSxNQUFNLFlBQVksWUFBWUMsRUFBT1gsRUFBRyxZQUFZLEdBQ3JELFFBQ2hCLENDakZBLFdBQVcsZ0JBQWtCWSIsCiAgIm5hbWVzIjogWyJFU0JVSUxEX1ZFUlNJT04iLCAiZW5vc3lzIiwgImVyciIsICJvdXRwdXRCdWYiLCAiZmQiLCAiYnVmIiwgImRlY29kZXIiLCAibmwiLCAib2Zmc2V0IiwgImxlbmd0aCIsICJwb3NpdGlvbiIsICJjYWxsYmFjayIsICJuIiwgInBhdGgiLCAibW9kZSIsICJ1aWQiLCAiZ2lkIiwgImxpbmsiLCAicGVybSIsICJmbGFncyIsICJidWZmZXIiLCAiZnJvbSIsICJ0byIsICJhdGltZSIsICJtdGltZSIsICJlbmNvZGVyIiwgImNvZGUiLCAicmVzb2x2ZSIsICJzZXRJbnQ2NCIsICJhZGRyIiwgInYiLCAiZ2V0SW50NjQiLCAibG93IiwgImhpZ2giLCAibG9hZFZhbHVlIiwgImYiLCAiaWQiLCAic3RvcmVWYWx1ZSIsICJ0eXBlRmxhZyIsICJsb2FkU2xpY2UiLCAiYXJyYXkiLCAibGVuIiwgImxvYWRTbGljZU9mVmFsdWVzIiwgImEiLCAiaSIsICJsb2FkU3RyaW5nIiwgInNhZGRyIiwgInRpbWVPcmlnaW4iLCAic3AiLCAicCIsICJtc2VjIiwgInJlc3VsdCIsICJtIiwgImFyZ3MiLCAic3RyIiwgImRzdCIsICJzcmMiLCAidG9Db3B5IiwgInZhbHVlIiwgImluc3RhbmNlIiwgInN0clB0ciIsICJwdHIiLCAiYnl0ZXMiLCAiYXJnYyIsICJhcmd2UHRycyIsICJhcmciLCAia2V5IiwgImFyZ3YiLCAiZ28iLCAiZXZlbnQiLCAid2FzbSIsICJkZWNvZGVyIiwgImZzIiwgInN0ZGVyciIsICJmZCIsICJidWZmZXIiLCAicGFydHMiLCAic3RkaW4iLCAicmVzdW1lU3RkaW4iLCAic3RkaW5Qb3MiLCAiZGF0YSIsICJnbyIsICJvZmZzZXQiLCAibGVuZ3RoIiwgInBvc2l0aW9uIiwgImNhbGxiYWNrIiwgImZpcnN0IiwgImNvdW50IiwgInRyeVRvSW5zdGFudGlhdGVNb2R1bGUiLCAiaW5zdGFuY2UiLCAiZXJyb3IiLCAicmVzIiwgImJ5dGVzIiwgIkVTQlVJTERfVkVSU0lPTiJdCn0K
code:takker-project.css
@import"https://fonts.googleapis.com/css?family=M+PLUS+Rounded+1c";html,body,#editor,.grid li{font-family:helvetica,arial,"M PLUS Rounded 1c",Sawarabi Gothic,Noto Sans JP,sans-serif}body *:before{--code-number-color: var(--code-color, #342d9c)}.section-title{counter-reset:codeline}.code-block span.indent code.code-body{counter-increment:codeline;margin-left:-1.5em;padding-left:2.3em}.code-block span.indent code.code-body:before{content:counter(codeline);position:absolute;display:inline-block;z-index:10;margin-left:-2.4em;width:2em;padding-right:.2em;text-align:right;vertical-align:bottom;border-right:solid 1px #fff;color:var(--code-number-color)}.code-block span.indent code.code-body:before{opacity:.5}.cursor-line .code-block span.indent code.code-body:before{opacity:1;font-weight:bolder;background-color:var(--accent-color)}.navbar-form .dropdown.open .dropdown-menu{min-width:100%;max-height:calc(100vh - 130px)!important;overflow-y:auto}.page-list-item.pin+.page-list-item:not(.pin){grid-column-start:1}.line span:not(.modal-image):not(.pointing-device-map)>a.link:not(.icon):not([href^="https://scrapbox.io"]):after{font-family:"Font Awesome 5 Free","Font Awesome 5 Brands";font-weight:900;font-size:.8rem;content:" ";display:inline-block}.line .deco-\.{font-size:.8em;position:relative;top:-.5em}.line:not(.cursor-line) .deco-\. a:is(.page-link:not(.icon),.link) span:not(.empty-char-index)+span+span~span{display:inline-block;width:0;text-indent:-9999px}.line:not(.cursor-line) .deco-\. .page-link:not(.icon) span.empty-char-index~span.char-index{display:inherit;width:inherit;text-indent:inherit}.line:not(.cursor-line) .deco-\. a.page-link:not(.icon) span.empty-char-index+span:before{content:"#"}.line .deco-\. :is(.page-link:not(.icon),.link):before{display:inline-block;min-width:1.15em;padding-left:1px;font-family:"Font Awesome 5 Free","Font Awesome 5 Brands";text-align:center;vertical-align:middle;font-weight:900;content:""}.line .deco-\..deco-\/{font-style:initial}.line .deco-\..deco-\/ :is(.page-link:not(.icon),.link):before{font-weight:400;content:""}div.line span:not(.modal-image):not(.pointing-device-map)>a.link:not(.icon):is(href$=".pdf",[href^="https://twitter.com"],[href^="https://github.com"],[href^="https://raw.githubusercontent.com"],[href^="https://gist.github.com"],[href^="https://ja.wikipedia.org"],[href^="https://en.wikipedia.org"]):after{display:none}.line span:not(.deco-\.)>span>a.link:is(href$=".pdf",[href^="https://github.com"],[href^="https://raw.githubusercontent.com"],[href^="https://gist.github.com"],[href^="https://ja.wikipedia.org"],[href^="https://en.wikipedia.org"]):before{display:inline-block;width:1em;height:1em;vertical-align:-1px;text-align:center;background-size:contain;background-repeat:no-repeat;font-family:"Font Awesome 5 Free","Font Awesome 5 Brands"}.line a.link:not(.icon)href$=".pdf":before{content:"";font-weight:400;margin-right:1px}:is(.line,.line .deco) a.link:is([href^="https://github.com"],[href^="https://raw.githubusercontent.com"],[href^="https://gist.github.com"]):before{content:"";font-weight:400;margin-right:1px}:is(.line,.line .deco) a.link:is([href^="https://ja.wikipedia.org"],[href^="https://en.wikipedia.org"]):before{content:"";font-weight:400;margin-right:3px}.line .deco-\. a.link:is([href^="https://ja.wikipedia.org"],[href^="https://en.wikipedia.org"]) span.char-index{display:inline-block;width:0;text-indent:-9999px}.line .deco-\. a.link:is([href^="https://ja.wikipedia.org"],[href^="https://en.wikipedia.org"]) span.char-index:nth-of-type(30)~span.char-index{display:inherit;width:inherit;text-indent:inherit}.deco-\"{border-radius:.2em;padding:0 .4em;background-color:#8080801a;font-size:95%;font-style:italic}.deco-\":before{color:#a0a0a0;font-size:85%;font-family:"Font Awesome 5 Free";content:"";font-weight:900;vertical-align:super}.line .indent-mark .dot{opacity:0}.line .indent-mark .c-0+.dot{opacity:1}.line .indent-mark .c-1+.dot{opacity:.8}.line .indent-mark .c-2+.dot{opacity:.6}.line .indent-mark .c-3+.dot{opacity:.4}.line .indent-mark .c-4+.dot{opacity:.2}.line strong:not(class){background:linear-gradient(transparent 60%,#abff4f99 60% 100%)}.time-range .lines{user-select:unset;-webkit-user-select:unset}.line:not(.cursor-line) .deco-\|{display:inline-flex}.line .deco-\| img.image{object-fit:contain;margin:0}.line class^=level .deco-\|{flex-wrap:wrap}.line .level-1 .deco-\|>span{width:100%}.line .level-2 .deco-\|>span{width:50%}.line .level-3 .deco-\|>span{width:calc(100%/3)}.line .level-4 .deco-\|>span{width:25%}.line .level-5 .deco-\|>span{width:20%}.line class^=level .deco-\| img.image{object-fit:cover;width:100%;height:100%}.line .deco-\|>span,.line class^=level .deco-\|>span{overflow:hidden}.line .deco-\| img.image,.line class^=level .deco-\| img.image{margin:.2em}.selections .popup-menu .button-container .button:empty{display:none}.strong-button>strong,.italic-button>i,.strike-button>strike{display:inline-block;width:0;text-indent:-9999px}.selections .popup-menu .button-container .button:is(.link-button,.new-page-button,.copy-plain-button){font-size:0}.selections .popup-menu .button-container .button{font-family:Open Sans,Helvetica,Arial,Hiragino Sans,sans-serif,"Font Awesome 5 Free","Font Awesome 5 Brands";font-size:11px;line-height:20px;font-weight:600;display:inline-block;text-align:center}.link-button:after{font-size:11px;content:""}.strong-button:after{content:""}.italic-button:after{content:""}.strike-button:after{content:""}.copy-plain-button:after{font-size:11px;content:""}.new-page-button:after{font-size:11px;content:""}.line a.iconhref$="/hr"{pointer-events:none}.page-column{grid-template-columns:var(--page-column-columns, 46px minmax(200px, 960px) min-content);grid-template-areas:var(--page-column-areas, "spacer page menu")}@media (991px < width){.page-column:has(.page-sidebar){grid-template-columns:var(--page-column-columns-sidebar, minmax(200px, 3fr) minmax(170px, 1fr) min-content);grid-template-areas:var(--page-column-areas-sidebar, "page sidebar menu")}}@media (min-width: 768px) and (max-width: 991px){.page-column{grid-template-columns:var(--page-column-columns-768, minmax(200px, 960px) min-content);grid-template-areas:var(--page-column-areas-768, "page menu")}}@media (max-width: 767px){.page-column{display:grid;grid-template-columns:var(--page-column-columns-767, 1fr);grid-template-areas:var(--page-column-areas-767, "page")}}.page-column:not(:has(.definition-term)){--page-column-columns-sidebar: minmax(200px, 960px) min-content;--page-column-areas-sidebar: "page menu"}.page-sidebar:not(:has(.definition-term)){display:none}.deco-\#{font-family:Cica,Menlo,Monaco,Consolas,Courier New,monospace}.grid li.page-list-item a .pin{background-color:transparent;background-image:none}.grid li.page-list-item a .pin:after{content:"";font-family:"Font Awesome 5 Free";font-weight:900;font-size:20px;color:#1f915e;bottom:0}.deco-\>{position:absolute;width:100%;text-align:right}li.page-list-item.grid-style-item div.title{-webkit-line-clamp:2}.line.number-list .dot{background-color:transparent!important;display:list-item}.line.number-list .dot:before{display:block;position:absolute;font-family:"Font Awesome 5 Free";top:-11px;content:"";font-weight:900;font-size:11px;color:#c9c9c9;opacity:0}.line.number-list .c-0+.dot:before{opacity:1}.line.number-list .c-1+.dot:before{opacity:.8}.line.number-list .c-2+.dot:before{opacity:.6}.line.number-list .c-3+.dot:before{opacity:.4}.line.number-list .c-4+.dot:before{opacity:.2}img[src^="https://i.kakeru.app"]{background-color:#fff}.brand-icon{display:none!important}.navbar-brand:before{content:"";font-family:"Font Awesome 5 Free";font-size:28px;font-weight:900;color:#bbb}body{--empty-page-link-color: #309b98;--empty-page-link-hover-color: #28807d}.project-home .title{font-size:2rem}.expandable-menu{max-width:calc(100% - 232px)}@media screen and (min-width: 768px) and (max-width: 991px){.expandable-menu{max-width:calc(100% - 247px)}}@media screen and (min-width: 992px) and (max-width: 1260px){.expandable-menu{max-width:calc(100% - 262px)}}.line .indent-mark .dot{top:11px;width:6px;height:3px;background-color:#c9c9c9}.dropdown-menu,.drawer .drawer-menu{background-color:var(--dropdown-menu-bg, #fff);border:var(--dropdown-menu-border, unset)}.dropdown-menu>li>a,.drawer .drawer-menu ul li a,.page-menu ul>li>div{color:var(--dropdown-menu-text-color, #333)}.dropdown-menu>li>a:active,.drawer-menu ul li a:active,data-hover-visible :is(.dropdown-menu,.drawer-menu)>li>:is(a:hover,a:focus){color:var(--dropdown-menu-text-hover-color, #262626);background-color:var(--dropdown-menu-text-hover-bg, #f5f5f5)}:is(.dropdown-menu,.drawer-menu) .divider{color:var(--dropdown-menu-divider-color, #e5e5e5)}@media (prefers-color-scheme: dark){body{--body-bg: #202228;--navbar-bg: rgba(55, 59, 68, .3);--navbar-icon-color: #fff;--navbar-icon-active-color: #338c46;--navbar-icon-hovered-color: #338c46;--search-form-bg: rgba(255, 255, 255, .13);--search-form-icon-color: #fff;--search-form-icon-focus-color: #4a4a4a;--card-title-color: #f0f0f0;--card-title-bg: #2b2e38;--card-bg: #373b44;--card-hover-bg: rgba(0, 0, 0, .1);--card-active-bg: rgba(229, 229, 229, .1);--card-backside: #545860;--card-description-color: #c4c4c4;--card-description-link-color: #80c9fe;--card-description-code-color: #ccc;--card-box-shadow-color: #000;--card-box-shadow: 0 2px 0 var(--card-box-shadow-color);--card-box-hover-shadow: 0 2px 0 rgba(0, 0, 0, .23);--card-title-bg-pinned: #2b2e38;--relation-label-bg: #2b2e38;--relation-label-text: #dddede;--relation-label-links-bg: #80c9fe;--relation-label-links-text: #202228;--relation-label-empty-bg: #fb7476;--relation-label-empty-text: #fff;--tool-color: #535863;--tool-light-color: #353b48;--tool-badge-bg: #2b2e38;--tool-bg: #2b2e38;--tool-text-color: #dddede;--new-button-vertical-color: #fff;--new-button-horizontal-color: #fff;--new-button-bg: #46af5d;--new-button-hover-bg: #338c46;--new-button-active-bg: #346447;--telomere-border: #545863;--telomere-unread: #56a066;--page-text-color: rgba(255, 255, 255, .87);--page-link-color: #80c9fe;--page-link-hover-color: #6a9ec6;--page-link-color-cursor-line: #a985e4;--page-bg: #373b44;--empty-page-link-color: #fb7476;--empty-page-link-hover-color: #b47576;--line-title-color: rgba(255, 255, 255, .87);--line-permalink-color: rgba(234, 218, 74, .35);--code-color: #ccc;--code-bg: rgba(0, 0, 0, .18);--quote-bg-color: rgba(0, 0, 0, .2);--cursor-color: #fff}body{--dark-theme-bg: #24292f;--dark-theme-border: solid 1px #888}body{--navbar-bg: rgba(2, 167, 137, .5)}body{--new-button-horizontal-color: #b44a29;--new-button-vertical-color: var(--new-button-horizontal-color);--new-button-bg: #f4835f;--new-button-hover-bg: #f2693e;--new-button-active-bg: #ef4c17}body{--tool-color: #535863;--tool-light-color: #353b48;--tool-badge-bg: #2b2e38;--tool-bg: #2b2e38;--tool-text-color: #dddede;--body-headings-color: var(--tool-color)}body{--code-line-number-color: #D181FF;--cursor-code-line-number-color: #FF00F0}body{--dropdown-menu-bg: #373b44;--dropdown-menu-border: 1px solid #8888882d;--dropdown-menu-text-color: var(--page-text-color);--dropdown-menu-divider-color: #e5e5e5;--dropdown-menu-text-hover-color: var(--page-text-color);--dropdown-menu-text-hover-bg: #373b44}body{--card-title-bg: var(--navbar-bg);--card-title-bg-pinned: var(--navbar-bg)}.page{box-shadow:none;border:solid 1px #888}.table-block .cell{border-bottom:solid 1px #888}.line code.helpfeel{background-color:var(--code-bg)}.line span.code-block .code-block-start{border:solid 1px #66667F;background-color:#272822;padding:2px 5px;color:#7c9ff7}.line span.code-block .code-block-start a{color:#7c9ff7}.code-block{--code-bg: #2d2b57;--code-color: #e3dfff;font-weight:400}code.highlight .hljs-subst{color:#e3dfff}code.highlight .hljs-title{color:#fad000;font-weight:400}code.highlight .hljs-name{color:#a1feff}code.highlight .hljs-tag{color:#fff}code.highlight .hljs-attr{color:#f8d000;font-style:italic}code.highlight :is(.hljs-built_in,.hljs-selector-tag,.hljs-section){color:#fb9e00}code.highlight .hljs-keyword{color:#fb9e00}code.highlight :is(.hljs-string,.hljs-attribute,.hljs-symbol,.hljs-bullet,.hljs-addition,.hljs-code,.hljs-regexp,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-template-tag,.hljs-quote,.hljs-deletion){color:#4cd213}code.highlight :is(.hljs-meta,.hljs-meta .hljs-string){color:#fb9e00}code.highlight .hljs-comment{color:#ac65ff}code.highlight :is(.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-name){font-weight:400}code.highlight :is(.hljs-literal,.hljs-number){color:#fa658d}code.highlight .hljs-emphasis{font-style:italic}code.highlight .hljs-strong{font-weight:700}code.highlight :is(.hljs-selector-pseudo,.hljs-deletion){color:#e06c75}::selection{color:unset;background:#0073e680}.selection{background-color:#fff7}.line .indent-mark .dot{background-color:gray}.line.number-list .dot:before{color:gray}}.page-linkhref*=".@":before{content:"✅"}.page-linkhref*="@20":not(href*=".@"):before{content:"⬜"}body{background-image:url(https://i.gyazo.com/8d65198f72652e8887d2c941f39805b4.png)}.grid li.page-list-item a .description .formula{display:inline}.page-link:is(href^="/tosuke-notes",href^="/blu3mo/",href^="/masuilab/",href^="/takker-memex",href^="/takker-books",href^="/takker-CEPM",href^="/takker-MBRC",href^="/takker-CVBH",href^="/takker-CVST",href^="/takker-PS",href^="/takker-SM",href^="/takker-SoM",href^="/takker-private"):before{content:"🔒"} /*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvdGFra2VyJUUzJTgxJUFFYnVuZGxlJUU1JTg5JThEQ1NTL2ZvbnQuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFMyU4MiVCMyVFMyU4MyVCQyVFMyU4MyU4OSVFMyU4MyU5NiVFMyU4MyVBRCVFMyU4MyU4MyVFMyU4MiVBRiVFOCVBOCU5OCVFNiVCMyU5NSVFMyU4MSVBQiVFOCVBMSU4QyVFNyU5NSVBQSVFNSU4RiVCNyVFMyU4MiU5MiVFOCVBMSVBOCVFNyVBNCVCQSVFMyU4MSU5OSVFMyU4MiU4QlVzZXJDU1NfKE1pamlua28pL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTMlODElQUUlRTMlODElQjMlRTMlODElQUUlRTMlODElQjMlRTMlODMlODklRTMlODMlQUQlRTMlODMlODMlRTMlODMlOTclRTMlODMlODAlRTMlODIlQTYlRTMlODMlQjMvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvY3VzdG9taXplLyVFMyU4MyU5NCVFMyU4MyVCMyVFNyU5NSU5OSVFMyU4MiU4MSVFMyU4MSU5NSVFMyU4MiU4QyVFMyU4MSU5RiVFMyU4MyU5QSVFMyU4MyVCQyVFMyU4MiVCOCVFMyU4MiU5MiVFNyU4QiVBQyVFNyVBQiU4QiVFMyU4MSU5NyVFMyU4MSU5RiVFNiVBRSVCNSVFMyU4MSVBQiVFOCVBMSVBOCVFNyVBNCVCQSVFMyU4MSU5OSVFMyU4MiU4Qi9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUU1JUE0JTk2JUU5JTgzJUE4JUUzJTgzJUFBJUUzJTgzJUIzJUUzJTgyJUFGJUUzJTgyJTkyJUU1JThDJUJBJUU1JTg4JUE1JUUzJTgxJTk5JUUzJTgyJThCVXNlckNTUy9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUUzJTgzJUFBJUUzJTgzJUIzJUUzJTgyJUFGJUUzJTgyJTkyJUU1JTg3JUJBJUU1JTg1JUI4JUUzJTgyJUEyJUUzJTgyJUE0JUUzJTgyJUIzJUUzJTgzJUIzJUUzJTgxJUFCJUUzJTgxJTk5JUUzJTgyJThCVXNlckNTUy9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUU3JTg5JUI5JUU1JUFFJTlBJUUzJTgxJUFFJUUzJTgzJUFBJUUzJTgzJUIzJUUzJTgyJUFGJUUzJTgxJUFCJUUzJTgyJUEyJUUzJTgyJUE0JUUzJTgyJUIzJUUzJTgzJUIzJUUzJTgyJTkyJUUzJTgxJUE0JUUzJTgxJTkxJUUzJTgyJThCVXNlckNTUy9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUUzJTgyJUE0JUUzJTgzJUIzJUUzJTgzJUE5JUUzJTgyJUE0JUUzJTgzJUIzJUU1JUJDJTk1JUU3JTk0JUE4L3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTMlODIlQTQlRTMlODMlQjMlRTMlODMlODclRTMlODMlQjMlRTMlODMlODglRTMlODElQUIlRTUlQkYlOUMlRTMlODElOTglRTMlODElQTYlRTclQUUlODclRTYlOUQlQTElRTYlOUIlQjglRTMlODElOEQlRTMlODElQUVidWxsZXQlRTMlODElQUUlRTglODklQjIlRTMlODIlOTIlRTglOTYlODQlRTMlODElOEYlRTMlODElOTklRTMlODIlOEIvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFMyU4MyU5RSVFMyU4MyVCQyVFMyU4MiVBQiVFMyU4MyVCQyVFOCVBOCU5OCVFNiVCMyU5NS9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS9jdXN0b21pemUvU2NyYXBib3glRTMlODElQUVTdHJlYW0lRTMlODMlOUElRTMlODMlQkMlRTMlODIlQjglRTMlODElQTclRTMlODElQUUlRTYlOTYlODclRTUlQUQlOTclRTklODElQjglRTYlOEElOUUlRTMlODIlOTIlRTUlOEYlQUYlRTglODMlQkQlRTMlODElQUIlRTMlODElOTklRTMlODIlOEJVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTclOTQlQkIlRTUlODMlOEYlRTMlODIlOTIlRTQlQjglQTYlRTMlODElQjklRTMlODIlOEJVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9wb3B1cG1lbnUlRTMlODElQUVidXR0b24lRTMlODIlOTIlRTklOUQlOUUlRTglQTElQTglRTclQTQlQkElRTMlODElQUIlRTMlODElOTklRTMlODIlOEIvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL1BvcHVwTWVudSVFMyU4MiU5MiVFNSVCRSVCOSVFNSVCQSU5NSVFNyU5QSU4NCVFMyU4MSVBQiVFMyU4MiVBMiVFMyU4MiVBNCVFMyU4MiVCMyVFMyU4MyVCMyVFMyU4MSVBQiVFMyU4MSU5OSVFMyU4MiU4Qi9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUU1JThDJUJBJUU1JTg4JTg3JUUzJTgyJThBJUU3JUI3JTlBJUUzJTgxJUFFJUU4JUFBJUE0JUUzJTgyJUFGJUUzJTgzJUFBJUUzJTgzJTgzJUUzJTgyJUFGJUUzJTgyJTkyJUU5JTk4JUIyJUUzJTgxJTkwVXNlckNTUy9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvLnBhZ2UtY29sdW1uJUUzJTgxJUFFZ3JpZF9sYXlvdXQlRTMlODIlOTIlRTglQUElQkYlRTYlOTUlQjQlRTMlODElQTclRTMlODElOEQlRTMlODIlOEIlRTMlODIlODglRTMlODElODYlRTMlODElQUIlRTMlODElOTklRTMlODIlOEJVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTclOTQlQkIlRTklOUQlQTIlRTUlQjklODUlRTMlODElOEMlRTUlQkElODMlRTMlODElODQlRTMlODElQTglRTMlODElOEQlRTclODQlQTElRTUlOEElQjklRTUlOEMlOTYlRTMlODElOTUlRTMlODIlOEMlRTMlODElOUZpbmZvYm94JUUzJTgyJTkyJUU2JUI2JTg4JUUzJTgxJTk5VXNlckNTUy9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvY29tbW9uL21vbm9zcGFjZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvY29tbW9uL3Bpbi5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvY29tbW9uL3RleHQtYWxpZ24uY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFMyU4MyU5QSVFMyU4MyVCQyVFMyU4MiVCOCVFMyU4MiVBQiVFMyU4MyVCQyVFMyU4MyU4OSVFMyU4MSVBRSVFMyU4MiVCRiVFMyU4MiVBNCVFMyU4MyU4OCVFMyU4MyVBQiVFMyU4MiU5MjIlRTglQTElOEMlRTMlODElQUIlRTUlOEYlOEUlRTMlODIlODElRTMlODIlOEJVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTclOTUlQUElRTUlOEYlQjclRTQlQkIlOTglRTMlODElOEQlRTclQUUlODclRTYlOUQlQTElRTYlOUIlQjglRTMlODElOEQlRTMlODElQUJGb250QXdlc29tZSVFMyU4MiU5MiVFNCVCRCVCRiVFMyU4MSU4NlVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL2tha2VydSVFMyU4MSVBRSVFOCU4MyU4QyVFNiU5OSVBRiVFMyU4MiU5MiVFNyU5OSVCRCVFMyU4MSVBQiVFMyU4MSU5OSVFMyU4MiU4QlVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3NjcmFwYm94X2ljb24lRTMlODIlOTJoYW1idXJnZXJfaWNvbiVFMyU4MSVBQiVFMyU4MSU5OSVFMyU4MiU4Qi9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUU3JUE5JUJBJUUzJTgzJUFBJUUzJTgzJUIzJUUzJTgyJUFGJUUzJTgxJUFFJUU4JTg5JUIyJUUzJTgyJTkyJUU1JUE0JTg5JUUzJTgxJTg4JUUzJTgyJThCVXNlckNTUy9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvdGFra2VyJUUzJTgxJUFFYnVuZGxlJUU1JTg5JThEQ1NTL2hvbWUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL2V4cGFuZGFibGUtbWVudSVFMyU4MSVBRSVFOSU5NSVCNyVFMyU4MSU5NSVFMyU4MiU5MiVFNSU4OCU4NyVFMyU4MiU4QSVFOCVBOSVCMCVFMyU4MiU4MSVFMyU4MiU4QlVzZXJDU1MvdGFra2VyLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTclQUUlODclRTYlOUQlQTElRTYlOUIlQjglRTMlODElOEQlRTMlODElQUVidWxsZXQlRTMlODIlOTIlRTYlOEUlQTclRTMlODElODglRTMlODIlODElRTMlODElQUIlRTMlODElOTklRTMlODIlOEJVc2VyX0NTUy9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvZHJvcGRvd25fbWVudV8oU2NyYXBib3gpXyVFMyU4MSVBRSVFOCU4OSVCMiVFMyU4MiU5MiVFNSVBNCU4OSVFMyU4MSU4OCVFMyU4MiU4QlVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3Rha2tlciVFMyU4MSVBRWRhcmtfdGhlbWVfY3NzL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTMlODIlQkYlRTMlODIlQjklRTMlODIlQUYlRTMlODMlQUElRTMlODMlQjMlRTMlODIlQUZWMiVFNyU5NCVBOFVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3Rha2tlciVFMyU4MSVBRWJ1bmRsZSVFNSU4OSU4RENTUy9wcm9qZWN0LmNzcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiIEBpbXBvcnQgdXJsKFwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PU0rUExVUytSb3VuZGVkKzFjXCIpO1xuIGh0bWwsIGJvZHksICNlZGl0b3IsIC5ncmlkIGxpIHtcbiAgXHRmb250LWZhbWlseTogaGVsdmV0aWNhLCBhcmlhbCwgXCJNIFBMVVMgUm91bmRlZCAxY1wiLCBcIlNhd2FyYWJpIEdvdGhpY1wiLCBcIk5vdG8gU2FucyBKUFwiLCBzYW5zLXNlcmlmIDtcbiB9IiwgImJvZHkgKjo6YmVmb3JlIHtcblx0LS1jb2RlLW51bWJlci1jb2xvcjogdmFyKC0tY29kZS1jb2xvciwgIzM0MmQ5Yyk7XG5cdC8qIC0tYWNjZW50LWNvbG9yOiA7ICovXG59XG4vKiDjgrPjg7zjg4noqJjms5Xjga7ooYznlarlj7fjgpLooajnpLogLS0g44Km44Kj44Oz44OJ44Km5bmFNzY4cHjku6XkuIrjgafpgannlKggKi9cbi8qIOKGkeeEoeWKueWMluOBl+OBnyAqL1xuLnNlY3Rpb24tdGl0bGUge1xuXHRjb3VudGVyLXJlc2V0OiBjb2RlbGluZTtcbn1cbi5jb2RlLWJsb2NrIHNwYW4uaW5kZW50IGNvZGUuY29kZS1ib2R5IHtcblx0Y291bnRlci1pbmNyZW1lbnQ6IGNvZGVsaW5lO1xuXHRtYXJnaW4tbGVmdDogLTEuNWVtO1xuXHRwYWRkaW5nLWxlZnQ6IDIuM2VtO1xufVxuLmNvZGUtYmxvY2sgc3Bhbi5pbmRlbnQgY29kZS5jb2RlLWJvZHk6OmJlZm9yZSB7IFxuXHRjb250ZW50OiBjb3VudGVyKGNvZGVsaW5lKTsgXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR6LWluZGV4OiAxMDtcblx0bWFyZ2luLWxlZnQ6IC0yLjRlbTsgXG5cdHdpZHRoOiAyZW07XG5cdHBhZGRpbmctcmlnaHQ6IDAuMmVtO1xuXHR0ZXh0LWFsaWduOiByaWdodDtcblx0dmVydGljYWwtYWxpZ246IGJvdHRvbTtcblx0Ym9yZGVyLXJpZ2h0OiBzb2xpZCAxcHggI2ZmZjtcblx0XG5cdC8qIOKGk+ihjOeVquWPt+OBruiJsuOBruaMh+WumuOBr+OBk+OBkyAqL1xuXHRjb2xvcjogdmFyKC0tY29kZS1udW1iZXItY29sb3IpO1xufVxuXG4vKiDjgqvjg7zjgr3jg6vooYzjga7ooYznlarlj7fjgpLmv4PjgY/ooajnpLrjgZnjgosgKi9cbi5jb2RlLWJsb2NrIHNwYW4uaW5kZW50IGNvZGUuY29kZS1ib2R5OjpiZWZvcmUge1xuXHRvcGFjaXR5OiAuNTtcbn1cbi5jdXJzb3ItbGluZSAuY29kZS1ibG9jayBzcGFuLmluZGVudCBjb2RlLmNvZGUtYm9keTo6YmVmb3JlIHtcblx0b3BhY2l0eTogMTtcblx0Zm9udC13ZWlnaHQ6IGJvbGRlcjtcblx0XG5cdC8qIOKGk+OCq+ODvOOCveODq+ihjOOBruiDjOaZr+iJsuOBruiJsuOBr+OBk+OBkyAqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xufVxuIiwgIi5uYXZiYXItZm9ybSAuZHJvcGRvd24ub3BlbiAuZHJvcGRvd24tbWVudSB7XG4gIG1pbi13aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDEzMHB4KSAhaW1wb3J0YW50O1xuICBvdmVyZmxvdy15OiBhdXRvO1xufSIsICIucGFnZS1saXN0LWl0ZW0ucGluICsgLnBhZ2UtbGlzdC1pdGVtOm5vdCgucGluKSB7XG4gIGdyaWQtY29sdW1uLXN0YXJ0OiAxO1xufSIsICIvKiDlpJbpg6jjg6rjg7Pjgq/jgatpY29u44KS44Gk44GR44KLICovICBcbi5saW5lIHNwYW46bm90KC5tb2RhbC1pbWFnZSk6bm90KC5wb2ludGluZy1kZXZpY2UtbWFwKSA+ICBhLmxpbms6bm90KC5pY29uKTpub3QoW2hyZWZePVwiaHR0cHM6Ly9zY3JhcGJveC5pb1wiXSk6OmFmdGVyIHtcbiAgIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgRnJlZScsICdGb250IEF3ZXNvbWUgNSBCcmFuZHMnO1xuICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgY29udGVudDogJyBcXGYzNWQnO1xuICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuIiwgIi5saW5lIC5kZWNvLVxcLiB7XG4gIGZvbnQtc2l6ZTogLjhlbTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IC0wLjVlbTtcbn1cbi5saW5lOm5vdCguY3Vyc29yLWxpbmUpIC5kZWNvLVxcLiBhOmlzKC5wYWdlLWxpbms6bm90KC5pY29uKSwgLmxpbmspIHNwYW46bm90KC5lbXB0eS1jaGFyLWluZGV4KSArIHNwYW4gKyBzcGFuIH4gc3BhbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDA7XG4gIHRleHQtaW5kZW50OiAtOTk5OXB4O1xufVxuLmxpbmU6bm90KC5jdXJzb3ItbGluZSkgLmRlY28tXFwuIC5wYWdlLWxpbms6bm90KC5pY29uKSBzcGFuLmVtcHR5LWNoYXItaW5kZXggfiBzcGFuLmNoYXItaW5kZXgge1xuICBkaXNwbGF5OiBpbmhlcml0O1xuICB3aWR0aDogaW5oZXJpdDtcbiAgdGV4dC1pbmRlbnQ6IGluaGVyaXQ7XG59XG5cbi5saW5lOm5vdCguY3Vyc29yLWxpbmUpIC5kZWNvLVxcLiBhLnBhZ2UtbGluazpub3QoLmljb24pIHNwYW4uZW1wdHktY2hhci1pbmRleCArIHNwYW46OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiI1wiO1xufVxuXG4ubGluZSAuZGVjby1cXC4gOmlzKC5wYWdlLWxpbms6bm90KC5pY29uKSwgLmxpbmspOjpiZWZvcmUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1pbi13aWR0aDogMS4xNWVtO1xuICBwYWRkaW5nLWxlZnQ6IDFweDtcbiAgLyogcGFkZGluZzogMCAxcHg7ICovXG4gIGZvbnQtZmFtaWx5OiBcIkZvbnQgQXdlc29tZSA1IEZyZWVcIixcIkZvbnQgQXdlc29tZSA1IEJyYW5kc1wiO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGNvbnRlbnQ6IFwiXFxmMDJkXCI7XG59XG5cbi8qIOaWnOS9k+OCkuWPluOCiua2iOOBmSAqL1xuLmxpbmUgLmRlY28tXFwuLmRlY28tXFwvIHtcbiAgZm9udC1zdHlsZTogaW5pdGlhbDtcbn1cbi5saW5lIC5kZWNvLVxcLi5kZWNvLVxcLyA6aXMoLnBhZ2UtbGluazpub3QoLmljb24pLCAubGluayk6OmJlZm9yZSB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGNvbnRlbnQ6IFwiXFxmMTVjXCI7XG59IiwgImRpdi5saW5lIHNwYW46bm90KC5tb2RhbC1pbWFnZSk6bm90KC5wb2ludGluZy1kZXZpY2UtbWFwKSA+IGEubGluazpub3QoLmljb24pOmlzKFxuICBbaHJlZiQ9XCIucGRmXCJdLFxuICBbaHJlZl49XCJodHRwczovL3R3aXR0ZXIuY29tXCJdLFxuICBbaHJlZl49XCJodHRwczovL2dpdGh1Yi5jb21cIl0sXG4gIFtocmVmXj1cImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbVwiXSxcbiAgW2hyZWZePVwiaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb21cIl0sXG4gIFtocmVmXj1cImh0dHBzOi8vamEud2lraXBlZGlhLm9yZ1wiXSxcbiAgW2hyZWZePVwiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnXCJdXG4pOjphZnRlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubGluZSBzcGFuOm5vdCguZGVjby1cXC4pID4gc3BhbiA+IGEubGluazppcyhcbiAgW2hyZWYkPVwiLnBkZlwiXSxcbiAgW2hyZWZePVwiaHR0cHM6Ly9naXRodWIuY29tXCJdLFxuICBbaHJlZl49XCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb21cIl0sXG4gIFtocmVmXj1cImh0dHBzOi8vZ2lzdC5naXRodWIuY29tXCJdLFxuICBbaHJlZl49XCJodHRwczovL2phLndpa2lwZWRpYS5vcmdcIl0sXG4gIFtocmVmXj1cImh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZ1wiXVxuKTo6YmVmb3JlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMWVtOyAvKjE2cHg7Ki9cbiAgaGVpZ2h0OiAxZW07IC8qMTZweDsqL1xuICB2ZXJ0aWNhbC1hbGlnbjogLTFweDsvKi0zcHg7Ki9cbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGZvbnQtZmFtaWx5OlwiRm9udCBBd2Vzb21lIDUgRnJlZVwiLFwiRm9udCBBd2Vzb21lIDUgQnJhbmRzXCI7XG4gIC8qIG1hcmdpbi1yaWdodDogMnB4OyAqL1xufVxuLmxpbmUgYS5saW5rOm5vdCguaWNvbilbaHJlZiQ9XCIucGRmXCJdOjpiZWZvcmUge1xuICBjb250ZW50OiAnXFxmMWMxJztcbiAgZm9udC13ZWlnaHQ6IDQwMDsgLyogdXNlIFJlZ3VsYXIgU3R5bGUgKi9cbiAgbWFyZ2luLXJpZ2h0OiAxcHg7XG59XG46aXMoLmxpbmUsIC5saW5lIC5kZWNvKSBhLmxpbms6aXMoXG4gIFtocmVmXj1cImh0dHBzOi8vZ2l0aHViLmNvbVwiXSxcbiAgW2hyZWZePVwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tXCJdLFxuICBbaHJlZl49XCJodHRwczovL2dpc3QuZ2l0aHViLmNvbVwiXVxuKTo6YmVmb3JlIHtcbiAgY29udGVudDogJ1xcZjA5Yic7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIG1hcmdpbi1yaWdodDogMXB4O1xufVxuOmlzKC5saW5lLCAubGluZSAuZGVjbykgYS5saW5rOmlzKFxuICBbaHJlZl49XCJodHRwczovL2phLndpa2lwZWRpYS5vcmdcIl0sXG4gIFtocmVmXj1cImh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZ1wiXVxuKTo6YmVmb3JlIHtcbiAgY29udGVudDogJ1xcZjI2Nic7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIG1hcmdpbi1yaWdodDogM3B4O1xufVxuLmxpbmUgLmRlY28tXFwuIGEubGluazppcyhcbiAgW2hyZWZePVwiaHR0cHM6Ly9qYS53aWtpcGVkaWEub3JnXCJdLFxuICBbaHJlZl49XCJodHRwczovL2VuLndpa2lwZWRpYS5vcmdcIl1cbikgc3Bhbi5jaGFyLWluZGV4IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMDtcbiAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7XG59XG4ubGluZSAuZGVjby1cXC4gYS5saW5rOmlzKFxuICBbaHJlZl49XCJodHRwczovL2phLndpa2lwZWRpYS5vcmdcIl0sXG4gIFtocmVmXj1cImh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZ1wiXVxuKSBzcGFuLmNoYXItaW5kZXg6bnRoLW9mLXR5cGUoMzApIH4gc3Bhbi5jaGFyLWluZGV4IHtcbiAgZGlzcGxheTogaW5oZXJpdDtcbiAgd2lkdGg6IGluaGVyaXQ7XG4gIHRleHQtaW5kZW50OiBpbmhlcml0O1xufVxuICAgICIsICIuZGVjby1cXFwiIHtcbiAgYm9yZGVyLXJhZGl1czogLjJlbTtcbiAgcGFkZGluZzogMCAuNGVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyOCwxMjgsMTI4LDAuMSk7IFxuICBmb250LXNpemU6IDk1JTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuLmRlY28tXFxcIjo6YmVmb3JlIHsgXG4gIGNvbG9yOiAjYTBhMGEwO1xuICBmb250LXNpemU6IDg1JTtcbiAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBGcmVlJztcbiAgY29udGVudDogJ1xcZjEwZCc7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIHZlcnRpY2FsLWFsaWduOiBzdXBlcjsgXG59IiwgIi5saW5lIC5pbmRlbnQtbWFyayAuZG90IHtcbiAgb3BhY2l0eTogMC4wO1xufVxuLmxpbmUgLmluZGVudC1tYXJrIC5jLTAgKyAuZG90IHtcbiAgb3BhY2l0eTogMS4wO1xufVxuLmxpbmUgLmluZGVudC1tYXJrIC5jLTEgKyAuZG90IHtcbiAgb3BhY2l0eTogMC44O1xufVxuLmxpbmUgLmluZGVudC1tYXJrIC5jLTIgKyAuZG90IHtcbiAgb3BhY2l0eTogMC42O1xufVxuLmxpbmUgLmluZGVudC1tYXJrIC5jLTMgKyAuZG90IHtcbiAgb3BhY2l0eTogMC40O1xufVxuLmxpbmUgLmluZGVudC1tYXJrIC5jLTQgKyAuZG90IHtcbiAgb3BhY2l0eTogMC4yO1xufSIsICIvKiDkuozph43mi6zlvKfjgavjgojjgovlvLfoqr/jgpLjg57jg7zjgqvjg7zjgaPjgb3jgY/jgZnjgosgKi9cbi5saW5lIHN0cm9uZzpub3QoW2NsYXNzXSkgeyBcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50IDYwJSwgcmdiYSgxNzEsIDI1NSwgNzksIC42KSA2MCUsIHJnYmEoMTcxLCAyNTUsIDc5LCAuNikgMTAwJSk7XG59IiwgIi50aW1lLXJhbmdlIC5saW5lcyB7XG4gIHVzZXItc2VsZWN0OiB1bnNldDtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogdW5zZXQ7XG59IiwgIi8qIOODnuODiOODquOCr+OCueiomOazlSAqL1xuLmxpbmU6bm90KC5jdXJzb3ItbGluZSkgLmRlY28tXFx8IHsgZGlzcGxheTogaW5saW5lLWZsZXggfVxuLmxpbmUgLmRlY28tXFx8IGltZy5pbWFnZSB7IG9iamVjdC1maXQ6IGNvbnRhaW47IG1hcmdpbjogMCB9XG5cbi8qIOWkquWtl+iomOazleOBqOe1hOOBv+WQiOOCj+OBm+OBpuWIl+aVsOOCkuWkieOBiOOCiyAqL1xuLmxpbmUgW2NsYXNzXj1cImxldmVsXCJdIC5kZWNvLVxcfCB7IGZsZXgtd3JhcDogd3JhcCB9XG4ubGluZSAubGV2ZWwtMSAuZGVjby1cXHwgPiBzcGFuIHsgd2lkdGg6IGNhbGMoMTAwJS8xKSB9XG4ubGluZSAubGV2ZWwtMiAuZGVjby1cXHwgPiBzcGFuIHsgd2lkdGg6IGNhbGMoMTAwJS8yKSB9XG4ubGluZSAubGV2ZWwtMyAuZGVjby1cXHwgPiBzcGFuIHsgd2lkdGg6IGNhbGMoMTAwJS8zKSB9XG4ubGluZSAubGV2ZWwtNCAuZGVjby1cXHwgPiBzcGFuIHsgd2lkdGg6IGNhbGMoMTAwJS80KSB9XG4ubGluZSAubGV2ZWwtNSAuZGVjby1cXHwgPiBzcGFuIHsgd2lkdGg6IGNhbGMoMTAwJS81KSB9XG5cbi5saW5lIFtjbGFzc149XCJsZXZlbFwiXSAuZGVjby1cXHwgaW1nLmltYWdlIHsgb2JqZWN0LWZpdDogY292ZXI7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCUgfVxuXG4vKiDkuKbjgbnjgZ/nlLvlg4/jga7plpPjgavjgrnjgq3jg57jgYzmrLLjgZfjgYTloLTlkIjjga/jgZPjga4y6KGM44KS6L+95Yqg44O744G044Gj44Gh44KK5pW344GN6Kmw44KB44Gf44GE5aC05ZCI44Gv44GT44GuMuihjOOBr+S4jeimgSAqL1xuLmxpbmUgLmRlY28tXFx8ID4gc3BhbiwgLmxpbmUgW2NsYXNzXj1cImxldmVsXCJdIC5kZWNvLVxcfCA+IHNwYW4geyBvdmVyZmxvdzogaGlkZGVuIH1cbi5saW5lIC5kZWNvLVxcfCBpbWcuaW1hZ2UsIC5saW5lIFtjbGFzc149XCJsZXZlbFwiXSAuZGVjby1cXHwgaW1nLmltYWdlIHsgbWFyZ2luOiAuMmVtIH0iLCAiLnNlbGVjdGlvbnMgLnBvcHVwLW1lbnUgLmJ1dHRvbi1jb250YWluZXIgLmJ1dHRvbjplbXB0eSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59IiwgIi8qIOaomea6luOBrnRleHTjgpLjgZnjgbnjgabmtojjgZkgKi9cbi5zdHJvbmctYnV0dG9uID4gc3Ryb25nLCAuaXRhbGljLWJ1dHRvbiA+IGksIC5zdHJpa2UtYnV0dG9uID4gc3RyaWtlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMDtcbiAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7XG59XG4vKiDjgZPjgozku6XkuIroqbPntLDluqbjgpLliYrjgovjgajjgIHku5bjga5ydWxl44Gr5LiK5pu444GN44GV44KM44Gm44GX44G+44GGICovXG4uc2VsZWN0aW9ucyAucG9wdXAtbWVudSAuYnV0dG9uLWNvbnRhaW5lciAuYnV0dG9uOmlzKC5saW5rLWJ1dHRvbiwgLm5ldy1wYWdlLWJ1dHRvbiwgLmNvcHktcGxhaW4tYnV0dG9uKSB7XG4gIGZvbnQtc2l6ZTogMDtcbn1cbi8qIGJ1dHRvbuOBq0ZvbnRBd2Vzb21l44KS5L2/44GGXG4gKlxuICogYC5zZWxlY3Rpb25zYOOBp+WFpeWKm+ijnOWujOOBrnBvcHVwIG1lbnXjgavjga/pgannlKjjgZfjgarjgYTjgojjgYbjgavjgZnjgotcbiAqL1xuLnNlbGVjdGlvbnMgLnBvcHVwLW1lbnUgLmJ1dHRvbi1jb250YWluZXIgLmJ1dHRvbiB7XG4gIGZvbnQtZmFtaWx5OiBcIk9wZW4gU2Fuc1wiLCBIZWx2ZXRpY2EsIEFyaWFsLCBcIkhpcmFnaW5vIFNhbnNcIiwgc2Fucy1zZXJpZiwgXCJGb250IEF3ZXNvbWUgNSBGcmVlXCIsIFwiRm9udCBBd2Vzb21lIDUgQnJhbmRzXCI7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLyogaWNvbuOCkuioreWumuOBmeOCiyAqL1xuLmxpbmstYnV0dG9uOjphZnRlciB7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgY29udGVudDogJ1xcZjBjMSdcbn1cbi5zdHJvbmctYnV0dG9uOjphZnRlciB7XG4gIGNvbnRlbnQ6ICdcXGYwMzInXG59XG4uaXRhbGljLWJ1dHRvbjo6YWZ0ZXIge1xuICBjb250ZW50OiAnXFxmMDMzJ1xufVxuLnN0cmlrZS1idXR0b246OmFmdGVyIHtcbiAgY29udGVudDogJ1xcZjBjYydcbn1cbi5jb3B5LXBsYWluLWJ1dHRvbjo6YWZ0ZXIge1xuICBmb250LXNpemU6IDExcHg7XG4gIGNvbnRlbnQ6ICdcXGYwYzUnIFxufVxuLm5ldy1wYWdlLWJ1dHRvbjo6YWZ0ZXIge1xuICBmb250LXNpemU6IDExcHg7XG4gIGNvbnRlbnQ6ICdcXGYwYzQnIFxufVxuIiwgIi5saW5lIGEuaWNvbltocmVmJD1cIi9oclwiXSB7IFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn0iLCAiLnBhZ2UtY29sdW1uIHtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1wYWdlLWNvbHVtbi1jb2x1bW5zLCA0NnB4IG1pbm1heCgyMDBweCwgOTYwcHgpIG1pbi1jb250ZW50KTtcbiAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogdmFyKC0tcGFnZS1jb2x1bW4tYXJlYXMsIFwic3BhY2VyIHBhZ2UgbWVudVwiKTtcbn1cblxuQG1lZGlhKDk5MXB4IDwgd2lkdGgpIHtcbiAgLnBhZ2UtY29sdW1uOmhhcygucGFnZS1zaWRlYmFyKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1wYWdlLWNvbHVtbi1jb2x1bW5zLXNpZGViYXIsIG1pbm1heCgyMDBweCwgM2ZyKSBtaW5tYXgoMTcwcHgsIDFmcikgbWluLWNvbnRlbnQpO1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6IHZhcigtLXBhZ2UtY29sdW1uLWFyZWFzLXNpZGViYXIsIFwicGFnZSBzaWRlYmFyIG1lbnVcIik7XG4gIH1cbn1cblxuQG1lZGlhKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5OTFweCkge1xuICAucGFnZS1jb2x1bW4ge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tcGFnZS1jb2x1bW4tY29sdW1ucy03NjgsIG1pbm1heCgyMDBweCwgOTYwcHgpIG1pbi1jb250ZW50KTtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiB2YXIoLS1wYWdlLWNvbHVtbi1hcmVhcy03NjgsIFwicGFnZSBtZW51XCIpO1xuICB9XG59XG5cbkBtZWRpYShtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5wYWdlLWNvbHVtbiB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLXBhZ2UtY29sdW1uLWNvbHVtbnMtNzY3LCAxZnIpO1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6IHZhcigtLXBhZ2UtY29sdW1uLWFyZWFzLTc2NywgXCJwYWdlXCIpO1xuICB9XG59IiwgIkBpbXBvcnQgXCIuLi8ucGFnZS1jb2x1bW7jga5ncmlkX2xheW91dOOCkuiqv+aVtOOBp+OBjeOCi+OCiOOBhuOBq+OBmeOCi1VzZXJDU1Mvc3R5bGUuY3NzXCI7XG5cbi5wYWdlLWNvbHVtbjpub3QoOmhhcyguZGVmaW5pdGlvbi10ZXJtKSkge1xuICAtLXBhZ2UtY29sdW1uLWNvbHVtbnMtc2lkZWJhcjogbWlubWF4KDIwMHB4LCA5NjBweCkgbWluLWNvbnRlbnQ7XG4gIC0tcGFnZS1jb2x1bW4tYXJlYXMtc2lkZWJhcjogXCJwYWdlIG1lbnVcIjtcbn1cbi5wYWdlLXNpZGViYXI6bm90KDpoYXMoLmRlZmluaXRpb24tdGVybSkpIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbiIsICIuZGVjby1cXCMge1xuICBmb250LWZhbWlseTogQ2ljYSxNZW5sbyxNb25hY28sQ29uc29sYXMsXCJDb3VyaWVyIE5ld1wiLG1vbm9zcGFjZTtcbn0iLCAiLmdyaWQgbGkucGFnZS1saXN0LWl0ZW0gYSAucGluIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG59XG4uZ3JpZCBsaS5wYWdlLWxpc3QtaXRlbSBhIC5waW46OmFmdGVyIHtcbiAgY29udGVudDogJ1xcZjA4ZCc7XG4gIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgRnJlZSc7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgY29sb3I6ICMxZjkxNWU7IGJvdHRvbTogMDtcbn0iLCAiLyog5Lit5aSu5a+E44GbICovXG4vKi5kZWNvLVxcfCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDEwMCU7IHRleHQtYWxpZ246IGNlbnRlciB9ICovXG4vKiDlj7Plr4TjgZsgKi9cbi5kZWNvLVxcPiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDEwMCU7IHRleHQtYWxpZ246IHJpZ2h0IH0gXG4vKiDlt6blr4TjgZsgKi9cbi8qLmRlY28tXFw8IHsgcG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogMTAwJTsgdGV4dC1hbGlnbjogbGVmdCB9Ki8iLCAibGkucGFnZS1saXN0LWl0ZW0uZ3JpZC1zdHlsZS1pdGVtIGRpdi50aXRsZSB7XG4gIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbn1cbiIsICIubGluZS5udW1iZXItbGlzdCAuZG90IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgZGlzcGxheTogbGlzdC1pdGVtO1xufVxuLmxpbmUubnVtYmVyLWxpc3QgLmRvdDo6YmVmb3JlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBGcmVlJztcbiAgdG9wOiAtMTFweDtcbiAgY29udGVudDogJ1xcZjI5Mic7IC8qICMgKi9cbiAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjb2xvcjogI2M5YzljOTtcbiAgb3BhY2l0eTogMC4wO1xufVxuLmxpbmUubnVtYmVyLWxpc3QgLmMtMCArIC5kb3Q6OmJlZm9yZSB7XG4gIG9wYWNpdHk6IDEuMDtcbn1cbi5saW5lLm51bWJlci1saXN0IC5jLTEgKyAuZG90OjpiZWZvcmUge1xuICBvcGFjaXR5OiAwLjg7XG59XG4ubGluZS5udW1iZXItbGlzdCAuYy0yICsgLmRvdDo6YmVmb3JlIHtcbiAgb3BhY2l0eTogMC42O1xufVxuLmxpbmUubnVtYmVyLWxpc3QgLmMtMyArIC5kb3Q6OmJlZm9yZSB7XG4gIG9wYWNpdHk6IDAuNDtcbn1cbi5saW5lLm51bWJlci1saXN0IC5jLTQgKyAuZG90OjpiZWZvcmUge1xuICBvcGFjaXR5OiAwLjI7XG59XG4iLCAiaW1nW3NyY149XCJodHRwczovL2kua2FrZXJ1LmFwcFwiXSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufSIsICIuYnJhbmQtaWNvbiB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5uYXZiYXItYnJhbmQ6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdcXGYwYzknO1xuICBmb250LWZhbWlseTogJ0ZvbnQgQXdlc29tZSA1IEZyZWUnO1xuICBmb250LXNpemU6IDI4cHg7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGNvbG9yOiAjYmJiYmJiO1xufVxuIiwgImJvZHkge1xuICAtLWVtcHR5LXBhZ2UtbGluay1jb2xvcjogIzMwOWI5ODtcbiAgLS1lbXB0eS1wYWdlLWxpbmstaG92ZXItY29sb3I6ICMyODgwN2Q7XG59IiwgIi5wcm9qZWN0LWhvbWUgLnRpdGxlIHtcbiAgZm9udC1zaXplOiAycmVtO1xufSIsICIuZXhwYW5kYWJsZS1tZW51IHtcbiAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAyMzJweCk7IC8qIDE5MiArIDQwICovXG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MXB4KSB7XG4gIC5leHBhbmRhYmxlLW1lbnUge1xuICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMjQ3cHgpOyAvKiAxOTIgKyA0MCArIDE1ICovXG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk5MnB4KSBhbmQgKG1heC13aWR0aDogMTI2MHB4KSB7XG4gIC5leHBhbmRhYmxlLW1lbnUge1xuICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMjYycHgpOyAvKiAxOTIgKyA0MCArIDMwICovXG4gIH1cbn1cbiIsICIubGluZSAuaW5kZW50LW1hcmsgLmRvdCB7XG4gIHRvcDogMTFweDtcbiAgd2lkdGg6IDZweDtcbiAgaGVpZ2h0OiAzcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjOWM5Yzk7XG59IiwgIi5kcm9wZG93bi1tZW51LFxuLmRyYXdlciAuZHJhd2VyLW1lbnV7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRyb3Bkb3duLW1lbnUtYmcsICNmZmYpO1xuICBib3JkZXI6IHZhcigtLWRyb3Bkb3duLW1lbnUtYm9yZGVyLCB1bnNldCk7XG59XG4uZHJvcGRvd24tbWVudSA+IGxpID4gYSxcbi5kcmF3ZXIgLmRyYXdlci1tZW51IHVsIGxpIGEsXG4ucGFnZS1tZW51IHVsID4gbGkgPiBkaXYge1xuICBjb2xvcjogdmFyKC0tZHJvcGRvd24tbWVudS10ZXh0LWNvbG9yLCAjMzMzKTtcbn1cblxuLmRyb3Bkb3duLW1lbnU+bGk+YTphY3RpdmUsXG4uZHJhd2VyLW1lbnUgdWwgbGkgYTphY3RpdmUsXG5bZGF0YS1ob3Zlci12aXNpYmxlXSA6aXMoLmRyb3Bkb3duLW1lbnUsLmRyYXdlci1tZW51KVxuICA+IGxpID4gOmlzKGE6aG92ZXIsIGE6Zm9jdXMpIHtcbiAgY29sb3I6IHZhcigtLWRyb3Bkb3duLW1lbnUtdGV4dC1ob3Zlci1jb2xvciwgIzI2MjYyNik7XG4gIGJhY2tncm91bmQtY29sb3I6ICB2YXIoLS1kcm9wZG93bi1tZW51LXRleHQtaG92ZXItYmcsICNmNWY1ZjUpO1xufVxuXG46aXMoLmRyb3Bkb3duLW1lbnUsIC5kcmF3ZXItbWVudSkgLmRpdmlkZXIge1xuICBjb2xvcjogdmFyKC0tZHJvcGRvd24tbWVudS1kaXZpZGVyLWNvbG9yLCAjZTVlNWU1KTtcbn0iLCAiQGltcG9ydCBcIi4uL2Ryb3Bkb3duX21lbnVfKFNjcmFwYm94KV/jga7oibLjgpLlpInjgYjjgotVc2VyQ1NTL3N0eWxlLmNzc1wiO1xuXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG5ib2R5IHtcbiAgLS1ib2R5LWJnOiAjMjAyMjI4O1xuICAtLW5hdmJhci1iZzogcmdiYSg1NSwgNTksIDY4LCAwLjMpO1xuICAtLW5hdmJhci1pY29uLWNvbG9yOiAjZmZmO1xuICAtLW5hdmJhci1pY29uLWFjdGl2ZS1jb2xvcjogIzMzOGM0NjtcbiAgLS1uYXZiYXItaWNvbi1ob3ZlcmVkLWNvbG9yOiAjMzM4YzQ2O1xuICAtLXNlYXJjaC1mb3JtLWJnOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTMpO1xuICAtLXNlYXJjaC1mb3JtLWljb24tY29sb3I6ICNmZmY7XG4gIC0tc2VhcmNoLWZvcm0taWNvbi1mb2N1cy1jb2xvcjogIzRhNGE0YTtcbiAgLS1jYXJkLXRpdGxlLWNvbG9yOiAjZjBmMGYwO1xuICAtLWNhcmQtdGl0bGUtYmc6ICMyYjJlMzg7XG4gIC0tY2FyZC1iZzogIzM3M2I0NDtcbiAgLS1jYXJkLWhvdmVyLWJnOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIC0tY2FyZC1hY3RpdmUtYmc6IHJnYmEoMjI5LCAyMjksIDIyOSwgMC4xKTtcbiAgLS1jYXJkLWJhY2tzaWRlOiAjNTQ1ODYwO1xuICAtLWNhcmQtZGVzY3JpcHRpb24tY29sb3I6ICNjNGM0YzQ7XG4gIC0tY2FyZC1kZXNjcmlwdGlvbi1saW5rLWNvbG9yOiAjODBjOWZlO1xuICAtLWNhcmQtZGVzY3JpcHRpb24tY29kZS1jb2xvcjogI2NjYztcbiAgLS1jYXJkLWJveC1zaGFkb3ctY29sb3I6ICMwMDA7XG4gIC0tY2FyZC1ib3gtc2hhZG93OiAwIDJweCAwIHZhcigtLWNhcmQtYm94LXNoYWRvdy1jb2xvcik7XG4gIC0tY2FyZC1ib3gtaG92ZXItc2hhZG93OiAwIDJweCAwIHJnYmEoMCwgMCwgMCwgMC4yMyk7XG4gIC0tY2FyZC10aXRsZS1iZy1waW5uZWQ6ICMyYjJlMzg7XG4gIC0tcmVsYXRpb24tbGFiZWwtYmc6ICMyYjJlMzg7XG4gIC0tcmVsYXRpb24tbGFiZWwtdGV4dDogI2RkZGVkZTtcbiAgLS1yZWxhdGlvbi1sYWJlbC1saW5rcy1iZzogIzgwYzlmZTtcbiAgLS1yZWxhdGlvbi1sYWJlbC1saW5rcy10ZXh0OiAjMjAyMjI4O1xuICAtLXJlbGF0aW9uLWxhYmVsLWVtcHR5LWJnOiAjZmI3NDc2O1xuICAtLXJlbGF0aW9uLWxhYmVsLWVtcHR5LXRleHQ6ICNmZmY7XG4gIC0tdG9vbC1jb2xvcjogIzUzNTg2MztcbiAgLS10b29sLWxpZ2h0LWNvbG9yOiAjMzUzYjQ4O1xuICAtLXRvb2wtYmFkZ2UtYmc6ICMyYjJlMzg7XG4gIC0tdG9vbC1iZzogIzJiMmUzODtcbiAgLS10b29sLXRleHQtY29sb3I6ICNkZGRlZGU7XG4gIC0tbmV3LWJ1dHRvbi12ZXJ0aWNhbC1jb2xvcjogI2ZmZjtcbiAgLS1uZXctYnV0dG9uLWhvcml6b250YWwtY29sb3I6ICNmZmY7XG4gIC0tbmV3LWJ1dHRvbi1iZzogIzQ2YWY1ZDtcbiAgLS1uZXctYnV0dG9uLWhvdmVyLWJnOiAjMzM4YzQ2O1xuICAtLW5ldy1idXR0b24tYWN0aXZlLWJnOiAjMzQ2NDQ3O1xuICAtLXRlbG9tZXJlLWJvcmRlcjogIzU0NTg2MztcbiAgLS10ZWxvbWVyZS11bnJlYWQ6ICM1NmEwNjY7XG4gIC0tcGFnZS10ZXh0LWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODcpO1xuICAtLXBhZ2UtbGluay1jb2xvcjogIzgwYzlmZTtcbiAgLS1wYWdlLWxpbmstaG92ZXItY29sb3I6ICM2YTllYzY7XG4gIC0tcGFnZS1saW5rLWNvbG9yLWN1cnNvci1saW5lOiAjYTk4NWU0O1xuICAtLXBhZ2UtYmc6ICMzNzNiNDQ7XG4gIC0tZW1wdHktcGFnZS1saW5rLWNvbG9yOiAjZmI3NDc2O1xuICAtLWVtcHR5LXBhZ2UtbGluay1ob3Zlci1jb2xvcjogI2I0NzU3NjtcbiAgLS1saW5lLXRpdGxlLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODcpO1xuICAtLWxpbmUtcGVybWFsaW5rLWNvbG9yOiByZ2JhKDIzNCwgMjE4LCA3NCwgMC4zNSk7XG4gIC0tY29kZS1jb2xvcjogI2NjYztcbiAgLS1jb2RlLWJnOiByZ2JhKDAsIDAsIDAsIDAuMTgpO1xuICAtLXF1b3RlLWJnLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIC0tY3Vyc29yLWNvbG9yOiAjZmZmO1xufVxuYm9keSB7XG4gIC0tZGFyay10aGVtZS1iZzogIzI0MjkyZjtcbiAgLS1kYXJrLXRoZW1lLWJvcmRlcjogc29saWQgMXB4ICM4ODg7XG59XG5ib2R5IHtcbiAgLS1uYXZiYXItYmc6IHJnYmEoMiwgMTY3LCAxMzcsIC41KTtcbn1cbmJvZHkge1xuICAtLW5ldy1idXR0b24taG9yaXpvbnRhbC1jb2xvcjogI2I0NGEyOTtcbiAgLS1uZXctYnV0dG9uLXZlcnRpY2FsLWNvbG9yOiB2YXIoLS1uZXctYnV0dG9uLWhvcml6b250YWwtY29sb3IpO1xuICAtLW5ldy1idXR0b24tYmc6ICNmNDgzNWY7XG4gIC0tbmV3LWJ1dHRvbi1ob3Zlci1iZzogI2YyNjkzZTtcbiAgLS1uZXctYnV0dG9uLWFjdGl2ZS1iZzogI2VmNGMxNztcbn1cbmJvZHkge1xuICAtLXRvb2wtY29sb3I6ICM1MzU4NjM7XG4gIC0tdG9vbC1saWdodC1jb2xvcjogIzM1M2I0ODtcbiAgLS10b29sLWJhZGdlLWJnOiAjMmIyZTM4O1xuICAtLXRvb2wtYmc6ICMyYjJlMzg7XG4gIC0tdG9vbC10ZXh0LWNvbG9yOiAjZGRkZWRlO1xuICAtLWJvZHktaGVhZGluZ3MtY29sb3I6IHZhcigtLXRvb2wtY29sb3IpO1xufVxuYm9keSB7XG4gIC0tY29kZS1saW5lLW51bWJlci1jb2xvcjogI0QxODFGRjtcbiAgLS1jdXJzb3ItY29kZS1saW5lLW51bWJlci1jb2xvcjogI0ZGMDBGMDtcbn1cbmJvZHkge1xuICAtLWRyb3Bkb3duLW1lbnUtYmc6ICMzNzNiNDQ7XG4gIC0tZHJvcGRvd24tbWVudS1ib3JkZXI6IDFweCBzb2xpZCAjODg4ODg4MmQ7XG4gIC0tZHJvcGRvd24tbWVudS10ZXh0LWNvbG9yOiB2YXIoLS1wYWdlLXRleHQtY29sb3IpO1xuICAtLWRyb3Bkb3duLW1lbnUtZGl2aWRlci1jb2xvcjogI2U1ZTVlNTtcbiAgLS1kcm9wZG93bi1tZW51LXRleHQtaG92ZXItY29sb3I6IHZhcigtLXBhZ2UtdGV4dC1jb2xvcik7XG4gIC0tZHJvcGRvd24tbWVudS10ZXh0LWhvdmVyLWJnOiAjMzczYjQ0O1xufVxuYm9keSB7XG4gIC0tY2FyZC10aXRsZS1iZzogdmFyKC0tbmF2YmFyLWJnKTtcbiAgLS1jYXJkLXRpdGxlLWJnLXBpbm5lZDogdmFyKC0tbmF2YmFyLWJnKTtcbn1cbi5wYWdlIHtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYm9yZGVyOiBzb2xpZCAxcHggIzg4ODtcbn1cblxuLnRhYmxlLWJsb2NrIC5jZWxsIHtcbiAgYm9yZGVyLWJvdHRvbTogc29saWQgMXB4ICM4ODg7XG59XG5cbi5saW5lIGNvZGUuaGVscGZlZWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLWJnKTtcbn1cbi8qIGNvZGUgYmxvY2vjga7poK3jgpLpnZnjgYvjgaroibLjgavjgZnjgosgKi9cbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCB7XG4gIGJvcmRlcjogc29saWQgMXB4ICM2NjY2N0Y7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNzI4MjI7XG4gIHBhZGRpbmc6IDJweCA1cHg7XG4gIGNvbG9yOiAjN2M5ZmY3O1xufVxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IGEge1xuICBjb2xvcjogIzdjOWZmNztcbn1cblxuLyoqXG4gKiBTaGFkZXMgb2YgUHVycGxlIFRoZW1lIOKAlCBmb3IgSGlnaGxpZ2h0anMuXG4gKlxuICogQGF1dGhvciAoYykgQWhtYWQgQXdhaXMgPGh0dHBzOi8vdHdpdHRlci5jb20vbXJhaG1hZGF3YWlzLz5cbiAqIEBsaW5rIEdpdEh1YiBSZXBvIOKGkiBodHRwczovL2dpdGh1Yi5jb20vYWhtYWRhd2Fpcy9TaGFkZXMtb2YtUHVycGxlLUhpZ2hsaWdodEpTXG4gKiBAdmVyc2lvbiAxLjUuMFxuICovXG4gXG4uY29kZS1ibG9jayB7XG4gIC0tY29kZS1iZzogIzJkMmI1NztcbiAgLS1jb2RlLWNvbG9yOiAjZTNkZmZmO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG5jb2RlLmhpZ2hsaWdodCAuaGxqcy1zdWJzdCB7XG4gIGNvbG9yOiAjZTNkZmZmO1xufVxuXG5jb2RlLmhpZ2hsaWdodCAuaGxqcy10aXRsZSB7XG4gIGNvbG9yOiAjZmFkMDAwO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG5jb2RlLmhpZ2hsaWdodCAuaGxqcy1uYW1lIHtcbiAgY29sb3I6ICNhMWZlZmY7XG59XG5cbmNvZGUuaGlnaGxpZ2h0IC5obGpzLXRhZyB7XG4gIGNvbG9yOiAjZmZmZmZmO1xufVxuXG5jb2RlLmhpZ2hsaWdodCAuaGxqcy1hdHRyIHtcbiAgY29sb3I6ICNmOGQwMDA7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuY29kZS5oaWdobGlnaHQgOmlzKFxuICAuaGxqcy1idWlsdF9pbixcbiAgLmhsanMtc2VsZWN0b3ItdGFnLFxuICAuaGxqcy1zZWN0aW9uXG4pIHtcbiAgY29sb3I6ICNmYjllMDA7XG59XG5cbmNvZGUuaGlnaGxpZ2h0IC5obGpzLWtleXdvcmQge1xuICBjb2xvcjogI2ZiOWUwMDtcbn1cblxuY29kZS5oaWdobGlnaHQgOmlzKFxuICAuaGxqcy1zdHJpbmcsXG4gIC5obGpzLWF0dHJpYnV0ZSxcbiAgLmhsanMtc3ltYm9sLFxuICAuaGxqcy1idWxsZXQsXG4gIC5obGpzLWFkZGl0aW9uLFxuICAuaGxqcy1jb2RlLFxuICAuaGxqcy1yZWdleHAsXG4gIC5obGpzLXNlbGVjdG9yLWNsYXNzLFxuICAuaGxqcy1zZWxlY3Rvci1hdHRyLFxuICAuaGxqcy1zZWxlY3Rvci1wc2V1ZG8sXG4gIC5obGpzLXRlbXBsYXRlLXRhZyxcbiAgLmhsanMtcXVvdGUsXG4gIC5obGpzLWRlbGV0aW9uXG4pIHtcbiAgY29sb3I6ICM0Y2QyMTM7XG59XG5cbmNvZGUuaGlnaGxpZ2h0IDppcyhcbiAgLmhsanMtbWV0YSxcbiAgLmhsanMtbWV0YSAuaGxqcy1zdHJpbmdcbikge1xuICBjb2xvcjogI2ZiOWUwMDtcbn1cblxuY29kZS5oaWdobGlnaHQgLmhsanMtY29tbWVudCB7XG4gIGNvbG9yOiAjYWM2NWZmO1xufVxuXG5jb2RlLmhpZ2hsaWdodCA6aXMoXG4gIC5obGpzLWtleXdvcmQsXG4gIC5obGpzLXNlbGVjdG9yLXRhZyxcbiAgLmhsanMtbGl0ZXJhbCxcbiAgLmhsanMtbmFtZVxuKSB7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbmNvZGUuaGlnaGxpZ2h0IDppcyhcbiAgLmhsanMtbGl0ZXJhbCxcbiAgLmhsanMtbnVtYmVyXG4pIHtcbiAgY29sb3I6ICNmYTY1OGQ7XG59XG5cbmNvZGUuaGlnaGxpZ2h0IC5obGpzLWVtcGhhc2lzIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG5jb2RlLmhpZ2hsaWdodCAuaGxqcy1zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuY29kZS5oaWdobGlnaHQgOmlzKFxuICAuaGxqcy1zZWxlY3Rvci1wc2V1ZG8sXG4gIC5obGpzLWRlbGV0aW9uXG4pIHtcbiAgY29sb3I6ICNlMDZjNzVcbn1cbjo6c2VsZWN0aW9uIHtcbiAgICBjb2xvcjogdW5zZXQ7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLDExNSwyMzAsMC41KTtcbiAgfVxuLnNlbGVjdGlvbntcbiBcdGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY3NztcbiB9XG4gXG4ubGluZSAuaW5kZW50LW1hcmsgLmRvdCB7XG4gIGJhY2tncm91bmQtY29sb3I6IGdyYXk7XG59XG4ubGluZS5udW1iZXItbGlzdCAuZG90OjpiZWZvcmUge1xuICBjb2xvcjogZ3JheTtcbn1cblxufSIsICIucGFnZS1saW5rW2hyZWYqPVwiLkBcIl06OmJlZm9yZXtcbiAgY29udGVudDogXCLinIVcIlxufVxuLnBhZ2UtbGlua1tocmVmKj1cIkAyMFwiXTpub3QoW2hyZWYqPVwiLkBcIl0pOjpiZWZvcmV7XG4gIGNvbnRlbnQ6IFwi4qycXCJcbn0iLCAiQGltcG9ydCBcIi4vZm9udC5jc3NcIjtcbkBpbXBvcnQgXCIuLi9jb21tb24vY29tbW9uLmNzc1wiO1xuQGltcG9ydCAnLi4vY29tbW9uL21vbm9zcGFjZS5jc3MnO1xuQGltcG9ydCAnLi4vY29tbW9uL3Bpbi5jc3MnO1xuQGltcG9ydCAnLi4vY29tbW9uL3RleHQtYWxpZ24uY3NzJztcbkBpbXBvcnQgXCIuLi/jg5rjg7zjgrjjgqvjg7zjg4njga7jgr/jgqTjg4jjg6vjgpIy6KGM44Gr5Y+O44KB44KLVXNlckNTUy9zdHlsZS5jc3NcIjtcbkBpbXBvcnQgXCIuLi/nlarlj7fku5jjgY3nrofmnaHmm7jjgY3jgatGb250QXdlc29tZeOCkuS9v+OBhlVzZXJDU1Mvc3R5bGUuY3NzXCI7XG5AaW1wb3J0IFwiLi4va2FrZXJ144Gu6IOM5pmv44KS55m944Gr44GZ44KLVXNlckNTUy9zdHlsZS5jc3NcIjtcbkBpbXBvcnQgJy4uL3NjcmFwYm94X2ljb27jgpJoYW1idXJnZXJfaWNvbuOBq+OBmeOCiy9zdHlsZS5jc3MnO1xuQGltcG9ydCAnLi4v56m644Oq44Oz44Kv44Gu6Imy44KS5aSJ44GI44KLVXNlckNTUy9zdHlsZS5jc3MnO1xuQGltcG9ydCBcIi4vaG9tZS5jc3NcIjtcbkBpbXBvcnQgXCIuLi9leHBhbmRhYmxlLW1lbnXjga7plbfjgZXjgpLliIfjgoroqbDjgoHjgotVc2VyQ1NTL3Rha2tlci5jc3NcIjtcbkBpbXBvcnQgXCIuLi/nrofmnaHmm7jjgY3jga5idWxsZXTjgpLmjqfjgYjjgoHjgavjgZnjgotVc2VyX0NTUy9zdHlsZS5jc3NcIjtcbkBpbXBvcnQgJy4uL3Rha2tlcuOBrmRhcmtfdGhlbWVfY3NzL3N0eWxlLmNzcyc7XG5AaW1wb3J0IFwiLi4v44K/44K544Kv44Oq44Oz44KvVjLnlKhVc2VyQ1NTL3N0eWxlLmNzc1wiO1xuYm9keSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImh0dHBzOi8vaS5neWF6by5jb20vOGQ2NTE5OGY3MjY1MmU4ODg3ZDJjOTQxZjM5ODA1YjQucG5nXCIpO1xufVxuLmdyaWQgbGkucGFnZS1saXN0LWl0ZW0gYSAuZGVzY3JpcHRpb24gLmZvcm11bGEgeyBkaXNwbGF5OiBpbmxpbmU7IH1cbi5wYWdlLWxpbms6aXMoXG4gIFtocmVmXj1cIi90b3N1a2Utbm90ZXNcIl0sXG4gIFtocmVmXj1cIi9ibHUzbW8vXCJdLFxuICBbaHJlZl49XCIvbWFzdWlsYWIvXCJdLFxuICBbaHJlZl49XCIvdGFra2VyLW1lbWV4XCJdLFxuICBbaHJlZl49XCIvdGFra2VyLWJvb2tzXCJdLFxuICBbaHJlZl49XCIvdGFra2VyLUNFUE1cIl0sXG4gIFtocmVmXj1cIi90YWtrZXItTUJSQ1wiXSxcbiAgW2hyZWZePVwiL3Rha2tlci1DVkJIXCJdLFxuICBbaHJlZl49XCIvdGFra2VyLUNWU1RcIl0sXG4gIFtocmVmXj1cIi90YWtrZXItUFNcIl0sXG4gIFtocmVmXj1cIi90YWtrZXItU01cIl0sXG4gIFtocmVmXj1cIi90YWtrZXItU29NXCJdLFxuICBbaHJlZl49XCIvdGFra2VyLXByaXZhdGVcIl1cbik6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICfwn5SSJztcbn0iXSwKICAibWFwcGluZ3MiOiAibUVBQ0MsS0FBTSxLQUFNLENBQUMsT0FBUSxDQUFDLEtBQUssR0FDekIsWUFBYSxTQUFTLENBQUUsS0FBSyxDQUFFLG1CQUFtQixDQUFFLGVBQWlCLENBQUUsWUFBYyxDQUFFLFVBQ3pGLENDSEQsS0FBSyxDQUFDLFFBQ0wscUJBQXFCLElBQUksWUFBWSxFQUFFLFFBRXhDLENBR0EsQ0FBQyxjQUNBLGNBQWUsUUFDaEIsQ0FDQSxDQUFDLFdBQVcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFVBQzVCLGtCQUFtQixTQUNuQixZQUFhLE9BQ2IsYUFBYyxLQUNmLENBQ0EsQ0FMQyxXQUtXLElBQUksQ0FMQyxPQUtPLElBQUksQ0FMQyxTQUtTLFFBQ3JDLFFBQVMsUUFBUSxVQUNqQixTQUFVLFNBQ1YsUUFBUyxhQUNULFFBQVMsR0FDVCxZQUFhLE9BQ2IsTUFBTyxJQUNQLGNBQWUsS0FDZixXQUFZLE1BQ1osZUFBZ0IsT0FDaEIsYUFBYyxNQUFNLElBQUksS0FHeEIsTUFBTyxJQUFJLG9CQUNaLENBR0EsQ0F0QkMsV0FzQlcsSUFBSSxDQXRCQyxPQXNCTyxJQUFJLENBdEJDLFNBc0JTLFFBQ3JDLFFBQVMsRUFDVixDQUNBLENBQUMsWUFBWSxDQXpCWixXQXlCd0IsSUFBSSxDQXpCWixPQXlCb0IsSUFBSSxDQXpCWixTQXlCc0IsUUFDbEQsUUFBUyxFQUNULFlBQWEsT0FHYixpQkFBa0IsSUFBSSxlQUN2QixDQ3hDQSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGNBQzNCLFVBQVcsS0FDWCxXQUFZLEtBQUssTUFBTSxFQUFFLGlCQUN6QixXQUFZLElBQ2QsQ0NKQSxDQUFDLGNBQWMsQ0FBQyxHQUFJLENBQUUsQ0FBckIsY0FBb0MsS0FBSyxDQUExQixLQUNkLGtCQUFtQixDQUNyQixDQ0RBLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxZQUFZLEtBQUssQ0FBQyxvQkFBcUIsQ0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsNkJBQTZCLE9BQzNHLFlBQWEscUJBQXFCLENBQUUsd0JBQ3BDLFlBQWEsSUFDYixVQUFXLE1BQ1gsUUFBUyxLQUNULFFBQVMsWUFDWixDQ1BBLENBQUMsS0FBSyxDQUFDLFFBQ0wsVUFBVyxLQUNYLFNBQVUsU0FDVixJQUFLLEtBQ1AsQ0FDQSxDQUxDLElBS0ksS0FBSyxDQUFDLGFBQWEsQ0FMakIsUUFLMEIsQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLENBQUMsTUFBTyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWtCLENBQUUsSUFBSyxDQUFFLElBQUssQ0FBRSxLQUM5RyxRQUFTLGFBQ1QsTUFBTyxFQUNQLFlBQWEsT0FDZixDQUNBLENBVkMsSUFVSSxLQUFLLENBTEMsYUFLYSxDQVZqQixRQVUwQixDQUxNLFNBS0ksS0FBSyxDQUxNLE1BS0MsSUFBSSxDQUxtQixnQkFLRCxDQUFFLElBQUksQ0FBQyxXQUNsRixRQUFTLFFBQ1QsTUFBTyxRQUNQLFlBQWEsT0FDZixDQUVBLENBaEJDLElBZ0JJLEtBQUssQ0FYQyxhQVdhLENBaEJqQixRQWdCMEIsQ0FBQyxDQVhLLFNBV0ssS0FBSyxDQVhLLE1BV0UsSUFBSSxDQVhrQixnQkFXQSxDQUFFLElBQUksUUFDbEYsUUFBUyxHQUNYLENBRUEsQ0FwQkMsS0FvQkssQ0FwQkMsUUFvQlEsSUFBSSxDQWZvQixTQWVWLEtBQUssQ0Fmb0IsTUFlWixDQWZvQixLQWVkLFFBQzlDLFFBQVMsYUFDVCxVQUFXLE9BQ1gsYUFBYyxJQUVkLFlBQWEscUJBQXFCLENBQUMsd0JBQ25DLFdBQVksT0FDWixlQUFnQixPQUNoQixZQUFhLElBQ2IsUUFBUyxHQUNYLENBR0EsQ0FqQ0MsS0FpQ0ssQ0FqQ0MsT0FpQ08sQ0FBQyxRQUNiLFdBQVksT0FDZCxDQUNBLENBcENDLEtBb0NLLENBcENDLE9Bb0NPLENBSEMsUUFHUSxJQUFJLENBL0JZLFNBK0JGLEtBQUssQ0EvQlksTUErQkosQ0EvQlksS0ErQk4sUUFDdEQsWUFBYSxJQUNiLFFBQVMsR0FDWCxDQ3ZDQSxHQUFHLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxZQUFZLEtBQUssQ0FBQyxvQkFBcUIsQ0FBRSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUMzRSxDQUFDLGNBQ0QsQ0FBQyw2QkFDRCxDQUFDLDRCQUNELENBQUMsMkNBQ0QsQ0FBQyxpQ0FDRCxDQUFDLGtDQUNELENBQUMsa0NBQ0YsT0FDQyxRQUFTLElBQ1gsQ0FDQSxDQVhJLEtBV0UsSUFBSSxLQUFLLENBQUMsUUFBUyxDQUFFLElBQUssQ0FBRSxDQUFDLENBWDJCLElBV3RCLElBQ3RDLENBQUMsY0FDRCxDQUFDLDRCQUNELENBQUMsMkNBQ0QsQ0FBQyxpQ0FDRCxDQUFDLGtDQUNELENBQUMsa0NBQ0YsUUFDQyxRQUFTLGFBQ1QsTUFBTyxJQUNQLE9BQVEsSUFDUixlQUFnQixLQUNoQixXQUFZLE9BQ1osZ0JBQWlCLFFBQ2pCLGtCQUFtQixVQUNuQixZQUFZLHFCQUFxQixDQUFDLHVCQUVwQyxDQUNBLENBN0JJLEtBNkJFLENBQUMsQ0E3QnVELElBNkJsRCxLQUFLLENBN0J1RCxLQTZCakQsQ0FBQyxhQUFhLFFBQ25DLFFBQVMsSUFDVCxZQUFhLElBQ2IsYUFBYyxHQUNoQixDQUNBLElBQUksQ0FsQ0EsS0FrQ08sQ0FsQ1AsS0FrQ2EsQ0FBQyxNQUFNLENBQUMsQ0FsQ3FDLElBa0NoQyxJQUM1QixDQUFDLDRCQUNELENBQUMsMkNBQ0QsQ0FBQyxpQ0FDRixRQUNDLFFBQVMsSUFDVCxZQUFhLElBQ2IsYUFBYyxHQUNoQixDQUNBLElBQUksQ0EzQ0EsS0EyQ08sQ0EzQ1AsS0EyQ2EsQ0FUQyxNQVNNLENBQUMsQ0EzQ3FDLElBMkNoQyxJQUM1QixDQUFDLGtDQUNELENBQUMsa0NBQ0YsUUFDQyxRQUFTLElBQ1QsWUFBYSxJQUNiLGFBQWMsR0FDaEIsQ0FDQSxDQW5ESSxLQW1ERSxDQXhDVSxRQXdDRCxDQUFDLENBbkQ4QyxJQW1EekMsSUFDbkIsQ0FBQyxrQ0FDRCxDQUFDLG1DQUNELElBQUksQ0FBQyxXQUNMLFFBQVMsYUFDVCxNQUFPLEVBQ1AsWUFBYSxPQUNmLENBQ0EsQ0EzREksS0EyREUsQ0FoRFUsUUFnREQsQ0FBQyxDQTNEOEMsSUEyRHpDLElBQ25CLENBQUMsa0NBQ0QsQ0FBQyxtQ0FDRCxJQUFJLENBUkMsVUFRVSxnQkFBaUIsQ0FBRSxJQUFJLENBUmpDLFdBU0wsUUFBUyxRQUNULE1BQU8sUUFDUCxZQUFhLE9BQ2YsQ0NsRUEsQ0FBQyxRQUFELGNBQ2lCLEtBRGpCLFFBRVcsRUFBRSxLQUNYLGlCQUFrQixVQUNsQixVQUFXLElBQ1gsV0FBWSxNQUNkLENBQ0EsQ0FQQyxPQU9PLFFBQ04sTUFBTyxRQUNQLFVBQVcsSUFDWCxZQUFhLHNCQUNiLFFBQVMsSUFDVCxZQUFhLElBQ2IsZUFBZ0IsS0FDbEIsQ0NkQSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFDbEIsUUFBUyxDQUNYLENBQ0EsQ0FIQyxLQUdLLENBSEMsWUFHWSxDQUFDLEdBQUksQ0FBRSxDQUhOLElBSWxCLFFBQVMsQ0FDWCxDQUNBLENBTkMsS0FNSyxDQU5DLFlBTVksQ0FBQyxHQUFJLENBQUUsQ0FOTixJQU9sQixRQUFTLEVBQ1gsQ0FDQSxDQVRDLEtBU0ssQ0FUQyxZQVNZLENBQUMsR0FBSSxDQUFFLENBVE4sSUFVbEIsUUFBUyxFQUNYLENBQ0EsQ0FaQyxLQVlLLENBWkMsWUFZWSxDQUFDLEdBQUksQ0FBRSxDQVpOLElBYWxCLFFBQVMsRUFDWCxDQUNBLENBZkMsS0FlSyxDQWZDLFlBZVksQ0FBQyxHQUFJLENBQUUsQ0FmTixJQWdCbEIsUUFBUyxFQUNYLENDaEJBLENBQUMsS0FBSyxNQUFNLEtBQUssQ0FBQyxRQUNoQixXQUFZLGdCQUFnQixZQUFZLEdBQTVCLENBQWlDLFVBQXVCLElBQTRCLEtBQ2xHLENDSEEsQ0FBQyxXQUFXLENBQUMsTUFDWCxZQUFhLE1BQ2Isb0JBQXFCLEtBQ3ZCLENDRkEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBVSxRQUFTLFdBQVksQ0FDeEQsQ0FEQyxLQUNLLENBRG1CLFFBQ1YsR0FBRyxDQUFDLE1BQVEsV0FBWSxRQUZ2QyxPQUV3RCxDQUFFLENBRzFELENBSkMsS0FJSyxDQUFDLGNBQWdCLENBSkUsUUFJUyxVQUFXLElBQUssQ0FDbEQsQ0FMQyxLQUtLLENBQUMsUUFBUSxDQUxVLE9BS0QsQ0FBRSxLQUFPLE1BQU8sSUFBYSxDQUNyRCxDQU5DLEtBTUssQ0FBQyxRQUFRLENBTlUsT0FNRCxDQUFFLEtBQU8sTUFBTyxHQUFhLENBQ3JELENBUEMsS0FPSyxDQUFDLFFBQVEsQ0FQVSxPQU9ELENBQUUsS0FBTyxNQUFPLEtBQUssSUFBSSxDQUFDLEVBQUcsQ0FDckQsQ0FSQyxLQVFLLENBQUMsUUFBUSxDQVJVLE9BUUQsQ0FBRSxLQUFPLE1BQU8sR0FBYSxDQUNyRCxDQVRDLEtBU0ssQ0FBQyxRQUFRLENBVFUsT0FTRCxDQUFFLEtBQU8sTUFBTyxHQUFhLENBRXJELENBWEMsS0FXSyxDQUFDLGNBQWdCLENBWEUsUUFXTyxHQUFHLENBVmhCLE1BVXlCLFdBQVksTUFBTyxNQUFPLEtBQU0sT0FBUSxJQUFLLENBR3pGLENBZEMsS0FjSyxDQWRtQixPQWNWLENBQUUsS0FBTSxDQWR0QixLQWM0QixDQUFDLGNBQWdCLENBZHJCLE9BYzhCLENBQUUsS0FBTyxTQUFVLE1BQU8sQ0FDakYsQ0FmQyxLQWVLLENBZm1CLFFBZVYsR0FBRyxDQWRDLE1BY08sQ0FmekIsS0FlK0IsQ0FBQyxjQUFnQixDQWZ4QixRQWVpQyxHQUFHLENBZDFDLE1BRm5CLE9BZ0I4RSxJQUFLLENDaEJuRixDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsTUFBTSxPQUMvQyxRQUFTLElBQ1gsQ0NEQSxDQUFDLGFBQWMsQ0FBRSxPQUFRLENBQUMsYUFBYyxDQUFFLEVBQUcsQ0FBQyxhQUFjLENBQUUsT0FDNUQsUUFBUyxhQUNULE1BQU8sRUFDUCxZQUFhLE9BQ2YsQ0FFQSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsTUFBTSxJQUFJLENBQUMsWUFBYSxDQUFDLGdCQUFpQixDQUFDLG1CQUNwRixVQUFXLENBQ2IsQ0FLQSxDQVBDLFdBT1csQ0FQQyxXQU9XLENBUEMsaUJBT2lCLENBUEMsT0FRekMsWUFBYSxTQUFXLENBQUUsU0FBUyxDQUFFLEtBQUssQ0FBRSxhQUFlLENBQUUsVUFBVSxDQUFFLHFCQUFxQixDQUFFLHdCQUNoRyxVQUFXLEtBQ1gsWUFBYSxLQUNiLFlBQWEsSUFDYixRQUFTLGFBQ1QsV0FBWSxNQUNkLENBRUEsQ0FoQnNELFdBZ0IxQyxPQUNWLFVBQVcsS0FDWCxRQUFTLEdBQ1gsQ0FDQSxDQTFCQyxhQTBCYSxPQUNaLFFBQVMsR0FDWCxDQUNBLENBN0IwQixhQTZCWixPQUNaLFFBQVMsR0FDWCxDQUNBLENBaEM4QyxhQWdDaEMsT0FDWixRQUFTLEdBQ1gsQ0FDQSxDQTdCc0YsaUJBNkJwRSxPQUNoQixVQUFXLEtBQ1gsUUFBUyxHQUNYLENBQ0EsQ0FqQ29FLGVBaUNwRCxPQUNkLFVBQVcsS0FDWCxRQUFTLEdBQ1gsQ0MzQ0EsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFDWCxlQUFnQixJQUNsQixDQ0ZBLENBQUMsWUFDQyxzQkFBdUIsSUFBSSxxQkFBcUIsRUFBRSxLQUFLLE9BQU8sS0FBSyxFQUFFLE9BQU8sYUFDNUUsb0JBQXFCLElBQUksbUJBQW1CLEVBQUUsbUJBQ2hELENBRUEsT0FBTSxDQUFDLE1BQU0sRUFBRSxPQUNiLENBTkQsV0FNYSxLQUFLLENBQUMsY0FDaEIsc0JBQXVCLElBQUksNkJBQTZCLEVBQUUsT0FBTyxLQUFLLEVBQUUsS0FBSyxPQUFPLEtBQUssRUFBRSxLQUFLLGFBQ2hHLG9CQUFxQixJQUFJLDJCQUEyQixFQUFFLG9CQUN4RCxDQUNGLENBRUEsT0FBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FDdkMsQ0FiRCxZQWNHLHNCQUF1QixJQUFJLHlCQUF5QixFQUFFLE9BQU8sS0FBSyxFQUFFLE9BQU8sYUFDM0Usb0JBQXFCLElBQUksdUJBQXVCLEVBQUUsWUFDcEQsQ0FDRixDQUVBLE9BQU0sQ0FBQyxTQUFTLEVBQUUsT0FDaEIsQ0FwQkQsWUFxQkcsUUFBUyxLQUNULHNCQUF1QixJQUFJLHlCQUF5QixFQUFFLEtBQ3RELG9CQUFxQixJQUFJLHVCQUF1QixFQUFFLE9BQ3BELENBQ0YsQ0N2QkEsQ0FBQyxXQUFXLEtBQUssS0FBSyxDQUFDLGtCQUNyQiwrQkFBK0IsT0FBTyxLQUFLLEVBQUUsT0FBTyxZQUNwRCw2QkFBNkIsV0FDL0IsQ0FDQSxDQUFDLFlBQVksS0FBSyxLQUFLLENBSkEsa0JBS3JCLFFBQVMsSUFDWCxDQ1JBLENBQUMsUUFDQyxZQUFhLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFhLENBQUMsU0FDeEQsQ0NGQSxDQUFDLEtBQUssRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQ3pCLGlCQUFrQixZQUNsQixpQkFBa0IsSUFDcEIsQ0FDQSxDQUpDLEtBSUssRUFBRSxDQUpDLGVBSWUsRUFBRSxDQUpDLEdBSUcsT0FDNUIsUUFBUyxJQUNULFlBQWEsc0JBQ2IsWUFBYSxJQUNiLFVBQVcsS0FDWCxNQUFPLFFBQVMsT0FBUSxDQUMxQixDQ1BBLENBQUMsUUFBVSxTQUFVLFNBQVUsTUFBTyxLQUFNLFdBQVksS0FBTSxDQ0g5RCxFQUFFLENBQUMsY0FBYyxDQUFDLGdCQUFnQixHQUFHLENBQUMsTUFDcEMsbUJBQW9CLENBQ3RCLENDRkEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQ2pCLGlCQUFrQixzQkFDbEIsUUFBUyxTQUNYLENBQ0EsQ0FKQyxJQUlJLENBSkMsWUFJWSxDQUpDLEdBSUcsUUFDcEIsUUFBUyxNQUNULFNBQVUsU0FDVixZQUFhLHNCQUNiLElBQUssTUFDTCxRQUFTLElBQ1QsWUFBYSxJQUNiLFVBQVcsS0FDWCxNQUFPLFFBQ1AsUUFBUyxDQUNYLENBQ0EsQ0FmQyxJQWVJLENBZkMsWUFlWSxDQUFDLEdBQUksQ0FBRSxDQWZOLEdBZVUsUUFDM0IsUUFBUyxDQUNYLENBQ0EsQ0FsQkMsSUFrQkksQ0FsQkMsWUFrQlksQ0FBQyxHQUFJLENBQUUsQ0FsQk4sR0FrQlUsUUFDM0IsUUFBUyxFQUNYLENBQ0EsQ0FyQkMsSUFxQkksQ0FyQkMsWUFxQlksQ0FBQyxHQUFJLENBQUUsQ0FyQk4sR0FxQlUsUUFDM0IsUUFBUyxFQUNYLENBQ0EsQ0F4QkMsSUF3QkksQ0F4QkMsWUF3QlksQ0FBQyxHQUFJLENBQUUsQ0F4Qk4sR0F3QlUsUUFDM0IsUUFBUyxFQUNYLENBQ0EsQ0EzQkMsSUEyQkksQ0EzQkMsWUEyQlksQ0FBQyxHQUFJLENBQUUsQ0EzQk4sR0EyQlUsUUFDM0IsUUFBUyxFQUNYLENDN0JBLEdBQUcsQ0FBQyw2QkFDRixpQkFBa0IsSUFDcEIsQ0NGQSxDQUFDLFdBQ0MsUUFBUyxjQUNYLENBQ0EsQ0FBQyxZQUFZLFFBQ1gsUUFBUyxJQUNULFlBQWEsc0JBQ2IsVUFBVyxLQUNYLFlBQWEsSUFDYixNQUFPLElBQ1QsQ0NUQSxLQUNFLHlCQUF5QixRQUN6QiwrQkFBK0IsT0FDakMsQ0NIQSxDQUFDLGFBQWEsQ0FBQyxNQUNiLFVBQVcsSUFDYixDQ0ZBLENBQUMsZ0JBQ0MsVUFBVyxLQUFLLEtBQUssRUFBRSxNQUN6QixDQUNBLE9BQU8sT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUNuRCxDQUpELGdCQUtHLFVBQVcsS0FBSyxLQUFLLEVBQUUsTUFDekIsQ0FDRixDQUNBLE9BQU8sT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUNuRCxDQVRELGdCQVVHLFVBQVcsS0FBSyxLQUFLLEVBQUUsTUFDekIsQ0FDRixDQ1pBLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUNsQixJQUFLLEtBQ0wsTUFBTyxJQUNQLE9BQVEsSUFDUixpQkFBa0IsT0FDcEIsQ0NMQSxDQUFDLGNBQ0QsQ0FBQyxPQUFPLENBQUMsWUFDUCxpQkFBa0IsSUFBSSxrQkFBa0IsRUFBRSxNQUMxQyxPQUFRLElBQUksc0JBQXNCLEVBQUUsTUFDdEMsQ0FDQSxDQUxDLGFBS2MsQ0FBRSxFQUFHLENBQUUsRUFDdEIsQ0FMQyxPQUtPLENBTEMsWUFLWSxHQUFHLEdBQUcsRUFDM0IsQ0FBQyxVQUFVLEVBQUcsQ0FBRSxFQUFHLENBQUUsSUFDbkIsTUFBTyxJQUFJLDBCQUEwQixFQUFFLEtBQ3pDLENBRUEsQ0FYQyxhQVdhLENBQUMsRUFBRSxDQUFDLENBQUMsUUFDbkIsQ0FYUyxZQVdJLEdBQUcsR0FBRyxDQUFDLFFBQ3BCLENBQUMsb0JBQW9CLElBQUksQ0FieEIsY0FhdUMsQ0FaL0IsWUFhUCxDQUFFLEVBQUcsQ0FBRSxJQUFJLENBQUMsT0FBUSxDQUFDLFFBQ3JCLE1BQU8sSUFBSSxnQ0FBZ0MsRUFBRSxTQUM3QyxpQkFBbUIsSUFBSSw2QkFBNkIsRUFBRSxRQUN4RCxDQUVBLElBQUksQ0FuQkgsY0FtQm1CLENBbEJYLGFBa0J5QixDQUFDLFFBQ2pDLE1BQU8sSUFBSSw2QkFBNkIsRUFBRSxRQUM1QyxDQ25CQSxPQUFPLENBQUMsb0JBQW9CLEVBQUUsTUFDOUIsS0FDRSxXQUFXLFFBQ1gsYUFBYSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQzlCLHFCQUFxQixLQUNyQiw0QkFBNEIsUUFDNUIsNkJBQTZCLFFBQzdCLGtCQUFrQixLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQ3RDLDBCQUEwQixLQUMxQixnQ0FBZ0MsUUFDaEMsb0JBQW9CLFFBQ3BCLGlCQUFpQixRQUNqQixXQUFXLFFBQ1gsaUJBQWlCLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFDL0Isa0JBQWtCLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFDdEMsaUJBQWlCLFFBQ2pCLDBCQUEwQixRQUMxQiwrQkFBK0IsUUFDL0IsK0JBQStCLEtBQy9CLHlCQUF5QixLQUN6QixtQkFBbUIsRUFBRSxJQUFJLEVBQUUsSUFBSSx5QkFDL0IseUJBQXlCLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FDL0Msd0JBQXdCLFFBQ3hCLHFCQUFxQixRQUNyQix1QkFBdUIsUUFDdkIsMkJBQTJCLFFBQzNCLDZCQUE2QixRQUM3QiwyQkFBMkIsUUFDM0IsNkJBQTZCLEtBQzdCLGNBQWMsUUFDZCxvQkFBb0IsUUFDcEIsaUJBQWlCLFFBQ2pCLFdBQVcsUUFDWCxtQkFBbUIsUUFDbkIsNkJBQTZCLEtBQzdCLCtCQUErQixLQUMvQixpQkFBaUIsUUFDakIsdUJBQXVCLFFBQ3ZCLHdCQUF3QixRQUN4QixtQkFBbUIsUUFDbkIsbUJBQW1CLFFBQ25CLG1CQUFtQixLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQ3ZDLG1CQUFtQixRQUNuQix5QkFBeUIsUUFDekIsK0JBQStCLFFBQy9CLFdBQVcsUUFDWCx5QkFBeUIsUUFDekIsK0JBQStCLFFBQy9CLG9CQUFvQixLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQ3hDLHdCQUF3QixLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQzNDLGNBQWMsS0FDZCxXQUFXLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FDekIsa0JBQWtCLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFDaEMsZ0JBQWdCLElBQ2xCLENBQ0EsS0FDRSxpQkFBaUIsUUFDakIscUJBQXFCLE1BQU0sSUFBSSxJQUNqQyxDQUNBLEtBQ0UsYUFBYSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQ2pDLENBQ0EsS0FDRSwrQkFBK0IsUUFDL0IsNkJBQTZCLElBQUksK0JBQ2pDLGlCQUFpQixRQUNqQix1QkFBdUIsUUFDdkIsd0JBQXdCLE9BQzFCLENBQ0EsS0FDRSxjQUFjLFFBQ2Qsb0JBQW9CLFFBQ3BCLGlCQUFpQixRQUNqQixXQUFXLFFBQ1gsbUJBQW1CLFFBQ25CLHVCQUF1QixJQUFJLGFBQzdCLENBQ0EsS0FDRSwwQkFBMEIsUUFDMUIsaUNBQWlDLE9BQ25DLENBQ0EsS0FDRSxvQkFBb0IsUUFDcEIsd0JBQXdCLElBQUksTUFBTSxVQUNsQyw0QkFBNEIsSUFBSSxtQkFDaEMsK0JBQStCLFFBQy9CLGtDQUFrQyxJQUFJLG1CQUN0QywrQkFBK0IsT0FDakMsQ0FDQSxLQUNFLGlCQUFpQixJQUFJLGFBQ3JCLHdCQUF3QixJQUFJLFlBQzlCLENBQ0EsQ0FBQyxLQUNDLFdBQVksS0FDWixPQUFRLE1BQU0sSUFBSSxJQUNwQixDQUVBLENBQUMsWUFBWSxDQUFDLEtBQ1osY0FBZSxNQUFNLElBQUksSUFDM0IsQ0FFQSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQ1QsaUJBQWtCLElBQUksVUFDeEIsQ0FFQSxDQUpDLEtBSUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFDckIsT0FBUSxNQUFNLElBQUksUUFDbEIsaUJBQWtCLFFBOUdwQixRQStHVyxJQUFJLElBQ2IsTUFBTyxPQUNULENBQ0EsQ0FWQyxLQVVLLElBQUksQ0FOQyxXQU1XLENBTkMsaUJBTWlCLEVBQ3RDLE1BQU8sT0FDVCxDQVVBLENBbEJXLFdBbUJULFdBQVcsUUFDWCxjQUFjLFFBQ2QsWUFBYSxHQUNmLENBRUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUNkLE1BQU8sT0FDVCxDQUVBLElBQUksQ0FKQyxVQUlVLENBQUMsV0FDZCxNQUFPLFFBQ1AsWUFBYSxHQUNmLENBRUEsSUFBSSxDQVRDLFVBU1UsQ0FBQyxVQUNkLE1BQU8sT0FDVCxDQUVBLElBQUksQ0FiQyxVQWFVLENBQUMsU0FDZCxNQUFPLElBQ1QsQ0FFQSxJQUFJLENBakJDLFVBaUJVLENBQUMsVUFDZCxNQUFPLFFBQ1AsV0FBWSxNQUNkLENBRUEsSUFBSSxDQXRCQyxVQXNCVSxJQUNiLENBQUMsY0FDRCxDQUFDLGtCQUNELENBQUMsY0FFRCxNQUFPLE9BQ1QsQ0FFQSxJQUFJLENBOUJDLFVBOEJVLENBQUMsYUFDZCxNQUFPLE9BQ1QsQ0FFQSxJQUFJLENBbENDLFVBa0NVLElBQ2IsQ0FBQyxZQUNELENBQUMsZUFDRCxDQUFDLFlBQ0QsQ0FBQyxZQUNELENBQUMsY0FDRCxDQUFDLFVBQ0QsQ0FBQyxZQUNELENBQUMsb0JBQ0QsQ0FBQyxtQkFDRCxDQUFDLHFCQUNELENBQUMsa0JBQ0QsQ0FBQyxXQUNELENBQUMsZUFFRCxNQUFPLE9BQ1QsQ0FFQSxJQUFJLENBcERDLFVBb0RVLElBQ2IsQ0FBQyxVQUNELENBREMsVUFDVSxDQW5CVixhQXFCRCxNQUFPLE9BQ1QsQ0FFQSxJQUFJLENBM0RDLFVBMkRVLENBQUMsYUFDZCxNQUFPLE9BQ1QsQ0FFQSxJQUFJLENBL0RDLFVBK0RVLElBQ2IsQ0FsQ2MsYUFtQ2QsQ0F6Q0Msa0JBMENELENBQUMsYUFDRCxDQTFEYyxXQTREZCxZQUFhLEdBQ2YsQ0FFQSxJQUFJLENBeEVDLFVBd0VVLElBQ2IsQ0FQQyxhQVFELENBQUMsYUFFRCxNQUFPLE9BQ1QsQ0FFQSxJQUFJLENBL0VDLFVBK0VVLENBQUMsY0FDZCxXQUFZLE1BQ2QsQ0FFQSxJQUFJLENBbkZDLFVBbUZVLENBQUMsWUFDZCxZQUFhLEdBQ2YsQ0FFQSxJQUFJLENBdkZDLFVBdUZVLElBQ2IsQ0E1Q0MscUJBNkNELENBMUNDLGVBNENELE1BQU8sT0FDVCxDQUNBLFlBQ0ksTUFBTyxNQUNQLFdBQVksU0FDZCxDQUNGLENBQUMsVUFDQyxpQkFBa0IsS0FDbkIsQ0FFRCxDQWpJQyxLQWlJSyxDQUFDLFlBQVksQ0FBQyxJQUNsQixpQkFBa0IsSUFDcEIsQ0FDQSxDQXBJQyxJQW9JSSxDQUFDLFlBQVksQ0FIRSxHQUdFLFFBQ3BCLE1BQU8sSUFDVCxDQUVBLENDaFBBLENBQUMsU0FBUyxDQUFDLFdBQVcsUUFDcEIsUUFBUyxHQUNYLENBQ0EsQ0FIQyxTQUdTLENBQUMsWUFBWSxLQUFLLENBQUMsWUFBWSxRQUN2QyxRQUFTLEdBQ1gsQ0NVQSxLQUNFLGlCQUFrQiw2REFDcEIsQ0FDQSxDQUFDLEtBQUssRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFVLFFBQVMsTUFBUSxDQUNuRSxDQUFDLFNBQVMsSUFDUixDQUFDLHVCQUNELENBQUMsa0JBQ0QsQ0FBQyxvQkFDRCxDQUFDLHVCQUNELENBQUMsdUJBQ0QsQ0FBQyxzQkFDRCxDQUFDLHNCQUNELENBQUMsc0JBQ0QsQ0FBQyxzQkFDRCxDQUFDLG9CQUNELENBQUMsb0JBQ0QsQ0FBQyxxQkFDRCxDQUFDLHlCQUNGLFFBQ0MsUUFBUyxJQUNYIiwKICAibmFtZXMiOiBbXQp9Cg== */
code:takker-user.css
@media screen and (min-width: 400px){html:is(data-os*=android,data-os*=ios) .popup-menu .button-container .button,.popup-menu .button-container .button:is(data-os*=android,data-os*=ios){min-width:3em}}.page-column{--page-column-columns: 100px minmax(200px, 960px) min-content 1fr;--page-column-areas: "spacer page menu spacer2";--page-column-columns-sidebar: 100px minmax(200px, 3fr) minmax(170px, 1fr) min-content;--page-column-areas-sidebar: "spacer page sidebar menu";--page-column-columns-768: var(--page-column-columns);--page-column-areas-768: var(--page-column-areas);--page-column-columns-767: minmax(60px, calc(100% / 767 * 100)) 1fr;--page-column-areas-767: "spacer page"}@container (width > 1236px){.page-column{--page-column-columns: minmax(200px, 960px) min-content;--page-column-areas: "page menu"}}.page-column:not(:has(.definition-term)){--page-column-columns-sidebar: var(--page-column-columns);--page-column-areas-sidebar: var(--page-column-areas)}.page-sidebar:not(:has(.definition-term)){display:none}.search-form .form-group input:focus{color:var(--page-text-color);background-color:var(--search-form-bg, rgba(255,255,255,.15))}.line span.code-block .code-block-start title=css a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=html a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=javascript a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=typescript a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=cpp a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=c a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=cs a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=python a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=toml a:before,.line span.code-block .code-block-start title=json a:before,.line span.code-block .code-block-start title=yaml a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=xml a:before{content:"謹";display:inline-block}.line span.code-block .code-block-start title=gitignore a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=markdown a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=txt a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=csv a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=fish a:before,.line span.code-block .code-block-start title=bash a:before,.line span.code-block .code-block-start title=zsh a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=dos a:before{content:"";display:inline-block}.line code,.line span.code-block{font-family:Cica,Menlo,Monaco,Consolas,Courier New,monospace;font-size:105%}data-os=android{.page-column{div.page-menu{position:fixed;display:flex;flex-direction:row-reverse;right:0;.dropdown-menu-top,.dropdown-menu-right{top:46px}}}} /*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvbW9iaWxlX1BvcHVwTWVudSVFMyU4MSVBRSVFMyU4MyU5QyVFMyU4MiVCRiVFMyU4MyVCMyVFMyU4MiVCNSVFMyU4MiVBNCVFMyU4MiVCQSVFMyU4MiU5MiVFNSVCMCU4RiVFMyU4MSU5NSVFMyU4MSU4RiVFMyU4MSU5OSVFMyU4MiU4QlVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFNSVCRCU5MyVFNiU5NyVBNSVFMyU4MSVBRSVFNCVCQSU4OCVFNSVBRSU5QSVFMyU4MiU5MiVFMyU4MiVCRiVFMyU4MiVBNCVFMyU4MyVBMCVFMyU4MyVBOSVFMyU4MiVBNCVFMyU4MyVCMyVFMyU4MSVBQiVFNSVCOCVCOCVFNiU5OSU4MiVFOCVBMSVBOCVFNyVBNCVCQSVFMyU4MSU5OSVFMyU4MiU4QlVzZXJTY3JpcHQlRTMlODElQUUlRTglQUElQkYlRTYlOTUlQjQlRTclOTQlQThVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTUlQkQlOTMlRTYlOTclQTUlRTMlODElQUUlRTQlQkElODglRTUlQUUlOUElRTMlODIlOTIlRTMlODIlQkYlRTMlODIlQTQlRTMlODMlQTAlRTMlODMlQTklRTMlODIlQTQlRTMlODMlQjMlRTMlODElQUIlRTUlQjglQjglRTYlOTklODIlRTglQTElQTglRTclQTQlQkElRTMlODElOTklRTMlODIlOEJVc2VyU2NyaXB0JUUzJTgxJUFFJUU4JUFBJUJGJUU2JTk1JUI0JUU3JTk0JUE4VXNlckNTUy9kaXNhYmxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9jb21tb24vc2VhcmNoLWZvcm0uY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL2NvbW1vbi9jb2RlQmxvY2stZm9udC5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvbW9iaWxlJUUzJTgxJUE3UGFnZU1lbnUlRTMlODIlOTIlRTUlQjglQjglRTYlOTklODIlRTglQTElQTglRTclQTQlQkElRTMlODElOTklRTMlODIlOEJVc2VyQ1NTL3N0eWxlLmNzcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDAwcHgpIHtcbiAgaHRtbDppcyhbZGF0YS1vcyo9YW5kcm9pZF0sIFtkYXRhLW9zKj1pb3NdKSAucG9wdXAtbWVudSAuYnV0dG9uLWNvbnRhaW5lciAuYnV0dG9uLFxuICAgIC5wb3B1cC1tZW51IC5idXR0b24tY29udGFpbmVyIC5idXR0b246aXMoW2RhdGEtb3MqPWFuZHJvaWRdLCBbZGF0YS1vcyo9aW9zXSkge1xuICAgIG1pbi13aWR0aDogM2VtO1xuICB9XG59XG4iLCAiLnBhZ2UtY29sdW1uIHtcbiAgLS1wYWdlLWNvbHVtbi1jb2x1bW5zOiAxMDBweCBtaW5tYXgoMjAwcHgsIDk2MHB4KSBtaW4tY29udGVudCAxZnI7XG4gIC0tcGFnZS1jb2x1bW4tYXJlYXM6IFwic3BhY2VyIHBhZ2UgbWVudSBzcGFjZXIyXCI7XG4gIC0tcGFnZS1jb2x1bW4tY29sdW1ucy1zaWRlYmFyOiAxMDBweCBtaW5tYXgoMjAwcHgsIDNmcikgbWlubWF4KDE3MHB4LCAxZnIpIG1pbi1jb250ZW50O1xuICAtLXBhZ2UtY29sdW1uLWFyZWFzLXNpZGViYXI6IFwic3BhY2VyIHBhZ2Ugc2lkZWJhciBtZW51XCI7XG4gIC0tcGFnZS1jb2x1bW4tY29sdW1ucy03Njg6IHZhcigtLXBhZ2UtY29sdW1uLWNvbHVtbnMpO1xuICAtLXBhZ2UtY29sdW1uLWFyZWFzLTc2ODogdmFyKC0tcGFnZS1jb2x1bW4tYXJlYXMpO1xuICAtLXBhZ2UtY29sdW1uLWNvbHVtbnMtNzY3OiBtaW5tYXgoNjBweCwgY2FsYygxMDAlIC8gNzY3ICogMTAwKSkgMWZyO1xuICAtLXBhZ2UtY29sdW1uLWFyZWFzLTc2NzogXCJzcGFjZXIgcGFnZVwiO1xufVxuQGNvbnRhaW5lciAod2lkdGggPiAxMjM2cHgpIHsgLyogLmNvbnRhaW5lcuOBruS4rei6q+OBrumVt+OBleOBjGB3aWR0aGDjgavjgarjgosgKi9cbiAgLnBhZ2UtY29sdW1uIHtcbiAgICAtLXBhZ2UtY29sdW1uLWNvbHVtbnM6IG1pbm1heCgyMDBweCwgOTYwcHgpIG1pbi1jb250ZW50O1xuICAgIC0tcGFnZS1jb2x1bW4tYXJlYXM6IFwicGFnZSBtZW51XCI7XG4gIH1cbn0iLCAiLnBhZ2UtY29sdW1uOm5vdCg6aGFzKC5kZWZpbml0aW9uLXRlcm0pKSB7XG4gIC0tcGFnZS1jb2x1bW4tY29sdW1ucy1zaWRlYmFyOiB2YXIoLS1wYWdlLWNvbHVtbi1jb2x1bW5zKTtcbiAgLS1wYWdlLWNvbHVtbi1hcmVhcy1zaWRlYmFyOiB2YXIoLS1wYWdlLWNvbHVtbi1hcmVhcyk7XG59XG4ucGFnZS1zaWRlYmFyOm5vdCg6aGFzKC5kZWZpbml0aW9uLXRlcm0pKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4iLCAiLnNlYXJjaC1mb3JtIC5mb3JtLWdyb3VwIGlucHV0OmZvY3VzIHtcbiAgY29sb3I6IHZhcigtLXBhZ2UtdGV4dC1jb2xvcik7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlYXJjaC1mb3JtLWJnLCByZ2JhKDI1NSwyNTUsMjU1LDAuMTUpKTtcbn0iLCAiLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cImNzc1wiXSBhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXGU3NDknO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJodG1sXCJdIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1xcZjEzYic7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cImphdmFzY3JpcHRcIl0gYTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnXFxlNzRmJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwidHlwZXNjcmlwdFwiXSBhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXGU2MjgnO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJjcHBcIl0gYTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnXFxlNjFkJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwiY1wiXSBhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXGU2MWUnO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJjc1wiXSBhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXGU3YmMnO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJweXRob25cIl0gYTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnXFxlNjA2JztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwidG9tbFwiXSBhOjpiZWZvcmUsXG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwianNvblwiXSBhOjpiZWZvcmUsXG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwieWFtbFwiXSBhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXGU2MGInO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJ4bWxcIl0gYTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnXFxmYWJmJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwiZ2l0aWdub3JlXCJdIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1xcZjAxMyc7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cIm1hcmtkb3duXCJdIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1xcZTczZSc7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cInR4dFwiXSBhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXGU2MTInO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJjc3ZcIl0gYTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnXFxmMGNlJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwiZmlzaFwiXSBhOjpiZWZvcmUsXG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwiYmFzaFwiXSBhOjpiZWZvcmUsXG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwienNoXCJdIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1xcZjQ4OSc7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cImRvc1wiXSBhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXGU2MjknO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLmxpbmUgY29kZSwgLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIHtcblx0Zm9udC1mYW1pbHk6IENpY2EsTWVubG8sTW9uYWNvLENvbnNvbGFzLFwiQ291cmllciBOZXdcIixtb25vc3BhY2U7XG5cdGZvbnQtc2l6ZTogMTA1JTtcbn1cbiIsICJbZGF0YS1vcz1cImFuZHJvaWRcIl0ge1xuICAucGFnZS1jb2x1bW4ge1xuICAgIGRpdi5wYWdlLW1lbnUge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgXG4gICAgICAuZHJvcGRvd24tbWVudS10b3AsIC5kcm9wZG93bi1tZW51LXJpZ2h0IHtcbiAgICAgICAgdG9wOiA0NnB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxufSJdLAogICJtYXBwaW5ncyI6ICJBQUFBLE9BQU8sT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQzVCLElBQUksSUFBSSxDQUFDLGtCQUFtQixDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsT0FDekUsQ0FEMkMsV0FDL0IsQ0FEMkMsaUJBQ3pCLENBRDJDLE1BQ3BDLElBQUksQ0FBQyxrQkFBbUIsQ0FBQyxlQUM5RCxVQUFXLEdBQ2IsQ0FDRixDQ0xBLENBQUMsWUFDQyx1QkFBdUIsTUFBTSxPQUFPLEtBQUssRUFBRSxPQUFPLFlBQVksSUFDOUQscUJBQXFCLDJCQUNyQiwrQkFB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 */
code:takker-memex.css
body *:before{--code-number-color: var(--code-color, #342d9c)}.section-title{counter-reset:codeline}.code-block span.indent code.code-body{counter-increment:codeline;margin-left:-1.5em;padding-left:2.3em}.code-block span.indent code.code-body:before{content:counter(codeline);position:absolute;display:inline-block;z-index:10;margin-left:-2.4em;width:2em;padding-right:.2em;text-align:right;vertical-align:bottom;border-right:solid 1px #fff;color:var(--code-number-color)}.code-block span.indent code.code-body:before{opacity:.5}.cursor-line .code-block span.indent code.code-body:before{opacity:1;font-weight:bolder;background-color:var(--accent-color)}.navbar-form .dropdown.open .dropdown-menu{min-width:100%;max-height:calc(100vh - 130px)!important;overflow-y:auto}.page-list-item.pin+.page-list-item:not(.pin){grid-column-start:1}.line span:not(.modal-image):not(.pointing-device-map)>a.link:not(.icon):not([href^="https://scrapbox.io"]):after{font-family:"Font Awesome 5 Free","Font Awesome 5 Brands";font-weight:900;font-size:.8rem;content:" ";display:inline-block}.line .deco-\.{font-size:.8em;position:relative;top:-.5em}.line:not(.cursor-line) .deco-\. a:is(.page-link:not(.icon),.link) span:not(.empty-char-index)+span+span~span{display:inline-block;width:0;text-indent:-9999px}.line:not(.cursor-line) .deco-\. .page-link:not(.icon) span.empty-char-index~span.char-index{display:inherit;width:inherit;text-indent:inherit}.line:not(.cursor-line) .deco-\. a.page-link:not(.icon) span.empty-char-index+span:before{content:"#"}.line .deco-\. :is(.page-link:not(.icon),.link):before{display:inline-block;min-width:1.15em;padding-left:1px;font-family:"Font Awesome 5 Free","Font Awesome 5 Brands";text-align:center;vertical-align:middle;font-weight:900;content:""}.line .deco-\..deco-\/{font-style:initial}.line .deco-\..deco-\/ :is(.page-link:not(.icon),.link):before{font-weight:400;content:""}div.line span:not(.modal-image):not(.pointing-device-map)>a.link:not(.icon):is(href$=".pdf",[href^="https://twitter.com"],[href^="https://github.com"],[href^="https://raw.githubusercontent.com"],[href^="https://gist.github.com"],[href^="https://ja.wikipedia.org"],[href^="https://en.wikipedia.org"]):after{display:none}.line span:not(.deco-\.)>span>a.link:is(href$=".pdf",[href^="https://github.com"],[href^="https://raw.githubusercontent.com"],[href^="https://gist.github.com"],[href^="https://ja.wikipedia.org"],[href^="https://en.wikipedia.org"]):before{display:inline-block;width:1em;height:1em;vertical-align:-1px;text-align:center;background-size:contain;background-repeat:no-repeat;font-family:"Font Awesome 5 Free","Font Awesome 5 Brands"}.line a.link:not(.icon)href$=".pdf":before{content:"";font-weight:400;margin-right:1px}:is(.line,.line .deco) a.link:is([href^="https://github.com"],[href^="https://raw.githubusercontent.com"],[href^="https://gist.github.com"]):before{content:"";font-weight:400;margin-right:1px}:is(.line,.line .deco) a.link:is([href^="https://ja.wikipedia.org"],[href^="https://en.wikipedia.org"]):before{content:"";font-weight:400;margin-right:3px}.line .deco-\. a.link:is([href^="https://ja.wikipedia.org"],[href^="https://en.wikipedia.org"]) span.char-index{display:inline-block;width:0;text-indent:-9999px}.line .deco-\. a.link:is([href^="https://ja.wikipedia.org"],[href^="https://en.wikipedia.org"]) span.char-index:nth-of-type(30)~span.char-index{display:inherit;width:inherit;text-indent:inherit}.deco-\"{border-radius:.2em;padding:0 .4em;background-color:#8080801a;font-size:95%;font-style:italic}.deco-\":before{color:#a0a0a0;font-size:85%;font-family:"Font Awesome 5 Free";content:"";font-weight:900;vertical-align:super}.line .indent-mark .dot{opacity:0}.line .indent-mark .c-0+.dot{opacity:1}.line .indent-mark .c-1+.dot{opacity:.8}.line .indent-mark .c-2+.dot{opacity:.6}.line .indent-mark .c-3+.dot{opacity:.4}.line .indent-mark .c-4+.dot{opacity:.2}.line strong:not(class){background:linear-gradient(transparent 60%,#abff4f99 60% 100%)}.time-range .lines{user-select:unset;-webkit-user-select:unset}.line:not(.cursor-line) .deco-\|{display:inline-flex}.line .deco-\| img.image{object-fit:contain;margin:0}.line class^=level .deco-\|{flex-wrap:wrap}.line .level-1 .deco-\|>span{width:100%}.line .level-2 .deco-\|>span{width:50%}.line .level-3 .deco-\|>span{width:calc(100%/3)}.line .level-4 .deco-\|>span{width:25%}.line .level-5 .deco-\|>span{width:20%}.line class^=level .deco-\| img.image{object-fit:cover;width:100%;height:100%}.line .deco-\|>span,.line class^=level .deco-\|>span{overflow:hidden}.line .deco-\| img.image,.line class^=level .deco-\| img.image{margin:.2em}.selections .popup-menu .button-container .button:empty{display:none}.strong-button>strong,.italic-button>i,.strike-button>strike{display:inline-block;width:0;text-indent:-9999px}.selections .popup-menu .button-container .button:is(.link-button,.new-page-button,.copy-plain-button){font-size:0}.selections .popup-menu .button-container .button{font-family:Open Sans,Helvetica,Arial,Hiragino Sans,sans-serif,"Font Awesome 5 Free","Font Awesome 5 Brands";font-size:11px;line-height:20px;font-weight:600;display:inline-block;text-align:center}.link-button:after{font-size:11px;content:""}.strong-button:after{content:""}.italic-button:after{content:""}.strike-button:after{content:""}.copy-plain-button:after{font-size:11px;content:""}.new-page-button:after{font-size:11px;content:""}.line a.iconhref$="/hr"{pointer-events:none}.page-column{grid-template-columns:var(--page-column-columns, 46px minmax(200px, 960px) min-content);grid-template-areas:var(--page-column-areas, "spacer page menu")}@media (991px < width){.page-column:has(.page-sidebar){grid-template-columns:var(--page-column-columns-sidebar, minmax(200px, 3fr) minmax(170px, 1fr) min-content);grid-template-areas:var(--page-column-areas-sidebar, "page sidebar menu")}}@media (min-width: 768px) and (max-width: 991px){.page-column{grid-template-columns:var(--page-column-columns-768, minmax(200px, 960px) min-content);grid-template-areas:var(--page-column-areas-768, "page menu")}}@media (max-width: 767px){.page-column{display:grid;grid-template-columns:var(--page-column-columns-767, 1fr);grid-template-areas:var(--page-column-areas-767, "page")}}.page-column:not(:has(.definition-term)){--page-column-columns-sidebar: minmax(200px, 960px) min-content;--page-column-areas-sidebar: "page menu"}.deco-\#{font-family:Cica,Menlo,Monaco,Consolas,Courier New,monospace}.grid li.page-list-item a .pin{background-color:transparent;background-image:none}.grid li.page-list-item a .pin:after{content:"";font-family:"Font Awesome 5 Free";font-weight:900;font-size:20px;color:#1f915e;bottom:0}@media screen and (min-width: 400px){html:is(data-os*=android,data-os*=ios) .popup-menu .button-container .button,.popup-menu .button-container .button:is(data-os*=android,data-os*=ios){min-width:3em}}.page-column{--page-column-columns: 100px minmax(200px, 960px) min-content 1fr;--page-column-areas: "spacer page menu spacer2";--page-column-columns-sidebar: 100px minmax(200px, 3fr) minmax(170px, 1fr) min-content;--page-column-areas-sidebar: "spacer page sidebar menu";--page-column-columns-768: var(--page-column-columns);--page-column-areas-768: var(--page-column-areas);--page-column-columns-767: minmax(60px, calc(100% / 767 * 100)) 1fr;--page-column-areas-767: "spacer page"}@container (width > 1236px){.page-column{--page-column-columns: minmax(200px, 960px) min-content;--page-column-areas: "page menu"}}.page-column:not(:has(.definition-term)){--page-column-columns-sidebar: var(--page-column-columns);--page-column-areas-sidebar: var(--page-column-areas)}.page-sidebar:not(:has(.definition-term)){display:none}.deco-\>{position:absolute;width:100%;text-align:right}.search-form .form-group input:focus{color:var(--page-text-color);background-color:var(--search-form-bg, rgba(255,255,255,.15))}.line span.code-block .code-block-start title=css a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=html a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=javascript a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=typescript a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=cpp a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=c a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=cs a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=python a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=toml a:before,.line span.code-block .code-block-start title=json a:before,.line span.code-block .code-block-start title=yaml a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=xml a:before{content:"謹";display:inline-block}.line span.code-block .code-block-start title=gitignore a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=markdown a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=txt a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=csv a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=fish a:before,.line span.code-block .code-block-start title=bash a:before,.line span.code-block .code-block-start title=zsh a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=dos a:before{content:"";display:inline-block}.line code,.line span.code-block{font-family:Cica,Menlo,Monaco,Consolas,Courier New,monospace;font-size:105%}.table-block .cell{border:solid 1px var(--telomere-border, #808b8c)}li.page-list-item.grid-style-item div.title{-webkit-line-clamp:2}.line.number-list .dot{background-color:transparent!important;display:list-item}.line.number-list .dot:before{display:block;position:absolute;font-family:"Font Awesome 5 Free";top:-11px;content:"";font-weight:900;font-size:11px;color:#c9c9c9;opacity:0}.line.number-list .c-0+.dot:before{opacity:1}.line.number-list .c-1+.dot:before{opacity:.8}.line.number-list .c-2+.dot:before{opacity:.6}.line.number-list .c-3+.dot:before{opacity:.4}.line.number-list .c-4+.dot:before{opacity:.2}img[src^="https://i.kakeru.app"]{background-color:#fff}@media screen{.quick-launch .left-box{position:fixed;top:-2px;left:40px;z-index:1000}}@media screen and (min-width: 768px) and (max-width: 991px){.quick-launch .left-box{left:55px}}@media screen and (min-width: 992px) and (max-width: 1260px){.quick-launch .left-box{left:70px}}@media screen and (min-width: 1261px){.quick-launch .left-box{left:calc((100% - 1280px)/2 + 80px)}}.expandable-menu{max-width:calc(100% - 291px)}@media screen and (min-width: 768px) and (max-width: 991px){.expandable-menu{max-width:calc(100% - 306px)}}@media screen and (min-width: 992px) and (max-width: 1260px){.expandable-menu{max-width:calc(100% - 321px)}}.deco-\* img.image{max-height:600px}.page-linkhref*=".@":before{content:"✅"}.page-linkhref*="@20":not(href*=".@"):before{content:"⬜"}data-os=android{.page-column{div.page-menu{position:fixed;display:flex;flex-direction:row-reverse;right:0;.dropdown-menu-top,.dropdown-menu-right{top:46px}}}}.dropdown-menu,.drawer .drawer-menu{background-color:var(--dropdown-menu-bg, #fff);border:var(--dropdown-menu-border, unset)}.dropdown-menu>li>a,.drawer .drawer-menu ul li a,.page-menu ul>li>div{color:var(--dropdown-menu-text-color, #333)}.dropdown-menu>li>a:active,.drawer-menu ul li a:active,data-hover-visible :is(.dropdown-menu,.drawer-menu)>li>:is(a:hover,a:focus){color:var(--dropdown-menu-text-hover-color, #262626);background-color:var(--dropdown-menu-text-hover-bg, #f5f5f5)}:is(.dropdown-menu,.drawer-menu) .divider{color:var(--dropdown-menu-divider-color, #e5e5e5)}body{--dropdown-menu-bg: #373b44;--dropdown-menu-border: 1px solid #8888882d;--dropdown-menu-text-color: var(--page-text-color);--dropdown-menu-text-hover-color: var(--page-text-color);--dropdown-menu-text-hover-bg: #373b44}.line:not(.cursor-line) .deco-\'{position:absolute;width:100%;text-align:center}.navbar-brand:before{content:"";width:44px;height:44px;position:absolute;background-color:#252a30;background-image:url(https://daiiz-apps.appspot.com/today/jp.svg);background-size:cover;background-position:center;border-radius:6px}.line:not(.cursor-line) class="deco-( deco-)":not(:has(img.icon)){border-radius:50%;border:.05em solid var(--page-text-color, #4a4a4a);line-height:1;color:var(--page-text-color, #4a4a4a);font-weight:600;padding:5px;a{color:var(--page-text-color, #4a4a4a)}} /*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUUzJTgyJUIzJUUzJTgzJUJDJUUzJTgzJTg5JUUzJTgzJTk2JUUzJTgzJUFEJUUzJTgzJTgzJUUzJTgyJUFGJUU4JUE4JTk4JUU2JUIzJTk1JUUzJTgxJUFCJUU4JUExJThDJUU3JTk1JUFBJUU1JThGJUI3JUUzJTgyJTkyJUU4JUExJUE4JUU3JUE0JUJBJUUzJTgxJTk5JUUzJTgyJThCVXNlckNTU18oTWlqaW5rbykvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFMyU4MSVBRSVFMyU4MSVCMyVFMyU4MSVBRSVFMyU4MSVCMyVFMyU4MyU4OSVFMyU4MyVBRCVFMyU4MyU4MyVFMyU4MyU5NyVFMyU4MyU4MCVFMyU4MiVBNiVFMyU4MyVCMy9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS9jdXN0b21pemUvJUUzJTgzJTk0JUUzJTgzJUIzJUU3JTk1JTk5JUUzJTgyJTgxJUUzJTgxJTk1JUUzJTgyJThDJUUzJTgxJTlGJUUzJTgzJTlBJUUzJTgzJUJDJUUzJTgyJUI4JUUzJTgyJTkyJUU3JThCJUFDJUU3JUFCJThCJUUzJTgxJTk3JUUzJTgxJTlGJUU2JUFFJUI1JUUzJTgxJUFCJUU4JUExJUE4JUU3JUE0JUJBJUUzJTgxJTk5JUUzJTgyJThCL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTUlQTQlOTYlRTklODMlQTglRTMlODMlQUElRTMlODMlQjMlRTMlODIlQUYlRTMlODIlOTIlRTUlOEMlQkElRTUlODglQTUlRTMlODElOTklRTMlODIlOEJVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTMlODMlQUElRTMlODMlQjMlRTMlODIlQUYlRTMlODIlOTIlRTUlODclQkElRTUlODUlQjglRTMlODIlQTIlRTMlODIlQTQlRTMlODIlQjMlRTMlODMlQjMlRTMlODElQUIlRTMlODElOTklRTMlODIlOEJVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTclODklQjklRTUlQUUlOUElRTMlODElQUUlRTMlODMlQUElRTMlODMlQjMlRTMlODIlQUYlRTMlODElQUIlRTMlODIlQTIlRTMlODIlQTQlRTMlODIlQjMlRTMlODMlQjMlRTMlODIlOTIlRTMlODElQTQlRTMlODElOTElRTMlODIlOEJVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTMlODIlQTQlRTMlODMlQjMlRTMlODMlQTklRTMlODIlQTQlRTMlODMlQjMlRTUlQkMlOTUlRTclOTQlQTgvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFMyU4MiVBNCVFMyU4MyVCMyVFMyU4MyU4NyVFMyU4MyVCMyVFMyU4MyU4OCVFMyU4MSVBQiVFNSVCRiU5QyVFMyU4MSU5OCVFMyU4MSVBNiVFNyVBRSU4NyVFNiU5RCVBMSVFNiU5QiVCOCVFMyU4MSU4RCVFMyU4MSVBRWJ1bGxldCVFMyU4MSVBRSVFOCU4OSVCMiVFMyU4MiU5MiVFOCU5NiU4NCVFMyU4MSU4RiVFMyU4MSU5OSVFMyU4MiU4Qi9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUUzJTgzJTlFJUUzJTgzJUJDJUUzJTgyJUFCJUUzJTgzJUJDJUU4JUE4JTk4JUU2JUIzJTk1L3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL2N1c3RvbWl6ZS9TY3JhcGJveCVFMyU4MSVBRVN0cmVhbSVFMyU4MyU5QSVFMyU4MyVCQyVFMyU4MiVCOCVFMyU4MSVBNyVFMyU4MSVBRSVFNiU5NiU4NyVFNSVBRCU5NyVFOSU4MSVCOCVFNiU4QSU5RSVFMyU4MiU5MiVFNSU4RiVBRiVFOCU4MyVCRCVFMyU4MSVBQiVFMyU4MSU5OSVFMyU4MiU4QlVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFNyU5NCVCQiVFNSU4MyU4RiVFMyU4MiU5MiVFNCVCOCVBNiVFMyU4MSVCOSVFMyU4MiU4QlVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3BvcHVwbWVudSVFMyU4MSVBRWJ1dHRvbiVFMyU4MiU5MiVFOSU5RCU5RSVFOCVBMSVBOCVFNyVBNCVCQSVFMyU4MSVBQiVFMyU4MSU5OSVFMyU4MiU4Qi9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvUG9wdXBNZW51JUUzJTgyJTkyJUU1JUJFJUI5JUU1JUJBJTk1JUU3JTlBJTg0JUUzJTgxJUFCJUUzJTgyJUEyJUUzJTgyJUE0JUUzJTgyJUIzJUUzJTgzJUIzJUUzJTgxJUFCJUUzJTgxJTk5JUUzJTgyJThCL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTUlOEMlQkElRTUlODglODclRTMlODIlOEElRTclQjclOUElRTMlODElQUUlRTglQUElQTQlRTMlODIlQUYlRTMlODMlQUElRTMlODMlODMlRTMlODIlQUYlRTMlODIlOTIlRTklOTglQjIlRTMlODElOTBVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8ucGFnZS1jb2x1bW4lRTMlODElQUVncmlkX2xheW91dCVFMyU4MiU5MiVFOCVBQSVCRiVFNiU5NSVCNCVFMyU4MSVBNyVFMyU4MSU4RCVFMyU4MiU4QiVFMyU4MiU4OCVFMyU4MSU4NiVFMyU4MSVBQiVFMyU4MSU5OSVFMyU4MiU4QlVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFNyU5NCVCQiVFOSU5RCVBMiVFNSVCOSU4NSVFMyU4MSU4QyVFNSVCQSU4MyVFMyU4MSU4NCVFMyU4MSVBOCVFMyU4MSU4RCVFNyU4NCVBMSVFNSU4QSVCOSVFNSU4QyU5NiVFMyU4MSU5NSVFMyU4MiU4QyVFMyU4MSU5RmluZm9ib3glRTMlODIlOTIlRTYlQjYlODglRTMlODElOTlVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9jb21tb24vbW9ub3NwYWNlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9jb21tb24vcGluLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9tb2JpbGVfUG9wdXBNZW51JUUzJTgxJUFFJUUzJTgzJTlDJUUzJTgyJUJGJUUzJTgzJUIzJUUzJTgyJUI1JUUzJTgyJUE0JUUzJTgyJUJBJUUzJTgyJTkyJUU1JUIwJThGJUUzJTgxJTk1JUUzJTgxJThGJUUzJTgxJTk5JUUzJTgyJThCVXNlckNTUy9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUU1JUJEJTkzJUU2JTk3JUE1JUUzJTgxJUFFJUU0JUJBJTg4JUU1JUFFJTlBJUUzJTgyJTkyJUUzJTgyJUJGJUUzJTgyJUE0JUUzJTgzJUEwJUUzJTgzJUE5JUUzJTgyJUE0JUUzJTgzJUIzJUUzJTgxJUFCJUU1JUI4JUI4JUU2JTk5JTgyJUU4JUExJUE4JUU3JUE0JUJBJUUzJTgxJTk5JUUzJTgyJThCVXNlclNjcmlwdCVFMyU4MSVBRSVFOCVBQSVCRiVFNiU5NSVCNCVFNyU5NCVBOFVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFNSVCRCU5MyVFNiU5NyVBNSVFMyU4MSVBRSVFNCVCQSU4OCVFNSVBRSU5QSVFMyU4MiU5MiVFMyU4MiVCRiVFMyU4MiVBNCVFMyU4MyVBMCVFMyU4MyVBOSVFMyU4MiVBNCVFMyU4MyVCMyVFMyU4MSVBQiVFNSVCOCVCOCVFNiU5OSU4MiVFOCVBMSVBOCVFNyVBNCVCQSVFMyU4MSU5OSVFMyU4MiU4QlVzZXJTY3JpcHQlRTMlODElQUUlRTglQUElQkYlRTYlOTUlQjQlRTclOTQlQThVc2VyQ1NTL2Rpc2FibGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL2NvbW1vbi90ZXh0LWFsaWduLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9jb21tb24vc2VhcmNoLWZvcm0uY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL2NvbW1vbi9jb2RlQmxvY2stZm9udC5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvdGFibGUlRTglQTglOTglRTYlQjMlOTUlRTMlODElQUIlRTYlQTglQUElRTclQjclOUElRTMlODIlOTIlRTUlQkMlOTUlRTMlODElOEZVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTMlODMlOUElRTMlODMlQkMlRTMlODIlQjglRTMlODIlQUIlRTMlODMlQkMlRTMlODMlODklRTMlODElQUUlRTMlODIlQkYlRTMlODIlQTQlRTMlODMlODglRTMlODMlQUIlRTMlODIlOTIyJUU4JUExJThDJUUzJTgxJUFCJUU1JThGJThFJUUzJTgyJTgxJUUzJTgyJThCVXNlckNTUy9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUU3JTk1JUFBJUU1JThGJUI3JUU0JUJCJTk4JUUzJTgxJThEJUU3JUFFJTg3JUU2JTlEJUExJUU2JTlCJUI4JUUzJTgxJThEJUUzJTgxJUFCRm9udEF3ZXNvbWUlRTMlODIlOTIlRTQlQkQlQkYlRTMlODElODZVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9rYWtlcnUlRTMlODElQUUlRTglODMlOEMlRTYlOTklQUYlRTMlODIlOTIlRTclOTklQkQlRTMlODElQUIlRTMlODElOTklRTMlODIlOEJVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9zY3JhcGJveCVFMyU4MSVBRXRpdGxlJUUzJTgyJTkybmF2X2JhciVFMyU4MSVBQiVFNSU5QiVCQSVFNSVBRSU5QSVFMyU4MSU5OSVFMyU4MiU4QnVzZXJjc3Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL2V4cGFuZGFibGUtbWVudSVFMyU4MSVBRSVFOSU5NSVCNyVFMyU4MSU5NSVFMyU4MiU5MiVFNSU4OCU4NyVFMyU4MiU4QSVFOCVBOSVCMCVFMyU4MiU4MSVFMyU4MiU4QlVzZXJDU1MvdGFra2VyLW1lbWV4LmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTclOTQlQkIlRTUlODMlOEYlRTMlODIlOTIlRTUlQjAlOTElRTMlODElOTclRTUlQTQlQTclRTMlODElOEQlRTMlODElOEYlRTMlODElOTklRTMlODIlOEJVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTMlODIlQkYlRTMlODIlQjklRTMlODIlQUYlRTMlODMlQUElRTMlODMlQjMlRTMlODIlQUZWMiVFNyU5NCVBOFVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL21vYmlsZSVFMyU4MSVBN1BhZ2VNZW51JUUzJTgyJTkyJUU1JUI4JUI4JUU2JTk5JTgyJUU4JUExJUE4JUU3JUE0JUJBJUUzJTgxJTk5JUUzJTgyJThCVXNlckNTUy9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvZHJvcGRvd25fbWVudV8oU2NyYXBib3gpXyVFMyU4MSVBRSVFOCU4OSVCMiVFMyU4MiU5MiVFNSVBNCU4OSVFMyU4MSU4OCVFMyU4MiU4QlVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3Rha2tlci1tZW1leCVFMyU4MSVBRWJ1bmRsZSVFNSU4OSU4RENTUy9wcm9qZWN0LmNzcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiYm9keSAqOjpiZWZvcmUge1xuXHQtLWNvZGUtbnVtYmVyLWNvbG9yOiB2YXIoLS1jb2RlLWNvbG9yLCAjMzQyZDljKTtcblx0LyogLS1hY2NlbnQtY29sb3I6IDsgKi9cbn1cbi8qIOOCs+ODvOODieiomOazleOBruihjOeVquWPt+OCkuihqOekuiAtLSDjgqbjgqPjg7Pjg4njgqbluYU3NjhweOS7peS4iuOBp+mBqeeUqCAqL1xuLyog4oaR54Sh5Yq55YyW44GX44GfICovXG4uc2VjdGlvbi10aXRsZSB7XG5cdGNvdW50ZXItcmVzZXQ6IGNvZGVsaW5lO1xufVxuLmNvZGUtYmxvY2sgc3Bhbi5pbmRlbnQgY29kZS5jb2RlLWJvZHkge1xuXHRjb3VudGVyLWluY3JlbWVudDogY29kZWxpbmU7XG5cdG1hcmdpbi1sZWZ0OiAtMS41ZW07XG5cdHBhZGRpbmctbGVmdDogMi4zZW07XG59XG4uY29kZS1ibG9jayBzcGFuLmluZGVudCBjb2RlLmNvZGUtYm9keTo6YmVmb3JlIHsgXG5cdGNvbnRlbnQ6IGNvdW50ZXIoY29kZWxpbmUpOyBcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdHotaW5kZXg6IDEwO1xuXHRtYXJnaW4tbGVmdDogLTIuNGVtOyBcblx0d2lkdGg6IDJlbTtcblx0cGFkZGluZy1yaWdodDogMC4yZW07XG5cdHRleHQtYWxpZ246IHJpZ2h0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuXHRib3JkZXItcmlnaHQ6IHNvbGlkIDFweCAjZmZmO1xuXHRcblx0Lyog4oaT6KGM55Wq5Y+344Gu6Imy44Gu5oyH5a6a44Gv44GT44GTICovXG5cdGNvbG9yOiB2YXIoLS1jb2RlLW51bWJlci1jb2xvcik7XG59XG5cbi8qIOOCq+ODvOOCveODq+ihjOOBruihjOeVquWPt+OCkua/g+OBj+ihqOekuuOBmeOCiyAqL1xuLmNvZGUtYmxvY2sgc3Bhbi5pbmRlbnQgY29kZS5jb2RlLWJvZHk6OmJlZm9yZSB7XG5cdG9wYWNpdHk6IC41O1xufVxuLmN1cnNvci1saW5lIC5jb2RlLWJsb2NrIHNwYW4uaW5kZW50IGNvZGUuY29kZS1ib2R5OjpiZWZvcmUge1xuXHRvcGFjaXR5OiAxO1xuXHRmb250LXdlaWdodDogYm9sZGVyO1xuXHRcblx0Lyog4oaT44Kr44O844K944Or6KGM44Gu6IOM5pmv6Imy44Gu6Imy44Gv44GT44GTICovXG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWFjY2VudC1jb2xvcik7XG59XG4iLCAiLm5hdmJhci1mb3JtIC5kcm9wZG93bi5vcGVuIC5kcm9wZG93bi1tZW51IHtcbiAgbWluLXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTMwcHgpICFpbXBvcnRhbnQ7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59IiwgIi5wYWdlLWxpc3QtaXRlbS5waW4gKyAucGFnZS1saXN0LWl0ZW06bm90KC5waW4pIHtcbiAgZ3JpZC1jb2x1bW4tc3RhcnQ6IDE7XG59IiwgIi8qIOWklumDqOODquODs+OCr+OBq2ljb27jgpLjgaTjgZHjgosgKi8gIFxuLmxpbmUgc3Bhbjpub3QoLm1vZGFsLWltYWdlKTpub3QoLnBvaW50aW5nLWRldmljZS1tYXApID4gIGEubGluazpub3QoLmljb24pOm5vdChbaHJlZl49XCJodHRwczovL3NjcmFwYm94LmlvXCJdKTo6YWZ0ZXIge1xuICAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBGcmVlJywgJ0ZvbnQgQXdlc29tZSA1IEJyYW5kcyc7XG4gICBmb250LXdlaWdodDogOTAwO1xuICAgZm9udC1zaXplOiAwLjhyZW07XG4gICBjb250ZW50OiAnIFxcZjM1ZCc7XG4gICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4iLCAiLmxpbmUgLmRlY28tXFwuIHtcbiAgZm9udC1zaXplOiAuOGVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogLTAuNWVtO1xufVxuLmxpbmU6bm90KC5jdXJzb3ItbGluZSkgLmRlY28tXFwuIGE6aXMoLnBhZ2UtbGluazpub3QoLmljb24pLCAubGluaykgc3Bhbjpub3QoLmVtcHR5LWNoYXItaW5kZXgpICsgc3BhbiArIHNwYW4gfiBzcGFuIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMDtcbiAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7XG59XG4ubGluZTpub3QoLmN1cnNvci1saW5lKSAuZGVjby1cXC4gLnBhZ2UtbGluazpub3QoLmljb24pIHNwYW4uZW1wdHktY2hhci1pbmRleCB+IHNwYW4uY2hhci1pbmRleCB7XG4gIGRpc3BsYXk6IGluaGVyaXQ7XG4gIHdpZHRoOiBpbmhlcml0O1xuICB0ZXh0LWluZGVudDogaW5oZXJpdDtcbn1cblxuLmxpbmU6bm90KC5jdXJzb3ItbGluZSkgLmRlY28tXFwuIGEucGFnZS1saW5rOm5vdCguaWNvbikgc3Bhbi5lbXB0eS1jaGFyLWluZGV4ICsgc3Bhbjo6YmVmb3JlIHtcbiAgY29udGVudDogXCIjXCI7XG59XG5cbi5saW5lIC5kZWNvLVxcLiA6aXMoLnBhZ2UtbGluazpub3QoLmljb24pLCAubGluayk6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWluLXdpZHRoOiAxLjE1ZW07XG4gIHBhZGRpbmctbGVmdDogMXB4O1xuICAvKiBwYWRkaW5nOiAwIDFweDsgKi9cbiAgZm9udC1mYW1pbHk6IFwiRm9udCBBd2Vzb21lIDUgRnJlZVwiLFwiRm9udCBBd2Vzb21lIDUgQnJhbmRzXCI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgY29udGVudDogXCJcXGYwMmRcIjtcbn1cblxuLyog5pac5L2T44KS5Y+W44KK5raI44GZICovXG4ubGluZSAuZGVjby1cXC4uZGVjby1cXC8ge1xuICBmb250LXN0eWxlOiBpbml0aWFsO1xufVxuLmxpbmUgLmRlY28tXFwuLmRlY28tXFwvIDppcygucGFnZS1saW5rOm5vdCguaWNvbiksIC5saW5rKTo6YmVmb3JlIHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29udGVudDogXCJcXGYxNWNcIjtcbn0iLCAiZGl2LmxpbmUgc3Bhbjpub3QoLm1vZGFsLWltYWdlKTpub3QoLnBvaW50aW5nLWRldmljZS1tYXApID4gYS5saW5rOm5vdCguaWNvbik6aXMoXG4gIFtocmVmJD1cIi5wZGZcIl0sXG4gIFtocmVmXj1cImh0dHBzOi8vdHdpdHRlci5jb21cIl0sXG4gIFtocmVmXj1cImh0dHBzOi8vZ2l0aHViLmNvbVwiXSxcbiAgW2hyZWZePVwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tXCJdLFxuICBbaHJlZl49XCJodHRwczovL2dpc3QuZ2l0aHViLmNvbVwiXSxcbiAgW2hyZWZePVwiaHR0cHM6Ly9qYS53aWtpcGVkaWEub3JnXCJdLFxuICBbaHJlZl49XCJodHRwczovL2VuLndpa2lwZWRpYS5vcmdcIl1cbik6OmFmdGVyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5saW5lIHNwYW46bm90KC5kZWNvLVxcLikgPiBzcGFuID4gYS5saW5rOmlzKFxuICBbaHJlZiQ9XCIucGRmXCJdLFxuICBbaHJlZl49XCJodHRwczovL2dpdGh1Yi5jb21cIl0sXG4gIFtocmVmXj1cImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbVwiXSxcbiAgW2hyZWZePVwiaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb21cIl0sXG4gIFtocmVmXj1cImh0dHBzOi8vamEud2lraXBlZGlhLm9yZ1wiXSxcbiAgW2hyZWZePVwiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnXCJdXG4pOjpiZWZvcmUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxZW07IC8qMTZweDsqL1xuICBoZWlnaHQ6IDFlbTsgLyoxNnB4OyovXG4gIHZlcnRpY2FsLWFsaWduOiAtMXB4Oy8qLTNweDsqL1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgZm9udC1mYW1pbHk6XCJGb250IEF3ZXNvbWUgNSBGcmVlXCIsXCJGb250IEF3ZXNvbWUgNSBCcmFuZHNcIjtcbiAgLyogbWFyZ2luLXJpZ2h0OiAycHg7ICovXG59XG4ubGluZSBhLmxpbms6bm90KC5pY29uKVtocmVmJD1cIi5wZGZcIl06OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdcXGYxYzEnO1xuICBmb250LXdlaWdodDogNDAwOyAvKiB1c2UgUmVndWxhciBTdHlsZSAqL1xuICBtYXJnaW4tcmlnaHQ6IDFweDtcbn1cbjppcygubGluZSwgLmxpbmUgLmRlY28pIGEubGluazppcyhcbiAgW2hyZWZePVwiaHR0cHM6Ly9naXRodWIuY29tXCJdLFxuICBbaHJlZl49XCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb21cIl0sXG4gIFtocmVmXj1cImh0dHBzOi8vZ2lzdC5naXRodWIuY29tXCJdXG4pOjpiZWZvcmUge1xuICBjb250ZW50OiAnXFxmMDliJztcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbWFyZ2luLXJpZ2h0OiAxcHg7XG59XG46aXMoLmxpbmUsIC5saW5lIC5kZWNvKSBhLmxpbms6aXMoXG4gIFtocmVmXj1cImh0dHBzOi8vamEud2lraXBlZGlhLm9yZ1wiXSxcbiAgW2hyZWZePVwiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnXCJdXG4pOjpiZWZvcmUge1xuICBjb250ZW50OiAnXFxmMjY2JztcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbWFyZ2luLXJpZ2h0OiAzcHg7XG59XG4ubGluZSAuZGVjby1cXC4gYS5saW5rOmlzKFxuICBbaHJlZl49XCJodHRwczovL2phLndpa2lwZWRpYS5vcmdcIl0sXG4gIFtocmVmXj1cImh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZ1wiXVxuKSBzcGFuLmNoYXItaW5kZXgge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAwO1xuICB0ZXh0LWluZGVudDogLTk5OTlweDtcbn1cbi5saW5lIC5kZWNvLVxcLiBhLmxpbms6aXMoXG4gIFtocmVmXj1cImh0dHBzOi8vamEud2lraXBlZGlhLm9yZ1wiXSxcbiAgW2hyZWZePVwiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnXCJdXG4pIHNwYW4uY2hhci1pbmRleDpudGgtb2YtdHlwZSgzMCkgfiBzcGFuLmNoYXItaW5kZXgge1xuICBkaXNwbGF5OiBpbmhlcml0O1xuICB3aWR0aDogaW5oZXJpdDtcbiAgdGV4dC1pbmRlbnQ6IGluaGVyaXQ7XG59XG4gICAgIiwgIi5kZWNvLVxcXCIge1xuICBib3JkZXItcmFkaXVzOiAuMmVtO1xuICBwYWRkaW5nOiAwIC40ZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTI4LDEyOCwxMjgsMC4xKTsgXG4gIGZvbnQtc2l6ZTogOTUlO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG4uZGVjby1cXFwiOjpiZWZvcmUgeyBcbiAgY29sb3I6ICNhMGEwYTA7XG4gIGZvbnQtc2l6ZTogODUlO1xuICBmb250LWZhbWlseTogJ0ZvbnQgQXdlc29tZSA1IEZyZWUnO1xuICBjb250ZW50OiAnXFxmMTBkJztcbiAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgdmVydGljYWwtYWxpZ246IHN1cGVyOyBcbn0iLCAiLmxpbmUgLmluZGVudC1tYXJrIC5kb3Qge1xuICBvcGFjaXR5OiAwLjA7XG59XG4ubGluZSAuaW5kZW50LW1hcmsgLmMtMCArIC5kb3Qge1xuICBvcGFjaXR5OiAxLjA7XG59XG4ubGluZSAuaW5kZW50LW1hcmsgLmMtMSArIC5kb3Qge1xuICBvcGFjaXR5OiAwLjg7XG59XG4ubGluZSAuaW5kZW50LW1hcmsgLmMtMiArIC5kb3Qge1xuICBvcGFjaXR5OiAwLjY7XG59XG4ubGluZSAuaW5kZW50LW1hcmsgLmMtMyArIC5kb3Qge1xuICBvcGFjaXR5OiAwLjQ7XG59XG4ubGluZSAuaW5kZW50LW1hcmsgLmMtNCArIC5kb3Qge1xuICBvcGFjaXR5OiAwLjI7XG59IiwgIi8qIOS6jOmHjeaLrOW8p+OBq+OCiOOCi+W8t+iqv+OCkuODnuODvOOCq+ODvOOBo+OBveOBj+OBmeOCiyAqL1xuLmxpbmUgc3Ryb25nOm5vdChbY2xhc3NdKSB7IFxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQgNjAlLCByZ2JhKDE3MSwgMjU1LCA3OSwgLjYpIDYwJSwgcmdiYSgxNzEsIDI1NSwgNzksIC42KSAxMDAlKTtcbn0iLCAiLnRpbWUtcmFuZ2UgLmxpbmVzIHtcbiAgdXNlci1zZWxlY3Q6IHVuc2V0O1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiB1bnNldDtcbn0iLCAiLyog44Oe44OI44Oq44Kv44K56KiY5rOVICovXG4ubGluZTpub3QoLmN1cnNvci1saW5lKSAuZGVjby1cXHwgeyBkaXNwbGF5OiBpbmxpbmUtZmxleCB9XG4ubGluZSAuZGVjby1cXHwgaW1nLmltYWdlIHsgb2JqZWN0LWZpdDogY29udGFpbjsgbWFyZ2luOiAwIH1cblxuLyog5aSq5a2X6KiY5rOV44Go57WE44G/5ZCI44KP44Gb44Gm5YiX5pWw44KS5aSJ44GI44KLICovXG4ubGluZSBbY2xhc3NePVwibGV2ZWxcIl0gLmRlY28tXFx8IHsgZmxleC13cmFwOiB3cmFwIH1cbi5saW5lIC5sZXZlbC0xIC5kZWNvLVxcfCA+IHNwYW4geyB3aWR0aDogY2FsYygxMDAlLzEpIH1cbi5saW5lIC5sZXZlbC0yIC5kZWNvLVxcfCA+IHNwYW4geyB3aWR0aDogY2FsYygxMDAlLzIpIH1cbi5saW5lIC5sZXZlbC0zIC5kZWNvLVxcfCA+IHNwYW4geyB3aWR0aDogY2FsYygxMDAlLzMpIH1cbi5saW5lIC5sZXZlbC00IC5kZWNvLVxcfCA+IHNwYW4geyB3aWR0aDogY2FsYygxMDAlLzQpIH1cbi5saW5lIC5sZXZlbC01IC5kZWNvLVxcfCA+IHNwYW4geyB3aWR0aDogY2FsYygxMDAlLzUpIH1cblxuLmxpbmUgW2NsYXNzXj1cImxldmVsXCJdIC5kZWNvLVxcfCBpbWcuaW1hZ2UgeyBvYmplY3QtZml0OiBjb3Zlcjsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJSB9XG5cbi8qIOS4puOBueOBn+eUu+WDj+OBrumWk+OBq+OCueOCreODnuOBjOassuOBl+OBhOWgtOWQiOOBr+OBk+OBrjLooYzjgpLov73liqDjg7vjgbTjgaPjgaHjgormlbfjgY3oqbDjgoHjgZ/jgYTloLTlkIjjga/jgZPjga4y6KGM44Gv5LiN6KaBICovXG4ubGluZSAuZGVjby1cXHwgPiBzcGFuLCAubGluZSBbY2xhc3NePVwibGV2ZWxcIl0gLmRlY28tXFx8ID4gc3BhbiB7IG92ZXJmbG93OiBoaWRkZW4gfVxuLmxpbmUgLmRlY28tXFx8IGltZy5pbWFnZSwgLmxpbmUgW2NsYXNzXj1cImxldmVsXCJdIC5kZWNvLVxcfCBpbWcuaW1hZ2UgeyBtYXJnaW46IC4yZW0gfSIsICIuc2VsZWN0aW9ucyAucG9wdXAtbWVudSAuYnV0dG9uLWNvbnRhaW5lciAuYnV0dG9uOmVtcHR5IHtcbiAgZGlzcGxheTogbm9uZTtcbn0iLCAiLyog5qiZ5rqW44GudGV4dOOCkuOBmeOBueOBpua2iOOBmSAqL1xuLnN0cm9uZy1idXR0b24gPiBzdHJvbmcsIC5pdGFsaWMtYnV0dG9uID4gaSwgLnN0cmlrZS1idXR0b24gPiBzdHJpa2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAwO1xuICB0ZXh0LWluZGVudDogLTk5OTlweDtcbn1cbi8qIOOBk+OCjOS7peS4iuips+e0sOW6puOCkuWJiuOCi+OBqOOAgeS7luOBrnJ1bGXjgavkuIrmm7jjgY3jgZXjgozjgabjgZfjgb7jgYYgKi9cbi5zZWxlY3Rpb25zIC5wb3B1cC1tZW51IC5idXR0b24tY29udGFpbmVyIC5idXR0b246aXMoLmxpbmstYnV0dG9uLCAubmV3LXBhZ2UtYnV0dG9uLCAuY29weS1wbGFpbi1idXR0b24pIHtcbiAgZm9udC1zaXplOiAwO1xufVxuLyogYnV0dG9u44GrRm9udEF3ZXNvbWXjgpLkvb/jgYZcbiAqXG4gKiBgLnNlbGVjdGlvbnNg44Gn5YWl5Yqb6KOc5a6M44GucG9wdXAgbWVudeOBq+OBr+mBqeeUqOOBl+OBquOBhOOCiOOBhuOBq+OBmeOCi1xuICovXG4uc2VsZWN0aW9ucyAucG9wdXAtbWVudSAuYnV0dG9uLWNvbnRhaW5lciAuYnV0dG9uIHtcbiAgZm9udC1mYW1pbHk6IFwiT3BlbiBTYW5zXCIsIEhlbHZldGljYSwgQXJpYWwsIFwiSGlyYWdpbm8gU2Fuc1wiLCBzYW5zLXNlcmlmLCBcIkZvbnQgQXdlc29tZSA1IEZyZWVcIiwgXCJGb250IEF3ZXNvbWUgNSBCcmFuZHNcIjtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4vKiBpY29u44KS6Kit5a6a44GZ44KLICovXG4ubGluay1idXR0b246OmFmdGVyIHtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjb250ZW50OiAnXFxmMGMxJ1xufVxuLnN0cm9uZy1idXR0b246OmFmdGVyIHtcbiAgY29udGVudDogJ1xcZjAzMidcbn1cbi5pdGFsaWMtYnV0dG9uOjphZnRlciB7XG4gIGNvbnRlbnQ6ICdcXGYwMzMnXG59XG4uc3RyaWtlLWJ1dHRvbjo6YWZ0ZXIge1xuICBjb250ZW50OiAnXFxmMGNjJ1xufVxuLmNvcHktcGxhaW4tYnV0dG9uOjphZnRlciB7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgY29udGVudDogJ1xcZjBjNScgXG59XG4ubmV3LXBhZ2UtYnV0dG9uOjphZnRlciB7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgY29udGVudDogJ1xcZjBjNCcgXG59XG4iLCAiLmxpbmUgYS5pY29uW2hyZWYkPVwiL2hyXCJdIHsgXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufSIsICIucGFnZS1jb2x1bW4ge1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLXBhZ2UtY29sdW1uLWNvbHVtbnMsIDQ2cHggbWlubWF4KDIwMHB4LCA5NjBweCkgbWluLWNvbnRlbnQpO1xuICBncmlkLXRlbXBsYXRlLWFyZWFzOiB2YXIoLS1wYWdlLWNvbHVtbi1hcmVhcywgXCJzcGFjZXIgcGFnZSBtZW51XCIpO1xufVxuXG5AbWVkaWEoOTkxcHggPCB3aWR0aCkge1xuICAucGFnZS1jb2x1bW46aGFzKC5wYWdlLXNpZGViYXIpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLXBhZ2UtY29sdW1uLWNvbHVtbnMtc2lkZWJhciwgbWlubWF4KDIwMHB4LCAzZnIpIG1pbm1heCgxNzBweCwgMWZyKSBtaW4tY29udGVudCk7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogdmFyKC0tcGFnZS1jb2x1bW4tYXJlYXMtc2lkZWJhciwgXCJwYWdlIHNpZGViYXIgbWVudVwiKTtcbiAgfVxufVxuXG5AbWVkaWEobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MXB4KSB7XG4gIC5wYWdlLWNvbHVtbiB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1wYWdlLWNvbHVtbi1jb2x1bW5zLTc2OCwgbWlubWF4KDIwMHB4LCA5NjBweCkgbWluLWNvbnRlbnQpO1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6IHZhcigtLXBhZ2UtY29sdW1uLWFyZWFzLTc2OCwgXCJwYWdlIG1lbnVcIik7XG4gIH1cbn1cblxuQG1lZGlhKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLnBhZ2UtY29sdW1uIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tcGFnZS1jb2x1bW4tY29sdW1ucy03NjcsIDFmcik7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogdmFyKC0tcGFnZS1jb2x1bW4tYXJlYXMtNzY3LCBcInBhZ2VcIik7XG4gIH1cbn0iLCAiQGltcG9ydCBcIi4uLy5wYWdlLWNvbHVtbuOBrmdyaWRfbGF5b3V044KS6Kq/5pW044Gn44GN44KL44KI44GG44Gr44GZ44KLVXNlckNTUy9zdHlsZS5jc3NcIjtcblxuLnBhZ2UtY29sdW1uOm5vdCg6aGFzKC5kZWZpbml0aW9uLXRlcm0pKSB7XG4gIC0tcGFnZS1jb2x1bW4tY29sdW1ucy1zaWRlYmFyOiBtaW5tYXgoMjAwcHgsIDk2MHB4KSBtaW4tY29udGVudDtcbiAgLS1wYWdlLWNvbHVtbi1hcmVhcy1zaWRlYmFyOiBcInBhZ2UgbWVudVwiO1xufVxuLnBhZ2Utc2lkZWJhcjpub3QoOmhhcyguZGVmaW5pdGlvbi10ZXJtKSkge1xuICBkaXNwbGF5OiBub25lO1xufVxuIiwgIi5kZWNvLVxcIyB7XG4gIGZvbnQtZmFtaWx5OiBDaWNhLE1lbmxvLE1vbmFjbyxDb25zb2xhcyxcIkNvdXJpZXIgTmV3XCIsbW9ub3NwYWNlO1xufSIsICIuZ3JpZCBsaS5wYWdlLWxpc3QtaXRlbSBhIC5waW4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbn1cbi5ncmlkIGxpLnBhZ2UtbGlzdC1pdGVtIGEgLnBpbjo6YWZ0ZXIge1xuICBjb250ZW50OiAnXFxmMDhkJztcbiAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBGcmVlJztcbiAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBjb2xvcjogIzFmOTE1ZTsgYm90dG9tOiAwO1xufSIsICJAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MDBweCkge1xuICBodG1sOmlzKFtkYXRhLW9zKj1hbmRyb2lkXSwgW2RhdGEtb3MqPWlvc10pIC5wb3B1cC1tZW51IC5idXR0b24tY29udGFpbmVyIC5idXR0b24sXG4gICAgLnBvcHVwLW1lbnUgLmJ1dHRvbi1jb250YWluZXIgLmJ1dHRvbjppcyhbZGF0YS1vcyo9YW5kcm9pZF0sIFtkYXRhLW9zKj1pb3NdKSB7XG4gICAgbWluLXdpZHRoOiAzZW07XG4gIH1cbn1cbiIsICIucGFnZS1jb2x1bW4ge1xuICAtLXBhZ2UtY29sdW1uLWNvbHVtbnM6IDEwMHB4IG1pbm1heCgyMDBweCwgOTYwcHgpIG1pbi1jb250ZW50IDFmcjtcbiAgLS1wYWdlLWNvbHVtbi1hcmVhczogXCJzcGFjZXIgcGFnZSBtZW51IHNwYWNlcjJcIjtcbiAgLS1wYWdlLWNvbHVtbi1jb2x1bW5zLXNpZGViYXI6IDEwMHB4IG1pbm1heCgyMDBweCwgM2ZyKSBtaW5tYXgoMTcwcHgsIDFmcikgbWluLWNvbnRlbnQ7XG4gIC0tcGFnZS1jb2x1bW4tYXJlYXMtc2lkZWJhcjogXCJzcGFjZXIgcGFnZSBzaWRlYmFyIG1lbnVcIjtcbiAgLS1wYWdlLWNvbHVtbi1jb2x1bW5zLTc2ODogdmFyKC0tcGFnZS1jb2x1bW4tY29sdW1ucyk7XG4gIC0tcGFnZS1jb2x1bW4tYXJlYXMtNzY4OiB2YXIoLS1wYWdlLWNvbHVtbi1hcmVhcyk7XG4gIC0tcGFnZS1jb2x1bW4tY29sdW1ucy03Njc6IG1pbm1heCg2MHB4LCBjYWxjKDEwMCUgLyA3NjcgKiAxMDApKSAxZnI7XG4gIC0tcGFnZS1jb2x1bW4tYXJlYXMtNzY3OiBcInNwYWNlciBwYWdlXCI7XG59XG5AY29udGFpbmVyICh3aWR0aCA+IDEyMzZweCkgeyAvKiAuY29udGFpbmVy44Gu5Lit6Lqr44Gu6ZW344GV44GMYHdpZHRoYOOBq+OBquOCiyAqL1xuICAucGFnZS1jb2x1bW4ge1xuICAgIC0tcGFnZS1jb2x1bW4tY29sdW1uczogbWlubWF4KDIwMHB4LCA5NjBweCkgbWluLWNvbnRlbnQ7XG4gICAgLS1wYWdlLWNvbHVtbi1hcmVhczogXCJwYWdlIG1lbnVcIjtcbiAgfVxufSIsICIucGFnZS1jb2x1bW46bm90KDpoYXMoLmRlZmluaXRpb24tdGVybSkpIHtcbiAgLS1wYWdlLWNvbHVtbi1jb2x1bW5zLXNpZGViYXI6IHZhcigtLXBhZ2UtY29sdW1uLWNvbHVtbnMpO1xuICAtLXBhZ2UtY29sdW1uLWFyZWFzLXNpZGViYXI6IHZhcigtLXBhZ2UtY29sdW1uLWFyZWFzKTtcbn1cbi5wYWdlLXNpZGViYXI6bm90KDpoYXMoLmRlZmluaXRpb24tdGVybSkpIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbiIsICIvKiDkuK3lpK7lr4TjgZsgKi9cbi8qLmRlY28tXFx8IHsgcG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogMTAwJTsgdGV4dC1hbGlnbjogY2VudGVyIH0gKi9cbi8qIOWPs+WvhOOBmyAqL1xuLmRlY28tXFw+IHsgcG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogMTAwJTsgdGV4dC1hbGlnbjogcmlnaHQgfSBcbi8qIOW3puWvhOOBmyAqL1xuLyouZGVjby1cXDwgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAxMDAlOyB0ZXh0LWFsaWduOiBsZWZ0IH0qLyIsICIuc2VhcmNoLWZvcm0gLmZvcm0tZ3JvdXAgaW5wdXQ6Zm9jdXMge1xuICBjb2xvcjogdmFyKC0tcGFnZS10ZXh0LWNvbG9yKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2VhcmNoLWZvcm0tYmcsIHJnYmEoMjU1LDI1NSwyNTUsMC4xNSkpO1xufSIsICIubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwiY3NzXCJdIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1xcZTc0OSc7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cImh0bWxcIl0gYTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnXFxmMTNiJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwiamF2YXNjcmlwdFwiXSBhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXGU3NGYnO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJ0eXBlc2NyaXB0XCJdIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1xcZTYyOCc7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cImNwcFwiXSBhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXGU2MWQnO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJjXCJdIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1xcZTYxZSc7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cImNzXCJdIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1xcZTdiYyc7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cInB5dGhvblwiXSBhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXGU2MDYnO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJ0b21sXCJdIGE6OmJlZm9yZSxcbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJqc29uXCJdIGE6OmJlZm9yZSxcbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJ5YW1sXCJdIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1xcZTYwYic7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cInhtbFwiXSBhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXGZhYmYnO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJnaXRpZ25vcmVcIl0gYTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnXFxmMDEzJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwibWFya2Rvd25cIl0gYTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnXFxlNzNlJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwidHh0XCJdIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1xcZTYxMic7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cImNzdlwiXSBhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXGYwY2UnO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJmaXNoXCJdIGE6OmJlZm9yZSxcbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJiYXNoXCJdIGE6OmJlZm9yZSxcbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJ6c2hcIl0gYTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnXFxmNDg5JztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwiZG9zXCJdIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1xcZTYyOSc7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ubGluZSBjb2RlLCAubGluZSBzcGFuLmNvZGUtYmxvY2sge1xuXHRmb250LWZhbWlseTogQ2ljYSxNZW5sbyxNb25hY28sQ29uc29sYXMsXCJDb3VyaWVyIE5ld1wiLG1vbm9zcGFjZTtcblx0Zm9udC1zaXplOiAxMDUlO1xufVxuIiwgIi50YWJsZS1ibG9jayAuY2VsbCB7XG4gIGJvcmRlcjogc29saWQgMXB4IHZhcigtLXRlbG9tZXJlLWJvcmRlciwgIzgwOGI4Yyk7XG59IiwgImxpLnBhZ2UtbGlzdC1pdGVtLmdyaWQtc3R5bGUtaXRlbSBkaXYudGl0bGUge1xuICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG59XG4iLCAiLmxpbmUubnVtYmVyLWxpc3QgLmRvdCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTtcbn1cbi5saW5lLm51bWJlci1saXN0IC5kb3Q6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgRnJlZSc7XG4gIHRvcDogLTExcHg7XG4gIGNvbnRlbnQ6ICdcXGYyOTInOyAvKiAjICovXG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgY29sb3I6ICNjOWM5Yzk7XG4gIG9wYWNpdHk6IDAuMDtcbn1cbi5saW5lLm51bWJlci1saXN0IC5jLTAgKyAuZG90OjpiZWZvcmUge1xuICBvcGFjaXR5OiAxLjA7XG59XG4ubGluZS5udW1iZXItbGlzdCAuYy0xICsgLmRvdDo6YmVmb3JlIHtcbiAgb3BhY2l0eTogMC44O1xufVxuLmxpbmUubnVtYmVyLWxpc3QgLmMtMiArIC5kb3Q6OmJlZm9yZSB7XG4gIG9wYWNpdHk6IDAuNjtcbn1cbi5saW5lLm51bWJlci1saXN0IC5jLTMgKyAuZG90OjpiZWZvcmUge1xuICBvcGFjaXR5OiAwLjQ7XG59XG4ubGluZS5udW1iZXItbGlzdCAuYy00ICsgLmRvdDo6YmVmb3JlIHtcbiAgb3BhY2l0eTogMC4yO1xufVxuIiwgImltZ1tzcmNePVwiaHR0cHM6Ly9pLmtha2VydS5hcHBcIl0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn0iLCAiQG1lZGlhIHNjcmVlbiB7XG4gIC5xdWljay1sYXVuY2ggLmxlZnQtYm94IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAtMnB4O1xuICAgIGxlZnQ6IDQwcHg7IC8qIGJyYW5kLWljb27jga7luYXjgavlv5zjgZjjgablpInjgYjjgabjgY/jgaDjgZXjgYQgKi9cbiAgICB6LWluZGV4OiAxMDAwO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MXB4KSB7XG4gIC5xdWljay1sYXVuY2ggLmxlZnQtYm94IHtcbiAgICBsZWZ0OiA1NXB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5OTJweCkgYW5kIChtYXgtd2lkdGg6IDEyNjBweCkge1xuICAucXVpY2stbGF1bmNoIC5sZWZ0LWJveCB7XG4gICAgbGVmdDogNzBweDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI2MXB4KSB7XG4gIC5xdWljay1sYXVuY2ggLmxlZnQtYm94IHtcbiAgICBsZWZ0OiBjYWxjKCgxMDAlIC0gMTI4MHB4KS8yICsgODBweCk7XG4gIH1cbn0iLCAiLmV4cGFuZGFibGUtbWVudSB7XG4gIG1heC13aWR0aDogY2FsYygxMDAlIC0gMjkxcHgpOyAvKiAyNTEgKyA0MCAqL1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5OTFweCkge1xuICAuZXhwYW5kYWJsZS1tZW51IHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDMwNnB4KTsgLyogMjUxICsgNDAgKyAxNSAqL1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5OTJweCkgYW5kIChtYXgtd2lkdGg6IDEyNjBweCkge1xuICAuZXhwYW5kYWJsZS1tZW51IHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDMyMXB4KTsgLyogMjUxICsgNDAgKyAzMCAqL1xuICB9XG59XG4iLCAiLmRlY28tXFwqIGltZy5pbWFnZSB7XG4gIG1heC1oZWlnaHQ6IDYwMHB4O1xufSIsICIucGFnZS1saW5rW2hyZWYqPVwiLkBcIl06OmJlZm9yZXtcbiAgY29udGVudDogXCLinIVcIlxufVxuLnBhZ2UtbGlua1tocmVmKj1cIkAyMFwiXTpub3QoW2hyZWYqPVwiLkBcIl0pOjpiZWZvcmV7XG4gIGNvbnRlbnQ6IFwi4qycXCJcbn0iLCAiW2RhdGEtb3M9XCJhbmRyb2lkXCJdIHtcbiAgLnBhZ2UtY29sdW1uIHtcbiAgICBkaXYucGFnZS1tZW51IHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gICAgICByaWdodDogMDtcbiAgICAgIFxuICAgICAgLmRyb3Bkb3duLW1lbnUtdG9wLCAuZHJvcGRvd24tbWVudS1yaWdodCB7XG4gICAgICAgIHRvcDogNDZweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCAiLmRyb3Bkb3duLW1lbnUsXG4uZHJhd2VyIC5kcmF3ZXItbWVudXtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZHJvcGRvd24tbWVudS1iZywgI2ZmZik7XG4gIGJvcmRlcjogdmFyKC0tZHJvcGRvd24tbWVudS1ib3JkZXIsIHVuc2V0KTtcbn1cbi5kcm9wZG93bi1tZW51ID4gbGkgPiBhLFxuLmRyYXdlciAuZHJhd2VyLW1lbnUgdWwgbGkgYSxcbi5wYWdlLW1lbnUgdWwgPiBsaSA+IGRpdiB7XG4gIGNvbG9yOiB2YXIoLS1kcm9wZG93bi1tZW51LXRleHQtY29sb3IsICMzMzMpO1xufVxuXG4uZHJvcGRvd24tbWVudT5saT5hOmFjdGl2ZSxcbi5kcmF3ZXItbWVudSB1bCBsaSBhOmFjdGl2ZSxcbltkYXRhLWhvdmVyLXZpc2libGVdIDppcyguZHJvcGRvd24tbWVudSwuZHJhd2VyLW1lbnUpXG4gID4gbGkgPiA6aXMoYTpob3ZlciwgYTpmb2N1cykge1xuICBjb2xvcjogdmFyKC0tZHJvcGRvd24tbWVudS10ZXh0LWhvdmVyLWNvbG9yLCAjMjYyNjI2KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIHZhcigtLWRyb3Bkb3duLW1lbnUtdGV4dC1ob3Zlci1iZywgI2Y1ZjVmNSk7XG59XG5cbjppcyguZHJvcGRvd24tbWVudSwgLmRyYXdlci1tZW51KSAuZGl2aWRlciB7XG4gIGNvbG9yOiB2YXIoLS1kcm9wZG93bi1tZW51LWRpdmlkZXItY29sb3IsICNlNWU1ZTUpO1xufSIsICJAaW1wb3J0IFwiLi4vY29tbW9uL2NvbW1vbi5jc3NcIjtcbkBpbXBvcnQgJy4uL2NvbW1vbi9tb25vc3BhY2UuY3NzJztcbkBpbXBvcnQgJy4uL2NvbW1vbi9waW4uY3NzJztcbkBpbXBvcnQgXCIuLi9jb21tb24vcGVyc29uYWwuY3NzXCI7XG5AaW1wb3J0ICcuLi9jb21tb24vdGV4dC1hbGlnbi5jc3MnO1xuQGltcG9ydCAnLi4vY29tbW9uL3NlYXJjaC1mb3JtLmNzcyc7XG5AaW1wb3J0ICcuLi9jb21tb24vY29kZUJsb2NrLWZvbnQuY3NzJztcbkBpbXBvcnQgXCIuLi90YWJsZeiomOazleOBq+aoque3muOCkuW8leOBj1VzZXJDU1Mvc3R5bGUuY3NzXCI7XG5AaW1wb3J0IFwiLi4v44Oa44O844K444Kr44O844OJ44Gu44K/44Kk44OI44Or44KSMuihjOOBq+WPjuOCgeOCi1VzZXJDU1Mvc3R5bGUuY3NzXCI7XG5AaW1wb3J0IFwiLi4v55Wq5Y+35LuY44GN566H5p2h5pu444GN44GrRm9udEF3ZXNvbWXjgpLkvb/jgYZVc2VyQ1NTL3N0eWxlLmNzc1wiO1xuQGltcG9ydCBcIi4uL2tha2VydeOBruiDjOaZr+OCkueZveOBq+OBmeOCi1VzZXJDU1Mvc3R5bGUuY3NzXCI7XG5AaW1wb3J0IFwiLi4vc2NyYXBib3jjga50aXRsZeOCkm5hdl9iYXLjgavlm7rlrprjgZnjgot1c2VyY3NzL3N0eWxlLmNzc1wiO1xuQGltcG9ydCBcIi4uL2V4cGFuZGFibGUtbWVudeOBrumVt+OBleOCkuWIh+OCiuipsOOCgeOCi1VzZXJDU1MvdGFra2VyLW1lbWV4LmNzc1wiO1xuQGltcG9ydCBcIi4uL+eUu+WDj+OCkuWwkeOBl+Wkp+OBjeOBj+OBmeOCi1VzZXJDU1Mvc3R5bGUuY3NzXCI7XG5AaW1wb3J0IFwiLi4v44K/44K544Kv44Oq44Oz44KvVjLnlKhVc2VyQ1NTL3N0eWxlLmNzc1wiO1xuQGltcG9ydCBcIi4uL21vYmlsZeOBp1BhZ2VNZW5144KS5bi45pmC6KGo56S644GZ44KLVXNlckNTUy9zdHlsZS5jc3NcIjtcbkBpbXBvcnQgXCIuLi9kcm9wZG93bl9tZW51XyhTY3JhcGJveClf44Gu6Imy44KS5aSJ44GI44KLVXNlckNTUy9zdHlsZS5jc3NcIjtcbiBcbmJvZHkge1xuICAtLWRyb3Bkb3duLW1lbnUtYmc6ICMzNzNiNDQ7XG4gIC0tZHJvcGRvd24tbWVudS1ib3JkZXI6IDFweCBzb2xpZCAjODg4ODg4MmQ7XG4gIC0tZHJvcGRvd24tbWVudS10ZXh0LWNvbG9yOiB2YXIoLS1wYWdlLXRleHQtY29sb3IpO1xuICAtLWRyb3Bkb3duLW1lbnUtdGV4dC1ob3Zlci1jb2xvcjogdmFyKC0tcGFnZS10ZXh0LWNvbG9yKTtcbiAgLS1kcm9wZG93bi1tZW51LXRleHQtaG92ZXItYmc6ICMzNzNiNDQ7XG59XG4ubGluZTpub3QoLmN1cnNvci1saW5lKSAuZGVjby1cXCcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4ubmF2YmFyLWJyYW5kOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICB3aWR0aDogNDRweDtcbiAgaGVpZ2h0OiA0NHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNTJBMzA7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChodHRwczovL2RhaWl6LWFwcHMuYXBwc3BvdC5jb20vdG9kYXkvanAuc3ZnKTtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG59XG4ubGluZTpub3QoLmN1cnNvci1saW5lKSBbY2xhc3M9XCJkZWNvLVxcKCBkZWNvLVxcKVwiXTpub3QoOmhhcyhpbWcuaWNvbikpIHtcblx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRib3JkZXI6IC4wNWVtIHNvbGlkIHZhcigtLXBhZ2UtdGV4dC1jb2xvciwgIzRhNGE0YSk7XG5cdGxpbmUtaGVpZ2h0OiAxO1xuXHRjb2xvcjogdmFyKC0tcGFnZS10ZXh0LWNvbG9yLCAjNGE0YTRhKTtcblx0Zm9udC13ZWlnaHQ6IDYwMDtcbiBcdHBhZGRpbmc6IDVweDtcbiBcdFxuIFx0YSB7XG4gICAgY29sb3I6IHZhcigtLXBhZ2UtdGV4dC1jb2xvciwgIzRhNGE0YSk7XG4gIH1cbn0iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxLQUFLLENBQUMsUUFDTCxxQkFBcUIsSUFBSSxZQUFZLEVBQUUsUUFFeEMsQ0FHQSxDQUFDLGNBQ0EsY0FBZSxRQUNoQixDQUNBLENBQUMsV0FBVyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsVUFDNUIsa0JBQW1CLFNBQ25CLFlBQWEsT0FDYixhQUFjLEtBQ2YsQ0FDQSxDQUxDLFdBS1csSUFBSSxDQUxDLE9BS08sSUFBSSxDQUxDLFNBS1MsUUFDckMsUUFBUyxRQUFRLFVBQ2pCLFNBQVUsU0FDVixRQUFTLGFBQ1QsUUFBUyxHQUNULFlBQWEsT0FDYixNQUFPLElBQ1AsY0FBZSxLQUNmLFdBQVks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 */
code:takker-private.css
body *:before{--code-number-color: var(--code-color, #342d9c)}.section-title{counter-reset:codeline}.code-block span.indent code.code-body{counter-increment:codeline;margin-left:-1.5em;padding-left:2.3em}.code-block span.indent code.code-body:before{content:counter(codeline);position:absolute;display:inline-block;z-index:10;margin-left:-2.4em;width:2em;padding-right:.2em;text-align:right;vertical-align:bottom;border-right:solid 1px #fff;color:var(--code-number-color)}.code-block span.indent code.code-body:before{opacity:.5}.cursor-line .code-block span.indent code.code-body:before{opacity:1;font-weight:bolder;background-color:var(--accent-color)}.navbar-form .dropdown.open .dropdown-menu{min-width:100%;max-height:calc(100vh - 130px)!important;overflow-y:auto}.page-list-item.pin+.page-list-item:not(.pin){grid-column-start:1}.line span:not(.modal-image):not(.pointing-device-map)>a.link:not(.icon):not([href^="https://scrapbox.io"]):after{font-family:"Font Awesome 5 Free","Font Awesome 5 Brands";font-weight:900;font-size:.8rem;content:" ";display:inline-block}.line .deco-\.{font-size:.8em;position:relative;top:-.5em}.line:not(.cursor-line) .deco-\. a:is(.page-link:not(.icon),.link) span:not(.empty-char-index)+span+span~span{display:inline-block;width:0;text-indent:-9999px}.line:not(.cursor-line) .deco-\. .page-link:not(.icon) span.empty-char-index~span.char-index{display:inherit;width:inherit;text-indent:inherit}.line:not(.cursor-line) .deco-\. a.page-link:not(.icon) span.empty-char-index+span:before{content:"#"}.line .deco-\. :is(.page-link:not(.icon),.link):before{display:inline-block;min-width:1.15em;padding-left:1px;font-family:"Font Awesome 5 Free","Font Awesome 5 Brands";text-align:center;vertical-align:middle;font-weight:900;content:""}.line .deco-\..deco-\/{font-style:initial}.line .deco-\..deco-\/ :is(.page-link:not(.icon),.link):before{font-weight:400;content:""}div.line span:not(.modal-image):not(.pointing-device-map)>a.link:not(.icon):is(href$=".pdf",[href^="https://twitter.com"],[href^="https://github.com"],[href^="https://raw.githubusercontent.com"],[href^="https://gist.github.com"],[href^="https://ja.wikipedia.org"],[href^="https://en.wikipedia.org"]):after{display:none}.line span:not(.deco-\.)>span>a.link:is(href$=".pdf",[href^="https://github.com"],[href^="https://raw.githubusercontent.com"],[href^="https://gist.github.com"],[href^="https://ja.wikipedia.org"],[href^="https://en.wikipedia.org"]):before{display:inline-block;width:1em;height:1em;vertical-align:-1px;text-align:center;background-size:contain;background-repeat:no-repeat;font-family:"Font Awesome 5 Free","Font Awesome 5 Brands"}.line a.link:not(.icon)href$=".pdf":before{content:"";font-weight:400;margin-right:1px}:is(.line,.line .deco) a.link:is([href^="https://github.com"],[href^="https://raw.githubusercontent.com"],[href^="https://gist.github.com"]):before{content:"";font-weight:400;margin-right:1px}:is(.line,.line .deco) a.link:is([href^="https://ja.wikipedia.org"],[href^="https://en.wikipedia.org"]):before{content:"";font-weight:400;margin-right:3px}.line .deco-\. a.link:is([href^="https://ja.wikipedia.org"],[href^="https://en.wikipedia.org"]) span.char-index{display:inline-block;width:0;text-indent:-9999px}.line .deco-\. a.link:is([href^="https://ja.wikipedia.org"],[href^="https://en.wikipedia.org"]) span.char-index:nth-of-type(30)~span.char-index{display:inherit;width:inherit;text-indent:inherit}.deco-\"{border-radius:.2em;padding:0 .4em;background-color:#8080801a;font-size:95%;font-style:italic}.deco-\":before{color:#a0a0a0;font-size:85%;font-family:"Font Awesome 5 Free";content:"";font-weight:900;vertical-align:super}.line .indent-mark .dot{opacity:0}.line .indent-mark .c-0+.dot{opacity:1}.line .indent-mark .c-1+.dot{opacity:.8}.line .indent-mark .c-2+.dot{opacity:.6}.line .indent-mark .c-3+.dot{opacity:.4}.line .indent-mark .c-4+.dot{opacity:.2}.line strong:not(class){background:linear-gradient(transparent 60%,#abff4f99 60% 100%)}.time-range .lines{user-select:unset;-webkit-user-select:unset}.line:not(.cursor-line) .deco-\|{display:inline-flex}.line .deco-\| img.image{object-fit:contain;margin:0}.line class^=level .deco-\|{flex-wrap:wrap}.line .level-1 .deco-\|>span{width:100%}.line .level-2 .deco-\|>span{width:50%}.line .level-3 .deco-\|>span{width:calc(100%/3)}.line .level-4 .deco-\|>span{width:25%}.line .level-5 .deco-\|>span{width:20%}.line class^=level .deco-\| img.image{object-fit:cover;width:100%;height:100%}.line .deco-\|>span,.line class^=level .deco-\|>span{overflow:hidden}.line .deco-\| img.image,.line class^=level .deco-\| img.image{margin:.2em}.selections .popup-menu .button-container .button:empty{display:none}.strong-button>strong,.italic-button>i,.strike-button>strike{display:inline-block;width:0;text-indent:-9999px}.selections .popup-menu .button-container .button:is(.link-button,.new-page-button,.copy-plain-button){font-size:0}.selections .popup-menu .button-container .button{font-family:Open Sans,Helvetica,Arial,Hiragino Sans,sans-serif,"Font Awesome 5 Free","Font Awesome 5 Brands";font-size:11px;line-height:20px;font-weight:600;display:inline-block;text-align:center}.link-button:after{font-size:11px;content:""}.strong-button:after{content:""}.italic-button:after{content:""}.strike-button:after{content:""}.copy-plain-button:after{font-size:11px;content:""}.new-page-button:after{font-size:11px;content:""}.line a.iconhref$="/hr"{pointer-events:none}.page-column{grid-template-columns:var(--page-column-columns, 46px minmax(200px, 960px) min-content);grid-template-areas:var(--page-column-areas, "spacer page menu")}@media (991px < width){.page-column:has(.page-sidebar){grid-template-columns:var(--page-column-columns-sidebar, minmax(200px, 3fr) minmax(170px, 1fr) min-content);grid-template-areas:var(--page-column-areas-sidebar, "page sidebar menu")}}@media (min-width: 768px) and (max-width: 991px){.page-column{grid-template-columns:var(--page-column-columns-768, minmax(200px, 960px) min-content);grid-template-areas:var(--page-column-areas-768, "page menu")}}@media (max-width: 767px){.page-column{display:grid;grid-template-columns:var(--page-column-columns-767, 1fr);grid-template-areas:var(--page-column-areas-767, "page")}}.page-column:not(:has(.definition-term)){--page-column-columns-sidebar: minmax(200px, 960px) min-content;--page-column-areas-sidebar: "page menu"}.deco-\#{font-family:Cica,Menlo,Monaco,Consolas,Courier New,monospace}.grid li.page-list-item a .pin{background-color:transparent;background-image:none}.grid li.page-list-item a .pin:after{content:"";font-family:"Font Awesome 5 Free";font-weight:900;font-size:20px;color:#1f915e;bottom:0}@media screen and (min-width: 400px){html:is(data-os*=android,data-os*=ios) .popup-menu .button-container .button,.popup-menu .button-container .button:is(data-os*=android,data-os*=ios){min-width:3em}}.page-column{--page-column-columns: 100px minmax(200px, 960px) min-content 1fr;--page-column-areas: "spacer page menu spacer2";--page-column-columns-sidebar: 100px minmax(200px, 3fr) minmax(170px, 1fr) min-content;--page-column-areas-sidebar: "spacer page sidebar menu";--page-column-columns-768: var(--page-column-columns);--page-column-areas-768: var(--page-column-areas);--page-column-columns-767: minmax(60px, calc(100% / 767 * 100)) 1fr;--page-column-areas-767: "spacer page"}@container (width > 1236px){.page-column{--page-column-columns: minmax(200px, 960px) min-content;--page-column-areas: "page menu"}}.page-column:not(:has(.definition-term)){--page-column-columns-sidebar: var(--page-column-columns);--page-column-areas-sidebar: var(--page-column-areas)}.page-sidebar:not(:has(.definition-term)){display:none}.deco-\>{position:absolute;width:100%;text-align:right}.search-form .form-group input:focus{color:var(--page-text-color);background-color:var(--search-form-bg, rgba(255,255,255,.15))}.line span.code-block .code-block-start title=css a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=html a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=javascript a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=typescript a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=cpp a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=c a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=cs a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=python a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=toml a:before,.line span.code-block .code-block-start title=json a:before,.line span.code-block .code-block-start title=yaml a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=xml a:before{content:"謹";display:inline-block}.line span.code-block .code-block-start title=gitignore a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=markdown a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=txt a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=csv a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=fish a:before,.line span.code-block .code-block-start title=bash a:before,.line span.code-block .code-block-start title=zsh a:before{content:"";display:inline-block}.line span.code-block .code-block-start title=dos a:before{content:"";display:inline-block}.line code,.line span.code-block{font-family:Cica,Menlo,Monaco,Consolas,Courier New,monospace;font-size:105%}.table-block .cell{border:solid 1px var(--telomere-border, #808b8c)}.line.number-list .dot{background-color:transparent!important;display:list-item}.line.number-list .dot:before{display:block;position:absolute;font-family:"Font Awesome 5 Free";top:-11px;content:"";font-weight:900;font-size:11px;color:#c9c9c9;opacity:0}.line.number-list .c-0+.dot:before{opacity:1}.line.number-list .c-1+.dot:before{opacity:.8}.line.number-list .c-2+.dot:before{opacity:.6}.line.number-list .c-3+.dot:before{opacity:.4}.line.number-list .c-4+.dot:before{opacity:.2}img[src^="https://i.kakeru.app"]{background-color:#fff}[data-os=android]{.page-column{div.page-menu{position:fixed;display:flex;flex-direction:row-reverse;right:0;.dropdown-menu-top,.dropdown-menu-right{top:46px}}}}.dropdown-menu,.drawer .drawer-menu{background-color:var(--dropdown-menu-bg, #fff);border:var(--dropdown-menu-border, unset)}.dropdown-menu>li>a,.drawer .drawer-menu ul li a,.page-menu ul>li>div{color:var(--dropdown-menu-text-color, #333)}.dropdown-menu>li>a:active,.drawer-menu ul li a:active,data-hover-visible :is(.dropdown-menu,.drawer-menu)>li>:is(a:hover,a:focus){color:var(--dropdown-menu-text-hover-color, #262626);background-color:var(--dropdown-menu-text-hover-bg, #f5f5f5)}:is(.dropdown-menu,.drawer-menu) .divider{color:var(--dropdown-menu-divider-color, #e5e5e5)}body{--dropdown-menu-bg: #373b44;--dropdown-menu-border: 1px solid #8888882d;--dropdown-menu-text-color: var(--page-text-color);--dropdown-menu-text-hover-color: var(--page-text-color);--dropdown-menu-text-hover-bg: #373b44}html,body,#editor,.grid li{font-family:ヒラギノ角ゴ Pro W3,Hiragino Kaku Gothic Pro,メイリオ,Meiryo,MS Pゴシック,-apple-system,BlinkMacSystemFont,sans-serif} /*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUUzJTgyJUIzJUUzJTgzJUJDJUUzJTgzJTg5JUUzJTgzJTk2JUUzJTgzJUFEJUUzJTgzJTgzJUUzJTgyJUFGJUU4JUE4JTk4JUU2JUIzJTk1JUUzJTgxJUFCJUU4JUExJThDJUU3JTk1JUFBJUU1JThGJUI3JUUzJTgyJTkyJUU4JUExJUE4JUU3JUE0JUJBJUUzJTgxJTk5JUUzJTgyJThCVXNlckNTU18oTWlqaW5rbykvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFMyU4MSVBRSVFMyU4MSVCMyVFMyU4MSVBRSVFMyU4MSVCMyVFMyU4MyU4OSVFMyU4MyVBRCVFMyU4MyU4MyVFMyU4MyU5NyVFMyU4MyU4MCVFMyU4MiVBNiVFMyU4MyVCMy9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS9jdXN0b21pemUvJUUzJTgzJTk0JUUzJTgzJUIzJUU3JTk1JTk5JUUzJTgyJTgxJUUzJTgxJTk1JUUzJTgyJThDJUUzJTgxJTlGJUUzJTgzJTlBJUUzJTgzJUJDJUUzJTgyJUI4JUUzJTgyJTkyJUU3JThCJUFDJUU3JUFCJThCJUUzJTgxJTk3JUUzJTgxJTlGJUU2JUFFJUI1JUUzJTgxJUFCJUU4JUExJUE4JUU3JUE0JUJBJUUzJTgxJTk5JUUzJTgyJThCL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTUlQTQlOTYlRTklODMlQTglRTMlODMlQUElRTMlODMlQjMlRTMlODIlQUYlRTMlODIlOTIlRTUlOEMlQkElRTUlODglQTUlRTMlODElOTklRTMlODIlOEJVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTMlODMlQUElRTMlODMlQjMlRTMlODIlQUYlRTMlODIlOTIlRTUlODclQkElRTUlODUlQjglRTMlODIlQTIlRTMlODIlQTQlRTMlODIlQjMlRTMlODMlQjMlRTMlODElQUIlRTMlODElOTklRTMlODIlOEJVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTclODklQjklRTUlQUUlOUElRTMlODElQUUlRTMlODMlQUElRTMlODMlQjMlRTMlODIlQUYlRTMlODElQUIlRTMlODIlQTIlRTMlODIlQTQlRTMlODIlQjMlRTMlODMlQjMlRTMlODIlOTIlRTMlODElQTQlRTMlODElOTElRTMlODIlOEJVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTMlODIlQTQlRTMlODMlQjMlRTMlODMlQTklRTMlODIlQTQlRTMlODMlQjMlRTUlQkMlOTUlRTclOTQlQTgvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFMyU4MiVBNCVFMyU4MyVCMyVFMyU4MyU4NyVFMyU4MyVCMyVFMyU4MyU4OCVFMyU4MSVBQiVFNSVCRiU5QyVFMyU4MSU5OCVFMyU4MSVBNiVFNyVBRSU4NyVFNiU5RCVBMSVFNiU5QiVCOCVFMyU4MSU4RCVFMyU4MSVBRWJ1bGxldCVFMyU4MSVBRSVFOCU4OSVCMiVFMyU4MiU5MiVFOCU5NiU4NCVFMyU4MSU4RiVFMyU4MSU5OSVFMyU4MiU4Qi9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUUzJTgzJTlFJUUzJTgzJUJDJUUzJTgyJUFCJUUzJTgzJUJDJUU4JUE4JTk4JUU2JUIzJTk1L3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL2N1c3RvbWl6ZS9TY3JhcGJveCVFMyU4MSVBRVN0cmVhbSVFMyU4MyU5QSVFMyU4MyVCQyVFMyU4MiVCOCVFMyU4MSVBNyVFMyU4MSVBRSVFNiU5NiU4NyVFNSVBRCU5NyVFOSU4MSVCOCVFNiU4QSU5RSVFMyU4MiU5MiVFNSU4RiVBRiVFOCU4MyVCRCVFMyU4MSVBQiVFMyU4MSU5OSVFMyU4MiU4QlVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFNyU5NCVCQiVFNSU4MyU4RiVFMyU4MiU5MiVFNCVCOCVBNiVFMyU4MSVCOSVFMyU4MiU4QlVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3BvcHVwbWVudSVFMyU4MSVBRWJ1dHRvbiVFMyU4MiU5MiVFOSU5RCU5RSVFOCVBMSVBOCVFNyVBNCVCQSVFMyU4MSVBQiVFMyU4MSU5OSVFMyU4MiU4Qi9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvUG9wdXBNZW51JUUzJTgyJTkyJUU1JUJFJUI5JUU1JUJBJTk1JUU3JTlBJTg0JUUzJTgxJUFCJUUzJTgyJUEyJUUzJTgyJUE0JUUzJTgyJUIzJUUzJTgzJUIzJUUzJTgxJUFCJUUzJTgxJTk5JUUzJTgyJThCL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTUlOEMlQkElRTUlODglODclRTMlODIlOEElRTclQjclOUElRTMlODElQUUlRTglQUElQTQlRTMlODIlQUYlRTMlODMlQUElRTMlODMlODMlRTMlODIlQUYlRTMlODIlOTIlRTklOTglQjIlRTMlODElOTBVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8ucGFnZS1jb2x1bW4lRTMlODElQUVncmlkX2xheW91dCVFMyU4MiU5MiVFOCVBQSVCRiVFNiU5NSVCNCVFMyU4MSVBNyVFMyU4MSU4RCVFMyU4MiU4QiVFMyU4MiU4OCVFMyU4MSU4NiVFMyU4MSVBQiVFMyU4MSU5OSVFMyU4MiU4QlVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFNyU5NCVCQiVFOSU5RCVBMiVFNSVCOSU4NSVFMyU4MSU4QyVFNSVCQSU4MyVFMyU4MSU4NCVFMyU4MSVBOCVFMyU4MSU4RCVFNyU4NCVBMSVFNSU4QSVCOSVFNSU4QyU5NiVFMyU4MSU5NSVFMyU4MiU4QyVFMyU4MSU5RmluZm9ib3glRTMlODIlOTIlRTYlQjYlODglRTMlODElOTlVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9jb21tb24vbW9ub3NwYWNlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9jb21tb24vcGluLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9tb2JpbGVfUG9wdXBNZW51JUUzJTgxJUFFJUUzJTgzJTlDJUUzJTgyJUJGJUUzJTgzJUIzJUUzJTgyJUI1JUUzJTgyJUE0JUUzJTgyJUJBJUUzJTgyJTkyJUU1JUIwJThGJUUzJTgxJTk1JUUzJTgxJThGJUUzJTgxJTk5JUUzJTgyJThCVXNlckNTUy9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvJUU1JUJEJTkzJUU2JTk3JUE1JUUzJTgxJUFFJUU0JUJBJTg4JUU1JUFFJTlBJUUzJTgyJTkyJUUzJTgyJUJGJUUzJTgyJUE0JUUzJTgzJUEwJUUzJTgzJUE5JUUzJTgyJUE0JUUzJTgzJUIzJUUzJTgxJUFCJUU1JUI4JUI4JUU2JTk5JTgyJUU4JUExJUE4JUU3JUE0JUJBJUUzJTgxJTk5JUUzJTgyJThCVXNlclNjcmlwdCVFMyU4MSVBRSVFOCVBQSVCRiVFNiU5NSVCNCVFNyU5NCVBOFVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyLyVFNSVCRCU5MyVFNiU5NyVBNSVFMyU4MSVBRSVFNCVCQSU4OCVFNSVBRSU5QSVFMyU4MiU5MiVFMyU4MiVCRiVFMyU4MiVBNCVFMyU4MyVBMCVFMyU4MyVBOSVFMyU4MiVBNCVFMyU4MyVCMyVFMyU4MSVBQiVFNSVCOCVCOCVFNiU5OSU4MiVFOCVBMSVBOCVFNyVBNCVCQSVFMyU4MSU5OSVFMyU4MiU4QlVzZXJTY3JpcHQlRTMlODElQUUlRTglQUElQkYlRTYlOTUlQjQlRTclOTQlQThVc2VyQ1NTL2Rpc2FibGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL2NvbW1vbi90ZXh0LWFsaWduLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci9jb21tb24vc2VhcmNoLWZvcm0uY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL2NvbW1vbi9jb2RlQmxvY2stZm9udC5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvdGFibGUlRTglQTglOTglRTYlQjMlOTUlRTMlODElQUIlRTYlQTglQUElRTclQjclOUElRTMlODIlOTIlRTUlQkMlOTUlRTMlODElOEZVc2VyQ1NTL3N0eWxlLmNzcyIsICJodHRwczovL3NjcmFwYm94LmlvL2FwaS9jb2RlL3Rha2tlci8lRTclOTUlQUElRTUlOEYlQjclRTQlQkIlOTglRTMlODElOEQlRTclQUUlODclRTYlOUQlQTElRTYlOUIlQjglRTMlODElOEQlRTMlODElQUJGb250QXdlc29tZSVFMyU4MiU5MiVFNCVCRCVCRiVFMyU4MSU4NlVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL2tha2VydSVFMyU4MSVBRSVFOCU4MyU4QyVFNiU5OSVBRiVFMyU4MiU5MiVFNyU5OSVCRCVFMyU4MSVBQiVFMyU4MSU5OSVFMyU4MiU4QlVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL21vYmlsZSVFMyU4MSVBN1BhZ2VNZW51JUUzJTgyJTkyJUU1JUI4JUI4JUU2JTk5JTgyJUU4JUExJUE4JUU3JUE0JUJBJUUzJTgxJTk5JUUzJTgyJThCVXNlckNTUy9zdHlsZS5jc3MiLCAiaHR0cHM6Ly9zY3JhcGJveC5pby9hcGkvY29kZS90YWtrZXIvZHJvcGRvd25fbWVudV8oU2NyYXBib3gpXyVFMyU4MSVBRSVFOCU4OSVCMiVFMyU4MiU5MiVFNSVBNCU4OSVFMyU4MSU4OCVFMyU4MiU4QlVzZXJDU1Mvc3R5bGUuY3NzIiwgImh0dHBzOi8vc2NyYXBib3guaW8vYXBpL2NvZGUvdGFra2VyL3Rha2tlci1wcml2YXRlJUUzJTgxJUFFYnVuZGxlJUU1JTg5JThEQ1NTL3Byb2plY3QuY3NzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJib2R5ICo6OmJlZm9yZSB7XG5cdC0tY29kZS1udW1iZXItY29sb3I6IHZhcigtLWNvZGUtY29sb3IsICMzNDJkOWMpO1xuXHQvKiAtLWFjY2VudC1jb2xvcjogOyAqL1xufVxuLyog44Kz44O844OJ6KiY5rOV44Gu6KGM55Wq5Y+344KS6KGo56S6IC0tIOOCpuOCo+ODs+ODieOCpuW5hTc2OHB45Lul5LiK44Gn6YGp55SoICovXG4vKiDihpHnhKHlirnljJbjgZfjgZ8gKi9cbi5zZWN0aW9uLXRpdGxlIHtcblx0Y291bnRlci1yZXNldDogY29kZWxpbmU7XG59XG4uY29kZS1ibG9jayBzcGFuLmluZGVudCBjb2RlLmNvZGUtYm9keSB7XG5cdGNvdW50ZXItaW5jcmVtZW50OiBjb2RlbGluZTtcblx0bWFyZ2luLWxlZnQ6IC0xLjVlbTtcblx0cGFkZGluZy1sZWZ0OiAyLjNlbTtcbn1cbi5jb2RlLWJsb2NrIHNwYW4uaW5kZW50IGNvZGUuY29kZS1ib2R5OjpiZWZvcmUgeyBcblx0Y29udGVudDogY291bnRlcihjb2RlbGluZSk7IFxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0ei1pbmRleDogMTA7XG5cdG1hcmdpbi1sZWZ0OiAtMi40ZW07IFxuXHR3aWR0aDogMmVtO1xuXHRwYWRkaW5nLXJpZ2h0OiAwLjJlbTtcblx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdHZlcnRpY2FsLWFsaWduOiBib3R0b207XG5cdGJvcmRlci1yaWdodDogc29saWQgMXB4ICNmZmY7XG5cdFxuXHQvKiDihpPooYznlarlj7fjga7oibLjga7mjIflrprjga/jgZPjgZMgKi9cblx0Y29sb3I6IHZhcigtLWNvZGUtbnVtYmVyLWNvbG9yKTtcbn1cblxuLyog44Kr44O844K944Or6KGM44Gu6KGM55Wq5Y+344KS5r+D44GP6KGo56S644GZ44KLICovXG4uY29kZS1ibG9jayBzcGFuLmluZGVudCBjb2RlLmNvZGUtYm9keTo6YmVmb3JlIHtcblx0b3BhY2l0eTogLjU7XG59XG4uY3Vyc29yLWxpbmUgLmNvZGUtYmxvY2sgc3Bhbi5pbmRlbnQgY29kZS5jb2RlLWJvZHk6OmJlZm9yZSB7XG5cdG9wYWNpdHk6IDE7XG5cdGZvbnQtd2VpZ2h0OiBib2xkZXI7XG5cdFxuXHQvKiDihpPjgqvjg7zjgr3jg6vooYzjga7og4zmma/oibLjga7oibLjga/jgZPjgZMgKi9cblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYWNjZW50LWNvbG9yKTtcbn1cbiIsICIubmF2YmFyLWZvcm0gLmRyb3Bkb3duLm9wZW4gLmRyb3Bkb3duLW1lbnUge1xuICBtaW4td2lkdGg6IDEwMCU7XG4gIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAxMzBweCkgIWltcG9ydGFudDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn0iLCAiLnBhZ2UtbGlzdC1pdGVtLnBpbiArIC5wYWdlLWxpc3QtaXRlbTpub3QoLnBpbikge1xuICBncmlkLWNvbHVtbi1zdGFydDogMTtcbn0iLCAiLyog5aSW6YOo44Oq44Oz44Kv44GraWNvbuOCkuOBpOOBkeOCiyAqLyAgXG4ubGluZSBzcGFuOm5vdCgubW9kYWwtaW1hZ2UpOm5vdCgucG9pbnRpbmctZGV2aWNlLW1hcCkgPiAgYS5saW5rOm5vdCguaWNvbik6bm90KFtocmVmXj1cImh0dHBzOi8vc2NyYXBib3guaW9cIl0pOjphZnRlciB7XG4gICBmb250LWZhbWlseTogJ0ZvbnQgQXdlc29tZSA1IEZyZWUnLCAnRm9udCBBd2Vzb21lIDUgQnJhbmRzJztcbiAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICBmb250LXNpemU6IDAuOHJlbTtcbiAgIGNvbnRlbnQ6ICcgXFxmMzVkJztcbiAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbiIsICIubGluZSAuZGVjby1cXC4ge1xuICBmb250LXNpemU6IC44ZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAtMC41ZW07XG59XG4ubGluZTpub3QoLmN1cnNvci1saW5lKSAuZGVjby1cXC4gYTppcygucGFnZS1saW5rOm5vdCguaWNvbiksIC5saW5rKSBzcGFuOm5vdCguZW1wdHktY2hhci1pbmRleCkgKyBzcGFuICsgc3BhbiB+IHNwYW4ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAwO1xuICB0ZXh0LWluZGVudDogLTk5OTlweDtcbn1cbi5saW5lOm5vdCguY3Vyc29yLWxpbmUpIC5kZWNvLVxcLiAucGFnZS1saW5rOm5vdCguaWNvbikgc3Bhbi5lbXB0eS1jaGFyLWluZGV4IH4gc3Bhbi5jaGFyLWluZGV4IHtcbiAgZGlzcGxheTogaW5oZXJpdDtcbiAgd2lkdGg6IGluaGVyaXQ7XG4gIHRleHQtaW5kZW50OiBpbmhlcml0O1xufVxuXG4ubGluZTpub3QoLmN1cnNvci1saW5lKSAuZGVjby1cXC4gYS5wYWdlLWxpbms6bm90KC5pY29uKSBzcGFuLmVtcHR5LWNoYXItaW5kZXggKyBzcGFuOjpiZWZvcmUge1xuICBjb250ZW50OiBcIiNcIjtcbn1cblxuLmxpbmUgLmRlY28tXFwuIDppcygucGFnZS1saW5rOm5vdCguaWNvbiksIC5saW5rKTo6YmVmb3JlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtaW4td2lkdGg6IDEuMTVlbTtcbiAgcGFkZGluZy1sZWZ0OiAxcHg7XG4gIC8qIHBhZGRpbmc6IDAgMXB4OyAqL1xuICBmb250LWZhbWlseTogXCJGb250IEF3ZXNvbWUgNSBGcmVlXCIsXCJGb250IEF3ZXNvbWUgNSBCcmFuZHNcIjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBmb250LXdlaWdodDogOTAwO1xuICBjb250ZW50OiBcIlxcZjAyZFwiO1xufVxuXG4vKiDmlpzkvZPjgpLlj5bjgormtojjgZkgKi9cbi5saW5lIC5kZWNvLVxcLi5kZWNvLVxcLyB7XG4gIGZvbnQtc3R5bGU6IGluaXRpYWw7XG59XG4ubGluZSAuZGVjby1cXC4uZGVjby1cXC8gOmlzKC5wYWdlLWxpbms6bm90KC5pY29uKSwgLmxpbmspOjpiZWZvcmUge1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb250ZW50OiBcIlxcZjE1Y1wiO1xufSIsICJkaXYubGluZSBzcGFuOm5vdCgubW9kYWwtaW1hZ2UpOm5vdCgucG9pbnRpbmctZGV2aWNlLW1hcCkgPiBhLmxpbms6bm90KC5pY29uKTppcyhcbiAgW2hyZWYkPVwiLnBkZlwiXSxcbiAgW2hyZWZePVwiaHR0cHM6Ly90d2l0dGVyLmNvbVwiXSxcbiAgW2hyZWZePVwiaHR0cHM6Ly9naXRodWIuY29tXCJdLFxuICBbaHJlZl49XCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb21cIl0sXG4gIFtocmVmXj1cImh0dHBzOi8vZ2lzdC5naXRodWIuY29tXCJdLFxuICBbaHJlZl49XCJodHRwczovL2phLndpa2lwZWRpYS5vcmdcIl0sXG4gIFtocmVmXj1cImh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZ1wiXVxuKTo6YWZ0ZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmxpbmUgc3Bhbjpub3QoLmRlY28tXFwuKSA+IHNwYW4gPiBhLmxpbms6aXMoXG4gIFtocmVmJD1cIi5wZGZcIl0sXG4gIFtocmVmXj1cImh0dHBzOi8vZ2l0aHViLmNvbVwiXSxcbiAgW2hyZWZePVwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tXCJdLFxuICBbaHJlZl49XCJodHRwczovL2dpc3QuZ2l0aHViLmNvbVwiXSxcbiAgW2hyZWZePVwiaHR0cHM6Ly9qYS53aWtpcGVkaWEub3JnXCJdLFxuICBbaHJlZl49XCJodHRwczovL2VuLndpa2lwZWRpYS5vcmdcIl1cbik6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDFlbTsgLyoxNnB4OyovXG4gIGhlaWdodDogMWVtOyAvKjE2cHg7Ki9cbiAgdmVydGljYWwtYWxpZ246IC0xcHg7LyotM3B4OyovXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBmb250LWZhbWlseTpcIkZvbnQgQXdlc29tZSA1IEZyZWVcIixcIkZvbnQgQXdlc29tZSA1IEJyYW5kc1wiO1xuICAvKiBtYXJnaW4tcmlnaHQ6IDJweDsgKi9cbn1cbi5saW5lIGEubGluazpub3QoLmljb24pW2hyZWYkPVwiLnBkZlwiXTo6YmVmb3JlIHtcbiAgY29udGVudDogJ1xcZjFjMSc7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7IC8qIHVzZSBSZWd1bGFyIFN0eWxlICovXG4gIG1hcmdpbi1yaWdodDogMXB4O1xufVxuOmlzKC5saW5lLCAubGluZSAuZGVjbykgYS5saW5rOmlzKFxuICBbaHJlZl49XCJodHRwczovL2dpdGh1Yi5jb21cIl0sXG4gIFtocmVmXj1cImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbVwiXSxcbiAgW2hyZWZePVwiaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb21cIl1cbik6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdcXGYwOWInO1xuICBmb250LXdlaWdodDogNDAwO1xuICBtYXJnaW4tcmlnaHQ6IDFweDtcbn1cbjppcygubGluZSwgLmxpbmUgLmRlY28pIGEubGluazppcyhcbiAgW2hyZWZePVwiaHR0cHM6Ly9qYS53aWtpcGVkaWEub3JnXCJdLFxuICBbaHJlZl49XCJodHRwczovL2VuLndpa2lwZWRpYS5vcmdcIl1cbik6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdcXGYyNjYnO1xuICBmb250LXdlaWdodDogNDAwO1xuICBtYXJnaW4tcmlnaHQ6IDNweDtcbn1cbi5saW5lIC5kZWNvLVxcLiBhLmxpbms6aXMoXG4gIFtocmVmXj1cImh0dHBzOi8vamEud2lraXBlZGlhLm9yZ1wiXSxcbiAgW2hyZWZePVwiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnXCJdXG4pIHNwYW4uY2hhci1pbmRleCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDA7XG4gIHRleHQtaW5kZW50OiAtOTk5OXB4O1xufVxuLmxpbmUgLmRlY28tXFwuIGEubGluazppcyhcbiAgW2hyZWZePVwiaHR0cHM6Ly9qYS53aWtpcGVkaWEub3JnXCJdLFxuICBbaHJlZl49XCJodHRwczovL2VuLndpa2lwZWRpYS5vcmdcIl1cbikgc3Bhbi5jaGFyLWluZGV4Om50aC1vZi10eXBlKDMwKSB+IHNwYW4uY2hhci1pbmRleCB7XG4gIGRpc3BsYXk6IGluaGVyaXQ7XG4gIHdpZHRoOiBpbmhlcml0O1xuICB0ZXh0LWluZGVudDogaW5oZXJpdDtcbn1cbiAgICAiLCAiLmRlY28tXFxcIiB7XG4gIGJvcmRlci1yYWRpdXM6IC4yZW07XG4gIHBhZGRpbmc6IDAgLjRlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMjgsMTI4LDEyOCwwLjEpOyBcbiAgZm9udC1zaXplOiA5NSU7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cbi5kZWNvLVxcXCI6OmJlZm9yZSB7IFxuICBjb2xvcjogI2EwYTBhMDtcbiAgZm9udC1zaXplOiA4NSU7XG4gIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgRnJlZSc7XG4gIGNvbnRlbnQ6ICdcXGYxMGQnO1xuICBmb250LXdlaWdodDogOTAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogc3VwZXI7IFxufSIsICIubGluZSAuaW5kZW50LW1hcmsgLmRvdCB7XG4gIG9wYWNpdHk6IDAuMDtcbn1cbi5saW5lIC5pbmRlbnQtbWFyayAuYy0wICsgLmRvdCB7XG4gIG9wYWNpdHk6IDEuMDtcbn1cbi5saW5lIC5pbmRlbnQtbWFyayAuYy0xICsgLmRvdCB7XG4gIG9wYWNpdHk6IDAuODtcbn1cbi5saW5lIC5pbmRlbnQtbWFyayAuYy0yICsgLmRvdCB7XG4gIG9wYWNpdHk6IDAuNjtcbn1cbi5saW5lIC5pbmRlbnQtbWFyayAuYy0zICsgLmRvdCB7XG4gIG9wYWNpdHk6IDAuNDtcbn1cbi5saW5lIC5pbmRlbnQtbWFyayAuYy00ICsgLmRvdCB7XG4gIG9wYWNpdHk6IDAuMjtcbn0iLCAiLyog5LqM6YeN5ous5byn44Gr44KI44KL5by36Kq/44KS44Oe44O844Kr44O844Gj44G944GP44GZ44KLICovXG4ubGluZSBzdHJvbmc6bm90KFtjbGFzc10pIHsgXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCA2MCUsIHJnYmEoMTcxLCAyNTUsIDc5LCAuNikgNjAlLCByZ2JhKDE3MSwgMjU1LCA3OSwgLjYpIDEwMCUpO1xufSIsICIudGltZS1yYW5nZSAubGluZXMge1xuICB1c2VyLXNlbGVjdDogdW5zZXQ7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IHVuc2V0O1xufSIsICIvKiDjg57jg4jjg6rjgq/jgrnoqJjms5UgKi9cbi5saW5lOm5vdCguY3Vyc29yLWxpbmUpIC5kZWNvLVxcfCB7IGRpc3BsYXk6IGlubGluZS1mbGV4IH1cbi5saW5lIC5kZWNvLVxcfCBpbWcuaW1hZ2UgeyBvYmplY3QtZml0OiBjb250YWluOyBtYXJnaW46IDAgfVxuXG4vKiDlpKrlrZfoqJjms5XjgajntYTjgb/lkIjjgo/jgZvjgabliJfmlbDjgpLlpInjgYjjgosgKi9cbi5saW5lIFtjbGFzc149XCJsZXZlbFwiXSAuZGVjby1cXHwgeyBmbGV4LXdyYXA6IHdyYXAgfVxuLmxpbmUgLmxldmVsLTEgLmRlY28tXFx8ID4gc3BhbiB7IHdpZHRoOiBjYWxjKDEwMCUvMSkgfVxuLmxpbmUgLmxldmVsLTIgLmRlY28tXFx8ID4gc3BhbiB7IHdpZHRoOiBjYWxjKDEwMCUvMikgfVxuLmxpbmUgLmxldmVsLTMgLmRlY28tXFx8ID4gc3BhbiB7IHdpZHRoOiBjYWxjKDEwMCUvMykgfVxuLmxpbmUgLmxldmVsLTQgLmRlY28tXFx8ID4gc3BhbiB7IHdpZHRoOiBjYWxjKDEwMCUvNCkgfVxuLmxpbmUgLmxldmVsLTUgLmRlY28tXFx8ID4gc3BhbiB7IHdpZHRoOiBjYWxjKDEwMCUvNSkgfVxuXG4ubGluZSBbY2xhc3NePVwibGV2ZWxcIl0gLmRlY28tXFx8IGltZy5pbWFnZSB7IG9iamVjdC1maXQ6IGNvdmVyOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlIH1cblxuLyog5Lim44G544Gf55S75YOP44Gu6ZaT44Gr44K544Kt44Oe44GM5qyy44GX44GE5aC05ZCI44Gv44GT44GuMuihjOOCkui/veWKoOODu+OBtOOBo+OBoeOCiuaVt+OBjeipsOOCgeOBn+OBhOWgtOWQiOOBr+OBk+OBrjLooYzjga/kuI3opoEgKi9cbi5saW5lIC5kZWNvLVxcfCA+IHNwYW4sIC5saW5lIFtjbGFzc149XCJsZXZlbFwiXSAuZGVjby1cXHwgPiBzcGFuIHsgb3ZlcmZsb3c6IGhpZGRlbiB9XG4ubGluZSAuZGVjby1cXHwgaW1nLmltYWdlLCAubGluZSBbY2xhc3NePVwibGV2ZWxcIl0gLmRlY28tXFx8IGltZy5pbWFnZSB7IG1hcmdpbjogLjJlbSB9IiwgIi5zZWxlY3Rpb25zIC5wb3B1cC1tZW51IC5idXR0b24tY29udGFpbmVyIC5idXR0b246ZW1wdHkge1xuICBkaXNwbGF5OiBub25lO1xufSIsICIvKiDmqJnmupbjga50ZXh044KS44GZ44G544Gm5raI44GZICovXG4uc3Ryb25nLWJ1dHRvbiA+IHN0cm9uZywgLml0YWxpYy1idXR0b24gPiBpLCAuc3RyaWtlLWJ1dHRvbiA+IHN0cmlrZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDA7XG4gIHRleHQtaW5kZW50OiAtOTk5OXB4O1xufVxuLyog44GT44KM5Lul5LiK6Kmz57Sw5bqm44KS5YmK44KL44Go44CB5LuW44GucnVsZeOBq+S4iuabuOOBjeOBleOCjOOBpuOBl+OBvuOBhiAqL1xuLnNlbGVjdGlvbnMgLnBvcHVwLW1lbnUgLmJ1dHRvbi1jb250YWluZXIgLmJ1dHRvbjppcygubGluay1idXR0b24sIC5uZXctcGFnZS1idXR0b24sIC5jb3B5LXBsYWluLWJ1dHRvbikge1xuICBmb250LXNpemU6IDA7XG59XG4vKiBidXR0b27jgatGb250QXdlc29tZeOCkuS9v+OBhlxuICpcbiAqIGAuc2VsZWN0aW9uc2DjgaflhaXlipvoo5zlrozjga5wb3B1cCBtZW5144Gr44Gv6YGp55So44GX44Gq44GE44KI44GG44Gr44GZ44KLXG4gKi9cbi5zZWxlY3Rpb25zIC5wb3B1cC1tZW51IC5idXR0b24tY29udGFpbmVyIC5idXR0b24ge1xuICBmb250LWZhbWlseTogXCJPcGVuIFNhbnNcIiwgSGVsdmV0aWNhLCBBcmlhbCwgXCJIaXJhZ2lubyBTYW5zXCIsIHNhbnMtc2VyaWYsIFwiRm9udCBBd2Vzb21lIDUgRnJlZVwiLCBcIkZvbnQgQXdlc29tZSA1IEJyYW5kc1wiO1xuICBmb250LXNpemU6IDExcHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi8qIGljb27jgpLoqK3lrprjgZnjgosgKi9cbi5saW5rLWJ1dHRvbjo6YWZ0ZXIge1xuICBmb250LXNpemU6IDExcHg7XG4gIGNvbnRlbnQ6ICdcXGYwYzEnXG59XG4uc3Ryb25nLWJ1dHRvbjo6YWZ0ZXIge1xuICBjb250ZW50OiAnXFxmMDMyJ1xufVxuLml0YWxpYy1idXR0b246OmFmdGVyIHtcbiAgY29udGVudDogJ1xcZjAzMydcbn1cbi5zdHJpa2UtYnV0dG9uOjphZnRlciB7XG4gIGNvbnRlbnQ6ICdcXGYwY2MnXG59XG4uY29weS1wbGFpbi1idXR0b246OmFmdGVyIHtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjb250ZW50OiAnXFxmMGM1JyBcbn1cbi5uZXctcGFnZS1idXR0b246OmFmdGVyIHtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjb250ZW50OiAnXFxmMGM0JyBcbn1cbiIsICIubGluZSBhLmljb25baHJlZiQ9XCIvaHJcIl0geyBcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59IiwgIi5wYWdlLWNvbHVtbiB7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tcGFnZS1jb2x1bW4tY29sdW1ucywgNDZweCBtaW5tYXgoMjAwcHgsIDk2MHB4KSBtaW4tY29udGVudCk7XG4gIGdyaWQtdGVtcGxhdGUtYXJlYXM6IHZhcigtLXBhZ2UtY29sdW1uLWFyZWFzLCBcInNwYWNlciBwYWdlIG1lbnVcIik7XG59XG5cbkBtZWRpYSg5OTFweCA8IHdpZHRoKSB7XG4gIC5wYWdlLWNvbHVtbjpoYXMoLnBhZ2Utc2lkZWJhcikge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tcGFnZS1jb2x1bW4tY29sdW1ucy1zaWRlYmFyLCBtaW5tYXgoMjAwcHgsIDNmcikgbWlubWF4KDE3MHB4LCAxZnIpIG1pbi1jb250ZW50KTtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiB2YXIoLS1wYWdlLWNvbHVtbi1hcmVhcy1zaWRlYmFyLCBcInBhZ2Ugc2lkZWJhciBtZW51XCIpO1xuICB9XG59XG5cbkBtZWRpYShtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogOTkxcHgpIHtcbiAgLnBhZ2UtY29sdW1uIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLXBhZ2UtY29sdW1uLWNvbHVtbnMtNzY4LCBtaW5tYXgoMjAwcHgsIDk2MHB4KSBtaW4tY29udGVudCk7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogdmFyKC0tcGFnZS1jb2x1bW4tYXJlYXMtNzY4LCBcInBhZ2UgbWVudVwiKTtcbiAgfVxufVxuXG5AbWVkaWEobWF4LXdpZHRoOiA3NjdweCkge1xuICAucGFnZS1jb2x1bW4ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1wYWdlLWNvbHVtbi1jb2x1bW5zLTc2NywgMWZyKTtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiB2YXIoLS1wYWdlLWNvbHVtbi1hcmVhcy03NjcsIFwicGFnZVwiKTtcbiAgfVxufSIsICJAaW1wb3J0IFwiLi4vLnBhZ2UtY29sdW1u44GuZ3JpZF9sYXlvdXTjgpLoqr/mlbTjgafjgY3jgovjgojjgYbjgavjgZnjgotVc2VyQ1NTL3N0eWxlLmNzc1wiO1xuXG4ucGFnZS1jb2x1bW46bm90KDpoYXMoLmRlZmluaXRpb24tdGVybSkpIHtcbiAgLS1wYWdlLWNvbHVtbi1jb2x1bW5zLXNpZGViYXI6IG1pbm1heCgyMDBweCwgOTYwcHgpIG1pbi1jb250ZW50O1xuICAtLXBhZ2UtY29sdW1uLWFyZWFzLXNpZGViYXI6IFwicGFnZSBtZW51XCI7XG59XG4ucGFnZS1zaWRlYmFyOm5vdCg6aGFzKC5kZWZpbml0aW9uLXRlcm0pKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4iLCAiLmRlY28tXFwjIHtcbiAgZm9udC1mYW1pbHk6IENpY2EsTWVubG8sTW9uYWNvLENvbnNvbGFzLFwiQ291cmllciBOZXdcIixtb25vc3BhY2U7XG59IiwgIi5ncmlkIGxpLnBhZ2UtbGlzdC1pdGVtIGEgLnBpbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xufVxuLmdyaWQgbGkucGFnZS1saXN0LWl0ZW0gYSAucGluOjphZnRlciB7XG4gIGNvbnRlbnQ6ICdcXGYwOGQnO1xuICBmb250LWZhbWlseTogJ0ZvbnQgQXdlc29tZSA1IEZyZWUnO1xuICBmb250LXdlaWdodDogOTAwO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGNvbG9yOiAjMWY5MTVlOyBib3R0b206IDA7XG59IiwgIkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwMHB4KSB7XG4gIGh0bWw6aXMoW2RhdGEtb3MqPWFuZHJvaWRdLCBbZGF0YS1vcyo9aW9zXSkgLnBvcHVwLW1lbnUgLmJ1dHRvbi1jb250YWluZXIgLmJ1dHRvbixcbiAgICAucG9wdXAtbWVudSAuYnV0dG9uLWNvbnRhaW5lciAuYnV0dG9uOmlzKFtkYXRhLW9zKj1hbmRyb2lkXSwgW2RhdGEtb3MqPWlvc10pIHtcbiAgICBtaW4td2lkdGg6IDNlbTtcbiAgfVxufVxuIiwgIi5wYWdlLWNvbHVtbiB7XG4gIC0tcGFnZS1jb2x1bW4tY29sdW1uczogMTAwcHggbWlubWF4KDIwMHB4LCA5NjBweCkgbWluLWNvbnRlbnQgMWZyO1xuICAtLXBhZ2UtY29sdW1uLWFyZWFzOiBcInNwYWNlciBwYWdlIG1lbnUgc3BhY2VyMlwiO1xuICAtLXBhZ2UtY29sdW1uLWNvbHVtbnMtc2lkZWJhcjogMTAwcHggbWlubWF4KDIwMHB4LCAzZnIpIG1pbm1heCgxNzBweCwgMWZyKSBtaW4tY29udGVudDtcbiAgLS1wYWdlLWNvbHVtbi1hcmVhcy1zaWRlYmFyOiBcInNwYWNlciBwYWdlIHNpZGViYXIgbWVudVwiO1xuICAtLXBhZ2UtY29sdW1uLWNvbHVtbnMtNzY4OiB2YXIoLS1wYWdlLWNvbHVtbi1jb2x1bW5zKTtcbiAgLS1wYWdlLWNvbHVtbi1hcmVhcy03Njg6IHZhcigtLXBhZ2UtY29sdW1uLWFyZWFzKTtcbiAgLS1wYWdlLWNvbHVtbi1jb2x1bW5zLTc2NzogbWlubWF4KDYwcHgsIGNhbGMoMTAwJSAvIDc2NyAqIDEwMCkpIDFmcjtcbiAgLS1wYWdlLWNvbHVtbi1hcmVhcy03Njc6IFwic3BhY2VyIHBhZ2VcIjtcbn1cbkBjb250YWluZXIgKHdpZHRoID4gMTIzNnB4KSB7IC8qIC5jb250YWluZXLjga7kuK3ouqvjga7plbfjgZXjgYxgd2lkdGhg44Gr44Gq44KLICovXG4gIC5wYWdlLWNvbHVtbiB7XG4gICAgLS1wYWdlLWNvbHVtbi1jb2x1bW5zOiBtaW5tYXgoMjAwcHgsIDk2MHB4KSBtaW4tY29udGVudDtcbiAgICAtLXBhZ2UtY29sdW1uLWFyZWFzOiBcInBhZ2UgbWVudVwiO1xuICB9XG59IiwgIi5wYWdlLWNvbHVtbjpub3QoOmhhcyguZGVmaW5pdGlvbi10ZXJtKSkge1xuICAtLXBhZ2UtY29sdW1uLWNvbHVtbnMtc2lkZWJhcjogdmFyKC0tcGFnZS1jb2x1bW4tY29sdW1ucyk7XG4gIC0tcGFnZS1jb2x1bW4tYXJlYXMtc2lkZWJhcjogdmFyKC0tcGFnZS1jb2x1bW4tYXJlYXMpO1xufVxuLnBhZ2Utc2lkZWJhcjpub3QoOmhhcyguZGVmaW5pdGlvbi10ZXJtKSkge1xuICBkaXNwbGF5OiBub25lO1xufVxuIiwgIi8qIOS4reWkruWvhOOBmyAqL1xuLyouZGVjby1cXHwgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAxMDAlOyB0ZXh0LWFsaWduOiBjZW50ZXIgfSAqL1xuLyog5Y+z5a+E44GbICovXG4uZGVjby1cXD4geyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAxMDAlOyB0ZXh0LWFsaWduOiByaWdodCB9IFxuLyog5bem5a+E44GbICovXG4vKi5kZWNvLVxcPCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDEwMCU7IHRleHQtYWxpZ246IGxlZnQgfSovIiwgIi5zZWFyY2gtZm9ybSAuZm9ybS1ncm91cCBpbnB1dDpmb2N1cyB7XG4gIGNvbG9yOiB2YXIoLS1wYWdlLXRleHQtY29sb3IpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWFyY2gtZm9ybS1iZywgcmdiYSgyNTUsMjU1LDI1NSwwLjE1KSk7XG59IiwgIi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJjc3NcIl0gYTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnXFxlNzQ5JztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwiaHRtbFwiXSBhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXGYxM2InO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJqYXZhc2NyaXB0XCJdIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1xcZTc0Zic7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cInR5cGVzY3JpcHRcIl0gYTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnXFxlNjI4JztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwiY3BwXCJdIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1xcZTYxZCc7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cImNcIl0gYTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnXFxlNjFlJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwiY3NcIl0gYTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnXFxlN2JjJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwicHl0aG9uXCJdIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1xcZTYwNic7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cInRvbWxcIl0gYTo6YmVmb3JlLFxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cImpzb25cIl0gYTo6YmVmb3JlLFxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cInlhbWxcIl0gYTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnXFxlNjBiJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwieG1sXCJdIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1xcZmFiZic7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cImdpdGlnbm9yZVwiXSBhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXGYwMTMnO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJtYXJrZG93blwiXSBhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXGU3M2UnO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJ0eHRcIl0gYTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnXFxlNjEyJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubGluZSBzcGFuLmNvZGUtYmxvY2sgLmNvZGUtYmxvY2stc3RhcnQgW3RpdGxlPVwiY3N2XCJdIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1xcZjBjZSc7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cImZpc2hcIl0gYTo6YmVmb3JlLFxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cImJhc2hcIl0gYTo6YmVmb3JlLFxuLmxpbmUgc3Bhbi5jb2RlLWJsb2NrIC5jb2RlLWJsb2NrLXN0YXJ0IFt0aXRsZT1cInpzaFwiXSBhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXGY0ODknO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5saW5lIHNwYW4uY29kZS1ibG9jayAuY29kZS1ibG9jay1zdGFydCBbdGl0bGU9XCJkb3NcIl0gYTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnXFxlNjI5JztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5saW5lIGNvZGUsIC5saW5lIHNwYW4uY29kZS1ibG9jayB7XG5cdGZvbnQtZmFtaWx5OiBDaWNhLE1lbmxvLE1vbmFjbyxDb25zb2xhcyxcIkNvdXJpZXIgTmV3XCIsbW9ub3NwYWNlO1xuXHRmb250LXNpemU6IDEwNSU7XG59XG4iLCAiLnRhYmxlLWJsb2NrIC5jZWxsIHtcbiAgYm9yZGVyOiBzb2xpZCAxcHggdmFyKC0tdGVsb21lcmUtYm9yZGVyLCAjODA4YjhjKTtcbn0iLCAiLmxpbmUubnVtYmVyLWxpc3QgLmRvdCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTtcbn1cbi5saW5lLm51bWJlci1saXN0IC5kb3Q6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgRnJlZSc7XG4gIHRvcDogLTExcHg7XG4gIGNvbnRlbnQ6ICdcXGYyOTInOyAvKiAjICovXG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgY29sb3I6ICNjOWM5Yzk7XG4gIG9wYWNpdHk6IDAuMDtcbn1cbi5saW5lLm51bWJlci1saXN0IC5jLTAgKyAuZG90OjpiZWZvcmUge1xuICBvcGFjaXR5OiAxLjA7XG59XG4ubGluZS5udW1iZXItbGlzdCAuYy0xICsgLmRvdDo6YmVmb3JlIHtcbiAgb3BhY2l0eTogMC44O1xufVxuLmxpbmUubnVtYmVyLWxpc3QgLmMtMiArIC5kb3Q6OmJlZm9yZSB7XG4gIG9wYWNpdHk6IDAuNjtcbn1cbi5saW5lLm51bWJlci1saXN0IC5jLTMgKyAuZG90OjpiZWZvcmUge1xuICBvcGFjaXR5OiAwLjQ7XG59XG4ubGluZS5udW1iZXItbGlzdCAuYy00ICsgLmRvdDo6YmVmb3JlIHtcbiAgb3BhY2l0eTogMC4yO1xufVxuIiwgImltZ1tzcmNePVwiaHR0cHM6Ly9pLmtha2VydS5hcHBcIl0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn0iLCAiW2RhdGEtb3M9XCJhbmRyb2lkXCJdIHtcbiAgLnBhZ2UtY29sdW1uIHtcbiAgICBkaXYucGFnZS1tZW51IHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gICAgICByaWdodDogMDtcbiAgICAgIFxuICAgICAgLmRyb3Bkb3duLW1lbnUtdG9wLCAuZHJvcGRvd24tbWVudS1yaWdodCB7XG4gICAgICAgIHRvcDogNDZweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCAiLmRyb3Bkb3duLW1lbnUsXG4uZHJhd2VyIC5kcmF3ZXItbWVudXtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZHJvcGRvd24tbWVudS1iZywgI2ZmZik7XG4gIGJvcmRlcjogdmFyKC0tZHJvcGRvd24tbWVudS1ib3JkZXIsIHVuc2V0KTtcbn1cbi5kcm9wZG93bi1tZW51ID4gbGkgPiBhLFxuLmRyYXdlciAuZHJhd2VyLW1lbnUgdWwgbGkgYSxcbi5wYWdlLW1lbnUgdWwgPiBsaSA+IGRpdiB7XG4gIGNvbG9yOiB2YXIoLS1kcm9wZG93bi1tZW51LXRleHQtY29sb3IsICMzMzMpO1xufVxuXG4uZHJvcGRvd24tbWVudT5saT5hOmFjdGl2ZSxcbi5kcmF3ZXItbWVudSB1bCBsaSBhOmFjdGl2ZSxcbltkYXRhLWhvdmVyLXZpc2libGVdIDppcyguZHJvcGRvd24tbWVudSwuZHJhd2VyLW1lbnUpXG4gID4gbGkgPiA6aXMoYTpob3ZlciwgYTpmb2N1cykge1xuICBjb2xvcjogdmFyKC0tZHJvcGRvd24tbWVudS10ZXh0LWhvdmVyLWNvbG9yLCAjMjYyNjI2KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIHZhcigtLWRyb3Bkb3duLW1lbnUtdGV4dC1ob3Zlci1iZywgI2Y1ZjVmNSk7XG59XG5cbjppcyguZHJvcGRvd24tbWVudSwgLmRyYXdlci1tZW51KSAuZGl2aWRlciB7XG4gIGNvbG9yOiB2YXIoLS1kcm9wZG93bi1tZW51LWRpdmlkZXItY29sb3IsICNlNWU1ZTUpO1xufSIsICJAaW1wb3J0IFwiLi4vY29tbW9uL2NvbW1vbi5jc3NcIjtcbkBpbXBvcnQgJy4uL2NvbW1vbi9tb25vc3BhY2UuY3NzJztcbkBpbXBvcnQgJy4uL2NvbW1vbi9waW4uY3NzJztcbkBpbXBvcnQgXCIuLi9jb21tb24vcGVyc29uYWwuY3NzXCI7XG5AaW1wb3J0ICcuLi9jb21tb24vdGV4dC1hbGlnbi5jc3MnO1xuQGltcG9ydCAnLi4vY29tbW9uL3NlYXJjaC1mb3JtLmNzcyc7XG5AaW1wb3J0ICcuLi9jb21tb24vY29kZUJsb2NrLWZvbnQuY3NzJztcbkBpbXBvcnQgXCIuLi90YWJsZeiomOazleOBq+aoque3muOCkuW8leOBj1VzZXJDU1Mvc3R5bGUuY3NzXCI7XG5AaW1wb3J0IFwiLi4v55Wq5Y+35LuY44GN566H5p2h5pu444GN44GrRm9udEF3ZXNvbWXjgpLkvb/jgYZVc2VyQ1NTL3N0eWxlLmNzc1wiO1xuQGltcG9ydCBcIi4uL2tha2VydeOBruiDjOaZr+OCkueZveOBq+OBmeOCi1VzZXJDU1Mvc3R5bGUuY3NzXCI7XG5AaW1wb3J0IFwiLi4vbW9iaWxl44GnUGFnZU1lbnXjgpLluLjmmYLooajnpLrjgZnjgotVc2VyQ1NTL3N0eWxlLmNzc1wiO1xuQGltcG9ydCBcIi4uL2Ryb3Bkb3duX21lbnVfKFNjcmFwYm94KV/jga7oibLjgpLlpInjgYjjgotVc2VyQ1NTL3N0eWxlLmNzc1wiO1xuIFxuYm9keSB7XG4gIC0tZHJvcGRvd24tbWVudS1iZzogIzM3M2I0NDtcbiAgLS1kcm9wZG93bi1tZW51LWJvcmRlcjogMXB4IHNvbGlkICM4ODg4ODgyZDtcbiAgLS1kcm9wZG93bi1tZW51LXRleHQtY29sb3I6IHZhcigtLXBhZ2UtdGV4dC1jb2xvcik7XG4gIC0tZHJvcGRvd24tbWVudS10ZXh0LWhvdmVyLWNvbG9yOiB2YXIoLS1wYWdlLXRleHQtY29sb3IpO1xuICAtLWRyb3Bkb3duLW1lbnUtdGV4dC1ob3Zlci1iZzogIzM3M2I0NDtcbn1cblxuaHRtbCwgYm9keSwgI2VkaXRvciwgLmdyaWQgbGkge1xuIFx0Zm9udC1mYW1pbHk6IFwi44OS44Op44Ku44OO6KeS44K0IFBybyBXM1wiLFwiSGlyYWdpbm8gS2FrdSBHb3RoaWMgUHJvXCIsXCLjg6HjgqTjg6rjgqpcIixNZWlyeW8sXCLvvK3vvLMg77yw44K044K344OD44KvXCIsXCItYXBwbGUtc3lzdGVtXCIsQmxpbmtNYWNTeXN0ZW1Gb250LHNhbnMtc2VyaWYgO1xufSJdLAogICJtYXBwaW5ncyI6ICJBQUFBLEtBQUssQ0FBQyxRQUNMLHFCQUFxQixJQUFJLFlBQVksRUFBRSxRQUV4QyxDQUdBLENBQUMsY0FDQSxjQUFlLFFBQ2hCLENBQ0EsQ0FBQyxXQUFXLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUM1QixrQkFBbUIsU0FDbkIsWUFBYSxPQUNiLGFBQWMsS0FDZixDQUNBLENBTEMsV0FLVyxJQUFJLENBTEMsT0FLTyxJQUFJLENBTEMsU0FLUyxRQUNyQyxRQUFTLFFBQVEsVUFDakIsU0FBVSxTQUNWLFFBQVMsYUFDVCxRQUFTLEdBQ1QsWUFBYSxPQUNiLE1BQU8sSUFDUCxjQUFlLEtBQ2YsV0FBWSxNQUNaLGVBQWdCLE9BQ2hCLGFBQWMsTUFBTSxJQUFJLEtBR3hCLE1BQU8sSUFBSSxvQkFDWixDQUdBLENBdEJDLFdBc0JXLElBQUksQ0F0QkMsT0FzQk8sSUFBSSxDQXRCQyxTQXNCUyxRQUNyQyxRQUFTLEVBQ1YsQ0FDQSxDQUFD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 */